ZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYWxsYXJjaC5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9hbGxhcmNoLmJiY2xhc3MKaW5kZXggYTdjZTAyNC4uNTFiYTUwOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9hbGxhcmNoLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9hbGxhcmNoLmJiY2xhc3MKQEAgLTQzLDggKzQzLDggQEAKICAgICAgICAgZC5zZXRWYXIoIklOSElCSVRfUEFDS0FHRV9TVFJJUCIsICIxIikKIAogICAgICAgICAjIFRoZXNlIG11bHRpbGliIHZhbHVlcyBzaG91bGRuJ3QgY2hhbmdlIGFsbGFyY2ggcGFja2FnZXMgc28gZXhjbHVkZSB0aGVtCi0gICAgICAgIGQuc2V0VmFyRmxhZygiZW1pdF9wa2dkYXRhIiwgInZhcmRlcHNleGNsdWRlIiwgIk1VTFRJTElCX1ZBUklBTlRTIikKLSAgICAgICAgZC5zZXRWYXJGbGFnKCJ3cml0ZV9zcGVjZmlsZSIsICJ2YXJkZXBzZXhjbHVkZSIsICJNVUxUSUxJQlMiKQorICAgICAgICBkLmFwcGVuZFZhckZsYWcoImVtaXRfcGtnZGF0YSIsICJ2YXJkZXBzZXhjbHVkZSIsICIgTVVMVElMSUJfVkFSSUFOVFMiKQorICAgICAgICBkLmFwcGVuZFZhckZsYWcoIndyaXRlX3NwZWNmaWxlIiwgInZhcmRlcHNleGNsdWRlIiwgIiBNVUxUSUxJQlMiKQogICAgIGVsaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcygncGFja2FnZWdyb3VwJywgZCkgYW5kIG5vdCBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCduYXRpdmVzZGsnLCBkKToKICAgICAgICAgYmIuZXJyb3IoIlBsZWFzZSBlbnN1cmUgcmVjaXBlICVzIHNldHMgUEFDS0FHRV9BUkNIIGJlZm9yZSBpbmhlcml0IHBhY2thZ2Vncm91cCIgJSBkLmdldFZhcigiRklMRSIpKQogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9hcmNoaXZlci5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9hcmNoaXZlci5iYmNsYXNzCmluZGV4IDE4YzViOTYuLmVjODBhZDQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYXJjaGl2ZXIuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2FyY2hpdmVyLmJiY2xhc3MKQEAgLTIyMyw2ICsyMjMsOCBAQAogICAgIGltcG9ydCBzaHV0aWwKIAogICAgICMgRm9yY2libHkgZXhwYW5kIHRoZSBzeXNyb290IHBhdGhzIGFzIHdlJ3JlIGFib3V0IHRvIGNoYW5nZSBXT1JLRElSCisgICAgZC5zZXRWYXIoJ1NUQUdJTkdfRElSX0hPU1QnLCBkLmdldFZhcignU1RBR0lOR19ESVJfSE9TVCcpKQorICAgIGQuc2V0VmFyKCdTVEFHSU5HX0RJUl9UQVJHRVQnLCBkLmdldFZhcignU1RBR0lOR19ESVJfVEFSR0VUJykpCiAgICAgZC5zZXRWYXIoJ1JFQ0lQRV9TWVNST09UJywgZC5nZXRWYXIoJ1JFQ0lQRV9TWVNST09UJykpCiAgICAgZC5zZXRWYXIoJ1JFQ0lQRV9TWVNST09UX05BVElWRScsIGQuZ2V0VmFyKCdSRUNJUEVfU1lTUk9PVF9OQVRJVkUnKSkKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9hdXRvdG9vbHMuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYXV0b3Rvb2xzLmJiY2xhc3MKaW5kZXggYWMwNGEwNy4uZWZhNDA5OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9hdXRvdG9vbHMuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2F1dG90b29scy5iYmNsYXNzCkBAIC0xNDEsNyArMTQxLDcgQEAKIAogcHl0aG9uIGF1dG90b29sc19hY2xvY2FscyAoKSB7CiAgICAgIyBSZWZyZXNoIHZhcmlhYmxlIHdpdGggY2FjaGUgZmlsZXMKLSAgICBkLnNldFZhcigiQ09ORklHX1NJVEUiLCBzaXRlaW5mb19nZXRfZmlsZXMoZCwgYWNsb2NhbGNhY2hlPVRydWUpKQorICAgIGQuc2V0VmFyKCJDT05GSUdfU0lURSIsIHNpdGVpbmZvX2dldF9maWxlcyhkLCBzeXNyb290Y2FjaGU9VHJ1ZSkpCiB9CiAKIENPTkZJR1VSRV9GSUxFUyA9ICIke1N9L2NvbmZpZ3VyZS5pbiAke1N9L2NvbmZpZ3VyZS5hYyAke1N9L2NvbmZpZy5oLmluICR7U30vYWNpbmNsdWRlLm00IE1ha2VmaWxlLmFtIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9iYXNlLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Jhc2UuYmJjbGFzcwppbmRleCBkOTVhZmI3Li5iZDBkNmUzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Jhc2UuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Jhc2UuYmJjbGFzcwpAQCAtNjEsMjIgKzYxLDE1IEBACiAKIAogZGVmIGJhc2VfZGVwX3ByZXBlbmQoZCk6Ci0gICAgIwotICAgICMgSWRlYWxseSB0aGlzIHdpbGwgY2hlY2sgYSBmbGFnIHNvIHdlIHdpbGwgb3BlcmF0ZSBwcm9wZXJseSBpbgotICAgICMgdGhlIGNhc2Ugd2hlcmUgaG9zdCA9PSBidWlsZCA9PSB0YXJnZXQsIGZvciBub3cgd2UgZG9uJ3Qgd29yayBpbgotICAgICMgdGhhdCBjYXNlIHRob3VnaC4KLSAgICAjCisgICAgaWYgZC5nZXRWYXIoJ0lOSElCSVRfREVGQVVMVF9ERVBTJywgRmFsc2UpOgorICAgICAgICByZXR1cm4gIiIKKyAgICByZXR1cm4gIiR7QkFTRV9ERUZBVUxUX0RFUFN9IgogCi0gICAgZGVwcyA9ICIiCi0gICAgIyBJTkhJQklUX0RFRkFVTFRfREVQUyBkb2Vzbid0IGFwcGx5IHRvIHRoZSBwYXRjaCBjb21tYW5kLiAgV2hldGhlciBvciAgbm90Ci0gICAgIyB3ZSBuZWVkIHRoYXQgYnVpbHQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBwYXRjaCBmdW5jdGlvbiAvIGNsYXNzLCBub3QKLSAgICAjIHRoZSBhcHBsaWNhdGlvbi4KLSAgICBpZiBub3QgZC5nZXRWYXIoJ0lOSElCSVRfREVGQVVMVF9ERVBTJywgRmFsc2UpOgotICAgICAgICBpZiAoZC5nZXRWYXIoJ0hPU1RfU1lTJykgIT0gZC5nZXRWYXIoJ0JVSUxEX1NZUycpKToKLSAgICAgICAgICAgIGRlcHMgKz0gIiB2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nY2MgdmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Y29tcGlsZXJsaWJzIHZpcnR1YWwvbGliYyAiCi0gICAgcmV0dXJuIGRlcHMKK0JBU0VfREVGQVVMVF9ERVBTID0gInZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdjYyB2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1jb21waWxlcmxpYnMgdmlydHVhbC9saWJjIgogCi1CQVNFREVQRU5EUyA9ICIke0BiYXNlX2RlcF9wcmVwZW5kKGQpfSIKK0JBU0VERVBFTkRTID0gIiIKK0JBU0VERVBFTkRTX2NsYXNzLXRhcmdldCA9ICIke0BiYXNlX2RlcF9wcmVwZW5kKGQpfSIKK0JBU0VERVBFTkRTX2NsYXNzLW5hdGl2ZXNkayA9ICIke0BiYXNlX2RlcF9wcmVwZW5kKGQpfSIKIAogREVQRU5EU19wcmVwZW5kPSIke0JBU0VERVBFTkRTfSAiCiAKQEAgLTE4NSw3ICsxNzgsNyBAQAogCiBkZWYgZ2V0X2xheWVyc19icmFuY2hfcmV2KGQpOgogICAgIGxheWVycyA9IChkLmdldFZhcigiQkJMQVlFUlMiKSBvciAiIikuc3BsaXQoKQotICAgIGxheWVyc19icmFuY2hfcmV2ID0gWyIlLTE3cyA9IFwiJXM6JXNcIiIgJSAob3MucGF0aC5iYXNlbmFtZShpKSwgXAorICAgIGxheWVyc19icmFuY2hfcmV2ID0gWyIlLTIwcyA9IFwiJXM6JXNcIiIgJSAob3MucGF0aC5iYXNlbmFtZShpKSwgXAogICAgICAgICBiYXNlX2dldF9tZXRhZGF0YV9naXRfYnJhbmNoKGksIE5vbmUpLnN0cmlwKCksIFwKICAgICAgICAgYmFzZV9nZXRfbWV0YWRhdGFfZ2l0X3JldmlzaW9uKGksIE5vbmUpKSBcCiAgICAgICAgICAgICBmb3IgaSBpbiBsYXllcnNdCkBAIC0yMTMsNyArMjA2LDcgQEAKICAgICBmb3IgdmFyIGluIHN0YXR1c3ZhcnM6CiAgICAgICAgIHZhbHVlID0gZC5nZXRWYXIodmFyKQogICAgICAgICBpZiB2YWx1ZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHlpZWxkICclLTE3cyA9ICIlcyInICUgKHZhciwgdmFsdWUpCisgICAgICAgICAgICB5aWVsZCAnJS0yMHMgPSAiJXMiJyAlICh2YXIsIHZhbHVlKQogCiBkZWYgYnVpbGRjZmdfbmVlZGVkdmFycyhkKToKICAgICBuZWVkZWRfdmFycyA9IG9lLmRhdGEudHlwZWRfdmFsdWUoIkJVSUxEQ0ZHX05FRURFRFZBUlMiLCBkKQpAQCAtMjI3LDcgKzIyMCw3IEBACiAgICAgICAgIGJiLmZhdGFsKCdUaGUgZm9sbG93aW5nIHZhcmlhYmxlKHMpIHdlcmUgbm90IHNldDogJXNcblBsZWFzZSBzZXQgdGhlbSBkaXJlY3RseSwgb3IgY2hvb3NlIGEgTUFDSElORSBvciBESVNUUk8gdGhhdCBzZXRzIHRoZW0uJyAlICcsICcuam9pbihwZXN0ZXJ1c2VyKSkKIAogYWRkaGFuZGxlciBiYXNlX2V2ZW50aGFuZGxlcgotYmFzZV9ldmVudGhhbmRsZXJbZXZlbnRtYXNrXSA9ICJiYi5ldmVudC5Db25maWdQYXJzZWQgYmIuZXZlbnQuQnVpbGRTdGFydGVkIGJiLmV2ZW50LlJlY2lwZVByZUZpbmFsaXNlIGJiLnJ1bnF1ZXVlLnNjZW5lUXVldWVDb21wbGV0ZSBiYi5ldmVudC5SZWNpcGVQYXJzZWQiCitiYXNlX2V2ZW50aGFuZGxlcltldmVudG1hc2tdID0gImJiLmV2ZW50LkNvbmZpZ1BhcnNlZCBiYi5ldmVudC5NdWx0aUNvbmZpZ1BhcnNlZCBiYi5ldmVudC5CdWlsZFN0YXJ0ZWQgYmIuZXZlbnQuUmVjaXBlUHJlRmluYWxpc2UgYmIucnVucXVldWUuc2NlbmVRdWV1ZUNvbXBsZXRlIGJiLmV2ZW50LlJlY2lwZVBhcnNlZCIKIHB5dGhvbiBiYXNlX2V2ZW50aGFuZGxlcigpIHsKICAgICBpbXBvcnQgYmIucnVucXVldWUKIApAQCAtMjQyLDYgKzIzNSwxNiBAQAogICAgICAgICBzZXR1cF9ob3N0dG9vbHNfZGlyKGQuZ2V0VmFyKCdIT1NUVE9PTFNfRElSJyksICdIT1NUVE9PTFMnLCBkKQogICAgICAgICBzZXR1cF9ob3N0dG9vbHNfZGlyKGQuZ2V0VmFyKCdIT1NUVE9PTFNfRElSJyksICdIT1NUVE9PTFNfTk9ORkFUQUwnLCBkLCBmYXRhbD1GYWxzZSkKIAorICAgIGlmIGlzaW5zdGFuY2UoZSwgYmIuZXZlbnQuTXVsdGlDb25maWdQYXJzZWQpOgorICAgICAgICAjIFdlIG5lZWQgdG8gZXhwYW5kIFNJR0dFTl9FWENMVURFX1NBRkVfUkVDSVBFX0RFUFMgaW4gZWFjaCBvZiB0aGUgbXVsdGljb25maWcgZGF0YSBzdG9yZXMKKyAgICAgICAgIyBvd24gY29udGV4dHMgc28gdGhlIHZhcmlhYmxlcyBnZXQgZXhwYW5kZWQgY29ycmVjdGx5IGZvciB0aGF0IGFyY2gsIHRoZW4gaW5qZWN0IGJhY2sgaW50bworICAgICAgICAjIHRoZSBtYWluIGRhdGEgc3RvcmUuCisgICAgICAgIGRlcHMgPSBbXQorICAgICAgICBmb3IgY29uZmlnIGluIGUubWNkYXRhOgorICAgICAgICAgICAgZGVwcy5hcHBlbmQoZS5tY2RhdGFbY29uZmlnXS5nZXRWYXIoIlNJR0dFTl9FWENMVURFX1NBRkVfUkVDSVBFX0RFUFMiKSkKKyAgICAgICAgZGVwcyA9ICIgIi5qb2luKGRlcHMpCisgICAgICAgIGUubWNkYXRhWycnXS5zZXRWYXIoIlNJR0dFTl9FWENMVURFX1NBRkVfUkVDSVBFX0RFUFMiLCBkZXBzKQorCiAgICAgaWYgaXNpbnN0YW5jZShlLCBiYi5ldmVudC5CdWlsZFN0YXJ0ZWQpOgogICAgICAgICBsb2NhbGRhdGEgPSBiYi5kYXRhLmNyZWF0ZUNvcHkoZS5kYXRhKQogICAgICAgICBzdGF0dXNsaW5lcyA9IFtdCkBAIC0zOTEsNyArMzk0LDcgQEAKICAgICAjIFRoZXNlIHRha2UgdGhlIGZvcm06CiAgICAgIwogICAgICMgUEFDS0FHRUNPTkZJRyA/Pz0gIjxkZWZhdWx0IG9wdGlvbnM+IgotICAgICMgUEFDS0FHRUNPTkZJR1tmb29dID0gIi0tZW5hYmxlLWZvbywtLWRpc2FibGUtZm9vLGZvb19kZXBlbmRzLGZvb19ydW50aW1lX2RlcGVuZHMiCisgICAgIyBQQUNLQUdFQ09ORklHW2Zvb10gPSAiLS1lbmFibGUtZm9vLC0tZGlzYWJsZS1mb28sZm9vX2RlcGVuZHMsZm9vX3J1bnRpbWVfZGVwZW5kcyxmb29fcnVudGltZV9yZWNvbW1lbmRzIgogICAgIHBrZ2NvbmZpZ2ZsYWdzID0gZC5nZXRWYXJGbGFncygiUEFDS0FHRUNPTkZJRyIpIG9yIHt9CiAgICAgaWYgcGtnY29uZmlnZmxhZ3M6CiAgICAgICAgIHBrZ2NvbmZpZyA9IChkLmdldFZhcignUEFDS0FHRUNPTkZJRycpIG9yICIiKS5zcGxpdCgpCkBAIC00MzMsMTIgKzQzNiwxMyBAQAogCiAgICAgICAgIGV4dHJhZGVwcyA9IFtdCiAgICAgICAgIGV4dHJhcmRlcHMgPSBbXQorICAgICAgICBleHRyYXJyZWNzID0gW10KICAgICAgICAgZXh0cmFjb25mID0gW10KICAgICAgICAgZm9yIGZsYWcsIGZsYWd2YWwgaW4gc29ydGVkKHBrZ2NvbmZpZ2ZsYWdzLml0ZW1zKCkpOgogICAgICAgICAgICAgaXRlbXMgPSBmbGFndmFsLnNwbGl0KCIsIikKICAgICAgICAgICAgIG51bSA9IGxlbihpdGVtcykKLSAgICAgICAgICAgIGlmIG51bSA+IDQ6Ci0gICAgICAgICAgICAgICAgYmIuZXJyb3IoIiVzOiBQQUNLQUdFQ09ORklHWyVzXSBPbmx5IGVuYWJsZSxkaXNhYmxlLGRlcGVuZCxyZGVwZW5kIGNhbiBiZSBzcGVjaWZpZWQhIgorICAgICAgICAgICAgaWYgbnVtID4gNToKKyAgICAgICAgICAgICAgICBiYi5lcnJvcigiJXM6IFBBQ0tBR0VDT05GSUdbJXNdIE9ubHkgZW5hYmxlLGRpc2FibGUsZGVwZW5kLHJkZXBlbmQscnJlY29tbWVuZCBjYW4gYmUgc3BlY2lmaWVkISIKICAgICAgICAgICAgICAgICAgICAgJSAoZC5nZXRWYXIoJ1BOJyksIGZsYWcpKQogCiAgICAgICAgICAgICBpZiBmbGFnIGluIHBrZ2NvbmZpZzoKQEAgLTQ0NiwxMiArNDUwLDE1IEBACiAgICAgICAgICAgICAgICAgICAgIGV4dHJhZGVwcy5hcHBlbmQoaXRlbXNbMl0pCiAgICAgICAgICAgICAgICAgaWYgbnVtID49IDQgYW5kIGl0ZW1zWzNdOgogICAgICAgICAgICAgICAgICAgICBleHRyYXJkZXBzLmFwcGVuZChpdGVtc1szXSkKKyAgICAgICAgICAgICAgICBpZiBudW0gPj0gNSBhbmQgaXRlbXNbNF06CisgICAgICAgICAgICAgICAgICAgIGV4dHJhcnJlY3MuYXBwZW5kKGl0ZW1zWzRdKQogICAgICAgICAgICAgICAgIGlmIG51bSA+PSAxIGFuZCBpdGVtc1swXToKICAgICAgICAgICAgICAgICAgICAgZXh0cmFjb25mLmFwcGVuZChpdGVtc1swXSkKICAgICAgICAgICAgIGVsaWYgbnVtID49IDIgYW5kIGl0ZW1zWzFdOgogICAgICAgICAgICAgICAgICAgICBleHRyYWNvbmYuYXBwZW5kKGl0ZW1zWzFdKQogICAgICAgICBhcHBlbmRWYXIoJ0RFUEVORFMnLCBleHRyYWRlcHMpCiAgICAgICAgIGFwcGVuZFZhcignUkRFUEVORFNfJHtQTn0nLCBleHRyYXJkZXBzKQorICAgICAgICBhcHBlbmRWYXIoJ1JSRUNPTU1FTkRTXyR7UE59JywgZXh0cmFycmVjcykKICAgICAgICAgYXBwZW5kVmFyKCdQQUNLQUdFQ09ORklHX0NPTkZBUkdTJywgZXh0cmFjb25mKQogCiAgICAgcG4gPSBkLmdldFZhcignUE4nKQpAQCAtNjE3LDE2ICs2MjQsMTYgQEAKICAgICAgICAgICAgIGQuYXBwZW5kVmFyRmxhZygnZG9fdW5wYWNrJywgJ2RlcGVuZHMnLCAnIGx6aXAtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QnKQogCiAgICAgICAgICMgKi54eiBzaG91bGQgREVQRU5EIG9uIHh6LW5hdGl2ZSBmb3IgdW5wYWNraW5nCi0gICAgICAgIGVsaWYgcGF0aC5lbmRzd2l0aCgnLnh6Jyk6CisgICAgICAgIGVsaWYgcGF0aC5lbmRzd2l0aCgnLnh6Jykgb3IgcGF0aC5lbmRzd2l0aCgnLnR4eicpOgogICAgICAgICAgICAgZC5hcHBlbmRWYXJGbGFnKCdkb191bnBhY2snLCAnZGVwZW5kcycsICcgeHotbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QnKQogCiAgICAgICAgICMgLnppcCBzaG91bGQgREVQRU5EIG9uIHVuemlwLW5hdGl2ZSBmb3IgdW5wYWNraW5nCi0gICAgICAgIGVsaWYgcGF0aC5lbmRzd2l0aCgnLnppcCcpOgorICAgICAgICBlbGlmIHBhdGguZW5kc3dpdGgoJy56aXAnKSBvciBwYXRoLmVuZHN3aXRoKCcuamFyJyk6CiAgICAgICAgICAgICBkLmFwcGVuZFZhckZsYWcoJ2RvX3VucGFjaycsICdkZXBlbmRzJywgJyB1bnppcC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCcpCiAKICAgICAgICAgIyBmaWxlIGlzIG5lZWRlZCBieSBycG0yY3Bpby5zaAotICAgICAgICBlbGlmIHBhdGguZW5kc3dpdGgoJy5zcmMucnBtJyk6Ci0gICAgICAgICAgICBkLmFwcGVuZFZhckZsYWcoJ2RvX3VucGFjaycsICdkZXBlbmRzJywgJyBmaWxlLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290JykKKyAgICAgICAgZWxpZiBwYXRoLmVuZHN3aXRoKCcucnBtJyk6CisgICAgICAgICAgICBkLmFwcGVuZFZhckZsYWcoJ2RvX3VucGFjaycsICdkZXBlbmRzJywgJyB4ei1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCcpCiAKICAgICBpZiBuZWVkc3JjcmV2OgogICAgICAgICBkLnNldFZhcigiU1JDUFYiLCAiJHtAYmIuZmV0Y2gyLmdldF9zcmNyZXYoZCl9IikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYnVpbGRoaXN0b3J5LmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2J1aWxkaGlzdG9yeS5iYmNsYXNzCmluZGV4IDM4MjNjNjYuLjdhNTUzNGUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvYnVpbGRoaXN0b3J5LmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9idWlsZGhpc3RvcnkuYmJjbGFzcwpAQCAtMTkyLDcgKzE5Miw3IEBACiAgICAgcGUgPSBkLmdldFZhcignUEUnKSBvciAiMCIKICAgICBwdiA9IGQuZ2V0VmFyKCdQVicpCiAgICAgcHIgPSBkLmdldFZhcignUFInKQotICAgIGxheWVyID0gYmIudXRpbHMuZ2V0X2ZpbGVfbGF5ZXIoZC5nZXRWYXIoJ0ZJTEUnLCBUcnVlKSwgZCkKKyAgICBsYXllciA9IGJiLnV0aWxzLmdldF9maWxlX2xheWVyKGQuZ2V0VmFyKCdGSUxFJyksIGQpCiAKICAgICBwa2dkYXRhX2RpciA9IGQuZ2V0VmFyKCdQS0dEQVRBX0RJUicpCiAgICAgcGFja2FnZXMgPSAiIgpAQCAtMzQ4LDYgKzM0OCw3IEBACiAgICAgICAgIGYud3JpdGUodSJQQUNLQUdFUyA9ICVzXG4iICUgIHJjcGluZm8ucGFja2FnZXMpCiAgICAgICAgIGYud3JpdGUodSJMQVlFUiA9ICVzXG4iICUgIHJjcGluZm8ubGF5ZXIpCiAKKyAgICB3cml0ZV9sYXRlc3Rfc3JjcmV2KGQsIHBrZ2hpc3RkaXIpCiAKIGRlZiB3cml0ZV9wa2doaXN0b3J5KHBrZ2luZm8sIGQpOgogICAgIGJiLmRlYnVnKDIsICJXcml0aW5nIHBhY2thZ2UgaGlzdG9yeSBmb3IgcGFja2FnZSAlcyIgJSBwa2dpbmZvLm5hbWUpCkBAIC02MDAsMjYgKzYwMSwxOSBAQAogCiBweXRob24gYnVpbGRoaXN0b3J5X2dldF9leHRyYV9zZGtpbmZvKCkgewogICAgIGltcG9ydCBvcGVyYXRvcgotICAgIGltcG9ydCBtYXRoCisgICAgZnJvbSBvZS5zZGsgaW1wb3J0IGdldF9leHRyYV9zZGtpbmZvCisKKyAgICBzc3RhdGVfZGlyID0gZC5leHBhbmQoJyR7U0RLX09VVFBVVH0vJHtTREtQQVRIfS9zc3RhdGUtY2FjaGUnKQorICAgIGV4dHJhX2luZm8gPSBnZXRfZXh0cmFfc2RraW5mbyhzc3RhdGVfZGlyKQogCiAgICAgaWYgZC5nZXRWYXIoJ0JCX0NVUlJFTlRUQVNLJykgPT0gJ3BvcHVsYXRlX3Nka19leHQnIGFuZCBcCiAgICAgICAgICAgICAic2RrIiBpbiAoZC5nZXRWYXIoJ0JVSUxESElTVE9SWV9GRUFUVVJFUycpIG9yICIiKS5zcGxpdCgpOgotICAgICAgICB0YXNrc2l6ZXMgPSB7fQotICAgICAgICBmaWxlc2l6ZXMgPSB7fQotICAgICAgICBmb3Igcm9vdCwgXywgZmlsZXMgaW4gb3Mud2FsayhkLmV4cGFuZCgnJHtTREtfT1VUUFVUfS8ke1NES1BBVEh9L3NzdGF0ZS1jYWNoZScpKToKLSAgICAgICAgICAgIGZvciBmbiBpbiBmaWxlczoKLSAgICAgICAgICAgICAgICBpZiBmbi5lbmRzd2l0aCgnLnRneicpOgotICAgICAgICAgICAgICAgICAgICBmc2l6ZSA9IGludChtYXRoLmNlaWwoZmxvYXQob3MucGF0aC5nZXRzaXplKG9zLnBhdGguam9pbihyb290LCBmbikpKSAvIDEwMjQpKQotICAgICAgICAgICAgICAgICAgICB0YXNrID0gZm4ucnNwbGl0KCc6JywgMSlbMV0uc3BsaXQoJ18nLCAxKVsxXS5zcGxpdCgnLicpWzBdCi0gICAgICAgICAgICAgICAgICAgIG9yaWd0b3RhbCA9IHRhc2tzaXplcy5nZXQodGFzaywgMCkKLSAgICAgICAgICAgICAgICAgICAgdGFza3NpemVzW3Rhc2tdID0gb3JpZ3RvdGFsICsgZnNpemUKLSAgICAgICAgICAgICAgICAgICAgZmlsZXNpemVzW2ZuXSA9IGZzaXplCiAgICAgICAgIHdpdGggb3BlbihkLmV4cGFuZCgnJHtCVUlMREhJU1RPUllfRElSX1NES30vc3N0YXRlLXBhY2thZ2Utc2l6ZXMudHh0JyksICd3JykgYXMgZjoKLSAgICAgICAgICAgIGZpbGVzaXplc19zb3J0ZWQgPSBzb3J0ZWQoZmlsZXNpemVzLml0ZW1zKCksIGtleT1vcGVyYXRvci5pdGVtZ2V0dGVyKDEsIDApLCByZXZlcnNlPVRydWUpCisgICAgICAgICAgICBmaWxlc2l6ZXNfc29ydGVkID0gc29ydGVkKGV4dHJhX2luZm9bJ2ZpbGVzaXplcyddLml0ZW1zKCksIGtleT1vcGVyYXRvci5pdGVtZ2V0dGVyKDEsIDApLCByZXZlcnNlPVRydWUpCiAgICAgICAgICAgICBmb3IgZm4sIHNpemUgaW4gZmlsZXNpemVzX3NvcnRlZDoKICAgICAgICAgICAgICAgICBmLndyaXRlKCclMTBkIEtpQiAlc1xuJyAlIChzaXplLCBmbikpCiAgICAgICAgIHdpdGggb3BlbihkLmV4cGFuZCgnJHtCVUlMREhJU1RPUllfRElSX1NES30vc3N0YXRlLXRhc2stc2l6ZXMudHh0JyksICd3JykgYXMgZjoKLSAgICAgICAgICAgIHRhc2tzaXplc19zb3J0ZWQgPSBzb3J0ZWQodGFza3NpemVzLml0ZW1zKCksIGtleT1vcGVyYXRvci5pdGVtZ2V0dGVyKDEsIDApLCByZXZlcnNlPVRydWUpCisgICAgICAgICAgICB0YXNrc2l6ZXNfc29ydGVkID0gc29ydGVkKGV4dHJhX2luZm9bJ3Rhc2tzaXplcyddLml0ZW1zKCksIGtleT1vcGVyYXRvci5pdGVtZ2V0dGVyKDEsIDApLCByZXZlcnNlPVRydWUpCiAgICAgICAgICAgICBmb3IgdGFzaywgc2l6ZSBpbiB0YXNrc2l6ZXNfc29ydGVkOgogICAgICAgICAgICAgICAgIGYud3JpdGUoJyUxMGQgS2lCICVzXG4nICUgKHNpemUsIHRhc2spKQogfQpAQCAtNzE1LDIwICs3MDksMjMgQEAKIAogCiBkZWYgYnVpbGRoaXN0b3J5X2dldF9jbWRsaW5lKGQpOgotICAgIGlmIHN5cy5hcmd2WzBdLmVuZHN3aXRoKCdiaW4vYml0YmFrZScpOgotICAgICAgICBiaW5jbWQgPSAnYml0YmFrZScKLSAgICBlbHNlOgotICAgICAgICBiaW5jbWQgPSBzeXMuYXJndlswXQotICAgIHJldHVybiAnJXMgJXMnICUgKGJpbmNtZCwgJyAnLmpvaW4oc3lzLmFyZ3ZbMTpdKSkKKyAgICBhcmd2ID0gZC5nZXRWYXIoJ0JCX0NNRExJTkUnLCBGYWxzZSkKKyAgICBpZiBhcmd2OgorICAgICAgICBpZiBhcmd2WzBdLmVuZHN3aXRoKCdiaW4vYml0YmFrZScpOgorICAgICAgICAgICAgYmluY21kID0gJ2JpdGJha2UnCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBiaW5jbWQgPSBhcmd2WzBdCisgICAgICAgIHJldHVybiAnJXMgJXMnICUgKGJpbmNtZCwgJyAnLmpvaW4oYXJndlsxOl0pKQorICAgIHJldHVybiAnJwogCiAKIGJ1aWxkaGlzdG9yeV9zaW5nbGVfY29tbWl0KCkgewogCWlmIFsgIiQzIiA9ICIiIF0gOyB0aGVuCiAJCWNvbW1pdG9wdHM9IiR7QlVJTERISVNUT1JZX0RJUn0vIC0tYWxsb3ctZW1wdHkiCi0JCWl0ZW09Ik5vIGNoYW5nZXMiCisJCXNob3J0bG9ncHJlZml4PSJObyBjaGFuZ2VzOiAiCiAJZWxzZQotCQljb21taXRvcHRzPSIkMyBtZXRhZGF0YS1yZXZzIgotCQlpdGVtPSIkMyIKKwkJY29tbWl0b3B0cz0iIgorCQlzaG9ydGxvZ3ByZWZpeD0iIgogCWZpCiAJaWYgWyAiJHtCVUlMREhJU1RPUllfQlVJTERfRkFJTFVSRVN9IiA9ICIwIiBdIDsgdGhlbgogCQlyZXN1bHQ9InN1Y2NlZWRlZCIKQEAgLTc0NSw3ICs3NDIsNyBAQAogCWVzYWMKIAljb21taXRtc2dmaWxlPWBta3RlbXBgCiAJY2F0ID4gJGNvbW1pdG1zZ2ZpbGUgPDwgRU5ECi0kaXRlbTogQnVpbGQgJHtCVUlMRE5BTUV9IG9mICR7RElTVFJPfSAke0RJU1RST19WRVJTSU9OfSBmb3IgbWFjaGluZSAke01BQ0hJTkV9IG9uICQyCiske3Nob3J0bG9ncHJlZml4fUJ1aWxkICR7QlVJTEROQU1FfSBvZiAke0RJU1RST30gJHtESVNUUk9fVkVSU0lPTn0gZm9yIG1hY2hpbmUgJHtNQUNISU5FfSBvbiAkMgogCiBjbWQ6ICQxCiAKQEAgLTc4OSw5ICs3ODYsNyBAQAogCQkJZ2l0IGFkZCAtQSAuCiAJCQkjIHBvcmNlbGFpbiBvdXRwdXQgbG9va3MgbGlrZSAiPz8gcGFja2FnZXMvZm9vL2JhciIKIAkJCSMgRW5zdXJlIHdlIGNvbW1pdCBtZXRhZGF0YS1yZXZzIHdpdGggdGhlIGZpcnN0IGNvbW1pdAotCQkJZm9yIGVudHJ5IGluIGBlY2hvICIkcmVwb3N0YXR1cyIgfCBhd2sgJ3twcmludCAkMn0nIHwgYXdrIC1GLyAne3ByaW50ICQxfScgfCBzb3J0IHwgdW5pcWAgOyBkbwotCQkJCWJ1aWxkaGlzdG9yeV9zaW5nbGVfY29tbWl0ICIkQ01ETElORSIgIiRIT1NUTkFNRSIgIiRlbnRyeSIKLQkJCWRvbmUKKwkJCWJ1aWxkaGlzdG9yeV9zaW5nbGVfY29tbWl0ICIkQ01ETElORSIgIiRIT1NUTkFNRSIgZHVtbXkKIAkJCWdpdCBnYyAtLWF1dG8gLS1xdWlldAogCQllbHNlCiAJCQlidWlsZGhpc3Rvcnlfc2luZ2xlX2NvbW1pdCAiJENNRExJTkUiICIkSE9TVE5BTUUiCkBAIC04MjksNiArODI0LDggQEAKICAgICAgICAgICAgICAgICBpbnRlcnJ1cHRlZCA9IGdldGF0dHIoZSwgJ19pbnRlcnJ1cHRlZCcsIDApCiAgICAgICAgICAgICAgICAgbG9jYWxkYXRhLnNldFZhcignQlVJTERISVNUT1JZX0JVSUxEX0lOVEVSUlVQVEVEJywgc3RyKGludGVycnVwdGVkKSkKICAgICAgICAgICAgICAgICBiYi5idWlsZC5leGVjX2Z1bmMoImJ1aWxkaGlzdG9yeV9jb21taXQiLCBsb2NhbGRhdGEpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGJiLm5vdGUoIk5vIGNvbW1pdCBzaW5jZSBCVUlMREhJU1RPUllfQ09NTUlUICE9ICcxJyIpCiB9CiAKIGFkZGhhbmRsZXIgYnVpbGRoaXN0b3J5X2V2ZW50aGFuZGxlcgpAQCAtODc0LDcgKzg3MSwxMCBAQAogZG9fZmV0Y2hbcG9zdGZ1bmNzXSArPSAid3JpdGVfc3JjcmV2IgogZG9fZmV0Y2hbdmFyZGVwc2V4Y2x1ZGVdICs9ICJ3cml0ZV9zcmNyZXYiCiBweXRob24gd3JpdGVfc3JjcmV2KCkgewotICAgIHBrZ2hpc3RkaXIgPSBkLmdldFZhcignQlVJTERISVNUT1JZX0RJUl9QQUNLQUdFJykKKyAgICB3cml0ZV9sYXRlc3Rfc3JjcmV2KGQsIGQuZ2V0VmFyKCdCVUlMREhJU1RPUllfRElSX1BBQ0tBR0UnKSkKK30KKworZGVmIHdyaXRlX2xhdGVzdF9zcmNyZXYoZCwgcGtnaGlzdGRpcik6CiAgICAgc3JjcmV2ZmlsZSA9IG9zLnBhdGguam9pbihwa2doaXN0ZGlyLCAnbGF0ZXN0X3NyY3JldicpCiAKICAgICBzcmNyZXZzLCB0YWdfc3JjcmV2cyA9IF9nZXRfc3JjcmV2X3ZhbHVlcyhkKQpAQCAtOTEyLDQgKzkxMiwzMyBAQAogICAgIGVsc2U6CiAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHNyY3JldmZpbGUpOgogICAgICAgICAgICAgb3MucmVtb3ZlKHNyY3JldmZpbGUpCisKK2RvX3Rlc3RpbWFnZVtwb3N0ZnVuY3NdICs9ICJ3cml0ZV9wdGVzdF9yZXN1bHQiCitkb190ZXN0aW1hZ2VbdmFyZGVwc2V4Y2x1ZGVdICs9ICJ3cml0ZV9wdGVzdF9yZXN1bHQiCisKK3B5dGhvbiB3cml0ZV9wdGVzdF9yZXN1bHQoKSB7CisgICAgd3JpdGVfbGF0ZXN0X3B0ZXN0X3Jlc3VsdChkLCBkLmdldFZhcignQlVJTERISVNUT1JZX0RJUicpKQogfQorCitkZWYgd3JpdGVfbGF0ZXN0X3B0ZXN0X3Jlc3VsdChkLCBoaXN0ZGlyKToKKyAgICBpbXBvcnQgZ2xvYgorICAgIGltcG9ydCBzdWJwcm9jZXNzCisgICAgdGVzdF9sb2dfZGlyID0gZC5nZXRWYXIoJ1RFU1RfTE9HX0RJUicpCisgICAgaW5wdXRfcHRlc3QgPSBvcy5wYXRoLmpvaW4odGVzdF9sb2dfZGlyLCAncHRlc3RfbG9nJykKKyAgICBvdXRwdXRfcHRlc3QgPSBvcy5wYXRoLmpvaW4oaGlzdGRpciwgJ3B0ZXN0JykKKyAgICBpZiBvcy5wYXRoLmV4aXN0cyhpbnB1dF9wdGVzdCk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgTG9jayBpdCBhdm9pZCByYWNlIGlzc3VlCisgICAgICAgICAgICBsb2NrID0gYmIudXRpbHMubG9ja2ZpbGUob3V0cHV0X3B0ZXN0ICsgIi9wdGVzdC5sb2NrIikKKyAgICAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihvdXRwdXRfcHRlc3QpCisgICAgICAgICAgICBvZS5wYXRoLmNvcHl0cmVlKGlucHV0X3B0ZXN0LCBvdXRwdXRfcHRlc3QpCisgICAgICAgICAgICAjIFNvcnQgdGVzdCByZXN1bHQKKyAgICAgICAgICAgIGZvciByZXN1bHQgaW4gZ2xvYi5nbG9iKCclcy9wYXNzLmZhaWwuKicgJSBvdXRwdXRfcHRlc3QpOgorICAgICAgICAgICAgICAgIGJiLmRlYnVnKDEsICdQcm9jZXNzaW5nICVzJyAlIHJlc3VsdCkKKyAgICAgICAgICAgICAgICBjbWQgPSBbJ3NvcnQnLCByZXN1bHQsICctbycsIHJlc3VsdF0KKyAgICAgICAgICAgICAgICBiYi5kZWJ1ZygxLCAnUnVubmluZyAlcycgJSBjbWQpCisgICAgICAgICAgICAgICAgcmV0ID0gc3VicHJvY2Vzcy5jYWxsKGNtZCkKKyAgICAgICAgICAgICAgICBpZiByZXQgIT0gMDoKKyAgICAgICAgICAgICAgICAgICAgYmIuZXJyb3IoJ0ZhaWxlZCB0byBydW4gJXMhJyAlIGNtZCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGJiLnV0aWxzLnVubG9ja2ZpbGUobG9jaykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY2NhY2hlLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2NjYWNoZS5iYmNsYXNzCmluZGV4IGQ1OGM4ZjYuLjk2MDkwMjAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY2NhY2hlLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9jY2FjaGUuYmJjbGFzcwpAQCAtMSw2ICsxLDUgQEAKIENDQUNIRSA9ICIke0BiYi51dGlscy53aGljaChkLmdldFZhcignUEFUSCcpLCAnY2NhY2hlJykgYW5kICdjY2FjaGUgJ30iCiBleHBvcnQgQ0NBQ0hFX0RJUiA/PSAiJHtUTVBESVJ9L2NjYWNoZS8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfS8ke1BOfSIKLUNDQUNIRV9ESVNBQkxFW3VuZXhwb3J0XSA9ICIxIgogCiAjIFdlIG5lZWQgdG8gc3RvcCBjY2FjaGUgY29uc2lkZXJpbmcgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IG9yIHRoZQogIyBkZWJ1Zy1wcmVmaXgtbWFwIHRhcmdldCBkaXJlY3RvcnkgdG8gYmUgc2lnbmlmaWNhbnQgd2hlbiBjYWxjdWxhdGluZwpAQCAtMTAsNiArOSwzIEBACiAKIERFUEVORFNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgY2NhY2hlLW5hdGl2ZSIKIERFUEVORFNbdmFyZGVwdmFsdWVleGNsdWRlXSA9ICIgY2NhY2hlLW5hdGl2ZSIKLQotZG9fY29uZmlndXJlW2RpcnNdID0rICIke0NDQUNIRV9ESVJ9IgotZG9fa2VybmVsX2NvbmZpZ21lW2RpcnNdID0rICIke0NDQUNIRV9ESVJ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9jbWFrZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9jbWFrZS5iYmNsYXNzCmluZGV4IDEyZGY2MTcuLmFjMmMxNTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY21ha2UuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2NtYWtlLmJiY2xhc3MKQEAgLTMxLDYgKzMxLDkgQEAKIAogRVhUUkFfT0VDTUFLRV9hcHBlbmQgPSAiICR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30iCiAKK0VYVFJBX09FQ01BS0VfQlVJTERfcHJlcGVuZF90YXNrLWNvbXBpbGUgPSAiJHtQQVJBTExFTF9NQUtFfSAiCitFWFRSQV9PRUNNQUtFX0JVSUxEX3ByZXBlbmRfdGFzay1pbnN0YWxsID0gIiR7UEFSQUxMRUxfTUFLRUlOU1R9ICIKKwogIyBDTWFrZSBleHBlY3RzIHRhcmdldCBhcmNoaXRlY3R1cmVzIGluIHRoZSBmb3JtYXQgb2YgdW5hbWUoMiksCiAjIHdoaWNoIGRvIG5vdCBhbHdheXMgbWF0Y2ggVEFSR0VUX0FSQ0gsIHNvIGFsbCB0aGUgbmVjZXNzYXJ5CiAjIGNvbnZlcnNpb25zIHNob3VsZCBoYXBwZW4gaGVyZS4KQEAgLTEzNSwxMyArMTM4LDEzIEBACiAKIGRvX2NvbXBpbGVbcHJvZ3Jlc3NdID0gInBlcmNlbnQiCiBjbWFrZV9kb19jb21waWxlKCkgIHsKLQljZCAke0J9Ci0JYmFzZV9kb19jb21waWxlIFZFUkJPU0U9MQorCWJibm90ZSBWRVJCT1NFPTEgY21ha2UgLS1idWlsZCAnJHtCfScgLS0gJHtFWFRSQV9PRUNNQUtFX0JVSUxEfQorCVZFUkJPU0U9MSBjbWFrZSAtLWJ1aWxkICcke0J9JyAtLSAke0VYVFJBX09FQ01BS0VfQlVJTER9CiB9CiAKIGNtYWtlX2RvX2luc3RhbGwoKSB7Ci0JY2QgJHtCfQotCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAorCWJibm90ZSBERVNURElSPScke0R9JyBjbWFrZSAtLWJ1aWxkICcke0J9JyAtLXRhcmdldCBpbnN0YWxsIC0tICR7RVhUUkFfT0VDTUFLRV9CVUlMRH0KKwlERVNURElSPScke0R9JyBjbWFrZSAtLWJ1aWxkICcke0J9JyAtLXRhcmdldCBpbnN0YWxsIC0tICR7RVhUUkFfT0VDTUFLRV9CVUlMRH0KIH0KIAogRVhQT1JUX0ZVTkNUSU9OUyBkb19jb25maWd1cmUgZG9fY29tcGlsZSBkb19pbnN0YWxsIGRvX2dlbmVyYXRlX3Rvb2xjaGFpbl9maWxlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2NtbDEuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY21sMS5iYmNsYXNzCmluZGV4IDM4ZTY2MTMuLjkyNjc0N2YgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY21sMS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY21sMS5iYmNsYXNzCkBAIC02NCw3ICs2NCw4IEBACiAgICAgaWYgaXNkaWZmOgogICAgICAgICBzdGF0ZW1lbnQgPSAnZGlmZiAtLXVuY2hhbmdlZC1saW5lLWZvcm1hdD0gLS1vbGQtbGluZS1mb3JtYXQ9IC0tbmV3LWxpbmUtZm9ybWF0PSIlTCIgJyArIGNvbmZpZ29yaWcgKyAnICcgKyBjb25maWcgKyAnPicgKyBmcmFnbWVudAogICAgICAgICBzdWJwcm9jZXNzLmNhbGwoc3RhdGVtZW50LCBzaGVsbD1UcnVlKQotCisgICAgICAgICMgTm8gbmVlZCB0byBjaGVjayB0aGUgZXhpdCBjb2RlIGFzIHdlIGtub3cgaXQncyBnb2luZyB0byBiZQorICAgICAgICAjIG5vbi16ZXJvLCBidXQgdGhhdCdzIHdoYXQgd2UgZXhwZWN0LgogICAgICAgICBzaHV0aWwuY29weShjb25maWdvcmlnLCBjb25maWcpCiAKICAgICAgICAgYmIucGxhaW4oIkNvbmZpZyBmcmFnbWVudCBoYXMgYmVlbiBkdW1wZWQgaW50bzpcbiAlcyIgJSBmcmFnbWVudCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY3Jvc3MtY2FuYWRpYW4uYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY3Jvc3MtY2FuYWRpYW4uYmJjbGFzcwppbmRleCA0OTM4OGQ0Li4xOTI4NDU1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Nyb3NzLWNhbmFkaWFuLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9jcm9zcy1jYW5hZGlhbi5iYmNsYXNzCkBAIC0xNSw3ICsxNSw3IEBACiAjIFVwZGF0ZSBCQVNFX1BBQ0tBR0VfQVJDSCBhbmQgUEFDS0FHRV9BUkNIUwogIwogUEFDS0FHRV9BUkNIID0gIiR7U0RLX0FSQ0h9LSR7U0RLUEtHU1VGRklYfSIKLUJBU0VDQU5BRElBTkVYVFJBT1MgPz0gImxpbnV4LXVjbGliYyBsaW51eC1tdXNsIgorQkFTRUNBTkFESUFORVhUUkFPUyA/PSAibGludXgtbXVzbCIKIENBTkFESUFORVhUUkFPUyA9ICIke0JBU0VDQU5BRElBTkVYVFJBT1N9IgogQ0FOQURJQU5FWFRSQVZFTkRPUiA9ICIiCiBNT0RJRllUT1MgPz89ICIxIgpAQCAtMzYsMTEgKzM2LDkgQEAKICAgICB0b3MgPSBkLmdldFZhcigiVEFSR0VUX09TIikKICAgICB3aGl0ZWxpc3QgPSBbXQogICAgIGV4dHJhbGliY3MgPSBbIiJdCi0gICAgaWYgInVjbGliYyIgaW4gZC5nZXRWYXIoIkJBU0VDQU5BRElBTkVYVFJBT1MiKToKLSAgICAgICAgZXh0cmFsaWJjcy5hcHBlbmQoInVjbGliYyIpCiAgICAgaWYgIm11c2wiIGluIGQuZ2V0VmFyKCJCQVNFQ0FOQURJQU5FWFRSQU9TIik6CiAgICAgICAgIGV4dHJhbGliY3MuYXBwZW5kKCJtdXNsIikKLSAgICBmb3IgdmFyaWFudCBpbiBbIiIsICJzcGUiLCAieDMyIiwgImVhYmkiLCAibjMyIl06CisgICAgZm9yIHZhcmlhbnQgaW4gWyIiLCAic3BlIiwgIngzMiIsICJlYWJpIiwgIm4zMiIsICJpbHAzMiJdOgogICAgICAgICBmb3IgbGliYyBpbiBleHRyYWxpYmNzOgogICAgICAgICAgICAgZW50cnkgPSAibGludXgiCiAgICAgICAgICAgICBpZiB2YXJpYW50IGFuZCBsaWJjOgpAQCAtODAsNyArNzgsNyBAQAogICAgICAgICBmb3IgZXh0cmFvcyBpbiBkLmdldFZhcigiQkFTRUNBTkFESUFORVhUUkFPUyIpLnNwbGl0KCk6CiAgICAgICAgICAgICBkLmFwcGVuZFZhcigiQ0FOQURJQU5FWFRSQU9TIiwgIiAiICsgZXh0cmFvcyArICJuMzIiKQogICAgIGlmIHRhcmNoID09ICJhcm0iIG9yIHRhcmNoID09ICJhcm1lYiI6Ci0gICAgICAgIGQuYXBwZW5kVmFyKCJDQU5BRElBTkVYVFJBT1MiLCAiIGxpbnV4LWdudWVhYmkgbGludXgtbXVzbGVhYmkgbGludXgtdWNsaWJjZWFiaSIpCisgICAgICAgIGQuYXBwZW5kVmFyKCJDQU5BRElBTkVYVFJBT1MiLCAiIGxpbnV4LWdudWVhYmkgbGludXgtbXVzbGVhYmkiKQogICAgICAgICBkLnNldFZhcigiVEFSR0VUX09TIiwgImxpbnV4LWdudWVhYmkiKQogICAgIGVsc2U6CiAgICAgICAgIGQuc2V0VmFyKCJUQVJHRVRfT1MiLCAibGludXgiKQpAQCAtMTE1LDExICsxMTMsNiBAQAogSE9TVF9MRF9BUkNIID0gIiR7U0RLX0xEX0FSQ0h9IgogSE9TVF9BU19BUkNIID0gIiR7U0RLX0FTX0FSQ0h9IgogCi1UQVJHRVRfQ1BQRkxBR1MgPSAiJHtCVUlMRFNES19DUFBGTEFHU30iCi1UQVJHRVRfQ0ZMQUdTID0gIiR7QlVJTERTREtfQ0ZMQUdTfSIKLVRBUkdFVF9DWFhGTEFHUyA9ICIke0JVSUxEU0RLX0NYWEZMQUdTfSIKLVRBUkdFVF9MREZMQUdTID0gIiR7QlVJTERTREtfTERGTEFHU30iCi0KICNhc3NpZ24gRFBLR19BUkNICiBEUEtHX0FSQ0ggPSAiJHtAZGViaWFuX2FyY2hfbWFwKGQuZ2V0VmFyKCdTREtfQVJDSCcpLCAnJyl9IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Nyb3NzLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Nyb3NzLmJiY2xhc3MKaW5kZXggNGZlYjAxZS4uZDIxNzcxNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9jcm9zcy5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY3Jvc3MuYmJjbGFzcwpAQCAtNTAsNyArNTAsNyBAQAogIyBQYXRoIG1hbmdsaW5nIG5lZWRlZCBieSB0aGUgY3Jvc3MgcGFja2FnaW5nCiAjIE5vdGUgdGhhdCB3ZSB1c2UgOj0gaGVyZSB0byBlbnN1cmUgdGhhdCBsaWJkaXIgYW5kIGluY2x1ZGVkaXIgYXJlCiAjIHRhcmdldCBwYXRocy4KLXRhcmdldF9iYXNlX3ByZWZpeCA6PSAiJHtiYXNlX3ByZWZpeH0iCit0YXJnZXRfYmFzZV9wcmVmaXggOj0gIiR7cm9vdF9wcmVmaXh9IgogdGFyZ2V0X3ByZWZpeCA6PSAiJHtwcmVmaXh9IgogdGFyZ2V0X2V4ZWNfcHJlZml4IDo9ICIke2V4ZWNfcHJlZml4fSIKIHRhcmdldF9iYXNlX2xpYmRpciA9ICIke3RhcmdldF9iYXNlX3ByZWZpeH0vJHtiYXNlbGlifSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY3ZlLWNoZWNrLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2N2ZS1jaGVjay5iYmNsYXNzCmluZGV4IDEzZWM2MmUuLmJjMmYwM2YgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvY3ZlLWNoZWNrLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9jdmUtY2hlY2suYmJjbGFzcwpAQCAtODMsNiArODMsMTEgQEAKIAogICAgIGltcG9ydCBzaHV0aWwKIAorICAgIGlmIGQuZ2V0VmFyKCJDVkVfQ0hFQ0tfQ09QWV9GSUxFUyIpID09ICIxIjoKKyAgICAgICAgZGVwbG95X2ZpbGUgPSBvcy5wYXRoLmpvaW4oZC5nZXRWYXIoIkNWRV9DSEVDS19ESVIiKSwgZC5nZXRWYXIoIlBOIikpCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGRlcGxveV9maWxlKToKKyAgICAgICAgICAgIGJiLnV0aWxzLnJlbW92ZShkZXBsb3lfZmlsZSkKKwogICAgIGlmIG9zLnBhdGguZXhpc3RzKGQuZ2V0VmFyKCJDVkVfQ0hFQ0tfVE1QX0ZJTEUiKSk6CiAgICAgICAgIGJiLm5vdGUoIldyaXRpbmcgcm9vdGZzIENWRSBtYW5pZmVzdCIpCiAgICAgICAgIGRlcGxveV9kaXIgPSBkLmdldFZhcigiREVQTE9ZX0RJUl9JTUFHRSIpCkBAIC0xMDIsNiArMTA3LDcgQEAKIH0KIAogUk9PVEZTX1BPU1RQUk9DRVNTX0NPTU1BTkRfcHJlcGVuZCA9ICIke0AnY3ZlX2NoZWNrX3dyaXRlX3Jvb3Rmc19tYW5pZmVzdDsgJyBpZiBkLmdldFZhcignQ1ZFX0NIRUNLX0NSRUFURV9NQU5JRkVTVCcpID09ICcxJyBlbHNlICcnfSIKK2RvX3Jvb3Rmc1tyZWNyZGVwdGFza10gKz0gIiR7QCdkb19jdmVfY2hlY2snIGlmIGQuZ2V0VmFyKCdDVkVfQ0hFQ0tfQ1JFQVRFX01BTklGRVNUJykgPT0gJzEnIGVsc2UgJyd9IgogCiBkZWYgZ2V0X3BhdGNoZXNfY3ZlcyhkKToKICAgICAiIiIKQEAgLTExMiwxMCArMTE4LDI0IEBACiAKICAgICBwbiA9IGQuZ2V0VmFyKCJQTiIpCiAgICAgY3ZlX21hdGNoID0gcmUuY29tcGlsZSgiQ1ZFOiggQ1ZFXC1cZHs0fVwtXGQrKSsiKQorCisgICAgIyBNYXRjaGVzIGxhc3QgQ1ZFLTEyMzQtMjExNDMyIGluIHRoZSBmaWxlIG5hbWUsIGFsc28gaWYgd3JpdHRlbgorICAgICMgd2l0aCBzbWFsbCBsZXR0ZXJzLiBOb3Qgc3VwcG9ydGluZyBtdWx0aXBsZSBDVkUgaWQncyBpbiBhIHNpbmdsZQorICAgICMgZmlsZSBuYW1lLgorICAgIGN2ZV9maWxlX25hbWVfbWF0Y2ggPSByZS5jb21waWxlKCIuKihbQ2NdW1Z2XVtFZV1cLVxkezR9XC1cZCspIikKKwogICAgIHBhdGNoZWRfY3ZlcyA9IHNldCgpCiAgICAgYmIuZGVidWcoMiwgIkxvb2tpbmcgZm9yIHBhdGNoZXMgdGhhdCBzb2x2ZXMgQ1ZFcyBmb3IgJXMiICUgcG4pCiAgICAgZm9yIHVybCBpbiBzcmNfcGF0Y2hlcyhkKToKICAgICAgICAgcGF0Y2hfZmlsZSA9IGJiLmZldGNoLmRlY29kZXVybCh1cmwpWzJdCisKKyAgICAgICAgIyBDaGVjayBwYXRjaCBmaWxlIG5hbWUgZm9yIENWRSBJRAorICAgICAgICBmbmFtZV9tYXRjaCA9IGN2ZV9maWxlX25hbWVfbWF0Y2guc2VhcmNoKHBhdGNoX2ZpbGUpCisgICAgICAgIGlmIGZuYW1lX21hdGNoOgorICAgICAgICAgICAgY3ZlID0gZm5hbWVfbWF0Y2guZ3JvdXAoMSkudXBwZXIoKQorICAgICAgICAgICAgcGF0Y2hlZF9jdmVzLmFkZChjdmUpCisgICAgICAgICAgICBiYi5kZWJ1ZygyLCAiRm91bmQgQ1ZFICVzIGZyb20gcGF0Y2ggZmlsZSBuYW1lICVzIiAlIChjdmUsIHBhdGNoX2ZpbGUpKQorCiAgICAgICAgIHdpdGggb3BlbihwYXRjaF9maWxlLCAiciIsIGVuY29kaW5nPSJ1dGYtOCIpIGFzIGY6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcGF0Y2hfdGV4dCA9IGYucmVhZCgpCkBAIC0xMzQsNyArMTU0LDcgQEAKICAgICAgICAgICAgIGZvciBjdmUgaW4gY3Zlcy5zcGxpdCgpOgogICAgICAgICAgICAgICAgIGJiLmRlYnVnKDIsICJQYXRjaCAlcyBzb2x2ZXMgJXMiICUgKHBhdGNoX2ZpbGUsIGN2ZSkpCiAgICAgICAgICAgICAgICAgcGF0Y2hlZF9jdmVzLmFkZChjdmUpCi0gICAgICAgIGVsc2U6CisgICAgICAgIGVsaWYgbm90IGZuYW1lX21hdGNoOgogICAgICAgICAgICAgYmIuZGVidWcoMiwgIlBhdGNoICVzIGRvZXNuJ3Qgc29sdmUgQ1ZFcyIgJSBwYXRjaF9maWxlKQogCiAgICAgcmV0dXJuIHBhdGNoZWRfY3ZlcwpAQCAtMTQ5LDcgKzE2OSw3IEBACiAgICAgY3Zlc19wYXRjaGVkID0gW10KICAgICBjdmVzX3VucGF0Y2hlZCA9IFtdCiAgICAgYnBuID0gZC5nZXRWYXIoIkNWRV9QUk9EVUNUIikKLSAgICBwdiA9IGQuZ2V0VmFyKCJQViIpLnNwbGl0KCJnaXQrIilbMF0KKyAgICBwdiA9IGQuZ2V0VmFyKCJQViIpLnNwbGl0KCIrZ2l0IilbMF0KICAgICBjdmVzID0gIiAiLmpvaW4ocGF0Y2hlZF9jdmVzKQogICAgIGN2ZV9kYl9kaXIgPSBkLmdldFZhcigiQ1ZFX0NIRUNLX0RCX0RJUiIpCiAgICAgY3ZlX3doaXRlbGlzdCA9IGFzdC5saXRlcmFsX2V2YWwoZC5nZXRWYXIoIkNWRV9DSEVDS19DVkVfV0hJVEVMSVNUIikpCkBAIC0xNzEsNyArMTkxLDcgQEAKICAgICAgICAgICAgIGYud3JpdGUoIiVzLCVzLCVzLCIgJSAoYnBuLCBwdiwgY3ZlcykpCiAgICAgICAgIGNtZC5hcHBlbmQoZmF1eCkKIAotICAgICAgICBvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkuZGVjb2RlKCJ1dGYtOCIpCisgICAgICAgIG91dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCkuZGVjb2RlKCJ1dGYtOCIpCiAgICAgICAgIGJiLmRlYnVnKDIsICJPdXRwdXQgb2YgY29tbWFuZCAlczpcbiVzIiAlICgiXG4iLmpvaW4oY21kKSwgb3V0cHV0KSkKICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZToKICAgICAgICAgYmIud2FybigiQ291bGRuJ3QgY2hlY2sgZm9yIENWRXM6ICVzIChvdXRwdXQgJXMpIiAlIChlLCBlLm91dHB1dCkpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2RldnNoZWxsLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2RldnNoZWxsLmJiY2xhc3MKaW5kZXggNGRlN2VhNi4uZmRmN2RjMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9kZXZzaGVsbC5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZGV2c2hlbGwuYmJjbGFzcwpAQCAtOCwxNCArOCwxNCBAQAogICAgICAgIGZha2VlbnYgPSBkLmdldFZhcigiRkFLRVJPT1RFTlYiKS5zcGxpdCgpCiAgICAgICAgZm9yIGYgaW4gZmFrZWVudjoKICAgICAgICAgICAgIGsgPSBmLnNwbGl0KCI9IikKLSAgICAgICAgICAgIGQuc2V0VmFyKGtbMF0sIGtbMV0pICAgICAgICAgICAKKyAgICAgICAgICAgIGQuc2V0VmFyKGtbMF0sIGtbMV0pCiAgICAgICAgICAgICBkLmFwcGVuZFZhcigiT0VfVEVSTUlOQUxfRVhQT1JUUyIsICIgIiArIGtbMF0pCiAgICAgICAgZC5kZWxWYXJGbGFnKCJkb19kZXZzaGVsbCIsICJmYWtlcm9vdCIpCiAKICAgICBvZV90ZXJtaW5hbChkLmdldFZhcignREVWU0hFTEwnKSwgJ09wZW5FbWJlZGRlZCBEZXZlbG9wZXIgU2hlbGwnLCBkKQogfQogCi1hZGR0YXNrIGRldnNoZWxsIGFmdGVyIGRvX3BhdGNoCithZGR0YXNrIGRldnNoZWxsIGFmdGVyIGRvX3BhdGNoIGRvX3ByZXBhcmVfcmVjaXBlX3N5c3Jvb3QKIAogIyBUaGUgZGlyZWN0b3J5IHRoYXQgdGhlIHRlcm1pbmFsIHN0YXJ0cyBpbgogREVWU0hFTExfU1RBUlRESVIgPz0gIiR7U30iCkBAIC00OSw3ICs0OSw3IEBACiAgICAgICAgIG9sZFszXSA9IG9sZFszXSAmfiB0ZXJtaW9zLkVDSE8gJn4gdGVybWlvcy5JQ0FOT04KICAgICAgICAgIyAmfiB0ZXJtaW9zLklTSUcKICAgICAgICAgdGVybWlvcy50Y3NldGF0dHIoZmQsIHRlcm1pb3MuVENTQURSQUlOLCBvbGQpCi0gICAgCisKICAgICAjIE5vIGVjaG8gb3IgYnVmZmVyaW5nIG92ZXIgdGhlIHB0eQogICAgIG5vZWNob2ljYW5vbihzKQogCkBAIC0xNDUsNyArMTQ1LDcgQEAKICAgICB0cnk6CiAgICAgICAgIGRldnB5c2hlbGwoZCkKICAgICBleGNlcHQgU3lzdGVtRXhpdDoKLSAgICAgICAgIyBTdG9wIHRoZSBTSUdURVJNIGFib3ZlIGNhdXNpbmcgYW4gZXJyb3IgZXhpdCBjb2RlICAgIAorICAgICAgICAjIFN0b3AgdGhlIFNJR1RFUk0gYWJvdmUgY2F1c2luZyBhbiBlcnJvciBleGl0IGNvZGUKICAgICAgICAgcmV0dXJuCiAgICAgZmluYWxseToKICAgICAgICAgcmV0dXJuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2RldnRvb2wtc291cmNlLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2RldnRvb2wtc291cmNlLmJiY2xhc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGY1YmM4NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZGV2dG9vbC1zb3VyY2UuYmJjbGFzcwpAQCAtMCwwICsxLDE2NSBAQAorIyBEZXZlbG9wbWVudCB0b29sIC0gc291cmNlIGV4dHJhY3Rpb24gaGVscGVyIGNsYXNzCisjCisjIE5PVEU6IHRoaXMgY2xhc3MgaXMgaW50ZW5kZWQgZm9yIHVzZSBieSBkZXZ0b29sIGFuZCBzaG91bGQgbm90IGJlCisjIGluaGVyaXRlZCBtYW51YWxseS4KKyMKKyMgQ29weXJpZ2h0IChDKSAyMDE0LTIwMTcgSW50ZWwgQ29ycG9yYXRpb24KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKyMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisjIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCisjIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCisKKworREVWVE9PTF9URU1QRElSID89ICIiCitERVZUT09MX1BBVENIX1NSQ0RJUiA9ICIke0RFVlRPT0xfVEVNUERJUn0vcGF0Y2h3b3JrZGlyIgorCisKK3B5dGhvbigpIHsKKyAgICB0ZW1wZGlyID0gZC5nZXRWYXIoJ0RFVlRPT0xfVEVNUERJUicpCisKKyAgICBpZiBub3QgdGVtcGRpcjoKKyAgICAgICAgYmIuZmF0YWwoJ2RldnRvb2wtc291cmNlIGNsYXNzIGlzIGZvciBpbnRlcm5hbCB1c2UgYnkgZGV2dG9vbCBvbmx5JykKKworICAgICMgTWFrZSBhIHN1YmRpciBzbyB3ZSBndWFyZCBhZ2FpbnN0IFdPUktESVI9PVMKKyAgICB3b3JrZGlyID0gb3MucGF0aC5qb2luKHRlbXBkaXIsICd3b3JrZGlyJykKKyAgICBkLnNldFZhcignV09SS0RJUicsIHdvcmtkaXIpCisgICAgaWYgbm90IGQuZ2V0VmFyKCdTJykuc3RhcnRzd2l0aCh3b3JrZGlyKToKKyAgICAgICAgIyBVc3VhbGx5IGEgc2hhcmVkIHdvcmtkaXIgcmVjaXBlIChrZXJuZWwsIGdjYykKKyAgICAgICAgIyBUcnkgdG8gc2V0IGEgcmVhc29uYWJsZSBkZWZhdWx0CisgICAgICAgIGlmIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2tlcm5lbCcsIGQpOgorICAgICAgICAgICAgZC5zZXRWYXIoJ1MnLCAnJHtXT1JLRElSfS9zb3VyY2UnKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZC5zZXRWYXIoJ1MnLCAnJHtXT1JLRElSfS8lcycgJSBvcy5wYXRoLmJhc2VuYW1lKGQuZ2V0VmFyKCdTJykpKQorICAgIGlmIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ2tlcm5lbCcsIGQpOgorICAgICAgICAjIFdlIGRvbid0IHdhbnQgdG8gbW92ZSB0aGUgc291cmNlIHRvIFNUQUdJTkdfS0VSTkVMX0RJUiBoZXJlCisgICAgICAgIGQuc2V0VmFyKCdTVEFHSU5HX0tFUk5FTF9ESVInLCAnJHtTfScpCisKKyAgICBkLnNldFZhcignU1RBTVBTX0RJUicsIG9zLnBhdGguam9pbih0ZW1wZGlyLCAnc3RhbXBzJykpCisgICAgZC5zZXRWYXIoJ1QnLCBvcy5wYXRoLmpvaW4odGVtcGRpciwgJ3RlbXAnKSkKKworICAgICMgSG9vayBpbiBwcmUvcG9zdGZ1bmNzCisgICAgaXNfa2VybmVsX3lvY3RvID0gYmIuZGF0YS5pbmhlcml0c19jbGFzcygna2VybmVsLXlvY3RvJywgZCkKKyAgICBpZiBpc19rZXJuZWxfeW9jdG86CisgICAgICAgIHVucGFja3Rhc2sgPSAnZG9fa2VybmVsX2NoZWNrb3V0JworICAgICAgICBkLmFwcGVuZFZhckZsYWcoJ2RvX2NvbmZpZ3VyZScsICdwb3N0ZnVuY3MnLCAnIGRldnRvb2xfcG9zdF9jb25maWd1cmUnKQorICAgIGVsc2U6CisgICAgICAgIHVucGFja3Rhc2sgPSAnZG9fdW5wYWNrJworICAgIGQuYXBwZW5kVmFyRmxhZyh1bnBhY2t0YXNrLCAncG9zdGZ1bmNzJywgJyBkZXZ0b29sX3Bvc3RfdW5wYWNrJykKKyAgICBkLnByZXBlbmRWYXJGbGFnKCdkb19wYXRjaCcsICdwcmVmdW5jcycsICcgZGV2dG9vbF9wcmVfcGF0Y2gnKQorICAgIGQuYXBwZW5kVmFyRmxhZygnZG9fcGF0Y2gnLCAncG9zdGZ1bmNzJywgJyBkZXZ0b29sX3Bvc3RfcGF0Y2gnKQorCisgICAgIyBOT1RFOiBpbiBvcmRlciBmb3IgdGhlIHBhdGNoIHN0dWZmIHRvIGJlIGZ1bGx5IGZ1bmN0aW9uYWwsCisgICAgIyBQQVRDSFRPT0wgYW5kIFBBVENIX0NPTU1JVF9GVU5DVElPTlMgbmVlZCB0byBiZSBzZXQ7IHdlIGNhbid0CisgICAgIyBkbyB0aGF0IGhlcmUgYmVjYXVzZSB3ZSBjYW4ndCBndWFyYW50ZWUgdGhlIG9yZGVyIG9mIHRoZSBhbm9ueW1vdXMKKyAgICAjIGZ1bmN0aW9ucywgc28gaXQgZ2V0cyBkb25lIGluIHRoZSBiYmFwcGVuZCB3ZSBjcmVhdGUuCit9CisKKworcHl0aG9uIGRldnRvb2xfcG9zdF91bnBhY2soKSB7CisgICAgaW1wb3J0IG9lLnJlY2lwZXV0aWxzCisgICAgaW1wb3J0IHNodXRpbAorICAgIHN5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmpvaW4oZC5nZXRWYXIoJ0NPUkVCQVNFJyksICdzY3JpcHRzJywgJ2xpYicpKQorICAgIGltcG9ydCBzY3JpcHR1dGlscworICAgIGZyb20gZGV2dG9vbCBpbXBvcnQgc2V0dXBfZ2l0X3JlcG8KKworICAgIHRlbXBkaXIgPSBkLmdldFZhcignREVWVE9PTF9URU1QRElSJykKKyAgICB3b3JrZGlyID0gZC5nZXRWYXIoJ1dPUktESVInKQorICAgIHNyY3N1YmRpciA9IGQuZ2V0VmFyKCdTJykKKworICAgIGRlZiBfbW92ZV9maWxlKHNyYywgZHN0KToKKyAgICAgICAgIiIiTW92ZSBhIGZpbGUuIENyZWF0ZXMgYWxsIHRoZSBkaXJlY3RvcnkgY29tcG9uZW50cyBvZiBkZXN0aW5hdGlvbiBwYXRoLiIiIgorICAgICAgICBkc3RfZCA9IG9zLnBhdGguZGlybmFtZShkc3QpCisgICAgICAgIGlmIGRzdF9kOgorICAgICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKGRzdF9kKQorICAgICAgICBzaHV0aWwubW92ZShzcmMsIGRzdCkKKworICAgIGRlZiBfbHNfdHJlZShkaXJlY3RvcnkpOgorICAgICAgICAiIiJSZWN1cnNpdmUgbGlzdGluZyBvZiBmaWxlcyBpbiBhIGRpcmVjdG9yeSIiIgorICAgICAgICByZXQgPSBbXQorICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhkaXJlY3RvcnkpOgorICAgICAgICAgICAgcmV0LmV4dGVuZChbb3MucGF0aC5yZWxwYXRoKG9zLnBhdGguam9pbihyb290LCBmbmFtZSksIGRpcmVjdG9yeSkgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICBmbmFtZSBpbiBmaWxlc10pCisgICAgICAgIHJldHVybiByZXQKKworICAgICMgTW92ZSBsb2NhbCBzb3VyY2UgZmlsZXMgaW50byBzZXBhcmF0ZSBzdWJkaXIKKyAgICByZWNpcGVfcGF0Y2hlcyA9IFtvcy5wYXRoLmJhc2VuYW1lKHBhdGNoKSBmb3IgcGF0Y2ggaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIG9lLnJlY2lwZXV0aWxzLmdldF9yZWNpcGVfcGF0Y2hlcyhkKV0KKyAgICBsb2NhbF9maWxlcyA9IG9lLnJlY2lwZXV0aWxzLmdldF9yZWNpcGVfbG9jYWxfZmlsZXMoZCkKKworICAgICMgSWdub3JlIGxvY2FsIGZpbGVzIHdpdGggc3ViZGlyPXtCUH0KKyAgICBzcmNhYnNwYXRoID0gb3MucGF0aC5hYnNwYXRoKHNyY3N1YmRpcikKKyAgICBsb2NhbF9maWxlcyA9IFtmbmFtZSBmb3IgZm5hbWUgaW4gbG9jYWxfZmlsZXMgaWYKKyAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHdvcmtkaXIsIGZuYW1lKSkgYW5kCisgICAgICAgICAgICAgICAgICAgIChzcmNhYnNwYXRoID09IHdvcmtkaXIgb3Igbm90CisgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbih3b3JrZGlyLCBmbmFtZSkuc3RhcnRzd2l0aChzcmNhYnNwYXRoICsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9zLnNlcCkpXQorICAgIGlmIGxvY2FsX2ZpbGVzOgorICAgICAgICBmb3IgZm5hbWUgaW4gbG9jYWxfZmlsZXM6CisgICAgICAgICAgICBfbW92ZV9maWxlKG9zLnBhdGguam9pbih3b3JrZGlyLCBmbmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4odGVtcGRpciwgJ29lLWxvY2FsLWZpbGVzJywgZm5hbWUpKQorICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHRlbXBkaXIsICdvZS1sb2NhbC1maWxlcycsICcuZ2l0aWdub3JlJyksCisgICAgICAgICAgICAgICAgICAgICd3JykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoJyMgSWdub3JlIGxvY2FsIGZpbGVzLCBieSBkZWZhdWx0LiBSZW1vdmUgdGhpcyBmaWxlICcKKyAgICAgICAgICAgICAgICAgICAgJ2lmIHlvdSB3YW50IHRvIGNvbW1pdCB0aGUgZGlyZWN0b3J5IHRvIEdpdFxuKlxuJykKKworICAgIGlmIHNyY3N1YmRpciA9PSB3b3JrZGlyOgorICAgICAgICAjIEZpbmQgbm9uLXBhdGNoIG5vbi1sb2NhbCBzb3VyY2VzIHRoYXQgd2VyZSAidW5wYWNrZWQiIHRvIHNyY3RyZWUKKyAgICAgICAgIyBkaXJlY3RvcnkKKyAgICAgICAgc3JjX2ZpbGVzID0gW2ZuYW1lIGZvciBmbmFtZSBpbiBfbHNfdHJlZSh3b3JrZGlyKSBpZgorICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5iYXNlbmFtZShmbmFtZSkgbm90IGluIHJlY2lwZV9wYXRjaGVzXQorICAgICAgICBzcmNzdWJkaXIgPSBkLmdldFZhcignREVWVE9PTF9QQVRDSF9TUkNESVInKQorICAgICAgICAjIE1vdmUgc291cmNlIGZpbGVzIHRvIFMKKyAgICAgICAgZm9yIHBhdGggaW4gc3JjX2ZpbGVzOgorICAgICAgICAgICAgX21vdmVfZmlsZShvcy5wYXRoLmpvaW4od29ya2RpciwgcGF0aCksCisgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc3Jjc3ViZGlyLCBwYXRoKSkKKyAgICBlbGlmIG9zLnBhdGguZGlybmFtZShzcmNzdWJkaXIpICE9IHdvcmtkaXI6CisgICAgICAgICMgSGFuZGxlIGlmIFMgaXMgc2V0IHRvIGEgc3ViZGlyZWN0b3J5IG9mIHRoZSBzb3VyY2UKKyAgICAgICAgc3Jjc3ViZGlyID0gb3MucGF0aC5qb2luKHdvcmtkaXIsIG9zLnBhdGgucmVscGF0aChzcmNzdWJkaXIsIHdvcmtkaXIpLnNwbGl0KG9zLnNlcClbMF0pCisKKyAgICBzY3JpcHR1dGlscy5naXRfY29udmVydF9zdGFuZGFsb25lX2Nsb25lKHNyY3N1YmRpcikKKworICAgICMgTWFrZSBzdXJlIHRoYXQgc3Jjc3ViZGlyIGV4aXN0cworICAgIGJiLnV0aWxzLm1rZGlyaGllcihzcmNzdWJkaXIpCisgICAgaWYgbm90IG9zLmxpc3RkaXIoc3Jjc3ViZGlyKToKKyAgICAgICAgYmIud2FybigiTm8gc291cmNlIHVucGFja2VkIHRvIFMgLSBlaXRoZXIgdGhlICVzIHJlY2lwZSAiCisgICAgICAgICAgICAgICAgImRvZXNuJ3QgdXNlIGFueSBzb3VyY2Ugb3IgdGhlIGNvcnJlY3Qgc291cmNlICIKKyAgICAgICAgICAgICAgICAiZGlyZWN0b3J5IGNvdWxkIG5vdCBiZSBkZXRlcm1pbmVkIiAlIGQuZ2V0VmFyKCdQTicpKQorCisgICAgZGV2YnJhbmNoID0gZC5nZXRWYXIoJ0RFVlRPT0xfREVWQlJBTkNIJykKKyAgICBzZXR1cF9naXRfcmVwbyhzcmNzdWJkaXIsIGQuZ2V0VmFyKCdQVicpLCBkZXZicmFuY2gsIGQ9ZCkKKworICAgIChzdGRvdXQsIF8pID0gYmIucHJvY2Vzcy5ydW4oJ2dpdCByZXYtcGFyc2UgSEVBRCcsIGN3ZD1zcmNzdWJkaXIpCisgICAgaW5pdGlhbF9yZXYgPSBzdGRvdXQucnN0cmlwKCkKKyAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHRlbXBkaXIsICdpbml0aWFsX3JldicpLCAndycpIGFzIGY6CisgICAgICAgIGYud3JpdGUoaW5pdGlhbF9yZXYpCisKKyAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHRlbXBkaXIsICdzcmNzdWJkaXInKSwgJ3cnKSBhcyBmOgorICAgICAgICBmLndyaXRlKHNyY3N1YmRpcikKK30KKworcHl0aG9uIGRldnRvb2xfcHJlX3BhdGNoKCkgeworICAgIGlmIGQuZ2V0VmFyKCdTJykgPT0gZC5nZXRWYXIoJ1dPUktESVInKToKKyAgICAgICAgZC5zZXRWYXIoJ1MnLCAnJHtERVZUT09MX1BBVENIX1NSQ0RJUn0nKQorfQorCitweXRob24gZGV2dG9vbF9wb3N0X3BhdGNoKCkgeworICAgIHRlbXBkaXIgPSBkLmdldFZhcignREVWVE9PTF9URU1QRElSJykKKyAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHRlbXBkaXIsICdzcmNzdWJkaXInKSwgJ3InKSBhcyBmOgorICAgICAgICBzcmNzdWJkaXIgPSBmLnJlYWQoKQorICAgIGJiLnByb2Nlc3MucnVuKCdnaXQgdGFnIC1mIGRldnRvb2wtcGF0Y2hlZCcsIGN3ZD1zcmNzdWJkaXIpCit9CisKK3B5dGhvbiBkZXZ0b29sX3Bvc3RfY29uZmlndXJlKCkgeworICAgIGltcG9ydCBzaHV0aWwKKyAgICB0ZW1wZGlyID0gZC5nZXRWYXIoJ0RFVlRPT0xfVEVNUERJUicpCisgICAgc2h1dGlsLmNvcHkyKG9zLnBhdGguam9pbihkLmdldFZhcignQicpLCAnLmNvbmZpZycpLCB0ZW1wZGlyKQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9kaXN0cm9kYXRhLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Rpc3Ryb2RhdGEuYmJjbGFzcwppbmRleCA1ZTM0NDQxLi5jODVmN2IzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Rpc3Ryb2RhdGEuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Rpc3Ryb2RhdGEuYmJjbGFzcwpAQCAtMjYxLDEyICsyNjEsNDQgQEAKICAgICAgICAgZnJvbSBiYi51dGlscyBpbXBvcnQgdmVyY21wX3N0cmluZwogICAgICAgICBmcm9tIGJiLmZldGNoMiBpbXBvcnQgRmV0Y2hFcnJvciwgTm9NZXRob2RFcnJvciwgZGVjb2RldXJsCiAKLSAgICAgICAgIiIiZmlyc3QgY2hlY2sgd2hldGhlciBhIHVyaSBpcyBwcm92aWRlZCIiIgotICAgICAgICBzcmNfdXJpID0gKGQuZ2V0VmFyKCdTUkNfVVJJJykgb3IgJycpLnNwbGl0KCkKLSAgICAgICAgaWYgc3JjX3VyaToKLSAgICAgICAgICAgIHVyaV90eXBlLCBfLCBfLCBfLCBfLCBfID0gZGVjb2RldXJsKHNyY191cmlbMF0pCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB1cmlfdHlwZSA9ICJub25lIgorICAgICAgICBkZWYgZ2V0X3Vwc3RyZWFtX3ZlcnNpb25fYW5kX3N0YXR1cygpOgorCisgICAgICAgICAgICAjIHNldCBpZiB0aGUgdXBzdHJlYW0gY2hlY2sgZmFpbHMgcmVsaWFibHksIGUuZy4gYWJzZW50IGdpdCB0YWdzLCBvciB3ZWlyZCB2ZXJzaW9uIGZvcm1hdCB1c2VkIG9uIG91ciBvciBvbiB1cHN0cmVhbSBzaWRlLgorICAgICAgICAgICAgdXBzdHJlYW1fdmVyc2lvbl91bmtub3duID0gbG9jYWxkYXRhLmdldFZhcignVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOJykKKyAgICAgICAgICAgICMgc2V0IGlmIHRoZSB1cHN0cmVhbSBjaGVjayBjYW5ub3QgYmUgcmVsaWFibHkgcGVyZm9ybWVkIGR1ZSB0byB0cmFuc2llbnQgbmV0d29yayBmYWlsdXJlcywgb3Igc2VydmVyIGJlaGF2aW5nIHdlaXJkbHkuIAorICAgICAgICAgICAgIyBUaGlzIG9uZSBzaG91bGQgYmUgdXNlZCBzcGFyaW5nbHksIGFzIGl0IGNvbXBsZXRlbHkgZXhjbHVkZXMgYSByZWNpcGUgZnJvbSB1cHN0cmVhbSBjaGVja2luZy4KKyAgICAgICAgICAgIHVwc3RyZWFtX2NoZWNrX3VucmVsaWFibGUgPSBsb2NhbGRhdGEuZ2V0VmFyKCdVUFNUUkVBTV9DSEVDS19VTlJFTElBQkxFJykKKworICAgICAgICAgICAgaWYgdXBzdHJlYW1fY2hlY2tfdW5yZWxpYWJsZSA9PSAiMSI6CisgICAgICAgICAgICAgICAgcmV0dXJuICJOL0EiLCAiQ0hFQ0tfSVNfVU5SRUxJQUJMRSIKKworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHV2ID0gb2UucmVjaXBldXRpbHMuZ2V0X3JlY2lwZV91cHN0cmVhbV92ZXJzaW9uKGxvY2FsZGF0YSkKKyAgICAgICAgICAgICAgICBwdXB2ZXIgPSB1dlsndmVyc2lvbiddIGlmIHV2Wyd2ZXJzaW9uJ10gZWxzZSAiTi9BIgorICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgIHB1cHZlciA9ICJOL0EiCisKKyAgICAgICAgICAgIGlmIHB1cHZlciA9PSAiTi9BIjoKKyAgICAgICAgICAgICAgICBwc3RhdHVzID0gIlVOS05PV04iIGlmIHVwc3RyZWFtX3ZlcnNpb25fdW5rbm93biBlbHNlICJVTktOT1dOX0JST0tFTiIKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc3JjX3VyaSA9IChsb2NhbGRhdGEuZ2V0VmFyKCdTUkNfVVJJJykgb3IgJycpLnNwbGl0KCkKKyAgICAgICAgICAgICAgICBpZiBzcmNfdXJpOgorICAgICAgICAgICAgICAgICAgICB1cmlfdHlwZSwgXywgXywgXywgXywgXyA9IGRlY29kZXVybChzcmNfdXJpWzBdKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHVyaV90eXBlID0gIm5vbmUiCisgICAgICAgICAgICAgICAgcHYsIF8sIF8gPSBvZS5yZWNpcGV1dGlscy5nZXRfcmVjaXBlX3B2X3dpdGhvdXRfc3JjcHYocHZlcnNpb24sIHVyaV90eXBlKQorICAgICAgICAgICAgICAgIHVwdiwgXywgXyA9IG9lLnJlY2lwZXV0aWxzLmdldF9yZWNpcGVfcHZfd2l0aG91dF9zcmNwdihwdXB2ZXIsIHVyaV90eXBlKQorCisgICAgICAgICAgICAgICAgY21wID0gdmVyY21wX3N0cmluZyhwdiwgdXB2KQorICAgICAgICAgICAgICAgIGlmIGNtcCA9PSAtMToKKyAgICAgICAgICAgICAgICAgICAgcHN0YXR1cyA9ICJVUERBVEUiIGlmIG5vdCB1cHN0cmVhbV92ZXJzaW9uX3Vua25vd24gZWxzZSAiS05PV05fQlJPS0VOIgorICAgICAgICAgICAgICAgIGVsaWYgY21wID09IDA6CisgICAgICAgICAgICAgICAgICAgIHBzdGF0dXMgPSAiTUFUQ0giIGlmIG5vdCB1cHN0cmVhbV92ZXJzaW9uX3Vua25vd24gZWxzZSAiS05PV05fQlJPS0VOIgorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHBzdGF0dXMgPSAiVU5LTk9XTiIgaWYgdXBzdHJlYW1fdmVyc2lvbl91bmtub3duIGVsc2UgIlVOS05PV05fQlJPS0VOIgorCisgICAgICAgICAgICByZXR1cm4gcHVwdmVyLCBwc3RhdHVzCisKIAogICAgICAgICAiIiJpbml0aWFsaXplIGxvZyBmaWxlcy4iIiIKICAgICAgICAgbG9ncGF0aCA9IGQuZ2V0VmFyKCdMT0dfRElSJykKQEAgLTMxMywzNCArMzQ1LDcgQEAKICAgICAgICAgcHNyY3VyaSA9IGxvY2FsZGF0YS5nZXRWYXIoJ1NSQ19VUkknKQogICAgICAgICBtYWludGFpbmVyID0gbG9jYWxkYXRhLmdldFZhcignUkVDSVBFX01BSU5UQUlORVInKQogCi0gICAgICAgICIiIiBHZXQgdXBzdHJlYW0gdmVyc2lvbiB2ZXJzaW9uICIiIgotICAgICAgICBwdXB2ZXIgPSAiIgotICAgICAgICBwc3RhdHVzID0gIiIKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB1diA9IG9lLnJlY2lwZXV0aWxzLmdldF9yZWNpcGVfdXBzdHJlYW1fdmVyc2lvbihsb2NhbGRhdGEpCi0KLSAgICAgICAgICAgIHB1cHZlciA9IHV2Wyd2ZXJzaW9uJ10KLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgaWYgZSBpcyBGZXRjaEVycm9yOgotICAgICAgICAgICAgICAgIHBzdGF0dXMgPSAiRXJyQWNjZXNzIgotICAgICAgICAgICAgZWxpZiBlIGlzIE5vTWV0aG9kRXJyb3I6Ci0gICAgICAgICAgICAgICAgcHN0YXR1cyA9ICJFcnJVbnN1cHBvcnRlZFByb3RvIgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBwc3RhdHVzID0gIkVyclVua25vd24iCi0KLSAgICAgICAgIiIiU2V0IHVwc3RyZWFtIHZlcnNpb24gc3RhdHVzIiIiCi0gICAgICAgIGlmIG5vdCBwdXB2ZXI6Ci0gICAgICAgICAgICBwdXB2ZXIgPSAiTi9BIgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcHYsIF8sIF8gPSBvZS5yZWNpcGV1dGlscy5nZXRfcmVjaXBlX3B2X3dpdGhvdXRfc3JjcHYocHZlcnNpb24sIHVyaV90eXBlKQotICAgICAgICAgICAgdXB2LCBfLCBfID0gb2UucmVjaXBldXRpbHMuZ2V0X3JlY2lwZV9wdl93aXRob3V0X3NyY3B2KHB1cHZlciwgdXJpX3R5cGUpCi0KLSAgICAgICAgICAgIGNtcCA9IHZlcmNtcF9zdHJpbmcocHYsIHVwdikKLSAgICAgICAgICAgIGlmIGNtcCA9PSAtMToKLSAgICAgICAgICAgICAgICBwc3RhdHVzID0gIlVQREFURSIKLSAgICAgICAgICAgIGVsaWYgY21wID09IDA6Ci0gICAgICAgICAgICAgICAgcHN0YXR1cyA9ICJNQVRDSCIKKyAgICAgICAgcHVwdmVyLCBwc3RhdHVzID0gZ2V0X3Vwc3RyZWFtX3ZlcnNpb25fYW5kX3N0YXR1cygpCiAKICAgICAgICAgaWYgcHNyY3VyaToKICAgICAgICAgICAgIHBzcmN1cmkgPSBwc3JjdXJpLnNwbGl0KClbMF0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZGlzdHJvb3ZlcnJpZGVzLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Rpc3Ryb292ZXJyaWRlcy5iYmNsYXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmNGRiMGQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2Rpc3Ryb292ZXJyaWRlcy5iYmNsYXNzCkBAIC0wLDAgKzEsMzIgQEAKKyMgVHVybnMgY2VydGFpbiBESVNUUk9fRkVBVFVSRVMgaW50byBvdmVycmlkZXMgd2l0aCB0aGUgc2FtZQorIyBuYW1lIHBsdXMgYSBkZi0gcHJlZml4LiBFbnN1cmVzIHRoYXQgdGhlc2Ugc3BlY2lhbAorIyBkaXN0cm8gZmVhdHVyZXMgcmVtYWluIHNldCBhbHNvIGZvciBuYXRpdmUgYW5kIG5hdGl2ZXNkaworIyByZWNpcGVzLCBzbyB0aGF0IHRoZXNlIG92ZXJyaWRlcyBjYW4gYWxzbyBiZSB1c2VkIHRoZXJlLgorIworIyBUaGlzIG1ha2VzIGl0IHNpbXBsZXIgdG8gd3JpdGUgLmJiYXBwZW5kcyB0aGF0IG9ubHkgY2hhbmdlIHRoZQorIyB0YXNrIHNpZ25hdHVyZXMgb2YgdGhlIHJlY2lwZSBpZiB0aGUgY2hhbmdlIGlzIHJlYWxseSBlbmFibGVkLAorIyBmb3IgZXhhbXBsZSB3aXRoOgorIyAgIGRvX2luc3RhbGxfYXBwZW5kX2RmLW15LWZlYXR1cmUgKCkgeyAuLi4gfQorIyB3aGVyZSAibXktZmVhdHVyZSIgaXMgYSBESVNUUk9fRkVBVFVSRS4KKyMKKyMgVGhlIGNsYXNzIGlzIG1lYW50IHRvIGJlIHVzZWQgaW4gYSBsYXllci5jb25mIG9yIGRpc3RybworIyAuaW5jIGZpbGUgd2l0aDoKKyMgSU5IRVJJVCArPSAiZGlzdHJvb3ZlcnJpZGVzIgorIyBESVNUUk9fRkVBVFVSRVNfT1ZFUlJJREVTICs9ICJteS1mZWF0dXJlIgorIworIyBCZXdhcmUgdGhhdCB0aGlzIHBhcnQgb2YgT1ZFUlJJREVTIGNoYW5nZXMgZHVyaW5nIHBhcnNpbmcsIHNvIHVzYWdlCisjIG9mIHRoZXNlIG92ZXJyaWRlcyBzaG91bGQgYmUgbGltaXRlZCB0byAuYmIgYW5kIC5iYmFwcGVuZCBmaWxlcywKKyMgYmVjYXVzZSB0aGVuIERJU1RST19GRUFUVVJFUyBpcyBmaW5hbC4KKworRElTVFJPX0ZFQVRVUkVTX09WRVJSSURFUyA/PSAiIgorRElTVFJPX0ZFQVRVUkVTX09WRVJSSURFU1tkb2NdID0gIkEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgPGZlYXR1cmU+IGVudHJpZXMuIFwKK0VhY2ggZW50cnkgaXMgYWRkZWQgdG8gT1ZFUlJJREVTIGFzIGRmLTxmZWF0dXJlPiBpZiA8ZmVhdHVyZT4gaXMgaW4gRElTVFJPX0ZFQVRVUkVTLiIKKworRElTVFJPX0ZFQVRVUkVTX0ZJTFRFUl9OQVRJVkVfYXBwZW5kID0gIiAke0RJU1RST19GRUFUVVJFU19PVkVSUklERVN9IgorRElTVFJPX0ZFQVRVUkVTX0ZJTFRFUl9OQVRJVkVTREtfYXBwZW5kID0gIiAke0RJU1RST19GRUFUVVJFU19PVkVSUklERVN9IgorCisjIElmIERJU1RST19GRUFUVVJFU19PVkVSUklERVMgb3IgRElTVFJPX0ZFQVRVUkVTIHNob3cgdXAgaW4gYSB0YXNrCisjIHNpZ25hdHVyZSBiZWNhdXNlIG9mIHRoaXMgbGluZSwgdGhlbiB0aGUgdGFzayBkZXBlbmRlbmN5IG9uCisjIE9WRVJSSURFUyBpdHNlbGYgc2hvdWxkIGJlIGZpeGVkLiBFeGNsdWRpbmcgdGhlc2UgdHdvIHZhcmlhYmxlcworIyB3aXRoIERJU1RST09WRVJSSURFU1t2YXJkZXBzZXhjbHVkZV0gd291bGQganVzdCB3b3JrIGFyb3VuZCB0aGUgcHJvYmxlbS4KK0RJU1RST09WRVJSSURFUyAuPSAiJHtAICcnLmpvaW4oWyc6ZGYtJyArIHggZm9yIHggaW4gc29ydGVkKHNldChkLmdldFZhcignRElTVFJPX0ZFQVRVUkVTX09WRVJSSURFUycpLnNwbGl0KCkpICYgc2V0KChkLmdldFZhcignRElTVFJPX0ZFQVRVUkVTJykgb3IgJycpLnNwbGl0KCkpKV0pIH0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2V4dGVybmFsc3JjLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2V4dGVybmFsc3JjLmJiY2xhc3MKaW5kZXggZDY0YWY2YS4uNjVkZDEzZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9leHRlcm5hbHNyYy5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZXh0ZXJuYWxzcmMuYmJjbGFzcwpAQCAtMjksNiArMjksMTIgQEAKIAogcHl0aG9uICgpIHsKICAgICBleHRlcm5hbHNyYyA9IGQuZ2V0VmFyKCdFWFRFUk5BTFNSQycpCisgICAgZXh0ZXJuYWxzcmNidWlsZCA9IGQuZ2V0VmFyKCdFWFRFUk5BTFNSQ19CVUlMRCcpCisKKyAgICBpZiBleHRlcm5hbHNyYyBhbmQgbm90IGV4dGVybmFsc3JjLnN0YXJ0c3dpdGgoIi8iKToKKyAgICAgICAgYmIuZXJyb3IoIkVYVEVSTkFMU1JDIG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aCIpCisgICAgaWYgZXh0ZXJuYWxzcmNidWlsZCBhbmQgbm90IGV4dGVybmFsc3JjYnVpbGQuc3RhcnRzd2l0aCgiLyIpOgorICAgICAgICBiYi5lcnJvcigiRVhURVJOQUxTUkNfQlVJTEQgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoIikKIAogICAgICMgSWYgdGhpcyBpcyB0aGUgYmFzZSByZWNpcGUgYW5kIEVYVEVSTkFMU1JDIGlzIHNldCBmb3IgaXQgb3IgYW55IG9mIGl0cwogICAgICMgZGVyaXZhdGl2ZXMsIHRoZW4gZW5hYmxlIEJCX0RPTlRfQ0FDSEUgdG8gZm9yY2UgdGhlIHJlY2lwZSB0byBhbHdheXMgYmUKQEAgLTQ4LDcgKzU0LDYgQEAKIAogICAgIGlmIGV4dGVybmFsc3JjOgogICAgICAgICBkLnNldFZhcignUycsIGV4dGVybmFsc3JjKQotICAgICAgICBleHRlcm5hbHNyY2J1aWxkID0gZC5nZXRWYXIoJ0VYVEVSTkFMU1JDX0JVSUxEJykKICAgICAgICAgaWYgZXh0ZXJuYWxzcmNidWlsZDoKICAgICAgICAgICAgIGQuc2V0VmFyKCdCJywgZXh0ZXJuYWxzcmNidWlsZCkKICAgICAgICAgZWxzZToKQEAgLTE2Nyw2ICsxNzIsNyBAQAogZG9fYnVpbGRjbGVhbltkb2NdID0gIkNhbGwgJ21ha2UgY2xlYW4nIG9yIGVxdWl2YWxlbnQgaW4gJHtCfSIKIGV4dGVybmFsc3JjX2RvX2J1aWxkY2xlYW4oKSB7CiAJaWYgWyAtZSBNYWtlZmlsZSAtbyAtZSBtYWtlZmlsZSAtbyAtZSBHTlVtYWtlZmlsZSBdOyB0aGVuCisJCXJtIC1mICR7QCcgJy5qb2luKFt4LnNwbGl0KCc6JylbMF0gZm9yIHggaW4gKGQuZ2V0VmFyKCdFWFRFUk5BTFNSQ19TWU1MSU5LUycpIG9yICcnKS5zcGxpdCgpXSl9CiAJCW9lX3J1bm1ha2UgY2xlYW4gfHwgZGllICJtYWtlIGZhaWxlZCIKIAllbHNlCiAJCWJibm90ZSAibm90aGluZyB0byBkbyAtIG5vIG1ha2VmaWxlIGZvdW5kIgpAQCAtMTc5LDE0ICsxODUsMjAgQEAKICAgICBpbXBvcnQgdGVtcGZpbGUKIAogICAgIHNfZGlyID0gc3JjZGlyIG9yIGQuZ2V0VmFyKCdFWFRFUk5BTFNSQycpCi0gICAgZ2l0X2RpciA9IG9zLnBhdGguam9pbihzX2RpciwgJy5naXQnKQotICAgIG9lX2hhc2hfZmlsZSA9IG9zLnBhdGguam9pbihnaXRfZGlyLCAnb2UtZGV2dG9vbC10cmVlLXNoYTEnKQorICAgIGdpdF9kaXIgPSBOb25lCisKKyAgICB0cnk6CisgICAgICAgIGdpdF9kaXIgPSBvcy5wYXRoLmpvaW4oc19kaXIsCisgICAgICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbJ2dpdCcsICctQycsIHNfZGlyLCAncmV2LXBhcnNlJywgJy0tZ2l0LWRpciddKS5kZWNvZGUoInV0Zi04IikucnN0cmlwKCkpCisgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yOgorICAgICAgICBwYXNzCiAKICAgICByZXQgPSAiICIKLSAgICBpZiBvcy5wYXRoLmV4aXN0cyhnaXRfZGlyKToKLSAgICAgICAgd2l0aCB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUoZGlyPWdpdF9kaXIsIHByZWZpeD0nb2UtZGV2dG9vbC1pbmRleCcpIGFzIHRtcF9pbmRleDoKKyAgICBpZiBnaXRfZGlyIGlzIG5vdCBOb25lOgorICAgICAgICBvZV9oYXNoX2ZpbGUgPSBvcy5wYXRoLmpvaW4oZ2l0X2RpciwgJ29lLWRldnRvb2wtdHJlZS1zaGExJykKKyAgICAgICAgd2l0aCB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUocHJlZml4PSdvZS1kZXZ0b29sLWluZGV4JykgYXMgdG1wX2luZGV4OgogICAgICAgICAgICAgIyBDbG9uZSBpbmRleAotICAgICAgICAgICAgc2h1dGlsLmNvcHkyKG9zLnBhdGguam9pbihnaXRfZGlyLCAnaW5kZXgnKSwgdG1wX2luZGV4Lm5hbWUpCisgICAgICAgICAgICBzaHV0aWwuY29weWZpbGUob3MucGF0aC5qb2luKGdpdF9kaXIsICdpbmRleCcpLCB0bXBfaW5kZXgubmFtZSkKICAgICAgICAgICAgICMgVXBkYXRlIG91ciBjdXN0b20gaW5kZXgKICAgICAgICAgICAgIGVudiA9IG9zLmVudmlyb24uY29weSgpCiAgICAgICAgICAgICBlbnZbJ0dJVF9JTkRFWF9GSUxFJ10gPSB0bXBfaW5kZXgubmFtZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9nZXR0ZXh0LmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dldHRleHQuYmJjbGFzcwppbmRleCAwYmUxNDI0Li5kYTY4ZTYzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dldHRleHQuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dldHRleHQuYmJjbGFzcwpAQCAtMTMsNyArMTMsMTIgQEAKICAgICAgICAgcmV0dXJuICctLWRpc2FibGUtbmxzJwogICAgIHJldHVybiAiLS1lbmFibGUtbmxzIgogCi1ERVBFTkRTX0dFVFRFWFQgPz89ICJ2aXJ0dWFsL2dldHRleHQgZ2V0dGV4dC1uYXRpdmUiCitERVBFTkRTX0dFVFRFWFQgPz89ICJnZXR0ZXh0LW5hdGl2ZSIKIAotQkFTRURFUEVORFMgPSsgIiR7QGdldHRleHRfZGVwZW5kZW5jaWVzKGQpfSIKK0JBU0VERVBFTkRTX2FwcGVuZCA9ICIgJHtAZ2V0dGV4dF9kZXBlbmRlbmNpZXMoZCl9IgogRVhUUkFfT0VDT05GX2FwcGVuZCA9ICIgJHtAZ2V0dGV4dF9vZWNvbmYoZCl9IgorCisjIFdpdGhvdXQgdGhpcywgbXNnZm10IGZyb20gZ2V0dGV4dC1uYXRpdmUgd2lsbCBub3QgZmluZCBJVFMgZmlsZXMKKyMgcHJvdmlkZWQgYnkgdGFyZ2V0IHJlY2lwZXMgKGZvciBleGFtcGxlLCBwb2xraXQuaXRzKS4KK0dFVFRFWFREQVRBRElSU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIjoke1NUQUdJTkdfREFUQURJUn0vZ2V0dGV4dCIKK2V4cG9ydCBHRVRURVhUREFUQURJUlMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ25vbWViYXNlLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dub21lYmFzZS5iYmNsYXNzCmluZGV4IDU0YWE0NWYuLjRjY2M4ZTAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ25vbWViYXNlLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9nbm9tZWJhc2UuYmJjbGFzcwpAQCAtMTQsNiArMTQsOCBAQAogICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vcG9sa2l0KiBcCiAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9HQ29uZiBcCiAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9nbGliLTIuMC9zY2hlbWFzIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2FwcGRhdGEgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vaWNvbnMgXAogIgogCiBGSUxFU18ke1BOfS1kb2MgKz0gIiR7ZGF0YWRpcn0vZGV2aGVscCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ28uYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ28uYmJjbGFzcwppbmRleCA4NWY3MWEyLi4wOWIwMWE4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dvLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9nby5iYmNsYXNzCkBAIC0xLDc3ICsxLDE4MiBAQAotaW5oZXJpdCBnb2FyY2gKK2luaGVyaXQgZ29hcmNoIHB0ZXN0CiAKLSMgeDMyIEFCSSBpcyBub3Qgc3VwcG9ydGVkIG9uIGdvIGNvbXBpbGVyIHNvIGZhcgotQ09NUEFUSUJMRV9IT1NUX2xpbnV4LWdudXgzMiA9ICJudWxsIgotIyBwcGMzMiBpcyBub3Qgc3VwcG9ydGVkIGluIGdvIGNvbXBpbGVycwotQ09NUEFUSUJMRV9IT1NUX3Bvd2VycGMgPSAibnVsbCIKK2RlZiBnZXRfZ29fcGFyYWxsZWxfbWFrZShkKToKKyAgICBwbSA9IChkLmdldFZhcignUEFSQUxMRUxfTUFLRScpIG9yICcnKS5zcGxpdCgpCisgICAgIyBsb29rIGZvciAnLWonIGFuZCB0aHJvdyBvdGhlciBvcHRpb25zIChlLmcuICctbCcpIGF3YXkKKyAgICAjIGJlY2F1c2UgdGhleSBtaWdodCBoYXZlIGEgZGlmZmVyZW50IG1lYW5pbmcgaW4gZ29sYW5nCisgICAgd2hpbGUgcG06CisgICAgICAgIG9wdCA9IHBtLnBvcCgwKQorICAgICAgICBpZiBvcHQgPT0gJy1qJzoKKyAgICAgICAgICAgIHYgPSBwbS5wb3AoMCkKKyAgICAgICAgZWxpZiBvcHQuc3RhcnRzd2l0aCgnLWonKToKKyAgICAgICAgICAgIHYgPSBvcHRbMjpdLnN0cmlwKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgcmV0dXJuICctcCAlZCcgJSBpbnQodikKKworICAgIHJldHVybiAiIgorCitHT19QQVJBTExFTF9CVUlMRCA/PSAiJHtAZ2V0X2dvX3BhcmFsbGVsX21ha2UoZCl9IgogCiBHT1JPT1RfY2xhc3MtbmF0aXZlID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nbyIKLUdPUk9PVCA9ICIke1NUQUdJTkdfTElCRElSX05BVElWRX0vJHtUQVJHRVRfU1lTfS9nbyIKLUdPQklOX0ZJTkFMX2NsYXNzLW5hdGl2ZSA9ICIke0dPUk9PVF9GSU5BTH0vYmluIgotR09CSU5fRklOQUwgPSAiJHtHT1JPT1RfRklOQUx9L2Jpbi8ke0dPT1N9XyR7R09BUkNIfSIKLQotZXhwb3J0IEdPT1MgPSAiJHtUQVJHRVRfR09PU30iCi1leHBvcnQgR09BUkNIID0gIiR7VEFSR0VUX0dPQVJDSH0iCi1leHBvcnQgR09BUk0gPSAiJHtUQVJHRVRfR09BUk19IgotZXhwb3J0IENHT19FTkFCTEVEID0gIjEiCitHT1JPT1RfY2xhc3MtbmF0aXZlc2RrID0gIiR7U1RBR0lOR19ESVJfVEFSR0VUfSR7bGliZGlyfS9nbyIKK0dPUk9PVCA9ICIke1NUQUdJTkdfTElCRElSfS9nbyIKIGV4cG9ydCBHT1JPT1QKLWV4cG9ydCBHT1JPT1RfRklOQUwgPSAiJHtsaWJkaXJ9LyR7VEFSR0VUX1NZU30vZ28iCi1leHBvcnQgR09CSU5fRklOQUwKLWV4cG9ydCBHT1BLR19GSU5BTCA9ICIke0dPUk9PVF9GSU5BTH0vcGtnLyR7R09PU31fJHtHT0FSQ0h9IgotZXhwb3J0IEdPU1JDX0ZJTkFMID0gIiR7R09ST09UX0ZJTkFMfS9zcmMiCi1leHBvcnQgR09fR0NGTEFHUyA9ICIke1RBUkdFVF9DRkxBR1N9IgotZXhwb3J0IEdPX0xERkxBR1MgPSAiJHtUQVJHRVRfTERGTEFHU30iCi1leHBvcnQgQ0dPX0NGTEFHUyA9ICIke1RBUkdFVF9DQ19BUkNIfSR7VE9PTENIQUlOX09QVElPTlN9ICR7VEFSR0VUX0NGTEFHU30iCi1leHBvcnQgQ0dPX0NQUEZMQUdTID0gIiR7VEFSR0VUX0NQUEZMQUdTfSIKLWV4cG9ydCBDR09fQ1hYRkxBR1MgPSAiJHtUQVJHRVRfQ0NfQVJDSH0ke1RPT0xDSEFJTl9PUFRJT05TfSAke1RBUkdFVF9DWFhGTEFHU30iCi1leHBvcnQgQ0dPX0xERkxBR1MgPSAiJHtUQVJHRVRfQ0NfQVJDSH0ke1RPT0xDSEFJTl9PUFRJT05TfSAke1RBUkdFVF9MREZMQUdTfSIKK2V4cG9ydCBHT1JPT1RfRklOQUwgPSAiJHtsaWJkaXJ9L2dvIgogCi1ERVBFTkRTICs9ICJnby1jcm9zcy0ke1RBUkdFVF9BUkNIfSIKLURFUEVORFNfY2xhc3MtbmF0aXZlICs9ICJnby1uYXRpdmUiCitERVBFTkRTX0dPTEFOR19jbGFzcy10YXJnZXQgPSAidmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Z28gdmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Z28tcnVudGltZSIKK0RFUEVORFNfR09MQU5HX2NsYXNzLW5hdGl2ZSA9ICJnby1uYXRpdmUiCitERVBFTkRTX0dPTEFOR19jbGFzcy1uYXRpdmVzZGsgPSAidmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Z28tY3Jvc3NzZGsgdmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Z28tcnVudGltZSIKIAotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke0dPU1JDX0ZJTkFMfS8ke0dPX0lNUE9SVH0iCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7R09QS0dfRklOQUx9LyR7R09fSU1QT1JUfSoiCitERVBFTkRTX2FwcGVuZCA9ICIgJHtERVBFTkRTX0dPTEFOR30iCisKK0dPX0xJTktTSEFSRUQgPz0gIiR7QCctbGlua3NoYXJlZCcgaWYgZC5nZXRWYXIoJ0dPX0RZTkxJTksnKSBlbHNlICcnfSIKK0dPX1JQQVRIX0xJTksgPSAiJHtAJy1XbCwtcnBhdGgtbGluaz0ke1NUQUdJTkdfRElSX1RBUkdFVH0ke2xpYmRpcn0vZ28vcGtnLyR7VEFSR0VUX0dPVFVQTEV9X2R5bmxpbmsnIGlmIGQuZ2V0VmFyKCdHT19EWU5MSU5LJykgZWxzZSAnJ30iCitHT19SUEFUSCA9ICIke0AnLXIgJHtsaWJkaXJ9L2dvL3BrZy8ke1RBUkdFVF9HT1RVUExFfV9keW5saW5rJyBpZiBkLmdldFZhcignR09fRFlOTElOSycpIGVsc2UgJyd9IgorR09fUlBBVEhfY2xhc3MtbmF0aXZlID0gIiR7QCctciAke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ28vcGtnLyR7VEFSR0VUX0dPVFVQTEV9X2R5bmxpbmsnIGlmIGQuZ2V0VmFyKCdHT19EWU5MSU5LJykgZWxzZSAnJ30iCitHT19SUEFUSF9MSU5LX2NsYXNzLW5hdGl2ZSA9ICIke0AnLVdsLC1ycGF0aC1saW5rPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nby9wa2cvJHtUQVJHRVRfR09UVVBMRX1fZHlubGluaycgaWYgZC5nZXRWYXIoJ0dPX0RZTkxJTksnKSBlbHNlICcnfSIKK0dPX0VYVExERkxBR1MgPz0gIiR7SE9TVF9DQ19BUkNIfSR7VE9PTENIQUlOX09QVElPTlN9ICR7R09fUlBBVEhfTElOS30gJHtMREZMQUdTfSIKK0dPX0xJTktNT0RFID89ICIiCitHT19MSU5LTU9ERV9jbGFzcy1uYXRpdmVzZGsgPSAiLS1saW5rbW9kZT1leHRlcm5hbCIKK0dPX0xERkxBR1MgPz0gJy1sZGZsYWdzPSIke0dPX1JQQVRIfSAke0dPX0xJTktNT0RFfSAtZXh0bGRmbGFncyAnJHtHT19FWFRMREZMQUdTfSciJworZXhwb3J0IEdPQlVJTERGTEFHUyA/PSAiLXYgJHtHT19MREZMQUdTfSIKK2V4cG9ydCBHT1BURVNUQlVJTERGTEFHUyA/PSAiJHtHT0JVSUxERkxBR1N9IC1jIgorZXhwb3J0IEdPUFRFU1RGTEFHUyA/PSAiLXRlc3QudiIKK0dPQlVJTERGTEFHU19wcmVwZW5kX3Rhc2stY29tcGlsZSA9ICIke0dPX1BBUkFMTEVMX0JVSUxEfSAiCisKK2V4cG9ydCBHTyA9ICIke0hPU1RfUFJFRklYfWdvIgorR09UT09MRElSID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS8ke1RBUkdFVF9TWVN9L2dvL3BrZy90b29sLyR7QlVJTERfR09UVVBMRX0iCitHT1RPT0xESVJfY2xhc3MtbmF0aXZlID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nby9wa2cvdG9vbC8ke0JVSUxEX0dPVFVQTEV9IgorZXhwb3J0IEdPVE9PTERJUgorCitTRUNVUklUWV9DRkxBR1MgPSAiJHtTRUNVUklUWV9OT1BJRV9DRkxBR1N9IgorU0VDVVJJVFlfTERGTEFHUyA9ICIiCisKK2V4cG9ydCBDR09fRU5BQkxFRCA/PSAiMSIKK2V4cG9ydCBDR09fQ0ZMQUdTID89ICIke0NGTEFHU30iCitleHBvcnQgQ0dPX0NQUEZMQUdTID89ICIke0NQUEZMQUdTfSIKK2V4cG9ydCBDR09fQ1hYRkxBR1MgPz0gIiR7Q1hYRkxBR1N9IgorZXhwb3J0IENHT19MREZMQUdTID89ICIke0xERkxBR1N9IgogCiBHT19JTlNUQUxMID89ICIke0dPX0lNUE9SVH0vLi4uIgorR09fSU5TVEFMTF9GSUxURVJPVVQgPz0gIiR7R09fSU1QT1JUfS92ZW5kb3IvIgogCi1kb19nb19jb21waWxlKCkgewotCUdPUEFUSD0ke1N9OiR7U1RBR0lOR19MSUJESVJ9LyR7VEFSR0VUX1NZU30vZ28gZ28gZW52CitCID0gIiR7V09SS0RJUn0vYnVpbGQiCitleHBvcnQgR09QQVRIID0gIiR7Qn0iCitHT19UTVBESVIgPz0gIiR7V09SS0RJUn0vZ28tdG1wIgorR09fVE1QRElSW3ZhcmRlcHZhbHVlXSA9ICIiCisKK3B5dGhvbiBnb19kb191bnBhY2soKSB7CisgICAgc3JjX3VyaSA9IChkLmdldFZhcignU1JDX1VSSScpIG9yICIiKS5zcGxpdCgpCisgICAgaWYgbGVuKHNyY191cmkpID09IDA6CisgICAgICAgIHJldHVybgorCisgICAgdHJ5OgorICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2gyLkZldGNoKHNyY191cmksIGQpCisgICAgICAgIGZvciB1cmwgaW4gZmV0Y2hlci51cmxzOgorICAgICAgICAgICAgaWYgZmV0Y2hlci51ZFt1cmxdLnR5cGUgPT0gJ2dpdCc6CisgICAgICAgICAgICAgICAgaWYgZmV0Y2hlci51ZFt1cmxdLnBhcm0uZ2V0KCdkZXN0c3VmZml4JykgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgc19kaXJuYW1lID0gb3MucGF0aC5iYXNlbmFtZShkLmdldFZhcignUycpKQorICAgICAgICAgICAgICAgICAgICBmZXRjaGVyLnVkW3VybF0ucGFybVsnZGVzdHN1ZmZpeCddID0gb3MucGF0aC5qb2luKHNfZGlybmFtZSwgJ3NyYycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5nZXRWYXIoJ0dPX0lNUE9SVCcpKSArICcvJworICAgICAgICBmZXRjaGVyLnVucGFjayhkLmdldFZhcignV09SS0RJUicpKQorICAgIGV4Y2VwdCBiYi5mZXRjaDIuQkJGZXRjaEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICByYWlzZSBiYi5idWlsZC5GdW5jRmFpbGVkKGUpCit9CisKK2dvX2xpc3RfcGFja2FnZXMoKSB7CisJJHtHT30gbGlzdCAtZiAne3suSW1wb3J0UGF0aH19JyAke0dPQlVJTERGTEFHU30gJHtHT19JTlNUQUxMfSB8IFwKKwkJZWdyZXAgLXYgJyR7R09fSU5TVEFMTF9GSUxURVJPVVR9JworfQorCitnb19saXN0X3BhY2thZ2VfdGVzdHMoKSB7CisgICAgJHtHT30gbGlzdCAtZiAne3suSW1wb3J0UGF0aH19IHt7LlRlc3RHb0ZpbGVzfX0nICR7R09CVUlMREZMQUdTfSAke0dPX0lOU1RBTEx9IHwgXAorCQlncmVwIC12ICdcW1xdJCcgfCBcCisJCWVncmVwIC12ICcke0dPX0lOU1RBTExfRklMVEVST1VUfScgfCBcCisJCWF3ayAneyBwcmludCAkMSB9JworfQorCitnb19kb19jb25maWd1cmUoKSB7CisJbG4gLXNuZiAke1N9L3NyYyAke0J9LworfQorCitnb19kb19jb21waWxlKCkgeworCWV4cG9ydCBUTVBESVI9IiR7R09fVE1QRElSfSIKKwkke0dPfSBlbnYKIAlpZiBbIC1uICIke0dPX0lOU1RBTEx9IiBdOyB0aGVuCi0JCUdPUEFUSD0ke1N9OiR7U1RBR0lOR19MSUJESVJ9LyR7VEFSR0VUX1NZU30vZ28gZ28gaW5zdGFsbCAtdiAke0dPX0lOU1RBTEx9CisJCSR7R099IGluc3RhbGwgJHtHT19MSU5LU0hBUkVEfSAke0dPQlVJTERGTEFHU30gYGdvX2xpc3RfcGFja2FnZXNgCisJZmkKK30KK2RvX2NvbXBpbGVbZGlyc10gPSsgIiR7R09fVE1QRElSfSIKK2RvX2NvbXBpbGVbY2xlYW5kaXJzXSA9ICIke0J9L2JpbiAke0J9L3BrZyIKKworZG9fY29tcGlsZV9wdGVzdCgpIHsKKyAgICBleHBvcnQgVE1QRElSPSIke0dPX1RNUERJUn0iCisgICAgcm0gLWYgJHtCfS8uZ29fY29tcGlsZWRfdGVzdHMubGlzdAorCWdvX2xpc3RfcGFja2FnZV90ZXN0cyB8IHdoaWxlIHJlYWQgcGtnOyBkbworCQljZCAke0J9L3NyYy8kcGtnCisJCSR7R099IHRlc3QgJHtHT1BURVNUQlVJTERGTEFHU30gJHBrZworCQlmaW5kIC4gLW1pbmRlcHRoIDEgLW1heGRlcHRoIDEgLXR5cGUgZiAtbmFtZSAnKi50ZXN0JyAtZXhlYyBlY2hvICRwa2cve30gXDsgfCBcCisJCQlzZWQgLWUncywvXC4vLC8sJz4+ICR7Qn0vLmdvX2NvbXBpbGVkX3Rlc3RzLmxpc3QKKwlkb25lCit9Citkb19jb21waWxlX3B0ZXN0X2Jhc2VbZGlyc10gPSsgIiR7R09fVE1QRElSfSIKKworZ29fZG9faW5zdGFsbCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vZ28vc3JjLyR7R09fSU1QT1JUfQorCXRhciAtQyAke1N9L3NyYy8ke0dPX0lNUE9SVH0gLWNmIC0gLS1leGNsdWRlLXZjcyAtLWV4Y2x1ZGUgJyoudGVzdCcgLiB8IFwKKwkJdGFyIC1DICR7RH0ke2xpYmRpcn0vZ28vc3JjLyR7R09fSU1QT1JUfSAtLW5vLXNhbWUtb3duZXIgLXhmIC0KKwl0YXIgLUMgJHtCfSAtY2YgLSBwa2cgfCB0YXIgLUMgJHtEfSR7bGliZGlyfS9nbyAtLW5vLXNhbWUtb3duZXIgLXhmIC0KKworCWlmIFsgLW4gImBscyAke0J9LyR7R09fQlVJTERfQklORElSfS9gIiBdOyB0aGVuCisJCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQorCQlpbnN0YWxsIC1tIDA3NTUgJHtCfS8ke0dPX0JVSUxEX0JJTkRJUn0vKiAke0R9JHtiaW5kaXJ9LwogCWZpCiB9CiAKLWRvX2dvX2luc3RhbGwoKSB7Ci0Jcm0gLXJmICR7V09SS0RJUn0vc3RhZ2luZwotCWluc3RhbGwgLWQgJHtXT1JLRElSfS9zdGFnaW5nJHtHT1JPT1RfRklOQUx9ICR7RH0ke0dPUk9PVF9GSU5BTH0KLQl0YXIgLUMgJHtTfSAtY2YgLSAuIHwgdGFyIC1DICR7V09SS0RJUn0vc3RhZ2luZyR7R09ST09UX0ZJTkFMfSAteHB2ZiAtCi0KLQlmaW5kICR7V09SS0RJUn0vc3RhZ2luZyR7R09ST09UX0ZJTkFMfSBcKCBcCi0JCS1uYW1lIFwqLmluZGlyZWN0aW9uc3ltbGluayAtbyBcCi0JCS1uYW1lIC5naXRcKiAtbyAgICAgICAgICAgICAgICBcCi0JCS1uYW1lIC5oZyAtbyAgICAgICAgICAgICAgICAgICBcCi0JCS1uYW1lIC5zdm4gLW8gICAgICAgICAgICAgICAgICBcCi0JCS1uYW1lIC5wY1wqIC1vICAgICAgICAgICAgICAgICBcCi0JCS1uYW1lIHBhdGNoZXNcKiAgICAgICAgICAgICAgICBcCi0JCVwpIC1wcmludDAgfCBcCi0JeGFyZ3MgLXIwIHJtIC1yZgotCi0JdGFyIC1DICR7V09SS0RJUn0vc3RhZ2luZyR7R09ST09UX0ZJTkFMfSAtY2YgLSAuIHwgXAotCXRhciAtQyAke0R9JHtHT1JPT1RfRklOQUx9IC14cHZmIC0KLQotCWNob3duIC1SIHJvb3Q6cm9vdCAiJHtEfSR7R09ST09UX0ZJTkFMfSIKLQotCWlmIFsgLWUgIiR7RH0ke0dPQklOX0ZJTkFMfSIgXTsgdGhlbgotCQlpbnN0YWxsIC1kIC1tIDA3NTUgIiR7RH0ke2JpbmRpcn0iCi0JCWZpbmQgIiR7RH0ke0dPQklOX0ZJTkFMfSIgISAtdHlwZSBkIC1wcmludDAgfCB4YXJncyAtcjAgbXYgLS10YXJnZXQtZGlyZWN0b3J5PSIke0R9JHtiaW5kaXJ9IgotCQlybWRpciAtcCAiJHtEfSR7R09CSU5fRklOQUx9IiB8fCB0cnVlCi0JZmkKK2RvX2luc3RhbGxfcHRlc3RfYmFzZSgpIHsKK3NldCAteAorICAgIHRlc3QgLWYgIiR7Qn0vLmdvX2NvbXBpbGVkX3Rlc3RzLmxpc3QiIHx8IGV4aXQgMAorICAgIHRlc3RzPSIiCisgICAgd2hpbGUgcmVhZCB0ZXN0OyBkbworICAgICAgICB0ZXN0cz0iJHRlc3RzJHt0ZXN0czorIH0ke3Rlc3QlLnRlc3R9IgorICAgICAgICB0ZXN0ZGlyPWBkaXJuYW1lICR0ZXN0YAorICAgICAgICBpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9LyR0ZXN0ZGlyCisgICAgICAgIGluc3RhbGwgLW0gMDc1NSAke0J9L3NyYy8kdGVzdCAke0R9JHtQVEVTVF9QQVRIfS8kdGVzdAorICAgICAgICBpZiBbIC1kICIke0J9L3NyYy8kdGVzdGRpci90ZXN0ZGF0YSIgXTsgdGhlbgorICAgICAgICAgICAgY3AgLS1wcmVzZXJ2ZT1tb2RlLHRpbWVzdGFtcHMgLVIgIiR7Qn0vc3JjLyR0ZXN0ZGlyL3Rlc3RkYXRhIiAke0R9JHtQVEVTVF9QQVRIfS8kdGVzdGRpcgorICAgICAgICBmaQorICAgIGRvbmUgPCAke0J9Ly5nb19jb21waWxlZF90ZXN0cy5saXN0CisgICAgaWYgWyAtbiAiJHRlc3RzIiBdOyB0aGVuCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0KKyAgICAgICAgY2F0ID4ke0R9JHtQVEVTVF9QQVRIfS9ydW4tcHRlc3QgPDxFT0YKKyMhL2Jpbi9zaAorQU5ZRkFJTEVEPTAKK2ZvciB0IGluICR0ZXN0czsgZG8KKyAgICB0ZXN0ZGlyPVxgZGlybmFtZSBcJHQudGVzdFxgCisgICAgaWYgKCBjZCAiJHtQVEVTVF9QQVRIfS9cJHRlc3RkaXIiOyAiJHtQVEVTVF9QQVRIfS9cJHQudGVzdCIgJHtHT1BURVNURkxBR1N9IHwgdGVlIC9kZXYvZmQvOSB8IGdyZXAgLXEgIl5GQUlMIiApIDk+JjE7IHRoZW4KKyAgICAgICAgQU5ZRkFJTEVEPTEKKyAgICBmaQorZG9uZQoraWYgWyBcJEFOWUZBSUxFRCAtbmUgMCBdOyB0aGVuCisgICAgZWNobyAiRkFJTDogJHtQTn0iCisgICAgZXhpdCAxCitmaQorZWNobyAiUEFTUzogJHtQTn0iCitleGl0IDAKK0VPRgorICAgICAgICBjaG1vZCAreCAke0R9JHtQVEVTVF9QQVRIfS9ydW4tcHRlc3QKKyAgICBlbHNlCisgICAgICAgIHJtIC1yZiAke0R9JHtQVEVTVF9QQVRIfQorICAgIGZpCitzZXQgK3gKIH0KIAotZG9fY29tcGlsZSgpIHsKLQlkb19nb19jb21waWxlCi19CitFWFBPUlRfRlVOQ1RJT05TIGRvX3VucGFjayBkb19jb25maWd1cmUgZG9fY29tcGlsZSBkb19pbnN0YWxsCiAKLWRvX2luc3RhbGwoKSB7Ci0JZG9fZ29faW5zdGFsbAotfQorRklMRVNfJHtQTn0tZGV2ID0gIiR7bGliZGlyfS9nby9zcmMiCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgPSAiJHtsaWJkaXJ9L2dvL3BrZyIKKworSU5TQU5FX1NLSVBfJHtQTn0gKz0gImxkZmxhZ3MiCitJTlNBTkVfU0tJUF8ke1BOfS1wdGVzdCArPSAibGRmbGFncyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ29hcmNoLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dvYXJjaC5iYmNsYXNzCmluZGV4IDEyZGY4OGYuLjY2M2M5ZmYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ29hcmNoLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9nb2FyY2guYmJjbGFzcwpAQCAtMSwxNSArMSwzNyBAQAotQlVJTERfR09PUyA9ICIke0Bnb19tYXBfb3MoZC5nZXRWYXIoJ0JVSUxEX09TJywgVHJ1ZSksIGQpfSIKLUJVSUxEX0dPQVJDSCA9ICIke0Bnb19tYXBfYXJjaChkLmdldFZhcignQlVJTERfQVJDSCcsIFRydWUpLCBkKX0iCitCVUlMRF9HT09TID0gIiR7QGdvX21hcF9vcyhkLmdldFZhcignQlVJTERfT1MnKSwgZCl9IgorQlVJTERfR09BUkNIID0gIiR7QGdvX21hcF9hcmNoKGQuZ2V0VmFyKCdCVUlMRF9BUkNIJyksIGQpfSIKIEJVSUxEX0dPVFVQTEUgPSAiJHtCVUlMRF9HT09TfV8ke0JVSUxEX0dPQVJDSH0iCi1IT1NUX0dPT1MgPSAiJHtAZ29fbWFwX29zKGQuZ2V0VmFyKCdIT1NUX09TJywgVHJ1ZSksIGQpfSIKLUhPU1RfR09BUkNIID0gIiR7QGdvX21hcF9hcmNoKGQuZ2V0VmFyKCdIT1NUX0FSQ0gnLCBUcnVlKSwgZCl9IgotSE9TVF9HT0FSTSA9ICIke0Bnb19tYXBfYXJtKGQuZ2V0VmFyKCdIT1NUX0FSQ0gnLCBUcnVlKSwgZC5nZXRWYXIoJ1RVTkVfRkVBVFVSRVMnLCBUcnVlKSwgZCl9IgorSE9TVF9HT09TID0gIiR7QGdvX21hcF9vcyhkLmdldFZhcignSE9TVF9PUycpLCBkKX0iCitIT1NUX0dPQVJDSCA9ICIke0Bnb19tYXBfYXJjaChkLmdldFZhcignSE9TVF9BUkNIJyksIGQpfSIKK0hPU1RfR09BUk0gPSAiJHtAZ29fbWFwX2FybShkLmdldFZhcignSE9TVF9BUkNIJyksIGQuZ2V0VmFyKCdUVU5FX0ZFQVRVUkVTJyksIGQpfSIKK0hPU1RfR08zODYgPSAiJHtAZ29fbWFwXzM4NihkLmdldFZhcignSE9TVF9BUkNIJyksIGQuZ2V0VmFyKCdUVU5FX0ZFQVRVUkVTJyksIGQpfSIKIEhPU1RfR09UVVBMRSA9ICIke0hPU1RfR09PU31fJHtIT1NUX0dPQVJDSH0iCi1UQVJHRVRfR09PUyA9ICIke0Bnb19tYXBfb3MoZC5nZXRWYXIoJ1RBUkdFVF9PUycsIFRydWUpLCBkKX0iCi1UQVJHRVRfR09BUkNIID0gIiR7QGdvX21hcF9hcmNoKGQuZ2V0VmFyKCdUQVJHRVRfQVJDSCcsIFRydWUpLCBkKX0iCi1UQVJHRVRfR09BUk0gPSAiJHtAZ29fbWFwX2FybShkLmdldFZhcignVEFSR0VUX0FSQ0gnLCBUcnVlKSwgZC5nZXRWYXIoJ1RVTkVfRkVBVFVSRVMnLCBUcnVlKSwgZCl9IgorVEFSR0VUX0dPT1MgPSAiJHtAZ29fbWFwX29zKGQuZ2V0VmFyKCdUQVJHRVRfT1MnKSwgZCl9IgorVEFSR0VUX0dPQVJDSCA9ICIke0Bnb19tYXBfYXJjaChkLmdldFZhcignVEFSR0VUX0FSQ0gnKSwgZCl9IgorVEFSR0VUX0dPQVJNID0gIiR7QGdvX21hcF9hcm0oZC5nZXRWYXIoJ1RBUkdFVF9BUkNIJyksIGQuZ2V0VmFyKCdUVU5FX0ZFQVRVUkVTJyksIGQpfSIKK1RBUkdFVF9HTzM4NiA9ICIke0Bnb19tYXBfMzg2KGQuZ2V0VmFyKCdUQVJHRVRfQVJDSCcpLCBkLmdldFZhcignVFVORV9GRUFUVVJFUycpLCBkKX0iCiBUQVJHRVRfR09UVVBMRSA9ICIke1RBUkdFVF9HT09TfV8ke1RBUkdFVF9HT0FSQ0h9IgotR09fQlVJTERfQklORElSID0gIiR7QFsnYmluLyR7SE9TVF9HT1RVUExFfScsJ2JpbiddW2QuZ2V0VmFyKCdCVUlMRF9HT1RVUExFJyxUcnVlKSA9PSBkLmdldFZhcignSE9TVF9HT1RVUExFJyxUcnVlKV19IgorR09fQlVJTERfQklORElSID0gIiR7QFsnYmluLyR7SE9TVF9HT1RVUExFfScsJ2JpbiddW2QuZ2V0VmFyKCdCVUlMRF9HT1RVUExFJykgPT0gZC5nZXRWYXIoJ0hPU1RfR09UVVBMRScpXX0iCisKKyMgR28gc3VwcG9ydHMgZHluYW1pYyBsaW5raW5nIG9uIGEgbGltaXRlZCBzZXQgb2YgYXJjaGl0ZWN0dXJlcy4KKyMgU2VlIHRoZSBzdXBwb3J0c0R5bmxpbmsgZnVuY3Rpb24gaW4gZ28vc3JjL2NtZC9jb21waWxlL2ludGVybmFsL2djL21haW4uZ28KK0dPX0RZTkxJTksgPSAiIgorR09fRFlOTElOS19hcm0gPSAiMSIKK0dPX0RZTkxJTktfYWFyY2g2NCA9ICIxIgorR09fRFlOTElOS194ODYgPSAiMSIKK0dPX0RZTkxJTktfeDg2LTY0ID0gIjEiCitHT19EWU5MSU5LX3Bvd2VycGM2NCA9ICIxIgorR09fRFlOTElOS19jbGFzcy1uYXRpdmUgPSAiIgorCisjIGRlZmluZSBoZXJlIGJlY2F1c2UgZXZlcnlib2R5IGluaGVyaXRzIHRoaXMgY2xhc3MKKyMKK0NPTVBBVElCTEVfSE9TVF9saW51eC1nbnV4MzIgPSAibnVsbCIKK0NPTVBBVElCTEVfSE9TVF9saW51eC1tdXNseDMyID0gIm51bGwiCitDT01QQVRJQkxFX0hPU1RfcG93ZXJwYyA9ICJudWxsIgorQ09NUEFUSUJMRV9IT1NUX3Bvd2VycGM2NCA9ICJudWxsIgorQ09NUEFUSUJMRV9IT1NUX21pcHNhcmNobjMyID0gIm51bGwiCitBUk1fSU5TVFJVQ1RJT05fU0VUID0gImFybSIKK1RVTkVfQ0NBUkdTX3JlbW92ZSA9ICItbWFyY2g9bWlwczMycjIiCiAKIGRlZiBnb19tYXBfYXJjaChhLCBkKToKICAgICBpbXBvcnQgcmUKQEAgLTIxLDE0ICs0MywxNCBAQAogICAgICAgICByZXR1cm4gJ2FybScKICAgICBlbGlmIHJlLm1hdGNoKCdhYXJjaDY0LionLCBhKToKICAgICAgICAgcmV0dXJuICdhcm02NCcKLSAgICBlbGlmIHJlLm1hdGNoKCdtaXBzNjRlbConLCBhKToKKyAgICBlbGlmIHJlLm1hdGNoKCdtaXBzNjRlbC4qJywgYSk6CiAgICAgICAgIHJldHVybiAnbWlwczY0bGUnCi0gICAgZWxpZiByZS5tYXRjaCgnbWlwczY0KicsIGEpOgorICAgIGVsaWYgcmUubWF0Y2goJ21pcHM2NC4qJywgYSk6CiAgICAgICAgIHJldHVybiAnbWlwczY0JwotICAgIGVsaWYgcmUubWF0Y2goJ21pcHNlbConLCBhKToKLSAgICAgICAgcmV0dXJuICdtaXBzbGUnCi0gICAgZWxpZiByZS5tYXRjaCgnbWlwcyonLCBhKToKKyAgICBlbGlmIGEgPT0gJ21pcHMnOgogICAgICAgICByZXR1cm4gJ21pcHMnCisgICAgZWxpZiBhID09ICdtaXBzZWwnOgorICAgICAgICByZXR1cm4gJ21pcHNsZScKICAgICBlbGlmIHJlLm1hdGNoKCdwKHBjfG93ZXJwYykoNjQpJywgYSk6CiAgICAgICAgIHJldHVybiAncHBjNjQnCiAgICAgZWxpZiByZS5tYXRjaCgncChwY3xvd2VycGMpKDY0ZWwpJywgYSk6CkBAIC00Myw2ICs2NSwxNyBAQAogICAgICAgICAgICAgcmV0dXJuICc3JwogICAgICAgICBlbGlmICdhcm12NicgaW4gZjoKICAgICAgICAgICAgIHJldHVybiAnNicKKyAgICAgICAgZWxpZiAnYXJtdjUnIGluIGY6CisgICAgICAgICAgICByZXR1cm4gJzUnCisgICAgcmV0dXJuICcnCisKK2RlZiBnb19tYXBfMzg2KGEsIGYsIGQpOgorICAgIGltcG9ydCByZQorICAgIGlmIHJlLm1hdGNoKCdpLjg2JywgYSk6CisgICAgICAgIGlmICgnY29yZTInIGluIGYpIG9yICgnY29yZWk3JyBpbiBmKToKKyAgICAgICAgICAgIHJldHVybiAnc3NlMicKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiAnMzg3JwogICAgIHJldHVybiAnJwogCiBkZWYgZ29fbWFwX29zKG8sIGQpOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9ncnViLWVmaS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9ncnViLWVmaS5iYmNsYXNzCmluZGV4IGRmN2ZlMTguLjYxMDQ3OWIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ3J1Yi1lZmkuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2dydWItZWZpLmJiY2xhc3MKQEAgLTE3LDcgKzE3LDYgQEAKICMgJHtHUlVCX1JPT1R9IC0gZ3J1YidzIHJvb3QgZGV2aWNlLgogCiBkb19ib290aW1nW2RlcGVuZHNdICs9ICIke01MUFJFRklYfWdydWItZWZpOmRvX2RlcGxveSIKLWRvX2Jvb3RkaXJlY3RkaXNrW2RlcGVuZHNdICs9ICIke01MUFJFRklYfWdydWItZWZpOmRvX2RlcGxveSIKIAogR1JVQl9TRVJJQUwgPz0gImNvbnNvbGU9dHR5UzAsMTE1MjAwIgogR1JVQl9DRkdfVk0gPSAiJHtTfS9ncnViX3ZtLmNmZyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvZ3RrLWRvYy5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9ndGstZG9jLmJiY2xhc3MKaW5kZXggMGFlMjcyOS4uNTIwMWM3MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9ndGstZG9jLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9ndGstZG9jLmJiY2xhc3MKQEAgLTQ4LDYgKzQ4LDcgQEAKICMgd2hpY2ggbWF5IHRoZW4gZ2V0IGRlbGV0ZWQgKG9yIHRoZWlyIGRlcGVuZGVuY2llcykgYW5kIHBvdGVudGlhbGx5IHNlZ2ZhdWx0CiBleHBvcnQgR0lPX01PRFVMRV9ESVI9JHtTVEFHSU5HX0xJQkRJUn0vZ2lvL21vZHVsZXMtZHVtbXkKIAorR0lSX0VYVFJBX0xJQlNfUEFUSD1cYGZpbmQgJHtCfSAtbmFtZSAqLnNvIC1wcmludGYgIiVoXG4ifHNvcnR8dW5pcXwgdHIgJ1xuJyAnOidcYFwkR0lSX0VYVFJBX0xJQlNfUEFUSAogR0lSX0VYVFJBX0xJQlNfUEFUSD1cYGZpbmQgJHtCfSAtbmFtZSAubGlic3wgdHIgJ1xuJyAnOidcYFwkR0lSX0VYVFJBX0xJQlNfUEFUSAogCiBpZiBbIC1kICIubGlicyIgXTsgdGhlbgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pY2VjYy5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pY2VjYy5iYmNsYXNzCmluZGV4IDc3YmY2MTEuLjFjYzFjNGQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaWNlY2MuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ljZWNjLmJiY2xhc3MKQEAgLTExNiw3ICsxMTYsNyBAQAogICAgICMgZm9yIG9uZSByZWFzb24gb3IgdGhlIG90aGVyCiAgICAgIyB0aGlzIGlzIHRoZSBvbGQgbGlzdCAod2hpY2ggZG9lc24ndCBzZWVtIHRvIGJlIHZhbGlkIGFueW1vcmUsIGJlY2F1c2UgSSB3YXMgYWJsZSB0byBidWlsZAogICAgICMgYWxsIHRoZXNlIHdpdGggaWNlY2MgZW5hYmxlZCkKLSAgICAjIHN5c3RlbV9wYWNrYWdlX2JsYWNrbGlzdCA9IFsgInVjbGliYyIsICJnbGliYyIsICJnY2MiLCAiYmluZCIsICJ1LWJvb3QiLCAiZGhjcC1mb3J3YXJkZXIiLCAiZW5jaGFudCIsICJjb25ubWFuIiwgIm9yYml0MiIgXQorICAgICMgc3lzdGVtX3BhY2thZ2VfYmxhY2tsaXN0ID0gWyAiZ2xpYmMiLCAiZ2NjIiwgImJpbmQiLCAidS1ib290IiwgImRoY3AtZm9yd2FyZGVyIiwgImVuY2hhbnQiLCAiY29ubm1hbiIsICJvcmJpdDIiIF0KICAgICAjIHdoZW4gYWRkaW5nIG5ldyBlbnRyeSwgcGxlYXNlIGRvY3VtZW50IHdoeSAoaG93IGl0IGZhaWxlZCkgc28gdGhhdCB3ZSBjYW4gcmUtZXZhbHVhdGUgaXQgbGF0ZXIKICAgICAjIGUuZy4gd2hlbiB0aGVyZSBpcyBuZXcgdmVyc2lvbgogICAgICMgYnVpbGRpbmcgbGliZ2NjLWluaXRpYWwgd2l0aCBpY2VjYyBmYWlscyB3aXRoIENQUCBzYW5pdHkgY2hlY2sgZXJyb3IgaWYgaG9zdCBzeXNyb290IGNvbnRhaW5zIGNyb3NzIGdjYyBidWlsdCBmb3IgYW5vdGhlciB0YXJnZXQgdHVuZS92YXJpYW50CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlLWxpdmUuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UtbGl2ZS5iYmNsYXNzCmluZGV4IGEzZDFiNGUuLjE2MjNjMTUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UtbGl2ZS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UtbGl2ZS5iYmNsYXNzCkBAIC0zNCwyMCArMzQsMjEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICR7TUxQUkVGSVh9c3lzbGludXg6ZG9fcG9wdWxhdGVfc3lzcm9vdCBcCiAgICAgICAgICAgICAgICAgICAgICAgICBzeXNsaW51eC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAke0BvZS51dGlscy5pZmVsc2UoZC5nZXRWYXIoJ0NPTVBSRVNTSVNPJywgRmFsc2UpLCd6aXNvZnMtdG9vbHMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QnLCcnKX0gXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtQTn06ZG9faW1hZ2VfZXh0NCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke1BOfTpkb19pbWFnZV8ke0BkLmdldFZhcignTElWRV9ST09URlNfVFlQRScpLnJlcGxhY2UoJy0nLCAnXycpfSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAiCiAKIAogTEFCRUxTX0xJVkUgPz0gImJvb3QgaW5zdGFsbCIKIFJPT1RfTElWRSA/PSAicm9vdD0vZGV2L3JhbTAiCi1JTklUUkRfSU1BR0VfTElWRSA/PSAiY29yZS1pbWFnZS1taW5pbWFsLWluaXRyYW1mcyIKK0lOSVRSRF9JTUFHRV9MSVZFID89ICIke01MUFJFRklYfWNvcmUtaW1hZ2UtbWluaW1hbC1pbml0cmFtZnMiCiBJTklUUkRfTElWRSA/PSAiJHtERVBMT1lfRElSX0lNQUdFfS8ke0lOSVRSRF9JTUFHRV9MSVZFfS0ke01BQ0hJTkV9LmNwaW8uZ3oiCiAKLVJPT1RGUyA/PSAiJHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTElOS19OQU1FfS5leHQ0IgorTElWRV9ST09URlNfVFlQRSA/PSAiZXh0NCIKK1JPT1RGUyA/PSAiJHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTElOS19OQU1FfS4ke0xJVkVfUk9PVEZTX1RZUEV9IgogCi1JTUFHRV9UWVBFREVQX2xpdmUgPSAiZXh0NCIKLUlNQUdFX1RZUEVERVBfaXNvID0gImV4dDQiCi1JTUFHRV9UWVBFREVQX2hkZGltZyA9ICJleHQ0IgorSU1BR0VfVFlQRURFUF9saXZlID0gIiR7TElWRV9ST09URlNfVFlQRX0iCitJTUFHRV9UWVBFREVQX2lzbyA9ICIke0xJVkVfUk9PVEZTX1RZUEV9IgorSU1BR0VfVFlQRURFUF9oZGRpbWcgPSAiJHtMSVZFX1JPT1RGU19UWVBFfSIKIElNQUdFX1RZUEVTX01BU0tFRCArPSAibGl2ZSBoZGRpbWcgaXNvIgogCiBweXRob24oKSB7CkBAIC05MSw3ICs5Miw3IEBACiAJZm9yIGZzIGluICR7SU5JVFJEfQogCWRvCiAJCWlmIFsgISAtcyAiJGZzIiBdOyB0aGVuCi0JCQliYm5vdGUgIklTTyBpbWFnZSB3aWxsIG5vdCBiZSBjcmVhdGVkLiAkZnMgaXMgaW52YWxpZC4iCisJCQliYndhcm4gIklTTyBpbWFnZSB3aWxsIG5vdCBiZSBjcmVhdGVkLiAkZnMgaXMgaW52YWxpZC4iCiAJCQlyZXR1cm4KIAkJZmkKIAlkb25lCkBAIC0yMTYsMTAgKzIxNywxMCBAQAogCWZpCiAKIAlpZiBbIC16ICIke0hERElNR19JRH0iIF07IHRoZW4KLQkJbWtkb3NmcyAke0ZBVFNJWkV9IC1uICR7Qk9PVElNR19WT0xVTUVfSUR9IC1TIDUxMiAtQyAke0ZBVElNR30gXAorCQlta2Rvc2ZzICR7RkFUU0laRX0gLW4gJHtCT09USU1HX1ZPTFVNRV9JRH0gJHtNS0RPU0ZTX0VYVFJBT1BUU30gLUMgJHtGQVRJTUd9IFwKIAkJCSR7QkxPQ0tTfQogCWVsc2UKLQkJbWtkb3NmcyAke0ZBVFNJWkV9IC1uICR7Qk9PVElNR19WT0xVTUVfSUR9IC1TIDUxMiAtQyAke0ZBVElNR30gXAorCQlta2Rvc2ZzICR7RkFUU0laRX0gLW4gJHtCT09USU1HX1ZPTFVNRV9JRH0gJHtNS0RPU0ZTX0VYVFJBT1BUU30gLUMgJHtGQVRJTUd9IFwKIAkJJHtCTE9DS1N9IC1pICR7SERESU1HX0lEfQogCWZpCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UtcHJlbGluay5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS1wcmVsaW5rLmJiY2xhc3MKaW5kZXggNDE1N2RmMC4uZjNiYjY4YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS1wcmVsaW5rLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS1wcmVsaW5rLmJiY2xhc3MKQEAgLTEsNiArMSw2IEBACiBkb19yb290ZnNbZGVwZW5kc10gKz0gInByZWxpbmstbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCiAKLUlNQUdFX1BSRVBST0NFU1NfQ09NTUFORCArPSAicHJlbGlua19zZXR1cDsgcHJlbGlua19pbWFnZTsgIgorSU1BR0VfUFJFUFJPQ0VTU19DT01NQU5EX2FwcGVuZF9saWJjLWdsaWJjID0gIiBwcmVsaW5rX3NldHVwOyBwcmVsaW5rX2ltYWdlOyAiCiAKIHB5dGhvbiBwcmVsaW5rX3NldHVwICgpIHsKICAgICBvZS51dGlscy53cml0ZV9sZF9zb19jb25mKGQpCkBAIC0zNiw3ICszNiwxNyBAQAogCWR5bmFtaWNfbG9hZGVyPSQobGludXhsb2FkZXIpCiAKIAkjIHByZWxpbmshCi0JJHtTVEFHSU5HX1NCSU5ESVJfTkFUSVZFfS9wcmVsaW5rIC0tcm9vdCAke0lNQUdFX1JPT1RGU30gLWFtUiAtTiAtYyAke3N5c2NvbmZkaXJ9L3ByZWxpbmsuY29uZiAtLWR5bmFtaWMtbGlua2VyICRkeW5hbWljX2xvYWRlcgorCWlmIFsgIiRCVUlMRF9SRVBST0RVQ0lCTEVfQklOQVJJRVMiID0gIjEiIF07IHRoZW4KKwkJYmJub3RlICIgcHJlbGluazogQlVJTERfUkVQUk9EVUNJQkxFX0JJTkFSSUVTLi4uIgorCQlpZiBbICIkUkVQUk9EVUNJQkxFX1RJTUVTVEFNUF9ST09URlMiID0gIiIgXTsgdGhlbgorCQkJZXhwb3J0IFBSRUxJTktfVElNRVNUQU1QPWBnaXQgbG9nIC0xIC0tcHJldHR5PSVjdCBgCisJCWVsc2UKKwkJCWV4cG9ydCBQUkVMSU5LX1RJTUVTVEFNUD0kUkVQUk9EVUNJQkxFX1RJTUVTVEFNUF9ST09URlMKKwkJZmkKKwkJJHtTVEFHSU5HX1NCSU5ESVJfTkFUSVZFfS9wcmVsaW5rIC0tcm9vdCAke0lNQUdFX1JPT1RGU30gLWFtIC1OIC1jICR7c3lzY29uZmRpcn0vcHJlbGluay5jb25mIC0tZHluYW1pYy1saW5rZXIgJGR5bmFtaWNfbG9hZGVyCisJZWxzZQorCQkke1NUQUdJTkdfU0JJTkRJUl9OQVRJVkV9L3ByZWxpbmsgLS1yb290ICR7SU1BR0VfUk9PVEZTfSAtYW1SIC1OIC1jICR7c3lzY29uZmRpcn0vcHJlbGluay5jb25mIC0tZHluYW1pYy1saW5rZXIgJGR5bmFtaWNfbG9hZGVyCisJZmkKIAogCSMgUmVtb3ZlIHRoZSBwcmVsaW5rLmNvbmYgaWYgd2UgaGFkIHRvIGFkZCBpdC4KIAlpZiBbICIkZHVtbXlfcHJlbGlua19jb25mIiA9ICJ0cnVlIiBdOyB0aGVuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlLXZtLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlLXZtLmJiY2xhc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4YmQ5MjAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS12bS5iYmNsYXNzCisrKyAvZGV2L251bGwKQEAgLTEsMTcxICswLDAgQEAKLSMgaW1hZ2Utdm0uYmJjbGFzcwotIyAobG9vc2x5IGJhc2VkIG9mZiBpbWFnZS1saXZlLmJiY2xhc3MgQ29weXJpZ2h0IChDKSAyMDA0LCBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuKQotIwotIyBDcmVhdGUgYW4gaW1hZ2Ugd2hpY2ggY2FuIGJlIHBsYWNlZCBkaXJlY3RseSBvbnRvIGEgaGFyZGRpc2sgdXNpbmcgZGQgYW5kIHRoZW4KLSMgYm9vdGVkLgotIwotIyBUaGlzIHVzZXMgc3lzbGludXguIGV4dGxpbnV4IHdvdWxkIGhhdmUgYmVlbiBuaWNlIGJ1dCByZXF1aXJlZCB0aGUgZXh0Mi8zCi0jIHBhcnRpdGlvbiB0byBiZSBtb3VudGVkLiBncnViIHJlcXVpcmVzIHRvIHJ1biBpdHNlbGYgYXMgcGFydCBvZiB0aGUgaW5zdGFsbAotIyBwcm9jZXNzLgotIwotIyBUaGUgZW5kIHJlc3VsdCBpcyBhIDUxMiBib290IHNlY3RvciBwb3B1bGF0ZWQgd2l0aCBhbiBNQlIgYW5kIHBhcnRpdGlvbiB0YWJsZQotIyBmb2xsb3dlZCBieSBhbiBtc2RvcyBmYXQxNiBwYXJ0aXRpb24gY29udGFpbmluZyBzeXNsaW51eCBhbmQgYSBsaW51eCBrZXJuZWwKLSMgY29tcGxldGVkIGJ5IHRoZSBleHQyLzMgcm9vdGZzLgotIwotIyBXZSBoYXZlIHRvIHB1c2ggdGhlIG1zZG9zIHBhcml0aW9uIHRhYmxlIHNpemUgPiAxNk1CIHNvIGZhdCAxNiBpcyB1c2VkIGFzIHBhcnRlZAotIyB3b24ndCB0b3VjaCBmYXQxMiBwYXJ0aXRpb25zLgotCi1pbmhlcml0IGxpdmUtdm0tY29tbW9uCi0KLWRvX2Jvb3RkaXJlY3RkaXNrW2RlcGVuZHNdICs9ICJkb3Nmc3Rvb2xzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXJ0dWFsL2tlcm5lbDpkb19kZXBsb3kgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c2xpbnV4OmRvX3BvcHVsYXRlX3N5c3Jvb3QgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c2xpbnV4LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0ZWQtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10b29scy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtQTn06ZG9faW1hZ2VfJHtWTV9ST09URlNfVFlQRX0gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKLQotSU1BR0VfVFlQRURFUF92bWRrID0gIiR7Vk1fUk9PVEZTX1RZUEV9IgotSU1BR0VfVFlQRURFUF92ZGkgPSAiJHtWTV9ST09URlNfVFlQRX0iCi1JTUFHRV9UWVBFREVQX3Fjb3cyID0gIiR7Vk1fUk9PVEZTX1RZUEV9IgotSU1BR0VfVFlQRURFUF9oZGRkaXJlY3QgPSAiJHtWTV9ST09URlNfVFlQRX0iCi1JTUFHRV9UWVBFU19NQVNLRUQgKz0gInZtZGsgdmRpIHFjb3cyIGhkZGRpcmVjdCIKLQotVk1fUk9PVEZTX1RZUEUgPz0gImV4dDQiCi1ST09URlMgPz0gIiR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX0xJTktfTkFNRX0uJHtWTV9ST09URlNfVFlQRX0iCi0KLSMgVXNlZCBieSBib290bG9hZGVyCi1MQUJFTFNfVk0gPz0gImJvb3QiCi1ST09UX1ZNID89ICJyb290PS9kZXYvc2RhMiIKLSMgVXNpbmcgYW4gaW5pdHJhbWZzIGlzIG9wdGlvbmFsLiBFbmFibGUgaXQgYnkgc2V0dGluZyBJTklUUkRfSU1BR0VfVk0uCi1JTklUUkRfSU1BR0VfVk0gPz0gIiIKLUlOSVRSRF9WTSA/PSAiJHtAJyR7SU1HREVQTE9ZRElSfS8ke0lOSVRSRF9JTUFHRV9WTX0tJHtNQUNISU5FfS5jcGlvLmd6JyBpZiAnJHtJTklUUkRfSU1BR0VfVk19JyBlbHNlICcnfSIKLWRvX2Jvb3RkaXJlY3RkaXNrW2RlcGVuZHNdICs9ICIke0AnJHtJTklUUkRfSU1BR0VfVk19OmRvX2ltYWdlX2NvbXBsZXRlJyBpZiAnJHtJTklUUkRfSU1BR0VfVk19JyBlbHNlICcnfSIKLQotQk9PVEREX1ZPTFVNRV9JRCAgID89ICJib290IgotQk9PVEREX0VYVFJBX1NQQUNFID89ICIxNjM4NCIKLQotRElTS19TSUdOQVRVUkUgPz0gIiR7RElTS19TSUdOQVRVUkVfR0VORVJBVEVEfSIKLURJU0tfU0lHTkFUVVJFW3ZhcmRlcHNleGNsdWRlXSA9ICJESVNLX1NJR05BVFVSRV9HRU5FUkFURUQiCi0KLWJ1aWxkX2Jvb3RfZGQoKSB7Ci0JSERERElSPSIke1N9L2hkZC9ib290IgotCUhERElNRz0iJHtTfS9oZGQuaW1hZ2UiCi0JSU1BR0U9JHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0uaGRkZGlyZWN0Ci0KLQlwb3B1bGF0ZV9rZXJuZWwgJEhERERJUgotCi0JaWYgWyAiJHtQQ0JJT1N9IiA9ICIxIiBdOyB0aGVuCi0JCXN5c2xpbnV4X2hkZGltZ19wb3B1bGF0ZSAkSERERElSCi0JZmkKLQlpZiBbICIke0VGSX0iID0gIjEiIF07IHRoZW4KLQkJZWZpX2hkZGltZ19wb3B1bGF0ZSAkSERERElSCi0JZmkKLQotCUJMT0NLUz1gZHUgLWJrcyAkSERERElSIHwgY3V0IC1mIDFgCi0JQkxPQ0tTPWBleHByICRCTE9DS1MgKyAke0JPT1RERF9FWFRSQV9TUEFDRX1gCi0KLQkjIFJlbW92ZSBpdCBzaW5jZSBta2Rvc2ZzIHdvdWxkIGZhaWwgd2hlbiBpdCBleGlzdHMKLQlybSAtZiAkSERESU1HCi0JbWtkb3NmcyAtbiAke0JPT1RERF9WT0xVTUVfSUR9IC1TIDUxMiAtQyAkSERESU1HICRCTE9DS1MgCi0JbWNvcHkgLWkgJEhERElNRyAtcyAkSERERElSLyogOjovCi0KLQlpZiBbICIke1BDQklPU30iID0gIjEiIF07IHRoZW4KLQkJc3lzbGludXhfaGRkZGlyZWN0X2luc3RhbGwgJEhERElNRwotCWZpCQotCWNobW9kIDY0NCAkSERESU1HCi0KLQlST09URlNCTE9DS1M9YGR1IC1MYmtzICR7Uk9PVEZTfSB8IGN1dCAtZiAxYAotCVRPVEFMU0laRT1gZXhwciAkQkxPQ0tTICsgJFJPT1RGU0JMT0NLU2AKLQlFTkQxPWBleHByICRCTE9DS1MgXCogMTAyNGAKLQlFTkQyPWBleHByICRFTkQxICsgNTEyYAotCUVORDM9YGV4cHIgXCggJFJPT1RGU0JMT0NLUyBcKiAxMDI0IFwpICsgJEVORDFgCi0KLQllY2hvICRST09URlNCTE9DS1MgJFRPVEFMU0laRSAkRU5EMSAkRU5EMiAkRU5EMwotCXJtIC1yZiAkSU1BR0UKLQlkZCBpZj0vZGV2L3plcm8gb2Y9JElNQUdFIGJzPTEwMjQgc2Vlaz0kVE9UQUxTSVpFIGNvdW50PTEKLQotCXBhcnRlZCAkSU1BR0UgbWtsYWJlbCBtc2RvcwotCXBhcnRlZCAkSU1BR0UgbWtwYXJ0IHByaW1hcnkgZmF0MTYgMCAke0VORDF9QgotCXBhcnRlZCAkSU1BR0UgdW5pdCBCIG1rcGFydCBwcmltYXJ5IGV4dDIgJHtFTkQyfUIgJHtFTkQzfUIKLQlwYXJ0ZWQgJElNQUdFIHNldCAxIGJvb3Qgb24gCi0KLQlwYXJ0ZWQgJElNQUdFIHByaW50Ci0KLQlhd2sgIkJFR0lOIHsgcHJpbnRmIFwiJChlY2hvICR7RElTS19TSUdOQVRVUkV9IHwgc2VkICdzL1woLi5cKVwoLi5cKVwoLi5cKVwoLi5cKS9cXHhcNFxceFwzXFx4XDJcXHhcMS8nKVwiIH0iIHwgXAotCQlkZCBvZj0kSU1BR0UgYnM9MSBzZWVrPTQ0MCBjb252PW5vdHJ1bmMKLQotCU9GRlNFVD1gZXhwciAkRU5EMiAvIDUxMmAKLQlpZiBbICIke1BDQklPU30iID0gIjEiIF07IHRoZW4KLQkJZGQgaWY9JHtTVEFHSU5HX0RBVEFESVJ9L3N5c2xpbnV4L21ici5iaW4gb2Y9JElNQUdFIGNvbnY9bm90cnVuYwotCWZpCi0KLQlkZCBpZj0kSERESU1HIG9mPSRJTUFHRSBjb252PW5vdHJ1bmMgc2Vlaz0xIGJzPTUxMgotCWRkIGlmPSR7Uk9PVEZTfSBvZj0kSU1BR0UgY29udj1ub3RydW5jIHNlZWs9JE9GRlNFVCBicz01MTIKLQotCWNkICR7SU1HREVQTE9ZRElSfQotCi0JbG4gLXNmICR7SU1BR0VfTkFNRX0uaGRkZGlyZWN0ICR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX0xJTktfTkFNRX0uaGRkZGlyZWN0Ci19IAotCi1weXRob24gZG9fYm9vdGRpcmVjdGRpc2soKSB7Ci0gICAgdmFsaWRhdGVfZGlza19zaWduYXR1cmUoZCkKLSAgICBzZXRfbGl2ZV92bV92YXJzKGQsICdWTScpCi0gICAgaWYgZC5nZXRWYXIoIlBDQklPUyIpID09ICIxIjoKLSAgICAgICAgYmIuYnVpbGQuZXhlY19mdW5jKCdidWlsZF9zeXNsaW51eF9jZmcnLCBkKQotICAgIGlmIGQuZ2V0VmFyKCJFRkkiKSA9PSAiMSI6Ci0gICAgICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygnYnVpbGRfZWZpX2NmZycsIGQpCi0gICAgYmIuYnVpbGQuZXhlY19mdW5jKCdidWlsZF9ib290X2RkJywgZCkKLX0KLQotZGVmIGdlbmVyYXRlX2Rpc2tfc2lnbmF0dXJlKCk6Ci0gICAgaW1wb3J0IHV1aWQKLQotICAgIHNpZ25hdHVyZSA9IHN0cih1dWlkLnV1aWQ0KCkpWzo4XQotCi0gICAgaWYgc2lnbmF0dXJlICE9ICcwMDAwMDAwMCc6Ci0gICAgICAgIHJldHVybiBzaWduYXR1cmUKLSAgICBlbHNlOgotICAgICAgICByZXR1cm4gJ2ZmZmZmZmZmJwotCi1kZWYgdmFsaWRhdGVfZGlza19zaWduYXR1cmUoZCk6Ci0gICAgaW1wb3J0IHJlCi0KLSAgICBkaXNrX3NpZ25hdHVyZSA9IGQuZ2V0VmFyKCJESVNLX1NJR05BVFVSRSIpCi0KLSAgICBpZiBub3QgcmUubWF0Y2gocideWzAtOWEtZkEtRl17OH0kJywgZGlza19zaWduYXR1cmUpOgotICAgICAgICBiYi5mYXRhbCgiRElTS19TSUdOQVRVUkUgJyVzJyBtdXN0IGJlIGFuIDggZGlnaXQgaGV4IHN0cmluZyIgJSBkaXNrX3NpZ25hdHVyZSkKLQotRElTS19TSUdOQVRVUkVfR0VORVJBVEVEIDo9ICIke0BnZW5lcmF0ZV9kaXNrX3NpZ25hdHVyZSgpfSIKLQotcnVuX3FlbXVfaW1nICgpewotICAgIHR5cGU9IiQxIgotICAgIHFlbXUtaW1nIGNvbnZlcnQgLU8gJHR5cGUgJHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTElOS19OQU1FfS5oZGRkaXJlY3QgJHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0uJHR5cGUKLQotICAgIGxuIC1zZiAke0lNQUdFX05BTUV9LiR0eXBlICR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX0xJTktfTkFNRX0uJHR5cGUKLX0KLWNyZWF0ZV92bWRrX2ltYWdlICgpIHsKLSAgICBydW5fcWVtdV9pbWcgdm1kawotfQotCi1jcmVhdGVfdmRpX2ltYWdlICgpIHsKLSAgICBydW5fcWVtdV9pbWcgdmRpCi19Ci0KLWNyZWF0ZV9xY293Ml9pbWFnZSAoKSB7Ci0gICAgcnVuX3FlbXVfaW1nIHFjb3cyCi19Ci0KLXB5dGhvbiBkb192bWltZygpIHsKLSAgICBpZiAndm1kaycgaW4gZC5nZXRWYXIoJ0lNQUdFX0ZTVFlQRVMnKToKLSAgICAgICAgYmIuYnVpbGQuZXhlY19mdW5jKCdjcmVhdGVfdm1ka19pbWFnZScsIGQpCi0gICAgaWYgJ3ZkaScgaW4gZC5nZXRWYXIoJ0lNQUdFX0ZTVFlQRVMnKToKLSAgICAgICAgYmIuYnVpbGQuZXhlY19mdW5jKCdjcmVhdGVfdmRpX2ltYWdlJywgZCkKLSAgICBpZiAncWNvdzInIGluIGQuZ2V0VmFyKCdJTUFHRV9GU1RZUEVTJyk6Ci0gICAgICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygnY3JlYXRlX3Fjb3cyX2ltYWdlJywgZCkKLX0KLQotYWRkdGFzayBib290ZGlyZWN0ZGlzayBiZWZvcmUgZG9fdm1pbWcKLWFkZHRhc2sgdm1pbWcgYWZ0ZXIgZG9fYm9vdGRpcmVjdGRpc2sgYmVmb3JlIGRvX2ltYWdlX2NvbXBsZXRlCi1kb192bWltZ1tkZXBlbmRzXSArPSAicWVtdS1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UuYmJjbGFzcwppbmRleCA0YmNmYjg3Li5kODhjZTVjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS5iYmNsYXNzCkBAIC05LDcgKzksNyBAQAogVE9PTENIQUlOX1RBUkdFVF9UQVNLX0FUVEVNUFRPTkxZICs9ICIke1BBQ0tBR0VfSU5TVEFMTF9BVFRFTVBUT05MWX0iCiBQT1BVTEFURV9TREtfUE9TVF9UQVJHRVRfQ09NTUFORCArPSAicm9vdGZzX3N5c3Jvb3RfcmVsYXRpdmVsaW5rczsgIgogCi1MSUNFTlNFID0gIk1JVCIKK0xJQ0VOU0UgPz0gIk1JVCIKIFBBQ0tBR0VTID0gIiIKIERFUEVORFMgKz0gIiR7TUxQUkVGSVh9cWVtdXdyYXBwZXItY3Jvc3MgZGVwbW9kd3JhcHBlci1jcm9zcyIKIFJERVBFTkRTICs9ICIke1BBQ0tBR0VfSU5TVEFMTH0gJHtMSU5HVUFTX0lOU1RBTEx9IgpAQCAtMzMsNyArMzMsNyBAQAogCiAjIFRoZXNlIHBhY2thZ2VzIHdpbGwgYmUgcmVtb3ZlZCBmcm9tIGEgcmVhZC1vbmx5IHJvb3RmcyBhZnRlciBhbGwgb3RoZXIKICMgcGFja2FnZXMgaGF2ZSBiZWVuIGluc3RhbGxlZAotUk9PVEZTX1JPX1VOTkVFREVEID0gInVwZGF0ZS1yYy5kIGJhc2UtcGFzc3dkIHNoYWRvdyAke1ZJUlRVQUwtUlVOVElNRV91cGRhdGUtYWx0ZXJuYXRpdmVzfSAke1JPT1RGU19CT09UU1RSQVBfSU5TVEFMTH0iCitST09URlNfUk9fVU5ORUVERUQgPz89ICJ1cGRhdGUtcmMuZCBiYXNlLXBhc3N3ZCBzaGFkb3cgJHtWSVJUVUFMLVJVTlRJTUVfdXBkYXRlLWFsdGVybmF0aXZlc30gJHtST09URlNfQk9PVFNUUkFQX0lOU1RBTEx9IgogCiAjIHBhY2thZ2VzIHRvIGluc3RhbGwgZnJvbSBmZWF0dXJlcwogRkVBVFVSRV9JTlNUQUxMID0gIiR7QCcgJy5qb2luKG9lLnBhY2thZ2Vncm91cC5yZXF1aXJlZF9wYWNrYWdlcyhvZS5kYXRhLnR5cGVkX3ZhbHVlKCdJTUFHRV9GRUFUVVJFUycsIGQpLCBkKSl9IgpAQCAtODUsNyArODUsNiBAQAogUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKIAogTERDT05GSUdERVBFTkQgPz0gImxkY29uZmlnLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgotTERDT05GSUdERVBFTkRfbGliYy11Y2xpYmMgPSAiIgogTERDT05GSUdERVBFTkRfbGliYy1tdXNsID0gIiIKIAogIyBUaGlzIGlzIG5lZWRlZCB0byBoYXZlIGRlcG1vZCBkYXRhIGluIFBLR0RBVEFfRElSLApAQCAtMTE4LDcgKzExNyw3IEBACiAgICAgICAgICAgICAgICAgICdJTUFHRV9ST09URlNfTUFYU0laRScsJ0lNQUdFX05BTUUnLCdJTUFHRV9MSU5LX05BTUUnLCdJTUFHRV9NQU5JRkVTVCcsJ0RFUExPWV9ESVJfSU1BR0UnLCdJTUFHRV9GU1RZUEVTJywnSU1BR0VfSU5TVEFMTF9DT01QTEVNRU5UQVJZJywnSU1BR0VfTElOR1VBUycsCiAgICAgICAgICAgICAgICAgICdNVUxUSUxJQlJFX0FMTE9XX1JFUCcsJ01VTFRJTElCX1RFTVBfUk9PVEZTJywnTVVMVElMSUJfVkFSSUFOVFMnLCdNVUxUSUxJQlMnLCdBTExfTVVMVElMSUJfUEFDS0FHRV9BUkNIUycsJ01VTFRJTElCX0dMT0JBTF9WQVJJQU5UUycsJ0JBRF9SRUNPTU1FTkRBVElPTlMnLCdOT19SRUNPTU1FTkRBVElPTlMnLAogICAgICAgICAgICAgICAgICAnUEFDS0FHRV9BUkNIUycsJ1BBQ0tBR0VfQ0xBU1NFUycsJ1RBUkdFVF9WRU5ET1InLCdUQVJHRVRfQVJDSCcsJ1RBUkdFVF9PUycsJ09WRVJSSURFUycsJ0JCRVhURU5EVkFSSUFOVCcsJ0ZFRURfREVQTE9ZRElSX0JBU0VfVVJJJywnSU5URVJDRVBUX0RJUicsJ1VTRV9ERVZGUycsCi0gICAgICAgICAgICAgICAgICdDT05WRVJTSU9OVFlQRVMnLCAnSU1BR0VfR0VOX0RFQlVHRlMnLCAnUk9PVEZTX1JPX1VOTkVFREVEJywgJ0lNR0RFUExPWURJUicsICdQQUNLQUdFX0VYQ0xVREVfQ09NUExFTUVOVEFSWSddCisgICAgICAgICAgICAgICAgICdDT05WRVJTSU9OVFlQRVMnLCAnSU1BR0VfR0VOX0RFQlVHRlMnLCAnUk9PVEZTX1JPX1VOTkVFREVEJywgJ0lNR0RFUExPWURJUicsICdQQUNLQUdFX0VYQ0xVREVfQ09NUExFTUVOVEFSWScsICdSRVBST0RVQ0lCTEVfVElNRVNUQU1QX1JPT1RGUyddCiAgICAgdmFyaWFibGVzLmV4dGVuZChyb290ZnNfY29tbWFuZF92YXJpYWJsZXMoZCkpCiAgICAgdmFyaWFibGVzLmV4dGVuZCh2YXJpYWJsZV9kZXBlbmRzKGQpKQogICAgIHJldHVybiAiICIuam9pbih2YXJpYWJsZXMpCkBAIC0xMzksOSArMTM4LDYgQEAKIElNQUdFX1RZUEVfbGl2ZSA9ICIke0BidWlsZF9saXZlKGQpfSIKIGluaGVyaXQgJHtJTUFHRV9UWVBFX2xpdmV9CiAKLUlNQUdFX1RZUEVfdm0gPSAnJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCJJTUFHRV9GU1RZUEVTIiwgWyJ2bWRrIiwgInZkaSIsICJxY293MiIsICJoZGRkaXJlY3QiXSwgImltYWdlLXZtIiwgIiIsIGQpfScKLWluaGVyaXQgJHtJTUFHRV9UWVBFX3ZtfQotCiBJTUFHRV9UWVBFX2NvbnRhaW5lciA9ICcke0BiYi51dGlscy5jb250YWlucygiSU1BR0VfRlNUWVBFUyIsICJjb250YWluZXIiLCAiaW1hZ2UtY29udGFpbmVyIiwgIiIsIGQpfScKIGluaGVyaXQgJHtJTUFHRV9UWVBFX2NvbnRhaW5lcn0KIApAQCAtMTQ5LDE0ICsxNDUsMTggQEAKIGluaGVyaXQgJHtJTUFHRV9UWVBFX3dpY30KIAogcHl0aG9uICgpIHsKKyAgICBkZWYgZXh0cmFpbWFnZV9nZXRkZXBlbmRzKHRhc2spOgorICAgICAgICBkZXBzID0gIiIKKyAgICAgICAgZm9yIGRlcCBpbiAoZC5nZXRWYXIoJ0VYVFJBX0lNQUdFREVQRU5EUycpIG9yICIiKS5zcGxpdCgpOgorICAgICAgICAgICAgZGVwcyArPSAiICVzOiVzIiAlIChkZXAsIHRhc2spCisgICAgICAgIHJldHVybiBkZXBzCisKKyAgICBkLmFwcGVuZFZhckZsYWcoJ2RvX2ltYWdlJywgJ2RlcGVuZHMnLCBleHRyYWltYWdlX2dldGRlcGVuZHMoJ2RvX3BvcHVsYXRlX2xpYycpKQorICAgIGQuYXBwZW5kVmFyRmxhZygnZG9faW1hZ2VfY29tcGxldGUnLCAnZGVwZW5kcycsIGV4dHJhaW1hZ2VfZ2V0ZGVwZW5kcygnZG9fcG9wdWxhdGVfc3lzcm9vdCcpKQorCiAgICAgZGVwcyA9ICIgIiArIGltYWdldHlwZXNfZ2V0ZGVwZW5kcyhkKQogICAgIGQuYXBwZW5kVmFyRmxhZygnZG9fcm9vdGZzJywgJ2RlcGVuZHMnLCBkZXBzKQogCi0gICAgZGVwcyA9ICIiCi0gICAgZm9yIGRlcCBpbiAoZC5nZXRWYXIoJ0VYVFJBX0lNQUdFREVQRU5EUycpIG9yICIiKS5zcGxpdCgpOgotICAgICAgICBkZXBzICs9ICIgJXM6ZG9fcG9wdWxhdGVfc3lzcm9vdCIgJSBkZXAKLSAgICBkLmFwcGVuZFZhckZsYWcoJ2RvX2ltYWdlX2NvbXBsZXRlJywgJ2RlcGVuZHMnLCBkZXBzKQotCiAgICAgI3Byb2Nlc3MgSU1BR0VfRkVBVFVSRVMsIHdlIG11c3QgZG8gdGhpcyBiZWZvcmUgcnVudGltZV9tYXBwaW5nX3JlbmFtZQogICAgICNDaGVjayBmb3IgcmVwbGFjZXMgaW1hZ2UgZmVhdHVyZXMKICAgICBmZWF0dXJlcyA9IHNldChvZS5kYXRhLnR5cGVkX3ZhbHVlKCdJTUFHRV9GRUFUVVJFUycsIGQpKQpAQCAtMjU0LDYgKzI1NCw3IEBACiAgICAgcHJvZ3Jlc3NfcmVwb3J0ZXIubmV4dF9zdGFnZSgpCiAKICAgICAjIGdlbmVyYXRlIHJvb3RmcworICAgIGQuc2V0VmFyRmxhZygnUkVQUk9EVUNJQkxFX1RJTUVTVEFNUF9ST09URlMnLCAnZXhwb3J0JywgJzEnKQogICAgIGNyZWF0ZV9yb290ZnMoZCwgcHJvZ3Jlc3NfcmVwb3J0ZXI9cHJvZ3Jlc3NfcmVwb3J0ZXIsIGxvZ2NhdGNoZXI9bG9nY2F0Y2hlcikKIAogICAgIHByb2dyZXNzX3JlcG9ydGVyLmZpbmlzaCgpCkBAIC0yNjEsMTggKzI2MiwxOSBAQAogZG9fcm9vdGZzW2RpcnNdID0gIiR7VE9QRElSfSIKIGRvX3Jvb3Rmc1tjbGVhbmRpcnNdICs9ICIke1N9ICR7SU1HREVQTE9ZRElSfSIKIGRvX3Jvb3Rmc1t1bWFza10gPSAiMDIyIgotYWRkdGFzayByb290ZnMgYmVmb3JlIGRvX2J1aWxkIGFmdGVyIGRvX3ByZXBhcmVfcmVjaXBlX3N5c3Jvb3QKK2FkZHRhc2sgcm9vdGZzIGFmdGVyIGRvX3ByZXBhcmVfcmVjaXBlX3N5c3Jvb3QKIAogZmFrZXJvb3QgcHl0aG9uIGRvX2ltYWdlICgpIHsKICAgICBmcm9tIG9lLnV0aWxzIGltcG9ydCBleGVjdXRlX3ByZV9wb3N0X3Byb2Nlc3MKIAorICAgIGQuc2V0VmFyRmxhZygnUkVQUk9EVUNJQkxFX1RJTUVTVEFNUF9ST09URlMnLCAnZXhwb3J0JywgJzEnKQogICAgIHByZV9wcm9jZXNzX2NtZHMgPSBkLmdldFZhcigiSU1BR0VfUFJFUFJPQ0VTU19DT01NQU5EIikKIAogICAgIGV4ZWN1dGVfcHJlX3Bvc3RfcHJvY2VzcyhkLCBwcmVfcHJvY2Vzc19jbWRzKQogfQogZG9faW1hZ2VbZGlyc10gPSAiJHtUT1BESVJ9IgogZG9faW1hZ2VbdW1hc2tdID0gIjAyMiIKLWFkZHRhc2sgZG9faW1hZ2UgYWZ0ZXIgZG9fcm9vdGZzIGJlZm9yZSBkb19idWlsZAorYWRkdGFzayBkb19pbWFnZSBhZnRlciBkb19yb290ZnMKIAogZmFrZXJvb3QgcHl0aG9uIGRvX2ltYWdlX2NvbXBsZXRlICgpIHsKICAgICBmcm9tIG9lLnV0aWxzIGltcG9ydCBleGVjdXRlX3ByZV9wb3N0X3Byb2Nlc3MKQEAgLTI4OSwxNCArMjkxLDIxIEBACiBkb19pbWFnZV9jb21wbGV0ZVtzc3RhdGUtb3V0cHV0ZGlyc10gPSAiJHtERVBMT1lfRElSX0lNQUdFfSIKIGRvX2ltYWdlX2NvbXBsZXRlW3N0YW1wLWV4dHJhLWluZm9dID0gIiR7TUFDSElORX0iCiBhZGR0YXNrIGRvX2ltYWdlX2NvbXBsZXRlIGFmdGVyIGRvX2ltYWdlIGJlZm9yZSBkb19idWlsZAorcHl0aG9uIGRvX2ltYWdlX2NvbXBsZXRlX3NldHNjZW5lICgpIHsKKyAgICBzc3RhdGVfc2V0c2NlbmUoZCkKK30KK2FkZHRhc2sgZG9faW1hZ2VfY29tcGxldGVfc2V0c2NlbmUKIAogIyBBZGQgaW1hZ2UtbGV2ZWwgUUEvc2FuaXR5IGNoZWNrcyB0byBJTUFHRV9RQV9DT01NQU5EUwogIwogIyBJTUFHRV9RQV9DT01NQU5EUyArPSAiIFwKICMgICAgIGltYWdlX2NoZWNrX2V2ZXJ5dGhpbmdfb2sgXAogIyAiCi0jIFRoaXMgdGFzayBydW5zIGFsbCBmdW5jdGlvbnMgaW4gSU1BR0VfUUFfQ09NTUFORFMgYWZ0ZXIgdGhlIGltYWdlCisjIFRoaXMgdGFzayBydW5zIGFsbCBmdW5jdGlvbnMgaW4gSU1BR0VfUUFfQ09NTUFORFMgYWZ0ZXIgdGhlIHJvb3RmcwogIyBjb25zdHJ1Y3Rpb24gaGFzIGNvbXBsZXRlZCBpbiBvcmRlciB0byB2YWxpZGF0ZSB0aGUgcmVzdWx0aW5nIGltYWdlLgorIworIyBUaGUgZnVuY3Rpb25zIHNob3VsZCB1c2UgJHtJTUFHRV9ST09URlN9IHRvIGZpbmQgdGhlIHVucGFja2VkIHJvb3RmcworIyBkaXJlY3RvcnksIHdoaWNoIGlmIFFBIHBhc3NlcyB3aWxsIGJlIHRoZSBiYXNpcyBmb3IgdGhlIGltYWdlcy4KIGZha2Vyb290IHB5dGhvbiBkb19pbWFnZV9xYSAoKSB7CiAgICAgZnJvbSBvZS51dGlscyBpbXBvcnQgSW1hZ2VRQUZhaWxlZAogCkBAIC0zMTgsNyArMzI3LDE2IEBACiAgICAgICAgIGltZ25hbWUgPSBkLmdldFZhcignSU1BR0VfTkFNRScpCiAgICAgICAgIGJiLmZhdGFsKCJRQSBlcnJvcnMgZm91bmQgd2hpbHN0IHZhbGlkYXRpbmcgaW1hZ2U6ICVzXG4lcyIgJSAoaW1nbmFtZSwgcWFtc2cpKQogfQotYWRkdGFzayBkb19pbWFnZV9xYSBhZnRlciBkb19pbWFnZV9jb21wbGV0ZSBiZWZvcmUgZG9fYnVpbGQKK2FkZHRhc2sgZG9faW1hZ2VfcWEgYWZ0ZXIgZG9fcm9vdGZzIGJlZm9yZSBkb19pbWFnZQorCitTU1RBVEVUQVNLUyArPSAiZG9faW1hZ2VfcWEiCitTU1RBVEVfU0tJUF9DUkVBVElPTl90YXNrLWltYWdlLXFhID0gJzEnCitkb19pbWFnZV9xYVtzc3RhdGUtaW5wdXRkaXJzXSA9ICIiCitkb19pbWFnZV9xYVtzc3RhdGUtb3V0cHV0ZGlyc10gPSAiIgorcHl0aG9uIGRvX2ltYWdlX3FhX3NldHNjZW5lICgpIHsKKyAgICBzc3RhdGVfc2V0c2NlbmUoZCkKK30KK2FkZHRhc2sgZG9faW1hZ2VfcWFfc2V0c2NlbmUKIAogZGVmIHNldHVwX2RlYnVnZnNfdmFyaWFibGVzKGQpOgogICAgIGQuYXBwZW5kVmFyKCdJTUFHRV9ST09URlMnLCAnLWRiZycpCkBAIC00MjYsNyArNDQ0LDExIEBACiAgICAgICAgICMgRXhwYW5kIFBWIGVsc2UgaXQgY2FuIHRyaWdnZXIgZ2V0X3NyY3JldiB3aGljaCBjYW4gZmFpbCBkdWUgdG8gdGhlc2UgdmFyaWFibGVzIGJlaW5nIHVuc2V0CiAgICAgICAgIGxvY2FsZGF0YS5zZXRWYXIoJ1BWJywgZC5nZXRWYXIoJ1BWJykpCiAgICAgICAgIGxvY2FsZGF0YS5kZWxWYXIoJ0RBVEVUSU1FJykKKyAgICAgICAgbG9jYWxkYXRhLmRlbFZhcignREFURScpCiAgICAgICAgIGxvY2FsZGF0YS5kZWxWYXIoJ1RNUERJUicpCisgICAgICAgIHZhcmRlcHNleGNsdWRlID0gKGQuZ2V0VmFyRmxhZygnSU1BR0VfQ01EXycgKyByZWFsdCwgJ3ZhcmRlcHNleGNsdWRlJywgVHJ1ZSkgb3IgJycpLnNwbGl0KCkKKyAgICAgICAgZm9yIGRlcCBpbiB2YXJkZXBzZXhjbHVkZToKKyAgICAgICAgICAgIGxvY2FsZGF0YS5kZWxWYXIoZGVwKQogCiAgICAgICAgIGltYWdlX2NtZCA9IGxvY2FsZGF0YS5nZXRWYXIoIklNQUdFX0NNRCIpCiAgICAgICAgIHZhcmRlcHMuYWRkKCdJTUFHRV9DTURfJyArIHJlYWx0KQpAQCAtNDgwLDE5ICs1MDIsMjAgQEAKICAgICAgICAgZm9yIGRlcCBpbiB0eXBlZGVwc1t0XToKICAgICAgICAgICAgIGFmdGVyICs9ICcgZG9faW1hZ2VfJXMnICUgZGVwLnJlcGxhY2UoIi0iLCAiXyIpLnJlcGxhY2UoIi4iLCAiXyIpCiAKLSAgICAgICAgdCA9IHQucmVwbGFjZSgiLSIsICJfIikucmVwbGFjZSgiLiIsICJfIikKKyAgICAgICAgdGFzayA9ICJkb19pbWFnZV8lcyIgJSB0LnJlcGxhY2UoIi0iLCAiXyIpLnJlcGxhY2UoIi4iLCAiXyIpCiAKLSAgICAgICAgZC5zZXRWYXIoJ2RvX2ltYWdlXyVzJyAlIHQsICdcbicuam9pbihjbWRzKSkKLSAgICAgICAgZC5zZXRWYXJGbGFnKCdkb19pbWFnZV8lcycgJSB0LCAnZnVuYycsICcxJykKLSAgICAgICAgZC5zZXRWYXJGbGFnKCdkb19pbWFnZV8lcycgJSB0LCAnZmFrZXJvb3QnLCAnMScpCi0gICAgICAgIGQuc2V0VmFyRmxhZygnZG9faW1hZ2VfJXMnICUgdCwgJ3ByZWZ1bmNzJywgZGVidWcgKyAnc2V0X2ltYWdlX3NpemUnKQotICAgICAgICBkLnNldFZhckZsYWcoJ2RvX2ltYWdlXyVzJyAlIHQsICdwb3N0ZnVuY3MnLCAnY3JlYXRlX3N5bWxpbmtzJykKLSAgICAgICAgZC5zZXRWYXJGbGFnKCdkb19pbWFnZV8lcycgJSB0LCAnc3ViaW1hZ2VzJywgJyAnLmpvaW4oc3ViaW1hZ2VzKSkKLSAgICAgICAgZC5hcHBlbmRWYXJGbGFnKCdkb19pbWFnZV8lcycgJSB0LCAndmFyZGVwcycsICcgJy5qb2luKHZhcmRlcHMpKQotICAgICAgICBkLmFwcGVuZFZhckZsYWcoJ2RvX2ltYWdlXyVzJyAlIHQsICd2YXJkZXBzZXhjbHVkZScsICdEQVRFVElNRScpCisgICAgICAgIGQuc2V0VmFyKHRhc2ssICdcbicuam9pbihjbWRzKSkKKyAgICAgICAgZC5zZXRWYXJGbGFnKHRhc2ssICdmdW5jJywgJzEnKQorICAgICAgICBkLnNldFZhckZsYWcodGFzaywgJ2Zha2Vyb290JywgJzEnKQogCi0gICAgICAgIGJiLmRlYnVnKDIsICJBZGRpbmcgdHlwZSAlcyBiZWZvcmUgJXMsIGFmdGVyICVzIiAlICh0LCAnZG9faW1hZ2VfY29tcGxldGUnLCBhZnRlcikpCi0gICAgICAgIGJiLmJ1aWxkLmFkZHRhc2soJ2RvX2ltYWdlXyVzJyAlIHQsICdkb19pbWFnZV9jb21wbGV0ZScsIGFmdGVyLCBkKQorICAgICAgICBkLmFwcGVuZFZhckZsYWcodGFzaywgJ3ByZWZ1bmNzJywgJyAnICsgZGVidWcgKyAnIHNldF9pbWFnZV9zaXplJykKKyAgICAgICAgZC5wcmVwZW5kVmFyRmxhZyh0YXNrLCAncG9zdGZ1bmNzJywgJyBjcmVhdGVfc3ltbGlua3MnKQorICAgICAgICBkLmFwcGVuZFZhckZsYWcodGFzaywgJ3N1YmltYWdlcycsICcgJyArICcgJy5qb2luKHN1YmltYWdlcykpCisgICAgICAgIGQuYXBwZW5kVmFyRmxhZyh0YXNrLCAndmFyZGVwcycsICcgJyArICcgJy5qb2luKHZhcmRlcHMpKQorICAgICAgICBkLmFwcGVuZFZhckZsYWcodGFzaywgJ3ZhcmRlcHNleGNsdWRlJywgJ0RBVEVUSU1FIERBVEUgJyArICcgJy5qb2luKHZhcmRlcHNleGNsdWRlKSkKKworICAgICAgICBiYi5kZWJ1ZygyLCAiQWRkaW5nIHRhc2sgJXMgYmVmb3JlICVzLCBhZnRlciAlcyIgJSAodGFzaywgJ2RvX2ltYWdlX2NvbXBsZXRlJywgYWZ0ZXIpKQorICAgICAgICBiYi5idWlsZC5hZGR0YXNrKHRhc2ssICdkb19pbWFnZV9jb21wbGV0ZScsIGFmdGVyLCBkKQogfQogCiAjCkBAIC01OTgsMyArNjIxLDQ2IEBACiBkb19wYWNrYWdlX3dyaXRlX2RlYltub2V4ZWNdID0gIjEiCiBkb19wYWNrYWdlX3dyaXRlX3JwbVtub2V4ZWNdID0gIjEiCiAKKyMgUHJlcGFyZSB0aGUgcm9vdCBsaW5rcyB0byBwb2ludCB0byB0aGUgL3VzciBjb3VudGVycGFydHMuCitjcmVhdGVfbWVyZ2VkX3Vzcl9zeW1saW5rcygpIHsKKyAgICByb290PSIkMSIKKyAgICBpbnN0YWxsIC1kICRyb290JHtiYXNlX2JpbmRpcn0gJHJvb3Qke2Jhc2Vfc2JpbmRpcn0gJHJvb3Qke2Jhc2VfbGliZGlyfQorICAgIGxuciAkcm9vdCR7YmFzZV9iaW5kaXJ9ICRyb290L2JpbgorICAgIGxuciAkcm9vdCR7YmFzZV9zYmluZGlyfSAkcm9vdC9zYmluCisgICAgbG5yICRyb290JHtiYXNlX2xpYmRpcn0gJHJvb3QvJHtiYXNlbGlifQorCisgICAgaWYgWyAiJHtub25hcmNoX2Jhc2VfbGliZGlyfSIgIT0gIiR7YmFzZV9saWJkaXJ9IiBdOyB0aGVuCisgICAgICAgaW5zdGFsbCAtZCAkcm9vdCR7bm9uYXJjaF9iYXNlX2xpYmRpcn0KKyAgICAgICBsbnIgJHJvb3Qke25vbmFyY2hfYmFzZV9saWJkaXJ9ICRyb290L2xpYgorICAgIGZpCisKKyAgICAjIGNyZWF0ZSBiYXNlIGxpbmtzIGZvciBtdWx0aWxpYnMKKyAgICBtdWx0aV9saWJkaXJzPSIke0BkLmdldFZhcignTVVMVElMSUJfVkFSSUFOVFMnKX0iCisgICAgZm9yIGQgaW4gJG11bHRpX2xpYmRpcnM7IGRvCisgICAgICAgIGluc3RhbGwgLWQgJHJvb3Qke2V4ZWNfcHJlZml4fS8kZAorICAgICAgICBsbnIgJHJvb3Qke2V4ZWNfcHJlZml4fS8kZCAkcm9vdC8kZAorICAgIGRvbmUKK30KKworY3JlYXRlX21lcmdlZF91c3Jfc3ltbGlua3Nfcm9vdGZzKCkgeworICAgIGNyZWF0ZV9tZXJnZWRfdXNyX3N5bWxpbmtzICR7SU1BR0VfUk9PVEZTfQorfQorCitjcmVhdGVfbWVyZ2VkX3Vzcl9zeW1saW5rc19zZGsoKSB7CisgICAgY3JlYXRlX21lcmdlZF91c3Jfc3ltbGlua3MgJHtTREtfT1VUUFVUfSR7U0RLVEFSR0VUU1lTUk9PVH0KK30KKworUk9PVEZTX1BSRVBST0NFU1NfQ09NTUFORCArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd1c3JtZXJnZScsICdjcmVhdGVfbWVyZ2VkX3Vzcl9zeW1saW5rc19yb290ZnM7ICcsICcnLGQpfSIKK1BPUFVMQVRFX1NES19QUkVfVEFSR0VUX0NPTU1BTkQgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAndXNybWVyZ2UnLCAnY3JlYXRlX21lcmdlZF91c3Jfc3ltbGlua3Nfc2RrOyAnLCAnJyxkKX0iCisKK3JlcHJvZHVjaWJsZV9maW5hbF9pbWFnZV90YXNrICgpIHsKKyAgICBpZiBbICIkQlVJTERfUkVQUk9EVUNJQkxFX0JJTkFSSUVTIiA9ICIxIiBdOyB0aGVuCisgICAgICAgIGlmIFsgIiRSRVBST0RVQ0lCTEVfVElNRVNUQU1QX1JPT1RGUyIgPSAiIiBdOyB0aGVuCisgICAgICAgICAgICBSRVBST0RVQ0lCTEVfVElNRVNUQU1QX1JPT1RGUz1gZ2l0IGxvZyAtMSAtLXByZXR0eT0lY3RgCisgICAgICAgIGZpCisgICAgICAgICMgU2V0IG10aW1lIG9mIGFsbCBmaWxlcyB0byBhIHJlcHJvZHVjaWJsZSB2YWx1ZQorICAgICAgICBiYm5vdGUgInJlcHJvZHVjaWJsZV9maW5hbF9pbWFnZV90YXNrOiBtdGltZSBzZXQgdG8gJFJFUFJPRFVDSUJMRV9USU1FU1RBTVBfUk9PVEZTIgorICAgICAgICBmaW5kICAke0lNQUdFX1JPT1RGU30gLWV4ZWMgdG91Y2ggLWggIC0tZGF0ZT1AJFJFUFJPRFVDSUJMRV9USU1FU1RBTVBfUk9PVEZTIHt9IFw7CisgICAgZmkKK30KK0lNQUdFX1BSRVBST0NFU1NfQ09NTUFORF9hcHBlbmQgPSAiIHJlcHJvZHVjaWJsZV9maW5hbF9pbWFnZV90YXNrOyAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlX3R5cGVzLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlX3R5cGVzLmJiY2xhc3MKaW5kZXggOGRiMThhYy4uZTg4MWQwYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZV90eXBlcy5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2VfdHlwZXMuYmJjbGFzcwpAQCAtMjYsMjAgKzI2LDMxIEBACiAgICAgZnN0eXBlcyA9IHNldCgoZC5nZXRWYXIoJ0lNQUdFX0ZTVFlQRVMnKSBvciAiIikuc3BsaXQoKSkKICAgICBmc3R5cGVzIHw9IHNldCgoZC5nZXRWYXIoJ0lNQUdFX0ZTVFlQRVNfREVCVUdGUycpIG9yICIiKS5zcGxpdCgpKQogCisgICAgZGVwcmVjYXRlZCA9IHNldCgpCiAgICAgZGVwcyA9IHNldCgpCiAgICAgZm9yIHR5cGVzdHJpbmcgaW4gZnN0eXBlczoKICAgICAgICAgYmFzZXR5cGUsIHJlc3R0eXBlcyA9IHNwbGl0X3R5cGVzKHR5cGVzdHJpbmcpCi0gICAgICAgIGFkZGRlcChkLmdldFZhcignSU1BR0VfREVQRU5EU18lcycgJSBiYXNldHlwZSkgLCBkZXBzKQorCisgICAgICAgIHZhciA9ICJJTUFHRV9ERVBFTkRTXyVzIiAlIGJhc2V0eXBlCisgICAgICAgIGlmIGQuZ2V0VmFyKHZhcikgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBkZXByZWNhdGVkLmFkZCh2YXIpCiAKICAgICAgICAgZm9yIHR5cGVkZXBlbmRzIGluIChkLmdldFZhcigiSU1BR0VfVFlQRURFUF8lcyIgJSBiYXNldHlwZSkgb3IgIiIpLnNwbGl0KCk6CiAgICAgICAgICAgICBiYXNlLCByZXN0ID0gc3BsaXRfdHlwZXModHlwZWRlcGVuZHMpCi0gICAgICAgICAgICBhZGRkZXAoZC5nZXRWYXIoJ0lNQUdFX0RFUEVORFNfJXMnICUgYmFzZSkgLCBkZXBzKQogICAgICAgICAgICAgcmVzdHR5cGVzICs9IHJlc3QKIAorICAgICAgICAgICAgdmFyID0gIklNQUdFX0RFUEVORFNfJXMiICUgYmFzZQorICAgICAgICAgICAgaWYgZC5nZXRWYXIodmFyKSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBkZXByZWNhdGVkLmFkZCh2YXIpCisKICAgICAgICAgZm9yIGN0eXBlIGluIHJlc3R0eXBlczoKICAgICAgICAgICAgIGFkZGRlcChkLmdldFZhcigiQ09OVkVSU0lPTl9ERVBFTkRTXyVzIiAlIGN0eXBlKSwgZGVwcykKICAgICAgICAgICAgIGFkZGRlcChkLmdldFZhcigiQ09NUFJFU1NfREVQRU5EU18lcyIgJSBjdHlwZSksIGRlcHMpCiAKKyAgICBpZiBkZXByZWNhdGVkOgorICAgICAgICBiYi5mYXRhbCgnRGVwcmVjYXRlZCB2YXJpYWJsZShzKSBmb3VuZDogIiVzIi4gJworICAgICAgICAgICAgICAgICAnVXNlIGRvX2ltYWdlXzx0eXBlPltkZXBlbmRzXSArPSAiPHJlY2lwZT46PHRhc2s+IiBpbnN0ZWFkJyAlICcsICcuam9pbihkZXByZWNhdGVkKSkKKwogICAgICMgU29ydCB0aGUgc2V0IHNvIHRoYXQgb3JkZXJpbmcgaXMgY29uc2lzdGFudAogICAgIHJldHVybiAiICIuam9pbihzb3J0ZWQoZGVwcykpCiAKQEAgLTcyLDcgKzgzLDExIEBACiAJCWV2YWwgQ09VTlQ9XCIkTUlOX0NPVU5UXCIKIAlmaQogCSMgQ3JlYXRlIGEgc3BhcnNlIGltYWdlIGJsb2NrCisJYmJkZWJ1ZyAxIEV4ZWN1dGluZyAiZGQgaWY9L2Rldi96ZXJvIG9mPSR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJGZzdHlwZSBzZWVrPSRST09URlNfU0laRSBjb3VudD0kQ09VTlQgYnM9MTAyNCIKIAlkZCBpZj0vZGV2L3plcm8gb2Y9JHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4kZnN0eXBlIHNlZWs9JFJPT1RGU19TSVpFIGNvdW50PSRDT1VOVCBicz0xMDI0CisJYmJkZWJ1ZyAxICJBY3R1YWwgUm9vdGZzIHNpemU6ICBgZHUgLXMgJHtJTUFHRV9ST09URlN9YCIKKwliYmRlYnVnIDEgIkFjdHVhbCBQYXJ0aW9uIHNpemU6IGBscyAtcyAke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiRmc3R5cGVgIgorCWJiZGVidWcgMSBFeGVjdXRpbmcgIm1rZnMuJGZzdHlwZSAtRiAkZXh0cmFfaW1hZ2VjbWQgJHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4kZnN0eXBlIC1kICR7SU1BR0VfUk9PVEZTfSIKIAlta2ZzLiRmc3R5cGUgLUYgJGV4dHJhX2ltYWdlY21kICR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJGZzdHlwZSAtZCAke0lNQUdFX1JPT1RGU30KIAkjIEVycm9yIGNvZGVzIDAtMyBpbmRpY2F0ZSBzdWNjZXNzZnVsbCBvcGVyYXRpb24gb2YgZnNjayAobm8gZXJyb3JzIG9yIGVycm9ycyBjb3JyZWN0ZWQpCiAJZnNjay4kZnN0eXBlIC1wdmZEICR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJGZzdHlwZSB8fCBbICQ/IC1sZSAzIF0KQEAgLTg5LDI2ICsxMDQsMjggQEAKIAkJc2l6ZT0ke01JTl9CVFJGU19TSVpFfQogCQliYndhcm4gIlJvb3RmcyBzaXplIGlzIHRvbyBzbWFsbCBmb3IgQlRSRlMuIEZpbGVzeXN0ZW0gd2lsbCBiZSBleHRlbmRlZCB0byAke3NpemV9SyIKIAlmaQotCWRkIGlmPS9kZXYvemVybyBvZj0ke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LmJ0cmZzIGNvdW50PSR7c2l6ZX0gYnM9MTAyNAorCWRkIGlmPS9kZXYvemVybyBvZj0ke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LmJ0cmZzIHNlZWs9JHtzaXplfSBjb3VudD0wIGJzPTEwMjQKIAlta2ZzLmJ0cmZzICR7RVhUUkFfSU1BR0VDTUR9IC1yICR7SU1BR0VfUk9PVEZTfSAke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LmJ0cmZzCiB9CiAKIElNQUdFX0NNRF9zcXVhc2hmcyA9ICJta3NxdWFzaGZzICR7SU1BR0VfUk9PVEZTfSAke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LnNxdWFzaGZzICR7RVhUUkFfSU1BR0VDTUR9IC1ub2FwcGVuZCIKIElNQUdFX0NNRF9zcXVhc2hmcy14eiA9ICJta3NxdWFzaGZzICR7SU1BR0VfUk9PVEZTfSAke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LnNxdWFzaGZzLXh6ICR7RVhUUkFfSU1BR0VDTUR9IC1ub2FwcGVuZCAtY29tcCB4eiIKIElNQUdFX0NNRF9zcXVhc2hmcy1sem8gPSAibWtzcXVhc2hmcyAke0lNQUdFX1JPT1RGU30gJHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS5zcXVhc2hmcy1sem8gJHtFWFRSQV9JTUFHRUNNRH0gLW5vYXBwZW5kIC1jb21wIGx6byIKK0lNQUdFX0NNRF9zcXVhc2hmcy1sejQgPSAibWtzcXVhc2hmcyAke0lNQUdFX1JPT1RGU30gJHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS5zcXVhc2hmcy1sejQgJHtFWFRSQV9JTUFHRUNNRH0gLW5vYXBwZW5kIC1jb21wIGx6NCIKIAogIyBCeSBkZWZhdWx0LCB0YXIgZnJvbSB0aGUgaG9zdCBpcyB1c2VkLCB3aGljaCBjYW4gYmUgcXVpdGUgb2xkLiBJZgogIyB5b3UgbmVlZCBzcGVjaWFsIHBhcmFtZXRlcnMgKGxpa2UgLS14YXR0cnMpIHdoaWNoIGFyZSBvbmx5IHN1cHBvcnRlZAogIyBieSBHTlUgdGFyIHVwc3RyZWFtID49IDEuMjcsIHRoZW4gb3ZlcnJpZGUgdGhhdCBkZWZhdWx0OgogIyBJTUFHRV9DTURfVEFSID0gInRhciAtLXhhdHRycyAtLXhhdHRycy1pbmNsdWRlPSoiCi0jIElNQUdFX0RFUEVORFNfdGFyX2FwcGVuZCA9ICIgdGFyLXJlcGxhY2VtZW50LW5hdGl2ZSIKKyMgZG9faW1hZ2VfdGFyW2RlcGVuZHNdICs9ICJ0YXItcmVwbGFjZW1lbnQtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCiAjIEVYVFJBTkFUSVZFUEFUSCArPSAidGFyLW5hdGl2ZSIKICMKICMgVGhlIEdOVSBkb2N1bWVudGF0aW9uIGRvZXMgbm90IHNwZWNpZnkgd2hldGhlciAtLXhhdHRycy1pbmNsdWRlIGlzIG5lY2Vzc2FyeS4KICMgSW4gcHJhY3RpY2UsIGl0IHR1cm5lZCBvdXQgdG8gYmUgbm90IG5lZWRlZCB3aGVuIGNyZWF0aW5nIGFyY2hpdmVzIGFuZAogIyByZXF1aXJlZCB3aGVuIGV4dHJhY3RpbmcsIGJ1dCBpdCBzZWVtcyBwcnVkZW50IHRvIHVzZSBpdCBpbiBib3RoIGNhc2VzLgogSU1BR0VfQ01EX1RBUiA/PSAidGFyIgotSU1BR0VfQ01EX3RhciA9ICIke0lNQUdFX0NNRF9UQVJ9IC1jdmYgJHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS50YXIgLUMgJHtJTUFHRV9ST09URlN9IC4iCisjIGlnbm9yZSByZXR1cm4gY29kZSAxICJmaWxlIGNoYW5nZWQgYXMgd2UgcmVhZCBpdCIgYXMgb3RoZXIgdGFza3MoZS5nLiBkb19pbWFnZV93aWMpIG1heSBiZSBoYXJkbGlua2luZyByb290ZnMKK0lNQUdFX0NNRF90YXIgPSAiJHtJTUFHRV9DTURfVEFSfSAtY2YgJHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS50YXIgLUMgJHtJTUFHRV9ST09URlN9IC4gfHwgWyAkPyAtZXEgMSBdIgogCiBkb19pbWFnZV9jcGlvW2NsZWFuZGlyc10gKz0gIiR7V09SS0RJUn0vY3Bpb19hcHBlbmQiCiBJTUFHRV9DTURfY3BpbyAoKSB7CkBAIC0xMzUsNyArMTUyLDcgQEAKIAogSU1BR0VfQ01EX2VsZiAoKSB7CiAJdGVzdCAtZiAke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LmVsZiAmJiBybSAtZiAke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LmVsZgotCW1rZWxmSW1hZ2UgLS1rZXJuZWw9JHtFTEZfS0VSTkVMfSAtLWluaXRyZD0ke0RFUExPWV9ESVJfSU1BR0V9LyR7SU1BR0VfTElOS19OQU1FfS5jcGlvLmd6IC0tb3V0cHV0PSR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uZWxmIC0tYXBwZW5kPScke0VMRl9BUFBFTkR9JyAke0VYVFJBX0lNQUdFQ01EfQorCW1rZWxmSW1hZ2UgLS1rZXJuZWw9JHtFTEZfS0VSTkVMfSAtLWluaXRyZD0ke0lNR0RFUExPWURJUn0vJHtJTUFHRV9MSU5LX05BTUV9LmNwaW8uZ3ogLS1vdXRwdXQ9JHtJTUdERVBMT1lESVJ9LyR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS5lbGYgLS1hcHBlbmQ9JyR7RUxGX0FQUEVORH0nICR7RVhUUkFfSU1BR0VDTUR9CiB9CiAKIElNQUdFX1RZUEVERVBfZWxmID0gImNwaW8uZ3oiCkBAIC0xNDUsNiArMTYyLDEyIEBACiBtdWx0aXViaV9ta2ZzKCkgewogCWxvY2FsIG1rdWJpZnNfYXJncz0iJDEiCiAJbG9jYWwgdWJpbml6ZV9hcmdzPSIkMiIKKyAgICAKKyAgICAgICAgIyBBZGRlZCBwcm9tcHQgZXJyb3IgbWVzc2FnZSBmb3IgdWJpIGFuZCB1YmlmcyBpbWFnZSBjcmVhdGlvbi4KKyAgICAgICAgaWYgWyAteiAiJG1rdWJpZnNfYXJncyJdIHx8IFsgLXogIiR1YmluaXplX2FyZ3MiIF07IHRoZW4KKyAgICAgICAgICAgIGJiZmF0YWwgIk1LVUJJRlNfQVJHUyBhbmQgVUJJTklaRV9BUkdTIGhhdmUgdG8gYmUgc2V0LCBzZWUgaHR0cDovL3d3dy5saW51eC1tdGQuaW5mcmFkZWFkLm9yZy9mYXEvdWJpZnMuaHRtbCBmb3IgZGV0YWlscyIKKyAgICAgICAgZmkKKyAgICAKIAlpZiBbIC16ICIkMyIgXTsgdGhlbgogCQlsb2NhbCB2bmFtZT0iIgogCWVsc2UKQEAgLTIwOSwyMSArMjMyLDIwIEBACiBFWFRSQV9JTUFHRUNNRF9idHJmcyA/PSAiLW4gNDA5NiIKIEVYVFJBX0lNQUdFQ01EX2VsZiA/PSAiIgogCi1JTUFHRV9ERVBFTkRTID0gIiIKLUlNQUdFX0RFUEVORFNfamZmczIgPSAibXRkLXV0aWxzLW5hdGl2ZSIKLUlNQUdFX0RFUEVORFNfY3JhbWZzID0gInV0aWwtbGludXgtbmF0aXZlIgotSU1BR0VfREVQRU5EU19leHQyID0gImUyZnNwcm9ncy1uYXRpdmUiCi1JTUFHRV9ERVBFTkRTX2V4dDMgPSAiZTJmc3Byb2dzLW5hdGl2ZSIKLUlNQUdFX0RFUEVORFNfZXh0NCA9ICJlMmZzcHJvZ3MtbmF0aXZlIgotSU1BR0VfREVQRU5EU19idHJmcyA9ICJidHJmcy10b29scy1uYXRpdmUiCi1JTUFHRV9ERVBFTkRTX3NxdWFzaGZzID0gInNxdWFzaGZzLXRvb2xzLW5hdGl2ZSIKLUlNQUdFX0RFUEVORFNfc3F1YXNoZnMteHogPSAic3F1YXNoZnMtdG9vbHMtbmF0aXZlIgotSU1BR0VfREVQRU5EU19zcXVhc2hmcy1sem8gPSAic3F1YXNoZnMtdG9vbHMtbmF0aXZlIgotSU1BR0VfREVQRU5EU19lbGYgPSAidmlydHVhbC9rZXJuZWwgbWtlbGZpbWFnZS1uYXRpdmUiCi1JTUFHRV9ERVBFTkRTX3ViaSA9ICJtdGQtdXRpbHMtbmF0aXZlIgotSU1BR0VfREVQRU5EU191YmlmcyA9ICJtdGQtdXRpbHMtbmF0aXZlIgotSU1BR0VfREVQRU5EU19tdWx0aXViaSA9ICJtdGQtdXRpbHMtbmF0aXZlIgotSU1BR0VfREVQRU5EU193aWMgPSAicGFydGVkLW5hdGl2ZSIKK2RvX2ltYWdlX2pmZnMyW2RlcGVuZHNdICs9ICJtdGQtdXRpbHMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCitkb19pbWFnZV9jcmFtZnNbZGVwZW5kc10gKz0gInV0aWwtbGludXgtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCitkb19pbWFnZV9leHQyW2RlcGVuZHNdICs9ICJlMmZzcHJvZ3MtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCitkb19pbWFnZV9leHQzW2RlcGVuZHNdICs9ICJlMmZzcHJvZ3MtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCitkb19pbWFnZV9leHQ0W2RlcGVuZHNdICs9ICJlMmZzcHJvZ3MtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCitkb19pbWFnZV9idHJmc1tkZXBlbmRzXSArPSAiYnRyZnMtdG9vbHMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCitkb19pbWFnZV9zcXVhc2hmc1tkZXBlbmRzXSArPSAic3F1YXNoZnMtdG9vbHMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCitkb19pbWFnZV9zcXVhc2hmc194eltkZXBlbmRzXSArPSAic3F1YXNoZnMtdG9vbHMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCitkb19pbWFnZV9zcXVhc2hmc19sem9bZGVwZW5kc10gKz0gInNxdWFzaGZzLXRvb2xzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgorZG9faW1hZ2Vfc3F1YXNoZnNfbHo0W2RlcGVuZHNdICs9ICJzcXVhc2hmcy10b29scy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKK2RvX2ltYWdlX2VsZltkZXBlbmRzXSArPSAidmlydHVhbC9rZXJuZWw6ZG9fcG9wdWxhdGVfc3lzcm9vdCBta2VsZmltYWdlLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgorZG9faW1hZ2VfdWJpW2RlcGVuZHNdICs9ICJtdGQtdXRpbHMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCitkb19pbWFnZV91Ymlmc1tkZXBlbmRzXSArPSAibXRkLXV0aWxzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgorZG9faW1hZ2VfbXVsdGl1YmlbZGVwZW5kc10gKz0gIm10ZC11dGlscy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKIAogIyBUaGlzIHZhcmlhYmxlIGlzIGF2YWlsYWJsZSB0byByZXF1ZXN0IHdoaWNoIHZhbHVlcyBhcmUgc3VpdGFibGUgZm9yIElNQUdFX0ZTVFlQRVMKIElNQUdFX1RZUEVTID0gIiBcCkBAIC0yMzUsMTQgKzI1NywxMCBAQAogICAgIGJ0cmZzIFwKICAgICBpc28gXAogICAgIGhkZGltZyBcCi0gICAgc3F1YXNoZnMgc3F1YXNoZnMteHogc3F1YXNoZnMtbHpvIFwKKyAgICBzcXVhc2hmcyBzcXVhc2hmcy14eiBzcXVhc2hmcy1sem8gc3F1YXNoZnMtbHo0IFwKICAgICB1YmkgdWJpZnMgbXVsdGl1YmkgXAogICAgIHRhciB0YXIuZ3ogdGFyLmJ6MiB0YXIueHogdGFyLmx6NCBcCiAgICAgY3BpbyBjcGlvLmd6IGNwaW8ueHogY3Bpby5sem1hIGNwaW8ubHo0IFwKLSAgICB2bWRrIFwKLSAgICB2ZGkgXAotICAgIHFjb3cyIFwKLSAgICBoZGRkaXJlY3QgXAogICAgIGVsZiBcCiAgICAgd2ljIHdpYy5neiB3aWMuYnoyIHdpYy5sem1hIFwKICAgICBjb250YWluZXIgXApAQCAtMjU0LDkgKzI3Miw5IEBACiAjIENPTlZFUlNJT05fQ01EL0RFUEVORFMuCiBDT01QUkVTU0lPTlRZUEVTID89ICIiCiAKLUNPTlZFUlNJT05UWVBFUyA9ICJneiBiejIgbHptYSB4eiBsejQgbHpvIHppcCBzdW0gbWQ1c3VtIHNoYTFzdW0gc2hhMjI0c3VtIHNoYTI1NnN1bSBzaGEzODRzdW0gc2hhNTEyc3VtIGJtYXAgdS1ib290ICR7Q09NUFJFU1NJT05UWVBFU30iCitDT05WRVJTSU9OVFlQRVMgPSAiZ3ogYnoyIGx6bWEgeHogbHo0IGx6byB6aXAgc3VtIG1kNXN1bSBzaGExc3VtIHNoYTIyNHN1bSBzaGEyNTZzdW0gc2hhMzg0c3VtIHNoYTUxMnN1bSBibWFwIHUtYm9vdCB2bWRrIHZkaSBxY293MiAke0NPTVBSRVNTSU9OVFlQRVN9IgogQ09OVkVSU0lPTl9DTURfbHptYSA9ICJsem1hIC1rIC1mIC03ICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9IgotQ09OVkVSU0lPTl9DTURfZ3ogPSAiZ3ppcCAtZiAtOSAtYyAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSA+ICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9Lmd6IgorQ09OVkVSU0lPTl9DTURfZ3ogPSAiZ3ppcCAtZiAtOSAtbiAtYyAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSA+ICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9Lmd6IgogQ09OVkVSU0lPTl9DTURfYnoyID0gInBiemlwMiAtZiAtayAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSIKIENPTlZFUlNJT05fQ01EX3h6ID0gInh6IC1mIC1rIC1jICR7WFpfQ09NUFJFU1NJT05fTEVWRUx9ICR7WFpfVEhSRUFEU30gLS1jaGVjaz0ke1haX0lOVEVHUklUWV9DSEVDS30gJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0gPiAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfS54eiIKIENPTlZFUlNJT05fQ01EX2x6NCA9ICJsejQgLTkgLXogJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0gJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0ubHo0IgpAQCAtMjcyLDYgKzI5MCw5IEBACiBDT05WRVJTSU9OX0NNRF9zaGE1MTJzdW0gPSAic2hhNTEyc3VtICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9ID4gJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0uc2hhNTEyc3VtIgogQ09OVkVSU0lPTl9DTURfYm1hcCA9ICJibWFwdG9vbCBjcmVhdGUgJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0gLW8gJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0uYm1hcCIKIENPTlZFUlNJT05fQ01EX3UtYm9vdCA9ICJta2ltYWdlIC1BICR7VUJPT1RfQVJDSH0gLU8gbGludXggLVQgcmFtZGlzayAtQyBub25lIC1uICR7SU1BR0VfTkFNRX0gLWQgJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0gJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0udS1ib290IgorQ09OVkVSU0lPTl9DTURfdm1kayA9ICJxZW11LWltZyBjb252ZXJ0IC1PIHZtZGsgJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0gJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0udm1kayIKK0NPTlZFUlNJT05fQ01EX3ZkaSA9ICJxZW11LWltZyBjb252ZXJ0IC1PIHZkaSAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfS52ZGkiCitDT05WRVJTSU9OX0NNRF9xY293MiA9ICJxZW11LWltZyBjb252ZXJ0IC1PIHFjb3cyICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9ICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9LnFjb3cyIgogQ09OVkVSU0lPTl9ERVBFTkRTX2x6bWEgPSAieHotbmF0aXZlIgogQ09OVkVSU0lPTl9ERVBFTkRTX2d6ID0gInBpZ3otbmF0aXZlIgogQ09OVkVSU0lPTl9ERVBFTkRTX2J6MiA9ICJwYnppcDItbmF0aXZlIgpAQCAtMjgyLDE1ICszMDMsMTggQEAKIENPTlZFUlNJT05fREVQRU5EU19zdW0gPSAibXRkLXV0aWxzLW5hdGl2ZSIKIENPTlZFUlNJT05fREVQRU5EU19ibWFwID0gImJtYXAtdG9vbHMtbmF0aXZlIgogQ09OVkVSU0lPTl9ERVBFTkRTX3UtYm9vdCA9ICJ1LWJvb3QtbWtpbWFnZS1uYXRpdmUiCitDT05WRVJTSU9OX0RFUEVORFNfdm1kayA9ICJxZW11LW5hdGl2ZSIKK0NPTlZFUlNJT05fREVQRU5EU192ZGkgPSAicWVtdS1uYXRpdmUiCitDT05WRVJTSU9OX0RFUEVORFNfcWNvdzIgPSAicWVtdS1uYXRpdmUiCiAKIFJVTk5BQkxFX0lNQUdFX1RZUEVTID89ICJleHQyIGV4dDMgZXh0NCIKIFJVTk5BQkxFX01BQ0hJTkVfUEFUVEVSTlMgPz0gInFlbXUiCiAKIERFUExPWUFCTEVfSU1BR0VfVFlQRVMgPz0gImhkZGltZyBpc28iIAogCi0jIFVzZSBJTUFHRV9FWFRFTlNJT05feHh4IHRvIG1hcCBpbWFnZSB0eXBlICd4eHgnIHdpdGggcmVhbCBpbWFnZSBmaWxlIGV4dGVuc2lvbiBuYW1lKHMpIGZvciBIb2IKLUlNQUdFX0VYVEVOU0lPTl9saXZlID0gImhkZGltZyBpc28iCi0KICMgVGhlIElNQUdFX1RZUEVTX01BU0tFRCB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgdG8gbWFzayBvdXQgZnJvbSB0aGUgSU1BR0VfRlNUWVBFUywKICMgaW1hZ2VzIHRoYXQgd2lsbCBub3QgYmUgYnVpbHQgYXQgZG9fcm9vdGZzIHRpbWU6IHZtZGssIHZkaSwgcWNvdzIsIGhkZGRpcmVjdCwgaGRkaW1nLCBpc28sIGV0Yy4KIElNQUdFX1RZUEVTX01BU0tFRCA/PSAiIgorCisjIGJtYXAgcmVxdWlyZXMgcHl0aG9uMyB0byBiZSBpbiB0aGUgUEFUSAorRVhUUkFOQVRJVkVQQVRIICs9ICIke0AncHl0aG9uMy1uYXRpdmUnIGlmIGQuZ2V0VmFyKCdJTUFHRV9GU1RZUEVTJykuZmluZCgnLmJtYXAnKSBlbHNlICcnfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2VfdHlwZXNfd2ljLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2ltYWdlX3R5cGVzX3dpYy5iYmNsYXNzCmluZGV4IDY4ZjI1MWMuLmRjZjYyMGMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2VfdHlwZXNfd2ljLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZV90eXBlc193aWMuYmJjbGFzcwpAQCAtMyw3ICszLDcgQEAKIFdJQ1ZBUlMgPz0gIlwKICAgICAgICAgICAgQkJMQVlFUlMgSU1HREVQTE9ZRElSIERFUExPWV9ESVJfSU1BR0UgRkFLRVJPT1RDTUQgSU1BR0VfQkFTRU5BTUUgSU1BR0VfQk9PVF9GSUxFUyBcCiAgICAgICAgICAgIElNQUdFX0xJTktfTkFNRSBJTUFHRV9ST09URlMgSU5JVFJBTUZTX0ZTVFlQRVMgSU5JVFJEIElOSVRSRF9MSVZFIElTT0RJUiBSRUNJUEVfU1lTUk9PVF9OQVRJVkUgXAotICAgICAgICAgICBST09URlNfU0laRSBTVEFHSU5HX0RBVEFESVIgU1RBR0lOR19ESVIgU1RBR0lOR19MSUJESVIgVEFSR0VUX1NZUyBUUkFOU0xBVEVEX1RBUkdFVF9BUkNIIgorICAgICAgICAgICBST09URlNfU0laRSBTVEFHSU5HX0RBVEFESVIgU1RBR0lOR19ESVIgU1RBR0lOR19MSUJESVIgVEFSR0VUX1NZUyIKIAogV0tTX0ZJTEUgPz89ICIke0lNQUdFX0JBU0VOQU1FfS4ke01BQ0hJTkV9LndrcyIKIFdLU19GSUxFUyA/PSAiJHtXS1NfRklMRX0gJHtJTUFHRV9CQVNFTkFNRX0ud2tzIgpAQCAtMzksOCArMzksMTkgQEAKIFVTSU5HX1dJQyA9ICIke0BiYi51dGlscy5jb250YWluc19hbnkoJ0lNQUdFX0ZTVFlQRVMnLCAnd2ljICcgKyAnICcuam9pbignd2ljLiVzJyAlIGMgZm9yIGMgaW4gJyR7Q09OVkVSU0lPTlRZUEVTfScuc3BsaXQoKSksICcxJywgJycsIGQpfSIKIFdLU19GSUxFX0NIRUNLU1VNID0gIiR7QCcke1dLU19GVUxMX1BBVEh9OiVzJyAlIG9zLnBhdGguZXhpc3RzKCcke1dLU19GVUxMX1BBVEh9JykgaWYgJyR7VVNJTkdfV0lDfScgZWxzZSAnJ30iCiBkb19pbWFnZV93aWNbZmlsZS1jaGVja3N1bXNdICs9ICIke1dLU19GSUxFX0NIRUNLU1VNfSIKLWRvX2ltYWdlX3dpY1tkZXBlbmRzXSArPSAid2ljLXRvb2xzOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCi1XS1NfRklMRV9ERVBFTkRTID8/PSAnJworZG9faW1hZ2Vfd2ljW2RlcGVuZHNdICs9ICIke0AnICcuam9pbignJXMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QnICUgciBmb3IgciBpbiAoJ3BhcnRlZCcsICdncHRmZGlzaycsICdkb3Nmc3Rvb2xzJywgJ210b29scycpKX0iCisKKyMgV2UgZW5zdXJlIGFsbCBhcnRmYWN0cyBhcmUgZGVwbG95ZWQgKGUuZyB2aXJ0dWFsL2Jvb3Rsb2FkZXIpCitkb19pbWFnZV93aWNbcmVjcmRlcHRhc2tdICs9ICJkb19kZXBsb3kiCisKK1dLU19GSUxFX0RFUEVORFNfREVGQVVMVCA9ICJzeXNsaW51eC1uYXRpdmUgYm1hcC10b29scy1uYXRpdmUgY2RydG9vbHMtbmF0aXZlIGJ0cmZzLXRvb2xzLW5hdGl2ZSBzcXVhc2hmcy10b29scy1uYXRpdmUgZTJmc3Byb2dzLW5hdGl2ZSIKK1dLU19GSUxFX0RFUEVORFNfQk9PVExPQURFUlMgPSAiIgorV0tTX0ZJTEVfREVQRU5EU19CT09UTE9BREVSU194ODYgPSAic3lzbGludXggZ3J1Yi1lZmkgc3lzdGVtZC1ib290IgorV0tTX0ZJTEVfREVQRU5EU19CT09UTE9BREVSU194ODYtNjQgPSAic3lzbGludXggZ3J1Yi1lZmkgc3lzdGVtZC1ib290IgorV0tTX0ZJTEVfREVQRU5EU19CT09UTE9BREVSU194ODYteDMyID0gInN5c2xpbnV4IGdydWItZWZpIgorCitXS1NfRklMRV9ERVBFTkRTID8/PSAiJHtXS1NfRklMRV9ERVBFTkRTX0RFRkFVTFR9ICR7V0tTX0ZJTEVfREVQRU5EU19CT09UTE9BREVSU30iCisKIERFUEVORFMgKz0gIiR7QCAnJHtXS1NfRklMRV9ERVBFTkRTfScgaWYgZC5nZXRWYXIoJ1VTSU5HX1dJQycpIGVsc2UgJycgfSIKIAogcHl0aG9uIGRvX3dyaXRlX3drc190ZW1wbGF0ZSAoKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2luc2FuZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9pbnNhbmUuYmJjbGFzcwppbmRleCAwYzExYzM2Li4wYTNiNTI4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2luc2FuZS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvaW5zYW5lLmJiY2xhc3MKQEAgLTE2LDEzICsxNiw4IEBACiAjICAgaW50byBleGVjX3ByZWZpeAogIyAgLUNoZWNrIHRoYXQgc2NyaXB0cyBpbiBiYXNlX1tiaW5kaXJ8c2JpbmRpcnxsaWJkaXJdIGRvIG5vdCByZWZlcmVuY2UKICMgICBmaWxlcyB1bmRlciBleGVjX3ByZWZpeAorIyAgLUNoZWNrIGlmIHRoZSBwYWNrYWdlIG5hbWUgaXMgdXBwZXIgY2FzZQogCi0KLSMgdW5zYWZlLXJlZmVyZW5jZXMtaW4tYmluYXJpZXMgcmVxdWlyZXMgcHJlbGluay1ydGxkIGZyb20KLSMgcHJlbGluay1uYXRpdmUsIGJ1dCB3ZSBkb24ndCB3YW50IHRoaXMgREVQRU5EUyBmb3IgLW5hdGl2ZSBidWlsZHMKLVFBREVQRU5EUyA9ICJwcmVsaW5rLW5hdGl2ZSIKLVFBREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiIgotUUFERVBFTkRTX2NsYXNzLW5hdGl2ZXNkayA9ICIiCiBRQV9TQU5FID0gIlRydWUiCiAKICMgRWxlY3Qgd2hldGhlciBhIGdpdmVuIHR5cGUgb2YgZXJyb3IgaXMgYSB3YXJuaW5nIG9yIGVycm9yLCB0aGV5IG1heQpAQCAtMzIsNyArMjcsNyBAQAogICAgICAgICAgICAgaW5zdGFsbGVkLXZzLXNoaXBwZWQgY29tcGlsZS1ob3N0LXBhdGggaW5zdGFsbC1ob3N0LXBhdGggXAogICAgICAgICAgICAgcG4tb3ZlcnJpZGVzIGluZm9kaXIgYnVpbGQtZGVwcyBcCiAgICAgICAgICAgICB1bmtub3duLWNvbmZpZ3VyZS1vcHRpb24gc3ltbGluay10by1zeXNyb290IG11bHRpbGliIFwKLSAgICAgICAgICAgIGludmFsaWQtcGFja2FnZWNvbmZpZyBob3N0LXVzZXItY29udGFtaW5hdGVkIFwKKyAgICAgICAgICAgIGludmFsaWQtcGFja2FnZWNvbmZpZyBob3N0LXVzZXItY29udGFtaW5hdGVkIHVwcGVyY2FzZS1wbiBcCiAgICAgICAgICAgICAiCiBFUlJPUl9RQSA/PSAiZGV2LXNvIGRlYnVnLWRlcHMgZGV2LWRlcHMgZGVidWctZmlsZXMgYXJjaCBwa2djb25maWcgbGEgXAogICAgICAgICAgICAgcGVybXMgZGVwLWNtcCBwa2d2YXJjaGVjayBwZXJtLWNvbmZpZyBwZXJtLWxpbmUgcGVybS1saW5rIFwKQEAgLTQwLDYgKzM1LDkgQEAKICAgICAgICAgICAgIHZlcnNpb24tZ29pbmctYmFja3dhcmRzIGV4cGFuZGVkLWQgaW52YWxpZC1jaGFycyBcCiAgICAgICAgICAgICBsaWNlbnNlLWNoZWNrc3VtIGRldi1lbGYgZmlsZS1yZGVwcyBcCiAgICAgICAgICAgICAiCisjIEFkZCB1c3JtZXJnZSBRQSBjaGVjayBiYXNlZCBvbiBkaXN0cm8gZmVhdHVyZQorRVJST1JfUUFfYXBwZW5kID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAndXNybWVyZ2UnLCAnIHVzcm1lcmdlJywgJycsIGQpfSIKKwogRkFLRVJPT1RfUUEgPSAiaG9zdC11c2VyLWNvbnRhbWluYXRlZCIKIEZBS0VST09UX1FBW2RvY10gPSAiUUEgdGVzdHMgd2hpY2ggbmVlZCB0byBydW4gdW5kZXIgZmFrZXJvb3QuIElmIGFueSBcCiBlbmFibGVkIHRlc3RzIGFyZSBsaXN0ZWQgaGVyZSwgdGhlIGRvX3BhY2thZ2VfcWEgdGFzayB3aWxsIHJ1biB1bmRlciBmYWtlcm9vdC4iCkBAIC0xMDMsMjMgKzEwMSw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAibWljcm9ibGF6ZWViIjooMTg5LCAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICJtaWNyb2JsYXplZWwiOigxODksICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAibGludXgtdWNsaWJjIiA6IHsgCi0gICAgICAgICAgICAgICAgICAgICAgICAiYXJtIiA6ICAgICAgICggIDQwLCAgICA5NywgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgICAgImFybWViIjogICAgICAoICA0MCwgICAgOTcsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJwb3dlcnBjIjogICAgKCAgMjAsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAiaTM4NiI6ICAgICAgICggICAzLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgICAgImk0ODYiOiAgICAgICAoICAgMywgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJpNTg2IjogICAgICAgKCAgIDMsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAiaTY4NiI6ICAgICAgICggICAzLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIng4Nl82NCI6ICAgICAoICA2MiwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDY0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJtaXBzIjogICAgICAgKCAgIDgsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAibWlwc2VsIjogICAgICggICA4LCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIm1pcHM2NCI6ICAgICAoICAgOCwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDY0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJtaXBzNjRlbCI6ICAgKCAgIDgsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICA2NCksCi0gICAgICAgICAgICAgICAgICAgICAgICAiYXZyMzIiOiAgICAgICg2MzE3LCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgICAgInNoNCI6ICAgICAgICAoNDIsICAgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKLQotICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAibGludXgtbXVzbCIgOiB7IAogICAgICAgICAgICAgICAgICAgICAgICAgImFhcmNoNjQiIDogICAoMTgzLCAgICAwLCAgICAwLCAgICAgICAgICAgIFRydWUsICAgICAgICAgIDY0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICJhYXJjaDY0X2JlIiA6KDE4MywgICAgMCwgICAgMCwgICAgICAgICAgICBGYWxzZSwgICAgICAgICA2NCksCkBAIC0xNTEsMTkgKzEzMiwxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgImFybSIgOiAgICAgICAoNDAsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAiYXJtZWIiIDogICAgICg0MCwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgImxpbnV4LXVjbGliY2VhYmkiIDogewotICAgICAgICAgICAgICAgICAgICAgICAgImFybSIgOiAgICAgICAoNDAsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAiYXJtZWIiIDogICAgICg0MCwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKLSAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgImxpbnV4LWdudXNwZSIgOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAicG93ZXJwYyI6ICAgICgyMCwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgImxpbnV4LW11c2xzcGUiIDogewogICAgICAgICAgICAgICAgICAgICAgICAgInBvd2VycGMiOiAgICAoMjAsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJsaW51eC11Y2xpYmNzcGUiIDogewotICAgICAgICAgICAgICAgICAgICAgICAgInBvd2VycGMiOiAgICAoMjAsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICJsaW51eC1nbnUiIDogICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgInBvd2VycGMiOiAgICAoMjAsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAic2g0IjogICAgICAgICg0MiwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKQEAgLTE3MSw2ICsxNDUsOSBAQAogICAgICAgICAgICAgImxpbnV4LWdudXgzMiIgOiAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAieDg2XzY0IjogICAgICg2MiwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgImxpbnV4LW11c2x4MzIiIDogICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgIng4Nl82NCI6ICAgICAoNjIsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCisgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICJsaW51eC1nbnVuMzIiIDogICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgIm1pcHM2NCI6ICAgICAgICggOCwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICJtaXBzNjRlbCI6ICAgICAoIDgsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCkBAIC0yMDcsMTIgKzE4NCwxMyBAQAogICAgICAgICAgICAgZi53cml0ZSgiJXM6ICVzIFslc11cbiIgJSAocCwgZXJyb3IsIHR5cGUpKQogCiBkZWYgcGFja2FnZV9xYV9oYW5kbGVfZXJyb3IoZXJyb3JfY2xhc3MsIGVycm9yX21zZywgZCk6Ci0gICAgcGFja2FnZV9xYV93cml0ZV9lcnJvcihlcnJvcl9jbGFzcywgZXJyb3JfbXNnLCBkKQogICAgIGlmIGVycm9yX2NsYXNzIGluIChkLmdldFZhcigiRVJST1JfUUEiKSBvciAiIikuc3BsaXQoKToKKyAgICAgICAgcGFja2FnZV9xYV93cml0ZV9lcnJvcihlcnJvcl9jbGFzcywgZXJyb3JfbXNnLCBkKQogICAgICAgICBiYi5lcnJvcigiUUEgSXNzdWU6ICVzIFslc10iICUgKGVycm9yX21zZywgZXJyb3JfY2xhc3MpKQogICAgICAgICBkLnNldFZhcigiUUFfU0FORSIsIEZhbHNlKQogICAgICAgICByZXR1cm4gRmFsc2UKICAgICBlbGlmIGVycm9yX2NsYXNzIGluIChkLmdldFZhcigiV0FSTl9RQSIpIG9yICIiKS5zcGxpdCgpOgorICAgICAgICBwYWNrYWdlX3FhX3dyaXRlX2Vycm9yKGVycm9yX2NsYXNzLCBlcnJvcl9tc2csIGQpCiAgICAgICAgIGJiLndhcm4oIlFBIElzc3VlOiAlcyBbJXNdIiAlIChlcnJvcl9tc2csIGVycm9yX2NsYXNzKSkKICAgICBlbHNlOgogICAgICAgICBiYi5ub3RlKCJRQSBJc3N1ZTogJXMgWyVzXSIgJSAoZXJyb3JfbXNnLCBlcnJvcl9jbGFzcykpCkBAIC00MDgsNzEgKzM4Niw2IEBACiAgICAgIiIiCiAgICAgcmV0dXJuCiAKLVFBUEFUSFRFU1RbdW5zYWZlLXJlZmVyZW5jZXMtaW4tc2NyaXB0c10gPSAicGFja2FnZV9xYV9jaGVja191bnNhZmVfcmVmZXJlbmNlc19pbl9zY3JpcHRzIgotZGVmIHBhY2thZ2VfcWFfY2hlY2tfdW5zYWZlX3JlZmVyZW5jZXNfaW5fc2NyaXB0cyhwYXRoLCBuYW1lLCBkLCBlbGYsIG1lc3NhZ2VzKToKLSAgICAiIiIKLSAgICBXYXJuIGlmIHNjcmlwdHMgaW4gYmFzZV9bYmluZGlyfHNiaW5kaXJ8bGliZGlyXSByZWZlcmVuY2UgZmlsZXMgdW5kZXIgZXhlY19wcmVmaXgKLSAgICAiIiIKLSAgICBpZiB1bnNhZmVfcmVmZXJlbmNlc19za2lwcGFibGUocGF0aCwgbmFtZSwgZCk6Ci0gICAgICAgIHJldHVybgotCi0gICAgaWYgbm90IGVsZjoKLSAgICAgICAgaW1wb3J0IHN0YXQKLSAgICAgICAgaW1wb3J0IHN1YnByb2Nlc3MKLSAgICAgICAgcG4gPSBkLmdldFZhcignUE4nKQotCi0gICAgICAgICMgRW5zdXJlIHdlJ3JlIGNoZWNraW5nIGFuIGV4ZWN1dGFibGUgc2NyaXB0Ci0gICAgICAgIHN0YXRpbmZvID0gb3Muc3RhdChwYXRoKQotICAgICAgICBpZiBib29sKHN0YXRpbmZvLnN0X21vZGUgJiBzdGF0LlNfSVhVU1IpOgotICAgICAgICAgICAgIyBncmVwIHNoZWxsIHNjcmlwdHMgZm9yIHBvc3NpYmxlIHJlZmVyZW5jZXMgdG8gL2V4ZWNfcHJlZml4LwotICAgICAgICAgICAgZXhlY19wcmVmaXggPSBkLmdldFZhcignZXhlY19wcmVmaXgnKQotICAgICAgICAgICAgc3RhdGVtZW50ID0gImdyZXAgLWUgJyVzL1teIDpdXHsxLFx9L1teIDpdXHsxLFx9JyAlcyA+IC9kZXYvbnVsbCIgJSAoZXhlY19wcmVmaXgsIHBhdGgpCi0gICAgICAgICAgICBpZiBzdWJwcm9jZXNzLmNhbGwoc3RhdGVtZW50LCBzaGVsbD1UcnVlKSA9PSAwOgotICAgICAgICAgICAgICAgIGVycm9yX21zZyA9IHBuICsgIjogRm91bmQgYSByZWZlcmVuY2UgdG8gJXMvIGluICVzIiAlIChleGVjX3ByZWZpeCwgcGF0aCkKLSAgICAgICAgICAgICAgICBwYWNrYWdlX3FhX2hhbmRsZV9lcnJvcigidW5zYWZlLXJlZmVyZW5jZXMtaW4tc2NyaXB0cyIsIGVycm9yX21zZywgZCkKLSAgICAgICAgICAgICAgICBlcnJvcl9tc2cgPSAiU2hlbGwgc2NyaXB0cyBpbiBiYXNlX2JpbmRpciBhbmQgYmFzZV9zYmluZGlyIHNob3VsZCBub3QgcmVmZXJlbmNlIGFueXRoaW5nIGluIGV4ZWNfcHJlZml4IgotICAgICAgICAgICAgICAgIHBhY2thZ2VfcWFfaGFuZGxlX2Vycm9yKCJ1bnNhZmUtcmVmZXJlbmNlcy1pbi1zY3JpcHRzIiwgZXJyb3JfbXNnLCBkKQotCi1kZWYgdW5zYWZlX3JlZmVyZW5jZXNfc2tpcHBhYmxlKHBhdGgsIG5hbWUsIGQpOgotICAgIGlmIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ25hdGl2ZScsIGQpIG9yIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ25hdGl2ZXNkaycsIGQpOgotICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgaWYgIi1kYmciIGluIG5hbWUgb3IgIi1kZXYiIGluIG5hbWU6Ci0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICAjIE90aGVyIHBhY2thZ2UgbmFtZXMgdG8gc2tpcDoKLSAgICBpZiBuYW1lLnN0YXJ0c3dpdGgoImtlcm5lbC1tb2R1bGUtIik6Ci0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICAjIFNraXAgc3ltbGlua3MKLSAgICBpZiBvcy5wYXRoLmlzbGluayhwYXRoKToKLSAgICAgICAgcmV0dXJuIFRydWUKLQotICAgICMgU2tpcCB1bnVzdWFsIHJvb3RmcyBsYXlvdXRzIHdoaWNoIG1ha2UgdGhlc2UgdGVzdHMgaXJyZWxldmFudAotICAgIGV4ZWNfcHJlZml4ID0gZC5nZXRWYXIoJ2V4ZWNfcHJlZml4JykKLSAgICBpZiBleGVjX3ByZWZpeCA9PSAiIjoKLSAgICAgICAgcmV0dXJuIFRydWUKLQotICAgIHBrZ2Rlc3QgPSBkLmdldFZhcignUEtHREVTVCcpCi0gICAgcGtnZGVzdCA9IHBrZ2Rlc3QgKyAiLyIgKyBuYW1lCi0gICAgcGtnZGVzdCA9IG9zLnBhdGguYWJzcGF0aChwa2dkZXN0KQotICAgIGJhc2VfYmluZGlyID0gcGtnZGVzdCArIGQuZ2V0VmFyKCdiYXNlX2JpbmRpcicpCi0gICAgYmFzZV9zYmluZGlyID0gcGtnZGVzdCArIGQuZ2V0VmFyKCdiYXNlX3NiaW5kaXInKQotICAgIGJhc2VfbGliZGlyID0gcGtnZGVzdCArIGQuZ2V0VmFyKCdiYXNlX2xpYmRpcicpCi0gICAgYmluZGlyID0gcGtnZGVzdCArIGQuZ2V0VmFyKCdiaW5kaXInKQotICAgIHNiaW5kaXIgPSBwa2dkZXN0ICsgZC5nZXRWYXIoJ3NiaW5kaXInKQotICAgIGxpYmRpciA9IHBrZ2Rlc3QgKyBkLmdldFZhcignbGliZGlyJykKLQotICAgIGlmIGJhc2VfYmluZGlyID09IGJpbmRpciBhbmQgYmFzZV9zYmluZGlyID09IHNiaW5kaXIgYW5kIGJhc2VfbGliZGlyID09IGxpYmRpcjoKLSAgICAgICAgcmV0dXJuIFRydWUKLQotICAgICMgU2tpcCBmaWxlcyBub3QgaW4gYmFzZV9bYmluZGlyfHNiaW5kaXJ8bGliZGlyXQotICAgIHBhdGggPSBvcy5wYXRoLmFic3BhdGgocGF0aCkKLSAgICBpZiBub3QgKGJhc2VfYmluZGlyIGluIHBhdGggb3IgYmFzZV9zYmluZGlyIGluIHBhdGggb3IgYmFzZV9saWJkaXIgaW4gcGF0aCk6Ci0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICByZXR1cm4gRmFsc2UKLQogUUFQQVRIVEVTVFthcmNoXSA9ICJwYWNrYWdlX3FhX2NoZWNrX2FyY2giCiBkZWYgcGFja2FnZV9xYV9jaGVja19hcmNoKHBhdGgsbmFtZSxkLCBlbGYsIG1lc3NhZ2VzKToKICAgICAiIiIKQEAgLTUwOSw3ICs0MjIsNyBAQAogCiAgICAgIyBDaGVjayB0aGUgYXJjaGl0ZWN0dXJlIGFuZCBlbmRpYW5uZXMgb2YgdGhlIGJpbmFyeQogICAgIGlzXzMyID0gKCgidmlydHVhbC9rZXJuZWwiIGluIHByb3ZpZGVzKSBvciBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCJtb2R1bGUiLCBkKSkgYW5kIFwKLSAgICAgICAgICAgICh0YXJnZXRfb3MgPT0gImxpbnV4LWdudXgzMiIgb3IgcmUubWF0Y2goJ21pcHM2NC4qMzInLCBkLmdldFZhcignREVGQVVMVFRVTkUnKSkpCisgICAgICAgICAgICAodGFyZ2V0X29zID09ICJsaW51eC1nbnV4MzIiIG9yIHRhcmdldF9vcyA9PSAibGludXgtbXVzbHgzMiIgIG9yIHJlLm1hdGNoKCdtaXBzNjQuKjMyJywgZC5nZXRWYXIoJ0RFRkFVTFRUVU5FJykpKQogICAgIGlmIG5vdCAoKG1hY2hpbmUgPT0gZWxmLm1hY2hpbmUoKSkgb3IgaXNfMzIpOgogICAgICAgICBwYWNrYWdlX3FhX2FkZF9tZXNzYWdlKG1lc3NhZ2VzLCAiYXJjaCIsICJBcmNoaXRlY3R1cmUgZGlkIG5vdCBtYXRjaCAoJXMsIGV4cGVjdGVkICVzKSBvbiAlcyIgJSBcCiAgICAgICAgICAgICAgICAgIChvZS5xYS5lbGZfbWFjaGluZV90b19zdHJpbmcoZWxmLm1hY2hpbmUoKSksIG9lLnFhLmVsZl9tYWNoaW5lX3RvX3N0cmluZyhtYWNoaW5lKSwgcGFja2FnZV9xYV9jbGVhbl9wYXRoKHBhdGgsZCkpKQpAQCAtNjc3LDcgKzU5MCw3IEBACiAgICAgICAgIHNhbmUgPSBwYWNrYWdlX3FhX2hhbmRsZV9lcnJvcigibGljZW5zZS1jaGVja3N1bSIsIHBuICsgIjogUmVjaXBlIGZpbGUgZmV0Y2hlcyBmaWxlcyBhbmQgZG9lcyBub3QgaGF2ZSBsaWNlbnNlIGZpbGUgaW5mb3JtYXRpb24gKExJQ19GSUxFU19DSEtTVU0pIiwgZCkKIAogICAgIHNyY2RpciA9IGQuZ2V0VmFyKCdTJykKLQorICAgIGNvcmViYXNlX2xpY2Vuc2VmaWxlID0gZC5nZXRWYXIoJ0NPUkVCQVNFJykgKyAiL0xJQ0VOU0UiCiAgICAgZm9yIHVybCBpbiBsaWNfZmlsZXMuc3BsaXQoKToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgKHR5cGUsIGhvc3QsIHBhdGgsIHVzZXIsIHBzd2QsIHBhcm0pID0gYmIuZmV0Y2guZGVjb2RldXJsKHVybCkKQEAgLTY4OSw2ICs2MDIsOSBAQAogICAgICAgICAgICAgcGFja2FnZV9xYV9oYW5kbGVfZXJyb3IoImxpY2Vuc2UtY2hlY2tzdW0iLCBwbiArICI6IExJQ19GSUxFU19DSEtTVU0gcG9pbnRzIHRvIGFuIGludmFsaWQgZmlsZTogIiArIHNyY2xpY2ZpbGUsIGQpCiAgICAgICAgICAgICBjb250aW51ZQogCisgICAgICAgIGlmIChzcmNsaWNmaWxlID09IGNvcmViYXNlX2xpY2Vuc2VmaWxlKToKKyAgICAgICAgICAgIGJiLndhcm4oIiR7Q09SRUJBU0V9L0xJQ0VOU0UgaXMgbm90IGEgdmFsaWQgbGljZW5zZSBmaWxlLCBwbGVhc2UgdXNlICcke0NPTU1PTl9MSUNFTlNFX0RJUn0vTUlUJyBmb3IgYSBNSVQgTGljZW5zZSBmaWxlIGluIExJQ19GSUxFU19DSEtTVU0uIFRoaXMgd2lsbCBiZWNvbWUgYW4gZXJyb3IgaW4gdGhlIGZ1dHVyZSIpCisKICAgICAgICAgcmVjaXBlbWQ1ID0gcGFybS5nZXQoJ21kNScsICcnKQogICAgICAgICBiZWdpbmxpbmUsIGVuZGxpbmUgPSAwLCAwCiAgICAgICAgIGlmICdiZWdpbmxpbmUnIGluIHBhcm06CkBAIC04MTYsNyArNzMyLDcgQEAKICAgICByZXR1cm4gc2FuZQogCiAjIFJ1biBhbGwgcGFja2FnZS13aWRlIHdhcm5mdW5jcyBhbmQgZXJyb3JmdW5jcwotZGVmIHBhY2thZ2VfcWFfcGFja2FnZSh3YXJuZnVuY3MsIGVycm9yZnVuY3MsIHNraXAsIHBhY2thZ2UsIGQpOgorZGVmIHBhY2thZ2VfcWFfcGFja2FnZSh3YXJuZnVuY3MsIGVycm9yZnVuY3MsIHBhY2thZ2UsIGQpOgogICAgIHdhcm5pbmdzID0ge30KICAgICBlcnJvcnMgPSB7fQogCkBAIC04MzIsOCArNzQ4LDI1IEBACiAKICAgICByZXR1cm4gbGVuKGVycm9ycykgPT0gMAogCisjIFJ1biBhbGwgcmVjaXBlLXdpZGUgd2FybmZ1bmNzIGFuZCBlcnJvcmZ1bmNzCitkZWYgcGFja2FnZV9xYV9yZWNpcGUod2FybmZ1bmNzLCBlcnJvcmZ1bmNzLCBwbiwgZCk6CisgICAgd2FybmluZ3MgPSB7fQorICAgIGVycm9ycyA9IHt9CisKKyAgICBmb3IgZnVuYyBpbiB3YXJuZnVuY3M6CisgICAgICAgIGZ1bmMocG4sIGQsIHdhcm5pbmdzKQorICAgIGZvciBmdW5jIGluIGVycm9yZnVuY3M6CisgICAgICAgIGZ1bmMocG4sIGQsIGVycm9ycykKKworICAgIGZvciB3IGluIHdhcm5pbmdzOgorICAgICAgICBwYWNrYWdlX3FhX2hhbmRsZV9lcnJvcih3LCB3YXJuaW5nc1t3XSwgZCkKKyAgICBmb3IgZSBpbiBlcnJvcnM6CisgICAgICAgIHBhY2thZ2VfcWFfaGFuZGxlX2Vycm9yKGUsIGVycm9yc1tlXSwgZCkKKworICAgIHJldHVybiBsZW4oZXJyb3JzKSA9PSAwCisKICMgV2FsayBvdmVyIGFsbCBmaWxlcyBpbiBhIGRpcmVjdG9yeSBhbmQgY2FsbCBmdW5jCi1kZWYgcGFja2FnZV9xYV93YWxrKHdhcm5mdW5jcywgZXJyb3JmdW5jcywgc2tpcCwgcGFja2FnZSwgZCk6CitkZWYgcGFja2FnZV9xYV93YWxrKHdhcm5mdW5jcywgZXJyb3JmdW5jcywgcGFja2FnZSwgZCk6CiAgICAgaW1wb3J0IG9lLnFhCiAKICAgICAjaWYgdGhpcyB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiwgdGhlbiBmaXggdGhlIGRpY3QgYWJvdmUKQEAgLTk3Myw4ICs5MDYsOSBAQAogICAgICAgICAgICAgICAgICAgICBlcnJvcl9tc2cgPSAiJXMgY29udGFpbmVkIGluIHBhY2thZ2UgJXMgcmVxdWlyZXMgJXMsIGJ1dCBubyBwcm92aWRlcnMgZm91bmQgaW4gUkRFUEVORFNfJXM/IiAlIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmlsZXJkZXBlbmRzW2tleV0ucmVwbGFjZSgiXyVzIiAlIHBrZywgIiIpLnJlcGxhY2UoIkB1bmRlcnNjb3JlQCIsICJfIiksIHBrZywga2V5LCBwa2cpCiAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VfcWFfaGFuZGxlX2Vycm9yKCJmaWxlLXJkZXBzIiwgZXJyb3JfbXNnLCBkKQorcGFja2FnZV9xYV9jaGVja19yZGVwZW5kc1t2YXJkZXBzZXhjbHVkZV0gPSAiT1ZFUlJJREVTIgogCi1kZWYgcGFja2FnZV9xYV9jaGVja19kZXBzKHBrZywgcGtnZGVzdCwgc2tpcCwgZCk6CitkZWYgcGFja2FnZV9xYV9jaGVja19kZXBzKHBrZywgcGtnZGVzdCwgZCk6CiAKICAgICBsb2NhbGRhdGEgPSBiYi5kYXRhLmNyZWF0ZUNvcHkoZCkKICAgICBsb2NhbGRhdGEuc2V0VmFyKCdPVkVSUklERVMnLCBwa2cpCkBAIC05OTcsNiArOTMxLDE4IEBACiAgICAgY2hlY2tfdmFsaWRfZGVwcygnUlJFUExBQ0VTJykKICAgICBjaGVja192YWxpZF9kZXBzKCdSQ09ORkxJQ1RTJykKIAorUUFQS0dURVNUW3Vzcm1lcmdlXSA9ICJwYWNrYWdlX3FhX2NoZWNrX3Vzcm1lcmdlIgorZGVmIHBhY2thZ2VfcWFfY2hlY2tfdXNybWVyZ2UocGtnLCBkLCBtZXNzYWdlcyk6CisgICAgcGtnZGVzdCA9IGQuZ2V0VmFyKCdQS0dERVNUJykKKyAgICBwa2dfZGlyID0gcGtnZGVzdCArIG9zLnNlcCArIHBrZyArIG9zLnNlcAorICAgIG1lcmdlZF9kaXJzID0gWydiaW4nLCAnc2JpbicsICdsaWInXSArIGQuZ2V0VmFyKCdNVUxUSUxJQl9WQVJJQU5UUycpLnNwbGl0KCkKKyAgICBmb3IgZiBpbiBtZXJnZWRfZGlyczoKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMocGtnX2RpciArIGYpIGFuZCBub3Qgb3MucGF0aC5pc2xpbmsocGtnX2RpciArIGYpOgorICAgICAgICAgICAgbXNnID0gIiVzIHBhY2thZ2UgaXMgbm90IG9iZXlpbmcgdXNybWVyZ2UgZGlzdHJvIGZlYXR1cmUuIC8lcyBzaG91bGQgYmUgcmVsb2NhdGVkIHRvIC91c3IuIiAlIChwa2csIGYpCisgICAgICAgICAgICBwYWNrYWdlX3FhX2FkZF9tZXNzYWdlKG1lc3NhZ2VzLCAidXNybWVyZ2UiLCBtc2cpCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICByZXR1cm4gVHJ1ZQorCiBRQVBLR1RFU1RbZXhwYW5kZWQtZF0gPSAicGFja2FnZV9xYV9jaGVja19leHBhbmRlZF9kIgogZGVmIHBhY2thZ2VfcWFfY2hlY2tfZXhwYW5kZWRfZChwYWNrYWdlLCBkLCBtZXNzYWdlcyk6CiAgICAgIiIiCkBAIC0xMDcwLDYgKzEwMTYsNyBAQAogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgcmV0dXJuIFRydWUKIAorCiAjIFRoZSBQQUNLQUdFIEZVTkMgdG8gc2NhbiBlYWNoIHBhY2thZ2UKIHB5dGhvbiBkb19wYWNrYWdlX3FhICgpIHsKICAgICBpbXBvcnQgc3VicHJvY2VzcwpAQCAtMTA4Myw3ICsxMDMwLDcgQEAKICAgICBwYWNrYWdlX3FhX2NoZWNrX2VuY29kaW5nKFsnREVTQ1JJUFRJT04nLCAnU1VNTUFSWScsICdMSUNFTlNFJywgJ1NFQ1RJT04nXSwgJ3V0Zi04JywgZCkKIAogICAgIGxvZ2RpciA9IGQuZ2V0VmFyKCdUJykKLSAgICBwa2cgPSBkLmdldFZhcignUE4nKQorICAgIHBuID0gZC5nZXRWYXIoJ1BOJykKIAogICAgICMgQ2hlY2sgdGhlIGNvbXBpbGUgbG9nIGZvciBob3N0IGNvbnRhbWluYXRpb24KICAgICBjb21waWxlbG9nID0gb3MucGF0aC5qb2luKGxvZ2RpciwibG9nLmRvX2NvbXBpbGUiKQpAQCAtMTA5Miw3ICsxMDM5LDcgQEAKICAgICAgICAgc3RhdGVtZW50ID0gImdyZXAgLWUgJ0NST1NTIENPTVBJTEUgQmFkbmVzczonIC1lICdpcyB1bnNhZmUgZm9yIGNyb3NzLWNvbXBpbGF0aW9uJyAlcyA+IC9kZXYvbnVsbCIgJSBjb21waWxlbG9nCiAgICAgICAgIGlmIHN1YnByb2Nlc3MuY2FsbChzdGF0ZW1lbnQsIHNoZWxsPVRydWUpID09IDA6CiAgICAgICAgICAgICBtc2cgPSAiJXM6IFRoZSBjb21waWxlIGxvZyBpbmRpY2F0ZXMgdGhhdCBob3N0IGluY2x1ZGUgYW5kL29yIGxpYnJhcnkgcGF0aHMgd2VyZSB1c2VkLlxuIFwKLSAgICAgICAgUGxlYXNlIGNoZWNrIHRoZSBsb2cgJyVzJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iICUgKHBrZywgY29tcGlsZWxvZykKKyAgICAgICAgUGxlYXNlIGNoZWNrIHRoZSBsb2cgJyVzJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iICUgKHBuLCBjb21waWxlbG9nKQogICAgICAgICAgICAgcGFja2FnZV9xYV9oYW5kbGVfZXJyb3IoImNvbXBpbGUtaG9zdC1wYXRoIiwgbXNnLCBkKQogCiAgICAgIyBDaGVjayB0aGUgaW5zdGFsbCBsb2cgZm9yIGhvc3QgY29udGFtaW5hdGlvbgpAQCAtMTEwMiw3ICsxMDQ5LDcgQEAKICAgICAgICAgc3RhdGVtZW50ID0gImdyZXAgLWUgJ0NST1NTIENPTVBJTEUgQmFkbmVzczonIC1lICdpcyB1bnNhZmUgZm9yIGNyb3NzLWNvbXBpbGF0aW9uJyAlcyA+IC9kZXYvbnVsbCIgJSBpbnN0YWxsbG9nCiAgICAgICAgIGlmIHN1YnByb2Nlc3MuY2FsbChzdGF0ZW1lbnQsIHNoZWxsPVRydWUpID09IDA6CiAgICAgICAgICAgICBtc2cgPSAiJXM6IFRoZSBpbnN0YWxsIGxvZyBpbmRpY2F0ZXMgdGhhdCBob3N0IGluY2x1ZGUgYW5kL29yIGxpYnJhcnkgcGF0aHMgd2VyZSB1c2VkLlxuIFwKLSAgICAgICAgUGxlYXNlIGNoZWNrIHRoZSBsb2cgJyVzJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iICUgKHBrZywgaW5zdGFsbGxvZykKKyAgICAgICAgUGxlYXNlIGNoZWNrIHRoZSBsb2cgJyVzJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iICUgKHBuLCBpbnN0YWxsbG9nKQogICAgICAgICAgICAgcGFja2FnZV9xYV9oYW5kbGVfZXJyb3IoImluc3RhbGwtaG9zdC1wYXRoIiwgbXNnLCBkKQogCiAgICAgIyBTY2FuIHRoZSBwYWNrYWdlcy4uLgpAQCAtMTEzMSwzNSArMTA3OCwzMCBAQAogICAgIGZvciBkZXAgaW4gdGFza2RlcGRhdGE6CiAgICAgICAgIHRhc2tkZXBzLmFkZCh0YXNrZGVwZGF0YVtkZXBdWzBdKQogCisgICAgZGVmIHBhcnNlX3Rlc3RfbWF0cml4KG1hdHJpeF9uYW1lKToKKyAgICAgICAgdGVzdG1hdHJpeCA9IGQuZ2V0VmFyRmxhZ3MobWF0cml4X25hbWUpIG9yIHt9CisgICAgICAgIGcgPSBnbG9iYWxzKCkKKyAgICAgICAgd2FybmNoZWNrcyA9IFtdCisgICAgICAgIGZvciB3IGluIChkLmdldFZhcigiV0FSTl9RQSIpIG9yICIiKS5zcGxpdCgpOgorICAgICAgICAgICAgaWYgdyBpbiBza2lwOgorICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIHcgaW4gdGVzdG1hdHJpeCBhbmQgdGVzdG1hdHJpeFt3XSBpbiBnOgorICAgICAgICAgICAgICAgIHdhcm5jaGVja3MuYXBwZW5kKGdbdGVzdG1hdHJpeFt3XV0pCisKKyAgICAgICAgZXJyb3JjaGVja3MgPSBbXQorICAgICAgICBmb3IgZSBpbiAoZC5nZXRWYXIoIkVSUk9SX1FBIikgb3IgIiIpLnNwbGl0KCk6CisgICAgICAgICAgICBpZiBlIGluIHNraXA6CisgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgZSBpbiB0ZXN0bWF0cml4IGFuZCB0ZXN0bWF0cml4W2VdIGluIGc6CisgICAgICAgICAgICAgICAgZXJyb3JjaGVja3MuYXBwZW5kKGdbdGVzdG1hdHJpeFtlXV0pCisgICAgICAgIHJldHVybiB3YXJuY2hlY2tzLCBlcnJvcmNoZWNrcworCiAgICAgZm9yIHBhY2thZ2UgaW4gcGFja2FnZXM6Ci0gICAgICAgIGRlZiBwYXJzZV90ZXN0X21hdHJpeChtYXRyaXhfbmFtZSk6Ci0gICAgICAgICAgICB0ZXN0bWF0cml4ID0gZC5nZXRWYXJGbGFncyhtYXRyaXhfbmFtZSkgb3Ige30KLSAgICAgICAgICAgIGcgPSBnbG9iYWxzKCkKLSAgICAgICAgICAgIHdhcm5jaGVja3MgPSBbXQotICAgICAgICAgICAgZm9yIHcgaW4gKGQuZ2V0VmFyKCJXQVJOX1FBIikgb3IgIiIpLnNwbGl0KCk6Ci0gICAgICAgICAgICAgICAgaWYgdyBpbiBza2lwOgotICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgaWYgdyBpbiB0ZXN0bWF0cml4IGFuZCB0ZXN0bWF0cml4W3ddIGluIGc6Ci0gICAgICAgICAgICAgICAgICAgIHdhcm5jaGVja3MuYXBwZW5kKGdbdGVzdG1hdHJpeFt3XV0pCi0gICAgICAgICAgICAgICAgaWYgdyA9PSAndW5zYWZlLXJlZmVyZW5jZXMtaW4tYmluYXJpZXMnOgotICAgICAgICAgICAgICAgICAgICBvZS51dGlscy53cml0ZV9sZF9zb19jb25mKGQpCi0KLSAgICAgICAgICAgIGVycm9yY2hlY2tzID0gW10KLSAgICAgICAgICAgIGZvciBlIGluIChkLmdldFZhcigiRVJST1JfUUEiKSBvciAiIikuc3BsaXQoKToKLSAgICAgICAgICAgICAgICBpZiBlIGluIHNraXA6Ci0gICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBpZiBlIGluIHRlc3RtYXRyaXggYW5kIHRlc3RtYXRyaXhbZV0gaW4gZzoKLSAgICAgICAgICAgICAgICAgICAgZXJyb3JjaGVja3MuYXBwZW5kKGdbdGVzdG1hdHJpeFtlXV0pCi0gICAgICAgICAgICAgICAgaWYgZSA9PSAndW5zYWZlLXJlZmVyZW5jZXMtaW4tYmluYXJpZXMnOgotICAgICAgICAgICAgICAgICAgICBvZS51dGlscy53cml0ZV9sZF9zb19jb25mKGQpCi0gICAgICAgICAgICByZXR1cm4gd2FybmNoZWNrcywgZXJyb3JjaGVja3MKLQogICAgICAgICBza2lwID0gc2V0KChkLmdldFZhcignSU5TQU5FX1NLSVAnKSBvciAiIikuc3BsaXQoKSArCiAgICAgICAgICAgICAgICAgICAgKGQuZ2V0VmFyKCdJTlNBTkVfU0tJUF8nICsgcGFja2FnZSkgb3IgIiIpLnNwbGl0KCkpCiAgICAgICAgIGlmIHNraXA6CiAgICAgICAgICAgICBiYi5ub3RlKCJQYWNrYWdlICVzIHNraXBwaW5nIFFBIHRlc3RzOiAlcyIgJSAocGFja2FnZSwgc3RyKHNraXApKSkKIAotCiAgICAgICAgIGJiLm5vdGUoIkNoZWNraW5nIFBhY2thZ2U6ICVzIiAlIHBhY2thZ2UpCiAgICAgICAgICMgQ2hlY2sgcGFja2FnZSBuYW1lCiAgICAgICAgIGlmIG5vdCBwa2duYW1lX3BhdHRlcm4ubWF0Y2gocGFja2FnZSk6CkBAIC0xMTY3LDEzICsxMTA5LDE2IEBACiAgICAgICAgICAgICAgICAgICAgICIlcyBkb2Vzbid0IG1hdGNoIHRoZSBbYS16MC05ListXSsgcmVnZXgiICUgcGFja2FnZSwgZCkKIAogICAgICAgICB3YXJuX2NoZWNrcywgZXJyb3JfY2hlY2tzID0gcGFyc2VfdGVzdF9tYXRyaXgoIlFBUEFUSFRFU1QiKQotICAgICAgICBwYWNrYWdlX3FhX3dhbGsod2Fybl9jaGVja3MsIGVycm9yX2NoZWNrcywgc2tpcCwgcGFja2FnZSwgZCkKKyAgICAgICAgcGFja2FnZV9xYV93YWxrKHdhcm5fY2hlY2tzLCBlcnJvcl9jaGVja3MsIHBhY2thZ2UsIGQpCiAKICAgICAgICAgd2Fybl9jaGVja3MsIGVycm9yX2NoZWNrcyA9IHBhcnNlX3Rlc3RfbWF0cml4KCJRQVBLR1RFU1QiKQotICAgICAgICBwYWNrYWdlX3FhX3BhY2thZ2Uod2Fybl9jaGVja3MsIGVycm9yX2NoZWNrcywgc2tpcCwgcGFja2FnZSwgZCkKKyAgICAgICAgcGFja2FnZV9xYV9wYWNrYWdlKHdhcm5fY2hlY2tzLCBlcnJvcl9jaGVja3MsIHBhY2thZ2UsIGQpCiAKICAgICAgICAgcGFja2FnZV9xYV9jaGVja19yZGVwZW5kcyhwYWNrYWdlLCBwa2dkZXN0LCBza2lwLCB0YXNrZGVwcywgcGFja2FnZXMsIGQpCi0gICAgICAgIHBhY2thZ2VfcWFfY2hlY2tfZGVwcyhwYWNrYWdlLCBwa2dkZXN0LCBza2lwLCBkKQorICAgICAgICBwYWNrYWdlX3FhX2NoZWNrX2RlcHMocGFja2FnZSwgcGtnZGVzdCwgZCkKKworICAgIHdhcm5fY2hlY2tzLCBlcnJvcl9jaGVja3MgPSBwYXJzZV90ZXN0X21hdHJpeCgiUUFSRUNJUEVURVNUIikKKyAgICBwYWNrYWdlX3FhX3JlY2lwZSh3YXJuX2NoZWNrcywgZXJyb3JfY2hlY2tzLCBwbiwgZCkKIAogICAgIGlmICdsaWJkaXInIGluIGQuZ2V0VmFyKCJBTExfUUEiKS5zcGxpdCgpOgogICAgICAgICBwYWNrYWdlX3FhX2NoZWNrX2xpYmRpcihkKQpAQCAtMTIzOCwxMiArMTE4MywxMCBAQAogICAgIGNuZiA9IGQuZ2V0VmFyKCdFWFRSQV9PRUNPTkYnKSBvciAiIgogICAgIGlmICJnZXR0ZXh0IiBub3QgaW4gZC5nZXRWYXIoJ1AnKSBhbmQgImdjYy1ydW50aW1lIiBub3QgaW4gZC5nZXRWYXIoJ1AnKSBhbmQgIi0tZGlzYWJsZS1ubHMiIG5vdCBpbiBjbmY6CiAgICAgICAgIG1sID0gZC5nZXRWYXIoIk1MUFJFRklYIikgb3IgIiIKLSAgICAgICAgaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnbmF0aXZlJywgZCkgb3IgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnY3Jvc3MnLCBkKSBvciBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdjcm9zc3NkaycsIGQpIG9yIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ25hdGl2ZXNkaycsIGQpOgotICAgICAgICAgICAgZ3QgPSAiZ2V0dGV4dC1uYXRpdmUiCi0gICAgICAgIGVsaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnY3Jvc3MtY2FuYWRpYW4nLCBkKToKKyAgICAgICAgaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnY3Jvc3MtY2FuYWRpYW4nLCBkKToKICAgICAgICAgICAgIGd0ID0gIm5hdGl2ZXNkay1nZXR0ZXh0IgogICAgICAgICBlbHNlOgotICAgICAgICAgICAgZ3QgPSAidmlydHVhbC8iICsgbWwgKyAiZ2V0dGV4dCIKKyAgICAgICAgICAgIGd0ID0gImdldHRleHQtbmF0aXZlIgogICAgICAgICBkZXBzID0gYmIudXRpbHMuZXhwbG9kZV9kZXBzKGQuZ2V0VmFyKCdERVBFTkRTJykgb3IgIiIpCiAgICAgICAgIGlmIGd0IG5vdCBpbiBkZXBzOgogICAgICAgICAgICAgZm9yIGNvbmZpZyBpbiBjb25maWdzOgpAQCAtMTMwOCw2ICsxMjUxLDggQEAKIGRvX3VucGFja1twb3N0ZnVuY3NdICs9ICJkb19xYV91bnBhY2siCiAKIHB5dGhvbiAoKSB7CisgICAgaW1wb3J0IHJlCisgICAgCiAgICAgdGVzdHMgPSBkLmdldFZhcignQUxMX1FBJykuc3BsaXQoKQogICAgIGlmICJkZXNrdG9wIiBpbiB0ZXN0czoKICAgICAgICAgZC5hcHBlbmRWYXIoIlBBQ0tBR0VfREVQRU5EUyIsICIgZGVza3RvcC1maWxlLXV0aWxzLW5hdGl2ZSIpCkBAIC0xMzM0LDYgKzEyNzksOSBAQAogICAgIGlmIHBuIGluIG92ZXJyaWRlczoKICAgICAgICAgbXNnID0gJ1JlY2lwZSAlcyBoYXMgUE4gb2YgIiVzIiB3aGljaCBpcyBpbiBPVkVSUklERVMsIHRoaXMgY2FuIHJlc3VsdCBpbiB1bmV4cGVjdGVkIGJlaGF2aW91ci4nICUgKGQuZ2V0VmFyKCJGSUxFIiksIHBuKQogICAgICAgICBwYWNrYWdlX3FhX2hhbmRsZV9lcnJvcigicG4tb3ZlcnJpZGVzIiwgbXNnLCBkKQorICAgIHByb2cgPSByZS5jb21waWxlKCdbQS1aXScpCisgICAgaWYgcHJvZy5zZWFyY2gocG4pOgorICAgICAgICBwYWNrYWdlX3FhX2hhbmRsZV9lcnJvcigidXBwZXJjYXNlLXBuIiwgJ1BOOiAlcyBpcyB1cHBlciBjYXNlLCB0aGlzIGNhbiByZXN1bHQgaW4gdW5leHBlY3RlZCBiZWhhdmlvci4nICUgcG4sIGQpCiAKICAgICBpc3N1ZXMgPSBbXQogICAgIGlmIChkLmdldFZhcignUEFDS0FHRVMnKSBvciAiIikuc3BsaXQoKToKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLWRldmljZXRyZWUuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLWRldmljZXRyZWUuYmJjbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTA4YmU0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtZGV2aWNldHJlZS5iYmNsYXNzCkBAIC0wLDAgKzEsMTEyIEBACisjIFN1cHBvcnQgZm9yIGRldmljZSB0cmVlIGdlbmVyYXRpb24KK1BBQ0tBR0VTX2FwcGVuZCA9ICIgXAorICAgIGtlcm5lbC1kZXZpY2V0cmVlIFwKKyAgICAke0BbJ2tlcm5lbC1pbWFnZS16aW1hZ2UtYnVuZGxlJywgJyddW2QuZ2V0VmFyKCdLRVJORUxfREVWSUNFVFJFRV9CVU5ETEUnKSAhPSAnMSddfSBcCisiCitGSUxFU19rZXJuZWwtZGV2aWNldHJlZSA9ICIvJHtLRVJORUxfSU1BR0VERVNUfS8qLmR0YiAvJHtLRVJORUxfSU1BR0VERVNUfS8qLmR0Ym8iCitGSUxFU19rZXJuZWwtaW1hZ2UtemltYWdlLWJ1bmRsZSA9ICIvJHtLRVJORUxfSU1BR0VERVNUfS96SW1hZ2UtKi5kdGIuYmluIgorCisjIEdlbmVyYXRlIGtlcm5lbCtkZXZpY2V0cmVlIGJ1bmRsZQorS0VSTkVMX0RFVklDRVRSRUVfQlVORExFID89ICIwIgorCitub3JtYWxpemVfZHRiICgpIHsKKwlEVEI9IiQxIgorCWlmIGVjaG8gJHtEVEJ9IHwgZ3JlcCAtcSAnL2R0cy8nOyB0aGVuCisJCWJid2FybiAiJHtEVEJ9IGNvbnRhaW5zIHRoZSBmdWxsIHBhdGggdG8gdGhlIHRoZSBkdHMgZmlsZSwgYnV0IG9ubHkgdGhlIGR0YiBuYW1lIHNob3VsZCBiZSB1c2VkLiIKKwkJRFRCPWBiYXNlbmFtZSAke0RUQn0gfCBzZWQgJ3MsXC5kdHMkLC5kdGIsZydgCisJZmkKKwllY2hvICIke0RUQn0iCit9CisKK2dldF9yZWFsX2R0Yl9wYXRoX2luX2tlcm5lbCAoKSB7CisJRFRCPSIkMSIKKwlEVEJfUEFUSD0iJHtCfS9hcmNoLyR7QVJDSH0vYm9vdC9kdHMvJHtEVEJ9IgorCWlmIFsgISAtZSAiJHtEVEJfUEFUSH0iIF07IHRoZW4KKwkJRFRCX1BBVEg9IiR7Qn0vYXJjaC8ke0FSQ0h9L2Jvb3QvJHtEVEJ9IgorCWZpCisJZWNobyAiJHtEVEJfUEFUSH0iCit9CisKK2RvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7CisJaWYgWyAiJHtLRVJORUxfREVWSUNFVFJFRV9CVU5ETEV9IiA9ICIxIiBdOyB0aGVuCisJCWlmIGVjaG8gJHtLRVJORUxfSU1BR0VUWVBFX0ZPUl9NQUtFfSB8IGdyZXAgLXEgJ3pJbWFnZSc7IHRoZW4KKwkJCWNhc2UgIiR7QVJDSH0iIGluCisJCQkJImFybSIpCisJCQkJY29uZmlnPSIke0J9Ly5jb25maWciCisJCQkJaWYgISBncmVwIC1xICdDT05GSUdfQVJNX0FQUEVOREVEX0RUQj15JyAkY29uZmlnOyB0aGVuCisJCQkJCWJid2FybiAnQ09ORklHX0FSTV9BUFBFTkRFRF9EVEIgaXMgTk9UIGVuYWJsZWQgaW4gdGhlIGtlcm5lbC4gRW5hYmxpbmcgaXQgdG8gYWxsb3cgdGhlIGtlcm5lbCB0byBib290IHdpdGggdGhlIERldmljZSBUcmVlIGFwcGVuZGVkIScKKwkJCQkJc2VkIC1pICIvQ09ORklHX0FSTV9BUFBFTkRFRF9EVEJbID1dL2QiICRjb25maWcKKwkJCQkJZWNobyAiQ09ORklHX0FSTV9BUFBFTkRFRF9EVEI9eSIgPj4gJGNvbmZpZworCQkJCQllY2hvICIjIENPTkZJR19BUk1fQVRBR19EVEJfQ09NUEFUIGlzIG5vdCBzZXQiID4+ICRjb25maWcKKwkJCQlmaQorCQkJCTs7CisJCQkJKikKKwkJCQliYmVycm9yICJLRVJORUxfREVWSUNFVFJFRV9CVU5ETEUgaXMgbm90IHN1cHBvcnRlZCBmb3IgJHtBUkNIfS4gQ3VycmVudGx5IGl0IGlzIG9ubHkgc3VwcG9ydGVkIGZvciAnQVJNJy4iCisJCQllc2FjCisJCWVsc2UKKwkJCWJiZXJyb3IgJ1RoZSBLRVJORUxfREVWSUNFVFJFRV9CVU5ETEUgcmVxdWlyZXMgdGhlIEtFUk5FTF9JTUFHRVRZUEUgdG8gY29udGFpbiB6SW1hZ2UuJworCQlmaQorCWZpCit9CisKK2RvX2NvbXBpbGVfYXBwZW5kKCkgeworCWZvciBEVEIgaW4gJHtLRVJORUxfREVWSUNFVFJFRX07IGRvCisJCURUQj1gbm9ybWFsaXplX2R0YiAiJHtEVEJ9ImAKKwkJb2VfcnVubWFrZSAke0RUQn0KKwlkb25lCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCWZvciBEVEIgaW4gJHtLRVJORUxfREVWSUNFVFJFRX07IGRvCisJCURUQj1gbm9ybWFsaXplX2R0YiAiJHtEVEJ9ImAKKwkJRFRCX0VYVD0ke0RUQiMjKi59CisJCURUQl9QQVRIPWBnZXRfcmVhbF9kdGJfcGF0aF9pbl9rZXJuZWwgIiR7RFRCfSJgCisJCURUQl9CQVNFX05BTUU9YGJhc2VuYW1lICR7RFRCfSAuIiR7RFRCX0VYVH0iYAorCQlpbnN0YWxsIC1tIDA2NDQgJHtEVEJfUEFUSH0gJHtEfS8ke0tFUk5FTF9JTUFHRURFU1R9LyR7RFRCX0JBU0VfTkFNRX0uJHtEVEJfRVhUfQorCQlmb3IgdHlwZSBpbiAke0tFUk5FTF9JTUFHRVRZUEVfRk9SX01BS0V9OyBkbworCQkJc3ltbGlua19uYW1lPSR7dHlwZX0iLSIke0tFUk5FTF9JTUFHRV9TWU1MSU5LX05BTUV9CisJCQlEVEJfU1lNTElOS19OQU1FPWBlY2hvICR7c3ltbGlua19uYW1lfSB8IHNlZCAicy8ke01BQ0hJTkV9LyR7RFRCX0JBU0VfTkFNRX0vZyJgCisJCQlsbiAtc2YgJHtEVEJfQkFTRV9OQU1FfS4ke0RUQl9FWFR9ICR7RH0vJHtLRVJORUxfSU1BR0VERVNUfS9kZXZpY2V0cmVlLSR7RFRCX1NZTUxJTktfTkFNRX0uJHtEVEJfRVhUfQorCisJCQlpZiBbICIkdHlwZSIgPSAiekltYWdlIiBdICYmIFsgIiR7S0VSTkVMX0RFVklDRVRSRUVfQlVORExFfSIgPSAiMSIgXTsgdGhlbgorCQkJCWNhdCAke0R9LyR7S0VSTkVMX0lNQUdFREVTVH0vJHR5cGUgXAorCQkJCQkke0R9LyR7S0VSTkVMX0lNQUdFREVTVH0vJHtEVEJfQkFTRV9OQU1FfS4ke0RUQl9FWFR9IFwKKwkJCQkJPiAke0R9LyR7S0VSTkVMX0lNQUdFREVTVH0vJHR5cGUtJHtEVEJfQkFTRV9OQU1FfS4ke0RUQl9FWFR9LmJpbgorCQkJZmkKKwkJZG9uZQorCWRvbmUKK30KKworZG9fZGVwbG95X2FwcGVuZCgpIHsKKwlmb3IgRFRCIGluICR7S0VSTkVMX0RFVklDRVRSRUV9OyBkbworCQlEVEI9YG5vcm1hbGl6ZV9kdGIgIiR7RFRCfSJgCisJCURUQl9FWFQ9JHtEVEIjIyoufQorCQlEVEJfQkFTRV9OQU1FPWBiYXNlbmFtZSAke0RUQn0gLiIke0RUQl9FWFR9ImAKKwkJZm9yIHR5cGUgaW4gJHtLRVJORUxfSU1BR0VUWVBFX0ZPUl9NQUtFfTsgZG8KKwkJCWJhc2VfbmFtZT0ke3R5cGV9Ii0iJHtLRVJORUxfSU1BR0VfQkFTRV9OQU1FfQorCQkJc3ltbGlua19uYW1lPSR7dHlwZX0iLSIke0tFUk5FTF9JTUFHRV9TWU1MSU5LX05BTUV9CisJCQlEVEJfTkFNRT1gZWNobyAke2Jhc2VfbmFtZX0gfCBzZWQgInMvJHtNQUNISU5FfS8ke0RUQl9CQVNFX05BTUV9L2ciYAorCQkJRFRCX1NZTUxJTktfTkFNRT1gZWNobyAke3N5bWxpbmtfbmFtZX0gfCBzZWQgInMvJHtNQUNISU5FfS8ke0RUQl9CQVNFX05BTUV9L2ciYAorCQkJRFRCX1BBVEg9YGdldF9yZWFsX2R0Yl9wYXRoX2luX2tlcm5lbCAiJHtEVEJ9ImAKKwkJCWluc3RhbGwgLWQgJHtERVBMT1lESVJ9CisJCQlpbnN0YWxsIC1tIDA2NDQgJHtEVEJfUEFUSH0gJHtERVBMT1lESVJ9LyR7RFRCX05BTUV9LiR7RFRCX0VYVH0KKwkJCWxuIC1zZiAke0RUQl9OQU1FfS4ke0RUQl9FWFR9ICR7REVQTE9ZRElSfS8ke0RUQl9TWU1MSU5LX05BTUV9LiR7RFRCX0VYVH0KKwkJCWxuIC1zZiAke0RUQl9OQU1FfS4ke0RUQl9FWFR9ICR7REVQTE9ZRElSfS8ke0RUQl9CQVNFX05BTUV9LiR7RFRCX0VYVH0KKworCQkJaWYgWyAiJHR5cGUiID0gInpJbWFnZSIgXSAmJiBbICIke0tFUk5FTF9ERVZJQ0VUUkVFX0JVTkRMRX0iID0gIjEiIF07IHRoZW4KKwkJCQljYXQgJHtERVBMT1lESVJ9LyR0eXBlIFwKKwkJCQkJJHtERVBMT1lESVJ9LyR7RFRCX05BTUV9LiR7RFRCX0VYVH0gXAorCQkJCQk+ICR7REVQTE9ZRElSfS8ke0RUQl9OQU1FfS4ke0RUQl9FWFR9LmJpbgorCQkJCWxuIC1zZiAke0RUQl9OQU1FfS4ke0RUQl9FWFR9LmJpbiAke0RFUExPWURJUn0vJHR5cGUtJHtEVEJfQkFTRV9OQU1FfS4ke0RUQl9FWFR9LmJpbgorCisJCQkJaWYgWyAtZSAiJHtLRVJORUxfT1VUUFVUX0RJUn0vJHt0eXBlfS5pbml0cmFtZnMiIF07IHRoZW4KKwkJCQkJY2F0ICR7S0VSTkVMX09VVFBVVF9ESVJ9LyR7dHlwZX0uaW5pdHJhbWZzIFwKKwkJCQkJCSR7REVQTE9ZRElSfS8ke0RUQl9OQU1FfS4ke0RUQl9FWFR9IFwKKwkJCQkJCT4gJHtERVBMT1lESVJ9LyR7dHlwZX0tJHtJTklUUkFNRlNfQkFTRV9OQU1FfS0ke0RUQl9CQVNFX05BTUV9LiR7RFRCX0VYVH0uYmluCisJCQkJCWxuIC1zZiAke3R5cGV9LSR7SU5JVFJBTUZTX0JBU0VfTkFNRX0tJHtEVEJfQkFTRV9OQU1FfS4ke0RUQl9FWFR9LmJpbiBcCisJCQkJCSAgICAgICAke0RFUExPWURJUn0vJHt0eXBlfS1pbml0cmFtZnMtJHtEVEJfQkFTRV9OQU1FfS4ke0RUQl9FWFR9LSR7TUFDSElORX0uYmluCisJCQkJZmkKKwkJCWZpCisJCWRvbmUKKwlkb25lCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC1maXRpbWFnZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtZml0aW1hZ2UuYmJjbGFzcwppbmRleCAxNzkxODViLi45YmFmMzk5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC1maXRpbWFnZS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLWZpdGltYWdlLmJiY2xhc3MKQEAgLTcsOSArNywxMiBAQAogICAgICAgICBkZXBlbmRzID0gIiVzIHUtYm9vdC1ta2ltYWdlLW5hdGl2ZSBkdGMtbmF0aXZlIiAlIGRlcGVuZHMKICAgICAgICAgZC5zZXRWYXIoIkRFUEVORFMiLCBkZXBlbmRzKQogCi0gICAgICAgIGlmIGQuZ2V0VmFyKCJVQk9PVF9BUkNIIikgPT0gIm1pcHMiOgorICAgICAgICB1YXJjaCA9IGQuZ2V0VmFyKCJVQk9PVF9BUkNIIikKKyAgICAgICAgaWYgdWFyY2ggPT0gImFybTY0IjoKKyAgICAgICAgICAgIHJlcGxhY2VtZW50dHlwZSA9ICJJbWFnZSIKKyAgICAgICAgZWxpZiB1YXJjaCA9PSAibWlwcyI6CiAgICAgICAgICAgICByZXBsYWNlbWVudHR5cGUgPSAidm1saW51ei5iaW4iCi0gICAgICAgIGVsaWYgZC5nZXRWYXIoIlVCT09UX0FSQ0giKSA9PSAieDg2IjoKKyAgICAgICAgZWxpZiB1YXJjaCA9PSAieDg2IjoKICAgICAgICAgICAgIHJlcGxhY2VtZW50dHlwZSA9ICJiekltYWdlIgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmVwbGFjZW1lbnR0eXBlID0gInpJbWFnZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLW1vZHVsZS1zcGxpdC5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtbW9kdWxlLXNwbGl0LmJiY2xhc3MKaW5kZXggNWUxMGRjZi4uMTAzNTUyNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtbW9kdWxlLXNwbGl0LmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtbW9kdWxlLXNwbGl0LmJiY2xhc3MKQEAgLTQ3LDcgKzQ3LDcgQEAKICAgICAgICAgdGYgPSB0ZW1wZmlsZS5ta3N0ZW1wKCkKICAgICAgICAgdG1wZmlsZSA9IHRmWzFdCiAgICAgICAgIGNtZCA9ICIlc29iamNvcHkgLWogLm1vZGluZm8gLU8gYmluYXJ5ICVzICVzIiAlIChkLmdldFZhcigiSE9TVF9QUkVGSVgiKSBvciAiIiwgZmlsZSwgdG1wZmlsZSkKLSAgICAgICAgc3VicHJvY2Vzcy5jYWxsKGNtZCwgc2hlbGw9VHJ1ZSkKKyAgICAgICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKGNtZCwgc2hlbGw9VHJ1ZSkKICAgICAgICAgZiA9IG9wZW4odG1wZmlsZSkKICAgICAgICAgbCA9IGYucmVhZCgpLnNwbGl0KCJcMDAwIikKICAgICAgICAgZi5jbG9zZSgpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC11Ym9vdC5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwtdWJvb3QuYmJjbGFzcwppbmRleCA4N2YwMjY1Li4yMzY0MDUzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC11Ym9vdC5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLXVib290LmJiY2xhc3MKQEAgLTMsNiArMywxMCBAQAogCQl2bWxpbnV4X3BhdGg9ImFyY2gvJHtBUkNIfS9ib290L2NvbXByZXNzZWQvdm1saW51eCIKIAkJbGludXhfc3VmZml4PSIiCiAJCWxpbnV4X2NvbXA9Im5vbmUiCisJZWxpZiBbIC1lIGFyY2gvJHtBUkNIfS9ib290L0ltYWdlIF0gOyB0aGVuCisJCXZtbGludXhfcGF0aD0idm1saW51eCIKKwkJbGludXhfc3VmZml4PSIiCisJCWxpbnV4X2NvbXA9Im5vbmUiCiAJZWxpZiBbIC1lIGFyY2gvJHtBUkNIfS9ib290L3ZtbGludXouYmluIF07IHRoZW4KIAkJcm0gLWYgbGludXguYmluCiAJCWNwIC1sIGFyY2gvJHtBUkNIfS9ib290L3ZtbGludXouYmluIGxpbnV4LmJpbgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwteW9jdG8uYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLXlvY3RvLmJiY2xhc3MKaW5kZXggMWNhMDc1Ni4uNjYzYzY1NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwteW9jdG8uYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC15b2N0by5iYmNsYXNzCkBAIC0xMDcsMjAgKzEwNywzMSBAQAogCQkJCWNtcCAiJHtXT1JLRElSfS9kZWZjb25maWciICIke1N9L2FyY2gvJHtBUkNIfS9jb25maWdzLyR7S0JVSUxEX0RFRkNPTkZJR30iCiAJCQkJaWYgWyAkPyAtbmUgMCBdOyB0aGVuCiAJCQkJCWJid2FybiAiZGVmY29uZmlnIGRldGVjdGVkIGluIFdPUktESVIuICR7S0JVSUxEX0RFRkNPTkZJR30gc2tpcHBlZCIKKwkJCQllbHNlCisJCQkJCWNwIC1mICR7U30vYXJjaC8ke0FSQ0h9L2NvbmZpZ3MvJHtLQlVJTERfREVGQ09ORklHfSAke1dPUktESVJ9L2RlZmNvbmZpZwogCQkJCWZpCiAJCQllbHNlCiAJCQkJY3AgLWYgJHtTfS9hcmNoLyR7QVJDSH0vY29uZmlncy8ke0tCVUlMRF9ERUZDT05GSUd9ICR7V09SS0RJUn0vZGVmY29uZmlnCi0JCQkJc2Njcz0iJHtXT1JLRElSfS9kZWZjb25maWciCiAJCQlmaQorCQkJc2Njcz0iJHtXT1JLRElSfS9kZWZjb25maWciCiAJCWVsc2UKLQkJCWJiZmF0YWwgIkEgS0JVSUxEX0RFQ09ORklHICcke0tCVUlMRF9ERUZDT05GSUd9JyB3YXMgc3BlY2lmaWVkLCBidXQgbm90IHByZXNlbnQgaW4gdGhlIHNvdXJjZSB0cmVlIgorCQkJYmJmYXRhbCAiQSBLQlVJTERfREVGQ09ORklHICcke0tCVUlMRF9ERUZDT05GSUd9JyB3YXMgc3BlY2lmaWVkLCBidXQgbm90IHByZXNlbnQgaW4gdGhlIHNvdXJjZSB0cmVlIgogCQlmaQogCWZpCiAKLQlzY2NzPSIkc2NjcyAke0AiICIuam9pbihmaW5kX3NjY3MoZCkpfSIKKwlzY2NzX2Zyb21fc3JjX3VyaT0iJHtAIiAiLmpvaW4oZmluZF9zY2NzKGQpKX0iCiAJcGF0Y2hlcz0iJHtAIiAiLmpvaW4oZmluZF9wYXRjaGVzKGQpKX0iCiAJZmVhdF9kaXJzPSIke0AiICIuam9pbihmaW5kX2tlcm5lbF9mZWF0dXJlX2RpcnMoZCkpfSIKIAorCSMgYSBxdWljayBjaGVjayB0byBtYWtlIHN1cmUgd2UgZG9uJ3QgaGF2ZSBkdXBsaWNhdGUgZGVmY29uZmlncworCSMgSWYgdGhlcmUncyBhIGRlZmNvbmZpZyBpbiB0aGUgU1JDX1VSSSwgZGlkIHdlIGFsc28gaGF2ZSBvbmUgZnJvbQorCSMgdGhlIEtCVUlMRF9ERUZDT05GSUcgcHJvY2Vzc2luZyBhYm92ZSA/CisJaWYgWyAtbiAiJHNjY3MiIF07IHRoZW4KKwkgICAgIyB3ZSBkaWQgaGF2ZSBhIGRlZmNvbmZpZyBmcm9tIGFib3ZlLiByZW1vdmUgYW55IHRoYXQgbWlnaHQgYmUgaW4gdGhlIHNyY191cmkKKwkgICAgc2Njc19mcm9tX3NyY191cmk9JChlY2hvICRzY2NzX2Zyb21fc3JjX3VyaSB8IGF3ayAneyBpZiAoJDAhPSJkZWZjb25maWciKSB7IHByaW50ICQwIH0gfScgUlM9JyAnKQorCWZpCisJc2Njcz0iJHNjY3MgJHNjY3NfZnJvbV9zcmNfdXJpIgorCiAJIyBjaGVjayBmb3IgZmVhdHVyZSBkaXJlY3Rvcmllcy9yZXBvcy9icmFuY2hlcyB0aGF0IHdlcmUgcGFydCBvZiB0aGUKIAkjIFNSQ19VUkkuIElmIHRoZXkgd2VyZSBzdXBwbGllZCwgd2UgY29udmVydCB0aGVtIGludG8gaW5jbHVkZSBkaXJlY3RpdmVzCiAJIyBmb3IgdGhlIHVwZGF0ZSBwYXJ0IG9mIHRoZSBwcm9jZXNzCkBAIC0xNDMsNiArMTU0LDEyIEBACiAKIAkjIGV4cGFuZCBrZXJuZWwgZmVhdHVyZXMgaW50byB0aGVpciBmdWxsIHBhdGggZXF1aXZhbGVudHMKIAlic3BfZGVmaW5pdGlvbj0kKHNwcCAke2luY2x1ZGVzfSAtLWZpbmQgLURLTUFDSElORT0ke0tNQUNISU5FfSAtREtUWVBFPSR7TElOVVhfS0VSTkVMX1RZUEV9KQorCWlmIFsgLXogIiRic3BfZGVmaW5pdGlvbiIgXTsgdGhlbgorCQllY2hvICIkc2NjcyIgfCBncmVwIC1xIGRlZmNvbmZpZworCQlpZiBbICQ/IC1uZSAwIF07IHRoZW4KKwkJCWJiZmF0YWxfbG9nICJDb3VsZCBub3QgbG9jYXRlIEJTUCBkZWZpbml0aW9uIGZvciAke0tNQUNISU5FfS8ke0xJTlVYX0tFUk5FTF9UWVBFfSBhbmQgbm8gZGVmY29uZmlnIHdhcyBwcm92aWRlZCIKKwkJZmkKKwlmaQogCW1ldGFfZGlyPSQoa2dpdCAtLW1ldGEpCiAKIAkjIHJ1bjE6IHB1bGwgYWxsIHRoZSBjb25maWd1cmF0aW9uIGZyYWdtZW50cywgbm8gbWF0dGVyIHdoZXJlIHRoZXkgY29tZSBmcm9tCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwuYmJjbGFzcwppbmRleCBjZTJjYWI2Li4xNGY0MWU5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLmJiY2xhc3MKQEAgLTIsNyArMiw3IEBACiAKIFBST1ZJREVTICs9ICJ2aXJ0dWFsL2tlcm5lbCIKIERFUEVORFMgKz0gInZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWJpbnV0aWxzIHZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdjYyBrbW9kLW5hdGl2ZSBiYy1uYXRpdmUgbHpvcC1uYXRpdmUiCi1QQUNLQUdFX1dSSVRFX0RFUFMgKz0gImRlcG1vZHdyYXBwZXItY3Jvc3MgdmlydHVhbC91cGRhdGUtYWx0ZXJuYXRpdmVzLW5hdGl2ZSIKK1BBQ0tBR0VfV1JJVEVfREVQUyArPSAiZGVwbW9kd3JhcHBlci1jcm9zcyIKIAogZG9fZGVwbG95W2RlcGVuZHNdICs9ICJkZXBtb2R3cmFwcGVyLWNyb3NzOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCiAKQEAgLTU3LDcgKzU3LDcgQEAKIAogICAgICAgICBkLmFwcGVuZFZhcignUEFDS0FHRVMnLCAnICcgKyAna2VybmVsLWltYWdlLScgKyB0eXBlbG93ZXIpCiAKLSAgICAgICAgZC5zZXRWYXIoJ0ZJTEVTX2tlcm5lbC1pbWFnZS0nICsgdHlwZWxvd2VyLCAnLycgKyBpbWFnZWRlc3QgKyAnLycgKyB0eXBlICsgJy0ke0tFUk5FTF9WRVJTSU9OX05BTUV9JykKKyAgICAgICAgZC5zZXRWYXIoJ0ZJTEVTX2tlcm5lbC1pbWFnZS0nICsgdHlwZWxvd2VyLCAnLycgKyBpbWFnZWRlc3QgKyAnLycgKyB0eXBlICsgJy0ke0tFUk5FTF9WRVJTSU9OX05BTUV9JyArICcgLycgKyBpbWFnZWRlc3QgKyAnLycgKyB0eXBlKQogCiAgICAgICAgIGQuYXBwZW5kVmFyKCdSREVQRU5EU19rZXJuZWwtaW1hZ2UnLCAnICcgKyAna2VybmVsLWltYWdlLScgKyB0eXBlbG93ZXIpCiAKQEAgLTY1LDEzICs2NSw2IEBACiAKICAgICAgICAgZC5zZXRWYXIoJ0FMTE9XX0VNUFRZX2tlcm5lbC1pbWFnZS0nICsgdHlwZWxvd2VyLCAnMScpCiAKLSAgICAgICAgcHJpb3JpdHkgPSBkLmdldFZhcignS0VSTkVMX1BSSU9SSVRZJykKLSAgICAgICAgcG9zdGluc3QgPSAnIyEvYmluL3NoXG4nICsgJ3VwZGF0ZS1hbHRlcm5hdGl2ZXMgLS1pbnN0YWxsIC8nICsgaW1hZ2VkZXN0ICsgJy8nICsgdHlwZSArICcgJyArIHR5cGUgKyAnICcgKyB0eXBlICsgJy0ke0tFUk5FTF9WRVJTSU9OX05BTUV9ICcgKyBwcmlvcml0eSArICcgfHwgdHJ1ZScgKyAnXG4nCi0gICAgICAgIGQuc2V0VmFyKCdwa2dfcG9zdGluc3Rfa2VybmVsLWltYWdlLScgKyB0eXBlbG93ZXIsIHBvc3RpbnN0KQotCi0gICAgICAgIHBvc3RybSA9ICcjIS9iaW4vc2hcbicgKyAndXBkYXRlLWFsdGVybmF0aXZlcyAtLXJlbW92ZScgKyAnICcgKyB0eXBlICsgJyAnICsgdHlwZSArICctJHtLRVJORUxfVkVSU0lPTl9OQU1FfSB8fCB0cnVlJyArICdcbicKLSAgICAgICAgZC5zZXRWYXIoJ3BrZ19wb3N0cm1fa2VybmVsLWltYWdlLScgKyB0eXBlbG93ZXIsIHBvc3RybSkKLQogICAgIGltYWdlID0gZC5nZXRWYXIoJ0lOSVRSQU1GU19JTUFHRScpCiAgICAgaWYgaW1hZ2U6CiAgICAgICAgIGQuYXBwZW5kVmFyRmxhZygnZG9fYnVuZGxlX2luaXRyYW1mcycsICdkZXBlbmRzJywgJyAke0lOSVRSQU1GU19JTUFHRX06ZG9faW1hZ2VfY29tcGxldGUnKQpAQCAtMTM3LDEwICsxMzAsNiBAQAogZXhwb3J0IEtCVUlMRF9CVUlMRF9VU0VSID0gIm9lLXVzZXIiCiBleHBvcnQgS0JVSUxEX0JVSUxEX0hPU1QgPSAib2UtaG9zdCIKIAotS0VSTkVMX1BSSU9SSVRZID89ICIke0BpbnQoZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy0nKVswXS5zcGxpdCgnKycpWzBdLnNwbGl0KCcuJylbMF0pICogMTAwMDAgKyBcCi0gICAgICAgICAgICAgICAgICAgICAgIGludChkLmdldFZhcignUFYnKS5zcGxpdCgnLScpWzBdLnNwbGl0KCcrJylbMF0uc3BsaXQoJy4nKVsxXSkgKiAxMDAgKyBcCi0gICAgICAgICAgICAgICAgICAgICAgIGludChkLmdldFZhcignUFYnKS5zcGxpdCgnLScpWzBdLnNwbGl0KCcrJylbMF0uc3BsaXQoJy4nKVstMV0pfSIKLQogS0VSTkVMX1JFTEVBU0UgPz0gIiR7S0VSTkVMX1ZFUlNJT059IgogCiAjIFRoZSBkaXJlY3Rvcnkgd2hlcmUgYnVpbHQga2VybmVsIGxpZXMgaW4gdGhlIGtlcm5lbCB0cmVlCkBAIC0xNjYsNyArMTU1LDcgQEAKICMgU29tZSBMaW51eCBrZXJuZWwgY29uZmlndXJhdGlvbnMgbmVlZCBhZGRpdGlvbmFsIHBhcmFtZXRlcnMgb24gdGhlIGNvbW1hbmQgbGluZQogS0VSTkVMX0VYVFJBX0FSR1MgPz0gIiIKIAotRVhUUkFfT0VNQUtFID0gIiBIT1NUQ0M9IiR7QlVJTERfQ0N9IiBIT1NUQ1BQPSIke0JVSUxEX0NQUH0iIgorRVhUUkFfT0VNQUtFID0gIiBIT1NUQ0M9IiR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSAke0JVSUxEX0xERkxBR1N9IiBIT1NUQ1BQPSIke0JVSUxEX0NQUH0iIgogS0VSTkVMX0FMVF9JTUFHRVRZUEUgPz89ICIiCiAKIGNvcHlfaW5pdHJhbWZzKCkgewpAQCAtMjU1LDggKzI0NCwzNiBAQAogCiBhZGR0YXNrIGJ1bmRsZV9pbml0cmFtZnMgYWZ0ZXIgZG9faW5zdGFsbCBiZWZvcmUgZG9fZGVwbG95CiAKK2dldF9jY19vcHRpb24gKCkgeworCQkjIENoZWNrIGlmIEtFUk5FTF9DQyBzdXBwb3J0cyB0aGUgb3B0aW9uICJmaWxlLXByZWZpeC1tYXAiLgorCQkjIFRoaXMgb3B0aW9uIGFsbG93cyB1cyB0byBidWlsZCBpbWFnZXMgd2l0aCBfX0ZJTEVfXyB2YWx1ZXMgdGhhdCBkbyBub3QKKwkJIyBjb250YWluIHRoZSBob3N0IGJ1aWxkIHBhdGguCisJCWlmICR7S0VSTkVMX0NDfSAtUSAtLWhlbHA9am9pbmVkIHwgZ3JlcCAtcSAiXC1mZmlsZS1wcmVmaXgtbWFwPTxvbGQ9bmV3PiI7IHRoZW4KKwkJCWVjaG8gIi1mZmlsZS1wcmVmaXgtbWFwPSR7U309L2tlcm5lbC1zb3VyY2UvIgorCQlmaQorfQorCiBrZXJuZWxfZG9fY29tcGlsZSgpIHsKIAl1bnNldCBDRkxBR1MgQ1BQRkxBR1MgQ1hYRkxBR1MgTERGTEFHUyBNQUNISU5FCisJaWYgWyAiJEJVSUxEX1JFUFJPRFVDSUJMRV9CSU5BUklFUyIgPSAiMSIgXTsgdGhlbgorCQkjIGtlcm5lbCBzb3VyY2VzIGRvIG5vdCB1c2UgZG9fdW5wYWNrLCBzbyBTT1VSQ0VfREFURV9FUE9DSCBtYXkgbm90CisJCSMgYmUgc2V0Li4uLgorCQlpZiBbICIkU09VUkNFX0RBVEVfRVBPQ0giID0gIjAiIF07IHRoZW4KKwkJCW9sZGRpcj1gcHdkYAorCQkJY2QgJHtTfQorCQkJU09VUkNFX0RBVEVfRVBPQ0g9YGdpdCBsb2cgIC0xIC0tcHJldHR5PSVjdGAKKwkJCSMgZ2l0IHJlcG8gbm90IGd1YXJhbnRlZWQsIHNvIGZhbGwgYmFjayB0byBSRVBST0RVQ0lCTEVfVElNRVNUQU1QX1JPT1RGUworCQkJaWYgWyAkPyAtbmUgMCBdOyB0aGVuCisJCQkJU09VUkNFX0RBVEVfRVBPQ0g9JHtSRVBST0RVQ0lCTEVfVElNRVNUQU1QX1JPT1RGU30KKwkJCWZpCisJCQljZCAkb2xkZGlyCisJCWZpCisKKwkJdHM9YExDX0FMTD1DIGRhdGUgLWQgQCRTT1VSQ0VfREFURV9FUE9DSGAKKwkJZXhwb3J0IEtCVUlMRF9CVUlMRF9USU1FU1RBTVA9IiR0cyIKKwkJZXhwb3J0IEtDT05GSUdfTk9USU1FU1RBTVA9MQorCQliYm5vdGUgIktCVUlMRF9CVUlMRF9USU1FU1RBTVA6ICR0cyIKKwlmaQogCSMgVGhlICR1c2VfYWx0ZXJuYXRlX2luaXRyZCBpcyBvbmx5IHNldCBmcm9tCiAJIyBkb19idW5kbGVfaW5pdHJhbWZzKCkgVGhpcyB2YXJpYWJsZSBpcyBzcGVjaWZpY2FsbHkgZm9yIHRoZQogCSMgY2FzZSB3aGVyZSB3ZSBhcmUgbWFraW5nIGEgc2Vjb25kIHBhc3MgYXQgdGhlIGtlcm5lbApAQCAtMjcwLDIwICsyODcsMjIgQEAKIAkJY29weV9pbml0cmFtZnMKIAkJdXNlX2FsdGVybmF0ZV9pbml0cmQ9Q09ORklHX0lOSVRSQU1GU19TT1VSQ0U9JHtCfS91c3IvJHtJTklUUkFNRlNfSU1BR0VfTkFNRX0uY3BpbwogCWZpCisJY2NfZXh0cmE9JChnZXRfY2Nfb3B0aW9uKQogCWZvciB0eXBlZm9ybWFrZSBpbiAke0tFUk5FTF9JTUFHRVRZUEVfRk9SX01BS0V9IDsgZG8KLQkJb2VfcnVubWFrZSAke3R5cGVmb3JtYWtlfSBDQz0iJHtLRVJORUxfQ0N9IiBMRD0iJHtLRVJORUxfTER9IiAke0tFUk5FTF9FWFRSQV9BUkdTfSAkdXNlX2FsdGVybmF0ZV9pbml0cmQKKwkJb2VfcnVubWFrZSAke3R5cGVmb3JtYWtlfSBDQz0iJHtLRVJORUxfQ0N9ICRjY19leHRyYSAiIExEPSIke0tFUk5FTF9MRH0iICR7S0VSTkVMX0VYVFJBX0FSR1N9ICR1c2VfYWx0ZXJuYXRlX2luaXRyZAogCWRvbmUKIAkjIHZtbGludXguZ3ogaXMgbm90IGJ1aWx0IGJ5IGtlcm5lbAogCWlmIChlY2hvICIke0tFUk5FTF9JTUFHRVRZUEVTfSIgfCBncmVwIC13cSAidm1saW51eFwuZ3oiKTsgdGhlbgogCQlta2RpciAtcCAiJHtLRVJORUxfT1VUUFVUX0RJUn0iCi0JCWd6aXAgLTljIDwgJHtCfS92bWxpbnV4ID4gIiR7S0VSTkVMX09VVFBVVF9ESVJ9L3ZtbGludXguZ3oiCisJCWd6aXAgLTljbiA8ICR7Qn0vdm1saW51eCA+ICIke0tFUk5FTF9PVVRQVVRfRElSfS92bWxpbnV4Lmd6IgogCWZpCiB9CiAKIGRvX2NvbXBpbGVfa2VybmVsbW9kdWxlcygpIHsKIAl1bnNldCBDRkxBR1MgQ1BQRkxBR1MgQ1hYRkxBR1MgTERGTEFHUyBNQUNISU5FCiAJaWYgKGdyZXAgLXEgLWkgLWUgJ15DT05GSUdfTU9EVUxFUz15JCcgJHtCfS8uY29uZmlnKTsgdGhlbgotCQlvZV9ydW5tYWtlIC1DICR7Qn0gJHtQQVJBTExFTF9NQUtFfSBtb2R1bGVzIENDPSIke0tFUk5FTF9DQ30iIExEPSIke0tFUk5FTF9MRH0iICR7S0VSTkVMX0VYVFJBX0FSR1N9CisJCWNjX2V4dHJhPSQoZ2V0X2NjX29wdGlvbikKKwkJb2VfcnVubWFrZSAtQyAke0J9ICR7UEFSQUxMRUxfTUFLRX0gbW9kdWxlcyBDQz0iJHtLRVJORUxfQ0N9ICRjY19leHRyYSAiIExEPSIke0tFUk5FTF9MRH0iICR7S0VSTkVMX0VYVFJBX0FSR1N9CiAKIAkJIyBNb2R1bGUuc3ltdmVycyBnZXRzIHVwZGF0ZWQgZHVyaW5nIHRoZSAKIAkJIyBidWlsZGluZyBvZiB0aGUga2VybmVsIG1vZHVsZXMuIFdlIG5lZWQgdG8KQEAgLTMyMCw2ICszMzksNyBAQAogCWluc3RhbGwgLWQgJHtEfS9ib290CiAJZm9yIHR5cGUgaW4gJHtLRVJORUxfSU1BR0VUWVBFU30gOyBkbwogCQlpbnN0YWxsIC1tIDA2NDQgJHtLRVJORUxfT1VUUFVUX0RJUn0vJHt0eXBlfSAke0R9LyR7S0VSTkVMX0lNQUdFREVTVH0vJHt0eXBlfS0ke0tFUk5FTF9WRVJTSU9OfQorCQlsbiAtc2YgJHt0eXBlfS0ke0tFUk5FTF9WRVJTSU9OfSAke0R9LyR7S0VSTkVMX0lNQUdFREVTVH0vJHt0eXBlfQogCWRvbmUKIAlpbnN0YWxsIC1tIDA2NDQgU3lzdGVtLm1hcCAke0R9L2Jvb3QvU3lzdGVtLm1hcC0ke0tFUk5FTF9WRVJTSU9OfQogCWluc3RhbGwgLW0gMDY0NCAuY29uZmlnICR7RH0vYm9vdC9jb25maWctJHtLRVJORUxfVkVSU0lPTn0KQEAgLTU3NSwxOSArNTk1LDI3IEBACiBhZGR0YXNrIHN0cmlwIGJlZm9yZSBkb19zaXplY2hlY2sgYWZ0ZXIgZG9fa2VybmVsX2xpbmtfaW1hZ2VzCiAKICMgU3VwcG9ydCBjaGVja2luZyB0aGUga2VybmVsIHNpemUgc2luY2Ugc29tZSBrZXJuZWxzIG5lZWQgdG8gcmVzaWRlIGluIHBhcnRpdGlvbnMKLSMgd2l0aCBhIGZpeGVkIGxlbmd0aCBvciB0aGVyZSBpcyBhIGxpbWl0IGluIHRyYW5zZmVycmluZyB0aGUga2VybmVsIHRvIG1lbW9yeQorIyB3aXRoIGEgZml4ZWQgbGVuZ3RoIG9yIHRoZXJlIGlzIGEgbGltaXQgaW4gdHJhbnNmZXJyaW5nIHRoZSBrZXJuZWwgdG8gbWVtb3J5LgorIyBJZiBtb3JlIHRoYW4gb25lIGltYWdlIHR5cGUgaXMgZW5hYmxlZCwgd2FybiBvbiBhbnkgdGhhdCBkb24ndCBmaXQgYnV0IG9ubHkgZmFpbAorIyBpZiBub25lIGZpdC4KIGRvX3NpemVjaGVjaygpIHsKIAlpZiBbICEgLXogIiR7S0VSTkVMX0lNQUdFX01BWFNJWkV9IiBdOyB0aGVuCiAJCWludmFsaWQ9YGVjaG8gJHtLRVJORUxfSU1BR0VfTUFYU0laRX0gfCBzZWQgJ3MvWzAtOV0vL2cnYAogCQlpZiBbIC1uICIkaW52YWxpZCIgXTsgdGhlbgotCQkJZGllICJJbnZhbGlkIEtFUk5FTF9JTUFHRV9NQVhTSVpFOiAke0tFUk5FTF9JTUFHRV9NQVhTSVpFfSwgc2hvdWxkIGJlIGFuIGludGVnZXJ4IChUaGUgdW5pdCBpcyBLYnl0ZXMpIgorCQkJZGllICJJbnZhbGlkIEtFUk5FTF9JTUFHRV9NQVhTSVpFOiAke0tFUk5FTF9JTUFHRV9NQVhTSVpFfSwgc2hvdWxkIGJlIGFuIGludGVnZXIgKFRoZSB1bml0IGlzIEtieXRlcykiCiAJCWZpCisJCWF0X2xlYXN0X29uZV9maXRzPQogCQlmb3IgdHlwZSBpbiAke0tFUk5FTF9JTUFHRVRZUEVTfSA7IGRvCiAJCQlzaXplPWBkdSAta3MgJHtCfS8ke0tFUk5FTF9PVVRQVVRfRElSfS8kdHlwZSB8IGF3ayAne3ByaW50ICQxfSdgCiAJCQlpZiBbICRzaXplIC1nZSAke0tFUk5FTF9JTUFHRV9NQVhTSVpFfSBdOyB0aGVuCi0JCQkJd2FybiAiVGhpcyBrZXJuZWwgJHR5cGUgKHNpemU9JHNpemUoSykgPiAke0tFUk5FTF9JTUFHRV9NQVhTSVpFfShLKSkgaXMgdG9vIGJpZyBmb3IgeW91ciBkZXZpY2UuIFBsZWFzZSByZWR1Y2UgdGhlIHNpemUgb2YgdGhlIGtlcm5lbCBieSBtYWtpbmcgbW9yZSBvZiBpdCBtb2R1bGFyLiIKKwkJCQliYndhcm4gIlRoaXMga2VybmVsICR0eXBlIChzaXplPSRzaXplKEspID4gJHtLRVJORUxfSU1BR0VfTUFYU0laRX0oSykpIGlzIHRvbyBiaWcgZm9yIHlvdXIgZGV2aWNlLiIKKwkJCWVsc2UKKwkJCQlhdF9sZWFzdF9vbmVfZml0cz15CiAJCQlmaQogCQlkb25lCisJCWlmIFsgLXogIiRhdF9sZWFzdF9vbmVfZml0cyIgXTsgdGhlbgorCQkJZGllICJBbGwga2VybmVsIGltYWdlcyBhcmUgdG9vIGJpZyBmb3IgeW91ciBkZXZpY2UuIFBsZWFzZSByZWR1Y2UgdGhlIHNpemUgb2YgdGhlIGtlcm5lbCBieSBtYWtpbmcgbW9yZSBvZiBpdCBtb2R1bGFyLiIKKwkJZmkKIAlmaQogfQogZG9fc2l6ZWNoZWNrW2RpcnNdID0gIiR7Qn0iCkBAIC02NDIsMyArNjcwLDYgQEAKIGFkZHRhc2sgZGVwbG95IGFmdGVyIGRvX3BvcHVsYXRlX3N5c3Jvb3QgZG9fcGFja2FnZWRhdGEKIAogRVhQT1JUX0ZVTkNUSU9OUyBkb19kZXBsb3kKKworIyBBZGQgdXNpbmcgRGV2aWNlIFRyZWUgc3VwcG9ydAoraW5oZXJpdCBrZXJuZWwtZGV2aWNldHJlZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9saWNlbnNlLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2xpY2Vuc2UuYmJjbGFzcwppbmRleCBiMWZmZmU3Li5kMzUzMTEwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2xpY2Vuc2UuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2xpY2Vuc2UuYmJjbGFzcwpAQCAtMjU1LDE0ICsyNTUsOSBAQAogICAgICIiIgogCiAgICAgZGVwZW5kcyA9IFtdCi0gICAgYm9vdF9kZXBlbmRzX3N0cmluZyA9ICIiCiAgICAgdGFza2RlcGRhdGEgPSBkLmdldFZhcigiQkJfVEFTS0RFUERBVEEiLCBGYWxzZSkKLSAgICAjIE9ubHkgYm9vdGltZyBhbmQgYm9vdGRpcmVjdGRpc2sgaW5jbHVkZSB0aGUgZGVwZW5kcyBmbGFnCi0gICAgYm9vdF90YXNrcyA9IFsiZG9fYm9vdGltZyIsICJkb19ib290ZGlyZWN0ZGlzayIsXQotCi0gICAgZm9yIHRhc2sgaW4gYm9vdF90YXNrczoKLSAgICAgICAgYm9vdF9kZXBlbmRzX3N0cmluZyA9ICIlcyAlcyIgJSAoYm9vdF9kZXBlbmRzX3N0cmluZywKLSAgICAgICAgICAgICAgICBkLmdldFZhckZsYWcodGFzaywgImRlcGVuZHMiKSBvciAiIikKKyAgICAjIE9ubHkgYm9vdGltZyBpbmNsdWRlcyB0aGUgZGVwZW5kcyBmbGFnCisgICAgYm9vdF9kZXBlbmRzX3N0cmluZyA9IGQuZ2V0VmFyRmxhZygiZG9fYm9vdGltZyIsICJkZXBlbmRzIikgb3IgIiIKICAgICBib290X2RlcGVuZHMgPSBbZGVwLnNwbGl0KCI6IilbMF0gZm9yIGRlcAogICAgICAgICAgICAgICAgIGluIGJvb3RfZGVwZW5kc19zdHJpbmcuc3BsaXQoKQogICAgICAgICAgICAgICAgIGlmIG5vdCBkZXAuc3BsaXQoIjoiKVswXS5lbmRzd2l0aCgiLW5hdGl2ZSIpXQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9saW51eGxvYWRlci5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9saW51eGxvYWRlci5iYmNsYXNzCmluZGV4IDExN2IwMzAuLjhmMzBlYjMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbGludXhsb2FkZXIuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2xpbnV4bG9hZGVyLmJiY2xhc3MKQEAgLTEsNSArMSw4IEBACitMRFNPX1RDTElCQyA9ICJnbGliYyIKK0xEU09fVENMSUJDX2xpYmMtbXVzbCA9ICJtdXNsIgorTERTT19UQ0xJQkNfbGliYy1iYXJlbWV0YWwgPSAibXVzbCIKIAotbGludXhsb2FkZXIgKCkgeworbGludXhsb2FkZXJfZ2xpYmMgKCkgewogCWNhc2UgJHtUQVJHRVRfQVJDSH0gaW4KIAkJcG93ZXJwYyB8IG1pY3JvYmxhemUgKQogCQkJZHluYW1pY19sb2FkZXI9IiR7YmFzZV9saWJkaXJ9L2xkLnNvLjEiCkBAIC0yOCwzICszMSw0MCBAQAogCWVzYWMKIAllY2hvICRkeW5hbWljX2xvYWRlcgogfQorCitsaW51eGxvYWRlcl9tdXNsICgpIHsKKwljYXNlICR7VEFSR0VUX0FSQ0h9IGluCisJCW1pY3JvYmxhemUqICkKKwkJCWR5bmFtaWNfbG9hZGVyPSIke2Jhc2VfbGliZGlyfS9sZC1tdXNsLW1pY3JvYmxhemUke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdiaWdlbmRpYW4nLCAnJywgJ2VsJyAsZCl9LnNvLjEiCisJCQk7OworCQltaXBzKiApCisJCQlkeW5hbWljX2xvYWRlcj0iJHtiYXNlX2xpYmRpcn0vbGQtbXVzbC1taXBzJHtBQklFWFRFTlNJT059JHtNSVBTUEtHU0ZYX0JZVEV9JHtNSVBTUEtHU0ZYX1I2fSR7TUlQU1BLR1NGWF9FTkRJQU59JHtAWycnLCAnLXNmJ11bZC5nZXRWYXIoJ1RBUkdFVF9GUFUnKSA9PSAnc29mdCddfS5zby4xIgorCQkJOzsKKwkJcG93ZXJwYyApCisJCQlkeW5hbWljX2xvYWRlcj0iJHtiYXNlX2xpYmRpcn0vbGQtbXVzbC1wb3dlcnBjJHtAWycnLCAnLXNmJ11bZC5nZXRWYXIoJ1RBUkdFVF9GUFUnKSA9PSAnc29mdCddfS5zby4xIgorCQkJOzsKKwkJcG93ZXJwYzY0ICkKKwkJCWR5bmFtaWNfbG9hZGVyPSIke2Jhc2VfbGliZGlyfS9sZC1tdXNsLXBvd2VycGM2NC5zby4xIgorCQkJOzsKKwkJeDg2XzY0ICkKKwkJCWR5bmFtaWNfbG9hZGVyPSIke2Jhc2VfbGliZGlyfS9sZC1tdXNsLXg4Nl82NC5zby4xIgorCQkJOzsKKwkJaSo4NiApCisJCQlkeW5hbWljX2xvYWRlcj0iJHtiYXNlX2xpYmRpcn0vbGQtbXVzbC1pMzg2LnNvLjEiCisJCQk7OworCQlhcm0qICkKKwkJCWR5bmFtaWNfbG9hZGVyPSIke2Jhc2VfbGliZGlyfS9sZC1tdXNsLWFybSR7QVJNUEtHU0ZYX0VORElBTn0ke0FSTVBLR1NGWF9FQUJJfS5zby4xIgorCQkJOzsKKwkJYWFyY2g2NCogKQorCQkJZHluYW1pY19sb2FkZXI9IiR7YmFzZV9saWJkaXJ9L2xkLW11c2wtYWFyY2g2NCR7QVJNUEtHU0ZYX0VORElBTl82NH0uc28uMSIKKwkJCTs7CisJCSogKQorCQkJZHluYW1pY19sb2FkZXI9Ii91bmtub3duX2R5bmFtaWNfbGlua2VyIgorCQkJOzsKKwllc2FjCisJZWNobyAkZHluYW1pY19sb2FkZXIKK30KKworbGludXhsb2FkZXIgKCkgeworCWxpbnV4bG9hZGVyXyR7TERTT19UQ0xJQkN9Cit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2xpdmUtdm0tY29tbW9uLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL2xpdmUtdm0tY29tbW9uLmJiY2xhc3MKaW5kZXggMjdiMTM3ZC4uZTFkOGIxOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9saXZlLXZtLWNvbW1vbi5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbGl2ZS12bS1jb21tb24uYmJjbGFzcwpAQCAtMTUsNiArMTUsOCBAQAogRUZJX1BST1ZJREVSID89ICJncnViLWVmaSIKIEVGSV9DTEFTUyA9ICIke0BiYi51dGlscy5jb250YWlucygiTUFDSElORV9GRUFUVVJFUyIsICJlZmkiLCAiJHtFRklfUFJPVklERVJ9IiwgIiIsIGQpfSIKIAorTUtET1NGU19FWFRSQU9QVFMgPz89ICItUyA1MTIiCisKICMgSW5jbHVkZSBsZWdhY3kgYm9vdCBpZiBNQUNISU5FX0ZFQVRVUkVTIGluY2x1ZGVzICJwY2Jpb3MiIG9yIGlmIGl0IGRvZXMgbm90CiAjIGNvbnRhaW4gImVmaSIuIFRoaXMgd2F5IGxlZ2FjeSBpcyBzdXBwb3J0ZWQgYnkgZGVmYXVsdCBpZiBuZWl0aGVyIGlzCiAjIHNwZWNpZmllZCwgbWFpbnRhaW5pbmcgdGhlIG9yaWdpbmFsIGJlaGF2aW9yLgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9taXJyb3JzLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL21pcnJvcnMuYmJjbGFzcwppbmRleCA0YWQ4MTRmLi43NjZmMWNiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL21pcnJvcnMuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL21pcnJvcnMuYmJjbGFzcwpAQCAtMzAsMjEgKzMwLDE1IEBACiBmdHA6Ly9mdHAuZ251dGxzLm9yZy9nY3J5cHQvZ251dGxzICR7R05VUEdfTUlSUk9SfS9nbnV0bHMgXG4gXAogaHR0cDovL2Z0cC5pbmZvLXppcC5vcmcvcHViL2luZm96aXAvc3JjLyBodHRwOi8vbWlycm9yLnN3aXRjaC5jaC9mdHAvbWlycm9yL2luZm96aXAvc3JjLyBcbiBcCiBodHRwOi8vZnRwLmluZm8temlwLm9yZy9wdWIvaW5mb3ppcC9zcmMvIGZ0cDovL3N1bnNpdGUuaWNtLmVkdS5wbC9wdWIvdW5peC9hcmNoaXZpbmcvaW5mby16aXAvc3JjLyBcbiBcCi1mdHA6Ly9sc29mLml0YXAucHVyZHVlLmVkdS9wdWIvdG9vbHMvdW5peC9sc29mLyAgZnRwOi8vZnRwLmNlcmlhcy5wdXJkdWUuZWR1L3B1Yi90b29scy91bml4L3N5c3V0aWxzL2xzb2YvIFxuIFwKLWZ0cDovL2xzb2YuaXRhcC5wdXJkdWUuZWR1L3B1Yi90b29scy91bml4L2xzb2YvICBmdHA6Ly9mdHAudGF1LmFjLmlsL3B1Yi91bml4L2FkbWluLyBcbiBcCi1mdHA6Ly9sc29mLml0YXAucHVyZHVlLmVkdS9wdWIvdG9vbHMvdW5peC9sc29mLyAgZnRwOi8vZnRwLmNlcnQuZGZuLmRlL3B1Yi90b29scy9hZG1pbi9sc29mLyBcbiBcCi1mdHA6Ly9sc29mLml0YXAucHVyZHVlLmVkdS9wdWIvdG9vbHMvdW5peC9sc29mLyAgZnRwOi8vZnRwLmZ1LWJlcmxpbi5kZS9wdWIvdW5peC90b29scy9sc29mLyBcbiBcCi1mdHA6Ly9sc29mLml0YXAucHVyZHVlLmVkdS9wdWIvdG9vbHMvdW5peC9sc29mLyAgZnRwOi8vZnRwLmthaXpvLm9yZy9wdWIvbHNvZi8gXG4gXAotZnRwOi8vbHNvZi5pdGFwLnB1cmR1ZS5lZHUvcHViL3Rvb2xzL3VuaXgvbHNvZi8gIGZ0cDovL2Z0cC50dS1kYXJtc3RhZHQuZGUvcHViL3N5c2FkbWluL2xzb2YvIFxuIFwKLWZ0cDovL2xzb2YuaXRhcC5wdXJkdWUuZWR1L3B1Yi90b29scy91bml4L2xzb2YvICBmdHA6Ly9mdHAudHV4Lm9yZy9wdWIvc2l0ZXMvdmljLmNjLnB1cmR1ZS5lZHUvdG9vbHMvdW5peC9sc29mLyBcbiBcCi1mdHA6Ly9sc29mLml0YXAucHVyZHVlLmVkdS9wdWIvdG9vbHMvdW5peC9sc29mLyAgZnRwOi8vZ2QudHV3aWVuLmFjLmF0L3V0aWxzL2FkbWluLXRvb2xzL2xzb2YvIFxuIFwKLWZ0cDovL2xzb2YuaXRhcC5wdXJkdWUuZWR1L3B1Yi90b29scy91bml4L2xzb2YvICBmdHA6Ly9zdW5zaXRlLnVhbGJlcnRhLmNhL3B1Yi9NaXJyb3IvbHNvZi8gXG4gXAotZnRwOi8vbHNvZi5pdGFwLnB1cmR1ZS5lZHUvcHViL3Rvb2xzL3VuaXgvbHNvZi8gIGZ0cDovL3RoZS53aXJldGFwcGVkLm5ldC9wdWIvc2VjdXJpdHkvaG9zdC1zZWN1cml0eS9sc29mLyBcbiBcCitodHRwOi8vd3d3Lm1pcnJvcnNlcnZpY2Uub3JnL3NpdGVzL2xzb2YuaXRhcC5wdXJkdWUuZWR1L3B1Yi90b29scy91bml4L2xzb2YvIGh0dHA6Ly93d3cubWlycm9yc2VydmljZS5vcmcvc2l0ZXMvbHNvZi5pdGFwLnB1cmR1ZS5lZHUvcHViL3Rvb2xzL3VuaXgvbHNvZi9PTEQvIFxuIFwKICR7QVBBQ0hFX01JUlJPUn0gIGh0dHA6Ly93d3cudXMuYXBhY2hlLm9yZy9kaXN0IFxuIFwKICR7QVBBQ0hFX01JUlJPUn0gIGh0dHA6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdCBcbiBcCiBodHRwOi8vZG93bmxvYWRzLnNvdXJjZWZvcmdlLm5ldC93YXRjaGRvZy8gaHR0cDovL2Zvc3NpZXMub3JnL2xpbnV4L21pc2MvIFxuIFwKICR7U0FWQU5OQUhfR05VX01JUlJPUn0gaHR0cDovL2Rvd25sb2FkLW1pcnJvci5zYXZhbm5haC5nbnUub3JnL3JlbGVhc2VzIFxuIFwKICR7U0FWQU5OQUhfTk9OR05VX01JUlJPUn0gaHR0cDovL2Rvd25sb2FkLW1pcnJvci5zYXZhbm5haC5ub25nbnUub3JnL3JlbGVhc2VzIFxuIFwKK2Z0cDovL3NvdXJjZXdhcmUub3JnL3B1YiBodHRwOi8vbWlycm9ycy5rZXJuZWwub3JnL3NvdXJjZXdhcmUgXG4gXAorZnRwOi8vc291cmNld2FyZS5vcmcvcHViIGh0dHA6Ly9nZC50dXdpZW4uYWMuYXQvZ251L3NvdXJjZXdhcmUgXG4gXAorZnRwOi8vc291cmNld2FyZS5vcmcvcHViIGh0dHA6Ly9mdHAuZ3dkZy5kZS9wdWIvbGludXgvc291cmNlcy5yZWRoYXQuY29tL3NvdXJjZXdhcmUgXG4gXAogY3ZzOi8vLiovLiogICAgIGh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3Ivc291cmNlcy8gXG4gXAogc3ZuOi8vLiovLiogICAgIGh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3Ivc291cmNlcy8gXG4gXAogZ2l0Oi8vLiovLiogICAgIGh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3Ivc291cmNlcy8gXG4gXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9tb2R1bGUuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbW9kdWxlLmJiY2xhc3MKaW5kZXggODAyNDc2Yi4uNzhkMWIyMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9tb2R1bGUuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL21vZHVsZS5iYmNsYXNzCkBAIC0xLDYgKzEsNiBAQAogaW5oZXJpdCBtb2R1bGUtYmFzZSBrZXJuZWwtbW9kdWxlLXNwbGl0IHBrZ2NvbmZpZwogCi1hZGR0YXNrIG1ha2Vfc2NyaXB0cyBhZnRlciBkb19wcmVwYXJlX3JlY2lwZV9zeXNyb290IGJlZm9yZSBkb19jb21waWxlCithZGR0YXNrIG1ha2Vfc2NyaXB0cyBhZnRlciBkb19wcmVwYXJlX3JlY2lwZV9zeXNyb290IGJlZm9yZSBkb19jb25maWd1cmUKIGRvX21ha2Vfc2NyaXB0c1tsb2NrZmlsZXNdID0gIiR7VE1QRElSfS9rZXJuZWwtc2NyaXB0cy5sb2NrIgogZG9fbWFrZV9zY3JpcHRzW2RlcGVuZHNdICs9ICJ2aXJ0dWFsL2tlcm5lbDpkb19zaGFyZWRfd29ya2RpciIKIApAQCAtMTgsNiArMTgsMjYgQEAKICAgICBkLnNldFZhcignS0JVSUxEX0VYVFJBX1NZTUJPTFMnLCAiICIuam9pbihleHRyYV9zeW1ib2xzKSkKIH0KIAorcHl0aG9uIGRvX2RldnNoZWxsX3ByZXBlbmQgKCkgeworICAgIG9zLmVudmlyb25bJ0NGTEFHUyddID0gJycKKyAgICBvcy5lbnZpcm9uWydDUFBGTEFHUyddID0gJycKKyAgICBvcy5lbnZpcm9uWydDWFhGTEFHUyddID0gJycKKyAgICBvcy5lbnZpcm9uWydMREZMQUdTJ10gPSAnJworCisgICAgb3MuZW52aXJvblsnS0VSTkVMX1BBVEgnXSA9IGQuZ2V0VmFyKCdTVEFHSU5HX0tFUk5FTF9ESVInKQorICAgIG9zLmVudmlyb25bJ0tFUk5FTF9TUkMnXSA9IGQuZ2V0VmFyKCdTVEFHSU5HX0tFUk5FTF9ESVInKQorICAgIG9zLmVudmlyb25bJ0tFUk5FTF9WRVJTSU9OJ10gPSBkLmdldFZhcignS0VSTkVMX1ZFUlNJT04nKQorICAgIG9zLmVudmlyb25bJ0NDJ10gPSBkLmdldFZhcignS0VSTkVMX0NDJykKKyAgICBvcy5lbnZpcm9uWydMRCddID0gZC5nZXRWYXIoJ0tFUk5FTF9MRCcpCisgICAgb3MuZW52aXJvblsnQVInXSA9IGQuZ2V0VmFyKCdLRVJORUxfQVInKQorICAgIG9zLmVudmlyb25bJ08nXSA9IGQuZ2V0VmFyKCdTVEFHSU5HX0tFUk5FTF9CVUlMRERJUicpCisgICAga2J1aWxkX2V4dHJhX3N5bWJvbHMgPSBkLmdldFZhcignS0JVSUxEX0VYVFJBX1NZTUJPTFMnKQorICAgIGlmIGtidWlsZF9leHRyYV9zeW1ib2xzOgorICAgICAgICBvcy5lbnZpcm9uWydLQlVJTERfRVhUUkFfU1lNQk9MUyddID0ga2J1aWxkX2V4dHJhX3N5bWJvbHMKKyAgICBlbHNlOgorICAgICAgICBvcy5lbnZpcm9uWydLQlVJTERfRVhUUkFfU1lNQk9MUyddID0gJycKK30KKwogbW9kdWxlX2RvX2NvbXBpbGUoKSB7CiAJdW5zZXQgQ0ZMQUdTIENQUEZMQUdTIENYWEZMQUdTIExERkxBR1MKIAlvZV9ydW5tYWtlIEtFUk5FTF9QQVRIPSR7U1RBR0lOR19LRVJORUxfRElSfSAgIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbXVsdGlsaWIuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbXVsdGlsaWIuYmJjbGFzcwppbmRleCBhYjA0NTk3Li44MTZmNTRlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL211bHRpbGliLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9tdWx0aWxpYi5iYmNsYXNzCkBAIC00LDcgKzQsOSBAQAogICAgIGlmIGNscyAhPSAibXVsdGlsaWIiIG9yIG5vdCB2YXJpYW50OgogICAgICAgICByZXR1cm4KIAotICAgIGUuZGF0YS5zZXRWYXIoJ1NUQUdJTkdfS0VSTkVMX0RJUicsIGUuZGF0YS5nZXRWYXIoJ1NUQUdJTkdfS0VSTkVMX0RJUicpKQorICAgIGxvY2FsZGF0YSA9IGJiLmRhdGEuY3JlYXRlQ29weShlLmRhdGEpCisgICAgbG9jYWxkYXRhLmRlbFZhcignVE1QRElSJykKKyAgICBlLmRhdGEuc2V0VmFyKCdTVEFHSU5HX0tFUk5FTF9ESVInLCBsb2NhbGRhdGEuZ2V0VmFyKCdTVEFHSU5HX0tFUk5FTF9ESVInKSkKIAogICAgICMgVGhlcmUgc2hvdWxkIG9ubHkgYmUgb25lIGtlcm5lbCBpbiBtdWx0aWxpYiBjb25maWdzCiAgICAgIyBXZSBhbHNvIHNraXAgbXVsdGlsaWIgc2V0dXAgZm9yIG1vZHVsZSBwYWNrYWdlcy4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbmF0aXZlLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL25hdGl2ZS5iYmNsYXNzCmluZGV4IDZiN2YzZGQuLjljNDM0ZGMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvbmF0aXZlLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9uYXRpdmUuYmJjbGFzcwpAQCAtMTA4LDcgKzEwOCw3IEBACiBQS0dfQ09ORklHX1NZU1RFTV9MSUJSQVJZX1BBVEhbdW5leHBvcnRdID0gIjEiCiBQS0dfQ09ORklHX1NZU1RFTV9JTkNMVURFX1BBVEhbdW5leHBvcnRdID0gIjEiCiAKLSMgd2UgZG9udCB3YW50IGxpYmMtdWNsaWJjIG9yIGxpYmMtZ2xpYmMgdG8ga2ljayBpbiBmb3IgbmF0aXZlIHJlY2lwZXMKKyMgd2UgZG9udCB3YW50IGxpYmMtKmxpYmMgdG8ga2ljayBpbiBmb3IgbmF0aXZlIHJlY2lwZXMKIExJQkNPVkVSUklERSA9ICIiCiBDTEFTU09WRVJSSURFID0gImNsYXNzLW5hdGl2ZSIKIE1BQ0hJTkVPVkVSUklERVMgPSAiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9vd24tbWlycm9ycy5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9vd24tbWlycm9ycy5iYmNsYXNzCmluZGV4IDAyOTZkNTQuLmE3Nzc4MzUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvb3duLW1pcnJvcnMuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL293bi1taXJyb3JzLmJiY2xhc3MKQEAgLTEsMTMgKzEsMTMgQEAKLVBSRU1JUlJPUlMoKSB7Ci1jdnM6Ly8uKi8uKiAgICAgJHtTT1VSQ0VfTUlSUk9SX1VSTH0KLXN2bjovLy4qLy4qICAgICAke1NPVVJDRV9NSVJST1JfVVJMfQotZ2l0Oi8vLiovLiogICAgICR7U09VUkNFX01JUlJPUl9VUkx9Ci1naXRzbTovLy4qLy4qICAgJHtTT1VSQ0VfTUlSUk9SX1VSTH0KLWhnOi8vLiovLiogICAgICAke1NPVVJDRV9NSVJST1JfVVJMfQotYnpyOi8vLiovLiogICAgICR7U09VUkNFX01JUlJPUl9VUkx9Ci1wNDovLy4qLy4qICAgICAgJHtTT1VSQ0VfTUlSUk9SX1VSTH0KLW9zYzovLy4qLy4qICAgICAke1NPVVJDRV9NSVJST1JfVVJMfQotaHR0cHM/JDovLy4qLy4qICR7U09VUkNFX01JUlJPUl9VUkx9Ci1mdHA6Ly8uKi8uKiAgICAgJHtTT1VSQ0VfTUlSUk9SX1VSTH0KLW5wbTovLy4qLz8uKiAgICAke1NPVVJDRV9NSVJST1JfVVJMfQotfQorUFJFTUlSUk9SU19wcmVwZW5kID0gIiBcCitjdnM6Ly8uKi8uKiAgICAgJHtTT1VSQ0VfTUlSUk9SX1VSTH0gXG4gXAorc3ZuOi8vLiovLiogICAgICR7U09VUkNFX01JUlJPUl9VUkx9IFxuIFwKK2dpdDovLy4qLy4qICAgICAke1NPVVJDRV9NSVJST1JfVVJMfSBcbiBcCitnaXRzbTovLy4qLy4qICAgJHtTT1VSQ0VfTUlSUk9SX1VSTH0gXG4gXAoraGc6Ly8uKi8uKiAgICAgICR7U09VUkNFX01JUlJPUl9VUkx9IFxuIFwKK2J6cjovLy4qLy4qICAgICAke1NPVVJDRV9NSVJST1JfVVJMfSBcbiBcCitwNDovLy4qLy4qICAgICAgJHtTT1VSQ0VfTUlSUk9SX1VSTH0gXG4gXAorb3NjOi8vLiovLiogICAgICR7U09VUkNFX01JUlJPUl9VUkx9IFxuIFwKK2h0dHBzPyQ6Ly8uKi8uKiAke1NPVVJDRV9NSVJST1JfVVJMfSBcbiBcCitmdHA6Ly8uKi8uKiAgICAgJHtTT1VSQ0VfTUlSUk9SX1VSTH0gXG4gXAorbnBtOi8vLiovPy4qICAgICR7U09VUkNFX01JUlJPUl9VUkx9IFxuIFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlLmJiY2xhc3MKaW5kZXggYTAzYzA1Yi4uMjA1M2Q0NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlLmJiY2xhc3MKQEAgLTczNyw5ICs3MzcsNyBAQAogICAgIGRlZiBnZXRfZnNfcGVybXNfbGlzdChkKToKICAgICAgICAgc3RyID0gIiIKICAgICAgICAgYmJwYXRoID0gZC5nZXRWYXIoJ0JCUEFUSCcpCi0gICAgICAgIGZzX3Blcm1zX3RhYmxlcyA9IGQuZ2V0VmFyKCdGSUxFU1lTVEVNX1BFUk1TX1RBQkxFUycpCi0gICAgICAgIGlmIG5vdCBmc19wZXJtc190YWJsZXM6Ci0gICAgICAgICAgICBmc19wZXJtc190YWJsZXMgPSAnZmlsZXMvZnMtcGVybXMudHh0JworICAgICAgICBmc19wZXJtc190YWJsZXMgPSBkLmdldFZhcignRklMRVNZU1RFTV9QRVJNU19UQUJMRVMnKSBvciAiIgogICAgICAgICBmb3IgY29uZl9maWxlIGluIGZzX3Blcm1zX3RhYmxlcy5zcGxpdCgpOgogICAgICAgICAgICAgc3RyICs9ICIgJXMiICUgYmIudXRpbHMud2hpY2goYmJwYXRoLCBjb25mX2ZpbGUpCiAgICAgICAgIHJldHVybiBzdHIKQEAgLTg3OSw2ICs4NzcsMTEgQEAKICAgICAgICAgZGVidWdkaXIgPSAiLy5kZWJ1ZyIKICAgICAgICAgZGVidWdsaWJkaXIgPSAiIgogICAgICAgICBkZWJ1Z3NyY2RpciA9ICIiCisgICAgZWxpZiBkLmdldFZhcignUEFDS0FHRV9ERUJVR19TUExJVF9TVFlMRScpID09ICdkZWJ1Zy13aXRoLXNyY3BrZyc6CisgICAgICAgIGRlYnVnYXBwZW5kID0gIiIKKyAgICAgICAgZGVidWdkaXIgPSAiLy5kZWJ1ZyIKKyAgICAgICAgZGVidWdsaWJkaXIgPSAiIgorICAgICAgICBkZWJ1Z3NyY2RpciA9ICIvdXNyL3NyYy9kZWJ1ZyIKICAgICBlbHNlOgogICAgICAgICAjIE9yaWdpbmFsIE9FLWNvcmUsIGEuay5hLiAiLmRlYnVnIiwgc3R5bGUgZGVidWcgaW5mbwogICAgICAgICBkZWJ1Z2FwcGVuZCA9ICIiCkBAIC0xMDkyLDYgKzEwOTUsMTUgQEAKICAgICAKICAgICBhdXRvZGVidWcgPSBub3QgKGQuZ2V0VmFyKCJOT0FVVE9QQUNLQUdFREVCVUciKSBvciBGYWxzZSkKIAorICAgIHNwbGl0X3NvdXJjZV9wYWNrYWdlID0gKGQuZ2V0VmFyKCdQQUNLQUdFX0RFQlVHX1NQTElUX1NUWUxFJykgPT0gJ2RlYnVnLXdpdGgtc3JjcGtnJykKKworICAgICMgSWYgZGVidWctd2l0aC1zcmNwa2cgbW9kZSBpcyBlbmFibGVkIHRoZW4gdGhlIHNyYyBwYWNrYWdlIGlzIGFkZGVkCisgICAgIyBpbnRvIHRoZSBwYWNrYWdlIGxpc3QgYW5kIHRoZSBzb3VyY2UgZGlyZWN0b3J5IGFzIGl0cyBtYWluIGNvbnRlbnQKKyAgICBpZiBzcGxpdF9zb3VyY2VfcGFja2FnZToKKyAgICAgICAgc3JjX3BhY2thZ2VfbmFtZSA9ICgnJXMtc3JjJyAlIGQuZ2V0VmFyKCdQTicpKQorICAgICAgICBwYWNrYWdlcyArPSAoJyAnICsgc3JjX3BhY2thZ2VfbmFtZSkKKyAgICAgICAgZC5zZXRWYXIoJ0ZJTEVTXyVzJyAlIHNyY19wYWNrYWdlX25hbWUsICcvdXNyL3NyYy9kZWJ1ZycpCisKICAgICAjIFNhbml0eSBjaGVjayBQQUNLQUdFUyBmb3IgZHVwbGljYXRlcwogICAgICMgU2FuaXR5IHNob3VsZCBiZSBtb3ZlZCB0byBzYW5pdHkuYmJjbGFzcyBvbmNlIHdlIGhhdmUgdGhlIGluZnJhc3R1Y3R1cmUKICAgICBwYWNrYWdlX2xpc3QgPSBbXQpAQCAtMTEwMCw3ICsxMTEyLDEyIEBACiAgICAgICAgIGlmIHBrZyBpbiBwYWNrYWdlX2xpc3Q6CiAgICAgICAgICAgICBtc2cgPSAiJXMgaXMgbGlzdGVkIGluIFBBQ0tBR0VTIG11bHRpcGxlIHRpbWVzLCB0aGlzIGxlYWRzIHRvIHBhY2thZ2luZyBlcnJvcnMuIiAlIHBrZwogICAgICAgICAgICAgcGFja2FnZV9xYV9oYW5kbGVfZXJyb3IoInBhY2thZ2VzLWxpc3QiLCBtc2csIGQpCi0gICAgICAgIGVsaWYgYXV0b2RlYnVnIGFuZCBwa2cuZW5kc3dpdGgoIi1kYmciKToKKyAgICAgICAgIyBJZiBkZWJ1Zy13aXRoLXNyY3BrZyBtb2RlIGlzIGVuYWJsZWQgdGhlbiB0aGUgc3JjIHBhY2thZ2Ugd2lsbCBoYXZlCisgICAgICAgICMgcHJpb3JpdHkgb3ZlciBkYmcgcGFja2FnZSB3aGVuIGFzc2lnbmluZyB0aGUgZmlsZXMuCisgICAgICAgICMgVGhpcyBhbGxvd3Mgc3JjIHBhY2thZ2UgdG8gaW5jbHVkZSBzb3VyY2UgZmlsZXMgYW5kIHJlbW92ZSB0aGVtIGZyb20gZGJnLgorICAgICAgICBlbGlmIHNwbGl0X3NvdXJjZV9wYWNrYWdlIGFuZCBwa2cuZW5kc3dpdGgoIi1zcmMiKToKKyAgICAgICAgICAgIHBhY2thZ2VfbGlzdC5pbnNlcnQoMCwgcGtnKQorICAgICAgICBlbGlmIGF1dG9kZWJ1ZyBhbmQgcGtnLmVuZHN3aXRoKCItZGJnIikgYW5kIG5vdCBzcGxpdF9zb3VyY2VfcGFja2FnZToKICAgICAgICAgICAgIHBhY2thZ2VfbGlzdC5pbnNlcnQoMCwgcGtnKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcGFja2FnZV9saXN0LmFwcGVuZChwa2cpCkBAIC0xNDM0LDEzICsxNDUxLDcgQEAKIGZpCiB9CiAKLSMgSW4gTW9ydHkgYW5kIGVhcmxpZXIgcmVsZWFzZXMsIGFuZCBvbiBtYXN0ZXIgKFJvY2tvKSwgdGhlIFJQTSBmaWxlCi0jIGRlcGVuZGVuY2llcyBhcmUgYWx3YXlzIGVuYWJsZWQuIEhvd2V2ZXIsIHNpbmNlIHRoZXkgd2VyZSBicm9rZW4gd2l0aCB0aGUKLSMgcmVsZWFzZSBvZiBQeXJvIGFuZCBlbmFibGluZyB0aGVtIG1heSBjYXVzZSBidWlsZCBwcm9ibGVtcyBmb3Igc29tZSBwYWNrYWdlcywKLSMgdGhleSBhcmUgbm90IGVuYWJsZWQgYnkgZGVmYXVsdCBpbiBQeXJvLiBTZXR0aW5nIEVOQUJMRV9SUE1fRklMRURFUFNfRk9SX1BZUk8KLSMgdG8gIjEiIHdpbGwgZW5hYmxlIHRoZW0gYWdhaW4uCi1FTkFCTEVfUlBNX0ZJTEVERVBTX0ZPUl9QWVJPID8/PSAiMCIKLVJQTURFUFMgPSAiJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L3JwbS9ycG1kZXBzJHtAJyAtLWFsbGRlcHMnIGlmIGQuZ2V0VmFyKCdFTkFCTEVfUlBNX0ZJTEVERVBTX0ZPUl9QWVJPJykgPT0gJzEnIGVsc2UgJyd9IgorUlBNREVQUyA9ICIke1NUQUdJTkdfTElCRElSX05BVElWRX0vcnBtL3JwbWRlcHMgLS1hbGxkZXBzIgogCiAjIENvbGxlY3QgcGVyZmlsZSBydW4tdGltZSBkZXBlbmRlbmN5IG1ldGFkYXRhCiAjIE91dHB1dDoKQEAgLTE0NjUsNyArMTQ3Niw3IEBACiAgICAgZm9yIHBrZyBpbiBwYWNrYWdlcy5zcGxpdCgpOgogICAgICAgICBpZiBkLmdldFZhcignU0tJUF9GSUxFREVQU18nICsgcGtnKSA9PSAnMSc6CiAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICBpZiBwa2cuZW5kc3dpdGgoJy1kYmcnKSBvciBwa2cuZW5kc3dpdGgoJy1kb2MnKSBvciBwa2cuZmluZCgnLWxvY2FsZS0nKSAhPSAtMSBvciBwa2cuZmluZCgnLWxvY2FsZWRhdGEtJykgIT0gLTEgb3IgcGtnLmZpbmQoJy1nY29udi0nKSAhPSAtMSBvciBwa2cuZmluZCgnLWNoYXJtYXAtJykgIT0gLTEgb3IgcGtnLnN0YXJ0c3dpdGgoJ2tlcm5lbC1tb2R1bGUtJyk6CisgICAgICAgIGlmIHBrZy5lbmRzd2l0aCgnLWRiZycpIG9yIHBrZy5lbmRzd2l0aCgnLWRvYycpIG9yIHBrZy5maW5kKCctbG9jYWxlLScpICE9IC0xIG9yIHBrZy5maW5kKCctbG9jYWxlZGF0YS0nKSAhPSAtMSBvciBwa2cuZmluZCgnLWdjb252LScpICE9IC0xIG9yIHBrZy5maW5kKCctY2hhcm1hcC0nKSAhPSAtMSBvciBwa2cuc3RhcnRzd2l0aCgna2VybmVsLW1vZHVsZS0nKSBvciBwa2cuZW5kc3dpdGgoJy1zcmMnKToKICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIGZvciBmaWxlcyBpbiBjaHVua3MocGtnZmlsZXNbcGtnXSwgMTAwKToKICAgICAgICAgICAgIHBrZ2xpc3QuYXBwZW5kKChwa2csIGZpbGVzLCBycG1kZXBzLCBwa2dkZXN0KSkKQEAgLTE1ODMsNyArMTU5NCw3IEBACiAgICAgICAgICAgICAgICAgY29tYm9zLmFwcGVuZCgiLSIuam9pbihvcHRpb25zWzA6aV0pKQogICAgICAgICAgICAgcmV0dXJuIGNvbWJvcwogCi0gICAgICAgIGlmIChmaWxlLmVuZHN3aXRoKCcuZHlsaWInKSBvciBmaWxlLmVuZHN3aXRoKCcuc28nKSkgYW5kIG5vdCBwa2cuZW5kc3dpdGgoJy1kZXYnKSBhbmQgbm90IHBrZy5lbmRzd2l0aCgnLWRiZycpOgorICAgICAgICBpZiAoZmlsZS5lbmRzd2l0aCgnLmR5bGliJykgb3IgZmlsZS5lbmRzd2l0aCgnLnNvJykpIGFuZCBub3QgcGtnLmVuZHN3aXRoKCctZGV2JykgYW5kIG5vdCBwa2cuZW5kc3dpdGgoJy1kYmcnKSBhbmQgbm90IHBrZy5lbmRzd2l0aCgnLXNyYycpOgogICAgICAgICAgICAgIyBEcm9wIHN1ZmZpeAogICAgICAgICAgICAgbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoZmlsZSkucnNwbGl0KCIuIiwxKVswXQogICAgICAgICAgICAgIyBGaW5kIGFsbCBjb21iaW5hdGlvbnMKQEAgLTIwNjAsNyArMjA3MSw3IEBACiAgICAgIyBjYWNoZS4gIFRoaXMgaXMgdXNlZnVsIGlmIGFuIGl0ZW0gdGhpcyBjbGFzcyBkZXBlbmRzIG9uIGNoYW5nZXMgaW4gYQogICAgICMgd2F5IHRoYXQgdGhlIG91dHB1dCBvZiB0aGlzIGNsYXNzIGNoYW5nZXMuICBycG1kZXBzIGlzIGEgZ29vZCBleGFtcGxlCiAgICAgIyBhcyBhbnkgY2hhbmdlIHRvIHJwbWRlcHMgcmVxdWlyZXMgdGhpcyB0byBiZSByZXJ1bi4KLSAgICAjIFBBQ0tBR0VfQkJDTEFTU19WRVJTSU9OID0gIjEiCisgICAgIyBQQUNLQUdFX0JCQ0xBU1NfVkVSU0lPTiA9ICIyIgogCiAgICAgIyBJbml0IGNhY2hlZHBhdGgKICAgICBnbG9iYWwgY3BhdGgKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZV9kZWIuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZV9kZWIuYmJjbGFzcwppbmRleCBlYWNhYmNkLi41ZDI5NzkzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2VfZGViLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlX2RlYi5iYmNsYXNzCkBAIC0zOSw1MCArMzksNzkgQEAKICAgICBpZiBhcmNoID09ICJhcm0iOgogICAgICAgICByZXR1cm4gYXJjaCArIFsiZWwiLCAiaGYiXVsiY2FsbGNvbnZlbnRpb24taGFyZCIgaW4gdHVuZV9mZWF0dXJlc10KICAgICByZXR1cm4gYXJjaAotIwotIyBpbnN0YWxsIGEgYnVuY2ggb2YgcGFja2FnZXMgdXNpbmcgYXB0Ci0jIHRoZSBmb2xsb3dpbmcgc2hlbGwgdmFyaWFibGVzIG5lZWRzIHRvIGJlIHNldCBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmM6Ci0jIElOU1RBTExfUk9PVEZTX0RFQiAtIGluc3RhbGwgcm9vdCBkaXIKLSMgSU5TVEFMTF9CQVNFQVJDSF9ERUIgLSBpbnN0YWxsIGJhc2UgYXJjaGl0ZWN1dHJlCi0jIElOU1RBTExfQVJDSFNfREVCIC0gbGlzdCBvZiBhdmFpbGFibGUgYXJjaHMKLSMgSU5TVEFMTF9QQUNLQUdFU19OT1JNQUxfREVCIC0gcGFja2FnZXMgdG8gYmUgaW5zdGFsbGVkCi0jIElOU1RBTExfUEFDS0FHRVNfQVRURU1QVE9OTFlfREVCIC0gcGFja2FnZXMgYXR0ZW1wdGVkIHRvIGJlIGluc3RhbGxlZCBvbmx5Ci0jIElOU1RBTExfUEFDS0FHRVNfTElOR1VBU19ERUIgLSBhZGRpdGlvbmFsIHBhY2thZ2VzIGZvciB1Y2xpYmMKLSMgSU5TVEFMTF9UQVNLX0RFQiAtIHRhc2sgbmFtZQogCiBweXRob24gZG9fcGFja2FnZV9kZWIgKCkgewotICAgIGltcG9ydCByZSwgY29weQotICAgIGltcG9ydCB0ZXh0d3JhcAotICAgIGltcG9ydCBzdWJwcm9jZXNzCi0gICAgaW1wb3J0IGNvbGxlY3Rpb25zCi0gICAgaW1wb3J0IGNvZGVjcworCisgICAgaW1wb3J0IG11bHRpcHJvY2Vzc2luZworICAgIGltcG9ydCB0cmFjZWJhY2sKKworICAgIGNsYXNzIERlYmlhbldyaXRlUGtnUHJvY2VzcyhtdWx0aXByb2Nlc3NpbmcuUHJvY2Vzcyk6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgbXVsdGlwcm9jZXNzaW5nLlByb2Nlc3MuX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICAgICAgc2VsZi5fcGNvbm4sIHNlbGYuX2Njb25uID0gbXVsdGlwcm9jZXNzaW5nLlBpcGUoKQorICAgICAgICAgICAgc2VsZi5fZXhjZXB0aW9uID0gTm9uZQorCisgICAgICAgIGRlZiBydW4oc2VsZik6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbXVsdGlwcm9jZXNzaW5nLlByb2Nlc3MucnVuKHNlbGYpCisgICAgICAgICAgICAgICAgc2VsZi5fY2Nvbm4uc2VuZChOb25lKQorICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgIHRiID0gdHJhY2ViYWNrLmZvcm1hdF9leGMoKQorICAgICAgICAgICAgICAgIHNlbGYuX2Njb25uLnNlbmQoKGUsIHRiKSkKKworICAgICAgICBAcHJvcGVydHkKKyAgICAgICAgZGVmIGV4Y2VwdGlvbihzZWxmKToKKyAgICAgICAgICAgIGlmIHNlbGYuX3Bjb25uLnBvbGwoKToKKyAgICAgICAgICAgICAgICBzZWxmLl9leGNlcHRpb24gPSBzZWxmLl9wY29ubi5yZWN2KCkKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9leGNlcHRpb24KIAogICAgIG9sZGN3ZCA9IG9zLmdldGN3ZCgpCiAKLSAgICB3b3JrZGlyID0gZC5nZXRWYXIoJ1dPUktESVInKQotICAgIGlmIG5vdCB3b3JrZGlyOgotICAgICAgICBiYi5lcnJvcigiV09SS0RJUiBub3QgZGVmaW5lZCwgdW5hYmxlIHRvIHBhY2thZ2UiKQotICAgICAgICByZXR1cm4KLQotICAgIG91dGRpciA9IGQuZ2V0VmFyKCdQS0dXUklURURJUkRFQicpCi0gICAgaWYgbm90IG91dGRpcjoKLSAgICAgICAgYmIuZXJyb3IoIlBLR1dSSVRFRElSREVCIG5vdCBkZWZpbmVkLCB1bmFibGUgdG8gcGFja2FnZSIpCi0gICAgICAgIHJldHVybgotCiAgICAgcGFja2FnZXMgPSBkLmdldFZhcignUEFDS0FHRVMnKQogICAgIGlmIG5vdCBwYWNrYWdlczoKICAgICAgICAgYmIuZGVidWcoMSwgIlBBQ0tBR0VTIG5vdCBkZWZpbmVkLCBub3RoaW5nIHRvIHBhY2thZ2UiKQogICAgICAgICByZXR1cm4KIAogICAgIHRtcGRpciA9IGQuZ2V0VmFyKCdUTVBESVInKQotCiAgICAgaWYgb3MuYWNjZXNzKG9zLnBhdGguam9pbih0bXBkaXIsICJzdGFtcHMiLCAiREVCX1BBQ0tBR0VfSU5ERVhfQ0xFQU4iKSxvcy5SX09LKToKICAgICAgICAgb3MudW5saW5rKG9zLnBhdGguam9pbih0bXBkaXIsICJzdGFtcHMiLCAiREVCX1BBQ0tBR0VfSU5ERVhfQ0xFQU4iKSkKIAotICAgIGlmIHBhY2thZ2VzID09IFtdOgotICAgICAgICBiYi5kZWJ1ZygxLCAiTm8gcGFja2FnZXM7IG5vdGhpbmcgdG8gZG8iKQotICAgICAgICByZXR1cm4KKyAgICBtYXhfcHJvY2VzcyA9IGludChkLmdldFZhcigiQkJfTlVNQkVSX1RIUkVBRFMiKSBvciBvcy5jcHVfY291bnQoKSBvciAxKQorICAgIGxhdW5jaGVkID0gW10KKyAgICBlcnJvciA9IE5vbmUKKyAgICBwa2dzID0gcGFja2FnZXMuc3BsaXQoKQorICAgIHdoaWxlIG5vdCBlcnJvciBhbmQgcGtnczoKKyAgICAgICAgaWYgbGVuKGxhdW5jaGVkKSA8IG1heF9wcm9jZXNzOgorICAgICAgICAgICAgcCA9IERlYmlhbldyaXRlUGtnUHJvY2Vzcyh0YXJnZXQ9ZGViX3dyaXRlX3BrZywgYXJncz0ocGtncy5wb3AoKSwgZCkpCisgICAgICAgICAgICBwLnN0YXJ0KCkKKyAgICAgICAgICAgIGxhdW5jaGVkLmFwcGVuZChwKQorICAgICAgICBmb3IgcSBpbiBsYXVuY2hlZDoKKyAgICAgICAgICAgICMgVGhlIGZpbmlzaGVkIHByb2Nlc3NlcyBhcmUgam9pbmVkIHdoZW4gY2FsbGluZyBpc19hbGl2ZSgpCisgICAgICAgICAgICBpZiBub3QgcS5pc19hbGl2ZSgpOgorICAgICAgICAgICAgICAgIGxhdW5jaGVkLnJlbW92ZShxKQorICAgICAgICAgICAgaWYgcS5leGNlcHRpb246CisgICAgICAgICAgICAgICAgZXJyb3IsIHRyYWNlYmFjayA9IHEuZXhjZXB0aW9uCisgICAgICAgICAgICAgICAgYnJlYWsKIAorICAgIGZvciBwIGluIGxhdW5jaGVkOgorICAgICAgICBwLmpvaW4oKQorCisgICAgb3MuY2hkaXIob2xkY3dkKQorCisgICAgaWYgZXJyb3I6CisgICAgICAgIHJhaXNlIGVycm9yCit9Citkb19wYWNrYWdlX2RlYlt2YXJkZXBzXSArPSAiZGViX3dyaXRlX3BrZyIKK2RvX3BhY2thZ2VfZGViW3ZhcmRlcHNleGNsdWRlXSA9ICJCQl9OVU1CRVJfVEhSRUFEUyIKKworZGVmIGRlYl93cml0ZV9wa2cocGtnLCBkKToKKyAgICBpbXBvcnQgcmUsIGNvcHkKKyAgICBpbXBvcnQgdGV4dHdyYXAKKyAgICBpbXBvcnQgc3VicHJvY2VzcworICAgIGltcG9ydCBjb2xsZWN0aW9ucworICAgIGltcG9ydCBjb2RlY3MKKworICAgIG91dGRpciA9IGQuZ2V0VmFyKCdQS0dXUklURURJUkRFQicpCiAgICAgcGtnZGVzdCA9IGQuZ2V0VmFyKCdQS0dERVNUJykKIAogICAgIGRlZiBjbGVhbnVwY29udHJvbChyb290KToKQEAgLTkxLDExICsxMjAsMTEgQEAKICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHApOgogICAgICAgICAgICAgICAgIGJiLnV0aWxzLnBydW5lZGlyKHApCiAKLSAgICBmb3IgcGtnIGluIHBhY2thZ2VzLnNwbGl0KCk6Ci0gICAgICAgIGxvY2FsZGF0YSA9IGJiLmRhdGEuY3JlYXRlQ29weShkKQotICAgICAgICByb290ID0gIiVzLyVzIiAlIChwa2dkZXN0LCBwa2cpCisgICAgbG9jYWxkYXRhID0gYmIuZGF0YS5jcmVhdGVDb3B5KGQpCisgICAgcm9vdCA9ICIlcy8lcyIgJSAocGtnZGVzdCwgcGtnKQogCi0gICAgICAgIGxmID0gYmIudXRpbHMubG9ja2ZpbGUocm9vdCArICIubG9jayIpCisgICAgbGYgPSBiYi51dGlscy5sb2NrZmlsZShyb290ICsgIi5sb2NrIikKKyAgICB0cnk6CiAKICAgICAgICAgbG9jYWxkYXRhLnNldFZhcignUk9PVCcsICcnKQogICAgICAgICBsb2NhbGRhdGEuc2V0VmFyKCdST09UXyVzJyAlIHBrZywgcm9vdCkKQEAgLTExNyw4ICsxNDYsNyBAQAogICAgICAgICBnID0gZ2xvYignKicpCiAgICAgICAgIGlmIG5vdCBnIGFuZCBsb2NhbGRhdGEuZ2V0VmFyKCdBTExPV19FTVBUWScsIEZhbHNlKSAhPSAiMSI6CiAgICAgICAgICAgICBiYi5ub3RlKCJOb3QgY3JlYXRpbmcgZW1wdHkgYXJjaGl2ZSBmb3IgJXMtJXMtJXMiICUgKHBrZywgbG9jYWxkYXRhLmdldFZhcignUEtHVicpLCBsb2NhbGRhdGEuZ2V0VmFyKCdQS0dSJykpKQotICAgICAgICAgICAgYmIudXRpbHMudW5sb2NrZmlsZShsZikKLSAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICBjb250cm9sZGlyID0gb3MucGF0aC5qb2luKHJvb3QsICdERUJJQU4nKQogICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoY29udHJvbGRpcikKQEAgLTE5NCw4ICsyMjIsOCBAQAogICAgICAgICBtYXBwaW5nX3JlbmFtZV9ob29rKGxvY2FsZGF0YSkKIAogICAgICAgICBkZWYgZGViaWFuX2NtcF9yZW1hcCh2YXIpOgotICAgICAgICAgICAgIyBkcGtnIGRvZXMgbm90IGFsbG93IGZvciAnKCcgb3IgJyknIGluIGEgZGVwZW5kZW5jeSBuYW1lCi0gICAgICAgICAgICAjIHJlcGxhY2UgdGhlc2UgaW5zdGFuY2VzIHdpdGggJ19fJyBhbmQgJ19fJworICAgICAgICAgICAgIyBkcGtnIGRvZXMgbm90IGFsbG93IGZvciAnKCcsICcpJyBvciAnOicgaW4gYSBkZXBlbmRlbmN5IG5hbWUKKyAgICAgICAgICAgICMgUmVwbGFjZSBhbnkgaW5zdGFuY2VzIG9mIHRoZW0gd2l0aCAnX18nCiAgICAgICAgICAgICAjCiAgICAgICAgICAgICAjIEluIGRlYmlhbiAnPicgYW5kICc8JyBkbyBub3QgbWVhbiB3aGF0IGl0IGFwcGVhcnMgdGhleSBtZWFuCiAgICAgICAgICAgICAjICAgJzwnID0gbGVzcyBvciBlcXVhbApAQCAtMjA0LDggKzIzMiw3IEBACiAgICAgICAgICAgICAjCiAgICAgICAgICAgICBmb3IgZGVwIGluIHZhcjoKICAgICAgICAgICAgICAgICBpZiAnKCcgaW4gZGVwOgotICAgICAgICAgICAgICAgICAgICBuZXdkZXAgPSBkZXAucmVwbGFjZSgnKCcsICdfXycpCi0gICAgICAgICAgICAgICAgICAgIG5ld2RlcCA9IG5ld2RlcC5yZXBsYWNlKCcpJywgJ19fJykKKyAgICAgICAgICAgICAgICAgICAgbmV3ZGVwID0gcmUuc3ViKHInWyg6KV0nLCAnX18nLCBkZXApCiAgICAgICAgICAgICAgICAgICAgIGlmIG5ld2RlcCAhPSBkZXA6CiAgICAgICAgICAgICAgICAgICAgICAgICB2YXJbbmV3ZGVwXSA9IHZhcltkZXBdCiAgICAgICAgICAgICAgICAgICAgICAgICBkZWwgdmFyW2RlcF0KQEAgLTI4OSwxNyArMzE2LDE5IEBACiAgICAgICAgICAgICBjb25mZmlsZXMuY2xvc2UoKQogCiAgICAgICAgIG9zLmNoZGlyKGJhc2VkaXIpCi0gICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KCJQQVRIPVwiJXNcIiBkcGtnLWRlYiAtYiAlcyAlcyIgJSAobG9jYWxkYXRhLmdldFZhcigiUEFUSCIpLCByb290LCBwa2dvdXRkaXIpLCBzaGVsbD1UcnVlKQorICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgiUEFUSD1cIiVzXCIgZHBrZy1kZWIgLWIgJXMgJXMiICUgKGxvY2FsZGF0YS5nZXRWYXIoIlBBVEgiKSwgcm9vdCwgcGtnb3V0ZGlyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGVsbD1UcnVlKQogCisgICAgZmluYWxseToKICAgICAgICAgY2xlYW51cGNvbnRyb2wocm9vdCkKICAgICAgICAgYmIudXRpbHMudW5sb2NrZmlsZShsZikKLSAgICBvcy5jaGRpcihvbGRjd2QpCi19CisKKyMgT3RoZXJ3aXNlIGFsbGFyY2ggcGFja2FnZXMgbWF5IGNoYW5nZSBkZXBlbmRpbmcgb24gb3ZlcnJpZGUgY29uZmlndXJhdGlvbgorZGViX3dyaXRlX3BrZ1t2YXJkZXBzZXhjbHVkZV0gPSAiT1ZFUlJJREVTIgorCiAjIEluZGlyZWN0IHJlZmVyZW5jZXMgdG8gdGhlc2UgdmFycwogZG9fcGFja2FnZV93cml0ZV9kZWJbdmFyZGVwc10gKz0gIlBLR1YgUEtHUiBQS0dWIERFU0NSSVBUSU9OIFNFQ1RJT04gUFJJT1JJVFkgTUFJTlRBSU5FUiBEUEtHX0FSQ0ggUE4gSE9NRVBBR0UiCi0jIE90aGVyd2lzZSBhbGxhcmNoIHBhY2thZ2VzIG1heSBjaGFuZ2UgZGVwZW5kaW5nIG9uIG92ZXJyaWRlIGNvbmZpZ3VyYXRpb24KLWRvX3BhY2thZ2VfZGViW3ZhcmRlcHNleGNsdWRlXSA9ICJPVkVSUklERVMiCi0KIAogU1NUQVRFVEFTS1MgKz0gImRvX3BhY2thZ2Vfd3JpdGVfZGViIgogZG9fcGFja2FnZV93cml0ZV9kZWJbc3N0YXRlLWlucHV0ZGlyc10gPSAiJHtQS0dXUklURURJUkRFQn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2VfaXBrLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2VfaXBrLmJiY2xhc3MKaW5kZXggYTFlNTFlZS4uNmMxZmRhYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlX2lway5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZV9pcGsuYmJjbGFzcwpAQCAtMTIsMTUgKzEyLDM0IEBACiAKIE9QS0dfQVJHUyArPSAiLS1mb3JjZV9wb3N0aW5zdGFsbCAtLXByZWZlci1hcmNoLXRvLXZlcnNpb24iCiBPUEtHX0FSR1MgKz0gIiR7QFsnJywgJy0tbm8taW5zdGFsbC1yZWNvbW1lbmRzJ11bZC5nZXRWYXIoIk5PX1JFQ09NTUVOREFUSU9OUyIpID09ICIxIl19IgotT1BLR19BUkdTICs9ICIke0BbJycsICctLWFkZC1leGNsdWRlICcgKyAnIC0tYWRkLWV4Y2x1ZGUgJy5qb2luKChkLmdldFZhcignUEFDS0FHRV9FWENMVURFJykgb3IgIiIpLnNwbGl0KCkpXVsoZC5nZXRWYXIoIlBBQ0tBR0VfRVhDTFVERSIpIG9yICIiKSAhPSAiIl19IgorT1BLR19BUkdTICs9ICIke0BbJycsICctLWFkZC1leGNsdWRlICcgKyAnIC0tYWRkLWV4Y2x1ZGUgJy5qb2luKChkLmdldFZhcignUEFDS0FHRV9FWENMVURFJykgb3IgIiIpLnNwbGl0KCkpXVsoZC5nZXRWYXIoIlBBQ0tBR0VfRVhDTFVERSIpIG9yICIiKS5zdHJpcCgpICE9ICIiXX0iCiAKIE9QS0dMSUJESVIgPSAiJHtsb2NhbHN0YXRlZGlyfS9saWIiCiAKIHB5dGhvbiBkb19wYWNrYWdlX2lwayAoKSB7Ci0gICAgaW1wb3J0IHJlLCBjb3B5Ci0gICAgaW1wb3J0IHRleHR3cmFwCi0gICAgaW1wb3J0IHN1YnByb2Nlc3MKLSAgICBpbXBvcnQgY29sbGVjdGlvbnMKKyAgICBpbXBvcnQgbXVsdGlwcm9jZXNzaW5nCisgICAgaW1wb3J0IHRyYWNlYmFjaworCisgICAgY2xhc3MgSVBLV3JpdGVQa2dQcm9jZXNzKG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzKToKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICBtdWx0aXByb2Nlc3NpbmcuUHJvY2Vzcy5fX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpCisgICAgICAgICAgICBzZWxmLl9wY29ubiwgc2VsZi5fY2Nvbm4gPSBtdWx0aXByb2Nlc3NpbmcuUGlwZSgpCisgICAgICAgICAgICBzZWxmLl9leGNlcHRpb24gPSBOb25lCisKKyAgICAgICAgZGVmIHJ1bihzZWxmKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBtdWx0aXByb2Nlc3NpbmcuUHJvY2Vzcy5ydW4oc2VsZikKKyAgICAgICAgICAgICAgICBzZWxmLl9jY29ubi5zZW5kKE5vbmUpCisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgdGIgPSB0cmFjZWJhY2suZm9ybWF0X2V4YygpCisgICAgICAgICAgICAgICAgc2VsZi5fY2Nvbm4uc2VuZCgoZSwgdGIpKQorCisgICAgICAgIEBwcm9wZXJ0eQorICAgICAgICBkZWYgZXhjZXB0aW9uKHNlbGYpOgorICAgICAgICAgICAgaWYgc2VsZi5fcGNvbm4ucG9sbCgpOgorICAgICAgICAgICAgICAgIHNlbGYuX2V4Y2VwdGlvbiA9IHNlbGYuX3Bjb25uLnJlY3YoKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2V4Y2VwdGlvbgorCiAKICAgICBvbGRjd2QgPSBvcy5nZXRjd2QoKQogCkBAIC00MiwyMCArNjEsNTUgQEAKICAgICBpZiBvcy5hY2Nlc3Mob3MucGF0aC5qb2luKHRtcGRpciwgInN0YW1wcyIsICJJUEtfUEFDS0FHRV9JTkRFWF9DTEVBTiIpLCBvcy5SX09LKToKICAgICAgICAgb3MudW5saW5rKG9zLnBhdGguam9pbih0bXBkaXIsICJzdGFtcHMiLCAiSVBLX1BBQ0tBR0VfSU5ERVhfQ0xFQU4iKSkKIAorICAgIG1heF9wcm9jZXNzID0gaW50KGQuZ2V0VmFyKCJCQl9OVU1CRVJfVEhSRUFEUyIpIG9yIG9zLmNwdV9jb3VudCgpIG9yIDEpCisgICAgbGF1bmNoZWQgPSBbXQorICAgIGVycm9yID0gTm9uZQorICAgIHBrZ3MgPSBwYWNrYWdlcy5zcGxpdCgpCisgICAgd2hpbGUgbm90IGVycm9yIGFuZCBwa2dzOgorICAgICAgICBpZiBsZW4obGF1bmNoZWQpIDwgbWF4X3Byb2Nlc3M6CisgICAgICAgICAgICBwID0gSVBLV3JpdGVQa2dQcm9jZXNzKHRhcmdldD1pcGtfd3JpdGVfcGtnLCBhcmdzPShwa2dzLnBvcCgpLCBkKSkKKyAgICAgICAgICAgIHAuc3RhcnQoKQorICAgICAgICAgICAgbGF1bmNoZWQuYXBwZW5kKHApCisgICAgICAgIGZvciBxIGluIGxhdW5jaGVkOgorICAgICAgICAgICAgIyBUaGUgZmluaXNoZWQgcHJvY2Vzc2VzIGFyZSBqb2luZWQgd2hlbiBjYWxsaW5nIGlzX2FsaXZlKCkKKyAgICAgICAgICAgIGlmIG5vdCBxLmlzX2FsaXZlKCk6CisgICAgICAgICAgICAgICAgbGF1bmNoZWQucmVtb3ZlKHEpCisgICAgICAgICAgICBpZiBxLmV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICBlcnJvciwgdHJhY2ViYWNrID0gcS5leGNlcHRpb24KKyAgICAgICAgICAgICAgICBicmVhaworCisgICAgZm9yIHAgaW4gbGF1bmNoZWQ6CisgICAgICAgIHAuam9pbigpCisKKyAgICBvcy5jaGRpcihvbGRjd2QpCisKKyAgICBpZiBlcnJvcjoKKyAgICAgICAgcmFpc2UgZXJyb3IKK30KK2RvX3BhY2thZ2VfaXBrW3ZhcmRlcHNdICs9ICJpcGtfd3JpdGVfcGtnIgorZG9fcGFja2FnZV9pcGtbdmFyZGVwc2V4Y2x1ZGVdID0gIkJCX05VTUJFUl9USFJFQURTIgorCitkZWYgaXBrX3dyaXRlX3BrZyhwa2csIGQpOgorICAgIGltcG9ydCByZSwgY29weQorICAgIGltcG9ydCBzdWJwcm9jZXNzCisgICAgaW1wb3J0IHRleHR3cmFwCisgICAgaW1wb3J0IGNvbGxlY3Rpb25zCisKICAgICBkZWYgY2xlYW51cGNvbnRyb2wocm9vdCk6CiAgICAgICAgIGZvciBwIGluIFsnQ09OVFJPTCcsICdERUJJQU4nXToKICAgICAgICAgICAgIHAgPSBvcy5wYXRoLmpvaW4ocm9vdCwgcCkKICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHApOgogICAgICAgICAgICAgICAgIGJiLnV0aWxzLnBydW5lZGlyKHApCiAKKyAgICBvdXRkaXIgPSBkLmdldFZhcignUEtHV1JJVEVESVJJUEsnKQorICAgIHBrZ2Rlc3QgPSBkLmdldFZhcignUEtHREVTVCcpCiAgICAgcmVjaXBlc291cmNlID0gb3MucGF0aC5iYXNlbmFtZShkLmdldFZhcignRklMRScpKQogCi0gICAgZm9yIHBrZyBpbiBwYWNrYWdlcy5zcGxpdCgpOgotICAgICAgICBsb2NhbGRhdGEgPSBiYi5kYXRhLmNyZWF0ZUNvcHkoZCkKLSAgICAgICAgcm9vdCA9ICIlcy8lcyIgJSAocGtnZGVzdCwgcGtnKQorICAgIGxvY2FsZGF0YSA9IGJiLmRhdGEuY3JlYXRlQ29weShkKQorICAgIHJvb3QgPSAiJXMvJXMiICUgKHBrZ2Rlc3QsIHBrZykKIAotICAgICAgICBsZiA9IGJiLnV0aWxzLmxvY2tmaWxlKHJvb3QgKyAiLmxvY2siKQotCisgICAgbGYgPSBiYi51dGlscy5sb2NrZmlsZShyb290ICsgIi5sb2NrIikKKyAgICB0cnk6CiAgICAgICAgIGxvY2FsZGF0YS5zZXRWYXIoJ1JPT1QnLCAnJykKICAgICAgICAgbG9jYWxkYXRhLnNldFZhcignUk9PVF8lcycgJSBwa2csIHJvb3QpCiAgICAgICAgIHBrZ25hbWUgPSBsb2NhbGRhdGEuZ2V0VmFyKCdQS0dfJXMnICUgcGtnKQpAQCAtMTAwLDggKzE1NCw3IEBACiAgICAgICAgIGcgPSBnbG9iKCcqJykKICAgICAgICAgaWYgbm90IGcgYW5kIGxvY2FsZGF0YS5nZXRWYXIoJ0FMTE9XX0VNUFRZJywgRmFsc2UpICE9ICIxIjoKICAgICAgICAgICAgIGJiLm5vdGUoIk5vdCBjcmVhdGluZyBlbXB0eSBhcmNoaXZlIGZvciAlcy0lcy0lcyIgJSAocGtnLCBsb2NhbGRhdGEuZ2V0VmFyKCdQS0dWJyksIGxvY2FsZGF0YS5nZXRWYXIoJ1BLR1InKSkpCi0gICAgICAgICAgICBiYi51dGlscy51bmxvY2tmaWxlKGxmKQotICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgIGNvbnRyb2xkaXIgPSBvcy5wYXRoLmpvaW4ocm9vdCwgJ0NPTlRST0wnKQogICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoY29udHJvbGRpcikKQEAgLTE0MiwxNiArMTk1LDkgQEAKICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiA9IGxvY2FsZGF0YS5nZXRWYXIoJ0RFU0NSSVBUSU9OJykgb3IgIi4iCiAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gPSB0ZXh0d3JhcC5kZWRlbnQoZGVzY3JpcHRpb24pLnN0cmlwKCkKICAgICAgICAgICAgICAgICBpZiAnXFxuJyBpbiBkZXNjcmlwdGlvbjoKLSAgICAgICAgICAgICAgICAgICAgIyBNYW51YWxseSBpbmRlbnQKKyAgICAgICAgICAgICAgICAgICAgIyBNYW51YWxseSBpbmRlbnQ6IG11bHRpbGluZSBkZXNjcmlwdGlvbiBpbmNsdWRlcyBhIGxlYWRpbmcgc3BhY2UKICAgICAgICAgICAgICAgICAgICAgZm9yIHQgaW4gZGVzY3JpcHRpb24uc3BsaXQoJ1xcbicpOgotICAgICAgICAgICAgICAgICAgICAgICAgIyBXZSBkb24ndCBsaW1pdCB0aGUgd2lkdGggd2hlbiBtYW51YWxseSBpbmRlbnQsIGJ1dCB3ZSBkbwotICAgICAgICAgICAgICAgICAgICAgICAgIyBuZWVkIHRoZSB0ZXh0d3JhcC5maWxsKCkgdG8gc2V0IHRoZSBpbml0aWFsX2luZGVudCBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICMgc3Vic2VxdWVudF9pbmRlbnQsIHNvIHNldCBhIGxhcmdlIHdpZHRoCi0gICAgICAgICAgICAgICAgICAgICAgICBsaW5lID0gdGV4dHdyYXAuZmlsbCh0LnN0cmlwKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0xMDAwMDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsX2luZGVudD0nICcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzZXF1ZW50X2luZGVudD0nICcpIG9yICcuJwotICAgICAgICAgICAgICAgICAgICAgICAgY3RybGZpbGUud3JpdGUoJyVzXG4nICUgbGluZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGN0cmxmaWxlLndyaXRlKCcgJXNcbicgJSAodC5zdHJpcCgpIG9yICcgLicpKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICMgQXV0byBpbmRlbnQKICAgICAgICAgICAgICAgICAgICAgY3RybGZpbGUud3JpdGUoJyVzXG4nICUgdGV4dHdyYXAuZmlsbChkZXNjcmlwdGlvbiwgd2lkdGg9NzQsIGluaXRpYWxfaW5kZW50PScgJywgc3Vic2VxdWVudF9pbmRlbnQ9JyAnKSkKQEAgLTIyOCwyMCArMjc0LDIyIEBACiAKICAgICAgICAgb3MuY2hkaXIoYmFzZWRpcikKICAgICAgICAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoIlBBVEg9XCIlc1wiICVzICVzICVzIiAlIChsb2NhbGRhdGEuZ2V0VmFyKCJQQVRIIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5nZXRWYXIoIk9QS0dCVUlMRENNRCIpLCBwa2csIHBrZ291dGRpciksIHNoZWxsPVRydWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5nZXRWYXIoIk9QS0dCVUlMRENNRCIpLCBwa2csIHBrZ291dGRpciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hlbGw9VHJ1ZSkKIAogICAgICAgICBpZiBkLmdldFZhcignSVBLX1NJR05fUEFDS0FHRVMnKSA9PSAnMSc6CiAgICAgICAgICAgICBpcGt2ZXIgPSAiJXMtJXMiICUgKGQuZ2V0VmFyKCdQS0dWJyksIGQuZ2V0VmFyKCdQS0dSJykpCiAgICAgICAgICAgICBpcGtfdG9fc2lnbiA9ICIlcy8lc18lc18lcy5pcGsiICUgKHBrZ291dGRpciwgcGtnbmFtZSwgaXBrdmVyLCBkLmdldFZhcignUEFDS0FHRV9BUkNIJykpCiAgICAgICAgICAgICBzaWduX2lwayhkLCBpcGtfdG9fc2lnbikKIAorICAgIGZpbmFsbHk6CiAgICAgICAgIGNsZWFudXBjb250cm9sKHJvb3QpCiAgICAgICAgIGJiLnV0aWxzLnVubG9ja2ZpbGUobGYpCiAKLSAgICBvcy5jaGRpcihvbGRjd2QpCi19CiAjIE90aGVyd2lzZSBhbGxhcmNoIHBhY2thZ2VzIG1heSBjaGFuZ2UgZGVwZW5kaW5nIG9uIG92ZXJyaWRlIGNvbmZpZ3VyYXRpb24KLWRvX3BhY2thZ2VfaXBrW3ZhcmRlcHNleGNsdWRlXSA9ICJPVkVSUklERVMiCitpcGtfd3JpdGVfcGtnW3ZhcmRlcHNleGNsdWRlXSA9ICJPVkVSUklERVMiCisKIAogU1NUQVRFVEFTS1MgKz0gImRvX3BhY2thZ2Vfd3JpdGVfaXBrIgogZG9fcGFja2FnZV93cml0ZV9pcGtbc3N0YXRlLWlucHV0ZGlyc10gPSAiJHtQS0dXUklURURJUklQS30iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2VfcnBtLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2VfcnBtLmJiY2xhc3MKaW5kZXggMWRlYWY4My4uYTQyOGQzMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlX3JwbS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZV9ycG0uYmJjbGFzcwpAQCAtNjQ2LDkgKzY0NiwxMyBAQAogICAgIHJwbWJ1aWxkID0gZC5nZXRWYXIoJ1JQTUJVSUxEJykKICAgICB0YXJnZXRzeXMgPSBkLmdldFZhcignVEFSR0VUX1NZUycpCiAgICAgdGFyZ2V0dmVuZG9yID0gZC5nZXRWYXIoJ0hPU1RfVkVORE9SJykKKwogICAgICMgVG9vIG1hbnkgcGxhY2VzIGluIGRuZiBzdGFjayBhc3N1bWUgdGhhdCBhcmNoLWluZGVwZW5kZW50IHBhY2thZ2VzIGFyZSAibm9hcmNoIi4KICAgICAjIExldCdzIG5vdCBmaWdodCBhZ2FpbnN0IHRoaXMuCi0gICAgcGFja2FnZV9hcmNoID0gKGQuZ2V0VmFyKCdQQUNLQUdFX0FSQ0gnKSBvciAiIikucmVwbGFjZSgiLSIsICJfIikucmVwbGFjZSgiYWxsIiwgIm5vYXJjaCIpCisgICAgcGFja2FnZV9hcmNoID0gKGQuZ2V0VmFyKCdQQUNLQUdFX0FSQ0gnKSBvciAiIikucmVwbGFjZSgiLSIsICJfIikKKyAgICBpZiBwYWNrYWdlX2FyY2ggPT0gImFsbCI6CisgICAgICAgIHBhY2thZ2VfYXJjaCA9ICJub2FyY2giCisKICAgICBzZGtwa2dzdWZmaXggPSAoZC5nZXRWYXIoJ1NES1BLR1NVRkZJWCcpIG9yICJuYXRpdmVzZGsiKS5yZXBsYWNlKCItIiwgIl8iKQogICAgIGQuc2V0VmFyKCdQQUNLQUdFX0FSQ0hfRVhURU5EJywgcGFja2FnZV9hcmNoKQogICAgIHBrZ3dyaXRlZGlyID0gZC5leHBhbmQoJyR7UEtHV1JJVEVESVJSUE19LyR7UEFDS0FHRV9BUkNIX0VYVEVORH0nKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlZmVlZC1zdGFiaWxpdHkuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZWZlZWQtc3RhYmlsaXR5LmJiY2xhc3MKaW5kZXggYzBlOWJlNS4uNTY0ODYwMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlZmVlZC1zdGFiaWxpdHkuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2VmZWVkLXN0YWJpbGl0eS5iYmNsYXNzCkBAIC0xODksNyArMTg5LDcgQEAKIAogICAgICMgUmVtb3ZlIGFsbCB0aGUgb2xkIGZpbGVzIGFuZCBjb3B5IGFnYWluIGlmIGRvY29weQogICAgIGlmIGRvY29weToKLSAgICAgICAgYmIucGxhaW4oJ0NvcHlpbmcgcGFja2FnZXMgZm9yIHJlY2lwZSAlcycgJSBwbikKKyAgICAgICAgYmIubm90ZSgnQ29weWluZyBwYWNrYWdlcyBmb3IgcmVjaXBlICVzJyAlIHBuKQogICAgICAgICBwY21hbmlmZXN0ID0gb3MucGF0aC5qb2luKHByZXBhdGgsIGQuZXhwYW5kKCdwa2ctY29tcGFyZS1tYW5pZmVzdC0ke01VTFRJTUFDSF9UQVJHRVRfU1lTfS0ke1BOfScpKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICB3aXRoIG9wZW4ocGNtYW5pZmVzdCwgJ3InKSBhcyBmOgpAQCAtMjI0LDcgKzIyNCw3IEBACiAgICAgICAgICAgICAgICAgICAgIHNodXRpbC5jb3B5ZmlsZShzcmNwYXRoLCBkZXN0cGF0aCkKICAgICAgICAgICAgICAgICBmLndyaXRlKCclc1xuJyAlIGRlc3RwYXRoKQogICAgIGVsc2U6Ci0gICAgICAgIGJiLnBsYWluKCdOb3QgY29weWluZyBwYWNrYWdlcyBmb3IgcmVjaXBlICVzJyAlIHBuKQorICAgICAgICBiYi5ub3RlKCdOb3QgY29weWluZyBwYWNrYWdlcyBmb3IgcmVjaXBlICVzJyAlIHBuKQogCiBkb19jbGVhbnNzdGF0ZVtwb3N0ZnVuY3NdICs9ICJwZnNfY2xlYW5wa2dzIgogcHl0aG9uIHBmc19jbGVhbnBrZ3MgKCkgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wb3B1bGF0ZV9zZGtfYmFzZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9wb3B1bGF0ZV9zZGtfYmFzZS5iYmNsYXNzCmluZGV4IDU2MzU4MmUuLjQyNGM2M2MgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcG9wdWxhdGVfc2RrX2Jhc2UuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BvcHVsYXRlX3Nka19iYXNlLmJiY2xhc3MKQEAgLTU5LDYgKzU5LDkgQEAKIAogU0RLX1RBUkdFVF9NQU5JRkVTVCA9ICIke1NES0RFUExPWURJUn0vJHtUT09MQ0hBSU5fT1VUUFVUTkFNRX0udGFyZ2V0Lm1hbmlmZXN0IgogU0RLX0hPU1RfTUFOSUZFU1QgPSAiJHtTREtERVBMT1lESVJ9LyR7VE9PTENIQUlOX09VVFBVVE5BTUV9Lmhvc3QubWFuaWZlc3QiCitTREtfRVhUX1RBUkdFVF9NQU5JRkVTVCA9ICIke1NES19ERVBMT1l9LyR7VE9PTENIQUlORVhUX09VVFBVVE5BTUV9LnRhcmdldC5tYW5pZmVzdCIKK1NES19FWFRfSE9TVF9NQU5JRkVTVCA9ICIke1NES19ERVBMT1l9LyR7VE9PTENIQUlORVhUX09VVFBVVE5BTUV9Lmhvc3QubWFuaWZlc3QiCisKIHB5dGhvbiB3cml0ZV90YXJnZXRfc2RrX21hbmlmZXN0ICgpIHsKICAgICBmcm9tIG9lLnNkayBpbXBvcnQgc2RrX2xpc3RfaW5zdGFsbGVkX3BhY2thZ2VzCiAgICAgZnJvbSBvZS51dGlscyBpbXBvcnQgZm9ybWF0X3BrZ19saXN0CkBAIC04OCw4ICs5MSw5IEBACiAgICAgICAgIG91dHB1dC53cml0ZShmb3JtYXRfcGtnX2xpc3QocGtncywgJ3ZlcicpKQogfQogCi1QT1BVTEFURV9TREtfUE9TVF9UQVJHRVRfQ09NTUFORF9hcHBlbmQgPSAiIHdyaXRlX3RhcmdldF9zZGtfbWFuaWZlc3QgOyB3cml0ZV9zZGtfdGVzdF9kYXRhIDsgIgotUE9QVUxBVEVfU0RLX1BPU1RfSE9TVF9DT01NQU5EX2FwcGVuZCA9ICIgd3JpdGVfaG9zdF9zZGtfbWFuaWZlc3Q7ICIKK1BPUFVMQVRFX1NES19QT1NUX1RBUkdFVF9DT01NQU5EX2FwcGVuZCA9ICIgd3JpdGVfc2RrX3Rlc3RfZGF0YSA7ICIKK1BPUFVMQVRFX1NES19QT1NUX1RBUkdFVF9DT01NQU5EX2FwcGVuZF90YXNrLXBvcHVsYXRlLXNkayAgPSAiIHdyaXRlX3RhcmdldF9zZGtfbWFuaWZlc3QgOyAiCitQT1BVTEFURV9TREtfUE9TVF9IT1NUX0NPTU1BTkRfYXBwZW5kX3Rhc2stcG9wdWxhdGUtc2RrID0gIiB3cml0ZV9ob3N0X3Nka19tYW5pZmVzdDsgIgogU0RLX1BBQ0tBR0lOR19DT01NQU5EID0gIiR7QCcke1NES19QQUNLQUdJTkdfRlVOQ307JyBpZiAnJHtTREtfUEFDS0FHSU5HX0ZVTkN9JyBlbHNlICcnfSIKIFNES19QT1NUUFJPQ0VTU19DT01NQU5EID0gIiBjcmVhdGVfc2RrX2ZpbGVzOyBjaGVja19zZGtfc3lzcm9vdHM7IHRhcl9zZGs7ICR7U0RLX1BBQ0tBR0lOR19DT01NQU5EfSAiCiAKQEAgLTk3LDYgKzEwMSwyNiBAQAogICAgIGZyb20gb2Uuc2RrIGltcG9ydCBwb3B1bGF0ZV9zZGsKICAgICBmcm9tIG9lLm1hbmlmZXN0IGltcG9ydCBjcmVhdGVfbWFuaWZlc3QsIE1hbmlmZXN0CiAKKyAgICAjIEhhbmRsZSBwYWNrYWdlIGV4Y2x1c2lvbnMKKyAgICBleGNsX3BrZ3MgPSAoZC5nZXRWYXIoIlBBQ0tBR0VfRVhDTFVERSIpIG9yICIiKS5zcGxpdCgpCisgICAgaW5zdF9wa2dzID0gKGQuZ2V0VmFyKCJQQUNLQUdFX0lOU1RBTEwiKSBvciAiIikuc3BsaXQoKQorICAgIGluc3RfYXR0ZW1wdF9wa2dzID0gKGQuZ2V0VmFyKCJQQUNLQUdFX0lOU1RBTExfQVRURU1QVE9OTFkiKSBvciAiIikuc3BsaXQoKQorCisgICAgZC5zZXRWYXIoJ1BBQ0tBR0VfSU5TVEFMTF9PUklHJywgJyAnLmpvaW4oaW5zdF9wa2dzKSkKKyAgICBkLnNldFZhcignUEFDS0FHRV9JTlNUQUxMX0FUVEVNUFRPTkxZJywgJyAnLmpvaW4oaW5zdF9hdHRlbXB0X3BrZ3MpKQorCisgICAgZm9yIHBrZyBpbiBleGNsX3BrZ3M6CisgICAgICAgIGlmIHBrZyBpbiBpbnN0X3BrZ3M6CisgICAgICAgICAgICBiYi53YXJuKCJQYWNrYWdlICVzLCBzZXQgdG8gYmUgZXhjbHVkZWQsIGlzIGluICVzIFBBQ0tBR0VfSU5TVEFMTCAoJXMpLiAgSXQgd2lsbCBiZSByZW1vdmVkIGZyb20gdGhlIGxpc3QuIiAlIChwa2csIGQuZ2V0VmFyKCdQTicpLCBpbnN0X3BrZ3MpKQorICAgICAgICAgICAgaW5zdF9wa2dzLnJlbW92ZShwa2cpCisKKyAgICAgICAgaWYgcGtnIGluIGluc3RfYXR0ZW1wdF9wa2dzOgorICAgICAgICAgICAgYmIud2FybigiUGFja2FnZSAlcywgc2V0IHRvIGJlIGV4Y2x1ZGVkLCBpcyBpbiAlcyBQQUNLQUdFX0lOU1RBTExfQVRURU1QVE9OTFkgKCVzKS4gIEl0IHdpbGwgYmUgcmVtb3ZlZCBmcm9tIHRoZSBsaXN0LiIgJSAocGtnLCBkLmdldFZhcignUE4nKSwgaW5zdF9wa2dzKSkKKyAgICAgICAgICAgIGluc3RfYXR0ZW1wdF9wa2dzLnJlbW92ZShwa2cpCisKKyAgICBkLnNldFZhcigiUEFDS0FHRV9JTlNUQUxMIiwgJyAnLmpvaW4oaW5zdF9wa2dzKSkKKyAgICBkLnNldFZhcigiUEFDS0FHRV9JTlNUQUxMX0FUVEVNUFRPTkxZIiwgJyAnLmpvaW4oaW5zdF9hdHRlbXB0X3BrZ3MpKQorCiAgICAgcG4gPSBkLmdldFZhcignUE4nKQogICAgIHJ1bnRpbWVfbWFwcGluZ19yZW5hbWUoIlRPT0xDSEFJTl9UQVJHRVRfVEFTSyIsIHBuLCBkKQogICAgIHJ1bnRpbWVfbWFwcGluZ19yZW5hbWUoIlRPT0xDSEFJTl9UQVJHRVRfVEFTS19BVFRFTVBUT05MWSIsIHBuLCBkKQpAQCAtMjU2LDggKzI4MCw3IEBACiB9CiAKIGRlZiBzZGtfY29tbWFuZF92YXJpYWJsZXMoZCk6Ci0gICAgcmV0dXJuIFsnT1BLR19QUkVQUk9DRVNTX0NPTU1BTkRTJywnT1BLR19QT1NUUFJPQ0VTU19DT01NQU5EUycsJ1BPUFVMQVRFX1NES19QT1NUX0hPU1RfQ09NTUFORCcsJ1BPUFVMQVRFX1NES19QT1NUX1RBUkdFVF9DT01NQU5EJywnU0RLX1BPU1RQUk9DRVNTX0NPTU1BTkQnLCdSUE1fUFJFUFJPQ0VTU19DT01NQU5EUycsCi0gICAgICAgICAgICAnUlBNX1BPU1RQUk9DRVNTX0NPTU1BTkRTJ10KKyAgICByZXR1cm4gWydPUEtHX1BSRVBST0NFU1NfQ09NTUFORFMnLCdPUEtHX1BPU1RQUk9DRVNTX0NPTU1BTkRTJywnUE9QVUxBVEVfU0RLX1BPU1RfSE9TVF9DT01NQU5EJywnUE9QVUxBVEVfU0RLX1BSRV9UQVJHRVRfQ09NTUFORCcsJ1BPUFVMQVRFX1NES19QT1NUX1RBUkdFVF9DT01NQU5EJywnU0RLX1BPU1RQUk9DRVNTX0NPTU1BTkQnLCdSUE1fUFJFUFJPQ0VTU19DT01NQU5EUycsJ1JQTV9QT1NUUFJPQ0VTU19DT01NQU5EUyddCiAKIGRlZiBzZGtfdmFyaWFibGVzKGQpOgogICAgIHZhcmlhYmxlcyA9IFsnQlVJTERfSU1BR0VTX0ZST01fRkVFRFMnLCdTREtfT1MnLCdTREtfT1VUUFVUJywnU0RLUEFUSE5BVElWRScsJ1NES1RBUkdFVFNZU1JPT1QnLCdTREtfRElSJywnU0RLX1ZFTkRPUicsJ1NES0lNQUdFX0lOU1RBTExfQ09NUExFTUVOVEFSWScsJ1NES19QQUNLQUdFX0FSQ0hTJywnU0RLX09VVFBVVCcsCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3BvcHVsYXRlX3Nka19leHQuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcG9wdWxhdGVfc2RrX2V4dC5iYmNsYXNzCmluZGV4IDhiOGEzNDEuLmM3OWRkYmIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcG9wdWxhdGVfc2RrX2V4dC5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcG9wdWxhdGVfc2RrX2V4dC5iYmNsYXNzCkBAIC0zMyw2ICszMyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERMX0RJUiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNTVEFURV9ESVIgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUTVBESVIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCQl9TRVJWRVJfVElNRU9VVCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgogU0RLX0lOSEVSSVRfQkxBQ0tMSVNUID89ICJidWlsZGhpc3RvcnkgaWNlY2MiCiBTREtfVVBEQVRFX1VSTCA/PSAiIgpAQCAtNjksNyArNzAsNiBAQAogIyBDT1JFQkFTRSBiZSBwcmVzZXJ2ZWQgYXMgd2VsbCBhcyB1bnRyYWNrZWQgZmlsZXMuCiBDT1JFQkFTRV9GSUxFUyA/PSAiIFwKICAgICBvZS1pbml0LWJ1aWxkLWVudiBcCi0gICAgb2UtaW5pdC1idWlsZC1lbnYtbWVtcmVzIFwKICAgICBzY3JpcHRzIFwKICAgICBMSUNFTlNFIFwKICAgICAudGVtcGxhdGVjb25mIFwKQEAgLTgzLDYgKzgzLDM5IEBACiBTREtfRVhUX1RBUkdFVF9NQU5JRkVTVCA9ICIke1NES19ERVBMT1l9LyR7VE9PTENIQUlORVhUX09VVFBVVE5BTUV9LnRhcmdldC5tYW5pZmVzdCIKIFNES19FWFRfSE9TVF9NQU5JRkVTVCA9ICIke1NES19ERVBMT1l9LyR7VE9PTENIQUlORVhUX09VVFBVVE5BTUV9Lmhvc3QubWFuaWZlc3QiCiAKK3B5dGhvbiB3cml0ZV90YXJnZXRfc2RrX2V4dF9tYW5pZmVzdCAoKSB7CisgICAgZnJvbSBvZS5zZGsgaW1wb3J0IGdldF9leHRyYV9zZGtpbmZvCisgICAgc3N0YXRlX2RpciA9IGQuZXhwYW5kKCcke1NES19PVVRQVVR9LyR7U0RLUEFUSH0vc3N0YXRlLWNhY2hlJykKKyAgICBleHRyYV9pbmZvID0gZ2V0X2V4dHJhX3Nka2luZm8oc3N0YXRlX2RpcikKKworICAgIHRhcmdldCA9IGQuZ2V0VmFyKCdUQVJHRVRfU1lTJykKKyAgICB0YXJnZXRfbXVsdGltYWNoID0gZC5nZXRWYXIoJ01VTFRJTUFDSF9UQVJHRVRfU1lTJykKKyAgICByZWFsX3RhcmdldF9tdWx0aW1hY2ggPSBkLmdldFZhcignUkVBTF9NVUxUSU1BQ0hfVEFSR0VUX1NZUycpCisKKyAgICBwa2dzID0ge30KKyAgICB3aXRoIG9wZW4oZC5nZXRWYXIoJ1NES19FWFRfVEFSR0VUX01BTklGRVNUJyksICd3JykgYXMgZjoKKyAgICAgICAgZm9yIGZuIGluIGV4dHJhX2luZm9bJ2ZpbGVzaXplcyddOgorICAgICAgICAgICAgaW5mbyA9IGZuLnNwbGl0KCc6JykKKyAgICAgICAgICAgIGlmIGluZm9bMl0gaW4gKHRhcmdldCwgdGFyZ2V0X211bHRpbWFjaCwgcmVhbF90YXJnZXRfbXVsdGltYWNoKSBcCisgICAgICAgICAgICAgICAgICAgIG9yIGluZm9bNV0gPT0gJ2FsbGFyY2gnOgorICAgICAgICAgICAgICAgIGlmIG5vdCBpbmZvWzFdIGluIHBrZ3M6CisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoIiVzICVzICVzXG4iICUgKGluZm9bMV0sIGluZm9bMl0sIGluZm9bM10pKQorICAgICAgICAgICAgICAgICAgICBwa2dzW2luZm9bMV1dID0ge30KK30KK3B5dGhvbiB3cml0ZV9ob3N0X3Nka19leHRfbWFuaWZlc3QgKCkgeworICAgIGZyb20gb2Uuc2RrIGltcG9ydCBnZXRfZXh0cmFfc2RraW5mbworICAgIHNzdGF0ZV9kaXIgPSBkLmV4cGFuZCgnJHtTREtfT1VUUFVUfS8ke1NES1BBVEh9L3NzdGF0ZS1jYWNoZScpCisgICAgZXh0cmFfaW5mbyA9IGdldF9leHRyYV9zZGtpbmZvKHNzdGF0ZV9kaXIpCisgICAgaG9zdCA9IGQuZ2V0VmFyKCdCVUlMRF9TWVMnKQorICAgIHdpdGggb3BlbihkLmdldFZhcignU0RLX0VYVF9IT1NUX01BTklGRVNUJyksICd3JykgYXMgZjoKKyAgICAgICAgZm9yIGZuIGluIGV4dHJhX2luZm9bJ2ZpbGVzaXplcyddOgorICAgICAgICAgICAgaW5mbyA9IGZuLnNwbGl0KCc6JykKKyAgICAgICAgICAgIGlmIGluZm9bMl0gPT0gaG9zdDoKKyAgICAgICAgICAgICAgICBmLndyaXRlKCIlcyAlcyAlc1xuIiAlIChpbmZvWzFdLCBpbmZvWzJdLCBpbmZvWzNdKSkKK30KKworU0RLX1BPU1RQUk9DRVNTX0NPTU1BTkRfYXBwZW5kX3Rhc2stcG9wdWxhdGUtc2RrLWV4dCA9ICJ3cml0ZV90YXJnZXRfc2RrX2V4dF9tYW5pZmVzdDsgd3JpdGVfaG9zdF9zZGtfZXh0X21hbmlmZXN0OyAiICAgIAorCiBTREtfVElUTEVfdGFzay1wb3B1bGF0ZS1zZGstZXh0ID0gIiR7QGQuZ2V0VmFyKCdESVNUUk9fTkFNRScpIG9yIGQuZ2V0VmFyKCdESVNUUk8nKX0gRXh0ZW5zaWJsZSBTREsiCiAKIGRlZiBjbGVhbl9lc2RrX2J1aWxkZGlyKGQsIHNka2Jhc2VwYXRoKToKQEAgLTExMSw3ICsxNDQsNyBAQAogICAgICAgICB3aXRoIG9wZW4oc2RrYmFzZXBhdGggKyAnL2NvbmYvbG9jYWwuY29uZicsICdhJykgYXMgZjoKICAgICAgICAgICAgICMgRm9yY2UgdGhlIHVzZSBvZiBzc3RhdGUgZnJvbSB0aGUgYnVpbGQgc3lzdGVtCiAgICAgICAgICAgICBmLndyaXRlKCdcblNTVEFURV9ESVJfZm9yY2V2YXJpYWJsZSA9ICIlcyJcbicgJSBkLmdldFZhcignU1NUQVRFX0RJUicpKQotICAgICAgICAgICAgZi53cml0ZSgnU1NUQVRFX01JUlJPUlNfZm9yY2V2YXJpYWJsZSA9ICIiXG4nKQorICAgICAgICAgICAgZi53cml0ZSgnU1NUQVRFX01JUlJPUlNfZm9yY2V2YXJpYWJsZSA9ICJmaWxlOi8vdW5pdmVyc2FsLyguKikgZmlsZTovL3VuaXZlcnNhbC00LjkvXFwxIGZpbGU6Ly91bml2ZXJzYWwtNC45LyguKikgZmlsZTovL3VuaXZlcnNhbC00LjgvXFwxIlxuJykKICAgICAgICAgICAgICMgRW5zdXJlIFRNUERJUiBpcyB0aGUgZGVmYXVsdCBzbyB0aGF0IGNsZWFuX2VzZGtfYnVpbGRkaXIoKSBjYW4gZGVsZXRlIGl0CiAgICAgICAgICAgICBmLndyaXRlKCdUTVBESVJfZm9yY2V2YXJpYWJsZSA9ICIke1RPUERJUn0vdG1wIlxuJykKICAgICAgICAgICAgIGYud3JpdGUoJ1RDTElCQ0FQUEVORF9mb3JjZXZhcmlhYmxlID0gIiJcbicpCkBAIC0zMTQsMTIgKzM0NywxOCBAQAogICAgICAgICAgICAgIyB0aGUgc2lnIGNvbXB1dGVkIGZyb20gdGhlIG1ldGFkYXRhLgogICAgICAgICAgICAgZi53cml0ZSgnU0lHR0VOX0xPQ0tFRFNJR1NfVEFTS1NJR19DSEVDSyA9ICJ3YXJuIlxuXG4nKQogCisgICAgICAgICAgICAjIFdlIHdhbnQgdG8gYmUgYWJsZSB0byBzZXQgdGhpcyB3aXRob3V0IGEgZnVsbCByZXBhcnNlCisgICAgICAgICAgICBmLndyaXRlKCdCQl9IQVNIQ09ORklHX1dISVRFTElTVF9hcHBlbmQgPSAiIFNJR0dFTl9VTkxPQ0tFRF9SRUNJUEVTIlxuXG4nKQorCiAgICAgICAgICAgICAjIFNldCB1cCB3aGl0ZWxpc3QgZm9yIHJ1biBvbiBpbnN0YWxsCiAgICAgICAgICAgICBmLndyaXRlKCdCQl9TRVRTQ0VORV9FTkZPUkNFX1dISVRFTElTVCA9ICIlOiogKjpkb19zaGFyZWRfd29ya2RpciAqOmRvX3JtX3dvcmsgd2ljLXRvb2xzOiogKjpkb19hZGR0b19yZWNpcGVfc3lzcm9vdCJcblxuJykKIAogICAgICAgICAgICAgIyBIaWRlIHRoZSBjb25maWcgaW5mb3JtYXRpb24gZnJvbSBiaXRiYWtlIG91dHB1dCAoc2luY2UgaXQncyBmaXhlZCB3aXRoaW4gdGhlIFNESykKICAgICAgICAgICAgIGYud3JpdGUoJ0JVSUxEQ0ZHX0hFQURFUiA9ICIiXG5cbicpCiAKKyAgICAgICAgICAgIGYud3JpdGUoJyMgUHJvdmlkZSBhIGZsYWcgdG8gaW5kaWNhdGUgd2UgYXJlIGluIHRoZSBFWFRfU0RLIENvbnRleHRcbicpCisgICAgICAgICAgICBmLndyaXRlKCdXSVRISU5fRVhUX1NESyA9ICIxIlxuXG4nKQorCiAgICAgICAgICAgICAjIE1hcCBnY2MtZGVwZW5kZW50IHVuaW5hdGl2ZSBzc3RhdGUgY2FjaGUgZm9yIGluc3RhbGxlciB1c2FnZQogICAgICAgICAgICAgZi53cml0ZSgnU1NUQVRFX01JUlJPUlMgKz0gIiBmaWxlOi8vdW5pdmVyc2FsLyguKikgZmlsZTovL3VuaXZlcnNhbC00LjkvXFwxIGZpbGU6Ly91bml2ZXJzYWwtNC45LyguKikgZmlsZTovL3VuaXZlcnNhbC00LjgvXFwxIlxuXG4nKQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3B5dGhvbjNuYXRpdmUuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcHl0aG9uM25hdGl2ZS5iYmNsYXNzCmluZGV4IGVmNDY4YjMuLjg5NjY1ZWYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcHl0aG9uM25hdGl2ZS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcHl0aG9uM25hdGl2ZS5iYmNsYXNzCkBAIC05LDUgKzksOCBAQAogZXhwb3J0IFNUQUdJTkdfSU5DRElSCiBleHBvcnQgU1RBR0lOR19MSUJESVIKIAorIyBzdXBwcmVzcyBob3N0IHVzZXIncyBzaXRlLXBhY2thZ2VzIGRpcnMuCitleHBvcnQgUFlUSE9OTk9VU0VSU0lURSA9ICIxIgorCiAjIGF1dG9jb25mIG1hY3JvcyB3aWxsIHVzZSB0aGVpciBpbnRlcm5hbCBkZWZhdWx0IHByZWZlcmVuY2Ugb3RoZXJ3aXNlCiBleHBvcnQgUFlUSE9OCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3B5dGhvbm5hdGl2ZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9weXRob25uYXRpdmUuYmJjbGFzcwppbmRleCA0ZTAzODFiLi40Y2M4YjI3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3B5dGhvbm5hdGl2ZS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcHl0aG9ubmF0aXZlLmJiY2xhc3MKQEAgLTEyLDUgKzEyLDggQEAKIGV4cG9ydCBTVEFHSU5HX0lOQ0RJUgogZXhwb3J0IFNUQUdJTkdfTElCRElSCiAKKyMgc3VwcHJlc3MgaG9zdCB1c2VyJ3Mgc2l0ZS1wYWNrYWdlcyBkaXJzLgorZXhwb3J0IFBZVEhPTk5PVVNFUlNJVEUgPSAiMSIKKwogIyBhdXRvY29uZiBtYWNyb3Mgd2lsbCB1c2UgdGhlaXIgaW50ZXJuYWwgZGVmYXVsdCBwcmVmZXJlbmNlIG90aGVyd2lzZQogZXhwb3J0IFBZVEhPTgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9xZW11Ym9vdC5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9xZW11Ym9vdC5iYmNsYXNzCmluZGV4IDM0NjhkMWMuLjE1YTllNjMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcWVtdWJvb3QuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3FlbXVib290LmJiY2xhc3MKQEAgLTg1LDEwICs4NSwxMSBAQAogCiAgICAgcWVtdWJvb3QgPSAiJXMvJXMucWVtdWJvb3QuY29uZiIgJSAoZC5nZXRWYXIoJ0lNR0RFUExPWURJUicpLCBkLmdldFZhcignSU1BR0VfTkFNRScpKQogICAgIHFlbXVib290X2xpbmsgPSAiJXMvJXMucWVtdWJvb3QuY29uZiIgJSAoZC5nZXRWYXIoJ0lNR0RFUExPWURJUicpLCBkLmdldFZhcignSU1BR0VfTElOS19OQU1FJykpCi0gICAgdG9wZGlyPSIlcy8iJShkLmdldFZhcignVE9QRElSJykpLnJlcGxhY2UoIi8vIiwiLyIpCisgICAgZmluYWxwYXRoID0gZC5nZXRWYXIoIkRFUExPWV9ESVJfSU1BR0UiKQorICAgIHRvcGRpciA9IGQuZ2V0VmFyKCdUT1BESVInKQogICAgIGNmID0gY29uZmlncGFyc2VyLkNvbmZpZ1BhcnNlcigpCiAgICAgY2YuYWRkX3NlY3Rpb24oJ2NvbmZpZ19ic3AnKQotICAgIGZvciBrIGluIHFlbXVib290X3ZhcnMoZCk6CisgICAgZm9yIGsgaW4gc29ydGVkKHFlbXVib290X3ZhcnMoZCkpOgogICAgICAgICAjIHFlbXUtaGVscGVyLW5hdGl2ZSBzeXNyb290IGlzIG5vdCByZW1vdmVkIGJ5IHJtX3dvcmsgYW5kCiAgICAgICAgICMgY29udGFpbnMgYWxsIHRvb2xzIHJlcXVpcmVkIGJ5IHJ1bnFlbXUKICAgICAgICAgaWYgayA9PSAnU1RBR0lOR19CSU5ESVJfTkFUSVZFJzoKQEAgLTk4LDcgKzk5LDggQEAKICAgICAgICAgICAgIHZhbCA9IGQuZ2V0VmFyKGspCiAgICAgICAgICMgd2Ugb25seSB3YW50IHRvIHdyaXRlIG91dCByZWxhdGl2ZSBwYXRocyBzbyB0aGF0IHdlIGNhbiByZWxvY2F0ZSBpbWFnZXMKICAgICAgICAgIyBhbmQgc3RpbGwgcnVuIHRoZW0KLSAgICAgICAgdmFsPXZhbC5yZXBsYWNlKHRvcGRpciwiIikKKyAgICAgICAgaWYgdmFsLnN0YXJ0c3dpdGgodG9wZGlyKToKKyAgICAgICAgICAgIHZhbCA9IG9zLnBhdGgucmVscGF0aCh2YWwsIGZpbmFscGF0aCkKICAgICAgICAgY2Yuc2V0KCdjb25maWdfYnNwJywgaywgJyVzJyAlIHZhbCkKIAogICAgICMgUUJfREVGQVVMVF9LRVJORUwncyB2YWx1ZSBvZiBLRVJORUxfSU1BR0VUWVBFIGlzIHRoZSBuYW1lIG9mIGEgc3ltbGluawpAQCAtMTA4LDE0ICsxMTAsMTUgQEAKICAgICBrZXJuZWwgPSBvcy5wYXRoLnJlYWxwYXRoKGtlcm5lbF9saW5rKQogICAgICMgd2Ugb25seSB3YW50IHRvIHdyaXRlIG91dCByZWxhdGl2ZSBwYXRocyBzbyB0aGF0IHdlIGNhbiByZWxvY2F0ZSBpbWFnZXMKICAgICAjIGFuZCBzdGlsbCBydW4gdGhlbQotICAgIGtlcm5lbD1rZXJuZWwucmVwbGFjZSh0b3BkaXIsIiIpCisgICAga2VybmVsID0gb3MucGF0aC5yZWxwYXRoKGtlcm5lbCwgZmluYWxwYXRoKQogICAgIGNmLnNldCgnY29uZmlnX2JzcCcsICdRQl9ERUZBVUxUX0tFUk5FTCcsIGtlcm5lbCkKIAogICAgIGJiLnV0aWxzLm1rZGlyaGllcihvcy5wYXRoLmRpcm5hbWUocWVtdWJvb3QpKQogICAgIHdpdGggb3BlbihxZW11Ym9vdCwgJ3cnKSBhcyBmOgogICAgICAgICBjZi53cml0ZShmKQogCi0gICAgaWYgb3MucGF0aC5sZXhpc3RzKHFlbXVib290X2xpbmspOgotICAgICAgIG9zLnJlbW92ZShxZW11Ym9vdF9saW5rKQotICAgIG9zLnN5bWxpbmsob3MucGF0aC5iYXNlbmFtZShxZW11Ym9vdCksIHFlbXVib290X2xpbmspCisgICAgaWYgcWVtdWJvb3RfbGluayAhPSBxZW11Ym9vdDoKKyAgICAgICAgaWYgb3MucGF0aC5sZXhpc3RzKHFlbXVib290X2xpbmspOgorICAgICAgICAgICBvcy5yZW1vdmUocWVtdWJvb3RfbGluaykKKyAgICAgICAgb3Muc3ltbGluayhvcy5wYXRoLmJhc2VuYW1lKHFlbXVib290KSwgcWVtdWJvb3RfbGluaykKIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcmVwb3J0LWVycm9yLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3JlcG9ydC1lcnJvci5iYmNsYXNzCmluZGV4IGQ2ZmRkMzYuLjFjNTVhYmYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcmVwb3J0LWVycm9yLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9yZXBvcnQtZXJyb3IuYmJjbGFzcwpAQCAtMjksNiArMjksMTMgQEAKICAgICAgICAgaW1wb3J0IGpzb24KICAgICAgICAgaW1wb3J0IGNvZGVjcwogCisgICAgICAgIGRlZiBuYXRpdmVsc2IoKToKKyAgICAgICAgICAgIG5hdGl2ZWxzYnN0ciA9IGUuZGF0YS5nZXRWYXIoIk5BVElWRUxTQlNUUklORyIpCisgICAgICAgICAgICAjIHByb3ZpZGUgYSBiaXQgbW9yZSBob3N0IGluZm8gaW4gY2FzZSBvZiB1bmluYXRpdmUgYnVpbGQKKyAgICAgICAgICAgIGlmIGUuZGF0YS5nZXRWYXIoJ1VOSU5BVElWRV9VUkwnKSAhPSAndW5zZXQnOgorICAgICAgICAgICAgICAgIHJldHVybiAnLycuam9pbihbbmF0aXZlbHNic3RyLCBsc2JfZGlzdHJvX2lkZW50aWZpZXIoZS5kYXRhKV0pCisgICAgICAgICAgICByZXR1cm4gbmF0aXZlbHNic3RyCisKICAgICAgICAgbG9ncGF0aCA9IGUuZGF0YS5nZXRWYXIoJ0VSUl9SRVBPUlRfRElSJykKICAgICAgICAgZGF0YWZpbGUgPSBvcy5wYXRoLmpvaW4obG9ncGF0aCwgImVycm9yLXJlcG9ydC50eHQiKQogCkBAIC0zOCw3ICs0NSw3IEBACiAgICAgICAgICAgICBtYWNoaW5lID0gZS5kYXRhLmdldFZhcigiTUFDSElORSIpCiAgICAgICAgICAgICBkYXRhWydtYWNoaW5lJ10gPSBtYWNoaW5lCiAgICAgICAgICAgICBkYXRhWydidWlsZF9zeXMnXSA9IGUuZGF0YS5nZXRWYXIoIkJVSUxEX1NZUyIpCi0gICAgICAgICAgICBkYXRhWyduYXRpdmVsc2InXSA9IGUuZGF0YS5nZXRWYXIoIk5BVElWRUxTQlNUUklORyIpCisgICAgICAgICAgICBkYXRhWyduYXRpdmVsc2InXSA9IG5hdGl2ZWxzYigpCiAgICAgICAgICAgICBkYXRhWydkaXN0cm8nXSA9IGUuZGF0YS5nZXRWYXIoIkRJU1RSTyIpCiAgICAgICAgICAgICBkYXRhWyd0YXJnZXRfc3lzJ10gPSBlLmRhdGEuZ2V0VmFyKCJUQVJHRVRfU1lTIikKICAgICAgICAgICAgIGRhdGFbJ2ZhaWx1cmVzJ10gPSBbXQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9ybV93b3JrLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3JtX3dvcmsuYmJjbGFzcwppbmRleCBiYWRlYWViLi4zMWQ5OWU0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3JtX3dvcmsuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3JtX3dvcmsuYmJjbGFzcwpAQCAtMzUsMjIgKzM1LDEyIEBACiAgICAgICAgIGZpCiAgICAgZG9uZQogCi0gICAgY2QgJHtXT1JLRElSfQotICAgIGZvciBkaXIgaW4gKgotICAgIGRvCi0gICAgICAgICMgUmV0YWluIG9ubHkgbG9ncyBhbmQgb3RoZXIgZmlsZXMgaW4gdGVtcCwgc2FmZWx5IGlnbm9yZQotICAgICAgICAjIGZhaWx1cmVzIG9mIHJlbW92aW5nIHBzZXVkbyBmb2xlcnMgb24gTkZTMi8zIHNlcnZlci4KLSAgICAgICAgaWYgWyAkZGlyID0gJ3BzZXVkbycgXTsgdGhlbgotICAgICAgICAgICAgcm0gLXJmICRkaXIgMj4gL2Rldi9udWxsIHx8IHRydWUKLSAgICAgICAgZWxpZiAhIGVjaG8gJyR7Uk1fV09SS19FWENMVURFX0lURU1TfScgfCBncmVwIC1xIC13ICIkZGlyIjsgdGhlbgotICAgICAgICAgICAgcm0gLXJmICRkaXIKLSAgICAgICAgZmkKLSAgICBkb25lCi0KICAgICAjIE5lZWQgdG8gYWRkIHBzZXVkbyBiYWNrIG9yIHN1YnNxZXVlbnQgd29yayBpbiB0aGlzIHdvcmtkaXIKICAgICAjIG1pZ2h0IGZhaWwgc2luY2Ugc2V0c2NlbmUgbWF5IG5vdCByZXJ1biB0byByZWNyZWF0ZSBpdAogICAgIG1rZGlyIC1wICR7V09SS0RJUn0vcHNldWRvLwogCisgICAgZXhjbHVkZXM9JyR7Uk1fV09SS19FWENMVURFX0lURU1TfScKKwogICAgICMgQ2hhbmdlIG5vcm1hbCBzdGFtcHMgaW50byBzZXRzY2VuZSBzdGFtcHMgYXMgdGhleSBiZXR0ZXIgcmVmbGVjdCB0aGUKICAgICAjIGZhY3QgV09SS0RJUiBpcyBub3cgZW1wdHkKICAgICAjIEFsc28gbGVhdmUgbm9leGVjIHN0YW1wcyBzaW5jZSBzZXRzY2VuZSBzdGFtcHMgZG9uJ3QgY292ZXIgdGhlbQpAQCAtNzEsNyArNjEsMTIgQEAKICAgICAgICAgICAgICAgICBpPWR1bW15CiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICA7OwotICAgICAgICAgICAgKmRvX3Jvb3Rmcyp8KmRvX2ltYWdlKnwqZG9fYm9vdGltZyp8KmRvX2Jvb3RkaXJlY3RkaXNrKnwqZG9fdm1pbWcqfCpkb193cml0ZV9xZW11Ym9vdF9jb25mKikKKyAgICAgICAgICAgICpkb19pbWFnZV9jb21wbGV0ZSopCisgICAgICAgICAgICAgICAgbXYgJGkgYGVjaG8gJGkgfCBzZWQgLWUgInMjZG9faW1hZ2VfY29tcGxldGUjZG9faW1hZ2VfY29tcGxldGVfc2V0c2NlbmUjImAKKyAgICAgICAgICAgICAgICBpPWR1bW15CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgKmRvX3Jvb3Rmcyp8KmRvX2ltYWdlKnwqZG9fYm9vdGltZyp8KmRvX3dyaXRlX3FlbXVib290X2NvbmYqKQogICAgICAgICAgICAgICAgIGk9ZHVtbXkKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgIDs7CkBAIC03OSw2ICs3NCwxMiBAQAogICAgICAgICAgICAgICAgIGk9ZHVtbXkKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAqZG9fYWRkdG9fcmVjaXBlX3N5c3Jvb3QqKQorICAgICAgICAgICAgICAgICMgUHJlc2VydmUgcmVjaXBlLXN5c3Jvb3QtbmF0aXZlIGlmIGRvX2FkZHRvX3JlY2lwZV9zeXNyb290IGhhcyBiZWVuIHVzZWQKKyAgICAgICAgICAgICAgICBleGNsdWRlcz0iJGV4Y2x1ZGVzIHJlY2lwZS1zeXNyb290LW5hdGl2ZSIKKyAgICAgICAgICAgICAgICBpPWR1bW15CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICA7OwogICAgICAgICAgICAgIyBXZSByZW1vdmUgZG9fcGFja2FnZSBlbnRpcmVseSwgaW5jbHVkaW5nIGFueQogICAgICAgICAgICAgIyBzc3RhdGUgdmVyc2lvbiBzaW5jZSBvdGhlcndpc2Ugd2UnZCBuZWVkIHRvIGxlYXZlICdwbGFpbmRpcnMnIGFyb3VuZAogICAgICAgICAgICAgIyBzdWNoIGFzICdwYWNrYWdlcycgYW5kICdwYWNrYWdlcy1zcGxpdCcgYW5kIHRoZXNlIGNhbiBiZSBsYXJnZS4gTm8gZW5kCkBAIC0xMDEsNiArMTAyLDE4IEBACiAgICAgICAgIGRvbmUKICAgICAgICAgcm0gLWYgJGkKICAgICBkb25lCisKKyAgICBjZCAke1dPUktESVJ9CisgICAgZm9yIGRpciBpbiAqCisgICAgZG8KKyAgICAgICAgIyBSZXRhaW4gb25seSBsb2dzIGFuZCBvdGhlciBmaWxlcyBpbiB0ZW1wLCBzYWZlbHkgaWdub3JlCisgICAgICAgICMgZmFpbHVyZXMgb2YgcmVtb3ZpbmcgcHNldWRvIGZvbGVycyBvbiBORlMyLzMgc2VydmVyLgorICAgICAgICBpZiBbICRkaXIgPSAncHNldWRvJyBdOyB0aGVuCisgICAgICAgICAgICBybSAtcmYgJGRpciAyPiAvZGV2L251bGwgfHwgdHJ1ZQorICAgICAgICBlbGlmICEgZWNobyAiJGV4Y2x1ZGVzIiB8IGdyZXAgLXEgLXcgIiRkaXIiOyB0aGVuCisgICAgICAgICAgICBybSAtcmYgJGRpcgorICAgICAgICBmaQorICAgIGRvbmUKIH0KIGRvX3JtX3dvcmtfYWxsICgpIHsKICAgICA6CkBAIC0xNTMsNiArMTY2LDEwIEBACiAgICAgZGVwcyA9IHNldChiYi5idWlsZC5wcmVjZWVkdGFzaygnZG9fYnVpbGQnLCBUcnVlLCBkKSkKICAgICBkZXBzLmRpZmZlcmVuY2VfdXBkYXRlKCgnZG9fYnVpbGQnLCAnZG9fcm1fd29ya19hbGwnKSkKIAorICAgICMgZGVwcyBjYW4gYmUgZW1wdHkgaWYgZG9fYnVpbGQgZG9lc24ndCBleGlzdCwgZS5nLiAqLWluaXRhbCByZWNpcGVzCisgICAgaWYgbm90IGRlcHM6CisgICAgICAgIGRlcHMgPSBbImRvX3BvcHVsYXRlX3N5c3Jvb3QiLCAiZG9fcG9wdWxhdGVfbGljIl0KKwogICAgIGlmIHBuIGluIGV4Y2x1ZGVzOgogICAgICAgICBkLmRlbFZhckZsYWcoJ3JtX3dvcmtfcm9vdGZzJywgJ2NsZWFuZGlycycpCiAgICAgICAgIGQuZGVsVmFyRmxhZygncm1fd29ya19wb3B1bGF0ZXNkaycsICdjbGVhbmRpcnMnKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9yb290ZnMtcG9zdGNvbW1hbmRzLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Jvb3Rmcy1wb3N0Y29tbWFuZHMuYmJjbGFzcwppbmRleCBjMTlmZjg3Li5hNGU2MjdmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Jvb3Rmcy1wb3N0Y29tbWFuZHMuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Jvb3Rmcy1wb3N0Y29tbWFuZHMuYmJjbGFzcwpAQCAtMTQsNiArMTQsMTQgQEAKICMgVHdlYWsgdGhlIG1vdW50IG9wdGlvbnMgZm9yIHJvb3RmcyBpbiAvZXRjL2ZzdGFiIGlmIHJlYWQtb25seS1yb290ZnMgaXMgZW5hYmxlZAogUk9PVEZTX1BPU1RQUk9DRVNTX0NPTU1BTkQgKz0gJyR7QGJiLnV0aWxzLmNvbnRhaW5zKCJJTUFHRV9GRUFUVVJFUyIsICJyZWFkLW9ubHktcm9vdGZzIiwgInJlYWRfb25seV9yb290ZnNfaG9vazsgIiwgIiIsZCl9JwogCisjIFdlIGFsc28gbmVlZCB0byBkbyB0aGUgc2FtZSBmb3IgdGhlIGtlcm5lbCBib290IHBhcmFtZXRlcnMsCisjIG90aGVyd2lzZSBrZXJuZWwgb3IgaW5pdHJhbWZzIGVuZCB1cCBtb3VudGluZyB0aGUgcm9vdGZzIHJlYWQvd3JpdGUKKyMgKHRoZSBkZWZhdWx0KSBpZiBzdXBwb3J0ZWQgYnkgdGhlIHVuZGVybHlpbmcgc3RvcmFnZS4KKyMKKyMgV2UgZG8gdGhpcyB3aXRoIF9hcHBlbmQgYmVjYXVzZSB0aGUgZGVmYXVsdCB2YWx1ZSBtaWdodCBnZXQgc2V0IGxhdGVyIHdpdGggPz0KKyMgYW5kIHdlIGRvbid0IHdhbnQgdG8gZGlzYWJsZSBzdWNoIGEgZGVmYXVsdCB0aGF0IGJ5IHNldHRpbmcgYSB2YWx1ZSBoZXJlLgorQVBQRU5EX2FwcGVuZCA9ICcke0BiYi51dGlscy5jb250YWlucygiSU1BR0VfRkVBVFVSRVMiLCAicmVhZC1vbmx5LXJvb3RmcyIsICIgcm8iLCAiIiwgZCl9JworCiAjIEdlbmVyYXRlcyB0ZXN0IGRhdGEgZmlsZSB3aXRoIGRhdGEgc3RvcmUgdmFyaWFibGVzIGV4cGFuZGVkIGluIGpzb24gZm9ybWF0CiBST09URlNfUE9TVFBST0NFU1NfQ09NTUFORCArPSAid3JpdGVfaW1hZ2VfdGVzdF9kYXRhIDsgIgogCkBAIC04NCw3ICs5Miw5IEBACiAjCiByZWFkX29ubHlfcm9vdGZzX2hvb2sgKCkgewogCSMgVHdlYWsgdGhlIG1vdW50IG9wdGlvbiBhbmQgZnNfcGFzc25vIGZvciByb290ZnMgaW4gZnN0YWIKLQlzZWQgLWkgLWUgJy9eWyNbOnNwYWNlOl1dKlwvZGV2XC9yb290L3tzL2RlZmF1bHRzL3JvLztzL1woW1s6c3BhY2U6XV0qW1s6ZGlnaXQ6XV1cKVwoW1s6c3BhY2U6XV0qXClbWzpkaWdpdDpdXSQvXDFcMjAvfScgJHtJTUFHRV9ST09URlN9L2V0Yy9mc3RhYgorCWlmIFsgLWYgJHtJTUFHRV9ST09URlN9L2V0Yy9mc3RhYiBdOyB0aGVuCisJCXNlZCAtaSAtZSAnL15bI1s6c3BhY2U6XV0qXC9kZXZcL3Jvb3Qve3MvZGVmYXVsdHMvcm8vO3MvXChbWzpzcGFjZTpdXSpbWzpkaWdpdDpdXVwpXChbWzpzcGFjZTpdXSpcKVtbOmRpZ2l0Ol1dJC9cMVwyMC99JyAke0lNQUdFX1JPT1RGU30vZXRjL2ZzdGFiCisJZmkKIAogCSMgSWYgd2UncmUgdXNpbmcgb3BlbnNzaCBhbmQgdGhlIC9ldGMvc3NoIGRpcmVjdG9yeSBoYXMgbm8gcHJlLWdlbmVyYXRlZCBrZXlzLAogCSMgd2Ugc2hvdWxkIGNvbmZpZ3VyZSBvcGVuc3NoIHRvIHVzZSB0aGUgY29uZmlndXJhdGlvbiBmaWxlIC9ldGMvc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5CkBAIC0zMTYsNSArMzI2LDUgQEAKICAgICAgICAgICAgICAgICBjb250aW51ZQogCiAgICAgICAgICAgICBpZiAndW5zYXRpc2ZpZWQgcmVjb21tZW5kYXRpb24gZm9yJyBpbiBsaW5lOgotICAgICAgICAgICAgICAgIGJiLndhcm4oJ1tsb2dfY2hlY2tdICVzOiAlcycgJSAoZC5nZXRWYXIoJ1BOJywgVHJ1ZSksIGxpbmUpKQorICAgICAgICAgICAgICAgIGJiLndhcm4oJ1tsb2dfY2hlY2tdICVzOiAlcycgJSAoZC5nZXRWYXIoJ1BOJyksIGxpbmUpKQogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9yb290ZnNfZGViLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Jvb3Rmc19kZWIuYmJjbGFzcwppbmRleCAyNjJlM2Q1Li45ZWUxZGZjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Jvb3Rmc19kZWIuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Jvb3Rmc19kZWIuYmJjbGFzcwpAQCAtMzMsNiArMzMsMyBAQAogICAgIGVsaWYgZGFyY2ggPT0gImFybSI6CiAgICAgICAgICBkLnNldFZhcignREVCX1NES19BUkNIJywgJ2FybWVsJykKIH0KLQotIyBUaGlzIHdpbGwgb2YgY291cnNlIG9ubHkgd29yayBhZnRlciByb290ZnNfZGViX2RvX3Jvb3RmcyBvciBwb3B1bGF0ZV9zZGtfZGViIGhhcyBiZWVuIGNhbGxlZAotRFBLR19RVUVSWV9DT01NQU5EID0gIiR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9kcGtnLXF1ZXJ5IC0tYWRtaW5kaXI9JElOU1RBTExfUk9PVEZTX0RFQi92YXIvbGliL2Rwa2ciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Jvb3Rmc2RlYnVnZmlsZXMuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcm9vdGZzZGVidWdmaWxlcy5iYmNsYXNzCmluZGV4IGE1NTg4NzEuLmUyYmE0ZTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcm9vdGZzZGVidWdmaWxlcy5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvcm9vdGZzZGVidWdmaWxlcy5iYmNsYXNzCkBAIC0xNSw2ICsxNSwxMCBAQAogIyAgICBST09URlNfREVCVUdfRklMRVMgKz0gIiR7VE9QRElSfS9jb25mL2Ryb3BiZWFyX3JzYV9ob3N0X2tleSAke0lNQUdFX1JPT1RGU30vZXRjL2Ryb3BiZWFyL2Ryb3BiZWFyX3JzYV9ob3N0X2tleSA7IgogIyAyLiBCb290IHRoZSBpbWFnZSBvbmNlLCBjb3B5IHRoZSBkcm9wYmVhcl9yc2FfaG9zdF9rZXkgZnJvbQogIyAgICB0aGUgZGV2aWNlIGludG8geW91ciBidWlsZCBjb25mIGRpcmVjdG9yeS4KKyMgMy4gQSBvcHRpb25hbCBwYXJhbWV0ZXIgY2FuIGJlIHVzZWQgdG8gc2V0IGZpbGUgbW9kZQorIyAgICBvZiB0aGUgY29waWVkIHRhcmdldCwgZm9yIGluc3RhbmNlOgorIyAgICBST09URlNfREVCVUdfRklMRVMgKz0gIiR7VE9QRElSfS9jb25mL2Ryb3BiZWFyX3JzYV9ob3N0X2tleSAke0lNQUdFX1JPT1RGU30vZXRjL2Ryb3BiZWFyL2Ryb3BiZWFyX3JzYV9ob3N0X2tleSAwNjAwOyIKKyMgICAgaW4gY2FzZSB0aGV5IG1pZ2h0IGJlIHJlcXVpcmVkIHRvIGhhdmUgYSBzcGVjaWZpYyBtb2RlLiAoU2hvdW5kbid0IGJlIHRvbyBvcGVuLCBmb3IgZXhhbXBsZSkKICMKICMgRG8gbm90IHVzZSBmb3IgcHJvZHVjdGlvbiBpbWFnZXMhIEl0IGJ5cGFzc2VzIHNldmVyYWwKICMgY29yZSBidWlsZCBtZWNoYW5pc21zICh1cGRhdGluZyB0aGUgaW1hZ2Ugd2hlbiBvbmUKQEAgLTI3LDEwICszMSwxMSBAQAogUk9PVEZTX1BPU1RQUk9DRVNTX0NPTU1BTkQgKz0gInJvb3Rmc19kZWJ1Z19maWxlcyA7Igogcm9vdGZzX2RlYnVnX2ZpbGVzICgpIHsKICAgICMhL2Jpbi9zaCAtZQotICAgZWNobyAiJHtST09URlNfREVCVUdfRklMRVN9IiB8IHNlZCAtZSAncy87L1xuL2cnIHwgd2hpbGUgcmVhZCBzb3VyY2UgdGFyZ2V0OyBkbworICAgZWNobyAiJHtST09URlNfREVCVUdfRklMRVN9IiB8IHNlZCAtZSAncy87L1xuL2cnIHwgd2hpbGUgcmVhZCBzb3VyY2UgdGFyZ2V0IG1vZGU7IGRvCiAgICAgICBpZiBbIC1lICIkc291cmNlIiBdOyB0aGVuCiAgICAgICAgICBta2RpciAtcCAkKGRpcm5hbWUgJHRhcmdldCkKICAgICAgICAgIGNwIC1hICRzb3VyY2UgJHRhcmdldAorICAgICAgICAgWyAtbiAiJG1vZGUiIF0gJiYgY2htb2QgJG1vZGUgJHRhcmdldAogICAgICAgZmkKICAgIGRvbmUKIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc2FuaXR5LmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Nhbml0eS5iYmNsYXNzCmluZGV4IGU4MDY0YWMuLjFmZWI3OTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc2FuaXR5LmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zYW5pdHkuYmJjbGFzcwpAQCAtMzUwLDYgKzM1MCwxNCBAQAogICAgICAgICByZXR1cm4gIlRoZSAlczogJXMgY2FuJ3QgYmUgbG9jYXRlZCBvbiBuZnMuXG4iICUgKG5hbWUsIHBhdGgpCiAgICAgcmV0dXJuICIiCiAKKyMgQ2hlY2sgdGhhdCB0aGUgcGF0aCBpcyBvbiBhIGNhc2Utc2Vuc2l0aXZlIGZpbGUgc3lzdGVtCitkZWYgY2hlY2tfY2FzZV9zZW5zaXRpdmUocGF0aCwgbmFtZSk6CisgICAgaW1wb3J0IHRlbXBmaWxlCisgICAgd2l0aCB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUocHJlZml4PSdUbVAnLCBkaXI9cGF0aCkgYXMgdG1wX2ZpbGU6CisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHRtcF9maWxlLm5hbWUubG93ZXIoKSk6CisgICAgICAgICAgICByZXR1cm4gIlRoZSAlcyAoJXMpIGNhbid0IGJlIG9uIGEgY2FzZS1pbnNlbnNpdGl2ZSBmaWxlIHN5c3RlbS5cbiIgJSAobmFtZSwgcGF0aCkKKyAgICAgICAgcmV0dXJuICIiCisKICMgQ2hlY2sgdGhhdCBwYXRoIGlzbid0IGEgYnJva2VuIHN5bWxpbmsKIGRlZiBjaGVja19zeW1saW5rKGxuaywgZGF0YSk6CiAgICAgaWYgb3MucGF0aC5pc2xpbmsobG5rKSBhbmQgbm90IG9zLnBhdGguZXhpc3RzKGxuayk6CkBAIC00NDgsNDUgKzQ1Niw2IEBACiAKICAgICByZXR1cm4gbWVzc2FnZXMKIAotIyBDaGVja3MgaWYgbmVjZXNzYXJ5IHRvIGFkZCBvcHRpb24gbWFyY2ggdG8gaG9zdCBnY2MKLWRlZiBjaGVja19nY2NfbWFyY2goc2FuaXR5X2RhdGEpOgotICAgIHJlc3VsdCA9IFRydWUKLSAgICBtZXNzYWdlID0gIiIKLQotICAgICMgQ2hlY2sgaWYgLW1hcmNoIG5vdCBpbiBCVUlMRF9DRkxBR1MKLSAgICBpZiBzYW5pdHlfZGF0YS5nZXRWYXIoIkJVSUxEX0NGTEFHUyIpLmZpbmQoIi1tYXJjaCIpIDwgMDoKLSAgICAgICAgcmVzdWx0ID0gRmFsc2UKLQotICAgICAgICAjIENvbnN0cnVjdCBhIHRlc3QgZmlsZQotICAgICAgICBmID0gb3BlbigiZ2NjX3Rlc3QuYyIsICJ3IikKLSAgICAgICAgZi53cml0ZSgiaW50IG1haW4gKCl7IHZvbGF0aWxlIGludCBhdG9taWMgPSAyOyBfX3N5bmNfYm9vbF9jb21wYXJlX2FuZF9zd2FwICgmYXRvbWljLCAyLCAzKTsgcmV0dXJuIDA7IH1cbiIpCi0gICAgICAgIGYuY2xvc2UoKQotCi0gICAgICAgICMgQ2hlY2sgaWYgR0NDIGNvdWxkIHdvcmsgd2l0aG91dCBtYXJjaAotICAgICAgICBpZiBub3QgcmVzdWx0OgotICAgICAgICAgICAgc3RhdHVzLHJlcyA9IG9lLnV0aWxzLmdldHN0YXR1c291dHB1dChzYW5pdHlfZGF0YS5leHBhbmQoIiR7QlVJTERfQ0N9IGdjY190ZXN0LmMgLW8gZ2NjX3Rlc3QiKSkKLSAgICAgICAgICAgIGlmIHN0YXR1cyA9PSAwOgotICAgICAgICAgICAgICAgIHJlc3VsdCA9IFRydWU7Ci0KLSAgICAgICAgaWYgbm90IHJlc3VsdDoKLSAgICAgICAgICAgIHN0YXR1cyxyZXMgPSBvZS51dGlscy5nZXRzdGF0dXNvdXRwdXQoc2FuaXR5X2RhdGEuZXhwYW5kKCIke0JVSUxEX0NDfSAtbWFyY2g9bmF0aXZlIGdjY190ZXN0LmMgLW8gZ2NjX3Rlc3QiKSkKLSAgICAgICAgICAgIGlmIHN0YXR1cyA9PSAwOgotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAiQlVJTERfQ0ZMQUdTX2FwcGVuZCA9IFwiIC1tYXJjaD1uYXRpdmVcIiIKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBUcnVlOwotCi0gICAgICAgIGlmIG5vdCByZXN1bHQ6Ci0gICAgICAgICAgICBidWlsZF9hcmNoID0gc2FuaXR5X2RhdGEuZ2V0VmFyKCdCVUlMRF9BUkNIJykKLSAgICAgICAgICAgIHN0YXR1cyxyZXMgPSBvZS51dGlscy5nZXRzdGF0dXNvdXRwdXQoc2FuaXR5X2RhdGEuZXhwYW5kKCIke0JVSUxEX0NDfSAtbWFyY2g9JXMgZ2NjX3Rlc3QuYyAtbyBnY2NfdGVzdCIgJSBidWlsZF9hcmNoKSkKLSAgICAgICAgICAgIGlmIHN0YXR1cyA9PSAwOgotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAiQlVJTERfQ0ZMQUdTX2FwcGVuZCA9IFwiIC1tYXJjaD0lc1wiIiAlIGJ1aWxkX2FyY2gKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBUcnVlOwotCi0gICAgICAgIG9zLnJlbW92ZSgiZ2NjX3Rlc3QuYyIpCi0gICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKCJnY2NfdGVzdCIpOgotICAgICAgICAgICAgb3MucmVtb3ZlKCJnY2NfdGVzdCIpCi0KLSAgICByZXR1cm4gKHJlc3VsdCwgbWVzc2FnZSkKLQogIyBVbnBhdGNoZWQgdmVyc2lvbnMgb2YgbWFrZSAzLjgyIGFyZSBrbm93biB0byBiZSBicm9rZW4uICBTZWUgR05VIFNhdmFubmFoIEJ1ZyAzMDYxMi4KICMgVXNlIGEgbW9kaWZpZWQgcmVwcm9kdWNlciBmcm9tIGh0dHA6Ly9zYXZhbm5haC5nbnUub3JnL2J1Z3MvPzMwNjEyIHRvIHZhbGlkYXRlLgogZGVmIGNoZWNrX21ha2VfdmVyc2lvbihzYW5pdHlfZGF0YSk6CkBAIC02MTIsNyArNTgxLDcgQEAKICAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAgICAgcmV0dXJuIHRlc3Rtc2cKLSAgICAgICAKKwogZGVmIGNoZWNrX3Nhbml0eV92ZXJzaW9uX2NoYW5nZShzdGF0dXMsIGQpOgogICAgICMgU2FuaXR5IGNoZWNrcyB0byBiZSBkb25lIHdoZW4gU0FOSVRZX1ZFUlNJT04gb3IgTkFUSVZFTFNCU1RSSU5HIGNoYW5nZXMKICAgICAjIEluIG90aGVyIHdvcmRzLCB0aGVzZSB0ZXN0cyBydW4gb25jZSBpbiBhIGdpdmVuIGJ1aWxkIGRpcmVjdG9yeSBhbmQgdGhlbiAKQEAgLTY1NywyMyArNjI2LDYgQEAKICAgICBpZiAiZGlmZnN0YXQtbmF0aXZlIiBub3QgaW4gYXNzdW1lX3Byb3ZpZGVkOgogICAgICAgICBzdGF0dXMuYWRkcmVzdWx0KCdQbGVhc2UgdXNlIEFTU1VNRV9QUk9WSURFRCArPSwgbm90IEFTU1VNRV9QUk9WSURFRCA9IGluIHlvdXIgbG9jYWwuY29uZlxuJykKIAotICAgIGlmICJxZW11LW5hdGl2ZSIgaW4gYXNzdW1lX3Byb3ZpZGVkOgotICAgICAgICBpZiBub3QgY2hlY2tfYXBwX2V4aXN0cygicWVtdS1hcm0iLCBkKToKLSAgICAgICAgICAgIHN0YXR1cy5hZGRyZXN1bHQoInFlbXUtbmF0aXZlIHdhcyBpbiBBU1NVTUVfUFJPVklERUQgYnV0IHRoZSBRRU1VIGJpbmFyaWVzIChxZW11LWFybSkgY2FuJ3QgYmUgZm91bmQgaW4gUEFUSCIpCi0KLSAgICBpZiAibGlic2RsLW5hdGl2ZSIgaW4gYXNzdW1lX3Byb3ZpZGVkOgotICAgICAgICBpZiBub3QgY2hlY2tfYXBwX2V4aXN0cygic2RsLWNvbmZpZyIsIGQpOgotICAgICAgICAgICAgc3RhdHVzLmFkZHJlc3VsdCgibGlic2RsLW5hdGl2ZSBpcyBzZXQgdG8gYmUgQVNTVU1FX1BST1ZJREVEIGJ1dCBzZGwtY29uZmlnIGNhbid0IGJlIGZvdW5kIGluIFBBVEguIFBsZWFzZSBlaXRoZXIgaW5zdGFsbCBpdCwgb3IgY29uZmlndXJlIHFlbXUgbm90IHRvIHJlcXVpcmUgc2RsLiIpCi0KLSAgICAocmVzdWx0LCBtZXNzYWdlKSA9IGNoZWNrX2djY19tYXJjaChkKQotICAgIGlmIHJlc3VsdCBhbmQgbWVzc2FnZToKLSAgICAgICAgc3RhdHVzLmFkZHJlc3VsdCgiWW91ciBnY2MgdmVyc2lvbiBpcyBvbGRlciB0aGFuIDQuNSwgcGxlYXNlIGFkZCB0aGUgZm9sbG93aW5nIHBhcmFtIHRvIGxvY2FsLmNvbmZcbiBcCi0gICAgICAgICVzXG4iICUgbWVzc2FnZSkKLSAgICBpZiBub3QgcmVzdWx0OgotICAgICAgICBzdGF0dXMuYWRkcmVzdWx0KCJZb3VyIGdjYyB2ZXJzaW9uIGlzIG9sZGVyIHRoYW4gNC41IG9yIGlzIG5vdCB3b3JraW5nIHByb3Blcmx5LiAgUGxlYXNlIHZlcmlmeSB5b3UgY2FuIGJ1aWxkIikKLSAgICAgICAgc3RhdHVzLmFkZHJlc3VsdCgiIGFuZCBsaW5rIHNvbWV0aGluZyB0aGF0IHVzZXMgYXRvbWljIG9wZXJhdGlvbnMsIHN1Y2ggYXM6IFxuIikKLSAgICAgICAgc3RhdHVzLmFkZHJlc3VsdCgiICAgICAgICBfX3N5bmNfYm9vbF9jb21wYXJlX2FuZF9zd2FwICgmYXRvbWljLCAyLCAzKTtcbiIpCi0KICAgICAjIENoZWNrIHRoYXQgVE1QRElSIGlzbid0IG9uIGEgZmlsZXN5c3RlbSB3aXRoIGxpbWl0ZWQgZmlsZW5hbWUgbGVuZ3RoIChlZy4gZUNyeXB0RlMpCiAgICAgdG1wZGlyID0gZC5nZXRWYXIoJ1RNUERJUicpCiAgICAgc3RhdHVzLmFkZHJlc3VsdChjaGVja19jcmVhdGVfbG9uZ19maWxlbmFtZSh0bXBkaXIsICJUTVBESVIiKSkKQEAgLTcyOCw2ICs2ODAsMTAgQEAKICAgICAjIENoZWNrIHRoYXQgVE1QRElSIGlzbid0IGxvY2F0ZWQgb24gbmZzCiAgICAgc3RhdHVzLmFkZHJlc3VsdChjaGVja19ub3RfbmZzKHRtcGRpciwgIlRNUERJUiIpKQogCisgICAgIyBDaGVjayBmb3IgY2FzZS1pbnNlbnNpdGl2ZSBmaWxlIHN5c3RlbXMgKHN1Y2ggYXMgTGludXggaW4gRG9ja2VyIG9uCisgICAgIyBtYWNPUyB3aXRoIGRlZmF1bHQgSEZTKyBmaWxlIHN5c3RlbSkKKyAgICBzdGF0dXMuYWRkcmVzdWx0KGNoZWNrX2Nhc2Vfc2Vuc2l0aXZlKHRtcGRpciwgIlRNUERJUiIpKQorCiBkZWYgc2FuaXR5X2NoZWNrX2xvY2FsZShkKToKICAgICAiIiIKICAgICBDdXJyZW50bHkgYml0YmFrZSBzd2l0Y2hlcyBsb2NhbGUgdG8gZW5fVVMuVVRGLTggc28gY2hlY2sgdGhhdCB0aGlzIGxvY2FsZSBhY3R1YWxseSBleGlzdHMuCkBAIC03NDYsMTAgKzcwMiwxMCBAQAogICAgIGlmIDAgPT0gb3MuZ2V0dWlkKCk6CiAgICAgICAgIHJhaXNlX3Nhbml0eV9lcnJvcigiRG8gbm90IHVzZSBCaXRiYWtlIGFzIHJvb3QuIiwgZCkKIAotICAgICMgQ2hlY2sgdGhlIFB5dGhvbiB2ZXJzaW9uLCB3ZSBub3cgaGF2ZSBhIG1pbmltdW0gb2YgUHl0aG9uIDIuNy4zCisgICAgIyBDaGVjayB0aGUgUHl0aG9uIHZlcnNpb24sIHdlIG5vdyBoYXZlIGEgbWluaW11bSBvZiBQeXRob24gMy40CiAgICAgaW1wb3J0IHN5cwotICAgIGlmIHN5cy5oZXh2ZXJzaW9uIDwgMHgwMjA3MDNGMDoKLSAgICAgICAgc3RhdHVzLmFkZHJlc3VsdCgnVGhlIHN5c3RlbSByZXF1aXJlcyBhdCBsZWFzdCBQeXRob24gMi43LjMgdG8gcnVuLiBQbGVhc2UgdXBkYXRlIHlvdXIgUHl0aG9uIGludGVycHJldGVyLlxuJykKKyAgICBpZiBzeXMuaGV4dmVyc2lvbiA8IDB4MDMwNDAwMDA6CisgICAgICAgIHN0YXR1cy5hZGRyZXN1bHQoJ1RoZSBzeXN0ZW0gcmVxdWlyZXMgYXQgbGVhc3QgUHl0aG9uIDMuNCB0byBydW4uIFBsZWFzZSB1cGRhdGUgeW91ciBQeXRob24gaW50ZXJwcmV0ZXIuXG4nKQogCiAgICAgIyBDaGVjayB0aGUgYml0YmFrZSB2ZXJzaW9uIG1lZXRzIG1pbmltdW0gcmVxdWlyZW1lbnRzCiAgICAgZnJvbSBkaXN0dXRpbHMudmVyc2lvbiBpbXBvcnQgTG9vc2VWZXJzaW9uCkBAIC03NzAsNiArNzI2LDExIEBACiAgICAgICAgIGlmIG5vdCAoIGNoZWNrX2NvbmZfZXhpc3RzKCJjb25mL2Rpc3Ryby8ke0RJU1RST30uY29uZiIsIGQpIG9yIGNoZWNrX2NvbmZfZXhpc3RzKCJjb25mL2Rpc3Ryby9pbmNsdWRlLyR7RElTVFJPfS5pbmMiLCBkKSApOgogICAgICAgICAgICAgc3RhdHVzLmFkZHJlc3VsdCgiRElTVFJPICclcycgbm90IGZvdW5kLiBQbGVhc2Ugc2V0IGEgdmFsaWQgRElTVFJPIGluIHlvdXIgbG9jYWwuY29uZlxuIiAlIGQuZ2V0VmFyKCJESVNUUk8iKSkKIAorICAgICMgQ2hlY2sgdGhhdCB0aGVzZSB2YXJpYWJsZXMgZG9uJ3QgdXNlIHRpbGRlLWV4cGFuc2lvbiBhcyB3ZSBkb24ndCBkbyB0aGF0CisgICAgZm9yIHYgaW4gKCJUTVBESVIiLCAiRExfRElSIiwgIlNTVEFURV9ESVIiKToKKyAgICAgICAgaWYgZC5nZXRWYXIodikuc3RhcnRzd2l0aCgifiIpOgorICAgICAgICAgICAgc3RhdHVzLmFkZHJlc3VsdCgiJXMgdXNlcyB+IGJ1dCBCaXRiYWtlIHdpbGwgbm90IGV4cGFuZCB0aGlzLCB1c2UgYW4gYWJzb2x1dGUgcGF0aCBvciB2YXJpYWJsZXMuIiAlIHYpCisKICAgICAjIENoZWNrIHRoYXQgRExfRElSIGlzIHNldCwgZXhpc3RzIGFuZCBpcyB3cml0YWJsZS4gSW4gdGhlb3J5LCB3ZSBzaG91bGQgbmV2ZXIgZXZlbiBoaXQgdGhlIGNoZWNrIGlmIERMX0RJUiBpc24ndCAKICAgICAjIHNldCwgc2luY2Ugc28gbXVjaCByZWxpZXMgb24gaXQgYmVpbmcgc2V0LgogICAgIGRsZGlyID0gZC5nZXRWYXIoJ0RMX0RJUicpCkBAIC04MzksNyArODAwLDcgQEAKIAogICAgICAgICAjIFNwbGl0IGludG8gcGFpcnMKICAgICAgICAgaWYgbGVuKG1pcnJvcnMpICUgMiAhPSAwOgotICAgICAgICAgICAgYmIud2FybignSW52YWxpZCBtaXJyb3IgdmFyaWFibGUgdmFsdWUgZm9yICVzOiAlcywgc2hvdWxkIGNvbnRhaW4gcGFpcmVkIG1lbWJlcnMuJyAlIChtaXJyb3JfdmFyLCBtaXJyb3JzLnN0cmlwKCkpKQorICAgICAgICAgICAgYmIud2FybignSW52YWxpZCBtaXJyb3IgdmFyaWFibGUgdmFsdWUgZm9yICVzOiAlcywgc2hvdWxkIGNvbnRhaW4gcGFpcmVkIG1lbWJlcnMuJyAlIChtaXJyb3JfdmFyLCBzdHIobWlycm9ycykpKQogICAgICAgICAgICAgY29udGludWUKICAgICAgICAgbWlycm9ycyA9IGxpc3QoemlwKCpbaXRlcihtaXJyb3JzKV0qMikpCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc2lnbl9wYWNrYWdlX2ZlZWQuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc2lnbl9wYWNrYWdlX2ZlZWQuYmJjbGFzcwppbmRleCA3MWRmMDNiLi5mMDNjNDgwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3NpZ25fcGFja2FnZV9mZWVkLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zaWduX3BhY2thZ2VfZmVlZC5iYmNsYXNzCkBAIC0yOCw2ICsyOCw5IEBACiBQQUNLQUdFX0ZFRURfR1BHX0JBQ0tFTkQgPz0gJ2xvY2FsJwogUEFDS0FHRV9GRUVEX0dQR19TSUdOQVRVUkVfVFlQRSA/PSAnQVNDJwogCisjIE1ha2UgZmVlZCBzaWduaW5nIGtleSB0byBiZSBwcmVzZW50IGluIHJvb3RmcworRkVBVFVSRV9QQUNLQUdFU19wYWNrYWdlLW1hbmFnZW1lbnRfYXBwZW5kID0gIiBzaWduaW5nLWtleXMtcGFja2FnZWZlZWQiCisKIHB5dGhvbiAoKSB7CiAgICAgIyBDaGVjayBzYW5pdHkgb2YgY29uZmlndXJhdGlvbgogICAgIGZvciB2YXIgaW4gKCdQQUNLQUdFX0ZFRURfR1BHX05BTUUnLCAnUEFDS0FHRV9GRUVEX0dQR19QQVNTUEhSQVNFX0ZJTEUnKToKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc2lnbl9ycG0uYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc2lnbl9ycG0uYmJjbGFzcwppbmRleCBiYzJlOTQ3Li40OTYxYjAzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3NpZ25fcnBtLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zaWduX3JwbS5iYmNsYXNzCkBAIC05LDE2ICs5LDMwIEBACiAjICAgICAgICAgICBPcHRpb25hbCB2YXJpYWJsZSBmb3Igc3BlY2lmeWluZyB0aGUgYmFja2VuZCB0byB1c2UgZm9yIHNpZ25pbmcuCiAjICAgICAgICAgICBDdXJyZW50bHkgdGhlIG9ubHkgYXZhaWxhYmxlIG9wdGlvbiBpcyAnbG9jYWwnLCBpLmUuIGxvY2FsIHNpZ25pbmcKICMgICAgICAgICAgIG9uIHRoZSBidWlsZCBob3N0LgorIyBSUE1fRklMRV9DSEVDS1NVTV9ESUdFU1QKKyMgICAgICAgICAgIE9wdGlvbmFsIHZhcmlhYmxlIGZvciBzcGVjaWZ5aW5nIHRoZSBhbGdvcml0aG0gZm9yIGdlbmVyYXRpbmcgZmlsZQorIyAgICAgICAgICAgY2hlY2tzdW0gZGlnZXN0LgorIyBSUE1fRlNLX1BBVEgKKyMgICAgICAgICAgIE9wdGlvbmFsIHZhcmlhYmxlIGZvciB0aGUgZmlsZSBzaWduaW5nIGtleS4KKyMgUlBNX0ZTS19QQVNTV09SRAorIyAgICAgICAgICAgT3B0aW9uYWwgdmFyaWFibGUgZm9yIHRoZSBmaWxlIHNpZ25pbmcga2V5IHBhc3N3b3JkLgogIyBHUEdfQklOCiAjICAgICAgICAgICBPcHRpb25hbCB2YXJpYWJsZSBmb3Igc3BlY2lmeWluZyB0aGUgZ3BnIGJpbmFyeS93cmFwcGVyIHRvIHVzZSBmb3IKICMgICAgICAgICAgIHNpZ25pbmcuCisjIFJQTV9HUEdfU0lHTl9DSFVOSworIyAgICAgICAgICAgT3B0aW9uYWwgdmFyaWFibGUgaW5kaWNhdGluZyB0aGUgbnVtYmVyIG9mIHBhY2thZ2VzIHVzZWQgcGVyIGdwZworIyAgICAgICAgICAgaW52b2NhdGlvbgogIyBHUEdfUEFUSAogIyAgICAgICAgICAgT3B0aW9uYWwgdmFyaWFibGUgZm9yIHNwZWNpZnlpbmcgdGhlIGdudXBnICJob21lIiBkaXJlY3Rvcnk6Ci0jCisKIGluaGVyaXQgc2FuaXR5CiAKIFJQTV9TSUdOX1BBQ0tBR0VTPScxJworUlBNX1NJR05fRklMRVMgPz0gJzAnCiBSUE1fR1BHX0JBQ0tFTkQgPz0gJ2xvY2FsJworIyBTSEEtMjU2IGlzIHVzZWQgYnkgZGVmYXVsdAorUlBNX0ZJTEVfQ0hFQ0tTVU1fRElHRVNUID89ICc4JworUlBNX0dQR19TSUdOX0NIVU5LID89ICIke0JCX05VTUJFUl9USFJFQURTfSIKIAogCiBweXRob24gKCkgewpAQCAtMjgsNiArNDIsMTEgQEAKICAgICBmb3IgdmFyIGluICgnUlBNX0dQR19OQU1FJywgJ1JQTV9HUEdfUEFTU1BIUkFTRScpOgogICAgICAgICBpZiBub3QgZC5nZXRWYXIodmFyKToKICAgICAgICAgICAgIHJhaXNlX3Nhbml0eV9lcnJvcigiWW91IG5lZWQgdG8gZGVmaW5lICVzIGluIHRoZSBjb25maWciICUgdmFyLCBkKQorCisgICAgaWYgZC5nZXRWYXIoJ1JQTV9TSUdOX0ZJTEVTJykgPT0gJzEnOgorICAgICAgICBmb3IgdmFyIGluICgnUlBNX0ZTS19QQVRIJywgJ1JQTV9GU0tfUEFTU1dPUkQnKToKKyAgICAgICAgICAgIGlmIG5vdCBkLmdldFZhcih2YXIpOgorICAgICAgICAgICAgICAgIHJhaXNlX3Nhbml0eV9lcnJvcigiWW91IG5lZWQgdG8gZGVmaW5lICVzIGluIHRoZSBjb25maWciICUgdmFyLCBkKQogfQogCiBweXRob24gc2lnbl9ycG0gKCkgewpAQCAtMzksOCArNTgsMTggQEAKIAogICAgIHNpZ25lci5zaWduX3JwbXMocnBtcywKICAgICAgICAgICAgICAgICAgICAgIGQuZ2V0VmFyKCdSUE1fR1BHX05BTUUnKSwKLSAgICAgICAgICAgICAgICAgICAgIGQuZ2V0VmFyKCdSUE1fR1BHX1BBU1NQSFJBU0UnKSkKKyAgICAgICAgICAgICAgICAgICAgIGQuZ2V0VmFyKCdSUE1fR1BHX1BBU1NQSFJBU0UnKSwKKyAgICAgICAgICAgICAgICAgICAgIGQuZ2V0VmFyKCdSUE1fRklMRV9DSEVDS1NVTV9ESUdFU1QnKSwKKyAgICAgICAgICAgICAgICAgICAgIGludChkLmdldFZhcignUlBNX0dQR19TSUdOX0NIVU5LJykpLAorICAgICAgICAgICAgICAgICAgICAgZC5nZXRWYXIoJ1JQTV9GU0tfUEFUSCcpLAorICAgICAgICAgICAgICAgICAgICAgZC5nZXRWYXIoJ1JQTV9GU0tfUEFTU1dPUkQnKSkKIH0KIAogZG9fcGFja2FnZV9pbmRleFtkZXBlbmRzXSArPSAic2lnbmluZy1rZXlzOmRvX2RlcGxveSIKIGRvX3Jvb3Rmc1tkZXBlbmRzXSArPSAic2lnbmluZy1rZXlzOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCisKKyMgTmV3ZXIgdmVyc2lvbnMgb2YgZ3BnIChhdCBsZWFzdCAyLjEuNSBhbmQgMi4yLjEpIGhhdmUgaXNzdWVzIHdoZW4gc2lnbmluZyBvY2N1cnMgaW4gcGFyYWxsZWwKKyMgc28gdW5mb3J0dW5hdGVseSB0aGUgc2lnbmluZyBtdXN0IGJlIGRvbmUgc2VyaWFsbHkuIE9uY2UgdGhlIHVwc3RyZWFtIHByb2JsZW0gaXMgZml4ZWQsCisjIHRoZSBmb2xsb3dpbmcgbGluZSBtdXN0IGJlIHJlbW92ZWQgb3RoZXJ3aXNlIHdlIGxvb3NlIGFsbCB0aGUgaW50cmluc2ljIHBhcmFsbGVsaXNtIGZyb20KKyMgYml0YmFrZS4gIEZvciBtb3JlIGluZm9ybWF0aW9uLCBjaGVjayBodHRwczovL2J1Z3ppbGxhLnlvY3RvcHJvamVjdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDIyLgorZG9fcGFja2FnZV93cml0ZV9ycG1bbG9ja2ZpbGVzXSArPSAiJHtUTVBESVJ9L2dwZy5sb2NrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zaXRlaW5mby5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zaXRlaW5mby5iYmNsYXNzCmluZGV4IDJjMzM3MzIuLjFhYWRhNDAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc2l0ZWluZm8uYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3NpdGVpbmZvLmJiY2xhc3MKQEAgLTYyLDEwICs2Miw4IEBACiAgICAgICAgICJsaW51eC1nbnVuMzIiOiAiY29tbW9uLWxpbnV4IGNvbW1vbi1nbGliYyIsCiAgICAgICAgICJsaW51eC1nbnVlYWJpIjogImNvbW1vbi1saW51eCBjb21tb24tZ2xpYmMiLAogICAgICAgICAibGludXgtZ251c3BlIjogImNvbW1vbi1saW51eCBjb21tb24tZ2xpYmMiLAotICAgICAgICAibGludXgtdWNsaWJjIjogImNvbW1vbi1saW51eCBjb21tb24tdWNsaWJjIiwKLSAgICAgICAgImxpbnV4LXVjbGliY2VhYmkiOiAiY29tbW9uLWxpbnV4IGNvbW1vbi11Y2xpYmMiLAotICAgICAgICAibGludXgtdWNsaWJjc3BlIjogImNvbW1vbi1saW51eCBjb21tb24tdWNsaWJjIiwKICAgICAgICAgImxpbnV4LW11c2wiOiAiY29tbW9uLWxpbnV4IGNvbW1vbi1tdXNsIiwKKyAgICAgICAgImxpbnV4LW11c2x4MzIiOiAiY29tbW9uLWxpbnV4IGNvbW1vbi1tdXNsIiwKICAgICAgICAgImxpbnV4LW11c2xlYWJpIjogImNvbW1vbi1saW51eCBjb21tb24tbXVzbCIsCiAgICAgICAgICJsaW51eC1tdXNsc3BlIjogImNvbW1vbi1saW51eCBjb21tb24tbXVzbCIsCiAgICAgICAgICJ1Y2xpbnV4LXVjbGliYyI6ICJjb21tb24tdWNsaWJjIiwKQEAgLTc5LDkgKzc3LDcgQEAKICAgICAgICAgImFhcmNoNjRfYmUtbGludXgtbXVzbCI6ICJhYXJjaDY0X2JlLWxpbnV4IiwKICAgICAgICAgImFybS1saW51eC1nbnVlYWJpIjogImFybS1saW51eCIsCiAgICAgICAgICJhcm0tbGludXgtbXVzbGVhYmkiOiAiYXJtLWxpbnV4IiwKLSAgICAgICAgImFybS1saW51eC11Y2xpYmNlYWJpIjogImFybS1saW51eC11Y2xpYmMiLAogICAgICAgICAiYXJtZWItbGludXgtZ251ZWFiaSI6ICJhcm1lYi1saW51eCIsCi0gICAgICAgICJhcm1lYi1saW51eC11Y2xpYmNlYWJpIjogImFybWViLWxpbnV4LXVjbGliYyIsCiAgICAgICAgICJhcm1lYi1saW51eC1tdXNsZWFiaSI6ICJhcm1lYi1saW51eCIsCiAgICAgICAgICJtaXBzLWxpbnV4LW11c2wiOiAibWlwcy1saW51eCIsCiAgICAgICAgICJtaXBzZWwtbGludXgtbXVzbCI6ICJtaXBzZWwtbGludXgiLApAQCAtOTMsMTAgKzg5LDggQEAKICAgICAgICAgIm1pcHNpc2E2NHI2ZWwtbGludXgtZ251bjMyIjogIm1pcHNpc2EzMnI2ZWwtbGludXggYml0LTMyIiwKICAgICAgICAgInBvd2VycGMtbGludXgiOiAicG93ZXJwYzMyLWxpbnV4IiwKICAgICAgICAgInBvd2VycGMtbGludXgtbXVzbCI6ICJwb3dlcnBjLWxpbnV4IHBvd2VycGMzMi1saW51eCIsCi0gICAgICAgICJwb3dlcnBjLWxpbnV4LXVjbGliYyI6ICJwb3dlcnBjLWxpbnV4IHBvd2VycGMzMi1saW51eCIsCiAgICAgICAgICJwb3dlcnBjLWxpbnV4LWdudXNwZSI6ICJwb3dlcnBjLWxpbnV4IHBvd2VycGMzMi1saW51eCIsCiAgICAgICAgICJwb3dlcnBjLWxpbnV4LW11c2xzcGUiOiAicG93ZXJwYy1saW51eCBwb3dlcnBjMzItbGludXgiLAotICAgICAgICAicG93ZXJwYy1saW51eC11Y2xpYmNzcGUiOiAicG93ZXJwYy1saW51eCBwb3dlcnBjMzItbGludXggcG93ZXJwYy1saW51eC11Y2xpYmMiLAogICAgICAgICAicG93ZXJwYzY0LWxpbnV4LWdudXNwZSI6ICJwb3dlcnBjLWxpbnV4IHBvd2VycGM2NC1saW51eCIsCiAgICAgICAgICJwb3dlcnBjNjQtbGludXgtbXVzbHNwZSI6ICJwb3dlcnBjLWxpbnV4IHBvd2VycGM2NC1saW51eCIsCiAgICAgICAgICJwb3dlcnBjNjQtbGludXgiOiAicG93ZXJwYy1saW51eCIsCkBAIC0xMDYsNyArMTAwLDcgQEAKICAgICAgICAgIng4Nl82NC1kYXJ3aW45IjogImJpdC02NCIsCiAgICAgICAgICJ4ODZfNjQtbGludXgiOiAiYml0LTY0IiwKICAgICAgICAgIng4Nl82NC1saW51eC1tdXNsIjogIng4Nl82NC1saW51eCBiaXQtNjQiLAotICAgICAgICAieDg2XzY0LWxpbnV4LXVjbGliYyI6ICJiaXQtNjQiLAorICAgICAgICAieDg2XzY0LWxpbnV4LW11c2x4MzIiOiAiYml0LTMyIGl4ODYtY29tbW9uIHgzMi1saW51eCIsCiAgICAgICAgICJ4ODZfNjQtZWxmIjogImJpdC02NCIsCiAgICAgICAgICJ4ODZfNjQtbGludXgtZ251IjogImJpdC02NCB4ODZfNjQtbGludXgiLAogICAgICAgICAieDg2XzY0LWxpbnV4LWdudXgzMiI6ICJiaXQtMzIgaXg4Ni1jb21tb24geDMyLWxpbnV4IiwKQEAgLTE1OSw3ICsxNTMsNyBAQAogICAgICAgICBiYi5mYXRhbCgiUGxlYXNlIGFkZCB5b3VyIGFyY2hpdGVjdHVyZSB0byBzaXRlaW5mby5iYmNsYXNzIikKIH0KIAotZGVmIHNpdGVpbmZvX2dldF9maWxlcyhkLCBhY2xvY2FsY2FjaGUgPSBGYWxzZSk6CitkZWYgc2l0ZWluZm9fZ2V0X2ZpbGVzKGQsIHN5c3Jvb3RjYWNoZSA9IEZhbHNlKToKICAgICBzaXRlZGF0YSA9IHNpdGVpbmZvX2RhdGEoZCkKICAgICBzaXRlZmlsZXMgPSAiIgogICAgIGZvciBwYXRoIGluIGQuZ2V0VmFyKCJCQlBBVEgiKS5zcGxpdCgiOiIpOgpAQCAtMTY4LDE4ICsxNjIsMTEgQEAKICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGZpbGVuYW1lKToKICAgICAgICAgICAgICAgICBzaXRlZmlsZXMgKz0gZmlsZW5hbWUgKyAiICIKIAotICAgIGlmIG5vdCBhY2xvY2FsY2FjaGU6CisgICAgaWYgbm90IHN5c3Jvb3RjYWNoZToKICAgICAgICAgcmV0dXJuIHNpdGVmaWxlcwogCi0gICAgIyBOb3cgY2hlY2sgZm9yIHNpdGVjb25maWcgY2FjaGUgZmlsZXMgaW4gdGhlIGRpcmVjdG9yeSBzZXR1cCBieSBhdXRvdG9vbHMuYmJjbGFzcyB0bwotICAgICMgYXZvaWQgcmFjZXMuCi0gICAgIwotICAgICMgQUNMT0NBTERJUiBtYXkgb3IgbWF5IG5vdCBleGlzdCBzbyBjYWNoZSBzaG91bGQgb25seSBiZSBzZXQgdG8gVHJ1ZSBmcm9tIGF1dG90b29scy5iYmNsYXNzCi0gICAgIyBhZnRlciBmaWxlcyBoYXZlIGJlZW4gY29waWVkIGludG8gdGhpcyBsb2NhdGlvbi4gVG8gZG8gb3RoZXJ3aXNlIHJpc2tzIHBhcnNpbmcvc2lnbmF0dXJlCi0gICAgIyBpc3N1ZXMgYW5kIHRoZSBkaXJlY3RvcnkgYmVpbmcgY3JlYXRlZC9yZW1vdmVkIHdoaWxzdCB0aGlzIGNvZGUgZXhlY3V0ZXMuIFRoaXMgY2FuIGhhcHBlbgotICAgICMgd2hlbiBhIG11bHRpbGliIHJlY2lwZSBpcyBwYXJzZWQgYWxvbmcgd2l0aCBpdHMgYmFzZSB2YXJpYW50IHdoaWNoIG1heSBiZSBydW5uaW5nIGF0IHRoZSB0aW1lCi0gICAgIyBjYXVzaW5nIHJhcmUgYnV0IG5hc3R5IGZhaWx1cmVzCi0gICAgcGF0aF9zaXRlY29uZmlnID0gZC5nZXRWYXIoJ0FDTE9DQUxESVInKQorICAgICMgTm93IGNoZWNrIGZvciBzaXRlY29uZmlnIGNhY2hlIGZpbGVzIGluIHN5c3Jvb3RzCisgICAgcGF0aF9zaXRlY29uZmlnID0gZC5nZXRWYXIoJ1NJVEVDT05GSUdfU1lTUk9PVENBQ0hFJykKICAgICBpZiBwYXRoX3NpdGVjb25maWcgYW5kIG9zLnBhdGguaXNkaXIocGF0aF9zaXRlY29uZmlnKToKICAgICAgICAgZm9yIGkgaW4gb3MubGlzdGRpcihwYXRoX3NpdGVjb25maWcpOgogICAgICAgICAgICAgaWYgbm90IGkuZW5kc3dpdGgoIl9jb25maWciKToKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc3N0YXRlLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3NzdGF0ZS5iYmNsYXNzCmluZGV4IDBhMTI5MzUuLmUzMGZiZTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc3N0YXRlLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zc3RhdGUuYmJjbGFzcwpAQCAtMzQ2LDggKzM0Niw2IEBACiAgICAgICAgIG9lLnBhdGgucmVtb3ZlKGRpcikKIAogICAgIGZvciBzdGF0ZSBpbiBzc1snZGlycyddOgotICAgICAgICBpZiBkLmdldFZhcignU1NUQVRFX1NLSVBfQ1JFQVRJT04nKSA9PSAnMSc6Ci0gICAgICAgICAgICBjb250aW51ZQogICAgICAgICBwcmVwZGlyKHN0YXRlWzFdKQogICAgICAgICBvcy5yZW5hbWUoc3N0YXRlaW5zdCArIHN0YXRlWzBdLCBzdGF0ZVsxXSkKICAgICBzc3RhdGVfaW5zdGFsbChzcywgZCkKQEAgLTQwNCw3ICs0MDIsNyBAQAogICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgYmIubm90ZSgiUmVwbGFjaW5nIGZpeG1lIHBhdGhzIGluIHNzdGF0ZSBwYWNrYWdlOiAlcyIgJSAoc3N0YXRlX2hhcmRjb2RlX2NtZCkpCi0gICAgICAgIHN1YnByb2Nlc3MuY2FsbChzc3RhdGVfaGFyZGNvZGVfY21kLCBzaGVsbD1UcnVlKQorICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoc3N0YXRlX2hhcmRjb2RlX2NtZCwgc2hlbGw9VHJ1ZSkKIAogICAgICAgICAjIE5lZWQgdG8gcmVtb3ZlIHRoaXMgb3Igd2UnZCBjb3B5IGl0IGludG8gdGhlIHRhcmdldCBkaXJlY3RvcnkgYW5kIG1heSAKICAgICAgICAgIyBjb25mbGljdCB3aXRoIGFub3RoZXIgd3JpdGVyCkBAIC00NTMsNyArNDUxLDcgQEAKICAgICBpZiBvcy5wYXRoLmV4aXN0cyhtYW5pZmVzdCArICIucG9zdHJtIik6CiAgICAgICAgIGltcG9ydCBzdWJwcm9jZXNzCiAgICAgICAgIG9zLmNobW9kKHBvc3RybSwgMG83NTUpCi0gICAgICAgIHN1YnByb2Nlc3MuY2FsbChwb3N0cm0sIHNoZWxsPVRydWUpCisgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChwb3N0cm0sIHNoZWxsPVRydWUpCiAgICAgICAgIG9lLnBhdGgucmVtb3ZlKHBvc3RybSkKIAogICAgIG9lLnBhdGgucmVtb3ZlKG1hbmlmZXN0KQpAQCAtNTk2LDggKzU5NCw2IEBACiAgICAgZm9yIHN0YXRlIGluIHNzWydkaXJzJ106CiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzdGF0ZVsxXSk6CiAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICBpZiBkLmdldFZhcignU1NUQVRFX1NLSVBfQ1JFQVRJT04nKSA9PSAnMSc6Ci0gICAgICAgICAgICBjb250aW51ZQogICAgICAgICBzcmNiYXNlID0gc3RhdGVbMF0ucnN0cmlwKCIvIikucnNwbGl0KCcvJywgMSlbMF0KICAgICAgICAgIyBGaW5kIGFuZCBlcnJvciBmb3IgYWJzb2x1dGUgc3ltbGlua3MuIFdlIGNvdWxkIGF0dGVtcHQgdG8gcmVsb2NhdGUgYnV0IGl0cyBub3QKICAgICAgICAgIyBjbGVhciB3aGVyZSB0aGUgc3ltbGluayBpcyByZWxhdGl2ZSB0byBpbiB0aGlzIGNvbnRleHQuIFdlIGNvdWxkIGFkZCB0aGF0IG1hcmt1cApAQCAtNjI1LDYgKzYyMSwxMCBAQAogCiAgICAgZC5zZXRWYXIoJ1NTVEFURV9CVUlMRERJUicsIHNzdGF0ZWJ1aWxkKQogICAgIGQuc2V0VmFyKCdTU1RBVEVfUEtHJywgc3N0YXRlcGtnKQorICAgIGQuc2V0VmFyKCdTU1RBVEVfSU5TVERJUicsIHNzdGF0ZWJ1aWxkKQorCisgICAgaWYgZC5nZXRWYXIoJ1NTVEFURV9TS0lQX0NSRUFUSU9OJykgPT0gJzEnOgorICAgICAgICByZXR1cm4KIAogICAgIGZvciBmIGluIChkLmdldFZhcignU1NUQVRFQ1JFQVRFRlVOQ1MnKSBvciAnJykuc3BsaXQoKSArIFwKICAgICAgICAgICAgICBbJ3NzdGF0ZV9jcmVhdGVfcGFja2FnZScsICdzc3RhdGVfc2lnbl9wYWNrYWdlJ10gKyBcCkBAIC02MzQsOCArNjM0LDYgQEAKIAogICAgIGJiLnNpZ2dlbi5kdW1wX3RoaXNfdGFzayhzc3RhdGVwa2cgKyAiLnNpZ2luZm8iLCBkKQogCi0gICAgZC5zZXRWYXIoJ1NTVEFURV9JTlNURElSJywgc3N0YXRlYnVpbGQpCi0KICAgICByZXR1cm4KIAogZGVmIHBzdGFnaW5nX2ZldGNoKHNzdGF0ZWZldGNoLCBzc3RhdGVwa2csIGQpOgpAQCAtOTY5LDcgKzk2Nyw4IEBACiAgICAgICAgICAgICBpZiBpc05hdGl2ZUNyb3NzKHRhc2tkZXBlbmRlZXNbZGVwXVswXSk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgICAgICAjIE5hdGl2ZS9jcm9zcyB0b29scyBkZXBlbmRlZCB1cG9uIGJ5IHRhcmdldCBzeXNyb290IGFyZSBub3QgbmVlZGVkCi0gICAgICAgICAgICBpZiBpc05hdGl2ZUNyb3NzKHRhc2tkZXBlbmRlZXNbdGFza11bMF0pOgorICAgICAgICAgICAgIyBBZGQgYW4gZXhjZXB0aW9uIGZvciBzaGFkb3ctbmF0aXZlIGFzIHJlcXVpcmVkIGJ5IHVzZXJhZGQuYmJjbGFzcworICAgICAgICAgICAgaWYgaXNOYXRpdmVDcm9zcyh0YXNrZGVwZW5kZWVzW3Rhc2tdWzBdKSBhbmQgdGFza2RlcGVuZGVlc1t0YXNrXVswXSAhPSAnc2hhZG93LW5hdGl2ZSc6CiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICMgVGFyZ2V0IHBvcHVsYXRlX3N5c3Jvb3QgbmVlZCB0aGVpciBkZXBlbmRlbmNpZXMKICAgICAgICAgICAgIHJldHVybiBGYWxzZQpAQCAtMTAxNyw2ICsxMDE2LDExIEBACiAgICAgZCA9IGUuZGF0YQogICAgIHN0YW1wcyA9IGUuc3RhbXBzLnZhbHVlcygpCiAgICAgcmVtb3Zld29ya2RpciA9IChkLmdldFZhcigiU1NUQVRFX1BSVU5FX09CU09MRVRFV09SS0RJUiIsIEZhbHNlKSA9PSAiMSIpCisgICAgcHJlc2VydmVzdGFtcGZpbGUgPSBkLmV4cGFuZCgnJHtTU1RBVEVfTUFOSUZFU1RTfS9wcmVzZXJ2ZS1zdGFtcHMnKQorICAgIHByZXNlcnZlc3RhbXBzID0gW10KKyAgICBpZiBvcy5wYXRoLmV4aXN0cyhwcmVzZXJ2ZXN0YW1wZmlsZSk6CisgICAgICAgIHdpdGggb3BlbihwcmVzZXJ2ZXN0YW1wZmlsZSwgJ3InKSBhcyBmOgorICAgICAgICAgICAgcHJlc2VydmVzdGFtcHMgPSBmLnJlYWRsaW5lcygpCiAgICAgc2VlbiA9IFtdCiAgICAgZm9yIGEgaW4gZC5nZXRWYXIoIlNTVEFURV9BUkNIUyIpLnNwbGl0KCk6CiAgICAgICAgIHRvcmVtb3ZlID0gW10KQEAgLTEwMjcsNyArMTAzMSw3IEBACiAgICAgICAgICAgICBsaW5lcyA9IGYucmVhZGxpbmVzKCkKICAgICAgICAgICAgIGZvciBsIGluIGxpbmVzOgogICAgICAgICAgICAgICAgIChzdGFtcCwgbWFuaWZlc3QsIHdvcmtkaXIpID0gbC5zcGxpdCgpCi0gICAgICAgICAgICAgICAgaWYgc3RhbXAgbm90IGluIHN0YW1wczoKKyAgICAgICAgICAgICAgICBpZiBzdGFtcCBub3QgaW4gc3RhbXBzIGFuZCBzdGFtcCBub3QgaW4gcHJlc2VydmVzdGFtcHM6CiAgICAgICAgICAgICAgICAgICAgIHRvcmVtb3ZlLmFwcGVuZChsKQogICAgICAgICAgICAgICAgICAgICBpZiBzdGFtcCBub3QgaW4gc2VlbjoKICAgICAgICAgICAgICAgICAgICAgICAgIGJiLmRlYnVnKDIsICJTdGFtcCAlcyBpcyBub3QgcmVhY2hhYmxlLCByZW1vdmluZyByZWxhdGVkIG1hbmlmZXN0cyIgJSBzdGFtcCkKQEAgLTEwNDksNCArMTA1Myw2IEBACiAgICAgICAgIHdpdGggb3BlbihpLCAidyIpIGFzIGY6CiAgICAgICAgICAgICBmb3IgbCBpbiBsaW5lczoKICAgICAgICAgICAgICAgICBmLndyaXRlKGwpCisgICAgaWYgcHJlc2VydmVzdGFtcHM6CisgICAgICAgIG9zLnJlbW92ZShwcmVzZXJ2ZXN0YW1wZmlsZSkKIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc3RhZ2luZy5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zdGFnaW5nLmJiY2xhc3MKaW5kZXggOTg0MDUxZC4uYzQ3OWJkOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zdGFnaW5nLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zdGFnaW5nLmJiY2xhc3MKQEAgLTY4LDEwMSArNjgsMTkgQEAKIH0KIAogcHl0aG9uIHN5c3Jvb3Rfc3RyaXAgKCkgewotICAgIGltcG9ydCBzdGF0LCBlcnJubworICAgIGluaGliaXRfc3lzcm9vdCA9IGQuZ2V0VmFyKCdJTkhJQklUX1NZU1JPT1RfU1RSSVAnKQorICAgIGlmIGluaGliaXRfc3lzcm9vdCBhbmQgb2UudHlwZXMuYm9vbGVhbihpbmhpYml0X3N5c3Jvb3QpOgorICAgICAgICByZXR1cm4gMAogCi0gICAgZHZhciA9IGQuZ2V0VmFyKCdTWVNST09UX0RFU1RESVInKQorICAgIGRzdGRpciA9IGQuZ2V0VmFyKCdTWVNST09UX0RFU1RESVInKQogICAgIHBuID0gZC5nZXRWYXIoJ1BOJykKKyAgICBsaWJkaXIgPSBvcy5wYXRoLmFic3BhdGgoZHN0ZGlyICsgb3Muc2VwICsgZC5nZXRWYXIoImxpYmRpciIpKQorICAgIGJhc2VfbGliZGlyID0gb3MucGF0aC5hYnNwYXRoKGRzdGRpciArIG9zLnNlcCArIGQuZ2V0VmFyKCJiYXNlX2xpYmRpciIpKQorICAgIHFhX2FscmVhZHlfc3RyaXBwZWQgPSAnYWxyZWFkeS1zdHJpcHBlZCcgaW4gKGQuZ2V0VmFyKCdJTlNBTkVfU0tJUF8nICsgcG4pIG9yICIiKS5zcGxpdCgpCisgICAgc3RyaXBfY21kID0gZC5nZXRWYXIoIlNUUklQIikKIAotICAgIG9zLmNoZGlyKGR2YXIpCi0KLSAgICAjIFJldHVybiB0eXBlIChiaXRzKToKLSAgICAjIDAgLSBub3QgZWxmCi0gICAgIyAxIC0gRUxGCi0gICAgIyAyIC0gc3RyaXBwZWQKLSAgICAjIDQgLSBleGVjdXRhYmxlCi0gICAgIyA4IC0gc2hhcmVkIGxpYnJhcnkKLSAgICAjIDE2IC0ga2VybmVsIG1vZHVsZQotICAgIGRlZiBpc0VMRihwYXRoKToKLSAgICAgICAgdHlwZSA9IDAKLSAgICAgICAgcmV0LCByZXN1bHQgPSBvZS51dGlscy5nZXRzdGF0dXNvdXRwdXQoImZpbGUgXCIlc1wiIiAlIHBhdGgucmVwbGFjZSgiXCIiLCAiXFxcIiIpKQotCi0gICAgICAgIGlmIHJldDoKLSAgICAgICAgICAgIGJiLmVycm9yKCJzcGxpdF9hbmRfc3RyaXBfZmlsZXM6ICdmaWxlICVzJyBmYWlsZWQiICUgcGF0aCkKLSAgICAgICAgICAgIHJldHVybiB0eXBlCi0KLSAgICAgICAgIyBOb3Qgc3RyaXBwZWQKLSAgICAgICAgaWYgIkVMRiIgaW4gcmVzdWx0OgotICAgICAgICAgICAgdHlwZSB8PSAxCi0gICAgICAgICAgICBpZiAibm90IHN0cmlwcGVkIiBub3QgaW4gcmVzdWx0OgotICAgICAgICAgICAgICAgIHR5cGUgfD0gMgotICAgICAgICAgICAgaWYgImV4ZWN1dGFibGUiIGluIHJlc3VsdDoKLSAgICAgICAgICAgICAgICB0eXBlIHw9IDQKLSAgICAgICAgICAgIGlmICJzaGFyZWQiIGluIHJlc3VsdDoKLSAgICAgICAgICAgICAgICB0eXBlIHw9IDgKLSAgICAgICAgcmV0dXJuIHR5cGUKLQotCi0gICAgZWxmZmlsZXMgPSB7fQotICAgIGlub2RlcyA9IHt9Ci0gICAgbGliZGlyID0gb3MucGF0aC5hYnNwYXRoKGR2YXIgKyBvcy5zZXAgKyBkLmdldFZhcigibGliZGlyIikpCi0gICAgYmFzZWxpYmRpciA9IG9zLnBhdGguYWJzcGF0aChkdmFyICsgb3Muc2VwICsgZC5nZXRWYXIoImJhc2VfbGliZGlyIikpCi0gICAgaWYgKGQuZ2V0VmFyKCdJTkhJQklUX1NZU1JPT1RfU1RSSVAnKSAhPSAnMScpOgotICAgICAgICAjCi0gICAgICAgICMgRmlyc3QgbGV0cyBmaWd1cmUgb3V0IGFsbCBvZiB0aGUgZmlsZXMgd2UgbWF5IGhhdmUgdG8gcHJvY2VzcwotICAgICAgICAjCi0gICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKGR2YXIpOgotICAgICAgICAgICAgZm9yIGYgaW4gZmlsZXM6Ci0gICAgICAgICAgICAgICAgZmlsZSA9IG9zLnBhdGguam9pbihyb290LCBmKQotCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBsdGFyZ2V0ID0gb2UucGF0aC5yZWFscGF0aChmaWxlLCBkdmFyLCBGYWxzZSkKLSAgICAgICAgICAgICAgICAgICAgcyA9IG9zLmxzdGF0KGx0YXJnZXQpCi0gICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICAgICAgKGVyciwgc3RyZXJyb3IpID0gZS5hcmdzCi0gICAgICAgICAgICAgICAgICAgIGlmIGVyciAhPSBlcnJuby5FTk9FTlQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAgICAgICAgICAgICAjIFNraXAgYnJva2VuIHN5bWxpbmtzCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgaWYgbm90IHM6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgIyBDaGVjayBpdHMgYW4gZXhjdXRhYmxlCi0gICAgICAgICAgICAgICAgaWYgKHNbc3RhdC5TVF9NT0RFXSAmIHN0YXQuU19JWFVTUikgb3IgKHNbc3RhdC5TVF9NT0RFXSAmIHN0YXQuU19JWEdSUCkgb3IgKHNbc3RhdC5TVF9NT0RFXSAmIHN0YXQuU19JWE9USCkgXAotICAgICAgICAgICAgICAgICAgICAgICAgb3IgKChmaWxlLnN0YXJ0c3dpdGgobGliZGlyKSBvciBmaWxlLnN0YXJ0c3dpdGgoYmFzZWxpYmRpcikpIGFuZCAiLnNvIiBpbiBmKToKLSAgICAgICAgICAgICAgICAgICAgIyBJZiBpdCdzIGEgc3ltbGluaywgYW5kIHBvaW50cyB0byBhbiBFTEYgZmlsZSwgd2UgY2FwdHVyZSB0aGUgcmVhZGxpbmsgdGFyZ2V0Ci0gICAgICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNsaW5rKGZpbGUpOgotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICAgICAgICAgICAgICAjIEl0J3MgYSBmaWxlIChvciBoYXJkbGluayksIG5vdCBhIGxpbmsKLSAgICAgICAgICAgICAgICAgICAgIyAuLi5idXQgaXMgaXQgRUxGLCBhbmQgaXMgaXQgYWxyZWFkeSBzdHJpcHBlZD8KLSAgICAgICAgICAgICAgICAgICAgZWxmX2ZpbGUgPSBpc0VMRihmaWxlKQotICAgICAgICAgICAgICAgICAgICBpZiBlbGZfZmlsZSAmIDE6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBlbGZfZmlsZSAmIDI6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgJ2FscmVhZHktc3RyaXBwZWQnIGluIChkLmdldFZhcignSU5TQU5FX1NLSVBfJyArIHBuKSBvciAiIikuc3BsaXQoKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmIubm90ZSgiU2tpcHBpbmcgZmlsZSAlcyBmcm9tICVzIGZvciBhbHJlYWR5LXN0cmlwcGVkIFFBIHRlc3QiICUgKGZpbGVbbGVuKGR2YXIpOl0sIHBuKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYi53YXJuKCJGaWxlICclcycgZnJvbSAlcyB3YXMgYWxyZWFkeSBzdHJpcHBlZCwgdGhpcyB3aWxsIHByZXZlbnQgZnV0dXJlIGRlYnVnZ2luZyEiICUgKGZpbGVbbGVuKGR2YXIpOl0sIHBuKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBzLnN0X2lubyBpbiBpbm9kZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MudW5saW5rKGZpbGUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MubGluayhpbm9kZXNbcy5zdF9pbm9dLCBmaWxlKQotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbm9kZXNbcy5zdF9pbm9dID0gZmlsZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYnJlYWsgaGFyZGxpbmsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYi51dGlscy5jb3B5ZmlsZShmaWxlLCBmaWxlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZmZpbGVzW2ZpbGVdID0gZWxmX2ZpbGUKLQotICAgICAgICAjCi0gICAgICAgICMgTm93IHN0cmlwIHRoZW0gKGluIHBhcmFsbGVsKQotICAgICAgICAjCi0gICAgICAgIHN0cmlwID0gZC5nZXRWYXIoIlNUUklQIikKLSAgICAgICAgc2ZpbGVzID0gW10KLSAgICAgICAgZm9yIGZpbGUgaW4gZWxmZmlsZXM6Ci0gICAgICAgICAgICBlbGZfZmlsZSA9IGludChlbGZmaWxlc1tmaWxlXSkKLSAgICAgICAgICAgICNiYi5ub3RlKCJTdHJpcCAlcyIgJSBmaWxlKQotICAgICAgICAgICAgc2ZpbGVzLmFwcGVuZCgoZmlsZSwgZWxmX2ZpbGUsIHN0cmlwKSkKLQotICAgICAgICBvZS51dGlscy5tdWx0aXByb2Nlc3NfZXhlYyhzZmlsZXMsIG9lLnBhY2thZ2UucnVuc3RyaXApCisgICAgb2UucGFja2FnZS5zdHJpcF9leGVjcyhwbiwgZHN0ZGlyLCBzdHJpcF9jbWQsIGxpYmRpciwgYmFzZV9saWJkaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBxYV9hbHJlYWR5X3N0cmlwcGVkPXFhX2FscmVhZHlfc3RyaXBwZWQpCiB9CiAKIGRvX3BvcHVsYXRlX3N5c3Jvb3RbZGlyc10gPSAiJHtTWVNST09UX0RFU1RESVJ9IgpAQCAtMjU5LDYgKzE3Nyw3IEBACiBkZWYgc3RhZ2luZ19wb3B1bGF0ZV9zeXNyb290X2Rpcih0YXJnZXRzeXNyb290LCBuYXRpdmVzeXNyb290LCBuYXRpdmUsIGQpOgogICAgIGltcG9ydCBnbG9iCiAgICAgaW1wb3J0IHN1YnByb2Nlc3MKKyAgICBpbXBvcnQgZXJybm8KIAogICAgIGZpeG1lID0gW10KICAgICBwb3N0aW5zdHMgPSBbXQpAQCAtNDU0LDcgKzM3Myw4IEBACiAgICAgICAgICAgICAgICAgICAgIG1zZ2J1Zi5hcHBlbmQoIkZvbGxvd2luZyBkZXBlbmRlbmN5IG9uICVzIiAlIHNldHNjZW5lZGVwc1tkYXRhZGVwXVswXSkKICAgICAgICAgbmV4dCA9IG5ldwogCi0gICAgYmIubm90ZSgiXG4iLmpvaW4obXNnYnVmKSkKKyAgICAjIFRoaXMgbG9nZ2luZyBpcyB0b28gdmVyYm9zZSBmb3IgZGF5IHRvIGRheSB1c2Ugc2FkbHkKKyAgICAjYmIuZGVidWcoMiwgIlxuIi5qb2luKG1zZ2J1ZikpCiAKICAgICBkZXBkaXIgPSByZWNpcGVzeXNyb290bmF0aXZlICsgIi9pbnN0YWxsZWRkZXBzIgogICAgIGJiLnV0aWxzLm1rZGlyaGllcihkZXBkaXIpCkBAIC00NjksNiArMzg5LDggQEAKICAgICBwb3N0aW5zdHMgPSBbXQogICAgIG11bHRpbGlicyA9IHt9CiAgICAgbWFuaWZlc3RzID0ge30KKyAgICAjIEFsbCBmaWxlcyB0aGF0IHdlJ3JlIGdvaW5nIHRvIGJlIGluc3RhbGxpbmcsIHRvIGZpbmQgY29uZmxpY3RzLgorICAgIGZpbGVzZXQgPSB7fQogCiAgICAgZm9yIGYgaW4gb3MubGlzdGRpcihkZXBkaXIpOgogICAgICAgICBpZiBub3QgZi5lbmRzd2l0aCgiLmNvbXBsZXRlIik6CkBAIC01MjEsNiArNDQzLDggQEAKICAgICAgICAgICAgIG9zLnVubGluayhmbCkKICAgICAgICAgICAgIG9zLnVubGluayhmbCArICIuY29tcGxldGUiKQogCisgICAgbXNnX2V4aXN0cyA9IFtdCisgICAgbXNnX2FkZGluZyA9IFtdCiAgICAgZm9yIGRlcCBpbiBjb25maWd1cmVkZXBzOgogICAgICAgICBjID0gc2V0c2NlbmVkZXBzW2RlcF1bMF0KICAgICAgICAgaWYgYyBub3QgaW4gaW5zdGFsbGVkOgpAQCAtNTMxLDcgKzQ1NSw3IEBACiAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGRlcGRpciArICIvIiArIGMpOgogICAgICAgICAgICAgbG5rID0gb3MucmVhZGxpbmsoZGVwZGlyICsgIi8iICsgYykKICAgICAgICAgICAgIGlmIGxuayA9PSBjICsgIi4iICsgdGFza2hhc2ggYW5kIG9zLnBhdGguZXhpc3RzKGRlcGRpciArICIvIiArIGMgKyAiLmNvbXBsZXRlIik6Ci0gICAgICAgICAgICAgICAgYmIubm90ZSgiJXMgZXhpc3RzIGluIHN5c3Jvb3QsIHNraXBwaW5nIiAlIGMpCisgICAgICAgICAgICAgICAgbXNnX2V4aXN0cy5hcHBlbmQoYykKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBiYi5ub3RlKCIlcyBleGlzdHMgaW4gc3lzcm9vdCwgYnV0IGlzIHN0YWxlICglcyB2cy4gJXMpLCByZW1vdmluZy4iICUgKGMsIGxuaywgYyArICIuIiArIHRhc2toYXNoKSkKQEAgLTU0Miw2ICs0NjYsOCBAQAogICAgICAgICBlbGlmIG9zLnBhdGgubGV4aXN0cyhkZXBkaXIgKyAiLyIgKyBjKToKICAgICAgICAgICAgIG9zLnVubGluayhkZXBkaXIgKyAiLyIgKyBjKQogCisgICAgICAgIG1zZ19hZGRpbmcuYXBwZW5kKGMpCisKICAgICAgICAgb3Muc3ltbGluayhjICsgIi4iICsgdGFza2hhc2gsIGRlcGRpciArICIvIiArIGMpCiAKICAgICAgICAgZDIgPSBkCkBAIC01OTUsOCArNTIxLDE5IEBACiAgICAgICAgICAgICAgICAgICAgIGlmIGwuZW5kc3dpdGgoIi9maXhtZXBhdGguY21kIik6CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgICBkZXN0ID0gbC5yZXBsYWNlKHN0YWdpbmdkaXIsICIiKQotICAgICAgICAgICAgICAgICAgICBkZXN0ID0gdGFyZ2V0ZGlyICsgIi8iICsgIi8iLmpvaW4oZGVzdC5zcGxpdCgiLyIpWzM6XSkKLSAgICAgICAgICAgICAgICAgICAgbmV3bWFuaWZlc3RbbF0gPSBkZXN0CisgICAgICAgICAgICAgICAgICAgIGRlc3QgPSAiLyIgKyAiLyIuam9pbihkZXN0LnNwbGl0KCIvIilbMzpdKQorICAgICAgICAgICAgICAgICAgICBuZXdtYW5pZmVzdFtsXSA9IHRhcmdldGRpciArIGRlc3QKKworICAgICAgICAgICAgICAgICAgICAjIENoZWNrIGlmIGZpbGVzIGhhdmUgYWxyZWFkeSBiZWVuIGluc3RhbGxlZCBieSBhbm90aGVyCisgICAgICAgICAgICAgICAgICAgICMgcmVjaXBlIGFuZCBhYm9ydCBpZiB0aGV5IGhhdmUsIGV4cGxhaW5pbmcgd2hhdCByZWNpcGVzIGFyZQorICAgICAgICAgICAgICAgICAgICAjIGNvbmZsaWN0aW5nLgorICAgICAgICAgICAgICAgICAgICBoYXNobmFtZSA9IHRhcmdldGRpciArIGRlc3QKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGhhc2huYW1lLmVuZHN3aXRoKCIvIik6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBoYXNobmFtZSBpbiBmaWxlc2V0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJiLmZhdGFsKCJUaGUgZmlsZSAlcyBpcyBpbnN0YWxsZWQgYnkgYm90aCAlcyBhbmQgJXMsIGFib3J0aW5nIiAlIChkZXN0LCBjLCBmaWxlc2V0W2hhc2huYW1lXSkpCisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzZXRbaGFzaG5hbWVdID0gYworCiAgICAgICAgICAgICAjIEhhdmluZyBtdWx0aXBsZSBpZGVudGljYWwgbWFuaWZlc3RzIGluIGVhY2ggc3lzcm9vdCBlYXRzIGRpc2tzcGFjZSBzbwogICAgICAgICAgICAgIyBjcmVhdGUgYSBzaGFyZWQgcG9vbCBvZiB0aGVtIGFuZCBoYXJkbGluayBpZiB3ZSBjYW4uCiAgICAgICAgICAgICAjIFdlIGNyZWF0ZSB0aGUgbWFuaWZlc3QgaW4gYWR2YW5jZSBzbyB0aGF0IGlmIHNvbWV0aGluZyBmYWlscyBkdXJpbmcgaW5zdGFsbGF0aW9uLApAQCAtNjI3LDYgKzU2NCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgICBzdGFnaW5nX2NvcHlmaWxlKGwsIHRhcmdldGRpciwgZGVzdCwgcG9zdGluc3RzLCBzZWVuZGlycykKIAorICAgIGJiLm5vdGUoIkluc3RhbGxlZCBpbnRvIHN5c3Jvb3Q6ICVzIiAlIHN0cihtc2dfYWRkaW5nKSkKKyAgICBiYi5ub3RlKCJTa2lwcGluZyBhcyBhbHJlYWR5IGV4aXN0cyBpbiBzeXNyb290OiAlcyIgJSBzdHIobXNnX2V4aXN0cykpCisKICAgICBmb3IgZiBpbiBmaXhtZToKICAgICAgICAgaWYgZiA9PSAnJzoKICAgICAgICAgICAgIHN0YWdpbmdfcHJvY2Vzc2ZpeG1lKGZpeG1lW2ZdLCByZWNpcGVzeXNyb290LCByZWNpcGVzeXNyb290LCByZWNpcGVzeXNyb290bmF0aXZlLCBkKQpAQCAtNjU4LDYgKzU5OCw5IEBACiAjIENsZWFuIG91dCB0aGUgcmVjaXBlIHNwZWNpZmljIHN5c3Jvb3RzIGJlZm9yZSBkb19mZXRjaAogIyAodXNlIGEgcHJlZnVuYyBzbyB3ZSBjYW4gb3JkZXIgYmVmb3JlIGV4dGVuZF9yZWNpcGVfc3lzcm9vdCBpZiBpdCBnZXRzIGFkZGVkKQogcHl0aG9uIGNsZWFuX3JlY2lwZV9zeXNyb290KCkgeworICAgICMgV2UgcmVtb3ZlIHRoZXNlIHN0YW1wcyBzaW5jZSB3ZSdyZSByZW1vdmluZyBhbnkgY29udGVudCB0aGV5J2QgaGF2ZSBhZGRlZCB3aXRoCisgICAgIyBjbGVhbmRpcnMuIFRoaXMgcmVtb3ZlcyB0aGUgc2lnZGF0YSB0b28sIGxpa2VseSBub3QgYSBiaWcgZGVhbCwKKyAgICBvZS5wYXRoLnJlbW92ZShkLmdldFZhcigiU1RBTVAiKSArICIqYWRkdG9fcmVjaXBlX3N5c3Jvb3QqIikKICAgICByZXR1cm4KIH0KIGNsZWFuX3JlY2lwZV9zeXNyb290W2NsZWFuZGlyc10gKz0gIiR7UkVDSVBFX1NZU1JPT1R9ICR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfSIKQEAgLTY3Miw0ICs2MTUsMyBAQAogfQogc3RhZ2luZ190YXNraGFuZGxlcltldmVudG1hc2tdID0gImJiLmV2ZW50LlJlY2lwZVRhc2tQcmVQcm9jZXNzIgogYWRkaGFuZGxlciBzdGFnaW5nX3Rhc2toYW5kbGVyCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc3lzdGVtZC1ib290LmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3N5c3RlbWQtYm9vdC5iYmNsYXNzCmluZGV4IDk1OTc3NTkuLjkzNzMwNzAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc3lzdGVtZC1ib290LmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy9zeXN0ZW1kLWJvb3QuYmJjbGFzcwpAQCAtNywxMCArNyw5IEBACiAjICAgICAgICAgICAgICAgICAgICAgICAgbWFpbnRlbmFuY2UuCiAjCiAjIFNldCBFRklfUFJPVklERVIgPSAic3lzdGVtZC1ib290IiB0byB1c2Ugc3lzdGVtZC1ib290IG9uIHlvdXIgbGl2ZSBpbWFnZXMgaW5zdGVhZCBvZiBncnViLWVmaQotIyAoaW1hZ2VzIGJ1aWx0IGJ5IGltYWdlLWxpdmUuYmJjbGFzcyBvciBpbWFnZS12bS5iYmNsYXNzKQorIyAoaW1hZ2VzIGJ1aWx0IGJ5IGltYWdlLWxpdmUuYmJjbGFzcykKIAogZG9fYm9vdGltZ1tkZXBlbmRzXSArPSAiJHtNTFBSRUZJWH1zeXN0ZW1kLWJvb3Q6ZG9fZGVwbG95IgotZG9fYm9vdGRpcmVjdGRpc2tbZGVwZW5kc10gKz0gIiR7TUxQUkVGSVh9c3lzdGVtZC1ib290OmRvX2RlcGxveSIKIAogRUZJRElSID0gIi9FRkkvQk9PVCIKIApAQCAtMTAwLDYgKzk5LDggQEAKICAgICAgICAgICAgIGJiLmZhdGFsKCdPVkVSUklERVMgbm90IGRlZmluZWQnKQogCiAgICAgICAgIGVudHJ5ZmlsZSA9ICIlcy8lcy5jb25mIiAlIChzLCBsYWJlbCkKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHMpOgorICAgICAgICAgICAgb3MubWFrZWRpcnMocykKICAgICAgICAgZC5hcHBlbmRWYXIoIlNZU1RFTURfQk9PVF9FTlRSSUVTIiwgIiAiICsgZW50cnlmaWxlKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBlbnRyeWNmZyA9IG9wZW4oZW50cnlmaWxlLCAidyIpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3N5c3RlbWQuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc3lzdGVtZC5iYmNsYXNzCmluZGV4IGM0YjRiYjkuLjFiMTM0MzIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc3lzdGVtZC5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvc3lzdGVtZC5iYmNsYXNzCkBAIC0xNTQsOCArMTU0LDEwIEBACiAgICAgICAgICAgICAgICAgIyBEZWFsIHdpdGggYWRkaW5nLCBmb3IgZXhhbXBsZSwgJ2lmcGx1Z2RAZXRoMC5zZXJ2aWNlJyBmcm9tCiAgICAgICAgICAgICAgICAgIyAnaWZwbHVnZEAuc2VydmljZScKICAgICAgICAgICAgICAgICBiYXNlID0gTm9uZQotICAgICAgICAgICAgICAgIGlmIHNlcnZpY2UuZmluZCgnQCcpICE9IC0xOgotICAgICAgICAgICAgICAgICAgICBiYXNlID0gcmUuc3ViKCdAW14uXSsuJywgJ0AuJywgc2VydmljZSkKKyAgICAgICAgICAgICAgICBhdCA9IHNlcnZpY2UuZmluZCgnQCcpCisgICAgICAgICAgICAgICAgaWYgYXQgIT0gLTE6CisgICAgICAgICAgICAgICAgICAgIGV4dCA9IHNlcnZpY2UucmZpbmQoJy4nKQorICAgICAgICAgICAgICAgICAgICBiYXNlID0gc2VydmljZVs6YXRdICsgJ0AnICsgc2VydmljZVtleHQ6XQogCiAgICAgICAgICAgICAgICAgZm9yIHBhdGggaW4gc2VhcmNocGF0aHM6CiAgICAgICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG9lLnBhdGguam9pbihkLmdldFZhcigiRCIpLCBwYXRoLCBzZXJ2aWNlKSk6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Rlc3RleHBvcnQuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdGVzdGV4cG9ydC5iYmNsYXNzCmluZGV4IDU2ZWRkYTkuLmQwNzBmMDcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdGVzdGV4cG9ydC5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdGVzdGV4cG9ydC5iYmNsYXNzCkBAIC0xMTMsNyArMTEzLDcgQEAKICAgICBvZS5wYXRoLnJlbW92ZShjYXNlc19wYXRoKQogICAgIGJiLnV0aWxzLm1rZGlyaGllcihjYXNlc19wYXRoKQogICAgIHRlc3RfcGF0aHMgPSBnZXRfcnVudGltZV9wYXRocyhkKQotICAgIHRlc3RfbW9kdWxlcyA9IGQuZ2V0VmFyKCdURVNUX1NVSVRFUycpCisgICAgdGVzdF9tb2R1bGVzID0gZC5nZXRWYXIoJ1RFU1RfU1VJVEVTJykuc3BsaXQoKQogICAgIHRjLmxvYWRUZXN0cyh0ZXN0X3BhdGhzLCBtb2R1bGVzPXRlc3RfbW9kdWxlcykKICAgICBmb3IgZiBpbiBnZXRTdWl0ZUNhc2VzRmlsZXModGMuc3VpdGVzKToKICAgICAgICAgc2h1dGlsLmNvcHkyKGYsIGNhc2VzX3BhdGgpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Rlc3RpbWFnZS5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy90ZXN0aW1hZ2UuYmJjbGFzcwppbmRleCBmYjIxNDYwLi40NWJiMmJkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Rlc3RpbWFnZS5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdGVzdGltYWdlLmJiY2xhc3MKQEAgLTcsMTMgKzcsMTMgQEAKICMgTW9zdCBvZiB0aGUgdGVzdHMgYXJlIGNvbW1hbmRzIHJ1biBvbiB0YXJnZXQgaW1hZ2Ugb3ZlciBzc2guCiAjIFRvIHVzZSBpdCBhZGQgdGVzdGltYWdlIHRvIGdsb2JhbCBpbmhlcml0IGFuZCBjYWxsIHlvdXIgdGFyZ2V0IGltYWdlIHdpdGggLWMgdGVzdGltYWdlCiAjIFlvdSBjYW4gdHJ5IGl0IG91dCBsaWtlIHRoaXM6Ci0jIC0gZmlyc3QgYnVpbGQgYSBxZW11IGNvcmUtaW1hZ2Utc2F0bwotIyAtIGFkZCBJTUFHRV9DTEFTU0VTICs9ICJ0ZXN0aW1hZ2UiIGluIGxvY2FsLmNvbmYKKyMgLSBmaXJzdCBhZGQgSU1BR0VfQ0xBU1NFUyArPSAidGVzdGltYWdlIiBpbiBsb2NhbC5jb25mCisjIC0gYnVpbGQgYSBxZW11IGNvcmUtaW1hZ2Utc2F0bwogIyAtIHRoZW4gYml0YmFrZSBjb3JlLWltYWdlLXNhdG8gLWMgdGVzdGltYWdlLiBUaGF0IHdpbGwgcnVuIGEgc3RhbmRhcmQgc3VpdGUgb2YgdGVzdHMuCiAKICMgWW91IGNhbiBzZXQgKG9yIGFwcGVuZCB0bykgVEVTVF9TVUlURVMgaW4gbG9jYWwuY29uZiB0byBzZWxlY3QgdGhlIHRlc3RzCiAjIHdoaWNoIHlvdSB3YW50IHRvIHJ1biBmb3IgeW91ciB0YXJnZXQuCi0jIFRoZSB0ZXN0IG5hbWVzIGFyZSB0aGUgbW9kdWxlIG5hbWVzIGluIG1ldGEvbGliL29lcWEvcnVudGltZS4KKyMgVGhlIHRlc3QgbmFtZXMgYXJlIHRoZSBtb2R1bGUgbmFtZXMgaW4gbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzLgogIyBFYWNoIG5hbWUgaW4gVEVTVF9TVUlURVMgcmVwcmVzZW50cyBhIHJlcXVpcmVkIHRlc3QgZm9yIHRoZSBpbWFnZS4gKG5vIHNraXBwaW5nIGFsbG93ZWQpCiAjIEFwcGVuZGluZyAiYXV0byIgbWVhbnMgdGhhdCBpdCB3aWxsIHRyeSB0byBydW4gYWxsIHRlc3RzIHRoYXQgYXJlIHN1aXRhYmxlIGZvciB0aGUgaW1hZ2UgKGVhY2ggdGVzdCBkZWNpZGVzIHRoYXQgb24gaXQncyBvd24pLgogIyBOb3RlIHRoYXQgb3JkZXIgaW4gVEVTVF9TVUlURVMgaXMgcmVsZXZhbnQ6IHRlc3RzIGFyZSBydW4gaW4gYW4gb3JkZXIgc3VjaCB0aGF0CkBAIC00OSwxMCArNDksMTAgQEAKIERFRkFVTFRfVEVTVF9TVUlURVNfcG4tY29yZS1pbWFnZS1sc2IgPSAiJHtORVRURVNUU1VJVEV9IHBhbSBwYXJzZWxvZ3MgJHtSUE1URVNUU1VJVEV9IgogREVGQVVMVF9URVNUX1NVSVRFU19wbi1jb3JlLWltYWdlLXNhdG8gPSAiJHtORVRURVNUU1VJVEV9IGNvbm5tYW4geG9yZyBwYXJzZWxvZ3MgJHtSUE1URVNUU1VJVEV9IFwKICAgICAke0BiYi51dGlscy5jb250YWlucygnSU1BR0VfUEtHVFlQRScsICdycG0nLCAncHl0aG9uJywgJycsIGQpfSIKLURFRkFVTFRfVEVTVF9TVUlURVNfcG4tY29yZS1pbWFnZS1zYXRvLXNkayA9ICIke05FVFRFU1RTVUlURX0gYnVpbGRjcGlvIGJ1aWxkaXB0YWJsZXMgYnVpbGRnYWxjdWxhdG9yIFwKK0RFRkFVTFRfVEVTVF9TVUlURVNfcG4tY29yZS1pbWFnZS1zYXRvLXNkayA9ICIke05FVFRFU1RTVUlURX0gYnVpbGRjcGlvIGJ1aWxkbHppcCBidWlsZGdhbGN1bGF0b3IgXAogICAgIGNvbm5tYW4gJHtERVZURVNUU1VJVEV9IGxvZ3JvdGF0ZSBwZXJsIHBhcnNlbG9ncyBweXRob24gJHtSUE1URVNUU1VJVEV9IHhvcmciCiBERUZBVUxUX1RFU1RfU1VJVEVTX3BuLWNvcmUtaW1hZ2UtbHNiLWRldiA9ICIke05FVFRFU1RTVUlURX0gcGFtIHBlcmwgcHl0aG9uIHBhcnNlbG9ncyAke1JQTVRFU1RTVUlURX0iCi1ERUZBVUxUX1RFU1RfU1VJVEVTX3BuLWNvcmUtaW1hZ2UtbHNiLXNkayA9ICIke05FVFRFU1RTVUlURX0gYnVpbGRjcGlvIGJ1aWxkaXB0YWJsZXMgYnVpbGRnYWxjdWxhdG9yIFwKK0RFRkFVTFRfVEVTVF9TVUlURVNfcG4tY29yZS1pbWFnZS1sc2Itc2RrID0gIiR7TkVUVEVTVFNVSVRFfSBidWlsZGNwaW8gYnVpbGRsemlwIGJ1aWxkZ2FsY3VsYXRvciBcCiAgICAgY29ubm1hbiAke0RFVlRFU1RTVUlURX0gbG9ncm90YXRlIHBhbSBwYXJzZWxvZ3MgcGVybCBweXRob24gJHtSUE1URVNUU1VJVEV9IgogREVGQVVMVF9URVNUX1NVSVRFU19wbi1tZXRhLXRvb2xjaGFpbiA9ICJhdXRvIgogCkBAIC02MSw3ICs2MSw3IEBACiAKICMgcWVtdW1pcHMgaXMgcXVpdGUgc2xvdyBhbmQgaGFzIHJlYWNoZWQgdGhlIHRpbWVvdXQgbGltaXQgc2V2ZXJhbCB0aW1lcyBvbiB0aGUgWVAgYnVpbGQgY2x1c3RlciwKICMgbWl0aWdhdGUgdGhpcyBieSByZW1vdmluZyBidWlsZCB0ZXN0cyBmb3IgcWVtdW1pcHMgbWFjaGluZXMuCi1NSVBTUkVNT1ZFID8/PSAiYnVpbGRjcGlvIGJ1aWxkaXB0YWJsZXMgYnVpbGRnYWxjdWxhdG9yIgorTUlQU1JFTU9WRSA/Pz0gImJ1aWxkY3BpbyBidWlsZGx6aXAgYnVpbGRnYWxjdWxhdG9yIgogREVGQVVMVF9URVNUX1NVSVRFU19yZW1vdmVfcWVtdW1pcHMgPSAiJHtNSVBTUkVNT1ZFfSIKIERFRkFVTFRfVEVTVF9TVUlURVNfcmVtb3ZlX3FlbXVtaXBzNjQgPSAiJHtNSVBTUkVNT1ZFfSIKIApAQCAtMjQ4LDcgKzI0OCw3IEBACiAKICAgICAjIHRoZSByb2JvdCBkYW5jZQogICAgIHRhcmdldCA9IE9FUnVudGltZVRlc3RDb250ZXh0RXhlY3V0b3IuZ2V0VGFyZ2V0KAotICAgICAgICBkLmdldFZhcigiVEVTVF9UQVJHRVQiKSwgTm9uZSwgZC5nZXRWYXIoIlRFU1RfVEFSR0VUX0lQIiksCisgICAgICAgIGQuZ2V0VmFyKCJURVNUX1RBUkdFVCIpLCBsb2dnZXIsIGQuZ2V0VmFyKCJURVNUX1RBUkdFVF9JUCIpLAogICAgICAgICBkLmdldFZhcigiVEVTVF9TRVJWRVJfSVAiKSwgKip0YXJnZXRfa3dhcmdzKQogCiAgICAgIyB0ZXN0IGNvbnRleHQKQEAgLTI1Nyw3ICsyNTcsNyBAQAogCiAgICAgIyBMb2FkIHRlc3RzIGJlZm9yZSBzdGFydGluZyB0aGUgdGFyZ2V0CiAgICAgdGVzdF9wYXRocyA9IGdldF9ydW50aW1lX3BhdGhzKGQpCi0gICAgdGVzdF9tb2R1bGVzID0gZC5nZXRWYXIoJ1RFU1RfU1VJVEVTJykKKyAgICB0ZXN0X21vZHVsZXMgPSBkLmdldFZhcignVEVTVF9TVUlURVMnKS5zcGxpdCgpCiAgICAgdGMubG9hZFRlc3RzKHRlc3RfcGF0aHMsIG1vZHVsZXM9dGVzdF9tb2R1bGVzKQogCiAgICAgaWYgbm90IGdldFN1aXRlQ2FzZXModGMuc3VpdGVzKToKQEAgLTI5MSwxMSArMjkxLDExIEBACiAKICAgICAjIFNob3cgcmVzdWx0cyAoaWYgd2UgaGF2ZSB0aGVtKQogICAgIGlmIG5vdCByZXN1bHRzOgotICAgICAgICBiYi5mYXRhbCgnJXMgLSBGQUlMRUQgLSB0ZXN0cyB3ZXJlIGludGVycnVwdGVkIGR1cmluZyBleGVjdXRpb24nICUgcG4pCi0gICAgdGMubG9nU3VtbWFyeShyZXN1bHRzLCBwbikKLSAgICB0Yy5sb2dEZXRhaWxzKCkKKyAgICAgICAgYmIuZmF0YWwoJyVzIC0gRkFJTEVEIC0gdGVzdHMgd2VyZSBpbnRlcnJ1cHRlZCBkdXJpbmcgZXhlY3V0aW9uJyAlIHBuLCBmb3JjZWxvZz1UcnVlKQorICAgIHJlc3VsdHMubG9nRGV0YWlscygpCisgICAgcmVzdWx0cy5sb2dTdW1tYXJ5KHBuKQogICAgIGlmIG5vdCByZXN1bHRzLndhc1N1Y2Nlc3NmdWwoKToKLSAgICAgICAgYmIuZmF0YWwoJyVzIC0gRkFJTEVEIC0gY2hlY2sgdGhlIHRhc2sgbG9nIGFuZCB0aGUgc3NoIGxvZycgJSBwbikKKyAgICAgICAgYmIuZmF0YWwoJyVzIC0gRkFJTEVEIC0gY2hlY2sgdGhlIHRhc2sgbG9nIGFuZCB0aGUgc3NoIGxvZycgJSBwbiwgZm9yY2Vsb2c9VHJ1ZSkKIAogZGVmIGdldF9ydW50aW1lX3BhdGhzKGQpOgogICAgICIiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy90ZXN0c2RrLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Rlc3RzZGsuYmJjbGFzcwppbmRleCA2YTIwMWFhLi42YjUxYTMzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Rlc3RzZGsuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Rlc3RzZGsuYmJjbGFzcwpAQCAtMjEsMTAgKzIxLDExIEBACiAgICAgaW1wb3J0IGxvZ2dpbmcKIAogICAgIGZyb20gYmIudXRpbHMgaW1wb3J0IGV4cG9ydF9wcm94aWVzCi0gICAgZnJvbSBvZXFhLmNvcmUucnVubmVyIGltcG9ydCBPRVN0cmVhbUxvZ2dlcgogICAgIGZyb20gb2VxYS5zZGsuY29udGV4dCBpbXBvcnQgT0VTREtUZXN0Q29udGV4dCwgT0VTREtUZXN0Q29udGV4dEV4ZWN1dG9yCiAgICAgZnJvbSBvZXFhLnV0aWxzIGltcG9ydCBtYWtlX2xvZ2dlcl9iaXRiYWtlX2NvbXBhdGlibGUKIAorICAgIGJiLmV2ZW50LmVuYWJsZV90aHJlYWRsb2NrKCkKKwogICAgIHBuID0gZC5nZXRWYXIoIlBOIikKICAgICBsb2dnZXIgPSBtYWtlX2xvZ2dlcl9iaXRiYWtlX2NvbXBhdGlibGUobG9nZ2luZy5nZXRMb2dnZXIoIkJpdEJha2UiKSkKIApAQCAtNzEsOCArNzIsOCBAQAogICAgICAgICBjb21wb25lbnQgPSAiJXMgJXMiICUgKHBuLCBPRVNES1Rlc3RDb250ZXh0RXhlY3V0b3IubmFtZSkKICAgICAgICAgY29udGV4dF9tc2cgPSAiJXM6JXMiICUgKG9zLnBhdGguYmFzZW5hbWUodGNuYW1lKSwgb3MucGF0aC5iYXNlbmFtZShzZGtfZW52KSkKIAotICAgICAgICB0Yy5sb2dTdW1tYXJ5KHJlc3VsdCwgY29tcG9uZW50LCBjb250ZXh0X21zZykKLSAgICAgICAgdGMubG9nRGV0YWlscygpCisgICAgICAgIHJlc3VsdC5sb2dEZXRhaWxzKCkKKyAgICAgICAgcmVzdWx0LmxvZ1N1bW1hcnkoY29tcG9uZW50LCBjb250ZXh0X21zZykKIAogICAgICAgICBpZiBub3QgcmVzdWx0Lndhc1N1Y2Nlc3NmdWwoKToKICAgICAgICAgICAgIGZhaWwgPSBUcnVlCkBAIC05OCw2ICs5OSw4IEBACiAgICAgZnJvbSBvZXFhLnV0aWxzIGltcG9ydCBhdm9pZF9wYXRoc19pbl9lbnZpcm9uLCBtYWtlX2xvZ2dlcl9iaXRiYWtlX2NvbXBhdGlibGUsIHN1YnByb2Nlc3N0d2VhawogICAgIGZyb20gb2VxYS5zZGtleHQuY29udGV4dCBpbXBvcnQgT0VTREtFeHRUZXN0Q29udGV4dCwgT0VTREtFeHRUZXN0Q29udGV4dEV4ZWN1dG9yCiAKKyAgICBiYi5ldmVudC5lbmFibGVfdGhyZWFkbG9jaygpCisKICAgICBwbiA9IGQuZ2V0VmFyKCJQTiIpCiAgICAgbG9nZ2VyID0gbWFrZV9sb2dnZXJfYml0YmFrZV9jb21wYXRpYmxlKGxvZ2dpbmcuZ2V0TG9nZ2VyKCJCaXRCYWtlIikpCiAKQEAgLTE3Myw4ICsxNzYsOCBAQAogICAgICAgICBjb21wb25lbnQgPSAiJXMgJXMiICUgKHBuLCBPRVNES0V4dFRlc3RDb250ZXh0RXhlY3V0b3IubmFtZSkKICAgICAgICAgY29udGV4dF9tc2cgPSAiJXM6JXMiICUgKG9zLnBhdGguYmFzZW5hbWUodGNuYW1lKSwgb3MucGF0aC5iYXNlbmFtZShzZGtfZW52KSkKIAotICAgICAgICB0Yy5sb2dTdW1tYXJ5KHJlc3VsdCwgY29tcG9uZW50LCBjb250ZXh0X21zZykKLSAgICAgICAgdGMubG9nRGV0YWlscygpCisgICAgICAgIHJlc3VsdC5sb2dEZXRhaWxzKCkKKyAgICAgICAgcmVzdWx0LmxvZ1N1bW1hcnkoY29tcG9uZW50LCBjb250ZXh0X21zZykKIAogICAgICAgICBpZiBub3QgcmVzdWx0Lndhc1N1Y2Nlc3NmdWwoKToKICAgICAgICAgICAgIGZhaWwgPSBUcnVlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Rvb2xjaGFpbi1zY3JpcHRzLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Rvb2xjaGFpbi1zY3JpcHRzLmJiY2xhc3MKaW5kZXggMjYwZWNlOS4uOWJjZmU3MCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy90b29sY2hhaW4tc2NyaXB0cy5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdG9vbGNoYWluLXNjcmlwdHMuYmJjbGFzcwpAQCAtMyw3ICszLDYgQEAKICMgV2Ugd2FudCB0byBiZSBhYmxlIHRvIGNoYW5nZSB0aGUgdmFsdWUgb2YgTVVMVElNQUNIX1RBUkdFVF9TWVMsIGJlY2F1c2UgaXQKICMgZG9lc24ndCBhbHdheXMgbWF0Y2ggb3VyIGV4cGVjdGF0aW9ucy4uLiBidXQgd2UgZGVmYXVsdCB0byB0aGUgc3RvY2sgdmFsdWUKIFJFQUxfTVVMVElNQUNIX1RBUkdFVF9TWVMgPz0gIiR7TVVMVElNQUNIX1RBUkdFVF9TWVN9IgotVEFSR0VUX0NDX0FSQ0hfYXBwZW5kX2xpYmMtdWNsaWJjID0gIiAtbXVjbGliYyIKIFRBUkdFVF9DQ19BUkNIX2FwcGVuZF9saWJjLW11c2wgPSAiIC1tbXVzbCIKIAogIyBkZWZhdWx0IGRlYnVnIHByZWZpeCBtYXAgaXNuJ3QgdmFsaWQgaW4gdGhlIFNESwpAQCAtMjUsNiArMjQsMjEgQEAKIAlzY3JpcHQ9JHsxOi0ke1NES19PVVRQVVR9LyR7U0RLUEFUSH0vZW52aXJvbm1lbnQtc2V0dXAtJG11bHRpbWFjaF90YXJnZXRfc3lzfQogCXJtIC1mICRzY3JpcHQKIAl0b3VjaCAkc2NyaXB0CisKKwllY2hvICcjIENoZWNrIGZvciBMRF9MSUJSQVJZX1BBVEggYmVpbmcgc2V0LCB3aGljaCBjYW4gYnJlYWsgU0RLIGFuZCBnZW5lcmFsbHkgaXMgYSBiYWQgcHJhY3RpY2UnID4+ICRzY3JpcHQKKwllY2hvICcjIGh0dHA6Ly90bGRwLm9yZy9IT1dUTy9Qcm9ncmFtLUxpYnJhcnktSE9XVE8vc2hhcmVkLWxpYnJhcmllcy5odG1sI0FFTjgwJyA+PiAkc2NyaXB0CisJZWNobyAnIyBodHRwOi8veGFobGVlLmluZm8vVW5peFJlc291cmNlX2Rpci9fL2xkcGF0aC5odG1sJyA+PiAkc2NyaXB0CisJZWNobyAnIyBPbmx5IGRpc2FibGUgdGhpcyBjaGVjayBpZiB5b3UgYXJlIGFic29sdXRlbHkga25vdyB3aGF0IHlvdSBhcmUgZG9pbmchJyA+PiAkc2NyaXB0CisJZWNobyAnaWYgWyAhIC16ICIkTERfTElCUkFSWV9QQVRIIiBdOyB0aGVuJyA+PiAkc2NyaXB0CisJZWNobyAiICAgIGVjaG8gXCJZb3VyIGVudmlyb25tZW50IGlzIG1pc2NvbmZpZ3VyZWQsIHlvdSBwcm9iYWJseSBuZWVkIHRvICd1bnNldCBMRF9MSUJSQVJZX1BBVEgnXCIiID4+ICRzY3JpcHQKKwllY2hvICIgICAgZWNobyBcImJ1dCBwbGVhc2UgY2hlY2sgd2h5IHRoaXMgd2FzIHNldCBpbiB0aGUgZmlyc3QgcGxhY2UgYW5kIHRoYXQgaXQncyBzYWZlIHRvIHVuc2V0LlwiIiA+PiAkc2NyaXB0CisJZWNobyAnICAgIGVjaG8gIlRoZSBTREsgd2lsbCBub3Qgb3BlcmF0ZSBjb3JyZWN0bHkgaW4gbW9zdCBjYXNlcyB3aGVuIExEX0xJQlJBUllfUEFUSCBpcyBzZXQuIicgPj4gJHNjcmlwdAorCWVjaG8gJyAgICBlY2hvICJGb3IgbW9yZSByZWZlcmVuY2VzIHNlZToiJyA+PiAkc2NyaXB0CisJZWNobyAnICAgIGVjaG8gIiAgaHR0cDovL3RsZHAub3JnL0hPV1RPL1Byb2dyYW0tTGlicmFyeS1IT1dUTy9zaGFyZWQtbGlicmFyaWVzLmh0bWwjQUVOODAiJyA+PiAkc2NyaXB0CisJZWNobyAnICAgIGVjaG8gIiAgaHR0cDovL3hhaGxlZS5pbmZvL1VuaXhSZXNvdXJjZV9kaXIvXy9sZHBhdGguaHRtbCInID4+ICRzY3JpcHQKKwllY2hvICcgICAgcmV0dXJuIDEnID4+ICRzY3JpcHQKKwllY2hvICdmaScgPj4gJHNjcmlwdAorCiAJZWNobyAnZXhwb3J0IFNES1RBUkdFVFNZU1JPT1Q9JyIkc3lzcm9vdCIgPj4gJHNjcmlwdAogCUVYVFJBUEFUSD0iIgogCWZvciBpIGluICR7Q0FOQURJQU5FWFRSQU9TfTsgZG8KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdWJvb3QtY29uZmlnLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Vib290LWNvbmZpZy5iYmNsYXNzCmluZGV4IDEwMDEzYjcuLjUzM2UxNzUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdWJvb3QtY29uZmlnLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91Ym9vdC1jb25maWcuYmJjbGFzcwpAQCAtMjAsMjQgKzIwLDIxIEBACiAgICAgdWJvb3RiaW5hcmllcyA9IGQuZ2V0VmFyKCdVQk9PVF9CSU5BUklFUycpCiAgICAgIyBUaGUgImRvYyIgdmFyZmxhZyBpcyBzcGVjaWFsLCB3ZSBkb24ndCB3YW50IHRvIHNlZSBpdCBoZXJlCiAgICAgdWJvb3Rjb25maWdmbGFncy5wb3AoJ2RvYycsIE5vbmUpCisgICAgdWJvb3Rjb25maWcgPSAoZC5nZXRWYXIoJ1VCT09UX0NPTkZJRycpIG9yICIiKS5zcGxpdCgpCiAKLSAgICBpZiBub3QgdWJvb3RtYWNoaW5lIGFuZCBub3QgdWJvb3Rjb25maWdmbGFnczoKKyAgICBpZiBub3QgdWJvb3RtYWNoaW5lIGFuZCBub3QgdWJvb3Rjb25maWc6CiAgICAgICAgIFBOID0gZC5nZXRWYXIoIlBOIikKICAgICAgICAgRklMRSA9IG9zLnBhdGguYmFzZW5hbWUoZC5nZXRWYXIoIkZJTEUiKSkKICAgICAgICAgYmIuZGVidWcoMSwgIlRvIGJ1aWxkICVzLCBzZWUgJXMgZm9yIGluc3RydWN0aW9ucyBvbiBcCiAgICAgICAgICAgICAgICAgIHNldHRpbmcgdXAgeW91ciBtYWNoaW5lIGNvbmZpZyIgJSAoUE4sIEZJTEUpKQogICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiRWl0aGVyIFVCT09UX01BQ0hJTkUgb3IgVUJPT1RfQ09ORklHIG11c3QgYmUgc2V0IGluIHRoZSAlcyBtYWNoaW5lIGNvbmZpZ3VyYXRpb24uIiAlIGQuZ2V0VmFyKCJNQUNISU5FIikpCiAKLSAgICBpZiB1Ym9vdG1hY2hpbmUgYW5kIHVib290Y29uZmlnZmxhZ3M6CisgICAgaWYgdWJvb3RtYWNoaW5lIGFuZCB1Ym9vdGNvbmZpZzoKICAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIllvdSBjYW5ub3QgdXNlIFVCT09UX01BQ0hJTkUgYW5kIFVCT09UX0NPTkZJRyBhdCB0aGUgc2FtZSB0aW1lLiIpCiAKICAgICBpZiB1Ym9vdGNvbmZpZ2ZsYWdzIGFuZCB1Ym9vdGJpbmFyaWVzOgogICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiWW91IGNhbm5vdCB1c2UgVUJPT1RfQklOQVJJRVMgYXMgaXQgaXMgaW50ZXJuYWwgdG8gdWJvb3RfY29uZmlnLmJiY2xhc3MuIikKIAotICAgIGlmIG5vdCB1Ym9vdGNvbmZpZ2ZsYWdzOgotICAgICAgICByZXR1cm4KLQotICAgIHVib290Y29uZmlnID0gKGQuZ2V0VmFyKCdVQk9PVF9DT05GSUcnKSBvciAiIikuc3BsaXQoKQogICAgIGlmIGxlbih1Ym9vdGNvbmZpZykgPiAwOgogICAgICAgICBmb3IgY29uZmlnIGluIHVib290Y29uZmlnOgogICAgICAgICAgICAgZm9yIGYsIHYgaW4gdWJvb3Rjb25maWdmbGFncy5pdGVtcygpOgpAQCAtNTcsNiArNTQsNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgYmIuZGVidWcoMSwgIkFwcGVuZGluZyAnJXMnIHRvIFVCT09UX0JJTkFSSUVTLiIgJSB1Ym9vdGJpbmFyeSkKICAgICAgICAgICAgICAgICAgICAgICAgIGQuYXBwZW5kVmFyKCdVQk9PVF9CSU5BUklFUycsICcgJyArIHVib290YmluYXJ5KQogICAgICAgICAgICAgICAgICAgICBicmVhawotICAgIGVsaWYgbGVuKHVib290Y29uZmlnKSA9PSAwOgotICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCdZb3UgbXVzdCBzZXQgYSBkZWZhdWx0IGluIFVCT09UX0NPTkZJRy4nKQogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91Ym9vdC1leHRsaW51eC1jb25maWcuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdWJvb3QtZXh0bGludXgtY29uZmlnLmJiY2xhc3MKaW5kZXggODQ0N2EwNC4uNjFkZmYxNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91Ym9vdC1leHRsaW51eC1jb25maWcuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3Vib290LWV4dGxpbnV4LWNvbmZpZy5iYmNsYXNzCkBAIC02OCw3ICs2OCw3IEBACiAKIFVCT09UX0VYVExJTlVYX0NPTkZJRyA9ICIke0J9L2V4dGxpbnV4LmNvbmYiCiAKLXB5dGhvbiBjcmVhdGVfZXh0bGludXhfY29uZmlnKCkgeworcHl0aG9uIGRvX2NyZWF0ZV9leHRsaW51eF9jb25maWcoKSB7CiAgICAgaWYgZC5nZXRWYXIoIlVCT09UX0VYVExJTlVYIikgIT0gIjEiOgogICAgICAgcmV0dXJuCiAKQEAgLTE0OSw0ICsxNDksNCBAQAogICAgICAgICBiYi5mYXRhbCgnVW5hYmxlIHRvIG9wZW4gJXMnICUgKGNmaWxlKSkKIH0KIAotZG9faW5zdGFsbFtwcmVmdW5jc10gKz0gImNyZWF0ZV9leHRsaW51eF9jb25maWciCithZGR0YXNrIGNyZWF0ZV9leHRsaW51eF9jb25maWcgYmVmb3JlIGRvX2luc3RhbGwgZG9fZGVwbG95IGFmdGVyIGRvX2NvbXBpbGUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdW5pbmF0aXZlLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3VuaW5hdGl2ZS5iYmNsYXNzCmluZGV4IDhmMzQ0ODMuLjY3MGVmYTkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdW5pbmF0aXZlLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91bmluYXRpdmUuYmJjbGFzcwpAQCAtNDksNiArNDksMTIgQEAKICAgICAgICAgICAgIGxvY2FsZGF0YSA9IGJiLmRhdGEuY3JlYXRlQ29weShkKQogICAgICAgICAgICAgbG9jYWxkYXRhLnNldFZhcignRklMRVNQQVRIJywgIiIpCiAgICAgICAgICAgICBsb2NhbGRhdGEuc2V0VmFyKCdETF9ESVInLCB0YXJiYWxsZGlyKQorICAgICAgICAgICAgIyBPdXIgZ2FtZXMgd2l0aCBwYXRoIG1hbmlwdWxhdGlvbiBvZiBETF9ESVIgbWVhbiBzdGFuZGFyZCBQUkVNSVJST1JTIGRvbid0IHdvcmsKKyAgICAgICAgICAgICMgYW5kIHdlIGNhbid0IGVhc2lseSBwdXQgJ2Noa3N1bScgaW50byB0aGUgdXJsIHBhdGggZnJvbSBhIHVybCBwYXJhbWV0ZXIgd2l0aAorICAgICAgICAgICAgIyB0aGUgY3VycmVudCBmZXRjaGVyIHVybCBoYW5kbGluZworICAgICAgICAgICAgb3dubWlycm9yID0gZC5nZXRWYXIoJ1NPVVJDRV9NSVJST1JfVVJMJykKKyAgICAgICAgICAgIGlmIG93bm1pcnJvcjoKKyAgICAgICAgICAgICAgICBsb2NhbGRhdGEuYXBwZW5kVmFyKCJQUkVNSVJST1JTIiwgIiAke1VOSU5BVElWRV9VUkx9JHtVTklOQVRJVkVfVEFSQkFMTH0gJHtTT1VSQ0VfTUlSUk9SX1VSTH0vdW5pbmF0aXZlLyVzLyR7VU5JTkFUSVZFX1RBUkJBTEx9IiAlIGNoa3N1bSkKIAogICAgICAgICAgICAgc3JjdXJpID0gZC5leHBhbmQoIiR7VU5JTkFUSVZFX1VSTH0ke1VOSU5BVElWRV9UQVJCQUxMfTtzaGEyNTZzdW09JXMiICUgY2hrc3VtKQogICAgICAgICAgICAgYmIubm90ZSgiRmV0Y2hpbmcgdW5pbmF0aXZlIGJpbmFyeSBzaGltIGZyb20gJXMiICUgc3JjdXJpKQpAQCAtNTcsNyArNjMsMTkgQEAKICAgICAgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQogICAgICAgICAgICAgbG9jYWxwYXRoID0gZmV0Y2hlci5sb2NhbHBhdGgoc3JjdXJpKQogICAgICAgICAgICAgaWYgbG9jYWxwYXRoICE9IHRhcmJhbGxwYXRoIGFuZCBvcy5wYXRoLmV4aXN0cyhsb2NhbHBhdGgpIGFuZCBub3Qgb3MucGF0aC5leGlzdHModGFyYmFsbHBhdGgpOgorICAgICAgICAgICAgICAgICMgRm9sbG93IHRoZSBzeW1saW5rIGJlaGF2aW9yIGZyb20gdGhlIGJpdGJha2UgZmV0Y2gyLgorICAgICAgICAgICAgICAgICMgVGhpcyB3aWxsIGNvdmVyIHRoZSBjYXNlIHdoZXJlIGFuIGV4aXN0aW5nIHN5bWxpbmsgaXMgYnJva2VuCisgICAgICAgICAgICAgICAgIyBhcyB3ZWxsIGFzIGlmIHRoZXJlIGFyZSB0d28gcHJvY2Vzc2VzIHRyeWluZyB0byBjcmVhdGUgaXQKKyAgICAgICAgICAgICAgICAjIGF0IHRoZSBzYW1lIHRpbWUuCisgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5pc2xpbmsodGFyYmFsbHBhdGgpOgorICAgICAgICAgICAgICAgICAgICAjIEJyb2tlbiBzeW1ib2xpYyBsaW5rCisgICAgICAgICAgICAgICAgICAgIG9zLnVubGluayh0YXJiYWxscGF0aCkKKworICAgICAgICAgICAgICAgICMgRGVhbCB3aXRoIHR3byBwcm9jZXNzZXMgdHJ5aW5nIHRvIG1ha2Ugc3ltbGluayBhdCBvbmNlCisgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBvcy5zeW1saW5rKGxvY2FscGF0aCwgdGFyYmFsbHBhdGgpCisgICAgICAgICAgICAgICAgZXhjZXB0IEZpbGVFeGlzdHNFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcGFzcwogCiAgICAgICAgIGNtZCA9IGQuZXhwYW5kKCJcCiBta2RpciAtcCAke1VOSU5BVElWRV9TVEFHSU5HX0RJUn0tdW5pbmF0aXZlOyBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3VwZGF0ZS1hbHRlcm5hdGl2ZXMuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdXBkYXRlLWFsdGVybmF0aXZlcy5iYmNsYXNzCmluZGV4IDRiYmE3NmMuLmFhMDEwNTggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdXBkYXRlLWFsdGVybmF0aXZlcy5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdXBkYXRlLWFsdGVybmF0aXZlcy5iYmNsYXNzCkBAIC0xNDMsNiArMTQzLDEwIEBACiAgICAgICAgICAgICBpZiBub3QgYWx0X2xpbms6CiAgICAgICAgICAgICAgICAgYWx0X2xpbmsgPSAiJXMvJXMiICUgKGQuZ2V0VmFyKCdiaW5kaXInKSwgYWx0X25hbWUpCiAgICAgICAgICAgICAgICAgZC5zZXRWYXJGbGFnKCdBTFRFUk5BVElWRV9MSU5LX05BTUUnLCBhbHRfbmFtZSwgYWx0X2xpbmspCisgICAgICAgICAgICBpZiBhbHRfbGluay5zdGFydHN3aXRoKG9zLnBhdGguam9pbihkLmdldFZhcignc3lzY29uZmRpcicsIFRydWUpLCAnaW5pdC5kJykpOgorICAgICAgICAgICAgICAgICMgTWFuYWdpbmcgaW5pdCBzY3JpcHRzIGRvZXMgbm90IHdvcmsgKGJ1ZyAjMTA0MzMpLCBmb3JlbW9zdAorICAgICAgICAgICAgICAgICMgYmVjYXVzZSBvZiBhIHJhY2Ugd2l0aCB1cGRhdGUtcmMuZAorICAgICAgICAgICAgICAgIGJiLmZhdGFsKCJVc2luZyB1cGRhdGUtYWx0ZXJuYXRpdmVzIGZvciBtYW5hZ2luZyBTeXNWIGluaXQgc2NyaXB0cyBpcyBub3Qgc3VwcG9ydGVkIikKIAogICAgICAgICAgICAgYWx0X3RhcmdldCAgID0gZC5nZXRWYXJGbGFnKCdBTFRFUk5BVElWRV9UQVJHRVRfJXMnICUgcGtnLCBhbHRfbmFtZSkgb3IgZC5nZXRWYXJGbGFnKCdBTFRFUk5BVElWRV9UQVJHRVQnLCBhbHRfbmFtZSkKICAgICAgICAgICAgIGFsdF90YXJnZXQgICA9IGFsdF90YXJnZXQgb3IgZC5nZXRWYXIoJ0FMVEVSTkFUSVZFX1RBUkdFVF8lcycgJSBwa2cpIG9yIGQuZ2V0VmFyKCdBTFRFUk5BVElWRV9UQVJHRVQnKSBvciBhbHRfbGluawpAQCAtMjAxLDggKzIwNSw4IEBACiAgICAgcGtnZGVzdCA9IGQuZ2V0VmFyKCdQS0dEJykKICAgICBmb3IgcGtnIGluIChkLmdldFZhcignUEFDS0FHRVMnKSBvciAiIikuc3BsaXQoKToKICAgICAgICAgIyBDcmVhdGUgcG9zdCBpbnN0YWxsL3JlbW92YWwgc2NyaXB0cwotICAgICAgICBhbHRfc2V0dXBfbGlua3MgPSAiIyBCZWdpbiBzZWN0aW9uIHVwZGF0ZS1hbHRlcm5hdGl2ZXNcbiIKLSAgICAgICAgYWx0X3JlbW92ZV9saW5rcyA9ICIjIEJlZ2luIHNlY3Rpb24gdXBkYXRlLWFsdGVybmF0aXZlc1xuIgorICAgICAgICBhbHRfc2V0dXBfbGlua3MgPSAiIgorICAgICAgICBhbHRfcmVtb3ZlX2xpbmtzID0gIiIKICAgICAgICAgZm9yIGFsdF9uYW1lIGluIChkLmdldFZhcignQUxURVJOQVRJVkVfJXMnICUgcGtnKSBvciAiIikuc3BsaXQoKToKICAgICAgICAgICAgIGFsdF9saW5rICAgICA9IGQuZ2V0VmFyRmxhZygnQUxURVJOQVRJVkVfTElOS19OQU1FJywgYWx0X25hbWUpCiAgICAgICAgICAgICBhbHRfdGFyZ2V0ICAgPSBkLmdldFZhckZsYWcoJ0FMVEVSTkFUSVZFX1RBUkdFVF8lcycgJSBwa2csIGFsdF9uYW1lKSBvciBkLmdldFZhckZsYWcoJ0FMVEVSTkFUSVZFX1RBUkdFVCcsIGFsdF9uYW1lKQpAQCAtMjI1LDEzICsyMjksMTAgQEAKICAgICAgICAgICAgICMgRGVmYXVsdCB0byBnZW5lcmF0ZSBzaGVsbCBzY3JpcHQuLiBldmVudHVhbGx5IHdlIG1heSB3YW50IHRvIGNoYW5nZSB0aGlzLi4uCiAgICAgICAgICAgICBhbHRfdGFyZ2V0ID0gb3MucGF0aC5ub3JtcGF0aChhbHRfdGFyZ2V0KQogCi0gICAgICAgICAgICBhbHRfc2V0dXBfbGlua3MgICs9ICd1cGRhdGUtYWx0ZXJuYXRpdmVzIC0taW5zdGFsbCAlcyAlcyAlcyAlc1xuJyAlIChhbHRfbGluaywgYWx0X25hbWUsIGFsdF90YXJnZXQsIGFsdF9wcmlvcml0eSkKLSAgICAgICAgICAgIGFsdF9yZW1vdmVfbGlua3MgKz0gJ3VwZGF0ZS1hbHRlcm5hdGl2ZXMgLS1yZW1vdmUgICVzICVzXG4nICUgKGFsdF9uYW1lLCBhbHRfdGFyZ2V0KQorICAgICAgICAgICAgYWx0X3NldHVwX2xpbmtzICArPSAnXHR1cGRhdGUtYWx0ZXJuYXRpdmVzIC0taW5zdGFsbCAlcyAlcyAlcyAlc1xuJyAlIChhbHRfbGluaywgYWx0X25hbWUsIGFsdF90YXJnZXQsIGFsdF9wcmlvcml0eSkKKyAgICAgICAgICAgIGFsdF9yZW1vdmVfbGlua3MgKz0gJ1x0dXBkYXRlLWFsdGVybmF0aXZlcyAtLXJlbW92ZSAgJXMgJXNcbicgJSAoYWx0X25hbWUsIGFsdF90YXJnZXQpCiAKLSAgICAgICAgYWx0X3NldHVwX2xpbmtzICs9ICIjIEVuZCBzZWN0aW9uIHVwZGF0ZS1hbHRlcm5hdGl2ZXNcbiIKLSAgICAgICAgYWx0X3JlbW92ZV9saW5rcyArPSAiIyBFbmQgc2VjdGlvbiB1cGRhdGUtYWx0ZXJuYXRpdmVzXG4iCi0KLSAgICAgICAgaWYgbGVuKGFsdF9zZXR1cF9saW5rcy5zcGxpdGxpbmVzKCkpID4gMjoKKyAgICAgICAgaWYgYWx0X3NldHVwX2xpbmtzOgogICAgICAgICAgICAgIyBSREVQRU5EUyBzZXR1cAogICAgICAgICAgICAgcHJvdmlkZXIgPSBkLmdldFZhcignVklSVFVBTC1SVU5USU1FX3VwZGF0ZS1hbHRlcm5hdGl2ZXMnKQogICAgICAgICAgICAgaWYgcHJvdmlkZXI6CkBAIC0yNDEsMjQgKzI0MiwxMiBAQAogICAgICAgICAgICAgYmIubm90ZSgnYWRkaW5nIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgY2FsbHMgdG8gcG9zdGluc3QvcHJlcm0gZm9yICVzJyAlIHBrZykKICAgICAgICAgICAgIGJiLm5vdGUoJyVzJyAlIGFsdF9zZXR1cF9saW5rcykKICAgICAgICAgICAgIHBvc3RpbnN0ID0gZC5nZXRWYXIoJ3BrZ19wb3N0aW5zdF8lcycgJSBwa2cpIG9yICcjIS9iaW4vc2hcbicKLSAgICAgICAgICAgIHBvc3RpbnN0ID0gcG9zdGluc3Quc3BsaXRsaW5lcyhUcnVlKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGluZGV4ID0gcG9zdGluc3QuaW5kZXgoJyMgQmVnaW4gc2VjdGlvbiB1cGRhdGUtcmMuZFxuJykKLSAgICAgICAgICAgICAgICBwb3N0aW5zdC5pbnNlcnQoaW5kZXgsIGFsdF9zZXR1cF9saW5rcykKLSAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgICAgIHBvc3RpbnN0LmFwcGVuZChhbHRfc2V0dXBfbGlua3MpCi0gICAgICAgICAgICBwb3N0aW5zdCA9ICcnLmpvaW4ocG9zdGluc3QpCisgICAgICAgICAgICBwb3N0aW5zdCArPSBhbHRfc2V0dXBfbGlua3MKICAgICAgICAgICAgIGQuc2V0VmFyKCdwa2dfcG9zdGluc3RfJXMnICUgcGtnLCBwb3N0aW5zdCkKIAogICAgICAgICAgICAgYmIubm90ZSgnJXMnICUgYWx0X3JlbW92ZV9saW5rcykKICAgICAgICAgICAgIHByZXJtID0gZC5nZXRWYXIoJ3BrZ19wcmVybV8lcycgJSBwa2cpIG9yICcjIS9iaW4vc2hcbicKLSAgICAgICAgICAgIHByZXJtID0gcHJlcm0uc3BsaXRsaW5lcyhUcnVlKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGluZGV4ID0gcHJlcm0uaW5kZXgoJyMgRW5kIHNlY3Rpb24gdXBkYXRlLXJjLmRcbicpCi0gICAgICAgICAgICAgICAgcHJlcm0uaW5zZXJ0KGluZGV4ICsgMSwgYWx0X3JlbW92ZV9saW5rcykKLSAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgICAgIHByZXJtLmFwcGVuZChhbHRfcmVtb3ZlX2xpbmtzKQotICAgICAgICAgICAgcHJlcm0gPSAnJy5qb2luKHByZXJtKQorICAgICAgICAgICAgcHJlcm0gKz0gYWx0X3JlbW92ZV9saW5rcwogICAgICAgICAgICAgZC5zZXRWYXIoJ3BrZ19wcmVybV8lcycgJSBwa2csIHByZXJtKQogfQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3VwZGF0ZS1yYy5kLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3VwZGF0ZS1yYy5kLmJiY2xhc3MKaW5kZXggOWJhM2RhYy4uZTFlMGUwNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91cGRhdGUtcmMuZC5iYmNsYXNzCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdXBkYXRlLXJjLmQuYmJjbGFzcwpAQCAtMzcsNyArMzcsNiBAQAogUEFDS0FHRV9XUklURV9ERVBTICs9ICJ1cGRhdGUtcmMuZC1uYXRpdmUiCiAKIHVwZGF0ZXJjZF9wb3N0aW5zdCgpIHsKLSMgQmVnaW4gc2VjdGlvbiB1cGRhdGUtcmMuZAogaWYgJHtAdXNlX3VwZGF0ZXJjZChkKX0gJiYgdHlwZSB1cGRhdGUtcmMuZCA+L2Rldi9udWxsIDI+L2Rldi9udWxsOyB0aGVuCiAJaWYgWyAtbiAiJEQiIF07IHRoZW4KIAkJT1BUPSItciAkRCIKQEAgLTQ2LDE1ICs0NSwxMiBAQAogCWZpCiAJdXBkYXRlLXJjLmQgJE9QVCAke0lOSVRTQ1JJUFRfTkFNRX0gJHtJTklUU0NSSVBUX1BBUkFNU30KIGZpCi0jIEVuZCBzZWN0aW9uIHVwZGF0ZS1yYy5kCiB9CiAKIHVwZGF0ZXJjZF9wcmVybSgpIHsKLSMgQmVnaW4gc2VjdGlvbiB1cGRhdGUtcmMuZAogaWYgJHtAdXNlX3VwZGF0ZXJjZChkKX0gJiYgWyAteiAiJEQiIC1hIC14ICIke0lOSVRfRF9ESVJ9LyR7SU5JVFNDUklQVF9OQU1FfSIgXTsgdGhlbgogCSR7SU5JVF9EX0RJUn0vJHtJTklUU0NSSVBUX05BTUV9IHN0b3AgfHwgOgogZmkKLSMgRW5kIHNlY3Rpb24gdXBkYXRlLXJjLmQKIH0KIAogdXBkYXRlcmNkX3Bvc3RybSgpIHsKQEAgLTk1LDggKzkxLDcgQEAKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBzdGF0ZW1lbnQgPSAiZ3JlcCAtcSAtdyAnL2V0Yy9pbml0LmQvZnVuY3Rpb25zJyAlcyIgJSBwYXRoCiAgICAgICAgIGlmIHN1YnByb2Nlc3MuY2FsbChzdGF0ZW1lbnQsIHNoZWxsPVRydWUpID09IDA6Ci0gICAgICAgICAgICBtbHByZWZpeCA9IGQuZ2V0VmFyKCdNTFBSRUZJWCcpIG9yICIiCi0gICAgICAgICAgICBkLmFwcGVuZFZhcignUkRFUEVORFNfJyArIHBrZywgJyAlc2luaXRzY3JpcHRzLWZ1bmN0aW9ucycgJSAobWxwcmVmaXgpKQorICAgICAgICAgICAgZC5hcHBlbmRWYXIoJ1JERVBFTkRTXycgKyBwa2csICcgaW5pdGQtZnVuY3Rpb25zJykKIAogICAgIGRlZiB1cGRhdGVfcmNkX3BhY2thZ2UocGtnKToKICAgICAgICAgYmIuZGVidWcoMSwgJ2FkZGluZyB1cGRhdGUtcmMuZCBjYWxscyB0byBwcmVpbnN0L3Bvc3RpbnN0L3ByZXJtL3Bvc3RybSBmb3IgJXMnICUgcGtnKQpAQCAtMTE2LDI1ICsxMTEsMTMgQEAKICAgICAgICAgcG9zdGluc3QgPSBkLmdldFZhcigncGtnX3Bvc3RpbnN0XyVzJyAlIHBrZykKICAgICAgICAgaWYgbm90IHBvc3RpbnN0OgogICAgICAgICAgICAgcG9zdGluc3QgPSAnIyEvYmluL3NoXG4nCi0gICAgICAgIHBvc3RpbnN0ID0gcG9zdGluc3Quc3BsaXRsaW5lcyhUcnVlKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpbmRleCA9IHBvc3RpbnN0LmluZGV4KCcjIEVuZCBzZWN0aW9uIHVwZGF0ZS1hbHRlcm5hdGl2ZXNcbicpCi0gICAgICAgICAgICBwb3N0aW5zdC5pbnNlcnQoaW5kZXggKyAxLCBsb2NhbGRhdGEuZ2V0VmFyKCd1cGRhdGVyY2RfcG9zdGluc3QnKSkKLSAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICBwb3N0aW5zdC5hcHBlbmQobG9jYWxkYXRhLmdldFZhcigndXBkYXRlcmNkX3Bvc3RpbnN0JykpCi0gICAgICAgIHBvc3RpbnN0ID0gJycuam9pbihwb3N0aW5zdCkKKyAgICAgICAgcG9zdGluc3QgKz0gbG9jYWxkYXRhLmdldFZhcigndXBkYXRlcmNkX3Bvc3RpbnN0JykKICAgICAgICAgZC5zZXRWYXIoJ3BrZ19wb3N0aW5zdF8lcycgJSBwa2csIHBvc3RpbnN0KQogCiAgICAgICAgIHByZXJtID0gZC5nZXRWYXIoJ3BrZ19wcmVybV8lcycgJSBwa2cpCiAgICAgICAgIGlmIG5vdCBwcmVybToKICAgICAgICAgICAgIHByZXJtID0gJyMhL2Jpbi9zaFxuJwotICAgICAgICBwcmVybSA9IHByZXJtLnNwbGl0bGluZXMoVHJ1ZSkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaW5kZXggPSBwcmVybS5pbmRleCgnIyBCZWdpbiBzZWN0aW9uIHVwZGF0ZS1hbHRlcm5hdGl2ZXNcbicpCi0gICAgICAgICAgICBwcmVybS5pbnNlcnQoaW5kZXgsIGxvY2FsZGF0YS5nZXRWYXIoJ3VwZGF0ZXJjZF9wcmVybScpKQotICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgIHByZXJtLmFwcGVuZChsb2NhbGRhdGEuZ2V0VmFyKCd1cGRhdGVyY2RfcHJlcm0nKSkKLSAgICAgICAgcHJlcm0gPSAnJy5qb2luKHByZXJtKQorICAgICAgICBwcmVybSArPSBsb2NhbGRhdGEuZ2V0VmFyKCd1cGRhdGVyY2RfcHJlcm0nKQogICAgICAgICBkLnNldFZhcigncGtnX3ByZXJtXyVzJyAlIHBrZywgcHJlcm0pCiAKICAgICAgICAgcG9zdHJtID0gZC5nZXRWYXIoJ3BrZ19wb3N0cm1fJXMnICUgcGtnKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91c2VyYWRkLXN0YXRpY2lkcy5iYmNsYXNzIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91c2VyYWRkLXN0YXRpY2lkcy5iYmNsYXNzCmluZGV4IDZlYmY3NjAuLjU4OWE5OWYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdXNlcmFkZC1zdGF0aWNpZHMuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3VzZXJhZGQtc3RhdGljaWRzLmJiY2xhc3MKQEAgLTEsMjIgKzEsMTAgQEAKICMgSW4gb3JkZXIgdG8gc3VwcG9ydCBhIGRldGVybWluaXN0aWMgc2V0IG9mICdkeW5hbWljJyB1c2Vycy9ncm91cHMsCiAjIHdlIG5lZWQgYSBmdW5jdGlvbiB0byByZWZvcm1hdCB0aGUgcGFyYW1zIGJhc2VkIG9uIGEgc3RhdGljIGZpbGUKIGRlZiB1cGRhdGVfdXNlcmFkZF9zdGF0aWNfY29uZmlnKGQpOgotICAgIGltcG9ydCBhcmdwYXJzZQogICAgIGltcG9ydCBpdGVydG9vbHMKICAgICBpbXBvcnQgcmUKICAgICBpbXBvcnQgZXJybm8KLQotICAgIGNsYXNzIG15QXJndW1lbnRQYXJzZXIoIGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyICk6Ci0gICAgICAgIGRlZiBfcHJpbnRfbWVzc2FnZShzZWxmLCBtZXNzYWdlLCBmaWxlPU5vbmUpOgotICAgICAgICAgICAgYmIud2FybigiJXMgLSAlczogJXMiICUgKGQuZ2V0VmFyKCdQTicpLCBwa2csIG1lc3NhZ2UpKQotCi0gICAgICAgICMgVGhpcyBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkLi4uCi0gICAgICAgIGRlZiBleGl0KHNlbGYsIHN0YXR1cz0wLCBtZXNzYWdlPU5vbmUpOgotICAgICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2Ugb3IgKCIlcyAtICVzOiB1c2VyYWRkLmJiY2xhc3M6IEFyZ3VtZW50IHBhcnNpbmcgZXhpdGVkIiAlIChkLmdldFZhcignUE4nKSwgcGtnKSkKLSAgICAgICAgICAgIGVycm9yKG1lc3NhZ2UpCi0KLSAgICAgICAgZGVmIGVycm9yKHNlbGYsIG1lc3NhZ2UpOgotICAgICAgICAgICAgYmIuZmF0YWwobWVzc2FnZSkKKyAgICBpbXBvcnQgb2UudXNlcmFkZAogCiAgICAgZGVmIGxpc3RfZXh0ZW5kKGl0ZXJhYmxlLCBsZW5ndGgsIG9iaiA9IE5vbmUpOgogICAgICAgICAiIiJFbnN1cmUgdGhhdCBpdGVyYWJsZSBpcyB0aGUgc3BlY2lmaWVkIGxlbmd0aCBieSBleHRlbmRpbmcgd2l0aCBvYmoKQEAgLTUwLDYyICszOCw0NCBAQAogCiAgICAgICAgIHJldHVybiBpZF90YWJsZQogCi0gICAgZGVmIGhhbmRsZV9taXNzaW5nX2lkKGlkLCB0eXBlLCBwa2cpOgorICAgIGRlZiBoYW5kbGVfbWlzc2luZ19pZChpZCwgdHlwZSwgcGtnLCBmaWxlcywgdmFyLCB2YWx1ZSk6CiAgICAgICAgICMgRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdlIGFjY2VwdCAiMSIgaW4gYWRkaXRpb24gdG8gImVycm9yIgotICAgICAgICBpZiBkLmdldFZhcignVVNFUkFERF9FUlJPUl9EWU5BTUlDJykgPT0gJ2Vycm9yJyBvciBkLmdldFZhcignVVNFUkFERF9FUlJPUl9EWU5BTUlDJykgPT0gJzEnOgotICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigiJXMgLSAlczogJXNuYW1lICVzIGRvZXMgbm90IGhhdmUgYSBzdGF0aWMgSUQgZGVmaW5lZC4gU2tpcHBpbmcgaXQuIiAlIChkLmdldFZhcignUE4nKSwgcGtnLCB0eXBlLCBpZCkpCi0gICAgICAgIGVsaWYgZC5nZXRWYXIoJ1VTRVJBRERfRVJST1JfRFlOQU1JQycpID09ICd3YXJuJzoKLSAgICAgICAgICAgIGJiLndhcm4oIiVzIC0gJXM6ICVzbmFtZSAlcyBkb2VzIG5vdCBoYXZlIGEgc3RhdGljIElEIGRlZmluZWQuIiAlIChkLmdldFZhcignUE4nKSwgcGtnLCB0eXBlLCBpZCkpCisgICAgICAgIGVycm9yX2R5bmFtaWMgPSBkLmdldFZhcignVVNFUkFERF9FUlJPUl9EWU5BTUlDJykKKyAgICAgICAgbXNnID0gIiVzIC0gJXM6ICVzbmFtZSAlcyBkb2VzIG5vdCBoYXZlIGEgc3RhdGljIElEIGRlZmluZWQuIiAlIChkLmdldFZhcignUE4nKSwgcGtnLCB0eXBlLCBpZCkKKyAgICAgICAgaWYgZmlsZXM6CisgICAgICAgICAgICBtc2cgKz0gIiBBZGQgJXMgdG8gb25lIG9mIHRoZXNlIGZpbGVzOiAlcyIgJSAoaWQsIGZpbGVzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbXNnICs9ICIgJXMgZmlsZShzKSBub3QgZm91bmQgaW4gQkJQQVRIOiAlcyIgJSAodmFyLCB2YWx1ZSkKKyAgICAgICAgaWYgZXJyb3JfZHluYW1pYyA9PSAnZXJyb3InIG9yIGVycm9yX2R5bmFtaWMgPT0gJzEnOgorICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcihtc2cpCisgICAgICAgIGVsaWYgZXJyb3JfZHluYW1pYyA9PSAnd2Fybic6CisgICAgICAgICAgICBiYi53YXJuKG1zZykKKyAgICAgICAgZWxpZiBlcnJvcl9keW5hbWljID09ICdza2lwJzoKKyAgICAgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUobXNnKQorCisgICAgIyBSZXR1cm4gYSBsaXN0IG9mIGNvbmZpZ3VyYXRpb24gZmlsZXMgYmFzZWQgb24gZWl0aGVyIHRoZSBkZWZhdWx0CisgICAgIyBmaWxlcy9ncm91cCBvciB0aGUgY29udGVudHMgb2YgVVNFUkFERF9HSURfVEFCTEVTLCByZXNwLgorICAgICMgZmlsZXMvcGFzc3dkIGZvciBVU0VSQUREX1VJRF9UQUJMRVMuCisgICAgIyBQYXRocyBhcmUgcmVzb2x2ZWQgdmlhIEJCUEFUSC4KKyAgICBkZWYgZ2V0X3RhYmxlX2xpc3QoZCwgdmFyLCBkZWZhdWx0KToKKyAgICAgICAgZmlsZXMgPSBbXQorICAgICAgICBiYnBhdGggPSBkLmdldFZhcignQkJQQVRIJywgVHJ1ZSkKKyAgICAgICAgdGFibGVzID0gZC5nZXRWYXIodmFyLCBUcnVlKQorICAgICAgICBpZiBub3QgdGFibGVzOgorICAgICAgICAgICAgdGFibGVzID0gZGVmYXVsdAorICAgICAgICBmb3IgY29uZl9maWxlIGluIHRhYmxlcy5zcGxpdCgpOgorICAgICAgICAgICAgZmlsZXMuYXBwZW5kKGJiLnV0aWxzLndoaWNoKGJicGF0aCwgY29uZl9maWxlKSkKKyAgICAgICAgcmV0dXJuICgnICcuam9pbihmaWxlcyksIHZhciwgZGVmYXVsdCkKIAogICAgICMgV2UgcGFyc2UgYW5kIHJld3JpdGUgdGhlIHVzZXJhZGQgY29tcG9uZW50cwogICAgIGRlZiByZXdyaXRlX3VzZXJhZGQocGFyYW1zLCBpc19wa2cpOgotICAgICAgICAjIFRoZSBmb2xsb3dpbmcgY29tZXMgZnJvbSAtLWhlbHAgb24gdXNlcmFkZCBmcm9tIHNoYWRvdwotICAgICAgICBwYXJzZXIgPSBteUFyZ3VtZW50UGFyc2VyKHByb2c9J3VzZXJhZGQnKQotICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItYiIsICItLWJhc2UtZGlyIiwgbWV0YXZhcj0iQkFTRV9ESVIiLCBoZWxwPSJiYXNlIGRpcmVjdG9yeSBmb3IgdGhlIGhvbWUgZGlyZWN0b3J5IG9mIHRoZSBuZXcgYWNjb3VudCIpCi0gICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1jIiwgIi0tY29tbWVudCIsIG1ldGF2YXI9IkNPTU1FTlQiLCBoZWxwPSJHRUNPUyBmaWVsZCBvZiB0aGUgbmV3IGFjY291bnQiKQotICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItZCIsICItLWhvbWUtZGlyIiwgbWV0YXZhcj0iSE9NRV9ESVIiLCBoZWxwPSJob21lIGRpcmVjdG9yeSBvZiB0aGUgbmV3IGFjY291bnQiKQotICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItRCIsICItLWRlZmF1bHRzIiwgaGVscD0icHJpbnQgb3IgY2hhbmdlIGRlZmF1bHQgdXNlcmFkZCBjb25maWd1cmF0aW9uIiwgYWN0aW9uPSJzdG9yZV90cnVlIikKLSAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLWUiLCAiLS1leHBpcmVkYXRlIiwgbWV0YXZhcj0iRVhQSVJFX0RBVEUiLCBoZWxwPSJleHBpcmF0aW9uIGRhdGUgb2YgdGhlIG5ldyBhY2NvdW50IikKLSAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLWYiLCAiLS1pbmFjdGl2ZSIsIG1ldGF2YXI9IklOQUNUSVZFIiwgaGVscD0icGFzc3dvcmQgaW5hY3Rpdml0eSBwZXJpb2Qgb2YgdGhlIG5ldyBhY2NvdW50IikKLSAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLWciLCAiLS1naWQiLCBtZXRhdmFyPSJHUk9VUCIsIGhlbHA9Im5hbWUgb3IgSUQgb2YgdGhlIHByaW1hcnkgZ3JvdXAgb2YgdGhlIG5ldyBhY2NvdW50IikKLSAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLUciLCAiLS1ncm91cHMiLCBtZXRhdmFyPSJHUk9VUFMiLCBoZWxwPSJsaXN0IG9mIHN1cHBsZW1lbnRhcnkgZ3JvdXBzIG9mIHRoZSBuZXcgYWNjb3VudCIpCi0gICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1rIiwgIi0tc2tlbCIsIG1ldGF2YXI9IlNLRUxfRElSIiwgaGVscD0idXNlIHRoaXMgYWx0ZXJuYXRpdmUgc2tlbGV0b24gZGlyZWN0b3J5IikKLSAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLUsiLCAiLS1rZXkiLCBtZXRhdmFyPSJLRVk9VkFMVUUiLCBoZWxwPSJvdmVycmlkZSAvZXRjL2xvZ2luLmRlZnMgZGVmYXVsdHMiKQotICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItbCIsICItLW5vLWxvZy1pbml0IiwgaGVscD0iZG8gbm90IGFkZCB0aGUgdXNlciB0byB0aGUgbGFzdGxvZyBhbmQgZmFpbGxvZyBkYXRhYmFzZXMiLCBhY3Rpb249InN0b3JlX3RydWUiKQotICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItbSIsICItLWNyZWF0ZS1ob21lIiwgaGVscD0iY3JlYXRlIHRoZSB1c2VyJ3MgaG9tZSBkaXJlY3RvcnkiLCBhY3Rpb249InN0b3JlX2NvbnN0IiwgY29uc3Q9VHJ1ZSkKLSAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLU0iLCAiLS1uby1jcmVhdGUtaG9tZSIsIGRlc3Q9ImNyZWF0ZV9ob21lIiwgaGVscD0iZG8gbm90IGNyZWF0ZSB0aGUgdXNlcidzIGhvbWUgZGlyZWN0b3J5IiwgYWN0aW9uPSJzdG9yZV9jb25zdCIsIGNvbnN0PUZhbHNlKQotICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItTiIsICItLW5vLXVzZXItZ3JvdXAiLCBkZXN0PSJ1c2VyX2dyb3VwIiwgaGVscD0iZG8gbm90IGNyZWF0ZSBhIGdyb3VwIHdpdGggdGhlIHNhbWUgbmFtZSBhcyB0aGUgdXNlciIsIGFjdGlvbj0ic3RvcmVfY29uc3QiLCBjb25zdD1GYWxzZSkKLSAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLW8iLCAiLS1ub24tdW5pcXVlIiwgaGVscD0iYWxsb3cgdG8gY3JlYXRlIHVzZXJzIHdpdGggZHVwbGljYXRlIChub24tdW5pcXVlIFVJRCkiLCBhY3Rpb249InN0b3JlX3RydWUiKQotICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItcCIsICItLXBhc3N3b3JkIiwgbWV0YXZhcj0iUEFTU1dPUkQiLCBoZWxwPSJlbmNyeXB0ZWQgcGFzc3dvcmQgb2YgdGhlIG5ldyBhY2NvdW50IikKLSAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLVAiLCAiLS1jbGVhci1wYXNzd29yZCIsIG1ldGF2YXI9IkNMRUFSX1BBU1NXT1JEIiwgaGVscD0idXNlIHRoaXMgY2xlYXIgcGFzc3dvcmQgZm9yIHRoZSBuZXcgYWNjb3VudCIpCi0gICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1SIiwgIi0tcm9vdCIsIG1ldGF2YXI9IkNIUk9PVF9ESVIiLCBoZWxwPSJkaXJlY3RvcnkgdG8gY2hyb290IGludG8iKQotICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItciIsICItLXN5c3RlbSIsIGhlbHA9ImNyZWF0ZSBhIHN5c3RlbSBhY2NvdW50IiwgYWN0aW9uPSJzdG9yZV90cnVlIikKLSAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLXMiLCAiLS1zaGVsbCIsIG1ldGF2YXI9IlNIRUxMIiwgaGVscD0ibG9naW4gc2hlbGwgb2YgdGhlIG5ldyBhY2NvdW50IikKLSAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLXUiLCAiLS11aWQiLCBtZXRhdmFyPSJVSUQiLCBoZWxwPSJ1c2VyIElEIG9mIHRoZSBuZXcgYWNjb3VudCIpCi0gICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1VIiwgIi0tdXNlci1ncm91cCIsIGhlbHA9ImNyZWF0ZSBhIGdyb3VwIHdpdGggdGhlIHNhbWUgbmFtZSBhcyB0aGUgdXNlciIsIGFjdGlvbj0ic3RvcmVfY29uc3QiLCBjb25zdD1UcnVlKQotICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCJMT0dJTiIsIGhlbHA9IkxvZ2luIG5hbWUgb2YgdGhlIG5ldyB1c2VyIikKLQotICAgICAgICAjIFJldHVybiBhIGxpc3Qgb2YgY29uZmlndXJhdGlvbiBmaWxlcyBiYXNlZCBvbiBlaXRoZXIgdGhlIGRlZmF1bHQKLSAgICAgICAgIyBmaWxlcy9wYXNzd2Qgb3IgdGhlIGNvbnRlbnRzIG9mIFVTRVJBRERfVUlEX1RBQkxFUwotICAgICAgICAjIHBhdGhzIGFyZSByZXNvbHZlZCB2aWEgQkJQQVRICi0gICAgICAgIGRlZiBnZXRfcGFzc3dkX2xpc3QoZCk6Ci0gICAgICAgICAgICBzdHIgPSAiIgotICAgICAgICAgICAgYmJwYXRoID0gZC5nZXRWYXIoJ0JCUEFUSCcpCi0gICAgICAgICAgICBwYXNzd2RfdGFibGVzID0gZC5nZXRWYXIoJ1VTRVJBRERfVUlEX1RBQkxFUycpCi0gICAgICAgICAgICBpZiBub3QgcGFzc3dkX3RhYmxlczoKLSAgICAgICAgICAgICAgICBwYXNzd2RfdGFibGVzID0gJ2ZpbGVzL3Bhc3N3ZCcKLSAgICAgICAgICAgIGZvciBjb25mX2ZpbGUgaW4gcGFzc3dkX3RhYmxlcy5zcGxpdCgpOgotICAgICAgICAgICAgICAgIHN0ciArPSAiICVzIiAlIGJiLnV0aWxzLndoaWNoKGJicGF0aCwgY29uZl9maWxlKQotICAgICAgICAgICAgcmV0dXJuIHN0cgorICAgICAgICBwYXJzZXIgPSBvZS51c2VyYWRkLmJ1aWxkX3VzZXJhZGRfcGFyc2VyKCkKIAogICAgICAgICBuZXdwYXJhbXMgPSBbXQogICAgICAgICB1c2VycyA9IE5vbmUKLSAgICAgICAgZm9yIHBhcmFtIGluIHJlLnNwbGl0KCcnJ1sgXHRdKjtbIFx0XSooPz0oPzpbXiciXXwnW14nXSonfCJbXiJdKiIpKiQpJycnLCBwYXJhbXMpOgotICAgICAgICAgICAgcGFyYW0gPSBwYXJhbS5zdHJpcCgpCi0gICAgICAgICAgICBpZiBub3QgcGFyYW06Ci0gICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgZm9yIHBhcmFtIGluIG9lLnVzZXJhZGQuc3BsaXRfY29tbWFuZHMocGFyYW1zKToKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB1YWFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncyhyZS5zcGxpdCgnJydbIFx0XSsoPz0oPzpbXiciXXwnW14nXSonfCJbXiJdKiIpKiQpJycnLCBwYXJhbSkpCisgICAgICAgICAgICAgICAgdWFhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3Mob2UudXNlcmFkZC5zcGxpdF9hcmdzKHBhcmFtKSkKICAgICAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgICAgICBiYi5mYXRhbCgiJXM6IFVuYWJsZSB0byBwYXJzZSBhcmd1bWVudHMgZm9yIFVTRVJBRERfUEFSQU1fJXM6ICclcyciICUgKGQuZ2V0VmFyKCdQTicpLCBwa2csIHBhcmFtKSkKIApAQCAtMTIxLDEwICs5MSwxMiBAQAogICAgICAgICAgICAgIyBhbGwgbmV3IHVzZXJzIGdldCB0aGUgZGVmYXVsdCAoJyonIHdoaWNoIHByZXZlbnRzIGxvZ2luKSB1bnRpbCB0aGUgdXNlciBpcwogICAgICAgICAgICAgIyBzcGVjaWZpY2FsbHkgY29uZmlndXJlZCBieSB0aGUgc3lzdGVtIGFkbWluLgogICAgICAgICAgICAgaWYgbm90IHVzZXJzOgotICAgICAgICAgICAgICAgIHVzZXJzID0gbWVyZ2VfZmlsZXMoZ2V0X3Bhc3N3ZF9saXN0KGQpLCA3KQorICAgICAgICAgICAgICAgIGZpbGVzLCB0YWJsZV92YXIsIHRhYmxlX3ZhbHVlID0gZ2V0X3RhYmxlX2xpc3QoZCwgJ1VTRVJBRERfVUlEX1RBQkxFUycsICdmaWxlcy9wYXNzd2QnKQorICAgICAgICAgICAgICAgIHVzZXJzID0gbWVyZ2VfZmlsZXMoZmlsZXMsIDcpCiAKKyAgICAgICAgICAgIHR5cGUgPSAnc3lzdGVtIHVzZXInIGlmIHVhYXJncy5zeXN0ZW0gZWxzZSAnbm9ybWFsIHVzZXInCiAgICAgICAgICAgICBpZiB1YWFyZ3MuTE9HSU4gbm90IGluIHVzZXJzOgotICAgICAgICAgICAgICAgIGhhbmRsZV9taXNzaW5nX2lkKHVhYXJncy5MT0dJTiwgJ3VzZXInLCBwa2cpCisgICAgICAgICAgICAgICAgaGFuZGxlX21pc3NpbmdfaWQodWFhcmdzLkxPR0lOLCB0eXBlLCBwa2csIGZpbGVzLCB0YWJsZV92YXIsIHRhYmxlX3ZhbHVlKQogICAgICAgICAgICAgICAgIG5ld3BhcmFtcy5hcHBlbmQocGFyYW0pCiAgICAgICAgICAgICAgICAgY29udGludWUKIApAQCAtMTgyLDcgKzE1NCw3IEBACiAKICAgICAgICAgICAgICMgU2hvdWxkIGJlIGFuIGVycm9yIGlmIGEgc3BlY2lmaWMgb3B0aW9uIGlzIHNldC4uLgogICAgICAgICAgICAgaWYgbm90IHVhYXJncy51aWQgb3Igbm90IHVhYXJncy51aWQuaXNkaWdpdCgpIG9yIG5vdCB1YWFyZ3MuZ2lkOgotICAgICAgICAgICAgICAgICBoYW5kbGVfbWlzc2luZ19pZCh1YWFyZ3MuTE9HSU4sICd1c2VyJywgcGtnKQorICAgICAgICAgICAgICAgICBoYW5kbGVfbWlzc2luZ19pZCh1YWFyZ3MuTE9HSU4sIHR5cGUsIHBrZywgZmlsZXMsIHRhYmxlX3ZhciwgdGFibGVfdmFsdWUpCiAKICAgICAgICAgICAgICMgUmVjb25zdHJ1Y3QgdGhlIGFyZ3MuLi4KICAgICAgICAgICAgIG5ld3BhcmFtICA9IFsnJywgJyAtLWRlZmF1bHRzJ11bdWFhcmdzLmRlZmF1bHRzXQpAQCAtMjE3LDQwICsxODksMTQgQEAKIAogICAgICMgV2UgcGFyc2UgYW5kIHJld3JpdGUgdGhlIGdyb3VwYWRkIGNvbXBvbmVudHMKICAgICBkZWYgcmV3cml0ZV9ncm91cGFkZChwYXJhbXMsIGlzX3BrZyk6Ci0gICAgICAgICMgVGhlIGZvbGxvd2luZyBjb21lcyBmcm9tIC0taGVscCBvbiBncm91cGFkZCBmcm9tIHNoYWRvdwotICAgICAgICBwYXJzZXIgPSBteUFyZ3VtZW50UGFyc2VyKHByb2c9J2dyb3VwYWRkJykKLSAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLWYiLCAiLS1mb3JjZSIsIGhlbHA9ImV4aXQgc3VjY2Vzc2Z1bGx5IGlmIHRoZSBncm91cCBhbHJlYWR5IGV4aXN0cywgYW5kIGNhbmNlbCAtZyBpZiB0aGUgR0lEIGlzIGFscmVhZHkgdXNlZCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIpCi0gICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1nIiwgIi0tZ2lkIiwgbWV0YXZhcj0iR0lEIiwgaGVscD0idXNlIEdJRCBmb3IgdGhlIG5ldyBncm91cCIpCi0gICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1LIiwgIi0ta2V5IiwgbWV0YXZhcj0iS0VZPVZBTFVFIiwgaGVscD0ib3ZlcnJpZGUgL2V0Yy9sb2dpbi5kZWZzIGRlZmF1bHRzIikKLSAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLW8iLCAiLS1ub24tdW5pcXVlIiwgaGVscD0iYWxsb3cgdG8gY3JlYXRlIGdyb3VwcyB3aXRoIGR1cGxpY2F0ZSAobm9uLXVuaXF1ZSkgR0lEIiwgYWN0aW9uPSJzdG9yZV90cnVlIikKLSAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLXAiLCAiLS1wYXNzd29yZCIsIG1ldGF2YXI9IlBBU1NXT1JEIiwgaGVscD0idXNlIHRoaXMgZW5jcnlwdGVkIHBhc3N3b3JkIGZvciB0aGUgbmV3IGdyb3VwIikKLSAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLVAiLCAiLS1jbGVhci1wYXNzd29yZCIsIG1ldGF2YXI9IkNMRUFSX1BBU1NXT1JEIiwgaGVscD0idXNlIHRoaXMgY2xlYXIgcGFzc3dvcmQgZm9yIHRoZSBuZXcgZ3JvdXAiKQotICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItUiIsICItLXJvb3QiLCBtZXRhdmFyPSJDSFJPT1RfRElSIiwgaGVscD0iZGlyZWN0b3J5IHRvIGNocm9vdCBpbnRvIikKLSAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLXIiLCAiLS1zeXN0ZW0iLCBoZWxwPSJjcmVhdGUgYSBzeXN0ZW0gYWNjb3VudCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIpCi0gICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIkdST1VQIiwgaGVscD0iR3JvdXAgbmFtZSBvZiB0aGUgbmV3IGdyb3VwIikKLQotICAgICAgICAjIFJldHVybiBhIGxpc3Qgb2YgY29uZmlndXJhdGlvbiBmaWxlcyBiYXNlZCBvbiBlaXRoZXIgdGhlIGRlZmF1bHQKLSAgICAgICAgIyBmaWxlcy9ncm91cCBvciB0aGUgY29udGVudHMgb2YgVVNFUkFERF9HSURfVEFCTEVTCi0gICAgICAgICMgcGF0aHMgYXJlIHJlc29sdmVkIHZpYSBCQlBBVEgKLSAgICAgICAgZGVmIGdldF9ncm91cF9saXN0KGQpOgotICAgICAgICAgICAgc3RyID0gIiIKLSAgICAgICAgICAgIGJicGF0aCA9IGQuZ2V0VmFyKCdCQlBBVEgnKQotICAgICAgICAgICAgZ3JvdXBfdGFibGVzID0gZC5nZXRWYXIoJ1VTRVJBRERfR0lEX1RBQkxFUycpCi0gICAgICAgICAgICBpZiBub3QgZ3JvdXBfdGFibGVzOgotICAgICAgICAgICAgICAgIGdyb3VwX3RhYmxlcyA9ICdmaWxlcy9ncm91cCcKLSAgICAgICAgICAgIGZvciBjb25mX2ZpbGUgaW4gZ3JvdXBfdGFibGVzLnNwbGl0KCk6Ci0gICAgICAgICAgICAgICAgc3RyICs9ICIgJXMiICUgYmIudXRpbHMud2hpY2goYmJwYXRoLCBjb25mX2ZpbGUpCi0gICAgICAgICAgICByZXR1cm4gc3RyCisgICAgICAgIHBhcnNlciA9IG9lLnVzZXJhZGQuYnVpbGRfZ3JvdXBhZGRfcGFyc2VyKCkKIAogICAgICAgICBuZXdwYXJhbXMgPSBbXQogICAgICAgICBncm91cHMgPSBOb25lCi0gICAgICAgIGZvciBwYXJhbSBpbiByZS5zcGxpdCgnJydbIFx0XSo7WyBcdF0qKD89KD86W14nIl18J1teJ10qJ3wiW14iXSoiKSokKScnJywgcGFyYW1zKToKLSAgICAgICAgICAgIHBhcmFtID0gcGFyYW0uc3RyaXAoKQotICAgICAgICAgICAgaWYgbm90IHBhcmFtOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGZvciBwYXJhbSBpbiBvZS51c2VyYWRkLnNwbGl0X2NvbW1hbmRzKHBhcmFtcyk6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgIyBJZiB3ZSdyZSBwcm9jZXNzaW5nIG11bHRpcGxlIGxpbmVzLCB3ZSBjb3VsZCBoYXZlIGxlZnQgb3ZlciB2YWx1ZXMgaGVyZS4uLgotICAgICAgICAgICAgICAgIGdhYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKHJlLnNwbGl0KCcnJ1sgXHRdKyg/PSg/OlteJyJdfCdbXiddKid8IlteIl0qIikqJCknJycsIHBhcmFtKSkKKyAgICAgICAgICAgICAgICBnYWFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncyhvZS51c2VyYWRkLnNwbGl0X2FyZ3MocGFyYW0pKQogICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgIGJiLmZhdGFsKCIlczogVW5hYmxlIHRvIHBhcnNlIGFyZ3VtZW50cyBmb3IgR1JPVVBBRERfUEFSQU1fJXM6ICclcyciICUgKGQuZ2V0VmFyKCdQTicpLCBwa2csIHBhcmFtKSkKIApAQCAtMjY0LDEwICsyMTAsMTIgQEAKICAgICAgICAgICAgICMgTm90ZTogc2ltaWxhciB0byB0aGUgcGFzc3dkIGZpbGUsIHRoZSAncGFzc3dvcmQnIGZpbGVkIGlzIGlnbm9yZWQKICAgICAgICAgICAgICMgTm90ZTogZ3JvdXBfbWVtYmVycyBpcyBpZ25vcmVkLCBncm91cCBtZW1iZXJzIG11c3QgYmUgY29uZmlndXJlZCB3aXRoIHRoZSBHUk9VUE1FTVNfUEFSQU0KICAgICAgICAgICAgIGlmIG5vdCBncm91cHM6Ci0gICAgICAgICAgICAgICAgZ3JvdXBzID0gbWVyZ2VfZmlsZXMoZ2V0X2dyb3VwX2xpc3QoZCksIDQpCisgICAgICAgICAgICAgICAgZmlsZXMsIHRhYmxlX3ZhciwgdGFibGVfdmFsdWUgPSBnZXRfdGFibGVfbGlzdChkLCAnVVNFUkFERF9HSURfVEFCTEVTJywgJ2ZpbGVzL2dyb3VwJykKKyAgICAgICAgICAgICAgICBncm91cHMgPSBtZXJnZV9maWxlcyhmaWxlcywgNCkKIAorICAgICAgICAgICAgdHlwZSA9ICdzeXN0ZW0gZ3JvdXAnIGlmIGdhYXJncy5zeXN0ZW0gZWxzZSAnbm9ybWFsIGdyb3VwJwogICAgICAgICAgICAgaWYgZ2FhcmdzLkdST1VQIG5vdCBpbiBncm91cHM6Ci0gICAgICAgICAgICAgICAgaGFuZGxlX21pc3NpbmdfaWQoZ2FhcmdzLkdST1VQLCAnZ3JvdXAnLCBwa2cpCisgICAgICAgICAgICAgICAgaGFuZGxlX21pc3NpbmdfaWQoZ2FhcmdzLkdST1VQLCB0eXBlLCBwa2csIGZpbGVzLCB0YWJsZV92YXIsIHRhYmxlX3ZhbHVlKQogICAgICAgICAgICAgICAgIG5ld3BhcmFtcy5hcHBlbmQocGFyYW0pCiAgICAgICAgICAgICAgICAgY29udGludWUKIApAQCAtMjc5LDcgKzIyNyw3IEBACiAgICAgICAgICAgICAgICAgZ2FhcmdzLmdpZCA9IGZpZWxkWzJdCiAKICAgICAgICAgICAgIGlmIG5vdCBnYWFyZ3MuZ2lkIG9yIG5vdCBnYWFyZ3MuZ2lkLmlzZGlnaXQoKToKLSAgICAgICAgICAgICAgICBoYW5kbGVfbWlzc2luZ19pZChnYWFyZ3MuR1JPVVAsICdncm91cCcsIHBrZykKKyAgICAgICAgICAgICAgICBoYW5kbGVfbWlzc2luZ19pZChnYWFyZ3MuR1JPVVAsIHR5cGUsIHBrZywgZmlsZXMsIHRhYmxlX3ZhciwgdGFibGVfdmFsdWUpCiAKICAgICAgICAgICAgICMgUmVjb25zdHJ1Y3QgdGhlIGFyZ3MuLi4KICAgICAgICAgICAgIG5ld3BhcmFtICA9IFsnJywgJyAtLWZvcmNlJ11bZ2FhcmdzLmZvcmNlXQpAQCAtMzM1LDExICsyODMsNyBAQAogCiAgICAgI2JiLndhcm4oIkJlZm9yZTogICdFWFRSQV9VU0VSU19QQVJBTVMnIC0gJyVzJyIgJSAoZC5nZXRWYXIoJ0VYVFJBX1VTRVJTX1BBUkFNUycpKSkKICAgICBuZXdfZXh0cmF1c2VycyA9IFtdCi0gICAgZm9yIGNtZCBpbiByZS5zcGxpdCgnJydbIFx0XSo7WyBcdF0qKD89KD86W14nIl18J1teJ10qJ3wiW14iXSoiKSokKScnJywgZXh0cmF1c2Vycyk6Ci0gICAgICAgIGNtZCA9IGNtZC5zdHJpcCgpCi0gICAgICAgIGlmIG5vdCBjbWQ6Ci0gICAgICAgICAgICBjb250aW51ZQotCisgICAgZm9yIGNtZCBpbiBvZS51c2VyYWRkLnNwbGl0X2NvbW1hbmRzKGV4dHJhdXNlcnMpOgogICAgICAgICBpZiByZS5tYXRjaCgnJyd1c2VyYWRkICguKiknJycsIGNtZCk6CiAgICAgICAgICAgICB1c2VyYWRkX3BhcmFtID0gcmUubWF0Y2goJycndXNlcmFkZCAoLiopJycnLCBjbWQpLmdyb3VwKDEpCiAgICAgICAgICAgICB1c2VyYWRkX3BhcmFtID0gcmV3cml0ZV91c2VyYWRkKHVzZXJhZGRfcGFyYW0sIEZhbHNlKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91c2VyYWRkLmJiY2xhc3MgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3VzZXJhZGQuYmJjbGFzcwppbmRleCAwZjU1MWI1Li4xMjRiZWNkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3VzZXJhZGQuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3VzZXJhZGQuYmJjbGFzcwpAQCAtMTE4LDYgKzExOCw3IEBACiAJIyB1c2VyYWRkL2dyb3VwYWRkIHRvb2xzIGFyZSB1bmF2YWlsYWJsZS4gSWYgdGhlcmUgaXMgbm8gZGVwZW5kZW5jeSwgd2UgYXNzdW1lIHdlIGRvbid0IHdhbnQgdG8KIAkjIGNyZWF0ZSB1c2VycyBpbiB0aGUgc3lzcm9vdAogCWlmICEgY29tbWFuZCAtdiB1c2VyYWRkOyB0aGVuCisJCWJid2FybiAiY29tbWFuZCB1c2VyYWRkIG5vdCBmb3VuZCEiCiAJCWV4aXQgMAogCWZpCiAKQEAgLTEzOSwyMiArMTQwLDE5IEBACiBFWFRSQV9TVEFHSU5HX0ZJWE1FUyArPSAiQ09NUE9ORU5UU19ESVIgUFNFVURPX0xPQ0FMU1RBVEVESVIgTE9HRklGTyIKIAogcHl0aG9uIHVzZXJhZGRfc3lzcm9vdF9zc3RhdGUgKCkgeworICAgIHNjcmlwdGZpbGUgPSBOb25lCiAgICAgdGFzayA9IGQuZ2V0VmFyKCJCQl9DVVJSRU5UVEFTSyIpCiAgICAgaWYgdGFzayA9PSAicGFja2FnZV9zZXRzY2VuZSI6CiAgICAgICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygidXNlcmFkZF9zeXNyb290IiwgZCkKICAgICBlbGlmIHRhc2sgPT0gInByZXBhcmVfcmVjaXBlX3N5c3Jvb3QiOgogICAgICAgICAjIFVzZWQgdG8gdXBkYXRlIHRoaXMgcmVjaXBlJ3Mgb3duIHN5c3Jvb3Qgc28gdGhlIHVzZXIvZ3JvdXBzIGFyZSBhdmFpbGFibGUgdG8gZG9faW5zdGFsbAogICAgICAgICBzY3JpcHRmaWxlID0gZC5leHBhbmQoIiR7UkVDSVBFX1NZU1JPT1R9JHtiaW5kaXJ9L3Bvc3RpbnN0LXVzZXJhZGQtJHtQTn0iKQotICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIob3MucGF0aC5kaXJuYW1lKHNjcmlwdGZpbGUpKQotICAgICAgICB3aXRoIG9wZW4oc2NyaXB0ZmlsZSwgJ3cnKSBhcyBzY3JpcHQ6Ci0gICAgICAgICAgICBzY3JpcHQud3JpdGUoIiMhL2Jpbi9zaFxuIikKLSAgICAgICAgICAgIGJiLmRhdGEuZW1pdF9mdW5jKCJ1c2VyYWRkX3N5c3Jvb3QiLCBzY3JpcHQsIGQpCi0gICAgICAgICAgICBzY3JpcHQud3JpdGUoInVzZXJhZGRfc3lzcm9vdFxuIikKLSAgICAgICAgb3MuY2htb2Qoc2NyaXB0ZmlsZSwgMG83NTUpCiAgICAgICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygidXNlcmFkZF9zeXNyb290IiwgZCkKICAgICBlbGlmIHRhc2sgPT0gInBvcHVsYXRlX3N5c3Jvb3QiOgogICAgICAgICAjIFVzZWQgd2hlbiBpbnN0YWxsZWQgaW4gZGVwZW5kZW50IHRhc2sgc3lzcm9vdHMKICAgICAgICAgc2NyaXB0ZmlsZSA9IGQuZXhwYW5kKCIke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcn0vcG9zdGluc3QtdXNlcmFkZC0ke1BOfSIpCisKKyAgICBpZiBzY3JpcHRmaWxlOgogICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIob3MucGF0aC5kaXJuYW1lKHNjcmlwdGZpbGUpKQogICAgICAgICB3aXRoIG9wZW4oc2NyaXB0ZmlsZSwgJ3cnKSBhcyBzY3JpcHQ6CiAgICAgICAgICAgICBzY3JpcHQud3JpdGUoIiMhL2Jpbi9zaFxuIikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdXRpbHMuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvdXRpbHMuYmJjbGFzcwppbmRleCA5NjQ2M2FiLi44ZTA3ZWFjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3V0aWxzLmJiY2xhc3MKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy91dGlscy5iYmNsYXNzCkBAIC0zMjAsNyArMzIwLDcgQEAKIAogCiBkZWYgY2hlY2tfYXBwX2V4aXN0cyhhcHAsIGQpOgotICAgIGFwcCA9IGQuZXhwYW5kKGFwcCkuc3RyaXAoKQorICAgIGFwcCA9IGQuZXhwYW5kKGFwcCkuc3BsaXQoKVswXS5zdHJpcCgpCiAgICAgcGF0aCA9IGQuZ2V0VmFyKCdQQVRIJykKICAgICByZXR1cm4gYm9vbChiYi51dGlscy53aGljaChwYXRoLCBhcHApKQogCkBAIC0zNjksNiArMzY5LDcgQEAKICAgICBsb2NhbGRhdGEuc2V0VmFyKCJPVkVSUklERVMiLCBvdmVycmlkZXMpCiAgICAgbG9jYWxkYXRhLnNldFZhcigiTUxQUkVGSVgiLCB2YXJpYW50ICsgIi0iKQogICAgIHJldHVybiBsb2NhbGRhdGEKK2dldF9tdWx0aWxpYl9kYXRhc3RvcmVbdmFyZGVwc2V4Y2x1ZGVdID0gIk9WRVJSSURFUyIKIAogZGVmIGFsbF9tdWx0aWxpYl90dW5lX3ZhbHVlcyhkLCB2YXIsIHVuaXF1ZSA9IFRydWUsIG5lZWRfc3BsaXQgPSBUcnVlLCBkZWxpbSA9ICcgJyk6CiAgICAgIiIiUmV0dXJuIGEgc3RyaW5nIG9mIGFsbCAke3Zhcn0gaW4gYWxsIG11bHRpbGliIHR1bmUgY29uZmlndXJhdGlvbiIiIgpAQCAtNDMxLDYgKzQzMiw3IEBACiAgICAgICAgIHZhbHVlc1t2XS5hcHBlbmQobG9jYWxkYXRhLmdldFZhcih2KSkKICAgICAgICAgdmFsdWVzWydtbCddLmFwcGVuZChpdGVtKQogICAgIHJldHVybiB2YWx1ZXMKK2FsbF9tdWx0aWxpYl90dW5lX2xpc3RbdmFyZGVwc2V4Y2x1ZGVdID0gIk9WRVJSSURFUyIKIAogIyBJZiB0aGUgdXNlciBoYXNuJ3Qgc2V0IHVwIHRoZWlyIG5hbWUvZW1haWwsIHNldCBzb21lIGRlZmF1bHRzCiBjaGVja19naXRfY29uZmlnKCkgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy93YWYuYmJjbGFzcyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NsYXNzZXMvd2FmLmJiY2xhc3MKaW5kZXggYzQ2OThlOS4uYWNiZGEyNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY2xhc3Nlcy93YWYuYmJjbGFzcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jbGFzc2VzL3dhZi5iYmNsYXNzCkBAIC0yNSw4ICsyNSwyMyBAQAogCiAgICAgcmV0dXJuICIiCiAKK3B5dGhvbiB3YWZfcHJlY29uZmlndXJlKCkgeworICAgIGZyb20gZGlzdHV0aWxzLnZlcnNpb24gaW1wb3J0IFN0cmljdFZlcnNpb24KKyAgICBzcmNzdWJkaXIgPSBkLmdldFZhcignUycpCisgICAgd2FmYmluID0gb3MucGF0aC5qb2luKHNyY3N1YmRpciwgJ3dhZicpCisgICAgc3RhdHVzLCByZXN1bHQgPSBvZS51dGlscy5nZXRzdGF0dXNvdXRwdXQod2FmYmluICsgIiAtLXZlcnNpb24iKQorICAgIGlmIHN0YXR1cyAhPSAwOgorICAgICAgICBiYi53YXJuKCJVbmFibGUgdG8gZXhlY3V0ZSB3YWYgLS12ZXJzaW9uLCBleGl0IGNvZGUgJWQuIEFzc3VtaW5nIHdhZiB2ZXJzaW9uIHdpdGhvdXQgYmluZGlyL2xpYmRpciBzdXBwb3J0LiIgJSBzdGF0dXMpCisgICAgICAgIHJldHVybgorICAgIHZlcnNpb24gPSByZXN1bHQuc3BsaXQoKVsxXQorICAgIGlmIFN0cmljdFZlcnNpb24odmVyc2lvbikgPj0gU3RyaWN0VmVyc2lvbigiMS44LjciKToKKyAgICAgICAgZC5zZXRWYXIoIldBRl9FWFRSQV9DT05GIiwgIi0tYmluZGlyPSR7YmluZGlyfSAtLWxpYmRpcj0ke2xpYmRpcn0iKQorfQorCitkb19jb25maWd1cmVbcHJlZnVuY3NdICs9ICJ3YWZfcHJlY29uZmlndXJlIgorCiB3YWZfZG9fY29uZmlndXJlKCkgewotCSR7U30vd2FmIGNvbmZpZ3VyZSAtLXByZWZpeD0ke3ByZWZpeH0gJHtFWFRSQV9PRUNPTkZ9CisJJHtTfS93YWYgY29uZmlndXJlIC0tcHJlZml4PSR7cHJlZml4fSAke1dBRl9FWFRSQV9DT05GfSAke0VYVFJBX09FQ09ORn0KIH0KIAogd2FmX2RvX2NvbXBpbGUoKSAgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9iaXRiYWtlLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2JpdGJha2UuY29uZgppbmRleCAyZGFjM2ExLi45Njk2MjczIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2JpdGJha2UuY29uZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2JpdGJha2UuY29uZgpAQCAtMTcsMTEgKzE3LDEzIEBACiBleHBvcnQgcHJlZml4ID0gIi91c3IiCiBleHBvcnQgZXhlY19wcmVmaXggPSAiJHtwcmVmaXh9IgogCityb290X3ByZWZpeCA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3Vzcm1lcmdlJywgJyR7ZXhlY19wcmVmaXh9JywgJyR7YmFzZV9wcmVmaXh9JywgZCl9IgorCiAjIEJhc2UgcGF0aHMKLWV4cG9ydCBiYXNlX2JpbmRpciA9ICIke2Jhc2VfcHJlZml4fS9iaW4iCi1leHBvcnQgYmFzZV9zYmluZGlyID0gIiR7YmFzZV9wcmVmaXh9L3NiaW4iCi1leHBvcnQgYmFzZV9saWJkaXIgPSAiJHtiYXNlX3ByZWZpeH0vJHtiYXNlbGlifSIKLWV4cG9ydCBub25hcmNoX2Jhc2VfbGliZGlyID0gIiR7YmFzZV9wcmVmaXh9L2xpYiIKK2V4cG9ydCBiYXNlX2JpbmRpciA9ICIke3Jvb3RfcHJlZml4fS9iaW4iCitleHBvcnQgYmFzZV9zYmluZGlyID0gIiR7cm9vdF9wcmVmaXh9L3NiaW4iCitleHBvcnQgYmFzZV9saWJkaXIgPSAiJHtyb290X3ByZWZpeH0vJHtiYXNlbGlifSIKK2V4cG9ydCBub25hcmNoX2Jhc2VfbGliZGlyID0gIiR7cm9vdF9wcmVmaXh9L2xpYiIKIAogIyBBcmNoaXRlY3R1cmUgaW5kZXBlbmRlbnQgcGF0aHMKIGV4cG9ydCBzeXNjb25mZGlyID0gIiR7YmFzZV9wcmVmaXh9L2V0YyIKQEAgLTgzLDYgKzg1LDEwIEBACiAjIFJvb3QgaG9tZSBkaXJlY3RvcnkKIFJPT1RfSE9NRSA/Pz0gIi9ob21lL3Jvb3QiCiAKKyMgSWYgc2V0IHRvIGJvb2xlYW4gdHJ1ZSAoJ3llcycsICd5JywgJ3RydWUnLCAndCcsICcxJyksIC92YXIvbG9nIGxpbmtzIHRvIC92YXIvdm9sYXRpbGUvbG9nLgorIyBJZiBzZXQgdG8gYm9vbGVhbiBmYWxzZSAoJ25vJywgJ24nLCAnZmFsc2UnLCAnZicsICcwJyksIC92YXIvbG9nIGlzIG9uIHBlcnNpc3RlbnQgc3RvcmFnZS4KK1ZPTEFUSUxFX0xPR19ESVIgPz0gInllcyIKKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIEFyY2hpdGVjdHVyZS1kZXBlbmRlbnQgYnVpbGQgdmFyaWFibGVzLgogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC0xNzAsNiArMTc2LDcgQEAKICAgICBjaHJwYXRoLW5hdGl2ZSBcCiAgICAgZmlsZS1uYXRpdmUgXAogICAgIGZpbmR1dGlscy1uYXRpdmUgXAorICAgIGdhd2stbmF0aXZlIFwKICAgICBnaXQtbmF0aXZlIFwKICAgICBncmVwLW5hdGl2ZSBcCiAgICAgZGlmZnN0YXQtbmF0aXZlIFwKQEAgLTMyNCw2ICszMzEsMTQgQEAKICMgVGhpcyBkZWZhdWx0IHdhcyBvbmx5IHVzZWQgZm9yIGNoZWNraW5nCiBGSUxFU0VYVFJBUEFUSFMgPz0gIl9fZGVmYXVsdDoiCiAKKyMgVGhlIGRlZmF1bHQgbGlzdCBvZiBmcy1wZXJtcyBmaWxlcyB0byBwcm9jZXNzLiAgSWYgdGhlIGxpc3QgaXMgZW1wdHkgb25seQorIyB0aGUgYnVpbHRpbiBkZWZpbml0aW9ucyB3aWxsIGJlIHVzZWQuICBCdWlsdGluIGRlZmluaXRpb25zIGluY2x1ZGVkOgorIyAgYmFzZV9wcmVmaXgsIHByZWZpeCwgZXhlY19wcmVmaXgsIGJhc2VfYmluZGlyLCBiYXNlX3NiaW5kaXIsIGJhc2VfbGliZGlyLAorIyAgZGF0YWRpciwgc3lzY29uZmRpciwgc2VydmljZWRpciwgc2hhcmVkc3RhdGVkaXIsIGxvY2Fsc3RhdGVkaXIsIGluZm9kaXIsCisjICBtYW5kaXIsIGRvY2RpciwgYmluZGlyLCBzYmluZGlyLCBsaWJleGVjZGlyLCBsaWJkaXIsIGluY2x1ZGVkaXIgYW5kCisjICBvbGRpbmNsdWRlZGlyCitGSUxFU1lTVEVNX1BFUk1TX1RBQkxFUyA/PSAiJHtAJ2ZpbGVzL2ZzLXBlcm1zLnR4dCcgaWYgb2UudHlwZXMuYm9vbGVhbihkLmdldFZhcignVk9MQVRJTEVfTE9HX0RJUicpKSBlbHNlICdmaWxlcy9mcy1wZXJtcy1wZXJzaXN0ZW50LWxvZy50eHQnfSIKKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIEdlbmVyYWwgd29yayBhbmQgb3V0cHV0IGRpcmVjdG9yaWVzIGZvciB0aGUgYnVpbGQgc3lzdGVtLgogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC00NjEsNyArNDc2LDcgQEAKICAgICBbIGFyIGFzIGF3ayBiYXNlbmFtZSBiYXNoIGJ6aXAyIGNhdCBjaGdycCBjaG1vZCBjaG93biBjaHJwYXRoIGNtcCBjcCBjcGlvIFwKICAgICBjcHAgY3V0IGRhdGUgZGQgZGlmZiBkaWZmc3RhdCBkaXJuYW1lIGR1IGVjaG8gZWdyZXAgZW52IGV4cGFuZCBleHByIGZhbHNlIFwKICAgICBmZ3JlcCBmaWxlIGZpbmQgZmxvY2sgZysrIGdhd2sgZ2NjIGdldGNvbmYgZ2V0b3B0IGdpdCBncmVwIGd1bnppcCBnemlwIFwKLSAgICBoZWFkIGhvc3RuYW1lIGluc3RhbGwgbGQgbGRkIGxuIGxzIG1ha2UgbWFrZWluZm8gbWQ1c3VtIG1rZGlyIG1rbm9kIFwKKyAgICBoZWFkIGhvc3RuYW1lIGlkIGluc3RhbGwgbGQgbGRkIGxuIGxzIG1ha2UgbWFrZWluZm8gbWQ1c3VtIG1rZGlyIG1rbm9kIFwKICAgICBta3RlbXAgbXYgbm0gb2JqY29weSBvYmpkdW1wIG9kIHBhdGNoIHBlcmwgcG9kMm1hbiBwciBwcmludGYgcHdkIHB5dGhvbiBweXRob24yIFwKICAgICBweXRob24yLjcgcHl0aG9uMyByYW5saWIgcmVhZGVsZiByZWFkbGluayBybSBybWRpciBycGNnZW4gc2VkIHNoIHNoYTI1NnN1bSBcCiAgICAgc2xlZXAgc29ydCBzcGxpdCBzdGF0IHN0cmluZ3Mgc3RyaXAgdGFpbCB0YXIgdGVlIHRlc3QgdG91Y2ggdHIgdHJ1ZSB1bmFtZSBcCkBAIC00NjksMTAgKzQ4NCwxMCBAQAogIgogCiAjIFRvb2xzIG5lZWRlZCB0byBydW4gdGVzdGltYWdlIHJ1bnRpbWUgaW1hZ2UgdGVzdGluZwotSE9TVFRPT0xTICs9ICJpcCBwaW5nIHBzIHNjcCBzc2ggc3R0eSIKK0hPU1RUT09MUyArPSAiJHtAWycnLCAnaXAgcGluZyBwcyBzY3Agc3NoIHN0dHknXVtiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCd0ZXN0aW1hZ2UnLCBkKV19IgogCiAjIExpbmsgdG8gdGhlc2UgaWYgcHJlc2VudAotSE9TVFRPT0xTX05PTkZBVEFMICs9ICJhd3MgY2NhY2hlIGdjYy1hciBncGcgbGQuYmZkIGxkLmdvbGQgbmMgc2Z0cCBzb2NhdCBzdWRvIgorSE9TVFRPT0xTX05PTkZBVEFMICs9ICJhd3MgY2NhY2hlIGdjYy1hciBncGcgbGQuYmZkIGxkLmdvbGQgbmMgc2Z0cCBzb2NhdCBzc2ggc3VkbyIKIAogIyBUZW1wb3JhcnkgYWRkIGZldyBtb3JlIGRldGVjdGVkIGluIGJpdGJha2Ugd29ybGQKIEhPU1RUT09MU19OT05GQVRBTCArPSAiam9pbiBubCBzaXplIHllcyB6Y2F0IgpAQCAtNDgxLDkgKzQ5Niw2IEBACiBIT1NUVE9PTFNfTk9ORkFUQUwgKz0gImJ6ciIKIAogQ0NBQ0hFID8/PSAiIgotIyBEaXNhYmxlIGNjYWNoZSBleHBsaWNpdGx5IGlmIENDQUNIRSBpcyBudWxsIHNpbmNlIGdjYyBtYXkgYmUgYSBzeW1saW5rCi0jIG9mIGNjYWNoZSBzb21lIGRpc3RyaWJ1dGlvbnMgKGUuZy4sIEZlZG9yYSAxNykuCi1leHBvcnQgQ0NBQ0hFX0RJU0FCTEUgPz89ICIke0BbMCwxXVtkLmdldFZhcignQ0NBQ0hFJykgPT0gJyddfSIKICMgY2NhY2hlIDwgMy4xLjEwIHdpbGwgY3JlYXRlIENDQUNIRV9ESVIgb24gc3RhcnR1cCBldmVuIGlmIGRpc2FibGVkLCBhbmQKICMgYXV0b2dlbiBzZXRzIEhPTUU9L2Rldi9udWxsIHNvIGluIGNlcnRhaW4gc2l0dWF0aW9ucyBidWlsZHMgY2FuIGZhaWwuCiAjIEV4cGxpY2l0bHkgZXhwb3J0IENDQUNIRV9ESVIgdW50aWwgd2UgY2FuIGFzc3VtZSBjY2FjaGUgPjMuMS4xMCBvbiB0aGUgaG9zdC4KQEAgLTU0Niw2ICs1NTgsNyBAQAogZXhwb3J0IFRBUkdFVF9DRkxBR1MgPSAiJHtUQVJHRVRfQ1BQRkxBR1N9ICR7U0VMRUNURURfT1BUSU1JWkFUSU9OfSIKIAogZXhwb3J0IEJVSUxEX0NYWEZMQUdTID0gIiR7QlVJTERfQ0ZMQUdTfSIKK0JVSUxEU0RLX0NYWEZMQUdTID0gIiR7QlVJTERTREtfQ0ZMQUdTfSIKIGV4cG9ydCBDWFhGTEFHUyA9ICIke1RBUkdFVF9DWFhGTEFHU30iCiBleHBvcnQgVEFSR0VUX0NYWEZMQUdTID0gIiR7VEFSR0VUX0NGTEFHU30iCiAKQEAgLTcxNCwxMSArNzI3LDkgQEAKICMgVGhpcyB3b3JrcyBmb3IgIGZ1bmN0aW9ucyBhcyB3ZWxsLCB0aGV5IGFyZSByZWFsbHkganVzdCBlbnZpcm9ubWVudCB2YXJpYWJsZXMuCiAjIERlZmF1bHQgT1ZFUlJJREVTIHRvIG1ha2UgY29tcGlsYXRpb24gZmFpbCBmYXN0IGluIGNhc2Ugb2YgYnVpbGQgc3lzdGVtIG1pc2NvbmZpZ3VyYXRpb24uCiBPVkVSUklERVMgPSAiJHtUQVJHRVRfT1N9OiR7VFJBTlNMQVRFRF9UQVJHRVRfQVJDSH06YnVpbGQtJHtCVUlMRF9PU306cG4tJHtQTn06JHtNQUNISU5FT1ZFUlJJREVTfToke0RJU1RST09WRVJSSURFU306JHtDTEFTU09WRVJSSURFfTpmb3JjZXZhcmlhYmxlIgotT1ZFUlJJREVTW3ZhcmRlcHNleGNsdWRlXSA9ICJNQUNISU5FT1ZFUlJJREVTIgogQ0xBU1NPVkVSUklERSA/PSAiY2xhc3MtdGFyZ2V0IgogRElTVFJPT1ZFUlJJREVTID89ICIke0BkLmdldFZhcignRElTVFJPJykgb3IgJyd9IgogTUFDSElORU9WRVJSSURFUyA/PSAiJHtNQUNISU5FfSIKLU1BQ0hJTkVPVkVSUklERVNbdmFyZGVwc2V4Y2x1ZGVdID0gIk1BQ0hJTkUiCiAKIEZJTEVTT1ZFUlJJREVTID0gIiR7VFJBTlNMQVRFRF9UQVJHRVRfQVJDSH06JHtNQUNISU5FT1ZFUlJJREVTfToke0RJU1RST09WRVJSSURFU30iCiAKQEAgLTczMSwxMCArNzQyLDggQEAKIGluY2x1ZGUgY29uZi9hdXRvLmNvbmYKIGluY2x1ZGUgY29uZi9sb2NhbC5jb25mCiByZXF1aXJlIGNvbmYvbXVsdGljb25maWcvJHtCQl9DVVJSRU5UX01DfS5jb25mCi1pbmNsdWRlIGNvbmYvYnVpbGQvJHtCVUlMRF9TWVN9LmNvbmYKIGluY2x1ZGUgY29uZi9tYWNoaW5lLyR7TUFDSElORX0uY29uZgogaW5jbHVkZSBjb25mL21hY2hpbmUtc2RrLyR7U0RLTUFDSElORX0uY29uZgotaW5jbHVkZSBjb25mL3RhcmdldC8ke1RBUkdFVF9TWVN9LmNvbmYKIGluY2x1ZGUgY29uZi9kaXN0cm8vJHtESVNUUk99LmNvbmYKIGluY2x1ZGUgY29uZi9kaXN0cm8vZGVmYXVsdHNldHVwLmNvbmYKIGluY2x1ZGUgY29uZi9kb2N1bWVudGF0aW9uLmNvbmYKQEAgLTc5OCw3ICs4MDcsNyBAQAogCiAjIE5hdGl2ZSBkaXN0cm8gZmVhdHVyZXMgKHdpbGwgYWx3YXlzIGJlIHVzZWQgZm9yIC1uYXRpdmUsIGV2ZW4gaWYgdGhleQogIyBhcmUgbm90IGVuYWJsZWQgZm9yIHRhcmdldCkKLURJU1RST19GRUFUVVJFU19OQVRJVkUgPz0gIngxMSIKK0RJU1RST19GRUFUVVJFU19OQVRJVkUgPz0gIngxMSBpcHY2IgogRElTVFJPX0ZFQVRVUkVTX05BVElWRVNESyA/PSAieDExIGxpYmMtY2hhcnNldHMgbGliYy1sb2NhbGVzIGxpYmMtbG9jYWxlLWNvZGUiCiAKICMgTm9ybWFsbHkgdGFyZ2V0IGRpc3RybyBmZWF0dXJlcyB3aWxsIG5vdCBiZSBhcHBsaWVkIHRvIG5hdGl2ZSBidWlsZHM6CkBAIC04NDgsNyArODU3LDcgQEAKICAgICBTU1RBVEVfRElSIFRISVNESVIgRklMRVNFWFRSQVBBVEhTIEZJTEVfRElSTkFNRSBIT01FIExPR05BTUUgU0hFTEwgVEVSTSBcCiAgICAgVVNFUiBGSUxFU1BBVEggU1RBR0lOR19ESVJfSE9TVCBTVEFHSU5HX0RJUl9UQVJHRVQgQ09SRUJBU0UgUFJTRVJWX0hPU1QgXAogICAgIFBSU0VSVl9EVU1QRElSIFBSU0VSVl9EVU1QRklMRSBQUlNFUlZfTE9DS0RPV04gUEFSQUxMRUxfTUFLRSBcCi0gICAgQ0NBQ0hFX0RJUiBFWFRFUk5BTF9UT09MQ0hBSU4gQ0NBQ0hFIENDQUNIRV9ESVNBQkxFIExJQ0VOU0VfUEFUSCBTREtQS0dTVUZGSVggXAorICAgIENDQUNIRV9ESVIgRVhURVJOQUxfVE9PTENIQUlOIENDQUNIRSBDQ0FDSEVfTk9IQVNIRElSIExJQ0VOU0VfUEFUSCBTREtQS0dTVUZGSVggXAogICAgIFdBUk5fUUEgRVJST1JfUUEgV09SS0RJUiBTVEFNUENMRUFOIFBLR0RBVEFfRElSIEJVSUxEX0FSQ0ggU1NUQVRFX1BLR0FSQ0ggXAogICAgIEJCX1dPUktFUkNPTlRFWFQgQkJfTElNSVRFRERFUFMgZXh0ZW5kX3JlY2lwZV9zeXNyb290IERFUExPWV9ESVIiCiBCQl9IQVNIQ09ORklHX1dISVRFTElTVCA/PSAiJHtCQl9IQVNIQkFTRV9XSElURUxJU1R9IERBVEUgVElNRSBTU0hfQUdFTlRfUElEIFwKQEAgLTg1Niw3ICs4NjUsNyBAQAogICAgIFBBUkFMTEVMX01BS0UgQkJfTlVNQkVSX1RIUkVBRFMgQkJfT1JJR0VOViBCQl9JTlZBTElEQ09ORiBCQklOQ0xVREVEIFwKICAgICBHSVRfUFJPWFlfQ09NTUFORCBBTExfUFJPWFkgYWxsX3Byb3h5IE5PX1BST1hZIG5vX3Byb3h5IEZUUF9QUk9YWSBmdHBfcHJveHkgXAogICAgIEhUVFBfUFJPWFkgaHR0cF9wcm94eSBIVFRQU19QUk9YWSBodHRwc19wcm94eSBTT0NLUzVfVVNFUiBTT0NLUzVfUEFTU1dEIFwKLSAgICBCQl9TRVRTQ0VORV9FTkZPUkNFIgorICAgIEJCX1NFVFNDRU5FX0VORk9SQ0UgQkJfQ01ETElORSBCQl9TRVJWRVJfVElNRU9VVCIKIEJCX1NJR05BVFVSRV9FWENMVURFX0ZMQUdTID89ICJkb2MgZGVwcyBkZXBlbmRzIFwKICAgICBsb2NrZmlsZXMgdHlwZSB2YXJkZXBzZXhjbHVkZSB2YXJkZXBzIHZhcmRlcHZhbHVlIHZhcmRlcHZhbHVlZXhjbHVkZSBcCiAgICAgZmlsZS1jaGVja3N1bXMgcHl0aG9uIGZ1bmMgdGFzayBleHBvcnQgdW5leHBvcnQgbm9leGVjIG5vc3RhbXAgZGlycyBjbGVhbmRpcnMgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9jb25mLW5vdGVzLnR4dCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvY29uZi1ub3Rlcy50eHQKaW5kZXggMmYyOTMyYi4uZjFhNGY0ZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9jb25mLW5vdGVzLnR4dAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2NvbmYtbm90ZXMudHh0CkBAIC0xLDMgKzEsOCBAQAorCisjIyMgU2hlbGwgZW52aXJvbm1lbnQgc2V0IHVwIGZvciBidWlsZHMuICMjIworCitZb3UgY2FuIG5vdyBydW4gJ2JpdGJha2UgPHRhcmdldD4nCisKIENvbW1vbiB0YXJnZXRzIGFyZToKICAgICBjb3JlLWltYWdlLW1pbmltYWwKICAgICBjb3JlLWltYWdlLXNhdG8KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvYXMtbmVlZGVkLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvYXMtbmVlZGVkLmluYwppbmRleCAxMTRkMzc3Li42YThhZDlkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2FzLW5lZWRlZC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9hcy1uZWVkZWQuaW5jCkBAIC04LDcgKzgsNiBAQAogQVNORUVERURfcG4taWN1ID0gIiIKIEFTTkVFREVEX3BuLXBjaXV0aWxzID0gIiIKIEFTTkVFREVEX3BuLXB1enpsZXMgPSAiIgotQVNORUVERURfcG4tcHVsc2VhdWRpbyA9ICIiCiBBU05FRURFRF9wbi1ycG0gPSAiIgogCiBUQVJHRVRfTERGTEFHUyArPSAiJHtBU05FRURFRH0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2RlZmF1bHQtcHJvdmlkZXJzLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGVmYXVsdC1wcm92aWRlcnMuaW5jCmluZGV4IGVjZTRkOGIuLjJiNzZjM2MgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGVmYXVsdC1wcm92aWRlcnMuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGVmYXVsdC1wcm92aWRlcnMuaW5jCkBAIC00Niw3ICs0Niw2IEBACiBQUkVGRVJSRURfUFJPVklERVJfY29uc29sZS10b29scyA/PSAia2JkIgogUFJFRkVSUkVEX1BST1ZJREVSX2d6aXAtbmF0aXZlID89ICJwaWd6LW5hdGl2ZSIKIFBSRUZFUlJFRF9QUk9WSURFUl91ZGV2ID89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3N5c3RlbWQnLCdldWRldicsZCl9IgotUFJFRkVSUkVEX1JQUk9WSURFUl9saWJhc291bmQtbW9kdWxlLWJsdWV6ID89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnYmx1ZXRvb3RoIGJsdWV6NScsJ2JsdWV6NScsJ2JsdWV6NCcsZCl9IgogUFJFRkVSUkVEX1JQUk9WSURFUl9ibHVlei1oY2lkdW1wID89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnYmx1ZXRvb3RoIGJsdWV6NScsJ2JsdWV6NScsJ2JsdWV6LWhjaWR1bXAnLGQpfSIKICMgQWx0ZXJuYXRpdmUgaXMgbHRwLWRkdCBpbiBtZXRhLW9lOiBtZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbHRwLWRkdC9sdHAtZGR0XzAuMC40LmJiCiBQUkVGRVJSRURfUFJPVklERVJfbHRwID89ICJsdHAiCkBAIC01NCwzICs1Myw3IEBACiBQUkVGRVJSRURfUFJPVklERVJfb3BlbnNzbCA/PSAib3BlbnNzbCIKIFBSRUZFUlJFRF9QUk9WSURFUl9vcGVuc3NsLW5hdGl2ZSA/PSAib3BlbnNzbC1uYXRpdmUiCiBQUkVGRVJSRURfUFJPVklERVJfbmF0aXZlc2RrLW9wZW5zc2wgPz0gIm5hdGl2ZXNkay1vcGVuc3NsIgorUFJFRkVSUkVEX1BST1ZJREVSX3BrZ2NvbmZpZyA/PSAicGtnY29uZmlnIgorUFJFRkVSUkVEX1BST1ZJREVSX25hdGl2ZXNkay1wa2djb25maWcgPz0gIm5hdGl2ZXNkay1wa2djb25maWciCitQUkVGRVJSRURfUFJPVklERVJfcGtnY29uZmlnLW5hdGl2ZSA/PSAicGtnY29uZmlnLW5hdGl2ZSIKK1BSRUZFUlJFRF9SUFJPVklERVJfaW5pdGQtZnVuY3Rpb25zID89ICJpbml0c2NyaXB0cyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGVmYXVsdC12ZXJzaW9ucy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2RlZmF1bHQtdmVyc2lvbnMuaW5jCmluZGV4IGQ5NzY1MDguLjg2ODA3MzggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGVmYXVsdC12ZXJzaW9ucy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kZWZhdWx0LXZlcnNpb25zLmluYwpAQCAtMiw2ICsyLDYgQEAKICMgRGVmYXVsdCBwcmVmZXJyZWQgdmVyc2lvbnMKICMKIAotIyBGb3JjZSB0aGUgb2xkZXIgdmVyc2lvbiBvZiBsaWJlcmF0aW9uLWZvbnRzIHVudGlsIHdlIGZpeCB0aGUgZm9udGZvcmdlIGlzc3VlCi1QUkVGRVJSRURfVkVSU0lPTl9saWJlcmF0aW9uLWZvbnRzID89ICIxLjA0IgotCitQUkVGRVJSRURfVkVSU0lPTl9vcGVuc3NsID0gIjEuMC4lIgorUFJFRkVSUkVEX1ZFUlNJT05fb3BlbnNzbC1uYXRpdmUgPSAiMS4wLiUiCitQUkVGRVJSRURfVkVSU0lPTl9uYXRpdmVzZGstb3BlbnNzbCA9ICIxLjAuJSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGlzdHJvX2FsaWFzLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGlzdHJvX2FsaWFzLmluYwppbmRleCA0ODlmNWVhLi5mN2M4YjRhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2Rpc3Ryb19hbGlhcy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kaXN0cm9fYWxpYXMuaW5jCkBAIC0xNSw3ICsxNSw2IEBACiBESVNUUk9fUE5fQUxJQVNfcG4tYXRrID0gIkZlZG9yYT1hdGsgT3BlblN1U0U9YXRrIgogRElTVFJPX1BOX0FMSUFTX3BuLWF2YWhpLXVpID0gIlVidW50dT1hdmFoaS1kaXNjb3ZlciBEZWJpYW49YXZhaGktZGlzY292ZXIiCiBESVNUUk9fUE5fQUxJQVNfcG4tYmFiZWx0cmFjZSA9ICJPU1BEVCIKLURJU1RST19QTl9BTElBU19wbi1iZHdnYyA9ICJPU1BEVCIKIERJU1RST19QTl9BTElBU19wbi1iaWdyZXFzcHJvdG8gPSAiTWVlZ289eG9yZy14MTEtcHJvdG8tYmlncmVxc3Byb3RvIgogRElTVFJPX1BOX0FMSUFTX3BuLWJqYW0gPSAiT3BlblN1U0U9Ym9vc3QtamFtIERlYmluYT1iamFtIgogRElTVFJPX1BOX0FMSUFTX3BuLWJsa3Rvb2wgPSAiRGViaWFuPWJsa3Rvb2wgTWFuZHJpdmE9YmxrdG9vbCIKQEAgLTYzLDYgKzYyLDcgQEAKIERJU1RST19QTl9BTElBU19wbi1jb3JlLWltYWdlLXRlc3RtYXN0ZXItaW5pdHJhbWZzID0gIk9FLUNvcmUiCiBESVNUUk9fUE5fQUxJQVNfcG4tY29yZS1pbWFnZS13ZXN0b24gPSAiT0UtQ29yZSIKIERJU1RST19QTl9BTElBU19wbi1jb3JlLWltYWdlLXgxMSA9ICJPRS1Db3JlIgorRElTVFJPX1BOX0FMSUFTX3BuLWNyZWF0ZXJlcG8tYyA9ICJGZWRvcmE9Y3JlYXRlcmVwb19jIENsZWFyPWNyZWF0ZXJlcG9fYyIKIERJU1RST19QTl9BTElBU19wbi1jcm9zcy1sb2NhbGVkZWYgPSAiT1NQRFQiCiBESVNUUk9fUE5fQUxJQVNfcG4tY3J5cHRvZGV2LWxpbnV4ID0gIk9FLUNvcmUiCiBESVNUUk9fUE5fQUxJQVNfcG4tY3J5cHRvZGV2LW1vZHVsZSA9ICJPRS1Db3JlIgpAQCAtMTI5LDYgKzEyOSw3IEBACiBESVNUUk9fUE5fQUxJQVNfcG4tZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSA9ICJEZWJpYW49Z3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSBVYnVudHU9Z3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSIKIERJU1RST19QTl9BTElBU19wbi1nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kID0gIkRlYmlhbj1nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kIFVidW50dT1nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQiCiBESVNUUk9fUE5fQUxJQVNfcG4tZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyID0gIlVidW50dT1nc3RyZWFtZXIwLjEwLXJ0c3AgRmVkb3JhPWdzdHJlYW1lci1ydHNwIgorRElTVFJPX1BOX0FMSUFTX3BuLWdzdHJlYW1lcjEuMC12YWFwaSA9ICJGZWRvcmE9Z3N0cmVhbWVyMS12YWFwaSBEZWJpYW49Z3N0cmVhbWVyLXZhYXBpIENsZWFyPWdzdHJlYW1lci12YWFwaSIKIERJU1RST19QTl9BTElBU19wbi1ndGsrID0gIk1lZWdvPWd0azIgRmVkb3JhPWd0azIgT3BlblN1U0U9Z3RrMiBVYnVudHU9Z3RrKzIuMCBNYW5kcml2YT1ndGsrMi4wIERlYmlhbj1ndGsrMi4wIgogRElTVFJPX1BOX0FMSUFTX3BuLWd0ayszID0gIlVidW50dT1ndGsrMy4wIERlYmlhbj1ndGsrMy4wIEZlZG9yYT1ndGszIgogRElTVFJPX1BOX0FMSUFTX3BuLWd0ay1kb2MgPSAiRmVkb3JhPWd0ay1kb2MgVWJ1bnR1PWd0ay1kb2MiCkBAIC0xNTMsNyArMTU0LDYgQEAKIERJU1RST19QTl9BTElBU19wbi1pcHJvdXRlMiA9ICJPU1BEVCIKIERJU1RST19QTl9BTElBU19wbi1qcGVnID0gIk9wZW5TdVNFPWxpYmpwZWcgVWJ1bnR1PWxpYmpwZWc2MiIKIERJU1RST19QTl9BTElBU19wbi1rYnByb3RvID0gIk1lZWdvPXhvcmcteDExLXByb3RvLWticHJvdG8gVWJ1bnR1PXgxMXByb3RvLWtiLWRldiBEZWJpYW49eDExcHJvdG8ta2ItZGV2IgotRElTVFJPX1BOX0FMSUFTX3BuLWtjb25maWctZnJvbnRlbmRzID0gIk9TUERUIgogRElTVFJPX1BOX0FMSUFTX3BuLWtlcm5lbC1kZXZzcmMgPSAiRGViaWFuPWxpbnV4LWJhc2UgVWJ1bnR1PWxpbnV4IgogRElTVFJPX1BOX0FMSUFTX3BuLWtlcm5lbHNoYXJrID0gIk1hbmRyaXZhPWtlcm5lbHNoYXJrIFVidW50dT1rZXJuZWxzaGFyayIKIERJU1RST19QTl9BTElBU19wbi1rZXJuLXRvb2xzLW5hdGl2ZSA9ICJXaW5kcml2ZXIiCkBAIC0xOTUsNiArMTk1LDcgQEAKIERJU1RST19QTl9BTElBU19wbi1saWJvd2wgPSAiRGViaWFuPW93bCBPcGVuZWRIYW5kIgogRElTVFJPX1BOX0FMSUFTX3BuLWxpYnBhbSA9ICJNZWVnbz1wYW0gRmVkb3JhPXBhbSBPcGVuU3VTRT1wYW0gVWJ1bnR1PXBhbSBNYW5kcml2YT1wYW0gRGViaWFuPXBhbSIKIERJU1RST19QTl9BTElBU19wbi1saWJwY3JlID0gIk1hbmRyaXZhPWxpYnBjcmUwIEZlZG9yYT1wY3JlIgorRElTVFJPX1BOX0FMSUFTX3BuLWxpYnBjcmUyID0gIkZlZG9yYT1wY3JlMiBEZWJpYW49cGNyZTIgQ2xlYXI9cGNyZTIiCiBESVNUUk9fUE5fQUxJQVNfcG4tbGlicG5nMTIgPSAiRGViaWFuPWxpYnBuZzEyLTAgRmVkb3JhPWxpYnBuZyIKIERJU1RST19QTl9BTElBU19wbi1saWJwb2QtcGxhaW5lci1wZXJsID0gIk9TUERUIgogRElTVFJPX1BOX0FMSUFTX3BuLWxpYnNhbXBsZXJhdGUwID0gIk1lZWdvPWxpYnNhbXBsZXJhdGUgRmVkb3JhPWxpYnNhbXBsZXJhdGUgT3BlblN1U0U9bGlic2FtcGxlcmF0ZSBVYnVudHU9bGlic2FtcGxlcmF0ZSBNYW5kcml2YT1saWJzYW1wbGVyYXRlIERlYmlhbj1saWJzYW1wbGVyYXRlIgpAQCAtMjA5LDYgKzIxMCw3IEBACiBESVNUUk9fUE5fQUxJQVNfcG4tbGlidXNiLWNvbXBhdCA9ICJPU1BEVCIKIERJU1RST19QTl9BTElBU19wbi1saWJ4MTEgPSAiRGViaWFuPWxpYngxMS02IEZlZG9yYT1saWJYMTEgVWJ1bnR1PWxpYngxMS02IE9wZW5TdVNFPXhvcmcteDExLWxpYlgxMSIKIERJU1RST19QTl9BTElBU19wbi1saWJ4Y2FsaWJyYXRlID0gIk9TUERUIHVwc3RyZWFtPWh0dHA6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy94b3JnL2xpYi9saWJYQ2FsaWJyYXRlLyIKK0RJU1RST19QTl9BTElBU19wbi1saWJ4Zm9udDIgPSAiRmVkb3JhPWxpYlhmb250MiBDbGVhcj1saWJYZm9udDIiCiBESVNUUk9fUE5fQUxJQVNfcG4tbGlieGZ0ID0gIk1hbmRyaXZhPWxpYnhmdCBEZWJpYW49bGlieGZ0MiBVYnVudHU9bGlieGZ0MiIKIERJU1RST19QTl9BTElBU19wbi1saWJ4aSA9ICJVYnVudHU9bGlieGkgRmVkb3JhPWxpYlhpIgogRElTVFJPX1BOX0FMSUFTX3BuLWxpYnhrYmNvbW1vbiA9ICJGZWRvcmE9bGlieGtiY29tbW9uIERlYmlhbj1saWJ4a2Jjb21tb24iCkBAIC0zMjUsMTQgKzMyNywxNiBAQAogRElTVFJPX1BOX0FMSUFTX3BuLXB1enpsZXMgPSAiRGViaWFuPXNndC1wdXp6bGVzIEZlZG9yYT1wdXp6bGVzIgogRElTVFJPX1BOX0FMSUFTX3BuLXB5dGhvbjMgPSAiRmVkb3JhPXB5dGhvbjMgRGViaWFuPXB5dGhvbjMuMiIKIERJU1RST19QTl9BTElBU19wbi1weXRob24zLWRpc3RyaWJ1dGUgPSAiRGViaWFuPXB5dGhvbjMtc2V0dXB0b29scyBGZWRvcmE9cHl0aG9uMy1zZXR1cHRvb2xzIgorRElTVFJPX1BOX0FMSUFTX3BuLXB5dGhvbjMtaW5pcGFyc2UgPSAiRmVkb3JhPXB5dGhvbi1pbmlwYXJzZSBEZWJpYW49cHl0aG9uLWluaXBhcnNlIgogRElTVFJPX1BOX0FMSUFTX3BuLXB5dGhvbjMtcGlwID0gIk9wZW5TdVNFPXB5dGhvbjMtcGlwIERlYmlhbj1weXRob24zLXBpcCIKK0RJU1RST19QTl9BTElBU19wbi1weXRob24zLXB5Y3VybCA9ICJGZWRvcmE9cHl0aG9uLXB5Y3VybCBEZWJpYW49cHljdXJsIgorRElTVFJPX1BOX0FMSUFTX3BuLXB5dGhvbjMtcHlncGdtZSA9ICJGZWRvcmE9cHl0aG9uLXB5Z3BnbWUgRGViaWFuPXB5Z3BnbWUiCiBESVNUUk9fUE5fQUxJQVNfcG4tcHl0aG9uMy1zZXR1cHRvb2xzID0gIk9wZW5TdVNFPXB5dGhvbjMtc2V0dXB0b29scyBEZWJpYW49cHl0aG9uMy1zZXR1cHRvb2xzIgogRElTVFJPX1BOX0FMSUFTX3BuLXB5dGhvbi1kYnVzID0gIlVidW50dT1weXRob24tZGJ1cyBEZWJpYW49cHl0aG9uLWRidXMgTWFuZHJpdmE9cHl0aG9uLWRidXMiCiBESVNUUk9fUE5fQUxJQVNfcG4tcHl0aG9uLWRpc3RyaWJ1dGUgPSAiT3BlbnN1c2U9cHl0aG9uLXNldHVwdG9vbHMgRmVkb3JhPXB5dGhvbi1zZXR1cHRvb2xzIgogRElTVFJPX1BOX0FMSUFTX3BuLXB5dGhvbi1naXQgPSAiRGViaWFuPXB5dGhvbi1naXQgRmVkb3JhPUdpdFB5dGhvbiIKIERJU1RST19QTl9BTElBU19wbi1weXRob24tbWFrbyA9ICJGZWRvcmE9cHl0aG9uLW1ha28gT3BlbnN1c2U9cHl0aG9uLU1ha28iCiBESVNUUk9fUE5fQUxJQVNfcG4tcHl0aG9uLXB5Y2Fpcm8gPSAiTWVlZ289cHljYWlybyBGZWRvcmE9cHljYWlybyBVYnVudHU9cHljYWlybyBEZWJpYW49cHljYWlybyIKLURJU1RST19QTl9BTElBU19wbi1weXRob24tcHljdXJsID0gIkRlYmlhbj1weXRob24tcHljdXJsIFVidW50dT1weXRob24tcHljdXJsIgogRElTVFJPX1BOX0FMSUFTX3BuLXB5dGhvbi1weWdvYmplY3QgPSAiTWVlZ289cHlnb2JqZWN0MiBGZWRvcmE9cHlnb2JqZWN0MiBVYnVudHU9cHlnb2JqZWN0IERlYmlhbj1weWdvYmplY3QiCiBESVNUUk9fUE5fQUxJQVNfcG4tcHl0aG9uLXNjb25zID0gIkZlZG9yYT1zY29ucyBPcGVuU3VTRT1zY29ucyBVYnVudHU9c2NvbnMgTWFuZHJpdmE9c2NvbnMgRGViaWFuPXNjb25zIgogRElTVFJPX1BOX0FMSUFTX3BuLXB5dGhvbi1zZXR1cHRvb2xzID0gIk1hbmRyaXZhPXB5dGhvbi1zZXR1cCBPcGVuU3VTRT1weXRob24tc2V0dXAtZ2l0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9tYWludGFpbmVycy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL21haW50YWluZXJzLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zODc4OWIyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9tYWludGFpbmVycy5pbmMKQEAgLTAsMCArMSw4MjcgQEAKKyMgWW9jdG8gUHJvamVjdCAvIE9wZW5FbWJlZGRlZC1Db3JlIChPRS1Db3JlKSBNYWludGFpbmVycyBGaWxlCisjCisjIFRoaXMgZmlsZSBjb250YWlucyBhIGxpc3Qgb2YgcmVjaXBlIG1haW50YWluZXJzLgorIworIyBQbGVhc2Ugc3VibWl0IGFueSBwYXRjaGVzIGFnYWluc3QgcmVjaXBlcyBpbiBtZXRhIHRvIHRoZSAKKyMgT0UtQ29yZSBtYWlsIGxpc3QgKG9wZW5lbWJlZGRlZC1jb3JlQGxpc3RzLm9wZW5lbWJlZGRlZC5vcmcpCisjIEZvciByZWNpcGVzIGluIG1ldGEteW9jdG8gcGxlYXNlIHVzZSB0aGUgUG9reSBsaXN0IChwb2t5QHlvY3RvcHJvamVjdC5vcmcpCisjCisjIElmIHlvdSBoYXZlIHByb2JsZW1zIHdpdGggb3IgcXVlc3Rpb25zIGFib3V0IGEgcGFydGljdWxhciByZWNpcGUsIGZlZWwKKyMgZnJlZSB0byBjb250YWN0IHRoZSBtYWludGFpbmVyIGRpcmVjdGx5IChjYzppbmcgdGhlIGFwcHJvcHJpYXRlIG1haWxpbmcgbGlzdAorIyBwdXRzIGl0IGluIHRoZSBhcmNoaXZlIGFuZCBoZWxwcyBvdGhlciBwZW9wbGUgd2hvIG1pZ2h0IGhhdmUgdGhlIHNhbWUKKyMgcXVlc3Rpb25zIGluIHRoZSBmdXR1cmUpLCBidXQgcGxlYXNlIHRyeSB0byBkbyB0aGUgZm9sbG93aW5nIGZpcnN0OgorIworIyAgLSBsb29rIGluIHRoZSBZb2N0byBQcm9qZWN0IEJ1Z3ppbGxhCisjICAgIChodHRwOi8vYnVnemlsbGEueW9jdG9wcm9qZWN0Lm9yZy8pIHRvIHNlZSBpZiBhIHByb2JsZW0gaGFzCisjICAgIGFscmVhZHkgYmVlbiByZXBvcnRlZAorIworIyAtIGxvb2sgdGhyb3VnaCByZWNlbnQgZW50cmllcyBvZiB0aGUgYXBwcm9wcmlhdGUgbWFpbGluZyBsaXN0IGFyY2hpdmVzCisjICAgKGh0dHA6Ly9saXN0cy5saW51eHRvZ28ub3JnL3BpcGVybWFpbC9vcGVuZW1iZWRkZWQtY29yZSBvcgorIyAgICBodHRwczovL2xpc3RzLnlvY3RvcHJvamVjdC5vcmcvcGlwZXJtYWlsL3Bva3kvKSB0byBzZWUgaWYgb3RoZXIKKyMgICBwZW9wbGUgaGF2ZSBydW4gaW50byBzaW1pbGFyIHByb2JsZW1zIG9yIGhhZCBzaW1pbGFyIHF1ZXN0aW9ucworIyAgIGFuc3dlcmVkLgorIworIyBUaGUgZm9ybWF0IGlzIGFzIGEgYml0YmFrZSB2YXJpYWJsZSBvdmVycmlkZSBmb3IgZWFjaCByZWNpcGUKKyMKKyMJUkVDSVBFX01BSU5UQUlORVJfcG4tPHJlY2lwZSBuYW1lPiA9ICJGdWxsIE5hbWUgPGFkZHJlc3NAZG9tYWluPiIKKyMKKyMgUGxlYXNlIGtlZXAgdGhpcyBsaXN0IGluIGFscGhhYmV0aWNhbCBvcmRlci4KKyMKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWFjbCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYWNwaWNhID0gIkZhdGhpIEJvdWRyYSA8ZmF0aGkuYm91ZHJhQGxpbmFyby5vcmc+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYWNwaWQgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYWNwaXRlc3RzID0gIkZhdGhpIEJvdWRyYSA8ZmF0aGkuYm91ZHJhQGxpbmFyby5vcmc+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYWR3YWl0YS1pY29uLXRoZW1lID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYWxzYS1saWIgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWFsc2EtcGx1Z2lucyA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYWxzYS1zdGF0ZSA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYWxzYS10b29scyA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYWxzYS11dGlscyA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYWxzYS11dGlscy1zY3JpcHRzID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1hcG1kID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWFwciA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYXByLXV0aWwgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWFwdCA9ICJBbsOtYmFsIExpbcOzbiA8bGltb24uYW5pYmFsQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1hcHQtbmF0aXZlID0gIkFuw61iYWwgTGltw7NuIDxsaW1vbi5hbmliYWxAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWFyZ3Atc3RhbmRhbG9uZSA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWFzY2lpZG9jID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1hc3BlbGwgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWFzc2ltcCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWF0ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1hdC1zcGkyLWF0ayA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWF0LXNwaTItY29yZSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWF0ayA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWF0dHIgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWF1dG9jb25mID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWF1dG9jb25mLWFyY2hpdmUgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYXV0b2dlbi1uYXRpdmUgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYXV0b21ha2UgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYXZhaGkgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWF2YWhpLXVpID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1iYWJlbHRyYWNlID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYmFzZS1maWxlcyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWJhc2UtcGFzc3dkID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYmFzaCA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYmFzaC1jb21wbGV0aW9uID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYmMgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWJkd2djID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYmVlY3J5cHQgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYmlncmVxc3Byb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWJpbmQgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYmludXRpbHMgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1iaW51dGlscy1jcm9zcyA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWJpbnV0aWxzLWNyb3NzLWNhbmFkaWFuID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYmludXRpbHMtY3Jvc3NzZGsgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1iaXNvbiA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYmphbS1uYXRpdmUgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ibGt0b29sID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ibGt0cmFjZSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWJsdWV6NSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ibWFwLXRvb2xzID0gIkVkIEJhcnRvc2ggPGVkLmJhcnRvc2hAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWJvb3N0ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYm9vdGNoYXJ0MiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWJzZC1oZWFkZXJzID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYnRyZnMtdG9vbHMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1idWlsZC1hcHBsaWFuY2UtaW1hZ2UgPSAiQ3Jpc3RpYW4gSW9yZ2EgPGNyaXN0aWFuLmlvcmdhQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1idWlsZC1jb21wYXJlID0gIlJhbmR5IFdpdHQgPHJhbmR5LmUud2l0dEBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYnVpbGQtc3lzcm9vdHMgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYnVpbGRlciA9ICJDcmlzdGlhbiBJb3JnYSA8Y3Jpc3RpYW4uaW9yZ2FAaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWJ1aWxkdG9vbHMtdGFyYmFsbCA9ICJDcmlzdGlhbiBJb3JnYSA8Y3Jpc3RpYW4uaW9yZ2FAaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWJ1c3lib3ggPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ieWFjYyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYnppcDIgPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1jYS1jZXJ0aWZpY2F0ZXMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1jYWlybyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWNhbGlicmF0ZXByb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWNhbnRhcmVsbC1mb250cyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWNjYWNoZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1jZHJ0b29scy1uYXRpdmUgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWNoa2NvbmZpZyA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tY2hrY29uZmlnLWFsdGVybmF0aXZlcy1uYXRpdmUgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWNocnBhdGggPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWNsdXR0ZXItMS4wID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tY2x1dHRlci1nc3QtMy4wID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tY2x1dHRlci1ndGstMS4wID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tY21ha2UgPSAiT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW8uc2FsdmFkb3JAb3NzeXN0ZW1zLmNvbS5icj4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1jbWFrZS1uYXRpdmUgPSAiT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW8uc2FsdmFkb3JAb3NzeXN0ZW1zLmNvbS5icj4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1jb2dsLTEuMCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvbXBvc2l0ZXByb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvbm5tYW4gPSAiQ2hhbmdoeWVvayBCYWUgPGNoYW5naHllb2suYmFlQGxnZS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tY29ubm1hbi1jb25mID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvbm5tYW4tZ25vbWUgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tY29uc29sZS10b29scyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tY29uc29sZWtpdCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tY29yZXV0aWxzID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1jcGlvID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tY3JhY2tsaWIgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tY3JlYXRlcmVwby1jID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tY3JvbmllID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tY3Jvc3MtbG9jYWxlZGVmLW5hdGl2ZSA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWNyeXB0b2Rldi1saW51eCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1jcnlwdG9kZXYtbW9kdWxlID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWNyeXB0b2Rldi10ZXN0cyA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1jdXBzID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1jdXJsID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWN2ZS1jaGVjay10b29sID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tY3dhdXRvbWFjcm9zID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWRhbWFnZXByb3RvID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZGIgPSAiTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWRidXMgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWRidXMtZ2xpYiA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZGJ1cy10ZXN0ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1kYnVzLXdhaXQgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWRlYmlhbnV0aWxzID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWRlcG1vZHdyYXBwZXItY3Jvc3MgPSAiTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWRlc2t0b3AtZmlsZS11dGlscy1uYXRpdmUgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1kaGNwID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1kaWZmc3RhdCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZGlmZnV0aWxzID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1kaXJlY3RmYiA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZGlyZWN0ZmItZXhhbXBsZXMgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWRpc3RjYyA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZGlzdGNjLWNvbmZpZyA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZG1pZGVjb2RlID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZG14cHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZG5mID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZG9jYm9vay14bWwtZHRkNCA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZG9jYm9vay14c2wtc3R5bGVzaGVldHMgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWRvc2ZzdG9vbHMgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWRwa2cgPSAiQW7DrWJhbCBMaW3Ds24gPGxpbW9uLmFuaWJhbEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZHJpMnByb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWRyaTNwcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1kcm9wYmVhciA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZHRjID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZTJmc3Byb2dzID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWVkID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZWVlLWFjcGktc2NyaXB0cyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWVmaWxpbnV4ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZWdsaW5mby1mYiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWVnbGluZm8teDExID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZWZpbGludXggPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1lbGZ1dGlscyA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZW5jaGFudCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1lbmNvZGluZ3MgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZXBpcGhhbnkgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ldGh0b29sID0gIkNoYW5naHllb2sgQmFlIDxjaGFuZ2h5ZW9rLmJhZUBsZ2UuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWV1ZGV2ID0gIkFsZWphbmRybyBIZXJuYW5kZXogPGFsZWphbmRyby5oZXJuYW5kZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWV4cGF0ID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1leHBlY3QgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1mZm1wZWcgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1maWxlID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWZpbmR1dGlscyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZml4ZXNwcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1mbGFjID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1mbGV4ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1mb250LWFsaWFzID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWZvbnQtdXRpbCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1mb250Y29uZmlnID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZm9udHNwcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1mb29tYXRpYy1maWx0ZXJzID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1mb3JtZmFjdG9yID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWZyZWV0eXBlID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZnN0ZXN0cyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWZ0cyA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdhd2sgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdjYyA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdjYy1jcm9zcyA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdjYy1jcm9zcy1jYW5hZGlhbiA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdjYy1jcm9zcy1pbml0aWFsID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NjLWNyb3Nzc2RrID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NjLWNyb3Nzc2RrLWluaXRpYWwgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nY2MtcnVudGltZSA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdjYy1zYW5pdGl6ZXJzID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NjLXNvdXJjZSA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdjY21ha2VkZXAgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nY29uZiA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdjciA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdkYiA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdkYi1jcm9zcyA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdkYi1jcm9zcy1jYW5hZGlhbiA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdkYm0gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nZGstcGl4YnVmID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ2V0dGV4dCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nZXR0ZXh0LW1pbmltYWwtbmF0aXZlID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdob3N0c2NyaXB0ID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1naXQgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ2xldyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdsaWItMi4wID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ2xpYi1uZXR3b3JraW5nID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ2xpYmMgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbGliYy1pbml0aWFsID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ2xpYmMtbG9jYWxlID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ2xpYmMtbXRyYWNlID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ2xpYmMtc2NyaXB0cyA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdscHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ21wID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ25vbWUtY29tbW9uID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ25vbWUtZGVza3RvcC10ZXN0aW5nID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ25vbWUtZGVza3RvcDMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbm9tZS1kb2MtdXRpbHMgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbm9tZS10aGVtZXMtc3RhbmRhcmQgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbnUtY29uZmlnID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdudS1lZmkgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ251cGcgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdudXRscyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbyA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdvLWNyb3NzID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ28tZGVwID0gIk90YXZpbyBTYWx2YWRvciA8b3RhdmlvLnNhbHZhZG9yQG9zc3lzdGVtcy5jb20uYnI+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ28taGVsbG93b3JsZCA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdvLW5hdGl2ZSA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdvYmplY3QtaW50cm9zcGVjdGlvbiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdwZXJmID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3BnbWUgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdwdGZkaXNrID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3JlcCA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdyb2ZmID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ncnViID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3J1Yi1lZmkgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0LXBsYXllciA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdzdHJlYW1lcjEuMCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAtbGliYXYgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0cmVhbWVyMS4wLW9teCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAtbWV0YS1iYXNlID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2QgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0cmVhbWVyMS4wLXBsdWdpbnMtdWdseSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAtcHl0aG9uID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdzdHJlYW1lcjEuMC1ydHNwLXNlcnZlciA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAtdmFhcGkgPSAiV2VpIFRlZSBOZyA8d2VpLnRlZS5uZ0BpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3RrKyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWd0ayszID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3RrLWRvYyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWd0ay1lbmdpbmVzID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3RrLWljb24tdXRpbHMtbmF0aXZlID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3RrLXNhdG8tZW5naW5lID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3VpbGUgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ3VpbHQtbmF0aXZlID0gIkJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWd1bW1pYm9vdCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWd6aXAgPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1oYXJmYnV6eiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1oZHBhcm0gPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1oZWxwMm1hbi1uYXRpdmUgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWhpY29sb3ItaWNvbi10aGVtZSA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWhvc3RhcC1jb25mID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWhvc3RhcC11dGlscyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1od2xhdGRldGVjdCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWkyYy10b29scyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1pY2VjYy1jcmVhdGUtZW52LW5hdGl2ZSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWljb24tbmFtaW5nLXV0aWxzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taWN1ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taWZ1cGRvd24gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taW5pdC1pZnVwZG93biA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1pbml0cmFtZnMtYm9vdCA9ICJPdGF2aW8gU2FsdmFkb3IgPG90YXZpby5zYWx2YWRvckBvc3N5c3RlbXMuY29tLmJyPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWluaXRyYW1mcy1mcmFtZXdvcmsgPSAiT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW8uc2FsdmFkb3JAb3NzeXN0ZW1zLmNvbS5icj4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1pbml0cmFtZnMtbGl2ZS1ib290ID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taW5pdHJhbWZzLWxpdmUtaW5zdGFsbCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWluaXRyYW1mcy1saXZlLWluc3RhbGwtZWZpID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taW5pdHJhbWZzLWxpdmUtaW5zdGFsbC1lZmktdGVzdGZzID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taW5pdHJhbWZzLWxpdmUtaW5zdGFsbC10ZXN0ZnMgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1pbml0c2NyaXB0cyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWlucHV0cHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taW50bHRvb2wgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1pcHJvdXRlMiA9ICJDaGFuZ2h5ZW9rIEJhZSA8Y2hhbmdoeWVvay5iYWVAbGdlLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1pcHRhYmxlcyA9ICJDaGFuZ2h5ZW9rIEJhZSA8Y2hhbmdoeWVvay5iYWVAbGdlLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1pcHV0aWxzID0gIkNoYW5naHllb2sgQmFlIDxjaGFuZ2h5ZW9rLmJhZUBsZ2UuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWlyZGEtdXRpbHMgPSAiQ2hhbmdoeWVvayBCYWUgPGNoYW5naHllb2suYmFlQGxnZS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taXNvLWNvZGVzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4taXcgPSAiQ2hhbmdoeWVvayBCYWUgPGNoYW5naHllb2suYmFlQGxnZS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlianBlZy10dXJibyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1qc29uLWMgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWpzb24tZ2xpYiA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4ta2JkID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4ta2Jwcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1rY29uZmlnLWZyb250ZW5kcyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWtlcm4tdG9vbHMtbmF0aXZlID0gIkJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWtlcm5lbHNoYXJrID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4ta2VybmVsLWRldnNyYyA9ICJCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1rZXhlYy10b29scyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1rZXltYXBzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4ta21vZCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4ta21vZC1uYXRpdmUgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWttc2N1YmUgPSAiQ2FybG9zIFJhZmFlbCBHaWFuaSA8ZHZAcHNldWRvdGVybWluYWwub3JnPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWwzYWZwYWQgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1sYW1lID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1sYXRlbmN5dG9wID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGRjb25maWctbmF0aXZlID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGVzcyA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJhNTIgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmFjcGkgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliYWlvID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliYXJjaGl2ZSA9ICJPdGF2aW8gU2FsdmFkb3IgPG90YXZpby5zYWx2YWRvckBvc3N5c3RlbXMuY29tLmJyPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmFydC1sZ3BsID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliYXNzdWFuID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmF0b21pYy1vcHMgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliYXYgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJic2QgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliY2FwID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmNhcC1uZyA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJjZ3JvdXAgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJjaGVjayA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJjbGFzcy1pc2EtcGVybCA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmNvbXBzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliY29udmVydC1hc24xLXBlcmwgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJjcm9jbyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmRhZW1vbiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmRteCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJkbmYgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJkcm0gPSAiT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW8uc2FsdmFkb3JAb3NzeXN0ZW1zLmNvbS5icj4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJkdW1wdmFsdWUtcGVybCA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmVudi1wZXJsID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZXBveHkgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJlcmF0aW9uLWZvbnRzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZXJyb3ItcGVybCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJldmRldiA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmV2ZW50ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZXhpZiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmZha2VrZXkgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJmZmkgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJmaWxlLWNoZWNrdHJlZS1wZXJsID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZm0gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJmbS1leHRyYSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmZvbnRlbmMgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZ2NjID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZ2NjLWluaXRpYWwgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJnY3J5cHQgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmdmb3J0cmFuID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliZ2xhZGUgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJnbHUgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJncGctZXJyb3IgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmd1ZGV2ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliaTE4bi1jb2xsYXRlLXBlcmwgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJpY2FsID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmljZSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJpY29udiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmlkM3RhZyA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliaWRuID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGliaW5wdXQgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJqc29uID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlia3NiYSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm1hdGNoYm94ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlibW5sID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlibXBjID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlibmV3dCA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlibmV3dC1weXRob24gPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm5mc2lkbWFwID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm5sID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlibm90aWZ5ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlibnNsMiA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm5zcy1tZG5zID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlib2dnID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm9teGlsID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm93bCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnBhbSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJwY2FwID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnBjaWFjY2VzcyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnBjcmUgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicGNyZTIgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicGZtNCA9ICJNYXR0aGV3IE1jQ2xpbnRvY2sgPG1zbUBmcmVlc2NhbGUuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnBuZyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJwbmcxMiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJwb2QtcGxhaW5lci1wZXJsID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicHJveHkgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlicHRocmVhZC1zdHVicyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnJlcG8gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJyc3ZnID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlic2FtcGxlcmF0ZTAgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnNkbCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJzZGwyID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnNlY3JldCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnNtID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnNuZGZpbGUxID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJzb2x2ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnNvdXAtMi40ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidGFzbjEgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidGhlb3JhID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidGltZWRhdGUtcGVybCA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnRpcnBjID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnRvb2wgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidG9vbC1jcm9zcyA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ0b29sLW5hdGl2ZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ1bmlzdHJpbmcgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidW53aW5kID0gIkJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnVyY3UgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ1cmktcGVybCA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnVzYi1jb21wYXQgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ1c2IxID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidXNlciA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ2YSA9ICJXZWkgVGVlIE5nIDx3ZWkudGVlLm5nQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ2YS11dGlscyA9ICJXZWkgVGVlIE5nIDx3ZWkudGVlLm5nQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ2b3JiaXMgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYndlYnAgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4MTEgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieDExLWRpZXQgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGF1ID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhjYWxpYnJhdGUgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGNiID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhjb21wb3NpdGUgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGN1cnNvciA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4ZGFtYWdlID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhkbWNwID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhleHQgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGZpeGVzID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhmb250ID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhmb250MiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4ZnQgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGkgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGluZXJhbWEgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGtiY29tbW9uID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhrYmZpbGUgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieG1sLW5hbWVzcGFjZXN1cHBvcnQtcGVybCA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhtbC1wYXJzZXItcGVybCA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhtbC1wZXJsID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieG1sLXNheC1iYXNlLXBlcmwgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4bWwtc2F4LXBlcmwgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4bWwtc2ltcGxlLXBlcmwgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4bWwyID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4bXUgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieHBtID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhyYW5kciA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4cmVuZGVyID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhyZXMgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieHNjcm5zYXZlciA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4c2V0dGluZ3MtY2xpZW50ID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieHNobWZlbmNlID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnhzbHQgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4dCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ4dHN0ID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnh2ID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnh2bWMgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieHhmODZkZ2EgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieHhmODZtaXNjID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnh4Zjg2dm0gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieWFtbCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpZ2h0dHBkID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGludXgtZHVtbXkgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saW51eC1maXJtd2FyZSA9ICJPdGF2aW8gU2FsdmFkb3IgPG90YXZpby5zYWx2YWRvckBvc3N5c3RlbXMuY29tLmJyPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpbnV4LWxpYmMtaGVhZGVycyA9ICJCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saW51eC15b2N0byA9ICJCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saW51eC15b2N0by1kZXYgPSAiQnJ1Y2UgQXNoZmllbGQgPGJydWNlLmFzaGZpZWxkQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGludXgteW9jdG8tcnQgPSAiQnJ1Y2UgQXNoZmllbGQgPGJydWNlLmFzaGZpZWxkQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGludXgteW9jdG8tdGlueSA9ICJCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1sbHZtID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbG9ncm90YXRlID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxyenN6ID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxzYiA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbHNiaW5pdHNjcmlwdHMgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1sc2J0ZXN0ID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1sc29mID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWx0cCA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbHR0bmctbW9kdWxlcyA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1sdHRuZy10b29scyA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1sdHRuZy11c3QgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbHo0ID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbHpvID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbHppcCA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWx6b3AgPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tNCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tNC1uYXRpdmUgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWFpbHggPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWFrZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tYWtlZGVwZW5kID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1ha2VkZXZzID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tYW4gPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hbi1wYWdlcyA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWF0Y2hib3gtY29uZmlnLWd0ayA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LWRlc2t0b3AgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC1kZXNrdG9wLXNhdG8gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC1rZXlib2FyZCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1hdGNoYm94LXBhbmVsLTIgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC1zZXNzaW9uID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWF0Y2hib3gtc2Vzc2lvbi1zYXRvID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWF0Y2hib3gtdGVybWluYWwgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tYXRjaGJveC10aGVtZS1zYXRvID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWF0Y2hib3gtd20gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tYyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tZGFkbSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tZW51LWNhY2hlID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWVzYSA9ICJPdGF2aW8gU2FsdmFkb3IgPG90YXZpby5zYWx2YWRvckBvc3N5c3RlbXMuY29tLmJyPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1lc2EtZGVtb3MgPSAiT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW8uc2FsdmFkb3JAb3NzeXN0ZW1zLmNvbS5icj4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tZXNhLWdsID0gIk90YXZpbyBTYWx2YWRvciA8b3RhdmlvLnNhbHZhZG9yQG9zc3lzdGVtcy5jb20uYnI+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWV0YS1lbnZpcm9ubWVudCA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tZXRhLWVudmlyb25tZW50LWV4dHNkayA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tZXRhLWV4dHNkay10b29sY2hhaW4gPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWV0YS1pZGUtc3VwcG9ydCA9ICJDcmlzdGlhbiBJb3JnYSA8Y3Jpc3RpYW4uaW9yZ2FAaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1ldGEtdG9vbGNoYWluID0gIkNyaXN0aWFuIElvcmdhIDxjcmlzdGlhbi5pb3JnYUBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWV0YS13b3JsZC1wa2dkYXRhID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1pbmdldHR5ID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1pbmkteC1zZXNzaW9uID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1pbmljb20gPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbWtlbGZpbWFnZSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1rZm9udGRpciA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ta2ZvbnRzY2FsZSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ta2xpYnMtbmF0aXZlID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW1rdGVtcCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tbWMtdXRpbHMgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbW9iaWxlLWJyb2FkYmFuZC1wcm92aWRlci1pbmZvID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbW9kdXRpbHMtaW5pdHNjcmlwdHMgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbXBlZzJkZWMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tcGZyID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbXBnMTIzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbXNtdHAgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tdGQtdXRpbHMgPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tdGRldiA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW10b29scyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1tdXNsID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbXgtMS4wID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbmFzbSA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1uYXRpdmVzZGstYnVpbGR0b29scy1wZXJsLWR1bW15ID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbmF0aXZlc2RrLWxpYnRvb2wgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbmF0aXZlc2RrLXBhY2thZ2Vncm91cC1zZGstaG9zdCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW5hdGl2ZXNkay1xZW11LWhlbHBlciA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW5hdGl2ZXNkay1wb3N0aW5zdC1pbnRlcmNlcHQgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1uY3Vyc2VzID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1uZWFyZCA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1uZW9uID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW5ldC10b29scyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1uZXRiYXNlID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW5ldHRsZSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW5mcy1leHBvcnQtcm9vdCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1uZnMtdXRpbHMgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1uaW5qYSA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW5wdGggPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1uc3ByID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW5zcyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1uc3MtbXlob3N0bmFtZSA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1vZm9ubyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1vaC1wdXp6bGVzID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tb3BlbnNzaCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1vcGVuc3NsID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tb3BrZyA9ICJBbGVqYW5kcm8gZGVsIENhc3RpbGxvIDxhbGVqYW5kcm8uZGVsY2FzdGlsbG9AbmkuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW9wa2ctYXJjaC1jb25maWcgPSAiQWxlamFuZHJvIGRlbCBDYXN0aWxsbyA8YWxlamFuZHJvLmRlbGNhc3RpbGxvQG5pLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1vcGtnLWtleXJpbmdzID0gIkFsZWphbmRybyBkZWwgQ2FzdGlsbG8gPGFsZWphbmRyby5kZWxjYXN0aWxsb0BuaS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tb3BrZy11dGlscyA9ICJBbGVqYW5kcm8gZGVsIENhc3RpbGxvIDxhbGVqYW5kcm8uZGVsY2FzdGlsbG9AbmkuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW9wcm9maWxlID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tb3JjID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLW9zLXJlbGVhc2UgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1vc3NwLXV1aWQgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1vdm1mID0gIlJpY2FyZG8gTmVyaSA8cmljYXJkby5uZXJpLWNhbGRlcm9uQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1vdm1mLXNoZWxsLWltYWdlID0gIlJpY2FyZG8gTmVyaSA8cmljYXJkby5uZXJpLWNhbGRlcm9uQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wMTEta2l0ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcGFja2FnZS1pbmRleCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXBhbmdvID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcGFydGVkID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wYXRjaCA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcGF0Y2hlbGYgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcGF4ID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wYXgtdXRpbHMgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXBiemlwMiA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXBjaXV0aWxzID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wY21hbmZtID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcGNtY2lhdXRpbHMgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcGVyZiA9ICJCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wZXJsID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcGVybC1uYXRpdmUgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1waWdsaXQgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1waWd6ID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1waW5lbnRyeSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXBpeG1hbiA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXBpeHogPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wa2djb25maWcgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcG0tdXRpbHMgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcG9pbnRlcmNhbCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXBvaW50ZXJjYWwteGlucHV0ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcG9uZy1jbG9jayA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXBvcHQgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXBvcnRtYXAgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcG93ZXJ0b3AgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wcHAgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXBwcC1kaWFsaW4gPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXByZWxpbmsgPSAiTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXByZXNlbnRwcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wcm9jcHMgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1wc2V1ZG8gPSAiTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXBzbWlzYyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXBzcGxhc2ggPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB0ZXN0LXJ1bm5lciA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB1bHNlYXVkaW8gPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB1bHNlYXVkaW8tY2xpZW50LWNvbmYtc2F0byA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHV6emxlcyA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbiA9ICJBbGVqYW5kcm8gSGVybmFuZGV6IDxhbGVqYW5kcm8uaGVybmFuZGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tbmF0aXZlID0gIkFsZWphbmRybyBIZXJuYW5kZXogPGFsZWphbmRyby5oZXJuYW5kZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1hc3luYyA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLWRpc3RyaWJ1dGUgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1naXQgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1naXRkYiA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLWltYWdpbmcgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1tYWtvID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tbmF0aXZlID0gIkFsZWphbmRybyBIZXJuYW5kZXogPGFsZWphbmRyby5oZXJuYW5kZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1ub3NlID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tbnVtcHkgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1wZXhwZWN0ID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tcHR5cHJvY2VzcyA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLXB5Y2Fpcm8gPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1weWN1cmwgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1weWd0ayA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLXB5cmV4ID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tc2NvbnMgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1zY29ucy1uYXRpdmUgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1zZXR1cHRvb2xzID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tc2l4ID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24tc21hcnRwbSA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uLXNtbWFwID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zID0gIkFsZWphbmRybyBIZXJuYW5kZXogPGFsZWphbmRyby5oZXJuYW5kZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtYXN5bmMgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtZGJ1cyA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1kaXN0cmlidXRlID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLWRvY3V0aWxzID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLWdpdCA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1naXRkYiA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1pbmlwYXJzZSA9ICJKb3NlIExhbWVnbyA8am9zZS5hLmxhbWVnb0BsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1tYWtvID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLW5hdGl2ZSA9ICJBbGVqYW5kcm8gSGVybmFuZGV6IDxhbGVqYW5kcm8uaGVybmFuZGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLW5vc2UgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtbnVtcHkgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtcGlwID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLXB5Y2Fpcm8gPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtcHlnb2JqZWN0ID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLXNldHVwdG9vbHMgPSAiSm9zZSBMYW1lZ28gPGpvc2UuYS5sYW1lZ29AbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtc2l4ID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLXNtbWFwID0gIkpvc2UgTGFtZWdvIDxqb3NlLmEubGFtZWdvQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1xZW11ID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcWVtdS1oZWxwZXItbmF0aXZlID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcWVtdXdyYXBwZXItY3Jvc3MgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1xdWlsdCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1xdWlsdC1uYXRpdmUgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcXVvdGEgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcmFuZHJwcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1yZTJjID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcmVhZGxpbmUgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXJlY29yZHByb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXJlbWFrZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1yZW5kZXJwcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1yZXNvbHZjb25mID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1yZXNvdXJjZXByb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXJnYiA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ycGNiaW5kID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ybmctdG9vbHMgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcnBtID0gIk1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ycG1yZXNvbHZlID0gIk1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1yc3luYyA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ydC10ZXN0cyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXJ1YnkgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1ydW4tcG9zdGluc3RzID0gIkNyaXN0aWFuIElvcmdhIDxjcmlzdGlhbi5pb3JnYUBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcnh2dC11bmljb2RlID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXNhdG8taWNvbi10aGVtZSA9ICJBbGVqYW5kcm8gSGVybmFuZGV6IDxhbGVqYW5kcm8uaGVybmFuZGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zYXRvLXNjcmVlbnNob3QgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zYmMgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXNjcmVlbiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zY3Juc2F2ZXJwcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zZWQgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXNlcmYgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc2V0c2VyaWFsID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXNldHRpbmdzLWRhZW1vbiA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXNoYWRvdyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc2hhZG93LXNlY3VyZXR0eSA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc2hhZG93LXN5c3Jvb3QgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXNoYXJlZC1taW1lLWluZm8gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zaHV0ZG93bi1kZXNrdG9wID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc2lnbmluZy1rZXlzID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXNsYW5nID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXNvY2F0ID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zb3VyY2UtaGlnaGxpZ2h0ID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc3BlZXggPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXNwZWV4ZHNwID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zcWxpdGUzID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXNxdWFzaGZzLXRvb2xzID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXN0YXJ0dXAtbm90aWZpY2F0aW9uID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc3RhdCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc3RyYWNlID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXN0cmVzcyA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zdWJ2ZXJzaW9uID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXN1ZG8gPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXN3YWJiZXItbmF0aXZlID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc3dpZyA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c2ZzdXRpbHMgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c2tsb2dkID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXNsaW51eCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c3Byb2YgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXNzdGF0ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXN0ZW1kID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXN0ZW1kLWJvb3QgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c3RlbWQtYm9vdGNoYXJ0ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXN0ZW1kLWNvbXBhdC11bml0cyA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzdGVtZC1zZXJpYWxnZXR0eSA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzdGVtZC1zeXN0ZW1jdGwtbmF0aXZlID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXN0ZW10YXAgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXN0ZW10YXAtdXByb2JlcyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c3Zpbml0ID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tc3lzdmluaXQtaW5pdHRhYiA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXRhZ2xpYiA9ICJNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi10YXIgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXRjZi1hZ2VudCA9ICJSYW5keSBXaXR0IDxyYW5keS5lLndpdHRAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXRjbCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi10Y3Atd3JhcHBlcnMgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdGVzdGV4cG9ydC10YXJiYWxsID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXRleGkyaHRtbCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi10ZXhpbmZvID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdGV4aW5mby1kdW1teS1uYXRpdmUgPSAiTGVvbmFyZG8gU2FuZG92YWwgPGxlb25hcmRvLnNhbmRvdmFsLmdvbnphbGV6QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi10aWZmID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdGltZSA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi10aW55LWluaXQgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi10cmFjZS1jbWQgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi10cmVtb3IgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXRzbGliID0gIkp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdHRmLWJpdHN0cmVhbS12ZXJhID0gIkxlb25hcmRvIFNhbmRvdmFsIDxsZW9uYXJkby5zYW5kb3ZhbC5nb256YWxlekBsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdHpjb2RlLW5hdGl2ZSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi10emRhdGEgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdS1ib290ID0gIk1hcmVrIFZhc3V0IDxtYXJlay52YXN1dEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdS1ib290LWZ3LXV0aWxzID0gIk1hcmVrIFZhc3V0IDxtYXJlay52YXN1dEBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdS1ib290LW1raW1hZ2UgPSAiTWFyZWsgVmFzdXQgPG1hcmVrLnZhc3V0QGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi11Ym9vdGNoYXJ0ID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdWRldi1leHRyYWNvbmYgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdW5mczMgPSAiUmFuZHkgV2l0dCA8cmFuZHkuZS53aXR0QGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi11bmlmZGVmID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdW5pbmF0aXZlLXRhcmJhbGwgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdW56aXAgPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi11cGRhdGUtcmMuZCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXVzYmluaXQgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi11c2J1dGlscyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXV0aWwtbGludXggPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXV0aWwtbWFjcm9zID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXY4NmQgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi12YWxhID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tdmFsZ3JpbmQgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi12aWRlb3Byb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXZvbGF0aWxlLWJpbmRzID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi12dGUgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi12dWxrYW4gPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi12dWxrYW4tZGVtb3MgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi13YWZmbGUgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi13YXRjaGRvZyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXdhdGNoZG9nLWNvbmZpZyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXdheWxhbmQgPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi13YXlsYW5kLXByb3RvY29scyA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXdlYmtpdGd0ayA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXdlc3RvbiA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXdlc3Rvbi1pbml0ID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4td2dldCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi13aGljaCA9ICJMZW9uYXJkbyBTYW5kb3ZhbCA8bGVvbmFyZG8uc2FuZG92YWwuZ29uemFsZXpAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXdpYy10b29scyA9ICJFZCBCYXJ0b3NoIDxlZC5iYXJ0b3NoQGxpbnV4LmludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi13aXJlbGVzcy10b29scyA9ICJDaGFuZ2h5ZW9rIEJhZSA8Y2hhbmdoeWVvay5iYWVAbGdlLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi13cGEtc3VwcGxpY2FudCA9ICJDaGFuZ2h5ZW9rIEJhZSA8Y2hhbmdoeWVvay5iYWVAbGdlLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14MTEtY29tbW9uID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXgxMXBlcmYgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teDI2NCA9ICJKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhhdXRoID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhjYi1wcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14Y2ItdXRpbCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14Y2ItdXRpbC1pbWFnZSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14Y2ItdXRpbC1rZXlzeW1zID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhjYi11dGlsLXJlbmRlcnV0aWwgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGNiLXV0aWwtd20gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGNtaXNjcHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGN1cnNvci10cmFuc3BhcmVudC10aGVtZSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14ZGctdXRpbHMgPSAiSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14ZHB5aW5mbyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14ZXYgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGV4dHByb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhleWVzID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhmODYtaW5wdXQtZXZkZXYgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGY4Ni1pbnB1dC1rZXlib2FyZCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14Zjg2LWlucHV0LWxpYmlucHV0ID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhmODYtaW5wdXQtbW91c2UgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGY4Ni1pbnB1dC1zeW5hcHRpY3MgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGY4Ni1pbnB1dC12bW1vdXNlID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhmODYtdmlkZW8tY2lycnVzID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhmODYtdmlkZW8tZmJkZXYgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGY4Ni12aWRlby1pbnRlbCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14Zjg2LXZpZGVvLW9tYXAgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGY4Ni12aWRlby1vbWFwZmIgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGY4Ni12aWRlby12ZXNhID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhmODYtdmlkZW8tdm13YXJlID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhmODZkZ2Fwcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14Zjg2ZHJpcHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGY4Nm1pc2Nwcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14Zjg2dmlkbW9kZXByb3RvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhob3N0ID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhpbmVyYW1hcHJvdG8gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teGluZXRkID0gIk1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhpbml0ID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhpbnB1dCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14aW5wdXQtY2FsaWJyYXRvciA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14a2Jjb21wID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhrZXlib2FyZC1jb25maWcgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teG1sdG8gPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhtb2RtYXAgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teG9yZy1taW5pbWFsLWZvbnRzID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhwcm9wID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhwcm90byA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14cmFuZHIgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teHJlc3RvcCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14c2VydmVyLW5vZG0taW5pdCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14c2VydmVyLXhmODYtY29uZmlnID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXhzZXJ2ZXIteG9yZyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14c2V0ID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXh0cmFucyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14dHNjYWwgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teHVzZXItYWNjb3VudCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi14dmlkZW8tdGVzdHMgPSAiTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teHZpbmZvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXh3aW5pbmZvID0gIkFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXh6ID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4teWFzbSA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4temlwID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4temlzb2ZzLXRvb2xzLW5hdGl2ZSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleGFuZGVyLmthbmF2aW5AaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXpsaWIgPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL25vLXN0YXRpYy1saWJzLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvbm8tc3RhdGljLWxpYnMuaW5jCmluZGV4IGY4ZDhjMDkuLjdjMTY1YzcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvbm8tc3RhdGljLWxpYnMuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvbm8tc3RhdGljLWxpYnMuaW5jCkBAIC0yNSw2ICsyNSw5IEBACiBESVNBQkxFX1NUQVRJQ19wbi1vcGVuc3NsID0gIiIKIERJU0FCTEVfU1RBVElDX3BuLW9wZW5zc2wtbmF0aXZlID0gIiIKIERJU0FCTEVfU1RBVElDX3BuLW5hdGl2ZXNkay1vcGVuc3NsID0gIiIKK0RJU0FCTEVfU1RBVElDX3BuLW9wZW5zc2wxMCA9ICIiCitESVNBQkxFX1NUQVRJQ19wbi1vcGVuc3NsMTAtbmF0aXZlID0gIiIKK0RJU0FCTEVfU1RBVElDX3BuLW5hdGl2ZXNkay1vcGVuc3NsMTAgPSAiIgogIyBsaWJzc3Atc3RhdGljLWRldiBpbmNsdWRlZCBpbiBidWlsZC1hcHBsaWFuY2UKIERJU0FCTEVfU1RBVElDX3BuLWdjYy1ydW50aW1lID0gIiIKICMgbGlidXNiMS1uYXRpdmUgaXMgdXNlZCB0byBidWlsZCBzdGF0aWMgZGZ1LXV0aWwtbmF0aXZlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3NlY3VyaXR5X2ZsYWdzLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvc2VjdXJpdHlfZmxhZ3MuaW5jCmluZGV4IGUxNjJhYmUuLmFiMjA2MmIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvc2VjdXJpdHlfZmxhZ3MuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvc2VjdXJpdHlfZmxhZ3MuaW5jCkBAIC0xLDEwICsxLDEyIEBACi0jIFNldHVwIGV4dHJhIENGTEFHUyBhbmQgTERGTEFHUyB3aGljaCBoYXZlICdzZWN1cml0eScgYmVuZWZpdHMuIFRoZXNlIAorIyBTZXR1cCBleHRyYSBDRkxBR1MgYW5kIExERkxBR1Mgd2hpY2ggaGF2ZSAnc2VjdXJpdHknIGJlbmVmaXRzLiBUaGVzZQogIyBkb24ndCB3b3JrIHVuaXZlcnNhbGx5LCB0aGVyZSBhcmUgcmVjaXBlcyB3aGljaCBjYW4ndCB1c2Ugb25lLCB0aGUgb3RoZXIKICMgb3IgYm90aCBzbyBhIGJsYWNrbGlzdCBpcyBtYWludGFpbmVkIGhlcmUuIFRoZSBpZGVhIHdvdWxkIGJlIG92ZXIKICMgdGltZSB0byByZWR1Y2UgdGhpcyBsaXN0IHRvIG5vdGhpbmcuCiAjIEZyb20gYSBZb2N0byBQcm9qZWN0IHBlcnNwZWN0aXZlLCB0aGlzIGZpbGUgaXMgaW5jbHVkZWQgYW5kIHRlc3RlZAogIyBpbiB0aGUgRElTVFJPPSJwb2t5LWxzYiIgY29uZmlndXJhdGlvbi4KIAorR0NDUElFID89ICItLWVuYWJsZS1kZWZhdWx0LXBpZSIKKwogIyBfRk9SVElGWV9TT1VSQ0UgcmVxdWlyZXMgLU8xIG9yIGhpZ2hlciwgc28gZGlzYWJsZSBpbiBkZWJ1ZyBidWlsZHMgYXMgdGhleSB1c2UKICMgLU8wIHdoaWNoIHRoZW4gcmVzdWx0cyBpbiBhIGNvbXBpbGVyIHdhcm5pbmcuCiBsY2xfbWF5YmVfZm9ydGlmeSA9ICIke0BiYXNlX2NvbmRpdGlvbmFsKCdERUJVR19CVUlMRCcsJzEnLCcnLCctRF9GT1JUSUZZX1NPVVJDRT0yJyxkKX0iCkBAIC0xMiw5NiArMTQsNTEgQEAKICMgRXJyb3Igb24gdXNlIG9mIGZvcm1hdCBzdHJpbmdzIHRoYXQgcmVwcmVzZW50IHBvc3NpYmxlIHNlY3VyaXR5IHByb2JsZW1zCiBTRUNVUklUWV9TVFJJTkdGT1JNQVQgPz0gIi1XZm9ybWF0IC1XZm9ybWF0LXNlY3VyaXR5IC1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5IgogCi1TRUNVUklUWV9DRkxBR1MgPz0gIi1mc3RhY2stcHJvdGVjdG9yLXN0cm9uZyAtcGllIC1mcGllICR7bGNsX21heWJlX2ZvcnRpZnl9ICR7U0VDVVJJVFlfU1RSSU5HRk9STUFUfSIKKyMgSW5qZWN0IHBpZSBmbGFncyBpbnRvIGNvbXBpbGVyIGZsYWdzIGlmIG5vdCBjb25maWd1cmVkIHdpdGggZ2NjIGl0c2VsZgorIyBlc3BlY2lhbGx5IHVzZWZ1bCB3aXRoIGV4dGVybmFsIHRvb2xjaGFpbnMKK1NFQ1VSSVRZX1BJRV9DRkxBR1MgPz0gIiR7QCcnIGlmICcke0dDQ1BJRX0nIGVsc2UgJy1waWUgLWZQSUUnfSIKKworU0VDVVJJVFlfTk9QSUVfQ0ZMQUdTID89ICItbm8tcGllIC1mbm8tUElFIgorCitTRUNVUklUWV9DRkxBR1MgPz0gIi1mc3RhY2stcHJvdGVjdG9yLXN0cm9uZyAke1NFQ1VSSVRZX1BJRV9DRkxBR1N9ICR7bGNsX21heWJlX2ZvcnRpZnl9ICR7U0VDVVJJVFlfU1RSSU5HRk9STUFUfSIKIFNFQ1VSSVRZX05PX1BJRV9DRkxBR1MgPz0gIi1mc3RhY2stcHJvdGVjdG9yLXN0cm9uZyAke2xjbF9tYXliZV9mb3J0aWZ5fSAke1NFQ1VSSVRZX1NUUklOR0ZPUk1BVH0iCiAKIFNFQ1VSSVRZX0xERkxBR1MgPz0gIi1mc3RhY2stcHJvdGVjdG9yLXN0cm9uZyAtV2wsLXoscmVscm8sLXosbm93IgogU0VDVVJJVFlfWF9MREZMQUdTID89ICItZnN0YWNrLXByb3RlY3Rvci1zdHJvbmcgLVdsLC16LHJlbHJvIgogCiAjIHBvd2VycGMgZG9lcyBub3QgZ2V0IG9uIHdpdGggcGllIGZvciByZWFzb25zIG5vdCBsb29rZWQgaW50byBhcyB5ZXQKLVNFQ1VSSVRZX0NGTEFHU19wb3dlcnBjID0gIi1mc3RhY2stcHJvdGVjdG9yLXN0cm9uZyAke2xjbF9tYXliZV9mb3J0aWZ5fSIKLSMgRGVhbCB3aXRoIHBwYyBzcGVjaWZpYyBsaW5rZXIgZmFpbHVyZXMgd2hlbiB1c2luZyB0aGUgY2ZsYWdzCi1TRUNVUklUWV9DRkxBR1NfcG4tZGJ1c19wb3dlcnBjID0gIiIKLVNFQ1VSSVRZX0NGTEFHU19wbi1kYnVzLXB0ZXN0X3Bvd2VycGMgPSAiIgotU0VDVVJJVFlfQ0ZMQUdTX3BuLWxpYm1hdGNoYm94X3Bvd2VycGMgPSAiIgorU0VDVVJJVFlfQ0ZMQUdTX3Bvd2VycGMgPSAiLWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nICR7bGNsX21heWJlX2ZvcnRpZnl9ICR7U0VDVVJJVFlfTk9QSUVfQ0ZMQUdTfSIKK1NFQ1VSSVRZX0NGTEFHU19wbi1saWJnY2NfcG93ZXJwYyA9ICIiCitHQ0NQSUVfcG93ZXJwYyA9ICIiCiAKICMgYXJtIHNwZWNpZmljIHNlY3VyaXR5IGZsYWcgaXNzdWVzCi1TRUNVUklUWV9DRkxBR1NfcG4tbHR0bmctdG9vbHNfYXJtID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tYXNwZWxsID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tYmVlY3J5cHQgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1jb3JldXRpbHMgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1jdXBzID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tZGIgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1kaXJlY3RmYiA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgogU0VDVVJJVFlfQ0ZMQUdTX3BuLWdsaWJjID0gIiIKIFNFQ1VSSVRZX0NGTEFHU19wbi1nbGliYy1pbml0aWFsID0gIiIKLVNFQ1VSSVRZX0NGTEFHU19wbi1lbGZ1dGlscyA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLWVuY2hhbnQgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1leHBlY3QgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1mbGFjID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tZ2NjID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCiBTRUNVUklUWV9DRkxBR1NfcG4tZ2NjLXJ1bnRpbWUgPSAiIgotU0VDVVJJVFlfQ0ZMQUdTX3BuLWdjYy1zYW5pdGl6ZXJzID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tZ2RiID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tZ21wID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tZ251dGxzID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tZ3BnbWUgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKIFNFQ1VSSVRZX0NGTEFHU19wbi1ncnViID0gIiIKIFNFQ1VSSVRZX0NGTEFHU19wbi1ncnViLWVmaSA9ICIiCiBTRUNVUklUWV9DRkxBR1NfcG4tZ3J1Yi1lZmktbmF0aXZlID0gIiIKIFNFQ1VSSVRZX0NGTEFHU19wbi1ncnViLWVmaS14ODYtbmF0aXZlID0gIiIKIFNFQ1VSSVRZX0NGTEFHU19wbi1ncnViLWVmaS1pNTg2LW5hdGl2ZSA9ICIiCiBTRUNVUklUWV9DRkxBR1NfcG4tZ3J1Yi1lZmkteDg2LTY0LW5hdGl2ZSA9ICIiCi1TRUNVUklUWV9DRkxBR1NfcG4tZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZCA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLWhhcmZidXp6ID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4ta2V4ZWMtdG9vbHMgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1pcHRhYmxlcyA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLWxpYmFpbyA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLWxpYmNhcCA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLWxpYmdjYyA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLWxpYmlkM3RhZyA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLWxpYm5ld3QtcHl0aG9uID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tbGliZ2x1ID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tbGlicGNhcCA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLWxpYnBjcmUgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1saWJwcm94eSA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLW1lc2EgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1tZXNhLWdsID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tb3BlbnNzbCA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLW9wZW5zcCA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLXBwcCA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLXB5dGhvbiA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLXB5dGhvbi1weWN1cmwgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1weXRob24tbnVtcHkgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1weXRob24zLW51bXB5ID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tcHl0aG9uMy1weWNhaXJvID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tcHl0aG9uMy1weWN1cmwgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1weXRob24zLXB5Z3BnbWUgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1weXRob24zID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tc3lzbGludXggPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi1zbGFuZyA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgotU0VDVVJJVFlfQ0ZMQUdTX3BuLXNvdXJjZS1oaWdobGlnaHQgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi10Y2wgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLVNFQ1VSSVRZX0NGTEFHU19wbi10aWZmID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCi1TRUNVUklUWV9DRkxBR1NfcG4tdWNsaWJjID0gIiIKLVNFQ1VSSVRZX0NGTEFHU19wbi11Y2xpYmMtaW5pdGlhbCA9ICIiCi1TRUNVUklUWV9DRkxBR1NfcG4tdmFsZ3JpbmQgPSAiIgotU0VDVVJJVFlfQ0ZMQUdTX3BuLXpsaWIgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKKworU0VDVVJJVFlfQ0ZMQUdTX3BuLW1rZWxmaW1hZ2VfeDg2ID0gIiIKKworU0VDVVJJVFlfQ0ZMQUdTX3BuLXZhbGdyaW5kID0gIiR7U0VDVVJJVFlfTk9QSUVfQ0ZMQUdTfSIKK1NFQ1VSSVRZX0xERkxBR1NfcG4tdmFsZ3JpbmQgPSAiIgorU0VDVVJJVFlfQ0ZMQUdTX3BuLXN5c2tsb2dkID0gIiR7U0VDVVJJVFlfTk9QSUVfQ0ZMQUdTfSIKK1NFQ1VSSVRZX0xERkxBR1NfcG4tc3lza2xvZ2QgPSAiIgogCiAjIFJlY2lwZXMgd2hpY2ggZmFpbCB0byBjb21waWxlIHdoZW4gZWxldmF0aW5nIC1XZm9ybWF0LXNlY3VyaXR5IHRvIGFuIGVycm9yCiBTRUNVUklUWV9TVFJJTkdGT1JNQVRfcG4tYnVzeWJveCA9ICIiCiBTRUNVUklUWV9TVFJJTkdGT1JNQVRfcG4tZ2NjID0gIiIKLVNFQ1VSSVRZX1NUUklOR0ZPUk1BVF9wbi1vaC1wdXp6bGVzID0gIiIKIAotVEFSR0VUX0NGTEFHU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke1NFQ1VSSVRZX0NGTEFHU30iCitUQVJHRVRfQ0NfQVJDSF9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke1NFQ1VSSVRZX0NGTEFHU30iCiBUQVJHRVRfTERGTEFHU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke1NFQ1VSSVRZX0xERkxBR1N9IgogCiBTRUNVUklUWV9MREZMQUdTX3JlbW92ZV9wbi1nY2MtcnVudGltZSA9ICItZnN0YWNrLXByb3RlY3Rvci1zdHJvbmciCiBTRUNVUklUWV9MREZMQUdTX3JlbW92ZV9wbi1nbGliYyA9ICItZnN0YWNrLXByb3RlY3Rvci1zdHJvbmciCiBTRUNVUklUWV9MREZMQUdTX3JlbW92ZV9wbi1nbGliYy1pbml0aWFsID0gIi1mc3RhY2stcHJvdGVjdG9yLXN0cm9uZyIKLVNFQ1VSSVRZX0xERkxBR1NfcmVtb3ZlX3BuLXVjbGliYyA9ICItZnN0YWNrLXByb3RlY3Rvci1zdHJvbmciCi1TRUNVUklUWV9MREZMQUdTX3JlbW92ZV9wbi11Y2xpYmMtaW5pdGlhbCA9ICItZnN0YWNrLXByb3RlY3Rvci1zdHJvbmciCiBTRUNVUklUWV9MREZMQUdTX3BuLXhmODYtdmlkZW8tZmJkZXYgPSAiJHtTRUNVUklUWV9YX0xERkxBR1N9IgogU0VDVVJJVFlfTERGTEFHU19wbi14Zjg2LXZpZGVvLWludGVsID0gIiR7U0VDVVJJVFlfWF9MREZMQUdTfSIKIFNFQ1VSSVRZX0xERkxBR1NfcG4teGY4Ni12aWRlby1vbWFwZmIgPSAiJHtTRUNVUklUWV9YX0xERkxBR1N9IgpAQCAtMTEwLDQgKzY3LDcgQEAKIFNFQ1VSSVRZX0xERkxBR1NfcG4teGY4Ni12aWRlby12bXdhcmUgPSAiJHtTRUNVUklUWV9YX0xERkxBR1N9IgogU0VDVVJJVFlfTERGTEFHU19wbi14c2VydmVyLXhvcmcgPSAiJHtTRUNVUklUWV9YX0xERkxBR1N9IgogCi1UQVJHRVRfQ0NfQVJDSF9hcHBlbmRfcG4tYmludXRpbHMgPSAiICR7U0VDVVJJVFlfQ0ZMQUdTfSAke1NFTEVDVEVEX09QVElNSVpBVElPTn0iCitUQVJHRVRfQ0NfQVJDSF9hcHBlbmRfcG4tYmludXRpbHMgPSAiICR7U0VMRUNURURfT1BUSU1JWkFUSU9OfSIKK1RBUkdFVF9DQ19BUkNIX2FwcGVuZF9wbi1nY2MgPSAiICR7U0VMRUNURURfT1BUSU1JWkFUSU9OfSIKK1RBUkdFVF9DQ19BUkNIX2FwcGVuZF9wbi1nZGIgPSAiICR7U0VMRUNURURfT1BUSU1JWkFUSU9OfSIKK1RBUkdFVF9DQ19BUkNIX2FwcGVuZF9wbi1wZXJmID0gIiAke1NFTEVDVEVEX09QVElNSVpBVElPTn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbGliYy1tdXNsLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdGNsaWJjLW11c2wuaW5jCmluZGV4IDNkM2Y2YWMuLjlhZTJhOTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdGNsaWJjLW11c2wuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdGNsaWJjLW11c2wuaW5jCkBAIC0xNCw2ICsxNCw4IEBACiBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9uYXRpdmVzZGstbGliaW50bCA/PSAibmF0aXZlc2RrLWdsaWJjIgogUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvbmF0aXZlc2RrLWxpYmljb252ID89ICJuYXRpdmVzZGstZ2xpYmMiCiAKK0RJU1RST19GRUFUVVJFU19CQUNLRklMTF9DT05TSURFUkVEICs9ICJsZGNvbmZpZyIKKwogI1VTRV9OTFMgPz0gIm5vIgogCiBDWFhGTEFHUyArPSAiLWZ2aXNpYmlsaXR5LWlubGluZXMtaGlkZGVuIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y21vZGUtZGVmYXVsdC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbW9kZS1kZWZhdWx0LmluYwppbmRleCAzZGIxNmU4Li4xNzg3YTgyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbW9kZS1kZWZhdWx0LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbW9kZS1kZWZhdWx0LmluYwpAQCAtMjIsMTMgKzIyLDEyIEBACiBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9uYXRpdmVzZGstJHtTREtfUFJFRklYfWxpYmMtaW5pdGlhbCA/PSAibmF0aXZlc2RrLWdsaWJjLWluaXRpYWwiCiBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9nZXR0ZXh0ID8/PSAiZ2V0dGV4dCIKIAotR0NDVkVSU0lPTiA/PSAiNi4zJSIKK0dDQ1ZFUlNJT04gPz0gIjcuJSIKIFNES0dDQ1ZFUlNJT04gPz0gIiR7R0NDVkVSU0lPTn0iCi1CSU5VVkVSU0lPTiA/PSAiMi4yOCUiCi1HREJWRVJTSU9OID89ICI3LjEyJSIKLUdMSUJDVkVSU0lPTiA/PSAiMi4yNSIKLVVDTElCQ1ZFUlNJT04gPz0gIjEuMCUiCi1MSU5VWExJQkNWRVJTSU9OID89ICI0LjEwJSIKK0JJTlVWRVJTSU9OID89ICIyLjI5JSIKK0dEQlZFUlNJT04gPz0gIjguMCUiCitHTElCQ1ZFUlNJT04gPz0gIjIuMjYlIgorTElOVVhMSUJDVkVSU0lPTiA/PSAiNC4xMiUiCiAKIFBSRUZFUlJFRF9WRVJTSU9OX2djYyA/PSAiJHtHQ0NWRVJTSU9OfSIKIFBSRUZFUlJFRF9WRVJTSU9OX2djYy1jcm9zcy0ke1RBUkdFVF9BUkNIfSA/PSAiJHtHQ0NWRVJTSU9OfSIKQEAgLTQ4LDcgKzQ3LDcgQEAKIFBSRUZFUlJFRF9WRVJTSU9OX2JpbnV0aWxzID89ICIke0JJTlVWRVJTSU9OfSIKIFBSRUZFUlJFRF9WRVJTSU9OX2JpbnV0aWxzLW5hdGl2ZSA/PSAiJHtCSU5VVkVSU0lPTn0iCiBQUkVGRVJSRURfVkVSU0lPTl9iaW51dGlscy1jcm9zcy0ke1RBUkdFVF9BUkNIfSA/PSAiJHtCSU5VVkVSU0lPTn0iCi1QUkVGRVJSRURfVkVSU0lPTl9iaW51dGlscy1jcm9zc3Nkay0ke1NES19BUkNIfSA/PSAiJHtCSU5VVkVSU0lPTn0iCitQUkVGRVJSRURfVkVSU0lPTl9iaW51dGlscy1jcm9zc3Nkay0ke1NES19TWVN9ID89ICIke0JJTlVWRVJTSU9OfSIKIFBSRUZFUlJFRF9WRVJTSU9OX2JpbnV0aWxzLWNyb3NzLWNhbmFkaWFuLSR7VFJBTlNMQVRFRF9UQVJHRVRfQVJDSH0gPz0gIiR7QklOVVZFUlNJT059IgogUFJFRkVSUkVEX1ZFUlNJT05fZ2RiID89ICIke0dEQlZFUlNJT059IgogUFJFRkVSUkVEX1ZFUlNJT05fZ2RiLWNyb3NzLSR7VEFSR0VUX0FSQ0h9ID89ICIke0dEQlZFUlNJT059IgpAQCAtNjQsOCArNjMsNiBAQAogUFJFRkVSUkVEX1ZFUlNJT05fZ2xpYmMtaW5pdGlhbCAgICAgICAgICAgID89ICIke0dMSUJDVkVSU0lPTn0iCiBQUkVGRVJSRURfVkVSU0lPTl9uYXRpdmVzZGstZ2xpYmMtaW5pdGlhbCAgPz0gIiR7R0xJQkNWRVJTSU9OfSIKIFBSRUZFUlJFRF9WRVJTSU9OX2Nyb3NzLWxvY2FsZWRlZi1uYXRpdmUgICA/PSAiJHtHTElCQ1ZFUlNJT059IgotUFJFRkVSUkVEX1ZFUlNJT05fdWNsaWJjICAgICAgICAgICAgICAgICAgID89ICIke1VDTElCQ1ZFUlNJT059IgotUFJFRkVSUkVEX1ZFUlNJT05fdWNsaWJjLWluaXRpYWwgICAgICAgICAgID89ICIke1VDTElCQ1ZFUlNJT059IgogIyBkb24ndCB1c2UgdmVyc2lvbiBlYXJsaWVyIHRoYW4gMS40IGZvciBnemlwLW5hdGl2ZSwgYXMgaXQncyBuZWNlc3NhcnkgZm9yCiAjIHNvbWUgcGFja2FnZXMgdXNpbmcgYW4gYXJjaGl2ZSBmb3JtYXQgaW5jb21wYXRpYmxlIHdpdGggZWFybGllciBnemlwCiBQUkVGRVJSRURfVkVSU0lPTl9nemlwLW5hdGl2ZSA/PSAiMS44IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS91bmluYXRpdmUtZmxhZ3MuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS91bmluYXRpdmUtZmxhZ3MuaW5jCmluZGV4IGI2YTk0NGUuLmZlYmYyYTUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdW5pbmF0aXZlLWZsYWdzLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3VuaW5hdGl2ZS1mbGFncy5pbmMKQEAgLTEsMTMgKzEsMyBAQAotIyBodHRwczovL3dpa2kuZGViaWFuLm9yZy9HQ0M1Ci0jIFdlIG1heSBzZWUgYmluYXJpZXMgYnVpbHQgd2l0aCBnY2M1IHJ1biBvciBsaW5rZWQgaW50byBnY2M0IGVudmlyb25tZW50Ci0jIHNvIHVzZSB0aGUgb2xkZXIgbGlic3RkYysrIHN0YW5kYXJkIGZvciBub3cgdW50aWwgd2UgZG9uJ3Qgc3VwcG9ydCBnY2M0Ci0jIG9uIHRoZSBob3N0IHN5c3RlbS4KLUJVSUxEX0NYWEZMQUdTX2FwcGVuZCA9ICIgLURfR0xJQkNYWF9VU0VfQ1hYMTFfQUJJPTAiCi0KLSMgaWN1IGNvbmZpZ3VyZSBkZWZhdWx0cyB0byBDWFgxMSBpZiBubyAtc3RkPSBvcHRpb24gaXMgcGFzc2VkIGluIENYWEZMQUdTCi0jIHRoZXJlZm9yZSBwYXNzIG9uZQotQlVJTERfQ1hYRkxBR1NfYXBwZW5kX3BuLWljdS1uYXRpdmUgPSAiIC1zdGQ9YysrOTgiCi0KICMgU29tZSBkaXN0cm9zICh1YnVudHUgMTYuMTAsIGRlYmlhbi10ZXN0aW5nKSBkZWZhdWx0IHRvIGdjYyBjb25maWd1cmVkIHdpdGgKICMgLS1lbmFibGUtZGVmYXVsdC1waWUgKHNlZSBnY2MgLXYpLiBUaGlzIGJyZWFrcyBlLmcuIHByZWxpbmstbmF0aXZlIG9uIGEgcGllCiAjIGRlZmF1bHQgc3lzdGVtIGlmIGJpbnV0aWxzLW5hdGl2ZSB3YXMgYnVpbHQgb24gYSBzeXN0ZW0gd2hpY2ggaXMgbm90IHBpZSBkZWZhdWx0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3dvcmxkLWJyb2tlbi5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3dvcmxkLWJyb2tlbi5pbmMKaW5kZXggZDRiZGRkZi4uNDllOTUxNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS93b3JsZC1icm9rZW4uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvd29ybGQtYnJva2VuLmluYwpAQCAtNywyOCArNywxNCBAQAogCiAjIGVycm9yOiBubyBtZW1iZXIgbmFtZWQgJ3Npbl9wb3J0JyBpbiAnc3RydWN0IHNvY2thZGRyX2luNicKICMgdGhpcyBpcyBkdWUgdG8gbGlidGlycGMgdXNpbmcgaXB2NiBidXQgcG9ydG1hcCBycGMgZXhwZWN0aW5nIGlwdjQKLUVYQ0xVREVfRlJPTV9XT1JMRF9wbi1wb3J0bWFwX2xpYmMtbXVzbCA9ICIxIgogRVhDTFVERV9GUk9NX1dPUkxEX3BuLXVuZnMzX2xpYmMtbXVzbCA9ICIxIgogCiAjIGVycm9yOiB1c2Ugb2YgdW5kZWNsYXJlZCBpZGVudGlmaWVyICdfU1RBVF9WRVInCiBFWENMVURFX0ZST01fV09STERfcG4tcHNldWRvX2xpYmMtbXVzbCA9ICIxIgogCi0jIGVycm9yOiBOZWVkIHRvIGltcGxlbWVudCBjdXN0b20gSS9PCi1FWENMVURFX0ZST01fV09STERfcG4tbGlic29sdl9saWJjLW11c2wgPSAiMSIKLQotIyB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBwdGhyZWFkX3RyeWpvaW5fbnAnCi1FWENMVURFX0ZST01fV09STERfcG4tYnRyZnMtdG9vbHNfbGliYy1tdXNsID0gIjEiCi0KICMgZXJyb3I6IGVycm9yLmg6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKIEVYQ0xVREVfRlJPTV9XT1JMRF9wbi1wcmVsaW5rX2xpYmMtbXVzbCA9ICIxIgogCi0jIGVycm9yOiB1c2Ugb2YgdW5kZWNsYXJlZCBpZGVudGlmaWVyICdPX0NSRUFUJwotRVhDTFVERV9GUk9NX1dPUkxEX3BuLWxpYmJzZF9saWJjLW11c2wgPSAiMSIKLQotIyBlcnJvcjogZXhwZWN0ZWQgZGVjbGFyYXRpb24gc3BlY2lmaWVycyBiZWZvcmUgJ19fbm9ubnVsbCcKLUVYQ0xVREVfRlJPTV9XT1JMRF9wbi1sdHRuZy11c3RfbGliYy1tdXNsID0gIjEiCi1FWENMVURFX0ZST01fV09STERfcG4tbHR0bmctdG9vbHNfbGliYy1tdXNsID0gIjEiCi0KICMgZXJyb3I6IG9ic3RhY2suaDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQogRVhDTFVERV9GUk9NX1dPUkxEX3BuLXN5c3RlbXRhcF9saWJjLW11c2wgPSAiMSIKIEVYQ0xVREVfRlJPTV9XT1JMRF9wbi1zeXN0ZW10YXAtdXByb2Jlc19saWJjLW11c2wgPSAiMSIKQEAgLTM3LDIwICsyMyw5IEBACiAjICAgICAgICAgICAgdm9pZCAoKl9mdW5jdGlvbikoc2lndmFsX3QpOwogRVhDTFVERV9GUk9NX1dPUkxEX3BuLXFlbXVfbGliYy1tdXNsID0gIjEiCiAKLSMgZ2xpYmMgc3BlY2lmaWMgZnVuY3Jpb25zCi0jIGVycm9yOiBzdG9yYWdlIHNpemUgb2YgJ21pJyBpc24ndCBrbm93biBzdHJ1Y3QgbWFsbGluZm8gbWkKLUVYQ0xVREVfRlJPTV9XT1JMRF9wbi12YWxncmluZF9saWJjLW11c2wgPSAiMSIKLQogIyBlcnJvcjogZm9ybWF0ICclcycgZXhwZWN0cyBhcmd1bWVudCBvZiB0eXBlICdjaGFyIConLCBidXQgYXJndW1lbnQgNCBoYXMgdHlwZSAnaW50JyBbLVdlcnJvcj1mb3JtYXQ9XQogIyAgIHNucHJpbnRmKGJ1Ziwgc2l6ZSwgIiVzIiwgc3RyZXJyb3JfcihlcnIsIHNidWYsIHNpemVvZihzYnVmKSkpOwogRVhDTFVERV9GUk9NX1dPUkxEX3BuLXBlcmZfbGliYy1tdXNsID0gIjEiCiAKICMgZXJyb3I6ICdSVExEX05FWFQnIHdhcyBub3QgZGVjbGFyZWQgaW4gdGhpcyBzY29wZQogRVhDTFVERV9GUk9NX1dPUkxEX3BuLWdjYy1zYW5pdGl6ZXJzX2xpYmMtbXVzbCA9ICIxIgotCi0jIGdjYyBmYWlscyB0byBidWlsZCB3aGVuIGxpYnV3aW5kIGlzIHN0YWdlZCBiZWZvcmUgYnVpbGRpbmcgZ2NjIHNpbmNlCi0jIGl0IHRoZW4gZmluZHMgdGhlIHVud2luZC5oIGhlYWRlciBmcm9tIGxpYnVud2luZCBhbmQgbm90IGZyb20gbGliZ2NjCi0jIGFuZCBvbiBhcm0gc3BlY2lhbGx5IHRoZXkgYXJlIGRpZmZlcmVudCBzaW5jZSBsaWJnY2MgZGVmaW5lcyBzb21lIGZ1bmN0aW9ucwotIyBhcyBtYWNyb3Mgd2hpY2ggYXJlIGZ1bmN0aW9ucyBpbiBsaWJ1bndpbmQgYW5kIGl0IGZhaWxzIGR1cmluZyBsaW5raW5nCi0jIGxpYmJhY2t0cmFjZS9iYWNrdHJhY2UuYzo3NjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX1Vud2luZF9HZXRJUCcKLUVYQ0xVREVfRlJPTV9XT1JMRF9wbi1saWJ1bndpbmRfbGliYy1tdXNsX2FybSA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9kb2N1bWVudGF0aW9uLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2RvY3VtZW50YXRpb24uY29uZgppbmRleCAzNWI5MTAzLi5hNTVlMjgzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2RvY3VtZW50YXRpb24uY29uZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2RvY3VtZW50YXRpb24uY29uZgpAQCAtNTYsNyArNTYsNiBAQAogZG9fdWJvb3RfbWtpbWFnZVtkb2NdID0gIkNyZWF0ZXMgYSB1SW1hZ2UgZmlsZSBmcm9tIHRoZSBrZXJuZWwgZm9yIHRoZSBVLUJvb3QgYm9vdGxvYWRlciIKIGRvX3VucGFja1tkb2NdID0gIlVucGFja3MgdGhlIHNvdXJjZSBjb2RlIGludG8gYSB3b3JraW5nIGRpcmVjdG9yeSIKIGRvX3ZhbGlkYXRlX2JyYW5jaGVzW2RvY10gPSAiRW5zdXJlcyB0aGF0IHRoZSBzb3VyY2UvbWV0YSBicmFuY2hlcyBhcmUgb24gdGhlIGxvY2F0aW9ucyBzcGVjaWZpZWQgYnkgdGhlaXIgU1JDUkVWIHZhbHVlcyBmb3IgYSBsaW51eC15b2N0byBzdHlsZSBrZXJuZWwiCi1kb192bWltZ1tkb2NdID0gIkNyZWF0ZXMgYW4gaW1hZ2UgZm9yIHVzZSB3aXRoIFZNd2FyZSBvciBWaXJ0dWFsQm94IGNvbXBhdGlibGUgdmlydHVhbCBtYWNoaW5lIGhvc3RzIChiYXNlZCBvbiBJTUFHRV9GU1RZUEVTIGVpdGhlciAudm1kayBvciAudmRpKSIKIAogIyBERVNDUklQVElPTlMgRk9SIFZBUklBQkxFUyAjCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbGF5ZXIuY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbGF5ZXIuY29uZgppbmRleCBmYzE2NTAyLi40YmEwYjkzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2xheWVyLmNvbmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9sYXllci5jb25mCkBAIC05LDcgKzksOSBAQAogCiAjIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW5jcmVtZW50ZWQgb24gc2lnbmlmaWNhbnQgY2hhbmdlcyB0aGF0IHdpbGwKICMgY2F1c2UgY29tcGF0aWJpbGl0eSBpc3N1ZXMgd2l0aCBvdGhlciBsYXllcnMKLUxBWUVSVkVSU0lPTl9jb3JlID0gIjEwIgorTEFZRVJWRVJTSU9OX2NvcmUgPSAiMTEiCisKK0xBWUVSU0VSSUVTX0NPUkVOQU1FUyA9ICJyb2NrbyIKIAogQkJMQVlFUlNfTEFZRVJJTkRFWF9OQU1FX2NvcmUgPSAib3BlbmVtYmVkZGVkLWNvcmUiCiAKQEAgLTM4LDYgKzQwLDcgQEAKICAgYmFzZS1wYXNzd2QgXAogICBvcGtnLXV0aWxzIFwKICAgZ3N0cmVhbWVyMS4wLW1ldGEtYmFzZSBcCisgIGNhLWNlcnRpZmljYXRlcyBcCiAiCiAKIFNJR0dFTl9FWENMVURFX1NBRkVfUkVDSVBFX0RFUFMgKz0gIiBcCkBAIC00OCw4ICs1MSwxNiBAQAogICBkb2Nib29rLXhzbC1zdHlsZXNoZWV0cy0+cGVybCBcCiAgIGNhLWNlcnRpZmljYXRlcy0+b3BlbnNzbCBcCiAgIGluaXRyYW1mcy1mcmFtZXdvcmstPiR7VklSVFVBTC1SVU5USU1FX2Jhc2UtdXRpbHN9IFwKLSAgaW5pdHJhbWZzLWZyYW1ld29yay0+c3lzdGVtZCBcCiAgIGluaXRyYW1mcy1mcmFtZXdvcmstPmV1ZGV2IFwKKyAgaW5pdHJhbWZzLWZyYW1ld29yay0+c3lzdGVtZCBcCisgIGluaXRyYW1mcy1tb2R1bGUtaW5zdGFsbC1lZmktPmRvc2ZzdG9vbHMgXAorICBpbml0cmFtZnMtbW9kdWxlLWluc3RhbGwtZWZpLT5lMmZzcHJvZ3MgXAorICBpbml0cmFtZnMtbW9kdWxlLWluc3RhbGwtZWZpLT5wYXJ0ZWQgXAorICBpbml0cmFtZnMtbW9kdWxlLWluc3RhbGwtZWZpLT51dGlsLWxpbnV4IFwKKyAgaW5pdHJhbWZzLW1vZHVsZS1pbnN0YWxsLT5lMmZzcHJvZ3MgXAorICBpbml0cmFtZnMtbW9kdWxlLWluc3RhbGwtPmdydWIgXAorICBpbml0cmFtZnMtbW9kdWxlLWluc3RhbGwtPnBhcnRlZCBcCisgIGluaXRyYW1mcy1tb2R1bGUtaW5zdGFsbC0+dXRpbC1saW51eCBcCiAgIGxpYmVyYXRpb24tZm9udHMtPmZvbnRjb25maWcgXAogICBjYW50YXJlbGwtZm9udHMtPmZvbnRjb25maWcgXAogICBnbm9tZS1pY29uLXRoZW1lLT5saWJyc3ZnIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbGljZW5zZXMuY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbGljZW5zZXMuY29uZgppbmRleCBkMjEwYTBlLi4zZTJkMjU4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL2xpY2Vuc2VzLmNvbmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9saWNlbnNlcy5jb25mCkBAIC0xMDUsNiArMTA1LDEwIEBACiBTUERYTElDRU5TRU1BUFtBRkx2Ml0gPSAiQUZMLTIuMCIKIFNQRFhMSUNFTlNFTUFQW0FGTHYxXSA9ICJBRkwtMS4yIgogCisjQ0RETCB2YXJpYXRpb25zCitTUERYTElDRU5TRU1BUFtDRERMdjFdID0gIkNEREwtMS4wIgorU1BEWExJQ0VOU0VNQVBbQ0RETC0xXSA9ICJDRERMLTEuMCIKKwogI090aGVyIHZhcmlhdGlvbnMKIFNQRFhMSUNFTlNFTUFQW0VQTHYxLjBdID0gIkVQTC0xLjAiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS1zZGsvaTU4Ni5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lLXNkay9pNTg2LmNvbmYKaW5kZXggOTkwODNmYi4uNDFlNWUxNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lLXNkay9pNTg2LmNvbmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lLXNkay9pNTg2LmNvbmYKQEAgLTEsNSArMSw0IEBACiBTREtfQVJDSCA9ICJpNTg2IgogU0RLX0NDX0FSQ0ggPSAiLW1hcmNoPWk1ODYiCiBBQklFWFRFTlNJT05fY2xhc3MtbmF0aXZlc2RrID0gIiIKLVNES19PTERFU1RfS0VSTkVMID0gIjIuNi4zMiIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lLXNkay9pNjg2LmNvbmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUtc2RrL2k2ODYuY29uZgppbmRleCBjZjIyNzg0Li5mZTQwNjk3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUtc2RrL2k2ODYuY29uZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUtc2RrL2k2ODYuY29uZgpAQCAtMSw0ICsxLDMgQEAKIFNES19BUkNIID0gImk2ODYiCiBTREtfQ0NfQVJDSCA9ICItbWFyY2g9aTY4NiIKIEFCSUVYVEVOU0lPTl9jbGFzcy1uYXRpdmVzZGsgPSAiIgotU0RLX09MREVTVF9LRVJORUwgPSAiMi42LjMyIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lLXNkay94ODZfNjQuY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS1zZGsveDg2XzY0LmNvbmYKaW5kZXggN2QyZTcxNy4uNjE0MzliNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lLXNkay94ODZfNjQuY29uZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUtc2RrL3g4Nl82NC5jb25mCkBAIC0xLDMgKzEsMiBAQAogU0RLX0FSQ0ggPSAieDg2XzY0IgogQUJJRVhURU5TSU9OX2NsYXNzLW5hdGl2ZXNkayA9ICIiCi1TREtfT0xERVNUX0tFUk5FTCA9ICIyLjYuMzIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9hcm0vZmVhdHVyZS1hcm0tdmZwLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL2FybS9mZWF0dXJlLWFybS12ZnAuaW5jCmluZGV4IDY2N2I2MDkuLjdhZTc0NTYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL2FybS9mZWF0dXJlLWFybS12ZnAuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL2FybS9mZWF0dXJlLWFybS12ZnAuaW5jCkBAIC01LDggKzUsOCBAQAogVFVORVZBTElEW3ZmcF0gPSAiRW5hYmxlIFZlY3RvciBGbG9hdGluZyBQb2ludCAodmZwKSB1bml0LiIKIFRVTkVfQ0NBUkdTX01GUFUgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ3ZmcCcsICcgdmZwJywgJycsIGQpfSIKIAotVFVORV9DQ0FSR1MgIC49ICIke0AgKCcgLW1mcHU9JXMgJyAlIGQuZ2V0VmFyKCdUVU5FX0NDQVJHU19NRlBVJykuc3BsaXQoKVstMV0pIGlmIChkLmdldFZhcignVFVORV9DQ0FSR1NfTUZQVScpICE9ICcnKSBlbHNlICcnfSIKLUFSTVBLR1NGWF9GUFUgPSAiJHtAICgnLSVzJyAgICAgICAgJSBkLmdldFZhcignVFVORV9DQ0FSR1NfTUZQVScpLnNwbGl0KClbLTFdLnJlcGxhY2UoJ3ZmcHYzLWQxNicsICd2ZnB2M2QxNicpKSBpZiAoZC5nZXRWYXIoJ1RVTkVfQ0NBUkdTX01GUFUnKSAhPSAnJykgZWxzZSAnJ30iCitUVU5FX0NDQVJHUyAgLj0gIiR7QCAoJyAtbWZwdT0lcycgJSBkLmdldFZhcignVFVORV9DQ0FSR1NfTUZQVScpLnNwbGl0KClbLTFdKSBpZiAoZC5nZXRWYXIoJ1RVTkVfQ0NBUkdTX01GUFUnKSAhPSAnJykgZWxzZSAnJ30iCitBUk1QS0dTRlhfRlBVID0gIiR7QCAoJy0lcycgICAgICAgJSBkLmdldFZhcignVFVORV9DQ0FSR1NfTUZQVScpLnNwbGl0KClbLTFdLnJlcGxhY2UoJ3ZmcHYzLWQxNicsICd2ZnB2M2QxNicpKSBpZiAoZC5nZXRWYXIoJ1RVTkVfQ0NBUkdTX01GUFUnKSAhPSAnJykgZWxzZSAnJ30iCiAKIFRVTkVWQUxJRFtjYWxsY29udmVudGlvbi1oYXJkXSA9ICJFbmFibGUgRUFCSSBoYXJkIGZsb2F0IGNhbGwgY29udmVudGlvbiwgcmVxdWlyZXMgVkZQLiIKIFRVTkVfQ0NBUkdTX01GTE9BVCA9ICIke0AgYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnY2FsbGNvbnZlbnRpb24taGFyZCcsICdoYXJkJywgJ3NvZnRmcCcsIGQpIGlmIChkLmdldFZhcignVFVORV9DQ0FSR1NfTUZQVScpICE9ICcnKSBlbHNlICcnIH0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9xZW11LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXUuaW5jCmluZGV4IDBlNDEwM2IuLmU2NGIwYzggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXUuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXUuaW5jCkBAIC0yNSw2ICsyNSw3IEBACiAKICMgUHJvdmlkZSB0aGUgbmZzIHNlcnZlciBrZXJuZWwgbW9kdWxlIGZvciBhbGwgcWVtdSBpbWFnZXMKIEtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcG4tbGludXgteW9jdG8gPSAiIGZlYXR1cmVzL25mc2QvbmZzZC1lbmFibGUuc2NjIgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9wbi1saW51eC15b2N0by1ydCA9ICIgZmVhdHVyZXMvbmZzZC9uZnNkLWVuYWJsZS5zY2MiCiAKIE1BQ0hJTkVfRVhUUkFfUlJFQ09NTUVORFMgKz0gInJuZy10b29scyIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdWJvb3QtbWlwcy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9xZW11Ym9vdC1taXBzLmluYwppbmRleCAwYzYwY2YyLi43ZDlmYTUyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9xZW11Ym9vdC1taXBzLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9xZW11Ym9vdC1taXBzLmluYwpAQCAtNCw1ICs0LDUgQEAKIFFCX01BQ0hJTkUgPSAiLW1hY2hpbmUgbWFsdGEiCiBRQl9LRVJORUxfQ01ETElORV9BUFBFTkQgPSAiY29uc29sZT10dHlTMCBjb25zb2xlPXR0eSIKICMgQWRkIHRoZSAndmlydGlvLXJuZy1wY2knIGRldmljZSBvdGhlcndpc2UgdGhlIGd1ZXN0IG1heSBydW4gb3V0IG9mIGVudHJvcHkKLVFCX09QVF9BUFBFTkQgPSAiLXZnYSBjaXJydXMgLXNob3ctY3Vyc29yIC11c2IgLXVzYmRldmljZSB0YWJsZXQgLWRldmljZSB2aXJ0aW8tcm5nLXBjaSIKK1FCX09QVF9BUFBFTkQgPSAiLXZnYSBjaXJydXMgLXNob3ctY3Vyc29yIC11c2IgLWRldmljZSB1c2ItdGFibGV0IC1kZXZpY2UgdmlydGlvLXJuZy1wY2kiCiBRQl9TWVNURU1fTkFNRSA9ICJxZW11LXN5c3RlbS0ke1RVTkVfQVJDSH0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9xZW11Ym9vdC14ODYuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdWJvb3QteDg2LmluYwppbmRleCBhY2Y5ZDU1Li4xNDU2YmY3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9xZW11Ym9vdC14ODYuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXVib290LXg4Ni5pbmMKQEAgLTEyLDkgKzEyLDYgQEAKIFFCX0FVRElPX09QVCA9ICItc291bmRodyBhYzk3LGVzMTM3MCIKIFFCX0tFUk5FTF9DTURMSU5FX0FQUEVORCA9ICJ2Z2E9MCB1dmVzYWZiLm1vZGVfb3B0aW9uPSR7VVZFU0FfTU9ERX0gb3Byb2ZpbGUudGltZXI9MSB1dmVzYWZiLnRhc2tfdGltZW91dD0tMSIKICMgQWRkIHRoZSAndmlydGlvLXJuZy1wY2knIGRldmljZSBvdGhlcndpc2UgdGhlIGd1ZXN0IG1heSBydW4gb3V0IG9mIGVudHJvcHkKLVFCX09QVF9BUFBFTkQgPSAiLXZnYSB2bXdhcmUgLXNob3ctY3Vyc29yIC11c2IgLXVzYmRldmljZSB0YWJsZXQgLWRldmljZSB2aXJ0aW8tcm5nLXBjaSIKK1FCX09QVF9BUFBFTkQgPSAiLXZnYSB2bXdhcmUgLXNob3ctY3Vyc29yIC11c2IgLWRldmljZSB1c2ItdGFibGV0IC1kZXZpY2UgdmlydGlvLXJuZy1wY2kiCiAKLUtFUk5FTF9NT0RVTEVfQVVUT0xPQUQgKz0gInV2ZXNhZmIiCi1LRVJORUxfTU9EVUxFX1BST0JFQ09ORiArPSAidXZlc2FmYiIKIFVWRVNBX01PREUgPz0gIjY0MHg0ODAtMzIiCi1tb2R1bGVfY29uZl91dmVzYWZiID0gIm9wdGlvbnMgdXZlc2FmYiBtb2RlX29wdGlvbj0ke1VWRVNBX01PREV9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1taXBzMzIuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1taXBzMzIuaW5jCmluZGV4IGNlMDQ0NWYuLmE5MGMwZjAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtbWlwczMyLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLW1pcHMzMi5pbmMKQEAgLTYsNyArNiw4IEBACiBUVU5FQ09ORkxJQ1RTW21pcHMzMl0gPSAibjY0IG4zMiIKIFRVTkVfQ0NBUkdTIC49ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdtaXBzMzInLCAnIC1tYXJjaD1taXBzMzInLCAnJywgZCl9IgogCi1BVkFJTFRVTkVTICs9ICJtaXBzMzIgbWlwczMyZWwgbWlwczMyLW5mIG1pcHMzMmVsLW5mIgorIyBCYXNlIFR1bmVzIChIYXJkIEZsb2F0KQorQVZBSUxUVU5FUyArPSAibWlwczMyIG1pcHMzMmVsIgogCiBUVU5FX0ZFQVRVUkVTX3R1bmUtbWlwczMyID0gIiR7VFVORV9GRUFUVVJFU190dW5lLW1pcHN9IG1pcHMzMiIKIE1JUFNQS0dTRlhfVkFSSUFOVF90dW5lLW1pcHMzMiA9ICJtaXBzMzIiCkBAIC0xNiw2ICsxNyw5IEBACiBNSVBTUEtHU0ZYX1ZBUklBTlRfdHVuZS1taXBzMzJlbCA9ICJtaXBzMzJlbCIKIFBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1taXBzMzJlbCA9ICJtaXBzZWwgbWlwczMyZWwiCiAKKyMgU29mdCBGbG9hdAorQVZBSUxUVU5FUyArPSAibWlwczMyLW5mIG1pcHMzMmVsLW5mIgorCiBUVU5FX0ZFQVRVUkVTX3R1bmUtbWlwczMyLW5mID0gIiR7VFVORV9GRUFUVVJFU190dW5lLW1pcHMtbmZ9IG1pcHMzMiIKIE1JUFNQS0dTRlhfVkFSSUFOVF90dW5lLW1pcHMzMi1uZiA9ICJtaXBzMzIiCiBQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtbWlwczMyLW5mID0gIm1pcHMtbmYgbWlwczMyLW5mIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1taXBzMzJyMi5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLW1pcHMzMnIyLmluYwppbmRleCA1ZTM5OGNiLi4xNDQ3M2NhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLW1pcHMzMnIyLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLW1pcHMzMnIyLmluYwpAQCAtNiw3ICs2LDcgQEAKIFRVTkVDT05GTElDVFNbbWlwczMycjJdID0gIm42NCBuMzIiCiBUVU5FX0NDQVJHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnbWlwczMycjInLCAnIC1tYXJjaD1taXBzMzJyMicsICcnLCBkKX0iCiAKLSMgaGFyZCBmbG9hdAorIyBCYXNlIFR1bmVzIChIYXJkIEZsb2F0KQogQVZBSUxUVU5FUyArPSAibWlwczMycjIgbWlwczMycjJlbCIKIAogVFVORV9GRUFUVVJFU190dW5lLW1pcHMzMnIyID0gIiR7VFVORV9GRUFUVVJFU190dW5lLW1pcHN9IG1pcHMzMnIyIgpAQCAtMTcsNyArMTcsNyBAQAogTUlQU1BLR1NGWF9WQVJJQU5UX3R1bmUtbWlwczMycjJlbCA9ICJtaXBzMzJyMmVsIgogUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLW1pcHMzMnIyZWwgPSAibWlwc2VsIG1pcHMzMmVsIG1pcHMzMnIyZWwiCiAKLSMgc29mdCBmbG9hdAorIyBTb2Z0IEZsb2F0CiBBVkFJTFRVTkVTICs9ICJtaXBzMzJyMi1uZiBtaXBzMzJyMmVsLW5mIgogCiBUVU5FX0ZFQVRVUkVTX3R1bmUtbWlwczMycjItbmYgPSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUtbWlwcy1uZn0gbWlwczMycjIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLW1pcHMzMnI2LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtbWlwczMycjYuaW5jCmluZGV4IGRlYTMzZWEuLjQ0MzY5Y2IgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtbWlwczMycjYuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtbWlwczMycjYuaW5jCkBAIC02LDcgKzYsNyBAQAogVFVORUNPTkZMSUNUU1ttaXBzaXNhMzJyNl0gPSAibjY0IG4zMiIKIFRVTkVfQ0NBUkdTIC49ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdtaXBzaXNhMzJyNicsICcgLW1hcmNoPW1pcHMzMnI2JywgJycsIGQpfSIKIAotIyBCYXNlIFR1bmVzCisjIEJhc2UgVHVuZXMgKEhhcmQgRmxvYXQpCiBBVkFJTFRVTkVTICs9ICJtaXBzaXNhMzJyNiBtaXBzaXNhMzJyNmVsIgogCiBUVU5FX0ZFQVRVUkVTX3R1bmUtbWlwc2lzYTMycjYgPSAibzMyIGJpZ2VuZGlhbiBtaXBzaXNhMzJyNiBmcHUtaGFyZCByNiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3g4Ni1iYXNlLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3g4Ni1iYXNlLmluYwppbmRleCA3MzY1OTUzLi4wMjNlYjVlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS94ODYtYmFzZS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUveDg2LWJhc2UuaW5jCkBAIC0xMCw3ICsxMCw4IEBACiAKIE1BQ0hJTkVfRVhUUkFfUlJFQ09NTUVORFMgKz0gImtlcm5lbC1tb2R1bGVzIgogCi1JTUFHRV9GU1RZUEVTICs9ICJsaXZlIgorSU1BR0VfRlNUWVBFUyA/PSAibGl2ZSIKK05PSVNPID89ICIxIgogCiBLRVJORUxfSU1BR0VUWVBFID89ICJiekltYWdlIgogCkBAIC0yMCw3ICsyMSw3IEBACiAjIGtlcm5lbC1yZWxhdGVkIHZhcmlhYmxlcwogIwogUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsID8/PSAibGludXgteW9jdG8iCi1QUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/Pz0gIjQuMTAlIgorUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz89ICI0LjEyJSIKIAogIwogIyBYU0VSVkVSIHN1YmNvbXBvbmVudHMsIHVzZWQgdG8gYnVpbGQgdGhlIFhTRVJWRVIgdmFyaWFibGUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3g4Ni9hcmNoLXg4Ni5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS94ODYvYXJjaC14ODYuaW5jCmluZGV4IGU1MWQ1OTUuLjcwODE0YjggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3g4Ni9hcmNoLXg4Ni5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUveDg2L2FyY2gteDg2LmluYwpAQCAtMjYsNiArMjYsNyBAQAogVFVORV9BU0FSR1MgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ214MzInLCAnLXgzMicsICcnLCBkKX0iCiAjIHVzZXIgbW9kZSBxZW11IGRvZXNuJ3Qgc3VwcG9ydCB4MzIKIE1BQ0hJTkVfRkVBVFVSRVNfQkFDS0ZJTExfQ09OU0lERVJFRF9hcHBlbmQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ214MzInLCAncWVtdS11c2VybW9kZScsICcnLCBkKX0iCitNQUNISU5FT1ZFUlJJREVTID0uICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdteDMyJywgJ3g4Ni14MzI6JywgJycgLGQpfSIKIAogIyBFTEY2NCBBQkkKIFRVTkVWQUxJRFttNjRdID0gIklBMzJlICh4ODZfNjQpIEVMRjY0IHN0YW5kYXJkIEFCSSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11YXJtLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdWFybS5jb25mCmluZGV4IDZiODc1ZTQuLmM4OTMyZGQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11YXJtLmNvbmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVhcm0uY29uZgpAQCAtMTUsNiArMTUsNiBAQAogUUJfTUFDSElORSA9ICItbWFjaGluZSB2ZXJzYXRpbGVwYiIKIFFCX0tFUk5FTF9DTURMSU5FX0FQUEVORCA9ICJjb25zb2xlPXR0eUFNQTAsMTE1MjAwIGNvbnNvbGU9dHR5IgogIyBBZGQgdGhlICd2aXJ0aW8tcm5nLXBjaScgZGV2aWNlIG90aGVyd2lzZSB0aGUgZ3Vlc3QgbWF5IHJ1biBvdXQgb2YgZW50cm9weQotUUJfT1BUX0FQUEVORCA9ICItc2hvdy1jdXJzb3IgLXVzYiAtdXNiZGV2aWNlIHRhYmxldCAtZGV2aWNlIHZpcnRpby1ybmctcGNpIgotUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz89ICI0LjEwJSIKK1FCX09QVF9BUFBFTkQgPSAiLXNob3ctY3Vyc29yIC11c2IgLWRldmljZSB1c2ItdGFibGV0IC1kZXZpY2UgdmlydGlvLXJuZy1wY2kiCitQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/Pz0gIjQuMTIlIgogUUJfRFRCID0gIiR7QGJhc2VfdmVyc2lvbl9sZXNzX29yX2VxdWFsKCdQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0bycsICc0LjcnLCAnJywgJ3pJbWFnZS12ZXJzYXRpbGUtcGIuZHRiJywgZCl9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVwcGMuY29uZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11cHBjLmNvbmYKaW5kZXggYTllZjY0Yi4uNTM3YjJmNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVwcGMuY29uZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdXBwYy5jb25mCkBAIC0xNyw1ICsxNyw1IEBACiBRQl9DUFUgPSAiLWNwdSBHNCIKIFFCX0tFUk5FTF9DTURMSU5FX0FQUEVORCA9ICJjb25zb2xlPXR0eSBjb25zb2xlPXR0eVMwIgogIyBBZGQgdGhlICd2aXJ0aW8tcm5nLXBjaScgZGV2aWNlIG90aGVyd2lzZSB0aGUgZ3Vlc3QgbWF5IHJ1biBvdXQgb2YgZW50cm9weQotUUJfT1BUX0FQUEVORCA9ICItc2hvdy1jdXJzb3IgLXVzYiAtdXNiZGV2aWNlIHRhYmxldCAtZGV2aWNlIHZpcnRpby1ybmctcGNpIgorUUJfT1BUX0FQUEVORCA9ICItc2hvdy1jdXJzb3IgLXVzYiAtZGV2aWNlIHVzYi10YWJsZXQgLWRldmljZSB2aXJ0aW8tcm5nLXBjaSIKIFFCX1RBUF9PUFQgPSAiLW5ldGRldiB0YXAsaWQ9bmV0MCxpZm5hbWU9QFRBUEAsc2NyaXB0PW5vLGRvd25zY3JpcHQ9bm8iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdXg4Ni02NC5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXV4ODYtNjQuY29uZgppbmRleCAxMDE4OWNiLi5mY2M0NDU5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdXg4Ni02NC5jb25mCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11eDg2LTY0LmNvbmYKQEAgLTI1LDkgKzI1LDEzIEBACiAgICAgICAgICAgIHhzZXJ2ZXIteG9yZy1tb2R1bGUtbGliaW50MTAgXAogICAgICAgICAgICAiCiAKLU1BQ0hJTkVfRkVBVFVSRVMgKz0gIng4NiIKK01BQ0hJTkVfRkVBVFVSRVMgKz0gIng4NiBwY2kiCiAKIE1BQ0hJTkVfRVNTRU5USUFMX0VYVFJBX1JERVBFTkRTICs9ICJ2ODZkIgogCitLRVJORUxfTU9EVUxFX0FVVE9MT0FEICs9ICJ1dmVzYWZiIgorS0VSTkVMX01PRFVMRV9QUk9CRUNPTkYgKz0gInV2ZXNhZmIiCittb2R1bGVfY29uZl91dmVzYWZiID0gIm9wdGlvbnMgdXZlc2FmYiBtb2RlX29wdGlvbj0ke1VWRVNBX01PREV9IgorCiBXS1NfRklMRSA/PSAiZGlyZWN0ZGlzay53a3MiCiBkb19pbWFnZV93aWNbZGVwZW5kc10gKz0gInN5c2xpbnV4OmRvX3BvcHVsYXRlX3N5c3Jvb3Qgc3lzbGludXgtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QgbXRvb2xzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IGRvc2ZzdG9vbHMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdXg4Ni5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXV4ODYuY29uZgppbmRleCBjMjZkZGEyLi5jNTNmN2E5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdXg4Ni5jb25mCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11eDg2LmNvbmYKQEAgLTI0LDkgKzI0LDEzIEBACiAgICAgICAgICAgIHhzZXJ2ZXIteG9yZy1tb2R1bGUtbGliaW50MTAgXAogICAgICAgICAgICAiCiAKLU1BQ0hJTkVfRkVBVFVSRVMgKz0gIng4NiIKK01BQ0hJTkVfRkVBVFVSRVMgKz0gIng4NiBwY2kiCiAKIE1BQ0hJTkVfRVNTRU5USUFMX0VYVFJBX1JERVBFTkRTICs9ICJ2ODZkIgogCitLRVJORUxfTU9EVUxFX0FVVE9MT0FEICs9ICJ1dmVzYWZiIgorS0VSTkVMX01PRFVMRV9QUk9CRUNPTkYgKz0gInV2ZXNhZmIiCittb2R1bGVfY29uZl91dmVzYWZiID0gIm9wdGlvbnMgdXZlc2FmYiBtb2RlX29wdGlvbj0ke1VWRVNBX01PREV9IgorCiBXS1NfRklMRSA/PSAiZGlyZWN0ZGlzay53a3MiCiBkb19pbWFnZV93aWNbZGVwZW5kc10gKz0gInN5c2xpbnV4OmRvX3BvcHVsYXRlX3N5c3Jvb3Qgc3lzbGludXgtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QgbXRvb2xzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IGRvc2ZzdG9vbHMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL3Nhbml0eS5jb25mIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvY29uZi9zYW5pdHkuY29uZgppbmRleCA0NmJkYmViLi4zOTBkMzQyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9jb25mL3Nhbml0eS5jb25mCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2NvbmYvc2FuaXR5LmNvbmYKQEAgLTMsNyArMyw3IEBACiAjIFNlZSBzYW5pdHkuYmJjbGFzcwogIwogIyBFeHBlcnQgdXNlcnMgY2FuIGNvbmZpcm0gdGhlaXIgc2FuaXR5IHdpdGggInRvdWNoIGNvbmYvc2FuaXR5LmNvbmYiCi1CQl9NSU5fVkVSU0lPTiA9ICIxLjMzLjQiCitCQl9NSU5fVkVSU0lPTiA9ICIxLjM1LjAiCiAKIFNBTklUWV9BQklGSUxFID0gIiR7VE1QRElSfS9hYmlfdmVyc2lvbiIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvZmlsZXMvY29tbW9uLWxpY2Vuc2VzL3BrZ2NvbmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9maWxlcy9jb21tb24tbGljZW5zZXMvcGtnY29uZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MWE1MjIxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvZmlsZXMvY29tbW9uLWxpY2Vuc2VzL3BrZ2NvbmYKQEAgLTAsMCArMSwxMCBAQAorQ29weXJpZ2h0IChjKSAyMDExLCAyMDEyLCAyMDEzLCAyMDE0LCAyMDE1LCAyMDE2LCAyMDE3CisgICAgcGtnY29uZiBhdXRob3JzIChzZWUgQVVUSE9SUyBmaWxlIGluIHNvdXJjZSBkaXJlY3RvcnkpLgorCitQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkKK3B1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUKK2NvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMuCisKK1RoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgJ2FzIGlzJyBhbmQgd2l0aG91dCBhbnkgd2FycmFudHksIGV4cHJlc3Mgb3IKK2ltcGxpZWQuICBJbiBubyBldmVudCBzaGFsbCB0aGUgYXV0aG9ycyBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIGFyaXNpbmcKK2Zyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvZmlsZXMvZnMtcGVybXMtcGVyc2lzdGVudC1sb2cudHh0IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvZmlsZXMvZnMtcGVybXMtcGVyc2lzdGVudC1sb2cudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhN2NmM2EKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9maWxlcy9mcy1wZXJtcy1wZXJzaXN0ZW50LWxvZy50eHQKQEAgLTAsMCArMSw2NiBAQAorIyBUaGlzIGZpbGUgY29udGFpbnMgYSBsaXN0IG9mIGZpbGVzIGFuZCBkaXJlY3RvcmllcyB3aXRoIGtub3duIHBlcm1pc3Npb25zLgorIyBJdCBpcyB1c2VkIGJ5IHRoZSBwYWNrYWdpbmcgY2xhc3MgdG8gZW5zdXJlIHRoYXQgdGhlIHBlcm1pc3Npb25zLCBvd25lcnMgYW5kCisjIGdyb3VwIG9mIGxpc3RlZCBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgYXJlIGluIHN5bmMgYWNyb3NzIHRoZSBzeXN0ZW0uCisjCisjIFRoZSBmb3JtYXQgb2YgdGhpcyBmaWxlIAorIworIzxwYXRoPgk8bW9kZT4JPHVpZD4JPGdpZD4JPHdhbGs+CTxmbW9kZT4JPGZ1aWQ+CTxmZ2lkPgorIworIyBvcgorIworIzxwYXRoPiBsaW5rIDx0YXJnZXQ+CisjCisjIDxwYXRoPjogZGlyZWN0b3J5IHBhdGgKKyMgPG1vZGU+OiBtb2RlIGZvciBkaXJlY3RvcnkKKyMgPHVpZD46ICB1aWQgZm9yIGRpcmVjdG9yeQorIyA8Z2lkPjogIGdpZCBmb3IgZGlyZWN0b3J5CisjIDx3YWxrPjogcmVjdXJzaXZlbHkgd2FsayB0aGUgZGlyZWN0b3J5PyAgdHJ1ZSBvciBmYWxzZQorIyA8Zm1vZGU+OiBpZiB3YWxraW5nLCBuZXcgbW9kZSBmb3IgZmlsZXMKKyMgPGZ1aWQ+OiAgaWYgd2Fsa2luZywgbmV3IHVpZCBmb3IgZmlsZXMKKyMgPGZnaWQ+OiAgaWYgd2Fsa2luZywgbmV3IGdpZCBmb3IgZmlsZXMKKyMgPHRhcmdldD46IHR1cm4gdGhlIGRpcmVjdG9yeSBpbnRvIGEgc3ltbGluayBwb2ludCB0byB0YXJnZXQKKyMKKyMgaW4gbW9kZSwgdWlkIG9yIGdpZCwgYSAiLSIgbWVhbnMgZG9uJ3QgY2hhbmdlIGFueSBleGlzdGluZyB2YWx1ZXMKKyMKKyMgL3Vzci9zcmMJCTA3NTUJcm9vdAlyb290CWZhbHNlCS0JLQktCisjIC91c3Ivc2hhcmUvbWFuCTA3NTUJcm9vdAlyb290CXRydWUJMDY0NAlyb290CXJvb3QKKworIyBOb3RlOiBhbGwgc3RhbmRhcmQgY29uZmlnIGRpcmVjdG9yaWVzIGFyZSBhdXRvbWF0aWNhbGx5IGFzc2lnbmVkICIwNzU1IHJvb3Qgcm9vdCBmYWxzZSAtIC0gLSIKKworIyBEb2N1bWVudGF0aW9uIHNob3VsZCBhbHdheXMgYmUgY29ycmVjdGVkCiske21hbmRpcn0JCTA3NTUJcm9vdAlyb290CXRydWUJMDY0NAlyb290CXJvb3QKKyR7aW5mb2Rpcn0JCTA3NTUJcm9vdAlyb290CXRydWUJMDY0NAlyb290CXJvb3QKKyR7ZG9jZGlyfQkJMDc1NQlyb290CXJvb3QJdHJ1ZQkwNjQ0CXJvb3QJcm9vdAorJHtkYXRhZGlyfS9ndGstZG9jCTA3NTUJcm9vdAlyb290CXRydWUJMDY0NAlyb290CXJvb3QKKworIyBGaXh1cCBsb2NhbGVzCiske2RhdGFkaXJ9L2xvY2FsZQkwNzU1CXJvb3QJcm9vdAl0cnVlCTA2NDQJcm9vdAlyb290CisKKyMgQ2xlYW51cCBoZWFkZXJzCiske2luY2x1ZGVkaXJ9CQkwNzU1CXJvb3QJcm9vdAl0cnVlCTA2NDQJcm9vdAlyb290Ciske29sZGluY2x1ZGVkaXJ9CTA3NTUJcm9vdAlyb290CXRydWUJMDY0NAlyb290CXJvb3QKKworIyBDbGVhbnVwIGRlYnVnIHNyYworL3Vzci9zcmMvZGVidWcJCTA3NTUJcm9vdAlyb290CXRydWUJLQlyb290CXJvb3QKKworIyBJdGVtcyBmcm9tIGJhc2UtZmlsZXMKKyMgTGlua3MKKyR7bG9jYWxzdGF0ZWRpcn0vcnVuCWxpbmsJL3J1bgorJHtsb2NhbHN0YXRlZGlyfS9sb2NrCWxpbmsJL3J1bi9sb2NrCiske2xvY2Fsc3RhdGVkaXJ9L3RtcAlsaW5rCXZvbGF0aWxlL3RtcAorCisvaG9tZQkJCQkwNzU1CXJvb3QJcm9vdAlmYWxzZSAtIC0gLQorL3NydgkJCQkwNzU1CXJvb3QJcm9vdAlmYWxzZSAtIC0gLQorJHtwcmVmaXh9L3NyYwkJCTA3NTUJcm9vdAlyb290CWZhbHNlIC0gLSAtCiske2xvY2Fsc3RhdGVkaXJ9L2xvY2FsCQkwNzU1CXJvb3QJcm9vdAlmYWxzZSAtIC0gLQorCisjIFNwZWNpYWwgcGVybWlzc2lvbnMgZnJvbSBiYXNlLWZpbGVzCisjIFNldCAxNzc3CisvdG1wCQkJCTAxNzc3CXJvb3QJcm9vdAlmYWxzZSAtIC0gLQorJHtsb2NhbHN0YXRlZGlyfS92b2xhdGlsZS90bXAJMDE3NzcJcm9vdAlyb290CWZhbHNlIC0gLSAtCisKKyMgU2V0IDA3MDAKKyR7Uk9PVF9IT01FfQkJCTA3MDAJcm9vdAlyb290CWZhbHNlIC0gLSAtCisKKyMgU2V0IDI3NzUtbHNiCiske2xvY2Fsc3RhdGVkaXJ9L21haWwJCTAyNzc1CXJvb3QJbWFpbAlmYWxzZSAtIC0gLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL2JibGF5ZXJzL2NyZWF0ZS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9iYmxheWVycy9jcmVhdGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmE0MWZlMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9iYmxheWVycy9jcmVhdGUucHkKQEAgLTAsMCArMSw2NiBAQAoraW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IHNodXRpbAorCitpbXBvcnQgYmIudXRpbHMKKworZnJvbSBiYmxheWVycy5jb21tb24gaW1wb3J0IExheWVyUGx1Z2luCisKK2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdiaXRiYWtlLWxheWVycycpCisKK2RlZiBwbHVnaW5faW5pdChwbHVnaW5zKToKKyAgICByZXR1cm4gQ3JlYXRlUGx1Z2luKCkKKworZGVmIHJlYWRfdGVtcGxhdGUodGVtcGxhdGUsIHRlbXBsYXRlX2Rpcj0ndGVtcGxhdGVzJyk6CisgICAgbGluZXMgPSBzdHIoKQorICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgdGVtcGxhdGVfZGlyLCB0ZW1wbGF0ZSkpIGFzIGZkOgorICAgICAgICBsaW5lcyA9ICcnLmpvaW4oZmQucmVhZGxpbmVzKCkpCisgICAgcmV0dXJuIGxpbmVzCisKK2NsYXNzIENyZWF0ZVBsdWdpbihMYXllclBsdWdpbik6CisgICAgZGVmIGRvX2NyZWF0ZV9sYXllcihzZWxmLCBhcmdzKToKKyAgICAgICAgIiIiQ3JlYXRlIGEgYmFzaWMgbGF5ZXIiIiIKKyAgICAgICAgbGF5ZXJkaXIgPSBvcy5wYXRoLmFic3BhdGgoYXJncy5sYXllcmRpcikKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMobGF5ZXJkaXIpOgorICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiU3BlY2lmaWVkIGxheWVyIGRpcmVjdG9yeSBleGlzdHNcbiIpCisgICAgICAgICAgICByZXR1cm4gMQorCisgICAgICAgICMgY3JlYXRlIGRpcnMKKyAgICAgICAgY29uZiA9IG9zLnBhdGguam9pbihsYXllcmRpciwgJ2NvbmYnKQorICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoY29uZikKKworICAgICAgICAjIENyZWF0ZSB0aGUgUkVBRE1FIGZyb20gdGVtcGxhdGVzL1JFQURNRQorICAgICAgICByZWFkbWVfdGVtcGxhdGUgPSAgcmVhZF90ZW1wbGF0ZSgnUkVBRE1FJykgJSAoYXJncy5sYXllcmRpciwgYXJncy5sYXllcmRpciwgYXJncy5sYXllcmRpciwgYXJncy5sYXllcmRpciwgYXJncy5sYXllcmRpciwgYXJncy5sYXllcmRpcikKKyAgICAgICAgcmVhZG1lID0gb3MucGF0aC5qb2luKGxheWVyZGlyLCAnUkVBRE1FJykKKyAgICAgICAgd2l0aCBvcGVuKHJlYWRtZSwgJ3cnKSBhcyBmZDoKKyAgICAgICAgICAgIGZkLndyaXRlKHJlYWRtZV90ZW1wbGF0ZSkKKworICAgICAgICAjIENvcHkgdGhlIE1JVCBsaWNlbnNlIGZyb20gbWV0YQorICAgICAgICBjb3B5aW5nID0gJ0NPUFlJTkcuTUlUJworICAgICAgICBkbiA9IG9zLnBhdGguZGlybmFtZQorICAgICAgICBsaWNlbnNlX3NyYyA9IG9zLnBhdGguam9pbihkbihkbihkbihfX2ZpbGVfXykpKSwgY29weWluZykKKyAgICAgICAgbGljZW5zZV9kc3QgPSBvcy5wYXRoLmpvaW4obGF5ZXJkaXIsIGNvcHlpbmcpCisgICAgICAgIHNodXRpbC5jb3B5KGxpY2Vuc2Vfc3JjLCBsaWNlbnNlX2RzdCkKKworICAgICAgICAjIENyZWF0ZSB0aGUgbGF5ZXIuY29uZiBmcm9tIHRlbXBsYXRlcy9sYXllci5jb25mCisgICAgICAgIGxheWVyY29uZl90ZW1wbGF0ZSA9IHJlYWRfdGVtcGxhdGUoJ2xheWVyLmNvbmYnKSAlIChhcmdzLmxheWVyZGlyLCBhcmdzLmxheWVyZGlyLCBhcmdzLmxheWVyZGlyLCBhcmdzLnByaW9yaXR5KQorICAgICAgICBsYXllcmNvbmYgPSBvcy5wYXRoLmpvaW4oY29uZiwgJ2xheWVyLmNvbmYnKQorICAgICAgICB3aXRoIG9wZW4obGF5ZXJjb25mLCAndycpIGFzIGZkOgorICAgICAgICAgICAgZmQud3JpdGUobGF5ZXJjb25mX3RlbXBsYXRlKQorCisgICAgICAgICMgQ3JlYXRlIHRoZSBleGFtcGxlIGZyb20gdGVtcGxhdGVzL2V4YW1wbGUuYmIKKyAgICAgICAgZXhhbXBsZV90ZW1wbGF0ZSA9IHJlYWRfdGVtcGxhdGUoJ2V4YW1wbGUuYmInKQorICAgICAgICBleGFtcGxlID0gb3MucGF0aC5qb2luKGxheWVyZGlyLCAncmVjaXBlcy0nICsgYXJncy5leGFtcGxlcmVjaXBlLCBhcmdzLmV4YW1wbGVyZWNpcGUpCisgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihleGFtcGxlKQorICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGV4YW1wbGUsIGFyZ3MuZXhhbXBsZXJlY2lwZSArICcuYmInKSwgJ3cnKSBhcyBmZDoKKyAgICAgICAgICAgIGZkLndyaXRlKGV4YW1wbGVfdGVtcGxhdGUpCisKKyAgICAgICAgbG9nZ2VyLnBsYWluKCdBZGQgeW91ciBuZXcgbGF5ZXIgd2l0aCBcJ2JpdGJha2UtbGF5ZXJzIGFkZC1sYXllciAlc1wnJyAlIGFyZ3MubGF5ZXJkaXIpCisKKyAgICBkZWYgcmVnaXN0ZXJfY29tbWFuZHMoc2VsZiwgc3ApOgorICAgICAgICBwYXJzZXJfY3JlYXRlX2xheWVyID0gc2VsZi5hZGRfY29tbWFuZChzcCwgJ2NyZWF0ZS1sYXllcicsIHNlbGYuZG9fY3JlYXRlX2xheWVyLCBwYXJzZXJlY2lwZXM9RmFsc2UpCisgICAgICAgIHBhcnNlcl9jcmVhdGVfbGF5ZXIuYWRkX2FyZ3VtZW50KCdsYXllcmRpcicsIGhlbHA9J0xheWVyIGRpcmVjdG9yeSB0byBjcmVhdGUnKQorICAgICAgICBwYXJzZXJfY3JlYXRlX2xheWVyLmFkZF9hcmd1bWVudCgnLS1wcmlvcml0eScsICctcCcsIGRlZmF1bHQ9NiwgaGVscD0nTGF5ZXIgZGlyZWN0b3J5IHRvIGNyZWF0ZScpCisgICAgICAgIHBhcnNlcl9jcmVhdGVfbGF5ZXIuYWRkX2FyZ3VtZW50KCctLWV4YW1wbGUtcmVjaXBlLW5hbWUnLCAnLWUnLCBkZXN0PSdleGFtcGxlcmVjaXBlJywgZGVmYXVsdD0nZXhhbXBsZScsIGhlbHA9J0ZpbGVuYW1lIG9mIHRoZSBleGFtcGxlIHJlY2lwZScpCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9iYmxheWVycy90ZW1wbGF0ZXMvUkVBRE1FIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL2JibGF5ZXJzL3RlbXBsYXRlcy9SRUFETUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWE3N2Y4ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9iYmxheWVycy90ZW1wbGF0ZXMvUkVBRE1FCkBAIC0wLDAgKzEsNDEgQEAKK1RoaXMgUkVBRE1FIGZpbGUgY29udGFpbnMgaW5mb3JtYXRpb24gb24gdGhlIGNvbnRlbnRzIG9mIHRoZSAlcyBsYXllci4KKworUGxlYXNlIHNlZSB0aGUgY29ycmVzcG9uZGluZyBzZWN0aW9ucyBiZWxvdyBmb3IgZGV0YWlscy4KKworRGVwZW5kZW5jaWVzCis9PT09PT09PT09PT0KKworICBVUkk6IDxmaXJzdCBkZXBlbmRlbmN5PgorICBicmFuY2g6IDxicmFuY2ggbmFtZT4KKworICBVUkk6IDxzZWNvbmQgZGVwZW5kZW5jeT4KKyAgYnJhbmNoOiA8YnJhbmNoIG5hbWU+CisKKyAgLgorICAuCisgIC4KKworUGF0Y2hlcworPT09PT09PQorCitQbGVhc2Ugc3VibWl0IGFueSBwYXRjaGVzIGFnYWluc3QgdGhlICVzIGxheWVyIHRvIHRoZSB4eHh4IG1haWxpbmcgbGlzdCAoeHh4eEB6enp6Lm9yZykKK2FuZCBjYzogdGhlIG1haW50YWluZXI6CisKK01haW50YWluZXI6IFhYWCBZWVlZWVkgPHh4eC55eXl5eXlAenp6enouY29tPgorCitUYWJsZSBvZiBDb250ZW50cworPT09PT09PT09PT09PT09PT0KKworICBJLiBBZGRpbmcgdGhlICVzIGxheWVyIHRvIHlvdXIgYnVpbGQKKyBJSS4gTWlzYworCisKK0kuIEFkZGluZyB0aGUgJXMgbGF5ZXIgdG8geW91ciBidWlsZAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitSdW4gJ2JpdGJha2UtbGF5ZXJzIGFkZC1sYXllciAlcycKKworSUkuIE1pc2MKKz09PT09PT09CisKKy0tLSByZXBsYWNlIHdpdGggc3BlY2lmaWMgaW5mb3JtYXRpb24gYWJvdXQgdGhlICVzIGxheWVyIC0tLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL2JibGF5ZXJzL3RlbXBsYXRlcy9leGFtcGxlLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL2JibGF5ZXJzL3RlbXBsYXRlcy9leGFtcGxlLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0Yjg3M2QKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvYmJsYXllcnMvdGVtcGxhdGVzL2V4YW1wbGUuYmIKQEAgLTAsMCArMSwxMSBAQAorU1VNTUFSWSA9ICJiaXRiYWtlLWxheWVycyByZWNpcGUiCitERVNDUklQVElPTiA9ICJSZWNpcGUgY3JlYXRlZCBieSBiaXRiYWtlLWxheWVycyIKK0xJQ0VOU0UgPSAiTUlUIgorCitweXRob24gZG9fYnVpbGQoKSB7CisgICAgYmIucGxhaW4oIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIik7CisgICAgYmIucGxhaW4oIiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIik7CisgICAgYmIucGxhaW4oIiogIEV4YW1wbGUgcmVjaXBlIGNyZWF0ZWQgYnkgYml0YmFrZS1sYXllcnMgICAqIik7CisgICAgYmIucGxhaW4oIiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIik7CisgICAgYmIucGxhaW4oIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIik7Cit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvYmJsYXllcnMvdGVtcGxhdGVzL2xheWVyLmNvbmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvYmJsYXllcnMvdGVtcGxhdGVzL2xheWVyLmNvbmYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2MwMzAwMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9iYmxheWVycy90ZW1wbGF0ZXMvbGF5ZXIuY29uZgpAQCAtMCwwICsxLDEwIEBACisjIFdlIGhhdmUgYSBjb25mIGFuZCBjbGFzc2VzIGRpcmVjdG9yeSwgYWRkIHRvIEJCUEFUSAorQkJQQVRIIC49ICI6JHtMQVlFUkRJUn0iCisKKyMgV2UgaGF2ZSByZWNpcGVzLSogZGlyZWN0b3JpZXMsIGFkZCB0byBCQkZJTEVTCitCQkZJTEVTICs9ICIke0xBWUVSRElSfS9yZWNpcGVzLSovKi8qLmJiIFwKKyAgICAgICAgICAgICR7TEFZRVJESVJ9L3JlY2lwZXMtKi8qLyouYmJhcHBlbmQiCisKK0JCRklMRV9DT0xMRUNUSU9OUyArPSAiJXMiCitCQkZJTEVfUEFUVEVSTl8lcyA9ICJeJHtMQVlFUkRJUn0vIgorQkJGSUxFX1BSSU9SSVRZXyVzID0gIiVzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL2J1aWxkaGlzdG9yeV9hbmFseXNpcy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9idWlsZGhpc3RvcnlfYW5hbHlzaXMucHkKaW5kZXggM2E1YjdiNi4uM2U4NmE0NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL2J1aWxkaGlzdG9yeV9hbmFseXNpcy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvYnVpbGRoaXN0b3J5X2FuYWx5c2lzLnB5CkBAIC0xNDMsMjIgKzE0MywyNSBAQAogICAgICAgICAgICAgb3V0ICs9ICdcbiAgJy5qb2luKGxpc3QoZGlmZilbMjpdKQogICAgICAgICAgICAgb3V0ICs9ICdcbiAgLS0nCiAgICAgICAgIGVsaWYgc2VsZi5maWVsZG5hbWUgaW4gaW1nX21vbml0b3JfZmlsZXMgb3IgJy9pbWFnZS1maWxlcy8nIGluIHNlbGYucGF0aDoKLSAgICAgICAgICAgIGZpZWxkbmFtZSA9IHNlbGYuZmllbGRuYW1lCi0gICAgICAgICAgICBpZiAnL2ltYWdlLWZpbGVzLycgaW4gc2VsZi5wYXRoOgotICAgICAgICAgICAgICAgIGZpZWxkbmFtZSA9IG9zLnBhdGguam9pbignLycgKyBzZWxmLnBhdGguc3BsaXQoJy9pbWFnZS1maWxlcy8nKVsxXSwgc2VsZi5maWVsZG5hbWUpCi0gICAgICAgICAgICAgICAgb3V0ID0gJ0NoYW5nZXMgdG8gJXM6XG4gICcgJSBmaWVsZG5hbWUKKyAgICAgICAgICAgIGlmIHNlbGYuZmlsZWNoYW5nZXMgb3IgKHNlbGYub2xkdmFsdWUgYW5kIHNlbGYubmV3dmFsdWUpOgorICAgICAgICAgICAgICAgIGZpZWxkbmFtZSA9IHNlbGYuZmllbGRuYW1lCisgICAgICAgICAgICAgICAgaWYgJy9pbWFnZS1maWxlcy8nIGluIHNlbGYucGF0aDoKKyAgICAgICAgICAgICAgICAgICAgZmllbGRuYW1lID0gb3MucGF0aC5qb2luKCcvJyArIHNlbGYucGF0aC5zcGxpdCgnL2ltYWdlLWZpbGVzLycpWzFdLCBzZWxmLmZpZWxkbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgb3V0ID0gJ0NoYW5nZXMgdG8gJXM6XG4gICcgJSBmaWVsZG5hbWUKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBpZiBvdXRlcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCA9ICdDaGFuZ2VzIHRvICVzICcgJSBzZWxmLnBhdGgKKyAgICAgICAgICAgICAgICAgICAgb3V0ID0gJyglcyk6XG4gICcgJSBzZWxmLmZpZWxkbmFtZQorICAgICAgICAgICAgICAgIGlmIHNlbGYuZmlsZWNoYW5nZXM6CisgICAgICAgICAgICAgICAgICAgIG91dCArPSAnXG4gICcuam9pbihbJyVzJyAlIGkgZm9yIGkgaW4gc2VsZi5maWxlY2hhbmdlc10pCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgYWxpbmVzID0gc2VsZi5vbGR2YWx1ZS5zcGxpdGxpbmVzKCkKKyAgICAgICAgICAgICAgICAgICAgYmxpbmVzID0gc2VsZi5uZXd2YWx1ZS5zcGxpdGxpbmVzKCkKKyAgICAgICAgICAgICAgICAgICAgZGlmZiA9IGRpZmZsaWIudW5pZmllZF9kaWZmKGFsaW5lcywgYmxpbmVzLCBmaWVsZG5hbWUsIGZpZWxkbmFtZSwgbGluZXRlcm09JycpCisgICAgICAgICAgICAgICAgICAgIG91dCArPSAnXG4gICcuam9pbihsaXN0KGRpZmYpKQorICAgICAgICAgICAgICAgICAgICBvdXQgKz0gJ1xuICAtLScKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaWYgb3V0ZXI6Ci0gICAgICAgICAgICAgICAgICAgIHByZWZpeCA9ICdDaGFuZ2VzIHRvICVzICcgJSBzZWxmLnBhdGgKLSAgICAgICAgICAgICAgICBvdXQgPSAnKCVzKTpcbiAgJyAlIHNlbGYuZmllbGRuYW1lCi0gICAgICAgICAgICBpZiBzZWxmLmZpbGVjaGFuZ2VzOgotICAgICAgICAgICAgICAgIG91dCArPSAnXG4gICcuam9pbihbJyVzJyAlIGkgZm9yIGkgaW4gc2VsZi5maWxlY2hhbmdlc10pCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGFsaW5lcyA9IHNlbGYub2xkdmFsdWUuc3BsaXRsaW5lcygpCi0gICAgICAgICAgICAgICAgYmxpbmVzID0gc2VsZi5uZXd2YWx1ZS5zcGxpdGxpbmVzKCkKLSAgICAgICAgICAgICAgICBkaWZmID0gZGlmZmxpYi51bmlmaWVkX2RpZmYoYWxpbmVzLCBibGluZXMsIGZpZWxkbmFtZSwgZmllbGRuYW1lLCBsaW5ldGVybT0nJykKLSAgICAgICAgICAgICAgICBvdXQgKz0gJ1xuICAnLmpvaW4obGlzdChkaWZmKSkKLSAgICAgICAgICAgICAgICBvdXQgKz0gJ1xuICAtLScKKyAgICAgICAgICAgICAgICBvdXQgPSAnJwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgb3V0ID0gJyVzIGNoYW5nZWQgZnJvbSAiJXMiIHRvICIlcyInICUgKHNlbGYuZmllbGRuYW1lLCBzZWxmLm9sZHZhbHVlLCBzZWxmLm5ld3ZhbHVlKQogCkBAIC0xNjksNyArMTcyLDcgQEAKICAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBjaGcuX3N0cl9pbnRlcm5hbChGYWxzZSkuc3BsaXRsaW5lcygpOgogICAgICAgICAgICAgICAgICAgICBvdXQgKz0gJ1xuICAqICVzJyAlIGxpbmUKIAotICAgICAgICByZXR1cm4gJyVzJXMnICUgKHByZWZpeCwgb3V0KQorICAgICAgICByZXR1cm4gJyVzJXMnICUgKHByZWZpeCwgb3V0KSBpZiBvdXQgZWxzZSAnJwogCiBjbGFzcyBGaWxlQ2hhbmdlOgogICAgIGNoYW5nZXR5cGVfYWRkID0gJ0EnCkBAIC01MDgsNyArNTExLDggQEAKICAgICByZXR1cm4gJ1xuJy5qb2luKG91dCkKIAogCi1kZWYgcHJvY2Vzc19jaGFuZ2VzKHJlcG9wYXRoLCByZXZpc2lvbjEsIHJldmlzaW9uMj0nSEVBRCcsIHJlcG9ydF9hbGw9RmFsc2UsIHJlcG9ydF92ZXI9RmFsc2UsIHNpZ3M9RmFsc2UsIHNpZ3NkaWZmPUZhbHNlKToKK2RlZiBwcm9jZXNzX2NoYW5nZXMocmVwb3BhdGgsIHJldmlzaW9uMSwgcmV2aXNpb24yPSdIRUFEJywgcmVwb3J0X2FsbD1GYWxzZSwgcmVwb3J0X3Zlcj1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgc2lncz1GYWxzZSwgc2lnc2RpZmY9RmFsc2UsIGV4Y2x1ZGVfcGF0aD1Ob25lKToKICAgICByZXBvID0gZ2l0LlJlcG8ocmVwb3BhdGgpCiAgICAgYXNzZXJ0IHJlcG8uYmFyZSA9PSBGYWxzZQogICAgIGNvbW1pdCA9IHJlcG8uY29tbWl0KHJldmlzaW9uMSkKQEAgLTYwMSw2ICs2MDUsMTkgQEAKICAgICAgICAgICAgICAgICAgICAgZWxpZiBjaGcucGF0aCA9PSBjaGcyLnBhdGggYW5kIGNoZy5wYXRoLnN0YXJ0c3dpdGgoJ3BhY2thZ2VzLycpIGFuZCBjaGcyLmZpZWxkbmFtZSBpbiBbJ1BFJywgJ1BWJywgJ1BSJ106CiAgICAgICAgICAgICAgICAgICAgICAgICBjaGcucmVsYXRlZC5hcHBlbmQoY2hnMikKIAorICAgICMgZmlsdGVyIG91dCB1bndhbnRlZCBwYXRocworICAgIGlmIGV4Y2x1ZGVfcGF0aDoKKyAgICAgICAgZm9yIGNoZyBpbiBjaGFuZ2VzOgorICAgICAgICAgICAgaWYgY2hnLmZpbGVjaGFuZ2VzOgorICAgICAgICAgICAgICAgIGZjaGdzID0gW10KKyAgICAgICAgICAgICAgICBmb3IgZmNoZyBpbiBjaGcuZmlsZWNoYW5nZXM6CisgICAgICAgICAgICAgICAgICAgIGZvciBlcGF0aCBpbiBleGNsdWRlX3BhdGg6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBmY2hnLnBhdGguc3RhcnRzd2l0aChlcGF0aCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgZmNoZ3MuYXBwZW5kKGZjaGcpCisgICAgICAgICAgICAgICAgY2hnLmZpbGVjaGFuZ2VzID0gZmNoZ3MKKwogICAgIGlmIHJlcG9ydF9hbGw6CiAgICAgICAgIHJldHVybiBjaGFuZ2VzCiAgICAgZWxzZToKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9jb3B5X2J1aWxkc3lzdGVtLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL2NvcHlfYnVpbGRzeXN0ZW0ucHkKaW5kZXggYTM3MjkwNC4uYWMyZmFlMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL2NvcHlfYnVpbGRzeXN0ZW0ucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL2NvcHlfYnVpbGRzeXN0ZW0ucHkKQEAgLTMyLDYgKzMyLDEwIEBACiAKICAgICAgICAgY29yZWJhc2UgPSBvcy5wYXRoLmFic3BhdGgoc2VsZi5kLmdldFZhcignQ09SRUJBU0UnKSkKICAgICAgICAgbGF5ZXJzLmFwcGVuZChjb3JlYmFzZSkKKyAgICAgICAgIyBUaGUgYml0YmFrZSBidWlsZCBzeXN0ZW0gdXNlcyB0aGUgbWV0YS1za2VsZXRvbiBsYXllciBhcyBhIGxheW91dAorICAgICAgICAjIGZvciBjb21tb24gcmVjaXBpZXMsIGUuZzogdGhlIHJlY2lwZXRvb2wgc2NyaXB0IHRvIGNyZWF0ZSBrZXJuZWwgcmVjaXBpZXMKKyAgICAgICAgIyBBZGQgdGhlIG1ldGEtc2tlbGV0b24gbGF5ZXIgdG8gYmUgaW5jbHVkZWQgYXMgcGFydCBvZiB0aGUgZVNESyBpbnN0YWxsYXRpb24KKyAgICAgICAgbGF5ZXJzLmFwcGVuZChvcy5wYXRoLmpvaW4oY29yZWJhc2UsICdtZXRhLXNrZWxldG9uJykpCiAKICAgICAgICAgIyBFeGNsdWRlIGxheWVycwogICAgICAgICBmb3IgbGF5ZXJfZXhjbHVkZSBpbiBzZWxmLmxheWVyc19leGNsdWRlOgpAQCAtNzEsNiArNzUsMTEgQEAKICAgICAgICAgICAgIGxheWVyZGVzdHBhdGggPSBkZXN0ZGlyCiAgICAgICAgICAgICBpZiBjb3JlYmFzZSA9PSBvcy5wYXRoLmRpcm5hbWUobGF5ZXIpOgogICAgICAgICAgICAgICAgIGxheWVyZGVzdHBhdGggKz0gJy8nICsgb3MucGF0aC5iYXNlbmFtZShjb3JlYmFzZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbGF5ZXJfcmVsYXRpdmUgPSBvcy5wYXRoLmJhc2VuYW1lKGNvcmViYXNlKSArICcvJyArIG9zLnBhdGgucmVscGF0aChsYXllciwgY29yZWJhc2UpCisgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5kaXJuYW1lKGxheWVyX3JlbGF0aXZlKSAhPSBsYXllcm5ld25hbWU6CisgICAgICAgICAgICAgICAgICAgIGxheWVyZGVzdHBhdGggKz0gJy8nICsgb3MucGF0aC5kaXJuYW1lKGxheWVyX3JlbGF0aXZlKQorCiAgICAgICAgICAgICBsYXllcmRlc3RwYXRoICs9ICcvJyArIGxheWVybmV3bmFtZQogCiAgICAgICAgICAgICBsYXllcl9yZWxhdGl2ZSA9IG9zLnBhdGgucmVscGF0aChsYXllcmRlc3RwYXRoLApAQCAtMTIzLDYgKzEzMiwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgnd29ya3NwYWNlbGF5ZXInLCB3b3Jrc3BhY2VfbmV3bmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUobGluZSkKIAorICAgICAgICAjIG1ldGEtc2tlbGV0b24gbGF5ZXIgaXMgYWRkZWQgYXMgcGFydCBvZiB0aGUgYnVpbGQgc3lzdGVtCisgICAgICAgICMgYnV0IG5vdCBhcyBhIGxheWVyIGluY2x1ZGVkIGluIHRoZSBidWlsZCwgdGhlcmVmb3JlIGl0IGlzCisgICAgICAgICMgbm90IHJlcG9ydGVkIHRvIHRoZSBmdW5jdGlvbiBjYWxsZXIuCisgICAgICAgIGZvciBsYXllciBpbiBsYXllcnNfY29waWVkOgorICAgICAgICAgICAgaWYgbGF5ZXIuZW5kc3dpdGgoJy9tZXRhLXNrZWxldG9uJyk6CisgICAgICAgICAgICAgICAgbGF5ZXJzX2NvcGllZC5yZW1vdmUobGF5ZXIpCisgICAgICAgICAgICAgICAgYnJlYWsKKwogICAgICAgICByZXR1cm4gbGF5ZXJzX2NvcGllZAogCiBkZWYgZ2VuZXJhdGVfbG9ja2VkX3NpZ3Moc2lnZmlsZSwgZCk6CkBAIC0yMzksNiArMjU2LDcgQEAKICAgICBjbWQgPSAiJXNCQl9TRVRTQ0VORV9FTkZPUkNFPTEgUFNFVURPX0RJU0FCTEVEPTEgb2UtY2hlY2stc3N0YXRlICVzIC1zIC1vICVzICVzIiAlIChjbWRwcmVmaXgsIHRhcmdldHMsIGZpbHRlcm91dGZpbGUsIGxvZ3BhcmFtKQogICAgIGVudiA9IGRpY3QoZC5nZXRWYXIoJ0JCX09SSUdFTlYnLCBGYWxzZSkpCiAgICAgZW52LnBvcCgnQlVJTERESVInLCAnJykKKyAgICBlbnYucG9wKCdCQlBBVEgnLCAnJykKICAgICBwYXRoaXRlbXMgPSBlbnZbJ1BBVEgnXS5zcGxpdCgnOicpCiAgICAgZW52WydQQVRIJ10gPSAnOicuam9pbihbaXRlbSBmb3IgaXRlbSBpbiBwYXRoaXRlbXMgaWYgbm90IGl0ZW0uZW5kc3dpdGgoJy9iaXRiYWtlL2JpbicpXSkKICAgICBiYi5wcm9jZXNzLnJ1bihjbWQsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwgZW52PWVudiwgY3dkPWN3ZCwgZXhlY3V0YWJsZT0nL2Jpbi9iYXNoJykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9kaXN0cm9fY2hlY2sucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvZGlzdHJvX2NoZWNrLnB5CmluZGV4IDM3ZjA0ZWQuLmU3NzVjM2EgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9kaXN0cm9fY2hlY2sucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL2Rpc3Ryb19jaGVjay5weQpAQCAtNzcsMTcgKzc3LDEwIEBACiAKIGRlZiBnZXRfbGF0ZXN0X3JlbGVhc2VkX29wZW5zdXNlX3NvdXJjZV9wYWNrYWdlX2xpc3QoZCk6CiAgICAgIlJldHVybnMgbGlzdCBvZiBhbGwgdGhlIG5hbWUgb3MgcGFja2FnZXMgaW4gdGhlIGxhdGVzdCBvcGVuc3VzZSBkaXN0cm8iCi0gICAgbGF0ZXN0ID0gZmluZF9sYXRlc3RfbnVtZXJpY19yZWxlYXNlKCJodHRwOi8vZG93bmxvYWQub3BlbnN1c2Uub3JnL3NvdXJjZS9kaXN0cmlidXRpb24vIixkKQorICAgIGxhdGVzdCA9IGZpbmRfbGF0ZXN0X251bWVyaWNfcmVsZWFzZSgiaHR0cDovL2Rvd25sb2FkLm9wZW5zdXNlLm9yZy9zb3VyY2UvZGlzdHJpYnV0aW9uL2xlYXAiLCBkKQogCi0gICAgcGFja2FnZV9uYW1lcyA9IGdldF9zb3VyY2VfcGFja2FnZV9saXN0X2Zyb21fdXJsKCJodHRwOi8vZG93bmxvYWQub3BlbnN1c2Uub3JnL3NvdXJjZS9kaXN0cmlidXRpb24vJXMvcmVwby9vc3Mvc3VzZS9zcmMvIiAlIGxhdGVzdCwgIm1haW4iLCBkKQotICAgIHBhY2thZ2VfbmFtZXMgfD0gZ2V0X3NvdXJjZV9wYWNrYWdlX2xpc3RfZnJvbV91cmwoImh0dHA6Ly9kb3dubG9hZC5vcGVuc3VzZS5vcmcvdXBkYXRlLyVzL3NyYy8iICUgbGF0ZXN0LCAidXBkYXRlcyIsIGQpCi0gICAgcmV0dXJuIGxhdGVzdCwgcGFja2FnZV9uYW1lcwotCi1kZWYgZ2V0X2xhdGVzdF9yZWxlYXNlZF9tYW5kcml2YV9zb3VyY2VfcGFja2FnZV9saXN0KGQpOgotICAgICJSZXR1cm5zIGxpc3Qgb2YgYWxsIHRoZSBuYW1lIG9zIHBhY2thZ2VzIGluIHRoZSBsYXRlc3QgbWFuZHJpdmEgZGlzdHJvIgotICAgIGxhdGVzdCA9IGZpbmRfbGF0ZXN0X251bWVyaWNfcmVsZWFzZSgiaHR0cDovL2Rpc3RyaWItY29mZmVlLmlwc2wuanVzc2lldS5mci9wdWIvbGludXgvTWFuZHJpdmFMaW51eC9vZmZpY2lhbC8iLCBkKQotICAgIHBhY2thZ2VfbmFtZXMgPSBnZXRfc291cmNlX3BhY2thZ2VfbGlzdF9mcm9tX3VybCgiaHR0cDovL2Rpc3RyaWItY29mZmVlLmlwc2wuanVzc2lldS5mci9wdWIvbGludXgvTWFuZHJpdmFMaW51eC9vZmZpY2lhbC8lcy9TUlBNUy9tYWluL3JlbGVhc2UvIiAlIGxhdGVzdCwgIm1haW4iLCBkKQotICAgIHBhY2thZ2VfbmFtZXMgfD0gZ2V0X3NvdXJjZV9wYWNrYWdlX2xpc3RfZnJvbV91cmwoImh0dHA6Ly9kaXN0cmliLWNvZmZlZS5pcHNsLmp1c3NpZXUuZnIvcHViL2xpbnV4L01hbmRyaXZhTGludXgvb2ZmaWNpYWwvJXMvU1JQTVMvbWFpbi91cGRhdGVzLyIgJSBsYXRlc3QsICJ1cGRhdGVzIiwgZCkKKyAgICBwYWNrYWdlX25hbWVzID0gZ2V0X3NvdXJjZV9wYWNrYWdlX2xpc3RfZnJvbV91cmwoImh0dHA6Ly9kb3dubG9hZC5vcGVuc3VzZS5vcmcvc291cmNlL2Rpc3RyaWJ1dGlvbi9sZWFwLyVzL3JlcG8vb3NzL3N1c2Uvc3JjLyIgJSBsYXRlc3QsICJtYWluIiwgZCkKKyAgICBwYWNrYWdlX25hbWVzIHw9IGdldF9zb3VyY2VfcGFja2FnZV9saXN0X2Zyb21fdXJsKCJodHRwOi8vZG93bmxvYWQub3BlbnN1c2Uub3JnL3VwZGF0ZS9sZWFwLyVzL29zcy9zcmMvIiAlIGxhdGVzdCwgInVwZGF0ZXMiLCBkKQogICAgIHJldHVybiBsYXRlc3QsIHBhY2thZ2VfbmFtZXMKIAogZGVmIGdldF9sYXRlc3RfcmVsZWFzZWRfY2xlYXJfc291cmNlX3BhY2thZ2VfbGlzdChkKToKQEAgLTE2MSw4ICsxNTQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiRGViaWFuIiwgZ2V0X2xhdGVzdF9yZWxlYXNlZF9kZWJpYW5fc291cmNlX3BhY2thZ2VfbGlzdCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJVYnVudHUiLCBnZXRfbGF0ZXN0X3JlbGVhc2VkX3VidW50dV9zb3VyY2VfcGFja2FnZV9saXN0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIkZlZG9yYSIsIGdldF9sYXRlc3RfcmVsZWFzZWRfZmVkb3JhX3NvdXJjZV9wYWNrYWdlX2xpc3QpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiT3BlblN1U0UiLCBnZXRfbGF0ZXN0X3JlbGVhc2VkX29wZW5zdXNlX3NvdXJjZV9wYWNrYWdlX2xpc3QpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiTWFuZHJpdmEiLCBnZXRfbGF0ZXN0X3JlbGVhc2VkX21hbmRyaXZhX3NvdXJjZV9wYWNrYWdlX2xpc3QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgib3BlblNVU0UiLCBnZXRfbGF0ZXN0X3JlbGVhc2VkX29wZW5zdXNlX3NvdXJjZV9wYWNrYWdlX2xpc3QpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiQ2xlYXIiLCBnZXRfbGF0ZXN0X3JlbGVhc2VkX2NsZWFyX3NvdXJjZV9wYWNrYWdlX2xpc3QpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvZ3BnX3NpZ24ucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvZ3BnX3NpZ24ucHkKaW5kZXggN2NlNzY3ZS4uOWNjODhmMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL2dwZ19zaWduLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9ncGdfc2lnbi5weQpAQCAtMTUsNyArMTUsNyBAQAogCiAgICAgZGVmIGV4cG9ydF9wdWJrZXkoc2VsZiwgb3V0cHV0X2ZpbGUsIGtleWlkLCBhcm1vcj1UcnVlKToKICAgICAgICAgIiIiRXhwb3J0IEdQRyBwdWJsaWMga2V5IHRvIGEgZmlsZSIiIgotICAgICAgICBjbWQgPSAnJXMgLS1iYXRjaCAtLXllcyAtLWV4cG9ydCAtbyAlcyAnICUgXAorICAgICAgICBjbWQgPSAnJXMgLS1uby1wZXJtaXNzaW9uLXdhcm5pbmcgLS1iYXRjaCAtLXllcyAtLWV4cG9ydCAtbyAlcyAnICUgXAogICAgICAgICAgICAgICAgIChzZWxmLmdwZ19iaW4sIG91dHB1dF9maWxlKQogICAgICAgICBpZiBzZWxmLmdwZ19wYXRoOgogICAgICAgICAgICAgY21kICs9ICItLWhvbWVkaXIgJXMgIiAlIHNlbGYuZ3BnX3BhdGgKQEAgLTI3LDIyICsyNywyNyBAQAogICAgICAgICAgICAgcmFpc2UgYmIuYnVpbGQuRnVuY0ZhaWxlZCgnRmFpbGVkIHRvIGV4cG9ydCBncGcgcHVibGljIGtleSAoJXMpOiAlcycgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5aWQsIG91dHB1dCkpCiAKLSAgICBkZWYgc2lnbl9ycG1zKHNlbGYsIGZpbGVzLCBrZXlpZCwgcGFzc3BocmFzZSk6CisgICAgZGVmIHNpZ25fcnBtcyhzZWxmLCBmaWxlcywga2V5aWQsIHBhc3NwaHJhc2UsIGRpZ2VzdCwgc2lnbl9jaHVuaywgZnNrPU5vbmUsIGZza19wYXNzd29yZD1Ob25lKToKICAgICAgICAgIiIiU2lnbiBSUE0gZmlsZXMiIiIKIAogICAgICAgICBjbWQgPSBzZWxmLnJwbV9iaW4gKyAiIC0tYWRkc2lnbiAtLWRlZmluZSAnX2dwZ19uYW1lICVzJyAgIiAlIGtleWlkCi0gICAgICAgIGdwZ19hcmdzID0gJy0tYmF0Y2ggLS1wYXNzcGhyYXNlPSVzJyAlIHBhc3NwaHJhc2UKKyAgICAgICAgZ3BnX2FyZ3MgPSAnLS1uby1wZXJtaXNzaW9uLXdhcm5pbmcgLS1iYXRjaCAtLXBhc3NwaHJhc2U9JXMnICUgcGFzc3BocmFzZQogICAgICAgICBpZiBzZWxmLmdwZ192ZXJzaW9uID4gKDIsMSwpOgogICAgICAgICAgICAgZ3BnX2FyZ3MgKz0gJyAtLXBpbmVudHJ5LW1vZGU9bG9vcGJhY2snCiAgICAgICAgIGNtZCArPSAiLS1kZWZpbmUgJ19ncGdfc2lnbl9jbWRfZXh0cmFfYXJncyAlcycgIiAlIGdwZ19hcmdzCisgICAgICAgIGNtZCArPSAiLS1kZWZpbmUgJ19iaW5hcnlfZmlsZWRpZ2VzdF9hbGdvcml0aG0gJXMnICIgJSBkaWdlc3QKICAgICAgICAgaWYgc2VsZi5ncGdfYmluOgotICAgICAgICAgICAgY21kICs9ICItLWRlZmluZSAnJSVfX2dwZyAlcycgIiAlIHNlbGYuZ3BnX2JpbgorICAgICAgICAgICAgY21kICs9ICItLWRlZmluZSAnX19ncGcgJXMnICIgJSBzZWxmLmdwZ19iaW4KICAgICAgICAgaWYgc2VsZi5ncGdfcGF0aDoKICAgICAgICAgICAgIGNtZCArPSAiLS1kZWZpbmUgJ19ncGdfcGF0aCAlcycgIiAlIHNlbGYuZ3BnX3BhdGgKKyAgICAgICAgaWYgZnNrOgorICAgICAgICAgICAgY21kICs9ICItLXNpZ25maWxlcyAtLWZza3BhdGggJXMgIiAlIGZzaworICAgICAgICAgICAgaWYgZnNrX3Bhc3N3b3JkOgorICAgICAgICAgICAgICAgIGNtZCArPSAiLS1kZWZpbmUgJ19maWxlX3NpZ25pbmdfa2V5X3Bhc3N3b3JkICVzJyAiICUgZnNrX3Bhc3N3b3JkCiAKLSAgICAgICAgIyBTaWduIGluIGNodW5rcyBvZiAxMDAgcGFja2FnZXMKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGZpbGVzKSwgMTAwKToKLSAgICAgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gb2UudXRpbHMuZ2V0c3RhdHVzb3V0cHV0KGNtZCArICcgJy5qb2luKGZpbGVzW2k6aSsxMDBdKSkKKyAgICAgICAgIyBTaWduIGluIGNodW5rcworICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4oZmlsZXMpLCBzaWduX2NodW5rKToKKyAgICAgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gb2UudXRpbHMuZ2V0c3RhdHVzb3V0cHV0KGNtZCArICcgJy5qb2luKGZpbGVzW2k6aStzaWduX2NodW5rXSkpCiAgICAgICAgICAgICBpZiBzdGF0dXM6CiAgICAgICAgICAgICAgICAgcmFpc2UgYmIuYnVpbGQuRnVuY0ZhaWxlZCgiRmFpbGVkIHRvIHNpZ24gUlBNIHBhY2thZ2VzOiAlcyIgJSBvdXRwdXQpCiAKQEAgLTUzLDggKzU4LDggQEAKICAgICAgICAgaWYgcGFzc3BocmFzZV9maWxlIGFuZCBwYXNzcGhyYXNlOgogICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJZb3Ugc2hvdWxkIHVzZSBlaXRoZXIgcGFzc3BocmFzZV9maWxlIG9mIHBhc3NwaHJhc2UsIG5vdCBib3RoIikKIAotICAgICAgICBjbWQgPSBbc2VsZi5ncGdfYmluLCAnLS1kZXRhY2gtc2lnbicsICctLWJhdGNoJywgJy0tbm8tdHR5JywgJy0teWVzJywKLSAgICAgICAgICAgICAgICctLXBhc3NwaHJhc2UtZmQnLCAnMCcsICctdScsIGtleWlkXQorICAgICAgICBjbWQgPSBbc2VsZi5ncGdfYmluLCAnLS1kZXRhY2gtc2lnbicsICctLW5vLXBlcm1pc3Npb24td2FybmluZycsICctLWJhdGNoJywKKyAgICAgICAgICAgICAgICctLW5vLXR0eScsICctLXllcycsICctLXBhc3NwaHJhc2UtZmQnLCAnMCcsICctdScsIGtleWlkXQogCiAgICAgICAgIGlmIHNlbGYuZ3BnX3BhdGg6CiAgICAgICAgICAgICBjbWQgKz0gWyctLWhvbWVkaXInLCBzZWxmLmdwZ19wYXRoXQpAQCAtOTMsNyArOTgsNyBAQAogICAgICAgICAiIiJSZXR1cm4gdGhlIGdwZyB2ZXJzaW9uIGFzIGEgdHVwbGUgb2YgaW50cyIiIgogICAgICAgICBpbXBvcnQgc3VicHJvY2VzcwogICAgICAgICB0cnk6Ci0gICAgICAgICAgICB2ZXJfc3RyID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoKHNlbGYuZ3BnX2JpbiwgIi0tdmVyc2lvbiIpKS5zcGxpdCgpWzJdLmRlY29kZSgidXRmLTgiKQorICAgICAgICAgICAgdmVyX3N0ciA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KChzZWxmLmdwZ19iaW4sICItLXZlcnNpb24iLCAiLS1uby1wZXJtaXNzaW9uLXdhcm5pbmciKSkuc3BsaXQoKVsyXS5kZWNvZGUoInV0Zi04IikKICAgICAgICAgICAgIHJldHVybiB0dXBsZShbaW50KGkpIGZvciBpIGluIHZlcl9zdHIuc3BsaXQoJy4nKV0pCiAgICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBhcyBlOgogICAgICAgICAgICAgcmFpc2UgYmIuYnVpbGQuRnVuY0ZhaWxlZCgiQ291bGQgbm90IGdldCBncGcgdmVyc2lvbjogJXMiICUgZSkKQEAgLTEwMSw3ICsxMDYsNyBAQAogCiAgICAgZGVmIHZlcmlmeShzZWxmLCBzaWdfZmlsZSk6CiAgICAgICAgICIiIlZlcmlmeSBzaWduYXR1cmUiIiIKLSAgICAgICAgY21kID0gc2VsZi5ncGdfYmluICsgIiAtLXZlcmlmeSAiCisgICAgICAgIGNtZCA9IHNlbGYuZ3BnX2JpbiArICIgLS12ZXJpZnkgLS1uby1wZXJtaXNzaW9uLXdhcm5pbmcgIgogICAgICAgICBpZiBzZWxmLmdwZ19wYXRoOgogICAgICAgICAgICAgY21kICs9ICItLWhvbWVkaXIgJXMgIiAlIHNlbGYuZ3BnX3BhdGgKICAgICAgICAgY21kICs9IHNpZ19maWxlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvbGljZW5zZS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9saWNlbnNlLnB5CmluZGV4IDhkMmZkMTcuLmNhMzg1ZDUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9saWNlbnNlLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9saWNlbnNlLnB5CkBAIC0xMDYsNyArMTA2LDggQEAKICAgICBsaWNlbnNlIHN0cmluZyBtYXRjaGVzIHRoZSB3aGl0ZWxpc3QgYW5kIGRvZXMgbm90IG1hdGNoIHRoZSBibGFja2xpc3QuCiAKICAgICBSZXR1cm5zIGEgdHVwbGUgaG9sZGluZyB0aGUgYm9vbGVhbiBzdGF0ZSBhbmQgYSBsaXN0IG9mIHRoZSBhcHBsaWNhYmxlCi0gICAgbGljZW5zZXMgd2hpY2ggd2VyZSBleGNsdWRlZCAob3IgTm9uZSwgaWYgdGhlIHN0YXRlIGlzIFRydWUpCisgICAgbGljZW5zZXMgdGhhdCB3ZXJlIGV4Y2x1ZGVkIGlmIHN0YXRlIGlzIEZhbHNlLCBvciB0aGUgbGljZW5zZXMgdGhhdCB3ZXJlCisgICAgaW5jbHVkZWQgaWYgdGhlIHN0YXRlIGlzIFRydWUuCiAgICAgIiIiCiAKICAgICBkZWYgaW5jbHVkZV9saWNlbnNlKGxpY2Vuc2UpOgpAQCAtMTE3LDEwICsxMTgsMTcgQEAKIAogICAgIGRlZiBjaG9vc2VfbGljZW5zZXMoYWxwaGEsIGJldGEpOgogICAgICAgICAiIiJTZWxlY3QgdGhlIG9wdGlvbiBpbiBhbiBPUiB3aGljaCBpcyB0aGUgJ2Jlc3QnIChoYXMgdGhlIG1vc3QKLSAgICAgICAgaW5jbHVkZWQgbGljZW5zZXMpLiIiIgotICAgICAgICBhbHBoYV93ZWlnaHQgPSBsZW4obGlzdChmaWx0ZXIoaW5jbHVkZV9saWNlbnNlLCBhbHBoYSkpKQotICAgICAgICBiZXRhX3dlaWdodCA9IGxlbihsaXN0KGZpbHRlcihpbmNsdWRlX2xpY2Vuc2UsIGJldGEpKSkKLSAgICAgICAgaWYgYWxwaGFfd2VpZ2h0ID4gYmV0YV93ZWlnaHQ6CisgICAgICAgIGluY2x1ZGVkIGxpY2Vuc2VzIGFuZCBubyBleGNsdWRlZCBsaWNlbnNlcykuIiIiCisgICAgICAgICMgVGhlIGZhY3RvciAxMDAwIGJlbG93IGlzIGFyYml0cmFyeSwganVzdCBleHBlY3RlZCB0byBiZSBtdWNoIGxhcmdlcgorICAgICAgICAjIHRoYXQgdGhlIG51bWJlciBvZiBsaWNlbnNlcyBhY3R1YWxseSBzcGVjaWZpZWQuIFRoYXQgd2F5IHRoZSB3ZWlnaHQKKyAgICAgICAgIyB3aWxsIGJlIG5lZ2F0aXZlIGlmIHRoZSBsaXN0IG9mIGxpY2Vuc2VzIGNvbnRhaW5zIGFuIGV4Y2x1ZGVkIGxpY2Vuc2UsCisgICAgICAgICMgYnV0IHN0aWxsIGdpdmVzIGEgaGlnaGVyIHdlaWdodCB0byB0aGUgbGlzdCB3aXRoIHRoZSBtb3N0IGluY2x1ZGVkCisgICAgICAgICMgbGljZW5zZXMuCisgICAgICAgIGFscGhhX3dlaWdodCA9IChsZW4obGlzdChmaWx0ZXIoaW5jbHVkZV9saWNlbnNlLCBhbHBoYSkpKSAtCisgICAgICAgICAgICAgICAgICAgICAgICAxMDAwICogKGxlbihsaXN0KGZpbHRlcihleGNsdWRlX2xpY2Vuc2UsIGFscGhhKSkpID4gMCkpCisgICAgICAgIGJldGFfd2VpZ2h0ID0gKGxlbihsaXN0KGZpbHRlcihpbmNsdWRlX2xpY2Vuc2UsIGJldGEpKSkgLQorICAgICAgICAgICAgICAgICAgICAgICAxMDAwICogKGxlbihsaXN0KGZpbHRlcihleGNsdWRlX2xpY2Vuc2UsIGJldGEpKSkgPiAwKSkKKyAgICAgICAgaWYgYWxwaGFfd2VpZ2h0ID49IGJldGFfd2VpZ2h0OgogICAgICAgICAgICAgcmV0dXJuIGFscGhhCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gYmV0YQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL2xzYi5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9sc2IucHkKaW5kZXggM2E5NDVlMC4uNzFjMDk5MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL2xzYi5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvbHNiLnB5CkBAIC0xLDE5ICsxLDI2IEBACitkZWYgZ2V0X29zX3JlbGVhc2UoKToKKyAgICAiIiJHZXQgYWxsIGtleS12YWx1ZSBwYWlycyBmcm9tIC9ldGMvb3MtcmVsZWFzZSBhcyBhIGRpY3QiIiIKKyAgICBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdAorCisgICAgZGF0YSA9IE9yZGVyZWREaWN0KCkKKyAgICBpZiBvcy5wYXRoLmV4aXN0cygnL2V0Yy9vcy1yZWxlYXNlJyk6CisgICAgICAgIHdpdGggb3BlbignL2V0Yy9vcy1yZWxlYXNlJykgYXMgZjoKKyAgICAgICAgICAgIGZvciBsaW5lIGluIGY6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBrZXksIHZhbCA9IGxpbmUucnN0cmlwKCkuc3BsaXQoJz0nLCAxKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGRhdGFba2V5LnN0cmlwKCldID0gdmFsLnN0cmlwKCciJykKKyAgICByZXR1cm4gZGF0YQorCiBkZWYgcmVsZWFzZV9kaWN0X29zcigpOgogICAgICIiIiBQb3B1bGF0ZSBhIGRpY3Qgd2l0aCBwZXJ0aW5lbnQgdmFsdWVzIGZyb20gL2V0Yy9vcy1yZWxlYXNlICIiIgotICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cygnL2V0Yy9vcy1yZWxlYXNlJyk6Ci0gICAgICAgIHJldHVybiBOb25lCi0KICAgICBkYXRhID0ge30KLSAgICB3aXRoIG9wZW4oJy9ldGMvb3MtcmVsZWFzZScpIGFzIGY6Ci0gICAgICAgIGZvciBsaW5lIGluIGY6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAga2V5LCB2YWwgPSBsaW5lLnJzdHJpcCgpLnNwbGl0KCc9JywgMSkKLSAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBpZiBrZXkgPT0gJ0lEJzoKLSAgICAgICAgICAgICAgICBkYXRhWydESVNUUklCX0lEJ10gPSB2YWwuc3RyaXAoJyInKQotICAgICAgICAgICAgaWYga2V5ID09ICdWRVJTSU9OX0lEJzoKLSAgICAgICAgICAgICAgICBkYXRhWydESVNUUklCX1JFTEVBU0UnXSA9IHZhbC5zdHJpcCgnIicpCisgICAgb3NfcmVsZWFzZSA9IGdldF9vc19yZWxlYXNlKCkKKyAgICBpZiAnSUQnIGluIG9zX3JlbGVhc2U6CisgICAgICAgIGRhdGFbJ0RJU1RSSUJfSUQnXSA9IG9zX3JlbGVhc2VbJ0lEJ10KKyAgICBpZiAnVkVSU0lPTl9JRCcgaW4gb3NfcmVsZWFzZToKKyAgICAgICAgZGF0YVsnRElTVFJJQl9SRUxFQVNFJ10gPSBvc19yZWxlYXNlWydWRVJTSU9OX0lEJ10KIAogICAgIHJldHVybiBkYXRhCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9wYWNrYWdlLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3BhY2thZ2UucHkKaW5kZXggNDc5N2U3ZC4uMWU1YzNhYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3BhY2thZ2UucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3BhY2thZ2UucHkKQEAgLTQ1LDYgKzQ1LDExNSBAQAogICAgIHJldHVybgogCiAKK2RlZiBzdHJpcF9leGVjcyhwbiwgZHN0ZGlyLCBzdHJpcF9jbWQsIGxpYmRpciwgYmFzZV9saWJkaXIsIHFhX2FscmVhZHlfc3RyaXBwZWQ9RmFsc2UpOgorICAgICIiIgorICAgIFN0cmlwIGV4ZWN1dGFibGUgY29kZSAobGlrZSBleGVjdXRhYmxlcywgc2hhcmVkIGxpYnJhcmllcykgX2luX3BsYWNlXworICAgIC0gQmFzZWQgb24gc3lzcm9vdF9zdHJpcCBpbiBzdGFnaW5nLmJiY2xhc3MKKyAgICA6cGFyYW0gZHN0ZGlyOiBkaXJlY3RvcnkgaW4gd2hpY2ggdG8gc3RyaXAgZmlsZXMKKyAgICA6cGFyYW0gc3RyaXBfY21kOiBTdHJpcCBjb21tYW5kICh1c3VhbGx5ICR7U1RSSVB9KQorICAgIDpwYXJhbSBsaWJkaXI6ICR7bGliZGlyfSAtIHN0cmlwIC5zbyBmaWxlcyBpbiB0aGlzIGRpcmVjdG9yeQorICAgIDpwYXJhbSBiYXNlX2xpYmRpcjogJHtiYXNlX2xpYmRpcn0gLSBzdHJpcCAuc28gZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkKKyAgICA6cGFyYW0gcWFfYWxyZWFkeV9zdHJpcHBlZDogU2V0IHRvIFRydWUgaWYgYWxyZWFkeS1zdHJpcHBlZCcgaW4gJHtJTlNBTkVfU0tJUH0KKyAgICBUaGlzIGlzIGZvciBwcm9wZXIgbG9nZ2luZyBhbmQgbWVzc2FnZXMgb25seS4KKyAgICAiIiIKKyAgICBpbXBvcnQgc3RhdCwgZXJybm8sIG9lLnBhdGgsIG9lLnV0aWxzLCBtbWFwCisKKyAgICAjIERldGVjdCAua28gbW9kdWxlIGJ5IHNlYXJjaGluZyBmb3IgInZlcm1hZ2ljPSIgc3RyaW5nCisgICAgZGVmIGlzX2tlcm5lbF9tb2R1bGUocGF0aCk6CisgICAgICAgIHdpdGggb3BlbihwYXRoKSBhcyBmOgorICAgICAgICAgICAgcmV0dXJuIG1tYXAubW1hcChmLmZpbGVubygpLCAwLCBwcm90PW1tYXAuUFJPVF9SRUFEKS5maW5kKGIidmVybWFnaWM9IikgPj0gMAorCisgICAgIyBSZXR1cm4gdHlwZSAoYml0cyk6CisgICAgIyAwIC0gbm90IGVsZgorICAgICMgMSAtIEVMRgorICAgICMgMiAtIHN0cmlwcGVkCisgICAgIyA0IC0gZXhlY3V0YWJsZQorICAgICMgOCAtIHNoYXJlZCBsaWJyYXJ5CisgICAgIyAxNiAtIGtlcm5lbCBtb2R1bGUKKyAgICBkZWYgaXNfZWxmKHBhdGgpOgorICAgICAgICBleGVjX3R5cGUgPSAwCisgICAgICAgIHJldCwgcmVzdWx0ID0gb2UudXRpbHMuZ2V0c3RhdHVzb3V0cHV0KAorICAgICAgICAgICAgImZpbGUgXCIlc1wiIiAlIHBhdGgucmVwbGFjZSgiXCIiLCAiXFxcIiIpKQorCisgICAgICAgIGlmIHJldDoKKyAgICAgICAgICAgIGJiLmVycm9yKCJzcGxpdF9hbmRfc3RyaXBfZmlsZXM6ICdmaWxlICVzJyBmYWlsZWQiICUgcGF0aCkKKyAgICAgICAgICAgIHJldHVybiBleGVjX3R5cGUKKworICAgICAgICBpZiAiRUxGIiBpbiByZXN1bHQ6CisgICAgICAgICAgICBleGVjX3R5cGUgfD0gMQorICAgICAgICAgICAgaWYgIm5vdCBzdHJpcHBlZCIgbm90IGluIHJlc3VsdDoKKyAgICAgICAgICAgICAgICBleGVjX3R5cGUgfD0gMgorICAgICAgICAgICAgaWYgImV4ZWN1dGFibGUiIGluIHJlc3VsdDoKKyAgICAgICAgICAgICAgICBleGVjX3R5cGUgfD0gNAorICAgICAgICAgICAgaWYgInNoYXJlZCIgaW4gcmVzdWx0OgorICAgICAgICAgICAgICAgIGV4ZWNfdHlwZSB8PSA4CisgICAgICAgICAgICBpZiAicmVsb2NhdGFibGUiIGluIHJlc3VsdCBhbmQgaXNfa2VybmVsX21vZHVsZShwYXRoKToKKyAgICAgICAgICAgICAgICBleGVjX3R5cGUgfD0gMTYKKyAgICAgICAgcmV0dXJuIGV4ZWNfdHlwZQorCisgICAgZWxmZmlsZXMgPSB7fQorICAgIGlub2RlcyA9IHt9CisgICAgbGliZGlyID0gb3MucGF0aC5hYnNwYXRoKGRzdGRpciArIG9zLnNlcCArIGxpYmRpcikKKyAgICBiYXNlX2xpYmRpciA9IG9zLnBhdGguYWJzcGF0aChkc3RkaXIgKyBvcy5zZXAgKyBiYXNlX2xpYmRpcikKKyAgICBleGVjX21hc2sgPSBzdGF0LlNfSVhVU1IgfCBzdGF0LlNfSVhHUlAgfCBzdGF0LlNfSVhPVEgKKyAgICAjCisgICAgIyBGaXJzdCBsZXRzIGZpZ3VyZSBvdXQgYWxsIG9mIHRoZSBmaWxlcyB3ZSBtYXkgaGF2ZSB0byBwcm9jZXNzCisgICAgIworICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKGRzdGRpcik6CisgICAgICAgIGZvciBmIGluIGZpbGVzOgorICAgICAgICAgICAgZmlsZSA9IG9zLnBhdGguam9pbihyb290LCBmKQorCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbHRhcmdldCA9IG9lLnBhdGgucmVhbHBhdGgoZmlsZSwgZHN0ZGlyLCBGYWxzZSkKKyAgICAgICAgICAgICAgICBzID0gb3MubHN0YXQobHRhcmdldCkKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgKGVyciwgc3RyZXJyb3IpID0gZS5hcmdzCisgICAgICAgICAgICAgICAgaWYgZXJyICE9IGVycm5vLkVOT0VOVDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgICAgICAjIFNraXAgYnJva2VuIHN5bWxpbmtzCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIG5vdCBzOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAjIENoZWNrIGl0cyBhbiBleGN1dGFibGUKKyAgICAgICAgICAgIGlmIHNbc3RhdC5TVF9NT0RFXSAmIGV4ZWNfbWFzayBcCisgICAgICAgICAgICAgICAgICAgIG9yICgoZmlsZS5zdGFydHN3aXRoKGxpYmRpcikgb3IgZmlsZS5zdGFydHN3aXRoKGJhc2VfbGliZGlyKSkgYW5kICIuc28iIGluIGYpIFwKKyAgICAgICAgICAgICAgICAgICAgb3IgZmlsZS5lbmRzd2l0aCgnLmtvJyk6CisgICAgICAgICAgICAgICAgIyBJZiBpdCdzIGEgc3ltbGluaywgYW5kIHBvaW50cyB0byBhbiBFTEYgZmlsZSwgd2UgY2FwdHVyZSB0aGUgcmVhZGxpbmsgdGFyZ2V0CisgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5pc2xpbmsoZmlsZSk6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAjIEl0J3MgYSBmaWxlIChvciBoYXJkbGluayksIG5vdCBhIGxpbmsKKyAgICAgICAgICAgICAgICAjIC4uLmJ1dCBpcyBpdCBFTEYsIGFuZCBpcyBpdCBhbHJlYWR5IHN0cmlwcGVkPworICAgICAgICAgICAgICAgIGVsZl9maWxlID0gaXNfZWxmKGZpbGUpCisgICAgICAgICAgICAgICAgaWYgZWxmX2ZpbGUgJiAxOgorICAgICAgICAgICAgICAgICAgICBpZiBlbGZfZmlsZSAmIDI6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBxYV9hbHJlYWR5X3N0cmlwcGVkOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJiLm5vdGUoIlNraXBwaW5nIGZpbGUgJXMgZnJvbSAlcyBmb3IgYWxyZWFkeS1zdHJpcHBlZCBRQSB0ZXN0IiAlIChmaWxlW2xlbihkc3RkaXIpOl0sIHBuKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmIud2FybigiRmlsZSAnJXMnIGZyb20gJXMgd2FzIGFscmVhZHkgc3RyaXBwZWQsIHRoaXMgd2lsbCBwcmV2ZW50IGZ1dHVyZSBkZWJ1Z2dpbmchIiAlIChmaWxlW2xlbihkc3RkaXIpOl0sIHBuKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAgICAgaWYgcy5zdF9pbm8gaW4gaW5vZGVzOgorICAgICAgICAgICAgICAgICAgICAgICAgb3MudW5saW5rKGZpbGUpCisgICAgICAgICAgICAgICAgICAgICAgICBvcy5saW5rKGlub2Rlc1tzLnN0X2lub10sIGZpbGUpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAjIGJyZWFrIGhhcmRsaW5rcyBzbyB0aGF0IHdlIGRvIG5vdCBzdHJpcCB0aGUgb3JpZ2luYWwuCisgICAgICAgICAgICAgICAgICAgICAgICBpbm9kZXNbcy5zdF9pbm9dID0gZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgYmIudXRpbHMuY29weWZpbGUoZmlsZSwgZmlsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsZmZpbGVzW2ZpbGVdID0gZWxmX2ZpbGUKKworICAgICMKKyAgICAjIE5vdyBzdHJpcCB0aGVtIChpbiBwYXJhbGxlbCkKKyAgICAjCisgICAgc2ZpbGVzID0gW10KKyAgICBmb3IgZmlsZSBpbiBlbGZmaWxlczoKKyAgICAgICAgZWxmX2ZpbGUgPSBpbnQoZWxmZmlsZXNbZmlsZV0pCisgICAgICAgIHNmaWxlcy5hcHBlbmQoKGZpbGUsIGVsZl9maWxlLCBzdHJpcF9jbWQpKQorCisgICAgb2UudXRpbHMubXVsdGlwcm9jZXNzX2V4ZWMoc2ZpbGVzLCBydW5zdHJpcCkKKworCisKIGRlZiBmaWxlX3RyYW5zbGF0ZShmaWxlKToKICAgICBmdCA9IGZpbGUucmVwbGFjZSgiQCIsICJAYXRAIikKICAgICBmdCA9IGZ0LnJlcGxhY2UoIiAiLCAiQHNwYWNlQCIpCkBAIC02Nyw4ICsxNzYsNyBAQAogCiAgICAgZGVmIHByb2Nlc3NfZGVwcyhwaXBlLCBwa2csIHBrZ2Rlc3QsIHByb3ZpZGVzLCByZXF1aXJlcyk6CiAgICAgICAgIGZpbGUgPSBOb25lCi0gICAgICAgIGZvciBsaW5lIGluIHBpcGU6Ci0gICAgICAgICAgICBsaW5lID0gbGluZS5kZWNvZGUoInV0Zi04IikKKyAgICAgICAgZm9yIGxpbmUgaW4gcGlwZS5zcGxpdCgiXG4iKToKIAogICAgICAgICAgICAgbSA9IGZpbGVfcmUubWF0Y2gobGluZSkKICAgICAgICAgICAgIGlmIG06CkBAIC0xMTcsMTIgKzIyNSw4IEBACiAKICAgICAgICAgcmV0dXJuIHByb3ZpZGVzLCByZXF1aXJlcwogCi0gICAgdHJ5OgotICAgICAgICBkZXBfcG9wZW4gPSBzdWJwcm9jZXNzLlBvcGVuKHNobGV4LnNwbGl0KHJwbWRlcHMpICsgcGtnZmlsZXMsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpCi0gICAgICAgIHByb3ZpZGVzLCByZXF1aXJlcyA9IHByb2Nlc3NfZGVwcyhkZXBfcG9wZW4uc3Rkb3V0LCBwa2csIHBrZ2Rlc3QsIHByb3ZpZGVzLCByZXF1aXJlcykKLSAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICBiYi5lcnJvcigicnBtZGVwczogJyVzJyBjb21tYW5kIGZhaWxlZCwgJyVzJyIgJSAoc2hsZXguc3BsaXQocnBtZGVwcykgKyBwa2dmaWxlcywgZSkpCi0gICAgICAgIHJhaXNlIGUKKyAgICBvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChzaGxleC5zcGxpdChycG1kZXBzKSArIHBrZ2ZpbGVzLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpLmRlY29kZSgidXRmLTgiKQorICAgIHByb3ZpZGVzLCByZXF1aXJlcyA9IHByb2Nlc3NfZGVwcyhvdXRwdXQsIHBrZywgcGtnZGVzdCwgcHJvdmlkZXMsIHJlcXVpcmVzKQogCiAgICAgcmV0dXJuIChwa2csIHByb3ZpZGVzLCByZXF1aXJlcykKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3BhY2thZ2VfbWFuYWdlci5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9wYWNrYWdlX21hbmFnZXIucHkKaW5kZXggM2EyZGFhZC4uMGM1ZDkwNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3BhY2thZ2VfbWFuYWdlci5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvcGFja2FnZV9tYW5hZ2VyLnB5CkBAIC0xNywxOCArMTcsMTEgQEAKIGRlZiBjcmVhdGVfaW5kZXgoYXJnKToKICAgICBpbmRleF9jbWQgPSBhcmcKIAotICAgIHRyeToKLSAgICAgICAgYmIubm90ZSgiRXhlY3V0aW5nICclcycgLi4uIiAlIGluZGV4X2NtZCkKLSAgICAgICAgcmVzdWx0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoaW5kZXhfY21kLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQsIHNoZWxsPVRydWUpLmRlY29kZSgidXRmLTgiKQotICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBhcyBlOgotICAgICAgICByZXR1cm4oIkluZGV4IGNyZWF0aW9uIGNvbW1hbmQgJyVzJyBmYWlsZWQgd2l0aCByZXR1cm4gY29kZSAlZDpcbiVzIiAlCi0gICAgICAgICAgICAgICAoZS5jbWQsIGUucmV0dXJuY29kZSwgZS5vdXRwdXQuZGVjb2RlKCJ1dGYtOCIpKSkKLQorICAgIGJiLm5vdGUoIkV4ZWN1dGluZyAnJXMnIC4uLiIgJSBpbmRleF9jbWQpCisgICAgcmVzdWx0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoaW5kZXhfY21kLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQsIHNoZWxsPVRydWUpLmRlY29kZSgidXRmLTgiKQogICAgIGlmIHJlc3VsdDoKICAgICAgICAgYmIubm90ZShyZXN1bHQpCiAKLSAgICByZXR1cm4gTm9uZQotCiAiIiIKIFRoaXMgbWV0aG9kIHBhcnNlIHRoZSBvdXRwdXQgZnJvbSB0aGUgcGFja2FnZSBtYW5hZ2VyYW5kIHJldHVybgogYSBkaWN0aW9uYXJ5IHdpdGggdGhlIGluZm9ybWF0aW9uIG9mIHRoZSBwYWNrYWdlcy4gVGhpcyBpcyB1c2VkCkBAIC0xMDQsMTMgKzk3LDI1IEBACiBjbGFzcyBScG1JbmRleGVyKEluZGV4ZXIpOgogICAgIGRlZiB3cml0ZV9pbmRleChzZWxmKToKICAgICAgICAgaWYgc2VsZi5kLmdldFZhcignUEFDS0FHRV9GRUVEX1NJR04nKSA9PSAnMSc6Ci0gICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCdQYWNrYWdlIGZlZWQgc2lnbmluZyBub3QgeWV0IGltcGxlbWVudGQgZm9yIHJwbScpCisgICAgICAgICAgICBzaWduZXIgPSBnZXRfc2lnbmVyKHNlbGYuZCwgc2VsZi5kLmdldFZhcignUEFDS0FHRV9GRUVEX0dQR19CQUNLRU5EJykpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzaWduZXIgPSBOb25lCiAKICAgICAgICAgY3JlYXRlcmVwb19jID0gYmIudXRpbHMud2hpY2gob3MuZW52aXJvblsnUEFUSCddLCAiY3JlYXRlcmVwb19jIikKICAgICAgICAgcmVzdWx0ID0gY3JlYXRlX2luZGV4KCIlcyAtLXVwZGF0ZSAtcSAlcyIgJSAoY3JlYXRlcmVwb19jLCBzZWxmLmRlcGxveV9kaXIpKQogICAgICAgICBpZiByZXN1bHQ6CiAgICAgICAgICAgICBiYi5mYXRhbChyZXN1bHQpCiAKKyAgICAgICAgIyBTaWduIHJlcG9tZAorICAgICAgICBpZiBzaWduZXI6CisgICAgICAgICAgICBzaWdfdHlwZSA9IHNlbGYuZC5nZXRWYXIoJ1BBQ0tBR0VfRkVFRF9HUEdfU0lHTkFUVVJFX1RZUEUnKQorICAgICAgICAgICAgaXNfYXNjaWlfc2lnID0gKHNpZ190eXBlLnVwcGVyKCkgIT0gIkJJTiIpCisgICAgICAgICAgICBzaWduZXIuZGV0YWNoX3NpZ24ob3MucGF0aC5qb2luKHNlbGYuZGVwbG95X2RpciwgJ3JlcG9kYXRhJywgJ3JlcG9tZC54bWwnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmQuZ2V0VmFyKCdQQUNLQUdFX0ZFRURfR1BHX05BTUUnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmQuZ2V0VmFyKCdQQUNLQUdFX0ZFRURfR1BHX1BBU1NQSFJBU0VfRklMRScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFybW9yPWlzX2FzY2lpX3NpZykKKworCiBjbGFzcyBPcGtnSW5kZXhlcihJbmRleGVyKToKICAgICBkZWYgd3JpdGVfaW5kZXgoc2VsZik6CiAgICAgICAgIGFyY2hfdmFycyA9IFsiQUxMX01VTFRJTElCX1BBQ0tBR0VfQVJDSFMiLApAQCAtMTUyLDkgKzE1Nyw3IEBACiAgICAgICAgICAgICBiYi5ub3RlKCJUaGVyZSBhcmUgbm8gcGFja2FnZXMgaW4gJXMhIiAlIHNlbGYuZGVwbG95X2RpcikKICAgICAgICAgICAgIHJldHVybgogCi0gICAgICAgIHJlc3VsdCA9IG9lLnV0aWxzLm11bHRpcHJvY2Vzc19leGVjKGluZGV4X2NtZHMsIGNyZWF0ZV9pbmRleCkKLSAgICAgICAgaWYgcmVzdWx0OgotICAgICAgICAgICAgYmIuZmF0YWwoJyVzJyAlICgnXG4nLmpvaW4ocmVzdWx0KSkpCisgICAgICAgIG9lLnV0aWxzLm11bHRpcHJvY2Vzc19leGVjKGluZGV4X2NtZHMsIGNyZWF0ZV9pbmRleCkKIAogICAgICAgICBpZiBzaWduZXI6CiAgICAgICAgICAgICBmZWVkX3NpZ190eXBlID0gc2VsZi5kLmdldFZhcignUEFDS0FHRV9GRUVEX0dQR19TSUdOQVRVUkVfVFlQRScpCkBAIC0yMjAsNyArMjIzLDcgQEAKIAogICAgICAgICAgICAgY21kID0gImNkICVzOyBQU0VVRE9fVU5MT0FEPTEgJXMgcGFja2FnZXMgLiA+IFBhY2thZ2VzOyIgJSAoYXJjaF9kaXIsIGFwdF9mdHBhcmNoaXZlKQogCi0gICAgICAgICAgICBjbWQgKz0gIiVzIC1mYyBQYWNrYWdlcyA+IFBhY2thZ2VzLmd6OyIgJSBnemlwCisgICAgICAgICAgICBjbWQgKz0gIiVzIC1mY24gUGFja2FnZXMgPiBQYWNrYWdlcy5nejsiICUgZ3ppcAogCiAgICAgICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGFyY2hfZGlyLCAiUmVsZWFzZSIpLCAidysiKSBhcyByZWxlYXNlOgogICAgICAgICAgICAgICAgIHJlbGVhc2Uud3JpdGUoIkxhYmVsOiAlc1xuIiAlIGFyY2gpCkBAIC0yMzUsOSArMjM4LDcgQEAKICAgICAgICAgICAgIGJiLm5vdGUoIlRoZXJlIGFyZSBubyBwYWNrYWdlcyBpbiAlcyIgJSBzZWxmLmRlcGxveV9kaXIpCiAgICAgICAgICAgICByZXR1cm4KIAotICAgICAgICByZXN1bHQgPSBvZS51dGlscy5tdWx0aXByb2Nlc3NfZXhlYyhpbmRleF9jbWRzLCBjcmVhdGVfaW5kZXgpCi0gICAgICAgIGlmIHJlc3VsdDoKLSAgICAgICAgICAgIGJiLmZhdGFsKCclcycgJSAoJ1xuJy5qb2luKHJlc3VsdCkpKQorICAgICAgICBvZS51dGlscy5tdWx0aXByb2Nlc3NfZXhlYyhpbmRleF9jbWRzLCBjcmVhdGVfaW5kZXgpCiAgICAgICAgIGlmIHNlbGYuZC5nZXRWYXIoJ1BBQ0tBR0VfRkVFRF9TSUdOJykgPT0gJzEnOgogICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignUGFja2FnZSBmZWVkIHNpZ25pbmcgbm90IGltcGxlbWVudGQgZm9yIGRwa2cnKQogCkBAIC01NDgsNiArNTQ5LDE0IEBACiAgICAgICAgIGlmIGZlZWRfdXJpcyA9PSAiIjoKICAgICAgICAgICAgIHJldHVybgogCisgICAgICAgIGdwZ19vcHRzID0gJycKKyAgICAgICAgaWYgc2VsZi5kLmdldFZhcignUEFDS0FHRV9GRUVEX1NJR04nKSA9PSAnMSc6CisgICAgICAgICAgICBncGdfb3B0cyArPSAncmVwb19ncGdjaGVjaz0xXG4nCisgICAgICAgICAgICBncGdfb3B0cyArPSAnZ3Bna2V5PWZpbGU6Ly8lcy9wa2kvcGFja2FnZWZlZWQtZ3BnL1BBQ0tBR0VGRUVELUdQRy1LRVktJXMtJXNcbicgJSAoc2VsZi5kLmdldFZhcignc3lzY29uZmRpcicpLCBzZWxmLmQuZ2V0VmFyKCdESVNUUk8nKSwgc2VsZi5kLmdldFZhcignRElTVFJPX0NPREVOQU1FJykpCisKKyAgICAgICAgaWYgc2VsZi5kLmdldFZhcignUlBNX1NJR05fUEFDS0FHRVMnKSA9PSAnMCc6CisgICAgICAgICAgICBncGdfb3B0cyArPSAnZ3BnY2hlY2s9MFxuJworCiAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihvZS5wYXRoLmpvaW4oc2VsZi50YXJnZXRfcm9vdGZzLCAiZXRjIiwgInl1bS5yZXBvcy5kIikpCiAgICAgICAgIHJlbW90ZV91cmlzID0gc2VsZi5jb25zdHJ1Y3RfdXJpcyhmZWVkX3VyaXMuc3BsaXQoKSwgZmVlZF9iYXNlX3BhdGhzLnNwbGl0KCkpCiAgICAgICAgIGZvciB1cmkgaW4gcmVtb3RlX3VyaXM6CkBAIC01NTgsMTIgKzU2NywxMiBAQAogICAgICAgICAgICAgICAgICAgICByZXBvX2lkICAgPSAib2UtcmVtb3RlLXJlcG8iICArICItIi5qb2luKHVybHBhcnNlKHJlcG9fdXJpKS5wYXRoLnNwbGl0KCIvIikpCiAgICAgICAgICAgICAgICAgICAgIHJlcG9fbmFtZSA9ICJPRSBSZW1vdGUgUmVwbzoiICsgIiAiLmpvaW4odXJscGFyc2UocmVwb191cmkpLnBhdGguc3BsaXQoIi8iKSkKICAgICAgICAgICAgICAgICAgICAgb3BlbihvZS5wYXRoLmpvaW4oc2VsZi50YXJnZXRfcm9vdGZzLCAiZXRjIiwgInl1bS5yZXBvcy5kIiwgcmVwb19iYXNlICsgIi5yZXBvIiksICdhJykud3JpdGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJbJXNdXG5uYW1lPSVzXG5iYXNldXJsPSVzXG5cbiIgJSAocmVwb19pZCwgcmVwb19uYW1lLCByZXBvX3VyaSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJbJXNdXG5uYW1lPSVzXG5iYXNldXJsPSVzXG4lc1xuIiAlIChyZXBvX2lkLCByZXBvX25hbWUsIHJlcG9fdXJpLCBncGdfb3B0cykpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJlcG9fbmFtZSA9ICJPRSBSZW1vdGUgUmVwbzoiICsgIiAiLmpvaW4odXJscGFyc2UodXJpKS5wYXRoLnNwbGl0KCIvIikpCiAgICAgICAgICAgICAgICAgcmVwb191cmkgPSB1cmkKICAgICAgICAgICAgICAgICBvcGVuKG9lLnBhdGguam9pbihzZWxmLnRhcmdldF9yb290ZnMsICJldGMiLCAieXVtLnJlcG9zLmQiLCByZXBvX2Jhc2UgKyAiLnJlcG8iKSwgJ3cnKS53cml0ZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlslc11cbm5hbWU9JXNcbmJhc2V1cmw9JXNcbiIgJSAocmVwb19iYXNlLCByZXBvX25hbWUsIHJlcG9fdXJpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlslc11cbm5hbWU9JXNcbmJhc2V1cmw9JXNcbiVzIiAlIChyZXBvX2Jhc2UsIHJlcG9fbmFtZSwgcmVwb191cmksIGdwZ19vcHRzKSkKIAogICAgIGRlZiBfcHJlcGFyZV9wa2dfdHJhbnNhY3Rpb24oc2VsZik6CiAgICAgICAgIG9zLmVudmlyb25bJ0QnXSA9IHNlbGYudGFyZ2V0X3Jvb3RmcwpAQCAtNjA4LDEwICs2MTcsMTIgQEAKICAgICAgICAgICAgIHNlbGYuX2ludm9rZV9kbmYoWyJyZW1vdmUiXSArIHBrZ3MpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBjbWQgPSBiYi51dGlscy53aGljaChvcy5nZXRlbnYoJ1BBVEgnKSwgInJwbSIpCi0gICAgICAgICAgICBhcmdzID0gWyItZSIsICItLW5vZGVwcyIsICItLXJvb3Q9JXMiICVzZWxmLnRhcmdldF9yb290ZnNdCisgICAgICAgICAgICBhcmdzID0gWyItZSIsICItdiIsICItLW5vZGVwcyIsICItLXJvb3Q9JXMiICVzZWxmLnRhcmdldF9yb290ZnNdCiAKICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBiYi5ub3RlKCJSdW5uaW5nICVzIiAlICcgJy5qb2luKFtjbWRdICsgYXJncyArIHBrZ3MpKQogICAgICAgICAgICAgICAgIG91dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFtjbWRdICsgYXJncyArIHBrZ3MsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkuZGVjb2RlKCJ1dGYtOCIpCisgICAgICAgICAgICAgICAgYmIubm90ZShvdXRwdXQpCiAgICAgICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICBiYi5mYXRhbCgiQ291bGQgbm90IGludm9rZSBycG0uIENvbW1hbmQgIgogICAgICAgICAgICAgICAgICAgICAgIiclcycgcmV0dXJuZWQgJWQ6XG4lcyIgJSAoJyAnLmpvaW4oW2NtZF0gKyBhcmdzICsgcGtncyksIGUucmV0dXJuY29kZSwgZS5vdXRwdXQuZGVjb2RlKCJ1dGYtOCIpKSkKQEAgLTY4Miw3ICs2OTMsNyBAQAogICAgICAgICByZXR1cm4gcGFja2FnZXMKIAogICAgIGRlZiB1cGRhdGUoc2VsZik6Ci0gICAgICAgIHNlbGYuX2ludm9rZV9kbmYoWyJtYWtlY2FjaGUiXSkKKyAgICAgICAgc2VsZi5faW52b2tlX2RuZihbIm1ha2VjYWNoZSIsICItLXJlZnJlc2giXSkKIAogICAgIGRlZiBfaW52b2tlX2RuZihzZWxmLCBkbmZfYXJncywgZmF0YWwgPSBUcnVlLCBwcmludF9vdXRwdXQgPSBUcnVlICk6CiAgICAgICAgIG9zLmVudmlyb25bJ1JQTV9FVENDT05GSUdESVInXSA9IHNlbGYudGFyZ2V0X3Jvb3RmcwpAQCAtMTE0NSw3ICsxMTU2LDcgQEAKIAogICAgICAgICAjIENyZWF0ZSBhbiB0ZW1wIGRpciBhcyBvcGtnIHJvb3QgZm9yIGR1bW15IGluc3RhbGxhdGlvbgogICAgICAgICB0ZW1wX3Jvb3RmcyA9IHNlbGYuZC5leHBhbmQoJyR7VH0vb3BrZycpCi0gICAgICAgIG9wa2dfbGliX2RpciA9IHNlbGYuZC5nZXRWYXIoJ09QS0dMSUJESVInLCBUcnVlKQorICAgICAgICBvcGtnX2xpYl9kaXIgPSBzZWxmLmQuZ2V0VmFyKCdPUEtHTElCRElSJykKICAgICAgICAgaWYgb3BrZ19saWJfZGlyWzBdID09ICIvIjoKICAgICAgICAgICAgIG9wa2dfbGliX2RpciA9IG9wa2dfbGliX2RpclsxOl0KICAgICAgICAgdGVtcF9vcGtnX2RpciA9IG9zLnBhdGguam9pbih0ZW1wX3Jvb3Rmcywgb3BrZ19saWJfZGlyLCAnb3BrZycpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvcGF0Y2gucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvcGF0Y2gucHkKaW5kZXggZjFhYjNkZC4uNTg0YmY2YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3BhdGNoLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9wYXRjaC5weQpAQCAtMSw0ICsxLDUgQEAKIGltcG9ydCBvZS5wYXRoCitpbXBvcnQgb2UudHlwZXMKIAogY2xhc3MgTm90Rm91bmRFcnJvcihiYi5CQkhhbmRsZWRFeGNlcHRpb24pOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoKToKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9wYXRoLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3BhdGgucHkKaW5kZXggNDQ4YTJiOS4uMWVhMDNkNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3BhdGgucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3BhdGgucHkKQEAgLTk4LDcgKzk4LDcgQEAKICAgICBpZiAob3Muc3RhdChzcmMpLnN0X2RldiA9PSAgb3Muc3RhdChkc3QpLnN0X2Rldik6CiAgICAgICAgICMgTmVlZCB0byBjb3B5IGRpcmVjdG9yaWVzIG9ubHkgd2l0aCB0YXIgZmlyc3Qgc2luY2UgY3Agd2lsbCBlcnJvciBpZiB0d28gCiAgICAgICAgICMgd3JpdGVycyB0cnkgYW5kIGNyZWF0ZSBhIGRpcmVjdG9yeSBhdCB0aGUgc2FtZSB0aW1lCi0gICAgICAgIGNtZCA9ICJjZCAlczsgZmluZCAuIC10eXBlIGQgLXByaW50IHwgdGFyIC0teGF0dHJzIC0teGF0dHJzLWluY2x1ZGU9JyonIC1jZiAtIC1DICVzIC1wIC0tbm8tcmVjdXJzaW9uIC0tZmlsZXMtZnJvbSAtIHwgdGFyIC0teGF0dHJzIC0teGF0dHJzLWluY2x1ZGU9JyonIC14ZiAtIC1DICVzIiAlIChzcmMsIHNyYywgZHN0KQorICAgICAgICBjbWQgPSAiY2QgJXM7IGZpbmQgLiAtdHlwZSBkIC1wcmludCB8IHRhciAtLXhhdHRycyAtLXhhdHRycy1pbmNsdWRlPScqJyAtY2YgLSAtQyAlcyAtcCAtLW5vLXJlY3Vyc2lvbiAtLWZpbGVzLWZyb20gLSB8IHRhciAtLXhhdHRycyAtLXhhdHRycy1pbmNsdWRlPScqJyAteGhmIC0gLUMgJXMiICUgKHNyYywgc3JjLCBkc3QpCiAgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCwgc2hlbGw9VHJ1ZSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQogICAgICAgICBzb3VyY2UgPSAnJwogICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKHNyYyk6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvcmVjaXBldXRpbHMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvcmVjaXBldXRpbHMucHkKaW5kZXggYTdmZGQzNi4uY2FiOGU0MCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3JlY2lwZXV0aWxzLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9yZWNpcGV1dGlscy5weQpAQCAtMiw3ICsyLDcgQEAKICMKICMgU29tZSBjb2RlIGJvcnJvd2VkIGZyb20gdGhlIE9FIGxheWVyIGluZGV4CiAjCi0jIENvcHlyaWdodCAoQykgMjAxMy0yMDE2IEludGVsIENvcnBvcmF0aW9uCisjIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEludGVsIENvcnBvcmF0aW9uCiAjCiAKIGltcG9ydCBzeXMKQEAgLTE4OCw2ICsxODgsMTEgQEAKICAgICAgICAgICAgIGZvciB3cmFwbGluZSBpbiB3cmFwcGVkWzotMV06CiAgICAgICAgICAgICAgICAgYWRkbGluZXMuYXBwZW5kKCclcyBcXCVzJyAlICh3cmFwbGluZSwgbmV3bGluZSkpCiAgICAgICAgICAgICBhZGRsaW5lcy5hcHBlbmQoJyVzJXMnICUgKHdyYXBwZWRbLTFdLCBuZXdsaW5lKSkKKworICAgICAgICAjIFNwbGl0IG9uIG5ld2xpbmVzIC0gdGhpcyBpc24ndCBzdHJpY3RseSBuZWNlc3NhcnkgaWYgeW91IGFyZSBvbmx5CisgICAgICAgICMgZ29pbmcgdG8gd3JpdGUgdGhlIG91dHB1dCB0byBkaXNrLCBidXQgaWYgeW91IHdhbnQgdG8gY29tcGFyZSBpdAorICAgICAgICAjIChhcyBwYXRjaF9yZWNpcGVfZmlsZSgpIHdpbGwgZG8gaWYgcGF0Y2g9VHJ1ZSkgdGhlbiBpdCdzIGltcG9ydGFudC4KKyAgICAgICAgYWRkbGluZXMgPSBbbGluZSBmb3IgbCBpbiBhZGRsaW5lcyBmb3IgbGluZSBpbiBsLnNwbGl0bGluZXMoVHJ1ZSldCiAgICAgICAgIGlmIHJld2luZGNvbW1lbnRzOgogICAgICAgICAgICAgIyBFbnN1cmUgd2UgaW5zZXJ0IHRoZSBsaW5lcyBiZWZvcmUgYW55IGxlYWRpbmcgY29tbWVudHMKICAgICAgICAgICAgICMgKHRoYXQgd2UnZCB3YW50IHRvIGVuc3VyZSByZW1haW4gbGVhZGluZyB0aGUgbmV4dCB2YWx1ZSkKQEAgLTMyMCw3ICszMjUsNyBAQAogCiAKIAotZGVmIGNvcHlfcmVjaXBlX2ZpbGVzKGQsIHRndF9kaXIsIHdob2xlX2Rpcj1GYWxzZSwgZG93bmxvYWQ9VHJ1ZSk6CitkZWYgY29weV9yZWNpcGVfZmlsZXMoZCwgdGd0X2Rpciwgd2hvbGVfZGlyPUZhbHNlLCBkb3dubG9hZD1UcnVlLCBhbGxfdmFyaWFudHM9RmFsc2UpOgogICAgICIiIkNvcHkgKGxvY2FsKSByZWNpcGUgZmlsZXMsIGluY2x1ZGluZyBib3RoIGZpbGVzIGluY2x1ZGVkIHZpYSBpbmNsdWRlL3JlcXVpcmUsCiAgICAgYW5kIGZpbGVzIHJlZmVycmVkIHRvIGluIHRoZSBTUkNfVVJJIHZhcmlhYmxlLiIiIgogICAgIGltcG9ydCBiYi5mZXRjaDIKQEAgLTMyOCwxOCArMzMzLDQxIEBACiAKICAgICAjIEZJWE1FIG5lZWQgYSB3YXJuaW5nIGlmIHRoZSB1bmV4cGFuZGVkIFNSQ19VUkkgdmFsdWUgY29udGFpbnMgdmFyaWFibGUgcmVmZXJlbmNlcwogCi0gICAgdXJpcyA9IChkLmdldFZhcignU1JDX1VSSScpIG9yICIiKS5zcGxpdCgpCi0gICAgZmV0Y2ggPSBiYi5mZXRjaDIuRmV0Y2godXJpcywgZCkKLSAgICBpZiBkb3dubG9hZDoKLSAgICAgICAgZmV0Y2guZG93bmxvYWQoKQorICAgIHVyaV92YWx1ZXMgPSBbXQorICAgIGxvY2FscGF0aHMgPSBbXQorICAgIGRlZiBmZXRjaF91cmxzKHJkYXRhKToKKyAgICAgICAgIyBDb2xsZWN0IHRoZSBsb2NhbCBwYXRocyBmcm9tIFNSQ19VUkkKKyAgICAgICAgc3JjdXJpID0gcmRhdGEuZ2V0VmFyKCdTUkNfVVJJJykgb3IgIiIKKyAgICAgICAgaWYgc3JjdXJpIG5vdCBpbiB1cmlfdmFsdWVzOgorICAgICAgICAgICAgZmV0Y2ggPSBiYi5mZXRjaDIuRmV0Y2goc3JjdXJpLnNwbGl0KCksIHJkYXRhKQorICAgICAgICAgICAgaWYgZG93bmxvYWQ6CisgICAgICAgICAgICAgICAgZmV0Y2guZG93bmxvYWQoKQorICAgICAgICAgICAgZm9yIHB0aCBpbiBmZXRjaC5sb2NhbHBhdGhzKCk6CisgICAgICAgICAgICAgICAgaWYgcHRoIG5vdCBpbiBsb2NhbHBhdGhzOgorICAgICAgICAgICAgICAgICAgICBsb2NhbHBhdGhzLmFwcGVuZChwdGgpCisgICAgICAgICAgICB1cmlfdmFsdWVzLmFwcGVuZChzcmN1cmkpCisKKyAgICBmZXRjaF91cmxzKGQpCisgICAgaWYgYWxsX3ZhcmlhbnRzOgorICAgICAgICAjIEdldCBmaWxlcyBmb3Igb3RoZXIgdmFyaWFudHMgZS5nLiBpbiB0aGUgY2FzZSBvZiBhIFNSQ19VUklfYXBwZW5kCisgICAgICAgIGxvY2FsZGF0YSA9IGJiLmRhdGEuY3JlYXRlQ29weShkKQorICAgICAgICB2YXJpYW50cyA9IChsb2NhbGRhdGEuZ2V0VmFyKCdCQkNMQVNTRVhURU5EJykgb3IgJycpLnNwbGl0KCkKKyAgICAgICAgaWYgdmFyaWFudHM6CisgICAgICAgICAgICAjIEVuc3VyZSB3ZSBoYW5kbGUgY2xhc3MtdGFyZ2V0IGlmIHdlJ3JlIGRlYWxpbmcgd2l0aCBvbmUgb2YgdGhlIHZhcmlhbnRzCisgICAgICAgICAgICB2YXJpYW50cy5hcHBlbmQoJ3RhcmdldCcpCisgICAgICAgICAgICBmb3IgdmFyaWFudCBpbiB2YXJpYW50czoKKyAgICAgICAgICAgICAgICBsb2NhbGRhdGEuc2V0VmFyKCdDTEFTU09WRVJSSURFJywgJ2NsYXNzLSVzJyAlIHZhcmlhbnQpCisgICAgICAgICAgICAgICAgZmV0Y2hfdXJscyhsb2NhbGRhdGEpCiAKICAgICAjIENvcHkgbG9jYWwgZmlsZXMgdG8gdGFyZ2V0IGRpcmVjdG9yeSBhbmQgZ2F0aGVyIGFueSByZW1vdGUgZmlsZXMKLSAgICBiYl9kaXIgPSBvcy5wYXRoLmRpcm5hbWUoZC5nZXRWYXIoJ0ZJTEUnKSkgKyBvcy5zZXAKKyAgICBiYl9kaXIgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKGQuZ2V0VmFyKCdGSUxFJykpKSArIG9zLnNlcAogICAgIHJlbW90ZXMgPSBbXQogICAgIGNvcGllZCA9IFtdCi0gICAgaW5jbHVkZXMgPSBbcGF0aCBmb3IgcGF0aCBpbiBkLmdldFZhcignQkJJTkNMVURFRCcpLnNwbGl0KCkgaWYKLSAgICAgICAgICAgICAgICBwYXRoLnN0YXJ0c3dpdGgoYmJfZGlyKSBhbmQgb3MucGF0aC5leGlzdHMocGF0aCldCi0gICAgZm9yIHBhdGggaW4gZmV0Y2gubG9jYWxwYXRocygpICsgaW5jbHVkZXM6CisgICAgIyBOZWVkIHRvIGRvIHRoaXMgaW4gdHdvIHN0ZXBzIHNpbmNlIHdlIHdhbnQgdG8gY2hlY2sgYWdhaW5zdCB0aGUgYWJzb2x1dGUgcGF0aAorICAgIGluY2x1ZGVzID0gW29zLnBhdGguYWJzcGF0aChwYXRoKSBmb3IgcGF0aCBpbiBkLmdldFZhcignQkJJTkNMVURFRCcpLnNwbGl0KCkgaWYgb3MucGF0aC5leGlzdHMocGF0aCldCisgICAgIyBXZSBhbHNvIGNoZWNrIHRoaXMgYmVsb3csIGJ1dCB3ZSBkb24ndCB3YW50IGFueSBpdGVtcyBpbiB0aGlzIGxpc3QgYmVpbmcgY29uc2lkZXJlZCByZW1vdGVzCisgICAgaW5jbHVkZXMgPSBbcGF0aCBmb3IgcGF0aCBpbiBpbmNsdWRlcyBpZiBwYXRoLnN0YXJ0c3dpdGgoYmJfZGlyKV0KKyAgICBmb3IgcGF0aCBpbiBsb2NhbHBhdGhzICsgaW5jbHVkZXM6CiAgICAgICAgICMgT25seSBpbXBvcnQgZmlsZXMgdGhhdCBhcmUgdW5kZXIgdGhlIG1ldGEgZGlyZWN0b3J5CiAgICAgICAgIGlmIHBhdGguc3RhcnRzd2l0aChiYl9kaXIpOgogICAgICAgICAgICAgaWYgbm90IHdob2xlX2RpcjoKQEAgLTc3OCw3ICs4MDYsNyBAQAogCiBkZWYgZmluZF9sYXllcmRpcihmbik6CiAgICAgIiIiIEZpZ3VyZSBvdXQgdGhlIHBhdGggdG8gdGhlIGJhc2Ugb2YgdGhlIGxheWVyIGNvbnRhaW5pbmcgYSBmaWxlIChlLmcuIGEgcmVjaXBlKSIiIgotICAgIHB0aCA9IGZuCisgICAgcHRoID0gb3MucGF0aC5hYnNwYXRoKGZuKQogICAgIGxheWVyZGlyID0gJycKICAgICB3aGlsZSBwdGg6CiAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihwdGgsICdjb25mJywgJ2xheWVyLmNvbmYnKSk6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2Uvcm9vdGZzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3Jvb3Rmcy5weQppbmRleCA5NjU5MWYzLi43NTRlZjU2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2Uvcm9vdGZzLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9yb290ZnMucHkKQEAgLTI2MSwxNSArMjYxLDIyIEBACiAgICAgICAgICAgICAjIFJlbW92ZSBjb21wb25lbnRzIHRoYXQgd2UgZG9uJ3QgbmVlZCBpZiBpdCdzIGEgcmVhZC1vbmx5IHJvb3RmcwogICAgICAgICAgICAgdW5uZWVkZWRfcGtncyA9IHNlbGYuZC5nZXRWYXIoIlJPT1RGU19ST19VTk5FRURFRCIpLnNwbGl0KCkKICAgICAgICAgICAgIHBrZ3NfaW5zdGFsbGVkID0gaW1hZ2VfbGlzdF9pbnN0YWxsZWRfcGFja2FnZXMoc2VsZi5kKQotICAgICAgICAgICAgIyBNYWtlIHN1cmUgdXBkYXRlLWFsdGVybmF0aXZlcyBpcyBsYXN0IG9uIHRoZSBjb21tYW5kIGxpbmUsIHNvCi0gICAgICAgICAgICAjIHRoYXQgaXQgaXMgcmVtb3ZlZCBsYXN0LiBUaGlzIG1ha2VzIHN1cmUgdGhhdCBpdHMgZGF0YWJhc2UgaXMKLSAgICAgICAgICAgICMgYXZhaWxhYmxlIHdoaWxlIHVuaW5zdGFsbGluZyBwYWNrYWdlcywgYWxsb3dpbmcgYWx0ZXJuYXRpdmUKLSAgICAgICAgICAgICMgc3ltbGlua3Mgb2YgcGFja2FnZXMgdG8gYmUgdW5pbnN0YWxsZWQgdG8gYmUgbWFuYWdlZCBjb3JyZWN0bHkuCisgICAgICAgICAgICAjIE1ha2Ugc3VyZSB1cGRhdGUtYWx0ZXJuYXRpdmVzIGlzIHJlbW92ZWQgbGFzdC4gVGhpcyBpcworICAgICAgICAgICAgIyBiZWNhdXNlIGl0cyBkYXRhYmFzZSBoYXMgdG8gYXZhaWxhYmxlIHdoaWxlIHVuaW5zdGFsbGluZworICAgICAgICAgICAgIyBvdGhlciBwYWNrYWdlcywgYWxsb3dpbmcgYWx0ZXJuYXRpdmUgc3ltbGlua3Mgb2YgcGFja2FnZXMKKyAgICAgICAgICAgICMgdG8gYmUgdW5pbnN0YWxsZWQgb3IgdG8gYmUgbWFuYWdlZCBjb3JyZWN0bHkgb3RoZXJ3aXNlLgogICAgICAgICAgICAgcHJvdmlkZXIgPSBzZWxmLmQuZ2V0VmFyKCJWSVJUVUFMLVJVTlRJTUVfdXBkYXRlLWFsdGVybmF0aXZlcyIpCiAgICAgICAgICAgICBwa2dzX3RvX3JlbW92ZSA9IHNvcnRlZChbcGtnIGZvciBwa2cgaW4gcGtnc19pbnN0YWxsZWQgaWYgcGtnIGluIHVubmVlZGVkX3BrZ3NdLCBrZXk9bGFtYmRhIHg6IHggPT0gcHJvdmlkZXIpCiAKKyAgICAgICAgICAgICMgdXBkYXRlLWFsdGVybmF0aXZlcyBwcm92aWRlciBpcyByZW1vdmVkIGluIGl0cyBvd24gcmVtb3ZlKCkKKyAgICAgICAgICAgICMgY2FsbCBiZWNhdXNlIGFsbCBwYWNrYWdlIG1hbmFnZXJzIGRvIG5vdCBndWFyYW50ZWUgdGhlIHBhY2thZ2VzCisgICAgICAgICAgICAjIGFyZSByZW1vdmVkIGluIHRoZSBvcmRlciB0aGV5IGdpdmVuIGluIHRoZSBsaXN0ICh3aGljaCBpcworICAgICAgICAgICAgIyBwYXNzZWQgdG8gdGhlIGNvbW1hbmQgbGluZSkuIFRoZSBzb3J0aW5nIGRvbmUgZWFybGllciBpcworICAgICAgICAgICAgIyB1dGlsaXplZCB0byBpbXBsZW1lbnQgdGhlIDItc3RhZ2UgcmVtb3ZhbC4KKyAgICAgICAgICAgIGlmIGxlbihwa2dzX3RvX3JlbW92ZSkgPiAxOgorICAgICAgICAgICAgICAgIHNlbGYucG0ucmVtb3ZlKHBrZ3NfdG9fcmVtb3ZlWzotMV0sIEZhbHNlKQogICAgICAgICAgICAgaWYgbGVuKHBrZ3NfdG9fcmVtb3ZlKSA+IDA6Ci0gICAgICAgICAgICAgICAgc2VsZi5wbS5yZW1vdmUocGtnc190b19yZW1vdmUsIEZhbHNlKQorICAgICAgICAgICAgICAgIHNlbGYucG0ucmVtb3ZlKFtwa2dzX3RvX3JlbW92ZVstMV1dLCBGYWxzZSkKIAogICAgICAgICBpZiBkZWxheWVkX3Bvc3RpbnN0czoKICAgICAgICAgICAgIHNlbGYuX3NhdmVfcG9zdGluc3RzKCkKQEAgLTMwMiwxMCArMzA5LDExIEBACiAgICAgICAgICAgICBiYi5ub3RlKCI+IEV4ZWN1dGluZyAlcyBpbnRlcmNlcHQgLi4uIiAlIHNjcmlwdCkKIAogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KHNjcmlwdF9mdWxsKQorICAgICAgICAgICAgICAgIG91dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KHNjcmlwdF9mdWxsLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCisgICAgICAgICAgICAgICAgaWYgb3V0cHV0OiBiYi5ub3RlKG91dHB1dC5kZWNvZGUoInV0Zi04IikpCiAgICAgICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICBiYi53YXJuKCJUaGUgcG9zdGluc3RhbGwgaW50ZXJjZXB0IGhvb2sgJyVzJyBmYWlsZWQgKGV4aXQgY29kZTogJWQpISBTZWUgbG9nIGZvciBkZXRhaWxzISAoT3V0cHV0OiAlcykiICUKLSAgICAgICAgICAgICAgICAgICAgICAgIChzY3JpcHQsIGUucmV0dXJuY29kZSwgZS5vdXRwdXQpKQorICAgICAgICAgICAgICAgIGJiLndhcm4oIlRoZSBwb3N0aW5zdGFsbCBpbnRlcmNlcHQgaG9vayAnJXMnIGZhaWxlZCwgZGV0YWlscyBpbiBsb2cuZG9fcm9vdGZzIiAlIHNjcmlwdCkKKyAgICAgICAgICAgICAgICBiYi5ub3RlKCJFeGl0IGNvZGUgJWQuIE91dHB1dDpcbiVzIiAlIChlLnJldHVybmNvZGUsIGUub3V0cHV0LmRlY29kZSgidXRmLTgiKSkpCiAKICAgICAgICAgICAgICAgICB3aXRoIG9wZW4oc2NyaXB0X2Z1bGwpIGFzIGludGVyY2VwdDoKICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJlZF9wa2dzID0gTm9uZQpAQCAtNTI0LDcgKzUzMiw4IEBACiAgICAgICAgICAgICBzZWxmLnBtLnNhdmVfcnBtcG9zdGluc3QocGtnKQogCiAgICAgZGVmIF9jbGVhbnVwKHNlbGYpOgotICAgICAgICBwYXNzCisgICAgICAgIHNlbGYucG0uX2ludm9rZV9kbmYoWyJjbGVhbiIsICJhbGwiXSkKKwogCiBjbGFzcyBEcGtnT3BrZ1Jvb3RmcyhSb290ZnMpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkLCBwcm9ncmVzc19yZXBvcnRlcj1Ob25lLCBsb2djYXRjaGVyPU5vbmUpOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3Nkay5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9zZGsucHkKaW5kZXggOWZlMTY4Ny4uYTNhNmMzOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3Nkay5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2Uvc2RrLnB5CkBAIC0xNTIsNiArMTUyLDggQEAKICAgICAgICAgcG0uaW5zdGFsbChwa2dzX2F0dGVtcHQsIFRydWUpCiAKICAgICBkZWYgX3BvcHVsYXRlKHNlbGYpOgorICAgICAgICBleGVjdXRlX3ByZV9wb3N0X3Byb2Nlc3Moc2VsZi5kLCBzZWxmLmQuZ2V0VmFyKCJQT1BVTEFURV9TREtfUFJFX1RBUkdFVF9DT01NQU5EIikpCisKICAgICAgICAgYmIubm90ZSgiSW5zdGFsbGluZyBUQVJHRVQgcGFja2FnZXMiKQogICAgICAgICBzZWxmLl9wb3B1bGF0ZV9zeXNyb290KHNlbGYudGFyZ2V0X3BtLCBzZWxmLnRhcmdldF9tYW5pZmVzdCkKIApAQCAtMjMzLDYgKzIzNSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbRmFsc2UsIFRydWVdW3BrZ190eXBlID09IE1hbmlmZXN0LlBLR19UWVBFX0FUVEVNUFRfT05MWV0pCiAKICAgICBkZWYgX3BvcHVsYXRlKHNlbGYpOgorICAgICAgICBleGVjdXRlX3ByZV9wb3N0X3Byb2Nlc3Moc2VsZi5kLCBzZWxmLmQuZ2V0VmFyKCJQT1BVTEFURV9TREtfUFJFX1RBUkdFVF9DT01NQU5EIikpCisKICAgICAgICAgYmIubm90ZSgiSW5zdGFsbGluZyBUQVJHRVQgcGFja2FnZXMiKQogICAgICAgICBzZWxmLl9wb3B1bGF0ZV9zeXNyb290KHNlbGYudGFyZ2V0X3BtLCBzZWxmLnRhcmdldF9tYW5pZmVzdCkKIApAQCAtMzE1LDYgKzMxOSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbRmFsc2UsIFRydWVdW3BrZ190eXBlID09IE1hbmlmZXN0LlBLR19UWVBFX0FUVEVNUFRfT05MWV0pCiAKICAgICBkZWYgX3BvcHVsYXRlKHNlbGYpOgorICAgICAgICBleGVjdXRlX3ByZV9wb3N0X3Byb2Nlc3Moc2VsZi5kLCBzZWxmLmQuZ2V0VmFyKCJQT1BVTEFURV9TREtfUFJFX1RBUkdFVF9DT01NQU5EIikpCisKICAgICAgICAgYmIubm90ZSgiSW5zdGFsbGluZyBUQVJHRVQgcGFja2FnZXMiKQogICAgICAgICBzZWxmLl9wb3B1bGF0ZV9zeXNyb290KHNlbGYudGFyZ2V0X3BtLCBzZWxmLnRhcmdldF9tYW5pZmVzdCkKIApAQCAtMzc5LDUgKzM4NSwyNCBAQAogICAgIG9zLmVudmlyb24uY2xlYXIoKQogICAgIG9zLmVudmlyb24udXBkYXRlKGVudl9ia3ApCiAKK2RlZiBnZXRfZXh0cmFfc2RraW5mbyhzc3RhdGVfZGlyKToKKyAgICAiIiIKKyAgICBUaGlzIGZ1bmN0aW9uIGlzIGdvaW5nIHRvIGJlIHVzZWQgZm9yIGdlbmVyYXRpbmcgdGhlIHRhcmdldCBhbmQgaG9zdCBtYW5pZmVzdCBmaWxlcyBwYWNrYWdlcyBvZiBlU0RLLgorICAgICIiIgorICAgIGltcG9ydCBtYXRoCisgICAgCisgICAgZXh0cmFfaW5mbyA9IHt9CisgICAgZXh0cmFfaW5mb1sndGFza3NpemVzJ10gPSB7fQorICAgIGV4dHJhX2luZm9bJ2ZpbGVzaXplcyddID0ge30KKyAgICBmb3Igcm9vdCwgXywgZmlsZXMgaW4gb3Mud2Fsayhzc3RhdGVfZGlyKToKKyAgICAgICAgZm9yIGZuIGluIGZpbGVzOgorICAgICAgICAgICAgaWYgZm4uZW5kc3dpdGgoJy50Z3onKToKKyAgICAgICAgICAgICAgICBmc2l6ZSA9IGludChtYXRoLmNlaWwoZmxvYXQob3MucGF0aC5nZXRzaXplKG9zLnBhdGguam9pbihyb290LCBmbikpKSAvIDEwMjQpKQorICAgICAgICAgICAgICAgIHRhc2sgPSBmbi5yc3BsaXQoJzonLDEpWzFdLnNwbGl0KCdfJywxKVsxXS5zcGxpdCgnLCcpWzBdCisgICAgICAgICAgICAgICAgb3JpZ3RvdGFsID0gZXh0cmFfaW5mb1sndGFza3NpemVzJ10uZ2V0KHRhc2ssIDApCisgICAgICAgICAgICAgICAgZXh0cmFfaW5mb1sndGFza3NpemVzJ11bdGFza10gPSBvcmlndG90YWwgKyBmc2l6ZQorICAgICAgICAgICAgICAgIGV4dHJhX2luZm9bJ2ZpbGVzaXplcyddW2ZuXSA9IGZzaXplCisgICAgcmV0dXJuIGV4dHJhX2luZm8KKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICBwYXNzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2Uvc3N0YXRlc2lnLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3NzdGF0ZXNpZy5weQppbmRleCBiOGRkNGM4Li4zYTg3NzhlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2Uvc3N0YXRlc2lnLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS9zc3RhdGVzaWcucHkKQEAgLTI5LDcgKzI5LDcgQEAKICAgICAgICAgcmV0dXJuIFRydWUKIAogICAgICMgUXVpbHQgKHBhdGNoIGFwcGxpY2F0aW9uKSBjaGFuZ2luZyBpc24ndCBsaWtlbHkgdG8gYWZmZWN0IGFueXRoaW5nCi0gICAgZXhjbHVkZWxpc3QgPSBbJ3F1aWx0LW5hdGl2ZScsICdzdWJ2ZXJzaW9uLW5hdGl2ZScsICdnaXQtbmF0aXZlJ10KKyAgICBleGNsdWRlbGlzdCA9IFsncXVpbHQtbmF0aXZlJywgJ3N1YnZlcnNpb24tbmF0aXZlJywgJ2dpdC1uYXRpdmUnLCAnY2NhY2hlLW5hdGl2ZSddCiAgICAgaWYgZGVwbmFtZSBpbiBleGNsdWRlbGlzdCBhbmQgcmVjaXBlbmFtZSAhPSBkZXBuYW1lOgogICAgICAgICByZXR1cm4gRmFsc2UKIApAQCAtMzIwLDcgKzMyMCw3IEBACiAKICAgICBpZiBub3QgdGFza2hhc2hsaXN0IG9yIChsZW4oZmlsZWRhdGVzKSA8IDIgYW5kIG5vdCBmb3VuZGFsbCk6CiAgICAgICAgICMgVGhhdCBkaWRuJ3Qgd29yaywgbG9vayBpbiBzc3RhdGUtY2FjaGUKLSAgICAgICAgaGFzaGVzID0gdGFza2hhc2hsaXN0IG9yIFsnKiddCisgICAgICAgIGhhc2hlcyA9IHRhc2toYXNobGlzdCBvciBbJz8nICogMzJdCiAgICAgICAgIGxvY2FsZGF0YSA9IGJiLmRhdGEuY3JlYXRlQ29weShkKQogICAgICAgICBmb3IgaGFzaHZhbCBpbiBoYXNoZXM6CiAgICAgICAgICAgICBsb2NhbGRhdGEuc2V0VmFyKCdQQUNLQUdFX0FSQ0gnLCAnKicpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvdGVybWluYWwucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvdGVybWluYWwucHkKaW5kZXggMmYxOGVjMC4uOTRhZmUzOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3Rlcm1pbmFsLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS90ZXJtaW5hbC5weQpAQCAtMjkyLDYgKzI5Miw4IEBACiAgICAgICAgICAgICB2ZXJudW0gPSB2ZXIuc3BsaXQoJyAnKVstMV0KICAgICAgICAgaWYgdmVyLnN0YXJ0c3dpdGgoJ0dOT01FIFRlcm1pbmFsJyk6CiAgICAgICAgICAgICB2ZXJudW0gPSB2ZXIuc3BsaXQoJyAnKVstMV0KKyAgICAgICAgaWYgdmVyLnN0YXJ0c3dpdGgoJ01BVEUgVGVybWluYWwnKToKKyAgICAgICAgICAgIHZlcm51bSA9IHZlci5zcGxpdCgnICcpWy0xXQogICAgICAgICBpZiB2ZXIuc3RhcnRzd2l0aCgndG11eCcpOgogICAgICAgICAgICAgdmVybnVtID0gdmVyLnNwbGl0KClbLTFdCiAgICAgcmV0dXJuIHZlcm51bQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3VzZXJhZGQucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvdXNlcmFkZC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNzlhYzc2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3VzZXJhZGQucHkKQEAgLTAsMCArMSw2OCBAQAoraW1wb3J0IGFyZ3BhcnNlCitpbXBvcnQgcmUKKworY2xhc3MgbXlBcmd1bWVudFBhcnNlcihhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcik6CisgICAgZGVmIF9wcmludF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UsIGZpbGU9Tm9uZSk6CisgICAgICAgIGJiLndhcm4oIiVzIC0gJXM6ICVzIiAlIChkLmdldFZhcignUE4nKSwgcGtnLCBtZXNzYWdlKSkKKworICAgICMgVGhpcyBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkLi4uCisgICAgZGVmIGV4aXQoc2VsZiwgc3RhdHVzPTAsIG1lc3NhZ2U9Tm9uZSk6CisgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlIG9yICgiJXMgLSAlczogdXNlcmFkZC5iYmNsYXNzOiBBcmd1bWVudCBwYXJzaW5nIGV4aXRlZCIgJSAoZC5nZXRWYXIoJ1BOJyksIHBrZykpCisgICAgICAgIGVycm9yKG1lc3NhZ2UpCisKKyAgICBkZWYgZXJyb3Ioc2VsZiwgbWVzc2FnZSk6CisgICAgICAgIHJhaXNlIGJiLmJ1aWxkLkZ1bmNGYWlsZWQobWVzc2FnZSkKKworZGVmIHNwbGl0X2NvbW1hbmRzKHBhcmFtcyk6CisgICAgcGFyYW1zID0gcmUuc3BsaXQoJycnWyBcdF0qO1sgXHRdKig/PSg/OlteJyJdfCdbXiddKid8IlteIl0qIikqJCknJycsIHBhcmFtcy5zdHJpcCgpKQorICAgICMgUmVtb3ZlIGFueSBlbXB0eSBpdGVtcworICAgIHJldHVybiBbeCBmb3IgeCBpbiBwYXJhbXMgaWYgeF0KKworZGVmIHNwbGl0X2FyZ3MocGFyYW1zKToKKyAgICBwYXJhbXMgPSByZS5zcGxpdCgnJydbIFx0XSsoPz0oPzpbXiciXXwnW14nXSonfCJbXiJdKiIpKiQpJycnLCBwYXJhbXMuc3RyaXAoKSkKKyAgICAjIFJlbW92ZSBhbnkgZW1wdHkgaXRlbXMKKyAgICByZXR1cm4gW3ggZm9yIHggaW4gcGFyYW1zIGlmIHhdCisKK2RlZiBidWlsZF91c2VyYWRkX3BhcnNlcigpOgorICAgICMgVGhlIGZvbGxvd2luZyBjb21lcyBmcm9tIC0taGVscCBvbiB1c2VyYWRkIGZyb20gc2hhZG93CisgICAgcGFyc2VyID0gbXlBcmd1bWVudFBhcnNlcihwcm9nPSd1c2VyYWRkJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItYiIsICItLWJhc2UtZGlyIiwgbWV0YXZhcj0iQkFTRV9ESVIiLCBoZWxwPSJiYXNlIGRpcmVjdG9yeSBmb3IgdGhlIGhvbWUgZGlyZWN0b3J5IG9mIHRoZSBuZXcgYWNjb3VudCIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLWMiLCAiLS1jb21tZW50IiwgbWV0YXZhcj0iQ09NTUVOVCIsIGhlbHA9IkdFQ09TIGZpZWxkIG9mIHRoZSBuZXcgYWNjb3VudCIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLWQiLCAiLS1ob21lLWRpciIsIG1ldGF2YXI9IkhPTUVfRElSIiwgaGVscD0iaG9tZSBkaXJlY3Rvcnkgb2YgdGhlIG5ldyBhY2NvdW50IikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItRCIsICItLWRlZmF1bHRzIiwgaGVscD0icHJpbnQgb3IgY2hhbmdlIGRlZmF1bHQgdXNlcmFkZCBjb25maWd1cmF0aW9uIiwgYWN0aW9uPSJzdG9yZV90cnVlIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItZSIsICItLWV4cGlyZWRhdGUiLCBtZXRhdmFyPSJFWFBJUkVfREFURSIsIGhlbHA9ImV4cGlyYXRpb24gZGF0ZSBvZiB0aGUgbmV3IGFjY291bnQiKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1mIiwgIi0taW5hY3RpdmUiLCBtZXRhdmFyPSJJTkFDVElWRSIsIGhlbHA9InBhc3N3b3JkIGluYWN0aXZpdHkgcGVyaW9kIG9mIHRoZSBuZXcgYWNjb3VudCIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLWciLCAiLS1naWQiLCBtZXRhdmFyPSJHUk9VUCIsIGhlbHA9Im5hbWUgb3IgSUQgb2YgdGhlIHByaW1hcnkgZ3JvdXAgb2YgdGhlIG5ldyBhY2NvdW50IikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItRyIsICItLWdyb3VwcyIsIG1ldGF2YXI9IkdST1VQUyIsIGhlbHA9Imxpc3Qgb2Ygc3VwcGxlbWVudGFyeSBncm91cHMgb2YgdGhlIG5ldyBhY2NvdW50IikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItayIsICItLXNrZWwiLCBtZXRhdmFyPSJTS0VMX0RJUiIsIGhlbHA9InVzZSB0aGlzIGFsdGVybmF0aXZlIHNrZWxldG9uIGRpcmVjdG9yeSIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLUsiLCAiLS1rZXkiLCBtZXRhdmFyPSJLRVk9VkFMVUUiLCBoZWxwPSJvdmVycmlkZSAvZXRjL2xvZ2luLmRlZnMgZGVmYXVsdHMiKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1sIiwgIi0tbm8tbG9nLWluaXQiLCBoZWxwPSJkbyBub3QgYWRkIHRoZSB1c2VyIHRvIHRoZSBsYXN0bG9nIGFuZCBmYWlsbG9nIGRhdGFiYXNlcyIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLW0iLCAiLS1jcmVhdGUtaG9tZSIsIGhlbHA9ImNyZWF0ZSB0aGUgdXNlcidzIGhvbWUgZGlyZWN0b3J5IiwgYWN0aW9uPSJzdG9yZV9jb25zdCIsIGNvbnN0PVRydWUpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLU0iLCAiLS1uby1jcmVhdGUtaG9tZSIsIGRlc3Q9ImNyZWF0ZV9ob21lIiwgaGVscD0iZG8gbm90IGNyZWF0ZSB0aGUgdXNlcidzIGhvbWUgZGlyZWN0b3J5IiwgYWN0aW9uPSJzdG9yZV9jb25zdCIsIGNvbnN0PUZhbHNlKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1OIiwgIi0tbm8tdXNlci1ncm91cCIsIGRlc3Q9InVzZXJfZ3JvdXAiLCBoZWxwPSJkbyBub3QgY3JlYXRlIGEgZ3JvdXAgd2l0aCB0aGUgc2FtZSBuYW1lIGFzIHRoZSB1c2VyIiwgYWN0aW9uPSJzdG9yZV9jb25zdCIsIGNvbnN0PUZhbHNlKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1vIiwgIi0tbm9uLXVuaXF1ZSIsIGhlbHA9ImFsbG93IHRvIGNyZWF0ZSB1c2VycyB3aXRoIGR1cGxpY2F0ZSAobm9uLXVuaXF1ZSBVSUQpIiwgYWN0aW9uPSJzdG9yZV90cnVlIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItcCIsICItLXBhc3N3b3JkIiwgbWV0YXZhcj0iUEFTU1dPUkQiLCBoZWxwPSJlbmNyeXB0ZWQgcGFzc3dvcmQgb2YgdGhlIG5ldyBhY2NvdW50IikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItUCIsICItLWNsZWFyLXBhc3N3b3JkIiwgbWV0YXZhcj0iQ0xFQVJfUEFTU1dPUkQiLCBoZWxwPSJ1c2UgdGhpcyBjbGVhciBwYXNzd29yZCBmb3IgdGhlIG5ldyBhY2NvdW50IikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItUiIsICItLXJvb3QiLCBtZXRhdmFyPSJDSFJPT1RfRElSIiwgaGVscD0iZGlyZWN0b3J5IHRvIGNocm9vdCBpbnRvIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItciIsICItLXN5c3RlbSIsIGhlbHA9ImNyZWF0ZSBhIHN5c3RlbSBhY2NvdW50IiwgYWN0aW9uPSJzdG9yZV90cnVlIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItcyIsICItLXNoZWxsIiwgbWV0YXZhcj0iU0hFTEwiLCBoZWxwPSJsb2dpbiBzaGVsbCBvZiB0aGUgbmV3IGFjY291bnQiKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi11IiwgIi0tdWlkIiwgbWV0YXZhcj0iVUlEIiwgaGVscD0idXNlciBJRCBvZiB0aGUgbmV3IGFjY291bnQiKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1VIiwgIi0tdXNlci1ncm91cCIsIGhlbHA9ImNyZWF0ZSBhIGdyb3VwIHdpdGggdGhlIHNhbWUgbmFtZSBhcyB0aGUgdXNlciIsIGFjdGlvbj0ic3RvcmVfY29uc3QiLCBjb25zdD1UcnVlKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIkxPR0lOIiwgaGVscD0iTG9naW4gbmFtZSBvZiB0aGUgbmV3IHVzZXIiKQorCisgICAgcmV0dXJuIHBhcnNlcgorCitkZWYgYnVpbGRfZ3JvdXBhZGRfcGFyc2VyKCk6CisgICAgIyBUaGUgZm9sbG93aW5nIGNvbWVzIGZyb20gLS1oZWxwIG9uIGdyb3VwYWRkIGZyb20gc2hhZG93CisgICAgcGFyc2VyID0gbXlBcmd1bWVudFBhcnNlcihwcm9nPSdncm91cGFkZCcpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLWYiLCAiLS1mb3JjZSIsIGhlbHA9ImV4aXQgc3VjY2Vzc2Z1bGx5IGlmIHRoZSBncm91cCBhbHJlYWR5IGV4aXN0cywgYW5kIGNhbmNlbCAtZyBpZiB0aGUgR0lEIGlzIGFscmVhZHkgdXNlZCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLWciLCAiLS1naWQiLCBtZXRhdmFyPSJHSUQiLCBoZWxwPSJ1c2UgR0lEIGZvciB0aGUgbmV3IGdyb3VwIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItSyIsICItLWtleSIsIG1ldGF2YXI9IktFWT1WQUxVRSIsIGhlbHA9Im92ZXJyaWRlIC9ldGMvbG9naW4uZGVmcyBkZWZhdWx0cyIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLW8iLCAiLS1ub24tdW5pcXVlIiwgaGVscD0iYWxsb3cgdG8gY3JlYXRlIGdyb3VwcyB3aXRoIGR1cGxpY2F0ZSAobm9uLXVuaXF1ZSkgR0lEIiwgYWN0aW9uPSJzdG9yZV90cnVlIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItcCIsICItLXBhc3N3b3JkIiwgbWV0YXZhcj0iUEFTU1dPUkQiLCBoZWxwPSJ1c2UgdGhpcyBlbmNyeXB0ZWQgcGFzc3dvcmQgZm9yIHRoZSBuZXcgZ3JvdXAiKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi1QIiwgIi0tY2xlYXItcGFzc3dvcmQiLCBtZXRhdmFyPSJDTEVBUl9QQVNTV09SRCIsIGhlbHA9InVzZSB0aGlzIGNsZWFyIHBhc3N3b3JkIGZvciB0aGUgbmV3IGdyb3VwIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItUiIsICItLXJvb3QiLCBtZXRhdmFyPSJDSFJPT1RfRElSIiwgaGVscD0iZGlyZWN0b3J5IHRvIGNocm9vdCBpbnRvIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItciIsICItLXN5c3RlbSIsIGhlbHA9ImNyZWF0ZSBhIHN5c3RlbSBhY2NvdW50IiwgYWN0aW9uPSJzdG9yZV90cnVlIikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCJHUk9VUCIsIGhlbHA9Ikdyb3VwIG5hbWUgb2YgdGhlIG5ldyBncm91cCIpCisKKyAgICByZXR1cm4gcGFyc2VyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvdXRpbHMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2UvdXRpbHMucHkKaW5kZXggMzMwYTVmZi4uNjQzYWI3OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lL3V0aWxzLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZS91dGlscy5weQpAQCAtMTI2LDYgKzEyNiw0NiBAQAogICAgIGlmIGFkZGZlYXR1cmVzOgogICAgICAgICBkLmFwcGVuZFZhcih2YXIsICIgIiArICIgIi5qb2luKGFkZGZlYXR1cmVzKSkKIAorZGVmIGFsbF9kaXN0cm9fZmVhdHVyZXMoZCwgZmVhdHVyZXMsIHRydWV2YWx1ZT0iMSIsIGZhbHNldmFsdWU9IiIpOgorICAgICIiIgorICAgIFJldHVybnMgdHJ1ZXZhbHVlIGlmICphbGwqIGdpdmVuIGZlYXR1cmVzIGFyZSBzZXQgaW4gRElTVFJPX0ZFQVRVUkVTLAorICAgIGVsc2UgZmFsc2V2YWx1ZS4gVGhlIGZlYXR1cmVzIGNhbiBiZSBnaXZlbiBhcyBzaW5nbGUgc3RyaW5nIG9yIGFueXRoaW5nCisgICAgdGhhdCBjYW4gYmUgdHVybmVkIGludG8gYSBzZXQuCisKKyAgICBUaGlzIGlzIGEgc2hvcnRlciwgbW9yZSBmbGV4aWJsZSB2ZXJzaW9uIG9mCisgICAgYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsIGZlYXR1cmVzLCB0cnVldmFsdWUsIGZhbHNldmFsdWUsIGQpLgorCisgICAgV2l0aG91dCBleHBsaWNpdCB0cnVlL2ZhbHNlIHZhbHVlcyBpdCBjYW4gYmUgdXNlZCBkaXJlY3RseSB3aGVyZQorICAgIFB5dGhvbiBleHBlY3RzIGEgYm9vbGVhbjoKKyAgICAgICBpZiBvZS51dGlscy5hbGxfZGlzdHJvX2ZlYXR1cmVzKGQsICJmb28gYmFyIik6CisgICAgICAgICAgIGJiLmZhdGFsKCJmb28gYW5kIGJhciBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlIERJU1RST19GRUFUVVJFUyIpCisKKyAgICBXaXRoIGp1c3QgYSB0cnVldmFsdWUsIGl0IGNhbiBiZSB1c2VkIHRvIGluY2x1ZGUgZmlsZXMgdGhhdCBhcmUgbWVhbnQgdG8gYmUKKyAgICB1c2VkIG9ubHkgd2hlbiByZXF1ZXN0ZWQgdmlhIERJU1RST19GRUFUVVJFUzoKKyAgICAgICByZXF1aXJlICR7QCBvZS51dGlscy5hbGxfZGlzdHJvX2ZlYXR1cmVzKGQsICJmb28gYmFyIiwgImZvby1hbmQtYmFyLmluYyIpCisgICAgIiIiCisgICAgcmV0dXJuIGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCBmZWF0dXJlcywgdHJ1ZXZhbHVlLCBmYWxzZXZhbHVlLCBkKQorCitkZWYgYW55X2Rpc3Ryb19mZWF0dXJlcyhkLCBmZWF0dXJlcywgdHJ1ZXZhbHVlPSIxIiwgZmFsc2V2YWx1ZT0iIik6CisgICAgIiIiCisgICAgUmV0dXJucyB0cnVldmFsdWUgaWYgYXQgbGVhc3QgKm9uZSogb2YgdGhlIGdpdmVuIGZlYXR1cmVzIGlzIHNldCBpbiBESVNUUk9fRkVBVFVSRVMsCisgICAgZWxzZSBmYWxzZXZhbHVlLiBUaGUgZmVhdHVyZXMgY2FuIGJlIGdpdmVuIGFzIHNpbmdsZSBzdHJpbmcgb3IgYW55dGhpbmcKKyAgICB0aGF0IGNhbiBiZSB0dXJuZWQgaW50byBhIHNldC4KKworICAgIFRoaXMgaXMgYSBzaG9ydGVyLCBtb3JlIGZsZXhpYmxlIHZlcnNpb24gb2YKKyAgICBiYi51dGlscy5jb250YWluc19hbnkoIkRJU1RST19GRUFUVVJFUyIsIGZlYXR1cmVzLCB0cnVldmFsdWUsIGZhbHNldmFsdWUsIGQpLgorCisgICAgV2l0aG91dCBleHBsaWNpdCB0cnVlL2ZhbHNlIHZhbHVlcyBpdCBjYW4gYmUgdXNlZCBkaXJlY3RseSB3aGVyZQorICAgIFB5dGhvbiBleHBlY3RzIGEgYm9vbGVhbjoKKyAgICAgICBpZiBub3Qgb2UudXRpbHMuYW55X2Rpc3Ryb19mZWF0dXJlcyhkLCAiZm9vIGJhciIpOgorICAgICAgICAgICBiYi5mYXRhbCgiZm9vLCBiYXIgb3IgYm90aCBtdXN0IGJlIHNldCBpbiBESVNUUk9fRkVBVFVSRVMiKQorCisgICAgV2l0aCBqdXN0IGEgdHJ1ZXZhbHVlLCBpdCBjYW4gYmUgdXNlZCB0byBpbmNsdWRlIGZpbGVzIHRoYXQgYXJlIG1lYW50IHRvIGJlCisgICAgdXNlZCBvbmx5IHdoZW4gcmVxdWVzdGVkIHZpYSBESVNUUk9fRkVBVFVSRVM6CisgICAgICAgcmVxdWlyZSAke0Agb2UudXRpbHMuYW55X2Rpc3Ryb19mZWF0dXJlcyhkLCAiZm9vIGJhciIsICJmb28tb3ItYmFyLmluYyIpCisKKyAgICAiIiIKKyAgICByZXR1cm4gYmIudXRpbHMuY29udGFpbnNfYW55KCJESVNUUk9fRkVBVFVSRVMiLCBmZWF0dXJlcywgdHJ1ZXZhbHVlLCBmYWxzZXZhbHVlLCBkKQogCiBkZWYgcGFja2FnZXNfZmlsdGVyX291dF9zeXN0ZW0oZCk6CiAgICAgIiIiCkBAIC0xODQsMjUgKzIyNCwzMCBAQAogICAgIGRlZiBpbml0X3dvcmtlcigpOgogICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdJTlQsIHNpZ25hbC5TSUdfSUdOKQogCisgICAgZmFpbHMgPSBbXQorCisgICAgZGVmIGZhaWx1cmVzKHJlcyk6CisgICAgICAgIGZhaWxzLmFwcGVuZChyZXMpCisKICAgICBucHJvYyA9IG1pbihtdWx0aXByb2Nlc3NpbmcuY3B1X2NvdW50KCksIGxlbihjb21tYW5kcykpCiAgICAgcG9vbCA9IGJiLnV0aWxzLm11bHRpcHJvY2Vzc2luZ3Bvb2wobnByb2MsIGluaXRfd29ya2VyKQotICAgIGltYXAgPSBwb29sLmltYXAoZnVuY3Rpb24sIGNvbW1hbmRzKQogCiAgICAgdHJ5OgotICAgICAgICByZXMgPSBsaXN0KGltYXApCisgICAgICAgIG1hcHJlc3VsdCA9IHBvb2wubWFwX2FzeW5jKGZ1bmN0aW9uLCBjb21tYW5kcywgZXJyb3JfY2FsbGJhY2s9ZmFpbHVyZXMpCisKICAgICAgICAgcG9vbC5jbG9zZSgpCiAgICAgICAgIHBvb2wuam9pbigpCi0gICAgICAgIHJlc3VsdHMgPSBbXQotICAgICAgICBmb3IgcmVzdWx0IGluIHJlczoKLSAgICAgICAgICAgIGlmIHJlc3VsdCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpCi0gICAgICAgIHJldHVybiByZXN1bHRzCi0KKyAgICAgICAgcmVzdWx0cyA9IG1hcHJlc3VsdC5nZXQoKQogICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKICAgICAgICAgcG9vbC50ZXJtaW5hdGUoKQogICAgICAgICBwb29sLmpvaW4oKQogICAgICAgICByYWlzZQogCisgICAgaWYgZmFpbHM6CisgICAgICAgIHJhaXNlIGZhaWxzWzBdCisKKyAgICByZXR1cm4gcmVzdWx0cworCiBkZWYgc3F1YXNoc3BhY2VzKHN0cmluZyk6CiAgICAgaW1wb3J0IHJlCiAgICAgcmV0dXJuIHJlLnN1YigiXHMrIiwgIiAiLCBzdHJpbmcpLnN0cmlwKCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2J1aWxkcGVyZi9iYXNlLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvYnVpbGRwZXJmL2Jhc2UucHkKaW5kZXggNmU2MmIyNy4uN2IyYjRhYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvYnVpbGRwZXJmL2Jhc2UucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvYnVpbGRwZXJmL2Jhc2UucHkKQEAgLTQ4NSw2ICs0ODUsNyBAQAogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgc3luYygpOgogICAgICAgICAiIiJTeW5jIGFuZCBkcm9wIGtlcm5lbCBjYWNoZXMiIiIKKyAgICAgICAgcnVuQ21kMignYml0YmFrZSAtbScsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKICAgICAgICAgbG9nLmRlYnVnKCJTeW5jaW5nIGFuZCBkcm9wcGluZyBrZXJuZWwgY2FjaGVzIiIiKQogICAgICAgICBLZXJuZWxEcm9wQ2FjaGVzLmRyb3AoKQogICAgICAgICBvcy5zeW5jKCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2J1aWxkcGVyZi90ZXN0X2Jhc2ljLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvYnVpbGRwZXJmL3Rlc3RfYmFzaWMucHkKaW5kZXggYTllNGE1Yi4uYTE5MDg5YSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvYnVpbGRwZXJmL3Rlc3RfYmFzaWMucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvYnVpbGRwZXJmL3Rlc3RfYmFzaWMucHkKQEAgLTEyMSw1ICsxMjEsNyBAQAogICAgICAgICBzZWxmLnN5bmMoKQogICAgICAgICBzZWxmLm1lYXN1cmVfY21kX3Jlc291cmNlcyhbaW5zdGFsbGVyLCAnLXknLCAnLWQnLCBkZXBsb3lfZGlyXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlcGxveScsICdlU0RLIGRlcGxveScpCisgICAgICAgICNtYWtlIHN1cmUgYml0YmFrZSBpcyB1bmxvYWRlZAorICAgICAgICBzZWxmLnN5bmMoKQogICAgICAgICBzZWxmLm1lYXN1cmVfZGlza191c2FnZShkZXBsb3lfZGlyLCAnZGVwbG95X2RpcicsICdkZXBsb3kgZGlyJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwYXJlbnRfc2l6ZT1UcnVlKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29udHJvbGxlcnMvbWFzdGVyaW1hZ2UucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb250cm9sbGVycy9tYXN0ZXJpbWFnZS5weQppbmRleCAwNzQxOGZjLi5hMjkxMmZjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb250cm9sbGVycy9tYXN0ZXJpbWFnZS5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb250cm9sbGVycy9tYXN0ZXJpbWFnZS5weQpAQCAtMTA4LDcgKzEwOCw3IEBACiAgICAgICAgICAgICB0aW1lLnNsZWVwKDEwKQogICAgICAgICAgICAgc2VsZi5wb3dlcl9jdGwoImN5Y2xlIikKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gY29ubi5ydW4oInJlYm9vdCIpCisgICAgICAgICAgICBzdGF0dXMsIG91dHB1dCA9IGNvbm4ucnVuKCJzeW5jOyB7IHNsZWVwIDE7IHJlYm9vdDsgfSA+IC9kZXYvbnVsbCAmIikKICAgICAgICAgICAgIGlmIHN0YXR1cyAhPSAwOgogICAgICAgICAgICAgICAgIGJiLmVycm9yKCJGYWlsZWQgcmVib290aW5nIHRhcmdldCBhbmQgbm8gcG93ZXIgY29udHJvbCBjb21tYW5kIGRlZmluZWQuIFlvdSBuZWVkIHRvIG1hbnVhbGx5IHJlc2V0IHRoZSBkZXZpY2UuXG4lcyIgJSBvdXRwdXQpCiAKQEAgLTE0Myw3ICsxNDMsNyBAQAogICAgIGRlZiBfZGVwbG95KHNlbGYpOgogICAgICAgICBwYXNzCiAKLSAgICBkZWYgc3RhcnQoc2VsZiwgcGFyYW1zPU5vbmUpOgorICAgIGRlZiBzdGFydChzZWxmLCBleHRyYV9ib290cGFyYW1zPU5vbmUpOgogICAgICAgICBiYi5wbGFpbigiJXMgLSBib290IHRlc3QgaW1hZ2Ugb24gdGFyZ2V0IiAlIHNlbGYucG4pCiAgICAgICAgIHNlbGYuX3N0YXJ0KCkKICAgICAgICAgIyBzZXQgdGhlIHNzaCBvYmplY3QgZm9yIHRoZSB0YXJnZXQvdGVzdCBpbWFnZQpAQCAtMTU2LDcgKzE1Niw3IEBACiAKICAgICBkZWYgc3RvcChzZWxmKToKICAgICAgICAgYmIucGxhaW4oIiVzIC0gcmVib290L3Bvd2VyY3ljbGUgdGFyZ2V0IiAlIHNlbGYucG4pCi0gICAgICAgIHNlbGYucG93ZXJfY3ljbGUoc2VsZi5jb25uZWN0aW9uKQorICAgICAgICBzZWxmLnBvd2VyX2N5Y2xlKHNlbGYubWFzdGVyKQogCiAKIGNsYXNzIFN5c3RlbWRib290VGFyZ2V0KE1hc3RlckltYWdlSGFyZHdhcmVUYXJnZXQpOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS9SRUFETUUgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL1JFQURNRQppbmRleCAwYzg1OWZkLi5kNGZjZGE0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL1JFQURNRQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL1JFQURNRQpAQCAtMSwzOCArMSw3NiBAQAotPSBPRVFBIEZyYW1ld29yayA9Cis9IE9FUUEgKHYyKSBGcmFtZXdvcmsgPQogCiA9PSBJbnRyb2R1Y3Rpb24gPT0KIAotVGhpcyBpcyB0aGUgbmV3IE9FUUEgZnJhbWV3b3JrIHRoZSBiYXNlIGNsYXNlcyBvZiB0aGUgZnJhbWV3b3JrCi1hcmUgaW4gdGhpcyBtb2R1bGUgb2VxYS9jb3JlIHRoZSBzdWJzZXF1ZW50IGNvbXBvbmVudHMgbmVlZHMgdG8KLWV4dGVuZCB0aGlzIGNsYXNzZXMuCitUaGlzIGlzIHZlcnNpb24gMiBvZiB0aGUgT0VRQSBmcmFtZXdvcmsuIEJhc2UgY2xhc2VzIGFyZSBsb2NhdGVkIGluIHRoZQorJ29lcWEvY29yZScgZGlyZWN0b3J5IGFuZCBzdWJzZXF1ZW50IGNvbXBvbmVudHMgbXVzdCBleHRlbmQgZnJvbSB0aGVzZS4KIAotQSBuZXcvdW5pcXVlIHJ1bm5lciB3YXMgY3JlYXRlZCBjYWxsZWQgb2UtdGVzdCBhbmQgaXMgdW5kZXIgc2NyaXB0cy8KLW9lLXRlc3QsIHRoaXMgbmV3IHJ1bm5lciBzY2FucyBvdmVyIG9lcWEgbW9kdWxlIHNlYXJjaGluZyBmb3IgdGVzdAotY29tcG9uZW50cyB0aGF0IHN1cHBvcnRzIE9FVGVzdENvbnRleHRFeGVjdXRvciBpbXBsZW1lbnRlZCBpbiBjb250ZXh0Ci1tb2R1bGUgKGkuZS4gb2VxYS9jb3JlL2NvbnRleHQucHkpLgorVGhlIG1haW4gZGVzaWduIGNvbnNpZGVyYXRpb24gd2FzIHRvIGltcGxlbWVudCB0aGUgbmVlZGVkIGZ1bmN0aW9uYWxpdHkgb24KK3RvcCBvZiB0aGUgUHl0aG9uIHVuaXR0ZXN0IGZyYW1ld29yay4gVG8gYWNoaWV2ZSB0aGlzIGdvYWwsIHRoZSBmb2xsb3dpbmcKK21vZHVsZXMgYXJlIHVzZWQ6CiAKLUZvciBleGVjdXRlIGFuIGV4YW1wbGU6CisgICAgKiBvZXFhL2NvcmUvcnVubmVyLnB5OiBQcm92aWRlcyBPRVRlc3RSZXN1bHQgYW5kIE9FVGVzdFJ1bm5lciBiYXNlCisgICAgICBjbGFzc2VzIGV4dGVuZGluZyB0aGUgdW5pdHRlc3QgY2xhc3MuIFRoZXNlIGNsYXNzZXMgc3VwcG9ydCBleHBvcnRpbmcKKyAgICAgIHJlc3VsdHMgdG8gZGlmZmVyZW50IGZvcm1hdHM7IGN1cnJlbnRseSBSQVcgYW5kIFhNTCBzdXBwb3J0IGV4aXN0LgogCi0kIHNvdXJjZSBvZS1pbml0LWJ1aWxkLWVudgotJCBvZS10ZXN0IGNvcmUKKyAgICAqIG9lcWEvY29yZS9sb2FkZXIucHk6IFByb3ZpZGVzIE9FVGVzdExvYWRlciBleHRlbmRpbmcgdGhlIHVuaXR0ZXN0IGNsYXNzLgorICAgICAgSXQgYWxzbyBmZWF0dXJlcyBhIHVuaWZpZWQgaW1wbGVtZW50YXRpb24gb2YgZGVjb3JhdG9yIHN1cHBvcnQgYW5kCisgICAgICBmaWx0ZXJpbmcgdGVzdCBjYXNlcy4KIAotRm9yIGxpc3Qgc3VwcG9ydGVkIGNvbXBvbmVudHM6CisgICAgKiBvZXFhL2NvcmUvY2FzZS5weTogUHJvdmlkZXMgT0VUZXN0Q2FzZSBiYXNlIGNsYXNzIGV4dGVuZGluZworICAgICAgdW5pdHRlc3QuVGVzdENhc2UgYW5kIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgVGVzdCBkYXRhICh0ZCksIFRlc3QgY29udGV4dAorICAgICAgYW5kIExvZ2dlciBmdW5jdGlvbmFsaXR5LgogCi0kIG9lLXRlc3QgLWgKKyAgICAqIG9lcWEvY29yZS9kZWNvcmF0b3I6IFByb3ZpZGVzIE9FVGVzdERlY29yYXRvciwgYSBuZXcgY2xhc3MgdG8gaW1wbGVtZW50CisgICAgICBkZWNvcmF0b3JzIGZvciBUZXN0IGNhc2VzLgogCi09PSBDcmVhdGUgbmV3IFRlc3QgY29tcG9uZW50ID09CisgICAgKiBvZXFhL2NvcmUvY29udGV4dDogUHJvdmlkZXMgT0VUZXN0Q29udGV4dCwgYSBoaWdoLWxldmVsIEFQSSBmb3IKKyAgICAgIGxvYWRUZXN0cyBhbmQgcnVuVGVzdHMgb2YgY2VydGFpbiBUZXN0IGNvbXBvbmVudCBhbmQKKyAgICAgIE9FVGVzdENvbnRleHRFeGVjdXRvciBhIGJhc2UgY2xhc3MgdG8gZW5hYmxlIG9lLXRlc3QgdG8gZGlzY292ZXIvdXNlCisgICAgICB0aGUgVGVzdCBjb21wb25lbnQuCiAKLVVzYWxseSBmb3IgYWRkIGEgbmV3IFRlc3QgY29tcG9uZW50IHRoZSBkZXZlbG9wZXIgbmVlZHMgdG8gZXh0ZW5kCi1PRVRlc3RDb250ZXh0L09FVGVzdENvbnRleHRFeGVjdXRvciBpbiBjb250ZXh0LnB5IGFuZCBPRVRlc3RDYXNlIGluCi1jYXNlLnB5LgorQWxzbywgYSBuZXcgJ29lLXRlc3QnIHJ1bm5lciBpcyBsb2NhdGVkIHVuZGVyICdzY3JpcHRzJywgYWxsb3dpbmcgc2NhbnMgZm9yIGNvbXBvbmVudHMKK3RoYXQgc3VwcG9ydHMgT0VUZXN0Q29udGV4dEV4ZWN1dG9yIChzZWUgYmVsb3cpLgogCi09PSBIb3cgdG8gcnVuIHRoZSB0ZXN0aW5nIG9mIHRoZSBPRVFBIGZyYW1ld29yayA9PQorPT0gVGVybWlub2xvZ3kgPT0KKworICAgICogVGVzdCBjb21wb25lbnQ6IFRoZSBhcmVhIG9mIHRlc3RpbmcgaW4gdGhlIFByb2plY3QsIGZvciBleGFtcGxlOiBydW50aW1lLCBTREssIGVTREssIHNlbGZ0ZXN0LgorCisgICAgKiBUZXN0IGRhdGE6IERhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBUZXN0IGNvbXBvbmVudC4gQ3VycmVudGx5IHdlIHVzZSBiaXRiYWtlIGRhdGFzdG9yZSBhcworICAgICAgYSBUZXN0IGRhdGEgaW5wdXQuCisKKyAgICAqIFRlc3QgY29udGV4dDogQSBjb250ZXh0IG9mIHdoYXQgdGVzdHMgbmVlZHMgdG8gYmUgcnVuIGFuZCBob3cgdG8gZG8gaXQ7IHRoaXMgYWRkaXRpb25hbGx5CisgICAgICBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIFRlc3QgZGF0YSBhbmQgY291bGQgaGF2ZSBjdXN0b20gbWV0aG9kcyBhbmQvb3IgYXR0cnMuCisKKz09IG9lLXRlc3QgPT0KKworVGhlIG5ldyB0b29sLCBvZS10ZXN0LCBoYXMgdGhlIGFiaWxpdHkgdG8gc2NhbiB0aGUgY29kZSBiYXNlIGZvciB0ZXN0IGNvbXBvbmVudHMgYW5kIHByb3ZpZGUKK2EgdW5pZmllZCB3YXkgdG8gcnVuIHRlc3QgY2FzZXMuIEludGVybmFsbHkgaXQgc2NhbnMgZm9sZGVycyBpbnNpZGUgb2VxYSBtb2R1bGUgaW4gb3JkZXIgdG8gZmluZAorc3BlY2lmaWMgY2xhc3NlcyB0aGF0IGltcGxlbWVudCBhIHRlc3QgY29tcG9uZW50LgorCis9PSBVc2FnZSA9PQorCitFeGVjdXRpbmcgdGhlIGV4YW1wbGUgdGVzdCBjb21wb25lbnQKKworICAgICQgc291cmNlIG9lLWluaXQtYnVpbGQtZW52CisgICAgJCBvZS10ZXN0IGNvcmUKKworR2V0dGluZyBoZWxwCisKKyAgICAkIG9lLXRlc3QgLWgKKworPT0gQ3JlYXRpbmcgbmV3IFRlc3QgQ29tcG9uZW50ID09CisKK0FkZGluZyBhIG5ldyB0ZXN0IGNvbXBvbmVudCB0aGUgZGV2ZWxvcGVyIG5lZWRzIHRvIGV4dGVuZCBPRVRlc3RDb250ZXh0L09FVGVzdENvbnRleHRFeGVjdXRvcgorKGZyb20gY29udGV4dC5weSkgYW5kIE9FVGVzdENhc2UgKGZyb20gY2FzZS5weSkKKworPT0gU2VsZnRlc3RpbmcgdGhlIGZyYW1ld29yayA9PQogCiBSdW4gYWxsIHRlc3RzOgogCi0kIFBBVEg9JFBBVEg6Li4vLi4vIHB5dGhvbjMgLW0gdW5pdHRlc3QgZGlzY292ZXIgLXMgdGVzdHMKKyAgICAkIFBBVEg9JFBBVEg6Li4vLi4vIHB5dGhvbjMgLW0gdW5pdHRlc3QgZGlzY292ZXIgLXMgdGVzdHMKIAogUnVuIHNvbWUgdGVzdDoKIAotJCBjZCB0ZXN0cy8KLSQgLi90ZXN0X2RhdGEucHkKKyAgICAkIGNkIHRlc3RzLworICAgICQgLi90ZXN0X2RhdGEucHkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvY2FzZS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvY2FzZS5weQppbmRleCBkMmRiZjIwLi45MTdhMmFhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL2Nhc2UucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS9jYXNlLnB5CkBAIC0yMyw3ICsyMyw3IEBACiAKICAgICAjIHRkX3ZhcnMgaGFzIHRoZSB2YXJpYWJsZXMgbmVlZGVkIGJ5IGEgdGVzdCBjbGFzcwogICAgICMgb3IgdGVzdCBjYXNlIGluc3RhbmNlLCBpZiBzb21lIHZhciBpc24ndCBpbnRvIHRkIGEKLSAgICAjIE9FTWlzc2luZ1ZhcmlhYmxlIGV4Y2VwdGlvbiBpcyByYWlzZWQKKyAgICAjIE9FUUFNaXNzaW5nVmFyaWFibGUgZXhjZXB0aW9uIGlzIHJhaXNlZAogICAgIHRkX3ZhcnMgPSBOb25lCiAKICAgICBAY2xhc3NtZXRob2QKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvY29udGV4dC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvY29udGV4dC5weQppbmRleCA0NDc2NzUwLi5hY2Q1NDc0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL2NvbnRleHQucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS9jb250ZXh0LnB5CkBAIC03LDE1ICs3LDE0IEBACiBpbXBvcnQgdGltZQogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBjb2xsZWN0aW9ucwotaW1wb3J0IHJlCiAKIGZyb20gb2VxYS5jb3JlLmxvYWRlciBpbXBvcnQgT0VUZXN0TG9hZGVyCi1mcm9tIG9lcWEuY29yZS5ydW5uZXIgaW1wb3J0IE9FVGVzdFJ1bm5lciwgT0VTdHJlYW1Mb2dnZXIsIHhtbEVuYWJsZWQKK2Zyb20gb2VxYS5jb3JlLnJ1bm5lciBpbXBvcnQgT0VUZXN0UnVubmVyCitmcm9tIG9lcWEuY29yZS5leGNlcHRpb24gaW1wb3J0IE9FUUFNaXNzaW5nTWFuaWZlc3QsIE9FUUFUZXN0Tm90Rm91bmQKIAogY2xhc3MgT0VUZXN0Q29udGV4dChvYmplY3QpOgogICAgIGxvYWRlckNsYXNzID0gT0VUZXN0TG9hZGVyCiAgICAgcnVubmVyQ2xhc3MgPSBPRVRlc3RSdW5uZXIKLSAgICBzdHJlYW1Mb2dnZXJDbGFzcyA9IE9FU3RyZWFtTG9nZ2VyCiAKICAgICBmaWxlc19kaXIgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZSgKICAgICAgICAgb3MucGF0aC5hYnNwYXRoKF9fZmlsZV9fKSksICIuLi9maWxlcyIpKQpAQCAtMzIsNyArMzEsNyBAQAogCiAgICAgZGVmIF9yZWFkX21vZHVsZXNfZnJvbV9tYW5pZmVzdChzZWxmLCBtYW5pZmVzdCk6CiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhtYW5pZmVzdCk6Ci0gICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgcmFpc2UgT0VRQU1pc3NpbmdNYW5pZmVzdCgiTWFuaWZlc3QgZG9lcyBub3QgZXhpc3Qgb24gJXMiICUgbWFuaWZlc3QpCiAKICAgICAgICAgbW9kdWxlcyA9IFtdCiAgICAgICAgIGZvciBsaW5lIGluIG9wZW4obWFuaWZlc3QpLnJlYWRsaW5lcygpOgpAQCAtNDIsNiArNDEsMTQgQEAKIAogICAgICAgICByZXR1cm4gbW9kdWxlcwogCisgICAgZGVmIHNraXBUZXN0cyhzZWxmLCBza2lwcyk6CisgICAgICAgIGlmIG5vdCBza2lwczoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBmb3IgdGVzdCBpbiBzZWxmLnN1aXRlczoKKyAgICAgICAgICAgIGZvciBza2lwIGluIHNraXBzOgorICAgICAgICAgICAgICAgIGlmIHRlc3QuaWQoKS5zdGFydHN3aXRoKHNraXApOgorICAgICAgICAgICAgICAgICAgICBzZXRhdHRyKHRlc3QsICdzZXRVcCcsIGxhbWJkYTogdGVzdC5za2lwVGVzdCgnU2tpcCBieSB0aGUgY29tbWFuZCBsaW5lIGFyZ3VtZW50ICIlcyInICUgc2tpcCkpCisKICAgICBkZWYgbG9hZFRlc3RzKHNlbGYsIG1vZHVsZV9wYXRocywgbW9kdWxlcz1bXSwgdGVzdHM9W10sCiAgICAgICAgICAgICBtb2R1bGVzX21hbmlmZXN0PSIiLCBtb2R1bGVzX3JlcXVpcmVkPVtdLCBmaWx0ZXJzPXt9KToKICAgICAgICAgaWYgbW9kdWxlc19tYW5pZmVzdDoKQEAgLTUxLDkgKzU4LDExIEBACiAgICAgICAgICAgICAgICAgbW9kdWxlc19yZXF1aXJlZCwgZmlsdGVycykKICAgICAgICAgc2VsZi5zdWl0ZXMgPSBzZWxmLmxvYWRlci5kaXNjb3ZlcigpCiAKLSAgICBkZWYgcnVuVGVzdHMoc2VsZik6Ci0gICAgICAgIHN0cmVhbUxvZ2dlciA9IHNlbGYuc3RyZWFtTG9nZ2VyQ2xhc3Moc2VsZi5sb2dnZXIpCi0gICAgICAgIHNlbGYucnVubmVyID0gc2VsZi5ydW5uZXJDbGFzcyhzZWxmLCBzdHJlYW09c3RyZWFtTG9nZ2VyLCB2ZXJib3NpdHk9MikKKyAgICBkZWYgcnVuVGVzdHMoc2VsZiwgc2tpcHM9W10pOgorICAgICAgICBzZWxmLnJ1bm5lciA9IHNlbGYucnVubmVyQ2xhc3Moc2VsZiwgZGVzY3JpcHRpb25zPUZhbHNlLCB2ZXJib3NpdHk9MikKKworICAgICAgICAjIERpbmFtaWNhbGx5IHNraXAgdGhvc2UgdGVzdHMgc3BlY2lmaWVkIHRob3VnaCBhcmd1bWVudHMKKyAgICAgICAgc2VsZi5za2lwVGVzdHMoc2tpcHMpCiAKICAgICAgICAgc2VsZi5fcnVuX3N0YXJ0X3RpbWUgPSB0aW1lLnRpbWUoKQogICAgICAgICByZXN1bHQgPSBzZWxmLnJ1bm5lci5ydW4oc2VsZi5zdWl0ZXMpCkBAIC02MSw5NCArNzAsMTMgQEAKIAogICAgICAgICByZXR1cm4gcmVzdWx0CiAKLSAgICBkZWYgbG9nU3VtbWFyeShzZWxmLCByZXN1bHQsIGNvbXBvbmVudCwgY29udGV4dF9tc2c9JycpOgotICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJTVU1NQVJZOiIpCi0gICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIiVzICglcykgLSBSYW4gJWQgdGVzdCVzIGluICUuM2ZzIiAlIChjb21wb25lbnQsCi0gICAgICAgICAgICBjb250ZXh0X21zZywgcmVzdWx0LnRlc3RzUnVuLCByZXN1bHQudGVzdHNSdW4gIT0gMSBhbmQgInMiIG9yICIiLAotICAgICAgICAgICAgKHNlbGYuX3J1bl9lbmRfdGltZSAtIHNlbGYuX3J1bl9zdGFydF90aW1lKSkpCi0KLSAgICAgICAgaWYgcmVzdWx0Lndhc1N1Y2Nlc3NmdWwoKToKLSAgICAgICAgICAgIG1zZyA9ICIlcyAtIE9LIC0gQWxsIHJlcXVpcmVkIHRlc3RzIHBhc3NlZCIgJSBjb21wb25lbnQKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG1zZyA9ICIlcyAtIEZBSUwgLSBSZXF1aXJlZCB0ZXN0cyBmYWlsZWQiICUgY29tcG9uZW50Ci0gICAgICAgIHNraXBwZWQgPSBsZW4oc2VsZi5fcmVzdWx0c1snc2tpcHBlZCddKQotICAgICAgICBpZiBza2lwcGVkOiAKLSAgICAgICAgICAgIG1zZyArPSAiIChza2lwcGVkPSVkKSIgJSBza2lwcGVkCi0gICAgICAgIHNlbGYubG9nZ2VyLmluZm8obXNnKQotCi0gICAgZGVmIF9nZXREZXRhaWxzTm90UGFzc2VkKHNlbGYsIGNhc2UsIHR5cGUsIGRlc2MpOgotICAgICAgICBmb3VuZCA9IEZhbHNlCi0KLSAgICAgICAgZm9yIChzY2FzZSwgbXNnKSBpbiBzZWxmLl9yZXN1bHRzW3R5cGVdOgotICAgICAgICAgICAgIyBYWFg6IFdoZW4gWE1MIHJlcG9ydGluZyBpcyBlbmFibGVkIHNjYXNlIGlzCi0gICAgICAgICAgICAjIHhtbHJ1bm5lci5yZXN1bHQuX1Rlc3RJbmZvIGluc3RhbmNlIGluc3RlYWQgb2YKLSAgICAgICAgICAgICMgc3RyaW5nLgotICAgICAgICAgICAgaWYgeG1sRW5hYmxlZDoKLSAgICAgICAgICAgICAgICBpZiBjYXNlLmlkKCkgPT0gc2Nhc2UudGVzdF9pZDoKLSAgICAgICAgICAgICAgICAgICAgZm91bmQgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgc2Nhc2Vfc3RyID0gc2Nhc2UudGVzdF9pZAotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBpZiBjYXNlID09IHNjYXNlOgotICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBzY2FzZV9zdHIgPSBzdHIoc2Nhc2UpCi0KLSAgICAgICAgICAgICMgV2hlbiBmYWlscyBhdCBtb2R1bGUgb3IgY2xhc3MgbGV2ZWwgdGhlIGNsYXNzIG5hbWUgaXMgcGFzc2VkIGFzIHN0cmluZwotICAgICAgICAgICAgIyBzbyBmaWd1cmUgb3V0IHRvIHNlZSBpZiBtYXRjaAotICAgICAgICAgICAgbSA9IHJlLnNlYXJjaCgiXnNldFVwTW9kdWxlIFwoKD9QPG1vZHVsZV9uYW1lPi4qKVwpJCIsIHNjYXNlX3N0cikKLSAgICAgICAgICAgIGlmIG06Ci0gICAgICAgICAgICAgICAgaWYgY2FzZS5fX2NsYXNzX18uX19tb2R1bGVfXyA9PSBtLmdyb3VwKCdtb2R1bGVfbmFtZScpOgotICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICAgICAgbSA9IHJlLnNlYXJjaCgiXnNldFVwQ2xhc3MgXCgoP1A8Y2xhc3NfbmFtZT4uKilcKSQiLCBzY2FzZV9zdHIpCi0gICAgICAgICAgICBpZiBtOgotICAgICAgICAgICAgICAgIGNsYXNzX25hbWUgPSAiJXMuJXMiICUgKGNhc2UuX19jbGFzc19fLl9fbW9kdWxlX18sCi0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlLl9fY2xhc3NfXy5fX25hbWVfXykKLQotICAgICAgICAgICAgICAgIGlmIGNsYXNzX25hbWUgPT0gbS5ncm91cCgnY2xhc3NfbmFtZScpOgotICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICBpZiBmb3VuZDoKLSAgICAgICAgICAgIHJldHVybiAoZm91bmQsIG1zZykKLQotICAgICAgICByZXR1cm4gKGZvdW5kLCBOb25lKQotCi0gICAgZGVmIGxvZ0RldGFpbHMoc2VsZik6Ci0gICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIlJFU1VMVFM6IikKLSAgICAgICAgZm9yIGNhc2VfbmFtZSBpbiBzZWxmLl9yZWdpc3RyeVsnY2FzZXMnXToKLSAgICAgICAgICAgIGNhc2UgPSBzZWxmLl9yZWdpc3RyeVsnY2FzZXMnXVtjYXNlX25hbWVdCi0KLSAgICAgICAgICAgIHJlc3VsdF90eXBlcyA9IFsnZmFpbHVyZXMnLCAnZXJyb3JzJywgJ3NraXBwZWQnLCAnZXhwZWN0ZWRGYWlsdXJlcyddCi0gICAgICAgICAgICByZXN1bHRfZGVzYyA9IFsnRkFJTEVEJywgJ0VSUk9SJywgJ1NLSVBQRUQnLCAnRVhQRUNURURGQUlMJ10KLQotICAgICAgICAgICAgZmFpbCA9IEZhbHNlCi0gICAgICAgICAgICBkZXNjID0gTm9uZQotICAgICAgICAgICAgZm9yIGlkeCwgbmFtZSBpbiBlbnVtZXJhdGUocmVzdWx0X3R5cGVzKToKLSAgICAgICAgICAgICAgICAoZmFpbCwgbXNnKSA9IHNlbGYuX2dldERldGFpbHNOb3RQYXNzZWQoY2FzZSwgcmVzdWx0X3R5cGVzW2lkeF0sCi0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRfZGVzY1tpZHhdKQotICAgICAgICAgICAgICAgIGlmIGZhaWw6Ci0gICAgICAgICAgICAgICAgICAgIGRlc2MgPSByZXN1bHRfZGVzY1tpZHhdCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0KLSAgICAgICAgICAgIG9laWQgPSAtMQotICAgICAgICAgICAgZm9yIGQgaW4gY2FzZS5kZWNvcmF0b3JzOgotICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIoZCwgJ29laWQnKToKLSAgICAgICAgICAgICAgICAgICAgb2VpZCA9IGQub2VpZAotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiBmYWlsOgotICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIlJFU1VMVFMgLSAlcyAtIFRlc3RjYXNlICVzOiAlcyIgJSAoY2FzZS5pZCgpLAotICAgICAgICAgICAgICAgICAgICBvZWlkLCBkZXNjKSkKLSAgICAgICAgICAgICAgICBpZiBtc2c6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8obXNnKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJSRVNVTFRTIC0gJXMgLSBUZXN0Y2FzZSAlczogJXMiICUgKGNhc2UuaWQoKSwKLSAgICAgICAgICAgICAgICAgICAgb2VpZCwgJ1BBU1NFRCcpKQorICAgIGRlZiBsaXN0VGVzdHMoc2VsZiwgZGlzcGxheV90eXBlKToKKyAgICAgICAgc2VsZi5ydW5uZXIgPSBzZWxmLnJ1bm5lckNsYXNzKHNlbGYsIHZlcmJvc2l0eT0yKQorICAgICAgICByZXR1cm4gc2VsZi5ydW5uZXIubGlzdF90ZXN0cyhzZWxmLnN1aXRlcywgZGlzcGxheV90eXBlKQogCiBjbGFzcyBPRVRlc3RDb250ZXh0RXhlY3V0b3Iob2JqZWN0KToKICAgICBfY29udGV4dF9jbGFzcyA9IE9FVGVzdENvbnRleHQKKyAgICBfc2NyaXB0X2V4ZWN1dG9yID0gJ29lLXRlc3QnCiAKICAgICBuYW1lID0gJ2NvcmUnCiAgICAgaGVscCA9ICdjb3JlIHRlc3QgY29tcG9uZW50IGV4YW1wbGUnCkBAIC0xNjgsOSArOTYsMTQgQEAKICAgICAgICAgc2VsZi5wYXJzZXIuYWRkX2FyZ3VtZW50KCctLW91dHB1dC1sb2cnLCBhY3Rpb249J3N0b3JlJywKICAgICAgICAgICAgICAgICBkZWZhdWx0PXNlbGYuZGVmYXVsdF9vdXRwdXRfbG9nLAogICAgICAgICAgICAgICAgIGhlbHA9InJlc3VsdHMgb3V0cHV0IGxvZywgZGVmYXVsdDogJXMiICUgc2VsZi5kZWZhdWx0X291dHB1dF9sb2cpCi0gICAgICAgIHNlbGYucGFyc2VyLmFkZF9hcmd1bWVudCgnLS1ydW4tdGVzdHMnLCBhY3Rpb249J3N0b3JlJywKKworICAgICAgICBncm91cCA9IHNlbGYucGFyc2VyLmFkZF9tdXR1YWxseV9leGNsdXNpdmVfZ3JvdXAoKQorICAgICAgICBncm91cC5hZGRfYXJndW1lbnQoJy0tcnVuLXRlc3RzJywgYWN0aW9uPSdzdG9yZScsIG5hcmdzPScrJywKICAgICAgICAgICAgICAgICBkZWZhdWx0PXNlbGYuZGVmYXVsdF90ZXN0cywKLSAgICAgICAgICAgICAgICBoZWxwPSJ0ZXN0cyB0byBydW4gaW4gPG1vZHVsZT5bLjxjbGFzcz5bLjxuYW1lPl1dIGZvcm1hdC4gSnVzdCB3b3JrcyBmb3IgbW9kdWxlcyBub3ciKQorICAgICAgICAgICAgICAgIGhlbHA9InRlc3RzIHRvIHJ1biBpbiA8bW9kdWxlPlsuPGNsYXNzPlsuPG5hbWU+XV0iKQorICAgICAgICBncm91cC5hZGRfYXJndW1lbnQoJy0tbGlzdC10ZXN0cycsIGFjdGlvbj0nc3RvcmUnLAorICAgICAgICAgICAgICAgIGNob2ljZXM9KCdtb2R1bGUnLCAnY2xhc3MnLCAnbmFtZScpLAorICAgICAgICAgICAgICAgIGhlbHA9Imxpc3RzIGF2YWlsYWJsZSB0ZXN0cyIpCiAKICAgICAgICAgaWYgc2VsZi5kZWZhdWx0X3Rlc3RfZGF0YToKICAgICAgICAgICAgIHNlbGYucGFyc2VyLmFkZF9hcmd1bWVudCgnLS10ZXN0LWRhdGEtZmlsZScsIGFjdGlvbj0nc3RvcmUnLApAQCAtMjA2LDcgKzEzOSw4IEBACiAgICAgICAgIHNlbGYudGNfa3dhcmdzID0ge30KICAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ2luaXQnXSA9IHt9CiAgICAgICAgIHNlbGYudGNfa3dhcmdzWydsb2FkJ10gPSB7fQotICAgICAgICBzZWxmLnRjX2t3YXJnc1sncnVuJ10gPSB7fQorICAgICAgICBzZWxmLnRjX2t3YXJnc1snbGlzdCddID0ge30KKyAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ3J1biddICA9IHt9CiAKICAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ2luaXQnXVsnbG9nZ2VyJ10gPSBzZWxmLl9zZXR1cF9sb2dnZXIobG9nZ2VyLCBhcmdzKQogICAgICAgICBpZiBhcmdzLnRlc3RfZGF0YV9maWxlOgpAQCAtMjE1LDIyICsxNDksMzYgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYudGNfa3dhcmdzWydpbml0J11bJ3RkJ10gPSB7fQogCi0KICAgICAgICAgaWYgYXJncy5ydW5fdGVzdHM6Ci0gICAgICAgICAgICBzZWxmLnRjX2t3YXJnc1snbG9hZCddWydtb2R1bGVzJ10gPSBhcmdzLnJ1bl90ZXN0cy5zcGxpdCgpCisgICAgICAgICAgICBzZWxmLnRjX2t3YXJnc1snbG9hZCddWydtb2R1bGVzJ10gPSBhcmdzLnJ1bl90ZXN0cworICAgICAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ2xvYWQnXVsnbW9kdWxlc19yZXF1aXJlZCddID0gYXJncy5ydW5fdGVzdHMKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYudGNfa3dhcmdzWydsb2FkJ11bJ21vZHVsZXMnXSA9IE5vbmUKKyAgICAgICAgICAgIHNlbGYudGNfa3dhcmdzWydsb2FkJ11bJ21vZHVsZXMnXSA9IFtdCisKKyAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ3J1biddWydza2lwcyddID0gW10KIAogICAgICAgICBzZWxmLm1vZHVsZV9wYXRocyA9IGFyZ3MuQ0FTRVNfUEFUSFMKIAorICAgIGRlZiBfcHJlX3J1bihzZWxmKToKKyAgICAgICAgcGFzcworCiAgICAgZGVmIHJ1bihzZWxmLCBsb2dnZXIsIGFyZ3MpOgogICAgICAgICBzZWxmLl9wcm9jZXNzX2FyZ3MobG9nZ2VyLCBhcmdzKQogCiAgICAgICAgIHNlbGYudGMgPSBzZWxmLl9jb250ZXh0X2NsYXNzKCoqc2VsZi50Y19rd2FyZ3NbJ2luaXQnXSkKLSAgICAgICAgc2VsZi50Yy5sb2FkVGVzdHMoc2VsZi5tb2R1bGVfcGF0aHMsICoqc2VsZi50Y19rd2FyZ3NbJ2xvYWQnXSkKLSAgICAgICAgcmMgPSBzZWxmLnRjLnJ1blRlc3RzKCoqc2VsZi50Y19rd2FyZ3NbJ3J1biddKQotICAgICAgICBzZWxmLnRjLmxvZ1N1bW1hcnkocmMsIHNlbGYubmFtZSkKLSAgICAgICAgc2VsZi50Yy5sb2dEZXRhaWxzKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi50Yy5sb2FkVGVzdHMoc2VsZi5tb2R1bGVfcGF0aHMsICoqc2VsZi50Y19rd2FyZ3NbJ2xvYWQnXSkKKyAgICAgICAgZXhjZXB0IE9FUUFUZXN0Tm90Rm91bmQgYXMgZXg6CisgICAgICAgICAgICBsb2dnZXIuZXJyb3IoZXgpCisgICAgICAgICAgICBzeXMuZXhpdCgxKQorCisgICAgICAgIGlmIGFyZ3MubGlzdF90ZXN0czoKKyAgICAgICAgICAgIHJjID0gc2VsZi50Yy5saXN0VGVzdHMoYXJncy5saXN0X3Rlc3RzLCAqKnNlbGYudGNfa3dhcmdzWydsaXN0J10pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9wcmVfcnVuKCkKKyAgICAgICAgICAgIHJjID0gc2VsZi50Yy5ydW5UZXN0cygqKnNlbGYudGNfa3dhcmdzWydydW4nXSkKKyAgICAgICAgICAgIHJjLmxvZ0RldGFpbHMoKQorICAgICAgICAgICAgcmMubG9nU3VtbWFyeShzZWxmLm5hbWUpCiAKICAgICAgICAgb3V0cHV0X2xpbmsgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKGFyZ3Mub3V0cHV0X2xvZyksCiAgICAgICAgICAgICAgICAgIiVzLXJlc3VsdHMubG9nIiAlIHNlbGYubmFtZSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvZGVjb3JhdG9yL2RlcGVuZHMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL2RlY29yYXRvci9kZXBlbmRzLnB5CmluZGV4IDE5NTcxMWMuLmJhYTA0MzQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvZGVjb3JhdG9yL2RlcGVuZHMucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS9kZWNvcmF0b3IvZGVwZW5kcy5weQpAQCAtMyw2ICszLDcgQEAKIAogZnJvbSB1bml0dGVzdCBpbXBvcnQgU2tpcFRlc3QKIAorZnJvbSBvZXFhLmNvcmUudGhyZWFkZWQgaW1wb3J0IE9FVGVzdFJ1bm5lclRocmVhZGVkCiBmcm9tIG9lcWEuY29yZS5leGNlcHRpb24gaW1wb3J0IE9FUUFEZXBlbmRlbmN5CiAKIGZyb20gLiBpbXBvcnQgT0VUZXN0RGlzY292ZXIsIHJlZ2lzdGVyRGVjb3JhdG9yCkBAIC02Myw3ICs2NCwxMiBAQAogICAgIHJldHVybiBbY2FzZXNbY2FzZV9pZF0gZm9yIGNhc2VfaWQgaW4gY2FzZXNfb3JkZXJlZF0KIAogZGVmIF9za2lwVGVzdERlcGVuZGVuY3koY2FzZSwgZGVwZW5kcyk6Ci0gICAgcmVzdWx0cyA9IGNhc2UudGMuX3Jlc3VsdHMKKyAgICBpZiBpc2luc3RhbmNlKGNhc2UudGMucnVubmVyLCBPRVRlc3RSdW5uZXJUaHJlYWRlZCk6CisgICAgICAgIGltcG9ydCB0aHJlYWRpbmcKKyAgICAgICAgcmVzdWx0cyA9IGNhc2UudGMuX3Jlc3VsdHNbdGhyZWFkaW5nLmdldF9pZGVudCgpXQorICAgIGVsc2U6CisgICAgICAgIHJlc3VsdHMgPSBjYXNlLnRjLl9yZXN1bHRzCisKICAgICBza2lwUmVhc29ucyA9IFsnZXJyb3JzJywgJ2ZhaWx1cmVzJywgJ3NraXBwZWQnXQogCiAgICAgZm9yIHJlYXNvbiBpbiBza2lwUmVhc29uczoKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvZGVjb3JhdG9yL29ldGltZW91dC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvZGVjb3JhdG9yL29ldGltZW91dC5weQppbmRleCBhMjQ3NTgzLi5mODVlN2Q5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL2RlY29yYXRvci9vZXRpbWVvdXQucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS9kZWNvcmF0b3Ivb2V0aW1lb3V0LnB5CkBAIC0xLDggKzEsMTIgQEAKICMgQ29weXJpZ2h0IChDKSAyMDE2IEludGVsIENvcnBvcmF0aW9uCiAjIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUKQogCi1pbXBvcnQgc2lnbmFsCiBmcm9tIC4gaW1wb3J0IE9FVGVzdERlY29yYXRvciwgcmVnaXN0ZXJEZWNvcmF0b3IKKworaW1wb3J0IHNpZ25hbAorZnJvbSB0aHJlYWRpbmcgaW1wb3J0IFRpbWVyCisKK2Zyb20gb2VxYS5jb3JlLnRocmVhZGVkIGltcG9ydCBPRVRlc3RSdW5uZXJUaHJlYWRlZAogZnJvbSBvZXFhLmNvcmUuZXhjZXB0aW9uIGltcG9ydCBPRVFBVGltZW91dEVycm9yCiAKIEByZWdpc3RlckRlY29yYXRvcgpAQCAtMTAsMTYgKzE0LDMyIEBACiAgICAgYXR0cnMgPSAoJ29ldGltZW91dCcsKQogCiAgICAgZGVmIHNldFVwRGVjb3JhdG9yKHNlbGYpOgotICAgICAgICB0aW1lb3V0ID0gc2VsZi5vZXRpbWVvdXQKLSAgICAgICAgZGVmIF90aW1lb3V0SGFuZGxlcihzaWdudW0sIGZyYW1lKToKLSAgICAgICAgICAgIHJhaXNlIE9FUUFUaW1lb3V0RXJyb3IoIlRpbWVkIG91dCBhZnRlciAlcyAiCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJTZXR0aW5nIHVwIGEgJWQgc2Vjb25kKHMpIHRpbWVvdXQiICUgc2VsZi5vZXRpbWVvdXQpCisKKyAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLmNhc2UudGMucnVubmVyLCBPRVRlc3RSdW5uZXJUaHJlYWRlZCk6CisgICAgICAgICAgICBzZWxmLnRpbWVvdXRlZCA9IEZhbHNlCisgICAgICAgICAgICBkZWYgX3RpbWVvdXRIYW5kbGVyKCk6CisgICAgICAgICAgICAgICAgc2VsZi50aW1lb3V0ZWQgPSBUcnVlCisKKyAgICAgICAgICAgIHNlbGYudGltZXIgPSBUaW1lcihzZWxmLm9ldGltZW91dCwgX3RpbWVvdXRIYW5kbGVyKQorICAgICAgICAgICAgc2VsZi50aW1lci5zdGFydCgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0aW1lb3V0ID0gc2VsZi5vZXRpbWVvdXQKKyAgICAgICAgICAgIGRlZiBfdGltZW91dEhhbmRsZXIoc2lnbnVtLCBmcmFtZSk6CisgICAgICAgICAgICAgICAgcmFpc2UgT0VRQVRpbWVvdXRFcnJvcigiVGltZWQgb3V0IGFmdGVyICVzICIKICAgICAgICAgICAgICAgICAgICAgInNlY29uZHMgb2YgZXhlY3V0aW9uIiAlIHRpbWVvdXQpCiAKLSAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlNldHRpbmcgdXAgYSAlZCBzZWNvbmQocykgdGltZW91dCIgJSBzZWxmLm9ldGltZW91dCkKLSAgICAgICAgc2VsZi5hbGFybVNpZ25hbCA9IHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0FMUk0sIF90aW1lb3V0SGFuZGxlcikKLSAgICAgICAgc2lnbmFsLmFsYXJtKHNlbGYub2V0aW1lb3V0KQorICAgICAgICAgICAgc2VsZi5hbGFybVNpZ25hbCA9IHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0FMUk0sIF90aW1lb3V0SGFuZGxlcikKKyAgICAgICAgICAgIHNpZ25hbC5hbGFybShzZWxmLm9ldGltZW91dCkKIAogICAgIGRlZiB0ZWFyRG93bkRlY29yYXRvcihzZWxmKToKLSAgICAgICAgc2lnbmFsLmFsYXJtKDApCi0gICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0FMUk0sIHNlbGYuYWxhcm1TaWduYWwpCi0gICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJSZW1vdmVkIFNJR0FMUk0gaGFuZGxlciIpCisgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5jYXNlLnRjLnJ1bm5lciwgT0VUZXN0UnVubmVyVGhyZWFkZWQpOgorICAgICAgICAgICAgc2VsZi50aW1lci5jYW5jZWwoKQorICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlJlbW92ZWQgVGltZXIgaGFuZGxlciIpCisgICAgICAgICAgICBpZiBzZWxmLnRpbWVvdXRlZDoKKyAgICAgICAgICAgICAgICByYWlzZSBPRVFBVGltZW91dEVycm9yKCJUaW1lZCBvdXQgYWZ0ZXIgJXMgIgorICAgICAgICAgICAgICAgICAgICAic2Vjb25kcyBvZiBleGVjdXRpb24iICUgc2VsZi5vZXRpbWVvdXQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzaWduYWwuYWxhcm0oMCkKKyAgICAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0FMUk0sIHNlbGYuYWxhcm1TaWduYWwpCisgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiUmVtb3ZlZCBTSUdBTFJNIGhhbmRsZXIiKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS9leGNlcHRpb24ucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL2V4Y2VwdGlvbi5weQppbmRleCAyZGZkODQwLi43MzJmMmVmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL2V4Y2VwdGlvbi5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL2V4Y2VwdGlvbi5weQpAQCAtMTIsMyArMTIsMTIgQEAKIAogY2xhc3MgT0VRQURlcGVuZGVuY3koT0VRQUV4Y2VwdGlvbik6CiAgICAgcGFzcworCitjbGFzcyBPRVFBTWlzc2luZ01hbmlmZXN0KE9FUUFFeGNlcHRpb24pOgorICAgIHBhc3MKKworY2xhc3MgT0VRQVByZVJ1bihPRVFBRXhjZXB0aW9uKToKKyAgICBwYXNzCisKK2NsYXNzIE9FUUFUZXN0Tm90Rm91bmQoT0VRQUV4Y2VwdGlvbik6CisgICAgcGFzcwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS9sb2FkZXIucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL2xvYWRlci5weQppbmRleCA2M2ExNzAzLi45NzVhMDgxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL2xvYWRlci5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL2xvYWRlci5weQpAQCAtMiwyNSArMiwzMCBAQAogIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCkKIAogaW1wb3J0IG9zCitpbXBvcnQgcmUKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAoraW1wb3J0IGluc3BlY3QKIAogZnJvbSBvZXFhLmNvcmUudXRpbHMucGF0aCBpbXBvcnQgZmluZEZpbGUKIGZyb20gb2VxYS5jb3JlLnV0aWxzLnRlc3QgaW1wb3J0IGdldFN1aXRlTW9kdWxlcywgZ2V0Q2FzZUlECiAKK2Zyb20gb2VxYS5jb3JlLmV4Y2VwdGlvbiBpbXBvcnQgT0VRQVRlc3ROb3RGb3VuZAogZnJvbSBvZXFhLmNvcmUuY2FzZSBpbXBvcnQgT0VUZXN0Q2FzZQogZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yIGltcG9ydCBkZWNvcmF0b3JDbGFzc2VzLCBPRVRlc3REZWNvcmF0b3IsIFwKICAgICAgICAgT0VUZXN0RmlsdGVyLCBPRVRlc3REaXNjb3ZlcgogCi1kZWYgX21ha2VfZmFpbGVkX3Rlc3QoY2xhc3NuYW1lLCBtZXRob2RuYW1lLCBleGNlcHRpb24sIHN1aXRlQ2xhc3MpOgotICAgICIiIgotICAgICAgICBXaGVuIGxvYWRpbmcgdGVzdHMgdW5pdHRlc3QgZnJhbWV3b3JrIHN0b3JlcyB0aGUgZXhjZXB0aW9uIGluIGEgbmV3Ci0gICAgICAgIGNsYXNzIGNyZWF0ZWQgZm9yIGJlIGRpc3BsYXllZCBpbnRvIHJ1bigpLgotCi0gICAgICAgIEZvciBvdXIgcHVycG9zZXMgd2lsbCBiZSBiZXR0ZXIgdG8gcmFpc2UgdGhlIGV4Y2VwdGlvbiBpbiBsb2FkaW5nIAotICAgICAgICBzdGVwIGluc3RlYWQgb2Ygd2FpdCB0byBydW4gdGhlIHRlc3Qgc3VpdGUuCi0gICAgIiIiCi0gICAgcmFpc2UgZXhjZXB0aW9uCisjIFdoZW4gbG9hZGluZyB0ZXN0cywgdGhlIHVuaXR0ZXN0IGZyYW1ld29yayBzdG9yZXMgYW55IGV4Y2VwdGlvbnMgYW5kCisjIGRpc3BsYXlzIHRoZW0gb25seSB3aGVuIHRoZSBydW4gbWV0aG9kIGlzIGNhbGxlZC4KKyMKKyMgRm9yIG91ciBwdXJwb3NlcywgaXQgaXMgYmV0dGVyIHRvIHJhaXNlIHRoZSBleGNlcHRpb25zIGluIHRoZSBsb2FkaW5nCisjIHN0ZXAgcmF0aGVyIHRoYW4gd2FpdGluZyB0byBydW4gdGhlIHRlc3Qgc3VpdGUuCisjCisjIEdlbmVyYXRlIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGJlY2F1c2UgdGhpcyBkaWZmZXIgYWNyb3NzIHB5dGhvbiB2ZXJzaW9ucworIyBQeXRob24gPj0gMy40LjQgdXNlcyB0cmVlIHBhcmFtZXRlcnMgaW5zdGVhZCBmb3VyIGJ1dCBmb3IgZXhhbXBsZSBQeXRob24gMy41LjMKKyMgdWVzZXMgZm91ciBwYXJhbWV0ZXJzIHNvIGlzbid0IGluY3JlbWVudGFsLgorX2ZhaWxlZF90ZXN0X2FyZ3MgPSBpbnNwZWN0LmdldGFyZ3NwZWModW5pdHRlc3QubG9hZGVyLl9tYWtlX2ZhaWxlZF90ZXN0KS5hcmdzCitleGVjKCIiImRlZiBfbWFrZV9mYWlsZWRfdGVzdCglcyk6IHJhaXNlIGV4Y2VwdGlvbiIiIiAlICcsICcuam9pbihfZmFpbGVkX3Rlc3RfYXJncykpCiB1bml0dGVzdC5sb2FkZXIuX21ha2VfZmFpbGVkX3Rlc3QgPSBfbWFrZV9mYWlsZWRfdGVzdAogCiBkZWYgX2ZpbmRfZHVwbGljYXRlZF9tb2R1bGVzKHN1aXRlLCBkaXJlY3RvcnkpOgpAQCAtMjksNiArMzQsMjggQEAKICAgICAgICAgaWYgcGF0aDoKICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJEdXBsaWNhdGVkICVzIG1vZHVsZSBmb3VuZCBpbiAlcyIgJSAobW9kdWxlLCBwYXRoKSkKIAorZGVmIF9idWlsdF9tb2R1bGVzX2RpY3QobW9kdWxlcyk6CisgICAgbW9kdWxlc19kaWN0ID0ge30KKworICAgIGlmIG1vZHVsZXMgPT0gTm9uZToKKyAgICAgICAgcmV0dXJuIG1vZHVsZXNfZGljdAorCisgICAgZm9yIG1vZHVsZSBpbiBtb2R1bGVzOgorICAgICAgICAjIEFzc3VtcHRpb246IHBhY2thZ2UgYW5kIG1vZHVsZSBuYW1lcyBkbyBub3QgY29udGFpbiB1cHBlciBjYXNlCisgICAgICAgICMgY2hhcmFjdGVycywgd2hlcmVhcyBjbGFzcyBuYW1lcyBkbworICAgICAgICBtID0gcmUubWF0Y2gocideKFteQS1aXSspKD86XC4oW0EtWl1bXi5dKikoPzpcLihbXi5dKykpPyk/JCcsIG1vZHVsZSkKKworICAgICAgICBtb2R1bGVfbmFtZSwgY2xhc3NfbmFtZSwgdGVzdF9uYW1lID0gbS5ncm91cHMoKQorCisgICAgICAgIGlmIG1vZHVsZV9uYW1lIGFuZCBtb2R1bGVfbmFtZSBub3QgaW4gbW9kdWxlc19kaWN0OgorICAgICAgICAgICAgbW9kdWxlc19kaWN0W21vZHVsZV9uYW1lXSA9IHt9CisgICAgICAgIGlmIGNsYXNzX25hbWUgYW5kIGNsYXNzX25hbWUgbm90IGluIG1vZHVsZXNfZGljdFttb2R1bGVfbmFtZV06CisgICAgICAgICAgICBtb2R1bGVzX2RpY3RbbW9kdWxlX25hbWVdW2NsYXNzX25hbWVdID0gW10KKyAgICAgICAgaWYgdGVzdF9uYW1lIGFuZCB0ZXN0X25hbWUgbm90IGluIG1vZHVsZXNfZGljdFttb2R1bGVfbmFtZV1bY2xhc3NfbmFtZV06CisgICAgICAgICAgICBtb2R1bGVzX2RpY3RbbW9kdWxlX25hbWVdW2NsYXNzX25hbWVdLmFwcGVuZCh0ZXN0X25hbWUpCisKKyAgICByZXR1cm4gbW9kdWxlc19kaWN0CisKIGNsYXNzIE9FVGVzdExvYWRlcih1bml0dGVzdC5UZXN0TG9hZGVyKToKICAgICBjYXNlQ2xhc3MgPSBPRVRlc3RDYXNlCiAKQEAgLTM5LDcgKzY2LDggQEAKICAgICAgICAgICAgIGZpbHRlcnMsICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgIHNlbGYudGMgPSB0YwogCi0gICAgICAgIHNlbGYubW9kdWxlcyA9IG1vZHVsZXMKKyAgICAgICAgc2VsZi5tb2R1bGVzID0gX2J1aWx0X21vZHVsZXNfZGljdChtb2R1bGVzKQorCiAgICAgICAgIHNlbGYudGVzdHMgPSB0ZXN0cwogICAgICAgICBzZWxmLm1vZHVsZXNfcmVxdWlyZWQgPSBtb2R1bGVzX3JlcXVpcmVkCiAKQEAgLTYzLDYgKzkxLDggQEAKIAogICAgICAgICBzZWxmLl9wYXRjaENhc2VDbGFzcyhzZWxmLmNhc2VDbGFzcykKIAorICAgICAgICBzdXBlcihPRVRlc3RMb2FkZXIsIHNlbGYpLl9faW5pdF9fKCkKKwogICAgIGRlZiBfcGF0Y2hDYXNlQ2xhc3Moc2VsZiwgdGVzdENhc2VDbGFzcyk6CiAgICAgICAgICMgQWRkcyBjdXN0b20gYXR0cmlidXRlcyB0byB0aGUgT0VUZXN0Q2FzZSBjbGFzcwogICAgICAgICBzZXRhdHRyKHRlc3RDYXNlQ2xhc3MsICd0YycsIHNlbGYudGMpCkBAIC0xMTYsNyArMTQ2LDM1IEBACiAgICAgICAgICIiIgogICAgICAgICAgICAgUmV0dXJucyBUcnVlIGlmIHRlc3QgY2FzZSBtdXN0IGJlIGZpbHRlcmVkLCBGYWxzZSBvdGhlcndpc2UuCiAgICAgICAgICIiIgotICAgICAgICBpZiBzZWxmLmZpbHRlcnM6CisgICAgICAgICMgWFhYOyBJZiB0aGUgbW9kdWxlIGhhcyBtb3JlIHRoYW4gb25lIG5hbWVzcGFjZSBvbmx5IHVzZQorICAgICAgICAjIHRoZSBmaXJzdCB0byBzdXBwb3J0IHJ1biB0aGUgd2hvbGUgbW9kdWxlIHNwZWNpZnlpbmcgdGhlCisgICAgICAgICMgPG1vZHVsZV9uYW1lPi5bdGVzdF9jbGFzc10uW3Rlc3RfbmFtZV0KKyAgICAgICAgbW9kdWxlX25hbWVfc21hbGwgPSBjYXNlLl9fbW9kdWxlX18uc3BsaXQoJy4nKVswXQorICAgICAgICBtb2R1bGVfbmFtZSA9IGNhc2UuX19tb2R1bGVfXworCisgICAgICAgIGNsYXNzX25hbWUgPSBjYXNlLl9fY2xhc3NfXy5fX25hbWVfXworICAgICAgICB0ZXN0X25hbWUgPSBjYXNlLl90ZXN0TWV0aG9kTmFtZQorCisgICAgICAgIGlmIHNlbGYubW9kdWxlczoKKyAgICAgICAgICAgIG1vZHVsZSA9IE5vbmUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLm1vZHVsZXNbbW9kdWxlX25hbWVfc21hbGxdCisgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLm1vZHVsZXNbbW9kdWxlX25hbWVdCisgICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgICAgICBpZiBtb2R1bGU6CisgICAgICAgICAgICAgICAgaWYgbm90IGNsYXNzX25hbWUgaW4gbW9kdWxlOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgICAgICAgICAgaWYgbW9kdWxlW2NsYXNzX25hbWVdOgorICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0X25hbWUgbm90IGluIG1vZHVsZVtjbGFzc19uYW1lXToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgIyBEZWNvcmF0b3IgZmlsdGVycworICAgICAgICBpZiBzZWxmLmZpbHRlcnMgYW5kIGlzaW5zdGFuY2UoY2FzZSwgT0VUZXN0Q2FzZSk6CiAgICAgICAgICAgICBmaWx0ZXJzID0gc2VsZi5maWx0ZXJzLmNvcHkoKQogICAgICAgICAgICAgY2FzZV9kZWNvcmF0b3JzID0gW2NkIGZvciBjZCBpbiBjYXNlLmRlY29yYXRvcnMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBjZC5fX2NsYXNzX18gaW4gc2VsZi51c2VkX2ZpbHRlcnNdCkBAIC0xMzQsNyArMTkyLDggQEAKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKICAgICBkZWYgX2dldFRlc3RDYXNlKHNlbGYsIHRlc3RDYXNlQ2xhc3MsIHRjTmFtZSk6Ci0gICAgICAgIGlmIG5vdCBoYXNhdHRyKHRlc3RDYXNlQ2xhc3MsICdfX29lcWFfbG9hZGVyJyk6CisgICAgICAgIGlmIG5vdCBoYXNhdHRyKHRlc3RDYXNlQ2xhc3MsICdfX29lcWFfbG9hZGVyJykgYW5kIFwKKyAgICAgICAgICAgICAgICBpc3N1YmNsYXNzKHRlc3RDYXNlQ2xhc3MsIE9FVGVzdENhc2UpOgogICAgICAgICAgICAgIyBJbiBvcmRlciB0byBzdXBwb3J0IGRhdGFfdmFycyB2YWxpZGF0aW9uCiAgICAgICAgICAgICAjIG1vbmtleSBwYXRjaCB0aGUgZGVmYXVsdCBzZXRVcC90ZWFyRG93bntDbGFzc30gdG8gdXNlCiAgICAgICAgICAgICAjIHRoZSBvbmVzIHByb3ZpZGVkIGJ5IE9FVGVzdENhc2UKQEAgLTE2MSw3ICsyMjAsOCBAQAogICAgICAgICAgICAgc2V0YXR0cih0ZXN0Q2FzZUNsYXNzLCAnX19vZXFhX2xvYWRlcicsIFRydWUpCiAKICAgICAgICAgY2FzZSA9IHRlc3RDYXNlQ2xhc3ModGNOYW1lKQotICAgICAgICBzZXRhdHRyKGNhc2UsICdkZWNvcmF0b3JzJywgW10pCisgICAgICAgIGlmIGlzaW5zdGFuY2UoY2FzZSwgT0VUZXN0Q2FzZSk6CisgICAgICAgICAgICBzZXRhdHRyKGNhc2UsICdkZWNvcmF0b3JzJywgW10pCiAKICAgICAgICAgcmV0dXJuIGNhc2UKIApAQCAtMTczLDkgKzIzMyw5IEBACiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIlRlc3QgY2FzZXMgc2hvdWxkIG5vdCBiZSBkZXJpdmVkIGZyb20gVGVzdFN1aXRlLiIgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIE1heWJlIHlvdSBtZWFudCB0byBkZXJpdmUgJXMgZnJvbSBUZXN0Q2FzZT8iIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSB0ZXN0Q2FzZUNsYXNzLl9fbmFtZV9fKQotICAgICAgICBpZiBub3QgaXNzdWJjbGFzcyh0ZXN0Q2FzZUNsYXNzLCBzZWxmLmNhc2VDbGFzcyk6CisgICAgICAgIGlmIG5vdCBpc3N1YmNsYXNzKHRlc3RDYXNlQ2xhc3MsIHVuaXR0ZXN0LmNhc2UuVGVzdENhc2UpOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJUZXN0ICVzIGlzIG5vdCBkZXJpdmVkIGZyb20gJXMiICUgXAotICAgICAgICAgICAgICAgICAgICAodGVzdENhc2VDbGFzcy5fX25hbWVfXywgc2VsZi5jYXNlQ2xhc3MuX19uYW1lX18pKQorICAgICAgICAgICAgICAgICAgICAodGVzdENhc2VDbGFzcy5fX25hbWVfXywgdW5pdHRlc3QuY2FzZS5UZXN0Q2FzZS5fX25hbWVfXykpCiAKICAgICAgICAgdGVzdENhc2VOYW1lcyA9IHNlbGYuZ2V0VGVzdENhc2VOYW1lcyh0ZXN0Q2FzZUNsYXNzKQogICAgICAgICBpZiBub3QgdGVzdENhc2VOYW1lcyBhbmQgaGFzYXR0cih0ZXN0Q2FzZUNsYXNzLCAncnVuVGVzdCcpOgpAQCAtMTk2LDYgKzI1NiwyOCBAQAogCiAgICAgICAgIHJldHVybiBzZWxmLnN1aXRlQ2xhc3Moc3VpdGUpCiAKKyAgICBkZWYgX3JlcXVpcmVkX21vZHVsZXNfdmFsaWRhdGlvbihzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgICAgICBTZWFyY2ggaW4gVGVzdCBjb250ZXh0IHJlZ2lzdHJ5IGlmIGEgcmVxdWlyZWQKKyAgICAgICAgICAgIHRlc3QgaXMgZm91bmQsIHJhaXNlIGFuIGV4Y2VwdGlvbiB3aGVuIG5vdCBmb3VuZC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgZm9yIG1vZHVsZSBpbiBzZWxmLm1vZHVsZXNfcmVxdWlyZWQ6CisgICAgICAgICAgICBmb3VuZCA9IEZhbHNlCisKKyAgICAgICAgICAgICMgVGhlIG1vZHVsZSBuYW1lIGlzIHNwbGl0dGVkIHRvIG9ubHkgY29tcGFyZSB0aGUKKyAgICAgICAgICAgICMgZmlyc3QgcGFydCBvZiBhIHRlc3QgY2FzZSBpZC4KKyAgICAgICAgICAgIGNvbXBfbGVuID0gbGVuKG1vZHVsZS5zcGxpdCgnLicpKQorICAgICAgICAgICAgZm9yIGNhc2UgaW4gc2VsZi50Yy5fcmVnaXN0cnlbJ2Nhc2VzJ106CisgICAgICAgICAgICAgICAgY2FzZV9jb21wID0gJy4nLmpvaW4oY2FzZS5zcGxpdCgnLicpWzA6Y29tcF9sZW5dKQorICAgICAgICAgICAgICAgIGlmIG1vZHVsZSA9PSBjYXNlX2NvbXA6CisgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgICAgICBpZiBub3QgZm91bmQ6CisgICAgICAgICAgICAgICAgcmFpc2UgT0VRQVRlc3ROb3RGb3VuZCgiTm90IGZvdW5kICVzIGluIGxvYWRlZCB0ZXN0IGNhc2VzIiAlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZSkKKwogICAgIGRlZiBkaXNjb3ZlcihzZWxmKToKICAgICAgICAgYmlnX3N1aXRlID0gc2VsZi5zdWl0ZUNsYXNzKCkKICAgICAgICAgZm9yIHBhdGggaW4gc2VsZi5tb2R1bGVfcGF0aHM6CkBAIC0yMTAsOCArMjkyLDQxIEBACiAgICAgICAgIGZvciBjbHNzIGluIGRpc2NvdmVyX2NsYXNzZXM6CiAgICAgICAgICAgICBjYXNlcyA9IGNsc3MuZGlzY292ZXIoc2VsZi50Yy5fcmVnaXN0cnkpCiAKKyAgICAgICAgaWYgc2VsZi5tb2R1bGVzX3JlcXVpcmVkOgorICAgICAgICAgICAgc2VsZi5fcmVxdWlyZWRfbW9kdWxlc192YWxpZGF0aW9uKCkKKwogICAgICAgICByZXR1cm4gc2VsZi5zdWl0ZUNsYXNzKGNhc2VzKSBpZiBjYXNlcyBlbHNlIGJpZ19zdWl0ZQogCisgICAgZGVmIF9maWx0ZXJNb2R1bGUoc2VsZiwgbW9kdWxlKToKKyAgICAgICAgaWYgbW9kdWxlLl9fbmFtZV9fIGluIHN5cy5idWlsdGluX21vZHVsZV9uYW1lczoKKyAgICAgICAgICAgIG1zZyA9ICdUcmllZCB0byBpbXBvcnQgJXMgdGVzdCBtb2R1bGUgYnV0IGlzIGEgYnVpbHQtaW4nCisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtc2cgJSBtb2R1bGUuX19uYW1lX18pCisKKyAgICAgICAgIyBYWFg7IElmIHRoZSBtb2R1bGUgaGFzIG1vcmUgdGhhbiBvbmUgbmFtZXNwYWNlIG9ubHkgdXNlCisgICAgICAgICMgdGhlIGZpcnN0IHRvIHN1cHBvcnQgcnVuIHRoZSB3aG9sZSBtb2R1bGUgc3BlY2lmeWluZyB0aGUKKyAgICAgICAgIyA8bW9kdWxlX25hbWU+Llt0ZXN0X2NsYXNzXS5bdGVzdF9uYW1lXQorICAgICAgICBtb2R1bGVfbmFtZV9zbWFsbCA9IG1vZHVsZS5fX25hbWVfXy5zcGxpdCgnLicpWzBdCisgICAgICAgIG1vZHVsZV9uYW1lID0gbW9kdWxlLl9fbmFtZV9fCisKKyAgICAgICAgIyBOb3JtYWwgdGVzdCBtb2R1bGVzIGFyZSBsb2FkZWQgaWYgbm8gbW9kdWxlcyB3ZXJlIHNwZWNpZmllZCwKKyAgICAgICAgIyBpZiBtb2R1bGUgaXMgaW4gdGhlIHNwZWNpZmllZCBtb2R1bGUgbGlzdCBvciBpZiAnYWxsJyBpcyBpbgorICAgICAgICAjIG1vZHVsZSBsaXN0LgorICAgICAgICAjIFVuZGVyc2NvcmUgbW9kdWxlcyBhcmUgbG9hZGVkIG9ubHkgaWYgc3BlY2lmaWVkIGluIG1vZHVsZSBsaXN0LgorICAgICAgICBsb2FkX21vZHVsZSA9IFRydWUgaWYgbm90IG1vZHVsZV9uYW1lLnN0YXJ0c3dpdGgoJ18nKSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgKG5vdCBzZWxmLm1vZHVsZXMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBtb2R1bGVfbmFtZSBpbiBzZWxmLm1vZHVsZXMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBtb2R1bGVfbmFtZV9zbWFsbCBpbiBzZWxmLm1vZHVsZXMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciAnYWxsJyBpbiBzZWxmLm1vZHVsZXMpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgRmFsc2UKKworICAgICAgICBsb2FkX3VuZGVyc2NvcmUgPSBUcnVlIGlmIG1vZHVsZV9uYW1lLnN0YXJ0c3dpdGgoJ18nKSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIChtb2R1bGVfbmFtZSBpbiBzZWxmLm1vZHVsZXMgb3IgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZV9uYW1lX3NtYWxsIGluIHNlbGYubW9kdWxlcykgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgRmFsc2UKKworICAgICAgICByZXR1cm4gKGxvYWRfbW9kdWxlLCBsb2FkX3VuZGVyc2NvcmUpCisKKwogICAgICMgWFhYIEFmdGVyIFB5dGhvbiAzLjUsIHJlbW92ZSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGhhY2tzIGZvcgogICAgICMgdXNlX2xvYWRfdGVzdHMgZGVwcmVjYXRpb24gdmlhICphcmdzIGFuZCAqKmt3cy4gIFNlZSBpc3N1ZSAxNjY2Mi4KICAgICBpZiBzeXMudmVyc2lvbl9pbmZvID49ICgzLDUpOgpAQCAtMjE5LDIzICszMzQsNyBAQAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICAgICAgUmV0dXJucyBhIHN1aXRlIG9mIGFsbCB0ZXN0cyBjYXNlcyBjb250YWluZWQgaW4gbW9kdWxlLgogICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICBpZiBtb2R1bGUuX19uYW1lX18gaW4gc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzOgotICAgICAgICAgICAgICAgIG1zZyA9ICdUcmllZCB0byBpbXBvcnQgJXMgdGVzdCBtb2R1bGUgYnV0IGlzIGEgYnVpbHQtaW4nCi0gICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobXNnICUgbW9kdWxlLl9fbmFtZV9fKQotCi0gICAgICAgICAgICAjIE5vcm1hbCB0ZXN0IG1vZHVsZXMgYXJlIGxvYWRlZCBpZiBubyBtb2R1bGVzIHdlcmUgc3BlY2lmaWVkLAotICAgICAgICAgICAgIyBpZiBtb2R1bGUgaXMgaW4gdGhlIHNwZWNpZmllZCBtb2R1bGUgbGlzdCBvciBpZiAnYWxsJyBpcyBpbgotICAgICAgICAgICAgIyBtb2R1bGUgbGlzdC4KLSAgICAgICAgICAgICMgVW5kZXJzY29yZSBtb2R1bGVzIGFyZSBsb2FkZWQgb25seSBpZiBzcGVjaWZpZWQgaW4gbW9kdWxlIGxpc3QuCi0gICAgICAgICAgICBsb2FkX21vZHVsZSA9IFRydWUgaWYgbm90IG1vZHVsZS5fX25hbWVfXy5zdGFydHN3aXRoKCdfJykgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCAobm90IHNlbGYubW9kdWxlcyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBtb2R1bGUuX19uYW1lX18gaW4gc2VsZi5tb2R1bGVzIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yICdhbGwnIGluIHNlbGYubW9kdWxlcykgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgRmFsc2UKLQotICAgICAgICAgICAgbG9hZF91bmRlcnNjb3JlID0gVHJ1ZSBpZiBtb2R1bGUuX19uYW1lX18uc3RhcnRzd2l0aCgnXycpIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIG1vZHVsZS5fX25hbWVfXyBpbiBzZWxmLm1vZHVsZXMgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIEZhbHNlCisgICAgICAgICAgICBsb2FkX21vZHVsZSwgbG9hZF91bmRlcnNjb3JlID0gc2VsZi5fZmlsdGVyTW9kdWxlKG1vZHVsZSkKIAogICAgICAgICAgICAgaWYgbG9hZF9tb2R1bGUgb3IgbG9hZF91bmRlcnNjb3JlOgogICAgICAgICAgICAgICAgIHJldHVybiBzdXBlcihPRVRlc3RMb2FkZXIsIHNlbGYpLmxvYWRUZXN0c0Zyb21Nb2R1bGUoCkBAIC0yNDcsMjMgKzM0Niw3IEBACiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgICAgICBSZXR1cm5zIGEgc3VpdGUgb2YgYWxsIHRlc3RzIGNhc2VzIGNvbnRhaW5lZCBpbiBtb2R1bGUuCiAgICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGlmIG1vZHVsZS5fX25hbWVfXyBpbiBzeXMuYnVpbHRpbl9tb2R1bGVfbmFtZXM6Ci0gICAgICAgICAgICAgICAgbXNnID0gJ1RyaWVkIHRvIGltcG9ydCAlcyB0ZXN0IG1vZHVsZSBidXQgaXMgYSBidWlsdC1pbicKLSAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtc2cgJSBtb2R1bGUuX19uYW1lX18pCi0KLSAgICAgICAgICAgICMgTm9ybWFsIHRlc3QgbW9kdWxlcyBhcmUgbG9hZGVkIGlmIG5vIG1vZHVsZXMgd2VyZSBzcGVjaWZpZWQsCi0gICAgICAgICAgICAjIGlmIG1vZHVsZSBpcyBpbiB0aGUgc3BlY2lmaWVkIG1vZHVsZSBsaXN0IG9yIGlmICdhbGwnIGlzIGluCi0gICAgICAgICAgICAjIG1vZHVsZSBsaXN0LgotICAgICAgICAgICAgIyBVbmRlcnNjb3JlIG1vZHVsZXMgYXJlIGxvYWRlZCBvbmx5IGlmIHNwZWNpZmllZCBpbiBtb2R1bGUgbGlzdC4KLSAgICAgICAgICAgIGxvYWRfbW9kdWxlID0gVHJ1ZSBpZiBub3QgbW9kdWxlLl9fbmFtZV9fLnN0YXJ0c3dpdGgoJ18nKSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIChub3Qgc2VsZi5tb2R1bGVzIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIG1vZHVsZS5fX25hbWVfXyBpbiBzZWxmLm1vZHVsZXMgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgJ2FsbCcgaW4gc2VsZi5tb2R1bGVzKSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBGYWxzZQotCi0gICAgICAgICAgICBsb2FkX3VuZGVyc2NvcmUgPSBUcnVlIGlmIG1vZHVsZS5fX25hbWVfXy5zdGFydHN3aXRoKCdfJykgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgbW9kdWxlLl9fbmFtZV9fIGluIHNlbGYubW9kdWxlcyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgRmFsc2UKKyAgICAgICAgICAgIGxvYWRfbW9kdWxlLCBsb2FkX3VuZGVyc2NvcmUgPSBzZWxmLl9maWx0ZXJNb2R1bGUobW9kdWxlKQogCiAgICAgICAgICAgICBpZiBsb2FkX21vZHVsZSBvciBsb2FkX3VuZGVyc2NvcmU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKE9FVGVzdExvYWRlciwgc2VsZikubG9hZFRlc3RzRnJvbU1vZHVsZSgKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvcnVubmVyLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS9ydW5uZXIucHkKaW5kZXggNDRmZmVjYi4uMTNjZGY1YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS9ydW5uZXIucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS9ydW5uZXIucHkKQEAgLTUsNiArNSw3IEBACiBpbXBvcnQgdGltZQogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgbG9nZ2luZworaW1wb3J0IHJlCiAKIHhtbEVuYWJsZWQgPSBGYWxzZQogdHJ5OgpAQCAtMjQsMTAgKzI1LDE0IEBACiAKICAgICBkZWYgd3JpdGUoc2VsZiwgbXNnKToKICAgICAgICAgaWYgbGVuKG1zZykgPiAxIGFuZCBtc2dbMF0gIT0gJ1xuJzoKLSAgICAgICAgICAgIHNlbGYuYnVmZmVyICs9IG1zZwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5sb2dnZXIubG9nKGxvZ2dpbmcuSU5GTywgc2VsZi5idWZmZXIucnN0cmlwKCJcbiIpKQotICAgICAgICAgICAgc2VsZi5idWZmZXIgPSAiIgorICAgICAgICAgICAgaWYgJy4uLicgaW4gbXNnOgorICAgICAgICAgICAgICAgIHNlbGYuYnVmZmVyICs9IG1zZworICAgICAgICAgICAgZWxpZiBzZWxmLmJ1ZmZlcjoKKyAgICAgICAgICAgICAgICBzZWxmLmJ1ZmZlciArPSBtc2cKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5sb2cobG9nZ2luZy5JTkZPLCBzZWxmLmJ1ZmZlcikKKyAgICAgICAgICAgICAgICBzZWxmLmJ1ZmZlciA9ICIiCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmxvZyhsb2dnaW5nLklORk8sIG1zZykKIAogICAgIGRlZiBmbHVzaChzZWxmKToKICAgICAgICAgZm9yIGhhbmRsZXIgaW4gc2VsZi5sb2dnZXIuaGFuZGxlcnM6CkBAIC0zOCwyMiArNDMsMTIyIEBACiAgICAgICAgIHN1cGVyKE9FVGVzdFJlc3VsdCwgc2VsZikuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQogCiAgICAgICAgIHNlbGYudGMgPSB0YworICAgICAgICBzZWxmLl90Y19tYXBfcmVzdWx0cygpCiAKKyAgICBkZWYgc3RhcnRUZXN0KHNlbGYsIHRlc3QpOgorICAgICAgICAjIEFsbG93IHVzIHRvIHRyaWdnZXIgdGhlIHRlc3RjYXNlIGJ1ZmZlciBtb2RlIG9uIGEgcGVyIHRlc3QgYmFzaXMKKyAgICAgICAgIyBzbyBzdGRvdXQvc3RkZXJyIGFyZSBvbmx5IHByaW50ZWQgdXBvbiBmYWlsdXJlLiBFbmFibGVzIGRlYnVnZ2luZworICAgICAgICAjIGJ1dCBjbGVhbiBvdXRwdXQKKyAgICAgICAgaWYgaGFzYXR0cih0ZXN0LCAiYnVmZmVyIik6CisgICAgICAgICAgICBzZWxmLmJ1ZmZlciA9IHRlc3QuYnVmZmVyCisgICAgICAgIHN1cGVyKE9FVGVzdFJlc3VsdCwgc2VsZikuc3RhcnRUZXN0KHRlc3QpCisKKyAgICBkZWYgX3RjX21hcF9yZXN1bHRzKHNlbGYpOgogICAgICAgICBzZWxmLnRjLl9yZXN1bHRzWydmYWlsdXJlcyddID0gc2VsZi5mYWlsdXJlcwogICAgICAgICBzZWxmLnRjLl9yZXN1bHRzWydlcnJvcnMnXSA9IHNlbGYuZXJyb3JzCiAgICAgICAgIHNlbGYudGMuX3Jlc3VsdHNbJ3NraXBwZWQnXSA9IHNlbGYuc2tpcHBlZAogICAgICAgICBzZWxmLnRjLl9yZXN1bHRzWydleHBlY3RlZEZhaWx1cmVzJ10gPSBzZWxmLmV4cGVjdGVkRmFpbHVyZXMKIAotICAgIGRlZiBzdGFydFRlc3Qoc2VsZiwgdGVzdCk6Ci0gICAgICAgIHN1cGVyKE9FVGVzdFJlc3VsdCwgc2VsZikuc3RhcnRUZXN0KHRlc3QpCisgICAgZGVmIGxvZ1N1bW1hcnkoc2VsZiwgY29tcG9uZW50LCBjb250ZXh0X21zZz0nJyk6CisgICAgICAgIGVsYXBzZWRfdGltZSA9IHNlbGYudGMuX3J1bl9lbmRfdGltZSAtIHNlbGYudGMuX3J1bl9zdGFydF90aW1lCisgICAgICAgIHNlbGYudGMubG9nZ2VyLmluZm8oIlNVTU1BUlk6IikKKyAgICAgICAgc2VsZi50Yy5sb2dnZXIuaW5mbygiJXMgKCVzKSAtIFJhbiAlZCB0ZXN0JXMgaW4gJS4zZnMiICUgKGNvbXBvbmVudCwKKyAgICAgICAgICAgIGNvbnRleHRfbXNnLCBzZWxmLnRlc3RzUnVuLCBzZWxmLnRlc3RzUnVuICE9IDEgYW5kICJzIiBvciAiIiwKKyAgICAgICAgICAgIGVsYXBzZWRfdGltZSkpCisKKyAgICAgICAgaWYgc2VsZi53YXNTdWNjZXNzZnVsKCk6CisgICAgICAgICAgICBtc2cgPSAiJXMgLSBPSyAtIEFsbCByZXF1aXJlZCB0ZXN0cyBwYXNzZWQiICUgY29tcG9uZW50CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBtc2cgPSAiJXMgLSBGQUlMIC0gUmVxdWlyZWQgdGVzdHMgZmFpbGVkIiAlIGNvbXBvbmVudAorICAgICAgICBza2lwcGVkID0gbGVuKHNlbGYudGMuX3Jlc3VsdHNbJ3NraXBwZWQnXSkKKyAgICAgICAgaWYgc2tpcHBlZDogCisgICAgICAgICAgICBtc2cgKz0gIiAoc2tpcHBlZD0lZCkiICUgc2tpcHBlZAorICAgICAgICBzZWxmLnRjLmxvZ2dlci5pbmZvKG1zZykKKworICAgIGRlZiBfZ2V0RGV0YWlsc05vdFBhc3NlZChzZWxmLCBjYXNlLCB0eXBlLCBkZXNjKToKKyAgICAgICAgZm91bmQgPSBGYWxzZQorCisgICAgICAgIGZvciAoc2Nhc2UsIG1zZykgaW4gc2VsZi50Yy5fcmVzdWx0c1t0eXBlXToKKyAgICAgICAgICAgICMgWFhYOiBXaGVuIFhNTCByZXBvcnRpbmcgaXMgZW5hYmxlZCBzY2FzZSBpcworICAgICAgICAgICAgIyB4bWxydW5uZXIucmVzdWx0Ll9UZXN0SW5mbyBpbnN0YW5jZSBpbnN0ZWFkIG9mCisgICAgICAgICAgICAjIHN0cmluZy4KKyAgICAgICAgICAgIGlmIHhtbEVuYWJsZWQ6CisgICAgICAgICAgICAgICAgaWYgY2FzZS5pZCgpID09IHNjYXNlLnRlc3RfaWQ6CisgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIHNjYXNlX3N0ciA9IHNjYXNlLnRlc3RfaWQKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaWYgY2FzZSA9PSBzY2FzZToKKyAgICAgICAgICAgICAgICAgICAgZm91bmQgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgc2Nhc2Vfc3RyID0gc3RyKHNjYXNlKQorCisgICAgICAgICAgICAjIFdoZW4gZmFpbHMgYXQgbW9kdWxlIG9yIGNsYXNzIGxldmVsIHRoZSBjbGFzcyBuYW1lIGlzIHBhc3NlZCBhcyBzdHJpbmcKKyAgICAgICAgICAgICMgc28gZmlndXJlIG91dCB0byBzZWUgaWYgbWF0Y2gKKyAgICAgICAgICAgIG0gPSByZS5zZWFyY2goIl5zZXRVcE1vZHVsZSBcKCg/UDxtb2R1bGVfbmFtZT4uKilcKSQiLCBzY2FzZV9zdHIpCisgICAgICAgICAgICBpZiBtOgorICAgICAgICAgICAgICAgIGlmIGNhc2UuX19jbGFzc19fLl9fbW9kdWxlX18gPT0gbS5ncm91cCgnbW9kdWxlX25hbWUnKToKKyAgICAgICAgICAgICAgICAgICAgZm91bmQgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgICAgIG0gPSByZS5zZWFyY2goIl5zZXRVcENsYXNzIFwoKD9QPGNsYXNzX25hbWU+LiopXCkkIiwgc2Nhc2Vfc3RyKQorICAgICAgICAgICAgaWYgbToKKyAgICAgICAgICAgICAgICBjbGFzc19uYW1lID0gIiVzLiVzIiAlIChjYXNlLl9fY2xhc3NfXy5fX21vZHVsZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZS5fX2NsYXNzX18uX19uYW1lX18pCisKKyAgICAgICAgICAgICAgICBpZiBjbGFzc19uYW1lID09IG0uZ3JvdXAoJ2NsYXNzX25hbWUnKToKKyAgICAgICAgICAgICAgICAgICAgZm91bmQgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgaWYgZm91bmQ6CisgICAgICAgICAgICByZXR1cm4gKGZvdW5kLCBtc2cpCisKKyAgICAgICAgcmV0dXJuIChmb3VuZCwgTm9uZSkKKworICAgIGRlZiBsb2dEZXRhaWxzKHNlbGYpOgorICAgICAgICBzZWxmLnRjLmxvZ2dlci5pbmZvKCJSRVNVTFRTOiIpCisgICAgICAgIGZvciBjYXNlX25hbWUgaW4gc2VsZi50Yy5fcmVnaXN0cnlbJ2Nhc2VzJ106CisgICAgICAgICAgICBjYXNlID0gc2VsZi50Yy5fcmVnaXN0cnlbJ2Nhc2VzJ11bY2FzZV9uYW1lXQorCisgICAgICAgICAgICByZXN1bHRfdHlwZXMgPSBbJ2ZhaWx1cmVzJywgJ2Vycm9ycycsICdza2lwcGVkJywgJ2V4cGVjdGVkRmFpbHVyZXMnXQorICAgICAgICAgICAgcmVzdWx0X2Rlc2MgPSBbJ0ZBSUxFRCcsICdFUlJPUicsICdTS0lQUEVEJywgJ0VYUEVDVEVERkFJTCddCisKKyAgICAgICAgICAgIGZhaWwgPSBGYWxzZQorICAgICAgICAgICAgZGVzYyA9IE5vbmUKKyAgICAgICAgICAgIGZvciBpZHgsIG5hbWUgaW4gZW51bWVyYXRlKHJlc3VsdF90eXBlcyk6CisgICAgICAgICAgICAgICAgKGZhaWwsIG1zZykgPSBzZWxmLl9nZXREZXRhaWxzTm90UGFzc2VkKGNhc2UsIHJlc3VsdF90eXBlc1tpZHhdLAorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0X2Rlc2NbaWR4XSkKKyAgICAgICAgICAgICAgICBpZiBmYWlsOgorICAgICAgICAgICAgICAgICAgICBkZXNjID0gcmVzdWx0X2Rlc2NbaWR4XQorICAgICAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgICAgICBvZWlkID0gLTEKKyAgICAgICAgICAgIGlmIGhhc2F0dHIoY2FzZSwgJ2RlY29yYXRvcnMnKToKKyAgICAgICAgICAgICAgICBmb3IgZCBpbiBjYXNlLmRlY29yYXRvcnM6CisgICAgICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIoZCwgJ29laWQnKToKKyAgICAgICAgICAgICAgICAgICAgICAgIG9laWQgPSBkLm9laWQKKworICAgICAgICAgICAgaWYgZmFpbDoKKyAgICAgICAgICAgICAgICBzZWxmLnRjLmxvZ2dlci5pbmZvKCJSRVNVTFRTIC0gJXMgLSBUZXN0Y2FzZSAlczogJXMiICUgKGNhc2UuaWQoKSwKKyAgICAgICAgICAgICAgICAgICAgb2VpZCwgZGVzYykpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYudGMubG9nZ2VyLmluZm8oIlJFU1VMVFMgLSAlcyAtIFRlc3RjYXNlICVzOiAlcyIgJSAoY2FzZS5pZCgpLAorICAgICAgICAgICAgICAgICAgICBvZWlkLCAnUEFTU0VEJykpCisKK2NsYXNzIE9FTGlzdFRlc3RzUmVzdWx0KG9iamVjdCk6CisgICAgZGVmIHdhc1N1Y2Nlc3NmdWwoc2VsZik6CisgICAgICAgIHJldHVybiBUcnVlCiAKIGNsYXNzIE9FVGVzdFJ1bm5lcihfVGVzdFJ1bm5lcik6CisgICAgc3RyZWFtTG9nZ2VyQ2xhc3MgPSBPRVN0cmVhbUxvZ2dlcgorCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRjLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICBpZiB4bWxFbmFibGVkOgogICAgICAgICAgICAgaWYgbm90IGt3YXJncy5nZXQoJ291dHB1dCcpOgogICAgICAgICAgICAgICAgIGt3YXJnc1snb3V0cHV0J10gPSBvcy5wYXRoLmpvaW4ob3MuZ2V0Y3dkKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAnVGVzdFJlc3VsdHNfJXNfJXMnICUgKHRpbWUuc3RyZnRpbWUoIiVZJW0lZCVIJU0lUyIpLCBvcy5nZXRwaWQoKSkpCiAKKyAgICAgICAga3dhcmdzWydzdHJlYW0nXSA9IHNlbGYuc3RyZWFtTG9nZ2VyQ2xhc3ModGMubG9nZ2VyKQogICAgICAgICBzdXBlcihPRVRlc3RSdW5uZXIsIHNlbGYpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKICAgICAgICAgc2VsZi50YyA9IHRjCiAgICAgICAgIHNlbGYucmVzdWx0Y2xhc3MgPSBPRVRlc3RSZXN1bHQKQEAgLTc0LDMgKzE3OSw5OSBAQAogICAgICAgICBkZWYgX21ha2VSZXN1bHQoc2VsZik6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXN1bHRjbGFzcyhzZWxmLnRjLCBzZWxmLnN0cmVhbSwgc2VsZi5kZXNjcmlwdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgIHNlbGYudmVyYm9zaXR5KQorCisKKyAgICBkZWYgX3dhbGtfc3VpdGUoc2VsZiwgc3VpdGUsIGZ1bmMpOgorICAgICAgICBmb3Igb2JqIGluIHN1aXRlOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShvYmosIHVuaXR0ZXN0LnN1aXRlLlRlc3RTdWl0ZSk6CisgICAgICAgICAgICAgICAgaWYgbGVuKG9iai5fdGVzdHMpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl93YWxrX3N1aXRlKG9iaiwgZnVuYykKKyAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShvYmosIHVuaXR0ZXN0LmNhc2UuVGVzdENhc2UpOgorICAgICAgICAgICAgICAgIGZ1bmMoc2VsZi50Yy5sb2dnZXIsIG9iaikKKyAgICAgICAgICAgICAgICBzZWxmLl93YWxrZWRfY2FzZXMgPSBzZWxmLl93YWxrZWRfY2FzZXMgKyAxCisKKyAgICBkZWYgX2xpc3RfdGVzdHNfbmFtZShzZWxmLCBzdWl0ZSk6CisgICAgICAgIGZyb20gb2VxYS5jb3JlLmRlY29yYXRvci5vZWlkIGltcG9ydCBPRVRlc3RJRAorICAgICAgICBmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3Iub2V0YWcgaW1wb3J0IE9FVGVzdFRhZworCisgICAgICAgIHNlbGYuX3dhbGtlZF9jYXNlcyA9IDAKKworICAgICAgICBkZWYgX2xpc3RfY2FzZXNfd2l0aG91dF9pZChsb2dnZXIsIGNhc2UpOgorCisgICAgICAgICAgICBmb3VuZF9pZCA9IEZhbHNlCisgICAgICAgICAgICBpZiBoYXNhdHRyKGNhc2UsICdkZWNvcmF0b3JzJyk6CisgICAgICAgICAgICAgICAgZm9yIGQgaW4gY2FzZS5kZWNvcmF0b3JzOgorICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGQsIE9FVGVzdElEKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX2lkID0gVHJ1ZQorCisgICAgICAgICAgICBpZiBub3QgZm91bmRfaWQ6CisgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ29laWQgbWlzc2luZyBmb3IgJXMnICUgY2FzZS5pZCgpKQorCisgICAgICAgIGRlZiBfbGlzdF9jYXNlcyhsb2dnZXIsIGNhc2UpOgorICAgICAgICAgICAgb2VpZCA9IE5vbmUKKyAgICAgICAgICAgIG9ldGFnID0gTm9uZQorCisgICAgICAgICAgICBpZiBoYXNhdHRyKGNhc2UsICdkZWNvcmF0b3JzJyk6CisgICAgICAgICAgICAgICAgZm9yIGQgaW4gY2FzZS5kZWNvcmF0b3JzOgorICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGQsIE9FVGVzdElEKToKKyAgICAgICAgICAgICAgICAgICAgICAgIG9laWQgPSBkLm9laWQKKyAgICAgICAgICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGQsIE9FVGVzdFRhZyk6CisgICAgICAgICAgICAgICAgICAgICAgICBvZXRhZyA9IGQub2V0YWcKKworICAgICAgICAgICAgbG9nZ2VyLmluZm8oIiVzXHQlc1x0XHQlcyIgJSAob2VpZCwgb2V0YWcsIGNhc2UuaWQoKSkpCisKKyAgICAgICAgc2VsZi50Yy5sb2dnZXIuaW5mbygiTGlzdGluZyB0ZXN0IGNhc2VzIHRoYXQgZG9uJ3QgaGF2ZSBvZWlkIC4uLiIpCisgICAgICAgIHNlbGYuX3dhbGtfc3VpdGUoc3VpdGUsIF9saXN0X2Nhc2VzX3dpdGhvdXRfaWQpCisgICAgICAgIHNlbGYudGMubG9nZ2VyLmluZm8oIi0iICogODApCisKKyAgICAgICAgc2VsZi50Yy5sb2dnZXIuaW5mbygiTGlzdGluZyBhbGwgYXZhaWxhYmxlIHRlc3RzOiIpCisgICAgICAgIHNlbGYuX3dhbGtlZF9jYXNlcyA9IDAKKyAgICAgICAgc2VsZi50Yy5sb2dnZXIuaW5mbygiaWRcdHRhZ1x0XHR0ZXN0IikKKyAgICAgICAgc2VsZi50Yy5sb2dnZXIuaW5mbygiLSIgKiA4MCkKKyAgICAgICAgc2VsZi5fd2Fsa19zdWl0ZShzdWl0ZSwgX2xpc3RfY2FzZXMpCisgICAgICAgIHNlbGYudGMubG9nZ2VyLmluZm8oIi0iICogODApCisgICAgICAgIHNlbGYudGMubG9nZ2VyLmluZm8oIlRvdGFsIGZvdW5kOlx0JXMiICUgc2VsZi5fd2Fsa2VkX2Nhc2VzKQorCisgICAgZGVmIF9saXN0X3Rlc3RzX2NsYXNzKHNlbGYsIHN1aXRlKToKKyAgICAgICAgc2VsZi5fd2Fsa2VkX2Nhc2VzID0gMAorCisgICAgICAgIGN1cnIgPSB7fQorICAgICAgICBkZWYgX2xpc3RfY2xhc3Nlcyhsb2dnZXIsIGNhc2UpOgorICAgICAgICAgICAgaWYgbm90ICdtb2R1bGUnIGluIGN1cnIgb3IgY3VyclsnbW9kdWxlJ10gIT0gY2FzZS5fX21vZHVsZV9fOgorICAgICAgICAgICAgICAgIGN1cnJbJ21vZHVsZSddID0gY2FzZS5fX21vZHVsZV9fCisgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oY3VyclsnbW9kdWxlJ10pCisKKyAgICAgICAgICAgIGlmIG5vdCAnY2xhc3MnIGluIGN1cnIgIG9yIGN1cnJbJ2NsYXNzJ10gIT0gXAorICAgICAgICAgICAgICAgICAgICBjYXNlLl9fY2xhc3NfXy5fX25hbWVfXzoKKyAgICAgICAgICAgICAgICBjdXJyWydjbGFzcyddID0gY2FzZS5fX2NsYXNzX18uX19uYW1lX18KKyAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiIC0tICVzIiAlIGN1cnJbJ2NsYXNzJ10pCisKKyAgICAgICAgICAgIGxvZ2dlci5pbmZvKCIgLS0gLS0gJXMiICUgY2FzZS5fdGVzdE1ldGhvZE5hbWUpCisKKyAgICAgICAgc2VsZi50Yy5sb2dnZXIuaW5mbygiTGlzdGluZyBhbGwgYXZhaWxhYmxlIHRlc3QgY2xhc3NlczoiKQorICAgICAgICBzZWxmLl93YWxrX3N1aXRlKHN1aXRlLCBfbGlzdF9jbGFzc2VzKQorCisgICAgZGVmIF9saXN0X3Rlc3RzX21vZHVsZShzZWxmLCBzdWl0ZSk6CisgICAgICAgIHNlbGYuX3dhbGtlZF9jYXNlcyA9IDAKKworICAgICAgICBsaXN0ZWQgPSBbXQorICAgICAgICBkZWYgX2xpc3RfbW9kdWxlcyhsb2dnZXIsIGNhc2UpOgorICAgICAgICAgICAgaWYgbm90IGNhc2UuX19tb2R1bGVfXyBpbiBsaXN0ZWQ6CisgICAgICAgICAgICAgICAgaWYgY2FzZS5fX21vZHVsZV9fLnN0YXJ0c3dpdGgoJ18nKToKKyAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIiVzIChoaWRkZW4pIiAlIGNhc2UuX19tb2R1bGVfXykKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbyhjYXNlLl9fbW9kdWxlX18pCisgICAgICAgICAgICAgICAgbGlzdGVkLmFwcGVuZChjYXNlLl9fbW9kdWxlX18pCisKKyAgICAgICAgc2VsZi50Yy5sb2dnZXIuaW5mbygiTGlzdGluZyBhbGwgYXZhaWxhYmxlIHRlc3QgbW9kdWxlczoiKQorICAgICAgICBzZWxmLl93YWxrX3N1aXRlKHN1aXRlLCBfbGlzdF9tb2R1bGVzKQorCisgICAgZGVmIGxpc3RfdGVzdHMoc2VsZiwgc3VpdGUsIGRpc3BsYXlfdHlwZSk6CisgICAgICAgIGlmIGRpc3BsYXlfdHlwZSA9PSAnbmFtZSc6CisgICAgICAgICAgICBzZWxmLl9saXN0X3Rlc3RzX25hbWUoc3VpdGUpCisgICAgICAgIGVsaWYgZGlzcGxheV90eXBlID09ICdjbGFzcyc6CisgICAgICAgICAgICBzZWxmLl9saXN0X3Rlc3RzX2NsYXNzKHN1aXRlKQorICAgICAgICBlbGlmIGRpc3BsYXlfdHlwZSA9PSAnbW9kdWxlJzoKKyAgICAgICAgICAgIHNlbGYuX2xpc3RfdGVzdHNfbW9kdWxlKHN1aXRlKQorCisgICAgICAgIHJldHVybiBPRUxpc3RUZXN0c1Jlc3VsdCgpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL3RhcmdldC9xZW11LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS90YXJnZXQvcWVtdS5weQppbmRleCAyZGM1MjFjLi5kMzU5YmY5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL3RhcmdldC9xZW11LnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGFyZ2V0L3FlbXUucHkKQEAgLTMxLDcgKzMxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGxveV9kaXJfaW1hZ2U9ZGlyX2ltYWdlLCBkaXNwbGF5PWRpc3BsYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dmaWxlPWJvb3Rsb2csIGJvb3R0aW1lPWJvb3R0aW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlX2t2bT1rdm0sIGR1bXBfZGlyPWR1bXBfZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVtcF9ob3N0X2NtZHM9ZHVtcF9ob3N0X2NtZHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdW1wX2hvc3RfY21kcz1kdW1wX2hvc3RfY21kcywgbG9nZ2VyPWxvZ2dlcikKIAogICAgIGRlZiBzdGFydChzZWxmLCBwYXJhbXM9Tm9uZSwgZXh0cmFfYm9vdHBhcmFtcz1Ob25lKToKICAgICAgICAgaWYgc2VsZi5ydW5uZXIuc3RhcnQocGFyYW1zLCBleHRyYV9ib290cGFyYW1zPWV4dHJhX2Jvb3RwYXJhbXMpOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS90YXJnZXQvc3NoLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS90YXJnZXQvc3NoLnB5CmluZGV4IGI4MDkzOWMuLjE1MWI5OWEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGFyZ2V0L3NzaC5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL3RhcmdldC9zc2gucHkKQEAgLTYsNiArNiw3IEBACiBpbXBvcnQgc2VsZWN0CiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBjb2RlY3MKIAogZnJvbSAuIGltcG9ydCBPRVRhcmdldAogCkBAIC04Miw3ICs4Myw3IEBACiAgICAgICAgICAgICBwcm9jZXNzVGltZW91dCA9IHNlbGYudGltZW91dAogCiAgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gc2VsZi5fcnVuKHNzaENtZCwgcHJvY2Vzc1RpbWVvdXQsIFRydWUpCi0gICAgICAgIHNlbGYubG9nZ2VyLmluZm8oJ1xuQ29tbWFuZDogJXNcbk91dHB1dDogICVzXG4nICUgKGNvbW1hbmQsIG91dHB1dCkpCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCdDb21tYW5kOiAlc1xuT3V0cHV0OiAgJXNcbicgJSAoY29tbWFuZCwgb3V0cHV0KSkKICAgICAgICAgcmV0dXJuIChzdGF0dXMsIG91dHB1dCkKIAogICAgIGRlZiBjb3B5VG8oc2VsZiwgbG9jYWxTcmMsIHJlbW90ZURzdCk6CkBAIC0yMDYsMTIgKzIwNywxMiBAQAogICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygndGltZTogJXMsIGVuZHRpbWU6ICVzJyAlICh0aW1lLnRpbWUoKSwgZW5kdGltZSkpCiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBpZiBzZWxlY3Quc2VsZWN0KFtwcm9jZXNzLnN0ZG91dF0sIFtdLCBbXSwgNSlbMF0gIT0gW106Ci0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gb3MucmVhZChwcm9jZXNzLnN0ZG91dC5maWxlbm8oKSwgMTAyNCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRlciA9IGNvZGVjcy5nZXRyZWFkZXIoJ3V0Zi04JykocHJvY2Vzcy5zdGRvdXQpCisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gcmVhZGVyLnJlYWQoMTAyNCwgMTAyNCkKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBkYXRhOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3Muc3Rkb3V0LmNsb3NlKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlb2YgPSBUcnVlCiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhLmRlY29kZSgidXRmLTgiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCArPSBkYXRhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCdQYXJ0aWFsIGRhdGEgZnJvbSBTU0ggY2FsbDogJXMnICUgZGF0YSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmR0aW1lID0gdGltZS50aW1lKCkgKyB0aW1lb3V0CkBAIC0yMzMsNyArMjM0LDcgQEAKICAgICAgICAgICAgICAgICBvdXRwdXQgKz0gbGFzdGxpbmUKIAogICAgICAgICBlbHNlOgotICAgICAgICAgICAgb3V0cHV0ID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSgpWzBdLmRlY29kZSgidXRmLTgiKQorICAgICAgICAgICAgb3V0cHV0ID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSgpWzBdLmRlY29kZSgidXRmLTgiLCBlcnJvcnM9J3JlcGxhY2UnKQogICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCdEYXRhIGZyb20gU1NIIGNhbGw6ICVzJyAlIG91dHB1dC5yc3RyaXAoKSkKIAogICAgIG9wdGlvbnMgPSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL3Rlc3RzL2Nhc2VzL2xvYWRlci90aHJlYWRlZC90aHJlYWRlZC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGVzdHMvY2FzZXMvbG9hZGVyL3RocmVhZGVkL3RocmVhZGVkLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmZTRjYjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL3Rlc3RzL2Nhc2VzL2xvYWRlci90aHJlYWRlZC90aHJlYWRlZC5weQpAQCAtMCwwICsxLDEyIEBACisjIENvcHlyaWdodCAoQykgMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbgorIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCkKKworZnJvbSBvZXFhLmNvcmUuY2FzZSBpbXBvcnQgT0VUZXN0Q2FzZQorCitjbGFzcyBUaHJlYWRlZFRlc3QoT0VUZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfdGhyZWFkZWRfbm9fZGVwZW5kcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFRydWUsIG1zZz0nSG93IGlzIHRoaXMgcG9zc2libGU/JykKKworY2xhc3MgVGhyZWFkZWRUZXN0MihPRVRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF90aHJlYWRlZF9zYW1lX21vZHVsZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFRydWUsIG1zZz0nSG93IGlzIHRoaXMgcG9zc2libGU/JykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGVzdHMvY2FzZXMvbG9hZGVyL3RocmVhZGVkL3RocmVhZGVkX2Fsb25lLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS90ZXN0cy9jYXNlcy9sb2FkZXIvdGhyZWFkZWQvdGhyZWFkZWRfYWxvbmUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTA1ZjM5NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGVzdHMvY2FzZXMvbG9hZGVyL3RocmVhZGVkL3RocmVhZGVkX2Fsb25lLnB5CkBAIC0wLDAgKzEsOCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTcgSW50ZWwgQ29ycG9yYXRpb24KKyMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQpCisKK2Zyb20gb2VxYS5jb3JlLmNhc2UgaW1wb3J0IE9FVGVzdENhc2UKKworY2xhc3MgVGhyZWFkZWRUZXN0QWxvbmUoT0VUZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfdGhyZWFkZWRfYWxvbmUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShUcnVlLCBtc2c9J0hvdyBpcyB0aGlzIHBvc3NpYmxlPycpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL3Rlc3RzL2Nhc2VzL2xvYWRlci90aHJlYWRlZC90aHJlYWRlZF9kZXBlbmRzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS90ZXN0cy9jYXNlcy9sb2FkZXIvdGhyZWFkZWQvdGhyZWFkZWRfZGVwZW5kcy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYzE1OGQzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS90ZXN0cy9jYXNlcy9sb2FkZXIvdGhyZWFkZWQvdGhyZWFkZWRfZGVwZW5kcy5weQpAQCAtMCwwICsxLDEwIEBACisjIENvcHlyaWdodCAoQykgMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbgorIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCkKKworZnJvbSBvZXFhLmNvcmUuY2FzZSBpbXBvcnQgT0VUZXN0Q2FzZQorZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLmRlcGVuZHMgaW1wb3J0IE9FVGVzdERlcGVuZHMKKworY2xhc3MgVGhyZWFkZWRUZXN0MyhPRVRlc3RDYXNlKToKKyAgICBAT0VUZXN0RGVwZW5kcyhbJ3RocmVhZGVkLlRocmVhZGVkVGVzdC50ZXN0X3RocmVhZGVkX25vX2RlcGVuZHMnXSkKKyAgICBkZWYgdGVzdF90aHJlYWRlZF9kZXBlbmRzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoVHJ1ZSwgbXNnPSdIb3cgaXMgdGhpcyBwb3NzaWJsZT8nKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS90ZXN0cy9jYXNlcy9sb2FkZXIvdGhyZWFkZWQvdGhyZWFkZWRfbW9kdWxlLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS90ZXN0cy9jYXNlcy9sb2FkZXIvdGhyZWFkZWQvdGhyZWFkZWRfbW9kdWxlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzZDE3ZTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL3Rlc3RzL2Nhc2VzL2xvYWRlci90aHJlYWRlZC90aHJlYWRlZF9tb2R1bGUucHkKQEAgLTAsMCArMSwxMiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTcgSW50ZWwgQ29ycG9yYXRpb24KKyMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQpCisKK2Zyb20gb2VxYS5jb3JlLmNhc2UgaW1wb3J0IE9FVGVzdENhc2UKKworY2xhc3MgVGhyZWFkZWRUZXN0TW9kdWxlKE9FVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X3RocmVhZGVkX21vZHVsZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFRydWUsIG1zZz0nSG93IGlzIHRoaXMgcG9zc2libGU/JykKKworY2xhc3MgVGhyZWFkZWRUZXN0TW9kdWxlMihPRVRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF90aHJlYWRlZF9tb2R1bGUyKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoVHJ1ZSwgbXNnPSdIb3cgaXMgdGhpcyBwb3NzaWJsZT8nKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS90ZXN0cy9jb21tb24ucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL3Rlc3RzL2NvbW1vbi5weQppbmRleCA1MmIxOGExLi4xOTMyMzIzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL3Rlc3RzL2NvbW1vbi5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL3Rlc3RzL2NvbW1vbi5weQpAQCAtMzMsMyArMzMsMTMgQEAKICAgICAgICAgdGMubG9hZFRlc3RzKHNlbGYuY2FzZXNfcGF0aCwgbW9kdWxlcz1tb2R1bGVzLCB0ZXN0cz10ZXN0cywKICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcnM9ZmlsdGVycykKICAgICAgICAgcmV0dXJuIHRjCisKKyAgICBkZWYgX3Rlc3RMb2FkZXJUaHJlYWRlZChzZWxmLCBkPXt9LCBtb2R1bGVzPVtdLAorICAgICAgICAgICAgdGVzdHM9W10sIGZpbHRlcnM9e30pOgorICAgICAgICBmcm9tIG9lcWEuY29yZS50aHJlYWRlZCBpbXBvcnQgT0VUZXN0Q29udGV4dFRocmVhZGVkCisKKyAgICAgICAgdGMgPSBPRVRlc3RDb250ZXh0VGhyZWFkZWQoZCwgc2VsZi5sb2dnZXIpCisgICAgICAgIHRjLmxvYWRUZXN0cyhzZWxmLmNhc2VzX3BhdGgsIG1vZHVsZXM9bW9kdWxlcywgdGVzdHM9dGVzdHMsCisgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzPWZpbHRlcnMpCisKKyAgICAgICAgcmV0dXJuIHRjCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL3Rlc3RzL3Rlc3RfZGVjb3JhdG9ycy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGVzdHMvdGVzdF9kZWNvcmF0b3JzLnB5CmluZGV4IGY3ZDExZTguLmNmOTllMGQgMTAwNzU1Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGVzdHMvdGVzdF9kZWNvcmF0b3JzLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGVzdHMvdGVzdF9kZWNvcmF0b3JzLnB5CkBAIC0xMzEsNSArMTMxLDE3IEBACiAgICAgICAgIG1zZyA9ICJPRVRlc3RUaW1lb3V0IGRpZG4ndCByZXN0b3JlIFNJR0FMUk0iCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoYWxhcm1fc2lnbmFsLCBzaWduYWwuZ2V0c2lnbmFsKHNpZ25hbC5TSUdBTFJNKSwgbXNnPW1zZykKIAorICAgIGRlZiB0ZXN0X3RpbWVvdXRfdGhyZWFkKHNlbGYpOgorICAgICAgICB0ZXN0cyA9IFsndGltZW91dC5UaW1lb3V0VGVzdC50ZXN0VGltZW91dFBhc3MnXQorICAgICAgICBtc2cgPSAnRmFpbGVkIHRvIHJ1biB0ZXN0IHVzaW5nIE9FVGVzdFRpbWVvdXQnCisgICAgICAgIHRjID0gc2VsZi5fdGVzdExvYWRlclRocmVhZGVkKG1vZHVsZXM9c2VsZi5tb2R1bGVzLCB0ZXN0cz10ZXN0cykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRjLnJ1blRlc3RzKCkud2FzU3VjY2Vzc2Z1bCgpLCBtc2c9bXNnKQorCisgICAgZGVmIHRlc3RfdGltZW91dF90aHJlYWRlZF9mYWlsKHNlbGYpOgorICAgICAgICB0ZXN0cyA9IFsndGltZW91dC5UaW1lb3V0VGVzdC50ZXN0VGltZW91dEZhaWwnXQorICAgICAgICBtc2cgPSAiT0VUZXN0VGltZW91dCB0ZXN0IGRpZG4ndCB0aW1lb3V0IGFzIGV4cGVjdGVkIgorICAgICAgICB0YyA9IHNlbGYuX3Rlc3RMb2FkZXJUaHJlYWRlZChtb2R1bGVzPXNlbGYubW9kdWxlcywgdGVzdHM9dGVzdHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodGMucnVuVGVzdHMoKS53YXNTdWNjZXNzZnVsKCksIG1zZz1tc2cpCisKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL3Rlc3RzL3Rlc3RfbG9hZGVyLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvY29yZS90ZXN0cy90ZXN0X2xvYWRlci5weQppbmRleCBiNzliOGJhLi5lMGQ5MTdkIDEwMDc1NQotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL3Rlc3RzL3Rlc3RfbG9hZGVyLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGVzdHMvdGVzdF9sb2FkZXIucHkKQEAgLTEsNiArMSw2IEBACiAjIS91c3IvYmluL2VudiBweXRob24zCiAKLSMgQ29weXJpZ2h0IChDKSAyMDE2IEludGVsIENvcnBvcmF0aW9uCisjIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEludGVsIENvcnBvcmF0aW9uCiAjIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUKQogCiBpbXBvcnQgb3MKQEAgLTgyLDUgKzgyLDMzIEBACiAgICAgICAgIG1zZyA9ICdFeHBlY3RlZCBtb2R1bGVzIGZyb20gdHdvIGRpZmZlcmVudCBwYXRocycKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGVzLCBleHBlY3RlZF9tb2R1bGVzLCBtc2c9bXNnKQogCisgICAgZGVmIHRlc3RfbG9hZGVyX3RocmVhZGVkKHNlbGYpOgorICAgICAgICBjYXNlc19wYXRoID0gc2VsZi5jYXNlc19wYXRoCisKKyAgICAgICAgc2VsZi5jYXNlc19wYXRoID0gW29zLnBhdGguam9pbihzZWxmLmNhc2VzX3BhdGgsICdsb2FkZXInLCAndGhyZWFkZWQnKV0KKworICAgICAgICB0YyA9IHNlbGYuX3Rlc3RMb2FkZXJUaHJlYWRlZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHRjLnN1aXRlcyksIDMsICJFeHBlY3RlZCB0byBiZSAzIHN1aXRlcyIpCisKKyAgICAgICAgY2FzZV9pZHMgPSBbJ3RocmVhZGVkLlRocmVhZGVkVGVzdC50ZXN0X3RocmVhZGVkX25vX2RlcGVuZHMnLAorICAgICAgICAgICAgICAgICd0aHJlYWRlZC5UaHJlYWRlZFRlc3QyLnRlc3RfdGhyZWFkZWRfc2FtZV9tb2R1bGUnLAorICAgICAgICAgICAgICAgICd0aHJlYWRlZF9kZXBlbmRzLlRocmVhZGVkVGVzdDMudGVzdF90aHJlYWRlZF9kZXBlbmRzJ10KKyAgICAgICAgZm9yIGNhc2UgaW4gdGMuc3VpdGVzWzBdLl90ZXN0czoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FzZS5pZCgpLAorICAgICAgICAgICAgICAgICAgICBjYXNlX2lkc1t0Yy5zdWl0ZXNbMF0uX3Rlc3RzLmluZGV4KGNhc2UpXSkKKworICAgICAgICBjYXNlX2lkcyA9IFsndGhyZWFkZWRfYWxvbmUuVGhyZWFkZWRUZXN0QWxvbmUudGVzdF90aHJlYWRlZF9hbG9uZSddCisgICAgICAgIGZvciBjYXNlIGluIHRjLnN1aXRlc1sxXS5fdGVzdHM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhc2UuaWQoKSwKKyAgICAgICAgICAgICAgICAgICAgY2FzZV9pZHNbdGMuc3VpdGVzWzFdLl90ZXN0cy5pbmRleChjYXNlKV0pCisKKyAgICAgICAgY2FzZV9pZHMgPSBbJ3RocmVhZGVkX21vZHVsZS5UaHJlYWRlZFRlc3RNb2R1bGUudGVzdF90aHJlYWRlZF9tb2R1bGUnLAorICAgICAgICAgICAgICAgICd0aHJlYWRlZF9tb2R1bGUuVGhyZWFkZWRUZXN0TW9kdWxlMi50ZXN0X3RocmVhZGVkX21vZHVsZTInXQorICAgICAgICBmb3IgY2FzZSBpbiB0Yy5zdWl0ZXNbMl0uX3Rlc3RzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYXNlLmlkKCksCisgICAgICAgICAgICAgICAgICAgIGNhc2VfaWRzW3RjLnN1aXRlc1syXS5fdGVzdHMuaW5kZXgoY2FzZSldKQorCisgICAgICAgIHNlbGYuY2FzZXNfcGF0aCA9IGNhc2VzX3BhdGgKKwogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGhyZWFkZWQucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL3RocmVhZGVkLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjYWZlMDMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9jb3JlL3RocmVhZGVkLnB5CkBAIC0wLDAgKzEsMjc1IEBACisjIENvcHlyaWdodCAoQykgMjAxNyBJbnRlbCBDb3Jwb3JhdGlvbgorIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCkKKworaW1wb3J0IHRocmVhZGluZworaW1wb3J0IG11bHRpcHJvY2Vzc2luZworaW1wb3J0IHF1ZXVlCitpbXBvcnQgdGltZQorCitmcm9tIHVuaXR0ZXN0LnN1aXRlIGltcG9ydCBUZXN0U3VpdGUKKworZnJvbSBvZXFhLmNvcmUubG9hZGVyIGltcG9ydCBPRVRlc3RMb2FkZXIKK2Zyb20gb2VxYS5jb3JlLnJ1bm5lciBpbXBvcnQgT0VTdHJlYW1Mb2dnZXIsIE9FVGVzdFJlc3VsdCwgT0VUZXN0UnVubmVyCitmcm9tIG9lcWEuY29yZS5jb250ZXh0IGltcG9ydCBPRVRlc3RDb250ZXh0CisKK2NsYXNzIE9FVGVzdExvYWRlclRocmVhZGVkKE9FVGVzdExvYWRlcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRjLCBtb2R1bGVfcGF0aHMsIG1vZHVsZXMsIHRlc3RzLCBtb2R1bGVzX3JlcXVpcmVkLAorICAgICAgICAgICAgZmlsdGVycywgcHJvY2Vzc19udW09MCwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgc3VwZXIoT0VUZXN0TG9hZGVyVGhyZWFkZWQsIHNlbGYpLl9faW5pdF9fKHRjLCBtb2R1bGVfcGF0aHMsIG1vZHVsZXMsCisgICAgICAgICAgICAgICAgdGVzdHMsIG1vZHVsZXNfcmVxdWlyZWQsIGZpbHRlcnMsICphcmdzLCAqKmt3YXJncykKKworICAgICAgICBzZWxmLnByb2Nlc3NfbnVtID0gcHJvY2Vzc19udW0KKworICAgIGRlZiBkaXNjb3ZlcihzZWxmKToKKyAgICAgICAgc3VpdGUgPSBzdXBlcihPRVRlc3RMb2FkZXJUaHJlYWRlZCwgc2VsZikuZGlzY292ZXIoKQorCisgICAgICAgIGlmIHNlbGYucHJvY2Vzc19udW0gPD0gMDoKKyAgICAgICAgICAgIHNlbGYucHJvY2Vzc19udW0gPSBtaW4obXVsdGlwcm9jZXNzaW5nLmNwdV9jb3VudCgpLAorICAgICAgICAgICAgICAgICAgICBsZW4oc3VpdGUuX3Rlc3RzKSkKKworICAgICAgICBzdWl0ZXMgPSBbXQorICAgICAgICBmb3IgXyBpbiByYW5nZShzZWxmLnByb2Nlc3NfbnVtKToKKyAgICAgICAgICAgIHN1aXRlcy5hcHBlbmQoc2VsZi5zdWl0ZUNsYXNzKCkpCisKKyAgICAgICAgZGVmIF9zZWFyY2hfZm9yX21vZHVsZV9pZHgoc3VpdGVzLCBjYXNlKToKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgICAgIENhc2VzIGluIHRoZSBzYW1lIG1vZHVsZSBuZWVkcyB0byBiZSBydW4KKyAgICAgICAgICAgICAgICBpbiB0aGUgc2FtZSB0aHJlYWQgYmVjYXVzZSBQeVVuaXQga2VlcHMgdHJhY2sKKyAgICAgICAgICAgICAgICBvZiBzZXRVcHtNb2R1bGUsIENsYXNzLH0gYW5kIHRlYXJEb3due01vZHVsZSwgQ2xhc3MsfS4KKyAgICAgICAgICAgICIiIgorCisgICAgICAgICAgICBmb3IgaWR4IGluIHJhbmdlKHNlbGYucHJvY2Vzc19udW0pOgorICAgICAgICAgICAgICAgIHN1aXRlID0gc3VpdGVzW2lkeF0KKyAgICAgICAgICAgICAgICBmb3IgYyBpbiBzdWl0ZS5fdGVzdHM6CisgICAgICAgICAgICAgICAgICAgIGlmIGNhc2UuX19tb2R1bGVfXyA9PSBjLl9fbW9kdWxlX186CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWR4CisKKyAgICAgICAgICAgIHJldHVybiAtMQorCisgICAgICAgIGRlZiBfc2VhcmNoX2Zvcl9kZXBlbmRfaWR4KHN1aXRlcywgZGVwZW5kcyk6CisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgICAgICBEZXBlbmRlbmN5IGNhc2VzIG5lZWRzIHRvIGJlIHJ1biBpbiB0aGUgc2FtZQorICAgICAgICAgICAgICAgIHRocmVhZCwgYmVjYXVzZSBPRVFBIGZyYW1ld29yayBsb29rIGF0IHRoZSBzdGF0ZQorICAgICAgICAgICAgICAgIG9mIGRlcGVuZGFudCB0ZXN0IHRvIGZpZ3VyZSBvdXQgaWYgc2tpcCBvciBub3QuCisgICAgICAgICAgICAiIiIKKworICAgICAgICAgICAgZm9yIGlkeCBpbiByYW5nZShzZWxmLnByb2Nlc3NfbnVtKToKKyAgICAgICAgICAgICAgICBzdWl0ZSA9IHN1aXRlc1tpZHhdCisKKyAgICAgICAgICAgICAgICBmb3IgY2FzZSBpbiBzdWl0ZS5fdGVzdHM6CisgICAgICAgICAgICAgICAgICAgIGlmIGNhc2UuaWQoKSBpbiBkZXBlbmRzOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlkeAorICAgICAgICAgICAgcmV0dXJuIC0xCisKKyAgICAgICAgZGVmIF9nZXRfYmVzdF9pZHgoc3VpdGVzKToKKyAgICAgICAgICAgIHNpemVzID0gW2xlbihzdWl0ZS5fdGVzdHMpIGZvciBzdWl0ZSBpbiBzdWl0ZXNdCisgICAgICAgICAgICByZXR1cm4gc2l6ZXMuaW5kZXgobWluKHNpemVzKSkKKworICAgICAgICBkZWYgX2ZpbGxfc3VpdGVzKHN1aXRlKToKKyAgICAgICAgICAgIGlkeCA9IC0xCisgICAgICAgICAgICBmb3IgY2FzZSBpbiBzdWl0ZToKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGNhc2UsIFRlc3RTdWl0ZSk6CisgICAgICAgICAgICAgICAgICAgIF9maWxsX3N1aXRlcyhjYXNlKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGlkeCA9IF9zZWFyY2hfZm9yX21vZHVsZV9pZHgoc3VpdGVzLCBjYXNlKQorCisgICAgICAgICAgICAgICAgICAgIGRlcGVuZHMgPSB7fQorICAgICAgICAgICAgICAgICAgICBpZiAnZGVwZW5kcycgaW4gc2VsZi50Yy5fcmVnaXN0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRzID0gc2VsZi50Yy5fcmVnaXN0cnlbJ2RlcGVuZHMnXQorCisgICAgICAgICAgICAgICAgICAgIGlmIGlkeCA9PSAtMSBhbmQgY2FzZS5pZCgpIGluIGRlcGVuZHM6CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlX2RlcGVuZHMgPSBkZXBlbmRzW2Nhc2UuaWQoKV0gCisgICAgICAgICAgICAgICAgICAgICAgICBpZHggPSBfc2VhcmNoX2Zvcl9kZXBlbmRfaWR4KHN1aXRlcywgY2FzZV9kZXBlbmRzKQorCisgICAgICAgICAgICAgICAgICAgIGlmIGlkeCA9PSAtMToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlkeCA9IF9nZXRfYmVzdF9pZHgoc3VpdGVzKQorCisgICAgICAgICAgICAgICAgICAgIHN1aXRlc1tpZHhdLmFkZFRlc3QoY2FzZSkKKyAgICAgICAgX2ZpbGxfc3VpdGVzKHN1aXRlKQorCisgICAgICAgIHN1aXRlc190bXAgPSBzdWl0ZXMKKyAgICAgICAgc3VpdGVzID0gW10KKyAgICAgICAgZm9yIHN1aXRlIGluIHN1aXRlc190bXA6CisgICAgICAgICAgICBpZiBsZW4oc3VpdGUuX3Rlc3RzKSA+IDA6CisgICAgICAgICAgICAgICAgc3VpdGVzLmFwcGVuZChzdWl0ZSkKKworICAgICAgICByZXR1cm4gc3VpdGVzCisKK2NsYXNzIE9FU3RyZWFtTG9nZ2VyVGhyZWFkZWQoT0VTdHJlYW1Mb2dnZXIpOgorICAgIF9sb2NrID0gdGhyZWFkaW5nLkxvY2soKQorICAgIGJ1ZmZlcnMgPSB7fQorCisgICAgZGVmIHdyaXRlKHNlbGYsIG1zZyk6CisgICAgICAgIHRpZCA9IHRocmVhZGluZy5nZXRfaWRlbnQoKQorCisgICAgICAgIGlmIG5vdCB0aWQgaW4gc2VsZi5idWZmZXJzOgorICAgICAgICAgICAgc2VsZi5idWZmZXJzW3RpZF0gPSAiIgorCisgICAgICAgIGlmIG1zZzoKKyAgICAgICAgICAgIHNlbGYuYnVmZmVyc1t0aWRdICs9IG1zZworCisgICAgZGVmIGZpbmlzaChzZWxmKToKKyAgICAgICAgdGlkID0gdGhyZWFkaW5nLmdldF9pZGVudCgpCisgICAgICAgIAorICAgICAgICBzZWxmLl9sb2NrLmFjcXVpcmUoKQorICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCdUSFJFQUQ6ICVkJyAlIHRpZCkKKyAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygnLScgKiA3MCkKKyAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi5idWZmZXJzW3RpZF0uc3BsaXQoJ1xuJyk6CisgICAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKGxpbmUpCisgICAgICAgIHNlbGYuX2xvY2sucmVsZWFzZSgpCisKK2NsYXNzIE9FVGVzdFJlc3VsdFRocmVhZGVkSW50ZXJuYWwoT0VUZXN0UmVzdWx0KToKKyAgICBkZWYgX3RjX21hcF9yZXN1bHRzKHNlbGYpOgorICAgICAgICB0aWQgPSB0aHJlYWRpbmcuZ2V0X2lkZW50KCkKKyAgICAgICAgCisgICAgICAgICMgUHlVbml0IGdlbmVyYXRlcyBhIHJlc3VsdCBmb3IgZXZlcnkgdGVzdCBtb2R1bGUgcnVuLCB0ZXN0CisgICAgICAgICMgaWYgdGhlIHRocmVhZCBhbHJlYWR5IGhhcyBhbiBlbnRyeSB0byBhdm9pZCBsb3NlIHRoZSBwcmV2aW91cworICAgICAgICAjIHRlc3QgbW9kdWxlIHJlc3VsdHMuCisgICAgICAgIGlmIG5vdCB0aWQgaW4gc2VsZi50Yy5fcmVzdWx0czoKKyAgICAgICAgICAgIHNlbGYudGMuX3Jlc3VsdHNbdGlkXSA9IHt9CisgICAgICAgICAgICBzZWxmLnRjLl9yZXN1bHRzW3RpZF1bJ2ZhaWx1cmVzJ10gPSBzZWxmLmZhaWx1cmVzCisgICAgICAgICAgICBzZWxmLnRjLl9yZXN1bHRzW3RpZF1bJ2Vycm9ycyddID0gc2VsZi5lcnJvcnMKKyAgICAgICAgICAgIHNlbGYudGMuX3Jlc3VsdHNbdGlkXVsnc2tpcHBlZCddID0gc2VsZi5za2lwcGVkCisgICAgICAgICAgICBzZWxmLnRjLl9yZXN1bHRzW3RpZF1bJ2V4cGVjdGVkRmFpbHVyZXMnXSA9IHNlbGYuZXhwZWN0ZWRGYWlsdXJlcworCitjbGFzcyBPRVRlc3RSZXN1bHRUaHJlYWRlZChvYmplY3QpOgorICAgIF9yZXN1bHRzID0ge30KKyAgICBfbG9jayA9IHRocmVhZGluZy5Mb2NrKCkKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0Yyk6CisgICAgICAgIHNlbGYudGMgPSB0YworCisgICAgZGVmIF9maWxsX3RjX3Jlc3VsdHMoc2VsZik6CisgICAgICAgIHRpZHMgPSBsaXN0KHNlbGYudGMuX3Jlc3VsdHMua2V5cygpKQorICAgICAgICBmaWVsZHMgPSBbJ2ZhaWx1cmVzJywgJ2Vycm9ycycsICdza2lwcGVkJywgJ2V4cGVjdGVkRmFpbHVyZXMnXQorCisgICAgICAgIGZvciB0aWQgaW4gdGlkczoKKyAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYudGMuX3Jlc3VsdHNbdGlkXQorICAgICAgICAgICAgZm9yIGZpZWxkIGluIGZpZWxkczoKKyAgICAgICAgICAgICAgICBpZiBub3QgZmllbGQgaW4gc2VsZi50Yy5fcmVzdWx0czoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi50Yy5fcmVzdWx0c1tmaWVsZF0gPSBbXQorICAgICAgICAgICAgICAgIHNlbGYudGMuX3Jlc3VsdHNbZmllbGRdLmV4dGVuZChyZXN1bHRbZmllbGRdKQorCisgICAgZGVmIGFkZFJlc3VsdChzZWxmLCByZXN1bHQsIHJ1bl9zdGFydF90aW1lLCBydW5fZW5kX3RpbWUpOgorICAgICAgICB0aWQgPSB0aHJlYWRpbmcuZ2V0X2lkZW50KCkKKworICAgICAgICBzZWxmLl9sb2NrLmFjcXVpcmUoKQorICAgICAgICBzZWxmLl9yZXN1bHRzW3RpZF0gPSB7fQorICAgICAgICBzZWxmLl9yZXN1bHRzW3RpZF1bJ3Jlc3VsdCddID0gcmVzdWx0CisgICAgICAgIHNlbGYuX3Jlc3VsdHNbdGlkXVsncnVuX3N0YXJ0X3RpbWUnXSA9IHJ1bl9zdGFydF90aW1lIAorICAgICAgICBzZWxmLl9yZXN1bHRzW3RpZF1bJ3J1bl9lbmRfdGltZSddID0gcnVuX2VuZF90aW1lIAorICAgICAgICBzZWxmLl9yZXN1bHRzW3RpZF1bJ3Jlc3VsdCddID0gcmVzdWx0CisgICAgICAgIHNlbGYuX2xvY2sucmVsZWFzZSgpCisKKyAgICBkZWYgd2FzU3VjY2Vzc2Z1bChzZWxmKToKKyAgICAgICAgd2FzU3VjY2Vzc2Z1bCA9IFRydWUKKyAgICAgICAgZm9yIHRpZCBpbiBzZWxmLl9yZXN1bHRzLmtleXMoKToKKyAgICAgICAgICAgIHdhc1N1Y2Nlc3NmdWwgPSB3YXNTdWNjZXNzZnVsIGFuZCBcCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Jlc3VsdHNbdGlkXVsncmVzdWx0J10ud2FzU3VjY2Vzc2Z1bCgpCisgICAgICAgIHJldHVybiB3YXNTdWNjZXNzZnVsCisKKyAgICBkZWYgc3RvcChzZWxmKToKKyAgICAgICAgZm9yIHRpZCBpbiBzZWxmLl9yZXN1bHRzLmtleXMoKToKKyAgICAgICAgICAgIHNlbGYuX3Jlc3VsdHNbdGlkXVsncmVzdWx0J10uc3RvcCgpCisKKyAgICBkZWYgbG9nU3VtbWFyeShzZWxmLCBjb21wb25lbnQsIGNvbnRleHRfbXNnPScnKToKKyAgICAgICAgZWxhcHNlZF90aW1lID0gKHNlbGYudGMuX3J1bl9lbmRfdGltZSAtIHNlbGYudGMuX3J1bl9zdGFydF90aW1lKQorCisgICAgICAgIHNlbGYudGMubG9nZ2VyLmluZm8oIlNVTU1BUlk6IikKKyAgICAgICAgc2VsZi50Yy5sb2dnZXIuaW5mbygiJXMgKCVzKSAtIFJhbiAlZCB0ZXN0cyBpbiAlLjNmcyIgJSAoY29tcG9uZW50LAorICAgICAgICAgICAgY29udGV4dF9tc2csIGxlbihzZWxmLnRjLl9yZWdpc3RyeVsnY2FzZXMnXSksIGVsYXBzZWRfdGltZSkpCisgICAgICAgIGlmIHNlbGYud2FzU3VjY2Vzc2Z1bCgpOgorICAgICAgICAgICAgbXNnID0gIiVzIC0gT0sgLSBBbGwgcmVxdWlyZWQgdGVzdHMgcGFzc2VkIiAlIGNvbXBvbmVudAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbXNnID0gIiVzIC0gRkFJTCAtIFJlcXVpcmVkIHRlc3RzIGZhaWxlZCIgJSBjb21wb25lbnQKKyAgICAgICAgc2VsZi50Yy5sb2dnZXIuaW5mbyhtc2cpCisKKyAgICBkZWYgbG9nRGV0YWlscyhzZWxmKToKKyAgICAgICAgaWYgbGlzdChzZWxmLl9yZXN1bHRzKToKKyAgICAgICAgICAgIHRpZCA9IGxpc3Qoc2VsZi5fcmVzdWx0cylbMF0KKyAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuX3Jlc3VsdHNbdGlkXVsncmVzdWx0J10KKyAgICAgICAgICAgIHJlc3VsdC5sb2dEZXRhaWxzKCkKKworY2xhc3MgX1dvcmtlcih0aHJlYWRpbmcuVGhyZWFkKToKKyAgICAiIiJUaHJlYWQgZXhlY3V0aW5nIHRhc2tzIGZyb20gYSBnaXZlbiB0YXNrcyBxdWV1ZSIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0YXNrcywgcmVzdWx0LCBzdHJlYW0pOgorICAgICAgICB0aHJlYWRpbmcuVGhyZWFkLl9faW5pdF9fKHNlbGYpCisgICAgICAgIHNlbGYudGFza3MgPSB0YXNrcworCisgICAgICAgIHNlbGYucmVzdWx0ID0gcmVzdWx0CisgICAgICAgIHNlbGYuc3RyZWFtID0gc3RyZWFtCisKKyAgICBkZWYgcnVuKHNlbGYpOgorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGZ1bmMsIGFyZ3MsIGthcmdzID0gc2VsZi50YXNrcy5nZXQoYmxvY2s9RmFsc2UpCisgICAgICAgICAgICBleGNlcHQgcXVldWUuRW1wdHk6CisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJ1bl9zdGFydF90aW1lID0gdGltZS50aW1lKCkKKyAgICAgICAgICAgICAgICByYyA9IGZ1bmMoKmFyZ3MsICoqa2FyZ3MpCisgICAgICAgICAgICAgICAgcnVuX2VuZF90aW1lID0gdGltZS50aW1lKCkKKyAgICAgICAgICAgICAgICBzZWxmLnJlc3VsdC5hZGRSZXN1bHQocmMsIHJ1bl9zdGFydF90aW1lLCBydW5fZW5kX3RpbWUpCisgICAgICAgICAgICAgICAgc2VsZi5zdHJlYW0uZmluaXNoKCkKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICBwcmludChlKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBzZWxmLnRhc2tzLnRhc2tfZG9uZSgpCisKK2NsYXNzIF9UaHJlYWRlZFBvb2w6CisgICAgIiIiUG9vbCBvZiB0aHJlYWRzIGNvbnN1bWluZyB0YXNrcyBmcm9tIGEgcXVldWUiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbnVtX3dvcmtlcnMsIG51bV90YXNrcywgc3RyZWFtPU5vbmUsIHJlc3VsdD1Ob25lKToKKyAgICAgICAgc2VsZi50YXNrcyA9IHF1ZXVlLlF1ZXVlKG51bV90YXNrcykKKyAgICAgICAgc2VsZi53b3JrZXJzID0gW10KKworICAgICAgICBmb3IgXyBpbiByYW5nZShudW1fd29ya2Vycyk6CisgICAgICAgICAgICB3b3JrZXIgPSBfV29ya2VyKHNlbGYudGFza3MsIHJlc3VsdCwgc3RyZWFtKQorICAgICAgICAgICAgc2VsZi53b3JrZXJzLmFwcGVuZCh3b3JrZXIpCisKKyAgICBkZWYgc3RhcnQoc2VsZik6CisgICAgICAgIGZvciB3b3JrZXIgaW4gc2VsZi53b3JrZXJzOgorICAgICAgICAgICAgd29ya2VyLnN0YXJ0KCkKKworICAgIGRlZiBhZGRfdGFzayhzZWxmLCBmdW5jLCAqYXJncywgKiprYXJncyk6CisgICAgICAgICIiIkFkZCBhIHRhc2sgdG8gdGhlIHF1ZXVlIiIiCisgICAgICAgIHNlbGYudGFza3MucHV0KChmdW5jLCBhcmdzLCBrYXJncykpCisKKyAgICBkZWYgd2FpdF9jb21wbGV0aW9uKHNlbGYpOgorICAgICAgICAiIiJXYWl0IGZvciBjb21wbGV0aW9uIG9mIGFsbCB0aGUgdGFza3MgaW4gdGhlIHF1ZXVlIiIiCisgICAgICAgIHNlbGYudGFza3Muam9pbigpCisgICAgICAgIGZvciB3b3JrZXIgaW4gc2VsZi53b3JrZXJzOgorICAgICAgICAgICAgd29ya2VyLmpvaW4oKQorCitjbGFzcyBPRVRlc3RSdW5uZXJUaHJlYWRlZChPRVRlc3RSdW5uZXIpOgorICAgIHN0cmVhbUxvZ2dlckNsYXNzID0gT0VTdHJlYW1Mb2dnZXJUaHJlYWRlZAorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRjLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBzdXBlcihPRVRlc3RSdW5uZXJUaHJlYWRlZCwgc2VsZikuX19pbml0X18odGMsICphcmdzLCAqKmt3YXJncykKKyAgICAgICAgc2VsZi5yZXN1bHRjbGFzcyA9IE9FVGVzdFJlc3VsdFRocmVhZGVkSW50ZXJuYWwgIyBYWFg6IFhNTCByZXBvcnRpbmcgb3ZlcnJpZGVzIGF0IF9faW5pdF9fCisKKyAgICBkZWYgcnVuKHNlbGYsIHN1aXRlcyk6CisgICAgICAgIHJlc3VsdCA9IE9FVGVzdFJlc3VsdFRocmVhZGVkKHNlbGYudGMpCisKKyAgICAgICAgcG9vbCA9IF9UaHJlYWRlZFBvb2wobGVuKHN1aXRlcyksIGxlbihzdWl0ZXMpLCBzdHJlYW09c2VsZi5zdHJlYW0sCisgICAgICAgICAgICAgICAgcmVzdWx0PXJlc3VsdCkKKyAgICAgICAgZm9yIHMgaW4gc3VpdGVzOgorICAgICAgICAgICAgcG9vbC5hZGRfdGFzayhzdXBlcihPRVRlc3RSdW5uZXJUaHJlYWRlZCwgc2VsZikucnVuLCBzKQorICAgICAgICBwb29sLnN0YXJ0KCkKKyAgICAgICAgcG9vbC53YWl0X2NvbXBsZXRpb24oKQorICAgICAgICByZXN1bHQuX2ZpbGxfdGNfcmVzdWx0cygpCisKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCitjbGFzcyBPRVRlc3RDb250ZXh0VGhyZWFkZWQoT0VUZXN0Q29udGV4dCk6CisgICAgbG9hZGVyQ2xhc3MgPSBPRVRlc3RMb2FkZXJUaHJlYWRlZAorICAgIHJ1bm5lckNsYXNzID0gT0VUZXN0UnVubmVyVGhyZWFkZWQKKworICAgIGRlZiBsb2FkVGVzdHMoc2VsZiwgbW9kdWxlX3BhdGhzLCBtb2R1bGVzPVtdLCB0ZXN0cz1bXSwKKyAgICAgICAgICAgIG1vZHVsZXNfbWFuaWZlc3Q9IiIsIG1vZHVsZXNfcmVxdWlyZWQ9W10sIGZpbHRlcnM9e30sIHByb2Nlc3NfbnVtPTApOgorICAgICAgICBpZiBtb2R1bGVzX21hbmlmZXN0OgorICAgICAgICAgICAgbW9kdWxlcyA9IHNlbGYuX3JlYWRfbW9kdWxlc19mcm9tX21hbmlmZXN0KG1vZHVsZXNfbWFuaWZlc3QpCisKKyAgICAgICAgc2VsZi5sb2FkZXIgPSBzZWxmLmxvYWRlckNsYXNzKHNlbGYsIG1vZHVsZV9wYXRocywgbW9kdWxlcywgdGVzdHMsCisgICAgICAgICAgICAgICAgbW9kdWxlc19yZXF1aXJlZCwgZmlsdGVycywgcHJvY2Vzc19udW0pCisgICAgICAgIHNlbGYuc3VpdGVzID0gc2VsZi5sb2FkZXIuZGlzY292ZXIoKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlLnB5CmluZGV4IGMxNDg1YzkuLjJmMTkwYWMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZS5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2UucHkKQEAgLTgsMTAgKzgsMTAgQEAKICAgICAjIHRhcmdldCBpbnN0YW5jZSBzZXQgYnkgT0VSdW50aW1lVGVzdExvYWRlci4KICAgICB0YXJnZXQgPSBOb25lCiAKLSAgICBkZWYgX29lU2V0VXAoc2VsZik6Ci0gICAgICAgIHN1cGVyKE9FUnVudGltZVRlc3RDYXNlLCBzZWxmKS5fb2VTZXRVcCgpCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzdXBlcihPRVJ1bnRpbWVUZXN0Q2FzZSwgc2VsZikuc2V0VXAoKQogICAgICAgICBpbnN0YWxsX3BhY2thZ2Uoc2VsZikKIAotICAgIGRlZiBfb2VUZWFyRG93bihzZWxmKToKLSAgICAgICAgc3VwZXIoT0VSdW50aW1lVGVzdENhc2UsIHNlbGYpLl9vZVRlYXJEb3duKCkKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHN1cGVyKE9FUnVudGltZVRlc3RDYXNlLCBzZWxmKS50ZWFyRG93bigpCiAgICAgICAgIHVuaW5zdGFsbF9wYWNrYWdlKHNlbGYpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL19wdGVzdC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvX3B0ZXN0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYWVkOWE1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvX3B0ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTAzICswLDAgQEAKLWltcG9ydCBvcwotaW1wb3J0IHNodXRpbAotaW1wb3J0IHN1YnByb2Nlc3MKLQotZnJvbSBvZXFhLnJ1bnRpbWUuY2FzZSBpbXBvcnQgT0VSdW50aW1lVGVzdENhc2UKLWZyb20gb2VxYS5jb3JlLmRlY29yYXRvci5kZXBlbmRzIGltcG9ydCBPRVRlc3REZXBlbmRzCi1mcm9tIG9lcWEuY29yZS5kZWNvcmF0b3Iub2VpZCBpbXBvcnQgT0VUZXN0SUQKLWZyb20gb2VxYS5jb3JlLmRlY29yYXRvci5kYXRhIGltcG9ydCBza2lwSWZOb3REYXRhVmFyLCBza2lwSWZOb3RGZWF0dXJlCi1mcm9tIG9lcWEucnVudGltZS5kZWNvcmF0b3IucGFja2FnZSBpbXBvcnQgT0VIYXNQYWNrYWdlCi0KLWZyb20gb2VxYS5ydW50aW1lLmNhc2VzLmRuZiBpbXBvcnQgRG5mVGVzdAotZnJvbSBvZXFhLnV0aWxzLmxvZ3BhcnNlciBpbXBvcnQgKgotZnJvbSBvZXFhLnV0aWxzLmh0dHBzZXJ2ZXIgaW1wb3J0IEhUVFBTZXJ2aWNlCi0KLWNsYXNzIFB0ZXN0UnVubmVyVGVzdChEbmZUZXN0KToKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBzZXRVcENsYXNzKGNscyk6Ci0gICAgICAgIHJwbV9kZXBsb3kgPSBvcy5wYXRoLmpvaW4oY2xzLnRjLnRkWydERVBMT1lfRElSJ10sICdycG0nKQotICAgICAgICBjbHMucmVwb19zZXJ2ZXIgPSBIVFRQU2VydmljZShycG1fZGVwbG95LCBjbHMudGMudGFyZ2V0LnNlcnZlcl9pcCkKLSAgICAgICAgY2xzLnJlcG9fc2VydmVyLnN0YXJ0KCkKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6Ci0gICAgICAgIGNscy5yZXBvX3NlcnZlci5zdG9wKCkKLQotICAgICMgYSBwdGVzdCBsb2cgcGFyc2VyCi0gICAgZGVmIHBhcnNlX3B0ZXN0KHNlbGYsIGxvZ2ZpbGUpOgotICAgICAgICBwYXJzZXIgPSBMcGFyc2VyKHRlc3RfMF9wYXNzX3JlZ2V4PSJeUEFTUzooLispIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0XzBfZmFpbF9yZWdleD0iXkZBSUw6KC4rKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbl8wX2JlZ2luX3JlZ2V4PSJeQkVHSU46IC4qLyguKykvcHRlc3QiLAotICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb25fMF9lbmRfcmVnZXg9Il5FTkQ6IC4qLyguKykvcHRlc3QiKQotICAgICAgICBwYXJzZXIuaW5pdCgpCi0gICAgICAgIHJlc3VsdCA9IFJlc3VsdCgpCi0KLSAgICAgICAgd2l0aCBvcGVuKGxvZ2ZpbGUsIGVycm9ycz0ncmVwbGFjZScpIGFzIGY6Ci0gICAgICAgICAgICBmb3IgbGluZSBpbiBmOgotICAgICAgICAgICAgICAgIHJlc3VsdF90dXBsZSA9IHBhcnNlci5wYXJzZV9saW5lKGxpbmUpCi0gICAgICAgICAgICAgICAgaWYgbm90IHJlc3VsdF90dXBsZToKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICByZXN1bHRfdHVwbGUgPSBsaW5lX3R5cGUsIGNhdGVnb3J5LCBzdGF0dXMsIG5hbWUgPSBwYXJzZXIucGFyc2VfbGluZShsaW5lKQotCi0gICAgICAgICAgICAgICAgaWYgbGluZV90eXBlID09ICdzZWN0aW9uJyBhbmQgc3RhdHVzID09ICdiZWdpbic6Ci0gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfc2VjdGlvbiA9IG5hbWUKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICAgICAgICAgIGlmIGxpbmVfdHlwZSA9PSAnc2VjdGlvbicgYW5kIHN0YXR1cyA9PSAnZW5kJzoKLSAgICAgICAgICAgICAgICAgICAgY3VycmVudF9zZWN0aW9uID0gTm9uZQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAgICAgICAgaWYgbGluZV90eXBlID09ICd0ZXN0JyBhbmQgc3RhdHVzID09ICdwYXNzJzoKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnN0b3JlKGN1cnJlbnRfc2VjdGlvbiwgbmFtZSwgc3RhdHVzKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAgICAgICAgaWYgbGluZV90eXBlID09ICd0ZXN0JyBhbmQgc3RhdHVzID09ICdmYWlsJzoKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnN0b3JlKGN1cnJlbnRfc2VjdGlvbiwgbmFtZSwgc3RhdHVzKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIHJlc3VsdC5zb3J0X3Rlc3RzKCkKLSAgICAgICAgcmV0dXJuIHJlc3VsdAotCi0gICAgZGVmIF9pbnN0YWxsX3B0ZXN0X3BhY2thZ2VzKHNlbGYpOgotICAgICAgICAjIEdldCBwdGVzdCBwYWNrYWdlcyB0aGF0IGNhbiBiZSBpbnN0YWxsZWQgaW4gdGhlIGltYWdlLgotICAgICAgICBwYWNrYWdlc19kaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi50Yy50ZFsnREVQTE9ZX0RJUiddLCAncnBtJykKLSAgICAgICAgcHRlc3RfcGtncyA9IFtwa2dbOnBrZy5maW5kKCctcHRlc3QnKSs2XQotICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgXywgXywgZmlsZW5hbWVzIGluIG9zLndhbGsocGFja2FnZXNfZGlyKQotICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgcGtnIGluIGZpbGVuYW1lcwotICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAncHRlc3QnIGluIHBrZwotICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgcGtnWzpwa2cuZmluZCgnLXB0ZXN0JyldIGluIHNlbGYudGMuaW1hZ2VfcGFja2FnZXNdCi0KLSAgICAgICAgcmVwb191cmwgPSAnaHR0cDovLyVzOiVzJyAlIChzZWxmLnRhcmdldC5zZXJ2ZXJfaXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXBvX3NlcnZlci5wb3J0KQotICAgICAgICBkbmZfb3B0aW9ucyA9ICgnLS1yZXBvZnJvbXBhdGg9b2UtcHRlc3QtcmVwbywlcyAnCi0gICAgICAgICAgICAgICAgICAgICAgICctLW5vZ3BnY2hlY2sgJwotICAgICAgICAgICAgICAgICAgICAgICAnaW5zdGFsbCAteScgJSByZXBvX3VybCkKLSAgICAgICAgc2VsZi5kbmYoJyVzICVzIHB0ZXN0LXJ1bm5lcicgJSAoZG5mX29wdGlvbnMsICcgJy5qb2luKHB0ZXN0X3BrZ3MpKSkKLQotICAgIEBza2lwSWZOb3RGZWF0dXJlKCdwYWNrYWdlLW1hbmFnZW1lbnQnLAotICAgICAgICAgICAgICAgICAgICAgICdUZXN0IHJlcXVpcmVzIHBhY2thZ2UtbWFuYWdlbWVudCB0byBiZSBpbiBESVNUUk9fRkVBVFVSRVMnKQotICAgIEBza2lwSWZOb3RGZWF0dXJlKCdwdGVzdCcsCi0gICAgICAgICAgICAgICAgICAgICAgJ1Rlc3QgcmVxdWlyZXMgcGFja2FnZS1tYW5hZ2VtZW50IHRvIGJlIGluIERJU1RST19GRUFUVVJFUycpCi0gICAgQHNraXBJZk5vdERhdGFWYXIoJ0lNQUdFX1BLR1RZUEUnLCAncnBtJywKLSAgICAgICAgICAgICAgICAgICAgICAnUlBNIGlzIG5vdCB0aGUgcHJpbWFyeSBwYWNrYWdlIG1hbmFnZXInKQotICAgIEBPRUhhc1BhY2thZ2UoWydkbmYnXSkKLSAgICBAT0VUZXN0RGVwZW5kcyhbJ3NzaC5TU0hUZXN0LnRlc3Rfc3NoJ10pCi0gICAgZGVmIHRlc3RfcHRlc3RydW5uZXIoc2VsZik6Ci0gICAgICAgIHNlbGYucHRlc3RfbG9nID0gb3MucGF0aC5qb2luKHNlbGYudGMudGRbJ1RFU1RfTE9HX0RJUiddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHRlc3QtJXMubG9nJyAlIHNlbGYudGMudGRbJ0RBVEVUSU1FJ10pCi0gICAgICAgIHNlbGYuX2luc3RhbGxfcHRlc3RfcGFja2FnZXMoKQotCi0gICAgICAgIChydW5uZXJzdGF0dXMsIHJlc3VsdCkgPSBzZWxmLnRhcmdldC5ydW4oJy91c3IvYmluL3B0ZXN0LXJ1bm5lciA+IC90bXAvcHRlc3QubG9nIDI+JjEnLCAwKQotICAgICAgICAjZXhpdCBjb2RlIGlzICE9MCBldmVuIGlmIHB0ZXN0LXJ1bm5lciBleGVjdXRlcyBiZWNhdXNlIHNvbWUgcHRlc3QgdGVzdHMgZmFpbC4KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJ1bm5lcnN0YXR1cyAhPSAxMjcsIG1zZz0iQ2Fubm90IGV4ZWN1dGUgcHRlc3QtcnVubmVyISIpCi0gICAgICAgIHNlbGYudGFyZ2V0LmNvcHlGcm9tKCcvdG1wL3B0ZXN0LmxvZycsIHNlbGYucHRlc3RfbG9nKQotICAgICAgICBzaHV0aWwuY29weWZpbGUoc2VsZi5wdGVzdF9sb2csICJwdGVzdC5sb2ciKQotCi0gICAgICAgIHJlc3VsdCA9IHNlbGYucGFyc2VfcHRlc3QoInB0ZXN0LmxvZyIpCi0gICAgICAgIGxvZ19yZXN1bHRzX3RvX2xvY2F0aW9uID0gIi4vcmVzdWx0cyIKLSAgICAgICAgaWYgb3MucGF0aC5leGlzdHMobG9nX3Jlc3VsdHNfdG9fbG9jYXRpb24pOgotICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShsb2dfcmVzdWx0c190b19sb2NhdGlvbikKLSAgICAgICAgb3MubWFrZWRpcnMobG9nX3Jlc3VsdHNfdG9fbG9jYXRpb24pCi0KLSAgICAgICAgcmVzdWx0LmxvZ19hc19maWxlcyhsb2dfcmVzdWx0c190b19sb2NhdGlvbiwgdGVzdF9zdGF0dXMgPSBbJ3Bhc3MnLCdmYWlsJ10pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2J1aWxkY3Bpby5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvYnVpbGRjcGlvLnB5CmluZGV4IDU5ZWRjOWMuLjc5YjIyZDAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvYnVpbGRjcGlvLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvYnVpbGRjcGlvLnB5CkBAIC05LDggKzksNyBAQAogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKLSAgICAgICAgdXJpID0gJ2h0dHBzOi8vZnRwLmdudS5vcmcvZ251L2NwaW8nCi0gICAgICAgIHVyaSA9ICclcy9jcGlvLTIuMTIudGFyLmJ6MicgJSB1cmkKKyAgICAgICAgdXJpID0gJ2h0dHBzOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWlycm9yL3NvdXJjZXMvY3Bpby0yLjEyLnRhci5neicKICAgICAgICAgY2xzLnByb2plY3QgPSBUYXJnZXRCdWlsZFByb2plY3QoY2xzLnRjLnRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbF9kaXIgPSBjbHMudGMudGRbJ0RMX0RJUiddKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9wYXJzZWxvZ3MucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3BhcnNlbG9ncy5weQppbmRleCA2ZTkyOTQ2Li4xZjM2YzYxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3BhcnNlbG9ncy5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3BhcnNlbG9ncy5weQpAQCAtODYsOSArODYsMTEgQEAKICAgICAncWVtdW1pcHMnIDogWwogICAgICAgICAnRmFpbGVkIHRvIGxvYWQgbW9kdWxlICJnbHgiJywKICAgICAgICAgJ3BjaSAwMDAwOjAwOjAwLjA6IFtGaXJtd2FyZSBCdWddOiByZWcgMHguLjogaW52YWxpZCBCQVIgKGNhblwndCBzaXplKScsCisgICAgICAgICdjYWNoZWluZm86IEZhaWxlZCB0byBmaW5kIGNwdTAgZGV2aWNlIG5vZGUnLAogICAgICAgICBdICsgY29tbW9uX2Vycm9ycywKICAgICAncWVtdW1pcHM2NCcgOiBbCiAgICAgICAgICdwY2kgMDAwMDowMDowMC4wOiBbRmlybXdhcmUgQnVnXTogcmVnIDB4Li46IGludmFsaWQgQkFSIChjYW5cJ3Qgc2l6ZSknLAorICAgICAgICAnY2FjaGVpbmZvOiBGYWlsZWQgdG8gZmluZCBjcHUwIGRldmljZSBub2RlJywKICAgICAgICAgIF0gKyBjb21tb25fZXJyb3JzLAogICAgICdxZW11cHBjJyA6IFsKICAgICAgICAgJ1BDSSAwMDAwOjAwIENhbm5vdCByZXNlcnZlIExlZ2FjeSBJTyBbaW8gIDB4MDAwMC0weDBmZmZdJywKQEAgLTE1MSw2ICsxNTMsOCBAQAogICAgICAgICAnZmFpbGVkIHRvIHJlYWQgb3V0IHRoZXJtYWwgem9uZScsCiAgICAgICAgICdCbHVldG9vdGg6IGhjaTA6IFNldHRpbmcgSW50ZWwgZXZlbnQgbWFzayBmYWlsZWQnLAogICAgICAgICAndHR5UzIgLSBmYWlsZWQgdG8gcmVxdWVzdCBETUEnLAorICAgICAgICAnQmx1ZXRvb3RoOiBoY2kwOiBGYWlsZWQgdG8gc2VuZCBmaXJtd2FyZSBkYXRhICgtMzgpJywKKyAgICAgICAgJ2F0a2JkIHNlcmlvMDogRmFpbGVkIHRvIGVuYWJsZSBrZXlib2FyZCBvbiBpc2EwMDYwL3NlcmlvMCcsCiAgICAgICAgIF0gKyB4ODZfY29tbW9uLAogICAgICdjcm93bmJheScgOiB4ODZfY29tbW9uLAogICAgICdnZW5lcmljeDg2JyA6IHg4Nl9jb21tb24sCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3B0ZXN0LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9wdGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzhjMDM4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9wdGVzdC5weQpAQCAtMCwwICsxLDgyIEBACitmcm9tIG9lcWEucnVudGltZS5jYXNlIGltcG9ydCBPRVJ1bnRpbWVUZXN0Q2FzZQorZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLmRlcGVuZHMgaW1wb3J0IE9FVGVzdERlcGVuZHMKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvci5vZWlkIGltcG9ydCBPRVRlc3RJRAorZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLmRhdGEgaW1wb3J0IHNraXBJZk5vdEZlYXR1cmUKK2Zyb20gb2VxYS51dGlscy5sb2dwYXJzZXIgaW1wb3J0IExwYXJzZXIsIFJlc3VsdAorCitjbGFzcyBQdGVzdFJ1bm5lclRlc3QoT0VSdW50aW1lVGVzdENhc2UpOgorCisgICAgIyBhIHB0ZXN0IGxvZyBwYXJzZXIKKyAgICBkZWYgcGFyc2VfcHRlc3Qoc2VsZiwgbG9nZmlsZSk6CisgICAgICAgIHBhcnNlciA9IExwYXJzZXIodGVzdF8wX3Bhc3NfcmVnZXg9Il5QQVNTOiguKykiLAorICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfMF9mYWlsX3JlZ2V4PSJeRkFJTDooLispIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0XzBfc2tpcF9yZWdleD0iXlNLSVA6KC4rKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbl8wX2JlZ2luX3JlZ2V4PSJeQkVHSU46IC4qLyguKykvcHRlc3QiLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb25fMF9lbmRfcmVnZXg9Il5FTkQ6IC4qLyguKykvcHRlc3QiKQorICAgICAgICBwYXJzZXIuaW5pdCgpCisgICAgICAgIHJlc3VsdCA9IFJlc3VsdCgpCisKKyAgICAgICAgd2l0aCBvcGVuKGxvZ2ZpbGUsIGVycm9ycz0ncmVwbGFjZScpIGFzIGY6CisgICAgICAgICAgICBmb3IgbGluZSBpbiBmOgorICAgICAgICAgICAgICAgIHJlc3VsdF90dXBsZSA9IHBhcnNlci5wYXJzZV9saW5lKGxpbmUpCisgICAgICAgICAgICAgICAgaWYgbm90IHJlc3VsdF90dXBsZToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICByZXN1bHRfdHVwbGUgPSBsaW5lX3R5cGUsIGNhdGVnb3J5LCBzdGF0dXMsIG5hbWUgPSBwYXJzZXIucGFyc2VfbGluZShsaW5lKQorCisgICAgICAgICAgICAgICAgaWYgbGluZV90eXBlID09ICdzZWN0aW9uJyBhbmQgc3RhdHVzID09ICdiZWdpbic6CisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfc2VjdGlvbiA9IG5hbWUKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgIGlmIGxpbmVfdHlwZSA9PSAnc2VjdGlvbicgYW5kIHN0YXR1cyA9PSAnZW5kJzoKKyAgICAgICAgICAgICAgICAgICAgY3VycmVudF9zZWN0aW9uID0gTm9uZQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgaWYgbGluZV90eXBlID09ICd0ZXN0JyBhbmQgc3RhdHVzID09ICdwYXNzJzoKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnN0b3JlKGN1cnJlbnRfc2VjdGlvbiwgbmFtZSwgc3RhdHVzKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgaWYgbGluZV90eXBlID09ICd0ZXN0JyBhbmQgc3RhdHVzID09ICdmYWlsJzoKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnN0b3JlKGN1cnJlbnRfc2VjdGlvbiwgbmFtZSwgc3RhdHVzKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgaWYgbGluZV90eXBlID09ICd0ZXN0JyBhbmQgc3RhdHVzID09ICdza2lwJzoKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnN0b3JlKGN1cnJlbnRfc2VjdGlvbiwgbmFtZSwgc3RhdHVzKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgIHJlc3VsdC5zb3J0X3Rlc3RzKCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgQE9FVGVzdElEKDE2MDApCisgICAgQHNraXBJZk5vdEZlYXR1cmUoJ3B0ZXN0JywgJ1Rlc3QgcmVxdWlyZXMgcHRlc3QgdG8gYmUgaW4gRElTVFJPX0ZFQVRVUkVTJykKKyAgICBAc2tpcElmTm90RmVhdHVyZSgncHRlc3QtcGtncycsICdUZXN0IHJlcXVpcmVzIHB0ZXN0LXBrZ3MgdG8gYmUgaW4gSU1BR0VfRkVBVFVSRVMnKQorICAgIEBPRVRlc3REZXBlbmRzKFsnc3NoLlNTSFRlc3QudGVzdF9zc2gnXSkKKyAgICBkZWYgdGVzdF9wdGVzdHJ1bm5lcihzZWxmKToKKyAgICAgICAgaW1wb3J0IGRhdGV0aW1lCisKKyAgICAgICAgdGVzdF9sb2dfZGlyID0gc2VsZi50ZC5nZXQoJ1RFU1RfTE9HX0RJUicsICcnKQorICAgICAgICAjIFRoZSBURVNUX0xPR19ESVIgbWF5YmUgTlVMTCB3aGVuIHRlc3RpbWFnZSBpcyBhZGRlZCBhZnRlcgorICAgICAgICAjIHRlc3RkYXRhLmpzb24gaXMgZ2VuZXJhdGVkLgorICAgICAgICBpZiBub3QgdGVzdF9sb2dfZGlyOgorICAgICAgICAgICAgdGVzdF9sb2dfZGlyID0gb3MucGF0aC5qb2luKHNlbGYudGQuZ2V0KCdXT1JLRElSJywgJycpLCAndGVzdGltYWdlJykKKyAgICAgICAgIyBEb24ndCB1c2Ugc2VsZi50ZC5nZXQoJ0RBVEVUSU1FJyksIGl0J3MgZnJvbSB0ZXN0ZGF0YS5qc29uLCBub3QKKyAgICAgICAgIyB1cC10by1kYXRlLCBhbmQgbWF5IGNhdXNlICJGaWxlIGV4aXN0cyIgd2hlbiByZS1yZXVuLgorICAgICAgICBkYXRldGltZSA9IGRhdGV0aW1lLmRhdGV0aW1lLm5vdygpLnN0cmZ0aW1lKCclWSVtJWQlSCVNJVMnKQorICAgICAgICBwdGVzdF9sb2dfZGlyX2xpbmsgPSBvcy5wYXRoLmpvaW4odGVzdF9sb2dfZGlyLCAncHRlc3RfbG9nJykKKyAgICAgICAgcHRlc3RfbG9nX2RpciA9ICclcy4lcycgJSAocHRlc3RfbG9nX2Rpcl9saW5rLCBkYXRldGltZSkKKyAgICAgICAgcHRlc3RfcnVubmVyX2xvZyA9IG9zLnBhdGguam9pbihwdGVzdF9sb2dfZGlyLCAncHRlc3QtcnVubmVyLmxvZycpCisKKyAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oJ3B0ZXN0LXJ1bm5lcicsIDApCisgICAgICAgIG9zLm1ha2VkaXJzKHB0ZXN0X2xvZ19kaXIpCisgICAgICAgIHdpdGggb3BlbihwdGVzdF9ydW5uZXJfbG9nLCAndycpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKG91dHB1dCkKKworICAgICAgICAjIHN0YXR1cyAhPSAwIGlzIE9LIHNpbmNlIHNvbWUgcHRlc3QgdGVzdHMgbWF5IGZhaWwKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN0YXR1cyAhPSAxMjcsIG1zZz0iQ2Fubm90IGV4ZWN1dGUgcHRlc3QtcnVubmVyISIpCisKKyAgICAgICAgIyBQYXJzZSBhbmQgc2F2ZSByZXN1bHRzCisgICAgICAgIHBhcnNlX3Jlc3VsdCA9IHNlbGYucGFyc2VfcHRlc3QocHRlc3RfcnVubmVyX2xvZykKKyAgICAgICAgcGFyc2VfcmVzdWx0LmxvZ19hc19maWxlcyhwdGVzdF9sb2dfZGlyLCB0ZXN0X3N0YXR1cyA9IFsncGFzcycsJ2ZhaWwnLCAnc2tpcCddKQorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhwdGVzdF9sb2dfZGlyX2xpbmspOgorICAgICAgICAgICAgIyBSZW1vdmUgdGhlIG9sZCBsaW5rIHRvIGNyZWF0ZSBhIG5ldyBvbmUKKyAgICAgICAgICAgIG9zLnJlbW92ZShwdGVzdF9sb2dfZGlyX2xpbmspCisgICAgICAgIG9zLnN5bWxpbmsob3MucGF0aC5iYXNlbmFtZShwdGVzdF9sb2dfZGlyKSwgcHRlc3RfbG9nX2Rpcl9saW5rKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jb250ZXh0LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jb250ZXh0LnB5CmluZGV4IGM0Y2Q3NmMuLjAyOTQwMDMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY29udGV4dC5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2NvbnRleHQucHkKQEAgLTkyLDYgKzkyLDEyIEBACiAgICAgZGVmIGdldFRhcmdldCh0YXJnZXRfdHlwZSwgbG9nZ2VyLCB0YXJnZXRfaXAsIHNlcnZlcl9pcCwgKiprd2FyZ3MpOgogICAgICAgICB0YXJnZXQgPSBOb25lCiAKKyAgICAgICAgaWYgdGFyZ2V0X2lwOgorICAgICAgICAgICAgdGFyZ2V0X2lwX3BvcnQgPSB0YXJnZXRfaXAuc3BsaXQoJzonKQorICAgICAgICAgICAgaWYgbGVuKHRhcmdldF9pcF9wb3J0KSA9PSAyOgorICAgICAgICAgICAgICAgIHRhcmdldF9pcCA9IHRhcmdldF9pcF9wb3J0WzBdCisgICAgICAgICAgICAgICAga3dhcmdzWydwb3J0J10gPSB0YXJnZXRfaXBfcG9ydFsxXQorCiAgICAgICAgIGlmIHRhcmdldF90eXBlID09ICdzaW1wbGVyZW1vdGUnOgogICAgICAgICAgICAgdGFyZ2V0ID0gT0VTU0hUYXJnZXQobG9nZ2VyLCB0YXJnZXRfaXAsIHNlcnZlcl9pcCwgKiprd2FyZ3MpCiAgICAgICAgIGVsaWYgdGFyZ2V0X3R5cGUgPT0gJ3FlbXUnOgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2RrL2Nhc2VzL2J1aWxkZ2FsY3VsYXRvci5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3Nkay9jYXNlcy9idWlsZGdhbGN1bGF0b3IucHkKaW5kZXggNDJlOGRkYi4uNzgwYWZjYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2RrL2Nhc2VzL2J1aWxkZ2FsY3VsYXRvci5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZGsvY2FzZXMvYnVpbGRnYWxjdWxhdG9yLnB5CkBAIC04LDcgKzgsNyBAQAogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHNldFVwQ2xhc3Moc2VsZik6Ci0gICAgICAgIGlmIG5vdCAoc2VsZi50Yy5oYXNUYXJnZXRQYWNrYWdlKCJndGsrMyIpIG9yXAorICAgICAgICBpZiBub3QgKHNlbGYudGMuaGFzVGFyZ2V0UGFja2FnZSgiZ3RrXCszIikgb3JcCiAgICAgICAgICAgICAgICAgc2VsZi50Yy5oYXNUYXJnZXRQYWNrYWdlKCJsaWJndGstMy4wIikpOgogICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoIkdhbGN1bGF0b3JUZXN0IGNsYXNzOiBTREsgZG9uJ3Qgc3VwcG9ydCBndGsrMyIpCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3Nkay9jYXNlcy9idWlsZGx6aXAucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZGsvY2FzZXMvYnVpbGRsemlwLnB5CmluZGV4IDJhNTNiNzguLjNhODljZTggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3Nkay9jYXNlcy9idWlsZGx6aXAucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2RrL2Nhc2VzL2J1aWxkbHppcC5weQpAQCAtMTcsNyArMTcsOCBAQAogCiAgICAgICAgIG1hY2hpbmUgPSBzZWxmLnRkLmdldCgiTUFDSElORSIpCiAKLSAgICAgICAgaWYgbm90IHNlbGYudGMuaGFzSG9zdFBhY2thZ2UoInBhY2thZ2Vncm91cC1jcm9zcy1jYW5hZGlhbi0lcyIgJSBtYWNoaW5lKToKKyAgICAgICAgaWYgbm90IChzZWxmLnRjLmhhc1RhcmdldFBhY2thZ2UoInBhY2thZ2Vncm91cC1jcm9zcy1jYW5hZGlhbi0lcyIgJSBtYWNoaW5lKSBvcgorICAgICAgICAgICAgICAgIHNlbGYudGMuaGFzVGFyZ2V0UGFja2FnZSgiZ2NjIikpOgogICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoIlNESyBkb2Vzbid0IGNvbnRhaW4gYSBjcm9zcy1jYW5hZGlhbiB0b29sY2hhaW4iKQogCiAgICAgZGVmIHRlc3RfbHppcChzZWxmKToKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3Nkay9jYXNlcy9nY2MucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZGsvY2FzZXMvZ2NjLnB5CmluZGV4IDc0YWQyYTIuLmQxMWY0YjYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3Nkay9jYXNlcy9nY2MucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2RrL2Nhc2VzL2djYy5weQpAQCAtMTgsNyArMTgsOCBAQAogCiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBtYWNoaW5lID0gc2VsZi50ZC5nZXQoIk1BQ0hJTkUiKQotICAgICAgICBpZiBub3Qgc2VsZi50Yy5oYXNIb3N0UGFja2FnZSgicGFja2FnZWdyb3VwLWNyb3NzLWNhbmFkaWFuLSVzIiAlIG1hY2hpbmUpOgorICAgICAgICBpZiBub3QgKHNlbGYudGMuaGFzVGFyZ2V0UGFja2FnZSgicGFja2FnZWdyb3VwLWNyb3NzLWNhbmFkaWFuLSVzIiAlIG1hY2hpbmUpIG9yCisgICAgICAgICAgICAgICAgc2VsZi50Yy5oYXNUYXJnZXRQYWNrYWdlKCJnY2MiKSk6CiAgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgiR2NjQ29tcGlsZVRlc3QgY2xhc3M6IFNESyBkb2Vzbid0IGNvbnRhaW4gYSBjcm9zcy1jYW5hZGlhbiB0b29sY2hhaW4iKQogCiAgICAgZGVmIHRlc3RfZ2NjX2NvbXBpbGUoc2VsZik6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZGsvY2FzZXMvcGVybC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3Nkay9jYXNlcy9wZXJsLnB5CmluZGV4IGUxYmRlZDIuLjgwODU2NzggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3Nkay9jYXNlcy9wZXJsLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3Nkay9jYXNlcy9wZXJsLnB5CkBAIC04LDcgKzgsOCBAQAogY2xhc3MgUGVybFRlc3QoT0VTREtUZXN0Q2FzZSk6CiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHNldFVwQ2xhc3Moc2VsZik6Ci0gICAgICAgIGlmIG5vdCBzZWxmLnRjLmhhc0hvc3RQYWNrYWdlKCJuYXRpdmVzZGstcGVybCIpOgorICAgICAgICBpZiBub3QgKHNlbGYudGMuaGFzSG9zdFBhY2thZ2UoIm5hdGl2ZXNkay1wZXJsIikgb3IKKyAgICAgICAgICAgICAgICBzZWxmLnRjLmhhc0hvc3RQYWNrYWdlKCJwZXJsLW5hdGl2ZSIpKToKICAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJObyBwZXJsIHBhY2thZ2UgaW4gdGhlIFNESyIpCiAKICAgICAgICAgZm9yIGYgaW4gWyd0ZXN0LnBsJ106CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZGsvY2FzZXMvcHl0aG9uLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2RrL2Nhc2VzL3B5dGhvbi5weQppbmRleCA5NGEyOTZmLi43MmRmY2M3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZGsvY2FzZXMvcHl0aG9uLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3Nkay9jYXNlcy9weXRob24ucHkKQEAgLTgsNyArOCw4IEBACiBjbGFzcyBQeXRob25UZXN0KE9FU0RLVGVzdENhc2UpOgogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzZXRVcENsYXNzKHNlbGYpOgotICAgICAgICBpZiBub3Qgc2VsZi50Yy5oYXNIb3N0UGFja2FnZSgibmF0aXZlc2RrLXB5dGhvbiIpOgorICAgICAgICBpZiBub3QgKHNlbGYudGMuaGFzSG9zdFBhY2thZ2UoIm5hdGl2ZXNkay1weXRob24iKSBvcgorICAgICAgICAgICAgICAgIHNlbGYudGMuaGFzSG9zdFBhY2thZ2UoInB5dGhvbi1uYXRpdmUiKSk6CiAgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgiTm8gcHl0aG9uIHBhY2thZ2UgaW4gdGhlIFNESyIpCiAKICAgICAgICAgZm9yIGYgaW4gWyd0ZXN0LnB5J106CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZGsvY29udGV4dC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3Nkay9jb250ZXh0LnB5CmluZGV4IDAxODllZDguLmIzZDdjNzUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3Nkay9jb250ZXh0LnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3Nkay9jb250ZXh0LnB5CkBAIC02LDkgKzYsMTAgQEAKIGltcG9ydCBnbG9iCiBpbXBvcnQgcmUKIAotZnJvbSBvZXFhLmNvcmUuY29udGV4dCBpbXBvcnQgT0VUZXN0Q29udGV4dCwgT0VUZXN0Q29udGV4dEV4ZWN1dG9yCitmcm9tIG9lcWEuY29yZS5jb250ZXh0IGltcG9ydCBPRVRlc3RDb250ZXh0RXhlY3V0b3IKK2Zyb20gb2VxYS5jb3JlLnRocmVhZGVkIGltcG9ydCBPRVRlc3RDb250ZXh0VGhyZWFkZWQKIAotY2xhc3MgT0VTREtUZXN0Q29udGV4dChPRVRlc3RDb250ZXh0KToKK2NsYXNzIE9FU0RLVGVzdENvbnRleHQoT0VUZXN0Q29udGV4dFRocmVhZGVkKToKICAgICBzZGtfZmlsZXNfZGlyID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoX19maWxlX18pKSwgImZpbGVzIikKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZD1Ob25lLCBsb2dnZXI9Tm9uZSwgc2RrX2Rpcj1Ob25lLCBzZGtfZW52PU5vbmUsCkBAIC00NCw4ICs0NSw2IEBACiAgICAgZGVmYXVsdF90ZXN0X2RhdGEgPSBOb25lCiAKICAgICBkZWYgcmVnaXN0ZXJfY29tbWFuZHMoc2VsZiwgbG9nZ2VyLCBzdWJwYXJzZXJzKToKLSAgICAgICAgaW1wb3J0IGFyZ3BhcnNlX29lCi0KICAgICAgICAgc3VwZXIoT0VTREtUZXN0Q29udGV4dEV4ZWN1dG9yLCBzZWxmKS5yZWdpc3Rlcl9jb21tYW5kcyhsb2dnZXIsIHN1YnBhcnNlcnMpCiAKICAgICAgICAgc2RrX2dyb3VwID0gc2VsZi5wYXJzZXIuYWRkX2FyZ3VtZW50X2dyb3VwKCdzZGsgb3B0aW9ucycpCkBAIC0xMDksNiArMTA4LDggQEAKICAgICAgICAgICAgIGxvZyhlbnYpCiAKICAgICBkZWYgcnVuKHNlbGYsIGxvZ2dlciwgYXJncyk6CisgICAgICAgIGltcG9ydCBhcmdwYXJzZV9vZQorCiAgICAgICAgIGlmIG5vdCBhcmdzLnNka19kaXI6CiAgICAgICAgICAgICByYWlzZSBhcmdwYXJzZV9vZS5Bcmd1bWVudFVzYWdlRXJyb3IoIk5vIFNESyBkaXJlY3RvcnkgIlwKICAgICAgICAgICAgICAgICAgICAic3BlY2lmaWVkIHBsZWFzZSBkbywgLS1zZGstZGlyIFNES19ESVIiLCBzZWxmLm5hbWUpCkBAIC0xMjgsNiArMTI5LDYgQEAKICAgICAgICAgICAgICAgICAgICAiZW52aXJvbm1lbnQgKCVzKSBzcGVjaWZpZWQiICUgYXJncy5zZGtfZW52LCBzZWxmLm5hbWUpCiAKICAgICAgICAgc2VsZi5zZGtfZW52ID0gc2RrX2VudnNbYXJncy5zZGtfZW52XQotICAgICAgICBzdXBlcihPRVNES1Rlc3RDb250ZXh0RXhlY3V0b3IsIHNlbGYpLnJ1bihsb2dnZXIsIGFyZ3MpCisgICAgICAgIHJldHVybiBzdXBlcihPRVNES1Rlc3RDb250ZXh0RXhlY3V0b3IsIHNlbGYpLnJ1bihsb2dnZXIsIGFyZ3MpCiAKIF9leGVjdXRvcl9jbGFzcyA9IE9FU0RLVGVzdENvbnRleHRFeGVjdXRvcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2RrZXh0L2Nhc2VzL2RldnRvb2wucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZGtleHQvY2FzZXMvZGV2dG9vbC5weQppbmRleCBhMDFiYzBiLi5lYTkwNTE3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZGtleHQvY2FzZXMvZGV2dG9vbC5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZGtleHQvY2FzZXMvZGV2dG9vbC5weQpAQCAtMSwxMiArMSwxNCBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMTYgSW50ZWwgQ29ycG9yYXRpb24KICMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQpCiAKK2ltcG9ydCBvcwogaW1wb3J0IHNodXRpbAogaW1wb3J0IHN1YnByb2Nlc3MKIAogZnJvbSBvZXFhLnNka2V4dC5jYXNlIGltcG9ydCBPRVNES0V4dFRlc3RDYXNlCiBmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3IuZGVwZW5kcyBpbXBvcnQgT0VUZXN0RGVwZW5kcwogZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLm9laWQgaW1wb3J0IE9FVGVzdElECitmcm9tIG9lcWEudXRpbHMuaHR0cHNlcnZlciBpbXBvcnQgSFRUUFNlcnZpY2UKIAogY2xhc3MgRGV2dG9vbFRlc3QoT0VTREtFeHRUZXN0Q2FzZSk6CiAgICAgQGNsYXNzbWV0aG9kCkBAIC05NSwzICs5NywzMyBAQAogICAgICAgICAgICAgc2VsZi5fcnVuKCdkZXZ0b29sIGJ1aWxkICVzICcgJSBwYWNrYWdlX25vZGVqcykKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNlbGYuX3J1bignZGV2dG9vbCByZXNldCAlcyAnJSBwYWNrYWdlX25vZGVqcykKKworY2xhc3MgU2RrVXBkYXRlVGVzdChPRVNES0V4dFRlc3RDYXNlKToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhzZWxmKToKKyAgICAgICAgc2VsZi5wdWJsaXNoX2RpciA9IG9zLnBhdGguam9pbihzZWxmLnRjLnNka19kaXIsICdlc2RrX3B1Ymxpc2gnKQorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhzZWxmLnB1Ymxpc2hfZGlyKToKKyAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoc2VsZi5wdWJsaXNoX2RpcikKKyAgICAgICAgb3MubWtkaXIoc2VsZi5wdWJsaXNoX2RpcikKKworICAgICAgICBiYXNlX3RjbmFtZSA9ICIlcy8lcyIgJSAoc2VsZi50ZC5nZXQoIlNES19ERVBMT1kiLCAnJyksCisgICAgICAgICAgICBzZWxmLnRkLmdldCgiVE9PTENIQUlORVhUX09VVFBVVE5BTUUiLCAnJykpCisgICAgICAgIHRjbmFtZV9uZXcgPSAiJXMtbmV3LnNoIiAlIGJhc2VfdGNuYW1lCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyh0Y25hbWVfbmV3KToKKyAgICAgICAgICAgIHRjbmFtZV9uZXcgPSAiJXMuc2giICUgYmFzZV90Y25hbWUKKworICAgICAgICBjbWQgPSAnb2UtcHVibGlzaC1zZGsgJXMgJXMnICUgKHRjbmFtZV9uZXcsIHNlbGYucHVibGlzaF9kaXIpCisgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCwgc2hlbGw9VHJ1ZSkKKworICAgICAgICBzZWxmLmh0dHBfc2VydmljZSA9IEhUVFBTZXJ2aWNlKHNlbGYucHVibGlzaF9kaXIpCisgICAgICAgIHNlbGYuaHR0cF9zZXJ2aWNlLnN0YXJ0KCkKKworICAgICAgICBzZWxmLmh0dHBfdXJsID0gImh0dHA6Ly8xMjcuMC4wLjE6JWQiICUgc2VsZi5odHRwX3NlcnZpY2UucG9ydAorCisgICAgZGVmIHRlc3Rfc2RrX3VwZGF0ZV9odHRwKHNlbGYpOgorICAgICAgICBvdXRwdXQgPSBzZWxmLl9ydW4oImRldnRvb2wgc2RrLXVwZGF0ZSBcIiVzXCIiICUgc2VsZi5odHRwX3VybCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKHNlbGYpOgorICAgICAgICBzZWxmLmh0dHBfc2VydmljZS5zdG9wKCkKKyAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLnB1Ymxpc2hfZGlyKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2RrZXh0L2Nhc2VzL3Nka191cGRhdGUucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZGtleHQvY2FzZXMvc2RrX3VwZGF0ZS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmY4NTk4Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZGtleHQvY2FzZXMvc2RrX3VwZGF0ZS5weQorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE2IEludGVsIENvcnBvcmF0aW9uCi0jIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUKQotCi1pbXBvcnQgb3MKLWltcG9ydCBzaHV0aWwKLWltcG9ydCBzdWJwcm9jZXNzCi0KLWZyb20gb2VxYS5zZGtleHQuY2FzZSBpbXBvcnQgT0VTREtFeHRUZXN0Q2FzZQotZnJvbSBvZXFhLnV0aWxzLmh0dHBzZXJ2ZXIgaW1wb3J0IEhUVFBTZXJ2aWNlCi0KLWNsYXNzIFNka1VwZGF0ZVRlc3QoT0VTREtFeHRUZXN0Q2FzZSk6Ci0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNldFVwQ2xhc3Moc2VsZik6Ci0gICAgICAgIHNlbGYucHVibGlzaF9kaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi50Yy5zZGtfZGlyLCAnZXNka19wdWJsaXNoJykKLSAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoc2VsZi5wdWJsaXNoX2Rpcik6Ci0gICAgICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYucHVibGlzaF9kaXIpCi0gICAgICAgIG9zLm1rZGlyKHNlbGYucHVibGlzaF9kaXIpCi0KLSAgICAgICAgYmFzZV90Y25hbWUgPSAiJXMvJXMiICUgKHNlbGYudGQuZ2V0KCJTREtfREVQTE9ZIiwgJycpLAotICAgICAgICAgICAgc2VsZi50ZC5nZXQoIlRPT0xDSEFJTkVYVF9PVVRQVVROQU1FIiwgJycpKQotICAgICAgICB0Y25hbWVfbmV3ID0gIiVzLW5ldy5zaCIgJSBiYXNlX3RjbmFtZQotICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHModGNuYW1lX25ldyk6Ci0gICAgICAgICAgICB0Y25hbWVfbmV3ID0gIiVzLnNoIiAlIGJhc2VfdGNuYW1lCi0KLSAgICAgICAgY21kID0gJ29lLXB1Ymxpc2gtc2RrICVzICVzJyAlICh0Y25hbWVfbmV3LCBzZWxmLnB1Ymxpc2hfZGlyKQotICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQsIHNoZWxsPVRydWUpCi0KLSAgICAgICAgc2VsZi5odHRwX3NlcnZpY2UgPSBIVFRQU2VydmljZShzZWxmLnB1Ymxpc2hfZGlyKQotICAgICAgICBzZWxmLmh0dHBfc2VydmljZS5zdGFydCgpCi0KLSAgICAgICAgc2VsZi5odHRwX3VybCA9ICJodHRwOi8vMTI3LjAuMC4xOiVkIiAlIHNlbGYuaHR0cF9zZXJ2aWNlLnBvcnQKLQotICAgIGRlZiB0ZXN0X3Nka191cGRhdGVfaHR0cChzZWxmKToKLSAgICAgICAgb3V0cHV0ID0gc2VsZi5fcnVuKCJkZXZ0b29sIHNkay11cGRhdGUgXCIlc1wiIiAlIHNlbGYuaHR0cF91cmwpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgdGVhckRvd25DbGFzcyhzZWxmKToKLSAgICAgICAgc2VsZi5odHRwX3NlcnZpY2Uuc3RvcCgpCi0gICAgICAgIHNodXRpbC5ybXRyZWUoc2VsZi5wdWJsaXNoX2RpcikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L19faW5pdF9fLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvX19pbml0X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhZDk1MTMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvX19pbml0X18ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWZyb20gcGtndXRpbCBpbXBvcnQgZXh0ZW5kX3BhdGgKLV9fcGF0aF9fID0gZXh0ZW5kX3BhdGgoX19wYXRoX18sIF9fbmFtZV9fKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvX3NzdGF0ZXRlc3RzX25vYXV0by5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L19zc3RhdGV0ZXN0c19ub2F1dG8ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjOWFlN2UuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvX3NzdGF0ZXRlc3RzX25vYXV0by5weQorKysgL2Rldi9udWxsCkBAIC0xLDk1ICswLDAgQEAKLWltcG9ydCBkYXRldGltZQotaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgb3MKLWltcG9ydCByZQotaW1wb3J0IHNodXRpbAotCi1pbXBvcnQgb2VxYS51dGlscy5mdG9vbHMgYXMgZnRvb2xzCi1mcm9tIG9lcWEuc2VsZnRlc3QuYmFzZSBpbXBvcnQgb2VTZWxmVGVzdAotZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQsIGJpdGJha2UsIGdldF9iYl92YXIsIGdldF90ZXN0X2xheWVyCi1mcm9tIG9lcWEuc2VsZnRlc3Quc3N0YXRlIGltcG9ydCBTU3RhdGVCYXNlCi0KLQotY2xhc3MgUmVidWlsZEZyb21TU3RhdGUoU1N0YXRlQmFzZSk6Ci0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgc2V0VXBDbGFzcyhzZWxmKToKLSAgICAgICAgc2VsZi5idWlsZGRpciA9IG9zLnBhdGguam9pbihvcy5lbnZpcm9uLmdldCgnQlVJTERESVInKSkKLQotICAgIGRlZiBnZXRfZGVwX3RhcmdldHMoc2VsZiwgcHJpbWFyeV90YXJnZXRzKToKLSAgICAgICAgZm91bmRfdGFyZ2V0cyA9IFtdCi0gICAgICAgIGJpdGJha2UoIi1nICIgKyAnICcuam9pbihtYXAoc3RyLCBwcmltYXJ5X3RhcmdldHMpKSkKLSAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCAncG4tYnVpbGRsaXN0JyksICdyJykgYXMgcG5maWxlOgotICAgICAgICAgICAgZm91bmRfdGFyZ2V0cyA9IHBuZmlsZS5yZWFkKCkuc3BsaXRsaW5lcygpCi0gICAgICAgIHJldHVybiBmb3VuZF90YXJnZXRzCi0KLSAgICBkZWYgY29uZmlndXJlX2J1aWxkZGlyKHNlbGYsIGJ1aWxkZGlyKToKLSAgICAgICAgb3MubWtkaXIoYnVpbGRkaXIpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoYnVpbGRkaXIpCi0gICAgICAgIG9zLm1rZGlyKG9zLnBhdGguam9pbihidWlsZGRpciwgJ2NvbmYnKSkKLSAgICAgICAgc2h1dGlsLmNvcHlmaWxlKG9zLnBhdGguam9pbihvcy5lbnZpcm9uLmdldCgnQlVJTERESVInKSwgJ2NvbmYvbG9jYWwuY29uZicpLCBvcy5wYXRoLmpvaW4oYnVpbGRkaXIsICdjb25mL2xvY2FsLmNvbmYnKSkKLSAgICAgICAgY29uZmlnID0ge30KLSAgICAgICAgY29uZmlnWydkZWZhdWx0X3NzdGF0ZV9kaXInXSA9ICJTU1RBVEVfRElSID89IFwiJHtUT1BESVJ9L3NzdGF0ZS1jYWNoZVwiIgotICAgICAgICBjb25maWdbJ251bGxfc3N0YXRlX21pcnJvcnMnXSA9ICJTU1RBVEVfTUlSUk9SUyA9IFwiXCIiCi0gICAgICAgIGNvbmZpZ1snZGVmYXVsdF90bXBfZGlyJ10gPSAiVE1QRElSID0gXCIke1RPUERJUn0vdG1wXCIiCi0gICAgICAgIGZvciBrZXkgaW4gY29uZmlnOgotICAgICAgICAgICAgZnRvb2xzLmFwcGVuZF9maWxlKG9zLnBhdGguam9pbihidWlsZGRpciwgJ2NvbmYvc2VsZnRlc3QuaW5jJyksIGNvbmZpZ1trZXldKQotICAgICAgICBzaHV0aWwuY29weWZpbGUob3MucGF0aC5qb2luKG9zLmVudmlyb24uZ2V0KCdCVUlMRERJUicpLCAnY29uZi9iYmxheWVycy5jb25mJyksIG9zLnBhdGguam9pbihidWlsZGRpciwgJ2NvbmYvYmJsYXllcnMuY29uZicpKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzaHV0aWwuY29weWZpbGUob3MucGF0aC5qb2luKG9zLmVudmlyb24uZ2V0KCdCVUlMRERJUicpLCAnY29uZi9hdXRvLmNvbmYnKSwgb3MucGF0aC5qb2luKGJ1aWxkZGlyLCAnY29uZi9hdXRvLmNvbmYnKSkKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgcGFzcwotCi0gICAgZGVmIGhhcmRsaW5rX3RyZWUoc2VsZiwgc3JjLCBkc3QpOgotICAgICAgICBvcy5ta2Rpcihkc3QpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoZHN0KQotICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhzcmMpOgotICAgICAgICAgICAgaWYgcm9vdCA9PSBzcmM6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIG9zLm1rZGlyKG9zLnBhdGguam9pbihkc3QsIHJvb3Quc3BsaXQoc3JjKVsxXVsxOl0pKQotICAgICAgICAgICAgZm9yIHNzdGF0ZV9maWxlIGluIGZpbGVzOgotICAgICAgICAgICAgICAgIG9zLmxpbmsob3MucGF0aC5qb2luKHJvb3QsIHNzdGF0ZV9maWxlKSwgb3MucGF0aC5qb2luKGRzdCwgcm9vdC5zcGxpdChzcmMpWzFdWzE6XSwgc3N0YXRlX2ZpbGUpKQotCi0gICAgZGVmIHJ1bl90ZXN0X3NzdGF0ZV9yZWJ1aWxkKHNlbGYsIHByaW1hcnlfdGFyZ2V0cywgcmVsb2NhdGU9RmFsc2UsIHJlYnVpbGRfZGVwZW5kZW5jaWVzPUZhbHNlKToKLSAgICAgICAgYnVpbGRBID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsICdidWlsZEEnKQotICAgICAgICBpZiByZWxvY2F0ZToKLSAgICAgICAgICAgIGJ1aWxkQiA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCAnYnVpbGRCJykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGJ1aWxkQiA9IGJ1aWxkQQotCi0gICAgICAgIGlmIHJlYnVpbGRfZGVwZW5kZW5jaWVzOgotICAgICAgICAgICAgcmVidWlsZF90YXJnZXRzID0gc2VsZi5nZXRfZGVwX3RhcmdldHMocHJpbWFyeV90YXJnZXRzKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmVidWlsZF90YXJnZXRzID0gcHJpbWFyeV90YXJnZXRzCi0KLSAgICAgICAgc2VsZi5jb25maWd1cmVfYnVpbGRkaXIoYnVpbGRBKQotICAgICAgICBydW5DbWQoKCIuICVzL29lLWluaXQtYnVpbGQtZW52ICVzICYmICIgJSAoZ2V0X2JiX3ZhcignQ09SRUJBU0UnKSwgYnVpbGRBKSkgKyAnYml0YmFrZSAgJyArICcgJy5qb2luKG1hcChzdHIsIHByaW1hcnlfdGFyZ2V0cykpLCBzaGVsbD1UcnVlLCBleGVjdXRhYmxlPScvYmluL2Jhc2gnKQotICAgICAgICBzZWxmLmhhcmRsaW5rX3RyZWUob3MucGF0aC5qb2luKGJ1aWxkQSwgJ3NzdGF0ZS1jYWNoZScpLCBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgJ3NzdGF0ZS1jYWNoZS1idWlsZEEnKSkKLSAgICAgICAgc2h1dGlsLnJtdHJlZShidWlsZEEpCi0KLSAgICAgICAgZmFpbGVkX3JlYnVpbGQgPSBbXQotICAgICAgICBmYWlsZWRfY2xlYW5zc3RhdGUgPSBbXQotICAgICAgICBmb3IgdGFyZ2V0IGluIHJlYnVpbGRfdGFyZ2V0czoKLSAgICAgICAgICAgIHNlbGYuY29uZmlndXJlX2J1aWxkZGlyKGJ1aWxkQikKLSAgICAgICAgICAgIHNlbGYuaGFyZGxpbmtfdHJlZShvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgJ3NzdGF0ZS1jYWNoZS1idWlsZEEnKSwgb3MucGF0aC5qb2luKGJ1aWxkQiwgJ3NzdGF0ZS1jYWNoZScpKQotCi0gICAgICAgICAgICByZXN1bHRfY2xlYW5zc3RhdGUgPSBydW5DbWQoKCIuICVzL29lLWluaXQtYnVpbGQtZW52ICVzICYmICIgJSAoZ2V0X2JiX3ZhcignQ09SRUJBU0UnKSwgYnVpbGRCKSkgKyAnYml0YmFrZSAtY2NsZWFuc3N0YXRlICcgKyB0YXJnZXQsIGlnbm9yZV9zdGF0dXM9VHJ1ZSwgc2hlbGw9VHJ1ZSwgZXhlY3V0YWJsZT0nL2Jpbi9iYXNoJykKLSAgICAgICAgICAgIGlmIG5vdCByZXN1bHRfY2xlYW5zc3RhdGUuc3RhdHVzID09IDA6Ci0gICAgICAgICAgICAgICAgZmFpbGVkX2NsZWFuc3N0YXRlLmFwcGVuZCh0YXJnZXQpCi0gICAgICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShidWlsZEIpCi0gICAgICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICAgICAgcmVzdWx0X2J1aWxkID0gcnVuQ21kKCgiLiAlcy9vZS1pbml0LWJ1aWxkLWVudiAlcyAmJiAiICUgKGdldF9iYl92YXIoJ0NPUkVCQVNFJyksIGJ1aWxkQikpICsgJ2JpdGJha2UgJyArIHRhcmdldCwgaWdub3JlX3N0YXR1cz1UcnVlLCBzaGVsbD1UcnVlLCBleGVjdXRhYmxlPScvYmluL2Jhc2gnKQotICAgICAgICAgICAgaWYgbm90IHJlc3VsdF9idWlsZC5zdGF0dXMgPT0gMDoKLSAgICAgICAgICAgICAgICBmYWlsZWRfcmVidWlsZC5hcHBlbmQodGFyZ2V0KQotCi0gICAgICAgICAgICBzaHV0aWwucm10cmVlKGJ1aWxkQikKLQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGZhaWxlZF9yZWJ1aWxkLCBtc2c9IlRoZSBmb2xsb3dpbmcgcmVjaXBlcyBoYXZlIGZhaWxlZCB0byByZWJ1aWxkOiAlcyIgJSAnICcuam9pbihtYXAoc3RyLCBmYWlsZWRfcmVidWlsZCkpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGZhaWxlZF9jbGVhbnNzdGF0ZSwgbXNnPSJUaGUgZm9sbG93aW5nIHJlY2lwZXMgaGF2ZSBmYWlsZWQgY2xlYW5zc3RhdGUoYWxsIG90aGVycyBoYXZlIHBhc3NlZCBib3RoIGNsZWFuc3N0YXRlIGFuZCByZWJ1aWxkIGZyb20gc3N0YXRlIHRlc3RzKTogJXMiICUgJyAnLmpvaW4obWFwKHN0ciwgZmFpbGVkX2NsZWFuc3N0YXRlKSkpCi0KLSAgICBkZWYgdGVzdF9zc3RhdGVfcmVsb2NhdGlvbihzZWxmKToKLSAgICAgICAgc2VsZi5ydW5fdGVzdF9zc3RhdGVfcmVidWlsZChbJ2NvcmUtaW1hZ2Utc2F0by1zZGsnXSwgcmVsb2NhdGU9VHJ1ZSwgcmVidWlsZF9kZXBlbmRlbmNpZXM9VHJ1ZSkKLQotICAgIGRlZiB0ZXN0X3NzdGF0ZV9yZWJ1aWxkKHNlbGYpOgotICAgICAgICBzZWxmLnJ1bl90ZXN0X3NzdGF0ZV9yZWJ1aWxkKFsnY29yZS1pbWFnZS1zYXRvLXNkayddLCByZWxvY2F0ZT1GYWxzZSwgcmVidWlsZF9kZXBlbmRlbmNpZXM9VHJ1ZSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2FyY2hpdmVyLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvYXJjaGl2ZXIucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdmMDFjMzYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvYXJjaGl2ZXIucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMTkgKzAsMCBAQAotZnJvbSBvZXFhLnNlbGZ0ZXN0LmJhc2UgaW1wb3J0IG9lU2VsZlRlc3QKLWZyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgYml0YmFrZSwgZ2V0X2JiX3ZhcnMKLWZyb20gb2VxYS51dGlscy5kZWNvcmF0b3JzIGltcG9ydCB0ZXN0Y2FzZQotaW1wb3J0IGdsb2IKLWltcG9ydCBvcwotaW1wb3J0IHNodXRpbAotCi0KLWNsYXNzIEFyY2hpdmVyKG9lU2VsZlRlc3QpOgotCi0gICAgQHRlc3RjYXNlKDEzNDUpCi0gICAgZGVmIHRlc3RfYXJjaGl2ZXJfYWxsb3dzX3RvX2ZpbHRlcl9vbl9yZWNpcGVfbmFtZShzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFN1bW1hcnk6ICAgICBUaGUgYXJjaGl2ZXIgc2hvdWxkIG9mZmVyIHRoZSBwb3NzaWJpbGl0eSB0byBmaWx0ZXIgb24gdGhlIHJlY2lwZS4gKCM2OTI5KQotICAgICAgICBFeHBlY3RlZDogICAgMS4gSW5jbHVkZWQgcmVjaXBlIChidXN5Ym94KSBzaG91bGQgYmUgaW5jbHVkZWQKLSAgICAgICAgICAgICAgICAgICAgIDIuIEV4Y2x1ZGVkIHJlY2lwZSAoemxpYikgc2hvdWxkIGJlIGV4Y2x1ZGVkCi0gICAgICAgIFByb2R1Y3Q6ICAgICBvZS1jb3JlCi0gICAgICAgIEF1dGhvcjogICAgICBEYW5pZWwgSXN0cmF0ZSA8ZGFuaWVsLmFsZXhhbmRydXguaXN0cmF0ZUBpbnRlbC5jb20+Ci0gICAgICAgIEF1dG9tYXRlZEJ5OiBEYW5pZWwgSXN0cmF0ZSA8ZGFuaWVsLmFsZXhhbmRydXguaXN0cmF0ZUBpbnRlbC5jb20+Ci0gICAgICAgICIiIgotCi0gICAgICAgIGluY2x1ZGVfcmVjaXBlID0gJ2J1c3lib3gnCi0gICAgICAgIGV4Y2x1ZGVfcmVjaXBlID0gJ3psaWInCi0KLSAgICAgICAgZmVhdHVyZXMgPSAnSU5IRVJJVCArPSAiYXJjaGl2ZXIiXG4nCi0gICAgICAgIGZlYXR1cmVzICs9ICdBUkNISVZFUl9NT0RFW3NyY10gPSAib3JpZ2luYWwiXG4nCi0gICAgICAgIGZlYXR1cmVzICs9ICdDT1BZTEVGVF9QTl9JTkNMVURFID0gIiVzIlxuJyAlIGluY2x1ZGVfcmVjaXBlCi0gICAgICAgIGZlYXR1cmVzICs9ICdDT1BZTEVGVF9QTl9FWENMVURFID0gIiVzIlxuJyAlIGV4Y2x1ZGVfcmVjaXBlCi0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmVzKQotCi0gICAgICAgIGJpdGJha2UoJy1jIGNsZWFuICVzICVzJyAlIChpbmNsdWRlX3JlY2lwZSwgZXhjbHVkZV9yZWNpcGUpKQotICAgICAgICBiaXRiYWtlKCItYyBkZXBsb3lfYXJjaGl2ZXMgJXMgJXMiICUgKGluY2x1ZGVfcmVjaXBlLCBleGNsdWRlX3JlY2lwZSkpCi0KLSAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnREVQTE9ZX0RJUl9TUkMnLCAnVEFSR0VUX1NZUyddKQotICAgICAgICBzcmNfcGF0aCA9IG9zLnBhdGguam9pbihiYl92YXJzWydERVBMT1lfRElSX1NSQyddLCBiYl92YXJzWydUQVJHRVRfU1lTJ10pCi0KLSAgICAgICAgIyBDaGVjayB0aGF0IGluY2x1ZGVfcmVjaXBlIHdhcyBpbmNsdWRlZAotICAgICAgICBpbmNsdWRlZF9wcmVzZW50ID0gbGVuKGdsb2IuZ2xvYihzcmNfcGF0aCArICcvJXMtKicgJSBpbmNsdWRlX3JlY2lwZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbmNsdWRlZF9wcmVzZW50LCAnUmVjaXBlICVzIHdhcyBub3QgaW5jbHVkZWQuJyAlIGluY2x1ZGVfcmVjaXBlKQotCi0gICAgICAgICMgQ2hlY2sgdGhhdCBleGNsdWRlX3JlY2lwZSB3YXMgZXhjbHVkZWQKLSAgICAgICAgZXhjbHVkZWRfcHJlc2VudCA9IGxlbihnbG9iLmdsb2Ioc3JjX3BhdGggKyAnLyVzLSonICUgZXhjbHVkZV9yZWNpcGUpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGV4Y2x1ZGVkX3ByZXNlbnQsICdSZWNpcGUgJXMgd2FzIG5vdCBleGNsdWRlZC4nICUgZXhjbHVkZV9yZWNpcGUpCi0KLQotICAgIGRlZiB0ZXN0X2FyY2hpdmVyX2ZpbHRlcnNfYnlfdHlwZShzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFN1bW1hcnk6ICAgICBUaGUgYXJjaGl2ZXIgaXMgZG9jdW1lbnRlZCB0byBmaWx0ZXIgb24gdGhlIHJlY2lwZSB0eXBlLgotICAgICAgICBFeHBlY3RlZDogICAgMS4gaW5jbHVkZWQgcmVjaXBlIHR5cGUgKHRhcmdldCkgc2hvdWxkIGJlIGluY2x1ZGVkCi0gICAgICAgICAgICAgICAgICAgICAyLiBvdGhlciB0eXBlcyBzaG91bGQgYmUgZXhjbHVkZWQKLSAgICAgICAgUHJvZHVjdDogICAgIG9lLWNvcmUKLSAgICAgICAgQXV0aG9yOiAgICAgIEFuZHLDqSBEcmFzemlrIDxhZHJhc3ppa0B0eWNvaW50LmNvbT4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgdGFyZ2V0X3JlY2lwZSA9ICdpbml0c2NyaXB0cycKLSAgICAgICAgbmF0aXZlX3JlY2lwZSA9ICd6bGliLW5hdGl2ZScKLQotICAgICAgICBmZWF0dXJlcyA9ICdJTkhFUklUICs9ICJhcmNoaXZlciJcbicKLSAgICAgICAgZmVhdHVyZXMgKz0gJ0FSQ0hJVkVSX01PREVbc3JjXSA9ICJvcmlnaW5hbCJcbicKLSAgICAgICAgZmVhdHVyZXMgKz0gJ0NPUFlMRUZUX1JFQ0lQRV9UWVBFUyA9ICJ0YXJnZXQiXG4nCi0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmVzKQotCi0gICAgICAgIGJpdGJha2UoJy1jIGNsZWFuICVzICVzJyAlICh0YXJnZXRfcmVjaXBlLCBuYXRpdmVfcmVjaXBlKSkKLSAgICAgICAgYml0YmFrZSgiJXMgLWMgZGVwbG95X2FyY2hpdmVzICVzIiAlICh0YXJnZXRfcmVjaXBlLCBuYXRpdmVfcmVjaXBlKSkKLQotICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydERVBMT1lfRElSX1NSQycsICdUQVJHRVRfU1lTJywgJ0JVSUxEX1NZUyddKQotICAgICAgICBzcmNfcGF0aF90YXJnZXQgPSBvcy5wYXRoLmpvaW4oYmJfdmFyc1snREVQTE9ZX0RJUl9TUkMnXSwgYmJfdmFyc1snVEFSR0VUX1NZUyddKQotICAgICAgICBzcmNfcGF0aF9uYXRpdmUgPSBvcy5wYXRoLmpvaW4oYmJfdmFyc1snREVQTE9ZX0RJUl9TUkMnXSwgYmJfdmFyc1snQlVJTERfU1lTJ10pCi0KLSAgICAgICAgIyBDaGVjayB0aGF0IHRhcmdldF9yZWNpcGUgd2FzIGluY2x1ZGVkCi0gICAgICAgIGluY2x1ZGVkX3ByZXNlbnQgPSBsZW4oZ2xvYi5nbG9iKHNyY19wYXRoX3RhcmdldCArICcvJXMtKicgJSB0YXJnZXRfcmVjaXBlKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluY2x1ZGVkX3ByZXNlbnQsICdSZWNpcGUgJXMgd2FzIG5vdCBpbmNsdWRlZC4nICUgdGFyZ2V0X3JlY2lwZSkKLQotICAgICAgICAjIENoZWNrIHRoYXQgbmF0aXZlX3JlY2lwZSB3YXMgZXhjbHVkZWQKLSAgICAgICAgZXhjbHVkZWRfcHJlc2VudCA9IGxlbihnbG9iLmdsb2Ioc3JjX3BhdGhfbmF0aXZlICsgJy8lcy0qJyAlIG5hdGl2ZV9yZWNpcGUpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGV4Y2x1ZGVkX3ByZXNlbnQsICdSZWNpcGUgJXMgd2FzIG5vdCBleGNsdWRlZC4nICUgbmF0aXZlX3JlY2lwZSkKLQotICAgIGRlZiB0ZXN0X2FyY2hpdmVyX2ZpbHRlcnNfYnlfdHlwZV9hbmRfbmFtZShzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFN1bW1hcnk6ICAgICBUZXN0IHRoYXQgdGhlIGFyY2hpdmVyIGFyY2hpdmVzIGJ5IHJlY2lwZSB0eXBlLCB0YWtpbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgICByZWNpcGUgbmFtZSBpbnRvIGFjY291bnQuCi0gICAgICAgIEV4cGVjdGVkOiAgICAxLiBpbmNsdWRlZCByZWNpcGUgdHlwZSAodGFyZ2V0KSBzaG91bGQgYmUgaW5jbHVkZWQKLSAgICAgICAgICAgICAgICAgICAgIDIuIG90aGVyIHR5cGVzIHNob3VsZCBiZSBleGNsdWRlZAotICAgICAgICAgICAgICAgICAgICAgMy4gcmVjaXBlIGJ5IG5hbWUgc2hvdWxkIGJlIGluY2x1ZGVkIC8gZXhjbHVkZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICBvdmVycmlkaW5nIHByZXZpb3VzIGRlY2lzaW9uIGJ5IHR5cGUKLSAgICAgICAgUHJvZHVjdDogICAgIG9lLWNvcmUKLSAgICAgICAgQXV0aG9yOiAgICAgIEFuZHLDqSBEcmFzemlrIDxhZHJhc3ppa0B0eWNvaW50LmNvbT4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgdGFyZ2V0X3JlY2lwZXMgPSBbICdpbml0c2NyaXB0cycsICd6bGliJyBdCi0gICAgICAgIG5hdGl2ZV9yZWNpcGVzID0gWyAndXBkYXRlLXJjLmQtbmF0aXZlJywgJ3psaWItbmF0aXZlJyBdCi0KLSAgICAgICAgZmVhdHVyZXMgPSAnSU5IRVJJVCArPSAiYXJjaGl2ZXIiXG4nCi0gICAgICAgIGZlYXR1cmVzICs9ICdBUkNISVZFUl9NT0RFW3NyY10gPSAib3JpZ2luYWwiXG4nCi0gICAgICAgIGZlYXR1cmVzICs9ICdDT1BZTEVGVF9SRUNJUEVfVFlQRVMgPSAidGFyZ2V0IlxuJwotICAgICAgICBmZWF0dXJlcyArPSAnQ09QWUxFRlRfUE5fSU5DTFVERSA9ICIlcyJcbicgJSBuYXRpdmVfcmVjaXBlc1sxXQotICAgICAgICBmZWF0dXJlcyArPSAnQ09QWUxFRlRfUE5fRVhDTFVERSA9ICIlcyJcbicgJSB0YXJnZXRfcmVjaXBlc1sxXQotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKLQotICAgICAgICBiaXRiYWtlKCctYyBjbGVhbiAlcyAlcycgJSAoJyAnLmpvaW4odGFyZ2V0X3JlY2lwZXMpLCAnICcuam9pbihuYXRpdmVfcmVjaXBlcykpKQotICAgICAgICBiaXRiYWtlKCctYyBkZXBsb3lfYXJjaGl2ZXMgJXMgJXMnICUgKCcgJy5qb2luKHRhcmdldF9yZWNpcGVzKSwgJyAnLmpvaW4obmF0aXZlX3JlY2lwZXMpKSkKLQotICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydERVBMT1lfRElSX1NSQycsICdUQVJHRVRfU1lTJywgJ0JVSUxEX1NZUyddKQotICAgICAgICBzcmNfcGF0aF90YXJnZXQgPSBvcy5wYXRoLmpvaW4oYmJfdmFyc1snREVQTE9ZX0RJUl9TUkMnXSwgYmJfdmFyc1snVEFSR0VUX1NZUyddKQotICAgICAgICBzcmNfcGF0aF9uYXRpdmUgPSBvcy5wYXRoLmpvaW4oYmJfdmFyc1snREVQTE9ZX0RJUl9TUkMnXSwgYmJfdmFyc1snQlVJTERfU1lTJ10pCi0KLSAgICAgICAgIyBDaGVjayB0aGF0IHRhcmdldF9yZWNpcGVbMF0gYW5kIG5hdGl2ZV9yZWNpcGVzWzFdIHdlcmUgaW5jbHVkZWQKLSAgICAgICAgaW5jbHVkZWRfcHJlc2VudCA9IGxlbihnbG9iLmdsb2Ioc3JjX3BhdGhfdGFyZ2V0ICsgJy8lcy0qJyAlIHRhcmdldF9yZWNpcGVzWzBdKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluY2x1ZGVkX3ByZXNlbnQsICdSZWNpcGUgJXMgd2FzIG5vdCBpbmNsdWRlZC4nICUgdGFyZ2V0X3JlY2lwZXNbMF0pCi0KLSAgICAgICAgaW5jbHVkZWRfcHJlc2VudCA9IGxlbihnbG9iLmdsb2Ioc3JjX3BhdGhfbmF0aXZlICsgJy8lcy0qJyAlIG5hdGl2ZV9yZWNpcGVzWzFdKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluY2x1ZGVkX3ByZXNlbnQsICdSZWNpcGUgJXMgd2FzIG5vdCBpbmNsdWRlZC4nICUgbmF0aXZlX3JlY2lwZXNbMV0pCi0KLSAgICAgICAgIyBDaGVjayB0aGF0IG5hdGl2ZV9yZWNpcGVzWzBdIGFuZCB0YXJnZXRfcmVjaXBlc1sxXSB3ZXJlIGV4Y2x1ZGVkCi0gICAgICAgIGV4Y2x1ZGVkX3ByZXNlbnQgPSBsZW4oZ2xvYi5nbG9iKHNyY19wYXRoX25hdGl2ZSArICcvJXMtKicgJSBuYXRpdmVfcmVjaXBlc1swXSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXhjbHVkZWRfcHJlc2VudCwgJ1JlY2lwZSAlcyB3YXMgbm90IGV4Y2x1ZGVkLicgJSBuYXRpdmVfcmVjaXBlc1swXSkKLQotICAgICAgICBleGNsdWRlZF9wcmVzZW50ID0gbGVuKGdsb2IuZ2xvYihzcmNfcGF0aF90YXJnZXQgKyAnLyVzLSonICUgdGFyZ2V0X3JlY2lwZXNbMV0pKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGV4Y2x1ZGVkX3ByZXNlbnQsICdSZWNpcGUgJXMgd2FzIG5vdCBleGNsdWRlZC4nICUgdGFyZ2V0X3JlY2lwZXNbMV0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9iYXNlLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvYmFzZS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDdhOGVhOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9iYXNlLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjM1ICswLDAgQEAKLSMgQ29weXJpZ2h0IChjKSAyMDEzIEludGVsIENvcnBvcmF0aW9uCi0jCi0jIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUKQotCi0KLSMgREVTQ1JJUFRJT04KLSMgQmFzZSBjbGFzcyBpbmhlcml0ZWQgYnkgdGVzdCBjbGFzc2VzIGluIG1ldGEvbGliL29lcWEvc2VsZnRlc3QKLQotaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLWltcG9ydCBzaHV0aWwKLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgZXJybm8KLQotaW1wb3J0IG9lcWEudXRpbHMuZnRvb2xzIGFzIGZ0b29scwotZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQsIGJpdGJha2UsIGdldF9iYl92YXIsIGdldF90ZXN0X2xheWVyCi1mcm9tIG9lcWEudXRpbHMuZGVjb3JhdG9ycyBpbXBvcnQgTG9nUmVzdWx0cwotZnJvbSByYW5kb20gaW1wb3J0IGNob2ljZQotaW1wb3J0IGdsb2IKLQotQExvZ1Jlc3VsdHMKLWNsYXNzIG9lU2VsZlRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotCi0gICAgbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoInNlbGZ0ZXN0LmJhc2UiKQotICAgIGxvbmdNZXNzYWdlID0gVHJ1ZQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG1ldGhvZE5hbWU9InJ1blRlc3QiKToKLSAgICAgICAgc2VsZi5idWlsZGRpciA9IG9zLmVudmlyb24uZ2V0KCJCVUlMRERJUiIpCi0gICAgICAgIHNlbGYubG9jYWxjb25mX3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgImNvbmYvbG9jYWwuY29uZiIpCi0gICAgICAgIHNlbGYubG9jYWxjb25mX2JhY2t1cCA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCAiY29uZi9sb2NhbC5iayIpCi0gICAgICAgIHNlbGYudGVzdGluY19wYXRoID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsICJjb25mL3NlbGZ0ZXN0LmluYyIpCi0gICAgICAgIHNlbGYubG9jYWxfYmJsYXllcnNfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCAiY29uZi9iYmxheWVycy5jb25mIikKLSAgICAgICAgc2VsZi5sb2NhbF9iYmxheWVyc19iYWNrdXAgPSBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbmYvYmJsYXllcnMuYmsiKQotICAgICAgICBzZWxmLnRlc3RpbmNfYmJsYXllcnNfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCAiY29uZi9iYmxheWVycy5pbmMiKQotICAgICAgICBzZWxmLm1hY2hpbmVpbmNfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCAiY29uZi9tYWNoaW5lLmluYyIpCi0gICAgICAgIHNlbGYudGVzdGxheWVyX3BhdGggPSBvZVNlbGZUZXN0LnRlc3RsYXllcl9wYXRoCi0gICAgICAgIHNlbGYuX2V4dHJhX3RlYXJfZG93bl9jb21tYW5kcyA9IFtdCi0gICAgICAgIHNlbGYuX3RyYWNrX2Zvcl9jbGVhbnVwID0gWwotICAgICAgICAgICAgc2VsZi50ZXN0aW5jX3BhdGgsIHNlbGYudGVzdGluY19iYmxheWVyc19wYXRoLAotICAgICAgICAgICAgc2VsZi5tYWNoaW5laW5jX3BhdGgsIHNlbGYubG9jYWxjb25mX2JhY2t1cCwKLSAgICAgICAgICAgIHNlbGYubG9jYWxfYmJsYXllcnNfYmFja3VwXQotICAgICAgICBzdXBlcihvZVNlbGZUZXN0LCBzZWxmKS5fX2luaXRfXyhtZXRob2ROYW1lKQotCi0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBvcy5jaGRpcihzZWxmLmJ1aWxkZGlyKQotICAgICAgICAjIENoZWNrIGlmIGxvY2FsLmNvbmYgb3IgYmJsYXllcnMuY29uZiBmaWxlcyBiYWNrdXAgZXhpc3RzCi0gICAgICAgICMgZnJvbSBhIHByZXZpb3VzIGZhaWxlZCB0ZXN0IGFuZCByZXN0b3JlIHRoZW0KLSAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoc2VsZi5sb2NhbGNvbmZfYmFja3VwKSBvciBvcy5wYXRoLmlzZmlsZSgKLSAgICAgICAgICAgICAgICBzZWxmLmxvY2FsX2JibGF5ZXJzX2JhY2t1cCk6Ci0gICAgICAgICAgICBzZWxmLmxvZy5kZWJ1ZygiRm91bmQgYSBsb2NhbC5jb25mIGFuZC9vciBiYmxheWVycy5jb25mIGJhY2t1cCBcCi1mcm9tIGEgcHJldmlvdXNseSBhYm9ydGVkIHRlc3QuIFJlc3RvcmluZyB0aGVzZSBmaWxlcyBub3csIGJ1dCB0ZXN0cyBzaG91bGQgXAotYmUgcmUtZXhlY3V0ZWQgZnJvbSBhIGNsZWFuIGVudmlyb25tZW50IHRvIGVuc3VyZSBhY2N1cmF0ZSByZXN1bHRzLiIpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlKHNlbGYubG9jYWxjb25mX2JhY2t1cCwgc2VsZi5sb2NhbGNvbmZfcGF0aCkKLSAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FTk9FTlQ6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlKHNlbGYubG9jYWxfYmJsYXllcnNfYmFja3VwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxvY2FsX2JibGF5ZXJzX3BhdGgpCi0gICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRU5PRU5UOgotICAgICAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBiYWNrdXAgbG9jYWwuY29uZiBhbmQgYmJsYXllcnMuY29uZgotICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlKHNlbGYubG9jYWxjb25mX3BhdGgsIHNlbGYubG9jYWxjb25mX2JhY2t1cCkKLSAgICAgICAgICAgIHNodXRpbC5jb3B5ZmlsZShzZWxmLmxvY2FsX2JibGF5ZXJzX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2NhbF9iYmxheWVyc19iYWNrdXApCi0gICAgICAgICAgICBzZWxmLmxvZy5kZWJ1ZygiQ3JlYXRpbmcgbG9jYWwuY29uZiBhbmQgYmJsYXllcnMuY29uZiBiYWNrdXBzLiIpCi0gICAgICAgICMgd2UgZG9uJ3Qga25vdyB3aGF0IHRoZSBwcmV2aW91cyB0ZXN0IGxlZnQgYXJvdW5kIGluIGNvbmZpZyBvciBpbmMgZmlsZXMKLSAgICAgICAgIyBpZiBpdCBmYWlsZWQgc28gd2UgbmVlZCBhIGZyZXNoIHN0YXJ0Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG9zLnJlbW92ZShzZWxmLnRlc3RpbmNfcGF0aCkKLSAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRU5PRU5UOgotICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgIGZvciByb290LCBfLCBmaWxlcyBpbiBvcy53YWxrKHNlbGYudGVzdGxheWVyX3BhdGgpOgotICAgICAgICAgICAgZm9yIGYgaW4gZmlsZXM6Ci0gICAgICAgICAgICAgICAgaWYgZiA9PSAndGVzdF9yZWNpcGUuaW5jJzoKLSAgICAgICAgICAgICAgICAgICAgb3MucmVtb3ZlKG9zLnBhdGguam9pbihyb290LCBmKSkKLQotICAgICAgICBmb3IgaW5jbF9maWxlIGluIFtzZWxmLnRlc3RpbmNfYmJsYXllcnNfcGF0aCwgc2VsZi5tYWNoaW5laW5jX3BhdGhdOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG9zLnJlbW92ZShpbmNsX2ZpbGUpCi0gICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRU5PRU5UOgotICAgICAgICAgICAgICAgICAgICByYWlzZQotCi0gICAgICAgICMgR2V0IENVU1RPTU1BQ0hJTkUgZnJvbSBlbnYgKHNldCBieSAtLW1hY2hpbmUgYXJndW1lbnQgdG8gb2Utc2VsZnRlc3QpCi0gICAgICAgIGN1c3RvbW1hY2hpbmUgPSBvcy5nZXRlbnYoJ0NVU1RPTU1BQ0hJTkUnKQotICAgICAgICBpZiBjdXN0b21tYWNoaW5lOgotICAgICAgICAgICAgaWYgY3VzdG9tbWFjaGluZSA9PSAncmFuZG9tJzoKLSAgICAgICAgICAgICAgICBtYWNoaW5lID0gZ2V0X3JhbmRvbV9tYWNoaW5lKCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbWFjaGluZSA9IGN1c3RvbW1hY2hpbmUKLSAgICAgICAgICAgIG1hY2hpbmVfY29uZiA9ICdNQUNISU5FID8/PSAiJXMiXG4nICUgbWFjaGluZQotICAgICAgICAgICAgc2VsZi5zZXRfbWFjaGluZV9jb25maWcobWFjaGluZV9jb25mKQotICAgICAgICAgICAgcHJpbnQoJ01BQ0hJTkU6ICVzJyAlIG1hY2hpbmUpCi0KLSAgICAgICAgIyB0ZXN0cyBtaWdodCBuZWVkIHRoZWlyIG93biBzZXR1cAotICAgICAgICAjIGJ1dCBpZiB0aGV5IG92ZXJ3cml0ZSB0aGlzIG9uZSB0aGV5IGhhdmUgdG8gY2FsbAotICAgICAgICAjIHN1cGVyIGVhY2ggdGltZSwgc28gbGV0J3MgZ2l2ZSB0aGVtIGFuIGFsdGVybmF0aXZlCi0gICAgICAgIHNlbGYuc2V0VXBMb2NhbCgpCi0KLSAgICBkZWYgc2V0VXBMb2NhbChzZWxmKToKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICBpZiBzZWxmLl9leHRyYV90ZWFyX2Rvd25fY29tbWFuZHM6Ci0gICAgICAgICAgICBmYWlsZWRfZXh0cmFfY29tbWFuZHMgPSBbXQotICAgICAgICAgICAgZm9yIGNvbW1hbmQgaW4gc2VsZi5fZXh0cmFfdGVhcl9kb3duX2NvbW1hbmRzOgotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZChjb21tYW5kLCBpZ25vcmVfc3RhdHVzPVRydWUpCi0gICAgICAgICAgICAgICAgaWYgbm90IHJlc3VsdC5zdGF0dXMgPT0gIDA6Ci0gICAgICAgICAgICAgICAgICAgIGZhaWxlZF9leHRyYV9jb21tYW5kcy5hcHBlbmQoY29tbWFuZCkKLSAgICAgICAgICAgIGlmIGZhaWxlZF9leHRyYV9jb21tYW5kczoKLSAgICAgICAgICAgICAgICBzZWxmLmxvZy53YXJuaW5nKCJ0ZWFyRG93biBjb21tYW5kcyBoYXZlIGZhaWxlZDogJXMiICUgJywgJy5qb2luKG1hcChzdHIsIGZhaWxlZF9leHRyYV9jb21tYW5kcykpKQotICAgICAgICAgICAgICAgIHNlbGYubG9nLmRlYnVnKCJUcnlpbmcgdG8gbW92ZSBvbi4iKQotICAgICAgICAgICAgc2VsZi5fZXh0cmFfdGVhcl9kb3duX2NvbW1hbmRzID0gW10KLQotICAgICAgICBpZiBzZWxmLl90cmFja19mb3JfY2xlYW51cDoKLSAgICAgICAgICAgIGZvciBwYXRoIGluIHNlbGYuX3RyYWNrX2Zvcl9jbGVhbnVwOgotICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIocGF0aCk6Ci0gICAgICAgICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUocGF0aCkKLSAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShwYXRoKToKLSAgICAgICAgICAgICAgICAgICAgb3MucmVtb3ZlKHBhdGgpCi0gICAgICAgICAgICBzZWxmLl90cmFja19mb3JfY2xlYW51cCA9IFtdCi0KLSAgICAgICAgc2VsZi50ZWFyRG93bkxvY2FsKCkKLQotICAgIGRlZiB0ZWFyRG93bkxvY2FsKHNlbGYpOgotICAgICAgICBwYXNzCi0KLSAgICAjIGFkZCB0ZXN0IHNwZWNpZmljIGNvbW1hbmRzIHRvIHRoZSB0ZWFyRG93biBtZXRob2QuCi0gICAgZGVmIGFkZF9jb21tYW5kX3RvX3RlYXJEb3duKHNlbGYsIGNvbW1hbmQpOgotICAgICAgICBzZWxmLmxvZy5kZWJ1ZygiQWRkaW5nIGNvbW1hbmQgJyVzJyB0byB0ZWFyRG93biBmb3IgdGhpcyB0ZXN0LiIgJSBjb21tYW5kKQotICAgICAgICBzZWxmLl9leHRyYV90ZWFyX2Rvd25fY29tbWFuZHMuYXBwZW5kKGNvbW1hbmQpCi0gICAgIyBhZGQgdGVzdCBzcGVjaWZpYyBmaWxlcyBvciBkaXJlY3RvcmllcyB0byBiZSByZW1vdmVkIGluIHRoZSB0ZWFyRG93biBtZXRob2QKLSAgICBkZWYgdHJhY2tfZm9yX2NsZWFudXAoc2VsZiwgcGF0aCk6Ci0gICAgICAgIHNlbGYubG9nLmRlYnVnKCJBZGRpbmcgcGF0aCAnJXMnIHRvIGJlIGNsZWFuZWQgdXAgd2hlbiB0ZXN0IGlzIG92ZXIiICUgcGF0aCkKLSAgICAgICAgc2VsZi5fdHJhY2tfZm9yX2NsZWFudXAuYXBwZW5kKHBhdGgpCi0KLSAgICAjIHdyaXRlIHRvIDxidWlsZGRpcj4vY29uZi9zZWxmdGVzdC5pbmMKLSAgICBkZWYgd3JpdGVfY29uZmlnKHNlbGYsIGRhdGEpOgotICAgICAgICBzZWxmLmxvZy5kZWJ1ZygiV3JpdGluZyB0bzogJXNcbiVzXG4iICUgKHNlbGYudGVzdGluY19wYXRoLCBkYXRhKSkKLSAgICAgICAgZnRvb2xzLndyaXRlX2ZpbGUoc2VsZi50ZXN0aW5jX3BhdGgsIGRhdGEpCi0KLSAgICAgICAgY3VzdG9tbWFjaGluZSA9IG9zLmdldGVudignQ1VTVE9NTUFDSElORScpCi0gICAgICAgIGlmIGN1c3RvbW1hY2hpbmUgYW5kICdNQUNISU5FJyBpbiBkYXRhOgotICAgICAgICAgICAgbWFjaGluZSA9IGdldF9iYl92YXIoJ01BQ0hJTkUnKQotICAgICAgICAgICAgc2VsZi5sb2cud2FybmluZygnTUFDSElORSBvdmVycmlkZGVuOiAlcycgJSBtYWNoaW5lKQotCi0gICAgIyBhcHBlbmQgdG8gPGJ1aWxkZGlyPi9jb25mL3NlbGZ0ZXN0LmluYwotICAgIGRlZiBhcHBlbmRfY29uZmlnKHNlbGYsIGRhdGEpOgotICAgICAgICBzZWxmLmxvZy5kZWJ1ZygiQXBwZW5kaW5nIHRvOiAlc1xuJXNcbiIgJSAoc2VsZi50ZXN0aW5jX3BhdGgsIGRhdGEpKQotICAgICAgICBmdG9vbHMuYXBwZW5kX2ZpbGUoc2VsZi50ZXN0aW5jX3BhdGgsIGRhdGEpCi0KLSAgICAgICAgY3VzdG9tbWFjaGluZSA9IG9zLmdldGVudignQ1VTVE9NTUFDSElORScpCi0gICAgICAgIGlmIGN1c3RvbW1hY2hpbmUgYW5kICdNQUNISU5FJyBpbiBkYXRhOgotICAgICAgICAgICAgbWFjaGluZSA9IGdldF9iYl92YXIoJ01BQ0hJTkUnKQotICAgICAgICAgICAgc2VsZi5sb2cud2FybmluZygnTUFDSElORSBvdmVycmlkZGVuOiAlcycgJSBtYWNoaW5lKQotCi0gICAgIyByZW1vdmUgZGF0YSBmcm9tIDxidWlsZGRpcj4vY29uZi9zZWxmdGVzdC5pbmMKLSAgICBkZWYgcmVtb3ZlX2NvbmZpZyhzZWxmLCBkYXRhKToKLSAgICAgICAgc2VsZi5sb2cuZGVidWcoIlJlbW92aW5nIGZyb206ICVzXG4lc1xuIiAlIChzZWxmLnRlc3RpbmNfcGF0aCwgZGF0YSkpCi0gICAgICAgIGZ0b29scy5yZW1vdmVfZnJvbV9maWxlKHNlbGYudGVzdGluY19wYXRoLCBkYXRhKQotCi0gICAgIyB3cml0ZSB0byBtZXRhLXNlZmx0ZXN0L3JlY2lwZXMtdGVzdC88cmVjaXBlPi90ZXN0X3JlY2lwZS5pbmMKLSAgICBkZWYgd3JpdGVfcmVjaXBlaW5jKHNlbGYsIHJlY2lwZSwgZGF0YSk6Ci0gICAgICAgIGluY19maWxlID0gb3MucGF0aC5qb2luKHNlbGYudGVzdGxheWVyX3BhdGgsICdyZWNpcGVzLXRlc3QnLCByZWNpcGUsICd0ZXN0X3JlY2lwZS5pbmMnKQotICAgICAgICBzZWxmLmxvZy5kZWJ1ZygiV3JpdGluZyB0bzogJXNcbiVzXG4iICUgKGluY19maWxlLCBkYXRhKSkKLSAgICAgICAgZnRvb2xzLndyaXRlX2ZpbGUoaW5jX2ZpbGUsIGRhdGEpCi0KLSAgICAjIGFwcGVuZCBkYXRhIHRvIG1ldGEtc2VmbHRlc3QvcmVjaXBlcy10ZXN0LzxyZWNpcGU+L3Rlc3RfcmVjaXBlLmluYwotICAgIGRlZiBhcHBlbmRfcmVjaXBlaW5jKHNlbGYsIHJlY2lwZSwgZGF0YSk6Ci0gICAgICAgIGluY19maWxlID0gb3MucGF0aC5qb2luKHNlbGYudGVzdGxheWVyX3BhdGgsICdyZWNpcGVzLXRlc3QnLCByZWNpcGUsICd0ZXN0X3JlY2lwZS5pbmMnKQotICAgICAgICBzZWxmLmxvZy5kZWJ1ZygiQXBwZW5kaW5nIHRvOiAlc1xuJXNcbiIgJSAoaW5jX2ZpbGUsIGRhdGEpKQotICAgICAgICBmdG9vbHMuYXBwZW5kX2ZpbGUoaW5jX2ZpbGUsIGRhdGEpCi0KLSAgICAjIHJlbW92ZSBkYXRhIGZyb20gbWV0YS1zZWZsdGVzdC9yZWNpcGVzLXRlc3QvPHJlY2lwZT4vdGVzdF9yZWNpcGUuaW5jCi0gICAgZGVmIHJlbW92ZV9yZWNpcGVpbmMoc2VsZiwgcmVjaXBlLCBkYXRhKToKLSAgICAgICAgaW5jX2ZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZXN0bGF5ZXJfcGF0aCwgJ3JlY2lwZXMtdGVzdCcsIHJlY2lwZSwgJ3Rlc3RfcmVjaXBlLmluYycpCi0gICAgICAgIHNlbGYubG9nLmRlYnVnKCJSZW1vdmluZyBmcm9tOiAlc1xuJXNcbiIgJSAoaW5jX2ZpbGUsIGRhdGEpKQotICAgICAgICBmdG9vbHMucmVtb3ZlX2Zyb21fZmlsZShpbmNfZmlsZSwgZGF0YSkKLQotICAgICMgZGVsZXRlIG1ldGEtc2VmbHRlc3QvcmVjaXBlcy10ZXN0LzxyZWNpcGU+L3Rlc3RfcmVjaXBlLmluYyBmaWxlCi0gICAgZGVmIGRlbGV0ZV9yZWNpcGVpbmMoc2VsZiwgcmVjaXBlKToKLSAgICAgICAgaW5jX2ZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZXN0bGF5ZXJfcGF0aCwgJ3JlY2lwZXMtdGVzdCcsIHJlY2lwZSwgJ3Rlc3RfcmVjaXBlLmluYycpCi0gICAgICAgIHNlbGYubG9nLmRlYnVnKCJEZWxldGluZyBmaWxlOiAlcyIgJSBpbmNfZmlsZSkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgb3MucmVtb3ZlKGluY19maWxlKQotICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FTk9FTlQ6Ci0gICAgICAgICAgICAgICAgcmFpc2UKLQotICAgICMgd3JpdGUgdG8gPGJ1aWxkZGlyPi9jb25mL2JibGF5ZXJzLmluYwotICAgIGRlZiB3cml0ZV9iYmxheWVyc19jb25maWcoc2VsZiwgZGF0YSk6Ci0gICAgICAgIHNlbGYubG9nLmRlYnVnKCJXcml0aW5nIHRvOiAlc1xuJXNcbiIgJSAoc2VsZi50ZXN0aW5jX2JibGF5ZXJzX3BhdGgsIGRhdGEpKQotICAgICAgICBmdG9vbHMud3JpdGVfZmlsZShzZWxmLnRlc3RpbmNfYmJsYXllcnNfcGF0aCwgZGF0YSkKLQotICAgICMgYXBwZW5kIHRvIDxidWlsZGRpcj4vY29uZi9iYmxheWVycy5pbmMKLSAgICBkZWYgYXBwZW5kX2JibGF5ZXJzX2NvbmZpZyhzZWxmLCBkYXRhKToKLSAgICAgICAgc2VsZi5sb2cuZGVidWcoIkFwcGVuZGluZyB0bzogJXNcbiVzXG4iICUgKHNlbGYudGVzdGluY19iYmxheWVyc19wYXRoLCBkYXRhKSkKLSAgICAgICAgZnRvb2xzLmFwcGVuZF9maWxlKHNlbGYudGVzdGluY19iYmxheWVyc19wYXRoLCBkYXRhKQotCi0gICAgIyByZW1vdmUgZGF0YSBmcm9tIDxidWlsZGRpcj4vY29uZi9iYmxheWVycy5pbmMKLSAgICBkZWYgcmVtb3ZlX2JibGF5ZXJzX2NvbmZpZyhzZWxmLCBkYXRhKToKLSAgICAgICAgc2VsZi5sb2cuZGVidWcoIlJlbW92aW5nIGZyb206ICVzXG4lc1xuIiAlIChzZWxmLnRlc3RpbmNfYmJsYXllcnNfcGF0aCwgZGF0YSkpCi0gICAgICAgIGZ0b29scy5yZW1vdmVfZnJvbV9maWxlKHNlbGYudGVzdGluY19iYmxheWVyc19wYXRoLCBkYXRhKQotCi0gICAgIyB3cml0ZSB0byA8YnVpbGRkaXI+L2NvbmYvbWFjaGluZS5pbmMKLSAgICBkZWYgc2V0X21hY2hpbmVfY29uZmlnKHNlbGYsIGRhdGEpOgotICAgICAgICBzZWxmLmxvZy5kZWJ1ZygiV3JpdGluZyB0bzogJXNcbiVzXG4iICUgKHNlbGYubWFjaGluZWluY19wYXRoLCBkYXRhKSkKLSAgICAgICAgZnRvb2xzLndyaXRlX2ZpbGUoc2VsZi5tYWNoaW5laW5jX3BhdGgsIGRhdGEpCi0KLQotZGVmIGdldF9hdmFpbGFibGVfbWFjaGluZXMoKToKLSAgICAjIEdldCBhIGxpc3Qgb2YgYWxsIGF2YWlsYWJsZSBtYWNoaW5lcwotICAgIGJicGF0aCA9IGdldF9iYl92YXIoJ0JCUEFUSCcpLnNwbGl0KCc6JykKLSAgICBtYWNoaW5lcyA9IFtdCi0KLSAgICBmb3IgcGF0aCBpbiBiYnBhdGg6Ci0gICAgICAgIGZvdW5kX21hY2hpbmVzID0gZ2xvYi5nbG9iKG9zLnBhdGguam9pbihwYXRoLCAnY29uZicsICdtYWNoaW5lJywgJyouY29uZicpKQotICAgICAgICBpZiBmb3VuZF9tYWNoaW5lczoKLSAgICAgICAgICAgIGZvciBpIGluIGZvdW5kX21hY2hpbmVzOgotICAgICAgICAgICAgICAgICMgZWc6ICcvaG9tZS88dXNlcj4vcG9reS9tZXRhLWludGVsL2NvbmYvbWFjaGluZS9pbnRlbC1jb3JlMi0zMi5jb25mJwotICAgICAgICAgICAgICAgIG1hY2hpbmVzLmFwcGVuZChvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUoaSkpWzBdKQotCi0gICAgcmV0dXJuIG1hY2hpbmVzCi0KLQotZGVmIGdldF9yYW5kb21fbWFjaGluZSgpOgotICAgICMgR2V0IGEgcmFuZG9tIG1hY2hpbmUKLSAgICByZXR1cm4gY2hvaWNlKGdldF9hdmFpbGFibGVfbWFjaGluZXMoKSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2JibGF5ZXJzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvYmJsYXllcnMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkNjU4YzUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvYmJsYXllcnMucHkKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi1pbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBvcwotaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCByZQotaW1wb3J0IHNodXRpbAotCi1pbXBvcnQgb2VxYS51dGlscy5mdG9vbHMgYXMgZnRvb2xzCi1mcm9tIG9lcWEuc2VsZnRlc3QuYmFzZSBpbXBvcnQgb2VTZWxmVGVzdAotZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQsIGdldF9iYl92YXIKLWZyb20gb2VxYS51dGlscy5kZWNvcmF0b3JzIGltcG9ydCB0ZXN0Y2FzZQotCi1jbGFzcyBCaXRiYWtlTGF5ZXJzKG9lU2VsZlRlc3QpOgotCi0gICAgQHRlc3RjYXNlKDc1NikKLSAgICBkZWYgdGVzdF9iaXRiYWtlbGF5ZXJzX3Nob3djcm9zc2RlcGVuZHMoc2VsZik6Ci0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgc2hvdy1jcm9zcy1kZXBlbmRzJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdhc3BlbGwnIGluIHJlc3VsdC5vdXRwdXQsIG1zZyA9ICJObyBkZXBlbmRlbmNpZXMgd2VyZSBzaG93bi4gYml0YmFrZS1sYXllcnMgc2hvdy1jcm9zcy1kZXBlbmRzIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKLQotICAgIEB0ZXN0Y2FzZSg4MykKLSAgICBkZWYgdGVzdF9iaXRiYWtlbGF5ZXJzX3Nob3dsYXllcnMoc2VsZik6Ci0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgc2hvdy1sYXllcnMnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoJ21ldGEtc2VsZnRlc3QnIGluIHJlc3VsdC5vdXRwdXQsIG1zZyA9ICJObyBsYXllcnMgd2VyZSBzaG93bi4gYml0YmFrZS1sYXllcnMgc2hvdy1sYXllcnMgb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQotCi0gICAgQHRlc3RjYXNlKDkzKQotICAgIGRlZiB0ZXN0X2JpdGJha2VsYXllcnNfc2hvd2FwcGVuZHMoc2VsZik6Ci0gICAgICAgIHJlY2lwZSA9ICJ4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lIgotICAgICAgICBiYl9maWxlID0gc2VsZi5nZXRfcmVjaXBlX2Jhc2VuYW1lKHJlY2lwZSkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyBzaG93LWFwcGVuZHMnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoYmJfZmlsZSBpbiByZXN1bHQub3V0cHV0LCBtc2c9IiVzIGZpbGUgd2FzIG5vdCByZWNvZ25pc2VkLiBiaXRiYWtlLWxheWVycyBzaG93LWFwcGVuZHMgb3V0cHV0OiAlcyIgJSAoYmJfZmlsZSwgcmVzdWx0Lm91dHB1dCkpCi0KLSAgICBAdGVzdGNhc2UoOTApCi0gICAgZGVmIHRlc3RfYml0YmFrZWxheWVyc19zaG93b3ZlcmxheWVkKHNlbGYpOgotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHNob3ctb3ZlcmxheWVkJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdhc3BlbGwnIGluIHJlc3VsdC5vdXRwdXQsIG1zZz0iYXNwZWxsIG92ZXJsYXllZCByZWNpcGUgd2FzIG5vdCByZWNvZ25pc2VkIGJpdGJha2UtbGF5ZXJzIHNob3ctb3ZlcmxheWVkICVzIiAlIHJlc3VsdC5vdXRwdXQpCi0KLSAgICBAdGVzdGNhc2UoOTUpCi0gICAgZGVmIHRlc3RfYml0YmFrZWxheWVyc19mbGF0dGVuKHNlbGYpOgotICAgICAgICByZWNpcGUgPSAieGN1cnNvci10cmFuc3BhcmVudC10aGVtZSIKLSAgICAgICAgcmVjaXBlX3BhdGggPSAicmVjaXBlcy1ncmFwaGljcy94Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lIgotICAgICAgICByZWNpcGVfZmlsZSA9IHNlbGYuZ2V0X3JlY2lwZV9iYXNlbmFtZShyZWNpcGUpCi0gICAgICAgIHRlc3RvdXRkaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgJ3Rlc3RfYml0YmFrZWxheWVyc19mbGF0dGVuJykKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmlzZGlyKHRlc3RvdXRkaXIpLCBtc2cgPSAidGVzdF9iaXRiYWtlbGF5ZXJzX2ZsYXR0ZW4gc2hvdWxkIG5vdCBleGlzdCBhdCB0aGlzIHBvaW50IGluIHRpbWUiKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlc3RvdXRkaXIpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgZmxhdHRlbiAlcycgJSB0ZXN0b3V0ZGlyKQotICAgICAgICBiYl9maWxlID0gb3MucGF0aC5qb2luKHRlc3RvdXRkaXIsIHJlY2lwZV9wYXRoLCByZWNpcGVfZmlsZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKGJiX2ZpbGUpLCBtc2cgPSAiQ2Fubm90IGZpbmQgeGN1cnNvci10cmFuc3BhcmVudC10aGVtZV8wLjEuMS5iYiBpbiB0aGUgdGVzdF9iaXRiYWtlbGF5ZXJzX2ZsYXR0ZW4gbG9jYWwgZGlyLiIpCi0gICAgICAgIGNvbnRlbnRzID0gZnRvb2xzLnJlYWRfZmlsZShiYl9maWxlKQotICAgICAgICBmaW5kX2luX2NvbnRlbnRzID0gcmUuc2VhcmNoKCIjIyMjIyBiYmFwcGVuZGVkIGZyb20gbWV0YS1zZWxmdGVzdCAjIyMjI1xuKC4qXG4pKmluY2x1ZGUgdGVzdF9yZWNpcGUuaW5jIiwgY29udGVudHMpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmaW5kX2luX2NvbnRlbnRzLCBtc2cgPSAiRmxhdHRlbmluZyBsYXllcnMgZGlkIG5vdCB3b3JrLiBiaXRiYWtlLWxheWVycyBmbGF0dGVuIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKLQotICAgIEB0ZXN0Y2FzZSgxMTk1KQotICAgIGRlZiB0ZXN0X2JpdGJha2VsYXllcnNfYWRkX3JlbW92ZShzZWxmKToKLSAgICAgICAgdGVzdF9sYXllciA9IG9zLnBhdGguam9pbihnZXRfYmJfdmFyKCdDT1JFQkFTRScpLCAnbWV0YS1za2VsZXRvbicpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgc2hvdy1sYXllcnMnKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdtZXRhLXNrZWxldG9uJywgcmVzdWx0Lm91dHB1dCwgIlRoaXMgdGVzdCBjYW5ub3QgcnVuIHdpdGggbWV0YS1za2VsZXRvbiBpbiBiYmxheWVycy5jb25mLiBiaXRiYWtlLWxheWVycyBzaG93LWxheWVycyBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgYWRkLWxheWVyICVzJyAlIHRlc3RfbGF5ZXIpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgc2hvdy1sYXllcnMnKQotICAgICAgICBzZWxmLmFzc2VydEluKCdtZXRhLXNrZWxldG9uJywgcmVzdWx0Lm91dHB1dCwgbXNnID0gIlNvbWV0aGluZyB3cm9uZyBoYXBwZW5lZC4gbWV0YS1za2VsZXRvbiBsYXllciB3YXMgbm90IGFkZGVkIHRvIGNvbmYvYmJsYXllcnMuY29uZi4gIGJpdGJha2UtbGF5ZXJzIHNob3ctbGF5ZXJzIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgJXMnICUgdGVzdF9sYXllcikKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyBzaG93LWxheWVycycpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ21ldGEtc2tlbGV0b24nLCByZXN1bHQub3V0cHV0LCBtc2cgPSAibWV0YS1za2VsZXRvbiBzaG91bGQgaGF2ZSBiZWVuIHJlbW92ZWQgYXQgdGhpcyBzdGVwLiAgYml0YmFrZS1sYXllcnMgc2hvdy1sYXllcnMgb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIGFkZC1sYXllciAlcycgJSB0ZXN0X2xheWVyKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHNob3ctbGF5ZXJzJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbignbWV0YS1za2VsZXRvbicsIHJlc3VsdC5vdXRwdXQsIG1zZyA9ICJTb21ldGhpbmcgd3JvbmcgaGFwcGVuZWQuIG1ldGEtc2tlbGV0b24gbGF5ZXIgd2FzIG5vdCBhZGRlZCB0byBjb25mL2JibGF5ZXJzLmNvbmYuICBiaXRiYWtlLWxheWVycyBzaG93LWxheWVycyBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovbWV0YS1za2VsZXRvbicpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgc2hvdy1sYXllcnMnKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdtZXRhLXNrZWxldG9uJywgcmVzdWx0Lm91dHB1dCwgbXNnID0gIm1ldGEtc2tlbGV0b24gc2hvdWxkIGhhdmUgYmVlbiByZW1vdmVkIGF0IHRoaXMgc3RlcC4gIGJpdGJha2UtbGF5ZXJzIHNob3ctbGF5ZXJzIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKLQotICAgIEB0ZXN0Y2FzZSgxMzg0KQotICAgIGRlZiB0ZXN0X2JpdGJha2VsYXllcnNfc2hvd3JlY2lwZXMoc2VsZik6Ci0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgc2hvdy1yZWNpcGVzJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbignYXNwZWxsOicsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ210ZC11dGlsczonLCByZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKCdjb3JlLWltYWdlLW1pbmltYWw6JywgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyBzaG93LXJlY2lwZXMgbXRkLXV0aWxzJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbignbXRkLXV0aWxzOicsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ2FzcGVsbDonLCByZXN1bHQub3V0cHV0KQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHNob3ctcmVjaXBlcyAtaSBpbWFnZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2NvcmUtaW1hZ2UtbWluaW1hbCcsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ210ZC11dGlsczonLCByZXN1bHQub3V0cHV0KQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHNob3ctcmVjaXBlcyAtaSBjbWFrZSxwa2djb25maWcnKQotICAgICAgICBzZWxmLmFzc2VydEluKCdsaWJwcm94eTonLCByZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdtdGQtdXRpbHM6JywgcmVzdWx0Lm91dHB1dCkgIyBkb2Vzbid0IGluaGVyaXQgZWl0aGVyCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ3dnZXQ6JywgcmVzdWx0Lm91dHB1dCkgIyBkb2Vzbid0IGluaGVyaXQgY21ha2UKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbignd2FmZmxlOicsIHJlc3VsdC5vdXRwdXQpICMgZG9lc24ndCBpbmhlcml0IHBrZ2NvbmZpZwotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHNob3ctcmVjaXBlcyAtaSBub25leGlzdGVudGNsYXNzJywgaWdub3JlX3N0YXR1cz1UcnVlKQotICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJlc3VsdC5zdGF0dXMsIDAsICdiaXRiYWtlLWxheWVycyBzaG93LXJlY2lwZXMgLWkgbm9uZXhpc3RlbnRjbGFzcyBzaG91bGQgaGF2ZSBmYWlsZWQnKQotICAgICAgICBzZWxmLmFzc2VydEluKCdFUlJPUjonLCByZXN1bHQub3V0cHV0KQotCi0gICAgZGVmIGdldF9yZWNpcGVfYmFzZW5hbWUoc2VsZiwgcmVjaXBlKToKLSAgICAgICAgcmVjaXBlX2ZpbGUgPSAiIgotICAgICAgICByZXN1bHQgPSBydW5DbWQoImJpdGJha2UtbGF5ZXJzIHNob3ctcmVjaXBlcyAtZiAlcyIgJSByZWNpcGUpCi0gICAgICAgIGZvciBsaW5lIGluIHJlc3VsdC5vdXRwdXQuc3BsaXRsaW5lcygpOgotICAgICAgICAgICAgaWYgcmVjaXBlIGluIGxpbmU6Ci0gICAgICAgICAgICAgICAgcmVjaXBlX2ZpbGUgPSBsaW5lCi0gICAgICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUocmVjaXBlX2ZpbGUpLCBtc2cgPSAiQ2FuJ3QgZmluZCByZWNpcGUgZmlsZSBmb3IgJXMiICUgcmVjaXBlKQotICAgICAgICByZXR1cm4gb3MucGF0aC5iYXNlbmFtZShyZWNpcGVfZmlsZSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2JidGVzdHMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9iYnRlc3RzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NmUwOWY1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2JidGVzdHMucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyNzggKzAsMCBAQAotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLQotaW1wb3J0IG9lcWEudXRpbHMuZnRvb2xzIGFzIGZ0b29scwotZnJvbSBvZXFhLnNlbGZ0ZXN0LmJhc2UgaW1wb3J0IG9lU2VsZlRlc3QKLWZyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kLCBiaXRiYWtlLCBnZXRfYmJfdmFyLCBnZXRfYmJfdmFycwotZnJvbSBvZXFhLnV0aWxzLmRlY29yYXRvcnMgaW1wb3J0IHRlc3RjYXNlCi0KLWNsYXNzIEJpdGJha2VUZXN0cyhvZVNlbGZUZXN0KToKLQotICAgIGRlZiBnZXRsaW5lKHNlbGYsIHJlcywgbGluZSk6Ci0gICAgICAgIGZvciBsIGluIHJlcy5vdXRwdXQuc3BsaXQoJ1xuJyk6Ci0gICAgICAgICAgICBpZiBsaW5lIGluIGw6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGwKLQotICAgIEB0ZXN0Y2FzZSg3ODkpCi0gICAgZGVmIHRlc3RfcnVuX2JpdGJha2VfZnJvbV9kaXJfMShzZWxmKToKLSAgICAgICAgb3MuY2hkaXIob3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsICdjb25mJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYml0YmFrZSgnLWUnKS5zdGF0dXMsIDAsIG1zZyA9ICJiaXRiYWtlIGNvdWxkbid0IHJ1biBmcm9tIFwiY29uZlwiIGRpciIpCi0KLSAgICBAdGVzdGNhc2UoNzkwKQotICAgIGRlZiB0ZXN0X3J1bl9iaXRiYWtlX2Zyb21fZGlyXzIoc2VsZik6Ci0gICAgICAgIG15X2VudiA9IG9zLmVudmlyb24uY29weSgpCi0gICAgICAgIG15X2VudlsnQkJQQVRIJ10gPSBteV9lbnZbJ0JVSUxERElSJ10KLSAgICAgICAgb3MuY2hkaXIob3MucGF0aC5kaXJuYW1lKG9zLmVudmlyb25bJ0JVSUxERElSJ10pKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJpdGJha2UoJy1lJywgZW52PW15X2Vudikuc3RhdHVzLCAwLCBtc2cgPSAiYml0YmFrZSBjb3VsZG4ndCBydW4gZnJvbSBidWlsZGRpciIpCi0KLSAgICBAdGVzdGNhc2UoODA2KQotICAgIGRlZiB0ZXN0X2V2ZW50X2hhbmRsZXIoc2VsZik6Ci0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCJJTkhFUklUICs9IFwidGVzdF9ldmVudHNcIiIpCi0gICAgICAgIHJlc3VsdCA9IGJpdGJha2UoJ200LW5hdGl2ZScpCi0gICAgICAgIGZpbmRfYnVpbGRfc3RhcnRlZCA9IHJlLnNlYXJjaCgiTk9URTogVGVzdCBmb3IgYmJcLmV2ZW50XC5CdWlsZFN0YXJ0ZWQoXG4uKikqTk9URTogRXhlY3V0aW5nIFJ1blF1ZXVlIFRhc2tzIiwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgZmluZF9idWlsZF9jb21wbGV0ZWQgPSByZS5zZWFyY2goIlRhc2tzIFN1bW1hcnk6LiooXG4uKikqTk9URTogVGVzdCBmb3IgYmJcLmV2ZW50XC5CdWlsZENvbXBsZXRlZCIsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmaW5kX2J1aWxkX3N0YXJ0ZWQsIG1zZyA9ICJNYXRjaCBmYWlsZWQgaW46XG4lcyIgICUgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZpbmRfYnVpbGRfY29tcGxldGVkLCBtc2cgPSAiTWF0Y2ggZmFpbGVkIGluOlxuJXMiICUgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgnVGVzdCBmb3IgYmIuZXZlbnQuSW52YWxpZEV2ZW50JyBpbiByZXN1bHQub3V0cHV0LCBtc2cgPSAiXCJUZXN0IGZvciBiYi5ldmVudC5JbnZhbGlkRXZlbnRcIiBtZXNzYWdlIGZvdW5kIGR1cmluZyBiaXRiYWtlIHByb2Nlc3MuIGJpdGJha2Ugb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQotCi0gICAgQHRlc3RjYXNlKDEwMykKLSAgICBkZWYgdGVzdF9sb2NhbF9zc3RhdGUoc2VsZik6Ci0gICAgICAgIGJpdGJha2UoJ200LW5hdGl2ZScpCi0gICAgICAgIGJpdGJha2UoJ200LW5hdGl2ZSAtY2NsZWFuJykKLSAgICAgICAgcmVzdWx0ID0gYml0YmFrZSgnbTQtbmF0aXZlJykKLSAgICAgICAgZmluZF9zZXRzY2VuZSA9IHJlLnNlYXJjaCgibTQtbmF0aXZlLipkb18uKl9zZXRzY2VuZSIsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmaW5kX3NldHNjZW5lLCBtc2cgPSAiTm8gXCJtNC1uYXRpdmUuKmRvXy4qX3NldHNjZW5lXCIgbWVzc2FnZSBmb3VuZCBkdXJpbmcgYml0YmFrZSBtNC1uYXRpdmUuIGJpdGJha2Ugb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0ICkKLQotICAgIEB0ZXN0Y2FzZSgxMDUpCi0gICAgZGVmIHRlc3RfYml0YmFrZV9pbnZhbGlkX3JlY2lwZShzZWxmKToKLSAgICAgICAgcmVzdWx0ID0gYml0YmFrZSgnLWIgYXNkZicsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCJFUlJPUjogVW5hYmxlIHRvIGZpbmQgYW55IHJlY2lwZSBmaWxlIG1hdGNoaW5nICdhc2RmJyIgaW4gcmVzdWx0Lm91dHB1dCwgbXNnID0gIlRob3VnaCBhc2RmIHJlY2lwZSBkb2Vzbid0IGV4aXN0LCBiaXRiYWtlIGRpZG4ndCBvdXRwdXQgYW55IGVyci4gbWVzc2FnZS4gYml0YmFrZSBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCi0KLSAgICBAdGVzdGNhc2UoMTA3KQotICAgIGRlZiB0ZXN0X2JpdGJha2VfaW52YWxpZF90YXJnZXQoc2VsZik6Ci0gICAgICAgIHJlc3VsdCA9IGJpdGJha2UoJ2FzZGYnLCBpZ25vcmVfc3RhdHVzPVRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgiRVJST1I6IE5vdGhpbmcgUFJPVklERVMgJ2FzZGYnIiBpbiByZXN1bHQub3V0cHV0LCBtc2cgPSAiVGhvdWdoIG5vICdhc2RmJyB0YXJnZXQgZXhpc3RzLCBiaXRiYWtlIGRpZG4ndCBvdXRwdXQgYW55IGVyci4gbWVzc2FnZS4gYml0YmFrZSBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCi0KLSAgICBAdGVzdGNhc2UoMTA2KQotICAgIGRlZiB0ZXN0X3dhcm5pbmdzX2Vycm9ycyhzZWxmKToKLSAgICAgICAgcmVzdWx0ID0gYml0YmFrZSgnLWIgYXNkZicsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKLSAgICAgICAgZmluZF93YXJuaW5ncyA9IHJlLnNlYXJjaCgiU3VtbWFyeTogVGhlcmUgdy57MiwzfT8gWzEtOV1bMC05XSogV0FSTklORyBtZXNzYWdlcyogc2hvd24iLCByZXN1bHQub3V0cHV0KQotICAgICAgICBmaW5kX2Vycm9ycyA9IHJlLnNlYXJjaCgiU3VtbWFyeTogVGhlcmUgdy57MiwzfT8gWzEtOV1bMC05XSogRVJST1IgbWVzc2FnZXMqIHNob3duIiwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZpbmRfd2FybmluZ3MsIG1zZz0iRGlkIG5vdCBmaW5kIHRoZSBtdW1iZXIgb2Ygd2FybmluZ3MgYXQgdGhlIGVuZCBvZiB0aGUgYnVpbGQ6XG4iICsgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZpbmRfZXJyb3JzLCBtc2c9IkRpZCBub3QgZmluZCB0aGUgbXVtYmVyIG9mIGVycm9ycyBhdCB0aGUgZW5kIG9mIHRoZSBidWlsZDpcbiIgKyByZXN1bHQub3V0cHV0KQotCi0gICAgQHRlc3RjYXNlKDEwOCkKLSAgICBkZWYgdGVzdF9pbnZhbGlkX3BhdGNoKHNlbGYpOgotICAgICAgICAjIFRoaXMgcGF0Y2ggYWxyZWFkeSBleGlzdHMgaW4gU1JDX1VSSSBzbyBhZGRpbmcgaXQgYWdhaW4gd2lsbCBjYXVzZSB0aGUKLSAgICAgICAgIyBwYXRjaCB0byBmYWlsLgotICAgICAgICBzZWxmLndyaXRlX3JlY2lwZWluYygnbWFuJywgJ1NSQ19VUkkgKz0gImZpbGU6Ly9tYW4tMS41aDEtbWFrZS5wYXRjaCInKQotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiSU5IRVJJVF9yZW1vdmUgPSBcInJlcG9ydC1lcnJvclwiIikKLSAgICAgICAgcmVzdWx0ID0gYml0YmFrZSgnbWFuIC1jIHBhdGNoJywgaWdub3JlX3N0YXR1cz1UcnVlKQotICAgICAgICBzZWxmLmRlbGV0ZV9yZWNpcGVpbmMoJ21hbicpCi0gICAgICAgIGJpdGJha2UoJy1jY2xlYW4gbWFuJykKLSAgICAgICAgbGluZSA9IHNlbGYuZ2V0bGluZShyZXN1bHQsICJGdW5jdGlvbiBmYWlsZWQ6IHBhdGNoX2RvX3BhdGNoIikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxpbmUgYW5kIGxpbmUuc3RhcnRzd2l0aCgiRVJST1I6IiksIG1zZyA9ICJSZXBlYXRlZCBwYXRjaCBhcHBsaWNhdGlvbiBkaWRuJ3QgZmFpbC4gYml0YmFrZSBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCi0KLSAgICBAdGVzdGNhc2UoMTM1NCkKLSAgICBkZWYgdGVzdF9mb3JjZV90YXNrXzEoc2VsZik6Ci0gICAgICAgICMgdGVzdCAxIGZyb20gYnVnIDU4NzUKLSAgICAgICAgdGVzdF9yZWNpcGUgPSAnemxpYicKLSAgICAgICAgdGVzdF9kYXRhID0gIk1pY3Jvc29mdCBNYWRlIE5vIFByb2ZpdCBGcm9tIEFueW9uZSdzIFp1bmVzIFlvIgotICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydEJywgJ1BLR0RFU1QnLCAnbWFuZGlyJ10sIHRlc3RfcmVjaXBlKQotICAgICAgICBpbWFnZV9kaXIgPSBiYl92YXJzWydEJ10KLSAgICAgICAgcGtnc3BsaXRfZGlyID0gYmJfdmFyc1snUEtHREVTVCddCi0gICAgICAgIG1hbl9kaXIgPSBiYl92YXJzWydtYW5kaXInXQotCi0gICAgICAgIGJpdGJha2UoJy1jIGNsZWFuICVzJyAlIHRlc3RfcmVjaXBlKQotICAgICAgICBiaXRiYWtlKCctYyBwYWNrYWdlIC1mICVzJyAlIHRlc3RfcmVjaXBlKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlIC1jIGNsZWFuICVzJyAlIHRlc3RfcmVjaXBlKQotCi0gICAgICAgIG1hbl9maWxlID0gb3MucGF0aC5qb2luKGltYWdlX2RpciArIG1hbl9kaXIsICdtYW4zL3psaWIuMycpCi0gICAgICAgIGZ0b29scy5hcHBlbmRfZmlsZShtYW5fZmlsZSwgdGVzdF9kYXRhKQotICAgICAgICBiaXRiYWtlKCctYyBwYWNrYWdlIC1mICVzJyAlIHRlc3RfcmVjaXBlKQotCi0gICAgICAgIG1hbl9zcGxpdF9maWxlID0gb3MucGF0aC5qb2luKHBrZ3NwbGl0X2RpciwgJ3psaWItZG9jJyArIG1hbl9kaXIsICdtYW4zL3psaWIuMycpCi0gICAgICAgIG1hbl9zcGxpdF9jb250ZW50ID0gZnRvb2xzLnJlYWRfZmlsZShtYW5fc3BsaXRfZmlsZSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbih0ZXN0X2RhdGEsIG1hbl9zcGxpdF9jb250ZW50LCAnVGhlIG1hbiBmaWxlIGhhcyBub3QgY2hhbmdlZCBpbiBwYWNrYWdlcy1zcGxpdC4nKQotCi0gICAgICAgIHJldCA9IGJpdGJha2UodGVzdF9yZWNpcGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3Rhc2sgZG9fcGFja2FnZV93cml0ZV9ycG06JywgcmV0Lm91dHB1dCwgJ1Rhc2sgZG9fcGFja2FnZV93cml0ZV9ycG0gZGlkIG5vdCByZS1leGVjdXRlZC4nKQotCi0gICAgQHRlc3RjYXNlKDE2MykKLSAgICBkZWYgdGVzdF9mb3JjZV90YXNrXzIoc2VsZik6Ci0gICAgICAgICMgdGVzdCAyIGZyb20gYnVnIDU4NzUKLSAgICAgICAgdGVzdF9yZWNpcGUgPSAnemxpYicKLQotICAgICAgICBiaXRiYWtlKHRlc3RfcmVjaXBlKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlIC1jIGNsZWFuICVzJyAlIHRlc3RfcmVjaXBlKQotCi0gICAgICAgIHJlc3VsdCA9IGJpdGJha2UoJy1DIGNvbXBpbGUgJXMnICUgdGVzdF9yZWNpcGUpCi0gICAgICAgIGxvb2tfZm9yX3Rhc2tzID0gWydkb19jb21waWxlOicsICdkb19pbnN0YWxsOicsICdkb19wb3B1bGF0ZV9zeXNyb290OicsICdkb19wYWNrYWdlOiddCi0gICAgICAgIGZvciB0YXNrIGluIGxvb2tfZm9yX3Rhc2tzOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRJbih0YXNrLCByZXN1bHQub3V0cHV0LCBtc2c9IkNvdWxkbid0IGZpbmQgJXMgdGFzay4iKQotCi0gICAgQHRlc3RjYXNlKDE2NykKLSAgICBkZWYgdGVzdF9iaXRiYWtlX2coc2VsZik6Ci0gICAgICAgIHJlc3VsdCA9IGJpdGJha2UoJy1nIGNvcmUtaW1hZ2UtbWluaW1hbCcpCi0gICAgICAgIGZvciBmIGluIFsncG4tYnVpbGRsaXN0JywgJ3JlY2lwZS1kZXBlbmRzLmRvdCcsICd0YXNrLWRlcGVuZHMuZG90J106Ci0gICAgICAgICAgICBzZWxmLmFkZENsZWFudXAob3MucmVtb3ZlLCBmKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoJ1Rhc2sgZGVwZW5kZW5jaWVzIHNhdmVkIHRvIFwndGFzay1kZXBlbmRzLmRvdFwnJyBpbiByZXN1bHQub3V0cHV0LCBtc2cgPSAiTm8gdGFzayBkZXBlbmRlbmN5IFwidGFzay1kZXBlbmRzLmRvdFwiIGZpbGUgd2FzIGdlbmVyYXRlZCBmb3IgdGhlIGdpdmVuIHRhc2sgdGFyZ2V0LiBiaXRiYWtlIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdidXN5Ym94JyBpbiBmdG9vbHMucmVhZF9maWxlKG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCAndGFzay1kZXBlbmRzLmRvdCcpKSwgbXNnID0gIk5vIFwiYnVzeWJveFwiIGRlcGVuZGVuY3kgZm91bmQgaW4gdGFzay1kZXBlbmRzLmRvdCBmaWxlLiIpCi0KLSAgICBAdGVzdGNhc2UoODk5KQotICAgIGRlZiB0ZXN0X2ltYWdlX21hbmlmZXN0KHNlbGYpOgotICAgICAgICBiaXRiYWtlKCdjb3JlLWltYWdlLW1pbmltYWwnKQotICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWyJERVBMT1lfRElSX0lNQUdFIiwgIklNQUdFX0xJTktfTkFNRSJdLCAiY29yZS1pbWFnZS1taW5pbWFsIikKLSAgICAgICAgZGVwbG95ZGlyID0gYmJfdmFyc1siREVQTE9ZX0RJUl9JTUFHRSJdCi0gICAgICAgIGltYWdlbmFtZSA9IGJiX3ZhcnNbIklNQUdFX0xJTktfTkFNRSJdCi0gICAgICAgIG1hbmlmZXN0ID0gb3MucGF0aC5qb2luKGRlcGxveWRpciwgaW1hZ2VuYW1lICsgIi5tYW5pZmVzdCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzbGluayhtYW5pZmVzdCksIG1zZz0iTm8gbWFuaWZlc3QgZmlsZSBjcmVhdGVkIGZvciBpbWFnZS4gSXQgc2hvdWxkIGhhdmUgYmVlbiBjcmVhdGVkIGluICVzIiAlIG1hbmlmZXN0KQotCi0gICAgQHRlc3RjYXNlKDE2OCkKLSAgICBkZWYgdGVzdF9pbnZhbGlkX3JlY2lwZV9zcmNfdXJpKHNlbGYpOgotICAgICAgICBkYXRhID0gJ1NSQ19VUkkgPSAiZmlsZTovL2ludmFsaWQiJwotICAgICAgICBzZWxmLndyaXRlX3JlY2lwZWluYygnbWFuJywgZGF0YSkKLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIiIiRExfRElSID0gXCIke1RPUERJUn0vZG93bmxvYWQtc2VsZnRlc3RcIgotU1NUQVRFX0RJUiA9IFwiJHtUT1BESVJ9L2Rvd25sb2FkLXNlbGZ0ZXN0XCIKLUlOSEVSSVRfcmVtb3ZlID0gXCJyZXBvcnQtZXJyb3JcIgotIiIiKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCAiZG93bmxvYWQtc2VsZnRlc3QiKSkKLQotICAgICAgICBiaXRiYWtlKCctY2NsZWFuYWxsIG1hbicpCi0gICAgICAgIHJlc3VsdCA9IGJpdGJha2UoJy1jIGZldGNoIG1hbicsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKLSAgICAgICAgYml0YmFrZSgnLWNjbGVhbmFsbCBtYW4nKQotICAgICAgICBzZWxmLmRlbGV0ZV9yZWNpcGVpbmMoJ21hbicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnN0YXR1cywgMSwgbXNnPSJDb21tYW5kIHN1Y2NlZGVkIHdoZW4gaXQgc2hvdWxkIGhhdmUgZmFpbGVkLiBiaXRiYWtlIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdGZXRjaGVyIGZhaWx1cmU6IFVuYWJsZSB0byBmaW5kIGZpbGUgZmlsZTovL2ludmFsaWQgYW55d2hlcmUuIFRoZSBwYXRocyB0aGF0IHdlcmUgc2VhcmNoZWQgd2VyZTonIGluIHJlc3VsdC5vdXRwdXQsIG1zZyA9ICJcImludmFsaWRcIiBmaWxlIFwKLWRvZXNuJ3QgZXhpc3QsIHlldCBubyBlcnJvciBtZXNzYWdlIGVuY291bnRlcmVkLiBiaXRiYWtlIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgbGluZSA9IHNlbGYuZ2V0bGluZShyZXN1bHQsICdGZXRjaGVyIGZhaWx1cmUgZm9yIFVSTDogXCdmaWxlOi8vaW52YWxpZFwnLiBVbmFibGUgdG8gZmV0Y2ggVVJMIGZyb20gYW55IHNvdXJjZS4nKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobGluZSBhbmQgbGluZS5zdGFydHN3aXRoKCJFUlJPUjoiKSwgbXNnID0gIlwiaW52YWxpZFwiIGZpbGUgXAotZG9lc24ndCBleGlzdCwgeWV0IGZldGNoZXIgZGlkbid0IHJlcG9ydCBhbnkgZXJyb3IuIGJpdGJha2Ugb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQotCi0gICAgQHRlc3RjYXNlKDE3MSkKLSAgICBkZWYgdGVzdF9yZW5hbWVfZG93bmxvYWRlZF9maWxlKHNlbGYpOgotICAgICAgICAjIFRPRE8gdW5pcXVlIGRsZGlyIGluc3RlYWQgb2YgdXNpbmcgY2xlYW5hbGwKLSAgICAgICAgIyBUT0RPOiBuZWVkIHRvIHNldCBzc3RhdGVkaXI/Ci0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCIiIkRMX0RJUiA9IFwiJHtUT1BESVJ9L2Rvd25sb2FkLXNlbGZ0ZXN0XCIKLVNTVEFURV9ESVIgPSBcIiR7VE9QRElSfS9kb3dubG9hZC1zZWxmdGVzdFwiCi0iIiIpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAob3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsICJkb3dubG9hZC1zZWxmdGVzdCIpKQotCi0gICAgICAgIGRhdGEgPSAnU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2FzcGVsbC9hc3BlbGwtJHtQVn0udGFyLmd6O2Rvd25sb2FkZmlsZW5hbWU9dGVzdC1hc3BlbGwudGFyLmd6IicKLSAgICAgICAgc2VsZi53cml0ZV9yZWNpcGVpbmMoJ2FzcGVsbCcsIGRhdGEpCi0gICAgICAgIHJlc3VsdCA9IGJpdGJha2UoJy1mIC1jIGZldGNoIGFzcGVsbCcsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKLSAgICAgICAgc2VsZi5kZWxldGVfcmVjaXBlaW5jKCdhc3BlbGwnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5zdGF0dXMsIDAsIG1zZyA9ICJDb3VsZG4ndCBmZXRjaCBhc3BlbGwuICVzIiAlIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIGRsX2RpciA9IGdldF9iYl92YXIoIkRMX0RJUiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oZGxfZGlyLCAndGVzdC1hc3BlbGwudGFyLmd6JykpLCBtc2cgPSAiRmlsZSByZW5hbWUgZmFpbGVkLiBObyBjb3JyZXNwb25kaW5nIHRlc3QtYXNwZWxsLnRhci5neiBmaWxlIGZvdW5kIHVuZGVyICVzIiAlIGRsX2RpcikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihkbF9kaXIsICd0ZXN0LWFzcGVsbC50YXIuZ3ouZG9uZScpKSwgIkZpbGUgcmVuYW1lIGZhaWxlZC4gTm8gY29ycmVzcG9uZGluZyB0ZXN0LWFzcGVsbC50YXIuZ3ouZG9uZSBmaWxlIGZvdW5kIHVuZGVyICVzIiAlIGRsX2RpcikKLQotICAgIEB0ZXN0Y2FzZSgxMDI4KQotICAgIGRlZiB0ZXN0X2Vudmlyb25tZW50KHNlbGYpOgotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiVEVTVF9FTlY9XCJsb2NhbGNvbmZcIiIpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZSAtZSB8IGdyZXAgVEVTVF9FTlY9JykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdsb2NhbGNvbmYnIGluIHJlc3VsdC5vdXRwdXQsIG1zZyA9ICJiaXRiYWtlIGRpZG4ndCByZXBvcnQgYW55IHZhbHVlIGZvciBURVNUX0VOViB2YXJpYWJsZS4gVG8gdGVzdCwgcnVuICdiaXRiYWtlIC1lIHwgZ3JlcCBURVNUX0VOVj0nIikKLQotICAgIEB0ZXN0Y2FzZSgxMDI5KQotICAgIGRlZiB0ZXN0X2RyeV9ydW4oc2VsZik6Ci0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZSAtbiBtNC1uYXRpdmUnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlc3VsdC5zdGF0dXMsICJiaXRiYWtlIGRyeSBydW4gZGlkbid0IHJ1biBhcyBleHBlY3RlZC4gJXMiICUgcmVzdWx0Lm91dHB1dCkKLQotICAgIEB0ZXN0Y2FzZSgxMDMwKQotICAgIGRlZiB0ZXN0X2p1c3RfcGFyc2Uoc2VsZik6Ci0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZSAtcCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzdWx0LnN0YXR1cywgImVycm9ycyBlbmNvdW50ZXJlZCB3aGVuIHBhcnNpbmcgcmVjaXBlcy4gJXMiICUgcmVzdWx0Lm91dHB1dCkKLQotICAgIEB0ZXN0Y2FzZSgxMDMxKQotICAgIGRlZiB0ZXN0X3ZlcnNpb24oc2VsZik6Ci0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZSAtcyB8IGdyZXAgd2dldCcpCi0gICAgICAgIGZpbmQgPSByZS5zZWFyY2goIndnZXQgKjooWzAtOWEtekEtWlwuXC1dKykiLCByZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoZmluZCwgIk5vIHZlcnNpb24gcmV0dXJuZWQgZm9yIHNlYXJjaGVkIHJlY2lwZS4gYml0YmFrZSBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCi0KLSAgICBAdGVzdGNhc2UoMTAzMikKLSAgICBkZWYgdGVzdF9wcmVmaWxlKHNlbGYpOgotICAgICAgICBwcmVjb25mID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsICdjb25mL3ByZWZpbGUuY29uZicpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAocHJlY29uZikKLSAgICAgICAgZnRvb2xzLndyaXRlX2ZpbGUocHJlY29uZiAsIlRFU1RfUFJFRklMRT1cInByZWZpbGVcIiIpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZSAtciBjb25mL3ByZWZpbGUuY29uZiAtZSB8IGdyZXAgVEVTVF9QUkVGSUxFPScpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgncHJlZmlsZScgaW4gcmVzdWx0Lm91dHB1dCwgIlByZWNvbmZpZ3VyZSBmaWxlIFwicHJlZmlsZS5jb25mXCJ3YXMgbm90IHRha2VuIGludG8gY29uc2lkZXJhdGlvbi4gIikKLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIlRFU1RfUFJFRklMRT1cImxvY2FsY29uZlwiIikKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlIC1yIGNvbmYvcHJlZmlsZS5jb25mIC1lIHwgZ3JlcCBURVNUX1BSRUZJTEU9JykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdsb2NhbGNvbmYnIGluIHJlc3VsdC5vdXRwdXQsICJQcmVjb25maWd1cmUgZmlsZSBcInByZWZpbGUuY29uZlwid2FzIG5vdCB0YWtlbiBpbnRvIGNvbnNpZGVyYXRpb24uIikKLQotICAgIEB0ZXN0Y2FzZSgxMDMzKQotICAgIGRlZiB0ZXN0X3Bvc3RmaWxlKHNlbGYpOgotICAgICAgICBwb3N0Y29uZiA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCAnY29uZi9wb3N0ZmlsZS5jb25mJykKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChwb3N0Y29uZikKLSAgICAgICAgZnRvb2xzLndyaXRlX2ZpbGUocG9zdGNvbmYgLCAiVEVTVF9QT1NURklMRT1cInBvc3RmaWxlXCIiKQotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiVEVTVF9QT1NURklMRT1cImxvY2FsY29uZlwiIikKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlIC1SIGNvbmYvcG9zdGZpbGUuY29uZiAtZSB8IGdyZXAgVEVTVF9QT1NURklMRT0nKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3Bvc3RmaWxlJyBpbiByZXN1bHQub3V0cHV0LCAiUG9zdGNvbmZpZ3VyZSBmaWxlIFwicG9zdGZpbGUuY29uZlwid2FzIG5vdCB0YWtlbiBpbnRvIGNvbnNpZGVyYXRpb24uIikKLQotICAgIEB0ZXN0Y2FzZSgxMDM0KQotICAgIGRlZiB0ZXN0X2NoZWNrdXJpKHNlbGYpOgotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UgLWMgY2hlY2t1cmkgbTQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlc3VsdC5zdGF0dXMsIG1zZyA9ICJcImNoZWNrdXJpXCIgdGFzayB3YXMgbm90IGV4ZWN1dGVkLiBiaXRiYWtlIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKLQotICAgIEB0ZXN0Y2FzZSgxMDM1KQotICAgIGRlZiB0ZXN0X2NvbnRpbnVlKHNlbGYpOgotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiIiJETF9ESVIgPSBcIiR7VE9QRElSfS9kb3dubG9hZC1zZWxmdGVzdFwiCi1TU1RBVEVfRElSID0gXCIke1RPUERJUn0vZG93bmxvYWQtc2VsZnRlc3RcIgotSU5IRVJJVF9yZW1vdmUgPSBcInJlcG9ydC1lcnJvclwiCi0iIiIpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAob3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsICJkb3dubG9hZC1zZWxmdGVzdCIpKQotICAgICAgICBzZWxmLndyaXRlX3JlY2lwZWluYygnbWFuJywiXG5kb19mYWlsX3Rhc2sgKCkge1xuZXhpdCAxIFxufVxuXG5hZGR0YXNrIGRvX2ZhaWxfdGFzayBiZWZvcmUgZG9fZmV0Y2hcbiIgKQotICAgICAgICBydW5DbWQoJ2JpdGJha2UgLWMgY2xlYW5hbGwgbWFuIHhjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUnKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UgLWMgdW5wYWNrIC1rIG1hbiB4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lJywgaWdub3JlX3N0YXR1cz1UcnVlKQotICAgICAgICBlcnJvcnBvcyA9IHJlc3VsdC5vdXRwdXQuZmluZCgnRVJST1I6IEZ1bmN0aW9uIGZhaWxlZDogZG9fZmFpbF90YXNrJykKLSAgICAgICAgbWFudmVyID0gcmUuc2VhcmNoKCJOT1RFOiByZWNpcGUgeGN1cnNvci10cmFuc3BhcmVudC10aGVtZS0oLio/KTogdGFzayBkb191bnBhY2s6IFN0YXJ0ZWQiLCByZXN1bHQub3V0cHV0KQotICAgICAgICBjb250aW51ZXBvcyA9IHJlc3VsdC5vdXRwdXQuZmluZCgnTk9URTogcmVjaXBlIHhjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUtJXM6IHRhc2sgZG9fdW5wYWNrOiBTdGFydGVkJyAlIG1hbnZlci5ncm91cCgxKSkKLSAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGVycm9ycG9zLGNvbnRpbnVlcG9zLCBtc2cgPSAiYml0YmFrZSBkaWRuJ3QgcGFzcyBkb19mYWlsX3Rhc2suIGJpdGJha2Ugb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQotCi0gICAgQHRlc3RjYXNlKDExMTkpCi0gICAgZGVmIHRlc3Rfbm9uX2dwbHYzKHNlbGYpOgotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygnSU5DT01QQVRJQkxFX0xJQ0VOU0UgPSAiR1BMdjMiJykKLSAgICAgICAgcmVzdWx0ID0gYml0YmFrZSgnc2VsZnRlc3QtZWQnLCBpZ25vcmVfc3RhdHVzPVRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnN0YXR1cywgMCwgIkJpdGJha2UgZmFpbGVkLCBleGl0IGNvZGUgJXMsIG91dHB1dCAlcyIgJSAocmVzdWx0LnN0YXR1cywgcmVzdWx0Lm91dHB1dCkpCi0gICAgICAgIGxpY19kaXIgPSBnZXRfYmJfdmFyKCdMSUNFTlNFX0RJUkVDVE9SWScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKGxpY19kaXIsICdzZWxmdGVzdC1lZC9nZW5lcmljX0dQTHYzJykpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKGxpY19kaXIsICdzZWxmdGVzdC1lZC9nZW5lcmljX0dQTHYyJykpKQotCi0gICAgQHRlc3RjYXNlKDE0MjIpCi0gICAgZGVmIHRlc3Rfc2V0c2NlbmVfb25seShzZWxmKToKLSAgICAgICAgIiIiIEJpdGJha2Ugb3B0aW9uIHRvIHJlc3RvcmUgZnJvbSBzc3RhdGUgb25seSB3aXRoaW4gYSBidWlsZCAoaS5lLiBleGVjdXRlIG5vIHJlYWwgdGFza3MsIG9ubHkgc2V0c2NlbmUpIiIiCi0gICAgICAgIHRlc3RfcmVjaXBlID0gJ2VkJwotCi0gICAgICAgIGJpdGJha2UodGVzdF9yZWNpcGUpCi0gICAgICAgIGJpdGJha2UoJy1jIGNsZWFuICVzJyAlIHRlc3RfcmVjaXBlKQotICAgICAgICByZXQgPSBiaXRiYWtlKCctLXNldHNjZW5lLW9ubHkgJXMnICUgdGVzdF9yZWNpcGUpCi0KLSAgICAgICAgdGFza3MgPSByZS5maW5kYWxsKHIndGFza1xzKyhkb19cUyspOicsIHJldC5vdXRwdXQpCi0KLSAgICAgICAgZm9yIHRhc2sgaW4gdGFza3M6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEluKCdfc2V0c2NlbmUnLCB0YXNrLCAnQSB0YXNrIGRpZmZlcmVudCBmcm9tIF9zZXRzY2VuZSByYW46ICVzLlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0V4ZWN1dGVkIHRhc2tzIHdlcmU6ICVzJyAlICh0YXNrLCBzdHIodGFza3MpKSkKLQotICAgIEB0ZXN0Y2FzZSgxNDI1KQotICAgIGRlZiB0ZXN0X2JiYXBwZW5kX29yZGVyKHNlbGYpOgotICAgICAgICAiIiIgQml0YmFrZSBzaG91bGQgYmJhcHBlbmQgdG8gcmVjaXBlIGluIGEgcHJlZGljdGFibGUgb3JkZXIgIiIiCi0gICAgICAgIHRlc3RfcmVjaXBlID0gJ2VkJwotICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydTVU1NQVJZJywgJ1BWJ10sIHRlc3RfcmVjaXBlKQotICAgICAgICB0ZXN0X3JlY2lwZV9zdW1tYXJ5X2JlZm9yZSA9IGJiX3ZhcnNbJ1NVTU1BUlknXQotICAgICAgICB0ZXN0X3JlY2lwZV9wdiA9IGJiX3ZhcnNbJ1BWJ10KLSAgICAgICAgcmVjaXBlX2FwcGVuZF9maWxlID0gdGVzdF9yZWNpcGUgKyAnXycgKyB0ZXN0X3JlY2lwZV9wdiArICcuYmJhcHBlbmQnCi0gICAgICAgIGV4cGVjdGVkX3JlY2lwZV9zdW1tYXJ5ID0gdGVzdF9yZWNpcGVfc3VtbWFyeV9iZWZvcmUKLQotICAgICAgICBmb3IgaSBpbiByYW5nZSg1KToKLSAgICAgICAgICAgIHJlY2lwZV9hcHBlbmRfZGlyID0gdGVzdF9yZWNpcGUgKyAnX3Rlc3RfJyArIHN0cihpKQotICAgICAgICAgICAgcmVjaXBlX2FwcGVuZF9wYXRoID0gb3MucGF0aC5qb2luKHNlbGYudGVzdGxheWVyX3BhdGgsICdyZWNpcGVzLXRlc3QnLCByZWNpcGVfYXBwZW5kX2RpciwgcmVjaXBlX2FwcGVuZF9maWxlKQotICAgICAgICAgICAgb3MubWtkaXIob3MucGF0aC5qb2luKHNlbGYudGVzdGxheWVyX3BhdGgsICdyZWNpcGVzLXRlc3QnLCByZWNpcGVfYXBwZW5kX2RpcikpCi0gICAgICAgICAgICBmZWF0dXJlID0gJ1NVTU1BUlkgKz0gIiVzIlxuJyAlIGkKLSAgICAgICAgICAgIGZ0b29scy53cml0ZV9maWxlKHJlY2lwZV9hcHBlbmRfcGF0aCwgZmVhdHVyZSkKLSAgICAgICAgICAgIGV4cGVjdGVkX3JlY2lwZV9zdW1tYXJ5ICs9ICcgJXMnICUgaQotCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ3JtIC1yZiAlcycgJSBvcy5wYXRoLmpvaW4oc2VsZi50ZXN0bGF5ZXJfcGF0aCwgJ3JlY2lwZXMtdGVzdCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X3JlY2lwZSArICdfdGVzdF8qJykpCi0KLSAgICAgICAgdGVzdF9yZWNpcGVfc3VtbWFyeV9hZnRlciA9IGdldF9iYl92YXIoJ1NVTU1BUlknLCB0ZXN0X3JlY2lwZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9yZWNpcGVfc3VtbWFyeSwgdGVzdF9yZWNpcGVfc3VtbWFyeV9hZnRlcikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2J1aWxkaGlzdG9yeS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2J1aWxkaGlzdG9yeS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDA4YzM5Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9idWlsZGhpc3RvcnkucHkKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi1pbXBvcnQgb3MKLWltcG9ydCByZQotaW1wb3J0IGRhdGV0aW1lCi0KLWZyb20gb2VxYS5zZWxmdGVzdC5iYXNlIGltcG9ydCBvZVNlbGZUZXN0Ci1mcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IGJpdGJha2UsIGdldF9iYl92YXJzCi1mcm9tIG9lcWEudXRpbHMuZGVjb3JhdG9ycyBpbXBvcnQgdGVzdGNhc2UKLQotCi1jbGFzcyBCdWlsZGhpc3RvcnlCYXNlKG9lU2VsZlRlc3QpOgotCi0gICAgZGVmIGNvbmZpZ19idWlsZGhpc3Rvcnkoc2VsZiwgdG1wX2JoX2xvY2F0aW9uPUZhbHNlKToKLSAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnVVNFUl9DTEFTU0VTJywgJ0lOSEVSSVQnXSkKLSAgICAgICAgaWYgKG5vdCAnYnVpbGRoaXN0b3J5JyBpbiBiYl92YXJzWydVU0VSX0NMQVNTRVMnXSkgYW5kIChub3QgJ2J1aWxkaGlzdG9yeScgaW4gYmJfdmFyc1snSU5IRVJJVCddKToKLSAgICAgICAgICAgIGFkZF9idWlsZGhpc3RvcnlfY29uZmlnID0gJ0lOSEVSSVQgKz0gImJ1aWxkaGlzdG9yeSJcbkJVSUxESElTVE9SWV9DT01NSVQgPSAiMSInCi0gICAgICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoYWRkX2J1aWxkaGlzdG9yeV9jb25maWcpCi0KLSAgICAgICAgaWYgdG1wX2JoX2xvY2F0aW9uOgotICAgICAgICAgICAgIyBVc2luZyBhIHRlbXBvcmFyeSBidWlsZGhpc3RvcnkgbG9jYXRpb24gZm9yIHRlc3RpbmcKLSAgICAgICAgICAgIHRtcF9iaF9kaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgInRtcF9idWlsZGhpc3RvcnlfJXMiICUgZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkuc3RyZnRpbWUoJyVZJW0lZCVIJU0lUycpKQotICAgICAgICAgICAgYnVpbGRoaXN0b3J5X2Rpcl9jb25maWcgPSAiQlVJTERISVNUT1JZX0RJUiA9IFwiJXNcIiIgJSB0bXBfYmhfZGlyCi0gICAgICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoYnVpbGRoaXN0b3J5X2Rpcl9jb25maWcpCi0gICAgICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRtcF9iaF9kaXIpCi0KLSAgICBkZWYgcnVuX2J1aWxkaGlzdG9yeV9vcGVyYXRpb24oc2VsZiwgdGFyZ2V0LCBnbG9iYWxfY29uZmlnPScnLCB0YXJnZXRfY29uZmlnPScnLCBjaGFuZ2VfYmhfbG9jYXRpb249RmFsc2UsIGV4cGVjdF9lcnJvcj1GYWxzZSwgZXJyb3JfcmVnZXg9JycpOgotICAgICAgICBpZiBjaGFuZ2VfYmhfbG9jYXRpb246Ci0gICAgICAgICAgICB0bXBfYmhfbG9jYXRpb24gPSBUcnVlCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB0bXBfYmhfbG9jYXRpb24gPSBGYWxzZQotICAgICAgICBzZWxmLmNvbmZpZ19idWlsZGhpc3RvcnkodG1wX2JoX2xvY2F0aW9uKQotCi0gICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZyhnbG9iYWxfY29uZmlnKQotICAgICAgICBzZWxmLmFwcGVuZF9yZWNpcGVpbmModGFyZ2V0LCB0YXJnZXRfY29uZmlnKQotICAgICAgICBiaXRiYWtlKCItY2NsZWFuICVzIiAlIHRhcmdldCkKLSAgICAgICAgcmVzdWx0ID0gYml0YmFrZSh0YXJnZXQsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKLSAgICAgICAgc2VsZi5yZW1vdmVfY29uZmlnKGdsb2JhbF9jb25maWcpCi0gICAgICAgIHNlbGYucmVtb3ZlX3JlY2lwZWluYyh0YXJnZXQsIHRhcmdldF9jb25maWcpCi0KLSAgICAgICAgaWYgZXhwZWN0X2Vycm9yOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuc3RhdHVzLCAxLCBtc2c9IkVycm9yIGV4cGVjdGVkIGZvciBnbG9iYWwgY29uZmlnICclcycgYW5kIHRhcmdldCBjb25maWcgJyVzJyIgJSAoZ2xvYmFsX2NvbmZpZywgdGFyZ2V0X2NvbmZpZykpCi0gICAgICAgICAgICBzZWFyY2hfZm9yX2Vycm9yID0gcmUuc2VhcmNoKGVycm9yX3JlZ2V4LCByZXN1bHQub3V0cHV0KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlYXJjaF9mb3JfZXJyb3IsIG1zZz0iQ291bGQgbm90IGZpbmQgZGVzaXJlZCBlcnJvciBpbiBvdXRwdXQ6ICVzICglcykiICUgKGVycm9yX3JlZ2V4LCByZXN1bHQub3V0cHV0KSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnN0YXR1cywgMCwgbXNnPSJDb21tYW5kICdiaXRiYWtlICVzJyBoYXMgZmFpbGVkIHVuZXhwZWN0ZWRseTogJXMiICUgKHRhcmdldCwgcmVzdWx0Lm91dHB1dCkpCi0KLSAgICAjIE5vIHRlc3RzIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgYmFzZSBjbGFzcy4KLSAgICAjIFBsZWFzZSBjcmVhdGUgYSBuZXcgY2xhc3MgdGhhdCBpbmhlcml0IHRoaXMgb25lLCBvciB1c2Ugb25lIG9mIHRob3NlIGFscmVhZHkgYXZhaWxhYmxlIGZvciBhZGRpbmcgdGVzdHMuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9idWlsZG9wdGlvbnMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9idWlsZG9wdGlvbnMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2ZTAyMDMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvYnVpbGRvcHRpb25zLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTg0ICswLDAgQEAKLWltcG9ydCBvcwotaW1wb3J0IHJlCi1pbXBvcnQgZ2xvYiBhcyBnCi1pbXBvcnQgc2h1dGlsCi1pbXBvcnQgdGVtcGZpbGUKLWZyb20gb2VxYS5zZWxmdGVzdC5iYXNlIGltcG9ydCBvZVNlbGZUZXN0Ci1mcm9tIG9lcWEuc2VsZnRlc3QuYnVpbGRoaXN0b3J5IGltcG9ydCBCdWlsZGhpc3RvcnlCYXNlCi1mcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZCwgYml0YmFrZSwgZ2V0X2JiX3ZhciwgZ2V0X2JiX3ZhcnMKLWltcG9ydCBvZXFhLnV0aWxzLmZ0b29scyBhcyBmdG9vbHMKLWZyb20gb2VxYS51dGlscy5kZWNvcmF0b3JzIGltcG9ydCB0ZXN0Y2FzZQotCi1jbGFzcyBJbWFnZU9wdGlvbnNUZXN0cyhvZVNlbGZUZXN0KToKLQotICAgIEB0ZXN0Y2FzZSg3NjEpCi0gICAgZGVmIHRlc3RfaW5jcmVtZW50YWxfaW1hZ2VfZ2VuZXJhdGlvbihzZWxmKToKLSAgICAgICAgaW1hZ2VfcGtndHlwZSA9IGdldF9iYl92YXIoIklNQUdFX1BLR1RZUEUiKQotICAgICAgICBpZiBpbWFnZV9wa2d0eXBlICE9ICdycG0nOgotICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnTm90IHVzaW5nIFJQTSBhcyBtYWluIHBhY2thZ2UgZm9ybWF0JykKLSAgICAgICAgYml0YmFrZSgiLWMgY2xlYW4gY29yZS1pbWFnZS1taW5pbWFsIikKLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoJ0lOQ19SUE1fSU1BR0VfR0VOID0gIjEiJykKLSAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKCdJTUFHRV9GRUFUVVJFUyArPSAic3NoLXNlcnZlci1vcGVuc3NoIicpCi0gICAgICAgIGJpdGJha2UoImNvcmUtaW1hZ2UtbWluaW1hbCIpCi0gICAgICAgIGxvZ19kYXRhX2ZpbGUgPSBvcy5wYXRoLmpvaW4oZ2V0X2JiX3ZhcigiV09SS0RJUiIsICJjb3JlLWltYWdlLW1pbmltYWwiKSwgInRlbXAvbG9nLmRvX3Jvb3RmcyIpCi0gICAgICAgIGxvZ19kYXRhX2NyZWF0ZWQgPSBmdG9vbHMucmVhZF9maWxlKGxvZ19kYXRhX2ZpbGUpCi0gICAgICAgIGluY3JlbWVudGFsX2NyZWF0ZWQgPSByZS5zZWFyY2goIkluc3RhbGxpbmcgIDogcGFja2FnZWdyb3VwLWNvcmUtc3NoLW9wZW5zc2giLCBsb2dfZGF0YV9jcmVhdGVkKQotICAgICAgICBzZWxmLnJlbW92ZV9jb25maWcoJ0lNQUdFX0ZFQVRVUkVTICs9ICJzc2gtc2VydmVyLW9wZW5zc2giJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluY3JlbWVudGFsX2NyZWF0ZWQsIG1zZyA9ICJNYXRjaCBmYWlsZWQgaW46XG4lcyIgJSBsb2dfZGF0YV9jcmVhdGVkKQotICAgICAgICBiaXRiYWtlKCJjb3JlLWltYWdlLW1pbmltYWwiKQotICAgICAgICBsb2dfZGF0YV9yZW1vdmVkID0gZnRvb2xzLnJlYWRfZmlsZShsb2dfZGF0YV9maWxlKQotICAgICAgICBpbmNyZW1lbnRhbF9yZW1vdmVkID0gcmUuc2VhcmNoKCJFcmFzaW5nICAgICA6IHBhY2thZ2Vncm91cC1jb3JlLXNzaC1vcGVuc3NoIiwgbG9nX2RhdGFfcmVtb3ZlZCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluY3JlbWVudGFsX3JlbW92ZWQsIG1zZyA9ICJNYXRjaCBmYWlsZWQgaW46XG4lcyIgJSBsb2dfZGF0YV9yZW1vdmVkKQotCi0gICAgQHRlc3RjYXNlKDI4NikKLSAgICBkZWYgdGVzdF9jY2FjaGVfdG9vbChzZWxmKToKLSAgICAgICAgYml0YmFrZSgiY2NhY2hlLW5hdGl2ZSIpCi0gICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ1NZU1JPT1RfREVTVERJUicsICdiaW5kaXInXSwgJ2NjYWNoZS1uYXRpdmUnKQotICAgICAgICBwID0gYmJfdmFyc1snU1lTUk9PVF9ERVNURElSJ10gKyBiYl92YXJzWydiaW5kaXInXSArICIvIiArICJjY2FjaGUiCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShwKSwgbXNnID0gIk5vIGNjYWNoZSBmb3VuZCAoJXMpIiAlIHApCi0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCdJTkhFUklUICs9ICJjY2FjaGUiJykKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZSAtYyBjbGVhbiBtNCcpCi0gICAgICAgIGJpdGJha2UoIm00IC1mIC1jIGNvbXBpbGUiKQotICAgICAgICBsb2dfY29tcGlsZSA9IG9zLnBhdGguam9pbihnZXRfYmJfdmFyKCJXT1JLRElSIiwibTQiKSwgInRlbXAvbG9nLmRvX2NvbXBpbGUiKQotICAgICAgICByZXMgPSBydW5DbWQoImdyZXAgY2NhY2hlICVzIiAlIGxvZ19jb21waWxlLCBpZ25vcmVfc3RhdHVzPVRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzLnN0YXR1cywgbXNnPSJObyBtYXRjaCBmb3IgY2NhY2hlIGluIG00IGxvZy5kb19jb21waWxlLiBGb3IgZnVydGhlciBkZXRhaWxzOiAlcyIgJSBsb2dfY29tcGlsZSkKLQotICAgIEB0ZXN0Y2FzZSgxNDM1KQotICAgIGRlZiB0ZXN0X3JlYWRfb25seV9pbWFnZShzZWxmKToKLSAgICAgICAgZGlzdHJvX2ZlYXR1cmVzID0gZ2V0X2JiX3ZhcignRElTVFJPX0ZFQVRVUkVTJykKLSAgICAgICAgaWYgbm90ICgneDExJyBpbiBkaXN0cm9fZmVhdHVyZXMgYW5kICdvcGVuZ2wnIGluIGRpc3Ryb19mZWF0dXJlcyk6Ci0gICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdjb3JlLWltYWdlLXNhdG8gcmVxdWlyZXMgeDExIGFuZCBvcGVuZ2wgaW4gZGlzdHJvIGZlYXR1cmVzJykKLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoJ0lNQUdFX0ZFQVRVUkVTICs9ICJyZWFkLW9ubHktcm9vdGZzIicpCi0gICAgICAgIGJpdGJha2UoImNvcmUtaW1hZ2Utc2F0byIpCi0gICAgICAgICMgZG9faW1hZ2Ugd2lsbCBmYWlsIGlmIHRoZXJlIGFyZSBhbnkgcGVuZGluZyBwb3N0aW5zdHMKLQotY2xhc3MgRGlza01vblRlc3Qob2VTZWxmVGVzdCk6Ci0KLSAgICBAdGVzdGNhc2UoMjc3KQotICAgIGRlZiB0ZXN0X3N0b3B0YXNrX2JlaGF2aW9yKHNlbGYpOgotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygnQkJfRElTS01PTl9ESVJTID0gIlNUT1BUQVNLUywke1RNUERJUn0sMTAwMDAwRywxMDBLIicpCi0gICAgICAgIHJlcyA9IGJpdGJha2UoIm00IiwgaWdub3JlX3N0YXR1cyA9IFRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnRVJST1I6IE5vIG5ldyB0YXNrcyBjYW4gYmUgZXhlY3V0ZWQgc2luY2UgdGhlIGRpc2sgc3BhY2UgbW9uaXRvciBhY3Rpb24gaXMgIlNUT1BUQVNLUyIhJyBpbiByZXMub3V0cHV0LCBtc2cgPSAiVGFza3Mgc2hvdWxkIGhhdmUgc3RvcHBlZC4gRGlzayBtb25pdG9yIGlzIHNldCB0byBTVE9QVEFTSzogJXMiICUgcmVzLm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCAxLCBtc2cgPSAiYml0YmFrZSByZXBvcnRlZCBleGl0IGNvZGUgJXMuIEl0IHNob3VsZCBoYXZlIGJlZW4gMS4gQml0YmFrZSBvdXRwdXQ6ICVzIiAlIChzdHIocmVzLnN0YXR1cyksIHJlcy5vdXRwdXQpKQotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygnQkJfRElTS01PTl9ESVJTID0gIkFCT1JULCR7VE1QRElSfSwxMDAwMDBHLDEwMEsiJykKLSAgICAgICAgcmVzID0gYml0YmFrZSgibTQiLCBpZ25vcmVfc3RhdHVzID0gVHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdFUlJPUjogSW1tZWRpYXRlbHkgYWJvcnQgc2luY2UgdGhlIGRpc2sgc3BhY2UgbW9uaXRvciBhY3Rpb24gaXMgIkFCT1JUIiEnIGluIHJlcy5vdXRwdXQsICJUYXNrcyBzaG91bGQgaGF2ZSBiZWVuIGFib3J0ZWQgaW1tZWRpYXRlbGx5LiBEaXNrIG1vbml0b3IgaXMgc2V0IHRvIEFCT1JUOiAlcyIgJSByZXMub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIDEsIG1zZyA9ICJiaXRiYWtlIHJlcG9ydGVkIGV4aXQgY29kZSAlcy4gSXQgc2hvdWxkIGhhdmUgYmVlbiAxLiBCaXRiYWtlIG91dHB1dDogJXMiICUgKHN0cihyZXMuc3RhdHVzKSwgcmVzLm91dHB1dCkpCi0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCdCQl9ESVNLTU9OX0RJUlMgPSAiV0FSTiwke1RNUERJUn0sMTAwMDAwRywxMDBLIicpCi0gICAgICAgIHJlcyA9IGJpdGJha2UoIm00IikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdXQVJOSU5HOiBUaGUgZnJlZSBzcGFjZScgaW4gcmVzLm91dHB1dCwgbXNnID0gIkEgd2FybmluZyBzaG91bGQgaGF2ZSBiZWVuIGRpc3BsYXllZCBmb3IgZGlzayBtb25pdG9yIGlzIHNldCB0byBXQVJOOiAlcyIgJXJlcy5vdXRwdXQpCi0KLWNsYXNzIFNhbml0eU9wdGlvbnNUZXN0KG9lU2VsZlRlc3QpOgotICAgIGRlZiBnZXRsaW5lKHNlbGYsIHJlcywgbGluZSk6Ci0gICAgICAgIGZvciBsIGluIHJlcy5vdXRwdXQuc3BsaXQoJ1xuJyk6Ci0gICAgICAgICAgICBpZiBsaW5lIGluIGw6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGwKLQotICAgIEB0ZXN0Y2FzZSg5MjcpCi0gICAgZGVmIHRlc3Rfb3B0aW9uc193YXJucWFfZXJyb3JxYV9zd2l0Y2goc2VsZik6Ci0KLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIklOSEVSSVRfcmVtb3ZlID0gXCJyZXBvcnQtZXJyb3JcIiIpCi0gICAgICAgIGlmICJwYWNrYWdlcy1saXN0IiBub3QgaW4gZ2V0X2JiX3ZhcigiRVJST1JfUUEiKToKLSAgICAgICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZygiRVJST1JfUUFfYXBwZW5kID0gXCIgcGFja2FnZXMtbGlzdFwiIikKLQotICAgICAgICBzZWxmLndyaXRlX3JlY2lwZWluYygneGN1cnNvci10cmFuc3BhcmVudC10aGVtZScsICdQQUNLQUdFUyArPSBcIiR7UE59LWRiZ1wiJykKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZSAtYyBjbGVhbiB4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lJykKLSAgICAgICAgcmVzID0gYml0YmFrZSgieGN1cnNvci10cmFuc3BhcmVudC10aGVtZSAtZiAtYyBwYWNrYWdlIiwgaWdub3JlX3N0YXR1cz1UcnVlKQotICAgICAgICBzZWxmLmRlbGV0ZV9yZWNpcGVpbmMoJ3hjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUnKQotICAgICAgICBsaW5lID0gc2VsZi5nZXRsaW5lKHJlcywgIlFBIElzc3VlOiB4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lLWRiZyBpcyBsaXN0ZWQgaW4gUEFDS0FHRVMgbXVsdGlwbGUgdGltZXMsIHRoaXMgbGVhZHMgdG8gcGFja2FnaW5nIGVycm9ycy4iKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobGluZSBhbmQgbGluZS5zdGFydHN3aXRoKCJFUlJPUjoiKSwgbXNnPXJlcy5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1cywgMSwgbXNnID0gImJpdGJha2UgcmVwb3J0ZWQgZXhpdCBjb2RlICVzLiBJdCBzaG91bGQgaGF2ZSBiZWVuIDEuIEJpdGJha2Ugb3V0cHV0OiAlcyIgJSAoc3RyKHJlcy5zdGF0dXMpLCByZXMub3V0cHV0KSkKLSAgICAgICAgc2VsZi53cml0ZV9yZWNpcGVpbmMoJ3hjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUnLCAnUEFDS0FHRVMgKz0gXCIke1BOfS1kYmdcIicpCi0gICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZygnRVJST1JfUUFfcmVtb3ZlID0gInBhY2thZ2VzLWxpc3QiJykKLSAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKCdXQVJOX1FBX2FwcGVuZCA9ICIgcGFja2FnZXMtbGlzdCInKQotICAgICAgICByZXMgPSBiaXRiYWtlKCJ4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lIC1mIC1jIHBhY2thZ2UiKQotICAgICAgICBzZWxmLmRlbGV0ZV9yZWNpcGVpbmMoJ3hjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUnKQotICAgICAgICBsaW5lID0gc2VsZi5nZXRsaW5lKHJlcywgIlFBIElzc3VlOiB4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lLWRiZyBpcyBsaXN0ZWQgaW4gUEFDS0FHRVMgbXVsdGlwbGUgdGltZXMsIHRoaXMgbGVhZHMgdG8gcGFja2FnaW5nIGVycm9ycy4iKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobGluZSBhbmQgbGluZS5zdGFydHN3aXRoKCJXQVJOSU5HOiIpLCBtc2c9cmVzLm91dHB1dCkKLQotICAgIEB0ZXN0Y2FzZSgyNzgpCi0gICAgZGVmIHRlc3Rfc2FuaXR5X3Vuc2FmZV9zY3JpcHRfcmVmZXJlbmNlcyhzZWxmKToKLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoJ1dBUk5fUUFfYXBwZW5kID0gIiB1bnNhZmUtcmVmZXJlbmNlcy1pbi1zY3JpcHRzIicpCi0KLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZSAtYyBjbGVhbiBnemlwJykKLSAgICAgICAgcmVzID0gYml0YmFrZSgiZ3ppcCAtZiAtYyBwYWNrYWdlX3FhIikKLSAgICAgICAgbGluZSA9IHNlbGYuZ2V0bGluZShyZXMsICJRQSBJc3N1ZTogZ3ppcCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobGluZSwgIldBUk5JTkc6IFFBIElzc3VlOiBnemlwIG1lc3NhZ2UgaXMgcHJlc2VudCBpbiBiaXRiYWtlJ3Mgb3V0cHV0IGFuZCBzaG91bGRuJ3QgYmU6ICVzIiAlIHJlcy5vdXRwdXQpCi0KLSAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKCIiIgotZG9faW5zdGFsbF9hcHBlbmRfcG4tZ3ppcCAoKSB7Ci0JZWNobyAiXG4ke2JpbmRpcn0vdGVzdCIgPj4gJHtEfSR7YmluZGlyfS96Y2F0Ci19Ci0iIiIpCi0gICAgICAgIHJlcyA9IGJpdGJha2UoImd6aXAgLWYgLWMgcGFja2FnZV9xYSIpCi0gICAgICAgIGxpbmUgPSBzZWxmLmdldGxpbmUocmVzLCAiUUEgSXNzdWU6IGd6aXAiKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobGluZSBhbmQgbGluZS5zdGFydHN3aXRoKCJXQVJOSU5HOiIpLCAiV0FSTklORzogUUEgSXNzdWU6IGd6aXAgbWVzc2FnZSBpcyBub3QgcHJlc2VudCBpbiBiaXRiYWtlJ3Mgb3V0cHV0OiAlcyIgJSByZXMub3V0cHV0KQotCi0gICAgQHRlc3RjYXNlKDE0MjEpCi0gICAgZGVmIHRlc3RfbGF5ZXJfd2l0aG91dF9naXRfZGlyKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgU3VtbWFyeTogICAgIFRlc3QgdGhhdCBsYXllciBnaXQgcmV2aXNpb25zIGFyZSBkaXNwbGF5ZWQgYW5kIGRvIG5vdCBmYWlsIHdpdGhvdXQgZ2l0IHJlcG9zaXRvcnkKLSAgICAgICAgRXhwZWN0ZWQ6ICAgIFRoZSBidWlsZCB0byBiZSBzdWNjZXNzZnVsIGFuZCB3aXRob3V0ICJmYXRhbCIgZXJyb3JzCi0gICAgICAgIFByb2R1Y3Q6ICAgICBvZS1jb3JlCi0gICAgICAgIEF1dGhvcjogICAgICBEYW5pZWwgSXN0cmF0ZSA8ZGFuaWVsLmFsZXhhbmRydXguaXN0cmF0ZUBpbnRlbC5jb20+Ci0gICAgICAgIEF1dG9tYXRlZEJ5OiBEYW5pZWwgSXN0cmF0ZSA8ZGFuaWVsLmFsZXhhbmRydXguaXN0cmF0ZUBpbnRlbC5jb20+Ci0gICAgICAgICIiIgotCi0gICAgICAgIGRpcnBhdGggPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKLQotICAgICAgICBkdW1teV9sYXllcl9uYW1lID0gJ21ldGEtZHVtbXknCi0gICAgICAgIGR1bW15X2xheWVyX3BhdGggPSBvcy5wYXRoLmpvaW4oZGlycGF0aCwgZHVtbXlfbGF5ZXJfbmFtZSkKLSAgICAgICAgZHVtbXlfbGF5ZXJfY29uZl9kaXIgPSBvcy5wYXRoLmpvaW4oZHVtbXlfbGF5ZXJfcGF0aCwgJ2NvbmYnKQotICAgICAgICBvcy5tYWtlZGlycyhkdW1teV9sYXllcl9jb25mX2RpcikKLSAgICAgICAgZHVtbXlfbGF5ZXJfY29uZl9wYXRoID0gb3MucGF0aC5qb2luKGR1bW15X2xheWVyX2NvbmZfZGlyLCAnbGF5ZXIuY29uZicpCi0KLSAgICAgICAgZHVtbXlfbGF5ZXJfY29udGVudCA9ICdCQlBBVEggLj0gIjoke0xBWUVSRElSfSJcbicgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0JCRklMRVMgKz0gIiR7TEFZRVJESVJ9L3JlY2lwZXMtKi8qLyouYmIgJHtMQVlFUkRJUn0vcmVjaXBlcy0qLyovKi5iYmFwcGVuZCJcbicgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0JCRklMRV9DT0xMRUNUSU9OUyArPSAiJXMiXG4nIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdCQkZJTEVfUEFUVEVSTl8lcyA9ICJeJHtMQVlFUkRJUn0vIlxuJyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQkJGSUxFX1BSSU9SSVRZXyVzID0gIjYiXG4nICUgKGR1bW15X2xheWVyX25hbWUsIGR1bW15X2xheWVyX25hbWUsIGR1bW15X2xheWVyX25hbWUpCi0KLSAgICAgICAgZnRvb2xzLndyaXRlX2ZpbGUoZHVtbXlfbGF5ZXJfY29uZl9wYXRoLCBkdW1teV9sYXllcl9jb250ZW50KQotCi0gICAgICAgIGJibGF5ZXJzX2NvbmYgPSAnQkJMQVlFUlMgKz0gIiVzIlxuJyAlIGR1bW15X2xheWVyX3BhdGgKLSAgICAgICAgc2VsZi53cml0ZV9iYmxheWVyc19jb25maWcoYmJsYXllcnNfY29uZikKLQotICAgICAgICB0ZXN0X3JlY2lwZSA9ICdlZCcKLQotICAgICAgICByZXQgPSBiaXRiYWtlKCctbiAlcycgJSB0ZXN0X3JlY2lwZSkKLQotICAgICAgICBlcnIgPSAnZmF0YWw6IE5vdCBhIGdpdCByZXBvc2l0b3J5JwotCi0gICAgICAgIHNodXRpbC5ybXRyZWUoZGlycGF0aCkKLQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKGVyciwgcmV0Lm91dHB1dCkKLQotCi1jbGFzcyBCdWlsZGhpc3RvcnlUZXN0cyhCdWlsZGhpc3RvcnlCYXNlKToKLQotICAgIEB0ZXN0Y2FzZSgyOTMpCi0gICAgZGVmIHRlc3RfYnVpbGRoaXN0b3J5X2Jhc2ljKHNlbGYpOgotICAgICAgICBzZWxmLnJ1bl9idWlsZGhpc3Rvcnlfb3BlcmF0aW9uKCd4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNkaXIoZ2V0X2JiX3ZhcignQlVJTERISVNUT1JZX0RJUicpKSwgImJ1aWxkaGlzdG9yeSBkaXIgd2FzIG5vdCBjcmVhdGVkLiIpCi0KLSAgICBAdGVzdGNhc2UoMjk0KQotICAgIGRlZiB0ZXN0X2J1aWxkaGlzdG9yeV9idWlsZHRpbWVfcHJfYmFja3dhcmRzKHNlbGYpOgotICAgICAgICB0YXJnZXQgPSAneGN1cnNvci10cmFuc3BhcmVudC10aGVtZScKLSAgICAgICAgZXJyb3IgPSAiRVJST1I6LipRQSBJc3N1ZTogUGFja2FnZSB2ZXJzaW9uIGZvciBwYWNrYWdlICVzIHdlbnQgYmFja3dhcmRzIHdoaWNoIHdvdWxkIGJyZWFrIHBhY2thZ2UgZmVlZHMgZnJvbSAoLiotcjEuKiB0byAuKi1yMC4qKSIgJSB0YXJnZXQKLSAgICAgICAgc2VsZi5ydW5fYnVpbGRoaXN0b3J5X29wZXJhdGlvbih0YXJnZXQsIHRhcmdldF9jb25maWc9IlBSID0gXCJyMVwiIiwgY2hhbmdlX2JoX2xvY2F0aW9uPVRydWUpCi0gICAgICAgIHNlbGYucnVuX2J1aWxkaGlzdG9yeV9vcGVyYXRpb24odGFyZ2V0LCB0YXJnZXRfY29uZmlnPSJQUiA9IFwicjBcIiIsIGNoYW5nZV9iaF9sb2NhdGlvbj1GYWxzZSwgZXhwZWN0X2Vycm9yPVRydWUsIGVycm9yX3JlZ2V4PWVycm9yKQotCi1jbGFzcyBBcmNoaXZlclRlc3Qob2VTZWxmVGVzdCk6Ci0gICAgQHRlc3RjYXNlKDkyNikKLSAgICBkZWYgdGVzdF9hcmNoX3dvcmtfZGlyX2FuZF9leHBvcnRfc291cmNlKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgVGVzdCBmb3IgYXJjaGl2aW5nIHRoZSB3b3JrIGRpcmVjdG9yeSBhbmQgZXhwb3J0aW5nIHRoZSBzb3VyY2UgZmlsZXMuCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiSU5IRVJJVCArPSBcImFyY2hpdmVyXCJcbkFSQ0hJVkVSX01PREVbc3JjXSA9IFwib3JpZ2luYWxcIlxuQVJDSElWRVJfTU9ERVtzcnBtXSA9IFwiMVwiIikKLSAgICAgICAgcmVzID0gYml0YmFrZSgieGN1cnNvci10cmFuc3BhcmVudC10aGVtZSIsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCAwLCAiXG5Db3VsZG4ndCBidWlsZCB4Y3Vyc29ydHJhbnNwYXJlbnR0aGVtZS5cbmJpdGJha2Ugb3V0cHV0ICVzIiAlIHJlcy5vdXRwdXQpCi0gICAgICAgIGRlcGxveV9kaXJfc3JjID0gZ2V0X2JiX3ZhcignREVQTE9ZX0RJUl9TUkMnKQotICAgICAgICBwa2dzX3BhdGggPSBnLmdsb2Ioc3RyKGRlcGxveV9kaXJfc3JjKSArICIvYWxsYXJjaCoveGN1cnMqIikKLSAgICAgICAgc3JjX2ZpbGVfZ2xvYiA9IHN0cihwa2dzX3BhdGhbMF0pICsgIi94Y3Vyc29yKi5zcmMucnBtIgotICAgICAgICB0YXJfZmlsZV9nbG9iID0gc3RyKHBrZ3NfcGF0aFswXSkgKyAiL3hjdXJzb3IqLnRhci5neiIKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKChnLmdsb2Ioc3JjX2ZpbGVfZ2xvYikgYW5kIGcuZ2xvYih0YXJfZmlsZV9nbG9iKSksICJDb3VsZG4ndCBmaW5kIC5zcmMucnBtIGFuZCAudGFyLmd6IGZpbGVzIHVuZGVyICVzL2FsbGFyY2gqL3hjdXJzb3IqIiAlIGRlcGxveV9kaXJfc3JjKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2UucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTA5OTE1YgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2UucHkKQEAgLTAsMCArMSwyNzggQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEzLTIwMTcgSW50ZWwgQ29ycG9yYXRpb24KKyMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQpCisKK2ltcG9ydCBzeXMKK2ltcG9ydCBvcworaW1wb3J0IHNodXRpbAoraW1wb3J0IGdsb2IKK2ltcG9ydCBlcnJubworZnJvbSB1bml0dGVzdC51dGlsIGltcG9ydCBzYWZlX3JlcHIKKworaW1wb3J0IG9lcWEudXRpbHMuZnRvb2xzIGFzIGZ0b29scworZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQsIGJpdGJha2UsIGdldF9iYl92YXIKK2Zyb20gb2VxYS5jb3JlLmNhc2UgaW1wb3J0IE9FVGVzdENhc2UKKworY2xhc3MgT0VTZWxmdGVzdFRlc3RDYXNlKE9FVGVzdENhc2UpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXRob2ROYW1lPSJydW5UZXN0Iik6CisgICAgICAgIHNlbGYuX2V4dHJhX3RlYXJfZG93bl9jb21tYW5kcyA9IFtdCisgICAgICAgIHN1cGVyKE9FU2VsZnRlc3RUZXN0Q2FzZSwgc2VsZikuX19pbml0X18obWV0aG9kTmFtZSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIHN1cGVyKE9FU2VsZnRlc3RUZXN0Q2FzZSwgY2xzKS5zZXRVcENsYXNzKCkKKworICAgICAgICBjbHMudGVzdGxheWVyX3BhdGggPSBjbHMudGMuY29uZmlnX3BhdGhzWyd0ZXN0bGF5ZXJfcGF0aCddCisgICAgICAgIGNscy5idWlsZGRpciA9IGNscy50Yy5jb25maWdfcGF0aHNbJ2J1aWxkZGlyJ10KKworICAgICAgICBjbHMubG9jYWxjb25mX3BhdGggPSBjbHMudGMuY29uZmlnX3BhdGhzWydsb2NhbGNvbmYnXQorICAgICAgICBjbHMubG9jYWxjb25mX2JhY2t1cCA9IGNscy50Yy5jb25maWdfcGF0aHNbJ2xvY2FsY29uZl9jbGFzc19iYWNrdXAnXQorICAgICAgICBjbHMubG9jYWxfYmJsYXllcnNfcGF0aCA9IGNscy50Yy5jb25maWdfcGF0aHNbJ2JibGF5ZXJzJ10KKyAgICAgICAgY2xzLmxvY2FsX2JibGF5ZXJzX2JhY2t1cCA9IGNscy50Yy5jb25maWdfcGF0aHNbJ2JibGF5ZXJzX2NsYXNzX2JhY2t1cCddCisKKyAgICAgICAgY2xzLnRlc3RpbmNfcGF0aCA9IG9zLnBhdGguam9pbihjbHMudGMuY29uZmlnX3BhdGhzWydidWlsZGRpciddLAorICAgICAgICAgICAgICAgICJjb25mL3NlbGZ0ZXN0LmluYyIpCisgICAgICAgIGNscy50ZXN0aW5jX2JibGF5ZXJzX3BhdGggPSBvcy5wYXRoLmpvaW4oY2xzLnRjLmNvbmZpZ19wYXRoc1snYnVpbGRkaXInXSwKKyAgICAgICAgICAgICAgICAiY29uZi9iYmxheWVycy5pbmMiKQorICAgICAgICBjbHMubWFjaGluZWluY19wYXRoID0gb3MucGF0aC5qb2luKGNscy50Yy5jb25maWdfcGF0aHNbJ2J1aWxkZGlyJ10sCisgICAgICAgICAgICAgICAgImNvbmYvbWFjaGluZS5pbmMiKQorCisgICAgICAgIGNscy5fdHJhY2tfZm9yX2NsZWFudXAgPSBbCisgICAgICAgICAgICBjbHMudGVzdGluY19wYXRoLCBjbHMudGVzdGluY19iYmxheWVyc19wYXRoLAorICAgICAgICAgICAgY2xzLm1hY2hpbmVpbmNfcGF0aCwgY2xzLmxvY2FsY29uZl9iYWNrdXAsCisgICAgICAgICAgICBjbHMubG9jYWxfYmJsYXllcnNfYmFja3VwXQorCisgICAgICAgIGNscy5hZGRfaW5jbHVkZSgpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBjbHMucmVtb3ZlX2luY2x1ZGUoKQorICAgICAgICBjbHMucmVtb3ZlX2luY19maWxlcygpCisgICAgICAgIHN1cGVyKE9FU2VsZnRlc3RUZXN0Q2FzZSwgY2xzKS50ZWFyRG93bkNsYXNzKCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBhZGRfaW5jbHVkZShjbHMpOgorICAgICAgICBpZiAiI2luY2x1ZGUgYWRkZWQgYnkgb2Utc2VsZnRlc3QiIFwKKyAgICAgICAgICAgIG5vdCBpbiBmdG9vbHMucmVhZF9maWxlKG9zLnBhdGguam9pbihjbHMuYnVpbGRkaXIsICJjb25mL2xvY2FsLmNvbmYiKSk6CisgICAgICAgICAgICAgICAgY2xzLmxvZ2dlci5pbmZvKCJBZGRpbmc6IFwiaW5jbHVkZSBzZWxmdGVzdC5pbmNcIiBpbiAlcyIgJSBvcy5wYXRoLmpvaW4oY2xzLmJ1aWxkZGlyLCAiY29uZi9sb2NhbC5jb25mIikpCisgICAgICAgICAgICAgICAgZnRvb2xzLmFwcGVuZF9maWxlKG9zLnBhdGguam9pbihjbHMuYnVpbGRkaXIsICJjb25mL2xvY2FsLmNvbmYiKSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgIlxuI2luY2x1ZGUgYWRkZWQgYnkgb2Utc2VsZnRlc3RcbmluY2x1ZGUgbWFjaGluZS5pbmNcbmluY2x1ZGUgc2VsZnRlc3QuaW5jIikKKworICAgICAgICBpZiAiI2luY2x1ZGUgYWRkZWQgYnkgb2Utc2VsZnRlc3QiIFwKKyAgICAgICAgICAgIG5vdCBpbiBmdG9vbHMucmVhZF9maWxlKG9zLnBhdGguam9pbihjbHMuYnVpbGRkaXIsICJjb25mL2JibGF5ZXJzLmNvbmYiKSk6CisgICAgICAgICAgICAgICAgY2xzLmxvZ2dlci5pbmZvKCJBZGRpbmc6IFwiaW5jbHVkZSBiYmxheWVycy5pbmNcIiBpbiBiYmxheWVycy5jb25mIikKKyAgICAgICAgICAgICAgICBmdG9vbHMuYXBwZW5kX2ZpbGUob3MucGF0aC5qb2luKGNscy5idWlsZGRpciwgImNvbmYvYmJsYXllcnMuY29uZiIpLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAiXG4jaW5jbHVkZSBhZGRlZCBieSBvZS1zZWxmdGVzdFxuaW5jbHVkZSBiYmxheWVycy5pbmMiKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHJlbW92ZV9pbmNsdWRlKGNscyk6CisgICAgICAgIGlmICIjaW5jbHVkZSBhZGRlZCBieSBvZS1zZWxmdGVzdC5weSIgXAorICAgICAgICAgICAgaW4gZnRvb2xzLnJlYWRfZmlsZShvcy5wYXRoLmpvaW4oY2xzLmJ1aWxkZGlyLCAiY29uZi9sb2NhbC5jb25mIikpOgorICAgICAgICAgICAgICAgIGNscy5sb2dnZXIuaW5mbygiUmVtb3ZpbmcgdGhlIGluY2x1ZGUgZnJvbSBsb2NhbC5jb25mIikKKyAgICAgICAgICAgICAgICBmdG9vbHMucmVtb3ZlX2Zyb21fZmlsZShvcy5wYXRoLmpvaW4oY2xzLmJ1aWxkZGlyLCAiY29uZi9sb2NhbC5jb25mIiksIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICJcbiNpbmNsdWRlIGFkZGVkIGJ5IG9lLXNlbGZ0ZXN0LnB5XG5pbmNsdWRlIG1hY2hpbmUuaW5jXG5pbmNsdWRlIHNlbGZ0ZXN0LmluYyIpCisKKyAgICAgICAgaWYgIiNpbmNsdWRlIGFkZGVkIGJ5IG9lLXNlbGZ0ZXN0LnB5IiBcCisgICAgICAgICAgICBpbiBmdG9vbHMucmVhZF9maWxlKG9zLnBhdGguam9pbihjbHMuYnVpbGRkaXIsICJjb25mL2JibGF5ZXJzLmNvbmYiKSk6CisgICAgICAgICAgICAgICAgY2xzLmxvZ2dlci5pbmZvKCJSZW1vdmluZyB0aGUgaW5jbHVkZSBmcm9tIGJibGF5ZXJzLmNvbmYiKQorICAgICAgICAgICAgICAgIGZ0b29scy5yZW1vdmVfZnJvbV9maWxlKG9zLnBhdGguam9pbihjbHMuYnVpbGRkaXIsICJjb25mL2JibGF5ZXJzLmNvbmYiKSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgIlxuI2luY2x1ZGUgYWRkZWQgYnkgb2Utc2VsZnRlc3QucHlcbmluY2x1ZGUgYmJsYXllcnMuaW5jIikKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiByZW1vdmVfaW5jX2ZpbGVzKGNscyk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9zLnJlbW92ZShvcy5wYXRoLmpvaW4oY2xzLmJ1aWxkZGlyLCAiY29uZi9zZWxmdGVzdC5pbmMiKSkKKyAgICAgICAgICAgIGZvciByb290LCBfLCBmaWxlcyBpbiBvcy53YWxrKGNscy50ZXN0bGF5ZXJfcGF0aCk6CisgICAgICAgICAgICAgICAgZm9yIGYgaW4gZmlsZXM6CisgICAgICAgICAgICAgICAgICAgIGlmIGYgPT0gJ3Rlc3RfcmVjaXBlLmluYyc6CisgICAgICAgICAgICAgICAgICAgICAgICBvcy5yZW1vdmUob3MucGF0aC5qb2luKHJvb3QsIGYpKQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGZvciBpbmNsX2ZpbGUgaW4gWydjb25mL2JibGF5ZXJzLmluYycsICdjb25mL21hY2hpbmUuaW5jJ106CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgb3MucmVtb3ZlKG9zLnBhdGguam9pbihjbHMuYnVpbGRkaXIsIGluY2xfZmlsZSkpCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzdXBlcihPRVNlbGZ0ZXN0VGVzdENhc2UsIHNlbGYpLnNldFVwKCkKKyAgICAgICAgb3MuY2hkaXIoc2VsZi5idWlsZGRpcikKKyAgICAgICAgIyBDaGVjayBpZiBsb2NhbC5jb25mIG9yIGJibGF5ZXJzLmNvbmYgZmlsZXMgYmFja3VwIGV4aXN0cworICAgICAgICAjIGZyb20gYSBwcmV2aW91cyBmYWlsZWQgdGVzdCBhbmQgcmVzdG9yZSB0aGVtCisgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKHNlbGYubG9jYWxjb25mX2JhY2t1cCkgb3Igb3MucGF0aC5pc2ZpbGUoCisgICAgICAgICAgICAgICAgc2VsZi5sb2NhbF9iYmxheWVyc19iYWNrdXApOgorICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlwKK0ZvdW5kIGEgbG9jYWwuY29uZiBhbmQvb3IgYmJsYXllcnMuY29uZiBiYWNrdXAgZnJvbSBhIHByZXZpb3VzbHkgYWJvcnRlZCB0ZXN0LlwKK1Jlc3RvcmluZyB0aGVzZSBmaWxlcyBub3csIGJ1dCB0ZXN0cyBzaG91bGQgYmUgcmUtZXhlY3V0ZWQgZnJvbSBhIGNsZWFuIGVudmlyb25tZW50XAordG8gZW5zdXJlIGFjY3VyYXRlIHJlc3VsdHMuIikKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzaHV0aWwuY29weWZpbGUoc2VsZi5sb2NhbGNvbmZfYmFja3VwLCBzZWxmLmxvY2FsY29uZl9wYXRoKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVOT0VOVDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzaHV0aWwuY29weWZpbGUoc2VsZi5sb2NhbF9iYmxheWVyc19iYWNrdXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubG9jYWxfYmJsYXllcnNfcGF0aCkKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FTk9FTlQ6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIGJhY2t1cCBsb2NhbC5jb25mIGFuZCBiYmxheWVycy5jb25mCisgICAgICAgICAgICBzaHV0aWwuY29weWZpbGUoc2VsZi5sb2NhbGNvbmZfcGF0aCwgc2VsZi5sb2NhbGNvbmZfYmFja3VwKQorICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlKHNlbGYubG9jYWxfYmJsYXllcnNfcGF0aCwgc2VsZi5sb2NhbF9iYmxheWVyc19iYWNrdXApCisgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiQ3JlYXRpbmcgbG9jYWwuY29uZiBhbmQgYmJsYXllcnMuY29uZiBiYWNrdXBzLiIpCisgICAgICAgICMgd2UgZG9uJ3Qga25vdyB3aGF0IHRoZSBwcmV2aW91cyB0ZXN0IGxlZnQgYXJvdW5kIGluIGNvbmZpZyBvciBpbmMgZmlsZXMKKyAgICAgICAgIyBpZiBpdCBmYWlsZWQgc28gd2UgbmVlZCBhIGZyZXNoIHN0YXJ0CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9zLnJlbW92ZShzZWxmLnRlc3RpbmNfcGF0aCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRU5PRU5UOgorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGZvciByb290LCBfLCBmaWxlcyBpbiBvcy53YWxrKHNlbGYudGVzdGxheWVyX3BhdGgpOgorICAgICAgICAgICAgZm9yIGYgaW4gZmlsZXM6CisgICAgICAgICAgICAgICAgaWYgZiA9PSAndGVzdF9yZWNpcGUuaW5jJzoKKyAgICAgICAgICAgICAgICAgICAgb3MucmVtb3ZlKG9zLnBhdGguam9pbihyb290LCBmKSkKKworICAgICAgICBmb3IgaW5jbF9maWxlIGluIFtzZWxmLnRlc3RpbmNfYmJsYXllcnNfcGF0aCwgc2VsZi5tYWNoaW5laW5jX3BhdGhdOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG9zLnJlbW92ZShpbmNsX2ZpbGUpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRU5PRU5UOgorICAgICAgICAgICAgICAgICAgICByYWlzZQorCisgICAgICAgIGlmIHNlbGYudGMuY3VzdG9tbWFjaGluZToKKyAgICAgICAgICAgIG1hY2hpbmVfY29uZiA9ICdNQUNISU5FID8/PSAiJXMiXG4nICUgc2VsZi50Yy5jdXN0b21tYWNoaW5lCisgICAgICAgICAgICBzZWxmLnNldF9tYWNoaW5lX2NvbmZpZyhtYWNoaW5lX2NvbmYpCisKKyAgICAgICAgIyB0ZXN0cyBtaWdodCBuZWVkIHRoZWlyIG93biBzZXR1cAorICAgICAgICAjIGJ1dCBpZiB0aGV5IG92ZXJ3cml0ZSB0aGlzIG9uZSB0aGV5IGhhdmUgdG8gY2FsbAorICAgICAgICAjIHN1cGVyIGVhY2ggdGltZSwgc28gbGV0J3MgZ2l2ZSB0aGVtIGFuIGFsdGVybmF0aXZlCisgICAgICAgIHNlbGYuc2V0VXBMb2NhbCgpCisKKyAgICBkZWYgc2V0VXBMb2NhbChzZWxmKToKKyAgICAgICAgcGFzcworCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9leHRyYV90ZWFyX2Rvd25fY29tbWFuZHM6CisgICAgICAgICAgICBmYWlsZWRfZXh0cmFfY29tbWFuZHMgPSBbXQorICAgICAgICAgICAgZm9yIGNvbW1hbmQgaW4gc2VsZi5fZXh0cmFfdGVhcl9kb3duX2NvbW1hbmRzOgorICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZChjb21tYW5kLCBpZ25vcmVfc3RhdHVzPVRydWUpCisgICAgICAgICAgICAgICAgaWYgbm90IHJlc3VsdC5zdGF0dXMgPT0gIDA6CisgICAgICAgICAgICAgICAgICAgIGZhaWxlZF9leHRyYV9jb21tYW5kcy5hcHBlbmQoY29tbWFuZCkKKyAgICAgICAgICAgIGlmIGZhaWxlZF9leHRyYV9jb21tYW5kczoKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5nKCJ0ZWFyRG93biBjb21tYW5kcyBoYXZlIGZhaWxlZDogJXMiICUgJywgJy5qb2luKG1hcChzdHIsIGZhaWxlZF9leHRyYV9jb21tYW5kcykpKQorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJUcnlpbmcgdG8gbW92ZSBvbi4iKQorICAgICAgICAgICAgc2VsZi5fZXh0cmFfdGVhcl9kb3duX2NvbW1hbmRzID0gW10KKworICAgICAgICBpZiBzZWxmLl90cmFja19mb3JfY2xlYW51cDoKKyAgICAgICAgICAgIGZvciBwYXRoIGluIHNlbGYuX3RyYWNrX2Zvcl9jbGVhbnVwOgorICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIocGF0aCk6CisgICAgICAgICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUocGF0aCkKKyAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShwYXRoKToKKyAgICAgICAgICAgICAgICAgICAgb3MucmVtb3ZlKHBhdGgpCisgICAgICAgICAgICBzZWxmLl90cmFja19mb3JfY2xlYW51cCA9IFtdCisKKyAgICAgICAgc2VsZi50ZWFyRG93bkxvY2FsKCkKKyAgICAgICAgc3VwZXIoT0VTZWxmdGVzdFRlc3RDYXNlLCBzZWxmKS50ZWFyRG93bigpCisKKyAgICBkZWYgdGVhckRvd25Mb2NhbChzZWxmKToKKyAgICAgICAgcGFzcworCisgICAgZGVmIGFkZF9jb21tYW5kX3RvX3RlYXJEb3duKHNlbGYsIGNvbW1hbmQpOgorICAgICAgICAiIiJBZGQgdGVzdCBzcGVjaWZpYyBjb21tYW5kcyB0byB0aGUgdGVhckRvd24gbWV0aG9kIiIiCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJBZGRpbmcgY29tbWFuZCAnJXMnIHRvIHRlYXJEb3duIGZvciB0aGlzIHRlc3QuIiAlIGNvbW1hbmQpCisgICAgICAgIHNlbGYuX2V4dHJhX3RlYXJfZG93bl9jb21tYW5kcy5hcHBlbmQoY29tbWFuZCkKKworICAgIGRlZiB0cmFja19mb3JfY2xlYW51cChzZWxmLCBwYXRoKToKKyAgICAgICAgIiIiQWRkIHRlc3Qgc3BlY2lmaWMgZmlsZXMgb3IgZGlyZWN0b3JpZXMgdG8gYmUgcmVtb3ZlZCBpbiB0aGUgdGVhckRvd24gbWV0aG9kIiIiCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJBZGRpbmcgcGF0aCAnJXMnIHRvIGJlIGNsZWFuZWQgdXAgd2hlbiB0ZXN0IGlzIG92ZXIiICUgcGF0aCkKKyAgICAgICAgc2VsZi5fdHJhY2tfZm9yX2NsZWFudXAuYXBwZW5kKHBhdGgpCisKKyAgICBkZWYgd3JpdGVfY29uZmlnKHNlbGYsIGRhdGEpOgorICAgICAgICAiIiJXcml0ZSB0byA8YnVpbGRkaXI+L2NvbmYvc2VsZnRlc3QuaW5jIiIiCisKKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIldyaXRpbmcgdG86ICVzXG4lc1xuIiAlIChzZWxmLnRlc3RpbmNfcGF0aCwgZGF0YSkpCisgICAgICAgIGZ0b29scy53cml0ZV9maWxlKHNlbGYudGVzdGluY19wYXRoLCBkYXRhKQorCisgICAgICAgIGlmIHNlbGYudGMuY3VzdG9tbWFjaGluZSBhbmQgJ01BQ0hJTkUnIGluIGRhdGE6CisgICAgICAgICAgICBtYWNoaW5lID0gZ2V0X2JiX3ZhcignTUFDSElORScpCisgICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5nKCdNQUNISU5FIG92ZXJyaWRkZW46ICVzJyAlIG1hY2hpbmUpCisKKyAgICBkZWYgYXBwZW5kX2NvbmZpZyhzZWxmLCBkYXRhKToKKyAgICAgICAgIiIiQXBwZW5kIHRvIDxidWlsZGRpcj4vY29uZi9zZWxmdGVzdC5pbmMiIiIKKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkFwcGVuZGluZyB0bzogJXNcbiVzXG4iICUgKHNlbGYudGVzdGluY19wYXRoLCBkYXRhKSkKKyAgICAgICAgZnRvb2xzLmFwcGVuZF9maWxlKHNlbGYudGVzdGluY19wYXRoLCBkYXRhKQorCisgICAgICAgIGlmIHNlbGYudGMuY3VzdG9tbWFjaGluZSBhbmQgJ01BQ0hJTkUnIGluIGRhdGE6CisgICAgICAgICAgICBtYWNoaW5lID0gZ2V0X2JiX3ZhcignTUFDSElORScpCisgICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5nKCdNQUNISU5FIG92ZXJyaWRkZW46ICVzJyAlIG1hY2hpbmUpCisKKyAgICBkZWYgcmVtb3ZlX2NvbmZpZyhzZWxmLCBkYXRhKToKKyAgICAgICAgIiIiUmVtb3ZlIGRhdGEgZnJvbSA8YnVpbGRkaXI+L2NvbmYvc2VsZnRlc3QuaW5jIiIiCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJSZW1vdmluZyBmcm9tOiAlc1xuJXNcbiIgJSAoc2VsZi50ZXN0aW5jX3BhdGgsIGRhdGEpKQorICAgICAgICBmdG9vbHMucmVtb3ZlX2Zyb21fZmlsZShzZWxmLnRlc3RpbmNfcGF0aCwgZGF0YSkKKworICAgIGRlZiByZWNpcGVpbmMoc2VsZiwgcmVjaXBlKToKKyAgICAgICAgIiIiUmV0dXJuIGFic29sdXRlIHBhdGggb2YgbWV0YS1zZWZsdGVzdC9yZWNpcGVzLXRlc3QvPHJlY2lwZT4vdGVzdF9yZWNpcGUuaW5jIiIiCisgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oc2VsZi50ZXN0bGF5ZXJfcGF0aCwgJ3JlY2lwZXMtdGVzdCcsIHJlY2lwZSwgJ3Rlc3RfcmVjaXBlLmluYycpCisKKyAgICBkZWYgd3JpdGVfcmVjaXBlaW5jKHNlbGYsIHJlY2lwZSwgZGF0YSk6CisgICAgICAgICIiIldyaXRlIHRvIG1ldGEtc2VmbHRlc3QvcmVjaXBlcy10ZXN0LzxyZWNpcGU+L3Rlc3RfcmVjaXBlLmluYyIiIgorICAgICAgICBpbmNfZmlsZSA9IHNlbGYucmVjaXBlaW5jKHJlY2lwZSkKKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIldyaXRpbmcgdG86ICVzXG4lc1xuIiAlIChpbmNfZmlsZSwgZGF0YSkpCisgICAgICAgIGZ0b29scy53cml0ZV9maWxlKGluY19maWxlLCBkYXRhKQorICAgICAgICByZXR1cm4gaW5jX2ZpbGUKKworICAgIGRlZiBhcHBlbmRfcmVjaXBlaW5jKHNlbGYsIHJlY2lwZSwgZGF0YSk6CisgICAgICAgICIiIkFwcGVuZCBkYXRhIHRvIG1ldGEtc2VmbHRlc3QvcmVjaXBlcy10ZXN0LzxyZWNpcGU+L3Rlc3RfcmVjaXBlLmluYyIiIgorICAgICAgICBpbmNfZmlsZSA9IHNlbGYucmVjaXBlaW5jKHJlY2lwZSkKKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkFwcGVuZGluZyB0bzogJXNcbiVzXG4iICUgKGluY19maWxlLCBkYXRhKSkKKyAgICAgICAgZnRvb2xzLmFwcGVuZF9maWxlKGluY19maWxlLCBkYXRhKQorICAgICAgICByZXR1cm4gaW5jX2ZpbGUKKworICAgIGRlZiByZW1vdmVfcmVjaXBlaW5jKHNlbGYsIHJlY2lwZSwgZGF0YSk6CisgICAgICAgICIiIlJlbW92ZSBkYXRhIGZyb20gbWV0YS1zZWZsdGVzdC9yZWNpcGVzLXRlc3QvPHJlY2lwZT4vdGVzdF9yZWNpcGUuaW5jIiIiCisgICAgICAgIGluY19maWxlID0gc2VsZi5yZWNpcGVpbmMocmVjaXBlKQorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiUmVtb3ZpbmcgZnJvbTogJXNcbiVzXG4iICUgKGluY19maWxlLCBkYXRhKSkKKyAgICAgICAgZnRvb2xzLnJlbW92ZV9mcm9tX2ZpbGUoaW5jX2ZpbGUsIGRhdGEpCisKKyAgICBkZWYgZGVsZXRlX3JlY2lwZWluYyhzZWxmLCByZWNpcGUpOgorICAgICAgICAiIiJEZWxldGUgbWV0YS1zZWZsdGVzdC9yZWNpcGVzLXRlc3QvPHJlY2lwZT4vdGVzdF9yZWNpcGUuaW5jIGZpbGUiIiIKKyAgICAgICAgaW5jX2ZpbGUgPSBzZWxmLnJlY2lwZWluYyhyZWNpcGUpCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJEZWxldGluZyBmaWxlOiAlcyIgJSBpbmNfZmlsZSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3MucmVtb3ZlKGluY19maWxlKQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FTk9FTlQ6CisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICBkZWYgd3JpdGVfYmJsYXllcnNfY29uZmlnKHNlbGYsIGRhdGEpOgorICAgICAgICAiIiJXcml0ZSB0byA8YnVpbGRkaXI+L2NvbmYvYmJsYXllcnMuaW5jIiIiCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJXcml0aW5nIHRvOiAlc1xuJXNcbiIgJSAoc2VsZi50ZXN0aW5jX2JibGF5ZXJzX3BhdGgsIGRhdGEpKQorICAgICAgICBmdG9vbHMud3JpdGVfZmlsZShzZWxmLnRlc3RpbmNfYmJsYXllcnNfcGF0aCwgZGF0YSkKKworICAgIGRlZiBhcHBlbmRfYmJsYXllcnNfY29uZmlnKHNlbGYsIGRhdGEpOgorICAgICAgICAiIiJBcHBlbmQgdG8gPGJ1aWxkZGlyPi9jb25mL2JibGF5ZXJzLmluYyIiIgorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiQXBwZW5kaW5nIHRvOiAlc1xuJXNcbiIgJSAoc2VsZi50ZXN0aW5jX2JibGF5ZXJzX3BhdGgsIGRhdGEpKQorICAgICAgICBmdG9vbHMuYXBwZW5kX2ZpbGUoc2VsZi50ZXN0aW5jX2JibGF5ZXJzX3BhdGgsIGRhdGEpCisKKyAgICBkZWYgcmVtb3ZlX2JibGF5ZXJzX2NvbmZpZyhzZWxmLCBkYXRhKToKKyAgICAgICAgIiIiUmVtb3ZlIGRhdGEgZnJvbSA8YnVpbGRkaXI+L2NvbmYvYmJsYXllcnMuaW5jIiIiCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJSZW1vdmluZyBmcm9tOiAlc1xuJXNcbiIgJSAoc2VsZi50ZXN0aW5jX2JibGF5ZXJzX3BhdGgsIGRhdGEpKQorICAgICAgICBmdG9vbHMucmVtb3ZlX2Zyb21fZmlsZShzZWxmLnRlc3RpbmNfYmJsYXllcnNfcGF0aCwgZGF0YSkKKworICAgIGRlZiBzZXRfbWFjaGluZV9jb25maWcoc2VsZiwgZGF0YSk6CisgICAgICAgICIiIldyaXRlIHRvIDxidWlsZGRpcj4vY29uZi9tYWNoaW5lLmluYyIiIgorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiV3JpdGluZyB0bzogJXNcbiVzXG4iICUgKHNlbGYubWFjaGluZWluY19wYXRoLCBkYXRhKSkKKyAgICAgICAgZnRvb2xzLndyaXRlX2ZpbGUoc2VsZi5tYWNoaW5laW5jX3BhdGgsIGRhdGEpCisKKyAgICAjIGNoZWNrIGRvZXMgcGF0aCBleGlzdAorICAgIGRlZiBhc3NlcnRFeGlzdHMoc2VsZiwgZXhwciwgbXNnPU5vbmUpOgorICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZXhwcik6CisgICAgICAgICAgICBtc2cgPSBzZWxmLl9mb3JtYXRNZXNzYWdlKG1zZywgIiVzIGRvZXMgbm90IGV4aXN0IiAlIHNhZmVfcmVwcihleHByKSkKKyAgICAgICAgICAgIHJhaXNlIHNlbGYuZmFpbHVyZUV4Y2VwdGlvbihtc2cpCisKKyAgICAjIGNoZWNrIGRvZXMgcGF0aCBub3QgZXhpc3QKKyAgICBkZWYgYXNzZXJ0Tm90RXhpc3RzKHNlbGYsIGV4cHIsIG1zZz1Ob25lKToKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZXhwcik6CisgICAgICAgICAgICBtc2cgPSBzZWxmLl9mb3JtYXRNZXNzYWdlKG1zZywgIiVzIGV4aXN0cyB3aGVuIGl0IHNob3VsZCBub3QiICUgc2FmZV9yZXByKGV4cHIpKQorICAgICAgICAgICAgcmFpc2Ugc2VsZi5mYWlsdXJlRXhjZXB0aW9uKG1zZykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL19zc3RhdGV0ZXN0c19ub2F1dG8ucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9fc3N0YXRldGVzdHNfbm9hdXRvLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlNTg5NjIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9fc3N0YXRldGVzdHNfbm9hdXRvLnB5CkBAIC0wLDAgKzEsOTIgQEAKK2ltcG9ydCBvcworaW1wb3J0IHNodXRpbAorCitpbXBvcnQgb2VxYS51dGlscy5mdG9vbHMgYXMgZnRvb2xzCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZCwgYml0YmFrZSwgZ2V0X2JiX3ZhciwgZ2V0X3Rlc3RfbGF5ZXIKK2Zyb20gb2VxYS5zZWxmdGVzdC5jYXNlcy5zc3RhdGUgaW1wb3J0IFNTdGF0ZUJhc2UKKworCitjbGFzcyBSZWJ1aWxkRnJvbVNTdGF0ZShTU3RhdGVCYXNlKToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKHNlbGYpOgorICAgICAgICBzdXBlcihSZWJ1aWxkRnJvbVNTdGF0ZSwgc2VsZikuc2V0VXBDbGFzcygpCisgICAgICAgIHNlbGYuYnVpbGRkaXIgPSBvcy5wYXRoLmpvaW4ob3MuZW52aXJvbi5nZXQoJ0JVSUxERElSJykpCisKKyAgICBkZWYgZ2V0X2RlcF90YXJnZXRzKHNlbGYsIHByaW1hcnlfdGFyZ2V0cyk6CisgICAgICAgIGZvdW5kX3RhcmdldHMgPSBbXQorICAgICAgICBiaXRiYWtlKCItZyAiICsgJyAnLmpvaW4obWFwKHN0ciwgcHJpbWFyeV90YXJnZXRzKSkpCisgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgJ3BuLWJ1aWxkbGlzdCcpLCAncicpIGFzIHBuZmlsZToKKyAgICAgICAgICAgIGZvdW5kX3RhcmdldHMgPSBwbmZpbGUucmVhZCgpLnNwbGl0bGluZXMoKQorICAgICAgICByZXR1cm4gZm91bmRfdGFyZ2V0cworCisgICAgZGVmIGNvbmZpZ3VyZV9idWlsZGRpcihzZWxmLCBidWlsZGRpcik6CisgICAgICAgIG9zLm1rZGlyKGJ1aWxkZGlyKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKGJ1aWxkZGlyKQorICAgICAgICBvcy5ta2Rpcihvcy5wYXRoLmpvaW4oYnVpbGRkaXIsICdjb25mJykpCisgICAgICAgIHNodXRpbC5jb3B5ZmlsZShvcy5wYXRoLmpvaW4ob3MuZW52aXJvbi5nZXQoJ0JVSUxERElSJyksICdjb25mL2xvY2FsLmNvbmYnKSwgb3MucGF0aC5qb2luKGJ1aWxkZGlyLCAnY29uZi9sb2NhbC5jb25mJykpCisgICAgICAgIGNvbmZpZyA9IHt9CisgICAgICAgIGNvbmZpZ1snZGVmYXVsdF9zc3RhdGVfZGlyJ10gPSAiU1NUQVRFX0RJUiA/PSBcIiR7VE9QRElSfS9zc3RhdGUtY2FjaGVcIiIKKyAgICAgICAgY29uZmlnWydudWxsX3NzdGF0ZV9taXJyb3JzJ10gPSAiU1NUQVRFX01JUlJPUlMgPSBcIlwiIgorICAgICAgICBjb25maWdbJ2RlZmF1bHRfdG1wX2RpciddID0gIlRNUERJUiA9IFwiJHtUT1BESVJ9L3RtcFwiIgorICAgICAgICBmb3Iga2V5IGluIGNvbmZpZzoKKyAgICAgICAgICAgIGZ0b29scy5hcHBlbmRfZmlsZShvcy5wYXRoLmpvaW4oYnVpbGRkaXIsICdjb25mL3NlbGZ0ZXN0LmluYycpLCBjb25maWdba2V5XSkKKyAgICAgICAgc2h1dGlsLmNvcHlmaWxlKG9zLnBhdGguam9pbihvcy5lbnZpcm9uLmdldCgnQlVJTERESVInKSwgJ2NvbmYvYmJsYXllcnMuY29uZicpLCBvcy5wYXRoLmpvaW4oYnVpbGRkaXIsICdjb25mL2JibGF5ZXJzLmNvbmYnKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlKG9zLnBhdGguam9pbihvcy5lbnZpcm9uLmdldCgnQlVJTERESVInKSwgJ2NvbmYvYXV0by5jb25mJyksIG9zLnBhdGguam9pbihidWlsZGRpciwgJ2NvbmYvYXV0by5jb25mJykpCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiBoYXJkbGlua190cmVlKHNlbGYsIHNyYywgZHN0KToKKyAgICAgICAgb3MubWtkaXIoZHN0KQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKGRzdCkKKyAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsoc3JjKToKKyAgICAgICAgICAgIGlmIHJvb3QgPT0gc3JjOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBvcy5ta2Rpcihvcy5wYXRoLmpvaW4oZHN0LCByb290LnNwbGl0KHNyYylbMV1bMTpdKSkKKyAgICAgICAgICAgIGZvciBzc3RhdGVfZmlsZSBpbiBmaWxlczoKKyAgICAgICAgICAgICAgICBvcy5saW5rKG9zLnBhdGguam9pbihyb290LCBzc3RhdGVfZmlsZSksIG9zLnBhdGguam9pbihkc3QsIHJvb3Quc3BsaXQoc3JjKVsxXVsxOl0sIHNzdGF0ZV9maWxlKSkKKworICAgIGRlZiBydW5fdGVzdF9zc3RhdGVfcmVidWlsZChzZWxmLCBwcmltYXJ5X3RhcmdldHMsIHJlbG9jYXRlPUZhbHNlLCByZWJ1aWxkX2RlcGVuZGVuY2llcz1GYWxzZSk6CisgICAgICAgIGJ1aWxkQSA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCAnYnVpbGRBJykKKyAgICAgICAgaWYgcmVsb2NhdGU6CisgICAgICAgICAgICBidWlsZEIgPSBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgJ2J1aWxkQicpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBidWlsZEIgPSBidWlsZEEKKworICAgICAgICBpZiByZWJ1aWxkX2RlcGVuZGVuY2llczoKKyAgICAgICAgICAgIHJlYnVpbGRfdGFyZ2V0cyA9IHNlbGYuZ2V0X2RlcF90YXJnZXRzKHByaW1hcnlfdGFyZ2V0cykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlYnVpbGRfdGFyZ2V0cyA9IHByaW1hcnlfdGFyZ2V0cworCisgICAgICAgIHNlbGYuY29uZmlndXJlX2J1aWxkZGlyKGJ1aWxkQSkKKyAgICAgICAgcnVuQ21kKCgiLiAlcy9vZS1pbml0LWJ1aWxkLWVudiAlcyAmJiAiICUgKGdldF9iYl92YXIoJ0NPUkVCQVNFJyksIGJ1aWxkQSkpICsgJ2JpdGJha2UgICcgKyAnICcuam9pbihtYXAoc3RyLCBwcmltYXJ5X3RhcmdldHMpKSwgc2hlbGw9VHJ1ZSwgZXhlY3V0YWJsZT0nL2Jpbi9iYXNoJykKKyAgICAgICAgc2VsZi5oYXJkbGlua190cmVlKG9zLnBhdGguam9pbihidWlsZEEsICdzc3RhdGUtY2FjaGUnKSwgb3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsICdzc3RhdGUtY2FjaGUtYnVpbGRBJykpCisgICAgICAgIHNodXRpbC5ybXRyZWUoYnVpbGRBKQorCisgICAgICAgIGZhaWxlZF9yZWJ1aWxkID0gW10KKyAgICAgICAgZmFpbGVkX2NsZWFuc3N0YXRlID0gW10KKyAgICAgICAgZm9yIHRhcmdldCBpbiByZWJ1aWxkX3RhcmdldHM6CisgICAgICAgICAgICBzZWxmLmNvbmZpZ3VyZV9idWlsZGRpcihidWlsZEIpCisgICAgICAgICAgICBzZWxmLmhhcmRsaW5rX3RyZWUob3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsICdzc3RhdGUtY2FjaGUtYnVpbGRBJyksIG9zLnBhdGguam9pbihidWlsZEIsICdzc3RhdGUtY2FjaGUnKSkKKworICAgICAgICAgICAgcmVzdWx0X2NsZWFuc3N0YXRlID0gcnVuQ21kKCgiLiAlcy9vZS1pbml0LWJ1aWxkLWVudiAlcyAmJiAiICUgKGdldF9iYl92YXIoJ0NPUkVCQVNFJyksIGJ1aWxkQikpICsgJ2JpdGJha2UgLWNjbGVhbnNzdGF0ZSAnICsgdGFyZ2V0LCBpZ25vcmVfc3RhdHVzPVRydWUsIHNoZWxsPVRydWUsIGV4ZWN1dGFibGU9Jy9iaW4vYmFzaCcpCisgICAgICAgICAgICBpZiBub3QgcmVzdWx0X2NsZWFuc3N0YXRlLnN0YXR1cyA9PSAwOgorICAgICAgICAgICAgICAgIGZhaWxlZF9jbGVhbnNzdGF0ZS5hcHBlbmQodGFyZ2V0KQorICAgICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoYnVpbGRCKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIHJlc3VsdF9idWlsZCA9IHJ1bkNtZCgoIi4gJXMvb2UtaW5pdC1idWlsZC1lbnYgJXMgJiYgIiAlIChnZXRfYmJfdmFyKCdDT1JFQkFTRScpLCBidWlsZEIpKSArICdiaXRiYWtlICcgKyB0YXJnZXQsIGlnbm9yZV9zdGF0dXM9VHJ1ZSwgc2hlbGw9VHJ1ZSwgZXhlY3V0YWJsZT0nL2Jpbi9iYXNoJykKKyAgICAgICAgICAgIGlmIG5vdCByZXN1bHRfYnVpbGQuc3RhdHVzID09IDA6CisgICAgICAgICAgICAgICAgZmFpbGVkX3JlYnVpbGQuYXBwZW5kKHRhcmdldCkKKworICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShidWlsZEIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmYWlsZWRfcmVidWlsZCwgbXNnPSJUaGUgZm9sbG93aW5nIHJlY2lwZXMgaGF2ZSBmYWlsZWQgdG8gcmVidWlsZDogJXMiICUgJyAnLmpvaW4obWFwKHN0ciwgZmFpbGVkX3JlYnVpbGQpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmYWlsZWRfY2xlYW5zc3RhdGUsIG1zZz0iVGhlIGZvbGxvd2luZyByZWNpcGVzIGhhdmUgZmFpbGVkIGNsZWFuc3N0YXRlKGFsbCBvdGhlcnMgaGF2ZSBwYXNzZWQgYm90aCBjbGVhbnNzdGF0ZSBhbmQgcmVidWlsZCBmcm9tIHNzdGF0ZSB0ZXN0cyk6ICVzIiAlICcgJy5qb2luKG1hcChzdHIsIGZhaWxlZF9jbGVhbnNzdGF0ZSkpKQorCisgICAgZGVmIHRlc3Rfc3N0YXRlX3JlbG9jYXRpb24oc2VsZik6CisgICAgICAgIHNlbGYucnVuX3Rlc3Rfc3N0YXRlX3JlYnVpbGQoWydjb3JlLWltYWdlLXNhdG8tc2RrJ10sIHJlbG9jYXRlPVRydWUsIHJlYnVpbGRfZGVwZW5kZW5jaWVzPVRydWUpCisKKyAgICBkZWYgdGVzdF9zc3RhdGVfcmVidWlsZChzZWxmKToKKyAgICAgICAgc2VsZi5ydW5fdGVzdF9zc3RhdGVfcmVidWlsZChbJ2NvcmUtaW1hZ2Utc2F0by1zZGsnXSwgcmVsb2NhdGU9RmFsc2UsIHJlYnVpbGRfZGVwZW5kZW5jaWVzPVRydWUpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9hcmNoaXZlci5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2FyY2hpdmVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2MWE1MjIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9hcmNoaXZlci5weQpAQCAtMCwwICsxLDExOCBAQAoraW1wb3J0IG9zCitpbXBvcnQgZ2xvYgorZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBiaXRiYWtlLCBnZXRfYmJfdmFycworZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2UgaW1wb3J0IE9FU2VsZnRlc3RUZXN0Q2FzZQorZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLm9laWQgaW1wb3J0IE9FVGVzdElECisKK2NsYXNzIEFyY2hpdmVyKE9FU2VsZnRlc3RUZXN0Q2FzZSk6CisKKyAgICBAT0VUZXN0SUQoMTM0NSkKKyAgICBkZWYgdGVzdF9hcmNoaXZlcl9hbGxvd3NfdG9fZmlsdGVyX29uX3JlY2lwZV9uYW1lKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgU3VtbWFyeTogICAgIFRoZSBhcmNoaXZlciBzaG91bGQgb2ZmZXIgdGhlIHBvc3NpYmlsaXR5IHRvIGZpbHRlciBvbiB0aGUgcmVjaXBlLiAoIzY5MjkpCisgICAgICAgIEV4cGVjdGVkOiAgICAxLiBJbmNsdWRlZCByZWNpcGUgKGJ1c3lib3gpIHNob3VsZCBiZSBpbmNsdWRlZAorICAgICAgICAgICAgICAgICAgICAgMi4gRXhjbHVkZWQgcmVjaXBlICh6bGliKSBzaG91bGQgYmUgZXhjbHVkZWQKKyAgICAgICAgUHJvZHVjdDogICAgIG9lLWNvcmUKKyAgICAgICAgQXV0aG9yOiAgICAgIERhbmllbCBJc3RyYXRlIDxkYW5pZWwuYWxleGFuZHJ1eC5pc3RyYXRlQGludGVsLmNvbT4KKyAgICAgICAgQXV0b21hdGVkQnk6IERhbmllbCBJc3RyYXRlIDxkYW5pZWwuYWxleGFuZHJ1eC5pc3RyYXRlQGludGVsLmNvbT4KKyAgICAgICAgIiIiCisKKyAgICAgICAgaW5jbHVkZV9yZWNpcGUgPSAnYnVzeWJveCcKKyAgICAgICAgZXhjbHVkZV9yZWNpcGUgPSAnemxpYicKKworICAgICAgICBmZWF0dXJlcyA9ICdJTkhFUklUICs9ICJhcmNoaXZlciJcbicKKyAgICAgICAgZmVhdHVyZXMgKz0gJ0FSQ0hJVkVSX01PREVbc3JjXSA9ICJvcmlnaW5hbCJcbicKKyAgICAgICAgZmVhdHVyZXMgKz0gJ0NPUFlMRUZUX1BOX0lOQ0xVREUgPSAiJXMiXG4nICUgaW5jbHVkZV9yZWNpcGUKKyAgICAgICAgZmVhdHVyZXMgKz0gJ0NPUFlMRUZUX1BOX0VYQ0xVREUgPSAiJXMiXG4nICUgZXhjbHVkZV9yZWNpcGUKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZXMpCisKKyAgICAgICAgYml0YmFrZSgnLWMgY2xlYW4gJXMgJXMnICUgKGluY2x1ZGVfcmVjaXBlLCBleGNsdWRlX3JlY2lwZSkpCisgICAgICAgIGJpdGJha2UoIi1jIGRlcGxveV9hcmNoaXZlcyAlcyAlcyIgJSAoaW5jbHVkZV9yZWNpcGUsIGV4Y2x1ZGVfcmVjaXBlKSkKKworICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydERVBMT1lfRElSX1NSQycsICdUQVJHRVRfU1lTJ10pCisgICAgICAgIHNyY19wYXRoID0gb3MucGF0aC5qb2luKGJiX3ZhcnNbJ0RFUExPWV9ESVJfU1JDJ10sIGJiX3ZhcnNbJ1RBUkdFVF9TWVMnXSkKKworICAgICAgICAjIENoZWNrIHRoYXQgaW5jbHVkZV9yZWNpcGUgd2FzIGluY2x1ZGVkCisgICAgICAgIGluY2x1ZGVkX3ByZXNlbnQgPSBsZW4oZ2xvYi5nbG9iKHNyY19wYXRoICsgJy8lcy0qJyAlIGluY2x1ZGVfcmVjaXBlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluY2x1ZGVkX3ByZXNlbnQsICdSZWNpcGUgJXMgd2FzIG5vdCBpbmNsdWRlZC4nICUgaW5jbHVkZV9yZWNpcGUpCisKKyAgICAgICAgIyBDaGVjayB0aGF0IGV4Y2x1ZGVfcmVjaXBlIHdhcyBleGNsdWRlZAorICAgICAgICBleGNsdWRlZF9wcmVzZW50ID0gbGVuKGdsb2IuZ2xvYihzcmNfcGF0aCArICcvJXMtKicgJSBleGNsdWRlX3JlY2lwZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXhjbHVkZWRfcHJlc2VudCwgJ1JlY2lwZSAlcyB3YXMgbm90IGV4Y2x1ZGVkLicgJSBleGNsdWRlX3JlY2lwZSkKKworICAgIEBPRVRlc3RJRCgxOTAwKQorICAgIGRlZiB0ZXN0X2FyY2hpdmVyX2ZpbHRlcnNfYnlfdHlwZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFN1bW1hcnk6ICAgICBUaGUgYXJjaGl2ZXIgaXMgZG9jdW1lbnRlZCB0byBmaWx0ZXIgb24gdGhlIHJlY2lwZSB0eXBlLgorICAgICAgICBFeHBlY3RlZDogICAgMS4gaW5jbHVkZWQgcmVjaXBlIHR5cGUgKHRhcmdldCkgc2hvdWxkIGJlIGluY2x1ZGVkCisgICAgICAgICAgICAgICAgICAgICAyLiBvdGhlciB0eXBlcyBzaG91bGQgYmUgZXhjbHVkZWQKKyAgICAgICAgUHJvZHVjdDogICAgIG9lLWNvcmUKKyAgICAgICAgQXV0aG9yOiAgICAgIEFuZHLDqSBEcmFzemlrIDxhZHJhc3ppa0B0eWNvaW50LmNvbT4KKyAgICAgICAgIiIiCisKKyAgICAgICAgdGFyZ2V0X3JlY2lwZSA9ICdpbml0c2NyaXB0cycKKyAgICAgICAgbmF0aXZlX3JlY2lwZSA9ICd6bGliLW5hdGl2ZScKKworICAgICAgICBmZWF0dXJlcyA9ICdJTkhFUklUICs9ICJhcmNoaXZlciJcbicKKyAgICAgICAgZmVhdHVyZXMgKz0gJ0FSQ0hJVkVSX01PREVbc3JjXSA9ICJvcmlnaW5hbCJcbicKKyAgICAgICAgZmVhdHVyZXMgKz0gJ0NPUFlMRUZUX1JFQ0lQRV9UWVBFUyA9ICJ0YXJnZXQiXG4nCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmVzKQorCisgICAgICAgIGJpdGJha2UoJy1jIGNsZWFuICVzICVzJyAlICh0YXJnZXRfcmVjaXBlLCBuYXRpdmVfcmVjaXBlKSkKKyAgICAgICAgYml0YmFrZSgiJXMgLWMgZGVwbG95X2FyY2hpdmVzICVzIiAlICh0YXJnZXRfcmVjaXBlLCBuYXRpdmVfcmVjaXBlKSkKKworICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydERVBMT1lfRElSX1NSQycsICdUQVJHRVRfU1lTJywgJ0JVSUxEX1NZUyddKQorICAgICAgICBzcmNfcGF0aF90YXJnZXQgPSBvcy5wYXRoLmpvaW4oYmJfdmFyc1snREVQTE9ZX0RJUl9TUkMnXSwgYmJfdmFyc1snVEFSR0VUX1NZUyddKQorICAgICAgICBzcmNfcGF0aF9uYXRpdmUgPSBvcy5wYXRoLmpvaW4oYmJfdmFyc1snREVQTE9ZX0RJUl9TUkMnXSwgYmJfdmFyc1snQlVJTERfU1lTJ10pCisKKyAgICAgICAgIyBDaGVjayB0aGF0IHRhcmdldF9yZWNpcGUgd2FzIGluY2x1ZGVkCisgICAgICAgIGluY2x1ZGVkX3ByZXNlbnQgPSBsZW4oZ2xvYi5nbG9iKHNyY19wYXRoX3RhcmdldCArICcvJXMtKicgJSB0YXJnZXRfcmVjaXBlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluY2x1ZGVkX3ByZXNlbnQsICdSZWNpcGUgJXMgd2FzIG5vdCBpbmNsdWRlZC4nICUgdGFyZ2V0X3JlY2lwZSkKKworICAgICAgICAjIENoZWNrIHRoYXQgbmF0aXZlX3JlY2lwZSB3YXMgZXhjbHVkZWQKKyAgICAgICAgZXhjbHVkZWRfcHJlc2VudCA9IGxlbihnbG9iLmdsb2Ioc3JjX3BhdGhfbmF0aXZlICsgJy8lcy0qJyAlIG5hdGl2ZV9yZWNpcGUpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGV4Y2x1ZGVkX3ByZXNlbnQsICdSZWNpcGUgJXMgd2FzIG5vdCBleGNsdWRlZC4nICUgbmF0aXZlX3JlY2lwZSkKKworICAgIEBPRVRlc3RJRCgxOTAxKQorICAgIGRlZiB0ZXN0X2FyY2hpdmVyX2ZpbHRlcnNfYnlfdHlwZV9hbmRfbmFtZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFN1bW1hcnk6ICAgICBUZXN0IHRoYXQgdGhlIGFyY2hpdmVyIGFyY2hpdmVzIGJ5IHJlY2lwZSB0eXBlLCB0YWtpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICByZWNpcGUgbmFtZSBpbnRvIGFjY291bnQuCisgICAgICAgIEV4cGVjdGVkOiAgICAxLiBpbmNsdWRlZCByZWNpcGUgdHlwZSAodGFyZ2V0KSBzaG91bGQgYmUgaW5jbHVkZWQKKyAgICAgICAgICAgICAgICAgICAgIDIuIG90aGVyIHR5cGVzIHNob3VsZCBiZSBleGNsdWRlZAorICAgICAgICAgICAgICAgICAgICAgMy4gcmVjaXBlIGJ5IG5hbWUgc2hvdWxkIGJlIGluY2x1ZGVkIC8gZXhjbHVkZWQsCisgICAgICAgICAgICAgICAgICAgICAgICBvdmVycmlkaW5nIHByZXZpb3VzIGRlY2lzaW9uIGJ5IHR5cGUKKyAgICAgICAgUHJvZHVjdDogICAgIG9lLWNvcmUKKyAgICAgICAgQXV0aG9yOiAgICAgIEFuZHLDqSBEcmFzemlrIDxhZHJhc3ppa0B0eWNvaW50LmNvbT4KKyAgICAgICAgIiIiCisKKyAgICAgICAgdGFyZ2V0X3JlY2lwZXMgPSBbICdpbml0c2NyaXB0cycsICd6bGliJyBdCisgICAgICAgIG5hdGl2ZV9yZWNpcGVzID0gWyAndXBkYXRlLXJjLmQtbmF0aXZlJywgJ3psaWItbmF0aXZlJyBdCisKKyAgICAgICAgZmVhdHVyZXMgPSAnSU5IRVJJVCArPSAiYXJjaGl2ZXIiXG4nCisgICAgICAgIGZlYXR1cmVzICs9ICdBUkNISVZFUl9NT0RFW3NyY10gPSAib3JpZ2luYWwiXG4nCisgICAgICAgIGZlYXR1cmVzICs9ICdDT1BZTEVGVF9SRUNJUEVfVFlQRVMgPSAidGFyZ2V0IlxuJworICAgICAgICBmZWF0dXJlcyArPSAnQ09QWUxFRlRfUE5fSU5DTFVERSA9ICIlcyJcbicgJSBuYXRpdmVfcmVjaXBlc1sxXQorICAgICAgICBmZWF0dXJlcyArPSAnQ09QWUxFRlRfUE5fRVhDTFVERSA9ICIlcyJcbicgJSB0YXJnZXRfcmVjaXBlc1sxXQorICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKKworICAgICAgICBiaXRiYWtlKCctYyBjbGVhbiAlcyAlcycgJSAoJyAnLmpvaW4odGFyZ2V0X3JlY2lwZXMpLCAnICcuam9pbihuYXRpdmVfcmVjaXBlcykpKQorICAgICAgICBiaXRiYWtlKCctYyBkZXBsb3lfYXJjaGl2ZXMgJXMgJXMnICUgKCcgJy5qb2luKHRhcmdldF9yZWNpcGVzKSwgJyAnLmpvaW4obmF0aXZlX3JlY2lwZXMpKSkKKworICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydERVBMT1lfRElSX1NSQycsICdUQVJHRVRfU1lTJywgJ0JVSUxEX1NZUyddKQorICAgICAgICBzcmNfcGF0aF90YXJnZXQgPSBvcy5wYXRoLmpvaW4oYmJfdmFyc1snREVQTE9ZX0RJUl9TUkMnXSwgYmJfdmFyc1snVEFSR0VUX1NZUyddKQorICAgICAgICBzcmNfcGF0aF9uYXRpdmUgPSBvcy5wYXRoLmpvaW4oYmJfdmFyc1snREVQTE9ZX0RJUl9TUkMnXSwgYmJfdmFyc1snQlVJTERfU1lTJ10pCisKKyAgICAgICAgIyBDaGVjayB0aGF0IHRhcmdldF9yZWNpcGVbMF0gYW5kIG5hdGl2ZV9yZWNpcGVzWzFdIHdlcmUgaW5jbHVkZWQKKyAgICAgICAgaW5jbHVkZWRfcHJlc2VudCA9IGxlbihnbG9iLmdsb2Ioc3JjX3BhdGhfdGFyZ2V0ICsgJy8lcy0qJyAlIHRhcmdldF9yZWNpcGVzWzBdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluY2x1ZGVkX3ByZXNlbnQsICdSZWNpcGUgJXMgd2FzIG5vdCBpbmNsdWRlZC4nICUgdGFyZ2V0X3JlY2lwZXNbMF0pCisKKyAgICAgICAgaW5jbHVkZWRfcHJlc2VudCA9IGxlbihnbG9iLmdsb2Ioc3JjX3BhdGhfbmF0aXZlICsgJy8lcy0qJyAlIG5hdGl2ZV9yZWNpcGVzWzFdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluY2x1ZGVkX3ByZXNlbnQsICdSZWNpcGUgJXMgd2FzIG5vdCBpbmNsdWRlZC4nICUgbmF0aXZlX3JlY2lwZXNbMV0pCisKKyAgICAgICAgIyBDaGVjayB0aGF0IG5hdGl2ZV9yZWNpcGVzWzBdIGFuZCB0YXJnZXRfcmVjaXBlc1sxXSB3ZXJlIGV4Y2x1ZGVkCisgICAgICAgIGV4Y2x1ZGVkX3ByZXNlbnQgPSBsZW4oZ2xvYi5nbG9iKHNyY19wYXRoX25hdGl2ZSArICcvJXMtKicgJSBuYXRpdmVfcmVjaXBlc1swXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXhjbHVkZWRfcHJlc2VudCwgJ1JlY2lwZSAlcyB3YXMgbm90IGV4Y2x1ZGVkLicgJSBuYXRpdmVfcmVjaXBlc1swXSkKKworICAgICAgICBleGNsdWRlZF9wcmVzZW50ID0gbGVuKGdsb2IuZ2xvYihzcmNfcGF0aF90YXJnZXQgKyAnLyVzLSonICUgdGFyZ2V0X3JlY2lwZXNbMV0pKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGV4Y2x1ZGVkX3ByZXNlbnQsICdSZWNpcGUgJXMgd2FzIG5vdCBleGNsdWRlZC4nICUgdGFyZ2V0X3JlY2lwZXNbMV0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9iYmxheWVycy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2JibGF5ZXJzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwYTIyNDkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9iYmxheWVycy5weQpAQCAtMCwwICsxLDk3IEBACitpbXBvcnQgb3MKK2ltcG9ydCByZQorCitpbXBvcnQgb2VxYS51dGlscy5mdG9vbHMgYXMgZnRvb2xzCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZCwgZ2V0X2JiX3ZhcgorCitmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZSBpbXBvcnQgT0VTZWxmdGVzdFRlc3RDYXNlCitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3Iub2VpZCBpbXBvcnQgT0VUZXN0SUQKKworY2xhc3MgQml0YmFrZUxheWVycyhPRVNlbGZ0ZXN0VGVzdENhc2UpOgorCisgICAgQE9FVGVzdElEKDc1NikKKyAgICBkZWYgdGVzdF9iaXRiYWtlbGF5ZXJzX3Nob3djcm9zc2RlcGVuZHMoc2VsZik6CisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgc2hvdy1jcm9zcy1kZXBlbmRzJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdhc3BlbGwnIGluIHJlc3VsdC5vdXRwdXQsIG1zZyA9ICJObyBkZXBlbmRlbmNpZXMgd2VyZSBzaG93bi4gYml0YmFrZS1sYXllcnMgc2hvdy1jcm9zcy1kZXBlbmRzIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKKworICAgIEBPRVRlc3RJRCg4MykKKyAgICBkZWYgdGVzdF9iaXRiYWtlbGF5ZXJzX3Nob3dsYXllcnMoc2VsZik6CisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgc2hvdy1sYXllcnMnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ21ldGEtc2VsZnRlc3QnIGluIHJlc3VsdC5vdXRwdXQsIG1zZyA9ICJObyBsYXllcnMgd2VyZSBzaG93bi4gYml0YmFrZS1sYXllcnMgc2hvdy1sYXllcnMgb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQorCisgICAgQE9FVGVzdElEKDkzKQorICAgIGRlZiB0ZXN0X2JpdGJha2VsYXllcnNfc2hvd2FwcGVuZHMoc2VsZik6CisgICAgICAgIHJlY2lwZSA9ICJ4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lIgorICAgICAgICBiYl9maWxlID0gc2VsZi5nZXRfcmVjaXBlX2Jhc2VuYW1lKHJlY2lwZSkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyBzaG93LWFwcGVuZHMnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYmJfZmlsZSBpbiByZXN1bHQub3V0cHV0LCBtc2c9IiVzIGZpbGUgd2FzIG5vdCByZWNvZ25pc2VkLiBiaXRiYWtlLWxheWVycyBzaG93LWFwcGVuZHMgb3V0cHV0OiAlcyIgJSAoYmJfZmlsZSwgcmVzdWx0Lm91dHB1dCkpCisKKyAgICBAT0VUZXN0SUQoOTApCisgICAgZGVmIHRlc3RfYml0YmFrZWxheWVyc19zaG93b3ZlcmxheWVkKHNlbGYpOgorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHNob3ctb3ZlcmxheWVkJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdhc3BlbGwnIGluIHJlc3VsdC5vdXRwdXQsIG1zZz0iYXNwZWxsIG92ZXJsYXllZCByZWNpcGUgd2FzIG5vdCByZWNvZ25pc2VkIGJpdGJha2UtbGF5ZXJzIHNob3ctb3ZlcmxheWVkICVzIiAlIHJlc3VsdC5vdXRwdXQpCisKKyAgICBAT0VUZXN0SUQoOTUpCisgICAgZGVmIHRlc3RfYml0YmFrZWxheWVyc19mbGF0dGVuKHNlbGYpOgorICAgICAgICByZWNpcGUgPSAieGN1cnNvci10cmFuc3BhcmVudC10aGVtZSIKKyAgICAgICAgcmVjaXBlX3BhdGggPSAicmVjaXBlcy1ncmFwaGljcy94Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lIgorICAgICAgICByZWNpcGVfZmlsZSA9IHNlbGYuZ2V0X3JlY2lwZV9iYXNlbmFtZShyZWNpcGUpCisgICAgICAgIHRlc3RvdXRkaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgJ3Rlc3RfYml0YmFrZWxheWVyc19mbGF0dGVuJykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmlzZGlyKHRlc3RvdXRkaXIpLCBtc2cgPSAidGVzdF9iaXRiYWtlbGF5ZXJzX2ZsYXR0ZW4gc2hvdWxkIG5vdCBleGlzdCBhdCB0aGlzIHBvaW50IGluIHRpbWUiKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlc3RvdXRkaXIpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgZmxhdHRlbiAlcycgJSB0ZXN0b3V0ZGlyKQorICAgICAgICBiYl9maWxlID0gb3MucGF0aC5qb2luKHRlc3RvdXRkaXIsIHJlY2lwZV9wYXRoLCByZWNpcGVfZmlsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKGJiX2ZpbGUpLCBtc2cgPSAiQ2Fubm90IGZpbmQgeGN1cnNvci10cmFuc3BhcmVudC10aGVtZV8wLjEuMS5iYiBpbiB0aGUgdGVzdF9iaXRiYWtlbGF5ZXJzX2ZsYXR0ZW4gbG9jYWwgZGlyLiIpCisgICAgICAgIGNvbnRlbnRzID0gZnRvb2xzLnJlYWRfZmlsZShiYl9maWxlKQorICAgICAgICBmaW5kX2luX2NvbnRlbnRzID0gcmUuc2VhcmNoKCIjIyMjIyBiYmFwcGVuZGVkIGZyb20gbWV0YS1zZWxmdGVzdCAjIyMjI1xuKC4qXG4pKmluY2x1ZGUgdGVzdF9yZWNpcGUuaW5jIiwgY29udGVudHMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmaW5kX2luX2NvbnRlbnRzLCBtc2cgPSAiRmxhdHRlbmluZyBsYXllcnMgZGlkIG5vdCB3b3JrLiBiaXRiYWtlLWxheWVycyBmbGF0dGVuIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKKworICAgIEBPRVRlc3RJRCgxMTk1KQorICAgIGRlZiB0ZXN0X2JpdGJha2VsYXllcnNfYWRkX3JlbW92ZShzZWxmKToKKyAgICAgICAgdGVzdF9sYXllciA9IG9zLnBhdGguam9pbihnZXRfYmJfdmFyKCdDT1JFQkFTRScpLCAnbWV0YS1za2VsZXRvbicpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgc2hvdy1sYXllcnMnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdtZXRhLXNrZWxldG9uJywgcmVzdWx0Lm91dHB1dCwgIlRoaXMgdGVzdCBjYW5ub3QgcnVuIHdpdGggbWV0YS1za2VsZXRvbiBpbiBiYmxheWVycy5jb25mLiBiaXRiYWtlLWxheWVycyBzaG93LWxheWVycyBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgYWRkLWxheWVyICVzJyAlIHRlc3RfbGF5ZXIpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgc2hvdy1sYXllcnMnKQorICAgICAgICBzZWxmLmFzc2VydEluKCdtZXRhLXNrZWxldG9uJywgcmVzdWx0Lm91dHB1dCwgbXNnID0gIlNvbWV0aGluZyB3cm9uZyBoYXBwZW5lZC4gbWV0YS1za2VsZXRvbiBsYXllciB3YXMgbm90IGFkZGVkIHRvIGNvbmYvYmJsYXllcnMuY29uZi4gIGJpdGJha2UtbGF5ZXJzIHNob3ctbGF5ZXJzIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgJXMnICUgdGVzdF9sYXllcikKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyBzaG93LWxheWVycycpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ21ldGEtc2tlbGV0b24nLCByZXN1bHQub3V0cHV0LCBtc2cgPSAibWV0YS1za2VsZXRvbiBzaG91bGQgaGF2ZSBiZWVuIHJlbW92ZWQgYXQgdGhpcyBzdGVwLiAgYml0YmFrZS1sYXllcnMgc2hvdy1sYXllcnMgb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIGFkZC1sYXllciAlcycgJSB0ZXN0X2xheWVyKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHNob3ctbGF5ZXJzJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbWV0YS1za2VsZXRvbicsIHJlc3VsdC5vdXRwdXQsIG1zZyA9ICJTb21ldGhpbmcgd3JvbmcgaGFwcGVuZWQuIG1ldGEtc2tlbGV0b24gbGF5ZXIgd2FzIG5vdCBhZGRlZCB0byBjb25mL2JibGF5ZXJzLmNvbmYuICBiaXRiYWtlLWxheWVycyBzaG93LWxheWVycyBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovbWV0YS1za2VsZXRvbicpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgc2hvdy1sYXllcnMnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdtZXRhLXNrZWxldG9uJywgcmVzdWx0Lm91dHB1dCwgbXNnID0gIm1ldGEtc2tlbGV0b24gc2hvdWxkIGhhdmUgYmVlbiByZW1vdmVkIGF0IHRoaXMgc3RlcC4gIGJpdGJha2UtbGF5ZXJzIHNob3ctbGF5ZXJzIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKKworICAgIEBPRVRlc3RJRCgxMzg0KQorICAgIGRlZiB0ZXN0X2JpdGJha2VsYXllcnNfc2hvd3JlY2lwZXMoc2VsZik6CisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgc2hvdy1yZWNpcGVzJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignYXNwZWxsOicsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ210ZC11dGlsczonLCByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKCdjb3JlLWltYWdlLW1pbmltYWw6JywgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyBzaG93LXJlY2lwZXMgbXRkLXV0aWxzJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbXRkLXV0aWxzOicsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ2FzcGVsbDonLCByZXN1bHQub3V0cHV0KQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHNob3ctcmVjaXBlcyAtaSBpbWFnZScpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2NvcmUtaW1hZ2UtbWluaW1hbCcsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ210ZC11dGlsczonLCByZXN1bHQub3V0cHV0KQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHNob3ctcmVjaXBlcyAtaSBjbWFrZSxwa2djb25maWcnKQorICAgICAgICBzZWxmLmFzc2VydEluKCdsaWJwcm94eTonLCByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdtdGQtdXRpbHM6JywgcmVzdWx0Lm91dHB1dCkgIyBkb2Vzbid0IGluaGVyaXQgZWl0aGVyCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ3dnZXQ6JywgcmVzdWx0Lm91dHB1dCkgIyBkb2Vzbid0IGluaGVyaXQgY21ha2UKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignd2FmZmxlOicsIHJlc3VsdC5vdXRwdXQpICMgZG9lc24ndCBpbmhlcml0IHBrZ2NvbmZpZworICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHNob3ctcmVjaXBlcyAtaSBub25leGlzdGVudGNsYXNzJywgaWdub3JlX3N0YXR1cz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJlc3VsdC5zdGF0dXMsIDAsICdiaXRiYWtlLWxheWVycyBzaG93LXJlY2lwZXMgLWkgbm9uZXhpc3RlbnRjbGFzcyBzaG91bGQgaGF2ZSBmYWlsZWQnKQorICAgICAgICBzZWxmLmFzc2VydEluKCdFUlJPUjonLCByZXN1bHQub3V0cHV0KQorCisgICAgZGVmIGdldF9yZWNpcGVfYmFzZW5hbWUoc2VsZiwgcmVjaXBlKToKKyAgICAgICAgcmVjaXBlX2ZpbGUgPSAiIgorICAgICAgICByZXN1bHQgPSBydW5DbWQoImJpdGJha2UtbGF5ZXJzIHNob3ctcmVjaXBlcyAtZiAlcyIgJSByZWNpcGUpCisgICAgICAgIGZvciBsaW5lIGluIHJlc3VsdC5vdXRwdXQuc3BsaXRsaW5lcygpOgorICAgICAgICAgICAgaWYgcmVjaXBlIGluIGxpbmU6CisgICAgICAgICAgICAgICAgcmVjaXBlX2ZpbGUgPSBsaW5lCisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUocmVjaXBlX2ZpbGUpLCBtc2cgPSAiQ2FuJ3QgZmluZCByZWNpcGUgZmlsZSBmb3IgJXMiICUgcmVjaXBlKQorICAgICAgICByZXR1cm4gb3MucGF0aC5iYXNlbmFtZShyZWNpcGVfZmlsZSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2JidGVzdHMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9iYnRlc3RzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjODIwNDkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9iYnRlc3RzLnB5CkBAIC0wLDAgKzEsMjc5IEBACitpbXBvcnQgb3MKK2ltcG9ydCByZQorCitpbXBvcnQgb2VxYS51dGlscy5mdG9vbHMgYXMgZnRvb2xzCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZCwgYml0YmFrZSwgZ2V0X2JiX3ZhciwgZ2V0X2JiX3ZhcnMKKworZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2UgaW1wb3J0IE9FU2VsZnRlc3RUZXN0Q2FzZQorZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLm9laWQgaW1wb3J0IE9FVGVzdElECisKK2NsYXNzIEJpdGJha2VUZXN0cyhPRVNlbGZ0ZXN0VGVzdENhc2UpOgorCisgICAgZGVmIGdldGxpbmUoc2VsZiwgcmVzLCBsaW5lKToKKyAgICAgICAgZm9yIGwgaW4gcmVzLm91dHB1dC5zcGxpdCgnXG4nKToKKyAgICAgICAgICAgIGlmIGxpbmUgaW4gbDoKKyAgICAgICAgICAgICAgICByZXR1cm4gbAorCisgICAgQE9FVGVzdElEKDc4OSkKKyAgICBkZWYgdGVzdF9ydW5fYml0YmFrZV9mcm9tX2Rpcl8xKHNlbGYpOgorICAgICAgICBvcy5jaGRpcihvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgJ2NvbmYnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiaXRiYWtlKCctZScpLnN0YXR1cywgMCwgbXNnID0gImJpdGJha2UgY291bGRuJ3QgcnVuIGZyb20gXCJjb25mXCIgZGlyIikKKworICAgIEBPRVRlc3RJRCg3OTApCisgICAgZGVmIHRlc3RfcnVuX2JpdGJha2VfZnJvbV9kaXJfMihzZWxmKToKKyAgICAgICAgbXlfZW52ID0gb3MuZW52aXJvbi5jb3B5KCkKKyAgICAgICAgbXlfZW52WydCQlBBVEgnXSA9IG15X2VudlsnQlVJTERESVInXQorICAgICAgICBvcy5jaGRpcihvcy5wYXRoLmRpcm5hbWUob3MuZW52aXJvblsnQlVJTERESVInXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYml0YmFrZSgnLWUnLCBlbnY9bXlfZW52KS5zdGF0dXMsIDAsIG1zZyA9ICJiaXRiYWtlIGNvdWxkbid0IHJ1biBmcm9tIGJ1aWxkZGlyIikKKworICAgIEBPRVRlc3RJRCg4MDYpCisgICAgZGVmIHRlc3RfZXZlbnRfaGFuZGxlcihzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIklOSEVSSVQgKz0gXCJ0ZXN0X2V2ZW50c1wiIikKKyAgICAgICAgcmVzdWx0ID0gYml0YmFrZSgnbTQtbmF0aXZlJykKKyAgICAgICAgZmluZF9idWlsZF9zdGFydGVkID0gcmUuc2VhcmNoKCJOT1RFOiBUZXN0IGZvciBiYlwuZXZlbnRcLkJ1aWxkU3RhcnRlZChcbi4qKSpOT1RFOiBFeGVjdXRpbmcgUnVuUXVldWUgVGFza3MiLCByZXN1bHQub3V0cHV0KQorICAgICAgICBmaW5kX2J1aWxkX2NvbXBsZXRlZCA9IHJlLnNlYXJjaCgiVGFza3MgU3VtbWFyeTouKihcbi4qKSpOT1RFOiBUZXN0IGZvciBiYlwuZXZlbnRcLkJ1aWxkQ29tcGxldGVkIiwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZpbmRfYnVpbGRfc3RhcnRlZCwgbXNnID0gIk1hdGNoIGZhaWxlZCBpbjpcbiVzIiAgJSByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZmluZF9idWlsZF9jb21wbGV0ZWQsIG1zZyA9ICJNYXRjaCBmYWlsZWQgaW46XG4lcyIgJSByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdUZXN0IGZvciBiYi5ldmVudC5JbnZhbGlkRXZlbnQnIGluIHJlc3VsdC5vdXRwdXQsIG1zZyA9ICJcIlRlc3QgZm9yIGJiLmV2ZW50LkludmFsaWRFdmVudFwiIG1lc3NhZ2UgZm91bmQgZHVyaW5nIGJpdGJha2UgcHJvY2Vzcy4gYml0YmFrZSBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCisKKyAgICBAT0VUZXN0SUQoMTAzKQorICAgIGRlZiB0ZXN0X2xvY2FsX3NzdGF0ZShzZWxmKToKKyAgICAgICAgYml0YmFrZSgnbTQtbmF0aXZlJykKKyAgICAgICAgYml0YmFrZSgnbTQtbmF0aXZlIC1jY2xlYW4nKQorICAgICAgICByZXN1bHQgPSBiaXRiYWtlKCdtNC1uYXRpdmUnKQorICAgICAgICBmaW5kX3NldHNjZW5lID0gcmUuc2VhcmNoKCJtNC1uYXRpdmUuKmRvXy4qX3NldHNjZW5lIiwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZpbmRfc2V0c2NlbmUsIG1zZyA9ICJObyBcIm00LW5hdGl2ZS4qZG9fLipfc2V0c2NlbmVcIiBtZXNzYWdlIGZvdW5kIGR1cmluZyBiaXRiYWtlIG00LW5hdGl2ZS4gYml0YmFrZSBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQgKQorCisgICAgQE9FVGVzdElEKDEwNSkKKyAgICBkZWYgdGVzdF9iaXRiYWtlX2ludmFsaWRfcmVjaXBlKHNlbGYpOgorICAgICAgICByZXN1bHQgPSBiaXRiYWtlKCctYiBhc2RmJywgaWdub3JlX3N0YXR1cz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoIkVSUk9SOiBVbmFibGUgdG8gZmluZCBhbnkgcmVjaXBlIGZpbGUgbWF0Y2hpbmcgJ2FzZGYnIiBpbiByZXN1bHQub3V0cHV0LCBtc2cgPSAiVGhvdWdoIGFzZGYgcmVjaXBlIGRvZXNuJ3QgZXhpc3QsIGJpdGJha2UgZGlkbid0IG91dHB1dCBhbnkgZXJyLiBtZXNzYWdlLiBiaXRiYWtlIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKKworICAgIEBPRVRlc3RJRCgxMDcpCisgICAgZGVmIHRlc3RfYml0YmFrZV9pbnZhbGlkX3RhcmdldChzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gYml0YmFrZSgnYXNkZicsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCJFUlJPUjogTm90aGluZyBQUk9WSURFUyAnYXNkZiciIGluIHJlc3VsdC5vdXRwdXQsIG1zZyA9ICJUaG91Z2ggbm8gJ2FzZGYnIHRhcmdldCBleGlzdHMsIGJpdGJha2UgZGlkbid0IG91dHB1dCBhbnkgZXJyLiBtZXNzYWdlLiBiaXRiYWtlIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKKworICAgIEBPRVRlc3RJRCgxMDYpCisgICAgZGVmIHRlc3Rfd2FybmluZ3NfZXJyb3JzKHNlbGYpOgorICAgICAgICByZXN1bHQgPSBiaXRiYWtlKCctYiBhc2RmJywgaWdub3JlX3N0YXR1cz1UcnVlKQorICAgICAgICBmaW5kX3dhcm5pbmdzID0gcmUuc2VhcmNoKCJTdW1tYXJ5OiBUaGVyZSB3LnsyLDN9PyBbMS05XVswLTldKiBXQVJOSU5HIG1lc3NhZ2VzKiBzaG93biIsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIGZpbmRfZXJyb3JzID0gcmUuc2VhcmNoKCJTdW1tYXJ5OiBUaGVyZSB3LnsyLDN9PyBbMS05XVswLTldKiBFUlJPUiBtZXNzYWdlcyogc2hvd24iLCByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZmluZF93YXJuaW5ncywgbXNnPSJEaWQgbm90IGZpbmQgdGhlIG11bWJlciBvZiB3YXJuaW5ncyBhdCB0aGUgZW5kIG9mIHRoZSBidWlsZDpcbiIgKyByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZmluZF9lcnJvcnMsIG1zZz0iRGlkIG5vdCBmaW5kIHRoZSBtdW1iZXIgb2YgZXJyb3JzIGF0IHRoZSBlbmQgb2YgdGhlIGJ1aWxkOlxuIiArIHJlc3VsdC5vdXRwdXQpCisKKyAgICBAT0VUZXN0SUQoMTA4KQorICAgIGRlZiB0ZXN0X2ludmFsaWRfcGF0Y2goc2VsZik6CisgICAgICAgICMgVGhpcyBwYXRjaCBhbHJlYWR5IGV4aXN0cyBpbiBTUkNfVVJJIHNvIGFkZGluZyBpdCBhZ2FpbiB3aWxsIGNhdXNlIHRoZQorICAgICAgICAjIHBhdGNoIHRvIGZhaWwuCisgICAgICAgIHNlbGYud3JpdGVfcmVjaXBlaW5jKCdtYW4nLCAnU1JDX1VSSSArPSAiZmlsZTovL21hbi0xLjVoMS1tYWtlLnBhdGNoIicpCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCJJTkhFUklUX3JlbW92ZSA9IFwicmVwb3J0LWVycm9yXCIiKQorICAgICAgICByZXN1bHQgPSBiaXRiYWtlKCdtYW4gLWMgcGF0Y2gnLCBpZ25vcmVfc3RhdHVzPVRydWUpCisgICAgICAgIHNlbGYuZGVsZXRlX3JlY2lwZWluYygnbWFuJykKKyAgICAgICAgYml0YmFrZSgnLWNjbGVhbiBtYW4nKQorICAgICAgICBsaW5lID0gc2VsZi5nZXRsaW5lKHJlc3VsdCwgIkZ1bmN0aW9uIGZhaWxlZDogcGF0Y2hfZG9fcGF0Y2giKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobGluZSBhbmQgbGluZS5zdGFydHN3aXRoKCJFUlJPUjoiKSwgbXNnID0gIlJlcGVhdGVkIHBhdGNoIGFwcGxpY2F0aW9uIGRpZG4ndCBmYWlsLiBiaXRiYWtlIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKKworICAgIEBPRVRlc3RJRCgxMzU0KQorICAgIGRlZiB0ZXN0X2ZvcmNlX3Rhc2tfMShzZWxmKToKKyAgICAgICAgIyB0ZXN0IDEgZnJvbSBidWcgNTg3NQorICAgICAgICB0ZXN0X3JlY2lwZSA9ICd6bGliJworICAgICAgICB0ZXN0X2RhdGEgPSAiTWljcm9zb2Z0IE1hZGUgTm8gUHJvZml0IEZyb20gQW55b25lJ3MgWnVuZXMgWW8iCisgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ0QnLCAnUEtHREVTVCcsICdtYW5kaXInXSwgdGVzdF9yZWNpcGUpCisgICAgICAgIGltYWdlX2RpciA9IGJiX3ZhcnNbJ0QnXQorICAgICAgICBwa2dzcGxpdF9kaXIgPSBiYl92YXJzWydQS0dERVNUJ10KKyAgICAgICAgbWFuX2RpciA9IGJiX3ZhcnNbJ21hbmRpciddCisKKyAgICAgICAgYml0YmFrZSgnLWMgY2xlYW4gJXMnICUgdGVzdF9yZWNpcGUpCisgICAgICAgIGJpdGJha2UoJy1jIHBhY2thZ2UgLWYgJXMnICUgdGVzdF9yZWNpcGUpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UgLWMgY2xlYW4gJXMnICUgdGVzdF9yZWNpcGUpCisKKyAgICAgICAgbWFuX2ZpbGUgPSBvcy5wYXRoLmpvaW4oaW1hZ2VfZGlyICsgbWFuX2RpciwgJ21hbjMvemxpYi4zJykKKyAgICAgICAgZnRvb2xzLmFwcGVuZF9maWxlKG1hbl9maWxlLCB0ZXN0X2RhdGEpCisgICAgICAgIGJpdGJha2UoJy1jIHBhY2thZ2UgLWYgJXMnICUgdGVzdF9yZWNpcGUpCisKKyAgICAgICAgbWFuX3NwbGl0X2ZpbGUgPSBvcy5wYXRoLmpvaW4ocGtnc3BsaXRfZGlyLCAnemxpYi1kb2MnICsgbWFuX2RpciwgJ21hbjMvemxpYi4zJykKKyAgICAgICAgbWFuX3NwbGl0X2NvbnRlbnQgPSBmdG9vbHMucmVhZF9maWxlKG1hbl9zcGxpdF9maWxlKQorICAgICAgICBzZWxmLmFzc2VydEluKHRlc3RfZGF0YSwgbWFuX3NwbGl0X2NvbnRlbnQsICdUaGUgbWFuIGZpbGUgaGFzIG5vdCBjaGFuZ2VkIGluIHBhY2thZ2VzLXNwbGl0LicpCisKKyAgICAgICAgcmV0ID0gYml0YmFrZSh0ZXN0X3JlY2lwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigndGFzayBkb19wYWNrYWdlX3dyaXRlX3JwbTonLCByZXQub3V0cHV0LCAnVGFzayBkb19wYWNrYWdlX3dyaXRlX3JwbSBkaWQgbm90IHJlLWV4ZWN1dGVkLicpCisKKyAgICBAT0VUZXN0SUQoMTYzKQorICAgIGRlZiB0ZXN0X2ZvcmNlX3Rhc2tfMihzZWxmKToKKyAgICAgICAgIyB0ZXN0IDIgZnJvbSBidWcgNTg3NQorICAgICAgICB0ZXN0X3JlY2lwZSA9ICd6bGliJworCisgICAgICAgIGJpdGJha2UodGVzdF9yZWNpcGUpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UgLWMgY2xlYW4gJXMnICUgdGVzdF9yZWNpcGUpCisKKyAgICAgICAgcmVzdWx0ID0gYml0YmFrZSgnLUMgY29tcGlsZSAlcycgJSB0ZXN0X3JlY2lwZSkKKyAgICAgICAgbG9va19mb3JfdGFza3MgPSBbJ2RvX2NvbXBpbGU6JywgJ2RvX2luc3RhbGw6JywgJ2RvX3BvcHVsYXRlX3N5c3Jvb3Q6JywgJ2RvX3BhY2thZ2U6J10KKyAgICAgICAgZm9yIHRhc2sgaW4gbG9va19mb3JfdGFza3M6CisgICAgICAgICAgICBzZWxmLmFzc2VydEluKHRhc2ssIHJlc3VsdC5vdXRwdXQsIG1zZz0iQ291bGRuJ3QgZmluZCAlcyB0YXNrLiIpCisKKyAgICBAT0VUZXN0SUQoMTY3KQorICAgIGRlZiB0ZXN0X2JpdGJha2VfZyhzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gYml0YmFrZSgnLWcgY29yZS1pbWFnZS1taW5pbWFsJykKKyAgICAgICAgZm9yIGYgaW4gWydwbi1idWlsZGxpc3QnLCAncmVjaXBlLWRlcGVuZHMuZG90JywgJ3Rhc2stZGVwZW5kcy5kb3QnXToKKyAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy5yZW1vdmUsIGYpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnVGFzayBkZXBlbmRlbmNpZXMgc2F2ZWQgdG8gXCd0YXNrLWRlcGVuZHMuZG90XCcnIGluIHJlc3VsdC5vdXRwdXQsIG1zZyA9ICJObyB0YXNrIGRlcGVuZGVuY3kgXCJ0YXNrLWRlcGVuZHMuZG90XCIgZmlsZSB3YXMgZ2VuZXJhdGVkIGZvciB0aGUgZ2l2ZW4gdGFzayB0YXJnZXQuIGJpdGJha2Ugb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2J1c3lib3gnIGluIGZ0b29scy5yZWFkX2ZpbGUob3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsICd0YXNrLWRlcGVuZHMuZG90JykpLCBtc2cgPSAiTm8gXCJidXN5Ym94XCIgZGVwZW5kZW5jeSBmb3VuZCBpbiB0YXNrLWRlcGVuZHMuZG90IGZpbGUuIikKKworICAgIEBPRVRlc3RJRCg4OTkpCisgICAgZGVmIHRlc3RfaW1hZ2VfbWFuaWZlc3Qoc2VsZik6CisgICAgICAgIGJpdGJha2UoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCisgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbIkRFUExPWV9ESVJfSU1BR0UiLCAiSU1BR0VfTElOS19OQU1FIl0sICJjb3JlLWltYWdlLW1pbmltYWwiKQorICAgICAgICBkZXBsb3lkaXIgPSBiYl92YXJzWyJERVBMT1lfRElSX0lNQUdFIl0KKyAgICAgICAgaW1hZ2VuYW1lID0gYmJfdmFyc1siSU1BR0VfTElOS19OQU1FIl0KKyAgICAgICAgbWFuaWZlc3QgPSBvcy5wYXRoLmpvaW4oZGVwbG95ZGlyLCBpbWFnZW5hbWUgKyAiLm1hbmlmZXN0IikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNsaW5rKG1hbmlmZXN0KSwgbXNnPSJObyBtYW5pZmVzdCBmaWxlIGNyZWF0ZWQgZm9yIGltYWdlLiBJdCBzaG91bGQgaGF2ZSBiZWVuIGNyZWF0ZWQgaW4gJXMiICUgbWFuaWZlc3QpCisKKyAgICBAT0VUZXN0SUQoMTY4KQorICAgIGRlZiB0ZXN0X2ludmFsaWRfcmVjaXBlX3NyY191cmkoc2VsZik6CisgICAgICAgIGRhdGEgPSAnU1JDX1VSSSA9ICJmaWxlOi8vaW52YWxpZCInCisgICAgICAgIHNlbGYud3JpdGVfcmVjaXBlaW5jKCdtYW4nLCBkYXRhKQorICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiIiJETF9ESVIgPSBcIiR7VE9QRElSfS9kb3dubG9hZC1zZWxmdGVzdFwiCitTU1RBVEVfRElSID0gXCIke1RPUERJUn0vZG93bmxvYWQtc2VsZnRlc3RcIgorSU5IRVJJVF9yZW1vdmUgPSBcInJlcG9ydC1lcnJvclwiCisiIiIpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAob3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsICJkb3dubG9hZC1zZWxmdGVzdCIpKQorCisgICAgICAgIGJpdGJha2UoJy1jY2xlYW5hbGwgbWFuJykKKyAgICAgICAgcmVzdWx0ID0gYml0YmFrZSgnLWMgZmV0Y2ggbWFuJywgaWdub3JlX3N0YXR1cz1UcnVlKQorICAgICAgICBiaXRiYWtlKCctY2NsZWFuYWxsIG1hbicpCisgICAgICAgIHNlbGYuZGVsZXRlX3JlY2lwZWluYygnbWFuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuc3RhdHVzLCAxLCBtc2c9IkNvbW1hbmQgc3VjY2VkZWQgd2hlbiBpdCBzaG91bGQgaGF2ZSBmYWlsZWQuIGJpdGJha2Ugb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ0ZldGNoZXIgZmFpbHVyZTogVW5hYmxlIHRvIGZpbmQgZmlsZSBmaWxlOi8vaW52YWxpZCBhbnl3aGVyZS4gVGhlIHBhdGhzIHRoYXQgd2VyZSBzZWFyY2hlZCB3ZXJlOicgaW4gcmVzdWx0Lm91dHB1dCwgbXNnID0gIlwiaW52YWxpZFwiIGZpbGUgXAorZG9lc24ndCBleGlzdCwgeWV0IG5vIGVycm9yIG1lc3NhZ2UgZW5jb3VudGVyZWQuIGJpdGJha2Ugb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQorICAgICAgICBsaW5lID0gc2VsZi5nZXRsaW5lKHJlc3VsdCwgJ0ZldGNoZXIgZmFpbHVyZSBmb3IgVVJMOiBcJ2ZpbGU6Ly9pbnZhbGlkXCcuIFVuYWJsZSB0byBmZXRjaCBVUkwgZnJvbSBhbnkgc291cmNlLicpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsaW5lIGFuZCBsaW5lLnN0YXJ0c3dpdGgoIkVSUk9SOiIpLCBtc2cgPSAiXCJpbnZhbGlkXCIgZmlsZSBcCitkb2Vzbid0IGV4aXN0LCB5ZXQgZmV0Y2hlciBkaWRuJ3QgcmVwb3J0IGFueSBlcnJvci4gYml0YmFrZSBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCisKKyAgICBAT0VUZXN0SUQoMTcxKQorICAgIGRlZiB0ZXN0X3JlbmFtZV9kb3dubG9hZGVkX2ZpbGUoc2VsZik6CisgICAgICAgICMgVE9ETyB1bmlxdWUgZGxkaXIgaW5zdGVhZCBvZiB1c2luZyBjbGVhbmFsbAorICAgICAgICAjIFRPRE86IG5lZWQgdG8gc2V0IHNzdGF0ZWRpcj8KKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIiIiRExfRElSID0gXCIke1RPUERJUn0vZG93bmxvYWQtc2VsZnRlc3RcIgorU1NUQVRFX0RJUiA9IFwiJHtUT1BESVJ9L2Rvd25sb2FkLXNlbGZ0ZXN0XCIKKyIiIikKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgImRvd25sb2FkLXNlbGZ0ZXN0IikpCisKKyAgICAgICAgZGF0YSA9ICdTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vYXNwZWxsL2FzcGVsbC0ke1BWfS50YXIuZ3o7ZG93bmxvYWRmaWxlbmFtZT10ZXN0LWFzcGVsbC50YXIuZ3oiJworICAgICAgICBzZWxmLndyaXRlX3JlY2lwZWluYygnYXNwZWxsJywgZGF0YSkKKyAgICAgICAgcmVzdWx0ID0gYml0YmFrZSgnLWYgLWMgZmV0Y2ggYXNwZWxsJywgaWdub3JlX3N0YXR1cz1UcnVlKQorICAgICAgICBzZWxmLmRlbGV0ZV9yZWNpcGVpbmMoJ2FzcGVsbCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnN0YXR1cywgMCwgbXNnID0gIkNvdWxkbid0IGZldGNoIGFzcGVsbC4gJXMiICUgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgZGxfZGlyID0gZ2V0X2JiX3ZhcigiRExfRElSIikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihkbF9kaXIsICd0ZXN0LWFzcGVsbC50YXIuZ3onKSksIG1zZyA9ICJGaWxlIHJlbmFtZSBmYWlsZWQuIE5vIGNvcnJlc3BvbmRpbmcgdGVzdC1hc3BlbGwudGFyLmd6IGZpbGUgZm91bmQgdW5kZXIgJXMiICUgZGxfZGlyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKGRsX2RpciwgJ3Rlc3QtYXNwZWxsLnRhci5nei5kb25lJykpLCAiRmlsZSByZW5hbWUgZmFpbGVkLiBObyBjb3JyZXNwb25kaW5nIHRlc3QtYXNwZWxsLnRhci5nei5kb25lIGZpbGUgZm91bmQgdW5kZXIgJXMiICUgZGxfZGlyKQorCisgICAgQE9FVGVzdElEKDEwMjgpCisgICAgZGVmIHRlc3RfZW52aXJvbm1lbnQoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCJURVNUX0VOVj1cImxvY2FsY29uZlwiIikKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlIC1lIHwgZ3JlcCBURVNUX0VOVj0nKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2xvY2FsY29uZicgaW4gcmVzdWx0Lm91dHB1dCwgbXNnID0gImJpdGJha2UgZGlkbid0IHJlcG9ydCBhbnkgdmFsdWUgZm9yIFRFU1RfRU5WIHZhcmlhYmxlLiBUbyB0ZXN0LCBydW4gJ2JpdGJha2UgLWUgfCBncmVwIFRFU1RfRU5WPSciKQorCisgICAgQE9FVGVzdElEKDEwMjkpCisgICAgZGVmIHRlc3RfZHJ5X3J1bihzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlIC1uIG00LW5hdGl2ZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzdWx0LnN0YXR1cywgImJpdGJha2UgZHJ5IHJ1biBkaWRuJ3QgcnVuIGFzIGV4cGVjdGVkLiAlcyIgJSByZXN1bHQub3V0cHV0KQorCisgICAgQE9FVGVzdElEKDEwMzApCisgICAgZGVmIHRlc3RfanVzdF9wYXJzZShzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlIC1wJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuc3RhdHVzLCAiZXJyb3JzIGVuY291bnRlcmVkIHdoZW4gcGFyc2luZyByZWNpcGVzLiAlcyIgJSByZXN1bHQub3V0cHV0KQorCisgICAgQE9FVGVzdElEKDEwMzEpCisgICAgZGVmIHRlc3RfdmVyc2lvbihzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlIC1zIHwgZ3JlcCB3Z2V0JykKKyAgICAgICAgZmluZCA9IHJlLnNlYXJjaCgid2dldCAqOihbMC05YS16QS1aXC5cLV0rKSIsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmaW5kLCAiTm8gdmVyc2lvbiByZXR1cm5lZCBmb3Igc2VhcmNoZWQgcmVjaXBlLiBiaXRiYWtlIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKKworICAgIEBPRVRlc3RJRCgxMDMyKQorICAgIGRlZiB0ZXN0X3ByZWZpbGUoc2VsZik6CisgICAgICAgIHByZWNvbmYgPSBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgJ2NvbmYvcHJlZmlsZS5jb25mJykKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChwcmVjb25mKQorICAgICAgICBmdG9vbHMud3JpdGVfZmlsZShwcmVjb25mICwiVEVTVF9QUkVGSUxFPVwicHJlZmlsZVwiIikKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlIC1yIGNvbmYvcHJlZmlsZS5jb25mIC1lIHwgZ3JlcCBURVNUX1BSRUZJTEU9JykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdwcmVmaWxlJyBpbiByZXN1bHQub3V0cHV0LCAiUHJlY29uZmlndXJlIGZpbGUgXCJwcmVmaWxlLmNvbmZcIndhcyBub3QgdGFrZW4gaW50byBjb25zaWRlcmF0aW9uLiAiKQorICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiVEVTVF9QUkVGSUxFPVwibG9jYWxjb25mXCIiKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UgLXIgY29uZi9wcmVmaWxlLmNvbmYgLWUgfCBncmVwIFRFU1RfUFJFRklMRT0nKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2xvY2FsY29uZicgaW4gcmVzdWx0Lm91dHB1dCwgIlByZWNvbmZpZ3VyZSBmaWxlIFwicHJlZmlsZS5jb25mXCJ3YXMgbm90IHRha2VuIGludG8gY29uc2lkZXJhdGlvbi4iKQorCisgICAgQE9FVGVzdElEKDEwMzMpCisgICAgZGVmIHRlc3RfcG9zdGZpbGUoc2VsZik6CisgICAgICAgIHBvc3Rjb25mID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsICdjb25mL3Bvc3RmaWxlLmNvbmYnKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHBvc3Rjb25mKQorICAgICAgICBmdG9vbHMud3JpdGVfZmlsZShwb3N0Y29uZiAsICJURVNUX1BPU1RGSUxFPVwicG9zdGZpbGVcIiIpCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCJURVNUX1BPU1RGSUxFPVwibG9jYWxjb25mXCIiKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UgLVIgY29uZi9wb3N0ZmlsZS5jb25mIC1lIHwgZ3JlcCBURVNUX1BPU1RGSUxFPScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgncG9zdGZpbGUnIGluIHJlc3VsdC5vdXRwdXQsICJQb3N0Y29uZmlndXJlIGZpbGUgXCJwb3N0ZmlsZS5jb25mXCJ3YXMgbm90IHRha2VuIGludG8gY29uc2lkZXJhdGlvbi4iKQorCisgICAgQE9FVGVzdElEKDEwMzQpCisgICAgZGVmIHRlc3RfY2hlY2t1cmkoc2VsZik6CisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZSAtYyBjaGVja3VyaSBtNCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzdWx0LnN0YXR1cywgbXNnID0gIlwiY2hlY2t1cmlcIiB0YXNrIHdhcyBub3QgZXhlY3V0ZWQuIGJpdGJha2Ugb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQorCisgICAgQE9FVGVzdElEKDEwMzUpCisgICAgZGVmIHRlc3RfY29udGludWUoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCIiIkRMX0RJUiA9IFwiJHtUT1BESVJ9L2Rvd25sb2FkLXNlbGZ0ZXN0XCIKK1NTVEFURV9ESVIgPSBcIiR7VE9QRElSfS9kb3dubG9hZC1zZWxmdGVzdFwiCitJTkhFUklUX3JlbW92ZSA9IFwicmVwb3J0LWVycm9yXCIKKyIiIikKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgImRvd25sb2FkLXNlbGZ0ZXN0IikpCisgICAgICAgIHNlbGYud3JpdGVfcmVjaXBlaW5jKCdtYW4nLCJcbmRvX2ZhaWxfdGFzayAoKSB7XG5leGl0IDEgXG59XG5cbmFkZHRhc2sgZG9fZmFpbF90YXNrIGJlZm9yZSBkb19mZXRjaFxuIiApCisgICAgICAgIHJ1bkNtZCgnYml0YmFrZSAtYyBjbGVhbmFsbCBtYW4geGN1cnNvci10cmFuc3BhcmVudC10aGVtZScpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZSAtYyB1bnBhY2sgLWsgbWFuIHhjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUnLCBpZ25vcmVfc3RhdHVzPVRydWUpCisgICAgICAgIGVycm9ycG9zID0gcmVzdWx0Lm91dHB1dC5maW5kKCdFUlJPUjogRnVuY3Rpb24gZmFpbGVkOiBkb19mYWlsX3Rhc2snKQorICAgICAgICBtYW52ZXIgPSByZS5zZWFyY2goIk5PVEU6IHJlY2lwZSB4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lLSguKj8pOiB0YXNrIGRvX3VucGFjazogU3RhcnRlZCIsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIGNvbnRpbnVlcG9zID0gcmVzdWx0Lm91dHB1dC5maW5kKCdOT1RFOiByZWNpcGUgeGN1cnNvci10cmFuc3BhcmVudC10aGVtZS0lczogdGFzayBkb191bnBhY2s6IFN0YXJ0ZWQnICUgbWFudmVyLmdyb3VwKDEpKQorICAgICAgICBzZWxmLmFzc2VydExlc3MoZXJyb3Jwb3MsY29udGludWVwb3MsIG1zZyA9ICJiaXRiYWtlIGRpZG4ndCBwYXNzIGRvX2ZhaWxfdGFzay4gYml0YmFrZSBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCisKKyAgICBAT0VUZXN0SUQoMTExOSkKKyAgICBkZWYgdGVzdF9ub25fZ3BsdjMoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCdJTkNPTVBBVElCTEVfTElDRU5TRSA9ICJHUEx2MyInKQorICAgICAgICByZXN1bHQgPSBiaXRiYWtlKCdzZWxmdGVzdC1lZCcsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuc3RhdHVzLCAwLCAiQml0YmFrZSBmYWlsZWQsIGV4aXQgY29kZSAlcywgb3V0cHV0ICVzIiAlIChyZXN1bHQuc3RhdHVzLCByZXN1bHQub3V0cHV0KSkKKyAgICAgICAgbGljX2RpciA9IGdldF9iYl92YXIoJ0xJQ0VOU0VfRElSRUNUT1JZJykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4obGljX2RpciwgJ3NlbGZ0ZXN0LWVkL2dlbmVyaWNfR1BMdjMnKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4obGljX2RpciwgJ3NlbGZ0ZXN0LWVkL2dlbmVyaWNfR1BMdjInKSkpCisKKyAgICBAT0VUZXN0SUQoMTQyMikKKyAgICBkZWYgdGVzdF9zZXRzY2VuZV9vbmx5KHNlbGYpOgorICAgICAgICAiIiIgQml0YmFrZSBvcHRpb24gdG8gcmVzdG9yZSBmcm9tIHNzdGF0ZSBvbmx5IHdpdGhpbiBhIGJ1aWxkIChpLmUuIGV4ZWN1dGUgbm8gcmVhbCB0YXNrcywgb25seSBzZXRzY2VuZSkiIiIKKyAgICAgICAgdGVzdF9yZWNpcGUgPSAnZWQnCisKKyAgICAgICAgYml0YmFrZSh0ZXN0X3JlY2lwZSkKKyAgICAgICAgYml0YmFrZSgnLWMgY2xlYW4gJXMnICUgdGVzdF9yZWNpcGUpCisgICAgICAgIHJldCA9IGJpdGJha2UoJy0tc2V0c2NlbmUtb25seSAlcycgJSB0ZXN0X3JlY2lwZSkKKworICAgICAgICB0YXNrcyA9IHJlLmZpbmRhbGwocid0YXNrXHMrKGRvX1xTKyk6JywgcmV0Lm91dHB1dCkKKworICAgICAgICBmb3IgdGFzayBpbiB0YXNrczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ19zZXRzY2VuZScsIHRhc2ssICdBIHRhc2sgZGlmZmVyZW50IGZyb20gX3NldHNjZW5lIHJhbjogJXMuXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRXhlY3V0ZWQgdGFza3Mgd2VyZTogJXMnICUgKHRhc2ssIHN0cih0YXNrcykpKQorCisgICAgQE9FVGVzdElEKDE0MjUpCisgICAgZGVmIHRlc3RfYmJhcHBlbmRfb3JkZXIoc2VsZik6CisgICAgICAgICIiIiBCaXRiYWtlIHNob3VsZCBiYmFwcGVuZCB0byByZWNpcGUgaW4gYSBwcmVkaWN0YWJsZSBvcmRlciAiIiIKKyAgICAgICAgdGVzdF9yZWNpcGUgPSAnZWQnCisgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ1NVTU1BUlknLCAnUFYnXSwgdGVzdF9yZWNpcGUpCisgICAgICAgIHRlc3RfcmVjaXBlX3N1bW1hcnlfYmVmb3JlID0gYmJfdmFyc1snU1VNTUFSWSddCisgICAgICAgIHRlc3RfcmVjaXBlX3B2ID0gYmJfdmFyc1snUFYnXQorICAgICAgICByZWNpcGVfYXBwZW5kX2ZpbGUgPSB0ZXN0X3JlY2lwZSArICdfJyArIHRlc3RfcmVjaXBlX3B2ICsgJy5iYmFwcGVuZCcKKyAgICAgICAgZXhwZWN0ZWRfcmVjaXBlX3N1bW1hcnkgPSB0ZXN0X3JlY2lwZV9zdW1tYXJ5X2JlZm9yZQorCisgICAgICAgIGZvciBpIGluIHJhbmdlKDUpOgorICAgICAgICAgICAgcmVjaXBlX2FwcGVuZF9kaXIgPSB0ZXN0X3JlY2lwZSArICdfdGVzdF8nICsgc3RyKGkpCisgICAgICAgICAgICByZWNpcGVfYXBwZW5kX3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi50ZXN0bGF5ZXJfcGF0aCwgJ3JlY2lwZXMtdGVzdCcsIHJlY2lwZV9hcHBlbmRfZGlyLCByZWNpcGVfYXBwZW5kX2ZpbGUpCisgICAgICAgICAgICBvcy5ta2Rpcihvcy5wYXRoLmpvaW4oc2VsZi50ZXN0bGF5ZXJfcGF0aCwgJ3JlY2lwZXMtdGVzdCcsIHJlY2lwZV9hcHBlbmRfZGlyKSkKKyAgICAgICAgICAgIGZlYXR1cmUgPSAnU1VNTUFSWSArPSAiJXMiXG4nICUgaQorICAgICAgICAgICAgZnRvb2xzLndyaXRlX2ZpbGUocmVjaXBlX2FwcGVuZF9wYXRoLCBmZWF0dXJlKQorICAgICAgICAgICAgZXhwZWN0ZWRfcmVjaXBlX3N1bW1hcnkgKz0gJyAlcycgJSBpCisKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bigncm0gLXJmICVzJyAlIG9zLnBhdGguam9pbihzZWxmLnRlc3RsYXllcl9wYXRoLCAncmVjaXBlcy10ZXN0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfcmVjaXBlICsgJ190ZXN0XyonKSkKKworICAgICAgICB0ZXN0X3JlY2lwZV9zdW1tYXJ5X2FmdGVyID0gZ2V0X2JiX3ZhcignU1VNTUFSWScsIHRlc3RfcmVjaXBlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3JlY2lwZV9zdW1tYXJ5LCB0ZXN0X3JlY2lwZV9zdW1tYXJ5X2FmdGVyKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvYnVpbGRoaXN0b3J5LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvYnVpbGRoaXN0b3J5LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2NzkyZDkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9idWlsZGhpc3RvcnkucHkKQEAgLTAsMCArMSw0NiBAQAoraW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBkYXRldGltZQorCitmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZSBpbXBvcnQgT0VTZWxmdGVzdFRlc3RDYXNlCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IGJpdGJha2UsIGdldF9iYl92YXJzCisKKworY2xhc3MgQnVpbGRoaXN0b3J5QmFzZShPRVNlbGZ0ZXN0VGVzdENhc2UpOgorCisgICAgZGVmIGNvbmZpZ19idWlsZGhpc3Rvcnkoc2VsZiwgdG1wX2JoX2xvY2F0aW9uPUZhbHNlKToKKyAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnVVNFUl9DTEFTU0VTJywgJ0lOSEVSSVQnXSkKKyAgICAgICAgaWYgKG5vdCAnYnVpbGRoaXN0b3J5JyBpbiBiYl92YXJzWydVU0VSX0NMQVNTRVMnXSkgYW5kIChub3QgJ2J1aWxkaGlzdG9yeScgaW4gYmJfdmFyc1snSU5IRVJJVCddKToKKyAgICAgICAgICAgIGFkZF9idWlsZGhpc3RvcnlfY29uZmlnID0gJ0lOSEVSSVQgKz0gImJ1aWxkaGlzdG9yeSJcbkJVSUxESElTVE9SWV9DT01NSVQgPSAiMSInCisgICAgICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoYWRkX2J1aWxkaGlzdG9yeV9jb25maWcpCisKKyAgICAgICAgaWYgdG1wX2JoX2xvY2F0aW9uOgorICAgICAgICAgICAgIyBVc2luZyBhIHRlbXBvcmFyeSBidWlsZGhpc3RvcnkgbG9jYXRpb24gZm9yIHRlc3RpbmcKKyAgICAgICAgICAgIHRtcF9iaF9kaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgInRtcF9idWlsZGhpc3RvcnlfJXMiICUgZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkuc3RyZnRpbWUoJyVZJW0lZCVIJU0lUycpKQorICAgICAgICAgICAgYnVpbGRoaXN0b3J5X2Rpcl9jb25maWcgPSAiQlVJTERISVNUT1JZX0RJUiA9IFwiJXNcIiIgJSB0bXBfYmhfZGlyCisgICAgICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoYnVpbGRoaXN0b3J5X2Rpcl9jb25maWcpCisgICAgICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRtcF9iaF9kaXIpCisKKyAgICBkZWYgcnVuX2J1aWxkaGlzdG9yeV9vcGVyYXRpb24oc2VsZiwgdGFyZ2V0LCBnbG9iYWxfY29uZmlnPScnLCB0YXJnZXRfY29uZmlnPScnLCBjaGFuZ2VfYmhfbG9jYXRpb249RmFsc2UsIGV4cGVjdF9lcnJvcj1GYWxzZSwgZXJyb3JfcmVnZXg9JycpOgorICAgICAgICBpZiBjaGFuZ2VfYmhfbG9jYXRpb246CisgICAgICAgICAgICB0bXBfYmhfbG9jYXRpb24gPSBUcnVlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0bXBfYmhfbG9jYXRpb24gPSBGYWxzZQorICAgICAgICBzZWxmLmNvbmZpZ19idWlsZGhpc3RvcnkodG1wX2JoX2xvY2F0aW9uKQorCisgICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZyhnbG9iYWxfY29uZmlnKQorICAgICAgICBzZWxmLmFwcGVuZF9yZWNpcGVpbmModGFyZ2V0LCB0YXJnZXRfY29uZmlnKQorICAgICAgICBiaXRiYWtlKCItY2NsZWFuICVzIiAlIHRhcmdldCkKKyAgICAgICAgcmVzdWx0ID0gYml0YmFrZSh0YXJnZXQsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKKyAgICAgICAgc2VsZi5yZW1vdmVfY29uZmlnKGdsb2JhbF9jb25maWcpCisgICAgICAgIHNlbGYucmVtb3ZlX3JlY2lwZWluYyh0YXJnZXQsIHRhcmdldF9jb25maWcpCisKKyAgICAgICAgaWYgZXhwZWN0X2Vycm9yOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuc3RhdHVzLCAxLCBtc2c9IkVycm9yIGV4cGVjdGVkIGZvciBnbG9iYWwgY29uZmlnICclcycgYW5kIHRhcmdldCBjb25maWcgJyVzJyIgJSAoZ2xvYmFsX2NvbmZpZywgdGFyZ2V0X2NvbmZpZykpCisgICAgICAgICAgICBzZWFyY2hfZm9yX2Vycm9yID0gcmUuc2VhcmNoKGVycm9yX3JlZ2V4LCByZXN1bHQub3V0cHV0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlYXJjaF9mb3JfZXJyb3IsIG1zZz0iQ291bGQgbm90IGZpbmQgZGVzaXJlZCBlcnJvciBpbiBvdXRwdXQ6ICVzICglcykiICUgKGVycm9yX3JlZ2V4LCByZXN1bHQub3V0cHV0KSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnN0YXR1cywgMCwgbXNnPSJDb21tYW5kICdiaXRiYWtlICVzJyBoYXMgZmFpbGVkIHVuZXhwZWN0ZWRseTogJXMiICUgKHRhcmdldCwgcmVzdWx0Lm91dHB1dCkpCisKKyAgICAjIE5vIHRlc3RzIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgYmFzZSBjbGFzcy4KKyAgICAjIFBsZWFzZSBjcmVhdGUgYSBuZXcgY2xhc3MgdGhhdCBpbmhlcml0IHRoaXMgb25lLCBvciB1c2Ugb25lIG9mIHRob3NlIGFscmVhZHkgYXZhaWxhYmxlIGZvciBhZGRpbmcgdGVzdHMuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9idWlsZG9wdGlvbnMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9idWlsZG9wdGlvbnMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2YyMjFjMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2J1aWxkb3B0aW9ucy5weQpAQCAtMCwwICsxLDE2NiBAQAoraW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBnbG9iIGFzIGcKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCB0ZW1wZmlsZQorZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2UgaW1wb3J0IE9FU2VsZnRlc3RUZXN0Q2FzZQorZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2VzLmJ1aWxkaGlzdG9yeSBpbXBvcnQgQnVpbGRoaXN0b3J5QmFzZQorZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQsIGJpdGJha2UsIGdldF9iYl92YXIsIGdldF9iYl92YXJzCitpbXBvcnQgb2VxYS51dGlscy5mdG9vbHMgYXMgZnRvb2xzCitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3Iub2VpZCBpbXBvcnQgT0VUZXN0SUQKKworY2xhc3MgSW1hZ2VPcHRpb25zVGVzdHMoT0VTZWxmdGVzdFRlc3RDYXNlKToKKworICAgIEBPRVRlc3RJRCg3NjEpCisgICAgZGVmIHRlc3RfaW5jcmVtZW50YWxfaW1hZ2VfZ2VuZXJhdGlvbihzZWxmKToKKyAgICAgICAgaW1hZ2VfcGtndHlwZSA9IGdldF9iYl92YXIoIklNQUdFX1BLR1RZUEUiKQorICAgICAgICBpZiBpbWFnZV9wa2d0eXBlICE9ICdycG0nOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnTm90IHVzaW5nIFJQTSBhcyBtYWluIHBhY2thZ2UgZm9ybWF0JykKKyAgICAgICAgYml0YmFrZSgiLWMgY2xlYW4gY29yZS1pbWFnZS1taW5pbWFsIikKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoJ0lOQ19SUE1fSU1BR0VfR0VOID0gIjEiJykKKyAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKCdJTUFHRV9GRUFUVVJFUyArPSAic3NoLXNlcnZlci1vcGVuc3NoIicpCisgICAgICAgIGJpdGJha2UoImNvcmUtaW1hZ2UtbWluaW1hbCIpCisgICAgICAgIGxvZ19kYXRhX2ZpbGUgPSBvcy5wYXRoLmpvaW4oZ2V0X2JiX3ZhcigiV09SS0RJUiIsICJjb3JlLWltYWdlLW1pbmltYWwiKSwgInRlbXAvbG9nLmRvX3Jvb3RmcyIpCisgICAgICAgIGxvZ19kYXRhX2NyZWF0ZWQgPSBmdG9vbHMucmVhZF9maWxlKGxvZ19kYXRhX2ZpbGUpCisgICAgICAgIGluY3JlbWVudGFsX2NyZWF0ZWQgPSByZS5zZWFyY2gociJJbnN0YWxsaW5nXHMqOlxzKnBhY2thZ2Vncm91cC1jb3JlLXNzaC1vcGVuc3NoIiwgbG9nX2RhdGFfY3JlYXRlZCkKKyAgICAgICAgc2VsZi5yZW1vdmVfY29uZmlnKCdJTUFHRV9GRUFUVVJFUyArPSAic3NoLXNlcnZlci1vcGVuc3NoIicpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbmNyZW1lbnRhbF9jcmVhdGVkLCBtc2cgPSAiTWF0Y2ggZmFpbGVkIGluOlxuJXMiICUgbG9nX2RhdGFfY3JlYXRlZCkKKyAgICAgICAgYml0YmFrZSgiY29yZS1pbWFnZS1taW5pbWFsIikKKyAgICAgICAgbG9nX2RhdGFfcmVtb3ZlZCA9IGZ0b29scy5yZWFkX2ZpbGUobG9nX2RhdGFfZmlsZSkKKyAgICAgICAgaW5jcmVtZW50YWxfcmVtb3ZlZCA9IHJlLnNlYXJjaChyIkVyYXNpbmdccyo6XHMqcGFja2FnZWdyb3VwLWNvcmUtc3NoLW9wZW5zc2giLCBsb2dfZGF0YV9yZW1vdmVkKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5jcmVtZW50YWxfcmVtb3ZlZCwgbXNnID0gIk1hdGNoIGZhaWxlZCBpbjpcbiVzIiAlIGxvZ19kYXRhX3JlbW92ZWQpCisKKyAgICBAT0VUZXN0SUQoMjg2KQorICAgIGRlZiB0ZXN0X2NjYWNoZV90b29sKHNlbGYpOgorICAgICAgICBiaXRiYWtlKCJjY2FjaGUtbmF0aXZlIikKKyAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnU1lTUk9PVF9ERVNURElSJywgJ2JpbmRpciddLCAnY2NhY2hlLW5hdGl2ZScpCisgICAgICAgIHAgPSBiYl92YXJzWydTWVNST09UX0RFU1RESVInXSArIGJiX3ZhcnNbJ2JpbmRpciddICsgIi8iICsgImNjYWNoZSIKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKHApLCBtc2cgPSAiTm8gY2NhY2hlIGZvdW5kICglcykiICUgcCkKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoJ0lOSEVSSVQgKz0gImNjYWNoZSInKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlIC1jIGNsZWFuIG00JykKKyAgICAgICAgYml0YmFrZSgibTQgLWYgLWMgY29tcGlsZSIpCisgICAgICAgIGxvZ19jb21waWxlID0gb3MucGF0aC5qb2luKGdldF9iYl92YXIoIldPUktESVIiLCJtNCIpLCAidGVtcC9sb2cuZG9fY29tcGlsZSIpCisgICAgICAgIHJlcyA9IHJ1bkNtZCgiZ3JlcCBjY2FjaGUgJXMiICUgbG9nX2NvbXBpbGUsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXMuc3RhdHVzLCBtc2c9Ik5vIG1hdGNoIGZvciBjY2FjaGUgaW4gbTQgbG9nLmRvX2NvbXBpbGUuIEZvciBmdXJ0aGVyIGRldGFpbHM6ICVzIiAlIGxvZ19jb21waWxlKQorCisgICAgQE9FVGVzdElEKDE0MzUpCisgICAgZGVmIHRlc3RfcmVhZF9vbmx5X2ltYWdlKHNlbGYpOgorICAgICAgICBkaXN0cm9fZmVhdHVyZXMgPSBnZXRfYmJfdmFyKCdESVNUUk9fRkVBVFVSRVMnKQorICAgICAgICBpZiBub3QgKCd4MTEnIGluIGRpc3Ryb19mZWF0dXJlcyBhbmQgJ29wZW5nbCcgaW4gZGlzdHJvX2ZlYXR1cmVzKToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ2NvcmUtaW1hZ2Utc2F0byByZXF1aXJlcyB4MTEgYW5kIG9wZW5nbCBpbiBkaXN0cm8gZmVhdHVyZXMnKQorICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygnSU1BR0VfRkVBVFVSRVMgKz0gInJlYWQtb25seS1yb290ZnMiJykKKyAgICAgICAgYml0YmFrZSgiY29yZS1pbWFnZS1zYXRvIikKKyAgICAgICAgIyBkb19pbWFnZSB3aWxsIGZhaWwgaWYgdGhlcmUgYXJlIGFueSBwZW5kaW5nIHBvc3RpbnN0cworCitjbGFzcyBEaXNrTW9uVGVzdChPRVNlbGZ0ZXN0VGVzdENhc2UpOgorCisgICAgQE9FVGVzdElEKDI3NykKKyAgICBkZWYgdGVzdF9zdG9wdGFza19iZWhhdmlvcihzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoJ0JCX0RJU0tNT05fRElSUyA9ICJTVE9QVEFTS1MsJHtUTVBESVJ9LDEwMDAwMEcsMTAwSyInKQorICAgICAgICByZXMgPSBiaXRiYWtlKCJtNCIsIGlnbm9yZV9zdGF0dXMgPSBUcnVlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ0VSUk9SOiBObyBuZXcgdGFza3MgY2FuIGJlIGV4ZWN1dGVkIHNpbmNlIHRoZSBkaXNrIHNwYWNlIG1vbml0b3IgYWN0aW9uIGlzICJTVE9QVEFTS1MiIScgaW4gcmVzLm91dHB1dCwgbXNnID0gIlRhc2tzIHNob3VsZCBoYXZlIHN0b3BwZWQuIERpc2sgbW9uaXRvciBpcyBzZXQgdG8gU1RPUFRBU0s6ICVzIiAlIHJlcy5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1cywgMSwgbXNnID0gImJpdGJha2UgcmVwb3J0ZWQgZXhpdCBjb2RlICVzLiBJdCBzaG91bGQgaGF2ZSBiZWVuIDEuIEJpdGJha2Ugb3V0cHV0OiAlcyIgJSAoc3RyKHJlcy5zdGF0dXMpLCByZXMub3V0cHV0KSkKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoJ0JCX0RJU0tNT05fRElSUyA9ICJBQk9SVCwke1RNUERJUn0sMTAwMDAwRywxMDBLIicpCisgICAgICAgIHJlcyA9IGJpdGJha2UoIm00IiwgaWdub3JlX3N0YXR1cyA9IFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnRVJST1I6IEltbWVkaWF0ZWx5IGFib3J0IHNpbmNlIHRoZSBkaXNrIHNwYWNlIG1vbml0b3IgYWN0aW9uIGlzICJBQk9SVCIhJyBpbiByZXMub3V0cHV0LCAiVGFza3Mgc2hvdWxkIGhhdmUgYmVlbiBhYm9ydGVkIGltbWVkaWF0ZWxseS4gRGlzayBtb25pdG9yIGlzIHNldCB0byBBQk9SVDogJXMiICUgcmVzLm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCAxLCBtc2cgPSAiYml0YmFrZSByZXBvcnRlZCBleGl0IGNvZGUgJXMuIEl0IHNob3VsZCBoYXZlIGJlZW4gMS4gQml0YmFrZSBvdXRwdXQ6ICVzIiAlIChzdHIocmVzLnN0YXR1cyksIHJlcy5vdXRwdXQpKQorICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygnQkJfRElTS01PTl9ESVJTID0gIldBUk4sJHtUTVBESVJ9LDEwMDAwMEcsMTAwSyInKQorICAgICAgICByZXMgPSBiaXRiYWtlKCJtNCIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnV0FSTklORzogVGhlIGZyZWUgc3BhY2UnIGluIHJlcy5vdXRwdXQsIG1zZyA9ICJBIHdhcm5pbmcgc2hvdWxkIGhhdmUgYmVlbiBkaXNwbGF5ZWQgZm9yIGRpc2sgbW9uaXRvciBpcyBzZXQgdG8gV0FSTjogJXMiICVyZXMub3V0cHV0KQorCitjbGFzcyBTYW5pdHlPcHRpb25zVGVzdChPRVNlbGZ0ZXN0VGVzdENhc2UpOgorICAgIGRlZiBnZXRsaW5lKHNlbGYsIHJlcywgbGluZSk6CisgICAgICAgIGZvciBsIGluIHJlcy5vdXRwdXQuc3BsaXQoJ1xuJyk6CisgICAgICAgICAgICBpZiBsaW5lIGluIGw6CisgICAgICAgICAgICAgICAgcmV0dXJuIGwKKworICAgIEBPRVRlc3RJRCg5MjcpCisgICAgZGVmIHRlc3Rfb3B0aW9uc193YXJucWFfZXJyb3JxYV9zd2l0Y2goc2VsZik6CisKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIklOSEVSSVRfcmVtb3ZlID0gXCJyZXBvcnQtZXJyb3JcIiIpCisgICAgICAgIGlmICJwYWNrYWdlcy1saXN0IiBub3QgaW4gZ2V0X2JiX3ZhcigiRVJST1JfUUEiKToKKyAgICAgICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZygiRVJST1JfUUFfYXBwZW5kID0gXCIgcGFja2FnZXMtbGlzdFwiIikKKworICAgICAgICBzZWxmLndyaXRlX3JlY2lwZWluYygneGN1cnNvci10cmFuc3BhcmVudC10aGVtZScsICdQQUNLQUdFUyArPSBcIiR7UE59LWRiZ1wiJykKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZSAtYyBjbGVhbiB4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lJykKKyAgICAgICAgcmVzID0gYml0YmFrZSgieGN1cnNvci10cmFuc3BhcmVudC10aGVtZSAtZiAtYyBwYWNrYWdlIiwgaWdub3JlX3N0YXR1cz1UcnVlKQorICAgICAgICBzZWxmLmRlbGV0ZV9yZWNpcGVpbmMoJ3hjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUnKQorICAgICAgICBsaW5lID0gc2VsZi5nZXRsaW5lKHJlcywgIlFBIElzc3VlOiB4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lLWRiZyBpcyBsaXN0ZWQgaW4gUEFDS0FHRVMgbXVsdGlwbGUgdGltZXMsIHRoaXMgbGVhZHMgdG8gcGFja2FnaW5nIGVycm9ycy4iKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobGluZSBhbmQgbGluZS5zdGFydHN3aXRoKCJFUlJPUjoiKSwgbXNnPXJlcy5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1cywgMSwgbXNnID0gImJpdGJha2UgcmVwb3J0ZWQgZXhpdCBjb2RlICVzLiBJdCBzaG91bGQgaGF2ZSBiZWVuIDEuIEJpdGJha2Ugb3V0cHV0OiAlcyIgJSAoc3RyKHJlcy5zdGF0dXMpLCByZXMub3V0cHV0KSkKKyAgICAgICAgc2VsZi53cml0ZV9yZWNpcGVpbmMoJ3hjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUnLCAnUEFDS0FHRVMgKz0gXCIke1BOfS1kYmdcIicpCisgICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZygnRVJST1JfUUFfcmVtb3ZlID0gInBhY2thZ2VzLWxpc3QiJykKKyAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKCdXQVJOX1FBX2FwcGVuZCA9ICIgcGFja2FnZXMtbGlzdCInKQorICAgICAgICByZXMgPSBiaXRiYWtlKCJ4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lIC1mIC1jIHBhY2thZ2UiKQorICAgICAgICBzZWxmLmRlbGV0ZV9yZWNpcGVpbmMoJ3hjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUnKQorICAgICAgICBsaW5lID0gc2VsZi5nZXRsaW5lKHJlcywgIlFBIElzc3VlOiB4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lLWRiZyBpcyBsaXN0ZWQgaW4gUEFDS0FHRVMgbXVsdGlwbGUgdGltZXMsIHRoaXMgbGVhZHMgdG8gcGFja2FnaW5nIGVycm9ycy4iKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobGluZSBhbmQgbGluZS5zdGFydHN3aXRoKCJXQVJOSU5HOiIpLCBtc2c9cmVzLm91dHB1dCkKKworICAgIEBPRVRlc3RJRCgxNDIxKQorICAgIGRlZiB0ZXN0X2xheWVyX3dpdGhvdXRfZ2l0X2RpcihzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFN1bW1hcnk6ICAgICBUZXN0IHRoYXQgbGF5ZXIgZ2l0IHJldmlzaW9ucyBhcmUgZGlzcGxheWVkIGFuZCBkbyBub3QgZmFpbCB3aXRob3V0IGdpdCByZXBvc2l0b3J5CisgICAgICAgIEV4cGVjdGVkOiAgICBUaGUgYnVpbGQgdG8gYmUgc3VjY2Vzc2Z1bCBhbmQgd2l0aG91dCAiZmF0YWwiIGVycm9ycworICAgICAgICBQcm9kdWN0OiAgICAgb2UtY29yZQorICAgICAgICBBdXRob3I6ICAgICAgRGFuaWVsIElzdHJhdGUgPGRhbmllbC5hbGV4YW5kcnV4LmlzdHJhdGVAaW50ZWwuY29tPgorICAgICAgICBBdXRvbWF0ZWRCeTogRGFuaWVsIElzdHJhdGUgPGRhbmllbC5hbGV4YW5kcnV4LmlzdHJhdGVAaW50ZWwuY29tPgorICAgICAgICAiIiIKKworICAgICAgICBkaXJwYXRoID0gdGVtcGZpbGUubWtkdGVtcCgpCisKKyAgICAgICAgZHVtbXlfbGF5ZXJfbmFtZSA9ICdtZXRhLWR1bW15JworICAgICAgICBkdW1teV9sYXllcl9wYXRoID0gb3MucGF0aC5qb2luKGRpcnBhdGgsIGR1bW15X2xheWVyX25hbWUpCisgICAgICAgIGR1bW15X2xheWVyX2NvbmZfZGlyID0gb3MucGF0aC5qb2luKGR1bW15X2xheWVyX3BhdGgsICdjb25mJykKKyAgICAgICAgb3MubWFrZWRpcnMoZHVtbXlfbGF5ZXJfY29uZl9kaXIpCisgICAgICAgIGR1bW15X2xheWVyX2NvbmZfcGF0aCA9IG9zLnBhdGguam9pbihkdW1teV9sYXllcl9jb25mX2RpciwgJ2xheWVyLmNvbmYnKQorCisgICAgICAgIGR1bW15X2xheWVyX2NvbnRlbnQgPSAnQkJQQVRIIC49ICI6JHtMQVlFUkRJUn0iXG4nIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdCQkZJTEVTICs9ICIke0xBWUVSRElSfS9yZWNpcGVzLSovKi8qLmJiICR7TEFZRVJESVJ9L3JlY2lwZXMtKi8qLyouYmJhcHBlbmQiXG4nIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdCQkZJTEVfQ09MTEVDVElPTlMgKz0gIiVzIlxuJyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQkJGSUxFX1BBVFRFUk5fJXMgPSAiXiR7TEFZRVJESVJ9LyJcbicgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0JCRklMRV9QUklPUklUWV8lcyA9ICI2IlxuJyAlIChkdW1teV9sYXllcl9uYW1lLCBkdW1teV9sYXllcl9uYW1lLCBkdW1teV9sYXllcl9uYW1lKQorCisgICAgICAgIGZ0b29scy53cml0ZV9maWxlKGR1bW15X2xheWVyX2NvbmZfcGF0aCwgZHVtbXlfbGF5ZXJfY29udGVudCkKKworICAgICAgICBiYmxheWVyc19jb25mID0gJ0JCTEFZRVJTICs9ICIlcyJcbicgJSBkdW1teV9sYXllcl9wYXRoCisgICAgICAgIHNlbGYud3JpdGVfYmJsYXllcnNfY29uZmlnKGJibGF5ZXJzX2NvbmYpCisKKyAgICAgICAgdGVzdF9yZWNpcGUgPSAnZWQnCisKKyAgICAgICAgcmV0ID0gYml0YmFrZSgnLW4gJXMnICUgdGVzdF9yZWNpcGUpCisKKyAgICAgICAgZXJyID0gJ2ZhdGFsOiBOb3QgYSBnaXQgcmVwb3NpdG9yeScKKworICAgICAgICBzaHV0aWwucm10cmVlKGRpcnBhdGgpCisKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbihlcnIsIHJldC5vdXRwdXQpCisKKworY2xhc3MgQnVpbGRoaXN0b3J5VGVzdHMoQnVpbGRoaXN0b3J5QmFzZSk6CisKKyAgICBAT0VUZXN0SUQoMjkzKQorICAgIGRlZiB0ZXN0X2J1aWxkaGlzdG9yeV9iYXNpYyhzZWxmKToKKyAgICAgICAgc2VsZi5ydW5fYnVpbGRoaXN0b3J5X29wZXJhdGlvbigneGN1cnNvci10cmFuc3BhcmVudC10aGVtZScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZGlyKGdldF9iYl92YXIoJ0JVSUxESElTVE9SWV9ESVInKSksICJidWlsZGhpc3RvcnkgZGlyIHdhcyBub3QgY3JlYXRlZC4iKQorCisgICAgQE9FVGVzdElEKDI5NCkKKyAgICBkZWYgdGVzdF9idWlsZGhpc3RvcnlfYnVpbGR0aW1lX3ByX2JhY2t3YXJkcyhzZWxmKToKKyAgICAgICAgdGFyZ2V0ID0gJ3hjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUnCisgICAgICAgIGVycm9yID0gIkVSUk9SOi4qUUEgSXNzdWU6IFBhY2thZ2UgdmVyc2lvbiBmb3IgcGFja2FnZSAlcyB3ZW50IGJhY2t3YXJkcyB3aGljaCB3b3VsZCBicmVhayBwYWNrYWdlIGZlZWRzIGZyb20gKC4qLXIxLiogdG8gLiotcjAuKikiICUgdGFyZ2V0CisgICAgICAgIHNlbGYucnVuX2J1aWxkaGlzdG9yeV9vcGVyYXRpb24odGFyZ2V0LCB0YXJnZXRfY29uZmlnPSJQUiA9IFwicjFcIiIsIGNoYW5nZV9iaF9sb2NhdGlvbj1UcnVlKQorICAgICAgICBzZWxmLnJ1bl9idWlsZGhpc3Rvcnlfb3BlcmF0aW9uKHRhcmdldCwgdGFyZ2V0X2NvbmZpZz0iUFIgPSBcInIwXCIiLCBjaGFuZ2VfYmhfbG9jYXRpb249RmFsc2UsIGV4cGVjdF9lcnJvcj1UcnVlLCBlcnJvcl9yZWdleD1lcnJvcikKKworY2xhc3MgQXJjaGl2ZXJUZXN0KE9FU2VsZnRlc3RUZXN0Q2FzZSk6CisgICAgQE9FVGVzdElEKDkyNikKKyAgICBkZWYgdGVzdF9hcmNoX3dvcmtfZGlyX2FuZF9leHBvcnRfc291cmNlKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBmb3IgYXJjaGl2aW5nIHRoZSB3b3JrIGRpcmVjdG9yeSBhbmQgZXhwb3J0aW5nIHRoZSBzb3VyY2UgZmlsZXMuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiSU5IRVJJVCArPSBcImFyY2hpdmVyXCJcbkFSQ0hJVkVSX01PREVbc3JjXSA9IFwib3JpZ2luYWxcIlxuQVJDSElWRVJfTU9ERVtzcnBtXSA9IFwiMVwiIikKKyAgICAgICAgcmVzID0gYml0YmFrZSgieGN1cnNvci10cmFuc3BhcmVudC10aGVtZSIsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzLCAwLCAiXG5Db3VsZG4ndCBidWlsZCB4Y3Vyc29ydHJhbnNwYXJlbnR0aGVtZS5cbmJpdGJha2Ugb3V0cHV0ICVzIiAlIHJlcy5vdXRwdXQpCisgICAgICAgIGRlcGxveV9kaXJfc3JjID0gZ2V0X2JiX3ZhcignREVQTE9ZX0RJUl9TUkMnKQorICAgICAgICBwa2dzX3BhdGggPSBnLmdsb2Ioc3RyKGRlcGxveV9kaXJfc3JjKSArICIvYWxsYXJjaCoveGN1cnMqIikKKyAgICAgICAgc3JjX2ZpbGVfZ2xvYiA9IHN0cihwa2dzX3BhdGhbMF0pICsgIi94Y3Vyc29yKi5zcmMucnBtIgorICAgICAgICB0YXJfZmlsZV9nbG9iID0gc3RyKHBrZ3NfcGF0aFswXSkgKyAiL3hjdXJzb3IqLnRhci5neiIKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKChnLmdsb2Ioc3JjX2ZpbGVfZ2xvYikgYW5kIGcuZ2xvYih0YXJfZmlsZV9nbG9iKSksICJDb3VsZG4ndCBmaW5kIC5zcmMucnBtIGFuZCAudGFyLmd6IGZpbGVzIHVuZGVyICVzL2FsbGFyY2gqL3hjdXJzb3IqIiAlIGRlcGxveV9kaXJfc3JjKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvY29udGFpbmVyaW1hZ2UucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9jb250YWluZXJpbWFnZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OWE1Y2M5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvY29udGFpbmVyaW1hZ2UucHkKQEAgLTAsMCArMSw4NSBAQAoraW1wb3J0IG9zCisKK2Zyb20gb2VxYS5zZWxmdGVzdC5jYXNlIGltcG9ydCBPRVNlbGZ0ZXN0VGVzdENhc2UKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgYml0YmFrZSwgZ2V0X2JiX3ZhcnMsIHJ1bkNtZAorZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLm9laWQgaW1wb3J0IE9FVGVzdElECisKKyMgVGhpcyB0ZXN0IGJ1aWxkcyBhbiBpbWFnZSB3aXRoIHVzaW5nIHRoZSAiY29udGFpbmVyIiBJTUFHRV9GU1RZUEUsIGFuZAorIyBlbnN1cmVzIHRoYXQgdGhlbiBmaWxlcyBpbiB0aGUgaW1hZ2UgYXJlIG9ubHkgdGhlIG9uZXMgZXhwZWN0ZWQuCisjCisjIFRoZSBvbmx5IHBhY2thZ2UgYWRkZWQgdG8gdGhlIGltYWdlIGlzIGNvbnRhaW5lcl9pbWFnZV90ZXN0cGtnLCB3aGljaAorIyBjb250YWlucyBvbmUgZmlsZS4gSG93ZXZlciwgZHVlIHRvIHNvbWUgb3RoZXIgdGhpbmdzIG5vdCBjbGVhbmluZyB1cCBkdXJpbmcKKyMgcm9vdGZzIGNyZWF0aW9uLCB0aGVyZSBpcyBzb21lIGNydWZ0LiBJZGVhbGx5IGJ1Z3Mgd2lsbCBiZSBmaWxlZCBhbmQgdGhlCisjIGNydWZ0IHJlbW92ZWQsIGJ1dCBmb3Igbm93IHdlIHdoaXRlbGlzdCBzb21lIGtub3duIHNldC4KKyMKKyMgQWxzbyBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucyB3ZSdyZSBvbmx5IGNoZWNraW5nIHRoZSBjcnVmdCB3aGVuIHVzaW5nIGlway4KKyMgV2hlbiB1c2luZyBkZWIsIGFuZCBycG0gaXQgaXMgYSBiaXQgZGlmZmVyZW50IGFuZCB3ZSBjb3VsZCB0ZXN0IGFsbAorIyBvZiB0aGVtLCBidXQgdGhpcyB0ZXN0IGlzIG1vcmUgdG8gY2F0Y2ggaWYgb3RoZXIgcGFja2FnZXMgZ2V0IGFkZGVkIGJ5CisjIGRlZmF1bHQgb3RoZXIgdGhhbiB3aGF0IGlzIGluIFJPT1RGU19CT09UU1RSQVBfSU5TVEFMTC4KKyMKK2NsYXNzIENvbnRhaW5lckltYWdlVGVzdHMoT0VTZWxmdGVzdFRlc3RDYXNlKToKKworICAgICMgVmVyaWZ5IHRoYXQgd2hlbiBzcGVjaWZ5aW5nIGEgSU1BR0VfVFlQRURFUF8gb2YgdGhlIGZvcm0gImZvby5iYXIiIHRoYXQKKyAgICAjIHRoZSBjb252ZXJzaW9uIHR5cGUgYmFyIGdldHMgYWRkZWQgYXMgYSBkZXAgYXMgd2VsbAorICAgIEBPRVRlc3RJRCgxNjE5KQorICAgIGRlZiB0ZXN0X2V4cGVjdGVkX2ZpbGVzKHNlbGYpOgorCisgICAgICAgIGRlZiBnZXRfZWFjaF9wYXRoX3BhcnQocGF0aCk6CisgICAgICAgICAgICBpZiBwYXRoOgorICAgICAgICAgICAgICAgIHBhcnQgPSBbICcuJyArIHBhdGggKyAnLycgXQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IGdldF9lYWNoX3BhdGhfcGFydChwYXRoLnJzcGxpdCgnLycsIDEpWzBdKQorICAgICAgICAgICAgICAgIGlmIHJlc3VsdDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnQgKyByZXN1bHQKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFydAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCIiIlBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCA9ICJsaW51eC1kdW1teSIKK0lNQUdFX0ZTVFlQRVMgPSAiY29udGFpbmVyIgorUEFDS0FHRV9DTEFTU0VTID0gInBhY2thZ2VfaXBrIgorSU1BR0VfRkVBVFVSRVMgPSAiIgorIiIiKQorCisgICAgICAgIGJidmFycyA9IGdldF9iYl92YXJzKFsnYmluZGlyJywgJ3N5c2NvbmZkaXInLCAnbG9jYWxzdGF0ZWRpcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnREVQTE9ZX0RJUl9JTUFHRScsICdJTUFHRV9MSU5LX05BTUUnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldD0nY29udGFpbmVyLXRlc3QtaW1hZ2UnKQorICAgICAgICBleHBlY3RlZF9maWxlcyA9IFsKKyAgICAgICAgICAgICAgICAgICAgJy4vJywKKyAgICAgICAgICAgICAgICAgICAgJy57YmluZGlyfS90aGVhcHAnLAorICAgICAgICAgICAgICAgICAgICAnLntzeXNjb25mZGlyfS9kZWZhdWx0LycsCisgICAgICAgICAgICAgICAgICAgICcue3N5c2NvbmZkaXJ9L2RlZmF1bHQvcG9zdGluc3QnLAorICAgICAgICAgICAgICAgICAgICAnLntzeXNjb25mZGlyfS9sZC5zby5jYWNoZScsCisgICAgICAgICAgICAgICAgICAgICcue3N5c2NvbmZkaXJ9L3RpbWVzdGFtcCcsCisgICAgICAgICAgICAgICAgICAgICcue3N5c2NvbmZkaXJ9L3ZlcnNpb24nLAorICAgICAgICAgICAgICAgICAgICAnLi9ydW4vJywKKyAgICAgICAgICAgICAgICAgICAgJy57bG9jYWxzdGF0ZWRpcn0vY2FjaGUvJywKKyAgICAgICAgICAgICAgICAgICAgJy57bG9jYWxzdGF0ZWRpcn0vY2FjaGUvbGRjb25maWcvJywKKyAgICAgICAgICAgICAgICAgICAgJy57bG9jYWxzdGF0ZWRpcn0vY2FjaGUvbGRjb25maWcvYXV4LWNhY2hlJywKKyAgICAgICAgICAgICAgICAgICAgJy57bG9jYWxzdGF0ZWRpcn0vY2FjaGUvb3BrZy8nLAorICAgICAgICAgICAgICAgICAgICAnLntsb2NhbHN0YXRlZGlyfS9saWIvJywKKyAgICAgICAgICAgICAgICAgICAgJy57bG9jYWxzdGF0ZWRpcn0vbGliL29wa2cvJworICAgICAgICAgICAgICAgIF0KKworICAgICAgICBleHBlY3RlZF9maWxlcyA9IFsgeC5mb3JtYXQoYmluZGlyPWJidmFyc1snYmluZGlyJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXNjb25mZGlyPWJidmFyc1snc3lzY29uZmRpciddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxzdGF0ZWRpcj1iYnZhcnNbJ2xvY2Fsc3RhdGVkaXInXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluIGV4cGVjdGVkX2ZpbGVzIF0KKworICAgICAgICAjIFNpbmNlIHRhciBsaXN0cyBhbGwgZGlyZWN0b3JpZXMgaW5kaXZpZHVhbGx5LCBtYWtlIHN1cmUgZWFjaCBlbGVtZW50CisgICAgICAgICMgZnJvbSBiaW5kaXIsIHN5c2NvbmZkaXIsIGV0YyBpcyBhZGRlZAorICAgICAgICBleHBlY3RlZF9maWxlcyArPSBnZXRfZWFjaF9wYXRoX3BhcnQoYmJ2YXJzWydiaW5kaXInXSkKKyAgICAgICAgZXhwZWN0ZWRfZmlsZXMgKz0gZ2V0X2VhY2hfcGF0aF9wYXJ0KGJidmFyc1snc3lzY29uZmRpciddKQorICAgICAgICBleHBlY3RlZF9maWxlcyArPSBnZXRfZWFjaF9wYXRoX3BhcnQoYmJ2YXJzWydsb2NhbHN0YXRlZGlyJ10pCisKKyAgICAgICAgZXhwZWN0ZWRfZmlsZXMgPSBzb3J0ZWQoZXhwZWN0ZWRfZmlsZXMpCisKKyAgICAgICAgIyBCdWlsZCB0aGUgaW1hZ2Ugb2YgY291cnNlCisgICAgICAgIGJpdGJha2UoJ2NvbnRhaW5lci10ZXN0LWltYWdlJykKKworICAgICAgICBpbWFnZSA9IG9zLnBhdGguam9pbihiYnZhcnNbJ0RFUExPWV9ESVJfSU1BR0UnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmJ2YXJzWydJTUFHRV9MSU5LX05BTUUnXSArICcudGFyLmJ6MicpCisKKyAgICAgICAgIyBFbnN1cmUgdGhlIGZpbGVzIGluIHRoZSBpbWFnZSBhcmUgd2hhdCB3ZSBleHBlY3QKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJ0YXIgdGYge30gfCBzb3J0Ii5mb3JtYXQoaW1hZ2UpLCBzaGVsbD1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQuc3BsaXQoJ1xuJyksIGV4cGVjdGVkX2ZpbGVzKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZGV2dG9vbC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2RldnRvb2wucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDMyODBjZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2RldnRvb2wucHkKQEAgLTAsMCArMSwxNzExIEBACitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHNodXRpbAoraW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgZ2xvYgoraW1wb3J0IGZubWF0Y2gKKworaW1wb3J0IG9lcWEudXRpbHMuZnRvb2xzIGFzIGZ0b29scworZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2UgaW1wb3J0IE9FU2VsZnRlc3RUZXN0Q2FzZQorZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQsIGJpdGJha2UsIGdldF9iYl92YXIsIGNyZWF0ZV90ZW1wX2xheWVyCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IGdldF9iYl92YXJzLCBydW5xZW11LCBnZXRfdGVzdF9sYXllcgorZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLm9laWQgaW1wb3J0IE9FVGVzdElECisKK2NsYXNzIERldnRvb2xCYXNlKE9FU2VsZnRlc3RUZXN0Q2FzZSk6CisKKyAgICBidWZmZXIgPSBUcnVlCisKKyAgICBkZWYgX3Rlc3RfcmVjaXBlX2NvbnRlbnRzKHNlbGYsIHJlY2lwZWZpbGUsIGNoZWNrdmFycywgY2hlY2tpbmhlcml0cyk6CisgICAgICAgIHdpdGggb3BlbihyZWNpcGVmaWxlLCAncicpIGFzIGY6CisgICAgICAgICAgICBpbnZhciA9IE5vbmUKKyAgICAgICAgICAgIGludmFsdWUgPSBOb25lCisgICAgICAgICAgICBmb3IgbGluZSBpbiBmOgorICAgICAgICAgICAgICAgIHZhciA9IE5vbmUKKyAgICAgICAgICAgICAgICBpZiBpbnZhcjoKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBsaW5lLnN0cmlwKCkuc3RyaXAoJyInKQorICAgICAgICAgICAgICAgICAgICBpZiB2YWx1ZS5lbmRzd2l0aCgnXFwnKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGludmFsdWUgKz0gJyAnICsgdmFsdWVbOi0xXS5zdHJpcCgpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgaW52YWx1ZSArPSAnICcgKyB2YWx1ZS5zdHJpcCgpCisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgPSBpbnZhcgorICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBpbnZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICBpbnZhciA9IE5vbmUKKyAgICAgICAgICAgICAgICBlbGlmICc9JyBpbiBsaW5lOgorICAgICAgICAgICAgICAgICAgICBzcGxpdGxpbmUgPSBsaW5lLnNwbGl0KCc9JywgMSkKKyAgICAgICAgICAgICAgICAgICAgdmFyID0gc3BsaXRsaW5lWzBdLnJzdHJpcCgpCisgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gc3BsaXRsaW5lWzFdLnN0cmlwKCkuc3RyaXAoJyInKQorICAgICAgICAgICAgICAgICAgICBpZiB2YWx1ZS5lbmRzd2l0aCgnXFwnKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGludmFsdWUgPSB2YWx1ZVs6LTFdLnN0cmlwKCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGludmFyID0gdmFyCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGVsaWYgbGluZS5zdGFydHN3aXRoKCdpbmhlcml0ICcpOgorICAgICAgICAgICAgICAgICAgICBpbmhlcml0cyA9IGxpbmUuc3BsaXQoKVsxOl0KKworICAgICAgICAgICAgICAgIGlmIHZhciBhbmQgdmFyIGluIGNoZWNrdmFyczoKKyAgICAgICAgICAgICAgICAgICAgbmVlZHZhbHVlID0gY2hlY2t2YXJzLnBvcCh2YXIpCisgICAgICAgICAgICAgICAgICAgIGlmIG5lZWR2YWx1ZSBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdWYXJpYWJsZSAlcyBzaG91bGQgbm90IGFwcGVhciBpbiByZWNpcGUsIGJ1dCB2YWx1ZSBpcyBiZWluZyBzZXQgdG8gIiVzIicgJSAodmFyLCB2YWx1ZSkpCisgICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UobmVlZHZhbHVlLCBzZXQpOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgdmFyID09ICdMSUNFTlNFJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHNldCh2YWx1ZS5zcGxpdCgnICYgJykpCisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gc2V0KHZhbHVlLnNwbGl0KCkpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUsIG5lZWR2YWx1ZSwgJ3ZhbHVlcyBmb3IgJXMgZG8gbm90IG1hdGNoJyAlIHZhcikKKworCisgICAgICAgIG1pc3Npbmd2YXJzID0ge30KKyAgICAgICAgZm9yIHZhciwgdmFsdWUgaW4gY2hlY2t2YXJzLml0ZW1zKCk6CisgICAgICAgICAgICBpZiB2YWx1ZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBtaXNzaW5ndmFyc1t2YXJdID0gdmFsdWUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtaXNzaW5ndmFycywge30sICdTb21lIGV4cGVjdGVkIHZhcmlhYmxlcyBub3QgZm91bmQgaW4gcmVjaXBlOiAlcycgJSBjaGVja3ZhcnMpCisKKyAgICAgICAgZm9yIGluaGVyaXQgaW4gY2hlY2tpbmhlcml0czoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oaW5oZXJpdCwgaW5oZXJpdHMsICdNaXNzaW5nIGluaGVyaXQgb2YgJXMnICUgaW5oZXJpdCkKKworICAgIGRlZiBfY2hlY2tfYmJhcHBlbmQoc2VsZiwgdGVzdHJlY2lwZSwgcmVjaXBlZmlsZSwgYXBwZW5kZGlyKToKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyBzaG93LWFwcGVuZHMnLCBjd2Q9c2VsZi5idWlsZGRpcikKKyAgICAgICAgcmVzdWx0bGluZXMgPSByZXN1bHQub3V0cHV0LnNwbGl0bGluZXMoKQorICAgICAgICBpbnJlY2lwZSA9IEZhbHNlCisgICAgICAgIGJiYXBwZW5kcyA9IFtdCisgICAgICAgIGJiYXBwZW5kZmlsZSA9IE5vbmUKKyAgICAgICAgZm9yIGxpbmUgaW4gcmVzdWx0bGluZXM6CisgICAgICAgICAgICBpZiBpbnJlY2lwZToKKyAgICAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJyAnKToKKyAgICAgICAgICAgICAgICAgICAgYmJhcHBlbmRzLmFwcGVuZChsaW5lLnN0cmlwKCkpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsaWYgbGluZSA9PSAnJXM6JyAlIG9zLnBhdGguYmFzZW5hbWUocmVjaXBlZmlsZSk6CisgICAgICAgICAgICAgICAgaW5yZWNpcGUgPSBUcnVlCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGxlbihiYmFwcGVuZHMpLCAyLCAnJXMgcmVjaXBlIGlzIGJlaW5nIGJiYXBwZW5kZWQgYnkgYW5vdGhlciBsYXllciAtIGJiYXBwZW5kcyBmb3VuZDpcbiAgJXMnICUgKHRlc3RyZWNpcGUsICdcbiAgJy5qb2luKGJiYXBwZW5kcykpKQorICAgICAgICBmb3IgYmJhcHBlbmQgaW4gYmJhcHBlbmRzOgorICAgICAgICAgICAgaWYgYmJhcHBlbmQuc3RhcnRzd2l0aChhcHBlbmRkaXIpOgorICAgICAgICAgICAgICAgIGJiYXBwZW5kZmlsZSA9IGJiYXBwZW5kCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnYmJhcHBlbmQgZm9yIHJlY2lwZSAlcyBkb2VzIG5vdCBzZWVtIHRvIGJlIGNyZWF0ZWQgaW4gdGVzdCBsYXllcicgJSB0ZXN0cmVjaXBlKQorICAgICAgICByZXR1cm4gYmJhcHBlbmRmaWxlCisKKyAgICBkZWYgX2NyZWF0ZV90ZW1wX2xheWVyKHNlbGYsIHRlbXBsYXllcmRpciwgYWRkbGF5ZXIsIHRlbXBsYXllcm5hbWUsIHByaW9yaXR5PTk5OSwgcmVjaXBlcGF0aHNwZWM9J3JlY2lwZXMtKi8qJyk6CisgICAgICAgIGNyZWF0ZV90ZW1wX2xheWVyKHRlbXBsYXllcmRpciwgdGVtcGxheWVybmFtZSwgcHJpb3JpdHksIHJlY2lwZXBhdGhzcGVjKQorICAgICAgICBpZiBhZGRsYXllcjoKKyAgICAgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAlcyB8fCB0cnVlJyAlIHRlbXBsYXllcmRpcikKKyAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgYWRkLWxheWVyICVzJyAlIHRlbXBsYXllcmRpciwgY3dkPXNlbGYuYnVpbGRkaXIpCisKKyAgICBkZWYgX3Byb2Nlc3NfbHNfb3V0cHV0KHNlbGYsIG91dHB1dCk6CisgICAgICAgICIiIgorICAgICAgICBDb252ZXJ0IGxzIC1sIG91dHB1dCB0byBhIGZvcm1hdCB3ZSBjYW4gcmVhc29uYWJseSBjb21wYXJlIGZyb20gb25lIGNvbnRleHQKKyAgICAgICAgdG8gYW5vdGhlciAoZS5nLiBmcm9tIGhvc3QgdG8gdGFyZ2V0KQorICAgICAgICAiIiIKKyAgICAgICAgZmlsZWxpc3QgPSBbXQorICAgICAgICBmb3IgbGluZSBpbiBvdXRwdXQuc3BsaXRsaW5lcygpOgorICAgICAgICAgICAgc3BsaXRsaW5lID0gbGluZS5zcGxpdCgpCisgICAgICAgICAgICBpZiBsZW4oc3BsaXRsaW5lKSA8IDg6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdfcHJvY2Vzc19sc19vdXRwdXQ6IGludmFsaWQgb3V0cHV0IGxpbmU6ICVzJyAlIGxpbmUpCisgICAgICAgICAgICAjIFJlbW92ZSB0cmFpbGluZyAuIG9uIHBlcm1zCisgICAgICAgICAgICBzcGxpdGxpbmVbMF0gPSBzcGxpdGxpbmVbMF0ucnN0cmlwKCcuJykKKyAgICAgICAgICAgICMgUmVtb3ZlIGxlYWRpbmcgLiBvbiBwYXRocworICAgICAgICAgICAgc3BsaXRsaW5lWy0xXSA9IHNwbGl0bGluZVstMV0ubHN0cmlwKCcuJykKKyAgICAgICAgICAgICMgRHJvcCBmaWVsZHMgd2UgZG9uJ3Qgd2FudCB0byBjb21wYXJlCisgICAgICAgICAgICBkZWwgc3BsaXRsaW5lWzddCisgICAgICAgICAgICBkZWwgc3BsaXRsaW5lWzZdCisgICAgICAgICAgICBkZWwgc3BsaXRsaW5lWzVdCisgICAgICAgICAgICBkZWwgc3BsaXRsaW5lWzRdCisgICAgICAgICAgICBkZWwgc3BsaXRsaW5lWzFdCisgICAgICAgICAgICBmaWxlbGlzdC5hcHBlbmQoJyAnLmpvaW4oc3BsaXRsaW5lKSkKKyAgICAgICAgcmV0dXJuIGZpbGVsaXN0CisKKworY2xhc3MgRGV2dG9vbFRlc3RzKERldnRvb2xCYXNlKToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIHN1cGVyKERldnRvb2xUZXN0cywgY2xzKS5zZXRVcENsYXNzKCkKKyAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnVE9QRElSJywgJ1NTVEFURV9ESVInXSkKKyAgICAgICAgY2xzLm9yaWdpbmFsX3NzdGF0ZSA9IGJiX3ZhcnNbJ1NTVEFURV9ESVInXQorICAgICAgICBjbHMuZGV2dG9vbF9zc3RhdGUgPSBvcy5wYXRoLmpvaW4oYmJfdmFyc1snVE9QRElSJ10sICdzc3RhdGVfZGV2dG9vbCcpCisgICAgICAgIGNscy5zc3RhdGVfY29uZiAgPSAnU1NUQVRFX0RJUiA9ICIlcyJcbicgJSBjbHMuZGV2dG9vbF9zc3RhdGUKKyAgICAgICAgY2xzLnNzdGF0ZV9jb25mICs9ICgnU1NUQVRFX01JUlJPUlMgKz0gImZpbGU6Ly8uKiBmaWxlOi8vLyVzL1BBVEgiXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBjbHMub3JpZ2luYWxfc3N0YXRlKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgY2xzLmxvZ2dlci5kZWJ1ZygnRGVsZXRpbmcgZGV2dG9vbCBzc3RhdGUgY2FjaGUgb24gJXMnICUgY2xzLmRldnRvb2xfc3N0YXRlKQorICAgICAgICBydW5DbWQoJ3JtIC1yZiAlcycgJSBjbHMuZGV2dG9vbF9zc3RhdGUpCisgICAgICAgIHN1cGVyKERldnRvb2xUZXN0cywgY2xzKS50ZWFyRG93bkNsYXNzKCkKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgIiIiVGVzdCBjYXNlIHNldHVwIGZ1bmN0aW9uIiIiCisgICAgICAgIHN1cGVyKERldnRvb2xUZXN0cywgc2VsZikuc2V0VXAoKQorICAgICAgICBzZWxmLndvcmtzcGFjZWRpciA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCAnd29ya3NwYWNlJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLndvcmtzcGFjZWRpciksCisgICAgICAgICAgICAgICAgICAgICAgICAnVGhpcyB0ZXN0IGNhbm5vdCBiZSBydW4gd2l0aCBhIHdvcmtzcGFjZSBkaXJlY3RvcnkgJworICAgICAgICAgICAgICAgICAgICAgICAgJ3VuZGVyIHRoZSBidWlsZCBkaXJlY3RvcnknKQorICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoc2VsZi5zc3RhdGVfY29uZikKKworICAgIGRlZiBfY2hlY2tfc3JjX3JlcG8oc2VsZiwgcmVwb19kaXIpOgorICAgICAgICAiIiJDaGVjayBzcmN0cmVlIGdpdCByZXBvc2l0b3J5IiIiCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihyZXBvX2RpciwgJy5naXQnKSksCisgICAgICAgICAgICAgICAgICAgICAgICAnZ2l0IHJlcG9zaXRvcnkgZm9yIGV4dGVybmFsIHNvdXJjZSB0cmVlIG5vdCBmb3VuZCcpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IHN0YXR1cyAtLXBvcmNlbGFpbicsIGN3ZD1yZXBvX2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LnN0cmlwKCksICIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICdDcmVhdGVkIGdpdCByZXBvIGlzIG5vdCBjbGVhbicpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IHN5bWJvbGljLXJlZiBIRUFEJywgY3dkPXJlcG9fZGlyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQuc3RyaXAoKSwgInJlZnMvaGVhZHMvZGV2dG9vbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1dyb25nIGJyYW5jaCBpbiBnaXQgcmVwbycpCisKKyAgICBkZWYgX2NoZWNrX3JlcG9fc3RhdHVzKHNlbGYsIHJlcG9fZGlyLCBleHBlY3RlZF9zdGF0dXMpOgorICAgICAgICAiIiJDaGVjayB0aGUgd29ya3RyZWUgc3RhdHVzIG9mIGEgcmVwb3NpdG9yeSIiIgorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBzdGF0dXMgLiAtLXBvcmNlbGFpbicsCisgICAgICAgICAgICAgICAgICAgICAgICBjd2Q9cmVwb19kaXIpCisgICAgICAgIGZvciBsaW5lIGluIHJlc3VsdC5vdXRwdXQuc3BsaXRsaW5lcygpOgorICAgICAgICAgICAgZm9yIGluZCwgKGZfc3RhdHVzLCBmbl9yZSkgaW4gZW51bWVyYXRlKGV4cGVjdGVkX3N0YXR1cyk6CisgICAgICAgICAgICAgICAgaWYgcmUubWF0Y2goZm5fcmUsIGxpbmVbMzpdKToKKyAgICAgICAgICAgICAgICAgICAgaWYgZl9zdGF0dXMgIT0gbGluZVs6Ml06CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuZXhwZWN0ZWQgc3RhdHVzIGluIGxpbmU6ICVzJyAlIGxpbmUpCisgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3N0YXR1cy5wb3AoaW5kKQorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuZXhwZWN0ZWQgbW9kaWZpZWQgZmlsZSBpbiBsaW5lOiAlcycgJSBsaW5lKQorICAgICAgICBpZiBleHBlY3RlZF9zdGF0dXM6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ01pc3NpbmcgZmlsZSBjaGFuZ2VzOiAlcycgJSBleHBlY3RlZF9zdGF0dXMpCisKKyAgICBAT0VUZXN0SUQoMTE1OCkKKyAgICBkZWYgdGVzdF9jcmVhdGVfd29ya3NwYWNlKHNlbGYpOgorICAgICAgICAjIENoZWNrIHByZWNvbmRpdGlvbnMKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyBzaG93LWxheWVycycpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnL3dvcmtzcGFjZScgbm90IGluIHJlc3VsdC5vdXRwdXQsICdUaGlzIHRlc3QgY2Fubm90IGJlIHJ1biB3aXRoIGEgd29ya3NwYWNlIGxheWVyIGluIGJibGF5ZXJzLmNvbmYnKQorICAgICAgICAjIFRyeSBjcmVhdGluZyBhIHdvcmtzcGFjZSBsYXllciB3aXRoIGEgc3BlY2lmaWMgcGF0aAorICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGNyZWF0ZS13b3Jrc3BhY2UgJXMnICUgdGVtcGRpcikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbih0ZW1wZGlyLCAnY29uZicsICdsYXllci5jb25mJykpLCBtc2cgPSAiTm8gd29ya3NwYWNlIGNyZWF0ZWQuIGRldnRvb2wgb3V0cHV0OiAlcyAiICUgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyBzaG93LWxheWVycycpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4odGVtcGRpciwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgIyBUcnkgY3JlYXRpbmcgYSB3b3Jrc3BhY2UgbGF5ZXIgd2l0aCB0aGUgZGVmYXVsdCBwYXRoCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBjcmVhdGUtd29ya3NwYWNlJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ2NvbmYnLCAnbGF5ZXIuY29uZicpKSwgbXNnID0gIk5vIHdvcmtzcGFjZSBjcmVhdGVkLiBkZXZ0b29sIG91dHB1dDogJXMgIiAlIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgc2hvdy1sYXllcnMnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKHRlbXBkaXIsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi53b3Jrc3BhY2VkaXIsIHJlc3VsdC5vdXRwdXQpCisKKyAgICBAT0VUZXN0SUQoMTE1OSkKKyAgICBkZWYgdGVzdF9kZXZ0b29sX2FkZChzZWxmKToKKyAgICAgICAgIyBGZXRjaCBzb3VyY2UKKyAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCisgICAgICAgIHBuID0gJ3B2JworICAgICAgICBwdiA9ICcxLjUuMycKKyAgICAgICAgdXJsID0gJ2h0dHA6Ly93d3cuaXZhcmNoLmNvbS9wcm9ncmFtcy9zb3VyY2VzL3B2LTEuNS4zLnRhci5iejInCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnd2dldCAlcycgJSB1cmwsIGN3ZD10ZW1wZGlyKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ3RhciB4ZnYgJXMnICUgb3MucGF0aC5iYXNlbmFtZSh1cmwpLCBjd2Q9dGVtcGRpcikKKyAgICAgICAgc3JjZGlyID0gb3MucGF0aC5qb2luKHRlbXBkaXIsICclcy0lcycgJSAocG4sIHB2KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihzcmNkaXIsICdjb25maWd1cmUnKSksICdVbmFibGUgdG8gZmluZCBjb25maWd1cmUgc2NyaXB0IGluIHNvdXJjZSBkaXJlY3RvcnknKQorICAgICAgICAjIFRlc3QgZGV2dG9vbCBhZGQKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZSAtYyBjbGVhbnNzdGF0ZSAlcycgJSBwbikKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGFkZCAlcyAlcycgJSAocG4sIHNyY2RpcikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ2NvbmYnLCAnbGF5ZXIuY29uZicpLCAnV29ya3NwYWNlIGRpcmVjdG9yeSBub3QgY3JlYXRlZCcpCisgICAgICAgICMgVGVzdCBkZXZ0b29sIHN0YXR1cworICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKKyAgICAgICAgcmVjaXBlcGF0aCA9ICclcy9yZWNpcGVzLyVzLyVzXyVzLmJiJyAlIChzZWxmLndvcmtzcGFjZWRpciwgcG4sIHBuLCBwdikKKyAgICAgICAgc2VsZi5hc3NlcnRJbihyZWNpcGVwYXRoLCByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKHNyY2RpciwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgIyBUZXN0IGRldnRvb2wgZmluZC1yZWNpcGUKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIC1xIGZpbmQtcmVjaXBlICVzJyAlIHBuKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY2lwZXBhdGgsIHJlc3VsdC5vdXRwdXQuc3RyaXAoKSkKKyAgICAgICAgIyBUZXN0IGRldnRvb2wgZWRpdC1yZWNpcGUKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdWSVNVQUw9ImVjaG8gMTIzIiBkZXZ0b29sIC1xIGVkaXQtcmVjaXBlICVzJyAlIHBuKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcxMjMgJXMnICUgcmVjaXBlcGF0aCwgcmVzdWx0Lm91dHB1dC5zdHJpcCgpKQorICAgICAgICAjIENsZWFuIHVwIGFueXRoaW5nIGluIHRoZSB3b3JrZGlyL3N5c3Jvb3Qvc3N0YXRlIGNhY2hlIChoYXZlIHRvIGRvIHRoaXMgKmFmdGVyKiBkZXZ0b29sIGFkZCBzaW5jZSB0aGUgcmVjaXBlIG9ubHkgZXhpc3RzIHRoZW4pCisgICAgICAgIGJpdGJha2UoJyVzIC1jIGNsZWFuc3N0YXRlJyAlIHBuKQorICAgICAgICAjIFRlc3QgZGV2dG9vbCBidWlsZAorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgYnVpbGQgJXMnICUgcG4pCisgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ0QnLCAnYmluZGlyJ10sIHBuKQorICAgICAgICBpbnN0YWxsZGlyID0gYmJfdmFyc1snRCddCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbnN0YWxsZGlyLCAnQ291bGQgbm90IHF1ZXJ5IGluc3RhbGxkaXIgdmFyaWFibGUnKQorICAgICAgICBiaW5kaXIgPSBiYl92YXJzWydiaW5kaXInXQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYmluZGlyLCAnQ291bGQgbm90IHF1ZXJ5IGJpbmRpciB2YXJpYWJsZScpCisgICAgICAgIGlmIGJpbmRpclswXSA9PSAnLyc6CisgICAgICAgICAgICBiaW5kaXIgPSBiaW5kaXJbMTpdCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oaW5zdGFsbGRpciwgYmluZGlyLCAncHYnKSksICdwdiBiaW5hcnkgbm90IGZvdW5kIGluIEQnKQorCisgICAgQE9FVGVzdElEKDE0MjMpCisgICAgZGVmIHRlc3RfZGV2dG9vbF9hZGRfZ2l0X2xvY2FsKHNlbGYpOgorICAgICAgICAjIEZldGNoIHNvdXJjZSBmcm9tIGEgcmVtb3RlIFVSTCwgYnV0IGRvIGl0IG91dHNpZGUgb2YgZGV2dG9vbAorICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKKyAgICAgICAgcG4gPSAnZGJ1cy13YWl0JworICAgICAgICBzcmNyZXYgPSAnNmNjNjA3N2EzNmZlMjY0OGE1Zjk5M2ZlN2MxNmM5NjMyZjk0NjUxNycKKyAgICAgICAgIyBXZSBjaG9vc2UgYW4gaHR0cHM6Ly8gZ2l0IFVSTCBoZXJlIHRvIGNoZWNrIHJld3JpdGluZyB0aGUgVVJMIHdvcmtzCisgICAgICAgIHVybCA9ICdodHRwczovL2dpdC55b2N0b3Byb2plY3Qub3JnL2dpdC9kYnVzLXdhaXQnCisgICAgICAgICMgRm9yY2UgZmV0Y2hpbmcgdG8gIm5vbmFtZSIgc3ViZGlyIHNvIHdlIHZlcmlmeSB3ZSdyZSBwaWNraW5nIHVwIHRoZSBuYW1lIGZyb20gYXV0b2NvbmYKKyAgICAgICAgIyBpbnN0ZWFkIG9mIHRoZSBkaXJlY3RvcnkgbmFtZQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBjbG9uZSAlcyBub25hbWUnICUgdXJsLCBjd2Q9dGVtcGRpcikKKyAgICAgICAgc3JjZGlyID0gb3MucGF0aC5qb2luKHRlbXBkaXIsICdub25hbWUnKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCByZXNldCAtLWhhcmQgJXMnICUgc3JjcmV2LCBjd2Q9c3JjZGlyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHNyY2RpciwgJ2NvbmZpZ3VyZS5hYycpKSwgJ1VuYWJsZSB0byBmaW5kIGNvbmZpZ3VyZSBzY3JpcHQgaW4gc291cmNlIGRpcmVjdG9yeScpCisgICAgICAgICMgVGVzdCBkZXZ0b29sIGFkZAorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQorICAgICAgICAjIERvbid0IHNwZWNpZnkgYSBuYW1lIHNpbmNlIHdlIHNob3VsZCBiZSBhYmxlIHRvIGF1dG8tZGV0ZWN0IGl0CisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBhZGQgJXMnICUgc3JjZGlyKQorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdjb25mJywgJ2xheWVyLmNvbmYnKSwgJ1dvcmtzcGFjZSBkaXJlY3Rvcnkgbm90IGNyZWF0ZWQnKQorICAgICAgICAjIENoZWNrIHRoZSByZWNpcGUgbmFtZSBpcyBjb3JyZWN0CisgICAgICAgIHJlY2lwZWZpbGUgPSBnZXRfYmJfdmFyKCdGSUxFJywgcG4pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJyVzX2dpdC5iYicgJSBwbiwgcmVjaXBlZmlsZSwgJ1JlY2lwZSBmaWxlIGluY29ycmVjdGx5IG5hbWVkJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbihyZWNpcGVmaWxlLCByZXN1bHQub3V0cHV0KQorICAgICAgICAjIFRlc3QgZGV2dG9vbCBzdGF0dXMKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4ocG4sIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oc3JjZGlyLCByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKHJlY2lwZWZpbGUsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIGNoZWNrdmFycyA9IHt9CisgICAgICAgIGNoZWNrdmFyc1snTElDRU5TRSddID0gJ0dQTHYyJworICAgICAgICBjaGVja3ZhcnNbJ0xJQ19GSUxFU19DSEtTVU0nXSA9ICdmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMnCisgICAgICAgIGNoZWNrdmFyc1snUyddID0gJyR7V09SS0RJUn0vZ2l0JworICAgICAgICBjaGVja3ZhcnNbJ1BWJ10gPSAnMC4xK2dpdCR7U1JDUFZ9JworICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUkknXSA9ICdnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9naXQvZGJ1cy13YWl0O3Byb3RvY29sPWh0dHBzJworICAgICAgICBjaGVja3ZhcnNbJ1NSQ1JFViddID0gc3JjcmV2CisgICAgICAgIGNoZWNrdmFyc1snREVQRU5EUyddID0gc2V0KFsnZGJ1cyddKQorICAgICAgICBzZWxmLl90ZXN0X3JlY2lwZV9jb250ZW50cyhyZWNpcGVmaWxlLCBjaGVja3ZhcnMsIFtdKQorCisgICAgQE9FVGVzdElEKDExNjIpCisgICAgZGVmIHRlc3RfZGV2dG9vbF9hZGRfbGlicmFyeShzZWxmKToKKyAgICAgICAgIyBGZXRjaCBzb3VyY2UKKyAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCisgICAgICAgIHZlcnNpb24gPSAnMS4xJworICAgICAgICB1cmwgPSAnaHR0cHM6Ly93d3cuaW50cmEybmV0LmNvbS9lbi9kZXZlbG9wZXIvbGliZnRkaS9kb3dubG9hZC9saWJmdGRpMS0lcy50YXIuYnoyJyAlIHZlcnNpb24KKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCd3Z2V0ICVzJyAlIHVybCwgY3dkPXRlbXBkaXIpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgndGFyIHhmdiBsaWJmdGRpMS0lcy50YXIuYnoyJyAlIHZlcnNpb24sIGN3ZD10ZW1wZGlyKQorICAgICAgICBzcmNkaXIgPSBvcy5wYXRoLmpvaW4odGVtcGRpciwgJ2xpYmZ0ZGkxLSVzJyAlIHZlcnNpb24pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oc3JjZGlyLCAnQ01ha2VMaXN0cy50eHQnKSksICdVbmFibGUgdG8gZmluZCBDTWFrZUxpc3RzLnR4dCBpbiBzb3VyY2UgZGlyZWN0b3J5JykKKyAgICAgICAgIyBUZXN0IGRldnRvb2wgYWRkIChhbmQgdXNlIC1WIHNvIHdlIHRlc3QgdGhhdCB0b28pCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBhZGQgbGliZnRkaSAlcyAtViAlcycgJSAoc3JjZGlyLCB2ZXJzaW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnY29uZicsICdsYXllci5jb25mJyksICdXb3Jrc3BhY2UgZGlyZWN0b3J5IG5vdCBjcmVhdGVkJykKKyAgICAgICAgIyBUZXN0IGRldnRvb2wgc3RhdHVzCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQorICAgICAgICBzZWxmLmFzc2VydEluKCdsaWJmdGRpJywgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihzcmNkaXIsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgICMgQ2xlYW4gdXAgYW55dGhpbmcgaW4gdGhlIHdvcmtkaXIvc3lzcm9vdC9zc3RhdGUgY2FjaGUgKGhhdmUgdG8gZG8gdGhpcyAqYWZ0ZXIqIGRldnRvb2wgYWRkIHNpbmNlIHRoZSByZWNpcGUgb25seSBleGlzdHMgdGhlbikKKyAgICAgICAgYml0YmFrZSgnbGliZnRkaSAtYyBjbGVhbnNzdGF0ZScpCisgICAgICAgICMgbGliZnRkaSdzIHB5dGhvbi9DTWFrZUxpc3RzLnR4dCBpcyBhIGJpdCBicm9rZW4sIHNvIGxldCdzIGp1c3QgZGlzYWJsZSBpdAorICAgICAgICAjIFRoZXJlJ3MgYWxzbyB0aGUgbWF0dGVyIG9mIGl0IGluc3RhbGxpbmcgY21ha2UgZmlsZXMgdG8gYSBwYXRoIHdlIGRvbid0CisgICAgICAgICMgbm9ybWFsbHkgY292ZXIsIHdoaWNoIHRyaWdnZXJzIHRoZSBpbnN0YWxsZWQtdnMtc2hpcHBlZCBRQSB0ZXN0IHdlIGhhdmUKKyAgICAgICAgIyB3aXRoaW4gZG9fcGFja2FnZQorICAgICAgICByZWNpcGVmaWxlID0gJyVzL3JlY2lwZXMvbGliZnRkaS9saWJmdGRpXyVzLmJiJyAlIChzZWxmLndvcmtzcGFjZWRpciwgdmVyc2lvbikKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdyZWNpcGV0b29sIHNldHZhciAlcyBFWFRSQV9PRUNNQUtFIC0tIFwnLURQWVRIT05fQklORElOR1M9T0ZGIC1ETElCRlRESV9DTUFLRV9DT05GSUdfRElSPSR7ZGF0YWRpcn0vY21ha2UvTW9kdWxlc1wnJyAlIHJlY2lwZWZpbGUpCisgICAgICAgIHdpdGggb3BlbihyZWNpcGVmaWxlLCAnYScpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKCdcbkZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS9jbWFrZS9Nb2R1bGVzIlxuJykKKyAgICAgICAgICAgICMgV2UgZG9uJ3QgaGF2ZSB0aGUgYWJpbGl0eSB0byBwaWNrIHVwIHRoaXMgZGVwZW5kZW5jeSBhdXRvbWF0aWNhbGx5IHlldC4uLgorICAgICAgICAgICAgZi53cml0ZSgnXG5ERVBFTkRTICs9ICJsaWJ1c2IxIlxuJykKKyAgICAgICAgICAgIGYud3JpdGUoJ1xuVEVTVExJQk9VVFBVVCA9ICIke0NPTVBPTkVOVFNfRElSfS8ke1RVTkVfUEtHQVJDSH0vJHtQTn0vJHtsaWJkaXJ9IlxuJykKKyAgICAgICAgIyBUZXN0IGRldnRvb2wgYnVpbGQKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGJ1aWxkIGxpYmZ0ZGknKQorICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydURVNUTElCT1VUUFVUJywgJ1NUQU1QJ10sICdsaWJmdGRpJykKKyAgICAgICAgc3RhZ2luZ19saWJkaXIgPSBiYl92YXJzWydURVNUTElCT1VUUFVUJ10KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN0YWdpbmdfbGliZGlyLCAnQ291bGQgbm90IHF1ZXJ5IFRFU1RMSUJPVVRQVVQgdmFyaWFibGUnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHN0YWdpbmdfbGliZGlyLCAnbGliZnRkaTEuc28uMi4xLjAnKSksICJsaWJmdGRpIGJpbmFyeSBub3QgZm91bmQgaW4gU1RBR0lOR19MSUJESVIuIE91dHB1dCBvZiBkZXZ0b29sIGJ1aWxkIGxpYmZ0ZGkgJXMiICUgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgIyBUZXN0IGRldnRvb2wgcmVzZXQKKyAgICAgICAgc3RhbXBwcmVmaXggPSBiYl92YXJzWydTVEFNUCddCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCByZXNldCBsaWJmdGRpJykKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ2xpYmZ0ZGknLCByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc3RhbXBwcmVmaXgsICdVbmFibGUgdG8gZ2V0IFNUQU1QIHZhbHVlIGZvciByZWNpcGUgbGliZnRkaScpCisgICAgICAgIG1hdGNoZXMgPSBnbG9iLmdsb2Ioc3RhbXBwcmVmaXggKyAnKicpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobWF0Y2hlcywgJ1N0YW1wIGZpbGVzIGV4aXN0IGZvciByZWNpcGUgbGliZnRkaSB0aGF0IHNob3VsZCBoYXZlIGJlZW4gY2xlYW5lZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHN0YWdpbmdfbGliZGlyLCAnbGliZnRkaTEuc28uMi4xLjAnKSksICdsaWJmdGRpIGJpbmFyeSBzdGlsbCBmb3VuZCBpbiBTVEFHSU5HX0xJQkRJUiBhZnRlciBjbGVhbmluZycpCisKKyAgICBAT0VUZXN0SUQoMTE2MCkKKyAgICBkZWYgdGVzdF9kZXZ0b29sX2FkZF9mZXRjaChzZWxmKToKKyAgICAgICAgIyBGZXRjaCBzb3VyY2UKKyAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCisgICAgICAgIHRlc3R2ZXIgPSAnMC4yMycKKyAgICAgICAgdXJsID0gJ2h0dHBzOi8vcHlwaS5weXRob24ub3JnL3BhY2thZ2VzL3NvdXJjZS9NL01hcmt1cFNhZmUvTWFya3VwU2FmZS0lcy50YXIuZ3onICUgdGVzdHZlcgorICAgICAgICB0ZXN0cmVjaXBlID0gJ3B5dGhvbi1tYXJrdXBzYWZlJworICAgICAgICBzcmNkaXIgPSBvcy5wYXRoLmpvaW4odGVtcGRpciwgdGVzdHJlY2lwZSkKKyAgICAgICAgIyBUZXN0IGRldnRvb2wgYWRkCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UgLWMgY2xlYW5zc3RhdGUgJXMnICUgdGVzdHJlY2lwZSkKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGFkZCAlcyAlcyAtZiAlcycgJSAodGVzdHJlY2lwZSwgc3JjZGlyLCB1cmwpKQorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdjb25mJywgJ2xheWVyLmNvbmYnKSwgJ1dvcmtzcGFjZSBkaXJlY3Rvcnkgbm90IGNyZWF0ZWQuICVzJyAlIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oc3JjZGlyLCAnc2V0dXAucHknKSksICdVbmFibGUgdG8gZmluZCBzZXR1cC5weSBpbiBzb3VyY2UgZGlyZWN0b3J5JykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNkaXIob3MucGF0aC5qb2luKHNyY2RpciwgJy5naXQnKSksICdnaXQgcmVwb3NpdG9yeSBmb3IgZXh0ZXJuYWwgc291cmNlIHRyZWUgd2FzIG5vdCBjcmVhdGVkJykKKyAgICAgICAgIyBUZXN0IGRldnRvb2wgc3RhdHVzCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQorICAgICAgICBzZWxmLmFzc2VydEluKHRlc3RyZWNpcGUsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oc3JjZGlyLCByZXN1bHQub3V0cHV0KQorICAgICAgICAjIENoZWNrIHJlY2lwZQorICAgICAgICByZWNpcGVmaWxlID0gZ2V0X2JiX3ZhcignRklMRScsIHRlc3RyZWNpcGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJyVzXyVzLmJiJyAlICh0ZXN0cmVjaXBlLCB0ZXN0dmVyKSwgcmVjaXBlZmlsZSwgJ1JlY2lwZSBmaWxlIGluY29ycmVjdGx5IG5hbWVkJykKKyAgICAgICAgY2hlY2t2YXJzID0ge30KKyAgICAgICAgY2hlY2t2YXJzWydTJ10gPSAnJHtXT1JLRElSfS9NYXJrdXBTYWZlLSR7UFZ9JworICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUkknXSA9IHVybC5yZXBsYWNlKHRlc3R2ZXIsICcke1BWfScpCisgICAgICAgIHNlbGYuX3Rlc3RfcmVjaXBlX2NvbnRlbnRzKHJlY2lwZWZpbGUsIGNoZWNrdmFycywgW10pCisgICAgICAgICMgVHJ5IHdpdGggdmVyc2lvbiBzcGVjaWZpZWQKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHJlc2V0IC1uICVzJyAlIHRlc3RyZWNpcGUpCisgICAgICAgIHNodXRpbC5ybXRyZWUoc3JjZGlyKQorICAgICAgICBmYWtldmVyID0gJzEuOScKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGFkZCAlcyAlcyAtZiAlcyAtViAlcycgJSAodGVzdHJlY2lwZSwgc3JjZGlyLCB1cmwsIGZha2V2ZXIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHNyY2RpciwgJ3NldHVwLnB5JykpLCAnVW5hYmxlIHRvIGZpbmQgc2V0dXAucHkgaW4gc291cmNlIGRpcmVjdG9yeScpCisgICAgICAgICMgVGVzdCBkZXZ0b29sIHN0YXR1cworICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbih0ZXN0cmVjaXBlLCByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKHNyY2RpciwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgIyBDaGVjayByZWNpcGUKKyAgICAgICAgcmVjaXBlZmlsZSA9IGdldF9iYl92YXIoJ0ZJTEUnLCB0ZXN0cmVjaXBlKQorICAgICAgICBzZWxmLmFzc2VydEluKCclc18lcy5iYicgJSAodGVzdHJlY2lwZSwgZmFrZXZlciksIHJlY2lwZWZpbGUsICdSZWNpcGUgZmlsZSBpbmNvcnJlY3RseSBuYW1lZCcpCisgICAgICAgIGNoZWNrdmFycyA9IHt9CisgICAgICAgIGNoZWNrdmFyc1snUyddID0gJyR7V09SS0RJUn0vTWFya3VwU2FmZS0lcycgJSB0ZXN0dmVyCisgICAgICAgIGNoZWNrdmFyc1snU1JDX1VSSSddID0gdXJsCisgICAgICAgIHNlbGYuX3Rlc3RfcmVjaXBlX2NvbnRlbnRzKHJlY2lwZWZpbGUsIGNoZWNrdmFycywgW10pCisKKyAgICBAT0VUZXN0SUQoMTE2MSkKKyAgICBkZWYgdGVzdF9kZXZ0b29sX2FkZF9mZXRjaF9naXQoc2VsZik6CisgICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQorICAgICAgICB1cmwgPSAnZ2l0c206Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9tcmFhJworICAgICAgICBjaGVja3JldiA9ICdhZTEyN2IxOWE1MGFhNTQyNTVlNDMzMGNjZmRkOWE1ZDA1OGU1ODFkJworICAgICAgICB0ZXN0cmVjaXBlID0gJ21yYWEnCisgICAgICAgIHNyY2RpciA9IG9zLnBhdGguam9pbih0ZW1wZGlyLCB0ZXN0cmVjaXBlKQorICAgICAgICAjIFRlc3QgZGV2dG9vbCBhZGQKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZSAtYyBjbGVhbnNzdGF0ZSAlcycgJSB0ZXN0cmVjaXBlKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgYWRkICVzICVzIC1hIC1mICVzJyAlICh0ZXN0cmVjaXBlLCBzcmNkaXIsIHVybCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ2NvbmYnLCAnbGF5ZXIuY29uZicpLCAnV29ya3NwYWNlIGRpcmVjdG9yeSBub3QgY3JlYXRlZDogJXMnICUgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihzcmNkaXIsICdpbXJhYScsICdpbXJhYS5jJykpLCAnVW5hYmxlIHRvIGZpbmQgaW1yYWEvaW1yYWEuYyBpbiBzb3VyY2UgZGlyZWN0b3J5JykKKyAgICAgICAgIyBUZXN0IGRldnRvb2wgc3RhdHVzCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQorICAgICAgICBzZWxmLmFzc2VydEluKHRlc3RyZWNpcGUsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oc3JjZGlyLCByZXN1bHQub3V0cHV0KQorICAgICAgICAjIENoZWNrIHJlY2lwZQorICAgICAgICByZWNpcGVmaWxlID0gZ2V0X2JiX3ZhcignRklMRScsIHRlc3RyZWNpcGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ19naXQuYmInLCByZWNpcGVmaWxlLCAnUmVjaXBlIGZpbGUgaW5jb3JyZWN0bHkgbmFtZWQnKQorICAgICAgICBjaGVja3ZhcnMgPSB7fQorICAgICAgICBjaGVja3ZhcnNbJ1MnXSA9ICcke1dPUktESVJ9L2dpdCcKKyAgICAgICAgY2hlY2t2YXJzWydQViddID0gJzEuMCtnaXQke1NSQ1BWfScKKyAgICAgICAgY2hlY2t2YXJzWydTUkNfVVJJJ10gPSB1cmwKKyAgICAgICAgY2hlY2t2YXJzWydTUkNSRVYnXSA9ICcke0FVVE9SRVZ9JworICAgICAgICBzZWxmLl90ZXN0X3JlY2lwZV9jb250ZW50cyhyZWNpcGVmaWxlLCBjaGVja3ZhcnMsIFtdKQorICAgICAgICAjIFRyeSB3aXRoIHJldmlzaW9uIGFuZCB2ZXJzaW9uIHNwZWNpZmllZAorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgcmVzZXQgLW4gJXMnICUgdGVzdHJlY2lwZSkKKyAgICAgICAgc2h1dGlsLnJtdHJlZShzcmNkaXIpCisgICAgICAgIHVybF9yZXYgPSAnJXM7cmV2PSVzJyAlICh1cmwsIGNoZWNrcmV2KQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgYWRkICVzICVzIC1mICIlcyIgLVYgMS41JyAlICh0ZXN0cmVjaXBlLCBzcmNkaXIsIHVybF9yZXYpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHNyY2RpciwgJ2ltcmFhJywgJ2ltcmFhLmMnKSksICdVbmFibGUgdG8gZmluZCBpbXJhYS9pbXJhYS5jIGluIHNvdXJjZSBkaXJlY3RvcnknKQorICAgICAgICAjIFRlc3QgZGV2dG9vbCBzdGF0dXMKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4odGVzdHJlY2lwZSwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihzcmNkaXIsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgICMgQ2hlY2sgcmVjaXBlCisgICAgICAgIHJlY2lwZWZpbGUgPSBnZXRfYmJfdmFyKCdGSUxFJywgdGVzdHJlY2lwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignX2dpdC5iYicsIHJlY2lwZWZpbGUsICdSZWNpcGUgZmlsZSBpbmNvcnJlY3RseSBuYW1lZCcpCisgICAgICAgIGNoZWNrdmFycyA9IHt9CisgICAgICAgIGNoZWNrdmFyc1snUyddID0gJyR7V09SS0RJUn0vZ2l0JworICAgICAgICBjaGVja3ZhcnNbJ1BWJ10gPSAnMS41K2dpdCR7U1JDUFZ9JworICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUkknXSA9IHVybAorICAgICAgICBjaGVja3ZhcnNbJ1NSQ1JFViddID0gY2hlY2tyZXYKKyAgICAgICAgc2VsZi5fdGVzdF9yZWNpcGVfY29udGVudHMocmVjaXBlZmlsZSwgY2hlY2t2YXJzLCBbXSkKKworICAgIEBPRVRlc3RJRCgxMzkxKQorICAgIGRlZiB0ZXN0X2RldnRvb2xfYWRkX2ZldGNoX3NpbXBsZShzZWxmKToKKyAgICAgICAgIyBGZXRjaCBzb3VyY2UgZnJvbSBhIHJlbW90ZSBVUkwsIGF1dG8tZGV0ZWN0aW5nIG5hbWUKKyAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCisgICAgICAgIHRlc3R2ZXIgPSAnMS42LjAnCisgICAgICAgIHVybCA9ICdodHRwOi8vd3d3Lml2YXJjaC5jb20vcHJvZ3JhbXMvc291cmNlcy9wdi0lcy50YXIuYnoyJyAlIHRlc3R2ZXIKKyAgICAgICAgdGVzdHJlY2lwZSA9ICdwdicKKyAgICAgICAgc3JjZGlyID0gb3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnc291cmNlcycsIHRlc3RyZWNpcGUpCisgICAgICAgICMgVGVzdCBkZXZ0b29sIGFkZAorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgYWRkICVzJyAlIHVybCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnY29uZicsICdsYXllci5jb25mJyksICdXb3Jrc3BhY2UgZGlyZWN0b3J5IG5vdCBjcmVhdGVkLiAlcycgJSByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHNyY2RpciwgJ2NvbmZpZ3VyZScpKSwgJ1VuYWJsZSB0byBmaW5kIGNvbmZpZ3VyZSBzY3JpcHQgaW4gc291cmNlIGRpcmVjdG9yeScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihzcmNkaXIsICcuZ2l0JykpLCAnZ2l0IHJlcG9zaXRvcnkgZm9yIGV4dGVybmFsIHNvdXJjZSB0cmVlIHdhcyBub3QgY3JlYXRlZCcpCisgICAgICAgICMgVGVzdCBkZXZ0b29sIHN0YXR1cworICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbih0ZXN0cmVjaXBlLCByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKHNyY2RpciwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgIyBDaGVjayByZWNpcGUKKyAgICAgICAgcmVjaXBlZmlsZSA9IGdldF9iYl92YXIoJ0ZJTEUnLCB0ZXN0cmVjaXBlKQorICAgICAgICBzZWxmLmFzc2VydEluKCclc18lcy5iYicgJSAodGVzdHJlY2lwZSwgdGVzdHZlciksIHJlY2lwZWZpbGUsICdSZWNpcGUgZmlsZSBpbmNvcnJlY3RseSBuYW1lZCcpCisgICAgICAgIGNoZWNrdmFycyA9IHt9CisgICAgICAgIGNoZWNrdmFyc1snUyddID0gTm9uZQorICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUkknXSA9IHVybC5yZXBsYWNlKHRlc3R2ZXIsICcke1BWfScpCisgICAgICAgIHNlbGYuX3Rlc3RfcmVjaXBlX2NvbnRlbnRzKHJlY2lwZWZpbGUsIGNoZWNrdmFycywgW10pCisKKyAgICBAT0VUZXN0SUQoMTE2NCkKKyAgICBkZWYgdGVzdF9kZXZ0b29sX21vZGlmeShzZWxmKToKKyAgICAgICAgaW1wb3J0IG9lLnBhdGgKKworICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZSAtYyBjbGVhbiBtZGFkbScpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBtb2RpZnkgbWRhZG0gLXggJXMnICUgdGVtcGRpcikKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMob3MucGF0aC5qb2luKHRlbXBkaXIsICdNYWtlZmlsZScpLCAnRXh0cmFjdGVkIHNvdXJjZSBjb3VsZCBub3QgYmUgZm91bmQnKQorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdjb25mJywgJ2xheWVyLmNvbmYnKSwgJ1dvcmtzcGFjZSBkaXJlY3Rvcnkgbm90IGNyZWF0ZWQnKQorICAgICAgICBtYXRjaGVzID0gZ2xvYi5nbG9iKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ2FwcGVuZHMnLCAnbWRhZG1fKi5iYmFwcGVuZCcpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0Y2hlcywgJ2JiYXBwZW5kIG5vdCBjcmVhdGVkICVzJyAlIHJlc3VsdC5vdXRwdXQpCisKKyAgICAgICAgIyBUZXN0IGRldnRvb2wgc3RhdHVzCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQorICAgICAgICBzZWxmLmFzc2VydEluKCdtZGFkbScsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4odGVtcGRpciwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5fY2hlY2tfc3JjX3JlcG8odGVtcGRpcikKKworICAgICAgICBiaXRiYWtlKCdtZGFkbSAtQyB1bnBhY2snKQorCisgICAgICAgIGRlZiBjaGVja19saW5lKGNoZWNrZmlsZSwgZXhwZWN0ZWQsIG1lc3NhZ2UsIHByZXNlbnQ9VHJ1ZSk6CisgICAgICAgICAgICAjIENoZWNrIGZvciAkZXhwZWN0ZWQsIG9uIGEgbGluZSBvbiBpdHMgb3duLCBpbiBjaGVja2ZpbGUuCisgICAgICAgICAgICB3aXRoIG9wZW4oY2hlY2tmaWxlLCAncicpIGFzIGY6CisgICAgICAgICAgICAgICAgaWYgcHJlc2VudDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihleHBlY3RlZCArICdcbicsIGYsIG1lc3NhZ2UpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbihleHBlY3RlZCArICdcbicsIGYsIG1lc3NhZ2UpCisKKyAgICAgICAgbW9kZmlsZSA9IG9zLnBhdGguam9pbih0ZW1wZGlyLCAnbWRhZG0uOC5pbicpCisgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ1BLR0QnLCAnbWFuZGlyJ10sICdtZGFkbScpCisgICAgICAgIHBrZ2QgPSBiYl92YXJzWydQS0dEJ10KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBrZ2QsICdDb3VsZCBub3QgcXVlcnkgUEtHRCB2YXJpYWJsZScpCisgICAgICAgIG1hbmRpciA9IGJiX3ZhcnNbJ21hbmRpciddCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYW5kaXIsICdDb3VsZCBub3QgcXVlcnkgbWFuZGlyIHZhcmlhYmxlJykKKyAgICAgICAgbWFuZmlsZSA9IG9lLnBhdGguam9pbihwa2dkLCBtYW5kaXIsICdtYW44JywgJ21kYWRtLjgnKQorCisgICAgICAgIGNoZWNrX2xpbmUobW9kZmlsZSwgJ0xpbnV4IFNvZnR3YXJlIFJBSUQnLCAnQ291bGQgbm90IGZpbmQgaW5pdGlhbCBzdHJpbmcnKQorICAgICAgICBjaGVja19saW5lKG1vZGZpbGUsICdhbnRpcXVlIHBpbiBzYXJkaW5lJywgJ1VuZXhwZWN0ZWRseSBmb3VuZCByZXBsYWNlbWVudCBzdHJpbmcnLCBwcmVzZW50PUZhbHNlKQorCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgic2VkIC1pICdzIV5MaW51eCBTb2Z0d2FyZSBSQUlEJCFhbnRpcXVlIHBpbiBzYXJkaW5lIScgJXMiICUgbW9kZmlsZSkKKyAgICAgICAgY2hlY2tfbGluZShtb2RmaWxlLCAnYW50aXF1ZSBwaW4gc2FyZGluZScsICdtZGFkbS44LmluIGZpbGUgbm90IG1vZGlmaWVkIChzZWQgZmFpbGVkKScpCisKKyAgICAgICAgYml0YmFrZSgnbWRhZG0gLWMgcGFja2FnZScpCisgICAgICAgIGNoZWNrX2xpbmUobWFuZmlsZSwgJ2FudGlxdWUgcGluIHNhcmRpbmUnLCAnbWFuIGZpbGUgbm90IG1vZGlmaWVkLiBtYW4gc2VhcmNoZWQgZmlsZSBwYXRoOiAlcycgJSBtYW5maWxlKQorCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IGNoZWNrb3V0IC0tICVzJyAlIG1vZGZpbGUsIGN3ZD10ZW1wZGlyKQorICAgICAgICBjaGVja19saW5lKG1vZGZpbGUsICdMaW51eCBTb2Z0d2FyZSBSQUlEJywgJ21hbiAuaW4gZmlsZSBub3QgcmVzdG9yZWQgKGdpdCBmYWlsZWQpJykKKworICAgICAgICBiaXRiYWtlKCdtZGFkbSAtYyBwYWNrYWdlJykKKyAgICAgICAgY2hlY2tfbGluZShtYW5maWxlLCAnTGludXggU29mdHdhcmUgUkFJRCcsICdtYW4gZmlsZSBub3QgdXBkYXRlZC4gbWFuIHNlYXJjaGVkIGZpbGUgcGF0aDogJXMnICUgbWFuZmlsZSkKKworICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgcmVzZXQgbWRhZG0nKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignbWRhZG0nLCByZXN1bHQub3V0cHV0KQorCisgICAgQE9FVGVzdElEKDE2MjApCisgICAgZGVmIHRlc3RfZGV2dG9vbF9idWlsZGNsZWFuKHNlbGYpOgorICAgICAgICBkZWYgYXNzZXJ0RmlsZShwYXRoLCAqcGF0aHMpOgorICAgICAgICAgICAgZiA9IG9zLnBhdGguam9pbihwYXRoLCAqcGF0aHMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhmKQorICAgICAgICBkZWYgYXNzZXJ0Tm9GaWxlKHBhdGgsICpwYXRocyk6CisgICAgICAgICAgICBmID0gb3MucGF0aC5qb2luKHBhdGgsICpwYXRocykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXhpc3RzKGYpCisKKyAgICAgICAgIyBDbGVhbiB1cCBhbnl0aGluZyBpbiB0aGUgd29ya2Rpci9zeXNyb290L3NzdGF0ZSBjYWNoZQorICAgICAgICBiaXRiYWtlKCdtZGFkbSBtNCAtYyBjbGVhbnNzdGF0ZScpCisgICAgICAgICMgVHJ5IG1vZGlmeWluZyBhIHJlY2lwZQorICAgICAgICB0ZW1wZGlyX21kYWRtID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCisgICAgICAgIHRlbXBkaXJfbTQgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKKyAgICAgICAgYnVpbGRkaXJfbTQgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyX21kYWRtKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXJfbTQpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoYnVpbGRkaXJfbTQpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UgLWMgY2xlYW4gbWRhZG0gbTQnKQorICAgICAgICBzZWxmLndyaXRlX3JlY2lwZWluYygnbTQnLCAnRVhURVJOQUxTUkNfQlVJTEQgPSAiJXMiXG5kb19jbGVhbigpIHtcblx0OlxufVxuJyAlIGJ1aWxkZGlyX200KQorICAgICAgICB0cnk6CisgICAgICAgICAgICBydW5DbWQoJ2RldnRvb2wgbW9kaWZ5IG1kYWRtIC14ICVzJyAlIHRlbXBkaXJfbWRhZG0pCisgICAgICAgICAgICBydW5DbWQoJ2RldnRvb2wgbW9kaWZ5IG00IC14ICVzJyAlIHRlbXBkaXJfbTQpCisgICAgICAgICAgICBhc3NlcnROb0ZpbGUodGVtcGRpcl9tZGFkbSwgJ21kYWRtJykKKyAgICAgICAgICAgIGFzc2VydE5vRmlsZShidWlsZGRpcl9tNCwgJ3NyYy9tNCcpCisgICAgICAgICAgICByZXN1bHQgPSBiaXRiYWtlKCdtNCAtZScpCisgICAgICAgICAgICByZXN1bHQgPSBiaXRiYWtlKCdtZGFkbSBtNCAtYyBjb21waWxlJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnN0YXR1cywgMCkKKyAgICAgICAgICAgIGFzc2VydEZpbGUodGVtcGRpcl9tZGFkbSwgJ21kYWRtJykKKyAgICAgICAgICAgIGFzc2VydEZpbGUoYnVpbGRkaXJfbTQsICdzcmMvbTQnKQorICAgICAgICAgICAgIyBDaGVjayB0aGF0IGJ1aWxkY2xlYW4gdGFzayBleGlzdHMgYW5kIGRvZXMgY2FsbCBtYWtlIGNsZWFuCisgICAgICAgICAgICBiaXRiYWtlKCdtZGFkbSBtNCAtYyBidWlsZGNsZWFuJykKKyAgICAgICAgICAgIGFzc2VydE5vRmlsZSh0ZW1wZGlyX21kYWRtLCAnbWRhZG0nKQorICAgICAgICAgICAgYXNzZXJ0Tm9GaWxlKGJ1aWxkZGlyX200LCAnc3JjL200JykKKyAgICAgICAgICAgIGJpdGJha2UoJ21kYWRtIG00IC1jIGNvbXBpbGUnKQorICAgICAgICAgICAgYXNzZXJ0RmlsZSh0ZW1wZGlyX21kYWRtLCAnbWRhZG0nKQorICAgICAgICAgICAgYXNzZXJ0RmlsZShidWlsZGRpcl9tNCwgJ3NyYy9tNCcpCisgICAgICAgICAgICBiaXRiYWtlKCdtZGFkbSBtNCAtYyBjbGVhbicpCisgICAgICAgICAgICAjIENoZWNrIHRoYXQgYnVpbGRjbGVhbiB0YXNrIGlzIHJ1biBiZWZvcmUgY2xlYW4gZm9yIEIgPT0gUworICAgICAgICAgICAgYXNzZXJ0Tm9GaWxlKHRlbXBkaXJfbWRhZG0sICdtZGFkbScpCisgICAgICAgICAgICAjIENoZWNrIHRoYXQgYnVpbGRjbGVhbiB0YXNrIGlzIG5vdCBydW4gYmVmb3JlIGNsZWFuIGZvciBCICE9IFMKKyAgICAgICAgICAgIGFzc2VydEZpbGUoYnVpbGRkaXJfbTQsICdzcmMvbTQnKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2VsZi5kZWxldGVfcmVjaXBlaW5jKCdtNCcpCisKKyAgICBAT0VUZXN0SUQoMTE2NikKKyAgICBkZWYgdGVzdF9kZXZ0b29sX21vZGlmeV9pbnZhbGlkKHNlbGYpOgorICAgICAgICAjIFRyeSBtb2RpZnlpbmcgc29tZSByZWNpcGVzCisgICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQorCisgICAgICAgIHRlc3RyZWNpcGVzID0gJ3BlcmYga2VybmVsLWRldnNyYyBwYWNrYWdlLWluZGV4IGNvcmUtaW1hZ2UtbWluaW1hbCBtZXRhLXRvb2xjaGFpbiBwYWNrYWdlZ3JvdXAtY29yZS1zZGsgbWV0YS1pZGUtc3VwcG9ydCcuc3BsaXQoKQorICAgICAgICAjIEZpbmQgYWN0dWFsIG5hbWUgb2YgZ2NjLXNvdXJjZSBzaW5jZSBpdCBub3cgaW5jbHVkZXMgdGhlIHZlcnNpb24gLSBjcnVkZSwgYnV0IGdvb2QgZW5vdWdoIGZvciB0aGlzIHB1cnBvc2UKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyBzaG93LXJlY2lwZXMgZ2NjLXNvdXJjZSonKQorICAgICAgICBmb3IgbGluZSBpbiByZXN1bHQub3V0cHV0LnNwbGl0bGluZXMoKToKKyAgICAgICAgICAgICMganVzdCBtYXRjaCB0aG9zZSBsaW5lcyB0aGF0IGNvbnRhaW4gYSByZWFsIHRhcmdldAorICAgICAgICAgICAgbSA9IHJlLm1hdGNoKCcoP1A8cmVjaXBlPl5bYS16QS1aMC05Li1dKykoP1A8Y29sb24+OiQpJywgbGluZSkKKyAgICAgICAgICAgIGlmIG06CisgICAgICAgICAgICAgICAgdGVzdHJlY2lwZXMuYXBwZW5kKG0uZ3JvdXAoJ3JlY2lwZScpKQorICAgICAgICBmb3IgdGVzdHJlY2lwZSBpbiB0ZXN0cmVjaXBlczoKKyAgICAgICAgICAgICMgQ2hlY2sgaXQncyBhIHZhbGlkIHJlY2lwZQorICAgICAgICAgICAgYml0YmFrZSgnJXMgLWUnICUgdGVzdHJlY2lwZSkKKyAgICAgICAgICAgICMgZGV2dG9vbCBleHRyYWN0IHNob3VsZCBmYWlsCisgICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgZXh0cmFjdCAlcyAlcycgJSAodGVzdHJlY2lwZSwgb3MucGF0aC5qb2luKHRlbXBkaXIsIHRlc3RyZWNpcGUpKSwgaWdub3JlX3N0YXR1cz1UcnVlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyZXN1bHQuc3RhdHVzLCAwLCAnZGV2dG9vbCBleHRyYWN0IG9uICVzIHNob3VsZCBoYXZlIGZhaWxlZC4gZGV2dG9vbCBvdXRwdXQ6ICVzJyAlICh0ZXN0cmVjaXBlLCByZXN1bHQub3V0cHV0KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ0ZldGNoaW5nICcsIHJlc3VsdC5vdXRwdXQsICdkZXZ0b29sIGV4dHJhY3Qgb24gJXMgc2hvdWxkIGhhdmUgZXJyb3JlZCBvdXQgYmVmb3JlIHRyeWluZyB0byBmZXRjaCcgJSB0ZXN0cmVjaXBlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignRVJST1I6ICcsIHJlc3VsdC5vdXRwdXQsICdkZXZ0b29sIGV4dHJhY3Qgb24gJXMgc2hvdWxkIGhhdmUgZ2l2ZW4gYW4gRVJST1InICUgdGVzdHJlY2lwZSkKKyAgICAgICAgICAgICMgZGV2dG9vbCBtb2RpZnkgc2hvdWxkIGZhaWwKKyAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBtb2RpZnkgJXMgLXggJXMnICUgKHRlc3RyZWNpcGUsIG9zLnBhdGguam9pbih0ZW1wZGlyLCB0ZXN0cmVjaXBlKSksIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmVzdWx0LnN0YXR1cywgMCwgJ2RldnRvb2wgbW9kaWZ5IG9uICVzIHNob3VsZCBoYXZlIGZhaWxlZC4gZGV2dG9vbCBvdXRwdXQ6ICVzJyAlICAodGVzdHJlY2lwZSwgcmVzdWx0Lm91dHB1dCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdFUlJPUjogJywgcmVzdWx0Lm91dHB1dCwgJ2RldnRvb2wgbW9kaWZ5IG9uICVzIHNob3VsZCBoYXZlIGdpdmVuIGFuIEVSUk9SJyAlIHRlc3RyZWNpcGUpCisKKyAgICBAT0VUZXN0SUQoMTM2NSkKKyAgICBkZWYgdGVzdF9kZXZ0b29sX21vZGlmeV9uYXRpdmUoc2VsZik6CisgICAgICAgICMgQ2hlY2sgcHJlY29uZGl0aW9ucworICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IG9zLnBhdGguZXhpc3RzKHNlbGYud29ya3NwYWNlZGlyKSwgJ1RoaXMgdGVzdCBjYW5ub3QgYmUgcnVuIHdpdGggYSB3b3Jrc3BhY2UgZGlyZWN0b3J5IHVuZGVyIHRoZSBidWlsZCBkaXJlY3RvcnknKQorICAgICAgICAjIFRyeSBtb2RpZnlpbmcgc29tZSByZWNpcGVzCisgICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQorCisgICAgICAgIGJiY2xhc3NleHRlbmRlZCA9IEZhbHNlCisgICAgICAgIGluaGVyaXRuYXRpdmUgPSBGYWxzZQorICAgICAgICB0ZXN0cmVjaXBlcyA9ICdtdG9vbHMtbmF0aXZlIGFwdC1uYXRpdmUgZGVza3RvcC1maWxlLXV0aWxzLW5hdGl2ZScuc3BsaXQoKQorICAgICAgICBmb3IgdGVzdHJlY2lwZSBpbiB0ZXN0cmVjaXBlczoKKyAgICAgICAgICAgIGNoZWNrZXh0ZW5kID0gJ25hdGl2ZScgaW4gKGdldF9iYl92YXIoJ0JCQ0xBU1NFWFRFTkQnLCB0ZXN0cmVjaXBlKSBvciAnJykuc3BsaXQoKQorICAgICAgICAgICAgaWYgbm90IGJiY2xhc3NleHRlbmRlZDoKKyAgICAgICAgICAgICAgICBiYmNsYXNzZXh0ZW5kZWQgPSBjaGVja2V4dGVuZAorICAgICAgICAgICAgaWYgbm90IGluaGVyaXRuYXRpdmU6CisgICAgICAgICAgICAgICAgaW5oZXJpdG5hdGl2ZSA9IG5vdCBjaGVja2V4dGVuZAorICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIG1vZGlmeSAlcyAteCAlcycgJSAodGVzdHJlY2lwZSwgb3MucGF0aC5qb2luKHRlbXBkaXIsIHRlc3RyZWNpcGUpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ0VSUk9SOiAnLCByZXN1bHQub3V0cHV0LCAnRVJST1IgaW4gZGV2dG9vbCBtb2RpZnkgb3V0cHV0OiAlcycgJSByZXN1bHQub3V0cHV0KQorICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGJ1aWxkICVzJyAlIHRlc3RyZWNpcGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdFUlJPUjogJywgcmVzdWx0Lm91dHB1dCwgJ0VSUk9SIGluIGRldnRvb2wgYnVpbGQgb3V0cHV0OiAlcycgJSByZXN1bHQub3V0cHV0KQorICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHJlc2V0ICVzJyAlIHRlc3RyZWNpcGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdFUlJPUjogJywgcmVzdWx0Lm91dHB1dCwgJ0VSUk9SIGluIGRldnRvb2wgcmVzZXQgb3V0cHV0OiAlcycgJSByZXN1bHQub3V0cHV0KQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShiYmNsYXNzZXh0ZW5kZWQsICdOb25lIG9mIHRoZXNlIHJlY2lwZXMgYXJlIEJCQ0xBU1NFWFRFTkRlZCB0byBuYXRpdmUgLSBuZWVkIHRvIGFkanVzdCB0ZXN0cmVjaXBlcyBsaXN0OiAlcycgJSAnLCAnLmpvaW4odGVzdHJlY2lwZXMpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5oZXJpdG5hdGl2ZSwgJ05vbmUgb2YgdGhlc2UgcmVjaXBlcyBkbyAiaW5oZXJpdCBuYXRpdmUiIC0gbmVlZCB0byBhZGp1c3QgdGVzdHJlY2lwZXMgbGlzdDogJXMnICUgJywgJy5qb2luKHRlc3RyZWNpcGVzKSkKKworCisgICAgQE9FVGVzdElEKDExNjUpCisgICAgZGVmIHRlc3RfZGV2dG9vbF9tb2RpZnlfZ2l0KHNlbGYpOgorICAgICAgICAjIENoZWNrIHByZWNvbmRpdGlvbnMKKyAgICAgICAgdGVzdHJlY2lwZSA9ICdta2VsZmltYWdlJworICAgICAgICBzcmNfdXJpID0gZ2V0X2JiX3ZhcignU1JDX1VSSScsIHRlc3RyZWNpcGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2dpdDovLycsIHNyY191cmksICdUaGlzIHRlc3QgZXhwZWN0cyB0aGUgJXMgcmVjaXBlIHRvIGJlIGEgZ2l0IHJlY2lwZScgJSB0ZXN0cmVjaXBlKQorICAgICAgICAjIENsZWFuIHVwIGFueXRoaW5nIGluIHRoZSB3b3JrZGlyL3N5c3Jvb3Qvc3N0YXRlIGNhY2hlCisgICAgICAgIGJpdGJha2UoJyVzIC1jIGNsZWFuc3N0YXRlJyAlIHRlc3RyZWNpcGUpCisgICAgICAgICMgVHJ5IG1vZGlmeWluZyBhIHJlY2lwZQorICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZSAtYyBjbGVhbiAlcycgJSB0ZXN0cmVjaXBlKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgbW9kaWZ5ICVzIC14ICVzJyAlICh0ZXN0cmVjaXBlLCB0ZW1wZGlyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMob3MucGF0aC5qb2luKHRlbXBkaXIsICdNYWtlZmlsZScpLCAnRXh0cmFjdGVkIHNvdXJjZSBjb3VsZCBub3QgYmUgZm91bmQnKQorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdjb25mJywgJ2xheWVyLmNvbmYnKSwgJ1dvcmtzcGFjZSBkaXJlY3Rvcnkgbm90IGNyZWF0ZWQuIGRldnRvb2wgb3V0cHV0OiAlcycgJSByZXN1bHQub3V0cHV0KQorICAgICAgICBtYXRjaGVzID0gZ2xvYi5nbG9iKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ2FwcGVuZHMnLCAnbWtlbGZpbWFnZV8qLmJiYXBwZW5kJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRjaGVzLCAnYmJhcHBlbmQgbm90IGNyZWF0ZWQnKQorICAgICAgICAjIFRlc3QgZGV2dG9vbCBzdGF0dXMKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4odGVzdHJlY2lwZSwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbih0ZW1wZGlyLCByZXN1bHQub3V0cHV0KQorICAgICAgICAjIENoZWNrIGdpdCByZXBvCisgICAgICAgIHNlbGYuX2NoZWNrX3NyY19yZXBvKHRlbXBkaXIpCisgICAgICAgICMgVHJ5IGJ1aWxkaW5nCisgICAgICAgIGJpdGJha2UodGVzdHJlY2lwZSkKKworICAgIEBPRVRlc3RJRCgxMTY3KQorICAgIGRlZiB0ZXN0X2RldnRvb2xfbW9kaWZ5X2xvY2FsZmlsZXMoc2VsZik6CisgICAgICAgICMgQ2hlY2sgcHJlY29uZGl0aW9ucworICAgICAgICB0ZXN0cmVjaXBlID0gJ2xpZ2h0dHBkJworICAgICAgICBzcmNfdXJpID0gKGdldF9iYl92YXIoJ1NSQ19VUkknLCB0ZXN0cmVjaXBlKSBvciAnJykuc3BsaXQoKQorICAgICAgICBmb3VuZGxvY2FsID0gRmFsc2UKKyAgICAgICAgZm9yIGl0ZW0gaW4gc3JjX3VyaToKKyAgICAgICAgICAgIGlmIGl0ZW0uc3RhcnRzd2l0aCgnZmlsZTovLycpIGFuZCAnLnBhdGNoJyBub3QgaW4gaXRlbToKKyAgICAgICAgICAgICAgICBmb3VuZGxvY2FsID0gVHJ1ZQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmb3VuZGxvY2FsLCAnVGhpcyB0ZXN0IGV4cGVjdHMgdGhlICVzIHJlY2lwZSB0byBmZXRjaCBsb2NhbCBmaWxlcyBhbmQgaXQgc2VlbXMgdGhhdCBpdCBubyBsb25nZXIgZG9lcycgJSB0ZXN0cmVjaXBlKQorICAgICAgICAjIENsZWFuIHVwIGFueXRoaW5nIGluIHRoZSB3b3JrZGlyL3N5c3Jvb3Qvc3N0YXRlIGNhY2hlCisgICAgICAgIGJpdGJha2UoJyVzIC1jIGNsZWFuc3N0YXRlJyAlIHRlc3RyZWNpcGUpCisgICAgICAgICMgVHJ5IG1vZGlmeWluZyBhIHJlY2lwZQorICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZSAtYyBjbGVhbiAlcycgJSB0ZXN0cmVjaXBlKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgbW9kaWZ5ICVzIC14ICVzJyAlICh0ZXN0cmVjaXBlLCB0ZW1wZGlyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMob3MucGF0aC5qb2luKHRlbXBkaXIsICdjb25maWd1cmUuYWMnKSwgJ0V4dHJhY3RlZCBzb3VyY2UgY291bGQgbm90IGJlIGZvdW5kJykKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnY29uZicsICdsYXllci5jb25mJyksICdXb3Jrc3BhY2UgZGlyZWN0b3J5IG5vdCBjcmVhdGVkJykKKyAgICAgICAgbWF0Y2hlcyA9IGdsb2IuZ2xvYihvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdhcHBlbmRzJywgJyVzXyouYmJhcHBlbmQnICUgdGVzdHJlY2lwZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRjaGVzLCAnYmJhcHBlbmQgbm90IGNyZWF0ZWQnKQorICAgICAgICAjIFRlc3QgZGV2dG9vbCBzdGF0dXMKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4odGVzdHJlY2lwZSwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbih0ZW1wZGlyLCByZXN1bHQub3V0cHV0KQorICAgICAgICAjIFRyeSBidWlsZGluZworICAgICAgICBiaXRiYWtlKHRlc3RyZWNpcGUpCisKKyAgICBAT0VUZXN0SUQoMTM3OCkKKyAgICBkZWYgdGVzdF9kZXZ0b29sX21vZGlmeV92aXJ0dWFsKHNlbGYpOgorICAgICAgICAjIFRyeSBtb2RpZnlpbmcgYSB2aXJ0dWFsIHJlY2lwZQorICAgICAgICB2aXJ0cmVjaXBlID0gJ3ZpcnR1YWwvbWFrZScKKyAgICAgICAgcmVhbHJlY2lwZSA9ICdtYWtlJworICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIG1vZGlmeSAlcyAteCAlcycgJSAodmlydHJlY2lwZSwgdGVtcGRpcikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKG9zLnBhdGguam9pbih0ZW1wZGlyLCAnTWFrZWZpbGUuYW0nKSwgJ0V4dHJhY3RlZCBzb3VyY2UgY291bGQgbm90IGJlIGZvdW5kJykKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnY29uZicsICdsYXllci5jb25mJyksICdXb3Jrc3BhY2UgZGlyZWN0b3J5IG5vdCBjcmVhdGVkJykKKyAgICAgICAgbWF0Y2hlcyA9IGdsb2IuZ2xvYihvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdhcHBlbmRzJywgJyVzXyouYmJhcHBlbmQnICUgcmVhbHJlY2lwZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRjaGVzLCAnYmJhcHBlbmQgbm90IGNyZWF0ZWQgJXMnICUgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgIyBUZXN0IGRldnRvb2wgc3RhdHVzCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKHZpcnRyZWNpcGUsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4ocmVhbHJlY2lwZSwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgIyBDaGVjayBnaXQgcmVwbworICAgICAgICBzZWxmLl9jaGVja19zcmNfcmVwbyh0ZW1wZGlyKQorICAgICAgICAjIFRoaXMgaXMgcHJvYmFibHkgc3VmZmljaWVudAorCisKKyAgICBAT0VUZXN0SUQoMTE2OSkKKyAgICBkZWYgdGVzdF9kZXZ0b29sX3VwZGF0ZV9yZWNpcGUoc2VsZik6CisgICAgICAgICMgQ2hlY2sgcHJlY29uZGl0aW9ucworICAgICAgICB0ZXN0cmVjaXBlID0gJ21pbmljb20nCisgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ0ZJTEUnLCAnU1JDX1VSSSddLCB0ZXN0cmVjaXBlKQorICAgICAgICByZWNpcGVmaWxlID0gYmJfdmFyc1snRklMRSddCisgICAgICAgIHNyY191cmkgPSBiYl92YXJzWydTUkNfVVJJJ10KKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignZ2l0Oi8vJywgc3JjX3VyaSwgJ1RoaXMgdGVzdCBleHBlY3RzIHRoZSAlcyByZWNpcGUgdG8gTk9UIGJlIGEgZ2l0IHJlY2lwZScgJSB0ZXN0cmVjaXBlKQorICAgICAgICBzZWxmLl9jaGVja19yZXBvX3N0YXR1cyhvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIFtdKQorICAgICAgICAjIEZpcnN0LCBtb2RpZnkgYSByZWNpcGUKKyAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCisgICAgICAgICMgKGRvbid0IGJvdGhlciB3aXRoIGNsZWFuaW5nIHRoZSByZWNpcGUgb24gdGVhcmRvd24sIHdlIHdvbid0IGJlIGJ1aWxkaW5nIGl0KQorICAgICAgICAjIFdlIGRvbid0IHVzZSAteCBoZXJlIHNvIHRoYXQgd2UgdGVzdCB0aGUgYmVoYXZpb3VyIG9mIGRldnRvb2wgbW9kaWZ5IHdpdGhvdXQgaXQKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIG1vZGlmeSAlcyAlcycgJSAodGVzdHJlY2lwZSwgdGVtcGRpcikpCisgICAgICAgICMgQ2hlY2sgZ2l0IHJlcG8KKyAgICAgICAgc2VsZi5fY2hlY2tfc3JjX3JlcG8odGVtcGRpcikKKyAgICAgICAgIyBBZGQgYSBjb3VwbGUgb2YgY29tbWl0cworICAgICAgICAjIEZJWE1FOiB0aGlzIG9ubHkgdGVzdHMgYWRkaW5nLCBuZWVkIHRvIGFsc28gdGVzdCB1cGRhdGUgYW5kIHJlbW92ZQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2VjaG8gIkFkZGl0aW9uYWwgbGluZSIgPj4gUkVBRE1FJywgY3dkPXRlbXBkaXIpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IGNvbW1pdCAtYSAtbSAiQ2hhbmdlIHRoZSBSRUFETUUiJywgY3dkPXRlbXBkaXIpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZWNobyAiQSBuZXcgZmlsZSIgPiBkZXZ0b29sLW5ldy1maWxlJywgY3dkPXRlbXBkaXIpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IGFkZCBkZXZ0b29sLW5ldy1maWxlJywgY3dkPXRlbXBkaXIpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IGNvbW1pdCAtbSAiQWRkIGEgbmV3IGZpbGUiJywgY3dkPXRlbXBkaXIpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2NkICVzOyBybSAlcy8qLnBhdGNoOyBnaXQgY2hlY2tvdXQgJXMgJXMnICUgKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSwgdGVzdHJlY2lwZSwgdGVzdHJlY2lwZSwgb3MucGF0aC5iYXNlbmFtZShyZWNpcGVmaWxlKSkpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCB1cGRhdGUtcmVjaXBlICVzJyAlIHRlc3RyZWNpcGUpCisgICAgICAgIGV4cGVjdGVkX3N0YXR1cyA9IFsoJyBNJywgJy4qLyVzJCcgJSBvcy5wYXRoLmJhc2VuYW1lKHJlY2lwZWZpbGUpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnPz8nLCAnLiovMDAwMS1DaGFuZ2UtdGhlLVJFQURNRS5wYXRjaCQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnPz8nLCAnLiovMDAwMi1BZGQtYS1uZXctZmlsZS5wYXRjaCQnKV0KKyAgICAgICAgc2VsZi5fY2hlY2tfcmVwb19zdGF0dXMob3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLCBleHBlY3RlZF9zdGF0dXMpCisKKyAgICBAT0VUZXN0SUQoMTE3MikKKyAgICBkZWYgdGVzdF9kZXZ0b29sX3VwZGF0ZV9yZWNpcGVfZ2l0KHNlbGYpOgorICAgICAgICAjIENoZWNrIHByZWNvbmRpdGlvbnMKKyAgICAgICAgdGVzdHJlY2lwZSA9ICdtdGQtdXRpbHMnCisgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ0ZJTEUnLCAnU1JDX1VSSSddLCB0ZXN0cmVjaXBlKQorICAgICAgICByZWNpcGVmaWxlID0gYmJfdmFyc1snRklMRSddCisgICAgICAgIHNyY191cmkgPSBiYl92YXJzWydTUkNfVVJJJ10KKyAgICAgICAgc2VsZi5hc3NlcnRJbignZ2l0Oi8vJywgc3JjX3VyaSwgJ1RoaXMgdGVzdCBleHBlY3RzIHRoZSAlcyByZWNpcGUgdG8gYmUgYSBnaXQgcmVjaXBlJyAlIHRlc3RyZWNpcGUpCisgICAgICAgIHBhdGNoZXMgPSBbXQorICAgICAgICBmb3IgZW50cnkgaW4gc3JjX3VyaS5zcGxpdCgpOgorICAgICAgICAgICAgaWYgZW50cnkuc3RhcnRzd2l0aCgnZmlsZTovLycpIGFuZCBlbnRyeS5lbmRzd2l0aCgnLnBhdGNoJyk6CisgICAgICAgICAgICAgICAgcGF0Y2hlcy5hcHBlbmQoZW50cnlbNzpdLnNwbGl0KCc7JylbMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4ocGF0Y2hlcyksIDAsICdUaGUgJXMgcmVjaXBlIGRvZXMgbm90IGFwcGVhciB0byBjb250YWluIGFueSBwYXRjaGVzLCBzbyB0aGlzIHRlc3Qgd2lsbCBub3QgYmUgZWZmZWN0aXZlJyAlIHRlc3RyZWNpcGUpCisgICAgICAgIHNlbGYuX2NoZWNrX3JlcG9fc3RhdHVzKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSwgW10pCisgICAgICAgICMgRmlyc3QsIG1vZGlmeSBhIHJlY2lwZQorICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKKyAgICAgICAgIyAoZG9uJ3QgYm90aGVyIHdpdGggY2xlYW5pbmcgdGhlIHJlY2lwZSBvbiB0ZWFyZG93biwgd2Ugd29uJ3QgYmUgYnVpbGRpbmcgaXQpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBtb2RpZnkgJXMgLXggJXMnICUgKHRlc3RyZWNpcGUsIHRlbXBkaXIpKQorICAgICAgICAjIENoZWNrIGdpdCByZXBvCisgICAgICAgIHNlbGYuX2NoZWNrX3NyY19yZXBvKHRlbXBkaXIpCisgICAgICAgICMgQWRkIGEgY291cGxlIG9mIGNvbW1pdHMKKyAgICAgICAgIyBGSVhNRTogdGhpcyBvbmx5IHRlc3RzIGFkZGluZywgbmVlZCB0byBhbHNvIHRlc3QgdXBkYXRlIGFuZCByZW1vdmUKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdlY2hvICIjIEFkZGl0aW9uYWwgbGluZSIgPj4gTWFrZWZpbGUuYW0nLCBjd2Q9dGVtcGRpcikKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgY29tbWl0IC1hIC1tICJDaGFuZ2UgdGhlIE1ha2VmaWxlIicsIGN3ZD10ZW1wZGlyKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2VjaG8gIkEgbmV3IGZpbGUiID4gZGV2dG9vbC1uZXctZmlsZScsIGN3ZD10ZW1wZGlyKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBhZGQgZGV2dG9vbC1uZXctZmlsZScsIGN3ZD10ZW1wZGlyKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBjb21taXQgLW0gIkFkZCBhIG5ldyBmaWxlIicsIGN3ZD10ZW1wZGlyKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdjZCAlczsgcm0gLXJmICVzOyBnaXQgY2hlY2tvdXQgJXMgJXMnICUgKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSwgdGVzdHJlY2lwZSwgdGVzdHJlY2lwZSwgb3MucGF0aC5iYXNlbmFtZShyZWNpcGVmaWxlKSkpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCB1cGRhdGUtcmVjaXBlIC1tIHNyY3JldiAlcycgJSB0ZXN0cmVjaXBlKQorICAgICAgICBleHBlY3RlZF9zdGF0dXMgPSBbKCcgTScsICcuKi8lcyQnICUgb3MucGF0aC5iYXNlbmFtZShyZWNpcGVmaWxlKSldICsgXAorICAgICAgICAgICAgICAgICAgICAgICAgICBbKCcgRCcsICcuKi8lcyQnICUgcGF0Y2gpIGZvciBwYXRjaCBpbiBwYXRjaGVzXQorICAgICAgICBzZWxmLl9jaGVja19yZXBvX3N0YXR1cyhvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIGV4cGVjdGVkX3N0YXR1cykKKworICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBkaWZmICVzJyAlIG9zLnBhdGguYmFzZW5hbWUocmVjaXBlZmlsZSksIGN3ZD1vcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSkpCisgICAgICAgIGFkZGxpbmVzID0gWydTUkNSRVYgPSAiLioiJywgJ1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LmluZnJhZGVhZC5vcmcvbXRkLXV0aWxzLmdpdCInXQorICAgICAgICBzcmN1cmlsaW5lcyA9IHNyY191cmkuc3BsaXQoKQorICAgICAgICBzcmN1cmlsaW5lc1swXSA9ICdTUkNfVVJJID0gIicgKyBzcmN1cmlsaW5lc1swXQorICAgICAgICBzcmN1cmlsaW5lcy5hcHBlbmQoJyInKQorICAgICAgICByZW1vdmVsaW5lcyA9IFsnU1JDUkVWID0gIi4qIiddICsgc3JjdXJpbGluZXMKKyAgICAgICAgZm9yIGxpbmUgaW4gcmVzdWx0Lm91dHB1dC5zcGxpdGxpbmVzKCk6CisgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJysrKycpIG9yIGxpbmUuc3RhcnRzd2l0aCgnLS0tJyk6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGVsaWYgbGluZS5zdGFydHN3aXRoKCcrJyk6CisgICAgICAgICAgICAgICAgbWF0Y2hlZCA9IEZhbHNlCisgICAgICAgICAgICAgICAgZm9yIGl0ZW0gaW4gYWRkbGluZXM6CisgICAgICAgICAgICAgICAgICAgIGlmIHJlLm1hdGNoKGl0ZW0sIGxpbmVbMTpdLnN0cmlwKCkpOgorICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGNoZWQsICdVbmV4cGVjdGVkIGRpZmYgYWRkIGxpbmU6ICVzJyAlIGxpbmUpCisgICAgICAgICAgICBlbGlmIGxpbmUuc3RhcnRzd2l0aCgnLScpOgorICAgICAgICAgICAgICAgIG1hdGNoZWQgPSBGYWxzZQorICAgICAgICAgICAgICAgIGZvciBpdGVtIGluIHJlbW92ZWxpbmVzOgorICAgICAgICAgICAgICAgICAgICBpZiByZS5tYXRjaChpdGVtLCBsaW5lWzE6XS5zdHJpcCgpKToKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRjaGVkLCAnVW5leHBlY3RlZCBkaWZmIHJlbW92ZSBsaW5lOiAlcycgJSBsaW5lKQorICAgICAgICAjIE5vdyB0cnkgd2l0aCBhdXRvIG1vZGUKKyAgICAgICAgcnVuQ21kKCdjZCAlczsgZ2l0IGNoZWNrb3V0ICVzICVzJyAlIChvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIHRlc3RyZWNpcGUsIG9zLnBhdGguYmFzZW5hbWUocmVjaXBlZmlsZSkpKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgdXBkYXRlLXJlY2lwZSAlcycgJSB0ZXN0cmVjaXBlKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCByZXYtcGFyc2UgLS1zaG93LXRvcGxldmVsJywgY3dkPW9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSkKKyAgICAgICAgdG9wbGV2ZWxkaXIgPSByZXN1bHQub3V0cHV0LnN0cmlwKCkKKyAgICAgICAgcmVscGF0Y2hwYXRoID0gb3MucGF0aC5qb2luKG9zLnBhdGgucmVscGF0aChvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIHRvcGxldmVsZGlyKSwgdGVzdHJlY2lwZSkKKyAgICAgICAgZXhwZWN0ZWRfc3RhdHVzID0gWygnIE0nLCBvcy5wYXRoLnJlbHBhdGgocmVjaXBlZmlsZSwgdG9wbGV2ZWxkaXIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnPz8nLCAnJXMvMDAwMS1DaGFuZ2UtdGhlLU1ha2VmaWxlLnBhdGNoJyAlIHJlbHBhdGNocGF0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJz8/JywgJyVzLzAwMDItQWRkLWEtbmV3LWZpbGUucGF0Y2gnICUgcmVscGF0Y2hwYXRoKV0KKyAgICAgICAgc2VsZi5fY2hlY2tfcmVwb19zdGF0dXMob3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLCBleHBlY3RlZF9zdGF0dXMpCisKKyAgICBAT0VUZXN0SUQoMTE3MCkKKyAgICBkZWYgdGVzdF9kZXZ0b29sX3VwZGF0ZV9yZWNpcGVfYXBwZW5kKHNlbGYpOgorICAgICAgICAjIENoZWNrIHByZWNvbmRpdGlvbnMKKyAgICAgICAgdGVzdHJlY2lwZSA9ICdtZGFkbScKKyAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnRklMRScsICdTUkNfVVJJJ10sIHRlc3RyZWNpcGUpCisgICAgICAgIHJlY2lwZWZpbGUgPSBiYl92YXJzWydGSUxFJ10KKyAgICAgICAgc3JjX3VyaSA9IGJiX3ZhcnNbJ1NSQ19VUkknXQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdnaXQ6Ly8nLCBzcmNfdXJpLCAnVGhpcyB0ZXN0IGV4cGVjdHMgdGhlICVzIHJlY2lwZSB0byBOT1QgYmUgYSBnaXQgcmVjaXBlJyAlIHRlc3RyZWNpcGUpCisgICAgICAgIHNlbGYuX2NoZWNrX3JlcG9fc3RhdHVzKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSwgW10pCisgICAgICAgICMgRmlyc3QsIG1vZGlmeSBhIHJlY2lwZQorICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCisgICAgICAgIHRlbXBzcmNkaXIgPSBvcy5wYXRoLmpvaW4odGVtcGRpciwgJ3NvdXJjZScpCisgICAgICAgIHRlbXBsYXllcmRpciA9IG9zLnBhdGguam9pbih0ZW1wZGlyLCAnbGF5ZXInKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCisgICAgICAgICMgKGRvbid0IGJvdGhlciB3aXRoIGNsZWFuaW5nIHRoZSByZWNpcGUgb24gdGVhcmRvd24sIHdlIHdvbid0IGJlIGJ1aWxkaW5nIGl0KQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgbW9kaWZ5ICVzIC14ICVzJyAlICh0ZXN0cmVjaXBlLCB0ZW1wc3JjZGlyKSkKKyAgICAgICAgIyBDaGVjayBnaXQgcmVwbworICAgICAgICBzZWxmLl9jaGVja19zcmNfcmVwbyh0ZW1wc3JjZGlyKQorICAgICAgICAjIEFkZCBhIGNvbW1pdAorICAgICAgICByZXN1bHQgPSBydW5DbWQoInNlZCAncyFcXCgjZGVmaW5lIFZFUlNJT05cXFcqXCJbXlwiXSpcXClcIiFcXDEtY3VzdG9tXCIhJyAtaSBSZWFkTWUuYyIsIGN3ZD10ZW1wc3JjZGlyKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBjb21taXQgLWEgLW0gIkFkZCBvdXIgY3VzdG9tIHZlcnNpb24iJywgY3dkPXRlbXBzcmNkaXIpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2NkICVzOyBybSAtZiAlcy8qLnBhdGNoOyBnaXQgY2hlY2tvdXQgLicgJSAob3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLCB0ZXN0cmVjaXBlKSkKKyAgICAgICAgIyBDcmVhdGUgYSB0ZW1wb3JhcnkgbGF5ZXIgYW5kIGFkZCBpdCB0byBiYmxheWVycy5jb25mCisgICAgICAgIHNlbGYuX2NyZWF0ZV90ZW1wX2xheWVyKHRlbXBsYXllcmRpciwgVHJ1ZSwgJ3NlbGZ0ZXN0dXBkYXRlcmVjaXBlJykKKyAgICAgICAgIyBDcmVhdGUgdGhlIGJiYXBwZW5kCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCB1cGRhdGUtcmVjaXBlICVzIC1hICVzJyAlICh0ZXN0cmVjaXBlLCB0ZW1wbGF5ZXJkaXIpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdXQVJOSU5HOicsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgICMgQ2hlY2sgcmVjaXBlIGlzIHN0aWxsIGNsZWFuCisgICAgICAgIHNlbGYuX2NoZWNrX3JlcG9fc3RhdHVzKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSwgW10pCisgICAgICAgICMgQ2hlY2sgYmJhcHBlbmQgd2FzIGNyZWF0ZWQKKyAgICAgICAgc3BsaXRwYXRoID0gb3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLnNwbGl0KG9zLnNlcCkKKyAgICAgICAgYXBwZW5kZGlyID0gb3MucGF0aC5qb2luKHRlbXBsYXllcmRpciwgc3BsaXRwYXRoWy0yXSwgc3BsaXRwYXRoWy0xXSkKKyAgICAgICAgYmJhcHBlbmRmaWxlID0gc2VsZi5fY2hlY2tfYmJhcHBlbmQodGVzdHJlY2lwZSwgcmVjaXBlZmlsZSwgYXBwZW5kZGlyKQorICAgICAgICBwYXRjaGZpbGUgPSBvcy5wYXRoLmpvaW4oYXBwZW5kZGlyLCB0ZXN0cmVjaXBlLCAnMDAwMS1BZGQtb3VyLWN1c3RvbS12ZXJzaW9uLnBhdGNoJykKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMocGF0Y2hmaWxlLCAnUGF0Y2ggZmlsZSBub3QgY3JlYXRlZCcpCisKKyAgICAgICAgIyBDaGVjayBiYmFwcGVuZCBjb250ZW50cworICAgICAgICBleHBlY3RlZGxpbmVzID0gWydGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLUFkZC1vdXItY3VzdG9tLXZlcnNpb24ucGF0Y2giXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdcbiddCisgICAgICAgIHdpdGggb3BlbihiYmFwcGVuZGZpbGUsICdyJykgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRsaW5lcywgZi5yZWFkbGluZXMoKSkKKworICAgICAgICAjIENoZWNrIHdlIGNhbiBydW4gaXQgYWdhaW4gYW5kIGJiYXBwZW5kIGlzbid0IG1vZGlmaWVkCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCB1cGRhdGUtcmVjaXBlICVzIC1hICVzJyAlICh0ZXN0cmVjaXBlLCB0ZW1wbGF5ZXJkaXIpKQorICAgICAgICB3aXRoIG9wZW4oYmJhcHBlbmRmaWxlLCAncicpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkbGluZXMsIGYucmVhZGxpbmVzKCkpCisgICAgICAgICMgRHJvcCBuZXcgY29tbWl0IGFuZCBjaGVjayBwYXRjaCBnZXRzIGRlbGV0ZWQKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgcmVzZXQgSEVBRF4nLCBjd2Q9dGVtcHNyY2RpcikKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHVwZGF0ZS1yZWNpcGUgJXMgLWEgJXMnICUgKHRlc3RyZWNpcGUsIHRlbXBsYXllcmRpcikpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXhpc3RzKHBhdGNoZmlsZSwgJ1BhdGNoIGZpbGUgbm90IGRlbGV0ZWQnKQorICAgICAgICBleHBlY3RlZGxpbmVzMiA9IFsnRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IlxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nXQorICAgICAgICB3aXRoIG9wZW4oYmJhcHBlbmRmaWxlLCAncicpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkbGluZXMyLCBmLnJlYWRsaW5lcygpKQorICAgICAgICAjIFB1dCBjb21taXQgYmFjayBhbmQgY2hlY2sgd2UgY2FuIHJ1biBpdCBpZiBsYXllciBpc24ndCBpbiBiYmxheWVycy5jb25mCisgICAgICAgIG9zLnJlbW92ZShiYmFwcGVuZGZpbGUpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IGNvbW1pdCAtYSAtbSAiQWRkIG91ciBjdXN0b20gdmVyc2lvbiInLCBjd2Q9dGVtcHNyY2RpcikKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgJXMnICUgdGVtcGxheWVyZGlyLCBjd2Q9c2VsZi5idWlsZGRpcikKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHVwZGF0ZS1yZWNpcGUgJXMgLWEgJXMnICUgKHRlc3RyZWNpcGUsIHRlbXBsYXllcmRpcikpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ1dBUk5JTkc6IFNwZWNpZmllZCBsYXllciBpcyBub3QgY3VycmVudGx5IGVuYWJsZWQgaW4gYmJsYXllcnMuY29uZicsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKHBhdGNoZmlsZSwgJ1BhdGNoIGZpbGUgbm90IGNyZWF0ZWQgKHdpdGggZGlzYWJsZWQgbGF5ZXIpJykKKyAgICAgICAgd2l0aCBvcGVuKGJiYXBwZW5kZmlsZSwgJ3InKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZGxpbmVzLCBmLnJlYWRsaW5lcygpKQorICAgICAgICAjIERlbGV0aW5nIGlzbid0IGV4cGVjdGVkIHRvIHdvcmsgdW5kZXIgdGhlc2UgY2lyY3Vtc3RhbmNlcworCisgICAgQE9FVGVzdElEKDExNzEpCisgICAgZGVmIHRlc3RfZGV2dG9vbF91cGRhdGVfcmVjaXBlX2FwcGVuZF9naXQoc2VsZik6CisgICAgICAgICMgQ2hlY2sgcHJlY29uZGl0aW9ucworICAgICAgICB0ZXN0cmVjaXBlID0gJ210ZC11dGlscycKKyAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnRklMRScsICdTUkNfVVJJJ10sIHRlc3RyZWNpcGUpCisgICAgICAgIHJlY2lwZWZpbGUgPSBiYl92YXJzWydGSUxFJ10KKyAgICAgICAgc3JjX3VyaSA9IGJiX3ZhcnNbJ1NSQ19VUkknXQorICAgICAgICBzZWxmLmFzc2VydEluKCdnaXQ6Ly8nLCBzcmNfdXJpLCAnVGhpcyB0ZXN0IGV4cGVjdHMgdGhlICVzIHJlY2lwZSB0byBiZSBhIGdpdCByZWNpcGUnICUgdGVzdHJlY2lwZSkKKyAgICAgICAgZm9yIGVudHJ5IGluIHNyY191cmkuc3BsaXQoKToKKyAgICAgICAgICAgIGlmIGVudHJ5LnN0YXJ0c3dpdGgoJ2dpdDovLycpOgorICAgICAgICAgICAgICAgIGdpdF91cmkgPSBlbnRyeQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIHNlbGYuX2NoZWNrX3JlcG9fc3RhdHVzKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSwgW10pCisgICAgICAgICMgRmlyc3QsIG1vZGlmeSBhIHJlY2lwZQorICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCisgICAgICAgIHRlbXBzcmNkaXIgPSBvcy5wYXRoLmpvaW4odGVtcGRpciwgJ3NvdXJjZScpCisgICAgICAgIHRlbXBsYXllcmRpciA9IG9zLnBhdGguam9pbih0ZW1wZGlyLCAnbGF5ZXInKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCisgICAgICAgICMgKGRvbid0IGJvdGhlciB3aXRoIGNsZWFuaW5nIHRoZSByZWNpcGUgb24gdGVhcmRvd24sIHdlIHdvbid0IGJlIGJ1aWxkaW5nIGl0KQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgbW9kaWZ5ICVzIC14ICVzJyAlICh0ZXN0cmVjaXBlLCB0ZW1wc3JjZGlyKSkKKyAgICAgICAgIyBDaGVjayBnaXQgcmVwbworICAgICAgICBzZWxmLl9jaGVja19zcmNfcmVwbyh0ZW1wc3JjZGlyKQorICAgICAgICAjIEFkZCBhIGNvbW1pdAorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2VjaG8gIiMgQWRkaXRpb25hbCBsaW5lIiA+PiBNYWtlZmlsZS5hbScsIGN3ZD10ZW1wc3JjZGlyKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBjb21taXQgLWEgLW0gIkNoYW5nZSB0aGUgTWFrZWZpbGUiJywgY3dkPXRlbXBzcmNkaXIpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2NkICVzOyBybSAtZiAlcy8qLnBhdGNoOyBnaXQgY2hlY2tvdXQgLicgJSAob3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLCB0ZXN0cmVjaXBlKSkKKyAgICAgICAgIyBDcmVhdGUgYSB0ZW1wb3JhcnkgbGF5ZXIKKyAgICAgICAgb3MubWFrZWRpcnMob3MucGF0aC5qb2luKHRlbXBsYXllcmRpciwgJ2NvbmYnKSkKKyAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbih0ZW1wbGF5ZXJkaXIsICdjb25mJywgJ2xheWVyLmNvbmYnKSwgJ3cnKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSgnQkJQQVRIIC49ICI6JHtMQVlFUkRJUn0iXG4nKQorICAgICAgICAgICAgZi53cml0ZSgnQkJGSUxFUyArPSAiJHtMQVlFUkRJUn0vcmVjaXBlcy0qLyovKi5iYmFwcGVuZCJcbicpCisgICAgICAgICAgICBmLndyaXRlKCdCQkZJTEVfQ09MTEVDVElPTlMgKz0gIm9lc2VsZnRlc3R0ZW1wbGF5ZXIiXG4nKQorICAgICAgICAgICAgZi53cml0ZSgnQkJGSUxFX1BBVFRFUk5fb2VzZWxmdGVzdHRlbXBsYXllciA9ICJeJHtMQVlFUkRJUn0vIlxuJykKKyAgICAgICAgICAgIGYud3JpdGUoJ0JCRklMRV9QUklPUklUWV9vZXNlbGZ0ZXN0dGVtcGxheWVyID0gIjk5OSJcbicpCisgICAgICAgICAgICBmLndyaXRlKCdCQkZJTEVfUEFUVEVSTl9JR05PUkVfRU1QVFlfb2VzZWxmdGVzdHRlbXBsYXllciA9ICIxIlxuJykKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICVzIHx8IHRydWUnICUgdGVtcGxheWVyZGlyKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIGFkZC1sYXllciAlcycgJSB0ZW1wbGF5ZXJkaXIsIGN3ZD1zZWxmLmJ1aWxkZGlyKQorICAgICAgICAjIENyZWF0ZSB0aGUgYmJhcHBlbmQKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHVwZGF0ZS1yZWNpcGUgLW0gc3JjcmV2ICVzIC1hICVzJyAlICh0ZXN0cmVjaXBlLCB0ZW1wbGF5ZXJkaXIpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdXQVJOSU5HOicsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgICMgQ2hlY2sgcmVjaXBlIGlzIHN0aWxsIGNsZWFuCisgICAgICAgIHNlbGYuX2NoZWNrX3JlcG9fc3RhdHVzKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSwgW10pCisgICAgICAgICMgQ2hlY2sgYmJhcHBlbmQgd2FzIGNyZWF0ZWQKKyAgICAgICAgc3BsaXRwYXRoID0gb3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLnNwbGl0KG9zLnNlcCkKKyAgICAgICAgYXBwZW5kZGlyID0gb3MucGF0aC5qb2luKHRlbXBsYXllcmRpciwgc3BsaXRwYXRoWy0yXSwgc3BsaXRwYXRoWy0xXSkKKyAgICAgICAgYmJhcHBlbmRmaWxlID0gc2VsZi5fY2hlY2tfYmJhcHBlbmQodGVzdHJlY2lwZSwgcmVjaXBlZmlsZSwgYXBwZW5kZGlyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEV4aXN0cyhvcy5wYXRoLmpvaW4oYXBwZW5kZGlyLCB0ZXN0cmVjaXBlKSwgJ1BhdGNoIGRpcmVjdG9yeSBzaG91bGQgbm90IGJlIGNyZWF0ZWQnKQorCisgICAgICAgICMgQ2hlY2sgYmJhcHBlbmQgY29udGVudHMKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgcmV2LXBhcnNlIEhFQUQnLCBjd2Q9dGVtcHNyY2RpcikKKyAgICAgICAgZXhwZWN0ZWRsaW5lcyA9IHNldChbJ1NSQ1JFViA9ICIlcyJcbicgJSByZXN1bHQub3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU1JDX1VSSSA9ICIlcyJcbicgJSBnaXRfdXJpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nXSkKKyAgICAgICAgd2l0aCBvcGVuKGJiYXBwZW5kZmlsZSwgJ3InKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZGxpbmVzLCBzZXQoZi5yZWFkbGluZXMoKSkpCisKKyAgICAgICAgIyBDaGVjayB3ZSBjYW4gcnVuIGl0IGFnYWluIGFuZCBiYmFwcGVuZCBpc24ndCBtb2RpZmllZAorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgdXBkYXRlLXJlY2lwZSAtbSBzcmNyZXYgJXMgLWEgJXMnICUgKHRlc3RyZWNpcGUsIHRlbXBsYXllcmRpcikpCisgICAgICAgIHdpdGggb3BlbihiYmFwcGVuZGZpbGUsICdyJykgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRsaW5lcywgc2V0KGYucmVhZGxpbmVzKCkpKQorICAgICAgICAjIERyb3AgbmV3IGNvbW1pdCBhbmQgY2hlY2sgU1JDUkVWIGNoYW5nZXMKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgcmVzZXQgSEVBRF4nLCBjd2Q9dGVtcHNyY2RpcikKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHVwZGF0ZS1yZWNpcGUgLW0gc3JjcmV2ICVzIC1hICVzJyAlICh0ZXN0cmVjaXBlLCB0ZW1wbGF5ZXJkaXIpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEV4aXN0cyhvcy5wYXRoLmpvaW4oYXBwZW5kZGlyLCB0ZXN0cmVjaXBlKSwgJ1BhdGNoIGRpcmVjdG9yeSBzaG91bGQgbm90IGJlIGNyZWF0ZWQnKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCByZXYtcGFyc2UgSEVBRCcsIGN3ZD10ZW1wc3JjZGlyKQorICAgICAgICBleHBlY3RlZGxpbmVzID0gc2V0KFsnU1JDUkVWID0gIiVzIlxuJyAlIHJlc3VsdC5vdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdTUkNfVVJJID0gIiVzIlxuJyAlIGdpdF91cmksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcbiddKQorICAgICAgICB3aXRoIG9wZW4oYmJhcHBlbmRmaWxlLCAncicpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkbGluZXMsIHNldChmLnJlYWRsaW5lcygpKSkKKyAgICAgICAgIyBQdXQgY29tbWl0IGJhY2sgYW5kIGNoZWNrIHdlIGNhbiBydW4gaXQgaWYgbGF5ZXIgaXNuJ3QgaW4gYmJsYXllcnMuY29uZgorICAgICAgICBvcy5yZW1vdmUoYmJhcHBlbmRmaWxlKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBjb21taXQgLWEgLW0gIkNoYW5nZSB0aGUgTWFrZWZpbGUiJywgY3dkPXRlbXBzcmNkaXIpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICVzJyAlIHRlbXBsYXllcmRpciwgY3dkPXNlbGYuYnVpbGRkaXIpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCB1cGRhdGUtcmVjaXBlIC1tIHNyY3JldiAlcyAtYSAlcycgJSAodGVzdHJlY2lwZSwgdGVtcGxheWVyZGlyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignV0FSTklORzogU3BlY2lmaWVkIGxheWVyIGlzIG5vdCBjdXJyZW50bHkgZW5hYmxlZCBpbiBiYmxheWVycy5jb25mJywgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFeGlzdHMob3MucGF0aC5qb2luKGFwcGVuZGRpciwgdGVzdHJlY2lwZSksICdQYXRjaCBkaXJlY3Rvcnkgc2hvdWxkIG5vdCBiZSBjcmVhdGVkJykKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgcmV2LXBhcnNlIEhFQUQnLCBjd2Q9dGVtcHNyY2RpcikKKyAgICAgICAgZXhwZWN0ZWRsaW5lcyA9IHNldChbJ1NSQ1JFViA9ICIlcyJcbicgJSByZXN1bHQub3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU1JDX1VSSSA9ICIlcyJcbicgJSBnaXRfdXJpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nXSkKKyAgICAgICAgd2l0aCBvcGVuKGJiYXBwZW5kZmlsZSwgJ3InKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZGxpbmVzLCBzZXQoZi5yZWFkbGluZXMoKSkpCisgICAgICAgICMgRGVsZXRpbmcgaXNuJ3QgZXhwZWN0ZWQgdG8gd29yayB1bmRlciB0aGVzZSBjaXJjdW1zdGFuY2VzCisKKyAgICBAT0VUZXN0SUQoMTM3MCkKKyAgICBkZWYgdGVzdF9kZXZ0b29sX3VwZGF0ZV9yZWNpcGVfbG9jYWxfZmlsZXMoc2VsZik6CisgICAgICAgICIiIkNoZWNrIHRoYXQgbG9jYWwgc291cmNlIGZpbGVzIGFyZSBjb3BpZWQgb3ZlciBpbnN0ZWFkIG9mIHBhdGNoZWQiIiIKKyAgICAgICAgdGVzdHJlY2lwZSA9ICdtYWtlZGV2cycKKyAgICAgICAgcmVjaXBlZmlsZSA9IGdldF9iYl92YXIoJ0ZJTEUnLCB0ZXN0cmVjaXBlKQorICAgICAgICAjIFNldHVwIHNyY3RyZWUgZm9yIG1vZGlmeWluZyB0aGUgcmVjaXBlCisgICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQorICAgICAgICAjIChkb24ndCBib3RoZXIgd2l0aCBjbGVhbmluZyB0aGUgcmVjaXBlIG9uIHRlYXJkb3duLCB3ZSB3b24ndCBiZQorICAgICAgICAjIGJ1aWxkaW5nIGl0KQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgbW9kaWZ5ICVzIC14ICVzJyAlICh0ZXN0cmVjaXBlLCB0ZW1wZGlyKSkKKyAgICAgICAgIyBDaGVjayBnaXQgcmVwbworICAgICAgICBzZWxmLl9jaGVja19zcmNfcmVwbyh0ZW1wZGlyKQorICAgICAgICAjIFRyeSBidWlsZGluZyBqdXN0IHRvIGVuc3VyZSB3ZSBoYXZlbid0IGJyb2tlbiB0aGF0CisgICAgICAgIGJpdGJha2UoIiVzIiAlIHRlc3RyZWNpcGUpCisgICAgICAgICMgRWRpdCAvIGNvbW1pdCBsb2NhbCBzb3VyY2UKKyAgICAgICAgcnVuQ21kKCdlY2hvICIvKiBGb29iYXIgKi8iID4+IG9lLWxvY2FsLWZpbGVzL21ha2VkZXZzLmMnLCBjd2Q9dGVtcGRpcikKKyAgICAgICAgcnVuQ21kKCdlY2hvICJGb28iID4gb2UtbG9jYWwtZmlsZXMvbmV3LWxvY2FsJywgY3dkPXRlbXBkaXIpCisgICAgICAgIHJ1bkNtZCgnZWNobyAiQmFyIiA+IG5ldy1maWxlJywgY3dkPXRlbXBkaXIpCisgICAgICAgIHJ1bkNtZCgnZ2l0IGFkZCBuZXctZmlsZScsIGN3ZD10ZW1wZGlyKQorICAgICAgICBydW5DbWQoJ2dpdCBjb21taXQgLW0gIkFkZCBuZXcgZmlsZSInLCBjd2Q9dGVtcGRpcikKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignY2QgJXM7IGdpdCBjbGVhbiAtZmQgLjsgZ2l0IGNoZWNrb3V0IC4nICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSkpCisgICAgICAgIHJ1bkNtZCgnZGV2dG9vbCB1cGRhdGUtcmVjaXBlICVzJyAlIHRlc3RyZWNpcGUpCisgICAgICAgIGV4cGVjdGVkX3N0YXR1cyA9IFsoJyBNJywgJy4qLyVzJCcgJSBvcy5wYXRoLmJhc2VuYW1lKHJlY2lwZWZpbGUpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnIE0nLCAnLiovbWFrZWRldnMvbWFrZWRldnMuYyQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnPz8nLCAnLiovbWFrZWRldnMvbmV3LWxvY2FsJCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCc/PycsICcuKi9tYWtlZGV2cy8wMDAxLUFkZC1uZXctZmlsZS5wYXRjaCQnKV0KKyAgICAgICAgc2VsZi5fY2hlY2tfcmVwb19zdGF0dXMob3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLCBleHBlY3RlZF9zdGF0dXMpCisKKyAgICBAT0VUZXN0SUQoMTM3MSkKKyAgICBkZWYgdGVzdF9kZXZ0b29sX3VwZGF0ZV9yZWNpcGVfbG9jYWxfZmlsZXNfMihzZWxmKToKKyAgICAgICAgIiIiQ2hlY2sgbG9jYWwgc291cmNlIGZpbGVzIHN1cHBvcnQgd2hlbiBvZS1sb2NhbC1maWxlcyBpcyBpbiBHaXQiIiIKKyAgICAgICAgdGVzdHJlY2lwZSA9ICdsem8nCisgICAgICAgIHJlY2lwZWZpbGUgPSBnZXRfYmJfdmFyKCdGSUxFJywgdGVzdHJlY2lwZSkKKyAgICAgICAgIyBTZXR1cCBzcmN0cmVlIGZvciBtb2RpZnlpbmcgdGhlIHJlY2lwZQorICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIG1vZGlmeSAlcyAteCAlcycgJSAodGVzdHJlY2lwZSwgdGVtcGRpcikpCisgICAgICAgICMgQ2hlY2sgZ2l0IHJlcG8KKyAgICAgICAgc2VsZi5fY2hlY2tfc3JjX3JlcG8odGVtcGRpcikKKyAgICAgICAgIyBBZGQgb2UtbG9jYWwtZmlsZXMgdG8gR2l0CisgICAgICAgIHJ1bkNtZCgncm0gb2UtbG9jYWwtZmlsZXMvLmdpdGlnbm9yZScsIGN3ZD10ZW1wZGlyKQorICAgICAgICBydW5DbWQoJ2dpdCBhZGQgb2UtbG9jYWwtZmlsZXMnLCBjd2Q9dGVtcGRpcikKKyAgICAgICAgcnVuQ21kKCdnaXQgY29tbWl0IC1tICJBZGQgbG9jYWwgc291cmNlcyInLCBjd2Q9dGVtcGRpcikKKyAgICAgICAgIyBFZGl0IC8gY29tbWl0IGxvY2FsIHNvdXJjZXMKKyAgICAgICAgcnVuQ21kKCdlY2hvICIjIEZvb2JhciIgPj4gb2UtbG9jYWwtZmlsZXMvYWNpbmNsdWRlLm00JywgY3dkPXRlbXBkaXIpCisgICAgICAgIHJ1bkNtZCgnZ2l0IGNvbW1pdCAtYW0gIkVkaXQgZXhpc3RpbmcgZmlsZSInLCBjd2Q9dGVtcGRpcikKKyAgICAgICAgcnVuQ21kKCdnaXQgcm0gb2UtbG9jYWwtZmlsZXMvcnVuLXB0ZXN0JywgY3dkPXRlbXBkaXIpCisgICAgICAgIHJ1bkNtZCgnZ2l0IGNvbW1pdCAtbSJSZW1vdmUgZmlsZSInLCBjd2Q9dGVtcGRpcikKKyAgICAgICAgcnVuQ21kKCdlY2hvICJGb28iID4gb2UtbG9jYWwtZmlsZXMvbmV3LWxvY2FsJywgY3dkPXRlbXBkaXIpCisgICAgICAgIHJ1bkNtZCgnZ2l0IGFkZCBvZS1sb2NhbC1maWxlcy9uZXctbG9jYWwnLCBjd2Q9dGVtcGRpcikKKyAgICAgICAgcnVuQ21kKCdnaXQgY29tbWl0IC1tICJBZGQgbmV3IGxvY2FsIGZpbGUiJywgY3dkPXRlbXBkaXIpCisgICAgICAgIHJ1bkNtZCgnZWNobyAiR2FyIiA+IG5ldy1maWxlJywgY3dkPXRlbXBkaXIpCisgICAgICAgIHJ1bkNtZCgnZ2l0IGFkZCBuZXctZmlsZScsIGN3ZD10ZW1wZGlyKQorICAgICAgICBydW5DbWQoJ2dpdCBjb21taXQgLW0gIkFkZCBuZXcgZmlsZSInLCBjd2Q9dGVtcGRpcikKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignY2QgJXM7IGdpdCBjbGVhbiAtZmQgLjsgZ2l0IGNoZWNrb3V0IC4nICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSkpCisgICAgICAgICMgQ2hlY2tvdXQgdW5tb2RpZmllZCBmaWxlIHRvIHdvcmtpbmcgY29weSAtPiBkZXZ0b29sIHNob3VsZCBzdGlsbCBwaWNrCisgICAgICAgICMgdGhlIG1vZGlmaWVkIHZlcnNpb24gZnJvbSBIRUFECisgICAgICAgIHJ1bkNtZCgnZ2l0IGNoZWNrb3V0IEhFQUReIC0tIG9lLWxvY2FsLWZpbGVzL2FjaW5jbHVkZS5tNCcsIGN3ZD10ZW1wZGlyKQorICAgICAgICBydW5DbWQoJ2RldnRvb2wgdXBkYXRlLXJlY2lwZSAlcycgJSB0ZXN0cmVjaXBlKQorICAgICAgICBleHBlY3RlZF9zdGF0dXMgPSBbKCcgTScsICcuKi8lcyQnICUgb3MucGF0aC5iYXNlbmFtZShyZWNpcGVmaWxlKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJyBNJywgJy4qL2FjaW5jbHVkZS5tNCQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnIEQnLCAnLiovcnVuLXB0ZXN0JCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCc/PycsICcuKi9uZXctbG9jYWwkJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJz8/JywgJy4qLzAwMDEtQWRkLW5ldy1maWxlLnBhdGNoJCcpXQorICAgICAgICBzZWxmLl9jaGVja19yZXBvX3N0YXR1cyhvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIGV4cGVjdGVkX3N0YXR1cykKKworICAgIEBPRVRlc3RJRCgxNjI3KQorICAgIGRlZiB0ZXN0X2RldnRvb2xfdXBkYXRlX3JlY2lwZV9sb2NhbF9maWxlc18zKHNlbGYpOgorICAgICAgICAjIEZpcnN0LCBtb2RpZnkgdGhlIHJlY2lwZQorICAgICAgICB0ZXN0cmVjaXBlID0gJ2RldnRvb2wtdGVzdC1sb2NhbG9ubHknCisgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ0ZJTEUnLCAnU1JDX1VSSSddLCB0ZXN0cmVjaXBlKQorICAgICAgICByZWNpcGVmaWxlID0gYmJfdmFyc1snRklMRSddCisgICAgICAgIHNyY191cmkgPSBiYl92YXJzWydTUkNfVVJJJ10KKyAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCisgICAgICAgICMgKGRvbid0IGJvdGhlciB3aXRoIGNsZWFuaW5nIHRoZSByZWNpcGUgb24gdGVhcmRvd24sIHdlIHdvbid0IGJlIGJ1aWxkaW5nIGl0KQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgbW9kaWZ5ICVzJyAlIHRlc3RyZWNpcGUpCisgICAgICAgICMgTW9kaWZ5IG9uZSBmaWxlCisgICAgICAgIHJ1bkNtZCgnZWNobyAiQW5vdGhlciBsaW5lIiA+PiBmaWxlMicsIGN3ZD1vcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdzb3VyY2VzJywgdGVzdHJlY2lwZSwgJ29lLWxvY2FsLWZpbGVzJykpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2NkICVzOyBybSAlcy8qOyBnaXQgY2hlY2tvdXQgJXMgJXMnICUgKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSwgdGVzdHJlY2lwZSwgdGVzdHJlY2lwZSwgb3MucGF0aC5iYXNlbmFtZShyZWNpcGVmaWxlKSkpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCB1cGRhdGUtcmVjaXBlICVzJyAlIHRlc3RyZWNpcGUpCisgICAgICAgIGV4cGVjdGVkX3N0YXR1cyA9IFsoJyBNJywgJy4qLyVzL2ZpbGUyJCcgJSB0ZXN0cmVjaXBlKV0KKyAgICAgICAgc2VsZi5fY2hlY2tfcmVwb19zdGF0dXMob3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLCBleHBlY3RlZF9zdGF0dXMpCisKKyAgICBAT0VUZXN0SUQoMTYyOSkKKyAgICBkZWYgdGVzdF9kZXZ0b29sX3VwZGF0ZV9yZWNpcGVfbG9jYWxfcGF0Y2hfZ3ooc2VsZik6CisgICAgICAgICMgRmlyc3QsIG1vZGlmeSB0aGUgcmVjaXBlCisgICAgICAgIHRlc3RyZWNpcGUgPSAnZGV2dG9vbC10ZXN0LXBhdGNoLWd6JworICAgICAgICBpZiBnZXRfYmJfdmFyKCdESVNUUk8nKSA9PSAncG9reS10aW55JzoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIlRoZSBESVNUUk8gJ3Bva3ktdGlueScgZG9lcyBub3QgcHJvdmlkZSB0aGUgZGVwZW5kZW5jaWVzIG5lZWRlZCBieSAlcyIgJSB0ZXN0cmVjaXBlKQorICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydGSUxFJywgJ1NSQ19VUkknXSwgdGVzdHJlY2lwZSkKKyAgICAgICAgcmVjaXBlZmlsZSA9IGJiX3ZhcnNbJ0ZJTEUnXQorICAgICAgICBzcmNfdXJpID0gYmJfdmFyc1snU1JDX1VSSSddCisgICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQorICAgICAgICAjIChkb24ndCBib3RoZXIgd2l0aCBjbGVhbmluZyB0aGUgcmVjaXBlIG9uIHRlYXJkb3duLCB3ZSB3b24ndCBiZSBidWlsZGluZyBpdCkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIG1vZGlmeSAlcycgJSB0ZXN0cmVjaXBlKQorICAgICAgICAjIE1vZGlmeSBvbmUgZmlsZQorICAgICAgICBzcmN0cmVlID0gb3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnc291cmNlcycsIHRlc3RyZWNpcGUpCisgICAgICAgIHJ1bkNtZCgnZWNobyAiQW5vdGhlciBsaW5lIiA+PiBSRUFETUUnLCBjd2Q9c3JjdHJlZSkKKyAgICAgICAgcnVuQ21kKCdnaXQgY29tbWl0IC1hIC0tYW1lbmQgLS1uby1lZGl0JywgY3dkPXNyY3RyZWUpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2NkICVzOyBybSAlcy8qOyBnaXQgY2hlY2tvdXQgJXMgJXMnICUgKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSwgdGVzdHJlY2lwZSwgdGVzdHJlY2lwZSwgb3MucGF0aC5iYXNlbmFtZShyZWNpcGVmaWxlKSkpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCB1cGRhdGUtcmVjaXBlICVzJyAlIHRlc3RyZWNpcGUpCisgICAgICAgIGV4cGVjdGVkX3N0YXR1cyA9IFsoJyBNJywgJy4qLyVzL3JlYWRtZS5wYXRjaC5neiQnICUgdGVzdHJlY2lwZSldCisgICAgICAgIHNlbGYuX2NoZWNrX3JlcG9fc3RhdHVzKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSwgZXhwZWN0ZWRfc3RhdHVzKQorICAgICAgICBwYXRjaF9neiA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIHRlc3RyZWNpcGUsICdyZWFkbWUucGF0Y2guZ3onKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2ZpbGUgJXMnICUgcGF0Y2hfZ3opCisgICAgICAgIGlmICdnemlwIGNvbXByZXNzZWQgZGF0YScgbm90IGluIHJlc3VsdC5vdXRwdXQ6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ05ldyBwYXRjaCBmaWxlIGlzIG5vdCBnemlwcGVkIC0gZmlsZSByZXBvcnRzOlxuJXMnICUgcmVzdWx0Lm91dHB1dCkKKworICAgIEBPRVRlc3RJRCgxNjI4KQorICAgIGRlZiB0ZXN0X2RldnRvb2xfdXBkYXRlX3JlY2lwZV9sb2NhbF9maWxlc19zdWJkaXIoc2VsZik6CisgICAgICAgICMgVHJ5IGRldnRvb2wgdXBkYXRlLXJlY2lwZSBvbiBhIHJlY2lwZSB0aGF0IGhhcyBhIGZpbGUgd2l0aCBzdWJkaXI9IHNldCBpbgorICAgICAgICAjIFNSQ19VUkkgc3VjaCB0aGF0IGl0IG92ZXJ3cml0ZXMgYSBmaWxlIHRoYXQgd2FzIGluIGFuIGFyY2hpdmUgdGhhdAorICAgICAgICAjIHdhcyBhbHNvIGluIFNSQ19VUkkKKyAgICAgICAgIyBGaXJzdCwgbW9kaWZ5IHRoZSByZWNpcGUKKyAgICAgICAgdGVzdHJlY2lwZSA9ICdkZXZ0b29sLXRlc3Qtc3ViZGlyJworICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydGSUxFJywgJ1NSQ19VUkknXSwgdGVzdHJlY2lwZSkKKyAgICAgICAgcmVjaXBlZmlsZSA9IGJiX3ZhcnNbJ0ZJTEUnXQorICAgICAgICBzcmNfdXJpID0gYmJfdmFyc1snU1JDX1VSSSddCisgICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQorICAgICAgICAjIChkb24ndCBib3RoZXIgd2l0aCBjbGVhbmluZyB0aGUgcmVjaXBlIG9uIHRlYXJkb3duLCB3ZSB3b24ndCBiZSBidWlsZGluZyBpdCkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIG1vZGlmeSAlcycgJSB0ZXN0cmVjaXBlKQorICAgICAgICB0ZXN0ZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3NvdXJjZXMnLCB0ZXN0cmVjaXBlLCAndGVzdGZpbGUnKQorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyh0ZXN0ZmlsZSwgJ0V4dHJhY3RlZCBzb3VyY2UgY291bGQgbm90IGJlIGZvdW5kJykKKyAgICAgICAgd2l0aCBvcGVuKHRlc3RmaWxlLCAncicpIGFzIGY6CisgICAgICAgICAgICBjb250ZW50cyA9IGYucmVhZCgpLnJzdHJpcCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29udGVudHMsICdNb2RpZmllZCB2ZXJzaW9uJywgJ0ZpbGUgaGFzIGFwcGFyZW50bHkgbm90IGJlZW4gb3ZlcndyaXR0ZW4gYXMgaXQgc2hvdWxkIGhhdmUgYmVlbicpCisgICAgICAgICMgVGVzdCBkZXZ0b29sIHVwZGF0ZS1yZWNpcGUgd2l0aG91dCBtb2RpZnlpbmcgYW55IGZpbGVzCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2NkICVzOyBybSAlcy8qOyBnaXQgY2hlY2tvdXQgJXMgJXMnICUgKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSwgdGVzdHJlY2lwZSwgdGVzdHJlY2lwZSwgb3MucGF0aC5iYXNlbmFtZShyZWNpcGVmaWxlKSkpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCB1cGRhdGUtcmVjaXBlICVzJyAlIHRlc3RyZWNpcGUpCisgICAgICAgIGV4cGVjdGVkX3N0YXR1cyA9IFtdCisgICAgICAgIHNlbGYuX2NoZWNrX3JlcG9fc3RhdHVzKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSwgZXhwZWN0ZWRfc3RhdHVzKQorCisgICAgQE9FVGVzdElEKDExNjMpCisgICAgZGVmIHRlc3RfZGV2dG9vbF9leHRyYWN0KHNlbGYpOgorICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCisgICAgICAgICMgVHJ5IGRldnRvb2wgZXh0cmFjdAorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBleHRyYWN0IG1hdGNoYm94LXRlcm1pbmFsICVzJyAlIHRlbXBkaXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKG9zLnBhdGguam9pbih0ZW1wZGlyLCAnTWFrZWZpbGUuYW0nKSwgJ0V4dHJhY3RlZCBzb3VyY2UgY291bGQgbm90IGJlIGZvdW5kJykKKyAgICAgICAgc2VsZi5fY2hlY2tfc3JjX3JlcG8odGVtcGRpcikKKworICAgIEBPRVRlc3RJRCgxMzc5KQorICAgIGRlZiB0ZXN0X2RldnRvb2xfZXh0cmFjdF92aXJ0dWFsKHNlbGYpOgorICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCisgICAgICAgICMgVHJ5IGRldnRvb2wgZXh0cmFjdAorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBleHRyYWN0IHZpcnR1YWwvbWFrZSAlcycgJSB0ZW1wZGlyKQorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhvcy5wYXRoLmpvaW4odGVtcGRpciwgJ01ha2VmaWxlLmFtJyksICdFeHRyYWN0ZWQgc291cmNlIGNvdWxkIG5vdCBiZSBmb3VuZCcpCisgICAgICAgIHNlbGYuX2NoZWNrX3NyY19yZXBvKHRlbXBkaXIpCisKKyAgICBAT0VUZXN0SUQoMTE2OCkKKyAgICBkZWYgdGVzdF9kZXZ0b29sX3Jlc2V0X2FsbChzZWxmKToKKyAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCisgICAgICAgIHRlc3RyZWNpcGUxID0gJ21kYWRtJworICAgICAgICB0ZXN0cmVjaXBlMiA9ICdjcm9uaWUnCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBtb2RpZnkgLXggJXMgJXMnICUgKHRlc3RyZWNpcGUxLCBvcy5wYXRoLmpvaW4odGVtcGRpciwgdGVzdHJlY2lwZTEpKSkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIG1vZGlmeSAteCAlcyAlcycgJSAodGVzdHJlY2lwZTIsIG9zLnBhdGguam9pbih0ZW1wZGlyLCB0ZXN0cmVjaXBlMikpKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgYnVpbGQgJXMnICUgdGVzdHJlY2lwZTEpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBidWlsZCAlcycgJSB0ZXN0cmVjaXBlMikKKyAgICAgICAgc3RhbXBwcmVmaXgxID0gZ2V0X2JiX3ZhcignU1RBTVAnLCB0ZXN0cmVjaXBlMSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN0YW1wcHJlZml4MSwgJ1VuYWJsZSB0byBnZXQgU1RBTVAgdmFsdWUgZm9yIHJlY2lwZSAlcycgJSB0ZXN0cmVjaXBlMSkKKyAgICAgICAgc3RhbXBwcmVmaXgyID0gZ2V0X2JiX3ZhcignU1RBTVAnLCB0ZXN0cmVjaXBlMikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN0YW1wcHJlZml4MiwgJ1VuYWJsZSB0byBnZXQgU1RBTVAgdmFsdWUgZm9yIHJlY2lwZSAlcycgJSB0ZXN0cmVjaXBlMikKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHJlc2V0IC1hJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbih0ZXN0cmVjaXBlMSwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbih0ZXN0cmVjaXBlMiwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4odGVzdHJlY2lwZTEsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4odGVzdHJlY2lwZTIsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIG1hdGNoZXMxID0gZ2xvYi5nbG9iKHN0YW1wcHJlZml4MSArICcqJykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtYXRjaGVzMSwgJ1N0YW1wIGZpbGVzIGV4aXN0IGZvciByZWNpcGUgJXMgdGhhdCBzaG91bGQgaGF2ZSBiZWVuIGNsZWFuZWQnICUgdGVzdHJlY2lwZTEpCisgICAgICAgIG1hdGNoZXMyID0gZ2xvYi5nbG9iKHN0YW1wcHJlZml4MiArICcqJykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtYXRjaGVzMiwgJ1N0YW1wIGZpbGVzIGV4aXN0IGZvciByZWNpcGUgJXMgdGhhdCBzaG91bGQgaGF2ZSBiZWVuIGNsZWFuZWQnICUgdGVzdHJlY2lwZTIpCisKKyAgICBAT0VUZXN0SUQoMTI3MikKKyAgICBkZWYgdGVzdF9kZXZ0b29sX2RlcGxveV90YXJnZXQoc2VsZik6CisgICAgICAgICMgTk9URTogV2hpbHN0IHRoaXMgdGVzdCB3b3VsZCBzZWVtaW5nbHkgYmUgYmV0dGVyIHBsYWNlZCBhcyBhIHJ1bnRpbWUgdGVzdCwKKyAgICAgICAgIyB1bmZvcnR1bmF0ZWx5IHRoZSBydW50aW1lIHRlc3RzIHJ1biB1bmRlciBiaXRiYWtlIGFuZCB5b3UgY2FuJ3QgcnVuCisgICAgICAgICMgZGV2dG9vbCB3aXRoaW4gYml0YmFrZSAoc2luY2UgZGV2dG9vbCBuZWVkcyB0byBydW4gYml0YmFrZSBpdHNlbGYpLgorICAgICAgICAjIEFkZGl0aW9uYWxseSB3ZSBhcmUgdGVzdGluZyBidWlsZC10aW1lIGZ1bmN0aW9uYWxpdHkgYXMgd2VsbCwgc28KKyAgICAgICAgIyByZWFsbHkgdGhpcyBoYXMgdG8gYmUgZG9uZSBhcyBhbiBvZS1zZWxmdGVzdCB0ZXN0LgorICAgICAgICAjCisgICAgICAgICMgQ2hlY2sgcHJlY29uZGl0aW9ucworICAgICAgICBtYWNoaW5lID0gZ2V0X2JiX3ZhcignTUFDSElORScpCisgICAgICAgIGlmIG5vdCBtYWNoaW5lLnN0YXJ0c3dpdGgoJ3FlbXUnKToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ1RoaXMgdGVzdCBvbmx5IHdvcmtzIHdpdGggcWVtdSBtYWNoaW5lcycpCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cygnL2V0Yy9ydW5xZW11LW5vc3VkbycpOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnWW91IG11c3Qgc2V0IHVwIHRhcCBkZXZpY2VzIHdpdGggc2NyaXB0cy9ydW5xZW11LWdlbi10YXBkZXZzIGJlZm9yZSBydW5uaW5nIHRoaXMgdGVzdCcpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnUEFUSD0iJFBBVEg6L3NiaW46L3Vzci9zYmluIiBpcCB0dW50YXAgc2hvdycsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKKyAgICAgICAgaWYgcmVzdWx0LnN0YXR1cyAhPSAwOgorICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdQQVRIPSIkUEFUSDovc2JpbjovdXNyL3NiaW4iIGlmY29uZmlnIC1hJywgaWdub3JlX3N0YXR1cz1UcnVlKQorICAgICAgICAgICAgaWYgcmVzdWx0LnN0YXR1cyAhPSAwOgorICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ0ZhaWxlZCB0byBkZXRlcm1pbmUgaWYgdGFwIGRldmljZXMgZXhpc3Qgd2l0aCBpZmNvbmZpZyBvciBpcDogJXMnICUgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgZm9yIGxpbmUgaW4gcmVzdWx0Lm91dHB1dC5zcGxpdGxpbmVzKCk6CisgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJ3RhcCcpOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdObyB0YXAgZGV2aWNlcyBmb3VuZCAtIHlvdSBtdXN0IHNldCB1cCB0YXAgZGV2aWNlcyB3aXRoIHNjcmlwdHMvcnVucWVtdS1nZW4tdGFwZGV2cyBiZWZvcmUgcnVubmluZyB0aGlzIHRlc3QnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IG9zLnBhdGguZXhpc3RzKHNlbGYud29ya3NwYWNlZGlyKSwgJ1RoaXMgdGVzdCBjYW5ub3QgYmUgcnVuIHdpdGggYSB3b3Jrc3BhY2UgZGlyZWN0b3J5IHVuZGVyIHRoZSBidWlsZCBkaXJlY3RvcnknKQorICAgICAgICAjIERlZmluaXRpb25zCisgICAgICAgIHRlc3RyZWNpcGUgPSAnbWRhZG0nCisgICAgICAgIHRlc3RmaWxlID0gJy9zYmluL21kYWRtJworICAgICAgICB0ZXN0aW1hZ2UgPSAnb2Utc2VsZnRlc3QtaW1hZ2UnCisgICAgICAgIHRlc3Rjb21tYW5kID0gJy9zYmluL21kYWRtIC0taGVscCcKKyAgICAgICAgIyBCdWlsZCBhbiBpbWFnZSB0byBydW4KKyAgICAgICAgYml0YmFrZSgiJXMgcWVtdS1uYXRpdmUgcWVtdS1oZWxwZXItbmF0aXZlIiAlIHRlc3RpbWFnZSkKKyAgICAgICAgZGVwbG95X2Rpcl9pbWFnZSA9IGdldF9iYl92YXIoJ0RFUExPWV9ESVJfSU1BR0UnKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlIC1jIGNsZWFuICVzJyAlIHRlc3RpbWFnZSkKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bigncm0gLWYgJXMvJXMqJyAlIChkZXBsb3lfZGlyX2ltYWdlLCB0ZXN0aW1hZ2UpKQorICAgICAgICAjIENsZWFuIHJlY2lwZSBzbyB0aGUgZmlyc3QgZGVwbG95IHdpbGwgZmFpbAorICAgICAgICBiaXRiYWtlKCIlcyAtYyBjbGVhbiIgJSB0ZXN0cmVjaXBlKQorICAgICAgICAjIFRyeSBkZXZ0b29sIG1vZGlmeQorICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZSAtYyBjbGVhbiAlcycgJSB0ZXN0cmVjaXBlKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgbW9kaWZ5ICVzIC14ICVzJyAlICh0ZXN0cmVjaXBlLCB0ZW1wZGlyKSkKKyAgICAgICAgIyBUZXN0IHRoYXQgZGVwbG95LXRhcmdldCBhdCB0aGlzIHBvaW50IGZhaWxzIChwcm9wZXJseSkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGRlcGxveS10YXJnZXQgLW4gJXMgcm9vdEBsb2NhbGhvc3QnICUgdGVzdHJlY2lwZSwgaWdub3JlX3N0YXR1cz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJlc3VsdC5vdXRwdXQsIDAsICdkZXZ0b29sIGRlcGxveS10YXJnZXQgc2hvdWxkIGhhdmUgZmFpbGVkLCBvdXRwdXQ6ICVzJyAlIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4ocmVzdWx0Lm91dHB1dCwgJ1RyYWNlYmFjaycsICdkZXZ0b29sIGRlcGxveS10YXJnZXQgc2hvdWxkIGhhdmUgZmFpbGVkIHdpdGggYSBwcm9wZXIgZXJyb3Igbm90IGEgdHJhY2ViYWNrLCBvdXRwdXQ6ICVzJyAlIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBidWlsZCAlcycgJSB0ZXN0cmVjaXBlKQorICAgICAgICAjIEZpcnN0IHRyeSBhIGRyeS1ydW4gb2YgZGVwbG95LXRhcmdldAorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgZGVwbG95LXRhcmdldCAtbiAlcyByb290QGxvY2FsaG9zdCcgJSB0ZXN0cmVjaXBlKQorICAgICAgICBzZWxmLmFzc2VydEluKCcgICVzJyAlIHRlc3RmaWxlLCByZXN1bHQub3V0cHV0KQorICAgICAgICAjIEJvb3QgdGhlIGltYWdlCisgICAgICAgIHdpdGggcnVucWVtdSh0ZXN0aW1hZ2UpIGFzIHFlbXU6CisgICAgICAgICAgICAjIE5vdyByZWFsbHkgdGVzdCBkZXBsb3ktdGFyZ2V0CisgICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgZGVwbG95LXRhcmdldCAtYyAlcyByb290QCVzJyAlICh0ZXN0cmVjaXBlLCBxZW11LmlwKSkKKyAgICAgICAgICAgICMgUnVuIGEgdGVzdCBjb21tYW5kIHRvIHNlZSBpZiBpdCB3YXMgaW5zdGFsbGVkIHByb3Blcmx5CisgICAgICAgICAgICBzc2hhcmdzID0gJy1vIFVzZXJLbm93bkhvc3RzRmlsZT0vZGV2L251bGwgLW8gU3RyaWN0SG9zdEtleUNoZWNraW5nPW5vJworICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdzc2ggJXMgcm9vdEAlcyAlcycgJSAoc3NoYXJncywgcWVtdS5pcCwgdGVzdGNvbW1hbmQpKQorICAgICAgICAgICAgIyBDaGVjayBpZiBpdCBkZXBsb3llZCBhbGwgb2YgdGhlIGZpbGVzIHdpdGggdGhlIHJpZ2h0IG93bmVyc2hpcC9wZXJtcworICAgICAgICAgICAgIyBGaXJzdCBsb29rIG9uIHRoZSBob3N0IC0gbmVlZCB0byBkbyB0aGlzIHVuZGVyIHBzZXVkbyB0byBnZXQgdGhlIGNvcnJlY3Qgb3duZXJzaGlwL3Blcm1zCisgICAgICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydEJywgJ0ZBS0VST09URU5WJywgJ0ZBS0VST09UQ01EJ10sIHRlc3RyZWNpcGUpCisgICAgICAgICAgICBpbnN0YWxsZGlyID0gYmJfdmFyc1snRCddCisgICAgICAgICAgICBmYWtlcm9vdGVudiA9IGJiX3ZhcnNbJ0ZBS0VST09URU5WJ10KKyAgICAgICAgICAgIGZha2Vyb290Y21kID0gYmJfdmFyc1snRkFLRVJPT1RDTUQnXQorICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCclcyAlcyBmaW5kIC4gLXR5cGUgZiAtZXhlYyBscyAtbCB7fSBcOycgJSAoZmFrZXJvb3RlbnYsIGZha2Vyb290Y21kKSwgY3dkPWluc3RhbGxkaXIpCisgICAgICAgICAgICBmaWxlbGlzdDEgPSBzZWxmLl9wcm9jZXNzX2xzX291dHB1dChyZXN1bHQub3V0cHV0KQorCisgICAgICAgICAgICAjIE5vdyBsb29rIG9uIHRoZSB0YXJnZXQKKyAgICAgICAgICAgIHRlbXBkaXIyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCisgICAgICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIyKQorICAgICAgICAgICAgdG1wZmlsZWxpc3QgPSBvcy5wYXRoLmpvaW4odGVtcGRpcjIsICdmaWxlcy50eHQnKQorICAgICAgICAgICAgd2l0aCBvcGVuKHRtcGZpbGVsaXN0LCAndycpIGFzIGY6CisgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gZmlsZWxpc3QxOgorICAgICAgICAgICAgICAgICAgICBzcGxpdGxpbmUgPSBsaW5lLnNwbGl0KCkKKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZShzcGxpdGxpbmVbLTFdICsgJ1xuJykKKyAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnY2F0ICVzIHwgc3NoIC1xICVzIHJvb3RAJXMgXCd4YXJncyBscyAtbFwnJyAlICh0bXBmaWxlbGlzdCwgc3NoYXJncywgcWVtdS5pcCkpCisgICAgICAgICAgICBmaWxlbGlzdDIgPSBzZWxmLl9wcm9jZXNzX2xzX291dHB1dChyZXN1bHQub3V0cHV0KQorICAgICAgICAgICAgZmlsZWxpc3QxLnNvcnQoa2V5PWxhbWJkYSBpdGVtOiBpdGVtLnNwbGl0KClbLTFdKQorICAgICAgICAgICAgZmlsZWxpc3QyLnNvcnQoa2V5PWxhbWJkYSBpdGVtOiBpdGVtLnNwbGl0KClbLTFdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlbGlzdDEsIGZpbGVsaXN0MikKKyAgICAgICAgICAgICMgVGVzdCB1bmRlcGxveS10YXJnZXQKKyAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCB1bmRlcGxveS10YXJnZXQgLWMgJXMgcm9vdEAlcycgJSAodGVzdHJlY2lwZSwgcWVtdS5pcCkpCisgICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoJ3NzaCAlcyByb290QCVzICVzJyAlIChzc2hhcmdzLCBxZW11LmlwLCB0ZXN0Y29tbWFuZCksIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmVzdWx0LCAwLCAndW5kZXBsb3ktdGFyZ2V0IGRpZCBub3QgcmVtb3ZlIGNvbW1hbmQgYXMgaXQgc2hvdWxkIGhhdmUnKQorCisgICAgQE9FVGVzdElEKDEzNjYpCisgICAgZGVmIHRlc3RfZGV2dG9vbF9idWlsZF9pbWFnZShzZWxmKToKKyAgICAgICAgIiIiVGVzdCBkZXZ0b29sIGJ1aWxkLWltYWdlIHBsdWdpbiIiIgorICAgICAgICAjIENoZWNrIHByZWNvbmRpdGlvbnMKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLndvcmtzcGFjZWRpciksICdUaGlzIHRlc3QgY2Fubm90IGJlIHJ1biB3aXRoIGEgd29ya3NwYWNlIGRpcmVjdG9yeSB1bmRlciB0aGUgYnVpbGQgZGlyZWN0b3J5JykKKyAgICAgICAgaW1hZ2UgPSAnY29yZS1pbWFnZS1taW5pbWFsJworICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlIC1jIGNsZWFuICVzJyAlIGltYWdlKQorICAgICAgICBiaXRiYWtlKCclcyAtYyBjbGVhbicgJSBpbWFnZSkKKyAgICAgICAgIyBBZGQgdGFyZ2V0IGFuZCBuYXRpdmUgcmVjaXBlcyB0byB3b3Jrc3BhY2UKKyAgICAgICAgcmVjaXBlcyA9IFsnbWRhZG0nLCAncGFydGVkLW5hdGl2ZSddCisgICAgICAgIGZvciByZWNpcGUgaW4gcmVjaXBlczoKKyAgICAgICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKKyAgICAgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKKyAgICAgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UgLWMgY2xlYW4gJXMnICUgcmVjaXBlKQorICAgICAgICAgICAgcnVuQ21kKCdkZXZ0b29sIG1vZGlmeSAlcyAteCAlcycgJSAocmVjaXBlLCB0ZW1wZGlyKSkKKyAgICAgICAgIyBUcnkgdG8gYnVpbGQgaW1hZ2UKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGJ1aWxkLWltYWdlICVzJyAlIGltYWdlKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJlc3VsdCwgMCwgJ2RldnRvb2wgYnVpbGQtaW1hZ2UgZmFpbGVkJykKKyAgICAgICAgIyBDaGVjayBpZiBpbWFnZSBjb250YWlucyBleHBlY3RlZCBwYWNrYWdlcworICAgICAgICBkZXBsb3lfZGlyX2ltYWdlID0gZ2V0X2JiX3ZhcignREVQTE9ZX0RJUl9JTUFHRScpCisgICAgICAgIGltYWdlX2xpbmtfbmFtZSA9IGdldF9iYl92YXIoJ0lNQUdFX0xJTktfTkFNRScsIGltYWdlKQorICAgICAgICByZXFwa2dzID0gW2l0ZW0gZm9yIGl0ZW0gaW4gcmVjaXBlcyBpZiBub3QgaXRlbS5lbmRzd2l0aCgnLW5hdGl2ZScpXQorICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGRlcGxveV9kaXJfaW1hZ2UsIGltYWdlX2xpbmtfbmFtZSArICcubWFuaWZlc3QnKSwgJ3InKSBhcyBmOgorICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKKyAgICAgICAgICAgICAgICBzcGxpdHZhbCA9IGxpbmUuc3BsaXQoKQorICAgICAgICAgICAgICAgIGlmIHNwbGl0dmFsOgorICAgICAgICAgICAgICAgICAgICBwa2cgPSBzcGxpdHZhbFswXQorICAgICAgICAgICAgICAgICAgICBpZiBwa2cgaW4gcmVxcGtnczoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcXBrZ3MucmVtb3ZlKHBrZykKKyAgICAgICAgaWYgcmVxcGtnczoKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnVGhlIGZvbGxvd2luZyBwYWNrYWdlcyB3ZXJlIG5vdCBwcmVzZW50IGluIHRoZSBpbWFnZSBhcyBleHBlY3RlZDogJXMnICUgJywgJy5qb2luKHJlcXBrZ3MpKQorCisgICAgQE9FVGVzdElEKDEzNjcpCisgICAgZGVmIHRlc3RfZGV2dG9vbF91cGdyYWRlKHNlbGYpOgorICAgICAgICAjIENoZWNrIHByZWNvbmRpdGlvbnMKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLndvcmtzcGFjZWRpciksICdUaGlzIHRlc3QgY2Fubm90IGJlIHJ1biB3aXRoIGEgd29ya3NwYWNlIGRpcmVjdG9yeSB1bmRlciB0aGUgYnVpbGQgZGlyZWN0b3J5JykKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKKyAgICAgICAgIyBDaGVjayBwYXJhbWV0ZXJzCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCB1cGdyYWRlIC1oJykKKyAgICAgICAgZm9yIHBhcmFtIGluICdyZWNpcGVuYW1lIHNyY3RyZWUgLS12ZXJzaW9uIC1WIC0tYnJhbmNoIC1iIC0ta2VlcC10ZW1wIC0tbm8tcGF0Y2gnLnNwbGl0KCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEluKHBhcmFtLCByZXN1bHQub3V0cHV0KQorICAgICAgICAjIEZvciB0aGUgbW9tZW50LCB3ZSBhcmUgdXNpbmcgYSByZWFsIHJlY2lwZS4KKyAgICAgICAgcmVjaXBlID0gJ2RldnRvb2wtdXBncmFkZS10ZXN0MScKKyAgICAgICAgdmVyc2lvbiA9ICcxLjYuMCcKKyAgICAgICAgb2xkcmVjaXBlZmlsZSA9IGdldF9iYl92YXIoJ0ZJTEUnLCByZWNpcGUpCisgICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQorICAgICAgICAjIENoZWNrIHRoYXQgcmVjaXBlIGlzIG5vdCBhbHJlYWR5IHVuZGVyIGRldnRvb2wgY29udHJvbAorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbihyZWNpcGUsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgICMgQ2hlY2sgdXBncmFkZS4gQ29kZSBkb2VzIG5vdCBjaGVjayBpZiBuZXcgUFYgaXMgb2xkZXIgb3IgbmV3ZXIgdGhhdCBjdXJyZW50IFBWLCBzbywgaXQgbWF5IGJlIHRoYXQKKyAgICAgICAgIyB3ZSBhcmUgZG93bmdyYWRpbmcgaW5zdGVhZCBvZiB1cGdyYWRpbmcuCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCB1cGdyYWRlICVzICVzIC1WICVzJyAlIChyZWNpcGUsIHRlbXBkaXIsIHZlcnNpb24pKQorICAgICAgICAjIENoZWNrIGlmIHNyY3RyZWUgYXQgbGVhc3QgaXMgcG9wdWxhdGVkCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsZW4ob3MubGlzdGRpcih0ZW1wZGlyKSkgPiAwLCAnc3JjdHJlZSAoJXMpIHNob3VsZCBiZSBwb3B1bGF0ZWQgd2l0aCBuZXcgKCVzKSBzb3VyY2UgY29kZScgJSAodGVtcGRpciwgdmVyc2lvbikpCisgICAgICAgICMgQ2hlY2sgbmV3IHJlY2lwZSBzdWJkaXJlY3RvcnkgaXMgcHJlc2VudAorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdyZWNpcGVzJywgcmVjaXBlLCAnJXMtJXMnICUgKHJlY2lwZSwgdmVyc2lvbikpLCAnUmVjaXBlIGZvbGRlciBzaG91bGQgZXhpc3QnKQorICAgICAgICAjIENoZWNrIG5ldyByZWNpcGUgZmlsZSBpcyBwcmVzZW50CisgICAgICAgIG5ld3JlY2lwZWZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdyZWNpcGVzJywgcmVjaXBlLCAnJXNfJXMuYmInICUgKHJlY2lwZSwgdmVyc2lvbikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKG5ld3JlY2lwZWZpbGUsICdSZWNpcGUgZmlsZSBzaG91bGQgZXhpc3QgYWZ0ZXIgdXBncmFkZScpCisgICAgICAgICMgQ2hlY2sgZGV2dG9vbCBzdGF0dXMgYW5kIG1ha2Ugc3VyZSByZWNpcGUgaXMgcHJlc2VudAorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbihyZWNpcGUsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4odGVtcGRpciwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgIyBDaGVjayByZWNpcGUgZ290IGNoYW5nZWQgYXMgZXhwZWN0ZWQKKyAgICAgICAgd2l0aCBvcGVuKG9sZHJlY2lwZWZpbGUgKyAnLnVwZ3JhZGVkJywgJ3InKSBhcyBmOgorICAgICAgICAgICAgZGVzaXJlZGxpbmVzID0gZi5yZWFkbGluZXMoKQorICAgICAgICB3aXRoIG9wZW4obmV3cmVjaXBlZmlsZSwgJ3InKSBhcyBmOgorICAgICAgICAgICAgbmV3bGluZXMgPSBmLnJlYWRsaW5lcygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVzaXJlZGxpbmVzLCBuZXdsaW5lcykKKyAgICAgICAgIyBDaGVjayBkZXZ0b29sIHJlc2V0IHJlY2lwZQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgcmVzZXQgJXMgLW4nICUgcmVjaXBlKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbihyZWNpcGUsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3JlY2lwZXMnLCByZWNpcGUpLCAnUmVjaXBlIGRpcmVjdG9yeSBzaG91bGQgbm90IGV4aXN0IGFmdGVyIHJlc2V0dGluZycpCisKKyAgICBAT0VUZXN0SUQoMTQzMykKKyAgICBkZWYgdGVzdF9kZXZ0b29sX3VwZ3JhZGVfZ2l0KHNlbGYpOgorICAgICAgICAjIENoZWNrIHByZWNvbmRpdGlvbnMKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLndvcmtzcGFjZWRpciksICdUaGlzIHRlc3QgY2Fubm90IGJlIHJ1biB3aXRoIGEgd29ya3NwYWNlIGRpcmVjdG9yeSB1bmRlciB0aGUgYnVpbGQgZGlyZWN0b3J5JykKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKKyAgICAgICAgcmVjaXBlID0gJ2RldnRvb2wtdXBncmFkZS10ZXN0MicKKyAgICAgICAgY29tbWl0ID0gJzZjYzYwNzdhMzZmZTI2NDhhNWY5OTNmZTdjMTZjOTYzMmY5NDY1MTcnCisgICAgICAgIG9sZHJlY2lwZWZpbGUgPSBnZXRfYmJfdmFyKCdGSUxFJywgcmVjaXBlKQorICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKKyAgICAgICAgIyBDaGVjayB0aGF0IHJlY2lwZSBpcyBub3QgYWxyZWFkeSB1bmRlciBkZXZ0b29sIGNvbnRyb2wKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4ocmVjaXBlLCByZXN1bHQub3V0cHV0KQorICAgICAgICAjIENoZWNrIHVwZ3JhZGUKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHVwZ3JhZGUgJXMgJXMgLVMgJXMnICUgKHJlY2lwZSwgdGVtcGRpciwgY29tbWl0KSkKKyAgICAgICAgIyBDaGVjayBpZiBzcmN0cmVlIGF0IGxlYXN0IGlzIHBvcHVsYXRlZAorICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKG9zLmxpc3RkaXIodGVtcGRpcikpID4gMCwgJ3NyY3RyZWUgKCVzKSBzaG91bGQgYmUgcG9wdWxhdGVkIHdpdGggbmV3ICglcykgc291cmNlIGNvZGUnICUgKHRlbXBkaXIsIGNvbW1pdCkpCisgICAgICAgICMgQ2hlY2sgbmV3IHJlY2lwZSBmaWxlIGlzIHByZXNlbnQKKyAgICAgICAgbmV3cmVjaXBlZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3JlY2lwZXMnLCByZWNpcGUsIG9zLnBhdGguYmFzZW5hbWUob2xkcmVjaXBlZmlsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKG5ld3JlY2lwZWZpbGUsICdSZWNpcGUgZmlsZSBzaG91bGQgZXhpc3QgYWZ0ZXIgdXBncmFkZScpCisgICAgICAgICMgQ2hlY2sgZGV2dG9vbCBzdGF0dXMgYW5kIG1ha2Ugc3VyZSByZWNpcGUgaXMgcHJlc2VudAorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbihyZWNpcGUsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4odGVtcGRpciwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgIyBDaGVjayByZWNpcGUgZ290IGNoYW5nZWQgYXMgZXhwZWN0ZWQKKyAgICAgICAgd2l0aCBvcGVuKG9sZHJlY2lwZWZpbGUgKyAnLnVwZ3JhZGVkJywgJ3InKSBhcyBmOgorICAgICAgICAgICAgZGVzaXJlZGxpbmVzID0gZi5yZWFkbGluZXMoKQorICAgICAgICB3aXRoIG9wZW4obmV3cmVjaXBlZmlsZSwgJ3InKSBhcyBmOgorICAgICAgICAgICAgbmV3bGluZXMgPSBmLnJlYWRsaW5lcygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVzaXJlZGxpbmVzLCBuZXdsaW5lcykKKyAgICAgICAgIyBDaGVjayBkZXZ0b29sIHJlc2V0IHJlY2lwZQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgcmVzZXQgJXMgLW4nICUgcmVjaXBlKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbihyZWNpcGUsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3JlY2lwZXMnLCByZWNpcGUpLCAnUmVjaXBlIGRpcmVjdG9yeSBzaG91bGQgbm90IGV4aXN0IGFmdGVyIHJlc2V0dGluZycpCisKKyAgICBAT0VUZXN0SUQoMTM1MikKKyAgICBkZWYgdGVzdF9kZXZ0b29sX2xheWVyX3BsdWdpbnMoc2VsZik6CisgICAgICAgICIiIlRlc3QgdGhhdCBkZXZ0b29sIGNhbiB1c2UgcGx1Z2lucyBmcm9tIG90aGVyIGxheWVycy4KKworICAgICAgICBUaGlzIHRlc3QgZXhlY3V0ZXMgdGhlIHNlbGZ0ZXN0LXJldmVyc2UgY29tbWFuZCBmcm9tIG1ldGEtc2VsZnRlc3QuIiIiCisKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKKworICAgICAgICBzID0gIk1pY3Jvc29mdCBNYWRlIE5vIFByb2ZpdCBGcm9tIEFueW9uZSdzIFp1bmVzIFlvIgorICAgICAgICByZXN1bHQgPSBydW5DbWQoImRldnRvb2wgLS1xdWlldCBzZWxmdGVzdC1yZXZlcnNlIFwiJXNcIiIgJSBzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQsIHNbOjotMV0pCisKKyAgICBkZWYgX2NvcHlfZmlsZV93aXRoX2NsZWFudXAoc2VsZiwgc3JjZmlsZSwgYmFzZWRzdGRpciwgKnBhdGhzKToKKyAgICAgICAgZHN0ZGlyID0gYmFzZWRzdGRpcgorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhkc3RkaXIpCisgICAgICAgIGZvciBwIGluIHBhdGhzOgorICAgICAgICAgICAgZHN0ZGlyID0gb3MucGF0aC5qb2luKGRzdGRpciwgcCkKKyAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhkc3RkaXIpOgorICAgICAgICAgICAgICAgIG9zLm1ha2VkaXJzKGRzdGRpcikKKyAgICAgICAgICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKGRzdGRpcikKKyAgICAgICAgZHN0ZmlsZSA9IG9zLnBhdGguam9pbihkc3RkaXIsIG9zLnBhdGguYmFzZW5hbWUoc3JjZmlsZSkpCisgICAgICAgIGlmIHNyY2ZpbGUgIT0gZHN0ZmlsZToKKyAgICAgICAgICAgIHNodXRpbC5jb3B5KHNyY2ZpbGUsIGRzdGZpbGUpCisgICAgICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKGRzdGZpbGUpCisKKyAgICBAT0VUZXN0SUQoMTYyNSkKKyAgICBkZWYgdGVzdF9kZXZ0b29sX2xvYWRfcGx1Z2luKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHRoYXQgZGV2dG9vbCBsb2FkcyBvbmx5IHRoZSBmaXJzdCBmb3VuZCBwbHVnaW4gaW4gQkJQQVRILiIiIgorCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCisKKyAgICAgICAgZGV2dG9vbCA9IHJ1bkNtZCgid2hpY2ggZGV2dG9vbCIpCisgICAgICAgIGZyb21uYW1lID0gcnVuQ21kKCJkZXZ0b29sIC0tcXVpZXQgcGx1Z2luZmlsZSIpCisgICAgICAgIHNyY2ZpbGUgPSBmcm9tbmFtZS5vdXRwdXQKKyAgICAgICAgYmJwYXRoID0gZ2V0X2JiX3ZhcignQkJQQVRIJykKKyAgICAgICAgc2VhcmNocGF0aCA9IGJicGF0aC5zcGxpdCgnOicpICsgW29zLnBhdGguZGlybmFtZShkZXZ0b29sLm91dHB1dCldCisgICAgICAgIHBsdWdpbmNvbnRlbnQgPSBbXQorICAgICAgICB3aXRoIG9wZW4oc3JjZmlsZSkgYXMgZmg6CisgICAgICAgICAgICBwbHVnaW5jb250ZW50ID0gZmgucmVhZGxpbmVzKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignbWV0YS1zZWxmdGVzdCcsIHNyY2ZpbGUsICd3cm9uZyBiYnBhdGggcGx1Z2luIGZvdW5kJykKKyAgICAgICAgICAgIGZvciBwYXRoIGluIHNlYXJjaHBhdGg6CisgICAgICAgICAgICAgICAgc2VsZi5fY29weV9maWxlX3dpdGhfY2xlYW51cChzcmNmaWxlLCBwYXRoLCAnbGliJywgJ2RldnRvb2wnKQorICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJkZXZ0b29sIC0tcXVpZXQgY291bnQiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LCAnMScpCisgICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoImRldnRvb2wgLS1xdWlldCBtdWx0aWxvYWRlZCIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQsICJubyIpCisgICAgICAgICAgICBmb3IgcGF0aCBpbiBzZWFyY2hwYXRoOgorICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgiZGV2dG9vbCAtLXF1aWV0IGJiZGlyIikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQsIHBhdGgpCisgICAgICAgICAgICAgICAgb3MudW5saW5rKG9zLnBhdGguam9pbihyZXN1bHQub3V0cHV0LCAnbGliJywgJ2RldnRvb2wnLCAnYmJwYXRoLnB5JykpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICB3aXRoIG9wZW4oc3JjZmlsZSwgJ3cnKSBhcyBmaDoKKyAgICAgICAgICAgICAgICBmaC53cml0ZWxpbmVzKHBsdWdpbmNvbnRlbnQpCisKKyAgICBkZWYgX3NldHVwX3Rlc3RfZGV2dG9vbF9maW5pc2hfdXBncmFkZShzZWxmKToKKyAgICAgICAgIyBDaGVjayBwcmVjb25kaXRpb25zCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3Qgb3MucGF0aC5leGlzdHMoc2VsZi53b3Jrc3BhY2VkaXIpLCAnVGhpcyB0ZXN0IGNhbm5vdCBiZSBydW4gd2l0aCBhIHdvcmtzcGFjZSBkaXJlY3RvcnkgdW5kZXIgdGhlIGJ1aWxkIGRpcmVjdG9yeScpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCisgICAgICAgICMgVXNlIGEgInJlYWwiIHJlY2lwZSBmcm9tIG1ldGEtc2VsZnRlc3QKKyAgICAgICAgcmVjaXBlID0gJ2RldnRvb2wtdXBncmFkZS10ZXN0MScKKyAgICAgICAgb2xkdmVyc2lvbiA9ICcxLjUuMycKKyAgICAgICAgbmV3dmVyc2lvbiA9ICcxLjYuMCcKKyAgICAgICAgb2xkcmVjaXBlZmlsZSA9IGdldF9iYl92YXIoJ0ZJTEUnLCByZWNpcGUpCisgICAgICAgIHJlY2lwZWRpciA9IG9zLnBhdGguZGlybmFtZShvbGRyZWNpcGVmaWxlKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBzdGF0dXMgLS1wb3JjZWxhaW4gLicsIGN3ZD1yZWNpcGVkaXIpCisgICAgICAgIGlmIHJlc3VsdC5vdXRwdXQuc3RyaXAoKToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnUmVjaXBlIGRpcmVjdG9yeSBmb3IgJXMgY29udGFpbnMgdW5jb21taXR0ZWQgY2hhbmdlcycgJSByZWNpcGUpCisgICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQorICAgICAgICAjIENoZWNrIHRoYXQgcmVjaXBlIGlzIG5vdCBhbHJlYWR5IHVuZGVyIGRldnRvb2wgY29udHJvbAorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbihyZWNpcGUsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgICMgRG8gdGhlIHVwZ3JhZGUKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHVwZ3JhZGUgJXMgJXMgLVYgJXMnICUgKHJlY2lwZSwgdGVtcGRpciwgbmV3dmVyc2lvbikpCisgICAgICAgICMgQ2hlY2sgZGV2dG9vbCBzdGF0dXMgYW5kIG1ha2Ugc3VyZSByZWNpcGUgaXMgcHJlc2VudAorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbihyZWNpcGUsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4odGVtcGRpciwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgIyBNYWtlIGEgY2hhbmdlIHRvIHRoZSBzb3VyY2UKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdzZWQgLWkgXCcvXiNpbmNsdWRlICJwdi5oIi9hIFxcLyogSGVyZSBpcyBhIG5ldyBjb21tZW50ICpcXC9cJyBzcmMvcHYvbnVtYmVyLmMnLCBjd2Q9dGVtcGRpcikKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgc3RhdHVzIC0tcG9yY2VsYWluJywgY3dkPXRlbXBkaXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ00gc3JjL3B2L251bWJlci5jJywgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgY29tbWl0IHNyYy9wdi9udW1iZXIuYyAtbSAiQWRkIGEgY29tbWVudCB0byB0aGUgY29kZSInLCBjd2Q9dGVtcGRpcikKKyAgICAgICAgIyBDaGVjayBpZiBwYXRjaCBpcyB0aGVyZQorICAgICAgICByZWNpcGVkaXIgPSBvcy5wYXRoLmRpcm5hbWUob2xkcmVjaXBlZmlsZSkKKyAgICAgICAgb2xkZGlyID0gb3MucGF0aC5qb2luKHJlY2lwZWRpciwgcmVjaXBlICsgJy0nICsgb2xkdmVyc2lvbikKKyAgICAgICAgcGF0Y2hmbiA9ICcwMDAxLUFkZC1hLW5vdGUtbGluZS10by10aGUtcXVpY2stcmVmZXJlbmNlLnBhdGNoJworICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhvcy5wYXRoLmpvaW4ob2xkZGlyLCBwYXRjaGZuKSwgJ09yaWdpbmFsIHBhdGNoIGZpbGUgZG9lcyBub3QgZXhpc3QnKQorICAgICAgICByZXR1cm4gcmVjaXBlLCBvbGRyZWNpcGVmaWxlLCByZWNpcGVkaXIsIG9sZGRpciwgbmV3dmVyc2lvbiwgcGF0Y2hmbgorCisgICAgQE9FVGVzdElEKDE2MjMpCisgICAgZGVmIHRlc3RfZGV2dG9vbF9maW5pc2hfdXBncmFkZV9vcmlnbGF5ZXIoc2VsZik6CisgICAgICAgIHJlY2lwZSwgb2xkcmVjaXBlZmlsZSwgcmVjaXBlZGlyLCBvbGRkaXIsIG5ld3ZlcnNpb24sIHBhdGNoZm4gPSBzZWxmLl9zZXR1cF90ZXN0X2RldnRvb2xfZmluaXNoX3VwZ3JhZGUoKQorICAgICAgICAjIEVuc3VyZSB0aGUgcmVjaXBlIGlzIHdoZXJlIHdlIHRoaW5rIGl0IHNob3VsZCBiZSAoc28gdGhhdCBjbGVhbnVwIGRvZXNuJ3QgdHJhc2ggdGhpbmdzKQorICAgICAgICBzZWxmLmFzc2VydEluKCcvbWV0YS1zZWxmdGVzdC8nLCByZWNpcGVkaXIpCisgICAgICAgICMgVHJ5IGZpbmlzaCB0byB0aGUgb3JpZ2luYWwgbGF5ZXIKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bigncm0gLXJmICVzIDsgY2QgJXMgOyBnaXQgY2hlY2tvdXQgJXMnICUgKHJlY2lwZWRpciwgb3MucGF0aC5kaXJuYW1lKHJlY2lwZWRpciksIHJlY2lwZWRpcikpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBmaW5pc2ggJXMgbWV0YS1zZWxmdGVzdCcgJSByZWNpcGUpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKHJlY2lwZSwgcmVzdWx0Lm91dHB1dCwgJ1JlY2lwZSBzaG91bGQgaGF2ZSBiZWVuIHJlc2V0IGJ5IGZpbmlzaCBidXQgd2FzblwndCcpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3JlY2lwZXMnLCByZWNpcGUpLCAnUmVjaXBlIGRpcmVjdG9yeSBzaG91bGQgbm90IGV4aXN0IGFmdGVyIGZpbmlzaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXhpc3RzKG9sZHJlY2lwZWZpbGUsICdPbGQgcmVjaXBlIGZpbGUgc2hvdWxkIGhhdmUgYmVlbiBkZWxldGVkIGJ1dCB3YXNuXCd0JykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFeGlzdHMob3MucGF0aC5qb2luKG9sZGRpciwgcGF0Y2hmbiksICdPbGQgcGF0Y2ggZmlsZSBzaG91bGQgaGF2ZSBiZWVuIGRlbGV0ZWQgYnV0IHdhc25cJ3QnKQorICAgICAgICBuZXdyZWNpcGVmaWxlID0gb3MucGF0aC5qb2luKHJlY2lwZWRpciwgJyVzXyVzLmJiJyAlIChyZWNpcGUsIG5ld3ZlcnNpb24pKQorICAgICAgICBuZXdkaXIgPSBvcy5wYXRoLmpvaW4ocmVjaXBlZGlyLCByZWNpcGUgKyAnLScgKyBuZXd2ZXJzaW9uKQorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhuZXdyZWNpcGVmaWxlLCAnTmV3IHJlY2lwZSBmaWxlIHNob3VsZCBoYXZlIGJlZW4gY29waWVkIGludG8gZXhpc3RpbmcgbGF5ZXIgYnV0IHdhc25cJ3QnKQorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhvcy5wYXRoLmpvaW4obmV3ZGlyLCBwYXRjaGZuKSwgJ1BhdGNoIGZpbGUgc2hvdWxkIGhhdmUgYmVlbiBjb3BpZWQgaW50byBuZXcgZGlyZWN0b3J5IGJ1dCB3YXNuXCd0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMob3MucGF0aC5qb2luKG5ld2RpciwgJzAwMDItQWRkLWEtY29tbWVudC10by10aGUtY29kZS5wYXRjaCcpLCAnTmV3IHBhdGNoIGZpbGUgc2hvdWxkIGhhdmUgYmVlbiBjcmVhdGVkIGJ1dCB3YXNuXCd0JykKKworICAgIEBPRVRlc3RJRCgxNjI0KQorICAgIGRlZiB0ZXN0X2RldnRvb2xfZmluaXNoX3VwZ3JhZGVfb3RoZXJsYXllcihzZWxmKToKKyAgICAgICAgcmVjaXBlLCBvbGRyZWNpcGVmaWxlLCByZWNpcGVkaXIsIG9sZGRpciwgbmV3dmVyc2lvbiwgcGF0Y2hmbiA9IHNlbGYuX3NldHVwX3Rlc3RfZGV2dG9vbF9maW5pc2hfdXBncmFkZSgpCisgICAgICAgICMgRW5zdXJlIHRoZSByZWNpcGUgaXMgd2hlcmUgd2UgdGhpbmsgaXQgc2hvdWxkIGJlIChzbyB0aGF0IGNsZWFudXAgZG9lc24ndCB0cmFzaCB0aGluZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJy9tZXRhLXNlbGZ0ZXN0LycsIHJlY2lwZWRpcikKKyAgICAgICAgIyBUcnkgZmluaXNoIHRvIGEgZGlmZmVyZW50IGxheWVyIC0gc2hvdWxkIGNyZWF0ZSBhIGJiYXBwZW5kCisgICAgICAgICMgVGhpcyBjbGVhbnVwIGlzbid0IHN0cmljdGx5IG5lY2Vzc2FyeSBidXQgZG8gaXQgYW55d2F5IGp1c3QgaW4gY2FzZSBpdCBnb2VzIHdyb25nIGFuZCB3cml0ZXMgdG8gaGVyZQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdybSAtcmYgJXMgOyBjZCAlcyA7IGdpdCBjaGVja291dCAlcycgJSAocmVjaXBlZGlyLCBvcy5wYXRoLmRpcm5hbWUocmVjaXBlZGlyKSwgcmVjaXBlZGlyKSkKKyAgICAgICAgb2VfY29yZV9kaXIgPSBvcy5wYXRoLmpvaW4oZ2V0X2JiX3ZhcignQ09SRUJBU0UnKSwgJ21ldGEnKQorICAgICAgICBuZXdyZWNpcGVkaXIgPSBvcy5wYXRoLmpvaW4ob2VfY29yZV9kaXIsICdyZWNpcGVzLXRlc3QnLCAnZGV2dG9vbCcpCisgICAgICAgIG5ld3JlY2lwZWZpbGUgPSBvcy5wYXRoLmpvaW4obmV3cmVjaXBlZGlyLCAnJXNfJXMuYmInICUgKHJlY2lwZSwgbmV3dmVyc2lvbikpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAobmV3cmVjaXBlZGlyKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgZmluaXNoICVzIG9lLWNvcmUnICUgcmVjaXBlKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbihyZWNpcGUsIHJlc3VsdC5vdXRwdXQsICdSZWNpcGUgc2hvdWxkIGhhdmUgYmVlbiByZXNldCBieSBmaW5pc2ggYnV0IHdhc25cJ3QnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdyZWNpcGVzJywgcmVjaXBlKSwgJ1JlY2lwZSBkaXJlY3Rvcnkgc2hvdWxkIG5vdCBleGlzdCBhZnRlciBmaW5pc2gnKQorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhvbGRyZWNpcGVmaWxlLCAnT2xkIHJlY2lwZSBmaWxlIHNob3VsZCBub3QgaGF2ZSBiZWVuIGRlbGV0ZWQnKQorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhvcy5wYXRoLmpvaW4ob2xkZGlyLCBwYXRjaGZuKSwgJ09sZCBwYXRjaCBmaWxlIHNob3VsZCBub3QgaGF2ZSBiZWVuIGRlbGV0ZWQnKQorICAgICAgICBuZXdkaXIgPSBvcy5wYXRoLmpvaW4obmV3cmVjaXBlZGlyLCByZWNpcGUgKyAnLScgKyBuZXd2ZXJzaW9uKQorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhuZXdyZWNpcGVmaWxlLCAnTmV3IHJlY2lwZSBmaWxlIHNob3VsZCBoYXZlIGJlZW4gY29waWVkIGludG8gZXhpc3RpbmcgbGF5ZXIgYnV0IHdhc25cJ3QnKQorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhvcy5wYXRoLmpvaW4obmV3ZGlyLCBwYXRjaGZuKSwgJ1BhdGNoIGZpbGUgc2hvdWxkIGhhdmUgYmVlbiBjb3BpZWQgaW50byBuZXcgZGlyZWN0b3J5IGJ1dCB3YXNuXCd0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMob3MucGF0aC5qb2luKG5ld2RpciwgJzAwMDItQWRkLWEtY29tbWVudC10by10aGUtY29kZS5wYXRjaCcpLCAnTmV3IHBhdGNoIGZpbGUgc2hvdWxkIGhhdmUgYmVlbiBjcmVhdGVkIGJ1dCB3YXNuXCd0JykKKworICAgIGRlZiBfc2V0dXBfdGVzdF9kZXZ0b29sX2ZpbmlzaF9tb2RpZnkoc2VsZik6CisgICAgICAgICMgQ2hlY2sgcHJlY29uZGl0aW9ucworICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IG9zLnBhdGguZXhpc3RzKHNlbGYud29ya3NwYWNlZGlyKSwgJ1RoaXMgdGVzdCBjYW5ub3QgYmUgcnVuIHdpdGggYSB3b3Jrc3BhY2UgZGlyZWN0b3J5IHVuZGVyIHRoZSBidWlsZCBkaXJlY3RvcnknKQorICAgICAgICAjIFRyeSBtb2RpZnlpbmcgYSByZWNpcGUKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKKyAgICAgICAgcmVjaXBlID0gJ21kYWRtJworICAgICAgICBvbGRyZWNpcGVmaWxlID0gZ2V0X2JiX3ZhcignRklMRScsIHJlY2lwZSkKKyAgICAgICAgcmVjaXBlZGlyID0gb3MucGF0aC5kaXJuYW1lKG9sZHJlY2lwZWZpbGUpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IHN0YXR1cyAtLXBvcmNlbGFpbiAuJywgY3dkPXJlY2lwZWRpcikKKyAgICAgICAgaWYgcmVzdWx0Lm91dHB1dC5zdHJpcCgpOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdSZWNpcGUgZGlyZWN0b3J5IGZvciAlcyBjb250YWlucyB1bmNvbW1pdHRlZCBjaGFuZ2VzJyAlIHJlY2lwZSkKKyAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBtb2RpZnkgJXMgJXMnICUgKHJlY2lwZSwgdGVtcGRpcikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKG9zLnBhdGguam9pbih0ZW1wZGlyLCAnTWFrZWZpbGUnKSwgJ0V4dHJhY3RlZCBzb3VyY2UgY291bGQgbm90IGJlIGZvdW5kJykKKyAgICAgICAgIyBUZXN0IGRldnRvb2wgc3RhdHVzCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQorICAgICAgICBzZWxmLmFzc2VydEluKHJlY2lwZSwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbih0ZW1wZGlyLCByZXN1bHQub3V0cHV0KQorICAgICAgICAjIE1ha2UgYSBjaGFuZ2UgdG8gdGhlIHNvdXJjZQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ3NlZCAtaSBcJy9eI2luY2x1ZGUgIm1kYWRtLmgiL2EgXFwvKiBIZXJlIGlzIGEgbmV3IGNvbW1lbnQgKlxcL1wnIG1hcHMuYycsIGN3ZD10ZW1wZGlyKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBzdGF0dXMgLS1wb3JjZWxhaW4nLCBjd2Q9dGVtcGRpcikKKyAgICAgICAgc2VsZi5hc3NlcnRJbignTSBtYXBzLmMnLCByZXN1bHQub3V0cHV0KQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBjb21taXQgbWFwcy5jIC1tICJBZGQgYSBjb21tZW50IHRvIHRoZSBjb2RlIicsIGN3ZD10ZW1wZGlyKQorICAgICAgICBmb3IgZW50cnkgaW4gb3MubGlzdGRpcihyZWNpcGVkaXIpOgorICAgICAgICAgICAgZmlsZXNkaXIgPSBvcy5wYXRoLmpvaW4ocmVjaXBlZGlyLCBlbnRyeSkKKyAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIoZmlsZXNkaXIpOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuYWJsZSB0byBmaW5kIHJlY2lwZSBmaWxlcyBkaXJlY3RvcnkgZm9yICVzJyAlIHJlY2lwZSkKKyAgICAgICAgcmV0dXJuIHJlY2lwZSwgb2xkcmVjaXBlZmlsZSwgcmVjaXBlZGlyLCBmaWxlc2RpcgorCisgICAgQE9FVGVzdElEKDE2MjEpCisgICAgZGVmIHRlc3RfZGV2dG9vbF9maW5pc2hfbW9kaWZ5X29yaWdsYXllcihzZWxmKToKKyAgICAgICAgcmVjaXBlLCBvbGRyZWNpcGVmaWxlLCByZWNpcGVkaXIsIGZpbGVzZGlyID0gc2VsZi5fc2V0dXBfdGVzdF9kZXZ0b29sX2ZpbmlzaF9tb2RpZnkoKQorICAgICAgICAjIEVuc3VyZSB0aGUgcmVjaXBlIGlzIHdoZXJlIHdlIHRoaW5rIGl0IHNob3VsZCBiZSAoc28gdGhhdCBjbGVhbnVwIGRvZXNuJ3QgdHJhc2ggdGhpbmdzKQorICAgICAgICBzZWxmLmFzc2VydEluKCcvbWV0YS8nLCByZWNpcGVkaXIpCisgICAgICAgICMgVHJ5IGZpbmlzaCB0byB0aGUgb3JpZ2luYWwgbGF5ZXIKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bigncm0gLXJmICVzIDsgY2QgJXMgOyBnaXQgY2hlY2tvdXQgJXMnICUgKHJlY2lwZWRpciwgb3MucGF0aC5kaXJuYW1lKHJlY2lwZWRpciksIHJlY2lwZWRpcikpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBmaW5pc2ggJXMgbWV0YScgJSByZWNpcGUpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKHJlY2lwZSwgcmVzdWx0Lm91dHB1dCwgJ1JlY2lwZSBzaG91bGQgaGF2ZSBiZWVuIHJlc2V0IGJ5IGZpbmlzaCBidXQgd2FzblwndCcpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3JlY2lwZXMnLCByZWNpcGUpLCAnUmVjaXBlIGRpcmVjdG9yeSBzaG91bGQgbm90IGV4aXN0IGFmdGVyIGZpbmlzaCcpCisgICAgICAgIGV4cGVjdGVkX3N0YXR1cyA9IFsoJyBNJywgJy4qLyVzJCcgJSBvcy5wYXRoLmJhc2VuYW1lKG9sZHJlY2lwZWZpbGUpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnPz8nLCAnLiovLiotQWRkLWEtY29tbWVudC10by10aGUtY29kZS5wYXRjaCQnKV0KKyAgICAgICAgc2VsZi5fY2hlY2tfcmVwb19zdGF0dXMocmVjaXBlZGlyLCBleHBlY3RlZF9zdGF0dXMpCisKKyAgICBAT0VUZXN0SUQoMTYyMikKKyAgICBkZWYgdGVzdF9kZXZ0b29sX2ZpbmlzaF9tb2RpZnlfb3RoZXJsYXllcihzZWxmKToKKyAgICAgICAgcmVjaXBlLCBvbGRyZWNpcGVmaWxlLCByZWNpcGVkaXIsIGZpbGVzZGlyID0gc2VsZi5fc2V0dXBfdGVzdF9kZXZ0b29sX2ZpbmlzaF9tb2RpZnkoKQorICAgICAgICAjIEVuc3VyZSB0aGUgcmVjaXBlIGlzIHdoZXJlIHdlIHRoaW5rIGl0IHNob3VsZCBiZSAoc28gdGhhdCBjbGVhbnVwIGRvZXNuJ3QgdHJhc2ggdGhpbmdzKQorICAgICAgICBzZWxmLmFzc2VydEluKCcvbWV0YS8nLCByZWNpcGVkaXIpCisgICAgICAgIHJlbHB0aCA9IG9zLnBhdGgucmVscGF0aChyZWNpcGVkaXIsIG9zLnBhdGguam9pbihnZXRfYmJfdmFyKCdDT1JFQkFTRScpLCAnbWV0YScpKQorICAgICAgICBhcHBlbmRkaXIgPSBvcy5wYXRoLmpvaW4oZ2V0X3Rlc3RfbGF5ZXIoKSwgcmVscHRoKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKGFwcGVuZGRpcikKKyAgICAgICAgIyBUcnkgZmluaXNoIHRvIHRoZSBvcmlnaW5hbCBsYXllcgorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdybSAtcmYgJXMgOyBjZCAlcyA7IGdpdCBjaGVja291dCAlcycgJSAocmVjaXBlZGlyLCBvcy5wYXRoLmRpcm5hbWUocmVjaXBlZGlyKSwgcmVjaXBlZGlyKSkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGZpbmlzaCAlcyBtZXRhLXNlbGZ0ZXN0JyAlIHJlY2lwZSkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4ocmVjaXBlLCByZXN1bHQub3V0cHV0LCAnUmVjaXBlIHNob3VsZCBoYXZlIGJlZW4gcmVzZXQgYnkgZmluaXNoIGJ1dCB3YXNuXCd0JykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFeGlzdHMob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAncmVjaXBlcycsIHJlY2lwZSksICdSZWNpcGUgZGlyZWN0b3J5IHNob3VsZCBub3QgZXhpc3QgYWZ0ZXIgZmluaXNoJykKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgc3RhdHVzIC0tcG9yY2VsYWluIC4nLCBjd2Q9cmVjaXBlZGlyKQorICAgICAgICBpZiByZXN1bHQub3V0cHV0LnN0cmlwKCk6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ1JlY2lwZSBkaXJlY3RvcnkgZm9yICVzIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgdW5leHBlY3RlZCBjaGFuZ2VzIGFmdGVyIGZpbmlzaDpcbiVzJyAlIChyZWNpcGUsIHJlc3VsdC5vdXRwdXQuc3RyaXAoKSkpCisgICAgICAgIHJlY2lwZWZuID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKG9sZHJlY2lwZWZpbGUpKVswXQorICAgICAgICByZWNpcGVmbiA9IHJlY2lwZWZuLnNwbGl0KCdfJylbMF0gKyAnXyUnCisgICAgICAgIGFwcGVuZGZpbGUgPSBvcy5wYXRoLmpvaW4oYXBwZW5kZGlyLCByZWNpcGVmbiArICcuYmJhcHBlbmQnKQorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhhcHBlbmRmaWxlLCAnYmJhcHBlbmQgJXMgc2hvdWxkIGhhdmUgYmVlbiBjcmVhdGVkIGJ1dCB3YXNuXCd0JyAlIGFwcGVuZGZpbGUpCisgICAgICAgIG5ld2RpciA9IG9zLnBhdGguam9pbihhcHBlbmRkaXIsIHJlY2lwZSkKKyAgICAgICAgZmlsZXMgPSBvcy5saXN0ZGlyKG5ld2RpcikKKyAgICAgICAgZm91bmRwYXRjaCA9IE5vbmUKKyAgICAgICAgZm9yIGZuIGluIGZpbGVzOgorICAgICAgICAgICAgaWYgZm5tYXRjaC5mbm1hdGNoKGZuLCAnKi1BZGQtYS1jb21tZW50LXRvLXRoZS1jb2RlLnBhdGNoJyk6CisgICAgICAgICAgICAgICAgZm91bmRwYXRjaCA9IGZuCisgICAgICAgIGlmIG5vdCBmb3VuZHBhdGNoOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdObyBwYXRjaCBmaWxlIGNyZWF0ZWQgbmV4dCB0byBiYmFwcGVuZCcpCisgICAgICAgIGZpbGVzLnJlbW92ZShmb3VuZHBhdGNoKQorICAgICAgICBpZiBmaWxlczoKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5leHBlY3RlZCBmaWxlKHMpIGNvcGllZCBuZXh0IHRvIGJiYXBwZW5kOiAlcycgJSAnLCAnLmpvaW4oZmlsZXMpKQorCisgICAgQE9FVGVzdElEKDE2MjYpCisgICAgZGVmIHRlc3RfZGV2dG9vbF9yZW5hbWUoc2VsZik6CisgICAgICAgICMgQ2hlY2sgcHJlY29uZGl0aW9ucworICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IG9zLnBhdGguZXhpc3RzKHNlbGYud29ya3NwYWNlZGlyKSwgJ1RoaXMgdGVzdCBjYW5ub3QgYmUgcnVuIHdpdGggYSB3b3Jrc3BhY2UgZGlyZWN0b3J5IHVuZGVyIHRoZSBidWlsZCBkaXJlY3RvcnknKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQorCisgICAgICAgICMgRmlyc3QgcnVuIGRldnRvb2wgYWRkCisgICAgICAgICMgV2UgYWxyZWFkeSBoYXZlIHRoaXMgcmVjaXBlIGluIE9FLUNvcmUsIGJ1dCB0aGF0IGRvZXNuJ3QgbWF0dGVyCisgICAgICAgIHJlY2lwZW5hbWUgPSAnaTJjLXRvb2xzJworICAgICAgICByZWNpcGV2ZXIgPSAnMy4xLjInCisgICAgICAgIHJlY2lwZWZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdyZWNpcGVzJywgcmVjaXBlbmFtZSwgJyVzXyVzLmJiJyAlIChyZWNpcGVuYW1lLCByZWNpcGV2ZXIpKQorICAgICAgICB1cmwgPSAnaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzL2kyYy10b29scy0lcy50YXIuYnoyJyAlIHJlY2lwZXZlcgorICAgICAgICBkZWYgYWRkX3JlY2lwZSgpOgorICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGFkZCAlcycgJSB1cmwpCisgICAgICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhyZWNpcGVmaWxlLCAnRXhwZWN0ZWQgcmVjaXBlIGZpbGUgbm90IGNyZWF0ZWQnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnc291cmNlcycsIHJlY2lwZW5hbWUpLCAnU291cmNlIGRpcmVjdG9yeSBub3QgY3JlYXRlZCcpCisgICAgICAgICAgICBjaGVja3ZhcnMgPSB7fQorICAgICAgICAgICAgY2hlY2t2YXJzWydTJ10gPSBOb25lCisgICAgICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUkknXSA9IHVybC5yZXBsYWNlKHJlY2lwZXZlciwgJyR7UFZ9JykKKyAgICAgICAgICAgIHNlbGYuX3Rlc3RfcmVjaXBlX2NvbnRlbnRzKHJlY2lwZWZpbGUsIGNoZWNrdmFycywgW10pCisgICAgICAgIGFkZF9yZWNpcGUoKQorICAgICAgICAjIE5vdyByZW5hbWUgaXQgLSBjaGFuZ2UgYm90aCBuYW1lIGFuZCB2ZXJzaW9uCisgICAgICAgIG5ld3JlY2lwZW5hbWUgPSAnbXluZXdyZWNpcGUnCisgICAgICAgIG5ld3JlY2lwZXZlciA9ICc0NTYnCisgICAgICAgIG5ld3JlY2lwZWZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdyZWNpcGVzJywgbmV3cmVjaXBlbmFtZSwgJyVzXyVzLmJiJyAlIChuZXdyZWNpcGVuYW1lLCBuZXdyZWNpcGV2ZXIpKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgcmVuYW1lICVzICVzIC1WICVzJyAlIChyZWNpcGVuYW1lLCBuZXdyZWNpcGVuYW1lLCBuZXdyZWNpcGV2ZXIpKQorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhuZXdyZWNpcGVmaWxlLCAnUmVjaXBlIGZpbGUgbm90IHJlbmFtZWQnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdyZWNpcGVzJywgcmVjaXBlbmFtZSksICdPbGQgcmVjaXBlIGRpcmVjdG9yeSBzdGlsbCBleGlzdHMnKQorICAgICAgICBuZXdzcmN0cmVlID0gb3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnc291cmNlcycsIG5ld3JlY2lwZW5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKG5ld3NyY3RyZWUsICdTb3VyY2UgZGlyZWN0b3J5IG5vdCByZW5hbWVkJykKKyAgICAgICAgY2hlY2t2YXJzID0ge30KKyAgICAgICAgY2hlY2t2YXJzWydTJ10gPSAnJHtXT1JLRElSfS8lcy0lcycgJSAocmVjaXBlbmFtZSwgcmVjaXBldmVyKQorICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUkknXSA9IHVybAorICAgICAgICBzZWxmLl90ZXN0X3JlY2lwZV9jb250ZW50cyhuZXdyZWNpcGVmaWxlLCBjaGVja3ZhcnMsIFtdKQorICAgICAgICAjIFRyeSBhZ2FpbiAtIGNoYW5nZSBqdXN0IG5hbWUgdGhpcyB0aW1lCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCByZXNldCAtbiAlcycgJSBuZXdyZWNpcGVuYW1lKQorICAgICAgICBzaHV0aWwucm10cmVlKG5ld3NyY3RyZWUpCisgICAgICAgIGFkZF9yZWNpcGUoKQorICAgICAgICBuZXdyZWNpcGVmaWxlID0gb3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAncmVjaXBlcycsIG5ld3JlY2lwZW5hbWUsICclc18lcy5iYicgJSAobmV3cmVjaXBlbmFtZSwgcmVjaXBldmVyKSkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHJlbmFtZSAlcyAlcycgJSAocmVjaXBlbmFtZSwgbmV3cmVjaXBlbmFtZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKG5ld3JlY2lwZWZpbGUsICdSZWNpcGUgZmlsZSBub3QgcmVuYW1lZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3JlY2lwZXMnLCByZWNpcGVuYW1lKSwgJ09sZCByZWNpcGUgZGlyZWN0b3J5IHN0aWxsIGV4aXN0cycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3NvdXJjZXMnLCBuZXdyZWNpcGVuYW1lKSwgJ1NvdXJjZSBkaXJlY3Rvcnkgbm90IHJlbmFtZWQnKQorICAgICAgICBjaGVja3ZhcnMgPSB7fQorICAgICAgICBjaGVja3ZhcnNbJ1MnXSA9ICcke1dPUktESVJ9LyVzLSR7UFZ9JyAlIHJlY2lwZW5hbWUKKyAgICAgICAgY2hlY2t2YXJzWydTUkNfVVJJJ10gPSB1cmwucmVwbGFjZShyZWNpcGV2ZXIsICcke1BWfScpCisgICAgICAgIHNlbGYuX3Rlc3RfcmVjaXBlX2NvbnRlbnRzKG5ld3JlY2lwZWZpbGUsIGNoZWNrdmFycywgW10pCisgICAgICAgICMgVHJ5IGFnYWluIC0gY2hhbmdlIGp1c3QgdmVyc2lvbiB0aGlzIHRpbWUKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHJlc2V0IC1uICVzJyAlIG5ld3JlY2lwZW5hbWUpCisgICAgICAgIHNodXRpbC5ybXRyZWUobmV3c3JjdHJlZSkKKyAgICAgICAgYWRkX3JlY2lwZSgpCisgICAgICAgIG5ld3JlY2lwZWZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdyZWNpcGVzJywgcmVjaXBlbmFtZSwgJyVzXyVzLmJiJyAlIChyZWNpcGVuYW1lLCBuZXdyZWNpcGV2ZXIpKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgcmVuYW1lICVzIC1WICVzJyAlIChyZWNpcGVuYW1lLCBuZXdyZWNpcGV2ZXIpKQorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhuZXdyZWNpcGVmaWxlLCAnUmVjaXBlIGZpbGUgbm90IHJlbmFtZWQnKQorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdzb3VyY2VzJywgcmVjaXBlbmFtZSksICdTb3VyY2UgZGlyZWN0b3J5IG5vIGxvbmdlciBleGlzdHMnKQorICAgICAgICBjaGVja3ZhcnMgPSB7fQorICAgICAgICBjaGVja3ZhcnNbJ1MnXSA9ICcke1dPUktESVJ9LyR7QlBOfS0lcycgJSByZWNpcGV2ZXIKKyAgICAgICAgY2hlY2t2YXJzWydTUkNfVVJJJ10gPSB1cmwKKyAgICAgICAgc2VsZi5fdGVzdF9yZWNpcGVfY29udGVudHMobmV3cmVjaXBlZmlsZSwgY2hlY2t2YXJzLCBbXSkKKworICAgIEBPRVRlc3RJRCgxNTc3KQorICAgIGRlZiB0ZXN0X2RldnRvb2xfdmlydHVhbF9rZXJuZWxfbW9kaWZ5KHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgU3VtbWFyeTogICAgICAgIFRoZSBwdXJwb3NlIG9mIHRoaXMgdGVzdCBjYXNlIGlzIHRvIHZlcmlmeSB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICBkZXZ0b29sIG1vZGlmeSB3b3JrcyBjb3JyZWN0bHkgd2hlbiBidWlsZGluZworICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGtlcm5lbC4KKyAgICAgICAgRGVwZW5kZW5jaWVzOiAgIE5BCisgICAgICAgIFN0ZXBzOiAgICAgICAgICAxLiBCdWlsZCBrZXJuZWwgd2l0aCBiaXRiYWtlLgorICAgICAgICAgICAgICAgICAgICAgICAgMi4gU2F2ZSB0aGUgY29uZmlnIGZpbGUgZ2VuZXJhdGVkLgorICAgICAgICAgICAgICAgICAgICAgICAgMy4gQ2xlYW4gdGhlIGVudmlyb25tZW50LgorICAgICAgICAgICAgICAgICAgICAgICAgNC4gVXNlIGBkZXZ0b29sIG1vZGlmeSB2aXJ0dWFsL2tlcm5lbGAgdG8gdmFsaWRhdGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgNC4xIFRoZSBzb3VyY2UgaXMgY2hlY2tlZCBvdXQgY29ycmVjdGx5LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgNC4yIFRoZSByZXN1bHRpbmcgY29uZmlndXJhdGlvbiBpcyB0aGUgc2FtZSBhcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoYXQgd2FzIGdldCBvbiBzdGVwIDIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjMgVGhlIEtlcm5lbCBjYW4gYmUgYnVpbGQgY29ycmVjdGx5LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgNC40IENoYW5nZXMgbWFkZSBvbiB0aGUgc291cmNlIGFyZSByZWZsZWN0ZWQgb24gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2VxdWVudCBidWlsZHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICA0LjUgQ2hhbmdlcyBvbiB0aGUgY29uZmlndXJhdGlvbiBhcmUgcmVmbGVjdGVkIG9uIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNlcXVlbnQgYnVpbGRzCisgICAgICAgICBFeHBlY3RlZDogICAgICAgZGV2dG9vbCBtb2RpZnkgaXMgYWJsZSB0byBjaGVja291dCB0aGUgc291cmNlIG9mIHRoZSBrZXJuZWwKKyAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgbW9kaWZpY2F0aW9uIHRvIHRoZSBzb3VyY2UgYW5kIGNvbmZpZ3VyYXRpb25zIGFyZSByZWZsZWN0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIGJ1aWxkaW5nIHRoZSBrZXJuZWwuCisgICAgICAgICAiIiIKKyAgICAgICAga2VybmVsX3Byb3ZpZGVyID0gZ2V0X2JiX3ZhcignUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsJykKKyAgICAgICAgIyBDbGVhbiB1cCB0aGUgZW52aXJvbWVudAorICAgICAgICBiaXRiYWtlKCclcyAtYyBjbGVhbicgJSBrZXJuZWxfcHJvdmlkZXIpCisgICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKKyAgICAgICAgdGVtcGRpcl9jZmcgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nY29uZmlnX3FhJykKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXJfY2ZnKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQorICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlIC1jIGNsZWFuICVzJyAlIGtlcm5lbF9wcm92aWRlcikKKyAgICAgICAgI1N0ZXAgMQorICAgICAgICAjSGVyZSBpcyBqdXN0IGdlbmVyYXRlZCB0aGUgY29uZmlnIGZpbGUgaW5zdGVhZCBvZiBhbGwgdGhlIGtlcm5lbCB0byBvcHRpbWl6ZSB0aGUKKyAgICAgICAgI3RpbWUgb2YgZXhlY3V0aW5nIHRoaXMgdGVzdCBjYXNlLgorICAgICAgICBiaXRiYWtlKCclcyAtYyBjb25maWd1cmUnICUga2VybmVsX3Byb3ZpZGVyKQorICAgICAgICBiYmNvbmZpZyA9IG9zLnBhdGguam9pbihnZXRfYmJfdmFyKCdCJywga2VybmVsX3Byb3ZpZGVyKSwnLmNvbmZpZycpCisgICAgICAgICNTdGVwIDIKKyAgICAgICAgcnVuQ21kKCdjcCAlcyAlcycgJSAoYmJjb25maWcsIHRlbXBkaXJfY2ZnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGlzdHMob3MucGF0aC5qb2luKHRlbXBkaXJfY2ZnLCAnLmNvbmZpZycpLCAnQ291bGQgbm90IGNvcHkgLmNvbmZpZyBmaWxlIGZyb20ga2VybmVsJykKKworICAgICAgICB0bXBjb25maWcgPSBvcy5wYXRoLmpvaW4odGVtcGRpcl9jZmcsICcuY29uZmlnJykKKyAgICAgICAgI1N0ZXAgMworICAgICAgICBiaXRiYWtlKCclcyAtYyBjbGVhbicgJSBrZXJuZWxfcHJvdmlkZXIpCisgICAgICAgICNTdGVwIDQuMQorICAgICAgICBydW5DbWQoJ2RldnRvb2wgbW9kaWZ5IHZpcnR1YWwva2VybmVsIC14ICVzJyAlIHRlbXBkaXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKG9zLnBhdGguam9pbih0ZW1wZGlyLCAnTWFrZWZpbGUnKSwgJ0V4dHJhY3RlZCBzb3VyY2UgY291bGQgbm90IGJlIGZvdW5kJykKKyAgICAgICAgI1N0ZXAgNC4yCisgICAgICAgIGNvbmZpZ2ZpbGUgPSBvcy5wYXRoLmpvaW4odGVtcGRpciwnLmNvbmZpZycpCisgICAgICAgIGRpZmYgPSBydW5DbWQoJ2RpZmYgJXMgJXMnICUgKHRtcGNvbmZpZywgY29uZmlnZmlsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCxkaWZmLnN0YXR1cywnS2VybmVsIC5jb25maWcgZmlsZSBpcyBub3QgdGhlIHNhbWUgdXNpbmcgYml0YmFrZSBhbmQgZGV2dG9vbCcpCisgICAgICAgICNTdGVwIDQuMworICAgICAgICAjTk9URTogdmlydHVhbC9rZXJuZWwgaXMgbWFwcGVkIHRvIGtlcm5lbF9wcm92aWRlcgorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgYnVpbGQgJXMnICUga2VybmVsX3Byb3ZpZGVyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAscmVzdWx0LnN0YXR1cywnQ2Fubm90IGJ1aWxkIGtlcm5lbCB1c2luZyBgZGV2dG9vbCBidWlsZGAnKQorICAgICAgICBrZXJuZWxmaWxlID0gb3MucGF0aC5qb2luKGdldF9iYl92YXIoJ0tCVUlMRF9PVVRQVVQnLCBrZXJuZWxfcHJvdmlkZXIpLCAndm1saW51eCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhpc3RzKGtlcm5lbGZpbGUsICdLZXJuZWwgd2FzIG5vdCBidWlsZCBjb3JyZWN0bHknKQorCisgICAgICAgICNNb2RpZnkgdGhlIGtlcm5lbCBzb3VyY2UKKyAgICAgICAgbW9kZmlsZSA9IG9zLnBhdGguam9pbih0ZW1wZGlyLCdhcmNoL3g4Ni9ib290L2hlYWRlci5TJykKKyAgICAgICAgbW9kc3RyaW5nID0gIlVzZSBhIGJvb3QgbG9hZGVyLiBEZXZ0b29sIHRlc3RpbmcuIgorICAgICAgICBtb2RhcHBsaWVkID0gcnVuQ21kKCJzZWQgLWkgJ3MvVXNlIGEgYm9vdCBsb2FkZXIuLyVzLycgJXMiICUgKG1vZHN0cmluZywgbW9kZmlsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCxtb2RhcHBsaWVkLnN0YXR1cywnTW9kaWZpY2F0aW9uIHRvICVzIG9uIGtlcm5lbCBzb3VyY2UgZmFpbGVkJyAlIG1vZGZpbGUpCisgICAgICAgICNNb2RpZnkgdGhlIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgY29kZWNvbmZpZ2ZpbGUgPSBvcy5wYXRoLmpvaW4odGVtcGRpciwnLmNvbmZpZy5uZXcnKQorICAgICAgICBtb2Rjb25mb3B0ID0gIkNPTkZJR19TR19QT09MPW4iCisgICAgICAgIG1vZGNvbmYgPSBydW5DbWQoInNlZCAtaSAncy9DT05GSUdfU0dfUE9PTD15LyVzLycgJXMiICUgKG1vZGNvbmZvcHQsIGNvZGVjb25maWdmaWxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLG1vZGNvbmYuc3RhdHVzLCdNb2RpZmljYXRpb24gdG8gJXMgZmFpbGVkJyAlIGNvZGVjb25maWdmaWxlKQorICAgICAgICAjQnVpbGQgYWdhaW4ga2VybmVsIHdpdGggZGV2dG9vbAorICAgICAgICByZWJ1aWxkID0gcnVuQ21kKCdkZXZ0b29sIGJ1aWxkICVzJyAlIGtlcm5lbF9wcm92aWRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLHJlYnVpbGQuc3RhdHVzLCdGYWlsIHRvIGJ1aWxkIGtlcm5lbCBhZnRlciBtb2RpZmljYXRpb24gb2Ygc291cmNlIGFuZCBjb25maWcnKQorICAgICAgICAjU3RlcCA0LjQKKyAgICAgICAgYnppbWFnZW5hbWUgPSAnYnpJbWFnZS0nICsgZ2V0X2JiX3ZhcignS0VSTkVMX1ZFUlNJT05fTkFNRScsIGtlcm5lbF9wcm92aWRlcikKKyAgICAgICAgYnppbWFnZWZpbGUgPSBvcy5wYXRoLmpvaW4oZ2V0X2JiX3ZhcignRCcsIGtlcm5lbF9wcm92aWRlciksJ2Jvb3QnLCBiemltYWdlbmFtZSkKKyAgICAgICAgY2hlY2ttb2Rjb2RlID0gcnVuQ21kKCJncmVwICclcycgJXMiICUgKG1vZHN0cmluZywgYnppbWFnZWZpbGUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsY2hlY2ttb2Rjb2RlLnN0YXR1cywnTW9kaWZpY2F0aW9uIG9uIGtlcm5lbCBzb3VyY2UgZmFpbGVkJykKKyAgICAgICAgI1N0ZXAgNC41CisgICAgICAgIGNoZWNrbW9kY29uZmcgPSBydW5DbWQoImdyZXAgJXMgJXMiICUgKG1vZGNvbmZvcHQsIGNvZGVjb25maWdmaWxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLGNoZWNrbW9kY29uZmcuc3RhdHVzLCdNb2RpZmljYXRpb24gdG8gY29uZmlndXJhdGlvbiBmaWxlIGZhaWxlZCcpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9kaXN0cm9kYXRhLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZGlzdHJvZGF0YS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMjU0MGFkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZGlzdHJvZGF0YS5weQpAQCAtMCwwICsxLDQyIEBACitmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZSBpbXBvcnQgT0VTZWxmdGVzdFRlc3RDYXNlCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZCwgYml0YmFrZSwgZ2V0X2JiX3ZhciwgZ2V0X2JiX3ZhcnMKK2Zyb20gb2VxYS51dGlscy5kZWNvcmF0b3JzIGltcG9ydCB0ZXN0Y2FzZQorZnJvbSBvZXFhLnV0aWxzLmZ0b29scyBpbXBvcnQgd3JpdGVfZmlsZQorZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLm9laWQgaW1wb3J0IE9FVGVzdElECisKK2NsYXNzIERpc3Ryb2RhdGEoT0VTZWxmdGVzdFRlc3RDYXNlKToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIHN1cGVyKERpc3Ryb2RhdGEsIGNscykuc2V0VXBDbGFzcygpCisKKyAgICBAT0VUZXN0SUQoMTkwMikKKyAgICBkZWYgdGVzdF9jaGVja3BrZyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFN1bW1hcnk6ICAgICBUZXN0IHRoYXQgdXBzdHJlYW0gdmVyc2lvbiBjaGVja3MgZG8gbm90IHJlZ3Jlc3MKKyAgICAgICAgRXhwZWN0ZWQ6ICAgIFVwc3RyZWFtIHZlcnNpb24gY2hlY2tzIHNob3VsZCBzdWNjZWVkIGV4Y2VwdCBmb3IgdGhlIHJlY2lwZXMgbGlzdGVkIGluIHRoZSBleGNlcHRpb24gbGlzdC4KKyAgICAgICAgUHJvZHVjdDogICAgIG9lLWNvcmUKKyAgICAgICAgQXV0aG9yOiAgICAgIEFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+CisgICAgICAgICIiIgorICAgICAgICBmZWF0dXJlID0gJ0lOSEVSSVQgKz0gImRpc3Ryb2RhdGEiXG4nCisgICAgICAgIGZlYXR1cmUgKz0gJ0xJQ0VOU0VfRkxBR1NfV0hJVEVMSVNUICs9ICIgY29tbWVyY2lhbCJcbicKKworICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlKQorICAgICAgICBiaXRiYWtlKCctYyBjaGVja3BrZyB3b3JsZCcpCisgICAgICAgIGNoZWNrcGtnX3Jlc3VsdCA9IG9wZW4ob3MucGF0aC5qb2luKGdldF9iYl92YXIoIkxPR19ESVIiKSwgImNoZWNrcGtnLmNzdiIpKS5yZWFkbGluZXMoKVsxOl0KKyAgICAgICAgcmVncmVzc2VkX2ZhaWx1cmVzID0gW3BrZ19kYXRhWzBdIGZvciBwa2dfZGF0YSBpbiBbcGtnX2xpbmUuc3BsaXQoJ1x0JykgZm9yIHBrZ19saW5lIGluIGNoZWNrcGtnX3Jlc3VsdF0gaWYgcGtnX2RhdGFbMTFdID09ICdVTktOT1dOX0JST0tFTiddCisgICAgICAgIHJlZ3Jlc3NlZF9zdWNjZXNzZXMgPSBbcGtnX2RhdGFbMF0gZm9yIHBrZ19kYXRhIGluIFtwa2dfbGluZS5zcGxpdCgnXHQnKSBmb3IgcGtnX2xpbmUgaW4gY2hlY2twa2dfcmVzdWx0XSBpZiBwa2dfZGF0YVsxMV0gPT0gJ0tOT1dOX0JST0tFTiddCisgICAgICAgIG1zZyA9ICIiCisgICAgICAgIGlmIGxlbihyZWdyZXNzZWRfZmFpbHVyZXMpID4gMDoKKyAgICAgICAgICAgIG1zZyA9IG1zZyArICIiIgorVGhlIGZvbGxvd2luZyBwYWNrYWdlcyBmYWlsZWQgdXBzdHJlYW0gdmVyc2lvbiBjaGVja3MuIFBsZWFzZSBmaXggdGhlbSB1c2luZyBVUFNUUkVBTV9DSEVDS19VUkkvVVBTVFJFQU1fQ0hFQ0tfUkVHRVgKKyh3aGVuIHVzaW5nIHRhcmJhbGxzKSBvciBVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCAod2hlbiB1c2luZyBnaXQpLiBJZiBhbiB1cHN0cmVhbSB2ZXJzaW9uIGNoZWNrIGNhbm5vdCBiZSBwZXJmb3JtZWQKKyhmb3IgZXhhbXBsZSwgaWYgdXBzdHJlYW0gZG9lcyBub3QgdXNlIGdpdCB0YWdzKSwgeW91IGNhbiBzZXQgVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOIHRvICcxJyBpbiB0aGUgcmVjaXBlIHRvIGFja25vd2xlZGdlCit0aGF0IHRoZSBjaGVjayBjYW5ub3QgYmUgcGVyZm9ybWVkLgorIiIiICsgIlxuIi5qb2luKHJlZ3Jlc3NlZF9mYWlsdXJlcykKKyAgICAgICAgaWYgbGVuKHJlZ3Jlc3NlZF9zdWNjZXNzZXMpID4gMDoKKyAgICAgICAgICAgIG1zZyA9IG1zZyArICIiIgorVGhlIGZvbGxvd2luZyBwYWNrYWdlcyBoYXZlIGJlZW4gY2hlY2tlZCBzdWNjZXNzZnVsbHkgZm9yIHVwc3RyZWFtIHZlcnNpb25zLAorYnV0IHRoZWlyIHJlY2lwZXMgY2xhaW0gb3RoZXJ3aXNlIGJ5IHNldHRpbmcgVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOLiBQbGVhc2UgcmVtb3ZlIHRoYXQgbGluZSBmcm9tIHRoZSByZWNpcGVzLgorIiIiICsgIlxuIi5qb2luKHJlZ3Jlc3NlZF9zdWNjZXNzZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsZW4ocmVncmVzc2VkX2ZhaWx1cmVzKSA9PSAwIGFuZCBsZW4ocmVncmVzc2VkX3N1Y2Nlc3NlcykgPT0gMCwgbXNnKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZVNESy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2VTREsucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDAzMTg4ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2VTREsucHkKQEAgLTAsMCArMSwxMTEgQEAKK2ltcG9ydCB0ZW1wZmlsZQoraW1wb3J0IHNodXRpbAoraW1wb3J0IG9zCitpbXBvcnQgZ2xvYgorZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLm9laWQgaW1wb3J0IE9FVGVzdElECitmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZSBpbXBvcnQgT0VTZWxmdGVzdFRlc3RDYXNlCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZCwgYml0YmFrZSwgZ2V0X2JiX3ZhciwgZ2V0X2JiX3ZhcnMKKworY2xhc3Mgb2VTREtFeHRTZWxmVGVzdChPRVNlbGZ0ZXN0VGVzdENhc2UpOgorICAgICIiIgorICAgICMgQnVnemlsbGEgVGVzdCBQbGFuOiA2MDMzCisgICAgIyBUaGlzIGNvZGUgaXMgcGxhbm5lZCB0byBiZSBwYXJ0IG9mIHRoZSBhdXRvbWF0aW9uIGZvciBlU0RLIGNvbnRhaW5pZworICAgICMgSW5zdGFsbCBsaWJyYXJpZXMgYW5kIGhlYWRlcnMsIGltYWdlIGdlbmVyYXRpb24gYmluYXJ5IGZlZWRzLCBzZGstdXBkYXRlLgorICAgICIiIgorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBnZXRfZXNka19lbnZpcm9ubWVudChlbnZfZVNESywgdG1wZGlyX2VTREtRQSk6CisgICAgICAgICMgWFhYOiBhdCB0aGlzIHRpbWUgdXNlIHRoZSBmaXJzdCBlbnYgbmVlZCB0byBpbnZlc3RpZ2F0ZQorICAgICAgICAjIHdoYXQgZW52aXJvbm1lbnQgbG9hZCBvZS1zZWxmdGVzdCwgaTU4NiwgeDg2XzY0CisgICAgICAgIHBhdHRlcm4gPSBvcy5wYXRoLmpvaW4odG1wZGlyX2VTREtRQSwgJ2Vudmlyb25tZW50LXNldHVwLSonKQorICAgICAgICByZXR1cm4gZ2xvYi5nbG9iKHBhdHRlcm4pWzBdCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIHJ1bl9lc2RrX2NtZChlbnZfZVNESywgdG1wZGlyX2VTREtRQSwgY21kLCBwb3N0Y29uZmlnPU5vbmUsICoqb3B0aW9ucyk6CisgICAgICAgIGlmIHBvc3Rjb25maWc6CisgICAgICAgICAgICBlc2RrX2NvbmZfZmlsZSA9IG9zLnBhdGguam9pbih0bXBkaXJfZVNES1FBLCAnY29uZicsICdsb2NhbC5jb25mJykKKyAgICAgICAgICAgIHdpdGggb3Blbihlc2RrX2NvbmZfZmlsZSwgJ2ErJykgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKHBvc3Rjb25maWcpCisgICAgICAgIGlmIG5vdCBvcHRpb25zOgorICAgICAgICAgICAgb3B0aW9ucyA9IHt9CisgICAgICAgIGlmIG5vdCAnc2hlbGwnIGluIG9wdGlvbnM6CisgICAgICAgICAgICBvcHRpb25zWydzaGVsbCddID0gVHJ1ZQorCisgICAgICAgIHJ1bkNtZCgiY2QgJXM7IC4gJXM7ICVzIiAlICh0bXBkaXJfZVNES1FBLCBlbnZfZVNESywgY21kKSwgKipvcHRpb25zKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBnZW5lcmF0ZV9lU0RLKGltYWdlKToKKyAgICAgICAgcG5fdGFzayA9ICclcyAtYyBwb3B1bGF0ZV9zZGtfZXh0JyAlIGltYWdlCisgICAgICAgIGJpdGJha2UocG5fdGFzaykKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgZ2V0X2VTREtfdG9vbGNoYWluKGltYWdlKToKKyAgICAgICAgcG5fdGFzayA9ICclcyAtYyBwb3B1bGF0ZV9zZGtfZXh0JyAlIGltYWdlCisKKyAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnU0RLX0RFUExPWScsICdUT09MQ0hBSU5FWFRfT1VUUFVUTkFNRSddLCBwbl90YXNrKQorICAgICAgICBzZGtfZGVwbG95ID0gYmJfdmFyc1snU0RLX0RFUExPWSddCisgICAgICAgIHRvb2xjaGFpbl9uYW1lID0gYmJfdmFyc1snVE9PTENIQUlORVhUX09VVFBVVE5BTUUnXQorICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKHNka19kZXBsb3ksIHRvb2xjaGFpbl9uYW1lICsgJy5zaCcpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIHVwZGF0ZV9jb25maWd1cmF0aW9uKGNscywgaW1hZ2UsIHRtcGRpcl9lU0RLUUEsIGVudl9lU0RLLCBleHRfc2RrX3BhdGgpOgorICAgICAgICBzc3RhdGVfZGlyID0gb3MucGF0aC5qb2luKG9zLmVudmlyb25bJ0JVSUxERElSJ10sICdzc3RhdGUtY2FjaGUnKQorCisgICAgICAgIG9lU0RLRXh0U2VsZlRlc3QuZ2VuZXJhdGVfZVNESyhjbHMuaW1hZ2UpCisKKyAgICAgICAgY2xzLmV4dF9zZGtfcGF0aCA9IG9lU0RLRXh0U2VsZlRlc3QuZ2V0X2VTREtfdG9vbGNoYWluKGNscy5pbWFnZSkKKyAgICAgICAgcnVuQ21kKCIlcyAteSAtZCBcIiVzXCIiICUgKGNscy5leHRfc2RrX3BhdGgsIGNscy50bXBkaXJfZVNES1FBKSkKKworICAgICAgICBjbHMuZW52X2VTREsgPSBvZVNES0V4dFNlbGZUZXN0LmdldF9lc2RrX2Vudmlyb25tZW50KCcnLCBjbHMudG1wZGlyX2VTREtRQSkKKworICAgICAgICBzc3RhdGVfY29uZmlnPSIiIgorU0RLX0xPQ0FMX0NPTkZfV0hJVEVMSVNUID0gIlNTVEFURV9NSVJST1JTIgorU1NUQVRFX01JUlJPUlMgPSAgImZpbGU6Ly8uKiBmaWxlOi8vJXMvUEFUSCIKK0NPUkVfSU1BR0VfRVhUUkFfSU5TVEFMTCA9ICJwZXJsIgorICAgICAgICAiIiIgJSBzc3RhdGVfZGlyCisKKyAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihjbHMudG1wZGlyX2VTREtRQSwgJ2NvbmYnLCAnbG9jYWwuY29uZicpLCAnYSsnKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShzc3RhdGVfY29uZmlnKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgc3VwZXIob2VTREtFeHRTZWxmVGVzdCwgY2xzKS5zZXRVcENsYXNzKCkKKyAgICAgICAgY2xzLnRtcGRpcl9lU0RLUUEgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZVNES1FBJykKKworICAgICAgICBzc3RhdGVfZGlyID0gZ2V0X2JiX3ZhcignU1NUQVRFX0RJUicpCisKKyAgICAgICAgY2xzLmltYWdlID0gJ2NvcmUtaW1hZ2UtbWluaW1hbCcKKyAgICAgICAgb2VTREtFeHRTZWxmVGVzdC5nZW5lcmF0ZV9lU0RLKGNscy5pbWFnZSkKKworICAgICAgICAjIEluc3RhbGwgZVNESworICAgICAgICBjbHMuZXh0X3Nka19wYXRoID0gb2VTREtFeHRTZWxmVGVzdC5nZXRfZVNES190b29sY2hhaW4oY2xzLmltYWdlKQorICAgICAgICBydW5DbWQoIiVzIC15IC1kIFwiJXNcIiIgJSAoY2xzLmV4dF9zZGtfcGF0aCwgY2xzLnRtcGRpcl9lU0RLUUEpKQorCisgICAgICAgIGNscy5lbnZfZVNESyA9IG9lU0RLRXh0U2VsZlRlc3QuZ2V0X2VzZGtfZW52aXJvbm1lbnQoJycsIGNscy50bXBkaXJfZVNES1FBKQorCisgICAgICAgICMgQ29uZmlndXJlIGVTREsgdG8gdXNlIHNzdGF0ZSBtaXJyb3IgZnJvbSBwb2t5CisgICAgICAgIHNzdGF0ZV9jb25maWc9IiIiCitTREtfTE9DQUxfQ09ORl9XSElURUxJU1QgPSAiU1NUQVRFX01JUlJPUlMiCitTU1RBVEVfTUlSUk9SUyA9ICAiZmlsZTovLy4qIGZpbGU6Ly8lcy9QQVRIIgorICAgICAgICAgICAgIiIiICUgc3N0YXRlX2RpcgorICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGNscy50bXBkaXJfZVNES1FBLCAnY29uZicsICdsb2NhbC5jb25mJyksICdhKycpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKHNzdGF0ZV9jb25maWcpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBzaHV0aWwucm10cmVlKGNscy50bXBkaXJfZVNES1FBLCBpZ25vcmVfZXJyb3JzPVRydWUpCisgICAgICAgIHN1cGVyKG9lU0RLRXh0U2VsZlRlc3QsIGNscykudGVhckRvd25DbGFzcygpCisKKyAgICBAT0VUZXN0SUQoMTYwMikKKyAgICBkZWYgdGVzdF9pbnN0YWxsX2xpYnJhcmllc19oZWFkZXJzKHNlbGYpOgorICAgICAgICBwbl9zc3RhdGUgPSAnYmMnCisgICAgICAgIGJpdGJha2UocG5fc3N0YXRlKQorICAgICAgICBjbWQgPSAiZGV2dG9vbCBzZGstaW5zdGFsbCAlcyAiICUgcG5fc3N0YXRlCisgICAgICAgIG9lU0RLRXh0U2VsZlRlc3QucnVuX2VzZGtfY21kKHNlbGYuZW52X2VTREssIHNlbGYudG1wZGlyX2VTREtRQSwgY21kKQorCisgICAgQE9FVGVzdElEKDE2MDMpCisgICAgZGVmIHRlc3RfaW1hZ2VfZ2VuZXJhdGlvbl9iaW5hcnlfZmVlZHMoc2VsZik6CisgICAgICAgIGltYWdlID0gJ2NvcmUtaW1hZ2UtbWluaW1hbCcKKyAgICAgICAgY21kID0gImRldnRvb2wgYnVpbGQtaW1hZ2UgJXMiICUgaW1hZ2UKKyAgICAgICAgb2VTREtFeHRTZWxmVGVzdC5ydW5fZXNka19jbWQoc2VsZi5lbnZfZVNESywgc2VsZi50bXBkaXJfZVNES1FBLCBjbWQpCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2ltYWdlX3R5cGVkZXAucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9pbWFnZV90eXBlZGVwLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2Nzg4ODUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9pbWFnZV90eXBlZGVwLnB5CkBAIC0wLDAgKzEsNTMgQEAKK2ltcG9ydCBvcworCitmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZSBpbXBvcnQgT0VTZWxmdGVzdFRlc3RDYXNlCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IGJpdGJha2UKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvci5vZWlkIGltcG9ydCBPRVRlc3RJRAorCitjbGFzcyBJbWFnZVR5cGVEZXBUZXN0cyhPRVNlbGZ0ZXN0VGVzdENhc2UpOgorCisgICAgIyBWZXJpZnkgdGhhdCB3aGVuIHNwZWNpZnlpbmcgYSBJTUFHRV9UWVBFREVQXyBvZiB0aGUgZm9ybSAiZm9vLmJhciIgdGhhdAorICAgICMgdGhlIGNvbnZlcnNpb24gdHlwZSBiYXIgZ2V0cyBhZGRlZCBhcyBhIGRlcCBhcyB3ZWxsCisgICAgQE9FVGVzdElEKDE2MzMpCisgICAgZGVmIHRlc3RfY29udmVyc2lvbl90eXBlZGVwX2FkZGVkKHNlbGYpOgorCisgICAgICAgIHNlbGYud3JpdGVfcmVjaXBlaW5jKCdlbXB0eXRlc3QnLCAiIiIKKyMgVHJ5IHRvIGVtcHR5IG91dCB0aGUgZGVmYXVsdCBkZXBlbmRlbmN5IGxpc3QKK1BBQ0tBR0VfSU5TVEFMTCA9ICIiCitESVNUUk9fRVhUUkFfUkRFUEVORFM9IiIKKworTElDRU5TRSA9ICJNSVQiCitJTUFHRV9GU1RZUEVTID0gInRlc3Rmc3R5cGUiCisKK0lNQUdFX1RZUEVTX01BU0tFRCArPSAidGVzdGZzdHlwZSIKK0lNQUdFX1RZUEVERVBfdGVzdGZzdHlwZSA9ICJ0YXIuYnoyIgorCitpbmhlcml0IGltYWdlCisKKyIiIikKKyAgICAgICAgIyBGaXJzdCBnZXQgdGhlIGRlcGVuZGVuY3kgdGhhdCBzaG91bGQgZXhpc3QgZm9yIGJ6MiwgaXQgd2lsbCBsb29rCisgICAgICAgICMgbGlrZSBDT05WRVJTSU9OX0RFUEVORFNfYnoyPSJzb21lZGVwIgorICAgICAgICByZXN1bHQgPSBiaXRiYWtlKCctZSBlbXB0eXRlc3QnKQorCisgICAgICAgIGZvciBsaW5lIGluIHJlc3VsdC5vdXRwdXQuc3BsaXQoJ1xuJyk6CisgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJ0NPTlZFUlNJT05fREVQRU5EU19iejInKToKKyAgICAgICAgICAgICAgICBkZXAgPSBsaW5lLnNwbGl0KCc9JylbMV0uc3RyaXAoJyInKQorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgIyBOb3cgZ2V0IHRoZSBkZXBlbmRlbmN5IHRhc2sgbGlzdCBhbmQgY2hlY2sgZm9yIHRoZSBleHBlY3RlZCB0YXNrCisgICAgICAgICMgZGVwZW5kZW5jeQorICAgICAgICBiaXRiYWtlKCctZyBlbXB0eXRlc3QnKQorCisgICAgICAgIHRhc2tkZXBlbmRzZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCAndGFzay1kZXBlbmRzLmRvdCcpCisgICAgICAgIGRlcCA9ICBkZXAgKyAiLmRvX3BvcHVsYXRlX3N5c3Jvb3QiCisgICAgICAgIGRlcGZvdW5kID0gRmFsc2UKKyAgICAgICAgZXhwZWN0ZWRsaW5lID0gJyJlbXB0eXRlc3QuZG9fcm9vdGZzIiAtPiAie30iJy5mb3JtYXQoZGVwKQorCisgICAgICAgIHdpdGggb3Blbih0YXNrZGVwZW5kc2ZpbGUsICJyIikgYXMgZjoKKyAgICAgICAgICAgIGZvciBsaW5lIGluIGY6CisgICAgICAgICAgICAgICAgaWYgbGluZS5zdHJpcCgpID09IGV4cGVjdGVkbGluZToKKyAgICAgICAgICAgICAgICAgICAgZGVwZm91bmQgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgaWYgbm90IGRlcGZvdW5kOgorICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoIlwie31cIiBub3QgZm91bmQiLmZvcm1hdChleHBlY3RlZGxpbmUpKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvaW1hZ2VmZWF0dXJlcy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2ltYWdlZmVhdHVyZXMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGZmYjY4NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2ltYWdlZmVhdHVyZXMucHkKQEAgLTAsMCArMSwyNDAgQEAKK2Zyb20gb2VxYS5zZWxmdGVzdC5jYXNlIGltcG9ydCBPRVNlbGZ0ZXN0VGVzdENhc2UKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kLCBiaXRiYWtlLCBnZXRfYmJfdmFyLCBydW5xZW11Citmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3Iub2VpZCBpbXBvcnQgT0VUZXN0SUQKK2Zyb20gb2VxYS51dGlscy5zc2hjb250cm9sIGltcG9ydCBTU0hDb250cm9sCitpbXBvcnQgb3MKK2ltcG9ydCBqc29uCisKK2NsYXNzIEltYWdlRmVhdHVyZXMoT0VTZWxmdGVzdFRlc3RDYXNlKToKKworICAgIHRlc3RfdXNlciA9ICd0ZXN0ZXInCisgICAgcm9vdF91c2VyID0gJ3Jvb3QnCisKKyAgICBidWZmZXIgPSBUcnVlCisKKyAgICBAT0VUZXN0SUQoMTEwNykKKyAgICBkZWYgdGVzdF9ub25fcm9vdF91c2VyX2Nhbl9jb25uZWN0X3ZpYV9zc2hfd2l0aG91dF9wYXNzd29yZChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFN1bW1hcnk6IENoZWNrIGlmIG5vbiByb290IHVzZXIgY2FuIGNvbm5lY3QgdmlhIHNzaCB3aXRob3V0IHBhc3N3b3JkCisgICAgICAgIEV4cGVjdGVkOiAxLiBDb25uZWN0aW9uIHRvIHRoZSBpbWFnZSB2aWEgc3NoIHVzaW5nIHJvb3QgdXNlciB3aXRob3V0IHByb3ZpZGluZyBhIHBhc3N3b3JkIHNob3VsZCBiZSBhbGxvd2VkLgorICAgICAgICAgICAgICAgICAgMi4gQ29ubmVjdGlvbiB0byB0aGUgaW1hZ2UgdmlhIHNzaCB1c2luZyB0ZXN0ZXIgdXNlciB3aXRob3V0IHByb3ZpZGluZyBhIHBhc3N3b3JkIHNob3VsZCBiZSBhbGxvd2VkLgorICAgICAgICBQcm9kdWN0OiBvZS1jb3JlCisgICAgICAgIEF1dGhvcjogSW9udXQgQ2hpc2Fub3ZpY2kgPGlvbnV0eC5jaGlzYW5vdmljaUBpbnRlbC5jb20+CisgICAgICAgIEF1dG9tYXRlZEJ5OiBEYW5pZWwgSXN0cmF0ZSA8ZGFuaWVsLmFsZXhhbmRydXguaXN0cmF0ZUBpbnRlbC5jb20+CisgICAgICAgICIiIgorCisgICAgICAgIGZlYXR1cmVzID0gJ0VYVFJBX0lNQUdFX0ZFQVRVUkVTID0gInNzaC1zZXJ2ZXItb3BlbnNzaCBlbXB0eS1yb290LXBhc3N3b3JkIGFsbG93LWVtcHR5LXBhc3N3b3JkIlxuJworICAgICAgICBmZWF0dXJlcyArPSAnSU5IRVJJVCArPSAiZXh0cmF1c2VycyJcbicKKyAgICAgICAgZmVhdHVyZXMgKz0gJ0VYVFJBX1VTRVJTX1BBUkFNUyA9ICJ1c2VyYWRkIC1wIFwnXCcge307IHVzZXJtb2QgLXMgL2Jpbi9zaCB7fTsiJy5mb3JtYXQoc2VsZi50ZXN0X3VzZXIsIHNlbGYudGVzdF91c2VyKQorICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKKworICAgICAgICAjIEJ1aWxkIGEgY29yZS1pbWFnZS1taW5pbWFsCisgICAgICAgIGJpdGJha2UoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCisKKyAgICAgICAgd2l0aCBydW5xZW11KCJjb3JlLWltYWdlLW1pbmltYWwiKSBhcyBxZW11OgorICAgICAgICAgICAgIyBBdHRlbXB0IHRvIHNzaCB3aXRoIGVhY2ggdXNlciBpbnRvIHFlbXUgd2l0aCBlbXB0eSBwYXNzd29yZAorICAgICAgICAgICAgZm9yIHVzZXIgaW4gW3NlbGYucm9vdF91c2VyLCBzZWxmLnRlc3RfdXNlcl06CisgICAgICAgICAgICAgICAgc3NoID0gU1NIQ29udHJvbChpcD1xZW11LmlwLCBsb2dmaWxlPXFlbXUuc3NobG9nLCB1c2VyPXVzZXIpCisgICAgICAgICAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzc2gucnVuKCJ0cnVlIikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMCwgJ3NzaCB0byB1c2VyICVzIGZhaWxlZCB3aXRoICVzJyAlICh1c2VyLCBvdXRwdXQpKQorCisgICAgQE9FVGVzdElEKDExMTUpCisgICAgZGVmIHRlc3RfYWxsX3VzZXJzX2Nhbl9jb25uZWN0X3ZpYV9zc2hfd2l0aG91dF9wYXNzd29yZChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFN1bW1hcnk6ICAgICBDaGVjayBpZiBhbGwgdXNlcnMgY2FuIGNvbm5lY3QgdmlhIHNzaCB3aXRob3V0IHBhc3N3b3JkCisgICAgICAgIEV4cGVjdGVkOiAxLiBDb25uZWN0aW9uIHRvIHRoZSBpbWFnZSB2aWEgc3NoIHVzaW5nIHJvb3QgdXNlciB3aXRob3V0IHByb3ZpZGluZyBhIHBhc3N3b3JkIHNob3VsZCBOT1QgYmUgYWxsb3dlZC4KKyAgICAgICAgICAgICAgICAgIDIuIENvbm5lY3Rpb24gdG8gdGhlIGltYWdlIHZpYSBzc2ggdXNpbmcgdGVzdGVyIHVzZXIgd2l0aG91dCBwcm92aWRpbmcgYSBwYXNzd29yZCBzaG91bGQgYmUgYWxsb3dlZC4KKyAgICAgICAgUHJvZHVjdDogICAgIG9lLWNvcmUKKyAgICAgICAgQXV0aG9yOiAgICAgIElvbnV0IENoaXNhbm92aWNpIDxpb251dHguY2hpc2Fub3ZpY2lAaW50ZWwuY29tPgorICAgICAgICBBdXRvbWF0ZWRCeTogRGFuaWVsIElzdHJhdGUgPGRhbmllbC5hbGV4YW5kcnV4LmlzdHJhdGVAaW50ZWwuY29tPgorICAgICAgICAiIiIKKworICAgICAgICBmZWF0dXJlcyA9ICdFWFRSQV9JTUFHRV9GRUFUVVJFUyA9ICJzc2gtc2VydmVyLW9wZW5zc2ggYWxsb3ctZW1wdHktcGFzc3dvcmQiXG4nCisgICAgICAgIGZlYXR1cmVzICs9ICdJTkhFUklUICs9ICJleHRyYXVzZXJzIlxuJworICAgICAgICBmZWF0dXJlcyArPSAnRVhUUkFfVVNFUlNfUEFSQU1TID0gInVzZXJhZGQgLXAgXCdcJyB7fTsgdXNlcm1vZCAtcyAvYmluL3NoIHt9OyInLmZvcm1hdChzZWxmLnRlc3RfdXNlciwgc2VsZi50ZXN0X3VzZXIpCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmVzKQorCisgICAgICAgICMgQnVpbGQgYSBjb3JlLWltYWdlLW1pbmltYWwKKyAgICAgICAgYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsJykKKworICAgICAgICB3aXRoIHJ1bnFlbXUoImNvcmUtaW1hZ2UtbWluaW1hbCIpIGFzIHFlbXU6CisgICAgICAgICAgICAjIEF0dGVtcHQgdG8gc3NoIHdpdGggZWFjaCB1c2VyIGludG8gcWVtdSB3aXRoIGVtcHR5IHBhc3N3b3JkCisgICAgICAgICAgICBmb3IgdXNlciBpbiBbc2VsZi5yb290X3VzZXIsIHNlbGYudGVzdF91c2VyXToKKyAgICAgICAgICAgICAgICBzc2ggPSBTU0hDb250cm9sKGlwPXFlbXUuaXAsIGxvZ2ZpbGU9cWVtdS5zc2hsb2csIHVzZXI9dXNlcikKKyAgICAgICAgICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNzaC5ydW4oInRydWUiKQorICAgICAgICAgICAgICAgIGlmIHVzZXIgPT0gJ3Jvb3QnOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHN0YXR1cywgMCwgJ3NzaCB0byB1c2VyIHJvb3Qgd2FzIGFsbG93ZWQgd2hlbiBpdCBzaG91bGQgbm90IGhhdmUgYmVlbicpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDAsICdzc2ggdG8gdXNlciB0ZXN0ZXIgZmFpbGVkIHdpdGggJXMnICUgb3V0cHV0KQorCisKKyAgICBAT0VUZXN0SUQoMTExNikKKyAgICBkZWYgdGVzdF9jbHV0dGVyX2ltYWdlX2Nhbl9iZV9idWlsdChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFN1bW1hcnk6ICAgICBDaGVjayBpZiBjbHV0dGVyIGltYWdlIGNhbiBiZSBidWlsdAorICAgICAgICBFeHBlY3RlZDogICAgMS4gY29yZS1pbWFnZS1jbHV0dGVyIGNhbiBiZSBidWlsdAorICAgICAgICBQcm9kdWN0OiAgICAgb2UtY29yZQorICAgICAgICBBdXRob3I6ICAgICAgSW9udXQgQ2hpc2Fub3ZpY2kgPGlvbnV0eC5jaGlzYW5vdmljaUBpbnRlbC5jb20+CisgICAgICAgIEF1dG9tYXRlZEJ5OiBEYW5pZWwgSXN0cmF0ZSA8ZGFuaWVsLmFsZXhhbmRydXguaXN0cmF0ZUBpbnRlbC5jb20+CisgICAgICAgICIiIgorCisgICAgICAgICMgQnVpbGQgYSBjb3JlLWltYWdlLWNsdXR0ZXIKKyAgICAgICAgYml0YmFrZSgnY29yZS1pbWFnZS1jbHV0dGVyJykKKworICAgIEBPRVRlc3RJRCgxMTE3KQorICAgIGRlZiB0ZXN0X3dheWxhbmRfc3VwcG9ydF9pbl9pbWFnZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFN1bW1hcnk6ICAgICBDaGVjayBXYXlsYW5kIHN1cHBvcnQgaW4gaW1hZ2UKKyAgICAgICAgRXhwZWN0ZWQ6ICAgIDEuIFdheWxhbmQgaW1hZ2UgY2FuIGJlIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgICAyLiBXYXlsYW5kIGZlYXR1cmUgY2FuIGJlIGluc3RhbGxlZAorICAgICAgICBQcm9kdWN0OiAgICAgb2UtY29yZQorICAgICAgICBBdXRob3I6ICAgICAgSW9udXQgQ2hpc2Fub3ZpY2kgPGlvbnV0eC5jaGlzYW5vdmljaUBpbnRlbC5jb20+CisgICAgICAgIEF1dG9tYXRlZEJ5OiBEYW5pZWwgSXN0cmF0ZSA8ZGFuaWVsLmFsZXhhbmRydXguaXN0cmF0ZUBpbnRlbC5jb20+CisgICAgICAgICIiIgorCisgICAgICAgIGRpc3Ryb19mZWF0dXJlcyA9IGdldF9iYl92YXIoJ0RJU1RST19GRUFUVVJFUycpCisgICAgICAgIGlmIG5vdCAoJ29wZW5nbCcgaW4gZGlzdHJvX2ZlYXR1cmVzIGFuZCAnd2F5bGFuZCcgaW4gZGlzdHJvX2ZlYXR1cmVzKToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ25laXRoZXIgb3BlbmdsIG5vciB3YXlsYW5kIHByZXNlbnQgb24gRElTVFJPX0ZFQVRVUkVTIHNvIGNvcmUtaW1hZ2Utd2VzdG9uIGNhbm5vdCBiZSBidWlsdCcpCisKKyAgICAgICAgIyBCdWlsZCBhIGNvcmUtaW1hZ2Utd2VzdG9uCisgICAgICAgIGJpdGJha2UoJ2NvcmUtaW1hZ2Utd2VzdG9uJykKKworICAgIEBPRVRlc3RJRCgxNDk3KQorICAgIGRlZiB0ZXN0X2JtYXAoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBTdW1tYXJ5OiAgICAgQ2hlY2sgYm1hcCBzdXBwb3J0CisgICAgICAgIEV4cGVjdGVkOiAgICAxLiBjb3JlLWltYWdlLW1pbmltYWwgY2FuIGJlIGJ1aWxkIHdpdGggYm1hcCBzdXBwb3J0CisgICAgICAgICAgICAgICAgICAgICAyLiBjb3JlLWltYWdlLW1pbmltYWwgaXMgc3BhcnNlCisgICAgICAgIFByb2R1Y3Q6ICAgICBvZS1jb3JlCisgICAgICAgIEF1dGhvcjogICAgICBFZCBCYXJ0b3NoIDxlZC5iYXJ0b3NoQGxpbnV4LmludGVsLmNvbT4KKyAgICAgICAgIiIiCisKKyAgICAgICAgZmVhdHVyZXMgPSAnSU1BR0VfRlNUWVBFUyArPSAiIGV4dDQgZXh0NC5ibWFwIGV4dDQuYm1hcC5neiInCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmVzKQorCisgICAgICAgIGltYWdlX25hbWUgPSAnY29yZS1pbWFnZS1taW5pbWFsJworICAgICAgICBiaXRiYWtlKGltYWdlX25hbWUpCisKKyAgICAgICAgZGVwbG95X2Rpcl9pbWFnZSA9IGdldF9iYl92YXIoJ0RFUExPWV9ESVJfSU1BR0UnKQorICAgICAgICBsaW5rX25hbWUgPSBnZXRfYmJfdmFyKCdJTUFHRV9MSU5LX05BTUUnLCBpbWFnZV9uYW1lKQorICAgICAgICBpbWFnZV9wYXRoID0gb3MucGF0aC5qb2luKGRlcGxveV9kaXJfaW1hZ2UsICIlcy5leHQ0IiAlIGxpbmtfbmFtZSkKKyAgICAgICAgYm1hcF9wYXRoID0gIiVzLmJtYXAiICUgaW1hZ2VfcGF0aAorICAgICAgICBnemlwX3BhdGggPSAiJXMuZ3oiICUgYm1hcF9wYXRoCisKKyAgICAgICAgIyBjaGVjayBpZiByZXN1bHQgaW1hZ2UsIGJtYXAgYW5kIGJtYXAuZ3ogZmlsZXMgYXJlIGluIGRlcGxveSBkaXJlY3RvcnkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGltYWdlX3BhdGgpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoYm1hcF9wYXRoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGd6aXBfcGF0aCkpCisKKyAgICAgICAgIyBjaGVjayBpZiByZXN1bHQgaW1hZ2UgaXMgc3BhcnNlCisgICAgICAgIGltYWdlX3N0YXQgPSBvcy5zdGF0KGltYWdlX3BhdGgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbWFnZV9zdGF0LnN0X3NpemUgPiBpbWFnZV9zdGF0LnN0X2Jsb2NrcyAqIDUxMikKKworICAgICAgICAjIGNoZWNrIGlmIHRoZSByZXN1bHRpbmcgZ3ppcCBpcyB2YWxpZAorICAgICAgICBzZWxmLmFzc2VydFRydWUocnVuQ21kKCdnemlwIC10ICVzJyAlIGd6aXBfcGF0aCkpCisKKyAgICBAT0VUZXN0SUQoMTkwMykKKyAgICBkZWYgdGVzdF9oeXBlcnZpc29yX2ZtdHMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBTdW1tYXJ5OiAgICAgQ2hlY2sgdmFyaW91cyBoeXBlcnZpc29yIGZvcm1hdHMKKyAgICAgICAgRXhwZWN0ZWQ6ICAgIDEuIGNvcmUtaW1hZ2UtbWluaW1hbCBjYW4gYmUgYnVpbHQgd2l0aCB2bWRrLCB2ZGkgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBxY293MiBzdXBwb3J0LgorICAgICAgICAgICAgICAgICAgICAgMi4gcWVtdS1pbWcgc2F5cyBlYWNoIGltYWdlIGhhcyB0aGUgZXhwZWN0ZWQgZm9ybWF0CisgICAgICAgIFByb2R1Y3Q6ICAgICBvZS1jb3JlCisgICAgICAgIEF1dGhvcjogICAgICBUb20gUmluaSA8dHJpbmlAa29uc3Vsa28uY29tPgorICAgICAgICAiIiIKKworICAgICAgICBpbWdfdHlwZXMgPSBbICd2bWRrJywgJ3ZkaScsICdxY293MicgXQorICAgICAgICBmZWF0dXJlcyA9ICIiCisgICAgICAgIGZvciBpdHlwZSBpbiBpbWdfdHlwZXM6CisgICAgICAgICAgICBmZWF0dXJlcyArPSAnSU1BR0VfRlNUWVBFUyArPSAid2ljLiVzIlxuJyAlIGl0eXBlCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmVzKQorCisgICAgICAgIGltYWdlX25hbWUgPSAnY29yZS1pbWFnZS1taW5pbWFsJworICAgICAgICBiaXRiYWtlKGltYWdlX25hbWUpCisKKyAgICAgICAgZGVwbG95X2Rpcl9pbWFnZSA9IGdldF9iYl92YXIoJ0RFUExPWV9ESVJfSU1BR0UnKQorICAgICAgICBsaW5rX25hbWUgPSBnZXRfYmJfdmFyKCdJTUFHRV9MSU5LX05BTUUnLCBpbWFnZV9uYW1lKQorICAgICAgICBmb3IgaXR5cGUgaW4gaW1nX3R5cGVzOgorICAgICAgICAgICAgaW1hZ2VfcGF0aCA9IG9zLnBhdGguam9pbihkZXBsb3lfZGlyX2ltYWdlLCAiJXMud2ljLiVzIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaW5rX25hbWUsIGl0eXBlKSkKKworICAgICAgICAgICAgIyBjaGVjayBpZiByZXN1bHQgaW1hZ2UgZmlsZSBpcyBpbiBkZXBsb3kgZGlyZWN0b3J5CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoaW1hZ2VfcGF0aCkpCisKKyAgICAgICAgICAgICMgY2hlY2sgaWYgcmVzdWx0IGltYWdlIGlzIHZtZGsKKyAgICAgICAgICAgIHN5c3Jvb3QgPSBnZXRfYmJfdmFyKCdTVEFHSU5HX0RJUl9OQVRJVkUnLCAnY29yZS1pbWFnZS1taW5pbWFsJykKKyAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgncWVtdS1pbWcgaW5mbyAtLW91dHB1dCBqc29uICVzJyAlIGltYWdlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlX3N5c3Jvb3Q9c3lzcm9vdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShqc29uLmxvYWRzKHJlc3VsdC5vdXRwdXQpLmdldCgnZm9ybWF0JykgPT0gaXR5cGUpCisKKyAgICBAT0VUZXN0SUQoMTkwNSkKKyAgICBkZWYgdGVzdF9sb25nX2NoYWluX2NvbnZlcnNpb24oc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBTdW1tYXJ5OiAgICAgQ2hlY2sgZm9yIGNoYWluaW5nIG1hbnkgQ09OVkVSU0lPTl9DTURzIHRvZ2V0aGVyCisgICAgICAgIEV4cGVjdGVkOiAgICAxLiBjb3JlLWltYWdlLW1pbmltYWwgY2FuIGJlIGJ1aWx0IHdpdGgKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4dDQuYm1hcC5nei5iejIubHpvLnh6LnUtYm9vdCBhbmQgYWxzbyBjcmVhdGUgYQorICAgICAgICAgICAgICAgICAgICAgICAgc2hhMjU2c3VtCisgICAgICAgICAgICAgICAgICAgICAyLiBUaGUgYWJvdmUgaW1hZ2UgaGFzIGEgdmFsaWQgc2hhMjU2c3VtCisgICAgICAgIFByb2R1Y3Q6ICAgICBvZS1jb3JlCisgICAgICAgIEF1dGhvcjogICAgICBUb20gUmluaSA8dHJpbmlAa29uc3Vsa28uY29tPgorICAgICAgICAiIiIKKworICAgICAgICBjb252ID0gImV4dDQuYm1hcC5nei5iejIubHpvLnh6LnUtYm9vdCIKKyAgICAgICAgZmVhdHVyZXMgPSAnSU1BR0VfRlNUWVBFUyArPSAiJXMgJXMuc2hhMjU2c3VtIicgJSAoY29udiwgY29udikKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZXMpCisKKyAgICAgICAgaW1hZ2VfbmFtZSA9ICdjb3JlLWltYWdlLW1pbmltYWwnCisgICAgICAgIGJpdGJha2UoaW1hZ2VfbmFtZSkKKworICAgICAgICBkZXBsb3lfZGlyX2ltYWdlID0gZ2V0X2JiX3ZhcignREVQTE9ZX0RJUl9JTUFHRScpCisgICAgICAgIGxpbmtfbmFtZSA9IGdldF9iYl92YXIoJ0lNQUdFX0xJTktfTkFNRScsIGltYWdlX25hbWUpCisgICAgICAgIGltYWdlX3BhdGggPSBvcy5wYXRoLmpvaW4oZGVwbG95X2Rpcl9pbWFnZSwgIiVzLiVzIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpbmtfbmFtZSwgY29udikpCisKKyAgICAgICAgIyBjaGVjayBpZiByZXN1bHRpbmcgaW1hZ2UgaXMgaW4gdGhlIGRlcGxveSBkaXJlY3RvcnkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGltYWdlX3BhdGgpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoaW1hZ2VfcGF0aCArICIuc2hhMjU2c3VtIikpCisKKyAgICAgICAgIyBjaGVjayBpZiB0aGUgcmVzdWx0aW5nIHNoYTI1NnN1bSBhZ3JlZXMKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJ1bkNtZCgnY2QgJXM7c2hhMjU2c3VtIC1jICVzLiVzLnNoYTI1NnN1bScgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZXBsb3lfZGlyX2ltYWdlLCBsaW5rX25hbWUsIGNvbnYpKSkKKworICAgIEBPRVRlc3RJRCgxOTA0KQorICAgIGRlZiB0ZXN0X2ltYWdlX2ZzdHlwZXMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBTdW1tYXJ5OiAgICAgQ2hlY2sgaWYgaW1hZ2Ugb2Ygc3VwcG9ydGVkIGltYWdlIGZzdHlwZXMgY2FuIGJlIGJ1aWx0CisgICAgICAgIEV4cGVjdGVkOiAgICBjb3JlLWltYWdlLW1pbmltYWwgY2FuIGJlIGJ1aWx0IGZvciB2YXJpb3VzIGltYWdlIHR5cGVzCisgICAgICAgIFByb2R1Y3Q6ICAgICBvZS1jb3JlCisgICAgICAgIEF1dGhvcjogICAgICBFZCBCYXJ0b3NoIDxlZC5iYXJ0b3NoQGxpbnV4LmludGVsLmNvbT4KKyAgICAgICAgIiIiCisgICAgICAgIGltYWdlX25hbWUgPSAnY29yZS1pbWFnZS1taW5pbWFsJworCisgICAgICAgIGltZ190eXBlcyA9IFtpdHlwZSBmb3IgaXR5cGUgaW4gZ2V0X2JiX3ZhcigiSU1BR0VfVFlQRVMiLCBpbWFnZV9uYW1lKS5zcGxpdCgpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpdHlwZSBub3QgaW4gKCdjb250YWluZXInLCAnZWxmJywgJ211bHRpdWJpJyldCisKKyAgICAgICAgY29uZmlnID0gJ0lNQUdFX0ZTVFlQRVMgKz0gIiVzIlxuJ1wKKyAgICAgICAgICAgICAgICAgJ01LVUJJRlNfQVJHUyA/PSAiLW0gMjA0OCAtZSAxMjkwMjQgLWMgMjA0NyJcbidcCisgICAgICAgICAgICAgICAgICdVQklOSVpFX0FSR1MgPz0gIi1tIDIwNDggLXAgMTI4S2lCIC1zIDUxMiInICUgJyAnLmpvaW4oaW1nX3R5cGVzKQorCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGNvbmZpZykKKworICAgICAgICBiaXRiYWtlKGltYWdlX25hbWUpCisKKyAgICAgICAgZGVwbG95X2Rpcl9pbWFnZSA9IGdldF9iYl92YXIoJ0RFUExPWV9ESVJfSU1BR0UnKQorICAgICAgICBsaW5rX25hbWUgPSBnZXRfYmJfdmFyKCdJTUFHRV9MSU5LX05BTUUnLCBpbWFnZV9uYW1lKQorICAgICAgICBmb3IgaXR5cGUgaW4gaW1nX3R5cGVzOgorICAgICAgICAgICAgaW1hZ2VfcGF0aCA9IG9zLnBhdGguam9pbihkZXBsb3lfZGlyX2ltYWdlLCAiJXMuJXMiICUgKGxpbmtfbmFtZSwgaXR5cGUpKQorICAgICAgICAgICAgIyBjaGVjayBpZiByZXN1bHQgaW1hZ2UgaXMgaW4gZGVwbG95IGRpcmVjdG9yeQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGltYWdlX3BhdGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcyBpbWFnZSAlcyBkb2Vzbid0IGV4aXN0IiAlIChpdHlwZSwgaW1hZ2VfcGF0aCkpCisKKyAgICBkZWYgdGVzdF91c2VyYWRkX3N0YXRpYyhzZWxmKToKKyAgICAgICAgY29uZmlnID0gIiIiCitVU0VSQURERVhURU5TSU9OID0gInVzZXJhZGQtc3RhdGljaWRzIgorVVNFUkFERF9FUlJPUl9EWU5BTUlDID0gInNraXAiCitVU0VSQUREX1VJRF9UQUJMRVMgKz0gImZpbGVzL3N0YXRpYy1wYXNzd2QiCitVU0VSQUREX0dJRF9UQUJMRVMgKz0gImZpbGVzL3N0YXRpYy1ncm91cCIKKyIiIgorICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhjb25maWcpCisgICAgICAgIGJpdGJha2UoImNvcmUtaW1hZ2UtYmFzZSIpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9sYXllcmFwcGVuZC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2xheWVyYXBwZW5kLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmZDVjZGIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9sYXllcmFwcGVuZC5weQpAQCAtMCwwICsxLDk1IEBACitpbXBvcnQgb3MKKworZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2UgaW1wb3J0IE9FU2VsZnRlc3RUZXN0Q2FzZQorZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQsIGJpdGJha2UsIGdldF9iYl92YXIKK2ltcG9ydCBvZXFhLnV0aWxzLmZ0b29scyBhcyBmdG9vbHMKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvci5vZWlkIGltcG9ydCBPRVRlc3RJRAorCitjbGFzcyBMYXllckFwcGVuZFRlc3RzKE9FU2VsZnRlc3RUZXN0Q2FzZSk6CisgICAgbGF5ZXJjb25mID0gIiIiCisjIFdlIGhhdmUgYSBjb25mIGFuZCBjbGFzc2VzIGRpcmVjdG9yeSwgYXBwZW5kIHRvIEJCUEFUSAorQkJQQVRIIC49ICI6JHtMQVlFUkRJUn0iCisKKyMgV2UgaGF2ZSBhIHJlY2lwZXMgZGlyZWN0b3J5LCBhZGQgdG8gQkJGSUxFUworQkJGSUxFUyArPSAiJHtMQVlFUkRJUn0vcmVjaXBlcyovKi5iYiAke0xBWUVSRElSfS9yZWNpcGVzKi8qLmJiYXBwZW5kIgorCitCQkZJTEVfQ09MTEVDVElPTlMgKz0gIm1ldGEtbGF5ZXJJTlQiCitCQkZJTEVfUEFUVEVSTl9tZXRhLWxheWVySU5UIDo9ICJeJHtMQVlFUkRJUn0vIgorQkJGSUxFX1BSSU9SSVRZX21ldGEtbGF5ZXJJTlQgPSAiNiIKKyIiIgorICAgIHJlY2lwZSA9ICIiIgorTElDRU5TRT0iQ0xPU0VEIgorSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiMSIKKworcHl0aG9uIGRvX2J1aWxkKCkgeworICAgIGJiLnBsYWluKCdCdWlsZGluZyAuLi4nKQorfQorYWRkdGFzayBidWlsZAorIiIiCisgICAgYXBwZW5kID0gIiIiCitGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiCisKK1NSQ19VUklfYXBwZW5kID0gIiBmaWxlOi8vYXBwZW5kdGVzdC50eHQiCisKK3N5c3Jvb3Rfc3RhZ2VfYWxsX2FwcGVuZCgpIHsKKwlpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L2FwcGVuZHRlc3QudHh0ICR7U1lTUk9PVF9ERVNURElSfS8KK30KKworIiIiCisKKyAgICBhcHBlbmQyID0gIiIiCitGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiCisKK1NSQ19VUklfYXBwZW5kID0gIiBmaWxlOi8vYXBwZW5kdGVzdC50eHQiCisiIiIKKyAgICBsYXllcmFwcGVuZCA9ICcnCisKKyAgICBkZWYgdGVhckRvd25Mb2NhbChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5sYXllcmFwcGVuZDoKKyAgICAgICAgICAgIGZ0b29scy5yZW1vdmVfZnJvbV9maWxlKHNlbGYuYnVpbGRkaXIgKyAiL2NvbmYvYmJsYXllcnMuY29uZiIsIHNlbGYubGF5ZXJhcHBlbmQpCisgICAgICAgIHN1cGVyKExheWVyQXBwZW5kVGVzdHMsIHNlbGYpLnRlYXJEb3duTG9jYWwoKQorCisgICAgQE9FVGVzdElEKDExOTYpCisgICAgZGVmIHRlc3RfbGF5ZXJfYXBwZW5kcyhzZWxmKToKKyAgICAgICAgY29yZWJhc2UgPSBnZXRfYmJfdmFyKCJDT1JFQkFTRSIpCisKKyAgICAgICAgZm9yIGwgaW4gWyIwIiwgIjEiLCAiMiJdOgorICAgICAgICAgICAgbGF5ZXIgPSBvcy5wYXRoLmpvaW4oY29yZWJhc2UsICJtZXRhLWxheWVydGVzdCIgKyBsKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhsYXllcikpCisgICAgICAgICAgICBvcy5ta2RpcihsYXllcikKKyAgICAgICAgICAgIG9zLm1rZGlyKGxheWVyICsgIi9jb25mIikKKyAgICAgICAgICAgIHdpdGggb3BlbihsYXllciArICIvY29uZi9sYXllci5jb25mIiwgInciKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUoc2VsZi5sYXllcmNvbmYucmVwbGFjZSgiSU5UIiwgbCkpCisgICAgICAgICAgICBvcy5ta2RpcihsYXllciArICIvcmVjaXBlcy10ZXN0IikKKyAgICAgICAgICAgIGlmIGwgPT0gIjAiOgorICAgICAgICAgICAgICAgIHdpdGggb3BlbihsYXllciArICIvcmVjaXBlcy10ZXN0L2xheWVyYXBwZW5kdGVzdC5iYiIsICJ3IikgYXMgZjoKKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZShzZWxmLnJlY2lwZSkKKyAgICAgICAgICAgIGVsaWYgbCA9PSAiMSI6CisgICAgICAgICAgICAgICAgd2l0aCBvcGVuKGxheWVyICsgIi9yZWNpcGVzLXRlc3QvbGF5ZXJhcHBlbmR0ZXN0LmJiYXBwZW5kIiwgInciKSBhcyBmOgorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKHNlbGYuYXBwZW5kKQorICAgICAgICAgICAgICAgIG9zLm1rZGlyKGxheWVyICsgIi9yZWNpcGVzLXRlc3QvbGF5ZXJhcHBlbmR0ZXN0IikKKyAgICAgICAgICAgICAgICB3aXRoIG9wZW4obGF5ZXIgKyAiL3JlY2lwZXMtdGVzdC9sYXllcmFwcGVuZHRlc3QvYXBwZW5kdGVzdC50eHQiLCAidyIpIGFzIGY6CisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoIkxheWVyIDEgdGVzdCIpCisgICAgICAgICAgICBlbGlmIGwgPT0gIjIiOgorICAgICAgICAgICAgICAgIHdpdGggb3BlbihsYXllciArICIvcmVjaXBlcy10ZXN0L2xheWVyYXBwZW5kdGVzdC5iYmFwcGVuZCIsICJ3IikgYXMgZjoKKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZShzZWxmLmFwcGVuZDIpCisgICAgICAgICAgICAgICAgb3MubWtkaXIobGF5ZXIgKyAiL3JlY2lwZXMtdGVzdC9sYXllcmFwcGVuZHRlc3QiKQorICAgICAgICAgICAgICAgIHdpdGggb3BlbihsYXllciArICIvcmVjaXBlcy10ZXN0L2xheWVyYXBwZW5kdGVzdC9hcHBlbmR0ZXN0LnR4dCIsICJ3IikgYXMgZjoKKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgiTGF5ZXIgMiB0ZXN0IikKKyAgICAgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAobGF5ZXIpCisKKyAgICAgICAgc2VsZi5sYXllcmFwcGVuZCA9ICJCQkxBWUVSUyArPSBcInswfS9tZXRhLWxheWVydGVzdDAgezB9L21ldGEtbGF5ZXJ0ZXN0MSB7MH0vbWV0YS1sYXllcnRlc3QyXCIiLmZvcm1hdChjb3JlYmFzZSkKKyAgICAgICAgZnRvb2xzLmFwcGVuZF9maWxlKHNlbGYuYnVpbGRkaXIgKyAiL2NvbmYvYmJsYXllcnMuY29uZiIsIHNlbGYubGF5ZXJhcHBlbmQpCisgICAgICAgIHN0YWdpbmdkaXIgPSBnZXRfYmJfdmFyKCJTWVNST09UX0RFU1RESVIiLCAibGF5ZXJhcHBlbmR0ZXN0IikKKyAgICAgICAgYml0YmFrZSgibGF5ZXJhcHBlbmR0ZXN0IikKKyAgICAgICAgZGF0YSA9IGZ0b29scy5yZWFkX2ZpbGUoc3RhZ2luZ2RpciArICIvYXBwZW5kdGVzdC50eHQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsICJMYXllciAyIHRlc3QiKQorICAgICAgICBvcy5yZW1vdmUoY29yZWJhc2UgKyAiL21ldGEtbGF5ZXJ0ZXN0Mi9yZWNpcGVzLXRlc3QvbGF5ZXJhcHBlbmR0ZXN0L2FwcGVuZHRlc3QudHh0IikKKyAgICAgICAgYml0YmFrZSgibGF5ZXJhcHBlbmR0ZXN0IikKKyAgICAgICAgZGF0YSA9IGZ0b29scy5yZWFkX2ZpbGUoc3RhZ2luZ2RpciArICIvYXBwZW5kdGVzdC50eHQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsICJMYXllciAxIHRlc3QiKQorICAgICAgICB3aXRoIG9wZW4oY29yZWJhc2UgKyAiL21ldGEtbGF5ZXJ0ZXN0Mi9yZWNpcGVzLXRlc3QvbGF5ZXJhcHBlbmR0ZXN0L2FwcGVuZHRlc3QudHh0IiwgInciKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSgiTGF5ZXIgMiB0ZXN0IikKKyAgICAgICAgYml0YmFrZSgibGF5ZXJhcHBlbmR0ZXN0IikKKyAgICAgICAgZGF0YSA9IGZ0b29scy5yZWFkX2ZpbGUoc3RhZ2luZ2RpciArICIvYXBwZW5kdGVzdC50eHQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsICJMYXllciAyIHRlc3QiKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvbGlib2UucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9saWJvZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODQ2MDkyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvbGlib2UucHkKQEAgLTAsMCArMSwxMDIgQEAKK2Zyb20gb2VxYS5zZWxmdGVzdC5jYXNlIGltcG9ydCBPRVNlbGZ0ZXN0VGVzdENhc2UKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvci5vZWlkIGltcG9ydCBPRVRlc3RJRAorZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBnZXRfYmJfdmFyLCBnZXRfYmJfdmFycywgYml0YmFrZSwgcnVuQ21kCitpbXBvcnQgb2UucGF0aAoraW1wb3J0IG9zCisKK2NsYXNzIExpYk9FKE9FU2VsZnRlc3RUZXN0Q2FzZSk6CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICBzdXBlcihMaWJPRSwgY2xzKS5zZXRVcENsYXNzKCkKKyAgICAgICAgY2xzLnRtcF9kaXIgPSBnZXRfYmJfdmFyKCdUTVBESVInKQorCisgICAgQE9FVGVzdElEKDE2MzUpCisgICAgZGVmIHRlc3RfY29weV90cmVlX3NwZWNpYWwoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBTdW1tYXJ5OiAgICBvZS5wYXRoLmNvcHl0cmVlKCkgc2hvdWxkIGNvcHkgZmlsZXMgd2l0aCBzcGVjaWFsIGNoYXJhY3RlcgorICAgICAgICBFeHBlY3RlZDogICAndGVzdCBmaWxlIHdpdGggc3DCo2MhYWwgQG5kIHNwYWNlcycgc2hvdWxkIGV4aXN0IGluCisgICAgICAgICAgICAgICAgICAgIGNvcHkgZGVzdGluYXRpb24KKyAgICAgICAgUHJvZHVjdDogICAgT0UtQ29yZQorICAgICAgICBBdXRob3I6ICAgICBKb3NodWEgTG9jayA8am9zaHVhLmcubG9ja0BpbnRlbC5jb20+CisgICAgICAgICIiIgorICAgICAgICB0ZXN0bG9jID0gb2UucGF0aC5qb2luKHNlbGYudG1wX2RpciwgJ2xpYm9ldGVzdHMnKQorICAgICAgICBzcmMgPSBvZS5wYXRoLmpvaW4odGVzdGxvYywgJ3NyYycpCisgICAgICAgIGRzdCA9IG9lLnBhdGguam9pbih0ZXN0bG9jLCAnZHN0JykKKyAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKHRlc3Rsb2MpCisgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihzcmMpCisgICAgICAgIHRlc3RmaWxlbmFtZSA9ICd0ZXN0IGZpbGUgd2l0aCBzcMKjYyFhbCBAbmQgc3BhY2VzJworCisgICAgICAgICMgY3JlYXRlIHRoZSB0ZXN0IGZpbGUgYW5kIGNvcHkgaXQKKyAgICAgICAgb3BlbihvZS5wYXRoLmpvaW4oc3JjLCB0ZXN0ZmlsZW5hbWUpLCAndytiJykuY2xvc2UoKQorICAgICAgICBvZS5wYXRoLmNvcHl0cmVlKHNyYywgZHN0KQorCisgICAgICAgICMgZW5zdXJlIHBhdGggZXhpc3RzIGluIGRlc3QKKyAgICAgICAgZmlsZWluZHN0ID0gb3MucGF0aC5pc2ZpbGUob2UucGF0aC5qb2luKGRzdCwgdGVzdGZpbGVuYW1lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZpbGVpbmRzdCwgIkZpbGUgd2l0aCBzcGFjZXMgZG9lc24ndCBleGlzdCBpbiBkc3QiKQorCisgICAgICAgIG9lLnBhdGgucmVtb3ZlKHRlc3Rsb2MpCisKKyAgICBAT0VUZXN0SUQoMTYzNikKKyAgICBkZWYgdGVzdF9jb3B5X3RyZWVfeGF0dHIoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBTdW1tYXJ5OiAgICBvZS5wYXRoLmNvcHl0cmVlKCkgc2hvdWxkIHByZXNlcnZlIHhhdHRyIG9uIGNvcGllZCBmaWxlcworICAgICAgICBFeHBlY3RlZDogICB0ZXN0eGF0dHIgZmlsZSBpbiBkZXN0aW5hdGlvbiBzaG91bGQgaGF2ZSB1c2VyLm9ldGVzdAorICAgICAgICAgICAgICAgICAgICBleHRlbmRlZCBhdHRyaWJ1dGUKKyAgICAgICAgUHJvZHVjdDogICAgT0UtQ29yZQorICAgICAgICBBdXRob3I6ICAgICBKb3NodWEgTG9jayA8am9zaHVhLmcubG9ja0BpbnRlbC5jb20+CisgICAgICAgICIiIgorICAgICAgICB0ZXN0bG9jID0gb2UucGF0aC5qb2luKHNlbGYudG1wX2RpciwgJ2xpYm9ldGVzdHMnKQorICAgICAgICBzcmMgPSBvZS5wYXRoLmpvaW4odGVzdGxvYywgJ3NyYycpCisgICAgICAgIGRzdCA9IG9lLnBhdGguam9pbih0ZXN0bG9jLCAnZHN0JykKKyAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKHRlc3Rsb2MpCisgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihzcmMpCisgICAgICAgIHRlc3RmaWxlbmFtZSA9ICd0ZXN0eGF0dHInCisKKyAgICAgICAgIyBlbnN1cmUgd2UgaGF2ZSBzZXRmYXR0ciBhdmFpbGFibGUKKyAgICAgICAgYml0YmFrZSgiYXR0ci1uYXRpdmUiKQorCisgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ1NZU1JPT1RfREVTVERJUicsICdiaW5kaXInXSwgJ2F0dHItbmF0aXZlJykKKyAgICAgICAgZGVzdGRpciA9IGJiX3ZhcnNbJ1NZU1JPT1RfREVTVERJUiddCisgICAgICAgIGJpbmRpciA9IGJiX3ZhcnNbJ2JpbmRpciddCisgICAgICAgIGJpbmRpciA9IGRlc3RkaXIgKyBiaW5kaXIKKworICAgICAgICAjIGNyZWF0ZSBhIGZpbGUgd2l0aCB4YXR0ciBhbmQgY29weSBpdAorICAgICAgICBvcGVuKG9lLnBhdGguam9pbihzcmMsIHRlc3RmaWxlbmFtZSksICd3K2InKS5jbG9zZSgpCisgICAgICAgIHJ1bkNtZCgnJXMvc2V0ZmF0dHIgLW4gdXNlci5vZXRlc3QgLXYgInRlc3RpbmcgbGlib2UiICVzJyAlIChiaW5kaXIsIG9lLnBhdGguam9pbihzcmMsIHRlc3RmaWxlbmFtZSkpKQorICAgICAgICBvZS5wYXRoLmNvcHl0cmVlKHNyYywgZHN0KQorCisgICAgICAgICMgZW5zdXJlIGZpbGUgaW4gZGVzdCBoYXMgdXNlci5vZXRlc3QgeGF0dHIKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCclcy9nZXRmYXR0ciAtbiB1c2VyLm9ldGVzdCAlcycgJSAoYmluZGlyLCBvZS5wYXRoLmpvaW4oZHN0LCB0ZXN0ZmlsZW5hbWUpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigndXNlci5vZXRlc3Q9InRlc3RpbmcgbGlib2UiJywgcmVzdWx0Lm91dHB1dCwgJ0V4dGVuZGVkIGF0dHJpYnV0ZSBub3Qgc2VydCBpbiBkc3QnKQorCisgICAgICAgIG9lLnBhdGgucmVtb3ZlKHRlc3Rsb2MpCisKKyAgICBAT0VUZXN0SUQoMTYzNCkKKyAgICBkZWYgdGVzdF9jb3B5X2hhcmRsaW5rX3RyZWVfY291bnQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBTdW1tYXJ5OiAgICBvZS5wYXRoLmNvcHloYXJkbGlua3RyZWUoKSBzaG91bGRuJ3QgbWlzcyBvdXQgZmlsZXMKKyAgICAgICAgRXhwZWN0ZWQ6ICAgc3JjIGFuZCBkc3Qgc2hvdWxkIGhhdmUgdGhlIHNhbWUgbnVtYmVyIG9mIGZpbGVzCisgICAgICAgIFByb2R1Y3Q6ICAgIE9FLUNvcmUKKyAgICAgICAgQXV0aG9yOiAgICAgSm9zaHVhIExvY2sgPGpvc2h1YS5nLmxvY2tAaW50ZWwuY29tPgorICAgICAgICAiIiIKKyAgICAgICAgdGVzdGxvYyA9IG9lLnBhdGguam9pbihzZWxmLnRtcF9kaXIsICdsaWJvZXRlc3RzJykKKyAgICAgICAgc3JjID0gb2UucGF0aC5qb2luKHRlc3Rsb2MsICdzcmMnKQorICAgICAgICBkc3QgPSBvZS5wYXRoLmpvaW4odGVzdGxvYywgJ2RzdCcpCisgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcih0ZXN0bG9jKQorICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoc3JjKQorICAgICAgICB0ZXN0ZmlsZXMgPSBbJ2ZvbycsICdiYXInLCAnLmJheicsICdxdXV4J10KKworICAgICAgICBkZWYgdG91Y2hmaWxlKHRmKToKKyAgICAgICAgICAgIG9wZW4ob2UucGF0aC5qb2luKHNyYywgdGYpLCAndytiJykuY2xvc2UoKQorCisgICAgICAgIGZvciBmIGluIHRlc3RmaWxlczoKKyAgICAgICAgICAgIHRvdWNoZmlsZShmKQorCisgICAgICAgIG9lLnBhdGguY29weWhhcmRsaW5rdHJlZShzcmMsIGRzdCkKKworICAgICAgICBkc3RjbnQgPSBsZW4ob3MubGlzdGRpcihkc3QpKQorICAgICAgICBzcmNjbnQgPSBsZW4ob3MubGlzdGRpcihzcmMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhkc3RjbnQsIGxlbih0ZXN0ZmlsZXMpLCAiTnVtYmVyIG9mIGZpbGVzIGluIGRzdCAoJXMpIGRpZmZlcnMgZnJvbSBudW1iZXIgb2YgZmlsZXMgaW4gc3JjKCVzKS4iICUgKGRzdGNudCwgc3JjY250KSkKKworICAgICAgICBvZS5wYXRoLnJlbW92ZSh0ZXN0bG9jKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvbGljX2NoZWNrc3VtLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvbGljX2NoZWNrc3VtLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3NDA3MTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9saWNfY2hlY2tzdW0ucHkKQEAgLTAsMCArMSwzNSBAQAoraW1wb3J0IG9zCitpbXBvcnQgdGVtcGZpbGUKKworZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2UgaW1wb3J0IE9FU2VsZnRlc3RUZXN0Q2FzZQorZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBiaXRiYWtlCitmcm9tIG9lcWEudXRpbHMgaW1wb3J0IENvbW1hbmRFcnJvcgorZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLm9laWQgaW1wb3J0IE9FVGVzdElECisKK2NsYXNzIExpY2Vuc2VUZXN0cyhPRVNlbGZ0ZXN0VGVzdENhc2UpOgorCisgICAgIyBWZXJpZnkgdGhhdCBjaGFuZ2luZyBhIGxpY2Vuc2UgZmlsZSB0aGF0IGhhcyBhbiBhYnNvbHV0ZSBwYXRoIGNhdXNlcworICAgICMgdGhlIGxpY2Vuc2UgcWEgdG8gZmFpbCBkdWUgdG8gYSBtaXNtYXRjaGVkIG1kNXN1bS4KKyAgICBAT0VUZXN0SUQoMTE5NykKKyAgICBkZWYgdGVzdF9ub25tYXRjaGluZ19jaGVja3N1bShzZWxmKToKKyAgICAgICAgYml0YmFrZV9jbWQgPSAnLWMgcG9wdWxhdGVfbGljIGVtcHR5dGVzdCcKKyAgICAgICAgZXJyb3JfbXNnID0gJ2VtcHR5dGVzdDogVGhlIG5ldyBtZDUgY2hlY2tzdW0gaXMgOGQ3NzdmMzg1ZDNkZmVjODgxNWQyMGY3NDk2MDI2ZGMnCisKKyAgICAgICAgbGljX2ZpbGUsIGxpY19wYXRoID0gdGVtcGZpbGUubWtzdGVtcCgpCisgICAgICAgIG9zLmNsb3NlKGxpY19maWxlKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKGxpY19wYXRoKQorCisgICAgICAgIHNlbGYud3JpdGVfcmVjaXBlaW5jKCdlbXB0eXRlc3QnLCAiIiIKK0lOSElCSVRfREVGQVVMVF9ERVBTID0gIjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8lczttZDU9ZDQxZDhjZDk4ZjAwYjIwNGU5ODAwOTk4ZWNmODQyN2UiCitTUkNfVVJJID0gImZpbGU6Ly8lczttZDU9ZDQxZDhjZDk4ZjAwYjIwNGU5ODAwOTk4ZWNmODQyN2UiCisiIiIgJSAobGljX3BhdGgsIGxpY19wYXRoKSkKKyAgICAgICAgcmVzdWx0ID0gYml0YmFrZShiaXRiYWtlX2NtZCkKKworICAgICAgICB3aXRoIG9wZW4obGljX3BhdGgsICJ3IikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoImRhdGEiKQorCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCJJTkhFUklUX3JlbW92ZSA9IFwicmVwb3J0LWVycm9yXCIiKQorICAgICAgICByZXN1bHQgPSBiaXRiYWtlKGJpdGJha2VfY21kLCBpZ25vcmVfc3RhdHVzPVRydWUpCisgICAgICAgIGlmIGVycm9yX21zZyBub3QgaW4gcmVzdWx0Lm91dHB1dDoKKyAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKHJlc3VsdC5vdXRwdXQpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9tYW5pZmVzdC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL21hbmlmZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0NjA3MTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9tYW5pZmVzdC5weQpAQCAtMCwwICsxLDE2NiBAQAoraW1wb3J0IG9zCisKK2Zyb20gb2VxYS5zZWxmdGVzdC5jYXNlIGltcG9ydCBPRVNlbGZ0ZXN0VGVzdENhc2UKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgZ2V0X2JiX3ZhciwgZ2V0X2JiX3ZhcnMsIGJpdGJha2UKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvci5vZWlkIGltcG9ydCBPRVRlc3RJRAorCitjbGFzcyBNYW5pZmVzdEVudHJ5OgorICAgICcnJ0EgbWFuaWZlc3QgaXRlbSBvZiBhIGNvbGxlY3Rpb24gYWJsZSB0byBsaXN0IG1pc3NpbmcgcGFja2FnZXMnJycKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZW50cnkpOgorICAgICAgICBzZWxmLmZpbGUgPSBlbnRyeQorICAgICAgICBzZWxmLm1pc3NpbmcgPSBbXQorCitjbGFzcyBWZXJpZnlNYW5pZmVzdChPRVNlbGZ0ZXN0VGVzdENhc2UpOgorICAgICcnJ1Rlc3RzIGZvciB0aGUgbWFuaWZlc3QgZmlsZXMgYW5kIGNvbnRlbnRzIG9mIGFuIGltYWdlJycnCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgY2hlY2tfbWFuaWZlc3RfZW50cmllcyhzZWxmLCBtYW5pZmVzdCwgcGF0aCk6CisgICAgICAgIG1hbmlmZXN0X2Vycm9ycyA9IFtdCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggb3BlbihtYW5pZmVzdCwgInIiKSBhcyBtZmlsZToKKyAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBtZmlsZToKKyAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3RfZW50cnkgPSBvcy5wYXRoLmpvaW4ocGF0aCwgbGluZS5zcGxpdCgpWzBdKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1Zygie306IGxvb2tpbmcgZm9yIHt9IlwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoc2VsZi5jbGFzc25hbWUsIG1hbmlmZXN0X2VudHJ5KSkKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKG1hbmlmZXN0X2VudHJ5KToKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hbmlmZXN0X2Vycm9ycy5hcHBlbmQobWFuaWZlc3RfZW50cnkpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1Zygie306IHt9IG5vdCBmb3VuZCJcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KHNlbGYuY2xhc3NuYW1lLCBtYW5pZmVzdF9lbnRyeSkpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1Zygie306IGNoZWNraW5nIG9mIHt9IGZhaWxlZCJcCisgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoc2VsZi5jbGFzc25hbWUsIG1hbmlmZXN0KSkKKyAgICAgICAgICAgIHJhaXNlIGUKKworICAgICAgICByZXR1cm4gbWFuaWZlc3RfZXJyb3JzCisKKyAgICAjdGhpcyB3aWxsIHBvc3NpYmx5IG1vdmUgZnJvbSBoZXJlCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGdldF9kaXJfZnJvbV9iYl92YXIoc2VsZiwgYmJfdmFyLCB0YXJnZXQgPSBOb25lKToKKyAgICAgICAgdGFyZ2V0ID09IHNlbGYuYnVpbGR0YXJnZXQgaWYgdGFyZ2V0ID09IE5vbmUgZWxzZSB0YXJnZXQKKyAgICAgICAgZGlyZWN0b3J5ID0gZ2V0X2JiX3ZhcihiYl92YXIsIHRhcmdldCk7CisgICAgICAgIGlmIG5vdCBkaXJlY3Rvcnkgb3Igbm90IG9zLnBhdGguaXNkaXIoZGlyZWN0b3J5KToKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJ7fToge30gcG9pbnRzIHRvIHt9IHdoZW4gdGFyZ2V0ID0ge30iXAorICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KHNlbGYuY2xhc3NuYW1lLCBiYl92YXIsIGRpcmVjdG9yeSwgdGFyZ2V0KSkKKyAgICAgICAgICAgIHJhaXNlIE9TRXJyb3IKKyAgICAgICAgcmV0dXJuIGRpcmVjdG9yeQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3Moc2VsZik6CisKKyAgICAgICAgc3VwZXIoVmVyaWZ5TWFuaWZlc3QsIHNlbGYpLnNldFVwQ2xhc3MoKQorICAgICAgICBzZWxmLmJ1aWxkdGFyZ2V0ID0gJ2NvcmUtaW1hZ2UtbWluaW1hbCcKKyAgICAgICAgc2VsZi5jbGFzc25hbWUgPSAnVmVyaWZ5TWFuaWZlc3QnCisKKyAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygie306IGRvaW5nIGJpdGJha2Uge30gYXMgYSBwcmVyZXF1aXNpdGUgb2YgdGhlIHRlc3QiXAorICAgICAgICAgICAgICAgIC5mb3JtYXQoc2VsZi5jbGFzc25hbWUsIHNlbGYuYnVpbGR0YXJnZXQpKQorICAgICAgICBpZiBiaXRiYWtlKHNlbGYuYnVpbGR0YXJnZXQpLnN0YXR1czoKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJ7fSBGYWlsZWQgdG8gc2V0dXAge30iXAorICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KHNlbGYuY2xhc3NuYW1lLCBzZWxmLmJ1aWxkdGFyZ2V0KSkKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoInt9OiBDYW5ub3Qgc2V0dXAgdGVzdGluZyBzY2VuYXJpbyJcCisgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoc2VsZi5jbGFzc25hbWUpKQorCisgICAgQE9FVGVzdElEKDEzODApCisgICAgZGVmIHRlc3RfU0RLX21hbmlmZXN0X2VudHJpZXMoc2VsZik6CisgICAgICAgICcnJ1ZlcmlmeWluZyB0aGUgU0RLIG1hbmlmZXN0IGVudHJpZXMgZXhpc3QsIHRoaXMgbWF5IHRha2UgYSBidWlsZCcnJworCisgICAgICAgICMgdGhlIHNldHVwIHNob3VsZCBiaXRiYWtlIGNvcmUtaW1hZ2UtbWluaW1hbCBhbmQgaGVyZSBpdCBpcyByZXF1aXJlZAorICAgICAgICAjIHRvIGRvIGFuIGFkZGl0aW9uYWwgc2V0dXAgZm9yIHRoZSBzZGsKKyAgICAgICAgc2RrdGFzayA9ICctYyBwb3B1bGF0ZV9zZGsnCisgICAgICAgIGJiYXJncyA9IHNka3Rhc2sgKyAnICcgKyBzZWxmLmJ1aWxkdGFyZ2V0CisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJ7fTogZG9pbmcgYml0YmFrZSB7fSBhcyBhIHByZXJlcXVpc2l0ZSBvZiB0aGUgdGVzdCJcCisgICAgICAgICAgICAgICAgLmZvcm1hdChzZWxmLmNsYXNzbmFtZSwgYmJhcmdzKSkKKyAgICAgICAgaWYgYml0YmFrZShiYmFyZ3MpLnN0YXR1czoKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJ7fSBGYWlsZWQgdG8gYml0YmFrZSB7fSJcCisgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoc2VsZi5jbGFzc25hbWUsIGJiYXJncykpCisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJ7fTogQ2Fubm90IHNldHVwIHRlc3Rpbmcgc2NlbmFyaW8iXAorICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KHNlbGYuY2xhc3NuYW1lKSkKKworCisgICAgICAgIHBrZ2RhdGFfZGlyID0gcmV2ZXJzZV9kaXIgPSB7fQorICAgICAgICBtZmlsZW5hbWUgPSBtcGF0aCA9IG1fZW50cnkgPSB7fQorICAgICAgICAjIGdldCBtYW5pZmVzdCBsb2NhdGlvbiBiYXNlZCBvbiB0YXJnZXQgdG8gcXVlcnkgYWJvdXQKKyAgICAgICAgZF90YXJnZXQ9IGRpY3QodGFyZ2V0ID0gc2VsZi5idWlsZHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBob3N0ID0gJ25hdGl2ZXNkay1wYWNrYWdlZ3JvdXAtc2RrLWhvc3QnKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBtZGlyID0gc2VsZi5nZXRfZGlyX2Zyb21fYmJfdmFyKCdTREtfREVQTE9ZJywgc2VsZi5idWlsZHRhcmdldCkKKyAgICAgICAgICAgIGZvciBrIGluIGRfdGFyZ2V0LmtleXMoKToKKyAgICAgICAgICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydTREtfTkFNRScsICdTREtfVkVSU0lPTiddLCBzZWxmLmJ1aWxkdGFyZ2V0KQorICAgICAgICAgICAgICAgIG1maWxlbmFtZVtrXSA9ICJ7fS10b29sY2hhaW4te30ue30ubWFuaWZlc3QiLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGJiX3ZhcnNbJ1NES19OQU1FJ10sCisgICAgICAgICAgICAgICAgICAgICAgICBiYl92YXJzWydTREtfVkVSU0lPTiddLAorICAgICAgICAgICAgICAgICAgICAgICAgaykKKyAgICAgICAgICAgICAgICBtcGF0aFtrXSA9IG9zLnBhdGguam9pbihtZGlyLCBtZmlsZW5hbWVba10pCisgICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKG1wYXRoW2tdKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoInt9OiB7fSBkb2VzIG5vdCBleGlzdCIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGFzc25hbWUsIG1wYXRoW2tdKSkKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgSU9FcnJvcgorICAgICAgICAgICAgICAgIG1fZW50cnlba10gPSBNYW5pZmVzdEVudHJ5KG1wYXRoW2tdKQorCisgICAgICAgICAgICAgICAgcGtnZGF0YV9kaXJba10gPSBzZWxmLmdldF9kaXJfZnJvbV9iYl92YXIoJ1BLR0RBVEFfRElSJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGRfdGFyZ2V0W2tdKQorICAgICAgICAgICAgICAgIHJldmVyc2VfZGlyW2tdID0gb3MucGF0aC5qb2luKHBrZ2RhdGFfZGlyW2tdLAorICAgICAgICAgICAgICAgICAgICAgICAgJ3J1bnRpbWUtcmV2ZXJzZScpCisgICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHJldmVyc2VfZGlyW2tdKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoInt9OiB7fSBkb2VzIG5vdCBleGlzdCIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGFzc25hbWUsIHJldmVyc2VfZGlyW2tdKSkKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgSU9FcnJvcgorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIHJhaXNlIHNlbGYuc2tpcFRlc3QoInt9OiBFcnJvciBpbiBvYnRhaW5pbmcgbWFuaWZlc3QgZGlycyJcCisgICAgICAgICAgICAgICAgLmZvcm1hdChzZWxmLmNsYXNzbmFtZSkpCisgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgorICAgICAgICAgICAgbXNnID0gInt9OiBFcnJvciBjYW5ub3QgZmluZCBtYW5pZmVzdHMgaW4gdGhlIHNwZWNpZmllZCBkaXI6XG57fSJcCisgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoc2VsZi5jbGFzc25hbWUsIG1kaXIpCisgICAgICAgICAgICBzZWxmLmZhaWwobXNnKQorCisgICAgICAgIGZvciBrIGluIGRfdGFyZ2V0LmtleXMoKToKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJ7fTogQ2hlY2sgbWFuaWZlc3Qge30iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICBzZWxmLmNsYXNzbmFtZSwgbV9lbnRyeVtrXS5maWxlKSkKKworICAgICAgICAgICAgbV9lbnRyeVtrXS5taXNzaW5nID0gc2VsZi5jaGVja19tYW5pZmVzdF9lbnRyaWVzKFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9lbnRyeVtrXS5maWxlLHJldmVyc2VfZGlyW2tdKQorICAgICAgICAgICAgaWYgbV9lbnRyeVtrXS5taXNzaW5nOgorICAgICAgICAgICAgICAgIG1zZyA9ICd7fToge30gRXJyb3IgaGFzIHRoZSBmb2xsb3dpbmcgbWlzc2luZyBlbnRyaWVzJ1wKKyAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoc2VsZi5jbGFzc25hbWUsIG1fZW50cnlba10uZmlsZSkKKyAgICAgICAgICAgICAgICBsb2dtc2cgPSBtc2crJzpcbicrJ1xuJy5qb2luKG1fZW50cnlba10ubWlzc2luZykKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1Zyhsb2dtc2cpCisgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbyhtc2cpCisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKGxvZ21zZykKKworICAgIEBPRVRlc3RJRCgxMzgxKQorICAgIGRlZiB0ZXN0X2ltYWdlX21hbmlmZXN0X2VudHJpZXMoc2VsZik6CisgICAgICAgICcnJ1ZlcmlmeWluZyB0aGUgaW1hZ2UgbWFuaWZlc3QgZW50cmllcyBleGlzdCcnJworCisgICAgICAgICMgZ2V0IG1hbmlmZXN0IGxvY2F0aW9uIGJhc2VkIG9uIHRhcmdldCB0byBxdWVyeSBhYm91dAorICAgICAgICB0cnk6CisgICAgICAgICAgICBtZGlyID0gc2VsZi5nZXRfZGlyX2Zyb21fYmJfdmFyKCdERVBMT1lfRElSX0lNQUdFJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYnVpbGR0YXJnZXQpCisgICAgICAgICAgICBtZmlsZW5hbWUgPSBnZXRfYmJfdmFyKCJJTUFHRV9MSU5LX05BTUUiLCBzZWxmLmJ1aWxkdGFyZ2V0KVwKKyAgICAgICAgICAgICAgICAgICAgKyAiLm1hbmlmZXN0IgorICAgICAgICAgICAgbXBhdGggPSBvcy5wYXRoLmpvaW4obWRpciwgbWZpbGVuYW1lKQorICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKG1wYXRoKTogcmFpc2UgSU9FcnJvcgorICAgICAgICAgICAgbV9lbnRyeSA9IE1hbmlmZXN0RW50cnkobXBhdGgpCisKKyAgICAgICAgICAgIHBrZ2RhdGFfZGlyID0ge30KKyAgICAgICAgICAgIHBrZ2RhdGFfZGlyID0gc2VsZi5nZXRfZGlyX2Zyb21fYmJfdmFyKCdQS0dEQVRBX0RJUicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmJ1aWxkdGFyZ2V0KQorICAgICAgICAgICAgcmV2ZGlyID0gb3MucGF0aC5qb2luKHBrZ2RhdGFfZGlyLCAncnVudGltZS1yZXZlcnNlJykKKyAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhyZXZkaXIpOiByYWlzZSBJT0Vycm9yCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgcmFpc2Ugc2VsZi5za2lwVGVzdCgie306IEVycm9yIGluIG9idGFpbmluZyBtYW5pZmVzdCBkaXJzIlwKKyAgICAgICAgICAgICAgICAuZm9ybWF0KHNlbGYuY2xhc3NuYW1lKSkKKyAgICAgICAgZXhjZXB0IElPRXJyb3I6CisgICAgICAgICAgICBtc2cgPSAie306IEVycm9yIGNhbm5vdCBmaW5kIG1hbmlmZXN0cyBpbiBkaXI6XG57fSJcCisgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoc2VsZi5jbGFzc25hbWUsIG1kaXIpCisgICAgICAgICAgICBzZWxmLmZhaWwobXNnKQorCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJ7fTogQ2hlY2sgbWFuaWZlc3Qge30iXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoc2VsZi5jbGFzc25hbWUsIG1fZW50cnkuZmlsZSkpCisgICAgICAgIG1fZW50cnkubWlzc2luZyA9IHNlbGYuY2hlY2tfbWFuaWZlc3RfZW50cmllcyhcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9lbnRyeS5maWxlLCByZXZkaXIpCisgICAgICAgIGlmIG1fZW50cnkubWlzc2luZzoKKyAgICAgICAgICAgIG1zZyA9ICd7fToge30gRXJyb3IgaGFzIHRoZSBmb2xsb3dpbmcgbWlzc2luZyBlbnRyaWVzJ1wKKyAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChzZWxmLmNsYXNzbmFtZSwgbV9lbnRyeS5maWxlKQorICAgICAgICAgICAgbG9nbXNnID0gbXNnKyc6XG4nKydcbicuam9pbihtX2VudHJ5Lm1pc3NpbmcpCisgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1Zyhsb2dtc2cpCisgICAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKG1zZykKKyAgICAgICAgICAgIHNlbGYuZmFpbChsb2dtc2cpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9vZWxpYi9fX2luaXRfXy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL29lbGliL19faW5pdF9fLnB5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9vZWxpYi9fX2luaXRfXy5weQpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvb2VsaWIvX19pbml0X18ucHkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL29lbGliL2J1aWxkaGlzdG9yeS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL29lbGliL2J1aWxkaGlzdG9yeS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODY3NWZkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvb2VsaWIvYnVpbGRoaXN0b3J5LnB5CkBAIC0wLDAgKzEsOTkgQEAKK2ltcG9ydCBvcworZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2UgaW1wb3J0IE9FU2VsZnRlc3RUZXN0Q2FzZQoraW1wb3J0IHRlbXBmaWxlCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IGdldF9iYl92YXIKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvci5vZWlkIGltcG9ydCBPRVRlc3RJRAorCitjbGFzcyBUZXN0QmxvYlBhcnNpbmcoT0VTZWxmdGVzdFRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgaW1wb3J0IHRpbWUKKyAgICAgICAgc2VsZi5yZXBvX3BhdGggPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nc2VsZnRlc3QtYnVpbGRoaXN0b3J5JywKKyAgICAgICAgICAgIGRpcj1nZXRfYmJfdmFyKCdUT1BESVInKSkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBmcm9tIGdpdCBpbXBvcnQgUmVwbworICAgICAgICAgICAgc2VsZi5yZXBvID0gUmVwby5pbml0KHNlbGYucmVwb19wYXRoKQorICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdQeXRob24gbW9kdWxlIEdpdFB5dGhvbiBpcyBub3QgcHJlc2VudCcpCisKKyAgICAgICAgc2VsZi50ZXN0X2ZpbGUgPSAidGVzdCIKKyAgICAgICAgc2VsZi52YXJfbWFwID0ge30KKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgaW1wb3J0IHNodXRpbAorICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYucmVwb19wYXRoKQorCisgICAgZGVmIGNvbW1pdF92YXJzKHNlbGYsIHRvX2FkZD17fSwgdG9fcmVtb3ZlID0gW10sIG1zZz0iQSBjb21taXQgbWVzc2FnZSIpOgorICAgICAgICBpZiBsZW4odG9fYWRkKSA9PSAwIGFuZCBsZW4odG9fcmVtb3ZlKSA9PSAwOgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgZm9yIGsgaW4gdG9fcmVtb3ZlOgorICAgICAgICAgICAgc2VsZi52YXJfbWFwLnBvcCh4LE5vbmUpCisgICAgICAgIGZvciBrIGluIHRvX2FkZDoKKyAgICAgICAgICAgIHNlbGYudmFyX21hcFtrXSA9IHRvX2FkZFtrXQorCisgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oc2VsZi5yZXBvX3BhdGgsIHNlbGYudGVzdF9maWxlKSwgJ3cnKSBhcyByZXBvX2ZpbGU6CisgICAgICAgICAgICBmb3IgayBpbiBzZWxmLnZhcl9tYXA6CisgICAgICAgICAgICAgICAgcmVwb19maWxlLndyaXRlKCIlcyA9ICVzXG4iICUgKGssIHNlbGYudmFyX21hcFtrXSkpCisKKyAgICAgICAgc2VsZi5yZXBvLmdpdC5hZGQoIi0tYWxsIikKKyAgICAgICAgc2VsZi5yZXBvLmdpdC5jb21taXQobWVzc2FnZT1tc2cpCisKKyAgICBAT0VUZXN0SUQoMTg1OSkKKyAgICBkZWYgdGVzdF9ibG9iX3RvX2RpY3Qoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IGNvbnZlcnRpb24gb2YgZ2l0IGJsb2JzIHRvIGRpY3Rpb25hcnkKKyAgICAgICAgIiIiCisgICAgICAgIGZyb20gb2UuYnVpbGRoaXN0b3J5X2FuYWx5c2lzIGltcG9ydCBibG9iX3RvX2RpY3QKKyAgICAgICAgdmFsdWVzbWFwID0geyAiZm9vIiA6ICIxIiwgImJhciIgOiAiMiIgfQorICAgICAgICBzZWxmLmNvbW1pdF92YXJzKHRvX2FkZCA9IHZhbHVlc21hcCkKKworICAgICAgICBibG9iID0gc2VsZi5yZXBvLmhlYWQuY29tbWl0LnRyZWUuYmxvYnNbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZXNtYXAsIGJsb2JfdG9fZGljdChibG9iKSwKKyAgICAgICAgICAgICJjb21taXQgd2FzIG5vdCB0cmFuc2xhdGVkIGNvcnJlY3RseSB0byBkaWN0aW9uYXJ5IikKKworICAgIEBPRVRlc3RJRCgxODYwKQorICAgIGRlZiB0ZXN0X2NvbXBhcmVfZGljdF9ibG9icyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgY29tcGFyaXNzb24gb2YgZGljdGlvbmFyaWVzIGV4dHJhY3RlZCBmcm9tIGdpdCBibG9icworICAgICAgICAiIiIKKyAgICAgICAgZnJvbSBvZS5idWlsZGhpc3RvcnlfYW5hbHlzaXMgaW1wb3J0IGNvbXBhcmVfZGljdF9ibG9icworCisgICAgICAgIGNoYW5nZXNtYXAgPSB7ICJmb28tMiIgOiAoIjIiLCAiOCIpLCAiYmFyIiA6ICgiIiwiNCIpLCAiYmFyLTIiIDogKCIiLCI1Iil9CisKKyAgICAgICAgc2VsZi5jb21taXRfdmFycyh0b19hZGQgPSB7ICJmb28iIDogIjEiLCAiZm9vLTIiIDogIjIiLCAiZm9vLTMiIDogIjMiIH0pCisgICAgICAgIGJsb2IxID0gc2VsZi5yZXBvLmhlYWRzLm1hc3Rlci5jb21taXQudHJlZS5ibG9ic1swXQorCisgICAgICAgIHNlbGYuY29tbWl0X3ZhcnModG9fYWRkID0geyAiZm9vLTIiIDogIjgiLCAiYmFyIiA6ICI0IiwgImJhci0yIiA6ICI1IiB9KQorICAgICAgICBibG9iMiA9IHNlbGYucmVwby5oZWFkcy5tYXN0ZXIuY29tbWl0LnRyZWUuYmxvYnNbMF0KKworICAgICAgICBjaGFuZ2VfcmVjb3JkcyA9IGNvbXBhcmVfZGljdF9ibG9icyhvcy5wYXRoLmpvaW4oc2VsZi5yZXBvX3BhdGgsIHNlbGYudGVzdF9maWxlKSwKKyAgICAgICAgICAgIGJsb2IxLCBibG9iMiwgRmFsc2UsIEZhbHNlKQorCisgICAgICAgIHZhcl9jaGFuZ2VzID0geyB4LmZpZWxkbmFtZSA6ICh4Lm9sZHZhbHVlLCB4Lm5ld3ZhbHVlKSBmb3IgeCBpbiBjaGFuZ2VfcmVjb3Jkc30KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGFuZ2VzbWFwLCB2YXJfY2hhbmdlcywgIkNoYW5nZXMgbm90IHJlcG9ydGVkIGNvcnJlY3RseSIpCisKKyAgICBAT0VUZXN0SUQoMTg2MSkKKyAgICBkZWYgdGVzdF9jb21wYXJlX2RpY3RfYmxvYnNfZGVmYXVsdChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgZGVmYXVsdCB2YWx1ZXMgZm9yIGNvbXBhcmlzc29uIG9mIGdpdCBibG9iIGRpY3Rpb25hcmllcworICAgICAgICAiIiIKKyAgICAgICAgZnJvbSBvZS5idWlsZGhpc3RvcnlfYW5hbHlzaXMgaW1wb3J0IGNvbXBhcmVfZGljdF9ibG9icworICAgICAgICBkZWZhdWx0bWFwID0geyB4IDogKCJkZWZhdWx0IiwgIjEiKSAgZm9yIHggaW4gWyJQS0ciLCAiUEtHRSIsICJQS0dWIiwgIlBLR1IiXX0KKworICAgICAgICBzZWxmLmNvbW1pdF92YXJzKHRvX2FkZCA9IHsgImZvbyIgOiAiMSIgfSkKKyAgICAgICAgYmxvYjEgPSBzZWxmLnJlcG8uaGVhZHMubWFzdGVyLmNvbW1pdC50cmVlLmJsb2JzWzBdCisKKyAgICAgICAgc2VsZi5jb21taXRfdmFycyh0b19hZGQgPSB7ICJQS0ciIDogIjEiLCAiUEtHRSIgOiAiMSIsICJQS0dWIiA6ICIxIiwgIlBLR1IiIDogIjEiIH0pCisgICAgICAgIGJsb2IyID0gc2VsZi5yZXBvLmhlYWRzLm1hc3Rlci5jb21taXQudHJlZS5ibG9ic1swXQorCisgICAgICAgIGNoYW5nZV9yZWNvcmRzID0gY29tcGFyZV9kaWN0X2Jsb2JzKG9zLnBhdGguam9pbihzZWxmLnJlcG9fcGF0aCwgc2VsZi50ZXN0X2ZpbGUpLAorICAgICAgICAgICAgYmxvYjEsIGJsb2IyLCBGYWxzZSwgRmFsc2UpCisKKyAgICAgICAgdmFyX2NoYW5nZXMgPSB7fQorICAgICAgICBmb3IgeCBpbiBjaGFuZ2VfcmVjb3JkczoKKyAgICAgICAgICAgIG9sZHZhbHVlID0gImRlZmF1bHQiIGlmICgiZGVmYXVsdCIgaW4geC5vbGR2YWx1ZSkgZWxzZSB4Lm9sZHZhbHVlCisgICAgICAgICAgICB2YXJfY2hhbmdlc1t4LmZpZWxkbmFtZV0gPSAob2xkdmFsdWUsIHgubmV3dmFsdWUpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWZhdWx0bWFwLCB2YXJfY2hhbmdlcywgIkRlZmF1bHRzIG5vdCBzZXQgcHJvcGVybHkiKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvb2VsaWIvZWxmLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvb2VsaWIvZWxmLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0ZWU2YTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9vZWxpYi9lbGYucHkKQEAgLTAsMCArMSwyMSBAQAorZnJvbSB1bml0dGVzdC5jYXNlIGltcG9ydCBUZXN0Q2FzZQoraW1wb3J0IG9lLnFhCisKK2NsYXNzIFRlc3RFbGYoVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X21hY2hpbmVfbmFtZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgZWxmX21hY2hpbmVfdG9fc3RyaW5nKCkKKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2UucWEuZWxmX21hY2hpbmVfdG9fc3RyaW5nKDB4MDIpLCAiU1BBUkMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9lLnFhLmVsZl9tYWNoaW5lX3RvX3N0cmluZygweDAzKSwgIng4NiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2UucWEuZWxmX21hY2hpbmVfdG9fc3RyaW5nKDB4MDgpLCAiTUlQUyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2UucWEuZWxmX21hY2hpbmVfdG9fc3RyaW5nKDB4MTQpLCAiUG93ZXJQQyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2UucWEuZWxmX21hY2hpbmVfdG9fc3RyaW5nKDB4MjgpLCAiQVJNIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvZS5xYS5lbGZfbWFjaGluZV90b19zdHJpbmcoMHgyQSksICJTdXBlckgiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9lLnFhLmVsZl9tYWNoaW5lX3RvX3N0cmluZygweDMyKSwgIklBLTY0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvZS5xYS5lbGZfbWFjaGluZV90b19zdHJpbmcoMHgzRSksICJ4ODYtNjQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9lLnFhLmVsZl9tYWNoaW5lX3RvX3N0cmluZygweEI3KSwgIkFBcmNoNjQiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2UucWEuZWxmX21hY2hpbmVfdG9fc3RyaW5nKDB4MDApLCAiVW5rbm93biAoMCkiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9lLnFhLmVsZl9tYWNoaW5lX3RvX3N0cmluZygweERFQURCRUVGKSwgIlVua25vd24gKDM3MzU5Mjg1NTkpIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvZS5xYS5lbGZfbWFjaGluZV90b19zdHJpbmcoImZvb2JhciIpLCAiVW5rbm93biAoJ2Zvb2JhcicpIikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL29lbGliL2xpY2Vuc2UucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9vZWxpYi9saWNlbnNlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3ZjkxZmIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9vZWxpYi9saWNlbnNlLnB5CkBAIC0wLDAgKzEsOTkgQEAKK2Zyb20gdW5pdHRlc3QuY2FzZSBpbXBvcnQgVGVzdENhc2UKK2ltcG9ydCBvZS5saWNlbnNlCisKK2NsYXNzIFNlZW5WaXNpdG9yKG9lLmxpY2Vuc2UuTGljZW5zZVZpc2l0b3IpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5zZWVuID0gW10KKyAgICAgICAgb2UubGljZW5zZS5MaWNlbnNlVmlzaXRvci5fX2luaXRfXyhzZWxmKQorCisgICAgZGVmIHZpc2l0X1N0cihzZWxmLCBub2RlKToKKyAgICAgICAgc2VsZi5zZWVuLmFwcGVuZChub2RlLnMpCisKK2NsYXNzIFRlc3RTaW5nbGVMaWNlbnNlKFRlc3RDYXNlKToKKyAgICBsaWNlbnNlcyA9IFsKKyAgICAgICAgIkdQTHYyIiwKKyAgICAgICAgIkxHUEwtMi4wIiwKKyAgICAgICAgIkFydGlzdGljIiwKKyAgICAgICAgIk1JVCIsCisgICAgICAgICJHUEx2MysiLAorICAgICAgICAiRk9PX0JBUiIsCisgICAgXQorICAgIGludmFsaWRfbGljZW5zZXMgPSBbIkdQTC9CU0QiXQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBwYXJzZShsaWNlbnNlc3RyKToKKyAgICAgICAgdmlzaXRvciA9IFNlZW5WaXNpdG9yKCkKKyAgICAgICAgdmlzaXRvci52aXNpdF9zdHJpbmcobGljZW5zZXN0cikKKyAgICAgICAgcmV0dXJuIHZpc2l0b3Iuc2VlbgorCisgICAgZGVmIHRlc3Rfc2luZ2xlX2xpY2Vuc2VzKHNlbGYpOgorICAgICAgICBmb3IgbGljZW5zZSBpbiBzZWxmLmxpY2Vuc2VzOgorICAgICAgICAgICAgbGljZW5zZXMgPSBzZWxmLnBhcnNlKGxpY2Vuc2UpCisgICAgICAgICAgICBzZWxmLmFzc2VydExpc3RFcXVhbChsaWNlbnNlcywgW2xpY2Vuc2VdKQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9saWNlbnNlcyhzZWxmKToKKyAgICAgICAgZm9yIGxpY2Vuc2UgaW4gc2VsZi5pbnZhbGlkX2xpY2Vuc2VzOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhvZS5saWNlbnNlLkludmFsaWRMaWNlbnNlKSBhcyBjbToKKyAgICAgICAgICAgICAgICBzZWxmLnBhcnNlKGxpY2Vuc2UpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5saWNlbnNlLCBsaWNlbnNlKQorCitjbGFzcyBUZXN0U2ltcGxlQ29tYmluYXRpb25zKFRlc3RDYXNlKToKKyAgICB0ZXN0cyA9IHsKKyAgICAgICAgIkZPTyZCQVIiOiBbIkZPTyIsICJCQVIiXSwKKyAgICAgICAgIkJBWiAmIE1PTyI6IFsiQkFaIiwgIk1PTyJdLAorICAgICAgICAiQUxQSEF8QkVUQSI6IFsiQUxQSEEiXSwKKyAgICAgICAgIkJBWiZNT098Rk9PIjogWyJGT08iXSwKKyAgICAgICAgIkZPTyZCQVJ8QkFaIjogWyJGT08iLCAiQkFSIl0sCisgICAgfQorICAgIHByZWZlcnJlZCA9IFsiQUxQSEEiLCAiRk9PIiwgIkJBUiJdCisKKyAgICBkZWYgdGVzdF90ZXN0cyhzZWxmKToKKyAgICAgICAgZGVmIGNob29zZShhLCBiKToKKyAgICAgICAgICAgIGlmIGFsbChsaWMgaW4gc2VsZi5wcmVmZXJyZWQgZm9yIGxpYyBpbiBiKToKKyAgICAgICAgICAgICAgICByZXR1cm4gYgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gYQorCisgICAgICAgIGZvciBsaWNlbnNlLCBleHBlY3RlZCBpbiBzZWxmLnRlc3RzLml0ZW1zKCk6CisgICAgICAgICAgICBsaWNlbnNlcyA9IG9lLmxpY2Vuc2UuZmxhdHRlbmVkX2xpY2Vuc2VzKGxpY2Vuc2UsIGNob29zZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGlzdEVxdWFsKGxpY2Vuc2VzLCBleHBlY3RlZCkKKworY2xhc3MgVGVzdENvbXBsZXhDb21iaW5hdGlvbnMoVGVzdFNpbXBsZUNvbWJpbmF0aW9ucyk6CisgICAgdGVzdHMgPSB7CisgICAgICAgICJGT08gJiAoQkFSIHwgQkFaKSZNT08iOiBbIkZPTyIsICJCQVIiLCAiTU9PIl0sCisgICAgICAgICIoQUxQSEF8KEJFVEEmVEhFVEEpfE9NRUdBKSZERUxUQSI6IFsiT01FR0EiLCAiREVMVEEiXSwKKyAgICAgICAgIigoQUxQSEF8QkVUQSkmRk9PKXxCQVoiOiBbIkJFVEEiLCAiRk9PIl0sCisgICAgICAgICIoR1BMLTIuMHxQcm9wcmlldGFyeSkmQlNELTQtY2xhdXNlJk1JVCI6IFsiR1BMLTIuMCIsICJCU0QtNC1jbGF1c2UiLCAiTUlUIl0sCisgICAgfQorICAgIHByZWZlcnJlZCA9IFsiQkFSIiwgIk9NRUdBIiwgIkJFVEEiLCAiR1BMLTIuMCJdCisKK2NsYXNzIFRlc3RJc0luY2x1ZGVkKFRlc3RDYXNlKToKKyAgICB0ZXN0cyA9IHsKKyAgICAgICAgKCJGT08gfCBCQVIiLCBOb25lLCBOb25lKToKKyAgICAgICAgICAgIFtUcnVlLCBbIkZPTyJdXSwKKyAgICAgICAgKCJGT08gfCBCQVIiLCBOb25lLCAiRk9PIik6CisgICAgICAgICAgICBbVHJ1ZSwgWyJCQVIiXV0sCisgICAgICAgICgiRk9PIHwgQkFSIiwgIkJBUiIsIE5vbmUpOgorICAgICAgICAgICAgW1RydWUsIFsiQkFSIl1dLAorICAgICAgICAoIkZPTyB8IEJBUiAmIEZPT0JBUiIsICIqQkFSIiwgTm9uZSk6CisgICAgICAgICAgICBbVHJ1ZSwgWyJCQVIiLCAiRk9PQkFSIl1dLAorICAgICAgICAoIkZPTyB8IEJBUiAmIEZPT0JBUiIsIE5vbmUsICJGT08qIik6CisgICAgICAgICAgICBbRmFsc2UsIFsiRk9PQkFSIl1dLAorICAgICAgICAoIihGT08gfCBCQVIpICYgRk9PQkFSIHwgQkFSRk9PIiwgTm9uZSwgIkZPTyIpOgorICAgICAgICAgICAgW1RydWUsIFsiQkFSIiwgIkZPT0JBUiJdXSwKKyAgICAgICAgKCIoRk9PIHwgQkFSKSAmIEZPT0JBUiB8IEJBWiAmIE1PTyAmIEJBUkZPTyIsIE5vbmUsICJGT08iKToKKyAgICAgICAgICAgIFtUcnVlLCBbIkJBWiIsICJNT08iLCAiQkFSRk9PIl1dLAorICAgICAgICAoIkdQTC0zLjAgJiBHUEwtMi4wICYgTEdQTC0yLjEgfCBQcm9wcmlldGFyeSIsIE5vbmUsIE5vbmUpOgorICAgICAgICAgICAgW1RydWUsIFsiR1BMLTMuMCIsICJHUEwtMi4wIiwgIkxHUEwtMi4xIl1dLAorICAgICAgICAoIkdQTC0zLjAgJiBHUEwtMi4wICYgTEdQTC0yLjEgfCBQcm9wcmlldGFyeSIsIE5vbmUsICJHUEwtMy4wIik6CisgICAgICAgICAgICBbVHJ1ZSwgWyJQcm9wcmlldGFyeSJdXSwKKyAgICAgICAgKCJHUEwtMy4wICYgR1BMLTIuMCAmIExHUEwtMi4xIHwgUHJvcHJpZXRhcnkiLCBOb25lLCAiR1BMLTMuMCBQcm9wcmlldGFyeSIpOgorICAgICAgICAgICAgW0ZhbHNlLCBbIkdQTC0zLjAiXV0KKyAgICB9CisKKyAgICBkZWYgdGVzdF90ZXN0cyhzZWxmKToKKyAgICAgICAgZm9yIGFyZ3MsIGV4cGVjdGVkIGluIHNlbGYudGVzdHMuaXRlbXMoKToKKyAgICAgICAgICAgIGlzX2luY2x1ZGVkLCBsaWNlbnNlcyA9IG9lLmxpY2Vuc2UuaXNfaW5jbHVkZWQoCisgICAgICAgICAgICAgICAgYXJnc1swXSwgKGFyZ3NbMV0gb3IgJycpLnNwbGl0KCksIChhcmdzWzJdIG9yICcnKS5zcGxpdCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpc19pbmNsdWRlZCwgZXhwZWN0ZWRbMF0pCisgICAgICAgICAgICBzZWxmLmFzc2VydExpc3RFcXVhbChsaWNlbnNlcywgZXhwZWN0ZWRbMV0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9vZWxpYi9wYXRoLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvb2VsaWIvcGF0aC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NWEyN2MwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvb2VsaWIvcGF0aC5weQpAQCAtMCwwICsxLDg5IEBACitmcm9tIHVuaXR0ZXN0LmNhc2UgaW1wb3J0IFRlc3RDYXNlCitpbXBvcnQgb2UsIG9lLnBhdGgKK2ltcG9ydCB0ZW1wZmlsZQoraW1wb3J0IG9zCitpbXBvcnQgZXJybm8KK2ltcG9ydCBzaHV0aWwKKworY2xhc3MgVGVzdFJlYWxQYXRoKFRlc3RDYXNlKToKKyAgICBESVJTID0gWyAiYSIsICJiIiwgImV0YyIsICJzYmluIiwgInVzciIsICJ1c3IvYmluIiwgInVzci9iaW5YIiwgInVzci9zYmluIiwgInVzci9pbmNsdWRlIiwgInVzci9pbmNsdWRlL2dkYm0iIF0KKyAgICBGSUxFUyA9IFsgImV0Yy9wYXNzd2QiLCAiYi9maWxlIiBdCisgICAgTElOS1MgPSBbCisgICAgICAgICggImJpbiIsICAgICAgICAgICAgICIvdXNyL2JpbiIsICAgICAgICAgICAgICIvdXNyL2JpbiIgKSwKKyAgICAgICAgKCAiYmluWCIsICAgICAgICAgICAgInVzci9iaW5YIiwgICAgICAgICAgICAgIi91c3IvYmluWCIgKSwKKyAgICAgICAgKCAiYyIsICAgICAgICAgICAgICAgImJyb2tlbiIsICAgICAgICAgICAgICAgIi9icm9rZW4iICksCisgICAgICAgICggImV0Yy9wYXNzd2QtMSIsICAgICJwYXNzd2QiLCAgICAgICAgICAgICAgICIvZXRjL3Bhc3N3ZCIgKSwKKyAgICAgICAgKCAiZXRjL3Bhc3N3ZC0yIiwgICAgInBhc3N3ZC0xIiwgICAgICAgICAgICAgIi9ldGMvcGFzc3dkIiApLAorICAgICAgICAoICJldGMvcGFzc3dkLTMiLCAgICAiL2V0Yy9wYXNzd2QtMSIsICAgICAgICAiL2V0Yy9wYXNzd2QiICksCisgICAgICAgICggImV0Yy9zaGFkb3ctMSIsICAgICIvZXRjL3NoYWRvdyIsICAgICAgICAgICIvZXRjL3NoYWRvdyIgKSwKKyAgICAgICAgKCAiZXRjL3NoYWRvdy0yIiwgICAgIi9ldGMvc2hhZG93LTEiLCAgICAgICAgIi9ldGMvc2hhZG93IiApLAorICAgICAgICAoICJwcm9nLUEiLCAgICAgICAgICAiYmluL3Byb2ctQSIsICAgICAgICAgICAiL3Vzci9iaW4vcHJvZy1BIiApLAorICAgICAgICAoICJwcm9nLUIiLCAgICAgICAgICAiL2Jpbi9wcm9nLUIiLCAgICAgICAgICAiL3Vzci9iaW4vcHJvZy1CIiApLAorICAgICAgICAoICJ1c3IvYmluL3Byb2ctQyIsICAiLi4vLi4vc2Jpbi9wcm9nLUMiLCAgICAiL3NiaW4vcHJvZy1DIiApLAorICAgICAgICAoICJ1c3IvYmluL3Byb2ctRCIsICAiL3NiaW4vcHJvZy1EIiwgICAgICAgICAiL3NiaW4vcHJvZy1EIiApLAorICAgICAgICAoICJ1c3IvYmluWC9wcm9nLUUiLCAiLi4vc2Jpbi9wcm9nLUUiLCAgICAgICBOb25lICksCisgICAgICAgICggInVzci9iaW4vcHJvZy1GIiwgICIuLi8uLi8uLi9zYmluL3Byb2ctRiIsICIvc2Jpbi9wcm9nLUYiICksCisgICAgICAgICggImxvb3AiLCAgICAgICAgICAgICJhL2xvb3AiLCAgICAgICAgICAgICAgIE5vbmUgKSwKKyAgICAgICAgKCAiYS9sb29wIiwgICAgICAgICAgIi4uL2xvb3AiLCAgICAgICAgICAgICAgTm9uZSApLAorICAgICAgICAoICJiL3Rlc3QiLCAgICAgICAgICAiZmlsZS9mb28iLCAgICAgICAgICAgICAiL2IvZmlsZS9mb28iICksCisgICAgXQorCisgICAgTElOS1NfUEhZUyA9IFsKKyAgICAgICAgKCAiLi8iLCAgICAgICAgICAiLyIsICAgICAgICAgICAgICAgICIiICksCisgICAgICAgICggImJpblgvcHJvZy1FIiwgIi91c3Ivc2Jpbi9wcm9nLUUiLCAiL3NiaW4vcHJvZy1FIiApLAorICAgIF0KKworICAgIEVYQ0VQVElPTlMgPSBbCisgICAgICAgICggImxvb3AiLCAgIGVycm5vLkVMT09QICksCisgICAgICAgICggImIvdGVzdCIsIGVycm5vLkVOT0VOVCApLAorICAgIF0KKworICAgIGRlZiBfX2RlbF9fKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICAjb3Muc3lzdGVtKCJ0cmVlIC1GICVzIiAlIHNlbGYudG1wZGlyKQorICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLnRtcGRpcikKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLnRtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4ID0gIm9lLXRlc3RfcGF0aCIpCisgICAgICAgIHNlbGYucm9vdCA9IG9zLnBhdGguam9pbihzZWxmLnRtcGRpciwgIlIiKQorCisgICAgICAgIG9zLm1rZGlyKG9zLnBhdGguam9pbihzZWxmLnRtcGRpciwgIl9yZWFsIikpCisgICAgICAgIG9zLnN5bWxpbmsoIl9yZWFsIiwgc2VsZi5yb290KQorCisgICAgICAgIGZvciBkIGluIHNlbGYuRElSUzoKKyAgICAgICAgICAgIG9zLm1rZGlyKG9zLnBhdGguam9pbihzZWxmLnJvb3QsIGQpKQorICAgICAgICBmb3IgZiBpbiBzZWxmLkZJTEVTOgorICAgICAgICAgICAgb3Blbihvcy5wYXRoLmpvaW4oc2VsZi5yb290LCBmKSwgInciKQorICAgICAgICBmb3IgbCBpbiBzZWxmLkxJTktTOgorICAgICAgICAgICAgb3Muc3ltbGluayhsWzFdLCBvcy5wYXRoLmpvaW4oc2VsZi5yb290LCBsWzBdKSkKKworICAgIGRlZiBfX3JlYWxwYXRoKHNlbGYsIGZpbGUsIHVzZV9waHlzZGlyLCBhc3N1bWVfZGlyID0gVHJ1ZSk6CisgICAgICAgIHJldHVybiBvZS5wYXRoLnJlYWxwYXRoKG9zLnBhdGguam9pbihzZWxmLnJvb3QsIGZpbGUpLCBzZWxmLnJvb3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZV9waHlzZGlyLCBhc3N1bWVfZGlyID0gYXNzdW1lX2RpcikKKworICAgIGRlZiB0ZXN0X25vcm0oc2VsZik6CisgICAgICAgIGZvciBsIGluIHNlbGYuTElOS1M6CisgICAgICAgICAgICBpZiBsWzJdID09IE5vbmU6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgdGFyZ2V0X3AgPSBzZWxmLl9fcmVhbHBhdGgobFswXSwgVHJ1ZSkKKyAgICAgICAgICAgIHRhcmdldF9sID0gc2VsZi5fX3JlYWxwYXRoKGxbMF0sIEZhbHNlKQorCisgICAgICAgICAgICBpZiBsWzJdICE9IEZhbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGFyZ2V0X3AsIHRhcmdldF9sKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobFsyXSwgdGFyZ2V0X3BbbGVuKHNlbGYucm9vdCk6XSkKKworICAgIGRlZiB0ZXN0X3BoeXMoc2VsZik6CisgICAgICAgIGZvciBsIGluIHNlbGYuTElOS1NfUEhZUzoKKyAgICAgICAgICAgIHRhcmdldF9wID0gc2VsZi5fX3JlYWxwYXRoKGxbMF0sIFRydWUpCisgICAgICAgICAgICB0YXJnZXRfbCA9IHNlbGYuX19yZWFscGF0aChsWzBdLCBGYWxzZSkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsWzFdLCB0YXJnZXRfcFtsZW4oc2VsZi5yb290KTpdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsWzJdLCB0YXJnZXRfbFtsZW4oc2VsZi5yb290KTpdKQorCisgICAgZGVmIHRlc3RfbG9vcChzZWxmKToKKyAgICAgICAgZm9yIGUgaW4gc2VsZi5FWENFUFRJT05TOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChPU0Vycm9yLCByJ1xbRXJybm8gJXVcXScgJSBlWzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX3JlYWxwYXRoLCBlWzBdLCBGYWxzZSwgRmFsc2UpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9vZWxpYi90eXBlcy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL29lbGliL3R5cGVzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiNTNhYTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9vZWxpYi90eXBlcy5weQpAQCAtMCwwICsxLDUwIEBACitmcm9tIHVuaXR0ZXN0LmNhc2UgaW1wb3J0IFRlc3RDYXNlCitmcm9tIG9lLm1ha2V0eXBlIGltcG9ydCBjcmVhdGUKKworY2xhc3MgVGVzdEJvb2xlYW5UeXBlKFRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9pbnZhbGlkKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjcmVhdGUsICcnLCAnYm9vbGVhbicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNyZWF0ZSwgJ2ZvbycsICdib29sZWFuJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjcmVhdGUsIG9iamVjdCgpLCAnYm9vbGVhbicpCisKKyAgICBkZWYgdGVzdF90cnVlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoY3JlYXRlKCd5JywgJ2Jvb2xlYW4nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNyZWF0ZSgneWVzJywgJ2Jvb2xlYW4nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNyZWF0ZSgnMScsICdib29sZWFuJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjcmVhdGUoJ3QnLCAnYm9vbGVhbicpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY3JlYXRlKCd0cnVlJywgJ2Jvb2xlYW4nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNyZWF0ZSgnVFJVRScsICdib29sZWFuJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjcmVhdGUoJ3RydUUnLCAnYm9vbGVhbicpKQorCisgICAgZGVmIHRlc3RfZmFsc2Uoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY3JlYXRlKCduJywgJ2Jvb2xlYW4nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjcmVhdGUoJ25vJywgJ2Jvb2xlYW4nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjcmVhdGUoJzAnLCAnYm9vbGVhbicpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNyZWF0ZSgnZicsICdib29sZWFuJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY3JlYXRlKCdmYWxzZScsICdib29sZWFuJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY3JlYXRlKCdGQUxTRScsICdib29sZWFuJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY3JlYXRlKCdmYUxzZScsICdib29sZWFuJykpCisKKyAgICBkZWYgdGVzdF9ib29sX2VxdWFsaXR5KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNyZWF0ZSgnbicsICdib29sZWFuJyksIEZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGNyZWF0ZSgnbicsICdib29sZWFuJyksIFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3JlYXRlKCd5JywgJ2Jvb2xlYW4nKSwgVHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChjcmVhdGUoJ3knLCAnYm9vbGVhbicpLCBGYWxzZSkKKworY2xhc3MgVGVzdExpc3QoVGVzdENhc2UpOgorICAgIGRlZiBhc3NlcnRMaXN0RXF1YWwoc2VsZiwgdmFsdWUsIHZhbGlkLCBzZXA9Tm9uZSk6CisgICAgICAgIG9iaiA9IGNyZWF0ZSh2YWx1ZSwgJ2xpc3QnLCBzZXBhcmF0b3I9c2VwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9iaiwgdmFsaWQpCisgICAgICAgIGlmIHNlcCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2JqLnNlcGFyYXRvciwgc2VwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihvYmopLCBvYmouc2VwYXJhdG9yLmpvaW4ob2JqKSkKKworICAgIGRlZiB0ZXN0X2xpc3Rfbm9zZXAoc2VsZik6CisgICAgICAgIHRlc3RsaXN0ID0gWydhbHBoYScsICdiZXRhJywgJ3RoZXRhJ10KKyAgICAgICAgc2VsZi5hc3NlcnRMaXN0RXF1YWwoJ2FscGhhIGJldGEgdGhldGEnLCB0ZXN0bGlzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRMaXN0RXF1YWwoJ2FscGhhICBiZXRhXHR0aGV0YScsIHRlc3RsaXN0KQorICAgICAgICBzZWxmLmFzc2VydExpc3RFcXVhbCgnYWxwaGEnLCBbJ2FscGhhJ10pCisKKyAgICBkZWYgdGVzdF9saXN0X3VzZXJzZXAoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0TGlzdEVxdWFsKCdmb286YmFyJywgWydmb28nLCAnYmFyJ10sICc6JykKKyAgICAgICAgc2VsZi5hc3NlcnRMaXN0RXF1YWwoJ2ZvbzpiYXI6YmF6JywgWydmb28nLCAnYmFyJywgJ2JheiddLCAnOicpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9vZWxpYi91dGlscy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL29lbGliL3V0aWxzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmYjZjMTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9vZWxpYi91dGlscy5weQpAQCAtMCwwICsxLDUxIEBACitmcm9tIHVuaXR0ZXN0LmNhc2UgaW1wb3J0IFRlc3RDYXNlCitmcm9tIG9lLnV0aWxzIGltcG9ydCBwYWNrYWdlc19maWx0ZXJfb3V0X3N5c3RlbSwgdHJpbV92ZXJzaW9uCisKK2NsYXNzIFRlc3RQYWNrYWdlc0ZpbHRlck91dFN5c3RlbShUZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfZmlsdGVyKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aGF0IG9lLnV0aWxzLnBhY2thZ2VzX2ZpbHRlcl9vdXRfc3lzdGVtIHdvcmtzLgorICAgICAgICAiIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW1wb3J0IGJiCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIkNhbm5vdCBpbXBvcnQgYmIiKQorCisgICAgICAgIGQgPSBiYi5kYXRhX3NtYXJ0LkRhdGFTbWFydCgpCisgICAgICAgIGQuc2V0VmFyKCJQTiIsICJmb28iKQorCisgICAgICAgIGQuc2V0VmFyKCJQQUNLQUdFUyIsICJmb28gZm9vLWRvYyBmb28tZGV2IikKKyAgICAgICAgcGtncyA9IHBhY2thZ2VzX2ZpbHRlcl9vdXRfc3lzdGVtKGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGtncywgW10pCisKKyAgICAgICAgZC5zZXRWYXIoIlBBQ0tBR0VTIiwgImZvbyBmb28tZG9jIGZvby1kYXRhIGZvby1kZXYiKQorICAgICAgICBwa2dzID0gcGFja2FnZXNfZmlsdGVyX291dF9zeXN0ZW0oZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwa2dzLCBbImZvby1kYXRhIl0pCisKKyAgICAgICAgZC5zZXRWYXIoIlBBQ0tBR0VTIiwgImZvbyBmb28tbG9jYWxlLWVuLWdiIikKKyAgICAgICAgcGtncyA9IHBhY2thZ2VzX2ZpbHRlcl9vdXRfc3lzdGVtKGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGtncywgW10pCisKKyAgICAgICAgZC5zZXRWYXIoIlBBQ0tBR0VTIiwgImZvbyBmb28tZGF0YSBmb28tbG9jYWxlLWVuLWdiIikKKyAgICAgICAgcGtncyA9IHBhY2thZ2VzX2ZpbHRlcl9vdXRfc3lzdGVtKGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGtncywgWyJmb28tZGF0YSJdKQorCisKK2NsYXNzIFRlc3RUcmltVmVyc2lvbihUZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfdmVyc2lvbl9leGNlcHRpb24oc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHRyaW1fdmVyc2lvbihOb25lLCAyKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB0cmltX3ZlcnNpb24oKDEsIDIsIDMpLCAyKQorCisgICAgZGVmIHRlc3RfbnVtX2V4Y2VwdGlvbihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHRyaW1fdmVyc2lvbigiMS4yLjMiLCAwKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgdHJpbV92ZXJzaW9uKCIxLjIuMyIsIC0xKQorCisgICAgZGVmIHRlc3RfdmFsaWQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJpbV92ZXJzaW9uKCIxLjIuMyIsIDEpLCAiMSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJpbV92ZXJzaW9uKCIxLjIuMyIsIDIpLCAiMS4yIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmltX3ZlcnNpb24oIjEuMi4zIiwgMyksICIxLjIuMyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJpbV92ZXJzaW9uKCIxLjIuMyIsIDQpLCAiMS4yLjMiKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvb2VzY3JpcHRzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvb2VzY3JpcHRzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlZTc1MzcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9vZXNjcmlwdHMucHkKQEAgLTAsMCArMSwxNSBAQAorZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2UgaW1wb3J0IE9FU2VsZnRlc3RUZXN0Q2FzZQorZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2VzLmJ1aWxkaGlzdG9yeSBpbXBvcnQgQnVpbGRoaXN0b3J5QmFzZQorZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBDb21tYW5kLCBydW5DbWQsIGJpdGJha2UsIGdldF9iYl92YXIsIGdldF90ZXN0X2xheWVyCitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3Iub2VpZCBpbXBvcnQgT0VUZXN0SUQKKworY2xhc3MgQnVpbGRoaXN0b3J5RGlmZlRlc3RzKEJ1aWxkaGlzdG9yeUJhc2UpOgorCisgICAgQE9FVGVzdElEKDI5NSkKKyAgICBkZWYgdGVzdF9idWlsZGhpc3RvcnlfZGlmZihzZWxmKToKKyAgICAgICAgdGFyZ2V0ID0gJ3hjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUnCisgICAgICAgIHNlbGYucnVuX2J1aWxkaGlzdG9yeV9vcGVyYXRpb24odGFyZ2V0LCB0YXJnZXRfY29uZmlnPSJQUiA9IFwicjFcIiIsIGNoYW5nZV9iaF9sb2NhdGlvbj1UcnVlKQorICAgICAgICBzZWxmLnJ1bl9idWlsZGhpc3Rvcnlfb3BlcmF0aW9uKHRhcmdldCwgdGFyZ2V0X2NvbmZpZz0iUFIgPSBcInIwXCIiLCBjaGFuZ2VfYmhfbG9jYXRpb249RmFsc2UsIGV4cGVjdF9lcnJvcj1UcnVlKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoImJ1aWxkaGlzdG9yeS1kaWZmIC1wICVzIiAlIGdldF9iYl92YXIoJ0JVSUxESElTVE9SWV9ESVInKSkKKyAgICAgICAgZXhwZWN0ZWRfb3V0cHV0ID0gJ1BSIGNoYW5nZWQgZnJvbSAicjEiIHRvICJyMCInCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShleHBlY3RlZF9vdXRwdXQgaW4gcmVzdWx0Lm91dHB1dCwgbXNnPSJEaWQgbm90IGZpbmQgZXhwZWN0ZWQgb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcGFja2FnZS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3BhY2thZ2UucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTY5Njk4ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3BhY2thZ2UucHkKQEAgLTAsMCArMSw4NiBAQAorZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2UgaW1wb3J0IE9FU2VsZnRlc3RUZXN0Q2FzZQorZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLm9laWQgaW1wb3J0IE9FVGVzdElECitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IGJpdGJha2UsIGdldF9iYl92YXJzCitpbXBvcnQgc3VicHJvY2Vzcywgb3MKK2ltcG9ydCBvZS5wYXRoCisKK2NsYXNzIFZlcnNpb25PcmRlcmluZyhPRVNlbGZ0ZXN0VGVzdENhc2UpOgorICAgICMgdmVyc2lvbjEsIHZlcnNpb24yLCBzb3J0IG9yZGVyCisgICAgdGVzdHMgPSAoCisgICAgICAgICgiMS4wIiwgIjEuMCIsIDApLAorICAgICAgICAoIjEuMCIsICIyLjAiLCAtMSksCisgICAgICAgICgiMi4wIiwgIjEuMCIsIDEpLAorICAgICAgICAoIjIuMC1yYyIsICIyLjAiLCAxKSwKKyAgICAgICAgKCIyLjB+cmMiLCAiMi4wIiwgLTEpLAorICAgICAgICAoIjEuMnJjMiIsICIxLjIuMCIsIC0xKQorICAgICAgICApCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICBzdXBlcigpLnNldFVwQ2xhc3MoKQorCisgICAgICAgICMgQnVpbGQgdGhlIHRvb2xzIHdlIG5lZWQgYW5kIHBvcHVsYXRlIGEgc3lzcm9vdAorICAgICAgICBiaXRiYWtlKCJkcGtnLW5hdGl2ZSBvcGtnLW5hdGl2ZSBycG0tbmF0aXZlIHB5dGhvbjMtbmF0aXZlIikKKyAgICAgICAgYml0YmFrZSgiYnVpbGQtc3lzcm9vdHMgLWMgYnVpbGRfbmF0aXZlX3N5c3Jvb3QiKQorCisgICAgICAgICMgR2V0IHRoZSBwYXRocyBzbyB3ZSBjYW4gcG9pbnQgaW50byB0aGUgc3lzcm9vdCBjb3JyZWN0bHkKKyAgICAgICAgdmFycyA9IGdldF9iYl92YXJzKFsiU1RBR0lOR19ESVIiLCAiQlVJTERfQVJDSCIsICJiaW5kaXJfbmF0aXZlIiwgImxpYmRpcl9uYXRpdmUiXSkKKyAgICAgICAgY2xzLnN0YWdpbmcgPSBvZS5wYXRoLmpvaW4odmFyc1siU1RBR0lOR19ESVIiXSwgdmFyc1siQlVJTERfQVJDSCJdKQorICAgICAgICBjbHMuYmluZGlyID0gb2UucGF0aC5qb2luKGNscy5zdGFnaW5nLCB2YXJzWyJiaW5kaXJfbmF0aXZlIl0pCisgICAgICAgIGNscy5saWJkaXIgPSBvZS5wYXRoLmpvaW4oY2xzLnN0YWdpbmcsIHZhcnNbImxpYmRpcl9uYXRpdmUiXSkKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgIyBKdXN0IGZvciBjb252ZW5pZW5jZQorICAgICAgICBzZWxmLnN0YWdpbmcgPSB0eXBlKHNlbGYpLnN0YWdpbmcKKyAgICAgICAgc2VsZi5iaW5kaXIgPSB0eXBlKHNlbGYpLmJpbmRpcgorICAgICAgICBzZWxmLmxpYmRpciA9IHR5cGUoc2VsZikubGliZGlyCisKKyAgICBAT0VUZXN0SUQoMTg4MCkKKyAgICBkZWYgdGVzdF9kcGtnKHNlbGYpOgorICAgICAgICBmb3IgdmVyMSwgdmVyMiwgc29ydCBpbiBzZWxmLnRlc3RzOgorICAgICAgICAgICAgb3AgPSB7IC0xOiAiPDwiLCAwOiAiPSIsIDE6ICI+PiIgfVtzb3J0XQorICAgICAgICAgICAgc3RhdHVzID0gc3VicHJvY2Vzcy5jYWxsKChvZS5wYXRoLmpvaW4oc2VsZi5iaW5kaXIsICJkcGtnIiksICItLWNvbXBhcmUtdmVyc2lvbnMiLCB2ZXIxLCBvcCwgdmVyMikpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMCwgIiVzICVzICVzIGZhaWxlZCIgJSAodmVyMSwgb3AsIHZlcjIpKQorCisgICAgICAgICAgICAjIE5vdyBkbyBpdCBhZ2FpbiBidXQgd2l0aCBpbmNvcnJlY3Qgb3BlcmF0aW9ucworICAgICAgICAgICAgb3AgPSB7IC0xOiAiPj4iLCAwOiAiPj4iLCAxOiAiPDwiIH1bc29ydF0KKyAgICAgICAgICAgIHN0YXR1cyA9IHN1YnByb2Nlc3MuY2FsbCgob2UucGF0aC5qb2luKHNlbGYuYmluZGlyLCAiZHBrZyIpLCAiLS1jb21wYXJlLXZlcnNpb25zIiwgdmVyMSwgb3AsIHZlcjIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChzdGF0dXMsIDAsICIlcyAlcyAlcyBmYWlsZWQiICUgKHZlcjEsIG9wLCB2ZXIyKSkKKworICAgICAgICAgICAgIyBOb3cgZG8gaXQgYWdhaW4gYnV0IHdpdGggaW5jb3JyZWN0IG9wZXJhdGlvbnMKKyAgICAgICAgICAgIG9wID0geyAtMTogIj0iLCAwOiAiPDwiLCAxOiAiPSIgfVtzb3J0XQorICAgICAgICAgICAgc3RhdHVzID0gc3VicHJvY2Vzcy5jYWxsKChvZS5wYXRoLmpvaW4oc2VsZi5iaW5kaXIsICJkcGtnIiksICItLWNvbXBhcmUtdmVyc2lvbnMiLCB2ZXIxLCBvcCwgdmVyMikpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHN0YXR1cywgMCwgIiVzICVzICVzIGZhaWxlZCIgJSAodmVyMSwgb3AsIHZlcjIpKQorCisgICAgQE9FVGVzdElEKDE4ODEpCisgICAgZGVmIHRlc3Rfb3BrZyhzZWxmKToKKyAgICAgICAgZm9yIHZlcjEsIHZlcjIsIHNvcnQgaW4gc2VsZi50ZXN0czoKKyAgICAgICAgICAgIG9wID0geyAtMTogIjw8IiwgMDogIj0iLCAxOiAiPj4iIH1bc29ydF0KKyAgICAgICAgICAgIHN0YXR1cyA9IHN1YnByb2Nlc3MuY2FsbCgob2UucGF0aC5qb2luKHNlbGYuYmluZGlyLCAib3BrZyIpLCAiY29tcGFyZS12ZXJzaW9ucyIsIHZlcjEsIG9wLCB2ZXIyKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCAiJXMgJXMgJXMgZmFpbGVkIiAlICh2ZXIxLCBvcCwgdmVyMikpCisKKyAgICAgICAgICAgICMgTm93IGRvIGl0IGFnYWluIGJ1dCB3aXRoIGluY29ycmVjdCBvcGVyYXRpb25zCisgICAgICAgICAgICBvcCA9IHsgLTE6ICI+PiIsIDA6ICI+PiIsIDE6ICI8PCIgfVtzb3J0XQorICAgICAgICAgICAgc3RhdHVzID0gc3VicHJvY2Vzcy5jYWxsKChvZS5wYXRoLmpvaW4oc2VsZi5iaW5kaXIsICJvcGtnIiksICJjb21wYXJlLXZlcnNpb25zIiwgdmVyMSwgb3AsIHZlcjIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChzdGF0dXMsIDAsICIlcyAlcyAlcyBmYWlsZWQiICUgKHZlcjEsIG9wLCB2ZXIyKSkKKworICAgICAgICAgICAgIyBOb3cgZG8gaXQgYWdhaW4gYnV0IHdpdGggaW5jb3JyZWN0IG9wZXJhdGlvbnMKKyAgICAgICAgICAgIG9wID0geyAtMTogIj0iLCAwOiAiPDwiLCAxOiAiPSIgfVtzb3J0XQorICAgICAgICAgICAgc3RhdHVzID0gc3VicHJvY2Vzcy5jYWxsKChvZS5wYXRoLmpvaW4oc2VsZi5iaW5kaXIsICJvcGtnIiksICJjb21wYXJlLXZlcnNpb25zIiwgdmVyMSwgb3AsIHZlcjIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChzdGF0dXMsIDAsICIlcyAlcyAlcyBmYWlsZWQiICUgKHZlcjEsIG9wLCB2ZXIyKSkKKworICAgIEBPRVRlc3RJRCgxODgyKQorICAgIGRlZiB0ZXN0X3JwbShzZWxmKToKKyAgICAgICAgIyBOZWVkIHRvIHRlbGwgdGhlIFB5dGhvbiBiaW5kaW5ncyB3aGVyZSB0byBmaW5kIGl0cyBjb25maWd1cmF0aW9uCisgICAgICAgIGVudiA9IG9zLmVudmlyb24uY29weSgpCisgICAgICAgIGVudlsiUlBNX0NPTkZJR0RJUiJdID0gb2UucGF0aC5qb2luKHNlbGYubGliZGlyLCAicnBtIikKKworICAgICAgICBmb3IgdmVyMSwgdmVyMiwgc29ydCBpbiBzZWxmLnRlc3RzOgorICAgICAgICAgICAgIyBUaGUgb25seSB3YXkgdG8gdGVzdCBycG0gaXMgdmlhIHRoZSBQeXRob24gbW9kdWxlLCBzbyB3ZSBuZWVkIHRvCisgICAgICAgICAgICAjIGV4ZWN1dGUgcHl0aG9uMy1uYXRpdmUuICBsYWJlbENvbXBhcmUgcmV0dXJucyAtMS8wLzEgKGxpa2Ugc3RyY21wKQorICAgICAgICAgICAgIyBzbyBhZGQgMTAwIGFuZCB1c2UgdGhhdCBhcyB0aGUgZXhpdCBjb2RlLgorICAgICAgICAgICAgY29tbWFuZCA9IChvZS5wYXRoLmpvaW4oc2VsZi5iaW5kaXIsICJweXRob24zLW5hdGl2ZSIsICJweXRob24zIiksICItYyIsCisgICAgICAgICAgICAgICAgICAgICAgICJpbXBvcnQgc3lzLCBycG07IHYxPShOb25lLCBcIiVzXCIsIE5vbmUpOyB2Mj0oTm9uZSwgXCIlc1wiLCBOb25lKTsgc3lzLmV4aXQocnBtLmxhYmVsQ29tcGFyZSh2MSwgdjIpICsgMTAwKSIgJSAodmVyMSwgdmVyMikpCisgICAgICAgICAgICBzdGF0dXMgPSBzdWJwcm9jZXNzLmNhbGwoY29tbWFuZCwgZW52PWVudikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc3RhdHVzLCAoOTksIDEwMCwgMTAxKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzIC0gMTAwLCBzb3J0LCAiJXMgJXMgKCVkKSBmYWlsZWQiICUgKHZlcjEsIHZlcjIsIHNvcnQpKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcGtnZGF0YS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3BrZ2RhdGEucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGI0Y2FmMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3BrZ2RhdGEucHkKQEAgLTAsMCArMSwyMjQgQEAKK2ltcG9ydCBvcworaW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgZm5tYXRjaAorCitmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZSBpbXBvcnQgT0VTZWxmdGVzdFRlc3RDYXNlCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZCwgYml0YmFrZSwgZ2V0X2JiX3ZhciwgZ2V0X2JiX3ZhcnMKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvci5vZWlkIGltcG9ydCBPRVRlc3RJRAorCitjbGFzcyBPZVBrZ2RhdGFVdGlsVGVzdHMoT0VTZWxmdGVzdFRlc3RDYXNlKToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIHN1cGVyKE9lUGtnZGF0YVV0aWxUZXN0cywgY2xzKS5zZXRVcENsYXNzKCkKKyAgICAgICAgIyBFbnN1cmUgd2UgaGF2ZSB0aGUgcmlnaHQgZGF0YSBpbiBwa2dkYXRhCisgICAgICAgIGNscy5sb2dnZXIuaW5mbygnUnVubmluZyBiaXRiYWtlIHRvIGdlbmVyYXRlIHBrZ2RhdGEnKQorICAgICAgICBiaXRiYWtlKCdidXN5Ym94IHpsaWIgbTQnKQorCisgICAgQE9FVGVzdElEKDEyMDMpCisgICAgZGVmIHRlc3RfbG9va3VwX3BrZyhzZWxmKToKKyAgICAgICAgIyBGb3J3YXJkIHRlc3RzCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGxvb2t1cC1wa2cgInpsaWIgYnVzeWJveCInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQsICdsaWJ6MVxuYnVzeWJveCcpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGxvb2t1cC1wa2cgemxpYi1kZXYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQsICdsaWJ6LWRldicpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGxvb2t1cC1wa2cgbm9uZXhpc3RlbnRwa2cnLCBpZ25vcmVfc3RhdHVzPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnN0YXR1cywgMSwgIlN0YXR1cyBkaWZmZXJlbnQgdGhhbiAxLiBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dCwgJ0VSUk9SOiBUaGUgZm9sbG93aW5nIHBhY2thZ2VzIGNvdWxkIG5vdCBiZSBmb3VuZDogbm9uZXhpc3RlbnRwa2cnKQorICAgICAgICAjIFJldmVyc2UgdGVzdHMKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgbG9va3VwLXBrZyAtciAibGliejEgYnVzeWJveCInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQsICd6bGliXG5idXN5Ym94JykKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgbG9va3VwLXBrZyAtciBsaWJ6LWRldicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dCwgJ3psaWItZGV2JykKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgbG9va3VwLXBrZyAtciBub25leGlzdGVudHBrZycsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuc3RhdHVzLCAxLCAiU3RhdHVzIGRpZmZlcmVudCB0aGFuIDEuIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LCAnRVJST1I6IFRoZSBmb2xsb3dpbmcgcGFja2FnZXMgY291bGQgbm90IGJlIGZvdW5kOiBub25leGlzdGVudHBrZycpCisKKyAgICBAT0VUZXN0SUQoMTIwNSkKKyAgICBkZWYgdGVzdF9yZWFkX3ZhbHVlKHNlbGYpOgorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCByZWFkLXZhbHVlIFBOIGxpYnoxJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LCAnemxpYicpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIHJlYWQtdmFsdWUgUEtHIGxpYnoxJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LCAnbGliejEnKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCByZWFkLXZhbHVlIFBLR1NJWkUgbTQnKQorICAgICAgICBwa2dzaXplID0gaW50KHJlc3VsdC5vdXRwdXQuc3RyaXAoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHBrZ3NpemUsIDEsICJTaXplIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gMS4gJXMiICUgcmVzdWx0Lm91dHB1dCkKKworICAgIEBPRVRlc3RJRCgxMTk4KQorICAgIGRlZiB0ZXN0X2ZpbmRfcGF0aChzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgZmluZC1wYXRoIC9saWIvbGliei5zby4xJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LCAnemxpYjogL2xpYi9saWJ6LnNvLjEnKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBmaW5kLXBhdGggL3Vzci9iaW4vbTQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQsICdtNDogL3Vzci9iaW4vbTQnKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBmaW5kLXBhdGggL25vdC9leGlzdCcsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuc3RhdHVzLCAxLCAiU3RhdHVzIGRpZmZlcmVudCB0aGFuIDEuIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LCAnRVJST1I6IFVuYWJsZSB0byBmaW5kIGFueSBwYWNrYWdlIHByb2R1Y2luZyBwYXRoIC9ub3QvZXhpc3QnKQorCisgICAgQE9FVGVzdElEKDEyMDQpCisgICAgZGVmIHRlc3RfbG9va3VwX3JlY2lwZShzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgbG9va3VwLXJlY2lwZSAibGliei1zdGF0aWNkZXYgYnVzeWJveCInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQsICd6bGliXG5idXN5Ym94JykKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgbG9va3VwLXJlY2lwZSBsaWJ6LWRiZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dCwgJ3psaWInKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBsb29rdXAtcmVjaXBlIG5vbmV4aXN0ZW50cGtnJywgaWdub3JlX3N0YXR1cz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5zdGF0dXMsIDEsICJTdGF0dXMgZGlmZmVyZW50IHRoYW4gMS4gb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQsICdFUlJPUjogVGhlIGZvbGxvd2luZyBwYWNrYWdlcyBjb3VsZCBub3QgYmUgZm91bmQ6IG5vbmV4aXN0ZW50cGtnJykKKworICAgIEBPRVRlc3RJRCgxMjAyKQorICAgIGRlZiB0ZXN0X2xpc3RfcGtncyhzZWxmKToKKyAgICAgICAgIyBObyBhcmd1bWVudHMKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgbGlzdC1wa2dzJykKKyAgICAgICAgcGtnbGlzdCA9IHJlc3VsdC5vdXRwdXQuc3BsaXQoKQorICAgICAgICBzZWxmLmFzc2VydEluKCd6bGliJywgcGtnbGlzdCwgIkxpc3RlZCBwYWNrYWdlczogJXMiICUgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignemxpYi1kZXYnLCBwa2dsaXN0LCAiTGlzdGVkIHBhY2thZ2VzOiAlcyIgJSByZXN1bHQub3V0cHV0KQorICAgICAgICAjIE5vIHBrZ3NwZWMsIHJ1bnRpbWUKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgbGlzdC1wa2dzIC1yJykKKyAgICAgICAgcGtnbGlzdCA9IHJlc3VsdC5vdXRwdXQuc3BsaXQoKQorICAgICAgICBzZWxmLmFzc2VydEluKCdsaWJ6LWRldicsIHBrZ2xpc3QsICJMaXN0ZWQgcGFja2FnZXM6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCisgICAgICAgICMgV2l0aCByZWNpcGUgc3BlY2lmaWVkCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGxpc3QtcGtncyAtcCB6bGliJykKKyAgICAgICAgcGtnbGlzdCA9IHNvcnRlZChyZXN1bHQub3V0cHV0LnNwbGl0KCkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHBrZ2xpc3QucmVtb3ZlKCd6bGliLXB0ZXN0JykgIyBpbiBjYXNlIHB0ZXN0IGlzIGRpc2FibGVkCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBrZ2xpc3QsIFsnemxpYicsICd6bGliLWRiZycsICd6bGliLWRldicsICd6bGliLWRvYycsICd6bGliLXN0YXRpY2RldiddLCAiUGFja2FnZXMgbGlzdGVkIGFmdGVyIHJlbW92ZTogJXMiICUgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgIyBXaXRoIHJlY2lwZSBzcGVjaWZpZWQsIHJ1bnRpbWUKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgbGlzdC1wa2dzIC1wIHpsaWIgLXInKQorICAgICAgICBwa2dsaXN0ID0gc29ydGVkKHJlc3VsdC5vdXRwdXQuc3BsaXQoKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcGtnbGlzdC5yZW1vdmUoJ2xpYnotcHRlc3QnKSAjIGluIGNhc2UgcHRlc3QgaXMgZGlzYWJsZWQKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGtnbGlzdCwgWydsaWJ6LWRiZycsICdsaWJ6LWRldicsICdsaWJ6LWRvYycsICdsaWJ6LXN0YXRpY2RldicsICdsaWJ6MSddLCAiUGFja2FnZXMgbGlzdGVkIGFmdGVyIHJlbW92ZTogJXMiICUgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgIyBXaXRoIHJlY2lwZSBzcGVjaWZpZWQgYW5kIHVucGFja2FnZWQKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgbGlzdC1wa2dzIC1wIHpsaWIgLXUnKQorICAgICAgICBwa2dsaXN0ID0gc29ydGVkKHJlc3VsdC5vdXRwdXQuc3BsaXQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignemxpYi1sb2NhbGUnLCBwa2dsaXN0LCAiTGlzdGVkIHBhY2thZ2VzOiAlcyIgJSByZXN1bHQub3V0cHV0KQorICAgICAgICAjIFdpdGggcmVjaXBlIHNwZWNpZmllZCBhbmQgdW5wYWNrYWdlZCwgcnVudGltZQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBsaXN0LXBrZ3MgLXAgemxpYiAtdSAtcicpCisgICAgICAgIHBrZ2xpc3QgPSBzb3J0ZWQocmVzdWx0Lm91dHB1dC5zcGxpdCgpKQorICAgICAgICBzZWxmLmFzc2VydEluKCdsaWJ6LWxvY2FsZScsIHBrZ2xpc3QsICJMaXN0ZWQgcGFja2FnZXM6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCisgICAgICAgICMgV2l0aCByZWNpcGUgc3BlY2lmaWVkIGFuZCBwa2dzcGVjCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGxpc3QtcGtncyAtcCB6bGliICIqLWQqIicpCisgICAgICAgIHBrZ2xpc3QgPSBzb3J0ZWQocmVzdWx0Lm91dHB1dC5zcGxpdCgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBrZ2xpc3QsIFsnemxpYi1kYmcnLCAnemxpYi1kZXYnLCAnemxpYi1kb2MnXSwgIlBhY2thZ2VzIGxpc3RlZDogJXMiICUgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgIyBXaXRoIHJlY2lwZSBzcGVjaWZpZWQgYW5kIHBrZ3NwZWMsIHJ1bnRpbWUKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgbGlzdC1wa2dzIC1wIHpsaWIgLXIgIiotZCoiJykKKyAgICAgICAgcGtnbGlzdCA9IHNvcnRlZChyZXN1bHQub3V0cHV0LnNwbGl0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGtnbGlzdCwgWydsaWJ6LWRiZycsICdsaWJ6LWRldicsICdsaWJ6LWRvYyddLCAiUGFja2FnZXMgbGlzdGVkOiAlcyIgJSByZXN1bHQub3V0cHV0KQorCisgICAgQE9FVGVzdElEKDEyMDEpCisgICAgZGVmIHRlc3RfbGlzdF9wa2dfZmlsZXMoc2VsZik6CisgICAgICAgIGRlZiBzcGxpdG91dHB1dChvdXRwdXQpOgorICAgICAgICAgICAgZmlsZXMgPSB7fQorICAgICAgICAgICAgY3VycGtnID0gTm9uZQorICAgICAgICAgICAgZm9yIGxpbmUgaW4gb3V0cHV0LnNwbGl0bGluZXMoKToKKyAgICAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJ1x0Jyk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjdXJwa2csICdVbmV4cGVjdGVkIG5vbi1wYWNrYWdlIGxpbmU6XG4lcycgJSBsaW5lKQorICAgICAgICAgICAgICAgICAgICBmaWxlc1tjdXJwa2ddLmFwcGVuZChsaW5lLnN0cmlwKCkpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxpbmUucnN0cmlwKCkuZW5kc3dpdGgoJzonKSwgJ0ludmFsaWQgcGFja2FnZSBsaW5lIGluIG91dHB1dDpcbiVzJyAlIGxpbmUpCisgICAgICAgICAgICAgICAgICAgIGN1cnBrZyA9IGxpbmUuc3BsaXQoJzonKVswXQorICAgICAgICAgICAgICAgICAgICBmaWxlc1tjdXJwa2ddID0gW10KKyAgICAgICAgICAgIHJldHVybiBmaWxlcworICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydiYXNlX2xpYmRpcicsICdsaWJkaXInLCAnaW5jbHVkZWRpcicsICdtYW5kaXInXSkKKyAgICAgICAgYmFzZV9saWJkaXIgPSBiYl92YXJzWydiYXNlX2xpYmRpciddCisgICAgICAgIGxpYmRpciA9IGJiX3ZhcnNbJ2xpYmRpciddCisgICAgICAgIGluY2x1ZGVkaXIgPSBiYl92YXJzWydpbmNsdWRlZGlyJ10KKyAgICAgICAgbWFuZGlyID0gYmJfdmFyc1snbWFuZGlyJ10KKyAgICAgICAgIyBUZXN0IHJlY2lwZS1zcGFjZSBwYWNrYWdlIG5hbWUKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgbGlzdC1wa2ctZmlsZXMgemxpYi1kZXYgemxpYi1kb2MnKQorICAgICAgICBmaWxlcyA9IHNwbGl0b3V0cHV0KHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3psaWItZGV2JywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3psaWItZG9jJywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4ob3MucGF0aC5qb2luKGluY2x1ZGVkaXIsICd6bGliLmgnKSwgZmlsZXNbJ3psaWItZGV2J10pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4ob3MucGF0aC5qb2luKG1hbmRpciwgJ21hbjMvemxpYi4zJyksIGZpbGVzWyd6bGliLWRvYyddKQorICAgICAgICAjIFRlc3QgcnVudGltZSBwYWNrYWdlIG5hbWUKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgbGlzdC1wa2ctZmlsZXMgLXIgbGliejEgbGliei1kZXYnKQorICAgICAgICBmaWxlcyA9IHNwbGl0b3V0cHV0KHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xpYnoxJywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xpYnotZGV2JywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4oZmlsZXNbJ2xpYnoxJ10pLCAxKQorICAgICAgICBsaWJzcGVjID0gb3MucGF0aC5qb2luKGJhc2VfbGliZGlyLCAnbGliei5zby4xLionKQorICAgICAgICBmb3VuZCA9IEZhbHNlCisgICAgICAgIGZvciBmaWxlaXRlbSBpbiBmaWxlc1snbGliejEnXToKKyAgICAgICAgICAgIGlmIGZubWF0Y2guZm5tYXRjaGNhc2UoZmlsZWl0ZW0sIGxpYnNwZWMpOgorICAgICAgICAgICAgICAgIGZvdW5kID0gVHJ1ZQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmb3VuZCwgJ0NvdWxkIG5vdCBmaW5kIHpsaWIgbGlicmFyeSBmaWxlICVzIGluIGxpYnoxIHBhY2thZ2UgZmlsZSBsaXN0OiAlcycgJSAobGlic3BlYywgZmlsZXNbJ2xpYnoxJ10pKQorICAgICAgICBzZWxmLmFzc2VydEluKG9zLnBhdGguam9pbihpbmNsdWRlZGlyLCAnemxpYi5oJyksIGZpbGVzWydsaWJ6LWRldiddKQorICAgICAgICAjIFRlc3QgcmVjaXBlCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGxpc3QtcGtnLWZpbGVzIC1wIHpsaWInKQorICAgICAgICBmaWxlcyA9IHNwbGl0b3V0cHV0KHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3psaWItZGJnJywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3psaWItZG9jJywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3psaWItZGV2JywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3psaWItc3RhdGljZGV2JywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3psaWInLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignemxpYi1sb2NhbGUnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgIyAoaWdub3JlIHB0ZXN0LCBtaWdodCBub3QgYmUgdGhlcmUgZGVwZW5kaW5nIG9uIGNvbmZpZykKKyAgICAgICAgc2VsZi5hc3NlcnRJbihvcy5wYXRoLmpvaW4oaW5jbHVkZWRpciwgJ3psaWIuaCcpLCBmaWxlc1snemxpYi1kZXYnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihvcy5wYXRoLmpvaW4obWFuZGlyLCAnbWFuMy96bGliLjMnKSwgZmlsZXNbJ3psaWItZG9jJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4ob3MucGF0aC5qb2luKGxpYmRpciwgJ2xpYnouYScpLCBmaWxlc1snemxpYi1zdGF0aWNkZXYnXSkKKyAgICAgICAgIyBUZXN0IHJlY2lwZSwgcnVudGltZQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBsaXN0LXBrZy1maWxlcyAtcCB6bGliIC1yJykKKyAgICAgICAgZmlsZXMgPSBzcGxpdG91dHB1dChyZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKCdsaWJ6LWRiZycsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKCdsaWJ6LWRvYycsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKCdsaWJ6LWRldicsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKCdsaWJ6LXN0YXRpY2RldicsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKCdsaWJ6MScsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdsaWJ6LWxvY2FsZScsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEluKG9zLnBhdGguam9pbihpbmNsdWRlZGlyLCAnemxpYi5oJyksIGZpbGVzWydsaWJ6LWRldiddKQorICAgICAgICBzZWxmLmFzc2VydEluKG9zLnBhdGguam9pbihtYW5kaXIsICdtYW4zL3psaWIuMycpLCBmaWxlc1snbGliei1kb2MnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihvcy5wYXRoLmpvaW4obGliZGlyLCAnbGliei5hJyksIGZpbGVzWydsaWJ6LXN0YXRpY2RldiddKQorICAgICAgICAjIFRlc3QgcmVjaXBlLCB1bnBhY2thZ2VkCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGxpc3QtcGtnLWZpbGVzIC1wIHpsaWIgLXUnKQorICAgICAgICBmaWxlcyA9IHNwbGl0b3V0cHV0KHJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3psaWItZGJnJywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3psaWItZG9jJywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3psaWItZGV2JywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3psaWItc3RhdGljZGV2JywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3psaWInLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignemxpYi1sb2NhbGUnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkgIyB0aGlzIGlzIHRoZSBrZXkgb25lCisgICAgICAgIHNlbGYuYXNzZXJ0SW4ob3MucGF0aC5qb2luKGluY2x1ZGVkaXIsICd6bGliLmgnKSwgZmlsZXNbJ3psaWItZGV2J10pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4ob3MucGF0aC5qb2luKG1hbmRpciwgJ21hbjMvemxpYi4zJyksIGZpbGVzWyd6bGliLWRvYyddKQorICAgICAgICBzZWxmLmFzc2VydEluKG9zLnBhdGguam9pbihsaWJkaXIsICdsaWJ6LmEnKSwgZmlsZXNbJ3psaWItc3RhdGljZGV2J10pCisgICAgICAgICMgVGVzdCByZWNpcGUsIHJ1bnRpbWUsIHVucGFja2FnZWQKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgbGlzdC1wa2ctZmlsZXMgLXAgemxpYiAtciAtdScpCisgICAgICAgIGZpbGVzID0gc3BsaXRvdXRwdXQocmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbGliei1kYmcnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbGliei1kb2MnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbGliei1kZXYnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbGliei1zdGF0aWNkZXYnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbGliejEnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbGliei1sb2NhbGUnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkgIyB0aGlzIGlzIHRoZSBrZXkgb25lCisgICAgICAgIHNlbGYuYXNzZXJ0SW4ob3MucGF0aC5qb2luKGluY2x1ZGVkaXIsICd6bGliLmgnKSwgZmlsZXNbJ2xpYnotZGV2J10pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4ob3MucGF0aC5qb2luKG1hbmRpciwgJ21hbjMvemxpYi4zJyksIGZpbGVzWydsaWJ6LWRvYyddKQorICAgICAgICBzZWxmLmFzc2VydEluKG9zLnBhdGguam9pbihsaWJkaXIsICdsaWJ6LmEnKSwgZmlsZXNbJ2xpYnotc3RhdGljZGV2J10pCisKKyAgICBAT0VUZXN0SUQoMTIwMCkKKyAgICBkZWYgdGVzdF9nbG9iKHNlbGYpOgorICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J3BrZ2RhdGFxYScpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKKyAgICAgICAgcGtnbGlzdGZpbGUgPSBvcy5wYXRoLmpvaW4odGVtcGRpciwgJ3BrZ2xpc3QnKQorICAgICAgICB3aXRoIG9wZW4ocGtnbGlzdGZpbGUsICd3JykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoJ2xpYnoxXG4nKQorICAgICAgICAgICAgZi53cml0ZSgnYnVzeWJveFxuJykKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgZ2xvYiAlcyAiKi1kZXYiJyAlIHBrZ2xpc3RmaWxlKQorICAgICAgICBkZXNpcmVkcmVzdWx0ID0gWydsaWJ6LWRldicsICdidXN5Ym94LWRldiddCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKHJlc3VsdC5vdXRwdXQuc3BsaXQoKSksIHNvcnRlZChkZXNpcmVkcmVzdWx0KSkKKyAgICAgICAgIyBUaGUgZm9sbG93aW5nIHNob3VsZCBub3QgZXJyb3IgKGJlY2F1c2Ugd2hlbiB3ZSB1c2UgdGhpcyBkdXJpbmcgcm9vdGZzIGNvbnN0cnVjdGlvbiwgc29tZXRpbWVzIHRoZSBjb21wbGVtZW50YXJ5IHBhY2thZ2Ugd29uJ3QgZXhpc3QpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGdsb2IgJXMgIiotbm9uZXhpc3RlbnQiJyAlIHBrZ2xpc3RmaWxlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQsICcnKQorICAgICAgICAjIFRlc3QgZXhjbHVkZSBvcHRpb24KKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgZ2xvYiAlcyAiKi1kZXYgKi1kYmciIC14ICJebGlieiInICUgcGtnbGlzdGZpbGUpCisgICAgICAgIHJlc3VsdGxpc3QgPSByZXN1bHQub3V0cHV0LnNwbGl0KCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignbGliei1kZXYnLCByZXN1bHRsaXN0KQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdsaWJ6LWRiZycsIHJlc3VsdGxpc3QpCisKKyAgICBAT0VUZXN0SUQoMTIwNikKKyAgICBkZWYgdGVzdF9zcGVjaWZ5X3BrZ2RhdGFkaXIoc2VsZik6CisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIC1wICVzIGxvb2t1cC1wa2cgemxpYicgJSBnZXRfYmJfdmFyKCdQS0dEQVRBX0RJUicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQsICdsaWJ6MScpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9wcnNlcnZpY2UucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9wcnNlcnZpY2UucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc5ZTUyMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3Byc2VydmljZS5weQpAQCAtMCwwICsxLDEzMSBAQAoraW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBkYXRldGltZQorCitpbXBvcnQgb2VxYS51dGlscy5mdG9vbHMgYXMgZnRvb2xzCitmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZSBpbXBvcnQgT0VTZWxmdGVzdFRlc3RDYXNlCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZCwgYml0YmFrZSwgZ2V0X2JiX3ZhcgorZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLm9laWQgaW1wb3J0IE9FVGVzdElECitmcm9tIG9lcWEudXRpbHMubmV0d29yayBpbXBvcnQgZ2V0X2ZyZWVfcG9ydAorCitjbGFzcyBCaXRiYWtlUHJUZXN0cyhPRVNlbGZ0ZXN0VGVzdENhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgc3VwZXIoQml0YmFrZVByVGVzdHMsIGNscykuc2V0VXBDbGFzcygpCisgICAgICAgIGNscy5wa2dkYXRhX2RpciA9IGdldF9iYl92YXIoJ1BLR0RBVEFfRElSJykKKworICAgIGRlZiBnZXRfcHJfdmVyc2lvbihzZWxmLCBwYWNrYWdlX25hbWUpOgorICAgICAgICBwYWNrYWdlX2RhdGFfZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLnBrZ2RhdGFfZGlyLCAncnVudGltZScsIHBhY2thZ2VfbmFtZSkKKyAgICAgICAgcGFja2FnZV9kYXRhID0gZnRvb2xzLnJlYWRfZmlsZShwYWNrYWdlX2RhdGFfZmlsZSkKKyAgICAgICAgZmluZF9wciA9IHJlLnNlYXJjaCgiUEtHUjogclswLTldK1wuKFswLTldKykiLCBwYWNrYWdlX2RhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmaW5kX3ByLCAiTm8gUEtHIHJldmlzaW9uIGZvdW5kIGluICVzIiAlIHBhY2thZ2VfZGF0YV9maWxlKQorICAgICAgICByZXR1cm4gaW50KGZpbmRfcHIuZ3JvdXAoMSkpCisKKyAgICBkZWYgZ2V0X3Rhc2tfc3RhbXAoc2VsZiwgcGFja2FnZV9uYW1lLCByZWNpcGVfdGFzayk6CisgICAgICAgIHN0YW1wZGF0YSA9IGdldF9iYl92YXIoJ1NUQU1QJywgdGFyZ2V0PXBhY2thZ2VfbmFtZSkuc3BsaXQoJy8nKQorICAgICAgICBwcmVmaXggPSBzdGFtcGRhdGFbLTFdCisgICAgICAgIHBhY2thZ2Vfc3RhbXBzX3BhdGggPSAiLyIuam9pbihzdGFtcGRhdGFbOi0xXSkKKyAgICAgICAgc3RhbXBzID0gW10KKyAgICAgICAgZm9yIHN0YW1wIGluIG9zLmxpc3RkaXIocGFja2FnZV9zdGFtcHNfcGF0aCk6CisgICAgICAgICAgICBmaW5kX3N0YW1wID0gcmUubWF0Y2goIiVzXC4lc1wuKFthLXowLTldezMyfSkiICUgKHJlLmVzY2FwZShwcmVmaXgpLCByZWNpcGVfdGFzayksIHN0YW1wKQorICAgICAgICAgICAgaWYgZmluZF9zdGFtcDoKKyAgICAgICAgICAgICAgICBzdGFtcHMuYXBwZW5kKGZpbmRfc3RhbXAuZ3JvdXAoMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobGVuKHN0YW1wcykgPT0gMCwgbXNnPSJDb3VuZCBub3QgZmluZCBzdGFtcCBmb3IgdGFzayAlcyBmb3IgcmVjaXBlICVzIiAlIChyZWNpcGVfdGFzaywgcGFja2FnZV9uYW1lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShsZW4oc3RhbXBzKSA+IDEsIG1zZz0iRm91bmQgbXVsdGlwbGUgJXMgc3RhbXBzIGZvciB0aGUgJXMgcmVjaXBlIGluIHRoZSAlcyBkaXJlY3RvcnkuIiAlIChyZWNpcGVfdGFzaywgcGFja2FnZV9uYW1lLCBwYWNrYWdlX3N0YW1wc19wYXRoKSkKKyAgICAgICAgcmV0dXJuIHN0cihzdGFtcHNbMF0pCisKKyAgICBkZWYgaW5jcmVtZW50X3BhY2thZ2VfcHIoc2VsZiwgcGFja2FnZV9uYW1lKToKKyAgICAgICAgaW5jX2RhdGEgPSAiZG9fcGFja2FnZV9hcHBlbmQoKSB7XG4gICAgYmIuYnVpbGQuZXhlY19mdW5jKCdkb190ZXN0X3Byc2VydicsIGQpXG59XG5kb190ZXN0X3Byc2VydigpIHtcbmVjaG8gXCJUaGUgY3VycmVudCBkYXRlIGlzOiAlc1wiXG59IiAlIGRhdGV0aW1lLmRhdGV0aW1lLm5vdygpCisgICAgICAgIHNlbGYud3JpdGVfcmVjaXBlaW5jKHBhY2thZ2VfbmFtZSwgaW5jX2RhdGEpCisgICAgICAgIHJlcyA9IGJpdGJha2UocGFja2FnZV9uYW1lLCBpZ25vcmVfc3RhdHVzPVRydWUpCisgICAgICAgIHNlbGYuZGVsZXRlX3JlY2lwZWluYyhwYWNrYWdlX25hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1cywgMCwgbXNnPXJlcy5vdXRwdXQpCisKKyAgICBkZWYgY29uZmlnX3ByX3Rlc3RzKHNlbGYsIHBhY2thZ2VfbmFtZSwgcGFja2FnZV90eXBlPSdycG0nLCBwcl9zb2NrZXQ9J2xvY2FsaG9zdDowJyk6CisgICAgICAgIGNvbmZpZ19wYWNrYWdlX2RhdGEgPSAnUEFDS0FHRV9DTEFTU0VTID0gInBhY2thZ2VfJXMiJyAlIHBhY2thZ2VfdHlwZQorICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhjb25maWdfcGFja2FnZV9kYXRhKQorICAgICAgICBjb25maWdfc2VydmVyX2RhdGEgPSAnUFJTRVJWX0hPU1QgPSAiJXMiJyAlIHByX3NvY2tldAorICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoY29uZmlnX3NlcnZlcl9kYXRhKQorCisgICAgZGVmIHJ1bl90ZXN0X3ByX3NlcnZpY2Uoc2VsZiwgcGFja2FnZV9uYW1lLCBwYWNrYWdlX3R5cGU9J3JwbScsIHRyYWNrX3Rhc2s9J2RvX3BhY2thZ2UnLCBwcl9zb2NrZXQ9J2xvY2FsaG9zdDowJyk6CisgICAgICAgIHNlbGYuY29uZmlnX3ByX3Rlc3RzKHBhY2thZ2VfbmFtZSwgcGFja2FnZV90eXBlLCBwcl9zb2NrZXQpCisKKyAgICAgICAgc2VsZi5pbmNyZW1lbnRfcGFja2FnZV9wcihwYWNrYWdlX25hbWUpCisgICAgICAgIHByXzEgPSBzZWxmLmdldF9wcl92ZXJzaW9uKHBhY2thZ2VfbmFtZSkKKyAgICAgICAgc3RhbXBfMSA9IHNlbGYuZ2V0X3Rhc2tfc3RhbXAocGFja2FnZV9uYW1lLCB0cmFja190YXNrKQorCisgICAgICAgIHNlbGYuaW5jcmVtZW50X3BhY2thZ2VfcHIocGFja2FnZV9uYW1lKQorICAgICAgICBwcl8yID0gc2VsZi5nZXRfcHJfdmVyc2lvbihwYWNrYWdlX25hbWUpCisgICAgICAgIHN0YW1wXzIgPSBzZWxmLmdldF90YXNrX3N0YW1wKHBhY2thZ2VfbmFtZSwgdHJhY2tfdGFzaykKKworICAgICAgICBzZWxmLmFzc2VydFRydWUocHJfMiAtIHByXzEgPT0gMSwgIlN0ZXAgYmV0d2VlbiBzYW1lIHBrZy4gcmV2aXNpb24gaXMgZ3JlYXRlciB0aGFuIDEiKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc3RhbXBfMSAhPSBzdGFtcF8yLCAiRGlmZmVyZW50IHBrZyByZXYuIGJ1dCBzYW1lIHN0YW1wOiAlcyIgJSBzdGFtcF8xKQorCisgICAgZGVmIHJ1bl90ZXN0X3ByX2V4cG9ydF9pbXBvcnQoc2VsZiwgcGFja2FnZV9uYW1lLCByZXBsYWNlX2N1cnJlbnRfZGI9VHJ1ZSk6CisgICAgICAgIHNlbGYuY29uZmlnX3ByX3Rlc3RzKHBhY2thZ2VfbmFtZSkKKworICAgICAgICBzZWxmLmluY3JlbWVudF9wYWNrYWdlX3ByKHBhY2thZ2VfbmFtZSkKKyAgICAgICAgcHJfMSA9IHNlbGYuZ2V0X3ByX3ZlcnNpb24ocGFja2FnZV9uYW1lKQorCisgICAgICAgIGV4cG9ydGVkX2RiX3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgJ2V4cG9ydC5pbmMnKQorICAgICAgICBleHBvcnRfcmVzdWx0ID0gcnVuQ21kKCJiaXRiYWtlLXByc2Vydi10b29sIGV4cG9ydCAlcyIgJSBleHBvcnRlZF9kYl9wYXRoLCBpZ25vcmVfc3RhdHVzPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwb3J0X3Jlc3VsdC5zdGF0dXMsIDAsIG1zZz0iUFIgU2VydmljZSBkYXRhYmFzZSBleHBvcnQgZmFpbGVkOiAlcyIgJSBleHBvcnRfcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGV4cG9ydGVkX2RiX3BhdGgpKQorCisgICAgICAgIGlmIHJlcGxhY2VfY3VycmVudF9kYjoKKyAgICAgICAgICAgIGN1cnJlbnRfZGJfcGF0aCA9IG9zLnBhdGguam9pbihnZXRfYmJfdmFyKCdQRVJTSVNURU5UX0RJUicpLCAncHJzZXJ2LnNxbGl0ZTMnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGN1cnJlbnRfZGJfcGF0aCksIG1zZz0iUGF0aCB0byBjdXJyZW50IFBSIFNlcnZpY2UgZGF0YWJhc2UgaXMgaW52YWxpZDogJXMiICUgY3VycmVudF9kYl9wYXRoKQorICAgICAgICAgICAgb3MucmVtb3ZlKGN1cnJlbnRfZGJfcGF0aCkKKworICAgICAgICBpbXBvcnRfcmVzdWx0ID0gcnVuQ21kKCJiaXRiYWtlLXByc2Vydi10b29sIGltcG9ydCAlcyIgJSBleHBvcnRlZF9kYl9wYXRoLCBpZ25vcmVfc3RhdHVzPVRydWUpCisgICAgICAgIG9zLnJlbW92ZShleHBvcnRlZF9kYl9wYXRoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGltcG9ydF9yZXN1bHQuc3RhdHVzLCAwLCBtc2c9IlBSIFNlcnZpY2UgZGF0YWJhc2UgaW1wb3J0IGZhaWxlZDogJXMiICUgaW1wb3J0X3Jlc3VsdC5vdXRwdXQpCisKKyAgICAgICAgc2VsZi5pbmNyZW1lbnRfcGFja2FnZV9wcihwYWNrYWdlX25hbWUpCisgICAgICAgIHByXzIgPSBzZWxmLmdldF9wcl92ZXJzaW9uKHBhY2thZ2VfbmFtZSkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUocHJfMiAtIHByXzEgPT0gMSwgIlN0ZXAgYmV0d2VlbiBzYW1lIHBrZy4gcmV2aXNpb24gaXMgZ3JlYXRlciB0aGFuIDEiKQorCisgICAgQE9FVGVzdElEKDkzMCkKKyAgICBkZWYgdGVzdF9pbXBvcnRfZXhwb3J0X3JlcGxhY2VfZGIoc2VsZik6CisgICAgICAgIHNlbGYucnVuX3Rlc3RfcHJfZXhwb3J0X2ltcG9ydCgnbTQnKQorCisgICAgQE9FVGVzdElEKDkzMSkKKyAgICBkZWYgdGVzdF9pbXBvcnRfZXhwb3J0X292ZXJyaWRlX2RiKHNlbGYpOgorICAgICAgICBzZWxmLnJ1bl90ZXN0X3ByX2V4cG9ydF9pbXBvcnQoJ200JywgcmVwbGFjZV9jdXJyZW50X2RiPUZhbHNlKQorCisgICAgQE9FVGVzdElEKDkzMikKKyAgICBkZWYgdGVzdF9wcl9zZXJ2aWNlX3JwbV9hcmNoX2RlcChzZWxmKToKKyAgICAgICAgc2VsZi5ydW5fdGVzdF9wcl9zZXJ2aWNlKCdtNCcsICdycG0nLCAnZG9fcGFja2FnZScpCisKKyAgICBAT0VUZXN0SUQoOTM0KQorICAgIGRlZiB0ZXN0X3ByX3NlcnZpY2VfZGViX2FyY2hfZGVwKHNlbGYpOgorICAgICAgICBzZWxmLnJ1bl90ZXN0X3ByX3NlcnZpY2UoJ200JywgJ2RlYicsICdkb19wYWNrYWdlJykKKworICAgIEBPRVRlc3RJRCg5MzMpCisgICAgZGVmIHRlc3RfcHJfc2VydmljZV9pcGtfYXJjaF9kZXAoc2VsZik6CisgICAgICAgIHNlbGYucnVuX3Rlc3RfcHJfc2VydmljZSgnbTQnLCAnaXBrJywgJ2RvX3BhY2thZ2UnKQorCisgICAgQE9FVGVzdElEKDkzNSkKKyAgICBkZWYgdGVzdF9wcl9zZXJ2aWNlX3JwbV9hcmNoX2luZGVwKHNlbGYpOgorICAgICAgICBzZWxmLnJ1bl90ZXN0X3ByX3NlcnZpY2UoJ3hjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUnLCAncnBtJywgJ2RvX3BhY2thZ2UnKQorCisgICAgQE9FVGVzdElEKDkzNykKKyAgICBkZWYgdGVzdF9wcl9zZXJ2aWNlX2RlYl9hcmNoX2luZGVwKHNlbGYpOgorICAgICAgICBzZWxmLnJ1bl90ZXN0X3ByX3NlcnZpY2UoJ3hjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUnLCAnZGViJywgJ2RvX3BhY2thZ2UnKQorCisgICAgQE9FVGVzdElEKDkzNikKKyAgICBkZWYgdGVzdF9wcl9zZXJ2aWNlX2lwa19hcmNoX2luZGVwKHNlbGYpOgorICAgICAgICBzZWxmLnJ1bl90ZXN0X3ByX3NlcnZpY2UoJ3hjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUnLCAnaXBrJywgJ2RvX3BhY2thZ2UnKQorCisgICAgQE9FVGVzdElEKDE0MTkpCisgICAgZGVmIHRlc3Rfc3RvcHBpbmdfcHJzZXJ2aWNlX21lc3NhZ2Uoc2VsZik6CisgICAgICAgIHBvcnQgPSBnZXRfZnJlZV9wb3J0KCkKKworICAgICAgICBydW5DbWQoJ2JpdGJha2UtcHJzZXJ2IC0taG9zdCBsb2NhbGhvc3QgLS1wb3J0ICVzIC0tbG9nbGV2ZWw9REVCVUcgLS1zdGFydCcgJSBwb3J0KQorICAgICAgICByZXQgPSBydW5DbWQoJ2JpdGJha2UtcHJzZXJ2IC0taG9zdCBsb2NhbGhvc3QgLS1wb3J0ICVzIC0tbG9nbGV2ZWw9REVCVUcgLS1zdG9wJyAlIHBvcnQpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXQuc3RhdHVzLCAwKQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9yZWNpcGV0b29sLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcmVjaXBldG9vbC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTRlYTk0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcmVjaXBldG9vbC5weQpAQCAtMCwwICsxLDY5OCBAQAoraW1wb3J0IG9zCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgdGVtcGZpbGUKK2ltcG9ydCB1cmxsaWIucGFyc2UKKworZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQsIGJpdGJha2UsIGdldF9iYl92YXIKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgZ2V0X2JiX3ZhcnMsIGNyZWF0ZV90ZW1wX2xheWVyCitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3Iub2VpZCBpbXBvcnQgT0VUZXN0SUQKK2Zyb20gb2VxYS5zZWxmdGVzdC5jYXNlcyBpbXBvcnQgZGV2dG9vbAorCit0ZW1wbGF5ZXJkaXIgPSBOb25lCisKK2RlZiBzZXRVcE1vZHVsZSgpOgorICAgIGdsb2JhbCB0ZW1wbGF5ZXJkaXIKKyAgICB0ZW1wbGF5ZXJkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0ncmVjaXBldG9vbHFhJykKKyAgICBjcmVhdGVfdGVtcF9sYXllcih0ZW1wbGF5ZXJkaXIsICdzZWxmdGVzdHJlY2lwZXRvb2wnKQorICAgIHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgYWRkLWxheWVyICVzJyAlIHRlbXBsYXllcmRpcikKKworCitkZWYgdGVhckRvd25Nb2R1bGUoKToKKyAgICBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAlcycgJSB0ZW1wbGF5ZXJkaXIsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKKyAgICBydW5DbWQoJ3JtIC1yZiAlcycgJSB0ZW1wbGF5ZXJkaXIpCisKKworY2xhc3MgUmVjaXBldG9vbEJhc2UoZGV2dG9vbC5EZXZ0b29sQmFzZSk6CisKKyAgICBkZWYgc2V0VXBMb2NhbChzZWxmKToKKyAgICAgICAgc3VwZXIoUmVjaXBldG9vbEJhc2UsIHNlbGYpLnNldFVwTG9jYWwoKQorICAgICAgICBzZWxmLnRlbXBsYXllcmRpciA9IHRlbXBsYXllcmRpcgorICAgICAgICBzZWxmLnRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0ncmVjaXBldG9vbHFhJykKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLnRlbXBkaXIpCisgICAgICAgIHNlbGYudGVzdGZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCAndGVzdGZpbGUnKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi50ZXN0ZmlsZSwgJ3cnKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSgnVGVzdCBmaWxlXG4nKQorCisgICAgZGVmIHRlYXJEb3duTG9jYWwoc2VsZik6CisgICAgICAgIHJ1bkNtZCgncm0gLXJmICVzL3JlY2lwZXMtKicgJSBzZWxmLnRlbXBsYXllcmRpcikKKyAgICAgICAgc3VwZXIoUmVjaXBldG9vbEJhc2UsIHNlbGYpLnRlYXJEb3duTG9jYWwoKQorCisgICAgZGVmIF90cnlfcmVjaXBldG9vbF9hcHBlbmRjbWQoc2VsZiwgY21kLCB0ZXN0cmVjaXBlLCBleHBlY3RlZGZpbGVzLCBleHBlY3RlZGxpbmVzPU5vbmUpOgorICAgICAgICByZXN1bHQgPSBydW5DbWQoY21kKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdUcmFjZWJhY2snLCByZXN1bHQub3V0cHV0KQorCisgICAgICAgICMgQ2hlY2sgdGhlIGJiYXBwZW5kIHdhcyBjcmVhdGVkIGFuZCBhcHBsaWVzIHByb3Blcmx5CisgICAgICAgIHJlY2lwZWZpbGUgPSBnZXRfYmJfdmFyKCdGSUxFJywgdGVzdHJlY2lwZSkKKyAgICAgICAgYmJhcHBlbmRmaWxlID0gc2VsZi5fY2hlY2tfYmJhcHBlbmQodGVzdHJlY2lwZSwgcmVjaXBlZmlsZSwgc2VsZi50ZW1wbGF5ZXJkaXIpCisKKyAgICAgICAgIyBDaGVjayB0aGUgYmJhcHBlbmQgY29udGVudHMKKyAgICAgICAgaWYgZXhwZWN0ZWRsaW5lcyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHdpdGggb3BlbihiYmFwcGVuZGZpbGUsICdyJykgYXMgZjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkbGluZXMsIGYucmVhZGxpbmVzKCksICJFeHBlY3RlZCBsaW5lcyBhcmUgbm90IHByZXNlbnQgaW4gJXMiICUgYmJhcHBlbmRmaWxlKQorCisgICAgICAgICMgQ2hlY2sgZmlsZSB3YXMgY29waWVkCisgICAgICAgIGZpbGVzZGlyID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShiYmFwcGVuZGZpbGUpLCB0ZXN0cmVjaXBlKQorICAgICAgICBmb3IgZXhwZWN0ZWRmaWxlIGluIGV4cGVjdGVkZmlsZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKGZpbGVzZGlyLCBleHBlY3RlZGZpbGUpKSwgJ0V4cGVjdGVkIGZpbGUgJXMgdG8gYmUgY29waWVkIG5leHQgdG8gYmJhcHBlbmQsIGJ1dCBpdCB3YXNuXCd0JyAlIGV4cGVjdGVkZmlsZSkKKworICAgICAgICAjIENoZWNrIG5vIG90aGVyIGZpbGVzIGNyZWF0ZWQKKyAgICAgICAgY3JlYXRlZGZpbGVzID0gW10KKyAgICAgICAgZm9yIHJvb3QsIF8sIGZpbGVzIGluIG9zLndhbGsoZmlsZXNkaXIpOgorICAgICAgICAgICAgZm9yIGYgaW4gZmlsZXM6CisgICAgICAgICAgICAgICAgY3JlYXRlZGZpbGVzLmFwcGVuZChvcy5wYXRoLnJlbHBhdGgob3MucGF0aC5qb2luKHJvb3QsIGYpLCBmaWxlc2RpcikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzb3J0ZWQoY3JlYXRlZGZpbGVzKSwgc29ydGVkKGV4cGVjdGVkZmlsZXMpKQorCisgICAgICAgIHJldHVybiBiYmFwcGVuZGZpbGUsIHJlc3VsdC5vdXRwdXQKKworCitjbGFzcyBSZWNpcGV0b29sVGVzdHMoUmVjaXBldG9vbEJhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgc3VwZXIoUmVjaXBldG9vbFRlc3RzLCBjbHMpLnNldFVwQ2xhc3MoKQorICAgICAgICAjIEVuc3VyZSB3ZSBoYXZlIHRoZSByaWdodCBkYXRhIGluIHNobGlicy9wa2dkYXRhCisgICAgICAgIGNscy5sb2dnZXIuaW5mbygnUnVubmluZyBiaXRiYWtlIHRvIGdlbmVyYXRlIHBrZ2RhdGEnKQorICAgICAgICBiaXRiYWtlKCctYyBwYWNrYWdlZGF0YSBiYXNlLWZpbGVzIGNvcmV1dGlscyBidXN5Ym94IHNlbGZ0ZXN0LXJlY2lwZXRvb2wtYXBwZW5kZmlsZScpCisgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ0NPUkVCQVNFJywgJ0JCUEFUSCddKQorICAgICAgICBjbHMuY29yZWJhc2UgPSBiYl92YXJzWydDT1JFQkFTRSddCisgICAgICAgIGNscy5iYnBhdGggPSBiYl92YXJzWydCQlBBVEgnXQorCisgICAgZGVmIF90cnlfcmVjaXBldG9vbF9hcHBlbmRmaWxlKHNlbGYsIHRlc3RyZWNpcGUsIGRlc3RmaWxlLCBuZXdmaWxlLCBvcHRpb25zLCBleHBlY3RlZGxpbmVzLCBleHBlY3RlZGZpbGVzKToKKyAgICAgICAgY21kID0gJ3JlY2lwZXRvb2wgYXBwZW5kZmlsZSAlcyAlcyAlcyAlcycgJSAoc2VsZi50ZW1wbGF5ZXJkaXIsIGRlc3RmaWxlLCBuZXdmaWxlLCBvcHRpb25zKQorICAgICAgICByZXR1cm4gc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kY21kKGNtZCwgdGVzdHJlY2lwZSwgZXhwZWN0ZWRmaWxlcywgZXhwZWN0ZWRsaW5lcykKKworICAgIGRlZiBfdHJ5X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV9mYWlsKHNlbGYsIGRlc3RmaWxlLCBuZXdmaWxlLCBjaGVja2Vycm9yKToKKyAgICAgICAgY21kID0gJ3JlY2lwZXRvb2wgYXBwZW5kZmlsZSAlcyAlcyAlcycgJSAoc2VsZi50ZW1wbGF5ZXJkaXIsIGRlc3RmaWxlLCBuZXdmaWxlKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoY21kLCBpZ25vcmVfc3RhdHVzPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmVzdWx0LnN0YXR1cywgMCwgJ0NvbW1hbmQgIiVzIiBzaG91bGQgaGF2ZSBmYWlsZWQgYnV0IGRpZG5cJ3QnICUgY21kKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdUcmFjZWJhY2snLCByZXN1bHQub3V0cHV0KQorICAgICAgICBmb3IgZXJyb3JzdHIgaW4gY2hlY2tlcnJvcjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZXJyb3JzdHIsIHJlc3VsdC5vdXRwdXQpCisKKyAgICBAT0VUZXN0SUQoMTE3NykKKyAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZGZpbGVfYmFzaWMoc2VsZik6CisgICAgICAgICMgQmFzaWMgdGVzdAorICAgICAgICBleHBlY3RlZGxpbmVzID0gWydGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJ10KKyAgICAgICAgXywgb3V0cHV0ID0gc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kZmlsZSgnYmFzZS1maWxlcycsICcvZXRjL21vdGQnLCBzZWxmLnRlc3RmaWxlLCAnJywgZXhwZWN0ZWRsaW5lcywgWydtb3RkJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ1dBUk5JTkc6ICcsIG91dHB1dCkKKworICAgIEBPRVRlc3RJRCgxMTgzKQorICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV9pbnZhbGlkKHNlbGYpOgorICAgICAgICAjIFRlc3Qgc29tZSBjb21tYW5kcyB0aGF0IHNob3VsZCBlcnJvcgorICAgICAgICBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRmaWxlX2ZhaWwoJy9ldGMvcGFzc3dkJywgc2VsZi50ZXN0ZmlsZSwgWydFUlJPUjogL2V0Yy9wYXNzd2QgY2Fubm90IGJlIGhhbmRsZWQgYnkgdGhpcyB0b29sJywgJ3VzZXJhZGQnLCAnZXh0cmF1c2VycyddKQorICAgICAgICBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRmaWxlX2ZhaWwoJy9ldGMvdGltZXN0YW1wJywgc2VsZi50ZXN0ZmlsZSwgWydFUlJPUjogL2V0Yy90aW1lc3RhbXAgY2Fubm90IGJlIGhhbmRsZWQgYnkgdGhpcyB0b29sJ10pCisgICAgICAgIHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGVfZmFpbCgnL2Rldi9jb25zb2xlJywgc2VsZi50ZXN0ZmlsZSwgWydFUlJPUjogL2Rldi9jb25zb2xlIGNhbm5vdCBiZSBoYW5kbGVkIGJ5IHRoaXMgdG9vbCddKQorCisgICAgQE9FVGVzdElEKDExNzYpCisgICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRmaWxlX2FsdGVybmF0aXZlcyhzZWxmKToKKyAgICAgICAgIyBOb3cgdHJ5IHdpdGggYSBmaWxlIHdlIGtub3cgc2hvdWxkIGJlIGFuIGFsdGVybmF0aXZlCisgICAgICAgICMgKHRoaXMgaXMgdmVyeSBtdWNoIGEgZmFrZSBleGFtcGxlLCBidXQgb25lIHdlIGtub3cgaXMgcmVsaWFibHkgYW4gYWx0ZXJuYXRpdmUpCisgICAgICAgIHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGVfZmFpbCgnL2Jpbi9scycsIHNlbGYudGVzdGZpbGUsIFsnRVJST1I6IEZpbGUgL2Jpbi9scyBpcyBhbiBhbHRlcm5hdGl2ZSBwb3NzaWJseSBwcm92aWRlZCBieSB0aGUgZm9sbG93aW5nIHJlY2lwZXM6JywgJ2NvcmV1dGlscycsICdidXN5Ym94J10pCisgICAgICAgICMgTmVlZCBhIHRlc3QgZmlsZSAtIHNob3VsZCBiZSBleGVjdXRhYmxlCisgICAgICAgIHRlc3RmaWxlMiA9IG9zLnBhdGguam9pbihzZWxmLmNvcmViYXNlLCAnb2UtaW5pdC1idWlsZC1lbnYnKQorICAgICAgICB0ZXN0ZmlsZTJuYW1lID0gb3MucGF0aC5iYXNlbmFtZSh0ZXN0ZmlsZTIpCisgICAgICAgIGV4cGVjdGVkbGluZXMgPSBbJ0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiJcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnU1JDX1VSSSArPSAiZmlsZTovLyVzIlxuJyAlIHRlc3RmaWxlMm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZG9faW5zdGFsbF9hcHBlbmQoKSB7XG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn1cbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS8lcyAke0R9JHtiYXNlX2JpbmRpcn0vbHNcbicgJSB0ZXN0ZmlsZTJuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICd9XG4nXQorICAgICAgICBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRmaWxlKCdjb3JldXRpbHMnLCAnL2Jpbi9scycsIHRlc3RmaWxlMiwgJy1yIGNvcmV1dGlscycsIGV4cGVjdGVkbGluZXMsIFt0ZXN0ZmlsZTJuYW1lXSkKKyAgICAgICAgIyBOb3cgdHJ5IGJiYXBwZW5kaW5nIHRoZSBzYW1lIGZpbGUgYWdhaW4sIGNvbnRlbnRzIHNob3VsZCBub3QgY2hhbmdlCisgICAgICAgIGJiYXBwZW5kZmlsZSwgXyA9IHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGUoJ2NvcmV1dGlscycsICcvYmluL2xzJywgc2VsZi50ZXN0ZmlsZSwgJy1yIGNvcmV1dGlscycsIGV4cGVjdGVkbGluZXMsIFt0ZXN0ZmlsZTJuYW1lXSkKKyAgICAgICAgIyBCdXQgZmlsZSBzaG91bGQgaGF2ZQorICAgICAgICBjb3BpZWRmaWxlID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShiYmFwcGVuZGZpbGUpLCAnY29yZXV0aWxzJywgdGVzdGZpbGUybmFtZSkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkaWZmIC1xICVzICVzJyAlICh0ZXN0ZmlsZTIsIGNvcGllZGZpbGUpLCBpZ25vcmVfc3RhdHVzPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmVzdWx0LnN0YXR1cywgMCwgJ05ldyBmaWxlIHNob3VsZCBoYXZlIGJlZW4gY29waWVkIGJ1dCB3YXMgbm90ICVzJyAlIHJlc3VsdC5vdXRwdXQpCisKKyAgICBAT0VUZXN0SUQoMTE3OCkKKyAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZGZpbGVfYmluYXJ5KHNlbGYpOgorICAgICAgICAjIFRyeSBhcHBlbmRpbmcgYSBiaW5hcnkgZmlsZQorICAgICAgICAjIC9iaW4vbHMgY2FuIGJlIGEgc3ltbGluayB0byAvdXNyL2Jpbi9scworICAgICAgICBscyA9IG9zLnBhdGgucmVhbHBhdGgoIi9iaW4vbHMiKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ3JlY2lwZXRvb2wgYXBwZW5kZmlsZSAlcyAvYmluL2xzICVzIC1yIGNvcmV1dGlscycgJSAoc2VsZi50ZW1wbGF5ZXJkaXIsIGxzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignV0FSTklORzogJywgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignaXMgYSBiaW5hcnknLCByZXN1bHQub3V0cHV0KQorCisgICAgQE9FVGVzdElEKDExNzMpCisgICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRmaWxlX2FkZChzZWxmKToKKyAgICAgICAgIyBUcnkgYXJiaXRyYXJ5IGZpbGUgYWRkIHRvIGEgcmVjaXBlCisgICAgICAgIGV4cGVjdGVkbGluZXMgPSBbJ0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiJcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnU1JDX1VSSSArPSAiZmlsZTovL3Rlc3RmaWxlIlxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdkb19pbnN0YWxsX2FwcGVuZCgpIHtcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9XG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vdGVzdGZpbGUgJHtEfSR7ZGF0YWRpcn0vc29tZXRoaW5nXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICd9XG4nXQorICAgICAgICBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRmaWxlKCduZXRiYXNlJywgJy91c3Ivc2hhcmUvc29tZXRoaW5nJywgc2VsZi50ZXN0ZmlsZSwgJy1yIG5ldGJhc2UnLCBleHBlY3RlZGxpbmVzLCBbJ3Rlc3RmaWxlJ10pCisgICAgICAgICMgVHJ5IGFkZGluZyBhbm90aGVyIGZpbGUsIHRoaXMgdGltZSB3aGVyZSB0aGUgc291cmNlIGZpbGUgaXMgZXhlY3V0YWJsZQorICAgICAgICAjIChzbyB3ZSdyZSB0ZXN0aW5nIHRoYXQsIHBsdXMgbW9kaWZ5aW5nIGFuIGV4aXN0aW5nIGJiYXBwZW5kKQorICAgICAgICB0ZXN0ZmlsZTIgPSBvcy5wYXRoLmpvaW4oc2VsZi5jb3JlYmFzZSwgJ29lLWluaXQtYnVpbGQtZW52JykKKyAgICAgICAgdGVzdGZpbGUybmFtZSA9IG9zLnBhdGguYmFzZW5hbWUodGVzdGZpbGUyKQorICAgICAgICBleHBlY3RlZGxpbmVzID0gWydGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1NSQ19VUkkgKz0gImZpbGU6Ly90ZXN0ZmlsZSBcXFxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgZmlsZTovLyVzIFxcXG4nICUgdGVzdGZpbGUybmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgIlxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdkb19pbnN0YWxsX2FwcGVuZCgpIHtcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9XG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vdGVzdGZpbGUgJHtEfSR7ZGF0YWRpcn0vc29tZXRoaW5nXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vJXMgJHtEfSR7ZGF0YWRpcn0vc2NyaXB0bmFtZVxuJyAlIHRlc3RmaWxlMm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ31cbiddCisgICAgICAgIHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGUoJ25ldGJhc2UnLCAnL3Vzci9zaGFyZS9zY3JpcHRuYW1lJywgdGVzdGZpbGUyLCAnLXIgbmV0YmFzZScsIGV4cGVjdGVkbGluZXMsIFsndGVzdGZpbGUnLCB0ZXN0ZmlsZTJuYW1lXSkKKworICAgIEBPRVRlc3RJRCgxMTc0KQorICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV9hZGRfYmluZGlyKHNlbGYpOgorICAgICAgICAjIFRyeSBhcmJpdHJhcnkgZmlsZSBhZGQgdG8gYSByZWNpcGUsIHRoaXMgdGltZSB0byBhIGxvY2F0aW9uIHN1Y2ggdGhhdCBzaG91bGQgYmUgaW5zdGFsbGVkIGFzIGV4ZWN1dGFibGUKKyAgICAgICAgZXhwZWN0ZWRsaW5lcyA9IFsnRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IlxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdTUkNfVVJJICs9ICJmaWxlOi8vdGVzdGZpbGUiXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2RvX2luc3RhbGxfYXBwZW5kKCkge1xuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfVxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L3Rlc3RmaWxlICR7RH0ke2JpbmRpcn0vc2VsZnRlc3QtcmVjaXBldG9vbC10ZXN0YmluXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICd9XG4nXQorICAgICAgICBfLCBvdXRwdXQgPSBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRmaWxlKCduZXRiYXNlJywgJy91c3IvYmluL3NlbGZ0ZXN0LXJlY2lwZXRvb2wtdGVzdGJpbicsIHNlbGYudGVzdGZpbGUsICctciBuZXRiYXNlJywgZXhwZWN0ZWRsaW5lcywgWyd0ZXN0ZmlsZSddKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdXQVJOSU5HOiAnLCBvdXRwdXQpCisKKyAgICBAT0VUZXN0SUQoMTE3NSkKKyAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZGZpbGVfYWRkX21hY2hpbmUoc2VsZik6CisgICAgICAgICMgVHJ5IGFyYml0cmFyeSBmaWxlIGFkZCB0byBhIHJlY2lwZSwgdGhpcyB0aW1lIHRvIGEgbG9jYXRpb24gc3VjaCB0aGF0IHNob3VsZCBiZSBpbnN0YWxsZWQgYXMgZXhlY3V0YWJsZQorICAgICAgICBleHBlY3RlZGxpbmVzID0gWydGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1BBQ0tBR0VfQVJDSCA9ICIke01BQ0hJTkVfQVJDSH0iXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1NSQ19VUklfYXBwZW5kX215bWFjaGluZSA9ICIgZmlsZTovL3Rlc3RmaWxlIlxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdkb19pbnN0YWxsX2FwcGVuZF9teW1hY2hpbmUoKSB7XG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfVxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3Rlc3RmaWxlICR7RH0ke2RhdGFkaXJ9L3NvbWV0aGluZ1xuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnfVxuJ10KKyAgICAgICAgXywgb3V0cHV0ID0gc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kZmlsZSgnbmV0YmFzZScsICcvdXNyL3NoYXJlL3NvbWV0aGluZycsIHNlbGYudGVzdGZpbGUsICctciBuZXRiYXNlIC1tIG15bWFjaGluZScsIGV4cGVjdGVkbGluZXMsIFsnbXltYWNoaW5lL3Rlc3RmaWxlJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ1dBUk5JTkc6ICcsIG91dHB1dCkKKworICAgIEBPRVRlc3RJRCgxMTg0KQorICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV9vcmlnKHNlbGYpOgorICAgICAgICAjIEEgZmlsZSB0aGF0J3MgaW4gU1JDX1VSSSBhbmQgaW4gZG9faW5zdGFsbCB3aXRoIHRoZSBzYW1lIG5hbWUKKyAgICAgICAgZXhwZWN0ZWRsaW5lcyA9IFsnRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IlxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nXQorICAgICAgICBfLCBvdXRwdXQgPSBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRmaWxlKCdzZWxmdGVzdC1yZWNpcGV0b29sLWFwcGVuZGZpbGUnLCAnL3Vzci9zaGFyZS9zZWxmdGVzdC1yZXBsYWNlbWUtb3JpZycsIHNlbGYudGVzdGZpbGUsICcnLCBleHBlY3RlZGxpbmVzLCBbJ3NlbGZ0ZXN0LXJlcGxhY2VtZS1vcmlnJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ1dBUk5JTkc6ICcsIG91dHB1dCkKKworICAgIEBPRVRlc3RJRCgxMTkxKQorICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV90b2RpcihzZWxmKToKKyAgICAgICAgIyBBIGZpbGUgdGhhdCdzIGluIFNSQ19VUkkgYW5kIGluIGRvX2luc3RhbGwgd2l0aCBkZXN0aW5hdGlvbiBkaXJlY3RvcnkgcmF0aGVyIHRoYW4gZmlsZQorICAgICAgICBleHBlY3RlZGxpbmVzID0gWydGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdcbiddCisgICAgICAgIF8sIG91dHB1dCA9IHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGUoJ3NlbGZ0ZXN0LXJlY2lwZXRvb2wtYXBwZW5kZmlsZScsICcvdXNyL3NoYXJlL3NlbGZ0ZXN0LXJlcGxhY2VtZS10b2RpcicsIHNlbGYudGVzdGZpbGUsICcnLCBleHBlY3RlZGxpbmVzLCBbJ3NlbGZ0ZXN0LXJlcGxhY2VtZS10b2RpciddKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdXQVJOSU5HOiAnLCBvdXRwdXQpCisKKyAgICBAT0VUZXN0SUQoMTE4NykKKyAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZGZpbGVfcmVuYW1lZChzZWxmKToKKyAgICAgICAgIyBBIGZpbGUgdGhhdCdzIGluIFNSQ19VUkkgd2l0aCBhIGRpZmZlcmVudCBuYW1lIHRvIHRoZSBkZXN0aW5hdGlvbiBmaWxlCisgICAgICAgIGV4cGVjdGVkbGluZXMgPSBbJ0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiJcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJ10KKyAgICAgICAgXywgb3V0cHV0ID0gc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kZmlsZSgnc2VsZnRlc3QtcmVjaXBldG9vbC1hcHBlbmRmaWxlJywgJy91c3Ivc2hhcmUvc2VsZnRlc3QtcmVwbGFjZW1lLXJlbmFtZWQnLCBzZWxmLnRlc3RmaWxlLCAnJywgZXhwZWN0ZWRsaW5lcywgWydmaWxlMSddKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdXQVJOSU5HOiAnLCBvdXRwdXQpCisKKyAgICBAT0VUZXN0SUQoMTE5MCkKKyAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZGZpbGVfc3ViZGlyKHNlbGYpOgorICAgICAgICAjIEEgZmlsZSB0aGF0J3MgaW4gU1JDX1VSSSBpbiBhIHN1YmRpcgorICAgICAgICBleHBlY3RlZGxpbmVzID0gWydGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1NSQ19VUkkgKz0gImZpbGU6Ly90ZXN0ZmlsZSJcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZG9faW5zdGFsbF9hcHBlbmQoKSB7XG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfVxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3Rlc3RmaWxlICR7RH0ke2RhdGFkaXJ9L3NlbGZ0ZXN0LXJlcGxhY2VtZS1zdWJkaXJcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ31cbiddCisgICAgICAgIF8sIG91dHB1dCA9IHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGUoJ3NlbGZ0ZXN0LXJlY2lwZXRvb2wtYXBwZW5kZmlsZScsICcvdXNyL3NoYXJlL3NlbGZ0ZXN0LXJlcGxhY2VtZS1zdWJkaXInLCBzZWxmLnRlc3RmaWxlLCAnJywgZXhwZWN0ZWRsaW5lcywgWyd0ZXN0ZmlsZSddKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdXQVJOSU5HOiAnLCBvdXRwdXQpCisKKyAgICBAT0VUZXN0SUQoMTE4OSkKKyAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZGZpbGVfc3JjX2dsb2Ioc2VsZik6CisgICAgICAgICMgQSBmaWxlIHRoYXQncyBpbiBTUkNfVVJJIGFzIGEgZ2xvYgorICAgICAgICBleHBlY3RlZGxpbmVzID0gWydGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1NSQ19VUkkgKz0gImZpbGU6Ly90ZXN0ZmlsZSJcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZG9faW5zdGFsbF9hcHBlbmQoKSB7XG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfVxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3Rlc3RmaWxlICR7RH0ke2RhdGFkaXJ9L3NlbGZ0ZXN0LXJlcGxhY2VtZS1zcmMtZ2xvYmZpbGVcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ31cbiddCisgICAgICAgIF8sIG91dHB1dCA9IHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGUoJ3NlbGZ0ZXN0LXJlY2lwZXRvb2wtYXBwZW5kZmlsZScsICcvdXNyL3NoYXJlL3NlbGZ0ZXN0LXJlcGxhY2VtZS1zcmMtZ2xvYmZpbGUnLCBzZWxmLnRlc3RmaWxlLCAnJywgZXhwZWN0ZWRsaW5lcywgWyd0ZXN0ZmlsZSddKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdXQVJOSU5HOiAnLCBvdXRwdXQpCisKKyAgICBAT0VUZXN0SUQoMTE4MSkKKyAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZGZpbGVfaW5zdF9nbG9iKHNlbGYpOgorICAgICAgICAjIEEgZmlsZSB0aGF0J3MgaW4gZG9faW5zdGFsbCBhcyBhIGdsb2IKKyAgICAgICAgZXhwZWN0ZWRsaW5lcyA9IFsnRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IlxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nXQorICAgICAgICBfLCBvdXRwdXQgPSBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRmaWxlKCdzZWxmdGVzdC1yZWNpcGV0b29sLWFwcGVuZGZpbGUnLCAnL3Vzci9zaGFyZS9zZWxmdGVzdC1yZXBsYWNlbWUtaW5zdC1nbG9iZmlsZScsIHNlbGYudGVzdGZpbGUsICcnLCBleHBlY3RlZGxpbmVzLCBbJ3NlbGZ0ZXN0LXJlcGxhY2VtZS1pbnN0LWdsb2JmaWxlJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ1dBUk5JTkc6ICcsIG91dHB1dCkKKworICAgIEBPRVRlc3RJRCgxMTgyKQorICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV9pbnN0X3RvZGlyX2dsb2Ioc2VsZik6CisgICAgICAgICMgQSBmaWxlIHRoYXQncyBpbiBkb19pbnN0YWxsIGFzIGEgZ2xvYiB3aXRoIGRlc3RpbmF0aW9uIGFzIGEgZGlyZWN0b3J5CisgICAgICAgIGV4cGVjdGVkbGluZXMgPSBbJ0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiJcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJ10KKyAgICAgICAgXywgb3V0cHV0ID0gc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kZmlsZSgnc2VsZnRlc3QtcmVjaXBldG9vbC1hcHBlbmRmaWxlJywgJy91c3Ivc2hhcmUvc2VsZnRlc3QtcmVwbGFjZW1lLWluc3QtdG9kaXItZ2xvYmZpbGUnLCBzZWxmLnRlc3RmaWxlLCAnJywgZXhwZWN0ZWRsaW5lcywgWydzZWxmdGVzdC1yZXBsYWNlbWUtaW5zdC10b2Rpci1nbG9iZmlsZSddKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdXQVJOSU5HOiAnLCBvdXRwdXQpCisKKyAgICBAT0VUZXN0SUQoMTE4NSkKKyAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZGZpbGVfcGF0Y2goc2VsZik6CisgICAgICAgICMgQSBmaWxlIHRoYXQncyBhZGRlZCBieSBhIHBhdGNoIGluIFNSQ19VUkkKKyAgICAgICAgZXhwZWN0ZWRsaW5lcyA9IFsnRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IlxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdTUkNfVVJJICs9ICJmaWxlOi8vdGVzdGZpbGUiXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2RvX2luc3RhbGxfYXBwZW5kKCkge1xuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn1cbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS90ZXN0ZmlsZSAke0R9JHtzeXNjb25mZGlyfS9zZWxmdGVzdC1yZXBsYWNlbWUtcGF0Y2hlZFxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnfVxuJ10KKyAgICAgICAgXywgb3V0cHV0ID0gc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kZmlsZSgnc2VsZnRlc3QtcmVjaXBldG9vbC1hcHBlbmRmaWxlJywgJy9ldGMvc2VsZnRlc3QtcmVwbGFjZW1lLXBhdGNoZWQnLCBzZWxmLnRlc3RmaWxlLCAnJywgZXhwZWN0ZWRsaW5lcywgWyd0ZXN0ZmlsZSddKQorICAgICAgICBmb3IgbGluZSBpbiBvdXRwdXQuc3BsaXRsaW5lcygpOgorICAgICAgICAgICAgaWYgJ1dBUk5JTkc6ICcgaW4gbGluZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdhZGQtZmlsZS5wYXRjaCcsIGxpbmUsICdVbmV4cGVjdGVkIHdhcm5pbmcgZm91bmQgaW4gb3V0cHV0OlxuJXMnICUgbGluZSkKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdQYXRjaCB3YXJuaW5nIG5vdCBmb3VuZCBpbiBvdXRwdXQ6XG4lcycgJSBvdXRwdXQpCisKKyAgICBAT0VUZXN0SUQoMTE4OCkKKyAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZGZpbGVfc2NyaXB0KHNlbGYpOgorICAgICAgICAjIE5vdywgYSBmaWxlIHRoYXQncyBpbiBTUkNfVVJJIGJ1dCBpbnN0YWxsZWQgYnkgYSBzY3JpcHQgKHNvIG5vIG1lbnRpb24gaW4gZG9faW5zdGFsbCkKKyAgICAgICAgZXhwZWN0ZWRsaW5lcyA9IFsnRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IlxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdTUkNfVVJJICs9ICJmaWxlOi8vdGVzdGZpbGUiXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2RvX2luc3RhbGxfYXBwZW5kKCkge1xuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn1cbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS90ZXN0ZmlsZSAke0R9JHtkYXRhZGlyfS9zZWxmdGVzdC1yZXBsYWNlbWUtc2NyaXB0ZWRcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ31cbiddCisgICAgICAgIF8sIG91dHB1dCA9IHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGUoJ3NlbGZ0ZXN0LXJlY2lwZXRvb2wtYXBwZW5kZmlsZScsICcvdXNyL3NoYXJlL3NlbGZ0ZXN0LXJlcGxhY2VtZS1zY3JpcHRlZCcsIHNlbGYudGVzdGZpbGUsICcnLCBleHBlY3RlZGxpbmVzLCBbJ3Rlc3RmaWxlJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ1dBUk5JTkc6ICcsIG91dHB1dCkKKworICAgIEBPRVRlc3RJRCgxMTgwKQorICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV9pbnN0X2Z1bmMoc2VsZik6CisgICAgICAgICMgQSBmaWxlIHRoYXQncyBpbnN0YWxsZWQgZnJvbSBhIGZ1bmN0aW9uIGNhbGxlZCBieSBkb19pbnN0YWxsCisgICAgICAgIGV4cGVjdGVkbGluZXMgPSBbJ0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiJcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJ10KKyAgICAgICAgXywgb3V0cHV0ID0gc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kZmlsZSgnc2VsZnRlc3QtcmVjaXBldG9vbC1hcHBlbmRmaWxlJywgJy91c3Ivc2hhcmUvc2VsZnRlc3QtcmVwbGFjZW1lLWluc3QtZnVuYycsIHNlbGYudGVzdGZpbGUsICcnLCBleHBlY3RlZGxpbmVzLCBbJ3NlbGZ0ZXN0LXJlcGxhY2VtZS1pbnN0LWZ1bmMnXSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignV0FSTklORzogJywgb3V0cHV0KQorCisgICAgQE9FVGVzdElEKDExODYpCisgICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRmaWxlX3Bvc3RpbnN0YWxsKHNlbGYpOgorICAgICAgICAjIEEgZmlsZSB0aGF0J3MgY3JlYXRlZCBieSBhIHBvc3RpbnN0YWxsIHNjcmlwdCAoYW5kIGV4cGxpY2l0bHkgbWVudGlvbmVkIGluIGl0KQorICAgICAgICAjIEZpcnN0IHRyeSB3aXRob3V0IHNwZWNpZnlpbmcgcmVjaXBlCisgICAgICAgIHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGVfZmFpbCgnL3Vzci9zaGFyZS9zZWxmdGVzdC1yZXBsYWNlbWUtcG9zdGluc3QnLCBzZWxmLnRlc3RmaWxlLCBbJ0ZpbGUgL3Vzci9zaGFyZS9zZWxmdGVzdC1yZXBsYWNlbWUtcG9zdGluc3QgbWF5IGJlIHdyaXR0ZW4gb3V0IGluIGEgcHJlL3Bvc3RpbnN0YWxsIHNjcmlwdCBvZiB0aGUgZm9sbG93aW5nIHJlY2lwZXM6JywgJ3NlbGZ0ZXN0LXJlY2lwZXRvb2wtYXBwZW5kZmlsZSddKQorICAgICAgICAjIE5vdyBzcGVjaWZ5IHJlY2lwZQorICAgICAgICBleHBlY3RlZGxpbmVzID0gWydGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1NSQ19VUkkgKz0gImZpbGU6Ly90ZXN0ZmlsZSJcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZG9faW5zdGFsbF9hcHBlbmQoKSB7XG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfVxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3Rlc3RmaWxlICR7RH0ke2RhdGFkaXJ9L3NlbGZ0ZXN0LXJlcGxhY2VtZS1wb3N0aW5zdFxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnfVxuJ10KKyAgICAgICAgXywgb3V0cHV0ID0gc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kZmlsZSgnc2VsZnRlc3QtcmVjaXBldG9vbC1hcHBlbmRmaWxlJywgJy91c3Ivc2hhcmUvc2VsZnRlc3QtcmVwbGFjZW1lLXBvc3RpbnN0Jywgc2VsZi50ZXN0ZmlsZSwgJy1yIHNlbGZ0ZXN0LXJlY2lwZXRvb2wtYXBwZW5kZmlsZScsIGV4cGVjdGVkbGluZXMsIFsndGVzdGZpbGUnXSkKKworICAgIEBPRVRlc3RJRCgxMTc5KQorICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV9leHRsYXllcihzZWxmKToKKyAgICAgICAgIyBUcnkgY3JlYXRpbmcgYSBiYmFwcGVuZCBpbiBhIGxheWVyIHRoYXQncyBub3QgaW4gYmJsYXllcnMuY29uZiBhbmQgaGFzIGEgZGlmZmVyZW50IHN0cnVjdHVyZQorICAgICAgICBleHR0ZW1wbGF5ZXJkaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCAnZXh0bGF5ZXInKQorICAgICAgICBzZWxmLl9jcmVhdGVfdGVtcF9sYXllcihleHR0ZW1wbGF5ZXJkaXIsIEZhbHNlLCAnb2VzZWxmdGVzdGV4dGxheWVyJywgcmVjaXBlcGF0aHNwZWM9J21ldGFkYXRhL3JlY2lwZXMvcmVjaXBlcy0qLyonKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ3JlY2lwZXRvb2wgYXBwZW5kZmlsZSAlcyAvdXNyL3NoYXJlL3NlbGZ0ZXN0LXJlcGxhY2VtZS1vcmlnICVzJyAlIChleHR0ZW1wbGF5ZXJkaXIsIHNlbGYudGVzdGZpbGUpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdUcmFjZWJhY2snLCByZXN1bHQub3V0cHV0KQorICAgICAgICBjcmVhdGVkZmlsZXMgPSBbXQorICAgICAgICBmb3Igcm9vdCwgXywgZmlsZXMgaW4gb3Mud2FsayhleHR0ZW1wbGF5ZXJkaXIpOgorICAgICAgICAgICAgZm9yIGYgaW4gZmlsZXM6CisgICAgICAgICAgICAgICAgY3JlYXRlZGZpbGVzLmFwcGVuZChvcy5wYXRoLnJlbHBhdGgob3MucGF0aC5qb2luKHJvb3QsIGYpLCBleHR0ZW1wbGF5ZXJkaXIpKQorICAgICAgICBjcmVhdGVkZmlsZXMucmVtb3ZlKCdjb25mL2xheWVyLmNvbmYnKQorICAgICAgICBleHBlY3RlZGZpbGVzID0gWydtZXRhZGF0YS9yZWNpcGVzL3JlY2lwZXMtdGVzdC9zZWxmdGVzdC1yZWNpcGV0b29sLWFwcGVuZGZpbGUvc2VsZnRlc3QtcmVjaXBldG9vbC1hcHBlbmRmaWxlLmJiYXBwZW5kJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbWV0YWRhdGEvcmVjaXBlcy9yZWNpcGVzLXRlc3Qvc2VsZnRlc3QtcmVjaXBldG9vbC1hcHBlbmRmaWxlL3NlbGZ0ZXN0LXJlY2lwZXRvb2wtYXBwZW5kZmlsZS9zZWxmdGVzdC1yZXBsYWNlbWUtb3JpZyddCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKGNyZWF0ZWRmaWxlcyksIHNvcnRlZChleHBlY3RlZGZpbGVzKSkKKworICAgIEBPRVRlc3RJRCgxMTkyKQorICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV93aWxkY2FyZChzZWxmKToKKworICAgICAgICBkZWYgdHJ5X2FwcGVuZGZpbGVfd2Mob3B0aW9ucyk6CisgICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoJ3JlY2lwZXRvb2wgYXBwZW5kZmlsZSAlcyAvZXRjL3Byb2ZpbGUgJXMgJXMnICUgKHNlbGYudGVtcGxheWVyZGlyLCBzZWxmLnRlc3RmaWxlLCBvcHRpb25zKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ1RyYWNlYmFjaycsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgICAgICBiYmFwcGVuZGZpbGUgPSBOb25lCisgICAgICAgICAgICBmb3Igcm9vdCwgXywgZmlsZXMgaW4gb3Mud2FsayhzZWxmLnRlbXBsYXllcmRpcik6CisgICAgICAgICAgICAgICAgZm9yIGYgaW4gZmlsZXM6CisgICAgICAgICAgICAgICAgICAgIGlmIGYuZW5kc3dpdGgoJy5iYmFwcGVuZCcpOgorICAgICAgICAgICAgICAgICAgICAgICAgYmJhcHBlbmRmaWxlID0gZgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGlmIG5vdCBiYmFwcGVuZGZpbGU6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdObyBiYmFwcGVuZCBmaWxlIGNyZWF0ZWQnKQorICAgICAgICAgICAgcnVuQ21kKCdybSAtcmYgJXMvcmVjaXBlcy0qJyAlIHNlbGYudGVtcGxheWVyZGlyKQorICAgICAgICAgICAgcmV0dXJuIGJiYXBwZW5kZmlsZQorCisgICAgICAgICMgQ2hlY2sgd2l0aG91dCB3aWxkY2FyZCBvcHRpb24KKyAgICAgICAgcmVjaXBlZm4gPSBvcy5wYXRoLmJhc2VuYW1lKGdldF9iYl92YXIoJ0ZJTEUnLCAnYmFzZS1maWxlcycpKQorICAgICAgICBmaWxlbmFtZSA9IHRyeV9hcHBlbmRmaWxlX3djKCcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVuYW1lLCByZWNpcGVmbi5yZXBsYWNlKCcuYmInLCAnLmJiYXBwZW5kJykpCisgICAgICAgICMgTm93IGNoZWNrIHdpdGggd2lsZGNhcmQgb3B0aW9uCisgICAgICAgIGZpbGVuYW1lID0gdHJ5X2FwcGVuZGZpbGVfd2MoJy13JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlbmFtZSwgcmVjaXBlZm4uc3BsaXQoJ18nKVswXSArICdfJS5iYmFwcGVuZCcpCisKKyAgICBAT0VUZXN0SUQoMTE5MykKKyAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2NyZWF0ZShzZWxmKToKKyAgICAgICAgIyBUcnkgYWRkaW5nIGEgcmVjaXBlCisgICAgICAgIHRlbXBzcmMgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCAnc3JjdHJlZScpCisgICAgICAgIG9zLm1ha2VkaXJzKHRlbXBzcmMpCisgICAgICAgIHJlY2lwZWZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCAnbG9ncm90YXRlXzMuMTIuMy5iYicpCisgICAgICAgIHNyY3VyaSA9ICdodHRwczovL2dpdGh1Yi5jb20vbG9ncm90YXRlL2xvZ3JvdGF0ZS9yZWxlYXNlcy9kb3dubG9hZC8zLjEyLjMvbG9ncm90YXRlLTMuMTIuMy50YXIueHonCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgncmVjaXBldG9vbCBjcmVhdGUgLW8gJXMgJXMgLXggJXMnICUgKHJlY2lwZWZpbGUsIHNyY3VyaSwgdGVtcHNyYykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShyZWNpcGVmaWxlKSkKKyAgICAgICAgY2hlY2t2YXJzID0ge30KKyAgICAgICAgY2hlY2t2YXJzWydMSUNFTlNFJ10gPSAnR1BMdjInCisgICAgICAgIGNoZWNrdmFyc1snTElDX0ZJTEVTX0NIS1NVTSddID0gJ2ZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MycKKyAgICAgICAgY2hlY2t2YXJzWydTUkNfVVJJJ10gPSAnaHR0cHM6Ly9naXRodWIuY29tL2xvZ3JvdGF0ZS9sb2dyb3RhdGUvcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vbG9ncm90YXRlLSR7UFZ9LnRhci54eicKKyAgICAgICAgY2hlY2t2YXJzWydTUkNfVVJJW21kNXN1bV0nXSA9ICdhNTYwYzU3ZmFjODdjNDViMmZjMTc0MDZjZGY3OTI4OCcKKyAgICAgICAgY2hlY2t2YXJzWydTUkNfVVJJW3NoYTI1NnN1bV0nXSA9ICcyZTZhNDAxY2FjOTAyNGRiMjI4ODI5N2UzYmUxYThhYjYwZTc0MDFiYThlOTEyMjUyMThhYWY0YTI3ZTgyYTA3JworICAgICAgICBzZWxmLl90ZXN0X3JlY2lwZV9jb250ZW50cyhyZWNpcGVmaWxlLCBjaGVja3ZhcnMsIFtdKQorCisgICAgQE9FVGVzdElEKDExOTQpCisgICAgZGVmIHRlc3RfcmVjaXBldG9vbF9jcmVhdGVfZ2l0KHNlbGYpOgorICAgICAgICBpZiAneDExJyBub3QgaW4gZ2V0X2JiX3ZhcignRElTVFJPX0ZFQVRVUkVTJyk6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdUZXN0IHJlcXVpcmVzIHgxMSBhcyBkaXN0cm8gZmVhdHVyZScpCisgICAgICAgICMgRW5zdXJlIHdlIGhhdmUgdGhlIHJpZ2h0IGRhdGEgaW4gc2hsaWJzL3BrZ2RhdGEKKyAgICAgICAgYml0YmFrZSgnbGlicG5nIHBhbmdvIGxpYngxMSBsaWJ4ZXh0IGpwZWcgbGliY2hlY2snKQorICAgICAgICAjIFRyeSBhZGRpbmcgYSByZWNpcGUKKyAgICAgICAgdGVtcHNyYyA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsICdzcmN0cmVlJykKKyAgICAgICAgb3MubWFrZWRpcnModGVtcHNyYykKKyAgICAgICAgcmVjaXBlZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsICdsaWJtYXRjaGJveC5iYicpCisgICAgICAgIHNyY3VyaSA9ICdnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saWJtYXRjaGJveCcKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKFsncmVjaXBldG9vbCcsICdjcmVhdGUnLCAnLW8nLCByZWNpcGVmaWxlLCBzcmN1cmkgKyAiO3Jldj05ZjdjZjg4OTVhZTJkMzljNDY1YzA0Y2M3OGU5MThjMTU3NDIwMjY5IiwgJy14JywgdGVtcHNyY10pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShyZWNpcGVmaWxlKSwgJ3JlY2lwZXRvb2wgZGlkIG5vdCBjcmVhdGUgcmVjaXBlIGZpbGU7IG91dHB1dDpcbiVzJyAlIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIGNoZWNrdmFycyA9IHt9CisgICAgICAgIGNoZWNrdmFyc1snTElDRU5TRSddID0gJ0xHUEx2Mi4xJworICAgICAgICBjaGVja3ZhcnNbJ0xJQ19GSUxFU19DSEtTVU0nXSA9ICdmaWxlOi8vQ09QWUlORzttZDU9N2ZiYzMzODMwOWFjMzhmZWZjZDY0YjA0YmI5MDNlMzQnCisgICAgICAgIGNoZWNrdmFyc1snUyddID0gJyR7V09SS0RJUn0vZ2l0JworICAgICAgICBjaGVja3ZhcnNbJ1BWJ10gPSAnMS4xMStnaXQke1NSQ1BWfScKKyAgICAgICAgY2hlY2t2YXJzWydTUkNfVVJJJ10gPSBzcmN1cmkKKyAgICAgICAgY2hlY2t2YXJzWydERVBFTkRTJ10gPSBzZXQoWydsaWJjaGVjaycsICdsaWJqcGVnLXR1cmJvJywgJ2xpYnBuZycsICdsaWJ4MTEnLCAnbGlieGV4dCcsICdwYW5nbyddKQorICAgICAgICBpbmhlcml0cyA9IFsnYXV0b3Rvb2xzJywgJ3BrZ2NvbmZpZyddCisgICAgICAgIHNlbGYuX3Rlc3RfcmVjaXBlX2NvbnRlbnRzKHJlY2lwZWZpbGUsIGNoZWNrdmFycywgaW5oZXJpdHMpCisKKyAgICBAT0VUZXN0SUQoMTM5MikKKyAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2NyZWF0ZV9zaW1wbGUoc2VsZik6CisgICAgICAgICMgVHJ5IGFkZGluZyBhIHJlY2lwZQorICAgICAgICB0ZW1wcmVjaXBlID0gb3MucGF0aC5qb2luKHNlbGYudGVtcGRpciwgJ3JlY2lwZScpCisgICAgICAgIG9zLm1ha2VkaXJzKHRlbXByZWNpcGUpCisgICAgICAgIHB2ID0gJzEuNy4zLjAnCisgICAgICAgIHNyY3VyaSA9ICdodHRwOi8vd3d3LmRlc3QtdW5yZWFjaC5vcmcvc29jYXQvZG93bmxvYWQvc29jYXQtJXMudGFyLmJ6MicgJSBwdgorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ3JlY2lwZXRvb2wgY3JlYXRlICVzIC1vICVzJyAlIChzcmN1cmksIHRlbXByZWNpcGUpKQorICAgICAgICBkaXJsaXN0ID0gb3MubGlzdGRpcih0ZW1wcmVjaXBlKQorICAgICAgICBpZiBsZW4oZGlybGlzdCkgPiAxOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdyZWNpcGV0b29sIGNyZWF0ZWQgbW9yZSB0aGFuIGp1c3Qgb25lIGZpbGU7IG91dHB1dDpcbiVzXG5kaXJsaXN0OlxuJXMnICUgKHJlc3VsdC5vdXRwdXQsIHN0cihkaXJsaXN0KSkpCisgICAgICAgIGlmIGxlbihkaXJsaXN0KSA8IDEgb3Igbm90IG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbih0ZW1wcmVjaXBlLCBkaXJsaXN0WzBdKSk6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ3JlY2lwZXRvb2wgZGlkIG5vdCBjcmVhdGUgcmVjaXBlIGZpbGU7IG91dHB1dDpcbiVzXG5kaXJsaXN0OlxuJXMnICUgKHJlc3VsdC5vdXRwdXQsIHN0cihkaXJsaXN0KSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlybGlzdFswXSwgJ3NvY2F0XyVzLmJiJyAlIHB2LCAnUmVjaXBlIGZpbGUgaW5jb3JyZWN0bHkgbmFtZWQnKQorICAgICAgICBjaGVja3ZhcnMgPSB7fQorICAgICAgICBjaGVja3ZhcnNbJ0xJQ0VOU0UnXSA9IHNldChbJ1Vua25vd24nLCAnR1BMdjInXSkKKyAgICAgICAgY2hlY2t2YXJzWydMSUNfRklMRVNfQ0hLU1VNJ10gPSBzZXQoWydmaWxlOi8vQ09QWUlORy5PcGVuU1NMO21kNT01YzliY2NjNzdmNjdhODMyOGVmNGViYWY0NjgxMTZmNCcsICdmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMnXSkKKyAgICAgICAgIyBXZSBkb24ndCBjaGVjayBERVBFTkRTIHNpbmNlIHRoZXkgYXJlIHZhcmlhYmxlIGZvciB0aGlzIHJlY2lwZSBkZXBlbmRpbmcgb24gd2hhdCdzIGluIHRoZSBzeXNyb290CisgICAgICAgIGNoZWNrdmFyc1snUyddID0gTm9uZQorICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUkknXSA9IHNyY3VyaS5yZXBsYWNlKHB2LCAnJHtQVn0nKQorICAgICAgICBpbmhlcml0cyA9IFsnYXV0b3Rvb2xzJ10KKyAgICAgICAgc2VsZi5fdGVzdF9yZWNpcGVfY29udGVudHMob3MucGF0aC5qb2luKHRlbXByZWNpcGUsIGRpcmxpc3RbMF0pLCBjaGVja3ZhcnMsIGluaGVyaXRzKQorCisgICAgQE9FVGVzdElEKDE0MTgpCisgICAgZGVmIHRlc3RfcmVjaXBldG9vbF9jcmVhdGVfY21ha2Uoc2VsZik6CisgICAgICAgICMgVHJ5IGFkZGluZyBhIHJlY2lwZQorICAgICAgICB0ZW1wcmVjaXBlID0gb3MucGF0aC5qb2luKHNlbGYudGVtcGRpciwgJ3JlY2lwZScpCisgICAgICAgIG9zLm1ha2VkaXJzKHRlbXByZWNpcGUpCisgICAgICAgIHJlY2lwZWZpbGUgPSBvcy5wYXRoLmpvaW4odGVtcHJlY2lwZSwgJ25hdml0XzAuNS4wLmJiJykKKyAgICAgICAgc3JjdXJpID0gJ2h0dHA6Ly9kb3dubG9hZHMuc291cmNlZm9yZ2UubmV0L3Byb2plY3QvbmF2aXQvdjAuNS4wL25hdml0LTAuNS4wLnRhci5neicKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdyZWNpcGV0b29sIGNyZWF0ZSAtbyAlcyAlcycgJSAodGVtcHJlY2lwZSwgc3JjdXJpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKHJlY2lwZWZpbGUpKQorICAgICAgICBjaGVja3ZhcnMgPSB7fQorICAgICAgICBjaGVja3ZhcnNbJ0xJQ0VOU0UnXSA9IHNldChbJ1Vua25vd24nLCAnR1BMdjInLCAnTEdQTHYyJ10pCisgICAgICAgIGNoZWNrdmFyc1snU1JDX1VSSSddID0gJ2h0dHA6Ly9kb3dubG9hZHMuc291cmNlZm9yZ2UubmV0L3Byb2plY3QvbmF2aXQvdiR7UFZ9L25hdml0LSR7UFZ9LnRhci5neicKKyAgICAgICAgY2hlY2t2YXJzWydTUkNfVVJJW21kNXN1bV0nXSA9ICcyNDJmMzk4ZTk3OWE2YjhjMGYzYzgwMmI2MzQzNWI2OCcKKyAgICAgICAgY2hlY2t2YXJzWydTUkNfVVJJW3NoYTI1NnN1bV0nXSA9ICcxMzM1MzQ4MWQ3ZmMwMWE0ZjY0ZTM4NWRkYTQ2MGI1MTQ5NjM2NmJiYTBmZDJjYzg1YTg5YTA3NDc5MTBlOTRkJworICAgICAgICBjaGVja3ZhcnNbJ0RFUEVORFMnXSA9IHNldChbJ2ZyZWV0eXBlJywgJ3psaWInLCAnb3BlbnNzbCcsICdnbGliLTIuMCcsICd2aXJ0dWFsL2xpYmdsJywgJ3ZpcnR1YWwvZWdsJywgJ2d0aysnLCAnbGlicG5nJywgJ2xpYnNkbCcsICdmcmVlZ2x1dCcsICdkYnVzLWdsaWInXSkKKyAgICAgICAgaW5oZXJpdHMgPSBbJ2NtYWtlJywgJ3B5dGhvbi1kaXInLCAnZ2V0dGV4dCcsICdwa2djb25maWcnXQorICAgICAgICBzZWxmLl90ZXN0X3JlY2lwZV9jb250ZW50cyhyZWNpcGVmaWxlLCBjaGVja3ZhcnMsIGluaGVyaXRzKQorCisgICAgQE9FVGVzdElEKDE2MzgpCisgICAgZGVmIHRlc3RfcmVjaXBldG9vbF9jcmVhdGVfZ2l0aHViKHNlbGYpOgorICAgICAgICAjIEJhc2ljIHRlc3QgdG8gc2VlIGlmIGdpdGh1YiBVUkwgbWFuZ2xpbmcgd29ya3MKKyAgICAgICAgdGVtcHJlY2lwZSA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsICdyZWNpcGUnKQorICAgICAgICBvcy5tYWtlZGlycyh0ZW1wcmVjaXBlKQorICAgICAgICByZWNpcGVmaWxlID0gb3MucGF0aC5qb2luKHRlbXByZWNpcGUsICdtZXNvbl9naXQuYmInKQorICAgICAgICBzcmN1cmkgPSAnaHR0cHM6Ly9naXRodWIuY29tL21lc29uYnVpbGQvbWVzb247cmV2PTAuMzIuMCcKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKFsncmVjaXBldG9vbCcsICdjcmVhdGUnLCAnLW8nLCB0ZW1wcmVjaXBlLCBzcmN1cmldKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUocmVjaXBlZmlsZSkpCisgICAgICAgIGNoZWNrdmFycyA9IHt9CisgICAgICAgIGNoZWNrdmFyc1snTElDRU5TRSddID0gc2V0KFsnQXBhY2hlLTIuMCddKQorICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUkknXSA9ICdnaXQ6Ly9naXRodWIuY29tL21lc29uYnVpbGQvbWVzb247cHJvdG9jb2w9aHR0cHMnCisgICAgICAgIGluaGVyaXRzID0gWydzZXR1cHRvb2xzJ10KKyAgICAgICAgc2VsZi5fdGVzdF9yZWNpcGVfY29udGVudHMocmVjaXBlZmlsZSwgY2hlY2t2YXJzLCBpbmhlcml0cykKKworICAgIEBPRVRlc3RJRCgxNjM5KQorICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfY3JlYXRlX2dpdGh1Yl90YXJiYWxsKHNlbGYpOgorICAgICAgICAjIEJhc2ljIHRlc3QgdG8gZW5zdXJlIGdpdGh1YiBVUkwgbWFuZ2xpbmcgZG9lc24ndCBhcHBseSB0byByZWxlYXNlIHRhcmJhbGxzCisgICAgICAgIHRlbXByZWNpcGUgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCAncmVjaXBlJykKKyAgICAgICAgb3MubWFrZWRpcnModGVtcHJlY2lwZSkKKyAgICAgICAgcHYgPSAnMC4zMi4wJworICAgICAgICByZWNpcGVmaWxlID0gb3MucGF0aC5qb2luKHRlbXByZWNpcGUsICdtZXNvbl8lcy5iYicgJSBwdikKKyAgICAgICAgc3JjdXJpID0gJ2h0dHBzOi8vZ2l0aHViLmNvbS9tZXNvbmJ1aWxkL21lc29uL3JlbGVhc2VzL2Rvd25sb2FkLyVzL21lc29uLSVzLnRhci5neicgJSAocHYsIHB2KQorICAgICAgICByZXN1bHQgPSBydW5DbWQoJ3JlY2lwZXRvb2wgY3JlYXRlIC1vICVzICVzJyAlICh0ZW1wcmVjaXBlLCBzcmN1cmkpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUocmVjaXBlZmlsZSkpCisgICAgICAgIGNoZWNrdmFycyA9IHt9CisgICAgICAgIGNoZWNrdmFyc1snTElDRU5TRSddID0gc2V0KFsnQXBhY2hlLTIuMCddKQorICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUkknXSA9ICdodHRwczovL2dpdGh1Yi5jb20vbWVzb25idWlsZC9tZXNvbi9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS9tZXNvbi0ke1BWfS50YXIuZ3onCisgICAgICAgIGluaGVyaXRzID0gWydzZXR1cHRvb2xzJ10KKyAgICAgICAgc2VsZi5fdGVzdF9yZWNpcGVfY29udGVudHMocmVjaXBlZmlsZSwgY2hlY2t2YXJzLCBpbmhlcml0cykKKworICAgIEBPRVRlc3RJRCgxNjM3KQorICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfY3JlYXRlX2dpdF9odHRwKHNlbGYpOgorICAgICAgICAjIEJhc2ljIHRlc3QgdG8gY2hlY2sgaHR0cCBnaXQgVVJMIG1hbmdsaW5nIHdvcmtzCisgICAgICAgIHRlbXByZWNpcGUgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCAncmVjaXBlJykKKyAgICAgICAgb3MubWFrZWRpcnModGVtcHJlY2lwZSkKKyAgICAgICAgcmVjaXBlZmlsZSA9IG9zLnBhdGguam9pbih0ZW1wcmVjaXBlLCAnbWF0Y2hib3gtdGVybWluYWxfZ2l0LmJiJykKKyAgICAgICAgc3JjdXJpID0gJ2h0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9naXQvbWF0Y2hib3gtdGVybWluYWwnCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgncmVjaXBldG9vbCBjcmVhdGUgLW8gJXMgJXMnICUgKHRlbXByZWNpcGUsIHNyY3VyaSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShyZWNpcGVmaWxlKSkKKyAgICAgICAgY2hlY2t2YXJzID0ge30KKyAgICAgICAgY2hlY2t2YXJzWydMSUNFTlNFJ10gPSBzZXQoWydHUEx2MiddKQorICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUkknXSA9ICdnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9naXQvbWF0Y2hib3gtdGVybWluYWw7cHJvdG9jb2w9aHR0cCcKKyAgICAgICAgaW5oZXJpdHMgPSBbJ3BrZ2NvbmZpZycsICdhdXRvdG9vbHMnXQorICAgICAgICBzZWxmLl90ZXN0X3JlY2lwZV9jb250ZW50cyhyZWNpcGVmaWxlLCBjaGVja3ZhcnMsIGluaGVyaXRzKQorCisgICAgZGVmIF9jb3B5X2ZpbGVfd2l0aF9jbGVhbnVwKHNlbGYsIHNyY2ZpbGUsIGJhc2Vkc3RkaXIsICpwYXRocyk6CisgICAgICAgIGRzdGRpciA9IGJhc2Vkc3RkaXIKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGRzdGRpcikpCisgICAgICAgIGZvciBwIGluIHBhdGhzOgorICAgICAgICAgICAgZHN0ZGlyID0gb3MucGF0aC5qb2luKGRzdGRpciwgcCkKKyAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhkc3RkaXIpOgorICAgICAgICAgICAgICAgIG9zLm1ha2VkaXJzKGRzdGRpcikKKyAgICAgICAgICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKGRzdGRpcikKKyAgICAgICAgZHN0ZmlsZSA9IG9zLnBhdGguam9pbihkc3RkaXIsIG9zLnBhdGguYmFzZW5hbWUoc3JjZmlsZSkpCisgICAgICAgIGlmIHNyY2ZpbGUgIT0gZHN0ZmlsZToKKyAgICAgICAgICAgIHNodXRpbC5jb3B5KHNyY2ZpbGUsIGRzdGZpbGUpCisgICAgICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKGRzdGZpbGUpCisKKyAgICBAT0VUZXN0SUQoMTY0MCkKKyAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2xvYWRfcGx1Z2luKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHRoYXQgcmVjaXBldG9vbCBsb2FkcyBvbmx5IHRoZSBmaXJzdCBmb3VuZCBwbHVnaW4gaW4gQkJQQVRILiIiIgorCisgICAgICAgIHJlY2lwZXRvb2wgPSBydW5DbWQoIndoaWNoIHJlY2lwZXRvb2wiKQorICAgICAgICBmcm9tbmFtZSA9IHJ1bkNtZCgicmVjaXBldG9vbCAtLXF1aWV0IHBsdWdpbmZpbGUiKQorICAgICAgICBzcmNmaWxlID0gZnJvbW5hbWUub3V0cHV0CisgICAgICAgIHNlYXJjaHBhdGggPSBzZWxmLmJicGF0aC5zcGxpdCgnOicpICsgW29zLnBhdGguZGlybmFtZShyZWNpcGV0b29sLm91dHB1dCldCisgICAgICAgIHBsdWdpbmNvbnRlbnQgPSBbXQorICAgICAgICB3aXRoIG9wZW4oc3JjZmlsZSkgYXMgZmg6CisgICAgICAgICAgICBwbHVnaW5jb250ZW50ID0gZmgucmVhZGxpbmVzKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignbWV0YS1zZWxmdGVzdCcsIHNyY2ZpbGUsICd3cm9uZyBiYnBhdGggcGx1Z2luIGZvdW5kJykKKyAgICAgICAgICAgIGZvciBwYXRoIGluIHNlYXJjaHBhdGg6CisgICAgICAgICAgICAgICAgc2VsZi5fY29weV9maWxlX3dpdGhfY2xlYW51cChzcmNmaWxlLCBwYXRoLCAnbGliJywgJ3JlY2lwZXRvb2wnKQorICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJyZWNpcGV0b29sIC0tcXVpZXQgY291bnQiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LCAnMScpCisgICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoInJlY2lwZXRvb2wgLS1xdWlldCBtdWx0aWxvYWRlZCIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQsICJubyIpCisgICAgICAgICAgICBmb3IgcGF0aCBpbiBzZWFyY2hwYXRoOgorICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgicmVjaXBldG9vbCAtLXF1aWV0IGJiZGlyIikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQsIHBhdGgpCisgICAgICAgICAgICAgICAgb3MudW5saW5rKG9zLnBhdGguam9pbihyZXN1bHQub3V0cHV0LCAnbGliJywgJ3JlY2lwZXRvb2wnLCAnYmJwYXRoLnB5JykpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICB3aXRoIG9wZW4oc3JjZmlsZSwgJ3cnKSBhcyBmaDoKKyAgICAgICAgICAgICAgICBmaC53cml0ZWxpbmVzKHBsdWdpbmNvbnRlbnQpCisKKworY2xhc3MgUmVjaXBldG9vbEFwcGVuZHNyY0Jhc2UoUmVjaXBldG9vbEJhc2UpOgorICAgIGRlZiBfdHJ5X3JlY2lwZXRvb2xfYXBwZW5kc3JjZmlsZShzZWxmLCB0ZXN0cmVjaXBlLCBuZXdmaWxlLCBkZXN0ZmlsZSwgb3B0aW9ucywgZXhwZWN0ZWRsaW5lcywgZXhwZWN0ZWRmaWxlcyk6CisgICAgICAgIGNtZCA9ICdyZWNpcGV0b29sIGFwcGVuZHNyY2ZpbGUgJXMgJXMgJXMgJXMgJXMnICUgKG9wdGlvbnMsIHNlbGYudGVtcGxheWVyZGlyLCB0ZXN0cmVjaXBlLCBuZXdmaWxlLCBkZXN0ZmlsZSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGNtZChjbWQsIHRlc3RyZWNpcGUsIGV4cGVjdGVkZmlsZXMsIGV4cGVjdGVkbGluZXMpCisKKyAgICBkZWYgX3RyeV9yZWNpcGV0b29sX2FwcGVuZHNyY2ZpbGVzKHNlbGYsIHRlc3RyZWNpcGUsIG5ld2ZpbGVzLCBleHBlY3RlZGxpbmVzPU5vbmUsIGV4cGVjdGVkZmlsZXM9Tm9uZSwgZGVzdGRpcj1Ob25lLCBvcHRpb25zPScnKToKKworICAgICAgICBpZiBkZXN0ZGlyOgorICAgICAgICAgICAgb3B0aW9ucyArPSAnIC1EICVzJyAlIGRlc3RkaXIKKworICAgICAgICBpZiBleHBlY3RlZGZpbGVzIGlzIE5vbmU6CisgICAgICAgICAgICBleHBlY3RlZGZpbGVzID0gW29zLnBhdGguYmFzZW5hbWUoZikgZm9yIGYgaW4gbmV3ZmlsZXNdCisKKyAgICAgICAgY21kID0gJ3JlY2lwZXRvb2wgYXBwZW5kc3JjZmlsZXMgJXMgJXMgJXMgJXMnICUgKG9wdGlvbnMsIHNlbGYudGVtcGxheWVyZGlyLCB0ZXN0cmVjaXBlLCAnICcuam9pbihuZXdmaWxlcykpCisgICAgICAgIHJldHVybiBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRjbWQoY21kLCB0ZXN0cmVjaXBlLCBleHBlY3RlZGZpbGVzLCBleHBlY3RlZGxpbmVzKQorCisgICAgZGVmIF90cnlfcmVjaXBldG9vbF9hcHBlbmRzcmNmaWxlX2ZhaWwoc2VsZiwgdGVzdHJlY2lwZSwgbmV3ZmlsZSwgZGVzdGZpbGUsIGNoZWNrZXJyb3IpOgorICAgICAgICBjbWQgPSAncmVjaXBldG9vbCBhcHBlbmRzcmNmaWxlICVzICVzICVzICVzJyAlIChzZWxmLnRlbXBsYXllcmRpciwgdGVzdHJlY2lwZSwgbmV3ZmlsZSwgZGVzdGZpbGUgb3IgJycpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZChjbWQsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyZXN1bHQuc3RhdHVzLCAwLCAnQ29tbWFuZCAiJXMiIHNob3VsZCBoYXZlIGZhaWxlZCBidXQgZGlkblwndCcgJSBjbWQpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ1RyYWNlYmFjaycsIHJlc3VsdC5vdXRwdXQpCisgICAgICAgIGZvciBlcnJvcnN0ciBpbiBjaGVja2Vycm9yOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlcnJvcnN0ciwgcmVzdWx0Lm91dHB1dCkKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgX2dldF9maXJzdF9maWxlX3VyaShyZWNpcGUpOgorICAgICAgICAnJydSZXR1cm4gdGhlIGZpcnN0IGZpbGU6Ly8gaW4gU1JDX1VSSSBmb3IgdGhlIHNwZWNpZmllZCByZWNpcGUuJycnCisgICAgICAgIHNyY191cmkgPSBnZXRfYmJfdmFyKCdTUkNfVVJJJywgcmVjaXBlKS5zcGxpdCgpCisgICAgICAgIGZvciB1cmkgaW4gc3JjX3VyaToKKyAgICAgICAgICAgIHAgPSB1cmxsaWIucGFyc2UudXJscGFyc2UodXJpKQorICAgICAgICAgICAgaWYgcC5zY2hlbWUgPT0gJ2ZpbGUnOgorICAgICAgICAgICAgICAgIHJldHVybiBwLm5ldGxvYyArIHAucGF0aAorCisgICAgZGVmIF90ZXN0X2FwcGVuZHNyY2ZpbGUoc2VsZiwgdGVzdHJlY2lwZSwgZmlsZW5hbWU9Tm9uZSwgZGVzdGRpcj1Ob25lLCBoYXNfc3JjX3VyaT1UcnVlLCBzcmNkaXI9Tm9uZSwgbmV3ZmlsZT1Ob25lLCBvcHRpb25zPScnKToKKyAgICAgICAgaWYgbmV3ZmlsZSBpcyBOb25lOgorICAgICAgICAgICAgbmV3ZmlsZSA9IHNlbGYudGVzdGZpbGUKKworICAgICAgICBpZiBzcmNkaXI6CisgICAgICAgICAgICBpZiBkZXN0ZGlyOgorICAgICAgICAgICAgICAgIGV4cGVjdGVkX3N1YmRpciA9IG9zLnBhdGguam9pbihzcmNkaXIsIGRlc3RkaXIpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGV4cGVjdGVkX3N1YmRpciA9IHNyY2RpcgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgb3B0aW9ucyArPSAiIC1XIgorICAgICAgICAgICAgZXhwZWN0ZWRfc3ViZGlyID0gZGVzdGRpcgorCisgICAgICAgIGlmIGZpbGVuYW1lOgorICAgICAgICAgICAgaWYgZGVzdGRpcjoKKyAgICAgICAgICAgICAgICBkZXN0cGF0aCA9IG9zLnBhdGguam9pbihkZXN0ZGlyLCBmaWxlbmFtZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZGVzdHBhdGggPSBmaWxlbmFtZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKG5ld2ZpbGUpCisgICAgICAgICAgICBpZiBkZXN0ZGlyOgorICAgICAgICAgICAgICAgIGRlc3RwYXRoID0gZGVzdGRpciArIG9zLnNlcAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkZXN0cGF0aCA9ICcuJyArIG9zLnNlcAorCisgICAgICAgIGV4cGVjdGVkbGluZXMgPSBbJ0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiJcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJ10KKyAgICAgICAgaWYgaGFzX3NyY191cmk6CisgICAgICAgICAgICB1cmkgPSAnZmlsZTovLyVzJyAlIGZpbGVuYW1lCisgICAgICAgICAgICBpZiBleHBlY3RlZF9zdWJkaXI6CisgICAgICAgICAgICAgICAgdXJpICs9ICc7c3ViZGlyPSVzJyAlIGV4cGVjdGVkX3N1YmRpcgorICAgICAgICAgICAgZXhwZWN0ZWRsaW5lc1swOjBdID0gWydTUkNfVVJJICs9ICIlcyJcbicgJSB1cmksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJ10KKworICAgICAgICByZXR1cm4gc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kc3JjZmlsZSh0ZXN0cmVjaXBlLCBuZXdmaWxlLCBkZXN0cGF0aCwgb3B0aW9ucywgZXhwZWN0ZWRsaW5lcywgW2ZpbGVuYW1lXSkKKworICAgIGRlZiBfdGVzdF9hcHBlbmRzcmNmaWxlcyhzZWxmLCB0ZXN0cmVjaXBlLCBuZXdmaWxlcywgZXhwZWN0ZWRmaWxlcz1Ob25lLCBkZXN0ZGlyPU5vbmUsIG9wdGlvbnM9JycpOgorICAgICAgICBpZiBleHBlY3RlZGZpbGVzIGlzIE5vbmU6CisgICAgICAgICAgICBleHBlY3RlZGZpbGVzID0gW29zLnBhdGguYmFzZW5hbWUobikgZm9yIG4gaW4gbmV3ZmlsZXNdCisKKyAgICAgICAgc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kc3JjZmlsZXModGVzdHJlY2lwZSwgbmV3ZmlsZXMsIGV4cGVjdGVkZmlsZXM9ZXhwZWN0ZWRmaWxlcywgZGVzdGRpcj1kZXN0ZGlyLCBvcHRpb25zPW9wdGlvbnMpCisKKyAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnU1JDX1VSSScsICdGSUxFJywgJ0ZJTEVTRVhUUkFQQVRIUyddLCB0ZXN0cmVjaXBlKQorICAgICAgICBzcmNfdXJpID0gYmJfdmFyc1snU1JDX1VSSSddLnNwbGl0KCkKKyAgICAgICAgZm9yIGYgaW4gZXhwZWN0ZWRmaWxlczoKKyAgICAgICAgICAgIGlmIGRlc3RkaXI6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignZmlsZTovLyVzO3N1YmRpcj0lcycgJSAoZiwgZGVzdGRpciksIHNyY191cmkpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2ZpbGU6Ly8lcycgJSBmLCBzcmNfdXJpKQorCisgICAgICAgIHJlY2lwZWZpbGUgPSBiYl92YXJzWydGSUxFJ10KKyAgICAgICAgYmJhcHBlbmRmaWxlID0gc2VsZi5fY2hlY2tfYmJhcHBlbmQodGVzdHJlY2lwZSwgcmVjaXBlZmlsZSwgc2VsZi50ZW1wbGF5ZXJkaXIpCisgICAgICAgIGZpbGVzZGlyID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShiYmFwcGVuZGZpbGUpLCB0ZXN0cmVjaXBlKQorICAgICAgICBmaWxlc2V4dHJhcGF0aHMgPSBiYl92YXJzWydGSUxFU0VYVFJBUEFUSFMnXS5zcGxpdCgnOicpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oZmlsZXNkaXIsIGZpbGVzZXh0cmFwYXRocykKKworCisKKworY2xhc3MgUmVjaXBldG9vbEFwcGVuZHNyY1Rlc3RzKFJlY2lwZXRvb2xBcHBlbmRzcmNCYXNlKToKKworICAgIEBPRVRlc3RJRCgxMjczKQorICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kc3JjZmlsZV9iYXNpYyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9hcHBlbmRzcmNmaWxlKCdiYXNlLWZpbGVzJywgJ2EtZmlsZScpCisKKyAgICBAT0VUZXN0SUQoMTI3NCkKKyAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZHNyY2ZpbGVfYmFzaWNfd2lsZGNhcmQoc2VsZik6CisgICAgICAgIHRlc3RyZWNpcGUgPSAnYmFzZS1maWxlcycKKyAgICAgICAgc2VsZi5fdGVzdF9hcHBlbmRzcmNmaWxlKHRlc3RyZWNpcGUsICdhLWZpbGUnLCBvcHRpb25zPSctdycpCisgICAgICAgIHJlY2lwZWZpbGUgPSBnZXRfYmJfdmFyKCdGSUxFJywgdGVzdHJlY2lwZSkKKyAgICAgICAgYmJhcHBlbmRmaWxlID0gc2VsZi5fY2hlY2tfYmJhcHBlbmQodGVzdHJlY2lwZSwgcmVjaXBlZmlsZSwgc2VsZi50ZW1wbGF5ZXJkaXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5iYXNlbmFtZShiYmFwcGVuZGZpbGUpLCAnJXNfJSUuYmJhcHBlbmQnICUgdGVzdHJlY2lwZSkKKworICAgIEBPRVRlc3RJRCgxMjgxKQorICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kc3JjZmlsZV9zdWJkaXJfYmFzaWMoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfYXBwZW5kc3JjZmlsZSgnYmFzZS1maWxlcycsICdhLWZpbGUnLCAndG1wJykKKworICAgIEBPRVRlc3RJRCgxMjgyKQorICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kc3JjZmlsZV9zdWJkaXJfYmFzaWNfZGlyZGVzdChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9hcHBlbmRzcmNmaWxlKCdiYXNlLWZpbGVzJywgZGVzdGRpcj0ndG1wJykKKworICAgIEBPRVRlc3RJRCgxMjgwKQorICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kc3JjZmlsZV9zcmNkaXJfYmFzaWMoc2VsZik6CisgICAgICAgIHRlc3RyZWNpcGUgPSAnYmFzaCcKKyAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnUycsICdXT1JLRElSJ10sIHRlc3RyZWNpcGUpCisgICAgICAgIHNyY2RpciA9IGJiX3ZhcnNbJ1MnXQorICAgICAgICB3b3JrZGlyID0gYmJfdmFyc1snV09SS0RJUiddCisgICAgICAgIHN1YmRpciA9IG9zLnBhdGgucmVscGF0aChzcmNkaXIsIHdvcmtkaXIpCisgICAgICAgIHNlbGYuX3Rlc3RfYXBwZW5kc3JjZmlsZSh0ZXN0cmVjaXBlLCAnYS1maWxlJywgc3JjZGlyPXN1YmRpcikKKworICAgIEBPRVRlc3RJRCgxMjc1KQorICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kc3JjZmlsZV9leGlzdGluZ19pbl9zcmNfdXJpKHNlbGYpOgorICAgICAgICB0ZXN0cmVjaXBlID0gJ2Jhc2UtZmlsZXMnCisgICAgICAgIGZpbGVwYXRoID0gc2VsZi5fZ2V0X2ZpcnN0X2ZpbGVfdXJpKHRlc3RyZWNpcGUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmaWxlcGF0aCwgJ1VuYWJsZSB0byB0ZXN0LCBubyBmaWxlOi8vIHVyaSBmb3VuZCBpbiBTUkNfVVJJIGZvciAlcycgJSB0ZXN0cmVjaXBlKQorICAgICAgICBzZWxmLl90ZXN0X2FwcGVuZHNyY2ZpbGUodGVzdHJlY2lwZSwgZmlsZXBhdGgsIGhhc19zcmNfdXJpPUZhbHNlKQorCisgICAgQE9FVGVzdElEKDEyNzYpCisgICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRzcmNmaWxlX2V4aXN0aW5nX2luX3NyY191cmlfZGlmZl9wYXJhbXMoc2VsZik6CisgICAgICAgIHRlc3RyZWNpcGUgPSAnYmFzZS1maWxlcycKKyAgICAgICAgc3ViZGlyID0gJ3RtcCcKKyAgICAgICAgZmlsZXBhdGggPSBzZWxmLl9nZXRfZmlyc3RfZmlsZV91cmkodGVzdHJlY2lwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZpbGVwYXRoLCAnVW5hYmxlIHRvIHRlc3QsIG5vIGZpbGU6Ly8gdXJpIGZvdW5kIGluIFNSQ19VUkkgZm9yICVzJyAlIHRlc3RyZWNpcGUpCisKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5fdGVzdF9hcHBlbmRzcmNmaWxlKHRlc3RyZWNpcGUsIGZpbGVwYXRoLCBzdWJkaXIsIGhhc19zcmNfdXJpPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoYW55KCd3aXRoIGRpZmZlcmVudCBwYXJhbWV0ZXJzJyBpbiBsIGZvciBsIGluIG91dHB1dCkpCisKKyAgICBAT0VUZXN0SUQoMTI3NykKKyAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZHNyY2ZpbGVfcmVwbGFjZV9maWxlX3NyY2RpcihzZWxmKToKKyAgICAgICAgdGVzdHJlY2lwZSA9ICdiYXNoJworICAgICAgICBmaWxlcGF0aCA9ICdNYWtlZmlsZS5pbicKKyAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnUycsICdXT1JLRElSJ10sIHRlc3RyZWNpcGUpCisgICAgICAgIHNyY2RpciA9IGJiX3ZhcnNbJ1MnXQorICAgICAgICB3b3JrZGlyID0gYmJfdmFyc1snV09SS0RJUiddCisgICAgICAgIHN1YmRpciA9IG9zLnBhdGgucmVscGF0aChzcmNkaXIsIHdvcmtkaXIpCisKKyAgICAgICAgc2VsZi5fdGVzdF9hcHBlbmRzcmNmaWxlKHRlc3RyZWNpcGUsIGZpbGVwYXRoLCBzcmNkaXI9c3ViZGlyKQorICAgICAgICBiaXRiYWtlKCclczpkb191bnBhY2snICUgdGVzdHJlY2lwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVuKHNlbGYudGVzdGZpbGUsICdyJykucmVhZCgpLCBvcGVuKG9zLnBhdGguam9pbihzcmNkaXIsIGZpbGVwYXRoKSwgJ3InKS5yZWFkKCkpCisKKyAgICBAT0VUZXN0SUQoMTI3OCkKKyAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZHNyY2ZpbGVzX2Jhc2ljKHNlbGYsIGRlc3RkaXI9Tm9uZSk6CisgICAgICAgIG5ld2ZpbGVzID0gW3NlbGYudGVzdGZpbGVdCisgICAgICAgIGZvciBpIGluIHJhbmdlKDEsIDUpOgorICAgICAgICAgICAgdGVzdGZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCAndGVzdGZpbGUlZCcgJSBpKQorICAgICAgICAgICAgd2l0aCBvcGVuKHRlc3RmaWxlLCAndycpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZSgnVGVzdCBmaWxlICVkXG4nICUgaSkKKyAgICAgICAgICAgIG5ld2ZpbGVzLmFwcGVuZCh0ZXN0ZmlsZSkKKyAgICAgICAgc2VsZi5fdGVzdF9hcHBlbmRzcmNmaWxlcygnZ2NjJywgbmV3ZmlsZXMsIGRlc3RkaXI9ZGVzdGRpciwgb3B0aW9ucz0nLVcnKQorCisgICAgQE9FVGVzdElEKDEyNzkpCisgICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRzcmNmaWxlc19iYXNpY19zdWJkaXIoc2VsZik6CisgICAgICAgIHNlbGYudGVzdF9yZWNpcGV0b29sX2FwcGVuZHNyY2ZpbGVzX2Jhc2ljKGRlc3RkaXI9J3Rlc3RkaXInKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcnVuY21kLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcnVuY21kLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3NmQ3MDYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9ydW5jbWQucHkKQEAgLTAsMCArMSwxMzQgQEAKK2Zyb20gb2VxYS5zZWxmdGVzdC5jYXNlIGltcG9ydCBPRVNlbGZ0ZXN0VGVzdENhc2UKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kCitmcm9tIG9lcWEudXRpbHMgaW1wb3J0IENvbW1hbmRFcnJvcgorZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLm9laWQgaW1wb3J0IE9FVGVzdElECisKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgdGhyZWFkaW5nCitpbXBvcnQgdGltZQoraW1wb3J0IHNpZ25hbAorCitjbGFzcyBNZW1Mb2dnZXIob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYuaW5mb19tc2dzID0gW10KKyAgICAgICAgc2VsZi5lcnJvcl9tc2dzID0gW10KKworICAgIGRlZiBpbmZvKHNlbGYsIG1zZyk6CisgICAgICAgIHNlbGYuaW5mb19tc2dzLmFwcGVuZChtc2cpCisKKyAgICBkZWYgZXJyb3Ioc2VsZiwgbXNnKToKKyAgICAgICAgc2VsZi5lcnJvcl9tc2dzLmFwcGVuZChtc2cpCisKK2NsYXNzIFJ1bkNtZFRlc3RzKE9FU2VsZnRlc3RUZXN0Q2FzZSk6CisgICAgIiIiIEJhc2ljIHRlc3RzIGZvciBydW5DbWQoKSB1dGlsaXR5IGZ1bmN0aW9uICIiIgorCisgICAgIyBUaGUgZGVsdGEgaXMgaW50ZW50aW9uYWxseSBzbWFsbGVyIHRoYW4gdGhlIHRpbWVvdXQsIHRvIGRldGVjdCBjYXNlcyB3aGVyZQorICAgICMgd2UgaW5jb3JyZWN0bHkgYXBwbHkgdGhlIHRpbWVvdXQgbW9yZSB0aGFuIG9uY2UuCisgICAgVElNRU9VVCA9IDIKKyAgICBERUxUQSA9IDEKKworICAgIEBPRVRlc3RJRCgxOTE2KQorICAgIGRlZiB0ZXN0X3Jlc3VsdF9va2F5KHNlbGYpOgorICAgICAgICByZXN1bHQgPSBydW5DbWQoInRydWUiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5zdGF0dXMsIDApCisKKyAgICBAT0VUZXN0SUQoMTkxNSkKKyAgICBkZWYgdGVzdF9yZXN1bHRfZmFsc2Uoc2VsZik6CisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgiZmFsc2UiLCBpZ25vcmVfc3RhdHVzPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnN0YXR1cywgMSkKKworICAgIEBPRVRlc3RJRCgxOTE3KQorICAgIGRlZiB0ZXN0X3NoZWxsKHNlbGYpOgorICAgICAgICAjIEEgc2hlbGwgaXMgdXNlZCBmb3IgYWxsIHN0cmluZyBjb21tYW5kcy4KKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJmYWxzZTsgdHJ1ZSIsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuc3RhdHVzLCAwKQorCisgICAgQE9FVGVzdElEKDE5MTApCisgICAgZGVmIHRlc3Rfbm9fc2hlbGwoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVOb3RGb3VuZEVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICBydW5DbWQsICJmYWxzZTsgdHJ1ZSIsIHNoZWxsPUZhbHNlKQorCisgICAgQE9FVGVzdElEKDE5MDYpCisgICAgZGVmIHRlc3RfbGlzdF9ub3RfZm91bmQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVOb3RGb3VuZEVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICBydW5DbWQsIFsiZmFsc2U7IHRydWUiXSkKKworICAgIEBPRVRlc3RJRCgxOTA3KQorICAgIGRlZiB0ZXN0X2xpc3Rfb2theShzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKFsidHJ1ZSJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5zdGF0dXMsIDApCisKKyAgICBAT0VUZXN0SUQoMTkxMykKKyAgICBkZWYgdGVzdF9yZXN1bHRfYXNzZXJ0aW9uKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4cChBc3NlcnRpb25FcnJvciwgIkNvbW1hbmQgJ2VjaG8gLiogZmFsc2UnIHJldHVybmVkIG5vbi16ZXJvIGV4aXQgc3RhdHVzIDE6XG5mb29iYXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5DbWQsICJlY2hvIGZvb2JhciA+JjI7IGZhbHNlIiwgc2hlbGw9VHJ1ZSkKKworICAgIEBPRVRlc3RJRCgxOTE0KQorICAgIGRlZiB0ZXN0X3Jlc3VsdF9leGNlcHRpb24oc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXhwKENvbW1hbmRFcnJvciwgIkNvbW1hbmQgJ2VjaG8gLiogZmFsc2UnIHJldHVybmVkIG5vbi16ZXJvIGV4aXQgc3RhdHVzIDEgd2l0aCBvdXRwdXQ6IGZvb2JhciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bkNtZCwgImVjaG8gZm9vYmFyID4mMjsgZmFsc2UiLCBzaGVsbD1UcnVlLCBhc3NlcnRfZXJyb3I9RmFsc2UpCisKKyAgICBAT0VUZXN0SUQoMTkxMSkKKyAgICBkZWYgdGVzdF9vdXRwdXQoc2VsZik6CisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgiZWNobyBzdGRvdXQ7IGVjaG8gc3RkZXJyID4mMiIsIHNoZWxsPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInN0ZG91dFxuc3RkZXJyIiwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiIiwgcmVzdWx0LmVycm9yKQorCisgICAgQE9FVGVzdElEKDE5MTIpCisgICAgZGVmIHRlc3Rfb3V0cHV0X3NwbGl0KHNlbGYpOgorICAgICAgICByZXN1bHQgPSBydW5DbWQoImVjaG8gc3Rkb3V0OyBlY2hvIHN0ZGVyciA+JjIiLCBzaGVsbD1UcnVlLCBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJzdGRvdXQiLCByZXN1bHQub3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJzdGRlcnIiLCByZXN1bHQuZXJyb3IpCisKKyAgICBAT0VUZXN0SUQoMTkyMCkKKyAgICBkZWYgdGVzdF90aW1lb3V0KHNlbGYpOgorICAgICAgICBudW10aHJlYWRzID0gdGhyZWFkaW5nLmFjdGl2ZV9jb3VudCgpCisgICAgICAgIHN0YXJ0ID0gdGltZS50aW1lKCkKKyAgICAgICAgIyBLaWxsaW5nIGEgaGFuZ2luZyBwcm9jZXNzIG9ubHkgd29ya3Mgd2hlbiBub3QgdXNpbmcgYSBzaGVsbD8hCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZChbJ3NsZWVwJywgJzYwJ10sIHRpbWVvdXQ9c2VsZi5USU1FT1VULCBpZ25vcmVfc3RhdHVzPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnN0YXR1cywgLXNpZ25hbC5TSUdURVJNKQorICAgICAgICBlbmQgPSB0aW1lLnRpbWUoKQorICAgICAgICBzZWxmLmFzc2VydExlc3MoZW5kIC0gc3RhcnQsIHNlbGYuVElNRU9VVCArIHNlbGYuREVMVEEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnVtdGhyZWFkcywgdGhyZWFkaW5nLmFjdGl2ZV9jb3VudCgpKQorCisgICAgQE9FVGVzdElEKDE5MjEpCisgICAgZGVmIHRlc3RfdGltZW91dF9zcGxpdChzZWxmKToKKyAgICAgICAgbnVtdGhyZWFkcyA9IHRocmVhZGluZy5hY3RpdmVfY291bnQoKQorICAgICAgICBzdGFydCA9IHRpbWUudGltZSgpCisgICAgICAgICMgS2lsbGluZyBhIGhhbmdpbmcgcHJvY2VzcyBvbmx5IHdvcmtzIHdoZW4gbm90IHVzaW5nIGEgc2hlbGw/IQorICAgICAgICByZXN1bHQgPSBydW5DbWQoWydzbGVlcCcsICc2MCddLCB0aW1lb3V0PXNlbGYuVElNRU9VVCwgaWdub3JlX3N0YXR1cz1UcnVlLCBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5zdGF0dXMsIC1zaWduYWwuU0lHVEVSTSkKKyAgICAgICAgZW5kID0gdGltZS50aW1lKCkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGVuZCAtIHN0YXJ0LCBzZWxmLlRJTUVPVVQgKyBzZWxmLkRFTFRBKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG51bXRocmVhZHMsIHRocmVhZGluZy5hY3RpdmVfY291bnQoKSkKKworICAgIEBPRVRlc3RJRCgxOTE4KQorICAgIGRlZiB0ZXN0X3N0ZGluKHNlbGYpOgorICAgICAgICBudW10aHJlYWRzID0gdGhyZWFkaW5nLmFjdGl2ZV9jb3VudCgpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgiY2F0IiwgZGF0YT1iImhlbGxvIHdvcmxkIiwgdGltZW91dD1zZWxmLlRJTUVPVVQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoImhlbGxvIHdvcmxkIiwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChudW10aHJlYWRzLCB0aHJlYWRpbmcuYWN0aXZlX2NvdW50KCkpCisKKyAgICBAT0VUZXN0SUQoMTkxOSkKKyAgICBkZWYgdGVzdF9zdGRpbl90aW1lb3V0KHNlbGYpOgorICAgICAgICBudW10aHJlYWRzID0gdGhyZWFkaW5nLmFjdGl2ZV9jb3VudCgpCisgICAgICAgIHN0YXJ0ID0gdGltZS50aW1lKCkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKFsnc2xlZXAnLCAnNjAnXSwgZGF0YT1iImhlbGxvIHdvcmxkIiwgdGltZW91dD1zZWxmLlRJTUVPVVQsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuc3RhdHVzLCAtc2lnbmFsLlNJR1RFUk0pCisgICAgICAgIGVuZCA9IHRpbWUudGltZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhlbmQgLSBzdGFydCwgc2VsZi5USU1FT1VUICsgc2VsZi5ERUxUQSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChudW10aHJlYWRzLCB0aHJlYWRpbmcuYWN0aXZlX2NvdW50KCkpCisKKyAgICBAT0VUZXN0SUQoMTkwOCkKKyAgICBkZWYgdGVzdF9sb2coc2VsZik6CisgICAgICAgIGxvZyA9IE1lbUxvZ2dlcigpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgiZWNobyBzdGRvdXQ7IGVjaG8gc3RkZXJyID4mMiIsIHNoZWxsPVRydWUsIG91dHB1dF9sb2c9bG9nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsiUnVubmluZzogZWNobyBzdGRvdXQ7IGVjaG8gc3RkZXJyID4mMiIsICJzdGRvdXQiLCAic3RkZXJyIl0sIGxvZy5pbmZvX21zZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW10sIGxvZy5lcnJvcl9tc2dzKQorCisgICAgQE9FVGVzdElEKDE5MDkpCisgICAgZGVmIHRlc3RfbG9nX3NwbGl0KHNlbGYpOgorICAgICAgICBsb2cgPSBNZW1Mb2dnZXIoKQorICAgICAgICByZXN1bHQgPSBydW5DbWQoImVjaG8gc3Rkb3V0OyBlY2hvIHN0ZGVyciA+JjIiLCBzaGVsbD1UcnVlLCBvdXRwdXRfbG9nPWxvZywgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbIlJ1bm5pbmc6IGVjaG8gc3Rkb3V0OyBlY2hvIHN0ZGVyciA+JjIiLCAic3Rkb3V0Il0sIGxvZy5pbmZvX21zZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWyJzdGRlcnIiXSwgbG9nLmVycm9yX21zZ3MpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9ydW5xZW11LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcnVucWVtdS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40N2Q0MWY1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcnVucWVtdS5weQpAQCAtMCwwICsxLDEzOCBAQAorIworIyBDb3B5cmlnaHQgKGMpIDIwMTcgV2luZCBSaXZlciBTeXN0ZW1zLCBJbmMuCisjCisKK2ltcG9ydCByZQorCitmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZSBpbXBvcnQgT0VTZWxmdGVzdFRlc3RDYXNlCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IGJpdGJha2UsIHJ1bnFlbXUsIGdldF9iYl92YXIKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvci5vZWlkIGltcG9ydCBPRVRlc3RJRAorCitjbGFzcyBSdW5xZW11VGVzdHMoT0VTZWxmdGVzdFRlc3RDYXNlKToKKyAgICAiIiJSdW5xZW11IHRlc3QgY2xhc3MiIiIKKworICAgIGltYWdlX2lzX3JlYWR5ID0gRmFsc2UKKyAgICBkZXBsb3lfZGlyX2ltYWdlID0gJycKKyAgICAjIFdlIG9ubHkgd2FudCB0byBwcmludCBydW5xZW11IHN0ZG91dC9zdGRlcnIgaWYgdGhlcmUgaXMgYSB0ZXN0IGNhc2UgZmFpbHVyZQorICAgIGJ1ZmZlciA9IFRydWUKKworICAgIGRlZiBzZXRVcExvY2FsKHNlbGYpOgorICAgICAgICBzdXBlcihSdW5xZW11VGVzdHMsIHNlbGYpLnNldFVwTG9jYWwoKQorICAgICAgICBzZWxmLnJlY2lwZSA9ICdjb3JlLWltYWdlLW1pbmltYWwnCisgICAgICAgIHNlbGYubWFjaGluZSA9ICAncWVtdXg4Ni02NCcKKyAgICAgICAgc2VsZi5mc3R5cGVzID0gImV4dDQgaXNvIGhkZGltZyB3aWMudm1kayB3aWMucWNvdzIgd2ljLnZkaSIKKyAgICAgICAgc2VsZi5jbWRfY29tbW9uID0gInJ1bnFlbXUgbm9ncmFwaGljIgorCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKAorIiIiCitNQUNISU5FID0gIiVzIgorSU1BR0VfRlNUWVBFUyA9ICIlcyIKKyMgMTAgbWVhbnMgMSBzZWNvbmQKK1NZU0xJTlVYX1RJTUVPVVQgPSAiMTAiCisiIiIKKyUgKHNlbGYubWFjaGluZSwgc2VsZi5mc3R5cGVzKQorICAgICAgICApCisKKyAgICAgICAgaWYgbm90IFJ1bnFlbXVUZXN0cy5pbWFnZV9pc19yZWFkeToKKyAgICAgICAgICAgIFJ1bnFlbXVUZXN0cy5kZXBsb3lfZGlyX2ltYWdlID0gZ2V0X2JiX3ZhcignREVQTE9ZX0RJUl9JTUFHRScpCisgICAgICAgICAgICBiaXRiYWtlKHNlbGYucmVjaXBlKQorICAgICAgICAgICAgUnVucWVtdVRlc3RzLmltYWdlX2lzX3JlYWR5ID0gVHJ1ZQorCisgICAgQE9FVGVzdElEKDIwMDEpCisgICAgZGVmIHRlc3RfYm9vdF9tYWNoaW5lKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHJ1bnFlbXUgbWFjaGluZSIiIgorICAgICAgICBjbWQgPSAiJXMgJXMiICUgKHNlbGYuY21kX2NvbW1vbiwgc2VsZi5tYWNoaW5lKQorICAgICAgICB3aXRoIHJ1bnFlbXUoc2VsZi5yZWNpcGUsIHNzaD1GYWxzZSwgbGF1bmNoX2NtZD1jbWQpIGFzIHFlbXU6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocWVtdS5ydW5uZXIubG9nZ2VkLCAiRmFpbGVkOiAlcyIgJSBjbWQpCisKKyAgICBAT0VUZXN0SUQoMjAwMikKKyAgICBkZWYgdGVzdF9ib290X21hY2hpbmVfZXh0NChzZWxmKToKKyAgICAgICAgIiIiVGVzdCBydW5xZW11IG1hY2hpbmUgZXh0NCIiIgorICAgICAgICBjbWQgPSAiJXMgJXMgZXh0NCIgJSAoc2VsZi5jbWRfY29tbW9uLCBzZWxmLm1hY2hpbmUpCisgICAgICAgIHdpdGggcnVucWVtdShzZWxmLnJlY2lwZSwgc3NoPUZhbHNlLCBsYXVuY2hfY21kPWNtZCkgYXMgcWVtdToKKyAgICAgICAgICAgIHdpdGggb3BlbihxZW11LnFlbXVydW5uZXJsb2cpIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdyb290ZnMuZXh0NCcgaW4gZi5yZWFkKCksICJGYWlsZWQ6ICVzIiAlIGNtZCkKKworICAgIEBPRVRlc3RJRCgyMDAzKQorICAgIGRlZiB0ZXN0X2Jvb3RfbWFjaGluZV9pc28oc2VsZik6CisgICAgICAgICIiIlRlc3QgcnVucWVtdSBtYWNoaW5lIGlzbyIiIgorICAgICAgICBjbWQgPSAiJXMgJXMgaXNvIiAlIChzZWxmLmNtZF9jb21tb24sIHNlbGYubWFjaGluZSkKKyAgICAgICAgd2l0aCBydW5xZW11KHNlbGYucmVjaXBlLCBzc2g9RmFsc2UsIGxhdW5jaF9jbWQ9Y21kKSBhcyBxZW11OgorICAgICAgICAgICAgd2l0aCBvcGVuKHFlbXUucWVtdXJ1bm5lcmxvZykgYXMgZjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoJ21lZGlhPWNkcm9tJyBpbiBmLnJlYWQoKSwgIkZhaWxlZDogJXMiICUgY21kKQorCisgICAgQE9FVGVzdElEKDIwMDQpCisgICAgZGVmIHRlc3RfYm9vdF9yZWNpcGVfaW1hZ2Uoc2VsZik6CisgICAgICAgICIiIlRlc3QgcnVucWVtdSByZWNpcGUtaW1hZ2UiIiIKKyAgICAgICAgY21kID0gIiVzICVzIiAlIChzZWxmLmNtZF9jb21tb24sIHNlbGYucmVjaXBlKQorICAgICAgICB3aXRoIHJ1bnFlbXUoc2VsZi5yZWNpcGUsIHNzaD1GYWxzZSwgbGF1bmNoX2NtZD1jbWQpIGFzIHFlbXU6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocWVtdS5ydW5uZXIubG9nZ2VkLCAiRmFpbGVkOiAlcyIgJSBjbWQpCisKKyAgICBAT0VUZXN0SUQoMjAwNSkKKyAgICBkZWYgdGVzdF9ib290X3JlY2lwZV9pbWFnZV92bWRrKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHJ1bnFlbXUgcmVjaXBlLWltYWdlIHZtZGsiIiIKKyAgICAgICAgY21kID0gIiVzICVzIHdpYy52bWRrIiAlIChzZWxmLmNtZF9jb21tb24sIHNlbGYucmVjaXBlKQorICAgICAgICB3aXRoIHJ1bnFlbXUoc2VsZi5yZWNpcGUsIHNzaD1GYWxzZSwgbGF1bmNoX2NtZD1jbWQpIGFzIHFlbXU6CisgICAgICAgICAgICB3aXRoIG9wZW4ocWVtdS5xZW11cnVubmVybG9nKSBhcyBmOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnZm9ybWF0PXZtZGsnIGluIGYucmVhZCgpLCAiRmFpbGVkOiAlcyIgJSBjbWQpCisKKyAgICBAT0VUZXN0SUQoMjAwNikKKyAgICBkZWYgdGVzdF9ib290X3JlY2lwZV9pbWFnZV92ZGkoc2VsZik6CisgICAgICAgICIiIlRlc3QgcnVucWVtdSByZWNpcGUtaW1hZ2UgdmRpIiIiCisgICAgICAgIGNtZCA9ICIlcyAlcyB3aWMudmRpIiAlIChzZWxmLmNtZF9jb21tb24sIHNlbGYucmVjaXBlKQorICAgICAgICB3aXRoIHJ1bnFlbXUoc2VsZi5yZWNpcGUsIHNzaD1GYWxzZSwgbGF1bmNoX2NtZD1jbWQpIGFzIHFlbXU6CisgICAgICAgICAgICB3aXRoIG9wZW4ocWVtdS5xZW11cnVubmVybG9nKSBhcyBmOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnZm9ybWF0PXZkaScgaW4gZi5yZWFkKCksICJGYWlsZWQ6ICVzIiAlIGNtZCkKKworICAgIEBPRVRlc3RJRCgyMDA3KQorICAgIGRlZiB0ZXN0X2Jvb3RfZGVwbG95KHNlbGYpOgorICAgICAgICAiIiJUZXN0IHJ1bnFlbXUgZGVwbG95X2Rpcl9pbWFnZSIiIgorICAgICAgICBjbWQgPSAiJXMgJXMiICUgKHNlbGYuY21kX2NvbW1vbiwgc2VsZi5kZXBsb3lfZGlyX2ltYWdlKQorICAgICAgICB3aXRoIHJ1bnFlbXUoc2VsZi5yZWNpcGUsIHNzaD1GYWxzZSwgbGF1bmNoX2NtZD1jbWQpIGFzIHFlbXU6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocWVtdS5ydW5uZXIubG9nZ2VkLCAiRmFpbGVkOiAlcyIgJSBjbWQpCisKKyAgICBAT0VUZXN0SUQoMjAwOCkKKyAgICBkZWYgdGVzdF9ib290X2RlcGxveV9oZGRpbWcoc2VsZik6CisgICAgICAgICIiIlRlc3QgcnVucWVtdSBkZXBsb3lfZGlyX2ltYWdlIGhkZGltZyIiIgorICAgICAgICBjbWQgPSAiJXMgJXMgaGRkaW1nIiAlIChzZWxmLmNtZF9jb21tb24sIHNlbGYuZGVwbG95X2Rpcl9pbWFnZSkKKyAgICAgICAgd2l0aCBydW5xZW11KHNlbGYucmVjaXBlLCBzc2g9RmFsc2UsIGxhdW5jaF9jbWQ9Y21kKSBhcyBxZW11OgorICAgICAgICAgICAgd2l0aCBvcGVuKHFlbXUucWVtdXJ1bm5lcmxvZykgYXMgZjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKCdmaWxlPS4qLmhkZGltZycsIGYucmVhZCgpKSwgIkZhaWxlZDogJXMiICUgY21kKQorCisgICAgQE9FVGVzdElEKDIwMDkpCisgICAgZGVmIHRlc3RfYm9vdF9tYWNoaW5lX3NsaXJwKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHJ1bnFlbXUgbWFjaGluZSBzbGlycCIiIgorICAgICAgICBjbWQgPSAiJXMgc2xpcnAgJXMiICUgKHNlbGYuY21kX2NvbW1vbiwgc2VsZi5tYWNoaW5lKQorICAgICAgICB3aXRoIHJ1bnFlbXUoc2VsZi5yZWNpcGUsIHNzaD1GYWxzZSwgbGF1bmNoX2NtZD1jbWQpIGFzIHFlbXU6CisgICAgICAgICAgICB3aXRoIG9wZW4ocWVtdS5xZW11cnVubmVybG9nKSBhcyBmOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnIC1uZXRkZXYgdXNlcicgaW4gZi5yZWFkKCksICJGYWlsZWQ6ICVzIiAlIGNtZCkKKworICAgIEBPRVRlc3RJRCgyMDA5KQorICAgIGRlZiB0ZXN0X2Jvb3RfbWFjaGluZV9zbGlycF9xY293MihzZWxmKToKKyAgICAgICAgIiIiVGVzdCBydW5xZW11IG1hY2hpbmUgc2xpcnAgcWNvdzIiIiIKKyAgICAgICAgY21kID0gIiVzIHNsaXJwIHdpYy5xY293MiAlcyIgJSAoc2VsZi5jbWRfY29tbW9uLCBzZWxmLm1hY2hpbmUpCisgICAgICAgIHdpdGggcnVucWVtdShzZWxmLnJlY2lwZSwgc3NoPUZhbHNlLCBsYXVuY2hfY21kPWNtZCkgYXMgcWVtdToKKyAgICAgICAgICAgIHdpdGggb3BlbihxZW11LnFlbXVydW5uZXJsb2cpIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdmb3JtYXQ9cWNvdzInIGluIGYucmVhZCgpLCAiRmFpbGVkOiAlcyIgJSBjbWQpCisKKyAgICBAT0VUZXN0SUQoMjAxMCkKKyAgICBkZWYgdGVzdF9ib290X3FlbXVfYm9vdChzZWxmKToKKyAgICAgICAgIiIiVGVzdCBydW5xZW11IC9wYXRoL3RvL2ltYWdlLnFlbXVib290LmNvbmYiIiIKKyAgICAgICAgcWVtdWJvb3RfY29uZiA9ICIlcy0lcy5xZW11Ym9vdC5jb25mIiAlIChzZWxmLnJlY2lwZSwgc2VsZi5tYWNoaW5lKQorICAgICAgICBxZW11Ym9vdF9jb25mID0gb3MucGF0aC5qb2luKHNlbGYuZGVwbG95X2Rpcl9pbWFnZSwgcWVtdWJvb3RfY29uZikKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHFlbXVib290X2NvbmYpOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiJXMgbm90IGZvdW5kIiAlIHFlbXVib290X2NvbmYpCisgICAgICAgIGNtZCA9ICIlcyAlcyIgJSAoc2VsZi5jbWRfY29tbW9uLCBxZW11Ym9vdF9jb25mKQorICAgICAgICB3aXRoIHJ1bnFlbXUoc2VsZi5yZWNpcGUsIHNzaD1GYWxzZSwgbGF1bmNoX2NtZD1jbWQpIGFzIHFlbXU6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocWVtdS5ydW5uZXIubG9nZ2VkLCAiRmFpbGVkOiAlcyIgJSBjbWQpCisKKyAgICBAT0VUZXN0SUQoMjAxMSkKKyAgICBkZWYgdGVzdF9ib290X3Jvb3RmcyhzZWxmKToKKyAgICAgICAgIiIiVGVzdCBydW5xZW11IC9wYXRoL3RvL3Jvb3Rmcy5leHQ0IiIiCisgICAgICAgIHJvb3RmcyA9ICIlcy0lcy5leHQ0IiAlIChzZWxmLnJlY2lwZSwgc2VsZi5tYWNoaW5lKQorICAgICAgICByb290ZnMgPSBvcy5wYXRoLmpvaW4oc2VsZi5kZXBsb3lfZGlyX2ltYWdlLCByb290ZnMpCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhyb290ZnMpOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiJXMgbm90IGZvdW5kIiAlIHJvb3RmcykKKyAgICAgICAgY21kID0gIiVzICVzIiAlIChzZWxmLmNtZF9jb21tb24sIHJvb3RmcykKKyAgICAgICAgd2l0aCBydW5xZW11KHNlbGYucmVjaXBlLCBzc2g9RmFsc2UsIGxhdW5jaF9jbWQ9Y21kKSBhcyBxZW11OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHFlbXUucnVubmVyLmxvZ2dlZCwgIkZhaWxlZDogJXMiICUgY21kKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcnVudGltZV90ZXN0LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcnVudGltZV90ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1MjcwYjcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9ydW50aW1lX3Rlc3QucHkKQEAgLTAsMCArMSwyNjcgQEAKK2Zyb20gb2VxYS5zZWxmdGVzdC5jYXNlIGltcG9ydCBPRVNlbGZ0ZXN0VGVzdENhc2UKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kLCBiaXRiYWtlLCBnZXRfYmJfdmFyLCBnZXRfYmJfdmFycywgcnVucWVtdQorZnJvbSBvZXFhLnV0aWxzLnNzaGNvbnRyb2wgaW1wb3J0IFNTSENvbnRyb2wKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvci5vZWlkIGltcG9ydCBPRVRlc3RJRAoraW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCB0ZW1wZmlsZQoraW1wb3J0IHNodXRpbAorCitjbGFzcyBUZXN0RXhwb3J0KE9FU2VsZnRlc3RUZXN0Q2FzZSk6CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBydW5DbWQoInJtIC1yZiAvdG1wL3NkayIpCisgICAgICAgIHN1cGVyKFRlc3RFeHBvcnQsIGNscykudGVhckRvd25DbGFzcygpCisKKyAgICBAT0VUZXN0SUQoMTQ5OSkKKyAgICBkZWYgdGVzdF90ZXN0ZXhwb3J0X2Jhc2ljKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgU3VtbWFyeTogQ2hlY2sgYmFzaWMgdGVzdGV4cG9ydCBmdW5jdGlvbmFsaXR5IHdpdGggb25seSBwaW5nIHRlc3QgZW5hYmxlZC4KKyAgICAgICAgRXhwZWN0ZWQ6IDEuIHRlc3RleHBvcnQgZGlyZWN0b3J5IG11c3QgYmUgY3JlYXRlZC4KKyAgICAgICAgICAgICAgICAgIDIuIHJ1bmV4cG9ydGVkLnB5IG11c3QgcnVuIHdpdGhvdXQgYW55IGVycm9yL2V4Y2VwdGlvbi4KKyAgICAgICAgICAgICAgICAgIDMuIHBpbmcgdGVzdCBtdXN0IHN1Y2NlZWQuCisgICAgICAgIFByb2R1Y3Q6IG9lLWNvcmUKKyAgICAgICAgQXV0aG9yOiBNYXJpYW5vIExvcGV6IDxtYXJpYW5vLmxvcGV6QGludGVsLmNvbT4KKyAgICAgICAgIiIiCisKKyAgICAgICAgZmVhdHVyZXMgPSAnSU5IRVJJVCArPSAidGVzdGV4cG9ydCJcbicKKyAgICAgICAgIyBUaGVzZSBhcmVuJ3QgdGhlIGFjdHVhbCBJUCBhZGRyZXNzZXMgYnV0IHRlc3RleHBvcnQgY2xhc3MgbmVlZHMgc29tZXRoaW5nIGRlZmluZWQKKyAgICAgICAgZmVhdHVyZXMgKz0gJ1RFU1RfU0VSVkVSX0lQID0gIjE5Mi4xNjguNy4xIlxuJworICAgICAgICBmZWF0dXJlcyArPSAnVEVTVF9UQVJHRVRfSVAgPSAiMTkyLjE2OC43LjEiXG4nCisgICAgICAgIGZlYXR1cmVzICs9ICdURVNUX1NVSVRFUyA9ICJwaW5nIlxuJworICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKKworICAgICAgICAjIEJ1aWxkIHRlc2V4cG9ydCBmb3IgY29yZS1pbWFnZS1taW5pbWFsCisgICAgICAgIGJpdGJha2UoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCisgICAgICAgIGJpdGJha2UoJy1jIHRlc3RleHBvcnQgY29yZS1pbWFnZS1taW5pbWFsJykKKworICAgICAgICB0ZXN0ZXhwb3J0X2RpciA9IGdldF9iYl92YXIoJ1RFU1RfRVhQT1JUX0RJUicsICdjb3JlLWltYWdlLW1pbmltYWwnKQorCisgICAgICAgICMgVmVyaWZ5IGlmIFRFU1RfRVhQT1JUX0RJUiB3YXMgY3JlYXRlZAorICAgICAgICBpc2RpciA9IG9zLnBhdGguaXNkaXIodGVzdGV4cG9ydF9kaXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXNkaXIsICdGYWlsZWQgdG8gY3JlYXRlIHRlc3RleHBvcnQgZGlyOiAlcycgJSB0ZXN0ZXhwb3J0X2RpcikKKworICAgICAgICB3aXRoIHJ1bnFlbXUoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpIGFzIHFlbXU6CisgICAgICAgICAgICAjIEF0dGVtcHQgdG8gcnVuIHJ1bmV4cG9ydGVkLnB5IHRvIHBlcmZvcm0gcGluZyB0ZXN0CisgICAgICAgICAgICB0ZXN0X3BhdGggPSBvcy5wYXRoLmpvaW4odGVzdGV4cG9ydF9kaXIsICJvZS10ZXN0IikKKyAgICAgICAgICAgIGRhdGFfZmlsZSA9IG9zLnBhdGguam9pbih0ZXN0ZXhwb3J0X2RpciwgJ2RhdGEnLCAndGVzdGRhdGEuanNvbicpCisgICAgICAgICAgICBtYW5pZmVzdCA9IG9zLnBhdGguam9pbih0ZXN0ZXhwb3J0X2RpciwgJ2RhdGEnLCAnbWFuaWZlc3QnKQorICAgICAgICAgICAgY21kID0gKCIlcyBydW50aW1lIC0tdGVzdC1kYXRhLWZpbGUgJXMgLS1wYWNrYWdlcy1tYW5pZmVzdCAlcyAiCisgICAgICAgICAgICAgICAgICAgIi0tdGFyZ2V0LWlwICVzIC0tc2VydmVyLWlwICVzIC0tcXVpZXQiCisgICAgICAgICAgICAgICAgICAlICh0ZXN0X3BhdGgsIGRhdGFfZmlsZSwgbWFuaWZlc3QsIHFlbXUuaXAsIHFlbXUuc2VydmVyX2lwKSkKKyAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZChjbWQpCisgICAgICAgICAgICAjIFZlcmlmeSBwaW5nIHRlc3Qgd2FzIHN1Y2Nlc2Z1bAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuc3RhdHVzLCAnb2UtdGVzdCBydW50aW1lIHJldHVybmVkIGEgbm9uIDAgc3RhdHVzJykKKworICAgIEBPRVRlc3RJRCgxNjQxKQorICAgIGRlZiB0ZXN0X3Rlc3RleHBvcnRfc2RrKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgU3VtbWFyeTogQ2hlY2sgc2RrIGZ1bmN0aW9uYWxpdHkgZm9yIHRlc3RleHBvcnQuCisgICAgICAgIEV4cGVjdGVkOiAxLiB0ZXN0ZXhwb3J0IGRpcmVjdG9yeSBtdXN0IGJlIGNyZWF0ZWQuCisgICAgICAgICAgICAgICAgICAyLiBTREsgdGFyYmFsbCBtdXN0IGV4aXN0cy4KKyAgICAgICAgICAgICAgICAgIDMuIFVuY29tcHJlc3Npbmcgb2YgdGFyYmFsbCBtdXN0IHN1Y2NlZWQuCisgICAgICAgICAgICAgICAgICA0LiBDaGVjayBpZiB0aGUgU0RLIGRpcmVjdG9yeSBpcyBhZGRlZCB0byBQQVRILgorICAgICAgICAgICAgICAgICAgNS4gUnVuIHRhciBmcm9tIHRoZSBTREsgZGlyZWN0b3J5LgorICAgICAgICBQcm9kdWN0OiBvZS1jb3JlCisgICAgICAgIEF1dGhvcjogTWFyaWFubyBMb3BleiA8bWFyaWFuby5sb3BlekBpbnRlbC5jb20+CisgICAgICAgICIiIgorCisgICAgICAgIGZlYXR1cmVzID0gJ0lOSEVSSVQgKz0gInRlc3RleHBvcnQiXG4nCisgICAgICAgICMgVGhlc2UgYXJlbid0IHRoZSBhY3R1YWwgSVAgYWRkcmVzc2VzIGJ1dCB0ZXN0ZXhwb3J0IGNsYXNzIG5lZWRzIHNvbWV0aGluZyBkZWZpbmVkCisgICAgICAgIGZlYXR1cmVzICs9ICdURVNUX1NFUlZFUl9JUCA9ICIxOTIuMTY4LjcuMSJcbicKKyAgICAgICAgZmVhdHVyZXMgKz0gJ1RFU1RfVEFSR0VUX0lQID0gIjE5Mi4xNjguNy4xIlxuJworICAgICAgICBmZWF0dXJlcyArPSAnVEVTVF9TVUlURVMgPSAicGluZyJcbicKKyAgICAgICAgZmVhdHVyZXMgKz0gJ1RFU1RfRVhQT1JUX1NES19FTkFCTEVEID0gIjEiXG4nCisgICAgICAgIGZlYXR1cmVzICs9ICdURVNUX0VYUE9SVF9TREtfUEFDS0FHRVMgPSAibmF0aXZlc2RrLXRhciJcbicKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZXMpCisKKyAgICAgICAgIyBCdWlsZCB0ZXNleHBvcnQgZm9yIGNvcmUtaW1hZ2UtbWluaW1hbAorICAgICAgICBiaXRiYWtlKCdjb3JlLWltYWdlLW1pbmltYWwnKQorICAgICAgICBiaXRiYWtlKCctYyB0ZXN0ZXhwb3J0IGNvcmUtaW1hZ2UtbWluaW1hbCcpCisKKyAgICAgICAgbmVlZGVkX3ZhcnMgPSBbJ1RFU1RfRVhQT1JUX0RJUicsICdURVNUX0VYUE9SVF9TREtfRElSJywgJ1RFU1RfRVhQT1JUX1NES19OQU1FJ10KKyAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKG5lZWRlZF92YXJzLCAnY29yZS1pbWFnZS1taW5pbWFsJykKKyAgICAgICAgdGVzdGV4cG9ydF9kaXIgPSBiYl92YXJzWydURVNUX0VYUE9SVF9ESVInXQorICAgICAgICBzZGtfZGlyID0gYmJfdmFyc1snVEVTVF9FWFBPUlRfU0RLX0RJUiddCisgICAgICAgIHNka19uYW1lID0gYmJfdmFyc1snVEVTVF9FWFBPUlRfU0RLX05BTUUnXQorCisgICAgICAgICMgQ2hlY2sgZm9yIFNESworICAgICAgICB0YXJiYWxsX25hbWUgPSAiJXMuc2giICUgc2RrX25hbWUKKyAgICAgICAgdGFyYmFsbF9wYXRoID0gb3MucGF0aC5qb2luKHRlc3RleHBvcnRfZGlyLCBzZGtfZGlyLCB0YXJiYWxsX25hbWUpCisgICAgICAgIG1zZyA9ICJDb3VsZG4ndCBmaW5kIFNESyB0YXJiYWxsOiAlcyIgJSB0YXJiYWxsX3BhdGgKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLmlzZmlsZSh0YXJiYWxsX3BhdGgpLCBUcnVlLCBtc2cpCisKKyAgICAgICAgIyBFeHRyYWN0IFNESyBhbmQgcnVuIHRhciBmcm9tIFNESworICAgICAgICByZXN1bHQgPSBydW5DbWQoIiVzIC15IC1kIC90bXAvc2RrIiAlIHRhcmJhbGxfcGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuc3RhdHVzLCAiQ291bGRuJ3QgZXh0cmFjdCBTREsiKQorCisgICAgICAgIGVudl9zY3JpcHQgPSByZXN1bHQub3V0cHV0LnNwbGl0KClbLTFdCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgiLiAlczsgd2hpY2ggdGFyIiAlIGVudl9zY3JpcHQsIHNoZWxsPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzdWx0LnN0YXR1cywgIkNvdWxkbid0IHNldHVwIFNESyBlbnZpcm9ubWVudCIpCisgICAgICAgIGlzX3Nka190YXIgPSBUcnVlIGlmICIvdG1wL3NkayIgaW4gcmVzdWx0Lm91dHB1dCBlbHNlIEZhbHNlCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19zZGtfdGFyLCAiQ291bGRuJ3Qgc2V0dXAgU0RLIGVudmlyb25tZW50IikKKworICAgICAgICB0YXJfc2RrID0gcmVzdWx0Lm91dHB1dAorICAgICAgICByZXN1bHQgPSBydW5DbWQoIiVzIC0tdmVyc2lvbiIgJSB0YXJfc2RrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlc3VsdC5zdGF0dXMsICJDb3VsZG4ndCBydW4gdGFyIGZyb20gU0RLIikKKworCitjbGFzcyBUZXN0SW1hZ2UoT0VTZWxmdGVzdFRlc3RDYXNlKToKKworICAgIEBPRVRlc3RJRCgxNjQ0KQorICAgIGRlZiB0ZXN0X3Rlc3RpbWFnZV9pbnN0YWxsKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgU3VtbWFyeTogQ2hlY2sgaW5zdGFsbCBwYWNrYWdlcyBmdW5jdGlvbmFsaXR5IGZvciB0ZXN0aW1hZ2UvdGVzdGV4cG9ydC4KKyAgICAgICAgRXhwZWN0ZWQ6IDEuIEltcG9ydCB0ZXN0cyBmcm9tIGEgZGlyZWN0b3J5IG90aGVyIHRoYW4gbWV0YS4KKyAgICAgICAgICAgICAgICAgIDIuIENoZWNrIGluc3RhbGwvdW5pbnN0YWxsIG9mIHNvY2F0LgorICAgICAgICBQcm9kdWN0OiBvZS1jb3JlCisgICAgICAgIEF1dGhvcjogTWFyaWFubyBMb3BleiA8bWFyaWFuby5sb3BlekBpbnRlbC5jb20+CisgICAgICAgICIiIgorICAgICAgICBpZiBnZXRfYmJfdmFyKCdESVNUUk8nKSA9PSAncG9reS10aW55JzoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ2NvcmUtaW1hZ2UtZnVsbC1jbWRsaW5lIG5vdCBidWlsZGFibGUgZm9yIHBva3ktdGlueScpCisKKyAgICAgICAgZmVhdHVyZXMgPSAnSU5IRVJJVCArPSAidGVzdGltYWdlIlxuJworICAgICAgICBmZWF0dXJlcyArPSAnVEVTVF9TVUlURVMgPSAicGluZyBzc2ggc2VsZnRlc3QiXG4nCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmVzKQorCisgICAgICAgICMgQnVpbGQgY29yZS1pbWFnZS1zYXRvIGFuZCB0ZXN0aW1hZ2UKKyAgICAgICAgYml0YmFrZSgnY29yZS1pbWFnZS1mdWxsLWNtZGxpbmUgc29jYXQnKQorICAgICAgICBiaXRiYWtlKCctYyB0ZXN0aW1hZ2UgY29yZS1pbWFnZS1mdWxsLWNtZGxpbmUnKQorCisgICAgQE9FVGVzdElEKDE4ODMpCisgICAgZGVmIHRlc3RfdGVzdGltYWdlX2RuZihzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFN1bW1hcnk6IENoZWNrIHBhY2thZ2UgZmVlZHMgZnVuY3Rpb25hbGl0eSBmb3IgZG5mCisgICAgICAgIEV4cGVjdGVkOiAxLiBDaGVjayB0aGF0IHJlbW90ZSBwYWNrYWdlIGZlZWRzIGNhbiBiZSBhY2Nlc3NlZAorICAgICAgICBQcm9kdWN0OiBvZS1jb3JlCisgICAgICAgIEF1dGhvcjogQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIGdldF9iYl92YXIoJ0RJU1RSTycpID09ICdwb2t5LXRpbnknOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnY29yZS1pbWFnZS1mdWxsLWNtZGxpbmUgbm90IGJ1aWxkYWJsZSBmb3IgcG9reS10aW55JykKKworICAgICAgICBmZWF0dXJlcyA9ICdJTkhFUklUICs9ICJ0ZXN0aW1hZ2UiXG4nCisgICAgICAgIGZlYXR1cmVzICs9ICdURVNUX1NVSVRFUyA9ICJwaW5nIHNzaCBkbmZfcnVudGltZSBkbmYuRG5mQmFzaWNUZXN0LnRlc3RfZG5mX2hlbHAiXG4nCisgICAgICAgICMgV2UgZG9uJ3QgeWV0IGtub3cgd2hhdCB0aGUgc2VydmVyIGlwIGFuZCBwb3J0IHdpbGwgYmUgLSB0aGV5IHdpbGwgYmUgcGF0Y2hlZAorICAgICAgICAjIGluIGF0IHRoZSBzdGFydCBvZiB0aGUgb24taW1hZ2UgdGVzdAorICAgICAgICBmZWF0dXJlcyArPSAnUEFDS0FHRV9GRUVEX1VSSVMgPSAiaHR0cDovL2JvZ3VzX2lwOmJvZ3VzX3BvcnQiXG4nCisgICAgICAgIGZlYXR1cmVzICs9ICdFWFRSQV9JTUFHRV9GRUFUVVJFUyArPSAicGFja2FnZS1tYW5hZ2VtZW50IlxuJworICAgICAgICBmZWF0dXJlcyArPSAnUEFDS0FHRV9DTEFTU0VTID0gInBhY2thZ2VfcnBtIlxuJworCisgICAgICAgICMgRW5hYmxlIHBhY2thZ2UgZmVlZCBzaWduaW5nCisgICAgICAgIHNlbGYuZ3BnX2hvbWUgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0ib2VxYS1mZWVkLXNpZ24tIikKKyAgICAgICAgc2lnbmluZ19rZXlfZGlyID0gb3MucGF0aC5qb2luKHNlbGYudGVzdGxheWVyX3BhdGgsICdmaWxlcycsICdzaWduaW5nJykKKyAgICAgICAgcnVuQ21kKCdncGcgLS1iYXRjaCAtLWhvbWVkaXIgJXMgLS1pbXBvcnQgJXMnICUgKHNlbGYuZ3BnX2hvbWUsIG9zLnBhdGguam9pbihzaWduaW5nX2tleV9kaXIsICdrZXkuc2VjcmV0JykpKQorICAgICAgICBmZWF0dXJlcyArPSAnSU5IRVJJVCArPSAic2lnbl9wYWNrYWdlX2ZlZWQiXG4nCisgICAgICAgIGZlYXR1cmVzICs9ICdQQUNLQUdFX0ZFRURfR1BHX05BTUUgPSAidGVzdHVzZXIiXG4nCisgICAgICAgIGZlYXR1cmVzICs9ICdQQUNLQUdFX0ZFRURfR1BHX1BBU1NQSFJBU0VfRklMRSA9ICIlcyJcbicgJSBvcy5wYXRoLmpvaW4oc2lnbmluZ19rZXlfZGlyLCAna2V5LnBhc3NwaHJhc2UnKQorICAgICAgICBmZWF0dXJlcyArPSAnR1BHX1BBVEggPSAiJXMiXG4nICUgc2VsZi5ncGdfaG9tZQorICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKKworICAgICAgICAjIEJ1aWxkIGNvcmUtaW1hZ2Utc2F0byBhbmQgdGVzdGltYWdlCisgICAgICAgIGJpdGJha2UoJ2NvcmUtaW1hZ2UtZnVsbC1jbWRsaW5lIHNvY2F0JykKKyAgICAgICAgYml0YmFrZSgnLWMgdGVzdGltYWdlIGNvcmUtaW1hZ2UtZnVsbC1jbWRsaW5lJykKKworICAgICAgICAjIHJlbW92ZSB0aGUgb2VxYS1mZWVkLXNpZ24gdGVtcG9yYWwgZGlyZWN0b3J5CisgICAgICAgIHNodXRpbC5ybXRyZWUoc2VsZi5ncGdfaG9tZSwgaWdub3JlX2Vycm9ycz1UcnVlKQorCitjbGFzcyBQb3N0aW5zdChPRVNlbGZ0ZXN0VGVzdENhc2UpOgorICAgIEBPRVRlc3RJRCgxNTQwKQorICAgIGRlZiB0ZXN0X3ZlcmlmeV9wb3N0aW5zdChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFN1bW1hcnk6IFRoZSBwdXJwb3NlIG9mIHRoaXMgdGVzdCBpcyB0byB2ZXJpZnkgdGhlIGV4ZWN1dGlvbiBvcmRlciBvZiBwb3N0aW5zdCBCdWd6aWxsYSBJRDogWzUzMTldCisgICAgICAgIEV4cGVjdGVkIDoKKyAgICAgICAgMS4gQ29tcGlsZSBhIG1pbmltYWwgaW1hZ2UuCisgICAgICAgIDIuIFRoZSBjb21waWxlZCBpbWFnZSB3aWxsIGFkZCB0aGUgY3JlYXRlZCBsYXllciB3aXRoIHRoZSByZWNpcGVzIHBvc3RpbnN0WyBhYmRwdF0KKyAgICAgICAgMy4gUnVuIHFlbXV4ODYKKyAgICAgICAgNC4gVmFsaWRhdGUgdGhlIHRhc2sgZXhlY3V0aW9uIG9yZGVyCisgICAgICAgIEF1dGhvcjogRnJhbmNpc2NvIFBlZHJhemEgPGZyYW5jaXNjby5qLnBlZHJhemEuZ29uemFsZXpAaW50ZWwuY29tPgorICAgICAgICAiIiIKKyAgICAgICAgZmVhdHVyZXMgPSAnSU5IRVJJVCArPSAidGVzdGltYWdlIlxuJworICAgICAgICBmZWF0dXJlcyArPSAnQ09SRV9JTUFHRV9FWFRSQV9JTlNUQUxMICs9ICJwb3N0aW5zdC1hdC1yb290ZnMgXAorcG9zdGluc3QtZGVsYXllZC1hIFwKK3Bvc3RpbnN0LWRlbGF5ZWQtYiBcCitwb3N0aW5zdC1kZWxheWVkLWQgXAorcG9zdGluc3QtZGVsYXllZC1wIFwKK3Bvc3RpbnN0LWRlbGF5ZWQtdCBcCisiXG4nCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmVzKQorCisgICAgICAgIGJpdGJha2UoJ2NvcmUtaW1hZ2UtbWluaW1hbCAtZiAnKQorCisgICAgICAgIHBvc3RpbnN0X2xpc3QgPSBbJzEwMC1wb3N0aW5zdC1hdC1yb290ZnMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICcxMDEtcG9zdGluc3QtZGVsYXllZC1hJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnMTAyLXBvc3RpbnN0LWRlbGF5ZWQtYicsCisgICAgICAgICAgICAgICAgICAgICAgICAgJzEwMy1wb3N0aW5zdC1kZWxheWVkLWQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICcxMDQtcG9zdGluc3QtZGVsYXllZC1wJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnMTA1LXBvc3RpbnN0LWRlbGF5ZWQtdCddCisgICAgICAgIHBhdGhfd29ya2RpciA9IGdldF9iYl92YXIoJ1dPUktESVInLCdjb3JlLWltYWdlLW1pbmltYWwnKQorICAgICAgICB3b3Jrc3BhY2VkaXIgPSAndGVzdGltYWdlL3FlbXVfYm9vdF9sb2cnCisgICAgICAgIHdvcmtzcGFjZWRpciA9IG9zLnBhdGguam9pbihwYXRoX3dvcmtkaXIsIHdvcmtzcGFjZWRpcikKKyAgICAgICAgcmV4cCA9IHJlLmNvbXBpbGUoIl5SdW5uaW5nIHBvc3RpbnN0IC4qLyg/UDxwb3N0aW5zdD4uKilcLlwuXC4kIikKKyAgICAgICAgd2l0aCBydW5xZW11KCdjb3JlLWltYWdlLW1pbmltYWwnKSBhcyBxZW11OgorICAgICAgICAgICAgd2l0aCBvcGVuKHdvcmtzcGFjZWRpcikgYXMgZjoKKyAgICAgICAgICAgICAgICBmb3VuZCA9IEZhbHNlCisgICAgICAgICAgICAgICAgaWR4ID0gMAorICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGYucmVhZGxpbmVzKCk6CisgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkucmVwbGFjZSgiXk0iLCIiKQorICAgICAgICAgICAgICAgICAgICBpZiBub3QgbGluZTogIyBUbyBhdm9pZCBlbXB0eSBsaW5lcworICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgbSA9IHJleHAuc2VhcmNoKGxpbmUpCisgICAgICAgICAgICAgICAgICAgIGlmIG06CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvc3RpbnN0X2xpc3RbaWR4XSwgbS5ncm91cCgncG9zdGluc3QnKSwgIkZhaWwiKQorICAgICAgICAgICAgICAgICAgICAgICAgaWR4ID0gaWR4KzEKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBlbGlmIGZvdW5kOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpZHgsIGxlbihwb3N0aW5zdF9saXN0KSwgIk5vdCBmb3VuZCBhbGwgcG9zdGluc3RzIikKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICBAT0VUZXN0SUQoMTU0NSkKKyAgICBkZWYgdGVzdF9wb3N0aW5zdF9yb290ZnNfYW5kX2Jvb3Qoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBTdW1tYXJ5OiAgICAgICAgVGhlIHB1cnBvc2Ugb2YgdGhpcyB0ZXN0IGNhc2UgaXMgdG8gdmVyaWZ5IFBvc3QtaW5zdGFsbGF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRzIGFyZSBjYWxsZWQgd2hlbiByb290ZnMgaXMgY3JlYXRlZCBhbmQgYWxzbyB0ZXN0CisgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IHNjcmlwdCBjYW4gYmUgZGVsYXllZCB0byBydW4gYXQgZmlyc3QgYm9vdC4KKyAgICAgICAgRGVwZW5kZW5jaWVzOiAgIE5BCisgICAgICAgIFN0ZXBzOiAgICAgICAgICAxLiBBZGQgcHJvcGVyIGNvbmZpZ3VyYXRpb24gdG8gbG9jYWwuY29uZiBmaWxlCisgICAgICAgICAgICAgICAgICAgICAgICAyLiBCdWlsZCBhICJjb3JlLWltYWdlLW1pbmltYWwiIGltYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAzLiBWZXJpZnkgdGhhdCBmaWxlIGNyZWF0ZWQgYnkgcG9zdGluc3Rfcm9vdGZzIHJlY2lwZSBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2VudCBvbiByb290ZnMgZGlyLgorICAgICAgICAgICAgICAgICAgICAgICAgNC4gQm9vdCB0aGUgaW1hZ2UgY3JlYXRlZCBvbiBxZW11IGFuZCB2ZXJpZnkgdGhhdCB0aGUgZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZCBieSBwb3N0aW5zdF9ib290IHJlY2lwZSBpcyBwcmVzZW50IG9uIGltYWdlLgorICAgICAgICBFeHBlY3RlZDogICAgICAgVGhlIGZpbGVzIGFyZSBzdWNjZXNzZnVsbHkgY3JlYXRlZCBkdXJpbmcgcm9vdGZzIGFuZCBib290CisgICAgICAgICAgICAgICAgICAgICAgICB0aW1lIGZvciAzIGRpZmZlcmVudCBwYWNrYWdlIG1hbmFnZXJzOiBycG0saXBrLGRlYiBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpbml0aWFsaXphdGlvbiBtYW5hZ2Vyczogc3lzdmluaXQgYW5kIHN5c3RlbWQuCisKKyAgICAgICAgIiIiCisgICAgICAgIGZpbGVfcm9vdGZzX25hbWUgPSAidGhpcy13YXMtY3JlYXRlZC1hdC1yb290ZnN0aW1lIgorICAgICAgICBmaWxlYm9vdF9uYW1lID0gInRoaXMtd2FzLWNyZWF0ZWQtYXQtZmlyc3QtYm9vdCIKKyAgICAgICAgcm9vdGZzX3BrZyA9ICdwb3N0aW5zdC1hdC1yb290ZnMnCisgICAgICAgIGJvb3RfcGtnID0gJ3Bvc3RpbnN0LWRlbGF5ZWQtYScKKworICAgICAgICBmb3IgaW5pdF9tYW5hZ2VyIGluICgic3lzdmluaXQiLCAic3lzdGVtZCIpOgorICAgICAgICAgICAgZm9yIGNsYXNzZXMgaW4gKCJwYWNrYWdlX3JwbSIsICJwYWNrYWdlX2RlYiIsICJwYWNrYWdlX2lwayIpOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGluaXRfbWFuYWdlcj1pbml0X21hbmFnZXIsIHBhY2thZ2VfY2xhc3M9Y2xhc3Nlcyk6CisgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzID0gJ01BQ0hJTkUgPSAicWVtdXg4NiJcbicKKyAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMgKz0gJ0NPUkVfSU1BR0VfRVhUUkFfSU5TVEFMTCArPSAiJXMgJXMgIlxuJyUgKHJvb3Rmc19wa2csIGJvb3RfcGtnKQorICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcyArPSAnSU1BR0VfRkVBVFVSRVMgKz0gInBhY2thZ2UtbWFuYWdlbWVudCBlbXB0eS1yb290LXBhc3N3b3JkIlxuJworICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcyArPSAnUEFDS0FHRV9DTEFTU0VTID0gIiVzIlxuJyAlIGNsYXNzZXMKKyAgICAgICAgICAgICAgICAgICAgaWYgaW5pdF9tYW5hZ2VyID09ICJzeXN0ZW1kIjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzICs9ICdESVNUUk9fRkVBVFVSRVNfYXBwZW5kID0gIiBzeXN0ZW1kIlxuJworICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMgKz0gJ1ZJUlRVQUwtUlVOVElNRV9pbml0X21hbmFnZXIgPSAic3lzdGVtZCJcbicKKyAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzICs9ICdESVNUUk9fRkVBVFVSRVNfQkFDS0ZJTExfQ09OU0lERVJFRCA9ICJzeXN2aW5pdCJcbicKKyAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzICs9ICdWSVJUVUFMLVJVTlRJTUVfaW5pdHNjcmlwdHMgPSAiIlxuJworICAgICAgICAgICAgICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKKworICAgICAgICAgICAgICAgICAgICBiaXRiYWtlKCdjb3JlLWltYWdlLW1pbmltYWwnKQorCisgICAgICAgICAgICAgICAgICAgIGZpbGVfcm9vdGZzX2NyZWF0ZWQgPSBvcy5wYXRoLmpvaW4oZ2V0X2JiX3ZhcignSU1BR0VfUk9PVEZTJywgImNvcmUtaW1hZ2UtbWluaW1hbCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVfcm9vdGZzX25hbWUpCisgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gb3MucGF0aC5pc2ZpbGUoZmlsZV9yb290ZnNfY3JlYXRlZCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZvdW5kLCAiRmlsZSAlcyB3YXMgbm90IGNyZWF0ZWQgYXQgcm9vdGZzIHRpbWUgYnkgJXMiICUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpbGVfcm9vdGZzX25hbWUsIHJvb3Rmc19wa2cpKQorCisgICAgICAgICAgICAgICAgICAgIHRlc3Rjb21tYW5kID0gJ2xzIC9ldGMvJyArIGZpbGVib290X25hbWUKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBydW5xZW11KCdjb3JlLWltYWdlLW1pbmltYWwnKSBhcyBxZW11OgorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBxZW11LnJ1bl9zZXJpYWwoIi1mIC9ldGMvIiArIGZpbGVib290X25hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMCwgJ0ZpbGUgJXMgd2FzIG5vdCBjcmVhdGVkIGF0IGZpcnN0IGJvb3QgKCVzKScgJSAoZmlsZWJvb3RfbmFtZSwgb3V0cHV0KSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3NlbGZ0ZXN0LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc2VsZnRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGIzY2IxNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3NlbGZ0ZXN0LnB5CkBAIC0wLDAgKzEsNTEgQEAKK2ltcG9ydCBpbXBvcnRsaWIKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kCitpbXBvcnQgb2VxYS5zZWxmdGVzdAorZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2UgaW1wb3J0IE9FU2VsZnRlc3RUZXN0Q2FzZQorZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLm9laWQgaW1wb3J0IE9FVGVzdElECisKK2NsYXNzIEV4dGVybmFsTGF5ZXIoT0VTZWxmdGVzdFRlc3RDYXNlKToKKworICAgIEBPRVRlc3RJRCgxODg1KQorICAgIGRlZiB0ZXN0X2xpc3RfaW1wb3J0ZWQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBTdW1tYXJ5OiBDaGVja3MgZnVuY3Rpb25hbGl0eSB0byBpbXBvcnQgdGVzdHMgZnJvbSBvdGhlciBsYXllcnMuCisgICAgICAgIEV4cGVjdGVkOiAxLiBGaWxlICJleHRlcm5hbC1sYXllci5weSIgbXVzdCBiZSBpbgorICAgICAgICBvZXFhLnNlbGZ0ZXN0Ll9fcGF0aF9fCisgICAgICAgICAgICAgICAgICAyLiB0ZXN0X3VuY29uZGl0aW9uYWxfcGFzIG1ldGhvZCBtdXN0IGV4aXN0cworICAgICAgICAgICAgICAgICAgICAgaW4gSW1wb3J0ZWRUZXN0cyBjbGFzcworICAgICAgICBQcm9kdWN0OiBvZS1jb3JlCisgICAgICAgIEF1dGhvcjogTWFyaWFubyBMb3BleiA8bWFyaWFuby5sb3BlekBpbnRlbC5jb20+CisgICAgICAgICIiIgorCisgICAgICAgIHRlc3RfZmlsZSA9ICJleHRlcm5hbC1sYXllci5weSIKKyAgICAgICAgdGVzdF9tb2R1bGUgPSAib2VxYS5zZWxmdGVzdC5jYXNlcy5leHRlcm5hbC1sYXllciIKKyAgICAgICAgbWV0aG9kX25hbWUgPSAidGVzdF91bmNvbmRpdGlvbmFsX3Bhc3MiCisKKyAgICAgICAgIyBDaGVjayBpZiAiZXh0ZXJuYWwtbGF5ZXIucHkiIGlzIGluIG9lcWEgcGF0aAorICAgICAgICBmb3VuZF9maWxlID0gc2VhcmNoX3Rlc3RfZmlsZSh0ZXN0X2ZpbGUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmb3VuZF9maWxlLCBtc2c9IkNhbid0IGZpbmQgJXMgaW4gdGhlIG9lcWEgcGF0aCIgJSB0ZXN0X2ZpbGUpCisKKyAgICAgICAgIyBJbXBvcnQgb2VxYS5zZWxmdGVzdC5leHRlcm5hbC1sYXllciBtb2R1bGUgYW5kIHNlYXJjaCBmb3IKKyAgICAgICAgIyB0ZXN0X3VuY29uZGl0aW9uYWxfcGFzcyBtZXRob2Qgb2YgSW1wb3J0ZWRUZXN0cyBjbGFzcworICAgICAgICBmb3VuZF9tZXRob2QgPSBzZWFyY2hfbWV0aG9kKHRlc3RfbW9kdWxlLCBtZXRob2RfbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1ldGhvZF9uYW1lLCBtc2c9IkNhbid0IGZpbmQgJXMgbWV0aG9kIiAlIG1ldGhvZF9uYW1lKQorCitkZWYgc2VhcmNoX3Rlc3RfZmlsZShmaWxlX25hbWUpOgorICAgIGZvciBsYXllcl9wYXRoIGluIG9lcWEuc2VsZnRlc3QuX19wYXRoX186CisgICAgICAgIGZvciBfLCBfLCBmaWxlcyBpbiBvcy53YWxrKGxheWVyX3BhdGgpOgorICAgICAgICAgICAgZm9yIGYgaW4gZmlsZXM6CisgICAgICAgICAgICAgICAgaWYgZiA9PSBmaWxlX25hbWU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgcmV0dXJuIEZhbHNlCisKK2RlZiBzZWFyY2hfbWV0aG9kKG1vZHVsZSwgbWV0aG9kKToKKyAgICBtb2RsaWIgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShtb2R1bGUpCisgICAgZm9yIHZhciBpbiB2YXJzKG1vZGxpYik6CisgICAgICAgIGtsYXNzID0gdmFycyhtb2RsaWIpW3Zhcl0KKyAgICAgICAgaWYgaXNpbnN0YW5jZShrbGFzcywgdHlwZShPRVNlbGZ0ZXN0VGVzdENhc2UpKSBhbmQgaXNzdWJjbGFzcyhrbGFzcywgT0VTZWxmdGVzdFRlc3RDYXNlKToKKyAgICAgICAgICAgIGZvciBtIGluIGRpcihrbGFzcyk6CisgICAgICAgICAgICAgICAgaWYgbSA9PSBtZXRob2Q6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgcmV0dXJuIEZhbHNlCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3NpZ25pbmcucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zaWduaW5nLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzZDFhODIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zaWduaW5nLnB5CkBAIC0wLDAgKzEsMTg3IEBACitmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZSBpbXBvcnQgT0VTZWxmdGVzdFRlc3RDYXNlCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZCwgYml0YmFrZSwgZ2V0X2JiX3ZhciwgZ2V0X2JiX3ZhcnMKK2ltcG9ydCBvcworaW1wb3J0IGdsb2IKK2ltcG9ydCByZQoraW1wb3J0IHNodXRpbAoraW1wb3J0IHRlbXBmaWxlCitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3Iub2VpZCBpbXBvcnQgT0VUZXN0SUQKK2Zyb20gb2VxYS51dGlscy5mdG9vbHMgaW1wb3J0IHdyaXRlX2ZpbGUKKworCitjbGFzcyBTaWduaW5nKE9FU2VsZnRlc3RUZXN0Q2FzZSk6CisKKyAgICBncGdfZGlyID0gIiIKKyAgICBwdWJfa2V5X3BhdGggPSAiIgorICAgIHNlY3JldF9rZXlfcGF0aCA9ICIiCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICBzdXBlcihTaWduaW5nLCBjbHMpLnNldFVwQ2xhc3MoKQorICAgICAgICAjIENoZWNrIHRoYXQgd2UgY2FuIGZpbmQgdGhlIGdwZyBiaW5hcnkgYW5kIGZhaWwgZWFybHkgaWYgd2UgY2FuJ3QKKyAgICAgICAgaWYgbm90IHNodXRpbC53aGljaCgiZ3BnIik6CisgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigiVGhpcyB0ZXN0IG5lZWRzIEdudVBHIikKKworICAgICAgICBjbHMuZ3BnX2RpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSJvZXFhLXNpZ25pbmctIikKKworICAgICAgICBjbHMucHViX2tleV9wYXRoID0gb3MucGF0aC5qb2luKGNscy50ZXN0bGF5ZXJfcGF0aCwgJ2ZpbGVzJywgJ3NpZ25pbmcnLCAia2V5LnB1YiIpCisgICAgICAgIGNscy5zZWNyZXRfa2V5X3BhdGggPSBvcy5wYXRoLmpvaW4oY2xzLnRlc3RsYXllcl9wYXRoLCAnZmlsZXMnLCAnc2lnbmluZycsICJrZXkuc2VjcmV0IikKKworICAgICAgICBydW5DbWQoJ2dwZyAtLWJhdGNoIC0taG9tZWRpciAlcyAtLWltcG9ydCAlcyAlcycgJSAoY2xzLmdwZ19kaXIsIGNscy5wdWJfa2V5X3BhdGgsIGNscy5zZWNyZXRfa2V5X3BhdGgpKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgc2h1dGlsLnJtdHJlZShjbHMuZ3BnX2RpciwgaWdub3JlX2Vycm9ycz1UcnVlKQorCisgICAgQE9FVGVzdElEKDEzNjIpCisgICAgZGVmIHRlc3Rfc2lnbmluZ19wYWNrYWdlcyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFN1bW1hcnk6ICAgICBUZXN0IHRoYXQgcGFja2FnZXMgY2FuIGJlIHNpZ25lZCBpbiB0aGUgcGFja2FnZSBmZWVkCisgICAgICAgIEV4cGVjdGVkOiAgICBQYWNrYWdlIHNob3VsZCBiZSBzaWduZWQgd2l0aCB0aGUgY29ycmVjdCBrZXkKKyAgICAgICAgRXhwZWN0ZWQ6ICAgIEltYWdlcyBjYW4gYmUgY3JlYXRlZCBmcm9tIHNpZ25lZCBwYWNrYWdlcworICAgICAgICBQcm9kdWN0OiAgICAgb2UtY29yZQorICAgICAgICBBdXRob3I6ICAgICAgRGFuaWVsIElzdHJhdGUgPGRhbmllbC5hbGV4YW5kcnV4LmlzdHJhdGVAaW50ZWwuY29tPgorICAgICAgICBBdXRob3I6ICAgICAgQWxleGFuZGVyIEthbmF2aW4gPGFsZXhhbmRlci5rYW5hdmluQGludGVsLmNvbT4KKyAgICAgICAgQXV0b21hdGVkQnk6IERhbmllbCBJc3RyYXRlIDxkYW5pZWwuYWxleGFuZHJ1eC5pc3RyYXRlQGludGVsLmNvbT4KKyAgICAgICAgIiIiCisgICAgICAgIGltcG9ydCBvZS5wYWNrYWdlZGF0YQorCisgICAgICAgIHBhY2thZ2VfY2xhc3NlcyA9IGdldF9iYl92YXIoJ1BBQ0tBR0VfQ0xBU1NFUycpCisgICAgICAgIGlmICdwYWNrYWdlX3JwbScgbm90IGluIHBhY2thZ2VfY2xhc3NlczoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ1RoaXMgdGVzdCByZXF1aXJlcyBSUE0gUGFja2FnaW5nLicpCisKKyAgICAgICAgdGVzdF9yZWNpcGUgPSAnZWQnCisKKyAgICAgICAgZmVhdHVyZSA9ICdJTkhFUklUICs9ICJzaWduX3JwbSJcbicKKyAgICAgICAgZmVhdHVyZSArPSAnUlBNX0dQR19QQVNTUEhSQVNFID0gInRlc3QxMjMiXG4nCisgICAgICAgIGZlYXR1cmUgKz0gJ1JQTV9HUEdfTkFNRSA9ICJ0ZXN0dXNlciJcbicKKyAgICAgICAgZmVhdHVyZSArPSAnR1BHX1BBVEggPSAiJXMiXG4nICUgc2VsZi5ncGdfZGlyCisKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZSkKKworICAgICAgICBiaXRiYWtlKCctYyBjbGVhbiAlcycgJSB0ZXN0X3JlY2lwZSkKKyAgICAgICAgYml0YmFrZSgnLWYgLWMgcGFja2FnZV93cml0ZV9ycG0gJXMnICUgdGVzdF9yZWNpcGUpCisKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZSAtYyBjbGVhbiAlcycgJSB0ZXN0X3JlY2lwZSkKKworICAgICAgICBuZWVkZWRfdmFycyA9IFsnUEtHREFUQV9ESVInLCAnREVQTE9ZX0RJUl9SUE0nLCAnUEFDS0FHRV9BUkNIJywgJ1NUQUdJTkdfQklORElSX05BVElWRSddCisgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhuZWVkZWRfdmFycywgdGVzdF9yZWNpcGUpCisgICAgICAgIHBrZ2RhdGFkaXIgPSBiYl92YXJzWydQS0dEQVRBX0RJUiddCisgICAgICAgIHBrZ2RhdGEgPSBvZS5wYWNrYWdlZGF0YS5yZWFkX3BrZ2RhdGFmaWxlKHBrZ2RhdGFkaXIgKyAiL3J1bnRpbWUvZWQiKQorICAgICAgICBpZiAnUEtHRScgaW4gcGtnZGF0YToKKyAgICAgICAgICAgIHBmID0gcGtnZGF0YVsnUE4nXSArICItIiArIHBrZ2RhdGFbJ1BLR0UnXSArIHBrZ2RhdGFbJ1BLR1YnXSArICctJyArIHBrZ2RhdGFbJ1BLR1InXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcGYgPSBwa2dkYXRhWydQTiddICsgIi0iICsgcGtnZGF0YVsnUEtHViddICsgJy0nICsgcGtnZGF0YVsnUEtHUiddCisgICAgICAgIGRlcGxveV9kaXJfcnBtID0gYmJfdmFyc1snREVQTE9ZX0RJUl9SUE0nXQorICAgICAgICBwYWNrYWdlX2FyY2ggPSBiYl92YXJzWydQQUNLQUdFX0FSQ0gnXS5yZXBsYWNlKCctJywgJ18nKQorICAgICAgICBzdGFnaW5nX2JpbmRpcl9uYXRpdmUgPSBiYl92YXJzWydTVEFHSU5HX0JJTkRJUl9OQVRJVkUnXQorCisgICAgICAgIHBrZ19kZXBsb3kgPSBvcy5wYXRoLmpvaW4oZGVwbG95X2Rpcl9ycG0sIHBhY2thZ2VfYXJjaCwgJy4nLmpvaW4oKHBmLCBwYWNrYWdlX2FyY2gsICdycG0nKSkpCisKKyAgICAgICAgIyBVc2UgYSB0ZW1wb3JhcnkgcnBtZGIKKyAgICAgICAgcnBtZGIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nb2VxYS1ycG1kYicpCisKKyAgICAgICAgcnVuQ21kKCclcy9ycG1rZXlzIC0tZGVmaW5lICJfZGJwYXRoICVzIiAtLWltcG9ydCAlcycgJQorICAgICAgICAgICAgICAgKHN0YWdpbmdfYmluZGlyX25hdGl2ZSwgcnBtZGIsIHNlbGYucHViX2tleV9wYXRoKSkKKworICAgICAgICByZXQgPSBydW5DbWQoJyVzL3JwbWtleXMgLS1kZWZpbmUgIl9kYnBhdGggJXMiIC0tY2hlY2tzaWcgJXMnICUKKyAgICAgICAgICAgICAgICAgICAgIChzdGFnaW5nX2JpbmRpcl9uYXRpdmUsIHJwbWRiLCBwa2dfZGVwbG95KSkKKyAgICAgICAgIyB0bXAvZGVwbG95L3JwbS9pNTg2L2VkLTEuOS1yMC5pNTg2LnJwbTogcnNhIHNoYTEgbWQ1IE9LCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3JzYSBzaGExIChtZDUpIHBncCBtZDUgT0snLCByZXQub3V0cHV0LCAnUGFja2FnZSBzaWduZWQgaW5jb3JyZWN0bHkuJykKKyAgICAgICAgc2h1dGlsLnJtdHJlZShycG1kYikKKworICAgICAgICAjQ2hlY2sgdGhhdCBhbiBpbWFnZSBjYW4gYmUgYnVpbHQgZnJvbSBzaWduZWQgcGFja2FnZXMKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZSAtYyBjbGVhbiBjb3JlLWltYWdlLW1pbmltYWwnKQorICAgICAgICBiaXRiYWtlKCctYyBjbGVhbiBjb3JlLWltYWdlLW1pbmltYWwnKQorICAgICAgICBiaXRiYWtlKCdjb3JlLWltYWdlLW1pbmltYWwnKQorCisKKyAgICBAT0VUZXN0SUQoMTM4MikKKyAgICBkZWYgdGVzdF9zaWduaW5nX3NzdGF0ZV9hcmNoaXZlKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgU3VtbWFyeTogICAgIFRlc3QgdGhhdCBzc3RhdGUgYXJjaGl2ZXMgY2FuIGJlIHNpZ25lZAorICAgICAgICBFeHBlY3RlZDogICAgUGFja2FnZSBzaG91bGQgYmUgc2lnbmVkIHdpdGggdGhlIGNvcnJlY3Qga2V5CisgICAgICAgIFByb2R1Y3Q6ICAgICBvZS1jb3JlCisgICAgICAgIEF1dGhvcjogICAgICBEYW5pZWwgSXN0cmF0ZSA8ZGFuaWVsLmFsZXhhbmRydXguaXN0cmF0ZUBpbnRlbC5jb20+CisgICAgICAgIEF1dG9tYXRlZEJ5OiBEYW5pZWwgSXN0cmF0ZSA8ZGFuaWVsLmFsZXhhbmRydXguaXN0cmF0ZUBpbnRlbC5jb20+CisgICAgICAgICIiIgorCisgICAgICAgIHRlc3RfcmVjaXBlID0gJ2VkJworCisgICAgICAgIGJ1aWxkZGlyID0gb3MuZW52aXJvbi5nZXQoJ0JVSUxERElSJykKKyAgICAgICAgc3N0YXRlZGlyID0gb3MucGF0aC5qb2luKGJ1aWxkZGlyLCAndGVzdC1zc3RhdGUnKQorCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UgLWMgY2xlYW4gJXMnICUgdGVzdF9yZWNpcGUpCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ3JtIC1yZiAlcycgJSBzc3RhdGVkaXIpCisKKyAgICAgICAgZmVhdHVyZSA9ICdTU1RBVEVfU0lHX0tFWSA/PSAidGVzdHVzZXIiXG4nCisgICAgICAgIGZlYXR1cmUgKz0gJ1NTVEFURV9TSUdfUEFTU1BIUkFTRSA/PSAidGVzdDEyMyJcbicKKyAgICAgICAgZmVhdHVyZSArPSAnU1NUQVRFX1ZFUklGWV9TSUcgPz0gIjEiXG4nCisgICAgICAgIGZlYXR1cmUgKz0gJ0dQR19QQVRIID0gIiVzIlxuJyAlIHNlbGYuZ3BnX2RpcgorICAgICAgICBmZWF0dXJlICs9ICdTU1RBVEVfRElSID0gIiVzIlxuJyAlIHNzdGF0ZWRpcgorICAgICAgICAjIEFueSBtaXJyb3IgbWlnaHQgaGF2ZSBwYXJ0aWFsIHNzdGF0ZSB3aXRob3V0IC5zaWcgZmlsZXMsIHRyaWdnZXJpbmcgZmFpbHVyZXMKKyAgICAgICAgZmVhdHVyZSArPSAnU1NUQVRFX01JUlJPUlNfZm9yY2V2YXJpYWJsZSA9ICIiXG4nCisKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZSkKKworICAgICAgICBiaXRiYWtlKCctYyBjbGVhbiAlcycgJSB0ZXN0X3JlY2lwZSkKKyAgICAgICAgYml0YmFrZSh0ZXN0X3JlY2lwZSkKKworICAgICAgICByZWNpcGVfc2lnID0gZ2xvYi5nbG9iKHNzdGF0ZWRpciArICcvKi8qOmVkOipfcGFja2FnZS50Z3ouc2lnJykKKyAgICAgICAgcmVjaXBlX3RneiA9IGdsb2IuZ2xvYihzc3RhdGVkaXIgKyAnLyovKjplZDoqX3BhY2thZ2UudGd6JykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZWNpcGVfc2lnKSwgMSwgJ0ZhaWxlZCB0byBmaW5kIC5zaWcgZmlsZS4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZWNpcGVfdGd6KSwgMSwgJ0ZhaWxlZCB0byBmaW5kIC50Z3ogZmlsZS4nKQorCisgICAgICAgIHJldCA9IHJ1bkNtZCgnZ3BnIC0taG9tZWRpciAlcyAtLXZlcmlmeSAlcyAlcycgJSAoc2VsZi5ncGdfZGlyLCByZWNpcGVfc2lnWzBdLCByZWNpcGVfdGd6WzBdKSkKKyAgICAgICAgIyBncGc6IFNpZ25hdHVyZSBtYWRlIFRodSAyMiBPY3QgMjAxNSAwMTo0NTowOSBQTSBFRVNUIHVzaW5nIFJTQSBrZXkgSUQgNjFFRUZCMzAKKyAgICAgICAgIyBncGc6IEdvb2Qgc2lnbmF0dXJlIGZyb20gInRlc3R1c2VyIChub2NvbW1lbnQpIDx0ZXN0dXNlckBlbWFpbC5jb20+IgorICAgICAgICBzZWxmLmFzc2VydEluKCdncGc6IEdvb2Qgc2lnbmF0dXJlIGZyb20nLCByZXQub3V0cHV0LCAnUGFja2FnZSBzaWduZWQgaW5jb3JyZWN0bHkuJykKKworCitjbGFzcyBMb2NrZWRTaWduYXR1cmVzKE9FU2VsZnRlc3RUZXN0Q2FzZSk6CisKKyAgICBAT0VUZXN0SUQoMTQyMCkKKyAgICBkZWYgdGVzdF9sb2NrZWRfc2lnbmF0dXJlcyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFN1bW1hcnk6ICAgICBUZXN0IGxvY2tlZCBzaWduYXR1cmUgbWVjaGFuaXNtCisgICAgICAgIEV4cGVjdGVkOiAgICBMb2NrZWQgc2lnbmF0dXJlcyB3aWxsIHByZXZlbnQgdGFzayB0byBydW4KKyAgICAgICAgUHJvZHVjdDogICAgIG9lLWNvcmUKKyAgICAgICAgQXV0aG9yOiAgICAgIERhbmllbCBJc3RyYXRlIDxkYW5pZWwuYWxleGFuZHJ1eC5pc3RyYXRlQGludGVsLmNvbT4KKyAgICAgICAgQXV0b21hdGVkQnk6IERhbmllbCBJc3RyYXRlIDxkYW5pZWwuYWxleGFuZHJ1eC5pc3RyYXRlQGludGVsLmNvbT4KKyAgICAgICAgIiIiCisKKyAgICAgICAgdGVzdF9yZWNpcGUgPSAnZWQnCisgICAgICAgIGxvY2tlZF9zaWdzX2ZpbGUgPSAnbG9ja2VkLXNpZ3MuaW5jJworCisgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ3JtIC1mICVzJyAlIG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCBsb2NrZWRfc2lnc19maWxlKSkKKworICAgICAgICBiaXRiYWtlKHRlc3RfcmVjaXBlKQorICAgICAgICAjIEdlbmVyYXRlIGxvY2tlZCBzaWdzIGluY2x1ZGUgZmlsZQorICAgICAgICBiaXRiYWtlKCctUyBub25lICVzJyAlIHRlc3RfcmVjaXBlKQorCisgICAgICAgIGZlYXR1cmUgPSAncmVxdWlyZSAlc1xuJyAlIGxvY2tlZF9zaWdzX2ZpbGUKKyAgICAgICAgZmVhdHVyZSArPSAnU0lHR0VOX0xPQ0tFRFNJR1NfVEFTS1NJR19DSEVDSyA9ICJ3YXJuIlxuJworICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlKQorCisgICAgICAgICMgQnVpbGQgYSBsb2NrZWQgcmVjaXBlCisgICAgICAgIGJpdGJha2UodGVzdF9yZWNpcGUpCisKKyAgICAgICAgIyBNYWtlIGEgY2hhbmdlIHRoYXQgc2hvdWxkIGNhdXNlIHRoZSBsb2NrZWQgdGFzayBzaWduYXR1cmUgdG8gY2hhbmdlCisgICAgICAgIHJlY2lwZV9hcHBlbmRfZmlsZSA9IHRlc3RfcmVjaXBlICsgJ18nICsgZ2V0X2JiX3ZhcignUFYnLCB0ZXN0X3JlY2lwZSkgKyAnLmJiYXBwZW5kJworICAgICAgICByZWNpcGVfYXBwZW5kX3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi50ZXN0bGF5ZXJfcGF0aCwgJ3JlY2lwZXMtdGVzdCcsIHRlc3RfcmVjaXBlLCByZWNpcGVfYXBwZW5kX2ZpbGUpCisgICAgICAgIGZlYXR1cmUgPSAnU1VNTUFSWSArPSAidGVzdCBsb2NrZWQgc2lnbmF0dXJlIlxuJworCisgICAgICAgIG9zLm1rZGlyKG9zLnBhdGguam9pbihzZWxmLnRlc3RsYXllcl9wYXRoLCAncmVjaXBlcy10ZXN0JywgdGVzdF9yZWNpcGUpKQorICAgICAgICB3cml0ZV9maWxlKHJlY2lwZV9hcHBlbmRfcGF0aCwgZmVhdHVyZSkKKworICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdybSAtcmYgJXMnICUgb3MucGF0aC5qb2luKHNlbGYudGVzdGxheWVyX3BhdGgsICdyZWNpcGVzLXRlc3QnLCB0ZXN0X3JlY2lwZSkpCisKKyAgICAgICAgIyBCdWlsZCB0aGUgcmVjaXBlIGFnYWluCisgICAgICAgIHJldCA9IGJpdGJha2UodGVzdF9yZWNpcGUpCisKKyAgICAgICAgIyBWZXJpZnkgeW91IGdldCB0aGUgd2FybmluZyBhbmQgdGhhdCB0aGUgcmVhbCB0YXNrICppc24ndCogcnVuIChpLmUuIHRoZSBsb2NrZWQgc2lnbmF0dXJlIGhhcyB3b3JrZWQpCisgICAgICAgIHBhdHQgPSByJ1dBUk5JTkc6IFRoZSAlczpkb19wYWNrYWdlIHNpZyBpcyBjb21wdXRlZCB0byBiZSBcUyssIGJ1dCB0aGUgc2lnIGlzIGxvY2tlZCB0byBcUysgaW4gU0lHR0VOX0xPQ0tFRFNJR1NcUysnICUgdGVzdF9yZWNpcGUKKyAgICAgICAgZm91bmRfd2FybiA9IHJlLnNlYXJjaChwYXR0LCByZXQub3V0cHV0KQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGZvdW5kX3dhcm4sICJEaWRuJ3QgZmluZCB0aGUgZXhwZWN0ZWQgd2FybmluZyBtZXNzYWdlLiBPdXRwdXQ6ICVzIiAlIHJldC5vdXRwdXQpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zc3RhdGUucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zc3RhdGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmMyZmRiZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3NzdGF0ZS5weQpAQCAtMCwwICsxLDYzIEBACitpbXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBzaHV0aWwKKworaW1wb3J0IG9lcWEudXRpbHMuZnRvb2xzIGFzIGZ0b29scworZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2UgaW1wb3J0IE9FU2VsZnRlc3RUZXN0Q2FzZQorZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQsIGJpdGJha2UsIGdldF9iYl92YXJzLCBnZXRfdGVzdF9sYXllcgorCisKK2NsYXNzIFNTdGF0ZUJhc2UoT0VTZWxmdGVzdFRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcExvY2FsKHNlbGYpOgorICAgICAgICBzdXBlcihTU3RhdGVCYXNlLCBzZWxmKS5zZXRVcExvY2FsKCkKKyAgICAgICAgc2VsZi50ZW1wX3NzdGF0ZV9sb2NhdGlvbiA9IE5vbmUKKyAgICAgICAgbmVlZGVkX3ZhcnMgPSBbJ1NTVEFURV9ESVInLCAnTkFUSVZFTFNCU1RSSU5HJywgJ1RDTElCQycsICdUVU5FX0FSQ0gnLAorICAgICAgICAgICAgICAgICAgICAgICAnVE9QRElSJywgJ1RBUkdFVF9WRU5ET1InLCAnVEFSR0VUX09TJ10KKyAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKG5lZWRlZF92YXJzKQorICAgICAgICBzZWxmLnNzdGF0ZV9wYXRoID0gYmJfdmFyc1snU1NUQVRFX0RJUiddCisgICAgICAgIHNlbGYuaG9zdGRpc3RybyA9IGJiX3ZhcnNbJ05BVElWRUxTQlNUUklORyddCisgICAgICAgIHNlbGYudGNsaWJjID0gYmJfdmFyc1snVENMSUJDJ10KKyAgICAgICAgc2VsZi50dW5lX2FyY2ggPSBiYl92YXJzWydUVU5FX0FSQ0gnXQorICAgICAgICBzZWxmLnRvcGRpciA9IGJiX3ZhcnNbJ1RPUERJUiddCisgICAgICAgIHNlbGYudGFyZ2V0X3ZlbmRvciA9IGJiX3ZhcnNbJ1RBUkdFVF9WRU5ET1InXQorICAgICAgICBzZWxmLnRhcmdldF9vcyA9IGJiX3ZhcnNbJ1RBUkdFVF9PUyddCisgICAgICAgIHNlbGYuZGlzdHJvX3NwZWNpZmljX3NzdGF0ZSA9IG9zLnBhdGguam9pbihzZWxmLnNzdGF0ZV9wYXRoLCBzZWxmLmhvc3RkaXN0cm8pCisKKyAgICAjIENyZWF0ZXMgYSBzcGVjaWFsIHNzdGF0ZSBjb25maWd1cmF0aW9uIHdpdGggdGhlIG9wdGlvbiB0byBhZGQgc3N0YXRlIG1pcnJvcnMKKyAgICBkZWYgY29uZmlnX3NzdGF0ZShzZWxmLCB0ZW1wX3NzdGF0ZV9sb2NhdGlvbj1GYWxzZSwgYWRkX2xvY2FsX21pcnJvcnM9W10pOgorICAgICAgICBzZWxmLnRlbXBfc3N0YXRlX2xvY2F0aW9uID0gdGVtcF9zc3RhdGVfbG9jYXRpb24KKworICAgICAgICBpZiBzZWxmLnRlbXBfc3N0YXRlX2xvY2F0aW9uOgorICAgICAgICAgICAgdGVtcF9zc3RhdGVfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkZGlyLCAidGVtcF9zc3RhdGVfJXMiICUgZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkuc3RyZnRpbWUoJyVZJW0lZCVIJU0lUycpKQorICAgICAgICAgICAgY29uZmlnX3RlbXBfc3N0YXRlID0gIlNTVEFURV9ESVIgPSBcIiVzXCIiICUgdGVtcF9zc3RhdGVfcGF0aAorICAgICAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKGNvbmZpZ190ZW1wX3NzdGF0ZSkKKyAgICAgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcF9zc3RhdGVfcGF0aCkKKyAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnU1NUQVRFX0RJUicsICdOQVRJVkVMU0JTVFJJTkcnXSkKKyAgICAgICAgc2VsZi5zc3RhdGVfcGF0aCA9IGJiX3ZhcnNbJ1NTVEFURV9ESVInXQorICAgICAgICBzZWxmLmhvc3RkaXN0cm8gPSBiYl92YXJzWydOQVRJVkVMU0JTVFJJTkcnXQorICAgICAgICBzZWxmLmRpc3Ryb19zcGVjaWZpY19zc3RhdGUgPSBvcy5wYXRoLmpvaW4oc2VsZi5zc3RhdGVfcGF0aCwgc2VsZi5ob3N0ZGlzdHJvKQorCisgICAgICAgIGlmIGFkZF9sb2NhbF9taXJyb3JzOgorICAgICAgICAgICAgY29uZmlnX3NldF9zc3RhdGVfaWZfbm90X3NldCA9ICdTU1RBVEVfTUlSUk9SUyA/PSAiIicKKyAgICAgICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZyhjb25maWdfc2V0X3NzdGF0ZV9pZl9ub3Rfc2V0KQorICAgICAgICAgICAgZm9yIGxvY2FsX21pcnJvciBpbiBhZGRfbG9jYWxfbWlycm9yczoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguam9pbihsb2NhbF9taXJyb3IpID09IG9zLnBhdGguam9pbihzZWxmLnNzdGF0ZV9wYXRoKSwgbXNnPSdDYW5ub3QgYWRkIHRoZSBjdXJyZW50IHNzdGF0ZSBwYXRoIGFzIGEgc3N0YXRlIG1pcnJvcicpCisgICAgICAgICAgICAgICAgY29uZmlnX3NzdGF0ZV9taXJyb3IgPSAiU1NUQVRFX01JUlJPUlMgKz0gXCJmaWxlOi8vLiogZmlsZTovLy8lcy9QQVRIXCIiICUgbG9jYWxfbWlycm9yCisgICAgICAgICAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKGNvbmZpZ19zc3RhdGVfbWlycm9yKQorCisgICAgIyBSZXR1cm5zIGEgbGlzdCBjb250YWluaW5nIHNzdGF0ZSBmaWxlcworICAgIGRlZiBzZWFyY2hfc3N0YXRlKHNlbGYsIGZpbGVuYW1lX3JlZ2V4LCBkaXN0cm9fc3BlY2lmaWM9VHJ1ZSwgZGlzdHJvX25vbnNwZWNpZmljPVRydWUpOgorICAgICAgICByZXN1bHQgPSBbXQorICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhzZWxmLnNzdGF0ZV9wYXRoKToKKyAgICAgICAgICAgIGlmIGRpc3Ryb19zcGVjaWZpYyBhbmQgcmUuc2VhcmNoKCIlcy9bYS16MC05XXsyfSQiICUgc2VsZi5ob3N0ZGlzdHJvLCByb290KToKKyAgICAgICAgICAgICAgICBmb3IgZiBpbiBmaWxlczoKKyAgICAgICAgICAgICAgICAgICAgaWYgcmUuc2VhcmNoKGZpbGVuYW1lX3JlZ2V4LCBmKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZikKKyAgICAgICAgICAgIGlmIGRpc3Ryb19ub25zcGVjaWZpYyBhbmQgcmUuc2VhcmNoKCIlcy9bYS16MC05XXsyfSQiICUgc2VsZi5zc3RhdGVfcGF0aCwgcm9vdCk6CisgICAgICAgICAgICAgICAgZm9yIGYgaW4gZmlsZXM6CisgICAgICAgICAgICAgICAgICAgIGlmIHJlLnNlYXJjaChmaWxlbmFtZV9yZWdleCwgZik6CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGYpCisgICAgICAgIHJldHVybiByZXN1bHQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3NzdGF0ZXRlc3RzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc3N0YXRldGVzdHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc5MDA4OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3NzdGF0ZXRlc3RzLnB5CkBAIC0wLDAgKzEsNDk2IEBACitpbXBvcnQgb3MKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBnbG9iCitpbXBvcnQgc3VicHJvY2VzcworCitmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZSBpbXBvcnQgT0VTZWxmdGVzdFRlc3RDYXNlCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZCwgYml0YmFrZSwgZ2V0X2JiX3ZhciwgZ2V0X3Rlc3RfbGF5ZXIKK2Zyb20gb2VxYS5zZWxmdGVzdC5jYXNlcy5zc3RhdGUgaW1wb3J0IFNTdGF0ZUJhc2UKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvci5vZWlkIGltcG9ydCBPRVRlc3RJRAorCitpbXBvcnQgYmIuc2lnZ2VuCisKK2NsYXNzIFNTdGF0ZVRlc3RzKFNTdGF0ZUJhc2UpOgorCisgICAgIyBUZXN0IHNzdGF0ZSBmaWxlcyBjcmVhdGlvbiBhbmQgdGhlaXIgbG9jYXRpb24KKyAgICBkZWYgcnVuX3Rlc3Rfc3N0YXRlX2NyZWF0aW9uKHNlbGYsIHRhcmdldHMsIGRpc3Ryb19zcGVjaWZpYz1UcnVlLCBkaXN0cm9fbm9uc3BlY2lmaWM9VHJ1ZSwgdGVtcF9zc3RhdGVfbG9jYXRpb249VHJ1ZSwgc2hvdWxkX3Bhc3M9VHJ1ZSk6CisgICAgICAgIHNlbGYuY29uZmlnX3NzdGF0ZSh0ZW1wX3NzdGF0ZV9sb2NhdGlvbiwgW3NlbGYuc3N0YXRlX3BhdGhdKQorCisgICAgICAgIGlmICBzZWxmLnRlbXBfc3N0YXRlX2xvY2F0aW9uOgorICAgICAgICAgICAgYml0YmFrZShbJy1jY2xlYW4nXSArIHRhcmdldHMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBiaXRiYWtlKFsnLWNjbGVhbnNzdGF0ZSddICsgdGFyZ2V0cykKKworICAgICAgICBiaXRiYWtlKHRhcmdldHMpCisgICAgICAgIGZpbGVfdHJhY2tlciA9IFtdCisgICAgICAgIHJlc3VsdHMgPSBzZWxmLnNlYXJjaF9zc3RhdGUoJ3wnLmpvaW4obWFwKHN0ciwgdGFyZ2V0cykpLCBkaXN0cm9fc3BlY2lmaWMsIGRpc3Ryb19ub25zcGVjaWZpYykKKyAgICAgICAgaWYgZGlzdHJvX25vbnNwZWNpZmljOgorICAgICAgICAgICAgZm9yIHIgaW4gcmVzdWx0czoKKyAgICAgICAgICAgICAgICBpZiByLmVuZHN3aXRoKCgiX3BvcHVsYXRlX2xpYy50Z3oiLCAiX3BvcHVsYXRlX2xpYy50Z3ouc2lnaW5mbyIsICJfZmV0Y2gudGd6LnNpZ2luZm8iLCAiX3VucGFjay50Z3ouc2lnaW5mbyIsICJfcGF0Y2gudGd6LnNpZ2luZm8iKSk6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgZmlsZV90cmFja2VyLmFwcGVuZChyKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZmlsZV90cmFja2VyID0gcmVzdWx0cworCisgICAgICAgIGlmIHNob3VsZF9wYXNzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZpbGVfdHJhY2tlciAsIG1zZz0iQ291bGQgbm90IGZpbmQgc3N0YXRlIGZpbGVzIGZvcjogJXMiICUgJywgJy5qb2luKG1hcChzdHIsIHRhcmdldHMpKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3QgZmlsZV90cmFja2VyICwgbXNnPSJGb3VuZCBzc3RhdGUgZmlsZXMgaW4gdGhlIHdyb25nIHBsYWNlIGZvcjogJXMgKGZvdW5kICVzKSIgJSAoJywgJy5qb2luKG1hcChzdHIsIHRhcmdldHMpKSwgc3RyKGZpbGVfdHJhY2tlcikpKQorCisgICAgQE9FVGVzdElEKDk3NSkKKyAgICBkZWYgdGVzdF9zc3RhdGVfY3JlYXRpb25fZGlzdHJvX3NwZWNpZmljX3Bhc3Moc2VsZik6CisgICAgICAgIHNlbGYucnVuX3Rlc3Rfc3N0YXRlX2NyZWF0aW9uKFsnYmludXRpbHMtY3Jvc3MtJysgc2VsZi50dW5lX2FyY2gsICdiaW51dGlscy1uYXRpdmUnXSwgZGlzdHJvX3NwZWNpZmljPVRydWUsIGRpc3Ryb19ub25zcGVjaWZpYz1GYWxzZSwgdGVtcF9zc3RhdGVfbG9jYXRpb249VHJ1ZSkKKworICAgIEBPRVRlc3RJRCgxMzc0KQorICAgIGRlZiB0ZXN0X3NzdGF0ZV9jcmVhdGlvbl9kaXN0cm9fc3BlY2lmaWNfZmFpbChzZWxmKToKKyAgICAgICAgc2VsZi5ydW5fdGVzdF9zc3RhdGVfY3JlYXRpb24oWydiaW51dGlscy1jcm9zcy0nKyBzZWxmLnR1bmVfYXJjaCwgJ2JpbnV0aWxzLW5hdGl2ZSddLCBkaXN0cm9fc3BlY2lmaWM9RmFsc2UsIGRpc3Ryb19ub25zcGVjaWZpYz1UcnVlLCB0ZW1wX3NzdGF0ZV9sb2NhdGlvbj1UcnVlLCBzaG91bGRfcGFzcz1GYWxzZSkKKworICAgIEBPRVRlc3RJRCg5NzYpCisgICAgZGVmIHRlc3Rfc3N0YXRlX2NyZWF0aW9uX2Rpc3Ryb19ub25zcGVjaWZpY19wYXNzKHNlbGYpOgorICAgICAgICBzZWxmLnJ1bl90ZXN0X3NzdGF0ZV9jcmVhdGlvbihbJ2xpbnV4LWxpYmMtaGVhZGVycyddLCBkaXN0cm9fc3BlY2lmaWM9RmFsc2UsIGRpc3Ryb19ub25zcGVjaWZpYz1UcnVlLCB0ZW1wX3NzdGF0ZV9sb2NhdGlvbj1UcnVlKQorCisgICAgQE9FVGVzdElEKDEzNzUpCisgICAgZGVmIHRlc3Rfc3N0YXRlX2NyZWF0aW9uX2Rpc3Ryb19ub25zcGVjaWZpY19mYWlsKHNlbGYpOgorICAgICAgICBzZWxmLnJ1bl90ZXN0X3NzdGF0ZV9jcmVhdGlvbihbJ2xpbnV4LWxpYmMtaGVhZGVycyddLCBkaXN0cm9fc3BlY2lmaWM9VHJ1ZSwgZGlzdHJvX25vbnNwZWNpZmljPUZhbHNlLCB0ZW1wX3NzdGF0ZV9sb2NhdGlvbj1UcnVlLCBzaG91bGRfcGFzcz1GYWxzZSkKKworICAgICMgVGVzdCB0aGUgc3N0YXRlIGZpbGVzIGRlbGV0aW9uIHBhcnQgb2YgdGhlIGRvX2NsZWFuc3N0YXRlIHRhc2sKKyAgICBkZWYgcnVuX3Rlc3RfY2xlYW5zc3RhdGVfdGFzayhzZWxmLCB0YXJnZXRzLCBkaXN0cm9fc3BlY2lmaWM9VHJ1ZSwgZGlzdHJvX25vbnNwZWNpZmljPVRydWUsIHRlbXBfc3N0YXRlX2xvY2F0aW9uPVRydWUpOgorICAgICAgICBzZWxmLmNvbmZpZ19zc3RhdGUodGVtcF9zc3RhdGVfbG9jYXRpb24sIFtzZWxmLnNzdGF0ZV9wYXRoXSkKKworICAgICAgICBiaXRiYWtlKFsnLWNjbGVhbnNzdGF0ZSddICsgdGFyZ2V0cykKKworICAgICAgICBiaXRiYWtlKHRhcmdldHMpCisgICAgICAgIHRnel9jcmVhdGVkID0gc2VsZi5zZWFyY2hfc3N0YXRlKCd8Jy5qb2luKG1hcChzdHIsIFtzICsgJy4qP1wudGd6JCcgZm9yIHMgaW4gdGFyZ2V0c10pKSwgZGlzdHJvX3NwZWNpZmljLCBkaXN0cm9fbm9uc3BlY2lmaWMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0Z3pfY3JlYXRlZCwgbXNnPSJDb3VsZCBub3QgZmluZCBzc3RhdGUgLnRneiBmaWxlcyBmb3I6ICVzICglcykiICUgKCcsICcuam9pbihtYXAoc3RyLCB0YXJnZXRzKSksIHN0cih0Z3pfY3JlYXRlZCkpKQorCisgICAgICAgIHNpZ2luZm9fY3JlYXRlZCA9IHNlbGYuc2VhcmNoX3NzdGF0ZSgnfCcuam9pbihtYXAoc3RyLCBbcyArICcuKj9cLnNpZ2luZm8kJyBmb3IgcyBpbiB0YXJnZXRzXSkpLCBkaXN0cm9fc3BlY2lmaWMsIGRpc3Ryb19ub25zcGVjaWZpYykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNpZ2luZm9fY3JlYXRlZCwgbXNnPSJDb3VsZCBub3QgZmluZCBzc3RhdGUgLnNpZ2luZm8gZmlsZXMgZm9yOiAlcyAoJXMpIiAlICgnLCAnLmpvaW4obWFwKHN0ciwgdGFyZ2V0cykpLCBzdHIoc2lnaW5mb19jcmVhdGVkKSkpCisKKyAgICAgICAgYml0YmFrZShbJy1jY2xlYW5zc3RhdGUnXSArIHRhcmdldHMpCisgICAgICAgIHRnel9yZW1vdmVkID0gc2VsZi5zZWFyY2hfc3N0YXRlKCd8Jy5qb2luKG1hcChzdHIsIFtzICsgJy4qP1wudGd6JCcgZm9yIHMgaW4gdGFyZ2V0c10pKSwgZGlzdHJvX3NwZWNpZmljLCBkaXN0cm9fbm9uc3BlY2lmaWMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3QgdGd6X3JlbW92ZWQsIG1zZz0iZG9fY2xlYW5zc3RhdGUgZGlkbid0IHJlbW92ZSAudGd6IHNzdGF0ZSBmaWxlcyBmb3I6ICVzICglcykiICUgKCcsICcuam9pbihtYXAoc3RyLCB0YXJnZXRzKSksIHN0cih0Z3pfcmVtb3ZlZCkpKQorCisgICAgQE9FVGVzdElEKDk3NykKKyAgICBkZWYgdGVzdF9jbGVhbnNzdGF0ZV90YXNrX2Rpc3Ryb19zcGVjaWZpY19ub25zcGVjaWZpYyhzZWxmKToKKyAgICAgICAgdGFyZ2V0cyA9IFsnYmludXRpbHMtY3Jvc3MtJysgc2VsZi50dW5lX2FyY2gsICdiaW51dGlscy1uYXRpdmUnXQorICAgICAgICB0YXJnZXRzLmFwcGVuZCgnbGludXgtbGliYy1oZWFkZXJzJykKKyAgICAgICAgc2VsZi5ydW5fdGVzdF9jbGVhbnNzdGF0ZV90YXNrKHRhcmdldHMsIGRpc3Ryb19zcGVjaWZpYz1UcnVlLCBkaXN0cm9fbm9uc3BlY2lmaWM9VHJ1ZSwgdGVtcF9zc3RhdGVfbG9jYXRpb249VHJ1ZSkKKworICAgIEBPRVRlc3RJRCgxMzc2KQorICAgIGRlZiB0ZXN0X2NsZWFuc3N0YXRlX3Rhc2tfZGlzdHJvX25vbnNwZWNpZmljKHNlbGYpOgorICAgICAgICBzZWxmLnJ1bl90ZXN0X2NsZWFuc3N0YXRlX3Rhc2soWydsaW51eC1saWJjLWhlYWRlcnMnXSwgZGlzdHJvX3NwZWNpZmljPUZhbHNlLCBkaXN0cm9fbm9uc3BlY2lmaWM9VHJ1ZSwgdGVtcF9zc3RhdGVfbG9jYXRpb249VHJ1ZSkKKworICAgIEBPRVRlc3RJRCgxMzc3KQorICAgIGRlZiB0ZXN0X2NsZWFuc3N0YXRlX3Rhc2tfZGlzdHJvX3NwZWNpZmljKHNlbGYpOgorICAgICAgICB0YXJnZXRzID0gWydiaW51dGlscy1jcm9zcy0nKyBzZWxmLnR1bmVfYXJjaCwgJ2JpbnV0aWxzLW5hdGl2ZSddCisgICAgICAgIHRhcmdldHMuYXBwZW5kKCdsaW51eC1saWJjLWhlYWRlcnMnKQorICAgICAgICBzZWxmLnJ1bl90ZXN0X2NsZWFuc3N0YXRlX3Rhc2sodGFyZ2V0cywgZGlzdHJvX3NwZWNpZmljPVRydWUsIGRpc3Ryb19ub25zcGVjaWZpYz1GYWxzZSwgdGVtcF9zc3RhdGVfbG9jYXRpb249VHJ1ZSkKKworCisgICAgIyBUZXN0IHJlYnVpbGRpbmcgb2YgZGlzdHJvLXNwZWNpZmljIHNzdGF0ZSBmaWxlcworICAgIGRlZiBydW5fdGVzdF9yZWJ1aWxkX2Rpc3Ryb19zcGVjaWZpY19zc3RhdGUoc2VsZiwgdGFyZ2V0cywgdGVtcF9zc3RhdGVfbG9jYXRpb249VHJ1ZSk6CisgICAgICAgIHNlbGYuY29uZmlnX3NzdGF0ZSh0ZW1wX3NzdGF0ZV9sb2NhdGlvbiwgW3NlbGYuc3N0YXRlX3BhdGhdKQorCisgICAgICAgIGJpdGJha2UoWyctY2NsZWFuc3N0YXRlJ10gKyB0YXJnZXRzKQorCisgICAgICAgIGJpdGJha2UodGFyZ2V0cykKKyAgICAgICAgcmVzdWx0cyA9IHNlbGYuc2VhcmNoX3NzdGF0ZSgnfCcuam9pbihtYXAoc3RyLCBbcyArICcuKj9cLnRneiQnIGZvciBzIGluIHRhcmdldHNdKSksIGRpc3Ryb19zcGVjaWZpYz1GYWxzZSwgZGlzdHJvX25vbnNwZWNpZmljPVRydWUpCisgICAgICAgIGZpbHRlcmVkX3Jlc3VsdHMgPSBbXQorICAgICAgICBmb3IgciBpbiByZXN1bHRzOgorICAgICAgICAgICAgaWYgci5lbmRzd2l0aCgoIl9wb3B1bGF0ZV9saWMudGd6IiwgIl9wb3B1bGF0ZV9saWMudGd6LnNpZ2luZm8iKSk6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGZpbHRlcmVkX3Jlc3VsdHMuYXBwZW5kKHIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmaWx0ZXJlZF9yZXN1bHRzID09IFtdLCBtc2c9IkZvdW5kIGRpc3RybyBub24tc3BlY2lmaWMgc3N0YXRlIGZvcjogJXMgKCVzKSIgJSAoJywgJy5qb2luKG1hcChzdHIsIHRhcmdldHMpKSwgc3RyKGZpbHRlcmVkX3Jlc3VsdHMpKSkKKyAgICAgICAgZmlsZV90cmFja2VyXzEgPSBzZWxmLnNlYXJjaF9zc3RhdGUoJ3wnLmpvaW4obWFwKHN0ciwgW3MgKyAnLio/XC50Z3okJyBmb3IgcyBpbiB0YXJnZXRzXSkpLCBkaXN0cm9fc3BlY2lmaWM9VHJ1ZSwgZGlzdHJvX25vbnNwZWNpZmljPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKGZpbGVfdHJhY2tlcl8xKSA+PSBsZW4odGFyZ2V0cyksIG1zZyA9ICJOb3QgYWxsIHNzdGF0ZSBmaWxlcyB3YXJlIGNyZWF0ZWQgZm9yOiAlcyIgJSAnLCAnLmpvaW4obWFwKHN0ciwgdGFyZ2V0cykpKQorCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi5kaXN0cm9fc3BlY2lmaWNfc3N0YXRlICsgIl9vbGQiKQorICAgICAgICBzaHV0aWwuY29weXRyZWUoc2VsZi5kaXN0cm9fc3BlY2lmaWNfc3N0YXRlLCBzZWxmLmRpc3Ryb19zcGVjaWZpY19zc3RhdGUgKyAiX29sZCIpCisgICAgICAgIHNodXRpbC5ybXRyZWUoc2VsZi5kaXN0cm9fc3BlY2lmaWNfc3N0YXRlKQorCisgICAgICAgIGJpdGJha2UoWyctY2NsZWFuJ10gKyB0YXJnZXRzKQorICAgICAgICBiaXRiYWtlKHRhcmdldHMpCisgICAgICAgIGZpbGVfdHJhY2tlcl8yID0gc2VsZi5zZWFyY2hfc3N0YXRlKCd8Jy5qb2luKG1hcChzdHIsIFtzICsgJy4qP1wudGd6JCcgZm9yIHMgaW4gdGFyZ2V0c10pKSwgZGlzdHJvX3NwZWNpZmljPVRydWUsIGRpc3Ryb19ub25zcGVjaWZpYz1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbihmaWxlX3RyYWNrZXJfMikgPj0gbGVuKHRhcmdldHMpLCBtc2cgPSAiTm90IGFsbCBzc3RhdGUgZmlsZXMgd2FyZSBjcmVhdGVkIGZvcjogJXMiICUgJywgJy5qb2luKG1hcChzdHIsIHRhcmdldHMpKSkKKworICAgICAgICBub3RfcmVjcmVhdGVkID0gW3ggZm9yIHggaW4gZmlsZV90cmFja2VyXzEgaWYgeCBub3QgaW4gZmlsZV90cmFja2VyXzJdCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3RfcmVjcmVhdGVkID09IFtdLCBtc2c9IlRoZSBmb2xsb3dpbmcgc3N0YXRlIGZpbGVzIHdhcmUgbm90IHJlY3JlYXRlZDogJXMiICUgJywgJy5qb2luKG1hcChzdHIsIG5vdF9yZWNyZWF0ZWQpKSkKKworICAgICAgICBjcmVhdGVkX29uY2UgPSBbeCBmb3IgeCBpbiBmaWxlX3RyYWNrZXJfMiBpZiB4IG5vdCBpbiBmaWxlX3RyYWNrZXJfMV0KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNyZWF0ZWRfb25jZSA9PSBbXSwgbXNnPSJUaGUgZm9sbG93aW5nIHNzdGF0ZSBmaWxlcyB3YXJlIGNyZWF0ZWQgb25seSBpbiB0aGUgc2Vjb25kIHJ1bjogJXMiICUgJywgJy5qb2luKG1hcChzdHIsIGNyZWF0ZWRfb25jZSkpKQorCisgICAgQE9FVGVzdElEKDE3NSkKKyAgICBkZWYgdGVzdF9yZWJ1aWxkX2Rpc3Ryb19zcGVjaWZpY19zc3RhdGVfY3Jvc3NfbmF0aXZlX3RhcmdldHMoc2VsZik6CisgICAgICAgIHNlbGYucnVuX3Rlc3RfcmVidWlsZF9kaXN0cm9fc3BlY2lmaWNfc3N0YXRlKFsnYmludXRpbHMtY3Jvc3MtJyArIHNlbGYudHVuZV9hcmNoLCAnYmludXRpbHMtbmF0aXZlJ10sIHRlbXBfc3N0YXRlX2xvY2F0aW9uPVRydWUpCisKKyAgICBAT0VUZXN0SUQoMTM3MikKKyAgICBkZWYgdGVzdF9yZWJ1aWxkX2Rpc3Ryb19zcGVjaWZpY19zc3RhdGVfY3Jvc3NfdGFyZ2V0KHNlbGYpOgorICAgICAgICBzZWxmLnJ1bl90ZXN0X3JlYnVpbGRfZGlzdHJvX3NwZWNpZmljX3NzdGF0ZShbJ2JpbnV0aWxzLWNyb3NzLScgKyBzZWxmLnR1bmVfYXJjaF0sIHRlbXBfc3N0YXRlX2xvY2F0aW9uPVRydWUpCisKKyAgICBAT0VUZXN0SUQoMTM3MykKKyAgICBkZWYgdGVzdF9yZWJ1aWxkX2Rpc3Ryb19zcGVjaWZpY19zc3RhdGVfbmF0aXZlX3RhcmdldChzZWxmKToKKyAgICAgICAgc2VsZi5ydW5fdGVzdF9yZWJ1aWxkX2Rpc3Ryb19zcGVjaWZpY19zc3RhdGUoWydiaW51dGlscy1uYXRpdmUnXSwgdGVtcF9zc3RhdGVfbG9jYXRpb249VHJ1ZSkKKworCisgICAgIyBUZXN0IHRoZSBzc3RhdGUtY2FjaGUtbWFuYWdlbWVudCBzY3JpcHQuIEVhY2ggZWxlbWVudCBpbiB0aGUgZ2xvYmFsX2NvbmZpZyBsaXN0IGlzIHVzZWQgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IGluIHRoZSB0YXJnZXRfY29uZmlnIGxpc3QKKyAgICAjIGdsb2JhbF9jb25maWcgZWxlbWVudHMgYXJlIGV4cGVjdGVkIHRvIG5vdCBnZW5lcmF0ZSBhbnkgc3N0YXRlIGZpbGVzIHRoYXQgd291bGQgYmUgcmVtb3ZlZCBieSBzc3RhdGUtY2FjaGUtbWFuYWdlbWVudC5zaCAoc3VjaCBhcyBjaGFuZ2luZyB0aGUgdmFsdWUgb2YgTUFDSElORSkKKyAgICBkZWYgcnVuX3Rlc3Rfc3N0YXRlX2NhY2hlX21hbmFnZW1lbnRfc2NyaXB0KHNlbGYsIHRhcmdldCwgZ2xvYmFsX2NvbmZpZz1bJyddLCB0YXJnZXRfY29uZmlnPVsnJ10sIGlnbm9yZV9wYXR0ZXJucz1bXSk6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShnbG9iYWxfY29uZmlnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUodGFyZ2V0X2NvbmZpZykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbihnbG9iYWxfY29uZmlnKSA9PSBsZW4odGFyZ2V0X2NvbmZpZyksIG1zZz0nTGlzdHMgZ2xvYmFsX2NvbmZpZyBhbmQgdGFyZ2V0X2NvbmZpZyBzaG91bGQgaGF2ZSB0aGUgc2FtZSBudW1iZXIgb2YgZWxlbWVudHMnKQorICAgICAgICBzZWxmLmNvbmZpZ19zc3RhdGUodGVtcF9zc3RhdGVfbG9jYXRpb249VHJ1ZSwgYWRkX2xvY2FsX21pcnJvcnM9W3NlbGYuc3N0YXRlX3BhdGhdKQorCisgICAgICAgICMgSWYgYnVpbGRoaXN0b3J5IGlzIGVuYWJsZWQsIHdlIG5lZWQgdG8gZGlzYWJsZSB2ZXJzaW9uLWdvaW5nLWJhY2t3YXJkcworICAgICAgICAjIFFBIGNoZWNrcyBmb3IgdGhpcyB0ZXN0LiBJdCBtYXkgcmVwb3J0IGVycm9ycyBvdGhlcndpc2UuCisgICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZygnRVJST1JfUUFfcmVtb3ZlID0gInZlcnNpb24tZ29pbmctYmFja3dhcmRzIicpCisKKyAgICAgICAgIyBGb3Igbm90IHRoaXMgb25seSBjaGVja3MgaWYgcmFuZG9tIHNzdGF0ZSB0YXNrcyBhcmUgaGFuZGxlZCBjb3JyZWN0bHkgYXMgYSBncm91cC4KKyAgICAgICAgIyBJbiB0aGUgZnV0dXJlIHdlIHNob3VsZCBhZGQgY29udHJvbCBvdmVyIHdoYXQgdGFza3Mgd2UgY2hlY2sgZm9yLgorCisgICAgICAgIHNzdGF0ZV9hcmNoc19saXN0ID0gW10KKyAgICAgICAgZXhwZWN0ZWRfcmVtYWluaW5nX3NzdGF0ZSA9IFtdCisgICAgICAgIGZvciBpZHggaW4gcmFuZ2UobGVuKHRhcmdldF9jb25maWcpKToKKyAgICAgICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZyhnbG9iYWxfY29uZmlnW2lkeF0pCisgICAgICAgICAgICBzZWxmLmFwcGVuZF9yZWNpcGVpbmModGFyZ2V0LCB0YXJnZXRfY29uZmlnW2lkeF0pCisgICAgICAgICAgICBzc3RhdGVfYXJjaCA9IGdldF9iYl92YXIoJ1NTVEFURV9QS0dBUkNIJywgdGFyZ2V0KQorICAgICAgICAgICAgaWYgbm90IHNzdGF0ZV9hcmNoIGluIHNzdGF0ZV9hcmNoc19saXN0OgorICAgICAgICAgICAgICAgIHNzdGF0ZV9hcmNoc19saXN0LmFwcGVuZChzc3RhdGVfYXJjaCkKKyAgICAgICAgICAgIGlmIHRhcmdldF9jb25maWdbaWR4XSA9PSB0YXJnZXRfY29uZmlnWy0xXToKKyAgICAgICAgICAgICAgICB0YXJnZXRfc3N0YXRlX2JlZm9yZV9idWlsZCA9IHNlbGYuc2VhcmNoX3NzdGF0ZSh0YXJnZXQgKyAnLio/XC50Z3okJykKKyAgICAgICAgICAgIGJpdGJha2UoIi1jY2xlYW4gJXMiICUgdGFyZ2V0KQorICAgICAgICAgICAgcmVzdWx0ID0gYml0YmFrZSh0YXJnZXQsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKKyAgICAgICAgICAgIGlmIHRhcmdldF9jb25maWdbaWR4XSA9PSB0YXJnZXRfY29uZmlnWy0xXToKKyAgICAgICAgICAgICAgICB0YXJnZXRfc3N0YXRlX2FmdGVyX2J1aWxkID0gc2VsZi5zZWFyY2hfc3N0YXRlKHRhcmdldCArICcuKj9cLnRneiQnKQorICAgICAgICAgICAgICAgIGV4cGVjdGVkX3JlbWFpbmluZ19zc3RhdGUgKz0gW3ggZm9yIHggaW4gdGFyZ2V0X3NzdGF0ZV9hZnRlcl9idWlsZCBpZiB4IG5vdCBpbiB0YXJnZXRfc3N0YXRlX2JlZm9yZV9idWlsZCBpZiBub3QgYW55KHBhdHRlcm4gaW4geCBmb3IgcGF0dGVybiBpbiBpZ25vcmVfcGF0dGVybnMpXQorICAgICAgICAgICAgc2VsZi5yZW1vdmVfY29uZmlnKGdsb2JhbF9jb25maWdbaWR4XSkKKyAgICAgICAgICAgIHNlbGYucmVtb3ZlX3JlY2lwZWluYyh0YXJnZXQsIHRhcmdldF9jb25maWdbaWR4XSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnN0YXR1cywgMCwgbXNnID0gImJ1aWxkIG9mICVzIGZhaWxlZCB3aXRoICVzIiAlICh0YXJnZXQsIHJlc3VsdC5vdXRwdXQpKQorCisgICAgICAgIHJ1bkNtZCgic3N0YXRlLWNhY2hlLW1hbmFnZW1lbnQuc2ggLXkgLS1jYWNoZS1kaXI9JXMgLS1yZW1vdmUtZHVwbGljYXRlZCAtLWV4dHJhLWFyY2hzPSVzIiAlIChzZWxmLnNzdGF0ZV9wYXRoLCAnLCcuam9pbihtYXAoc3RyLCBzc3RhdGVfYXJjaHNfbGlzdCkpKSkKKyAgICAgICAgYWN0dWFsX3JlbWFpbmluZ19zc3RhdGUgPSBbeCBmb3IgeCBpbiBzZWxmLnNlYXJjaF9zc3RhdGUodGFyZ2V0ICsgJy4qP1wudGd6JCcpIGlmIG5vdCBhbnkocGF0dGVybiBpbiB4IGZvciBwYXR0ZXJuIGluIGlnbm9yZV9wYXR0ZXJucyldCisKKyAgICAgICAgYWN0dWFsX25vdF9leHBlY3RlZCA9IFt4IGZvciB4IGluIGFjdHVhbF9yZW1haW5pbmdfc3N0YXRlIGlmIHggbm90IGluIGV4cGVjdGVkX3JlbWFpbmluZ19zc3RhdGVdCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYWN0dWFsX25vdF9leHBlY3RlZCwgbXNnPSJGaWxlcyBzaG91bGQgaGF2ZSBiZWVuIHJlbW92ZWQgYnV0IHdhcmUgbm90OiAlcyIgJSAnLCAnLmpvaW4obWFwKHN0ciwgYWN0dWFsX25vdF9leHBlY3RlZCkpKQorICAgICAgICBleHBlY3RlZF9ub3RfYWN0dWFsID0gW3ggZm9yIHggaW4gZXhwZWN0ZWRfcmVtYWluaW5nX3NzdGF0ZSBpZiB4IG5vdCBpbiBhY3R1YWxfcmVtYWluaW5nX3NzdGF0ZV0KKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShleHBlY3RlZF9ub3RfYWN0dWFsLCBtc2c9IkV4dHJhIGZpbGVzIHdhcmUgcmVtb3ZlZDogJXMiICcsICcuam9pbihtYXAoc3RyLCBleHBlY3RlZF9ub3RfYWN0dWFsKSkpCisKKyAgICBAT0VUZXN0SUQoOTczKQorICAgIGRlZiB0ZXN0X3NzdGF0ZV9jYWNoZV9tYW5hZ2VtZW50X3NjcmlwdF91c2luZ19wcl8xKHNlbGYpOgorICAgICAgICBnbG9iYWxfY29uZmlnID0gW10KKyAgICAgICAgdGFyZ2V0X2NvbmZpZyA9IFtdCisgICAgICAgIGdsb2JhbF9jb25maWcuYXBwZW5kKCcnKQorICAgICAgICB0YXJnZXRfY29uZmlnLmFwcGVuZCgnUFIgPSAiMCInKQorICAgICAgICBzZWxmLnJ1bl90ZXN0X3NzdGF0ZV9jYWNoZV9tYW5hZ2VtZW50X3NjcmlwdCgnbTQnLCBnbG9iYWxfY29uZmlnLCAgdGFyZ2V0X2NvbmZpZywgaWdub3JlX3BhdHRlcm5zPVsncG9wdWxhdGVfbGljJ10pCisKKyAgICBAT0VUZXN0SUQoOTc4KQorICAgIGRlZiB0ZXN0X3NzdGF0ZV9jYWNoZV9tYW5hZ2VtZW50X3NjcmlwdF91c2luZ19wcl8yKHNlbGYpOgorICAgICAgICBnbG9iYWxfY29uZmlnID0gW10KKyAgICAgICAgdGFyZ2V0X2NvbmZpZyA9IFtdCisgICAgICAgIGdsb2JhbF9jb25maWcuYXBwZW5kKCcnKQorICAgICAgICB0YXJnZXRfY29uZmlnLmFwcGVuZCgnUFIgPSAiMCInKQorICAgICAgICBnbG9iYWxfY29uZmlnLmFwcGVuZCgnJykKKyAgICAgICAgdGFyZ2V0X2NvbmZpZy5hcHBlbmQoJ1BSID0gIjEiJykKKyAgICAgICAgc2VsZi5ydW5fdGVzdF9zc3RhdGVfY2FjaGVfbWFuYWdlbWVudF9zY3JpcHQoJ200JywgZ2xvYmFsX2NvbmZpZywgIHRhcmdldF9jb25maWcsIGlnbm9yZV9wYXR0ZXJucz1bJ3BvcHVsYXRlX2xpYyddKQorCisgICAgQE9FVGVzdElEKDk3OSkKKyAgICBkZWYgdGVzdF9zc3RhdGVfY2FjaGVfbWFuYWdlbWVudF9zY3JpcHRfdXNpbmdfcHJfMyhzZWxmKToKKyAgICAgICAgZ2xvYmFsX2NvbmZpZyA9IFtdCisgICAgICAgIHRhcmdldF9jb25maWcgPSBbXQorICAgICAgICBnbG9iYWxfY29uZmlnLmFwcGVuZCgnTUFDSElORSA9ICJxZW11eDg2LTY0IicpCisgICAgICAgIHRhcmdldF9jb25maWcuYXBwZW5kKCdQUiA9ICIwIicpCisgICAgICAgIGdsb2JhbF9jb25maWcuYXBwZW5kKGdsb2JhbF9jb25maWdbMF0pCisgICAgICAgIHRhcmdldF9jb25maWcuYXBwZW5kKCdQUiA9ICIxIicpCisgICAgICAgIGdsb2JhbF9jb25maWcuYXBwZW5kKCdNQUNISU5FID0gInFlbXV4ODYiJykKKyAgICAgICAgdGFyZ2V0X2NvbmZpZy5hcHBlbmQoJ1BSID0gIjEiJykKKyAgICAgICAgc2VsZi5ydW5fdGVzdF9zc3RhdGVfY2FjaGVfbWFuYWdlbWVudF9zY3JpcHQoJ200JywgZ2xvYmFsX2NvbmZpZywgIHRhcmdldF9jb25maWcsIGlnbm9yZV9wYXR0ZXJucz1bJ3BvcHVsYXRlX2xpYyddKQorCisgICAgQE9FVGVzdElEKDk3NCkKKyAgICBkZWYgdGVzdF9zc3RhdGVfY2FjaGVfbWFuYWdlbWVudF9zY3JpcHRfdXNpbmdfbWFjaGluZShzZWxmKToKKyAgICAgICAgZ2xvYmFsX2NvbmZpZyA9IFtdCisgICAgICAgIHRhcmdldF9jb25maWcgPSBbXQorICAgICAgICBnbG9iYWxfY29uZmlnLmFwcGVuZCgnTUFDSElORSA9ICJxZW11eDg2LTY0IicpCisgICAgICAgIHRhcmdldF9jb25maWcuYXBwZW5kKCcnKQorICAgICAgICBnbG9iYWxfY29uZmlnLmFwcGVuZCgnTUFDSElORSA9ICJxZW11eDg2IicpCisgICAgICAgIHRhcmdldF9jb25maWcuYXBwZW5kKCcnKQorICAgICAgICBzZWxmLnJ1bl90ZXN0X3NzdGF0ZV9jYWNoZV9tYW5hZ2VtZW50X3NjcmlwdCgnbTQnLCBnbG9iYWxfY29uZmlnLCAgdGFyZ2V0X2NvbmZpZywgaWdub3JlX3BhdHRlcm5zPVsncG9wdWxhdGVfbGljJ10pCisKKyAgICBAT0VUZXN0SUQoMTI3MCkKKyAgICBkZWYgdGVzdF9zc3RhdGVfMzJfNjRfc2FtZV9oYXNoKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhlIHNzdGF0ZSBjaGVja3N1bXMgZm9yIGJvdGggbmF0aXZlIGFuZCB0YXJnZXQgc2hvdWxkIG5vdCB2YXJ5IHdoZXRoZXIKKyAgICAgICAgdGhleSdyZSBidWlsdCBvbiBhIDMyIG9yIDY0IGJpdCBzeXN0ZW0uIFJhdGhlciB0aGFuIHJlcXVpcmluZyB0d28gZGlmZmVyZW50CisgICAgICAgIGJ1aWxkIG1hY2hpbmVzIGFuZCBydW5uaW5nIGEgYnVpbGRzLCBvdmVycmlkZSB0aGUgdmFyaWFibGVzIGNhbGxpbmcgdW5hbWUoKQorICAgICAgICBtYW51YWxseSBhbmQgY2hlY2sgdXNpbmcgYml0YmFrZSAtUy4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIiIiCitNQUNISU5FID0gInFlbXV4ODYiCitUTVBESVIgPSAiJHtUT1BESVJ9L3RtcC1zc3RhdGVzYW1laGFzaCIKK0JVSUxEX0FSQ0ggPSAieDg2XzY0IgorQlVJTERfT1MgPSAibGludXgiCitTREtNQUNISU5FID0gIng4Nl82NCIKK1BBQ0tBR0VfQ0xBU1NFUyA9ICJwYWNrYWdlX3JwbSBwYWNrYWdlX2lwayBwYWNrYWdlX2RlYiIKKyIiIikKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoIikKKyAgICAgICAgYml0YmFrZSgiY29yZS1pbWFnZS1zYXRvIC1TIG5vbmUiKQorICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiIiIKK01BQ0hJTkUgPSAicWVtdXg4NiIKK1RNUERJUiA9ICIke1RPUERJUn0vdG1wLXNzdGF0ZXNhbWVoYXNoMiIKK0JVSUxEX0FSQ0ggPSAiaTY4NiIKK0JVSUxEX09TID0gImxpbnV4IgorU0RLTUFDSElORSA9ICJpNjg2IgorUEFDS0FHRV9DTEFTU0VTID0gInBhY2thZ2VfcnBtIHBhY2thZ2VfaXBrIHBhY2thZ2VfZGViIgorIiIiKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gyIikKKyAgICAgICAgYml0YmFrZSgiY29yZS1pbWFnZS1zYXRvIC1TIG5vbmUiKQorCisgICAgICAgIGRlZiBnZXRfZmlsZXMoZCk6CisgICAgICAgICAgICBmID0gW10KKyAgICAgICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKGQpOgorICAgICAgICAgICAgICAgIGlmICJjb3JlLWltYWdlLXNhdG8iIGluIHJvb3Q6CisgICAgICAgICAgICAgICAgICAgICMgU0RLTUFDSElORSBjaGFuZ2luZyB3aWxsIGNoYW5nZQorICAgICAgICAgICAgICAgICAgICAjIGRvX3Jvb3Rmcy9kb190ZXN0aW1hZ2UvZG9fYnVpbGQgc3RhbXBzIG9mIGltYWdlcyB3aGljaAorICAgICAgICAgICAgICAgICAgICAjIGlzIHNhZmUgdG8gaWdub3JlLgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGYuZXh0ZW5kKG9zLnBhdGguam9pbihyb290LCBuYW1lKSBmb3IgbmFtZSBpbiBmaWxlcykKKyAgICAgICAgICAgIHJldHVybiBmCisgICAgICAgIGZpbGVzMSA9IGdldF9maWxlcyhzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoL3N0YW1wcy8iKQorICAgICAgICBmaWxlczIgPSBnZXRfZmlsZXMoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaDIvc3RhbXBzLyIpCisgICAgICAgIGZpbGVzMiA9IFt4LnJlcGxhY2UoInRtcC1zc3RhdGVzYW1laGFzaDIiLCAidG1wLXNzdGF0ZXNhbWVoYXNoIikucmVwbGFjZSgiaTY4Ni1saW51eCIsICJ4ODZfNjQtbGludXgiKS5yZXBsYWNlKCJpNjg2IiArIHNlbGYudGFyZ2V0X3ZlbmRvciArICItbGludXgiLCAieDg2XzY0IiArIHNlbGYudGFyZ2V0X3ZlbmRvciArICItbGludXgiLCApIGZvciB4IGluIGZpbGVzMl0KKyAgICAgICAgc2VsZi5tYXhEaWZmID0gTm9uZQorICAgICAgICBzZWxmLmFzc2VydENvdW50RXF1YWwoZmlsZXMxLCBmaWxlczIpCisKKworICAgIEBPRVRlc3RJRCgxMjcxKQorICAgIGRlZiB0ZXN0X3NzdGF0ZV9uYXRpdmVsc2JzdHJpbmdfc2FtZV9oYXNoKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhlIHNzdGF0ZSBjaGVja3N1bXMgc2hvdWxkIGJlIGluZGVwZW5kZW50IG9mIHdoaWNoZXZlciBOQVRJVkVMU0JTVFJJTkcgaXMKKyAgICAgICAgZGV0ZWN0ZWQuIFJhdGhlciB0aGFuIHJlcXVpcmluZyB0d28gZGlmZmVyZW50IGJ1aWxkIG1hY2hpbmVzIGFuZCBydW5uaW5nCisgICAgICAgIGJ1aWxkcywgb3ZlcnJpZGUgdGhlIHZhcmlhYmxlcyBtYW51YWxseSBhbmQgY2hlY2sgdXNpbmcgYml0YmFrZSAtUy4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIiIiCitUTVBESVIgPSBcIiR7VE9QRElSfS90bXAtc3N0YXRlc2FtZWhhc2hcIgorTkFUSVZFTFNCU1RSSU5HID0gXCJEaXN0cm9BXCIKKyIiIikKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoIikKKyAgICAgICAgYml0YmFrZSgiY29yZS1pbWFnZS1zYXRvIC1TIG5vbmUiKQorICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiIiIKK1RNUERJUiA9IFwiJHtUT1BESVJ9L3RtcC1zc3RhdGVzYW1laGFzaDJcIgorTkFUSVZFTFNCU1RSSU5HID0gXCJEaXN0cm9CXCIKKyIiIikKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoMiIpCisgICAgICAgIGJpdGJha2UoImNvcmUtaW1hZ2Utc2F0byAtUyBub25lIikKKworICAgICAgICBkZWYgZ2V0X2ZpbGVzKGQpOgorICAgICAgICAgICAgZiA9IFtdCisgICAgICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhkKToKKyAgICAgICAgICAgICAgICBmLmV4dGVuZChvcy5wYXRoLmpvaW4ocm9vdCwgbmFtZSkgZm9yIG5hbWUgaW4gZmlsZXMpCisgICAgICAgICAgICByZXR1cm4gZgorICAgICAgICBmaWxlczEgPSBnZXRfZmlsZXMoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaC9zdGFtcHMvIikKKyAgICAgICAgZmlsZXMyID0gZ2V0X2ZpbGVzKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gyL3N0YW1wcy8iKQorICAgICAgICBmaWxlczIgPSBbeC5yZXBsYWNlKCJ0bXAtc3N0YXRlc2FtZWhhc2gyIiwgInRtcC1zc3RhdGVzYW1laGFzaCIpIGZvciB4IGluIGZpbGVzMl0KKyAgICAgICAgc2VsZi5tYXhEaWZmID0gTm9uZQorICAgICAgICBzZWxmLmFzc2VydENvdW50RXF1YWwoZmlsZXMxLCBmaWxlczIpCisKKyAgICBAT0VUZXN0SUQoMTM2OCkKKyAgICBkZWYgdGVzdF9zc3RhdGVfYWxsYXJjaF9zYW1lc2lncyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoZSBzc3RhdGUgY2hlY2tzdW1zIG9mIGFsbGFyY2ggcGFja2FnZXMgc2hvdWxkIGJlIGluZGVwZW5kZW50IG9mIHdoaWNoZXZlcgorICAgICAgICBNQUNISU5FIGlzIHNldC4gQ2hlY2sgdGhpcyB1c2luZyBiaXRiYWtlIC1TLgorICAgICAgICBBbHNvLCByYXRoZXIgdGhhbiBkdXBsaWNhdGUgdGhlIHRlc3QsIGNoZWNrIG5hdGl2ZXNkayBzdGFtcHMgYXJlIHRoZSBzYW1lIGJldHdlZW4KKyAgICAgICAgdGhlIHR3byBNQUNISU5FIHZhbHVlcy4KKyAgICAgICAgIiIiCisKKyAgICAgICAgY29uZmlnQSA9ICIiIgorVE1QRElSID0gXCIke1RPUERJUn0vdG1wLXNzdGF0ZXNhbWVoYXNoXCIKK01BQ0hJTkUgPSBcInFlbXV4ODYtNjRcIgorIiIiCisgICAgICAgIGNvbmZpZ0IgPSAiIiIKK1RNUERJUiA9IFwiJHtUT1BESVJ9L3RtcC1zc3RhdGVzYW1laGFzaDJcIgorTUFDSElORSA9IFwicWVtdWFybVwiCisiIiIKKyAgICAgICAgc2VsZi5zc3RhdGVfYWxsYXJjaF9zYW1lc2lncyhjb25maWdBLCBjb25maWdCKQorCisgICAgQE9FVGVzdElEKDE2NDUpCisgICAgZGVmIHRlc3Rfc3N0YXRlX2FsbGFyY2hfc2FtZXNpZ3NfbXVsdGlsaWIoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUaGUgc3N0YXRlIGNoZWNrc3VtcyBvZiBhbGxhcmNoIG11bHRpbGliIHBhY2thZ2VzIHNob3VsZCBiZSBpbmRlcGVuZGVudCBvZiB3aGljaGV2ZXIKKyAgICAgICAgTUFDSElORSBpcyBzZXQuIENoZWNrIHRoaXMgdXNpbmcgYml0YmFrZSAtUy4KKyAgICAgICAgQWxzbywgcmF0aGVyIHRoYW4gZHVwbGljYXRlIHRoZSB0ZXN0LCBjaGVjayBuYXRpdmVzZGsgc3RhbXBzIGFyZSB0aGUgc2FtZSBiZXR3ZWVuCisgICAgICAgIHRoZSB0d28gTUFDSElORSB2YWx1ZXMuCisgICAgICAgICIiIgorCisgICAgICAgIGNvbmZpZ0EgPSAiIiIKK1RNUERJUiA9IFwiJHtUT1BESVJ9L3RtcC1zc3RhdGVzYW1laGFzaFwiCitNQUNISU5FID0gXCJxZW11eDg2LTY0XCIKK3JlcXVpcmUgY29uZi9tdWx0aWxpYi5jb25mCitNVUxUSUxJQlMgPSBcIm11bHRpbGliOmxpYjMyXCIKK0RFRkFVTFRUVU5FX3ZpcnRjbGFzcy1tdWx0aWxpYi1saWIzMiA9IFwieDg2XCIKKyIiIgorICAgICAgICBjb25maWdCID0gIiIiCitUTVBESVIgPSBcIiR7VE9QRElSfS90bXAtc3N0YXRlc2FtZWhhc2gyXCIKK01BQ0hJTkUgPSBcInFlbXVhcm1cIgorcmVxdWlyZSBjb25mL211bHRpbGliLmNvbmYKK01VTFRJTElCUyA9IFwiXCIKKyIiIgorICAgICAgICBzZWxmLnNzdGF0ZV9hbGxhcmNoX3NhbWVzaWdzKGNvbmZpZ0EsIGNvbmZpZ0IpCisKKyAgICBkZWYgc3N0YXRlX2FsbGFyY2hfc2FtZXNpZ3Moc2VsZiwgY29uZmlnQSwgY29uZmlnQik6CisKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoY29uZmlnQSkKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoIikKKyAgICAgICAgYml0YmFrZSgid29ybGQgbWV0YS10b29sY2hhaW4gLVMgbm9uZSIpCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGNvbmZpZ0IpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaDIiKQorICAgICAgICBiaXRiYWtlKCJ3b3JsZCBtZXRhLXRvb2xjaGFpbiAtUyBub25lIikKKworICAgICAgICBkZWYgZ2V0X2ZpbGVzKGQpOgorICAgICAgICAgICAgZiA9IHt9CisgICAgICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhkKToKKyAgICAgICAgICAgICAgICBmb3IgbmFtZSBpbiBmaWxlczoKKyAgICAgICAgICAgICAgICAgICAgaWYgIm1ldGEtZW52aXJvbm1lbnQiIGluIHJvb3Qgb3IgImNyb3NzLWNhbmFkaWFuIiBpbiByb290OgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgaWYgImRvX2J1aWxkIiBub3QgaW4gbmFtZToKKyAgICAgICAgICAgICAgICAgICAgICAgICMgMS40LjErZ2l0QVVUT0lOQyszMDJmY2E5ZjRjLXIwLmRvX3BhY2thZ2Vfd3JpdGVfaXBrLnNpZ2RhdGEuZjNhMmEzODY5N2RhNzQzZjBkYmVkOGI1NmFhZmNmNzkKKyAgICAgICAgICAgICAgICAgICAgICAgIChfLCB0YXNrLCBfLCBzaGFzaCkgPSBuYW1lLnJzcGxpdCgiLiIsIDMpCisgICAgICAgICAgICAgICAgICAgICAgICBmW29zLnBhdGguam9pbihvcy5wYXRoLmJhc2VuYW1lKHJvb3QpLCB0YXNrKV0gPSBzaGFzaAorICAgICAgICAgICAgcmV0dXJuIGYKKyAgICAgICAgZmlsZXMxID0gZ2V0X2ZpbGVzKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gvc3RhbXBzL2FsbCIgKyBzZWxmLnRhcmdldF92ZW5kb3IgKyAiLSIgKyBzZWxmLnRhcmdldF9vcykKKyAgICAgICAgZmlsZXMyID0gZ2V0X2ZpbGVzKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gyL3N0YW1wcy9hbGwiICsgc2VsZi50YXJnZXRfdmVuZG9yICsgIi0iICsgc2VsZi50YXJnZXRfb3MpCisgICAgICAgIHNlbGYubWF4RGlmZiA9IE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlczEsIGZpbGVzMikKKworICAgICAgICBuYXRpdmVzZGtkaXIgPSBvcy5wYXRoLmJhc2VuYW1lKGdsb2IuZ2xvYihzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoL3N0YW1wcy8qLW5hdGl2ZXNkayotbGludXgiKVswXSkKKworICAgICAgICBmaWxlczEgPSBnZXRfZmlsZXMoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaC9zdGFtcHMvIiArIG5hdGl2ZXNka2RpcikKKyAgICAgICAgZmlsZXMyID0gZ2V0X2ZpbGVzKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gyL3N0YW1wcy8iICsgbmF0aXZlc2RrZGlyKQorICAgICAgICBzZWxmLm1heERpZmYgPSBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZXMxLCBmaWxlczIpCisKKyAgICBAT0VUZXN0SUQoMTM2OSkKKyAgICBkZWYgdGVzdF9zc3RhdGVfc2FtZXR1bmVfc2FtZXNpZ3Moc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUaGUgc3N0YXRlIGNoZWNrc3VtcyBvZiB0d28gaWRlbnRpY2FsIG1hY2hpbmVzICh1c2luZyB0aGUgc2FtZSB0dW5lKSBzaG91bGQgYmUgdGhlCisgICAgICAgIHNhbWUsIGFwYXJ0IGZyb20gY2hhbmdlcyB3aXRoaW4gdGhlIG1hY2hpbmUgc3BlY2lmaWMgc3RhbXBzIGRpcmVjdG9yeS4gV2UgdXNlIHRoZQorICAgICAgICBxZW11eDg2Y29weSBtYWNoaW5lIHRvIHRlc3QgdGhpcy4gQWxzbyBpbmNsdWRlIG11bHRpbGlicyBpbiB0aGUgdGVzdC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIiIiCitUTVBESVIgPSBcIiR7VE9QRElSfS90bXAtc3N0YXRlc2FtZWhhc2hcIgorTUFDSElORSA9IFwicWVtdXg4NlwiCityZXF1aXJlIGNvbmYvbXVsdGlsaWIuY29uZgorTVVMVElMSUJTID0gIm11bHRpbGliOmxpYjMyIgorREVGQVVMVFRVTkVfdmlydGNsYXNzLW11bHRpbGliLWxpYjMyID0gIng4NiIKKyIiIikKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoIikKKyAgICAgICAgYml0YmFrZSgid29ybGQgbWV0YS10b29sY2hhaW4gLVMgbm9uZSIpCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCIiIgorVE1QRElSID0gXCIke1RPUERJUn0vdG1wLXNzdGF0ZXNhbWVoYXNoMlwiCitNQUNISU5FID0gXCJxZW11eDg2Y29weVwiCityZXF1aXJlIGNvbmYvbXVsdGlsaWIuY29uZgorTVVMVElMSUJTID0gIm11bHRpbGliOmxpYjMyIgorREVGQVVMVFRVTkVfdmlydGNsYXNzLW11bHRpbGliLWxpYjMyID0gIng4NiIKKyIiIikKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoMiIpCisgICAgICAgIGJpdGJha2UoIndvcmxkIG1ldGEtdG9vbGNoYWluIC1TIG5vbmUiKQorCisgICAgICAgIGRlZiBnZXRfZmlsZXMoZCk6CisgICAgICAgICAgICBmID0gW10KKyAgICAgICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKGQpOgorICAgICAgICAgICAgICAgIGZvciBuYW1lIGluIGZpbGVzOgorICAgICAgICAgICAgICAgICAgICBpZiAibWV0YS1lbnZpcm9ubWVudCIgaW4gcm9vdCBvciAiY3Jvc3MtY2FuYWRpYW4iIGluIHJvb3Q6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICBpZiAicWVtdXg4NmNvcHktIiBpbiByb290IG9yICJxZW11eDg2LSIgaW4gcm9vdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgIGlmICJkb19idWlsZCIgbm90IGluIG5hbWUgYW5kICJkb19wb3B1bGF0ZV9zZGsiIG5vdCBpbiBuYW1lOgorICAgICAgICAgICAgICAgICAgICAgICAgZi5hcHBlbmQob3MucGF0aC5qb2luKHJvb3QsIG5hbWUpKQorICAgICAgICAgICAgcmV0dXJuIGYKKyAgICAgICAgZmlsZXMxID0gZ2V0X2ZpbGVzKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gvc3RhbXBzIikKKyAgICAgICAgZmlsZXMyID0gZ2V0X2ZpbGVzKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gyL3N0YW1wcyIpCisgICAgICAgIGZpbGVzMiA9IFt4LnJlcGxhY2UoInRtcC1zc3RhdGVzYW1laGFzaDIiLCAidG1wLXNzdGF0ZXNhbWVoYXNoIikgZm9yIHggaW4gZmlsZXMyXQorICAgICAgICBzZWxmLm1heERpZmYgPSBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0Q291bnRFcXVhbChmaWxlczEsIGZpbGVzMikKKworCisgICAgQE9FVGVzdElEKDE0OTgpCisgICAgZGVmIHRlc3Rfc3N0YXRlX25vb3Bfc2FtZXNpZ3Moc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUaGUgc3N0YXRlIGNoZWNrc3VtcyBvZiB0d28gYnVpbGRzIHdpdGggdGhlc2UgdmFyaWFibGVzIGNoYW5nZWQgb3IKKyAgICAgICAgY2xhc3NlcyBpbmhlcml0cyBzaG91bGQgYmUgdGhlIHNhbWUuCisgICAgICAgICIiIgorCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCIiIgorVE1QRElSID0gIiR7VE9QRElSfS90bXAtc3N0YXRlc2FtZWhhc2giCitCQl9OVU1CRVJfVEhSRUFEUyA9ICIke0BvZS51dGlscy5jcHVfY291bnQoKX0iCitQQVJBTExFTF9NQUtFID0gIi1qIDEiCitETF9ESVIgPSAiJHtUT1BESVJ9L2Rvd25sb2FkMSIKK1RJTUUgPSAiMTExMTExIgorREFURSA9ICIyMDE2MTExMSIKK0lOSEVSSVRfcmVtb3ZlID0gImJ1aWxkc3RhdHMtc3VtbWFyeSBidWlsZGhpc3RvcnkgdW5pbmF0aXZlIgoraHR0cF9wcm94eSA9ICIiCisiIiIpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaCIpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi50b3BkaXIgKyAiL2Rvd25sb2FkMSIpCisgICAgICAgIGJpdGJha2UoIndvcmxkIG1ldGEtdG9vbGNoYWluIC1TIG5vbmUiKQorICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiIiIKK1RNUERJUiA9ICIke1RPUERJUn0vdG1wLXNzdGF0ZXNhbWVoYXNoMiIKK0JCX05VTUJFUl9USFJFQURTID0gIiR7QG9lLnV0aWxzLmNwdV9jb3VudCgpKzF9IgorUEFSQUxMRUxfTUFLRSA9ICItaiAyIgorRExfRElSID0gIiR7VE9QRElSfS9kb3dubG9hZDIiCitUSU1FID0gIjIyMjIyMiIKK0RBVEUgPSAiMjAxNjEyMTIiCisjIEFsd2F5cyByZW1vdmUgdW5pbmF0aXZlIGFzIHdlJ3JlIGNoYW5naW5nIHByb3hpZXMKK0lOSEVSSVRfcmVtb3ZlID0gInVuaW5hdGl2ZSIKK0lOSEVSSVQgKz0gImJ1aWxkc3RhdHMtc3VtbWFyeSBidWlsZGhpc3RvcnkiCitodHRwX3Byb3h5ID0gImh0dHA6Ly9leGFtcGxlLmNvbS8iCisiIiIpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaDIiKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYudG9wZGlyICsgIi9kb3dubG9hZDIiKQorICAgICAgICBiaXRiYWtlKCJ3b3JsZCBtZXRhLXRvb2xjaGFpbiAtUyBub25lIikKKworICAgICAgICBkZWYgZ2V0X2ZpbGVzKGQpOgorICAgICAgICAgICAgZiA9IHt9CisgICAgICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhkKToKKyAgICAgICAgICAgICAgICBmb3IgbmFtZSBpbiBmaWxlczoKKyAgICAgICAgICAgICAgICAgICAgbmFtZSwgc2hhc2ggPSBuYW1lLnJzcGxpdCgnLicsIDEpCisgICAgICAgICAgICAgICAgICAgICMgRXh0cmFjdCBqdXN0IHRoZSBtYWNoaW5lIGFuZCByZWNpcGUgbmFtZQorICAgICAgICAgICAgICAgICAgICBiYXNlID0gb3Muc2VwLmpvaW4ocm9vdC5yc3BsaXQob3Muc2VwLCAyKVstMjpdICsgW25hbWVdKQorICAgICAgICAgICAgICAgICAgICBmW2Jhc2VdID0gc2hhc2gKKyAgICAgICAgICAgIHJldHVybiBmCisKKyAgICAgICAgZGVmIGNvbXBhcmVfc2lnZmlsZXMoZmlsZXMsIGZpbGVzMSwgZmlsZXMyLCBjb21wYXJlPUZhbHNlKToKKyAgICAgICAgICAgIGZvciBrIGluIGZpbGVzOgorICAgICAgICAgICAgICAgIGlmIGsgaW4gZmlsZXMxIGFuZCBrIGluIGZpbGVzMjoKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiVzIGRpZmZlcnM6IiAlIGspCisgICAgICAgICAgICAgICAgICAgIGlmIGNvbXBhcmU6CisgICAgICAgICAgICAgICAgICAgICAgICBzaWdkYXRhZmlsZTEgPSBzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoL3N0YW1wcy8iICsgayArICIuIiArIGZpbGVzMVtrXQorICAgICAgICAgICAgICAgICAgICAgICAgc2lnZGF0YWZpbGUyID0gc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaDIvc3RhbXBzLyIgKyBrICsgIi4iICsgZmlsZXMyW2tdCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSBiYi5zaWdnZW4uY29tcGFyZV9zaWdmaWxlcyhzaWdkYXRhZmlsZTEsIHNpZ2RhdGFmaWxlMikKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIG91dHB1dDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgnXG4nLmpvaW4ob3V0cHV0KSkKKyAgICAgICAgICAgICAgICBlbGlmIGsgaW4gZmlsZXMxIGFuZCBrIG5vdCBpbiBmaWxlczI6CisgICAgICAgICAgICAgICAgICAgIHByaW50KCIlcyBpbiBmaWxlczEiICUgaykKKyAgICAgICAgICAgICAgICBlbGlmIGsgbm90IGluIGZpbGVzMSBhbmQgayBpbiBmaWxlczI6CisgICAgICAgICAgICAgICAgICAgIHByaW50KCIlcyBpbiBmaWxlczIiICUgaykKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBhc3NlcnQgInNob3VsZG4ndCByZWFjaCBoZXJlIgorCisgICAgICAgIGZpbGVzMSA9IGdldF9maWxlcyhzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoL3N0YW1wcy8iKQorICAgICAgICBmaWxlczIgPSBnZXRfZmlsZXMoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaDIvc3RhbXBzLyIpCisgICAgICAgICMgUmVtb3ZlIGl0ZW1zIHRoYXQgYXJlIGlkZW50aWNhbCBpbiBib3RoIHNldHMKKyAgICAgICAgZm9yIGssdiBpbiBmaWxlczEuaXRlbXMoKSAmIGZpbGVzMi5pdGVtcygpOgorICAgICAgICAgICAgZGVsIGZpbGVzMVtrXQorICAgICAgICAgICAgZGVsIGZpbGVzMltrXQorICAgICAgICBpZiBub3QgZmlsZXMxIGFuZCBub3QgZmlsZXMyOgorICAgICAgICAgICAgIyBObyBjaGFuZ2VzLCBzbyB3ZSdyZSBkb25lCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBmaWxlcyA9IGxpc3QoZmlsZXMxLmtleXMoKSB8IGZpbGVzMi5rZXlzKCkpCisgICAgICAgICMgdGhpcyBpcyBhbiBleHBlbnNpdmUgY29tcHV0YXRpb24sIHRodXMganVzdCBjb21wYXJlIHRoZSBmaXJzdCAnbWF4X3NpZ2ZpbGVzX3RvX2NvbXBhcmUnIGsgZmlsZXMKKyAgICAgICAgbWF4X3NpZ2ZpbGVzX3RvX2NvbXBhcmUgPSAyMAorICAgICAgICBmaXJzdCwgcmVzdCA9IGZpbGVzWzptYXhfc2lnZmlsZXNfdG9fY29tcGFyZV0sIGZpbGVzW21heF9zaWdmaWxlc190b19jb21wYXJlOl0KKyAgICAgICAgY29tcGFyZV9zaWdmaWxlcyhmaXJzdCwgZmlsZXMxLmtleXMoKSwgZmlsZXMyLmtleXMoKSwgY29tcGFyZT1UcnVlKQorICAgICAgICBjb21wYXJlX3NpZ2ZpbGVzKHJlc3QsIGZpbGVzMS5rZXlzKCksIGZpbGVzMi5rZXlzKCksIGNvbXBhcmU9RmFsc2UpCisKKyAgICAgICAgc2VsZi5mYWlsKCJzc3RhdGUgaGFzaGVzIG5vdCBpZGVudGljYWwuIikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3RpbmZvaWwucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy90aW5mb2lsLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4ODlhNDcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy90aW5mb2lsLnB5CkBAIC0wLDAgKzEsMjMxIEBACitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHRpbWUKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgYmIudGluZm9pbAorCitmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZSBpbXBvcnQgT0VTZWxmdGVzdFRlc3RDYXNlCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZAorZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLm9laWQgaW1wb3J0IE9FVGVzdElECisKK2NsYXNzIFRpbmZvaWxUZXN0cyhPRVNlbGZ0ZXN0VGVzdENhc2UpOgorICAgICIiIiBCYXNpYyB0ZXN0cyBmb3IgdGhlIHRpbmZvaWwgQVBJICIiIgorCisgICAgQE9FVGVzdElEKDE1NjgpCisgICAgZGVmIHRlc3RfZ2V0dmFyKHNlbGYpOgorICAgICAgICB3aXRoIGJiLnRpbmZvaWwuVGluZm9pbCgpIGFzIHRpbmZvaWw6CisgICAgICAgICAgICB0aW5mb2lsLnByZXBhcmUoVHJ1ZSkKKyAgICAgICAgICAgIG1hY2hpbmUgPSB0aW5mb2lsLmNvbmZpZ19kYXRhLmdldFZhcignTUFDSElORScpCisgICAgICAgICAgICBpZiBub3QgbWFjaGluZToKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuYWJsZSB0byBnZXQgTUFDSElORSB2YWx1ZSAtIHJldHVybmVkICVzJyAlIG1hY2hpbmUpCisKKyAgICBAT0VUZXN0SUQoMTU2OSkKKyAgICBkZWYgdGVzdF9leHBhbmQoc2VsZik6CisgICAgICAgIHdpdGggYmIudGluZm9pbC5UaW5mb2lsKCkgYXMgdGluZm9pbDoKKyAgICAgICAgICAgIHRpbmZvaWwucHJlcGFyZShUcnVlKQorICAgICAgICAgICAgZXhwciA9ICcke0Bvcy5nZXRwaWQoKX0nCisgICAgICAgICAgICBwaWQgPSB0aW5mb2lsLmNvbmZpZ19kYXRhLmV4cGFuZChleHByKQorICAgICAgICAgICAgaWYgbm90IHBpZDoKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuYWJsZSB0byBleHBhbmQgIiVzIiAtIHJldHVybmVkICVzJyAlIChleHByLCBwaWQpKQorCisgICAgQE9FVGVzdElEKDE1NzApCisgICAgZGVmIHRlc3RfZ2V0dmFyX2JiX29yaWdlbnYoc2VsZik6CisgICAgICAgIHdpdGggYmIudGluZm9pbC5UaW5mb2lsKCkgYXMgdGluZm9pbDoKKyAgICAgICAgICAgIHRpbmZvaWwucHJlcGFyZShUcnVlKQorICAgICAgICAgICAgb3JpZ2VudiA9IHRpbmZvaWwuY29uZmlnX2RhdGEuZ2V0VmFyKCdCQl9PUklHRU5WJywgRmFsc2UpCisgICAgICAgICAgICBpZiBub3Qgb3JpZ2VudjoKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuYWJsZSB0byBnZXQgQkJfT1JJR0VOViB2YWx1ZSAtIHJldHVybmVkICVzJyAlIG9yaWdlbnYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9yaWdlbnYuZ2V0VmFyKCdIT01FJywgRmFsc2UpLCBvcy5lbnZpcm9uWydIT01FJ10pCisKKyAgICBAT0VUZXN0SUQoMTU3MSkKKyAgICBkZWYgdGVzdF9wYXJzZV9yZWNpcGUoc2VsZik6CisgICAgICAgIHdpdGggYmIudGluZm9pbC5UaW5mb2lsKCkgYXMgdGluZm9pbDoKKyAgICAgICAgICAgIHRpbmZvaWwucHJlcGFyZShjb25maWdfb25seT1GYWxzZSwgcXVpZXQ9MikKKyAgICAgICAgICAgIHRlc3RyZWNpcGUgPSAnbWRhZG0nCisgICAgICAgICAgICBiZXN0ID0gdGluZm9pbC5maW5kX2Jlc3RfcHJvdmlkZXIodGVzdHJlY2lwZSkKKyAgICAgICAgICAgIGlmIG5vdCBiZXN0OgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5hYmxlIHRvIGZpbmQgcmVjaXBlIHByb3ZpZGluZyAlcycgJSB0ZXN0cmVjaXBlKQorICAgICAgICAgICAgcmQgPSB0aW5mb2lsLnBhcnNlX3JlY2lwZV9maWxlKGJlc3RbM10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RyZWNpcGUsIHJkLmdldFZhcignUE4nKSkKKworICAgIEBPRVRlc3RJRCgxNTcyKQorICAgIGRlZiB0ZXN0X3BhcnNlX3JlY2lwZV9jb3B5X2V4cGFuZChzZWxmKToKKyAgICAgICAgd2l0aCBiYi50aW5mb2lsLlRpbmZvaWwoKSBhcyB0aW5mb2lsOgorICAgICAgICAgICAgdGluZm9pbC5wcmVwYXJlKGNvbmZpZ19vbmx5PUZhbHNlLCBxdWlldD0yKQorICAgICAgICAgICAgdGVzdHJlY2lwZSA9ICdtZGFkbScKKyAgICAgICAgICAgIGJlc3QgPSB0aW5mb2lsLmZpbmRfYmVzdF9wcm92aWRlcih0ZXN0cmVjaXBlKQorICAgICAgICAgICAgaWYgbm90IGJlc3Q6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdVbmFibGUgdG8gZmluZCByZWNpcGUgcHJvdmlkaW5nICVzJyAlIHRlc3RyZWNpcGUpCisgICAgICAgICAgICByZCA9IHRpbmZvaWwucGFyc2VfcmVjaXBlX2ZpbGUoYmVzdFszXSkKKyAgICAgICAgICAgICMgQ2hlY2sgd2UgY2FuIGdldCB2YXJpYWJsZSB2YWx1ZXMKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdHJlY2lwZSwgcmQuZ2V0VmFyKCdQTicpKQorICAgICAgICAgICAgIyBDaGVjayB0aGF0IGV4cGFuZGluZyBhIHZhbHVlIHRoYXQgaW5jbHVkZXMgYSB2YXJpYWJsZSByZWZlcmVuY2Ugd29ya3MKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdHJlY2lwZSwgcmQuZ2V0VmFyKCdCUE4nKSkKKyAgICAgICAgICAgICMgTm93IGNoZWNrIHRoYXQgY2hhbmdpbmcgdGhlIHJlZmVyZW5jZWQgdmFyaWFibGUncyB2YWx1ZSBpbiBhIGNvcHkgZ2l2ZXMgdGhhdAorICAgICAgICAgICAgIyB2YWx1ZSB3aGVuIGV4cGFuZGluZworICAgICAgICAgICAgbG9jYWxkYXRhID0gYmIuZGF0YS5jcmVhdGVDb3B5KHJkKQorICAgICAgICAgICAgbG9jYWxkYXRhLnNldFZhcignUE4nLCAnaGVsbG8nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaGVsbG8nLCBsb2NhbGRhdGEuZ2V0VmFyKCdCUE4nKSkKKworICAgIEBPRVRlc3RJRCgxNTczKQorICAgIGRlZiB0ZXN0X3BhcnNlX3JlY2lwZV9pbml0aWFsX2RhdGFzdG9yZShzZWxmKToKKyAgICAgICAgd2l0aCBiYi50aW5mb2lsLlRpbmZvaWwoKSBhcyB0aW5mb2lsOgorICAgICAgICAgICAgdGluZm9pbC5wcmVwYXJlKGNvbmZpZ19vbmx5PUZhbHNlLCBxdWlldD0yKQorICAgICAgICAgICAgdGVzdHJlY2lwZSA9ICdtZGFkbScKKyAgICAgICAgICAgIGJlc3QgPSB0aW5mb2lsLmZpbmRfYmVzdF9wcm92aWRlcih0ZXN0cmVjaXBlKQorICAgICAgICAgICAgaWYgbm90IGJlc3Q6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdVbmFibGUgdG8gZmluZCByZWNpcGUgcHJvdmlkaW5nICVzJyAlIHRlc3RyZWNpcGUpCisgICAgICAgICAgICBkY29weSA9IGJiLmRhdGEuY3JlYXRlQ29weSh0aW5mb2lsLmNvbmZpZ19kYXRhKQorICAgICAgICAgICAgZGNvcHkuc2V0VmFyKCdNWVZBUklBQkxFJywgJ3NvbWV2YWx1ZScpCisgICAgICAgICAgICByZCA9IHRpbmZvaWwucGFyc2VfcmVjaXBlX2ZpbGUoYmVzdFszXSwgY29uZmlnX2RhdGE9ZGNvcHkpCisgICAgICAgICAgICAjIENoZWNrIHdlIGNhbiBnZXQgdmFyaWFibGUgdmFsdWVzCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdzb21ldmFsdWUnLCByZC5nZXRWYXIoJ01ZVkFSSUFCTEUnKSkKKworICAgIEBPRVRlc3RJRCgxNTc0KQorICAgIGRlZiB0ZXN0X2xpc3RfcmVjaXBlcyhzZWxmKToKKyAgICAgICAgd2l0aCBiYi50aW5mb2lsLlRpbmZvaWwoKSBhcyB0aW5mb2lsOgorICAgICAgICAgICAgdGluZm9pbC5wcmVwYXJlKGNvbmZpZ19vbmx5PUZhbHNlLCBxdWlldD0yKQorICAgICAgICAgICAgIyBDaGVjayBwa2dfcG4KKyAgICAgICAgICAgIGNoZWNrcG5zID0gWyd0YXInLCAnYXV0b21ha2UnLCAnY29yZXV0aWxzJywgJ200LW5hdGl2ZScsICduYXRpdmVzZGstZ2NjJ10KKyAgICAgICAgICAgIHBrZ19wbiA9IHRpbmZvaWwuY29va2VyLnJlY2lwZWNhY2hlc1snJ10ucGtnX3BuCisgICAgICAgICAgICBmb3IgcG4gaW4gY2hlY2twbnM6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihwbiwgcGtnX3BuKQorICAgICAgICAgICAgIyBDaGVjayBwa2dfZm4KKyAgICAgICAgICAgIGNoZWNrZm5zID0geyduYXRpdmVzZGstZ2NjJzogJ152aXJ0dWFsOm5hdGl2ZXNkazouKicsICdjb3JldXRpbHMnOiAnLiovY29yZXV0aWxzXy4qLmJiJ30KKyAgICAgICAgICAgIGZvciBmbiwgcG4gaW4gdGluZm9pbC5jb29rZXIucmVjaXBlY2FjaGVzWycnXS5wa2dfZm4uaXRlbXMoKToKKyAgICAgICAgICAgICAgICBpZiBwbiBpbiBjaGVja3BuczoKKyAgICAgICAgICAgICAgICAgICAgaWYgcG4gaW4gY2hlY2tmbnM6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goY2hlY2tmbnNbcG5dLCBmbiksICdFbnRyeSBmb3IgJXM6ICVzIGRpZCBub3QgbWF0Y2ggJXMnICUgKHBuLCBmbiwgY2hlY2tmbnNbcG5dKSkKKyAgICAgICAgICAgICAgICAgICAgY2hlY2twbnMucmVtb3ZlKHBuKQorICAgICAgICAgICAgaWYgY2hlY2twbnM6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdVbmFibGUgdG8gZmluZCBwa2dfZm4gZW50cmllcyBmb3I6ICVzJyAlICcsICcuam9pbihjaGVja3BucykpCisKKyAgICBAT0VUZXN0SUQoMTU3NSkKKyAgICBkZWYgdGVzdF93YWl0X2V2ZW50KHNlbGYpOgorICAgICAgICB3aXRoIGJiLnRpbmZvaWwuVGluZm9pbCgpIGFzIHRpbmZvaWw6CisgICAgICAgICAgICB0aW5mb2lsLnByZXBhcmUoY29uZmlnX29ubHk9VHJ1ZSkKKworICAgICAgICAgICAgdGluZm9pbC5zZXRfZXZlbnRfbWFzayhbJ2JiLmV2ZW50LkZpbGVzTWF0Y2hpbmdGb3VuZCcsICdiYi5jb21tYW5kLkNvbW1hbmRDb21wbGV0ZWQnXSkKKworICAgICAgICAgICAgIyBOZWVkIHRvIGRyYWluIGV2ZW50cyBvdGhlcndpc2UgZXZlbnRzIHRoYXQgd2VyZSBtYXNrZWQgbWF5IHN0aWxsIGJlIGluIHRoZSBxdWV1ZQorICAgICAgICAgICAgd2hpbGUgdGluZm9pbC53YWl0X2V2ZW50KCk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgICAgICBwYXR0ZXJuID0gJ2NvbmYnCisgICAgICAgICAgICByZXMgPSB0aW5mb2lsLnJ1bl9jb21tYW5kKCdmaW5kRmlsZXNNYXRjaGluZ0luRGlyJywgcGF0dGVybiwgJ2NvbmYvbWFjaGluZScpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzKQorCisgICAgICAgICAgICBldmVudHJlY2VpdmVkID0gRmFsc2UKKyAgICAgICAgICAgIGNvbW1hbmRjb21wbGV0ZSA9IEZhbHNlCisgICAgICAgICAgICBzdGFydCA9IHRpbWUudGltZSgpCisgICAgICAgICAgICAjIFdhaXQgZm9yIDVzIGluIHRvdGFsIHNvIHdlJ2QgZGV0ZWN0IHNwdXJpb3VzIGhlYXJ0YmVhdCBldmVudHMgZm9yIGV4YW1wbGUKKyAgICAgICAgICAgIHdoaWxlIHRpbWUudGltZSgpIC0gc3RhcnQgPCA1OgorICAgICAgICAgICAgICAgIGV2ZW50ID0gdGluZm9pbC53YWl0X2V2ZW50KDEpCisgICAgICAgICAgICAgICAgaWYgZXZlbnQ6CisgICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmNvbW1hbmQuQ29tbWFuZENvbXBsZXRlZCk6CisgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kY29tcGxldGUgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwgYmIuZXZlbnQuRmlsZXNNYXRjaGluZ0ZvdW5kKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF0dGVybiwgZXZlbnQuX3BhdHRlcm4pCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdxZW11YXJtLmNvbmYnLCBldmVudC5fbWF0Y2hlcykKKyAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50cmVjZWl2ZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwgbG9nZ2luZy5Mb2dSZWNvcmQpOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5leHBlY3RlZCBldmVudDogJXMnICUgZXZlbnQpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb21tYW5kY29tcGxldGUsICdUaW1lZCBvdXQgd2FpdGluZyBmb3IgQ29tbWFuZENvbXBsZXRlZCBldmVudCBmcm9tIGJpdGJha2Ugc2VydmVyJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShldmVudHJlY2VpdmVkLCAnRGlkIG5vdCByZWNlaXZlIEZpbGVzTWF0Y2hpbmdGb3VuZCBldmVudCBmcm9tIGJpdGJha2Ugc2VydmVyJykKKworICAgIEBPRVRlc3RJRCgxNTc2KQorICAgIGRlZiB0ZXN0X3NldHZhcmlhYmxlX2NsZWFuKHNlbGYpOgorICAgICAgICAjIEZpcnN0IGNoZWNrIHRoYXQgc2V0VmFyaWFibGUgYWZmZWN0cyB0aGUgZGF0YXN0b3JlCisgICAgICAgIHdpdGggYmIudGluZm9pbC5UaW5mb2lsKCkgYXMgdGluZm9pbDoKKyAgICAgICAgICAgIHRpbmZvaWwucHJlcGFyZShjb25maWdfb25seT1UcnVlKQorICAgICAgICAgICAgdGluZm9pbC5ydW5fY29tbWFuZCgnc2V0VmFyaWFibGUnLCAnVEVTVFZBUicsICdzcGVjaWFsdmFsdWUnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aW5mb2lsLmNvbmZpZ19kYXRhLmdldFZhcignVEVTVFZBUicpLCAnc3BlY2lhbHZhbHVlJywgJ1ZhbHVlIHNldCB1c2luZyBzZXRWYXJpYWJsZSBpcyBub3QgcmVmbGVjdGVkIGluIGNsaWVudC1zaWRlIGdldFZhcigpJykKKworICAgICAgICAjIE5vdyBjaGVjayB0aGF0IHRoZSBzZXRWYXJpYWJsZSdzIGVmZmVjdHMgYXJlIG5vIGxvbmdlciBwcmVzZW50CisgICAgICAgICMgKHRoaXMgbWF5IGxlZ2l0aW1hdGVseSBicmVhayBpbiBmdXR1cmUgaWYgd2Ugc3RvcCByZWluaXRpYWxpc2luZworICAgICAgICAjIHRoZSBkYXRhc3RvcmUsIGluIHdoaWNoIGNhc2Ugd2UnbGwgaGF2ZSB0byByZWNvbnNpZGVyIHVzZSBvZgorICAgICAgICAjIHNldFZhcmlhYmxlIGVudGlyZWx5KQorICAgICAgICB3aXRoIGJiLnRpbmZvaWwuVGluZm9pbCgpIGFzIHRpbmZvaWw6CisgICAgICAgICAgICB0aW5mb2lsLnByZXBhcmUoY29uZmlnX29ubHk9VHJ1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodGluZm9pbC5jb25maWdfZGF0YS5nZXRWYXIoJ1RFU1RWQVInKSwgJ3NwZWNpYWx2YWx1ZScsICdWYWx1ZSBzZXQgdXNpbmcgc2V0VmFyaWFibGUgaXMgc3RpbGwgcHJlc2VudCEnKQorCisgICAgICAgICMgTm93IGNoZWNrIHRoYXQgc2V0VmFyIG9uIHRoZSBtYWluIGRhdGFzdG9yZSB3b3JrcyAodXNlcyBzZXRWYXJpYWJsZSBpbnRlcm5hbGx5KQorICAgICAgICB3aXRoIGJiLnRpbmZvaWwuVGluZm9pbCgpIGFzIHRpbmZvaWw6CisgICAgICAgICAgICB0aW5mb2lsLnByZXBhcmUoY29uZmlnX29ubHk9VHJ1ZSkKKyAgICAgICAgICAgIHRpbmZvaWwuY29uZmlnX2RhdGEuc2V0VmFyKCdURVNUVkFSJywgJ3NwZWNpYWx2YWx1ZScpCisgICAgICAgICAgICB2YWx1ZSA9IHRpbmZvaWwucnVuX2NvbW1hbmQoJ2dldFZhcmlhYmxlJywgJ1RFU1RWQVInKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZSwgJ3NwZWNpYWx2YWx1ZScsICdWYWx1ZSBzZXQgdXNpbmcgY29uZmlnX2RhdGEuc2V0VmFyKCkgaXMgbm90IHJlZmxlY3RlZCBpbiBjb25maWdfZGF0YS5nZXRWYXIoKScpCisKKyAgICBAT0VUZXN0SUQoMTg4NCkKKyAgICBkZWYgdGVzdF9kYXRhc3RvcmVfb3BlcmF0aW9ucyhzZWxmKToKKyAgICAgICAgd2l0aCBiYi50aW5mb2lsLlRpbmZvaWwoKSBhcyB0aW5mb2lsOgorICAgICAgICAgICAgdGluZm9pbC5wcmVwYXJlKGNvbmZpZ19vbmx5PVRydWUpCisgICAgICAgICAgICAjIFRlc3Qgc2V0VmFyRmxhZygpIC8gZ2V0VmFyRmxhZygpCisgICAgICAgICAgICB0aW5mb2lsLmNvbmZpZ19kYXRhLnNldFZhckZsYWcoJ1RFU1RWQVInLCAnZmxhZ25hbWUnLCAnZmxhZ3ZhbCcpCisgICAgICAgICAgICB2YWx1ZSA9IHRpbmZvaWwuY29uZmlnX2RhdGEuZ2V0VmFyRmxhZygnVEVTVFZBUicsICdmbGFnbmFtZScpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLCAnZmxhZ3ZhbCcsICdWYWx1ZSBzZXQgdXNpbmcgY29uZmlnX2RhdGEuc2V0VmFyRmxhZygpIGlzIG5vdCByZWZsZWN0ZWQgaW4gY29uZmlnX2RhdGEuZ2V0VmFyRmxhZygpJykKKyAgICAgICAgICAgICMgVGVzdCBkZWxWYXJGbGFnKCkKKyAgICAgICAgICAgIHRpbmZvaWwuY29uZmlnX2RhdGEuc2V0VmFyRmxhZygnVEVTVFZBUicsICdvdGhlcmZsYWcnLCAnb3RoZXJ2YWx1ZScpCisgICAgICAgICAgICB0aW5mb2lsLmNvbmZpZ19kYXRhLmRlbFZhckZsYWcoJ1RFU1RWQVInLCAnZmxhZ25hbWUnKQorICAgICAgICAgICAgdmFsdWUgPSB0aW5mb2lsLmNvbmZpZ19kYXRhLmdldFZhckZsYWcoJ1RFU1RWQVInLCAnZmxhZ25hbWUnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZSwgTm9uZSwgJ1ZhcmZsYWcgZGVsZXRlZCB1c2luZyBjb25maWdfZGF0YS5kZWxWYXJGbGFnKCkgaXMgbm90IHJlZmxlY3RlZCBpbiBjb25maWdfZGF0YS5nZXRWYXJGbGFnKCknKQorICAgICAgICAgICAgdmFsdWUgPSB0aW5mb2lsLmNvbmZpZ19kYXRhLmdldFZhckZsYWcoJ1RFU1RWQVInLCAnb3RoZXJmbGFnJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUsICdvdGhlcnZhbHVlJywgJ1ZhcmZsYWcgZGVsZXRlZCB1c2luZyBjb25maWdfZGF0YS5kZWxWYXJGbGFnKCkgY2F1c2VkIHVucmVsYXRlZCBmbGFnIHRvIGJlIHJlbW92ZWQnKQorICAgICAgICAgICAgIyBUZXN0IGRlbFZhcigpCisgICAgICAgICAgICB0aW5mb2lsLmNvbmZpZ19kYXRhLnNldFZhcignVEVTVFZBUicsICd2YXJ2YWx1ZScpCisgICAgICAgICAgICB2YWx1ZSA9IHRpbmZvaWwuY29uZmlnX2RhdGEuZ2V0VmFyKCdURVNUVkFSJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUsICd2YXJ2YWx1ZScsICdWYWx1ZSBzZXQgdXNpbmcgY29uZmlnX2RhdGEuc2V0VmFyKCkgaXMgbm90IHJlZmxlY3RlZCBpbiBjb25maWdfZGF0YS5nZXRWYXIoKScpCisgICAgICAgICAgICB0aW5mb2lsLmNvbmZpZ19kYXRhLmRlbFZhcignVEVTVFZBUicpCisgICAgICAgICAgICB2YWx1ZSA9IHRpbmZvaWwuY29uZmlnX2RhdGEuZ2V0VmFyKCdURVNUVkFSJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUsIE5vbmUsICdWYXJpYWJsZSBkZWxldGVkIHVzaW5nIGNvbmZpZ19kYXRhLmRlbFZhcigpIGFwcGVhcnMgdG8gc3RpbGwgaGF2ZSBhIHZhbHVlJykKKyAgICAgICAgICAgICMgVGVzdCByZW5hbWVWYXIoKQorICAgICAgICAgICAgdGluZm9pbC5jb25maWdfZGF0YS5zZXRWYXIoJ1RFU1RWQVJPTEQnLCAnb3JpZ3ZhbHVlJykKKyAgICAgICAgICAgIHRpbmZvaWwuY29uZmlnX2RhdGEucmVuYW1lVmFyKCdURVNUVkFST0xEJywgJ1RFU1RWQVJORVcnKQorICAgICAgICAgICAgdmFsdWUgPSB0aW5mb2lsLmNvbmZpZ19kYXRhLmdldFZhcignVEVTVFZBUk9MRCcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLCBOb25lLCAnVmFyaWFibGUgcmVuYW1lZCB1c2luZyBjb25maWdfZGF0YS5yZW5hbWVWYXIoKSBzdGlsbCBzZWVtcyB0byBleGlzdCcpCisgICAgICAgICAgICB2YWx1ZSA9IHRpbmZvaWwuY29uZmlnX2RhdGEuZ2V0VmFyKCdURVNUVkFSTkVXJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUsICdvcmlndmFsdWUnLCAnVmFyaWFibGUgcmVuYW1lZCB1c2luZyBjb25maWdfZGF0YS5yZW5hbWVWYXIoKSBkb2VzIG5vdCBhcHBlYXIgd2l0aCBuZXcgbmFtZScpCisgICAgICAgICAgICAjIFRlc3Qgb3ZlcnJpZGVzCisgICAgICAgICAgICB0aW5mb2lsLmNvbmZpZ19kYXRhLnNldFZhcignVEVTVFZBUicsICdvcmlnaW5hbCcpCisgICAgICAgICAgICB0aW5mb2lsLmNvbmZpZ19kYXRhLnNldFZhcignVEVTVFZBUl9vdmVycmlkZW9uZScsICdvbmUnKQorICAgICAgICAgICAgdGluZm9pbC5jb25maWdfZGF0YS5zZXRWYXIoJ1RFU1RWQVJfb3ZlcnJpZGV0d28nLCAndHdvJykKKyAgICAgICAgICAgIHRpbmZvaWwuY29uZmlnX2RhdGEuYXBwZW5kVmFyKCdPVkVSUklERVMnLCAnOm92ZXJyaWRlb25lJykKKyAgICAgICAgICAgIHZhbHVlID0gdGluZm9pbC5jb25maWdfZGF0YS5nZXRWYXIoJ1RFU1RWQVInKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZSwgJ29uZScsICdWYXJpYWJsZSBvdmVycmlkZXMgbm90IGZ1bmN0aW9uaW5nIGNvcnJlY3RseScpCisKKyAgICBkZWYgdGVzdF92YXJpYWJsZV9oaXN0b3J5KHNlbGYpOgorICAgICAgICAjIEJhc2ljIHRlc3QgdG8gZW5zdXJlIHRoYXQgdmFyaWFibGUgaGlzdG9yeSB3b3JrcyB3aGVuIHRyYWNraW5nPVRydWUKKyAgICAgICAgd2l0aCBiYi50aW5mb2lsLlRpbmZvaWwodHJhY2tpbmc9VHJ1ZSkgYXMgdGluZm9pbDoKKyAgICAgICAgICAgIHRpbmZvaWwucHJlcGFyZShjb25maWdfb25seT1GYWxzZSwgcXVpZXQ9MikKKyAgICAgICAgICAgICMgTm90ZSB0aGF0IF90cmFja2luZyBmb3IgYW55IGRhdGFzdG9yZSB3ZSBnZXQgd2lsbCBiZQorICAgICAgICAgICAgIyBmYWxzZSBoZXJlLCB0aGF0J3MgY3VycmVudGx5IGV4cGVjdGVkIC0gc28gd2UgY2FuJ3QgY2hlY2sKKyAgICAgICAgICAgICMgZm9yIHRoYXQKKyAgICAgICAgICAgIGhpc3RvcnkgPSB0aW5mb2lsLmNvbmZpZ19kYXRhLnZhcmhpc3RvcnkudmFyaWFibGUoJ0RMX0RJUicpCisgICAgICAgICAgICBmb3IgZW50cnkgaW4gaGlzdG9yeToKKyAgICAgICAgICAgICAgICBpZiBlbnRyeVsnZmlsZSddLmVuZHN3aXRoKCcvYml0YmFrZS5jb25mJyk6CisgICAgICAgICAgICAgICAgICAgIGlmIGVudHJ5WydvcCddIGluIFsnc2V0JywgJ3NldD8nXToKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnRGlkIG5vdCBmaW5kIGhpc3RvcnkgZW50cnkgc2V0dGluZyBETF9ESVIgaW4gYml0YmFrZS5jb25mLiBIaXN0b3J5OiAlcycgJSBoaXN0b3J5KQorICAgICAgICAgICAgIyBDaGVjayBpdCB3b3JrcyBmb3IgcmVjaXBlcyBhcyB3ZWxsCisgICAgICAgICAgICB0ZXN0cmVjaXBlID0gJ3psaWInCisgICAgICAgICAgICByZCA9IHRpbmZvaWwucGFyc2VfcmVjaXBlKHRlc3RyZWNpcGUpCisgICAgICAgICAgICBoaXN0b3J5ID0gcmQudmFyaGlzdG9yeS52YXJpYWJsZSgnTElDRU5TRScpCisgICAgICAgICAgICBiYmZvdW5kID0gLTEKKyAgICAgICAgICAgIHJlY2lwZWZvdW5kID0gLTEKKyAgICAgICAgICAgIGZvciBpLCBlbnRyeSBpbiBlbnVtZXJhdGUoaGlzdG9yeSk6CisgICAgICAgICAgICAgICAgaWYgZW50cnlbJ2ZpbGUnXS5lbmRzd2l0aCgnL2JpdGJha2UuY29uZicpOgorICAgICAgICAgICAgICAgICAgICBpZiBlbnRyeVsnZGV0YWlsJ10gPT0gJ0lOVkFMSUQnIGFuZCBlbnRyeVsnb3AnXSBpbiBbJ3NldCcsICdzZXQ/J106CisgICAgICAgICAgICAgICAgICAgICAgICBiYmZvdW5kID0gaQorICAgICAgICAgICAgICAgIGVsaWYgZW50cnlbJ2ZpbGUnXS5lbmRzd2l0aCgnLmJiJyk6CisgICAgICAgICAgICAgICAgICAgIGlmIGVudHJ5WydvcCddID09ICdzZXQnOgorICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlZm91bmQgPSBpCisgICAgICAgICAgICBpZiBiYmZvdW5kID09IC0xOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnRGlkIG5vdCBmaW5kIGhpc3RvcnkgZW50cnkgc2V0dGluZyBMSUNFTlNFIGluIGJpdGJha2UuY29uZiBwYXJzaW5nICVzIHJlY2lwZS4gSGlzdG9yeTogJXMnICUgKHRlc3RyZWNpcGUsIGhpc3RvcnkpKQorICAgICAgICAgICAgaWYgcmVjaXBlZm91bmQgPT0gLTE6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdEaWQgbm90IGZpbmQgaGlzdG9yeSBlbnRyeSBzZXR0aW5nIExJQ0VOU0UgaW4gJXMgcmVjaXBlLiBIaXN0b3J5OiAlcycgJSAodGVzdHJlY2lwZSwgaGlzdG9yeSkpCisgICAgICAgICAgICBpZiBiYmZvdW5kID4gcmVjaXBlZm91bmQ6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdIaXN0b3J5IGVudHJ5IHNldHRpbmcgTElDRU5TRSBpbiAlcyByZWNpcGUgYW5kIGluIGJpdGJha2UuY29uZiBpbiB3cm9uZyBvcmRlci4gSGlzdG9yeTogJXMnICUgKHRlc3RyZWNpcGUsIGhpc3RvcnkpKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvd2ljLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvd2ljLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1MWQ1NzUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy93aWMucHkKQEAgLTAsMCArMSwxMDYzIEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMgZXg6dHM9NDpzdz00OnN0cz00OmV0CisjIC0qLSB0YWItd2lkdGg6IDQ7IGMtYmFzaWMtb2Zmc2V0OiA0OyBpbmRlbnQtdGFicy1tb2RlOiBuaWwgLSotCisjCisjIENvcHlyaWdodCAoYykgMjAxNSwgSW50ZWwgQ29ycG9yYXRpb24uCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisjIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworIyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAorIyA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBLgorIworIyBBVVRIT1JTCisjIEVkIEJhcnRvc2ggPGVkLmJhcnRvc2hAbGludXguaW50ZWwuY29tPgorCisiIiJUZXN0IGNhc2VzIGZvciB3aWMuIiIiCisKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CisKK2Zyb20gZ2xvYiBpbXBvcnQgZ2xvYgorZnJvbSBzaHV0aWwgaW1wb3J0IHJtdHJlZSwgY29weQorZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHdyYXBzLCBscnVfY2FjaGUKK2Zyb20gdGVtcGZpbGUgaW1wb3J0IE5hbWVkVGVtcG9yYXJ5RmlsZQorCitmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZSBpbXBvcnQgT0VTZWxmdGVzdFRlc3RDYXNlCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZCwgYml0YmFrZSwgZ2V0X2JiX3ZhciwgZ2V0X2JiX3ZhcnMsIHJ1bnFlbXUKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvci5vZWlkIGltcG9ydCBPRVRlc3RJRAorCisKK0BscnVfY2FjaGUobWF4c2l6ZT0zMikKK2RlZiBnZXRfaG9zdF9hcmNoKHJlY2lwZSk6CisgICAgIiIiQSBjYWNoZWQgY2FsbCB0byBnZXRfYmJfdmFyKCdIT1NUX0FSQ0gnLCA8cmVjaXBlPikiIiIKKyAgICByZXR1cm4gZ2V0X2JiX3ZhcignSE9TVF9BUkNIJywgcmVjaXBlKQorCisKK2RlZiBvbmx5X2Zvcl9hcmNoKGFyY2hzLCBpbWFnZT0nY29yZS1pbWFnZS1taW5pbWFsJyk6CisgICAgIiIiRGVjb3JhdG9yIGZvciB3cmFwcGluZyB0ZXN0IGNhc2VzIHRoYXQgY2FuIGJlIHJ1biBvbmx5IGZvciBzcGVjaWZpYyB0YXJnZXQKKyAgICBhcmNoaXRlY3R1cmVzLiBBIGxpc3Qgb2YgY29tcGF0aWJsZSBhcmNoaXRlY3R1cmVzIGlzIHBhc3NlZCBpbiBgYXJjaHNgLgorICAgIEN1cnJlbnQgYXJjaGl0ZWN0dXJlIHdpbGwgYmUgZGV0ZXJtaW5lZCBieSBwYXJzaW5nIGJpdGJha2Ugb3V0cHV0IGZvcgorICAgIGBpbWFnZWAgcmVjaXBlLgorICAgICIiIgorICAgIGRlZiB3cmFwcGVyKGZ1bmMpOgorICAgICAgICBAd3JhcHMoZnVuYykKKyAgICAgICAgZGVmIHdyYXBwZWRfZigqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgYXJjaCA9IGdldF9ob3N0X2FyY2goaW1hZ2UpCisgICAgICAgICAgICBpZiBhcmNocyBhbmQgYXJjaCBub3QgaW4gYXJjaHM6CisgICAgICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoIlRlc3RjYXNlIGFyY2ggZGVwZW5kZW5jeSBub3QgbWV0OiAlcyIgJSBhcmNoKQorICAgICAgICAgICAgcmV0dXJuIGZ1bmMoKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICB3cmFwcGVkX2YuX19uYW1lX18gPSBmdW5jLl9fbmFtZV9fCisgICAgICAgIHJldHVybiB3cmFwcGVkX2YKKyAgICByZXR1cm4gd3JhcHBlcgorCisKK2NsYXNzIFdpYyhPRVNlbGZ0ZXN0VGVzdENhc2UpOgorICAgICIiIldpYyB0ZXN0IGNsYXNzLiIiIgorCisgICAgcmVzdWx0ZGlyID0gIi92YXIvdG1wL3dpYy5vZS1zZWxmdGVzdC8iCisgICAgaW1hZ2VfaXNfcmVhZHkgPSBGYWxzZQorICAgIG5hdGl2ZV9zeXNyb290ID0gTm9uZQorICAgIHdpY2Vudl9jYWNoZSA9IHt9CisKKyAgICBkZWYgc2V0VXBMb2NhbChzZWxmKToKKyAgICAgICAgIiIiVGhpcyBjb2RlIGlzIGV4ZWN1dGVkIGJlZm9yZSBlYWNoIHRlc3QgbWV0aG9kLiIiIgorICAgICAgICBzdXBlcihXaWMsIHNlbGYpLnNldFVwTG9jYWwoKQorICAgICAgICBpZiBub3Qgc2VsZi5uYXRpdmVfc3lzcm9vdDoKKyAgICAgICAgICAgIFdpYy5uYXRpdmVfc3lzcm9vdCA9IGdldF9iYl92YXIoJ1NUQUdJTkdfRElSX05BVElWRScsICd3aWMtdG9vbHMnKQorCisgICAgICAgICMgRG8gdGhpcyBoZXJlIGluc3RlYWQgb2YgaW4gc2V0VXBDbGFzcyBhcyB0aGUgYmFzZSBzZXRVcCBkb2VzIHNvbWUKKyAgICAgICAgIyBjbGVhbiB1cCB3aGljaCBjYW4gcmVzdWx0IGluIHRoZSBuYXRpdmUgdG9vbHMgYnVpbHQgZWFybGllciBpbgorICAgICAgICAjIHNldFVwQ2xhc3MgYmVpbmcgdW5hdmFpbGFibGUuCisgICAgICAgIGlmIG5vdCBXaWMuaW1hZ2VfaXNfcmVhZHk6CisgICAgICAgICAgICBpZiBnZXRfYmJfdmFyKCdVU0VfTkxTJykgPT0gJ3llcyc6CisgICAgICAgICAgICAgICAgYml0YmFrZSgnd2ljLXRvb2xzJykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnd2ljLXRvb2xzIGNhbm5vdCBiZSBidWlsdCBkdWUgaXRzIChpbnRsdG9vbHxnZXR0ZXh0KS1uYXRpdmUgZGVwZW5kZW5jeSBhbmQgTkxTIGRpc2FibGUnKQorCisgICAgICAgICAgICBiaXRiYWtlKCdjb3JlLWltYWdlLW1pbmltYWwnKQorICAgICAgICAgICAgV2ljLmltYWdlX2lzX3JlYWR5ID0gVHJ1ZQorCisgICAgICAgIHJtdHJlZShzZWxmLnJlc3VsdGRpciwgaWdub3JlX2Vycm9ycz1UcnVlKQorCisgICAgZGVmIHRlYXJEb3duTG9jYWwoc2VsZik6CisgICAgICAgICIiIlJlbW92ZSByZXN1bHRkaXIgYXMgaXQgbWF5IGNvbnRhaW4gaW1hZ2VzLiIiIgorICAgICAgICBybXRyZWUoc2VsZi5yZXN1bHRkaXIsIGlnbm9yZV9lcnJvcnM9VHJ1ZSkKKyAgICAgICAgc3VwZXIoV2ljLCBzZWxmKS50ZWFyRG93bkxvY2FsKCkKKworICAgIEBPRVRlc3RJRCgxNTUyKQorICAgIGRlZiB0ZXN0X3ZlcnNpb24oc2VsZik6CisgICAgICAgICIiIlRlc3Qgd2ljIC0tdmVyc2lvbiIiIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgnd2ljIC0tdmVyc2lvbicpLnN0YXR1cykKKworICAgIEBPRVRlc3RJRCgxMjA4KQorICAgIGRlZiB0ZXN0X2hlbHAoc2VsZik6CisgICAgICAgICIiIlRlc3Qgd2ljIC0taGVscCBhbmQgd2ljIC1oIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCd3aWMgLS1oZWxwJykuc3RhdHVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgnd2ljIC1oJykuc3RhdHVzKQorCisgICAgQE9FVGVzdElEKDEyMDkpCisgICAgZGVmIHRlc3RfY3JlYXRlaGVscChzZWxmKToKKyAgICAgICAgIiIiVGVzdCB3aWMgY3JlYXRlIC0taGVscCIiIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgnd2ljIGNyZWF0ZSAtLWhlbHAnKS5zdGF0dXMpCisKKyAgICBAT0VUZXN0SUQoMTIxMCkKKyAgICBkZWYgdGVzdF9saXN0aGVscChzZWxmKToKKyAgICAgICAgIiIiVGVzdCB3aWMgbGlzdCAtLWhlbHAiIiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoJ3dpYyBsaXN0IC0taGVscCcpLnN0YXR1cykKKworICAgIEBPRVRlc3RJRCgxNTUzKQorICAgIGRlZiB0ZXN0X2hlbHBfY3JlYXRlKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHdpYyBoZWxwIGNyZWF0ZSIiIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgnd2ljIGhlbHAgY3JlYXRlJykuc3RhdHVzKQorCisgICAgQE9FVGVzdElEKDE1NTQpCisgICAgZGVmIHRlc3RfaGVscF9saXN0KHNlbGYpOgorICAgICAgICAiIiJUZXN0IHdpYyBoZWxwIGxpc3QiIiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoJ3dpYyBoZWxwIGxpc3QnKS5zdGF0dXMpCisKKyAgICBAT0VUZXN0SUQoMTIxNSkKKyAgICBkZWYgdGVzdF9oZWxwX292ZXJ2aWV3KHNlbGYpOgorICAgICAgICAiIiJUZXN0IHdpYyBoZWxwIG92ZXJ2aWV3IiIiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCd3aWMgaGVscCBvdmVydmlldycpLnN0YXR1cykKKworICAgIEBPRVRlc3RJRCgxMjE2KQorICAgIGRlZiB0ZXN0X2hlbHBfcGx1Z2lucyhzZWxmKToKKyAgICAgICAgIiIiVGVzdCB3aWMgaGVscCBwbHVnaW5zIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCd3aWMgaGVscCBwbHVnaW5zJykuc3RhdHVzKQorCisgICAgQE9FVGVzdElEKDEyMTcpCisgICAgZGVmIHRlc3RfaGVscF9raWNrc3RhcnQoc2VsZik6CisgICAgICAgICIiIlRlc3Qgd2ljIGhlbHAga2lja3N0YXJ0IiIiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCd3aWMgaGVscCBraWNrc3RhcnQnKS5zdGF0dXMpCisKKyAgICBAT0VUZXN0SUQoMTU1NSkKKyAgICBkZWYgdGVzdF9saXN0X2ltYWdlcyhzZWxmKToKKyAgICAgICAgIiIiVGVzdCB3aWMgbGlzdCBpbWFnZXMiIiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoJ3dpYyBsaXN0IGltYWdlcycpLnN0YXR1cykKKworICAgIEBPRVRlc3RJRCgxNTU2KQorICAgIGRlZiB0ZXN0X2xpc3Rfc291cmNlX3BsdWdpbnMoc2VsZik6CisgICAgICAgICIiIlRlc3Qgd2ljIGxpc3Qgc291cmNlLXBsdWdpbnMiIiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoJ3dpYyBsaXN0IHNvdXJjZS1wbHVnaW5zJykuc3RhdHVzKQorCisgICAgQE9FVGVzdElEKDE1NTcpCisgICAgZGVmIHRlc3RfbGlzdGVkX2ltYWdlc19oZWxwKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHdpYyBsaXN0ZWQgaW1hZ2VzIGhlbHAiIiIKKyAgICAgICAgb3V0cHV0ID0gcnVuQ21kKCd3aWMgbGlzdCBpbWFnZXMnKS5vdXRwdXQKKyAgICAgICAgaW1hZ2VsaXN0ID0gW2xpbmUuc3BsaXQoKVswXSBmb3IgbGluZSBpbiBvdXRwdXQuc3BsaXRsaW5lcygpXQorICAgICAgICBmb3IgaW1hZ2UgaW4gaW1hZ2VsaXN0OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoJ3dpYyBsaXN0ICVzIGhlbHAnICUgaW1hZ2UpLnN0YXR1cykKKworICAgIEBPRVRlc3RJRCgxMjEzKQorICAgIGRlZiB0ZXN0X3Vuc3VwcG9ydGVkX3N1YmNvbW1hbmQoc2VsZik6CisgICAgICAgICIiIlRlc3QgdW5zdXBwb3J0ZWQgc3ViY29tbWFuZCIiIgorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKDAsIHJ1bkNtZCgnd2ljIHVuc3VwcG9ydGVkJywgaWdub3JlX3N0YXR1cz1UcnVlKS5zdGF0dXMpCisKKyAgICBAT0VUZXN0SUQoMTIxNCkKKyAgICBkZWYgdGVzdF9ub19jb21tYW5kKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHdpYyB3aXRob3V0IGNvbW1hbmQiIiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBydW5DbWQoJ3dpYycsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkuc3RhdHVzKQorCisgICAgQE9FVGVzdElEKDEyMTEpCisgICAgZGVmIHRlc3RfYnVpbGRfaW1hZ2VfbmFtZShzZWxmKToKKyAgICAgICAgIiIiVGVzdCB3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrIC0taW1hZ2UtbmFtZT1jb3JlLWltYWdlLW1pbmltYWwiIiIKKyAgICAgICAgY21kID0gIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgLS1pbWFnZS1uYW1lPWNvcmUtaW1hZ2UtbWluaW1hbCAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZChjbWQpLnN0YXR1cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJ3aWN0ZXN0ZGlzay0qLmRpcmVjdCIpKSkKKworICAgIEBPRVRlc3RJRCgxMTU3KQorICAgIEBvbmx5X2Zvcl9hcmNoKFsnaTU4NicsICdpNjg2JywgJ3g4Nl82NCddKQorICAgIGRlZiB0ZXN0X2dwdF9pbWFnZShzZWxmKToKKyAgICAgICAgIiIiVGVzdCBjcmVhdGlvbiBvZiBjb3JlLWltYWdlLW1pbmltYWwgd2l0aCBncHQgdGFibGUgYW5kIFVVSUQgYm9vdCIiIgorICAgICAgICBjbWQgPSAid2ljIGNyZWF0ZSBkaXJlY3RkaXNrLWdwdCAtLWltYWdlLW5hbWUgY29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKGNtZCkuc3RhdHVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgImRpcmVjdGRpc2stKi5kaXJlY3QiKSkpCisKKyAgICBAT0VUZXN0SUQoMTM0NikKKyAgICBAb25seV9mb3JfYXJjaChbJ2k1ODYnLCAnaTY4NicsICd4ODZfNjQnXSkKKyAgICBkZWYgdGVzdF9pc29faW1hZ2Uoc2VsZik6CisgICAgICAgICIiIlRlc3QgY3JlYXRpb24gb2YgaHlicmlkIGlzbyBpbWFnZSB3aXRoIGxlZ2FjeSBhbmQgRUZJIGJvb3QiIiIKKyAgICAgICAgY29uZmlnID0gJ0lOSVRSQU1GU19JTUFHRSA9ICJjb3JlLWltYWdlLW1pbmltYWwtaW5pdHJhbWZzIlxuJ1wKKyAgICAgICAgICAgICAgICAgJ01BQ0hJTkVfRkVBVFVSRVNfYXBwZW5kID0gIiBlZmkiXG4nXAorICAgICAgICAgICAgICAgICAnREVQRU5EU19wbi1jb3JlLWltYWdlLW1pbmltYWwgKz0gInN5c2xpbnV4IlxuJworICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoY29uZmlnKQorICAgICAgICBiaXRiYWtlKCdjb3JlLWltYWdlLW1pbmltYWwnKQorICAgICAgICBzZWxmLnJlbW92ZV9jb25maWcoY29uZmlnKQorICAgICAgICBjbWQgPSAid2ljIGNyZWF0ZSBta2h5YnJpZGlzbyAtLWltYWdlLW5hbWUgY29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKGNtZCkuc3RhdHVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIkhZQlJJRF9JU09fSU1HLSouZGlyZWN0IikpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIkhZQlJJRF9JU09fSU1HLSouaXNvIikpKQorCisgICAgQE9FVGVzdElEKDEzNDgpCisgICAgQG9ubHlfZm9yX2FyY2goWydpNTg2JywgJ2k2ODYnLCAneDg2XzY0J10pCisgICAgZGVmIHRlc3RfcWVtdXg4Nl9kaXJlY3RkaXNrKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGNyZWF0aW9uIG9mIHFlbXV4LTg2LWRpcmVjdGRpc2sgaW1hZ2UiIiIKKyAgICAgICAgY21kID0gIndpYyBjcmVhdGUgcWVtdXg4Ni1kaXJlY3RkaXNrIC1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZChjbWQpLnN0YXR1cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJxZW11eDg2LWRpcmVjdGRpc2stKmRpcmVjdCIpKSkKKworICAgIEBPRVRlc3RJRCgxMzUwKQorICAgIEBvbmx5X2Zvcl9hcmNoKFsnaTU4NicsICdpNjg2JywgJ3g4Nl82NCddKQorICAgIGRlZiB0ZXN0X21rZWZpZGlzayhzZWxmKToKKyAgICAgICAgIiIiVGVzdCBjcmVhdGlvbiBvZiBta2VmaWRpc2sgaW1hZ2UiIiIKKyAgICAgICAgY21kID0gIndpYyBjcmVhdGUgbWtlZmlkaXNrIC1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZChjbWQpLnN0YXR1cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJta2VmaWRpc2stKmRpcmVjdCIpKSkKKworICAgIEBPRVRlc3RJRCgxMzg1KQorICAgIEBvbmx5X2Zvcl9hcmNoKFsnaTU4NicsICdpNjg2JywgJ3g4Nl82NCddKQorICAgIGRlZiB0ZXN0X2Jvb3Rsb2FkZXJfY29uZmlnKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGNyZWF0aW9uIG9mIGRpcmVjdGRpc2stYm9vdGxvYWRlci1jb25maWcgaW1hZ2UiIiIKKyAgICAgICAgY29uZmlnID0gJ0RFUEVORFNfcG4tY29yZS1pbWFnZS1taW5pbWFsICs9ICJzeXNsaW51eCJcbicKKyAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKGNvbmZpZykKKyAgICAgICAgYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsJykKKyAgICAgICAgc2VsZi5yZW1vdmVfY29uZmlnKGNvbmZpZykKKyAgICAgICAgY21kID0gIndpYyBjcmVhdGUgZGlyZWN0ZGlzay1ib290bG9hZGVyLWNvbmZpZyAtZSBjb3JlLWltYWdlLW1pbmltYWwgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoY21kKS5zdGF0dXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAiZGlyZWN0ZGlzay1ib290bG9hZGVyLWNvbmZpZy0qZGlyZWN0IikpKQorCisgICAgQE9FVGVzdElEKDE1NjApCisgICAgQG9ubHlfZm9yX2FyY2goWydpNTg2JywgJ2k2ODYnLCAneDg2XzY0J10pCisgICAgZGVmIHRlc3Rfc3lzdGVtZF9ib290ZGlzayhzZWxmKToKKyAgICAgICAgIiIiVGVzdCBjcmVhdGlvbiBvZiBzeXN0ZW1kLWJvb3RkaXNrIGltYWdlIiIiCisgICAgICAgIGNvbmZpZyA9ICdNQUNISU5FX0ZFQVRVUkVTX2FwcGVuZCA9ICIgZWZpIlxuJworICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoY29uZmlnKQorICAgICAgICBiaXRiYWtlKCdjb3JlLWltYWdlLW1pbmltYWwnKQorICAgICAgICBzZWxmLnJlbW92ZV9jb25maWcoY29uZmlnKQorICAgICAgICBjbWQgPSAid2ljIGNyZWF0ZSBzeXN0ZW1kLWJvb3RkaXNrIC1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZChjbWQpLnN0YXR1cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJzeXN0ZW1kLWJvb3RkaXNrLSpkaXJlY3QiKSkpCisKKyAgICBAT0VUZXN0SUQoMTU2MSkKKyAgICBkZWYgdGVzdF9zZGltYWdlX2Jvb3RwYXJ0KHNlbGYpOgorICAgICAgICAiIiJUZXN0IGNyZWF0aW9uIG9mIHNkaW1hZ2UtYm9vdHBhcnQgaW1hZ2UiIiIKKyAgICAgICAgY21kID0gIndpYyBjcmVhdGUgc2RpbWFnZS1ib290cGFydCAtZSBjb3JlLWltYWdlLW1pbmltYWwgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIKKyAgICAgICAga2ltZ3R5cGUgPSBnZXRfYmJfdmFyKCdLRVJORUxfSU1BR0VUWVBFJywgJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCdJTUFHRV9CT09UX0ZJTEVTID0gIiVzIlxuJyAlIGtpbWd0eXBlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZChjbWQpLnN0YXR1cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJzZGltYWdlLWJvb3RwYXJ0LSpkaXJlY3QiKSkpCisKKyAgICBAT0VUZXN0SUQoMTU2MikKKyAgICBAb25seV9mb3JfYXJjaChbJ2k1ODYnLCAnaTY4NicsICd4ODZfNjQnXSkKKyAgICBkZWYgdGVzdF9kZWZhdWx0X291dHB1dF9kaXIoc2VsZik6CisgICAgICAgICIiIlRlc3QgZGVmYXVsdCBvdXRwdXQgbG9jYXRpb24iIiIKKyAgICAgICAgZm9yIGZuYW1lIGluIGdsb2IoImRpcmVjdGRpc2stKi5kaXJlY3QiKToKKyAgICAgICAgICAgIG9zLnJlbW92ZShmbmFtZSkKKyAgICAgICAgY29uZmlnID0gJ0RFUEVORFNfcG4tY29yZS1pbWFnZS1taW5pbWFsICs9ICJzeXNsaW51eCJcbicKKyAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKGNvbmZpZykKKyAgICAgICAgYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsJykKKyAgICAgICAgc2VsZi5yZW1vdmVfY29uZmlnKGNvbmZpZykKKyAgICAgICAgY21kID0gIndpYyBjcmVhdGUgZGlyZWN0ZGlzayAtZSBjb3JlLWltYWdlLW1pbmltYWwiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKGNtZCkuc3RhdHVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKCJkaXJlY3RkaXNrLSouZGlyZWN0IikpKQorCisgICAgQE9FVGVzdElEKDEyMTIpCisgICAgQG9ubHlfZm9yX2FyY2goWydpNTg2JywgJ2k2ODYnLCAneDg2XzY0J10pCisgICAgZGVmIHRlc3RfYnVpbGRfYXJ0aWZhY3RzKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHdpYyBjcmVhdGUgZGlyZWN0ZGlzayBwcm92aWRpbmcgYWxsIGFydGlmYWN0cy4iIiIKKyAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnU1RBR0lOR19EQVRBRElSJywgJ1JFQ0lQRV9TWVNST09UX05BVElWRSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dpYy10b29scycpCisgICAgICAgIGJiX3ZhcnMudXBkYXRlKGdldF9iYl92YXJzKFsnREVQTE9ZX0RJUl9JTUFHRScsICdJTUFHRV9ST09URlMnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvcmUtaW1hZ2UtbWluaW1hbCcpKQorICAgICAgICBiYnZhcnMgPSB7a2V5Lmxvd2VyKCk6IHZhbHVlIGZvciBrZXksIHZhbHVlIGluIGJiX3ZhcnMuaXRlbXMoKX0KKyAgICAgICAgYmJ2YXJzWydyZXN1bHRkaXInXSA9IHNlbGYucmVzdWx0ZGlyCisgICAgICAgIHN0YXR1cyA9IHJ1bkNtZCgid2ljIGNyZWF0ZSBkaXJlY3RkaXNrICIKKyAgICAgICAgICAgICAgICAgICAgICAgICItYiAlKHN0YWdpbmdfZGF0YWRpcilzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICItayAlKGRlcGxveV9kaXJfaW1hZ2UpcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAiLW4gJShyZWNpcGVfc3lzcm9vdF9uYXRpdmUpcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAiLXIgJShpbWFnZV9yb290ZnMpcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAiLW8gJShyZXN1bHRkaXIpcyIgJSBiYnZhcnMpLnN0YXR1cworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHN0YXR1cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJkaXJlY3RkaXNrLSouZGlyZWN0IikpKQorCisgICAgQE9FVGVzdElEKDEyNjQpCisgICAgZGVmIHRlc3RfY29tcHJlc3NfZ3ppcChzZWxmKToKKyAgICAgICAgIiIiVGVzdCBjb21wcmVzc2luZyBhbiBpbWFnZSB3aXRoIGd6aXAiIiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1pbWFnZS1uYW1lIGNvcmUtaW1hZ2UtbWluaW1hbCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItYyBnemlwIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyKS5zdGF0dXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAid2ljdGVzdGRpc2stKi5kaXJlY3QuZ3oiKSkpCisKKyAgICBAT0VUZXN0SUQoMTI2NSkKKyAgICBkZWYgdGVzdF9jb21wcmVzc19iemlwMihzZWxmKToKKyAgICAgICAgIiIiVGVzdCBjb21wcmVzc2luZyBhbiBpbWFnZSB3aXRoIGJ6aXAyIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0taW1hZ2UtbmFtZT1jb3JlLWltYWdlLW1pbmltYWwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWMgYnppcDIgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIpLnN0YXR1cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJ3aWN0ZXN0ZGlzay0qLmRpcmVjdC5iejIiKSkpCisKKyAgICBAT0VUZXN0SUQoMTI2NikKKyAgICBkZWYgdGVzdF9jb21wcmVzc194eihzZWxmKToKKyAgICAgICAgIiIiVGVzdCBjb21wcmVzc2luZyBhbiBpbWFnZSB3aXRoIHh6IiIiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0taW1hZ2UtbmFtZT1jb3JlLWltYWdlLW1pbmltYWwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1jb21wcmVzcy13aXRoPXh6IC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyKS5zdGF0dXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAid2ljdGVzdGRpc2stKi5kaXJlY3QueHoiKSkpCisKKyAgICBAT0VUZXN0SUQoMTI2NykKKyAgICBkZWYgdGVzdF93cm9uZ19jb21wcmVzc29yKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGhvdyB3aWMgYnJlYWtzIGlmIHdyb25nIGNvbXByZXNzb3IgaXMgcHJvdmlkZWQiIiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBydW5DbWQoIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1pbWFnZS1uYW1lPWNvcmUtaW1hZ2UtbWluaW1hbCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItYyB3cm9uZyAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlX3N0YXR1cz1UcnVlKS5zdGF0dXMpCisKKyAgICBAT0VUZXN0SUQoMTU1OCkKKyAgICBkZWYgdGVzdF9kZWJ1Z19zaG9ydChzZWxmKToKKyAgICAgICAgIiIiVGVzdCAtRCBvcHRpb24iIiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1pbWFnZS1uYW1lPWNvcmUtaW1hZ2UtbWluaW1hbCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItRCAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcikuc3RhdHVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSouZGlyZWN0IikpKQorCisgICAgQE9FVGVzdElEKDE2NTgpCisgICAgZGVmIHRlc3RfZGVidWdfbG9uZyhzZWxmKToKKyAgICAgICAgIiIiVGVzdCAtLWRlYnVnIG9wdGlvbiIiIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWltYWdlLW5hbWU9Y29yZS1pbWFnZS1taW5pbWFsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tZGVidWcgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIpLnN0YXR1cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJ3aWN0ZXN0ZGlzay0qLmRpcmVjdCIpKSkKKworICAgIEBPRVRlc3RJRCgxNTYzKQorICAgIGRlZiB0ZXN0X3NraXBfYnVpbGRfY2hlY2tfc2hvcnQoc2VsZik6CisgICAgICAgICIiIlRlc3QgLXMgb3B0aW9uIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0taW1hZ2UtbmFtZT1jb3JlLWltYWdlLW1pbmltYWwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLXMgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIpLnN0YXR1cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJ3aWN0ZXN0ZGlzay0qLmRpcmVjdCIpKSkKKworICAgIEBPRVRlc3RJRCgxNjcxKQorICAgIGRlZiB0ZXN0X3NraXBfYnVpbGRfY2hlY2tfbG9uZyhzZWxmKToKKyAgICAgICAgIiIiVGVzdCAtLXNraXAtYnVpbGQtY2hlY2sgb3B0aW9uIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0taW1hZ2UtbmFtZT1jb3JlLWltYWdlLW1pbmltYWwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1za2lwLWJ1aWxkLWNoZWNrICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tb3V0ZGlyICVzIiAlIHNlbGYucmVzdWx0ZGlyKS5zdGF0dXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAid2ljdGVzdGRpc2stKi5kaXJlY3QiKSkpCisKKyAgICBAT0VUZXN0SUQoMTU2NCkKKyAgICBkZWYgdGVzdF9idWlsZF9yb290ZnNfc2hvcnQoc2VsZik6CisgICAgICAgICIiIlRlc3QgLWYgb3B0aW9uIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0taW1hZ2UtbmFtZT1jb3JlLWltYWdlLW1pbmltYWwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLWYgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIpLnN0YXR1cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJ3aWN0ZXN0ZGlzay0qLmRpcmVjdCIpKSkKKworICAgIEBPRVRlc3RJRCgxNjU2KQorICAgIGRlZiB0ZXN0X2J1aWxkX3Jvb3Rmc19sb25nKHNlbGYpOgorICAgICAgICAiIiJUZXN0IC0tYnVpbGQtcm9vdGZzIG9wdGlvbiIiIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWltYWdlLW5hbWU9Y29yZS1pbWFnZS1taW5pbWFsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tYnVpbGQtcm9vdGZzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tb3V0ZGlyICVzIiAlIHNlbGYucmVzdWx0ZGlyKS5zdGF0dXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAid2ljdGVzdGRpc2stKi5kaXJlY3QiKSkpCisKKyAgICBAT0VUZXN0SUQoMTI2OCkKKyAgICBAb25seV9mb3JfYXJjaChbJ2k1ODYnLCAnaTY4NicsICd4ODZfNjQnXSkKKyAgICBkZWYgdGVzdF9yb290ZnNfaW5kaXJlY3RfcmVjaXBlcyhzZWxmKToKKyAgICAgICAgIiIiVGVzdCB1c2FnZSBvZiByb290ZnMgcGx1Z2luIHdpdGggcm9vdGZzIHJlY2lwZXMiIiIKKyAgICAgICAgc3RhdHVzID0gcnVuQ21kKCJ3aWMgY3JlYXRlIGRpcmVjdGRpc2stbXVsdGktcm9vdGZzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICItLWltYWdlLW5hbWU9Y29yZS1pbWFnZS1taW5pbWFsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICItLXJvb3RmcyByb290ZnMxPWNvcmUtaW1hZ2UtbWluaW1hbCAiCisgICAgICAgICAgICAgICAgICAgICAgICAiLS1yb290ZnMgcm9vdGZzMj1jb3JlLWltYWdlLW1pbmltYWwgIgorICAgICAgICAgICAgICAgICAgICAgICAgIi0tb3V0ZGlyICVzIiAlIHNlbGYucmVzdWx0ZGlyKS5zdGF0dXMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBzdGF0dXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAiZGlyZWN0ZGlzay1tdWx0aS1yb290ZnMqLmRpcmVjdCIpKSkKKworICAgIEBPRVRlc3RJRCgxMjY5KQorICAgIEBvbmx5X2Zvcl9hcmNoKFsnaTU4NicsICdpNjg2JywgJ3g4Nl82NCddKQorICAgIGRlZiB0ZXN0X3Jvb3Rmc19hcnRpZmFjdHMoc2VsZik6CisgICAgICAgICIiIlRlc3QgdXNhZ2Ugb2Ygcm9vdGZzIHBsdWdpbiB3aXRoIHJvb3RmcyBwYXRocyIiIgorICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydTVEFHSU5HX0RBVEFESVInLCAnUkVDSVBFX1NZU1JPT1RfTkFUSVZFJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2ljLXRvb2xzJykKKyAgICAgICAgYmJfdmFycy51cGRhdGUoZ2V0X2JiX3ZhcnMoWydERVBMT1lfRElSX0lNQUdFJywgJ0lNQUdFX1JPT1RGUyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29yZS1pbWFnZS1taW5pbWFsJykpCisgICAgICAgIGJidmFycyA9IHtrZXkubG93ZXIoKTogdmFsdWUgZm9yIGtleSwgdmFsdWUgaW4gYmJfdmFycy5pdGVtcygpfQorICAgICAgICBiYnZhcnNbJ3drcyddID0gImRpcmVjdGRpc2stbXVsdGktcm9vdGZzIgorICAgICAgICBiYnZhcnNbJ3Jlc3VsdGRpciddID0gc2VsZi5yZXN1bHRkaXIKKyAgICAgICAgc3RhdHVzID0gcnVuQ21kKCJ3aWMgY3JlYXRlICUod2tzKXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgIi0tYm9vdGltZy1kaXI9JShzdGFnaW5nX2RhdGFkaXIpcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAiLS1rZXJuZWwtZGlyPSUoZGVwbG95X2Rpcl9pbWFnZSlzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICItLW5hdGl2ZS1zeXNyb290PSUocmVjaXBlX3N5c3Jvb3RfbmF0aXZlKXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgIi0tcm9vdGZzLWRpciByb290ZnMxPSUoaW1hZ2Vfcm9vdGZzKXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgIi0tcm9vdGZzLWRpciByb290ZnMyPSUoaW1hZ2Vfcm9vdGZzKXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgIi0tb3V0ZGlyICUocmVzdWx0ZGlyKXMiICUgYmJ2YXJzKS5zdGF0dXMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBzdGF0dXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAiJSh3a3Mpcy0qLmRpcmVjdCIgJSBiYnZhcnMpKSkKKworICAgIEBPRVRlc3RJRCgxNjYxKQorICAgIGRlZiB0ZXN0X2V4Y2x1ZGVfcGF0aChzZWxmKToKKyAgICAgICAgIiIiVGVzdCAtLWV4Y2x1ZGUtcGF0aCB3a3Mgb3B0aW9uLiIiIgorCisgICAgICAgIG9sZHBhdGggPSBvcy5lbnZpcm9uWydQQVRIJ10KKyAgICAgICAgb3MuZW52aXJvblsnUEFUSCddID0gZ2V0X2JiX3ZhcigiUEFUSCIsICJ3aWMtdG9vbHMiKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdrc19maWxlID0gJ3RlbXAud2tzJworICAgICAgICAgICAgd2l0aCBvcGVuKHdrc19maWxlLCAndycpIGFzIHdrczoKKyAgICAgICAgICAgICAgICByb290ZnNfZGlyID0gZ2V0X2JiX3ZhcignSU1BR0VfUk9PVEZTJywgJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCisgICAgICAgICAgICAgICAgd2tzLndyaXRlKCIiIgorcGFydCAvIC0tc291cmNlIHJvb3RmcyAtLW9uZGlzayBtbWNibGswIC0tZnN0eXBlPWV4dDQgLS1leGNsdWRlLXBhdGggdXNyCitwYXJ0IC91c3IgLS1zb3VyY2Ugcm9vdGZzIC0tb25kaXNrIG1tY2JsazAgLS1mc3R5cGU9ZXh0NCAtLXJvb3Rmcy1kaXIgJXMvdXNyCitwYXJ0IC9ldGMgLS1zb3VyY2Ugcm9vdGZzIC0tb25kaXNrIG1tY2JsazAgLS1mc3R5cGU9ZXh0NCAtLWV4Y2x1ZGUtcGF0aCBiaW4vIC0tcm9vdGZzLWRpciAlcy91c3IiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJSAocm9vdGZzX2Rpciwgcm9vdGZzX2RpcikpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSAlcyAtZSBjb3JlLWltYWdlLW1pbmltYWwgLW8gJXMiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHdrc19maWxlLCBzZWxmLnJlc3VsdGRpcikpLnN0YXR1cykKKworICAgICAgICAgICAgb3MucmVtb3ZlKHdrc19maWxlKQorICAgICAgICAgICAgd2ljb3V0ID0gZ2xvYihzZWxmLnJlc3VsdGRpciArICIlcy0qZGlyZWN0IiAlICd0ZW1wJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHdpY291dCkpCisKKyAgICAgICAgICAgIHdpY2ltZyA9IHdpY291dFswXQorCisgICAgICAgICAgICAjIHZlcmlmeSBwYXJ0aXRpb24gc2l6ZSB3aXRoIHdpYworICAgICAgICAgICAgcmVzID0gcnVuQ21kKCJwYXJ0ZWQgLW0gJXMgdW5pdCBiIHAgMj4vZGV2L251bGwiICUgd2ljaW1nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXMuc3RhdHVzKQorCisgICAgICAgICAgICAjIHBhcnNlIHBhcnRlZCBvdXRwdXQgd2hpY2ggbG9va3MgbGlrZSB0aGlzOgorICAgICAgICAgICAgIyBCWVQ7XG4KKyAgICAgICAgICAgICMgL3Zhci90bXAvd2ljL2J1aWxkL3RtcGZ3dmpqa2ZfLTIwMTYxMTEwMTIyMi1oZGEuZGlyZWN0OjIwME1pQjpmaWxlOjUxMjo1MTI6bXNkb3M6OjtcbgorICAgICAgICAgICAgIyAxOjAuMDBNaUI6MjAwTWlCOjIwME1pQjpleHQ0Ojo7XG4KKyAgICAgICAgICAgIHBhcnRsbnMgPSByZXMub3V0cHV0LnNwbGl0bGluZXMoKVsyOl0KKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgzLCBsZW4ocGFydGxucykpCisKKyAgICAgICAgICAgIGZvciBwYXJ0IGluIFsxLCAyLCAzXToKKyAgICAgICAgICAgICAgICBwYXJ0X2ZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi5yZXN1bHRkaXIsICJzZWxmdGVzdF9pbWcucGFydCVkIiAlIHBhcnQpCisgICAgICAgICAgICAgICAgcGFydGxuID0gcGFydGxuc1twYXJ0LTFdLnNwbGl0KCI6IikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDcsIGxlbihwYXJ0bG4pKQorICAgICAgICAgICAgICAgIHN0YXJ0ID0gaW50KHBhcnRsblsxXS5yc3RyaXAoIkIiKSkgLyA1MTIKKyAgICAgICAgICAgICAgICBsZW5ndGggPSBpbnQocGFydGxuWzNdLnJzdHJpcCgiQiIpKSAvIDUxMgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCJkZCBpZj0lcyBvZj0lcyBza2lwPSVkIGNvdW50PSVkIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdpY2ltZywgcGFydF9maWxlLCBzdGFydCwgbGVuZ3RoKSkuc3RhdHVzKQorCisgICAgICAgICAgICBkZWYgZXh0cmFjdF9maWxlcyhkZWJ1Z2ZzX291dHB1dCk6CisgICAgICAgICAgICAgICAgIiIiCisgICAgICAgICAgICAgICAgZXh0cmFjdCBmaWxlIG5hbWVzIGZyb20gdGhlIG91dHB1dCBvZiBkZWJ1Z2ZzIC1SICdscyAtcCcsCisgICAgICAgICAgICAgICAgd2hpY2ggbG9va3MgbGlrZSB0aGlzOgorCisgICAgICAgICAgICAgICAgIC8yLzA0MDc1NS8wLzAvLi8vXG4KKyAgICAgICAgICAgICAgICAgLzIvMDQwNzU1LzAvMC8uLi8vXG4KKyAgICAgICAgICAgICAgICAgLzExLzA0MDcwMC8wLzAvbG9zdCtmb3VuZF5NLy9cbgorICAgICAgICAgICAgICAgICAvMTIvMDQwNzU1LzEwMDIvMTAwMi9ydW4vL1xuCisgICAgICAgICAgICAgICAgIC8xMy8wNDA3NTUvMTAwMi8xMDAyL3N5cy8vXG4KKyAgICAgICAgICAgICAgICAgLzE0LzA0MDc1NS8xMDAyLzEwMDIvYmluLy9cbgorICAgICAgICAgICAgICAgICAvODAvMDQwNzU1LzEwMDIvMTAwMi92YXIvL1xuCisgICAgICAgICAgICAgICAgIC85Mi8wNDA3NTUvMTAwMi8xMDAyL3RtcC8vXG4KKyAgICAgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgICAgICAjIE5PVEUgdGhlIG9jY2FzaW9uYWwgXk0gaW4gZmlsZSBuYW1lcworICAgICAgICAgICAgICAgIHJldHVybiBbbGluZS5zcGxpdCgnLycpWzVdLnN0cmlwKCkgZm9yIGxpbmUgaW4gXAorICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdmc19vdXRwdXQuc3RyaXAoKS5zcGxpdCgnL1xuJyldCisKKyAgICAgICAgICAgICMgVGVzdCBwYXJ0aXRpb24gMSwgc2hvdWxkIGNvbnRhaW4gdGhlIG5vcm1hbCByb290IGRpcmVjdG9yaWVzLCBleGNlcHQKKyAgICAgICAgICAgICMgL3Vzci4KKyAgICAgICAgICAgIHJlcyA9IHJ1bkNtZCgiZGVidWdmcyAtUiAnbHMgLXAnICVzIDI+L2Rldi9udWxsIiAlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHNlbGYucmVzdWx0ZGlyLCAic2VsZnRlc3RfaW1nLnBhcnQxIikpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlcy5zdGF0dXMpCisgICAgICAgICAgICBmaWxlcyA9IGV4dHJhY3RfZmlsZXMocmVzLm91dHB1dCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oImV0YyIsIGZpbGVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigidXNyIiwgZmlsZXMpCisKKyAgICAgICAgICAgICMgUGFydGl0aW9uIDIsIHNob3VsZCBjb250YWluIGNvbW1vbiBkaXJlY3RvcmllcyBmb3IgL3Vzciwgbm90IHJvb3QKKyAgICAgICAgICAgICMgZGlyZWN0b3JpZXMuCisgICAgICAgICAgICByZXMgPSBydW5DbWQoImRlYnVnZnMgLVIgJ2xzIC1wJyAlcyAyPi9kZXYvbnVsbCIgJSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzZWxmLnJlc3VsdGRpciwgInNlbGZ0ZXN0X2ltZy5wYXJ0MiIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXMuc3RhdHVzKQorICAgICAgICAgICAgZmlsZXMgPSBleHRyYWN0X2ZpbGVzKHJlcy5vdXRwdXQpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCJldGMiLCBmaWxlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oInVzciIsIGZpbGVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigic2hhcmUiLCBmaWxlcykKKworICAgICAgICAgICAgIyBQYXJ0aXRpb24gMywgc2hvdWxkIGNvbnRhaW4gdGhlIHNhbWUgYXMgcGFydGl0aW9uIDIsIGluY2x1ZGluZyB0aGUgYmluCisgICAgICAgICAgICAjIGRpcmVjdG9yeSwgYnV0IG5vdCB0aGUgZmlsZXMgaW5zaWRlIGl0LgorICAgICAgICAgICAgcmVzID0gcnVuQ21kKCJkZWJ1Z2ZzIC1SICdscyAtcCcgJXMgMj4vZGV2L251bGwiICUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc2VsZi5yZXN1bHRkaXIsICJzZWxmdGVzdF9pbWcucGFydDMiKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzLnN0YXR1cykKKyAgICAgICAgICAgIGZpbGVzID0gZXh0cmFjdF9maWxlcyhyZXMub3V0cHV0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigiZXRjIiwgZmlsZXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCJ1c3IiLCBmaWxlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oInNoYXJlIiwgZmlsZXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJiaW4iLCBmaWxlcykKKyAgICAgICAgICAgIHJlcyA9IHJ1bkNtZCgiZGVidWdmcyAtUiAnbHMgLXAgYmluJyAlcyAyPi9kZXYvbnVsbCIgJSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzZWxmLnJlc3VsdGRpciwgInNlbGZ0ZXN0X2ltZy5wYXJ0MyIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXMuc3RhdHVzKQorICAgICAgICAgICAgZmlsZXMgPSBleHRyYWN0X2ZpbGVzKHJlcy5vdXRwdXQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCIuIiwgZmlsZXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCIuLiIsIGZpbGVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBsZW4oZmlsZXMpKQorCisgICAgICAgICAgICBmb3IgcGFydCBpbiBbMSwgMiwgM106CisgICAgICAgICAgICAgICAgcGFydF9maWxlID0gb3MucGF0aC5qb2luKHNlbGYucmVzdWx0ZGlyLCAic2VsZnRlc3RfaW1nLnBhcnQlZCIgJSBwYXJ0KQorICAgICAgICAgICAgICAgIG9zLnJlbW92ZShwYXJ0X2ZpbGUpCisKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmVudmlyb25bJ1BBVEgnXSA9IG9sZHBhdGgKKworICAgIEBPRVRlc3RJRCgxNjYyKQorICAgIGRlZiB0ZXN0X2V4Y2x1ZGVfcGF0aF9lcnJvcnMoc2VsZik6CisgICAgICAgICIiIlRlc3QgLS1leGNsdWRlLXBhdGggd2tzIG9wdGlvbiBlcnJvciBoYW5kbGluZy4iIiIKKyAgICAgICAgd2tzX2ZpbGUgPSAndGVtcC53a3MnCisKKyAgICAgICAgIyBBYnNvbHV0ZSBhcmd1bWVudC4KKyAgICAgICAgd2l0aCBvcGVuKHdrc19maWxlLCAndycpIGFzIHdrczoKKyAgICAgICAgICAgIHdrcy53cml0ZSgicGFydCAvIC0tc291cmNlIHJvb3RmcyAtLW9uZGlzayBtbWNibGswIC0tZnN0eXBlPWV4dDQgLS1leGNsdWRlLXBhdGggL3VzciIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlICVzIC1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtbyAlcyIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlICh3a3NfZmlsZSwgc2VsZi5yZXN1bHRkaXIpLCBpZ25vcmVfc3RhdHVzPVRydWUpLnN0YXR1cykKKyAgICAgICAgb3MucmVtb3ZlKHdrc19maWxlKQorCisgICAgICAgICMgQXJndW1lbnQgcG9pbnRpbmcgdG8gcGFyZW50IGRpcmVjdG9yeS4KKyAgICAgICAgd2l0aCBvcGVuKHdrc19maWxlLCAndycpIGFzIHdrczoKKyAgICAgICAgICAgIHdrcy53cml0ZSgicGFydCAvIC0tc291cmNlIHJvb3RmcyAtLW9uZGlzayBtbWNibGswIC0tZnN0eXBlPWV4dDQgLS1leGNsdWRlLXBhdGggLi8uLy4uIikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgJXMgLWUgY29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHdrc19maWxlLCBzZWxmLnJlc3VsdGRpciksIGlnbm9yZV9zdGF0dXM9VHJ1ZSkuc3RhdHVzKQorICAgICAgICBvcy5yZW1vdmUod2tzX2ZpbGUpCisKKyAgICBAT0VUZXN0SUQoMTQ5NikKKyAgICBkZWYgdGVzdF9ibWFwX3Nob3J0KHNlbGYpOgorICAgICAgICAiIiJUZXN0IGdlbmVyYXRpb24gb2YgLmJtYXAgZmlsZSAtbSBvcHRpb24iIiIKKyAgICAgICAgY21kID0gIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgLWUgY29yZS1pbWFnZS1taW5pbWFsIC1tIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyCisgICAgICAgIHN0YXR1cyA9IHJ1bkNtZChjbWQpLnN0YXR1cworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHN0YXR1cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJ3aWN0ZXN0ZGlzay0qZGlyZWN0IikpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSpkaXJlY3QuYm1hcCIpKSkKKworICAgIEBPRVRlc3RJRCgxNjU1KQorICAgIGRlZiB0ZXN0X2JtYXBfbG9uZyhzZWxmKToKKyAgICAgICAgIiIiVGVzdCBnZW5lcmF0aW9uIG9mIC5ibWFwIGZpbGUgLS1ibWFwIG9wdGlvbiIiIgorICAgICAgICBjbWQgPSAid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAtZSBjb3JlLWltYWdlLW1pbmltYWwgLS1ibWFwIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyCisgICAgICAgIHN0YXR1cyA9IHJ1bkNtZChjbWQpLnN0YXR1cworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHN0YXR1cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJ3aWN0ZXN0ZGlzay0qZGlyZWN0IikpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSpkaXJlY3QuYm1hcCIpKSkKKworICAgIGRlZiBfZ2V0X2ltYWdlX2Vudl9wYXRoKHNlbGYsIGltYWdlKToKKyAgICAgICAgIiIiR2VuZXJhdGUgYW5kIG9idGFpbiB0aGUgcGF0aCB0byA8aW1hZ2U+LmVudiIiIgorICAgICAgICBpZiBpbWFnZSBub3QgaW4gc2VsZi53aWNlbnZfY2FjaGU6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGJpdGJha2UoJyVzIC1jIGRvX3Jvb3Rmc193aWNlbnYnICUgaW1hZ2UpLnN0YXR1cykKKyAgICAgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ1NUQUdJTkdfRElSJywgJ01BQ0hJTkUnXSwgaW1hZ2UpCisgICAgICAgICAgICBzdGRpciA9IGJiX3ZhcnNbJ1NUQUdJTkdfRElSJ10KKyAgICAgICAgICAgIG1hY2hpbmUgPSBiYl92YXJzWydNQUNISU5FJ10KKyAgICAgICAgICAgIHNlbGYud2ljZW52X2NhY2hlW2ltYWdlXSA9IG9zLnBhdGguam9pbihzdGRpciwgbWFjaGluZSwgJ2ltZ2RhdGEnKQorICAgICAgICByZXR1cm4gc2VsZi53aWNlbnZfY2FjaGVbaW1hZ2VdCisKKyAgICBAT0VUZXN0SUQoMTM0NykKKyAgICBkZWYgdGVzdF9pbWFnZV9lbnYoc2VsZik6CisgICAgICAgICIiIlRlc3QgZ2VuZXJhdGlvbiBvZiA8aW1hZ2U+LmVudiBmaWxlcy4iIiIKKyAgICAgICAgaW1hZ2UgPSAnY29yZS1pbWFnZS1taW5pbWFsJworICAgICAgICBpbWdkYXRhZGlyID0gc2VsZi5fZ2V0X2ltYWdlX2Vudl9wYXRoKGltYWdlKQorCisgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ0lNQUdFX0JBU0VOQU1FJywgJ1dJQ1ZBUlMnXSwgaW1hZ2UpCisgICAgICAgIGJhc2VuYW1lID0gYmJfdmFyc1snSU1BR0VfQkFTRU5BTUUnXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJhc2VuYW1lLCBpbWFnZSkKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihpbWdkYXRhZGlyLCBiYXNlbmFtZSkgKyAnLmVudicKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKHBhdGgpKQorCisgICAgICAgIHdpY3ZhcnMgPSBzZXQoYmJfdmFyc1snV0lDVkFSUyddLnNwbGl0KCkpCisgICAgICAgICMgZmlsdGVyIG91dCBvcHRpb25hbCB2YXJpYWJsZXMKKyAgICAgICAgd2ljdmFycyA9IHdpY3ZhcnMuZGlmZmVyZW5jZSgoJ0RFUExPWV9ESVJfSU1BR0UnLCAnSU1BR0VfQk9PVF9GSUxFUycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdJTklUUkQnLCAnSU5JVFJEX0xJVkUnLCAnSVNPRElSJykpCisgICAgICAgIHdpdGggb3BlbihwYXRoKSBhcyBlbnZmaWxlOgorICAgICAgICAgICAgY29udGVudCA9IGRpY3QobGluZS5zcGxpdCgiPSIsIDEpIGZvciBsaW5lIGluIGVudmZpbGUpCisgICAgICAgICAgICAjIHRlc3QgaWYgdmFyaWFibGVzIHVzZWQgYnkgd2ljIHByZXNlbnQgaW4gdGhlIC5lbnYgZmlsZQorICAgICAgICAgICAgZm9yIHZhciBpbiB3aWN2YXJzOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh2YXIgaW4gY29udGVudCwgIiVzIGlzIG5vdCBpbiAuZW52IGZpbGUiICUgdmFyKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb250ZW50W3Zhcl0pCisKKyAgICBAT0VUZXN0SUQoMTU1OSkKKyAgICBkZWYgdGVzdF9pbWFnZV92YXJzX2Rpcl9zaG9ydChzZWxmKToKKyAgICAgICAgIiIiVGVzdCBpbWFnZSB2YXJzIGRpcmVjdG9yeSBzZWxlY3Rpb24gLXYgb3B0aW9uIiIiCisgICAgICAgIGltYWdlID0gJ2NvcmUtaW1hZ2UtbWluaW1hbCcKKyAgICAgICAgaW1nZW52ZGlyID0gc2VsZi5fZ2V0X2ltYWdlX2Vudl9wYXRoKGltYWdlKQorICAgICAgICBuYXRpdmVfc3lzcm9vdCA9IGdldF9iYl92YXIoIlJFQ0lQRV9TWVNST09UX05BVElWRSIsICJ3aWMtdG9vbHMiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0taW1hZ2UtbmFtZT0lcyAtdiAlcyAtbiAlcyAtbyAlcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoaW1hZ2UsIGltZ2VudmRpciwgbmF0aXZlX3N5c3Jvb3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVzdWx0ZGlyKSkuc3RhdHVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSpkaXJlY3QiKSkpCisKKyAgICBAT0VUZXN0SUQoMTY2NSkKKyAgICBkZWYgdGVzdF9pbWFnZV92YXJzX2Rpcl9sb25nKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGltYWdlIHZhcnMgZGlyZWN0b3J5IHNlbGVjdGlvbiAtLXZhcnMgb3B0aW9uIiIiCisgICAgICAgIGltYWdlID0gJ2NvcmUtaW1hZ2UtbWluaW1hbCcKKyAgICAgICAgaW1nZW52ZGlyID0gc2VsZi5fZ2V0X2ltYWdlX2Vudl9wYXRoKGltYWdlKQorICAgICAgICBuYXRpdmVfc3lzcm9vdCA9IGdldF9iYl92YXIoIlJFQ0lQRV9TWVNST09UX05BVElWRSIsICJ3aWMtdG9vbHMiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0taW1hZ2UtbmFtZT0lcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLXZhcnMgJXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1uYXRpdmUtc3lzcm9vdCAlcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLW91dGRpciAlcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoaW1hZ2UsIGltZ2VudmRpciwgbmF0aXZlX3N5c3Jvb3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVzdWx0ZGlyKSkuc3RhdHVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSpkaXJlY3QiKSkpCisKKyAgICBAT0VUZXN0SUQoMTM1MSkKKyAgICBAb25seV9mb3JfYXJjaChbJ2k1ODYnLCAnaTY4NicsICd4ODZfNjQnXSkKKyAgICBkZWYgdGVzdF93aWNfaW1hZ2VfdHlwZShzZWxmKToKKyAgICAgICAgIiIiVGVzdCBidWlsZGluZyB3aWMgaW1hZ2VzIGJ5IGJpdGJha2UiIiIKKyAgICAgICAgY29uZmlnID0gJ0lNQUdFX0ZTVFlQRVMgKz0gIndpYyJcbldLU19GSUxFID0gIndpYy1pbWFnZS1taW5pbWFsIlxuJ1wKKyAgICAgICAgICAgICAgICAgJ01BQ0hJTkVfRkVBVFVSRVNfYXBwZW5kID0gIiBlZmkiXG4nCisgICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZyhjb25maWcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgYml0YmFrZSgnd2ljLWltYWdlLW1pbmltYWwnKS5zdGF0dXMpCisgICAgICAgIHNlbGYucmVtb3ZlX2NvbmZpZyhjb25maWcpCisKKyAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnREVQTE9ZX0RJUl9JTUFHRScsICdNQUNISU5FJ10pCisgICAgICAgIGRlcGxveV9kaXIgPSBiYl92YXJzWydERVBMT1lfRElSX0lNQUdFJ10KKyAgICAgICAgbWFjaGluZSA9IGJiX3ZhcnNbJ01BQ0hJTkUnXQorICAgICAgICBwcmVmaXggPSBvcy5wYXRoLmpvaW4oZGVwbG95X2RpciwgJ3dpYy1pbWFnZS1taW5pbWFsLSVzLicgJSBtYWNoaW5lKQorICAgICAgICAjIGNoZWNrIGlmIHdlIGhhdmUgcmVzdWx0IGltYWdlIGFuZCBtYW5pZmVzdHMgc3ltbGlua3MKKyAgICAgICAgIyBwb2ludGluZyB0byBleGlzdGluZyBmaWxlcworICAgICAgICBmb3Igc3VmZml4IGluICgnd2ljJywgJ21hbmlmZXN0Jyk6CisgICAgICAgICAgICBwYXRoID0gcHJlZml4ICsgc3VmZml4CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2xpbmsocGF0aCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5yZWFscGF0aChwYXRoKSkpCisKKyAgICBAT0VUZXN0SUQoMTQyMikKKyAgICBAb25seV9mb3JfYXJjaChbJ2k1ODYnLCAnaTY4NicsICd4ODZfNjQnXSkKKyAgICBkZWYgdGVzdF9xZW11KHNlbGYpOgorICAgICAgICAiIiJUZXN0IHdpYy1pbWFnZS1taW5pbWFsIHVuZGVyIHFlbXUiIiIKKyAgICAgICAgY29uZmlnID0gJ0lNQUdFX0ZTVFlQRVMgKz0gIndpYyJcbldLU19GSUxFID0gIndpYy1pbWFnZS1taW5pbWFsIlxuJ1wKKyAgICAgICAgICAgICAgICAgJ01BQ0hJTkVfRkVBVFVSRVNfYXBwZW5kID0gIiBlZmkiXG4nCisgICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZyhjb25maWcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgYml0YmFrZSgnd2ljLWltYWdlLW1pbmltYWwnKS5zdGF0dXMpCisgICAgICAgIHNlbGYucmVtb3ZlX2NvbmZpZyhjb25maWcpCisKKyAgICAgICAgd2l0aCBydW5xZW11KCd3aWMtaW1hZ2UtbWluaW1hbCcsIHNzaD1GYWxzZSkgYXMgcWVtdToKKyAgICAgICAgICAgIGNtZCA9ICJtb3VudCB8Z3JlcCAnXi9kZXYvJyB8IGN1dCAtZjEsMyAtZCAnICciCisgICAgICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHFlbXUucnVuX3NlcmlhbChjbWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIHN0YXR1cywgJ0ZhaWxlZCB0byBydW4gY29tbWFuZCAiJXMiOiAlcycgJSAoY21kLCBvdXRwdXQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQsICcvZGV2L3Jvb3QgL1xyXG4vZGV2L3NkYTEgL2Jvb3RcclxuL2Rldi9zZGEzIC9tbnQnKQorCisgICAgQG9ubHlfZm9yX2FyY2goWydpNTg2JywgJ2k2ODYnLCAneDg2XzY0J10pCisgICAgQE9FVGVzdElEKDE4NTIpCisgICAgZGVmIHRlc3RfcWVtdV9lZmkoc2VsZik6CisgICAgICAgICIiIlRlc3QgY29yZS1pbWFnZS1taW5pbWFsIGVmaSBpbWFnZSB1bmRlciBxZW11IiIiCisgICAgICAgIGNvbmZpZyA9ICdJTUFHRV9GU1RZUEVTID0gIndpYyJcbldLU19GSUxFID0gIm1rZWZpZGlzay53a3MiXG4nCisgICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZyhjb25maWcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsIG92bWYnKS5zdGF0dXMpCisgICAgICAgIHNlbGYucmVtb3ZlX2NvbmZpZyhjb25maWcpCisKKyAgICAgICAgd2l0aCBydW5xZW11KCdjb3JlLWltYWdlLW1pbmltYWwnLCBzc2g9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICBydW5xZW11cGFyYW1zPSdvdm1mJywgaW1hZ2VfZnN0eXBlPSd3aWMnKSBhcyBxZW11OgorICAgICAgICAgICAgY21kID0gImdyZXAgc2RhLiAvcHJvYy9wYXJ0aXRpb25zICB8d2MgLWwiCisgICAgICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHFlbXUucnVuX3NlcmlhbChjbWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIHN0YXR1cywgJ0ZhaWxlZCB0byBydW4gY29tbWFuZCAiJXMiOiAlcycgJSAoY21kLCBvdXRwdXQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQsICczJykKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgX21ha2VfZml4ZWRfc2l6ZV93a3Moc2l6ZSk6CisgICAgICAgICIiIgorICAgICAgICBDcmVhdGUgYSB3a3Mgb2YgYW4gaW1hZ2Ugd2l0aCBhIHNpbmdsZSBwYXJ0aXRpb24uIFNpemUgb2YgdGhlIHBhcnRpdGlvbiBpcyBzZXQKKyAgICAgICAgdXNpbmcgLS1maXhlZC1zaXplIGZsYWcuIFJldHVybnMgYSB0dXBsZTogKHBhdGggdG8gd2tzIGZpbGUsIHdrcyBpbWFnZSBuYW1lKQorICAgICAgICAiIiIKKyAgICAgICAgd2l0aCBOYW1lZFRlbXBvcmFyeUZpbGUoInciLCBzdWZmaXg9Ii53a3MiLCBkZWxldGU9RmFsc2UpIGFzIHRlbXBmOgorICAgICAgICAgICAgd2tzcGF0aCA9IHRlbXBmLm5hbWUKKyAgICAgICAgICAgIHRlbXBmLndyaXRlKCJwYXJ0ICIgXAorICAgICAgICAgICAgICAgICAgICAgIi0tc291cmNlIHJvb3RmcyAtLW9uZGlzayBoZGEgLS1hbGlnbiA0IC0tZml4ZWQtc2l6ZSAlZCAiCisgICAgICAgICAgICAgICAgICAgICAiLS1mc3R5cGU9ZXh0NFxuIiAlIHNpemUpCisgICAgICAgIHdrc25hbWUgPSBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUod2tzcGF0aCkpWzBdCisKKyAgICAgICAgcmV0dXJuIHdrc3BhdGgsIHdrc25hbWUKKworICAgIEBPRVRlc3RJRCgxODQ3KQorICAgIGRlZiB0ZXN0X2ZpeGVkX3NpemUoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IGNyZWF0aW9uIG9mIGEgc2ltcGxlIGltYWdlIHdpdGggcGFydGl0aW9uIHNpemUgY29udHJvbGxlZCB0aHJvdWdoCisgICAgICAgIC0tZml4ZWQtc2l6ZSBmbGFnCisgICAgICAgICIiIgorICAgICAgICB3a3NwYXRoLCB3a3NuYW1lID0gV2ljLl9tYWtlX2ZpeGVkX3NpemVfd2tzKDIwMCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSAlcyAtZSBjb3JlLWltYWdlLW1pbmltYWwgLW8gJXMiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAod2tzcGF0aCwgc2VsZi5yZXN1bHRkaXIpKS5zdGF0dXMpCisgICAgICAgIG9zLnJlbW92ZSh3a3NwYXRoKQorICAgICAgICB3aWNvdXQgPSBnbG9iKHNlbGYucmVzdWx0ZGlyICsgIiVzLSpkaXJlY3QiICUgd2tzbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4od2ljb3V0KSkKKworICAgICAgICB3aWNpbWcgPSB3aWNvdXRbMF0KKworICAgICAgICAjIHZlcmlmeSBwYXJ0aXRpb24gc2l6ZSB3aXRoIHdpYworICAgICAgICByZXMgPSBydW5DbWQoInBhcnRlZCAtbSAlcyB1bml0IG1pYiBwIDI+L2Rldi9udWxsIiAlIHdpY2ltZywKKyAgICAgICAgICAgICAgICAgICAgIGlnbm9yZV9zdGF0dXM9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZV9zeXNyb290PXNlbGYubmF0aXZlX3N5c3Jvb3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzLnN0YXR1cykKKworICAgICAgICAjIHBhcnNlIHBhcnRlZCBvdXRwdXQgd2hpY2ggbG9va3MgbGlrZSB0aGlzOgorICAgICAgICAjIEJZVDtcbgorICAgICAgICAjIC92YXIvdG1wL3dpYy9idWlsZC90bXBmd3ZqamtmXy0yMDE2MTExMDEyMjItaGRhLmRpcmVjdDoyMDBNaUI6ZmlsZTo1MTI6NTEyOm1zZG9zOjo7XG4KKyAgICAgICAgIyAxOjAuMDBNaUI6MjAwTWlCOjIwME1pQjpleHQ0Ojo7XG4KKyAgICAgICAgcGFydGxucyA9IHJlcy5vdXRwdXQuc3BsaXRsaW5lcygpWzI6XQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHBhcnRsbnMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCIxOjAuMDBNaUI6MjAwTWlCOjIwME1pQjpleHQ0Ojo7IiwgcGFydGxuc1swXSkKKworICAgIEBPRVRlc3RJRCgxODQ4KQorICAgIGRlZiB0ZXN0X2ZpeGVkX3NpemVfZXJyb3Ioc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IGNyZWF0aW9uIG9mIGEgc2ltcGxlIGltYWdlIHdpdGggcGFydGl0aW9uIHNpemUgY29udHJvbGxlZCB0aHJvdWdoCisgICAgICAgIC0tZml4ZWQtc2l6ZSBmbGFnLiBUaGUgc2l6ZSBvZiBwYXJ0aXRpb24gaXMgaW50ZW50aW9uYWxseSBzZXQgdG8gMU1pQgorICAgICAgICBpbiBvcmRlciB0byB0cmlnZ2VyIGFuIGVycm9yIGluIHdpYy4KKyAgICAgICAgIiIiCisgICAgICAgIHdrc3BhdGgsIHdrc25hbWUgPSBXaWMuX21ha2VfZml4ZWRfc2l6ZV93a3MoMSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIHJ1bkNtZCgid2ljIGNyZWF0ZSAlcyAtZSBjb3JlLWltYWdlLW1pbmltYWwgLW8gJXMiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAod2tzcGF0aCwgc2VsZi5yZXN1bHRkaXIpLCBpZ25vcmVfc3RhdHVzPVRydWUpLnN0YXR1cykKKyAgICAgICAgb3MucmVtb3ZlKHdrc3BhdGgpCisgICAgICAgIHdpY291dCA9IGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAiJXMtKmRpcmVjdCIgJSB3a3NuYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGxlbih3aWNvdXQpKQorCisgICAgQG9ubHlfZm9yX2FyY2goWydpNTg2JywgJ2k2ODYnLCAneDg2XzY0J10pCisgICAgQE9FVGVzdElEKDE4NTQpCisgICAgZGVmIHRlc3RfcmF3Y29weV9wbHVnaW5fcWVtdShzZWxmKToKKyAgICAgICAgIiIiVGVzdCByYXdjb3B5IHBsdWdpbiBpbiBxZW11IiIiCisgICAgICAgICMgYnVpbGQgZXh0NCBhbmQgd2ljIGltYWdlcworICAgICAgICBmb3IgZnN0eXBlIGluICgiZXh0NCIsICJ3aWMiKToKKyAgICAgICAgICAgIGNvbmZpZyA9ICdJTUFHRV9GU1RZUEVTID0gIiVzIlxuV0tTX0ZJTEUgPSAidGVzdF9yYXdjb3B5X3BsdWdpbi53a3MuaW4iXG4nICUgZnN0eXBlCisgICAgICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoY29uZmlnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBiaXRiYWtlKCdjb3JlLWltYWdlLW1pbmltYWwnKS5zdGF0dXMpCisgICAgICAgICAgICBzZWxmLnJlbW92ZV9jb25maWcoY29uZmlnKQorCisgICAgICAgIHdpdGggcnVucWVtdSgnY29yZS1pbWFnZS1taW5pbWFsJywgc3NoPUZhbHNlLCBpbWFnZV9mc3R5cGU9J3dpYycpIGFzIHFlbXU6CisgICAgICAgICAgICBjbWQgPSAiZ3JlcCBzZGEuIC9wcm9jL3BhcnRpdGlvbnMgIHx3YyAtbCIKKyAgICAgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gcWVtdS5ydW5fc2VyaWFsKGNtZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgc3RhdHVzLCAnRmFpbGVkIHRvIHJ1biBjb21tYW5kICIlcyI6ICVzJyAlIChjbWQsIG91dHB1dCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dCwgJzInKQorCisgICAgQE9FVGVzdElEKDE4NTMpCisgICAgZGVmIHRlc3RfcmF3Y29weV9wbHVnaW4oc2VsZik6CisgICAgICAgICIiIlRlc3QgcmF3Y29weSBwbHVnaW4iIiIKKyAgICAgICAgaW1nID0gJ2NvcmUtaW1hZ2UtbWluaW1hbCcKKyAgICAgICAgbWFjaGluZSA9IGdldF9iYl92YXIoJ01BQ0hJTkUnLCBpbWcpCisgICAgICAgIHdpdGggTmFtZWRUZW1wb3JhcnlGaWxlKCJ3Iiwgc3VmZml4PSIud2tzIikgYXMgd2tzOgorICAgICAgICAgICAgd2tzLndyaXRlbGluZXMoWydwYXJ0IC9ib290IC0tYWN0aXZlIC0tc291cmNlIGJvb3RpbWctcGNiaW9zXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXJ0IC8gLS1zb3VyY2UgcmF3Y29weSAtLXNvdXJjZXBhcmFtcz0iZmlsZT0lcy0lcy5leHQ0IiAtLXVzZS11dWlkXG4nXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChpbWcsIG1hY2hpbmUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdib290bG9hZGVyIC0tdGltZW91dD0wIC0tYXBwZW5kPSJjb25zb2xlPXR0eVMwLDExNTIwMG44IlxuJ10pCisgICAgICAgICAgICB3a3MuZmx1c2goKQorICAgICAgICAgICAgY21kID0gIndpYyBjcmVhdGUgJXMgLWUgJXMgLW8gJXMiICUgKHdrcy5uYW1lLCBpbWcsIHNlbGYucmVzdWx0ZGlyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoY21kKS5zdGF0dXMpCisgICAgICAgICAgICB3a3NuYW1lID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKHdrcy5uYW1lKSlbMF0KKyAgICAgICAgICAgIG91dCA9IGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAiJXMtKmRpcmVjdCIgJSB3a3NuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4ob3V0KSkKKworICAgIEBPRVRlc3RJRCgxODQ5KQorICAgIGRlZiB0ZXN0X2ZzX3R5cGVzKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGZpbGVzeXN0ZW0gdHlwZXMgZm9yIGVtcHR5IGFuZCBub3QgZW1wdHkgcGFydGl0aW9ucyIiIgorICAgICAgICBpbWcgPSAnY29yZS1pbWFnZS1taW5pbWFsJworICAgICAgICB3aXRoIE5hbWVkVGVtcG9yYXJ5RmlsZSgidyIsIHN1ZmZpeD0iLndrcyIpIGFzIHdrczoKKyAgICAgICAgICAgIHdrcy53cml0ZWxpbmVzKFsncGFydCBleHQyICAgLS1mc3R5cGUgZXh0MiAgICAgLS1zb3VyY2Ugcm9vdGZzXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXJ0IGJ0cmZzICAtLWZzdHlwZSBidHJmcyAgICAtLXNvdXJjZSByb290ZnMgLS1zaXplIDQwTVxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFydCBzcXVhc2ggLS1mc3R5cGUgc3F1YXNoZnMgLS1zb3VyY2Ugcm9vdGZzXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXJ0IHN3YXAgICAtLWZzdHlwZSBzd2FwIC0tc2l6ZSAxTVxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFydCBlbXB0eXZmYXQgICAtLWZzdHlwZSB2ZmF0ICAgLS1zaXplIDFNXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXJ0IGVtcHR5bXNkb3MgIC0tZnN0eXBlIG1zZG9zICAtLXNpemUgMU1cbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhcnQgZW1wdHlleHQyICAgLS1mc3R5cGUgZXh0MiAgIC0tc2l6ZSAxTVxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFydCBlbXB0eWJ0cmZzICAtLWZzdHlwZSBidHJmcyAgLS1zaXplIDEwME1cbiddKQorICAgICAgICAgICAgd2tzLmZsdXNoKCkKKyAgICAgICAgICAgIGNtZCA9ICJ3aWMgY3JlYXRlICVzIC1lICVzIC1vICVzIiAlICh3a3MubmFtZSwgaW1nLCBzZWxmLnJlc3VsdGRpcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKGNtZCkuc3RhdHVzKQorICAgICAgICAgICAgd2tzbmFtZSA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZSh3a3MubmFtZSkpWzBdCisgICAgICAgICAgICBvdXQgPSBnbG9iKHNlbGYucmVzdWx0ZGlyICsgIiVzLSpkaXJlY3QiICUgd2tzbmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKG91dCkpCisKKyAgICBAT0VUZXN0SUQoMTg1MSkKKyAgICBkZWYgdGVzdF9raWNrc3RhcnRfcGFyc2VyKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHdrcyBwYXJzZXIgb3B0aW9ucyIiIgorICAgICAgICB3aXRoIE5hbWVkVGVtcG9yYXJ5RmlsZSgidyIsIHN1ZmZpeD0iLndrcyIpIGFzIHdrczoKKyAgICAgICAgICAgIHdrcy53cml0ZWxpbmVzKFsncGFydCAvIC0tZnN0eXBlIGV4dDMgLS1zb3VyY2Ugcm9vdGZzIC0tc3lzdGVtLWlkIDB4RkYgJ1wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1vdmVyaGVhZC1mYWN0b3IgMS4yIC0tc2l6ZSAxMDBrXG4nXSkKKyAgICAgICAgICAgIHdrcy5mbHVzaCgpCisgICAgICAgICAgICBjbWQgPSAid2ljIGNyZWF0ZSAlcyAtZSBjb3JlLWltYWdlLW1pbmltYWwgLW8gJXMiICUgKHdrcy5uYW1lLCBzZWxmLnJlc3VsdGRpcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKGNtZCkuc3RhdHVzKQorICAgICAgICAgICAgd2tzbmFtZSA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZSh3a3MubmFtZSkpWzBdCisgICAgICAgICAgICBvdXQgPSBnbG9iKHNlbGYucmVzdWx0ZGlyICsgIiVzLSpkaXJlY3QiICUgd2tzbmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKG91dCkpCisKKyAgICBAT0VUZXN0SUQoMTg1MCkKKyAgICBkZWYgdGVzdF9pbWFnZV9ib290cGFydF9nbG9iYmVkKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGdsb2JiZWQgc291cmNlcyB3aXRoIGltYWdlLWJvb3RwYXJ0IHBsdWdpbiIiIgorICAgICAgICBpbWcgPSAiY29yZS1pbWFnZS1taW5pbWFsIgorICAgICAgICBjbWQgPSAid2ljIGNyZWF0ZSBzZGltYWdlLWJvb3RwYXJ0IC1lICVzIC1vICVzIiAlIChpbWcsIHNlbGYucmVzdWx0ZGlyKQorICAgICAgICBjb25maWcgPSAnSU1BR0VfQk9PVF9GSUxFUyA9ICIlcyoiJyAlIGdldF9iYl92YXIoJ0tFUk5FTF9JTUFHRVRZUEUnLCBpbWcpCisgICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZyhjb25maWcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKGNtZCkuc3RhdHVzKQorICAgICAgICBzZWxmLnJlbW92ZV9jb25maWcoY29uZmlnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgInNkaW1hZ2UtYm9vdHBhcnQtKmRpcmVjdCIpKSkKKworICAgIEBPRVRlc3RJRCgxODU1KQorICAgIGRlZiB0ZXN0X3NwYXJzZV9jb3B5KHNlbGYpOgorICAgICAgICAiIiJUZXN0IHNwYXJzZV9jb3B5IHdpdGggRklFTUFQIGFuZCBTRUVLX0hPTEUgZmlsZW1hcCBBUElzIiIiCisgICAgICAgIGxpYnBhdGggPSBvcy5wYXRoLmpvaW4oZ2V0X2JiX3ZhcignQ09SRUJBU0UnKSwgJ3NjcmlwdHMnLCAnbGliJywgJ3dpYycpCisgICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCBsaWJwYXRoKQorICAgICAgICBmcm9tICBmaWxlbWFwIGltcG9ydCBGaWxlbWFwRmllbWFwLCBGaWxlbWFwU2Vlaywgc3BhcnNlX2NvcHksIEVycm9yTm90U3VwcAorICAgICAgICB3aXRoIE5hbWVkVGVtcG9yYXJ5RmlsZSgidyIsIHN1ZmZpeD0iLndpYy1zcGFyc2UiKSBhcyBzcGFyc2U6CisgICAgICAgICAgICBzcmNfbmFtZSA9IHNwYXJzZS5uYW1lCisgICAgICAgICAgICBzcmNfc2l6ZSA9IDEwMjQgKiAxMAorICAgICAgICAgICAgc3BhcnNlLnRydW5jYXRlKHNyY19zaXplKQorICAgICAgICAgICAgIyB3cml0ZSBvbmUgYnl0ZSB0byB0aGUgZmlsZQorICAgICAgICAgICAgd2l0aCBvcGVuKHNyY19uYW1lLCAncitiJykgYXMgc2ZpbGU6CisgICAgICAgICAgICAgICAgc2ZpbGUuc2VlaygxMDI0ICogNCkKKyAgICAgICAgICAgICAgICBzZmlsZS53cml0ZShiJ1x4MDAnKQorICAgICAgICAgICAgZGVzdCA9IHNwYXJzZS5uYW1lICsgJy5vdXQnCisgICAgICAgICAgICAjIGNvcHkgc3JjIGZpbGUgdG8gZGVzdCB1c2luZyBkaWZmZXJlbnQgZmlsZW1hcCBBUElzCisgICAgICAgICAgICBmb3IgYXBpIGluIChGaWxlbWFwRmllbWFwLCBGaWxlbWFwU2VlaywgTm9uZSk6CisgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZGVzdCk6CisgICAgICAgICAgICAgICAgICAgIG9zLnVubGluayhkZXN0KQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgc3BhcnNlX2NvcHkoc3BhcnNlLm5hbWUsIGRlc3QsIGFwaT1hcGkpCisgICAgICAgICAgICAgICAgZXhjZXB0IEVycm9yTm90U3VwcDoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUgIyBza2lwIHVuc3VwcG9ydGVkIEFQSQorICAgICAgICAgICAgICAgIGRlc3Rfc3RhdCA9IG9zLnN0YXQoZGVzdCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlc3Rfc3RhdC5zdF9zaXplLCBzcmNfc2l6ZSkKKyAgICAgICAgICAgICAgICAjIDggYmxvY2tzIGlzIDRLIChwaHlzaWNhbCBzZWN0b3Igc2l6ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlc3Rfc3RhdC5zdF9ibG9ja3MsIDgpCisgICAgICAgICAgICBvcy51bmxpbmsoZGVzdCkKKworICAgIEBPRVRlc3RJRCgxODU3KQorICAgIGRlZiB0ZXN0X3dpY19scyhzZWxmKToKKyAgICAgICAgIiIiVGVzdCBsaXN0aW5nIGltYWdlIGNvbnRlbnQgdXNpbmcgJ3dpYyBscyciIiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1pbWFnZS1uYW1lPWNvcmUtaW1hZ2UtbWluaW1hbCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItRCAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcikuc3RhdHVzKQorICAgICAgICBpbWFnZXMgPSBnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSouZGlyZWN0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oaW1hZ2VzKSkKKworICAgICAgICBzeXNyb290ID0gZ2V0X2JiX3ZhcignUkVDSVBFX1NZU1JPT1RfTkFUSVZFJywgJ3dpYy10b29scycpCisKKyAgICAgICAgIyBsaXN0IHBhcnRpdGlvbnMKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJ3aWMgbHMgJXMgLW4gJXMiICUgKGltYWdlc1swXSwgc3lzcm9vdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzdWx0LnN0YXR1cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgzLCBsZW4ocmVzdWx0Lm91dHB1dC5zcGxpdCgnXG4nKSkpCisKKyAgICAgICAgIyBsaXN0IGRpcmVjdG9yeSBjb250ZW50IG9mIHRoZSBmaXJzdCBwYXJ0aXRpb24KKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJ3aWMgbHMgJXM6MS8gLW4gJXMiICUgKGltYWdlc1swXSwgc3lzcm9vdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzdWx0LnN0YXR1cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg2LCBsZW4ocmVzdWx0Lm91dHB1dC5zcGxpdCgnXG4nKSkpCisKKyAgICBAT0VUZXN0SUQoMTg1NikKKyAgICBkZWYgdGVzdF93aWNfY3Aoc2VsZik6CisgICAgICAgICIiIlRlc3QgY29weSBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgdG8gdGhlIHRoZSB3aWMgaW1hZ2UuIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0taW1hZ2UtbmFtZT1jb3JlLWltYWdlLW1pbmltYWwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLUQgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIpLnN0YXR1cykKKyAgICAgICAgaW1hZ2VzID0gZ2xvYihzZWxmLnJlc3VsdGRpciArICJ3aWN0ZXN0ZGlzay0qLmRpcmVjdCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGltYWdlcykpCisKKyAgICAgICAgc3lzcm9vdCA9IGdldF9iYl92YXIoJ1JFQ0lQRV9TWVNST09UX05BVElWRScsICd3aWMtdG9vbHMnKQorCisgICAgICAgICMgbGlzdCBkaXJlY3RvcnkgY29udGVudCBvZiB0aGUgZmlyc3QgcGFydGl0aW9uCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgid2ljIGxzICVzOjEvIC1uICVzIiAlIChpbWFnZXNbMF0sIHN5c3Jvb3QpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlc3VsdC5zdGF0dXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNiwgbGVuKHJlc3VsdC5vdXRwdXQuc3BsaXQoJ1xuJykpKQorCisgICAgICAgIHdpdGggTmFtZWRUZW1wb3JhcnlGaWxlKCJ3Iiwgc3VmZml4PSIud2ljLWNwIikgYXMgdGVzdGZpbGU6CisgICAgICAgICAgICB0ZXN0ZmlsZS53cml0ZSgidGVzdCIpCisKKyAgICAgICAgICAgICMgY29weSBmaWxlIHRvIHRoZSBwYXJ0aXRpb24KKyAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgid2ljIGNwICVzICVzOjEvIC1uICVzIiAlICh0ZXN0ZmlsZS5uYW1lLCBpbWFnZXNbMF0sIHN5c3Jvb3QpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuc3RhdHVzKQorCisgICAgICAgICAgICAjIGNoZWNrIGlmIGZpbGUgaXMgdGhlcmUKKyAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgid2ljIGxzICVzOjEvIC1uICVzIiAlIChpbWFnZXNbMF0sIHN5c3Jvb3QpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuc3RhdHVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg3LCBsZW4ocmVzdWx0Lm91dHB1dC5zcGxpdCgnXG4nKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5iYXNlbmFtZSh0ZXN0ZmlsZS5uYW1lKSBpbiByZXN1bHQub3V0cHV0KQorCisgICAgICAgICAgICAjIHByZXBhcmUgZGlyZWN0b3J5CisgICAgICAgICAgICB0ZXN0ZGlyID0gb3MucGF0aC5qb2luKHNlbGYucmVzdWx0ZGlyLCAnd2ljLXRlc3QtY3AtZGlyJykKKyAgICAgICAgICAgIHRlc3RzdWJkaXIgPSBvcy5wYXRoLmpvaW4odGVzdGRpciwgJ3N1YmRpcicpCisgICAgICAgICAgICBvcy5tYWtlZGlycyhvcy5wYXRoLmpvaW4odGVzdHN1YmRpcikpCisgICAgICAgICAgICBjb3B5KHRlc3RmaWxlLm5hbWUsIHRlc3RkaXIpCisKKyAgICAgICAgICAgICMgY29weSBkaXJlY3RvcnkgdG8gdGhlIHBhcnRpdGlvbgorICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJ3aWMgY3AgJXMgJXM6MS8gLW4gJXMiICUgKHRlc3RkaXIsIGltYWdlc1swXSwgc3lzcm9vdCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlc3VsdC5zdGF0dXMpCisKKyAgICAgICAgICAgICMgY2hlY2sgaWYgZGlyZWN0b3J5IGlzIHRoZXJlCisgICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoIndpYyBscyAlczoxLyAtbiAlcyIgJSAoaW1hZ2VzWzBdLCBzeXNyb290KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzdWx0LnN0YXR1cykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoOCwgbGVuKHJlc3VsdC5vdXRwdXQuc3BsaXQoJ1xuJykpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguYmFzZW5hbWUodGVzdGRpcikgaW4gcmVzdWx0Lm91dHB1dCkKKworICAgIEBPRVRlc3RJRCgxODU4KQorICAgIGRlZiB0ZXN0X3dpY19ybShzZWxmKToKKyAgICAgICAgIiIiVGVzdCByZW1vdmluZyBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgZnJvbSB0aGUgdGhlIHdpYyBpbWFnZS4iIiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgbWtlZmlkaXNrICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0taW1hZ2UtbmFtZT1jb3JlLWltYWdlLW1pbmltYWwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLUQgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIpLnN0YXR1cykKKyAgICAgICAgaW1hZ2VzID0gZ2xvYihzZWxmLnJlc3VsdGRpciArICJta2VmaWRpc2stKi5kaXJlY3QiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihpbWFnZXMpKQorCisgICAgICAgIHN5c3Jvb3QgPSBnZXRfYmJfdmFyKCdSRUNJUEVfU1lTUk9PVF9OQVRJVkUnLCAnd2ljLXRvb2xzJykKKworICAgICAgICAjIGxpc3QgZGlyZWN0b3J5IGNvbnRlbnQgb2YgdGhlIGZpcnN0IHBhcnRpdGlvbgorICAgICAgICByZXN1bHQgPSBydW5DbWQoIndpYyBscyAlczoxIC1uICVzIiAlIChpbWFnZXNbMF0sIHN5c3Jvb3QpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlc3VsdC5zdGF0dXMpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ1xuQlpJTUFHRSAgICAgICAgJywgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignXG5FRkkgICAgICAgICAgPERJUj4gICAgICcsIHJlc3VsdC5vdXRwdXQpCisKKyAgICAgICAgIyByZW1vdmUgZmlsZQorICAgICAgICByZXN1bHQgPSBydW5DbWQoIndpYyBybSAlczoxL2J6aW1hZ2UgLW4gJXMiICUgKGltYWdlc1swXSwgc3lzcm9vdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzdWx0LnN0YXR1cykKKworICAgICAgICAjIHJlbW92ZSBkaXJlY3RvcnkKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJ3aWMgcm0gJXM6MS9lZmkgLW4gJXMiICUgKGltYWdlc1swXSwgc3lzcm9vdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzdWx0LnN0YXR1cykKKworICAgICAgICAjIGNoZWNrIGlmIHRoZXkncmUgcmVtb3ZlZAorICAgICAgICByZXN1bHQgPSBydW5DbWQoIndpYyBscyAlczoxIC1uICVzIiAlIChpbWFnZXNbMF0sIHN5c3Jvb3QpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlc3VsdC5zdGF0dXMpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ1xuQlpJTUFHRSAgICAgICAgJywgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignXG5FRkkgICAgICAgICAgPERJUj4gICAgICcsIHJlc3VsdC5vdXRwdXQpCisKKyAgICBAT0VUZXN0SUQoMTkyMikKKyAgICBkZWYgdGVzdF9ta2ZzX2V4dHJhb3B0cyhzZWxmKToKKyAgICAgICAgIiIiVGVzdCB3a3Mgb3B0aW9uIC0tbWtmcy1leHRyYW9wdHMgZm9yIGVtcHR5IGFuZCBub3QgZW1wdHkgcGFydGl0aW9ucyIiIgorICAgICAgICBpbWcgPSAnY29yZS1pbWFnZS1taW5pbWFsJworICAgICAgICB3aXRoIE5hbWVkVGVtcG9yYXJ5RmlsZSgidyIsIHN1ZmZpeD0iLndrcyIpIGFzIHdrczoKKyAgICAgICAgICAgIHdrcy53cml0ZWxpbmVzKAorICAgICAgICAgICAgICAgIFsncGFydCBleHQyICAgLS1mc3R5cGUgZXh0MiAgICAgLS1zb3VyY2Ugcm9vdGZzIC0tbWtmcy1leHRyYW9wdHMgIi1EIC1GIC1pIDgxOTIiXG4nLAorICAgICAgICAgICAgICAgICAicGFydCBidHJmcyAgLS1mc3R5cGUgYnRyZnMgICAgLS1zb3VyY2Ugcm9vdGZzIC0tc2l6ZSA0ME0gLS1ta2ZzLWV4dHJhb3B0cz0nLS1xdWlldCdcbiIsCisgICAgICAgICAgICAgICAgICdwYXJ0IHNxdWFzaCAtLWZzdHlwZSBzcXVhc2hmcyAtLXNvdXJjZSByb290ZnMgLS1ta2ZzLWV4dHJhb3B0cyAiLW5vLXNwYXJzZSAtYiA0MDk2IlxuJywKKyAgICAgICAgICAgICAgICAgJ3BhcnQgZW1wdHl2ZmF0ICAgLS1mc3R5cGUgdmZhdCAgIC0tc2l6ZSAxTSAtLW1rZnMtZXh0cmFvcHRzICItUyAxMDI0IC1zIDY0IlxuJywKKyAgICAgICAgICAgICAgICAgJ3BhcnQgZW1wdHltc2RvcyAgLS1mc3R5cGUgbXNkb3MgIC0tc2l6ZSAxTSAtLW1rZnMtZXh0cmFvcHRzICItUyAxMDI0IC1zIDY0IlxuJywKKyAgICAgICAgICAgICAgICAgJ3BhcnQgZW1wdHlleHQyICAgLS1mc3R5cGUgZXh0MiAgIC0tc2l6ZSAxTSAtLW1rZnMtZXh0cmFvcHRzICItRCAtRiAtaSA4MTkyIlxuJywKKyAgICAgICAgICAgICAgICAgJ3BhcnQgZW1wdHlidHJmcyAgLS1mc3R5cGUgYnRyZnMgIC0tc2l6ZSAxMDBNIC0tbWtmcy1leHRyYW9wdHMgIi0tbWl4ZWQgLUsiXG4nXSkKKyAgICAgICAgICAgIHdrcy5mbHVzaCgpCisgICAgICAgICAgICBjbWQgPSAid2ljIGNyZWF0ZSAlcyAtZSAlcyAtbyAlcyIgJSAod2tzLm5hbWUsIGltZywgc2VsZi5yZXN1bHRkaXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZChjbWQpLnN0YXR1cykKKyAgICAgICAgICAgIHdrc25hbWUgPSBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUod2tzLm5hbWUpKVswXQorICAgICAgICAgICAgb3V0ID0gZ2xvYihzZWxmLnJlc3VsdGRpciArICIlcy0qZGlyZWN0IiAlIHdrc25hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihvdXQpKQorCisgICAgZGVmIHRlc3RfZXhwYW5kX21icl9pbWFnZShzZWxmKToKKyAgICAgICAgIiIiVGVzdCB3aWMgd3JpdGUgLS1leHBhbmQgY29tbWFuZCBmb3IgbWJyIGltYWdlIiIiCisgICAgICAgICMgYnVpbGQgYW4gaW1hZ2UKKyAgICAgICAgY29uZmlnID0gJ0lNQUdFX0ZTVFlQRVMgPSAid2ljIlxuV0tTX0ZJTEUgPSAiZGlyZWN0ZGlzay53a3MiXG4nCisgICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZyhjb25maWcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsJykuc3RhdHVzKQorCisgICAgICAgICMgZ2V0IHBhdGggdG8gdGhlIGltYWdlCisgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ0RFUExPWV9ESVJfSU1BR0UnLCAnTUFDSElORSddKQorICAgICAgICBkZXBsb3lfZGlyID0gYmJfdmFyc1snREVQTE9ZX0RJUl9JTUFHRSddCisgICAgICAgIG1hY2hpbmUgPSBiYl92YXJzWydNQUNISU5FJ10KKyAgICAgICAgaW1hZ2VfcGF0aCA9IG9zLnBhdGguam9pbihkZXBsb3lfZGlyLCAnY29yZS1pbWFnZS1taW5pbWFsLSVzLndpYycgJSBtYWNoaW5lKQorCisgICAgICAgIHNlbGYucmVtb3ZlX2NvbmZpZyhjb25maWcpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBleHBhbmQgaW1hZ2UgdG8gMUcKKyAgICAgICAgICAgIG5ld19pbWFnZV9wYXRoID0gTm9uZQorICAgICAgICAgICAgd2l0aCBOYW1lZFRlbXBvcmFyeUZpbGUobW9kZT0nd2InLCBzdWZmaXg9Jy53aWMuZXhwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcj1kZXBsb3lfZGlyLCBkZWxldGU9RmFsc2UpIGFzIHNwYXJzZToKKyAgICAgICAgICAgICAgICBzcGFyc2UudHJ1bmNhdGUoMTAyNCAqKiAzKQorICAgICAgICAgICAgICAgIG5ld19pbWFnZV9wYXRoID0gc3BhcnNlLm5hbWUKKworICAgICAgICAgICAgc3lzcm9vdCA9IGdldF9iYl92YXIoJ1JFQ0lQRV9TWVNST09UX05BVElWRScsICd3aWMtdG9vbHMnKQorICAgICAgICAgICAgY21kID0gIndpYyB3cml0ZSAtbiAlcyAtLWV4cGFuZCAxOjAgJXMgJXMiICUgKHN5c3Jvb3QsIGltYWdlX3BhdGgsIG5ld19pbWFnZV9wYXRoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoY21kKS5zdGF0dXMpCisKKyAgICAgICAgICAgICMgY2hlY2sgaWYgcGFydGl0aW9ucyBhcmUgZXhwYW5kZWQKKyAgICAgICAgICAgIG9yaWcgPSBydW5DbWQoIndpYyBscyAlcyAtbiAlcyIgJSAoaW1hZ2VfcGF0aCwgc3lzcm9vdCkpCisgICAgICAgICAgICBleHAgPSBydW5DbWQoIndpYyBscyAlcyAtbiAlcyIgJSAobmV3X2ltYWdlX3BhdGgsIHN5c3Jvb3QpKQorICAgICAgICAgICAgb3JpZ19zaXplcyA9IFtpbnQobGluZS5zcGxpdCgpWzNdKSBmb3IgbGluZSBpbiBvcmlnLm91dHB1dC5zcGxpdCgnXG4nKVsxOl1dCisgICAgICAgICAgICBleHBfc2l6ZXMgPSBbaW50KGxpbmUuc3BsaXQoKVszXSkgZm9yIGxpbmUgaW4gZXhwLm91dHB1dC5zcGxpdCgnXG4nKVsxOl1dCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9yaWdfc2l6ZXNbMF0sIGV4cF9zaXplc1swXSkgIyBmaXJzdCBwYXJ0aXRpb24gaXMgbm90IHJlc2l6ZWQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcmlnX3NpemVzWzFdIDwgZXhwX3NpemVzWzFdKQorCisgICAgICAgICAgICAjIENoZWNrIGlmIGFsbCBmcmVlIHNwYWNlIGlzIHBhcnRpdGlvbmVkCisgICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoIiVzL3Vzci9zYmluL3NmZGlzayAtRiAlcyIgJSAoc3lzcm9vdCwgbmV3X2ltYWdlX3BhdGgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCIwIEIsIDAgYnl0ZXMsIDAgc2VjdG9ycyIgaW4gcmVzdWx0Lm91dHB1dCkKKworICAgICAgICAgICAgb3MucmVuYW1lKGltYWdlX3BhdGgsIGltYWdlX3BhdGggKyAnLmJhaycpCisgICAgICAgICAgICBvcy5yZW5hbWUobmV3X2ltYWdlX3BhdGgsIGltYWdlX3BhdGgpCisKKyAgICAgICAgICAgICMgQ2hlY2sgaWYgaXQgYm9vdHMgaW4gcWVtdQorICAgICAgICAgICAgd2l0aCBydW5xZW11KCdjb3JlLWltYWdlLW1pbmltYWwnLCBzc2g9RmFsc2UpIGFzIHFlbXU6CisgICAgICAgICAgICAgICAgY21kID0gImxzIC9ldGMvIgorICAgICAgICAgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gcWVtdS5ydW5fc2VyaWFsKCd0cnVlJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIHN0YXR1cywgJ0ZhaWxlZCB0byBydW4gY29tbWFuZCAiJXMiOiAlcycgJSAoY21kLCBvdXRwdXQpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMobmV3X2ltYWdlX3BhdGgpOgorICAgICAgICAgICAgICAgIG9zLnVubGluayhuZXdfaW1hZ2VfcGF0aCkKKyAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGltYWdlX3BhdGggKyAnLmJhaycpOgorICAgICAgICAgICAgICAgIG9zLnJlbmFtZShpbWFnZV9wYXRoICsgJy5iYWsnLCBpbWFnZV9wYXRoKQorCisgICAgZGVmIHRlc3Rfd2ljX2xzX2V4dChzZWxmKToKKyAgICAgICAgIiIiVGVzdCBsaXN0aW5nIGNvbnRlbnQgb2YgdGhlIGV4dCBwYXJ0aXRpb24gdXNpbmcgJ3dpYyBscyciIiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1pbWFnZS1uYW1lPWNvcmUtaW1hZ2UtbWluaW1hbCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItRCAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcikuc3RhdHVzKQorICAgICAgICBpbWFnZXMgPSBnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSouZGlyZWN0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oaW1hZ2VzKSkKKworICAgICAgICBzeXNyb290ID0gZ2V0X2JiX3ZhcignUkVDSVBFX1NZU1JPT1RfTkFUSVZFJywgJ3dpYy10b29scycpCisKKyAgICAgICAgIyBsaXN0IGRpcmVjdG9yeSBjb250ZW50IG9mIHRoZSBzZWNvbmQgZXh0NCBwYXJ0aXRpb24KKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJ3aWMgbHMgJXM6Mi8gLW4gJXMiICUgKGltYWdlc1swXSwgc3lzcm9vdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzdWx0LnN0YXR1cykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNldChbJ2JpbicsICdob21lJywgJ3Byb2MnLCAndXNyJywgJ3ZhcicsICdkZXYnLCAnbGliJywgJ3NiaW4nXSkuaXNzdWJzZXQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0KGxpbmUuc3BsaXQoKVstMV0gZm9yIGxpbmUgaW4gcmVzdWx0Lm91dHB1dC5zcGxpdCgnXG4nKSBpZiBsaW5lKSkpCisKKyAgICBkZWYgdGVzdF93aWNfY3BfZXh0KHNlbGYpOgorICAgICAgICAiIiJUZXN0IGNvcHkgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIHRvIHRoZSBleHQgcGFydGl0aW9uLiIiIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWltYWdlLW5hbWU9Y29yZS1pbWFnZS1taW5pbWFsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1EIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyKS5zdGF0dXMpCisgICAgICAgIGltYWdlcyA9IGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAid2ljdGVzdGRpc2stKi5kaXJlY3QiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihpbWFnZXMpKQorCisgICAgICAgIHN5c3Jvb3QgPSBnZXRfYmJfdmFyKCdSRUNJUEVfU1lTUk9PVF9OQVRJVkUnLCAnd2ljLXRvb2xzJykKKworICAgICAgICAjIGxpc3QgZGlyZWN0b3J5IGNvbnRlbnQgb2YgdGhlIGV4dDQgcGFydGl0aW9uCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgid2ljIGxzICVzOjIvIC1uICVzIiAlIChpbWFnZXNbMF0sIHN5c3Jvb3QpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlc3VsdC5zdGF0dXMpCisgICAgICAgIGRpcnMgPSBzZXQobGluZS5zcGxpdCgpWy0xXSBmb3IgbGluZSBpbiByZXN1bHQub3V0cHV0LnNwbGl0KCdcbicpIGlmIGxpbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXQoWydiaW4nLCAnaG9tZScsICdwcm9jJywgJ3VzcicsICd2YXInLCAnZGV2JywgJ2xpYicsICdzYmluJ10pLmlzc3Vic2V0KGRpcnMpKQorCisgICAgICAgIHdpdGggTmFtZWRUZW1wb3JhcnlGaWxlKCJ3Iiwgc3VmZml4PSIud2ljLWNwIikgYXMgdGVzdGZpbGU6CisgICAgICAgICAgICB0ZXN0ZmlsZS53cml0ZSgidGVzdCIpCisKKyAgICAgICAgICAgICMgY29weSBmaWxlIHRvIHRoZSBwYXJ0aXRpb24KKyAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgid2ljIGNwICVzICVzOjIvIC1uICVzIiAlICh0ZXN0ZmlsZS5uYW1lLCBpbWFnZXNbMF0sIHN5c3Jvb3QpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuc3RhdHVzKQorCisgICAgICAgICAgICAjIGNoZWNrIGlmIGZpbGUgaXMgdGhlcmUKKyAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgid2ljIGxzICVzOjIvIC1uICVzIiAlIChpbWFnZXNbMF0sIHN5c3Jvb3QpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuc3RhdHVzKQorICAgICAgICAgICAgbmV3ZGlycyA9IHNldChsaW5lLnNwbGl0KClbLTFdIGZvciBsaW5lIGluIHJlc3VsdC5vdXRwdXQuc3BsaXQoJ1xuJykgaWYgbGluZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3ZGlycy5kaWZmZXJlbmNlKGRpcnMpLCBzZXQoW29zLnBhdGguYmFzZW5hbWUodGVzdGZpbGUubmFtZSldKSkKKworICAgIGRlZiB0ZXN0X3dpY19ybV9leHQoc2VsZik6CisgICAgICAgICIiIlRlc3QgcmVtb3ZpbmcgZmlsZXMgZnJvbSB0aGUgZXh0IHBhcnRpdGlvbi4iIiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgbWtlZmlkaXNrICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0taW1hZ2UtbmFtZT1jb3JlLWltYWdlLW1pbmltYWwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLUQgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIpLnN0YXR1cykKKyAgICAgICAgaW1hZ2VzID0gZ2xvYihzZWxmLnJlc3VsdGRpciArICJta2VmaWRpc2stKi5kaXJlY3QiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihpbWFnZXMpKQorCisgICAgICAgIHN5c3Jvb3QgPSBnZXRfYmJfdmFyKCdSRUNJUEVfU1lTUk9PVF9OQVRJVkUnLCAnd2ljLXRvb2xzJykKKworICAgICAgICAjIGxpc3QgZGlyZWN0b3J5IGNvbnRlbnQgb2YgdGhlIC9ldGMgZGlyZWN0b3J5IG9uIGV4dDQgcGFydGl0aW9uCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgid2ljIGxzICVzOjIvZXRjLyAtbiAlcyIgJSAoaW1hZ2VzWzBdLCBzeXNyb290KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuc3RhdHVzKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2ZzdGFiJyBpbiBbbGluZS5zcGxpdCgpWy0xXSBmb3IgbGluZSBpbiByZXN1bHQub3V0cHV0LnNwbGl0KCdcbicpIGlmIGxpbmVdKQorCisgICAgICAgICMgcmVtb3ZlIGZpbGUKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJ3aWMgcm0gJXM6Mi9ldGMvZnN0YWIgLW4gJXMiICUgKGltYWdlc1swXSwgc3lzcm9vdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzdWx0LnN0YXR1cykKKworICAgICAgICAjIGNoZWNrIGlmIGl0J3MgcmVtb3ZlZAorICAgICAgICByZXN1bHQgPSBydW5DbWQoIndpYyBscyAlczoyL2V0Yy8gLW4gJXMiICUgKGltYWdlc1swXSwgc3lzcm9vdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzdWx0LnN0YXR1cykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdmc3RhYicgbm90IGluIFtsaW5lLnNwbGl0KClbLTFdIGZvciBsaW5lIGluIHJlc3VsdC5vdXRwdXQuc3BsaXQoJ1xuJykgaWYgbGluZV0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jb250YWluZXJpbWFnZS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2NvbnRhaW5lcmltYWdlLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZWY0ODFmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2NvbnRhaW5lcmltYWdlLnB5CisrKyAvZGV2L251bGwKQEAgLTEsODMgKzAsMCBAQAotaW1wb3J0IG9zCi0KLWZyb20gb2VxYS5zZWxmdGVzdC5iYXNlIGltcG9ydCBvZVNlbGZUZXN0Ci1mcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IGJpdGJha2UsIGdldF9iYl92YXJzLCBydW5DbWQKLQotIyBUaGlzIHRlc3QgYnVpbGRzIGFuIGltYWdlIHdpdGggdXNpbmcgdGhlICJjb250YWluZXIiIElNQUdFX0ZTVFlQRSwgYW5kCi0jIGVuc3VyZXMgdGhhdCB0aGVuIGZpbGVzIGluIHRoZSBpbWFnZSBhcmUgb25seSB0aGUgb25lcyBleHBlY3RlZC4KLSMKLSMgVGhlIG9ubHkgcGFja2FnZSBhZGRlZCB0byB0aGUgaW1hZ2UgaXMgY29udGFpbmVyX2ltYWdlX3Rlc3Rwa2csIHdoaWNoCi0jIGNvbnRhaW5zIG9uZSBmaWxlLiBIb3dldmVyLCBkdWUgdG8gc29tZSBvdGhlciB0aGluZ3Mgbm90IGNsZWFuaW5nIHVwIGR1cmluZwotIyByb290ZnMgY3JlYXRpb24sIHRoZXJlIGlzIHNvbWUgY3J1ZnQuIElkZWFsbHkgYnVncyB3aWxsIGJlIGZpbGVkIGFuZCB0aGUKLSMgY3J1ZnQgcmVtb3ZlZCwgYnV0IGZvciBub3cgd2Ugd2hpdGVsaXN0IHNvbWUga25vd24gc2V0LgotIwotIyBBbHNvIGZvciBwZXJmb3JtYW5jZSByZWFzb25zIHdlJ3JlIG9ubHkgY2hlY2tpbmcgdGhlIGNydWZ0IHdoZW4gdXNpbmcgaXBrLgotIyBXaGVuIHVzaW5nIGRlYiwgYW5kIHJwbSBpdCBpcyBhIGJpdCBkaWZmZXJlbnQgYW5kIHdlIGNvdWxkIHRlc3QgYWxsCi0jIG9mIHRoZW0sIGJ1dCB0aGlzIHRlc3QgaXMgbW9yZSB0byBjYXRjaCBpZiBvdGhlciBwYWNrYWdlcyBnZXQgYWRkZWQgYnkKLSMgZGVmYXVsdCBvdGhlciB0aGFuIHdoYXQgaXMgaW4gUk9PVEZTX0JPT1RTVFJBUF9JTlNUQUxMLgotIwotY2xhc3MgQ29udGFpbmVySW1hZ2VUZXN0cyhvZVNlbGZUZXN0KToKLQotICAgICMgVmVyaWZ5IHRoYXQgd2hlbiBzcGVjaWZ5aW5nIGEgSU1BR0VfVFlQRURFUF8gb2YgdGhlIGZvcm0gImZvby5iYXIiIHRoYXQKLSAgICAjIHRoZSBjb252ZXJzaW9uIHR5cGUgYmFyIGdldHMgYWRkZWQgYXMgYSBkZXAgYXMgd2VsbAotICAgIGRlZiB0ZXN0X2V4cGVjdGVkX2ZpbGVzKHNlbGYpOgotCi0gICAgICAgIGRlZiBnZXRfZWFjaF9wYXRoX3BhcnQocGF0aCk6Ci0gICAgICAgICAgICBpZiBwYXRoOgotICAgICAgICAgICAgICAgIHBhcnQgPSBbICcuJyArIHBhdGggKyAnLycgXQotICAgICAgICAgICAgICAgIHJlc3VsdCA9IGdldF9lYWNoX3BhdGhfcGFydChwYXRoLnJzcGxpdCgnLycsIDEpWzBdKQotICAgICAgICAgICAgICAgIGlmIHJlc3VsdDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnQgKyByZXN1bHQKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFydAotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCIiIlBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCA9ICJsaW51eC1kdW1teSIKLUlNQUdFX0ZTVFlQRVMgPSAiY29udGFpbmVyIgotUEFDS0FHRV9DTEFTU0VTID0gInBhY2thZ2VfaXBrIgotSU1BR0VfRkVBVFVSRVMgPSAiIgotIiIiKQotCi0gICAgICAgIGJidmFycyA9IGdldF9iYl92YXJzKFsnYmluZGlyJywgJ3N5c2NvbmZkaXInLCAnbG9jYWxzdGF0ZWRpcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnREVQTE9ZX0RJUl9JTUFHRScsICdJTUFHRV9MSU5LX05BTUUnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldD0nY29udGFpbmVyLXRlc3QtaW1hZ2UnKQotICAgICAgICBleHBlY3RlZF9maWxlcyA9IFsKLSAgICAgICAgICAgICAgICAgICAgJy4vJywKLSAgICAgICAgICAgICAgICAgICAgJy57YmluZGlyfS90aGVhcHAnLAotICAgICAgICAgICAgICAgICAgICAnLntzeXNjb25mZGlyfS9kZWZhdWx0LycsCi0gICAgICAgICAgICAgICAgICAgICcue3N5c2NvbmZkaXJ9L2RlZmF1bHQvcG9zdGluc3QnLAotICAgICAgICAgICAgICAgICAgICAnLntzeXNjb25mZGlyfS9sZC5zby5jYWNoZScsCi0gICAgICAgICAgICAgICAgICAgICcue3N5c2NvbmZkaXJ9L3RpbWVzdGFtcCcsCi0gICAgICAgICAgICAgICAgICAgICcue3N5c2NvbmZkaXJ9L3ZlcnNpb24nLAotICAgICAgICAgICAgICAgICAgICAnLi9ydW4vJywKLSAgICAgICAgICAgICAgICAgICAgJy57bG9jYWxzdGF0ZWRpcn0vY2FjaGUvJywKLSAgICAgICAgICAgICAgICAgICAgJy57bG9jYWxzdGF0ZWRpcn0vY2FjaGUvbGRjb25maWcvJywKLSAgICAgICAgICAgICAgICAgICAgJy57bG9jYWxzdGF0ZWRpcn0vY2FjaGUvbGRjb25maWcvYXV4LWNhY2hlJywKLSAgICAgICAgICAgICAgICAgICAgJy57bG9jYWxzdGF0ZWRpcn0vY2FjaGUvb3BrZy8nLAotICAgICAgICAgICAgICAgICAgICAnLntsb2NhbHN0YXRlZGlyfS9saWIvJywKLSAgICAgICAgICAgICAgICAgICAgJy57bG9jYWxzdGF0ZWRpcn0vbGliL29wa2cvJwotICAgICAgICAgICAgICAgIF0KLQotICAgICAgICBleHBlY3RlZF9maWxlcyA9IFsgeC5mb3JtYXQoYmluZGlyPWJidmFyc1snYmluZGlyJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXNjb25mZGlyPWJidmFyc1snc3lzY29uZmRpciddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxzdGF0ZWRpcj1iYnZhcnNbJ2xvY2Fsc3RhdGVkaXInXSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluIGV4cGVjdGVkX2ZpbGVzIF0KLQotICAgICAgICAjIFNpbmNlIHRhciBsaXN0cyBhbGwgZGlyZWN0b3JpZXMgaW5kaXZpZHVhbGx5LCBtYWtlIHN1cmUgZWFjaCBlbGVtZW50Ci0gICAgICAgICMgZnJvbSBiaW5kaXIsIHN5c2NvbmZkaXIsIGV0YyBpcyBhZGRlZAotICAgICAgICBleHBlY3RlZF9maWxlcyArPSBnZXRfZWFjaF9wYXRoX3BhcnQoYmJ2YXJzWydiaW5kaXInXSkKLSAgICAgICAgZXhwZWN0ZWRfZmlsZXMgKz0gZ2V0X2VhY2hfcGF0aF9wYXJ0KGJidmFyc1snc3lzY29uZmRpciddKQotICAgICAgICBleHBlY3RlZF9maWxlcyArPSBnZXRfZWFjaF9wYXRoX3BhcnQoYmJ2YXJzWydsb2NhbHN0YXRlZGlyJ10pCi0KLSAgICAgICAgZXhwZWN0ZWRfZmlsZXMgPSBzb3J0ZWQoZXhwZWN0ZWRfZmlsZXMpCi0KLSAgICAgICAgIyBCdWlsZCB0aGUgaW1hZ2Ugb2YgY291cnNlCi0gICAgICAgIGJpdGJha2UoJ2NvbnRhaW5lci10ZXN0LWltYWdlJykKLQotICAgICAgICBpbWFnZSA9IG9zLnBhdGguam9pbihiYnZhcnNbJ0RFUExPWV9ESVJfSU1BR0UnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmJ2YXJzWydJTUFHRV9MSU5LX05BTUUnXSArICcudGFyLmJ6MicpCi0KLSAgICAgICAgIyBFbnN1cmUgdGhlIGZpbGVzIGluIHRoZSBpbWFnZSBhcmUgd2hhdCB3ZSBleHBlY3QKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJ0YXIgdGYge30gfCBzb3J0Ii5mb3JtYXQoaW1hZ2UpLCBzaGVsbD1UcnVlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQuc3BsaXQoJ1xuJyksIGV4cGVjdGVkX2ZpbGVzKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY29udGV4dC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2NvbnRleHQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWU5MGQzYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2NvbnRleHQucHkKQEAgLTAsMCArMSwyNzkgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE3IEludGVsIENvcnBvcmF0aW9uCisjIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUKQorCitpbXBvcnQgb3MKK2ltcG9ydCB0aW1lCitpbXBvcnQgZ2xvYgoraW1wb3J0IHN5cworaW1wb3J0IGltcAoraW1wb3J0IHNpZ25hbAorZnJvbSBzaHV0aWwgaW1wb3J0IGNvcHlmaWxlCitmcm9tIHJhbmRvbSBpbXBvcnQgY2hvaWNlCisKK2ltcG9ydCBvZXFhCisKK2Zyb20gb2VxYS5jb3JlLmNvbnRleHQgaW1wb3J0IE9FVGVzdENvbnRleHQsIE9FVGVzdENvbnRleHRFeGVjdXRvcgorZnJvbSBvZXFhLmNvcmUuZXhjZXB0aW9uIGltcG9ydCBPRVFBUHJlUnVuLCBPRVFBVGVzdE5vdEZvdW5kCisKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kLCBnZXRfYmJfdmFycywgZ2V0X3Rlc3RfbGF5ZXIKKworY2xhc3MgT0VTZWxmdGVzdFRlc3RDb250ZXh0KE9FVGVzdENvbnRleHQpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZD1Ob25lLCBsb2dnZXI9Tm9uZSwgbWFjaGluZXM9Tm9uZSwgY29uZmlnX3BhdGhzPU5vbmUpOgorICAgICAgICBzdXBlcihPRVNlbGZ0ZXN0VGVzdENvbnRleHQsIHNlbGYpLl9faW5pdF9fKHRkLCBsb2dnZXIpCisKKyAgICAgICAgc2VsZi5tYWNoaW5lcyA9IG1hY2hpbmVzCisgICAgICAgIHNlbGYuY3VzdG9tbWFjaGluZSA9IE5vbmUKKyAgICAgICAgc2VsZi5jb25maWdfcGF0aHMgPSBjb25maWdfcGF0aHMKKworICAgIGRlZiBydW5UZXN0cyhzZWxmLCBtYWNoaW5lPU5vbmUsIHNraXBzPVtdKToKKyAgICAgICAgaWYgbWFjaGluZToKKyAgICAgICAgICAgIHNlbGYuY3VzdG9tbWFjaGluZSA9IG1hY2hpbmUKKyAgICAgICAgICAgIGlmIG1hY2hpbmUgPT0gJ3JhbmRvbSc6CisgICAgICAgICAgICAgICAgc2VsZi5jdXN0b21tYWNoaW5lID0gY2hvaWNlKHNlbGYubWFjaGluZXMpCisgICAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCdSdW4gdGVzdHMgd2l0aCBjdXN0b20gTUFDSElORSBzZXQgdG86ICVzJyAlIFwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5jdXN0b21tYWNoaW5lKQorICAgICAgICByZXR1cm4gc3VwZXIoT0VTZWxmdGVzdFRlc3RDb250ZXh0LCBzZWxmKS5ydW5UZXN0cyhza2lwcykKKworICAgIGRlZiBsaXN0VGVzdHMoc2VsZiwgZGlzcGxheV90eXBlLCBtYWNoaW5lPU5vbmUpOgorICAgICAgICByZXR1cm4gc3VwZXIoT0VTZWxmdGVzdFRlc3RDb250ZXh0LCBzZWxmKS5saXN0VGVzdHMoZGlzcGxheV90eXBlKQorCitjbGFzcyBPRVNlbGZ0ZXN0VGVzdENvbnRleHRFeGVjdXRvcihPRVRlc3RDb250ZXh0RXhlY3V0b3IpOgorICAgIF9jb250ZXh0X2NsYXNzID0gT0VTZWxmdGVzdFRlc3RDb250ZXh0CisgICAgX3NjcmlwdF9leGVjdXRvciA9ICdvZS1zZWxmdGVzdCcKKworICAgIG5hbWUgPSAnb2Utc2VsZnRlc3QnCisgICAgaGVscCA9ICdvZS1zZWxmdGVzdCB0ZXN0IGNvbXBvbmVudCcKKyAgICBkZXNjcmlwdGlvbiA9ICdFeGVjdXRlcyBzZWxmdGVzdCB0ZXN0cycKKworICAgIGRlZiByZWdpc3Rlcl9jb21tYW5kcyhzZWxmLCBsb2dnZXIsIHBhcnNlcik6CisgICAgICAgIGdyb3VwID0gcGFyc2VyLmFkZF9tdXR1YWxseV9leGNsdXNpdmVfZ3JvdXAocmVxdWlyZWQ9VHJ1ZSkKKworICAgICAgICBncm91cC5hZGRfYXJndW1lbnQoJy1hJywgJy0tcnVuLWFsbC10ZXN0cycsIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0icnVuX2FsbF90ZXN0cyIsCisgICAgICAgICAgICAgICAgaGVscD0nUnVuIGFsbCAodW5oaWRkZW4pIHRlc3RzJykKKyAgICAgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctUicsICctLXNraXAtdGVzdHMnLCByZXF1aXJlZD1GYWxzZSwgYWN0aW9uPSdzdG9yZScsCisgICAgICAgICAgICAgICAgbmFyZ3M9JysnLCBkZXN0PSJza2lwcyIsIGRlZmF1bHQ9Tm9uZSwKKyAgICAgICAgICAgICAgICBoZWxwPSdSdW4gYWxsICh1bmhpZGRlbikgdGVzdHMgZXhjZXB0IHRoZSBvbmVzIHNwZWNpZmllZC4gRm9ybWF0IHNob3VsZCBiZSA8bW9kdWxlPlsuPGNsYXNzPlsuPHRlc3RfbWV0aG9kPl1dJykKKyAgICAgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctcicsICctLXJ1bi10ZXN0cycsIHJlcXVpcmVkPUZhbHNlLCBhY3Rpb249J3N0b3JlJywKKyAgICAgICAgICAgICAgICBuYXJncz0nKycsIGRlc3Q9InJ1bl90ZXN0cyIsIGRlZmF1bHQ9Tm9uZSwKKyAgICAgICAgICAgICAgICBoZWxwPSdTZWxlY3Qgd2hhdCB0ZXN0cyB0byBydW4gKG1vZHVsZXMsIGNsYXNzZXMgb3IgdGVzdCBtZXRob2RzKS4gRm9ybWF0IHNob3VsZCBiZTogPG1vZHVsZT4uPGNsYXNzPi48dGVzdF9tZXRob2Q+JykKKworICAgICAgICBncm91cC5hZGRfYXJndW1lbnQoJy1tJywgJy0tbGlzdC1tb2R1bGVzJywgcmVxdWlyZWQ9RmFsc2UsCisgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgICAgICAgICBoZWxwPSdMaXN0IGFsbCBhdmFpbGFibGUgdGVzdCBtb2R1bGVzLicpCisgICAgICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS1saXN0LWNsYXNzZXMnLCByZXF1aXJlZD1GYWxzZSwKKyAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLCBkZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgICAgIGhlbHA9J0xpc3QgYWxsIGF2YWlsYWJsZSB0ZXN0IGNsYXNzZXMuJykKKyAgICAgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctbCcsICctLWxpc3QtdGVzdHMnLCByZXF1aXJlZD1GYWxzZSwKKyAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLCBkZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgICAgIGhlbHA9J0xpc3QgYWxsIGF2YWlsYWJsZSB0ZXN0cy4nKQorCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tbWFjaGluZScsIHJlcXVpcmVkPUZhbHNlLCBjaG9pY2VzPVsncmFuZG9tJywgJ2FsbCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1J1biB0ZXN0cyBvbiBkaWZmZXJlbnQgbWFjaGluZXMgKHJhbmRvbS9hbGwpLicpCisgICAgICAgIAorICAgICAgICBwYXJzZXIuc2V0X2RlZmF1bHRzKGZ1bmM9c2VsZi5ydW4pCisKKyAgICBkZWYgX2dldF9hdmFpbGFibGVfbWFjaGluZXMoc2VsZik6CisgICAgICAgIG1hY2hpbmVzID0gW10KKworICAgICAgICBiYnBhdGggPSBzZWxmLnRjX2t3YXJnc1snaW5pdCddWyd0ZCddWydCQlBBVEgnXS5zcGxpdCgnOicpCisgICAgCisgICAgICAgIGZvciBwYXRoIGluIGJicGF0aDoKKyAgICAgICAgICAgIGZvdW5kX21hY2hpbmVzID0gZ2xvYi5nbG9iKG9zLnBhdGguam9pbihwYXRoLCAnY29uZicsICdtYWNoaW5lJywgJyouY29uZicpKQorICAgICAgICAgICAgaWYgZm91bmRfbWFjaGluZXM6CisgICAgICAgICAgICAgICAgZm9yIGkgaW4gZm91bmRfbWFjaGluZXM6CisgICAgICAgICAgICAgICAgICAgICMgZWc6ICcvaG9tZS88dXNlcj4vcG9reS9tZXRhLWludGVsL2NvbmYvbWFjaGluZS9pbnRlbC1jb3JlMi0zMi5jb25mJworICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcy5hcHBlbmQob3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKGkpKVswXSkKKyAgICAKKyAgICAgICAgcmV0dXJuIG1hY2hpbmVzCisKKyAgICBkZWYgX2dldF9jYXNlc19wYXRocyhzZWxmLCBiYnBhdGgpOgorICAgICAgICBjYXNlc19wYXRocyA9IFtdCisgICAgICAgIGZvciBsYXllciBpbiBiYnBhdGg6CisgICAgICAgICAgICBjYXNlc19kaXIgPSBvcy5wYXRoLmpvaW4obGF5ZXIsICdsaWInLCAnb2VxYScsICdzZWxmdGVzdCcsICdjYXNlcycpCisgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKGNhc2VzX2Rpcik6CisgICAgICAgICAgICAgICAgY2FzZXNfcGF0aHMuYXBwZW5kKGNhc2VzX2RpcikKKyAgICAgICAgcmV0dXJuIGNhc2VzX3BhdGhzCisKKyAgICBkZWYgX3Byb2Nlc3NfYXJncyhzZWxmLCBsb2dnZXIsIGFyZ3MpOgorICAgICAgICBhcmdzLm91dHB1dF9sb2cgPSAnJXMtcmVzdWx0cy0lcy5sb2cnICUgKHNlbGYubmFtZSwKKyAgICAgICAgICAgICAgICB0aW1lLnN0cmZ0aW1lKCIlWSVtJWQlSCVNJVMiKSkKKyAgICAgICAgYXJncy50ZXN0X2RhdGFfZmlsZSA9IE5vbmUKKyAgICAgICAgYXJncy5DQVNFU19QQVRIUyA9IE5vbmUKKworICAgICAgICBzdXBlcihPRVNlbGZ0ZXN0VGVzdENvbnRleHRFeGVjdXRvciwgc2VsZikuX3Byb2Nlc3NfYXJncyhsb2dnZXIsIGFyZ3MpCisKKyAgICAgICAgaWYgYXJncy5saXN0X21vZHVsZXM6CisgICAgICAgICAgICBhcmdzLmxpc3RfdGVzdHMgPSAnbW9kdWxlJworICAgICAgICBlbGlmIGFyZ3MubGlzdF9jbGFzc2VzOgorICAgICAgICAgICAgYXJncy5saXN0X3Rlc3RzID0gJ2NsYXNzJworICAgICAgICBlbGlmIGFyZ3MubGlzdF90ZXN0czoKKyAgICAgICAgICAgIGFyZ3MubGlzdF90ZXN0cyA9ICduYW1lJworCisgICAgICAgIHNlbGYudGNfa3dhcmdzWydpbml0J11bJ3RkJ10gPSBnZXRfYmJfdmFycygpCisgICAgICAgIHNlbGYudGNfa3dhcmdzWydpbml0J11bJ21hY2hpbmVzJ10gPSBzZWxmLl9nZXRfYXZhaWxhYmxlX21hY2hpbmVzKCkKKworICAgICAgICBidWlsZGRpciA9IG9zLmVudmlyb24uZ2V0KCJCVUlMRERJUiIpCisgICAgICAgIHNlbGYudGNfa3dhcmdzWydpbml0J11bJ2NvbmZpZ19wYXRocyddID0ge30KKyAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ2luaXQnXVsnY29uZmlnX3BhdGhzJ11bJ3Rlc3RsYXllcl9wYXRoJ10gPSBcCisgICAgICAgICAgICAgICAgZ2V0X3Rlc3RfbGF5ZXIoKQorICAgICAgICBzZWxmLnRjX2t3YXJnc1snaW5pdCddWydjb25maWdfcGF0aHMnXVsnYnVpbGRkaXInXSA9IGJ1aWxkZGlyCisgICAgICAgIHNlbGYudGNfa3dhcmdzWydpbml0J11bJ2NvbmZpZ19wYXRocyddWydsb2NhbGNvbmYnXSA9IFwKKyAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oYnVpbGRkaXIsICJjb25mL2xvY2FsLmNvbmYiKQorICAgICAgICBzZWxmLnRjX2t3YXJnc1snaW5pdCddWydjb25maWdfcGF0aHMnXVsnbG9jYWxjb25mX2JhY2t1cCddID0gXAorICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihidWlsZGRpciwgImNvbmYvbG9jYWwuY29uZi5vcmlnIikKKyAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ2luaXQnXVsnY29uZmlnX3BhdGhzJ11bJ2xvY2FsY29uZl9jbGFzc19iYWNrdXAnXSA9IFwKKyAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oYnVpbGRkaXIsICJjb25mL2xvY2FsLmNvbmYuYmsiKQorICAgICAgICBzZWxmLnRjX2t3YXJnc1snaW5pdCddWydjb25maWdfcGF0aHMnXVsnYmJsYXllcnMnXSA9IFwKKyAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oYnVpbGRkaXIsICJjb25mL2JibGF5ZXJzLmNvbmYiKQorICAgICAgICBzZWxmLnRjX2t3YXJnc1snaW5pdCddWydjb25maWdfcGF0aHMnXVsnYmJsYXllcnNfYmFja3VwJ10gPSBcCisgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKGJ1aWxkZGlyLCAiY29uZi9iYmxheWVycy5jb25mLm9yaWciKQorICAgICAgICBzZWxmLnRjX2t3YXJnc1snaW5pdCddWydjb25maWdfcGF0aHMnXVsnYmJsYXllcnNfY2xhc3NfYmFja3VwJ10gPSBcCisgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKGJ1aWxkZGlyLCAiY29uZi9iYmxheWVycy5jb25mLmJrIikKKworICAgICAgICBjb3B5ZmlsZShzZWxmLnRjX2t3YXJnc1snaW5pdCddWydjb25maWdfcGF0aHMnXVsnbG9jYWxjb25mJ10sCisgICAgICAgICAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ2luaXQnXVsnY29uZmlnX3BhdGhzJ11bJ2xvY2FsY29uZl9iYWNrdXAnXSkKKyAgICAgICAgY29weWZpbGUoc2VsZi50Y19rd2FyZ3NbJ2luaXQnXVsnY29uZmlnX3BhdGhzJ11bJ2JibGF5ZXJzJ10sIAorICAgICAgICAgICAgICAgIHNlbGYudGNfa3dhcmdzWydpbml0J11bJ2NvbmZpZ19wYXRocyddWydiYmxheWVyc19iYWNrdXAnXSkKKworICAgICAgICBzZWxmLnRjX2t3YXJnc1sncnVuJ11bJ3NraXBzJ10gPSBhcmdzLnNraXBzCisKKyAgICBkZWYgX3ByZV9ydW4oc2VsZik6CisgICAgICAgIGRlZiBfY2hlY2tfcmVxdWlyZWRfZW52X3ZhcmlhYmxlcyh2YXJzKToKKyAgICAgICAgICAgIGZvciB2YXIgaW4gdmFyczoKKyAgICAgICAgICAgICAgICBpZiBub3Qgb3MuZW52aXJvbi5nZXQodmFyKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi50Yy5sb2dnZXIuZXJyb3IoIiVzIGlzIG5vdCBzZXQuIERpZCB5b3UgZm9yZ2V0IHRvIHNvdXJjZSB5b3VyIGJ1aWxkIGVudmlyb25tZW50IHNldHVwIHNjcmlwdD8iICUgdmFyKQorICAgICAgICAgICAgICAgICAgICByYWlzZSBPRVFBUHJlUnVuCisKKyAgICAgICAgZGVmIF9jaGVja19wcmVzZW5jZV9tZXRhX3NlbGZ0ZXN0KCk6CisgICAgICAgICAgICBidWlsZGRpciA9IG9zLmVudmlyb24uZ2V0KCJCVUlMRERJUiIpCisgICAgICAgICAgICBpZiBvcy5nZXRjd2QoKSAhPSBidWlsZGRpcjoKKyAgICAgICAgICAgICAgICBzZWxmLnRjLmxvZ2dlci5pbmZvKCJDaGFuZ2luZyBjd2QgdG8gJXMiICUgYnVpbGRkaXIpCisgICAgICAgICAgICAgICAgb3MuY2hkaXIoYnVpbGRkaXIpCisKKyAgICAgICAgICAgIGlmIG5vdCAibWV0YS1zZWxmdGVzdCIgaW4gc2VsZi50Yy50ZFsiQkJMQVlFUlMiXToKKyAgICAgICAgICAgICAgICBzZWxmLnRjLmxvZ2dlci53YXJuKCJtZXRhLXNlbGZ0ZXN0IGxheWVyIG5vdCBmb3VuZCBpbiBCQkxBWUVSUywgYWRkaW5nIGl0IikKKyAgICAgICAgICAgICAgICBtZXRhX3NlbGZ0ZXN0ZGlyID0gb3MucGF0aC5qb2luKAorICAgICAgICAgICAgICAgICAgICBzZWxmLnRjLnRkWyJCQkxBWUVSU19GRVRDSF9ESVIiXSwgJ21ldGEtc2VsZnRlc3QnKQorICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIobWV0YV9zZWxmdGVzdGRpcik6CisgICAgICAgICAgICAgICAgICAgIHJ1bkNtZCgiYml0YmFrZS1sYXllcnMgYWRkLWxheWVyICVzIiAlbWV0YV9zZWxmdGVzdGRpcikKKyAgICAgICAgICAgICAgICAgICAgIyByZWxvYWQgZGF0YSBpcyBuZWVkZWQgYmVjYXVzZSBhIG1ldGEtc2VsZnRlc3QgbGF5ZXIgd2FzIGFkZAorICAgICAgICAgICAgICAgICAgICBzZWxmLnRjLnRkID0gZ2V0X2JiX3ZhcnMoKQorICAgICAgICAgICAgICAgICAgICBzZWxmLnRjLmNvbmZpZ19wYXRoc1sndGVzdGxheWVyX3BhdGgnXSA9IGdldF90ZXN0X2xheWVyKCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnRjLmxvZ2dlci5lcnJvcigiY291bGQgbm90IGxvY2F0ZSBtZXRhLXNlbGZ0ZXN0IGluOlxuJXMiICUgbWV0YV9zZWxmdGVzdGRpcikKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgT0VRQVByZVJ1bgorCisgICAgICAgIGRlZiBfYWRkX2xheWVyX2xpYnMoKToKKyAgICAgICAgICAgIGJicGF0aCA9IHNlbGYudGMudGRbJ0JCUEFUSCddLnNwbGl0KCc6JykKKyAgICAgICAgICAgIGxheWVyX2xpYmRpcnMgPSBbcCBmb3IgcCBpbiAob3MucGF0aC5qb2luKGwsICdsaWInKSBcCisgICAgICAgICAgICAgICAgICAgIGZvciBsIGluIGJicGF0aCkgaWYgb3MucGF0aC5leGlzdHMocCldCisgICAgICAgICAgICBpZiBsYXllcl9saWJkaXJzOgorICAgICAgICAgICAgICAgIHNlbGYudGMubG9nZ2VyLmluZm8oIkFkZGluZyBsYXllciBsaWJyYXJpZXM6IikKKyAgICAgICAgICAgICAgICBmb3IgbCBpbiBsYXllcl9saWJkaXJzOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnRjLmxvZ2dlci5pbmZvKCJcdCVzIiAlIGwpCisKKyAgICAgICAgICAgICAgICBzeXMucGF0aC5leHRlbmQobGF5ZXJfbGliZGlycykKKyAgICAgICAgICAgICAgICBpbXAucmVsb2FkKG9lcWEuc2VsZnRlc3QpCisKKyAgICAgICAgX2NoZWNrX3JlcXVpcmVkX2Vudl92YXJpYWJsZXMoWyJCVUlMRERJUiJdKQorICAgICAgICBfY2hlY2tfcHJlc2VuY2VfbWV0YV9zZWxmdGVzdCgpCisKKyAgICAgICAgaWYgImJ1aWxkaGlzdG9yeS5iYmNsYXNzIiBpbiBzZWxmLnRjLnRkWyJCQklOQ0xVREVEIl06CisgICAgICAgICAgICBzZWxmLnRjLmxvZ2dlci5lcnJvcigiWW91IGhhdmUgYnVpbGRoaXN0b3J5IGVuYWJsZWQgYWxyZWFkeSBhbmQgdGhpcyBpc24ndCByZWNvbW1lbmRlZCBmb3Igc2VsZnRlc3QsIHBsZWFzZSBkaXNhYmxlIGl0IGZpcnN0LiIpCisgICAgICAgICAgICByYWlzZSBPRVFBUHJlUnVuCisKKyAgICAgICAgaWYgIlBSU0VSVl9IT1NUIiBpbiBzZWxmLnRjLnRkOgorICAgICAgICAgICAgc2VsZi50Yy5sb2dnZXIuZXJyb3IoIlBsZWFzZSB1bnNldCBQUlNFUlZfSE9TVCBpbiBvcmRlciB0byBydW4gb2Utc2VsZnRlc3QiKQorICAgICAgICAgICAgcmFpc2UgT0VRQVByZVJ1bgorCisgICAgICAgIGlmICJTQU5JVFlfVEVTVEVEX0RJU1RST1MiIGluIHNlbGYudGMudGQ6CisgICAgICAgICAgICBzZWxmLnRjLmxvZ2dlci5lcnJvcigiUGxlYXNlIHVuc2V0IFNBTklUWV9URVNURURfRElTVFJPUyBpbiBvcmRlciB0byBydW4gb2Utc2VsZnRlc3QiKQorICAgICAgICAgICAgcmFpc2UgT0VRQVByZVJ1bgorCisgICAgICAgIF9hZGRfbGF5ZXJfbGlicygpCisKKyAgICAgICAgc2VsZi50Yy5sb2dnZXIuaW5mbygiUnVubmluZyBiaXRiYWtlIC1wIikKKyAgICAgICAgcnVuQ21kKCJiaXRiYWtlIC1wIikKKworICAgIGRlZiBfaW50ZXJuYWxfcnVuKHNlbGYsIGxvZ2dlciwgYXJncyk6CisgICAgICAgIHNlbGYubW9kdWxlX3BhdGhzID0gc2VsZi5fZ2V0X2Nhc2VzX3BhdGhzKAorICAgICAgICAgICAgICAgIHNlbGYudGNfa3dhcmdzWydpbml0J11bJ3RkJ11bJ0JCUEFUSCddLnNwbGl0KCc6JykpCisKKyAgICAgICAgc2VsZi50YyA9IHNlbGYuX2NvbnRleHRfY2xhc3MoKipzZWxmLnRjX2t3YXJnc1snaW5pdCddKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLnRjLmxvYWRUZXN0cyhzZWxmLm1vZHVsZV9wYXRocywgKipzZWxmLnRjX2t3YXJnc1snbG9hZCddKQorICAgICAgICBleGNlcHQgT0VRQVRlc3ROb3RGb3VuZCBhcyBleDoKKyAgICAgICAgICAgIGxvZ2dlci5lcnJvcihleCkKKyAgICAgICAgICAgIHN5cy5leGl0KDEpCisKKyAgICAgICAgaWYgYXJncy5saXN0X3Rlc3RzOgorICAgICAgICAgICAgcmMgPSBzZWxmLnRjLmxpc3RUZXN0cyhhcmdzLmxpc3RfdGVzdHMsICoqc2VsZi50Y19rd2FyZ3NbJ2xpc3QnXSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX3ByZV9ydW4oKQorICAgICAgICAgICAgcmMgPSBzZWxmLnRjLnJ1blRlc3RzKCoqc2VsZi50Y19rd2FyZ3NbJ3J1biddKQorICAgICAgICAgICAgcmMubG9nRGV0YWlscygpCisgICAgICAgICAgICByYy5sb2dTdW1tYXJ5KHNlbGYubmFtZSkKKworICAgICAgICByZXR1cm4gcmMKKworICAgIGRlZiBfc2lnbmFsX2NsZWFuX2hhbmRsZXIoc2VsZiwgc2lnbnVtLCBmcmFtZSk6CisgICAgICAgIHN5cy5leGl0KDEpCisgICAgCisgICAgZGVmIHJ1bihzZWxmLCBsb2dnZXIsIGFyZ3MpOgorICAgICAgICBzZWxmLl9wcm9jZXNzX2FyZ3MobG9nZ2VyLCBhcmdzKQorCisgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR1RFUk0sIHNlbGYuX3NpZ25hbF9jbGVhbl9oYW5kbGVyKQorCisgICAgICAgIHJjID0gTm9uZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiBhcmdzLm1hY2hpbmU6CisgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ0N1c3RvbSBtYWNoaW5lIG1vZGUgZW5hYmxlZC4gTUFDSElORSBzZXQgdG8gJXMnICUKKyAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MubWFjaGluZSkKKworICAgICAgICAgICAgICAgIGlmIGFyZ3MubWFjaGluZSA9PSAnYWxsJzoKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0cyA9IFtdCisgICAgICAgICAgICAgICAgICAgIGZvciBtIGluIHNlbGYudGNfa3dhcmdzWydpbml0J11bJ21hY2hpbmVzJ106CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnRjX2t3YXJnc1sncnVuJ11bJ21hY2hpbmUnXSA9IG0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHNlbGYuX2ludGVybmFsX3J1bihsb2dnZXIsIGFyZ3MpKQorCisgICAgICAgICAgICAgICAgICAgICAgICAjIFhYWDogdGhlIG9lLXNlbGZ0ZXN0IHNjcmlwdCBvbmx5IG5lZWRzIHRvIGtub3cgaWYgb25lCisgICAgICAgICAgICAgICAgICAgICAgICAjIG1hY2hpbmUgcnVuIGZhaWxzCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgciBpbiByZXN1bHRzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJjID0gcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCByLndhc1N1Y2Nlc3NmdWwoKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYudGNfa3dhcmdzWydydW4nXVsnbWFjaGluZSddID0gYXJncy5tYWNoaW5lCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9pbnRlcm5hbF9ydW4obG9nZ2VyLCBhcmdzKQorCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYudGNfa3dhcmdzWydydW4nXVsnbWFjaGluZSddID0gYXJncy5tYWNoaW5lCisgICAgICAgICAgICAgICAgcmMgPSBzZWxmLl9pbnRlcm5hbF9ydW4obG9nZ2VyLCBhcmdzKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgY29uZmlnX3BhdGhzID0gc2VsZi50Y19rd2FyZ3NbJ2luaXQnXVsnY29uZmlnX3BhdGhzJ10KKyAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGNvbmZpZ19wYXRoc1snbG9jYWxjb25mX2JhY2t1cCddKToKKyAgICAgICAgICAgICAgICBjb3B5ZmlsZShjb25maWdfcGF0aHNbJ2xvY2FsY29uZl9iYWNrdXAnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ19wYXRoc1snbG9jYWxjb25mJ10pCisgICAgICAgICAgICAgICAgb3MucmVtb3ZlKGNvbmZpZ19wYXRoc1snbG9jYWxjb25mX2JhY2t1cCddKQorCisgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhjb25maWdfcGF0aHNbJ2JibGF5ZXJzX2JhY2t1cCddKToKKyAgICAgICAgICAgICAgICBjb3B5ZmlsZShjb25maWdfcGF0aHNbJ2JibGF5ZXJzX2JhY2t1cCddLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ19wYXRoc1snYmJsYXllcnMnXSkKKyAgICAgICAgICAgICAgICBvcy5yZW1vdmUoY29uZmlnX3BhdGhzWydiYmxheWVyc19iYWNrdXAnXSkKKworICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoY29uZmlnX3BhdGhzWydsb2NhbGNvbmZfY2xhc3NfYmFja3VwJ10pOgorICAgICAgICAgICAgICAgIG9zLnJlbW92ZShjb25maWdfcGF0aHNbJ2xvY2FsY29uZl9jbGFzc19iYWNrdXAnXSkKKyAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGNvbmZpZ19wYXRoc1snYmJsYXllcnNfY2xhc3NfYmFja3VwJ10pOgorICAgICAgICAgICAgICAgIG9zLnJlbW92ZShjb25maWdfcGF0aHNbJ2JibGF5ZXJzX2NsYXNzX2JhY2t1cCddKQorCisgICAgICAgICAgICBvdXRwdXRfbGluayA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoYXJncy5vdXRwdXRfbG9nKSwKKyAgICAgICAgICAgICAgICAgICAgIiVzLXJlc3VsdHMubG9nIiAlIHNlbGYubmFtZSkKKyAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG91dHB1dF9saW5rKToKKyAgICAgICAgICAgICAgICBvcy5yZW1vdmUob3V0cHV0X2xpbmspCisgICAgICAgICAgICBvcy5zeW1saW5rKGFyZ3Mub3V0cHV0X2xvZywgb3V0cHV0X2xpbmspCisKKyAgICAgICAgcmV0dXJuIHJjCisKK19leGVjdXRvcl9jbGFzcyA9IE9FU2VsZnRlc3RUZXN0Q29udGV4dEV4ZWN1dG9yCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9kZXZ0b29sLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvZGV2dG9vbC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTcwNDg2Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9kZXZ0b29sLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTY5NiArMCwwIEBACi1pbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBvcwotaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCByZQotaW1wb3J0IHNodXRpbAotaW1wb3J0IHRlbXBmaWxlCi1pbXBvcnQgZ2xvYgotaW1wb3J0IGZubWF0Y2gKLQotaW1wb3J0IG9lcWEudXRpbHMuZnRvb2xzIGFzIGZ0b29scwotZnJvbSBvZXFhLnNlbGZ0ZXN0LmJhc2UgaW1wb3J0IG9lU2VsZlRlc3QKLWZyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kLCBiaXRiYWtlLCBnZXRfYmJfdmFyLCBjcmVhdGVfdGVtcF9sYXllcgotZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBnZXRfYmJfdmFycywgcnVucWVtdSwgZ2V0X3Rlc3RfbGF5ZXIKLWZyb20gb2VxYS51dGlscy5kZWNvcmF0b3JzIGltcG9ydCB0ZXN0Y2FzZQotCi1jbGFzcyBEZXZ0b29sQmFzZShvZVNlbGZUZXN0KToKLQotICAgIGRlZiBfdGVzdF9yZWNpcGVfY29udGVudHMoc2VsZiwgcmVjaXBlZmlsZSwgY2hlY2t2YXJzLCBjaGVja2luaGVyaXRzKToKLSAgICAgICAgd2l0aCBvcGVuKHJlY2lwZWZpbGUsICdyJykgYXMgZjoKLSAgICAgICAgICAgIGludmFyID0gTm9uZQotICAgICAgICAgICAgaW52YWx1ZSA9IE5vbmUKLSAgICAgICAgICAgIGZvciBsaW5lIGluIGY6Ci0gICAgICAgICAgICAgICAgdmFyID0gTm9uZQotICAgICAgICAgICAgICAgIGlmIGludmFyOgotICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGxpbmUuc3RyaXAoKS5zdHJpcCgnIicpCi0gICAgICAgICAgICAgICAgICAgIGlmIHZhbHVlLmVuZHN3aXRoKCdcXCcpOgotICAgICAgICAgICAgICAgICAgICAgICAgaW52YWx1ZSArPSAnICcgKyB2YWx1ZVs6LTFdLnN0cmlwKCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnZhbHVlICs9ICcgJyArIHZhbHVlLnN0cmlwKCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciA9IGludmFyCi0gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGludmFsdWUKLSAgICAgICAgICAgICAgICAgICAgICAgIGludmFyID0gTm9uZQotICAgICAgICAgICAgICAgIGVsaWYgJz0nIGluIGxpbmU6Ci0gICAgICAgICAgICAgICAgICAgIHNwbGl0bGluZSA9IGxpbmUuc3BsaXQoJz0nLCAxKQotICAgICAgICAgICAgICAgICAgICB2YXIgPSBzcGxpdGxpbmVbMF0ucnN0cmlwKCkKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBzcGxpdGxpbmVbMV0uc3RyaXAoKS5zdHJpcCgnIicpCi0gICAgICAgICAgICAgICAgICAgIGlmIHZhbHVlLmVuZHN3aXRoKCdcXCcpOgotICAgICAgICAgICAgICAgICAgICAgICAgaW52YWx1ZSA9IHZhbHVlWzotMV0uc3RyaXAoKQotICAgICAgICAgICAgICAgICAgICAgICAgaW52YXIgPSB2YXIKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoJ2luaGVyaXQgJyk6Ci0gICAgICAgICAgICAgICAgICAgIGluaGVyaXRzID0gbGluZS5zcGxpdCgpWzE6XQotCi0gICAgICAgICAgICAgICAgaWYgdmFyIGFuZCB2YXIgaW4gY2hlY2t2YXJzOgotICAgICAgICAgICAgICAgICAgICBuZWVkdmFsdWUgPSBjaGVja3ZhcnMucG9wKHZhcikKLSAgICAgICAgICAgICAgICAgICAgaWYgbmVlZHZhbHVlIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1ZhcmlhYmxlICVzIHNob3VsZCBub3QgYXBwZWFyIGluIHJlY2lwZSwgYnV0IHZhbHVlIGlzIGJlaW5nIHNldCB0byAiJXMiJyAlICh2YXIsIHZhbHVlKSkKLSAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShuZWVkdmFsdWUsIHNldCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiB2YXIgPT0gJ0xJQ0VOU0UnOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gc2V0KHZhbHVlLnNwbGl0KCcgJiAnKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBzZXQodmFsdWUuc3BsaXQoKSkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZSwgbmVlZHZhbHVlLCAndmFsdWVzIGZvciAlcyBkbyBub3QgbWF0Y2gnICUgdmFyKQotCi0KLSAgICAgICAgbWlzc2luZ3ZhcnMgPSB7fQotICAgICAgICBmb3IgdmFyLCB2YWx1ZSBpbiBjaGVja3ZhcnMuaXRlbXMoKToKLSAgICAgICAgICAgIGlmIHZhbHVlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIG1pc3Npbmd2YXJzW3Zhcl0gPSB2YWx1ZQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1pc3Npbmd2YXJzLCB7fSwgJ1NvbWUgZXhwZWN0ZWQgdmFyaWFibGVzIG5vdCBmb3VuZCBpbiByZWNpcGU6ICVzJyAlIGNoZWNrdmFycykKLQotICAgICAgICBmb3IgaW5oZXJpdCBpbiBjaGVja2luaGVyaXRzOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihpbmhlcml0LCBpbmhlcml0cywgJ01pc3NpbmcgaW5oZXJpdCBvZiAlcycgJSBpbmhlcml0KQotCi0gICAgZGVmIF9jaGVja19iYmFwcGVuZChzZWxmLCB0ZXN0cmVjaXBlLCByZWNpcGVmaWxlLCBhcHBlbmRkaXIpOgotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHNob3ctYXBwZW5kcycsIGN3ZD1zZWxmLmJ1aWxkZGlyKQotICAgICAgICByZXN1bHRsaW5lcyA9IHJlc3VsdC5vdXRwdXQuc3BsaXRsaW5lcygpCi0gICAgICAgIGlucmVjaXBlID0gRmFsc2UKLSAgICAgICAgYmJhcHBlbmRzID0gW10KLSAgICAgICAgYmJhcHBlbmRmaWxlID0gTm9uZQotICAgICAgICBmb3IgbGluZSBpbiByZXN1bHRsaW5lczoKLSAgICAgICAgICAgIGlmIGlucmVjaXBlOgotICAgICAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnICcpOgotICAgICAgICAgICAgICAgICAgICBiYmFwcGVuZHMuYXBwZW5kKGxpbmUuc3RyaXAoKSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgZWxpZiBsaW5lID09ICclczonICUgb3MucGF0aC5iYXNlbmFtZShyZWNpcGVmaWxlKToKLSAgICAgICAgICAgICAgICBpbnJlY2lwZSA9IFRydWUKLSAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwobGVuKGJiYXBwZW5kcyksIDIsICclcyByZWNpcGUgaXMgYmVpbmcgYmJhcHBlbmRlZCBieSBhbm90aGVyIGxheWVyIC0gYmJhcHBlbmRzIGZvdW5kOlxuICAlcycgJSAodGVzdHJlY2lwZSwgJ1xuICAnLmpvaW4oYmJhcHBlbmRzKSkpCi0gICAgICAgIGZvciBiYmFwcGVuZCBpbiBiYmFwcGVuZHM6Ci0gICAgICAgICAgICBpZiBiYmFwcGVuZC5zdGFydHN3aXRoKGFwcGVuZGRpcik6Ci0gICAgICAgICAgICAgICAgYmJhcHBlbmRmaWxlID0gYmJhcHBlbmQKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5mYWlsKCdiYmFwcGVuZCBmb3IgcmVjaXBlICVzIGRvZXMgbm90IHNlZW0gdG8gYmUgY3JlYXRlZCBpbiB0ZXN0IGxheWVyJyAlIHRlc3RyZWNpcGUpCi0gICAgICAgIHJldHVybiBiYmFwcGVuZGZpbGUKLQotICAgIGRlZiBfY3JlYXRlX3RlbXBfbGF5ZXIoc2VsZiwgdGVtcGxheWVyZGlyLCBhZGRsYXllciwgdGVtcGxheWVybmFtZSwgcHJpb3JpdHk9OTk5LCByZWNpcGVwYXRoc3BlYz0ncmVjaXBlcy0qLyonKToKLSAgICAgICAgY3JlYXRlX3RlbXBfbGF5ZXIodGVtcGxheWVyZGlyLCB0ZW1wbGF5ZXJuYW1lLCBwcmlvcml0eSwgcmVjaXBlcGF0aHNwZWMpCi0gICAgICAgIGlmIGFkZGxheWVyOgotICAgICAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICVzIHx8IHRydWUnICUgdGVtcGxheWVyZGlyKQotICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyBhZGQtbGF5ZXIgJXMnICUgdGVtcGxheWVyZGlyLCBjd2Q9c2VsZi5idWlsZGRpcikKLQotICAgIGRlZiBfcHJvY2Vzc19sc19vdXRwdXQoc2VsZiwgb3V0cHV0KToKLSAgICAgICAgIiIiCi0gICAgICAgIENvbnZlcnQgbHMgLWwgb3V0cHV0IHRvIGEgZm9ybWF0IHdlIGNhbiByZWFzb25hYmx5IGNvbXBhcmUgZnJvbSBvbmUgY29udGV4dAotICAgICAgICB0byBhbm90aGVyIChlLmcuIGZyb20gaG9zdCB0byB0YXJnZXQpCi0gICAgICAgICIiIgotICAgICAgICBmaWxlbGlzdCA9IFtdCi0gICAgICAgIGZvciBsaW5lIGluIG91dHB1dC5zcGxpdGxpbmVzKCk6Ci0gICAgICAgICAgICBzcGxpdGxpbmUgPSBsaW5lLnNwbGl0KCkKLSAgICAgICAgICAgIGlmIGxlbihzcGxpdGxpbmUpIDwgODoKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ19wcm9jZXNzX2xzX291dHB1dDogaW52YWxpZCBvdXRwdXQgbGluZTogJXMnICUgbGluZSkKLSAgICAgICAgICAgICMgUmVtb3ZlIHRyYWlsaW5nIC4gb24gcGVybXMKLSAgICAgICAgICAgIHNwbGl0bGluZVswXSA9IHNwbGl0bGluZVswXS5yc3RyaXAoJy4nKQotICAgICAgICAgICAgIyBSZW1vdmUgbGVhZGluZyAuIG9uIHBhdGhzCi0gICAgICAgICAgICBzcGxpdGxpbmVbLTFdID0gc3BsaXRsaW5lWy0xXS5sc3RyaXAoJy4nKQotICAgICAgICAgICAgIyBEcm9wIGZpZWxkcyB3ZSBkb24ndCB3YW50IHRvIGNvbXBhcmUKLSAgICAgICAgICAgIGRlbCBzcGxpdGxpbmVbN10KLSAgICAgICAgICAgIGRlbCBzcGxpdGxpbmVbNl0KLSAgICAgICAgICAgIGRlbCBzcGxpdGxpbmVbNV0KLSAgICAgICAgICAgIGRlbCBzcGxpdGxpbmVbNF0KLSAgICAgICAgICAgIGRlbCBzcGxpdGxpbmVbMV0KLSAgICAgICAgICAgIGZpbGVsaXN0LmFwcGVuZCgnICcuam9pbihzcGxpdGxpbmUpKQotICAgICAgICByZXR1cm4gZmlsZWxpc3QKLQotCi1jbGFzcyBEZXZ0b29sVGVzdHMoRGV2dG9vbEJhc2UpOgotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKLSAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnVE9QRElSJywgJ1NTVEFURV9ESVInXSkKLSAgICAgICAgY2xzLm9yaWdpbmFsX3NzdGF0ZSA9IGJiX3ZhcnNbJ1NTVEFURV9ESVInXQotICAgICAgICBjbHMuZGV2dG9vbF9zc3RhdGUgPSBvcy5wYXRoLmpvaW4oYmJfdmFyc1snVE9QRElSJ10sICdzc3RhdGVfZGV2dG9vbCcpCi0gICAgICAgIGNscy5zc3RhdGVfY29uZiAgPSAnU1NUQVRFX0RJUiA9ICIlcyJcbicgJSBjbHMuZGV2dG9vbF9zc3RhdGUKLSAgICAgICAgY2xzLnNzdGF0ZV9jb25mICs9ICgnU1NUQVRFX01JUlJPUlMgKz0gImZpbGU6Ly8uKiBmaWxlOi8vLyVzL1BBVEgiXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBjbHMub3JpZ2luYWxfc3N0YXRlKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKLSAgICAgICAgY2xzLmxvZy5kZWJ1ZygnRGVsZXRpbmcgZGV2dG9vbCBzc3RhdGUgY2FjaGUgb24gJXMnICUgY2xzLmRldnRvb2xfc3N0YXRlKQotICAgICAgICBydW5DbWQoJ3JtIC1yZiAlcycgJSBjbHMuZGV2dG9vbF9zc3RhdGUpCi0KLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgICIiIlRlc3QgY2FzZSBzZXR1cCBmdW5jdGlvbiIiIgotICAgICAgICBzdXBlcihEZXZ0b29sVGVzdHMsIHNlbGYpLnNldFVwKCkKLSAgICAgICAgc2VsZi53b3Jrc3BhY2VkaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgJ3dvcmtzcGFjZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3Qgb3MucGF0aC5leGlzdHMoc2VsZi53b3Jrc3BhY2VkaXIpLAotICAgICAgICAgICAgICAgICAgICAgICAgJ1RoaXMgdGVzdCBjYW5ub3QgYmUgcnVuIHdpdGggYSB3b3Jrc3BhY2UgZGlyZWN0b3J5ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICd1bmRlciB0aGUgYnVpbGQgZGlyZWN0b3J5JykKLSAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKHNlbGYuc3N0YXRlX2NvbmYpCi0KLSAgICBkZWYgX2NoZWNrX3NyY19yZXBvKHNlbGYsIHJlcG9fZGlyKToKLSAgICAgICAgIiIiQ2hlY2sgc3JjdHJlZSBnaXQgcmVwb3NpdG9yeSIiIgotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2Rpcihvcy5wYXRoLmpvaW4ocmVwb19kaXIsICcuZ2l0JykpLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2dpdCByZXBvc2l0b3J5IGZvciBleHRlcm5hbCBzb3VyY2UgdHJlZSBub3QgZm91bmQnKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBzdGF0dXMgLS1wb3JjZWxhaW4nLCBjd2Q9cmVwb19kaXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dC5zdHJpcCgpLCAiIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAnQ3JlYXRlZCBnaXQgcmVwbyBpcyBub3QgY2xlYW4nKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBzeW1ib2xpYy1yZWYgSEVBRCcsIGN3ZD1yZXBvX2RpcikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LnN0cmlwKCksICJyZWZzL2hlYWRzL2RldnRvb2wiLAotICAgICAgICAgICAgICAgICAgICAgICAgICdXcm9uZyBicmFuY2ggaW4gZ2l0IHJlcG8nKQotCi0gICAgZGVmIF9jaGVja19yZXBvX3N0YXR1cyhzZWxmLCByZXBvX2RpciwgZXhwZWN0ZWRfc3RhdHVzKToKLSAgICAgICAgIiIiQ2hlY2sgdGhlIHdvcmt0cmVlIHN0YXR1cyBvZiBhIHJlcG9zaXRvcnkiIiIKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgc3RhdHVzIC4gLS1wb3JjZWxhaW4nLAotICAgICAgICAgICAgICAgICAgICAgICAgY3dkPXJlcG9fZGlyKQotICAgICAgICBmb3IgbGluZSBpbiByZXN1bHQub3V0cHV0LnNwbGl0bGluZXMoKToKLSAgICAgICAgICAgIGZvciBpbmQsIChmX3N0YXR1cywgZm5fcmUpIGluIGVudW1lcmF0ZShleHBlY3RlZF9zdGF0dXMpOgotICAgICAgICAgICAgICAgIGlmIHJlLm1hdGNoKGZuX3JlLCBsaW5lWzM6XSk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGZfc3RhdHVzICE9IGxpbmVbOjJdOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdVbmV4cGVjdGVkIHN0YXR1cyBpbiBsaW5lOiAlcycgJSBsaW5lKQotICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9zdGF0dXMucG9wKGluZCkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdVbmV4cGVjdGVkIG1vZGlmaWVkIGZpbGUgaW4gbGluZTogJXMnICUgbGluZSkKLSAgICAgICAgaWYgZXhwZWN0ZWRfc3RhdHVzOgotICAgICAgICAgICAgc2VsZi5mYWlsKCdNaXNzaW5nIGZpbGUgY2hhbmdlczogJXMnICUgZXhwZWN0ZWRfc3RhdHVzKQotCi0gICAgQHRlc3RjYXNlKDExNTgpCi0gICAgZGVmIHRlc3RfY3JlYXRlX3dvcmtzcGFjZShzZWxmKToKLSAgICAgICAgIyBDaGVjayBwcmVjb25kaXRpb25zCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgc2hvdy1sYXllcnMnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoJy93b3Jrc3BhY2UnIG5vdCBpbiByZXN1bHQub3V0cHV0LCAnVGhpcyB0ZXN0IGNhbm5vdCBiZSBydW4gd2l0aCBhIHdvcmtzcGFjZSBsYXllciBpbiBiYmxheWVycy5jb25mJykKLSAgICAgICAgIyBUcnkgY3JlYXRpbmcgYSB3b3Jrc3BhY2UgbGF5ZXIgd2l0aCBhIHNwZWNpZmljIHBhdGgKLSAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBjcmVhdGUtd29ya3NwYWNlICVzJyAlIHRlbXBkaXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4odGVtcGRpciwgJ2NvbmYnLCAnbGF5ZXIuY29uZicpKSwgbXNnID0gIk5vIHdvcmtzcGFjZSBjcmVhdGVkLiBkZXZ0b29sIG91dHB1dDogJXMgIiAlIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgc2hvdy1sYXllcnMnKQotICAgICAgICBzZWxmLmFzc2VydEluKHRlbXBkaXIsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgICMgVHJ5IGNyZWF0aW5nIGEgd29ya3NwYWNlIGxheWVyIHdpdGggdGhlIGRlZmF1bHQgcGF0aAotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgY3JlYXRlLXdvcmtzcGFjZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdjb25mJywgJ2xheWVyLmNvbmYnKSksIG1zZyA9ICJObyB3b3Jrc3BhY2UgY3JlYXRlZC4gZGV2dG9vbCBvdXRwdXQ6ICVzICIgJSByZXN1bHQub3V0cHV0KQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHNob3ctbGF5ZXJzJykKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbih0ZW1wZGlyLCByZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKHNlbGYud29ya3NwYWNlZGlyLCByZXN1bHQub3V0cHV0KQotCi0gICAgQHRlc3RjYXNlKDExNTkpCi0gICAgZGVmIHRlc3RfZGV2dG9vbF9hZGQoc2VsZik6Ci0gICAgICAgICMgRmV0Y2ggc291cmNlCi0gICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQotICAgICAgICB1cmwgPSAnaHR0cDovL3d3dy5pdmFyY2guY29tL3Byb2dyYW1zL3NvdXJjZXMvcHYtMS41LjMudGFyLmJ6MicKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCd3Z2V0ICVzJyAlIHVybCwgY3dkPXRlbXBkaXIpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgndGFyIHhmdiBwdi0xLjUuMy50YXIuYnoyJywgY3dkPXRlbXBkaXIpCi0gICAgICAgIHNyY2RpciA9IG9zLnBhdGguam9pbih0ZW1wZGlyLCAncHYtMS41LjMnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHNyY2RpciwgJ2NvbmZpZ3VyZScpKSwgJ1VuYWJsZSB0byBmaW5kIGNvbmZpZ3VyZSBzY3JpcHQgaW4gc291cmNlIGRpcmVjdG9yeScpCi0gICAgICAgICMgVGVzdCBkZXZ0b29sIGFkZAotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlIC1jIGNsZWFuc3N0YXRlIHB2JykKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGFkZCBwdiAlcycgJSBzcmNkaXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdjb25mJywgJ2xheWVyLmNvbmYnKSksICdXb3Jrc3BhY2UgZGlyZWN0b3J5IG5vdCBjcmVhdGVkJykKLSAgICAgICAgIyBUZXN0IGRldnRvb2wgc3RhdHVzCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQotICAgICAgICBzZWxmLmFzc2VydEluKCdwdicsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oc3JjZGlyLCByZXN1bHQub3V0cHV0KQotICAgICAgICAjIENsZWFuIHVwIGFueXRoaW5nIGluIHRoZSB3b3JrZGlyL3N5c3Jvb3Qvc3N0YXRlIGNhY2hlIChoYXZlIHRvIGRvIHRoaXMgKmFmdGVyKiBkZXZ0b29sIGFkZCBzaW5jZSB0aGUgcmVjaXBlIG9ubHkgZXhpc3RzIHRoZW4pCi0gICAgICAgIGJpdGJha2UoJ3B2IC1jIGNsZWFuc3N0YXRlJykKLSAgICAgICAgIyBUZXN0IGRldnRvb2wgYnVpbGQKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGJ1aWxkIHB2JykKLSAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnRCcsICdiaW5kaXInXSwgJ3B2JykKLSAgICAgICAgaW5zdGFsbGRpciA9IGJiX3ZhcnNbJ0QnXQotICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5zdGFsbGRpciwgJ0NvdWxkIG5vdCBxdWVyeSBpbnN0YWxsZGlyIHZhcmlhYmxlJykKLSAgICAgICAgYmluZGlyID0gYmJfdmFyc1snYmluZGlyJ10KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJpbmRpciwgJ0NvdWxkIG5vdCBxdWVyeSBiaW5kaXIgdmFyaWFibGUnKQotICAgICAgICBpZiBiaW5kaXJbMF0gPT0gJy8nOgotICAgICAgICAgICAgYmluZGlyID0gYmluZGlyWzE6XQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKGluc3RhbGxkaXIsIGJpbmRpciwgJ3B2JykpLCAncHYgYmluYXJ5IG5vdCBmb3VuZCBpbiBEJykKLQotICAgIEB0ZXN0Y2FzZSgxNDIzKQotICAgIGRlZiB0ZXN0X2RldnRvb2xfYWRkX2dpdF9sb2NhbChzZWxmKToKLSAgICAgICAgIyBGZXRjaCBzb3VyY2UgZnJvbSBhIHJlbW90ZSBVUkwsIGJ1dCBkbyBpdCBvdXRzaWRlIG9mIGRldnRvb2wKLSAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCi0gICAgICAgIHBuID0gJ2RidXMtd2FpdCcKLSAgICAgICAgc3JjcmV2ID0gJzZjYzYwNzdhMzZmZTI2NDhhNWY5OTNmZTdjMTZjOTYzMmY5NDY1MTcnCi0gICAgICAgICMgV2UgY2hvb3NlIGFuIGh0dHBzOi8vIGdpdCBVUkwgaGVyZSB0byBjaGVjayByZXdyaXRpbmcgdGhlIFVSTCB3b3JrcwotICAgICAgICB1cmwgPSAnaHR0cHM6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9naXQvZGJ1cy13YWl0JwotICAgICAgICAjIEZvcmNlIGZldGNoaW5nIHRvICJub25hbWUiIHN1YmRpciBzbyB3ZSB2ZXJpZnkgd2UncmUgcGlja2luZyB1cCB0aGUgbmFtZSBmcm9tIGF1dG9jb25mCi0gICAgICAgICMgaW5zdGVhZCBvZiB0aGUgZGlyZWN0b3J5IG5hbWUKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgY2xvbmUgJXMgbm9uYW1lJyAlIHVybCwgY3dkPXRlbXBkaXIpCi0gICAgICAgIHNyY2RpciA9IG9zLnBhdGguam9pbih0ZW1wZGlyLCAnbm9uYW1lJykKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgcmVzZXQgLS1oYXJkICVzJyAlIHNyY3JldiwgY3dkPXNyY2RpcikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihzcmNkaXIsICdjb25maWd1cmUuYWMnKSksICdVbmFibGUgdG8gZmluZCBjb25maWd1cmUgc2NyaXB0IGluIHNvdXJjZSBkaXJlY3RvcnknKQotICAgICAgICAjIFRlc3QgZGV2dG9vbCBhZGQKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKLSAgICAgICAgIyBEb24ndCBzcGVjaWZ5IGEgbmFtZSBzaW5jZSB3ZSBzaG91bGQgYmUgYWJsZSB0byBhdXRvLWRldGVjdCBpdAotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgYWRkICVzJyAlIHNyY2RpcikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ2NvbmYnLCAnbGF5ZXIuY29uZicpKSwgJ1dvcmtzcGFjZSBkaXJlY3Rvcnkgbm90IGNyZWF0ZWQnKQotICAgICAgICAjIENoZWNrIHRoZSByZWNpcGUgbmFtZSBpcyBjb3JyZWN0Ci0gICAgICAgIHJlY2lwZWZpbGUgPSBnZXRfYmJfdmFyKCdGSUxFJywgcG4pCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJyVzX2dpdC5iYicgJSBwbiwgcmVjaXBlZmlsZSwgJ1JlY2lwZSBmaWxlIGluY29ycmVjdGx5IG5hbWVkJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbihyZWNpcGVmaWxlLCByZXN1bHQub3V0cHV0KQotICAgICAgICAjIFRlc3QgZGV2dG9vbCBzdGF0dXMKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4ocG4sIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oc3JjZGlyLCByZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKHJlY2lwZWZpbGUsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIGNoZWNrdmFycyA9IHt9Ci0gICAgICAgIGNoZWNrdmFyc1snTElDRU5TRSddID0gJ0dQTHYyJwotICAgICAgICBjaGVja3ZhcnNbJ0xJQ19GSUxFU19DSEtTVU0nXSA9ICdmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMnCi0gICAgICAgIGNoZWNrdmFyc1snUyddID0gJyR7V09SS0RJUn0vZ2l0JwotICAgICAgICBjaGVja3ZhcnNbJ1BWJ10gPSAnMC4xK2dpdCR7U1JDUFZ9JwotICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUkknXSA9ICdnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9naXQvZGJ1cy13YWl0O3Byb3RvY29sPWh0dHBzJwotICAgICAgICBjaGVja3ZhcnNbJ1NSQ1JFViddID0gc3JjcmV2Ci0gICAgICAgIGNoZWNrdmFyc1snREVQRU5EUyddID0gc2V0KFsnZGJ1cyddKQotICAgICAgICBzZWxmLl90ZXN0X3JlY2lwZV9jb250ZW50cyhyZWNpcGVmaWxlLCBjaGVja3ZhcnMsIFtdKQotCi0gICAgQHRlc3RjYXNlKDExNjIpCi0gICAgZGVmIHRlc3RfZGV2dG9vbF9hZGRfbGlicmFyeShzZWxmKToKLSAgICAgICAgIyBGZXRjaCBzb3VyY2UKLSAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCi0gICAgICAgIHZlcnNpb24gPSAnMS4xJwotICAgICAgICB1cmwgPSAnaHR0cHM6Ly93d3cuaW50cmEybmV0LmNvbS9lbi9kZXZlbG9wZXIvbGliZnRkaS9kb3dubG9hZC9saWJmdGRpMS0lcy50YXIuYnoyJyAlIHZlcnNpb24KLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCd3Z2V0ICVzJyAlIHVybCwgY3dkPXRlbXBkaXIpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgndGFyIHhmdiBsaWJmdGRpMS0lcy50YXIuYnoyJyAlIHZlcnNpb24sIGN3ZD10ZW1wZGlyKQotICAgICAgICBzcmNkaXIgPSBvcy5wYXRoLmpvaW4odGVtcGRpciwgJ2xpYmZ0ZGkxLSVzJyAlIHZlcnNpb24pCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oc3JjZGlyLCAnQ01ha2VMaXN0cy50eHQnKSksICdVbmFibGUgdG8gZmluZCBDTWFrZUxpc3RzLnR4dCBpbiBzb3VyY2UgZGlyZWN0b3J5JykKLSAgICAgICAgIyBUZXN0IGRldnRvb2wgYWRkIChhbmQgdXNlIC1WIHNvIHdlIHRlc3QgdGhhdCB0b28pCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBhZGQgbGliZnRkaSAlcyAtViAlcycgJSAoc3JjZGlyLCB2ZXJzaW9uKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ2NvbmYnLCAnbGF5ZXIuY29uZicpKSwgJ1dvcmtzcGFjZSBkaXJlY3Rvcnkgbm90IGNyZWF0ZWQnKQotICAgICAgICAjIFRlc3QgZGV2dG9vbCBzdGF0dXMKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xpYmZ0ZGknLCByZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKHNyY2RpciwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgIyBDbGVhbiB1cCBhbnl0aGluZyBpbiB0aGUgd29ya2Rpci9zeXNyb290L3NzdGF0ZSBjYWNoZSAoaGF2ZSB0byBkbyB0aGlzICphZnRlciogZGV2dG9vbCBhZGQgc2luY2UgdGhlIHJlY2lwZSBvbmx5IGV4aXN0cyB0aGVuKQotICAgICAgICBiaXRiYWtlKCdsaWJmdGRpIC1jIGNsZWFuc3N0YXRlJykKLSAgICAgICAgIyBsaWJmdGRpJ3MgcHl0aG9uL0NNYWtlTGlzdHMudHh0IGlzIGEgYml0IGJyb2tlbiwgc28gbGV0J3MganVzdCBkaXNhYmxlIGl0Ci0gICAgICAgICMgVGhlcmUncyBhbHNvIHRoZSBtYXR0ZXIgb2YgaXQgaW5zdGFsbGluZyBjbWFrZSBmaWxlcyB0byBhIHBhdGggd2UgZG9uJ3QKLSAgICAgICAgIyBub3JtYWxseSBjb3Zlciwgd2hpY2ggdHJpZ2dlcnMgdGhlIGluc3RhbGxlZC12cy1zaGlwcGVkIFFBIHRlc3Qgd2UgaGF2ZQotICAgICAgICAjIHdpdGhpbiBkb19wYWNrYWdlCi0gICAgICAgIHJlY2lwZWZpbGUgPSAnJXMvcmVjaXBlcy9saWJmdGRpL2xpYmZ0ZGlfJXMuYmInICUgKHNlbGYud29ya3NwYWNlZGlyLCB2ZXJzaW9uKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ3JlY2lwZXRvb2wgc2V0dmFyICVzIEVYVFJBX09FQ01BS0UgLS0gXCctRFBZVEhPTl9CSU5ESU5HUz1PRkYgLURMSUJGVERJX0NNQUtFX0NPTkZJR19ESVI9JHtkYXRhZGlyfS9jbWFrZS9Nb2R1bGVzXCcnICUgcmVjaXBlZmlsZSkKLSAgICAgICAgd2l0aCBvcGVuKHJlY2lwZWZpbGUsICdhJykgYXMgZjoKLSAgICAgICAgICAgIGYud3JpdGUoJ1xuRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L2NtYWtlL01vZHVsZXMiXG4nKQotICAgICAgICAgICAgIyBXZSBkb24ndCBoYXZlIHRoZSBhYmlsaXR5IHRvIHBpY2sgdXAgdGhpcyBkZXBlbmRlbmN5IGF1dG9tYXRpY2FsbHkgeWV0Li4uCi0gICAgICAgICAgICBmLndyaXRlKCdcbkRFUEVORFMgKz0gImxpYnVzYjEiXG4nKQotICAgICAgICAgICAgZi53cml0ZSgnXG5URVNUTElCT1VUUFVUID0gIiR7Q09NUE9ORU5UU19ESVJ9LyR7VFVORV9QS0dBUkNIfS8ke1BOfS8ke2xpYmRpcn0iXG4nKQotICAgICAgICAjIFRlc3QgZGV2dG9vbCBidWlsZAotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgYnVpbGQgbGliZnRkaScpCi0gICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ1RFU1RMSUJPVVRQVVQnLCAnU1RBTVAnXSwgJ2xpYmZ0ZGknKQotICAgICAgICBzdGFnaW5nX2xpYmRpciA9IGJiX3ZhcnNbJ1RFU1RMSUJPVVRQVVQnXQotICAgICAgICBzZWxmLmFzc2VydFRydWUoc3RhZ2luZ19saWJkaXIsICdDb3VsZCBub3QgcXVlcnkgVEVTVExJQk9VVFBVVCB2YXJpYWJsZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oc3RhZ2luZ19saWJkaXIsICdsaWJmdGRpMS5zby4yLjEuMCcpKSwgImxpYmZ0ZGkgYmluYXJ5IG5vdCBmb3VuZCBpbiBTVEFHSU5HX0xJQkRJUi4gT3V0cHV0IG9mIGRldnRvb2wgYnVpbGQgbGliZnRkaSAlcyIgJSByZXN1bHQub3V0cHV0KQotICAgICAgICAjIFRlc3QgZGV2dG9vbCByZXNldAotICAgICAgICBzdGFtcHByZWZpeCA9IGJiX3ZhcnNbJ1NUQU1QJ10KLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHJlc2V0IGxpYmZ0ZGknKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbignbGliZnRkaScsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdGFtcHByZWZpeCwgJ1VuYWJsZSB0byBnZXQgU1RBTVAgdmFsdWUgZm9yIHJlY2lwZSBsaWJmdGRpJykKLSAgICAgICAgbWF0Y2hlcyA9IGdsb2IuZ2xvYihzdGFtcHByZWZpeCArICcqJykKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtYXRjaGVzLCAnU3RhbXAgZmlsZXMgZXhpc3QgZm9yIHJlY2lwZSBsaWJmdGRpIHRoYXQgc2hvdWxkIGhhdmUgYmVlbiBjbGVhbmVkJykKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oc3RhZ2luZ19saWJkaXIsICdsaWJmdGRpMS5zby4yLjEuMCcpKSwgJ2xpYmZ0ZGkgYmluYXJ5IHN0aWxsIGZvdW5kIGluIFNUQUdJTkdfTElCRElSIGFmdGVyIGNsZWFuaW5nJykKLQotICAgIEB0ZXN0Y2FzZSgxMTYwKQotICAgIGRlZiB0ZXN0X2RldnRvb2xfYWRkX2ZldGNoKHNlbGYpOgotICAgICAgICAjIEZldGNoIHNvdXJjZQotICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKLSAgICAgICAgdGVzdHZlciA9ICcwLjIzJwotICAgICAgICB1cmwgPSAnaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcGFja2FnZXMvc291cmNlL00vTWFya3VwU2FmZS9NYXJrdXBTYWZlLSVzLnRhci5neicgJSB0ZXN0dmVyCi0gICAgICAgIHRlc3RyZWNpcGUgPSAncHl0aG9uLW1hcmt1cHNhZmUnCi0gICAgICAgIHNyY2RpciA9IG9zLnBhdGguam9pbih0ZW1wZGlyLCB0ZXN0cmVjaXBlKQotICAgICAgICAjIFRlc3QgZGV2dG9vbCBhZGQKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZSAtYyBjbGVhbnNzdGF0ZSAlcycgJSB0ZXN0cmVjaXBlKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgYWRkICVzICVzIC1mICVzJyAlICh0ZXN0cmVjaXBlLCBzcmNkaXIsIHVybCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdjb25mJywgJ2xheWVyLmNvbmYnKSksICdXb3Jrc3BhY2UgZGlyZWN0b3J5IG5vdCBjcmVhdGVkLiAlcycgJSByZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHNyY2RpciwgJ3NldHVwLnB5JykpLCAnVW5hYmxlIHRvIGZpbmQgc2V0dXAucHkgaW4gc291cmNlIGRpcmVjdG9yeScpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihzcmNkaXIsICcuZ2l0JykpLCAnZ2l0IHJlcG9zaXRvcnkgZm9yIGV4dGVybmFsIHNvdXJjZSB0cmVlIHdhcyBub3QgY3JlYXRlZCcpCi0gICAgICAgICMgVGVzdCBkZXZ0b29sIHN0YXR1cwotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbih0ZXN0cmVjaXBlLCByZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKHNyY2RpciwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgIyBDaGVjayByZWNpcGUKLSAgICAgICAgcmVjaXBlZmlsZSA9IGdldF9iYl92YXIoJ0ZJTEUnLCB0ZXN0cmVjaXBlKQotICAgICAgICBzZWxmLmFzc2VydEluKCclc18lcy5iYicgJSAodGVzdHJlY2lwZSwgdGVzdHZlciksIHJlY2lwZWZpbGUsICdSZWNpcGUgZmlsZSBpbmNvcnJlY3RseSBuYW1lZCcpCi0gICAgICAgIGNoZWNrdmFycyA9IHt9Ci0gICAgICAgIGNoZWNrdmFyc1snUyddID0gJyR7V09SS0RJUn0vTWFya3VwU2FmZS0ke1BWfScKLSAgICAgICAgY2hlY2t2YXJzWydTUkNfVVJJJ10gPSB1cmwucmVwbGFjZSh0ZXN0dmVyLCAnJHtQVn0nKQotICAgICAgICBzZWxmLl90ZXN0X3JlY2lwZV9jb250ZW50cyhyZWNpcGVmaWxlLCBjaGVja3ZhcnMsIFtdKQotICAgICAgICAjIFRyeSB3aXRoIHZlcnNpb24gc3BlY2lmaWVkCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCByZXNldCAtbiAlcycgJSB0ZXN0cmVjaXBlKQotICAgICAgICBzaHV0aWwucm10cmVlKHNyY2RpcikKLSAgICAgICAgZmFrZXZlciA9ICcxLjknCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBhZGQgJXMgJXMgLWYgJXMgLVYgJXMnICUgKHRlc3RyZWNpcGUsIHNyY2RpciwgdXJsLCBmYWtldmVyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihzcmNkaXIsICdzZXR1cC5weScpKSwgJ1VuYWJsZSB0byBmaW5kIHNldHVwLnB5IGluIHNvdXJjZSBkaXJlY3RvcnknKQotICAgICAgICAjIFRlc3QgZGV2dG9vbCBzdGF0dXMKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4odGVzdHJlY2lwZSwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbihzcmNkaXIsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgICMgQ2hlY2sgcmVjaXBlCi0gICAgICAgIHJlY2lwZWZpbGUgPSBnZXRfYmJfdmFyKCdGSUxFJywgdGVzdHJlY2lwZSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignJXNfJXMuYmInICUgKHRlc3RyZWNpcGUsIGZha2V2ZXIpLCByZWNpcGVmaWxlLCAnUmVjaXBlIGZpbGUgaW5jb3JyZWN0bHkgbmFtZWQnKQotICAgICAgICBjaGVja3ZhcnMgPSB7fQotICAgICAgICBjaGVja3ZhcnNbJ1MnXSA9ICcke1dPUktESVJ9L01hcmt1cFNhZmUtJXMnICUgdGVzdHZlcgotICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUkknXSA9IHVybAotICAgICAgICBzZWxmLl90ZXN0X3JlY2lwZV9jb250ZW50cyhyZWNpcGVmaWxlLCBjaGVja3ZhcnMsIFtdKQotCi0gICAgQHRlc3RjYXNlKDExNjEpCi0gICAgZGVmIHRlc3RfZGV2dG9vbF9hZGRfZmV0Y2hfZ2l0KHNlbGYpOgotICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKLSAgICAgICAgdXJsID0gJ2dpdHNtOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbXJhYScKLSAgICAgICAgY2hlY2tyZXYgPSAnYWUxMjdiMTlhNTBhYTU0MjU1ZTQzMzBjY2ZkZDlhNWQwNThlNTgxZCcKLSAgICAgICAgdGVzdHJlY2lwZSA9ICdtcmFhJwotICAgICAgICBzcmNkaXIgPSBvcy5wYXRoLmpvaW4odGVtcGRpciwgdGVzdHJlY2lwZSkKLSAgICAgICAgIyBUZXN0IGRldnRvb2wgYWRkCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UgLWMgY2xlYW5zc3RhdGUgJXMnICUgdGVzdHJlY2lwZSkKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGFkZCAlcyAlcyAtYSAtZiAlcycgJSAodGVzdHJlY2lwZSwgc3JjZGlyLCB1cmwpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnY29uZicsICdsYXllci5jb25mJykpLCAnV29ya3NwYWNlIGRpcmVjdG9yeSBub3QgY3JlYXRlZDogJXMnICUgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihzcmNkaXIsICdpbXJhYScsICdpbXJhYS5jJykpLCAnVW5hYmxlIHRvIGZpbmQgaW1yYWEvaW1yYWEuYyBpbiBzb3VyY2UgZGlyZWN0b3J5JykKLSAgICAgICAgIyBUZXN0IGRldnRvb2wgc3RhdHVzCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQotICAgICAgICBzZWxmLmFzc2VydEluKHRlc3RyZWNpcGUsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oc3JjZGlyLCByZXN1bHQub3V0cHV0KQotICAgICAgICAjIENoZWNrIHJlY2lwZQotICAgICAgICByZWNpcGVmaWxlID0gZ2V0X2JiX3ZhcignRklMRScsIHRlc3RyZWNpcGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ19naXQuYmInLCByZWNpcGVmaWxlLCAnUmVjaXBlIGZpbGUgaW5jb3JyZWN0bHkgbmFtZWQnKQotICAgICAgICBjaGVja3ZhcnMgPSB7fQotICAgICAgICBjaGVja3ZhcnNbJ1MnXSA9ICcke1dPUktESVJ9L2dpdCcKLSAgICAgICAgY2hlY2t2YXJzWydQViddID0gJzEuMCtnaXQke1NSQ1BWfScKLSAgICAgICAgY2hlY2t2YXJzWydTUkNfVVJJJ10gPSB1cmwKLSAgICAgICAgY2hlY2t2YXJzWydTUkNSRVYnXSA9ICcke0FVVE9SRVZ9JwotICAgICAgICBzZWxmLl90ZXN0X3JlY2lwZV9jb250ZW50cyhyZWNpcGVmaWxlLCBjaGVja3ZhcnMsIFtdKQotICAgICAgICAjIFRyeSB3aXRoIHJldmlzaW9uIGFuZCB2ZXJzaW9uIHNwZWNpZmllZAotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgcmVzZXQgLW4gJXMnICUgdGVzdHJlY2lwZSkKLSAgICAgICAgc2h1dGlsLnJtdHJlZShzcmNkaXIpCi0gICAgICAgIHVybF9yZXYgPSAnJXM7cmV2PSVzJyAlICh1cmwsIGNoZWNrcmV2KQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgYWRkICVzICVzIC1mICIlcyIgLVYgMS41JyAlICh0ZXN0cmVjaXBlLCBzcmNkaXIsIHVybF9yZXYpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHNyY2RpciwgJ2ltcmFhJywgJ2ltcmFhLmMnKSksICdVbmFibGUgdG8gZmluZCBpbXJhYS9pbXJhYS5jIGluIHNvdXJjZSBkaXJlY3RvcnknKQotICAgICAgICAjIFRlc3QgZGV2dG9vbCBzdGF0dXMKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4odGVzdHJlY2lwZSwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbihzcmNkaXIsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgICMgQ2hlY2sgcmVjaXBlCi0gICAgICAgIHJlY2lwZWZpbGUgPSBnZXRfYmJfdmFyKCdGSUxFJywgdGVzdHJlY2lwZSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignX2dpdC5iYicsIHJlY2lwZWZpbGUsICdSZWNpcGUgZmlsZSBpbmNvcnJlY3RseSBuYW1lZCcpCi0gICAgICAgIGNoZWNrdmFycyA9IHt9Ci0gICAgICAgIGNoZWNrdmFyc1snUyddID0gJyR7V09SS0RJUn0vZ2l0JwotICAgICAgICBjaGVja3ZhcnNbJ1BWJ10gPSAnMS41K2dpdCR7U1JDUFZ9JwotICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUkknXSA9IHVybAotICAgICAgICBjaGVja3ZhcnNbJ1NSQ1JFViddID0gY2hlY2tyZXYKLSAgICAgICAgc2VsZi5fdGVzdF9yZWNpcGVfY29udGVudHMocmVjaXBlZmlsZSwgY2hlY2t2YXJzLCBbXSkKLQotICAgIEB0ZXN0Y2FzZSgxMzkxKQotICAgIGRlZiB0ZXN0X2RldnRvb2xfYWRkX2ZldGNoX3NpbXBsZShzZWxmKToKLSAgICAgICAgIyBGZXRjaCBzb3VyY2UgZnJvbSBhIHJlbW90ZSBVUkwsIGF1dG8tZGV0ZWN0aW5nIG5hbWUKLSAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCi0gICAgICAgIHRlc3R2ZXIgPSAnMS42LjAnCi0gICAgICAgIHVybCA9ICdodHRwOi8vd3d3Lml2YXJjaC5jb20vcHJvZ3JhbXMvc291cmNlcy9wdi0lcy50YXIuYnoyJyAlIHRlc3R2ZXIKLSAgICAgICAgdGVzdHJlY2lwZSA9ICdwdicKLSAgICAgICAgc3JjZGlyID0gb3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnc291cmNlcycsIHRlc3RyZWNpcGUpCi0gICAgICAgICMgVGVzdCBkZXZ0b29sIGFkZAotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgYWRkICVzJyAlIHVybCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ2NvbmYnLCAnbGF5ZXIuY29uZicpKSwgJ1dvcmtzcGFjZSBkaXJlY3Rvcnkgbm90IGNyZWF0ZWQuICVzJyAlIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oc3JjZGlyLCAnY29uZmlndXJlJykpLCAnVW5hYmxlIHRvIGZpbmQgY29uZmlndXJlIHNjcmlwdCBpbiBzb3VyY2UgZGlyZWN0b3J5JykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNkaXIob3MucGF0aC5qb2luKHNyY2RpciwgJy5naXQnKSksICdnaXQgcmVwb3NpdG9yeSBmb3IgZXh0ZXJuYWwgc291cmNlIHRyZWUgd2FzIG5vdCBjcmVhdGVkJykKLSAgICAgICAgIyBUZXN0IGRldnRvb2wgc3RhdHVzCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQotICAgICAgICBzZWxmLmFzc2VydEluKHRlc3RyZWNpcGUsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oc3JjZGlyLCByZXN1bHQub3V0cHV0KQotICAgICAgICAjIENoZWNrIHJlY2lwZQotICAgICAgICByZWNpcGVmaWxlID0gZ2V0X2JiX3ZhcignRklMRScsIHRlc3RyZWNpcGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJyVzXyVzLmJiJyAlICh0ZXN0cmVjaXBlLCB0ZXN0dmVyKSwgcmVjaXBlZmlsZSwgJ1JlY2lwZSBmaWxlIGluY29ycmVjdGx5IG5hbWVkJykKLSAgICAgICAgY2hlY2t2YXJzID0ge30KLSAgICAgICAgY2hlY2t2YXJzWydTJ10gPSBOb25lCi0gICAgICAgIGNoZWNrdmFyc1snU1JDX1VSSSddID0gdXJsLnJlcGxhY2UodGVzdHZlciwgJyR7UFZ9JykKLSAgICAgICAgc2VsZi5fdGVzdF9yZWNpcGVfY29udGVudHMocmVjaXBlZmlsZSwgY2hlY2t2YXJzLCBbXSkKLQotICAgIEB0ZXN0Y2FzZSgxMTY0KQotICAgIGRlZiB0ZXN0X2RldnRvb2xfbW9kaWZ5KHNlbGYpOgotICAgICAgICBpbXBvcnQgb2UucGF0aAotCi0gICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlIC1jIGNsZWFuIG1kYWRtJykKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIG1vZGlmeSBtZGFkbSAteCAlcycgJSB0ZW1wZGlyKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHRlbXBkaXIsICdNYWtlZmlsZScpKSwgJ0V4dHJhY3RlZCBzb3VyY2UgY291bGQgbm90IGJlIGZvdW5kJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ2NvbmYnLCAnbGF5ZXIuY29uZicpKSwgJ1dvcmtzcGFjZSBkaXJlY3Rvcnkgbm90IGNyZWF0ZWQnKQotICAgICAgICBtYXRjaGVzID0gZ2xvYi5nbG9iKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ2FwcGVuZHMnLCAnbWRhZG1fKi5iYmFwcGVuZCcpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0Y2hlcywgJ2JiYXBwZW5kIG5vdCBjcmVhdGVkICVzJyAlIHJlc3VsdC5vdXRwdXQpCi0KLSAgICAgICAgIyBUZXN0IGRldnRvb2wgc3RhdHVzCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQotICAgICAgICBzZWxmLmFzc2VydEluKCdtZGFkbScsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4odGVtcGRpciwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5fY2hlY2tfc3JjX3JlcG8odGVtcGRpcikKLQotICAgICAgICBiaXRiYWtlKCdtZGFkbSAtQyB1bnBhY2snKQotCi0gICAgICAgIGRlZiBjaGVja19saW5lKGNoZWNrZmlsZSwgZXhwZWN0ZWQsIG1lc3NhZ2UsIHByZXNlbnQ9VHJ1ZSk6Ci0gICAgICAgICAgICAjIENoZWNrIGZvciAkZXhwZWN0ZWQsIG9uIGEgbGluZSBvbiBpdHMgb3duLCBpbiBjaGVja2ZpbGUuCi0gICAgICAgICAgICB3aXRoIG9wZW4oY2hlY2tmaWxlLCAncicpIGFzIGY6Ci0gICAgICAgICAgICAgICAgaWYgcHJlc2VudDoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihleHBlY3RlZCArICdcbicsIGYsIG1lc3NhZ2UpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbihleHBlY3RlZCArICdcbicsIGYsIG1lc3NhZ2UpCi0KLSAgICAgICAgbW9kZmlsZSA9IG9zLnBhdGguam9pbih0ZW1wZGlyLCAnbWRhZG0uOC5pbicpCi0gICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ1BLR0QnLCAnbWFuZGlyJ10sICdtZGFkbScpCi0gICAgICAgIHBrZ2QgPSBiYl92YXJzWydQS0dEJ10KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBrZ2QsICdDb3VsZCBub3QgcXVlcnkgUEtHRCB2YXJpYWJsZScpCi0gICAgICAgIG1hbmRpciA9IGJiX3ZhcnNbJ21hbmRpciddCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYW5kaXIsICdDb3VsZCBub3QgcXVlcnkgbWFuZGlyIHZhcmlhYmxlJykKLSAgICAgICAgbWFuZmlsZSA9IG9lLnBhdGguam9pbihwa2dkLCBtYW5kaXIsICdtYW44JywgJ21kYWRtLjgnKQotCi0gICAgICAgIGNoZWNrX2xpbmUobW9kZmlsZSwgJ0xpbnV4IFNvZnR3YXJlIFJBSUQnLCAnQ291bGQgbm90IGZpbmQgaW5pdGlhbCBzdHJpbmcnKQotICAgICAgICBjaGVja19saW5lKG1vZGZpbGUsICdhbnRpcXVlIHBpbiBzYXJkaW5lJywgJ1VuZXhwZWN0ZWRseSBmb3VuZCByZXBsYWNlbWVudCBzdHJpbmcnLCBwcmVzZW50PUZhbHNlKQotCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgic2VkIC1pICdzIV5MaW51eCBTb2Z0d2FyZSBSQUlEJCFhbnRpcXVlIHBpbiBzYXJkaW5lIScgJXMiICUgbW9kZmlsZSkKLSAgICAgICAgY2hlY2tfbGluZShtb2RmaWxlLCAnYW50aXF1ZSBwaW4gc2FyZGluZScsICdtZGFkbS44LmluIGZpbGUgbm90IG1vZGlmaWVkIChzZWQgZmFpbGVkKScpCi0KLSAgICAgICAgYml0YmFrZSgnbWRhZG0gLWMgcGFja2FnZScpCi0gICAgICAgIGNoZWNrX2xpbmUobWFuZmlsZSwgJ2FudGlxdWUgcGluIHNhcmRpbmUnLCAnbWFuIGZpbGUgbm90IG1vZGlmaWVkLiBtYW4gc2VhcmNoZWQgZmlsZSBwYXRoOiAlcycgJSBtYW5maWxlKQotCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IGNoZWNrb3V0IC0tICVzJyAlIG1vZGZpbGUsIGN3ZD10ZW1wZGlyKQotICAgICAgICBjaGVja19saW5lKG1vZGZpbGUsICdMaW51eCBTb2Z0d2FyZSBSQUlEJywgJ21hbiAuaW4gZmlsZSBub3QgcmVzdG9yZWQgKGdpdCBmYWlsZWQpJykKLQotICAgICAgICBiaXRiYWtlKCdtZGFkbSAtYyBwYWNrYWdlJykKLSAgICAgICAgY2hlY2tfbGluZShtYW5maWxlLCAnTGludXggU29mdHdhcmUgUkFJRCcsICdtYW4gZmlsZSBub3QgdXBkYXRlZC4gbWFuIHNlYXJjaGVkIGZpbGUgcGF0aDogJXMnICUgbWFuZmlsZSkKLQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgcmVzZXQgbWRhZG0nKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbignbWRhZG0nLCByZXN1bHQub3V0cHV0KQotCi0gICAgZGVmIHRlc3RfZGV2dG9vbF9idWlsZGNsZWFuKHNlbGYpOgotICAgICAgICBkZWYgYXNzZXJ0RmlsZShwYXRoLCAqcGF0aHMpOgotICAgICAgICAgICAgZiA9IG9zLnBhdGguam9pbihwYXRoLCAqcGF0aHMpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoZiksICIlciBkb2VzIG5vdCBleGlzdCIgJSBmKQotICAgICAgICBkZWYgYXNzZXJ0Tm9GaWxlKHBhdGgsICpwYXRocyk6Ci0gICAgICAgICAgICBmID0gb3MucGF0aC5qb2luKHBhdGgsICpwYXRocykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKGYpKSwgIiVyIGV4aXN0cyIgJSBmKQotCi0gICAgICAgICMgQ2xlYW4gdXAgYW55dGhpbmcgaW4gdGhlIHdvcmtkaXIvc3lzcm9vdC9zc3RhdGUgY2FjaGUKLSAgICAgICAgYml0YmFrZSgnbWRhZG0gbTQgLWMgY2xlYW5zc3RhdGUnKQotICAgICAgICAjIFRyeSBtb2RpZnlpbmcgYSByZWNpcGUKLSAgICAgICAgdGVtcGRpcl9tZGFkbSA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQotICAgICAgICB0ZW1wZGlyX200ID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCi0gICAgICAgIGJ1aWxkZGlyX200ID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcl9tZGFkbSkKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyX200KQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKGJ1aWxkZGlyX200KQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlIC1jIGNsZWFuIG1kYWRtIG00JykKLSAgICAgICAgc2VsZi53cml0ZV9yZWNpcGVpbmMoJ200JywgJ0VYVEVSTkFMU1JDX0JVSUxEID0gIiVzIlxuZG9fY2xlYW4oKSB7XG5cdDpcbn1cbicgJSBidWlsZGRpcl9tNCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcnVuQ21kKCdkZXZ0b29sIG1vZGlmeSBtZGFkbSAteCAlcycgJSB0ZW1wZGlyX21kYWRtKQotICAgICAgICAgICAgcnVuQ21kKCdkZXZ0b29sIG1vZGlmeSBtNCAteCAlcycgJSB0ZW1wZGlyX200KQotICAgICAgICAgICAgYXNzZXJ0Tm9GaWxlKHRlbXBkaXJfbWRhZG0sICdtZGFkbScpCi0gICAgICAgICAgICBhc3NlcnROb0ZpbGUoYnVpbGRkaXJfbTQsICdzcmMvbTQnKQotICAgICAgICAgICAgcmVzdWx0ID0gYml0YmFrZSgnbTQgLWUnKQotICAgICAgICAgICAgcmVzdWx0ID0gYml0YmFrZSgnbWRhZG0gbTQgLWMgY29tcGlsZScpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5zdGF0dXMsIDApCi0gICAgICAgICAgICBhc3NlcnRGaWxlKHRlbXBkaXJfbWRhZG0sICdtZGFkbScpCi0gICAgICAgICAgICBhc3NlcnRGaWxlKGJ1aWxkZGlyX200LCAnc3JjL200JykKLSAgICAgICAgICAgICMgQ2hlY2sgdGhhdCBidWlsZGNsZWFuIHRhc2sgZXhpc3RzIGFuZCBkb2VzIGNhbGwgbWFrZSBjbGVhbgotICAgICAgICAgICAgYml0YmFrZSgnbWRhZG0gbTQgLWMgYnVpbGRjbGVhbicpCi0gICAgICAgICAgICBhc3NlcnROb0ZpbGUodGVtcGRpcl9tZGFkbSwgJ21kYWRtJykKLSAgICAgICAgICAgIGFzc2VydE5vRmlsZShidWlsZGRpcl9tNCwgJ3NyYy9tNCcpCi0gICAgICAgICAgICBiaXRiYWtlKCdtZGFkbSBtNCAtYyBjb21waWxlJykKLSAgICAgICAgICAgIGFzc2VydEZpbGUodGVtcGRpcl9tZGFkbSwgJ21kYWRtJykKLSAgICAgICAgICAgIGFzc2VydEZpbGUoYnVpbGRkaXJfbTQsICdzcmMvbTQnKQotICAgICAgICAgICAgYml0YmFrZSgnbWRhZG0gbTQgLWMgY2xlYW4nKQotICAgICAgICAgICAgIyBDaGVjayB0aGF0IGJ1aWxkY2xlYW4gdGFzayBpcyBydW4gYmVmb3JlIGNsZWFuIGZvciBCID09IFMKLSAgICAgICAgICAgIGFzc2VydE5vRmlsZSh0ZW1wZGlyX21kYWRtLCAnbWRhZG0nKQotICAgICAgICAgICAgIyBDaGVjayB0aGF0IGJ1aWxkY2xlYW4gdGFzayBpcyBub3QgcnVuIGJlZm9yZSBjbGVhbiBmb3IgQiAhPSBTCi0gICAgICAgICAgICBhc3NlcnRGaWxlKGJ1aWxkZGlyX200LCAnc3JjL200JykKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuZGVsZXRlX3JlY2lwZWluYygnbTQnKQotCi0gICAgQHRlc3RjYXNlKDExNjYpCi0gICAgZGVmIHRlc3RfZGV2dG9vbF9tb2RpZnlfaW52YWxpZChzZWxmKToKLSAgICAgICAgIyBUcnkgbW9kaWZ5aW5nIHNvbWUgcmVjaXBlcwotICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKLQotICAgICAgICB0ZXN0cmVjaXBlcyA9ICdwZXJmIGtlcm5lbC1kZXZzcmMgcGFja2FnZS1pbmRleCBjb3JlLWltYWdlLW1pbmltYWwgbWV0YS10b29sY2hhaW4gcGFja2FnZWdyb3VwLWNvcmUtc2RrIG1ldGEtaWRlLXN1cHBvcnQnLnNwbGl0KCkKLSAgICAgICAgIyBGaW5kIGFjdHVhbCBuYW1lIG9mIGdjYy1zb3VyY2Ugc2luY2UgaXQgbm93IGluY2x1ZGVzIHRoZSB2ZXJzaW9uIC0gY3J1ZGUsIGJ1dCBnb29kIGVub3VnaCBmb3IgdGhpcyBwdXJwb3NlCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgc2hvdy1yZWNpcGVzIGdjYy1zb3VyY2UqJykKLSAgICAgICAgZm9yIGxpbmUgaW4gcmVzdWx0Lm91dHB1dC5zcGxpdGxpbmVzKCk6Ci0gICAgICAgICAgICAjIGp1c3QgbWF0Y2ggdGhvc2UgbGluZXMgdGhhdCBjb250YWluIGEgcmVhbCB0YXJnZXQKLSAgICAgICAgICAgIG0gPSByZS5tYXRjaCgnKD9QPHJlY2lwZT5eW2EtekEtWjAtOS4tXSspKD9QPGNvbG9uPjokKScsIGxpbmUpCi0gICAgICAgICAgICBpZiBtOgotICAgICAgICAgICAgICAgIHRlc3RyZWNpcGVzLmFwcGVuZChtLmdyb3VwKCdyZWNpcGUnKSkKLSAgICAgICAgZm9yIHRlc3RyZWNpcGUgaW4gdGVzdHJlY2lwZXM6Ci0gICAgICAgICAgICAjIENoZWNrIGl0J3MgYSB2YWxpZCByZWNpcGUKLSAgICAgICAgICAgIGJpdGJha2UoJyVzIC1lJyAlIHRlc3RyZWNpcGUpCi0gICAgICAgICAgICAjIGRldnRvb2wgZXh0cmFjdCBzaG91bGQgZmFpbAotICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGV4dHJhY3QgJXMgJXMnICUgKHRlc3RyZWNpcGUsIG9zLnBhdGguam9pbih0ZW1wZGlyLCB0ZXN0cmVjaXBlKSksIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmVzdWx0LnN0YXR1cywgMCwgJ2RldnRvb2wgZXh0cmFjdCBvbiAlcyBzaG91bGQgaGF2ZSBmYWlsZWQuIGRldnRvb2wgb3V0cHV0OiAlcycgJSAodGVzdHJlY2lwZSwgcmVzdWx0Lm91dHB1dCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdGZXRjaGluZyAnLCByZXN1bHQub3V0cHV0LCAnZGV2dG9vbCBleHRyYWN0IG9uICVzIHNob3VsZCBoYXZlIGVycm9yZWQgb3V0IGJlZm9yZSB0cnlpbmcgdG8gZmV0Y2gnICUgdGVzdHJlY2lwZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0VSUk9SOiAnLCByZXN1bHQub3V0cHV0LCAnZGV2dG9vbCBleHRyYWN0IG9uICVzIHNob3VsZCBoYXZlIGdpdmVuIGFuIEVSUk9SJyAlIHRlc3RyZWNpcGUpCi0gICAgICAgICAgICAjIGRldnRvb2wgbW9kaWZ5IHNob3VsZCBmYWlsCi0gICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgbW9kaWZ5ICVzIC14ICVzJyAlICh0ZXN0cmVjaXBlLCBvcy5wYXRoLmpvaW4odGVtcGRpciwgdGVzdHJlY2lwZSkpLCBpZ25vcmVfc3RhdHVzPVRydWUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJlc3VsdC5zdGF0dXMsIDAsICdkZXZ0b29sIG1vZGlmeSBvbiAlcyBzaG91bGQgaGF2ZSBmYWlsZWQuIGRldnRvb2wgb3V0cHV0OiAlcycgJSAgKHRlc3RyZWNpcGUsIHJlc3VsdC5vdXRwdXQpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignRVJST1I6ICcsIHJlc3VsdC5vdXRwdXQsICdkZXZ0b29sIG1vZGlmeSBvbiAlcyBzaG91bGQgaGF2ZSBnaXZlbiBhbiBFUlJPUicgJSB0ZXN0cmVjaXBlKQotCi0gICAgQHRlc3RjYXNlKDEzNjUpCi0gICAgZGVmIHRlc3RfZGV2dG9vbF9tb2RpZnlfbmF0aXZlKHNlbGYpOgotICAgICAgICAjIENoZWNrIHByZWNvbmRpdGlvbnMKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLndvcmtzcGFjZWRpciksICdUaGlzIHRlc3QgY2Fubm90IGJlIHJ1biB3aXRoIGEgd29ya3NwYWNlIGRpcmVjdG9yeSB1bmRlciB0aGUgYnVpbGQgZGlyZWN0b3J5JykKLSAgICAgICAgIyBUcnkgbW9kaWZ5aW5nIHNvbWUgcmVjaXBlcwotICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKLQotICAgICAgICBiYmNsYXNzZXh0ZW5kZWQgPSBGYWxzZQotICAgICAgICBpbmhlcml0bmF0aXZlID0gRmFsc2UKLSAgICAgICAgdGVzdHJlY2lwZXMgPSAnbXRvb2xzLW5hdGl2ZSBhcHQtbmF0aXZlIGRlc2t0b3AtZmlsZS11dGlscy1uYXRpdmUnLnNwbGl0KCkKLSAgICAgICAgZm9yIHRlc3RyZWNpcGUgaW4gdGVzdHJlY2lwZXM6Ci0gICAgICAgICAgICBjaGVja2V4dGVuZCA9ICduYXRpdmUnIGluIChnZXRfYmJfdmFyKCdCQkNMQVNTRVhURU5EJywgdGVzdHJlY2lwZSkgb3IgJycpLnNwbGl0KCkKLSAgICAgICAgICAgIGlmIG5vdCBiYmNsYXNzZXh0ZW5kZWQ6Ci0gICAgICAgICAgICAgICAgYmJjbGFzc2V4dGVuZGVkID0gY2hlY2tleHRlbmQKLSAgICAgICAgICAgIGlmIG5vdCBpbmhlcml0bmF0aXZlOgotICAgICAgICAgICAgICAgIGluaGVyaXRuYXRpdmUgPSBub3QgY2hlY2tleHRlbmQKLSAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBtb2RpZnkgJXMgLXggJXMnICUgKHRlc3RyZWNpcGUsIG9zLnBhdGguam9pbih0ZW1wZGlyLCB0ZXN0cmVjaXBlKSkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdFUlJPUjogJywgcmVzdWx0Lm91dHB1dCwgJ0VSUk9SIGluIGRldnRvb2wgbW9kaWZ5IG91dHB1dDogJXMnICUgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBidWlsZCAlcycgJSB0ZXN0cmVjaXBlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbignRVJST1I6ICcsIHJlc3VsdC5vdXRwdXQsICdFUlJPUiBpbiBkZXZ0b29sIGJ1aWxkIG91dHB1dDogJXMnICUgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCByZXNldCAlcycgJSB0ZXN0cmVjaXBlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbignRVJST1I6ICcsIHJlc3VsdC5vdXRwdXQsICdFUlJPUiBpbiBkZXZ0b29sIHJlc2V0IG91dHB1dDogJXMnICUgcmVzdWx0Lm91dHB1dCkKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUoYmJjbGFzc2V4dGVuZGVkLCAnTm9uZSBvZiB0aGVzZSByZWNpcGVzIGFyZSBCQkNMQVNTRVhURU5EZWQgdG8gbmF0aXZlIC0gbmVlZCB0byBhZGp1c3QgdGVzdHJlY2lwZXMgbGlzdDogJXMnICUgJywgJy5qb2luKHRlc3RyZWNpcGVzKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluaGVyaXRuYXRpdmUsICdOb25lIG9mIHRoZXNlIHJlY2lwZXMgZG8gImluaGVyaXQgbmF0aXZlIiAtIG5lZWQgdG8gYWRqdXN0IHRlc3RyZWNpcGVzIGxpc3Q6ICVzJyAlICcsICcuam9pbih0ZXN0cmVjaXBlcykpCi0KLQotICAgIEB0ZXN0Y2FzZSgxMTY1KQotICAgIGRlZiB0ZXN0X2RldnRvb2xfbW9kaWZ5X2dpdChzZWxmKToKLSAgICAgICAgIyBDaGVjayBwcmVjb25kaXRpb25zCi0gICAgICAgIHRlc3RyZWNpcGUgPSAnbWtlbGZpbWFnZScKLSAgICAgICAgc3JjX3VyaSA9IGdldF9iYl92YXIoJ1NSQ19VUkknLCB0ZXN0cmVjaXBlKQotICAgICAgICBzZWxmLmFzc2VydEluKCdnaXQ6Ly8nLCBzcmNfdXJpLCAnVGhpcyB0ZXN0IGV4cGVjdHMgdGhlICVzIHJlY2lwZSB0byBiZSBhIGdpdCByZWNpcGUnICUgdGVzdHJlY2lwZSkKLSAgICAgICAgIyBDbGVhbiB1cCBhbnl0aGluZyBpbiB0aGUgd29ya2Rpci9zeXNyb290L3NzdGF0ZSBjYWNoZQotICAgICAgICBiaXRiYWtlKCclcyAtYyBjbGVhbnNzdGF0ZScgJSB0ZXN0cmVjaXBlKQotICAgICAgICAjIFRyeSBtb2RpZnlpbmcgYSByZWNpcGUKLSAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UgLWMgY2xlYW4gJXMnICUgdGVzdHJlY2lwZSkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIG1vZGlmeSAlcyAteCAlcycgJSAodGVzdHJlY2lwZSwgdGVtcGRpcikpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4odGVtcGRpciwgJ01ha2VmaWxlJykpLCAnRXh0cmFjdGVkIHNvdXJjZSBjb3VsZCBub3QgYmUgZm91bmQnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnY29uZicsICdsYXllci5jb25mJykpLCAnV29ya3NwYWNlIGRpcmVjdG9yeSBub3QgY3JlYXRlZC4gZGV2dG9vbCBvdXRwdXQ6ICVzJyAlIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIG1hdGNoZXMgPSBnbG9iLmdsb2Iob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnYXBwZW5kcycsICdta2VsZmltYWdlXyouYmJhcHBlbmQnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGNoZXMsICdiYmFwcGVuZCBub3QgY3JlYXRlZCcpCi0gICAgICAgICMgVGVzdCBkZXZ0b29sIHN0YXR1cwotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbih0ZXN0cmVjaXBlLCByZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKHRlbXBkaXIsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgICMgQ2hlY2sgZ2l0IHJlcG8KLSAgICAgICAgc2VsZi5fY2hlY2tfc3JjX3JlcG8odGVtcGRpcikKLSAgICAgICAgIyBUcnkgYnVpbGRpbmcKLSAgICAgICAgYml0YmFrZSh0ZXN0cmVjaXBlKQotCi0gICAgQHRlc3RjYXNlKDExNjcpCi0gICAgZGVmIHRlc3RfZGV2dG9vbF9tb2RpZnlfbG9jYWxmaWxlcyhzZWxmKToKLSAgICAgICAgIyBDaGVjayBwcmVjb25kaXRpb25zCi0gICAgICAgIHRlc3RyZWNpcGUgPSAnbGlnaHR0cGQnCi0gICAgICAgIHNyY191cmkgPSAoZ2V0X2JiX3ZhcignU1JDX1VSSScsIHRlc3RyZWNpcGUpIG9yICcnKS5zcGxpdCgpCi0gICAgICAgIGZvdW5kbG9jYWwgPSBGYWxzZQotICAgICAgICBmb3IgaXRlbSBpbiBzcmNfdXJpOgotICAgICAgICAgICAgaWYgaXRlbS5zdGFydHN3aXRoKCdmaWxlOi8vJykgYW5kICcucGF0Y2gnIG5vdCBpbiBpdGVtOgotICAgICAgICAgICAgICAgIGZvdW5kbG9jYWwgPSBUcnVlCi0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZvdW5kbG9jYWwsICdUaGlzIHRlc3QgZXhwZWN0cyB0aGUgJXMgcmVjaXBlIHRvIGZldGNoIGxvY2FsIGZpbGVzIGFuZCBpdCBzZWVtcyB0aGF0IGl0IG5vIGxvbmdlciBkb2VzJyAlIHRlc3RyZWNpcGUpCi0gICAgICAgICMgQ2xlYW4gdXAgYW55dGhpbmcgaW4gdGhlIHdvcmtkaXIvc3lzcm9vdC9zc3RhdGUgY2FjaGUKLSAgICAgICAgYml0YmFrZSgnJXMgLWMgY2xlYW5zc3RhdGUnICUgdGVzdHJlY2lwZSkKLSAgICAgICAgIyBUcnkgbW9kaWZ5aW5nIGEgcmVjaXBlCi0gICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlIC1jIGNsZWFuICVzJyAlIHRlc3RyZWNpcGUpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBtb2RpZnkgJXMgLXggJXMnICUgKHRlc3RyZWNpcGUsIHRlbXBkaXIpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHRlbXBkaXIsICdjb25maWd1cmUuYWMnKSksICdFeHRyYWN0ZWQgc291cmNlIGNvdWxkIG5vdCBiZSBmb3VuZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdjb25mJywgJ2xheWVyLmNvbmYnKSksICdXb3Jrc3BhY2UgZGlyZWN0b3J5IG5vdCBjcmVhdGVkJykKLSAgICAgICAgbWF0Y2hlcyA9IGdsb2IuZ2xvYihvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdhcHBlbmRzJywgJyVzXyouYmJhcHBlbmQnICUgdGVzdHJlY2lwZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRjaGVzLCAnYmJhcHBlbmQgbm90IGNyZWF0ZWQnKQotICAgICAgICAjIFRlc3QgZGV2dG9vbCBzdGF0dXMKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4odGVzdHJlY2lwZSwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbih0ZW1wZGlyLCByZXN1bHQub3V0cHV0KQotICAgICAgICAjIFRyeSBidWlsZGluZwotICAgICAgICBiaXRiYWtlKHRlc3RyZWNpcGUpCi0KLSAgICBAdGVzdGNhc2UoMTM3OCkKLSAgICBkZWYgdGVzdF9kZXZ0b29sX21vZGlmeV92aXJ0dWFsKHNlbGYpOgotICAgICAgICAjIFRyeSBtb2RpZnlpbmcgYSB2aXJ0dWFsIHJlY2lwZQotICAgICAgICB2aXJ0cmVjaXBlID0gJ3ZpcnR1YWwvbWFrZScKLSAgICAgICAgcmVhbHJlY2lwZSA9ICdtYWtlJwotICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIG1vZGlmeSAlcyAteCAlcycgJSAodmlydHJlY2lwZSwgdGVtcGRpcikpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4odGVtcGRpciwgJ01ha2VmaWxlLmFtJykpLCAnRXh0cmFjdGVkIHNvdXJjZSBjb3VsZCBub3QgYmUgZm91bmQnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnY29uZicsICdsYXllci5jb25mJykpLCAnV29ya3NwYWNlIGRpcmVjdG9yeSBub3QgY3JlYXRlZCcpCi0gICAgICAgIG1hdGNoZXMgPSBnbG9iLmdsb2Iob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnYXBwZW5kcycsICclc18qLmJiYXBwZW5kJyAlIHJlYWxyZWNpcGUpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0Y2hlcywgJ2JiYXBwZW5kIG5vdCBjcmVhdGVkICVzJyAlIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgICMgVGVzdCBkZXZ0b29sIHN0YXR1cwotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbih2aXJ0cmVjaXBlLCByZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKHJlYWxyZWNpcGUsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgICMgQ2hlY2sgZ2l0IHJlcG8KLSAgICAgICAgc2VsZi5fY2hlY2tfc3JjX3JlcG8odGVtcGRpcikKLSAgICAgICAgIyBUaGlzIGlzIHByb2JhYmx5IHN1ZmZpY2llbnQKLQotCi0gICAgQHRlc3RjYXNlKDExNjkpCi0gICAgZGVmIHRlc3RfZGV2dG9vbF91cGRhdGVfcmVjaXBlKHNlbGYpOgotICAgICAgICAjIENoZWNrIHByZWNvbmRpdGlvbnMKLSAgICAgICAgdGVzdHJlY2lwZSA9ICdtaW5pY29tJwotICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydGSUxFJywgJ1NSQ19VUkknXSwgdGVzdHJlY2lwZSkKLSAgICAgICAgcmVjaXBlZmlsZSA9IGJiX3ZhcnNbJ0ZJTEUnXQotICAgICAgICBzcmNfdXJpID0gYmJfdmFyc1snU1JDX1VSSSddCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ2dpdDovLycsIHNyY191cmksICdUaGlzIHRlc3QgZXhwZWN0cyB0aGUgJXMgcmVjaXBlIHRvIE5PVCBiZSBhIGdpdCByZWNpcGUnICUgdGVzdHJlY2lwZSkKLSAgICAgICAgc2VsZi5fY2hlY2tfcmVwb19zdGF0dXMob3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLCBbXSkKLSAgICAgICAgIyBGaXJzdCwgbW9kaWZ5IGEgcmVjaXBlCi0gICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQotICAgICAgICAjIChkb24ndCBib3RoZXIgd2l0aCBjbGVhbmluZyB0aGUgcmVjaXBlIG9uIHRlYXJkb3duLCB3ZSB3b24ndCBiZSBidWlsZGluZyBpdCkKLSAgICAgICAgIyBXZSBkb24ndCB1c2UgLXggaGVyZSBzbyB0aGF0IHdlIHRlc3QgdGhlIGJlaGF2aW91ciBvZiBkZXZ0b29sIG1vZGlmeSB3aXRob3V0IGl0Ci0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBtb2RpZnkgJXMgJXMnICUgKHRlc3RyZWNpcGUsIHRlbXBkaXIpKQotICAgICAgICAjIENoZWNrIGdpdCByZXBvCi0gICAgICAgIHNlbGYuX2NoZWNrX3NyY19yZXBvKHRlbXBkaXIpCi0gICAgICAgICMgQWRkIGEgY291cGxlIG9mIGNvbW1pdHMKLSAgICAgICAgIyBGSVhNRTogdGhpcyBvbmx5IHRlc3RzIGFkZGluZywgbmVlZCB0byBhbHNvIHRlc3QgdXBkYXRlIGFuZCByZW1vdmUKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdlY2hvICJBZGRpdGlvbmFsIGxpbmUiID4+IFJFQURNRScsIGN3ZD10ZW1wZGlyKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBjb21taXQgLWEgLW0gIkNoYW5nZSB0aGUgUkVBRE1FIicsIGN3ZD10ZW1wZGlyKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2VjaG8gIkEgbmV3IGZpbGUiID4gZGV2dG9vbC1uZXctZmlsZScsIGN3ZD10ZW1wZGlyKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBhZGQgZGV2dG9vbC1uZXctZmlsZScsIGN3ZD10ZW1wZGlyKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBjb21taXQgLW0gIkFkZCBhIG5ldyBmaWxlIicsIGN3ZD10ZW1wZGlyKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdjZCAlczsgcm0gJXMvKi5wYXRjaDsgZ2l0IGNoZWNrb3V0ICVzICVzJyAlIChvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIHRlc3RyZWNpcGUsIHRlc3RyZWNpcGUsIG9zLnBhdGguYmFzZW5hbWUocmVjaXBlZmlsZSkpKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgdXBkYXRlLXJlY2lwZSAlcycgJSB0ZXN0cmVjaXBlKQotICAgICAgICBleHBlY3RlZF9zdGF0dXMgPSBbKCcgTScsICcuKi8lcyQnICUgb3MucGF0aC5iYXNlbmFtZShyZWNpcGVmaWxlKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAoJz8/JywgJy4qLzAwMDEtQ2hhbmdlLXRoZS1SRUFETUUucGF0Y2gkJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAoJz8/JywgJy4qLzAwMDItQWRkLWEtbmV3LWZpbGUucGF0Y2gkJyldCi0gICAgICAgIHNlbGYuX2NoZWNrX3JlcG9fc3RhdHVzKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSwgZXhwZWN0ZWRfc3RhdHVzKQotCi0gICAgQHRlc3RjYXNlKDExNzIpCi0gICAgZGVmIHRlc3RfZGV2dG9vbF91cGRhdGVfcmVjaXBlX2dpdChzZWxmKToKLSAgICAgICAgIyBDaGVjayBwcmVjb25kaXRpb25zCi0gICAgICAgIHRlc3RyZWNpcGUgPSAnbXRkLXV0aWxzJwotICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydGSUxFJywgJ1NSQ19VUkknXSwgdGVzdHJlY2lwZSkKLSAgICAgICAgcmVjaXBlZmlsZSA9IGJiX3ZhcnNbJ0ZJTEUnXQotICAgICAgICBzcmNfdXJpID0gYmJfdmFyc1snU1JDX1VSSSddCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2dpdDovLycsIHNyY191cmksICdUaGlzIHRlc3QgZXhwZWN0cyB0aGUgJXMgcmVjaXBlIHRvIGJlIGEgZ2l0IHJlY2lwZScgJSB0ZXN0cmVjaXBlKQotICAgICAgICBwYXRjaGVzID0gW10KLSAgICAgICAgZm9yIGVudHJ5IGluIHNyY191cmkuc3BsaXQoKToKLSAgICAgICAgICAgIGlmIGVudHJ5LnN0YXJ0c3dpdGgoJ2ZpbGU6Ly8nKSBhbmQgZW50cnkuZW5kc3dpdGgoJy5wYXRjaCcpOgotICAgICAgICAgICAgICAgIHBhdGNoZXMuYXBwZW5kKGVudHJ5Wzc6XS5zcGxpdCgnOycpWzBdKQotICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIobGVuKHBhdGNoZXMpLCAwLCAnVGhlICVzIHJlY2lwZSBkb2VzIG5vdCBhcHBlYXIgdG8gY29udGFpbiBhbnkgcGF0Y2hlcywgc28gdGhpcyB0ZXN0IHdpbGwgbm90IGJlIGVmZmVjdGl2ZScgJSB0ZXN0cmVjaXBlKQotICAgICAgICBzZWxmLl9jaGVja19yZXBvX3N0YXR1cyhvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIFtdKQotICAgICAgICAjIEZpcnN0LCBtb2RpZnkgYSByZWNpcGUKLSAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCi0gICAgICAgICMgKGRvbid0IGJvdGhlciB3aXRoIGNsZWFuaW5nIHRoZSByZWNpcGUgb24gdGVhcmRvd24sIHdlIHdvbid0IGJlIGJ1aWxkaW5nIGl0KQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgbW9kaWZ5ICVzIC14ICVzJyAlICh0ZXN0cmVjaXBlLCB0ZW1wZGlyKSkKLSAgICAgICAgIyBDaGVjayBnaXQgcmVwbwotICAgICAgICBzZWxmLl9jaGVja19zcmNfcmVwbyh0ZW1wZGlyKQotICAgICAgICAjIEFkZCBhIGNvdXBsZSBvZiBjb21taXRzCi0gICAgICAgICMgRklYTUU6IHRoaXMgb25seSB0ZXN0cyBhZGRpbmcsIG5lZWQgdG8gYWxzbyB0ZXN0IHVwZGF0ZSBhbmQgcmVtb3ZlCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZWNobyAiIyBBZGRpdGlvbmFsIGxpbmUiID4+IE1ha2VmaWxlLmFtJywgY3dkPXRlbXBkaXIpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IGNvbW1pdCAtYSAtbSAiQ2hhbmdlIHRoZSBNYWtlZmlsZSInLCBjd2Q9dGVtcGRpcikKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdlY2hvICJBIG5ldyBmaWxlIiA+IGRldnRvb2wtbmV3LWZpbGUnLCBjd2Q9dGVtcGRpcikKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgYWRkIGRldnRvb2wtbmV3LWZpbGUnLCBjd2Q9dGVtcGRpcikKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgY29tbWl0IC1tICJBZGQgYSBuZXcgZmlsZSInLCBjd2Q9dGVtcGRpcikKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignY2QgJXM7IHJtIC1yZiAlczsgZ2l0IGNoZWNrb3V0ICVzICVzJyAlIChvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIHRlc3RyZWNpcGUsIHRlc3RyZWNpcGUsIG9zLnBhdGguYmFzZW5hbWUocmVjaXBlZmlsZSkpKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgdXBkYXRlLXJlY2lwZSAtbSBzcmNyZXYgJXMnICUgdGVzdHJlY2lwZSkKLSAgICAgICAgZXhwZWN0ZWRfc3RhdHVzID0gWygnIE0nLCAnLiovJXMkJyAlIG9zLnBhdGguYmFzZW5hbWUocmVjaXBlZmlsZSkpXSArIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgWygnIEQnLCAnLiovJXMkJyAlIHBhdGNoKSBmb3IgcGF0Y2ggaW4gcGF0Y2hlc10KLSAgICAgICAgc2VsZi5fY2hlY2tfcmVwb19zdGF0dXMob3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLCBleHBlY3RlZF9zdGF0dXMpCi0KLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgZGlmZiAlcycgJSBvcy5wYXRoLmJhc2VuYW1lKHJlY2lwZWZpbGUpLCBjd2Q9b3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpKQotICAgICAgICBhZGRsaW5lcyA9IFsnU1JDUkVWID0gIi4qIicsICdTUkNfVVJJID0gImdpdDovL2dpdC5pbmZyYWRlYWQub3JnL210ZC11dGlscy5naXQiJ10KLSAgICAgICAgc3JjdXJpbGluZXMgPSBzcmNfdXJpLnNwbGl0KCkKLSAgICAgICAgc3JjdXJpbGluZXNbMF0gPSAnU1JDX1VSSSA9ICInICsgc3JjdXJpbGluZXNbMF0KLSAgICAgICAgc3JjdXJpbGluZXMuYXBwZW5kKCciJykKLSAgICAgICAgcmVtb3ZlbGluZXMgPSBbJ1NSQ1JFViA9ICIuKiInXSArIHNyY3VyaWxpbmVzCi0gICAgICAgIGZvciBsaW5lIGluIHJlc3VsdC5vdXRwdXQuc3BsaXRsaW5lcygpOgotICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCcrKysnKSBvciBsaW5lLnN0YXJ0c3dpdGgoJy0tLScpOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBlbGlmIGxpbmUuc3RhcnRzd2l0aCgnKycpOgotICAgICAgICAgICAgICAgIG1hdGNoZWQgPSBGYWxzZQotICAgICAgICAgICAgICAgIGZvciBpdGVtIGluIGFkZGxpbmVzOgotICAgICAgICAgICAgICAgICAgICBpZiByZS5tYXRjaChpdGVtLCBsaW5lWzE6XS5zdHJpcCgpKToKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWQgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRjaGVkLCAnVW5leHBlY3RlZCBkaWZmIGFkZCBsaW5lOiAlcycgJSBsaW5lKQotICAgICAgICAgICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoJy0nKToKLSAgICAgICAgICAgICAgICBtYXRjaGVkID0gRmFsc2UKLSAgICAgICAgICAgICAgICBmb3IgaXRlbSBpbiByZW1vdmVsaW5lczoKLSAgICAgICAgICAgICAgICAgICAgaWYgcmUubWF0Y2goaXRlbSwgbGluZVsxOl0uc3RyaXAoKSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaGVkID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0Y2hlZCwgJ1VuZXhwZWN0ZWQgZGlmZiByZW1vdmUgbGluZTogJXMnICUgbGluZSkKLSAgICAgICAgIyBOb3cgdHJ5IHdpdGggYXV0byBtb2RlCi0gICAgICAgIHJ1bkNtZCgnY2QgJXM7IGdpdCBjaGVja291dCAlcyAlcycgJSAob3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLCB0ZXN0cmVjaXBlLCBvcy5wYXRoLmJhc2VuYW1lKHJlY2lwZWZpbGUpKSkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHVwZGF0ZS1yZWNpcGUgJXMnICUgdGVzdHJlY2lwZSkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgcmV2LXBhcnNlIC0tc2hvdy10b3BsZXZlbCcsIGN3ZD1vcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSkpCi0gICAgICAgIHRvcGxldmVsZGlyID0gcmVzdWx0Lm91dHB1dC5zdHJpcCgpCi0gICAgICAgIHJlbHBhdGNocGF0aCA9IG9zLnBhdGguam9pbihvcy5wYXRoLnJlbHBhdGgob3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLCB0b3BsZXZlbGRpciksIHRlc3RyZWNpcGUpCi0gICAgICAgIGV4cGVjdGVkX3N0YXR1cyA9IFsoJyBNJywgb3MucGF0aC5yZWxwYXRoKHJlY2lwZWZpbGUsIHRvcGxldmVsZGlyKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAoJz8/JywgJyVzLzAwMDEtQ2hhbmdlLXRoZS1NYWtlZmlsZS5wYXRjaCcgJSByZWxwYXRjaHBhdGgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgKCc/PycsICclcy8wMDAyLUFkZC1hLW5ldy1maWxlLnBhdGNoJyAlIHJlbHBhdGNocGF0aCldCi0gICAgICAgIHNlbGYuX2NoZWNrX3JlcG9fc3RhdHVzKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSwgZXhwZWN0ZWRfc3RhdHVzKQotCi0gICAgQHRlc3RjYXNlKDExNzApCi0gICAgZGVmIHRlc3RfZGV2dG9vbF91cGRhdGVfcmVjaXBlX2FwcGVuZChzZWxmKToKLSAgICAgICAgIyBDaGVjayBwcmVjb25kaXRpb25zCi0gICAgICAgIHRlc3RyZWNpcGUgPSAnbWRhZG0nCi0gICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ0ZJTEUnLCAnU1JDX1VSSSddLCB0ZXN0cmVjaXBlKQotICAgICAgICByZWNpcGVmaWxlID0gYmJfdmFyc1snRklMRSddCi0gICAgICAgIHNyY191cmkgPSBiYl92YXJzWydTUkNfVVJJJ10KLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbignZ2l0Oi8vJywgc3JjX3VyaSwgJ1RoaXMgdGVzdCBleHBlY3RzIHRoZSAlcyByZWNpcGUgdG8gTk9UIGJlIGEgZ2l0IHJlY2lwZScgJSB0ZXN0cmVjaXBlKQotICAgICAgICBzZWxmLl9jaGVja19yZXBvX3N0YXR1cyhvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIFtdKQotICAgICAgICAjIEZpcnN0LCBtb2RpZnkgYSByZWNpcGUKLSAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQotICAgICAgICB0ZW1wc3JjZGlyID0gb3MucGF0aC5qb2luKHRlbXBkaXIsICdzb3VyY2UnKQotICAgICAgICB0ZW1wbGF5ZXJkaXIgPSBvcy5wYXRoLmpvaW4odGVtcGRpciwgJ2xheWVyJykKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQotICAgICAgICAjIChkb24ndCBib3RoZXIgd2l0aCBjbGVhbmluZyB0aGUgcmVjaXBlIG9uIHRlYXJkb3duLCB3ZSB3b24ndCBiZSBidWlsZGluZyBpdCkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIG1vZGlmeSAlcyAteCAlcycgJSAodGVzdHJlY2lwZSwgdGVtcHNyY2RpcikpCi0gICAgICAgICMgQ2hlY2sgZ2l0IHJlcG8KLSAgICAgICAgc2VsZi5fY2hlY2tfc3JjX3JlcG8odGVtcHNyY2RpcikKLSAgICAgICAgIyBBZGQgYSBjb21taXQKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJzZWQgJ3MhXFwoI2RlZmluZSBWRVJTSU9OXFxXKlwiW15cIl0qXFwpXCIhXFwxLWN1c3RvbVwiIScgLWkgUmVhZE1lLmMiLCBjd2Q9dGVtcHNyY2RpcikKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgY29tbWl0IC1hIC1tICJBZGQgb3VyIGN1c3RvbSB2ZXJzaW9uIicsIGN3ZD10ZW1wc3JjZGlyKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdjZCAlczsgcm0gLWYgJXMvKi5wYXRjaDsgZ2l0IGNoZWNrb3V0IC4nICUgKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSwgdGVzdHJlY2lwZSkpCi0gICAgICAgICMgQ3JlYXRlIGEgdGVtcG9yYXJ5IGxheWVyIGFuZCBhZGQgaXQgdG8gYmJsYXllcnMuY29uZgotICAgICAgICBzZWxmLl9jcmVhdGVfdGVtcF9sYXllcih0ZW1wbGF5ZXJkaXIsIFRydWUsICdzZWxmdGVzdHVwZGF0ZXJlY2lwZScpCi0gICAgICAgICMgQ3JlYXRlIHRoZSBiYmFwcGVuZAotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgdXBkYXRlLXJlY2lwZSAlcyAtYSAlcycgJSAodGVzdHJlY2lwZSwgdGVtcGxheWVyZGlyKSkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbignV0FSTklORzonLCByZXN1bHQub3V0cHV0KQotICAgICAgICAjIENoZWNrIHJlY2lwZSBpcyBzdGlsbCBjbGVhbgotICAgICAgICBzZWxmLl9jaGVja19yZXBvX3N0YXR1cyhvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIFtdKQotICAgICAgICAjIENoZWNrIGJiYXBwZW5kIHdhcyBjcmVhdGVkCi0gICAgICAgIHNwbGl0cGF0aCA9IG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKS5zcGxpdChvcy5zZXApCi0gICAgICAgIGFwcGVuZGRpciA9IG9zLnBhdGguam9pbih0ZW1wbGF5ZXJkaXIsIHNwbGl0cGF0aFstMl0sIHNwbGl0cGF0aFstMV0pCi0gICAgICAgIGJiYXBwZW5kZmlsZSA9IHNlbGYuX2NoZWNrX2JiYXBwZW5kKHRlc3RyZWNpcGUsIHJlY2lwZWZpbGUsIGFwcGVuZGRpcikKLSAgICAgICAgcGF0Y2hmaWxlID0gb3MucGF0aC5qb2luKGFwcGVuZGRpciwgdGVzdHJlY2lwZSwgJzAwMDEtQWRkLW91ci1jdXN0b20tdmVyc2lvbi5wYXRjaCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhwYXRjaGZpbGUpLCAnUGF0Y2ggZmlsZSBub3QgY3JlYXRlZCcpCi0KLSAgICAgICAgIyBDaGVjayBiYmFwcGVuZCBjb250ZW50cwotICAgICAgICBleHBlY3RlZGxpbmVzID0gWydGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLUFkZC1vdXItY3VzdG9tLXZlcnNpb24ucGF0Y2giXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdcbiddCi0gICAgICAgIHdpdGggb3BlbihiYmFwcGVuZGZpbGUsICdyJykgYXMgZjoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRsaW5lcywgZi5yZWFkbGluZXMoKSkKLQotICAgICAgICAjIENoZWNrIHdlIGNhbiBydW4gaXQgYWdhaW4gYW5kIGJiYXBwZW5kIGlzbid0IG1vZGlmaWVkCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCB1cGRhdGUtcmVjaXBlICVzIC1hICVzJyAlICh0ZXN0cmVjaXBlLCB0ZW1wbGF5ZXJkaXIpKQotICAgICAgICB3aXRoIG9wZW4oYmJhcHBlbmRmaWxlLCAncicpIGFzIGY6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkbGluZXMsIGYucmVhZGxpbmVzKCkpCi0gICAgICAgICMgRHJvcCBuZXcgY29tbWl0IGFuZCBjaGVjayBwYXRjaCBnZXRzIGRlbGV0ZWQKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgcmVzZXQgSEVBRF4nLCBjd2Q9dGVtcHNyY2RpcikKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHVwZGF0ZS1yZWNpcGUgJXMgLWEgJXMnICUgKHRlc3RyZWNpcGUsIHRlbXBsYXllcmRpcikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMocGF0Y2hmaWxlKSwgJ1BhdGNoIGZpbGUgbm90IGRlbGV0ZWQnKQotICAgICAgICBleHBlY3RlZGxpbmVzMiA9IFsnRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IlxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nXQotICAgICAgICB3aXRoIG9wZW4oYmJhcHBlbmRmaWxlLCAncicpIGFzIGY6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkbGluZXMyLCBmLnJlYWRsaW5lcygpKQotICAgICAgICAjIFB1dCBjb21taXQgYmFjayBhbmQgY2hlY2sgd2UgY2FuIHJ1biBpdCBpZiBsYXllciBpc24ndCBpbiBiYmxheWVycy5jb25mCi0gICAgICAgIG9zLnJlbW92ZShiYmFwcGVuZGZpbGUpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IGNvbW1pdCAtYSAtbSAiQWRkIG91ciBjdXN0b20gdmVyc2lvbiInLCBjd2Q9dGVtcHNyY2RpcikKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgJXMnICUgdGVtcGxheWVyZGlyLCBjd2Q9c2VsZi5idWlsZGRpcikKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHVwZGF0ZS1yZWNpcGUgJXMgLWEgJXMnICUgKHRlc3RyZWNpcGUsIHRlbXBsYXllcmRpcikpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ1dBUk5JTkc6IFNwZWNpZmllZCBsYXllciBpcyBub3QgY3VycmVudGx5IGVuYWJsZWQgaW4gYmJsYXllcnMuY29uZicsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhwYXRjaGZpbGUpLCAnUGF0Y2ggZmlsZSBub3QgY3JlYXRlZCAod2l0aCBkaXNhYmxlZCBsYXllciknKQotICAgICAgICB3aXRoIG9wZW4oYmJhcHBlbmRmaWxlLCAncicpIGFzIGY6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkbGluZXMsIGYucmVhZGxpbmVzKCkpCi0gICAgICAgICMgRGVsZXRpbmcgaXNuJ3QgZXhwZWN0ZWQgdG8gd29yayB1bmRlciB0aGVzZSBjaXJjdW1zdGFuY2VzCi0KLSAgICBAdGVzdGNhc2UoMTE3MSkKLSAgICBkZWYgdGVzdF9kZXZ0b29sX3VwZGF0ZV9yZWNpcGVfYXBwZW5kX2dpdChzZWxmKToKLSAgICAgICAgIyBDaGVjayBwcmVjb25kaXRpb25zCi0gICAgICAgIHRlc3RyZWNpcGUgPSAnbXRkLXV0aWxzJwotICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydGSUxFJywgJ1NSQ19VUkknXSwgdGVzdHJlY2lwZSkKLSAgICAgICAgcmVjaXBlZmlsZSA9IGJiX3ZhcnNbJ0ZJTEUnXQotICAgICAgICBzcmNfdXJpID0gYmJfdmFyc1snU1JDX1VSSSddCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2dpdDovLycsIHNyY191cmksICdUaGlzIHRlc3QgZXhwZWN0cyB0aGUgJXMgcmVjaXBlIHRvIGJlIGEgZ2l0IHJlY2lwZScgJSB0ZXN0cmVjaXBlKQotICAgICAgICBmb3IgZW50cnkgaW4gc3JjX3VyaS5zcGxpdCgpOgotICAgICAgICAgICAgaWYgZW50cnkuc3RhcnRzd2l0aCgnZ2l0Oi8vJyk6Ci0gICAgICAgICAgICAgICAgZ2l0X3VyaSA9IGVudHJ5Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgc2VsZi5fY2hlY2tfcmVwb19zdGF0dXMob3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLCBbXSkKLSAgICAgICAgIyBGaXJzdCwgbW9kaWZ5IGEgcmVjaXBlCi0gICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKLSAgICAgICAgdGVtcHNyY2RpciA9IG9zLnBhdGguam9pbih0ZW1wZGlyLCAnc291cmNlJykKLSAgICAgICAgdGVtcGxheWVyZGlyID0gb3MucGF0aC5qb2luKHRlbXBkaXIsICdsYXllcicpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKLSAgICAgICAgIyAoZG9uJ3QgYm90aGVyIHdpdGggY2xlYW5pbmcgdGhlIHJlY2lwZSBvbiB0ZWFyZG93biwgd2Ugd29uJ3QgYmUgYnVpbGRpbmcgaXQpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBtb2RpZnkgJXMgLXggJXMnICUgKHRlc3RyZWNpcGUsIHRlbXBzcmNkaXIpKQotICAgICAgICAjIENoZWNrIGdpdCByZXBvCi0gICAgICAgIHNlbGYuX2NoZWNrX3NyY19yZXBvKHRlbXBzcmNkaXIpCi0gICAgICAgICMgQWRkIGEgY29tbWl0Ci0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZWNobyAiIyBBZGRpdGlvbmFsIGxpbmUiID4+IE1ha2VmaWxlLmFtJywgY3dkPXRlbXBzcmNkaXIpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IGNvbW1pdCAtYSAtbSAiQ2hhbmdlIHRoZSBNYWtlZmlsZSInLCBjd2Q9dGVtcHNyY2RpcikKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignY2QgJXM7IHJtIC1mICVzLyoucGF0Y2g7IGdpdCBjaGVja291dCAuJyAlIChvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIHRlc3RyZWNpcGUpKQotICAgICAgICAjIENyZWF0ZSBhIHRlbXBvcmFyeSBsYXllcgotICAgICAgICBvcy5tYWtlZGlycyhvcy5wYXRoLmpvaW4odGVtcGxheWVyZGlyLCAnY29uZicpKQotICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHRlbXBsYXllcmRpciwgJ2NvbmYnLCAnbGF5ZXIuY29uZicpLCAndycpIGFzIGY6Ci0gICAgICAgICAgICBmLndyaXRlKCdCQlBBVEggLj0gIjoke0xBWUVSRElSfSJcbicpCi0gICAgICAgICAgICBmLndyaXRlKCdCQkZJTEVTICs9ICIke0xBWUVSRElSfS9yZWNpcGVzLSovKi8qLmJiYXBwZW5kIlxuJykKLSAgICAgICAgICAgIGYud3JpdGUoJ0JCRklMRV9DT0xMRUNUSU9OUyArPSAib2VzZWxmdGVzdHRlbXBsYXllciJcbicpCi0gICAgICAgICAgICBmLndyaXRlKCdCQkZJTEVfUEFUVEVSTl9vZXNlbGZ0ZXN0dGVtcGxheWVyID0gIl4ke0xBWUVSRElSfS8iXG4nKQotICAgICAgICAgICAgZi53cml0ZSgnQkJGSUxFX1BSSU9SSVRZX29lc2VsZnRlc3R0ZW1wbGF5ZXIgPSAiOTk5IlxuJykKLSAgICAgICAgICAgIGYud3JpdGUoJ0JCRklMRV9QQVRURVJOX0lHTk9SRV9FTVBUWV9vZXNlbGZ0ZXN0dGVtcGxheWVyID0gIjEiXG4nKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgJXMgfHwgdHJ1ZScgJSB0ZW1wbGF5ZXJkaXIpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgYWRkLWxheWVyICVzJyAlIHRlbXBsYXllcmRpciwgY3dkPXNlbGYuYnVpbGRkaXIpCi0gICAgICAgICMgQ3JlYXRlIHRoZSBiYmFwcGVuZAotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgdXBkYXRlLXJlY2lwZSAtbSBzcmNyZXYgJXMgLWEgJXMnICUgKHRlc3RyZWNpcGUsIHRlbXBsYXllcmRpcikpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ1dBUk5JTkc6JywgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgIyBDaGVjayByZWNpcGUgaXMgc3RpbGwgY2xlYW4KLSAgICAgICAgc2VsZi5fY2hlY2tfcmVwb19zdGF0dXMob3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLCBbXSkKLSAgICAgICAgIyBDaGVjayBiYmFwcGVuZCB3YXMgY3JlYXRlZAotICAgICAgICBzcGxpdHBhdGggPSBvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSkuc3BsaXQob3Muc2VwKQotICAgICAgICBhcHBlbmRkaXIgPSBvcy5wYXRoLmpvaW4odGVtcGxheWVyZGlyLCBzcGxpdHBhdGhbLTJdLCBzcGxpdHBhdGhbLTFdKQotICAgICAgICBiYmFwcGVuZGZpbGUgPSBzZWxmLl9jaGVja19iYmFwcGVuZCh0ZXN0cmVjaXBlLCByZWNpcGVmaWxlLCBhcHBlbmRkaXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKGFwcGVuZGRpciwgdGVzdHJlY2lwZSkpLCAnUGF0Y2ggZGlyZWN0b3J5IHNob3VsZCBub3QgYmUgY3JlYXRlZCcpCi0KLSAgICAgICAgIyBDaGVjayBiYmFwcGVuZCBjb250ZW50cwotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCByZXYtcGFyc2UgSEVBRCcsIGN3ZD10ZW1wc3JjZGlyKQotICAgICAgICBleHBlY3RlZGxpbmVzID0gc2V0KFsnU1JDUkVWID0gIiVzIlxuJyAlIHJlc3VsdC5vdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdTUkNfVVJJID0gIiVzIlxuJyAlIGdpdF91cmksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcbiddKQotICAgICAgICB3aXRoIG9wZW4oYmJhcHBlbmRmaWxlLCAncicpIGFzIGY6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkbGluZXMsIHNldChmLnJlYWRsaW5lcygpKSkKLQotICAgICAgICAjIENoZWNrIHdlIGNhbiBydW4gaXQgYWdhaW4gYW5kIGJiYXBwZW5kIGlzbid0IG1vZGlmaWVkCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCB1cGRhdGUtcmVjaXBlIC1tIHNyY3JldiAlcyAtYSAlcycgJSAodGVzdHJlY2lwZSwgdGVtcGxheWVyZGlyKSkKLSAgICAgICAgd2l0aCBvcGVuKGJiYXBwZW5kZmlsZSwgJ3InKSBhcyBmOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZGxpbmVzLCBzZXQoZi5yZWFkbGluZXMoKSkpCi0gICAgICAgICMgRHJvcCBuZXcgY29tbWl0IGFuZCBjaGVjayBTUkNSRVYgY2hhbmdlcwotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCByZXNldCBIRUFEXicsIGN3ZD10ZW1wc3JjZGlyKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgdXBkYXRlLXJlY2lwZSAtbSBzcmNyZXYgJXMgLWEgJXMnICUgKHRlc3RyZWNpcGUsIHRlbXBsYXllcmRpcikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKGFwcGVuZGRpciwgdGVzdHJlY2lwZSkpLCAnUGF0Y2ggZGlyZWN0b3J5IHNob3VsZCBub3QgYmUgY3JlYXRlZCcpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IHJldi1wYXJzZSBIRUFEJywgY3dkPXRlbXBzcmNkaXIpCi0gICAgICAgIGV4cGVjdGVkbGluZXMgPSBzZXQoWydTUkNSRVYgPSAiJXMiXG4nICUgcmVzdWx0Lm91dHB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1NSQ19VUkkgPSAiJXMiXG4nICUgZ2l0X3VyaSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJ10pCi0gICAgICAgIHdpdGggb3BlbihiYmFwcGVuZGZpbGUsICdyJykgYXMgZjoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRsaW5lcywgc2V0KGYucmVhZGxpbmVzKCkpKQotICAgICAgICAjIFB1dCBjb21taXQgYmFjayBhbmQgY2hlY2sgd2UgY2FuIHJ1biBpdCBpZiBsYXllciBpc24ndCBpbiBiYmxheWVycy5jb25mCi0gICAgICAgIG9zLnJlbW92ZShiYmFwcGVuZGZpbGUpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IGNvbW1pdCAtYSAtbSAiQ2hhbmdlIHRoZSBNYWtlZmlsZSInLCBjd2Q9dGVtcHNyY2RpcikKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgJXMnICUgdGVtcGxheWVyZGlyLCBjd2Q9c2VsZi5idWlsZGRpcikKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHVwZGF0ZS1yZWNpcGUgLW0gc3JjcmV2ICVzIC1hICVzJyAlICh0ZXN0cmVjaXBlLCB0ZW1wbGF5ZXJkaXIpKQotICAgICAgICBzZWxmLmFzc2VydEluKCdXQVJOSU5HOiBTcGVjaWZpZWQgbGF5ZXIgaXMgbm90IGN1cnJlbnRseSBlbmFibGVkIGluIGJibGF5ZXJzLmNvbmYnLCByZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihhcHBlbmRkaXIsIHRlc3RyZWNpcGUpKSwgJ1BhdGNoIGRpcmVjdG9yeSBzaG91bGQgbm90IGJlIGNyZWF0ZWQnKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCByZXYtcGFyc2UgSEVBRCcsIGN3ZD10ZW1wc3JjZGlyKQotICAgICAgICBleHBlY3RlZGxpbmVzID0gc2V0KFsnU1JDUkVWID0gIiVzIlxuJyAlIHJlc3VsdC5vdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdTUkNfVVJJID0gIiVzIlxuJyAlIGdpdF91cmksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcbiddKQotICAgICAgICB3aXRoIG9wZW4oYmJhcHBlbmRmaWxlLCAncicpIGFzIGY6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkbGluZXMsIHNldChmLnJlYWRsaW5lcygpKSkKLSAgICAgICAgIyBEZWxldGluZyBpc24ndCBleHBlY3RlZCB0byB3b3JrIHVuZGVyIHRoZXNlIGNpcmN1bXN0YW5jZXMKLQotICAgIEB0ZXN0Y2FzZSgxMzcwKQotICAgIGRlZiB0ZXN0X2RldnRvb2xfdXBkYXRlX3JlY2lwZV9sb2NhbF9maWxlcyhzZWxmKToKLSAgICAgICAgIiIiQ2hlY2sgdGhhdCBsb2NhbCBzb3VyY2UgZmlsZXMgYXJlIGNvcGllZCBvdmVyIGluc3RlYWQgb2YgcGF0Y2hlZCIiIgotICAgICAgICB0ZXN0cmVjaXBlID0gJ21ha2VkZXZzJwotICAgICAgICByZWNpcGVmaWxlID0gZ2V0X2JiX3ZhcignRklMRScsIHRlc3RyZWNpcGUpCi0gICAgICAgICMgU2V0dXAgc3JjdHJlZSBmb3IgbW9kaWZ5aW5nIHRoZSByZWNpcGUKLSAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCi0gICAgICAgICMgKGRvbid0IGJvdGhlciB3aXRoIGNsZWFuaW5nIHRoZSByZWNpcGUgb24gdGVhcmRvd24sIHdlIHdvbid0IGJlCi0gICAgICAgICMgYnVpbGRpbmcgaXQpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBtb2RpZnkgJXMgLXggJXMnICUgKHRlc3RyZWNpcGUsIHRlbXBkaXIpKQotICAgICAgICAjIENoZWNrIGdpdCByZXBvCi0gICAgICAgIHNlbGYuX2NoZWNrX3NyY19yZXBvKHRlbXBkaXIpCi0gICAgICAgICMgVHJ5IGJ1aWxkaW5nIGp1c3QgdG8gZW5zdXJlIHdlIGhhdmVuJ3QgYnJva2VuIHRoYXQKLSAgICAgICAgYml0YmFrZSgiJXMiICUgdGVzdHJlY2lwZSkKLSAgICAgICAgIyBFZGl0IC8gY29tbWl0IGxvY2FsIHNvdXJjZQotICAgICAgICBydW5DbWQoJ2VjaG8gIi8qIEZvb2JhciAqLyIgPj4gb2UtbG9jYWwtZmlsZXMvbWFrZWRldnMuYycsIGN3ZD10ZW1wZGlyKQotICAgICAgICBydW5DbWQoJ2VjaG8gIkZvbyIgPiBvZS1sb2NhbC1maWxlcy9uZXctbG9jYWwnLCBjd2Q9dGVtcGRpcikKLSAgICAgICAgcnVuQ21kKCdlY2hvICJCYXIiID4gbmV3LWZpbGUnLCBjd2Q9dGVtcGRpcikKLSAgICAgICAgcnVuQ21kKCdnaXQgYWRkIG5ldy1maWxlJywgY3dkPXRlbXBkaXIpCi0gICAgICAgIHJ1bkNtZCgnZ2l0IGNvbW1pdCAtbSAiQWRkIG5ldyBmaWxlIicsIGN3ZD10ZW1wZGlyKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdjZCAlczsgZ2l0IGNsZWFuIC1mZCAuOyBnaXQgY2hlY2tvdXQgLicgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSkKLSAgICAgICAgcnVuQ21kKCdkZXZ0b29sIHVwZGF0ZS1yZWNpcGUgJXMnICUgdGVzdHJlY2lwZSkKLSAgICAgICAgZXhwZWN0ZWRfc3RhdHVzID0gWygnIE0nLCAnLiovJXMkJyAlIG9zLnBhdGguYmFzZW5hbWUocmVjaXBlZmlsZSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgKCcgTScsICcuKi9tYWtlZGV2cy9tYWtlZGV2cy5jJCcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgKCc/PycsICcuKi9tYWtlZGV2cy9uZXctbG9jYWwkJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAoJz8/JywgJy4qL21ha2VkZXZzLzAwMDEtQWRkLW5ldy1maWxlLnBhdGNoJCcpXQotICAgICAgICBzZWxmLl9jaGVja19yZXBvX3N0YXR1cyhvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIGV4cGVjdGVkX3N0YXR1cykKLQotICAgIEB0ZXN0Y2FzZSgxMzcxKQotICAgIGRlZiB0ZXN0X2RldnRvb2xfdXBkYXRlX3JlY2lwZV9sb2NhbF9maWxlc18yKHNlbGYpOgotICAgICAgICAiIiJDaGVjayBsb2NhbCBzb3VyY2UgZmlsZXMgc3VwcG9ydCB3aGVuIG9lLWxvY2FsLWZpbGVzIGlzIGluIEdpdCIiIgotICAgICAgICB0ZXN0cmVjaXBlID0gJ2x6bycKLSAgICAgICAgcmVjaXBlZmlsZSA9IGdldF9iYl92YXIoJ0ZJTEUnLCB0ZXN0cmVjaXBlKQotICAgICAgICAjIFNldHVwIHNyY3RyZWUgZm9yIG1vZGlmeWluZyB0aGUgcmVjaXBlCi0gICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgbW9kaWZ5ICVzIC14ICVzJyAlICh0ZXN0cmVjaXBlLCB0ZW1wZGlyKSkKLSAgICAgICAgIyBDaGVjayBnaXQgcmVwbwotICAgICAgICBzZWxmLl9jaGVja19zcmNfcmVwbyh0ZW1wZGlyKQotICAgICAgICAjIEFkZCBvZS1sb2NhbC1maWxlcyB0byBHaXQKLSAgICAgICAgcnVuQ21kKCdybSBvZS1sb2NhbC1maWxlcy8uZ2l0aWdub3JlJywgY3dkPXRlbXBkaXIpCi0gICAgICAgIHJ1bkNtZCgnZ2l0IGFkZCBvZS1sb2NhbC1maWxlcycsIGN3ZD10ZW1wZGlyKQotICAgICAgICBydW5DbWQoJ2dpdCBjb21taXQgLW0gIkFkZCBsb2NhbCBzb3VyY2VzIicsIGN3ZD10ZW1wZGlyKQotICAgICAgICAjIEVkaXQgLyBjb21taXQgbG9jYWwgc291cmNlcwotICAgICAgICBydW5DbWQoJ2VjaG8gIiMgRm9vYmFyIiA+PiBvZS1sb2NhbC1maWxlcy9hY2luY2x1ZGUubTQnLCBjd2Q9dGVtcGRpcikKLSAgICAgICAgcnVuQ21kKCdnaXQgY29tbWl0IC1hbSAiRWRpdCBleGlzdGluZyBmaWxlIicsIGN3ZD10ZW1wZGlyKQotICAgICAgICBydW5DbWQoJ2dpdCBybSBvZS1sb2NhbC1maWxlcy9ydW4tcHRlc3QnLCBjd2Q9dGVtcGRpcikKLSAgICAgICAgcnVuQ21kKCdnaXQgY29tbWl0IC1tIlJlbW92ZSBmaWxlIicsIGN3ZD10ZW1wZGlyKQotICAgICAgICBydW5DbWQoJ2VjaG8gIkZvbyIgPiBvZS1sb2NhbC1maWxlcy9uZXctbG9jYWwnLCBjd2Q9dGVtcGRpcikKLSAgICAgICAgcnVuQ21kKCdnaXQgYWRkIG9lLWxvY2FsLWZpbGVzL25ldy1sb2NhbCcsIGN3ZD10ZW1wZGlyKQotICAgICAgICBydW5DbWQoJ2dpdCBjb21taXQgLW0gIkFkZCBuZXcgbG9jYWwgZmlsZSInLCBjd2Q9dGVtcGRpcikKLSAgICAgICAgcnVuQ21kKCdlY2hvICJHYXIiID4gbmV3LWZpbGUnLCBjd2Q9dGVtcGRpcikKLSAgICAgICAgcnVuQ21kKCdnaXQgYWRkIG5ldy1maWxlJywgY3dkPXRlbXBkaXIpCi0gICAgICAgIHJ1bkNtZCgnZ2l0IGNvbW1pdCAtbSAiQWRkIG5ldyBmaWxlIicsIGN3ZD10ZW1wZGlyKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdjZCAlczsgZ2l0IGNsZWFuIC1mZCAuOyBnaXQgY2hlY2tvdXQgLicgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSkKLSAgICAgICAgIyBDaGVja291dCB1bm1vZGlmaWVkIGZpbGUgdG8gd29ya2luZyBjb3B5IC0+IGRldnRvb2wgc2hvdWxkIHN0aWxsIHBpY2sKLSAgICAgICAgIyB0aGUgbW9kaWZpZWQgdmVyc2lvbiBmcm9tIEhFQUQKLSAgICAgICAgcnVuQ21kKCdnaXQgY2hlY2tvdXQgSEVBRF4gLS0gb2UtbG9jYWwtZmlsZXMvYWNpbmNsdWRlLm00JywgY3dkPXRlbXBkaXIpCi0gICAgICAgIHJ1bkNtZCgnZGV2dG9vbCB1cGRhdGUtcmVjaXBlICVzJyAlIHRlc3RyZWNpcGUpCi0gICAgICAgIGV4cGVjdGVkX3N0YXR1cyA9IFsoJyBNJywgJy4qLyVzJCcgJSBvcy5wYXRoLmJhc2VuYW1lKHJlY2lwZWZpbGUpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICgnIE0nLCAnLiovYWNpbmNsdWRlLm00JCcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgKCcgRCcsICcuKi9ydW4tcHRlc3QkJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAoJz8/JywgJy4qL25ldy1sb2NhbCQnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICgnPz8nLCAnLiovMDAwMS1BZGQtbmV3LWZpbGUucGF0Y2gkJyldCi0gICAgICAgIHNlbGYuX2NoZWNrX3JlcG9fc3RhdHVzKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSwgZXhwZWN0ZWRfc3RhdHVzKQotCi0gICAgZGVmIHRlc3RfZGV2dG9vbF91cGRhdGVfcmVjaXBlX2xvY2FsX2ZpbGVzXzMoc2VsZik6Ci0gICAgICAgICMgRmlyc3QsIG1vZGlmeSB0aGUgcmVjaXBlCi0gICAgICAgIHRlc3RyZWNpcGUgPSAnZGV2dG9vbC10ZXN0LWxvY2Fsb25seScKLSAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnRklMRScsICdTUkNfVVJJJ10sIHRlc3RyZWNpcGUpCi0gICAgICAgIHJlY2lwZWZpbGUgPSBiYl92YXJzWydGSUxFJ10KLSAgICAgICAgc3JjX3VyaSA9IGJiX3ZhcnNbJ1NSQ19VUkknXQotICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKLSAgICAgICAgIyAoZG9uJ3QgYm90aGVyIHdpdGggY2xlYW5pbmcgdGhlIHJlY2lwZSBvbiB0ZWFyZG93biwgd2Ugd29uJ3QgYmUgYnVpbGRpbmcgaXQpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBtb2RpZnkgJXMnICUgdGVzdHJlY2lwZSkKLSAgICAgICAgIyBNb2RpZnkgb25lIGZpbGUKLSAgICAgICAgcnVuQ21kKCdlY2hvICJBbm90aGVyIGxpbmUiID4+IGZpbGUyJywgY3dkPW9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3NvdXJjZXMnLCB0ZXN0cmVjaXBlLCAnb2UtbG9jYWwtZmlsZXMnKSkKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignY2QgJXM7IHJtICVzLyo7IGdpdCBjaGVja291dCAlcyAlcycgJSAob3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLCB0ZXN0cmVjaXBlLCB0ZXN0cmVjaXBlLCBvcy5wYXRoLmJhc2VuYW1lKHJlY2lwZWZpbGUpKSkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHVwZGF0ZS1yZWNpcGUgJXMnICUgdGVzdHJlY2lwZSkKLSAgICAgICAgZXhwZWN0ZWRfc3RhdHVzID0gWygnIE0nLCAnLiovJXMvZmlsZTIkJyAlIHRlc3RyZWNpcGUpXQotICAgICAgICBzZWxmLl9jaGVja19yZXBvX3N0YXR1cyhvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIGV4cGVjdGVkX3N0YXR1cykKLQotICAgIGRlZiB0ZXN0X2RldnRvb2xfdXBkYXRlX3JlY2lwZV9sb2NhbF9wYXRjaF9neihzZWxmKToKLSAgICAgICAgIyBGaXJzdCwgbW9kaWZ5IHRoZSByZWNpcGUKLSAgICAgICAgdGVzdHJlY2lwZSA9ICdkZXZ0b29sLXRlc3QtcGF0Y2gtZ3onCi0gICAgICAgIGlmIGdldF9iYl92YXIoJ0RJU1RSTycpID09ICdwb2t5LXRpbnknOgotICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiVGhlIERJU1RSTyAncG9reS10aW55JyBkb2VzIG5vdCBwcm92aWRlIHRoZSBkZXBlbmRlbmNpZXMgbmVlZGVkIGJ5ICVzIiAlIHRlc3RyZWNpcGUpCi0gICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ0ZJTEUnLCAnU1JDX1VSSSddLCB0ZXN0cmVjaXBlKQotICAgICAgICByZWNpcGVmaWxlID0gYmJfdmFyc1snRklMRSddCi0gICAgICAgIHNyY191cmkgPSBiYl92YXJzWydTUkNfVVJJJ10KLSAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCi0gICAgICAgICMgKGRvbid0IGJvdGhlciB3aXRoIGNsZWFuaW5nIHRoZSByZWNpcGUgb24gdGVhcmRvd24sIHdlIHdvbid0IGJlIGJ1aWxkaW5nIGl0KQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgbW9kaWZ5ICVzJyAlIHRlc3RyZWNpcGUpCi0gICAgICAgICMgTW9kaWZ5IG9uZSBmaWxlCi0gICAgICAgIHNyY3RyZWUgPSBvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdzb3VyY2VzJywgdGVzdHJlY2lwZSkKLSAgICAgICAgcnVuQ21kKCdlY2hvICJBbm90aGVyIGxpbmUiID4+IFJFQURNRScsIGN3ZD1zcmN0cmVlKQotICAgICAgICBydW5DbWQoJ2dpdCBjb21taXQgLWEgLS1hbWVuZCAtLW5vLWVkaXQnLCBjd2Q9c3JjdHJlZSkKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignY2QgJXM7IHJtICVzLyo7IGdpdCBjaGVja291dCAlcyAlcycgJSAob3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLCB0ZXN0cmVjaXBlLCB0ZXN0cmVjaXBlLCBvcy5wYXRoLmJhc2VuYW1lKHJlY2lwZWZpbGUpKSkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHVwZGF0ZS1yZWNpcGUgJXMnICUgdGVzdHJlY2lwZSkKLSAgICAgICAgZXhwZWN0ZWRfc3RhdHVzID0gWygnIE0nLCAnLiovJXMvcmVhZG1lLnBhdGNoLmd6JCcgJSB0ZXN0cmVjaXBlKV0KLSAgICAgICAgc2VsZi5fY2hlY2tfcmVwb19zdGF0dXMob3MucGF0aC5kaXJuYW1lKHJlY2lwZWZpbGUpLCBleHBlY3RlZF9zdGF0dXMpCi0gICAgICAgIHBhdGNoX2d6ID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShyZWNpcGVmaWxlKSwgdGVzdHJlY2lwZSwgJ3JlYWRtZS5wYXRjaC5neicpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZmlsZSAlcycgJSBwYXRjaF9neikKLSAgICAgICAgaWYgJ2d6aXAgY29tcHJlc3NlZCBkYXRhJyBub3QgaW4gcmVzdWx0Lm91dHB1dDoKLSAgICAgICAgICAgIHNlbGYuZmFpbCgnTmV3IHBhdGNoIGZpbGUgaXMgbm90IGd6aXBwZWQgLSBmaWxlIHJlcG9ydHM6XG4lcycgJSByZXN1bHQub3V0cHV0KQotCi0gICAgZGVmIHRlc3RfZGV2dG9vbF91cGRhdGVfcmVjaXBlX2xvY2FsX2ZpbGVzX3N1YmRpcihzZWxmKToKLSAgICAgICAgIyBUcnkgZGV2dG9vbCBleHRyYWN0IG9uIGEgcmVjaXBlIHRoYXQgaGFzIGEgZmlsZSB3aXRoIHN1YmRpcj0gc2V0IGluCi0gICAgICAgICMgU1JDX1VSSSBzdWNoIHRoYXQgaXQgb3ZlcndyaXRlcyBhIGZpbGUgdGhhdCB3YXMgaW4gYW4gYXJjaGl2ZSB0aGF0Ci0gICAgICAgICMgd2FzIGFsc28gaW4gU1JDX1VSSQotICAgICAgICAjIEZpcnN0LCBtb2RpZnkgdGhlIHJlY2lwZQotICAgICAgICB0ZXN0cmVjaXBlID0gJ2RldnRvb2wtdGVzdC1zdWJkaXInCi0gICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ0ZJTEUnLCAnU1JDX1VSSSddLCB0ZXN0cmVjaXBlKQotICAgICAgICByZWNpcGVmaWxlID0gYmJfdmFyc1snRklMRSddCi0gICAgICAgIHNyY191cmkgPSBiYl92YXJzWydTUkNfVVJJJ10KLSAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCi0gICAgICAgICMgKGRvbid0IGJvdGhlciB3aXRoIGNsZWFuaW5nIHRoZSByZWNpcGUgb24gdGVhcmRvd24sIHdlIHdvbid0IGJlIGJ1aWxkaW5nIGl0KQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgbW9kaWZ5ICVzJyAlIHRlc3RyZWNpcGUpCi0gICAgICAgIHRlc3RmaWxlID0gb3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnc291cmNlcycsIHRlc3RyZWNpcGUsICd0ZXN0ZmlsZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyh0ZXN0ZmlsZSksICdFeHRyYWN0ZWQgc291cmNlIGNvdWxkIG5vdCBiZSBmb3VuZCcpCi0gICAgICAgIHdpdGggb3Blbih0ZXN0ZmlsZSwgJ3InKSBhcyBmOgotICAgICAgICAgICAgY29udGVudHMgPSBmLnJlYWQoKS5yc3RyaXAoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRlbnRzLCAnTW9kaWZpZWQgdmVyc2lvbicsICdGaWxlIGhhcyBhcHBhcmVudGx5IG5vdCBiZWVuIG92ZXJ3cml0dGVuIGFzIGl0IHNob3VsZCBoYXZlIGJlZW4nKQotICAgICAgICAjIFRlc3QgZGV2dG9vbCB1cGRhdGUtcmVjaXBlIHdpdGhvdXQgbW9kaWZ5aW5nIGFueSBmaWxlcwotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdjZCAlczsgcm0gJXMvKjsgZ2l0IGNoZWNrb3V0ICVzICVzJyAlIChvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIHRlc3RyZWNpcGUsIHRlc3RyZWNpcGUsIG9zLnBhdGguYmFzZW5hbWUocmVjaXBlZmlsZSkpKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgdXBkYXRlLXJlY2lwZSAlcycgJSB0ZXN0cmVjaXBlKQotICAgICAgICBleHBlY3RlZF9zdGF0dXMgPSBbXQotICAgICAgICBzZWxmLl9jaGVja19yZXBvX3N0YXR1cyhvcy5wYXRoLmRpcm5hbWUocmVjaXBlZmlsZSksIGV4cGVjdGVkX3N0YXR1cykKLQotICAgIEB0ZXN0Y2FzZSgxMTYzKQotICAgIGRlZiB0ZXN0X2RldnRvb2xfZXh0cmFjdChzZWxmKToKLSAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQotICAgICAgICAjIFRyeSBkZXZ0b29sIGV4dHJhY3QKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQotICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoJ1BSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL21ha2UgPSAicmVtYWtlIicpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBleHRyYWN0IHJlbWFrZSAlcycgJSB0ZW1wZGlyKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHRlbXBkaXIsICdNYWtlZmlsZS5hbScpKSwgJ0V4dHJhY3RlZCBzb3VyY2UgY291bGQgbm90IGJlIGZvdW5kJykKLSAgICAgICAgIyBkZXZ0b29sIGV4dHJhY3Qgc2hvdWxkbid0IGNyZWF0ZSB0aGUgd29ya3NwYWNlCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMoc2VsZi53b3Jrc3BhY2VkaXIpKQotICAgICAgICBzZWxmLl9jaGVja19zcmNfcmVwbyh0ZW1wZGlyKQotCi0gICAgQHRlc3RjYXNlKDEzNzkpCi0gICAgZGVmIHRlc3RfZGV2dG9vbF9leHRyYWN0X3ZpcnR1YWwoc2VsZik6Ci0gICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKLSAgICAgICAgIyBUcnkgZGV2dG9vbCBleHRyYWN0Ci0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGV4dHJhY3QgdmlydHVhbC9tYWtlICVzJyAlIHRlbXBkaXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4odGVtcGRpciwgJ01ha2VmaWxlLmFtJykpLCAnRXh0cmFjdGVkIHNvdXJjZSBjb3VsZCBub3QgYmUgZm91bmQnKQotICAgICAgICAjIGRldnRvb2wgZXh0cmFjdCBzaG91bGRuJ3QgY3JlYXRlIHRoZSB3b3Jrc3BhY2UKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhzZWxmLndvcmtzcGFjZWRpcikpCi0gICAgICAgIHNlbGYuX2NoZWNrX3NyY19yZXBvKHRlbXBkaXIpCi0KLSAgICBAdGVzdGNhc2UoMTE2OCkKLSAgICBkZWYgdGVzdF9kZXZ0b29sX3Jlc2V0X2FsbChzZWxmKToKLSAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCi0gICAgICAgIHRlc3RyZWNpcGUxID0gJ21kYWRtJwotICAgICAgICB0ZXN0cmVjaXBlMiA9ICdjcm9uaWUnCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBtb2RpZnkgLXggJXMgJXMnICUgKHRlc3RyZWNpcGUxLCBvcy5wYXRoLmpvaW4odGVtcGRpciwgdGVzdHJlY2lwZTEpKSkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIG1vZGlmeSAteCAlcyAlcycgJSAodGVzdHJlY2lwZTIsIG9zLnBhdGguam9pbih0ZW1wZGlyLCB0ZXN0cmVjaXBlMikpKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgYnVpbGQgJXMnICUgdGVzdHJlY2lwZTEpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBidWlsZCAlcycgJSB0ZXN0cmVjaXBlMikKLSAgICAgICAgc3RhbXBwcmVmaXgxID0gZ2V0X2JiX3ZhcignU1RBTVAnLCB0ZXN0cmVjaXBlMSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN0YW1wcHJlZml4MSwgJ1VuYWJsZSB0byBnZXQgU1RBTVAgdmFsdWUgZm9yIHJlY2lwZSAlcycgJSB0ZXN0cmVjaXBlMSkKLSAgICAgICAgc3RhbXBwcmVmaXgyID0gZ2V0X2JiX3ZhcignU1RBTVAnLCB0ZXN0cmVjaXBlMikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN0YW1wcHJlZml4MiwgJ1VuYWJsZSB0byBnZXQgU1RBTVAgdmFsdWUgZm9yIHJlY2lwZSAlcycgJSB0ZXN0cmVjaXBlMikKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHJlc2V0IC1hJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbih0ZXN0cmVjaXBlMSwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbih0ZXN0cmVjaXBlMiwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4odGVzdHJlY2lwZTEsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4odGVzdHJlY2lwZTIsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIG1hdGNoZXMxID0gZ2xvYi5nbG9iKHN0YW1wcHJlZml4MSArICcqJykKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtYXRjaGVzMSwgJ1N0YW1wIGZpbGVzIGV4aXN0IGZvciByZWNpcGUgJXMgdGhhdCBzaG91bGQgaGF2ZSBiZWVuIGNsZWFuZWQnICUgdGVzdHJlY2lwZTEpCi0gICAgICAgIG1hdGNoZXMyID0gZ2xvYi5nbG9iKHN0YW1wcHJlZml4MiArICcqJykKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtYXRjaGVzMiwgJ1N0YW1wIGZpbGVzIGV4aXN0IGZvciByZWNpcGUgJXMgdGhhdCBzaG91bGQgaGF2ZSBiZWVuIGNsZWFuZWQnICUgdGVzdHJlY2lwZTIpCi0KLSAgICBAdGVzdGNhc2UoMTI3MikKLSAgICBkZWYgdGVzdF9kZXZ0b29sX2RlcGxveV90YXJnZXQoc2VsZik6Ci0gICAgICAgICMgTk9URTogV2hpbHN0IHRoaXMgdGVzdCB3b3VsZCBzZWVtaW5nbHkgYmUgYmV0dGVyIHBsYWNlZCBhcyBhIHJ1bnRpbWUgdGVzdCwKLSAgICAgICAgIyB1bmZvcnR1bmF0ZWx5IHRoZSBydW50aW1lIHRlc3RzIHJ1biB1bmRlciBiaXRiYWtlIGFuZCB5b3UgY2FuJ3QgcnVuCi0gICAgICAgICMgZGV2dG9vbCB3aXRoaW4gYml0YmFrZSAoc2luY2UgZGV2dG9vbCBuZWVkcyB0byBydW4gYml0YmFrZSBpdHNlbGYpLgotICAgICAgICAjIEFkZGl0aW9uYWxseSB3ZSBhcmUgdGVzdGluZyBidWlsZC10aW1lIGZ1bmN0aW9uYWxpdHkgYXMgd2VsbCwgc28KLSAgICAgICAgIyByZWFsbHkgdGhpcyBoYXMgdG8gYmUgZG9uZSBhcyBhbiBvZS1zZWxmdGVzdCB0ZXN0LgotICAgICAgICAjCi0gICAgICAgICMgQ2hlY2sgcHJlY29uZGl0aW9ucwotICAgICAgICBtYWNoaW5lID0gZ2V0X2JiX3ZhcignTUFDSElORScpCi0gICAgICAgIGlmIG5vdCBtYWNoaW5lLnN0YXJ0c3dpdGgoJ3FlbXUnKToKLSAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ1RoaXMgdGVzdCBvbmx5IHdvcmtzIHdpdGggcWVtdSBtYWNoaW5lcycpCi0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cygnL2V0Yy9ydW5xZW11LW5vc3VkbycpOgotICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnWW91IG11c3Qgc2V0IHVwIHRhcCBkZXZpY2VzIHdpdGggc2NyaXB0cy9ydW5xZW11LWdlbi10YXBkZXZzIGJlZm9yZSBydW5uaW5nIHRoaXMgdGVzdCcpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnUEFUSD0iJFBBVEg6L3NiaW46L3Vzci9zYmluIiBpcCB0dW50YXAgc2hvdycsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKLSAgICAgICAgaWYgcmVzdWx0LnN0YXR1cyAhPSAwOgotICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdQQVRIPSIkUEFUSDovc2JpbjovdXNyL3NiaW4iIGlmY29uZmlnIC1hJywgaWdub3JlX3N0YXR1cz1UcnVlKQotICAgICAgICAgICAgaWYgcmVzdWx0LnN0YXR1cyAhPSAwOgotICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ0ZhaWxlZCB0byBkZXRlcm1pbmUgaWYgdGFwIGRldmljZXMgZXhpc3Qgd2l0aCBpZmNvbmZpZyBvciBpcDogJXMnICUgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgZm9yIGxpbmUgaW4gcmVzdWx0Lm91dHB1dC5zcGxpdGxpbmVzKCk6Ci0gICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJ3RhcCcpOgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdObyB0YXAgZGV2aWNlcyBmb3VuZCAtIHlvdSBtdXN0IHNldCB1cCB0YXAgZGV2aWNlcyB3aXRoIHNjcmlwdHMvcnVucWVtdS1nZW4tdGFwZGV2cyBiZWZvcmUgcnVubmluZyB0aGlzIHRlc3QnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IG9zLnBhdGguZXhpc3RzKHNlbGYud29ya3NwYWNlZGlyKSwgJ1RoaXMgdGVzdCBjYW5ub3QgYmUgcnVuIHdpdGggYSB3b3Jrc3BhY2UgZGlyZWN0b3J5IHVuZGVyIHRoZSBidWlsZCBkaXJlY3RvcnknKQotICAgICAgICAjIERlZmluaXRpb25zCi0gICAgICAgIHRlc3RyZWNpcGUgPSAnbWRhZG0nCi0gICAgICAgIHRlc3RmaWxlID0gJy9zYmluL21kYWRtJwotICAgICAgICB0ZXN0aW1hZ2UgPSAnb2Utc2VsZnRlc3QtaW1hZ2UnCi0gICAgICAgIHRlc3Rjb21tYW5kID0gJy9zYmluL21kYWRtIC0taGVscCcKLSAgICAgICAgIyBCdWlsZCBhbiBpbWFnZSB0byBydW4KLSAgICAgICAgYml0YmFrZSgiJXMgcWVtdS1uYXRpdmUgcWVtdS1oZWxwZXItbmF0aXZlIiAlIHRlc3RpbWFnZSkKLSAgICAgICAgZGVwbG95X2Rpcl9pbWFnZSA9IGdldF9iYl92YXIoJ0RFUExPWV9ESVJfSU1BR0UnKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlIC1jIGNsZWFuICVzJyAlIHRlc3RpbWFnZSkKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bigncm0gLWYgJXMvJXMqJyAlIChkZXBsb3lfZGlyX2ltYWdlLCB0ZXN0aW1hZ2UpKQotICAgICAgICAjIENsZWFuIHJlY2lwZSBzbyB0aGUgZmlyc3QgZGVwbG95IHdpbGwgZmFpbAotICAgICAgICBiaXRiYWtlKCIlcyAtYyBjbGVhbiIgJSB0ZXN0cmVjaXBlKQotICAgICAgICAjIFRyeSBkZXZ0b29sIG1vZGlmeQotICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZSAtYyBjbGVhbiAlcycgJSB0ZXN0cmVjaXBlKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgbW9kaWZ5ICVzIC14ICVzJyAlICh0ZXN0cmVjaXBlLCB0ZW1wZGlyKSkKLSAgICAgICAgIyBUZXN0IHRoYXQgZGVwbG95LXRhcmdldCBhdCB0aGlzIHBvaW50IGZhaWxzIChwcm9wZXJseSkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGRlcGxveS10YXJnZXQgLW4gJXMgcm9vdEBsb2NhbGhvc3QnICUgdGVzdHJlY2lwZSwgaWdub3JlX3N0YXR1cz1UcnVlKQotICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJlc3VsdC5vdXRwdXQsIDAsICdkZXZ0b29sIGRlcGxveS10YXJnZXQgc2hvdWxkIGhhdmUgZmFpbGVkLCBvdXRwdXQ6ICVzJyAlIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4ocmVzdWx0Lm91dHB1dCwgJ1RyYWNlYmFjaycsICdkZXZ0b29sIGRlcGxveS10YXJnZXQgc2hvdWxkIGhhdmUgZmFpbGVkIHdpdGggYSBwcm9wZXIgZXJyb3Igbm90IGEgdHJhY2ViYWNrLCBvdXRwdXQ6ICVzJyAlIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBidWlsZCAlcycgJSB0ZXN0cmVjaXBlKQotICAgICAgICAjIEZpcnN0IHRyeSBhIGRyeS1ydW4gb2YgZGVwbG95LXRhcmdldAotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgZGVwbG95LXRhcmdldCAtbiAlcyByb290QGxvY2FsaG9zdCcgJSB0ZXN0cmVjaXBlKQotICAgICAgICBzZWxmLmFzc2VydEluKCcgICVzJyAlIHRlc3RmaWxlLCByZXN1bHQub3V0cHV0KQotICAgICAgICAjIEJvb3QgdGhlIGltYWdlCi0gICAgICAgIHdpdGggcnVucWVtdSh0ZXN0aW1hZ2UpIGFzIHFlbXU6Ci0gICAgICAgICAgICAjIE5vdyByZWFsbHkgdGVzdCBkZXBsb3ktdGFyZ2V0Ci0gICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgZGVwbG95LXRhcmdldCAtYyAlcyByb290QCVzJyAlICh0ZXN0cmVjaXBlLCBxZW11LmlwKSkKLSAgICAgICAgICAgICMgUnVuIGEgdGVzdCBjb21tYW5kIHRvIHNlZSBpZiBpdCB3YXMgaW5zdGFsbGVkIHByb3Blcmx5Ci0gICAgICAgICAgICBzc2hhcmdzID0gJy1vIFVzZXJLbm93bkhvc3RzRmlsZT0vZGV2L251bGwgLW8gU3RyaWN0SG9zdEtleUNoZWNraW5nPW5vJwotICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdzc2ggJXMgcm9vdEAlcyAlcycgJSAoc3NoYXJncywgcWVtdS5pcCwgdGVzdGNvbW1hbmQpKQotICAgICAgICAgICAgIyBDaGVjayBpZiBpdCBkZXBsb3llZCBhbGwgb2YgdGhlIGZpbGVzIHdpdGggdGhlIHJpZ2h0IG93bmVyc2hpcC9wZXJtcwotICAgICAgICAgICAgIyBGaXJzdCBsb29rIG9uIHRoZSBob3N0IC0gbmVlZCB0byBkbyB0aGlzIHVuZGVyIHBzZXVkbyB0byBnZXQgdGhlIGNvcnJlY3Qgb3duZXJzaGlwL3Blcm1zCi0gICAgICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydEJywgJ0ZBS0VST09URU5WJywgJ0ZBS0VST09UQ01EJ10sIHRlc3RyZWNpcGUpCi0gICAgICAgICAgICBpbnN0YWxsZGlyID0gYmJfdmFyc1snRCddCi0gICAgICAgICAgICBmYWtlcm9vdGVudiA9IGJiX3ZhcnNbJ0ZBS0VST09URU5WJ10KLSAgICAgICAgICAgIGZha2Vyb290Y21kID0gYmJfdmFyc1snRkFLRVJPT1RDTUQnXQotICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCclcyAlcyBmaW5kIC4gLXR5cGUgZiAtZXhlYyBscyAtbCB7fSBcOycgJSAoZmFrZXJvb3RlbnYsIGZha2Vyb290Y21kKSwgY3dkPWluc3RhbGxkaXIpCi0gICAgICAgICAgICBmaWxlbGlzdDEgPSBzZWxmLl9wcm9jZXNzX2xzX291dHB1dChyZXN1bHQub3V0cHV0KQotCi0gICAgICAgICAgICAjIE5vdyBsb29rIG9uIHRoZSB0YXJnZXQKLSAgICAgICAgICAgIHRlbXBkaXIyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCi0gICAgICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIyKQotICAgICAgICAgICAgdG1wZmlsZWxpc3QgPSBvcy5wYXRoLmpvaW4odGVtcGRpcjIsICdmaWxlcy50eHQnKQotICAgICAgICAgICAgd2l0aCBvcGVuKHRtcGZpbGVsaXN0LCAndycpIGFzIGY6Ci0gICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gZmlsZWxpc3QxOgotICAgICAgICAgICAgICAgICAgICBzcGxpdGxpbmUgPSBsaW5lLnNwbGl0KCkKLSAgICAgICAgICAgICAgICAgICAgZi53cml0ZShzcGxpdGxpbmVbLTFdICsgJ1xuJykKLSAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnY2F0ICVzIHwgc3NoIC1xICVzIHJvb3RAJXMgXCd4YXJncyBscyAtbFwnJyAlICh0bXBmaWxlbGlzdCwgc3NoYXJncywgcWVtdS5pcCkpCi0gICAgICAgICAgICBmaWxlbGlzdDIgPSBzZWxmLl9wcm9jZXNzX2xzX291dHB1dChyZXN1bHQub3V0cHV0KQotICAgICAgICAgICAgZmlsZWxpc3QxLnNvcnQoa2V5PWxhbWJkYSBpdGVtOiBpdGVtLnNwbGl0KClbLTFdKQotICAgICAgICAgICAgZmlsZWxpc3QyLnNvcnQoa2V5PWxhbWJkYSBpdGVtOiBpdGVtLnNwbGl0KClbLTFdKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlbGlzdDEsIGZpbGVsaXN0MikKLSAgICAgICAgICAgICMgVGVzdCB1bmRlcGxveS10YXJnZXQKLSAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCB1bmRlcGxveS10YXJnZXQgLWMgJXMgcm9vdEAlcycgJSAodGVzdHJlY2lwZSwgcWVtdS5pcCkpCi0gICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoJ3NzaCAlcyByb290QCVzICVzJyAlIChzc2hhcmdzLCBxZW11LmlwLCB0ZXN0Y29tbWFuZCksIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmVzdWx0LCAwLCAndW5kZXBsb3ktdGFyZ2V0IGRpZCBub3QgcmVtb3ZlIGNvbW1hbmQgYXMgaXQgc2hvdWxkIGhhdmUnKQotCi0gICAgQHRlc3RjYXNlKDEzNjYpCi0gICAgZGVmIHRlc3RfZGV2dG9vbF9idWlsZF9pbWFnZShzZWxmKToKLSAgICAgICAgIiIiVGVzdCBkZXZ0b29sIGJ1aWxkLWltYWdlIHBsdWdpbiIiIgotICAgICAgICAjIENoZWNrIHByZWNvbmRpdGlvbnMKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLndvcmtzcGFjZWRpciksICdUaGlzIHRlc3QgY2Fubm90IGJlIHJ1biB3aXRoIGEgd29ya3NwYWNlIGRpcmVjdG9yeSB1bmRlciB0aGUgYnVpbGQgZGlyZWN0b3J5JykKLSAgICAgICAgaW1hZ2UgPSAnY29yZS1pbWFnZS1taW5pbWFsJwotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlIC1jIGNsZWFuICVzJyAlIGltYWdlKQotICAgICAgICBiaXRiYWtlKCclcyAtYyBjbGVhbicgJSBpbWFnZSkKLSAgICAgICAgIyBBZGQgdGFyZ2V0IGFuZCBuYXRpdmUgcmVjaXBlcyB0byB3b3Jrc3BhY2UKLSAgICAgICAgcmVjaXBlcyA9IFsnbWRhZG0nLCAncGFydGVkLW5hdGl2ZSddCi0gICAgICAgIGZvciByZWNpcGUgaW4gcmVjaXBlczoKLSAgICAgICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKLSAgICAgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKLSAgICAgICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UgLWMgY2xlYW4gJXMnICUgcmVjaXBlKQotICAgICAgICAgICAgcnVuQ21kKCdkZXZ0b29sIG1vZGlmeSAlcyAteCAlcycgJSAocmVjaXBlLCB0ZW1wZGlyKSkKLSAgICAgICAgIyBUcnkgdG8gYnVpbGQgaW1hZ2UKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGJ1aWxkLWltYWdlICVzJyAlIGltYWdlKQotICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJlc3VsdCwgMCwgJ2RldnRvb2wgYnVpbGQtaW1hZ2UgZmFpbGVkJykKLSAgICAgICAgIyBDaGVjayBpZiBpbWFnZSBjb250YWlucyBleHBlY3RlZCBwYWNrYWdlcwotICAgICAgICBkZXBsb3lfZGlyX2ltYWdlID0gZ2V0X2JiX3ZhcignREVQTE9ZX0RJUl9JTUFHRScpCi0gICAgICAgIGltYWdlX2xpbmtfbmFtZSA9IGdldF9iYl92YXIoJ0lNQUdFX0xJTktfTkFNRScsIGltYWdlKQotICAgICAgICByZXFwa2dzID0gW2l0ZW0gZm9yIGl0ZW0gaW4gcmVjaXBlcyBpZiBub3QgaXRlbS5lbmRzd2l0aCgnLW5hdGl2ZScpXQotICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGRlcGxveV9kaXJfaW1hZ2UsIGltYWdlX2xpbmtfbmFtZSArICcubWFuaWZlc3QnKSwgJ3InKSBhcyBmOgotICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKLSAgICAgICAgICAgICAgICBzcGxpdHZhbCA9IGxpbmUuc3BsaXQoKQotICAgICAgICAgICAgICAgIGlmIHNwbGl0dmFsOgotICAgICAgICAgICAgICAgICAgICBwa2cgPSBzcGxpdHZhbFswXQotICAgICAgICAgICAgICAgICAgICBpZiBwa2cgaW4gcmVxcGtnczoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcXBrZ3MucmVtb3ZlKHBrZykKLSAgICAgICAgaWYgcmVxcGtnczoKLSAgICAgICAgICAgIHNlbGYuZmFpbCgnVGhlIGZvbGxvd2luZyBwYWNrYWdlcyB3ZXJlIG5vdCBwcmVzZW50IGluIHRoZSBpbWFnZSBhcyBleHBlY3RlZDogJXMnICUgJywgJy5qb2luKHJlcXBrZ3MpKQotCi0gICAgQHRlc3RjYXNlKDEzNjcpCi0gICAgZGVmIHRlc3RfZGV2dG9vbF91cGdyYWRlKHNlbGYpOgotICAgICAgICAjIENoZWNrIHByZWNvbmRpdGlvbnMKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLndvcmtzcGFjZWRpciksICdUaGlzIHRlc3QgY2Fubm90IGJlIHJ1biB3aXRoIGEgd29ya3NwYWNlIGRpcmVjdG9yeSB1bmRlciB0aGUgYnVpbGQgZGlyZWN0b3J5JykKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKLSAgICAgICAgIyBDaGVjayBwYXJhbWV0ZXJzCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCB1cGdyYWRlIC1oJykKLSAgICAgICAgZm9yIHBhcmFtIGluICdyZWNpcGVuYW1lIHNyY3RyZWUgLS12ZXJzaW9uIC1WIC0tYnJhbmNoIC1iIC0ta2VlcC10ZW1wIC0tbm8tcGF0Y2gnLnNwbGl0KCk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEluKHBhcmFtLCByZXN1bHQub3V0cHV0KQotICAgICAgICAjIEZvciB0aGUgbW9tZW50LCB3ZSBhcmUgdXNpbmcgYSByZWFsIHJlY2lwZS4KLSAgICAgICAgcmVjaXBlID0gJ2RldnRvb2wtdXBncmFkZS10ZXN0MScKLSAgICAgICAgdmVyc2lvbiA9ICcxLjYuMCcKLSAgICAgICAgb2xkcmVjaXBlZmlsZSA9IGdldF9iYl92YXIoJ0ZJTEUnLCByZWNpcGUpCi0gICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQotICAgICAgICAjIENoZWNrIHRoYXQgcmVjaXBlIGlzIG5vdCBhbHJlYWR5IHVuZGVyIGRldnRvb2wgY29udHJvbAotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbihyZWNpcGUsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgICMgQ2hlY2sgdXBncmFkZS4gQ29kZSBkb2VzIG5vdCBjaGVjayBpZiBuZXcgUFYgaXMgb2xkZXIgb3IgbmV3ZXIgdGhhdCBjdXJyZW50IFBWLCBzbywgaXQgbWF5IGJlIHRoYXQKLSAgICAgICAgIyB3ZSBhcmUgZG93bmdyYWRpbmcgaW5zdGVhZCBvZiB1cGdyYWRpbmcuCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCB1cGdyYWRlICVzICVzIC1WICVzJyAlIChyZWNpcGUsIHRlbXBkaXIsIHZlcnNpb24pKQotICAgICAgICAjIENoZWNrIGlmIHNyY3RyZWUgYXQgbGVhc3QgaXMgcG9wdWxhdGVkCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsZW4ob3MubGlzdGRpcih0ZW1wZGlyKSkgPiAwLCAnc3JjdHJlZSAoJXMpIHNob3VsZCBiZSBwb3B1bGF0ZWQgd2l0aCBuZXcgKCVzKSBzb3VyY2UgY29kZScgJSAodGVtcGRpciwgdmVyc2lvbikpCi0gICAgICAgICMgQ2hlY2sgbmV3IHJlY2lwZSBzdWJkaXJlY3RvcnkgaXMgcHJlc2VudAotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAncmVjaXBlcycsIHJlY2lwZSwgJyVzLSVzJyAlIChyZWNpcGUsIHZlcnNpb24pKSksICdSZWNpcGUgZm9sZGVyIHNob3VsZCBleGlzdCcpCi0gICAgICAgICMgQ2hlY2sgbmV3IHJlY2lwZSBmaWxlIGlzIHByZXNlbnQKLSAgICAgICAgbmV3cmVjaXBlZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3JlY2lwZXMnLCByZWNpcGUsICclc18lcy5iYicgJSAocmVjaXBlLCB2ZXJzaW9uKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG5ld3JlY2lwZWZpbGUpLCAnUmVjaXBlIGZpbGUgc2hvdWxkIGV4aXN0IGFmdGVyIHVwZ3JhZGUnKQotICAgICAgICAjIENoZWNrIGRldnRvb2wgc3RhdHVzIGFuZCBtYWtlIHN1cmUgcmVjaXBlIGlzIHByZXNlbnQKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4ocmVjaXBlLCByZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKHRlbXBkaXIsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgICMgQ2hlY2sgcmVjaXBlIGdvdCBjaGFuZ2VkIGFzIGV4cGVjdGVkCi0gICAgICAgIHdpdGggb3BlbihvbGRyZWNpcGVmaWxlICsgJy51cGdyYWRlZCcsICdyJykgYXMgZjoKLSAgICAgICAgICAgIGRlc2lyZWRsaW5lcyA9IGYucmVhZGxpbmVzKCkKLSAgICAgICAgd2l0aCBvcGVuKG5ld3JlY2lwZWZpbGUsICdyJykgYXMgZjoKLSAgICAgICAgICAgIG5ld2xpbmVzID0gZi5yZWFkbGluZXMoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlc2lyZWRsaW5lcywgbmV3bGluZXMpCi0gICAgICAgICMgQ2hlY2sgZGV2dG9vbCByZXNldCByZWNpcGUKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHJlc2V0ICVzIC1uJyAlIHJlY2lwZSkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4ocmVjaXBlLCByZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3JlY2lwZXMnLCByZWNpcGUpKSwgJ1JlY2lwZSBkaXJlY3Rvcnkgc2hvdWxkIG5vdCBleGlzdCBhZnRlciByZXNldHRpbmcnKQotCi0gICAgQHRlc3RjYXNlKDE0MzMpCi0gICAgZGVmIHRlc3RfZGV2dG9vbF91cGdyYWRlX2dpdChzZWxmKToKLSAgICAgICAgIyBDaGVjayBwcmVjb25kaXRpb25zCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3Qgb3MucGF0aC5leGlzdHMoc2VsZi53b3Jrc3BhY2VkaXIpLCAnVGhpcyB0ZXN0IGNhbm5vdCBiZSBydW4gd2l0aCBhIHdvcmtzcGFjZSBkaXJlY3RvcnkgdW5kZXIgdGhlIGJ1aWxkIGRpcmVjdG9yeScpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi53b3Jrc3BhY2VkaXIpCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAqL3dvcmtzcGFjZScpCi0gICAgICAgIHJlY2lwZSA9ICdkZXZ0b29sLXVwZ3JhZGUtdGVzdDInCi0gICAgICAgIGNvbW1pdCA9ICc2Y2M2MDc3YTM2ZmUyNjQ4YTVmOTkzZmU3YzE2Yzk2MzJmOTQ2NTE3JwotICAgICAgICBvbGRyZWNpcGVmaWxlID0gZ2V0X2JiX3ZhcignRklMRScsIHJlY2lwZSkKLSAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCi0gICAgICAgICMgQ2hlY2sgdGhhdCByZWNpcGUgaXMgbm90IGFscmVhZHkgdW5kZXIgZGV2dG9vbCBjb250cm9sCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKHJlY2lwZSwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgIyBDaGVjayB1cGdyYWRlCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCB1cGdyYWRlICVzICVzIC1TICVzJyAlIChyZWNpcGUsIHRlbXBkaXIsIGNvbW1pdCkpCi0gICAgICAgICMgQ2hlY2sgaWYgc3JjdHJlZSBhdCBsZWFzdCBpcyBwb3B1bGF0ZWQKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbihvcy5saXN0ZGlyKHRlbXBkaXIpKSA+IDAsICdzcmN0cmVlICglcykgc2hvdWxkIGJlIHBvcHVsYXRlZCB3aXRoIG5ldyAoJXMpIHNvdXJjZSBjb2RlJyAlICh0ZW1wZGlyLCBjb21taXQpKQotICAgICAgICAjIENoZWNrIG5ldyByZWNpcGUgZmlsZSBpcyBwcmVzZW50Ci0gICAgICAgIG5ld3JlY2lwZWZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdyZWNpcGVzJywgcmVjaXBlLCBvcy5wYXRoLmJhc2VuYW1lKG9sZHJlY2lwZWZpbGUpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMobmV3cmVjaXBlZmlsZSksICdSZWNpcGUgZmlsZSBzaG91bGQgZXhpc3QgYWZ0ZXIgdXBncmFkZScpCi0gICAgICAgICMgQ2hlY2sgZGV2dG9vbCBzdGF0dXMgYW5kIG1ha2Ugc3VyZSByZWNpcGUgaXMgcHJlc2VudAotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbihyZWNpcGUsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4odGVtcGRpciwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgIyBDaGVjayByZWNpcGUgZ290IGNoYW5nZWQgYXMgZXhwZWN0ZWQKLSAgICAgICAgd2l0aCBvcGVuKG9sZHJlY2lwZWZpbGUgKyAnLnVwZ3JhZGVkJywgJ3InKSBhcyBmOgotICAgICAgICAgICAgZGVzaXJlZGxpbmVzID0gZi5yZWFkbGluZXMoKQotICAgICAgICB3aXRoIG9wZW4obmV3cmVjaXBlZmlsZSwgJ3InKSBhcyBmOgotICAgICAgICAgICAgbmV3bGluZXMgPSBmLnJlYWRsaW5lcygpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVzaXJlZGxpbmVzLCBuZXdsaW5lcykKLSAgICAgICAgIyBDaGVjayBkZXZ0b29sIHJlc2V0IHJlY2lwZQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgcmVzZXQgJXMgLW4nICUgcmVjaXBlKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbihyZWNpcGUsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAncmVjaXBlcycsIHJlY2lwZSkpLCAnUmVjaXBlIGRpcmVjdG9yeSBzaG91bGQgbm90IGV4aXN0IGFmdGVyIHJlc2V0dGluZycpCi0KLSAgICBAdGVzdGNhc2UoMTM1MikKLSAgICBkZWYgdGVzdF9kZXZ0b29sX2xheWVyX3BsdWdpbnMoc2VsZik6Ci0gICAgICAgICIiIlRlc3QgdGhhdCBkZXZ0b29sIGNhbiB1c2UgcGx1Z2lucyBmcm9tIG90aGVyIGxheWVycy4KLQotICAgICAgICBUaGlzIHRlc3QgZXhlY3V0ZXMgdGhlIHNlbGZ0ZXN0LXJldmVyc2UgY29tbWFuZCBmcm9tIG1ldGEtc2VsZnRlc3QuIiIiCi0KLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKLQotICAgICAgICBzID0gIk1pY3Jvc29mdCBNYWRlIE5vIFByb2ZpdCBGcm9tIEFueW9uZSdzIFp1bmVzIFlvIgotICAgICAgICByZXN1bHQgPSBydW5DbWQoImRldnRvb2wgLS1xdWlldCBzZWxmdGVzdC1yZXZlcnNlIFwiJXNcIiIgJSBzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQsIHNbOjotMV0pCi0KLSAgICBkZWYgX2NvcHlfZmlsZV93aXRoX2NsZWFudXAoc2VsZiwgc3JjZmlsZSwgYmFzZWRzdGRpciwgKnBhdGhzKToKLSAgICAgICAgZHN0ZGlyID0gYmFzZWRzdGRpcgotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoZHN0ZGlyKSkKLSAgICAgICAgZm9yIHAgaW4gcGF0aHM6Ci0gICAgICAgICAgICBkc3RkaXIgPSBvcy5wYXRoLmpvaW4oZHN0ZGlyLCBwKQotICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGRzdGRpcik6Ci0gICAgICAgICAgICAgICAgb3MubWFrZWRpcnMoZHN0ZGlyKQotICAgICAgICAgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoZHN0ZGlyKQotICAgICAgICBkc3RmaWxlID0gb3MucGF0aC5qb2luKGRzdGRpciwgb3MucGF0aC5iYXNlbmFtZShzcmNmaWxlKSkKLSAgICAgICAgaWYgc3JjZmlsZSAhPSBkc3RmaWxlOgotICAgICAgICAgICAgc2h1dGlsLmNvcHkoc3JjZmlsZSwgZHN0ZmlsZSkKLSAgICAgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoZHN0ZmlsZSkKLQotICAgIGRlZiB0ZXN0X2RldnRvb2xfbG9hZF9wbHVnaW4oc2VsZik6Ci0gICAgICAgICIiIlRlc3QgdGhhdCBkZXZ0b29sIGxvYWRzIG9ubHkgdGhlIGZpcnN0IGZvdW5kIHBsdWdpbiBpbiBCQlBBVEguIiIiCi0KLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKLQotICAgICAgICBkZXZ0b29sID0gcnVuQ21kKCJ3aGljaCBkZXZ0b29sIikKLSAgICAgICAgZnJvbW5hbWUgPSBydW5DbWQoImRldnRvb2wgLS1xdWlldCBwbHVnaW5maWxlIikKLSAgICAgICAgc3JjZmlsZSA9IGZyb21uYW1lLm91dHB1dAotICAgICAgICBiYnBhdGggPSBnZXRfYmJfdmFyKCdCQlBBVEgnKQotICAgICAgICBzZWFyY2hwYXRoID0gYmJwYXRoLnNwbGl0KCc6JykgKyBbb3MucGF0aC5kaXJuYW1lKGRldnRvb2wub3V0cHV0KV0KLSAgICAgICAgcGx1Z2luY29udGVudCA9IFtdCi0gICAgICAgIHdpdGggb3BlbihzcmNmaWxlKSBhcyBmaDoKLSAgICAgICAgICAgIHBsdWdpbmNvbnRlbnQgPSBmaC5yZWFkbGluZXMoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEluKCdtZXRhLXNlbGZ0ZXN0Jywgc3JjZmlsZSwgJ3dyb25nIGJicGF0aCBwbHVnaW4gZm91bmQnKQotICAgICAgICAgICAgZm9yIHBhdGggaW4gc2VhcmNocGF0aDoKLSAgICAgICAgICAgICAgICBzZWxmLl9jb3B5X2ZpbGVfd2l0aF9jbGVhbnVwKHNyY2ZpbGUsIHBhdGgsICdsaWInLCAnZGV2dG9vbCcpCi0gICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoImRldnRvb2wgLS1xdWlldCBjb3VudCIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQsICcxJykKLSAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgiZGV2dG9vbCAtLXF1aWV0IG11bHRpbG9hZGVkIikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dCwgIm5vIikKLSAgICAgICAgICAgIGZvciBwYXRoIGluIHNlYXJjaHBhdGg6Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJkZXZ0b29sIC0tcXVpZXQgYmJkaXIiKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dCwgcGF0aCkKLSAgICAgICAgICAgICAgICBvcy51bmxpbmsob3MucGF0aC5qb2luKHJlc3VsdC5vdXRwdXQsICdsaWInLCAnZGV2dG9vbCcsICdiYnBhdGgucHknKSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHdpdGggb3BlbihzcmNmaWxlLCAndycpIGFzIGZoOgotICAgICAgICAgICAgICAgIGZoLndyaXRlbGluZXMocGx1Z2luY29udGVudCkKLQotICAgIGRlZiBfc2V0dXBfdGVzdF9kZXZ0b29sX2ZpbmlzaF91cGdyYWRlKHNlbGYpOgotICAgICAgICAjIENoZWNrIHByZWNvbmRpdGlvbnMKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLndvcmtzcGFjZWRpciksICdUaGlzIHRlc3QgY2Fubm90IGJlIHJ1biB3aXRoIGEgd29ya3NwYWNlIGRpcmVjdG9yeSB1bmRlciB0aGUgYnVpbGQgZGlyZWN0b3J5JykKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKLSAgICAgICAgIyBVc2UgYSAicmVhbCIgcmVjaXBlIGZyb20gbWV0YS1zZWxmdGVzdAotICAgICAgICByZWNpcGUgPSAnZGV2dG9vbC11cGdyYWRlLXRlc3QxJwotICAgICAgICBvbGR2ZXJzaW9uID0gJzEuNS4zJwotICAgICAgICBuZXd2ZXJzaW9uID0gJzEuNi4wJwotICAgICAgICBvbGRyZWNpcGVmaWxlID0gZ2V0X2JiX3ZhcignRklMRScsIHJlY2lwZSkKLSAgICAgICAgcmVjaXBlZGlyID0gb3MucGF0aC5kaXJuYW1lKG9sZHJlY2lwZWZpbGUpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IHN0YXR1cyAtLXBvcmNlbGFpbiAuJywgY3dkPXJlY2lwZWRpcikKLSAgICAgICAgaWYgcmVzdWx0Lm91dHB1dC5zdHJpcCgpOgotICAgICAgICAgICAgc2VsZi5mYWlsKCdSZWNpcGUgZGlyZWN0b3J5IGZvciAlcyBjb250YWlucyB1bmNvbW1pdHRlZCBjaGFuZ2VzJyAlIHJlY2lwZSkKLSAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCi0gICAgICAgICMgQ2hlY2sgdGhhdCByZWNpcGUgaXMgbm90IGFscmVhZHkgdW5kZXIgZGV2dG9vbCBjb250cm9sCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKHJlY2lwZSwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgIyBEbyB0aGUgdXBncmFkZQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgdXBncmFkZSAlcyAlcyAtViAlcycgJSAocmVjaXBlLCB0ZW1wZGlyLCBuZXd2ZXJzaW9uKSkKLSAgICAgICAgIyBDaGVjayBkZXZ0b29sIHN0YXR1cyBhbmQgbWFrZSBzdXJlIHJlY2lwZSBpcyBwcmVzZW50Ci0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQotICAgICAgICBzZWxmLmFzc2VydEluKHJlY2lwZSwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbih0ZW1wZGlyLCByZXN1bHQub3V0cHV0KQotICAgICAgICAjIE1ha2UgYSBjaGFuZ2UgdG8gdGhlIHNvdXJjZQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ3NlZCAtaSBcJy9eI2luY2x1ZGUgInB2LmgiL2EgXFwvKiBIZXJlIGlzIGEgbmV3IGNvbW1lbnQgKlxcL1wnIHNyYy9wdi9udW1iZXIuYycsIGN3ZD10ZW1wZGlyKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBzdGF0dXMgLS1wb3JjZWxhaW4nLCBjd2Q9dGVtcGRpcikKLSAgICAgICAgc2VsZi5hc3NlcnRJbignTSBzcmMvcHYvbnVtYmVyLmMnLCByZXN1bHQub3V0cHV0KQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2dpdCBjb21taXQgc3JjL3B2L251bWJlci5jIC1tICJBZGQgYSBjb21tZW50IHRvIHRoZSBjb2RlIicsIGN3ZD10ZW1wZGlyKQotICAgICAgICAjIENoZWNrIGlmIHBhdGNoIGlzIHRoZXJlCi0gICAgICAgIHJlY2lwZWRpciA9IG9zLnBhdGguZGlybmFtZShvbGRyZWNpcGVmaWxlKQotICAgICAgICBvbGRkaXIgPSBvcy5wYXRoLmpvaW4ocmVjaXBlZGlyLCByZWNpcGUgKyAnLScgKyBvbGR2ZXJzaW9uKQotICAgICAgICBwYXRjaGZuID0gJzAwMDEtQWRkLWEtbm90ZS1saW5lLXRvLXRoZS1xdWljay1yZWZlcmVuY2UucGF0Y2gnCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4ob2xkZGlyLCBwYXRjaGZuKSksICdPcmlnaW5hbCBwYXRjaCBmaWxlIGRvZXMgbm90IGV4aXN0JykKLSAgICAgICAgcmV0dXJuIHJlY2lwZSwgb2xkcmVjaXBlZmlsZSwgcmVjaXBlZGlyLCBvbGRkaXIsIG5ld3ZlcnNpb24sIHBhdGNoZm4KLQotICAgIGRlZiB0ZXN0X2RldnRvb2xfZmluaXNoX3VwZ3JhZGVfb3JpZ2xheWVyKHNlbGYpOgotICAgICAgICByZWNpcGUsIG9sZHJlY2lwZWZpbGUsIHJlY2lwZWRpciwgb2xkZGlyLCBuZXd2ZXJzaW9uLCBwYXRjaGZuID0gc2VsZi5fc2V0dXBfdGVzdF9kZXZ0b29sX2ZpbmlzaF91cGdyYWRlKCkKLSAgICAgICAgIyBFbnN1cmUgdGhlIHJlY2lwZSBpcyB3aGVyZSB3ZSB0aGluayBpdCBzaG91bGQgYmUgKHNvIHRoYXQgY2xlYW51cCBkb2Vzbid0IHRyYXNoIHRoaW5ncykKLSAgICAgICAgc2VsZi5hc3NlcnRJbignL21ldGEtc2VsZnRlc3QvJywgcmVjaXBlZGlyKQotICAgICAgICAjIFRyeSBmaW5pc2ggdG8gdGhlIG9yaWdpbmFsIGxheWVyCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ3JtIC1yZiAlcyA7IGNkICVzIDsgZ2l0IGNoZWNrb3V0ICVzJyAlIChyZWNpcGVkaXIsIG9zLnBhdGguZGlybmFtZShyZWNpcGVkaXIpLCByZWNpcGVkaXIpKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgZmluaXNoICVzIG1ldGEtc2VsZnRlc3QnICUgcmVjaXBlKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbihyZWNpcGUsIHJlc3VsdC5vdXRwdXQsICdSZWNpcGUgc2hvdWxkIGhhdmUgYmVlbiByZXNldCBieSBmaW5pc2ggYnV0IHdhc25cJ3QnKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3JlY2lwZXMnLCByZWNpcGUpKSwgJ1JlY2lwZSBkaXJlY3Rvcnkgc2hvdWxkIG5vdCBleGlzdCBhZnRlciBmaW5pc2gnKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKG9sZHJlY2lwZWZpbGUpLCAnT2xkIHJlY2lwZSBmaWxlIHNob3VsZCBoYXZlIGJlZW4gZGVsZXRlZCBidXQgd2FzblwndCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKG9sZGRpciwgcGF0Y2hmbikpLCAnT2xkIHBhdGNoIGZpbGUgc2hvdWxkIGhhdmUgYmVlbiBkZWxldGVkIGJ1dCB3YXNuXCd0JykKLSAgICAgICAgbmV3cmVjaXBlZmlsZSA9IG9zLnBhdGguam9pbihyZWNpcGVkaXIsICclc18lcy5iYicgJSAocmVjaXBlLCBuZXd2ZXJzaW9uKSkKLSAgICAgICAgbmV3ZGlyID0gb3MucGF0aC5qb2luKHJlY2lwZWRpciwgcmVjaXBlICsgJy0nICsgbmV3dmVyc2lvbikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG5ld3JlY2lwZWZpbGUpLCAnTmV3IHJlY2lwZSBmaWxlIHNob3VsZCBoYXZlIGJlZW4gY29waWVkIGludG8gZXhpc3RpbmcgbGF5ZXIgYnV0IHdhc25cJ3QnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKG5ld2RpciwgcGF0Y2hmbikpLCAnUGF0Y2ggZmlsZSBzaG91bGQgaGF2ZSBiZWVuIGNvcGllZCBpbnRvIG5ldyBkaXJlY3RvcnkgYnV0IHdhc25cJ3QnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKG5ld2RpciwgJzAwMDItQWRkLWEtY29tbWVudC10by10aGUtY29kZS5wYXRjaCcpKSwgJ05ldyBwYXRjaCBmaWxlIHNob3VsZCBoYXZlIGJlZW4gY3JlYXRlZCBidXQgd2FzblwndCcpCi0KLSAgICBkZWYgdGVzdF9kZXZ0b29sX2ZpbmlzaF91cGdyYWRlX290aGVybGF5ZXIoc2VsZik6Ci0gICAgICAgIHJlY2lwZSwgb2xkcmVjaXBlZmlsZSwgcmVjaXBlZGlyLCBvbGRkaXIsIG5ld3ZlcnNpb24sIHBhdGNoZm4gPSBzZWxmLl9zZXR1cF90ZXN0X2RldnRvb2xfZmluaXNoX3VwZ3JhZGUoKQotICAgICAgICAjIEVuc3VyZSB0aGUgcmVjaXBlIGlzIHdoZXJlIHdlIHRoaW5rIGl0IHNob3VsZCBiZSAoc28gdGhhdCBjbGVhbnVwIGRvZXNuJ3QgdHJhc2ggdGhpbmdzKQotICAgICAgICBzZWxmLmFzc2VydEluKCcvbWV0YS1zZWxmdGVzdC8nLCByZWNpcGVkaXIpCi0gICAgICAgICMgVHJ5IGZpbmlzaCB0byBhIGRpZmZlcmVudCBsYXllciAtIHNob3VsZCBjcmVhdGUgYSBiYmFwcGVuZAotICAgICAgICAjIFRoaXMgY2xlYW51cCBpc24ndCBzdHJpY3RseSBuZWNlc3NhcnkgYnV0IGRvIGl0IGFueXdheSBqdXN0IGluIGNhc2UgaXQgZ29lcyB3cm9uZyBhbmQgd3JpdGVzIHRvIGhlcmUKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bigncm0gLXJmICVzIDsgY2QgJXMgOyBnaXQgY2hlY2tvdXQgJXMnICUgKHJlY2lwZWRpciwgb3MucGF0aC5kaXJuYW1lKHJlY2lwZWRpciksIHJlY2lwZWRpcikpCi0gICAgICAgIG9lX2NvcmVfZGlyID0gb3MucGF0aC5qb2luKGdldF9iYl92YXIoJ0NPUkVCQVNFJyksICdtZXRhJykKLSAgICAgICAgbmV3cmVjaXBlZGlyID0gb3MucGF0aC5qb2luKG9lX2NvcmVfZGlyLCAncmVjaXBlcy10ZXN0JywgJ2RldnRvb2wnKQotICAgICAgICBuZXdyZWNpcGVmaWxlID0gb3MucGF0aC5qb2luKG5ld3JlY2lwZWRpciwgJyVzXyVzLmJiJyAlIChyZWNpcGUsIG5ld3ZlcnNpb24pKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKG5ld3JlY2lwZWRpcikKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGZpbmlzaCAlcyBvZS1jb3JlJyAlIHJlY2lwZSkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHN0YXR1cycpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4ocmVjaXBlLCByZXN1bHQub3V0cHV0LCAnUmVjaXBlIHNob3VsZCBoYXZlIGJlZW4gcmVzZXQgYnkgZmluaXNoIGJ1dCB3YXNuXCd0JykKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdyZWNpcGVzJywgcmVjaXBlKSksICdSZWNpcGUgZGlyZWN0b3J5IHNob3VsZCBub3QgZXhpc3QgYWZ0ZXIgZmluaXNoJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9sZHJlY2lwZWZpbGUpLCAnT2xkIHJlY2lwZSBmaWxlIHNob3VsZCBub3QgaGF2ZSBiZWVuIGRlbGV0ZWQnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKG9sZGRpciwgcGF0Y2hmbikpLCAnT2xkIHBhdGNoIGZpbGUgc2hvdWxkIG5vdCBoYXZlIGJlZW4gZGVsZXRlZCcpCi0gICAgICAgIG5ld2RpciA9IG9zLnBhdGguam9pbihuZXdyZWNpcGVkaXIsIHJlY2lwZSArICctJyArIG5ld3ZlcnNpb24pCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhuZXdyZWNpcGVmaWxlKSwgJ05ldyByZWNpcGUgZmlsZSBzaG91bGQgaGF2ZSBiZWVuIGNvcGllZCBpbnRvIGV4aXN0aW5nIGxheWVyIGJ1dCB3YXNuXCd0JykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihuZXdkaXIsIHBhdGNoZm4pKSwgJ1BhdGNoIGZpbGUgc2hvdWxkIGhhdmUgYmVlbiBjb3BpZWQgaW50byBuZXcgZGlyZWN0b3J5IGJ1dCB3YXNuXCd0JykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihuZXdkaXIsICcwMDAyLUFkZC1hLWNvbW1lbnQtdG8tdGhlLWNvZGUucGF0Y2gnKSksICdOZXcgcGF0Y2ggZmlsZSBzaG91bGQgaGF2ZSBiZWVuIGNyZWF0ZWQgYnV0IHdhc25cJ3QnKQotCi0gICAgZGVmIF9zZXR1cF90ZXN0X2RldnRvb2xfZmluaXNoX21vZGlmeShzZWxmKToKLSAgICAgICAgIyBDaGVjayBwcmVjb25kaXRpb25zCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3Qgb3MucGF0aC5leGlzdHMoc2VsZi53b3Jrc3BhY2VkaXIpLCAnVGhpcyB0ZXN0IGNhbm5vdCBiZSBydW4gd2l0aCBhIHdvcmtzcGFjZSBkaXJlY3RvcnkgdW5kZXIgdGhlIGJ1aWxkIGRpcmVjdG9yeScpCi0gICAgICAgICMgVHJ5IG1vZGlmeWluZyBhIHJlY2lwZQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQotICAgICAgICByZWNpcGUgPSAnbWRhZG0nCi0gICAgICAgIG9sZHJlY2lwZWZpbGUgPSBnZXRfYmJfdmFyKCdGSUxFJywgcmVjaXBlKQotICAgICAgICByZWNpcGVkaXIgPSBvcy5wYXRoLmRpcm5hbWUob2xkcmVjaXBlZmlsZSkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgc3RhdHVzIC0tcG9yY2VsYWluIC4nLCBjd2Q9cmVjaXBlZGlyKQotICAgICAgICBpZiByZXN1bHQub3V0cHV0LnN0cmlwKCk6Ci0gICAgICAgICAgICBzZWxmLmZhaWwoJ1JlY2lwZSBkaXJlY3RvcnkgZm9yICVzIGNvbnRhaW5zIHVuY29tbWl0dGVkIGNoYW5nZXMnICUgcmVjaXBlKQotICAgICAgICB0ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2RldnRvb2xxYScpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAodGVtcGRpcikKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIG1vZGlmeSAlcyAlcycgJSAocmVjaXBlLCB0ZW1wZGlyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbih0ZW1wZGlyLCAnTWFrZWZpbGUnKSksICdFeHRyYWN0ZWQgc291cmNlIGNvdWxkIG5vdCBiZSBmb3VuZCcpCi0gICAgICAgICMgVGVzdCBkZXZ0b29sIHN0YXR1cwotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbihyZWNpcGUsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4odGVtcGRpciwgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgIyBNYWtlIGEgY2hhbmdlIHRvIHRoZSBzb3VyY2UKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdzZWQgLWkgXCcvXiNpbmNsdWRlICJtZGFkbS5oIi9hIFxcLyogSGVyZSBpcyBhIG5ldyBjb21tZW50ICpcXC9cJyBtYXBzLmMnLCBjd2Q9dGVtcGRpcikKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgc3RhdHVzIC0tcG9yY2VsYWluJywgY3dkPXRlbXBkaXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ00gbWFwcy5jJywgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdnaXQgY29tbWl0IG1hcHMuYyAtbSAiQWRkIGEgY29tbWVudCB0byB0aGUgY29kZSInLCBjd2Q9dGVtcGRpcikKLSAgICAgICAgZm9yIGVudHJ5IGluIG9zLmxpc3RkaXIocmVjaXBlZGlyKToKLSAgICAgICAgICAgIGZpbGVzZGlyID0gb3MucGF0aC5qb2luKHJlY2lwZWRpciwgZW50cnkpCi0gICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKGZpbGVzZGlyKToKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5mYWlsKCdVbmFibGUgdG8gZmluZCByZWNpcGUgZmlsZXMgZGlyZWN0b3J5IGZvciAlcycgJSByZWNpcGUpCi0gICAgICAgIHJldHVybiByZWNpcGUsIG9sZHJlY2lwZWZpbGUsIHJlY2lwZWRpciwgZmlsZXNkaXIKLQotICAgIGRlZiB0ZXN0X2RldnRvb2xfZmluaXNoX21vZGlmeV9vcmlnbGF5ZXIoc2VsZik6Ci0gICAgICAgIHJlY2lwZSwgb2xkcmVjaXBlZmlsZSwgcmVjaXBlZGlyLCBmaWxlc2RpciA9IHNlbGYuX3NldHVwX3Rlc3RfZGV2dG9vbF9maW5pc2hfbW9kaWZ5KCkKLSAgICAgICAgIyBFbnN1cmUgdGhlIHJlY2lwZSBpcyB3aGVyZSB3ZSB0aGluayBpdCBzaG91bGQgYmUgKHNvIHRoYXQgY2xlYW51cCBkb2Vzbid0IHRyYXNoIHRoaW5ncykKLSAgICAgICAgc2VsZi5hc3NlcnRJbignL21ldGEvJywgcmVjaXBlZGlyKQotICAgICAgICAjIFRyeSBmaW5pc2ggdG8gdGhlIG9yaWdpbmFsIGxheWVyCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ3JtIC1yZiAlcyA7IGNkICVzIDsgZ2l0IGNoZWNrb3V0ICVzJyAlIChyZWNpcGVkaXIsIG9zLnBhdGguZGlybmFtZShyZWNpcGVkaXIpLCByZWNpcGVkaXIpKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgZmluaXNoICVzIG1ldGEnICUgcmVjaXBlKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbihyZWNpcGUsIHJlc3VsdC5vdXRwdXQsICdSZWNpcGUgc2hvdWxkIGhhdmUgYmVlbiByZXNldCBieSBmaW5pc2ggYnV0IHdhc25cJ3QnKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3JlY2lwZXMnLCByZWNpcGUpKSwgJ1JlY2lwZSBkaXJlY3Rvcnkgc2hvdWxkIG5vdCBleGlzdCBhZnRlciBmaW5pc2gnKQotICAgICAgICBleHBlY3RlZF9zdGF0dXMgPSBbKCcgTScsICcuKi8lcyQnICUgb3MucGF0aC5iYXNlbmFtZShvbGRyZWNpcGVmaWxlKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAoJz8/JywgJy4qLy4qLUFkZC1hLWNvbW1lbnQtdG8tdGhlLWNvZGUucGF0Y2gkJyldCi0gICAgICAgIHNlbGYuX2NoZWNrX3JlcG9fc3RhdHVzKHJlY2lwZWRpciwgZXhwZWN0ZWRfc3RhdHVzKQotCi0gICAgZGVmIHRlc3RfZGV2dG9vbF9maW5pc2hfbW9kaWZ5X290aGVybGF5ZXIoc2VsZik6Ci0gICAgICAgIHJlY2lwZSwgb2xkcmVjaXBlZmlsZSwgcmVjaXBlZGlyLCBmaWxlc2RpciA9IHNlbGYuX3NldHVwX3Rlc3RfZGV2dG9vbF9maW5pc2hfbW9kaWZ5KCkKLSAgICAgICAgIyBFbnN1cmUgdGhlIHJlY2lwZSBpcyB3aGVyZSB3ZSB0aGluayBpdCBzaG91bGQgYmUgKHNvIHRoYXQgY2xlYW51cCBkb2Vzbid0IHRyYXNoIHRoaW5ncykKLSAgICAgICAgc2VsZi5hc3NlcnRJbignL21ldGEvJywgcmVjaXBlZGlyKQotICAgICAgICByZWxwdGggPSBvcy5wYXRoLnJlbHBhdGgocmVjaXBlZGlyLCBvcy5wYXRoLmpvaW4oZ2V0X2JiX3ZhcignQ09SRUJBU0UnKSwgJ21ldGEnKSkKLSAgICAgICAgYXBwZW5kZGlyID0gb3MucGF0aC5qb2luKGdldF90ZXN0X2xheWVyKCksIHJlbHB0aCkKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChhcHBlbmRkaXIpCi0gICAgICAgICMgVHJ5IGZpbmlzaCB0byB0aGUgb3JpZ2luYWwgbGF5ZXIKLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bigncm0gLXJmICVzIDsgY2QgJXMgOyBnaXQgY2hlY2tvdXQgJXMnICUgKHJlY2lwZWRpciwgb3MucGF0aC5kaXJuYW1lKHJlY2lwZWRpciksIHJlY2lwZWRpcikpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBmaW5pc2ggJXMgbWV0YS1zZWxmdGVzdCcgJSByZWNpcGUpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZGV2dG9vbCBzdGF0dXMnKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKHJlY2lwZSwgcmVzdWx0Lm91dHB1dCwgJ1JlY2lwZSBzaG91bGQgaGF2ZSBiZWVuIHJlc2V0IGJ5IGZpbmlzaCBidXQgd2FzblwndCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAncmVjaXBlcycsIHJlY2lwZSkpLCAnUmVjaXBlIGRpcmVjdG9yeSBzaG91bGQgbm90IGV4aXN0IGFmdGVyIGZpbmlzaCcpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnZ2l0IHN0YXR1cyAtLXBvcmNlbGFpbiAuJywgY3dkPXJlY2lwZWRpcikKLSAgICAgICAgaWYgcmVzdWx0Lm91dHB1dC5zdHJpcCgpOgotICAgICAgICAgICAgc2VsZi5mYWlsKCdSZWNpcGUgZGlyZWN0b3J5IGZvciAlcyBjb250YWlucyB0aGUgZm9sbG93aW5nIHVuZXhwZWN0ZWQgY2hhbmdlcyBhZnRlciBmaW5pc2g6XG4lcycgJSAocmVjaXBlLCByZXN1bHQub3V0cHV0LnN0cmlwKCkpKQotICAgICAgICByZWNpcGVmbiA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZShvbGRyZWNpcGVmaWxlKSlbMF0KLSAgICAgICAgcmVjaXBlZm4gPSByZWNpcGVmbi5zcGxpdCgnXycpWzBdICsgJ18lJwotICAgICAgICBhcHBlbmRmaWxlID0gb3MucGF0aC5qb2luKGFwcGVuZGRpciwgcmVjaXBlZm4gKyAnLmJiYXBwZW5kJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGFwcGVuZGZpbGUpLCAnYmJhcHBlbmQgJXMgc2hvdWxkIGhhdmUgYmVlbiBjcmVhdGVkIGJ1dCB3YXNuXCd0JyAlIGFwcGVuZGZpbGUpCi0gICAgICAgIG5ld2RpciA9IG9zLnBhdGguam9pbihhcHBlbmRkaXIsIHJlY2lwZSkKLSAgICAgICAgZmlsZXMgPSBvcy5saXN0ZGlyKG5ld2RpcikKLSAgICAgICAgZm91bmRwYXRjaCA9IE5vbmUKLSAgICAgICAgZm9yIGZuIGluIGZpbGVzOgotICAgICAgICAgICAgaWYgZm5tYXRjaC5mbm1hdGNoKGZuLCAnKi1BZGQtYS1jb21tZW50LXRvLXRoZS1jb2RlLnBhdGNoJyk6Ci0gICAgICAgICAgICAgICAgZm91bmRwYXRjaCA9IGZuCi0gICAgICAgIGlmIG5vdCBmb3VuZHBhdGNoOgotICAgICAgICAgICAgc2VsZi5mYWlsKCdObyBwYXRjaCBmaWxlIGNyZWF0ZWQgbmV4dCB0byBiYmFwcGVuZCcpCi0gICAgICAgIGZpbGVzLnJlbW92ZShmb3VuZHBhdGNoKQotICAgICAgICBpZiBmaWxlczoKLSAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5leHBlY3RlZCBmaWxlKHMpIGNvcGllZCBuZXh0IHRvIGJiYXBwZW5kOiAlcycgJSAnLCAnLmpvaW4oZmlsZXMpKQotCi0gICAgZGVmIHRlc3RfZGV2dG9vbF9yZW5hbWUoc2VsZik6Ci0gICAgICAgICMgQ2hlY2sgcHJlY29uZGl0aW9ucwotICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IG9zLnBhdGguZXhpc3RzKHNlbGYud29ya3NwYWNlZGlyKSwgJ1RoaXMgdGVzdCBjYW5ub3QgYmUgcnVuIHdpdGggYSB3b3Jrc3BhY2UgZGlyZWN0b3J5IHVuZGVyIHRoZSBidWlsZCBkaXJlY3RvcnknKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQotCi0gICAgICAgICMgRmlyc3QgcnVuIGRldnRvb2wgYWRkCi0gICAgICAgICMgV2UgYWxyZWFkeSBoYXZlIHRoaXMgcmVjaXBlIGluIE9FLUNvcmUsIGJ1dCB0aGF0IGRvZXNuJ3QgbWF0dGVyCi0gICAgICAgIHJlY2lwZW5hbWUgPSAnaTJjLXRvb2xzJwotICAgICAgICByZWNpcGV2ZXIgPSAnMy4xLjInCi0gICAgICAgIHJlY2lwZWZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdyZWNpcGVzJywgcmVjaXBlbmFtZSwgJyVzXyVzLmJiJyAlIChyZWNpcGVuYW1lLCByZWNpcGV2ZXIpKQotICAgICAgICB1cmwgPSAnaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzL2kyYy10b29scy0lcy50YXIuYnoyJyAlIHJlY2lwZXZlcgotICAgICAgICBkZWYgYWRkX3JlY2lwZSgpOgotICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGFkZCAlcycgJSB1cmwpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMocmVjaXBlZmlsZSksICdFeHBlY3RlZCByZWNpcGUgZmlsZSBub3QgY3JlYXRlZCcpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnc291cmNlcycsIHJlY2lwZW5hbWUpKSwgJ1NvdXJjZSBkaXJlY3Rvcnkgbm90IGNyZWF0ZWQnKQotICAgICAgICAgICAgY2hlY2t2YXJzID0ge30KLSAgICAgICAgICAgIGNoZWNrdmFyc1snUyddID0gTm9uZQotICAgICAgICAgICAgY2hlY2t2YXJzWydTUkNfVVJJJ10gPSB1cmwucmVwbGFjZShyZWNpcGV2ZXIsICcke1BWfScpCi0gICAgICAgICAgICBzZWxmLl90ZXN0X3JlY2lwZV9jb250ZW50cyhyZWNpcGVmaWxlLCBjaGVja3ZhcnMsIFtdKQotICAgICAgICBhZGRfcmVjaXBlKCkKLSAgICAgICAgIyBOb3cgcmVuYW1lIGl0IC0gY2hhbmdlIGJvdGggbmFtZSBhbmQgdmVyc2lvbgotICAgICAgICBuZXdyZWNpcGVuYW1lID0gJ215bmV3cmVjaXBlJwotICAgICAgICBuZXdyZWNpcGV2ZXIgPSAnNDU2JwotICAgICAgICBuZXdyZWNpcGVmaWxlID0gb3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAncmVjaXBlcycsIG5ld3JlY2lwZW5hbWUsICclc18lcy5iYicgJSAobmV3cmVjaXBlbmFtZSwgbmV3cmVjaXBldmVyKSkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHJlbmFtZSAlcyAlcyAtViAlcycgJSAocmVjaXBlbmFtZSwgbmV3cmVjaXBlbmFtZSwgbmV3cmVjaXBldmVyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG5ld3JlY2lwZWZpbGUpLCAnUmVjaXBlIGZpbGUgbm90IHJlbmFtZWQnKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3JlY2lwZXMnLCByZWNpcGVuYW1lKSksICdPbGQgcmVjaXBlIGRpcmVjdG9yeSBzdGlsbCBleGlzdHMnKQotICAgICAgICBuZXdzcmN0cmVlID0gb3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnc291cmNlcycsIG5ld3JlY2lwZW5hbWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhuZXdzcmN0cmVlKSwgJ1NvdXJjZSBkaXJlY3Rvcnkgbm90IHJlbmFtZWQnKQotICAgICAgICBjaGVja3ZhcnMgPSB7fQotICAgICAgICBjaGVja3ZhcnNbJ1MnXSA9ICcke1dPUktESVJ9LyVzLSVzJyAlIChyZWNpcGVuYW1lLCByZWNpcGV2ZXIpCi0gICAgICAgIGNoZWNrdmFyc1snU1JDX1VSSSddID0gdXJsCi0gICAgICAgIHNlbGYuX3Rlc3RfcmVjaXBlX2NvbnRlbnRzKG5ld3JlY2lwZWZpbGUsIGNoZWNrdmFycywgW10pCi0gICAgICAgICMgVHJ5IGFnYWluIC0gY2hhbmdlIGp1c3QgbmFtZSB0aGlzIHRpbWUKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHJlc2V0IC1uICVzJyAlIG5ld3JlY2lwZW5hbWUpCi0gICAgICAgIHNodXRpbC5ybXRyZWUobmV3c3JjdHJlZSkKLSAgICAgICAgYWRkX3JlY2lwZSgpCi0gICAgICAgIG5ld3JlY2lwZWZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdyZWNpcGVzJywgbmV3cmVjaXBlbmFtZSwgJyVzXyVzLmJiJyAlIChuZXdyZWNpcGVuYW1lLCByZWNpcGV2ZXIpKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgcmVuYW1lICVzICVzJyAlIChyZWNpcGVuYW1lLCBuZXdyZWNpcGVuYW1lKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG5ld3JlY2lwZWZpbGUpLCAnUmVjaXBlIGZpbGUgbm90IHJlbmFtZWQnKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLndvcmtzcGFjZWRpciwgJ3JlY2lwZXMnLCByZWNpcGVuYW1lKSksICdPbGQgcmVjaXBlIGRpcmVjdG9yeSBzdGlsbCBleGlzdHMnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYud29ya3NwYWNlZGlyLCAnc291cmNlcycsIG5ld3JlY2lwZW5hbWUpKSwgJ1NvdXJjZSBkaXJlY3Rvcnkgbm90IHJlbmFtZWQnKQotICAgICAgICBjaGVja3ZhcnMgPSB7fQotICAgICAgICBjaGVja3ZhcnNbJ1MnXSA9ICcke1dPUktESVJ9LyVzLSR7UFZ9JyAlIHJlY2lwZW5hbWUKLSAgICAgICAgY2hlY2t2YXJzWydTUkNfVVJJJ10gPSB1cmwucmVwbGFjZShyZWNpcGV2ZXIsICcke1BWfScpCi0gICAgICAgIHNlbGYuX3Rlc3RfcmVjaXBlX2NvbnRlbnRzKG5ld3JlY2lwZWZpbGUsIGNoZWNrdmFycywgW10pCi0gICAgICAgICMgVHJ5IGFnYWluIC0gY2hhbmdlIGp1c3QgdmVyc2lvbiB0aGlzIHRpbWUKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIHJlc2V0IC1uICVzJyAlIG5ld3JlY2lwZW5hbWUpCi0gICAgICAgIHNodXRpbC5ybXRyZWUobmV3c3JjdHJlZSkKLSAgICAgICAgYWRkX3JlY2lwZSgpCi0gICAgICAgIG5ld3JlY2lwZWZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdyZWNpcGVzJywgcmVjaXBlbmFtZSwgJyVzXyVzLmJiJyAlIChyZWNpcGVuYW1lLCBuZXdyZWNpcGV2ZXIpKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgcmVuYW1lICVzIC1WICVzJyAlIChyZWNpcGVuYW1lLCBuZXdyZWNpcGV2ZXIpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMobmV3cmVjaXBlZmlsZSksICdSZWNpcGUgZmlsZSBub3QgcmVuYW1lZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdzb3VyY2VzJywgcmVjaXBlbmFtZSkpLCAnU291cmNlIGRpcmVjdG9yeSBubyBsb25nZXIgZXhpc3RzJykKLSAgICAgICAgY2hlY2t2YXJzID0ge30KLSAgICAgICAgY2hlY2t2YXJzWydTJ10gPSAnJHtXT1JLRElSfS8ke0JQTn0tJXMnICUgcmVjaXBldmVyCi0gICAgICAgIGNoZWNrdmFyc1snU1JDX1VSSSddID0gdXJsCi0gICAgICAgIHNlbGYuX3Rlc3RfcmVjaXBlX2NvbnRlbnRzKG5ld3JlY2lwZWZpbGUsIGNoZWNrdmFycywgW10pCi0KLSAgICBAdGVzdGNhc2UoMTU3NykKLSAgICBkZWYgdGVzdF9kZXZ0b29sX3ZpcnR1YWxfa2VybmVsX21vZGlmeShzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFN1bW1hcnk6ICAgICAgICBUaGUgcHVycG9zZSBvZiB0aGlzIHRlc3QgY2FzZSBpcyB0byB2ZXJpZnkgdGhhdAotICAgICAgICAgICAgICAgICAgICAgICAgZGV2dG9vbCBtb2RpZnkgd29ya3MgY29ycmVjdGx5IHdoZW4gYnVpbGRpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBrZXJuZWwuCi0gICAgICAgIERlcGVuZGVuY2llczogICBOQQotICAgICAgICBTdGVwczogICAgICAgICAgMS4gQnVpbGQga2VybmVsIHdpdGggYml0YmFrZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIDIuIFNhdmUgdGhlIGNvbmZpZyBmaWxlIGdlbmVyYXRlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDMuIENsZWFuIHRoZSBlbnZpcm9ubWVudC4KLSAgICAgICAgICAgICAgICAgICAgICAgIDQuIFVzZSBgZGV2dG9vbCBtb2RpZnkgdmlydHVhbC9rZXJuZWxgIHRvIHZhbGlkYXRlIGZvbGxvd2luZzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMSBUaGUgc291cmNlIGlzIGNoZWNrZWQgb3V0IGNvcnJlY3RseS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMiBUaGUgcmVzdWx0aW5nIGNvbmZpZ3VyYXRpb24gaXMgdGhlIHNhbWUgYXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGF0IHdhcyBnZXQgb24gc3RlcCAyLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgNC4zIFRoZSBLZXJuZWwgY2FuIGJlIGJ1aWxkIGNvcnJlY3RseS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuNCBDaGFuZ2VzIG1hZGUgb24gdGhlIHNvdXJjZSBhcmUgcmVmbGVjdGVkIG9uIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNlcXVlbnQgYnVpbGRzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgNC41IENoYW5nZXMgb24gdGhlIGNvbmZpZ3VyYXRpb24gYXJlIHJlZmxlY3RlZCBvbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzZXF1ZW50IGJ1aWxkcwotICAgICAgICAgRXhwZWN0ZWQ6ICAgICAgIGRldnRvb2wgbW9kaWZ5IGlzIGFibGUgdG8gY2hlY2tvdXQgdGhlIHNvdXJjZSBvZiB0aGUga2VybmVsCi0gICAgICAgICAgICAgICAgICAgICAgICAgYW5kIG1vZGlmaWNhdGlvbiB0byB0aGUgc291cmNlIGFuZCBjb25maWd1cmF0aW9ucyBhcmUgcmVmbGVjdGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBidWlsZGluZyB0aGUga2VybmVsLgotICAgICAgICAgIiIiCi0gICAgICAgICNTZXQgbWFjaGluZSB0byBxZW14dTg2IHRvIGJlIGFibGUgdG8gbW9kaWZ5IHRoZSBrZXJuZWwgYW5kCi0gICAgICAgICN2ZXJpZnkgdGhlIG1vZGlmaWNhdGlvbi4KLSAgICAgICAgZmVhdHVyZXMgPSAnTUFDSElORSA9ICJxZW11eDg2IlxuJwotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKLSAgICAgICAga2VybmVsX3Byb3ZpZGVyID0gZ2V0X2JiX3ZhcignUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsJykKLSAgICAgICAgIyBDbGVhbiB1cCB0aGUgZW52aXJvbWVudAotICAgICAgICBiaXRiYWtlKCclcyAtYyBjbGVhbicgJSBrZXJuZWxfcHJvdmlkZXIpCi0gICAgICAgIHRlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nZGV2dG9vbHFhJykKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cCh0ZW1wZGlyKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYud29ya3NwYWNlZGlyKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgKi93b3Jrc3BhY2UnKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlIC1jIGNsZWFuICVzJyAlIGtlcm5lbF9wcm92aWRlcikKLSAgICAgICAgI1N0ZXAgMQotICAgICAgICAjSGVyZSBpcyBqdXN0IGdlbmVyYXRlZCB0aGUgY29uZmlnIGZpbGUgaW5zdGVhZCBvZiBhbGwgdGhlIGtlcm5lbCB0byBvcHRpbWl6ZSB0aGUKLSAgICAgICAgI3RpbWUgb2YgZXhlY3V0aW5nIHRoaXMgdGVzdCBjYXNlLgotICAgICAgICBiaXRiYWtlKCclcyAtYyBjb25maWd1cmUnICUga2VybmVsX3Byb3ZpZGVyKQotICAgICAgICBiYmNvbmZpZyA9IG9zLnBhdGguam9pbihnZXRfYmJfdmFyKCdCJywga2VybmVsX3Byb3ZpZGVyKSwnLmNvbmZpZycpCi0gICAgICAgIGJ1aWxkaXI9IGdldF9iYl92YXIoJ1RPUERJUicpCi0gICAgICAgICNTdGVwIDIKLSAgICAgICAgcnVuQ21kKCdjcCAlcyAlcycgJSAoYmJjb25maWcsIGJ1aWxkaXIpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKGJ1aWxkaXIsICcuY29uZmlnJykpLAotICAgICAgICAgICAgICAgICAgICAgICAgJ0NvdWxkIG5vdCBjb3B5IC5jb25maWcgZmlsZSBmcm9tIGtlcm5lbCcpCi0KLSAgICAgICAgdG1wY29uZmlnID0gb3MucGF0aC5qb2luKGJ1aWxkaXIsICcuY29uZmlnJykKLSAgICAgICAgI1N0ZXAgMwotICAgICAgICBiaXRiYWtlKCclcyAtYyBjbGVhbicgJSBrZXJuZWxfcHJvdmlkZXIpCi0gICAgICAgICNTdGVwIDQuMQotICAgICAgICBydW5DbWQoJ2RldnRvb2wgbW9kaWZ5IHZpcnR1YWwva2VybmVsIC14ICVzJyAlIHRlbXBkaXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4odGVtcGRpciwgJ01ha2VmaWxlJykpLAotICAgICAgICAgICAgICAgICAgICAgICAgJ0V4dHJhY3RlZCBzb3VyY2UgY291bGQgbm90IGJlIGZvdW5kJykKLSAgICAgICAgI1N0ZXAgNC4yCi0gICAgICAgIGNvbmZpZ2ZpbGUgPSBvcy5wYXRoLmpvaW4odGVtcGRpciwnLmNvbmZpZycpCi0gICAgICAgIGRpZmYgPSBydW5DbWQoJ2RpZmYgJXMgJXMnICUgKHRtcGNvbmZpZywgY29uZmlnZmlsZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCxkaWZmLnN0YXR1cywnS2VybmVsIC5jb25maWcgZmlsZSBpcyBub3QgdGhlIHNhbWUgdXNpbmcgYml0YmFrZSBhbmQgZGV2dG9vbCcpCi0gICAgICAgICNTdGVwIDQuMwotICAgICAgICAjTk9URTogdmlydHVhbC9rZXJuZWwgaXMgbWFwcGVkIHRvIGtlcm5lbF9wcm92aWRlcgotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgYnVpbGQgJXMnICUga2VybmVsX3Byb3ZpZGVyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAscmVzdWx0LnN0YXR1cywnQ2Fubm90IGJ1aWxkIGtlcm5lbCB1c2luZyBgZGV2dG9vbCBidWlsZGAnKQotICAgICAgICBrZXJuZWxmaWxlID0gb3MucGF0aC5qb2luKGdldF9iYl92YXIoJ0tCVUlMRF9PVVRQVVQnLCBrZXJuZWxfcHJvdmlkZXIpLCAndm1saW51eCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhrZXJuZWxmaWxlKSwnS2VybmVsIHdhcyBub3QgYnVpbGQgY29ycmVjdGx5JykKLQotICAgICAgICAjTW9kaWZ5IHRoZSBrZXJuZWwgc291cmNlLCB0aGlzIGlzIHNwZWNpZmljIGZvciBxZW11eDg2Ci0gICAgICAgIG1vZGZpbGUgPSBvcy5wYXRoLmpvaW4odGVtcGRpciwnYXJjaC94ODYvYm9vdC9oZWFkZXIuUycpCi0gICAgICAgIG1vZHN0cmluZyA9ICJ1c2UgYSBib290IGxvYWRlciAtIERldnRvb2wga2VybmVsIHRlc3RpbmciCi0gICAgICAgIG1vZGFwcGxpZWQgPSBydW5DbWQoInNlZCAtaSAncy9ib290IGxvYWRlci8lcy8nICVzIiAlIChtb2RzdHJpbmcsIG1vZGZpbGUpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsbW9kYXBwbGllZC5zdGF0dXMsJ01vZGlmaWNhdGlvbiB0byAlcyBvbiBrZXJuZWwgc291cmNlIGZhaWxlZCcgJSBtb2RmaWxlKQotICAgICAgICAjTW9kaWZ5IHRoZSBjb25maWd1cmF0aW9uCi0gICAgICAgIGNvZGVjb25maWdmaWxlID0gb3MucGF0aC5qb2luKHRlbXBkaXIsJy5jb25maWcubmV3JykKLSAgICAgICAgbW9kY29uZm9wdCA9ICJDT05GSUdfU0dfUE9PTD1uIgotICAgICAgICBtb2Rjb25mID0gcnVuQ21kKCJzZWQgLWkgJ3MvQ09ORklHX1NHX1BPT0w9eS8lcy8nICVzIiAlIChtb2Rjb25mb3B0LCBjb2RlY29uZmlnZmlsZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCxtb2Rjb25mLnN0YXR1cywnTW9kaWZpY2F0aW9uIHRvICVzIGZhaWxlZCcgJSBjb2RlY29uZmlnZmlsZSkKLSAgICAgICAgI0J1aWxkIGFnYWluIGtlcm5lbCB3aXRoIGRldnRvb2wKLSAgICAgICAgcmVidWlsZCA9IHJ1bkNtZCgnZGV2dG9vbCBidWlsZCAlcycgJSBrZXJuZWxfcHJvdmlkZXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCxyZWJ1aWxkLnN0YXR1cywnRmFpbCB0byBidWlsZCBrZXJuZWwgYWZ0ZXIgbW9kaWZpY2F0aW9uIG9mIHNvdXJjZSBhbmQgY29uZmlnJykKLSAgICAgICAgI1N0ZXAgNC40Ci0gICAgICAgIGJ6aW1hZ2VuYW1lID0gJ2J6SW1hZ2UtJyArIGdldF9iYl92YXIoJ0tFUk5FTF9WRVJTSU9OX05BTUUnLCBrZXJuZWxfcHJvdmlkZXIpCi0gICAgICAgIGJ6aW1hZ2VmaWxlID0gb3MucGF0aC5qb2luKGdldF9iYl92YXIoJ0QnLCBrZXJuZWxfcHJvdmlkZXIpLCdib290JywgYnppbWFnZW5hbWUpCi0gICAgICAgIGNoZWNrbW9kY29kZSA9IHJ1bkNtZCgiZ3JlcCAnJXMnICVzIiAlIChtb2RzdHJpbmcsIGJ6aW1hZ2VmaWxlKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLGNoZWNrbW9kY29kZS5zdGF0dXMsJ01vZGlmaWNhdGlvbiBvbiBrZXJuZWwgc291cmNlIGZhaWxlZCcpCi0gICAgICAgICNTdGVwIDQuNQotICAgICAgICBjaGVja21vZGNvbmZnID0gcnVuQ21kKCJncmVwICVzICVzIiAlIChtb2Rjb25mb3B0LCBjb2RlY29uZmlnZmlsZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCxjaGVja21vZGNvbmZnLnN0YXR1cywnTW9kaWZpY2F0aW9uIHRvIGNvbmZpZ3VyYXRpb24gZmlsZSBmYWlsZWQnKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvZVNESy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2VTREsucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1OTZjNmUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvZVNESy5weQorKysgL2Rldi9udWxsCkBAIC0xLDExNSArMCwwIEBACi1pbXBvcnQgdW5pdHRlc3QKLWltcG9ydCB0ZW1wZmlsZQotaW1wb3J0IHNodXRpbAotaW1wb3J0IG9zCi1pbXBvcnQgZ2xvYgotaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBzdWJwcm9jZXNzCi1pbXBvcnQgb2VxYS51dGlscy5mdG9vbHMgYXMgZnRvb2xzCi1mcm9tIG9lcWEudXRpbHMuZGVjb3JhdG9ycyBpbXBvcnQgdGVzdGNhc2UKLWZyb20gb2VxYS5zZWxmdGVzdC5iYXNlIGltcG9ydCBvZVNlbGZUZXN0Ci1mcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZCwgYml0YmFrZSwgZ2V0X2JiX3ZhciwgZ2V0X2JiX3ZhcnMKLQotY2xhc3Mgb2VTREtFeHRTZWxmVGVzdChvZVNlbGZUZXN0KToKLSAgICAiIiIKLSAgICAjIEJ1Z3ppbGxhIFRlc3QgUGxhbjogNjAzMwotICAgICMgVGhpcyBjb2RlIGlzIHBsYW5uZWQgdG8gYmUgcGFydCBvZiB0aGUgYXV0b21hdGlvbiBmb3IgZVNESyBjb250YWluaWcKLSAgICAjIEluc3RhbGwgbGlicmFyaWVzIGFuZCBoZWFkZXJzLCBpbWFnZSBnZW5lcmF0aW9uIGJpbmFyeSBmZWVkcywgc2RrLXVwZGF0ZS4KLSAgICAiIiIKLQotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgZ2V0X2VzZGtfZW52aXJvbm1lbnQoZW52X2VTREssIHRtcGRpcl9lU0RLUUEpOgotICAgICAgICAjIFhYWDogYXQgdGhpcyB0aW1lIHVzZSB0aGUgZmlyc3QgZW52IG5lZWQgdG8gaW52ZXN0aWdhdGUKLSAgICAgICAgIyB3aGF0IGVudmlyb25tZW50IGxvYWQgb2Utc2VsZnRlc3QsIGk1ODYsIHg4Nl82NAotICAgICAgICBwYXR0ZXJuID0gb3MucGF0aC5qb2luKHRtcGRpcl9lU0RLUUEsICdlbnZpcm9ubWVudC1zZXR1cC0qJykKLSAgICAgICAgcmV0dXJuIGdsb2IuZ2xvYihwYXR0ZXJuKVswXQotCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBydW5fZXNka19jbWQoZW52X2VTREssIHRtcGRpcl9lU0RLUUEsIGNtZCwgcG9zdGNvbmZpZz1Ob25lLCAqKm9wdGlvbnMpOgotICAgICAgICBpZiBwb3N0Y29uZmlnOgotICAgICAgICAgICAgZXNka19jb25mX2ZpbGUgPSBvcy5wYXRoLmpvaW4odG1wZGlyX2VTREtRQSwgJ2NvbmYnLCAnbG9jYWwuY29uZicpCi0gICAgICAgICAgICB3aXRoIG9wZW4oZXNka19jb25mX2ZpbGUsICdhKycpIGFzIGY6Ci0gICAgICAgICAgICAgICAgZi53cml0ZShwb3N0Y29uZmlnKQotICAgICAgICBpZiBub3Qgb3B0aW9uczoKLSAgICAgICAgICAgIG9wdGlvbnMgPSB7fQotICAgICAgICBpZiBub3QgJ3NoZWxsJyBpbiBvcHRpb25zOgotICAgICAgICAgICAgb3B0aW9uc1snc2hlbGwnXSA9IFRydWUKLQotICAgICAgICBydW5DbWQoImNkICVzOyAuICVzOyAlcyIgJSAodG1wZGlyX2VTREtRQSwgZW52X2VTREssIGNtZCksICoqb3B0aW9ucykKLQotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgZ2VuZXJhdGVfZVNESyhpbWFnZSk6Ci0gICAgICAgIHBuX3Rhc2sgPSAnJXMgLWMgcG9wdWxhdGVfc2RrX2V4dCcgJSBpbWFnZQotICAgICAgICBiaXRiYWtlKHBuX3Rhc2spCi0KLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIGdldF9lU0RLX3Rvb2xjaGFpbihpbWFnZSk6Ci0gICAgICAgIHBuX3Rhc2sgPSAnJXMgLWMgcG9wdWxhdGVfc2RrX2V4dCcgJSBpbWFnZQotCi0gICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ1NES19ERVBMT1knLCAnVE9PTENIQUlORVhUX09VVFBVVE5BTUUnXSwgcG5fdGFzaykKLSAgICAgICAgc2RrX2RlcGxveSA9IGJiX3ZhcnNbJ1NES19ERVBMT1knXQotICAgICAgICB0b29sY2hhaW5fbmFtZSA9IGJiX3ZhcnNbJ1RPT0xDSEFJTkVYVF9PVVRQVVROQU1FJ10KLSAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihzZGtfZGVwbG95LCB0b29sY2hhaW5fbmFtZSArICcuc2gnKQotCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiB1cGRhdGVfY29uZmlndXJhdGlvbihjbHMsIGltYWdlLCB0bXBkaXJfZVNES1FBLCBlbnZfZVNESywgZXh0X3Nka19wYXRoKToKLSAgICAgICAgc3N0YXRlX2RpciA9IG9zLnBhdGguam9pbihvcy5lbnZpcm9uWydCVUlMRERJUiddLCAnc3N0YXRlLWNhY2hlJykKLQotICAgICAgICBvZVNES0V4dFNlbGZUZXN0LmdlbmVyYXRlX2VTREsoY2xzLmltYWdlKQotCi0gICAgICAgIGNscy5leHRfc2RrX3BhdGggPSBvZVNES0V4dFNlbGZUZXN0LmdldF9lU0RLX3Rvb2xjaGFpbihjbHMuaW1hZ2UpCi0gICAgICAgIHJ1bkNtZCgiJXMgLXkgLWQgXCIlc1wiIiAlIChjbHMuZXh0X3Nka19wYXRoLCBjbHMudG1wZGlyX2VTREtRQSkpCi0KLSAgICAgICAgY2xzLmVudl9lU0RLID0gb2VTREtFeHRTZWxmVGVzdC5nZXRfZXNka19lbnZpcm9ubWVudCgnJywgY2xzLnRtcGRpcl9lU0RLUUEpCi0KLSAgICAgICAgc3N0YXRlX2NvbmZpZz0iIiIKLVNES19MT0NBTF9DT05GX1dISVRFTElTVCA9ICJTU1RBVEVfTUlSUk9SUyIKLVNTVEFURV9NSVJST1JTID0gICJmaWxlOi8vLiogZmlsZTovLyVzL1BBVEgiCi1DT1JFX0lNQUdFX0VYVFJBX0lOU1RBTEwgPSAicGVybCIKLSAgICAgICAgIiIiICUgc3N0YXRlX2RpcgotCi0gICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oY2xzLnRtcGRpcl9lU0RLUUEsICdjb25mJywgJ2xvY2FsLmNvbmYnKSwgJ2ErJykgYXMgZjoKLSAgICAgICAgICAgIGYud3JpdGUoc3N0YXRlX2NvbmZpZykKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBzZXRVcENsYXNzKGNscyk6Ci0gICAgICAgIGNscy50bXBkaXJfZVNES1FBID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J2VTREtRQScpCi0KLSAgICAgICAgc3N0YXRlX2RpciA9IGdldF9iYl92YXIoJ1NTVEFURV9ESVInKQotCi0gICAgICAgIGNscy5pbWFnZSA9ICdjb3JlLWltYWdlLW1pbmltYWwnCi0gICAgICAgIG9lU0RLRXh0U2VsZlRlc3QuZ2VuZXJhdGVfZVNESyhjbHMuaW1hZ2UpCi0KLSAgICAgICAgIyBJbnN0YWxsIGVTREsKLSAgICAgICAgY2xzLmV4dF9zZGtfcGF0aCA9IG9lU0RLRXh0U2VsZlRlc3QuZ2V0X2VTREtfdG9vbGNoYWluKGNscy5pbWFnZSkKLSAgICAgICAgcnVuQ21kKCIlcyAteSAtZCBcIiVzXCIiICUgKGNscy5leHRfc2RrX3BhdGgsIGNscy50bXBkaXJfZVNES1FBKSkKLQotICAgICAgICBjbHMuZW52X2VTREsgPSBvZVNES0V4dFNlbGZUZXN0LmdldF9lc2RrX2Vudmlyb25tZW50KCcnLCBjbHMudG1wZGlyX2VTREtRQSkKLQotICAgICAgICAjIENvbmZpZ3VyZSBlU0RLIHRvIHVzZSBzc3RhdGUgbWlycm9yIGZyb20gcG9reQotICAgICAgICBzc3RhdGVfY29uZmlnPSIiIgotU0RLX0xPQ0FMX0NPTkZfV0hJVEVMSVNUID0gIlNTVEFURV9NSVJST1JTIgotU1NUQVRFX01JUlJPUlMgPSAgImZpbGU6Ly8uKiBmaWxlOi8vJXMvUEFUSCIKLSAgICAgICAgICAgICIiIiAlIHNzdGF0ZV9kaXIKLSAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihjbHMudG1wZGlyX2VTREtRQSwgJ2NvbmYnLCAnbG9jYWwuY29uZicpLCAnYSsnKSBhcyBmOgotICAgICAgICAgICAgZi53cml0ZShzc3RhdGVfY29uZmlnKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKLSAgICAgICAgc2h1dGlsLnJtdHJlZShjbHMudG1wZGlyX2VTREtRQSkKLQotICAgIEB0ZXN0Y2FzZSAoMTYwMikKLSAgICBkZWYgdGVzdF9pbnN0YWxsX2xpYnJhcmllc19oZWFkZXJzKHNlbGYpOgotICAgICAgICBwbl9zc3RhdGUgPSAnYmMnCi0gICAgICAgIGJpdGJha2UocG5fc3N0YXRlKQotICAgICAgICBjbWQgPSAiZGV2dG9vbCBzZGstaW5zdGFsbCAlcyAiICUgcG5fc3N0YXRlCi0gICAgICAgIG9lU0RLRXh0U2VsZlRlc3QucnVuX2VzZGtfY21kKHNlbGYuZW52X2VTREssIHNlbGYudG1wZGlyX2VTREtRQSwgY21kKQotCi0gICAgQHRlc3RjYXNlKDE2MDMpCi0gICAgZGVmIHRlc3RfaW1hZ2VfZ2VuZXJhdGlvbl9iaW5hcnlfZmVlZHMoc2VsZik6Ci0gICAgICAgIGltYWdlID0gJ2NvcmUtaW1hZ2UtbWluaW1hbCcKLSAgICAgICAgY21kID0gImRldnRvb2wgYnVpbGQtaW1hZ2UgJXMiICUgaW1hZ2UKLSAgICAgICAgb2VTREtFeHRTZWxmVGVzdC5ydW5fZXNka19jbWQoc2VsZi5lbnZfZVNESywgc2VsZi50bXBkaXJfZVNES1FBLCBjbWQpCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9pbWFnZV90eXBlZGVwLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvaW1hZ2VfdHlwZWRlcC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjU2MTQyZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9pbWFnZV90eXBlZGVwLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotaW1wb3J0IG9zCi0KLWZyb20gb2VxYS5zZWxmdGVzdC5iYXNlIGltcG9ydCBvZVNlbGZUZXN0Ci1mcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IGJpdGJha2UKLQotY2xhc3MgSW1hZ2VUeXBlRGVwVGVzdHMob2VTZWxmVGVzdCk6Ci0KLSAgICAjIFZlcmlmeSB0aGF0IHdoZW4gc3BlY2lmeWluZyBhIElNQUdFX1RZUEVERVBfIG9mIHRoZSBmb3JtICJmb28uYmFyIiB0aGF0Ci0gICAgIyB0aGUgY29udmVyc2lvbiB0eXBlIGJhciBnZXRzIGFkZGVkIGFzIGEgZGVwIGFzIHdlbGwKLSAgICBkZWYgdGVzdF9jb252ZXJzaW9uX3R5cGVkZXBfYWRkZWQoc2VsZik6Ci0KLSAgICAgICAgc2VsZi53cml0ZV9yZWNpcGVpbmMoJ2VtcHR5dGVzdCcsICIiIgotIyBUcnkgdG8gZW1wdHkgb3V0IHRoZSBkZWZhdWx0IGRlcGVuZGVuY3kgbGlzdAotUEFDS0FHRV9JTlNUQUxMID0gIiIKLURJU1RST19FWFRSQV9SREVQRU5EUz0iIgotCi1MSUNFTlNFID0gIk1JVCIKLUlNQUdFX0ZTVFlQRVMgPSAidGVzdGZzdHlwZSIKLQotSU1BR0VfVFlQRVNfTUFTS0VEICs9ICJ0ZXN0ZnN0eXBlIgotSU1BR0VfVFlQRURFUF90ZXN0ZnN0eXBlID0gInRhci5iejIiCi0KLWluaGVyaXQgaW1hZ2UKLQotIiIiKQotICAgICAgICAjIEZpcnN0IGdldCB0aGUgZGVwZW5kZW5jeSB0aGF0IHNob3VsZCBleGlzdCBmb3IgYnoyLCBpdCB3aWxsIGxvb2sKLSAgICAgICAgIyBsaWtlIENPTlZFUlNJT05fREVQRU5EU19iejI9InNvbWVkZXAiCi0gICAgICAgIHJlc3VsdCA9IGJpdGJha2UoJy1lIGVtcHR5dGVzdCcpCi0KLSAgICAgICAgZm9yIGxpbmUgaW4gcmVzdWx0Lm91dHB1dC5zcGxpdCgnXG4nKToKLSAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnQ09OVkVSU0lPTl9ERVBFTkRTX2J6MicpOgotICAgICAgICAgICAgICAgIGRlcCA9IGxpbmUuc3BsaXQoJz0nKVsxXS5zdHJpcCgnIicpCi0gICAgICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICAjIE5vdyBnZXQgdGhlIGRlcGVuZGVuY3kgdGFzayBsaXN0IGFuZCBjaGVjayBmb3IgdGhlIGV4cGVjdGVkIHRhc2sKLSAgICAgICAgIyBkZXBlbmRlbmN5Ci0gICAgICAgIGJpdGJha2UoJy1nIGVtcHR5dGVzdCcpCi0KLSAgICAgICAgdGFza2RlcGVuZHNmaWxlID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsICd0YXNrLWRlcGVuZHMuZG90JykKLSAgICAgICAgZGVwID0gIGRlcCArICIuZG9fcG9wdWxhdGVfc3lzcm9vdCIKLSAgICAgICAgZGVwZm91bmQgPSBGYWxzZQotICAgICAgICBleHBlY3RlZGxpbmUgPSAnImVtcHR5dGVzdC5kb19yb290ZnMiIC0+ICJ7fSInLmZvcm1hdChkZXApCi0KLSAgICAgICAgd2l0aCBvcGVuKHRhc2tkZXBlbmRzZmlsZSwgInIiKSBhcyBmOgotICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKLSAgICAgICAgICAgICAgICBpZiBsaW5lLnN0cmlwKCkgPT0gZXhwZWN0ZWRsaW5lOgotICAgICAgICAgICAgICAgICAgICBkZXBmb3VuZCA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICBpZiBub3QgZGVwZm91bmQ6Ci0gICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigiXCJ7fVwiIG5vdCBmb3VuZCIuZm9ybWF0KGV4cGVjdGVkbGluZSkpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9pbWFnZWZlYXR1cmVzLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvaW1hZ2VmZWF0dXJlcy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzY4OTZjNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9pbWFnZWZlYXR1cmVzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTI3ICswLDAgQEAKLWZyb20gb2VxYS5zZWxmdGVzdC5iYXNlIGltcG9ydCBvZVNlbGZUZXN0Ci1mcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZCwgYml0YmFrZSwgZ2V0X2JiX3ZhciwgcnVucWVtdQotZnJvbSBvZXFhLnV0aWxzLmRlY29yYXRvcnMgaW1wb3J0IHRlc3RjYXNlCi1mcm9tIG9lcWEudXRpbHMuc3NoY29udHJvbCBpbXBvcnQgU1NIQ29udHJvbAotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi1pbXBvcnQgbG9nZ2luZwotCi1jbGFzcyBJbWFnZUZlYXR1cmVzKG9lU2VsZlRlc3QpOgotCi0gICAgdGVzdF91c2VyID0gJ3Rlc3RlcicKLSAgICByb290X3VzZXIgPSAncm9vdCcKLQotICAgIEB0ZXN0Y2FzZSgxMTA3KQotICAgIGRlZiB0ZXN0X25vbl9yb290X3VzZXJfY2FuX2Nvbm5lY3RfdmlhX3NzaF93aXRob3V0X3Bhc3N3b3JkKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgU3VtbWFyeTogQ2hlY2sgaWYgbm9uIHJvb3QgdXNlciBjYW4gY29ubmVjdCB2aWEgc3NoIHdpdGhvdXQgcGFzc3dvcmQKLSAgICAgICAgRXhwZWN0ZWQ6IDEuIENvbm5lY3Rpb24gdG8gdGhlIGltYWdlIHZpYSBzc2ggdXNpbmcgcm9vdCB1c2VyIHdpdGhvdXQgcHJvdmlkaW5nIGEgcGFzc3dvcmQgc2hvdWxkIGJlIGFsbG93ZWQuCi0gICAgICAgICAgICAgICAgICAyLiBDb25uZWN0aW9uIHRvIHRoZSBpbWFnZSB2aWEgc3NoIHVzaW5nIHRlc3RlciB1c2VyIHdpdGhvdXQgcHJvdmlkaW5nIGEgcGFzc3dvcmQgc2hvdWxkIGJlIGFsbG93ZWQuCi0gICAgICAgIFByb2R1Y3Q6IG9lLWNvcmUKLSAgICAgICAgQXV0aG9yOiBJb251dCBDaGlzYW5vdmljaSA8aW9udXR4LmNoaXNhbm92aWNpQGludGVsLmNvbT4KLSAgICAgICAgQXV0b21hdGVkQnk6IERhbmllbCBJc3RyYXRlIDxkYW5pZWwuYWxleGFuZHJ1eC5pc3RyYXRlQGludGVsLmNvbT4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgZmVhdHVyZXMgPSAnRVhUUkFfSU1BR0VfRkVBVFVSRVMgPSAic3NoLXNlcnZlci1vcGVuc3NoIGVtcHR5LXJvb3QtcGFzc3dvcmQgYWxsb3ctZW1wdHktcGFzc3dvcmQiXG4nCi0gICAgICAgIGZlYXR1cmVzICs9ICdJTkhFUklUICs9ICJleHRyYXVzZXJzIlxuJwotICAgICAgICBmZWF0dXJlcyArPSAnRVhUUkFfVVNFUlNfUEFSQU1TID0gInVzZXJhZGQgLXAgXCdcJyB7fTsgdXNlcm1vZCAtcyAvYmluL3NoIHt9OyInLmZvcm1hdChzZWxmLnRlc3RfdXNlciwgc2VsZi50ZXN0X3VzZXIpCi0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmVzKQotCi0gICAgICAgICMgQnVpbGQgYSBjb3JlLWltYWdlLW1pbmltYWwKLSAgICAgICAgYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsJykKLQotICAgICAgICB3aXRoIHJ1bnFlbXUoImNvcmUtaW1hZ2UtbWluaW1hbCIpIGFzIHFlbXU6Ci0gICAgICAgICAgICAjIEF0dGVtcHQgdG8gc3NoIHdpdGggZWFjaCB1c2VyIGludG8gcWVtdSB3aXRoIGVtcHR5IHBhc3N3b3JkCi0gICAgICAgICAgICBmb3IgdXNlciBpbiBbc2VsZi5yb290X3VzZXIsIHNlbGYudGVzdF91c2VyXToKLSAgICAgICAgICAgICAgICBzc2ggPSBTU0hDb250cm9sKGlwPXFlbXUuaXAsIGxvZ2ZpbGU9cWVtdS5zc2hsb2csIHVzZXI9dXNlcikKLSAgICAgICAgICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNzaC5ydW4oInRydWUiKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCAnc3NoIHRvIHVzZXIgJXMgZmFpbGVkIHdpdGggJXMnICUgKHVzZXIsIG91dHB1dCkpCi0KLSAgICBAdGVzdGNhc2UoMTExNSkKLSAgICBkZWYgdGVzdF9hbGxfdXNlcnNfY2FuX2Nvbm5lY3RfdmlhX3NzaF93aXRob3V0X3Bhc3N3b3JkKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgU3VtbWFyeTogICAgIENoZWNrIGlmIGFsbCB1c2VycyBjYW4gY29ubmVjdCB2aWEgc3NoIHdpdGhvdXQgcGFzc3dvcmQKLSAgICAgICAgRXhwZWN0ZWQ6IDEuIENvbm5lY3Rpb24gdG8gdGhlIGltYWdlIHZpYSBzc2ggdXNpbmcgcm9vdCB1c2VyIHdpdGhvdXQgcHJvdmlkaW5nIGEgcGFzc3dvcmQgc2hvdWxkIE5PVCBiZSBhbGxvd2VkLgotICAgICAgICAgICAgICAgICAgMi4gQ29ubmVjdGlvbiB0byB0aGUgaW1hZ2UgdmlhIHNzaCB1c2luZyB0ZXN0ZXIgdXNlciB3aXRob3V0IHByb3ZpZGluZyBhIHBhc3N3b3JkIHNob3VsZCBiZSBhbGxvd2VkLgotICAgICAgICBQcm9kdWN0OiAgICAgb2UtY29yZQotICAgICAgICBBdXRob3I6ICAgICAgSW9udXQgQ2hpc2Fub3ZpY2kgPGlvbnV0eC5jaGlzYW5vdmljaUBpbnRlbC5jb20+Ci0gICAgICAgIEF1dG9tYXRlZEJ5OiBEYW5pZWwgSXN0cmF0ZSA8ZGFuaWVsLmFsZXhhbmRydXguaXN0cmF0ZUBpbnRlbC5jb20+Ci0gICAgICAgICIiIgotCi0gICAgICAgIGZlYXR1cmVzID0gJ0VYVFJBX0lNQUdFX0ZFQVRVUkVTID0gInNzaC1zZXJ2ZXItb3BlbnNzaCBhbGxvdy1lbXB0eS1wYXNzd29yZCJcbicKLSAgICAgICAgZmVhdHVyZXMgKz0gJ0lOSEVSSVQgKz0gImV4dHJhdXNlcnMiXG4nCi0gICAgICAgIGZlYXR1cmVzICs9ICdFWFRSQV9VU0VSU19QQVJBTVMgPSAidXNlcmFkZCAtcCBcJ1wnIHt9OyB1c2VybW9kIC1zIC9iaW4vc2gge307IicuZm9ybWF0KHNlbGYudGVzdF91c2VyLCBzZWxmLnRlc3RfdXNlcikKLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZXMpCi0KLSAgICAgICAgIyBCdWlsZCBhIGNvcmUtaW1hZ2UtbWluaW1hbAotICAgICAgICBiaXRiYWtlKCdjb3JlLWltYWdlLW1pbmltYWwnKQotCi0gICAgICAgIHdpdGggcnVucWVtdSgiY29yZS1pbWFnZS1taW5pbWFsIikgYXMgcWVtdToKLSAgICAgICAgICAgICMgQXR0ZW1wdCB0byBzc2ggd2l0aCBlYWNoIHVzZXIgaW50byBxZW11IHdpdGggZW1wdHkgcGFzc3dvcmQKLSAgICAgICAgICAgIGZvciB1c2VyIGluIFtzZWxmLnJvb3RfdXNlciwgc2VsZi50ZXN0X3VzZXJdOgotICAgICAgICAgICAgICAgIHNzaCA9IFNTSENvbnRyb2woaXA9cWVtdS5pcCwgbG9nZmlsZT1xZW11LnNzaGxvZywgdXNlcj11c2VyKQotICAgICAgICAgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gc3NoLnJ1bigidHJ1ZSIpCi0gICAgICAgICAgICAgICAgaWYgdXNlciA9PSAncm9vdCc6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoc3RhdHVzLCAwLCAnc3NoIHRvIHVzZXIgcm9vdCB3YXMgYWxsb3dlZCB3aGVuIGl0IHNob3VsZCBub3QgaGF2ZSBiZWVuJykKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMCwgJ3NzaCB0byB1c2VyIHRlc3RlciBmYWlsZWQgd2l0aCAlcycgJSBvdXRwdXQpCi0KLQotICAgIEB0ZXN0Y2FzZSgxMTE2KQotICAgIGRlZiB0ZXN0X2NsdXR0ZXJfaW1hZ2VfY2FuX2JlX2J1aWx0KHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgU3VtbWFyeTogICAgIENoZWNrIGlmIGNsdXR0ZXIgaW1hZ2UgY2FuIGJlIGJ1aWx0Ci0gICAgICAgIEV4cGVjdGVkOiAgICAxLiBjb3JlLWltYWdlLWNsdXR0ZXIgY2FuIGJlIGJ1aWx0Ci0gICAgICAgIFByb2R1Y3Q6ICAgICBvZS1jb3JlCi0gICAgICAgIEF1dGhvcjogICAgICBJb251dCBDaGlzYW5vdmljaSA8aW9udXR4LmNoaXNhbm92aWNpQGludGVsLmNvbT4KLSAgICAgICAgQXV0b21hdGVkQnk6IERhbmllbCBJc3RyYXRlIDxkYW5pZWwuYWxleGFuZHJ1eC5pc3RyYXRlQGludGVsLmNvbT4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgIyBCdWlsZCBhIGNvcmUtaW1hZ2UtY2x1dHRlcgotICAgICAgICBiaXRiYWtlKCdjb3JlLWltYWdlLWNsdXR0ZXInKQotCi0gICAgQHRlc3RjYXNlKDExMTcpCi0gICAgZGVmIHRlc3Rfd2F5bGFuZF9zdXBwb3J0X2luX2ltYWdlKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgU3VtbWFyeTogICAgIENoZWNrIFdheWxhbmQgc3VwcG9ydCBpbiBpbWFnZQotICAgICAgICBFeHBlY3RlZDogICAgMS4gV2F5bGFuZCBpbWFnZSBjYW4gYmUgYnVpbGQKLSAgICAgICAgICAgICAgICAgICAgIDIuIFdheWxhbmQgZmVhdHVyZSBjYW4gYmUgaW5zdGFsbGVkCi0gICAgICAgIFByb2R1Y3Q6ICAgICBvZS1jb3JlCi0gICAgICAgIEF1dGhvcjogICAgICBJb251dCBDaGlzYW5vdmljaSA8aW9udXR4LmNoaXNhbm92aWNpQGludGVsLmNvbT4KLSAgICAgICAgQXV0b21hdGVkQnk6IERhbmllbCBJc3RyYXRlIDxkYW5pZWwuYWxleGFuZHJ1eC5pc3RyYXRlQGludGVsLmNvbT4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgZGlzdHJvX2ZlYXR1cmVzID0gZ2V0X2JiX3ZhcignRElTVFJPX0ZFQVRVUkVTJykKLSAgICAgICAgaWYgbm90ICgnb3BlbmdsJyBpbiBkaXN0cm9fZmVhdHVyZXMgYW5kICd3YXlsYW5kJyBpbiBkaXN0cm9fZmVhdHVyZXMpOgotICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnbmVpdGhlciBvcGVuZ2wgbm9yIHdheWxhbmQgcHJlc2VudCBvbiBESVNUUk9fRkVBVFVSRVMgc28gY29yZS1pbWFnZS13ZXN0b24gY2Fubm90IGJlIGJ1aWx0JykKLQotICAgICAgICAjIEJ1aWxkIGEgY29yZS1pbWFnZS13ZXN0b24KLSAgICAgICAgYml0YmFrZSgnY29yZS1pbWFnZS13ZXN0b24nKQotCi0gICAgZGVmIHRlc3RfYm1hcChzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFN1bW1hcnk6ICAgICBDaGVjayBibWFwIHN1cHBvcnQKLSAgICAgICAgRXhwZWN0ZWQ6ICAgIDEuIGNvcmUtaW1hZ2UtbWluaW1hbCBjYW4gYmUgYnVpbGQgd2l0aCBibWFwIHN1cHBvcnQKLSAgICAgICAgICAgICAgICAgICAgIDIuIGNvcmUtaW1hZ2UtbWluaW1hbCBpcyBzcGFyc2UKLSAgICAgICAgUHJvZHVjdDogICAgIG9lLWNvcmUKLSAgICAgICAgQXV0aG9yOiAgICAgIEVkIEJhcnRvc2ggPGVkLmJhcnRvc2hAbGludXguaW50ZWwuY29tPgotICAgICAgICAiIiIKLQotICAgICAgICBmZWF0dXJlcyA9ICdJTUFHRV9GU1RZUEVTICs9ICIgZXh0NCBleHQ0LmJtYXAiJwotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKLQotICAgICAgICBpbWFnZV9uYW1lID0gJ2NvcmUtaW1hZ2UtbWluaW1hbCcKLSAgICAgICAgYml0YmFrZShpbWFnZV9uYW1lKQotCi0gICAgICAgIGRlcGxveV9kaXJfaW1hZ2UgPSBnZXRfYmJfdmFyKCdERVBMT1lfRElSX0lNQUdFJykKLSAgICAgICAgbGlua19uYW1lID0gZ2V0X2JiX3ZhcignSU1BR0VfTElOS19OQU1FJywgaW1hZ2VfbmFtZSkKLSAgICAgICAgaW1hZ2VfcGF0aCA9IG9zLnBhdGguam9pbihkZXBsb3lfZGlyX2ltYWdlLCAiJXMuZXh0NCIgJSBsaW5rX25hbWUpCi0gICAgICAgIGJtYXBfcGF0aCA9ICIlcy5ibWFwIiAlIGltYWdlX3BhdGgKLQotICAgICAgICAjIGNoZWNrIGlmIHJlc3VsdCBpbWFnZSBhbmQgYm1hcCBmaWxlIGFyZSBpbiBkZXBsb3kgZGlyZWN0b3J5Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhpbWFnZV9wYXRoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGJtYXBfcGF0aCkpCi0KLSAgICAgICAgIyBjaGVjayBpZiByZXN1bHQgaW1hZ2UgaXMgc3BhcnNlCi0gICAgICAgIGltYWdlX3N0YXQgPSBvcy5zdGF0KGltYWdlX3BhdGgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbWFnZV9zdGF0LnN0X3NpemUgPiBpbWFnZV9zdGF0LnN0X2Jsb2NrcyAqIDUxMikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2xheWVyYXBwZW5kLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvbGF5ZXJhcHBlbmQucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3YmIzMmMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvbGF5ZXJhcHBlbmQucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBAQAotaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgb3MKLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgcmUKLQotZnJvbSBvZXFhLnNlbGZ0ZXN0LmJhc2UgaW1wb3J0IG9lU2VsZlRlc3QKLWZyb20gb2VxYS5zZWxmdGVzdC5idWlsZGhpc3RvcnkgaW1wb3J0IEJ1aWxkaGlzdG9yeUJhc2UKLWZyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kLCBiaXRiYWtlLCBnZXRfYmJfdmFyCi1pbXBvcnQgb2VxYS51dGlscy5mdG9vbHMgYXMgZnRvb2xzCi1mcm9tIG9lcWEudXRpbHMuZGVjb3JhdG9ycyBpbXBvcnQgdGVzdGNhc2UKLQotY2xhc3MgTGF5ZXJBcHBlbmRUZXN0cyhvZVNlbGZUZXN0KToKLSAgICBsYXllcmNvbmYgPSAiIiIKLSMgV2UgaGF2ZSBhIGNvbmYgYW5kIGNsYXNzZXMgZGlyZWN0b3J5LCBhcHBlbmQgdG8gQkJQQVRICi1CQlBBVEggLj0gIjoke0xBWUVSRElSfSIKLQotIyBXZSBoYXZlIGEgcmVjaXBlcyBkaXJlY3RvcnksIGFkZCB0byBCQkZJTEVTCi1CQkZJTEVTICs9ICIke0xBWUVSRElSfS9yZWNpcGVzKi8qLmJiICR7TEFZRVJESVJ9L3JlY2lwZXMqLyouYmJhcHBlbmQiCi0KLUJCRklMRV9DT0xMRUNUSU9OUyArPSAibWV0YS1sYXllcklOVCIKLUJCRklMRV9QQVRURVJOX21ldGEtbGF5ZXJJTlQgOj0gIl4ke0xBWUVSRElSfS8iCi1CQkZJTEVfUFJJT1JJVFlfbWV0YS1sYXllcklOVCA9ICI2IgotIiIiCi0gICAgcmVjaXBlID0gIiIiCi1MSUNFTlNFPSJDTE9TRUQiCi1JTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgotCi1weXRob24gZG9fYnVpbGQoKSB7Ci0gICAgYmIucGxhaW4oJ0J1aWxkaW5nIC4uLicpCi19Ci1hZGR0YXNrIGJ1aWxkCi0iIiIKLSAgICBhcHBlbmQgPSAiIiIKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiIKLQotU1JDX1VSSV9hcHBlbmQgPSAiIGZpbGU6Ly9hcHBlbmR0ZXN0LnR4dCIKLQotc3lzcm9vdF9zdGFnZV9hbGxfYXBwZW5kKCkgewotCWluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vYXBwZW5kdGVzdC50eHQgJHtTWVNST09UX0RFU1RESVJ9LwotfQotCi0iIiIKLQotICAgIGFwcGVuZDIgPSAiIiIKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiIKLQotU1JDX1VSSV9hcHBlbmQgKz0gImZpbGU6Ly9hcHBlbmR0ZXN0LnR4dCIKLSIiIgotICAgIGxheWVyYXBwZW5kID0gJycKLQotICAgIGRlZiB0ZWFyRG93bkxvY2FsKHNlbGYpOgotICAgICAgICBpZiBzZWxmLmxheWVyYXBwZW5kOgotICAgICAgICAgICAgZnRvb2xzLnJlbW92ZV9mcm9tX2ZpbGUoc2VsZi5idWlsZGRpciArICIvY29uZi9iYmxheWVycy5jb25mIiwgc2VsZi5sYXllcmFwcGVuZCkKLQotICAgIEB0ZXN0Y2FzZSgxMTk2KQotICAgIGRlZiB0ZXN0X2xheWVyX2FwcGVuZHMoc2VsZik6Ci0gICAgICAgIGNvcmViYXNlID0gZ2V0X2JiX3ZhcigiQ09SRUJBU0UiKQotCi0gICAgICAgIGZvciBsIGluIFsiMCIsICIxIiwgIjIiXToKLSAgICAgICAgICAgIGxheWVyID0gb3MucGF0aC5qb2luKGNvcmViYXNlLCAibWV0YS1sYXllcnRlc3QiICsgbCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMobGF5ZXIpKQotICAgICAgICAgICAgb3MubWtkaXIobGF5ZXIpCi0gICAgICAgICAgICBvcy5ta2RpcihsYXllciArICIvY29uZiIpCi0gICAgICAgICAgICB3aXRoIG9wZW4obGF5ZXIgKyAiL2NvbmYvbGF5ZXIuY29uZiIsICJ3IikgYXMgZjoKLSAgICAgICAgICAgICAgICBmLndyaXRlKHNlbGYubGF5ZXJjb25mLnJlcGxhY2UoIklOVCIsIGwpKQotICAgICAgICAgICAgb3MubWtkaXIobGF5ZXIgKyAiL3JlY2lwZXMtdGVzdCIpCi0gICAgICAgICAgICBpZiBsID09ICIwIjoKLSAgICAgICAgICAgICAgICB3aXRoIG9wZW4obGF5ZXIgKyAiL3JlY2lwZXMtdGVzdC9sYXllcmFwcGVuZHRlc3QuYmIiLCAidyIpIGFzIGY6Ci0gICAgICAgICAgICAgICAgICAgIGYud3JpdGUoc2VsZi5yZWNpcGUpCi0gICAgICAgICAgICBlbGlmIGwgPT0gIjEiOgotICAgICAgICAgICAgICAgIHdpdGggb3BlbihsYXllciArICIvcmVjaXBlcy10ZXN0L2xheWVyYXBwZW5kdGVzdC5iYmFwcGVuZCIsICJ3IikgYXMgZjoKLSAgICAgICAgICAgICAgICAgICAgZi53cml0ZShzZWxmLmFwcGVuZCkKLSAgICAgICAgICAgICAgICBvcy5ta2RpcihsYXllciArICIvcmVjaXBlcy10ZXN0L2xheWVyYXBwZW5kdGVzdCIpCi0gICAgICAgICAgICAgICAgd2l0aCBvcGVuKGxheWVyICsgIi9yZWNpcGVzLXRlc3QvbGF5ZXJhcHBlbmR0ZXN0L2FwcGVuZHRlc3QudHh0IiwgInciKSBhcyBmOgotICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCJMYXllciAxIHRlc3QiKQotICAgICAgICAgICAgZWxpZiBsID09ICIyIjoKLSAgICAgICAgICAgICAgICB3aXRoIG9wZW4obGF5ZXIgKyAiL3JlY2lwZXMtdGVzdC9sYXllcmFwcGVuZHRlc3QuYmJhcHBlbmQiLCAidyIpIGFzIGY6Ci0gICAgICAgICAgICAgICAgICAgIGYud3JpdGUoc2VsZi5hcHBlbmQyKQotICAgICAgICAgICAgICAgIG9zLm1rZGlyKGxheWVyICsgIi9yZWNpcGVzLXRlc3QvbGF5ZXJhcHBlbmR0ZXN0IikKLSAgICAgICAgICAgICAgICB3aXRoIG9wZW4obGF5ZXIgKyAiL3JlY2lwZXMtdGVzdC9sYXllcmFwcGVuZHRlc3QvYXBwZW5kdGVzdC50eHQiLCAidyIpIGFzIGY6Ci0gICAgICAgICAgICAgICAgICAgIGYud3JpdGUoIkxheWVyIDIgdGVzdCIpCi0gICAgICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKGxheWVyKQotCi0gICAgICAgIHNlbGYubGF5ZXJhcHBlbmQgPSAiQkJMQVlFUlMgKz0gXCJ7MH0vbWV0YS1sYXllcnRlc3QwIHswfS9tZXRhLWxheWVydGVzdDEgezB9L21ldGEtbGF5ZXJ0ZXN0MlwiIi5mb3JtYXQoY29yZWJhc2UpCi0gICAgICAgIGZ0b29scy5hcHBlbmRfZmlsZShzZWxmLmJ1aWxkZGlyICsgIi9jb25mL2JibGF5ZXJzLmNvbmYiLCBzZWxmLmxheWVyYXBwZW5kKQotICAgICAgICBzdGFnaW5nZGlyID0gZ2V0X2JiX3ZhcigiU1lTUk9PVF9ERVNURElSIiwgImxheWVyYXBwZW5kdGVzdCIpCi0gICAgICAgIGJpdGJha2UoImxheWVyYXBwZW5kdGVzdCIpCi0gICAgICAgIGRhdGEgPSBmdG9vbHMucmVhZF9maWxlKHN0YWdpbmdkaXIgKyAiL2FwcGVuZHRlc3QudHh0IikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCAiTGF5ZXIgMiB0ZXN0IikKLSAgICAgICAgb3MucmVtb3ZlKGNvcmViYXNlICsgIi9tZXRhLWxheWVydGVzdDIvcmVjaXBlcy10ZXN0L2xheWVyYXBwZW5kdGVzdC9hcHBlbmR0ZXN0LnR4dCIpCi0gICAgICAgIGJpdGJha2UoImxheWVyYXBwZW5kdGVzdCIpCi0gICAgICAgIGRhdGEgPSBmdG9vbHMucmVhZF9maWxlKHN0YWdpbmdkaXIgKyAiL2FwcGVuZHRlc3QudHh0IikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCAiTGF5ZXIgMSB0ZXN0IikKLSAgICAgICAgd2l0aCBvcGVuKGNvcmViYXNlICsgIi9tZXRhLWxheWVydGVzdDIvcmVjaXBlcy10ZXN0L2xheWVyYXBwZW5kdGVzdC9hcHBlbmR0ZXN0LnR4dCIsICJ3IikgYXMgZjoKLSAgICAgICAgICAgIGYud3JpdGUoIkxheWVyIDIgdGVzdCIpCi0gICAgICAgIGJpdGJha2UoImxheWVyYXBwZW5kdGVzdCIpCi0gICAgICAgIGRhdGEgPSBmdG9vbHMucmVhZF9maWxlKHN0YWdpbmdkaXIgKyAiL2FwcGVuZHRlc3QudHh0IikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCAiTGF5ZXIgMiB0ZXN0IikKLQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9saWJvZS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2xpYm9lLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYjAzMDFkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2xpYm9lLnB5CisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotZnJvbSBvZXFhLnNlbGZ0ZXN0LmJhc2UgaW1wb3J0IG9lU2VsZlRlc3QKLWZyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgZ2V0X2JiX3ZhciwgZ2V0X2JiX3ZhcnMsIGJpdGJha2UsIHJ1bkNtZAotaW1wb3J0IG9lLnBhdGgKLWltcG9ydCBnbG9iCi1pbXBvcnQgb3MKLWltcG9ydCBvcy5wYXRoCi0KLWNsYXNzIExpYk9FKG9lU2VsZlRlc3QpOgotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKLSAgICAgICAgY2xzLnRtcF9kaXIgPSBnZXRfYmJfdmFyKCdUTVBESVInKQotCi0gICAgZGVmIHRlc3RfY29weV90cmVlX3NwZWNpYWwoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBTdW1tYXJ5OiAgICBvZS5wYXRoLmNvcHl0cmVlKCkgc2hvdWxkIGNvcHkgZmlsZXMgd2l0aCBzcGVjaWFsIGNoYXJhY3RlcgotICAgICAgICBFeHBlY3RlZDogICAndGVzdCBmaWxlIHdpdGggc3DCo2MhYWwgQG5kIHNwYWNlcycgc2hvdWxkIGV4aXN0IGluCi0gICAgICAgICAgICAgICAgICAgIGNvcHkgZGVzdGluYXRpb24KLSAgICAgICAgUHJvZHVjdDogICAgT0UtQ29yZQotICAgICAgICBBdXRob3I6ICAgICBKb3NodWEgTG9jayA8am9zaHVhLmcubG9ja0BpbnRlbC5jb20+Ci0gICAgICAgICIiIgotICAgICAgICB0ZXN0bG9jID0gb2UucGF0aC5qb2luKHNlbGYudG1wX2RpciwgJ2xpYm9ldGVzdHMnKQotICAgICAgICBzcmMgPSBvZS5wYXRoLmpvaW4odGVzdGxvYywgJ3NyYycpCi0gICAgICAgIGRzdCA9IG9lLnBhdGguam9pbih0ZXN0bG9jLCAnZHN0JykKLSAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKHRlc3Rsb2MpCi0gICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihzcmMpCi0gICAgICAgIHRlc3RmaWxlbmFtZSA9ICd0ZXN0IGZpbGUgd2l0aCBzcMKjYyFhbCBAbmQgc3BhY2VzJwotCi0gICAgICAgICMgY3JlYXRlIHRoZSB0ZXN0IGZpbGUgYW5kIGNvcHkgaXQKLSAgICAgICAgb3BlbihvZS5wYXRoLmpvaW4oc3JjLCB0ZXN0ZmlsZW5hbWUpLCAndytiJykuY2xvc2UoKQotICAgICAgICBvZS5wYXRoLmNvcHl0cmVlKHNyYywgZHN0KQotCi0gICAgICAgICMgZW5zdXJlIHBhdGggZXhpc3RzIGluIGRlc3QKLSAgICAgICAgZmlsZWluZHN0ID0gb3MucGF0aC5pc2ZpbGUob2UucGF0aC5qb2luKGRzdCwgdGVzdGZpbGVuYW1lKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZpbGVpbmRzdCwgIkZpbGUgd2l0aCBzcGFjZXMgZG9lc24ndCBleGlzdCBpbiBkc3QiKQotCi0gICAgICAgIG9lLnBhdGgucmVtb3ZlKHRlc3Rsb2MpCi0KLSAgICBkZWYgdGVzdF9jb3B5X3RyZWVfeGF0dHIoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBTdW1tYXJ5OiAgICBvZS5wYXRoLmNvcHl0cmVlKCkgc2hvdWxkIHByZXNlcnZlIHhhdHRyIG9uIGNvcGllZCBmaWxlcwotICAgICAgICBFeHBlY3RlZDogICB0ZXN0eGF0dHIgZmlsZSBpbiBkZXN0aW5hdGlvbiBzaG91bGQgaGF2ZSB1c2VyLm9ldGVzdAotICAgICAgICAgICAgICAgICAgICBleHRlbmRlZCBhdHRyaWJ1dGUKLSAgICAgICAgUHJvZHVjdDogICAgT0UtQ29yZQotICAgICAgICBBdXRob3I6ICAgICBKb3NodWEgTG9jayA8am9zaHVhLmcubG9ja0BpbnRlbC5jb20+Ci0gICAgICAgICIiIgotICAgICAgICB0ZXN0bG9jID0gb2UucGF0aC5qb2luKHNlbGYudG1wX2RpciwgJ2xpYm9ldGVzdHMnKQotICAgICAgICBzcmMgPSBvZS5wYXRoLmpvaW4odGVzdGxvYywgJ3NyYycpCi0gICAgICAgIGRzdCA9IG9lLnBhdGguam9pbih0ZXN0bG9jLCAnZHN0JykKLSAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKHRlc3Rsb2MpCi0gICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihzcmMpCi0gICAgICAgIHRlc3RmaWxlbmFtZSA9ICd0ZXN0eGF0dHInCi0KLSAgICAgICAgIyBlbnN1cmUgd2UgaGF2ZSBzZXRmYXR0ciBhdmFpbGFibGUKLSAgICAgICAgYml0YmFrZSgiYXR0ci1uYXRpdmUiKQotCi0gICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ1NZU1JPT1RfREVTVERJUicsICdiaW5kaXInXSwgJ2F0dHItbmF0aXZlJykKLSAgICAgICAgZGVzdGRpciA9IGJiX3ZhcnNbJ1NZU1JPT1RfREVTVERJUiddCi0gICAgICAgIGJpbmRpciA9IGJiX3ZhcnNbJ2JpbmRpciddCi0gICAgICAgIGJpbmRpciA9IGRlc3RkaXIgKyBiaW5kaXIKLQotICAgICAgICAjIGNyZWF0ZSBhIGZpbGUgd2l0aCB4YXR0ciBhbmQgY29weSBpdAotICAgICAgICBvcGVuKG9lLnBhdGguam9pbihzcmMsIHRlc3RmaWxlbmFtZSksICd3K2InKS5jbG9zZSgpCi0gICAgICAgIHJ1bkNtZCgnJXMvc2V0ZmF0dHIgLW4gdXNlci5vZXRlc3QgLXYgInRlc3RpbmcgbGlib2UiICVzJyAlIChiaW5kaXIsIG9lLnBhdGguam9pbihzcmMsIHRlc3RmaWxlbmFtZSkpKQotICAgICAgICBvZS5wYXRoLmNvcHl0cmVlKHNyYywgZHN0KQotCi0gICAgICAgICMgZW5zdXJlIGZpbGUgaW4gZGVzdCBoYXMgdXNlci5vZXRlc3QgeGF0dHIKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCclcy9nZXRmYXR0ciAtbiB1c2VyLm9ldGVzdCAlcycgJSAoYmluZGlyLCBvZS5wYXRoLmpvaW4oZHN0LCB0ZXN0ZmlsZW5hbWUpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbigndXNlci5vZXRlc3Q9InRlc3RpbmcgbGlib2UiJywgcmVzdWx0Lm91dHB1dCwgJ0V4dGVuZGVkIGF0dHJpYnV0ZSBub3Qgc2VydCBpbiBkc3QnKQotCi0gICAgICAgIG9lLnBhdGgucmVtb3ZlKHRlc3Rsb2MpCi0KLSAgICBkZWYgdGVzdF9jb3B5X2hhcmRsaW5rX3RyZWVfY291bnQoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBTdW1tYXJ5OiAgICBvZS5wYXRoLmNvcHloYXJkbGlua3RyZWUoKSBzaG91bGRuJ3QgbWlzcyBvdXQgZmlsZXMKLSAgICAgICAgRXhwZWN0ZWQ6ICAgc3JjIGFuZCBkc3Qgc2hvdWxkIGhhdmUgdGhlIHNhbWUgbnVtYmVyIG9mIGZpbGVzCi0gICAgICAgIFByb2R1Y3Q6ICAgIE9FLUNvcmUKLSAgICAgICAgQXV0aG9yOiAgICAgSm9zaHVhIExvY2sgPGpvc2h1YS5nLmxvY2tAaW50ZWwuY29tPgotICAgICAgICAiIiIKLSAgICAgICAgdGVzdGxvYyA9IG9lLnBhdGguam9pbihzZWxmLnRtcF9kaXIsICdsaWJvZXRlc3RzJykKLSAgICAgICAgc3JjID0gb2UucGF0aC5qb2luKHRlc3Rsb2MsICdzcmMnKQotICAgICAgICBkc3QgPSBvZS5wYXRoLmpvaW4odGVzdGxvYywgJ2RzdCcpCi0gICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcih0ZXN0bG9jKQotICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoc3JjKQotICAgICAgICB0ZXN0ZmlsZXMgPSBbJ2ZvbycsICdiYXInLCAnLmJheicsICdxdXV4J10KLQotICAgICAgICBkZWYgdG91Y2hmaWxlKHRmKToKLSAgICAgICAgICAgIG9wZW4ob2UucGF0aC5qb2luKHNyYywgdGYpLCAndytiJykuY2xvc2UoKQotCi0gICAgICAgIGZvciBmIGluIHRlc3RmaWxlczoKLSAgICAgICAgICAgIHRvdWNoZmlsZShmKQotCi0gICAgICAgIG9lLnBhdGguY29weWhhcmRsaW5rdHJlZShzcmMsIGRzdCkKLQotICAgICAgICBkc3RjbnQgPSBsZW4ob3MubGlzdGRpcihkc3QpKQotICAgICAgICBzcmNjbnQgPSBsZW4ob3MubGlzdGRpcihzcmMpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhkc3RjbnQsIGxlbih0ZXN0ZmlsZXMpLCAiTnVtYmVyIG9mIGZpbGVzIGluIGRzdCAoJXMpIGRpZmZlcnMgZnJvbSBudW1iZXIgb2YgZmlsZXMgaW4gc3JjKCVzKS4iICUgKGRzdGNudCwgc3JjY250KSkKLQotICAgICAgICBvZS5wYXRoLnJlbW92ZSh0ZXN0bG9jKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvbGljLWNoZWNrc3VtLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvbGljLWNoZWNrc3VtLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZTgxMzczLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2xpYy1jaGVja3N1bS5weQorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLWltcG9ydCBvcwotaW1wb3J0IHRlbXBmaWxlCi0KLWZyb20gb2VxYS5zZWxmdGVzdC5iYXNlIGltcG9ydCBvZVNlbGZUZXN0Ci1mcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IGJpdGJha2UKLWZyb20gb2VxYS51dGlscyBpbXBvcnQgQ29tbWFuZEVycm9yCi1mcm9tIG9lcWEudXRpbHMuZGVjb3JhdG9ycyBpbXBvcnQgdGVzdGNhc2UKLQotY2xhc3MgTGljZW5zZVRlc3RzKG9lU2VsZlRlc3QpOgotCi0gICAgIyBWZXJpZnkgdGhhdCBjaGFuZ2luZyBhIGxpY2Vuc2UgZmlsZSB0aGF0IGhhcyBhbiBhYnNvbHV0ZSBwYXRoIGNhdXNlcwotICAgICMgdGhlIGxpY2Vuc2UgcWEgdG8gZmFpbCBkdWUgdG8gYSBtaXNtYXRjaGVkIG1kNXN1bS4KLSAgICBAdGVzdGNhc2UoMTE5NykKLSAgICBkZWYgdGVzdF9ub25tYXRjaGluZ19jaGVja3N1bShzZWxmKToKLSAgICAgICAgYml0YmFrZV9jbWQgPSAnLWMgcG9wdWxhdGVfbGljIGVtcHR5dGVzdCcKLSAgICAgICAgZXJyb3JfbXNnID0gJ2VtcHR5dGVzdDogVGhlIG5ldyBtZDUgY2hlY2tzdW0gaXMgOGQ3NzdmMzg1ZDNkZmVjODgxNWQyMGY3NDk2MDI2ZGMnCi0KLSAgICAgICAgbGljX2ZpbGUsIGxpY19wYXRoID0gdGVtcGZpbGUubWtzdGVtcCgpCi0gICAgICAgIG9zLmNsb3NlKGxpY19maWxlKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKGxpY19wYXRoKQotCi0gICAgICAgIHNlbGYud3JpdGVfcmVjaXBlaW5jKCdlbXB0eXRlc3QnLCAiIiIKLUlOSElCSVRfREVGQVVMVF9ERVBTID0gIjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8lczttZDU9ZDQxZDhjZDk4ZjAwYjIwNGU5ODAwOTk4ZWNmODQyN2UiCi1TUkNfVVJJID0gImZpbGU6Ly8lczttZDU9ZDQxZDhjZDk4ZjAwYjIwNGU5ODAwOTk4ZWNmODQyN2UiCi0iIiIgJSAobGljX3BhdGgsIGxpY19wYXRoKSkKLSAgICAgICAgcmVzdWx0ID0gYml0YmFrZShiaXRiYWtlX2NtZCkKLQotICAgICAgICB3aXRoIG9wZW4obGljX3BhdGgsICJ3IikgYXMgZjoKLSAgICAgICAgICAgIGYud3JpdGUoImRhdGEiKQotCi0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCJJTkhFUklUX3JlbW92ZSA9IFwicmVwb3J0LWVycm9yXCIiKQotICAgICAgICByZXN1bHQgPSBiaXRiYWtlKGJpdGJha2VfY21kLCBpZ25vcmVfc3RhdHVzPVRydWUpCi0gICAgICAgIGlmIGVycm9yX21zZyBub3QgaW4gcmVzdWx0Lm91dHB1dDoKLSAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKHJlc3VsdC5vdXRwdXQpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9tYW5pZmVzdC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L21hbmlmZXN0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZTZmOTQ5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L21hbmlmZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTY2ICswLDAgQEAKLWltcG9ydCB1bml0dGVzdAotaW1wb3J0IG9zCi0KLWZyb20gb2VxYS5zZWxmdGVzdC5iYXNlIGltcG9ydCBvZVNlbGZUZXN0Ci1mcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IGdldF9iYl92YXIsIGdldF9iYl92YXJzLCBiaXRiYWtlCi1mcm9tIG9lcWEudXRpbHMuZGVjb3JhdG9ycyBpbXBvcnQgdGVzdGNhc2UKLQotY2xhc3MgTWFuaWZlc3RFbnRyeToKLSAgICAnJydBIG1hbmlmZXN0IGl0ZW0gb2YgYSBjb2xsZWN0aW9uIGFibGUgdG8gbGlzdCBtaXNzaW5nIHBhY2thZ2VzJycnCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGVudHJ5KToKLSAgICAgICAgc2VsZi5maWxlID0gZW50cnkKLSAgICAgICAgc2VsZi5taXNzaW5nID0gW10KLQotY2xhc3MgVmVyaWZ5TWFuaWZlc3Qob2VTZWxmVGVzdCk6Ci0gICAgJycnVGVzdHMgZm9yIHRoZSBtYW5pZmVzdCBmaWxlcyBhbmQgY29udGVudHMgb2YgYW4gaW1hZ2UnJycKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBjaGVja19tYW5pZmVzdF9lbnRyaWVzKHNlbGYsIG1hbmlmZXN0LCBwYXRoKToKLSAgICAgICAgbWFuaWZlc3RfZXJyb3JzID0gW10KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2l0aCBvcGVuKG1hbmlmZXN0LCAiciIpIGFzIG1maWxlOgotICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIG1maWxlOgotICAgICAgICAgICAgICAgICAgICBtYW5pZmVzdF9lbnRyeSA9IG9zLnBhdGguam9pbihwYXRoLCBsaW5lLnNwbGl0KClbMF0pCi0gICAgICAgICAgICAgICAgICAgIHNlbGYubG9nLmRlYnVnKCJ7fTogbG9va2luZyBmb3Ige30iXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChzZWxmLmNsYXNzbmFtZSwgbWFuaWZlc3RfZW50cnkpKQotICAgICAgICAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUobWFuaWZlc3RfZW50cnkpOgotICAgICAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3RfZXJyb3JzLmFwcGVuZChtYW5pZmVzdF9lbnRyeSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubG9nLmRlYnVnKCJ7fToge30gbm90IGZvdW5kIlwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoc2VsZi5jbGFzc25hbWUsIG1hbmlmZXN0X2VudHJ5KSkKLSAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgICAgIHNlbGYubG9nLmRlYnVnKCJ7fTogY2hlY2tpbmcgb2Yge30gZmFpbGVkIlwKLSAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChzZWxmLmNsYXNzbmFtZSwgbWFuaWZlc3QpKQotICAgICAgICAgICAgcmFpc2UgZQotCi0gICAgICAgIHJldHVybiBtYW5pZmVzdF9lcnJvcnMKLQotICAgICN0aGlzIHdpbGwgcG9zc2libHkgbW92ZSBmcm9tIGhlcmUKLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgZ2V0X2Rpcl9mcm9tX2JiX3ZhcihzZWxmLCBiYl92YXIsIHRhcmdldCA9IE5vbmUpOgotICAgICAgICB0YXJnZXQgPT0gc2VsZi5idWlsZHRhcmdldCBpZiB0YXJnZXQgPT0gTm9uZSBlbHNlIHRhcmdldAotICAgICAgICBkaXJlY3RvcnkgPSBnZXRfYmJfdmFyKGJiX3ZhciwgdGFyZ2V0KTsKLSAgICAgICAgaWYgbm90IGRpcmVjdG9yeSBvciBub3Qgb3MucGF0aC5pc2RpcihkaXJlY3RvcnkpOgotICAgICAgICAgICAgc2VsZi5sb2cuZGVidWcoInt9OiB7fSBwb2ludHMgdG8ge30gd2hlbiB0YXJnZXQgPSB7fSJcCi0gICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoc2VsZi5jbGFzc25hbWUsIGJiX3ZhciwgZGlyZWN0b3J5LCB0YXJnZXQpKQotICAgICAgICAgICAgcmFpc2UgT1NFcnJvcgotICAgICAgICByZXR1cm4gZGlyZWN0b3J5Ci0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgc2V0VXBDbGFzcyhzZWxmKToKLQotICAgICAgICBzZWxmLmJ1aWxkdGFyZ2V0ID0gJ2NvcmUtaW1hZ2UtbWluaW1hbCcKLSAgICAgICAgc2VsZi5jbGFzc25hbWUgPSAnVmVyaWZ5TWFuaWZlc3QnCi0KLSAgICAgICAgc2VsZi5sb2cuaW5mbygie306IGRvaW5nIGJpdGJha2Uge30gYXMgYSBwcmVyZXF1aXNpdGUgb2YgdGhlIHRlc3QiXAotICAgICAgICAgICAgICAgIC5mb3JtYXQoc2VsZi5jbGFzc25hbWUsIHNlbGYuYnVpbGR0YXJnZXQpKQotICAgICAgICBpZiBiaXRiYWtlKHNlbGYuYnVpbGR0YXJnZXQpLnN0YXR1czoKLSAgICAgICAgICAgIHNlbGYubG9nLmRlYnVnKCJ7fSBGYWlsZWQgdG8gc2V0dXAge30iXAotICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KHNlbGYuY2xhc3NuYW1lLCBzZWxmLmJ1aWxkdGFyZ2V0KSkKLSAgICAgICAgICAgIHVuaXR0ZXN0LlNraXBUZXN0KCJ7fTogQ2Fubm90IHNldHVwIHRlc3Rpbmcgc2NlbmFyaW8iXAotICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KHNlbGYuY2xhc3NuYW1lKSkKLQotICAgIEB0ZXN0Y2FzZSgxMzgwKQotICAgIGRlZiB0ZXN0X1NES19tYW5pZmVzdF9lbnRyaWVzKHNlbGYpOgotICAgICAgICAnJydWZXJpZnlpbmcgdGhlIFNESyBtYW5pZmVzdCBlbnRyaWVzIGV4aXN0LCB0aGlzIG1heSB0YWtlIGEgYnVpbGQnJycKLQotICAgICAgICAjIHRoZSBzZXR1cCBzaG91bGQgYml0YmFrZSBjb3JlLWltYWdlLW1pbmltYWwgYW5kIGhlcmUgaXQgaXMgcmVxdWlyZWQKLSAgICAgICAgIyB0byBkbyBhbiBhZGRpdGlvbmFsIHNldHVwIGZvciB0aGUgc2RrCi0gICAgICAgIHNka3Rhc2sgPSAnLWMgcG9wdWxhdGVfc2RrJwotICAgICAgICBiYmFyZ3MgPSBzZGt0YXNrICsgJyAnICsgc2VsZi5idWlsZHRhcmdldAotICAgICAgICBzZWxmLmxvZy5kZWJ1Zygie306IGRvaW5nIGJpdGJha2Uge30gYXMgYSBwcmVyZXF1aXNpdGUgb2YgdGhlIHRlc3QiXAotICAgICAgICAgICAgICAgIC5mb3JtYXQoc2VsZi5jbGFzc25hbWUsIGJiYXJncykpCi0gICAgICAgIGlmIGJpdGJha2UoYmJhcmdzKS5zdGF0dXM6Ci0gICAgICAgICAgICBzZWxmLmxvZy5kZWJ1Zygie30gRmFpbGVkIHRvIGJpdGJha2Uge30iXAotICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KHNlbGYuY2xhc3NuYW1lLCBiYmFyZ3MpKQotICAgICAgICAgICAgdW5pdHRlc3QuU2tpcFRlc3QoInt9OiBDYW5ub3Qgc2V0dXAgdGVzdGluZyBzY2VuYXJpbyJcCi0gICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoc2VsZi5jbGFzc25hbWUpKQotCi0KLSAgICAgICAgcGtnZGF0YV9kaXIgPSByZXZlcnNlX2RpciA9IHt9Ci0gICAgICAgIG1maWxlbmFtZSA9IG1wYXRoID0gbV9lbnRyeSA9IHt9Ci0gICAgICAgICMgZ2V0IG1hbmlmZXN0IGxvY2F0aW9uIGJhc2VkIG9uIHRhcmdldCB0byBxdWVyeSBhYm91dAotICAgICAgICBkX3RhcmdldD0gZGljdCh0YXJnZXQgPSBzZWxmLmJ1aWxkdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3QgPSAnbmF0aXZlc2RrLXBhY2thZ2Vncm91cC1zZGstaG9zdCcpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG1kaXIgPSBzZWxmLmdldF9kaXJfZnJvbV9iYl92YXIoJ1NES19ERVBMT1knLCBzZWxmLmJ1aWxkdGFyZ2V0KQotICAgICAgICAgICAgZm9yIGsgaW4gZF90YXJnZXQua2V5cygpOgotICAgICAgICAgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ1NES19OQU1FJywgJ1NES19WRVJTSU9OJ10sIHNlbGYuYnVpbGR0YXJnZXQpCi0gICAgICAgICAgICAgICAgbWZpbGVuYW1lW2tdID0gInt9LXRvb2xjaGFpbi17fS57fS5tYW5pZmVzdCIuZm9ybWF0KAotICAgICAgICAgICAgICAgICAgICAgICAgYmJfdmFyc1snU0RLX05BTUUnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGJiX3ZhcnNbJ1NES19WRVJTSU9OJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICBrKQotICAgICAgICAgICAgICAgIG1wYXRoW2tdID0gb3MucGF0aC5qb2luKG1kaXIsIG1maWxlbmFtZVtrXSkKLSAgICAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUobXBhdGhba10pOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZy5kZWJ1Zygie306IHt9IGRvZXMgbm90IGV4aXN0Ii5mb3JtYXQoCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNsYXNzbmFtZSwgbXBhdGhba10pKQotICAgICAgICAgICAgICAgICAgICByYWlzZSBJT0Vycm9yCi0gICAgICAgICAgICAgICAgbV9lbnRyeVtrXSA9IE1hbmlmZXN0RW50cnkobXBhdGhba10pCi0KLSAgICAgICAgICAgICAgICBwa2dkYXRhX2RpcltrXSA9IHNlbGYuZ2V0X2Rpcl9mcm9tX2JiX3ZhcignUEtHREFUQV9ESVInLAotICAgICAgICAgICAgICAgICAgICAgICAgZF90YXJnZXRba10pCi0gICAgICAgICAgICAgICAgcmV2ZXJzZV9kaXJba10gPSBvcy5wYXRoLmpvaW4ocGtnZGF0YV9kaXJba10sCi0gICAgICAgICAgICAgICAgICAgICAgICAncnVudGltZS1yZXZlcnNlJykKLSAgICAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocmV2ZXJzZV9kaXJba10pOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZy5kZWJ1Zygie306IHt9IGRvZXMgbm90IGV4aXN0Ii5mb3JtYXQoCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNsYXNzbmFtZSwgcmV2ZXJzZV9kaXJba10pKQotICAgICAgICAgICAgICAgICAgICByYWlzZSBJT0Vycm9yCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoInt9OiBFcnJvciBpbiBvYnRhaW5pbmcgbWFuaWZlc3QgZGlycyJcCi0gICAgICAgICAgICAgICAgLmZvcm1hdChzZWxmLmNsYXNzbmFtZSkpCi0gICAgICAgIGV4Y2VwdCBJT0Vycm9yOgotICAgICAgICAgICAgbXNnID0gInt9OiBFcnJvciBjYW5ub3QgZmluZCBtYW5pZmVzdHMgaW4gdGhlIHNwZWNpZmllZCBkaXI6XG57fSJcCi0gICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoc2VsZi5jbGFzc25hbWUsIG1kaXIpCi0gICAgICAgICAgICBzZWxmLmZhaWwobXNnKQotCi0gICAgICAgIGZvciBrIGluIGRfdGFyZ2V0LmtleXMoKToKLSAgICAgICAgICAgIHNlbGYubG9nLmRlYnVnKCJ7fTogQ2hlY2sgbWFuaWZlc3Qge30iLmZvcm1hdCgKLSAgICAgICAgICAgICAgICBzZWxmLmNsYXNzbmFtZSwgbV9lbnRyeVtrXS5maWxlKSkKLQotICAgICAgICAgICAgbV9lbnRyeVtrXS5taXNzaW5nID0gc2VsZi5jaGVja19tYW5pZmVzdF9lbnRyaWVzKFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9lbnRyeVtrXS5maWxlLHJldmVyc2VfZGlyW2tdKQotICAgICAgICAgICAgaWYgbV9lbnRyeVtrXS5taXNzaW5nOgotICAgICAgICAgICAgICAgIG1zZyA9ICd7fToge30gRXJyb3IgaGFzIHRoZSBmb2xsb3dpbmcgbWlzc2luZyBlbnRyaWVzJ1wKLSAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoc2VsZi5jbGFzc25hbWUsIG1fZW50cnlba10uZmlsZSkKLSAgICAgICAgICAgICAgICBsb2dtc2cgPSBtc2crJzpcbicrJ1xuJy5qb2luKG1fZW50cnlba10ubWlzc2luZykKLSAgICAgICAgICAgICAgICBzZWxmLmxvZy5kZWJ1Zyhsb2dtc2cpCi0gICAgICAgICAgICAgICAgc2VsZi5sb2cuaW5mbyhtc2cpCi0gICAgICAgICAgICAgICAgc2VsZi5mYWlsKGxvZ21zZykKLQotICAgIEB0ZXN0Y2FzZSgxMzgxKQotICAgIGRlZiB0ZXN0X2ltYWdlX21hbmlmZXN0X2VudHJpZXMoc2VsZik6Ci0gICAgICAgICcnJ1ZlcmlmeWluZyB0aGUgaW1hZ2UgbWFuaWZlc3QgZW50cmllcyBleGlzdCcnJwotCi0gICAgICAgICMgZ2V0IG1hbmlmZXN0IGxvY2F0aW9uIGJhc2VkIG9uIHRhcmdldCB0byBxdWVyeSBhYm91dAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBtZGlyID0gc2VsZi5nZXRfZGlyX2Zyb21fYmJfdmFyKCdERVBMT1lfRElSX0lNQUdFJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYnVpbGR0YXJnZXQpCi0gICAgICAgICAgICBtZmlsZW5hbWUgPSBnZXRfYmJfdmFyKCJJTUFHRV9MSU5LX05BTUUiLCBzZWxmLmJ1aWxkdGFyZ2V0KVwKLSAgICAgICAgICAgICAgICAgICAgKyAiLm1hbmlmZXN0IgotICAgICAgICAgICAgbXBhdGggPSBvcy5wYXRoLmpvaW4obWRpciwgbWZpbGVuYW1lKQotICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKG1wYXRoKTogcmFpc2UgSU9FcnJvcgotICAgICAgICAgICAgbV9lbnRyeSA9IE1hbmlmZXN0RW50cnkobXBhdGgpCi0KLSAgICAgICAgICAgIHBrZ2RhdGFfZGlyID0ge30KLSAgICAgICAgICAgIHBrZ2RhdGFfZGlyID0gc2VsZi5nZXRfZGlyX2Zyb21fYmJfdmFyKCdQS0dEQVRBX0RJUicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmJ1aWxkdGFyZ2V0KQotICAgICAgICAgICAgcmV2ZGlyID0gb3MucGF0aC5qb2luKHBrZ2RhdGFfZGlyLCAncnVudGltZS1yZXZlcnNlJykKLSAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhyZXZkaXIpOiByYWlzZSBJT0Vycm9yCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoInt9OiBFcnJvciBpbiBvYnRhaW5pbmcgbWFuaWZlc3QgZGlycyJcCi0gICAgICAgICAgICAgICAgLmZvcm1hdChzZWxmLmNsYXNzbmFtZSkpCi0gICAgICAgIGV4Y2VwdCBJT0Vycm9yOgotICAgICAgICAgICAgbXNnID0gInt9OiBFcnJvciBjYW5ub3QgZmluZCBtYW5pZmVzdHMgaW4gZGlyOlxue30iXAotICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KHNlbGYuY2xhc3NuYW1lLCBtZGlyKQotICAgICAgICAgICAgc2VsZi5mYWlsKG1zZykKLQotICAgICAgICBzZWxmLmxvZy5kZWJ1Zygie306IENoZWNrIG1hbmlmZXN0IHt9IlwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KHNlbGYuY2xhc3NuYW1lLCBtX2VudHJ5LmZpbGUpKQotICAgICAgICBtX2VudHJ5Lm1pc3NpbmcgPSBzZWxmLmNoZWNrX21hbmlmZXN0X2VudHJpZXMoXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZW50cnkuZmlsZSwgcmV2ZGlyKQotICAgICAgICBpZiBtX2VudHJ5Lm1pc3Npbmc6Ci0gICAgICAgICAgICBtc2cgPSAne306IHt9IEVycm9yIGhhcyB0aGUgZm9sbG93aW5nIG1pc3NpbmcgZW50cmllcydcCi0gICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoc2VsZi5jbGFzc25hbWUsIG1fZW50cnkuZmlsZSkKLSAgICAgICAgICAgIGxvZ21zZyA9IG1zZysnOlxuJysnXG4nLmpvaW4obV9lbnRyeS5taXNzaW5nKQotICAgICAgICAgICAgc2VsZi5sb2cuZGVidWcobG9nbXNnKQotICAgICAgICAgICAgc2VsZi5sb2cuaW5mbyhtc2cpCi0gICAgICAgICAgICBzZWxmLmZhaWwobG9nbXNnKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3Qvb2VsaWIvYnVpbGRoaXN0b3J5LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3Qvb2VsaWIvYnVpbGRoaXN0b3J5LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZWQ0YjAyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L29lbGliL2J1aWxkaGlzdG9yeS5weQorKysgL2Rldi9udWxsCkBAIC0xLDg4ICswLDAgQEAKLWltcG9ydCBvcwotaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgdGVtcGZpbGUKLWZyb20gZ2l0IGltcG9ydCBSZXBvCi1mcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IGdldF9iYl92YXIKLWZyb20gb2UuYnVpbGRoaXN0b3J5X2FuYWx5c2lzIGltcG9ydCBibG9iX3RvX2RpY3QsIGNvbXBhcmVfZGljdF9ibG9icwotCi1jbGFzcyBUZXN0QmxvYlBhcnNpbmcodW5pdHRlc3QuVGVzdENhc2UpOgotCi0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBpbXBvcnQgdGltZQotICAgICAgICBzZWxmLnJlcG9fcGF0aCA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdzZWxmdGVzdC1idWlsZGhpc3RvcnknLAotICAgICAgICAgICAgZGlyPWdldF9iYl92YXIoJ1RPUERJUicpKQotCi0gICAgICAgIHNlbGYucmVwbyA9IFJlcG8uaW5pdChzZWxmLnJlcG9fcGF0aCkKLSAgICAgICAgc2VsZi50ZXN0X2ZpbGUgPSAidGVzdCIKLSAgICAgICAgc2VsZi52YXJfbWFwID0ge30KLQotICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgaW1wb3J0IHNodXRpbAotICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYucmVwb19wYXRoKQotCi0gICAgZGVmIGNvbW1pdF92YXJzKHNlbGYsIHRvX2FkZD17fSwgdG9fcmVtb3ZlID0gW10sIG1zZz0iQSBjb21taXQgbWVzc2FnZSIpOgotICAgICAgICBpZiBsZW4odG9fYWRkKSA9PSAwIGFuZCBsZW4odG9fcmVtb3ZlKSA9PSAwOgotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgZm9yIGsgaW4gdG9fcmVtb3ZlOgotICAgICAgICAgICAgc2VsZi52YXJfbWFwLnBvcCh4LE5vbmUpCi0gICAgICAgIGZvciBrIGluIHRvX2FkZDoKLSAgICAgICAgICAgIHNlbGYudmFyX21hcFtrXSA9IHRvX2FkZFtrXQotCi0gICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oc2VsZi5yZXBvX3BhdGgsIHNlbGYudGVzdF9maWxlKSwgJ3cnKSBhcyByZXBvX2ZpbGU6Ci0gICAgICAgICAgICBmb3IgayBpbiBzZWxmLnZhcl9tYXA6Ci0gICAgICAgICAgICAgICAgcmVwb19maWxlLndyaXRlKCIlcyA9ICVzXG4iICUgKGssIHNlbGYudmFyX21hcFtrXSkpCi0KLSAgICAgICAgc2VsZi5yZXBvLmdpdC5hZGQoIi0tYWxsIikKLSAgICAgICAgc2VsZi5yZXBvLmdpdC5jb21taXQobWVzc2FnZT1tc2cpCi0KLSAgICBkZWYgdGVzdF9ibG9iX3RvX2RpY3Qoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBUZXN0IGNvbnZlcnRpb24gb2YgZ2l0IGJsb2JzIHRvIGRpY3Rpb25hcnkKLSAgICAgICAgIiIiCi0gICAgICAgIHZhbHVlc21hcCA9IHsgImZvbyIgOiAiMSIsICJiYXIiIDogIjIiIH0KLSAgICAgICAgc2VsZi5jb21taXRfdmFycyh0b19hZGQgPSB2YWx1ZXNtYXApCi0KLSAgICAgICAgYmxvYiA9IHNlbGYucmVwby5oZWFkLmNvbW1pdC50cmVlLmJsb2JzWzBdCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWVzbWFwLCBibG9iX3RvX2RpY3QoYmxvYiksCi0gICAgICAgICAgICAiY29tbWl0IHdhcyBub3QgdHJhbnNsYXRlZCBjb3JyZWN0bHkgdG8gZGljdGlvbmFyeSIpCi0KLSAgICBkZWYgdGVzdF9jb21wYXJlX2RpY3RfYmxvYnMoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBUZXN0IGNvbXBhcmlzc29uIG9mIGRpY3Rpb25hcmllcyBleHRyYWN0ZWQgZnJvbSBnaXQgYmxvYnMKLSAgICAgICAgIiIiCi0gICAgICAgIGNoYW5nZXNtYXAgPSB7ICJmb28tMiIgOiAoIjIiLCAiOCIpLCAiYmFyIiA6ICgiIiwiNCIpLCAiYmFyLTIiIDogKCIiLCI1Iil9Ci0KLSAgICAgICAgc2VsZi5jb21taXRfdmFycyh0b19hZGQgPSB7ICJmb28iIDogIjEiLCAiZm9vLTIiIDogIjIiLCAiZm9vLTMiIDogIjMiIH0pCi0gICAgICAgIGJsb2IxID0gc2VsZi5yZXBvLmhlYWRzLm1hc3Rlci5jb21taXQudHJlZS5ibG9ic1swXQotCi0gICAgICAgIHNlbGYuY29tbWl0X3ZhcnModG9fYWRkID0geyAiZm9vLTIiIDogIjgiLCAiYmFyIiA6ICI0IiwgImJhci0yIiA6ICI1IiB9KQotICAgICAgICBibG9iMiA9IHNlbGYucmVwby5oZWFkcy5tYXN0ZXIuY29tbWl0LnRyZWUuYmxvYnNbMF0KLQotICAgICAgICBjaGFuZ2VfcmVjb3JkcyA9IGNvbXBhcmVfZGljdF9ibG9icyhvcy5wYXRoLmpvaW4oc2VsZi5yZXBvX3BhdGgsIHNlbGYudGVzdF9maWxlKSwKLSAgICAgICAgICAgIGJsb2IxLCBibG9iMiwgRmFsc2UsIEZhbHNlKQotCi0gICAgICAgIHZhcl9jaGFuZ2VzID0geyB4LmZpZWxkbmFtZSA6ICh4Lm9sZHZhbHVlLCB4Lm5ld3ZhbHVlKSBmb3IgeCBpbiBjaGFuZ2VfcmVjb3Jkc30KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGFuZ2VzbWFwLCB2YXJfY2hhbmdlcywgIkNoYW5nZXMgbm90IHJlcG9ydGVkIGNvcnJlY3RseSIpCi0KLSAgICBkZWYgdGVzdF9jb21wYXJlX2RpY3RfYmxvYnNfZGVmYXVsdChzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFRlc3QgZGVmYXVsdCB2YWx1ZXMgZm9yIGNvbXBhcmlzc29uIG9mIGdpdCBibG9iIGRpY3Rpb25hcmllcwotICAgICAgICAiIiIKLSAgICAgICAgZGVmYXVsdG1hcCA9IHsgeCA6ICgiZGVmYXVsdCIsICIxIikgIGZvciB4IGluIFsiUEtHIiwgIlBLR0UiLCAiUEtHViIsICJQS0dSIl19Ci0KLSAgICAgICAgc2VsZi5jb21taXRfdmFycyh0b19hZGQgPSB7ICJmb28iIDogIjEiIH0pCi0gICAgICAgIGJsb2IxID0gc2VsZi5yZXBvLmhlYWRzLm1hc3Rlci5jb21taXQudHJlZS5ibG9ic1swXQotCi0gICAgICAgIHNlbGYuY29tbWl0X3ZhcnModG9fYWRkID0geyAiUEtHIiA6ICIxIiwgIlBLR0UiIDogIjEiLCAiUEtHViIgOiAiMSIsICJQS0dSIiA6ICIxIiB9KQotICAgICAgICBibG9iMiA9IHNlbGYucmVwby5oZWFkcy5tYXN0ZXIuY29tbWl0LnRyZWUuYmxvYnNbMF0KLQotICAgICAgICBjaGFuZ2VfcmVjb3JkcyA9IGNvbXBhcmVfZGljdF9ibG9icyhvcy5wYXRoLmpvaW4oc2VsZi5yZXBvX3BhdGgsIHNlbGYudGVzdF9maWxlKSwKLSAgICAgICAgICAgIGJsb2IxLCBibG9iMiwgRmFsc2UsIEZhbHNlKQotCi0gICAgICAgIHZhcl9jaGFuZ2VzID0ge30KLSAgICAgICAgZm9yIHggaW4gY2hhbmdlX3JlY29yZHM6Ci0gICAgICAgICAgICBvbGR2YWx1ZSA9ICJkZWZhdWx0IiBpZiAoImRlZmF1bHQiIGluIHgub2xkdmFsdWUpIGVsc2UgeC5vbGR2YWx1ZQotICAgICAgICAgICAgdmFyX2NoYW5nZXNbeC5maWVsZG5hbWVdID0gKG9sZHZhbHVlLCB4Lm5ld3ZhbHVlKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVmYXVsdG1hcCwgdmFyX2NoYW5nZXMsICJEZWZhdWx0cyBub3Qgc2V0IHByb3Blcmx5IikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L29lbGliL2VsZi5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L29lbGliL2VsZi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWY1OTAzNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9vZWxpYi9lbGYucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1pbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBvZS5xYQotCi1jbGFzcyBUZXN0RWxmKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgdGVzdF9tYWNoaW5lX25hbWUoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBUZXN0IGVsZl9tYWNoaW5lX3RvX3N0cmluZygpCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9lLnFhLmVsZl9tYWNoaW5lX3RvX3N0cmluZygweDAyKSwgIlNQQVJDIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvZS5xYS5lbGZfbWFjaGluZV90b19zdHJpbmcoMHgwMyksICJ4ODYiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9lLnFhLmVsZl9tYWNoaW5lX3RvX3N0cmluZygweDA4KSwgIk1JUFMiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9lLnFhLmVsZl9tYWNoaW5lX3RvX3N0cmluZygweDE0KSwgIlBvd2VyUEMiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9lLnFhLmVsZl9tYWNoaW5lX3RvX3N0cmluZygweDI4KSwgIkFSTSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2UucWEuZWxmX21hY2hpbmVfdG9fc3RyaW5nKDB4MkEpLCAiU3VwZXJIIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvZS5xYS5lbGZfbWFjaGluZV90b19zdHJpbmcoMHgzMiksICJJQS02NCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2UucWEuZWxmX21hY2hpbmVfdG9fc3RyaW5nKDB4M0UpLCAieDg2LTY0IikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvZS5xYS5lbGZfbWFjaGluZV90b19zdHJpbmcoMHhCNyksICJBQXJjaDY0IikKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9lLnFhLmVsZl9tYWNoaW5lX3RvX3N0cmluZygweDAwKSwgIlVua25vd24gKDApIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvZS5xYS5lbGZfbWFjaGluZV90b19zdHJpbmcoMHhERUFEQkVFRiksICJVbmtub3duICgzNzM1OTI4NTU5KSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2UucWEuZWxmX21hY2hpbmVfdG9fc3RyaW5nKCJmb29iYXIiKSwgIlVua25vd24gKCdmb29iYXInKSIpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9vZWxpYi9saWNlbnNlLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3Qvb2VsaWIvbGljZW5zZS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzM4ODg4Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9vZWxpYi9saWNlbnNlLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgb2UubGljZW5zZQotCi1jbGFzcyBTZWVuVmlzaXRvcihvZS5saWNlbnNlLkxpY2Vuc2VWaXNpdG9yKToKLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYuc2VlbiA9IFtdCi0gICAgICAgIG9lLmxpY2Vuc2UuTGljZW5zZVZpc2l0b3IuX19pbml0X18oc2VsZikKLQotICAgIGRlZiB2aXNpdF9TdHIoc2VsZiwgbm9kZSk6Ci0gICAgICAgIHNlbGYuc2Vlbi5hcHBlbmQobm9kZS5zKQotCi1jbGFzcyBUZXN0U2luZ2xlTGljZW5zZSh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgbGljZW5zZXMgPSBbCi0gICAgICAgICJHUEx2MiIsCi0gICAgICAgICJMR1BMLTIuMCIsCi0gICAgICAgICJBcnRpc3RpYyIsCi0gICAgICAgICJNSVQiLAotICAgICAgICAiR1BMdjMrIiwKLSAgICAgICAgIkZPT19CQVIiLAotICAgIF0KLSAgICBpbnZhbGlkX2xpY2Vuc2VzID0gWyJHUEwvQlNEIl0KLQotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgcGFyc2UobGljZW5zZXN0cik6Ci0gICAgICAgIHZpc2l0b3IgPSBTZWVuVmlzaXRvcigpCi0gICAgICAgIHZpc2l0b3IudmlzaXRfc3RyaW5nKGxpY2Vuc2VzdHIpCi0gICAgICAgIHJldHVybiB2aXNpdG9yLnNlZW4KLQotICAgIGRlZiB0ZXN0X3NpbmdsZV9saWNlbnNlcyhzZWxmKToKLSAgICAgICAgZm9yIGxpY2Vuc2UgaW4gc2VsZi5saWNlbnNlczoKLSAgICAgICAgICAgIGxpY2Vuc2VzID0gc2VsZi5wYXJzZShsaWNlbnNlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRMaXN0RXF1YWwobGljZW5zZXMsIFtsaWNlbnNlXSkKLQotICAgIGRlZiB0ZXN0X2ludmFsaWRfbGljZW5zZXMoc2VsZik6Ci0gICAgICAgIGZvciBsaWNlbnNlIGluIHNlbGYuaW52YWxpZF9saWNlbnNlczoKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMob2UubGljZW5zZS5JbnZhbGlkTGljZW5zZSkgYXMgY206Ci0gICAgICAgICAgICAgICAgc2VsZi5wYXJzZShsaWNlbnNlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubGljZW5zZSwgbGljZW5zZSkKLQotY2xhc3MgVGVzdFNpbXBsZUNvbWJpbmF0aW9ucyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgdGVzdHMgPSB7Ci0gICAgICAgICJGT08mQkFSIjogWyJGT08iLCAiQkFSIl0sCi0gICAgICAgICJCQVogJiBNT08iOiBbIkJBWiIsICJNT08iXSwKLSAgICAgICAgIkFMUEhBfEJFVEEiOiBbIkFMUEhBIl0sCi0gICAgICAgICJCQVomTU9PfEZPTyI6IFsiRk9PIl0sCi0gICAgICAgICJGT08mQkFSfEJBWiI6IFsiRk9PIiwgIkJBUiJdLAotICAgIH0KLSAgICBwcmVmZXJyZWQgPSBbIkFMUEhBIiwgIkZPTyIsICJCQVIiXQotCi0gICAgZGVmIHRlc3RfdGVzdHMoc2VsZik6Ci0gICAgICAgIGRlZiBjaG9vc2UoYSwgYik6Ci0gICAgICAgICAgICBpZiBhbGwobGljIGluIHNlbGYucHJlZmVycmVkIGZvciBsaWMgaW4gYik6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGIKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGEKLQotICAgICAgICBmb3IgbGljZW5zZSwgZXhwZWN0ZWQgaW4gc2VsZi50ZXN0cy5pdGVtcygpOgotICAgICAgICAgICAgbGljZW5zZXMgPSBvZS5saWNlbnNlLmZsYXR0ZW5lZF9saWNlbnNlcyhsaWNlbnNlLCBjaG9vc2UpCi0gICAgICAgICAgICBzZWxmLmFzc2VydExpc3RFcXVhbChsaWNlbnNlcywgZXhwZWN0ZWQpCi0KLWNsYXNzIFRlc3RDb21wbGV4Q29tYmluYXRpb25zKFRlc3RTaW1wbGVDb21iaW5hdGlvbnMpOgotICAgIHRlc3RzID0gewotICAgICAgICAiRk9PICYgKEJBUiB8IEJBWikmTU9PIjogWyJGT08iLCAiQkFSIiwgIk1PTyJdLAotICAgICAgICAiKEFMUEhBfChCRVRBJlRIRVRBKXxPTUVHQSkmREVMVEEiOiBbIk9NRUdBIiwgIkRFTFRBIl0sCi0gICAgICAgICIoKEFMUEhBfEJFVEEpJkZPTyl8QkFaIjogWyJCRVRBIiwgIkZPTyJdLAotICAgICAgICAiKEdQTC0yLjB8UHJvcHJpZXRhcnkpJkJTRC00LWNsYXVzZSZNSVQiOiBbIkdQTC0yLjAiLCAiQlNELTQtY2xhdXNlIiwgIk1JVCJdLAotICAgIH0KLSAgICBwcmVmZXJyZWQgPSBbIkJBUiIsICJPTUVHQSIsICJCRVRBIiwgIkdQTC0yLjAiXQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3Qvb2VsaWIvcGF0aC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L29lbGliL3BhdGgucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0ZDA2ODEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3Qvb2VsaWIvcGF0aC5weQorKysgL2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAKLWltcG9ydCB1bml0dGVzdAotaW1wb3J0IG9lLCBvZS5wYXRoCi1pbXBvcnQgdGVtcGZpbGUKLWltcG9ydCBvcwotaW1wb3J0IGVycm5vCi1pbXBvcnQgc2h1dGlsCi0KLWNsYXNzIFRlc3RSZWFsUGF0aCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgRElSUyA9IFsgImEiLCAiYiIsICJldGMiLCAic2JpbiIsICJ1c3IiLCAidXNyL2JpbiIsICJ1c3IvYmluWCIsICJ1c3Ivc2JpbiIsICJ1c3IvaW5jbHVkZSIsICJ1c3IvaW5jbHVkZS9nZGJtIiBdCi0gICAgRklMRVMgPSBbICJldGMvcGFzc3dkIiwgImIvZmlsZSIgXQotICAgIExJTktTID0gWwotICAgICAgICAoICJiaW4iLCAgICAgICAgICAgICAiL3Vzci9iaW4iLCAgICAgICAgICAgICAiL3Vzci9iaW4iICksCi0gICAgICAgICggImJpblgiLCAgICAgICAgICAgICJ1c3IvYmluWCIsICAgICAgICAgICAgICIvdXNyL2JpblgiICksCi0gICAgICAgICggImMiLCAgICAgICAgICAgICAgICJicm9rZW4iLCAgICAgICAgICAgICAgICIvYnJva2VuIiApLAotICAgICAgICAoICJldGMvcGFzc3dkLTEiLCAgICAicGFzc3dkIiwgICAgICAgICAgICAgICAiL2V0Yy9wYXNzd2QiICksCi0gICAgICAgICggImV0Yy9wYXNzd2QtMiIsICAgICJwYXNzd2QtMSIsICAgICAgICAgICAgICIvZXRjL3Bhc3N3ZCIgKSwKLSAgICAgICAgKCAiZXRjL3Bhc3N3ZC0zIiwgICAgIi9ldGMvcGFzc3dkLTEiLCAgICAgICAgIi9ldGMvcGFzc3dkIiApLAotICAgICAgICAoICJldGMvc2hhZG93LTEiLCAgICAiL2V0Yy9zaGFkb3ciLCAgICAgICAgICAiL2V0Yy9zaGFkb3ciICksCi0gICAgICAgICggImV0Yy9zaGFkb3ctMiIsICAgICIvZXRjL3NoYWRvdy0xIiwgICAgICAgICIvZXRjL3NoYWRvdyIgKSwKLSAgICAgICAgKCAicHJvZy1BIiwgICAgICAgICAgImJpbi9wcm9nLUEiLCAgICAgICAgICAgIi91c3IvYmluL3Byb2ctQSIgKSwKLSAgICAgICAgKCAicHJvZy1CIiwgICAgICAgICAgIi9iaW4vcHJvZy1CIiwgICAgICAgICAgIi91c3IvYmluL3Byb2ctQiIgKSwKLSAgICAgICAgKCAidXNyL2Jpbi9wcm9nLUMiLCAgIi4uLy4uL3NiaW4vcHJvZy1DIiwgICAgIi9zYmluL3Byb2ctQyIgKSwKLSAgICAgICAgKCAidXNyL2Jpbi9wcm9nLUQiLCAgIi9zYmluL3Byb2ctRCIsICAgICAgICAgIi9zYmluL3Byb2ctRCIgKSwKLSAgICAgICAgKCAidXNyL2JpblgvcHJvZy1FIiwgIi4uL3NiaW4vcHJvZy1FIiwgICAgICAgTm9uZSApLAotICAgICAgICAoICJ1c3IvYmluL3Byb2ctRiIsICAiLi4vLi4vLi4vc2Jpbi9wcm9nLUYiLCAiL3NiaW4vcHJvZy1GIiApLAotICAgICAgICAoICJsb29wIiwgICAgICAgICAgICAiYS9sb29wIiwgICAgICAgICAgICAgICBOb25lICksCi0gICAgICAgICggImEvbG9vcCIsICAgICAgICAgICIuLi9sb29wIiwgICAgICAgICAgICAgIE5vbmUgKSwKLSAgICAgICAgKCAiYi90ZXN0IiwgICAgICAgICAgImZpbGUvZm9vIiwgICAgICAgICAgICAgIi9iL2ZpbGUvZm9vIiApLAotICAgIF0KLQotICAgIExJTktTX1BIWVMgPSBbCi0gICAgICAgICggIi4vIiwgICAgICAgICAgIi8iLCAgICAgICAgICAgICAgICAiIiApLAotICAgICAgICAoICJiaW5YL3Byb2ctRSIsICIvdXNyL3NiaW4vcHJvZy1FIiwgIi9zYmluL3Byb2ctRSIgKSwKLSAgICBdCi0KLSAgICBFWENFUFRJT05TID0gWwotICAgICAgICAoICJsb29wIiwgICBlcnJuby5FTE9PUCApLAotICAgICAgICAoICJiL3Rlc3QiLCBlcnJuby5FTk9FTlQgKSwKLSAgICBdCi0KLSAgICBkZWYgX19kZWxfXyhzZWxmKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgI29zLnN5c3RlbSgidHJlZSAtRiAlcyIgJSBzZWxmLnRtcGRpcikKLSAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoc2VsZi50bXBkaXIpCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHBhc3MKLQotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi50bXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeCA9ICJvZS10ZXN0X3BhdGgiKQotICAgICAgICBzZWxmLnJvb3QgPSBvcy5wYXRoLmpvaW4oc2VsZi50bXBkaXIsICJSIikKLQotICAgICAgICBvcy5ta2Rpcihvcy5wYXRoLmpvaW4oc2VsZi50bXBkaXIsICJfcmVhbCIpKQotICAgICAgICBvcy5zeW1saW5rKCJfcmVhbCIsIHNlbGYucm9vdCkKLQotICAgICAgICBmb3IgZCBpbiBzZWxmLkRJUlM6Ci0gICAgICAgICAgICBvcy5ta2Rpcihvcy5wYXRoLmpvaW4oc2VsZi5yb290LCBkKSkKLSAgICAgICAgZm9yIGYgaW4gc2VsZi5GSUxFUzoKLSAgICAgICAgICAgIG9wZW4ob3MucGF0aC5qb2luKHNlbGYucm9vdCwgZiksICJ3IikKLSAgICAgICAgZm9yIGwgaW4gc2VsZi5MSU5LUzoKLSAgICAgICAgICAgIG9zLnN5bWxpbmsobFsxXSwgb3MucGF0aC5qb2luKHNlbGYucm9vdCwgbFswXSkpCi0KLSAgICBkZWYgX19yZWFscGF0aChzZWxmLCBmaWxlLCB1c2VfcGh5c2RpciwgYXNzdW1lX2RpciA9IFRydWUpOgotICAgICAgICByZXR1cm4gb2UucGF0aC5yZWFscGF0aChvcy5wYXRoLmpvaW4oc2VsZi5yb290LCBmaWxlKSwgc2VsZi5yb290LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VfcGh5c2RpciwgYXNzdW1lX2RpciA9IGFzc3VtZV9kaXIpCi0KLSAgICBkZWYgdGVzdF9ub3JtKHNlbGYpOgotICAgICAgICBmb3IgbCBpbiBzZWxmLkxJTktTOgotICAgICAgICAgICAgaWYgbFsyXSA9PSBOb25lOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgIHRhcmdldF9wID0gc2VsZi5fX3JlYWxwYXRoKGxbMF0sIFRydWUpCi0gICAgICAgICAgICB0YXJnZXRfbCA9IHNlbGYuX19yZWFscGF0aChsWzBdLCBGYWxzZSkKLQotICAgICAgICAgICAgaWYgbFsyXSAhPSBGYWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRhcmdldF9wLCB0YXJnZXRfbCkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxbMl0sIHRhcmdldF9wW2xlbihzZWxmLnJvb3QpOl0pCi0KLSAgICBkZWYgdGVzdF9waHlzKHNlbGYpOgotICAgICAgICBmb3IgbCBpbiBzZWxmLkxJTktTX1BIWVM6Ci0gICAgICAgICAgICB0YXJnZXRfcCA9IHNlbGYuX19yZWFscGF0aChsWzBdLCBUcnVlKQotICAgICAgICAgICAgdGFyZ2V0X2wgPSBzZWxmLl9fcmVhbHBhdGgobFswXSwgRmFsc2UpCi0KLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobFsxXSwgdGFyZ2V0X3BbbGVuKHNlbGYucm9vdCk6XSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobFsyXSwgdGFyZ2V0X2xbbGVuKHNlbGYucm9vdCk6XSkKLQotICAgIGRlZiB0ZXN0X2xvb3Aoc2VsZik6Ci0gICAgICAgIGZvciBlIGluIHNlbGYuRVhDRVBUSU9OUzoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoT1NFcnJvciwgcidcW0Vycm5vICV1XF0nICUgZVsxXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19yZWFscGF0aCwgZVswXSwgRmFsc2UsIEZhbHNlKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3Qvb2VsaWIvdHlwZXMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9vZWxpYi90eXBlcy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGZlMjc0Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9vZWxpYi90eXBlcy5weQorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLWltcG9ydCB1bml0dGVzdAotZnJvbSBvZS5tYWtldHlwZSBpbXBvcnQgY3JlYXRlCi0KLWNsYXNzIFRlc3RCb29sZWFuVHlwZSh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHRlc3RfaW52YWxpZChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY3JlYXRlLCAnJywgJ2Jvb2xlYW4nKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjcmVhdGUsICdmb28nLCAnYm9vbGVhbicpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY3JlYXRlLCBvYmplY3QoKSwgJ2Jvb2xlYW4nKQotCi0gICAgZGVmIHRlc3RfdHJ1ZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNyZWF0ZSgneScsICdib29sZWFuJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjcmVhdGUoJ3llcycsICdib29sZWFuJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjcmVhdGUoJzEnLCAnYm9vbGVhbicpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoY3JlYXRlKCd0JywgJ2Jvb2xlYW4nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNyZWF0ZSgndHJ1ZScsICdib29sZWFuJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjcmVhdGUoJ1RSVUUnLCAnYm9vbGVhbicpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoY3JlYXRlKCd0cnVFJywgJ2Jvb2xlYW4nKSkKLQotICAgIGRlZiB0ZXN0X2ZhbHNlKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNyZWF0ZSgnbicsICdib29sZWFuJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY3JlYXRlKCdubycsICdib29sZWFuJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY3JlYXRlKCcwJywgJ2Jvb2xlYW4nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjcmVhdGUoJ2YnLCAnYm9vbGVhbicpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNyZWF0ZSgnZmFsc2UnLCAnYm9vbGVhbicpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNyZWF0ZSgnRkFMU0UnLCAnYm9vbGVhbicpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNyZWF0ZSgnZmFMc2UnLCAnYm9vbGVhbicpKQotCi0gICAgZGVmIHRlc3RfYm9vbF9lcXVhbGl0eShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjcmVhdGUoJ24nLCAnYm9vbGVhbicpLCBGYWxzZSkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChjcmVhdGUoJ24nLCAnYm9vbGVhbicpLCBUcnVlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNyZWF0ZSgneScsICdib29sZWFuJyksIFRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoY3JlYXRlKCd5JywgJ2Jvb2xlYW4nKSwgRmFsc2UpCi0KLWNsYXNzIFRlc3RMaXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgYXNzZXJ0TGlzdEVxdWFsKHNlbGYsIHZhbHVlLCB2YWxpZCwgc2VwPU5vbmUpOgotICAgICAgICBvYmogPSBjcmVhdGUodmFsdWUsICdsaXN0Jywgc2VwYXJhdG9yPXNlcCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvYmosIHZhbGlkKQotICAgICAgICBpZiBzZXAgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9iai5zZXBhcmF0b3IsIHNlcCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIob2JqKSwgb2JqLnNlcGFyYXRvci5qb2luKG9iaikpCi0KLSAgICBkZWYgdGVzdF9saXN0X25vc2VwKHNlbGYpOgotICAgICAgICB0ZXN0bGlzdCA9IFsnYWxwaGEnLCAnYmV0YScsICd0aGV0YSddCi0gICAgICAgIHNlbGYuYXNzZXJ0TGlzdEVxdWFsKCdhbHBoYSBiZXRhIHRoZXRhJywgdGVzdGxpc3QpCi0gICAgICAgIHNlbGYuYXNzZXJ0TGlzdEVxdWFsKCdhbHBoYSAgYmV0YVx0dGhldGEnLCB0ZXN0bGlzdCkKLSAgICAgICAgc2VsZi5hc3NlcnRMaXN0RXF1YWwoJ2FscGhhJywgWydhbHBoYSddKQotCi0gICAgZGVmIHRlc3RfbGlzdF91c2Vyc2VwKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydExpc3RFcXVhbCgnZm9vOmJhcicsIFsnZm9vJywgJ2JhciddLCAnOicpCi0gICAgICAgIHNlbGYuYXNzZXJ0TGlzdEVxdWFsKCdmb286YmFyOmJheicsIFsnZm9vJywgJ2JhcicsICdiYXonXSwgJzonKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3Qvb2VsaWIvdXRpbHMucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9vZWxpYi91dGlscy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2RlYjEwZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9vZWxpYi91dGlscy5weQorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLWltcG9ydCB1bml0dGVzdAotZnJvbSBvZS51dGlscyBpbXBvcnQgcGFja2FnZXNfZmlsdGVyX291dF9zeXN0ZW0sIHRyaW1fdmVyc2lvbgotCi1jbGFzcyBUZXN0UGFja2FnZXNGaWx0ZXJPdXRTeXN0ZW0odW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiB0ZXN0X2ZpbHRlcihzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFRlc3QgdGhhdCBvZS51dGlscy5wYWNrYWdlc19maWx0ZXJfb3V0X3N5c3RlbSB3b3Jrcy4KLSAgICAgICAgIiIiCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGltcG9ydCBiYgotICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJDYW5ub3QgaW1wb3J0IGJiIikKLQotICAgICAgICBkID0gYmIuZGF0YV9zbWFydC5EYXRhU21hcnQoKQotICAgICAgICBkLnNldFZhcigiUE4iLCAiZm9vIikKLQotICAgICAgICBkLnNldFZhcigiUEFDS0FHRVMiLCAiZm9vIGZvby1kb2MgZm9vLWRldiIpCi0gICAgICAgIHBrZ3MgPSBwYWNrYWdlc19maWx0ZXJfb3V0X3N5c3RlbShkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBrZ3MsIFtdKQotCi0gICAgICAgIGQuc2V0VmFyKCJQQUNLQUdFUyIsICJmb28gZm9vLWRvYyBmb28tZGF0YSBmb28tZGV2IikKLSAgICAgICAgcGtncyA9IHBhY2thZ2VzX2ZpbHRlcl9vdXRfc3lzdGVtKGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGtncywgWyJmb28tZGF0YSJdKQotCi0gICAgICAgIGQuc2V0VmFyKCJQQUNLQUdFUyIsICJmb28gZm9vLWxvY2FsZS1lbi1nYiIpCi0gICAgICAgIHBrZ3MgPSBwYWNrYWdlc19maWx0ZXJfb3V0X3N5c3RlbShkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBrZ3MsIFtdKQotCi0gICAgICAgIGQuc2V0VmFyKCJQQUNLQUdFUyIsICJmb28gZm9vLWRhdGEgZm9vLWxvY2FsZS1lbi1nYiIpCi0gICAgICAgIHBrZ3MgPSBwYWNrYWdlc19maWx0ZXJfb3V0X3N5c3RlbShkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBrZ3MsIFsiZm9vLWRhdGEiXSkKLQotCi1jbGFzcyBUZXN0VHJpbVZlcnNpb24odW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiB0ZXN0X3ZlcnNpb25fZXhjZXB0aW9uKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6Ci0gICAgICAgICAgICB0cmltX3ZlcnNpb24oTm9uZSwgMikKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgotICAgICAgICAgICAgdHJpbV92ZXJzaW9uKCgxLCAyLCAzKSwgMikKLQotICAgIGRlZiB0ZXN0X251bV9leGNlcHRpb24oc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6Ci0gICAgICAgICAgICB0cmltX3ZlcnNpb24oIjEuMi4zIiwgMCkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKLSAgICAgICAgICAgIHRyaW1fdmVyc2lvbigiMS4yLjMiLCAtMSkKLQotICAgIGRlZiB0ZXN0X3ZhbGlkKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyaW1fdmVyc2lvbigiMS4yLjMiLCAxKSwgIjEiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyaW1fdmVyc2lvbigiMS4yLjMiLCAyKSwgIjEuMiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJpbV92ZXJzaW9uKCIxLjIuMyIsIDMpLCAiMS4yLjMiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyaW1fdmVyc2lvbigiMS4yLjMiLCA0KSwgIjEuMi4zIikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L29lc2NyaXB0cy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L29lc2NyaXB0cy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjk1NDdmNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9vZXNjcmlwdHMucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1pbXBvcnQgZGF0ZXRpbWUKLWltcG9ydCB1bml0dGVzdAotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLWltcG9ydCBzaHV0aWwKLQotaW1wb3J0IG9lcWEudXRpbHMuZnRvb2xzIGFzIGZ0b29scwotZnJvbSBvZXFhLnNlbGZ0ZXN0LmJhc2UgaW1wb3J0IG9lU2VsZlRlc3QKLWZyb20gb2VxYS5zZWxmdGVzdC5idWlsZGhpc3RvcnkgaW1wb3J0IEJ1aWxkaGlzdG9yeUJhc2UKLWZyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgQ29tbWFuZCwgcnVuQ21kLCBiaXRiYWtlLCBnZXRfYmJfdmFyLCBnZXRfdGVzdF9sYXllcgotZnJvbSBvZXFhLnV0aWxzLmRlY29yYXRvcnMgaW1wb3J0IHRlc3RjYXNlCi0KLWNsYXNzIEJ1aWxkaGlzdG9yeURpZmZUZXN0cyhCdWlsZGhpc3RvcnlCYXNlKToKLQotICAgIEB0ZXN0Y2FzZSgyOTUpCi0gICAgZGVmIHRlc3RfYnVpbGRoaXN0b3J5X2RpZmYoc2VsZik6Ci0gICAgICAgIHRhcmdldCA9ICd4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lJwotICAgICAgICBzZWxmLnJ1bl9idWlsZGhpc3Rvcnlfb3BlcmF0aW9uKHRhcmdldCwgdGFyZ2V0X2NvbmZpZz0iUFIgPSBcInIxXCIiLCBjaGFuZ2VfYmhfbG9jYXRpb249VHJ1ZSkKLSAgICAgICAgc2VsZi5ydW5fYnVpbGRoaXN0b3J5X29wZXJhdGlvbih0YXJnZXQsIHRhcmdldF9jb25maWc9IlBSID0gXCJyMFwiIiwgY2hhbmdlX2JoX2xvY2F0aW9uPUZhbHNlLCBleHBlY3RfZXJyb3I9VHJ1ZSkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJidWlsZGhpc3RvcnktZGlmZiAtcCAlcyIgJSBnZXRfYmJfdmFyKCdCVUlMREhJU1RPUllfRElSJykpCi0gICAgICAgIGV4cGVjdGVkX291dHB1dCA9ICdQUiBjaGFuZ2VkIGZyb20gInIxIiB0byAicjAiJwotICAgICAgICBzZWxmLmFzc2VydFRydWUoZXhwZWN0ZWRfb3V0cHV0IGluIHJlc3VsdC5vdXRwdXQsIG1zZz0iRGlkIG5vdCBmaW5kIGV4cGVjdGVkIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L3BrZ2RhdGEucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9wa2dkYXRhLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNjljM2M4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L3BrZ2RhdGEucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyMjcgKzAsMCBAQAotaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgb3MKLWltcG9ydCB0ZW1wZmlsZQotaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBmbm1hdGNoCi0KLWltcG9ydCBvZXFhLnV0aWxzLmZ0b29scyBhcyBmdG9vbHMKLWZyb20gb2VxYS5zZWxmdGVzdC5iYXNlIGltcG9ydCBvZVNlbGZUZXN0Ci1mcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZCwgYml0YmFrZSwgZ2V0X2JiX3ZhciwgZ2V0X2JiX3ZhcnMKLWZyb20gb2VxYS51dGlscy5kZWNvcmF0b3JzIGltcG9ydCB0ZXN0Y2FzZQotCi1jbGFzcyBPZVBrZ2RhdGFVdGlsVGVzdHMob2VTZWxmVGVzdCk6Ci0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgotICAgICAgICAjIEVuc3VyZSB3ZSBoYXZlIHRoZSByaWdodCBkYXRhIGluIHBrZ2RhdGEKLSAgICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoInNlbGZ0ZXN0IikKLSAgICAgICAgbG9nZ2VyLmluZm8oJ1J1bm5pbmcgYml0YmFrZSB0byBnZW5lcmF0ZSBwa2dkYXRhJykKLSAgICAgICAgYml0YmFrZSgnYnVzeWJveCB6bGliIG00JykKLQotICAgIEB0ZXN0Y2FzZSgxMjAzKQotICAgIGRlZiB0ZXN0X2xvb2t1cF9wa2coc2VsZik6Ci0gICAgICAgICMgRm9yd2FyZCB0ZXN0cwotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBsb29rdXAtcGtnICJ6bGliIGJ1c3lib3giJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LCAnbGliejFcbmJ1c3lib3gnKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBsb29rdXAtcGtnIHpsaWItZGV2JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LCAnbGliei1kZXYnKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBsb29rdXAtcGtnIG5vbmV4aXN0ZW50cGtnJywgaWdub3JlX3N0YXR1cz1UcnVlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5zdGF0dXMsIDEsICJTdGF0dXMgZGlmZmVyZW50IHRoYW4gMS4gb3V0cHV0OiAlcyIgJSByZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQsICdFUlJPUjogVGhlIGZvbGxvd2luZyBwYWNrYWdlcyBjb3VsZCBub3QgYmUgZm91bmQ6IG5vbmV4aXN0ZW50cGtnJykKLSAgICAgICAgIyBSZXZlcnNlIHRlc3RzCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGxvb2t1cC1wa2cgLXIgImxpYnoxIGJ1c3lib3giJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LCAnemxpYlxuYnVzeWJveCcpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGxvb2t1cC1wa2cgLXIgbGliei1kZXYnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQsICd6bGliLWRldicpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGxvb2t1cC1wa2cgLXIgbm9uZXhpc3RlbnRwa2cnLCBpZ25vcmVfc3RhdHVzPVRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnN0YXR1cywgMSwgIlN0YXR1cyBkaWZmZXJlbnQgdGhhbiAxLiBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dCwgJ0VSUk9SOiBUaGUgZm9sbG93aW5nIHBhY2thZ2VzIGNvdWxkIG5vdCBiZSBmb3VuZDogbm9uZXhpc3RlbnRwa2cnKQotCi0gICAgQHRlc3RjYXNlKDEyMDUpCi0gICAgZGVmIHRlc3RfcmVhZF92YWx1ZShzZWxmKToKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgcmVhZC12YWx1ZSBQTiBsaWJ6MScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dCwgJ3psaWInKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCByZWFkLXZhbHVlIFBLRyBsaWJ6MScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dCwgJ2xpYnoxJykKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgcmVhZC12YWx1ZSBQS0dTSVpFIG00JykKLSAgICAgICAgcGtnc2l6ZSA9IGludChyZXN1bHQub3V0cHV0LnN0cmlwKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihwa2dzaXplLCAxLCAiU2l6ZSBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIDEuICVzIiAlIHJlc3VsdC5vdXRwdXQpCi0KLSAgICBAdGVzdGNhc2UoMTE5OCkKLSAgICBkZWYgdGVzdF9maW5kX3BhdGgoc2VsZik6Ci0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGZpbmQtcGF0aCAvbGliL2xpYnouc28uMScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dCwgJ3psaWI6IC9saWIvbGliei5zby4xJykKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgZmluZC1wYXRoIC91c3IvYmluL200JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LCAnbTQ6IC91c3IvYmluL200JykKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgZmluZC1wYXRoIC9ub3QvZXhpc3QnLCBpZ25vcmVfc3RhdHVzPVRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnN0YXR1cywgMSwgIlN0YXR1cyBkaWZmZXJlbnQgdGhhbiAxLiBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm91dHB1dCwgJ0VSUk9SOiBVbmFibGUgdG8gZmluZCBhbnkgcGFja2FnZSBwcm9kdWNpbmcgcGF0aCAvbm90L2V4aXN0JykKLQotICAgIEB0ZXN0Y2FzZSgxMjA0KQotICAgIGRlZiB0ZXN0X2xvb2t1cF9yZWNpcGUoc2VsZik6Ci0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGxvb2t1cC1yZWNpcGUgImxpYnotc3RhdGljZGV2IGJ1c3lib3giJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LCAnemxpYlxuYnVzeWJveCcpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGxvb2t1cC1yZWNpcGUgbGliei1kYmcnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQsICd6bGliJykKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgbG9va3VwLXJlY2lwZSBub25leGlzdGVudHBrZycsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuc3RhdHVzLCAxLCAiU3RhdHVzIGRpZmZlcmVudCB0aGFuIDEuIG91dHB1dDogJXMiICUgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LCAnRVJST1I6IFRoZSBmb2xsb3dpbmcgcGFja2FnZXMgY291bGQgbm90IGJlIGZvdW5kOiBub25leGlzdGVudHBrZycpCi0KLSAgICBAdGVzdGNhc2UoMTIwMikKLSAgICBkZWYgdGVzdF9saXN0X3BrZ3Moc2VsZik6Ci0gICAgICAgICMgTm8gYXJndW1lbnRzCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGxpc3QtcGtncycpCi0gICAgICAgIHBrZ2xpc3QgPSByZXN1bHQub3V0cHV0LnNwbGl0KCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignemxpYicsIHBrZ2xpc3QsICJMaXN0ZWQgcGFja2FnZXM6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3psaWItZGV2JywgcGtnbGlzdCwgIkxpc3RlZCBwYWNrYWdlczogJXMiICUgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgIyBObyBwa2dzcGVjLCBydW50aW1lCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGxpc3QtcGtncyAtcicpCi0gICAgICAgIHBrZ2xpc3QgPSByZXN1bHQub3V0cHV0LnNwbGl0KCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignbGliei1kZXYnLCBwa2dsaXN0LCAiTGlzdGVkIHBhY2thZ2VzOiAlcyIgJSByZXN1bHQub3V0cHV0KQotICAgICAgICAjIFdpdGggcmVjaXBlIHNwZWNpZmllZAotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBsaXN0LXBrZ3MgLXAgemxpYicpCi0gICAgICAgIHBrZ2xpc3QgPSBzb3J0ZWQocmVzdWx0Lm91dHB1dC5zcGxpdCgpKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBwa2dsaXN0LnJlbW92ZSgnemxpYi1wdGVzdCcpICMgaW4gY2FzZSBwdGVzdCBpcyBkaXNhYmxlZAotICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwa2dsaXN0LCBbJ3psaWInLCAnemxpYi1kYmcnLCAnemxpYi1kZXYnLCAnemxpYi1kb2MnLCAnemxpYi1zdGF0aWNkZXYnXSwgIlBhY2thZ2VzIGxpc3RlZCBhZnRlciByZW1vdmU6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgICMgV2l0aCByZWNpcGUgc3BlY2lmaWVkLCBydW50aW1lCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGxpc3QtcGtncyAtcCB6bGliIC1yJykKLSAgICAgICAgcGtnbGlzdCA9IHNvcnRlZChyZXN1bHQub3V0cHV0LnNwbGl0KCkpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHBrZ2xpc3QucmVtb3ZlKCdsaWJ6LXB0ZXN0JykgIyBpbiBjYXNlIHB0ZXN0IGlzIGRpc2FibGVkCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBrZ2xpc3QsIFsnbGliei1kYmcnLCAnbGliei1kZXYnLCAnbGliei1kb2MnLCAnbGliei1zdGF0aWNkZXYnLCAnbGliejEnXSwgIlBhY2thZ2VzIGxpc3RlZCBhZnRlciByZW1vdmU6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgICMgV2l0aCByZWNpcGUgc3BlY2lmaWVkIGFuZCB1bnBhY2thZ2VkCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGxpc3QtcGtncyAtcCB6bGliIC11JykKLSAgICAgICAgcGtnbGlzdCA9IHNvcnRlZChyZXN1bHQub3V0cHV0LnNwbGl0KCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3psaWItbG9jYWxlJywgcGtnbGlzdCwgIkxpc3RlZCBwYWNrYWdlczogJXMiICUgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgIyBXaXRoIHJlY2lwZSBzcGVjaWZpZWQgYW5kIHVucGFja2FnZWQsIHJ1bnRpbWUKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgbGlzdC1wa2dzIC1wIHpsaWIgLXUgLXInKQotICAgICAgICBwa2dsaXN0ID0gc29ydGVkKHJlc3VsdC5vdXRwdXQuc3BsaXQoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignbGliei1sb2NhbGUnLCBwa2dsaXN0LCAiTGlzdGVkIHBhY2thZ2VzOiAlcyIgJSByZXN1bHQub3V0cHV0KQotICAgICAgICAjIFdpdGggcmVjaXBlIHNwZWNpZmllZCBhbmQgcGtnc3BlYwotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBsaXN0LXBrZ3MgLXAgemxpYiAiKi1kKiInKQotICAgICAgICBwa2dsaXN0ID0gc29ydGVkKHJlc3VsdC5vdXRwdXQuc3BsaXQoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwa2dsaXN0LCBbJ3psaWItZGJnJywgJ3psaWItZGV2JywgJ3psaWItZG9jJ10sICJQYWNrYWdlcyBsaXN0ZWQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgICMgV2l0aCByZWNpcGUgc3BlY2lmaWVkIGFuZCBwa2dzcGVjLCBydW50aW1lCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGxpc3QtcGtncyAtcCB6bGliIC1yICIqLWQqIicpCi0gICAgICAgIHBrZ2xpc3QgPSBzb3J0ZWQocmVzdWx0Lm91dHB1dC5zcGxpdCgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBrZ2xpc3QsIFsnbGliei1kYmcnLCAnbGliei1kZXYnLCAnbGliei1kb2MnXSwgIlBhY2thZ2VzIGxpc3RlZDogJXMiICUgcmVzdWx0Lm91dHB1dCkKLQotICAgIEB0ZXN0Y2FzZSgxMjAxKQotICAgIGRlZiB0ZXN0X2xpc3RfcGtnX2ZpbGVzKHNlbGYpOgotICAgICAgICBkZWYgc3BsaXRvdXRwdXQob3V0cHV0KToKLSAgICAgICAgICAgIGZpbGVzID0ge30KLSAgICAgICAgICAgIGN1cnBrZyA9IE5vbmUKLSAgICAgICAgICAgIGZvciBsaW5lIGluIG91dHB1dC5zcGxpdGxpbmVzKCk6Ci0gICAgICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCdcdCcpOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY3VycGtnLCAnVW5leHBlY3RlZCBub24tcGFja2FnZSBsaW5lOlxuJXMnICUgbGluZSkKLSAgICAgICAgICAgICAgICAgICAgZmlsZXNbY3VycGtnXS5hcHBlbmQobGluZS5zdHJpcCgpKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsaW5lLnJzdHJpcCgpLmVuZHN3aXRoKCc6JyksICdJbnZhbGlkIHBhY2thZ2UgbGluZSBpbiBvdXRwdXQ6XG4lcycgJSBsaW5lKQotICAgICAgICAgICAgICAgICAgICBjdXJwa2cgPSBsaW5lLnNwbGl0KCc6JylbMF0KLSAgICAgICAgICAgICAgICAgICAgZmlsZXNbY3VycGtnXSA9IFtdCi0gICAgICAgICAgICByZXR1cm4gZmlsZXMKLSAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnYmFzZV9saWJkaXInLCAnbGliZGlyJywgJ2luY2x1ZGVkaXInLCAnbWFuZGlyJ10pCi0gICAgICAgIGJhc2VfbGliZGlyID0gYmJfdmFyc1snYmFzZV9saWJkaXInXQotICAgICAgICBsaWJkaXIgPSBiYl92YXJzWydsaWJkaXInXQotICAgICAgICBpbmNsdWRlZGlyID0gYmJfdmFyc1snaW5jbHVkZWRpciddCi0gICAgICAgIG1hbmRpciA9IGJiX3ZhcnNbJ21hbmRpciddCi0gICAgICAgICMgVGVzdCByZWNpcGUtc3BhY2UgcGFja2FnZSBuYW1lCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGxpc3QtcGtnLWZpbGVzIHpsaWItZGV2IHpsaWItZG9jJykKLSAgICAgICAgZmlsZXMgPSBzcGxpdG91dHB1dChyZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKCd6bGliLWRldicsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKCd6bGliLWRvYycsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKG9zLnBhdGguam9pbihpbmNsdWRlZGlyLCAnemxpYi5oJyksIGZpbGVzWyd6bGliLWRldiddKQotICAgICAgICBzZWxmLmFzc2VydEluKG9zLnBhdGguam9pbihtYW5kaXIsICdtYW4zL3psaWIuMycpLCBmaWxlc1snemxpYi1kb2MnXSkKLSAgICAgICAgIyBUZXN0IHJ1bnRpbWUgcGFja2FnZSBuYW1lCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGxpc3QtcGtnLWZpbGVzIC1yIGxpYnoxIGxpYnotZGV2JykKLSAgICAgICAgZmlsZXMgPSBzcGxpdG91dHB1dChyZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKCdsaWJ6MScsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKCdsaWJ6LWRldicsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIobGVuKGZpbGVzWydsaWJ6MSddKSwgMSkKLSAgICAgICAgbGlic3BlYyA9IG9zLnBhdGguam9pbihiYXNlX2xpYmRpciwgJ2xpYnouc28uMS4qJykKLSAgICAgICAgZm91bmQgPSBGYWxzZQotICAgICAgICBmb3IgZmlsZWl0ZW0gaW4gZmlsZXNbJ2xpYnoxJ106Ci0gICAgICAgICAgICBpZiBmbm1hdGNoLmZubWF0Y2hjYXNlKGZpbGVpdGVtLCBsaWJzcGVjKToKLSAgICAgICAgICAgICAgICBmb3VuZCA9IFRydWUKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBzZWxmLmFzc2VydFRydWUoZm91bmQsICdDb3VsZCBub3QgZmluZCB6bGliIGxpYnJhcnkgZmlsZSAlcyBpbiBsaWJ6MSBwYWNrYWdlIGZpbGUgbGlzdDogJXMnICUgKGxpYnNwZWMsIGZpbGVzWydsaWJ6MSddKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbihvcy5wYXRoLmpvaW4oaW5jbHVkZWRpciwgJ3psaWIuaCcpLCBmaWxlc1snbGliei1kZXYnXSkKLSAgICAgICAgIyBUZXN0IHJlY2lwZQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBsaXN0LXBrZy1maWxlcyAtcCB6bGliJykKLSAgICAgICAgZmlsZXMgPSBzcGxpdG91dHB1dChyZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKCd6bGliLWRiZycsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKCd6bGliLWRvYycsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKCd6bGliLWRldicsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKCd6bGliLXN0YXRpY2RldicsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKCd6bGliJywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ3psaWItbG9jYWxlJywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCi0gICAgICAgICMgKGlnbm9yZSBwdGVzdCwgbWlnaHQgbm90IGJlIHRoZXJlIGRlcGVuZGluZyBvbiBjb25maWcpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4ob3MucGF0aC5qb2luKGluY2x1ZGVkaXIsICd6bGliLmgnKSwgZmlsZXNbJ3psaWItZGV2J10pCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4ob3MucGF0aC5qb2luKG1hbmRpciwgJ21hbjMvemxpYi4zJyksIGZpbGVzWyd6bGliLWRvYyddKQotICAgICAgICBzZWxmLmFzc2VydEluKG9zLnBhdGguam9pbihsaWJkaXIsICdsaWJ6LmEnKSwgZmlsZXNbJ3psaWItc3RhdGljZGV2J10pCi0gICAgICAgICMgVGVzdCByZWNpcGUsIHJ1bnRpbWUKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdvZS1wa2dkYXRhLXV0aWwgbGlzdC1wa2ctZmlsZXMgLXAgemxpYiAtcicpCi0gICAgICAgIGZpbGVzID0gc3BsaXRvdXRwdXQocmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignbGliei1kYmcnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignbGliei1kb2MnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignbGliei1kZXYnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignbGliei1zdGF0aWNkZXYnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignbGliejEnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbignbGliei1sb2NhbGUnLCBsaXN0KGZpbGVzLmtleXMoKSksICJsaXN0ZWQgcGtncy4gZmlsZXM6ICVzIiAlcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbihvcy5wYXRoLmpvaW4oaW5jbHVkZWRpciwgJ3psaWIuaCcpLCBmaWxlc1snbGliei1kZXYnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbihvcy5wYXRoLmpvaW4obWFuZGlyLCAnbWFuMy96bGliLjMnKSwgZmlsZXNbJ2xpYnotZG9jJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4ob3MucGF0aC5qb2luKGxpYmRpciwgJ2xpYnouYScpLCBmaWxlc1snbGliei1zdGF0aWNkZXYnXSkKLSAgICAgICAgIyBUZXN0IHJlY2lwZSwgdW5wYWNrYWdlZAotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBsaXN0LXBrZy1maWxlcyAtcCB6bGliIC11JykKLSAgICAgICAgZmlsZXMgPSBzcGxpdG91dHB1dChyZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKCd6bGliLWRiZycsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKCd6bGliLWRvYycsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKCd6bGliLWRldicsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKCd6bGliLXN0YXRpY2RldicsIGxpc3QoZmlsZXMua2V5cygpKSwgImxpc3RlZCBwa2dzLiBmaWxlczogJXMiICVyZXN1bHQub3V0cHV0KQotICAgICAgICBzZWxmLmFzc2VydEluKCd6bGliJywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3psaWItbG9jYWxlJywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpICMgdGhpcyBpcyB0aGUga2V5IG9uZQotICAgICAgICBzZWxmLmFzc2VydEluKG9zLnBhdGguam9pbihpbmNsdWRlZGlyLCAnemxpYi5oJyksIGZpbGVzWyd6bGliLWRldiddKQotICAgICAgICBzZWxmLmFzc2VydEluKG9zLnBhdGguam9pbihtYW5kaXIsICdtYW4zL3psaWIuMycpLCBmaWxlc1snemxpYi1kb2MnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbihvcy5wYXRoLmpvaW4obGliZGlyLCAnbGliei5hJyksIGZpbGVzWyd6bGliLXN0YXRpY2RldiddKQotICAgICAgICAjIFRlc3QgcmVjaXBlLCBydW50aW1lLCB1bnBhY2thZ2VkCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGxpc3QtcGtnLWZpbGVzIC1wIHpsaWIgLXIgLXUnKQotICAgICAgICBmaWxlcyA9IHNwbGl0b3V0cHV0KHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xpYnotZGJnJywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xpYnotZG9jJywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xpYnotZGV2JywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xpYnotc3RhdGljZGV2JywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xpYnoxJywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xpYnotbG9jYWxlJywgbGlzdChmaWxlcy5rZXlzKCkpLCAibGlzdGVkIHBrZ3MuIGZpbGVzOiAlcyIgJXJlc3VsdC5vdXRwdXQpICMgdGhpcyBpcyB0aGUga2V5IG9uZQotICAgICAgICBzZWxmLmFzc2VydEluKG9zLnBhdGguam9pbihpbmNsdWRlZGlyLCAnemxpYi5oJyksIGZpbGVzWydsaWJ6LWRldiddKQotICAgICAgICBzZWxmLmFzc2VydEluKG9zLnBhdGguam9pbihtYW5kaXIsICdtYW4zL3psaWIuMycpLCBmaWxlc1snbGliei1kb2MnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbihvcy5wYXRoLmpvaW4obGliZGlyLCAnbGliei5hJyksIGZpbGVzWydsaWJ6LXN0YXRpY2RldiddKQotCi0gICAgQHRlc3RjYXNlKDEyMDApCi0gICAgZGVmIHRlc3RfZ2xvYihzZWxmKToKLSAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdwa2dkYXRhcWEnKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBkaXIpCi0gICAgICAgIHBrZ2xpc3RmaWxlID0gb3MucGF0aC5qb2luKHRlbXBkaXIsICdwa2dsaXN0JykKLSAgICAgICAgd2l0aCBvcGVuKHBrZ2xpc3RmaWxlLCAndycpIGFzIGY6Ci0gICAgICAgICAgICBmLndyaXRlKCdsaWJ6MVxuJykKLSAgICAgICAgICAgIGYud3JpdGUoJ2J1c3lib3hcbicpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGdsb2IgJXMgIiotZGV2IicgJSBwa2dsaXN0ZmlsZSkKLSAgICAgICAgZGVzaXJlZHJlc3VsdCA9IFsnbGliei1kZXYnLCAnYnVzeWJveC1kZXYnXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChyZXN1bHQub3V0cHV0LnNwbGl0KCkpLCBzb3J0ZWQoZGVzaXJlZHJlc3VsdCkpCi0gICAgICAgICMgVGhlIGZvbGxvd2luZyBzaG91bGQgbm90IGVycm9yIChiZWNhdXNlIHdoZW4gd2UgdXNlIHRoaXMgZHVyaW5nIHJvb3RmcyBjb25zdHJ1Y3Rpb24sIHNvbWV0aW1lcyB0aGUgY29tcGxlbWVudGFyeSBwYWNrYWdlIHdvbid0IGV4aXN0KQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCBnbG9iICVzICIqLW5vbmV4aXN0ZW50IicgJSBwa2dsaXN0ZmlsZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LCAnJykKLSAgICAgICAgIyBUZXN0IGV4Y2x1ZGUgb3B0aW9uCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgnb2UtcGtnZGF0YS11dGlsIGdsb2IgJXMgIiotZGV2ICotZGJnIiAteCAiXmxpYnoiJyAlIHBrZ2xpc3RmaWxlKQotICAgICAgICByZXN1bHRsaXN0ID0gcmVzdWx0Lm91dHB1dC5zcGxpdCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ2xpYnotZGV2JywgcmVzdWx0bGlzdCkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbignbGliei1kYmcnLCByZXN1bHRsaXN0KQotCi0gICAgQHRlc3RjYXNlKDEyMDYpCi0gICAgZGVmIHRlc3Rfc3BlY2lmeV9wa2dkYXRhZGlyKHNlbGYpOgotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ29lLXBrZ2RhdGEtdXRpbCAtcCAlcyBsb29rdXAtcGtnIHpsaWInICUgZ2V0X2JiX3ZhcignUEtHREFUQV9ESVInKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LCAnbGliejEnKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvcHJzZXJ2aWNlLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvcHJzZXJ2aWNlLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNGQ0MTk3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L3Byc2VydmljZS5weQorKysgL2Rldi9udWxsCkBAIC0xLDEzMiArMCwwIEBACi1pbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBvcwotaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCByZQotaW1wb3J0IHNodXRpbAotaW1wb3J0IGRhdGV0aW1lCi0KLWltcG9ydCBvZXFhLnV0aWxzLmZ0b29scyBhcyBmdG9vbHMKLWZyb20gb2VxYS5zZWxmdGVzdC5iYXNlIGltcG9ydCBvZVNlbGZUZXN0Ci1mcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZCwgYml0YmFrZSwgZ2V0X2JiX3ZhcgotZnJvbSBvZXFhLnV0aWxzLmRlY29yYXRvcnMgaW1wb3J0IHRlc3RjYXNlCi1mcm9tIG9lcWEudXRpbHMubmV0d29yayBpbXBvcnQgZ2V0X2ZyZWVfcG9ydAotCi1jbGFzcyBCaXRiYWtlUHJUZXN0cyhvZVNlbGZUZXN0KToKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBzZXRVcENsYXNzKGNscyk6Ci0gICAgICAgIGNscy5wa2dkYXRhX2RpciA9IGdldF9iYl92YXIoJ1BLR0RBVEFfRElSJykKLQotICAgIGRlZiBnZXRfcHJfdmVyc2lvbihzZWxmLCBwYWNrYWdlX25hbWUpOgotICAgICAgICBwYWNrYWdlX2RhdGFfZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLnBrZ2RhdGFfZGlyLCAncnVudGltZScsIHBhY2thZ2VfbmFtZSkKLSAgICAgICAgcGFja2FnZV9kYXRhID0gZnRvb2xzLnJlYWRfZmlsZShwYWNrYWdlX2RhdGFfZmlsZSkKLSAgICAgICAgZmluZF9wciA9IHJlLnNlYXJjaCgiUEtHUjogclswLTldK1wuKFswLTldKykiLCBwYWNrYWdlX2RhdGEpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmaW5kX3ByLCAiTm8gUEtHIHJldmlzaW9uIGZvdW5kIGluICVzIiAlIHBhY2thZ2VfZGF0YV9maWxlKQotICAgICAgICByZXR1cm4gaW50KGZpbmRfcHIuZ3JvdXAoMSkpCi0KLSAgICBkZWYgZ2V0X3Rhc2tfc3RhbXAoc2VsZiwgcGFja2FnZV9uYW1lLCByZWNpcGVfdGFzayk6Ci0gICAgICAgIHN0YW1wZGF0YSA9IGdldF9iYl92YXIoJ1NUQU1QJywgdGFyZ2V0PXBhY2thZ2VfbmFtZSkuc3BsaXQoJy8nKQotICAgICAgICBwcmVmaXggPSBzdGFtcGRhdGFbLTFdCi0gICAgICAgIHBhY2thZ2Vfc3RhbXBzX3BhdGggPSAiLyIuam9pbihzdGFtcGRhdGFbOi0xXSkKLSAgICAgICAgc3RhbXBzID0gW10KLSAgICAgICAgZm9yIHN0YW1wIGluIG9zLmxpc3RkaXIocGFja2FnZV9zdGFtcHNfcGF0aCk6Ci0gICAgICAgICAgICBmaW5kX3N0YW1wID0gcmUubWF0Y2goIiVzXC4lc1wuKFthLXowLTldezMyfSkiICUgKHJlLmVzY2FwZShwcmVmaXgpLCByZWNpcGVfdGFzayksIHN0YW1wKQotICAgICAgICAgICAgaWYgZmluZF9zdGFtcDoKLSAgICAgICAgICAgICAgICBzdGFtcHMuYXBwZW5kKGZpbmRfc3RhbXAuZ3JvdXAoMSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobGVuKHN0YW1wcykgPT0gMCwgbXNnPSJDb3VuZCBub3QgZmluZCBzdGFtcCBmb3IgdGFzayAlcyBmb3IgcmVjaXBlICVzIiAlIChyZWNpcGVfdGFzaywgcGFja2FnZV9uYW1lKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShsZW4oc3RhbXBzKSA+IDEsIG1zZz0iRm91bmQgbXVsdGlwbGUgJXMgc3RhbXBzIGZvciB0aGUgJXMgcmVjaXBlIGluIHRoZSAlcyBkaXJlY3RvcnkuIiAlIChyZWNpcGVfdGFzaywgcGFja2FnZV9uYW1lLCBwYWNrYWdlX3N0YW1wc19wYXRoKSkKLSAgICAgICAgcmV0dXJuIHN0cihzdGFtcHNbMF0pCi0KLSAgICBkZWYgaW5jcmVtZW50X3BhY2thZ2VfcHIoc2VsZiwgcGFja2FnZV9uYW1lKToKLSAgICAgICAgaW5jX2RhdGEgPSAiZG9fcGFja2FnZV9hcHBlbmQoKSB7XG4gICAgYmIuYnVpbGQuZXhlY19mdW5jKCdkb190ZXN0X3Byc2VydicsIGQpXG59XG5kb190ZXN0X3Byc2VydigpIHtcbmVjaG8gXCJUaGUgY3VycmVudCBkYXRlIGlzOiAlc1wiXG59IiAlIGRhdGV0aW1lLmRhdGV0aW1lLm5vdygpCi0gICAgICAgIHNlbGYud3JpdGVfcmVjaXBlaW5jKHBhY2thZ2VfbmFtZSwgaW5jX2RhdGEpCi0gICAgICAgIHJlcyA9IGJpdGJha2UocGFja2FnZV9uYW1lLCBpZ25vcmVfc3RhdHVzPVRydWUpCi0gICAgICAgIHNlbGYuZGVsZXRlX3JlY2lwZWluYyhwYWNrYWdlX25hbWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLnN0YXR1cywgMCwgbXNnPXJlcy5vdXRwdXQpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgiTk9URTogU3RhcnRlZCBQUlNlcnZlciB3aXRoIERCZmlsZSIgaW4gcmVzLm91dHB1dCwgbXNnPXJlcy5vdXRwdXQpCi0KLSAgICBkZWYgY29uZmlnX3ByX3Rlc3RzKHNlbGYsIHBhY2thZ2VfbmFtZSwgcGFja2FnZV90eXBlPSdycG0nLCBwcl9zb2NrZXQ9J2xvY2FsaG9zdDowJyk6Ci0gICAgICAgIGNvbmZpZ19wYWNrYWdlX2RhdGEgPSAnUEFDS0FHRV9DTEFTU0VTID0gInBhY2thZ2VfJXMiJyAlIHBhY2thZ2VfdHlwZQotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhjb25maWdfcGFja2FnZV9kYXRhKQotICAgICAgICBjb25maWdfc2VydmVyX2RhdGEgPSAnUFJTRVJWX0hPU1QgPSAiJXMiJyAlIHByX3NvY2tldAotICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoY29uZmlnX3NlcnZlcl9kYXRhKQotCi0gICAgZGVmIHJ1bl90ZXN0X3ByX3NlcnZpY2Uoc2VsZiwgcGFja2FnZV9uYW1lLCBwYWNrYWdlX3R5cGU9J3JwbScsIHRyYWNrX3Rhc2s9J2RvX3BhY2thZ2UnLCBwcl9zb2NrZXQ9J2xvY2FsaG9zdDowJyk6Ci0gICAgICAgIHNlbGYuY29uZmlnX3ByX3Rlc3RzKHBhY2thZ2VfbmFtZSwgcGFja2FnZV90eXBlLCBwcl9zb2NrZXQpCi0KLSAgICAgICAgc2VsZi5pbmNyZW1lbnRfcGFja2FnZV9wcihwYWNrYWdlX25hbWUpCi0gICAgICAgIHByXzEgPSBzZWxmLmdldF9wcl92ZXJzaW9uKHBhY2thZ2VfbmFtZSkKLSAgICAgICAgc3RhbXBfMSA9IHNlbGYuZ2V0X3Rhc2tfc3RhbXAocGFja2FnZV9uYW1lLCB0cmFja190YXNrKQotCi0gICAgICAgIHNlbGYuaW5jcmVtZW50X3BhY2thZ2VfcHIocGFja2FnZV9uYW1lKQotICAgICAgICBwcl8yID0gc2VsZi5nZXRfcHJfdmVyc2lvbihwYWNrYWdlX25hbWUpCi0gICAgICAgIHN0YW1wXzIgPSBzZWxmLmdldF90YXNrX3N0YW1wKHBhY2thZ2VfbmFtZSwgdHJhY2tfdGFzaykKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUocHJfMiAtIHByXzEgPT0gMSwgIlN0ZXAgYmV0d2VlbiBzYW1lIHBrZy4gcmV2aXNpb24gaXMgZ3JlYXRlciB0aGFuIDEiKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoc3RhbXBfMSAhPSBzdGFtcF8yLCAiRGlmZmVyZW50IHBrZyByZXYuIGJ1dCBzYW1lIHN0YW1wOiAlcyIgJSBzdGFtcF8xKQotCi0gICAgZGVmIHJ1bl90ZXN0X3ByX2V4cG9ydF9pbXBvcnQoc2VsZiwgcGFja2FnZV9uYW1lLCByZXBsYWNlX2N1cnJlbnRfZGI9VHJ1ZSk6Ci0gICAgICAgIHNlbGYuY29uZmlnX3ByX3Rlc3RzKHBhY2thZ2VfbmFtZSkKLQotICAgICAgICBzZWxmLmluY3JlbWVudF9wYWNrYWdlX3ByKHBhY2thZ2VfbmFtZSkKLSAgICAgICAgcHJfMSA9IHNlbGYuZ2V0X3ByX3ZlcnNpb24ocGFja2FnZV9uYW1lKQotCi0gICAgICAgIGV4cG9ydGVkX2RiX3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgJ2V4cG9ydC5pbmMnKQotICAgICAgICBleHBvcnRfcmVzdWx0ID0gcnVuQ21kKCJiaXRiYWtlLXByc2Vydi10b29sIGV4cG9ydCAlcyIgJSBleHBvcnRlZF9kYl9wYXRoLCBpZ25vcmVfc3RhdHVzPVRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwb3J0X3Jlc3VsdC5zdGF0dXMsIDAsIG1zZz0iUFIgU2VydmljZSBkYXRhYmFzZSBleHBvcnQgZmFpbGVkOiAlcyIgJSBleHBvcnRfcmVzdWx0Lm91dHB1dCkKLQotICAgICAgICBpZiByZXBsYWNlX2N1cnJlbnRfZGI6Ci0gICAgICAgICAgICBjdXJyZW50X2RiX3BhdGggPSBvcy5wYXRoLmpvaW4oZ2V0X2JiX3ZhcignUEVSU0lTVEVOVF9ESVInKSwgJ3Byc2Vydi5zcWxpdGUzJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhjdXJyZW50X2RiX3BhdGgpLCBtc2c9IlBhdGggdG8gY3VycmVudCBQUiBTZXJ2aWNlIGRhdGFiYXNlIGlzIGludmFsaWQ6ICVzIiAlIGN1cnJlbnRfZGJfcGF0aCkKLSAgICAgICAgICAgIG9zLnJlbW92ZShjdXJyZW50X2RiX3BhdGgpCi0KLSAgICAgICAgaW1wb3J0X3Jlc3VsdCA9IHJ1bkNtZCgiYml0YmFrZS1wcnNlcnYtdG9vbCBpbXBvcnQgJXMiICUgZXhwb3J0ZWRfZGJfcGF0aCwgaWdub3JlX3N0YXR1cz1UcnVlKQotICAgICAgICBvcy5yZW1vdmUoZXhwb3J0ZWRfZGJfcGF0aCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbXBvcnRfcmVzdWx0LnN0YXR1cywgMCwgbXNnPSJQUiBTZXJ2aWNlIGRhdGFiYXNlIGltcG9ydCBmYWlsZWQ6ICVzIiAlIGltcG9ydF9yZXN1bHQub3V0cHV0KQotCi0gICAgICAgIHNlbGYuaW5jcmVtZW50X3BhY2thZ2VfcHIocGFja2FnZV9uYW1lKQotICAgICAgICBwcl8yID0gc2VsZi5nZXRfcHJfdmVyc2lvbihwYWNrYWdlX25hbWUpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHByXzIgLSBwcl8xID09IDEsICJTdGVwIGJldHdlZW4gc2FtZSBwa2cuIHJldmlzaW9uIGlzIGdyZWF0ZXIgdGhhbiAxIikKLQotICAgIEB0ZXN0Y2FzZSg5MzApCi0gICAgZGVmIHRlc3RfaW1wb3J0X2V4cG9ydF9yZXBsYWNlX2RiKHNlbGYpOgotICAgICAgICBzZWxmLnJ1bl90ZXN0X3ByX2V4cG9ydF9pbXBvcnQoJ200JykKLQotICAgIEB0ZXN0Y2FzZSg5MzEpCi0gICAgZGVmIHRlc3RfaW1wb3J0X2V4cG9ydF9vdmVycmlkZV9kYihzZWxmKToKLSAgICAgICAgc2VsZi5ydW5fdGVzdF9wcl9leHBvcnRfaW1wb3J0KCdtNCcsIHJlcGxhY2VfY3VycmVudF9kYj1GYWxzZSkKLQotICAgIEB0ZXN0Y2FzZSg5MzIpCi0gICAgZGVmIHRlc3RfcHJfc2VydmljZV9ycG1fYXJjaF9kZXAoc2VsZik6Ci0gICAgICAgIHNlbGYucnVuX3Rlc3RfcHJfc2VydmljZSgnbTQnLCAncnBtJywgJ2RvX3BhY2thZ2UnKQotCi0gICAgQHRlc3RjYXNlKDkzNCkKLSAgICBkZWYgdGVzdF9wcl9zZXJ2aWNlX2RlYl9hcmNoX2RlcChzZWxmKToKLSAgICAgICAgc2VsZi5ydW5fdGVzdF9wcl9zZXJ2aWNlKCdtNCcsICdkZWInLCAnZG9fcGFja2FnZScpCi0KLSAgICBAdGVzdGNhc2UoOTMzKQotICAgIGRlZiB0ZXN0X3ByX3NlcnZpY2VfaXBrX2FyY2hfZGVwKHNlbGYpOgotICAgICAgICBzZWxmLnJ1bl90ZXN0X3ByX3NlcnZpY2UoJ200JywgJ2lwaycsICdkb19wYWNrYWdlJykKLQotICAgIEB0ZXN0Y2FzZSg5MzUpCi0gICAgZGVmIHRlc3RfcHJfc2VydmljZV9ycG1fYXJjaF9pbmRlcChzZWxmKToKLSAgICAgICAgc2VsZi5ydW5fdGVzdF9wcl9zZXJ2aWNlKCd4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lJywgJ3JwbScsICdkb19wYWNrYWdlJykKLQotICAgIEB0ZXN0Y2FzZSg5MzcpCi0gICAgZGVmIHRlc3RfcHJfc2VydmljZV9kZWJfYXJjaF9pbmRlcChzZWxmKToKLSAgICAgICAgc2VsZi5ydW5fdGVzdF9wcl9zZXJ2aWNlKCd4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lJywgJ2RlYicsICdkb19wYWNrYWdlJykKLQotICAgIEB0ZXN0Y2FzZSg5MzYpCi0gICAgZGVmIHRlc3RfcHJfc2VydmljZV9pcGtfYXJjaF9pbmRlcChzZWxmKToKLSAgICAgICAgc2VsZi5ydW5fdGVzdF9wcl9zZXJ2aWNlKCd4Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lJywgJ2lwaycsICdkb19wYWNrYWdlJykKLQotICAgIEB0ZXN0Y2FzZSgxNDE5KQotICAgIGRlZiB0ZXN0X3N0b3BwaW5nX3Byc2VydmljZV9tZXNzYWdlKHNlbGYpOgotICAgICAgICBwb3J0ID0gZ2V0X2ZyZWVfcG9ydCgpCi0KLSAgICAgICAgcnVuQ21kKCdiaXRiYWtlLXByc2VydiAtLWhvc3QgbG9jYWxob3N0IC0tcG9ydCAlcyAtLWxvZ2xldmVsPURFQlVHIC0tc3RhcnQnICUgcG9ydCkKLSAgICAgICAgcmV0ID0gcnVuQ21kKCdiaXRiYWtlLXByc2VydiAtLWhvc3QgbG9jYWxob3N0IC0tcG9ydCAlcyAtLWxvZ2xldmVsPURFQlVHIC0tc3RvcCcgJSBwb3J0KQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmV0LnN0YXR1cywgMCkKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvcmVjaXBldG9vbC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L3JlY2lwZXRvb2wucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjNTVhNWUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvcmVjaXBldG9vbC5weQorKysgL2Rldi9udWxsCkBAIC0xLDY5NSArMCwwIEBACi1pbXBvcnQgb3MKLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgc2h1dGlsCi1pbXBvcnQgdGVtcGZpbGUKLWltcG9ydCB1cmxsaWIucGFyc2UKLQotZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBydW5DbWQsIGJpdGJha2UsIGdldF9iYl92YXIKLWZyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgZ2V0X2JiX3ZhcnMsIGNyZWF0ZV90ZW1wX2xheWVyCi1mcm9tIG9lcWEudXRpbHMuZGVjb3JhdG9ycyBpbXBvcnQgdGVzdGNhc2UKLWZyb20gb2VxYS5zZWxmdGVzdCBpbXBvcnQgZGV2dG9vbAotCi0KLXRlbXBsYXllcmRpciA9IE5vbmUKLQotCi1kZWYgc2V0VXBNb2R1bGUoKToKLSAgICBnbG9iYWwgdGVtcGxheWVyZGlyCi0gICAgdGVtcGxheWVyZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J3JlY2lwZXRvb2xxYScpCi0gICAgY3JlYXRlX3RlbXBfbGF5ZXIodGVtcGxheWVyZGlyLCAnc2VsZnRlc3RyZWNpcGV0b29sJykKLSAgICBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIGFkZC1sYXllciAlcycgJSB0ZW1wbGF5ZXJkaXIpCi0KLQotZGVmIHRlYXJEb3duTW9kdWxlKCk6Ci0gICAgcnVuQ21kKCdiaXRiYWtlLWxheWVycyByZW1vdmUtbGF5ZXIgJXMnICUgdGVtcGxheWVyZGlyLCBpZ25vcmVfc3RhdHVzPVRydWUpCi0gICAgcnVuQ21kKCdybSAtcmYgJXMnICUgdGVtcGxheWVyZGlyKQotCi0KLWNsYXNzIFJlY2lwZXRvb2xCYXNlKGRldnRvb2wuRGV2dG9vbEJhc2UpOgotCi0gICAgZGVmIHNldFVwTG9jYWwoc2VsZik6Ci0gICAgICAgIHNlbGYudGVtcGxheWVyZGlyID0gdGVtcGxheWVyZGlyCi0gICAgICAgIHNlbGYudGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdyZWNpcGV0b29scWEnKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYudGVtcGRpcikKLSAgICAgICAgc2VsZi50ZXN0ZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsICd0ZXN0ZmlsZScpCi0gICAgICAgIHdpdGggb3BlbihzZWxmLnRlc3RmaWxlLCAndycpIGFzIGY6Ci0gICAgICAgICAgICBmLndyaXRlKCdUZXN0IGZpbGVcbicpCi0KLSAgICBkZWYgdGVhckRvd25Mb2NhbChzZWxmKToKLSAgICAgICAgcnVuQ21kKCdybSAtcmYgJXMvcmVjaXBlcy0qJyAlIHNlbGYudGVtcGxheWVyZGlyKQotCi0gICAgZGVmIF90cnlfcmVjaXBldG9vbF9hcHBlbmRjbWQoc2VsZiwgY21kLCB0ZXN0cmVjaXBlLCBleHBlY3RlZGZpbGVzLCBleHBlY3RlZGxpbmVzPU5vbmUpOgotICAgICAgICByZXN1bHQgPSBydW5DbWQoY21kKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdUcmFjZWJhY2snLCByZXN1bHQub3V0cHV0KQotCi0gICAgICAgICMgQ2hlY2sgdGhlIGJiYXBwZW5kIHdhcyBjcmVhdGVkIGFuZCBhcHBsaWVzIHByb3Blcmx5Ci0gICAgICAgIHJlY2lwZWZpbGUgPSBnZXRfYmJfdmFyKCdGSUxFJywgdGVzdHJlY2lwZSkKLSAgICAgICAgYmJhcHBlbmRmaWxlID0gc2VsZi5fY2hlY2tfYmJhcHBlbmQodGVzdHJlY2lwZSwgcmVjaXBlZmlsZSwgc2VsZi50ZW1wbGF5ZXJkaXIpCi0KLSAgICAgICAgIyBDaGVjayB0aGUgYmJhcHBlbmQgY29udGVudHMKLSAgICAgICAgaWYgZXhwZWN0ZWRsaW5lcyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHdpdGggb3BlbihiYmFwcGVuZGZpbGUsICdyJykgYXMgZjoKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkbGluZXMsIGYucmVhZGxpbmVzKCksICJFeHBlY3RlZCBsaW5lcyBhcmUgbm90IHByZXNlbnQgaW4gJXMiICUgYmJhcHBlbmRmaWxlKQotCi0gICAgICAgICMgQ2hlY2sgZmlsZSB3YXMgY29waWVkCi0gICAgICAgIGZpbGVzZGlyID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShiYmFwcGVuZGZpbGUpLCB0ZXN0cmVjaXBlKQotICAgICAgICBmb3IgZXhwZWN0ZWRmaWxlIGluIGV4cGVjdGVkZmlsZXM6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKGZpbGVzZGlyLCBleHBlY3RlZGZpbGUpKSwgJ0V4cGVjdGVkIGZpbGUgJXMgdG8gYmUgY29waWVkIG5leHQgdG8gYmJhcHBlbmQsIGJ1dCBpdCB3YXNuXCd0JyAlIGV4cGVjdGVkZmlsZSkKLQotICAgICAgICAjIENoZWNrIG5vIG90aGVyIGZpbGVzIGNyZWF0ZWQKLSAgICAgICAgY3JlYXRlZGZpbGVzID0gW10KLSAgICAgICAgZm9yIHJvb3QsIF8sIGZpbGVzIGluIG9zLndhbGsoZmlsZXNkaXIpOgotICAgICAgICAgICAgZm9yIGYgaW4gZmlsZXM6Ci0gICAgICAgICAgICAgICAgY3JlYXRlZGZpbGVzLmFwcGVuZChvcy5wYXRoLnJlbHBhdGgob3MucGF0aC5qb2luKHJvb3QsIGYpLCBmaWxlc2RpcikpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzb3J0ZWQoY3JlYXRlZGZpbGVzKSwgc29ydGVkKGV4cGVjdGVkZmlsZXMpKQotCi0gICAgICAgIHJldHVybiBiYmFwcGVuZGZpbGUsIHJlc3VsdC5vdXRwdXQKLQotCi1jbGFzcyBSZWNpcGV0b29sVGVzdHMoUmVjaXBldG9vbEJhc2UpOgotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKLSAgICAgICAgIyBFbnN1cmUgd2UgaGF2ZSB0aGUgcmlnaHQgZGF0YSBpbiBzaGxpYnMvcGtnZGF0YQotICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigic2VsZnRlc3QiKQotICAgICAgICBsb2dnZXIuaW5mbygnUnVubmluZyBiaXRiYWtlIHRvIGdlbmVyYXRlIHBrZ2RhdGEnKQotICAgICAgICBiaXRiYWtlKCctYyBwYWNrYWdlZGF0YSBiYXNlLWZpbGVzIGNvcmV1dGlscyBidXN5Ym94IHNlbGZ0ZXN0LXJlY2lwZXRvb2wtYXBwZW5kZmlsZScpCi0gICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ0NPUkVCQVNFJywgJ0JCUEFUSCddKQotICAgICAgICBjbHMuY29yZWJhc2UgPSBiYl92YXJzWydDT1JFQkFTRSddCi0gICAgICAgIGNscy5iYnBhdGggPSBiYl92YXJzWydCQlBBVEgnXQotCi0gICAgZGVmIF90cnlfcmVjaXBldG9vbF9hcHBlbmRmaWxlKHNlbGYsIHRlc3RyZWNpcGUsIGRlc3RmaWxlLCBuZXdmaWxlLCBvcHRpb25zLCBleHBlY3RlZGxpbmVzLCBleHBlY3RlZGZpbGVzKToKLSAgICAgICAgY21kID0gJ3JlY2lwZXRvb2wgYXBwZW5kZmlsZSAlcyAlcyAlcyAlcycgJSAoc2VsZi50ZW1wbGF5ZXJkaXIsIGRlc3RmaWxlLCBuZXdmaWxlLCBvcHRpb25zKQotICAgICAgICByZXR1cm4gc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kY21kKGNtZCwgdGVzdHJlY2lwZSwgZXhwZWN0ZWRmaWxlcywgZXhwZWN0ZWRsaW5lcykKLQotICAgIGRlZiBfdHJ5X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV9mYWlsKHNlbGYsIGRlc3RmaWxlLCBuZXdmaWxlLCBjaGVja2Vycm9yKToKLSAgICAgICAgY21kID0gJ3JlY2lwZXRvb2wgYXBwZW5kZmlsZSAlcyAlcyAlcycgJSAoc2VsZi50ZW1wbGF5ZXJkaXIsIGRlc3RmaWxlLCBuZXdmaWxlKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoY21kLCBpZ25vcmVfc3RhdHVzPVRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmVzdWx0LnN0YXR1cywgMCwgJ0NvbW1hbmQgIiVzIiBzaG91bGQgaGF2ZSBmYWlsZWQgYnV0IGRpZG5cJ3QnICUgY21kKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdUcmFjZWJhY2snLCByZXN1bHQub3V0cHV0KQotICAgICAgICBmb3IgZXJyb3JzdHIgaW4gY2hlY2tlcnJvcjoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZXJyb3JzdHIsIHJlc3VsdC5vdXRwdXQpCi0KLSAgICBAdGVzdGNhc2UoMTE3NykKLSAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZGZpbGVfYmFzaWMoc2VsZik6Ci0gICAgICAgICMgQmFzaWMgdGVzdAotICAgICAgICBleHBlY3RlZGxpbmVzID0gWydGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJ10KLSAgICAgICAgXywgb3V0cHV0ID0gc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kZmlsZSgnYmFzZS1maWxlcycsICcvZXRjL21vdGQnLCBzZWxmLnRlc3RmaWxlLCAnJywgZXhwZWN0ZWRsaW5lcywgWydtb3RkJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ1dBUk5JTkc6ICcsIG91dHB1dCkKLQotICAgIEB0ZXN0Y2FzZSgxMTgzKQotICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV9pbnZhbGlkKHNlbGYpOgotICAgICAgICAjIFRlc3Qgc29tZSBjb21tYW5kcyB0aGF0IHNob3VsZCBlcnJvcgotICAgICAgICBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRmaWxlX2ZhaWwoJy9ldGMvcGFzc3dkJywgc2VsZi50ZXN0ZmlsZSwgWydFUlJPUjogL2V0Yy9wYXNzd2QgY2Fubm90IGJlIGhhbmRsZWQgYnkgdGhpcyB0b29sJywgJ3VzZXJhZGQnLCAnZXh0cmF1c2VycyddKQotICAgICAgICBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRmaWxlX2ZhaWwoJy9ldGMvdGltZXN0YW1wJywgc2VsZi50ZXN0ZmlsZSwgWydFUlJPUjogL2V0Yy90aW1lc3RhbXAgY2Fubm90IGJlIGhhbmRsZWQgYnkgdGhpcyB0b29sJ10pCi0gICAgICAgIHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGVfZmFpbCgnL2Rldi9jb25zb2xlJywgc2VsZi50ZXN0ZmlsZSwgWydFUlJPUjogL2Rldi9jb25zb2xlIGNhbm5vdCBiZSBoYW5kbGVkIGJ5IHRoaXMgdG9vbCddKQotCi0gICAgQHRlc3RjYXNlKDExNzYpCi0gICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRmaWxlX2FsdGVybmF0aXZlcyhzZWxmKToKLSAgICAgICAgIyBOb3cgdHJ5IHdpdGggYSBmaWxlIHdlIGtub3cgc2hvdWxkIGJlIGFuIGFsdGVybmF0aXZlCi0gICAgICAgICMgKHRoaXMgaXMgdmVyeSBtdWNoIGEgZmFrZSBleGFtcGxlLCBidXQgb25lIHdlIGtub3cgaXMgcmVsaWFibHkgYW4gYWx0ZXJuYXRpdmUpCi0gICAgICAgIHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGVfZmFpbCgnL2Jpbi9scycsIHNlbGYudGVzdGZpbGUsIFsnRVJST1I6IEZpbGUgL2Jpbi9scyBpcyBhbiBhbHRlcm5hdGl2ZSBwb3NzaWJseSBwcm92aWRlZCBieSB0aGUgZm9sbG93aW5nIHJlY2lwZXM6JywgJ2NvcmV1dGlscycsICdidXN5Ym94J10pCi0gICAgICAgICMgTmVlZCBhIHRlc3QgZmlsZSAtIHNob3VsZCBiZSBleGVjdXRhYmxlCi0gICAgICAgIHRlc3RmaWxlMiA9IG9zLnBhdGguam9pbihzZWxmLmNvcmViYXNlLCAnb2UtaW5pdC1idWlsZC1lbnYnKQotICAgICAgICB0ZXN0ZmlsZTJuYW1lID0gb3MucGF0aC5iYXNlbmFtZSh0ZXN0ZmlsZTIpCi0gICAgICAgIGV4cGVjdGVkbGluZXMgPSBbJ0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnU1JDX1VSSSArPSAiZmlsZTovLyVzIlxuJyAlIHRlc3RmaWxlMm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnZG9faW5zdGFsbF9hcHBlbmQoKSB7XG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn1cbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS8lcyAke0R9JHtiYXNlX2JpbmRpcn0vbHNcbicgJSB0ZXN0ZmlsZTJuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICd9XG4nXQotICAgICAgICBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRmaWxlKCdjb3JldXRpbHMnLCAnL2Jpbi9scycsIHRlc3RmaWxlMiwgJy1yIGNvcmV1dGlscycsIGV4cGVjdGVkbGluZXMsIFt0ZXN0ZmlsZTJuYW1lXSkKLSAgICAgICAgIyBOb3cgdHJ5IGJiYXBwZW5kaW5nIHRoZSBzYW1lIGZpbGUgYWdhaW4sIGNvbnRlbnRzIHNob3VsZCBub3QgY2hhbmdlCi0gICAgICAgIGJiYXBwZW5kZmlsZSwgXyA9IHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGUoJ2NvcmV1dGlscycsICcvYmluL2xzJywgc2VsZi50ZXN0ZmlsZSwgJy1yIGNvcmV1dGlscycsIGV4cGVjdGVkbGluZXMsIFt0ZXN0ZmlsZTJuYW1lXSkKLSAgICAgICAgIyBCdXQgZmlsZSBzaG91bGQgaGF2ZQotICAgICAgICBjb3BpZWRmaWxlID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShiYmFwcGVuZGZpbGUpLCAnY29yZXV0aWxzJywgdGVzdGZpbGUybmFtZSkKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkaWZmIC1xICVzICVzJyAlICh0ZXN0ZmlsZTIsIGNvcGllZGZpbGUpLCBpZ25vcmVfc3RhdHVzPVRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmVzdWx0LnN0YXR1cywgMCwgJ05ldyBmaWxlIHNob3VsZCBoYXZlIGJlZW4gY29waWVkIGJ1dCB3YXMgbm90ICVzJyAlIHJlc3VsdC5vdXRwdXQpCi0KLSAgICBAdGVzdGNhc2UoMTE3OCkKLSAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZGZpbGVfYmluYXJ5KHNlbGYpOgotICAgICAgICAjIFRyeSBhcHBlbmRpbmcgYSBiaW5hcnkgZmlsZQotICAgICAgICAjIC9iaW4vbHMgY2FuIGJlIGEgc3ltbGluayB0byAvdXNyL2Jpbi9scwotICAgICAgICBscyA9IG9zLnBhdGgucmVhbHBhdGgoIi9iaW4vbHMiKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ3JlY2lwZXRvb2wgYXBwZW5kZmlsZSAlcyAvYmluL2xzICVzIC1yIGNvcmV1dGlscycgJSAoc2VsZi50ZW1wbGF5ZXJkaXIsIGxzKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignV0FSTklORzogJywgcmVzdWx0Lm91dHB1dCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignaXMgYSBiaW5hcnknLCByZXN1bHQub3V0cHV0KQotCi0gICAgQHRlc3RjYXNlKDExNzMpCi0gICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRmaWxlX2FkZChzZWxmKToKLSAgICAgICAgIyBUcnkgYXJiaXRyYXJ5IGZpbGUgYWRkIHRvIGEgcmVjaXBlCi0gICAgICAgIGV4cGVjdGVkbGluZXMgPSBbJ0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnU1JDX1VSSSArPSAiZmlsZTovL3Rlc3RmaWxlIlxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdkb19pbnN0YWxsX2FwcGVuZCgpIHtcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9XG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vdGVzdGZpbGUgJHtEfSR7ZGF0YWRpcn0vc29tZXRoaW5nXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICd9XG4nXQotICAgICAgICBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRmaWxlKCduZXRiYXNlJywgJy91c3Ivc2hhcmUvc29tZXRoaW5nJywgc2VsZi50ZXN0ZmlsZSwgJy1yIG5ldGJhc2UnLCBleHBlY3RlZGxpbmVzLCBbJ3Rlc3RmaWxlJ10pCi0gICAgICAgICMgVHJ5IGFkZGluZyBhbm90aGVyIGZpbGUsIHRoaXMgdGltZSB3aGVyZSB0aGUgc291cmNlIGZpbGUgaXMgZXhlY3V0YWJsZQotICAgICAgICAjIChzbyB3ZSdyZSB0ZXN0aW5nIHRoYXQsIHBsdXMgbW9kaWZ5aW5nIGFuIGV4aXN0aW5nIGJiYXBwZW5kKQotICAgICAgICB0ZXN0ZmlsZTIgPSBvcy5wYXRoLmpvaW4oc2VsZi5jb3JlYmFzZSwgJ29lLWluaXQtYnVpbGQtZW52JykKLSAgICAgICAgdGVzdGZpbGUybmFtZSA9IG9zLnBhdGguYmFzZW5hbWUodGVzdGZpbGUyKQotICAgICAgICBleHBlY3RlZGxpbmVzID0gWydGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1NSQ19VUkkgKz0gImZpbGU6Ly90ZXN0ZmlsZSBcXFxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgZmlsZTovLyVzIFxcXG4nICUgdGVzdGZpbGUybmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgIlxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdkb19pbnN0YWxsX2FwcGVuZCgpIHtcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9XG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vdGVzdGZpbGUgJHtEfSR7ZGF0YWRpcn0vc29tZXRoaW5nXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vJXMgJHtEfSR7ZGF0YWRpcn0vc2NyaXB0bmFtZVxuJyAlIHRlc3RmaWxlMm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ31cbiddCi0gICAgICAgIHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGUoJ25ldGJhc2UnLCAnL3Vzci9zaGFyZS9zY3JpcHRuYW1lJywgdGVzdGZpbGUyLCAnLXIgbmV0YmFzZScsIGV4cGVjdGVkbGluZXMsIFsndGVzdGZpbGUnLCB0ZXN0ZmlsZTJuYW1lXSkKLQotICAgIEB0ZXN0Y2FzZSgxMTc0KQotICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV9hZGRfYmluZGlyKHNlbGYpOgotICAgICAgICAjIFRyeSBhcmJpdHJhcnkgZmlsZSBhZGQgdG8gYSByZWNpcGUsIHRoaXMgdGltZSB0byBhIGxvY2F0aW9uIHN1Y2ggdGhhdCBzaG91bGQgYmUgaW5zdGFsbGVkIGFzIGV4ZWN1dGFibGUKLSAgICAgICAgZXhwZWN0ZWRsaW5lcyA9IFsnRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IlxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdTUkNfVVJJICs9ICJmaWxlOi8vdGVzdGZpbGUiXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ2RvX2luc3RhbGxfYXBwZW5kKCkge1xuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfVxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L3Rlc3RmaWxlICR7RH0ke2JpbmRpcn0vc2VsZnRlc3QtcmVjaXBldG9vbC10ZXN0YmluXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICd9XG4nXQotICAgICAgICBfLCBvdXRwdXQgPSBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRmaWxlKCduZXRiYXNlJywgJy91c3IvYmluL3NlbGZ0ZXN0LXJlY2lwZXRvb2wtdGVzdGJpbicsIHNlbGYudGVzdGZpbGUsICctciBuZXRiYXNlJywgZXhwZWN0ZWRsaW5lcywgWyd0ZXN0ZmlsZSddKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdXQVJOSU5HOiAnLCBvdXRwdXQpCi0KLSAgICBAdGVzdGNhc2UoMTE3NSkKLSAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZGZpbGVfYWRkX21hY2hpbmUoc2VsZik6Ci0gICAgICAgICMgVHJ5IGFyYml0cmFyeSBmaWxlIGFkZCB0byBhIHJlY2lwZSwgdGhpcyB0aW1lIHRvIGEgbG9jYXRpb24gc3VjaCB0aGF0IHNob3VsZCBiZSBpbnN0YWxsZWQgYXMgZXhlY3V0YWJsZQotICAgICAgICBleHBlY3RlZGxpbmVzID0gWydGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1BBQ0tBR0VfQVJDSCA9ICIke01BQ0hJTkVfQVJDSH0iXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1NSQ19VUklfYXBwZW5kX215bWFjaGluZSA9ICIgZmlsZTovL3Rlc3RmaWxlIlxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdkb19pbnN0YWxsX2FwcGVuZF9teW1hY2hpbmUoKSB7XG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfVxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3Rlc3RmaWxlICR7RH0ke2RhdGFkaXJ9L3NvbWV0aGluZ1xuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnfVxuJ10KLSAgICAgICAgXywgb3V0cHV0ID0gc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kZmlsZSgnbmV0YmFzZScsICcvdXNyL3NoYXJlL3NvbWV0aGluZycsIHNlbGYudGVzdGZpbGUsICctciBuZXRiYXNlIC1tIG15bWFjaGluZScsIGV4cGVjdGVkbGluZXMsIFsnbXltYWNoaW5lL3Rlc3RmaWxlJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ1dBUk5JTkc6ICcsIG91dHB1dCkKLQotICAgIEB0ZXN0Y2FzZSgxMTg0KQotICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV9vcmlnKHNlbGYpOgotICAgICAgICAjIEEgZmlsZSB0aGF0J3MgaW4gU1JDX1VSSSBhbmQgaW4gZG9faW5zdGFsbCB3aXRoIHRoZSBzYW1lIG5hbWUKLSAgICAgICAgZXhwZWN0ZWRsaW5lcyA9IFsnRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IlxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nXQotICAgICAgICBfLCBvdXRwdXQgPSBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRmaWxlKCdzZWxmdGVzdC1yZWNpcGV0b29sLWFwcGVuZGZpbGUnLCAnL3Vzci9zaGFyZS9zZWxmdGVzdC1yZXBsYWNlbWUtb3JpZycsIHNlbGYudGVzdGZpbGUsICcnLCBleHBlY3RlZGxpbmVzLCBbJ3NlbGZ0ZXN0LXJlcGxhY2VtZS1vcmlnJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ1dBUk5JTkc6ICcsIG91dHB1dCkKLQotICAgIEB0ZXN0Y2FzZSgxMTkxKQotICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV90b2RpcihzZWxmKToKLSAgICAgICAgIyBBIGZpbGUgdGhhdCdzIGluIFNSQ19VUkkgYW5kIGluIGRvX2luc3RhbGwgd2l0aCBkZXN0aW5hdGlvbiBkaXJlY3RvcnkgcmF0aGVyIHRoYW4gZmlsZQotICAgICAgICBleHBlY3RlZGxpbmVzID0gWydGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdcbiddCi0gICAgICAgIF8sIG91dHB1dCA9IHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGUoJ3NlbGZ0ZXN0LXJlY2lwZXRvb2wtYXBwZW5kZmlsZScsICcvdXNyL3NoYXJlL3NlbGZ0ZXN0LXJlcGxhY2VtZS10b2RpcicsIHNlbGYudGVzdGZpbGUsICcnLCBleHBlY3RlZGxpbmVzLCBbJ3NlbGZ0ZXN0LXJlcGxhY2VtZS10b2RpciddKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdXQVJOSU5HOiAnLCBvdXRwdXQpCi0KLSAgICBAdGVzdGNhc2UoMTE4NykKLSAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZGZpbGVfcmVuYW1lZChzZWxmKToKLSAgICAgICAgIyBBIGZpbGUgdGhhdCdzIGluIFNSQ19VUkkgd2l0aCBhIGRpZmZlcmVudCBuYW1lIHRvIHRoZSBkZXN0aW5hdGlvbiBmaWxlCi0gICAgICAgIGV4cGVjdGVkbGluZXMgPSBbJ0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJ10KLSAgICAgICAgXywgb3V0cHV0ID0gc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kZmlsZSgnc2VsZnRlc3QtcmVjaXBldG9vbC1hcHBlbmRmaWxlJywgJy91c3Ivc2hhcmUvc2VsZnRlc3QtcmVwbGFjZW1lLXJlbmFtZWQnLCBzZWxmLnRlc3RmaWxlLCAnJywgZXhwZWN0ZWRsaW5lcywgWydmaWxlMSddKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdXQVJOSU5HOiAnLCBvdXRwdXQpCi0KLSAgICBAdGVzdGNhc2UoMTE5MCkKLSAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZGZpbGVfc3ViZGlyKHNlbGYpOgotICAgICAgICAjIEEgZmlsZSB0aGF0J3MgaW4gU1JDX1VSSSBpbiBhIHN1YmRpcgotICAgICAgICBleHBlY3RlZGxpbmVzID0gWydGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1NSQ19VUkkgKz0gImZpbGU6Ly90ZXN0ZmlsZSJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnZG9faW5zdGFsbF9hcHBlbmQoKSB7XG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfVxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3Rlc3RmaWxlICR7RH0ke2RhdGFkaXJ9L3NlbGZ0ZXN0LXJlcGxhY2VtZS1zdWJkaXJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ31cbiddCi0gICAgICAgIF8sIG91dHB1dCA9IHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGUoJ3NlbGZ0ZXN0LXJlY2lwZXRvb2wtYXBwZW5kZmlsZScsICcvdXNyL3NoYXJlL3NlbGZ0ZXN0LXJlcGxhY2VtZS1zdWJkaXInLCBzZWxmLnRlc3RmaWxlLCAnJywgZXhwZWN0ZWRsaW5lcywgWyd0ZXN0ZmlsZSddKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdXQVJOSU5HOiAnLCBvdXRwdXQpCi0KLSAgICBAdGVzdGNhc2UoMTE4OSkKLSAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZGZpbGVfc3JjX2dsb2Ioc2VsZik6Ci0gICAgICAgICMgQSBmaWxlIHRoYXQncyBpbiBTUkNfVVJJIGFzIGEgZ2xvYgotICAgICAgICBleHBlY3RlZGxpbmVzID0gWydGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1NSQ19VUkkgKz0gImZpbGU6Ly90ZXN0ZmlsZSJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnZG9faW5zdGFsbF9hcHBlbmQoKSB7XG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfVxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3Rlc3RmaWxlICR7RH0ke2RhdGFkaXJ9L3NlbGZ0ZXN0LXJlcGxhY2VtZS1zcmMtZ2xvYmZpbGVcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ31cbiddCi0gICAgICAgIF8sIG91dHB1dCA9IHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGUoJ3NlbGZ0ZXN0LXJlY2lwZXRvb2wtYXBwZW5kZmlsZScsICcvdXNyL3NoYXJlL3NlbGZ0ZXN0LXJlcGxhY2VtZS1zcmMtZ2xvYmZpbGUnLCBzZWxmLnRlc3RmaWxlLCAnJywgZXhwZWN0ZWRsaW5lcywgWyd0ZXN0ZmlsZSddKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdXQVJOSU5HOiAnLCBvdXRwdXQpCi0KLSAgICBAdGVzdGNhc2UoMTE4MSkKLSAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZGZpbGVfaW5zdF9nbG9iKHNlbGYpOgotICAgICAgICAjIEEgZmlsZSB0aGF0J3MgaW4gZG9faW5zdGFsbCBhcyBhIGdsb2IKLSAgICAgICAgZXhwZWN0ZWRsaW5lcyA9IFsnRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IlxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nXQotICAgICAgICBfLCBvdXRwdXQgPSBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRmaWxlKCdzZWxmdGVzdC1yZWNpcGV0b29sLWFwcGVuZGZpbGUnLCAnL3Vzci9zaGFyZS9zZWxmdGVzdC1yZXBsYWNlbWUtaW5zdC1nbG9iZmlsZScsIHNlbGYudGVzdGZpbGUsICcnLCBleHBlY3RlZGxpbmVzLCBbJ3NlbGZ0ZXN0LXJlcGxhY2VtZS1pbnN0LWdsb2JmaWxlJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ1dBUk5JTkc6ICcsIG91dHB1dCkKLQotICAgIEB0ZXN0Y2FzZSgxMTgyKQotICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV9pbnN0X3RvZGlyX2dsb2Ioc2VsZik6Ci0gICAgICAgICMgQSBmaWxlIHRoYXQncyBpbiBkb19pbnN0YWxsIGFzIGEgZ2xvYiB3aXRoIGRlc3RpbmF0aW9uIGFzIGEgZGlyZWN0b3J5Ci0gICAgICAgIGV4cGVjdGVkbGluZXMgPSBbJ0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJ10KLSAgICAgICAgXywgb3V0cHV0ID0gc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kZmlsZSgnc2VsZnRlc3QtcmVjaXBldG9vbC1hcHBlbmRmaWxlJywgJy91c3Ivc2hhcmUvc2VsZnRlc3QtcmVwbGFjZW1lLWluc3QtdG9kaXItZ2xvYmZpbGUnLCBzZWxmLnRlc3RmaWxlLCAnJywgZXhwZWN0ZWRsaW5lcywgWydzZWxmdGVzdC1yZXBsYWNlbWUtaW5zdC10b2Rpci1nbG9iZmlsZSddKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdXQVJOSU5HOiAnLCBvdXRwdXQpCi0KLSAgICBAdGVzdGNhc2UoMTE4NSkKLSAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZGZpbGVfcGF0Y2goc2VsZik6Ci0gICAgICAgICMgQSBmaWxlIHRoYXQncyBhZGRlZCBieSBhIHBhdGNoIGluIFNSQ19VUkkKLSAgICAgICAgZXhwZWN0ZWRsaW5lcyA9IFsnRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IlxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdTUkNfVVJJICs9ICJmaWxlOi8vdGVzdGZpbGUiXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ2RvX2luc3RhbGxfYXBwZW5kKCkge1xuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn1cbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS90ZXN0ZmlsZSAke0R9JHtzeXNjb25mZGlyfS9zZWxmdGVzdC1yZXBsYWNlbWUtcGF0Y2hlZFxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnfVxuJ10KLSAgICAgICAgXywgb3V0cHV0ID0gc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kZmlsZSgnc2VsZnRlc3QtcmVjaXBldG9vbC1hcHBlbmRmaWxlJywgJy9ldGMvc2VsZnRlc3QtcmVwbGFjZW1lLXBhdGNoZWQnLCBzZWxmLnRlc3RmaWxlLCAnJywgZXhwZWN0ZWRsaW5lcywgWyd0ZXN0ZmlsZSddKQotICAgICAgICBmb3IgbGluZSBpbiBvdXRwdXQuc3BsaXRsaW5lcygpOgotICAgICAgICAgICAgaWYgJ1dBUk5JTkc6ICcgaW4gbGluZToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdhZGQtZmlsZS5wYXRjaCcsIGxpbmUsICdVbmV4cGVjdGVkIHdhcm5pbmcgZm91bmQgaW4gb3V0cHV0OlxuJXMnICUgbGluZSkKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5mYWlsKCdQYXRjaCB3YXJuaW5nIG5vdCBmb3VuZCBpbiBvdXRwdXQ6XG4lcycgJSBvdXRwdXQpCi0KLSAgICBAdGVzdGNhc2UoMTE4OCkKLSAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZGZpbGVfc2NyaXB0KHNlbGYpOgotICAgICAgICAjIE5vdywgYSBmaWxlIHRoYXQncyBpbiBTUkNfVVJJIGJ1dCBpbnN0YWxsZWQgYnkgYSBzY3JpcHQgKHNvIG5vIG1lbnRpb24gaW4gZG9faW5zdGFsbCkKLSAgICAgICAgZXhwZWN0ZWRsaW5lcyA9IFsnRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IlxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdTUkNfVVJJICs9ICJmaWxlOi8vdGVzdGZpbGUiXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ2RvX2luc3RhbGxfYXBwZW5kKCkge1xuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn1cbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS90ZXN0ZmlsZSAke0R9JHtkYXRhZGlyfS9zZWxmdGVzdC1yZXBsYWNlbWUtc2NyaXB0ZWRcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ31cbiddCi0gICAgICAgIF8sIG91dHB1dCA9IHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGUoJ3NlbGZ0ZXN0LXJlY2lwZXRvb2wtYXBwZW5kZmlsZScsICcvdXNyL3NoYXJlL3NlbGZ0ZXN0LXJlcGxhY2VtZS1zY3JpcHRlZCcsIHNlbGYudGVzdGZpbGUsICcnLCBleHBlY3RlZGxpbmVzLCBbJ3Rlc3RmaWxlJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ1dBUk5JTkc6ICcsIG91dHB1dCkKLQotICAgIEB0ZXN0Y2FzZSgxMTgwKQotICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV9pbnN0X2Z1bmMoc2VsZik6Ci0gICAgICAgICMgQSBmaWxlIHRoYXQncyBpbnN0YWxsZWQgZnJvbSBhIGZ1bmN0aW9uIGNhbGxlZCBieSBkb19pbnN0YWxsCi0gICAgICAgIGV4cGVjdGVkbGluZXMgPSBbJ0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJ10KLSAgICAgICAgXywgb3V0cHV0ID0gc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kZmlsZSgnc2VsZnRlc3QtcmVjaXBldG9vbC1hcHBlbmRmaWxlJywgJy91c3Ivc2hhcmUvc2VsZnRlc3QtcmVwbGFjZW1lLWluc3QtZnVuYycsIHNlbGYudGVzdGZpbGUsICcnLCBleHBlY3RlZGxpbmVzLCBbJ3NlbGZ0ZXN0LXJlcGxhY2VtZS1pbnN0LWZ1bmMnXSkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbignV0FSTklORzogJywgb3V0cHV0KQotCi0gICAgQHRlc3RjYXNlKDExODYpCi0gICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRmaWxlX3Bvc3RpbnN0YWxsKHNlbGYpOgotICAgICAgICAjIEEgZmlsZSB0aGF0J3MgY3JlYXRlZCBieSBhIHBvc3RpbnN0YWxsIHNjcmlwdCAoYW5kIGV4cGxpY2l0bHkgbWVudGlvbmVkIGluIGl0KQotICAgICAgICAjIEZpcnN0IHRyeSB3aXRob3V0IHNwZWNpZnlpbmcgcmVjaXBlCi0gICAgICAgIHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGZpbGVfZmFpbCgnL3Vzci9zaGFyZS9zZWxmdGVzdC1yZXBsYWNlbWUtcG9zdGluc3QnLCBzZWxmLnRlc3RmaWxlLCBbJ0ZpbGUgL3Vzci9zaGFyZS9zZWxmdGVzdC1yZXBsYWNlbWUtcG9zdGluc3QgbWF5IGJlIHdyaXR0ZW4gb3V0IGluIGEgcHJlL3Bvc3RpbnN0YWxsIHNjcmlwdCBvZiB0aGUgZm9sbG93aW5nIHJlY2lwZXM6JywgJ3NlbGZ0ZXN0LXJlY2lwZXRvb2wtYXBwZW5kZmlsZSddKQotICAgICAgICAjIE5vdyBzcGVjaWZ5IHJlY2lwZQotICAgICAgICBleHBlY3RlZGxpbmVzID0gWydGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS8ke1BOfToiXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICdcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1NSQ19VUkkgKz0gImZpbGU6Ly90ZXN0ZmlsZSJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnZG9faW5zdGFsbF9hcHBlbmQoKSB7XG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfVxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3Rlc3RmaWxlICR7RH0ke2RhdGFkaXJ9L3NlbGZ0ZXN0LXJlcGxhY2VtZS1wb3N0aW5zdFxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnfVxuJ10KLSAgICAgICAgXywgb3V0cHV0ID0gc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kZmlsZSgnc2VsZnRlc3QtcmVjaXBldG9vbC1hcHBlbmRmaWxlJywgJy91c3Ivc2hhcmUvc2VsZnRlc3QtcmVwbGFjZW1lLXBvc3RpbnN0Jywgc2VsZi50ZXN0ZmlsZSwgJy1yIHNlbGZ0ZXN0LXJlY2lwZXRvb2wtYXBwZW5kZmlsZScsIGV4cGVjdGVkbGluZXMsIFsndGVzdGZpbGUnXSkKLQotICAgIEB0ZXN0Y2FzZSgxMTc5KQotICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV9leHRsYXllcihzZWxmKToKLSAgICAgICAgIyBUcnkgY3JlYXRpbmcgYSBiYmFwcGVuZCBpbiBhIGxheWVyIHRoYXQncyBub3QgaW4gYmJsYXllcnMuY29uZiBhbmQgaGFzIGEgZGlmZmVyZW50IHN0cnVjdHVyZQotICAgICAgICBleHR0ZW1wbGF5ZXJkaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCAnZXh0bGF5ZXInKQotICAgICAgICBzZWxmLl9jcmVhdGVfdGVtcF9sYXllcihleHR0ZW1wbGF5ZXJkaXIsIEZhbHNlLCAnb2VzZWxmdGVzdGV4dGxheWVyJywgcmVjaXBlcGF0aHNwZWM9J21ldGFkYXRhL3JlY2lwZXMvcmVjaXBlcy0qLyonKQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ3JlY2lwZXRvb2wgYXBwZW5kZmlsZSAlcyAvdXNyL3NoYXJlL3NlbGZ0ZXN0LXJlcGxhY2VtZS1vcmlnICVzJyAlIChleHR0ZW1wbGF5ZXJkaXIsIHNlbGYudGVzdGZpbGUpKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdUcmFjZWJhY2snLCByZXN1bHQub3V0cHV0KQotICAgICAgICBjcmVhdGVkZmlsZXMgPSBbXQotICAgICAgICBmb3Igcm9vdCwgXywgZmlsZXMgaW4gb3Mud2FsayhleHR0ZW1wbGF5ZXJkaXIpOgotICAgICAgICAgICAgZm9yIGYgaW4gZmlsZXM6Ci0gICAgICAgICAgICAgICAgY3JlYXRlZGZpbGVzLmFwcGVuZChvcy5wYXRoLnJlbHBhdGgob3MucGF0aC5qb2luKHJvb3QsIGYpLCBleHR0ZW1wbGF5ZXJkaXIpKQotICAgICAgICBjcmVhdGVkZmlsZXMucmVtb3ZlKCdjb25mL2xheWVyLmNvbmYnKQotICAgICAgICBleHBlY3RlZGZpbGVzID0gWydtZXRhZGF0YS9yZWNpcGVzL3JlY2lwZXMtdGVzdC9zZWxmdGVzdC1yZWNpcGV0b29sLWFwcGVuZGZpbGUvc2VsZnRlc3QtcmVjaXBldG9vbC1hcHBlbmRmaWxlLmJiYXBwZW5kJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnbWV0YWRhdGEvcmVjaXBlcy9yZWNpcGVzLXRlc3Qvc2VsZnRlc3QtcmVjaXBldG9vbC1hcHBlbmRmaWxlL3NlbGZ0ZXN0LXJlY2lwZXRvb2wtYXBwZW5kZmlsZS9zZWxmdGVzdC1yZXBsYWNlbWUtb3JpZyddCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKGNyZWF0ZWRmaWxlcyksIHNvcnRlZChleHBlY3RlZGZpbGVzKSkKLQotICAgIEB0ZXN0Y2FzZSgxMTkyKQotICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kZmlsZV93aWxkY2FyZChzZWxmKToKLQotICAgICAgICBkZWYgdHJ5X2FwcGVuZGZpbGVfd2Mob3B0aW9ucyk6Ci0gICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoJ3JlY2lwZXRvb2wgYXBwZW5kZmlsZSAlcyAvZXRjL3Byb2ZpbGUgJXMgJXMnICUgKHNlbGYudGVtcGxheWVyZGlyLCBzZWxmLnRlc3RmaWxlLCBvcHRpb25zKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ1RyYWNlYmFjaycsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgICAgICBiYmFwcGVuZGZpbGUgPSBOb25lCi0gICAgICAgICAgICBmb3Igcm9vdCwgXywgZmlsZXMgaW4gb3Mud2FsayhzZWxmLnRlbXBsYXllcmRpcik6Ci0gICAgICAgICAgICAgICAgZm9yIGYgaW4gZmlsZXM6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGYuZW5kc3dpdGgoJy5iYmFwcGVuZCcpOgotICAgICAgICAgICAgICAgICAgICAgICAgYmJhcHBlbmRmaWxlID0gZgotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGlmIG5vdCBiYmFwcGVuZGZpbGU6Ci0gICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdObyBiYmFwcGVuZCBmaWxlIGNyZWF0ZWQnKQotICAgICAgICAgICAgcnVuQ21kKCdybSAtcmYgJXMvcmVjaXBlcy0qJyAlIHNlbGYudGVtcGxheWVyZGlyKQotICAgICAgICAgICAgcmV0dXJuIGJiYXBwZW5kZmlsZQotCi0gICAgICAgICMgQ2hlY2sgd2l0aG91dCB3aWxkY2FyZCBvcHRpb24KLSAgICAgICAgcmVjaXBlZm4gPSBvcy5wYXRoLmJhc2VuYW1lKGdldF9iYl92YXIoJ0ZJTEUnLCAnYmFzZS1maWxlcycpKQotICAgICAgICBmaWxlbmFtZSA9IHRyeV9hcHBlbmRmaWxlX3djKCcnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVuYW1lLCByZWNpcGVmbi5yZXBsYWNlKCcuYmInLCAnLmJiYXBwZW5kJykpCi0gICAgICAgICMgTm93IGNoZWNrIHdpdGggd2lsZGNhcmQgb3B0aW9uCi0gICAgICAgIGZpbGVuYW1lID0gdHJ5X2FwcGVuZGZpbGVfd2MoJy13JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlbmFtZSwgcmVjaXBlZm4uc3BsaXQoJ18nKVswXSArICdfJS5iYmFwcGVuZCcpCi0KLSAgICBAdGVzdGNhc2UoMTE5MykKLSAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2NyZWF0ZShzZWxmKToKLSAgICAgICAgIyBUcnkgYWRkaW5nIGEgcmVjaXBlCi0gICAgICAgIHRlbXBzcmMgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCAnc3JjdHJlZScpCi0gICAgICAgIG9zLm1ha2VkaXJzKHRlbXBzcmMpCi0gICAgICAgIHJlY2lwZWZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCAnbG9ncm90YXRlXzMuMTIuMy5iYicpCi0gICAgICAgIHNyY3VyaSA9ICdodHRwczovL2dpdGh1Yi5jb20vbG9ncm90YXRlL2xvZ3JvdGF0ZS9yZWxlYXNlcy9kb3dubG9hZC8zLjEyLjMvbG9ncm90YXRlLTMuMTIuMy50YXIueHonCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgncmVjaXBldG9vbCBjcmVhdGUgLW8gJXMgJXMgLXggJXMnICUgKHJlY2lwZWZpbGUsIHNyY3VyaSwgdGVtcHNyYykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShyZWNpcGVmaWxlKSkKLSAgICAgICAgY2hlY2t2YXJzID0ge30KLSAgICAgICAgY2hlY2t2YXJzWydMSUNFTlNFJ10gPSAnR1BMdjInCi0gICAgICAgIGNoZWNrdmFyc1snTElDX0ZJTEVTX0NIS1NVTSddID0gJ2ZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MycKLSAgICAgICAgY2hlY2t2YXJzWydTUkNfVVJJJ10gPSAnaHR0cHM6Ly9naXRodWIuY29tL2xvZ3JvdGF0ZS9sb2dyb3RhdGUvcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vbG9ncm90YXRlLSR7UFZ9LnRhci54eicKLSAgICAgICAgY2hlY2t2YXJzWydTUkNfVVJJW21kNXN1bV0nXSA9ICdhNTYwYzU3ZmFjODdjNDViMmZjMTc0MDZjZGY3OTI4OCcKLSAgICAgICAgY2hlY2t2YXJzWydTUkNfVVJJW3NoYTI1NnN1bV0nXSA9ICcyZTZhNDAxY2FjOTAyNGRiMjI4ODI5N2UzYmUxYThhYjYwZTc0MDFiYThlOTEyMjUyMThhYWY0YTI3ZTgyYTA3JwotICAgICAgICBzZWxmLl90ZXN0X3JlY2lwZV9jb250ZW50cyhyZWNpcGVmaWxlLCBjaGVja3ZhcnMsIFtdKQotCi0gICAgQHRlc3RjYXNlKDExOTQpCi0gICAgZGVmIHRlc3RfcmVjaXBldG9vbF9jcmVhdGVfZ2l0KHNlbGYpOgotICAgICAgICBpZiAneDExJyBub3QgaW4gZ2V0X2JiX3ZhcignRElTVFJPX0ZFQVRVUkVTJyk6Ci0gICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdUZXN0IHJlcXVpcmVzIHgxMSBhcyBkaXN0cm8gZmVhdHVyZScpCi0gICAgICAgICMgRW5zdXJlIHdlIGhhdmUgdGhlIHJpZ2h0IGRhdGEgaW4gc2hsaWJzL3BrZ2RhdGEKLSAgICAgICAgYml0YmFrZSgnbGlicG5nIHBhbmdvIGxpYngxMSBsaWJ4ZXh0IGpwZWcgbGliY2hlY2snKQotICAgICAgICAjIFRyeSBhZGRpbmcgYSByZWNpcGUKLSAgICAgICAgdGVtcHNyYyA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsICdzcmN0cmVlJykKLSAgICAgICAgb3MubWFrZWRpcnModGVtcHNyYykKLSAgICAgICAgcmVjaXBlZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsICdsaWJtYXRjaGJveC5iYicpCi0gICAgICAgIHNyY3VyaSA9ICdnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saWJtYXRjaGJveCcKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKFsncmVjaXBldG9vbCcsICdjcmVhdGUnLCAnLW8nLCByZWNpcGVmaWxlLCBzcmN1cmkgKyAiO3Jldj05ZjdjZjg4OTVhZTJkMzljNDY1YzA0Y2M3OGU5MThjMTU3NDIwMjY5IiwgJy14JywgdGVtcHNyY10pCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShyZWNpcGVmaWxlKSwgJ3JlY2lwZXRvb2wgZGlkIG5vdCBjcmVhdGUgcmVjaXBlIGZpbGU7IG91dHB1dDpcbiVzJyAlIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIGNoZWNrdmFycyA9IHt9Ci0gICAgICAgIGNoZWNrdmFyc1snTElDRU5TRSddID0gJ0xHUEx2Mi4xJwotICAgICAgICBjaGVja3ZhcnNbJ0xJQ19GSUxFU19DSEtTVU0nXSA9ICdmaWxlOi8vQ09QWUlORzttZDU9N2ZiYzMzODMwOWFjMzhmZWZjZDY0YjA0YmI5MDNlMzQnCi0gICAgICAgIGNoZWNrdmFyc1snUyddID0gJyR7V09SS0RJUn0vZ2l0JwotICAgICAgICBjaGVja3ZhcnNbJ1BWJ10gPSAnMS4xMStnaXQke1NSQ1BWfScKLSAgICAgICAgY2hlY2t2YXJzWydTUkNfVVJJJ10gPSBzcmN1cmkKLSAgICAgICAgY2hlY2t2YXJzWydERVBFTkRTJ10gPSBzZXQoWydsaWJjaGVjaycsICdsaWJqcGVnLXR1cmJvJywgJ2xpYnBuZycsICdsaWJ4MTEnLCAnbGlieGV4dCcsICdwYW5nbyddKQotICAgICAgICBpbmhlcml0cyA9IFsnYXV0b3Rvb2xzJywgJ3BrZ2NvbmZpZyddCi0gICAgICAgIHNlbGYuX3Rlc3RfcmVjaXBlX2NvbnRlbnRzKHJlY2lwZWZpbGUsIGNoZWNrdmFycywgaW5oZXJpdHMpCi0KLSAgICBAdGVzdGNhc2UoMTM5MikKLSAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2NyZWF0ZV9zaW1wbGUoc2VsZik6Ci0gICAgICAgICMgVHJ5IGFkZGluZyBhIHJlY2lwZQotICAgICAgICB0ZW1wcmVjaXBlID0gb3MucGF0aC5qb2luKHNlbGYudGVtcGRpciwgJ3JlY2lwZScpCi0gICAgICAgIG9zLm1ha2VkaXJzKHRlbXByZWNpcGUpCi0gICAgICAgIHB2ID0gJzEuNy4zLjAnCi0gICAgICAgIHNyY3VyaSA9ICdodHRwOi8vd3d3LmRlc3QtdW5yZWFjaC5vcmcvc29jYXQvZG93bmxvYWQvc29jYXQtJXMudGFyLmJ6MicgJSBwdgotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ3JlY2lwZXRvb2wgY3JlYXRlICVzIC1vICVzJyAlIChzcmN1cmksIHRlbXByZWNpcGUpKQotICAgICAgICBkaXJsaXN0ID0gb3MubGlzdGRpcih0ZW1wcmVjaXBlKQotICAgICAgICBpZiBsZW4oZGlybGlzdCkgPiAxOgotICAgICAgICAgICAgc2VsZi5mYWlsKCdyZWNpcGV0b29sIGNyZWF0ZWQgbW9yZSB0aGFuIGp1c3Qgb25lIGZpbGU7IG91dHB1dDpcbiVzXG5kaXJsaXN0OlxuJXMnICUgKHJlc3VsdC5vdXRwdXQsIHN0cihkaXJsaXN0KSkpCi0gICAgICAgIGlmIGxlbihkaXJsaXN0KSA8IDEgb3Igbm90IG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbih0ZW1wcmVjaXBlLCBkaXJsaXN0WzBdKSk6Ci0gICAgICAgICAgICBzZWxmLmZhaWwoJ3JlY2lwZXRvb2wgZGlkIG5vdCBjcmVhdGUgcmVjaXBlIGZpbGU7IG91dHB1dDpcbiVzXG5kaXJsaXN0OlxuJXMnICUgKHJlc3VsdC5vdXRwdXQsIHN0cihkaXJsaXN0KSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlybGlzdFswXSwgJ3NvY2F0XyVzLmJiJyAlIHB2LCAnUmVjaXBlIGZpbGUgaW5jb3JyZWN0bHkgbmFtZWQnKQotICAgICAgICBjaGVja3ZhcnMgPSB7fQotICAgICAgICBjaGVja3ZhcnNbJ0xJQ0VOU0UnXSA9IHNldChbJ1Vua25vd24nLCAnR1BMdjInXSkKLSAgICAgICAgY2hlY2t2YXJzWydMSUNfRklMRVNfQ0hLU1VNJ10gPSBzZXQoWydmaWxlOi8vQ09QWUlORy5PcGVuU1NMO21kNT01YzliY2NjNzdmNjdhODMyOGVmNGViYWY0NjgxMTZmNCcsICdmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMnXSkKLSAgICAgICAgIyBXZSBkb24ndCBjaGVjayBERVBFTkRTIHNpbmNlIHRoZXkgYXJlIHZhcmlhYmxlIGZvciB0aGlzIHJlY2lwZSBkZXBlbmRpbmcgb24gd2hhdCdzIGluIHRoZSBzeXNyb290Ci0gICAgICAgIGNoZWNrdmFyc1snUyddID0gTm9uZQotICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUkknXSA9IHNyY3VyaS5yZXBsYWNlKHB2LCAnJHtQVn0nKQotICAgICAgICBpbmhlcml0cyA9IFsnYXV0b3Rvb2xzJ10KLSAgICAgICAgc2VsZi5fdGVzdF9yZWNpcGVfY29udGVudHMob3MucGF0aC5qb2luKHRlbXByZWNpcGUsIGRpcmxpc3RbMF0pLCBjaGVja3ZhcnMsIGluaGVyaXRzKQotCi0gICAgQHRlc3RjYXNlKDE0MTgpCi0gICAgZGVmIHRlc3RfcmVjaXBldG9vbF9jcmVhdGVfY21ha2Uoc2VsZik6Ci0gICAgICAgICMgVHJ5IGFkZGluZyBhIHJlY2lwZQotICAgICAgICB0ZW1wcmVjaXBlID0gb3MucGF0aC5qb2luKHNlbGYudGVtcGRpciwgJ3JlY2lwZScpCi0gICAgICAgIG9zLm1ha2VkaXJzKHRlbXByZWNpcGUpCi0gICAgICAgIHJlY2lwZWZpbGUgPSBvcy5wYXRoLmpvaW4odGVtcHJlY2lwZSwgJ25hdml0XzAuNS4wLmJiJykKLSAgICAgICAgc3JjdXJpID0gJ2h0dHA6Ly9kb3dubG9hZHMuc291cmNlZm9yZ2UubmV0L3Byb2plY3QvbmF2aXQvdjAuNS4wL25hdml0LTAuNS4wLnRhci5neicKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdyZWNpcGV0b29sIGNyZWF0ZSAtbyAlcyAlcycgJSAodGVtcHJlY2lwZSwgc3JjdXJpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKHJlY2lwZWZpbGUpKQotICAgICAgICBjaGVja3ZhcnMgPSB7fQotICAgICAgICBjaGVja3ZhcnNbJ0xJQ0VOU0UnXSA9IHNldChbJ1Vua25vd24nLCAnR1BMdjInLCAnTEdQTHYyJ10pCi0gICAgICAgIGNoZWNrdmFyc1snU1JDX1VSSSddID0gJ2h0dHA6Ly9kb3dubG9hZHMuc291cmNlZm9yZ2UubmV0L3Byb2plY3QvbmF2aXQvdiR7UFZ9L25hdml0LSR7UFZ9LnRhci5neicKLSAgICAgICAgY2hlY2t2YXJzWydTUkNfVVJJW21kNXN1bV0nXSA9ICcyNDJmMzk4ZTk3OWE2YjhjMGYzYzgwMmI2MzQzNWI2OCcKLSAgICAgICAgY2hlY2t2YXJzWydTUkNfVVJJW3NoYTI1NnN1bV0nXSA9ICcxMzM1MzQ4MWQ3ZmMwMWE0ZjY0ZTM4NWRkYTQ2MGI1MTQ5NjM2NmJiYTBmZDJjYzg1YTg5YTA3NDc5MTBlOTRkJwotICAgICAgICBjaGVja3ZhcnNbJ0RFUEVORFMnXSA9IHNldChbJ2ZyZWV0eXBlJywgJ3psaWInLCAnb3BlbnNzbCcsICdnbGliLTIuMCcsICd2aXJ0dWFsL2xpYmdsJywgJ3ZpcnR1YWwvZWdsJywgJ2d0aysnLCAnbGlicG5nJywgJ2xpYnNkbCcsICdmcmVlZ2x1dCcsICdkYnVzLWdsaWInXSkKLSAgICAgICAgaW5oZXJpdHMgPSBbJ2NtYWtlJywgJ3B5dGhvbi1kaXInLCAnZ2V0dGV4dCcsICdwa2djb25maWcnXQotICAgICAgICBzZWxmLl90ZXN0X3JlY2lwZV9jb250ZW50cyhyZWNpcGVmaWxlLCBjaGVja3ZhcnMsIGluaGVyaXRzKQotCi0gICAgZGVmIHRlc3RfcmVjaXBldG9vbF9jcmVhdGVfZ2l0aHViKHNlbGYpOgotICAgICAgICAjIEJhc2ljIHRlc3QgdG8gc2VlIGlmIGdpdGh1YiBVUkwgbWFuZ2xpbmcgd29ya3MKLSAgICAgICAgdGVtcHJlY2lwZSA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsICdyZWNpcGUnKQotICAgICAgICBvcy5tYWtlZGlycyh0ZW1wcmVjaXBlKQotICAgICAgICByZWNpcGVmaWxlID0gb3MucGF0aC5qb2luKHRlbXByZWNpcGUsICdtZXNvbl9naXQuYmInKQotICAgICAgICBzcmN1cmkgPSAnaHR0cHM6Ly9naXRodWIuY29tL21lc29uYnVpbGQvbWVzb247cmV2PTAuMzIuMCcKLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKFsncmVjaXBldG9vbCcsICdjcmVhdGUnLCAnLW8nLCB0ZW1wcmVjaXBlLCBzcmN1cmldKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUocmVjaXBlZmlsZSkpCi0gICAgICAgIGNoZWNrdmFycyA9IHt9Ci0gICAgICAgIGNoZWNrdmFyc1snTElDRU5TRSddID0gc2V0KFsnQXBhY2hlLTIuMCddKQotICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUkknXSA9ICdnaXQ6Ly9naXRodWIuY29tL21lc29uYnVpbGQvbWVzb247cHJvdG9jb2w9aHR0cHMnCi0gICAgICAgIGluaGVyaXRzID0gWydzZXR1cHRvb2xzJ10KLSAgICAgICAgc2VsZi5fdGVzdF9yZWNpcGVfY29udGVudHMocmVjaXBlZmlsZSwgY2hlY2t2YXJzLCBpbmhlcml0cykKLQotICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfY3JlYXRlX2dpdGh1Yl90YXJiYWxsKHNlbGYpOgotICAgICAgICAjIEJhc2ljIHRlc3QgdG8gZW5zdXJlIGdpdGh1YiBVUkwgbWFuZ2xpbmcgZG9lc24ndCBhcHBseSB0byByZWxlYXNlIHRhcmJhbGxzCi0gICAgICAgIHRlbXByZWNpcGUgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCAncmVjaXBlJykKLSAgICAgICAgb3MubWFrZWRpcnModGVtcHJlY2lwZSkKLSAgICAgICAgcHYgPSAnMC4zMi4wJwotICAgICAgICByZWNpcGVmaWxlID0gb3MucGF0aC5qb2luKHRlbXByZWNpcGUsICdtZXNvbl8lcy5iYicgJSBwdikKLSAgICAgICAgc3JjdXJpID0gJ2h0dHBzOi8vZ2l0aHViLmNvbS9tZXNvbmJ1aWxkL21lc29uL3JlbGVhc2VzL2Rvd25sb2FkLyVzL21lc29uLSVzLnRhci5neicgJSAocHYsIHB2KQotICAgICAgICByZXN1bHQgPSBydW5DbWQoJ3JlY2lwZXRvb2wgY3JlYXRlIC1vICVzICVzJyAlICh0ZW1wcmVjaXBlLCBzcmN1cmkpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUocmVjaXBlZmlsZSkpCi0gICAgICAgIGNoZWNrdmFycyA9IHt9Ci0gICAgICAgIGNoZWNrdmFyc1snTElDRU5TRSddID0gc2V0KFsnQXBhY2hlLTIuMCddKQotICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUkknXSA9ICdodHRwczovL2dpdGh1Yi5jb20vbWVzb25idWlsZC9tZXNvbi9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS9tZXNvbi0ke1BWfS50YXIuZ3onCi0gICAgICAgIGluaGVyaXRzID0gWydzZXR1cHRvb2xzJ10KLSAgICAgICAgc2VsZi5fdGVzdF9yZWNpcGVfY29udGVudHMocmVjaXBlZmlsZSwgY2hlY2t2YXJzLCBpbmhlcml0cykKLQotICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfY3JlYXRlX2dpdF9odHRwKHNlbGYpOgotICAgICAgICAjIEJhc2ljIHRlc3QgdG8gY2hlY2sgaHR0cCBnaXQgVVJMIG1hbmdsaW5nIHdvcmtzCi0gICAgICAgIHRlbXByZWNpcGUgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCAncmVjaXBlJykKLSAgICAgICAgb3MubWFrZWRpcnModGVtcHJlY2lwZSkKLSAgICAgICAgcmVjaXBlZmlsZSA9IG9zLnBhdGguam9pbih0ZW1wcmVjaXBlLCAnbWF0Y2hib3gtdGVybWluYWxfZ2l0LmJiJykKLSAgICAgICAgc3JjdXJpID0gJ2h0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9naXQvbWF0Y2hib3gtdGVybWluYWwnCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgncmVjaXBldG9vbCBjcmVhdGUgLW8gJXMgJXMnICUgKHRlbXByZWNpcGUsIHNyY3VyaSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShyZWNpcGVmaWxlKSkKLSAgICAgICAgY2hlY2t2YXJzID0ge30KLSAgICAgICAgY2hlY2t2YXJzWydMSUNFTlNFJ10gPSBzZXQoWydHUEx2MiddKQotICAgICAgICBjaGVja3ZhcnNbJ1NSQ19VUkknXSA9ICdnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9naXQvbWF0Y2hib3gtdGVybWluYWw7cHJvdG9jb2w9aHR0cCcKLSAgICAgICAgaW5oZXJpdHMgPSBbJ3BrZ2NvbmZpZycsICdhdXRvdG9vbHMnXQotICAgICAgICBzZWxmLl90ZXN0X3JlY2lwZV9jb250ZW50cyhyZWNpcGVmaWxlLCBjaGVja3ZhcnMsIGluaGVyaXRzKQotCi0gICAgZGVmIF9jb3B5X2ZpbGVfd2l0aF9jbGVhbnVwKHNlbGYsIHNyY2ZpbGUsIGJhc2Vkc3RkaXIsICpwYXRocyk6Ci0gICAgICAgIGRzdGRpciA9IGJhc2Vkc3RkaXIKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGRzdGRpcikpCi0gICAgICAgIGZvciBwIGluIHBhdGhzOgotICAgICAgICAgICAgZHN0ZGlyID0gb3MucGF0aC5qb2luKGRzdGRpciwgcCkKLSAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhkc3RkaXIpOgotICAgICAgICAgICAgICAgIG9zLm1ha2VkaXJzKGRzdGRpcikKLSAgICAgICAgICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKGRzdGRpcikKLSAgICAgICAgZHN0ZmlsZSA9IG9zLnBhdGguam9pbihkc3RkaXIsIG9zLnBhdGguYmFzZW5hbWUoc3JjZmlsZSkpCi0gICAgICAgIGlmIHNyY2ZpbGUgIT0gZHN0ZmlsZToKLSAgICAgICAgICAgIHNodXRpbC5jb3B5KHNyY2ZpbGUsIGRzdGZpbGUpCi0gICAgICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKGRzdGZpbGUpCi0KLSAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2xvYWRfcGx1Z2luKHNlbGYpOgotICAgICAgICAiIiJUZXN0IHRoYXQgcmVjaXBldG9vbCBsb2FkcyBvbmx5IHRoZSBmaXJzdCBmb3VuZCBwbHVnaW4gaW4gQkJQQVRILiIiIgotCi0gICAgICAgIHJlY2lwZXRvb2wgPSBydW5DbWQoIndoaWNoIHJlY2lwZXRvb2wiKQotICAgICAgICBmcm9tbmFtZSA9IHJ1bkNtZCgicmVjaXBldG9vbCAtLXF1aWV0IHBsdWdpbmZpbGUiKQotICAgICAgICBzcmNmaWxlID0gZnJvbW5hbWUub3V0cHV0Ci0gICAgICAgIHNlYXJjaHBhdGggPSBzZWxmLmJicGF0aC5zcGxpdCgnOicpICsgW29zLnBhdGguZGlybmFtZShyZWNpcGV0b29sLm91dHB1dCldCi0gICAgICAgIHBsdWdpbmNvbnRlbnQgPSBbXQotICAgICAgICB3aXRoIG9wZW4oc3JjZmlsZSkgYXMgZmg6Ci0gICAgICAgICAgICBwbHVnaW5jb250ZW50ID0gZmgucmVhZGxpbmVzKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignbWV0YS1zZWxmdGVzdCcsIHNyY2ZpbGUsICd3cm9uZyBiYnBhdGggcGx1Z2luIGZvdW5kJykKLSAgICAgICAgICAgIGZvciBwYXRoIGluIHNlYXJjaHBhdGg6Ci0gICAgICAgICAgICAgICAgc2VsZi5fY29weV9maWxlX3dpdGhfY2xlYW51cChzcmNmaWxlLCBwYXRoLCAnbGliJywgJ3JlY2lwZXRvb2wnKQotICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCJyZWNpcGV0b29sIC0tcXVpZXQgY291bnQiKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LCAnMScpCi0gICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoInJlY2lwZXRvb2wgLS1xdWlldCBtdWx0aWxvYWRlZCIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQsICJubyIpCi0gICAgICAgICAgICBmb3IgcGF0aCBpbiBzZWFyY2hwYXRoOgotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgicmVjaXBldG9vbCAtLXF1aWV0IGJiZGlyIikKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5vdXRwdXQsIHBhdGgpCi0gICAgICAgICAgICAgICAgb3MudW5saW5rKG9zLnBhdGguam9pbihyZXN1bHQub3V0cHV0LCAnbGliJywgJ3JlY2lwZXRvb2wnLCAnYmJwYXRoLnB5JykpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICB3aXRoIG9wZW4oc3JjZmlsZSwgJ3cnKSBhcyBmaDoKLSAgICAgICAgICAgICAgICBmaC53cml0ZWxpbmVzKHBsdWdpbmNvbnRlbnQpCi0KLQotY2xhc3MgUmVjaXBldG9vbEFwcGVuZHNyY0Jhc2UoUmVjaXBldG9vbEJhc2UpOgotICAgIGRlZiBfdHJ5X3JlY2lwZXRvb2xfYXBwZW5kc3JjZmlsZShzZWxmLCB0ZXN0cmVjaXBlLCBuZXdmaWxlLCBkZXN0ZmlsZSwgb3B0aW9ucywgZXhwZWN0ZWRsaW5lcywgZXhwZWN0ZWRmaWxlcyk6Ci0gICAgICAgIGNtZCA9ICdyZWNpcGV0b29sIGFwcGVuZHNyY2ZpbGUgJXMgJXMgJXMgJXMgJXMnICUgKG9wdGlvbnMsIHNlbGYudGVtcGxheWVyZGlyLCB0ZXN0cmVjaXBlLCBuZXdmaWxlLCBkZXN0ZmlsZSkKLSAgICAgICAgcmV0dXJuIHNlbGYuX3RyeV9yZWNpcGV0b29sX2FwcGVuZGNtZChjbWQsIHRlc3RyZWNpcGUsIGV4cGVjdGVkZmlsZXMsIGV4cGVjdGVkbGluZXMpCi0KLSAgICBkZWYgX3RyeV9yZWNpcGV0b29sX2FwcGVuZHNyY2ZpbGVzKHNlbGYsIHRlc3RyZWNpcGUsIG5ld2ZpbGVzLCBleHBlY3RlZGxpbmVzPU5vbmUsIGV4cGVjdGVkZmlsZXM9Tm9uZSwgZGVzdGRpcj1Ob25lLCBvcHRpb25zPScnKToKLQotICAgICAgICBpZiBkZXN0ZGlyOgotICAgICAgICAgICAgb3B0aW9ucyArPSAnIC1EICVzJyAlIGRlc3RkaXIKLQotICAgICAgICBpZiBleHBlY3RlZGZpbGVzIGlzIE5vbmU6Ci0gICAgICAgICAgICBleHBlY3RlZGZpbGVzID0gW29zLnBhdGguYmFzZW5hbWUoZikgZm9yIGYgaW4gbmV3ZmlsZXNdCi0KLSAgICAgICAgY21kID0gJ3JlY2lwZXRvb2wgYXBwZW5kc3JjZmlsZXMgJXMgJXMgJXMgJXMnICUgKG9wdGlvbnMsIHNlbGYudGVtcGxheWVyZGlyLCB0ZXN0cmVjaXBlLCAnICcuam9pbihuZXdmaWxlcykpCi0gICAgICAgIHJldHVybiBzZWxmLl90cnlfcmVjaXBldG9vbF9hcHBlbmRjbWQoY21kLCB0ZXN0cmVjaXBlLCBleHBlY3RlZGZpbGVzLCBleHBlY3RlZGxpbmVzKQotCi0gICAgZGVmIF90cnlfcmVjaXBldG9vbF9hcHBlbmRzcmNmaWxlX2ZhaWwoc2VsZiwgdGVzdHJlY2lwZSwgbmV3ZmlsZSwgZGVzdGZpbGUsIGNoZWNrZXJyb3IpOgotICAgICAgICBjbWQgPSAncmVjaXBldG9vbCBhcHBlbmRzcmNmaWxlICVzICVzICVzICVzJyAlIChzZWxmLnRlbXBsYXllcmRpciwgdGVzdHJlY2lwZSwgbmV3ZmlsZSwgZGVzdGZpbGUgb3IgJycpCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZChjbWQsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyZXN1bHQuc3RhdHVzLCAwLCAnQ29tbWFuZCAiJXMiIHNob3VsZCBoYXZlIGZhaWxlZCBidXQgZGlkblwndCcgJSBjbWQpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ1RyYWNlYmFjaycsIHJlc3VsdC5vdXRwdXQpCi0gICAgICAgIGZvciBlcnJvcnN0ciBpbiBjaGVja2Vycm9yOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlcnJvcnN0ciwgcmVzdWx0Lm91dHB1dCkKLQotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgX2dldF9maXJzdF9maWxlX3VyaShyZWNpcGUpOgotICAgICAgICAnJydSZXR1cm4gdGhlIGZpcnN0IGZpbGU6Ly8gaW4gU1JDX1VSSSBmb3IgdGhlIHNwZWNpZmllZCByZWNpcGUuJycnCi0gICAgICAgIHNyY191cmkgPSBnZXRfYmJfdmFyKCdTUkNfVVJJJywgcmVjaXBlKS5zcGxpdCgpCi0gICAgICAgIGZvciB1cmkgaW4gc3JjX3VyaToKLSAgICAgICAgICAgIHAgPSB1cmxsaWIucGFyc2UudXJscGFyc2UodXJpKQotICAgICAgICAgICAgaWYgcC5zY2hlbWUgPT0gJ2ZpbGUnOgotICAgICAgICAgICAgICAgIHJldHVybiBwLm5ldGxvYyArIHAucGF0aAotCi0gICAgZGVmIF90ZXN0X2FwcGVuZHNyY2ZpbGUoc2VsZiwgdGVzdHJlY2lwZSwgZmlsZW5hbWU9Tm9uZSwgZGVzdGRpcj1Ob25lLCBoYXNfc3JjX3VyaT1UcnVlLCBzcmNkaXI9Tm9uZSwgbmV3ZmlsZT1Ob25lLCBvcHRpb25zPScnKToKLSAgICAgICAgaWYgbmV3ZmlsZSBpcyBOb25lOgotICAgICAgICAgICAgbmV3ZmlsZSA9IHNlbGYudGVzdGZpbGUKLQotICAgICAgICBpZiBzcmNkaXI6Ci0gICAgICAgICAgICBpZiBkZXN0ZGlyOgotICAgICAgICAgICAgICAgIGV4cGVjdGVkX3N1YmRpciA9IG9zLnBhdGguam9pbihzcmNkaXIsIGRlc3RkaXIpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGV4cGVjdGVkX3N1YmRpciA9IHNyY2RpcgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgb3B0aW9ucyArPSAiIC1XIgotICAgICAgICAgICAgZXhwZWN0ZWRfc3ViZGlyID0gZGVzdGRpcgotCi0gICAgICAgIGlmIGZpbGVuYW1lOgotICAgICAgICAgICAgaWYgZGVzdGRpcjoKLSAgICAgICAgICAgICAgICBkZXN0cGF0aCA9IG9zLnBhdGguam9pbihkZXN0ZGlyLCBmaWxlbmFtZSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZGVzdHBhdGggPSBmaWxlbmFtZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKG5ld2ZpbGUpCi0gICAgICAgICAgICBpZiBkZXN0ZGlyOgotICAgICAgICAgICAgICAgIGRlc3RwYXRoID0gZGVzdGRpciArIG9zLnNlcAotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBkZXN0cGF0aCA9ICcuJyArIG9zLnNlcAotCi0gICAgICAgIGV4cGVjdGVkbGluZXMgPSBbJ0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9LyR7UE59OiJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJ10KLSAgICAgICAgaWYgaGFzX3NyY191cmk6Ci0gICAgICAgICAgICB1cmkgPSAnZmlsZTovLyVzJyAlIGZpbGVuYW1lCi0gICAgICAgICAgICBpZiBleHBlY3RlZF9zdWJkaXI6Ci0gICAgICAgICAgICAgICAgdXJpICs9ICc7c3ViZGlyPSVzJyAlIGV4cGVjdGVkX3N1YmRpcgotICAgICAgICAgICAgZXhwZWN0ZWRsaW5lc1swOjBdID0gWydTUkNfVVJJICs9ICIlcyJcbicgJSB1cmksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJ10KLQotICAgICAgICByZXR1cm4gc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kc3JjZmlsZSh0ZXN0cmVjaXBlLCBuZXdmaWxlLCBkZXN0cGF0aCwgb3B0aW9ucywgZXhwZWN0ZWRsaW5lcywgW2ZpbGVuYW1lXSkKLQotICAgIGRlZiBfdGVzdF9hcHBlbmRzcmNmaWxlcyhzZWxmLCB0ZXN0cmVjaXBlLCBuZXdmaWxlcywgZXhwZWN0ZWRmaWxlcz1Ob25lLCBkZXN0ZGlyPU5vbmUsIG9wdGlvbnM9JycpOgotICAgICAgICBpZiBleHBlY3RlZGZpbGVzIGlzIE5vbmU6Ci0gICAgICAgICAgICBleHBlY3RlZGZpbGVzID0gW29zLnBhdGguYmFzZW5hbWUobikgZm9yIG4gaW4gbmV3ZmlsZXNdCi0KLSAgICAgICAgc2VsZi5fdHJ5X3JlY2lwZXRvb2xfYXBwZW5kc3JjZmlsZXModGVzdHJlY2lwZSwgbmV3ZmlsZXMsIGV4cGVjdGVkZmlsZXM9ZXhwZWN0ZWRmaWxlcywgZGVzdGRpcj1kZXN0ZGlyLCBvcHRpb25zPW9wdGlvbnMpCi0KLSAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnU1JDX1VSSScsICdGSUxFJywgJ0ZJTEVTRVhUUkFQQVRIUyddLCB0ZXN0cmVjaXBlKQotICAgICAgICBzcmNfdXJpID0gYmJfdmFyc1snU1JDX1VSSSddLnNwbGl0KCkKLSAgICAgICAgZm9yIGYgaW4gZXhwZWN0ZWRmaWxlczoKLSAgICAgICAgICAgIGlmIGRlc3RkaXI6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignZmlsZTovLyVzO3N1YmRpcj0lcycgJSAoZiwgZGVzdGRpciksIHNyY191cmkpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2ZpbGU6Ly8lcycgJSBmLCBzcmNfdXJpKQotCi0gICAgICAgIHJlY2lwZWZpbGUgPSBiYl92YXJzWydGSUxFJ10KLSAgICAgICAgYmJhcHBlbmRmaWxlID0gc2VsZi5fY2hlY2tfYmJhcHBlbmQodGVzdHJlY2lwZSwgcmVjaXBlZmlsZSwgc2VsZi50ZW1wbGF5ZXJkaXIpCi0gICAgICAgIGZpbGVzZGlyID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShiYmFwcGVuZGZpbGUpLCB0ZXN0cmVjaXBlKQotICAgICAgICBmaWxlc2V4dHJhcGF0aHMgPSBiYl92YXJzWydGSUxFU0VYVFJBUEFUSFMnXS5zcGxpdCgnOicpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oZmlsZXNkaXIsIGZpbGVzZXh0cmFwYXRocykKLQotCi0KLQotY2xhc3MgUmVjaXBldG9vbEFwcGVuZHNyY1Rlc3RzKFJlY2lwZXRvb2xBcHBlbmRzcmNCYXNlKToKLQotICAgIEB0ZXN0Y2FzZSgxMjczKQotICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kc3JjZmlsZV9iYXNpYyhzZWxmKToKLSAgICAgICAgc2VsZi5fdGVzdF9hcHBlbmRzcmNmaWxlKCdiYXNlLWZpbGVzJywgJ2EtZmlsZScpCi0KLSAgICBAdGVzdGNhc2UoMTI3NCkKLSAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZHNyY2ZpbGVfYmFzaWNfd2lsZGNhcmQoc2VsZik6Ci0gICAgICAgIHRlc3RyZWNpcGUgPSAnYmFzZS1maWxlcycKLSAgICAgICAgc2VsZi5fdGVzdF9hcHBlbmRzcmNmaWxlKHRlc3RyZWNpcGUsICdhLWZpbGUnLCBvcHRpb25zPSctdycpCi0gICAgICAgIHJlY2lwZWZpbGUgPSBnZXRfYmJfdmFyKCdGSUxFJywgdGVzdHJlY2lwZSkKLSAgICAgICAgYmJhcHBlbmRmaWxlID0gc2VsZi5fY2hlY2tfYmJhcHBlbmQodGVzdHJlY2lwZSwgcmVjaXBlZmlsZSwgc2VsZi50ZW1wbGF5ZXJkaXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5iYXNlbmFtZShiYmFwcGVuZGZpbGUpLCAnJXNfJSUuYmJhcHBlbmQnICUgdGVzdHJlY2lwZSkKLQotICAgIEB0ZXN0Y2FzZSgxMjgxKQotICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kc3JjZmlsZV9zdWJkaXJfYmFzaWMoc2VsZik6Ci0gICAgICAgIHNlbGYuX3Rlc3RfYXBwZW5kc3JjZmlsZSgnYmFzZS1maWxlcycsICdhLWZpbGUnLCAndG1wJykKLQotICAgIEB0ZXN0Y2FzZSgxMjgyKQotICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kc3JjZmlsZV9zdWJkaXJfYmFzaWNfZGlyZGVzdChzZWxmKToKLSAgICAgICAgc2VsZi5fdGVzdF9hcHBlbmRzcmNmaWxlKCdiYXNlLWZpbGVzJywgZGVzdGRpcj0ndG1wJykKLQotICAgIEB0ZXN0Y2FzZSgxMjgwKQotICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kc3JjZmlsZV9zcmNkaXJfYmFzaWMoc2VsZik6Ci0gICAgICAgIHRlc3RyZWNpcGUgPSAnYmFzaCcKLSAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnUycsICdXT1JLRElSJ10sIHRlc3RyZWNpcGUpCi0gICAgICAgIHNyY2RpciA9IGJiX3ZhcnNbJ1MnXQotICAgICAgICB3b3JrZGlyID0gYmJfdmFyc1snV09SS0RJUiddCi0gICAgICAgIHN1YmRpciA9IG9zLnBhdGgucmVscGF0aChzcmNkaXIsIHdvcmtkaXIpCi0gICAgICAgIHNlbGYuX3Rlc3RfYXBwZW5kc3JjZmlsZSh0ZXN0cmVjaXBlLCAnYS1maWxlJywgc3JjZGlyPXN1YmRpcikKLQotICAgIEB0ZXN0Y2FzZSgxMjc1KQotICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfYXBwZW5kc3JjZmlsZV9leGlzdGluZ19pbl9zcmNfdXJpKHNlbGYpOgotICAgICAgICB0ZXN0cmVjaXBlID0gJ2Jhc2UtZmlsZXMnCi0gICAgICAgIGZpbGVwYXRoID0gc2VsZi5fZ2V0X2ZpcnN0X2ZpbGVfdXJpKHRlc3RyZWNpcGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmaWxlcGF0aCwgJ1VuYWJsZSB0byB0ZXN0LCBubyBmaWxlOi8vIHVyaSBmb3VuZCBpbiBTUkNfVVJJIGZvciAlcycgJSB0ZXN0cmVjaXBlKQotICAgICAgICBzZWxmLl90ZXN0X2FwcGVuZHNyY2ZpbGUodGVzdHJlY2lwZSwgZmlsZXBhdGgsIGhhc19zcmNfdXJpPUZhbHNlKQotCi0gICAgQHRlc3RjYXNlKDEyNzYpCi0gICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRzcmNmaWxlX2V4aXN0aW5nX2luX3NyY191cmlfZGlmZl9wYXJhbXMoc2VsZik6Ci0gICAgICAgIHRlc3RyZWNpcGUgPSAnYmFzZS1maWxlcycKLSAgICAgICAgc3ViZGlyID0gJ3RtcCcKLSAgICAgICAgZmlsZXBhdGggPSBzZWxmLl9nZXRfZmlyc3RfZmlsZV91cmkodGVzdHJlY2lwZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZpbGVwYXRoLCAnVW5hYmxlIHRvIHRlc3QsIG5vIGZpbGU6Ly8gdXJpIGZvdW5kIGluIFNSQ19VUkkgZm9yICVzJyAlIHRlc3RyZWNpcGUpCi0KLSAgICAgICAgb3V0cHV0ID0gc2VsZi5fdGVzdF9hcHBlbmRzcmNmaWxlKHRlc3RyZWNpcGUsIGZpbGVwYXRoLCBzdWJkaXIsIGhhc19zcmNfdXJpPUZhbHNlKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoYW55KCd3aXRoIGRpZmZlcmVudCBwYXJhbWV0ZXJzJyBpbiBsIGZvciBsIGluIG91dHB1dCkpCi0KLSAgICBAdGVzdGNhc2UoMTI3NykKLSAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZHNyY2ZpbGVfcmVwbGFjZV9maWxlX3NyY2RpcihzZWxmKToKLSAgICAgICAgdGVzdHJlY2lwZSA9ICdiYXNoJwotICAgICAgICBmaWxlcGF0aCA9ICdNYWtlZmlsZS5pbicKLSAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnUycsICdXT1JLRElSJ10sIHRlc3RyZWNpcGUpCi0gICAgICAgIHNyY2RpciA9IGJiX3ZhcnNbJ1MnXQotICAgICAgICB3b3JrZGlyID0gYmJfdmFyc1snV09SS0RJUiddCi0gICAgICAgIHN1YmRpciA9IG9zLnBhdGgucmVscGF0aChzcmNkaXIsIHdvcmtkaXIpCi0KLSAgICAgICAgc2VsZi5fdGVzdF9hcHBlbmRzcmNmaWxlKHRlc3RyZWNpcGUsIGZpbGVwYXRoLCBzcmNkaXI9c3ViZGlyKQotICAgICAgICBiaXRiYWtlKCclczpkb191bnBhY2snICUgdGVzdHJlY2lwZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVuKHNlbGYudGVzdGZpbGUsICdyJykucmVhZCgpLCBvcGVuKG9zLnBhdGguam9pbihzcmNkaXIsIGZpbGVwYXRoKSwgJ3InKS5yZWFkKCkpCi0KLSAgICBAdGVzdGNhc2UoMTI3OCkKLSAgICBkZWYgdGVzdF9yZWNpcGV0b29sX2FwcGVuZHNyY2ZpbGVzX2Jhc2ljKHNlbGYsIGRlc3RkaXI9Tm9uZSk6Ci0gICAgICAgIG5ld2ZpbGVzID0gW3NlbGYudGVzdGZpbGVdCi0gICAgICAgIGZvciBpIGluIHJhbmdlKDEsIDUpOgotICAgICAgICAgICAgdGVzdGZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCAndGVzdGZpbGUlZCcgJSBpKQotICAgICAgICAgICAgd2l0aCBvcGVuKHRlc3RmaWxlLCAndycpIGFzIGY6Ci0gICAgICAgICAgICAgICAgZi53cml0ZSgnVGVzdCBmaWxlICVkXG4nICUgaSkKLSAgICAgICAgICAgIG5ld2ZpbGVzLmFwcGVuZCh0ZXN0ZmlsZSkKLSAgICAgICAgc2VsZi5fdGVzdF9hcHBlbmRzcmNmaWxlcygnZ2NjJywgbmV3ZmlsZXMsIGRlc3RkaXI9ZGVzdGRpciwgb3B0aW9ucz0nLVcnKQotCi0gICAgQHRlc3RjYXNlKDEyNzkpCi0gICAgZGVmIHRlc3RfcmVjaXBldG9vbF9hcHBlbmRzcmNmaWxlc19iYXNpY19zdWJkaXIoc2VsZik6Ci0gICAgICAgIHNlbGYudGVzdF9yZWNpcGV0b29sX2FwcGVuZHNyY2ZpbGVzX2Jhc2ljKGRlc3RkaXI9J3Rlc3RkaXInKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvcnVucWVtdS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L3J1bnFlbXUucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4YzZmOTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvcnVucWVtdS5weQorKysgL2Rldi9udWxsCkBAIC0xLDE0MCArMCwwIEBACi0jCi0jIENvcHlyaWdodCAoYykgMjAxNyBXaW5kIFJpdmVyIFN5c3RlbXMsIEluYy4KLSMKLQotaW1wb3J0IHJlCi1pbXBvcnQgbG9nZ2luZwotCi1mcm9tIG9lcWEuc2VsZnRlc3QuYmFzZSBpbXBvcnQgb2VTZWxmVGVzdAotZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBiaXRiYWtlLCBydW5xZW11LCBnZXRfYmJfdmFyCi1mcm9tIG9lcWEudXRpbHMuZGVjb3JhdG9ycyBpbXBvcnQgdGVzdGNhc2UKLQotY2xhc3MgUnVucWVtdVRlc3RzKG9lU2VsZlRlc3QpOgotICAgICIiIlJ1bnFlbXUgdGVzdCBjbGFzcyIiIgotCi0gICAgaW1hZ2VfaXNfcmVhZHkgPSBGYWxzZQotICAgIGRlcGxveV9kaXJfaW1hZ2UgPSAnJwotCi0gICAgZGVmIHNldFVwTG9jYWwoc2VsZik6Ci0gICAgICAgIHNlbGYucmVjaXBlID0gJ2NvcmUtaW1hZ2UtbWluaW1hbCcKLSAgICAgICAgc2VsZi5tYWNoaW5lID0gICdxZW11eDg2LTY0JwotICAgICAgICBzZWxmLmZzdHlwZXMgPSAiZXh0NCBpc28gaGRkaW1nIHZtZGsgcWNvdzIgdmRpIgotICAgICAgICBzZWxmLmNtZF9jb21tb24gPSAicnVucWVtdSBub2dyYXBoaWMiCi0KLSAgICAgICAgIyBBdm9pZCBlbWl0IHRoZSBzYW1lIHJlY29yZCBtdWx0aXBsZSB0aW1lcy4KLSAgICAgICAgbWFpbmxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJCaXRCYWtlLk1haW4iKQotICAgICAgICBtYWlubG9nZ2VyLnByb3BhZ2F0ZSA9IEZhbHNlCi0KLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoCi0iIiIKLU1BQ0hJTkUgPSAiJXMiCi1JTUFHRV9GU1RZUEVTID0gIiVzIgotIyAxMCBtZWFucyAxIHNlY29uZAotU1lTTElOVVhfVElNRU9VVCA9ICIxMCIKLSIiIgotJSAoc2VsZi5tYWNoaW5lLCBzZWxmLmZzdHlwZXMpCi0gICAgICAgICkKLQotICAgICAgICBpZiBub3QgUnVucWVtdVRlc3RzLmltYWdlX2lzX3JlYWR5OgotICAgICAgICAgICAgUnVucWVtdVRlc3RzLmRlcGxveV9kaXJfaW1hZ2UgPSBnZXRfYmJfdmFyKCdERVBMT1lfRElSX0lNQUdFJykKLSAgICAgICAgICAgIGJpdGJha2Uoc2VsZi5yZWNpcGUpCi0gICAgICAgICAgICBSdW5xZW11VGVzdHMuaW1hZ2VfaXNfcmVhZHkgPSBUcnVlCi0KLSAgICBAdGVzdGNhc2UoMjAwMSkKLSAgICBkZWYgdGVzdF9ib290X21hY2hpbmUoc2VsZik6Ci0gICAgICAgICIiIlRlc3QgcnVucWVtdSBtYWNoaW5lIiIiCi0gICAgICAgIGNtZCA9ICIlcyAlcyIgJSAoc2VsZi5jbWRfY29tbW9uLCBzZWxmLm1hY2hpbmUpCi0gICAgICAgIHdpdGggcnVucWVtdShzZWxmLnJlY2lwZSwgc3NoPUZhbHNlLCBsYXVuY2hfY21kPWNtZCkgYXMgcWVtdToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShxZW11LnJ1bm5lci5sb2dnZWQsICJGYWlsZWQ6ICVzIiAlIGNtZCkKLQotICAgIEB0ZXN0Y2FzZSgyMDAyKQotICAgIGRlZiB0ZXN0X2Jvb3RfbWFjaGluZV9leHQ0KHNlbGYpOgotICAgICAgICAiIiJUZXN0IHJ1bnFlbXUgbWFjaGluZSBleHQ0IiIiCi0gICAgICAgIGNtZCA9ICIlcyAlcyBleHQ0IiAlIChzZWxmLmNtZF9jb21tb24sIHNlbGYubWFjaGluZSkKLSAgICAgICAgd2l0aCBydW5xZW11KHNlbGYucmVjaXBlLCBzc2g9RmFsc2UsIGxhdW5jaF9jbWQ9Y21kKSBhcyBxZW11OgotICAgICAgICAgICAgd2l0aCBvcGVuKHFlbXUucWVtdXJ1bm5lcmxvZykgYXMgZjoKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3Jvb3Rmcy5leHQ0JyBpbiBmLnJlYWQoKSwgIkZhaWxlZDogJXMiICUgY21kKQotCi0gICAgQHRlc3RjYXNlKDIwMDMpCi0gICAgZGVmIHRlc3RfYm9vdF9tYWNoaW5lX2lzbyhzZWxmKToKLSAgICAgICAgIiIiVGVzdCBydW5xZW11IG1hY2hpbmUgaXNvIiIiCi0gICAgICAgIGNtZCA9ICIlcyAlcyBpc28iICUgKHNlbGYuY21kX2NvbW1vbiwgc2VsZi5tYWNoaW5lKQotICAgICAgICB3aXRoIHJ1bnFlbXUoc2VsZi5yZWNpcGUsIHNzaD1GYWxzZSwgbGF1bmNoX2NtZD1jbWQpIGFzIHFlbXU6Ci0gICAgICAgICAgICB3aXRoIG9wZW4ocWVtdS5xZW11cnVubmVybG9nKSBhcyBmOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnIC1jZHJvbSAnIGluIGYucmVhZCgpLCAiRmFpbGVkOiAlcyIgJSBjbWQpCi0KLSAgICBAdGVzdGNhc2UoMjAwNCkKLSAgICBkZWYgdGVzdF9ib290X3JlY2lwZV9pbWFnZShzZWxmKToKLSAgICAgICAgIiIiVGVzdCBydW5xZW11IHJlY2lwZS1pbWFnZSIiIgotICAgICAgICBjbWQgPSAiJXMgJXMiICUgKHNlbGYuY21kX2NvbW1vbiwgc2VsZi5yZWNpcGUpCi0gICAgICAgIHdpdGggcnVucWVtdShzZWxmLnJlY2lwZSwgc3NoPUZhbHNlLCBsYXVuY2hfY21kPWNtZCkgYXMgcWVtdToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShxZW11LnJ1bm5lci5sb2dnZWQsICJGYWlsZWQ6ICVzIiAlIGNtZCkKLQotICAgIEB0ZXN0Y2FzZSgyMDA1KQotICAgIGRlZiB0ZXN0X2Jvb3RfcmVjaXBlX2ltYWdlX3ZtZGsoc2VsZik6Ci0gICAgICAgICIiIlRlc3QgcnVucWVtdSByZWNpcGUtaW1hZ2Ugdm1kayIiIgotICAgICAgICBjbWQgPSAiJXMgJXMgdm1kayIgJSAoc2VsZi5jbWRfY29tbW9uLCBzZWxmLnJlY2lwZSkKLSAgICAgICAgd2l0aCBydW5xZW11KHNlbGYucmVjaXBlLCBzc2g9RmFsc2UsIGxhdW5jaF9jbWQ9Y21kKSBhcyBxZW11OgotICAgICAgICAgICAgd2l0aCBvcGVuKHFlbXUucWVtdXJ1bm5lcmxvZykgYXMgZjoKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2Zvcm1hdD12bWRrJyBpbiBmLnJlYWQoKSwgIkZhaWxlZDogJXMiICUgY21kKQotCi0gICAgQHRlc3RjYXNlKDIwMDYpCi0gICAgZGVmIHRlc3RfYm9vdF9yZWNpcGVfaW1hZ2VfdmRpKHNlbGYpOgotICAgICAgICAiIiJUZXN0IHJ1bnFlbXUgcmVjaXBlLWltYWdlIHZkaSIiIgotICAgICAgICBjbWQgPSAiJXMgJXMgdmRpIiAlIChzZWxmLmNtZF9jb21tb24sIHNlbGYucmVjaXBlKQotICAgICAgICB3aXRoIHJ1bnFlbXUoc2VsZi5yZWNpcGUsIHNzaD1GYWxzZSwgbGF1bmNoX2NtZD1jbWQpIGFzIHFlbXU6Ci0gICAgICAgICAgICB3aXRoIG9wZW4ocWVtdS5xZW11cnVubmVybG9nKSBhcyBmOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnZm9ybWF0PXZkaScgaW4gZi5yZWFkKCksICJGYWlsZWQ6ICVzIiAlIGNtZCkKLQotICAgIEB0ZXN0Y2FzZSgyMDA3KQotICAgIGRlZiB0ZXN0X2Jvb3RfZGVwbG95KHNlbGYpOgotICAgICAgICAiIiJUZXN0IHJ1bnFlbXUgZGVwbG95X2Rpcl9pbWFnZSIiIgotICAgICAgICBjbWQgPSAiJXMgJXMiICUgKHNlbGYuY21kX2NvbW1vbiwgc2VsZi5kZXBsb3lfZGlyX2ltYWdlKQotICAgICAgICB3aXRoIHJ1bnFlbXUoc2VsZi5yZWNpcGUsIHNzaD1GYWxzZSwgbGF1bmNoX2NtZD1jbWQpIGFzIHFlbXU6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocWVtdS5ydW5uZXIubG9nZ2VkLCAiRmFpbGVkOiAlcyIgJSBjbWQpCi0KLSAgICBAdGVzdGNhc2UoMjAwOCkKLSAgICBkZWYgdGVzdF9ib290X2RlcGxveV9oZGRpbWcoc2VsZik6Ci0gICAgICAgICIiIlRlc3QgcnVucWVtdSBkZXBsb3lfZGlyX2ltYWdlIGhkZGltZyIiIgotICAgICAgICBjbWQgPSAiJXMgJXMgaGRkaW1nIiAlIChzZWxmLmNtZF9jb21tb24sIHNlbGYuZGVwbG95X2Rpcl9pbWFnZSkKLSAgICAgICAgd2l0aCBydW5xZW11KHNlbGYucmVjaXBlLCBzc2g9RmFsc2UsIGxhdW5jaF9jbWQ9Y21kKSBhcyBxZW11OgotICAgICAgICAgICAgd2l0aCBvcGVuKHFlbXUucWVtdXJ1bm5lcmxvZykgYXMgZjoKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKCdmaWxlPS4qLmhkZGltZycsIGYucmVhZCgpKSwgIkZhaWxlZDogJXMiICUgY21kKQotCi0gICAgQHRlc3RjYXNlKDIwMDkpCi0gICAgZGVmIHRlc3RfYm9vdF9tYWNoaW5lX3NsaXJwKHNlbGYpOgotICAgICAgICAiIiJUZXN0IHJ1bnFlbXUgbWFjaGluZSBzbGlycCIiIgotICAgICAgICBjbWQgPSAiJXMgc2xpcnAgJXMiICUgKHNlbGYuY21kX2NvbW1vbiwgc2VsZi5tYWNoaW5lKQotICAgICAgICB3aXRoIHJ1bnFlbXUoc2VsZi5yZWNpcGUsIHNzaD1GYWxzZSwgbGF1bmNoX2NtZD1jbWQpIGFzIHFlbXU6Ci0gICAgICAgICAgICB3aXRoIG9wZW4ocWVtdS5xZW11cnVubmVybG9nKSBhcyBmOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnIC1uZXRkZXYgdXNlcicgaW4gZi5yZWFkKCksICJGYWlsZWQ6ICVzIiAlIGNtZCkKLQotICAgIEB0ZXN0Y2FzZSgyMDA5KQotICAgIGRlZiB0ZXN0X2Jvb3RfbWFjaGluZV9zbGlycF9xY293MihzZWxmKToKLSAgICAgICAgIiIiVGVzdCBydW5xZW11IG1hY2hpbmUgc2xpcnAgcWNvdzIiIiIKLSAgICAgICAgY21kID0gIiVzIHNsaXJwIHFjb3cyICVzIiAlIChzZWxmLmNtZF9jb21tb24sIHNlbGYubWFjaGluZSkKLSAgICAgICAgd2l0aCBydW5xZW11KHNlbGYucmVjaXBlLCBzc2g9RmFsc2UsIGxhdW5jaF9jbWQ9Y21kKSBhcyBxZW11OgotICAgICAgICAgICAgd2l0aCBvcGVuKHFlbXUucWVtdXJ1bm5lcmxvZykgYXMgZjoKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2Zvcm1hdD1xY293MicgaW4gZi5yZWFkKCksICJGYWlsZWQ6ICVzIiAlIGNtZCkKLQotICAgIEB0ZXN0Y2FzZSgyMDEwKQotICAgIGRlZiB0ZXN0X2Jvb3RfcWVtdV9ib290KHNlbGYpOgotICAgICAgICAiIiJUZXN0IHJ1bnFlbXUgL3BhdGgvdG8vaW1hZ2UucWVtdWJvb3QuY29uZiIiIgotICAgICAgICBxZW11Ym9vdF9jb25mID0gIiVzLSVzLnFlbXVib290LmNvbmYiICUgKHNlbGYucmVjaXBlLCBzZWxmLm1hY2hpbmUpCi0gICAgICAgIHFlbXVib290X2NvbmYgPSBvcy5wYXRoLmpvaW4oc2VsZi5kZXBsb3lfZGlyX2ltYWdlLCBxZW11Ym9vdF9jb25mKQotICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocWVtdWJvb3RfY29uZik6Ci0gICAgICAgICAgICBzZWxmLnNraXBUZXN0KCIlcyBub3QgZm91bmQiICUgcWVtdWJvb3RfY29uZikKLSAgICAgICAgY21kID0gIiVzICVzIiAlIChzZWxmLmNtZF9jb21tb24sIHFlbXVib290X2NvbmYpCi0gICAgICAgIHdpdGggcnVucWVtdShzZWxmLnJlY2lwZSwgc3NoPUZhbHNlLCBsYXVuY2hfY21kPWNtZCkgYXMgcWVtdToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShxZW11LnJ1bm5lci5sb2dnZWQsICJGYWlsZWQ6ICVzIiAlIGNtZCkKLQotICAgIEB0ZXN0Y2FzZSgyMDExKQotICAgIGRlZiB0ZXN0X2Jvb3Rfcm9vdGZzKHNlbGYpOgotICAgICAgICAiIiJUZXN0IHJ1bnFlbXUgL3BhdGgvdG8vcm9vdGZzLmV4dDQiIiIKLSAgICAgICAgcm9vdGZzID0gIiVzLSVzLmV4dDQiICUgKHNlbGYucmVjaXBlLCBzZWxmLm1hY2hpbmUpCi0gICAgICAgIHJvb3RmcyA9IG9zLnBhdGguam9pbihzZWxmLmRlcGxveV9kaXJfaW1hZ2UsIHJvb3RmcykKLSAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHJvb3Rmcyk6Ci0gICAgICAgICAgICBzZWxmLnNraXBUZXN0KCIlcyBub3QgZm91bmQiICUgcm9vdGZzKQotICAgICAgICBjbWQgPSAiJXMgJXMiICUgKHNlbGYuY21kX2NvbW1vbiwgcm9vdGZzKQotICAgICAgICB3aXRoIHJ1bnFlbXUoc2VsZi5yZWNpcGUsIHNzaD1GYWxzZSwgbGF1bmNoX2NtZD1jbWQpIGFzIHFlbXU6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocWVtdS5ydW5uZXIubG9nZ2VkLCAiRmFpbGVkOiAlcyIgJSBjbWQpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9ydW50aW1lLXRlc3QucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9ydW50aW1lLXRlc3QucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0OThkMDQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvcnVudGltZS10ZXN0LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjM3ICswLDAgQEAKLWZyb20gb2VxYS5zZWxmdGVzdC5iYXNlIGltcG9ydCBvZVNlbGZUZXN0Ci1mcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZCwgYml0YmFrZSwgZ2V0X2JiX3ZhciwgZ2V0X2JiX3ZhcnMsIHJ1bnFlbXUKLWZyb20gb2VxYS51dGlscy5kZWNvcmF0b3JzIGltcG9ydCB0ZXN0Y2FzZQotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLQotY2xhc3MgVGVzdEV4cG9ydChvZVNlbGZUZXN0KToKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6Ci0gICAgICAgIHJ1bkNtZCgicm0gLXJmIC90bXAvc2RrIikKLQotICAgIGRlZiB0ZXN0X3Rlc3RleHBvcnRfYmFzaWMoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBTdW1tYXJ5OiBDaGVjayBiYXNpYyB0ZXN0ZXhwb3J0IGZ1bmN0aW9uYWxpdHkgd2l0aCBvbmx5IHBpbmcgdGVzdCBlbmFibGVkLgotICAgICAgICBFeHBlY3RlZDogMS4gdGVzdGV4cG9ydCBkaXJlY3RvcnkgbXVzdCBiZSBjcmVhdGVkLgotICAgICAgICAgICAgICAgICAgMi4gcnVuZXhwb3J0ZWQucHkgbXVzdCBydW4gd2l0aG91dCBhbnkgZXJyb3IvZXhjZXB0aW9uLgotICAgICAgICAgICAgICAgICAgMy4gcGluZyB0ZXN0IG11c3Qgc3VjY2VlZC4KLSAgICAgICAgUHJvZHVjdDogb2UtY29yZQotICAgICAgICBBdXRob3I6IE1hcmlhbm8gTG9wZXogPG1hcmlhbm8ubG9wZXpAaW50ZWwuY29tPgotICAgICAgICAiIiIKLQotICAgICAgICBmZWF0dXJlcyA9ICdJTkhFUklUICs9ICJ0ZXN0ZXhwb3J0IlxuJwotICAgICAgICAjIFRoZXNlIGFyZW4ndCB0aGUgYWN0dWFsIElQIGFkZHJlc3NlcyBidXQgdGVzdGV4cG9ydCBjbGFzcyBuZWVkcyBzb21ldGhpbmcgZGVmaW5lZAotICAgICAgICBmZWF0dXJlcyArPSAnVEVTVF9TRVJWRVJfSVAgPSAiMTkyLjE2OC43LjEiXG4nCi0gICAgICAgIGZlYXR1cmVzICs9ICdURVNUX1RBUkdFVF9JUCA9ICIxOTIuMTY4LjcuMSJcbicKLSAgICAgICAgZmVhdHVyZXMgKz0gJ1RFU1RfU1VJVEVTID0gInBpbmciXG4nCi0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmVzKQotCi0gICAgICAgICMgQnVpbGQgdGVzZXhwb3J0IGZvciBjb3JlLWltYWdlLW1pbmltYWwKLSAgICAgICAgYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsJykKLSAgICAgICAgYml0YmFrZSgnLWMgdGVzdGV4cG9ydCBjb3JlLWltYWdlLW1pbmltYWwnKQotCi0gICAgICAgIHRlc3RleHBvcnRfZGlyID0gZ2V0X2JiX3ZhcignVEVTVF9FWFBPUlRfRElSJywgJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCi0KLSAgICAgICAgIyBWZXJpZnkgaWYgVEVTVF9FWFBPUlRfRElSIHdhcyBjcmVhdGVkCi0gICAgICAgIGlzZGlyID0gb3MucGF0aC5pc2Rpcih0ZXN0ZXhwb3J0X2RpcikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpc2RpciwgJ0ZhaWxlZCB0byBjcmVhdGUgdGVzdGV4cG9ydCBkaXI6ICVzJyAlIHRlc3RleHBvcnRfZGlyKQotCi0gICAgICAgIHdpdGggcnVucWVtdSgnY29yZS1pbWFnZS1taW5pbWFsJykgYXMgcWVtdToKLSAgICAgICAgICAgICMgQXR0ZW1wdCB0byBydW4gcnVuZXhwb3J0ZWQucHkgdG8gcGVyZm9ybSBwaW5nIHRlc3QKLSAgICAgICAgICAgIHRlc3RfcGF0aCA9IG9zLnBhdGguam9pbih0ZXN0ZXhwb3J0X2RpciwgIm9lLXRlc3QiKQotICAgICAgICAgICAgZGF0YV9maWxlID0gb3MucGF0aC5qb2luKHRlc3RleHBvcnRfZGlyLCAnZGF0YScsICd0ZXN0ZGF0YS5qc29uJykKLSAgICAgICAgICAgIG1hbmlmZXN0ID0gb3MucGF0aC5qb2luKHRlc3RleHBvcnRfZGlyLCAnZGF0YScsICdtYW5pZmVzdCcpCi0gICAgICAgICAgICBjbWQgPSAoIiVzIHJ1bnRpbWUgLS10ZXN0LWRhdGEtZmlsZSAlcyAtLXBhY2thZ2VzLW1hbmlmZXN0ICVzICIKLSAgICAgICAgICAgICAgICAgICAiLS10YXJnZXQtaXAgJXMgLS1zZXJ2ZXItaXAgJXMgLS1xdWlldCIKLSAgICAgICAgICAgICAgICAgICUgKHRlc3RfcGF0aCwgZGF0YV9maWxlLCBtYW5pZmVzdCwgcWVtdS5pcCwgcWVtdS5zZXJ2ZXJfaXApKQotICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKGNtZCkKLSAgICAgICAgICAgICMgVmVyaWZ5IHBpbmcgdGVzdCB3YXMgc3VjY2VzZnVsCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlc3VsdC5zdGF0dXMsICdvZS10ZXN0IHJ1bnRpbWUgcmV0dXJuZWQgYSBub24gMCBzdGF0dXMnKQotCi0gICAgZGVmIHRlc3RfdGVzdGV4cG9ydF9zZGsoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBTdW1tYXJ5OiBDaGVjayBzZGsgZnVuY3Rpb25hbGl0eSBmb3IgdGVzdGV4cG9ydC4KLSAgICAgICAgRXhwZWN0ZWQ6IDEuIHRlc3RleHBvcnQgZGlyZWN0b3J5IG11c3QgYmUgY3JlYXRlZC4KLSAgICAgICAgICAgICAgICAgIDIuIFNESyB0YXJiYWxsIG11c3QgZXhpc3RzLgotICAgICAgICAgICAgICAgICAgMy4gVW5jb21wcmVzc2luZyBvZiB0YXJiYWxsIG11c3Qgc3VjY2VlZC4KLSAgICAgICAgICAgICAgICAgIDQuIENoZWNrIGlmIHRoZSBTREsgZGlyZWN0b3J5IGlzIGFkZGVkIHRvIFBBVEguCi0gICAgICAgICAgICAgICAgICA1LiBSdW4gdGFyIGZyb20gdGhlIFNESyBkaXJlY3RvcnkuCi0gICAgICAgIFByb2R1Y3Q6IG9lLWNvcmUKLSAgICAgICAgQXV0aG9yOiBNYXJpYW5vIExvcGV6IDxtYXJpYW5vLmxvcGV6QGludGVsLmNvbT4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgZmVhdHVyZXMgPSAnSU5IRVJJVCArPSAidGVzdGV4cG9ydCJcbicKLSAgICAgICAgIyBUaGVzZSBhcmVuJ3QgdGhlIGFjdHVhbCBJUCBhZGRyZXNzZXMgYnV0IHRlc3RleHBvcnQgY2xhc3MgbmVlZHMgc29tZXRoaW5nIGRlZmluZWQKLSAgICAgICAgZmVhdHVyZXMgKz0gJ1RFU1RfU0VSVkVSX0lQID0gIjE5Mi4xNjguNy4xIlxuJwotICAgICAgICBmZWF0dXJlcyArPSAnVEVTVF9UQVJHRVRfSVAgPSAiMTkyLjE2OC43LjEiXG4nCi0gICAgICAgIGZlYXR1cmVzICs9ICdURVNUX1NVSVRFUyA9ICJwaW5nIlxuJwotICAgICAgICBmZWF0dXJlcyArPSAnVEVTVF9FWFBPUlRfU0RLX0VOQUJMRUQgPSAiMSJcbicKLSAgICAgICAgZmVhdHVyZXMgKz0gJ1RFU1RfRVhQT1JUX1NES19QQUNLQUdFUyA9ICJuYXRpdmVzZGstdGFyIlxuJwotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKLQotICAgICAgICAjIEJ1aWxkIHRlc2V4cG9ydCBmb3IgY29yZS1pbWFnZS1taW5pbWFsCi0gICAgICAgIGJpdGJha2UoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCi0gICAgICAgIGJpdGJha2UoJy1jIHRlc3RleHBvcnQgY29yZS1pbWFnZS1taW5pbWFsJykKLQotICAgICAgICBuZWVkZWRfdmFycyA9IFsnVEVTVF9FWFBPUlRfRElSJywgJ1RFU1RfRVhQT1JUX1NES19ESVInLCAnVEVTVF9FWFBPUlRfU0RLX05BTUUnXQotICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMobmVlZGVkX3ZhcnMsICdjb3JlLWltYWdlLW1pbmltYWwnKQotICAgICAgICB0ZXN0ZXhwb3J0X2RpciA9IGJiX3ZhcnNbJ1RFU1RfRVhQT1JUX0RJUiddCi0gICAgICAgIHNka19kaXIgPSBiYl92YXJzWydURVNUX0VYUE9SVF9TREtfRElSJ10KLSAgICAgICAgc2RrX25hbWUgPSBiYl92YXJzWydURVNUX0VYUE9SVF9TREtfTkFNRSddCi0KLSAgICAgICAgIyBDaGVjayBmb3IgU0RLCi0gICAgICAgIHRhcmJhbGxfbmFtZSA9ICIlcy5zaCIgJSBzZGtfbmFtZQotICAgICAgICB0YXJiYWxsX3BhdGggPSBvcy5wYXRoLmpvaW4odGVzdGV4cG9ydF9kaXIsIHNka19kaXIsIHRhcmJhbGxfbmFtZSkKLSAgICAgICAgbXNnID0gIkNvdWxkbid0IGZpbmQgU0RLIHRhcmJhbGw6ICVzIiAlIHRhcmJhbGxfcGF0aAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnBhdGguaXNmaWxlKHRhcmJhbGxfcGF0aCksIFRydWUsIG1zZykKLQotICAgICAgICAjIEV4dHJhY3QgU0RLIGFuZCBydW4gdGFyIGZyb20gU0RLCi0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgiJXMgLXkgLWQgL3RtcC9zZGsiICUgdGFyYmFsbF9wYXRoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlc3VsdC5zdGF0dXMsICJDb3VsZG4ndCBleHRyYWN0IFNESyIpCi0KLSAgICAgICAgZW52X3NjcmlwdCA9IHJlc3VsdC5vdXRwdXQuc3BsaXQoKVstMV0KLSAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCIuICVzOyB3aGljaCB0YXIiICUgZW52X3NjcmlwdCwgc2hlbGw9VHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXN1bHQuc3RhdHVzLCAiQ291bGRuJ3Qgc2V0dXAgU0RLIGVudmlyb25tZW50IikKLSAgICAgICAgaXNfc2RrX3RhciA9IFRydWUgaWYgIi90bXAvc2RrIiBpbiByZXN1bHQub3V0cHV0IGVsc2UgRmFsc2UKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX3Nka190YXIsICJDb3VsZG4ndCBzZXR1cCBTREsgZW52aXJvbm1lbnQiKQotCi0gICAgICAgIHRhcl9zZGsgPSByZXN1bHQub3V0cHV0Ci0gICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgiJXMgLS12ZXJzaW9uIiAlIHRhcl9zZGspCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzdWx0LnN0YXR1cywgIkNvdWxkbid0IHJ1biB0YXIgZnJvbSBTREsiKQotCi0KLWNsYXNzIFRlc3RJbWFnZShvZVNlbGZUZXN0KToKLQotICAgIGRlZiB0ZXN0X3Rlc3RpbWFnZV9pbnN0YWxsKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgU3VtbWFyeTogQ2hlY2sgaW5zdGFsbCBwYWNrYWdlcyBmdW5jdGlvbmFsaXR5IGZvciB0ZXN0aW1hZ2UvdGVzdGV4cG9ydC4KLSAgICAgICAgRXhwZWN0ZWQ6IDEuIEltcG9ydCB0ZXN0cyBmcm9tIGEgZGlyZWN0b3J5IG90aGVyIHRoYW4gbWV0YS4KLSAgICAgICAgICAgICAgICAgIDIuIENoZWNrIGluc3RhbGwvdW5pbnN0YWxsIG9mIHNvY2F0LgotICAgICAgICAgICAgICAgICAgMy4gQ2hlY2sgdGhhdCByZW1vdGUgcGFja2FnZSBmZWVkcyBjYW4gYmUgYWNjZXNzZWQKLSAgICAgICAgUHJvZHVjdDogb2UtY29yZQotICAgICAgICBBdXRob3I6IE1hcmlhbm8gTG9wZXogPG1hcmlhbm8ubG9wZXpAaW50ZWwuY29tPgotICAgICAgICBBdXRob3I6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+Ci0gICAgICAgICIiIgotICAgICAgICBpZiBnZXRfYmJfdmFyKCdESVNUUk8nKSA9PSAncG9reS10aW55JzoKLSAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ2NvcmUtaW1hZ2UtZnVsbC1jbWRsaW5lIG5vdCBidWlsZGFibGUgZm9yIHBva3ktdGlueScpCi0KLSAgICAgICAgZmVhdHVyZXMgPSAnSU5IRVJJVCArPSAidGVzdGltYWdlIlxuJwotICAgICAgICBmZWF0dXJlcyArPSAnVEVTVF9TVUlURVMgPSAicGluZyBzc2ggc2VsZnRlc3QiXG4nCi0gICAgICAgICMgV2UgZG9uJ3QgeWV0IGtub3cgd2hhdCB0aGUgc2VydmVyIGlwIGFuZCBwb3J0IHdpbGwgYmUgLSB0aGV5IHdpbGwgYmUgcGF0Y2hlZAotICAgICAgICAjIGluIGF0IHRoZSBzdGFydCBvZiB0aGUgb24taW1hZ2UgdGVzdAotICAgICAgICBmZWF0dXJlcyArPSAnUEFDS0FHRV9GRUVEX1VSSVMgPSAiaHR0cDovL2JvZ3VzX2lwOmJvZ3VzX3BvcnQiXG4nCi0gICAgICAgIGZlYXR1cmVzICs9ICdFWFRSQV9JTUFHRV9GRUFUVVJFUyArPSAicGFja2FnZS1tYW5hZ2VtZW50IlxuJwotICAgICAgICBmZWF0dXJlcyArPSAnUEFDS0FHRV9DTEFTU0VTID0gInBhY2thZ2VfcnBtIicKLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZXMpCi0KLSAgICAgICAgIyBCdWlsZCBjb3JlLWltYWdlLXNhdG8gYW5kIHRlc3RpbWFnZQotICAgICAgICBiaXRiYWtlKCdjb3JlLWltYWdlLWZ1bGwtY21kbGluZSBzb2NhdCcpCi0gICAgICAgIGJpdGJha2UoJy1jIHRlc3RpbWFnZSBjb3JlLWltYWdlLWZ1bGwtY21kbGluZScpCi0KLWNsYXNzIFBvc3RpbnN0KG9lU2VsZlRlc3QpOgotICAgIEB0ZXN0Y2FzZSgxNTQwKQotICAgIGRlZiB0ZXN0X3ZlcmlmeV9wb3N0aW5zdChzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFN1bW1hcnk6IFRoZSBwdXJwb3NlIG9mIHRoaXMgdGVzdCBpcyB0byB2ZXJpZnkgdGhlIGV4ZWN1dGlvbiBvcmRlciBvZiBwb3N0aW5zdCBCdWd6aWxsYSBJRDogWzUzMTldCi0gICAgICAgIEV4cGVjdGVkIDoKLSAgICAgICAgMS4gQ29tcGlsZSBhIG1pbmltYWwgaW1hZ2UuCi0gICAgICAgIDIuIFRoZSBjb21waWxlZCBpbWFnZSB3aWxsIGFkZCB0aGUgY3JlYXRlZCBsYXllciB3aXRoIHRoZSByZWNpcGVzIHBvc3RpbnN0WyBhYmRwdF0KLSAgICAgICAgMy4gUnVuIHFlbXV4ODYKLSAgICAgICAgNC4gVmFsaWRhdGUgdGhlIHRhc2sgZXhlY3V0aW9uIG9yZGVyCi0gICAgICAgIEF1dGhvcjogRnJhbmNpc2NvIFBlZHJhemEgPGZyYW5jaXNjby5qLnBlZHJhemEuZ29uemFsZXpAaW50ZWwuY29tPgotICAgICAgICAiIiIKLSAgICAgICAgZmVhdHVyZXMgPSAnSU5IRVJJVCArPSAidGVzdGltYWdlIlxuJwotICAgICAgICBmZWF0dXJlcyArPSAnQ09SRV9JTUFHRV9FWFRSQV9JTlNUQUxMICs9ICJwb3N0aW5zdC1hdC1yb290ZnMgXAotcG9zdGluc3QtZGVsYXllZC1hIFwKLXBvc3RpbnN0LWRlbGF5ZWQtYiBcCi1wb3N0aW5zdC1kZWxheWVkLWQgXAotcG9zdGluc3QtZGVsYXllZC1wIFwKLXBvc3RpbnN0LWRlbGF5ZWQtdCBcCi0iXG4nCi0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmVzKQotCi0gICAgICAgIGJpdGJha2UoJ2NvcmUtaW1hZ2UtbWluaW1hbCAtZiAnKQotCi0gICAgICAgIHBvc3RpbnN0X2xpc3QgPSBbJzEwMC1wb3N0aW5zdC1hdC1yb290ZnMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICcxMDEtcG9zdGluc3QtZGVsYXllZC1hJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnMTAyLXBvc3RpbnN0LWRlbGF5ZWQtYicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJzEwMy1wb3N0aW5zdC1kZWxheWVkLWQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICcxMDQtcG9zdGluc3QtZGVsYXllZC1wJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnMTA1LXBvc3RpbnN0LWRlbGF5ZWQtdCddCi0gICAgICAgIHBhdGhfd29ya2RpciA9IGdldF9iYl92YXIoJ1dPUktESVInLCdjb3JlLWltYWdlLW1pbmltYWwnKQotICAgICAgICB3b3Jrc3BhY2VkaXIgPSAndGVzdGltYWdlL3FlbXVfYm9vdF9sb2cnCi0gICAgICAgIHdvcmtzcGFjZWRpciA9IG9zLnBhdGguam9pbihwYXRoX3dvcmtkaXIsIHdvcmtzcGFjZWRpcikKLSAgICAgICAgcmV4cCA9IHJlLmNvbXBpbGUoIl5SdW5uaW5nIHBvc3RpbnN0IC4qLyg/UDxwb3N0aW5zdD4uKilcLlwuXC4kIikKLSAgICAgICAgd2l0aCBydW5xZW11KCdjb3JlLWltYWdlLW1pbmltYWwnKSBhcyBxZW11OgotICAgICAgICAgICAgd2l0aCBvcGVuKHdvcmtzcGFjZWRpcikgYXMgZjoKLSAgICAgICAgICAgICAgICBmb3VuZCA9IEZhbHNlCi0gICAgICAgICAgICAgICAgaWR4ID0gMAotICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGYucmVhZGxpbmVzKCk6Ci0gICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkucmVwbGFjZSgiXk0iLCIiKQotICAgICAgICAgICAgICAgICAgICBpZiBub3QgbGluZTogIyBUbyBhdm9pZCBlbXB0eSBsaW5lcwotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICAgICAgbSA9IHJleHAuc2VhcmNoKGxpbmUpCi0gICAgICAgICAgICAgICAgICAgIGlmIG06Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvc3RpbnN0X2xpc3RbaWR4XSwgbS5ncm91cCgncG9zdGluc3QnKSwgIkZhaWwiKQotICAgICAgICAgICAgICAgICAgICAgICAgaWR4ID0gaWR4KzEKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICBlbGlmIGZvdW5kOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpZHgsIGxlbihwb3N0aW5zdF9saXN0KSwgIk5vdCBmb3VuZCBhbGwgcG9zdGluc3RzIikKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0KLSAgICBAdGVzdGNhc2UoMTU0NSkKLSAgICBkZWYgdGVzdF9wb3N0aW5zdF9yb290ZnNfYW5kX2Jvb3Qoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBTdW1tYXJ5OiAgICAgICAgVGhlIHB1cnBvc2Ugb2YgdGhpcyB0ZXN0IGNhc2UgaXMgdG8gdmVyaWZ5IFBvc3QtaW5zdGFsbGF0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRzIGFyZSBjYWxsZWQgd2hlbiByb290ZnMgaXMgY3JlYXRlZCBhbmQgYWxzbyB0ZXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGF0IHNjcmlwdCBjYW4gYmUgZGVsYXllZCB0byBydW4gYXQgZmlyc3QgYm9vdC4KLSAgICAgICAgRGVwZW5kZW5jaWVzOiAgIE5BCi0gICAgICAgIFN0ZXBzOiAgICAgICAgICAxLiBBZGQgcHJvcGVyIGNvbmZpZ3VyYXRpb24gdG8gbG9jYWwuY29uZiBmaWxlCi0gICAgICAgICAgICAgICAgICAgICAgICAyLiBCdWlsZCBhICJjb3JlLWltYWdlLW1pbmltYWwiIGltYWdlCi0gICAgICAgICAgICAgICAgICAgICAgICAzLiBWZXJpZnkgdGhhdCBmaWxlIGNyZWF0ZWQgYnkgcG9zdGluc3Rfcm9vdGZzIHJlY2lwZSBpcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2VudCBvbiByb290ZnMgZGlyLgotICAgICAgICAgICAgICAgICAgICAgICAgNC4gQm9vdCB0aGUgaW1hZ2UgY3JlYXRlZCBvbiBxZW11IGFuZCB2ZXJpZnkgdGhhdCB0aGUgZmlsZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZCBieSBwb3N0aW5zdF9ib290IHJlY2lwZSBpcyBwcmVzZW50IG9uIGltYWdlLgotICAgICAgICBFeHBlY3RlZDogICAgICAgVGhlIGZpbGVzIGFyZSBzdWNjZXNzZnVsbHkgY3JlYXRlZCBkdXJpbmcgcm9vdGZzIGFuZCBib290Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aW1lIGZvciAzIGRpZmZlcmVudCBwYWNrYWdlIG1hbmFnZXJzOiBycG0saXBrLGRlYiBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpbml0aWFsaXphdGlvbiBtYW5hZ2Vyczogc3lzdmluaXQgYW5kIHN5c3RlbWQuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIGZpbGVfcm9vdGZzX25hbWUgPSAidGhpcy13YXMtY3JlYXRlZC1hdC1yb290ZnN0aW1lIgotICAgICAgICBmaWxlYm9vdF9uYW1lID0gInRoaXMtd2FzLWNyZWF0ZWQtYXQtZmlyc3QtYm9vdCIKLSAgICAgICAgcm9vdGZzX3BrZyA9ICdwb3N0aW5zdC1hdC1yb290ZnMnCi0gICAgICAgIGJvb3RfcGtnID0gJ3Bvc3RpbnN0LWRlbGF5ZWQtYScKLSAgICAgICAgI1N0ZXAgMQotICAgICAgICBmZWF0dXJlcyA9ICdNQUNISU5FID0gInFlbXV4ODYiXG4nCi0gICAgICAgIGZlYXR1cmVzICs9ICdDT1JFX0lNQUdFX0VYVFJBX0lOU1RBTEwgKz0gIiVzICVzICJcbiclIChyb290ZnNfcGtnLCBib290X3BrZykKLSAgICAgICAgZmVhdHVyZXMgKz0gJ0lNQUdFX0ZFQVRVUkVTICs9ICJzc2gtc2VydmVyLW9wZW5zc2giXG4nCi0gICAgICAgIGZvciBpbml0X21hbmFnZXIgaW4gKCJzeXN2aW5pdCIsICJzeXN0ZW1kIik6Ci0gICAgICAgICAgICAjZm9yIHN5c3Zpbml0IG5vIGV4dHJhIGNvbmZpZ3VyYXRpb24gaXMgbmVlZGVkLAotICAgICAgICAgICAgaWYgKGluaXRfbWFuYWdlciBpcyAic3lzdGVtZCIpOgotICAgICAgICAgICAgICAgIGZlYXR1cmVzICs9ICdESVNUUk9fRkVBVFVSRVNfYXBwZW5kID0gIiBzeXN0ZW1kIlxuJwotICAgICAgICAgICAgICAgIGZlYXR1cmVzICs9ICdWSVJUVUFMLVJVTlRJTUVfaW5pdF9tYW5hZ2VyID0gInN5c3RlbWQiXG4nCi0gICAgICAgICAgICAgICAgZmVhdHVyZXMgKz0gJ0RJU1RST19GRUFUVVJFU19CQUNLRklMTF9DT05TSURFUkVEID0gInN5c3Zpbml0IlxuJwotICAgICAgICAgICAgICAgIGZlYXR1cmVzICs9ICdWSVJUVUFMLVJVTlRJTUVfaW5pdHNjcmlwdHMgPSAiIlxuJwotICAgICAgICAgICAgZm9yIGNsYXNzZXMgaW4gKCJwYWNrYWdlX3JwbSBwYWNrYWdlX2RlYiBwYWNrYWdlX2lwayIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhY2thZ2VfZGViIHBhY2thZ2VfcnBtIHBhY2thZ2VfaXBrIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFja2FnZV9pcGsgcGFja2FnZV9kZWIgcGFja2FnZV9ycG0iKToKLSAgICAgICAgICAgICAgICBmZWF0dXJlcyArPSAnUEFDS0FHRV9DTEFTU0VTID0gIiVzIlxuJyAlIGNsYXNzZXMKLSAgICAgICAgICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKLQotICAgICAgICAgICAgICAgICNTdGVwIDIKLSAgICAgICAgICAgICAgICBiaXRiYWtlKCdjb3JlLWltYWdlLW1pbmltYWwnKQotCi0gICAgICAgICAgICAgICAgI1N0ZXAgMwotICAgICAgICAgICAgICAgIGZpbGVfcm9vdGZzX2NyZWF0ZWQgPSBvcy5wYXRoLmpvaW4oZ2V0X2JiX3ZhcignSU1BR0VfUk9PVEZTJywiY29yZS1pbWFnZS1taW5pbWFsIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlX3Jvb3Rmc19uYW1lKQotICAgICAgICAgICAgICAgIGZvdW5kID0gb3MucGF0aC5pc2ZpbGUoZmlsZV9yb290ZnNfY3JlYXRlZCkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZm91bmQsICJGaWxlICVzIHdhcyBub3QgY3JlYXRlZCBhdCByb290ZnMgdGltZSBieSAlcyIgJSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWxlX3Jvb3Rmc19uYW1lLCByb290ZnNfcGtnKSkKLQotICAgICAgICAgICAgICAgICNTdGVwIDQKLSAgICAgICAgICAgICAgICB0ZXN0Y29tbWFuZCA9ICdscyAvZXRjLycrZmlsZWJvb3RfbmFtZQotICAgICAgICAgICAgICAgIHdpdGggcnVucWVtdSgnY29yZS1pbWFnZS1taW5pbWFsJykgYXMgcWVtdToKLSAgICAgICAgICAgICAgICAgICAgc3NoYXJncyA9ICctbyBVc2VyS25vd25Ib3N0c0ZpbGU9L2Rldi9udWxsIC1vIFN0cmljdEhvc3RLZXlDaGVja2luZz1ubycKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdzc2ggJXMgcm9vdEAlcyAlcycgJSAoc3NoYXJncywgcWVtdS5pcCwgdGVzdGNvbW1hbmQpKQotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5zdGF0dXMsIDAsICdGaWxlICVzIHdhcyBub3QgY3JlYXRlZCBhdCBmaXJ0cyBib290JyUgZmlsZWJvb3RfbmFtZSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L3NpZ25pbmcucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9zaWduaW5nLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYWMzZDFmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L3NpZ25pbmcucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxODMgKzAsMCBAQAotZnJvbSBvZXFhLnNlbGZ0ZXN0LmJhc2UgaW1wb3J0IG9lU2VsZlRlc3QKLWZyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kLCBiaXRiYWtlLCBnZXRfYmJfdmFyLCBnZXRfYmJfdmFycwotaW1wb3J0IG9zCi1pbXBvcnQgZ2xvYgotaW1wb3J0IHJlCi1pbXBvcnQgc2h1dGlsCi1pbXBvcnQgdGVtcGZpbGUKLWZyb20gb2VxYS51dGlscy5kZWNvcmF0b3JzIGltcG9ydCB0ZXN0Y2FzZQotZnJvbSBvZXFhLnV0aWxzLmZ0b29scyBpbXBvcnQgd3JpdGVfZmlsZQotCi0KLWNsYXNzIFNpZ25pbmcob2VTZWxmVGVzdCk6Ci0KLSAgICBncGdfZGlyID0gIiIKLSAgICBwdWJfa2V5X3BhdGggPSAiIgotICAgIHNlY3JldF9rZXlfcGF0aCA9ICIiCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgotICAgICAgICAjIENoZWNrIHRoYXQgd2UgY2FuIGZpbmQgdGhlIGdwZyBiaW5hcnkgYW5kIGZhaWwgZWFybHkgaWYgd2UgY2FuJ3QKLSAgICAgICAgaWYgbm90IHNodXRpbC53aGljaCgiZ3BnIik6Ci0gICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigiVGhpcyB0ZXN0IG5lZWRzIEdudVBHIikKLQotICAgICAgICBjbHMuZ3BnX2hvbWVfZGlyID0gdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KHByZWZpeD0ib2VxYS1zaWduaW5nLSIpCi0gICAgICAgIGNscy5ncGdfZGlyID0gY2xzLmdwZ19ob21lX2Rpci5uYW1lCi0KLSAgICAgICAgY2xzLnB1Yl9rZXlfcGF0aCA9IG9zLnBhdGguam9pbihjbHMudGVzdGxheWVyX3BhdGgsICdmaWxlcycsICdzaWduaW5nJywgImtleS5wdWIiKQotICAgICAgICBjbHMuc2VjcmV0X2tleV9wYXRoID0gb3MucGF0aC5qb2luKGNscy50ZXN0bGF5ZXJfcGF0aCwgJ2ZpbGVzJywgJ3NpZ25pbmcnLCAia2V5LnNlY3JldCIpCi0KLSAgICAgICAgcnVuQ21kKCdncGcgLS1iYXRjaCAtLWhvbWVkaXIgJXMgLS1pbXBvcnQgJXMgJXMnICUgKGNscy5ncGdfZGlyLCBjbHMucHViX2tleV9wYXRoLCBjbHMuc2VjcmV0X2tleV9wYXRoKSkKLQotICAgIEB0ZXN0Y2FzZSgxMzYyKQotICAgIGRlZiB0ZXN0X3NpZ25pbmdfcGFja2FnZXMoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBTdW1tYXJ5OiAgICAgVGVzdCB0aGF0IHBhY2thZ2VzIGNhbiBiZSBzaWduZWQgaW4gdGhlIHBhY2thZ2UgZmVlZAotICAgICAgICBFeHBlY3RlZDogICAgUGFja2FnZSBzaG91bGQgYmUgc2lnbmVkIHdpdGggdGhlIGNvcnJlY3Qga2V5Ci0gICAgICAgIEV4cGVjdGVkOiAgICBJbWFnZXMgY2FuIGJlIGNyZWF0ZWQgZnJvbSBzaWduZWQgcGFja2FnZXMKLSAgICAgICAgUHJvZHVjdDogICAgIG9lLWNvcmUKLSAgICAgICAgQXV0aG9yOiAgICAgIERhbmllbCBJc3RyYXRlIDxkYW5pZWwuYWxleGFuZHJ1eC5pc3RyYXRlQGludGVsLmNvbT4KLSAgICAgICAgQXV0aG9yOiAgICAgIEFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+Ci0gICAgICAgIEF1dG9tYXRlZEJ5OiBEYW5pZWwgSXN0cmF0ZSA8ZGFuaWVsLmFsZXhhbmRydXguaXN0cmF0ZUBpbnRlbC5jb20+Ci0gICAgICAgICIiIgotICAgICAgICBpbXBvcnQgb2UucGFja2FnZWRhdGEKLQotICAgICAgICBwYWNrYWdlX2NsYXNzZXMgPSBnZXRfYmJfdmFyKCdQQUNLQUdFX0NMQVNTRVMnKQotICAgICAgICBpZiAncGFja2FnZV9ycG0nIG5vdCBpbiBwYWNrYWdlX2NsYXNzZXM6Ci0gICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdUaGlzIHRlc3QgcmVxdWlyZXMgUlBNIFBhY2thZ2luZy4nKQotCi0gICAgICAgIHRlc3RfcmVjaXBlID0gJ2VkJwotCi0gICAgICAgIGZlYXR1cmUgPSAnSU5IRVJJVCArPSAic2lnbl9ycG0iXG4nCi0gICAgICAgIGZlYXR1cmUgKz0gJ1JQTV9HUEdfUEFTU1BIUkFTRSA9ICJ0ZXN0MTIzIlxuJwotICAgICAgICBmZWF0dXJlICs9ICdSUE1fR1BHX05BTUUgPSAidGVzdHVzZXIiXG4nCi0gICAgICAgIGZlYXR1cmUgKz0gJ0dQR19QQVRIID0gIiVzIlxuJyAlIHNlbGYuZ3BnX2RpcgotCi0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmUpCi0KLSAgICAgICAgYml0YmFrZSgnLWMgY2xlYW4gJXMnICUgdGVzdF9yZWNpcGUpCi0gICAgICAgIGJpdGJha2UoJy1mIC1jIHBhY2thZ2Vfd3JpdGVfcnBtICVzJyAlIHRlc3RfcmVjaXBlKQotCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UgLWMgY2xlYW4gJXMnICUgdGVzdF9yZWNpcGUpCi0KLSAgICAgICAgbmVlZGVkX3ZhcnMgPSBbJ1BLR0RBVEFfRElSJywgJ0RFUExPWV9ESVJfUlBNJywgJ1BBQ0tBR0VfQVJDSCcsICdTVEFHSU5HX0JJTkRJUl9OQVRJVkUnXQotICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMobmVlZGVkX3ZhcnMsIHRlc3RfcmVjaXBlKQotICAgICAgICBwa2dkYXRhZGlyID0gYmJfdmFyc1snUEtHREFUQV9ESVInXQotICAgICAgICBwa2dkYXRhID0gb2UucGFja2FnZWRhdGEucmVhZF9wa2dkYXRhZmlsZShwa2dkYXRhZGlyICsgIi9ydW50aW1lL2VkIikKLSAgICAgICAgaWYgJ1BLR0UnIGluIHBrZ2RhdGE6Ci0gICAgICAgICAgICBwZiA9IHBrZ2RhdGFbJ1BOJ10gKyAiLSIgKyBwa2dkYXRhWydQS0dFJ10gKyBwa2dkYXRhWydQS0dWJ10gKyAnLScgKyBwa2dkYXRhWydQS0dSJ10KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHBmID0gcGtnZGF0YVsnUE4nXSArICItIiArIHBrZ2RhdGFbJ1BLR1YnXSArICctJyArIHBrZ2RhdGFbJ1BLR1InXQotICAgICAgICBkZXBsb3lfZGlyX3JwbSA9IGJiX3ZhcnNbJ0RFUExPWV9ESVJfUlBNJ10KLSAgICAgICAgcGFja2FnZV9hcmNoID0gYmJfdmFyc1snUEFDS0FHRV9BUkNIJ10ucmVwbGFjZSgnLScsICdfJykKLSAgICAgICAgc3RhZ2luZ19iaW5kaXJfbmF0aXZlID0gYmJfdmFyc1snU1RBR0lOR19CSU5ESVJfTkFUSVZFJ10KLQotICAgICAgICBwa2dfZGVwbG95ID0gb3MucGF0aC5qb2luKGRlcGxveV9kaXJfcnBtLCBwYWNrYWdlX2FyY2gsICcuJy5qb2luKChwZiwgcGFja2FnZV9hcmNoLCAncnBtJykpKQotCi0gICAgICAgICMgVXNlIGEgdGVtcG9yYXJ5IHJwbWRiCi0gICAgICAgIHJwbWRiID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J29lcWEtcnBtZGInKQotCi0gICAgICAgIHJ1bkNtZCgnJXMvcnBta2V5cyAtLWRlZmluZSAiX2RicGF0aCAlcyIgLS1pbXBvcnQgJXMnICUKLSAgICAgICAgICAgICAgIChzdGFnaW5nX2JpbmRpcl9uYXRpdmUsIHJwbWRiLCBzZWxmLnB1Yl9rZXlfcGF0aCkpCi0KLSAgICAgICAgcmV0ID0gcnVuQ21kKCclcy9ycG1rZXlzIC0tZGVmaW5lICJfZGJwYXRoICVzIiAtLWNoZWNrc2lnICVzJyAlCi0gICAgICAgICAgICAgICAgICAgICAoc3RhZ2luZ19iaW5kaXJfbmF0aXZlLCBycG1kYiwgcGtnX2RlcGxveSkpCi0gICAgICAgICMgdG1wL2RlcGxveS9ycG0vaTU4Ni9lZC0xLjktcjAuaTU4Ni5ycG06IHJzYSBzaGExIG1kNSBPSwotICAgICAgICBzZWxmLmFzc2VydEluKCdyc2Egc2hhMSAobWQ1KSBwZ3AgbWQ1IE9LJywgcmV0Lm91dHB1dCwgJ1BhY2thZ2Ugc2lnbmVkIGluY29ycmVjdGx5LicpCi0gICAgICAgIHNodXRpbC5ybXRyZWUocnBtZGIpCi0KLSAgICAgICAgI0NoZWNrIHRoYXQgYW4gaW1hZ2UgY2FuIGJlIGJ1aWx0IGZyb20gc2lnbmVkIHBhY2thZ2VzCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ2JpdGJha2UgLWMgY2xlYW4gY29yZS1pbWFnZS1taW5pbWFsJykKLSAgICAgICAgYml0YmFrZSgnLWMgY2xlYW4gY29yZS1pbWFnZS1taW5pbWFsJykKLSAgICAgICAgYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsJykKLQotCi0gICAgQHRlc3RjYXNlKDEzODIpCi0gICAgZGVmIHRlc3Rfc2lnbmluZ19zc3RhdGVfYXJjaGl2ZShzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFN1bW1hcnk6ICAgICBUZXN0IHRoYXQgc3N0YXRlIGFyY2hpdmVzIGNhbiBiZSBzaWduZWQKLSAgICAgICAgRXhwZWN0ZWQ6ICAgIFBhY2thZ2Ugc2hvdWxkIGJlIHNpZ25lZCB3aXRoIHRoZSBjb3JyZWN0IGtleQotICAgICAgICBQcm9kdWN0OiAgICAgb2UtY29yZQotICAgICAgICBBdXRob3I6ICAgICAgRGFuaWVsIElzdHJhdGUgPGRhbmllbC5hbGV4YW5kcnV4LmlzdHJhdGVAaW50ZWwuY29tPgotICAgICAgICBBdXRvbWF0ZWRCeTogRGFuaWVsIElzdHJhdGUgPGRhbmllbC5hbGV4YW5kcnV4LmlzdHJhdGVAaW50ZWwuY29tPgotICAgICAgICAiIiIKLQotICAgICAgICB0ZXN0X3JlY2lwZSA9ICdlZCcKLQotICAgICAgICBidWlsZGRpciA9IG9zLmVudmlyb24uZ2V0KCdCVUlMRERJUicpCi0gICAgICAgIHNzdGF0ZWRpciA9IG9zLnBhdGguam9pbihidWlsZGRpciwgJ3Rlc3Qtc3N0YXRlJykKLQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdiaXRiYWtlIC1jIGNsZWFuICVzJyAlIHRlc3RfcmVjaXBlKQotICAgICAgICBzZWxmLmFkZF9jb21tYW5kX3RvX3RlYXJEb3duKCdybSAtcmYgJXMnICUgc3N0YXRlZGlyKQotCi0gICAgICAgIGZlYXR1cmUgPSAnU1NUQVRFX1NJR19LRVkgPz0gInRlc3R1c2VyIlxuJwotICAgICAgICBmZWF0dXJlICs9ICdTU1RBVEVfU0lHX1BBU1NQSFJBU0UgPz0gInRlc3QxMjMiXG4nCi0gICAgICAgIGZlYXR1cmUgKz0gJ1NTVEFURV9WRVJJRllfU0lHID89ICIxIlxuJwotICAgICAgICBmZWF0dXJlICs9ICdHUEdfUEFUSCA9ICIlcyJcbicgJSBzZWxmLmdwZ19kaXIKLSAgICAgICAgZmVhdHVyZSArPSAnU1NUQVRFX0RJUiA9ICIlcyJcbicgJSBzc3RhdGVkaXIKLSAgICAgICAgIyBBbnkgbWlycm9yIG1pZ2h0IGhhdmUgcGFydGlhbCBzc3RhdGUgd2l0aG91dCAuc2lnIGZpbGVzLCB0cmlnZ2VyaW5nIGZhaWx1cmVzCi0gICAgICAgIGZlYXR1cmUgKz0gJ1NTVEFURV9NSVJST1JTX2ZvcmNldmFyaWFibGUgPSAiIlxuJwotCi0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmUpCi0KLSAgICAgICAgYml0YmFrZSgnLWMgY2xlYW4gJXMnICUgdGVzdF9yZWNpcGUpCi0gICAgICAgIGJpdGJha2UodGVzdF9yZWNpcGUpCi0KLSAgICAgICAgcmVjaXBlX3NpZyA9IGdsb2IuZ2xvYihzc3RhdGVkaXIgKyAnLyovKjplZDoqX3BhY2thZ2UudGd6LnNpZycpCi0gICAgICAgIHJlY2lwZV90Z3ogPSBnbG9iLmdsb2Ioc3N0YXRlZGlyICsgJy8qLyo6ZWQ6Kl9wYWNrYWdlLnRneicpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVjaXBlX3NpZyksIDEsICdGYWlsZWQgdG8gZmluZCAuc2lnIGZpbGUuJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVjaXBlX3RneiksIDEsICdGYWlsZWQgdG8gZmluZCAudGd6IGZpbGUuJykKLQotICAgICAgICByZXQgPSBydW5DbWQoJ2dwZyAtLWhvbWVkaXIgJXMgLS12ZXJpZnkgJXMgJXMnICUgKHNlbGYuZ3BnX2RpciwgcmVjaXBlX3NpZ1swXSwgcmVjaXBlX3RnelswXSkpCi0gICAgICAgICMgZ3BnOiBTaWduYXR1cmUgbWFkZSBUaHUgMjIgT2N0IDIwMTUgMDE6NDU6MDkgUE0gRUVTVCB1c2luZyBSU0Ega2V5IElEIDYxRUVGQjMwCi0gICAgICAgICMgZ3BnOiBHb29kIHNpZ25hdHVyZSBmcm9tICJ0ZXN0dXNlciAobm9jb21tZW50KSA8dGVzdHVzZXJAZW1haWwuY29tPiIKLSAgICAgICAgc2VsZi5hc3NlcnRJbignZ3BnOiBHb29kIHNpZ25hdHVyZSBmcm9tJywgcmV0Lm91dHB1dCwgJ1BhY2thZ2Ugc2lnbmVkIGluY29ycmVjdGx5LicpCi0KLQotY2xhc3MgTG9ja2VkU2lnbmF0dXJlcyhvZVNlbGZUZXN0KToKLQotICAgIEB0ZXN0Y2FzZSgxNDIwKQotICAgIGRlZiB0ZXN0X2xvY2tlZF9zaWduYXR1cmVzKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgU3VtbWFyeTogICAgIFRlc3QgbG9ja2VkIHNpZ25hdHVyZSBtZWNoYW5pc20KLSAgICAgICAgRXhwZWN0ZWQ6ICAgIExvY2tlZCBzaWduYXR1cmVzIHdpbGwgcHJldmVudCB0YXNrIHRvIHJ1bgotICAgICAgICBQcm9kdWN0OiAgICAgb2UtY29yZQotICAgICAgICBBdXRob3I6ICAgICAgRGFuaWVsIElzdHJhdGUgPGRhbmllbC5hbGV4YW5kcnV4LmlzdHJhdGVAaW50ZWwuY29tPgotICAgICAgICBBdXRvbWF0ZWRCeTogRGFuaWVsIElzdHJhdGUgPGRhbmllbC5hbGV4YW5kcnV4LmlzdHJhdGVAaW50ZWwuY29tPgotICAgICAgICAiIiIKLQotICAgICAgICB0ZXN0X3JlY2lwZSA9ICdlZCcKLSAgICAgICAgbG9ja2VkX3NpZ3NfZmlsZSA9ICdsb2NrZWQtc2lncy5pbmMnCi0KLSAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bigncm0gLWYgJXMnICUgb3MucGF0aC5qb2luKHNlbGYuYnVpbGRkaXIsIGxvY2tlZF9zaWdzX2ZpbGUpKQotCi0gICAgICAgIGJpdGJha2UodGVzdF9yZWNpcGUpCi0gICAgICAgICMgR2VuZXJhdGUgbG9ja2VkIHNpZ3MgaW5jbHVkZSBmaWxlCi0gICAgICAgIGJpdGJha2UoJy1TIG5vbmUgJXMnICUgdGVzdF9yZWNpcGUpCi0KLSAgICAgICAgZmVhdHVyZSA9ICdyZXF1aXJlICVzXG4nICUgbG9ja2VkX3NpZ3NfZmlsZQotICAgICAgICBmZWF0dXJlICs9ICdTSUdHRU5fTE9DS0VEU0lHU19UQVNLU0lHX0NIRUNLID0gIndhcm4iXG4nCi0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmUpCi0KLSAgICAgICAgIyBCdWlsZCBhIGxvY2tlZCByZWNpcGUKLSAgICAgICAgYml0YmFrZSh0ZXN0X3JlY2lwZSkKLQotICAgICAgICAjIE1ha2UgYSBjaGFuZ2UgdGhhdCBzaG91bGQgY2F1c2UgdGhlIGxvY2tlZCB0YXNrIHNpZ25hdHVyZSB0byBjaGFuZ2UKLSAgICAgICAgcmVjaXBlX2FwcGVuZF9maWxlID0gdGVzdF9yZWNpcGUgKyAnXycgKyBnZXRfYmJfdmFyKCdQVicsIHRlc3RfcmVjaXBlKSArICcuYmJhcHBlbmQnCi0gICAgICAgIHJlY2lwZV9hcHBlbmRfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLnRlc3RsYXllcl9wYXRoLCAncmVjaXBlcy10ZXN0JywgdGVzdF9yZWNpcGUsIHJlY2lwZV9hcHBlbmRfZmlsZSkKLSAgICAgICAgZmVhdHVyZSA9ICdTVU1NQVJZICs9ICJ0ZXN0IGxvY2tlZCBzaWduYXR1cmUiXG4nCi0KLSAgICAgICAgb3MubWtkaXIob3MucGF0aC5qb2luKHNlbGYudGVzdGxheWVyX3BhdGgsICdyZWNpcGVzLXRlc3QnLCB0ZXN0X3JlY2lwZSkpCi0gICAgICAgIHdyaXRlX2ZpbGUocmVjaXBlX2FwcGVuZF9wYXRoLCBmZWF0dXJlKQotCi0gICAgICAgIHNlbGYuYWRkX2NvbW1hbmRfdG9fdGVhckRvd24oJ3JtIC1yZiAlcycgJSBvcy5wYXRoLmpvaW4oc2VsZi50ZXN0bGF5ZXJfcGF0aCwgJ3JlY2lwZXMtdGVzdCcsIHRlc3RfcmVjaXBlKSkKLQotICAgICAgICAjIEJ1aWxkIHRoZSByZWNpcGUgYWdhaW4KLSAgICAgICAgcmV0ID0gYml0YmFrZSh0ZXN0X3JlY2lwZSkKLQotICAgICAgICAjIFZlcmlmeSB5b3UgZ2V0IHRoZSB3YXJuaW5nIGFuZCB0aGF0IHRoZSByZWFsIHRhc2sgKmlzbid0KiBydW4gKGkuZS4gdGhlIGxvY2tlZCBzaWduYXR1cmUgaGFzIHdvcmtlZCkKLSAgICAgICAgcGF0dCA9IHInV0FSTklORzogVGhlICVzOmRvX3BhY2thZ2Ugc2lnIGlzIGNvbXB1dGVkIHRvIGJlIFxTKywgYnV0IHRoZSBzaWcgaXMgbG9ja2VkIHRvIFxTKyBpbiBTSUdHRU5fTE9DS0VEU0lHU1xTKycgJSB0ZXN0X3JlY2lwZQotICAgICAgICBmb3VuZF93YXJuID0gcmUuc2VhcmNoKHBhdHQsIHJldC5vdXRwdXQpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoZm91bmRfd2FybiwgIkRpZG4ndCBmaW5kIHRoZSBleHBlY3RlZCB3YXJuaW5nIG1lc3NhZ2UuIE91dHB1dDogJXMiICUgcmV0Lm91dHB1dCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L3NzdGF0ZS5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L3NzdGF0ZS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjU0YmM0MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9zc3RhdGUucHkKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi1pbXBvcnQgZGF0ZXRpbWUKLWltcG9ydCB1bml0dGVzdAotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLWltcG9ydCBzaHV0aWwKLQotaW1wb3J0IG9lcWEudXRpbHMuZnRvb2xzIGFzIGZ0b29scwotZnJvbSBvZXFhLnNlbGZ0ZXN0LmJhc2UgaW1wb3J0IG9lU2VsZlRlc3QKLWZyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kLCBiaXRiYWtlLCBnZXRfYmJfdmFycywgZ2V0X3Rlc3RfbGF5ZXIKLQotCi1jbGFzcyBTU3RhdGVCYXNlKG9lU2VsZlRlc3QpOgotCi0gICAgZGVmIHNldFVwTG9jYWwoc2VsZik6Ci0gICAgICAgIHNlbGYudGVtcF9zc3RhdGVfbG9jYXRpb24gPSBOb25lCi0gICAgICAgIG5lZWRlZF92YXJzID0gWydTU1RBVEVfRElSJywgJ05BVElWRUxTQlNUUklORycsICdUQ0xJQkMnLCAnVFVORV9BUkNIJywKLSAgICAgICAgICAgICAgICAgICAgICAgJ1RPUERJUicsICdUQVJHRVRfVkVORE9SJywgJ1RBUkdFVF9PUyddCi0gICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhuZWVkZWRfdmFycykKLSAgICAgICAgc2VsZi5zc3RhdGVfcGF0aCA9IGJiX3ZhcnNbJ1NTVEFURV9ESVInXQotICAgICAgICBzZWxmLmhvc3RkaXN0cm8gPSBiYl92YXJzWydOQVRJVkVMU0JTVFJJTkcnXQotICAgICAgICBzZWxmLnRjbGliYyA9IGJiX3ZhcnNbJ1RDTElCQyddCi0gICAgICAgIHNlbGYudHVuZV9hcmNoID0gYmJfdmFyc1snVFVORV9BUkNIJ10KLSAgICAgICAgc2VsZi50b3BkaXIgPSBiYl92YXJzWydUT1BESVInXQotICAgICAgICBzZWxmLnRhcmdldF92ZW5kb3IgPSBiYl92YXJzWydUQVJHRVRfVkVORE9SJ10KLSAgICAgICAgc2VsZi50YXJnZXRfb3MgPSBiYl92YXJzWydUQVJHRVRfT1MnXQotICAgICAgICBzZWxmLmRpc3Ryb19zcGVjaWZpY19zc3RhdGUgPSBvcy5wYXRoLmpvaW4oc2VsZi5zc3RhdGVfcGF0aCwgc2VsZi5ob3N0ZGlzdHJvKQotCi0gICAgIyBDcmVhdGVzIGEgc3BlY2lhbCBzc3RhdGUgY29uZmlndXJhdGlvbiB3aXRoIHRoZSBvcHRpb24gdG8gYWRkIHNzdGF0ZSBtaXJyb3JzCi0gICAgZGVmIGNvbmZpZ19zc3RhdGUoc2VsZiwgdGVtcF9zc3RhdGVfbG9jYXRpb249RmFsc2UsIGFkZF9sb2NhbF9taXJyb3JzPVtdKToKLSAgICAgICAgc2VsZi50ZW1wX3NzdGF0ZV9sb2NhdGlvbiA9IHRlbXBfc3N0YXRlX2xvY2F0aW9uCi0KLSAgICAgICAgaWYgc2VsZi50ZW1wX3NzdGF0ZV9sb2NhdGlvbjoKLSAgICAgICAgICAgIHRlbXBfc3N0YXRlX3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgInRlbXBfc3N0YXRlXyVzIiAlIGRhdGV0aW1lLmRhdGV0aW1lLm5vdygpLnN0cmZ0aW1lKCclWSVtJWQlSCVNJVMnKSkKLSAgICAgICAgICAgIGNvbmZpZ190ZW1wX3NzdGF0ZSA9ICJTU1RBVEVfRElSID0gXCIlc1wiIiAlIHRlbXBfc3N0YXRlX3BhdGgKLSAgICAgICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZyhjb25maWdfdGVtcF9zc3RhdGUpCi0gICAgICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHRlbXBfc3N0YXRlX3BhdGgpCi0gICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ1NTVEFURV9ESVInLCAnTkFUSVZFTFNCU1RSSU5HJ10pCi0gICAgICAgIHNlbGYuc3N0YXRlX3BhdGggPSBiYl92YXJzWydTU1RBVEVfRElSJ10KLSAgICAgICAgc2VsZi5ob3N0ZGlzdHJvID0gYmJfdmFyc1snTkFUSVZFTFNCU1RSSU5HJ10KLSAgICAgICAgc2VsZi5kaXN0cm9fc3BlY2lmaWNfc3N0YXRlID0gb3MucGF0aC5qb2luKHNlbGYuc3N0YXRlX3BhdGgsIHNlbGYuaG9zdGRpc3RybykKLQotICAgICAgICBpZiBhZGRfbG9jYWxfbWlycm9yczoKLSAgICAgICAgICAgIGNvbmZpZ19zZXRfc3N0YXRlX2lmX25vdF9zZXQgPSAnU1NUQVRFX01JUlJPUlMgPz0gIiInCi0gICAgICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoY29uZmlnX3NldF9zc3RhdGVfaWZfbm90X3NldCkKLSAgICAgICAgICAgIGZvciBsb2NhbF9taXJyb3IgaW4gYWRkX2xvY2FsX21pcnJvcnM6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmpvaW4obG9jYWxfbWlycm9yKSA9PSBvcy5wYXRoLmpvaW4oc2VsZi5zc3RhdGVfcGF0aCksIG1zZz0nQ2Fubm90IGFkZCB0aGUgY3VycmVudCBzc3RhdGUgcGF0aCBhcyBhIHNzdGF0ZSBtaXJyb3InKQotICAgICAgICAgICAgICAgIGNvbmZpZ19zc3RhdGVfbWlycm9yID0gIlNTVEFURV9NSVJST1JTICs9IFwiZmlsZTovLy4qIGZpbGU6Ly8vJXMvUEFUSFwiIiAlIGxvY2FsX21pcnJvcgotICAgICAgICAgICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZyhjb25maWdfc3N0YXRlX21pcnJvcikKLQotICAgICMgUmV0dXJucyBhIGxpc3QgY29udGFpbmluZyBzc3RhdGUgZmlsZXMKLSAgICBkZWYgc2VhcmNoX3NzdGF0ZShzZWxmLCBmaWxlbmFtZV9yZWdleCwgZGlzdHJvX3NwZWNpZmljPVRydWUsIGRpc3Ryb19ub25zcGVjaWZpYz1UcnVlKToKLSAgICAgICAgcmVzdWx0ID0gW10KLSAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsoc2VsZi5zc3RhdGVfcGF0aCk6Ci0gICAgICAgICAgICBpZiBkaXN0cm9fc3BlY2lmaWMgYW5kIHJlLnNlYXJjaCgiJXMvW2EtejAtOV17Mn0kIiAlIHNlbGYuaG9zdGRpc3Rybywgcm9vdCk6Ci0gICAgICAgICAgICAgICAgZm9yIGYgaW4gZmlsZXM6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHJlLnNlYXJjaChmaWxlbmFtZV9yZWdleCwgZik6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGYpCi0gICAgICAgICAgICBpZiBkaXN0cm9fbm9uc3BlY2lmaWMgYW5kIHJlLnNlYXJjaCgiJXMvW2EtejAtOV17Mn0kIiAlIHNlbGYuc3N0YXRlX3BhdGgsIHJvb3QpOgotICAgICAgICAgICAgICAgIGZvciBmIGluIGZpbGVzOgotICAgICAgICAgICAgICAgICAgICBpZiByZS5zZWFyY2goZmlsZW5hbWVfcmVnZXgsIGYpOgotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChmKQotICAgICAgICByZXR1cm4gcmVzdWx0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9zc3RhdGV0ZXN0cy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L3NzdGF0ZXRlc3RzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMzVkZGZmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L3NzdGF0ZXRlc3RzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDgzICswLDAgQEAKLWltcG9ydCBkYXRldGltZQotaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgb3MKLWltcG9ydCByZQotaW1wb3J0IHNodXRpbAotaW1wb3J0IGdsb2IKLWltcG9ydCBzdWJwcm9jZXNzCi0KLWltcG9ydCBvZXFhLnV0aWxzLmZ0b29scyBhcyBmdG9vbHMKLWZyb20gb2VxYS5zZWxmdGVzdC5iYXNlIGltcG9ydCBvZVNlbGZUZXN0Ci1mcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZCwgYml0YmFrZSwgZ2V0X2JiX3ZhciwgZ2V0X3Rlc3RfbGF5ZXIKLWZyb20gb2VxYS5zZWxmdGVzdC5zc3RhdGUgaW1wb3J0IFNTdGF0ZUJhc2UKLWZyb20gb2VxYS51dGlscy5kZWNvcmF0b3JzIGltcG9ydCB0ZXN0Y2FzZQotCi1jbGFzcyBTU3RhdGVUZXN0cyhTU3RhdGVCYXNlKToKLQotICAgICMgVGVzdCBzc3RhdGUgZmlsZXMgY3JlYXRpb24gYW5kIHRoZWlyIGxvY2F0aW9uCi0gICAgZGVmIHJ1bl90ZXN0X3NzdGF0ZV9jcmVhdGlvbihzZWxmLCB0YXJnZXRzLCBkaXN0cm9fc3BlY2lmaWM9VHJ1ZSwgZGlzdHJvX25vbnNwZWNpZmljPVRydWUsIHRlbXBfc3N0YXRlX2xvY2F0aW9uPVRydWUsIHNob3VsZF9wYXNzPVRydWUpOgotICAgICAgICBzZWxmLmNvbmZpZ19zc3RhdGUodGVtcF9zc3RhdGVfbG9jYXRpb24sIFtzZWxmLnNzdGF0ZV9wYXRoXSkKLQotICAgICAgICBpZiAgc2VsZi50ZW1wX3NzdGF0ZV9sb2NhdGlvbjoKLSAgICAgICAgICAgIGJpdGJha2UoWyctY2NsZWFuJ10gKyB0YXJnZXRzKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYml0YmFrZShbJy1jY2xlYW5zc3RhdGUnXSArIHRhcmdldHMpCi0KLSAgICAgICAgYml0YmFrZSh0YXJnZXRzKQotICAgICAgICBmaWxlX3RyYWNrZXIgPSBbXQotICAgICAgICByZXN1bHRzID0gc2VsZi5zZWFyY2hfc3N0YXRlKCd8Jy5qb2luKG1hcChzdHIsIHRhcmdldHMpKSwgZGlzdHJvX3NwZWNpZmljLCBkaXN0cm9fbm9uc3BlY2lmaWMpCi0gICAgICAgIGlmIGRpc3Ryb19ub25zcGVjaWZpYzoKLSAgICAgICAgICAgIGZvciByIGluIHJlc3VsdHM6Ci0gICAgICAgICAgICAgICAgaWYgci5lbmRzd2l0aCgoIl9wb3B1bGF0ZV9saWMudGd6IiwgIl9wb3B1bGF0ZV9saWMudGd6LnNpZ2luZm8iLCAiX2ZldGNoLnRnei5zaWdpbmZvIiwgIl91bnBhY2sudGd6LnNpZ2luZm8iLCAiX3BhdGNoLnRnei5zaWdpbmZvIikpOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGZpbGVfdHJhY2tlci5hcHBlbmQocikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGZpbGVfdHJhY2tlciA9IHJlc3VsdHMKLQotICAgICAgICBpZiBzaG91bGRfcGFzczoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmaWxlX3RyYWNrZXIgLCBtc2c9IkNvdWxkIG5vdCBmaW5kIHNzdGF0ZSBmaWxlcyBmb3I6ICVzIiAlICcsICcuam9pbihtYXAoc3RyLCB0YXJnZXRzKSkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IGZpbGVfdHJhY2tlciAsIG1zZz0iRm91bmQgc3N0YXRlIGZpbGVzIGluIHRoZSB3cm9uZyBwbGFjZSBmb3I6ICVzIChmb3VuZCAlcykiICUgKCcsICcuam9pbihtYXAoc3RyLCB0YXJnZXRzKSksIHN0cihmaWxlX3RyYWNrZXIpKSkKLQotICAgIEB0ZXN0Y2FzZSg5NzUpCi0gICAgZGVmIHRlc3Rfc3N0YXRlX2NyZWF0aW9uX2Rpc3Ryb19zcGVjaWZpY19wYXNzKHNlbGYpOgotICAgICAgICBzZWxmLnJ1bl90ZXN0X3NzdGF0ZV9jcmVhdGlvbihbJ2JpbnV0aWxzLWNyb3NzLScrIHNlbGYudHVuZV9hcmNoLCAnYmludXRpbHMtbmF0aXZlJ10sIGRpc3Ryb19zcGVjaWZpYz1UcnVlLCBkaXN0cm9fbm9uc3BlY2lmaWM9RmFsc2UsIHRlbXBfc3N0YXRlX2xvY2F0aW9uPVRydWUpCi0KLSAgICBAdGVzdGNhc2UoMTM3NCkKLSAgICBkZWYgdGVzdF9zc3RhdGVfY3JlYXRpb25fZGlzdHJvX3NwZWNpZmljX2ZhaWwoc2VsZik6Ci0gICAgICAgIHNlbGYucnVuX3Rlc3Rfc3N0YXRlX2NyZWF0aW9uKFsnYmludXRpbHMtY3Jvc3MtJysgc2VsZi50dW5lX2FyY2gsICdiaW51dGlscy1uYXRpdmUnXSwgZGlzdHJvX3NwZWNpZmljPUZhbHNlLCBkaXN0cm9fbm9uc3BlY2lmaWM9VHJ1ZSwgdGVtcF9zc3RhdGVfbG9jYXRpb249VHJ1ZSwgc2hvdWxkX3Bhc3M9RmFsc2UpCi0KLSAgICBAdGVzdGNhc2UoOTc2KQotICAgIGRlZiB0ZXN0X3NzdGF0ZV9jcmVhdGlvbl9kaXN0cm9fbm9uc3BlY2lmaWNfcGFzcyhzZWxmKToKLSAgICAgICAgc2VsZi5ydW5fdGVzdF9zc3RhdGVfY3JlYXRpb24oWydsaW51eC1saWJjLWhlYWRlcnMnXSwgZGlzdHJvX3NwZWNpZmljPUZhbHNlLCBkaXN0cm9fbm9uc3BlY2lmaWM9VHJ1ZSwgdGVtcF9zc3RhdGVfbG9jYXRpb249VHJ1ZSkKLQotICAgIEB0ZXN0Y2FzZSgxMzc1KQotICAgIGRlZiB0ZXN0X3NzdGF0ZV9jcmVhdGlvbl9kaXN0cm9fbm9uc3BlY2lmaWNfZmFpbChzZWxmKToKLSAgICAgICAgc2VsZi5ydW5fdGVzdF9zc3RhdGVfY3JlYXRpb24oWydsaW51eC1saWJjLWhlYWRlcnMnXSwgZGlzdHJvX3NwZWNpZmljPVRydWUsIGRpc3Ryb19ub25zcGVjaWZpYz1GYWxzZSwgdGVtcF9zc3RhdGVfbG9jYXRpb249VHJ1ZSwgc2hvdWxkX3Bhc3M9RmFsc2UpCi0KLSAgICAjIFRlc3QgdGhlIHNzdGF0ZSBmaWxlcyBkZWxldGlvbiBwYXJ0IG9mIHRoZSBkb19jbGVhbnNzdGF0ZSB0YXNrCi0gICAgZGVmIHJ1bl90ZXN0X2NsZWFuc3N0YXRlX3Rhc2soc2VsZiwgdGFyZ2V0cywgZGlzdHJvX3NwZWNpZmljPVRydWUsIGRpc3Ryb19ub25zcGVjaWZpYz1UcnVlLCB0ZW1wX3NzdGF0ZV9sb2NhdGlvbj1UcnVlKToKLSAgICAgICAgc2VsZi5jb25maWdfc3N0YXRlKHRlbXBfc3N0YXRlX2xvY2F0aW9uLCBbc2VsZi5zc3RhdGVfcGF0aF0pCi0KLSAgICAgICAgYml0YmFrZShbJy1jY2xlYW5zc3RhdGUnXSArIHRhcmdldHMpCi0KLSAgICAgICAgYml0YmFrZSh0YXJnZXRzKQotICAgICAgICB0Z3pfY3JlYXRlZCA9IHNlbGYuc2VhcmNoX3NzdGF0ZSgnfCcuam9pbihtYXAoc3RyLCBbcyArICcuKj9cLnRneiQnIGZvciBzIGluIHRhcmdldHNdKSksIGRpc3Ryb19zcGVjaWZpYywgZGlzdHJvX25vbnNwZWNpZmljKQotICAgICAgICBzZWxmLmFzc2VydFRydWUodGd6X2NyZWF0ZWQsIG1zZz0iQ291bGQgbm90IGZpbmQgc3N0YXRlIC50Z3ogZmlsZXMgZm9yOiAlcyAoJXMpIiAlICgnLCAnLmpvaW4obWFwKHN0ciwgdGFyZ2V0cykpLCBzdHIodGd6X2NyZWF0ZWQpKSkKLQotICAgICAgICBzaWdpbmZvX2NyZWF0ZWQgPSBzZWxmLnNlYXJjaF9zc3RhdGUoJ3wnLmpvaW4obWFwKHN0ciwgW3MgKyAnLio/XC5zaWdpbmZvJCcgZm9yIHMgaW4gdGFyZ2V0c10pKSwgZGlzdHJvX3NwZWNpZmljLCBkaXN0cm9fbm9uc3BlY2lmaWMpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzaWdpbmZvX2NyZWF0ZWQsIG1zZz0iQ291bGQgbm90IGZpbmQgc3N0YXRlIC5zaWdpbmZvIGZpbGVzIGZvcjogJXMgKCVzKSIgJSAoJywgJy5qb2luKG1hcChzdHIsIHRhcmdldHMpKSwgc3RyKHNpZ2luZm9fY3JlYXRlZCkpKQotCi0gICAgICAgIGJpdGJha2UoWyctY2NsZWFuc3N0YXRlJ10gKyB0YXJnZXRzKQotICAgICAgICB0Z3pfcmVtb3ZlZCA9IHNlbGYuc2VhcmNoX3NzdGF0ZSgnfCcuam9pbihtYXAoc3RyLCBbcyArICcuKj9cLnRneiQnIGZvciBzIGluIHRhcmdldHNdKSksIGRpc3Ryb19zcGVjaWZpYywgZGlzdHJvX25vbnNwZWNpZmljKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IHRnel9yZW1vdmVkLCBtc2c9ImRvX2NsZWFuc3N0YXRlIGRpZG4ndCByZW1vdmUgLnRneiBzc3RhdGUgZmlsZXMgZm9yOiAlcyAoJXMpIiAlICgnLCAnLmpvaW4obWFwKHN0ciwgdGFyZ2V0cykpLCBzdHIodGd6X3JlbW92ZWQpKSkKLQotICAgIEB0ZXN0Y2FzZSg5NzcpCi0gICAgZGVmIHRlc3RfY2xlYW5zc3RhdGVfdGFza19kaXN0cm9fc3BlY2lmaWNfbm9uc3BlY2lmaWMoc2VsZik6Ci0gICAgICAgIHRhcmdldHMgPSBbJ2JpbnV0aWxzLWNyb3NzLScrIHNlbGYudHVuZV9hcmNoLCAnYmludXRpbHMtbmF0aXZlJ10KLSAgICAgICAgdGFyZ2V0cy5hcHBlbmQoJ2xpbnV4LWxpYmMtaGVhZGVycycpCi0gICAgICAgIHNlbGYucnVuX3Rlc3RfY2xlYW5zc3RhdGVfdGFzayh0YXJnZXRzLCBkaXN0cm9fc3BlY2lmaWM9VHJ1ZSwgZGlzdHJvX25vbnNwZWNpZmljPVRydWUsIHRlbXBfc3N0YXRlX2xvY2F0aW9uPVRydWUpCi0KLSAgICBAdGVzdGNhc2UoMTM3NikKLSAgICBkZWYgdGVzdF9jbGVhbnNzdGF0ZV90YXNrX2Rpc3Ryb19ub25zcGVjaWZpYyhzZWxmKToKLSAgICAgICAgc2VsZi5ydW5fdGVzdF9jbGVhbnNzdGF0ZV90YXNrKFsnbGludXgtbGliYy1oZWFkZXJzJ10sIGRpc3Ryb19zcGVjaWZpYz1GYWxzZSwgZGlzdHJvX25vbnNwZWNpZmljPVRydWUsIHRlbXBfc3N0YXRlX2xvY2F0aW9uPVRydWUpCi0KLSAgICBAdGVzdGNhc2UoMTM3NykKLSAgICBkZWYgdGVzdF9jbGVhbnNzdGF0ZV90YXNrX2Rpc3Ryb19zcGVjaWZpYyhzZWxmKToKLSAgICAgICAgdGFyZ2V0cyA9IFsnYmludXRpbHMtY3Jvc3MtJysgc2VsZi50dW5lX2FyY2gsICdiaW51dGlscy1uYXRpdmUnXQotICAgICAgICB0YXJnZXRzLmFwcGVuZCgnbGludXgtbGliYy1oZWFkZXJzJykKLSAgICAgICAgc2VsZi5ydW5fdGVzdF9jbGVhbnNzdGF0ZV90YXNrKHRhcmdldHMsIGRpc3Ryb19zcGVjaWZpYz1UcnVlLCBkaXN0cm9fbm9uc3BlY2lmaWM9RmFsc2UsIHRlbXBfc3N0YXRlX2xvY2F0aW9uPVRydWUpCi0KLQotICAgICMgVGVzdCByZWJ1aWxkaW5nIG9mIGRpc3Ryby1zcGVjaWZpYyBzc3RhdGUgZmlsZXMKLSAgICBkZWYgcnVuX3Rlc3RfcmVidWlsZF9kaXN0cm9fc3BlY2lmaWNfc3N0YXRlKHNlbGYsIHRhcmdldHMsIHRlbXBfc3N0YXRlX2xvY2F0aW9uPVRydWUpOgotICAgICAgICBzZWxmLmNvbmZpZ19zc3RhdGUodGVtcF9zc3RhdGVfbG9jYXRpb24sIFtzZWxmLnNzdGF0ZV9wYXRoXSkKLQotICAgICAgICBiaXRiYWtlKFsnLWNjbGVhbnNzdGF0ZSddICsgdGFyZ2V0cykKLQotICAgICAgICBiaXRiYWtlKHRhcmdldHMpCi0gICAgICAgIHJlc3VsdHMgPSBzZWxmLnNlYXJjaF9zc3RhdGUoJ3wnLmpvaW4obWFwKHN0ciwgW3MgKyAnLio/XC50Z3okJyBmb3IgcyBpbiB0YXJnZXRzXSkpLCBkaXN0cm9fc3BlY2lmaWM9RmFsc2UsIGRpc3Ryb19ub25zcGVjaWZpYz1UcnVlKQotICAgICAgICBmaWx0ZXJlZF9yZXN1bHRzID0gW10KLSAgICAgICAgZm9yIHIgaW4gcmVzdWx0czoKLSAgICAgICAgICAgIGlmIHIuZW5kc3dpdGgoKCJfcG9wdWxhdGVfbGljLnRneiIsICJfcG9wdWxhdGVfbGljLnRnei5zaWdpbmZvIikpOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBmaWx0ZXJlZF9yZXN1bHRzLmFwcGVuZChyKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoZmlsdGVyZWRfcmVzdWx0cyA9PSBbXSwgbXNnPSJGb3VuZCBkaXN0cm8gbm9uLXNwZWNpZmljIHNzdGF0ZSBmb3I6ICVzICglcykiICUgKCcsICcuam9pbihtYXAoc3RyLCB0YXJnZXRzKSksIHN0cihmaWx0ZXJlZF9yZXN1bHRzKSkpCi0gICAgICAgIGZpbGVfdHJhY2tlcl8xID0gc2VsZi5zZWFyY2hfc3N0YXRlKCd8Jy5qb2luKG1hcChzdHIsIFtzICsgJy4qP1wudGd6JCcgZm9yIHMgaW4gdGFyZ2V0c10pKSwgZGlzdHJvX3NwZWNpZmljPVRydWUsIGRpc3Ryb19ub25zcGVjaWZpYz1GYWxzZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbihmaWxlX3RyYWNrZXJfMSkgPj0gbGVuKHRhcmdldHMpLCBtc2cgPSAiTm90IGFsbCBzc3RhdGUgZmlsZXMgd2FyZSBjcmVhdGVkIGZvcjogJXMiICUgJywgJy5qb2luKG1hcChzdHIsIHRhcmdldHMpKSkKLQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYuZGlzdHJvX3NwZWNpZmljX3NzdGF0ZSArICJfb2xkIikKLSAgICAgICAgc2h1dGlsLmNvcHl0cmVlKHNlbGYuZGlzdHJvX3NwZWNpZmljX3NzdGF0ZSwgc2VsZi5kaXN0cm9fc3BlY2lmaWNfc3N0YXRlICsgIl9vbGQiKQotICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYuZGlzdHJvX3NwZWNpZmljX3NzdGF0ZSkKLQotICAgICAgICBiaXRiYWtlKFsnLWNjbGVhbiddICsgdGFyZ2V0cykKLSAgICAgICAgYml0YmFrZSh0YXJnZXRzKQotICAgICAgICBmaWxlX3RyYWNrZXJfMiA9IHNlbGYuc2VhcmNoX3NzdGF0ZSgnfCcuam9pbihtYXAoc3RyLCBbcyArICcuKj9cLnRneiQnIGZvciBzIGluIHRhcmdldHNdKSksIGRpc3Ryb19zcGVjaWZpYz1UcnVlLCBkaXN0cm9fbm9uc3BlY2lmaWM9RmFsc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsZW4oZmlsZV90cmFja2VyXzIpID49IGxlbih0YXJnZXRzKSwgbXNnID0gIk5vdCBhbGwgc3N0YXRlIGZpbGVzIHdhcmUgY3JlYXRlZCBmb3I6ICVzIiAlICcsICcuam9pbihtYXAoc3RyLCB0YXJnZXRzKSkpCi0KLSAgICAgICAgbm90X3JlY3JlYXRlZCA9IFt4IGZvciB4IGluIGZpbGVfdHJhY2tlcl8xIGlmIHggbm90IGluIGZpbGVfdHJhY2tlcl8yXQotICAgICAgICBzZWxmLmFzc2VydFRydWUobm90X3JlY3JlYXRlZCA9PSBbXSwgbXNnPSJUaGUgZm9sbG93aW5nIHNzdGF0ZSBmaWxlcyB3YXJlIG5vdCByZWNyZWF0ZWQ6ICVzIiAlICcsICcuam9pbihtYXAoc3RyLCBub3RfcmVjcmVhdGVkKSkpCi0KLSAgICAgICAgY3JlYXRlZF9vbmNlID0gW3ggZm9yIHggaW4gZmlsZV90cmFja2VyXzIgaWYgeCBub3QgaW4gZmlsZV90cmFja2VyXzFdCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjcmVhdGVkX29uY2UgPT0gW10sIG1zZz0iVGhlIGZvbGxvd2luZyBzc3RhdGUgZmlsZXMgd2FyZSBjcmVhdGVkIG9ubHkgaW4gdGhlIHNlY29uZCBydW46ICVzIiAlICcsICcuam9pbihtYXAoc3RyLCBjcmVhdGVkX29uY2UpKSkKLQotICAgIEB0ZXN0Y2FzZSgxNzUpCi0gICAgZGVmIHRlc3RfcmVidWlsZF9kaXN0cm9fc3BlY2lmaWNfc3N0YXRlX2Nyb3NzX25hdGl2ZV90YXJnZXRzKHNlbGYpOgotICAgICAgICBzZWxmLnJ1bl90ZXN0X3JlYnVpbGRfZGlzdHJvX3NwZWNpZmljX3NzdGF0ZShbJ2JpbnV0aWxzLWNyb3NzLScgKyBzZWxmLnR1bmVfYXJjaCwgJ2JpbnV0aWxzLW5hdGl2ZSddLCB0ZW1wX3NzdGF0ZV9sb2NhdGlvbj1UcnVlKQotCi0gICAgQHRlc3RjYXNlKDEzNzIpCi0gICAgZGVmIHRlc3RfcmVidWlsZF9kaXN0cm9fc3BlY2lmaWNfc3N0YXRlX2Nyb3NzX3RhcmdldChzZWxmKToKLSAgICAgICAgc2VsZi5ydW5fdGVzdF9yZWJ1aWxkX2Rpc3Ryb19zcGVjaWZpY19zc3RhdGUoWydiaW51dGlscy1jcm9zcy0nICsgc2VsZi50dW5lX2FyY2hdLCB0ZW1wX3NzdGF0ZV9sb2NhdGlvbj1UcnVlKQotCi0gICAgQHRlc3RjYXNlKDEzNzMpCi0gICAgZGVmIHRlc3RfcmVidWlsZF9kaXN0cm9fc3BlY2lmaWNfc3N0YXRlX25hdGl2ZV90YXJnZXQoc2VsZik6Ci0gICAgICAgIHNlbGYucnVuX3Rlc3RfcmVidWlsZF9kaXN0cm9fc3BlY2lmaWNfc3N0YXRlKFsnYmludXRpbHMtbmF0aXZlJ10sIHRlbXBfc3N0YXRlX2xvY2F0aW9uPVRydWUpCi0KLQotICAgICMgVGVzdCB0aGUgc3N0YXRlLWNhY2hlLW1hbmFnZW1lbnQgc2NyaXB0LiBFYWNoIGVsZW1lbnQgaW4gdGhlIGdsb2JhbF9jb25maWcgbGlzdCBpcyB1c2VkIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBpbiB0aGUgdGFyZ2V0X2NvbmZpZyBsaXN0Ci0gICAgIyBnbG9iYWxfY29uZmlnIGVsZW1lbnRzIGFyZSBleHBlY3RlZCB0byBub3QgZ2VuZXJhdGUgYW55IHNzdGF0ZSBmaWxlcyB0aGF0IHdvdWxkIGJlIHJlbW92ZWQgYnkgc3N0YXRlLWNhY2hlLW1hbmFnZW1lbnQuc2ggKHN1Y2ggYXMgY2hhbmdpbmcgdGhlIHZhbHVlIG9mIE1BQ0hJTkUpCi0gICAgZGVmIHJ1bl90ZXN0X3NzdGF0ZV9jYWNoZV9tYW5hZ2VtZW50X3NjcmlwdChzZWxmLCB0YXJnZXQsIGdsb2JhbF9jb25maWc9WycnXSwgdGFyZ2V0X2NvbmZpZz1bJyddLCBpZ25vcmVfcGF0dGVybnM9W10pOgotICAgICAgICBzZWxmLmFzc2VydFRydWUoZ2xvYmFsX2NvbmZpZykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRhcmdldF9jb25maWcpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsZW4oZ2xvYmFsX2NvbmZpZykgPT0gbGVuKHRhcmdldF9jb25maWcpLCBtc2c9J0xpc3RzIGdsb2JhbF9jb25maWcgYW5kIHRhcmdldF9jb25maWcgc2hvdWxkIGhhdmUgdGhlIHNhbWUgbnVtYmVyIG9mIGVsZW1lbnRzJykKLSAgICAgICAgc2VsZi5jb25maWdfc3N0YXRlKHRlbXBfc3N0YXRlX2xvY2F0aW9uPVRydWUsIGFkZF9sb2NhbF9taXJyb3JzPVtzZWxmLnNzdGF0ZV9wYXRoXSkKLQotICAgICAgICAjIElmIGJ1aWxkaGlzdG9yeSBpcyBlbmFibGVkLCB3ZSBuZWVkIHRvIGRpc2FibGUgdmVyc2lvbi1nb2luZy1iYWNrd2FyZHMKLSAgICAgICAgIyBRQSBjaGVja3MgZm9yIHRoaXMgdGVzdC4gSXQgbWF5IHJlcG9ydCBlcnJvcnMgb3RoZXJ3aXNlLgotICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoJ0VSUk9SX1FBX3JlbW92ZSA9ICJ2ZXJzaW9uLWdvaW5nLWJhY2t3YXJkcyInKQotCi0gICAgICAgICMgRm9yIG5vdCB0aGlzIG9ubHkgY2hlY2tzIGlmIHJhbmRvbSBzc3RhdGUgdGFza3MgYXJlIGhhbmRsZWQgY29ycmVjdGx5IGFzIGEgZ3JvdXAuCi0gICAgICAgICMgSW4gdGhlIGZ1dHVyZSB3ZSBzaG91bGQgYWRkIGNvbnRyb2wgb3ZlciB3aGF0IHRhc2tzIHdlIGNoZWNrIGZvci4KLQotICAgICAgICBzc3RhdGVfYXJjaHNfbGlzdCA9IFtdCi0gICAgICAgIGV4cGVjdGVkX3JlbWFpbmluZ19zc3RhdGUgPSBbXQotICAgICAgICBmb3IgaWR4IGluIHJhbmdlKGxlbih0YXJnZXRfY29uZmlnKSk6Ci0gICAgICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoZ2xvYmFsX2NvbmZpZ1tpZHhdKQotICAgICAgICAgICAgc2VsZi5hcHBlbmRfcmVjaXBlaW5jKHRhcmdldCwgdGFyZ2V0X2NvbmZpZ1tpZHhdKQotICAgICAgICAgICAgc3N0YXRlX2FyY2ggPSBnZXRfYmJfdmFyKCdTU1RBVEVfUEtHQVJDSCcsIHRhcmdldCkKLSAgICAgICAgICAgIGlmIG5vdCBzc3RhdGVfYXJjaCBpbiBzc3RhdGVfYXJjaHNfbGlzdDoKLSAgICAgICAgICAgICAgICBzc3RhdGVfYXJjaHNfbGlzdC5hcHBlbmQoc3N0YXRlX2FyY2gpCi0gICAgICAgICAgICBpZiB0YXJnZXRfY29uZmlnW2lkeF0gPT0gdGFyZ2V0X2NvbmZpZ1stMV06Ci0gICAgICAgICAgICAgICAgdGFyZ2V0X3NzdGF0ZV9iZWZvcmVfYnVpbGQgPSBzZWxmLnNlYXJjaF9zc3RhdGUodGFyZ2V0ICsgJy4qP1wudGd6JCcpCi0gICAgICAgICAgICBiaXRiYWtlKCItY2NsZWFuICVzIiAlIHRhcmdldCkKLSAgICAgICAgICAgIHJlc3VsdCA9IGJpdGJha2UodGFyZ2V0LCBpZ25vcmVfc3RhdHVzPVRydWUpCi0gICAgICAgICAgICBpZiB0YXJnZXRfY29uZmlnW2lkeF0gPT0gdGFyZ2V0X2NvbmZpZ1stMV06Ci0gICAgICAgICAgICAgICAgdGFyZ2V0X3NzdGF0ZV9hZnRlcl9idWlsZCA9IHNlbGYuc2VhcmNoX3NzdGF0ZSh0YXJnZXQgKyAnLio/XC50Z3okJykKLSAgICAgICAgICAgICAgICBleHBlY3RlZF9yZW1haW5pbmdfc3N0YXRlICs9IFt4IGZvciB4IGluIHRhcmdldF9zc3RhdGVfYWZ0ZXJfYnVpbGQgaWYgeCBub3QgaW4gdGFyZ2V0X3NzdGF0ZV9iZWZvcmVfYnVpbGQgaWYgbm90IGFueShwYXR0ZXJuIGluIHggZm9yIHBhdHRlcm4gaW4gaWdub3JlX3BhdHRlcm5zKV0KLSAgICAgICAgICAgIHNlbGYucmVtb3ZlX2NvbmZpZyhnbG9iYWxfY29uZmlnW2lkeF0pCi0gICAgICAgICAgICBzZWxmLnJlbW92ZV9yZWNpcGVpbmModGFyZ2V0LCB0YXJnZXRfY29uZmlnW2lkeF0pCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5zdGF0dXMsIDAsIG1zZyA9ICJidWlsZCBvZiAlcyBmYWlsZWQgd2l0aCAlcyIgJSAodGFyZ2V0LCByZXN1bHQub3V0cHV0KSkKLQotICAgICAgICBydW5DbWQoInNzdGF0ZS1jYWNoZS1tYW5hZ2VtZW50LnNoIC15IC0tY2FjaGUtZGlyPSVzIC0tcmVtb3ZlLWR1cGxpY2F0ZWQgLS1leHRyYS1hcmNocz0lcyIgJSAoc2VsZi5zc3RhdGVfcGF0aCwgJywnLmpvaW4obWFwKHN0ciwgc3N0YXRlX2FyY2hzX2xpc3QpKSkpCi0gICAgICAgIGFjdHVhbF9yZW1haW5pbmdfc3N0YXRlID0gW3ggZm9yIHggaW4gc2VsZi5zZWFyY2hfc3N0YXRlKHRhcmdldCArICcuKj9cLnRneiQnKSBpZiBub3QgYW55KHBhdHRlcm4gaW4geCBmb3IgcGF0dGVybiBpbiBpZ25vcmVfcGF0dGVybnMpXQotCi0gICAgICAgIGFjdHVhbF9ub3RfZXhwZWN0ZWQgPSBbeCBmb3IgeCBpbiBhY3R1YWxfcmVtYWluaW5nX3NzdGF0ZSBpZiB4IG5vdCBpbiBleHBlY3RlZF9yZW1haW5pbmdfc3N0YXRlXQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGFjdHVhbF9ub3RfZXhwZWN0ZWQsIG1zZz0iRmlsZXMgc2hvdWxkIGhhdmUgYmVlbiByZW1vdmVkIGJ1dCB3YXJlIG5vdDogJXMiICUgJywgJy5qb2luKG1hcChzdHIsIGFjdHVhbF9ub3RfZXhwZWN0ZWQpKSkKLSAgICAgICAgZXhwZWN0ZWRfbm90X2FjdHVhbCA9IFt4IGZvciB4IGluIGV4cGVjdGVkX3JlbWFpbmluZ19zc3RhdGUgaWYgeCBub3QgaW4gYWN0dWFsX3JlbWFpbmluZ19zc3RhdGVdCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXhwZWN0ZWRfbm90X2FjdHVhbCwgbXNnPSJFeHRyYSBmaWxlcyB3YXJlIHJlbW92ZWQ6ICVzIiAnLCAnLmpvaW4obWFwKHN0ciwgZXhwZWN0ZWRfbm90X2FjdHVhbCkpKQotCi0gICAgQHRlc3RjYXNlKDk3MykKLSAgICBkZWYgdGVzdF9zc3RhdGVfY2FjaGVfbWFuYWdlbWVudF9zY3JpcHRfdXNpbmdfcHJfMShzZWxmKToKLSAgICAgICAgZ2xvYmFsX2NvbmZpZyA9IFtdCi0gICAgICAgIHRhcmdldF9jb25maWcgPSBbXQotICAgICAgICBnbG9iYWxfY29uZmlnLmFwcGVuZCgnJykKLSAgICAgICAgdGFyZ2V0X2NvbmZpZy5hcHBlbmQoJ1BSID0gIjAiJykKLSAgICAgICAgc2VsZi5ydW5fdGVzdF9zc3RhdGVfY2FjaGVfbWFuYWdlbWVudF9zY3JpcHQoJ200JywgZ2xvYmFsX2NvbmZpZywgIHRhcmdldF9jb25maWcsIGlnbm9yZV9wYXR0ZXJucz1bJ3BvcHVsYXRlX2xpYyddKQotCi0gICAgQHRlc3RjYXNlKDk3OCkKLSAgICBkZWYgdGVzdF9zc3RhdGVfY2FjaGVfbWFuYWdlbWVudF9zY3JpcHRfdXNpbmdfcHJfMihzZWxmKToKLSAgICAgICAgZ2xvYmFsX2NvbmZpZyA9IFtdCi0gICAgICAgIHRhcmdldF9jb25maWcgPSBbXQotICAgICAgICBnbG9iYWxfY29uZmlnLmFwcGVuZCgnJykKLSAgICAgICAgdGFyZ2V0X2NvbmZpZy5hcHBlbmQoJ1BSID0gIjAiJykKLSAgICAgICAgZ2xvYmFsX2NvbmZpZy5hcHBlbmQoJycpCi0gICAgICAgIHRhcmdldF9jb25maWcuYXBwZW5kKCdQUiA9ICIxIicpCi0gICAgICAgIHNlbGYucnVuX3Rlc3Rfc3N0YXRlX2NhY2hlX21hbmFnZW1lbnRfc2NyaXB0KCdtNCcsIGdsb2JhbF9jb25maWcsICB0YXJnZXRfY29uZmlnLCBpZ25vcmVfcGF0dGVybnM9Wydwb3B1bGF0ZV9saWMnXSkKLQotICAgIEB0ZXN0Y2FzZSg5NzkpCi0gICAgZGVmIHRlc3Rfc3N0YXRlX2NhY2hlX21hbmFnZW1lbnRfc2NyaXB0X3VzaW5nX3ByXzMoc2VsZik6Ci0gICAgICAgIGdsb2JhbF9jb25maWcgPSBbXQotICAgICAgICB0YXJnZXRfY29uZmlnID0gW10KLSAgICAgICAgZ2xvYmFsX2NvbmZpZy5hcHBlbmQoJ01BQ0hJTkUgPSAicWVtdXg4Ni02NCInKQotICAgICAgICB0YXJnZXRfY29uZmlnLmFwcGVuZCgnUFIgPSAiMCInKQotICAgICAgICBnbG9iYWxfY29uZmlnLmFwcGVuZChnbG9iYWxfY29uZmlnWzBdKQotICAgICAgICB0YXJnZXRfY29uZmlnLmFwcGVuZCgnUFIgPSAiMSInKQotICAgICAgICBnbG9iYWxfY29uZmlnLmFwcGVuZCgnTUFDSElORSA9ICJxZW11eDg2IicpCi0gICAgICAgIHRhcmdldF9jb25maWcuYXBwZW5kKCdQUiA9ICIxIicpCi0gICAgICAgIHNlbGYucnVuX3Rlc3Rfc3N0YXRlX2NhY2hlX21hbmFnZW1lbnRfc2NyaXB0KCdtNCcsIGdsb2JhbF9jb25maWcsICB0YXJnZXRfY29uZmlnLCBpZ25vcmVfcGF0dGVybnM9Wydwb3B1bGF0ZV9saWMnXSkKLQotICAgIEB0ZXN0Y2FzZSg5NzQpCi0gICAgZGVmIHRlc3Rfc3N0YXRlX2NhY2hlX21hbmFnZW1lbnRfc2NyaXB0X3VzaW5nX21hY2hpbmUoc2VsZik6Ci0gICAgICAgIGdsb2JhbF9jb25maWcgPSBbXQotICAgICAgICB0YXJnZXRfY29uZmlnID0gW10KLSAgICAgICAgZ2xvYmFsX2NvbmZpZy5hcHBlbmQoJ01BQ0hJTkUgPSAicWVtdXg4Ni02NCInKQotICAgICAgICB0YXJnZXRfY29uZmlnLmFwcGVuZCgnJykKLSAgICAgICAgZ2xvYmFsX2NvbmZpZy5hcHBlbmQoJ01BQ0hJTkUgPSAicWVtdXg4NiInKQotICAgICAgICB0YXJnZXRfY29uZmlnLmFwcGVuZCgnJykKLSAgICAgICAgc2VsZi5ydW5fdGVzdF9zc3RhdGVfY2FjaGVfbWFuYWdlbWVudF9zY3JpcHQoJ200JywgZ2xvYmFsX2NvbmZpZywgIHRhcmdldF9jb25maWcsIGlnbm9yZV9wYXR0ZXJucz1bJ3BvcHVsYXRlX2xpYyddKQotCi0gICAgQHRlc3RjYXNlKDEyNzApCi0gICAgZGVmIHRlc3Rfc3N0YXRlXzMyXzY0X3NhbWVfaGFzaChzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFRoZSBzc3RhdGUgY2hlY2tzdW1zIGZvciBib3RoIG5hdGl2ZSBhbmQgdGFyZ2V0IHNob3VsZCBub3QgdmFyeSB3aGV0aGVyCi0gICAgICAgIHRoZXkncmUgYnVpbHQgb24gYSAzMiBvciA2NCBiaXQgc3lzdGVtLiBSYXRoZXIgdGhhbiByZXF1aXJpbmcgdHdvIGRpZmZlcmVudAotICAgICAgICBidWlsZCBtYWNoaW5lcyBhbmQgcnVubmluZyBhIGJ1aWxkcywgb3ZlcnJpZGUgdGhlIHZhcmlhYmxlcyBjYWxsaW5nIHVuYW1lKCkKLSAgICAgICAgbWFudWFsbHkgYW5kIGNoZWNrIHVzaW5nIGJpdGJha2UgLVMuCi0gICAgICAgICIiIgotCi0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCIiIgotTUFDSElORSA9ICJxZW11eDg2IgotVE1QRElSID0gIiR7VE9QRElSfS90bXAtc3N0YXRlc2FtZWhhc2giCi1CVUlMRF9BUkNIID0gIng4Nl82NCIKLUJVSUxEX09TID0gImxpbnV4IgotU0RLTUFDSElORSA9ICJ4ODZfNjQiCi1QQUNLQUdFX0NMQVNTRVMgPSAicGFja2FnZV9ycG0gcGFja2FnZV9pcGsgcGFja2FnZV9kZWIiCi0iIiIpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaCIpCi0gICAgICAgIGJpdGJha2UoImNvcmUtaW1hZ2Utc2F0byAtUyBub25lIikKLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIiIiCi1NQUNISU5FID0gInFlbXV4ODYiCi1UTVBESVIgPSAiJHtUT1BESVJ9L3RtcC1zc3RhdGVzYW1laGFzaDIiCi1CVUlMRF9BUkNIID0gImk2ODYiCi1CVUlMRF9PUyA9ICJsaW51eCIKLVNES01BQ0hJTkUgPSAiaTY4NiIKLVBBQ0tBR0VfQ0xBU1NFUyA9ICJwYWNrYWdlX3JwbSBwYWNrYWdlX2lwayBwYWNrYWdlX2RlYiIKLSIiIikKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoMiIpCi0gICAgICAgIGJpdGJha2UoImNvcmUtaW1hZ2Utc2F0byAtUyBub25lIikKLQotICAgICAgICBkZWYgZ2V0X2ZpbGVzKGQpOgotICAgICAgICAgICAgZiA9IFtdCi0gICAgICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhkKToKLSAgICAgICAgICAgICAgICBpZiAiY29yZS1pbWFnZS1zYXRvIiBpbiByb290OgotICAgICAgICAgICAgICAgICAgICAjIFNES01BQ0hJTkUgY2hhbmdpbmcgd2lsbCBjaGFuZ2UKLSAgICAgICAgICAgICAgICAgICAgIyBkb19yb290ZnMvZG9fdGVzdGltYWdlL2RvX2J1aWxkIHN0YW1wcyBvZiBpbWFnZXMgd2hpY2gKLSAgICAgICAgICAgICAgICAgICAgIyBpcyBzYWZlIHRvIGlnbm9yZS4KLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBmLmV4dGVuZChvcy5wYXRoLmpvaW4ocm9vdCwgbmFtZSkgZm9yIG5hbWUgaW4gZmlsZXMpCi0gICAgICAgICAgICByZXR1cm4gZgotICAgICAgICBmaWxlczEgPSBnZXRfZmlsZXMoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaC9zdGFtcHMvIikKLSAgICAgICAgZmlsZXMyID0gZ2V0X2ZpbGVzKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gyL3N0YW1wcy8iKQotICAgICAgICBmaWxlczIgPSBbeC5yZXBsYWNlKCJ0bXAtc3N0YXRlc2FtZWhhc2gyIiwgInRtcC1zc3RhdGVzYW1laGFzaCIpLnJlcGxhY2UoImk2ODYtbGludXgiLCAieDg2XzY0LWxpbnV4IikucmVwbGFjZSgiaTY4NiIgKyBzZWxmLnRhcmdldF92ZW5kb3IgKyAiLWxpbnV4IiwgIng4Nl82NCIgKyBzZWxmLnRhcmdldF92ZW5kb3IgKyAiLWxpbnV4IiwgKSBmb3IgeCBpbiBmaWxlczJdCi0gICAgICAgIHNlbGYubWF4RGlmZiA9IE5vbmUKLSAgICAgICAgc2VsZi5hc3NlcnRDb3VudEVxdWFsKGZpbGVzMSwgZmlsZXMyKQotCi0KLSAgICBAdGVzdGNhc2UoMTI3MSkKLSAgICBkZWYgdGVzdF9zc3RhdGVfbmF0aXZlbHNic3RyaW5nX3NhbWVfaGFzaChzZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIFRoZSBzc3RhdGUgY2hlY2tzdW1zIHNob3VsZCBiZSBpbmRlcGVuZGVudCBvZiB3aGljaGV2ZXIgTkFUSVZFTFNCU1RSSU5HIGlzCi0gICAgICAgIGRldGVjdGVkLiBSYXRoZXIgdGhhbiByZXF1aXJpbmcgdHdvIGRpZmZlcmVudCBidWlsZCBtYWNoaW5lcyBhbmQgcnVubmluZwotICAgICAgICBidWlsZHMsIG92ZXJyaWRlIHRoZSB2YXJpYWJsZXMgbWFudWFsbHkgYW5kIGNoZWNrIHVzaW5nIGJpdGJha2UgLVMuCi0gICAgICAgICIiIgotCi0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCIiIgotVE1QRElSID0gXCIke1RPUERJUn0vdG1wLXNzdGF0ZXNhbWVoYXNoXCIKLU5BVElWRUxTQlNUUklORyA9IFwiRGlzdHJvQVwiCi0iIiIpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaCIpCi0gICAgICAgIGJpdGJha2UoImNvcmUtaW1hZ2Utc2F0byAtUyBub25lIikKLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIiIiCi1UTVBESVIgPSBcIiR7VE9QRElSfS90bXAtc3N0YXRlc2FtZWhhc2gyXCIKLU5BVElWRUxTQlNUUklORyA9IFwiRGlzdHJvQlwiCi0iIiIpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaDIiKQotICAgICAgICBiaXRiYWtlKCJjb3JlLWltYWdlLXNhdG8gLVMgbm9uZSIpCi0KLSAgICAgICAgZGVmIGdldF9maWxlcyhkKToKLSAgICAgICAgICAgIGYgPSBbXQotICAgICAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsoZCk6Ci0gICAgICAgICAgICAgICAgZi5leHRlbmQob3MucGF0aC5qb2luKHJvb3QsIG5hbWUpIGZvciBuYW1lIGluIGZpbGVzKQotICAgICAgICAgICAgcmV0dXJuIGYKLSAgICAgICAgZmlsZXMxID0gZ2V0X2ZpbGVzKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gvc3RhbXBzLyIpCi0gICAgICAgIGZpbGVzMiA9IGdldF9maWxlcyhzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoMi9zdGFtcHMvIikKLSAgICAgICAgZmlsZXMyID0gW3gucmVwbGFjZSgidG1wLXNzdGF0ZXNhbWVoYXNoMiIsICJ0bXAtc3N0YXRlc2FtZWhhc2giKSBmb3IgeCBpbiBmaWxlczJdCi0gICAgICAgIHNlbGYubWF4RGlmZiA9IE5vbmUKLSAgICAgICAgc2VsZi5hc3NlcnRDb3VudEVxdWFsKGZpbGVzMSwgZmlsZXMyKQotCi0gICAgQHRlc3RjYXNlKDEzNjgpCi0gICAgZGVmIHRlc3Rfc3N0YXRlX2FsbGFyY2hfc2FtZXNpZ3Moc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBUaGUgc3N0YXRlIGNoZWNrc3VtcyBvZiBhbGxhcmNoIHBhY2thZ2VzIHNob3VsZCBiZSBpbmRlcGVuZGVudCBvZiB3aGljaGV2ZXIKLSAgICAgICAgTUFDSElORSBpcyBzZXQuIENoZWNrIHRoaXMgdXNpbmcgYml0YmFrZSAtUy4KLSAgICAgICAgQWxzbywgcmF0aGVyIHRoYW4gZHVwbGljYXRlIHRoZSB0ZXN0LCBjaGVjayBuYXRpdmVzZGsgc3RhbXBzIGFyZSB0aGUgc2FtZSBiZXR3ZWVuCi0gICAgICAgIHRoZSB0d28gTUFDSElORSB2YWx1ZXMuCi0gICAgICAgICIiIgotCi0gICAgICAgIGNvbmZpZ0EgPSAiIiIKLVRNUERJUiA9IFwiJHtUT1BESVJ9L3RtcC1zc3RhdGVzYW1laGFzaFwiCi1NQUNISU5FID0gXCJxZW11eDg2LTY0XCIKLSIiIgotICAgICAgICBjb25maWdCID0gIiIiCi1UTVBESVIgPSBcIiR7VE9QRElSfS90bXAtc3N0YXRlc2FtZWhhc2gyXCIKLU1BQ0hJTkUgPSBcInFlbXVhcm1cIgotIiIiCi0gICAgICAgIHNlbGYuc3N0YXRlX2FsbGFyY2hfc2FtZXNpZ3MoY29uZmlnQSwgY29uZmlnQikKLQotICAgIGRlZiB0ZXN0X3NzdGF0ZV9hbGxhcmNoX3NhbWVzaWdzX211bHRpbGliKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgVGhlIHNzdGF0ZSBjaGVja3N1bXMgb2YgYWxsYXJjaCBtdWx0aWxpYiBwYWNrYWdlcyBzaG91bGQgYmUgaW5kZXBlbmRlbnQgb2Ygd2hpY2hldmVyCi0gICAgICAgIE1BQ0hJTkUgaXMgc2V0LiBDaGVjayB0aGlzIHVzaW5nIGJpdGJha2UgLVMuCi0gICAgICAgIEFsc28sIHJhdGhlciB0aGFuIGR1cGxpY2F0ZSB0aGUgdGVzdCwgY2hlY2sgbmF0aXZlc2RrIHN0YW1wcyBhcmUgdGhlIHNhbWUgYmV0d2VlbgotICAgICAgICB0aGUgdHdvIE1BQ0hJTkUgdmFsdWVzLgotICAgICAgICAiIiIKLQotICAgICAgICBjb25maWdBID0gIiIiCi1UTVBESVIgPSBcIiR7VE9QRElSfS90bXAtc3N0YXRlc2FtZWhhc2hcIgotTUFDSElORSA9IFwicWVtdXg4Ni02NFwiCi1yZXF1aXJlIGNvbmYvbXVsdGlsaWIuY29uZgotTVVMVElMSUJTID0gXCJtdWx0aWxpYjpsaWIzMlwiCi1ERUZBVUxUVFVORV92aXJ0Y2xhc3MtbXVsdGlsaWItbGliMzIgPSBcIng4NlwiCi0iIiIKLSAgICAgICAgY29uZmlnQiA9ICIiIgotVE1QRElSID0gXCIke1RPUERJUn0vdG1wLXNzdGF0ZXNhbWVoYXNoMlwiCi1NQUNISU5FID0gXCJxZW11YXJtXCIKLXJlcXVpcmUgY29uZi9tdWx0aWxpYi5jb25mCi1NVUxUSUxJQlMgPSBcIlwiCi0iIiIKLSAgICAgICAgc2VsZi5zc3RhdGVfYWxsYXJjaF9zYW1lc2lncyhjb25maWdBLCBjb25maWdCKQotCi0gICAgZGVmIHNzdGF0ZV9hbGxhcmNoX3NhbWVzaWdzKHNlbGYsIGNvbmZpZ0EsIGNvbmZpZ0IpOgotCi0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGNvbmZpZ0EpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaCIpCi0gICAgICAgIGJpdGJha2UoIndvcmxkIG1ldGEtdG9vbGNoYWluIC1TIG5vbmUiKQotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhjb25maWdCKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gyIikKLSAgICAgICAgYml0YmFrZSgid29ybGQgbWV0YS10b29sY2hhaW4gLVMgbm9uZSIpCi0KLSAgICAgICAgZGVmIGdldF9maWxlcyhkKToKLSAgICAgICAgICAgIGYgPSB7fQotICAgICAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsoZCk6Ci0gICAgICAgICAgICAgICAgZm9yIG5hbWUgaW4gZmlsZXM6Ci0gICAgICAgICAgICAgICAgICAgIGlmICJtZXRhLWVudmlyb25tZW50IiBpbiByb290IG9yICJjcm9zcy1jYW5hZGlhbiIgaW4gcm9vdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgICAgIGlmICJkb19idWlsZCIgbm90IGluIG5hbWU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIDEuNC4xK2dpdEFVVE9JTkMrMzAyZmNhOWY0Yy1yMC5kb19wYWNrYWdlX3dyaXRlX2lway5zaWdkYXRhLmYzYTJhMzg2OTdkYTc0M2YwZGJlZDhiNTZhYWZjZjc5Ci0gICAgICAgICAgICAgICAgICAgICAgICAoXywgdGFzaywgXywgc2hhc2gpID0gbmFtZS5yc3BsaXQoIi4iLCAzKQotICAgICAgICAgICAgICAgICAgICAgICAgZltvcy5wYXRoLmpvaW4ob3MucGF0aC5iYXNlbmFtZShyb290KSwgdGFzayldID0gc2hhc2gKLSAgICAgICAgICAgIHJldHVybiBmCi0gICAgICAgIGZpbGVzMSA9IGdldF9maWxlcyhzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoL3N0YW1wcy9hbGwiICsgc2VsZi50YXJnZXRfdmVuZG9yICsgIi0iICsgc2VsZi50YXJnZXRfb3MpCi0gICAgICAgIGZpbGVzMiA9IGdldF9maWxlcyhzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoMi9zdGFtcHMvYWxsIiArIHNlbGYudGFyZ2V0X3ZlbmRvciArICItIiArIHNlbGYudGFyZ2V0X29zKQotICAgICAgICBzZWxmLm1heERpZmYgPSBOb25lCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZXMxLCBmaWxlczIpCi0KLSAgICAgICAgbmF0aXZlc2RrZGlyID0gb3MucGF0aC5iYXNlbmFtZShnbG9iLmdsb2Ioc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaC9zdGFtcHMvKi1uYXRpdmVzZGsqLWxpbnV4IilbMF0pCi0KLSAgICAgICAgZmlsZXMxID0gZ2V0X2ZpbGVzKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gvc3RhbXBzLyIgKyBuYXRpdmVzZGtkaXIpCi0gICAgICAgIGZpbGVzMiA9IGdldF9maWxlcyhzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoMi9zdGFtcHMvIiArIG5hdGl2ZXNka2RpcikKLSAgICAgICAgc2VsZi5tYXhEaWZmID0gTm9uZQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVzMSwgZmlsZXMyKQotCi0gICAgQHRlc3RjYXNlKDEzNjkpCi0gICAgZGVmIHRlc3Rfc3N0YXRlX3NhbWV0dW5lX3NhbWVzaWdzKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgVGhlIHNzdGF0ZSBjaGVja3N1bXMgb2YgdHdvIGlkZW50aWNhbCBtYWNoaW5lcyAodXNpbmcgdGhlIHNhbWUgdHVuZSkgc2hvdWxkIGJlIHRoZQotICAgICAgICBzYW1lLCBhcGFydCBmcm9tIGNoYW5nZXMgd2l0aGluIHRoZSBtYWNoaW5lIHNwZWNpZmljIHN0YW1wcyBkaXJlY3RvcnkuIFdlIHVzZSB0aGUKLSAgICAgICAgcWVtdXg4NmNvcHkgbWFjaGluZSB0byB0ZXN0IHRoaXMuIEFsc28gaW5jbHVkZSBtdWx0aWxpYnMgaW4gdGhlIHRlc3QuCi0gICAgICAgICIiIgotCi0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCIiIgotVE1QRElSID0gXCIke1RPUERJUn0vdG1wLXNzdGF0ZXNhbWVoYXNoXCIKLU1BQ0hJTkUgPSBcInFlbXV4ODZcIgotcmVxdWlyZSBjb25mL211bHRpbGliLmNvbmYKLU1VTFRJTElCUyA9ICJtdWx0aWxpYjpsaWIzMiIKLURFRkFVTFRUVU5FX3ZpcnRjbGFzcy1tdWx0aWxpYi1saWIzMiA9ICJ4ODYiCi0iIiIpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaCIpCi0gICAgICAgIGJpdGJha2UoIndvcmxkIG1ldGEtdG9vbGNoYWluIC1TIG5vbmUiKQotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiIiIKLVRNUERJUiA9IFwiJHtUT1BESVJ9L3RtcC1zc3RhdGVzYW1laGFzaDJcIgotTUFDSElORSA9IFwicWVtdXg4NmNvcHlcIgotcmVxdWlyZSBjb25mL211bHRpbGliLmNvbmYKLU1VTFRJTElCUyA9ICJtdWx0aWxpYjpsaWIzMiIKLURFRkFVTFRUVU5FX3ZpcnRjbGFzcy1tdWx0aWxpYi1saWIzMiA9ICJ4ODYiCi0iIiIpCi0gICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaDIiKQotICAgICAgICBiaXRiYWtlKCJ3b3JsZCBtZXRhLXRvb2xjaGFpbiAtUyBub25lIikKLQotICAgICAgICBkZWYgZ2V0X2ZpbGVzKGQpOgotICAgICAgICAgICAgZiA9IFtdCi0gICAgICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhkKToKLSAgICAgICAgICAgICAgICBmb3IgbmFtZSBpbiBmaWxlczoKLSAgICAgICAgICAgICAgICAgICAgaWYgIm1ldGEtZW52aXJvbm1lbnQiIGluIHJvb3Qgb3IgImNyb3NzLWNhbmFkaWFuIiBpbiByb290OgotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICAgICAgaWYgInFlbXV4ODZjb3B5LSIgaW4gcm9vdCBvciAicWVtdXg4Ni0iIGluIHJvb3Q6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICBpZiAiZG9fYnVpbGQiIG5vdCBpbiBuYW1lIGFuZCAiZG9fcG9wdWxhdGVfc2RrIiBub3QgaW4gbmFtZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGYuYXBwZW5kKG9zLnBhdGguam9pbihyb290LCBuYW1lKSkKLSAgICAgICAgICAgIHJldHVybiBmCi0gICAgICAgIGZpbGVzMSA9IGdldF9maWxlcyhzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoL3N0YW1wcyIpCi0gICAgICAgIGZpbGVzMiA9IGdldF9maWxlcyhzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoMi9zdGFtcHMiKQotICAgICAgICBmaWxlczIgPSBbeC5yZXBsYWNlKCJ0bXAtc3N0YXRlc2FtZWhhc2gyIiwgInRtcC1zc3RhdGVzYW1laGFzaCIpIGZvciB4IGluIGZpbGVzMl0KLSAgICAgICAgc2VsZi5tYXhEaWZmID0gTm9uZQotICAgICAgICBzZWxmLmFzc2VydENvdW50RXF1YWwoZmlsZXMxLCBmaWxlczIpCi0KLQotICAgIGRlZiB0ZXN0X3NzdGF0ZV9ub29wX3NhbWVzaWdzKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgVGhlIHNzdGF0ZSBjaGVja3N1bXMgb2YgdHdvIGJ1aWxkcyB3aXRoIHRoZXNlIHZhcmlhYmxlcyBjaGFuZ2VkIG9yCi0gICAgICAgIGNsYXNzZXMgaW5oZXJpdHMgc2hvdWxkIGJlIHRoZSBzYW1lLgotICAgICAgICAiIiIKLQotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiIiIKLVRNUERJUiA9ICIke1RPUERJUn0vdG1wLXNzdGF0ZXNhbWVoYXNoIgotQkJfTlVNQkVSX1RIUkVBRFMgPSAiMSIKLVBBUkFMTEVMX01BS0UgPSAiLWogMSIKLURMX0RJUiA9ICIke1RPUERJUn0vZG93bmxvYWQxIgotVElNRSA9ICIxMTExMTEiCi1EQVRFID0gIjIwMTYxMTExIgotSU5IRVJJVF9yZW1vdmUgPSAiYnVpbGRzdGF0cy1zdW1tYXJ5IGJ1aWxkaGlzdG9yeSB1bmluYXRpdmUiCi1odHRwX3Byb3h5ID0gIiIKLSIiIikKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoIikKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLnRvcGRpciArICIvZG93bmxvYWQxIikKLSAgICAgICAgYml0YmFrZSgid29ybGQgbWV0YS10b29sY2hhaW4gLVMgbm9uZSIpCi0gICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCIiIgotVE1QRElSID0gIiR7VE9QRElSfS90bXAtc3N0YXRlc2FtZWhhc2gyIgotQkJfTlVNQkVSX1RIUkVBRFMgPSAiMiIKLVBBUkFMTEVMX01BS0UgPSAiLWogMiIKLURMX0RJUiA9ICIke1RPUERJUn0vZG93bmxvYWQyIgotVElNRSA9ICIyMjIyMjIiCi1EQVRFID0gIjIwMTYxMjEyIgotIyBBbHdheXMgcmVtb3ZlIHVuaW5hdGl2ZSBhcyB3ZSdyZSBjaGFuZ2luZyBwcm94aWVzCi1JTkhFUklUX3JlbW92ZSA9ICJ1bmluYXRpdmUiCi1JTkhFUklUICs9ICJidWlsZHN0YXRzLXN1bW1hcnkgYnVpbGRoaXN0b3J5IgotaHR0cF9wcm94eSA9ICJodHRwOi8vZXhhbXBsZS5jb20vIgotIiIiKQotICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gyIikKLSAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLnRvcGRpciArICIvZG93bmxvYWQyIikKLSAgICAgICAgYml0YmFrZSgid29ybGQgbWV0YS10b29sY2hhaW4gLVMgbm9uZSIpCi0KLSAgICAgICAgZGVmIGdldF9maWxlcyhkKToKLSAgICAgICAgICAgIGYgPSB7fQotICAgICAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsoZCk6Ci0gICAgICAgICAgICAgICAgZm9yIG5hbWUgaW4gZmlsZXM6Ci0gICAgICAgICAgICAgICAgICAgIG5hbWUsIHNoYXNoID0gbmFtZS5yc3BsaXQoJy4nLCAxKQotICAgICAgICAgICAgICAgICAgICAjIEV4dHJhY3QganVzdCB0aGUgbWFjaGluZSBhbmQgcmVjaXBlIG5hbWUKLSAgICAgICAgICAgICAgICAgICAgYmFzZSA9IG9zLnNlcC5qb2luKHJvb3QucnNwbGl0KG9zLnNlcCwgMilbLTI6XSArIFtuYW1lXSkKLSAgICAgICAgICAgICAgICAgICAgZltiYXNlXSA9IHNoYXNoCi0gICAgICAgICAgICByZXR1cm4gZgotICAgICAgICBmaWxlczEgPSBnZXRfZmlsZXMoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaC9zdGFtcHMvIikKLSAgICAgICAgZmlsZXMyID0gZ2V0X2ZpbGVzKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gyL3N0YW1wcy8iKQotICAgICAgICAjIFJlbW92ZSBpdGVtcyB0aGF0IGFyZSBpZGVudGljYWwgaW4gYm90aCBzZXRzCi0gICAgICAgIGZvciBrLHYgaW4gZmlsZXMxLml0ZW1zKCkgJiBmaWxlczIuaXRlbXMoKToKLSAgICAgICAgICAgIGRlbCBmaWxlczFba10KLSAgICAgICAgICAgIGRlbCBmaWxlczJba10KLSAgICAgICAgaWYgbm90IGZpbGVzMSBhbmQgbm90IGZpbGVzMjoKLSAgICAgICAgICAgICMgTm8gY2hhbmdlcywgc28gd2UncmUgZG9uZQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgZm9yIGsgaW4gZmlsZXMxLmtleXMoKSB8IGZpbGVzMi5rZXlzKCk6Ci0gICAgICAgICAgICBpZiBrIGluIGZpbGVzMSBhbmQgayBpbiBmaWxlczI6Ci0gICAgICAgICAgICAgICAgcHJpbnQoIiVzIGRpZmZlcnM6IiAlIGspCi0gICAgICAgICAgICAgICAgcHJpbnQoc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoKCJiaXRiYWtlLWRpZmZzaWdzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaC9zdGFtcHMvIiArIGsgKyAiLiIgKyBmaWxlczFba10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2gyL3N0YW1wcy8iICsgayArICIuIiArIGZpbGVzMltrXSkpKQotICAgICAgICAgICAgZWxpZiBrIGluIGZpbGVzMSBhbmQgayBub3QgaW4gZmlsZXMyOgotICAgICAgICAgICAgICAgIHByaW50KCIlcyBpbiBmaWxlczEiICUgaykKLSAgICAgICAgICAgIGVsaWYgayBub3QgaW4gZmlsZXMxIGFuZCBrIGluIGZpbGVzMjoKLSAgICAgICAgICAgICAgICBwcmludCgiJXMgaW4gZmlsZXMyIiAlIGspCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGFzc2VydCAic2hvdWxkbid0IHJlYWNoIGhlcmUiCi0gICAgICAgIHNlbGYuZmFpbCgic3N0YXRlIGhhc2hlcyBub3QgaWRlbnRpY2FsLiIpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC90aW5mb2lsLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvdGluZm9pbC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzNhMGMzYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC90aW5mb2lsLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTkwICswLDAgQEAKLWltcG9ydCB1bml0dGVzdAotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLWltcG9ydCBiYi50aW5mb2lsCi0KLWZyb20gb2VxYS5zZWxmdGVzdC5iYXNlIGltcG9ydCBvZVNlbGZUZXN0Ci1mcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZAotZnJvbSBvZXFhLnV0aWxzLmRlY29yYXRvcnMgaW1wb3J0IHRlc3RjYXNlCi0KLWNsYXNzIFRpbmZvaWxUZXN0cyhvZVNlbGZUZXN0KToKLSAgICAiIiIgQmFzaWMgdGVzdHMgZm9yIHRoZSB0aW5mb2lsIEFQSSAiIiIKLQotICAgIEB0ZXN0Y2FzZSgxNTY4KQotICAgIGRlZiB0ZXN0X2dldHZhcihzZWxmKToKLSAgICAgICAgd2l0aCBiYi50aW5mb2lsLlRpbmZvaWwoKSBhcyB0aW5mb2lsOgotICAgICAgICAgICAgdGluZm9pbC5wcmVwYXJlKFRydWUpCi0gICAgICAgICAgICBtYWNoaW5lID0gdGluZm9pbC5jb25maWdfZGF0YS5nZXRWYXIoJ01BQ0hJTkUnKQotICAgICAgICAgICAgaWYgbm90IG1hY2hpbmU6Ci0gICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdVbmFibGUgdG8gZ2V0IE1BQ0hJTkUgdmFsdWUgLSByZXR1cm5lZCAlcycgJSBtYWNoaW5lKQotCi0gICAgQHRlc3RjYXNlKDE1NjkpCi0gICAgZGVmIHRlc3RfZXhwYW5kKHNlbGYpOgotICAgICAgICB3aXRoIGJiLnRpbmZvaWwuVGluZm9pbCgpIGFzIHRpbmZvaWw6Ci0gICAgICAgICAgICB0aW5mb2lsLnByZXBhcmUoVHJ1ZSkKLSAgICAgICAgICAgIGV4cHIgPSAnJHtAb3MuZ2V0cGlkKCl9JwotICAgICAgICAgICAgcGlkID0gdGluZm9pbC5jb25maWdfZGF0YS5leHBhbmQoZXhwcikKLSAgICAgICAgICAgIGlmIG5vdCBwaWQ6Ci0gICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdVbmFibGUgdG8gZXhwYW5kICIlcyIgLSByZXR1cm5lZCAlcycgJSAoZXhwciwgcGlkKSkKLQotICAgIEB0ZXN0Y2FzZSgxNTcwKQotICAgIGRlZiB0ZXN0X2dldHZhcl9iYl9vcmlnZW52KHNlbGYpOgotICAgICAgICB3aXRoIGJiLnRpbmZvaWwuVGluZm9pbCgpIGFzIHRpbmZvaWw6Ci0gICAgICAgICAgICB0aW5mb2lsLnByZXBhcmUoVHJ1ZSkKLSAgICAgICAgICAgIG9yaWdlbnYgPSB0aW5mb2lsLmNvbmZpZ19kYXRhLmdldFZhcignQkJfT1JJR0VOVicsIEZhbHNlKQotICAgICAgICAgICAgaWYgbm90IG9yaWdlbnY6Ci0gICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdVbmFibGUgdG8gZ2V0IEJCX09SSUdFTlYgdmFsdWUgLSByZXR1cm5lZCAlcycgJSBvcmlnZW52KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcmlnZW52LmdldFZhcignSE9NRScsIEZhbHNlKSwgb3MuZW52aXJvblsnSE9NRSddKQotCi0gICAgQHRlc3RjYXNlKDE1NzEpCi0gICAgZGVmIHRlc3RfcGFyc2VfcmVjaXBlKHNlbGYpOgotICAgICAgICB3aXRoIGJiLnRpbmZvaWwuVGluZm9pbCgpIGFzIHRpbmZvaWw6Ci0gICAgICAgICAgICB0aW5mb2lsLnByZXBhcmUoY29uZmlnX29ubHk9RmFsc2UsIHF1aWV0PTIpCi0gICAgICAgICAgICB0ZXN0cmVjaXBlID0gJ21kYWRtJwotICAgICAgICAgICAgYmVzdCA9IHRpbmZvaWwuZmluZF9iZXN0X3Byb3ZpZGVyKHRlc3RyZWNpcGUpCi0gICAgICAgICAgICBpZiBub3QgYmVzdDoKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuYWJsZSB0byBmaW5kIHJlY2lwZSBwcm92aWRpbmcgJXMnICUgdGVzdHJlY2lwZSkKLSAgICAgICAgICAgIHJkID0gdGluZm9pbC5wYXJzZV9yZWNpcGVfZmlsZShiZXN0WzNdKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0cmVjaXBlLCByZC5nZXRWYXIoJ1BOJykpCi0KLSAgICBAdGVzdGNhc2UoMTU3MikKLSAgICBkZWYgdGVzdF9wYXJzZV9yZWNpcGVfY29weV9leHBhbmQoc2VsZik6Ci0gICAgICAgIHdpdGggYmIudGluZm9pbC5UaW5mb2lsKCkgYXMgdGluZm9pbDoKLSAgICAgICAgICAgIHRpbmZvaWwucHJlcGFyZShjb25maWdfb25seT1GYWxzZSwgcXVpZXQ9MikKLSAgICAgICAgICAgIHRlc3RyZWNpcGUgPSAnbWRhZG0nCi0gICAgICAgICAgICBiZXN0ID0gdGluZm9pbC5maW5kX2Jlc3RfcHJvdmlkZXIodGVzdHJlY2lwZSkKLSAgICAgICAgICAgIGlmIG5vdCBiZXN0OgotICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5hYmxlIHRvIGZpbmQgcmVjaXBlIHByb3ZpZGluZyAlcycgJSB0ZXN0cmVjaXBlKQotICAgICAgICAgICAgcmQgPSB0aW5mb2lsLnBhcnNlX3JlY2lwZV9maWxlKGJlc3RbM10pCi0gICAgICAgICAgICAjIENoZWNrIHdlIGNhbiBnZXQgdmFyaWFibGUgdmFsdWVzCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RyZWNpcGUsIHJkLmdldFZhcignUE4nKSkKLSAgICAgICAgICAgICMgQ2hlY2sgdGhhdCBleHBhbmRpbmcgYSB2YWx1ZSB0aGF0IGluY2x1ZGVzIGEgdmFyaWFibGUgcmVmZXJlbmNlIHdvcmtzCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RyZWNpcGUsIHJkLmdldFZhcignQlBOJykpCi0gICAgICAgICAgICAjIE5vdyBjaGVjayB0aGF0IGNoYW5naW5nIHRoZSByZWZlcmVuY2VkIHZhcmlhYmxlJ3MgdmFsdWUgaW4gYSBjb3B5IGdpdmVzIHRoYXQKLSAgICAgICAgICAgICMgdmFsdWUgd2hlbiBleHBhbmRpbmcKLSAgICAgICAgICAgIGxvY2FsZGF0YSA9IGJiLmRhdGEuY3JlYXRlQ29weShyZCkKLSAgICAgICAgICAgIGxvY2FsZGF0YS5zZXRWYXIoJ1BOJywgJ2hlbGxvJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2hlbGxvJywgbG9jYWxkYXRhLmdldFZhcignQlBOJykpCi0KLSAgICBAdGVzdGNhc2UoMTU3MykKLSAgICBkZWYgdGVzdF9wYXJzZV9yZWNpcGVfaW5pdGlhbF9kYXRhc3RvcmUoc2VsZik6Ci0gICAgICAgIHdpdGggYmIudGluZm9pbC5UaW5mb2lsKCkgYXMgdGluZm9pbDoKLSAgICAgICAgICAgIHRpbmZvaWwucHJlcGFyZShjb25maWdfb25seT1GYWxzZSwgcXVpZXQ9MikKLSAgICAgICAgICAgIHRlc3RyZWNpcGUgPSAnbWRhZG0nCi0gICAgICAgICAgICBiZXN0ID0gdGluZm9pbC5maW5kX2Jlc3RfcHJvdmlkZXIodGVzdHJlY2lwZSkKLSAgICAgICAgICAgIGlmIG5vdCBiZXN0OgotICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5hYmxlIHRvIGZpbmQgcmVjaXBlIHByb3ZpZGluZyAlcycgJSB0ZXN0cmVjaXBlKQotICAgICAgICAgICAgZGNvcHkgPSBiYi5kYXRhLmNyZWF0ZUNvcHkodGluZm9pbC5jb25maWdfZGF0YSkKLSAgICAgICAgICAgIGRjb3B5LnNldFZhcignTVlWQVJJQUJMRScsICdzb21ldmFsdWUnKQotICAgICAgICAgICAgcmQgPSB0aW5mb2lsLnBhcnNlX3JlY2lwZV9maWxlKGJlc3RbM10sIGNvbmZpZ19kYXRhPWRjb3B5KQotICAgICAgICAgICAgIyBDaGVjayB3ZSBjYW4gZ2V0IHZhcmlhYmxlIHZhbHVlcwotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnc29tZXZhbHVlJywgcmQuZ2V0VmFyKCdNWVZBUklBQkxFJykpCi0KLSAgICBAdGVzdGNhc2UoMTU3NCkKLSAgICBkZWYgdGVzdF9saXN0X3JlY2lwZXMoc2VsZik6Ci0gICAgICAgIHdpdGggYmIudGluZm9pbC5UaW5mb2lsKCkgYXMgdGluZm9pbDoKLSAgICAgICAgICAgIHRpbmZvaWwucHJlcGFyZShjb25maWdfb25seT1GYWxzZSwgcXVpZXQ9MikKLSAgICAgICAgICAgICMgQ2hlY2sgcGtnX3BuCi0gICAgICAgICAgICBjaGVja3BucyA9IFsndGFyJywgJ2F1dG9tYWtlJywgJ2NvcmV1dGlscycsICdtNC1uYXRpdmUnLCAnbmF0aXZlc2RrLWdjYyddCi0gICAgICAgICAgICBwa2dfcG4gPSB0aW5mb2lsLmNvb2tlci5yZWNpcGVjYWNoZXNbJyddLnBrZ19wbgotICAgICAgICAgICAgZm9yIHBuIGluIGNoZWNrcG5zOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocG4sIHBrZ19wbikKLSAgICAgICAgICAgICMgQ2hlY2sgcGtnX2ZuCi0gICAgICAgICAgICBjaGVja2ZucyA9IHsnbmF0aXZlc2RrLWdjYyc6ICdedmlydHVhbDpuYXRpdmVzZGs6LionLCAnY29yZXV0aWxzJzogJy4qL2NvcmV1dGlsc18uKi5iYid9Ci0gICAgICAgICAgICBmb3IgZm4sIHBuIGluIHRpbmZvaWwuY29va2VyLnJlY2lwZWNhY2hlc1snJ10ucGtnX2ZuLml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgaWYgcG4gaW4gY2hlY2twbnM6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHBuIGluIGNoZWNrZm5zOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKGNoZWNrZm5zW3BuXSwgZm4pLCAnRW50cnkgZm9yICVzOiAlcyBkaWQgbm90IG1hdGNoICVzJyAlIChwbiwgZm4sIGNoZWNrZm5zW3BuXSkpCi0gICAgICAgICAgICAgICAgICAgIGNoZWNrcG5zLnJlbW92ZShwbikKLSAgICAgICAgICAgIGlmIGNoZWNrcG5zOgotICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5hYmxlIHRvIGZpbmQgcGtnX2ZuIGVudHJpZXMgZm9yOiAlcycgJSAnLCAnLmpvaW4oY2hlY2twbnMpKQotCi0gICAgQHRlc3RjYXNlKDE1NzUpCi0gICAgZGVmIHRlc3Rfd2FpdF9ldmVudChzZWxmKToKLSAgICAgICAgd2l0aCBiYi50aW5mb2lsLlRpbmZvaWwoKSBhcyB0aW5mb2lsOgotICAgICAgICAgICAgdGluZm9pbC5wcmVwYXJlKGNvbmZpZ19vbmx5PVRydWUpCi0gICAgICAgICAgICAjIE5lZWQgdG8gZHJhaW4gZXZlbnRzIG90aGVyd2lzZSBldmVudHMgdGhhdCB3aWxsIGJlIG1hc2tlZCB3aWxsIHN0aWxsIGJlIGluIHRoZSBxdWV1ZQotICAgICAgICAgICAgd2hpbGUgdGluZm9pbC53YWl0X2V2ZW50KDAuMjUpOgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgIHRpbmZvaWwuc2V0X2V2ZW50X21hc2soWydiYi5ldmVudC5GaWxlc01hdGNoaW5nRm91bmQnLCAnYmIuY29tbWFuZC5Db21tYW5kQ29tcGxldGVkJ10pCi0gICAgICAgICAgICBwYXR0ZXJuID0gJ2NvbmYnCi0gICAgICAgICAgICByZXMgPSB0aW5mb2lsLnJ1bl9jb21tYW5kKCdmaW5kRmlsZXNNYXRjaGluZ0luRGlyJywgcGF0dGVybiwgJ2NvbmYvbWFjaGluZScpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzKQotCi0gICAgICAgICAgICBldmVudHJlY2VpdmVkID0gRmFsc2UKLSAgICAgICAgICAgIHdhaXRjb3VudCA9IDUKLSAgICAgICAgICAgIHdoaWxlIHdhaXRjb3VudCA+IDA6Ci0gICAgICAgICAgICAgICAgZXZlbnQgPSB0aW5mb2lsLndhaXRfZXZlbnQoMSkKLSAgICAgICAgICAgICAgICBpZiBldmVudDoKLSAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuY29tbWFuZC5Db21tYW5kQ29tcGxldGVkKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwgYmIuZXZlbnQuRmlsZXNNYXRjaGluZ0ZvdW5kKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF0dGVybiwgZXZlbnQuX3BhdHRlcm4pCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdxZW11YXJtLmNvbmYnLCBldmVudC5fbWF0Y2hlcykKLSAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50cmVjZWl2ZWQgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuZXhwZWN0ZWQgZXZlbnQ6ICVzJyAlIGV2ZW50KQotCi0gICAgICAgICAgICAgICAgd2FpdGNvdW50ID0gd2FpdGNvdW50IC0gMQotCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHdhaXRjb3VudCwgMCwgJ1RpbWVkIG91dCB3YWl0aW5nIGZvciBDb21tYW5kQ29tcGxldGVkIGV2ZW50IGZyb20gYml0YmFrZSBzZXJ2ZXInKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGV2ZW50cmVjZWl2ZWQsICdEaWQgbm90IHJlY2VpdmUgRmlsZXNNYXRjaGluZ0ZvdW5kIGV2ZW50IGZyb20gYml0YmFrZSBzZXJ2ZXInKQotCi0gICAgQHRlc3RjYXNlKDE1NzYpCi0gICAgZGVmIHRlc3Rfc2V0dmFyaWFibGVfY2xlYW4oc2VsZik6Ci0gICAgICAgICMgRmlyc3QgY2hlY2sgdGhhdCBzZXRWYXJpYWJsZSBhZmZlY3RzIHRoZSBkYXRhc3RvcmUKLSAgICAgICAgd2l0aCBiYi50aW5mb2lsLlRpbmZvaWwoKSBhcyB0aW5mb2lsOgotICAgICAgICAgICAgdGluZm9pbC5wcmVwYXJlKGNvbmZpZ19vbmx5PVRydWUpCi0gICAgICAgICAgICB0aW5mb2lsLnJ1bl9jb21tYW5kKCdzZXRWYXJpYWJsZScsICdURVNUVkFSJywgJ3NwZWNpYWx2YWx1ZScpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRpbmZvaWwuY29uZmlnX2RhdGEuZ2V0VmFyKCdURVNUVkFSJyksICdzcGVjaWFsdmFsdWUnLCAnVmFsdWUgc2V0IHVzaW5nIHNldFZhcmlhYmxlIGlzIG5vdCByZWZsZWN0ZWQgaW4gY2xpZW50LXNpZGUgZ2V0VmFyKCknKQotCi0gICAgICAgICMgTm93IGNoZWNrIHRoYXQgdGhlIHNldFZhcmlhYmxlJ3MgZWZmZWN0cyBhcmUgbm8gbG9uZ2VyIHByZXNlbnQKLSAgICAgICAgIyAodGhpcyBtYXkgbGVnaXRpbWF0ZWx5IGJyZWFrIGluIGZ1dHVyZSBpZiB3ZSBzdG9wIHJlaW5pdGlhbGlzaW5nCi0gICAgICAgICMgdGhlIGRhdGFzdG9yZSwgaW4gd2hpY2ggY2FzZSB3ZSdsbCBoYXZlIHRvIHJlY29uc2lkZXIgdXNlIG9mCi0gICAgICAgICMgc2V0VmFyaWFibGUgZW50aXJlbHkpCi0gICAgICAgIHdpdGggYmIudGluZm9pbC5UaW5mb2lsKCkgYXMgdGluZm9pbDoKLSAgICAgICAgICAgIHRpbmZvaWwucHJlcGFyZShjb25maWdfb25seT1UcnVlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh0aW5mb2lsLmNvbmZpZ19kYXRhLmdldFZhcignVEVTVFZBUicpLCAnc3BlY2lhbHZhbHVlJywgJ1ZhbHVlIHNldCB1c2luZyBzZXRWYXJpYWJsZSBpcyBzdGlsbCBwcmVzZW50IScpCi0KLSAgICAgICAgIyBOb3cgY2hlY2sgdGhhdCBzZXRWYXIgb24gdGhlIG1haW4gZGF0YXN0b3JlIHdvcmtzICh1c2VzIHNldFZhcmlhYmxlIGludGVybmFsbHkpCi0gICAgICAgIHdpdGggYmIudGluZm9pbC5UaW5mb2lsKCkgYXMgdGluZm9pbDoKLSAgICAgICAgICAgIHRpbmZvaWwucHJlcGFyZShjb25maWdfb25seT1UcnVlKQotICAgICAgICAgICAgdGluZm9pbC5jb25maWdfZGF0YS5zZXRWYXIoJ1RFU1RWQVInLCAnc3BlY2lhbHZhbHVlJykKLSAgICAgICAgICAgIHZhbHVlID0gdGluZm9pbC5ydW5fY29tbWFuZCgnZ2V0VmFyaWFibGUnLCAnVEVTVFZBUicpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLCAnc3BlY2lhbHZhbHVlJywgJ1ZhbHVlIHNldCB1c2luZyBjb25maWdfZGF0YS5zZXRWYXIoKSBpcyBub3QgcmVmbGVjdGVkIGluIGNvbmZpZ19kYXRhLmdldFZhcigpJykKLQotICAgIGRlZiB0ZXN0X2RhdGFzdG9yZV9vcGVyYXRpb25zKHNlbGYpOgotICAgICAgICB3aXRoIGJiLnRpbmZvaWwuVGluZm9pbCgpIGFzIHRpbmZvaWw6Ci0gICAgICAgICAgICB0aW5mb2lsLnByZXBhcmUoY29uZmlnX29ubHk9VHJ1ZSkKLSAgICAgICAgICAgICMgVGVzdCBzZXRWYXJGbGFnKCkgLyBnZXRWYXJGbGFnKCkKLSAgICAgICAgICAgIHRpbmZvaWwuY29uZmlnX2RhdGEuc2V0VmFyRmxhZygnVEVTVFZBUicsICdmbGFnbmFtZScsICdmbGFndmFsJykKLSAgICAgICAgICAgIHZhbHVlID0gdGluZm9pbC5jb25maWdfZGF0YS5nZXRWYXJGbGFnKCdURVNUVkFSJywgJ2ZsYWduYW1lJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUsICdmbGFndmFsJywgJ1ZhbHVlIHNldCB1c2luZyBjb25maWdfZGF0YS5zZXRWYXJGbGFnKCkgaXMgbm90IHJlZmxlY3RlZCBpbiBjb25maWdfZGF0YS5nZXRWYXJGbGFnKCknKQotICAgICAgICAgICAgIyBUZXN0IGRlbFZhckZsYWcoKQotICAgICAgICAgICAgdGluZm9pbC5jb25maWdfZGF0YS5zZXRWYXJGbGFnKCdURVNUVkFSJywgJ290aGVyZmxhZycsICdvdGhlcnZhbHVlJykKLSAgICAgICAgICAgIHRpbmZvaWwuY29uZmlnX2RhdGEuZGVsVmFyRmxhZygnVEVTVFZBUicsICdmbGFnbmFtZScpCi0gICAgICAgICAgICB2YWx1ZSA9IHRpbmZvaWwuY29uZmlnX2RhdGEuZ2V0VmFyRmxhZygnVEVTVFZBUicsICdmbGFnbmFtZScpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLCBOb25lLCAnVmFyZmxhZyBkZWxldGVkIHVzaW5nIGNvbmZpZ19kYXRhLmRlbFZhckZsYWcoKSBpcyBub3QgcmVmbGVjdGVkIGluIGNvbmZpZ19kYXRhLmdldFZhckZsYWcoKScpCi0gICAgICAgICAgICB2YWx1ZSA9IHRpbmZvaWwuY29uZmlnX2RhdGEuZ2V0VmFyRmxhZygnVEVTVFZBUicsICdvdGhlcmZsYWcnKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZSwgJ290aGVydmFsdWUnLCAnVmFyZmxhZyBkZWxldGVkIHVzaW5nIGNvbmZpZ19kYXRhLmRlbFZhckZsYWcoKSBjYXVzZWQgdW5yZWxhdGVkIGZsYWcgdG8gYmUgcmVtb3ZlZCcpCi0gICAgICAgICAgICAjIFRlc3QgZGVsVmFyKCkKLSAgICAgICAgICAgIHRpbmZvaWwuY29uZmlnX2RhdGEuc2V0VmFyKCdURVNUVkFSJywgJ3ZhcnZhbHVlJykKLSAgICAgICAgICAgIHZhbHVlID0gdGluZm9pbC5jb25maWdfZGF0YS5nZXRWYXIoJ1RFU1RWQVInKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZSwgJ3ZhcnZhbHVlJywgJ1ZhbHVlIHNldCB1c2luZyBjb25maWdfZGF0YS5zZXRWYXIoKSBpcyBub3QgcmVmbGVjdGVkIGluIGNvbmZpZ19kYXRhLmdldFZhcigpJykKLSAgICAgICAgICAgIHRpbmZvaWwuY29uZmlnX2RhdGEuZGVsVmFyKCdURVNUVkFSJykKLSAgICAgICAgICAgIHZhbHVlID0gdGluZm9pbC5jb25maWdfZGF0YS5nZXRWYXIoJ1RFU1RWQVInKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZSwgTm9uZSwgJ1ZhcmlhYmxlIGRlbGV0ZWQgdXNpbmcgY29uZmlnX2RhdGEuZGVsVmFyKCkgYXBwZWFycyB0byBzdGlsbCBoYXZlIGEgdmFsdWUnKQotICAgICAgICAgICAgIyBUZXN0IHJlbmFtZVZhcigpCi0gICAgICAgICAgICB0aW5mb2lsLmNvbmZpZ19kYXRhLnNldFZhcignVEVTVFZBUk9MRCcsICdvcmlndmFsdWUnKQotICAgICAgICAgICAgdGluZm9pbC5jb25maWdfZGF0YS5yZW5hbWVWYXIoJ1RFU1RWQVJPTEQnLCAnVEVTVFZBUk5FVycpCi0gICAgICAgICAgICB2YWx1ZSA9IHRpbmZvaWwuY29uZmlnX2RhdGEuZ2V0VmFyKCdURVNUVkFST0xEJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUsIE5vbmUsICdWYXJpYWJsZSByZW5hbWVkIHVzaW5nIGNvbmZpZ19kYXRhLnJlbmFtZVZhcigpIHN0aWxsIHNlZW1zIHRvIGV4aXN0JykKLSAgICAgICAgICAgIHZhbHVlID0gdGluZm9pbC5jb25maWdfZGF0YS5nZXRWYXIoJ1RFU1RWQVJORVcnKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZSwgJ29yaWd2YWx1ZScsICdWYXJpYWJsZSByZW5hbWVkIHVzaW5nIGNvbmZpZ19kYXRhLnJlbmFtZVZhcigpIGRvZXMgbm90IGFwcGVhciB3aXRoIG5ldyBuYW1lJykKLSAgICAgICAgICAgICMgVGVzdCBvdmVycmlkZXMKLSAgICAgICAgICAgIHRpbmZvaWwuY29uZmlnX2RhdGEuc2V0VmFyKCdURVNUVkFSJywgJ29yaWdpbmFsJykKLSAgICAgICAgICAgIHRpbmZvaWwuY29uZmlnX2RhdGEuc2V0VmFyKCdURVNUVkFSX292ZXJyaWRlb25lJywgJ29uZScpCi0gICAgICAgICAgICB0aW5mb2lsLmNvbmZpZ19kYXRhLnNldFZhcignVEVTVFZBUl9vdmVycmlkZXR3bycsICd0d28nKQotICAgICAgICAgICAgdGluZm9pbC5jb25maWdfZGF0YS5hcHBlbmRWYXIoJ09WRVJSSURFUycsICc6b3ZlcnJpZGVvbmUnKQotICAgICAgICAgICAgdmFsdWUgPSB0aW5mb2lsLmNvbmZpZ19kYXRhLmdldFZhcignVEVTVFZBUicpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLCAnb25lJywgJ1ZhcmlhYmxlIG92ZXJyaWRlcyBub3QgZnVuY3Rpb25pbmcgY29ycmVjdGx5JykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L3dpYy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L3dpYy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzI2YWYxOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC93aWMucHkKKysrIC9kZXYvbnVsbApAQCAtMSw3OTIgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jIGV4OnRzPTQ6c3c9NDpzdHM9NDpldAotIyAtKi0gdGFiLXdpZHRoOiA0OyBjLWJhc2ljLW9mZnNldDogNDsgaW5kZW50LXRhYnMtbW9kZTogbmlsIC0qLQotIwotIyBDb3B5cmlnaHQgKGMpIDIwMTUsIEludGVsIENvcnBvcmF0aW9uLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhcwotIyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KLSMKLSMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSMKLSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSMgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKLSMgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQS4KLSMKLSMgQVVUSE9SUwotIyBFZCBCYXJ0b3NoIDxlZC5iYXJ0b3NoQGxpbnV4LmludGVsLmNvbT4KLQotIiIiVGVzdCBjYXNlcyBmb3Igd2ljLiIiIgotCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLWltcG9ydCB1bml0dGVzdAotCi1mcm9tIGdsb2IgaW1wb3J0IGdsb2IKLWZyb20gc2h1dGlsIGltcG9ydCBybXRyZWUKLWZyb20gZnVuY3Rvb2xzIGltcG9ydCB3cmFwcywgbHJ1X2NhY2hlCi1mcm9tIHRlbXBmaWxlIGltcG9ydCBOYW1lZFRlbXBvcmFyeUZpbGUKLQotZnJvbSBvZXFhLnNlbGZ0ZXN0LmJhc2UgaW1wb3J0IG9lU2VsZlRlc3QKLWZyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kLCBiaXRiYWtlLCBnZXRfYmJfdmFyLCBnZXRfYmJfdmFycywgcnVucWVtdQotZnJvbSBvZXFhLnV0aWxzLmRlY29yYXRvcnMgaW1wb3J0IHRlc3RjYXNlCi0KLQotQGxydV9jYWNoZShtYXhzaXplPTMyKQotZGVmIGdldF9ob3N0X2FyY2gocmVjaXBlKToKLSAgICAiIiJBIGNhY2hlZCBjYWxsIHRvIGdldF9iYl92YXIoJ0hPU1RfQVJDSCcsIDxyZWNpcGU+KSIiIgotICAgIHJldHVybiBnZXRfYmJfdmFyKCdIT1NUX0FSQ0gnLCByZWNpcGUpCi0KLQotZGVmIG9ubHlfZm9yX2FyY2goYXJjaHMsIGltYWdlPSdjb3JlLWltYWdlLW1pbmltYWwnKToKLSAgICAiIiJEZWNvcmF0b3IgZm9yIHdyYXBwaW5nIHRlc3QgY2FzZXMgdGhhdCBjYW4gYmUgcnVuIG9ubHkgZm9yIHNwZWNpZmljIHRhcmdldAotICAgIGFyY2hpdGVjdHVyZXMuIEEgbGlzdCBvZiBjb21wYXRpYmxlIGFyY2hpdGVjdHVyZXMgaXMgcGFzc2VkIGluIGBhcmNoc2AuCi0gICAgQ3VycmVudCBhcmNoaXRlY3R1cmUgd2lsbCBiZSBkZXRlcm1pbmVkIGJ5IHBhcnNpbmcgYml0YmFrZSBvdXRwdXQgZm9yCi0gICAgYGltYWdlYCByZWNpcGUuCi0gICAgIiIiCi0gICAgZGVmIHdyYXBwZXIoZnVuYyk6Ci0gICAgICAgIEB3cmFwcyhmdW5jKQotICAgICAgICBkZWYgd3JhcHBlZF9mKCphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgICAgICBhcmNoID0gZ2V0X2hvc3RfYXJjaChpbWFnZSkKLSAgICAgICAgICAgIGlmIGFyY2hzIGFuZCBhcmNoIG5vdCBpbiBhcmNoczoKLSAgICAgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgiVGVzdGNhc2UgYXJjaCBkZXBlbmRlbmN5IG5vdCBtZXQ6ICVzIiAlIGFyY2gpCi0gICAgICAgICAgICByZXR1cm4gZnVuYygqYXJncywgKiprd2FyZ3MpCi0gICAgICAgIHdyYXBwZWRfZi5fX25hbWVfXyA9IGZ1bmMuX19uYW1lX18KLSAgICAgICAgcmV0dXJuIHdyYXBwZWRfZgotICAgIHJldHVybiB3cmFwcGVyCi0KLQotY2xhc3MgV2ljKG9lU2VsZlRlc3QpOgotICAgICIiIldpYyB0ZXN0IGNsYXNzLiIiIgotCi0gICAgcmVzdWx0ZGlyID0gIi92YXIvdG1wL3dpYy5vZS1zZWxmdGVzdC8iCi0gICAgaW1hZ2VfaXNfcmVhZHkgPSBGYWxzZQotICAgIG5hdGl2ZV9zeXNyb290ID0gTm9uZQotICAgIHdpY2Vudl9jYWNoZSA9IHt9Ci0KLSAgICBkZWYgc2V0VXBMb2NhbChzZWxmKToKLSAgICAgICAgIiIiVGhpcyBjb2RlIGlzIGV4ZWN1dGVkIGJlZm9yZSBlYWNoIHRlc3QgbWV0aG9kLiIiIgotICAgICAgICBpZiBub3Qgc2VsZi5uYXRpdmVfc3lzcm9vdDoKLSAgICAgICAgICAgIFdpYy5uYXRpdmVfc3lzcm9vdCA9IGdldF9iYl92YXIoJ1NUQUdJTkdfRElSX05BVElWRScsICd3aWMtdG9vbHMnKQotCi0gICAgICAgICMgRG8gdGhpcyBoZXJlIGluc3RlYWQgb2YgaW4gc2V0VXBDbGFzcyBhcyB0aGUgYmFzZSBzZXRVcCBkb2VzIHNvbWUKLSAgICAgICAgIyBjbGVhbiB1cCB3aGljaCBjYW4gcmVzdWx0IGluIHRoZSBuYXRpdmUgdG9vbHMgYnVpbHQgZWFybGllciBpbgotICAgICAgICAjIHNldFVwQ2xhc3MgYmVpbmcgdW5hdmFpbGFibGUuCi0gICAgICAgIGlmIG5vdCBXaWMuaW1hZ2VfaXNfcmVhZHk6Ci0gICAgICAgICAgICBpZiBnZXRfYmJfdmFyKCdVU0VfTkxTJykgPT0gJ3llcyc6Ci0gICAgICAgICAgICAgICAgYml0YmFrZSgnd2ljLXRvb2xzJykKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnd2ljLXRvb2xzIGNhbm5vdCBiZSBidWlsdCBkdWUgaXRzIChpbnRsdG9vbHxnZXR0ZXh0KS1uYXRpdmUgZGVwZW5kZW5jeSBhbmQgTkxTIGRpc2FibGUnKQotCi0gICAgICAgICAgICBiaXRiYWtlKCdjb3JlLWltYWdlLW1pbmltYWwnKQotICAgICAgICAgICAgV2ljLmltYWdlX2lzX3JlYWR5ID0gVHJ1ZQotCi0gICAgICAgIHJtdHJlZShzZWxmLnJlc3VsdGRpciwgaWdub3JlX2Vycm9ycz1UcnVlKQotCi0gICAgZGVmIHRlYXJEb3duTG9jYWwoc2VsZik6Ci0gICAgICAgICIiIlJlbW92ZSByZXN1bHRkaXIgYXMgaXQgbWF5IGNvbnRhaW4gaW1hZ2VzLiIiIgotICAgICAgICBybXRyZWUoc2VsZi5yZXN1bHRkaXIsIGlnbm9yZV9lcnJvcnM9VHJ1ZSkKLQotICAgIEB0ZXN0Y2FzZSgxNTUyKQotICAgIGRlZiB0ZXN0X3ZlcnNpb24oc2VsZik6Ci0gICAgICAgICIiIlRlc3Qgd2ljIC0tdmVyc2lvbiIiIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgnd2ljIC0tdmVyc2lvbicpLnN0YXR1cykKLQotICAgIEB0ZXN0Y2FzZSgxMjA4KQotICAgIGRlZiB0ZXN0X2hlbHAoc2VsZik6Ci0gICAgICAgICIiIlRlc3Qgd2ljIC0taGVscCBhbmQgd2ljIC1oIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCd3aWMgLS1oZWxwJykuc3RhdHVzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgnd2ljIC1oJykuc3RhdHVzKQotCi0gICAgQHRlc3RjYXNlKDEyMDkpCi0gICAgZGVmIHRlc3RfY3JlYXRlaGVscChzZWxmKToKLSAgICAgICAgIiIiVGVzdCB3aWMgY3JlYXRlIC0taGVscCIiIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgnd2ljIGNyZWF0ZSAtLWhlbHAnKS5zdGF0dXMpCi0KLSAgICBAdGVzdGNhc2UoMTIxMCkKLSAgICBkZWYgdGVzdF9saXN0aGVscChzZWxmKToKLSAgICAgICAgIiIiVGVzdCB3aWMgbGlzdCAtLWhlbHAiIiIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoJ3dpYyBsaXN0IC0taGVscCcpLnN0YXR1cykKLQotICAgIEB0ZXN0Y2FzZSgxNTUzKQotICAgIGRlZiB0ZXN0X2hlbHBfY3JlYXRlKHNlbGYpOgotICAgICAgICAiIiJUZXN0IHdpYyBoZWxwIGNyZWF0ZSIiIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgnd2ljIGhlbHAgY3JlYXRlJykuc3RhdHVzKQotCi0gICAgQHRlc3RjYXNlKDE1NTQpCi0gICAgZGVmIHRlc3RfaGVscF9saXN0KHNlbGYpOgotICAgICAgICAiIiJUZXN0IHdpYyBoZWxwIGxpc3QiIiIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoJ3dpYyBoZWxwIGxpc3QnKS5zdGF0dXMpCi0KLSAgICBAdGVzdGNhc2UoMTIxNSkKLSAgICBkZWYgdGVzdF9oZWxwX292ZXJ2aWV3KHNlbGYpOgotICAgICAgICAiIiJUZXN0IHdpYyBoZWxwIG92ZXJ2aWV3IiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCd3aWMgaGVscCBvdmVydmlldycpLnN0YXR1cykKLQotICAgIEB0ZXN0Y2FzZSgxMjE2KQotICAgIGRlZiB0ZXN0X2hlbHBfcGx1Z2lucyhzZWxmKToKLSAgICAgICAgIiIiVGVzdCB3aWMgaGVscCBwbHVnaW5zIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCd3aWMgaGVscCBwbHVnaW5zJykuc3RhdHVzKQotCi0gICAgQHRlc3RjYXNlKDEyMTcpCi0gICAgZGVmIHRlc3RfaGVscF9raWNrc3RhcnQoc2VsZik6Ci0gICAgICAgICIiIlRlc3Qgd2ljIGhlbHAga2lja3N0YXJ0IiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCd3aWMgaGVscCBraWNrc3RhcnQnKS5zdGF0dXMpCi0KLSAgICBAdGVzdGNhc2UoMTU1NSkKLSAgICBkZWYgdGVzdF9saXN0X2ltYWdlcyhzZWxmKToKLSAgICAgICAgIiIiVGVzdCB3aWMgbGlzdCBpbWFnZXMiIiIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoJ3dpYyBsaXN0IGltYWdlcycpLnN0YXR1cykKLQotICAgIEB0ZXN0Y2FzZSgxNTU2KQotICAgIGRlZiB0ZXN0X2xpc3Rfc291cmNlX3BsdWdpbnMoc2VsZik6Ci0gICAgICAgICIiIlRlc3Qgd2ljIGxpc3Qgc291cmNlLXBsdWdpbnMiIiIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoJ3dpYyBsaXN0IHNvdXJjZS1wbHVnaW5zJykuc3RhdHVzKQotCi0gICAgQHRlc3RjYXNlKDE1NTcpCi0gICAgZGVmIHRlc3RfbGlzdGVkX2ltYWdlc19oZWxwKHNlbGYpOgotICAgICAgICAiIiJUZXN0IHdpYyBsaXN0ZWQgaW1hZ2VzIGhlbHAiIiIKLSAgICAgICAgb3V0cHV0ID0gcnVuQ21kKCd3aWMgbGlzdCBpbWFnZXMnKS5vdXRwdXQKLSAgICAgICAgaW1hZ2VsaXN0ID0gW2xpbmUuc3BsaXQoKVswXSBmb3IgbGluZSBpbiBvdXRwdXQuc3BsaXRsaW5lcygpXQotICAgICAgICBmb3IgaW1hZ2UgaW4gaW1hZ2VsaXN0OgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoJ3dpYyBsaXN0ICVzIGhlbHAnICUgaW1hZ2UpLnN0YXR1cykKLQotICAgIEB0ZXN0Y2FzZSgxMjEzKQotICAgIGRlZiB0ZXN0X3Vuc3VwcG9ydGVkX3N1YmNvbW1hbmQoc2VsZik6Ci0gICAgICAgICIiIlRlc3QgdW5zdXBwb3J0ZWQgc3ViY29tbWFuZCIiIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIHJ1bkNtZCgnd2ljIHVuc3VwcG9ydGVkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlX3N0YXR1cz1UcnVlKS5zdGF0dXMpCi0KLSAgICBAdGVzdGNhc2UoMTIxNCkKLSAgICBkZWYgdGVzdF9ub19jb21tYW5kKHNlbGYpOgotICAgICAgICAiIiJUZXN0IHdpYyB3aXRob3V0IGNvbW1hbmQiIiIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBydW5DbWQoJ3dpYycsIGlnbm9yZV9zdGF0dXM9VHJ1ZSkuc3RhdHVzKQotCi0gICAgQHRlc3RjYXNlKDEyMTEpCi0gICAgZGVmIHRlc3RfYnVpbGRfaW1hZ2VfbmFtZShzZWxmKToKLSAgICAgICAgIiIiVGVzdCB3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrIC0taW1hZ2UtbmFtZT1jb3JlLWltYWdlLW1pbmltYWwiIiIKLSAgICAgICAgY21kID0gIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgLS1pbWFnZS1uYW1lPWNvcmUtaW1hZ2UtbWluaW1hbCAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZChjbWQpLnN0YXR1cykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJ3aWN0ZXN0ZGlzay0qLmRpcmVjdCIpKSkKLQotICAgIEB0ZXN0Y2FzZSgxMTU3KQotICAgIEBvbmx5X2Zvcl9hcmNoKFsnaTU4NicsICdpNjg2JywgJ3g4Nl82NCddKQotICAgIGRlZiB0ZXN0X2dwdF9pbWFnZShzZWxmKToKLSAgICAgICAgIiIiVGVzdCBjcmVhdGlvbiBvZiBjb3JlLWltYWdlLW1pbmltYWwgd2l0aCBncHQgdGFibGUgYW5kIFVVSUQgYm9vdCIiIgotICAgICAgICBjbWQgPSAid2ljIGNyZWF0ZSBkaXJlY3RkaXNrLWdwdCAtLWltYWdlLW5hbWUgY29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKGNtZCkuc3RhdHVzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgImRpcmVjdGRpc2stKi5kaXJlY3QiKSkpCi0KLSAgICBAdGVzdGNhc2UoMTM0NikKLSAgICBAb25seV9mb3JfYXJjaChbJ2k1ODYnLCAnaTY4NicsICd4ODZfNjQnXSkKLSAgICBkZWYgdGVzdF9pc29faW1hZ2Uoc2VsZik6Ci0gICAgICAgICIiIlRlc3QgY3JlYXRpb24gb2YgaHlicmlkIGlzbyBpbWFnZSB3aXRoIGxlZ2FjeSBhbmQgRUZJIGJvb3QiIiIKLSAgICAgICAgY29uZmlnID0gJ0lOSVRSQU1GU19JTUFHRSA9ICJjb3JlLWltYWdlLW1pbmltYWwtaW5pdHJhbWZzIlxuJ1wKLSAgICAgICAgICAgICAgICAgJ01BQ0hJTkVfRkVBVFVSRVNfYXBwZW5kID0gIiBlZmkiXG4nCi0gICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZyhjb25maWcpCi0gICAgICAgIGJpdGJha2UoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCi0gICAgICAgIHNlbGYucmVtb3ZlX2NvbmZpZyhjb25maWcpCi0gICAgICAgIGNtZCA9ICJ3aWMgY3JlYXRlIG1raHlicmlkaXNvIC0taW1hZ2UtbmFtZSBjb3JlLWltYWdlLW1pbmltYWwgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoY21kKS5zdGF0dXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAiSFlCUklEX0lTT19JTUctKi5kaXJlY3QiKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAiSFlCUklEX0lTT19JTUctKi5pc28iKSkpCi0KLSAgICBAdGVzdGNhc2UoMTM0OCkKLSAgICBAb25seV9mb3JfYXJjaChbJ2k1ODYnLCAnaTY4NicsICd4ODZfNjQnXSkKLSAgICBkZWYgdGVzdF9xZW11eDg2X2RpcmVjdGRpc2soc2VsZik6Ci0gICAgICAgICIiIlRlc3QgY3JlYXRpb24gb2YgcWVtdXgtODYtZGlyZWN0ZGlzayBpbWFnZSIiIgotICAgICAgICBjbWQgPSAid2ljIGNyZWF0ZSBxZW11eDg2LWRpcmVjdGRpc2sgLWUgY29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKGNtZCkuc3RhdHVzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgInFlbXV4ODYtZGlyZWN0ZGlzay0qZGlyZWN0IikpKQotCi0gICAgQHRlc3RjYXNlKDEzNTApCi0gICAgQG9ubHlfZm9yX2FyY2goWydpNTg2JywgJ2k2ODYnLCAneDg2XzY0J10pCi0gICAgZGVmIHRlc3RfbWtlZmlkaXNrKHNlbGYpOgotICAgICAgICAiIiJUZXN0IGNyZWF0aW9uIG9mIG1rZWZpZGlzayBpbWFnZSIiIgotICAgICAgICBjbWQgPSAid2ljIGNyZWF0ZSBta2VmaWRpc2sgLWUgY29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKGNtZCkuc3RhdHVzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIm1rZWZpZGlzay0qZGlyZWN0IikpKQotCi0gICAgQHRlc3RjYXNlKDEzODUpCi0gICAgQG9ubHlfZm9yX2FyY2goWydpNTg2JywgJ2k2ODYnLCAneDg2XzY0J10pCi0gICAgZGVmIHRlc3RfYm9vdGxvYWRlcl9jb25maWcoc2VsZik6Ci0gICAgICAgICIiIlRlc3QgY3JlYXRpb24gb2YgZGlyZWN0ZGlzay1ib290bG9hZGVyLWNvbmZpZyBpbWFnZSIiIgotICAgICAgICBjbWQgPSAid2ljIGNyZWF0ZSBkaXJlY3RkaXNrLWJvb3Rsb2FkZXItY29uZmlnIC1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZChjbWQpLnN0YXR1cykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJkaXJlY3RkaXNrLWJvb3Rsb2FkZXItY29uZmlnLSpkaXJlY3QiKSkpCi0KLSAgICBAdGVzdGNhc2UoMTU2MCkKLSAgICBAb25seV9mb3JfYXJjaChbJ2k1ODYnLCAnaTY4NicsICd4ODZfNjQnXSkKLSAgICBkZWYgdGVzdF9zeXN0ZW1kX2Jvb3RkaXNrKHNlbGYpOgotICAgICAgICAiIiJUZXN0IGNyZWF0aW9uIG9mIHN5c3RlbWQtYm9vdGRpc2sgaW1hZ2UiIiIKLSAgICAgICAgY29uZmlnID0gJ01BQ0hJTkVfRkVBVFVSRVNfYXBwZW5kID0gIiBlZmkiXG4nCi0gICAgICAgIHNlbGYuYXBwZW5kX2NvbmZpZyhjb25maWcpCi0gICAgICAgIGJpdGJha2UoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpCi0gICAgICAgIHNlbGYucmVtb3ZlX2NvbmZpZyhjb25maWcpCi0gICAgICAgIGNtZCA9ICJ3aWMgY3JlYXRlIHN5c3RlbWQtYm9vdGRpc2sgLWUgY29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKGNtZCkuc3RhdHVzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgInN5c3RlbWQtYm9vdGRpc2stKmRpcmVjdCIpKSkKLQotICAgIEB0ZXN0Y2FzZSgxNTYxKQotICAgIGRlZiB0ZXN0X3NkaW1hZ2VfYm9vdHBhcnQoc2VsZik6Ci0gICAgICAgICIiIlRlc3QgY3JlYXRpb24gb2Ygc2RpbWFnZS1ib290cGFydCBpbWFnZSIiIgotICAgICAgICBjbWQgPSAid2ljIGNyZWF0ZSBzZGltYWdlLWJvb3RwYXJ0IC1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcgotICAgICAgICBraW1ndHlwZSA9IGdldF9iYl92YXIoJ0tFUk5FTF9JTUFHRVRZUEUnLCAnY29yZS1pbWFnZS1taW5pbWFsJykKLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoJ0lNQUdFX0JPT1RfRklMRVMgPSAiJXMiXG4nICUga2ltZ3R5cGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKGNtZCkuc3RhdHVzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgInNkaW1hZ2UtYm9vdHBhcnQtKmRpcmVjdCIpKSkKLQotICAgIEB0ZXN0Y2FzZSgxNTYyKQotICAgIEBvbmx5X2Zvcl9hcmNoKFsnaTU4NicsICdpNjg2JywgJ3g4Nl82NCddKQotICAgIGRlZiB0ZXN0X2RlZmF1bHRfb3V0cHV0X2RpcihzZWxmKToKLSAgICAgICAgIiIiVGVzdCBkZWZhdWx0IG91dHB1dCBsb2NhdGlvbiIiIgotICAgICAgICBmb3IgZm5hbWUgaW4gZ2xvYigiZGlyZWN0ZGlzay0qLmRpcmVjdCIpOgotICAgICAgICAgICAgb3MucmVtb3ZlKGZuYW1lKQotICAgICAgICBjbWQgPSAid2ljIGNyZWF0ZSBkaXJlY3RkaXNrIC1lIGNvcmUtaW1hZ2UtbWluaW1hbCIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoY21kKS5zdGF0dXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2IoImRpcmVjdGRpc2stKi5kaXJlY3QiKSkpCi0KLSAgICBAdGVzdGNhc2UoMTIxMikKLSAgICBAb25seV9mb3JfYXJjaChbJ2k1ODYnLCAnaTY4NicsICd4ODZfNjQnXSkKLSAgICBkZWYgdGVzdF9idWlsZF9hcnRpZmFjdHMoc2VsZik6Ci0gICAgICAgICIiIlRlc3Qgd2ljIGNyZWF0ZSBkaXJlY3RkaXNrIHByb3ZpZGluZyBhbGwgYXJ0aWZhY3RzLiIiIgotICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydTVEFHSU5HX0RBVEFESVInLCAnUkVDSVBFX1NZU1JPT1RfTkFUSVZFJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2ljLXRvb2xzJykKLSAgICAgICAgYmJfdmFycy51cGRhdGUoZ2V0X2JiX3ZhcnMoWydERVBMT1lfRElSX0lNQUdFJywgJ0lNQUdFX1JPT1RGUyddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29yZS1pbWFnZS1taW5pbWFsJykpCi0gICAgICAgIGJidmFycyA9IHtrZXkubG93ZXIoKTogdmFsdWUgZm9yIGtleSwgdmFsdWUgaW4gYmJfdmFycy5pdGVtcygpfQotICAgICAgICBiYnZhcnNbJ3Jlc3VsdGRpciddID0gc2VsZi5yZXN1bHRkaXIKLSAgICAgICAgc3RhdHVzID0gcnVuQ21kKCJ3aWMgY3JlYXRlIGRpcmVjdGRpc2sgIgotICAgICAgICAgICAgICAgICAgICAgICAgIi1iICUoc3RhZ2luZ19kYXRhZGlyKXMgIgotICAgICAgICAgICAgICAgICAgICAgICAgIi1rICUoZGVwbG95X2Rpcl9pbWFnZSlzICIKLSAgICAgICAgICAgICAgICAgICAgICAgICItbiAlKHJlY2lwZV9zeXNyb290X25hdGl2ZSlzICIKLSAgICAgICAgICAgICAgICAgICAgICAgICItciAlKGltYWdlX3Jvb3RmcylzICIKLSAgICAgICAgICAgICAgICAgICAgICAgICItbyAlKHJlc3VsdGRpcilzIiAlIGJidmFycykuc3RhdHVzCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgc3RhdHVzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgImRpcmVjdGRpc2stKi5kaXJlY3QiKSkpCi0KLSAgICBAdGVzdGNhc2UoMTI2NCkKLSAgICBkZWYgdGVzdF9jb21wcmVzc19nemlwKHNlbGYpOgotICAgICAgICAiIiJUZXN0IGNvbXByZXNzaW5nIGFuIGltYWdlIHdpdGggZ3ppcCIiIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWltYWdlLW5hbWUgY29yZS1pbWFnZS1taW5pbWFsICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1jIGd6aXAgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIpLnN0YXR1cykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJ3aWN0ZXN0ZGlzay0qLmRpcmVjdC5neiIpKSkKLQotICAgIEB0ZXN0Y2FzZSgxMjY1KQotICAgIGRlZiB0ZXN0X2NvbXByZXNzX2J6aXAyKHNlbGYpOgotICAgICAgICAiIiJUZXN0IGNvbXByZXNzaW5nIGFuIGltYWdlIHdpdGggYnppcDIiIiIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1pbWFnZS1uYW1lPWNvcmUtaW1hZ2UtbWluaW1hbCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItYyBiemlwMiAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcikuc3RhdHVzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSouZGlyZWN0LmJ6MiIpKSkKLQotICAgIEB0ZXN0Y2FzZSgxMjY2KQotICAgIGRlZiB0ZXN0X2NvbXByZXNzX3h6KHNlbGYpOgotICAgICAgICAiIiJUZXN0IGNvbXByZXNzaW5nIGFuIGltYWdlIHdpdGggeHoiIiIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1pbWFnZS1uYW1lPWNvcmUtaW1hZ2UtbWluaW1hbCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWNvbXByZXNzLXdpdGg9eHogLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIpLnN0YXR1cykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJ3aWN0ZXN0ZGlzay0qLmRpcmVjdC54eiIpKSkKLQotICAgIEB0ZXN0Y2FzZSgxMjY3KQotICAgIGRlZiB0ZXN0X3dyb25nX2NvbXByZXNzb3Ioc2VsZik6Ci0gICAgICAgICIiIlRlc3QgaG93IHdpYyBicmVha3MgaWYgd3JvbmcgY29tcHJlc3NvciBpcyBwcm92aWRlZCIiIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIHJ1bkNtZCgid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWltYWdlLW5hbWU9Y29yZS1pbWFnZS1taW5pbWFsICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1jIHdyb25nIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVfc3RhdHVzPVRydWUpLnN0YXR1cykKLQotICAgIEB0ZXN0Y2FzZSgxNTU4KQotICAgIGRlZiB0ZXN0X2RlYnVnX3Nob3J0KHNlbGYpOgotICAgICAgICAiIiJUZXN0IC1EIG9wdGlvbiIiIgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLWltYWdlLW5hbWU9Y29yZS1pbWFnZS1taW5pbWFsICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1EIC1vICVzIiAlIHNlbGYucmVzdWx0ZGlyKS5zdGF0dXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAid2ljdGVzdGRpc2stKi5kaXJlY3QiKSkpCi0KLSAgICBkZWYgdGVzdF9kZWJ1Z19sb25nKHNlbGYpOgotICAgICAgICAiIiJUZXN0IC0tZGVidWcgb3B0aW9uIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0taW1hZ2UtbmFtZT1jb3JlLWltYWdlLW1pbmltYWwgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1kZWJ1ZyAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcikuc3RhdHVzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSouZGlyZWN0IikpKQotCi0gICAgQHRlc3RjYXNlKDE1NjMpCi0gICAgZGVmIHRlc3Rfc2tpcF9idWlsZF9jaGVja19zaG9ydChzZWxmKToKLSAgICAgICAgIiIiVGVzdCAtcyBvcHRpb24iIiIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1pbWFnZS1uYW1lPWNvcmUtaW1hZ2UtbWluaW1hbCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItcyAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcikuc3RhdHVzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSouZGlyZWN0IikpKQotCi0gICAgZGVmIHRlc3Rfc2tpcF9idWlsZF9jaGVja19sb25nKHNlbGYpOgotICAgICAgICAiIiJUZXN0IC0tc2tpcC1idWlsZC1jaGVjayBvcHRpb24iIiIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1pbWFnZS1uYW1lPWNvcmUtaW1hZ2UtbWluaW1hbCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLXNraXAtYnVpbGQtY2hlY2sgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1vdXRkaXIgJXMiICUgc2VsZi5yZXN1bHRkaXIpLnN0YXR1cykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJ3aWN0ZXN0ZGlzay0qLmRpcmVjdCIpKSkKLQotICAgIEB0ZXN0Y2FzZSgxNTY0KQotICAgIGRlZiB0ZXN0X2J1aWxkX3Jvb3Rmc19zaG9ydChzZWxmKToKLSAgICAgICAgIiIiVGVzdCAtZiBvcHRpb24iIiIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1pbWFnZS1uYW1lPWNvcmUtaW1hZ2UtbWluaW1hbCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItZiAtbyAlcyIgJSBzZWxmLnJlc3VsdGRpcikuc3RhdHVzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSouZGlyZWN0IikpKQotCi0gICAgZGVmIHRlc3RfYnVpbGRfcm9vdGZzX2xvbmcoc2VsZik6Ci0gICAgICAgICIiIlRlc3QgLS1idWlsZC1yb290ZnMgb3B0aW9uIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0taW1hZ2UtbmFtZT1jb3JlLWltYWdlLW1pbmltYWwgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1idWlsZC1yb290ZnMgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1vdXRkaXIgJXMiICUgc2VsZi5yZXN1bHRkaXIpLnN0YXR1cykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJ3aWN0ZXN0ZGlzay0qLmRpcmVjdCIpKSkKLQotICAgIEB0ZXN0Y2FzZSgxMjY4KQotICAgIEBvbmx5X2Zvcl9hcmNoKFsnaTU4NicsICdpNjg2JywgJ3g4Nl82NCddKQotICAgIGRlZiB0ZXN0X3Jvb3Rmc19pbmRpcmVjdF9yZWNpcGVzKHNlbGYpOgotICAgICAgICAiIiJUZXN0IHVzYWdlIG9mIHJvb3RmcyBwbHVnaW4gd2l0aCByb290ZnMgcmVjaXBlcyIiIgotICAgICAgICBzdGF0dXMgPSBydW5DbWQoIndpYyBjcmVhdGUgZGlyZWN0ZGlzay1tdWx0aS1yb290ZnMgIgotICAgICAgICAgICAgICAgICAgICAgICAgIi0taW1hZ2UtbmFtZT1jb3JlLWltYWdlLW1pbmltYWwgIgotICAgICAgICAgICAgICAgICAgICAgICAgIi0tcm9vdGZzIHJvb3RmczE9Y29yZS1pbWFnZS1taW5pbWFsICIKLSAgICAgICAgICAgICAgICAgICAgICAgICItLXJvb3RmcyByb290ZnMyPWNvcmUtaW1hZ2UtbWluaW1hbCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAiLS1vdXRkaXIgJXMiICUgc2VsZi5yZXN1bHRkaXIpLnN0YXR1cwotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHN0YXR1cykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJkaXJlY3RkaXNrLW11bHRpLXJvb3RmcyouZGlyZWN0IikpKQotCi0gICAgQHRlc3RjYXNlKDEyNjkpCi0gICAgQG9ubHlfZm9yX2FyY2goWydpNTg2JywgJ2k2ODYnLCAneDg2XzY0J10pCi0gICAgZGVmIHRlc3Rfcm9vdGZzX2FydGlmYWN0cyhzZWxmKToKLSAgICAgICAgIiIiVGVzdCB1c2FnZSBvZiByb290ZnMgcGx1Z2luIHdpdGggcm9vdGZzIHBhdGhzIiIiCi0gICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ1NUQUdJTkdfREFUQURJUicsICdSRUNJUEVfU1lTUk9PVF9OQVRJVkUnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3aWMtdG9vbHMnKQotICAgICAgICBiYl92YXJzLnVwZGF0ZShnZXRfYmJfdmFycyhbJ0RFUExPWV9ESVJfSU1BR0UnLCAnSU1BR0VfUk9PVEZTJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb3JlLWltYWdlLW1pbmltYWwnKSkKLSAgICAgICAgYmJ2YXJzID0ge2tleS5sb3dlcigpOiB2YWx1ZSBmb3Iga2V5LCB2YWx1ZSBpbiBiYl92YXJzLml0ZW1zKCl9Ci0gICAgICAgIGJidmFyc1snd2tzJ10gPSAiZGlyZWN0ZGlzay1tdWx0aS1yb290ZnMiCi0gICAgICAgIGJidmFyc1sncmVzdWx0ZGlyJ10gPSBzZWxmLnJlc3VsdGRpcgotICAgICAgICBzdGF0dXMgPSBydW5DbWQoIndpYyBjcmVhdGUgJSh3a3MpcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAiLS1ib290aW1nLWRpcj0lKHN0YWdpbmdfZGF0YWRpcilzICIKLSAgICAgICAgICAgICAgICAgICAgICAgICItLWtlcm5lbC1kaXI9JShkZXBsb3lfZGlyX2ltYWdlKXMgIgotICAgICAgICAgICAgICAgICAgICAgICAgIi0tbmF0aXZlLXN5c3Jvb3Q9JShyZWNpcGVfc3lzcm9vdF9uYXRpdmUpcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAiLS1yb290ZnMtZGlyIHJvb3RmczE9JShpbWFnZV9yb290ZnMpcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAiLS1yb290ZnMtZGlyIHJvb3RmczI9JShpbWFnZV9yb290ZnMpcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAiLS1vdXRkaXIgJShyZXN1bHRkaXIpcyIgJSBiYnZhcnMpLnN0YXR1cwotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHN0YXR1cykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICIlKHdrcylzLSouZGlyZWN0IiAlIGJidmFycykpKQotCi0gICAgZGVmIHRlc3RfZXhjbHVkZV9wYXRoKHNlbGYpOgotICAgICAgICAiIiJUZXN0IC0tZXhjbHVkZS1wYXRoIHdrcyBvcHRpb24uIiIiCi0KLSAgICAgICAgb2xkcGF0aCA9IG9zLmVudmlyb25bJ1BBVEgnXQotICAgICAgICBvcy5lbnZpcm9uWydQQVRIJ10gPSBnZXRfYmJfdmFyKCJQQVRIIiwgIndpYy10b29scyIpCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2tzX2ZpbGUgPSAndGVtcC53a3MnCi0gICAgICAgICAgICB3aXRoIG9wZW4od2tzX2ZpbGUsICd3JykgYXMgd2tzOgotICAgICAgICAgICAgICAgIHJvb3Rmc19kaXIgPSBnZXRfYmJfdmFyKCdJTUFHRV9ST09URlMnLCAnY29yZS1pbWFnZS1taW5pbWFsJykKLSAgICAgICAgICAgICAgICB3a3Mud3JpdGUoIiIiCi1wYXJ0IC8gLS1zb3VyY2Ugcm9vdGZzIC0tb25kaXNrIG1tY2JsazAgLS1mc3R5cGU9ZXh0NCAtLWV4Y2x1ZGUtcGF0aCB1c3IKLXBhcnQgL3VzciAtLXNvdXJjZSByb290ZnMgLS1vbmRpc2sgbW1jYmxrMCAtLWZzdHlwZT1leHQ0IC0tcm9vdGZzLWRpciAlcy91c3IKLXBhcnQgL2V0YyAtLXNvdXJjZSByb290ZnMgLS1vbmRpc2sgbW1jYmxrMCAtLWZzdHlwZT1leHQ0IC0tZXhjbHVkZS1wYXRoIGJpbi8gLS1yb290ZnMtZGlyICVzL3VzciIiIgotICAgICAgICAgICAgICAgICAgICAgICAgICAlIChyb290ZnNfZGlyLCByb290ZnNfZGlyKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlICVzIC1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtbyAlcyIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAod2tzX2ZpbGUsIHNlbGYucmVzdWx0ZGlyKSkuc3RhdHVzKQotCi0gICAgICAgICAgICBvcy5yZW1vdmUod2tzX2ZpbGUpCi0gICAgICAgICAgICB3aWNvdXQgPSBnbG9iKHNlbGYucmVzdWx0ZGlyICsgIiVzLSpkaXJlY3QiICUgJ3RlbXAnKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4od2ljb3V0KSkKLQotICAgICAgICAgICAgd2ljaW1nID0gd2ljb3V0WzBdCi0KLSAgICAgICAgICAgICMgdmVyaWZ5IHBhcnRpdGlvbiBzaXplIHdpdGggd2ljCi0gICAgICAgICAgICByZXMgPSBydW5DbWQoInBhcnRlZCAtbSAlcyB1bml0IGIgcCAyPi9kZXYvbnVsbCIgJSB3aWNpbWcpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlcy5zdGF0dXMpCi0KLSAgICAgICAgICAgICMgcGFyc2UgcGFydGVkIG91dHB1dCB3aGljaCBsb29rcyBsaWtlIHRoaXM6Ci0gICAgICAgICAgICAjIEJZVDtcbgotICAgICAgICAgICAgIyAvdmFyL3RtcC93aWMvYnVpbGQvdG1wZnd2amprZl8tMjAxNjExMTAxMjIyLWhkYS5kaXJlY3Q6MjAwTWlCOmZpbGU6NTEyOjUxMjptc2Rvczo6O1xuCi0gICAgICAgICAgICAjIDE6MC4wME1pQjoyMDBNaUI6MjAwTWlCOmV4dDQ6OjtcbgotICAgICAgICAgICAgcGFydGxucyA9IHJlcy5vdXRwdXQuc3BsaXRsaW5lcygpWzI6XQotCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDMsIGxlbihwYXJ0bG5zKSkKLQotICAgICAgICAgICAgZm9yIHBhcnQgaW4gWzEsIDIsIDNdOgotICAgICAgICAgICAgICAgIHBhcnRfZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLnJlc3VsdGRpciwgInNlbGZ0ZXN0X2ltZy5wYXJ0JWQiICUgcGFydCkKLSAgICAgICAgICAgICAgICBwYXJ0bG4gPSBwYXJ0bG5zW3BhcnQtMV0uc3BsaXQoIjoiKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNywgbGVuKHBhcnRsbikpCi0gICAgICAgICAgICAgICAgc3RhcnQgPSBpbnQocGFydGxuWzFdLnJzdHJpcCgiQiIpKSAvIDUxMgotICAgICAgICAgICAgICAgIGxlbmd0aCA9IGludChwYXJ0bG5bM10ucnN0cmlwKCJCIikpIC8gNTEyCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoImRkIGlmPSVzIG9mPSVzIHNraXA9JWQgY291bnQ9JWQiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAod2ljaW1nLCBwYXJ0X2ZpbGUsIHN0YXJ0LCBsZW5ndGgpKS5zdGF0dXMpCi0KLSAgICAgICAgICAgIGRlZiBleHRyYWN0X2ZpbGVzKGRlYnVnZnNfb3V0cHV0KToKLSAgICAgICAgICAgICAgICAiIiIKLSAgICAgICAgICAgICAgICBleHRyYWN0IGZpbGUgbmFtZXMgZnJvbSB0aGUgb3V0cHV0IG9mIGRlYnVnZnMgLVIgJ2xzIC1wJywKLSAgICAgICAgICAgICAgICB3aGljaCBsb29rcyBsaWtlIHRoaXM6Ci0KLSAgICAgICAgICAgICAgICAgLzIvMDQwNzU1LzAvMC8uLy9cbgotICAgICAgICAgICAgICAgICAvMi8wNDA3NTUvMC8wLy4uLy9cbgotICAgICAgICAgICAgICAgICAvMTEvMDQwNzAwLzAvMC9sb3N0K2ZvdW5kXk0vL1xuCi0gICAgICAgICAgICAgICAgIC8xMi8wNDA3NTUvMTAwMi8xMDAyL3J1bi8vXG4KLSAgICAgICAgICAgICAgICAgLzEzLzA0MDc1NS8xMDAyLzEwMDIvc3lzLy9cbgotICAgICAgICAgICAgICAgICAvMTQvMDQwNzU1LzEwMDIvMTAwMi9iaW4vL1xuCi0gICAgICAgICAgICAgICAgIC84MC8wNDA3NTUvMTAwMi8xMDAyL3Zhci8vXG4KLSAgICAgICAgICAgICAgICAgLzkyLzA0MDc1NS8xMDAyLzEwMDIvdG1wLy9cbgotICAgICAgICAgICAgICAgICIiIgotICAgICAgICAgICAgICAgICMgTk9URSB0aGUgb2NjYXNpb25hbCBeTSBpbiBmaWxlIG5hbWVzCi0gICAgICAgICAgICAgICAgcmV0dXJuIFtsaW5lLnNwbGl0KCcvJylbNV0uc3RyaXAoKSBmb3IgbGluZSBpbiBcCi0gICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z2ZzX291dHB1dC5zdHJpcCgpLnNwbGl0KCcvXG4nKV0KLQotICAgICAgICAgICAgIyBUZXN0IHBhcnRpdGlvbiAxLCBzaG91bGQgY29udGFpbiB0aGUgbm9ybWFsIHJvb3QgZGlyZWN0b3JpZXMsIGV4Y2VwdAotICAgICAgICAgICAgIyAvdXNyLgotICAgICAgICAgICAgcmVzID0gcnVuQ21kKCJkZWJ1Z2ZzIC1SICdscyAtcCcgJXMgMj4vZGV2L251bGwiICUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc2VsZi5yZXN1bHRkaXIsICJzZWxmdGVzdF9pbWcucGFydDEiKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcmVzLnN0YXR1cykKLSAgICAgICAgICAgIGZpbGVzID0gZXh0cmFjdF9maWxlcyhyZXMub3V0cHV0KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiZXRjIiwgZmlsZXMpCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCJ1c3IiLCBmaWxlcykKLQotICAgICAgICAgICAgIyBQYXJ0aXRpb24gMiwgc2hvdWxkIGNvbnRhaW4gY29tbW9uIGRpcmVjdG9yaWVzIGZvciAvdXNyLCBub3Qgcm9vdAotICAgICAgICAgICAgIyBkaXJlY3Rvcmllcy4KLSAgICAgICAgICAgIHJlcyA9IHJ1bkNtZCgiZGVidWdmcyAtUiAnbHMgLXAnICVzIDI+L2Rldi9udWxsIiAlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHNlbGYucmVzdWx0ZGlyLCAic2VsZnRlc3RfaW1nLnBhcnQyIikpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlcy5zdGF0dXMpCi0gICAgICAgICAgICBmaWxlcyA9IGV4dHJhY3RfZmlsZXMocmVzLm91dHB1dCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oImV0YyIsIGZpbGVzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigidXNyIiwgZmlsZXMpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEluKCJzaGFyZSIsIGZpbGVzKQotCi0gICAgICAgICAgICAjIFBhcnRpdGlvbiAzLCBzaG91bGQgY29udGFpbiB0aGUgc2FtZSBhcyBwYXJ0aXRpb24gMiwgaW5jbHVkaW5nIHRoZSBiaW4KLSAgICAgICAgICAgICMgZGlyZWN0b3J5LCBidXQgbm90IHRoZSBmaWxlcyBpbnNpZGUgaXQuCi0gICAgICAgICAgICByZXMgPSBydW5DbWQoImRlYnVnZnMgLVIgJ2xzIC1wJyAlcyAyPi9kZXYvbnVsbCIgJSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzZWxmLnJlc3VsdGRpciwgInNlbGZ0ZXN0X2ltZy5wYXJ0MyIpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCByZXMuc3RhdHVzKQotICAgICAgICAgICAgZmlsZXMgPSBleHRyYWN0X2ZpbGVzKHJlcy5vdXRwdXQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCJldGMiLCBmaWxlcykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oInVzciIsIGZpbGVzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigic2hhcmUiLCBmaWxlcykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oImJpbiIsIGZpbGVzKQotICAgICAgICAgICAgcmVzID0gcnVuQ21kKCJkZWJ1Z2ZzIC1SICdscyAtcCBiaW4nICVzIDI+L2Rldi9udWxsIiAlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHNlbGYucmVzdWx0ZGlyLCAic2VsZnRlc3RfaW1nLnBhcnQzIikpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlcy5zdGF0dXMpCi0gICAgICAgICAgICBmaWxlcyA9IGV4dHJhY3RfZmlsZXMocmVzLm91dHB1dCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIi4iLCBmaWxlcykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIi4uIiwgZmlsZXMpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGxlbihmaWxlcykpCi0KLSAgICAgICAgICAgIGZvciBwYXJ0IGluIFsxLCAyLCAzXToKLSAgICAgICAgICAgICAgICBwYXJ0X2ZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi5yZXN1bHRkaXIsICJzZWxmdGVzdF9pbWcucGFydCVkIiAlIHBhcnQpCi0gICAgICAgICAgICAgICAgb3MucmVtb3ZlKHBhcnRfZmlsZSkKLQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgb3MuZW52aXJvblsnUEFUSCddID0gb2xkcGF0aAotCi0gICAgZGVmIHRlc3RfZXhjbHVkZV9wYXRoX2Vycm9ycyhzZWxmKToKLSAgICAgICAgIiIiVGVzdCAtLWV4Y2x1ZGUtcGF0aCB3a3Mgb3B0aW9uIGVycm9yIGhhbmRsaW5nLiIiIgotICAgICAgICB3a3NfZmlsZSA9ICd0ZW1wLndrcycKLQotICAgICAgICAjIEFic29sdXRlIGFyZ3VtZW50LgotICAgICAgICB3aXRoIG9wZW4od2tzX2ZpbGUsICd3JykgYXMgd2tzOgotICAgICAgICAgICAgd2tzLndyaXRlKCJwYXJ0IC8gLS1zb3VyY2Ugcm9vdGZzIC0tb25kaXNrIG1tY2JsazAgLS1mc3R5cGU9ZXh0NCAtLWV4Y2x1ZGUtcGF0aCAvdXNyIikKLSAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgJXMgLWUgY29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHdrc19maWxlLCBzZWxmLnJlc3VsdGRpciksIGlnbm9yZV9zdGF0dXM9VHJ1ZSkuc3RhdHVzKQotICAgICAgICBvcy5yZW1vdmUod2tzX2ZpbGUpCi0KLSAgICAgICAgIyBBcmd1bWVudCBwb2ludGluZyB0byBwYXJlbnQgZGlyZWN0b3J5LgotICAgICAgICB3aXRoIG9wZW4od2tzX2ZpbGUsICd3JykgYXMgd2tzOgotICAgICAgICAgICAgd2tzLndyaXRlKCJwYXJ0IC8gLS1zb3VyY2Ugcm9vdGZzIC0tb25kaXNrIG1tY2JsazAgLS1mc3R5cGU9ZXh0NCAtLWV4Y2x1ZGUtcGF0aCAuLy4vLi4iKQotICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSAlcyAtZSBjb3JlLWltYWdlLW1pbmltYWwgLW8gJXMiIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAod2tzX2ZpbGUsIHNlbGYucmVzdWx0ZGlyKSwgaWdub3JlX3N0YXR1cz1UcnVlKS5zdGF0dXMpCi0gICAgICAgIG9zLnJlbW92ZSh3a3NfZmlsZSkKLQotICAgIEB0ZXN0Y2FzZSgxNDk2KQotICAgIGRlZiB0ZXN0X2JtYXBfc2hvcnQoc2VsZik6Ci0gICAgICAgICIiIlRlc3QgZ2VuZXJhdGlvbiBvZiAuYm1hcCBmaWxlIC1tIG9wdGlvbiIiIgotICAgICAgICBjbWQgPSAid2ljIGNyZWF0ZSB3aWN0ZXN0ZGlzayAtZSBjb3JlLWltYWdlLW1pbmltYWwgLW0gLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIKLSAgICAgICAgc3RhdHVzID0gcnVuQ21kKGNtZCkuc3RhdHVzCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgc3RhdHVzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSpkaXJlY3QiKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAid2ljdGVzdGRpc2stKmRpcmVjdC5ibWFwIikpKQotCi0gICAgZGVmIHRlc3RfYm1hcF9sb25nKHNlbGYpOgotICAgICAgICAiIiJUZXN0IGdlbmVyYXRpb24gb2YgLmJtYXAgZmlsZSAtLWJtYXAgb3B0aW9uIiIiCi0gICAgICAgIGNtZCA9ICJ3aWMgY3JlYXRlIHdpY3Rlc3RkaXNrIC1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtLWJtYXAgLW8gJXMiICUgc2VsZi5yZXN1bHRkaXIKLSAgICAgICAgc3RhdHVzID0gcnVuQ21kKGNtZCkuc3RhdHVzCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgc3RhdHVzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihnbG9iKHNlbGYucmVzdWx0ZGlyICsgIndpY3Rlc3RkaXNrLSpkaXJlY3QiKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAid2ljdGVzdGRpc2stKmRpcmVjdC5ibWFwIikpKQotCi0gICAgZGVmIF9nZXRfaW1hZ2VfZW52X3BhdGgoc2VsZiwgaW1hZ2UpOgotICAgICAgICAiIiJHZW5lcmF0ZSBhbmQgb2J0YWluIHRoZSBwYXRoIHRvIDxpbWFnZT4uZW52IiIiCi0gICAgICAgIGlmIGltYWdlIG5vdCBpbiBzZWxmLndpY2Vudl9jYWNoZToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgYml0YmFrZSgnJXMgLWMgZG9fcm9vdGZzX3dpY2VudicgJSBpbWFnZSkuc3RhdHVzKQotICAgICAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnU1RBR0lOR19ESVInLCAnTUFDSElORSddLCBpbWFnZSkKLSAgICAgICAgICAgIHN0ZGlyID0gYmJfdmFyc1snU1RBR0lOR19ESVInXQotICAgICAgICAgICAgbWFjaGluZSA9IGJiX3ZhcnNbJ01BQ0hJTkUnXQotICAgICAgICAgICAgc2VsZi53aWNlbnZfY2FjaGVbaW1hZ2VdID0gb3MucGF0aC5qb2luKHN0ZGlyLCBtYWNoaW5lLCAnaW1nZGF0YScpCi0gICAgICAgIHJldHVybiBzZWxmLndpY2Vudl9jYWNoZVtpbWFnZV0KLQotICAgIEB0ZXN0Y2FzZSgxMzQ3KQotICAgIGRlZiB0ZXN0X2ltYWdlX2VudihzZWxmKToKLSAgICAgICAgIiIiVGVzdCBnZW5lcmF0aW9uIG9mIDxpbWFnZT4uZW52IGZpbGVzLiIiIgotICAgICAgICBpbWFnZSA9ICdjb3JlLWltYWdlLW1pbmltYWwnCi0gICAgICAgIGltZ2RhdGFkaXIgPSBzZWxmLl9nZXRfaW1hZ2VfZW52X3BhdGgoaW1hZ2UpCi0KLSAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnSU1BR0VfQkFTRU5BTUUnLCAnV0lDVkFSUyddLCBpbWFnZSkKLSAgICAgICAgYmFzZW5hbWUgPSBiYl92YXJzWydJTUFHRV9CQVNFTkFNRSddCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmFzZW5hbWUsIGltYWdlKQotICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKGltZ2RhdGFkaXIsIGJhc2VuYW1lKSArICcuZW52JwotICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUocGF0aCkpCi0KLSAgICAgICAgd2ljdmFycyA9IHNldChiYl92YXJzWydXSUNWQVJTJ10uc3BsaXQoKSkKLSAgICAgICAgIyBmaWx0ZXIgb3V0IG9wdGlvbmFsIHZhcmlhYmxlcwotICAgICAgICB3aWN2YXJzID0gd2ljdmFycy5kaWZmZXJlbmNlKCgnREVQTE9ZX0RJUl9JTUFHRScsICdJTUFHRV9CT09UX0ZJTEVTJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0lOSVRSRCcsICdJTklUUkRfTElWRScsICdJU09ESVInKSkKLSAgICAgICAgd2l0aCBvcGVuKHBhdGgpIGFzIGVudmZpbGU6Ci0gICAgICAgICAgICBjb250ZW50ID0gZGljdChsaW5lLnNwbGl0KCI9IiwgMSkgZm9yIGxpbmUgaW4gZW52ZmlsZSkKLSAgICAgICAgICAgICMgdGVzdCBpZiB2YXJpYWJsZXMgdXNlZCBieSB3aWMgcHJlc2VudCBpbiB0aGUgLmVudiBmaWxlCi0gICAgICAgICAgICBmb3IgdmFyIGluIHdpY3ZhcnM6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHZhciBpbiBjb250ZW50LCAiJXMgaXMgbm90IGluIC5lbnYgZmlsZSIgJSB2YXIpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbnRlbnRbdmFyXSkKLQotICAgIEB0ZXN0Y2FzZSgxNTU5KQotICAgIGRlZiB0ZXN0X2ltYWdlX3ZhcnNfZGlyX3Nob3J0KHNlbGYpOgotICAgICAgICAiIiJUZXN0IGltYWdlIHZhcnMgZGlyZWN0b3J5IHNlbGVjdGlvbiAtdiBvcHRpb24iIiIKLSAgICAgICAgaW1hZ2UgPSAnY29yZS1pbWFnZS1taW5pbWFsJwotICAgICAgICBpbWdlbnZkaXIgPSBzZWxmLl9nZXRfaW1hZ2VfZW52X3BhdGgoaW1hZ2UpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1pbWFnZS1uYW1lPSVzIC12ICVzIC1vICVzIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChpbWFnZSwgaW1nZW52ZGlyLCBzZWxmLnJlc3VsdGRpcikpLnN0YXR1cykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJ3aWN0ZXN0ZGlzay0qZGlyZWN0IikpKQotCi0gICAgZGVmIHRlc3RfaW1hZ2VfdmFyc19kaXJfbG9uZyhzZWxmKToKLSAgICAgICAgIiIiVGVzdCBpbWFnZSB2YXJzIGRpcmVjdG9yeSBzZWxlY3Rpb24gLS12YXJzIG9wdGlvbiIiIgotICAgICAgICBpbWFnZSA9ICdjb3JlLWltYWdlLW1pbmltYWwnCi0gICAgICAgIGltZ2VudmRpciA9IHNlbGYuX2dldF9pbWFnZV9lbnZfcGF0aChpbWFnZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgd2ljdGVzdGRpc2sgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1pbWFnZS1uYW1lPSVzICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tdmFycyAlcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLW91dGRpciAlcyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoaW1hZ2UsIGltZ2VudmRpciwgc2VsZi5yZXN1bHRkaXIpKS5zdGF0dXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGdsb2Ioc2VsZi5yZXN1bHRkaXIgKyAid2ljdGVzdGRpc2stKmRpcmVjdCIpKSkKLQotICAgIEB0ZXN0Y2FzZSgxMzUxKQotICAgIEBvbmx5X2Zvcl9hcmNoKFsnaTU4NicsICdpNjg2JywgJ3g4Nl82NCddKQotICAgIGRlZiB0ZXN0X3dpY19pbWFnZV90eXBlKHNlbGYpOgotICAgICAgICAiIiJUZXN0IGJ1aWxkaW5nIHdpYyBpbWFnZXMgYnkgYml0YmFrZSIiIgotICAgICAgICBjb25maWcgPSAnSU1BR0VfRlNUWVBFUyArPSAid2ljIlxuV0tTX0ZJTEUgPSAid2ljLWltYWdlLW1pbmltYWwiXG4nXAotICAgICAgICAgICAgICAgICAnTUFDSElORV9GRUFUVVJFU19hcHBlbmQgPSAiIGVmaSJcbicKLSAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKGNvbmZpZykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBiaXRiYWtlKCd3aWMtaW1hZ2UtbWluaW1hbCcpLnN0YXR1cykKLSAgICAgICAgc2VsZi5yZW1vdmVfY29uZmlnKGNvbmZpZykKLQotICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydERVBMT1lfRElSX0lNQUdFJywgJ01BQ0hJTkUnXSkKLSAgICAgICAgZGVwbG95X2RpciA9IGJiX3ZhcnNbJ0RFUExPWV9ESVJfSU1BR0UnXQotICAgICAgICBtYWNoaW5lID0gYmJfdmFyc1snTUFDSElORSddCi0gICAgICAgIHByZWZpeCA9IG9zLnBhdGguam9pbihkZXBsb3lfZGlyLCAnd2ljLWltYWdlLW1pbmltYWwtJXMuJyAlIG1hY2hpbmUpCi0gICAgICAgICMgY2hlY2sgaWYgd2UgaGF2ZSByZXN1bHQgaW1hZ2UgYW5kIG1hbmlmZXN0cyBzeW1saW5rcwotICAgICAgICAjIHBvaW50aW5nIHRvIGV4aXN0aW5nIGZpbGVzCi0gICAgICAgIGZvciBzdWZmaXggaW4gKCd3aWMnLCAnbWFuaWZlc3QnKToKLSAgICAgICAgICAgIHBhdGggPSBwcmVmaXggKyBzdWZmaXgKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzbGluayhwYXRoKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLnJlYWxwYXRoKHBhdGgpKSkKLQotICAgIEB0ZXN0Y2FzZSgxNDIyKQotICAgIEBvbmx5X2Zvcl9hcmNoKFsnaTU4NicsICdpNjg2JywgJ3g4Nl82NCddKQotICAgIGRlZiB0ZXN0X3FlbXUoc2VsZik6Ci0gICAgICAgICIiIlRlc3Qgd2ljLWltYWdlLW1pbmltYWwgdW5kZXIgcWVtdSIiIgotICAgICAgICBjb25maWcgPSAnSU1BR0VfRlNUWVBFUyArPSAid2ljIlxuV0tTX0ZJTEUgPSAid2ljLWltYWdlLW1pbmltYWwiXG4nXAotICAgICAgICAgICAgICAgICAnTUFDSElORV9GRUFUVVJFU19hcHBlbmQgPSAiIGVmaSJcbicKLSAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKGNvbmZpZykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBiaXRiYWtlKCd3aWMtaW1hZ2UtbWluaW1hbCcpLnN0YXR1cykKLSAgICAgICAgc2VsZi5yZW1vdmVfY29uZmlnKGNvbmZpZykKLQotICAgICAgICB3aXRoIHJ1bnFlbXUoJ3dpYy1pbWFnZS1taW5pbWFsJywgc3NoPUZhbHNlKSBhcyBxZW11OgotICAgICAgICAgICAgY21kID0gIm1vdW50IHxncmVwICdeL2Rldi8nIHwgY3V0IC1mMSwzIC1kICcgJyIKLSAgICAgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gcWVtdS5ydW5fc2VyaWFsKGNtZCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgc3RhdHVzLCAnRmFpbGVkIHRvIHJ1biBjb21tYW5kICIlcyI6ICVzJyAlIChjbWQsIG91dHB1dCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dCwgJy9kZXYvcm9vdCAvXHJcbi9kZXYvc2RhMyAvbW50JykKLQotICAgIEBvbmx5X2Zvcl9hcmNoKFsnaTU4NicsICdpNjg2JywgJ3g4Nl82NCddKQotICAgIGRlZiB0ZXN0X3FlbXVfZWZpKHNlbGYpOgotICAgICAgICAiIiJUZXN0IGNvcmUtaW1hZ2UtbWluaW1hbCBlZmkgaW1hZ2UgdW5kZXIgcWVtdSIiIgotICAgICAgICBjb25maWcgPSAnSU1BR0VfRlNUWVBFUyA9ICJ3aWMiXG5XS1NfRklMRSA9ICJta2VmaWRpc2sud2tzIlxuJwotICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoY29uZmlnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGJpdGJha2UoJ2NvcmUtaW1hZ2UtbWluaW1hbCBvdm1mJykuc3RhdHVzKQotICAgICAgICBzZWxmLnJlbW92ZV9jb25maWcoY29uZmlnKQotCi0gICAgICAgIHdpdGggcnVucWVtdSgnY29yZS1pbWFnZS1taW5pbWFsJywgc3NoPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgcnVucWVtdXBhcmFtcz0nb3ZtZicsIGltYWdlX2ZzdHlwZT0nd2ljJykgYXMgcWVtdToKLSAgICAgICAgICAgIGNtZCA9ICJncmVwIHNkYS4gL3Byb2MvcGFydGl0aW9ucyAgfHdjIC1sIgotICAgICAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBxZW11LnJ1bl9zZXJpYWwoY21kKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBzdGF0dXMsICdGYWlsZWQgdG8gcnVuIGNvbW1hbmQgIiVzIjogJXMnICUgKGNtZCwgb3V0cHV0KSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0LCAnMycpCi0KLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIF9tYWtlX2ZpeGVkX3NpemVfd2tzKHNpemUpOgotICAgICAgICAiIiIKLSAgICAgICAgQ3JlYXRlIGEgd2tzIG9mIGFuIGltYWdlIHdpdGggYSBzaW5nbGUgcGFydGl0aW9uLiBTaXplIG9mIHRoZSBwYXJ0aXRpb24gaXMgc2V0Ci0gICAgICAgIHVzaW5nIC0tZml4ZWQtc2l6ZSBmbGFnLiBSZXR1cm5zIGEgdHVwbGU6IChwYXRoIHRvIHdrcyBmaWxlLCB3a3MgaW1hZ2UgbmFtZSkKLSAgICAgICAgIiIiCi0gICAgICAgIHdpdGggTmFtZWRUZW1wb3JhcnlGaWxlKCJ3Iiwgc3VmZml4PSIud2tzIiwgZGVsZXRlPUZhbHNlKSBhcyB0ZW1wZjoKLSAgICAgICAgICAgIHdrc3BhdGggPSB0ZW1wZi5uYW1lCi0gICAgICAgICAgICB0ZW1wZi53cml0ZSgicGFydCAiIFwKLSAgICAgICAgICAgICAgICAgICAgICItLXNvdXJjZSByb290ZnMgLS1vbmRpc2sgaGRhIC0tYWxpZ24gNCAtLWZpeGVkLXNpemUgJWQgIgotICAgICAgICAgICAgICAgICAgICAgIi0tZnN0eXBlPWV4dDRcbiIgJSBzaXplKQotICAgICAgICB3a3NuYW1lID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKHdrc3BhdGgpKVswXQotCi0gICAgICAgIHJldHVybiB3a3NwYXRoLCB3a3NuYW1lCi0KLSAgICBkZWYgdGVzdF9maXhlZF9zaXplKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgVGVzdCBjcmVhdGlvbiBvZiBhIHNpbXBsZSBpbWFnZSB3aXRoIHBhcnRpdGlvbiBzaXplIGNvbnRyb2xsZWQgdGhyb3VnaAotICAgICAgICAtLWZpeGVkLXNpemUgZmxhZwotICAgICAgICAiIiIKLSAgICAgICAgd2tzcGF0aCwgd2tzbmFtZSA9IFdpYy5fbWFrZV9maXhlZF9zaXplX3drcygyMDApCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgJXMgLWUgY29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHdrc3BhdGgsIHNlbGYucmVzdWx0ZGlyKSkuc3RhdHVzKQotICAgICAgICBvcy5yZW1vdmUod2tzcGF0aCkKLSAgICAgICAgd2ljb3V0ID0gZ2xvYihzZWxmLnJlc3VsdGRpciArICIlcy0qZGlyZWN0IiAlIHdrc25hbWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHdpY291dCkpCi0KLSAgICAgICAgd2ljaW1nID0gd2ljb3V0WzBdCi0KLSAgICAgICAgIyB2ZXJpZnkgcGFydGl0aW9uIHNpemUgd2l0aCB3aWMKLSAgICAgICAgcmVzID0gcnVuQ21kKCJwYXJ0ZWQgLW0gJXMgdW5pdCBtaWIgcCAyPi9kZXYvbnVsbCIgJSB3aWNpbWcsCi0gICAgICAgICAgICAgICAgICAgICBpZ25vcmVfc3RhdHVzPVRydWUsCi0gICAgICAgICAgICAgICAgICAgICBuYXRpdmVfc3lzcm9vdD1zZWxmLm5hdGl2ZV9zeXNyb290KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJlcy5zdGF0dXMpCi0KLSAgICAgICAgIyBwYXJzZSBwYXJ0ZWQgb3V0cHV0IHdoaWNoIGxvb2tzIGxpa2UgdGhpczoKLSAgICAgICAgIyBCWVQ7XG4KLSAgICAgICAgIyAvdmFyL3RtcC93aWMvYnVpbGQvdG1wZnd2amprZl8tMjAxNjExMTAxMjIyLWhkYS5kaXJlY3Q6MjAwTWlCOmZpbGU6NTEyOjUxMjptc2Rvczo6O1xuCi0gICAgICAgICMgMTowLjAwTWlCOjIwME1pQjoyMDBNaUI6ZXh0NDo6O1xuCi0gICAgICAgIHBhcnRsbnMgPSByZXMub3V0cHV0LnNwbGl0bGluZXMoKVsyOl0KLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihwYXJ0bG5zKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiMTowLjAwTWlCOjIwME1pQjoyMDBNaUI6ZXh0NDo6OyIsIHBhcnRsbnNbMF0pCi0KLSAgICBkZWYgdGVzdF9maXhlZF9zaXplX2Vycm9yKHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgVGVzdCBjcmVhdGlvbiBvZiBhIHNpbXBsZSBpbWFnZSB3aXRoIHBhcnRpdGlvbiBzaXplIGNvbnRyb2xsZWQgdGhyb3VnaAotICAgICAgICAtLWZpeGVkLXNpemUgZmxhZy4gVGhlIHNpemUgb2YgcGFydGl0aW9uIGlzIGludGVudGlvbmFsbHkgc2V0IHRvIDFNaUIKLSAgICAgICAgaW4gb3JkZXIgdG8gdHJpZ2dlciBhbiBlcnJvciBpbiB3aWMuCi0gICAgICAgICIiIgotICAgICAgICB3a3NwYXRoLCB3a3NuYW1lID0gV2ljLl9tYWtlX2ZpeGVkX3NpemVfd2tzKDEpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBydW5DbWQoIndpYyBjcmVhdGUgJXMgLWUgY29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHdrc3BhdGgsIHNlbGYucmVzdWx0ZGlyKSwgaWdub3JlX3N0YXR1cz1UcnVlKS5zdGF0dXMpCi0gICAgICAgIG9zLnJlbW92ZSh3a3NwYXRoKQotICAgICAgICB3aWNvdXQgPSBnbG9iKHNlbGYucmVzdWx0ZGlyICsgIiVzLSpkaXJlY3QiICUgd2tzbmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBsZW4od2ljb3V0KSkKLQotICAgIEBvbmx5X2Zvcl9hcmNoKFsnaTU4NicsICdpNjg2JywgJ3g4Nl82NCddKQotICAgIGRlZiB0ZXN0X3Jhd2NvcHlfcGx1Z2luX3FlbXUoc2VsZik6Ci0gICAgICAgICIiIlRlc3QgcmF3Y29weSBwbHVnaW4gaW4gcWVtdSIiIgotICAgICAgICAjIGJ1aWxkIGV4dDQgYW5kIHdpYyBpbWFnZXMKLSAgICAgICAgZm9yIGZzdHlwZSBpbiAoImV4dDQiLCAid2ljIik6Ci0gICAgICAgICAgICBjb25maWcgPSAnSU1BR0VfRlNUWVBFUyA9ICIlcyJcbldLU19GSUxFID0gInRlc3RfcmF3Y29weV9wbHVnaW4ud2tzLmluIlxuJyAlIGZzdHlwZQotICAgICAgICAgICAgc2VsZi5hcHBlbmRfY29uZmlnKGNvbmZpZykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsJykuc3RhdHVzKQotICAgICAgICAgICAgc2VsZi5yZW1vdmVfY29uZmlnKGNvbmZpZykKLQotICAgICAgICB3aXRoIHJ1bnFlbXUoJ2NvcmUtaW1hZ2UtbWluaW1hbCcsIHNzaD1GYWxzZSwgaW1hZ2VfZnN0eXBlPSd3aWMnKSBhcyBxZW11OgotICAgICAgICAgICAgY21kID0gImdyZXAgc2RhLiAvcHJvYy9wYXJ0aXRpb25zICB8d2MgLWwiCi0gICAgICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHFlbXUucnVuX3NlcmlhbChjbWQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIHN0YXR1cywgJ0ZhaWxlZCB0byBydW4gY29tbWFuZCAiJXMiOiAlcycgJSAoY21kLCBvdXRwdXQpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQsICcyJykKLQotICAgIGRlZiB0ZXN0X3Jhd2NvcHlfcGx1Z2luKHNlbGYpOgotICAgICAgICAiIiJUZXN0IHJhd2NvcHkgcGx1Z2luIiIiCi0gICAgICAgIGltZyA9ICdjb3JlLWltYWdlLW1pbmltYWwnCi0gICAgICAgIG1hY2hpbmUgPSBnZXRfYmJfdmFyKCdNQUNISU5FJywgaW1nKQotICAgICAgICB3aXRoIE5hbWVkVGVtcG9yYXJ5RmlsZSgidyIsIHN1ZmZpeD0iLndrcyIpIGFzIHdrczoKLSAgICAgICAgICAgIHdrcy53cml0ZWxpbmVzKFsncGFydCAvYm9vdCAtLWFjdGl2ZSAtLXNvdXJjZSBib290aW1nLXBjYmlvc1xuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFydCAvIC0tc291cmNlIHJhd2NvcHkgLS1zb3VyY2VwYXJhbXM9ImZpbGU9JXMtJXMuZXh0NCIgLS11c2UtdXVpZFxuJ1wKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoaW1nLCBtYWNoaW5lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYm9vdGxvYWRlciAtLXRpbWVvdXQ9MCAtLWFwcGVuZD0iY29uc29sZT10dHlTMCwxMTUyMDBuOCJcbiddKQotICAgICAgICAgICAgd2tzLmZsdXNoKCkKLSAgICAgICAgICAgIGNtZCA9ICJ3aWMgY3JlYXRlICVzIC1lICVzIC1vICVzIiAlICh3a3MubmFtZSwgaW1nLCBzZWxmLnJlc3VsdGRpcikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcnVuQ21kKGNtZCkuc3RhdHVzKQotICAgICAgICAgICAgd2tzbmFtZSA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZSh3a3MubmFtZSkpWzBdCi0gICAgICAgICAgICBvdXQgPSBnbG9iKHNlbGYucmVzdWx0ZGlyICsgIiVzLSpkaXJlY3QiICUgd2tzbmFtZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKG91dCkpCi0KLSAgICBkZWYgdGVzdF9mc190eXBlcyhzZWxmKToKLSAgICAgICAgIiIiVGVzdCBmaWxlc3lzdGVtIHR5cGVzIGZvciBlbXB0eSBhbmQgbm90IGVtcHR5IHBhcnRpdGlvbnMiIiIKLSAgICAgICAgaW1nID0gJ2NvcmUtaW1hZ2UtbWluaW1hbCcKLSAgICAgICAgd2l0aCBOYW1lZFRlbXBvcmFyeUZpbGUoInciLCBzdWZmaXg9Ii53a3MiKSBhcyB3a3M6Ci0gICAgICAgICAgICB3a3Mud3JpdGVsaW5lcyhbJ3BhcnQgZXh0MiAgIC0tZnN0eXBlIGV4dDIgICAgIC0tc291cmNlIHJvb3Rmc1xuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFydCBidHJmcyAgLS1mc3R5cGUgYnRyZnMgICAgLS1zb3VyY2Ugcm9vdGZzIC0tc2l6ZSA0ME1cbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhcnQgc3F1YXNoIC0tZnN0eXBlIHNxdWFzaGZzIC0tc291cmNlIHJvb3Rmc1xuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFydCBzd2FwICAgLS1mc3R5cGUgc3dhcCAtLXNpemUgMU1cbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhcnQgZW1wdHl2ZmF0ICAgLS1mc3R5cGUgdmZhdCAgIC0tc2l6ZSAxTVxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFydCBlbXB0eW1zZG9zICAtLWZzdHlwZSBtc2RvcyAgLS1zaXplIDFNXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXJ0IGVtcHR5ZXh0MiAgIC0tZnN0eXBlIGV4dDIgICAtLXNpemUgMU1cbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhcnQgZW1wdHlidHJmcyAgLS1mc3R5cGUgYnRyZnMgIC0tc2l6ZSAxMDBNXG4nXSkKLSAgICAgICAgICAgIHdrcy5mbHVzaCgpCi0gICAgICAgICAgICBjbWQgPSAid2ljIGNyZWF0ZSAlcyAtZSAlcyAtbyAlcyIgJSAod2tzLm5hbWUsIGltZywgc2VsZi5yZXN1bHRkaXIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZChjbWQpLnN0YXR1cykKLSAgICAgICAgICAgIHdrc25hbWUgPSBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUod2tzLm5hbWUpKVswXQotICAgICAgICAgICAgb3V0ID0gZ2xvYihzZWxmLnJlc3VsdGRpciArICIlcy0qZGlyZWN0IiAlIHdrc25hbWUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihvdXQpKQotCi0gICAgZGVmIHRlc3Rfa2lja3N0YXJ0X3BhcnNlcihzZWxmKToKLSAgICAgICAgIiIiVGVzdCB3a3MgcGFyc2VyIG9wdGlvbnMiIiIKLSAgICAgICAgd2l0aCBOYW1lZFRlbXBvcmFyeUZpbGUoInciLCBzdWZmaXg9Ii53a3MiKSBhcyB3a3M6Ci0gICAgICAgICAgICB3a3Mud3JpdGVsaW5lcyhbJ3BhcnQgLyAtLWZzdHlwZSBleHQzIC0tc291cmNlIHJvb3RmcyAtLXN5c3RlbS1pZCAweEZGICdcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tb3ZlcmhlYWQtZmFjdG9yIDEuMiAtLXNpemUgMTAwa1xuJ10pCi0gICAgICAgICAgICB3a3MuZmx1c2goKQotICAgICAgICAgICAgY21kID0gIndpYyBjcmVhdGUgJXMgLWUgY29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiAlICh3a3MubmFtZSwgc2VsZi5yZXN1bHRkaXIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZChjbWQpLnN0YXR1cykKLSAgICAgICAgICAgIHdrc25hbWUgPSBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUod2tzLm5hbWUpKVswXQotICAgICAgICAgICAgb3V0ID0gZ2xvYihzZWxmLnJlc3VsdGRpciArICIlcy0qZGlyZWN0IiAlIHdrc25hbWUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihvdXQpKQotCi0gICAgZGVmIHRlc3RfaW1hZ2VfYm9vdHBhcnRfZ2xvYmJlZChzZWxmKToKLSAgICAgICAgIiIiVGVzdCBnbG9iYmVkIHNvdXJjZXMgd2l0aCBpbWFnZS1ib290cGFydCBwbHVnaW4iIiIKLSAgICAgICAgaW1nID0gImNvcmUtaW1hZ2UtbWluaW1hbCIKLSAgICAgICAgY21kID0gIndpYyBjcmVhdGUgc2RpbWFnZS1ib290cGFydCAtZSAlcyAtbyAlcyIgJSAoaW1nLCBzZWxmLnJlc3VsdGRpcikKLSAgICAgICAgY29uZmlnID0gJ0lNQUdFX0JPT1RfRklMRVMgPSAiJXMqIicgJSBnZXRfYmJfdmFyKCdLRVJORUxfSU1BR0VUWVBFJywgaW1nKQotICAgICAgICBzZWxmLmFwcGVuZF9jb25maWcoY29uZmlnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHJ1bkNtZChjbWQpLnN0YXR1cykKLSAgICAgICAgc2VsZi5yZW1vdmVfY29uZmlnKGNvbmZpZykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oZ2xvYihzZWxmLnJlc3VsdGRpciArICJzZGltYWdlLWJvb3RwYXJ0LSpkaXJlY3QiKSkpCi0KLSAgICBkZWYgdGVzdF9zcGFyc2VfY29weShzZWxmKToKLSAgICAgICAgIiIiVGVzdCBzcGFyc2VfY29weSB3aXRoIEZJRU1BUCBhbmQgU0VFS19IT0xFIGZpbGVtYXAgQVBJcyIiIgotICAgICAgICBsaWJwYXRoID0gb3MucGF0aC5qb2luKGdldF9iYl92YXIoJ0NPUkVCQVNFJyksICdzY3JpcHRzJywgJ2xpYicsICd3aWMnKQotICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwgbGlicGF0aCkKLSAgICAgICAgZnJvbSAgZmlsZW1hcCBpbXBvcnQgRmlsZW1hcEZpZW1hcCwgRmlsZW1hcFNlZWssIHNwYXJzZV9jb3B5LCBFcnJvck5vdFN1cHAKLSAgICAgICAgd2l0aCBOYW1lZFRlbXBvcmFyeUZpbGUoInciLCBzdWZmaXg9Ii53aWMtc3BhcnNlIikgYXMgc3BhcnNlOgotICAgICAgICAgICAgc3JjX25hbWUgPSBzcGFyc2UubmFtZQotICAgICAgICAgICAgc3JjX3NpemUgPSAxMDI0ICogMTAKLSAgICAgICAgICAgIHNwYXJzZS50cnVuY2F0ZShzcmNfc2l6ZSkKLSAgICAgICAgICAgICMgd3JpdGUgb25lIGJ5dGUgdG8gdGhlIGZpbGUKLSAgICAgICAgICAgIHdpdGggb3BlbihzcmNfbmFtZSwgJ3IrYicpIGFzIHNmaWxlOgotICAgICAgICAgICAgICAgIHNmaWxlLnNlZWsoMTAyNCAqIDQpCi0gICAgICAgICAgICAgICAgc2ZpbGUud3JpdGUoYidceDAwJykKLSAgICAgICAgICAgIGRlc3QgPSBzcGFyc2UubmFtZSArICcub3V0JwotICAgICAgICAgICAgIyBjb3B5IHNyYyBmaWxlIHRvIGRlc3QgdXNpbmcgZGlmZmVyZW50IGZpbGVtYXAgQVBJcwotICAgICAgICAgICAgZm9yIGFwaSBpbiAoRmlsZW1hcEZpZW1hcCwgRmlsZW1hcFNlZWssIE5vbmUpOgotICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGRlc3QpOgotICAgICAgICAgICAgICAgICAgICBvcy51bmxpbmsoZGVzdCkKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHNwYXJzZV9jb3B5KHNwYXJzZS5uYW1lLCBkZXN0LCBhcGk9YXBpKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBFcnJvck5vdFN1cHA6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlICMgc2tpcCB1bnN1cHBvcnRlZCBBUEkKLSAgICAgICAgICAgICAgICBkZXN0X3N0YXQgPSBvcy5zdGF0KGRlc3QpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZXN0X3N0YXQuc3Rfc2l6ZSwgc3JjX3NpemUpCi0gICAgICAgICAgICAgICAgIyA4IGJsb2NrcyBpcyA0SyAocGh5c2ljYWwgc2VjdG9yIHNpemUpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZXN0X3N0YXQuc3RfYmxvY2tzLCA4KQotICAgICAgICAgICAgb3MudW5saW5rKGRlc3QpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS90YXJnZXRjb250cm9sLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdGFyZ2V0Y29udHJvbC5weQppbmRleCAzMjU1ZTNhLi5mNjM5MzZjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS90YXJnZXRjb250cm9sLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3RhcmdldGNvbnRyb2wucHkKQEAgLTE4LDQ0ICsxOCwxOCBAQAogZnJvbSBvZXFhLmNvbnRyb2xsZXJzLnRlc3R0YXJnZXRsb2FkZXIgaW1wb3J0IFRlc3RUYXJnZXRMb2FkZXIKIGZyb20gYWJjIGltcG9ydCBBQkNNZXRhLCBhYnN0cmFjdG1ldGhvZAogCi1sb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcignQml0QmFrZS5RZW11UnVubmVyJykKLQotZGVmIGdldF90YXJnZXRfY29udHJvbGxlcihkKToKLSAgICB0ZXN0dGFyZ2V0ID0gZC5nZXRWYXIoIlRFU1RfVEFSR0VUIikKLSAgICAjIG9sZCwgc2ltcGxlIG5hbWVzCi0gICAgaWYgdGVzdHRhcmdldCA9PSAicWVtdSI6Ci0gICAgICAgIHJldHVybiBRZW11VGFyZ2V0KGQpCi0gICAgZWxpZiB0ZXN0dGFyZ2V0ID09ICJzaW1wbGVyZW1vdGUiOgotICAgICAgICByZXR1cm4gU2ltcGxlUmVtb3RlVGFyZ2V0KGQpCi0gICAgZWxzZToKLSAgICAgICAgIyB1c2UgdGhlIGNsYXNzIG5hbWUKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgIyBpcyBpdCBhIGNvcmUgY2xhc3MgZGVmaW5lZCBoZXJlPwotICAgICAgICAgICAgY29udHJvbGxlciA9IGdldGF0dHIoc3lzLm1vZHVsZXNbX19uYW1lX19dLCB0ZXN0dGFyZ2V0KQotICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICAjIG5vcGUsIHBlcmhhcHMgYSBsYXllciBkZWZpbmVkIG9uZQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGJicGF0aCA9IGQuZ2V0VmFyKCJCQlBBVEgiKS5zcGxpdCgnOicpCi0gICAgICAgICAgICAgICAgdGVzdHRhcmdldGxvYWRlciA9IFRlc3RUYXJnZXRMb2FkZXIoKQotICAgICAgICAgICAgICAgIGNvbnRyb2xsZXIgPSB0ZXN0dGFyZ2V0bG9hZGVyLmdldF9jb250cm9sbGVyX21vZHVsZSh0ZXN0dGFyZ2V0LCBiYnBhdGgpCi0gICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICBiYi5mYXRhbCgiRmFpbGVkIHRvIGltcG9ydCB7MH0gZnJvbSBhdmFpbGFibGUgY29udHJvbGxlciBtb2R1bGVzOlxuezF9Ii5mb3JtYXQodGVzdHRhcmdldCx0cmFjZWJhY2suZm9ybWF0X2V4YygpKSkKLSAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvciBhcyBlOgotICAgICAgICAgICAgICAgIGJiLmZhdGFsKCJJbnZhbGlkIFRFU1RfVEFSR0VUIC0gIiArIHN0cihlKSkKLSAgICAgICAgcmV0dXJuIGNvbnRyb2xsZXIoZCkKLQotCiBjbGFzcyBCYXNlVGFyZ2V0KG9iamVjdCwgbWV0YWNsYXNzPUFCQ01ldGEpOgogCiAgICAgc3VwcG9ydGVkX2ltYWdlX2ZzdHlwZXMgPSBbXQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGQpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkLCBsb2dnZXIpOgogICAgICAgICBzZWxmLmNvbm5lY3Rpb24gPSBOb25lCiAgICAgICAgIHNlbGYuaXAgPSBOb25lCiAgICAgICAgIHNlbGYuc2VydmVyX2lwID0gTm9uZQogICAgICAgICBzZWxmLmRhdGV0aW1lID0gZC5nZXRWYXIoJ0RBVEVUSU1FJykKICAgICAgICAgc2VsZi50ZXN0ZGlyID0gZC5nZXRWYXIoIlRFU1RfTE9HX0RJUiIpCiAgICAgICAgIHNlbGYucG4gPSBkLmdldFZhcigiUE4iKQorICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgogCiAgICAgQGFic3RyYWN0bWV0aG9kCiAgICAgZGVmIGRlcGxveShzZWxmKToKQEAgLTY1LDcgKzM5LDcgQEAKICAgICAgICAgaWYgb3MucGF0aC5pc2xpbmsoc3NobG9nbGluayk6CiAgICAgICAgICAgICBvcy51bmxpbmsoc3NobG9nbGluaykKICAgICAgICAgb3Muc3ltbGluayhzZWxmLnNzaGxvZywgc3NobG9nbGluaykKLSAgICAgICAgbG9nZ2VyLmluZm8oIlNTSCBsb2cgZmlsZTogJXMiICUgIHNlbGYuc3NobG9nKQorICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJTU0ggbG9nIGZpbGU6ICVzIiAlICBzZWxmLnNzaGxvZykKIAogICAgIEBhYnN0cmFjdG1ldGhvZAogICAgIGRlZiBzdGFydChzZWxmLCBwYXJhbXM9Tm9uZSwgc3NoPVRydWUsIGV4dHJhX2Jvb3RwYXJhbXM9Tm9uZSk6CkBAIC0xMTUsOSArODksOSBAQAogCiAgICAgc3VwcG9ydGVkX2ltYWdlX2ZzdHlwZXMgPSBbJ2V4dDMnLCAnZXh0NCcsICdjcGlvLmd6JywgJ3dpYyddCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZCwgaW1hZ2VfZnN0eXBlPU5vbmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkLCBsb2dnZXIsIGltYWdlX2ZzdHlwZT1Ob25lKToKIAotICAgICAgICBzdXBlcihRZW11VGFyZ2V0LCBzZWxmKS5fX2luaXRfXyhkKQorICAgICAgICBzdXBlcihRZW11VGFyZ2V0LCBzZWxmKS5fX2luaXRfXyhkLCBsb2dnZXIpCiAKICAgICAgICAgc2VsZi5yb290ZnMgPSAnJwogICAgICAgICBzZWxmLmtlcm5lbCA9ICcnCkBAIC0xNDUsNyArMTE5LDcgQEAKICAgICAgICAgc2VsZi5xZW11cnVubmVybG9nID0gb3MucGF0aC5qb2luKHNlbGYudGVzdGRpciwgJ3FlbXVydW5uZXJfbG9nLiVzJyAlIHNlbGYuZGF0ZXRpbWUpCiAgICAgICAgIGxvZ2dlcmhhbmRsZXIgPSBsb2dnaW5nLkZpbGVIYW5kbGVyKHNlbGYucWVtdXJ1bm5lcmxvZykKICAgICAgICAgbG9nZ2VyaGFuZGxlci5zZXRGb3JtYXR0ZXIobG9nZ2luZy5Gb3JtYXR0ZXIoIiUobGV2ZWxuYW1lKXM6ICUobWVzc2FnZSlzIikpCi0gICAgICAgIGxvZ2dlci5hZGRIYW5kbGVyKGxvZ2dlcmhhbmRsZXIpCisgICAgICAgIHNlbGYubG9nZ2VyLmFkZEhhbmRsZXIobG9nZ2VyaGFuZGxlcikKICAgICAgICAgb2UucGF0aC5zeW1saW5rKG9zLnBhdGguYmFzZW5hbWUoc2VsZi5xZW11cnVubmVybG9nKSwgb3MucGF0aC5qb2luKHNlbGYudGVzdGRpciwgJ3FlbXVydW5uZXJfbG9nJyksIGZvcmNlPVRydWUpCiAKICAgICAgICAgaWYgZC5nZXRWYXIoIkRJU1RSTyIpID09ICJwb2t5LXRpbnkiOgpAQCAtMTU2LDcgKzEzMCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheSA9IGQuZ2V0VmFyKCJCQl9PUklHRU5WIiwgRmFsc2UpLmdldFZhcigiRElTUExBWSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ZpbGUgPSBzZWxmLnFlbXVsb2csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2VybmVsID0gc2VsZi5rZXJuZWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vdHRpbWUgPSBpbnQoZC5nZXRWYXIoIlRFU1RfUUVNVUJPT1RfVElNRU9VVCIpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBib290dGltZSA9IGludChkLmdldFZhcigiVEVTVF9RRU1VQk9PVF9USU1FT1VUIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlciA9IGxvZ2dlcikKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYucnVubmVyID0gUWVtdVJ1bm5lcihtYWNoaW5lPWQuZ2V0VmFyKCJNQUNISU5FIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vdGZzPXNlbGYucm9vdGZzLApAQCAtMTY3LDcgKzE0Miw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vdHRpbWUgPSBpbnQoZC5nZXRWYXIoIlRFU1RfUUVNVUJPT1RfVElNRU9VVCIpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vfa3ZtID0gdXNlX2t2bSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdW1wX2RpciA9IGR1bXBfZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1bXBfaG9zdF9jbWRzID0gZC5nZXRWYXIoInRlc3RpbWFnZV9kdW1wX2hvc3QiKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdW1wX2hvc3RfY21kcyA9IGQuZ2V0VmFyKCJ0ZXN0aW1hZ2VfZHVtcF9ob3N0IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyID0gbG9nZ2VyKQogCiAgICAgICAgIHNlbGYudGFyZ2V0X2R1bXBlciA9IFRhcmdldER1bXBlcihkdW1wX3RhcmdldF9jbWRzLCBkdW1wX2Rpciwgc2VsZi5ydW5uZXIpCiAKQEAgLTE3OSw4ICsxNTUsOCBAQAogICAgICAgICAgICAgb3MudW5saW5rKHFlbXVsb2dsaW5rKQogICAgICAgICBvcy5zeW1saW5rKHNlbGYucWVtdWxvZywgcWVtdWxvZ2xpbmspCiAKLSAgICAgICAgbG9nZ2VyLmluZm8oInJvb3RmcyBmaWxlOiAlcyIgJSAgc2VsZi5yb290ZnMpCi0gICAgICAgIGxvZ2dlci5pbmZvKCJRZW11IGxvZyBmaWxlOiAlcyIgJSBzZWxmLnFlbXVsb2cpCisgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oInJvb3RmcyBmaWxlOiAlcyIgJSAgc2VsZi5yb290ZnMpCisgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIlFlbXUgbG9nIGZpbGU6ICVzIiAlIHNlbGYucWVtdWxvZykKICAgICAgICAgc3VwZXIoUWVtdVRhcmdldCwgc2VsZikuZGVwbG95KCkKIAogICAgIGRlZiBzdGFydChzZWxmLCBwYXJhbXM9Tm9uZSwgc3NoPVRydWUsIGV4dHJhX2Jvb3RwYXJhbXM9JycsIHJ1bnFlbXVwYXJhbXM9JycsIGxhdW5jaF9jbWQ9JycsIGRpc2NhcmRfd3JpdGVzPVRydWUpOgpAQCAtMjMyLDE0ICsyMDgsMTQgQEAKICAgICAgICAgICAgIHNlbGYucG9ydCA9IGFkZHIuc3BsaXQoIjoiKVsxXQogICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKICAgICAgICAgICAgIHNlbGYucG9ydCA9IE5vbmUKLSAgICAgICAgbG9nZ2VyLmluZm8oIlRhcmdldCBJUDogJXMiICUgc2VsZi5pcCkKKyAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygiVGFyZ2V0IElQOiAlcyIgJSBzZWxmLmlwKQogICAgICAgICBzZWxmLnNlcnZlcl9pcCA9IGQuZ2V0VmFyKCJURVNUX1NFUlZFUl9JUCIpCiAgICAgICAgIGlmIG5vdCBzZWxmLnNlcnZlcl9pcDoKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9pcCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFsnaXAnLCAncm91dGUnLCAnZ2V0Jywgc2VsZi5pcCBdKS5zcGxpdCgiXG4iKVswXS5zcGxpdCgpWy0xXQogICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgICAgIGJiLmZhdGFsKCJGYWlsZWQgdG8gZGV0ZXJtaW5lIHRoZSBob3N0IElQIGFkZHJlc3MgKGFsdGVybmF0aXZlbHkgeW91IGNhbiBzZXQgVEVTVF9TRVJWRVJfSVAgd2l0aCB0aGUgSVAgYWRkcmVzcyBvZiB0aGlzIG1hY2hpbmUpOiAlcyIgJSBlKQotICAgICAgICBsb2dnZXIuaW5mbygiU2VydmVyIElQOiAlcyIgJSBzZWxmLnNlcnZlcl9pcCkKKyAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygiU2VydmVyIElQOiAlcyIgJSBzZWxmLnNlcnZlcl9pcCkKIAogICAgIGRlZiBkZXBsb3koc2VsZik6CiAgICAgICAgIHN1cGVyKFNpbXBsZVJlbW90ZVRhcmdldCwgc2VsZikuZGVwbG95KCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL19faW5pdF9fLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvX19pbml0X18ucHkKaW5kZXggNDg1ZGUwMy4uZDM4YTMyMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvX19pbml0X18ucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvX19pbml0X18ucHkKQEAgLTIsNyArMiw2IEBACiBmcm9tIHBrZ3V0aWwgaW1wb3J0IGV4dGVuZF9wYXRoCiBfX3BhdGhfXyA9IGV4dGVuZF9wYXRoKF9fcGF0aF9fLCBfX25hbWVfXykKIAotCiAjIEJvcnJvd2VkIGZyb20gQ2FsbGVkUHJvY2Vzc0Vycm9yCiAKIGNsYXNzIENvbW1hbmRFcnJvcihFeGNlcHRpb24pOgpAQCAtNjYsMyArNjUsMzkgQEAKICAgICBsb2dnZXIuaW5mbyA9IF9iaXRiYWtlX2xvZ19pbmZvCiAKICAgICByZXR1cm4gbG9nZ2VyCisKK2RlZiBsb2FkX3Rlc3RfY29tcG9uZW50cyhsb2dnZXIsIGV4ZWN1dG9yKToKKyAgICBpbXBvcnQgc3lzCisgICAgaW1wb3J0IG9zCisgICAgaW1wb3J0IGltcG9ydGxpYgorCisgICAgZnJvbSBvZXFhLmNvcmUuY29udGV4dCBpbXBvcnQgT0VUZXN0Q29udGV4dEV4ZWN1dG9yCisKKyAgICBjb21wb25lbnRzID0ge30KKworICAgIGZvciBwYXRoIGluIHN5cy5wYXRoOgorICAgICAgICBiYXNlX2RpciA9IG9zLnBhdGguam9pbihwYXRoLCAnb2VxYScpCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGJhc2VfZGlyKSBhbmQgb3MucGF0aC5pc2RpcihiYXNlX2Rpcik6CisgICAgICAgICAgICBmb3IgZmlsZSBpbiBvcy5saXN0ZGlyKGJhc2VfZGlyKToKKyAgICAgICAgICAgICAgICBjb21wX25hbWUgPSBmaWxlCisgICAgICAgICAgICAgICAgY29tcF9jb250ZXh0ID0gb3MucGF0aC5qb2luKGJhc2VfZGlyLCBmaWxlLCAnY29udGV4dC5weScpCisgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoY29tcF9jb250ZXh0KToKKyAgICAgICAgICAgICAgICAgICAgY29tcF9wbHVnaW4gPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgnb2VxYS4lcy4lcycgJSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbXBfbmFtZSwgJ2NvbnRleHQnKSkKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGlzc3ViY2xhc3MoY29tcF9wbHVnaW4uX2V4ZWN1dG9yX2NsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPRVRlc3RDb250ZXh0RXhlY3V0b3IpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ29tcG9uZW50ICVzIGluICVzLCBfZXhlY3V0b3JfY2xhc3MgIlwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImlzbid0IGRlcml2ZWQgZnJvbSBPRVRlc3RDb250ZXh0RXhlY3V0b3IuIlwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoY29tcF9uYW1lLCBjb21wX2NvbnRleHQpKQorCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBjb21wX3BsdWdpbi5fZXhlY3V0b3JfY2xhc3MuX3NjcmlwdF9leGVjdXRvciBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE9IGV4ZWN1dG9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudHNbY29tcF9uYW1lXSA9IGNvbXBfcGx1Z2luLl9leGVjdXRvcl9jbGFzcygpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCJDb21wb25lbnQgJXMgaW4gJXMgZG9uJ3QgaGF2ZSAiXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX2V4ZWN1dG9yX2NsYXNzIGRlZmluZWQuIiAlIChjb21wX25hbWUsIGNvbXBfY29udGV4dCkpCisKKyAgICByZXR1cm4gY29tcG9uZW50cwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvYnVpbGRwcm9qZWN0LnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvYnVpbGRwcm9qZWN0LnB5CmluZGV4IDQ4N2YwOGIuLjcyMWYzNWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2J1aWxkcHJvamVjdC5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9idWlsZHByb2plY3QucHkKQEAgLTUyLDQgKzUyLDQgQEAKIAogICAgIGRlZiBjbGVhbihzZWxmKToKICAgICAgICAgc2VsZi5fcnVuKCdybSAtcmYgJXMnICUgc2VsZi50YXJnZXRkaXIpCi0gICAgICAgIHN1YnByb2Nlc3MuY2FsbCgncm0gLWYgJXMnICUgc2VsZi5sb2NhbGFyY2hpdmUsIHNoZWxsPVRydWUpCisgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbCgncm0gLWYgJXMnICUgc2VsZi5sb2NhbGFyY2hpdmUsIHNoZWxsPVRydWUpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9jb21tYW5kcy5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2NvbW1hbmRzLnB5CmluZGV4IDU3Mjg2ZmMuLjBiYjkwMDIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2NvbW1hbmRzLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2NvbW1hbmRzLnB5CkBAIC0xMyw2ICsxMyw3IEBACiBpbXBvcnQgc2lnbmFsCiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHRocmVhZGluZworaW1wb3J0IHRpbWUKIGltcG9ydCBsb2dnaW5nCiBmcm9tIG9lcWEudXRpbHMgaW1wb3J0IENvbW1hbmRFcnJvcgogZnJvbSBvZXFhLnV0aWxzIGltcG9ydCBmdG9vbHMKQEAgLTI1LDcgKzI2LDcgQEAKICAgICBwYXNzCiAKIGNsYXNzIENvbW1hbmQob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgY29tbWFuZCwgYmc9RmFsc2UsIHRpbWVvdXQ9Tm9uZSwgZGF0YT1Ob25lLCAqKm9wdGlvbnMpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb21tYW5kLCBiZz1GYWxzZSwgdGltZW91dD1Ob25lLCBkYXRhPU5vbmUsIG91dHB1dF9sb2c9Tm9uZSwgKipvcHRpb25zKToKIAogICAgICAgICBzZWxmLmRlZmF1bHRvcHRzID0gewogICAgICAgICAgICAgInN0ZG91dCI6IHN1YnByb2Nlc3MuUElQRSwKQEAgLTQ4LDQxICs0OSwxMDMgQEAKICAgICAgICAgc2VsZi5vcHRpb25zLnVwZGF0ZShvcHRpb25zKQogCiAgICAgICAgIHNlbGYuc3RhdHVzID0gTm9uZQorICAgICAgICAjIFdlIGNvbGxlY3QgY2h1bmtzIG9mIG91dHB1dCBiZWZvcmUgam9pbmluZyB0aGVtIGF0IHRoZSBlbmQuCisgICAgICAgIHNlbGYuX291dHB1dF9jaHVua3MgPSBbXQorICAgICAgICBzZWxmLl9lcnJvcl9jaHVua3MgPSBbXQogICAgICAgICBzZWxmLm91dHB1dCA9IE5vbmUKICAgICAgICAgc2VsZi5lcnJvciA9IE5vbmUKLSAgICAgICAgc2VsZi50aHJlYWQgPSBOb25lCisgICAgICAgIHNlbGYudGhyZWFkcyA9IFtdCiAKKyAgICAgICAgc2VsZi5vdXRwdXRfbG9nID0gb3V0cHV0X2xvZwogICAgICAgICBzZWxmLmxvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJ1dGlscy5jb21tYW5kcyIpCiAKICAgICBkZWYgcnVuKHNlbGYpOgogICAgICAgICBzZWxmLnByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKHNlbGYuY21kLCAqKnNlbGYub3B0aW9ucykKIAotICAgICAgICBkZWYgY29tbVRocmVhZCgpOgotICAgICAgICAgICAgc2VsZi5vdXRwdXQsIHNlbGYuZXJyb3IgPSBzZWxmLnByb2Nlc3MuY29tbXVuaWNhdGUoc2VsZi5kYXRhKQorICAgICAgICBkZWYgcmVhZFRocmVhZChvdXRwdXQsIHN0cmVhbSwgbG9nZnVuYyk6CisgICAgICAgICAgICBpZiBsb2dmdW5jOgorICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIHN0cmVhbToKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0LmFwcGVuZChsaW5lKQorICAgICAgICAgICAgICAgICAgICBsb2dmdW5jKGxpbmUuZGVjb2RlKCJ1dGYtOCIsIGVycm9ycz0ncmVwbGFjZScpLnJzdHJpcCgpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKHN0cmVhbS5yZWFkKCkpCiAKLSAgICAgICAgc2VsZi50aHJlYWQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1jb21tVGhyZWFkKQotICAgICAgICBzZWxmLnRocmVhZC5zdGFydCgpCisgICAgICAgIGRlZiByZWFkU3RkZXJyVGhyZWFkKCk6CisgICAgICAgICAgICByZWFkVGhyZWFkKHNlbGYuX2Vycm9yX2NodW5rcywgc2VsZi5wcm9jZXNzLnN0ZGVyciwgc2VsZi5vdXRwdXRfbG9nLmVycm9yIGlmIHNlbGYub3V0cHV0X2xvZyBlbHNlIE5vbmUpCisKKyAgICAgICAgZGVmIHJlYWRTdGRvdXRUaHJlYWQoKToKKyAgICAgICAgICAgIHJlYWRUaHJlYWQoc2VsZi5fb3V0cHV0X2NodW5rcywgc2VsZi5wcm9jZXNzLnN0ZG91dCwgc2VsZi5vdXRwdXRfbG9nLmluZm8gaWYgc2VsZi5vdXRwdXRfbG9nIGVsc2UgTm9uZSkKKworICAgICAgICBkZWYgd3JpdGVUaHJlYWQoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLnByb2Nlc3Muc3RkaW4ud3JpdGUoc2VsZi5kYXRhKQorICAgICAgICAgICAgICAgIHNlbGYucHJvY2Vzcy5zdGRpbi5jbG9zZSgpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleDoKKyAgICAgICAgICAgICAgICAjIEl0J3Mgbm90IGFuIGVycm9yIHdoZW4gdGhlIGNvbW1hbmQgZG9lcyBub3QgY29uc3VtZSBhbGwKKyAgICAgICAgICAgICAgICAjIG9mIG91ciBkYXRhLiBzdWJwcm9jZXNzLmNvbW11bmljYXRlKCkgYWxzbyBpZ25vcmVzIHRoYXQuCisgICAgICAgICAgICAgICAgaWYgZXguZXJybm8gIT0gRVBJUEU6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlCisKKyAgICAgICAgIyBXZSB3cml0ZSBpbiBhIHNlcGFyYXRlIHRocmVhZCBiZWNhdXNlIHRoZW4gd2UgY2FuIHJlYWQKKyAgICAgICAgIyB3aXRob3V0IHdvcnJ5aW5nIGFib3V0IGRlYWRsb2Nrcy4gVGhlIGFkZGl0aW9uYWwgdGhyZWFkIGlzCisgICAgICAgICMgZXhwZWN0ZWQgdG8gdGVybWluYXRlIGJ5IGl0c2VsZiBhbmQgd2UgbWFyayBpdCBhcyBhIGRhZW1vbiwKKyAgICAgICAgIyBzbyBldmVuIGl0IHNob3VsZCBoYXBwZW4gdG8gbm90IHRlcm1pbmF0ZSBmb3Igd2hhdGV2ZXIKKyAgICAgICAgIyByZWFzb24sIHRoZSBtYWluIHByb2Nlc3Mgd2lsbCBzdGlsbCBleGl0LCB3aGljaCB3aWxsIHRoZW4KKyAgICAgICAgIyBraWxsIHRoZSB3cml0ZSB0aHJlYWQuCisgICAgICAgIGlmIHNlbGYuZGF0YToKKyAgICAgICAgICAgIHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXdyaXRlVGhyZWFkLCBkYWVtb249VHJ1ZSkuc3RhcnQoKQorICAgICAgICBpZiBzZWxmLnByb2Nlc3Muc3RkZXJyOgorICAgICAgICAgICAgdGhyZWFkID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9cmVhZFN0ZGVyclRocmVhZCkKKyAgICAgICAgICAgIHRocmVhZC5zdGFydCgpCisgICAgICAgICAgICBzZWxmLnRocmVhZHMuYXBwZW5kKHRocmVhZCkKKyAgICAgICAgaWYgc2VsZi5vdXRwdXRfbG9nOgorICAgICAgICAgICAgc2VsZi5vdXRwdXRfbG9nLmluZm8oJ1J1bm5pbmc6ICVzJyAlIHNlbGYuY21kKQorICAgICAgICB0aHJlYWQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1yZWFkU3Rkb3V0VGhyZWFkKQorICAgICAgICB0aHJlYWQuc3RhcnQoKQorICAgICAgICBzZWxmLnRocmVhZHMuYXBwZW5kKHRocmVhZCkKIAogICAgICAgICBzZWxmLmxvZy5kZWJ1ZygiUnVubmluZyBjb21tYW5kICclcyciICUgc2VsZi5jbWQpCiAKICAgICAgICAgaWYgbm90IHNlbGYuYmc6Ci0gICAgICAgICAgICBzZWxmLnRocmVhZC5qb2luKHNlbGYudGltZW91dCkKKyAgICAgICAgICAgIGlmIHNlbGYudGltZW91dCBpcyBOb25lOgorICAgICAgICAgICAgICAgIGZvciB0aHJlYWQgaW4gc2VsZi50aHJlYWRzOgorICAgICAgICAgICAgICAgICAgICB0aHJlYWQuam9pbigpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRlYWRsaW5lID0gdGltZS50aW1lKCkgKyBzZWxmLnRpbWVvdXQKKyAgICAgICAgICAgICAgICBmb3IgdGhyZWFkIGluIHNlbGYudGhyZWFkczoKKyAgICAgICAgICAgICAgICAgICAgdGltZW91dCA9IGRlYWRsaW5lIC0gdGltZS50aW1lKCkgCisgICAgICAgICAgICAgICAgICAgIGlmIHRpbWVvdXQgPCAwOgorICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dCA9IDAKKyAgICAgICAgICAgICAgICAgICAgdGhyZWFkLmpvaW4odGltZW91dCkKICAgICAgICAgICAgIHNlbGYuc3RvcCgpCiAKICAgICBkZWYgc3RvcChzZWxmKToKLSAgICAgICAgaWYgc2VsZi50aHJlYWQuaXNBbGl2ZSgpOgotICAgICAgICAgICAgc2VsZi5wcm9jZXNzLnRlcm1pbmF0ZSgpCisgICAgICAgIGZvciB0aHJlYWQgaW4gc2VsZi50aHJlYWRzOgorICAgICAgICAgICAgaWYgdGhyZWFkLmlzQWxpdmUoKToKKyAgICAgICAgICAgICAgICBzZWxmLnByb2Nlc3MudGVybWluYXRlKCkKICAgICAgICAgICAgICMgbGV0J3MgZ2l2ZSBpdCBtb3JlIHRpbWUgdG8gdGVybWluYXRlIGdyYWNlZnVsbHkgYmVmb3JlIGtpbGxpbmcgaXQKLSAgICAgICAgICAgIHNlbGYudGhyZWFkLmpvaW4oNSkKLSAgICAgICAgICAgIGlmIHNlbGYudGhyZWFkLmlzQWxpdmUoKToKKyAgICAgICAgICAgIHRocmVhZC5qb2luKDUpCisgICAgICAgICAgICBpZiB0aHJlYWQuaXNBbGl2ZSgpOgogICAgICAgICAgICAgICAgIHNlbGYucHJvY2Vzcy5raWxsKCkKLSAgICAgICAgICAgICAgICBzZWxmLnRocmVhZC5qb2luKCkKKyAgICAgICAgICAgICAgICB0aHJlYWQuam9pbigpCiAKLSAgICAgICAgaWYgbm90IHNlbGYub3V0cHV0OgotICAgICAgICAgICAgc2VsZi5vdXRwdXQgPSAiIgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5vdXRwdXQgPSBzZWxmLm91dHB1dC5kZWNvZGUoInV0Zi04IiwgZXJyb3JzPSdyZXBsYWNlJykucnN0cmlwKCkKLSAgICAgICAgc2VsZi5zdGF0dXMgPSBzZWxmLnByb2Nlc3MucG9sbCgpCisgICAgICAgIGRlZiBmaW5hbGl6ZV9vdXRwdXQoZGF0YSk6CisgICAgICAgICAgICBpZiBub3QgZGF0YToKKyAgICAgICAgICAgICAgICBkYXRhID0gIiIKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZGF0YSA9IGIiIi5qb2luKGRhdGEpCisgICAgICAgICAgICAgICAgZGF0YSA9IGRhdGEuZGVjb2RlKCJ1dGYtOCIsIGVycm9ycz0ncmVwbGFjZScpLnJzdHJpcCgpCisgICAgICAgICAgICByZXR1cm4gZGF0YQorCisgICAgICAgIHNlbGYub3V0cHV0ID0gZmluYWxpemVfb3V0cHV0KHNlbGYuX291dHB1dF9jaHVua3MpCisgICAgICAgIHNlbGYuX291dHB1dF9jaHVua3MgPSBOb25lCisgICAgICAgICMgc2VsZi5lcnJvciB1c2VkIHRvIGJlIGEgYnl0ZSBzdHJpbmcgZWFybGllciwgcHJvYmFibHkgdW5pbnRlbnRpb25hbGx5LgorICAgICAgICAjIE5vdyBpdCBpcyBhIG5vcm1hbCBzdHJpbmcsIGp1c3QgbGlrZSBzZWxmLm91dHB1dC4KKyAgICAgICAgc2VsZi5lcnJvciA9IGZpbmFsaXplX291dHB1dChzZWxmLl9lcnJvcl9jaHVua3MpCisgICAgICAgIHNlbGYuX2Vycm9yX2NodW5rcyA9IE5vbmUKKyAgICAgICAgIyBBdCB0aGlzIHBvaW50IHdlIGtub3cgdGhhdCB0aGUgcHJvY2VzcyBoYXMgY2xvc2VkIHN0ZG91dC9zdGRlcnIsIHNvCisgICAgICAgICMgaXQgaXMgc2FmZSBhbmQgbmVjZXNzYXJ5IHRvIHdhaXQgZm9yIHRoZSBhY3R1YWwgcHJvY2VzcyBjb21wbGV0aW9uLgorICAgICAgICBzZWxmLnN0YXR1cyA9IHNlbGYucHJvY2Vzcy53YWl0KCkKIAogICAgICAgICBzZWxmLmxvZy5kZWJ1ZygiQ29tbWFuZCAnJXMnIHJldHVybmVkICVkIGFzIGV4aXQgY29kZS4iICUgKHNlbGYuY21kLCBzZWxmLnN0YXR1cykpCiAgICAgICAgICMgbG9nZ2luZyB0aGUgY29tcGxldGUgb3V0cHV0IGlzIGluc2FuZQpAQCAtOTgsNyArMTYxLDcgQEAKIAogCiBkZWYgcnVuQ21kKGNvbW1hbmQsIGlnbm9yZV9zdGF0dXM9RmFsc2UsIHRpbWVvdXQ9Tm9uZSwgYXNzZXJ0X2Vycm9yPVRydWUsCi0gICAgICAgICAgbmF0aXZlX3N5c3Jvb3Q9Tm9uZSwgbGltaXRfZXhjX291dHB1dD0wLCAqKm9wdGlvbnMpOgorICAgICAgICAgIG5hdGl2ZV9zeXNyb290PU5vbmUsIGxpbWl0X2V4Y19vdXRwdXQ9MCwgb3V0cHV0X2xvZz1Ob25lLCAqKm9wdGlvbnMpOgogICAgIHJlc3VsdCA9IFJlc3VsdCgpCiAKICAgICBpZiBuYXRpdmVfc3lzcm9vdDoKQEAgLTEwOCw3ICsxNzEsNyBAQAogICAgICAgICBuZW52WydQQVRIJ10gPSBleHRyYV9wYXRocyArICc6JyArIG5lbnYuZ2V0KCdQQVRIJywgJycpCiAgICAgICAgIG9wdGlvbnNbJ2VudiddID0gbmVudgogCi0gICAgY21kID0gQ29tbWFuZChjb21tYW5kLCB0aW1lb3V0PXRpbWVvdXQsICoqb3B0aW9ucykKKyAgICBjbWQgPSBDb21tYW5kKGNvbW1hbmQsIHRpbWVvdXQ9dGltZW91dCwgb3V0cHV0X2xvZz1vdXRwdXRfbG9nLCAqKm9wdGlvbnMpCiAgICAgY21kLnJ1bigpCiAKICAgICByZXN1bHQuY29tbWFuZCA9IGNvbW1hbmQKQEAgLTEzMiw3ICsxOTUsNyBAQAogICAgIHJldHVybiByZXN1bHQKIAogCi1kZWYgYml0YmFrZShjb21tYW5kLCBpZ25vcmVfc3RhdHVzPUZhbHNlLCB0aW1lb3V0PU5vbmUsIHBvc3Rjb25maWc9Tm9uZSwgKipvcHRpb25zKToKK2RlZiBiaXRiYWtlKGNvbW1hbmQsIGlnbm9yZV9zdGF0dXM9RmFsc2UsIHRpbWVvdXQ9Tm9uZSwgcG9zdGNvbmZpZz1Ob25lLCBvdXRwdXRfbG9nPU5vbmUsICoqb3B0aW9ucyk6CiAKICAgICBpZiBwb3N0Y29uZmlnOgogICAgICAgICBwb3N0Y29uZmlnX2ZpbGUgPSBvcy5wYXRoLmpvaW4ob3MuZW52aXJvbi5nZXQoJ0JVSUxERElSJyksICdvZXFhLXBvc3QuY29uZicpCkBAIC0xNDcsNyArMjEwLDcgQEAKICAgICAgICAgY21kID0gWyAiYml0YmFrZSIgXSArIFthIGZvciBhIGluIChjb21tYW5kICsgZXh0cmFfYXJncy5zcGxpdCgiICIpKSBpZiBhIG5vdCBpbiBbIiJdXQogCiAgICAgdHJ5OgotICAgICAgICByZXR1cm4gcnVuQ21kKGNtZCwgaWdub3JlX3N0YXR1cywgdGltZW91dCwgKipvcHRpb25zKQorICAgICAgICByZXR1cm4gcnVuQ21kKGNtZCwgaWdub3JlX3N0YXR1cywgdGltZW91dCwgb3V0cHV0X2xvZz1vdXRwdXRfbG9nLCAqKm9wdGlvbnMpCiAgICAgZmluYWxseToKICAgICAgICAgaWYgcG9zdGNvbmZpZzoKICAgICAgICAgICAgIG9zLnJlbW92ZShwb3N0Y29uZmlnX2ZpbGUpCkBAIC0yMzMsNiArMjk2LDEyIEBACiAgICAgaW1wb3J0IGJiLnRpbmZvaWwKICAgICBpbXBvcnQgYmIuYnVpbGQKIAorICAgICMgTmVlZCBhIG5vbi0nQml0QmFrZScgbG9nZ2VyIHRvIGNhcHR1cmUgdGhlIHJ1bm5lciBvdXRwdXQKKyAgICB0YXJnZXRsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcignVGFyZ2V0UnVubmVyJykKKyAgICB0YXJnZXRsb2dnZXIuc2V0TGV2ZWwobG9nZ2luZy5ERUJVRykKKyAgICBoYW5kbGVyID0gbG9nZ2luZy5TdHJlYW1IYW5kbGVyKHN5cy5zdGRvdXQpCisgICAgdGFyZ2V0bG9nZ2VyLmFkZEhhbmRsZXIoaGFuZGxlcikKKwogICAgIHRpbmZvaWwgPSBiYi50aW5mb2lsLlRpbmZvaWwoKQogICAgIHRpbmZvaWwucHJlcGFyZShjb25maWdfb25seT1GYWxzZSwgcXVpZXQ9VHJ1ZSkKICAgICB0cnk6CkBAIC0yNTAsMzEgKzMxOSwxNSBAQAogICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBvdmVycmlkZXMuaXRlbXMoKToKICAgICAgICAgICAgIHJlY2lwZWRhdGEuc2V0VmFyKGtleSwgdmFsdWUpCiAKLSAgICAgICAgIyBUaGUgUWVtdVJ1bm5lciBsb2cgaXMgc2F2ZWQgb3V0LCBidXQgd2UgbmVlZCB0byBlbnN1cmUgaXQgaXMgYXQgdGhlIHJpZ2h0Ci0gICAgICAgICMgbG9nIGxldmVsIChhbmQgdGhlbiBlbnN1cmUgdGhhdCBzaW5jZSBpdCdzIGEgY2hpbGQgb2YgdGhlIEJpdEJha2UgbG9nZ2VyLAotICAgICAgICAjIHdlIGRpc2FibGUgcHJvcGFnYXRpb24gc28gd2UgZG9uJ3QgdGhlbiBzZWUgdGhlIGxvZyBldmVudHMgb24gdGhlIGNvbnNvbGUpCi0gICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdCaXRCYWtlLlFlbXVSdW5uZXInKQotICAgICAgICBsb2dnZXIuc2V0TGV2ZWwobG9nZ2luZy5ERUJVRykKLSAgICAgICAgbG9nZ2VyLnByb3BhZ2F0ZSA9IEZhbHNlCiAgICAgICAgIGxvZ2RpciA9IHJlY2lwZWRhdGEuZ2V0VmFyKCJURVNUX0xPR19ESVIiKQogCi0gICAgICAgIHFlbXUgPSBvZXFhLnRhcmdldGNvbnRyb2wuUWVtdVRhcmdldChyZWNpcGVkYXRhLCBpbWFnZV9mc3R5cGUpCisgICAgICAgIHFlbXUgPSBvZXFhLnRhcmdldGNvbnRyb2wuUWVtdVRhcmdldChyZWNpcGVkYXRhLCB0YXJnZXRsb2dnZXIsIGltYWdlX2ZzdHlwZSkKICAgICBmaW5hbGx5OgogICAgICAgICAjIFdlIG5lZWQgdG8gc2h1dCBkb3duIHRpbmZvaWwgZWFybHkgaGVyZSBpbiBjYXNlIHdlIGFjdHVhbGx5IHdhbnQKICAgICAgICAgIyB0byBydW4gdGluZm9pbC11c2luZyB1dGlsaXRpZXMgd2l0aCB0aGUgcnVubmluZyBRRU1VIGluc3RhbmNlLgogICAgICAgICAjIEx1Y2tpbHkgUWVtdVRhcmdldCBkb2Vzbid0IG5lZWQgaXQgYWZ0ZXIgdGhlIGNvbnN0cnVjdG9yLgogICAgICAgICB0aW5mb2lsLnNodXRkb3duKCkKIAotICAgICMgU2V0dXAgYml0YmFrZSBsb2dnZXIgYXMgY29uc29sZSBoYW5kbGVyIGlzIHJlbW92ZWQgYnkgdGluZm9pbC5zaHV0ZG93bgotICAgIGJibG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoJ0JpdEJha2UnKQotICAgIGJibG9nZ2VyLnNldExldmVsKGxvZ2dpbmcuSU5GTykKLSAgICBjb25zb2xlID0gbG9nZ2luZy5TdHJlYW1IYW5kbGVyKHN5cy5zdGRvdXQpCi0gICAgYmJmb3JtYXQgPSBiYi5tc2cuQkJMb2dGb3JtYXR0ZXIoIiUobGV2ZWxuYW1lKXM6ICUobWVzc2FnZSlzIikKLSAgICBpZiBzeXMuc3Rkb3V0LmlzYXR0eSgpOgotICAgICAgICBiYmZvcm1hdC5lbmFibGVfY29sb3IoKQotICAgIGNvbnNvbGUuc2V0Rm9ybWF0dGVyKGJiZm9ybWF0KQotICAgIGJibG9nZ2VyLmFkZEhhbmRsZXIoY29uc29sZSkKLQogICAgIHRyeToKICAgICAgICAgcWVtdS5kZXBsb3koKQogICAgICAgICB0cnk6CkBAIC0yODksNiArMzQyLDcgQEAKICAgICAgICAgICAgIHFlbXUuc3RvcCgpCiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIHBhc3MKKyAgICB0YXJnZXRsb2dnZXIucmVtb3ZlSGFuZGxlcihoYW5kbGVyKQogCiBkZWYgdXBkYXRlRW52KGVudl9maWxlKToKICAgICAiIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2dpdC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2dpdC5weQppbmRleCBlMGNiM2YwLi43NTdlM2YwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9naXQucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvZ2l0LnB5CkBAIC02NCw3ICs2NCw3IEBACiAgICAgZGVmIHJldl9wYXJzZShzZWxmLCByZXZpc2lvbik6CiAgICAgICAgICIiIkRvIGdpdCByZXYtcGFyc2UiIiIKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIHNlbGYucnVuX2NtZChbJ3Jldi1wYXJzZScsIHJldmlzaW9uXSkKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnJ1bl9jbWQoWydyZXYtcGFyc2UnLCAnLS12ZXJpZnknLCByZXZpc2lvbl0pCiAgICAgICAgIGV4Y2VwdCBHaXRFcnJvcjoKICAgICAgICAgICAgICMgUmV2aXNpb24gZG9lcyBub3QgZXhpc3QKICAgICAgICAgICAgIHJldHVybiBOb25lCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9sb2dwYXJzZXIucHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9sb2dwYXJzZXIucHkKaW5kZXggYjM3N2RjZC4uMDY3MDYyNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvbG9ncGFyc2VyLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2xvZ3BhcnNlci5weQpAQCAtOSw3ICs5LDcgQEAKICMgQSBwYXJzZXIgdGhhdCBjYW4gYmUgdXNlZCB0byBpZGVudGlmeSB3ZWF0aGVyIGEgbGluZSBpcyBhIHRlc3QgcmVzdWx0IG9yIGEgc2VjdGlvbiBzdGF0ZW1lbnQuCiBjbGFzcyBMcGFyc2VyKG9iamVjdCk6CiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdF8wX3Bhc3NfcmVnZXgsIHRlc3RfMF9mYWlsX3JlZ2V4LCBzZWN0aW9uXzBfYmVnaW5fcmVnZXg9Tm9uZSwgc2VjdGlvbl8wX2VuZF9yZWdleD1Ob25lLCAqKmt3YXJncyk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RfMF9wYXNzX3JlZ2V4LCB0ZXN0XzBfZmFpbF9yZWdleCwgdGVzdF8wX3NraXBfcmVnZXgsIHNlY3Rpb25fMF9iZWdpbl9yZWdleD1Ob25lLCBzZWN0aW9uXzBfZW5kX3JlZ2V4PU5vbmUsICoqa3dhcmdzKToKICAgICAgICAgIyBJbml0aWFsaXplIHRoZSBhcmd1bWVudHMgZGljdGlvbmFyeQogICAgICAgICBpZiBrd2FyZ3M6CiAgICAgICAgICAgICBzZWxmLmFyZ3MgPSBrd2FyZ3MKQEAgLTE5LDEyICsxOSwxMyBAQAogICAgICAgICAjIEFkZCB0aGUgZGVmYXVsdCBhcmdzIHRvIHRoZSBkaWN0aW9uYXJ5CiAgICAgICAgIHNlbGYuYXJnc1sndGVzdF8wX3Bhc3NfcmVnZXgnXSA9IHRlc3RfMF9wYXNzX3JlZ2V4CiAgICAgICAgIHNlbGYuYXJnc1sndGVzdF8wX2ZhaWxfcmVnZXgnXSA9IHRlc3RfMF9mYWlsX3JlZ2V4CisgICAgICAgIHNlbGYuYXJnc1sndGVzdF8wX3NraXBfcmVnZXgnXSA9IHRlc3RfMF9za2lwX3JlZ2V4CiAgICAgICAgIGlmIHNlY3Rpb25fMF9iZWdpbl9yZWdleDoKICAgICAgICAgICAgIHNlbGYuYXJnc1snc2VjdGlvbl8wX2JlZ2luX3JlZ2V4J10gPSBzZWN0aW9uXzBfYmVnaW5fcmVnZXgKICAgICAgICAgaWYgc2VjdGlvbl8wX2VuZF9yZWdleDoKICAgICAgICAgICAgIHNlbGYuYXJnc1snc2VjdGlvbl8wX2VuZF9yZWdleCddID0gc2VjdGlvbl8wX2VuZF9yZWdleAogCi0gICAgICAgIHNlbGYudGVzdF9wb3NzaWJsZV9zdGF0dXMgPSBbJ3Bhc3MnLCAnZmFpbCcsICdlcnJvciddCisgICAgICAgIHNlbGYudGVzdF9wb3NzaWJsZV9zdGF0dXMgPSBbJ3Bhc3MnLCAnZmFpbCcsICdlcnJvcicsICdza2lwJ10KICAgICAgICAgc2VsZi5zZWN0aW9uX3Bvc3NpYmxlX3N0YXR1cyA9IFsnYmVnaW4nLCAnZW5kJ10KIAogICAgICAgICBzZWxmLmluaXRpYWxpemVkID0gRmFsc2UKQEAgLTEwOCw3ICsxMDksNyBAQAogICAgICAgICAgICAgcHJlZml4ID0gJycKICAgICAgICAgICAgIGZvciB4IGluIHRlc3Rfc3RhdHVzOgogICAgICAgICAgICAgICAgIHByZWZpeCArPXgrJy4nCi0gICAgICAgICAgICBpZiAoc2VjdGlvbiAhPSAnJyk6CisgICAgICAgICAgICBpZiBzZWN0aW9uOgogICAgICAgICAgICAgICAgIHByZWZpeCArPSBzZWN0aW9uCiAgICAgICAgICAgICBzZWN0aW9uX2ZpbGUgPSBvcy5wYXRoLmpvaW4odGFyZ2V0X2RpciwgcHJlZml4KQogICAgICAgICAgICAgIyBwdXJnZSB0aGUgZmlsZSBjb250ZW50cyBpZiBpdCBleGlzdHMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL21ldGFkYXRhLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvbWV0YWRhdGEucHkKaW5kZXggY2I4MTE1NS4uNjViYmRjNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvbWV0YWRhdGEucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvbWV0YWRhdGEucHkKQEAgLTEwLDE5ICsxMCw5IEBACiBmcm9tIHhtbC5kb20ubWluaWRvbSBpbXBvcnQgcGFyc2VTdHJpbmcKIGZyb20geG1sLmV0cmVlLkVsZW1lbnRUcmVlIGltcG9ydCBFbGVtZW50LCB0b3N0cmluZwogCitmcm9tIG9lLmxzYiBpbXBvcnQgZ2V0X29zX3JlbGVhc2UKIGZyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kLCBnZXRfYmJfdmFycwogCi1kZWYgZ2V0X29zX3JlbGVhc2UoKToKLSAgICAiIiJHZXQgaW5mbyBmcm9tIC9ldGMvb3MtcmVsZWFzZSBhcyBhIGRpY3QiIiIKLSAgICBkYXRhID0gT3JkZXJlZERpY3QoKQotICAgIG9zX3JlbGVhc2VfZmlsZSA9ICcvZXRjL29zLXJlbGVhc2UnCi0gICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKG9zX3JlbGVhc2VfZmlsZSk6Ci0gICAgICAgIHJldHVybiBOb25lCi0gICAgd2l0aCBvcGVuKG9zX3JlbGVhc2VfZmlsZSkgYXMgZm9iajoKLSAgICAgICAgZm9yIGxpbmUgaW4gZm9iajoKLSAgICAgICAgICAgIGtleSwgdmFsdWUgPSBsaW5lLnNwbGl0KCc9JywgMSkKLSAgICAgICAgICAgIGRhdGFba2V5LnN0cmlwKCkubG93ZXIoKV0gPSB2YWx1ZS5zdHJpcCgpLnN0cmlwKCciJykKLSAgICByZXR1cm4gZGF0YQogCiBkZWYgbWV0YWRhdGFfZnJvbV9iYigpOgogICAgICIiIiBSZXR1cm5zIHRlc3QncyBtZXRhZGF0YSBhcyBPcmRlcmVkRGljdC4KQEAgLTQ1LDkgKzM1LDkgQEAKICAgICBvc19yZWxlYXNlID0gZ2V0X29zX3JlbGVhc2UoKQogICAgIGlmIG9zX3JlbGVhc2U6CiAgICAgICAgIGluZm9fZGljdFsnaG9zdF9kaXN0cm8nXSA9IE9yZGVyZWREaWN0KCkKLSAgICAgICAgZm9yIGtleSBpbiAoJ2lkJywgJ3ZlcnNpb25faWQnLCAncHJldHR5X25hbWUnKToKKyAgICAgICAgZm9yIGtleSBpbiAoJ0lEJywgJ1ZFUlNJT05fSUQnLCAnUFJFVFRZX05BTUUnKToKICAgICAgICAgICAgIGlmIGtleSBpbiBvc19yZWxlYXNlOgotICAgICAgICAgICAgICAgIGluZm9fZGljdFsnaG9zdF9kaXN0cm8nXVtrZXldID0gb3NfcmVsZWFzZVtrZXldCisgICAgICAgICAgICAgICAgaW5mb19kaWN0Wydob3N0X2Rpc3RybyddW2tleS5sb3dlcigpXSA9IG9zX3JlbGVhc2Vba2V5XQogCiAgICAgaW5mb19kaWN0WydsYXllcnMnXSA9IGdldF9sYXllcnMoZGF0YV9kaWN0WydCQkxBWUVSUyddKQogICAgIGluZm9fZGljdFsnYml0YmFrZSddID0gZ2l0X3Jldl9pbmZvKG9zLnBhdGguZGlybmFtZShiYi5fX2ZpbGVfXykpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9xZW11cnVubmVyLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvcWVtdXJ1bm5lci5weQppbmRleCBiYTQ0Yjk2Li4wNjMxZDQzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9xZW11cnVubmVyLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL3FlbXVydW5uZXIucHkKQEAgLTE3LDExICsxNyw4IEBACiBpbXBvcnQgc3RyaW5nCiBpbXBvcnQgdGhyZWFkaW5nCiBpbXBvcnQgY29kZWNzCi1mcm9tIG9lcWEudXRpbHMuZHVtcCBpbXBvcnQgSG9zdER1bXBlcgotCiBpbXBvcnQgbG9nZ2luZwotbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoIkJpdEJha2UuUWVtdVJ1bm5lciIpCi1sb2dnZXIuYWRkSGFuZGxlcihsb2dnaW5nLlN0cmVhbUhhbmRsZXIoKSkKK2Zyb20gb2VxYS51dGlscy5kdW1wIGltcG9ydCBIb3N0RHVtcGVyCiAKICMgR2V0IFVuaWNvZGUgbm9uIHByaW50YWJsZSBjb250cm9sIGNoYXJzCiBjb250cm9sX3JhbmdlID0gbGlzdChyYW5nZSgwLDMyKSkrbGlzdChyYW5nZSgxMjcsMTYwKSkKQEAgLTMxLDcgKzI4LDcgQEAKIAogY2xhc3MgUWVtdVJ1bm5lcjoKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYWNoaW5lLCByb290ZnMsIGRpc3BsYXksIHRtcGRpciwgZGVwbG95X2Rpcl9pbWFnZSwgbG9nZmlsZSwgYm9vdHRpbWUsIGR1bXBfZGlyLCBkdW1wX2hvc3RfY21kcywgdXNlX2t2bSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1hY2hpbmUsIHJvb3RmcywgZGlzcGxheSwgdG1wZGlyLCBkZXBsb3lfZGlyX2ltYWdlLCBsb2dmaWxlLCBib290dGltZSwgZHVtcF9kaXIsIGR1bXBfaG9zdF9jbWRzLCB1c2Vfa3ZtLCBsb2dnZXIpOgogCiAgICAgICAgICMgUG9wZW4gb2JqZWN0IGZvciBydW5xZW11CiAgICAgICAgIHNlbGYucnVucWVtdSA9IE5vbmUKQEAgLTU0LDEwICs1MSwxNCBAQAogICAgICAgICBzZWxmLmxvZ2dlZCA9IEZhbHNlCiAgICAgICAgIHNlbGYudGhyZWFkID0gTm9uZQogICAgICAgICBzZWxmLnVzZV9rdm0gPSB1c2Vfa3ZtCisgICAgICAgIHNlbGYubXNnID0gJycKIAotICAgICAgICBzZWxmLnJ1bnFlbXV0aW1lID0gNjAKKyAgICAgICAgc2VsZi5ydW5xZW11dGltZSA9IDEyMAorICAgICAgICBzZWxmLnFlbXVfcGlkZmlsZSA9ICdwaWRmaWxlXycrc3RyKG9zLmdldHBpZCgpKQogICAgICAgICBzZWxmLmhvc3RfZHVtcGVyID0gSG9zdER1bXBlcihkdW1wX2hvc3RfY21kcywgZHVtcF9kaXIpCiAKKyAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIKKwogICAgIGRlZiBjcmVhdGVfc29ja2V0KHNlbGYpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQpAQCAtNjUsNyArNjYsNyBAQAogICAgICAgICAgICAgc29jay5iaW5kKCgiMTI3LjAuMC4xIiwwKSkKICAgICAgICAgICAgIHNvY2subGlzdGVuKDIpCiAgICAgICAgICAgICBwb3J0ID0gc29jay5nZXRzb2NrbmFtZSgpWzFdCi0gICAgICAgICAgICBsb2dnZXIuaW5mbygiQ3JlYXRlZCBsaXN0ZW5pbmcgc29ja2V0IGZvciBxZW11IHNlcmlhbCBjb25zb2xlIG9uOiAxMjcuMC4wLjE6JXMiICUgcG9ydCkKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJDcmVhdGVkIGxpc3RlbmluZyBzb2NrZXQgZm9yIHFlbXUgc2VyaWFsIGNvbnNvbGUgb246IDEyNy4wLjAuMTolcyIgJSBwb3J0KQogICAgICAgICAgICAgcmV0dXJuIChzb2NrLCBwb3J0KQogCiAgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3I6CkBAIC03OCw2ICs3OSw3IEBACiAgICAgICAgICAgICAjIGJlY2F1c2UgaXMgcG9zc2libGUgdG8gaGF2ZSBjb250cm9sIGNoYXJhY3RlcnMKICAgICAgICAgICAgIG1zZyA9IG1zZy5kZWNvZGUoInV0Zi04IiwgZXJyb3JzPSdpZ25vcmUnKQogICAgICAgICAgICAgbXNnID0gcmVfY29udHJvbF9jaGFyLnN1YignJywgbXNnKQorICAgICAgICAgICAgc2VsZi5tc2cgKz0gbXNnCiAgICAgICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKHNlbGYubG9nZmlsZSwgImEiLCBlbmNvZGluZz0idXRmLTgiKSBhcyBmOgogICAgICAgICAgICAgICAgIGYud3JpdGUoIiVzIiAlIG1zZykKIApAQCAtOTEsNTggKzkzLDYzIEBACiAgICAgZGVmIGhhbmRsZVNJR0NITEQoc2VsZiwgc2lnbnVtLCBmcmFtZSk6CiAgICAgICAgIGlmIHNlbGYucnVucWVtdSBhbmQgc2VsZi5ydW5xZW11LnBvbGwoKToKICAgICAgICAgICAgIGlmIHNlbGYucnVucWVtdS5yZXR1cm5jb2RlOgotICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdydW5xZW11IGV4aXRlZCB3aXRoIGNvZGUgJWQnICUgc2VsZi5ydW5xZW11LnJldHVybmNvZGUpCi0gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIk91dHB1dCBmcm9tIHJ1bnFlbXU6XG4lcyIgJSBzZWxmLmdldE91dHB1dChzZWxmLnJ1bnFlbXUuc3Rkb3V0KSkKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygncnVucWVtdSBleGl0ZWQgd2l0aCBjb2RlICVkJyAlIHNlbGYucnVucWVtdS5yZXR1cm5jb2RlKQorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJPdXRwdXQgZnJvbSBydW5xZW11OlxuJXMiICUgc2VsZi5nZXRPdXRwdXQoc2VsZi5ydW5xZW11LnN0ZG91dCkpCiAgICAgICAgICAgICAgICAgc2VsZi5zdG9wKCkKICAgICAgICAgICAgICAgICBzZWxmLl9kdW1wX2hvc3QoKQogICAgICAgICAgICAgICAgIHJhaXNlIFN5c3RlbUV4aXQKIAogICAgIGRlZiBzdGFydChzZWxmLCBxZW11cGFyYW1zID0gTm9uZSwgZ2V0X2lwID0gVHJ1ZSwgZXh0cmFfYm9vdHBhcmFtcyA9IE5vbmUsIHJ1bnFlbXVwYXJhbXM9JycsIGxhdW5jaF9jbWQ9Tm9uZSwgZGlzY2FyZF93cml0ZXM9VHJ1ZSk6CisgICAgICAgIGVudiA9IG9zLmVudmlyb24uY29weSgpCiAgICAgICAgIGlmIHNlbGYuZGlzcGxheToKLSAgICAgICAgICAgIG9zLmVudmlyb25bIkRJU1BMQVkiXSA9IHNlbGYuZGlzcGxheQorICAgICAgICAgICAgZW52WyJESVNQTEFZIl0gPSBzZWxmLmRpc3BsYXkKICAgICAgICAgICAgICMgU2V0IHRoaXMgZmxhZyBzbyB0aGF0IFFlbXUgZG9lc24ndCBkbyBhbnkgZ3JhYnMgYXMgU0RMIGdyYWJzCiAgICAgICAgICAgICAjIGludGVyYWN0IGJhZGx5IHdpdGggc2NyZWVuc2F2ZXJzLgotICAgICAgICAgICAgb3MuZW52aXJvblsiUUVNVV9ET05UX0dSQUIiXSA9ICIxIgorICAgICAgICAgICAgZW52WyJRRU1VX0RPTlRfR1JBQiJdID0gIjEiCiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLnJvb3Rmcyk6Ci0gICAgICAgICAgICBsb2dnZXIuZXJyb3IoIkludmFsaWQgcm9vdGZzICVzIiAlIHNlbGYucm9vdGZzKQorICAgICAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3IoIkludmFsaWQgcm9vdGZzICVzIiAlIHNlbGYucm9vdGZzKQogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLnRtcGRpcik6Ci0gICAgICAgICAgICBsb2dnZXIuZXJyb3IoIkludmFsaWQgVE1QRElSIHBhdGggJXMiICUgc2VsZi50bXBkaXIpCisgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcigiSW52YWxpZCBUTVBESVIgcGF0aCAlcyIgJSBzZWxmLnRtcGRpcikKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgb3MuZW52aXJvblsiT0VfVE1QRElSIl0gPSBzZWxmLnRtcGRpcgorICAgICAgICAgICAgZW52WyJPRV9UTVBESVIiXSA9IHNlbGYudG1wZGlyCiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLmRlcGxveV9kaXJfaW1hZ2UpOgotICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJJbnZhbGlkIERFUExPWV9ESVJfSU1BR0UgcGF0aCAlcyIgJSBzZWxmLmRlcGxveV9kaXJfaW1hZ2UpCisgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcigiSW52YWxpZCBERVBMT1lfRElSX0lNQUdFIHBhdGggJXMiICUgc2VsZi5kZXBsb3lfZGlyX2ltYWdlKQogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBvcy5lbnZpcm9uWyJERVBMT1lfRElSX0lNQUdFIl0gPSBzZWxmLmRlcGxveV9kaXJfaW1hZ2UKKyAgICAgICAgICAgIGVudlsiREVQTE9ZX0RJUl9JTUFHRSJdID0gc2VsZi5kZXBsb3lfZGlyX2ltYWdlCiAKICAgICAgICAgaWYgbm90IGxhdW5jaF9jbWQ6CiAgICAgICAgICAgICBsYXVuY2hfY21kID0gJ3J1bnFlbXUgJXMgJXMgJyAlICgnc25hcHNob3QnIGlmIGRpc2NhcmRfd3JpdGVzIGVsc2UgJycsIHJ1bnFlbXVwYXJhbXMpCiAgICAgICAgICAgICBpZiBzZWxmLnVzZV9rdm06Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ1VzaW5nIGt2bSBmb3IgcnVucWVtdScpCisgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoJ1VzaW5nIGt2bSBmb3IgcnVucWVtdScpCiAgICAgICAgICAgICAgICAgbGF1bmNoX2NtZCArPSAnIGt2bScKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ05vdCB1c2luZyBrdm0gZm9yIHJ1bnFlbXUnKQorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCdOb3QgdXNpbmcga3ZtIGZvciBydW5xZW11JykKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmRpc3BsYXk6CiAgICAgICAgICAgICAgICAgbGF1bmNoX2NtZCArPSAnIG5vZ3JhcGhpYycKICAgICAgICAgICAgIGxhdW5jaF9jbWQgKz0gJyAlcyAlcycgJSAoc2VsZi5tYWNoaW5lLCBzZWxmLnJvb3RmcykKIAotICAgICAgICByZXR1cm4gc2VsZi5sYXVuY2gobGF1bmNoX2NtZCwgcWVtdXBhcmFtcz1xZW11cGFyYW1zLCBnZXRfaXA9Z2V0X2lwLCBleHRyYV9ib290cGFyYW1zPWV4dHJhX2Jvb3RwYXJhbXMpCisgICAgICAgIHJldHVybiBzZWxmLmxhdW5jaChsYXVuY2hfY21kLCBxZW11cGFyYW1zPXFlbXVwYXJhbXMsIGdldF9pcD1nZXRfaXAsIGV4dHJhX2Jvb3RwYXJhbXM9ZXh0cmFfYm9vdHBhcmFtcywgZW52PWVudikKIAotICAgIGRlZiBsYXVuY2goc2VsZiwgbGF1bmNoX2NtZCwgZ2V0X2lwID0gVHJ1ZSwgcWVtdXBhcmFtcyA9IE5vbmUsIGV4dHJhX2Jvb3RwYXJhbXMgPSBOb25lKToKKyAgICBkZWYgbGF1bmNoKHNlbGYsIGxhdW5jaF9jbWQsIGdldF9pcCA9IFRydWUsIHFlbXVwYXJhbXMgPSBOb25lLCBleHRyYV9ib290cGFyYW1zID0gTm9uZSwgZW52ID0gTm9uZSk6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHRocmVhZHNvY2ssIHRocmVhZHBvcnQgPSBzZWxmLmNyZWF0ZV9zb2NrZXQoKQogICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfc29ja2V0LCBzZWxmLnNlcnZlcnBvcnQgPSBzZWxmLmNyZWF0ZV9zb2NrZXQoKQogICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yIGFzIG1zZzoKLSAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiRmFpbGVkIHRvIGNyZWF0ZSBsaXN0ZW5pbmcgc29ja2V0OiAlcyIgJSBtc2dbMV0pCisgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcigiRmFpbGVkIHRvIGNyZWF0ZSBsaXN0ZW5pbmcgc29ja2V0OiAlcyIgJSBtc2dbMV0pCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAogICAgICAgICBib290cGFyYW1zID0gJ2NvbnNvbGU9dHR5MSBjb25zb2xlPXR0eVMwLDExNTIwMG44IHByaW50ay50aW1lPTEnCiAgICAgICAgIGlmIGV4dHJhX2Jvb3RwYXJhbXM6CiAgICAgICAgICAgICBib290cGFyYW1zID0gYm9vdHBhcmFtcyArICcgJyArIGV4dHJhX2Jvb3RwYXJhbXMKIAotICAgICAgICBzZWxmLnFlbXVwYXJhbXMgPSAnYm9vdHBhcmFtcz0iezB9IiBxZW11cGFyYW1zPSItc2VyaWFsIHRjcDoxMjcuMC4wLjE6ezF9IicuZm9ybWF0KGJvb3RwYXJhbXMsIHRocmVhZHBvcnQpCisgICAgICAgICMgQXNrIFFFTVUgdG8gc3RvcmUgdGhlIFFFTVUgcHJvY2VzcyBQSUQgaW4gZmlsZSwgdGhpcyB3YXkgd2UgZG9uJ3QgaGF2ZSB0byBwYXJzZSBydW5uaW5nIHByb2Nlc3NlcworICAgICAgICAjIGFuZCBhbmFseXplIGRlc2NlbmRlbnRzIGluIG9yZGVyIHRvIGRldGVybWluZSBpdC4KKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoc2VsZi5xZW11X3BpZGZpbGUpOgorICAgICAgICAgICAgb3MucmVtb3ZlKHNlbGYucWVtdV9waWRmaWxlKQorICAgICAgICBzZWxmLnFlbXVwYXJhbXMgPSAnYm9vdHBhcmFtcz0iezB9IiBxZW11cGFyYW1zPSItc2VyaWFsIHRjcDoxMjcuMC4wLjE6ezF9IC1waWRmaWxlIHsyfSInLmZvcm1hdChib290cGFyYW1zLCB0aHJlYWRwb3J0LCBzZWxmLnFlbXVfcGlkZmlsZSkKICAgICAgICAgaWYgcWVtdXBhcmFtczoKICAgICAgICAgICAgIHNlbGYucWVtdXBhcmFtcyA9IHNlbGYucWVtdXBhcmFtc1s6LTFdICsgIiAiICsgcWVtdXBhcmFtcyArICIgIiArICdcIicKIApAQCAtMTUxLDEzICsxNTgsMTMgQEAKICAgICAgICAgc2VsZi5vcmlnY2hsZGhhbmRsZXIgPSBzaWduYWwuZ2V0c2lnbmFsKHNpZ25hbC5TSUdDSExEKQogICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdDSExELCBzZWxmLmhhbmRsZVNJR0NITEQpCiAKLSAgICAgICAgbG9nZ2VyLmluZm8oJ2xhdW5jaGNtZD0lcyclKGxhdW5jaF9jbWQpKQorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygnbGF1bmNoY21kPSVzJyUobGF1bmNoX2NtZCkpCiAKICAgICAgICAgIyBGSVhNRTogV2UgcGFzcyBpbiBzdGRpbj1zdWJwcm9jZXNzLlBJUEUgaGVyZSB0byB3b3JrIGFyb3VuZCBzdHR5CiAgICAgICAgICMgYmxvY2tpbmcgYXQgdGhlIGVuZCBvZiB0aGUgcnVucWVtdSBzY3JpcHQgd2hlbiB1c2luZyB0aGlzIHdpdGhpbgogICAgICAgICAjIG9lLXNlbGZ0ZXN0ICh0aGlzIG1ha2VzIHN0dHkgZXJyb3Igb3V0IGltbWVkaWF0ZWx5KS4gVGhlcmUgb3VnaHQKICAgICAgICAgIyB0byBiZSBhIHByb3BlciBmaXggYnV0IHRoaXMgd2lsbCBzdWZmaWNlIGZvciBub3cuCi0gICAgICAgIHNlbGYucnVucWVtdSA9IHN1YnByb2Nlc3MuUG9wZW4obGF1bmNoX2NtZCwgc2hlbGw9VHJ1ZSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VULCBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsIHByZWV4ZWNfZm49b3Muc2V0cGdycCkKKyAgICAgICAgc2VsZi5ydW5xZW11ID0gc3VicHJvY2Vzcy5Qb3BlbihsYXVuY2hfY21kLCBzaGVsbD1UcnVlLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQsIHN0ZGluPXN1YnByb2Nlc3MuUElQRSwgcHJlZXhlY19mbj1vcy5zZXRwZ3JwLCBlbnY9ZW52KQogICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bnFlbXUuc3Rkb3V0CiAKICAgICAgICAgIwpAQCAtMTg2LDE0MyArMTkzLDE0OSBAQAogICAgICAgICAgICAgb3Mua2lsbHBnKG9zLmdldHBnaWQoc2VsZi5ydW5xZW11LnBpZCksIHNpZ25hbC5TSUdURVJNKQogICAgICAgICAgICAgc3lzLmV4aXQoMCkKIAotICAgICAgICBsb2dnZXIuaW5mbygicnVucWVtdSBzdGFydGVkLCBwaWQgaXMgJXMiICUgc2VsZi5ydW5xZW11LnBpZCkKLSAgICAgICAgbG9nZ2VyLmluZm8oIndhaXRpbmcgYXQgbW9zdCAlcyBzZWNvbmRzIGZvciBxZW11IHBpZCIgJSBzZWxmLnJ1bnFlbXV0aW1lKQorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygicnVucWVtdSBzdGFydGVkLCBwaWQgaXMgJXMiICUgc2VsZi5ydW5xZW11LnBpZCkKKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIndhaXRpbmcgYXQgbW9zdCAlcyBzZWNvbmRzIGZvciBxZW11IHBpZCIgJSBzZWxmLnJ1bnFlbXV0aW1lKQogICAgICAgICBlbmR0aW1lID0gdGltZS50aW1lKCkgKyBzZWxmLnJ1bnFlbXV0aW1lCiAgICAgICAgIHdoaWxlIG5vdCBzZWxmLmlzX2FsaXZlKCkgYW5kIHRpbWUudGltZSgpIDwgZW5kdGltZToKICAgICAgICAgICAgIGlmIHNlbGYucnVucWVtdS5wb2xsKCk6CiAgICAgICAgICAgICAgICAgaWYgc2VsZi5ydW5xZW11LnJldHVybmNvZGU6CiAgICAgICAgICAgICAgICAgICAgICMgTm8gcG9pbnQgd2FpdGluZyBhbnkgbG9uZ2VyCi0gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCdydW5xZW11IGV4aXRlZCB3aXRoIGNvZGUgJWQnICUgc2VsZi5ydW5xZW11LnJldHVybmNvZGUpCisgICAgICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCdydW5xZW11IGV4aXRlZCB3aXRoIGNvZGUgJWQnICUgc2VsZi5ydW5xZW11LnJldHVybmNvZGUpCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2R1bXBfaG9zdCgpCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RvcCgpCi0gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJPdXRwdXQgZnJvbSBydW5xZW11OlxuJXMiICUgc2VsZi5nZXRPdXRwdXQob3V0cHV0KSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIk91dHB1dCBmcm9tIHJ1bnFlbXU6XG4lcyIgJSBzZWxmLmdldE91dHB1dChvdXRwdXQpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgICAgIHRpbWUuc2xlZXAoMSkKKyAgICAgICAgICAgIHRpbWUuc2xlZXAoMC41KQogCi0gICAgICAgIG91dCA9IHNlbGYuZ2V0T3V0cHV0KG91dHB1dCkKLSAgICAgICAgbmV0Y29uZiA9IEZhbHNlICMgbmV0d29yayBjb25maWd1cmF0aW9uIGlzIG5vdCByZXF1aXJlZCBieSBkZWZhdWx0Ci0gICAgICAgIGlmIHNlbGYuaXNfYWxpdmUoKToKLSAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJxZW11IHN0YXJ0ZWQgLSBxZW11IHByb2NjZXMgcGlkIGlzICVzIiAlIHNlbGYucWVtdXBpZCkKLSAgICAgICAgICAgIGlmIGdldF9pcDoKLSAgICAgICAgICAgICAgICBjbWRsaW5lID0gJycKLSAgICAgICAgICAgICAgICB3aXRoIG9wZW4oJy9wcm9jLyVzL2NtZGxpbmUnICUgc2VsZi5xZW11cGlkKSBhcyBwOgotICAgICAgICAgICAgICAgICAgICBjbWRsaW5lID0gcC5yZWFkKCkKLSAgICAgICAgICAgICAgICAgICAgIyBJdCBpcyBuZWVkZWQgdG8gc2FuaXRpemUgdGhlIGRhdGEgcmVjZWl2ZWQKLSAgICAgICAgICAgICAgICAgICAgIyBiZWNhdXNlIGlzIHBvc3NpYmxlIHRvIGhhdmUgY29udHJvbCBjaGFyYWN0ZXJzCi0gICAgICAgICAgICAgICAgICAgIGNtZGxpbmUgPSByZV9jb250cm9sX2NoYXIuc3ViKCcnLCBjbWRsaW5lKQotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgaXBzID0gcmUuZmluZGFsbCgiKCg/OlswLTldezEsM31cLil7M31bMC05XXsxLDN9KSIsIGNtZGxpbmUuc3BsaXQoImlwPSIpWzFdKQotICAgICAgICAgICAgICAgICAgICBzZWxmLmlwID0gaXBzWzBdCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyX2lwID0gaXBzWzFdCi0gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJxZW11IGNtZGxpbmUgdXNlZDpcbnt9Ii5mb3JtYXQoY21kbGluZSkpCi0gICAgICAgICAgICAgICAgZXhjZXB0IChJbmRleEVycm9yLCBWYWx1ZUVycm9yKToKLSAgICAgICAgICAgICAgICAgICAgIyBUcnkgdG8gZ2V0IG5ldHdvcmsgY29uZmlndXJhdGlvbiBmcm9tIHJ1bnFlbXUgb3V0cHV0Ci0gICAgICAgICAgICAgICAgICAgIG1hdGNoID0gcmUubWF0Y2goJy4qTmV0d29yayBjb25maWd1cmF0aW9uOiAoWzAtOS5dKyk6OihbMC05Ll0rKTooWzAtOS5dKykkLionLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCwgcmUuTVVMVElMSU5FfHJlLkRPVEFMTCkKLSAgICAgICAgICAgICAgICAgICAgaWYgbWF0Y2g6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlwLCBzZWxmLnNlcnZlcl9pcCwgc2VsZi5uZXRtYXNrID0gbWF0Y2guZ3JvdXBzKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICMgbmV0d29yayBjb25maWd1cmF0aW9uIGlzIHJlcXVpcmVkIGFzIHdlIGNvdWxkbid0IGdldCBpdAotICAgICAgICAgICAgICAgICAgICAgICAgIyBmcm9tIHRoZSBydW5xZW11IGNvbW1hbmQgbGluZSwgc28gcWVtdSBkb2Vzbid0IHJ1biBrZXJuZWwKLSAgICAgICAgICAgICAgICAgICAgICAgICMgYW5kIGd1ZXN0IG5ldHdvcmtpbmcgaXMgbm90IGNvbmZpZ3VyZWQKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ldGNvbmYgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIkNvdWxkbid0IGdldCBpcCBmcm9tIHFlbXUgY29tbWFuZCBsaW5lIGFuZCBydW5xZW11IG91dHB1dCEgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIZXJlIGlzIHRoZSBxZW11IGNvbW1hbmQgbGluZSB1c2VkOlxuJXNcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYW5kIG91dHB1dCBmcm9tIHJ1bnFlbXU6XG4lcyIgJSAoY21kbGluZSwgb3V0KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2R1bXBfaG9zdCgpCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0b3AoKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiVGFyZ2V0IElQOiAlcyIgJSBzZWxmLmlwKQotICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJTZXJ2ZXIgSVA6ICVzIiAlIHNlbGYuc2VydmVyX2lwKQotCi0gICAgICAgICAgICBzZWxmLnRocmVhZCA9IExvZ2dpbmdUaHJlYWQoc2VsZi5sb2csIHRocmVhZHNvY2ssIGxvZ2dlcikKLSAgICAgICAgICAgIHNlbGYudGhyZWFkLnN0YXJ0KCkKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLnRocmVhZC5jb25uZWN0aW9uX2VzdGFibGlzaGVkLndhaXQoc2VsZi5ib290dGltZSk6Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJEaWRuJ3QgcmVjZWl2ZSBhIGNvbnNvbGUgY29ubmVjdGlvbiBmcm9tIHFlbXUuICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhlcmUgaXMgdGhlIHFlbXUgY29tbWFuZCBsaW5lIHVzZWQ6XG4lc1xuYW5kICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm91dHB1dCBmcm9tIHJ1bnFlbXU6XG4lcyIgJSAoY21kbGluZSwgb3V0KSkKLSAgICAgICAgICAgICAgICBzZWxmLnN0b3BfdGhyZWFkKCkKLSAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICAgICAgICAgbG9nZ2VyLmluZm8oIk91dHB1dCBmcm9tIHJ1bnFlbXU6XG4lcyIsIG91dCkKLSAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJXYWl0aW5nIGF0IG1vc3QgJWQgc2Vjb25kcyBmb3IgbG9naW4gYmFubmVyIiAlIHNlbGYuYm9vdHRpbWUpCi0gICAgICAgICAgICBlbmR0aW1lID0gdGltZS50aW1lKCkgKyBzZWxmLmJvb3R0aW1lCi0gICAgICAgICAgICBzb2NrbGlzdCA9IFtzZWxmLnNlcnZlcl9zb2NrZXRdCi0gICAgICAgICAgICByZWFjaGVkbG9naW4gPSBGYWxzZQotICAgICAgICAgICAgc3RvcHJlYWQgPSBGYWxzZQotICAgICAgICAgICAgcWVtdXNvY2sgPSBOb25lCi0gICAgICAgICAgICBib290bG9nID0gJycKLSAgICAgICAgICAgIGRhdGEgPSBiJycKLSAgICAgICAgICAgIHdoaWxlIHRpbWUudGltZSgpIDwgZW5kdGltZSBhbmQgbm90IHN0b3ByZWFkOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgc3JlYWQsIHN3cml0ZSwgc2Vycm9yID0gc2VsZWN0LnNlbGVjdChzb2NrbGlzdCwgW10sIFtdLCA1KQotICAgICAgICAgICAgICAgIGV4Y2VwdCBJbnRlcnJ1cHRlZEVycm9yOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGZvciBzb2NrIGluIHNyZWFkOgotICAgICAgICAgICAgICAgICAgICBpZiBzb2NrIGlzIHNlbGYuc2VydmVyX3NvY2tldDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHFlbXVzb2NrLCBhZGRyID0gc2VsZi5zZXJ2ZXJfc29ja2V0LmFjY2VwdCgpCi0gICAgICAgICAgICAgICAgICAgICAgICBxZW11c29jay5zZXRibG9ja2luZygwKQotICAgICAgICAgICAgICAgICAgICAgICAgc29ja2xpc3QuYXBwZW5kKHFlbXVzb2NrKQotICAgICAgICAgICAgICAgICAgICAgICAgc29ja2xpc3QucmVtb3ZlKHNlbGYuc2VydmVyX3NvY2tldCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJDb25uZWN0aW9uIGZyb20gJXM6JXMiICUgYWRkcikKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhICsgc29jay5yZWN2KDEwMjQpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBkYXRhOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGRhdGEuZGVjb2RlKCJ1dGYtOCIsIGVycm9ycz0ic3Vycm9nYXRlZXNjYXBlIikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vdGxvZyArPSBkYXRhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBiJycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgcmUuc2VhcmNoKCIuKiBsb2dpbjoiLCBib290bG9nKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyX3NvY2tldCA9IHFlbXVzb2NrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9wcmVhZCA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWNoZWRsb2dpbiA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJSZWFjaGVkIGxvZ2luIGJhbm5lciIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2xpc3QucmVtb3ZlKHNvY2spCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc29jay5jbG9zZSgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcHJlYWQgPSBUcnVlCi0KLSAgICAgICAgICAgIGlmIG5vdCByZWFjaGVkbG9naW46Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIlRhcmdldCBkaWRuJ3QgcmVhY2hlZCBsb2dpbiBib290IGluICVkIHNlY29uZHMiICUgc2VsZi5ib290dGltZSkKLSAgICAgICAgICAgICAgICBsaW5lcyA9ICJcbiIuam9pbihib290bG9nLnNwbGl0bGluZXMoKVstMjU6XSkKLSAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiTGFzdCAyNSBsaW5lcyBvZiB0ZXh0OlxuJXMiICUgbGluZXMpCi0gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIkNoZWNrIGZ1bGwgYm9vdCBsb2c6ICVzIiAlIHNlbGYubG9nZmlsZSkKLSAgICAgICAgICAgICAgICBzZWxmLl9kdW1wX2hvc3QoKQotICAgICAgICAgICAgICAgIHNlbGYuc3RvcCgpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAgICAgICMgSWYgd2UgYXJlIG5vdCBhYmxlIHRvIGxvZ2luIHRoZSB0ZXN0cyBjYW4gY29udGludWUKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAoc3RhdHVzLCBvdXRwdXQpID0gc2VsZi5ydW5fc2VyaWFsKCJyb290XG4iLCByYXc9VHJ1ZSkKLSAgICAgICAgICAgICAgICBpZiByZS5zZWFyY2goInJvb3RAW2EtekEtWjAtOVwtXSs6fiMiLCBvdXRwdXQpOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlZCA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIkxvZ2dlZCBhcyByb290IGluIHNlcmlhbCBjb25zb2xlIikKLSAgICAgICAgICAgICAgICAgICAgaWYgbmV0Y29uZjoKLSAgICAgICAgICAgICAgICAgICAgICAgICMgY29uZmlndXJlIGd1ZXN0IG5ldHdvcmtpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgIGNtZCA9ICJpZmNvbmZpZyBldGgwICVzIG5ldG1hc2sgJXMgdXBcbiIgJSAoc2VsZi5pcCwgc2VsZi5uZXRtYXNrKQotICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fc2VyaWFsKGNtZCwgcmF3PVRydWUpWzFdCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiByZS5zZWFyY2goInJvb3RAW2EtekEtWjAtOVwtXSs6fiMiLCBvdXRwdXQpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJjb25maWd1cmVkIGlwIGFkZHJlc3MgJXMiLCBzZWxmLmlwKQotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiQ291bGRuJ3QgY29uZmlndXJlIGd1ZXN0IG5ldHdvcmtpbmciKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJDb3VsZG4ndCBsb2dpbiBpbnRvIHNlcmlhbCBjb25zb2xlIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgYXMgcm9vdCB1c2luZyBibGFuayBwYXNzd29yZCIpCi0gICAgICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIlNlcmlhbCBjb25zb2xlIGZhaWxlZCB3aGlsZSB0cnlpbmcgdG8gbG9naW4iKQotCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBsb2dnZXIuaW5mbygiUWVtdSBwaWQgZGlkbid0IGFwcGVhcmVkIGluICVzIHNlY29uZHMiICUgc2VsZi5ydW5xZW11dGltZSkKKyAgICAgICAgaWYgbm90IHNlbGYuaXNfYWxpdmUoKToKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKCJRZW11IHBpZCBkaWRuJ3QgYXBwZWFyIGluICVzIHNlY29uZHMiICUgc2VsZi5ydW5xZW11dGltZSkKKyAgICAgICAgICAgICMgRHVtcCBhbGwgcHJvY2Vzc2VzIHRvIGhlbHAgdXMgdG8gZmlndXJlIG91dCB3aGF0IGlzIGdvaW5nIG9uLi4uCisgICAgICAgICAgICBwcyA9IHN1YnByb2Nlc3MuUG9wZW4oWydwcycsICdheHd3JywgJy1vJywgJ3BpZCxwcGlkLGNvbW1hbmQgJ10sIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpLmNvbW11bmljYXRlKClbMF0KKyAgICAgICAgICAgIHByb2Nlc3NlcyA9IHBzLmRlY29kZSgidXRmLTgiKQorICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlJ1bm5pbmcgcHJvY2Vzc2VzOlxuJXMiICUgcHJvY2Vzc2VzKQogICAgICAgICAgICAgc2VsZi5fZHVtcF9ob3N0KCkKICAgICAgICAgICAgIHNlbGYuc3RvcCgpCi0gICAgICAgICAgICBsb2dnZXIuaW5mbygiT3V0cHV0IGZyb20gcnVucWVtdTpcbiVzIiAlIHNlbGYuZ2V0T3V0cHV0KG91dHB1dCkpCisgICAgICAgICAgICBvcCA9IHNlbGYuZ2V0T3V0cHV0KG91dHB1dCkKKyAgICAgICAgICAgIGlmIG9wOgorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKCJPdXRwdXQgZnJvbSBydW5xZW11OlxuJXMiICUgb3ApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKCJObyBvdXRwdXQgZnJvbSBydW5xZW11LlxuIikKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCi0gICAgICAgIHJldHVybiBzZWxmLmlzX2FsaXZlKCkKKyAgICAgICAgIyBXZSBhcmUgYWxpdmU6IHFlbXUgaXMgcnVubmluZworICAgICAgICBvdXQgPSBzZWxmLmdldE91dHB1dChvdXRwdXQpCisgICAgICAgIG5ldGNvbmYgPSBGYWxzZSAjIG5ldHdvcmsgY29uZmlndXJhdGlvbiBpcyBub3QgcmVxdWlyZWQgYnkgZGVmYXVsdAorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygicWVtdSBzdGFydGVkIGluICVzIHNlY29uZHMgLSBxZW11IHByb2NjZXMgcGlkIGlzICVzIiAlICh0aW1lLnRpbWUoKSAtIChlbmR0aW1lIC0gc2VsZi5ydW5xZW11dGltZSksIHNlbGYucWVtdXBpZCkpCisgICAgICAgIGlmIGdldF9pcDoKKyAgICAgICAgICAgIGNtZGxpbmUgPSAnJworICAgICAgICAgICAgd2l0aCBvcGVuKCcvcHJvYy8lcy9jbWRsaW5lJyAlIHNlbGYucWVtdXBpZCkgYXMgcDoKKyAgICAgICAgICAgICAgICBjbWRsaW5lID0gcC5yZWFkKCkKKyAgICAgICAgICAgICAgICAjIEl0IGlzIG5lZWRlZCB0byBzYW5pdGl6ZSB0aGUgZGF0YSByZWNlaXZlZAorICAgICAgICAgICAgICAgICMgYmVjYXVzZSBpcyBwb3NzaWJsZSB0byBoYXZlIGNvbnRyb2wgY2hhcmFjdGVycworICAgICAgICAgICAgICAgIGNtZGxpbmUgPSByZV9jb250cm9sX2NoYXIuc3ViKCcgJywgY21kbGluZSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpcHMgPSByZS5maW5kYWxsKCIoKD86WzAtOV17MSwzfVwuKXszfVswLTldezEsM30pIiwgY21kbGluZS5zcGxpdCgiaXA9IilbMV0pCisgICAgICAgICAgICAgICAgc2VsZi5pcCA9IGlwc1swXQorICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyX2lwID0gaXBzWzFdCisgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoInFlbXUgY21kbGluZSB1c2VkOlxue30iLmZvcm1hdChjbWRsaW5lKSkKKyAgICAgICAgICAgIGV4Y2VwdCAoSW5kZXhFcnJvciwgVmFsdWVFcnJvcik6CisgICAgICAgICAgICAgICAgIyBUcnkgdG8gZ2V0IG5ldHdvcmsgY29uZmlndXJhdGlvbiBmcm9tIHJ1bnFlbXUgb3V0cHV0CisgICAgICAgICAgICAgICAgbWF0Y2ggPSByZS5tYXRjaCgnLipOZXR3b3JrIGNvbmZpZ3VyYXRpb246IChbMC05Ll0rKTo6KFswLTkuXSspOihbMC05Ll0rKSQuKicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQsIHJlLk1VTFRJTElORXxyZS5ET1RBTEwpCisgICAgICAgICAgICAgICAgaWYgbWF0Y2g6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuaXAsIHNlbGYuc2VydmVyX2lwLCBzZWxmLm5ldG1hc2sgPSBtYXRjaC5ncm91cHMoKQorICAgICAgICAgICAgICAgICAgICAjIG5ldHdvcmsgY29uZmlndXJhdGlvbiBpcyByZXF1aXJlZCBhcyB3ZSBjb3VsZG4ndCBnZXQgaXQKKyAgICAgICAgICAgICAgICAgICAgIyBmcm9tIHRoZSBydW5xZW11IGNvbW1hbmQgbGluZSwgc28gcWVtdSBkb2Vzbid0IHJ1biBrZXJuZWwKKyAgICAgICAgICAgICAgICAgICAgIyBhbmQgZ3Vlc3QgbmV0d29ya2luZyBpcyBub3QgY29uZmlndXJlZAorICAgICAgICAgICAgICAgICAgICBuZXRjb25mID0gVHJ1ZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKCJDb3VsZG4ndCBnZXQgaXAgZnJvbSBxZW11IGNvbW1hbmQgbGluZSBhbmQgcnVucWVtdSBvdXRwdXQhICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIZXJlIGlzIHRoZSBxZW11IGNvbW1hbmQgbGluZSB1c2VkOlxuJXNcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbmQgb3V0cHV0IGZyb20gcnVucWVtdTpcbiVzIiAlIChjbWRsaW5lLCBvdXQpKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9kdW1wX2hvc3QoKQorICAgICAgICAgICAgICAgICAgICBzZWxmLnN0b3AoKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiVGFyZ2V0IElQOiAlcyIgJSBzZWxmLmlwKQorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiU2VydmVyIElQOiAlcyIgJSBzZWxmLnNlcnZlcl9pcCkKKworICAgICAgICBzZWxmLnRocmVhZCA9IExvZ2dpbmdUaHJlYWQoc2VsZi5sb2csIHRocmVhZHNvY2ssIHNlbGYubG9nZ2VyKQorICAgICAgICBzZWxmLnRocmVhZC5zdGFydCgpCisgICAgICAgIGlmIG5vdCBzZWxmLnRocmVhZC5jb25uZWN0aW9uX2VzdGFibGlzaGVkLndhaXQoc2VsZi5ib290dGltZSk6CisgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcigiRGlkbid0IHJlY2VpdmUgYSBjb25zb2xlIGNvbm5lY3Rpb24gZnJvbSBxZW11LiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgIkhlcmUgaXMgdGhlIHFlbXUgY29tbWFuZCBsaW5lIHVzZWQ6XG4lc1xuYW5kICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAib3V0cHV0IGZyb20gcnVucWVtdTpcbiVzIiAlIChjbWRsaW5lLCBvdXQpKQorICAgICAgICAgICAgc2VsZi5zdG9wX3RocmVhZCgpCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiT3V0cHV0IGZyb20gcnVucWVtdTpcbiVzIiwgb3V0KQorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiV2FpdGluZyBhdCBtb3N0ICVkIHNlY29uZHMgZm9yIGxvZ2luIGJhbm5lciIgJSBzZWxmLmJvb3R0aW1lKQorICAgICAgICBlbmR0aW1lID0gdGltZS50aW1lKCkgKyBzZWxmLmJvb3R0aW1lCisgICAgICAgIHNvY2tsaXN0ID0gW3NlbGYuc2VydmVyX3NvY2tldF0KKyAgICAgICAgcmVhY2hlZGxvZ2luID0gRmFsc2UKKyAgICAgICAgc3RvcHJlYWQgPSBGYWxzZQorICAgICAgICBxZW11c29jayA9IE5vbmUKKyAgICAgICAgYm9vdGxvZyA9IGInJworICAgICAgICBkYXRhID0gYicnCisgICAgICAgIHdoaWxlIHRpbWUudGltZSgpIDwgZW5kdGltZSBhbmQgbm90IHN0b3ByZWFkOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNyZWFkLCBzd3JpdGUsIHNlcnJvciA9IHNlbGVjdC5zZWxlY3Qoc29ja2xpc3QsIFtdLCBbXSwgNSkKKyAgICAgICAgICAgIGV4Y2VwdCBJbnRlcnJ1cHRlZEVycm9yOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBmb3Igc29jayBpbiBzcmVhZDoKKyAgICAgICAgICAgICAgICBpZiBzb2NrIGlzIHNlbGYuc2VydmVyX3NvY2tldDoKKyAgICAgICAgICAgICAgICAgICAgcWVtdXNvY2ssIGFkZHIgPSBzZWxmLnNlcnZlcl9zb2NrZXQuYWNjZXB0KCkKKyAgICAgICAgICAgICAgICAgICAgcWVtdXNvY2suc2V0YmxvY2tpbmcoMCkKKyAgICAgICAgICAgICAgICAgICAgc29ja2xpc3QuYXBwZW5kKHFlbXVzb2NrKQorICAgICAgICAgICAgICAgICAgICBzb2NrbGlzdC5yZW1vdmUoc2VsZi5zZXJ2ZXJfc29ja2V0KQorICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiQ29ubmVjdGlvbiBmcm9tICVzOiVzIiAlIGFkZHIpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGRhdGEgKyBzb2NrLnJlY3YoMTAyNCkKKyAgICAgICAgICAgICAgICAgICAgaWYgZGF0YToKKyAgICAgICAgICAgICAgICAgICAgICAgIGJvb3Rsb2cgKz0gZGF0YQorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGInJworICAgICAgICAgICAgICAgICAgICAgICAgaWYgYicgbG9naW46JyBpbiBib290bG9nOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyX3NvY2tldCA9IHFlbXVzb2NrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcHJlYWQgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhY2hlZGxvZ2luID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJSZWFjaGVkIGxvZ2luIGJhbm5lciIpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBzb2NrbGlzdC5yZW1vdmUoc29jaykKKyAgICAgICAgICAgICAgICAgICAgICAgIHNvY2suY2xvc2UoKQorICAgICAgICAgICAgICAgICAgICAgICAgc3RvcHJlYWQgPSBUcnVlCisKKworICAgICAgICBpZiBub3QgcmVhY2hlZGxvZ2luOgorICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlRhcmdldCBkaWRuJ3QgcmVhY2hlZCBsb2dpbiBib290IGluICVkIHNlY29uZHMiICUgc2VsZi5ib290dGltZSkKKyAgICAgICAgICAgIHRhaWwgPSBsYW1iZGEgbDogIlxuIi5qb2luKGwuc3BsaXRsaW5lcygpWy0yNTpdKQorICAgICAgICAgICAgIyBpbiBjYXNlIGJvb3Rsb2cgaXMgZW1wdHksIHVzZSB0YWlsIHFlbXUgbG9nIHN0b3JlIGF0IHNlbGYubXNnCisgICAgICAgICAgICBsaW5lcyA9IHRhaWwoYm9vdGxvZyBpZiBib290bG9nIGVsc2Ugc2VsZi5tc2cpCisgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiTGFzdCAyNSBsaW5lcyBvZiB0ZXh0OlxuJXMiICUgbGluZXMpCisgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiQ2hlY2sgZnVsbCBib290IGxvZzogJXMiICUgc2VsZi5sb2dmaWxlKQorICAgICAgICAgICAgc2VsZi5fZHVtcF9ob3N0KCkKKyAgICAgICAgICAgIHNlbGYuc3RvcCgpCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICAjIElmIHdlIGFyZSBub3QgYWJsZSB0byBsb2dpbiB0aGUgdGVzdHMgY2FuIGNvbnRpbnVlCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIChzdGF0dXMsIG91dHB1dCkgPSBzZWxmLnJ1bl9zZXJpYWwoInJvb3RcbiIsIHJhdz1UcnVlKQorICAgICAgICAgICAgaWYgcmUuc2VhcmNoKCJyb290QFthLXpBLVowLTlcLV0rOn4jIiwgb3V0cHV0KToKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlZCA9IFRydWUKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiTG9nZ2VkIGFzIHJvb3QgaW4gc2VyaWFsIGNvbnNvbGUiKQorICAgICAgICAgICAgICAgIGlmIG5ldGNvbmY6CisgICAgICAgICAgICAgICAgICAgICMgY29uZmlndXJlIGd1ZXN0IG5ldHdvcmtpbmcKKyAgICAgICAgICAgICAgICAgICAgY21kID0gImlmY29uZmlnIGV0aDAgJXMgbmV0bWFzayAlcyB1cFxuIiAlIChzZWxmLmlwLCBzZWxmLm5ldG1hc2spCisgICAgICAgICAgICAgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3NlcmlhbChjbWQsIHJhdz1UcnVlKVsxXQorICAgICAgICAgICAgICAgICAgICBpZiByZS5zZWFyY2goInJvb3RAW2EtekEtWjAtOVwtXSs6fiMiLCBvdXRwdXQpOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoImNvbmZpZ3VyZWQgaXAgYWRkcmVzcyAlcyIsIHNlbGYuaXApCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiQ291bGRuJ3QgY29uZmlndXJlIGd1ZXN0IG5ldHdvcmtpbmciKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiQ291bGRuJ3QgbG9naW4gaW50byBzZXJpYWwgY29uc29sZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGFzIHJvb3QgdXNpbmcgYmxhbmsgcGFzc3dvcmQiKQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiU2VyaWFsIGNvbnNvbGUgZmFpbGVkIHdoaWxlIHRyeWluZyB0byBsb2dpbiIpCisgICAgICAgIHJldHVybiBUcnVlCiAKICAgICBkZWYgc3RvcChzZWxmKToKICAgICAgICAgc2VsZi5zdG9wX3RocmVhZCgpCkBAIC0zMzIsNyArMzQ1LDcgQEAKICAgICAgICAgaWYgc2VsZi5ydW5xZW11OgogICAgICAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAibW9uaXRvcnBpZCIpOgogICAgICAgICAgICAgICAgIG9zLmtpbGwoc2VsZi5tb25pdG9ycGlkLCBzaWduYWwuU0lHS0lMTCkKLSAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiU2VuZGluZyBTSUdURVJNIHRvIHJ1bnFlbXUiKQorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJTZW5kaW5nIFNJR1RFUk0gdG8gcnVucWVtdSIpCiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBvcy5raWxscGcob3MuZ2V0cGdpZChzZWxmLnJ1bnFlbXUucGlkKSwgc2lnbmFsLlNJR1RFUk0pCiAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKQEAgLTM0Miw3ICszNTUsNyBAQAogICAgICAgICAgICAgd2hpbGUgc2VsZi5ydW5xZW11LnBvbGwoKSBpcyBOb25lIGFuZCB0aW1lLnRpbWUoKSA8IGVuZHRpbWU6CiAgICAgICAgICAgICAgICAgdGltZS5zbGVlcCgxKQogICAgICAgICAgICAgaWYgc2VsZi5ydW5xZW11LnBvbGwoKSBpcyBOb25lOgotICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJTZW5kaW5nIFNJR0tJTEwgdG8gcnVucWVtdSIpCisgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlNlbmRpbmcgU0lHS0lMTCB0byBydW5xZW11IikKICAgICAgICAgICAgICAgICBvcy5raWxscGcob3MuZ2V0cGdpZChzZWxmLnJ1bnFlbXUucGlkKSwgc2lnbmFsLlNJR0tJTEwpCiAgICAgICAgICAgICBzZWxmLnJ1bnFlbXUgPSBOb25lCiAgICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgJ3NlcnZlcl9zb2NrZXQnKSBhbmQgc2VsZi5zZXJ2ZXJfc29ja2V0OgpAQCAtMzUwLDYgKzM2Myw4IEBACiAgICAgICAgICAgICBzZWxmLnNlcnZlcl9zb2NrZXQgPSBOb25lCiAgICAgICAgIHNlbGYucWVtdXBpZCA9IE5vbmUKICAgICAgICAgc2VsZi5pcCA9IE5vbmUKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoc2VsZi5xZW11X3BpZGZpbGUpOgorICAgICAgICAgICAgb3MucmVtb3ZlKHNlbGYucWVtdV9waWRmaWxlKQogCiAgICAgZGVmIHN0b3BfcWVtdV9zeXN0ZW0oc2VsZik6CiAgICAgICAgIGlmIHNlbGYucWVtdXBpZDoKQEAgLTM1Nyw3ICszNzIsNyBAQAogICAgICAgICAgICAgICAgICMgcWVtdS1zeXN0ZW0gYmVoYXZlcyB3ZWxsIGFuZCBhIFNJR1RFUk0gaXMgZW5vdWdoCiAgICAgICAgICAgICAgICAgb3Mua2lsbChzZWxmLnFlbXVwaWQsIHNpZ25hbC5TSUdURVJNKQogICAgICAgICAgICAgZXhjZXB0IFByb2Nlc3NMb29rdXBFcnJvciBhcyBlOgotICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuKCdxZW11LXN5c3RlbSBlbmRlZCB1bmV4cGVjdGVkbHknKQorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLndhcm4oJ3FlbXUtc3lzdGVtIGVuZGVkIHVuZXhwZWN0ZWRseScpCiAKICAgICBkZWYgc3RvcF90aHJlYWQoc2VsZik6CiAgICAgICAgIGlmIHNlbGYudGhyZWFkIGFuZCBzZWxmLnRocmVhZC5pc19hbGl2ZSgpOgpAQCAtMzY1LDcgKzM4MCw3IEBACiAgICAgICAgICAgICBzZWxmLnRocmVhZC5qb2luKCkKIAogICAgIGRlZiByZXN0YXJ0KHNlbGYsIHFlbXVwYXJhbXMgPSBOb25lKToKLSAgICAgICAgbG9nZ2VyLmluZm8oIlJlc3RhcnRpbmcgcWVtdSBwcm9jZXNzIikKKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlJlc3RhcnRpbmcgcWVtdSBwcm9jZXNzIikKICAgICAgICAgaWYgc2VsZi5ydW5xZW11LnBvbGwoKSBpcyBOb25lOgogICAgICAgICAgICAgc2VsZi5zdG9wKCkKICAgICAgICAgaWYgc2VsZi5zdGFydChxZW11cGFyYW1zKToKQEAgLTM3NSw1NiArMzkwLDE2IEBACiAgICAgZGVmIGlzX2FsaXZlKHNlbGYpOgogICAgICAgICBpZiBub3Qgc2VsZi5ydW5xZW11OgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIHFlbXVfY2hpbGQgPSBzZWxmLmZpbmRfY2hpbGQoc3RyKHNlbGYucnVucWVtdS5waWQpKQotICAgICAgICBpZiBxZW11X2NoaWxkOgotICAgICAgICAgICAgc2VsZi5xZW11cGlkID0gcWVtdV9jaGlsZFswXQotICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoIi9wcm9jLyIgKyBzdHIoc2VsZi5xZW11cGlkKSk6CisgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKHNlbGYucWVtdV9waWRmaWxlKToKKyAgICAgICAgICAgIGYgPSBvcGVuKHNlbGYucWVtdV9waWRmaWxlLCAncicpCisgICAgICAgICAgICBxZW11X3BpZCA9IGYucmVhZCgpCisgICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgICAgIHFlbXVwaWQgPSBpbnQocWVtdV9waWQpCisgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cygiL3Byb2MvIiArIHN0cihxZW11cGlkKSk6CisgICAgICAgICAgICAgICAgc2VsZi5xZW11cGlkID0gcWVtdXBpZAogICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIHJldHVybiBGYWxzZQogCi0gICAgZGVmIGZpbmRfY2hpbGQoc2VsZixwYXJlbnRfcGlkKToKLSAgICAgICAgIwotICAgICAgICAjIFdhbGsgdGhlIHByb2Nlc3MgdHJlZSBmcm9tIHRoZSBwcm9jZXNzIHNwZWNpZmllZCBsb29raW5nIGZvciBhIHFlbXUtc3lzdGVtLiBSZXR1cm4gaXRzIFtwaWQnY21kXQotICAgICAgICAjCi0gICAgICAgIHBzID0gc3VicHJvY2Vzcy5Qb3BlbihbJ3BzJywgJ2F4d3cnLCAnLW8nLCAncGlkLHBwaWQsY29tbWFuZCddLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKS5jb21tdW5pY2F0ZSgpWzBdCi0gICAgICAgIHByb2Nlc3NlcyA9IHBzLmRlY29kZSgidXRmLTgiKS5zcGxpdCgnXG4nKQotICAgICAgICBuZmllbGRzID0gbGVuKHByb2Nlc3Nlc1swXS5zcGxpdCgpKSAtIDEKLSAgICAgICAgcGlkcyA9IHt9Ci0gICAgICAgIGNvbW1hbmRzID0ge30KLSAgICAgICAgZm9yIHJvdyBpbiBwcm9jZXNzZXNbMTpdOgotICAgICAgICAgICAgZGF0YSA9IHJvdy5zcGxpdChOb25lLCBuZmllbGRzKQotICAgICAgICAgICAgaWYgbGVuKGRhdGEpICE9IDM6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGlmIGRhdGFbMV0gbm90IGluIHBpZHM6Ci0gICAgICAgICAgICAgICAgcGlkc1tkYXRhWzFdXSA9IFtdCi0KLSAgICAgICAgICAgIHBpZHNbZGF0YVsxXV0uYXBwZW5kKGRhdGFbMF0pCi0gICAgICAgICAgICBjb21tYW5kc1tkYXRhWzBdXSA9IGRhdGFbMl0KLQotICAgICAgICBpZiBwYXJlbnRfcGlkIG5vdCBpbiBwaWRzOgotICAgICAgICAgICAgcmV0dXJuIFtdCi0KLSAgICAgICAgcGFyZW50cyA9IFtdCi0gICAgICAgIG5ld3BhcmVudHMgPSBwaWRzW3BhcmVudF9waWRdCi0gICAgICAgIHdoaWxlIG5ld3BhcmVudHM6Ci0gICAgICAgICAgICBuZXh0ID0gW10KLSAgICAgICAgICAgIGZvciBwIGluIG5ld3BhcmVudHM6Ci0gICAgICAgICAgICAgICAgaWYgcCBpbiBwaWRzOgotICAgICAgICAgICAgICAgICAgICBmb3IgbiBpbiBwaWRzW3BdOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgbiBub3QgaW4gcGFyZW50cyBhbmQgbiBub3QgaW4gbmV4dDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0LmFwcGVuZChuKQotICAgICAgICAgICAgICAgIGlmIHAgbm90IGluIHBhcmVudHM6Ci0gICAgICAgICAgICAgICAgICAgIHBhcmVudHMuYXBwZW5kKHApCi0gICAgICAgICAgICAgICAgICAgIG5ld3BhcmVudHMgPSBuZXh0Ci0gICAgICAgICNwcmludCgiQ2hpbGRyZW4gbWF0Y2hpbmcgJXM6IiAlIHN0cihwYXJlbnRzKSkKLSAgICAgICAgZm9yIHAgaW4gcGFyZW50czoKLSAgICAgICAgICAgICMgTmVlZCB0byBiZSBjYXJlZnVsIGhlcmUgc2luY2UgcnVucWVtdSBydW5zICJsZGQgcWVtdS1zeXN0ZW0teHh4eCIKLSAgICAgICAgICAgICMgQWxzbywgb2xkIHZlcnNpb25zIG9mIGxkZCAoMi4xMSkgcnVuICJMRF9YWFhYIHFlbXUtc3lzdGVtLXh4eHgiCi0gICAgICAgICAgICBiYXNlY21kID0gY29tbWFuZHNbcF0uc3BsaXQoKVswXQotICAgICAgICAgICAgYmFzZWNtZCA9IG9zLnBhdGguYmFzZW5hbWUoYmFzZWNtZCkKLSAgICAgICAgICAgIGlmICJxZW11LXN5c3RlbSIgaW4gYmFzZWNtZCBhbmQgIi1zZXJpYWwgdGNwIiBpbiBjb21tYW5kc1twXToKLSAgICAgICAgICAgICAgICByZXR1cm4gW2ludChwKSxjb21tYW5kc1twXV0KLQogICAgIGRlZiBydW5fc2VyaWFsKHNlbGYsIGNvbW1hbmQsIHJhdz1GYWxzZSwgdGltZW91dD01KToKICAgICAgICAgIyBXZSBhc3N1bWUgdGFyZ2V0IHN5c3RlbSBoYXZlIGVjaG8gdG8gZ2V0IGNvbW1hbmQgc3RhdHVzCiAgICAgICAgIGlmIG5vdCByYXc6CkBAIC00NzQsNyArNDQ5LDcgQEAKIAogICAgIGRlZiBfZHVtcF9ob3N0KHNlbGYpOgogICAgICAgICBzZWxmLmhvc3RfZHVtcGVyLmNyZWF0ZV9kaXIoInFlbXUiKQotICAgICAgICBsb2dnZXIud2FybigiUWVtdSBlbmRlZCB1bmV4cGVjdGVkbHksIGR1bXAgZGF0YSBmcm9tIGhvc3QiCisgICAgICAgIHNlbGYubG9nZ2VyLndhcm4oIlFlbXUgZW5kZWQgdW5leHBlY3RlZGx5LCBkdW1wIGRhdGEgZnJvbSBob3N0IgogICAgICAgICAgICAgICAgICIgaXMgaW4gJXMiICUgc2VsZi5ob3N0X2R1bXBlci5kdW1wX2RpcikKICAgICAgICAgc2VsZi5ob3N0X2R1bXBlci5kdW1wX2hvc3QoKQogCkBAIC01MDMsMTcgKzQ3OCwxNyBAQAogICAgICAgICAgICAgc2VsZi50ZWFyZG93bigpCiAKICAgICBkZWYgcnVuKHNlbGYpOgotICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJTdGFydGluZyBsb2dnaW5nIHRocmVhZCIpCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJTdGFydGluZyBsb2dnaW5nIHRocmVhZCIpCiAgICAgICAgIHNlbGYucmVhZHBpcGUsIHNlbGYud3JpdGVwaXBlID0gb3MucGlwZSgpCiAgICAgICAgIHRocmVhZGluZy5UaHJlYWQucnVuKHNlbGYpCiAKICAgICBkZWYgc3RvcChzZWxmKToKLSAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygiU3RvcHBpbmcgbG9nZ2luZyB0aHJlYWQiKQorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiU3RvcHBpbmcgbG9nZ2luZyB0aHJlYWQiKQogICAgICAgICBpZiBzZWxmLnJ1bm5pbmc6CiAgICAgICAgICAgICBvcy53cml0ZShzZWxmLndyaXRlcGlwZSwgYnl0ZXMoInN0b3AiLCAidXRmLTgiKSkKIAogICAgIGRlZiB0ZWFyZG93bihzZWxmKToKLSAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygiVGVhcmluZyBkb3duIGxvZ2dpbmcgdGhyZWFkIikKKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlRlYXJpbmcgZG93biBsb2dnaW5nIHRocmVhZCIpCiAgICAgICAgIHNlbGYuY2xvc2Vfc29ja2V0KHNlbGYuc2VydmVyc29jaykKIAogICAgICAgICBpZiBzZWxmLnJlYWRzb2NrIGlzIG5vdCBOb25lOgpAQCAtNTMxLDcgKzUwNiw3IEBACiAKICAgICAgICAgYnJlYWtvdXQgPSBGYWxzZQogICAgICAgICBzZWxmLnJ1bm5pbmcgPSBUcnVlCi0gICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIlN0YXJ0aW5nIHRocmVhZCBldmVudCBsb29wIikKKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlN0YXJ0aW5nIHRocmVhZCBldmVudCBsb29wIikKICAgICAgICAgd2hpbGUgbm90IGJyZWFrb3V0OgogICAgICAgICAgICAgZXZlbnRzID0gcG9sbC5wb2xsKCkKICAgICAgICAgICAgIGZvciBldmVudCBpbiBldmVudHM6CkBAIC01NDEsMTkgKzUxNiwxOSBAQAogCiAgICAgICAgICAgICAgICAgIyBFdmVudCB0byBzdG9wIHRoZSB0aHJlYWQKICAgICAgICAgICAgICAgICBpZiBzZWxmLnJlYWRwaXBlID09IGV2ZW50WzBdOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJTdG9wIGV2ZW50IHJlY2VpdmVkIikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlN0b3AgZXZlbnQgcmVjZWl2ZWQiKQogICAgICAgICAgICAgICAgICAgICBicmVha291dCA9IFRydWUKICAgICAgICAgICAgICAgICAgICAgYnJlYWsKIAogICAgICAgICAgICAgICAgICMgQSBjb25uZWN0aW9uIHJlcXVlc3Qgd2FzIHJlY2VpdmVkCiAgICAgICAgICAgICAgICAgZWxpZiBzZWxmLnNlcnZlcnNvY2suZmlsZW5vKCkgPT0gZXZlbnRbMF06Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIkNvbm5lY3Rpb24gcmVxdWVzdCByZWNlaXZlZCIpCisgICAgICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJDb25uZWN0aW9uIHJlcXVlc3QgcmVjZWl2ZWQiKQogICAgICAgICAgICAgICAgICAgICBzZWxmLnJlYWRzb2NrLCBfID0gc2VsZi5zZXJ2ZXJzb2NrLmFjY2VwdCgpCiAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVhZHNvY2suc2V0YmxvY2tpbmcoMCkKICAgICAgICAgICAgICAgICAgICAgcG9sbC51bnJlZ2lzdGVyKHNlbGYuc2VydmVyc29jay5maWxlbm8oKSkKICAgICAgICAgICAgICAgICAgICAgcG9sbC5yZWdpc3RlcihzZWxmLnJlYWRzb2NrLmZpbGVubygpLCBldmVudF9yZWFkX21hc2spCiAKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygiU2V0dGluZyBjb25uZWN0aW9uIGVzdGFibGlzaGVkIGV2ZW50IikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlNldHRpbmcgY29ubmVjdGlvbiBlc3RhYmxpc2hlZCBldmVudCIpCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29ubmVjdGlvbl9lc3RhYmxpc2hlZC5zZXQoKQogCiAgICAgICAgICAgICAgICAgIyBBY3R1YWwgZGF0YSB0byBiZSBsb2dnZWQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL3FlbXV0aW55cnVubmVyLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvcWVtdXRpbnlydW5uZXIucHkKaW5kZXggMWJmNTkwMC4uNjNiNWQxNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvcWVtdXRpbnlydW5uZXIucHkKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvcWVtdXRpbnlydW5uZXIucHkKQEAgLTE3LDcgKzE3LDcgQEAKIAogY2xhc3MgUWVtdVRpbnlSdW5uZXIoUWVtdVJ1bm5lcik6CiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbWFjaGluZSwgcm9vdGZzLCBkaXNwbGF5LCB0bXBkaXIsIGRlcGxveV9kaXJfaW1hZ2UsIGxvZ2ZpbGUsIGtlcm5lbCwgYm9vdHRpbWUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYWNoaW5lLCByb290ZnMsIGRpc3BsYXksIHRtcGRpciwgZGVwbG95X2Rpcl9pbWFnZSwgbG9nZmlsZSwga2VybmVsLCBib290dGltZSwgbG9nZ2VyKToKIAogICAgICAgICAjIFBvcGVuIG9iamVjdCBmb3IgcnVucWVtdQogICAgICAgICBzZWxmLnJ1bnFlbXUgPSBOb25lCkBAIC00MCw2ICs0MCw3IEBACiAgICAgICAgIHNlbGYuc29ja2V0ZmlsZSA9ICJjb25zb2xlLnNvY2siCiAgICAgICAgIHNlbGYuc2VydmVyX3NvY2tldCA9IE5vbmUKICAgICAgICAgc2VsZi5rZXJuZWwgPSBrZXJuZWwKKyAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIKIAogCiAgICAgZGVmIGNyZWF0ZV9zb2NrZXQoc2VsZik6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9zc2hjb250cm9sLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvc3NoY29udHJvbC5weQppbmRleCAwNWQ2NTAyLi5kMjkyODkzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy9zc2hjb250cm9sLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL3NzaGNvbnRyb2wucHkKQEAgLTE1MCwxMiArMTUwLDkgQEAKIAogICAgIGRlZiBjb3B5X3RvKHNlbGYsIGxvY2FscGF0aCwgcmVtb3RlcGF0aCk6CiAgICAgICAgIGlmIG9zLnBhdGguaXNsaW5rKGxvY2FscGF0aCk6Ci0gICAgICAgICAgICBsaW5rID0gb3MucmVhZGxpbmsobG9jYWxwYXRoKQotICAgICAgICAgICAgZHN0X2RpciwgZHN0X2Jhc2UgPSBvcy5wYXRoLnNwbGl0KHJlbW90ZXBhdGgpCi0gICAgICAgICAgICByZXR1cm4gc2VsZi5ydW4oImNkICVzOyBsbiAtcyAlcyAlcyIgJSAoZHN0X2RpciwgbGluaywgZHN0X2Jhc2UpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgY29tbWFuZCA9IHNlbGYuc2NwICsgW2xvY2FscGF0aCwgJyVzQCVzOiVzJyAlIChzZWxmLnVzZXIsIHNlbGYuaXAsIHJlbW90ZXBhdGgpXQotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2ludGVybmFsX3J1bihjb21tYW5kLCBpZ25vcmVfc3RhdHVzPUZhbHNlKQorICAgICAgICAgICAgbG9jYWxwYXRoID0gb3MucGF0aC5kaXJuYW1lKGxvY2FscGF0aCkgKyAiLyIgKyBvcy5yZWFkbGluayhsb2NhbHBhdGgpCisgICAgICAgIGNvbW1hbmQgPSBzZWxmLnNjcCArIFtsb2NhbHBhdGgsICclc0AlczolcycgJSAoc2VsZi51c2VyLCBzZWxmLmlwLCByZW1vdGVwYXRoKV0KKyAgICAgICAgcmV0dXJuIHNlbGYuX2ludGVybmFsX3J1bihjb21tYW5kLCBpZ25vcmVfc3RhdHVzPUZhbHNlKQogCiAgICAgZGVmIGNvcHlfZnJvbShzZWxmLCByZW1vdGVwYXRoLCBsb2NhbHBhdGgpOgogICAgICAgICBjb21tYW5kID0gc2VsZi5zY3AgKyBbJyVzQCVzOiVzJyAlIChzZWxmLnVzZXIsIHNlbGYuaXAsIHJlbW90ZXBhdGgpLCBsb2NhbHBhdGhdCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9saWIvb2VxYS91dGlscy90YXJnZXRidWlsZC5weSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL3RhcmdldGJ1aWxkLnB5CmluZGV4IDkyNDlmYTIuLjEyMDJkNTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL3RhcmdldGJ1aWxkLnB5CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL3RhcmdldGJ1aWxkLnB5CkBAIC02OSw3ICs2OSw3IEBACiAKICAgICBkZWYgY2xlYW4oc2VsZik6CiAgICAgICAgIHNlbGYuX3J1bigncm0gLXJmICVzJyAlIHNlbGYudGFyZ2V0ZGlyKQotICAgICAgICBzdWJwcm9jZXNzLmNhbGwoJ3JtIC1mICVzJyAlIHNlbGYubG9jYWxhcmNoaXZlLCBzaGVsbD1UcnVlKQorICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoJ3JtIC1mICVzJyAlIHNlbGYubG9jYWxhcmNoaXZlLCBzaGVsbD1UcnVlKQogICAgICAgICBwYXNzCiAKIGNsYXNzIFRhcmdldEJ1aWxkUHJvamVjdChCdWlsZFByb2plY3QpOgpAQCAtMTM2LDQgKzEzNiw0IEBACiAKICAgICBkZWYgX3J1bihzZWxmLCBjbWQpOgogICAgICAgICBzZWxmLmxvZygiUnVubmluZyAuICVzOyAiICUgc2VsZi5zZGtlbnYgKyBjbWQpCi0gICAgICAgIHJldHVybiBzdWJwcm9jZXNzLmNhbGwoIi4gJXM7ICIgJSBzZWxmLnNka2VudiArIGNtZCwgc2hlbGw9VHJ1ZSkKKyAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3MuY2hlY2tfY2FsbCgiLiAlczsgIiAlIHNlbGYuc2RrZW52ICsgY21kLCBzaGVsbD1UcnVlKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvYWxzYS1zdGF0ZS9hbHNhLXN0YXRlLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvYWxzYS1zdGF0ZS9hbHNhLXN0YXRlLmJiCmluZGV4IGQwZjdiYjMuLjA2NzA1NTYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2Fsc2Etc3RhdGUvYWxzYS1zdGF0ZS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9hbHNhLXN0YXRlL2Fsc2Etc3RhdGUuYmIKQEAgLTUsNiArNSw3IEBACiAjIEZpbGVuYW1lOiBhbHNhLXN0YXRlLmJiCiAKIFNVTU1BUlkgPSAiQWxzYSBzY2VuYXJpbyBmaWxlcyB0byBlbmFibGUgYWxzYSBzdGF0ZSByZXN0b3JhdGlvbiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuYWxzYS1wcm9qZWN0Lm9yZy8iCiBERVNDUklQVElPTiA9ICJBbHNhIFNjZW5hcmlvIEZpbGVzIC0gYW4gaW5pdCBzY3JpcHQgYW5kIHN0YXRlIGZpbGVzIHRvIHJlc3RvcmUgXAogc291bmQgc3RhdGUgYXQgc3lzdGVtIGJvb3QgYW5kIHNhdmUgaXQgYXQgc3lzdGVtIHNodXQgZG93bi4iCiBMSUNFTlNFID0gIk1JVCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dudS1lZmkvZ251LWVmaS8wMDAxLU1hcmstb3VyLWV4cGxpY2l0LWZhbGwtdGhyb3VnaC1zby1XZXh0cmEtd2lsbC13b3JrLWkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9nbnUtZWZpL2dudS1lZmkvMDAwMS1NYXJrLW91ci1leHBsaWNpdC1mYWxsLXRocm91Z2gtc28tV2V4dHJhLXdpbGwtd29yay1pLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMGFlYjJkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dudS1lZmkvZ251LWVmaS8wMDAxLU1hcmstb3VyLWV4cGxpY2l0LWZhbGwtdGhyb3VnaC1zby1XZXh0cmEtd2lsbC13b3JrLWkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1Gcm9tIDY3NmE4YTkwMDFmMDY4MDhiNGRiZTBhNTQ1ZDc2YjVkOWE4ZWJmNDggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQZXRlciBKb25lcyA8cGpvbmVzQHJlZGhhdC5jb20+Ci1EYXRlOiBUaHUsIDIgRmViIDIwMTcgMTM6NTE6MjcgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSF0gTWFyayBvdXIgZXhwbGljaXQgZmFsbCB0aHJvdWdoIHNvIC1XZXh0cmEgd2lsbCB3b3JrIGluIGdjYyA3Ci0KLWdjYyA3IGludHJvZHVjZXMgZGV0ZWN0aW9uIG9mIGZhbGwtdGhyb3VnaCBiZWhhdmlvciBpbiBzd2l0Y2gvY2FzZQotc3RhdGVtZW50cywgYW5kIHdpbGwgd2FybiBpZiAtV2ltcGxpY2l0LWZhbGx0aHJvdWdoIGlzIHByZXNlbnQgYW5kIHRoZXJlCi1pcyBubyBjb21tZW50IHN0YXRpbmcgdGhhdCB0aGUgZmFsbC10aHJvdWdoIGlzIGludGVudGlvbmFsLiAgVGhpcyBpcwotYWxzbyB0cmlnZ2VyZWQgYnkgLVdleHRyYSwgYXMgaXQgZW5hYmxlcyAtV2ltcGxpY2l0LWZhbGx0aHJvdWdoPTEuCi0KLVRoaXMgcGF0Y2ggYWRkcyB0aGUgY29tbWVudCBpbiB0aGUgb25lIHBsYWNlIHdlIHVzZSBmYWxsLXRocm91Z2guCi0KLVNpZ25lZC1vZmYtYnk6IFBldGVyIEpvbmVzIDxwam9uZXNAcmVkaGF0LmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBsaWIvcHJpbnQuYyB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvbGliL3ByaW50LmMgYi9saWIvcHJpbnQuYwotaW5kZXggYjhhOWQzOC4uY2I3MzJmMCAxMDA2NDQKLS0tLSBhL2xpYi9wcmludC5jCi0rKysgYi9saWIvcHJpbnQuYwotQEAgLTExMzEsNiArMTEzMSw3IEBAIFJldHVybnM6Ci0gICAgICAgICAgICAgY2FzZSAnWCc6Ci0gICAgICAgICAgICAgICAgIEl0ZW0uV2lkdGggPSBJdGVtLkxvbmcgPyAxNiA6IDg7Ci0gICAgICAgICAgICAgICAgIEl0ZW0uUGFkID0gJzAnOwotKwkJLyogZmFsbHMgdGhyb3VnaCAqLwotICAgICAgICAgICAgIGNhc2UgJ3gnOgotICAgICAgICAgICAgICAgICBWYWx1ZVRvSGV4ICgKLSAgICAgICAgICAgICAgICAgICAgIEl0ZW0uU2NyYXRjaCwKLS0tIAotMi4xMi4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dudS1lZmkvZ251LWVmaS9nY2M0Ni1jb21wYXRpYmlsaXR5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ251LWVmaS9nbnUtZWZpL2djYzQ2LWNvbXBhdGliaWxpdHkucGF0Y2gKaW5kZXggMGNlNmQ3Yi4uNjllZmQzNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ251LWVmaS9nbnUtZWZpL2djYzQ2LWNvbXBhdGliaWxpdHkucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ251LWVmaS9nbnUtZWZpL2djYzQ2LWNvbXBhdGliaWxpdHkucGF0Y2gKQEAgLTEsMyArMSw4IEBACitGcm9tIDhkMTZhZTM3NGM1ZDRkOWZhYzQ1YzAwMjYwNWE2NmNmYjhjMDhiZTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBTdGV2ZSBMYW5nYXNlayA8c3RldmUubGFuZ2FzZWtAdWJ1bnR1LmNvbT4KK0RhdGU6IFdlZCwgOSBTZXAgMjAxNSAwODoyNjowNiArMDAwMAorU3ViamVjdDogW1BBVENIIDMvM10gZ251LWVmaSwgc3lzbGludXg6IFN1cHBvcnQgZ2NjIDwgNC43CisKIGRvbid0IGJyZWFrIHdpdGggb2xkIGNvbXBpbGVycyBhbmQgLURHTlVfRUZJX1VTRV9NU19BQkkKIEl0J3MgZW50aXJlbHkgbGVnaXRpbWF0ZSB0byByZXF1ZXN0IEdOVV9FRklfVVNFX01TX0FCSSBldmVuIGlmIHRoZSBjdXJyZW50CiBjb21waWxlciBkb2Vzbid0IHN1cHBvcnQgaXQsIGFuZCBnbnUtZWZpIHNob3VsZCB0cmFuc3BhcmVudGx5IGZhbGwgYmFjayB0bwpAQCAtNiwxNiArMTEsMjUgQEAKIAogQXV0aG9yOiBTdGV2ZSBMYW5nYXNlayA8c3RldmUubGFuZ2FzZWtAdWJ1bnR1LmNvbT4KIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotSW5kZXg6IGdudS1lZmktMy4wLjMvaW5jL3g4Nl82NC9lZmliaW5kLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnbnUtZWZpLTMuMC4zLm9yaWcvaW5jL3g4Nl82NC9lZmliaW5kLmgKLSsrKyBnbnUtZWZpLTMuMC4zL2luYy94ODZfNjQvZWZpYmluZC5oCitbUmViYXNlZCBmb3IgMy4wLjZdCitTaWduZWQtb2ZmLWJ5OiBDYWxpZm9ybmlhIFN1bGxpdmFuIDxjYWxpZm9ybmlhLmwuc3VsbGl2YW5AaW50ZWwuY29tPgorLS0tCisgaW5jL3g4Nl82NC9lZmliaW5kLmggfCAyIC0tCisgMSBmaWxlIGNoYW5nZWQsIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9pbmMveDg2XzY0L2VmaWJpbmQuaCBiL2luYy94ODZfNjQvZWZpYmluZC5oCitpbmRleCA0MzA5ZjlmLi4wMmMwYWYxIDEwMDY0NAorLS0tIGEvaW5jL3g4Nl82NC9lZmliaW5kLmgKKysrKyBiL2luYy94ODZfNjQvZWZpYmluZC5oCiBAQCAtMjUsOCArMjUsNiBAQCBSZXZpc2lvbiBIaXN0b3J5CiAgI2lmIGRlZmluZWQoR05VX0VGSV9VU0VfTVNfQUJJKQotICAgICAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fID4gNCB8fCAoX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA+PSA3KSkKKyAgICAgI2lmIChkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPiA0IHx8IChfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fID49IDcpKSl8fChkZWZpbmVkKF9fY2xhbmdfXykgJiYgKF9fY2xhbmdfbWFqb3JfXyA+IDMgfHwgKF9fY2xhbmdfbWFqb3JfXyA9PSAzICYmIF9fY2xhbmdfbWlub3JfXyA+PSAyKSkpCiAgICAgICAgICAjZGVmaW5lIEhBVkVfVVNFX01TX0FCSSAxCiAtICAgICNlbHNlCiAtICAgICAgICAjZXJyb3IgQ29tcGlsZXIgaXMgdG9vIG9sZCBmb3IgR05VX0VGSV9VU0VfTVNfQUJJCiAgICAgICNlbmRpZgogICNlbmRpZgogIAorLS0gCisyLjkuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9nbnUtZWZpL2dudS1lZmkvcGFyYWxsZWwtbWFrZS1hcmNoaXZlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dudS1lZmkvZ251LWVmaS9wYXJhbGxlbC1tYWtlLWFyY2hpdmVzLnBhdGNoCmluZGV4IGU1YjQ3YzEuLjAxMTAyNjAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dudS1lZmkvZ251LWVmaS9wYXJhbGxlbC1tYWtlLWFyY2hpdmVzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dudS1lZmkvZ251LWVmaS9wYXJhbGxlbC1tYWtlLWFyY2hpdmVzLnBhdGNoCkBAIC0xLDQgKzEsNyBAQAotRml4IHBhcmFsbGVsIG1ha2UgZmFpbHVyZSBmb3IgYXJjaGl2ZXMKK0Zyb20gMTY4NjVkZTY2ZGIzM2NhNzA4NzIxOTllNzBkOTNlZmNjZWNjODU3NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFNhdWwgV29sZCA8c2d3QGxpbnV4LmludGVsLmNvbT4KK0RhdGU6IFN1biwgOSBNYXIgMjAxNCAxNToyMjoxNSArMDIwMAorU3ViamVjdDogW1BBVENIIDEvM10gRml4IHBhcmFsbGVsIG1ha2UgZmFpbHVyZSBmb3IgYXJjaGl2ZXMKIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKQEAgLTEyLDMxICsxNSwxOCBAQAogCiBTaWduZWQtb2ZmLWJ5OiBTYXVsIFdvbGQgPHNnd0BsaW51eC5pbnRlbC5jb20+CiBTaWduZWQtb2ZmLWJ5OiBEYXJyZW4gSGFydCA8ZHZoYXJ0QGxpbnV4LmludGVsLmNvbT4KK1tSZWJhc2VkIGZvciAzLjAuNl0KK1NpZ25lZC1vZmYtYnk6IENhbGlmb3JuaWEgU3VsbGl2YW4gPGNhbGlmb3JuaWEubC5zdWxsaXZhbkBpbnRlbC5jb20+CiAtLS0KLS0tLQotIGdudWVmaS9NYWtlZmlsZSB8ICAgIDMgKystCi0gbGliL01ha2VmaWxlICAgIHwgICAgMyArKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKyBnbnVlZmkvTWFrZWZpbGUgfCAzICsrLQorIGxpYi9NYWtlZmlsZSAgICB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAotSW5kZXg6IGdudS1lZmktMy4wL2xpYi9NYWtlZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdudS1lZmktMy4wLm9yaWcvbGliL01ha2VmaWxlCi0rKysgZ251LWVmaS0zLjAvbGliL01ha2VmaWxlCi1AQCAtNjYsNyArNjYsOCBAQCBhbGw6IGxpYnN1YmRpcnMgbGliZWZpLmEKLSBsaWJzdWJkaXJzOgotIAlmb3Igc2RpciBpbiAkKFNVQkRJUlMpOyBkbyBta2RpciAtcCAkJHNkaXI7IGRvbmUKLSAKLS1saWJlZmkuYTogJChwYXRzdWJzdCAlLGxpYmVmaS5hKCUpLCQoT0JKUykpCi0rbGliZWZpLmE6ICQoT0JKUykKLSsJJChBUikgcnYgJEAgJChPQkpTKQotIAotIGNsZWFuOgotIAlybSAtZiBsaWJlZmkuYSAqfiAkKE9CSlMpICovKi5vCi1JbmRleDogZ251LWVmaS0zLjAvZ251ZWZpL01ha2VmaWxlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ251LWVmaS0zLjAub3JpZy9nbnVlZmkvTWFrZWZpbGUKLSsrKyBnbnUtZWZpLTMuMC9nbnVlZmkvTWFrZWZpbGUKLUBAIC01MSw3ICs1MSw4IEBAIFRBUkdFVFMJPSBjcnQwLWVmaS0kKEFSQ0gpLm8gbGliZ251ZWZpLmEKK2RpZmYgLS1naXQgYS9nbnVlZmkvTWFrZWZpbGUgYi9nbnVlZmkvTWFrZWZpbGUKK2luZGV4IDJhNjE2OTkuLjE0ODEwNmUgMTAwNjQ0CistLS0gYS9nbnVlZmkvTWFrZWZpbGUKKysrKyBiL2dudWVmaS9NYWtlZmlsZQorQEAgLTU0LDcgKzU0LDggQEAgVEFSR0VUUwk9IGNydDAtZWZpLSQoQVJDSCkubyBsaWJnbnVlZmkuYQogIAogIGFsbDoJJChUQVJHRVRTKQogIApAQCAtNDYsMyArMzYsMTkgQEAKICAKICBjbGVhbjoKICAJcm0gLWYgJChUQVJHRVRTKSAqfiAqLm8gJChPQkpTKQorZGlmZiAtLWdpdCBhL2xpYi9NYWtlZmlsZSBiL2xpYi9NYWtlZmlsZQoraW5kZXggYjhkMWNlNy4uNmVmODEwNyAxMDA2NDQKKy0tLSBhL2xpYi9NYWtlZmlsZQorKysrIGIvbGliL01ha2VmaWxlCitAQCAtNzUsNyArNzUsNyBAQCBsaWJzdWJkaXJzOgorIAlmb3Igc2RpciBpbiAkKFNVQkRJUlMpOyBkbyBta2RpciAtcCAkJHNkaXI7IGRvbmUKKyAKKyBsaWJlZmkuYTogJChPQkpTKQorLQkkKEFSKSBydiAtVSAkQCAkXgorKwkkKEFSKSBydiAkQCAkKE9CSlMpCisgCisgY2xlYW46CisgCXJtIC1mIGxpYmVmaS5hICp+ICQoT0JKUykgKi8qLm8KKy0tIAorMi45LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ251LWVmaS9nbnUtZWZpXzMuMC41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ251LWVmaS9nbnUtZWZpXzMuMC41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNmY5ZjUzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dudS1lZmkvZ251LWVmaV8zLjAuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLVNVTU1BUlkgPSAiTGlicmFyaWVzIGZvciBwcm9kdWNpbmcgRUZJIGJpbmFyaWVzIgotSE9NRVBBR0UgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9nbnUtZWZpLyIKLVNFQ1RJT04gPSAiZGV2ZWwiCi1MSUNFTlNFID0gIkdQTHYyKyB8IEJTRC0yLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2dudWVmaS9jcnQwLWVmaS1hcm0uUztiZWdpbmxpbmU9NDtlbmRsaW5lPTE2O21kNT1lNTgyNzY0YTQ3NzZlNjBjOTViZjlhYjYxNzM0M2QzNiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nbnVlZmkvY3J0MC1lZmktYWFyY2g2NC5TO2JlZ2lubGluZT00O2VuZGxpbmU9MTY7bWQ1PWU1ODI3NjRhNDc3NmU2MGM5NWJmOWFiNjE3MzQzZDM2IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luYy9lZmlzaGVsbGludGYuaDtiZWdpbmxpbmU9MTM7ZW5kbGluZT0yMDttZDU9MjAyNzY2Yjc5ZDcwOGVmZjNjYzcwZmNlMTVmYjgwYzcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jL2VmaXNoZWxscGFybS5oO2JlZ2lubGluZT00O2VuZGxpbmU9MTE7bWQ1PTQ2OGIxMjMxYjA1YmJjODRiYWUzYTBkNTc3NGUzYmI1IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi9hcm0vbWF0aC5jO2JlZ2lubGluZT0yO2VuZGxpbmU9MTU7bWQ1PThlZDc3MjUwMWRhNzdiMmIzMzQ1YWE2ZGY4NzQ0YzllIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi9hcm0vaW5pdHBsYXQuYztiZWdpbmxpbmU9MjtlbmRsaW5lPTE1O21kNT04ZWQ3NzI1MDFkYTc3YjJiMzM0NWFhNmRmODc0NGM5ZSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvYWFyY2g2NC9tYXRoLmM7YmVnaW5saW5lPTI7ZW5kbGluZT0xNTttZDU9OGVkNzcyNTAxZGE3N2IyYjMzNDVhYTZkZjg3NDRjOWUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL2FhcmNoNjQvaW5pdHBsYXQuYztiZWdpbmxpbmU9MjtlbmRsaW5lPTE1O21kNT04ZWQ3NzI1MDFkYTc3YjJiMzM0NWFhNmRmODc0NGM5ZSBcCi0gICAgICAgICAgICAgICAgICAgIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0vJHtCUH0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9wYXJhbGxlbC1tYWtlLWFyY2hpdmVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2xpYi1NYWtlZmlsZS1maXgtcGFyYWxsZWwtaXNzdWUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZ2NjNDYtY29tcGF0aWJpbGl0eS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLU1hcmstb3VyLWV4cGxpY2l0LWZhbGwtdGhyb3VnaC1zby1XZXh0cmEtd2lsbC13b3JrLWkucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxZjcxOWM5YzEzNTc3OGFhNmIwODdiODlhMWNjMjQyMyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiZDhmY2Q1OTE0ZjE4ZmMwZTRiYTk0OGFiMDNiMDAwMTNlNTI4NTA0ZjUyOWM2MDczOWI3NDhmNmVmMTMwYjIyIgotCi1DT01QQVRJQkxFX0hPU1QgPSAiKHg4Nl82NC4qfGkuODYuKnxhYXJjaDY0Lip8YXJtLiopLWxpbnV4IgotQ09NUEFUSUJMRV9IT1NUX2FybXY0ID0gJ251bGwnCi0KLWRvX2NvbmZpZ3VyZV9saW51eC1nbnV4MzJfcHJlcGVuZCgpIHsKLQljcCAke1NUQUdJTkdfSU5DRElSfS9nbnUvc3R1YnMteDMyLmggJHtTVEFHSU5HX0lOQ0RJUn0vZ251L3N0dWJzLTY0LmgKLQljcCAke1NUQUdJTkdfSU5DRElSfS9iaXRzL2xvbmctZG91YmxlLTMyLmggJHtTVEFHSU5HX0lOQ0RJUn0vYml0cy9sb25nLWRvdWJsZS02NC5oCi19Ci0KLWRlZiBnbnVfZWZpX2FyY2goZCk6Ci0gICAgaW1wb3J0IHJlCi0gICAgdGFyY2ggPSBkLmdldFZhcigiVEFSR0VUX0FSQ0giKQotICAgIGlmIHJlLm1hdGNoKCJpWzM0NTY3ODldODYiLCB0YXJjaCk6Ci0gICAgICAgIHJldHVybiAiaWEzMiIKLSAgICByZXR1cm4gdGFyY2gKLQotRVhUUkFfT0VNQUtFID0gIidBUkNIPSR7QGdudV9lZmlfYXJjaChkKX0nICdDQz0ke0NDfScgJ0FTPSR7QVN9JyAnTEQ9JHtMRH0nICdBUj0ke0FSfScgXAotICAgICAgICAgICAgICAgICdSQU5MSUI9JHtSQU5MSUJ9JyAnT0JKQ09QWT0ke09CSkNPUFl9JyAnUFJFRklYPSR7cHJlZml4fScgJ0xJQkRJUj0ke2xpYmRpcn0nIFwKLSAgICAgICAgICAgICAgICAiCi0KLSMgZ251LWVmaSdzIE1ha2VmaWxlIHRyZWF0cyBwcmVmaXggYXMgdG9vbGNoYWluIHByZWZpeCwgc28gZG9uJ3QKLSMgZXhwb3J0IGl0LgotcHJlZml4W3VuZXhwb3J0XSA9ICIxIgotCi1kb19pbnN0YWxsKCkgewotICAgICAgICBvZV9ydW5tYWtlIGluc3RhbGwgSU5TVEFMTFJPT1Q9IiR7RH0iCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vKi5sZHMiCi0KLSMgNjQtYml0IGJpbmFyaWVzIGFyZSBleHBlY3RlZCBmb3IgRUZJIHdoZW4gdGFyZ2V0aW5nIFgzMgotSU5TQU5FX1NLSVBfJHtQTn0tZGV2X2FwcGVuZF9saW51eC1nbnV4MzIgPSAiIGFyY2giCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi0jIEl0IGRvZXNuJ3Qgc3VwcG9ydCBzc2UsIGl0cyBtYWtlLmRlZmF1bHRzIHNldHM6Ci0jIENGTEFHUyArPSAtbW5vLW1teCAtbW5vLXNzZQotIyBTbyBhbHNvIHJlbW92ZSAtbWZwbWF0aD1zc2UgZnJvbSBUVU5FX0NDQVJHUwotVFVORV9DQ0FSR1NfcmVtb3ZlID0gIi1tZnBtYXRoPXNzZSIKLQotcHl0aG9uICgpIHsKLSAgICBjY2FyZ3MgPSBkLmdldFZhcignVFVORV9DQ0FSR1MnKS5zcGxpdCgpCi0gICAgaWYgJy1teDMyJyBpbiBjY2FyZ3M6Ci0gICAgICAgICMgdXNlIHg4Nl82NCBFRkkgQUJJCi0gICAgICAgIGNjYXJncy5yZW1vdmUoJy1teDMyJykKLSAgICAgICAgY2NhcmdzLmFwcGVuZCgnLW02NCcpCi0gICAgICAgIGQuc2V0VmFyKCdUVU5FX0NDQVJHUycsICcgJy5qb2luKGNjYXJncykpCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9nbnUtZWZpL2dudS1lZmlfMy4wLjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9nbnUtZWZpL2dudS1lZmlfMy4wLjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmE2MDcxNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dudS1lZmkvZ251LWVmaV8zLjAuNi5iYgpAQCAtMCwwICsxLDcxIEBACitTVU1NQVJZID0gIkxpYnJhcmllcyBmb3IgcHJvZHVjaW5nIEVGSSBiaW5hcmllcyIKK0hPTUVQQUdFID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvZ251LWVmaS8iCitTRUNUSU9OID0gImRldmVsIgorTElDRU5TRSA9ICJHUEx2MisgfCBCU0QtMi1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9nbnVlZmkvY3J0MC1lZmktYXJtLlM7YmVnaW5saW5lPTQ7ZW5kbGluZT0xNjttZDU9ZTU4Mjc2NGE0Nzc2ZTYwYzk1YmY5YWI2MTczNDNkMzYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ251ZWZpL2NydDAtZWZpLWFhcmNoNjQuUztiZWdpbmxpbmU9NDtlbmRsaW5lPTE2O21kNT1lNTgyNzY0YTQ3NzZlNjBjOTViZjlhYjYxNzM0M2QzNiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmMvZWZpc2hlbGxpbnRmLmg7YmVnaW5saW5lPTEzO2VuZGxpbmU9MjA7bWQ1PTIwMjc2NmI3OWQ3MDhlZmYzY2M3MGZjZTE1ZmI4MGM3IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luYy9lZmlzaGVsbHBhcm0uaDtiZWdpbmxpbmU9NDtlbmRsaW5lPTExO21kNT00NjhiMTIzMWIwNWJiYzg0YmFlM2EwZDU3NzRlM2JiNSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvYXJtL21hdGguYztiZWdpbmxpbmU9MjtlbmRsaW5lPTE1O21kNT04ZWQ3NzI1MDFkYTc3YjJiMzM0NWFhNmRmODc0NGM5ZSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvYXJtL2luaXRwbGF0LmM7YmVnaW5saW5lPTI7ZW5kbGluZT0xNTttZDU9OGVkNzcyNTAxZGE3N2IyYjMzNDVhYTZkZjg3NDRjOWUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL2FhcmNoNjQvbWF0aC5jO2JlZ2lubGluZT0yO2VuZGxpbmU9MTU7bWQ1PThlZDc3MjUwMWRhNzdiMmIzMzQ1YWE2ZGY4NzQ0YzllIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi9hYXJjaDY0L2luaXRwbGF0LmM7YmVnaW5saW5lPTI7ZW5kbGluZT0xNTttZDU9OGVkNzcyNTAxZGE3N2IyYjMzNDVhYTZkZjg3NDRjOWUgXAorICAgICAgICAgICAgICAgICAgICIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59LyR7QlB9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vcGFyYWxsZWwtbWFrZS1hcmNoaXZlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9saWItTWFrZWZpbGUtZml4LXBhcmFsbGVsLWlzc3VlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2djYzQ2LWNvbXBhdGliaWxpdHkucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0NmY2MzM3NThhOGEzN2RiOWZkNjkwOWZlMjcwYzI2YiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyMTUxNTkwMmQ4MGZiZWEyMzMyOGE2MWQ3MGQzZDUxYTQ3MjA0YWJkMTUwN2ViZmEyNzU1MGE3YjliZjIyYzkxIgorCitDT01QQVRJQkxFX0hPU1QgPSAiKHg4Nl82NC4qfGkuODYuKnxhYXJjaDY0Lip8YXJtLiopLWxpbnV4IgorQ09NUEFUSUJMRV9IT1NUX2FybXY0ID0gJ251bGwnCisKK2RvX2NvbmZpZ3VyZV9saW51eC1nbnV4MzJfcHJlcGVuZCgpIHsKKwljcCAke1NUQUdJTkdfSU5DRElSfS9nbnUvc3R1YnMteDMyLmggJHtTVEFHSU5HX0lOQ0RJUn0vZ251L3N0dWJzLTY0LmgKKwljcCAke1NUQUdJTkdfSU5DRElSfS9iaXRzL2xvbmctZG91YmxlLTMyLmggJHtTVEFHSU5HX0lOQ0RJUn0vYml0cy9sb25nLWRvdWJsZS02NC5oCit9CisKK2RlZiBnbnVfZWZpX2FyY2goZCk6CisgICAgaW1wb3J0IHJlCisgICAgdGFyY2ggPSBkLmdldFZhcigiVEFSR0VUX0FSQ0giKQorICAgIGlmIHJlLm1hdGNoKCJpWzM0NTY3ODldODYiLCB0YXJjaCk6CisgICAgICAgIHJldHVybiAiaWEzMiIKKyAgICByZXR1cm4gdGFyY2gKKworRVhUUkFfT0VNQUtFID0gIidBUkNIPSR7QGdudV9lZmlfYXJjaChkKX0nICdDQz0ke0NDfScgJ0FTPSR7QVN9JyAnTEQ9JHtMRH0nICdBUj0ke0FSfScgXAorICAgICAgICAgICAgICAgICdSQU5MSUI9JHtSQU5MSUJ9JyAnT0JKQ09QWT0ke09CSkNPUFl9JyAnUFJFRklYPSR7cHJlZml4fScgJ0xJQkRJUj0ke2xpYmRpcn0nIFwKKyAgICAgICAgICAgICAgICAiCisKKyMgZ251LWVmaSdzIE1ha2VmaWxlIHRyZWF0cyBwcmVmaXggYXMgdG9vbGNoYWluIHByZWZpeCwgc28gZG9uJ3QKKyMgZXhwb3J0IGl0LgorcHJlZml4W3VuZXhwb3J0XSA9ICIxIgorCitkb19pbnN0YWxsKCkgeworICAgICAgICBvZV9ydW5tYWtlIGluc3RhbGwgSU5TVEFMTFJPT1Q9IiR7RH0iCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vKi5sZHMiCisKKyMgNjQtYml0IGJpbmFyaWVzIGFyZSBleHBlY3RlZCBmb3IgRUZJIHdoZW4gdGFyZ2V0aW5nIFgzMgorSU5TQU5FX1NLSVBfJHtQTn0tZGV2X2FwcGVuZF9saW51eC1nbnV4MzIgPSAiIGFyY2giCitJTlNBTkVfU0tJUF8ke1BOfS1kZXZfYXBwZW5kX2xpbnV4LW11c2x4MzIgPSAiIGFyY2giCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCisjIEl0IGRvZXNuJ3Qgc3VwcG9ydCBzc2UsIGl0cyBtYWtlLmRlZmF1bHRzIHNldHM6CisjIENGTEFHUyArPSAtbW5vLW1teCAtbW5vLXNzZQorIyBTbyBhbHNvIHJlbW92ZSAtbWZwbWF0aD1zc2UgZnJvbSBUVU5FX0NDQVJHUworVFVORV9DQ0FSR1NfcmVtb3ZlID0gIi1tZnBtYXRoPXNzZSIKKworcHl0aG9uICgpIHsKKyAgICBjY2FyZ3MgPSBkLmdldFZhcignVFVORV9DQ0FSR1MnKS5zcGxpdCgpCisgICAgaWYgJy1teDMyJyBpbiBjY2FyZ3M6CisgICAgICAgICMgdXNlIHg4Nl82NCBFRkkgQUJJCisgICAgICAgIGNjYXJncy5yZW1vdmUoJy1teDMyJykKKyAgICAgICAgY2NhcmdzLmFwcGVuZCgnLW02NCcpCisgICAgICAgIGQuc2V0VmFyKCdUVU5FX0NDQVJHUycsICcgJy5qb2luKGNjYXJncykpCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWItZ2l0LzAwMDEtRGlzYWJsZS1tZnBtYXRoLXNzZS1hcy13ZWxsLXdoZW4tU1NFLWlzLWRpc2FibGVkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy8wMDAxLURpc2FibGUtbWZwbWF0aC1zc2UtYXMtd2VsbC13aGVuLVNTRS1pcy1kaXNhYmxlZC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViLWdpdC8wMDAxLURpc2FibGUtbWZwbWF0aC1zc2UtYXMtd2VsbC13aGVuLVNTRS1pcy1kaXNhYmxlZC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy8wMDAxLURpc2FibGUtbWZwbWF0aC1zc2UtYXMtd2VsbC13aGVuLVNTRS1pcy1kaXNhYmxlZC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy8wMDAxLUVuZm9yY2Utbm8tcGllLWlmLXRoZS1jb21waWxlci1zdXBwb3J0cy1pdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvMDAwMS1FbmZvcmNlLW5vLXBpZS1pZi10aGUtY29tcGlsZXItc3VwcG9ydHMtaXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjZGJlZTIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy8wMDAxLUVuZm9yY2Utbm8tcGllLWlmLXRoZS1jb21waWxlci1zdXBwb3J0cy1pdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLUZyb20gNjE4NmJjZjFiY2FhYTBmMTZlNzkzMzllMDdjNjRjODQxZDRkOTU3ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyIERlYyAyMDE2IDIwOjUyOjQwICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIEVuZm9yY2UgLW5vLXBpZSwgaWYgdGhlIGNvbXBpbGVyIHN1cHBvcnRzIGl0LgotCi1BZGQgYSAtbm8tcGllIGFzIHJlY2VudCAoMiBEZWMgMjAxNikgRGViaWFuIHRlc3RpbmcgY29tcGlsZXIKLXNlZW1zIHRvIGRlZmF1bHQgdG8gZW5hYmxpbmcgUElFIHdoZW4gbGlua2luZy4gU2VlCi1odHRwczovL3dpa2kudWJ1bnR1LmNvbS9TZWN1cml0eVRlYW0vUElFCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0tLS0KLSBhY2luY2x1ZGUubTQgfCAyICstCi0gY29uZmlndXJlLmFjIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYWNpbmNsdWRlLm00IGIvYWNpbmNsdWRlLm00Ci1pbmRleCAxOTIwMGIwLi5hNzEzOTIzIDEwMDY0NAotLS0tIGEvYWNpbmNsdWRlLm00Ci0rKysgYi9hY2luY2x1ZGUubTQKLUBAIC00MTYsNyArNDE2LDcgQEAgaW50IG1haW4oKSB7Ci0gCi0gWyMgYCRDQyAtYyAtbyAuLi4nIG1pZ2h0IG5vdCBiZSBwb3J0YWJsZS4gIEJ1dCwgb2gsIHdlbGwuLi4gIElzIGNhbGxpbmcKLSAjIGBhY19jb21waWxlJyBsaWtlIHRoaXMgY29ycmVjdCwgYWZ0ZXIgYWxsPwotLWlmIGV2YWwgIiRhY19jb21waWxlIC1TIC1vIGNvbmZ0ZXN0LnMiIDI+IC9kZXYvbnVsbDsgdGhlbl0KLStpZiBldmFsICIkYWNfY29tcGlsZSAtUyAtbyBjb25mdGVzdC5zIiAyPiAvZGV2L251bGwgJiYgZXZhbCAiJENDIC1kdW1wc3BlY3MgMj4vZGV2L251bGwgfCBncmVwIC1lIG5vLXBpZSIgOyB0aGVuXQotICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKLSAgIFsjIFNob3VsZCB3ZSBjbGVhciB1cCBvdGhlciBmaWxlcyBhcyB3ZWxsLCBoYXZpbmcgY2FsbGVkIGBBQ19MQU5HX0NPTkZURVNUJz8KLSAgIHJtIC1mIGNvbmZ0ZXN0LnMKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGRmMjA5OTEuLjUwNmM2YjQgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTYwMyw3ICs2MDMsNyBAQCBncnViX0NIRUNLX1BJRQotIFsjIE5lZWQgdGhhdCwgYmVjYXVzZSBzb21lIGRpc3RyaWJ1dGlvbnMgc2hpcCBjb21waWxlcnMgdGhhdCBpbmNsdWRlCi0gIyBgLWZQSUUnIGluIHRoZSBkZWZhdWx0IHNwZWNzLgotIGlmIFsgeCIkcGllX3Bvc3NpYmxlIiA9IHh5ZXMgXTsgdGhlbgotLSAgVEFSR0VUX0NGTEFHUz0iJFRBUkdFVF9DRkxBR1MgLWZuby1QSUUiCi0rICBUQVJHRVRfQ0ZMQUdTPSIkVEFSR0VUX0NGTEFHUyAtZm5vLVBJRSAtbm8tcGllIgotIGZpXQotIAotICMgUG9zaXRpb24gaW5kZXBlbmRlbnQgZXhlY3V0YWJsZS4KLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvMDAwMS1GaXgtQ1ZFLTIwMTUtODM3MC1HcnViMi11c2VyLXBhc3MtdnVsbmVyYWJpbGl0eS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvMDAwMS1GaXgtQ1ZFLTIwMTUtODM3MC1HcnViMi11c2VyLXBhc3MtdnVsbmVyYWJpbGl0eS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjVkZGNhZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzLzAwMDEtRml4LUNWRS0yMDE1LTgzNzAtR3J1YjItdXNlci1wYXNzLXZ1bG5lcmFiaWxpdHkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkCi1DVkU6IENWRS0yMDE1LTgzNzAKLVNpZ25lZC1vZmYtYnk6IEF3YWlzIEJlbGFsIDxhd2Fpc19iZWxhbEBtZW50b3IuY29tPgotCi1Gcm9tIDQ1MWQ4MGU1MmQ4NTE0MzJlMTA5NzcxYmI4ZmViYWZjYTdhNWYxZjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBIZWN0b3IgTWFyY28tR2lzYmVydCA8aGVjbWFyZ2lAdXB2LmVzPgotRGF0ZTogV2VkLCAxNiBEZWMgMjAxNSAwNDo1NzoxOCArMDAwMAotU3ViamVjdDogRml4IHNlY3VyaXR5IGlzc3VlIHdoZW4gcmVhZGluZyB1c2VybmFtZSBhbmQgcGFzc3dvcmQKLQotVGhpcyBwYXRjaCBmaXhlcyB0d28gaW50ZWdlciB1bmRlcmZsb3dzIGF0OgotICAqIGdydWItY29yZS9saWIvY3J5cHRvLmMKLSAgKiBncnViLWNvcmUvbm9ybWFsL2F1dGguYwotCi1DVkUtMjAxNS04MzcwCi0KLVNpZ25lZC1vZmYtYnk6IEhlY3RvciBNYXJjby1HaXNiZXJ0IDxoZWNtYXJnaUB1cHYuZXM+Ci1TaWduZWQtb2ZmLWJ5OiBJc21hZWwgUmlwb2xsLVJpcG9sbCA8aXJpcG9sbEBkaXNjYS51cHYuZXM+Ci1BbHNvLUJ5OiBBbmRyZXkgQm9yemVua292IDxhcnZpZGphYXJAZ21haWwuY29tPgotLS0tCi1kaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2xpYi9jcnlwdG8uYyBiL2dydWItY29yZS9saWIvY3J5cHRvLmMKLWluZGV4IDAxMGU1NTAuLjY4M2E4YWEgMTAwNjQ0Ci0tLS0gYS9ncnViLWNvcmUvbGliL2NyeXB0by5jCi0rKysgYi9ncnViLWNvcmUvbGliL2NyeXB0by5jCi1AQCAtNDcwLDcgKzQ3MCw4IEBAIGdydWJfcGFzc3dvcmRfZ2V0IChjaGFyIGJ1ZltdLCB1bnNpZ25lZCBidWZfc2l6ZSkKLSAKLSAgICAgICBpZiAoa2V5ID09ICdcYicpCi0gCXsKLS0JICBjdXJfbGVuLS07Ci0rCSAgaWYgKGN1cl9sZW4pCi0rCSAgICBjdXJfbGVuLS07Ci0gCSAgY29udGludWU7Ci0gCX0KLSAKLWRpZmYgLS1naXQgYS9ncnViLWNvcmUvbm9ybWFsL2F1dGguYyBiL2dydWItY29yZS9ub3JtYWwvYXV0aC5jCi1pbmRleCBjNmJkOTZlLi44NjE1YzQ4IDEwMDY0NAotLS0tIGEvZ3J1Yi1jb3JlL25vcm1hbC9hdXRoLmMKLSsrKyBiL2dydWItY29yZS9ub3JtYWwvYXV0aC5jCi1AQCAtMTc0LDggKzE3NCwxMSBAQCBncnViX3VzZXJuYW1lX2dldCAoY2hhciBidWZbXSwgdW5zaWduZWQgYnVmX3NpemUpCi0gCi0gICAgICAgaWYgKGtleSA9PSAnXGInKQotIAl7Ci0tCSAgY3VyX2xlbi0tOwotLQkgIGdydWJfcHJpbnRmICgiXGIiKTsKLSsJICBpZiAoY3VyX2xlbikKLSsJICAgIHsKLSsJICAgICAgY3VyX2xlbi0tOwotKwkgICAgICBncnViX3ByaW50ZiAoIlxiIik7Ci0rCSAgICB9Ci0gCSAgY29udGludWU7Ci0gCX0KLSAKLS0tCi1jZ2l0IHYwLjkuMC4yCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzLzAwMDEtUmVtb3ZlLWRpcmVjdC1fbGxzZWVrLWNvZGUtYW5kLXJlcXVpcmUtbG9uZy1maWxlc3lzdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvMDAwMS1SZW1vdmUtZGlyZWN0LV9sbHNlZWstY29kZS1hbmQtcmVxdWlyZS1sb25nLWZpbGVzeXN0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZWFiY2U5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvMDAwMS1SZW1vdmUtZGlyZWN0LV9sbHNlZWstY29kZS1hbmQtcmVxdWlyZS1sb25nLWZpbGVzeXN0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotRnJvbSAzYmFjNGNhYTJiYzY0ZGIzMTNhYWVlNTRmZmZiOTAzODNlMTE4NTE3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRmVsaXggSmFuZGEgPGZlbGl4LmphbmRhQHBvc3Rlby5kZT4KLURhdGU6IFRodSwgMjIgSmFuIDIwMTUgMTk6NTQ6MzYgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gUmVtb3ZlIGRpcmVjdCBfbGxzZWVrIGNvZGUgYW5kIHJlcXVpcmUgbG9uZyBmaWxlc3lzdGVtIGxpYmMuCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLSBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgIHwgIDggKysrKysrKysKLSBncnViLWNvcmUvb3NkZXAvdW5peC9ob3N0ZGlzay5jIHwgMjQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gNCBmaWxlcyBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdydWItMi4wMC9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBncnViLTIuMDAub3JpZy9jb25maWd1cmUuYWMKLSsrKyBncnViLTIuMDAvY29uZmlndXJlLmFjCi1AQCAtMzA2LDYgKzMwNiwxNCBAQCBpZiB0ZXN0IHgkZ3J1Yl9jdl9hcHBsZV9jYyA9IHh5ZXMgOyB0aGVuCi0gICBIT1NUX0xERkxBR1M9IiRIT1NUX0xERkxBR1MgLVdsLC1hbGxvd19zdGFja19leGVjdXRlIgotIGZpCi0gCi0rY2FzZSAiJGhvc3Rfb3MiIGluCi0rICBjeWd3aW4gfCB3aW5kb3dzKiB8IG1pbmd3MzIqIHwgYXJvcyopCi0rICAgICA7OwotKyAgKikKLSsgICAgIEFDX0NIRUNLX1NJWkVPRihvZmZfdCkKLSsgICAgIHRlc3QgeCIkYWNfY3Zfc2l6ZW9mX29mZl90IiA9IHg4IHx8IEFDX01TR19FUlJPUihbTGFyZ2UgZmlsZSBzdXBwb3J0IGlzIHJlcXVpcmVkXSk7OwotK2VzYWMKLSsKLSBpZiB0ZXN0IHgkVVNFX05MUyA9IHhubzsgdGhlbgotICAgSE9TVF9DRkxBR1M9IiRIT1NUX0NGTEFHUyAtZm5vLWJ1aWx0aW4tZ2V0dGV4dCIKLSBmaQotSW5kZXg6IGdydWItMi4wMC9ncnViLWNvcmUva2Vybi9lbXUvaG9zdGRpc2suYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdydWItMi4wMC5vcmlnL2dydWItY29yZS9rZXJuL2VtdS9ob3N0ZGlzay5jCi0rKysgZ3J1Yi0yLjAwL2dydWItY29yZS9rZXJuL2VtdS9ob3N0ZGlzay5jCi1AQCAtNDQsMTEgKzQ0LDYgQEAKLSAjaWZkZWYgX19saW51eF9fCi0gIyBpbmNsdWRlIDxzeXMvaW9jdGwuaD4gICAgICAgICAvKiBpb2N0bCAqLwotICMgaW5jbHVkZSA8c3lzL21vdW50Lmg+Ci0tIyBpZiAhZGVmaW5lZChfX0dMSUJDX18pIHx8IFwKLS0gICAgICAgICgoX19HTElCQ19fIDwgMikgfHwgKChfX0dMSUJDX18gPT0gMikgJiYgKF9fR0xJQkNfTUlOT1JfXyA8IDEpKSkKLS0vKiBNYXliZSBsaWJjIGRvZXNuJ3QgaGF2ZSBsYXJnZSBmaWxlIHN1cHBvcnQuICAqLwotLSMgIGluY2x1ZGUgPGxpbnV4L3VuaXN0ZC5oPiAgICAgLyogX2xsc2VlayAqLwotLSMgZW5kaWYgLyogKEdMSUJDIDwgMikgfHwgKChfX0dMSUJDX18gPT0gMikgJiYgKF9fR0xJQkNfTUlOT1IgPCAxKSkgKi8KLSAjIGlmbmRlZiBCTEtGTFNCVUYKLSAjICBkZWZpbmUgQkxLRkxTQlVGICAgICBfSU8gKDB4MTIsOTcpICAgLyogZmx1c2ggYnVmZmVyIGNhY2hlICovCi0gIyBlbmRpZiAvKiAhIEJMS0ZMU0JVRiAqLwotQEAgLTc2MSwyNSArNzU2LDYgQEAgbGludXhfZmluZF9wYXJ0aXRpb24gKGNoYXIgKmRldiwgZ3J1Yl9kaQotIH0KLSAjZW5kaWYgLyogX19saW51eF9fICovCi0gCi0tI2lmIGRlZmluZWQoX19saW51eF9fKSAmJiAoIWRlZmluZWQoX19HTElCQ19fKSB8fCBcCi0tICAgICAgICAoKF9fR0xJQkNfXyA8IDIpIHx8ICgoX19HTElCQ19fID09IDIpICYmIChfX0dMSUJDX01JTk9SX18gPCAxKSkpKQotLSAgLyogTWF5YmUgbGliYyBkb2Vzbid0IGhhdmUgbGFyZ2UgZmlsZSBzdXBwb3J0LiAgKi8KLS1ncnViX2Vycl90Ci0tZ3J1Yl91dGlsX2ZkX3NlZWsgKGludCBmZCwgY29uc3QgY2hhciAqbmFtZSwgZ3J1Yl91aW50NjRfdCBvZmYpCi0tewotLSAgbG9mZl90IG9mZnNldCwgcmVzdWx0OwotLSAgc3RhdGljIGludCBfbGxzZWVrICh1aW50IGZpbGVkZXMsIHVsb25nIGhpLCB1bG9uZyBsbywKLS0JCSAgICAgIGxvZmZfdCAqcmVzLCB1aW50IHdoKTsKLS0gIF9zeXNjYWxsNSAoaW50LCBfbGxzZWVrLCB1aW50LCBmaWxlZGVzLCB1bG9uZywgaGksIHVsb25nLCBsbywKLS0JICAgICBsb2ZmX3QgKiwgcmVzLCB1aW50LCB3aCk7Ci0tCi0tICBvZmZzZXQgPSAobG9mZl90KSBvZmY7Ci0tICBpZiAoX2xsc2VlayAoZmQsIG9mZnNldCA+PiAzMiwgb2Zmc2V0ICYgMHhmZmZmZmZmZiwgJnJlc3VsdCwgU0VFS19TRVQpKQotLSAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX0RFVklDRSwgTl8oImNhbm5vdCBzZWVrIGAlcyc6ICVzIiksCi0tCQkgICAgICAgbmFtZSwgc3RyZXJyb3IgKGVycm5vKSk7Ci0tICByZXR1cm4gR1JVQl9FUlJfTk9ORTsKLS19Ci0tI2Vsc2UKLSBncnViX2Vycl90Ci0gZ3J1Yl91dGlsX2ZkX3NlZWsgKGludCBmZCwgY29uc3QgY2hhciAqbmFtZSwgZ3J1Yl91aW50NjRfdCBvZmYpCi0gewotQEAgLTc5MCw3ICs3NjYsNiBAQCBncnViX3V0aWxfZmRfc2VlayAoaW50IGZkLCBjb25zdCBjaGFyICpuCi0gCQkgICAgICAgbmFtZSwgc3RyZXJyb3IgKGVycm5vKSk7Ci0gICByZXR1cm4gMDsKLSB9Ci0tI2VuZGlmCi0gCi0gc3RhdGljIHZvaWQKLSBmbHVzaF9pbml0aWFsX2J1ZmZlciAoY29uc3QgY2hhciAqb3NfZGV2IF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvMDAwMS1idHJmcy1hdm9pZC11c2VkLXVuaW5pdGlhbGl6ZWQtZXJyb3Itd2l0aC1HQ0M3LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy8wMDAxLWJ0cmZzLWF2b2lkLXVzZWQtdW5pbml0aWFsaXplZC1lcnJvci13aXRoLUdDQzcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxN2E3NzUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy8wMDAxLWJ0cmZzLWF2b2lkLXVzZWQtdW5pbml0aWFsaXplZC1lcnJvci13aXRoLUdDQzcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1Gcm9tIDZjZWY3ZjYwNzk1NTBhZjNiZjkxZGJmZjgyNDM5OGVhZWYwOGMzYzUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbmRyZWkgQm9yemVua292IDxhcnZpZGphYXJAZ21haWwuY29tPgotRGF0ZTogVHVlLCA0IEFwciAyMDE3IDE5OjIyOjMyICswMzAwCi1TdWJqZWN0OiBbUEFUQ0ggMS80XSBidHJmczogYXZvaWQgInVzZWQgdW5pbml0aWFsaXplZCIgZXJyb3Igd2l0aCBHQ0M3Ci0KLXNibG9jayB3YXMgbG9jYWwgYW5kIHNvIGNvbnNpZGVyZWQgbmV3IHZhcmlhYmxlIG9uIGV2ZXJ5IGxvb3AKLWl0ZXJhdGlvbi4KLQotQ2xvc2VzOiA1MDU5NwotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi0gZ3J1Yi1jb3JlL2ZzL2J0cmZzLmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9ncnViLWNvcmUvZnMvYnRyZnMuYyBiL2dydWItY29yZS9mcy9idHJmcy5jCi1pbmRleCA5Y2ZmYTkxLi40ODQ5YzFjIDEwMDY0NAotLS0tIGEvZ3J1Yi1jb3JlL2ZzL2J0cmZzLmMKLSsrKyBiL2dydWItY29yZS9mcy9idHJmcy5jCi1AQCAtMjI3LDExICsyMjcsMTEgQEAgZ3J1Yl9idHJmc19yZWFkX2xvZ2ljYWwgKHN0cnVjdCBncnViX2J0cmZzX2RhdGEgKmRhdGEsCi0gc3RhdGljIGdydWJfZXJyX3QKLSByZWFkX3NibG9jayAoZ3J1Yl9kaXNrX3QgZGlzaywgc3RydWN0IGdydWJfYnRyZnNfc3VwZXJibG9jayAqc2IpCi0gewotKyAgc3RydWN0IGdydWJfYnRyZnNfc3VwZXJibG9jayBzYmxvY2s7Ci0gICB1bnNpZ25lZCBpOwotICAgZ3J1Yl9lcnJfdCBlcnIgPSBHUlVCX0VSUl9OT05FOwotICAgZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUgKHN1cGVyYmxvY2tfc2VjdG9ycyk7IGkrKykKLSAgICAgewotLSAgICAgIHN0cnVjdCBncnViX2J0cmZzX3N1cGVyYmxvY2sgc2Jsb2NrOwotICAgICAgIC8qIERvbid0IHRyeSBhZGRpdGlvbmFsIHN1cGVyYmxvY2tzIGJleW9uZCBkZXZpY2Ugc2l6ZS4gICovCi0gICAgICAgaWYgKGkgJiYgKGdydWJfbGVfdG9fY3B1NjQgKHNibG9jay50aGlzX2RldmljZS5zaXplKQotIAkJPj4gR1JVQl9ESVNLX1NFQ1RPUl9CSVRTKSA8PSBzdXBlcmJsb2NrX3NlY3RvcnNbaV0pCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvMDAwMS1idWlsZC1Vc2UtQUNfSEVBREVSX01BSk9SLXRvLWZpbmQtZGV2aWNlLW1hY3Jvcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvMDAwMS1idWlsZC1Vc2UtQUNfSEVBREVSX01BSk9SLXRvLWZpbmQtZGV2aWNlLW1hY3Jvcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjk1YjllZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzLzAwMDEtYnVpbGQtVXNlLUFDX0hFQURFUl9NQUpPUi10by1maW5kLWRldmljZS1tYWNyb3MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5MiArMCwwIEBACi1Gcm9tIDdhNWIzMDFlM2FkYjhlMDU0Mjg4NTE4YTMyNTEzNWExODgzYzFjNmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNaWtlIEdpbGJlcnQgPGZsb3BweW1AZ2VudG9vLm9yZz4KLURhdGU6IFR1ZSwgMTkgQXByIDIwMTYgMTQ6Mjc6MjIgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gYnVpbGQ6IFVzZSBBQ19IRUFERVJfTUFKT1IgdG8gZmluZCBkZXZpY2UgbWFjcm9zCi0KLURlcGVuZGluZyBvbiB0aGUgT1MvbGliYywgZGV2aWNlIG1hY3JvcyBhcmUgZGVmaW5lZCBpbiBkaWZmZXJlbnQKLWhlYWRlcnMuIFRoaXMgY2hhbmdlIGVuc3VyZXMgd2UgaW5jbHVkZSB0aGUgcmlnaHQgb25lLgotCi1zeXMvdHlwZXMuaCAtIEJTRAotc3lzL21rZGV2LmggLSBTdW4KLXN5cy9zeXNtYWNyb3MuaCAtIGdsaWJjIChMaW51eCkKLQotZ2xpYmMgY3VycmVudGx5IHB1bGxzIHN5cy9zeXNtYWNyb3MuaCBpbnRvIHN5cy90eXBlcy5oLCBidXQgdGhpcyBtYXkKLWNoYW5nZSBpbiBhIGZ1dHVyZSByZWxlYXNlLgotCi1odHRwczovL3NvdXJjZXdhcmUub3JnL21sL2xpYmMtYWxwaGEvMjAxNS0xMS9tc2cwMDI1My5odG1sCi0tLS0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICB8IDMgKystCi0gZ3J1Yi1jb3JlL29zZGVwL2Rldm1hcHBlci9nZXRyb290LmMgIHwgNiArKysrKysKLSBncnViLWNvcmUvb3NkZXAvZGV2bWFwcGVyL2hvc3RkaXNrLmMgfCA1ICsrKysrCi0gZ3J1Yi1jb3JlL29zZGVwL2xpbnV4L2dldHJvb3QuYyAgICAgIHwgNiArKysrKysKLSBncnViLWNvcmUvb3NkZXAvdW5peC9nZXRyb290LmMgICAgICAgfCA0ICsrKy0KLSA1IGZpbGVzIGNoYW5nZWQsIDIyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBncnViLTIuMDAvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3J1Yi0yLjAwLm9yaWcvY29uZmlndXJlLmFjCi0rKysgZ3J1Yi0yLjAwL2NvbmZpZ3VyZS5hYwotQEAgLTMyNiw3ICszMjYsOCBAQCBmaQotIAotICMgQ2hlY2sgZm9yIGZ1bmN0aW9ucyBhbmQgaGVhZGVycy4KLSBBQ19DSEVDS19GVU5DUyhwb3NpeF9tZW1hbGlnbiBtZW1hbGlnbiBhc3ByaW50ZiB2YXNwcmludGYgZ2V0ZXh0bW50ZW50KQotLUFDX0NIRUNLX0hFQURFUlMoc3lzL3BhcmFtLmggc3lzL21vdW50Lmggc3lzL21udHRhYi5oIHN5cy9ta2Rldi5oIGxpbWl0cy5oKQotK0FDX0NIRUNLX0hFQURFUlMoc3lzL3BhcmFtLmggc3lzL21vdW50Lmggc3lzL21udHRhYi5oIGxpbWl0cy5oKQotK0FDX0hFQURFUl9NQUpPUgotIAotIEFDX0NIRUNLX01FTUJFUlMoW3N0cnVjdCBzdGF0ZnMuZl9mc3R5cGVuYW1lXSwsLFskYWNfaW5jbHVkZXNfZGVmYXVsdAotICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KLUluZGV4OiBncnViLTIuMDAvZ3J1Yi1jb3JlL2tlcm4vZW11L2hvc3RkaXNrLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBncnViLTIuMDAub3JpZy9ncnViLWNvcmUva2Vybi9lbXUvaG9zdGRpc2suYwotKysrIGdydWItMi4wMC9ncnViLWNvcmUva2Vybi9lbXUvaG9zdGRpc2suYwotQEAgLTQxLDYgKzQxLDEyIEBACi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPGxpbWl0cy5oPgotIAotKyNpZiBkZWZpbmVkKE1BSk9SX0lOX01LREVWKQotKyNpbmNsdWRlIDxzeXMvbWtkZXYuaD4KLSsjZWxpZiBkZWZpbmVkKE1BSk9SX0lOX1NZU01BQ1JPUykKLSsjaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPgotKyNlbmRpZgotKwotICNpZmRlZiBfX2xpbnV4X18KLSAjIGluY2x1ZGUgPHN5cy9pb2N0bC5oPiAgICAgICAgIC8qIGlvY3RsICovCi0gIyBpbmNsdWRlIDxzeXMvbW91bnQuaD4KLUluZGV4OiBncnViLTIuMDAvdXRpbC9nZXRyb290LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBncnViLTIuMDAub3JpZy91dGlsL2dldHJvb3QuYwotKysrIGdydWItMi4wMC91dGlsL2dldHJvb3QuYwotQEAgLTM1LDYgKzM1LDEzIEBACi0gI2lmZGVmIEhBVkVfTElNSVRTX0gKLSAjaW5jbHVkZSA8bGltaXRzLmg+Ci0gI2VuZGlmCi0rCi0rI2lmIGRlZmluZWQoTUFKT1JfSU5fTUtERVYpCi0rI2luY2x1ZGUgPHN5cy9ta2Rldi5oPgotKyNlbGlmIGRlZmluZWQoTUFKT1JfSU5fU1lTTUFDUk9TKQotKyNpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+Ci0rI2VuZGlmCi0rCi0gI2luY2x1ZGUgPGdydWIvdXRpbC9taXNjLmg+Ci0gI2luY2x1ZGUgPGdydWIvdXRpbC9sdm0uaD4KLSAjaW5jbHVkZSA8Z3J1Yi9jcnlwdG9kaXNrLmg+Ci1JbmRleDogZ3J1Yi0yLjAwL3V0aWwvcmFpZC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3J1Yi0yLjAwLm9yaWcvdXRpbC9yYWlkLmMKLSsrKyBncnViLTIuMDAvdXRpbC9yYWlkLmMKLUBAIC0yOSw2ICsyOSwxMiBAQAotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAKLSsjaWYgZGVmaW5lZChNQUpPUl9JTl9NS0RFVikKLSsjaW5jbHVkZSA8c3lzL21rZGV2Lmg+Ci0rI2VsaWYgZGVmaW5lZChNQUpPUl9JTl9TWVNNQUNST1MpCi0rI2luY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4KLSsjZW5kaWYKLSsKLSAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KLSAjaW5jbHVkZSA8bGludXgvbWFqb3IuaD4KLSAjaW5jbHVkZSA8bGludXgvcmFpZC9tZF9wLmg+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzLzAwMDEtZ3J1Yi1jb3JlLWdldHRleHQtZ2V0dGV4dC5jLW1haW5fY29udGV4dC1zZWNvbmRhcnlfYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvMDAwMS1ncnViLWNvcmUtZ2V0dGV4dC1nZXR0ZXh0LmMtbWFpbl9jb250ZXh0LXNlY29uZGFyeV9jLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZWMyMzYzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvMDAwMS1ncnViLWNvcmUtZ2V0dGV4dC1nZXR0ZXh0LmMtbWFpbl9jb250ZXh0LXNlY29uZGFyeV9jLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotRnJvbSBmMzBjNjkyYzFmOWVmMGU5M2JlZTJiNDA4YTI0YmFhMDE3ZjFjYTlkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogVmxhZGltaXIgU2VyYmluZW5rbyA8cGhjb2RlckBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDcgTm92IDIwMTMgMDE6MDE6NDcgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gCSogZ3J1Yi1jb3JlL2dldHRleHQvZ2V0dGV4dC5jIChtYWluX2NvbnRleHQpLAotIChzZWNvbmRhcnlfY29udGV4dCk6IAlEZWZpbmUgYWZ0ZXIgZGVmaW5pbmcgdHlwZSBhbmQgbm90IGJlZm9yZS4KLQotLS0tCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi0gQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgIHwgNSArKysrKwotIGdydWItY29yZS9nZXR0ZXh0L2dldHRleHQuYyB8IDQgKystLQotIDIgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2dldHRleHQvZ2V0dGV4dC5jIGIvZ3J1Yi1jb3JlL2dldHRleHQvZ2V0dGV4dC5jCi1pbmRleCBkZjczNTcwLi40ODgwY2VmIDEwMDY0NAotLS0tIGEvZ3J1Yi1jb3JlL2dldHRleHQvZ2V0dGV4dC5jCi0rKysgYi9ncnViLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LmMKLUBAIC0zNCw4ICszNCw2IEBAIEdSVUJfTU9EX0xJQ0VOU0UgKCJHUEx2MysiKTsKLSAgICBodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvYXV0b2NvbmYvbWFudWFsL2dldHRleHQvTU8tRmlsZXMuaHRtbCAuCi0gKi8KLSAKLS1zdGF0aWMgc3RydWN0IGdydWJfZ2V0dGV4dF9jb250ZXh0IG1haW5fY29udGV4dCwgc2Vjb25kYXJ5X2NvbnRleHQ7Ci0tCi0gc3RhdGljIGNvbnN0IGNoYXIgKigqZ3J1Yl9nZXR0ZXh0X29yaWdpbmFsKSAoY29uc3QgY2hhciAqcyk7Ci0gCi0gc3RydWN0IGdydWJfZ2V0dGV4dF9tc2cKLUBAIC02OSw2ICs2Nyw4IEBAIHN0cnVjdCBncnViX2dldHRleHRfY29udGV4dAotICAgc3RydWN0IGdydWJfZ2V0dGV4dF9tc2cgKmdydWJfZ2V0dGV4dF9tc2dfbGlzdDsKLSB9OwotIAotK3N0YXRpYyBzdHJ1Y3QgZ3J1Yl9nZXR0ZXh0X2NvbnRleHQgbWFpbl9jb250ZXh0LCBzZWNvbmRhcnlfY29udGV4dDsKLSsKLSAjZGVmaW5lIE1PX01BR0lDX05VTUJFUiAJCTB4OTUwNDEyZGUKLSAKLSBzdGF0aWMgZ3J1Yl9lcnJfdAotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzLzAwMDEtZ3J1Yi1jb3JlLWtlcm4tZWZpLW1tLmMtZ3J1Yl9lZmlfZmluaXNoX2Jvb3Rfc2VydmljZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvMDAwMS1ncnViLWNvcmUta2Vybi1lZmktbW0uYy1ncnViX2VmaV9maW5pc2hfYm9vdF9zZXJ2aWNlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYmYwOGUxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvMDAwMS1ncnViLWNvcmUta2Vybi1lZmktbW0uYy1ncnViX2VmaV9maW5pc2hfYm9vdF9zZXJ2aWNlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzkgKzAsMCBAQAotRnJvbSBiMjU4NzYxZDExOTQ2YjI4YTg0N2RmZjA3NjhjM2YyNzFlMTNkNjBhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQXdhaXMgQmVsYWwgPGF3YWlzX2JlbGFsQG1lbnRvci5jb20+Ci1EYXRlOiBUaHUsIDggRGVjIDIwMTYgMTg6MjE6MTIgKzA1MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzJdICogZ3J1Yi1jb3JlL2tlcm4vZWZpL21tLmMKLSAoZ3J1Yl9lZmlfZmluaXNoX2Jvb3Rfc2VydmljZXMpOiAgVHJ5IHRlcm1pbmF0aW5nIEVGSSBzZXJ2aWNlcyBzZXZlcmFsIHRpbWVzCi0gZHVlIHRvIHF1aXJrcyBpbiBzb21lICBpbXBsZW1lbnRhdGlvbnMuCi0KLVVwc3RyZWFtLXN0YXR1czogQmFja3BvcnQgWyBodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvY2dpdC9ncnViLmdpdC9wYXRjaC8/aWQ9ZTc1ZmRlZTQyMGE3YWQ5NWU5YTQ2NWM5Njk5YWRjMmUyZTk3MDQ0MCBdCi0KLVNpZ25lZC1vZmYtYnk6IEF3YWlzIEJlbGFsIDxhd2Fpc19iZWxhbEBtZW50b3IuY29tPgotLS0tCi0gZ3J1Yi1jb3JlL2tlcm4vZWZpL21tLmMgfCA0NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDMwIGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2tlcm4vZWZpL21tLmMgYi9ncnViLWNvcmUva2Vybi9lZmkvbW0uYwotaW5kZXggNDYxZGViMC4uYjAwZTBiYyAxMDA2NDQKLS0tLSBhL2dydWItY29yZS9rZXJuL2VmaS9tbS5jCi0rKysgYi9ncnViLWNvcmUva2Vybi9lZmkvbW0uYwotQEAgLTE2NywyNyArMTY3LDQxIEBAIGdydWJfZWZpX2ZpbmlzaF9ib290X3NlcnZpY2VzIChncnViX2VmaV91aW50bl90ICpvdXRidWZfc2l6ZSwgdm9pZCAqb3V0YnVmLAotIAkJCSAgIGFwcGxlLCBzaXplb2YgKGFwcGxlKSkgPT0gMCk7Ci0gI2VuZGlmCi0gCi0tICBpZiAoZ3J1Yl9lZmlfZ2V0X21lbW9yeV9tYXAgKCZmaW5pc2hfbW1hcF9zaXplLCBmaW5pc2hfbW1hcF9idWYsICZmaW5pc2hfa2V5LAotLQkJCSAgICAgICAmZmluaXNoX2Rlc2Nfc2l6ZSwgJmZpbmlzaF9kZXNjX3ZlcnNpb24pIDwgMCkKLS0gICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0lPLCAiY291bGRuJ3QgcmV0cmlldmUgbWVtb3J5IG1hcCIpOwotKyAgd2hpbGUgKDEpCi0rICAgIHsKLSsgICAgICBpZiAoZ3J1Yl9lZmlfZ2V0X21lbW9yeV9tYXAgKCZmaW5pc2hfbW1hcF9zaXplLCBmaW5pc2hfbW1hcF9idWYsICZmaW5pc2hfa2V5LAotKwkJCQkgICAmZmluaXNoX2Rlc2Nfc2l6ZSwgJmZpbmlzaF9kZXNjX3ZlcnNpb24pIDwgMCkKLSsJcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0lPLCAiY291bGRuJ3QgcmV0cmlldmUgbWVtb3J5IG1hcCIpOwotIAotLSAgaWYgKG91dGJ1ZiAmJiAqb3V0YnVmX3NpemUgPCBmaW5pc2hfbW1hcF9zaXplKQotLSAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfSU8sICJtZW1vcnkgbWFwIGJ1ZmZlciBpcyB0b28gc21hbGwiKTsKLSsgICAgICBpZiAob3V0YnVmICYmICpvdXRidWZfc2l6ZSA8IGZpbmlzaF9tbWFwX3NpemUpCi0rCXJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9JTywgIm1lbW9yeSBtYXAgYnVmZmVyIGlzIHRvbyBzbWFsbCIpOwotIAotLSAgZmluaXNoX21tYXBfYnVmID0gZ3J1Yl9tYWxsb2MgKGZpbmlzaF9tbWFwX3NpemUpOwotLSAgaWYgKCFmaW5pc2hfbW1hcF9idWYpCi0tICAgIHJldHVybiBncnViX2Vycm5vOwotKyAgICAgIGZpbmlzaF9tbWFwX2J1ZiA9IGdydWJfbWFsbG9jIChmaW5pc2hfbW1hcF9zaXplKTsKLSsgICAgICBpZiAoIWZpbmlzaF9tbWFwX2J1ZikKLSsJcmV0dXJuIGdydWJfZXJybm87Ci0gCi0tICBpZiAoZ3J1Yl9lZmlfZ2V0X21lbW9yeV9tYXAgKCZmaW5pc2hfbW1hcF9zaXplLCBmaW5pc2hfbW1hcF9idWYsICZmaW5pc2hfa2V5LAotLQkJCSAgICAgICAmZmluaXNoX2Rlc2Nfc2l6ZSwgJmZpbmlzaF9kZXNjX3ZlcnNpb24pIDw9IDApCi0tICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9JTywgImNvdWxkbid0IHJldHJpZXZlIG1lbW9yeSBtYXAiKTsKLSsgICAgICBpZiAoZ3J1Yl9lZmlfZ2V0X21lbW9yeV9tYXAgKCZmaW5pc2hfbW1hcF9zaXplLCBmaW5pc2hfbW1hcF9idWYsICZmaW5pc2hfa2V5LAotKwkJCQkgICAmZmluaXNoX2Rlc2Nfc2l6ZSwgJmZpbmlzaF9kZXNjX3ZlcnNpb24pIDw9IDApCi0rCXsKLSsJICBncnViX2ZyZWUgKGZpbmlzaF9tbWFwX2J1Zik7Ci0rCSAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0lPLCAiY291bGRuJ3QgcmV0cmlldmUgbWVtb3J5IG1hcCIpOwotKwl9Ci0gCi0tICBiID0gZ3J1Yl9lZmlfc3lzdGVtX3RhYmxlLT5ib290X3NlcnZpY2VzOwotLSAgc3RhdHVzID0gZWZpX2NhbGxfMiAoYi0+ZXhpdF9ib290X3NlcnZpY2VzLCBncnViX2VmaV9pbWFnZV9oYW5kbGUsCi0tCQkgICAgICAgZmluaXNoX2tleSk7Ci0tICBpZiAoc3RhdHVzICE9IEdSVUJfRUZJX1NVQ0NFU1MpCi0tICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9JTywgImNvdWxkbid0IHRlcm1pbmF0ZSBFRkkgc2VydmljZXMiKTsKLSsgICAgICBiID0gZ3J1Yl9lZmlfc3lzdGVtX3RhYmxlLT5ib290X3NlcnZpY2VzOwotKyAgICAgIHN0YXR1cyA9IGVmaV9jYWxsXzIgKGItPmV4aXRfYm9vdF9zZXJ2aWNlcywgZ3J1Yl9lZmlfaW1hZ2VfaGFuZGxlLAotKwkJCSAgIGZpbmlzaF9rZXkpOwotKyAgICAgIGlmIChzdGF0dXMgPT0gR1JVQl9FRklfU1VDQ0VTUykKLSsJYnJlYWs7Ci0gCi0rICAgICAgaWYgKHN0YXR1cyAhPSBHUlVCX0VGSV9JTlZBTElEX1BBUkFNRVRFUikKLSsJewotKwkgIGdydWJfZnJlZSAoZmluaXNoX21tYXBfYnVmKTsKLSsJICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfSU8sICJjb3VsZG4ndCB0ZXJtaW5hdGUgRUZJIHNlcnZpY2VzIik7Ci0rCX0KLSsKLSsgICAgICBncnViX2ZyZWUgKGZpbmlzaF9tbWFwX2J1Zik7Ci0rICAgICAgZ3J1Yl9wcmludGYgKCJUcnlpbmcgdG8gdGVybWluYXRlIEVGSSBzZXJ2aWNlcyBhZ2FpblxuIik7Ci0rICAgIH0KLSAgIGdydWJfZWZpX2lzX2ZpbmlzaGVkID0gMTsKLSAgIGlmIChvdXRidWZfc2l6ZSkKLSAgICAgKm91dGJ1Zl9zaXplID0gZmluaXNoX21tYXBfc2l6ZTsKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViLWdpdC8wMDAxLWdydWIuZC0xMF9saW51eC5pbi1hZGQtb2Utcy1rZXJuZWwtbmFtZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvMDAwMS1ncnViLmQtMTBfbGludXguaW4tYWRkLW9lLXMta2VybmVsLW5hbWUucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1Yi1naXQvMDAwMS1ncnViLmQtMTBfbGludXguaW4tYWRkLW9lLXMta2VybmVsLW5hbWUucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvMDAwMS1ncnViLmQtMTBfbGludXguaW4tYWRkLW9lLXMta2VybmVsLW5hbWUucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvMDAwMS1wYXJzZV9kaGNwX3ZlbmRvci1BZGQtbWlzc2luZy1jb25zdC1xdWFsaWZpZXJzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy8wMDAxLXBhcnNlX2RoY3BfdmVuZG9yLUFkZC1taXNzaW5nLWNvbnN0LXF1YWxpZmllcnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1NWUzZWIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy8wMDAxLXBhcnNlX2RoY3BfdmVuZG9yLUFkZC1taXNzaW5nLWNvbnN0LXF1YWxpZmllcnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLU9yaWdpbmFsIGNvbW1pdDogaHR0cDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2NnaXQvZ3J1Yi5naXQvY29tbWl0L2dydWItY29yZS9uZXQvYm9vdHAuYz9pZD1mMDZjMjE3MmMwYjMyMDUyZjIyZTM3NTIzNDQ1Y2Y4ZTdhZmZhZWEzCi0KLUZyb20gMTQ5ZDJhMTRmNDcyMzc3OGNlZDIzZjQzOTQ4NzIwMWNjYmYxYTJjOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDIzIEFwciAyMDE1IDA3OjAzOjM0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIHBhcnNlX2RoY3BfdmVuZG9yOiBBZGQgbWlzc2luZyBjb25zdCBxdWFsaWZpZXJzLgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ3J1Yi1jb3JlL25ldC9ib290cC5jIHwgNCArKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2dydWItY29yZS9uZXQvYm9vdHAuYyBiL2dydWItY29yZS9uZXQvYm9vdHAuYwotaW5kZXggYmMwN2Q1My4uNDQxMzFlZCAxMDA2NDQKLS0tLSBhL2dydWItY29yZS9uZXQvYm9vdHAuYwotKysrIGIvZ3J1Yi1jb3JlL25ldC9ib290cC5jCi1AQCAtNTIsOSArNTIsOSBAQCBzZXRfZW52X2xpbW5fcm8gKGNvbnN0IGNoYXIgKmludGVybmFtZSwgY29uc3QgY2hhciAqc3VmZml4LAotIH0KLSAKLSBzdGF0aWMgdm9pZAotLXBhcnNlX2RoY3BfdmVuZG9yIChjb25zdCBjaGFyICpuYW1lLCB2b2lkICp2ZW5kLCBpbnQgbGltaXQsIGludCAqbWFzaykKLStwYXJzZV9kaGNwX3ZlbmRvciAoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgdm9pZCAqdmVuZCwgaW50IGxpbWl0LCBpbnQgKm1hc2spCi0gewotLSAgZ3J1Yl91aW50OF90ICpwdHIsICpwdHIwOwotKyAgY29uc3QgZ3J1Yl91aW50OF90ICpwdHIsICpwdHIwOwotIAotICAgcHRyID0gcHRyMCA9IHZlbmQ7Ci0gCi0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvMDAwMi1ncnViLWNvcmUta2Vybi1lZmktbW0uYy1ncnViX2VmaV9nZXRfbWVtb3J5X21hcC1OZXZlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy8wMDAyLWdydWItY29yZS1rZXJuLWVmaS1tbS5jLWdydWJfZWZpX2dldF9tZW1vcnlfbWFwLU5ldmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlNzM1ZmYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy8wMDAyLWdydWItY29yZS1rZXJuLWVmaS1tbS5jLWdydWJfZWZpX2dldF9tZW1vcnlfbWFwLU5ldmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1Gcm9tIDYzMGRlNDVmM2Q1ZjlhMmRkYTdmYWQ5OWFjZDIxNDQ5YjhjNDExMWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBd2FpcyBCZWxhbCA8YXdhaXNfYmVsYWxAbWVudG9yLmNvbT4KLURhdGU6IFRodSwgOCBEZWMgMjAxNiAxODoyNzowMSArMDUwMAotU3ViamVjdDogW1BBVENIIDIvMl0gKiBncnViLWNvcmUva2Vybi9lZmkvbW0uYyAoZ3J1Yl9lZmlfZ2V0X21lbW9yeV9tYXApOgotIE5ldmVyICByZXR1cm4gYSBkZXNjcmlwdG9yX3NpemU9PTAgdG8gYXZvaWQgcG90ZW50aWFsIGRpdmlzaW9ucyBieSB6ZXJvLgotCi1VcHN0cmVhbS1zdGF0dXM6IEJhY2twb3J0IFsgaHR0cDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2NnaXQvZ3J1Yi5naXQvY29tbWl0Lz9pZD02OWFlZTQzZmE2NDYwMWNhYmY2ZWZhOTI3OWMxMGQ2OWI0NjY2NjJlIF0KLQotU2lnbmVkLW9mZi1ieTogQXdhaXMgQmVsYWwgPGF3YWlzX2JlbGFsQG1lbnRvci5jb20+Ci0tLS0KLSBncnViLWNvcmUva2Vybi9lZmkvbW0uYyB8IDUgKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9ncnViLWNvcmUva2Vybi9lZmkvbW0uYyBiL2dydWItY29yZS9rZXJuL2VmaS9tbS5jCi1pbmRleCBiMDBlMGJjLi45ZjFkMTk0IDEwMDY0NAotLS0tIGEvZ3J1Yi1jb3JlL2tlcm4vZWZpL21tLmMKLSsrKyBiL2dydWItY29yZS9rZXJuL2VmaS9tbS5jCi1AQCAtMjM1LDYgKzIzNSw3IEBAIGdydWJfZWZpX2dldF9tZW1vcnlfbWFwIChncnViX2VmaV91aW50bl90ICptZW1vcnlfbWFwX3NpemUsCi0gICBncnViX2VmaV9ib290X3NlcnZpY2VzX3QgKmI7Ci0gICBncnViX2VmaV91aW50bl90IGtleTsKLSAgIGdydWJfZWZpX3VpbnQzMl90IHZlcnNpb247Ci0rICBncnViX2VmaV91aW50bl90IHNpemU7Ci0gCi0gICBpZiAoZ3J1Yl9lZmlfaXNfZmluaXNoZWQpCi0gICAgIHsKLUBAIC0yNjQsMTAgKzI2NSwxNCBAQCBncnViX2VmaV9nZXRfbWVtb3J5X21hcCAoZ3J1Yl9lZmlfdWludG5fdCAqbWVtb3J5X21hcF9zaXplLAotICAgICBtYXBfa2V5ID0gJmtleTsKLSAgIGlmICghIGRlc2NyaXB0b3JfdmVyc2lvbikKLSAgICAgZGVzY3JpcHRvcl92ZXJzaW9uID0gJnZlcnNpb247Ci0rICBpZiAoISBkZXNjcmlwdG9yX3NpemUpCi0rICAgIGRlc2NyaXB0b3Jfc2l6ZSA9ICZzaXplOwotIAotICAgYiA9IGdydWJfZWZpX3N5c3RlbV90YWJsZS0+Ym9vdF9zZXJ2aWNlczsKLSAgIHN0YXR1cyA9IGVmaV9jYWxsXzUgKGItPmdldF9tZW1vcnlfbWFwLCBtZW1vcnlfbWFwX3NpemUsIG1lbW9yeV9tYXAsIG1hcF9rZXksCi0gCQkJICAgICAgZGVzY3JpcHRvcl9zaXplLCBkZXNjcmlwdG9yX3ZlcnNpb24pOwotKyAgaWYgKCpkZXNjcmlwdG9yX3NpemUgPT0gMCkKLSsgICAgKmRlc2NyaXB0b3Jfc2l6ZSA9IHNpemVvZiAoZ3J1Yl9lZmlfbWVtb3J5X2Rlc2NyaXB0b3JfdCk7Ci0gICBpZiAoc3RhdHVzID09IEdSVUJfRUZJX1NVQ0NFU1MpCi0gICAgIHJldHVybiAxOwotICAgZWxzZSBpZiAoc3RhdHVzID09IEdSVUJfRUZJX0JVRkZFUl9UT09fU01BTEwpCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvMDAwMi1pMzg2LXg4Nl82NC1wcGMtZml4LXN3aXRjaC1mYWxsdGhyb3VnaC1jYXNlcy13aXRoLUdDLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy8wMDAyLWkzODYteDg2XzY0LXBwYy1maXgtc3dpdGNoLWZhbGx0aHJvdWdoLWNhc2VzLXdpdGgtR0MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0ZjA0OGMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy8wMDAyLWkzODYteDg2XzY0LXBwYy1maXgtc3dpdGNoLWZhbGx0aHJvdWdoLWNhc2VzLXdpdGgtR0MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNDggKzAsMCBAQAotRnJvbSA0YmQ0YTg4NzI1NjA0NDcxZmRiZDg2MzE2YzkxOTY3YTdmNGRiYTVhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW5kcmVpIEJvcnplbmtvdiA8YXJ2aWRqYWFyQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgNCBBcHIgMjAxNyAxOToyMzo1NSArMDMwMAotU3ViamVjdDogW1BBVENIIDIvNF0gaTM4NiwgeDg2XzY0LCBwcGM6IGZpeCBzd2l0Y2ggZmFsbHRocm91Z2ggY2FzZXMgd2l0aCBHQ0M3Ci0KLUluIHV0aWwvZ2V0cm9vdCBhbmQgZWZpZGlzayBzbGlnaHRseSBtb2RpZnkgZXhpdHNpbmcgY29tbWVudCB0byBtb3N0bHkKLXJldGFpbiBpdCBidXQgc3RpbGwgbWFrZSBHQ0M3IGNvbXBsaWFudCB3aXRoIHJlc3BlY3QgdG8gZmFsbCB0aHJvdWdoCi1hbm5vdGF0aW9uLgotCi1JbiBncnViLWNvcmUvbGliL3h6ZW1iZWQveHpfZGVjX2x6bWEyLmMgaXQgYWRkcyBzYW1lIGNvbW1lbnRzIGFzCi11cHN0cmVhbS4KLQotSW4gZ3J1Yi1jb3JlL3Rlc3RzL3NldGptcF90ZXRzLmMgZGVjbGFyZSBmdW5jdGlvbnMgYXMgIm5vcmV0dXJuIiB0bwotc3VwcHJlc3MgR0NDNyB3YXJuaW5nLgotCi1JbiBncnViLWNvcmUvZ251bGliL3JlZ2V4ZWMuYyB1c2UgbmV3IF9fYXR0cmlidXRlX18sIGJlY2F1c2UgZXhpc3RpbmcKLWFubm90YXRpb24gaXMgbm90IHJlY29nbml6ZWQgYnkgR0NDNyBwYXJzZXIgKHdoaWNoIHJlcXVpcmVzIHRoYXQgY29tbWVudAotaW1tZWRpYXRlbHkgcHJlY2VkZXMgY2FzZSBzdGF0ZW1lbnQpLgotCi1PdGhlcndpc2UgYWRkIEZBTExUSFJPVUdIIGNvbW1lbnQuCi0KLUNsb3NlczogNTA1OTgKLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotIGdydWItY29yZS9jb21tYW5kcy9oZHBhcm0uYyAgICAgICAgICAgfCAxICsKLSBncnViLWNvcmUvY29tbWFuZHMvbmF0aXZlZGlzay5jICAgICAgIHwgMSArCi0gZ3J1Yi1jb3JlL2Rpc2svY3J5cHRvZGlzay5jICAgICAgICAgICB8IDEgKwotIGdydWItY29yZS9kaXNrL2VmaS9lZmlkaXNrLmMgICAgICAgICAgfCAyICstCi0gZ3J1Yi1jb3JlL2VmaWVtdS9tbS5jICAgICAgICAgICAgICAgICB8IDEgKwotIGdydWItY29yZS9nZGIvY3N0dWIuYyAgICAgICAgICAgICAgICAgfCAxICsKLSBncnViLWNvcmUvZ251bGliL3JlZ2V4ZWMuYyAgICAgICAgICAgIHwgMyArKysKLSBncnViLWNvcmUvbGliL3h6ZW1iZWQveHpfZGVjX2x6bWEyLmMgIHwgNCArKysrCi0gZ3J1Yi1jb3JlL2xpYi94emVtYmVkL3h6X2RlY19zdHJlYW0uYyB8IDYgKysrKysrCi0gZ3J1Yi1jb3JlL2xvYWRlci9pMzg2L2xpbnV4LmMgICAgICAgICB8IDMgKysrCi0gZ3J1Yi1jb3JlL3Rlc3RzL3NldGptcF90ZXN0LmMgICAgICAgICB8IDUgKysrKy0KLSBncnViLWNvcmUvdmlkZW8vaWVlZTEyNzUuYyAgICAgICAgICAgIHwgMSArCi0gZ3J1Yi1jb3JlL3ZpZGVvL3JlYWRlcnMvanBlZy5jICAgICAgICB8IDEgKwotIHV0aWwvZ2V0cm9vdC5jICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCi0gdXRpbC9ncnViLWluc3RhbGwuYyAgICAgICAgICAgICAgICAgICB8IDEgKwotIHV0aWwvZ3J1Yi1ta2ltYWdleHguYyAgICAgICAgICAgICAgICAgfCAxICsKLSB1dGlsL2dydWItbW91bnQuYyAgICAgICAgICAgICAgICAgICAgIHwgMSArCi0gMTcgZmlsZXMgY2hhbmdlZCwgMzIgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdydWItMi4wMC9ncnViLWNvcmUvY29tbWFuZHMvaGRwYXJtLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBncnViLTIuMDAub3JpZy9ncnViLWNvcmUvY29tbWFuZHMvaGRwYXJtLmMKLSsrKyBncnViLTIuMDAvZ3J1Yi1jb3JlL2NvbW1hbmRzL2hkcGFybS5jCi1AQCAtMzI4LDYgKzMyOCw3IEBAIGdydWJfY21kX2hkcGFybSAoZ3J1Yl9leHRjbWRfY29udGV4dF90IGMKLSAJICBhdGEgPSAoKHN0cnVjdCBncnViX3Njc2kgKikgZGlzay0+ZGF0YSktPmRhdGE7Ci0gCSAgYnJlYWs7Ci0gCX0KLSsgICAgICAvKiBGQUxMVEhST1VHSCAqLwotICAgICBkZWZhdWx0OgotICAgICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9JTywgIm5vdCBhbiBBVEEgZGV2aWNlIik7Ci0gICAgIH0KLUluZGV4OiBncnViLTIuMDAvZ3J1Yi1jb3JlL2Rpc2svY3J5cHRvZGlzay5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3J1Yi0yLjAwLm9yaWcvZ3J1Yi1jb3JlL2Rpc2svY3J5cHRvZGlzay5jCi0rKysgZ3J1Yi0yLjAwL2dydWItY29yZS9kaXNrL2NyeXB0b2Rpc2suYwotQEAgLTI2OCw2ICsyNjgsNyBAQCBncnViX2NyeXB0b2Rpc2tfZW5kZWNyeXB0IChzdHJ1Y3QgZ3J1Yl9jCi0gCSAgYnJlYWs7Ci0gCWNhc2UgR1JVQl9DUllQVE9ESVNLX01PREVfSVZfUExBSU42NDoKLSAJICBpdlsxXSA9IGdydWJfY3B1X3RvX2xlMzIgKHNlY3RvciA+PiAzMik7Ci0rCSAgLyogRkFMTFRIUk9VR0ggKi8KLSAJY2FzZSBHUlVCX0NSWVBUT0RJU0tfTU9ERV9JVl9QTEFJTjoKLSAJICBpdlswXSA9IGdydWJfY3B1X3RvX2xlMzIgKHNlY3RvciAmIDB4RkZGRkZGRkYpOwotIAkgIGJyZWFrOwotSW5kZXg6IGdydWItMi4wMC9ncnViLWNvcmUvZGlzay9lZmkvZWZpZGlzay5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3J1Yi0yLjAwLm9yaWcvZ3J1Yi1jb3JlL2Rpc2svZWZpL2VmaWRpc2suYwotKysrIGdydWItMi4wMC9ncnViLWNvcmUvZGlzay9lZmkvZWZpZGlzay5jCi1AQCAtMjYyLDcgKzI2Miw3IEBAIG5hbWVfZGV2aWNlcyAoc3RydWN0IGdydWJfZWZpZGlza19kYXRhICoKLSAJICAgIHsKLSAJICAgIGNhc2UgR1JVQl9FRklfSEFSRF9EUklWRV9ERVZJQ0VfUEFUSF9TVUJUWVBFOgotIAkgICAgICBpc19oYXJkX2RyaXZlID0gMTsKLS0JICAgICAgLyogRmFsbCB0aHJvdWdoIGJ5IGludGVudGlvbi4gICovCi0rCSAgICAgIC8qIEludGVudGlvbmFsbHkgZmFsbCB0aHJvdWdoLiAgKi8KLSAJICAgIGNhc2UgR1JVQl9FRklfQ0RST01fREVWSUNFX1BBVEhfU1VCVFlQRToKLSAJICAgICAgewotIAkJc3RydWN0IGdydWJfZWZpZGlza19kYXRhICpwYXJlbnQsICpwYXJlbnQyOwotSW5kZXg6IGdydWItMi4wMC9ncnViLWNvcmUvZWZpZW11L21tLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBncnViLTIuMDAub3JpZy9ncnViLWNvcmUvZWZpZW11L21tLmMKLSsrKyBncnViLTIuMDAvZ3J1Yi1jb3JlL2VmaWVtdS9tbS5jCi1AQCAtNDEwLDYgKzQxMCw3IEBAIGdydWJfZWZpZW11X21tYXBfZmlsbCAodm9pZCkKLSAJZGVmYXVsdDoKLSAJICBncnViX2RwcmludGYgKCJlZmllbXUiLAotIAkJCSJVbmtub3duIG1lbW9yeSB0eXBlICVkLiBBc3N1bWluZyB1bnVzYWJsZVxuIiwgdHlwZSk7Ci0rCS8qIEZBTExUSFJPVUdIICovCi0gCWNhc2UgR1JVQl9NRU1PUllfUkVTRVJWRUQ6Ci0gCSAgcmV0dXJuIGdydWJfZWZpZW11X2FkZF90b19tbWFwIChhZGRyLCBzaXplLAotIAkJCQkJICBHUlVCX0VGSV9VTlVTQUJMRV9NRU1PUlkpOwotSW5kZXg6IGdydWItMi4wMC9ncnViLWNvcmUvZ2RiL2NzdHViLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBncnViLTIuMDAub3JpZy9ncnViLWNvcmUvZ2RiL2NzdHViLmMKLSsrKyBncnViLTIuMDAvZ3J1Yi1jb3JlL2dkYi9jc3R1Yi5jCi1AQCAtMzM2LDYgKzMzNiw3IEBAIGdydWJfZ2RiX3RyYXAgKGludCB0cmFwX25vKQotIAkvKiBzQUEuLkFBOiBTdGVwIG9uZSBpbnN0cnVjdGlvbiBmcm9tIEFBLi5BQShvcHRpb25hbCkuICAqLwotIAljYXNlICdzJzoKLSAJICBzdGVwcGluZyA9IDE7Ci0rCSAgLyogRkFMTFRIUk9VR0ggKi8KLSAKLSAJLyogY0FBLi5BQTogQ29udGludWUgYXQgYWRkcmVzcyBBQS4uQUEob3B0aW9uYWwpLiAgKi8KLSAJY2FzZSAnYyc6Ci1JbmRleDogZ3J1Yi0yLjAwL2dydWItY29yZS9nbnVsaWIvcmVnZXhlYy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3J1Yi0yLjAwLm9yaWcvZ3J1Yi1jb3JlL2dudWxpYi9yZWdleGVjLmMKLSsrKyBncnViLTIuMDAvZ3J1Yi1jb3JlL2dudWxpYi9yZWdleGVjLmMKLUBAIC00MTA0LDYgKzQxMDQsOSBAQCBjaGVja19ub2RlX2FjY2VwdCAoY29uc3QgcmVfbWF0Y2hfY29udGV4Ci0gICAgIGNhc2UgT1BfVVRGOF9QRVJJT0Q6Ci0gICAgICAgaWYgKGNoID49IEFTQ0lJX0NIQVJTKQotICAgICAgICAgcmV0dXJuIGZhbHNlOwotKyNpZiBkZWZpbmVkIF9fR05VQ19fICYmIF9fR05VQ19fID49IDcKLSsgICAgICBfX2F0dHJpYnV0ZV9fICgoZmFsbHRocm91Z2gpKTsKLSsjZW5kaWYKLSAgICAgICAvKiBGQUxMVEhST1VHSCAqLwotICNlbmRpZgotICAgICBjYXNlIE9QX1BFUklPRDoKLUluZGV4OiBncnViLTIuMDAvZ3J1Yi1jb3JlL2xpYi94emVtYmVkL3h6X2RlY19sem1hMi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3J1Yi0yLjAwLm9yaWcvZ3J1Yi1jb3JlL2xpYi94emVtYmVkL3h6X2RlY19sem1hMi5jCi0rKysgZ3J1Yi0yLjAwL2dydWItY29yZS9saWIveHplbWJlZC94el9kZWNfbHptYTIuYwotQEAgLTEwNDIsNiArMTA0Miw4IEBAIGVudW0geHpfcmV0IHh6X2RlY19sem1hMl9ydW4oCi0gCi0gCQkJcy0+bHptYTIuc2VxdWVuY2UgPSBTRVFfTFpNQV9QUkVQQVJFOwotIAotKwkJLyogRmFsbCB0aHJvdWdoICovCi0rCi0gCQljYXNlIFNFUV9MWk1BX1BSRVBBUkU6Ci0gCQkJaWYgKHMtPmx6bWEyLmNvbXByZXNzZWQgPCBSQ19JTklUX0JZVEVTKQotIAkJCQlyZXR1cm4gWFpfREFUQV9FUlJPUjsKLUBAIC0xMDUyLDYgKzEwNTQsOCBAQCBlbnVtIHh6X3JldCB4el9kZWNfbHptYTJfcnVuKAotIAkJCXMtPmx6bWEyLmNvbXByZXNzZWQgLT0gUkNfSU5JVF9CWVRFUzsKLSAJCQlzLT5sem1hMi5zZXF1ZW5jZSA9IFNFUV9MWk1BX1JVTjsKLSAKLSsJCS8qIEZhbGwgdGhyb3VnaCAqLwotKwotIAkJY2FzZSBTRVFfTFpNQV9SVU46Ci0gCQkJLyoKLSAJCQkgKiBTZXQgZGljdGlvbmFyeSBsaW1pdCB0byBpbmRpY2F0ZSBob3cgbXVjaCB3ZSB3YW50Ci1JbmRleDogZ3J1Yi0yLjAwL2dydWItY29yZS9saWIveHplbWJlZC94el9kZWNfc3RyZWFtLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBncnViLTIuMDAub3JpZy9ncnViLWNvcmUvbGliL3h6ZW1iZWQveHpfZGVjX3N0cmVhbS5jCi0rKysgZ3J1Yi0yLjAwL2dydWItY29yZS9saWIveHplbWJlZC94el9kZWNfc3RyZWFtLmMKLUBAIC03NDksNiArNzQ5LDcgQEAgc3RhdGljIGVudW0geHpfcmV0IGRlY19tYWluKHN0cnVjdCB4el9kZQotIAotIAkJCXMtPnNlcXVlbmNlID0gU0VRX0JMT0NLX1NUQVJUOwotIAotKwkJCS8qIEZBTExUSFJPVUdIICovCi0gCQljYXNlIFNFUV9CTE9DS19TVEFSVDoKLSAJCQkvKiBXZSBuZWVkIG9uZSBieXRlIG9mIGlucHV0IHRvIGNvbnRpbnVlLiAqLwotIAkJCWlmIChiLT5pbl9wb3MgPT0gYi0+aW5fc2l6ZSkKLUBAIC03NzIsNiArNzczLDcgQEAgc3RhdGljIGVudW0geHpfcmV0IGRlY19tYWluKHN0cnVjdCB4el9kZQotIAkJCXMtPnRlbXAucG9zID0gMDsKLSAJCQlzLT5zZXF1ZW5jZSA9IFNFUV9CTE9DS19IRUFERVI7Ci0gCi0rCQkJLyogRkFMTFRIUk9VR0ggKi8KLSAJCWNhc2UgU0VRX0JMT0NLX0hFQURFUjoKLSAJCQlpZiAoIWZpbGxfdGVtcChzLCBiKSkKLSAJCQkJcmV0dXJuIFhaX09LOwotQEAgLTc4Miw2ICs3ODQsNyBAQCBzdGF0aWMgZW51bSB4el9yZXQgZGVjX21haW4oc3RydWN0IHh6X2RlCi0gCi0gCQkJcy0+c2VxdWVuY2UgPSBTRVFfQkxPQ0tfVU5DT01QUkVTUzsKLSAKLSsJCQkvKiBGQUxMVEhST1VHSCAqLwotIAkJY2FzZSBTRVFfQkxPQ0tfVU5DT01QUkVTUzoKLSAJCQlyZXQgPSBkZWNfYmxvY2socywgYik7Ci0gCQkJaWYgKHJldCAhPSBYWl9TVFJFQU1fRU5EKQotQEAgLTgwOSw2ICs4MTIsNyBAQCBzdGF0aWMgZW51bSB4el9yZXQgZGVjX21haW4oc3RydWN0IHh6X2RlCi0gCi0gCQkJcy0+c2VxdWVuY2UgPSBTRVFfQkxPQ0tfQ0hFQ0s7Ci0gCi0rCQkJLyogRkFMTFRIUk9VR0ggKi8KLSAJCWNhc2UgU0VRX0JMT0NLX0NIRUNLOgotIAkJCXJldCA9IGhhc2hfdmFsaWRhdGUocywgYiwgMCk7Ci0gCQkJaWYgKHJldCAhPSBYWl9TVFJFQU1fRU5EKQotQEAgLTg2Myw2ICs4NjcsNyBAQCBzdGF0aWMgZW51bSB4el9yZXQgZGVjX21haW4oc3RydWN0IHh6X2RlCi0gCi0gCQkJcy0+c2VxdWVuY2UgPSBTRVFfSU5ERVhfQ1JDMzI7Ci0gCi0rCQkJLyogRkFMTFRIUk9VR0ggKi8KLSAJCWNhc2UgU0VRX0lOREVYX0NSQzMyOgotIAkJCXJldCA9IGhhc2hfdmFsaWRhdGUocywgYiwgMSk7Ci0gCQkJaWYgKHJldCAhPSBYWl9TVFJFQU1fRU5EKQotQEAgLTg3MSw2ICs4NzYsNyBAQCBzdGF0aWMgZW51bSB4el9yZXQgZGVjX21haW4oc3RydWN0IHh6X2RlCi0gCQkJcy0+dGVtcC5zaXplID0gU1RSRUFNX0hFQURFUl9TSVpFOwotIAkJCXMtPnNlcXVlbmNlID0gU0VRX1NUUkVBTV9GT09URVI7Ci0gCi0rCQkJLyogRkFMTFRIUk9VR0ggKi8KLSAJCWNhc2UgU0VRX1NUUkVBTV9GT09URVI6Ci0gCQkJaWYgKCFmaWxsX3RlbXAocywgYikpCi0gCQkJCXJldHVybiBYWl9PSzsKLUluZGV4OiBncnViLTIuMDAvZ3J1Yi1jb3JlL2xvYWRlci9pMzg2L2xpbnV4LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBncnViLTIuMDAub3JpZy9ncnViLWNvcmUvbG9hZGVyL2kzODYvbGludXguYwotKysrIGdydWItMi4wMC9ncnViLWNvcmUvbG9hZGVyL2kzODYvbGludXguYwotQEAgLTk3NywxMCArOTc3LDEzIEBAIGdydWJfY21kX2xpbnV4IChncnViX2NvbW1hbmRfdCBjbWQgX19hdHQKLSAJICAgICAgewotIAkgICAgICBjYXNlICdnJzoKLSAJCXNoaWZ0ICs9IDEwOwotKwkJLyogRkFMTFRIUk9VR0ggKi8KLSAJICAgICAgY2FzZSAnbSc6Ci0gCQlzaGlmdCArPSAxMDsKLSsJCS8qIEZBTExUSFJPVUdIICovCi0gCSAgICAgIGNhc2UgJ2snOgotIAkJc2hpZnQgKz0gMTA7Ci0rCQkvKiBGQUxMVEhST1VHSCAqLwotIAkgICAgICBkZWZhdWx0OgotIAkJYnJlYWs7Ci0gCSAgICAgIH0KLUluZGV4OiBncnViLTIuMDAvZ3J1Yi1jb3JlL3ZpZGVvL3JlYWRlcnMvanBlZy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3J1Yi0yLjAwLm9yaWcvZ3J1Yi1jb3JlL3ZpZGVvL3JlYWRlcnMvanBlZy5jCi0rKysgZ3J1Yi0yLjAwL2dydWItY29yZS92aWRlby9yZWFkZXJzL2pwZWcuYwotQEAgLTcwMSw2ICs3MDEsNyBAQCBncnViX2pwZWdfZGVjb2RlX2pwZWcgKHN0cnVjdCBncnViX2pwZWdfCi0gCWNhc2UgSlBFR19NQVJLRVJfU09TOgkvKiBTdGFydCBPZiBTY2FuLiAgKi8KLSAJICBpZiAoZ3J1Yl9qcGVnX2RlY29kZV9zb3MgKGRhdGEpKQotIAkgICAgYnJlYWs7Ci0rCSAgLyogRkFMTFRIUk9VR0ggKi8KLSAJY2FzZSBKUEVHX01BUktFUl9SU1QwOgkvKiBSZXN0YXJ0LiAgKi8KLSAJY2FzZSBKUEVHX01BUktFUl9SU1QxOgotIAljYXNlIEpQRUdfTUFSS0VSX1JTVDI6Ci1JbmRleDogZ3J1Yi0yLjAwL3V0aWwvZ3J1Yi1ta2ltYWdleHguYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdydWItMi4wMC5vcmlnL3V0aWwvZ3J1Yi1ta2ltYWdleHguYwotKysrIGdydWItMi4wMC91dGlsL2dydWItbWtpbWFnZXh4LmMKLUBAIC00ODUsNiArNDg1LDcgQEAgU1VGRklYIChyZWxvY2F0ZV9hZGRyZXNzZXMpIChFbGZfRWhkciAqZQotIAkJCQkJCQkJCSAgICArIHN5bS0+c3RfdmFsdWUKLSAJCQkJCQkJCQkgICAgLSBpbWFnZV90YXJnZXQtPnZhZGRyX29mZnNldCkpOwotIAkJICB9Ci0rCQkvKiBGQUxMVEhST1VHSCAqLwotIAkJY2FzZSBSX0lBNjRfTFRPRkZfRlBUUjIyOgotIAkJICAqZ3BwdHIgPSBncnViX2hvc3RfdG9fdGFyZ2V0NjQgKGFkZGVuZCArIHN5bV9hZGRyKTsKLSAJCSAgYWRkX3ZhbHVlX3RvX3Nsb3RfMjEgKChncnViX2FkZHJfdCkgdGFyZ2V0LAotSW5kZXg6IGdydWItMi4wMC91dGlsL2dydWItbW91bnQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdydWItMi4wMC5vcmlnL3V0aWwvZ3J1Yi1tb3VudC5jCi0rKysgZ3J1Yi0yLjAwL3V0aWwvZ3J1Yi1tb3VudC5jCi1AQCAtNDg3LDYgKzQ4Nyw3IEBAIGFyZ3BfcGFyc2VyIChpbnQga2V5LCBjaGFyICphcmcsIHN0cnVjdAotICAgICAgIGlmIChhcmdbMF0gIT0gJy0nKQotIAlicmVhazsKLSAKLSsgICAgLyogRkFMTFRIUk9VR0ggKi8KLSAgICAgZGVmYXVsdDoKLSAgICAgICBpZiAoIWFyZykKLSAJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzLzAwMDMtQWRkLWdudWxpYi1maXgtZ2NjNy1mYWxsdGhyb3VnaC5kaWZmLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy8wMDAzLUFkZC1nbnVsaWItZml4LWdjYzctZmFsbHRocm91Z2guZGlmZi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmNmYmY1Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzLzAwMDMtQWRkLWdudWxpYi1maXgtZ2NjNy1mYWxsdGhyb3VnaC5kaWZmLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotRnJvbSAwMDdmMGI0MDdmNzIzMTRlYzgzMmQ3N2UxNWI4M2VhNDBiMTYwMDM3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW5kcmVpIEJvcnplbmtvdiA8YXJ2aWRqYWFyQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgNCBBcHIgMjAxNyAxOTozNzo0NyArMDMwMAotU3ViamVjdDogW1BBVENIIDMvNF0gQWRkIGdudWxpYi1maXgtZ2NjNy1mYWxsdGhyb3VnaC5kaWZmCi0KLUFzIGxvbmcgYXMgdGhlIGNvZGUgaXMgbm90IHVwc3RyZWFtLCBhZGQgaXQgYXMgZXhwbGljaXQgcGF0Y2ggZm9yIHRoZQotY2FzZSBvZiBnbnVsaWIgcmVmcmVzaC4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotIGdydWItY29yZS9nbnVsaWItZml4LWdjYzctZmFsbHRocm91Z2guZGlmZiB8IDE0ICsrKysrKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKykKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ3J1Yi1jb3JlL2dudWxpYi1maXgtZ2NjNy1mYWxsdGhyb3VnaC5kaWZmCi0KLWRpZmYgLS1naXQgYS9ncnViLWNvcmUvZ251bGliLWZpeC1nY2M3LWZhbGx0aHJvdWdoLmRpZmYgYi9ncnViLWNvcmUvZ251bGliLWZpeC1nY2M3LWZhbGx0aHJvdWdoLmRpZmYKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi45ODAyZTJkCi0tLS0gL2Rldi9udWxsCi0rKysgYi9ncnViLWNvcmUvZ251bGliLWZpeC1nY2M3LWZhbGx0aHJvdWdoLmRpZmYKLUBAIC0wLDAgKzEsMTQgQEAKLStkaWZmIC0tZ2l0IGdydWItY29yZS9nbnVsaWIvcmVnZXhlYy5jIGdydWItY29yZS9nbnVsaWIvcmVnZXhlYy5jCi0raW5kZXggZjYzMmNkNC4uYTc3NzZmMCAxMDA2NDQKLSstLS0gZ3J1Yi1jb3JlL2dudWxpYi9yZWdleGVjLmMKLSsrKysgZ3J1Yi1jb3JlL2dudWxpYi9yZWdleGVjLmMKLStAQCAtNDA5OSw2ICs0MDk5LDkgQEAgY2hlY2tfbm9kZV9hY2NlcHQgKGNvbnN0IHJlX21hdGNoX2NvbnRleHRfdCAqbWN0eCwgY29uc3QgcmVfdG9rZW5fdCAqbm9kZSwKLSsgICAgIGNhc2UgT1BfVVRGOF9QRVJJT0Q6Ci0rICAgICAgIGlmIChjaCA+PSBBU0NJSV9DSEFSUykKLSsgICAgICAgICByZXR1cm4gZmFsc2U7Ci0rKyNpZiBkZWZpbmVkIF9fR05VQ19fICYmIF9fR05VQ19fID49IDcKLSsrICAgICAgX19hdHRyaWJ1dGVfXyAoKGZhbGx0aHJvdWdoKSk7Ci0rKyNlbmRpZgotKyAgICAgICAvKiBGQUxMVEhST1VHSCAqLwotKyAjZW5kaWYKLSsgICAgIGNhc2UgT1BfUEVSSU9EOgotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzLzAwMDQtRml4LXJlbWFpbmluZy1jYXNlcy1vZi1nY2MtNy1mYWxsdGhyb3VnaC13YXJuaW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy8wMDA0LUZpeC1yZW1haW5pbmctY2FzZXMtb2YtZ2NjLTctZmFsbHRocm91Z2gtd2FybmluZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzhhNzBhMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzLzAwMDQtRml4LXJlbWFpbmluZy1jYXNlcy1vZi1nY2MtNy1mYWxsdGhyb3VnaC13YXJuaW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTc1ICswLDAgQEAKLUZyb20gZDQ1NDUwOWJiODY2ZDRlYWVmYmI1NThkOTRkZDBlZjAyMjg4MzBlYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFZsYWRpbWlyIFNlcmJpbmVua28gPHBoY29kZXJAZ21haWwuY29tPgotRGF0ZTogV2VkLCAxMiBBcHIgMjAxNyAwMTo0MjozOCArMDAwMAotU3ViamVjdDogW1BBVENIIDQvNF0gRml4IHJlbWFpbmluZyBjYXNlcyBvZiBnY2MgNyBmYWxsdGhyb3VnaCB3YXJuaW5nLgotCi1UaGV5IGFyZSBhbGwgaW50ZW5kZWQsIHNvIGp1c3QgYWRkIHRoZSByZWxldmFudCBjb21tZW50LgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi0gZ3J1Yi1jb3JlL2tlcm4vaWE2NC9kbC5jICAgICAgICAgICAgICAgICAgICAgfCAxICsKLSBncnViLWNvcmUva2Vybi9taXBzL2RsLmMgICAgICAgICAgICAgICAgICAgICB8IDEgKwotIGdydWItY29yZS9rZXJuL3NwYXJjNjQvZGwuYyAgICAgICAgICAgICAgICAgIHwgMSArCi0gZ3J1Yi1jb3JlL2xvYWRlci9pMzg2L2NvcmVib290L2NoYWlubG9hZGVyLmMgfCAxICsKLSA0IGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQotCi1JbmRleDogZ3J1Yi0yLjAwL2dydWItY29yZS9rZXJuL2lhNjQvZGwuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdydWItMi4wMC5vcmlnL2dydWItY29yZS9rZXJuL2lhNjQvZGwuYwotKysrIGdydWItMi4wMC9ncnViLWNvcmUva2Vybi9pYTY0L2RsLmMKLUBAIC0yNTcsNiArMjU3LDcgQEAgZ3J1Yl9hcmNoX2RsX3JlbG9jYXRlX3N5bWJvbHMgKGdydWJfZGxfdAotIAkJICBjYXNlIFJfSUE2NF9MVE9GRjIyOgotIAkJICAgIGlmIChFTEZfU1RfVFlQRSAoc3ltLT5zdF9pbmZvKSA9PSBTVFRfRlVOQykKLSAJCSAgICAgIHZhbHVlID0gKihncnViX3VpbnQ2NF90ICopIHN5bS0+c3RfdmFsdWUgKyByZWwtPnJfYWRkZW5kOwotKwkJICAvKiBGYWxsdGhyb3VnaC4gICovCi0gCQkgIGNhc2UgUl9JQTY0X0xUT0ZGX0ZQVFIyMjoKLSAJCSAgICAqZ3BwdHIgPSB2YWx1ZTsKLSAJCSAgICBhZGRfdmFsdWVfdG9fc2xvdF8yMSAoYWRkciwgKGdydWJfYWRkcl90KSBncHB0ciAtIChncnViX2FkZHJfdCkgZ3ApOwotSW5kZXg6IGdydWItMi4wMC9ncnViLWNvcmUvZGlzay9kaXNrZmlsdGVyLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBncnViLTIuMDAub3JpZy9ncnViLWNvcmUvZGlzay9kaXNrZmlsdGVyLmMKLSsrKyBncnViLTIuMDAvZ3J1Yi1jb3JlL2Rpc2svZGlza2ZpbHRlci5jCi1AQCAtNzEsMTAgKzcxLDEyIEBAIGlzX2x2X3JlYWRhYmxlIChzdHJ1Y3QgZ3J1Yl9kaXNrZmlsdGVyX2wKLSAJY2FzZSBHUlVCX0RJU0tGSUxURVJfUkFJRDY6Ci0gCSAgaWYgKCFlYXNpbHkpCi0gCSAgICBuZWVkLS07Ci0rCSAgLyogRmFsbHRocm91Z2guICAqLwotIAljYXNlIEdSVUJfRElTS0ZJTFRFUl9SQUlENDoKLSAJY2FzZSBHUlVCX0RJU0tGSUxURVJfUkFJRDU6Ci0gCSAgaWYgKCFlYXNpbHkpCi0gCSAgICBuZWVkLS07Ci0rCSAgLyogRmFsbHRocm91Z2guICAqLwotIAljYXNlIEdSVUJfRElTS0ZJTFRFUl9TVFJJUEVEOgotIAkgIGJyZWFrOwotIAotQEAgLTUwNyw2ICs1MDksNyBAQCByZWFkX3NlZ21lbnQgKHN0cnVjdCBncnViX2Rpc2tmaWx0ZXJfc2VnCi0gICAgICAgaWYgKHNlZy0+bm9kZV9jb3VudCA9PSAxKQotIAlyZXR1cm4gZ3J1Yl9kaXNrZmlsdGVyX3JlYWRfbm9kZSAoJnNlZy0+bm9kZXNbMF0sCi0gCQkJCQkgIHNlY3Rvciwgc2l6ZSwgYnVmKTsKLSsgICAgLyogRmFsbHRocm91Z2guICAqLwotICAgICBjYXNlIEdSVUJfRElTS0ZJTFRFUl9NSVJST1I6Ci0gICAgIGNhc2UgR1JVQl9ESVNLRklMVEVSX1JBSUQxMDoKLSAgICAgICB7Ci1JbmRleDogZ3J1Yi0yLjAwL2dydWItY29yZS9mb250L2ZvbnQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdydWItMi4wMC5vcmlnL2dydWItY29yZS9mb250L2ZvbnQuYwotKysrIGdydWItMi4wMC9ncnViLWNvcmUvZm9udC9mb250LmMKLUBAIC0xMjk3LDYgKzEyOTcsNyBAQCBibGl0X2NvbWIgKGNvbnN0IHN0cnVjdCBncnViX3VuaWNvZGVfZ2x5Ci0gCSAgICAtIGdydWJfZm9udF9nZXRfeGhlaWdodCAoY29tYmluaW5nX2dseXBoc1tpXS0+Zm9udCkgLSAxOwotIAkgIGlmIChzcGFjZSA8PSAwKQotIAkgICAgc3BhY2UgPSAxICsgKGdydWJfZm9udF9nZXRfeGhlaWdodCAobWFpbl9nbHlwaC0+Zm9udCkpIC8gODsKLSsgICAgICAgIC8qIEZhbGx0aHJvdWdoLiAgKi8KLSAKLSAJY2FzZSBHUlVCX1VOSUNPREVfU1RBQ0tfQVRUQUNIRURfQUJPVkU6Ci0gCSAgZG9fYmxpdCAoY29tYmluaW5nX2dseXBoc1tpXSwgdGFyZ2V0eCwKLUBAIC0xMzM4LDYgKzEzMzksNyBAQCBibGl0X2NvbWIgKGNvbnN0IHN0cnVjdCBncnViX3VuaWNvZGVfZ2x5Ci0gCQkgICAgKyBjb21iaW5pbmdfZ2x5cGhzW2ldLT5oZWlnaHQpOwotIAkgIGlmIChzcGFjZSA8PSAwKQotIAkgICAgc3BhY2UgPSAxICsgKGdydWJfZm9udF9nZXRfeGhlaWdodCAobWFpbl9nbHlwaC0+Zm9udCkpIC8gODsKLSsgICAgICAgIC8qIEZhbGx0aHJvdWdoLiAgKi8KLSAKLSAJY2FzZSBHUlVCX1VOSUNPREVfU1RBQ0tfQVRUQUNIRURfQkVMT1c6Ci0gCSAgZG9fYmxpdCAoY29tYmluaW5nX2dseXBoc1tpXSwgdGFyZ2V0eCwgLShib3VuZHMueSAtIHNwYWNlKSk7Ci1JbmRleDogZ3J1Yi0yLjAwL2dydWItY29yZS9mcy91ZGYuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdydWItMi4wMC5vcmlnL2dydWItY29yZS9mcy91ZGYuYwotKysrIGdydWItMi4wMC9ncnViLWNvcmUvZnMvdWRmLmMKLUBAIC05NzAsNiArOTcwLDcgQEAgZ3J1Yl91ZGZfcmVhZF9zeW1saW5rIChncnViX2ZzaGVscF9ub2RlXwotIAljYXNlIDE6Ci0gCSAgaWYgKHB0clsxXSkKLSAJICAgIGdvdG8gZmFpbDsKLSsJICBicmVhazsKLSAJY2FzZSAyOgotIAkgIC8qIGluIDQgYnl0ZXMuIG91dDogMSBieXRlLiAgKi8KLSAJICBvcHRyID0gb3V0OwotSW5kZXg6IGdydWItMi4wMC9ncnViLWNvcmUvbGliL2xlZ2FjeV9wYXJzZS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3J1Yi0yLjAwLm9yaWcvZ3J1Yi1jb3JlL2xpYi9sZWdhY3lfcGFyc2UuYwotKysrIGdydWItMi4wMC9ncnViLWNvcmUvbGliL2xlZ2FjeV9wYXJzZS5jCi1AQCAtNjI2LDYgKzYyNiw3IEBAIGdydWJfbGVnYWN5X3BhcnNlIChjb25zdCBjaGFyICpidWYsIGNoYXIKLSAJICB7Ci0gCSAgY2FzZSBUWVBFX0ZJTEVfTk9fQ09OU1VNRToKLSAJICAgIGhvbGRfYXJnID0gMTsKLSsJICAvKiBGYWxsdGhyb3VnaC4gICovCi0gCSAgY2FzZSBUWVBFX1BBUlRJVElPTjoKLSAJICBjYXNlIFRZUEVfRklMRToKLSAJICAgIGFyZ3NbaV0gPSBhZGp1c3RfZmlsZSAoY3VyYXJnLCBjdXJhcmdsZW4pOwotSW5kZXg6IGdydWItMi4wMC9ncnViLWNvcmUvbGliL2xpYmdjcnlwdC1ncnViL2NpcGhlci9yaWpuZGFlbC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3J1Yi0yLjAwLm9yaWcvZ3J1Yi1jb3JlL2xpYi9saWJnY3J5cHQtZ3J1Yi9jaXBoZXIvcmlqbmRhZWwuYwotKysrIGdydWItMi4wMC9ncnViLWNvcmUvbGliL2xpYmdjcnlwdC1ncnViL2NpcGhlci9yaWpuZGFlbC5jCi1AQCAtOTYsNyArOTYsOCBAQCBkb19zZXRrZXkgKFJJSk5EQUVMX2NvbnRleHQgKmN0eCwgY29uc3QKLSAgIHN0YXRpYyBpbnQgaW5pdGlhbGl6ZWQgPSAwOwotICAgc3RhdGljIGNvbnN0IGNoYXIgKnNlbGZ0ZXN0X2ZhaWxlZD0wOwotICAgaW50IFJPVU5EUzsKLS0gIGludCBpLGosIHIsIHQsIHJjb25wb2ludGVyID0gMDsKLSsgIHVuc2lnbmVkIGludCBpLCB0LCByY29ucG9pbnRlciA9IDA7Ci0rICBpbnQgaiwgcjsKLSAgIGludCBLQzsKLSAgIHVuaW9uCi0gICB7Ci1JbmRleDogZ3J1Yi0yLjAwL2dydWItY29yZS9tbWFwL2VmaS9tbWFwLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBncnViLTIuMDAub3JpZy9ncnViLWNvcmUvbW1hcC9lZmkvbW1hcC5jCi0rKysgZ3J1Yi0yLjAwL2dydWItY29yZS9tbWFwL2VmaS9tbWFwLmMKLUBAIC03Miw2ICs3Miw3IEBAIGdydWJfZWZpX21tYXBfaXRlcmF0ZSAoZ3J1Yl9tZW1vcnlfaG9va18KLSAJCSAgICBHUlVCX01FTU9SWV9BVkFJTEFCTEUpOwotIAkgICAgICBicmVhazsKLSAJICAgIH0KLSsJICAvKiBGYWxsdGhyb3VnaC4gICovCi0gCWNhc2UgR1JVQl9FRklfUlVOVElNRV9TRVJWSUNFU19DT0RFOgotIAkgIGhvb2sgKGRlc2MtPnBoeXNpY2FsX3N0YXJ0LCBkZXNjLT5udW1fcGFnZXMgKiA0MDk2LAotIAkJR1JVQl9NRU1PUllfQ09ERSk7Ci1AQCAtODYsNiArODcsNyBAQCBncnViX2VmaV9tbWFwX2l0ZXJhdGUgKGdydWJfbWVtb3J5X2hvb2tfCi0gCSAgZ3J1Yl9wcmludGYgKCJVbmtub3duIG1lbW9yeSB0eXBlICVkLCBjb25zaWRlcmluZyByZXNlcnZlZFxuIiwKLSAJCSAgICAgICBkZXNjLT50eXBlKTsKLSAKLSsJICAvKiBGYWxsdGhyb3VnaC4gICovCi0gCWNhc2UgR1JVQl9FRklfQk9PVF9TRVJWSUNFU19EQVRBOgotIAkgIGlmICghYXZvaWRfZWZpX2Jvb3Rfc2VydmljZXMpCi0gCSAgICB7Ci1AQCAtOTMsNiArOTUsNyBAQCBncnViX2VmaV9tbWFwX2l0ZXJhdGUgKGdydWJfbWVtb3J5X2hvb2tfCi0gCQkgICAgR1JVQl9NRU1PUllfQVZBSUxBQkxFKTsKLSAJICAgICAgYnJlYWs7Ci0gCSAgICB9Ci0rCSAgLyogRmFsbHRocm91Z2guICAqLwotIAljYXNlIEdSVUJfRUZJX1JFU0VSVkVEX01FTU9SWV9UWVBFOgotIAljYXNlIEdSVUJfRUZJX1JVTlRJTUVfU0VSVklDRVNfREFUQToKLSAJY2FzZSBHUlVCX0VGSV9NRU1PUllfTUFQUEVEX0lPOgotSW5kZXg6IGdydWItMi4wMC9ncnViLWNvcmUvbm9ybWFsL2NoYXJzZXQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdydWItMi4wMC5vcmlnL2dydWItY29yZS9ub3JtYWwvY2hhcnNldC5jCi0rKysgZ3J1Yi0yLjAwL2dydWItY29yZS9ub3JtYWwvY2hhcnNldC5jCi1AQCAtODU4LDYgKzg1OCw3IEBAIGdydWJfYmlkaV9saW5lX2xvZ2ljYWxfdG9fdmlzdWFsIChjb25zdAotIAkgIGNhc2UgR1JVQl9CSURJX1RZUEVfUjoKLSAJICBjYXNlIEdSVUJfQklESV9UWVBFX0FMOgotIAkgICAgYmlkaV9uZWVkZWQgPSAxOwotKwkgIC8qIEZhbGx0aHJvdWdoLiAgKi8KLSAJICBkZWZhdWx0OgotIAkgICAgewotIAkgICAgICBpZiAoam9pbl9zdGF0ZSA9PSBKT0lOX0ZPUkNFKQotSW5kZXg6IGdydWItMi4wMC9ncnViLWNvcmUvdmlkZW8vYm9jaHMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdydWItMi4wMC5vcmlnL2dydWItY29yZS92aWRlby9ib2Nocy5jCi0rKysgZ3J1Yi0yLjAwL2dydWItY29yZS92aWRlby9ib2Nocy5jCi1AQCAtMzUxLDYgKzM1MSw3IEBAIGdydWJfdmlkZW9fYm9jaHNfc2V0dXAgKHVuc2lnbmVkIGludCB3aWQKLSAgICAgY2FzZSAzMjoKLSAgICAgICBmcmFtZWJ1ZmZlci5tb2RlX2luZm8ucmVzZXJ2ZWRfbWFza19zaXplID0gODsKLSAgICAgICBmcmFtZWJ1ZmZlci5tb2RlX2luZm8ucmVzZXJ2ZWRfZmllbGRfcG9zID0gMjQ7Ci0rICAgICAgLyogRmFsbHRocm91Z2guICAqLwotIAotICAgICBjYXNlIDI0OgotICAgICAgIGZyYW1lYnVmZmVyLm1vZGVfaW5mby5yZWRfbWFza19zaXplID0gODsKLUluZGV4OiBncnViLTIuMDAvZ3J1Yi1jb3JlL3ZpZGVvL2NpcnJ1cy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3J1Yi0yLjAwLm9yaWcvZ3J1Yi1jb3JlL3ZpZGVvL2NpcnJ1cy5jCi0rKysgZ3J1Yi0yLjAwL2dydWItY29yZS92aWRlby9jaXJydXMuYwotQEAgLTQzMSw2ICs0MzEsNyBAQCBncnViX3ZpZGVvX2NpcnJ1c19zZXR1cCAodW5zaWduZWQgaW50IHdpCi0gICAgIGNhc2UgMzI6Ci0gICAgICAgZnJhbWVidWZmZXIubW9kZV9pbmZvLnJlc2VydmVkX21hc2tfc2l6ZSA9IDg7Ci0gICAgICAgZnJhbWVidWZmZXIubW9kZV9pbmZvLnJlc2VydmVkX2ZpZWxkX3BvcyA9IDI0OwotKyAgICAgIC8qIEZhbGx0aHJvdWdoLiAgKi8KLSAKLSAgICAgY2FzZSAyNDoKLSAgICAgICBmcmFtZWJ1ZmZlci5tb2RlX2luZm8ucmVkX21hc2tfc2l6ZSA9IDg7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWIvYXV0b2dlbi5zaC1leGNsdWRlLXBjLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9hdXRvZ2VuLnNoLWV4Y2x1ZGUtcGMucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1Yi9hdXRvZ2VuLnNoLWV4Y2x1ZGUtcGMucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvYXV0b2dlbi5zaC1leGNsdWRlLXBjLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2NoZWNrLWlmLWxpYmx6bWEtaXMtZGlzYWJsZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2NoZWNrLWlmLWxpYmx6bWEtaXMtZGlzYWJsZWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlZWNlMDguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9jaGVjay1pZi1saWJsem1hLWlzLWRpc2FibGVkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotRGlzYWJsZSBsaWJsem1hIGlmIC0tZW5hYmxlLWxpYmx6bWE9bm8KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi1TaWduZWQtb2ZmLWJ5OiBDb25zdGFudGluIE11c2NhIDxjb25zdGFudGlueC5tdXNjYUBpbnRlbC5jb20+Ci0KLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMTAyOSwxMCArMTAyOSwyMCBAQCBmaQotIAotIEFDX1NVQlNUKFtMSUJHRU9NXSkKLSAKLS1BQ19DSEVDS19MSUIoW2x6bWFdLCBbbHptYV9jb2RlXSwKLS0gICAgICAgICAgICAgW0xJQkxaTUE9Ii1sbHptYSIKLS0gICAgICAgICAgICAgIEFDX0RFRklORShbSEFWRV9MSUJMWk1BXSwgWzFdLAotLSAgICAgICAgICAgICAgICAgICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgTFpNQSBsaWJyYXJ5Ll0pXSwpCi0rQUNfQVJHX0VOQUJMRShbbGlibHptYV0sCi0rICAgICAgICAgICAgICBbQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLWxpYmx6bWFdLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlbmFibGUgbGlibHptYSBpbnRlZ3JhdGlvbiAoZGVmYXVsdD1ndWVzc2VkKV0pXSkKLStpZiB0ZXN0IHgiJGVuYWJsZV9saWJsem1hIiA9IHhubyA7IHRoZW4KLSsgIGxpYmx6bWFfZXhjdXNlPSJleHBsaWNpdGx5IGRpc2FibGVkIgotK2ZpCi0rCi0raWYgdGVzdCB4IiRsaWJsem1hX2V4Y3VzZSIgPSB4IDsgdGhlbgotKyAgQUNfQ0hFQ0tfTElCKFtsem1hXSwgW2x6bWFfY29kZV0sCi0rICAgICAgICAgICAgICAgW0xJQkxaTUE9Ii1sbHptYSIKLSsgICAgICAgICAgICAgICAgQUNfREVGSU5FKFtIQVZFX0xJQkxaTUFdLCBbMV0sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIExaTUEgbGlicmFyeS5dKV0sKQotK2ZpCi0rCi0gQUNfU1VCU1QoW0xJQkxaTUFdKQotIAotIEFDX0FSR19FTkFCTEUoW2xpYnpmc10sCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2ZpeC1lbmRpYW5uZXNzLXByb2JsZW0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2ZpeC1lbmRpYW5uZXNzLXByb2JsZW0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3OTk5MmEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9maXgtZW5kaWFubmVzcy1wcm9ibGVtLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotZ3J1Yi1jb3JlL25ldC90ZnRwLmM6IGZpeCBlbmRpYW5uZXNzIHByb2JsZW0uCi0KLQkqIGdydWItY29yZS9uZXQvdGZ0cC5jIChhY2spOiBGaXggZW5kaWFubmVzcyBwcm9ibGVtLgotCSh0ZnRwX3JlY2VpdmUpOiBMaWtld2lzZS4KLQlSZXBvcnRlZCBieTogTWljaGFlbCBEYXZpZHNhdmVyLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLWRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKLWluZGV4IDgxYmRhZTkuLmMyZjQyZDUgMTAwNjQ0Ci0tLS0gYS9DaGFuZ2VMb2cKLSsrKyBiL0NoYW5nZUxvZwotQEAgLTEsMyArMSw5IEBACi0rMjAxMi0wNy0wMiAgVmxhZGltaXIgU2VyYmluZW5rbyAgPHBoY29kZXJAZ21haWwuY29tPgotKwotKwkqIGdydWItY29yZS9uZXQvdGZ0cC5jIChhY2spOiBGaXggZW5kaWFubmVzcyBwcm9ibGVtLgotKwkodGZ0cF9yZWNlaXZlKTogTGlrZXdpc2UuCi0rCVJlcG9ydGVkIGJ5OiBNaWNoYWVsIERhdmlkc2F2ZXIuCi0rCi0gMjAxMi0wNi0yNyAgVmxhZGltaXIgU2VyYmluZW5rbyAgPHBoY29kZXJAZ21haWwuY29tPgotIAotIAkqIGNvbmZpZ3VyZS5hYzogQnVtcCB2ZXJzaW9uIHRvIDIuMDAuCi1kaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL25ldC90ZnRwLmMgYi9ncnViLWNvcmUvbmV0L3RmdHAuYwotaW5kZXggOWM3MGVmYi4uZDBmMzllYSAxMDA2NDQKLS0tLSBhL2dydWItY29yZS9uZXQvdGZ0cC5jCi0rKysgYi9ncnViLWNvcmUvbmV0L3RmdHAuYwotQEAgLTE0Myw3ICsxNDMsNyBAQCBhY2sgKHRmdHBfZGF0YV90IGRhdGEsIGdydWJfdWludDE2X3QgYmxvY2spCi0gCi0gICB0ZnRwaF9hY2sgPSAoc3RydWN0IHRmdHBoZHIgKikgbmJfYWNrLmRhdGE7Ci0gICB0ZnRwaF9hY2stPm9wY29kZSA9IGdydWJfY3B1X3RvX2JlMTYgKFRGVFBfQUNLKTsKLS0gIHRmdHBoX2Fjay0+dS5hY2suYmxvY2sgPSBibG9jazsKLSsgIHRmdHBoX2Fjay0+dS5hY2suYmxvY2sgPSBncnViX2NwdV90b19iZTE2IChibG9jayk7Ci0gCi0gICBlcnIgPSBncnViX25ldF9zZW5kX3VkcF9wYWNrZXQgKGRhdGEtPnNvY2ssICZuYl9hY2spOwotICAgaWYgKGVycikKLUBAIC0yMjUsNyArMjI1LDcgQEAgdGZ0cF9yZWNlaXZlIChncnViX25ldF91ZHBfc29ja2V0X3Qgc29jayBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksCi0gCSAgICBncnViX3ByaW9yaXR5X3F1ZXVlX3BvcCAoZGF0YS0+cHEpOwotIAotIAkgICAgaWYgKGZpbGUtPmRldmljZS0+bmV0LT5wYWNrcy5jb3VudCA8IDUwKQotLQkgICAgICBlcnIgPSBhY2sgKGRhdGEsIHRmdHBoLT51LmRhdGEuYmxvY2spOwotKwkgICAgICBlcnIgPSBhY2sgKGRhdGEsIGRhdGEtPmJsb2NrICsgMSk7Ci0gCSAgICBlbHNlCi0gCSAgICAgIHsKLSAJCWZpbGUtPmRldmljZS0+bmV0LT5zdGFsbCA9IDE7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2ZpeC1pc3N1ZS13aXRoLWZsZXgtMi41LjM3LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9maXgtaXNzdWUtd2l0aC1mbGV4LTIuNS4zNy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjFhZTJmNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2ZpeC1pc3N1ZS13aXRoLWZsZXgtMi41LjM3LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1UaGlzIGZpeGVzIGNvbXBpbGF0aW9uIGlzc3VlcyB3aGVuIHVzaW5nIGZsZXgtMi41LjM3LiBJdCB3YXMgdGFrZW4gZnJvbSB1cHN0cmVhbS4KLQotT3JpZ2luYWwgYXV0aG9yIGlzOiBWbGFkaW1pciBTZXJiaW5lbmtvICA8cGhjb2RlckBnbWFpbC5jb20+Ci0KLVNpZ25lZC1vZmYtYnk6IExhdXJlbnRpdSBQYWxjdSA8bGF1cmVudGl1LnBhbGN1QGludGVsLmNvbT4KLQotSW5kZXg6IGdydWItMi4wMC9ncnViLWNvcmUvc2NyaXB0L3l5bGV4LmwKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBncnViLTIuMDAub3JpZy9ncnViLWNvcmUvc2NyaXB0L3l5bGV4LmwJMjAxMi0wNi0wOCAyMzoyNDoxNS4wMDAwMDAwMDAgKzAzMDAKLSsrKyBncnViLTIuMDAvZ3J1Yi1jb3JlL3NjcmlwdC95eWxleC5sCTIwMTMtMDctMzEgMTQ6MzQ6NDAuNzA4MTAwOTgyICswMzAwCi1AQCAtMjksNiArMjksOCBAQAotICNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdtaXNzaW5nLXByb3RvdHlwZXMiCi0gI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV21pc3NpbmctZGVjbGFyYXRpb25zIgotICNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVd1bnNhZmUtbG9vcC1vcHRpbWl6YXRpb25zIgotKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVd1bnVzZWQtZnVuY3Rpb24iCi0rI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV3NpZ24tY29tcGFyZSIKLSAKLSAjZGVmaW5lIHl5ZnJlZSAgICBncnViX2xleGVyX3l5ZnJlZQotICNkZWZpbmUgeXlhbGxvYyAgIGdydWJfbGV4ZXJfeXlhbGxvYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9maXgtdGV4aW5mby5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvZml4LXRleGluZm8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5MTFkNzMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9maXgtdGV4aW5mby5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLVRoZSB0YXJiYWxsIGhhcyBhIHRleGkgZmlsZSB0aGF0IGRvZXNuJ3QgcGFyc2Ugd2l0aCBjdXJyZW50IHRleGluZm8sIHNvIGlmIGl0J3MKLWJlaW5nIHJlLWdlbmVyYXRlZCB0aGUgYnVpbGQgd2lsbCBmYWlsLiAgVGFrZSBhIHBhdGNoIGZyb20gdXBzdHJlYW0gdG8gZml4IHRoZQotdGV4aS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotRnJvbSBkNGM0YjhlMWEwODVmOTJhZmNlYzM2ZjZlNTkwYzZkZmM1MWQwYTFjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQnJ5YW4gSHVuZHZlbiA8YnJ5YW5odW5kdmVuQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMDggQXByIDIwMTMgMTM6MjM6MDcgKzAwMDAKLVN1YmplY3Q6IAkqIGRvY3MvZ3J1Yi1kZXYudGV4aTogTW92ZSBAaXRlbWl6ZSBhZnRlciBAc3Vic2VjdGlvbiB0byBzYXRpc2Z5Ci0KLQl0ZXhpbmZvLTUuMS4KLS0tLQotKGxpbWl0ZWQgdG8gJ2RvY3MvZ3J1Yi1kZXYudGV4aScpCi0KLWRpZmYgLS1naXQgYS9kb2NzL2dydWItZGV2LnRleGkgYi9kb2NzL2dydWItZGV2LnRleGkKLWluZGV4IGE0YTM4MjAuLmY3NGM5NjYgMTAwNjQ0Ci0tLS0gYS9kb2NzL2dydWItZGV2LnRleGkKLSsrKyBiL2RvY3MvZ3J1Yi1kZXYudGV4aQotQEAgLTEzOTQsOCArMTM5NCw4IEBAIGdydWJfdmlkZW9fYmxpdF9nbHlwaCAoJmdseXBoLCBjb2xvciwgMCwgMCk7Ci0gCi0gQG5vZGUgQml0bWFwIEFQSQotIEBzZWN0aW9uIEJpdG1hcCBBUEkKLS1AaXRlbWl6ZQotIEBzdWJzZWN0aW9uIGdydWJfdmlkZW9fYml0bWFwX2NyZWF0ZQotK0BpdGVtaXplCi0gQGl0ZW0gUHJvdG90eXBlOgotIEBleGFtcGxlCi0gZ3J1Yl9lcnJfdCBncnViX3ZpZGVvX2JpdG1hcF9jcmVhdGUgKHN0cnVjdCBncnViX3ZpZGVvX2JpdG1hcCAqKmJpdG1hcCwgdW5zaWduZWQgaW50IHdpZHRoLCB1bnNpZ25lZCBpbnQgaGVpZ2h0LCBlbnVtIGdydWJfdmlkZW9fYmxpdF9mb3JtYXQgYmxpdF9mb3JtYXQpCi0tLQotY2dpdCB2MC45LjAuMgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9maXguYnVpbGQud2l0aC5nY2MtNy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvZml4LmJ1aWxkLndpdGguZ2NjLTcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjM1ZGY5NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvZml4LmJ1aWxkLndpdGguZ2NjLTcucGF0Y2gKQEAgLTAsMCArMSwzOSBAQAorKiBlLmcuIHdpdGggZ2VudG9vIGdjYy03LjEgdGhleSBkZWZpbmUgX0ZPUlRJRllfU09VUkNFIGJ5IGRlZmF1bHQgd2l0aDoKKyAgaHR0cHM6Ly9zb3VyY2VzLmdlbnRvby5vcmcvY2dpLWJpbi92aWV3dmMuY2dpL2dlbnRvby9zcmMvcGF0Y2hzZXRzL2djYy83LjEuMC9nZW50b28vMTBfYWxsX2RlZmF1bHQtZm9ydGlmeS1zb3VyY2UucGF0Y2g/dmlldz1tYXJrdXAKKyAgd2hpY2ggcmVzdWx0cyBpbiBmb2xsb3dpbmcgZXJyb3Igd2hpbGUgYnVpbGRpbmcgZ3J1Yi1lZmktbmF0aXZlOgorICAuL2NvbmZpZy11dGlsLmg6MTUwNDo0ODogZXJyb3I6IHRoaXMgdXNlIG9mICJkZWZpbmVkIiBtYXkgbm90IGJlIHBvcnRhYmxlIFstV2Vycm9yPWV4cGFuc2lvbi10by1kZWZpbmVkXQorICAgICAgICAgICAgICAgfHwgKGRlZmluZWQgX0ZPUlRJRllfU09VUkNFICYmIDAgPCBfRk9SVElGWV9TT1VSQ0UgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fn5+fn5+fn4KKyAgdGhpcyBwYXJ0IGNvbWVzIGZyb20gZ251bGliIGFuZCBpdCdzIHVzZWQgb25seSBmb3IgQXBwbGUgYW5kIEJTRCwKKyAgc28gd2UgY2FuIGlnbm9yZSBpdCwgYnV0IHdlIGNhbm5vdCBhZGQgLVduby1lcnJvcj1leHBhbnNpb24tdG8tZGVmaW5lZAorICBiZWNhdXNlIHRoaXMgd2FybmluZyB3YXMgaW50cm9kdWNlZCBvbmx5IGluIGdjYy03IGFuZCBvbGRlciBnY2MKKyAgd2lsbCBmYWlsIHdpdGg6CisgIGNjMTogZXJyb3I6IC1XZXJyb3I9ZXhwYW5zaW9uLXRvLWRlZmluZWQ6IG5vIG9wdGlvbiAtV2V4cGFuc2lvbi10by1kZWZpbmVkCisgIHVzZSAjcHJhZ21hIHRvIHdvcmsgYXJvdW5kIHRoaXMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIChzaG91bGQgYmUgZml4ZWQgaW4gZ251bGliIHdoaWNoIGlzIHRoZW4gcmFyZWx5IHVwZGF0ZWQgaW4gZ3J1YikKKworU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgorCitkaWZmIC11TnIgZ3J1Yi0yLjAyLm9sZC9tNC9leHRlcm4taW5saW5lLm00IGdydWItMi4wMi9tNC9leHRlcm4taW5saW5lLm00CistLS0gZ3J1Yi0yLjAyLm9sZC9tNC9leHRlcm4taW5saW5lLm00CTIwMTYtMDItMjggMTU6MjI6MjEuMDAwMDAwMDAwICswMTAwCisrKysgZ3J1Yi0yLjAyL200L2V4dGVybi1pbmxpbmUubTQJMjAxNy0wOC0yMiAxOToyNjo0NS4yMTM2MzcyNzYgKzAyMDAKK0BAIC0zOSw2ICszOSwxMCBAQAorICAgIE9TIFggMTAuOSBoYXMgYSBtYWNybyBfX2hlYWRlcl9pbmxpbmUgaW5kaWNhdGluZyB0aGUgYnVnIGlzIGZpeGVkIGZvciBDIGFuZAorICAgIGZvciBjbGFuZyBidXQgcmVtYWlucyBmb3IgZysrOyBzZWUgPGh0dHA6Ly90cmFjLm1hY3BvcnRzLm9yZy90aWNrZXQvNDEwMzM+LgorICAgIEFzc3VtZSBEcmFnb25GbHkgYW5kIEZyZWVCU0Qgd2lsbCBiZSBzaW1pbGFyLiAgKi8KKysjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHB1c2gKKysjaWYgX19HTlVDX18gPj0gNworKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdleHBhbnNpb24tdG8tZGVmaW5lZCIKKysjZW5kaWYKKyAjaWYgKCgoZGVmaW5lZCBfX0FQUExFX18gJiYgZGVmaW5lZCBfX01BQ0hfXykgXAorICAgICAgIHx8IGRlZmluZWQgX19EcmFnb25GbHlfXyB8fCBkZWZpbmVkIF9fRnJlZUJTRF9fKSBcCisgICAgICAmJiAoZGVmaW5lZCBfX2hlYWRlcl9pbmxpbmUgXAorQEAgLTUwLDYgKzUyLDcgQEAKKyAgICAgICAgICAgICAgICAgJiYgZGVmaW5lZCBfX0dOVUNfXyAmJiAhIGRlZmluZWQgX19jcGx1c3BsdXMpKSkpCisgIyBkZWZpbmUgX0dMX0VYVEVSTl9JTkxJTkVfU1RESEVBREVSX0JVRworICNlbmRpZgorKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcG9wCisgI2lmICgoX19HTlVDX18gXAorICAgICAgID8gZGVmaW5lZCBfX0dOVUNfU1REQ19JTkxJTkVfXyAmJiBfX0dOVUNfU1REQ19JTkxJTkVfXyBcCisgICAgICAgOiAoMTk5OTAxTCA8PSBfX1NURENfVkVSU0lPTl9fIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvZ3J1Yi0yLjAwLWFkZC1vZS1rZXJuZWwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2dydWItMi4wMC1hZGQtb2Uta2VybmVsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjg5MTZjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvZ3J1Yi0yLjAwLWFkZC1vZS1rZXJuZWwucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi1Gcm9tIDdhYjU3NmE3YzYxNDA2YjdlNjM3MzlkMWIxMTAxN2FlMzM2YjkwMDggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLURhdGU6IE1vbiwgMyBNYXIgMjAxNCAwMzozNDo0OCAtMDUwMAotU3ViamVjdDogW1BBVENIXSBncnViLmQvMTBfbGludXguaW46IGFkZCBvZSdzIGtlcm5lbCBuYW1lCi0KLU91ciBrZXJuZWwncyBuYW1lIGlzIGJ6SW1hZ2UsIHdlIG5lZWQgYWRkIGl0IHRvIGdydWIuZC8xMF9saW51eC5pbiBzbwotdGhhdCB0aGUgZ3J1Yi1ta2NvbmZpZyBhbmQgZ3J1Yi1pbnN0YWxsIGNhbiB3b3JrIGNvcnJlY3RseS4KLQotV2Ugb25seSBuZWVkIGFkZCB0aGUgYnpJbWFnZSB0byB1dGlsL2dydWIuZC8xMF9saW51eC5pbiwgYnV0IGFsc28gYWRkIGl0Ci10byB1dGlsL2dydWIuZC8yMF9saW51eF94ZW4uaW4gdG8ga2VlcCBjb21wYXRpYmlsaXR5LgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIHV0aWwvZ3J1Yi5kLzEwX2xpbnV4LmluICAgICB8ICAgIDQgKystLQotIHV0aWwvZ3J1Yi5kLzIwX2xpbnV4X3hlbi5pbiB8ICAgIDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3V0aWwvZ3J1Yi5kLzEwX2xpbnV4LmluIGIvdXRpbC9ncnViLmQvMTBfbGludXguaW4KLWluZGV4IDE0NDAyZTguLmM1OGY0MTcgMTAwNjQ0Ci0tLS0gYS91dGlsL2dydWIuZC8xMF9saW51eC5pbgotKysrIGIvdXRpbC9ncnViLmQvMTBfbGludXguaW4KLUBAIC0xNTMsMTEgKzE1MywxMSBAQCBFT0YKLSBtYWNoaW5lPWB1bmFtZSAtbWAKLSBjYXNlICJ4JG1hY2hpbmUiIGluCi0gICAgIHhpPzg2IHwgeHg4Nl82NCkKLS0JbGlzdD1gZm9yIGkgaW4gL2Jvb3Qvdm1saW51ei0qIC92bWxpbnV6LSogL2Jvb3Qva2VybmVsLSogOyBkbwotKwlsaXN0PWBmb3IgaSBpbiAvYm9vdC9iekltYWdlLSogL2J6SW1hZ2UtKiAvYm9vdC92bWxpbnV6LSogL3ZtbGludXotKiAvYm9vdC9rZXJuZWwtKiA7IGRvCi0gICAgICAgICAgICAgICAgICAgaWYgZ3J1Yl9maWxlX2lzX25vdF9nYXJiYWdlICIkaSIgOyB0aGVuIGVjaG8gLW4gIiRpICIgOyBmaQotICAgICAgICAgICAgICAgZG9uZWAgOzsKLSAgICAgKikgCi0tCWxpc3Q9YGZvciBpIGluIC9ib290L3ZtbGludXotKiAvYm9vdC92bWxpbnV4LSogL3ZtbGludXotKiAvdm1saW51eC0qIC9ib290L2tlcm5lbC0qIDsgZG8KLSsJbGlzdD1gZm9yIGkgaW4gL2Jvb3QvYnpJbWFnZS0qIC9ib290L3ZtbGludXotKiAvYm9vdC92bWxpbnV4LSogL2J6SW1hZ2UtKiAvdm1saW51ei0qIC92bWxpbnV4LSogL2Jvb3Qva2VybmVsLSogOyBkbwotICAgICAgICAgICAgICAgICAgIGlmIGdydWJfZmlsZV9pc19ub3RfZ2FyYmFnZSAiJGkiIDsgdGhlbiBlY2hvIC1uICIkaSAiIDsgZmkKLSAJICAgICBkb25lYCA7OwotIGVzYWMKLWRpZmYgLS1naXQgYS91dGlsL2dydWIuZC8yMF9saW51eF94ZW4uaW4gYi91dGlsL2dydWIuZC8yMF9saW51eF94ZW4uaW4KLWluZGV4IDFkOTQ1MDIuLmIyZGVjZjMgMTAwNjQ0Ci0tLS0gYS91dGlsL2dydWIuZC8yMF9saW51eF94ZW4uaW4KLSsrKyBiL3V0aWwvZ3J1Yi5kLzIwX2xpbnV4X3hlbi5pbgotQEAgLTEzOCw3ICsxMzgsNyBAQCBFT0YKLSBFT0YKLSB9Ci0gCi0tbGludXhfbGlzdD1gZm9yIGkgaW4gL2Jvb3Qvdm1saW51W3h6XS0qIC92bWxpbnVbeHpdLSogL2Jvb3Qva2VybmVsLSo7IGRvCi0rbGludXhfbGlzdD1gZm9yIGkgaW4gL2Jvb3QvYnpJbWFnZVt4el0tKiAvYnpJbWFnZVt4el0tKiAvYm9vdC92bWxpbnVbeHpdLSogL3ZtbGludVt4el0tKiAvYm9vdC9rZXJuZWwtKjsgZG8KLSAgICAgaWYgZ3J1Yl9maWxlX2lzX25vdF9nYXJiYWdlICIkaSI7IHRoZW4KLSAgICAgCWJhc2VuYW1lPSQoYmFzZW5hbWUgJGkpCi0gCXZlcnNpb249JChlY2hvICRiYXNlbmFtZSB8IHNlZCAtZSAicyxeW14wLTldKi0sLGciKQotLS0gCi0xLjcuMTAuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2dydWItMi4wMC1maXgtZW5hYmxlX2V4ZWN1dGVfc3RhY2stY2hlY2sucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2dydWItMi4wMC1maXgtZW5hYmxlX2V4ZWN1dGVfc3RhY2stY2hlY2sucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmZjNjMWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9ncnViLTIuMDAtZml4LWVuYWJsZV9leGVjdXRlX3N0YWNrLWNoZWNrLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLQotVGhpcyBwYXRjaCBhdm9pZHMgdGhpcyBjb25maWd1cmUgZmFpbHVyZQotCi1jb25maWd1cmU6MjAzMDY6IGNoZWNraW5nIHdoZXRoZXIgYGNjYWNoZSBpNTg2LXBva3ktbGludXgtZ2NjICAtbTMyICAgIC1tYXJjaD1jb3JlMiAtbXNzZTMgLW10dW5lPWdlbmVyaWMgLW1mcG1hdGg9c3NlIC0tc3lzcm9vdD0vYnVpbGRkaXNrL2J1aWxkL2J1aWxkMC90bXAvc3lzcm9vdHMvZW1lbmxvdycgZ2VuZXJhdGVzIGNhbGxzIHRvIGBfX2VuYWJsZV9leGVjdXRlX3N0YWNrKCknCi1jb25maWd1cmU6MjAzMjA6IGNjYWNoZSBpNTg2LXBva3ktbGludXgtZ2NjICAtbTMyICAgIC1tYXJjaD1jb3JlMiAtbXNzZTMgLW10dW5lPWdlbmVyaWMgLW1mcG1hdGg9c3NlIC0tc3lzcm9vdD0vYnVpbGRkaXNrL2J1aWxkL2J1aWxkMC90bXAvc3lzcm9vdHMvZW1lbmxvdyAtTzIgLXBpcGUgLWcgLWZlbGltaW5hdGUtdW51c2VkLWRlYnVnLXR5cGVzIC1XYWxsIC1XIC1Xc2hhZG93IC1XcG9pbnRlci1hcml0aCAtV21pc3NpbmctcHJvdG90eXBlcyAtV3VuZGVmIC1Xc3RyaWN0LXByb3RvdHlwZXMgLWcgLWZhbGlnbi1qdW1wcz0xIC1mYWxpZ24tbG9vcHM9MSAtZmFsaWduLWZ1bmN0aW9ucz0xIC1tbm8tbW14IC1tbm8tc3NlIC1tbm8tc3NlMiAtbW5vLTNkbm93IC1tZnBtYXRoPTM4NyAtZm5vLWR3YXJmMi1jZmktYXNtIC1tMzIgLWZuby1zdGFjay1wcm90ZWN0b3IgLW1uby1zdGFjay1hcmctcHJvYmUgLVdlcnJvciAtV25vLXRyYW1wb2xpbmVzIC1mYWxpZ24tbG9vcHM9MSAtUyBjb25mdGVzdC5jCi1jb25mdGVzdC5jOjMwODo2OiBlcnJvcjogbm8gcHJldmlvdXMgcHJvdG90eXBlIGZvciAnZycgWy1XZXJyb3I9bWlzc2luZy1wcm90b3R5cGVzXQotY2MxOiBhbGwgd2FybmluZ3MgYmVpbmcgdHJlYXRlZCBhcyBlcnJvcnMKLWNvbmZpZ3VyZToyMDMyMzogJD8gPSAxCi1jb25maWd1cmU6MjAzMjc6IGVycm9yOiBjY2FjaGUgaTU4Ni1wb2t5LWxpbnV4LWdjYyAgLW0zMiAgICAtbWFyY2g9Y29yZTIgLW1zc2UzIC1tdHVuZT1nZW5lcmljIC1tZnBtYXRoPXNzZSAtLXN5c3Jvb3Q9L2J1aWxkZGlzay9idWlsZC9idWlsZDAvdG1wL3N5c3Jvb3RzL2VtZW5sb3cgZmFpbGVkIHRvIHByb2R1Y2UgYXNzZW1ibHkgY29kZQotCi1TaWduZWQtb2ZmLWJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgotMjAxMi8wNC8xMwotCi1JbmRleDogZ3J1Yi0yLjAwL2FjaW5jbHVkZS5tNAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdydWItMi4wMC5vcmlnL2FjaW5jbHVkZS5tNAotKysrIGdydWItMi4wMC9hY2luY2x1ZGUubTQKLUBAIC0zMTcsNiArMzE3LDcgQEAgZG5sIENoZWNrIGlmIHRoZSBDIGNvbXBpbGVyIGdlbmVyYXRlcyBjYQotIEFDX0RFRlVOKFtncnViX0NIRUNLX0VOQUJMRV9FWEVDVVRFX1NUQUNLXSxbCi0gQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIGAkQ0MnIGdlbmVyYXRlcyBjYWxscyB0byBgX19lbmFibGVfZXhlY3V0ZV9zdGFjaygpJ10pCi0gQUNfTEFOR19DT05GVEVTVChbQUNfTEFOR19TT1VSQ0UoW1sKLSt2b2lkIGcgKGludCk7Ci0gdm9pZCBmIChpbnQgKCpwKSAodm9pZCkpOwotIHZvaWQgZyAoaW50IGkpCi0gewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9ncnViLTIuMDAtZnBtYXRoLXNzZS0zODctZml4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9ncnViLTIuMDAtZnBtYXRoLXNzZS0zODctZml4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZDMwZDk0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvZ3J1Yi0yLjAwLWZwbWF0aC1zc2UtMzg3LWZpeC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogcGVuZGluZwotCi1UaGlzIHBhdGNoIGZpeGVzIHRoaXMgY29uZmlndXJlIGlzc3VlIGZvciBncnViIHdoZW4gLW1mcG1hdGg9c3NlIGlzIGluIHRoZSBnY2MgcGFyYW1ldGVycy4KLQotY29uZmlndXJlOjIwNTc0OiBpNTg2LXBva3ktbGludXgtZ2NjICAtbTMyICAgIC1tYXJjaD1jb3JlMiAtbXNzZTMgLW10dW5lPWdlbmVyaWMgLW1mcG1hdGg9c3NlIC0tc3lzcm9vdD0vdXNyL2xvY2FsL2Rldi95b2N0by9ncnVidGVzdDIvYnVpbGQvdG1wL3N5c3Jvb3RzL2VtZW5sb3cgLW8gY29uZnRlc3QgLU8yIC1waXBlIC1nIC1mZWxpbWluYXRlLXVudXNlZC1kZWJ1Zy10eXBlcyAtV2FsbCAtVyAtV3NoYWRvdyAtV3BvaW50ZXItYXJpdGggLVdtaXNzaW5nLXByb3RvdHlwZXMgLVd1bmRlZiAtV3N0cmljdC1wcm90b3R5cGVzIC1nIC1mYWxpZ24tanVtcHM9MSAtZmFsaWduLWxvb3BzPTEgLWZhbGlnbi1mdW5jdGlvbnM9MSAtbW5vLW1teCAtbW5vLXNzZSAtbW5vLXNzZTIgLW1uby0zZG5vdyAtZm5vLWR3YXJmMi1jZmktYXNtIC1tMzIgLWZuby1zdGFjay1wcm90ZWN0b3IgLW1uby1zdGFjay1hcmctcHJvYmUgLVdlcnJvciAtbm9zdGRsaWIgLVdsLC0tZGVmc3ltLF9fX21haW49MHg4MTAwICAtV2FsbCAtVyAtSSQodG9wX3NyY2RpcikvaW5jbHVkZSAtSSQodG9wX2J1aWxkZGlyKS9pbmNsdWRlICAtREdSVUJfTUFDSElORV9QQ0JJT1M9MSAtREdSVUJfTUFDSElORT1JMzg2X1BDIC1XbCwtTzEgLVdsLC0taGFzaC1zdHlsZT1nbnUgLVdsLC0tYXMtbmVlZGVkIGNvbmZ0ZXN0LmMgID4mNQotY29uZnRlc3QuYzoxOjA6IGVycm9yOiBTU0UgaW5zdHJ1Y3Rpb24gc2V0IGRpc2FibGVkLCB1c2luZyAzODcgYXJpdGhtZXRpY3MgWy1XZXJyb3JdCi1jYzE6IGFsbCB3YXJuaW5ncyBiZWluZyB0cmVhdGVkIGFzIGVycm9ycwotCi1TaWduZWQtb2ZmLWJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgotMjAxMi8wNC8xMwotCi1JbmRleDogZ3J1Yi0xLjk5L2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdydWItMS45OS5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIGdydWItMS45OS9jb25maWd1cmUuYWMKLUBAIC0zNzgsNyArMzc4LDcgQEAgaWYgdGVzdCAieCR0YXJnZXRfY3B1IiA9IHhpMzg2OyB0aGVuCi0gCi0gICAjIFNvbWUgdG9vbGNoYWlucyBlbmFibGUgdGhlc2UgZmVhdHVyZXMgYnkgZGVmYXVsdCwgYnV0IHRoZXkgbmVlZAotICAgIyByZWdpc3RlcnMgdGhhdCBhcmVuJ3Qgc2V0IHVwIHByb3Blcmx5IGluIEdSVUIuCi0tICBUQVJHRVRfQ0ZMQUdTPSIkVEFSR0VUX0NGTEFHUyAtbW5vLW1teCAtbW5vLXNzZSAtbW5vLXNzZTIgLW1uby0zZG5vdyIKLSsgIFRBUkdFVF9DRkxBR1M9IiRUQVJHRVRfQ0ZMQUdTIC1tbm8tbW14IC1tbm8tc3NlIC1tbm8tc3NlMiAtbW5vLTNkbm93IC1tZnBtYXRoPTM4NyIKLSBmaQotIAotICMgQnkgZGVmYXVsdCwgR0NDIDQuNCBnZW5lcmF0ZXMgLmVoX2ZyYW1lIHNlY3Rpb25zIGNvbnRhaW5pbmcgdW53aW5kCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2dydWItZWZpLWFsbG93LWEtY29tcGlsYXRpb24td2l0aG91dC1tY21vZGVsLWxhcmdlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9ncnViLWVmaS1hbGxvdy1hLWNvbXBpbGF0aW9uLXdpdGhvdXQtbWNtb2RlbC1sYXJnZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDU4OGZjYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2dydWItZWZpLWFsbG93LWEtY29tcGlsYXRpb24td2l0aG91dC1tY21vZGVsLWxhcmdlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTMxICswLDAgQEAKLUFsbG93IGEgY29tcGlsYXRpb24gd2l0aG91dCAtbWNtb2RlbD1sYXJnZQotCi1JdCdzIHByb3ZpZGVkIGJ5IFZsYWRpbWlyIFNlcmJpbmVua28sIGFuZCBoZSB3aWxsIGNvbW1pdAotaXQgdXBzdHJlYW0gc28gaXQgc2hvdWxkIGJlIGJhY2twb3J0IHBhdGNoLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+Ci0KLS0tCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA5ZjhmYjhhLi4yYzVlNmVkIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC03MjMsOSArNzIzLDcgQEAgaWYgdGVzdCAiJHRhcmdldF9jcHUiID0geDg2XzY0OyB0aGVuCi0gCQkgICAgICBbZ3J1Yl9jdl9jY19tY21vZGVsPXllc10sCi0gCQkgICAgICBbZ3J1Yl9jdl9jY19tY21vZGVsPW5vXSkKLSAgIF0pCi0tICBpZiB0ZXN0ICJ4JGdydWJfY3ZfY2NfbWNtb2RlbCIgPSB4bm87IHRoZW4KLS0gICAgQUNfTVNHX0VSUk9SKFstbWNtb2RlbD1sYXJnZSBub3Qgc3VwcG9ydGVkLiBVcGdyYWRlIHlvdXIgZ2NjLl0pCi0tICBlbHNlCi0rICBpZiB0ZXN0ICJ4JGdydWJfY3ZfY2NfbWNtb2RlbCIgPSB4eWVzOyB0aGVuCi0gICAgIFRBUkdFVF9DRkxBR1M9IiRUQVJHRVRfQ0ZMQUdTIC1tY21vZGVsPWxhcmdlIgotICAgZmkKLSBmaQotZGlmZiAtLWdpdCBhL2dydWItY29yZS9rZXJuL2VmaS9tbS5jIGIvZ3J1Yi1jb3JlL2tlcm4vZWZpL21tLmMKLWluZGV4IDE0MDliNWQuLjZlOWRhY2UgMTAwNjQ0Ci0tLS0gYS9ncnViLWNvcmUva2Vybi9lZmkvbW0uYwotKysrIGIvZ3J1Yi1jb3JlL2tlcm4vZWZpL21tLmMKLUBAIC0zMiw2ICszMiwxMiBAQAotICNkZWZpbmUgQllURVNfVE9fUEFHRVMoYnl0ZXMpCSgoKGJ5dGVzKSArIDB4ZmZmKSA+PiAxMikKLSAjZGVmaW5lIFBBR0VTX1RPX0JZVEVTKHBhZ2VzKQkoKHBhZ2VzKSA8PCAxMikKLQotKyNpZiBkZWZpbmVkIChfX2NvZGVfbW9kZWxfbGFyZ2VfXykgfHwgIWRlZmluZWQgKF9feDg2XzY0X18pCi0rI2RlZmluZSBNQVhfVVNBQkxFX0FERFJFU1MgMHhmZmZmZmZmZgotKyNlbHNlCi0rI2RlZmluZSBNQVhfVVNBQkxFX0FERFJFU1MgMHg3ZmZmZmZmZgotKyNlbmRpZgotKwotIC8qIFRoZSBzaXplIG9mIGEgbWVtb3J5IG1hcCBvYnRhaW5lZCBmcm9tIHRoZSBmaXJtd2FyZS4gVGhpcyBtdXN0IGJlCi0gICAgYSBtdWx0aXBsaWVyIG9mIDRLQi4gICovCi0gI2RlZmluZSBNRU1PUllfTUFQX1NJWkUJMHgzMDAwCi1AQCAtNTgsNyArNjQsNyBAQCBncnViX2VmaV9hbGxvY2F0ZV9wYWdlcyAoZ3J1Yl9lZmlfcGh5c2ljYWxfYWRkcmVzc190IGFkZHJlc3MsCi0KLSAjaWYgMQotICAgLyogTGltaXQgdGhlIG1lbW9yeSBhY2Nlc3MgdG8gbGVzcyB0aGFuIDRHQiBmb3IgMzItYml0IHBsYXRmb3Jtcy4gICovCi0tICBpZiAoYWRkcmVzcyA+IDB4ZmZmZmZmZmYpCi0rICBpZiAoYWRkcmVzcyA+IE1BWF9VU0FCTEVfQUREUkVTUykKLSAgICAgcmV0dXJuIDA7Ci0gI2VuZGlmCi0KLUBAIC02Niw3ICs3Miw3IEBAIGdydWJfZWZpX2FsbG9jYXRlX3BhZ2VzIChncnViX2VmaV9waHlzaWNhbF9hZGRyZXNzX3QgYWRkcmVzcywKLSAgIGlmIChhZGRyZXNzID09IDApCi0gICAgIHsKLSAgICAgICB0eXBlID0gR1JVQl9FRklfQUxMT0NBVEVfTUFYX0FERFJFU1M7Ci0tICAgICAgYWRkcmVzcyA9IDB4ZmZmZmZmZmY7Ci0rICAgICAgYWRkcmVzcyA9IE1BWF9VU0FCTEVfQUREUkVTUzsKLSAgICAgfQotICAgZWxzZQotICAgICB0eXBlID0gR1JVQl9FRklfQUxMT0NBVEVfQUREUkVTUzsKLUBAIC04Niw3ICs5Miw3IEBAIGdydWJfZWZpX2FsbG9jYXRlX3BhZ2VzIChncnViX2VmaV9waHlzaWNhbF9hZGRyZXNzX3QgYWRkcmVzcywKLSAgICAgewotICAgICAgIC8qIFVnZ2gsIHRoZSBhZGRyZXNzIDAgd2FzIGFsbG9jYXRlZC4uLiBUaGlzIGlzIHRvbyBhbm5veWluZywKLSAJIHNvIHJlYWxsb2NhdGUgYW5vdGhlciBvbmUuICAqLwotLSAgICAgIGFkZHJlc3MgPSAweGZmZmZmZmZmOwotKyAgICAgIGFkZHJlc3MgPSBNQVhfVVNBQkxFX0FERFJFU1M7Ci0gICAgICAgc3RhdHVzID0gZWZpX2NhbGxfNCAoYi0+YWxsb2NhdGVfcGFnZXMsIHR5cGUsIEdSVUJfRUZJX0xPQURFUl9EQVRBLCBwYWdlcywgJmFkZHJlc3MpOwotICAgICAgIGdydWJfZWZpX2ZyZWVfcGFnZXMgKDAsIHBhZ2VzKTsKLSAgICAgICBpZiAoc3RhdHVzICE9IEdSVUJfRUZJX1NVQ0NFU1MpCi1AQCAtMzE5LDcgKzMyNSw3IEBAIGZpbHRlcl9tZW1vcnlfbWFwIChncnViX2VmaV9tZW1vcnlfZGVzY3JpcHRvcl90ICptZW1vcnlfbWFwLAotICAgICB7Ci0gICAgICAgaWYgKGRlc2MtPnR5cGUgPT0gR1JVQl9FRklfQ09OVkVOVElPTkFMX01FTU9SWQotICNpZiAxCi0tCSAgJiYgZGVzYy0+cGh5c2ljYWxfc3RhcnQgPD0gMHhmZmZmZmZmZgotKwkgICYmIGRlc2MtPnBoeXNpY2FsX3N0YXJ0IDw9IE1BWF9VU0FCTEVfQUREUkVTUwotICNlbmRpZgotIAkgICYmIGRlc2MtPnBoeXNpY2FsX3N0YXJ0ICsgUEFHRVNfVE9fQllURVMgKGRlc2MtPm51bV9wYWdlcykgPiAweDEwMDAwMAotIAkgICYmIGRlc2MtPm51bV9wYWdlcyAhPSAwKQotQEAgLTMzNyw5ICszNDMsOSBAQCBmaWx0ZXJfbWVtb3J5X21hcCAoZ3J1Yl9lZmlfbWVtb3J5X2Rlc2NyaXB0b3JfdCAqbWVtb3J5X21hcCwKLSAjaWYgMQotIAkgIGlmIChCWVRFU19UT19QQUdFUyAoZmlsdGVyZWRfZGVzYy0+cGh5c2ljYWxfc3RhcnQpCi0gCSAgICAgICsgZmlsdGVyZWRfZGVzYy0+bnVtX3BhZ2VzCi0tCSAgICAgID4gQllURVNfVE9fUEFHRVMgKDB4MTAwMDAwMDAwTEwpKQotKwkgICAgICA+IEJZVEVTX1RPX1BBR0VTIChNQVhfVVNBQkxFX0FERFJFU1MrMUxMKSkKLSAJICAgIGZpbHRlcmVkX2Rlc2MtPm51bV9wYWdlcwotLQkgICAgICA9IChCWVRFU19UT19QQUdFUyAoMHgxMDAwMDAwMDBMTCkKLSsJICAgICAgPSAoQllURVNfVE9fUEFHRVMgKE1BWF9VU0FCTEVfQUREUkVTUysxTEwpCi0gCQkgLSBCWVRFU19UT19QQUdFUyAoZmlsdGVyZWRfZGVzYy0+cGh5c2ljYWxfc3RhcnQpKTsKLSAjZW5kaWYKLQotZGlmZiAtLWdpdCBhL2dydWItY29yZS9rZXJuL3g4Nl82NC9kbC5jIGIvZ3J1Yi1jb3JlL2tlcm4veDg2XzY0L2RsLmMKLWluZGV4IDY1ZjA5ZWYuLjE3YzEyMTUgMTAwNjQ0Ci0tLS0gYS9ncnViLWNvcmUva2Vybi94ODZfNjQvZGwuYwotKysrIGIvZ3J1Yi1jb3JlL2tlcm4veDg2XzY0L2RsLmMKLUBAIC0xMDAsMTQgKzEwMCwzMiBAQCBncnViX2FyY2hfZGxfcmVsb2NhdGVfc3ltYm9scyAoZ3J1Yl9kbF90IG1vZCwgdm9pZCAqZWhkcikKLSAJCSAgICBicmVhazsKLQotIAkJICBjYXNlIFJfWDg2XzY0X1BDMzI6Ci0tCQkgICAgKmFkZHIzMiArPSByZWwtPnJfYWRkZW5kICsgc3ltLT5zdF92YWx1ZSAtCi0tCQkgICAgICAgICAgICAgIChFbGY2NF9Yd29yZCkgc2VnLT5hZGRyIC0gcmVsLT5yX29mZnNldDsKLSsJCSAgICB7Ci0rCQkgICAgICBncnViX2ludDY0X3QgdmFsdWU7Ci0rCQkgICAgICB2YWx1ZSA9ICgoZ3J1Yl9pbnQzMl90KSAqYWRkcjMyKSArIHJlbC0+cl9hZGRlbmQgKyBzeW0tPnN0X3ZhbHVlIC0KLSsJCQkoRWxmNjRfWHdvcmQpIHNlZy0+YWRkciAtIHJlbC0+cl9vZmZzZXQ7Ci0rCQkgICAgICBpZiAodmFsdWUgIT0gKGdydWJfaW50MzJfdCkgdmFsdWUpCi0rCQkJcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9NT0RVTEUsICJyZWxvY2F0aW9uIG91dCBvZiByYW5nZSIpOwotKwkJICAgICAgKmFkZHIzMiA9IHZhbHVlOwotKwkJICAgIH0KLSAJCSAgICBicmVhazsKLQotICAgICAgICAgICAgICAgICAgIGNhc2UgUl9YODZfNjRfMzI6Ci0rCQkgICAgewotKwkJICAgICAgZ3J1Yl91aW50NjRfdCB2YWx1ZSA9ICphZGRyMzIgKyByZWwtPnJfYWRkZW5kICsgc3ltLT5zdF92YWx1ZTsKLSsJCSAgICAgIGlmICh2YWx1ZSAhPSAoZ3J1Yl91aW50MzJfdCkgdmFsdWUpCi0rCQkJcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9NT0RVTEUsICJyZWxvY2F0aW9uIG91dCBvZiByYW5nZSIpOwotKwkJICAgICAgKmFkZHIzMiA9IHZhbHVlOwotKwkJICAgIH0KLSsJCSAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICBjYXNlIFJfWDg2XzY0XzMyUzoKLS0gICAgICAgICAgICAgICAgICAgICphZGRyMzIgKz0gcmVsLT5yX2FkZGVuZCArIHN5bS0+c3RfdmFsdWU7Ci0tICAgICAgICAgICAgICAgICAgICBicmVhazsKLSsJCSAgICB7Ci0rCQkgICAgICBncnViX2ludDY0X3QgdmFsdWUgPSAoKGdydWJfaW50MzJfdCkgKmFkZHIzMikgKyByZWwtPnJfYWRkZW5kICsgc3ltLT5zdF92YWx1ZTsKLSsJCSAgICAgIGlmICh2YWx1ZSAhPSAoZ3J1Yl9pbnQzMl90KSB2YWx1ZSkKLSsJCQlyZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX01PRFVMRSwgInJlbG9jYXRpb24gb3V0IG9mIHJhbmdlIik7Ci0rCQkgICAgICAqYWRkcjMyID0gdmFsdWU7Ci0rCQkgICAgfQotKwkJICAgIGJyZWFrOwotCi0gCQkgIGRlZmF1bHQ6Ci0gCQkgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX05PVF9JTVBMRU1FTlRFRF9ZRVQsCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2dydWItZWZpLWZpeC13aXRoLWdsaWJjLTIuMjAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2dydWItZWZpLWZpeC13aXRoLWdsaWJjLTIuMjAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmMTI2MjguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9ncnViLWVmaS1maXgtd2l0aC1nbGliYy0yLjIwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotRnJvbSBlYjYzNjhlNjVmNjk4OGVlYmFkMjZjZWJkZWMwNTdmNzk3YmNlYjQwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUdWUsIDkgU2VwIDIwMTQgMDA6MDI6MzAgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGJ1aWxkIHdpdGggZ2xpYmMgMi4yMAotCi0qIGdydWItY29yZS9rZXJuL2VtdS9ob3N0ZnMuYzogc3F1YWhlcyBiZWxvdyB3YXJuaW5nCi0gIHdhcm5pbmc6ICN3YXJuaW5nICJfQlNEX1NPVVJDRSBhbmQgX1NWSURfU09VUkNFIGFyZSBkZXByZWNhdGVkLCB1c2UgX0RFRkFVTFRfU09VUkNFIgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBncnViLWNvcmUva2Vybi9lbXUvaG9zdGZzLmMgfCAgICAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9ncnViLWNvcmUva2Vybi9lbXUvaG9zdGZzLmMgYi9ncnViLWNvcmUva2Vybi9lbXUvaG9zdGZzLmMKLWluZGV4IDNjYjA4OWMuLmE1MWVlMzIgMTAwNjQ0Ci0tLS0gYS9ncnViLWNvcmUva2Vybi9lbXUvaG9zdGZzLmMKLSsrKyBiL2dydWItY29yZS9rZXJuL2VtdS9ob3N0ZnMuYwotQEAgLTE2LDcgKzE2LDcgQEAKLSAgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgKiAgYWxvbmcgd2l0aCBHUlVCLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotICAqLwotLSNkZWZpbmUgX0JTRF9TT1VSQ0UKLSsjZGVmaW5lIF9ERUZBVUxUX1NPVVJDRQotICNpbmNsdWRlIDxncnViL2ZzLmg+Ci0gI2luY2x1ZGUgPGdydWIvZmlsZS5oPgotICNpbmNsdWRlIDxncnViL2Rpc2suaD4KLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2dydWItaW5zdGFsbC5pbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvZ3J1Yi1pbnN0YWxsLmluLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMjY5NTFkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvZ3J1Yi1pbnN0YWxsLmluLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLQotT3VyIHVzZSBvZiBncnViLWluc3RhbGwgZG9lc24ndCByZXF1aXJlIHRoZSAteCBvcHRpb24sIHNvIHdlIHNob3VsZCBiZQotYmUgYWJsZSBtYWtlIHVzZSBvZiBncmVwIHZlcnNpb25zIHRoYXQgZG9uJ3Qgc3VwcG9ydCBpdC4KLQotU2lnbmVkLW9mZi1ieTogVG9tIFphbnVzc2kgPHRvbS56YW51c3NpQGludGVsLmNvbT4KLQotSW5kZXg6IGdydWItMS45OS91dGlsL2dydWItaW5zdGFsbC5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdydWItMS45OS5vcmlnL3V0aWwvZ3J1Yi1pbnN0YWxsLmluCTIwMTEtMDktMDkgMjI6Mzc6MjAuMDkzOTA2Njc5IC0wNTAwCi0rKysgZ3J1Yi0xLjk5L3V0aWwvZ3J1Yi1pbnN0YWxsLmluCTIwMTEtMDktMDkgMjI6Mzc6MzAuODU0NzM3ODgyIC0wNTAwCi1AQCAtNTEwLDcgKzUxMCw3IEBACi0gCi0gaWYgWyAieCR7ZGV2YWJzdHJhY3Rpb25fbW9kdWxlfSIgPSAieCIgXSA7IHRoZW4KLSAgICAgaWYgWyB4IiR7aW5zdGFsbF9kZXZpY2V9IiAhPSB4IF07IHRoZW4KLS0gICAgICBpZiBlY2hvICIke2luc3RhbGxfZGV2aWNlfSIgfCBncmVwIC1xeCAiKC4qKSIgOyB0aGVuCi0rICAgICAgaWYgZWNobyAiJHtpbnN0YWxsX2RldmljZX0iIHwgZ3JlcCAtcSAiKC4qKSIgOyB0aGVuCi0gICAgICAgICBpbnN0YWxsX2RyaXZlPSIke2luc3RhbGxfZGV2aWNlfSIKLSAgICAgICBlbHNlCi0gICAgICAgICBpbnN0YWxsX2RyaXZlPSJgIiRncnViX3Byb2JlIiAtLWRldmljZS1tYXA9IiR7ZGV2aWNlX21hcH0iIC0tdGFyZ2V0PWRyaXZlIC0tZGV2aWNlICIke2luc3RhbGxfZGV2aWNlfSJgIiB8fCBleGl0IDEKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvZ3J1Yi1uby11bnVzZWQtcmVzdWx0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9ncnViLW5vLXVudXNlZC1yZXN1bHQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjYmQwODMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9ncnViLW5vLXVudXNlZC1yZXN1bHQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1TaWduZWQtb2ZmLWJ5OiBSYWR1IE1vaXNhbiA8cmFkdS5tb2lzYW5AaW50ZWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLUkgaGFkIGFuIGVycm9yIGJlY2F1c2Ugb2YgYW4gdW51c2VkIHJldHVybiB2YWx1ZSBmb3IgcmVhZCgpLgotSSBhZGRlZCAtV25vLXVudXNlZC1yZXN1bHQuCi0KLUluZGV4OiBncnViLTIuMDAvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3J1Yi0yLjAwLm9yaWcvY29uZmlndXJlLmFjCTIwMTItMDgtMTMgMTY6MzI6MzMuMDAwMDAwMDAwICswMzAwCi0rKysgZ3J1Yi0yLjAwL2NvbmZpZ3VyZS5hYwkyMDEyLTA4LTEzIDE2OjM4OjIyLjAwMDAwMDAwMCArMDMwMAotQEAgLTM5NCw3ICszOTQsNyBAQAotIExJQlM9IiIKLSAKLSAjIGRlYnVnIGZsYWdzLgotLVdBUk5fRkxBR1M9Ii1XYWxsIC1XIC1Xc2hhZG93IC1Xb2xkLXN0eWxlLWRlZmluaXRpb24gLVdwb2ludGVyLWFyaXRoIC1XdW5kZWYgLVdleHRyYSAtV2FkZHJlc3MgLVdhdHRyaWJ1dGVzIC1XY2FzdC1hbGlnbiAtV2NoYXItc3Vic2NyaXB0cyAtV2NvbW1lbnQgLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyAtV2Rpc2FibGVkLW9wdGltaXphdGlvbiAtV2Rpdi1ieS16ZXJvIC1XZW1wdHktYm9keSAtV2VuZGlmLWxhYmVscyAtV2Zsb2F0LWVxdWFsIC1XZm9ybWF0LWV4dHJhLWFyZ3MgLVdmb3JtYXQtc2VjdXJpdHkgLVdmb3JtYXQteTJrIC1XaW1wbGljaXQgLVdpbXBsaWNpdC1mdW5jdGlvbi1kZWNsYXJhdGlvbiAtV2ltcGxpY2l0LWludCAtV2luaXQtc2VsZiAtV2ludC10by1wb2ludGVyLWNhc3QgLVdpbnZhbGlkLXBjaCAtV21haW4gLVdtaXNzaW5nLWJyYWNlcyAtV21pc3NpbmctZmllbGQtaW5pdGlhbGl6ZXJzIC1XbWlzc2luZy1mb3JtYXQtYXR0cmlidXRlIC1XbWlzc2luZy1ub3JldHVybiAtV211bHRpY2hhciAtV25vbm51bGwgLVdvdmVyZmxvdyAtV3BhcmVudGhlc2VzIC1XcG9pbnRlci1hcml0aCAtV3BvaW50ZXItdG8taW50LWNhc3QgLVdyZXR1cm4tdHlwZSAtV3NlcXVlbmNlLXBvaW50IC1Xc2hhZG93IC1Xc2lnbi1jb21wYXJlIC1Xc3RyaWN0LWFsaWFzaW5nIC1Xc3dpdGNoIC1XdHJpZ3JhcGhzIC1XdW5kZWYgLVd1bmtub3duLXByYWdtYXMgLVd1bnVzZWQgLVd1bnVzZWQtZnVuY3Rpb24gLVd1bnVzZWQtbGFiZWwgLVd1bnVzZWQtcGFyYW1ldGVyIC1XdW51c2VkLXZhbHVlICAtV3VudXNlZC12YXJpYWJsZSAtV3ZhcmlhZGljLW1hY3JvcyAtV3ZvbGF0aWxlLXJlZ2lzdGVyLXZhciAtV3dyaXRlLXN0cmluZ3MgLVduZXN0ZWQtZXh0ZXJucyAtV3N0cmljdC1wcm90b3R5cGVzIC1XcG9pbnRlci1zaWduIgotK1dBUk5fRkxBR1M9Ii1XYWxsIC1XIC1Xc2hhZG93IC1Xb2xkLXN0eWxlLWRlZmluaXRpb24gLVdwb2ludGVyLWFyaXRoIC1XdW5kZWYgLVdleHRyYSAtV2FkZHJlc3MgLVdhdHRyaWJ1dGVzIC1XY2FzdC1hbGlnbiAtV2NoYXItc3Vic2NyaXB0cyAtV2NvbW1lbnQgLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyAtV2Rpc2FibGVkLW9wdGltaXphdGlvbiAtV2Rpdi1ieS16ZXJvIC1XZW1wdHktYm9keSAtV2VuZGlmLWxhYmVscyAtV2Zsb2F0LWVxdWFsIC1XZm9ybWF0LWV4dHJhLWFyZ3MgLVdmb3JtYXQtc2VjdXJpdHkgLVdmb3JtYXQteTJrIC1XaW1wbGljaXQgLVdpbXBsaWNpdC1mdW5jdGlvbi1kZWNsYXJhdGlvbiAtV2ltcGxpY2l0LWludCAtV2luaXQtc2VsZiAtV2ludC10by1wb2ludGVyLWNhc3QgLVdpbnZhbGlkLXBjaCAtV21haW4gLVdtaXNzaW5nLWJyYWNlcyAtV21pc3NpbmctZmllbGQtaW5pdGlhbGl6ZXJzIC1XbWlzc2luZy1mb3JtYXQtYXR0cmlidXRlIC1XbWlzc2luZy1ub3JldHVybiAtV211bHRpY2hhciAtV25vbm51bGwgLVdvdmVyZmxvdyAtV3BhcmVudGhlc2VzIC1XcG9pbnRlci1hcml0aCAtV3BvaW50ZXItdG8taW50LWNhc3QgLVdyZXR1cm4tdHlwZSAtV3NlcXVlbmNlLXBvaW50IC1Xc2hhZG93IC1Xc2lnbi1jb21wYXJlIC1Xc3RyaWN0LWFsaWFzaW5nIC1Xc3dpdGNoIC1XdHJpZ3JhcGhzIC1XdW5kZWYgLVd1bmtub3duLXByYWdtYXMgLVd1bnVzZWQgLVd1bnVzZWQtZnVuY3Rpb24gLVd1bnVzZWQtbGFiZWwgLVd1bnVzZWQtcGFyYW1ldGVyIC1XdW51c2VkLXZhbHVlICAtV3VudXNlZC12YXJpYWJsZSAtV25vLXVudXNlZC1yZXN1bHQgLVd2YXJpYWRpYy1tYWNyb3MgLVd2b2xhdGlsZS1yZWdpc3Rlci12YXIgLVd3cml0ZS1zdHJpbmdzIC1XbmVzdGVkLWV4dGVybnMgLVdzdHJpY3QtcHJvdG90eXBlcyAtV3BvaW50ZXItc2lnbiIKLSBIT1NUX0NGTEFHUz0iJEhPU1RfQ0ZMQUdTICRXQVJOX0ZMQUdTIgotIFRBUkdFVF9DRkxBR1M9IiRUQVJHRVRfQ0ZMQUdTICRXQVJOX0ZMQUdTIC1nIC1XcmVkdW5kYW50LWRlY2xzIC1XbWlzc2luZy1wcm90b3R5cGVzIC1XbWlzc2luZy1kZWNsYXJhdGlvbnMiCi0gVEFSR0VUX0NDQVNGTEFHUz0iJFRBUkdFVF9DQ0FTRkxBR1MgLWciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2dydWIyLWZpeC1pbml0cmQtc2l6ZS1idWcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL2dydWIyLWZpeC1pbml0cmQtc2l6ZS1idWcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxMTRmNDguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9ncnViMi1maXgtaW5pdHJkLXNpemUtYnVnLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotRnJvbSA4ZmJiMTUwYTU2OTY2ZWRkZTRkYzA3YjhkMDFiZTVlYjE0OWI2NWFiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ29saW4gV2F0c29uIDxjandhdHNvbkB1YnVudHUuY29tPgotRGF0ZTogU3VuLCAyMCBKYW4gMjAxMyAyMzowMzozNSArMDAwMAotU3ViamVjdDogW1BBVENIIDEvMV0gKiBncnViLWNvcmUvbG9hZGVyL2kzODYvbGludXguYyAoZ3J1Yl9jbWRfaW5pdHJkKTogRG9uJ3QKLSBhZGQgdGhlIGluaXRyZCBzaXplIHRvIGFkZHJfbWluLCBzaW5jZSB0aGUgaW5pdHJkIHdpbGwgYmUgYWxsb2NhdGVkIGFmdGVyCi0gdGhpcyBhZGRyZXNzLgotCi1jb21taXQgNmEwZGViYmQ5MTY3ZThmNzljZGVmNTQ5N2E3M2QyM2U1ODBjMGNkNCB1cHN0cmVhbQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IFNoYW4gSGFpIDxzaGFuLmhhaUB3aW5kcml2ZXIuY29tPgotLS0tCi0gQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgfCA2ICsrKysrKwotIGdydWItY29yZS9sb2FkZXIvaTM4Ni9saW51eC5jIHwgMyArLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwotaW5kZXggYzJmNDJkNS4uNDBjYjUwOCAxMDA2NDQKLS0tLSBhL0NoYW5nZUxvZwotKysrIGIvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDkgQEAKLSsyMDEzLTAxLTIwICBDb2xpbiBXYXRzb24gIDxjandhdHNvbkB1YnVudHUuY29tPgotKwotKwkqIGdydWItY29yZS9sb2FkZXIvaTM4Ni9saW51eC5jIChncnViX2NtZF9pbml0cmQpOiBEb24ndCBhZGQgdGhlCi0rCWluaXRyZCBzaXplIHRvIGFkZHJfbWluLCBzaW5jZSB0aGUgaW5pdHJkIHdpbGwgYmUgYWxsb2NhdGVkIGFmdGVyCi0rCXRoaXMgYWRkcmVzcy4KLSsKLSAyMDEyLTA3LTAyICBWbGFkaW1pciBTZXJiaW5lbmtvICA8cGhjb2RlckBnbWFpbC5jb20+Ci0gCi0gCSogZ3J1Yi1jb3JlL25ldC90ZnRwLmMgKGFjayk6IEZpeCBlbmRpYW5uZXNzIHByb2JsZW0uCi1kaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2xvYWRlci9pMzg2L2xpbnV4LmMgYi9ncnViLWNvcmUvbG9hZGVyL2kzODYvbGludXguYwotaW5kZXggNjIwODdjZi4uZTI0MjVjOCAxMDA2NDQKLS0tLSBhL2dydWItY29yZS9sb2FkZXIvaTM4Ni9saW51eC5jCi0rKysgYi9ncnViLWNvcmUvbG9hZGVyL2kzODYvbGludXguYwotQEAgLTEwOTgsOCArMTA5OCw3IEBAIGdydWJfY21kX2luaXRyZCAoZ3J1Yl9jb21tYW5kX3QgY21kIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKLSAgICAgIHdvcnNlIHRoYW4gdGhhdCBvZiBMaW51eCAyLjMueHgsIHNvIGF2b2lkIHRoZSBsYXN0IDY0a2IuICAqLwotICAgYWRkcl9tYXggLT0gMHgxMDAwMDsKLSAKLS0gIGFkZHJfbWluID0gKGdydWJfYWRkcl90KSBwcm90X21vZGVfdGFyZ2V0ICsgcHJvdF9pbml0X3NwYWNlCi0tICAgICAgICAgICAgICsgcGFnZV9hbGlnbiAoc2l6ZSk7Ci0rICBhZGRyX21pbiA9IChncnViX2FkZHJfdCkgcHJvdF9tb2RlX3RhcmdldCArIHByb3RfaW5pdF9zcGFjZTsKLSAKLSAgIC8qIFB1dCB0aGUgaW5pdHJkIGFzIGhpZ2ggYXMgcG9zc2libGUsIDRLaUIgYWxpZ25lZC4gICovCi0gICBhZGRyID0gKGFkZHJfbWF4IC0gc2l6ZSkgJiB+MHhGRkY7Ci0tLSAKLTEuOC41LjIuMjMzLmc5MzJmN2U0Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZmlsZXMvZ3J1YjItcmVtb3ZlLXNwYXJjNjQtc2V0dXAtZnJvbS14ODYtYnVpbGRzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9ncnViMi1yZW1vdmUtc3BhcmM2NC1zZXR1cC1mcm9tLXg4Ni1idWlsZHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxNjhkM2MuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9ncnViMi1yZW1vdmUtc3BhcmM2NC1zZXR1cC1mcm9tLXg4Ni1idWlsZHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1TdWJqZWN0OiBbUEFUQ0hdIGdydWIyOiByZW1vdmUgZ3J1Yi1zcGFyYzY0LXNldHVwIGZyb20geDg2IGJ1aWxkcwotCi0qIHJlbW92ZSB0aGUgZ3J1Yi1zcGFyYzY0LXNldHVwIGZpbGVzIGZyb20gdGhlIHg4NiBidWlsZHMuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBNaW5nbGkgWXUgPG1pbmdsaS55dUB3aW5kcml2ZXIuY29tPgotLS0tCi0gTWFrZWZpbGUudXRpbC5kZWYgfCAxOCAtLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS51dGlsLmRlZiBiL01ha2VmaWxlLnV0aWwuZGVmCi1pbmRleCBiODAxODdjLi5hNjcwY2YyIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUudXRpbC5kZWYKLSsrKyBiL01ha2VmaWxlLnV0aWwuZGVmCi1AQCAtMzIxLDI0ICszMjEsNiBAQCBwcm9ncmFtID0gewotIH07Ci0gCi0gcHJvZ3JhbSA9IHsKLS0gIG5hbWUgPSBncnViLXNwYXJjNjQtc2V0dXA7Ci0tICBpbnN0YWxsZGlyID0gc2JpbjsKLS0gIG1hbnNlY3Rpb24gPSA4OwotLSAgY29tbW9uID0gdXRpbC9ncnViLXNldHVwLmM7Ci0tICBjb21tb24gPSB1dGlsL2x2bS5jOwotLSAgY29tbW9uID0gZ3J1Yi1jb3JlL2tlcm4vZW11L2FyZ3BfY29tbW9uLmM7Ci0tICBjb21tb24gPSBncnViLWNvcmUvbGliL3JlZWRfc29sb21vbi5jOwotLSAgY29tbW9uID0gdXRpbC9pZWVlMTI3NS9vZnBhdGguYzsKLS0KLS0gIGxkYWRkID0gbGliZ3J1Ym1vZHMuYTsKLS0gIGxkYWRkID0gbGliZ3J1Ymtlcm4uYTsKLS0gIGxkYWRkID0gbGliZ3J1YmdjcnkuYTsKLS0gIGxkYWRkID0gZ3J1Yi1jb3JlL2dudWxpYi9saWJnbnUuYTsKLS0gIGxkYWRkID0gJyQoTElCSU5UTCkgJChMSUJERVZNQVBQRVIpICQoTElCVVRJTCkgJChMSUJaRlMpICQoTElCTlZQQUlSKSAkKExJQkdFT00pJzsKLS0gIGNwcGZsYWdzID0gJy1ER1JVQl9TRVRVUF9TUEFSQzY0PTEnOwotLX07Ci0tCi0tcHJvZ3JhbSA9IHsKLSAgIG5hbWUgPSBncnViLW9mcGF0aG5hbWU7Ci0gICBpbnN0YWxsZGlyID0gc2JpbjsKLSAgIG1hbnNlY3Rpb24gPSA4OwotLS0gCi0yLjguMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL3JlbW92ZS1nZXRzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9maWxlcy9yZW1vdmUtZ2V0cy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDYzZjc4NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2ZpbGVzL3JlbW92ZS1nZXRzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotSVNPIEMxMSByZW1vdmVzIHRoZSBzcGVjaWZpY2F0aW9uIG9mIGdldHMoKSBmcm9tIHRoZSBDIGxhbmd1YWdlLCBlZ2xpYmMgMi4xNisgcmVtb3ZlZCBpdAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLUluZGV4OiBncnViLTEuOTkvZ3J1Yi1jb3JlL2dudWxpYi9zdGRpby5pbi5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3J1Yi0xLjk5Lm9yaWcvZ3J1Yi1jb3JlL2dudWxpYi9zdGRpby5pbi5oCTIwMTAtMTItMDEgMDY6NDU6NDMuMDAwMDAwMDAwIC0wODAwCi0rKysgZ3J1Yi0xLjk5L2dydWItY29yZS9nbnVsaWIvc3RkaW8uaW4uaAkyMDEyLTA3LTA0IDEyOjI1OjAyLjA1NzA5OTEwNyAtMDcwMAotQEAgLTE0MCw4ICsxNDAsMTAgQEAKLSAvKiBJdCBpcyB2ZXJ5IHJhcmUgdGhhdCB0aGUgZGV2ZWxvcGVyIGV2ZXIgaGFzIGZ1bGwgY29udHJvbCBvZiBzdGRpbiwKLSAgICBzbyBhbnkgdXNlIG9mIGdldHMgd2FycmFudHMgYW4gdW5jb25kaXRpb25hbCB3YXJuaW5nLiAgQXNzdW1lIGl0IGlzCi0gICAgYWx3YXlzIGRlY2xhcmVkLCBzaW5jZSBpdCBpcyByZXF1aXJlZCBieSBDODkuICAqLwotKyNpZiBkZWZpbmVkIGdldHMKLSAjdW5kZWYgZ2V0cwotIF9HTF9XQVJOX09OX1VTRSAoZ2V0cywgImdldHMgaXMgYSBzZWN1cml0eSBob2xlIC0gdXNlIGZnZXRzIGluc3RlYWQiKTsKLSsjZW5kaWYKLSAKLSAjaWYgQEdOVUxJQl9GT1BFTkAKLSAjIGlmIEBSRVBMQUNFX0ZPUEVOQApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViLWVmaV8yLjAwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViLWVmaV8yLjAwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMTJmMWQ3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1Yi1lZmlfMi4wMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLXJlcXVpcmUgZ3J1YjIuaW5jCi0KLURFUEVORFNfY2xhc3MtdGFyZ2V0ID0gImdydWItZWZpLW5hdGl2ZSIKLVJERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCA9ICJkaWZmdXRpbHMgZnJlZXR5cGUiCi1QUiA9ICJyMyIKLQotU1JDX1VSSSArPSAiIFwKLSAgICAgICAgICAgZmlsZTovL2NmZyBcCi0gICAgICAgICAgIgotCi1TID0gIiR7V09SS0RJUn0vZ3J1Yi0ke1BWfSIKLQotIyBEZXRlcm1pbmUgdGhlIHRhcmdldCBhcmNoIGZvciB0aGUgZ3J1YiBtb2R1bGVzCi1weXRob24gX19hbm9ueW1vdXMgKCkgewotICAgIGltcG9ydCByZQotICAgIHRhcmdldCA9IGQuZ2V0VmFyKCdUQVJHRVRfQVJDSCcpCi0gICAgaWYgdGFyZ2V0ID09ICJ4ODZfNjQiOgotICAgICAgICBncnVidGFyZ2V0ID0gJ3g4Nl82NCcKLSAgICAgICAgZ3J1YmltYWdlID0gImdydWItZWZpLWJvb3R4NjQuZWZpIgotICAgIGVsaWYgcmUubWF0Y2goJ2kuODYnLCB0YXJnZXQpOgotICAgICAgICBncnVidGFyZ2V0ID0gJ2kzODYnCi0gICAgICAgIGdydWJpbWFnZSA9ICJncnViLWVmaS1ib290aWEzMi5lZmkiCi0gICAgZWxzZToKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoImdydWItZWZpIGlzIGluY29tcGF0aWJsZSB3aXRoIHRhcmdldCAlcyIgJSB0YXJnZXQpCi0gICAgZC5zZXRWYXIoIkdSVUJfVEFSR0VUIiwgZ3J1YnRhcmdldCkKLSAgICBkLnNldFZhcigiR1JVQl9JTUFHRSIsIGdydWJpbWFnZSkKLX0KLQotaW5oZXJpdCBkZXBsb3kKLQotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X3BhdGhfSEVMUDJNQU49IgotRVhUUkFfT0VDT05GID0gIi0td2l0aC1wbGF0Zm9ybT1lZmkgLS1kaXNhYmxlLWdydWItbWtmb250IFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1lZmllbXU9bm8gLS1wcm9ncmFtLXByZWZpeD0nJyBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtbGlibHptYT1ubyAtLWVuYWJsZS1kZXZpY2UtbWFwcGVyPW5vIC0tZW5hYmxlLWxpYnpmcz1ubyBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtbGFyZ2VmaWxlIFwKLSIKLQotIyBsZG0uYzoxMTQ6NzogZXJyb3I6IHRyYW1wb2xpbmUgZ2VuZXJhdGVkIGZvciBuZXN0ZWQgZnVuY3Rpb24gJ2hvb2snIFstV2Vycm9yPXRyYW1wb2xpbmVzXQotIyBhbmQgbWFueSBvdGhlciBwbGFjZXMgaW4gdGhlIGdydWIgY29kZSB3aGVuIGNvbXBpbGVkIHdpdGggc29tZSBuYXRpdmUgZ2NjIGNvbXBpbGVycyAoc3BlY2lmaWNhbGx5LCBnZW50b28pCi1DRkxBR1NfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLVduby1lcnJvcj10cmFtcG9saW5lcyIKLQotZG9faW5zdGFsbF9jbGFzcy1uYXRpdmUoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9Ci0JaW5zdGFsbCAtbSA3NTUgZ3J1Yi1ta2ltYWdlICR7RH0ke2JpbmRpcn0KLX0KLQotR1JVQl9CVUlMRElOID89ICJib290IGxpbnV4IGV4dDIgZmF0IHNlcmlhbCBwYXJ0X21zZG9zIHBhcnRfZ3B0IG5vcm1hbCBlZmlfZ29wIGlzbzk2NjAgc2VhcmNoIgotCi1kb19kZXBsb3koKSB7Ci0JIyBTZWFyY2ggZm9yIHRoZSBncnViLmNmZyBvbiB0aGUgbG9jYWwgYm9vdCBtZWRpYSBieSB1c2luZyB0aGUKLQkjIGJ1aWx0IGluIGNmZyBmaWxlIHByb3ZpZGVkIHZpYSB0aGlzIHJlY2lwZQotCWdydWItbWtpbWFnZSAtYyAuLi9jZmcgLXAgL0VGSS9CT09UIC1kIC4vZ3J1Yi1jb3JlLyBcCi0JICAgICAgICAgICAgICAgLU8gJHtHUlVCX1RBUkdFVH0tZWZpIC1vIC4vJHtHUlVCX0lNQUdFfSBcCi0JICAgICAgICAgICAgICAgJHtHUlVCX0JVSUxESU59Ci0JaW5zdGFsbCAtbSA2NDQgJHtCfS8ke0dSVUJfSU1BR0V9ICR7REVQTE9ZRElSfQotfQotCi1kb19kZXBsb3lfY2xhc3MtbmF0aXZlKCkgewotCToKLX0KLQotYWRkdGFzayBkZXBsb3kgYWZ0ZXIgZG9faW5zdGFsbCBiZWZvcmUgZG9fYnVpbGQKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9ncnViLyR7R1JVQl9UQVJHRVR9LWVmaSBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9ncnViIFwKLSAgICAgICAgICAgICAgICAiCi0KLSMgNjQtYml0IGJpbmFyaWVzIGFyZSBleHBlY3RlZCBmb3IgdGhlIGJvb3Rsb2FkZXIgd2l0aCBhbiB4MzIgdXNlcmxhbmQKLUlOU0FORV9TS0lQXyR7UE59X2FwcGVuZF9saW51eC1nbnV4MzIgPSAiIGFyY2giCi1JTlNBTkVfU0tJUF8ke1BOfS1kYmdfYXBwZW5kX2xpbnV4LWdudXgzMiA9ICIgYXJjaCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWItZWZpXzIuMDIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWItZWZpXzIuMDIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTI4ZGExNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1Yi1lZmlfMi4wMi5iYgpAQCAtMCwwICsxLDgyIEBACityZXF1aXJlIGdydWIyLmluYworCitHUlVCUExBVEZPUk0gPSAiZWZpIgorCitERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGdydWItZWZpLW5hdGl2ZSIKK1JERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCA9ICJkaWZmdXRpbHMgZnJlZXR5cGUiCisKK1NSQ19VUkkgKz0gIiBcCisgICAgICAgICAgIGZpbGU6Ly9jZmcgXAorICAgICAgICAgICIKKworUyA9ICIke1dPUktESVJ9L2dydWItJHtQVn0iCisKKyMgRGV0ZXJtaW5lIHRoZSB0YXJnZXQgYXJjaCBmb3IgdGhlIGdydWIgbW9kdWxlcworcHl0aG9uIF9fYW5vbnltb3VzICgpIHsKKyAgICBpbXBvcnQgcmUKKyAgICB0YXJnZXQgPSBkLmdldFZhcignVEFSR0VUX0FSQ0gnKQorICAgIGlmIHRhcmdldCA9PSAieDg2XzY0IjoKKyAgICAgICAgZ3J1YnRhcmdldCA9ICd4ODZfNjQnCisgICAgICAgIGdydWJpbWFnZSA9ICJncnViLWVmaS1ib290eDY0LmVmaSIKKyAgICBlbGlmIHJlLm1hdGNoKCdpLjg2JywgdGFyZ2V0KToKKyAgICAgICAgZ3J1YnRhcmdldCA9ICdpMzg2JworICAgICAgICBncnViaW1hZ2UgPSAiZ3J1Yi1lZmktYm9vdGlhMzIuZWZpIgorICAgIGVsc2U6CisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCJncnViLWVmaSBpcyBpbmNvbXBhdGlibGUgd2l0aCB0YXJnZXQgJXMiICUgdGFyZ2V0KQorICAgIGQuc2V0VmFyKCJHUlVCX1RBUkdFVCIsIGdydWJ0YXJnZXQpCisgICAgZC5zZXRWYXIoIkdSVUJfSU1BR0UiLCBncnViaW1hZ2UpCit9CisKK2luaGVyaXQgZGVwbG95CisKK0NBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9wYXRoX0hFTFAyTUFOPSIKK0VYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtZWZpZW11PW5vIgorCisjIGxkbS5jOjExNDo3OiBlcnJvcjogdHJhbXBvbGluZSBnZW5lcmF0ZWQgZm9yIG5lc3RlZCBmdW5jdGlvbiAnaG9vaycgWy1XZXJyb3I9dHJhbXBvbGluZXNdCisjIGFuZCBtYW55IG90aGVyIHBsYWNlcyBpbiB0aGUgZ3J1YiBjb2RlIHdoZW4gY29tcGlsZWQgd2l0aCBzb21lIG5hdGl2ZSBnY2MgY29tcGlsZXJzIChzcGVjaWZpY2FsbHksIGdlbnRvbykKK0NGTEFHU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtV25vLWVycm9yPXRyYW1wb2xpbmVzIgorCitkb19pbnN0YWxsX2NsYXNzLW5hdGl2ZSgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KKwlpbnN0YWxsIC1tIDc1NSBncnViLW1raW1hZ2UgJHtEfSR7YmluZGlyfQorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7CisgICAgIyBSZW1vdmUgYnVpbGQgaG9zdCByZWZlcmVuY2VzLi4uCisgICAgZmluZCAiJHtEfSIgLW5hbWUgbW9kaW5mby5zaCAtdHlwZSBmIC1leGVjIFwKKyAgICAgICAgc2VkIC1pIFwKKyAgICAgICAgLWUgJ3MsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAorICAgICAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCisgICAgICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6ZycgXAorICAgICAgICB7fSArCit9CisKK0dSVUJfQlVJTERJTiA/PSAiYm9vdCBsaW51eCBleHQyIGZhdCBzZXJpYWwgcGFydF9tc2RvcyBwYXJ0X2dwdCBub3JtYWwgXAorICAgICAgICAgICAgICAgICBlZmlfZ29wIGlzbzk2NjAgc2VhcmNoIGxvYWRlbnYgdGVzdCIKKworZG9fZGVwbG95KCkgeworCSMgU2VhcmNoIGZvciB0aGUgZ3J1Yi5jZmcgb24gdGhlIGxvY2FsIGJvb3QgbWVkaWEgYnkgdXNpbmcgdGhlCisJIyBidWlsdCBpbiBjZmcgZmlsZSBwcm92aWRlZCB2aWEgdGhpcyByZWNpcGUKKwlncnViLW1raW1hZ2UgLWMgLi4vY2ZnIC1wIC9FRkkvQk9PVCAtZCAuL2dydWItY29yZS8gXAorCSAgICAgICAgICAgICAgIC1PICR7R1JVQl9UQVJHRVR9LWVmaSAtbyAuLyR7R1JVQl9JTUFHRX0gXAorCSAgICAgICAgICAgICAgICR7R1JVQl9CVUlMRElOfQorCWluc3RhbGwgLW0gNjQ0ICR7Qn0vJHtHUlVCX0lNQUdFfSAke0RFUExPWURJUn0KK30KKworZG9fZGVwbG95X2NsYXNzLW5hdGl2ZSgpIHsKKwk6Cit9CisKK2FkZHRhc2sgZGVwbG95IGFmdGVyIGRvX2luc3RhbGwgYmVmb3JlIGRvX2J1aWxkCisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vZ3J1Yi8ke0dSVUJfVEFSR0VUfS1lZmkgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ3J1YiBcCisgICAgICAgICAgICAgICAgIgorCisjIDY0LWJpdCBiaW5hcmllcyBhcmUgZXhwZWN0ZWQgZm9yIHRoZSBib290bG9hZGVyIHdpdGggYW4geDMyIHVzZXJsYW5kCitJTlNBTkVfU0tJUF8ke1BOfV9hcHBlbmRfbGludXgtZ251eDMyID0gIiBhcmNoIgorSU5TQU5FX1NLSVBfJHtQTn0tZGJnX2FwcGVuZF9saW51eC1nbnV4MzIgPSAiIGFyY2giCitJTlNBTkVfU0tJUF8ke1BOfV9hcHBlbmRfbGludXgtbXVzbHgzMiA9ICIgYXJjaCIKK0lOU0FORV9TS0lQXyR7UE59LWRiZ19hcHBlbmRfbGludXgtbXVzbHgzMiA9ICIgYXJjaCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWIyLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1YjIuaW5jCmluZGV4IGE5M2M5OWUuLjI4Zjk2YmIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1YjIuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1YjIuaW5jCkBAIC0xMSw0NiArMTEsNDAgQEAKIExJQ0VOU0UgPSAiR1BMdjMiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKIAotU1JDX1VSSSA9ICJmdHA6Ly9mdHAuZ251Lm9yZy9nbnUvZ3J1Yi9ncnViLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9ncnViLW1vZHVsZS1leHBsaWNpdGx5LWtlZXBzLXN5bWJvbGUtLm1vZHVsZV9saWNlbnNlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2dydWItMi4wMC1mcG1hdGgtc3NlLTM4Ny1maXgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vY2hlY2staWYtbGlibHptYS1pcy1kaXNhYmxlZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtaXNzdWUtd2l0aC1mbGV4LTIuNS4zNy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ncnViLTIuMDAtYWRkLW9lLWtlcm5lbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ncnViLWluc3RhbGwuaW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLWdldHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LWVuZGlhbm5lc3MtcHJvYmxlbS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ncnViMi1yZW1vdmUtc3BhcmM2NC1zZXR1cC1mcm9tLXg4Ni1idWlsZHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZ3J1Yi0yLjAwLWZpeC1lbmFibGVfZXhlY3V0ZV9zdGFjay1jaGVjay5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ncnViLW5vLXVudXNlZC1yZXN1bHQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZ3J1Yi1lZmktYWxsb3ctYS1jb21waWxhdGlvbi13aXRob3V0LW1jbW9kZWwtbGFyZ2UucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZ3J1Yi1lZmktZml4LXdpdGgtZ2xpYmMtMi4yMC5wYXRjaCBcCitTUkNfVVJJID0gImh0dHBzOi8vZnRwLmdudS5vcmcvZ251L2dydWIvZ3J1Yi0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLW1mcG1hdGgtc3NlLWFzLXdlbGwtd2hlbi1TU0UtaXMtZGlzYWJsZWQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXBhcnNlX2RoY3BfdmVuZG9yLUFkZC1taXNzaW5nLWNvbnN0LXF1YWxpZmllcnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZ3J1YjItZml4LWluaXRyZC1zaXplLWJ1Zy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1DVkUtMjAxNS04MzcwLUdydWIyLXVzZXItcGFzcy12dWxuZXJhYmlsaXR5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtUmVtb3ZlLWRpcmVjdC1fbGxzZWVrLWNvZGUtYW5kLXJlcXVpcmUtbG9uZy1maWxlc3lzdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtdGV4aW5mby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWdydWItY29yZS1nZXR0ZXh0LWdldHRleHQuYy1tYWluX2NvbnRleHQtc2Vjb25kYXJ5X2MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1FbmZvcmNlLW5vLXBpZS1pZi10aGUtY29tcGlsZXItc3VwcG9ydHMtaXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1ncnViLWNvcmUta2Vybi1lZmktbW0uYy1ncnViX2VmaV9maW5pc2hfYm9vdF9zZXJ2aWNlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItZ3J1Yi1jb3JlLWtlcm4tZWZpLW1tLmMtZ3J1Yl9lZmlfZ2V0X21lbW9yeV9tYXAtTmV2ZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWJ1aWxkLVVzZS1BQ19IRUFERVJfTUFKT1ItdG8tZmluZC1kZXZpY2UtbWFjcm9zLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtYnRyZnMtYXZvaWQtdXNlZC11bmluaXRpYWxpemVkLWVycm9yLXdpdGgtR0NDNy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLWkzODYteDg2XzY0LXBwYy1maXgtc3dpdGNoLWZhbGx0aHJvdWdoLWNhc2VzLXdpdGgtR0MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1BZGQtZ251bGliLWZpeC1nY2M3LWZhbGx0aHJvdWdoLmRpZmYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1GaXgtcmVtYWluaW5nLWNhc2VzLW9mLWdjYy03LWZhbGx0aHJvdWdoLXdhcm5pbmcucGF0Y2ggXAotICAgICAgICAgICAgIgorICAgICAgICAgICBmaWxlOi8vYXV0b2dlbi5zaC1leGNsdWRlLXBjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2dydWItbW9kdWxlLWV4cGxpY2l0bHkta2VlcHMtc3ltYm9sZS0ubW9kdWxlX2xpY2Vuc2UucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1ncnViLmQtMTBfbGludXguaW4tYWRkLW9lLXMta2VybmVsLW5hbWUucGF0Y2ggXAorCSAgIGZpbGU6Ly9maXguYnVpbGQud2l0aC5nY2MtNy5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiMTExNmQxZjYwYzg0MGU2ZGJkNjdhYmJjOTlhY2I0NWQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjYwZWUxMzZmYmNlZTA4ODU4NTE2ZWQ0ZGUyYWQ4NzA2OGJmZTFiNmI4YjM3ODk2Y2UzNTI5ZmYwNTRhNzI2ZCIKIAotREVQRU5EUyA9ICJmbGV4LW5hdGl2ZSBiaXNvbi1uYXRpdmUgYXV0b2dlbi1uYXRpdmUiCitERVBFTkRTID0gImZsZXgtbmF0aXZlIGJpc29uLW5hdGl2ZSIKIAotU1JDX1VSSVttZDVzdW1dID0gImU5Mjc1NDBiNmVkYThiMDI0ZmIwMzkxZWVhYTQwOTFjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY1YjM5YTA1NThmOGM4MDIyMDljNTc0ZjRkMDJjYTI2M2E4MDRlOGE1NjRiYzZjYWYxY2QwZmQzYjNjYzExZTMiCitDT01QQVRJQkxFX0hPU1QgPSAnKHg4Nl82NC4qfGkuODYuKnxhcm0uKnxhYXJjaDY0LiopLShsaW51eC4qfGZyZWVic2QuKiknCitDT01QQVRJQkxFX0hPU1RfYXJtdjdhID0gJ251bGwnCitDT01QQVRJQkxFX0hPU1RfYXJtdjd2ZSA9ICdudWxsJwogCi1DT01QQVRJQkxFX0hPU1QgPSAnKHg4Nl82NC4qfGkuODYuKiktKGxpbnV4fGZyZWVic2QuKiknCisjIGNvbmZpZ3VyZS5hYyBoYXMgY29kZSB0byBzZXQgdGhpcyBhdXRvbWFnaWNhbGx5IGZyb20gdGhlIHRhcmdldCB0dXBsZQorIyBidXQgdGhlIE9FIGZyZWVmb3JtIG9uZSAoY29yZTItZm9vLWJhci1saW51eCkgZG9uJ3Qgd29yayB3aXRoIHRoYXQuCisKK0dSVUJQTEFURk9STV9hcm0gPSAidWJvb3QiCitHUlVCUExBVEZPUk1fYWFyY2g2NCA9ICJlZmkiCitHUlVCUExBVEZPUk0gPz89ICJwYyIKIAogaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvCiAKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgtcGxhdGZvcm09JHtHUlVCUExBVEZPUk19IFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtZ3J1Yi1ta2ZvbnQgXAorICAgICAgICAgICAgICAgIC0tcHJvZ3JhbS1wcmVmaXg9IiIgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLWxpYmx6bWE9bm8gXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLWxpYnpmcz1ubyBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtbGFyZ2VmaWxlIFwKKyIKKwogUEFDS0FHRUNPTkZJRyA/Pz0gIiIKIFBBQ0tBR0VDT05GSUdbZ3J1Yi1tb3VudF0gPSAiLS1lbmFibGUtZ3J1Yi1tb3VudCwtLWRpc2FibGUtZ3J1Yi1tb3VudCxmdXNlIgogUEFDS0FHRUNPTkZJR1tkZXZpY2UtbWFwcGVyXSA9ICItLWVuYWJsZS1kZXZpY2UtbWFwcGVyLC0tZGlzYWJsZS1kZXZpY2UtbWFwcGVyLGx2bTIiCkBAIC03NiwzICs3MCw5IEBACiAjIGdydWIgYW5kIGdydWItZWZpJ3Mgc3lzcm9vdC8ke2RhdGFkaXJ9L2dydWIvZ3J1Yi1ta2NvbmZpZ19saWIgYXJlCiAjIGNvbmZsaWN0ZWQsIHJlbW92ZSBpdCBzaW5jZSBubyBvbmUgdXNlcyBpdC4KIFNZU1JPT1RfRElSU19CTEFDS0xJU1QgKz0gIiR7ZGF0YWRpcn0vZ3J1Yi9ncnViLW1rY29uZmlnX2xpYiIKKworUEFDS0FHRVMgPSsgIiR7UE59LWVkaXRlbnYiCisKK0ZJTEVTXyR7UE59LWVkaXRlbnYgPSAiJHtiaW5kaXJ9L2dydWItZWRpdGVudiIKK1JERVBFTkRTXyR7UE59ICs9ICIke1BOfS1lZGl0ZW52IgorUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1Yl8yLjAwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViXzIuMDAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzODI5MzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViXzIuMDAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1yZXF1aXJlIGdydWIyLmluYwotCi1SREVQRU5EU18ke1BOfSA9ICJkaWZmdXRpbHMgZnJlZXR5cGUgZ3J1Yi1lZGl0ZW52IgotUFIgPSAicjEiCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgtcGxhdGZvcm09cGMgLS1kaXNhYmxlLWdydWItbWtmb250IC0tcHJvZ3JhbS1wcmVmaXg9IiIgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLWxpYmx6bWE9bm8gLS1lbmFibGUtZGV2aWNlLW1hcHBlcj1ubyAtLWVuYWJsZS1saWJ6ZnM9bm8gXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLWxhcmdlZmlsZSBcCi0iCi0KLVBBQ0tBR0VTID0rICJncnViLWVkaXRlbnYiCi0KLUZJTEVTX2dydWItZWRpdGVudiA9ICIke2JpbmRpcn0vZ3J1Yi1lZGl0ZW52IgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9ncnViLmQKLX0KLQotSU5TQU5FX1NLSVBfJHtQTn0gPSAiYXJjaCIKLUlOU0FORV9TS0lQXyR7UE59LWRiZyA9ICJhcmNoIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViXzIuMDIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWJfMi4wMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTYxZjZhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViXzIuMDIuYmIKQEAgLTAsMCArMSwxNyBAQAorcmVxdWlyZSBncnViMi5pbmMKKworUkRFUEVORFNfJHtQTn0gKz0gImRpZmZ1dGlscyBmcmVldHlwZSIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZ3J1Yi5kCisgICAgIyBSZW1vdmUgYnVpbGQgaG9zdCByZWZlcmVuY2VzLi4uCisgICAgZmluZCAiJHtEfSIgLW5hbWUgbW9kaW5mby5zaCAtdHlwZSBmIC1leGVjIFwKKyAgICAgICAgc2VkIC1pIFwKKyAgICAgICAgLWUgJ3MsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAorICAgICAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCisgICAgICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6ZycgXAorICAgICAgICB7fSArCit9CisKK0lOU0FORV9TS0lQXyR7UE59ID0gImFyY2giCitJTlNBTkVfU0tJUF8ke1BOfS1kYmcgPSAiYXJjaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1Yl9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWJfZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTgxZTUzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1Yl9naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi1yZXF1aXJlIGdydWIyLmluYwotCi1ERUZBVUxUX1BSRUZFUkVOQ0UgPSAiLTEiCi1ERUZBVUxUX1BSRUZFUkVOQ0VfYXJtID0gIjEiCi0KLUZJTEVTRVhUUkFQQVRIUyA9LiAiJHtGSUxFX0RJUk5BTUV9L2dydWItZ2l0OiIKLQotUFYgPSAiMi4wMCske1NSQ1BWfSIKLVNSQ1JFViA9ICJjZTk1NTQ5Y2M1NGI1ZDZmNDk0NjA4YTdjMzkwZGJhM2FhYjRmYmE3IgotU1JDX1VSSSA9ICJnaXQ6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9ncnViLmdpdCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURpc2FibGUtbWZwbWF0aC1zc2UtYXMtd2VsbC13aGVuLVNTRS1pcy1kaXNhYmxlZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hdXRvZ2VuLnNoLWV4Y2x1ZGUtcGMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1ncnViLmQtMTBfbGludXguaW4tYWRkLW9lLXMta2VybmVsLW5hbWUucGF0Y2ggXAotICAgICAgICAgICIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotQ09NUEFUSUJMRV9IT1NUID0gJyh4ODZfNjQuKnxpLjg2Lip8YXJtLip8YWFyY2g2NC4qKS0obGludXguKnxmcmVlYnNkLiopJwotQ09NUEFUSUJMRV9IT1NUX2FybXY3YSA9ICdudWxsJwotQ09NUEFUSUJMRV9IT1NUX2FybXY3dmUgPSAnbnVsbCcKLQotIyBjb25maWd1cmUuYWMgaGFzIGNvZGUgdG8gc2V0IHRoaXMgYXV0b21hZ2ljYWxseSBmcm9tIHRoZSB0YXJnZXQgdHVwbGUKLSMgYnV0IHRoZSBPRSBmcmVlZm9ybSBvbmUgKGNvcmUyLWZvby1iYXItbGludXgpIGRvbid0IHdvcmsgd2l0aCB0aGF0LgotCi1HUlVCUExBVEZPUk1fYXJtID0gInVib290IgotR1JVQlBMQVRGT1JNX2FhcmNoNjQgPSAiZWZpIgotR1JVQlBMQVRGT1JNID8/PSAicGMiCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgtcGxhdGZvcm09JHtHUlVCUExBVEZPUk19IC0tZGlzYWJsZS1ncnViLW1rZm9udCAtLXByb2dyYW0tcHJlZml4PSIiIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1saWJsem1hPW5vIC0tZW5hYmxlLWRldmljZS1tYXBwZXI9bm8gLS1lbmFibGUtbGliemZzPW5vIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1sYXJnZWZpbGUgXAotIgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9ncnViLmQKLSAgICBybSAtcmYgJHtEfSR7bGliZGlyfS9jaGFyc2V0LmFsaWFzCi19Ci0KLSMgZGVidWdlZGl0IGNob2tlcyBvbiBiYXJlIG1ldGFsIGJpbmFyaWVzCi1JTkhJQklUX1BBQ0tBR0VfREVCVUdfU1BMSVQgPSAiMSIKLQotUkRFUEVORFNfJHtQTn0gPSAiZGlmZnV0aWxzIGZyZWV0eXBlIgotCi1JTlNBTkVfU0tJUF8ke1BOfSA9ICJhcmNoIgotSU5TQU5FX1NLSVBfJHtQTn0tZGJnID0gImFyY2giCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9ob3N0YXAvaG9zdGFwLXV0aWxzLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2hvc3RhcC9ob3N0YXAtdXRpbHMuaW5jCmluZGV4IDE0MDMyMWQuLjZkOThlM2EgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2hvc3RhcC9ob3N0YXAtdXRpbHMuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL2hvc3RhcC9ob3N0YXAtdXRpbHMuaW5jCkBAIC0xLDE1ICsxLDE0IEBACiBTVU1NQVJZID0gIlVzZXIgbW9kZSBoZWxwZXJzIGZvciB0aGUgaG9zdGFwIGRyaXZlciIKIERFU0NSSVBUSU9OID0gIlRoZSBob3N0YXAgZHJpdmVyIHN1cHBvcnRzIEhvc3QgQVAgbW9kZSwgaXQgYWxsb3dzIGZvciBJRUVFIDgwMi4xMSBcCiBtYW5hZ2VtZW50IGZ1bmN0aW9ucyBvbiB0aGUgaG9zdCBjb21wdXRlciBhbmQgYWxsb3dzIHRoZSBzeXN0ZW0gdG8gYWN0IGFzIGFuIGFjY2VzcyBwb2ludC4iCi1IT01FUEFHRSA9ICJodHRwOi8vaG9zdGFwLmVwaXRlc3QuZmkiCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9ob3N0YXAuZXBpdGVzdC5maS9idWd6LyIKK0hPTUVQQUdFID0gImh0dHBzOi8vdzEuZmkiCiBMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDYzNmU3M2ZmMDIxNWU4ZDY3MmRjNGMzMmMzMTdiYjMgXAogCQkJZmlsZTovL3V0aWwuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTk7bWQ1PWQzYjkyODA4NTEzMDJlNWJhMzRlNWZiNzE3NDg5YjZkIgogU0VDVElPTiA9ICJrZXJuZWwvdXNlcmxhbmQiCiBQUiA9ICJyNCIKIAotU1JDX1VSSSA9ICJodHRwOi8vaG9zdGFwLmVwaXRlc3QuZmkvcmVsZWFzZXMvaG9zdGFwLXV0aWxzLSR7UFZ9LnRhci5neiBcCitTUkNfVVJJID0gImh0dHBzOi8vdzEuZmkvcmVsZWFzZXMvaG9zdGFwLXV0aWxzLSR7UFZ9LnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly9ob3N0YXAtZnctbG9hZC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLURlZmluZS1fdTMyLV9fczMyLV9fdTE2LV9fczE2LV9fdTgtaW4tdGVybXMtb2YtYzk5LXQucGF0Y2ggXAogIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNpdXRpbHMvcGNpdXRpbHMvY29uZmlndXJlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNpdXRpbHMvcGNpdXRpbHMvY29uZmlndXJlLnBhdGNoCmluZGV4IDY2YzlmOTEuLjU1ZWRmZWEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjaXV0aWxzL3BjaXV0aWxzL2NvbmZpZ3VyZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9wY2l1dGlscy9wY2l1dGlscy9jb25maWd1cmUucGF0Y2gKQEAgLTEsNDYgKzEsMzYgQEAKK1RoaXMgcGF0Y2g6CisqIGVuc3VyZXMgd2UgbGluayBjb3JyZWN0bHkKKyogYWxsb3dzIHVzIHRvIG9wdGlvbmFsbHkgcGFzcyB0YXJnZXQgaW5mb3JtYXRpb24gdG8gY29uZmlndXJlIHJhdGhlciB0aGFuIHVzaW5nIHVuYW1lCisqIHNlbGVjdCBsaW51eCBhcyB0aGUgcGxhdGZvcm0gaW4gbW9zdCBjYXNlcyB3ZSBjYXJlIGFib3V0CisKK1RoaXMgaXMgYSBtZXJnZSBvZiB2YXJpb3VzIHR3ZWFrcyB0byBhbGxvdyB1cyB0byBidWlsZCBwY2l1dGlscyBpbmNsdWRpbmcgCit3b3JrIGZyb206CisKKzcvMzAvMjAxMCAtIFFpbmcgSGUgPHFpbmcuaGVAaW50ZWwuY29tPgorMS8yMi8yMDEyIC0gU2hhbmUgV2FuZyA8c2hhbmUud2FuZ0BpbnRlbC5jb20+CitJb251dCBSYWR1IDxpb251dHgucmFkdUBpbnRlbC5jb20+CisyMDE3LzYvMTUgLSBSUCAtIENsZWFudXBzIGFuZCBtZXJnaW5nIHBhdGNoZXMKKwogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KIAotIwotIyBQYXRjaCBtYW5hZ2VkIGJ5IGh0dHA6Ly93d3cubW4tbG9naXN0aWsuZGUvdW5zdXBwb3J0ZWQvcHhhMjUwL3BhdGNoZXIKLSMKLS0tLQotCi03LzMwLzIwMTAgLSByZWJhc2VkIHRvIDMuMS41IGJ5IFFpbmcgSGUgPHFpbmcuaGVAaW50ZWwuY29tPgotMS8yMi8yMDEyIC0gcmViYXNlZCB0byAzLjEuOSBieSBTaGFuZSBXYW5nIDxzaGFuZS53YW5nQGludGVsLmNvbT4KLQotZGlmZiAtciBhZjJiMTBjYzNjMTQgTWFrZWZpbGUKLS0tLSBhL01ha2VmaWxlCVN1biBKYW4gMjIgMTg6MzY6MzQgMjAxMiArMDgwMAotKysrIGIvTWFrZWZpbGUJU3VuIEphbiAyMiAxODozODo1NCAyMDEyICswODAwCi1AQCAtMzcsNyArMzcsNiBAQAotICMgQ29tbWFuZHMKLSBJTlNUQUxMPWluc3RhbGwKLSBESVJJTlNUQUxMPWluc3RhbGwgLWQKLS1TVFJJUD0tcwotIENDPSQoQ1JPU1NfQ09NUElMRSlnY2MKLSBBUj0kKENST1NTX0NPTVBJTEUpYXIKLSBSQU5MSUI9JChDUk9TU19DT01QSUxFKXJhbmxpYgotQEAgLTg2LDcgKzg1LDcgQEAKK0luZGV4OiBwY2l1dGlscy0zLjUuNC9NYWtlZmlsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHBjaXV0aWxzLTMuNS40Lm9yaWcvTWFrZWZpbGUKKysrKyBwY2l1dGlscy0zLjUuNC9NYWtlZmlsZQorQEAgLTk2LDcgKzk1LDcgQEAgZXhhbXBsZTogZXhhbXBsZS5vIGxpYi8kKFBDSUxJQikKICBleGFtcGxlLm86IGV4YW1wbGUuYyAkKFBDSUlOQykKICAKICAlOiAlLm8KIC0JJChDQykgJChMREZMQUdTKSAkKFRBUkdFVF9BUkNIKSAkXiAkKExETElCUykgLW8gJEAKLSsJJChDQykgJChMREZMQUdTKSAkKFRBUkdFVF9BUkNIKSAkXiAkKExJQl9MRExJQlMpIC1vICRACisrCSQoQ0MpICQoTERGTEFHUykgJChUQVJHRVRfQVJDSCkgJF4gJChMSUJfTERMSUJTKSAkKExETElCUykgLW8gJEAKICAKICAlLjggJS43OiAlLm1hbgogIAlNPWBlY2hvICQoREFURSkgfCBzZWQgJ3MvLTAxLS8tSmFudWFyeS0vO3MvLTAyLS8tRmVicnVhcnktLztzLy0wMy0vLU1hcmNoLS87cy8tMDQtLy1BcHJpbC0vO3MvLTA1LS8tTWF5LS87cy8tMDYtLy1KdW5lLS87cy8tMDctLy1KdWx5LS87cy8tMDgtLy1BdWd1c3QtLztzLy0wOS0vLVNlcHRlbWJlci0vO3MvLTEwLS8tT2N0b2Jlci0vO3MvLTExLS8tTm92ZW1iZXItLztzLy0xMi0vLURlY2VtYmVyLS87cy9cKC4qXCktXCguKlwpLVwoLipcKS9cMyBcMiBcMS8nYCA7IHNlZCA8JDwgPiRAICJzL0BUT0RBWUAvJCRNLztzL0BWRVJTSU9OQC9wY2l1dGlscy0kKFZFUlNJT04pLztzI0BJRFNESVJAIyQoSURTRElSKSMiCi1AQCAtMTAxLDcgKzEwMCw3IEBACi0gaW5zdGFsbDogYWxsCi0gIyAtYyBpcyBpZ25vcmVkIG9uIExpbnV4LCBidXQgcmVxdWlyZWQgb24gRnJlZUJTRAotIAkkKERJUklOU1RBTEwpIC1tIDc1NSAkKERFU1RESVIpJChTQklORElSKSAkKERFU1RESVIpJChJRFNESVIpICQoREVTVERJUikkKE1BTkRJUikvbWFuOCAkKERFU1RESVIpJChNQU5ESVIpL21hbjcKLS0JJChJTlNUQUxMKSAtYyAtbSA3NTUgJChTVFJJUCkgbHNwY2kgc2V0cGNpICQoREVTVERJUikkKFNCSU5ESVIpCi0rCSQoSU5TVEFMTCkgLWMgLW0gNzU1IGxzcGNpIHNldHBjaSAkKERFU1RESVIpJChTQklORElSKQotIAkkKElOU1RBTEwpIC1jIC1tIDc1NSB1cGRhdGUtcGNpaWRzICQoREVTVERJUikkKFNCSU5ESVIpCi0gCSQoSU5TVEFMTCkgLWMgLW0gNjQ0ICQoUENJX0lEUykgJChERVNURElSKSQoSURTRElSKQotIAkkKElOU1RBTEwpIC1jIC1tIDY0NCBsc3BjaS44IHNldHBjaS44IHVwZGF0ZS1wY2lpZHMuOCAkKERFU1RESVIpJChNQU5ESVIpL21hbjgKLWRpZmYgLXIgYWYyYjEwY2MzYzE0IGxpYi9jb25maWd1cmUKLS0tLSBhL2xpYi9jb25maWd1cmUJU3VuIEphbiAyMiAxODozNjozNCAyMDEyICswODAwCi0rKysgYi9saWIvY29uZmlndXJlCVN1biBKYW4gMjIgMTg6Mzg6NTQgMjAxMiArMDgwMAotQEAgLTE0LDYgKzE0LDEwIEBACitJbmRleDogcGNpdXRpbHMtMy41LjQvbGliL2NvbmZpZ3VyZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHBjaXV0aWxzLTMuNS40Lm9yaWcvbGliL2NvbmZpZ3VyZQorKysrIHBjaXV0aWxzLTMuNS40L2xpYi9jb25maWd1cmUKK0BAIC0xNCw2ICsxNCwxMCBAQCBlY2hvX24oKSB7CiAgCWZpCiAgfQogIApAQCAtNTEsNyArNDEsNyBAQAogIGlmIFsgLXogIiRWRVJTSU9OIiAtbyAteiAiJElEU0RJUiIgXSA7IHRoZW4KICAJZWNobyA+JjIgIlBsZWFzZSBydW4gdGhlIGNvbmZpZ3VyZSBzY3JpcHQgZnJvbSB0aGUgdG9wLWxldmVsIE1ha2VmaWxlIgogIAlleGl0IDEKLUBAIC0yMSw4ICsyNSw4IEBACitAQCAtMjEsOCArMjUsOCBAQCBmaQogIAogIGVjaG9fbiAiQ29uZmlndXJpbmcgbGlicGNpIGZvciB5b3VyIHN5c3RlbS4uLiIKICBpZiBbIC16ICIkSE9TVCIgXSA7IHRoZW4KQEAgLTYyLDcgKzUyLDcgQEAKICAJcmVhbHN5cz0iJHN5cyIKICAJaWYgWyAiJHN5cyIgPSAiQUlYIiAtYSAteCAvdXNyL2Jpbi9vc2xldmVsIC1hIC14IC91c3Ivc2Jpbi9sc2F0dHIgXQogIAl0aGVuCi1AQCAtMzAsNyArMzQsNyBAQAorQEAgLTMwLDcgKzM0LDcgQEAgaWYgWyAteiAiJEhPU1QiIF0gOyB0aGVuCiAgCQlwcm9jPWAvdXNyL3NiaW4vbHNkZXYgLUMgLWMgcHJvY2Vzc29yIC1TIGF2YWlsYWJsZSAtRiBuYW1lIHwgaGVhZCAtMWAKICAJCWNwdT1gL3Vzci9zYmluL2xzYXR0ciAtRiB2YWx1ZSAtbCAkcHJvYyAtYSB0eXBlIHwgc2VkICdzL18uKi8vJ2AKICAJZWxzZQpAQCAtNzEsNyArNjEsNyBAQAogIAlmaQogIAlpZiBbICIkc3lzIiA9ICJHTlUva0ZyZWVCU0QiIC1vICIkc3lzIiA9ICJEcmFnb25GbHkiIF0KICAJdGhlbgotQEAgLTQwLDcgKzQ0LDcgQEAKK0BAIC00MCw3ICs0NCw3IEBAIGlmIFsgLXogIiRIT1NUIiBdIDsgdGhlbgogIAl0aGVuCiAgCQlzeXM9Y3lnd2luCiAgCWZpCkBAIC04MCwyNCArNzAsMTEgQEAKICBmaQogIFsgLW4gIiRSRUxFQVNFIiBdICYmIHJlbD0iJHtSRUxFQVNFfSIKICAjIENBVkVBVDogdHIgb24gU29sYXJpcyBpcyBhIGJpdCB3ZWlyZCBhbmQgdGhlIGV4dHJhIFtdIGlzIG90aGVyd2lzZSBoYXJtbGVzcy4KLUBAIC00OSw2ICs1MywyMSBAQAorQEAgLTQ5LDYgKzUzLDggQEAgY3B1PWBlY2hvICRob3N0IHwgc2VkICdzL15cKFteLV0qXCktXChbXgogIHN5cz1gZWNobyAkaG9zdCB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpcKS1cKC4qXCkkL1wzLydgCiAgZWNobyAiICRob3N0ICRyZWwgJGNwdSAkc3lzIgogIAotK2lmIFsgIiRob3N0IiA9ICJsaW51eC0tZ251ZWFiaSIgXQotK3RoZW4KLSsJc3lzPWxpbnV4Ci0rZmkKLSsKLStpZiBbICIkaG9zdCIgPSAibGludXgtLXVjbGliYyIgXQotK3RoZW4KLSsJc3lzPWxpbnV4Ci0rZmkKLSsKLStpZiBbICIkaG9zdCIgPSAibGludXgtLXVjbGliY2VhYmkiIF0KLSt0aGVuCi0rCXN5cz1saW51eAotK2ZpCisreyBlY2hvICIkaG9zdCIgfCBncmVwIGxpbnV4OyB9ICYmIHN5cz1saW51eAogKwogIGM9Y29uZmlnLmgKICBtPWNvbmZpZy5tawpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNpdXRpbHMvcGNpdXRpbHMvZ3Vlc3MtZml4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNpdXRpbHMvcGNpdXRpbHMvZ3Vlc3MtZml4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NDBiNGEwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjaXV0aWxzL3BjaXV0aWxzL2d1ZXNzLWZpeC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLXRoZSBvcmlnaW5hbCBndWVzcyBhbGdvcml0aG0gaXMgYnJva2VuIGZvciBtYW55IGFyY2hzCi1mb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyB0d28gd291bGQgYnJlYWs6Ci0JYXJtLWxpbnV4LWdudWVhYmkgIC0tPiBzeXM9Z251ZWFiaQotCXg4Nl82NC11bmtub3duLXBjLWxpbnV4LWdudSAgLS0+IHN5cyA9IHBjLWxpbnV4LWdudQotCi11c2UgYSBzaW1wbGVyIHNjaGVtZSBoZXJlIGFuZCBob3BlIGl0IHdvcmtzIGZvciBhbGwgdGhlIGNhc2VzCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi03LzMwLzIwMTAgLSBjcmVhdGVkIGJ5IFFpbmcgSGUgPHFpbmcuaGVAaW50ZWwuY29tPgotCi1kaWZmIC0tZ2l0IGEvbGliL2NvbmZpZ3VyZSBiL2xpYi9jb25maWd1cmUKLWluZGV4IDQzMThiMDUuLjg0ZjZhY2IgMTAwNzU1Ci0tLS0gYS9saWIvY29uZmlndXJlCi0rKysgYi9saWIvY29uZmlndXJlCi1AQCAtNTMsMjAgKzUzLDcgQEAgY3B1PWBlY2hvICRob3N0IHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDEvJ2AKLSBzeXM9YGVjaG8gJGhvc3QgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMy8nYAotIGVjaG8gIiAkaG9zdCAkcmVsICRjcHUgJHN5cyIKLSAKLS1pZiBbICIkaG9zdCIgPSAibGludXgtLWdudWVhYmkiIF0KLS10aGVuCi0tCXN5cz1saW51eAotLWZpCi0tCi0taWYgWyAiJGhvc3QiID0gImxpbnV4LS11Y2xpYmMiIF0KLS10aGVuCi0tCXN5cz1saW51eAotLWZpCi0tCi0taWYgWyAiJGhvc3QiID0gImxpbnV4LS11Y2xpYmNlYWJpIiBdCi0tdGhlbgotLQlzeXM9bGludXgKLS1maQotK3sgZWNobyAiJGhvc3QiIHwgZ3JlcCBsaW51eDsgfSAmJiBzeXM9bGludXgKLSAKLSBjPWNvbmZpZy5oCi0gbT1jb25maWcubWsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjaXV0aWxzL3BjaXV0aWxzL21ha2VmaWxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNpdXRpbHMvcGNpdXRpbHMvbWFrZWZpbGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzZmJjNmYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNpdXRpbHMvcGNpdXRpbHMvbWFrZWZpbGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0KLVNpZ25lZC1vZmYtYnk6IElvbnV0IFJhZHUgPGlvbnV0eC5yYWR1QGludGVsLmNvbT4KLQotSW5kZXg6IHBjaXV0aWxzLTMuMi4wL01ha2VmaWxlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcGNpdXRpbHMtMy4yLjAub3JpZy9NYWtlZmlsZQotKysrIHBjaXV0aWxzLTMuMi4wL01ha2VmaWxlCi1AQCAtMzUsNyArMzUsNyBAQCBTSEFSRURJUj0kKFBSRUZJWCkvc2hhcmUKLSBJRFNESVI9JChTSEFSRURJUikKLSBNQU5ESVI6PSQoc2hlbGwgaWYgWyAtZCAkKFBSRUZJWCkvc2hhcmUvbWFuIF0gOyB0aGVuIGVjaG8gJChQUkVGSVgpL3NoYXJlL21hbiA7IGVsc2UgZWNobyAkKFBSRUZJWCkvbWFuIDsgZmkpCi0gSU5DRElSPSQoUFJFRklYKS9pbmNsdWRlCi0tTElCRElSPSQoUFJFRklYKS9saWIKLStMSUJESVI9JChsaWJkaXIpCi0gUEtHQ0ZESVI9JChMSUJESVIpL3BrZ2NvbmZpZwotIAotICMgQ29tbWFuZHMKLUBAIC05NCw3ICs5NCw3IEBAIGV4YW1wbGU6IGV4YW1wbGUubyBsaWIvJChQQ0lMSUJfREVWKQotIGV4YW1wbGUubzogZXhhbXBsZS5jICQoUENJSU5DKQotIAotICU6ICUubwotLQkkKENDKSAkKExERkxBR1MpICQoVEFSR0VUX0FSQ0gpICReICQoTElCX0xETElCUykgLW8gJEAKLSsJJChDQykgJChMREZMQUdTKSAkKFRBUkdFVF9BUkNIKSAkXiAkKExJQl9MRExJQlMpICQoTERMSUJTKSAtbyAkQAotIAotICUuOCAlLjc6ICUubWFuCi0gCU09YGVjaG8gJChEQVRFKSB8IHNlZCAncy8tMDEtLy1KYW51YXJ5LS87cy8tMDItLy1GZWJydWFyeS0vO3MvLTAzLS8tTWFyY2gtLztzLy0wNC0vLUFwcmlsLS87cy8tMDUtLy1NYXktLztzLy0wNi0vLUp1bmUtLztzLy0wNy0vLUp1bHktLztzLy0wOC0vLUF1Z3VzdC0vO3MvLTA5LS8tU2VwdGVtYmVyLS87cy8tMTAtLy1PY3RvYmVyLS87cy8tMTEtLy1Ob3ZlbWJlci0vO3MvLTEyLS8tRGVjZW1iZXItLztzL1woLipcKS1cKC4qXCktXCguKlwpL1wzIFwyIFwxLydgIDsgc2VkIDwkPCA+JEAgInMvQFRPREFZQC8kJE0vO3MvQFZFUlNJT05AL3BjaXV0aWxzLSQoVkVSU0lPTikvO3MjQElEU0RJUkAjJChJRFNESVIpIyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjaXV0aWxzL3BjaXV0aWxzXzMuNS4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNpdXRpbHMvcGNpdXRpbHNfMy41LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhNzI5N2UuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNpdXRpbHMvcGNpdXRpbHNfMy41LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi1TVU1NQVJZID0gIlBDSSB1dGlsaXRpZXMiCi1ERVNDUklQVElPTiA9ICdUaGUgUENJIFV0aWxpdGllcyBwYWNrYWdlIGNvbnRhaW5zIGEgbGlicmFyeSBmb3IgcG9ydGFibGUgYWNjZXNzIFwKLXRvIFBDSSBidXMgY29uZmlndXJhdGlvbiBzcGFjZSBhbmQgc2V2ZXJhbCB1dGlsaXRpZXMgYmFzZWQgb24gdGhpcyBsaWJyYXJ5LicKLUhPTUVQQUdFID0gImh0dHA6Ly9hdHJleS5rYXJsaW4ubWZmLmN1bmkuY3ovfm1qL3BjaXV0aWxzLnNodG1sIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgotREVQRU5EUyA9ICJ6bGliIGttb2QiCi0KLVNSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9zb2Z0d2FyZS91dGlscy9wY2l1dGlscy9wY2l1dGlscy0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2d1ZXNzLWZpeC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYWtlZmlsZS5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjFiZjViMDY4YmQ5Zjc1MTJlOGM2OGIwNjBiMjVhMWIyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNhOTkxNDFhOWY0MDUyOGQwYTAwMzU2NjVhMDZkYzM3ZGRiMWFlMzQxNjU4ZTUxYjUwYTc2ZWNmODYyMzVlZmMiCi0KLWluaGVyaXQgbXVsdGlsaWJfaGVhZGVyCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnaHdkYicsICcnLCBkKX0iCi1QQUNLQUdFQ09ORklHW2h3ZGJdID0gIkhXREI9eWVzLEhXREI9bm8sdWRldiIKLQotUENJX0NPTkZfRkxBRyA9ICJaTElCPXllcyBETlM9eWVzIFNIQVJFRD15ZXMiCi0KLSMgc2VlIGNvbmZpZ3VyZS5wYXRjaAotZG9fY29uZmlndXJlICgpIHsKLQkoCi0JICBjZCBsaWIgJiYgXAotCSAgIyBQQUNLQUdFQ09ORklHX0NPTkZBUkdTIGZvciB0aGlzIHJlY2lwZSBjb3VsZCBvbmx5IHBvc3NpYmx5IGNvbnRhaW4gJ0hXREI9eWVzL25vJywKLQkgICMgc28gd2UgcHV0IGl0IGJlZm9yZSAuL2NvbmZpZ3VyZQotCSAgJHtQQ0lfQ09ORl9GTEFHfSAke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IC4vY29uZmlndXJlICR7UFZ9ICR7ZGF0YWRpcn0gJHtUQVJHRVRfT1N9ICR7VEFSR0VUX0FSQ0h9Ci0JKQotfQotCi1leHBvcnQgUFJFRklYID0gIiR7cHJlZml4fSIKLWV4cG9ydCBTQklORElSID0gIiR7c2JpbmRpcn0iCi1leHBvcnQgU0hBUkVESVIgPSAiJHtkYXRhZGlyfSIKLWV4cG9ydCBNQU5ESVIgPSAiJHttYW5kaXJ9IgotCi1FWFRSQV9PRU1BS0UgPSAiLWUgTUFLRUZMQUdTPSAke1BDSV9DT05GX0ZMQUd9IgotCi0jIFRoZSBjb25maWd1cmUgc2NyaXB0IGJyZWFrcyBpZiB0aGUgSE9TVCB2YXJpYWJsZSBpcyBzZXQKLUhPU1RbdW5leHBvcnRdID0gIjEiCi0KLWRvX2luc3RhbGwgKCkgewotCW9lX3J1bm1ha2UgREVTVERJUj0ke0R9IGluc3RhbGwgaW5zdGFsbC1saWIKLQotCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotCWxuIC1zIC4uL3NiaW4vbHNwY2kgJHtEfSR7YmluZGlyfS9sc3BjaQotCi0Jb2VfbXVsdGlsaWJfaGVhZGVyIHBjaS9jb25maWcuaAotfQotCi1QQUNLQUdFUyA9KyAiJHtQTn0taWRzIGxpYnBjaSIKLUZJTEVTXyR7UE59LWlkcyA9ICIke2RhdGFkaXJ9L3BjaS5pZHMqIgotRklMRVNfbGlicGNpID0gIiR7bGliZGlyfS9saWJwY2kuc28uKiIKLVNVTU1BUllfJHtQTn0taWRzID0gIlBDSSB1dGlsaXRpZXMgLSBkZXZpY2UgSUQgZGF0YWJhc2UiCi1ERVNDUklQVElPTl8ke1BOfS1pZHMgPSAiUGFja2FnZSBwcm92aWRpbmcgdGhlIFBDSSBkZXZpY2UgSUQgZGF0YWJhc2UgZm9yIHBjaXV0aWxzLiIKLVJERVBFTkRTXyR7UE59ICs9ICIke1BOfS1pZHMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9wY2l1dGlscy9wY2l1dGlsc18zLjUuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjaXV0aWxzL3BjaXV0aWxzXzMuNS41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwNTFmZDgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9wY2l1dGlscy9wY2l1dGlsc18zLjUuNS5iYgpAQCAtMCwwICsxLDU4IEBACitTVU1NQVJZID0gIlBDSSB1dGlsaXRpZXMiCitERVNDUklQVElPTiA9ICdUaGUgUENJIFV0aWxpdGllcyBwYWNrYWdlIGNvbnRhaW5zIGEgbGlicmFyeSBmb3IgcG9ydGFibGUgYWNjZXNzIFwKK3RvIFBDSSBidXMgY29uZmlndXJhdGlvbiBzcGFjZSBhbmQgc2V2ZXJhbCB1dGlsaXRpZXMgYmFzZWQgb24gdGhpcyBsaWJyYXJ5LicKK0hPTUVQQUdFID0gImh0dHA6Ly9hdHJleS5rYXJsaW4ubWZmLmN1bmkuY3ovfm1qL3BjaXV0aWxzLnNodG1sIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgorREVQRU5EUyA9ICJ6bGliIGttb2QiCisKK1NSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9zb2Z0d2FyZS91dGlscy9wY2l1dGlscy9wY2l1dGlscy0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMjM4ZDk5NjljYzBkZThiOTEwNWQ5NzIwMDdkOWQ1NDYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWQ2MmY4ZmExOTJmOTBlNjFjMzVhNmZjMTVmZjNjYjlhN2E3OTJmNzgyNDA3YWNjNDJlZjY3ODE3YzU5MzlmNSIKKworaW5oZXJpdCBtdWx0aWxpYl9oZWFkZXIgcGtnY29uZmlnCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnaHdkYicsICcnLCBkKX0iCitQQUNLQUdFQ09ORklHW2h3ZGJdID0gIkhXREI9eWVzLEhXREI9bm8sdWRldiIKKworUENJX0NPTkZfRkxBRyA9ICJaTElCPXllcyBETlM9eWVzIFNIQVJFRD15ZXMgU1RSSVA9IExJQkRJUj0ke2xpYmRpcn0iCisKKyMgc2VlIGNvbmZpZ3VyZS5wYXRjaAorZG9fY29uZmlndXJlICgpIHsKKwkoCisJICBjZCBsaWIgJiYgXAorCSAgIyBQQUNLQUdFQ09ORklHX0NPTkZBUkdTIGZvciB0aGlzIHJlY2lwZSBjb3VsZCBvbmx5IHBvc3NpYmx5IGNvbnRhaW4gJ0hXREI9eWVzL25vJywKKwkgICMgc28gd2UgcHV0IGl0IGJlZm9yZSAuL2NvbmZpZ3VyZQorCSAgJHtQQ0lfQ09ORl9GTEFHfSAke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IC4vY29uZmlndXJlICR7UFZ9ICR7ZGF0YWRpcn0gJHtUQVJHRVRfT1N9ICR7VEFSR0VUX0FSQ0h9CisJKQorfQorCitleHBvcnQgUFJFRklYID0gIiR7cHJlZml4fSIKK2V4cG9ydCBTQklORElSID0gIiR7c2JpbmRpcn0iCitleHBvcnQgU0hBUkVESVIgPSAiJHtkYXRhZGlyfSIKK2V4cG9ydCBNQU5ESVIgPSAiJHttYW5kaXJ9IgorCitFWFRSQV9PRU1BS0UgPSAiLWUgTUFLRUZMQUdTPSAke1BDSV9DT05GX0ZMQUd9IgorCisjIFRoZSBjb25maWd1cmUgc2NyaXB0IGJyZWFrcyBpZiB0aGUgSE9TVCB2YXJpYWJsZSBpcyBzZXQKK0hPU1RbdW5leHBvcnRdID0gIjEiCisKK2RvX2luc3RhbGwgKCkgeworCW9lX3J1bm1ha2UgREVTVERJUj0ke0R9IGluc3RhbGwgaW5zdGFsbC1saWIKKworCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQorCWxuIC1zIC4uL3NiaW4vbHNwY2kgJHtEfSR7YmluZGlyfS9sc3BjaQorCisJb2VfbXVsdGlsaWJfaGVhZGVyIHBjaS9jb25maWcuaAorfQorCitQQUNLQUdFUyA9KyAiJHtQTn0taWRzIGxpYnBjaSIKK0ZJTEVTXyR7UE59LWlkcyA9ICIke2RhdGFkaXJ9L3BjaS5pZHMqIgorRklMRVNfbGlicGNpID0gIiR7bGliZGlyfS9saWJwY2kuc28uKiIKK1NVTU1BUllfJHtQTn0taWRzID0gIlBDSSB1dGlsaXRpZXMgLSBkZXZpY2UgSUQgZGF0YWJhc2UiCitERVNDUklQVElPTl8ke1BOfS1pZHMgPSAiUGFja2FnZSBwcm92aWRpbmcgdGhlIFBDSSBkZXZpY2UgSUQgZGF0YWJhc2UgZm9yIHBjaXV0aWxzLiIKK1JERVBFTkRTXyR7UE59ICs9ICIke1BOfS1pZHMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9zeXN0ZW1kLWJvb3QvZmlsZXMvMDAwMS11c2UtbG5yLXdyYXBwZXItaW5zdGVhZC1vZi1sb29raW5nLWZvci1yZWxhdGl2ZS1vcHRpLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3Avc3lzdGVtZC1ib290L2ZpbGVzLzAwMDEtdXNlLWxuci13cmFwcGVyLWluc3RlYWQtb2YtbG9va2luZy1mb3ItcmVsYXRpdmUtb3B0aS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmM5MmRiNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9zeXN0ZW1kLWJvb3QvZmlsZXMvMDAwMS11c2UtbG5yLXdyYXBwZXItaW5zdGVhZC1vZi1sb29raW5nLWZvci1yZWxhdGl2ZS1vcHRpLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotRnJvbSBhMzQ4MmM5MTY0MmNmNTY4YjNhYzI3ZmE2YzBjYjNjNmIzMDY2OWI3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgOSBOb3YgMjAxNiAxOTozMjoxNCAtMDgwMAotU3ViamVjdDogW1BBVENIIDA3LzE5XSB1c2UgbG5yIHdyYXBwZXIgaW5zdGVhZCBvZiBsb29raW5nIGZvciAtLXJlbGF0aXZlCi0gb3B0aW9uIGZvciBsbgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FLVNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gTWFrZWZpbGUuYW0gIHwgMiArLQotIGNvbmZpZ3VyZS5hYyB8IDIgLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAzIGRlbGV0aW9ucygtKQotCi1JbmRleDogZ2l0L01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvTWFrZWZpbGUuYW0KLSsrKyBnaXQvTWFrZWZpbGUuYW0KLUBAIC0zMjAsNyArMzIwLDcgQEAgZGVmaW5lIGluc3RhbGwtcmVsYXRpdmUtYWxpYXNlcwotIAl3aGlsZSBbIC1uICIkJDEiIF07IGRvIFwKLSAJCSQoTUtESVJfUCkgYGRpcm5hbWUgJChERVNURElSKSQkZGlyLyQkMmAgJiYgXAotIAkJcm0gLWYgJChERVNURElSKSQkZGlyLyQkMiAmJiBcCi0tCQkkKExOX1MpIC0tcmVsYXRpdmUgJChERVNURElSKSQkMSAkKERFU1RESVIpJCRkaXIvJCQyICYmIFwKLSsJCWxuciAkKERFU1RESVIpJCQxICQoREVTVERJUikkJGRpci8kJDIgJiYgXAotIAkJc2hpZnQgMiB8fCBleGl0ICQkPzsgXAotIAlkb25lCi0gZW5kZWYKLUluZGV4OiBnaXQvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvY29uZmlndXJlLmFjCi0rKysgZ2l0L2NvbmZpZ3VyZS5hYwotQEAgLTExMCw4ICsxMTAsNiBAQCBBQ19QQVRIX1BST0coW1NVTE9HSU5dLCBbc3Vsb2dpbl0sIFsvdXNyCi0gQUNfUEFUSF9QUk9HKFtNT1VOVF9QQVRIXSwgW21vdW50XSwgWy91c3IvYmluL21vdW50XSwgWyRQQVRIOi91c3Ivc2Jpbjovc2Jpbl0pCi0gQUNfUEFUSF9QUk9HKFtVTU9VTlRfUEFUSF0sIFt1bW91bnRdLCBbL3Vzci9iaW4vdW1vdW50XSwgWyRQQVRIOi91c3Ivc2Jpbjovc2Jpbl0pCi0gCi0tQVNfSUYoWyEgbG4gLS1yZWxhdGl2ZSAtLWhlbHAgPiAvZGV2L251bGwgMj4mMV0sIFtBQ19NU0dfRVJST1IoWyoqKiBsbiBkb2Vzbid0IHN1cHBvcnQgLS1yZWxhdGl2ZSAqKipdKV0pCi0tCi0gTTRfREVGSU5FUz0KLSAKLSBBQ19DSEVDS19UT09MKE9CSkNPUFksIG9iamNvcHkpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC9zeXN0ZW1kLWJvb3Qvc3lzdGVtZC1ib290XzIzMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3N5c3RlbWQtYm9vdC9zeXN0ZW1kLWJvb3RfMjMyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNDcxY2UyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3N5c3RlbWQtYm9vdC9zeXN0ZW1kLWJvb3RfMjMyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotcmVxdWlyZSByZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLmluYwotCi1ERVBFTkRTID0gImludGx0b29sLW5hdGl2ZSBsaWJjYXAgdXRpbC1saW51eCBnbnUtZWZpIGdwZXJmLW5hdGl2ZSIKLQotU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtdXNlLWxuci13cmFwcGVyLWluc3RlYWQtb2YtbG9va2luZy1mb3ItcmVsYXRpdmUtb3B0aS5wYXRjaCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQKLWluaGVyaXQgZGVwbG95Ci0KLSMgTWFuIHBhZ2VzIGFyZSBwYWNrYWdlZCB0aHJvdWdoIHRoZSBtYWluIHN5c3RlbWQgcmVjaXBlCi1FWFRSQV9PRUNPTkYgPSAiIC0tZW5hYmxlLWdudWVmaSBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1lZmktaW5jbHVkZWRpcj0ke1NUQUdJTkdfSU5DRElSfSBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1lZmktbGRzZGlyPSR7U1RBR0lOR19MSUJESVJ9IFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLWVmaS1saWJkaXI9JHtTVEFHSU5HX0xJQkRJUn0gXAotICAgICAgICAgICAgICAgICAtLWRpc2FibGUtbWFucGFnZXMgXAotICAgICAgICAgICAgICAgIgotCi0jIEltcG9ydGVkIGZyb20gdGhlIG9sZCBndW1taWJvb3QgcmVjaXBlCi1UVU5FX0NDQVJHU19yZW1vdmUgPSAiLW1mcG1hdGg9c3NlIgotQ09NUEFUSUJMRV9IT1NUID0gIih4ODZfNjQuKnxpLjg2LiopLWxpbnV4IgotCi1kb19jb21waWxlKCkgewotCVNZU1RFTURfQk9PVF9FRklfQVJDSD0iaWEzMiIKLQlpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAieDg2XzY0IiBdOyB0aGVuCi0JCVNZU1RFTURfQk9PVF9FRklfQVJDSD0ieDY0IgotCWZpCi0KLQlvZV9ydW5tYWtlIHN5c3RlbWQtYm9vdCR7U1lTVEVNRF9CT09UX0VGSV9BUkNIfS5lZmkKLX0KLQotZG9faW5zdGFsbCgpIHsKLQkjIEJ5cGFzcyBzeXN0ZW1kIGluc3RhbGxhdGlvbiB3aXRoIGEgTk9QCi0JOgotfQotCi1kb19kZXBsb3kgKCkgewotCWluc3RhbGwgJHtCfS9zeXN0ZW1kLWJvb3QqLmVmaSAke0RFUExPWURJUn0KLX0KLWFkZHRhc2sgZGVwbG95IGJlZm9yZSBkb19idWlsZCBhZnRlciBkb19jb21waWxlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvZmlsZXMvMTBtNTAtdXBkYXRlLWRldmljZS10cmVlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L2ZpbGVzLzEwbTUwLXVwZGF0ZS1kZXZpY2UtdHJlZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NDE5NTNjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L2ZpbGVzLzEwbTUwLXVwZGF0ZS1kZXZpY2UtdHJlZS5wYXRjaApAQCAtMCwwICsxLDI4IEBACitOaW9zIElJIGZvciBNQVgxMCAxMG01MCBib2FyZCByZXF1aXJlcyB1cGRhdGUgdG8gCitpdHMgZGV2aWNlIHRyZWUgdG8gZW5hYmxlIENQVSBkcml2ZXIgZHVyaW5nCit1LWJvb3QgcHJlLXJlbG9jYXRpb24uIFRoaXMgcGF0Y2ggdGFnIHRoZSBDUFUgCit3aXRoIGRtLXByZS1yZWxvYyBmbGFnLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorCitTaWduZWQtb2ZmLWJ5OiBHYW4sIFlhdSBXYWkgPHlhdS53YWkuZ2FuQGludGVsLmNvbT4KKworLS0tCisgYXJjaC9uaW9zMi9kdHMvMTBtNTBfZGV2Ym9hcmQuZHRzIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9hcmNoL25pb3MyL2R0cy8xMG01MF9kZXZib2FyZC5kdHMgYi9hcmNoL25pb3MyL2R0cy8xMG01MF9kZXZib2FyZC5kdHMKK2luZGV4IDA1ZWFjMzAuLjQ2MWFlNjggMTAwNjQ0CistLS0gYS9hcmNoL25pb3MyL2R0cy8xMG01MF9kZXZib2FyZC5kdHMKKysrKyBiL2FyY2gvbmlvczIvZHRzLzEwbTUwX2RldmJvYXJkLmR0cworQEAgLTE5LDYgKzE5LDcgQEAKKyAJCSNzaXplLWNlbGxzID0gPDA+OworIAorIAkJY3B1OiBjcHVAMCB7CisrCQkJdS1ib290LGRtLXByZS1yZWxvYzsKKyAJCQlkZXZpY2VfdHlwZSA9ICJjcHUiOworIAkJCWNvbXBhdGlibGUgPSAiYWx0cixuaW9zMi0xLjEiOworIAkJCXJlZyA9IDwweDAwMDAwMDAwPjsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L2ZpbGVzL01QQzgzMTVFUkRCLWVuYWJsZS1ESENQLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L2ZpbGVzL01QQzgzMTVFUkRCLWVuYWJsZS1ESENQLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlYTUyYjcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvZmlsZXMvTVBDODMxNUVSREItZW5hYmxlLURIQ1AucGF0Y2gKQEAgLTAsMCArMSwxOSBAQAorRW5hYmxlZCBkaGNwIGNsaWVudCBmdW5jdGlvbmFsaXR5IGZvciBZb2N0byByZWZlcmVuY2UKK2hhcmR3YXJlIE1QQzgzMTVFLVJEQi4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEVkIEJhcnRvc2ggPGVkLmJhcnRvc2hAbGludXguaW50ZWwuY29tPgorCitkaWZmIC0tZ2l0IGEvY29uZmlncy9NUEM4MzE1RVJEQl9kZWZjb25maWcgYi9jb25maWdzL01QQzgzMTVFUkRCX2RlZmNvbmZpZworaW5kZXggNGUyYjcwNS4uYjAyYWIxZiAxMDA2NDQKKy0tLSBhL2NvbmZpZ3MvTVBDODMxNUVSREJfZGVmY29uZmlnCisrKysgYi9jb25maWdzL01QQzgzMTVFUkRCX2RlZmNvbmZpZworQEAgLTksNiArOSw3IEBAIENPTkZJR19IVVNIX1BBUlNFUj15CisgQ09ORklHX0NNRF9JMkM9eQorIENPTkZJR19DTURfVVNCPXkKKyAjIENPTkZJR19DTURfU0VURVhQUiBpcyBub3Qgc2V0CisrQ09ORklHX0NNRF9ESENQPXkKKyBDT05GSUdfQ01EX01JST15CisgQ09ORklHX0NNRF9QSU5HPXkKKyBDT05GSUdfQ01EX0VYVDI9eQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L2ZpbGVzL2RlZmF1bHQtZ2NjLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L2ZpbGVzL2RlZmF1bHQtZ2NjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNDE4NGRmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC9maWxlcy9kZWZhdWx0LWdjYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLU9FIG5lZWRzIHRvIGJlIGFibGUgdG8gY2hhbmdlIHRoZSBkZWZhdWx0IGNvbXBpbGVyLiBJZiB3ZSBwYXNzIGluIEhPU1RDQwotdGhyb3VnaCB0aGUgbWFrZSBjb21tYW5kLCBpdCBvdmVyd3JpdGVzIG5vdCBvbmx5IHRoaXMgc2V0dGluZyBidXQgYWxzbyB0aGUgCi1zZXR0aW5nIGluIHRvb2xzL01ha2VmaWxlIHdyYXBwZWQgaW4gaWZuZXEgKCQoQ1JPU1NfQlVJTERfVE9PTFMpLCkgd2hpY2ggCi1icmVha3MgdGhlIGJ1aWxkLgotCi1XZSB0aGVyZWZvcmUgdXNlIG92ZXJyaWRlIHRvIGVuc3VyZSB0aGUgdmFsdWUgb2YgSE9TVENDIGlzIG92ZXJ3cml0dGVuIHdoZW4KLW5lZWRlZC4KLQotUlA6IFVwZGF0ZWQgdGhlIHBhdGNoIHRvIHRoZSB2ZXJzaW9uIGJlaW5nIHN1Ym1pdHRlZCB0byB1cHN0cmVhbSB1LWJvb3QKLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2VtYWlsZWQgdG8gTWFzYWhpcm8gWWFtYWRhIGZvciBkaXNjdXNzaW9uXQotUlAgMjAxNy8zLzExCi0KLUluZGV4OiBnaXQvdG9vbHMvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy90b29scy9NYWtlZmlsZQotKysrIGdpdC90b29scy9NYWtlZmlsZQotQEAgLTI2Miw3ICsyNjIsNyBAQCAkKExJQ0VOU0VfSCk6ICQob2JqKS9iaW4yaGVhZGVyICQoc3JjdHJlCi0gc3ViZGlyLSArPSBlbnYKLSAKLSBpZm5lcSAoJChDUk9TU19CVUlMRF9UT09MUyksKQotLUhPU1RDQyA9ICQoQ0MpCi0rb3ZlcnJpZGUgSE9TVENDID0gJChDQykKLSAKLSBxdWlldF9jbWRfY3Jvc3N0b29sc19zdHJpcCA9IFNUUklQICAgJF4KLSAgICAgICBjbWRfY3Jvc3N0b29sc19zdHJpcCA9ICQoU1RSSVApICReOyB0b3VjaCAkQAotSW5kZXg6IGdpdC90b29scy9lbnYvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy90b29scy9lbnYvTWFrZWZpbGUKLSsrKyBnaXQvdG9vbHMvZW52L01ha2VmaWxlCi1AQCAtOCw3ICs4LDcgQEAKLSAjIGZ3X3ByaW50ZW52IGlzIHN1cHBvc2VkIHRvIHJ1biBvbiB0aGUgdGFyZ2V0IHN5c3RlbSwgd2hpY2ggbWVhbnMgaXQgc2hvdWxkIGJlCi0gIyBidWlsdCB3aXRoIGNyb3NzIHRvb2xzLiBBbHRob3VnaCBpdCBtYXkgbG9vayB3ZWlyZCwgd2Ugb25seSByZXBsYWNlICJIT1NUQ0MiCi0gIyB3aXRoICJDQyIgaGVyZSBmb3IgdGhlIG1heGltdW0gY29kZSByZXVzZSBvZiBzY3JpcHRzL01ha2VmaWxlLmhvc3QuCi0tSE9TVENDID0gJChDQykKLStvdmVycmlkZSBIT1NUQ0MgPSAkKENDKQotIAotICMgQ29tcGlsZSBmb3IgYSBob3N0ZWQgZW52aXJvbm1lbnQgb24gdGhlIHRhcmdldAotIEhPU1RfRVhUUkFDRkxBR1MgID0gJChwYXRzdWJzdCAtSSUsLWlkaXJhZnRlciUsICQoZmlsdGVyIC1JJSwgJChVQk9PVElOQ0xVREUpKSkgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1jb21tb25fMjAxNy4wMS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LWNvbW1vbl8yMDE3LjAxLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGYyNGM4NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LWNvbW1vbl8yMDE3LjAxLmluYworKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZGVueC5kZS93aWtpL1UtQm9vdC9XZWJIb21lIgotU0VDVElPTiA9ICJib290bG9hZGVycyIKLQotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MaWNlbnNlcy9SRUFETUU7bWQ1PWEyYzY3OGNmZDRhNGQ5NzEzNTU4NWNhZDkwODU0MWM2IgotUEUgPSAiMSIKLQotIyBXZSB1c2UgdGhlIHJldmlzaW9uIGluIG9yZGVyIHRvIGF2b2lkIGhhdmluZyB0byBmZXRjaCBpdCBmcm9tIHRoZQotIyByZXBvIGR1cmluZyBwYXJzZQotU1JDUkVWID0gImE3MDVlYmM4MWI3ZjkxYmJkMGVmN2M2MzQyODQyMDgzNDI5MDExNDkiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LmRlbnguZGUvdS1ib290LmdpdCIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtY29tbW9uXzIwMTcuMDkuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1jb21tb25fMjAxNy4wOS5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDJlNTEyNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtY29tbW9uXzIwMTcuMDkuaW5jCkBAIC0wLDAgKzEsMTcgQEAKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZGVueC5kZS93aWtpL1UtQm9vdC9XZWJIb21lIgorU0VDVElPTiA9ICJib290bG9hZGVycyIKKworTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MaWNlbnNlcy9SRUFETUU7bWQ1PWEyYzY3OGNmZDRhNGQ5NzEzNTU4NWNhZDkwODU0MWM2IgorUEUgPSAiMSIKKworIyBXZSB1c2UgdGhlIHJldmlzaW9uIGluIG9yZGVyIHRvIGF2b2lkIGhhdmluZyB0byBmZXRjaCBpdCBmcm9tIHRoZQorIyByZXBvIGR1cmluZyBwYXJzZQorU1JDUkVWID0gImM5OGFjMzQ4N2U0MTNjNzFlNWQzNjMyMmVmMzMyNGIyMWM2ZjYwZjkiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LmRlbnguZGUvdS1ib290LmdpdCBcCisgICAgZmlsZTovL01QQzgzMTVFUkRCLWVuYWJsZS1ESENQLnBhdGNoIFwKKyAgICBmaWxlOi8vMTBtNTAtdXBkYXRlLWRldmljZS10cmVlLnBhdGNoIFwKKyIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtZnctdXRpbHNfMjAxNy4wMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtZnctdXRpbHNfMjAxNy4wMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjYzMTQ5OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LWZ3LXV0aWxzXzIwMTcuMDEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1yZXF1aXJlIHUtYm9vdC1jb21tb25fJHtQVn0uaW5jCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9kZWZhdWx0LWdjYy5wYXRjaCIKLQotU1VNTUFSWSA9ICJVLUJvb3QgYm9vdGxvYWRlciBmd19wcmludGVudi9zZXRlbnYgdXRpbGl0aWVzIgotREVQRU5EUyA9ICJtdGQtdXRpbHMiCi0KLUlOU0FORV9TS0lQXyR7UE59ID0gImFscmVhZHktc3RyaXBwZWQiCi1FWFRSQV9PRU1BS0VfY2xhc3MtdGFyZ2V0ID0gJ0NST1NTX0NPTVBJTEU9JHtUQVJHRVRfUFJFRklYfSBDQz0iJHtDQ30gJHtDRkxBR1N9ICR7TERGTEFHU30iIEhPU1RDQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30iIFY9MScKLUVYVFJBX09FTUFLRV9jbGFzcy1jcm9zcyA9ICdBUkNIPSR7VEFSR0VUX0FSQ0h9IENDPSIke0NDfSAke0NGTEFHU30gJHtMREZMQUdTfSIgVj0xJwotCi1pbmhlcml0IHVib290LWNvbmZpZwotCi1kb19jb21waWxlICgpIHsKLQlvZV9ydW5tYWtlICR7VUJPT1RfTUFDSElORX0KLQlvZV9ydW5tYWtlIGVudgotfQotCi1kb19pbnN0YWxsICgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke2Jhc2Vfc2JpbmRpcn0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9Ci0JaW5zdGFsbCAtbSA3NTUgJHtTfS90b29scy9lbnYvZndfcHJpbnRlbnYgJHtEfSR7YmFzZV9zYmluZGlyfS9md19wcmludGVudgotCWluc3RhbGwgLW0gNzU1ICR7U30vdG9vbHMvZW52L2Z3X3ByaW50ZW52ICR7RH0ke2Jhc2Vfc2JpbmRpcn0vZndfc2V0ZW52Ci0JaW5zdGFsbCAtbSAwNjQ0ICR7U30vdG9vbHMvZW52L2Z3X2Vudi5jb25maWcgJHtEfSR7c3lzY29uZmRpcn0vZndfZW52LmNvbmZpZwotfQotCi1kb19pbnN0YWxsX2NsYXNzLWNyb3NzICgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcl9jcm9zc30KLQlpbnN0YWxsIC1tIDc1NSAke1N9L3Rvb2xzL2Vudi9md19wcmludGVudiAke0R9JHtiaW5kaXJfY3Jvc3N9L2Z3X3ByaW50ZW52Ci0JaW5zdGFsbCAtbSA3NTUgJHtTfS90b29scy9lbnYvZndfcHJpbnRlbnYgJHtEfSR7YmluZGlyX2Nyb3NzfS9md19zZXRlbnYKLX0KLQotU1lTUk9PVF9ESVJTX2FwcGVuZF9jbGFzcy1jcm9zcyA9ICIgJHtiaW5kaXJfY3Jvc3N9IgotCi1QQUNLQUdFX0FSQ0ggPSAiJHtNQUNISU5FX0FSQ0h9IgotQkJDTEFTU0VYVEVORCA9ICJjcm9zcyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtZnctdXRpbHNfMjAxNy4wOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtZnctdXRpbHNfMjAxNy4wOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjg4N2ExCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1mdy11dGlsc18yMDE3LjA5LmJiCkBAIC0wLDAgKzEsMzQgQEAKK3JlcXVpcmUgdS1ib290LWNvbW1vbl8ke1BWfS5pbmMKKworU1VNTUFSWSA9ICJVLUJvb3QgYm9vdGxvYWRlciBmd19wcmludGVudi9zZXRlbnYgdXRpbGl0aWVzIgorREVQRU5EUyA9ICJtdGQtdXRpbHMiCisKK0lOU0FORV9TS0lQXyR7UE59ID0gImFscmVhZHktc3RyaXBwZWQiCitFWFRSQV9PRU1BS0VfY2xhc3MtdGFyZ2V0ID0gJ0NST1NTX0NPTVBJTEU9JHtUQVJHRVRfUFJFRklYfSBDQz0iJHtDQ30gJHtDRkxBR1N9ICR7TERGTEFHU30iIEhPU1RDQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30iIFY9MScKK0VYVFJBX09FTUFLRV9jbGFzcy1jcm9zcyA9ICdIT1NUQ0M9IiR7Q0N9ICR7Q0ZMQUdTfSAke0xERkxBR1N9IiBWPTEnCisKK2luaGVyaXQgdWJvb3QtY29uZmlnCisKK2RvX2NvbXBpbGUgKCkgeworCW9lX3J1bm1ha2UgJHtVQk9PVF9NQUNISU5FfQorCW9lX3J1bm1ha2UgZW52dG9vbHMKK30KKworZG9faW5zdGFsbCAoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtiYXNlX3NiaW5kaXJ9CisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfQorCWluc3RhbGwgLW0gNzU1ICR7U30vdG9vbHMvZW52L2Z3X3ByaW50ZW52ICR7RH0ke2Jhc2Vfc2JpbmRpcn0vZndfcHJpbnRlbnYKKwlpbnN0YWxsIC1tIDc1NSAke1N9L3Rvb2xzL2Vudi9md19wcmludGVudiAke0R9JHtiYXNlX3NiaW5kaXJ9L2Z3X3NldGVudgorCWluc3RhbGwgLW0gMDY0NCAke1N9L3Rvb2xzL2Vudi9md19lbnYuY29uZmlnICR7RH0ke3N5c2NvbmZkaXJ9L2Z3X2Vudi5jb25maWcKK30KKworZG9faW5zdGFsbF9jbGFzcy1jcm9zcyAoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJfY3Jvc3N9CisJaW5zdGFsbCAtbSA3NTUgJHtTfS90b29scy9lbnYvZndfcHJpbnRlbnYgJHtEfSR7YmluZGlyX2Nyb3NzfS9md19wcmludGVudgorCWluc3RhbGwgLW0gNzU1ICR7U30vdG9vbHMvZW52L2Z3X3ByaW50ZW52ICR7RH0ke2JpbmRpcl9jcm9zc30vZndfc2V0ZW52Cit9CisKK1NZU1JPT1RfRElSU19hcHBlbmRfY2xhc3MtY3Jvc3MgPSAiICR7YmluZGlyX2Nyb3NzfSIKKworUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKK0JCQ0xBU1NFWFRFTkQgPSAiY3Jvc3MiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LW1raW1hZ2VfMjAxNy4wMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtbWtpbWFnZV8yMDE3LjAxLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZTk5OWU3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtbWtpbWFnZV8yMDE3LjAxLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotcmVxdWlyZSB1LWJvb3QtY29tbW9uXyR7UFZ9LmluYwotCi1TUkNfVVJJICs9ICJmaWxlOi8vZGVmYXVsdC1nY2MucGF0Y2giCi0KLVNVTU1BUlkgPSAiVS1Cb290IGJvb3Rsb2FkZXIgaW1hZ2UgY3JlYXRpb24gdG9vbCIKLURFUEVORFMgPSAib3BlbnNzbCIKLQotRVhUUkFfT0VNQUtFX2NsYXNzLXRhcmdldCA9ICdDUk9TU19DT01QSUxFPSIke1RBUkdFVF9QUkVGSVh9IiBDQz0iJHtDQ30gJHtDRkxBR1N9ICR7TERGTEFHU30iIEhPU1RDQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30iIFNUUklQPXRydWUgVj0xJwotRVhUUkFfT0VNQUtFX2NsYXNzLW5hdGl2ZSA9ICdDQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30iIEhPU1RDQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30iIFNUUklQPXRydWUgVj0xJwotRVhUUkFfT0VNQUtFX2NsYXNzLW5hdGl2ZXNkayA9ICdDUk9TU19DT01QSUxFPSIke0hPU1RfUFJFRklYfSIgQ0M9IiR7Q0N9ICR7Q0ZMQUdTfSAke0xERkxBR1N9IiBIT1NUQ0M9IiR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSAke0JVSUxEX0xERkxBR1N9IiBTVFJJUD10cnVlIFY9MScKLQotZG9fY29tcGlsZSAoKSB7Ci0Jb2VfcnVubWFrZSBzYW5kYm94X2RlZmNvbmZpZwotCi0JIyBEaXNhYmxlIENPTkZJR19DTURfTElDRU5TRSwgbGljZW5zZS5oIGlzIG5vdCB1c2VkIGJ5IHRvb2xzIGFuZAotCSMgZ2VuZXJhdGluZyBpdCByZXF1aXJlcyBiaW4yaGVhZGVyIHRvb2wsIHdoaWNoIGZvciB0YXJnZXQgYnVpbGQKLQkjIGlzIGJ1aWx0IHdpdGggdGFyZ2V0IHRvb2xzIGFuZCB0aHVzIGNhbm5vdCBiZSBleGVjdXRlZCBvbiBob3N0LgotCXNlZCAtaSAicy9DT05GSUdfQ01EX0xJQ0VOU0U9LiovIyBDT05GSUdfQ01EX0xJQ0VOU0UgaXMgbm90IHNldC8iIC5jb25maWcKLQotCW9lX3J1bm1ha2UgY3Jvc3NfdG9vbHMgTk9fU0RMPTEKLX0KLQotZG9faW5zdGFsbCAoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9Ci0JaW5zdGFsbCAtbSAwNzU1IHRvb2xzL21raW1hZ2UgJHtEfSR7YmluZGlyfS91Ym9vdC1ta2ltYWdlCi0JbG4gLXNmIHVib290LW1raW1hZ2UgJHtEfSR7YmluZGlyfS9ta2ltYWdlCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtbWtpbWFnZV8yMDE3LjA5LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1ta2ltYWdlXzIwMTcuMDkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjFmYzU2NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtbWtpbWFnZV8yMDE3LjA5LmJiCkBAIC0wLDAgKzEsMjcgQEAKK3JlcXVpcmUgdS1ib290LWNvbW1vbl8ke1BWfS5pbmMKKworU1VNTUFSWSA9ICJVLUJvb3QgYm9vdGxvYWRlciBpbWFnZSBjcmVhdGlvbiB0b29sIgorREVQRU5EUyA9ICJvcGVuc3NsIgorCitFWFRSQV9PRU1BS0VfY2xhc3MtdGFyZ2V0ID0gJ0NST1NTX0NPTVBJTEU9IiR7VEFSR0VUX1BSRUZJWH0iIENDPSIke0NDfSAke0NGTEFHU30gJHtMREZMQUdTfSIgSE9TVENDPSIke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSIgU1RSSVA9dHJ1ZSBWPTEnCitFWFRSQV9PRU1BS0VfY2xhc3MtbmF0aXZlID0gJ0NDPSIke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSIgSE9TVENDPSIke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSIgU1RSSVA9dHJ1ZSBWPTEnCitFWFRSQV9PRU1BS0VfY2xhc3MtbmF0aXZlc2RrID0gJ0NST1NTX0NPTVBJTEU9IiR7SE9TVF9QUkVGSVh9IiBDQz0iJHtDQ30gJHtDRkxBR1N9ICR7TERGTEFHU30iIEhPU1RDQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30iIFNUUklQPXRydWUgVj0xJworCitkb19jb21waWxlICgpIHsKKwlvZV9ydW5tYWtlIHNhbmRib3hfZGVmY29uZmlnCisKKwkjIERpc2FibGUgQ09ORklHX0NNRF9MSUNFTlNFLCBsaWNlbnNlLmggaXMgbm90IHVzZWQgYnkgdG9vbHMgYW5kCisJIyBnZW5lcmF0aW5nIGl0IHJlcXVpcmVzIGJpbjJoZWFkZXIgdG9vbCwgd2hpY2ggZm9yIHRhcmdldCBidWlsZAorCSMgaXMgYnVpbHQgd2l0aCB0YXJnZXQgdG9vbHMgYW5kIHRodXMgY2Fubm90IGJlIGV4ZWN1dGVkIG9uIGhvc3QuCisJc2VkIC1pICJzL0NPTkZJR19DTURfTElDRU5TRT0uKi8jIENPTkZJR19DTURfTElDRU5TRSBpcyBub3Qgc2V0LyIgLmNvbmZpZworCisJb2VfcnVubWFrZSBjcm9zc190b29scyBOT19TREw9MQorfQorCitkb19pbnN0YWxsICgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KKwlpbnN0YWxsIC1tIDA3NTUgdG9vbHMvbWtpbWFnZSAke0R9JHtiaW5kaXJ9L3Vib290LW1raW1hZ2UKKwlsbiAtc2YgdWJvb3QtbWtpbWFnZSAke0R9JHtiaW5kaXJ9L21raW1hZ2UKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LmluYwppbmRleCBhYTIxYzBlLi5jMmJjZjk5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LmluYwpAQCAtMzA0LDQgKzMwNCw0IEBACiAgICAgZmkKIH0KIAotYWRkdGFzayBkZXBsb3kgYmVmb3JlIGRvX2J1aWxkIGFmdGVyIGRvX2luc3RhbGwKK2FkZHRhc2sgZGVwbG95IGJlZm9yZSBkb19idWlsZCBhZnRlciBkb19jb21waWxlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290XzIwMTcuMDEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290XzIwMTcuMDkuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3RfMjAxNy4wMS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdF8yMDE3LjA5LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9hdmFoaS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9hdmFoaS5pbmMKaW5kZXggZmFhODc0MS4uNzgxNDQ2NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvYXZhaGkuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2F2YWhpLmluYwpAQCAtNjMsMTAgKzYzLDYgQEAKIEVYVFJBX09FQ09ORl9TWVNWSU5JVCA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdmluaXQnLCctLXdpdGgtZGlzdHJvPWRlYmlhbicsJy0td2l0aC1kaXN0cm89bm9uZScsZCl9IgogRVhUUkFfT0VDT05GX1NZU1RFTUQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCctLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXI9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8nLCctLXdpdGhvdXQtc3lzdGVtZHN5c3RlbXVuaXRkaXInLGQpfSIKIAotCi1MREZMQUdTX2FwcGVuZF9saWJjLXVjbGliYyA9ICIgLWxpbnRsIgotTERGTEFHU19hcHBlbmRfdWNsaW51eC11Y2xpYmMgPSAiIC1saW50bCIKLQogZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CiAgICAgc2VkICdzOkFNX0NIRUNLX1BZTU9EOmVjaG8gIm5vIHB5bW9kIiAjQU1fQ0hFQ0tfUFlNT0Q6ZycgLWkgJHtTfS9jb25maWd1cmUuYWMKIApAQCAtMTExLDcgKzEwNyw2IEBACiAKIFJERVBFTkRTXyR7UE59LWRldiA9ICJhdmFoaS1kYWVtb24gKD0gJHtFWFRFTkRQS0dWfSkgbGliYXZhaGktY29yZSAoPSAke0VYVEVORFBLR1Z9KSBsaWJhdmFoaS1jbGllbnQgKD0gJHtFWFRFTkRQS0dWfSkiCiAKLSMgdWNsaWJjIGhhcyBubyBuc3MKIFJSRUNPTU1FTkRTX2F2YWhpLWRhZW1vbl9hcHBlbmRfbGliYy1nbGliYyA9ICIgbGlibnNzLW1kbnMiCiBSUkVDT01NRU5EU18ke1BOfV9hcHBlbmRfbGliYy1nbGliYyA9ICIgbGlibnNzLW1kbnMiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2ZpbGVzLzAwMDEtY29uZmlndXJlLmFjLWluc3RhbGwtR3RrQnVpbGRlci1pbnRlcmZhY2UtZmlsZXMtZm9yLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2ZpbGVzLzAwMDEtY29uZmlndXJlLmFjLWluc3RhbGwtR3RrQnVpbGRlci1pbnRlcmZhY2UtZmlsZXMtZm9yLS5wYXRjaAppbmRleCA4Y2NlZjA4Li45NDI2MDdhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9maWxlcy8wMDAxLWNvbmZpZ3VyZS5hYy1pbnN0YWxsLUd0a0J1aWxkZXItaW50ZXJmYWNlLWZpbGVzLWZvci0ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvZmlsZXMvMDAwMS1jb25maWd1cmUuYWMtaW5zdGFsbC1HdGtCdWlsZGVyLWludGVyZmFjZS1maWxlcy1mb3ItLnBhdGNoCkBAIC0xLDE3ICsxLDE4IEBACi1Gcm9tIGE1OWYxM2ZhYjMxYTZlMjViYjAzYjJjMmJjM2FlYTU3NmY4NTdiNmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDZmZjI1NWVmZjRmZWE2MzUwYjVlMDQ2MmZlZTE3NmZhZGMyNmZjMWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgogRGF0ZTogU3VuLCAxMiBKdW4gMjAxNiAxODozMjo0OSArMDMwMAogU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuYWM6IGluc3RhbGwgR3RrQnVpbGRlciBpbnRlcmZhY2UgZmlsZXMgZm9yIEdUSyszCiAgdG9vCiAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9sYXRoaWF0L2F2YWhpL3B1bGwvMTMwXQogU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+CiAtLS0KICBjb25maWd1cmUuYWMgfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGFlYmI3MTYuLjQ4YmRmNjMgMTAwNjQ0CitpbmRleCA4N2E5YTE3Li45ODYwZGNjIDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKIEBAIC05NjUsNyArOTY1LDcgQEAgQUNfU1VCU1QoYXZhaGlfc29ja2V0KQpAQCAtMjQsNSArMjUsNSBAQAogIAlBQ19TVUJTVChpbnRlcmZhY2VzZGlyKQogIGZpCiAtLSAKLTIuMS40CisyLjguMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwMS1idWlsZC11c2UtcGtnLWNvbmZpZy10by1maW5kLWxpYnhtbDIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwMS1idWlsZC11c2UtcGtnLWNvbmZpZy10by1maW5kLWxpYnhtbDIucGF0Y2gKaW5kZXggODA1Y2JiMy4uMWUyM2MwZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDEtYnVpbGQtdXNlLXBrZy1jb25maWctdG8tZmluZC1saWJ4bWwyLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDAxLWJ1aWxkLXVzZS1wa2ctY29uZmlnLXRvLWZpbmQtbGlieG1sMi5wYXRjaApAQCAtNywxNSArNywxOSBAQAogVXBkYXRlIGNvbnRleHQgZm9yIHZlcnNpb24gOS4xMC4zLVAyLgogCiBTaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KKworVXBkYXRlIGNvbnRleHQgZm9yIHZlcnNpb24gOS4xMC41LVAzLgorCitTaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KIC0tLQogIGNvbmZpZ3VyZS5pbiB8IDIzICsrKy0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMjAgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KLWluZGV4IDBkYjgyNmQuLjc1ODE5ZWIgMTAwNjQ0CitpbmRleCA0ZGE3M2E0Li42ZjJhNzU0IDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmluCiArKysgYi9jb25maWd1cmUuaW4KLUBAIC0yMTA3LDI2ICsyMTA3LDkgQEAgY2FzZSAiJHVzZV9saWJ4bWwyIiBpbgorQEAgLTIyODIsMjYgKzIyODIsOSBAQCBjYXNlICIkdXNlX2xpYnhtbDIiIGluCiAgCQlEU1RfTElCWE1MMl9JTkM9IiIKICAJCTs7CiAgCWF1dG98eWVzKQpAQCAtMjUsNyArMjksNyBAQAogLQkJCWxpYnhtbDJfY2ZsYWdzPWB4bWwyLWNvbmZpZyAtLWNmbGFnc2AKIC0JCQk7OwogLQkJKikKLS0JCQlpZiB0ZXN0ICIkdXNlX2xpYnhtbDIiID0gInllcyIgOyB0aGVuCistCQkJaWYgdGVzdCAieWVzIiA9ICIkdXNlX2xpYnhtbDIiIDsgdGhlbgogLQkJCQlBQ19NU0dfUkVTVUxUKG5vKQogLQkJCQlBQ19NU0dfRVJST1IocmVxdWlyZWQgbGlieG1sMiB2ZXJzaW9uIG5vdCBhdmFpbGFibGUpCiAtCQkJZWxzZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL0NWRS0yMDE2LTEyODUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvQ1ZFLTIwMTYtMTI4NS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjE0OWJkMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvQ1ZFLTIwMTYtMTI4NS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1NCArMCwwIEBACi1Gcm9tIDcwMDM3ZTA0MGU1ODczMjljZWM4MjEyM2UxMmI5ZjRmN2M5NDVmNjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJrIEFuZHJld3MgPG1hcmthQGlzYy5vcmc+Ci1EYXRlOiBUaHUsIDE4IEZlYiAyMDE2IDEyOjExOjI3ICsxMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIDQzMTguICAgW3NlY3VyaXR5XSAgICAgIE1hbGZvcm1lZCBjb250cm9sIG1lc3NhZ2VzIGNhbgotIHRyaWdnZXIgYXNzZXJ0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICBpbiBuYW1lZCBhbmQgcm5kYy4gKENWRS0yMDE2LTEyODUpCi0gW1JUICM0MTY2Nl0KLQotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgYTJiMTViMzMwNWFjZDUyMTc5ZTZmM2RjN2QwNzNiMDdmYmM0MGI4ZSkKLQotQ1ZFOiBDVkUtMjAxNi0xMjg1Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1bUmVtb3ZlZCBkb2MvYXJtL25vdGVzLnhtbCBjaGFuZ2VzIGZyb20gdXBzdHJlYW0gcGF0Y2hdCi0KLVNpZ25lZC1vZmYtYnk6IFNvbmEgU2FybWFkaSA8c29uYS5zYXJtYWRpQGVuZWEuY29tPgotLS0tCi0gQ0hBTkdFUyAgICAgICAgICAgICAgICAgfCAgMyArKysKLSBiaW4vbmFtZWQvY29udHJvbC5jICAgICB8ICAyICstCi0gYmluL25hbWVkL2NvbnRyb2xjb25mLmMgfCAgMiArLQotIGJpbi9ybmRjL3JuZGMuYyAgICAgICAgIHwgIDggKysrKy0tLS0KLSBkb2MvYXJtL25vdGVzLnhtbCAgICAgICB8IDExICsrKysrKysrKysrCi0gbGliL2lzY2NjL2NjLmMgICAgICAgICAgfCAxNCArKysrKysrLS0tLS0tLQotIDYgZmlsZXMgY2hhbmdlZCwgMjcgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9DSEFOR0VTIGIvQ0hBTkdFUwotaW5kZXggYjliZDllZi4uMmM3MjdkNSAxMDA2NDQKLS0tLSBhL0NIQU5HRVMKLSsrKyBiL0NIQU5HRVMKLUBAIC0xLDMgKzEsNiBAQAotKzQzMTguCVtzZWN1cml0eV0JTWFsZm9ybWVkIGNvbnRyb2wgbWVzc2FnZXMgY2FuIHRyaWdnZXIgYXNzZXJ0aW9ucwotKwkJCWluIG5hbWVkIGFuZCBybmRjLiAoQ1ZFLTIwMTYtMTI4NSkgW1JUICM0MTY2Nl0KLSsKLSAJLS0tIDkuMTAuMy1QMyByZWxlYXNlZCAtLS0KLSAKLSA0Mjg4LglbYnVnXQkJRml4ZWQgYSByZWdyZXNzaW9uIGluIHJlc29sdmVyLmM6cG9zc2libHlfbWFyaygpCi1kaWZmIC0tZ2l0IGEvYmluL25hbWVkL2NvbnRyb2wuYyBiL2Jpbi9uYW1lZC9jb250cm9sLmMKLWluZGV4IDg1NTQzMzUuLjgxMzQwY2EgMTAwNjQ0Ci0tLS0gYS9iaW4vbmFtZWQvY29udHJvbC5jCi0rKysgYi9iaW4vbmFtZWQvY29udHJvbC5jCi1AQCAtNjksNyArNjksNyBAQCBuc19jb250cm9sX2RvY29tbWFuZChpc2NjY19zZXhwcl90ICptZXNzYWdlLCBpc2NfYnVmZmVyX3QgKnRleHQpIHsKLSAjZW5kaWYKLSAKLSAJZGF0YSA9IGlzY2NjX2FsaXN0X2xvb2t1cChtZXNzYWdlLCAiX2RhdGEiKTsKLS0JaWYgKGRhdGEgPT0gTlVMTCkgewotKwlpZiAoIWlzY2NjX2FsaXN0X2FsaXN0cChkYXRhKSkgewotIAkJLyoKLSAJCSAqIE5vIGRhdGEgc2VjdGlvbi4KLSAJCSAqLwotZGlmZiAtLWdpdCBhL2Jpbi9uYW1lZC9jb250cm9sY29uZi5jIGIvYmluL25hbWVkL2NvbnRyb2xjb25mLmMKLWluZGV4IDc2NWFmZGQuLmEzOWFiOGIgMTAwNjQ0Ci0tLS0gYS9iaW4vbmFtZWQvY29udHJvbGNvbmYuYwotKysrIGIvYmluL25hbWVkL2NvbnRyb2xjb25mLmMKLUBAIC00MDIsNyArNDAyLDcgQEAgY29udHJvbF9yZWN2bWVzc2FnZShpc2NfdGFza190ICp0YXNrLCBpc2NfZXZlbnRfdCAqZXZlbnQpIHsKLSAJICogTGltaXQgZXhwb3N1cmUgdG8gcmVwbGF5IGF0dGFja3MuCi0gCSAqLwotIAlfY3RybCA9IGlzY2NjX2FsaXN0X2xvb2t1cChyZXF1ZXN0LCAiX2N0cmwiKTsKLS0JaWYgKF9jdHJsID09IE5VTEwpIHsKLSsJaWYgKCFpc2NjY19hbGlzdF9hbGlzdHAoX2N0cmwpKSB7Ci0gCQlsb2dfaW52YWxpZCgmY29ubi0+Y2Ntc2csIElTQ19SX0ZBSUxVUkUpOwotIAkJZ290byBjbGVhbnVwX3JlcXVlc3Q7Ci0gCX0KLWRpZmYgLS1naXQgYS9iaW4vcm5kYy9ybmRjLmMgYi9iaW4vcm5kYy9ybmRjLmMKLWluZGV4IGNiMTcwNTAuLmI2ZTA1YzggMTAwNjQ0Ci0tLS0gYS9iaW4vcm5kYy9ybmRjLmMKLSsrKyBiL2Jpbi9ybmRjL3JuZGMuYwotQEAgLTI1NSw4ICsyNTUsOCBAQCBybmRjX3JlY3Zkb25lKGlzY190YXNrX3QgKnRhc2ssIGlzY19ldmVudF90ICpldmVudCkgewotIAkgICBpc2NjY19jY19mcm9td2lyZSgmc291cmNlLCAmcmVzcG9uc2UsIGFsZ29yaXRobSwgJnNlY3JldCkpOwotIAotIAlkYXRhID0gaXNjY2NfYWxpc3RfbG9va3VwKHJlc3BvbnNlLCAiX2RhdGEiKTsKLS0JaWYgKGRhdGEgPT0gTlVMTCkKLS0JCWZhdGFsKCJubyBkYXRhIHNlY3Rpb24gaW4gcmVzcG9uc2UiKTsKLSsJaWYgKCFpc2NjY19hbGlzdF9hbGlzdHAoZGF0YSkpCi0rCQlmYXRhbCgiYmFkIG9yIG1pc3NpbmcgZGF0YSBzZWN0aW9uIGluIHJlc3BvbnNlIik7Ci0gCXJlc3VsdCA9IGlzY2NjX2NjX2xvb2t1cHN0cmluZyhkYXRhLCAiZXJyIiwgJmVycm9ybXNnKTsKLSAJaWYgKHJlc3VsdCA9PSBJU0NfUl9TVUNDRVNTKSB7Ci0gCQlmYWlsZWQgPSBJU0NfVFJVRTsKLUBAIC0zMjEsOCArMzIxLDggQEAgcm5kY19yZWN2bm9uY2UoaXNjX3Rhc2tfdCAqdGFzaywgaXNjX2V2ZW50X3QgKmV2ZW50KSB7Ci0gCSAgIGlzY2NjX2NjX2Zyb213aXJlKCZzb3VyY2UsICZyZXNwb25zZSwgYWxnb3JpdGhtLCAmc2VjcmV0KSk7Ci0gCi0gCV9jdHJsID0gaXNjY2NfYWxpc3RfbG9va3VwKHJlc3BvbnNlLCAiX2N0cmwiKTsKLS0JaWYgKF9jdHJsID09IE5VTEwpCi0tCQlmYXRhbCgiX2N0cmwgc2VjdGlvbiBtaXNzaW5nIik7Ci0rCWlmICghaXNjY2NfYWxpc3RfYWxpc3RwKF9jdHJsKSkKLSsJCWZhdGFsKCJiYWQgb3IgbWlzc2luZyBjdHJsIHNlY3Rpb24gaW4gcmVzcG9uc2UiKTsKLSAJbm9uY2UgPSAwOwotIAlpZiAoaXNjY2NfY2NfbG9va3VwdWludDMyKF9jdHJsLCAiX25vbmNlIiwgJm5vbmNlKSAhPSBJU0NfUl9TVUNDRVNTKQotIAkJbm9uY2UgPSAwOwotZGlmZiAtLWdpdCBhL2xpYi9pc2NjYy9jYy5jIGIvbGliL2lzY2NjL2NjLmMKLWluZGV4IDQ3YTNiNzQuLjJiYjk2MWUgMTAwNjQ0Ci0tLS0gYS9saWIvaXNjY2MvY2MuYwotKysrIGIvbGliL2lzY2NjL2NjLmMKLUBAIC00MDMsMTMgKzQwMywxMyBAQCB2ZXJpZnkoaXNjY2Nfc2V4cHJfdCAqYWxpc3QsIHVuc2lnbmVkIGNoYXIgKmRhdGEsIHVuc2lnbmVkIGludCBsZW5ndGgsCi0gCSAqIEV4dHJhY3QgZGlnZXN0LgotIAkgKi8KLSAJX2F1dGggPSBpc2NjY19hbGlzdF9sb29rdXAoYWxpc3QsICJfYXV0aCIpOwotLQlpZiAoX2F1dGggPT0gTlVMTCkKLSsJaWYgKCFpc2NjY19hbGlzdF9hbGlzdHAoX2F1dGgpKQotIAkJcmV0dXJuIChJU0NfUl9GQUlMVVJFKTsKLSAJaWYgKGFsZ29yaXRobSA9PSBJU0NDQ19BTEdfSE1BQ01ENSkKLSAJCWhtYWMgPSBpc2NjY19hbGlzdF9sb29rdXAoX2F1dGgsICJobWQ1Iik7Ci0gCWVsc2UKLSAJCWhtYWMgPSBpc2NjY19hbGlzdF9sb29rdXAoX2F1dGgsICJoc2hhIik7Ci0tCWlmIChobWFjID09IE5VTEwpCi0rCWlmICghaXNjY2Nfc2V4cHJfYmluYXJ5cChobWFjKSkKLSAJCXJldHVybiAoSVNDX1JfRkFJTFVSRSk7Ci0gCS8qCi0gCSAqIENvbXB1dGUgZGlnZXN0LgotQEAgLTcyOCw3ICs3MjgsNyBAQCBpc2NjY19jY19jcmVhdGVhY2soaXNjY2Nfc2V4cHJfdCAqbWVzc2FnZSwgaXNjX2Jvb2xlYW5fdCBvaywKLSAJUkVRVUlSRShhY2twICE9IE5VTEwgJiYgKmFja3AgPT0gTlVMTCk7Ci0gCi0gCV9jdHJsID0gaXNjY2NfYWxpc3RfbG9va3VwKG1lc3NhZ2UsICJfY3RybCIpOwotLQlpZiAoX2N0cmwgPT0gTlVMTCB8fAotKwlpZiAoIWlzY2NjX2FsaXN0X2FsaXN0cChfY3RybCkgfHwKLSAJICAgIGlzY2NjX2NjX2xvb2t1cHVpbnQzMihfY3RybCwgIl9zZXIiLCAmc2VyaWFsKSAhPSBJU0NfUl9TVUNDRVNTIHx8Ci0gCSAgICBpc2NjY19jY19sb29rdXB1aW50MzIoX2N0cmwsICJfdGltIiwgJnQpICE9IElTQ19SX1NVQ0NFU1MpCi0gCQlyZXR1cm4gKElTQ19SX0ZBSUxVUkUpOwotQEAgLTc3Myw3ICs3NzMsNyBAQCBpc2NjY19jY19pc2Fjayhpc2NjY19zZXhwcl90ICptZXNzYWdlKQotIAlpc2NjY19zZXhwcl90ICpfY3RybDsKLSAKLSAJX2N0cmwgPSBpc2NjY19hbGlzdF9sb29rdXAobWVzc2FnZSwgIl9jdHJsIik7Ci0tCWlmIChfY3RybCA9PSBOVUxMKQotKwlpZiAoIWlzY2NjX2FsaXN0X2FsaXN0cChfY3RybCkpCi0gCQlyZXR1cm4gKElTQ19GQUxTRSk7Ci0gCWlmIChpc2NjY19jY19sb29rdXBzdHJpbmcoX2N0cmwsICJfYWNrIiwgTlVMTCkgPT0gSVNDX1JfU1VDQ0VTUykKLSAJCXJldHVybiAoSVNDX1RSVUUpOwotQEAgLTc4Niw3ICs3ODYsNyBAQCBpc2NjY19jY19pc3JlcGx5KGlzY2NjX3NleHByX3QgKm1lc3NhZ2UpCi0gCWlzY2NjX3NleHByX3QgKl9jdHJsOwotIAotIAlfY3RybCA9IGlzY2NjX2FsaXN0X2xvb2t1cChtZXNzYWdlLCAiX2N0cmwiKTsKLS0JaWYgKF9jdHJsID09IE5VTEwpCi0rCWlmICghaXNjY2NfYWxpc3RfYWxpc3RwKF9jdHJsKSkKLSAJCXJldHVybiAoSVNDX0ZBTFNFKTsKLSAJaWYgKGlzY2NjX2NjX2xvb2t1cHN0cmluZyhfY3RybCwgIl9ycGwiLCBOVUxMKSA9PSBJU0NfUl9TVUNDRVNTKQotIAkJcmV0dXJuIChJU0NfVFJVRSk7Ci1AQCAtODA2LDcgKzgwNiw3IEBAIGlzY2NjX2NjX2NyZWF0ZXJlc3BvbnNlKGlzY2NjX3NleHByX3QgKm1lc3NhZ2UsIGlzY2NjX3RpbWVfdCBub3csCi0gCi0gCV9jdHJsID0gaXNjY2NfYWxpc3RfbG9va3VwKG1lc3NhZ2UsICJfY3RybCIpOwotIAlfZGF0YSA9IGlzY2NjX2FsaXN0X2xvb2t1cChtZXNzYWdlLCAiX2RhdGEiKTsKLS0JaWYgKF9jdHJsID09IE5VTEwgfHwgX2RhdGEgPT0gTlVMTCB8fAotKwlpZiAoIWlzY2NjX2FsaXN0X2FsaXN0cChfY3RybCkgfHwgIWlzY2NjX2FsaXN0X2FsaXN0cChfZGF0YSkgfHwKLSAJICAgIGlzY2NjX2NjX2xvb2t1cHVpbnQzMihfY3RybCwgIl9zZXIiLCAmc2VyaWFsKSAhPSBJU0NfUl9TVUNDRVNTIHx8Ci0gCSAgICBpc2NjY19jY19sb29rdXBzdHJpbmcoX2RhdGEsICJ0eXBlIiwgJnR5cGUpICE9IElTQ19SX1NVQ0NFU1MpCi0gCQlyZXR1cm4gKElTQ19SX0ZBSUxVUkUpOwotQEAgLTk5NSw3ICs5OTUsNyBAQCBpc2NjY19jY19jaGVja2R1cChpc2NjY19zeW10YWJfdCAqc3ltdGFiLCBpc2NjY19zZXhwcl90ICptZXNzYWdlLAotIAlpc2NjY19zZXhwcl90ICpfY3RybDsKLSAKLSAJX2N0cmwgPSBpc2NjY19hbGlzdF9sb29rdXAobWVzc2FnZSwgIl9jdHJsIik7Ci0tCWlmIChfY3RybCA9PSBOVUxMIHx8Ci0rCWlmICghaXNjY2NfYWxpc3RfYWxpc3RwKF9jdHJsKSB8fAotIAkgICAgaXNjY2NfY2NfbG9va3Vwc3RyaW5nKF9jdHJsLCAiX3NlciIsICZfc2VyKSAhPSBJU0NfUl9TVUNDRVNTIHx8Ci0gCSAgICBpc2NjY19jY19sb29rdXBzdHJpbmcoX2N0cmwsICJfdGltIiwgJl90aW0pICE9IElTQ19SX1NVQ0NFU1MpCi0gCQlyZXR1cm4gKElTQ19SX0ZBSUxVUkUpOwotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvQ1ZFLTIwMTYtMTI4Nl8xLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL0NWRS0yMDE2LTEyODZfMS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWU1Y2M0OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvQ1ZFLTIwMTYtMTI4Nl8xLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzkgKzAsMCBAQAotRnJvbSBhM2QzMjdiZjFjZWFhZWFiYjIwMjIzZDhkZTg1MTY2ZTk0MGI5ZjEyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTXVrdW5kIFNpdmFyYW1hbiA8bXVrc0Bpc2Mub3JnPgotRGF0ZTogTW9uLCAyMiBGZWIgMjAxNiAxMjoyMjo0MyArMDUzMAotU3ViamVjdDogW1BBVENIXSBGaXggcmVzb2x2ZXIgYXNzZXJ0aW9uIGZhaWx1cmUgZHVlIHRvIGltcHJvcGVyIEROQU1FIGhhbmRsaW5nCi0gKENWRS0yMDE2LTEyODYpICgjNDE3NTMpCi0KLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IDU5OTVmZWM1MWNjOGJiN2U1MzgwNGU0OTM2ZTYwYWExNTM3ZjM2NzMpCi0KLUNWRTogQ1ZFLTIwMTYtMTI4NgotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1bUmVtb3ZlZCBkb2MvYXJtL25vdGVzLnhtbCBjaGFuZ2VzIGZyb20gdXBzdHJlYW0gcGF0Y2guXQotCi1TaWduZWQtb2ZmLWJ5OiBTb25hIFNhcm1hZGkgPHNvbmEuc2FybWFkaUBlbmVhLmNvbT4KLS0tLQotZGlmZiAtcnVOIGEvQ0hBTkdFUyBiL0NIQU5HRVMKLS0tLSBhL0NIQU5HRVMJMjAxNi0wNC0xMyAwNzoyODo0NC45NDA4NzM2MjkgKzAyMDAKLSsrKyBiL0NIQU5HRVMJMjAxNi0wNC0xMyAwNzozODozOC45MjMxNjc4NTEgKzAyMDAKLUBAIC0xLDMgKzEsNyBAQAotKzQzMTkuICBbc2VjdXJpdHldICAgICAgRml4IHJlc29sdmVyIGFzc2VydGlvbiBmYWlsdXJlIGR1ZSB0byBpbXByb3BlcgotKyAgICAgICAgICAgICAgICAgICAgICAgRE5BTUUgaGFuZGxpbmcgd2hlbiBwYXJzaW5nIGZldGNoIHJlcGx5IG1lc3NhZ2VzLgotKyAgICAgICAgICAgICAgICAgICAgICAgKENWRS0yMDE2LTEyODYpIFtSVCAjNDE3NTNdCi0rCi0gNDMxOC4JW3NlY3VyaXR5XQlNYWxmb3JtZWQgY29udHJvbCBtZXNzYWdlcyBjYW4gdHJpZ2dlciBhc3NlcnRpb25zCi0gCQkJaW4gbmFtZWQgYW5kIHJuZGMuIChDVkUtMjAxNi0xMjg1KSBbUlQgIzQxNjY2XQotIAotZGlmZiAtcnVOIGEvbGliL2Rucy9yZXNvbHZlci5jIGIvbGliL2Rucy9yZXNvbHZlci5jCi0tLS0gYS9saWIvZG5zL3Jlc29sdmVyLmMJMjAxNi0wNC0xMyAwNzoyODo0My4wODg5NTM3OTAgKzAyMDAKLSsrKyBiL2xpYi9kbnMvcmVzb2x2ZXIuYwkyMDE2LTA0LTEzIDA3OjM4OjIwLjQxMTk2ODkyNSArMDIwMAotQEAgLTY5NjcsMjEgKzY5NjcsMjYgQEAKLSAJCQkJaXNjX2Jvb2xlYW5fdCBmb3VuZF9kbmFtZSA9IElTQ19GQUxTRTsKLSAJCQkJZG5zX25hbWVfdCAqZG5hbWVfbmFtZTsKLSAKLSsJCQkJLyoKLSsJCQkJICogT25seSBwYXNzIEROQU1FIG9yIFJSU0lHKEROQU1FKS4KLSsJCQkJICovCi0rCQkJCWlmIChyZGF0YXNldC0+dHlwZSAhPSBkbnNfcmRhdGF0eXBlX2RuYW1lICYmCi0rCQkJCSAgICAocmRhdGFzZXQtPnR5cGUgIT0gZG5zX3JkYXRhdHlwZV9ycnNpZyB8fAotKwkJCQkgICAgIHJkYXRhc2V0LT5jb3ZlcnMgIT0gZG5zX3JkYXRhdHlwZV9kbmFtZSkpCi0rCQkJCQljb250aW51ZTsKLSsKLSsJCQkJLyoKLSsJCQkJICogSWYgd2UncmUgbm90IGNoYWluaW5nLCB0aGVuIHRoZSBETkFNRSBhbmQKLSsJCQkJICogaXRzIHNpZ25hdHVyZSBzaG91bGQgbm90IGJlIGV4dGVybmFsLgotKwkJCQkgKi8KLSsJCQkJaWYgKCFjaGFpbmluZyAmJiBleHRlcm5hbCkgewotKwkJCQkJbG9nX2Zvcm1lcnIoZmN0eCwgImV4dGVybmFsIEROQU1FIik7Ci0rCQkJCQlyZXR1cm4gKEROU19SX0ZPUk1FUlIpOwotKwkJCQl9Ci0rCi0gCQkJCWZvdW5kID0gSVNDX0ZBTFNFOwotIAkJCQlhZmxhZyA9IDA7Ci0gCQkJCWlmIChyZGF0YXNldC0+dHlwZSA9PSBkbnNfcmRhdGF0eXBlX2RuYW1lKSB7Ci0tCQkJCQkvKgotLQkJCQkJICogV2UncmUgbG9va2luZyBmb3Igc29tZXRoaW5nIGVsc2UsCi0tCQkJCQkgKiBidXQgd2UgZm91bmQgYSBETkFNRS4KLS0JCQkJCSAqCi0tCQkJCQkgKiBJZiB3ZSdyZSBub3QgY2hhaW5pbmcsIHRoZW4gdGhlCi0tCQkJCQkgKiBETkFNRSBzaG91bGQgbm90IGJlIGV4dGVybmFsLgotLQkJCQkJICovCi0tCQkJCQlpZiAoIWNoYWluaW5nICYmIGV4dGVybmFsKSB7Ci0tCQkJCQkJbG9nX2Zvcm1lcnIoZmN0eCwKLS0JCQkJCQkJICAgICJleHRlcm5hbCBETkFNRSIpOwotLQkJCQkJCXJldHVybiAoRE5TX1JfRk9STUVSUik7Ci0tCQkJCQl9Ci0gCQkJCQlmb3VuZCA9IElTQ19UUlVFOwotIAkJCQkJd2FudF9jaGFpbmluZyA9IElTQ19UUlVFOwotIAkJCQkJUE9TVCh3YW50X2NoYWluaW5nKTsKLUBAIC03MDEwLDkgKzcwMTUsNyBAQAotIAkJCQkJCQkmZmN0eC0+ZG9tYWluKSkgewotIAkJCQkJCXJldHVybiAoRE5TX1JfU0VSVkZBSUwpOwotIAkJCQkJfQotLQkJCQl9IGVsc2UgaWYgKHJkYXRhc2V0LT50eXBlID09IGRuc19yZGF0YXR5cGVfcnJzaWcKLS0JCQkJCSAgICYmIHJkYXRhc2V0LT5jb3ZlcnMgPT0KLS0JCQkJCSAgIGRuc19yZGF0YXR5cGVfZG5hbWUpIHsKLSsJCQkJfSBlbHNlIHsKLSAJCQkJCS8qCi0gCQkJCQkgKiBXZSd2ZSBmb3VuZCBhIHNpZ25hdHVyZSB0aGF0Ci0gCQkJCQkgKiBjb3ZlcnMgdGhlIEROQU1FLgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL0NWRS0yMDE2LTEyODZfMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9DVkUtMjAxNi0xMjg2XzIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmNWNiMGQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL0NWRS0yMDE2LTEyODZfMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxNyArMCwwIEBACi1Gcm9tIDc2MDJiZTI3NmE3M2E2ZWI1NDMxYzVhY2Q5NzE4ZTY4YTU1ZThiNjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJrIEFuZHJld3MgPG1hcmthQGlzYy5vcmc+Ci1EYXRlOiBNb24sIDI5IEZlYiAyMDE2IDA3OjE2OjQ4ICsxMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIFBhcnQgMiBvZjogNDMxOS4gICBbc2VjdXJpdHldICAgICAgRml4IHJlc29sdmVyIGFzc2VydGlvbgotIGZhaWx1cmUgZHVlIHRvIGltcHJvcGVyICAgICAgICAgICAgICAgICAgICAgICAgIEROQU1FIGhhbmRsaW5nIHdoZW4gcGFyc2luZwotIGZldGNoIHJlcGx5IG1lc3NhZ2VzLiAgICAgICAgICAgICAgICAgICAgICAgICAoQ1ZFLTIwMTYtMTI4NikgW1JUICM0MTc1M10KLQotQ1ZFOiBDVkUtMjAxNi0xMjg2Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IDJkZTg5ZWU5ZGU4YzhkYTlkYzE1M2E3NTRiMDJkY2RiYjdmZTIzNzQpCi1TaWduZWQtb2ZmLWJ5OiBTb25hIFNhcm1hZGkgPHNvbmEuc2FybWFkaUBlbmVhLmNvbT4KLS0tLQotIGxpYi9kbnMvcmVzb2x2ZXIuYyB8IDE5MiArKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA5MyBpbnNlcnRpb25zKCspLCA5OSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYi9kbnMvcmVzb2x2ZXIuYyBiL2xpYi9kbnMvcmVzb2x2ZXIuYwotaW5kZXggNzBhYmE4Ny4uNDFlOWRmNCAxMDA2NDQKLS0tLSBhL2xpYi9kbnMvcmVzb2x2ZXIuYwotKysrIGIvbGliL2Rucy9yZXNvbHZlci5jCi1AQCAtNjA3NCwxNCArNjA3NCwxMSBAQCBjbmFtZV90YXJnZXQoZG5zX3JkYXRhc2V0X3QgKnJkYXRhc2V0LCBkbnNfbmFtZV90ICp0bmFtZSkgewotIH0KLSAKLSBzdGF0aWMgaW5saW5lIGlzY19yZXN1bHRfdAotLWRuYW1lX3RhcmdldChmZXRjaGN0eF90ICpmY3R4LCBkbnNfcmRhdGFzZXRfdCAqcmRhdGFzZXQsIGRuc19uYW1lX3QgKnFuYW1lLAotLQkgICAgIGRuc19uYW1lX3QgKm9uYW1lLCBkbnNfZml4ZWRuYW1lX3QgKmZpeGVkZG5hbWUpCi0rZG5hbWVfdGFyZ2V0KGRuc19yZGF0YXNldF90ICpyZGF0YXNldCwgZG5zX25hbWVfdCAqcW5hbWUsCi0rCSAgICAgdW5zaWduZWQgaW50IG5sYWJlbHMsIGRuc19maXhlZG5hbWVfdCAqZml4ZWRkbmFtZSkKLSB7Ci0gCWlzY19yZXN1bHRfdCByZXN1bHQ7Ci0gCWRuc19yZGF0YV90IHJkYXRhID0gRE5TX1JEQVRBX0lOSVQ7Ci0tCXVuc2lnbmVkIGludCBubGFiZWxzOwotLQlpbnQgb3JkZXI7Ci0tCWRuc19uYW1lcmVsbl90IG5hbWVyZWxuOwotIAlkbnNfcmRhdGFfZG5hbWVfdCBkbmFtZTsKLSAJZG5zX2ZpeGVkbmFtZV90IHByZWZpeDsKLSAKLUBAIC02MDk2LDIxICs2MDkzLDYgQEAgZG5hbWVfdGFyZ2V0KGZldGNoY3R4X3QgKmZjdHgsIGRuc19yZGF0YXNldF90ICpyZGF0YXNldCwgZG5zX25hbWVfdCAqcW5hbWUsCi0gCWlmIChyZXN1bHQgIT0gSVNDX1JfU1VDQ0VTUykKLSAJCXJldHVybiAocmVzdWx0KTsKLSAKLS0JLyoKLS0JICogR2V0IHRoZSBwcmVmaXggb2YgcW5hbWUuCi0tCSAqLwotLQluYW1lcmVsbiA9IGRuc19uYW1lX2Z1bGxjb21wYXJlKHFuYW1lLCBvbmFtZSwgJm9yZGVyLCAmbmxhYmVscyk7Ci0tCWlmIChuYW1lcmVsbiAhPSBkbnNfbmFtZXJlbG5fc3ViZG9tYWluKSB7Ci0tCQljaGFyIHFidWZbRE5TX05BTUVfRk9STUFUU0laRV07Ci0tCQljaGFyIG9idWZbRE5TX05BTUVfRk9STUFUU0laRV07Ci0tCi0tCQlkbnNfcmRhdGFfZnJlZXN0cnVjdCgmZG5hbWUpOwotLQkJZG5zX25hbWVfZm9ybWF0KHFuYW1lLCBxYnVmLCBzaXplb2YocWJ1ZikpOwotLQkJZG5zX25hbWVfZm9ybWF0KG9uYW1lLCBvYnVmLCBzaXplb2Yob2J1ZikpOwotLQkJbG9nX2Zvcm1lcnIoZmN0eCwgInVucmVsYXRlZCBETkFNRSBpbiBhbnN3ZXI6ICIKLS0JCQkJICAgIiVzIGlzIG5vdCBpbiAlcyIsIHFidWYsIG9idWYpOwotLQkJcmV0dXJuIChETlNfUl9GT1JNRVJSKTsKLS0JfQotIAlkbnNfZml4ZWRuYW1lX2luaXQoJnByZWZpeCk7Ci0gCWRuc19uYW1lX3NwbGl0KHFuYW1lLCBubGFiZWxzLCBkbnNfZml4ZWRuYW1lX25hbWUoJnByZWZpeCksIE5VTEwpOwotIAlkbnNfZml4ZWRuYW1lX2luaXQoZml4ZWRkbmFtZSk7Ci1AQCAtNjczNiwxMyArNjcxOCwxMyBAQCBzdGF0aWMgaXNjX3Jlc3VsdF90Ci0gYW5zd2VyX3Jlc3BvbnNlKGZldGNoY3R4X3QgKmZjdHgpIHsKLSAJaXNjX3Jlc3VsdF90IHJlc3VsdDsKLSAJZG5zX21lc3NhZ2VfdCAqbWVzc2FnZTsKLS0JZG5zX25hbWVfdCAqbmFtZSwgKnFuYW1lLCB0bmFtZSwgKm5zX25hbWU7Ci0rCWRuc19uYW1lX3QgKm5hbWUsICpkbmFtZSwgKnFuYW1lLCB0bmFtZSwgKm5zX25hbWU7Ci0gCWRuc19yZGF0YXNldF90ICpyZGF0YXNldCwgKm5zX3JkYXRhc2V0OwotIAlpc2NfYm9vbGVhbl90IGRvbmUsIGV4dGVybmFsLCBjaGFpbmluZywgYWEsIGZvdW5kLCB3YW50X2NoYWluaW5nOwotIAlpc2NfYm9vbGVhbl90IGhhdmVfYW5zd2VyLCBmb3VuZF9jbmFtZSwgZm91bmRfdHlwZSwgd2FudGVkX2NoYWluaW5nOwotIAl1bnNpZ25lZCBpbnQgYWZsYWc7Ci0gCWRuc19yZGF0YXR5cGVfdCB0eXBlOwotLQlkbnNfZml4ZWRuYW1lX3QgZG5hbWUsIGZxbmFtZTsKLSsJZG5zX2ZpeGVkbmFtZV90IGZkbmFtZSwgZnFuYW1lOwotIAlkbnNfdmlld190ICp2aWV3OwotIAotIAlGQ1RYVFJBQ0UoImFuc3dlcl9yZXNwb25zZSIpOwotQEAgLTY3NzAsMTAgKzY3NTIsMTUgQEAgYW5zd2VyX3Jlc3BvbnNlKGZldGNoY3R4X3QgKmZjdHgpIHsKLSAJdmlldyA9IGZjdHgtPnJlcy0+dmlldzsKLSAJcmVzdWx0ID0gZG5zX21lc3NhZ2VfZmlyc3RuYW1lKG1lc3NhZ2UsIEROU19TRUNUSU9OX0FOU1dFUik7Ci0gCXdoaWxlICghZG9uZSAmJiByZXN1bHQgPT0gSVNDX1JfU1VDQ0VTUykgewotKwkJZG5zX25hbWVyZWxuX3QgbmFtZXJlbG47Ci0rCQlpbnQgb3JkZXI7Ci0rCQl1bnNpZ25lZCBpbnQgbmxhYmVsczsKLSsKLSAJCW5hbWUgPSBOVUxMOwotIAkJZG5zX21lc3NhZ2VfY3VycmVudG5hbWUobWVzc2FnZSwgRE5TX1NFQ1RJT05fQU5TV0VSLCAmbmFtZSk7Ci0gCQlleHRlcm5hbCA9IElTQ19URighZG5zX25hbWVfaXNzdWJkb21haW4obmFtZSwgJmZjdHgtPmRvbWFpbikpOwotLQkJaWYgKGRuc19uYW1lX2VxdWFsKG5hbWUsIHFuYW1lKSkgewotKwkJbmFtZXJlbG4gPSBkbnNfbmFtZV9mdWxsY29tcGFyZShxbmFtZSwgbmFtZSwgJm9yZGVyLCAmbmxhYmVscyk7Ci0rCQlpZiAobmFtZXJlbG4gPT0gZG5zX25hbWVyZWxuX2VxdWFsKSB7Ci0gCQkJd2FudGVkX2NoYWluaW5nID0gSVNDX0ZBTFNFOwotIAkJCWZvciAocmRhdGFzZXQgPSBJU0NfTElTVF9IRUFEKG5hbWUtPmxpc3QpOwotIAkJCSAgICAgcmRhdGFzZXQgIT0gTlVMTDsKLUBAIC02ODk4LDEwICs2ODg1LDExIEBAIGFuc3dlcl9yZXNwb25zZShmZXRjaGN0eF90ICpmY3R4KSB7Ci0gCQkJCQkJICovCi0gCQkJCQkJSU5TSVNUKCFleHRlcm5hbCk7Ci0gCQkJCQkJaWYgKGFmbGFnID09Ci0tCQkJCQkJICAgIEROU19SREFUQVNFVEFUVFJfQU5TV0VSKQotKwkJCQkJCSAgICBETlNfUkRBVEFTRVRBVFRSX0FOU1dFUikgewotIAkJCQkJCQloYXZlX2Fuc3dlciA9IElTQ19UUlVFOwotLQkJCQkJCW5hbWUtPmF0dHJpYnV0ZXMgfD0KLS0JCQkJCQkJRE5TX05BTUVBVFRSX0FOU1dFUjsKLSsJCQkJCQkJbmFtZS0+YXR0cmlidXRlcyB8PQotKwkJCQkJCQkJRE5TX05BTUVBVFRSX0FOU1dFUjsKLSsJCQkJCQl9Ci0gCQkJCQkJcmRhdGFzZXQtPmF0dHJpYnV0ZXMgfD0gYWZsYWc7Ci0gCQkJCQkJaWYgKGFhKQotIAkJCQkJCQlyZGF0YXNldC0+dHJ1c3QgPQotQEAgLTY5NTYsNiArNjk0NCw4IEBAIGFuc3dlcl9yZXNwb25zZShmZXRjaGN0eF90ICpmY3R4KSB7Ci0gCQkJaWYgKHdhbnRlZF9jaGFpbmluZykKLSAJCQkJY2hhaW5pbmcgPSBJU0NfVFJVRTsKLSAJCX0gZWxzZSB7Ci0rCQkJZG5zX3JkYXRhc2V0X3QgKmRuYW1lc2V0ID0gTlVMTDsKLSsKLSAJCQkvKgotIAkJCSAqIExvb2sgZm9yIGEgRE5BTUUgKG9yIGl0cyBTSUcpLiAgQW55dGhpbmcgZWxzZSBpcwotIAkJCSAqIGlnbm9yZWQuCi1AQCAtNjk2MywxMCArNjk1Myw4IEBAIGFuc3dlcl9yZXNwb25zZShmZXRjaGN0eF90ICpmY3R4KSB7Ci0gCQkJd2FudGVkX2NoYWluaW5nID0gSVNDX0ZBTFNFOwotIAkJCWZvciAocmRhdGFzZXQgPSBJU0NfTElTVF9IRUFEKG5hbWUtPmxpc3QpOwotIAkJCSAgICAgcmRhdGFzZXQgIT0gTlVMTDsKLS0JCQkgICAgIHJkYXRhc2V0ID0gSVNDX0xJU1RfTkVYVChyZGF0YXNldCwgbGluaykpIHsKLS0JCQkJaXNjX2Jvb2xlYW5fdCBmb3VuZF9kbmFtZSA9IElTQ19GQUxTRTsKLS0JCQkJZG5zX25hbWVfdCAqZG5hbWVfbmFtZTsKLS0KLSsJCQkgICAgIHJkYXRhc2V0ID0gSVNDX0xJU1RfTkVYVChyZGF0YXNldCwgbGluaykpCi0rCQkJewotIAkJCQkvKgotIAkJCQkgKiBPbmx5IHBhc3MgRE5BTUUgb3IgUlJTSUcoRE5BTUUpLgotIAkJCQkgKi8KLUBAIC02OTgwLDIwICs2OTY4LDQxIEBAIGFuc3dlcl9yZXNwb25zZShmZXRjaGN0eF90ICpmY3R4KSB7Ci0gCQkJCSAqIGl0cyBzaWduYXR1cmUgc2hvdWxkIG5vdCBiZSBleHRlcm5hbC4KLSAJCQkJICovCi0gCQkJCWlmICghY2hhaW5pbmcgJiYgZXh0ZXJuYWwpIHsKLS0JCQkJCWxvZ19mb3JtZXJyKGZjdHgsICJleHRlcm5hbCBETkFNRSIpOwotKwkJCQkJY2hhciBxYnVmW0ROU19OQU1FX0ZPUk1BVFNJWkVdOwotKwkJCQkJY2hhciBvYnVmW0ROU19OQU1FX0ZPUk1BVFNJWkVdOwotKwotKwkJCQkJZG5zX25hbWVfZm9ybWF0KG5hbWUsIHFidWYsCi0rCQkJCQkJCXNpemVvZihxYnVmKSk7Ci0rCQkJCQlkbnNfbmFtZV9mb3JtYXQoJmZjdHgtPmRvbWFpbiwgb2J1ZiwKLSsJCQkJCQkJc2l6ZW9mKG9idWYpKTsKLSsJCQkJCWxvZ19mb3JtZXJyKGZjdHgsICJleHRlcm5hbCBETkFNRSBvciAiCi0rCQkJCQkJICAgICJSUlNJRyBjb3ZlcmluZyBETkFNRSAiCi0rCQkJCQkJICAgICJpbiBhbnN3ZXI6ICVzIGlzICIKLSsJCQkJCQkgICAgIm5vdCBpbiAlcyIsIHFidWYsIG9idWYpOwotKwkJCQkJcmV0dXJuIChETlNfUl9GT1JNRVJSKTsKLSsJCQkJfQotKwotKwkJCQlpZiAobmFtZXJlbG4gIT0gZG5zX25hbWVyZWxuX3N1YmRvbWFpbikgewotKwkJCQkJY2hhciBxYnVmW0ROU19OQU1FX0ZPUk1BVFNJWkVdOwotKwkJCQkJY2hhciBvYnVmW0ROU19OQU1FX0ZPUk1BVFNJWkVdOwotKwotKwkJCQkJZG5zX25hbWVfZm9ybWF0KHFuYW1lLCBxYnVmLAotKwkJCQkJCQlzaXplb2YocWJ1ZikpOwotKwkJCQkJZG5zX25hbWVfZm9ybWF0KG5hbWUsIG9idWYsCi0rCQkJCQkJCXNpemVvZihvYnVmKSk7Ci0rCQkJCQlsb2dfZm9ybWVycihmY3R4LCAidW5yZWxhdGVkIEROQU1FICIKLSsJCQkJCQkgICAgImluIGFuc3dlcjogJXMgaXMgIgotKwkJCQkJCSAgICAibm90IGluICVzIiwgcWJ1Ziwgb2J1Zik7Ci0gCQkJCQlyZXR1cm4gKEROU19SX0ZPUk1FUlIpOwotIAkJCQl9Ci0gCi0tCQkJCWZvdW5kID0gSVNDX0ZBTFNFOwotIAkJCQlhZmxhZyA9IDA7Ci0gCQkJCWlmIChyZGF0YXNldC0+dHlwZSA9PSBkbnNfcmRhdGF0eXBlX2RuYW1lKSB7Ci0tCQkJCQlmb3VuZCA9IElTQ19UUlVFOwotIAkJCQkJd2FudF9jaGFpbmluZyA9IElTQ19UUlVFOwotIAkJCQkJUE9TVCh3YW50X2NoYWluaW5nKTsKLSAJCQkJCWFmbGFnID0gRE5TX1JEQVRBU0VUQVRUUl9BTlNXRVI7Ci0tCQkJCQlyZXN1bHQgPSBkbmFtZV90YXJnZXQoZmN0eCwgcmRhdGFzZXQsCi0tCQkJCQkJCSAgICAgIHFuYW1lLCBuYW1lLAotLQkJCQkJCQkgICAgICAmZG5hbWUpOwotKwkJCQkJcmVzdWx0ID0gZG5hbWVfdGFyZ2V0KHJkYXRhc2V0LCBxbmFtZSwKLSsJCQkJCQkJICAgICAgbmxhYmVscywgJmZkbmFtZSk7Ci0gCQkJCQlpZiAocmVzdWx0ID09IElTQ19SX05PU1BBQ0UpIHsKLSAJCQkJCQkvKgotIAkJCQkJCSAqIFdlIGNhbid0IGNvbnN0cnVjdCB0aGUKLUBAIC03MDA1LDE0ICs3MDE0LDEyIEBAIGFuc3dlcl9yZXNwb25zZShmZXRjaGN0eF90ICpmY3R4KSB7Ci0gCQkJCQl9IGVsc2UgaWYgKHJlc3VsdCAhPSBJU0NfUl9TVUNDRVNTKQotIAkJCQkJCXJldHVybiAocmVzdWx0KTsKLSAJCQkJCWVsc2UKLS0JCQkJCQlmb3VuZF9kbmFtZSA9IElTQ19UUlVFOwotKwkJCQkJCWRuYW1lc2V0ID0gcmRhdGFzZXQ7Ci0gCi0tCQkJCQlkbmFtZV9uYW1lID0gZG5zX2ZpeGVkbmFtZV9uYW1lKCZkbmFtZSk7Ci0rCQkJCQlkbmFtZSA9IGRuc19maXhlZG5hbWVfbmFtZSgmZmRuYW1lKTsKLSAJCQkJCWlmICghaXNfYW5zd2VydGFyZ2V0X2FsbG93ZWQodmlldywKLS0JCQkJCQkJcW5hbWUsCi0tCQkJCQkJCXJkYXRhc2V0LT50eXBlLAotLQkJCQkJCQlkbmFtZV9uYW1lLAotLQkJCQkJCQkmZmN0eC0+ZG9tYWluKSkgewotKwkJCQkJCQlxbmFtZSwgcmRhdGFzZXQtPnR5cGUsCi0rCQkJCQkJCWRuYW1lLCAmZmN0eC0+ZG9tYWluKSkgewotIAkJCQkJCXJldHVybiAoRE5TX1JfU0VSVkZBSUwpOwotIAkJCQkJfQotIAkJCQl9IGVsc2UgewotQEAgLTcwMjAsNzMgKzcwMjcsNjAgQEAgYW5zd2VyX3Jlc3BvbnNlKGZldGNoY3R4X3QgKmZjdHgpIHsKLSAJCQkJCSAqIFdlJ3ZlIGZvdW5kIGEgc2lnbmF0dXJlIHRoYXQKLSAJCQkJCSAqIGNvdmVycyB0aGUgRE5BTUUuCi0gCQkJCQkgKi8KLS0JCQkJCWZvdW5kID0gSVNDX1RSVUU7Ci0gCQkJCQlhZmxhZyA9IEROU19SREFUQVNFVEFUVFJfQU5TV0VSU0lHOwotIAkJCQl9Ci0gCi0tCQkJCWlmIChmb3VuZCkgewotKwkJCQkvKgotKwkJCQkgKiBXZSd2ZSBmb3VuZCBhbiBhbnN3ZXIgdG8gb3VyCi0rCQkJCSAqIHF1ZXN0aW9uLgotKwkJCQkgKi8KLSsJCQkJbmFtZS0+YXR0cmlidXRlcyB8PSBETlNfTkFNRUFUVFJfQ0FDSEU7Ci0rCQkJCXJkYXRhc2V0LT5hdHRyaWJ1dGVzIHw9IEROU19SREFUQVNFVEFUVFJfQ0FDSEU7Ci0rCQkJCXJkYXRhc2V0LT50cnVzdCA9IGRuc190cnVzdF9hbnN3ZXI7Ci0rCQkJCWlmICghY2hhaW5pbmcpIHsKLSAJCQkJCS8qCi0tCQkJCQkgKiBXZSd2ZSBmb3VuZCBhbiBhbnN3ZXIgdG8gb3VyCi0tCQkJCQkgKiBxdWVzdGlvbi4KLSsJCQkJCSAqIFRoaXMgZGF0YSBpcyAidGhlIiBhbnN3ZXIgdG8KLSsJCQkJCSAqIG91ciBxdWVzdGlvbiBvbmx5IGlmIHdlJ3JlCi0rCQkJCQkgKiBub3QgY2hhaW5pbmcuCi0gCQkJCQkgKi8KLS0JCQkJCW5hbWUtPmF0dHJpYnV0ZXMgfD0KLS0JCQkJCQlETlNfTkFNRUFUVFJfQ0FDSEU7Ci0tCQkJCQlyZGF0YXNldC0+YXR0cmlidXRlcyB8PQotLQkJCQkJCUROU19SREFUQVNFVEFUVFJfQ0FDSEU7Ci0tCQkJCQlyZGF0YXNldC0+dHJ1c3QgPSBkbnNfdHJ1c3RfYW5zd2VyOwotLQkJCQkJaWYgKCFjaGFpbmluZykgewotLQkJCQkJCS8qCi0tCQkJCQkJICogVGhpcyBkYXRhIGlzICJ0aGUiIGFuc3dlcgotLQkJCQkJCSAqIHRvIG91ciBxdWVzdGlvbiBvbmx5IGlmCi0tCQkJCQkJICogd2UncmUgbm90IGNoYWluaW5nLgotLQkJCQkJCSAqLwotLQkJCQkJCUlOU0lTVCghZXh0ZXJuYWwpOwotLQkJCQkJCWlmIChhZmxhZyA9PQotLQkJCQkJCSAgICBETlNfUkRBVEFTRVRBVFRSX0FOU1dFUikKLS0JCQkJCQkJaGF2ZV9hbnN3ZXIgPSBJU0NfVFJVRTsKLSsJCQkJCUlOU0lTVCghZXh0ZXJuYWwpOwotKwkJCQkJaWYgKGFmbGFnID09IEROU19SREFUQVNFVEFUVFJfQU5TV0VSKSB7Ci0rCQkJCQkJaGF2ZV9hbnN3ZXIgPSBJU0NfVFJVRTsKLSAJCQkJCQluYW1lLT5hdHRyaWJ1dGVzIHw9Ci0gCQkJCQkJCUROU19OQU1FQVRUUl9BTlNXRVI7Ci0tCQkJCQkJcmRhdGFzZXQtPmF0dHJpYnV0ZXMgfD0gYWZsYWc7Ci0tCQkJCQkJaWYgKGFhKQotLQkJCQkJCQlyZGF0YXNldC0+dHJ1c3QgPQotLQkJCQkJCQkgIGRuc190cnVzdF9hdXRoYW5zd2VyOwotLQkJCQkJfSBlbHNlIGlmIChleHRlcm5hbCkgewotLQkJCQkJCXJkYXRhc2V0LT5hdHRyaWJ1dGVzIHw9Ci0tCQkJCQkJICAgIEROU19SREFUQVNFVEFUVFJfRVhURVJOQUw7Ci0tCQkJCQl9Ci0tCi0tCQkJCQkvKgotLQkJCQkJICogRE5BTUUgY2hhaW5pbmcuCi0tCQkJCQkgKi8KLS0JCQkJCWlmIChmb3VuZF9kbmFtZSkgewotLQkJCQkJCS8qCi0tCQkJCQkJICogQ29weSB0aGUgZG5hbWUgaW50byB0aGUKLS0JCQkJCQkgKiBxbmFtZSBmaXhlZCBuYW1lLgotLQkJCQkJCSAqCi0tCQkJCQkJICogQWx0aG91Z2ggd2UgY2hlY2sgZm9yCi0tCQkJCQkJICogZmFpbHVyZSBvZiB0aGUgY29weQotLQkJCQkJCSAqIG9wZXJhdGlvbiwgaW4gcHJhY3RpY2UgaXQKLS0JCQkJCQkgKiBzaG91bGQgbmV2ZXIgZmFpbCBzaW5jZQotLQkJCQkJCSAqIHdlIGFscmVhZHkga25vdyB0aGF0IHRoZQotLQkJCQkJCSAqIHJlc3VsdCBmaXRzIGluIGEgZml4ZWRuYW1lLgotLQkJCQkJCSAqLwotLQkJCQkJCWRuc19maXhlZG5hbWVfaW5pdCgmZnFuYW1lKTsKLS0JCQkJCQlyZXN1bHQgPSBkbnNfbmFtZV9jb3B5KAotLQkJCQkJCSAgZG5zX2ZpeGVkbmFtZV9uYW1lKCZkbmFtZSksCi0tCQkJCQkJICBkbnNfZml4ZWRuYW1lX25hbWUoJmZxbmFtZSksCi0tCQkJCQkJICBOVUxMKTsKLS0JCQkJCQlpZiAocmVzdWx0ICE9IElTQ19SX1NVQ0NFU1MpCi0tCQkJCQkJCXJldHVybiAocmVzdWx0KTsKLS0JCQkJCQl3YW50ZWRfY2hhaW5pbmcgPSBJU0NfVFJVRTsKLS0JCQkJCQluYW1lLT5hdHRyaWJ1dGVzIHw9Ci0tCQkJCQkJCUROU19OQU1FQVRUUl9DSEFJTklORzsKLS0JCQkJCQlyZGF0YXNldC0+YXR0cmlidXRlcyB8PQotLQkJCQkJCSAgICBETlNfUkRBVEFTRVRBVFRSX0NIQUlOSU5HOwotLQkJCQkJCXFuYW1lID0gZG5zX2ZpeGVkbmFtZV9uYW1lKAotLQkJCQkJCQkJICAgJmZxbmFtZSk7Ci0gCQkJCQl9Ci0rCQkJCQlyZGF0YXNldC0+YXR0cmlidXRlcyB8PSBhZmxhZzsKLSsJCQkJCWlmIChhYSkKLSsJCQkJCQlyZGF0YXNldC0+dHJ1c3QgPQotKwkJCQkJCSAgZG5zX3RydXN0X2F1dGhhbnN3ZXI7Ci0rCQkJCX0gZWxzZSBpZiAoZXh0ZXJuYWwpIHsKLSsJCQkJCXJkYXRhc2V0LT5hdHRyaWJ1dGVzIHw9Ci0rCQkJCQkgICAgRE5TX1JEQVRBU0VUQVRUUl9FWFRFUk5BTDsKLSAJCQkJfQotIAkJCX0KLSsKLSsJCQkvKgotKwkJCSAqIEROQU1FIGNoYWluaW5nLgotKwkJCSAqLwotKwkJCWlmIChkbmFtZXNldCAhPSBOVUxMKSB7Ci0rCQkJCS8qCi0rCQkJCSAqIENvcHkgdGhlIGRuYW1lIGludG8gdGhlIHFuYW1lIGZpeGVkIG5hbWUuCi0rCQkJCSAqCi0rCQkJCSAqIEFsdGhvdWdoIHdlIGNoZWNrIGZvciBmYWlsdXJlIG9mIHRoZSBjb3B5Ci0rCQkJCSAqIG9wZXJhdGlvbiwgaW4gcHJhY3RpY2UgaXQgc2hvdWxkIG5ldmVyIGZhaWwKLSsJCQkJICogc2luY2Ugd2UgYWxyZWFkeSBrbm93IHRoYXQgdGhlICByZXN1bHQgZml0cwotKwkJCQkgKiBpbiBhIGZpeGVkbmFtZS4KLSsJCQkJICovCi0rCQkJCWRuc19maXhlZG5hbWVfaW5pdCgmZnFuYW1lKTsKLSsJCQkJcW5hbWUgPSBkbnNfZml4ZWRuYW1lX25hbWUoJmZxbmFtZSk7Ci0rCQkJCXJlc3VsdCA9IGRuc19uYW1lX2NvcHkoZG5hbWUsIHFuYW1lLCBOVUxMKTsKLSsJCQkJaWYgKHJlc3VsdCAhPSBJU0NfUl9TVUNDRVNTKQotKwkJCQkJcmV0dXJuIChyZXN1bHQpOwotKwkJCQl3YW50ZWRfY2hhaW5pbmcgPSBJU0NfVFJVRTsKLSsJCQkJbmFtZS0+YXR0cmlidXRlcyB8PSBETlNfTkFNRUFUVFJfQ0hBSU5JTkc7Ci0rCQkJCWRuYW1lc2V0LT5hdHRyaWJ1dGVzIHw9Ci0rCQkJCQkgICAgRE5TX1JEQVRBU0VUQVRUUl9DSEFJTklORzsKLSsJCQl9Ci0gCQkJaWYgKHdhbnRlZF9jaGFpbmluZykKLSAJCQkJY2hhaW5pbmcgPSBJU0NfVFJVRTsKLSAJCX0KLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL0NWRS0yMDE2LTIwODgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvQ1ZFLTIwMTYtMjA4OC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWI4NGQ0Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvQ1ZFLTIwMTYtMjA4OC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI0NyArMCwwIEBACi1DVkUtMjAxNi0yMDg4Ci0KLUJhY2twb3J0IGNvbW1pdCBkN2ZmOWExYzQxYmYwYmE5NzczY2IzYWRiMDhiNDhiOWZkNTdjOTU2IGZyb20gdGhlCi12OV8xMF8zX3BhdGNoIGJyYW5jaC4KLQotaHR0cHM6Ly9jdmUubWl0cmUub3JnL2NnaS1iaW4vY3ZlbmFtZS5jZ2k/bmFtZT1DVkUtMjAxNi0yMDg4Ci1odHRwczovL2tiLmlzYy5vcmcvYXJ0aWNsZS9BQS0wMTM1MQotCi1DVkU6IENWRS0yMDE2LTIwODgKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci0KLQotT3JpZ2luYWwgY29tbWl0IG1lc3NhZ2UgZnJvbSBNYXJrIEFuZHJld3MgPG1hcmthQGlzYy5vcmc+IGJlbG93OgotCi00MzIyLiAgIFtzZWN1cml0eV0gICAgICBEdXBsaWNhdGUgRUROUyBDT09LSUUgb3B0aW9ucyBpbiBhIHJlc3BvbnNlIGNvdWxkCi0gICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyIGFuIGFzc2VydGlvbiBmYWlsdXJlLiAoQ1ZFLTIwMTYtMjA4OCkKLSAgICAgICAgICAgICAgICAgICAgICAgIFtSVCAjNDE4MDldCi0KLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IDQ1NWMwODQ4ZjgwYThhY2RhMjdhYWQxNDY2YzcyOTg3Y2FmYWEwMjkpCi0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCA3Y2QzMDBhYmQ2ZWU4YjhlZTg3MzA1OTNkYWY3NDJiYTUzZjkwYmMzKQotLS0tCi0gQ0hBTkdFUyAgICAgICAgICAgIHwgIDQgKysrKwotIGJpbi9kaWcvZGlnaG9zdC5jICB8ICA5ICsrKysrKysrKwotIGJpbi9uYW1lZC9jbGllbnQuYyB8IDMzICsrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQotIGRvYy9hcm0vbm90ZXMueG1sICB8ICA3ICsrKysrKysKLSBsaWIvZG5zL3Jlc29sdmVyLmMgfCAxNCArKysrKysrKysrKysrLQotIDUgZmlsZXMgY2hhbmdlZCwgNTYgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9DSEFOR0VTIGIvQ0hBTkdFUwotaW5kZXggYzViNWQyYi4uZDJlMzM2MCAxMDA2NDQKLS0tLSBhL0NIQU5HRVMKLSsrKyBiL0NIQU5HRVMKLUBAIC0xLDMgKzEsNyBAQAotKzQzMjIuICBbc2VjdXJpdHldICAgICAgRHVwbGljYXRlIEVETlMgQ09PS0lFIG9wdGlvbnMgaW4gYSByZXNwb25zZSBjb3VsZAotKyAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlciBhbiBhc3NlcnRpb24gZmFpbHVyZS4gKENWRS0yMDE2LTIwODgpCi0rICAgICAgICAgICAgICAgICAgICAgICBbUlQgIzQxODA5XQotKwotIDQzMTkuICBbc2VjdXJpdHldICAgICAgRml4IHJlc29sdmVyIGFzc2VydGlvbiBmYWlsdXJlIGR1ZSB0byBpbXByb3BlcgotICAgICAgICAgICAgICAgICAgICAgICAgRE5BTUUgaGFuZGxpbmcgd2hlbiBwYXJzaW5nIGZldGNoIHJlcGx5IG1lc3NhZ2VzLgotICAgICAgICAgICAgICAgICAgICAgICAgKENWRS0yMDE2LTEyODYpIFtSVCAjNDE3NTNdCi1kaWZmIC0tZ2l0IGEvYmluL2RpZy9kaWdob3N0LmMgYi9iaW4vZGlnL2RpZ2hvc3QuYwotaW5kZXggY2E4MmY4ZS4uMzQwOTA0ZiAxMDA2NDQKLS0tLSBhL2Jpbi9kaWcvZGlnaG9zdC5jCi0rKysgYi9iaW4vZGlnL2RpZ2hvc3QuYwotQEAgLTM0NTgsNiArMzQ1OCw3IEBAIHByb2Nlc3Nfb3B0KGRpZ19sb29rdXBfdCAqbCwgZG5zX21lc3NhZ2VfdCAqbXNnKSB7Ci0gCWlzY19idWZmZXJfdCBvcHRidWY7Ci0gCWlzY191aW50MTZfdCBvcHRjb2RlLCBvcHRsZW47Ci0gCWRuc19yZGF0YXNldF90ICpvcHQgPSBtc2ctPm9wdDsKLSsJaXNjX2Jvb2xlYW5fdCBzZWVuX2Nvb2tpZSA9IElTQ19GQUxTRTsKLSAKLSAJcmVzdWx0ID0gZG5zX3JkYXRhc2V0X2ZpcnN0KG9wdCk7Ci0gCWlmIChyZXN1bHQgPT0gSVNDX1JfU1VDQ0VTUykgewotQEAgLTM0NzAsNyArMzQ3MSwxNSBAQCBwcm9jZXNzX29wdChkaWdfbG9va3VwX3QgKmwsIGRuc19tZXNzYWdlX3QgKm1zZykgewotIAkJCW9wdGxlbiA9IGlzY19idWZmZXJfZ2V0dWludDE2KCZvcHRidWYpOwotIAkJCXN3aXRjaCAob3B0Y29kZSkgewotIAkJCWNhc2UgRE5TX09QVF9DT09LSUU6Ci0rCQkJCS8qCi0rCQkJCSAqIE9ubHkgcHJvY2VzcyB0aGUgZmlyc3QgY29va2llIG9wdGlvbi4KLSsJCQkJICovCi0rCQkJCWlmIChzZWVuX2Nvb2tpZSkgewotKwkJCQkJaXNjX2J1ZmZlcl9mb3J3YXJkKCZvcHRidWYsIG9wdGxlbik7Ci0rCQkJCQlicmVhazsKLSsJCQkJfQotIAkJCQlwcm9jZXNzX3NpdChsLCBtc2csICZvcHRidWYsIG9wdGxlbik7Ci0rCQkJCXNlZW5fY29va2llID0gSVNDX1RSVUU7Ci0gCQkJCWJyZWFrOwotIAkJCWRlZmF1bHQ6Ci0gCQkJCWlzY19idWZmZXJfZm9yd2FyZCgmb3B0YnVmLCBvcHRsZW4pOwotZGlmZiAtLWdpdCBhL2Jpbi9uYW1lZC9jbGllbnQuYyBiL2Jpbi9uYW1lZC9jbGllbnQuYwotaW5kZXggNjgzMzA1Yy4uMGQ3MzMxYSAxMDA2NDQKLS0tLSBhL2Jpbi9uYW1lZC9jbGllbnQuYwotKysrIGIvYmluL25hbWVkL2NsaWVudC5jCi1AQCAtMTIwLDcgKzEyMCwxMCBAQAotICAqLwotICNlbmRpZgotIAotLSNkZWZpbmUgU0lUX1NJWkUgMjRVIC8qIDggKyA0ICsgNCArIDggKi8KLSsjZGVmaW5lIENPT0tJRV9TSVpFIDI0VSAvKiA4ICsgNCArIDQgKyA4ICovCi0rCi0rI2RlZmluZSBXQU5UTlNJRCh4KSAoKCh4KS0+YXR0cmlidXRlcyAmIE5TX0NMSUVOVEFUVFJfV0FOVE5TSUQpICE9IDApCi0rI2RlZmluZSBXQU5URVhQSVJFKHgpICgoKHgpLT5hdHRyaWJ1dGVzICYgTlNfQ0xJRU5UQVRUUl9XQU5URVhQSVJFKSAhPSAwKQotIAotIC8qJSBuYW1lc2VydmVyIGNsaWVudCBtYW5hZ2VyIHN0cnVjdHVyZSAqLwotIHN0cnVjdCBuc19jbGllbnRtZ3IgewotQEAgLTEzOTUsNyArMTM5OCw3IEBAIG5zX2NsaWVudF9hZGRvcHQobnNfY2xpZW50X3QgKmNsaWVudCwgZG5zX21lc3NhZ2VfdCAqbWVzc2FnZSwKLSB7Ci0gCWNoYXIgbnNpZFtCVUZTSVpdLCAqbnNpZHA7Ci0gI2lmZGVmIElTQ19QTEFURk9STV9VU0VTSVQKLS0JdW5zaWduZWQgY2hhciBzaXRbU0lUX1NJWkVdOwotKwl1bnNpZ25lZCBjaGFyIHNpdFtDT09LSUVfU0laRV07Ci0gI2VuZGlmCi0gCWlzY19yZXN1bHRfdCByZXN1bHQ7Ci0gCWRuc192aWV3X3QgKnZpZXc7Ci1AQCAtMTQyMCw3ICsxNDIzLDcgQEAgbnNfY2xpZW50X2FkZG9wdChuc19jbGllbnRfdCAqY2xpZW50LCBkbnNfbWVzc2FnZV90ICptZXNzYWdlLAotIAlmbGFncyA9IGNsaWVudC0+ZXh0ZmxhZ3MgJiBETlNfTUVTU0FHRUVYVEZMQUdfUkVQTFlQUkVTRVJWRTsKLSAKLSAJLyogU2V0IEVETlMgb3B0aW9ucyBpZiBhcHBsaWNhYmxlICovCi0tCWlmICgoY2xpZW50LT5hdHRyaWJ1dGVzICYgTlNfQ0xJRU5UQVRUUl9XQU5UTlNJRCkgIT0gMCAmJgotKwlpZiAoV0FOVE5TSUQoY2xpZW50KSAmJgotIAkgICAgKG5zX2dfc2VydmVyLT5zZXJ2ZXJfaWQgIT0gTlVMTCB8fAotIAkgICAgIG5zX2dfc2VydmVyLT5zZXJ2ZXJfdXNlaG9zdG5hbWUpKSB7Ci0gCQlpZiAobnNfZ19zZXJ2ZXItPnNlcnZlcl91c2Vob3N0bmFtZSkgewotQEAgLTE0NTMsNyArMTQ1Niw3IEBAIG5zX2NsaWVudF9hZGRvcHQobnNfY2xpZW50X3QgKmNsaWVudCwgZG5zX21lc3NhZ2VfdCAqbWVzc2FnZSwKLSAKLSAJCUlOU0lTVChjb3VudCA8IEROU19FRE5TT1BUSU9OUyk7Ci0gCQllZG5zb3B0c1tjb3VudF0uY29kZSA9IEROU19PUFRfQ09PS0lFOwotLQkJZWRuc29wdHNbY291bnRdLmxlbmd0aCA9IFNJVF9TSVpFOwotKwkJZWRuc29wdHNbY291bnRdLmxlbmd0aCA9IENPT0tJRV9TSVpFOwotIAkJZWRuc29wdHNbY291bnRdLnZhbHVlID0gc2l0OwotIAkJY291bnQrKzsKLSAJfQotQEAgLTE2NjEsMTkgKzE2NjQsMjYgQEAgY29tcHV0ZV9zaXQobnNfY2xpZW50X3QgKmNsaWVudCwgaXNjX3VpbnQzMl90IHdoZW4sIGlzY191aW50MzJfdCBub25jZSwKLSAKLSBzdGF0aWMgdm9pZAotIHByb2Nlc3Nfc2l0KG5zX2NsaWVudF90ICpjbGllbnQsIGlzY19idWZmZXJfdCAqYnVmLCBzaXplX3Qgb3B0bGVuKSB7Ci0tCXVuc2lnbmVkIGNoYXIgZGJ1ZltTSVRfU0laRV07Ci0rCXVuc2lnbmVkIGNoYXIgZGJ1ZltDT09LSUVfU0laRV07Ci0gCXVuc2lnbmVkIGNoYXIgKm9sZDsKLSAJaXNjX3N0ZHRpbWVfdCBub3c7Ci0gCWlzY191aW50MzJfdCB3aGVuOwotIAlpc2NfdWludDMyX3Qgbm9uY2U7Ci0gCWlzY19idWZmZXJfdCBkYjsKLSAKLSsJLyoKLSsJICogSWYgd2UgaGF2ZSBhbHJlYWR5IHNlZW4gYSBFQ1Mgb3B0aW9uIHNraXAgdGhpcyBFQ1Mgb3B0aW9uLgotKwkgKi8KLSsJaWYgKChjbGllbnQtPmF0dHJpYnV0ZXMgJiBOU19DTElFTlRBVFRSX1dBTlRTSVQpICE9IDApIHsKLSsJCWlzY19idWZmZXJfZm9yd2FyZChidWYsIG9wdGxlbik7Ci0rCQlyZXR1cm47Ci0rCX0KLSAJY2xpZW50LT5hdHRyaWJ1dGVzIHw9IE5TX0NMSUVOVEFUVFJfV0FOVFNJVDsKLSAKLSAJaXNjX3N0YXRzX2luY3JlbWVudChuc19nX3NlcnZlci0+bnNzdGF0cywKLSAJCQkgICAgZG5zX25zc3RhdHNjb3VudGVyX3NpdG9wdCk7Ci0gCi0tCWlmIChvcHRsZW4gIT0gU0lUX1NJWkUpIHsKLSsJaWYgKG9wdGxlbiAhPSBDT09LSUVfU0laRSkgewotIAkJLyoKLSAJCSAqIE5vdCBvdXIgdG9rZW4uCi0gCQkgKi8KLUBAIC0xNzE3LDE0ICsxNzI3LDEzIEBAIHByb2Nlc3Nfc2l0KG5zX2NsaWVudF90ICpjbGllbnQsIGlzY19idWZmZXJfdCAqYnVmLCBzaXplX3Qgb3B0bGVuKSB7Ci0gCWlzY19idWZmZXJfaW5pdCgmZGIsIGRidWYsIHNpemVvZihkYnVmKSk7Ci0gCWNvbXB1dGVfc2l0KGNsaWVudCwgd2hlbiwgbm9uY2UsICZkYik7Ci0gCi0tCWlmICghaXNjX3NhZmVfbWVtZXF1YWwob2xkLCBkYnVmLCBTSVRfU0laRSkpIHsKLSsJaWYgKCFpc2Nfc2FmZV9tZW1lcXVhbChvbGQsIGRidWYsIENPT0tJRV9TSVpFKSkgewotIAkJaXNjX3N0YXRzX2luY3JlbWVudChuc19nX3NlcnZlci0+bnNzdGF0cywKLSAJCQkJICAgIGRuc19uc3N0YXRzY291bnRlcl9zaXRub21hdGNoKTsKLSAJCXJldHVybjsKLSAJfQotIAlpc2Nfc3RhdHNfaW5jcmVtZW50KG5zX2dfc2VydmVyLT5uc3N0YXRzLAotIAkJCSAgICBkbnNfbnNzdGF0c2NvdW50ZXJfc2l0bWF0Y2gpOwotLQotIAljbGllbnQtPmF0dHJpYnV0ZXMgfD0gTlNfQ0xJRU5UQVRUUl9IQVZFU0lUOwotIH0KLSAjZW5kaWYKLUBAIC0xNzgzLDcgKzE3OTIsOSBAQCBwcm9jZXNzX29wdChuc19jbGllbnRfdCAqY2xpZW50LCBkbnNfcmRhdGFzZXRfdCAqb3B0KSB7Ci0gCQkJb3B0bGVuID0gaXNjX2J1ZmZlcl9nZXR1aW50MTYoJm9wdGJ1Zik7Ci0gCQkJc3dpdGNoIChvcHRjb2RlKSB7Ci0gCQkJY2FzZSBETlNfT1BUX05TSUQ6Ci0tCQkJCWlzY19zdGF0c19pbmNyZW1lbnQobnNfZ19zZXJ2ZXItPm5zc3RhdHMsCi0rCQkJCWlmICghV0FOVE5TSUQoY2xpZW50KSkKLSsJCQkJCWlzY19zdGF0c19pbmNyZW1lbnQoCi0rCQkJCQkJICAgIG5zX2dfc2VydmVyLT5uc3N0YXRzLAotIAkJCQkJCSAgICBkbnNfbnNzdGF0c2NvdW50ZXJfbnNpZG9wdCk7Ci0gCQkJCWNsaWVudC0+YXR0cmlidXRlcyB8PSBOU19DTElFTlRBVFRSX1dBTlROU0lEOwotIAkJCQlpc2NfYnVmZmVyX2ZvcndhcmQoJm9wdGJ1Ziwgb3B0bGVuKTsKLUBAIC0xNzk0LDcgKzE4MDUsOSBAQCBwcm9jZXNzX29wdChuc19jbGllbnRfdCAqY2xpZW50LCBkbnNfcmRhdGFzZXRfdCAqb3B0KSB7Ci0gCQkJCWJyZWFrOwotICNlbmRpZgotIAkJCWNhc2UgRE5TX09QVF9FWFBJUkU6Ci0tCQkJCWlzY19zdGF0c19pbmNyZW1lbnQobnNfZ19zZXJ2ZXItPm5zc3RhdHMsCi0rCQkJCWlmICghV0FOVEVYUElSRShjbGllbnQpKQotKwkJCQkJaXNjX3N0YXRzX2luY3JlbWVudCgKLSsJCQkJCQkgIG5zX2dfc2VydmVyLT5uc3N0YXRzLAotIAkJCQkJCSAgZG5zX25zc3RhdHNjb3VudGVyX2V4cGlyZW9wdCk7Ci0gCQkJCWNsaWVudC0+YXR0cmlidXRlcyB8PSBOU19DTElFTlRBVFRSX1dBTlRFWFBJUkU7Ci0gCQkJCWlzY19idWZmZXJfZm9yd2FyZCgmb3B0YnVmLCBvcHRsZW4pOwotZGlmZiAtLWdpdCBhL2RvYy9hcm0vbm90ZXMueG1sIGIvZG9jL2FybS9ub3Rlcy54bWwKLWluZGV4IGViZjRmNTUuLjA5NWViNWIgMTAwNjQ0Ci0tLS0gYS9kb2MvYXJtL25vdGVzLnhtbAotKysrIGIvZG9jL2FybS9ub3Rlcy54bWwKLUBAIC01MSw2ICs1MSwxMyBAQAotICAgICA8dGl0bGU+U2VjdXJpdHkgRml4ZXM8L3RpdGxlPgotICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgIDxsaXN0aXRlbT4KLSsgICAgICAgPHBhcmE+Ci0rICAgICAgICAgRHVwbGljYXRlIEVETlMgQ09PS0lFIG9wdGlvbnMgaW4gYSByZXNwb25zZSBjb3VsZCB0cmlnZ2VyCi0rICAgICAgICAgYW4gYXNzZXJ0aW9uIGZhaWx1cmUuIFRoaXMgZmxhdyBpcyBkaXNjbG9zZWQgaW4gQ1ZFLTIwMTYtMjA4OC4KLSsgICAgICAgICBbUlQgIzQxODA5XQotKyAgICAgICA8L3BhcmE+Ci0rICAgICAgPC9saXN0aXRlbT4KLSsgICAgICA8bGlzdGl0ZW0+Ci0gCTxwYXJhPgotIAkgIFNwZWNpZmljIEFQTCBkYXRhIGNvdWxkIHRyaWdnZXIgYW4gSU5TSVNULiAgVGhpcyBmbGF3Ci0gCSAgd2FzIGRpc2NvdmVyZWQgYnkgQnJpYW4gTWl0Y2hlbGwgYW5kIGlzIGRpc2Nsb3NlZCBpbgotZGlmZiAtLWdpdCBhL2xpYi9kbnMvcmVzb2x2ZXIuYyBiL2xpYi9kbnMvcmVzb2x2ZXIuYwotaW5kZXggYTc5N2UzZi4uYmExYWUyMyAxMDA2NDQKLS0tLSBhL2xpYi9kbnMvcmVzb2x2ZXIuYwotKysrIGIvbGliL2Rucy9yZXNvbHZlci5jCi1AQCAtNzUwMiw3ICs3NTAyLDkgQEAgcHJvY2Vzc19vcHQocmVzcXVlcnlfdCAqcXVlcnksIGRuc19yZGF0YXNldF90ICpvcHQpIHsKLSAJdW5zaWduZWQgY2hhciAqc2l0OwotIAlkbnNfYWRiYWRkcmluZm9fdCAqYWRkcmluZm87Ci0gCXVuc2lnbmVkIGNoYXIgY29va2llWzhdOwotKwlpc2NfYm9vbGVhbl90IHNlZW5fY29va2llID0gSVNDX0ZBTFNFOwotICNlbmRpZgotKwlpc2NfYm9vbGVhbl90IHNlZW5fbnNpZCA9IElTQ19GQUxTRTsKLSAKLSAJcmVzdWx0ID0gZG5zX3JkYXRhc2V0X2ZpcnN0KG9wdCk7Ci0gCWlmIChyZXN1bHQgPT0gSVNDX1JfU1VDQ0VTUykgewotQEAgLTc1MTYsMTQgKzc1MTgsMjMgQEAgcHJvY2Vzc19vcHQocmVzcXVlcnlfdCAqcXVlcnksIGRuc19yZGF0YXNldF90ICpvcHQpIHsKLSAJCQlJTlNJU1Qob3B0bGVuIDw9IGlzY19idWZmZXJfcmVtYWluaW5nbGVuZ3RoKCZvcHRidWYpKTsKLSAJCQlzd2l0Y2ggKG9wdGNvZGUpIHsKLSAJCQljYXNlIEROU19PUFRfTlNJRDoKLS0JCQkJaWYgKHF1ZXJ5LT5vcHRpb25zICYgRE5TX0ZFVENIT1BUX1dBTlROU0lEKQotKwkJCQlpZiAoIXNlZW5fbnNpZCAmJgotKwkJCQkgICAgcXVlcnktPm9wdGlvbnMgJiBETlNfRkVUQ0hPUFRfV0FOVE5TSUQpCi0gCQkJCQlsb2dfbnNpZCgmb3B0YnVmLCBvcHRsZW4sIHF1ZXJ5LAotIAkJCQkJCSBJU0NfTE9HX0RFQlVHKDMpLAotIAkJCQkJCSBxdWVyeS0+ZmN0eC0+cmVzLT5tY3R4KTsKLSAJCQkJaXNjX2J1ZmZlcl9mb3J3YXJkKCZvcHRidWYsIG9wdGxlbik7Ci0rCQkJCXNlZW5fbnNpZCA9IElTQ19UUlVFOwotIAkJCQlicmVhazsKLSAjaWZkZWYgSVNDX1BMQVRGT1JNX1VTRVNJVAotIAkJCWNhc2UgRE5TX09QVF9DT09LSUU6Ci0rCQkJCS8qCi0rCQkJCSAqIE9ubHkgcHJvY2VzcyB0aGUgZmlyc3QgY29va2llIG9wdGlvbi4KLSsJCQkJICovCi0rCQkJCWlmIChzZWVuX2Nvb2tpZSkgewotKwkJCQkJaXNjX2J1ZmZlcl9mb3J3YXJkKCZvcHRidWYsIG9wdGxlbik7Ci0rCQkJCQlicmVhazsKLSsJCQkJfQotIAkJCQlzaXQgPSBpc2NfYnVmZmVyX2N1cnJlbnQoJm9wdGJ1Zik7Ci0gCQkJCWNvbXB1dGVfY2MocXVlcnksIGNvb2tpZSwgc2l6ZW9mKGNvb2tpZSkpOwotIAkJCQlJTlNJU1QocXVlcnktPmZjdHgtPnJtZXNzYWdlLT5zaXRiYWQgPT0gMCAmJgotQEAgLTc1NDEsNiArNzU1Miw3IEBAIHByb2Nlc3Nfb3B0KHJlc3F1ZXJ5X3QgKnF1ZXJ5LCBkbnNfcmRhdGFzZXRfdCAqb3B0KSB7Ci0gCQkJCWlzY19idWZmZXJfZm9yd2FyZCgmb3B0YnVmLCBvcHRsZW4pOwotIAkJCQlpbmNfc3RhdHMocXVlcnktPmZjdHgtPnJlcywKLSAJCQkJCSAgZG5zX3Jlc3N0YXRzY291bnRlcl9zaXRpbik7Ci0rCQkJCXNlZW5fY29va2llID0gSVNDX1RSVUU7Ci0gCQkJCWJyZWFrOwotICNlbmRpZgotIAkJCWRlZmF1bHQ6Ci0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9DVkUtMjAxNi0yNzc1LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL0NWRS0yMDE2LTI3NzUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzOTMwNjMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL0NWRS0yMDE2LTI3NzUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5MCArMCwwIEBACi1Gcm9tIDlkOGFiYThhNzc3ODcyMWFlMmNlZTZlNDY3MGE4ZTZiZTY1OTBiMDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJrIEFuZHJld3MgPG1hcmthQGlzYy5vcmc+Ci1EYXRlOiBXZWQsIDEyIE9jdCAyMDE2IDE5OjUyOjU5ICswOTAwCi1TdWJqZWN0OiBbUEFUQ0hdCi00NDA2LiAgIFtzZWN1cml0eV0gICAgICBnZXRycnNldGJ5bmFtZSB3aXRoIGEgbm9uIGFic29sdXRlIG5hbWUgY291bGQKLSAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIgYW4gaW5maW5pdGUgcmVjdXJzaW9uIGJ1ZyBpbiBsd3Jlc2QKLSAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBuYW1lZCB3aXRoIGx3cmVzIGNvbmZpZ3VyZWQgaWYgd2hlbiBjb21iaW5lZAotICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBhIHNlYXJjaCBsaXN0IGVudHJ5IHRoZSByZXN1bHRpbmcgbmFtZSBpcwotICAgICAgICAgICAgICAgICAgICAgICAgdG9vIGxvbmcuIChDVkUtMjAxNi0yNzc1KSBbUlQgIzQyNjk0XQotCi1CYWNrcG9ydCBjb21taXQgMzhjYzJkMTRlMjE4ZTUzNmUwMTAyZmE3MGRlZWY5OTQ2MTM1NDIzMiBmcm9tIHRoZQotdjkuMTEuMF9wYXRjaCBicmFuY2guCi0KLUNWRTogQ1ZFLTIwMTYtMjc3NQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiB6aGVuZ3J1b3FpbiA8emhlbmdycS5mbnN0QGNuLmZ1aml0c3UuY29tPgotCi0tLS0KLSBDSEFOR0VTICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA2ICsrKysrKwotIGJpbi9uYW1lZC9sd2RncmJuLmMgICAgICAgICAgICAgIHwgMTYgKysrKysrKysrKy0tLS0tLQotIGJpbi90ZXN0cy9zeXN0ZW0vbHdyZXNkL2x3dGVzdC5jIHwgIDkgKysrKysrKystCi0gMyBmaWxlcyBjaGFuZ2VkLCAyNCBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvQ0hBTkdFUyBiL0NIQU5HRVMKLWluZGV4IGQyZTMzNjAuLmQwYTlkMTIgMTAwNjQ0Ci0tLS0gYS9DSEFOR0VTCi0rKysgYi9DSEFOR0VTCi1AQCAtMSwzICsxLDkgQEAKLSs0NDA2LiAgIFtzZWN1cml0eV0gICAgICBnZXRycnNldGJ5bmFtZSB3aXRoIGEgbm9uIGFic29sdXRlIG5hbWUgY291bGQKLSsgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyIGFuIGluZmluaXRlIHJlY3Vyc2lvbiBidWcgaW4gbHdyZXNkCi0rICAgICAgICAgICAgICAgICAgICAgICAgYW5kIG5hbWVkIHdpdGggbHdyZXMgY29uZmlndXJlZCBpZiB3aGVuIGNvbWJpbmVkCi0rICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBhIHNlYXJjaCBsaXN0IGVudHJ5IHRoZSByZXN1bHRpbmcgbmFtZSBpcwotKyAgICAgICAgICAgICAgICAgICAgICAgIHRvbyBsb25nLiAoQ1ZFLTIwMTYtMjc3NSkgW1JUICM0MjY5NF0KLSsKLSA0MzIyLiAgW3NlY3VyaXR5XSAgICAgIER1cGxpY2F0ZSBFRE5TIENPT0tJRSBvcHRpb25zIGluIGEgcmVzcG9uc2UgY291bGQKLSAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIgYW4gYXNzZXJ0aW9uIGZhaWx1cmUuIChDVkUtMjAxNi0yMDg4KQotICAgICAgICAgICAgICAgICAgICAgICAgW1JUICM0MTgwOV0KLWRpZmYgLS1naXQgYS9iaW4vbmFtZWQvbHdkZ3Jibi5jIGIvYmluL25hbWVkL2x3ZGdyYm4uYwotaW5kZXggM2U3YjE1Yi4uZTFlOWFkYyAxMDA2NDQKLS0tLSBhL2Jpbi9uYW1lZC9sd2RncmJuLmMKLSsrKyBiL2Jpbi9uYW1lZC9sd2RncmJuLmMKLUBAIC00MDMsMTQgKzQwMywxOCBAQCBzdGFydF9sb29rdXAobnNfbHdkY2xpZW50X3QgKmNsaWVudCkgewotIAlJTlNJU1QoY2xpZW50LT5sb29rdXAgPT0gTlVMTCk7Ci0gCi0gCWRuc19maXhlZG5hbWVfaW5pdCgmYWJzbmFtZSk7Ci0tCXJlc3VsdCA9IG5zX2x3c2VhcmNoY3R4X2N1cnJlbnQoJmNsaWVudC0+c2VhcmNoY3R4LAotLQkJCQkJZG5zX2ZpeGVkbmFtZV9uYW1lKCZhYnNuYW1lKSk7Ci0rCi0gCS8qCi0tCSAqIFRoaXMgd2lsbCByZXR1cm4gZmFpbHVyZSBpZiByZWxhdGl2ZSBuYW1lICsgc3VmZml4IGlzIHRvbyBsb25nLgotLQkgKiBJbiB0aGlzIGNhc2UsIGp1c3QgZ28gb24gdG8gdGhlIG5leHQgZW50cnkgaW4gdGhlIHNlYXJjaCBwYXRoLgotKyAgICAgICAgICogUGVyZm9ybSBzZWFyY2ggYWNyb3NzIGFsbCBzZWFyY2ggZG9tYWlucyB1bnRpbCBzdWNjZXNzCi0rICAgICAgICAgKiBpcyByZXR1cm5lZC4gUmV0dXJuIGluIGNhc2Ugb2YgZmFpbHVyZS4KLSAJICovCi0tCWlmIChyZXN1bHQgIT0gSVNDX1JfU1VDQ0VTUykKLS0JCXN0YXJ0X2xvb2t1cChjbGllbnQpOwotKyAgICAgICAgd2hpbGUgKG5zX2x3c2VhcmNoY3R4X2N1cnJlbnQoJmNsaWVudC0+c2VhcmNoY3R4LAotKyAgICAgICAgICAgICAgICAgICAgICAgIGRuc19maXhlZG5hbWVfbmFtZSgmYWJzbmFtZSkpICE9IElTQ19SX1NVQ0NFU1MpIHsKLSsgICAgICAgICAgICAgICAgaWYgKG5zX2x3c2VhcmNoY3R4X25leHQoJmNsaWVudC0+c2VhcmNoY3R4KSAhPSBJU0NfUl9TVUNDRVNTKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgbnNfbHdkY2xpZW50X2Vycm9ycGt0c2VuZChjbGllbnQsIExXUkVTX1JfRkFJTFVSRSk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotKyAgICAgICAgICAgICAgICB9Ci0rICAgICAgICB9Ci0gCi0gCXJlc3VsdCA9IGRuc19sb29rdXBfY3JlYXRlKGNtLT5tY3R4LAotIAkJCQkgICBkbnNfZml4ZWRuYW1lX25hbWUoJmFic25hbWUpLAotZGlmZiAtLWdpdCBhL2Jpbi90ZXN0cy9zeXN0ZW0vbHdyZXNkL2x3dGVzdC5jIGIvYmluL3Rlc3RzL3N5c3RlbS9sd3Jlc2QvbHd0ZXN0LmMKLWluZGV4IGFkOWI1NTEuLjNlYjRhNjYgMTAwNjQ0Ci0tLS0gYS9iaW4vdGVzdHMvc3lzdGVtL2x3cmVzZC9sd3Rlc3QuYwotKysrIGIvYmluL3Rlc3RzL3N5c3RlbS9sd3Jlc2QvbHd0ZXN0LmMKLUBAIC03NjgsNyArNzY4LDE0IEBAIG1haW4odm9pZCkgewotIAl0ZXN0X2dldHJyc2V0YnluYW1lKCJlLmV4YW1wbGUxLiIsIDEsIDIsIDEsIDEsIDEpOwotIAl0ZXN0X2dldHJyc2V0YnluYW1lKCJlLmV4YW1wbGUxLiIsIDEsIDQ2LCAyLCAwLCAxKTsKLSAJdGVzdF9nZXRycnNldGJ5bmFtZSgiIiwgMSwgMSwgMCwgMCwgMCk7Ci0tCi0rICAgICAgICB0ZXN0X2dldHJyc2V0YnluYW1lKCIxMjM0NTY3ODkuMTIzNDU2Nzg5LjEyMzQ1Njc4OS4xMjM0NTY3ODkuIgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMTIzNDU2Nzg5LjEyMzQ1Njc4OS4xMjM0NTY3ODkuMTIzNDU2Nzg5LiIKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjEyMzQ1Njc4OS4xMjM0NTY3ODkuMTIzNDU2Nzg5LjEyMzQ1Njc4OS4iCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxMjM0NTY3ODkuMTIzNDU2Nzg5LjEyMzQ1Njc4OS4xMjM0NTY3ODkuIgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMTIzNDU2Nzg5LjEyMzQ1Njc4OS4xMjM0NTY3ODkuMTIzNDU2Nzg5LiIKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjEyMzQ1Njc4OS4xMjM0NTY3ODkuMTIzNDU2Nzg5LjEyMzQ1Njc4OS4iCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxMjM0NTY3ODkiLCAxLCAxLCAwLCAwLCAwKTsKLSsgCi0gCWlmIChmYWlscyA9PSAwKQotIAkJcHJpbnRmKCJJOm9rXG4iKTsKLSAJcmV0dXJuIChmYWlscyk7Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9DVkUtMjAxNi0yNzc2LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL0NWRS0yMDE2LTI3NzYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczOGJmNjAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL0NWRS0yMDE2LTI3NzYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotRnJvbSAxMTcxMTExNjU3MDgxOTcwNTg1ZjlmMGUwM2I0NzYzNThjMzNhNmMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFyayBBbmRyZXdzIDxtYXJrYUBpc2Mub3JnPgotRGF0ZTogV2VkLCAxMiBPY3QgMjAxNiAyMDozNjo1MiArMDkwMAotU3ViamVjdDogW1BBVENIXSAKLTQ0NjcuICAgW3NlY3VyaXR5XSAgICAgIEl0IHdhcyBwb3NzaWJsZSB0byB0cmlnZ2VyIGFuIGFzc2VydGlvbiB3aGVuIAotICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyaW5nIGEgbWVzc2FnZS4gKENWRS0yMDE2LTI3NzYpIFtSVCAjNDMxMzldCi0KLUJhY2twb3J0IGNvbW1pdCAyYmQwOTIyY2Y5OTViOWFjMjA1ZmM4M2JhZjdlMjIwYjk1YzZiZjEyIGZyb20gdGhlCi12OS4xMS4wX3BhdGNoIGJyYW5jaC4KLQotQ1ZFOiBDVkUtMjAxNi0yNzc2Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IHpoZW5ncnVvcWluIDx6aGVuZ3JxLmZuc3RAY24uZnVqaXRzdS5jb20+Ci0KLS0tLQotIENIQU5HRVMgICAgICAgICAgIHwgIDMgKysrCi0gbGliL2Rucy9tZXNzYWdlLmMgfCA0MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDM0IGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvQ0hBTkdFUyBiL0NIQU5HRVMKLWluZGV4IGQwYTlkMTIuLjVjOGM2MWEgMTAwNjQ0Ci0tLS0gYS9DSEFOR0VTCi0rKysgYi9DSEFOR0VTCi1AQCAtMSwzICsxLDYgQEAKLSs0NDY3LiAgIFtzZWN1cml0eV0gICAgICBJdCB3YXMgcG9zc2libGUgdG8gdHJpZ2dlciBhbiBhc3NlcnRpb24gd2hlbgotKyAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcmluZyBhIG1lc3NhZ2UuIChDVkUtMjAxNi0yNzc2KSBbUlQgIzQzMTM5XQotKwotIDQ0MDYuICAgW3NlY3VyaXR5XSAgICAgIGdldHJyc2V0YnluYW1lIHdpdGggYSBub24gYWJzb2x1dGUgbmFtZSBjb3VsZAotICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIgYW4gaW5maW5pdGUgcmVjdXJzaW9uIGJ1ZyBpbiBsd3Jlc2QKLSAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgbmFtZWQgd2l0aCBsd3JlcyBjb25maWd1cmVkIGlmIHdoZW4gY29tYmluZWQKLWRpZmYgLS1naXQgYS9saWIvZG5zL21lc3NhZ2UuYyBiL2xpYi9kbnMvbWVzc2FnZS5jCi1pbmRleCA2YjViNGJiLi5iNzRkYzgxIDEwMDY0NAotLS0tIGEvbGliL2Rucy9tZXNzYWdlLmMKLSsrKyBiL2xpYi9kbnMvbWVzc2FnZS5jCi1AQCAtMTc1NCw3ICsxNzU0LDcgQEAgZG5zX21lc3NhZ2VfcmVuZGVyYmVnaW4oZG5zX21lc3NhZ2VfdCAqbXNnLCBkbnNfY29tcHJlc3NfdCAqY2N0eCwKLSAJaWYgKHIubGVuZ3RoIDwgRE5TX01FU1NBR0VfSEVBREVSTEVOKQotIAkJcmV0dXJuIChJU0NfUl9OT1NQQUNFKTsKLSAKLS0JaWYgKHIubGVuZ3RoIDwgbXNnLT5yZXNlcnZlZCkKLSsgICAgICAgIGlmIChyLmxlbmd0aCAtIEROU19NRVNTQUdFX0hFQURFUkxFTiA8IG1zZy0+cmVzZXJ2ZWQpCi0gCQlyZXR1cm4gKElTQ19SX05PU1BBQ0UpOwotIAotIAkvKgotQEAgLTE4OTUsOCArMTg5NSwyOSBAQCBub3JlbmRlcl9yZGF0YXNldChjb25zdCBkbnNfcmRhdGFzZXRfdCAqcmRhdGFzZXQsIHVuc2lnbmVkIGludCBvcHRpb25zLAotIAotIAlyZXR1cm4gKElTQ19UUlVFKTsKLSB9Ci0tCi0gI2VuZGlmCi0rCi0rc3RhdGljIGlzY19yZXN1bHRfdAotK3JlbmRlcnNldChkbnNfcmRhdGFzZXRfdCAqcmRhdGFzZXQsIGRuc19uYW1lX3QgKm93bmVyX25hbWUsCi0rICAgICAgICAgZG5zX2NvbXByZXNzX3QgKmNjdHgsIGlzY19idWZmZXJfdCAqdGFyZ2V0LAotKyAgICAgICAgIHVuc2lnbmVkIGludCByZXNlcnZlZCwgdW5zaWduZWQgaW50IG9wdGlvbnMsIHVuc2lnbmVkIGludCAqY291bnRwKQotK3sKLSsgICAgICAgaXNjX3Jlc3VsdF90IHJlc3VsdDsKLSsKLSsgICAgICAgLyoKLSsgICAgICAgICogU2hyaW5rIHRoZSBzcGFjZSBpbiB0aGUgYnVmZmVyIGJ5IHRoZSByZXNlcnZlZCBhbW91bnQuCi0rICAgICAgICAqLwotKyAgICAgICBpZiAodGFyZ2V0LT5sZW5ndGggLSB0YXJnZXQtPnVzZWQgPCByZXNlcnZlZCkKLSsgICAgICAgICAgICAgICByZXR1cm4gKElTQ19SX05PU1BBQ0UpOwotKwotKyAgICAgICB0YXJnZXQtPmxlbmd0aCAtPSByZXNlcnZlZDsKLSsgICAgICAgcmVzdWx0ID0gZG5zX3JkYXRhc2V0X3Rvd2lyZShyZGF0YXNldCwgb3duZXJfbmFtZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjY3R4LCB0YXJnZXQsIG9wdGlvbnMsIGNvdW50cCk7Ci0rICAgICAgIHRhcmdldC0+bGVuZ3RoICs9IHJlc2VydmVkOwotKwotKyAgICAgICByZXR1cm4gKHJlc3VsdCk7Ci0rfQotKwotIGlzY19yZXN1bHRfdAotIGRuc19tZXNzYWdlX3JlbmRlcnNlY3Rpb24oZG5zX21lc3NhZ2VfdCAqbXNnLCBkbnNfc2VjdGlvbl90IHNlY3Rpb25pZCwKLSAJCQkgIHVuc2lnbmVkIGludCBvcHRpb25zKQotQEAgLTE5MzksNiArMTk2MCw4IEBAIGRuc19tZXNzYWdlX3JlbmRlcnNlY3Rpb24oZG5zX21lc3NhZ2VfdCAqbXNnLCBkbnNfc2VjdGlvbl90IHNlY3Rpb25pZCwKLSAJLyoKLSAJICogU2hyaW5rIHRoZSBzcGFjZSBpbiB0aGUgYnVmZmVyIGJ5IHRoZSByZXNlcnZlZCBhbW91bnQuCi0gCSAqLwotKyAgICAgICAgaWYgKG1zZy0+YnVmZmVyLT5sZW5ndGggLSBtc2ctPmJ1ZmZlci0+dXNlZCA8IG1zZy0+cmVzZXJ2ZWQpCi0rICAgICAgICAgICAgICAgIHJldHVybiAoSVNDX1JfTk9TUEFDRSk7Ci0gCW1zZy0+YnVmZmVyLT5sZW5ndGggLT0gbXNnLT5yZXNlcnZlZDsKLSAKLSAJdG90YWwgPSAwOwotQEAgLTIyMTQsOSArMjIzNyw4IEBAIGRuc19tZXNzYWdlX3JlbmRlcmVuZChkbnNfbWVzc2FnZV90ICptc2cpIHsKLSAJCSAqIFJlbmRlci4KLSAJCSAqLwotIAkJY291bnQgPSAwOwotLQkJcmVzdWx0ID0gZG5zX3JkYXRhc2V0X3Rvd2lyZShtc2ctPm9wdCwgZG5zX3Jvb3RuYW1lLAotLQkJCQkJICAgICBtc2ctPmNjdHgsIG1zZy0+YnVmZmVyLCAwLAotLQkJCQkJICAgICAmY291bnQpOwotKyAgICAgICAgICAgICAgICByZXN1bHQgPSByZW5kZXJzZXQobXNnLT5vcHQsIGRuc19yb290bmFtZSwgbXNnLT5jY3R4LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnLT5idWZmZXIsIG1zZy0+cmVzZXJ2ZWQsIDAsICZjb3VudCk7Ci0gCQltc2ctPmNvdW50c1tETlNfU0VDVElPTl9BRERJVElPTkFMXSArPSBjb3VudDsKLSAJCWlmIChyZXN1bHQgIT0gSVNDX1JfU1VDQ0VTUykKLSAJCQlyZXR1cm4gKHJlc3VsdCk7Ci1AQCAtMjIzMiw5ICsyMjU0LDggQEAgZG5zX21lc3NhZ2VfcmVuZGVyZW5kKGRuc19tZXNzYWdlX3QgKm1zZykgewotIAkJaWYgKHJlc3VsdCAhPSBJU0NfUl9TVUNDRVNTKQotIAkJCXJldHVybiAocmVzdWx0KTsKLSAJCWNvdW50ID0gMDsKLS0JCXJlc3VsdCA9IGRuc19yZGF0YXNldF90b3dpcmUobXNnLT50c2lnLCBtc2ctPnRzaWduYW1lLAotLQkJCQkJICAgICBtc2ctPmNjdHgsIG1zZy0+YnVmZmVyLCAwLAotLQkJCQkJICAgICAmY291bnQpOwotKyAgICAgICAgICAgICAgICByZXN1bHQgPSByZW5kZXJzZXQobXNnLT50c2lnLCBtc2ctPnRzaWduYW1lLCBtc2ctPmNjdHgsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2ctPmJ1ZmZlciwgbXNnLT5yZXNlcnZlZCwgMCwgJmNvdW50KTsKLSAJCW1zZy0+Y291bnRzW0ROU19TRUNUSU9OX0FERElUSU9OQUxdICs9IGNvdW50OwotIAkJaWYgKHJlc3VsdCAhPSBJU0NfUl9TVUNDRVNTKQotIAkJCXJldHVybiAocmVzdWx0KTsKLUBAIC0yMjU1LDkgKzIyNzYsOCBAQCBkbnNfbWVzc2FnZV9yZW5kZXJlbmQoZG5zX21lc3NhZ2VfdCAqbXNnKSB7Ci0gCQkgKiB0aGUgb3duZXIgbmFtZSBvZiBhIFNJRygwKSBpcyBpcnJlbGV2YW50LCBhbmQgd2lsbCBub3QKLSAJCSAqIGJlIHNldCBpbiBhIG1lc3NhZ2UgYmVpbmcgcmVuZGVyZWQuCi0gCQkgKi8KLS0JCXJlc3VsdCA9IGRuc19yZGF0YXNldF90b3dpcmUobXNnLT5zaWcwLCBkbnNfcm9vdG5hbWUsCi0tCQkJCQkgICAgIG1zZy0+Y2N0eCwgbXNnLT5idWZmZXIsIDAsCi0tCQkJCQkgICAgICZjb3VudCk7Ci0rICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlbmRlcnNldChtc2ctPnNpZzAsIGRuc19yb290bmFtZSwgbXNnLT5jY3R4LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnLT5idWZmZXIsIG1zZy0+cmVzZXJ2ZWQsIDAsICZjb3VudCk7Ci0gCQltc2ctPmNvdW50c1tETlNfU0VDVElPTl9BRERJVElPTkFMXSArPSBjb3VudDsKLSAJCWlmIChyZXN1bHQgIT0gSVNDX1JfU1VDQ0VTUykKLSAJCQlyZXR1cm4gKHJlc3VsdCk7Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9DVkUtMjAxNi02MTcwLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL0NWRS0yMDE2LTYxNzAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1YmMyMTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL0NWRS0yMDE2LTYxNzAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkwICswLDAgQEAKLUZyb20gMWJiY2ZlMmZjODRmNTdiMWU0ZTA3NWZiM2JjMmExZGQwYTNhODUxZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcmsgQW5kcmV3cyA8bWFya2FAaXNjLm9yZz4KLURhdGU6IFdlZCwgMiBOb3YgMjAxNiAxNzozMToyNyArMTEwMAotU3ViamVjdDogW1BBVENIXSA0NTA0LiBbc2VjdXJpdHldIEFsbG93IHRoZSBtYXhpbXVtIG51bWJlciBvZiByZWNvcmRzIGluIGEKLSB6b25lIHRvIGJlIHNwZWNpZmllZC4gVGhpcyBwcm92aWRlcyBhIGNvbnRyb2wgZm9yIGlzc3VlcyByYWlzZWQgaW4KLSBDVkUtMjAxNi02MTcwLiBbUlQgIzQyMTQzXQotCi0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCA1Zjg0MTJhNGNiNWVlMTRhMGU4Y2RkZDQxMDc4NTRiNDBlZTMyOTFlKQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1baHR0cHM6Ly9zb3VyY2UuaXNjLm9yZy9jZ2ktYmluL2dpdHdlYi5jZ2k/cD1iaW5kOS5naXQ7YT1jb21taXQ7aD0xYmJjZmUyZmM4NGY1N2IxZTRlMDc1ZmIzYmMyYTFkZDBhM2E4NTFmXQotCi1DVkU6IENWRS0yMDE2LTYxNzAKLQotU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgotLS0tCi0gQ0hBTkdFUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0ICsKLSBiaW4vbmFtZWQvY29uZmlnLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwotIGJpbi9uYW1lZC9uYW1lZC5jb25mLmRvY2Jvb2sgICAgICAgICAgICAgICAgICAgICB8ICAgMyArCi0gYmluL25hbWVkL3VwZGF0ZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE2ICsrKwotIGJpbi9uYW1lZC96b25lY29uZi5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNyArKwotIGJpbi90ZXN0cy9zeXN0ZW0vbnN1cGRhdGUvY2xlYW4uc2ggICAgICAgICAgICAgICB8ICAgMSArCi0gYmluL3Rlc3RzL3N5c3RlbS9uc3VwZGF0ZS9uczMvbmFtZWQuY29uZiAgICAgICAgIHwgICA3ICsrCi0gYmluL3Rlc3RzL3N5c3RlbS9uc3VwZGF0ZS9uczMvdG9vLWJpZy50ZXN0LmRiLmluIHwgIDEwICsrCi0gYmluL3Rlc3RzL3N5c3RlbS9uc3VwZGF0ZS9zZXR1cC5zaCAgICAgICAgICAgICAgIHwgICAyICsKLSBiaW4vdGVzdHMvc3lzdGVtL25zdXBkYXRlL3Rlc3RzLnNoICAgICAgICAgICAgICAgfCAgMTUgKysrCi0gYmluL3Rlc3RzL3N5c3RlbS94ZmVyL2NsZWFuLnNoICAgICAgICAgICAgICAgICAgIHwgICAxICsKLSBiaW4vdGVzdHMvc3lzdGVtL3hmZXIvbnMxL2F4ZnItdG9vLWJpZy5kYiAgICAgICAgfCAgMTAgKysKLSBiaW4vdGVzdHMvc3lzdGVtL3hmZXIvbnMxL2l4ZnItdG9vLWJpZy5kYi5pbiAgICAgfCAgMTMgKysrCi0gYmluL3Rlc3RzL3N5c3RlbS94ZmVyL25zMS9uYW1lZC5jb25mICAgICAgICAgICAgIHwgIDExICsrCi0gYmluL3Rlc3RzL3N5c3RlbS94ZmVyL25zNi9uYW1lZC5jb25mICAgICAgICAgICAgIHwgIDE0ICsrKwotIGJpbi90ZXN0cy9zeXN0ZW0veGZlci9zZXR1cC5zaCAgICAgICAgICAgICAgICAgICB8ICAgMiArCi0gYmluL3Rlc3RzL3N5c3RlbS94ZmVyL3Rlc3RzLnNoICAgICAgICAgICAgICAgICAgIHwgIDI2ICsrKysrCi0gZG9jL2FybS9CdjlBUk0tYm9vay54bWwgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIxICsrKysKLSBkb2MvYXJtL25vdGVzLnhtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDkgKysKLSBsaWIvYmluZDkvY2hlY2suYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKwotIGxpYi9kbnMvZGIuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMyArKysKLSBsaWIvZG5zL2VjZGIuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMgKy0KLSBsaWIvZG5zL2luY2x1ZGUvZG5zL2RiLmggICAgICAgICAgICAgICAgICAgICAgICAgfCAgMjAgKysrKwotIGxpYi9kbnMvaW5jbHVkZS9kbnMvcmRhdGFzbGFiLmggICAgICAgICAgICAgICAgICB8ICAxMyArKysKLSBsaWIvZG5zL2luY2x1ZGUvZG5zL3Jlc3VsdC5oICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKy0KLSBsaWIvZG5zL2luY2x1ZGUvZG5zL3pvbmUuaCAgICAgICAgICAgICAgICAgICAgICAgfCAgMjggKysrKy0KLSBsaWIvZG5zL3JidGRiLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMjcgKysrKysrKysrKysrKysrKysrKysrLS0KLSBsaWIvZG5zL3JkYXRhc2xhYi5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTMgKysrCi0gbGliL2Rucy9yZXN1bHQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA5ICstCi0gbGliL2Rucy9zZGIuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzICstCi0gbGliL2Rucy9zZGx6LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzICstCi0gbGliL2Rucy94ZnJpbi5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIyICsrKy0KLSBsaWIvZG5zL3pvbmUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMjMgKysrLQotIGxpYi9pc2NjZmcvbmFtZWRjb25mLmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCi0gMzQgZmlsZXMgY2hhbmdlZCwgNDQ0IGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBiaW4vdGVzdHMvc3lzdGVtL25zdXBkYXRlL25zMy90b28tYmlnLnRlc3QuZGIuaW4KLSBjcmVhdGUgbW9kZSAxMDA2NDQgYmluL3Rlc3RzL3N5c3RlbS94ZmVyL25zMS9heGZyLXRvby1iaWcuZGIKLSBjcmVhdGUgbW9kZSAxMDA2NDQgYmluL3Rlc3RzL3N5c3RlbS94ZmVyL25zMS9peGZyLXRvby1iaWcuZGIuaW4KLQotZGlmZiAtLWdpdCBhL0NIQU5HRVMgYi9DSEFOR0VTCi1pbmRleCA0MWNmY2U1Li45N2QyZTYwIDEwMDY0NAotLS0tIGEvQ0hBTkdFUwotKysrIGIvQ0hBTkdFUwotQEAgLTEsMyArMSw3IEBACi0rNDUwNC4JW3NlY3VyaXR5XQlBbGxvdyB0aGUgbWF4aW11bSBudW1iZXIgb2YgcmVjb3JkcyBpbiBhIHpvbmUgdG8KLSsJCQliZSBzcGVjaWZpZWQuICBUaGlzIHByb3ZpZGVzIGEgY29udHJvbCBmb3IgaXNzdWVzCi0rCQkJcmFpc2VkIGluIENWRS0yMDE2LTYxNzAuIFtSVCAjNDIxNDNdCi0rCi0gNDQ4OS4JW3NlY3VyaXR5XQlJdCB3YXMgcG9zc2libGUgdG8gdHJpZ2dlciBhc3NlcnRpb25zIHdoZW4gcHJvY2Vzc2luZwotIAkJCWEgcmVzcG9uc2UuIChDVkUtMjAxNi04ODY0KSBbUlQgIzQzNDY1XQotIAotZGlmZiAtLWdpdCBhL2Jpbi9uYW1lZC9jb25maWcuYyBiL2Jpbi9uYW1lZC9jb25maWcuYwotaW5kZXggZjA2MzQ4Yy4uYzI0ZTMzNCAxMDA2NDQKLS0tLSBhL2Jpbi9uYW1lZC9jb25maWcuYwotKysrIGIvYmluL25hbWVkL2NvbmZpZy5jCi1AQCAtMjA5LDYgKzIwOSw3IEBAIG9wdGlvbnMge1xuXAotIAltYXgtdHJhbnNmZXItdGltZS1vdXQgMTIwO1xuXAotIAltYXgtdHJhbnNmZXItaWRsZS1pbiA2MDtcblwKLSAJbWF4LXRyYW5zZmVyLWlkbGUtb3V0IDYwO1xuXAotKwltYXgtcmVjb3JkcyAwO1xuXAotIAltYXgtcmV0cnktdGltZSAxMjA5NjAwOyAvKiAyIHdlZWtzICovXG5cCi0gCW1pbi1yZXRyeS10aW1lIDUwMDtcblwKLSAJbWF4LXJlZnJlc2gtdGltZSAyNDE5MjAwOyAvKiA0IHdlZWtzICovXG5cCi1kaWZmIC0tZ2l0IGEvYmluL25hbWVkL25hbWVkLmNvbmYuZG9jYm9vayBiL2Jpbi9uYW1lZC9uYW1lZC5jb25mLmRvY2Jvb2sKLWluZGV4IDRjOTlhNjEuLmMyZDE3M2EgMTAwNjQ0Ci0tLS0gYS9iaW4vbmFtZWQvbmFtZWQuY29uZi5kb2Nib29rCi0rKysgYi9iaW4vbmFtZWQvbmFtZWQuY29uZi5kb2Nib29rCi1AQCAtMzM4LDYgKzMzOCw3IEBAIG9wdGlvbnMgewotIAl9OwotIAotIAltYXgtam91cm5hbC1zaXplIDxyZXBsYWNlYWJsZT5zaXplX25vX2RlZmF1bHQ8L3JlcGxhY2VhYmxlPjsKLSsJbWF4LXJlY29yZHMgPHJlcGxhY2VhYmxlPmludGVnZXI8L3JlcGxhY2VhYmxlPjsKLSAJbWF4LXRyYW5zZmVyLXRpbWUtaW4gPHJlcGxhY2VhYmxlPmludGVnZXI8L3JlcGxhY2VhYmxlPjsKLSAJbWF4LXRyYW5zZmVyLXRpbWUtb3V0IDxyZXBsYWNlYWJsZT5pbnRlZ2VyPC9yZXBsYWNlYWJsZT47Ci0gCW1heC10cmFuc2Zlci1pZGxlLWluIDxyZXBsYWNlYWJsZT5pbnRlZ2VyPC9yZXBsYWNlYWJsZT47Ci1AQCAtNTI3LDYgKzUyOCw3IEBAIHZpZXcgPHJlcGxhY2VhYmxlPnN0cmluZzwvcmVwbGFjZWFibGU+IDxyZXBsYWNlYWJsZT5vcHRpb25hbF9jbGFzczwvcmVwbGFjZWFibGU+Ci0gCX07Ci0gCi0gCW1heC1qb3VybmFsLXNpemUgPHJlcGxhY2VhYmxlPnNpemVfbm9fZGVmYXVsdDwvcmVwbGFjZWFibGU+OwotKwltYXgtcmVjb3JkcyA8cmVwbGFjZWFibGU+aW50ZWdlcjwvcmVwbGFjZWFibGU+OwotIAltYXgtdHJhbnNmZXItdGltZS1pbiA8cmVwbGFjZWFibGU+aW50ZWdlcjwvcmVwbGFjZWFibGU+OwotIAltYXgtdHJhbnNmZXItdGltZS1vdXQgPHJlcGxhY2VhYmxlPmludGVnZXI8L3JlcGxhY2VhYmxlPjsKLSAJbWF4LXRyYW5zZmVyLWlkbGUtaW4gPHJlcGxhY2VhYmxlPmludGVnZXI8L3JlcGxhY2VhYmxlPjsKLUBAIC02MjQsNiArNjI2LDcgQEAgem9uZSA8cmVwbGFjZWFibGU+c3RyaW5nPC9yZXBsYWNlYWJsZT4gPHJlcGxhY2VhYmxlPm9wdGlvbmFsX2NsYXNzPC9yZXBsYWNlYWJsZT4KLSAJfTsKLSAKLSAJbWF4LWpvdXJuYWwtc2l6ZSA8cmVwbGFjZWFibGU+c2l6ZV9ub19kZWZhdWx0PC9yZXBsYWNlYWJsZT47Ci0rCW1heC1yZWNvcmRzIDxyZXBsYWNlYWJsZT5pbnRlZ2VyPC9yZXBsYWNlYWJsZT47Ci0gCW1heC10cmFuc2Zlci10aW1lLWluIDxyZXBsYWNlYWJsZT5pbnRlZ2VyPC9yZXBsYWNlYWJsZT47Ci0gCW1heC10cmFuc2Zlci10aW1lLW91dCA8cmVwbGFjZWFibGU+aW50ZWdlcjwvcmVwbGFjZWFibGU+OwotIAltYXgtdHJhbnNmZXItaWRsZS1pbiA8cmVwbGFjZWFibGU+aW50ZWdlcjwvcmVwbGFjZWFibGU+OwotZGlmZiAtLWdpdCBhL2Jpbi9uYW1lZC91cGRhdGUuYyBiL2Jpbi9uYW1lZC91cGRhdGUuYwotaW5kZXggODNiMWEwNS4uY2MyYTYxMSAxMDA2NDQKLS0tLSBhL2Jpbi9uYW1lZC91cGRhdGUuYwotKysrIGIvYmluL25hbWVkL3VwZGF0ZS5jCi1AQCAtMjQ1NSw2ICsyNDU1LDggQEAgdXBkYXRlX2FjdGlvbihpc2NfdGFza190ICp0YXNrLCBpc2NfZXZlbnRfdCAqZXZlbnQpIHsKLSAJaXNjX2Jvb2xlYW5fdCBoYWRfZG5za2V5OwotIAlkbnNfcmRhdGF0eXBlX3QgcHJpdmF0ZXR5cGUgPSBkbnNfem9uZV9nZXRwcml2YXRldHlwZSh6b25lKTsKLSAJZG5zX3R0bF90IG1heHR0bCA9IDA7Ci0rCWlzY191aW50MzJfdCBtYXhyZWNvcmRzOwotKwlpc2NfdWludDY0X3QgcmVjb3JkczsKLSAKLSAJSU5TSVNUKGV2ZW50LT5ldl90eXBlID09IEROU19FVkVOVF9VUERBVEUpOwotIAotQEAgLTMxMzgsNiArMzE0MCwyMCBAQCB1cGRhdGVfYWN0aW9uKGlzY190YXNrX3QgKnRhc2ssIGlzY19ldmVudF90ICpldmVudCkgewotIAkJCX0KLSAJCX0KLSAKLSsJCW1heHJlY29yZHMgPSBkbnNfem9uZV9nZXRtYXhyZWNvcmRzKHpvbmUpOwotKwkJaWYgKG1heHJlY29yZHMgIT0gMFUpIHsKLSsJCQlyZXN1bHQgPSBkbnNfZGJfZ2V0c2l6ZShkYiwgdmVyLCAmcmVjb3JkcywgTlVMTCk7Ci0rCQkJaWYgKHJlc3VsdCA9PSBJU0NfUl9TVUNDRVNTICYmIHJlY29yZHMgPiBtYXhyZWNvcmRzKSB7Ci0rCQkJCXVwZGF0ZV9sb2coY2xpZW50LCB6b25lLCBJU0NfTE9HX0VSUk9SLAotKwkJCQkJICAgInJlY29yZHMgaW4gem9uZSAoJSIKLSsJCQkJCSAgIElTQ19QUklOVF9RVUFERk9STUFUCi0rCQkJCQkgICAidSkgZXhjZWVkcyBtYXgtcmVjb3JkcyAoJXUpIiwKLSsJCQkJCSAgIHJlY29yZHMsIG1heHJlY29yZHMpOwotKwkJCQlyZXN1bHQgPSBETlNfUl9UT09NQU5ZUkVDT1JEUzsKLSsJCQkJZ290byBmYWlsdXJlOwotKwkJCX0KLSsJCX0KLSsKLSAJCWpvdXJuYWxmaWxlID0gZG5zX3pvbmVfZ2V0am91cm5hbCh6b25lKTsKLSAJCWlmIChqb3VybmFsZmlsZSAhPSBOVUxMKSB7Ci0gCQkJdXBkYXRlX2xvZyhjbGllbnQsIHpvbmUsIExPR0xFVkVMX0RFQlVHLAotZGlmZiAtLWdpdCBhL2Jpbi9uYW1lZC96b25lY29uZi5jIGIvYmluL25hbWVkL3pvbmVjb25mLmMKLWluZGV4IDRlZTNkZmUuLjE0ZGQ4Y2UgMTAwNjQ0Ci0tLS0gYS9iaW4vbmFtZWQvem9uZWNvbmYuYwotKysrIGIvYmluL25hbWVkL3pvbmVjb25mLmMKLUBAIC05NzgsNiArOTc4LDEzIEBAIG5zX3pvbmVfY29uZmlndXJlKGNvbnN0IGNmZ19vYmpfdCAqY29uZmlnLCBjb25zdCBjZmdfb2JqX3QgKnZjb25maWcsCi0gCQkJZG5zX3pvbmVfc2V0bWF4dHRsKHJhdywgbWF4dHRsKTsKLSAJfQotIAotKwlvYmogPSBOVUxMOwotKwlyZXN1bHQgPSBuc19jb25maWdfZ2V0KG1hcHMsICJtYXgtcmVjb3JkcyIsICZvYmopOwotKwlJTlNJU1QocmVzdWx0ID09IElTQ19SX1NVQ0NFU1MgJiYgb2JqICE9IE5VTEwpOwotKwlkbnNfem9uZV9zZXRtYXhyZWNvcmRzKG1heWJlcmF3LCBjZmdfb2JqX2FzdWludDMyKG9iaikpOwotKwlpZiAoem9uZSAhPSBtYXliZXJhdykKLSsJCWRuc196b25lX3NldG1heHJlY29yZHMoem9uZSwgMCk7Ci0rCi0gCWlmIChyYXcgIT0gTlVMTCAmJiBmaWxlbmFtZSAhPSBOVUxMKSB7Ci0gI2RlZmluZSBTSUdORUQgIi5zaWduZWQiCi0gCQlzaXplX3Qgc2lnbmVkbGVuID0gc3RybGVuKGZpbGVuYW1lKSArIHNpemVvZihTSUdORUQpOwotZGlmZiAtLWdpdCBhL2Jpbi90ZXN0cy9zeXN0ZW0vbnN1cGRhdGUvY2xlYW4uc2ggYi9iaW4vdGVzdHMvc3lzdGVtL25zdXBkYXRlL2NsZWFuLnNoCi1pbmRleCBhYWVmYzAyLi5lYTI1NTQ1IDEwMDY0NAotLS0tIGEvYmluL3Rlc3RzL3N5c3RlbS9uc3VwZGF0ZS9jbGVhbi5zaAotKysrIGIvYmluL3Rlc3RzL3N5c3RlbS9uc3VwZGF0ZS9jbGVhbi5zaAotQEAgLTMyLDYgKzMyLDcgQEAgcm0gLWYgbnMzL2V4YW1wbGUuZGIuam5sIG5zMy9leGFtcGxlLmRiCi0gcm0gLWYgbnMzL25zZWMzcGFyYW0udGVzdC5kYi5zaWduZWQuam5sIG5zMy9uc2VjM3BhcmFtLnRlc3QuZGIgbnMzL25zZWMzcGFyYW0udGVzdC5kYi5zaWduZWQgbnMzL2Rzc2V0LW5zZWMzcGFyYW0udGVzdC4KLSBybSAtZiBuczMvZG5za2V5LnRlc3QuZGIuc2lnbmVkLmpubCBuczMvZG5za2V5LnRlc3QuZGIgbnMzL2Ruc2tleS50ZXN0LmRiLnNpZ25lZCBuczMvZHNzZXQtZG5za2V5LnRlc3QuCi0gcm0gLWYgbnMzL0sqCi0rcm0gLWYgbnMzL3Rvby1iaWcudGVzdC5kYgotIHJtIC1mIGRpZy5vdXQuKgotIHJtIC1mIGpwLm91dC5uczMuKgotIHJtIC1mIEt4eHguKgotZGlmZiAtLWdpdCBhL2Jpbi90ZXN0cy9zeXN0ZW0vbnN1cGRhdGUvbnMzL25hbWVkLmNvbmYgYi9iaW4vdGVzdHMvc3lzdGVtL25zdXBkYXRlL25zMy9uYW1lZC5jb25mCi1pbmRleCAyYWJkNTIyLi42OGZmMjdhIDEwMDY0NAotLS0tIGEvYmluL3Rlc3RzL3N5c3RlbS9uc3VwZGF0ZS9uczMvbmFtZWQuY29uZgotKysrIGIvYmluL3Rlc3RzL3N5c3RlbS9uc3VwZGF0ZS9uczMvbmFtZWQuY29uZgotQEAgLTYwLDMgKzYwLDEwIEBAIHpvbmUgImRuc2tleS50ZXN0IiB7Ci0gCWFsbG93LXVwZGF0ZSB7IGFueTsgfTsKLSAJZmlsZSAiZG5za2V5LnRlc3QuZGIuc2lnbmVkIjsKLSB9OwotKwotK3pvbmUgInRvby1iaWcudGVzdCIgewotKwl0eXBlIG1hc3RlcjsKLSsJYWxsb3ctdXBkYXRlIHsgYW55OyB9OwotKwltYXgtcmVjb3JkcyAzOwotKwlmaWxlICJ0b28tYmlnLnRlc3QuZGIiOwotK307Ci1kaWZmIC0tZ2l0IGEvYmluL3Rlc3RzL3N5c3RlbS9uc3VwZGF0ZS9uczMvdG9vLWJpZy50ZXN0LmRiLmluIGIvYmluL3Rlc3RzL3N5c3RlbS9uc3VwZGF0ZS9uczMvdG9vLWJpZy50ZXN0LmRiLmluCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uN2ZmMWU0YQotLS0tIC9kZXYvbnVsbAotKysrIGIvYmluL3Rlc3RzL3N5c3RlbS9uc3VwZGF0ZS9uczMvdG9vLWJpZy50ZXN0LmRiLmluCi1AQCAtMCwwICsxLDEwIEBACi0rOyBDb3B5cmlnaHQgKEMpIDIwMTYgIEludGVybmV0IFN5c3RlbXMgQ29uc29ydGl1bSwgSW5jLiAoIklTQyIpCi0rOwotKzsgVGhpcyBTb3VyY2UgQ29kZSBGb3JtIGlzIHN1YmplY3QgdG8gdGhlIHRlcm1zIG9mIHRoZSBNb3ppbGxhIFB1YmxpYwotKzsgTGljZW5zZSwgdi4gMi4wLiBJZiBhIGNvcHkgb2YgdGhlIE1QTCB3YXMgbm90IGRpc3RyaWJ1dGVkIHdpdGggdGhpcwotKzsgZmlsZSwgWW91IGNhbiBvYnRhaW4gb25lIGF0IGh0dHA6Ly9tb3ppbGxhLm9yZy9NUEwvMi4wLy4KLSsKLSskVFRMIDEwCi0rdG9vLWJpZy50ZXN0LiBJTiBTT0EgdG9vLWJpZy50ZXN0LiBob3N0bWFzdGVyLnRvby1iaWcudGVzdC4gMSAzNjAwIDkwMCAyNDE5MjAwIDM2MDAKLSt0b28tYmlnLnRlc3QuIElOIE5TIHRvby1iaWcudGVzdC4KLSt0b28tYmlnLnRlc3QuIElOIEEgMTAuNTMuMC4zCi1kaWZmIC0tZ2l0IGEvYmluL3Rlc3RzL3N5c3RlbS9uc3VwZGF0ZS9zZXR1cC5zaCBiL2Jpbi90ZXN0cy9zeXN0ZW0vbnN1cGRhdGUvc2V0dXAuc2gKLWluZGV4IDgyODI1NWUuLjQzYzQwOTQgMTAwNjQ0Ci0tLS0gYS9iaW4vdGVzdHMvc3lzdGVtL25zdXBkYXRlL3NldHVwLnNoCi0rKysgYi9iaW4vdGVzdHMvc3lzdGVtL25zdXBkYXRlL3NldHVwLnNoCi1AQCAtMjcsMTIgKzI3LDE0IEBAIHRlc3QgLXIgJFJBTkRGSUxFIHx8ICRHRU5SQU5ET00gNDAwICRSQU5ERklMRQotIHJtIC1mIG5zMS8qLmpubCBuczEvZXhhbXBsZS5kYiBuczIvKi5qbmwgbnMyL2V4YW1wbGUuYmsKLSBybSAtZiBuczIvdXBkYXRlLmJrIG5zMi91cGRhdGUuYWx0LmJrCi0gcm0gLWYgbnMzL2V4YW1wbGUuZGIuam5sCi0rcm0gLWYgbnMzL3Rvby1iaWcudGVzdC5kYi5qbmwKLSAKLSBjcCAtZiBuczEvZXhhbXBsZTEuZGIgbnMxL2V4YW1wbGUuZGIKLSBzZWQgJ3MvZXhhbXBsZS5uaWwvb3RoZXIubmlsL2cnIG5zMS9leGFtcGxlMS5kYiA+IG5zMS9vdGhlci5kYgotIHNlZCAncy9leGFtcGxlLm5pbC91bml4dGltZS5uaWwvZycgbnMxL2V4YW1wbGUxLmRiID4gbnMxL3VuaXh0aW1lLmRiCi0gc2VkICdzL2V4YW1wbGUubmlsL2tleXRlc3RzLm5pbC9nJyBuczEvZXhhbXBsZTEuZGIgPiBuczEva2V5dGVzdHMuZGIKLSBjcCAtZiBuczMvZXhhbXBsZS5kYi5pbiBuczMvZXhhbXBsZS5kYgotK2NwIC1mIG5zMy90b28tYmlnLnRlc3QuZGIuaW4gbnMzL3Rvby1iaWcudGVzdC5kYgotIAotICMgdXBkYXRlX3Rlc3QucGwgaGFzIGl0cyBvd24gem9uZSBmaWxlIGJlY2F1c2UgaXQKLSAjIHJlcXVpcmVzIGEgc3BlY2lmaWMgTlMgcmVjb3JkIHNldC4KLWRpZmYgLS1naXQgYS9iaW4vdGVzdHMvc3lzdGVtL25zdXBkYXRlL3Rlc3RzLnNoIGIvYmluL3Rlc3RzL3N5c3RlbS9uc3VwZGF0ZS90ZXN0cy5zaAotaW5kZXggNzhkNTAxZS4uMGE2YmJkMyAxMDA3NTUKLS0tLSBhL2Jpbi90ZXN0cy9zeXN0ZW0vbnN1cGRhdGUvdGVzdHMuc2gKLSsrKyBiL2Jpbi90ZXN0cy9zeXN0ZW0vbnN1cGRhdGUvdGVzdHMuc2gKLUBAIC01ODEsNSArNTgxLDIwIEBAIGlmIFsgJHJldCAtbmUgMCBdOyB0aGVuCi0gICAgIHN0YXR1cz0xCi0gZmkKLSAKLStuPWBleHByICRuICsgMWAKLStlY2hvICJJOmNoZWNrIHRoYXQgYWRkaW5nIHRvbyBtYW55IHJlY29yZHMgaXMgYmxvY2tlZCAoJG4pIgotK3JldD0wCi0rJE5TVVBEQVRFIC12IDw8IEVPRiA+IG5zdXBkYXRlLm91dC0kbiAyPiYxICYmIHJldD0xCi0rc2VydmVyIDEwLjUzLjAuMyA1MzAwCi0rem9uZSB0b28tYmlnLnRlc3QuCi0rdXBkYXRlIGFkZCByMS50b28tYmlnLnRlc3QgMzYwMCBJTiBUWFQgcjEudG9vLWJpZy50ZXN0Ci0rc2VuZAotK0VPRgotK2dyZXAgInVwZGF0ZSBmYWlsZWQ6IFNFUlZGQUlMIiBuc3VwZGF0ZS5vdXQtJG4gPiAvZGV2L251bGwgfHwgcmV0PTEKLStESUcgK3RjcCBAMTAuNTMuMC4zIC1wIDUzMDAgcjEudG9vLWJpZy50ZXN0IFRYVCA+IGRpZy5vdXQubnMzLnRlc3QkbgotK2dyZXAgInN0YXR1czogTlhET01BSU4iIGRpZy5vdXQubnMzLnRlc3QkbiA+IC9kZXYvbnVsbCB8fCByZXQ9MQotK2dyZXAgInJlY29yZHMgaW4gem9uZSAoNCkgZXhjZWVkcyBtYXgtcmVjb3JkcyAoMykiIG5zMy9uYW1lZC5ydW4gPiAvZGV2L251bGwgfHwgcmV0PTEKLStbICRyZXQgPSAwIF0gfHwgeyBlY2hvIEk6ZmFpbGVkOyBzdGF0dXM9MTsgfQotKwotIGVjaG8gIkk6ZXhpdCBzdGF0dXM6ICRzdGF0dXMiCi0gZXhpdCAkc3RhdHVzCi1kaWZmIC0tZ2l0IGEvYmluL3Rlc3RzL3N5c3RlbS94ZmVyL2NsZWFuLnNoIGIvYmluL3Rlc3RzL3N5c3RlbS94ZmVyL2NsZWFuLnNoCi1pbmRleCA0OGFhMTU5Li5kYTYyYTMzIDEwMDY0NAotLS0tIGEvYmluL3Rlc3RzL3N5c3RlbS94ZmVyL2NsZWFuLnNoCi0rKysgYi9iaW4vdGVzdHMvc3lzdGVtL3hmZXIvY2xlYW4uc2gKLUBAIC0zNiwzICszNiw0IEBAIHJtIC1mIG5zNy8qLmRiIG5zNy8qLmJrIG5zNy8qLmpubAotIHJtIC1mICovbmFtZWQubWVtc3RhdHMKLSBybSAtZiAqL25hbWVkLnJ1bgotIHJtIC1mICovYW5zLnJ1bgotK3JtIC1mIG5zMS9peGZyLXRvby1iaWcuZGIgbnMxL2l4ZnItdG9vLWJpZy5kYi5qbmwKLWRpZmYgLS1naXQgYS9iaW4vdGVzdHMvc3lzdGVtL3hmZXIvbnMxL2F4ZnItdG9vLWJpZy5kYiBiL2Jpbi90ZXN0cy9zeXN0ZW0veGZlci9uczEvYXhmci10b28tYmlnLmRiCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZDQzNzYwZAotLS0tIC9kZXYvbnVsbAotKysrIGIvYmluL3Rlc3RzL3N5c3RlbS94ZmVyL25zMS9heGZyLXRvby1iaWcuZGIKLUBAIC0wLDAgKzEsMTAgQEAKLSs7IENvcHlyaWdodCAoQykgMjAxNiAgSW50ZXJuZXQgU3lzdGVtcyBDb25zb3J0aXVtLCBJbmMuICgiSVNDIikKLSs7Ci0rOyBUaGlzIFNvdXJjZSBDb2RlIEZvcm0gaXMgc3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhlIE1vemlsbGEgUHVibGljCi0rOyBMaWNlbnNlLCB2LiAyLjAuIElmIGEgY29weSBvZiB0aGUgTVBMIHdhcyBub3QgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzCi0rOyBmaWxlLCBZb3UgY2FuIG9idGFpbiBvbmUgYXQgaHR0cDovL21vemlsbGEub3JnL01QTC8yLjAvLgotKwotKyRUVEwJMzYwMAotK0AJSU4JU09BCS4gLiAwIDAgMCAwIDAKLStACUlOCU5TCS4KLSskR0VORVJBVEUgMS0yOQlob3N0JAlBCTEuMi4zLiQKLWRpZmYgLS1naXQgYS9iaW4vdGVzdHMvc3lzdGVtL3hmZXIvbnMxL2l4ZnItdG9vLWJpZy5kYi5pbiBiL2Jpbi90ZXN0cy9zeXN0ZW0veGZlci9uczEvaXhmci10b28tYmlnLmRiLmluCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMzE4YmI3NwotLS0tIC9kZXYvbnVsbAotKysrIGIvYmluL3Rlc3RzL3N5c3RlbS94ZmVyL25zMS9peGZyLXRvby1iaWcuZGIuaW4KLUBAIC0wLDAgKzEsMTMgQEAKLSs7IENvcHlyaWdodCAoQykgMjAxNiAgSW50ZXJuZXQgU3lzdGVtcyBDb25zb3J0aXVtLCBJbmMuICgiSVNDIikKLSs7Ci0rOyBUaGlzIFNvdXJjZSBDb2RlIEZvcm0gaXMgc3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhlIE1vemlsbGEgUHVibGljCi0rOyBMaWNlbnNlLCB2LiAyLjAuIElmIGEgY29weSBvZiB0aGUgTVBMIHdhcyBub3QgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzCi0rOyBmaWxlLCBZb3UgY2FuIG9idGFpbiBvbmUgYXQgaHR0cDovL21vemlsbGEub3JnL01QTC8yLjAvLgotKwotKyRUVEwJMzYwMAotK0AJSU4JU09BCS4gLiAwIDAgMCAwIDAKLStACUlOCU5TCW5zMQotK0AJSU4JTlMJbnM2Ci0rbnMxCUlOCUEJMTAuNTMuMC4xCi0rbnM2CUlOCUEJMTAuNTMuMC42Ci0rJEdFTkVSQVRFIDEtMjUJaG9zdCQJQQkxLjIuMy4kCi1kaWZmIC0tZ2l0IGEvYmluL3Rlc3RzL3N5c3RlbS94ZmVyL25zMS9uYW1lZC5jb25mIGIvYmluL3Rlc3RzL3N5c3RlbS94ZmVyL25zMS9uYW1lZC5jb25mCi1pbmRleCAwN2RhZDg1Li4xZDI5MjkyIDEwMDY0NAotLS0tIGEvYmluL3Rlc3RzL3N5c3RlbS94ZmVyL25zMS9uYW1lZC5jb25mCi0rKysgYi9iaW4vdGVzdHMvc3lzdGVtL3hmZXIvbnMxL25hbWVkLmNvbmYKLUBAIC00NCwzICs0NCwxNCBAQCB6b25lICJzbGF2ZSIgewotIAl0eXBlIG1hc3RlcjsKLSAJZmlsZSAic2xhdmUuZGIiOwotIH07Ci0rCi0rem9uZSAiYXhmci10b28tYmlnIiB7Ci0rICAgICAgICB0eXBlIG1hc3RlcjsKLSsgICAgICAgIGZpbGUgImF4ZnItdG9vLWJpZy5kYiI7Ci0rfTsKLSsKLSt6b25lICJpeGZyLXRvby1iaWciIHsKLSsgICAgICAgIHR5cGUgbWFzdGVyOwotKwlhbGxvdy11cGRhdGUgeyBhbnk7IH07Ci0rICAgICAgICBmaWxlICJpeGZyLXRvby1iaWcuZGIiOwotK307Ci1kaWZmIC0tZ2l0IGEvYmluL3Rlc3RzL3N5c3RlbS94ZmVyL25zNi9uYW1lZC5jb25mIGIvYmluL3Rlc3RzL3N5c3RlbS94ZmVyL25zNi9uYW1lZC5jb25mCi1pbmRleCBjOTQyMWIxLi5hMTJhOTJjIDEwMDY0NAotLS0tIGEvYmluL3Rlc3RzL3N5c3RlbS94ZmVyL25zNi9uYW1lZC5jb25mCi0rKysgYi9iaW4vdGVzdHMvc3lzdGVtL3hmZXIvbnM2L25hbWVkLmNvbmYKLUBAIC01MiwzICs1MiwxNyBAQCB6b25lICJzbGF2ZSIgewotIAltYXN0ZXJzIHsgMTAuNTMuMC4xOyB9OwotIAlmaWxlICJzbGF2ZS5iayI7Ci0gfTsKLSsKLSt6b25lICJheGZyLXRvby1iaWciIHsKLSsJdHlwZSBzbGF2ZTsKLSsJbWF4LXJlY29yZHMgMzA7Ci0rCW1hc3RlcnMgeyAxMC41My4wLjE7IH07Ci0rCWZpbGUgImF4ZnItdG9vLWJpZy5iayI7Ci0rfTsKLSsKLSt6b25lICJpeGZyLXRvby1iaWciIHsKLSsJdHlwZSBzbGF2ZTsKLSsJbWF4LXJlY29yZHMgMzA7Ci0rCW1hc3RlcnMgeyAxMC41My4wLjE7IH07Ci0rCWZpbGUgIml4ZnItdG9vLWJpZy5iayI7Ci0rfTsKLWRpZmYgLS1naXQgYS9iaW4vdGVzdHMvc3lzdGVtL3hmZXIvc2V0dXAuc2ggYi9iaW4vdGVzdHMvc3lzdGVtL3hmZXIvc2V0dXAuc2gKLWluZGV4IDU2Y2E5MDEuLmM1NWFiZjggMTAwNjQ0Ci0tLS0gYS9iaW4vdGVzdHMvc3lzdGVtL3hmZXIvc2V0dXAuc2gKLSsrKyBiL2Jpbi90ZXN0cy9zeXN0ZW0veGZlci9zZXR1cC5zaAotQEAgLTMzLDMgKzMzLDUgQEAgY3AgLWYgbnM0L25hbWVkLmNvbmYuYmFzZSBuczQvbmFtZWQuY29uZgotIAotIGNwIG5zMi9zbGF2ZS5kYi5pbiBuczIvc2xhdmUuZGIKLSB0b3VjaCAtdCAyMDAxMDEwMTAwMDAgbnMyL3NsYXZlLmRiCi0rCi0rY3AgLWYgbnMxL2l4ZnItdG9vLWJpZy5kYi5pbiBuczEvaXhmci10b28tYmlnLmRiCi1kaWZmIC0tZ2l0IGEvYmluL3Rlc3RzL3N5c3RlbS94ZmVyL3Rlc3RzLnNoIGIvYmluL3Rlc3RzL3N5c3RlbS94ZmVyL3Rlc3RzLnNoCi1pbmRleCA2N2IyYTFhLi5mZTMzZjBhIDEwMDY0NAotLS0tIGEvYmluL3Rlc3RzL3N5c3RlbS94ZmVyL3Rlc3RzLnNoCi0rKysgYi9iaW4vdGVzdHMvc3lzdGVtL3hmZXIvdGVzdHMuc2gKLUBAIC0zNjgsNSArMzY4LDMxIEBAICRESUdDTUQgbmlsLiBUWFQgfCBncmVwICdpbmNvcnJlY3Qga2V5IEFYRlInID4vZGV2L251bGwgJiYgewotICAgICBzdGF0dXM9MQotIH0KLSAKLStuPWBleHByICRuICsgMWAKLStlY2hvICJJOnRlc3QgdGhhdCBhIHpvbmUgd2l0aCB0b28gbWFueSByZWNvcmRzIGlzIHJlamVjdGVkIChBWEZSKSAoJG4pIgotK3RtcD0wCi0rZ3JlcCAiJ2F4ZnItdG9vLWJpZy9JTicuKjogdG9vIG1hbnkgcmVjb3JkcyIgbnM2L25hbWVkLnJ1biA+L2Rldi9udWxsIHx8IHRtcD0xCi0raWYgdGVzdCAkdG1wICE9IDAgOyB0aGVuIGVjaG8gIkk6ZmFpbGVkIjsgZmkKLStzdGF0dXM9YGV4cHIgJHN0YXR1cyArICR0bXBgCi0rCi0rbj1gZXhwciAkbiArIDFgCi0rZWNobyAiSTp0ZXN0IHRoYXQgYSB6b25lIHdpdGggdG9vIG1hbnkgcmVjb3JkcyBpcyByZWplY3RlZCAoSVhGUikgKCRuKSIKLSt0bXA9MAotK2dyZXAgIidpeGZyLXRvby1iaWcuL0lOLio6IHRvbyBtYW55IHJlY29yZHMiIG5zNi9uYW1lZC5ydW4gPi9kZXYvbnVsbCAmJiB0bXA9MQotKyROU1VQREFURSA8PCBFT0YKLSt6b25lIGl4ZnItdG9vLWJpZwotK3NlcnZlciAxMC41My4wLjEgNTMwMAotK3VwZGF0ZSBhZGQgdGhlLTMxc3QtcmVjb3JkLml4ZnItdG9vLWJpZyAwIFRYVCB0aGlzIGlzIGl0Ci0rc2VuZAotK0VPRgotK2ZvciBpIGluIDEgMiAzIDQgNSA2IDcgOAotK2RvCi0rICAgIGdyZXAgIidpeGZyLXRvby1iaWcvSU4nLio6IHRvbyBtYW55IHJlY29yZHMiIG5zNi9uYW1lZC5ydW4gPi9kZXYvbnVsbCAmJiBicmVhawotKyAgICBzbGVlcCAxCi0rZG9uZQotK2dyZXAgIidpeGZyLXRvby1iaWcvSU4nLio6IHRvbyBtYW55IHJlY29yZHMiIG5zNi9uYW1lZC5ydW4gPi9kZXYvbnVsbCB8fCB0bXA9MQotK2lmIHRlc3QgJHRtcCAhPSAwIDsgdGhlbiBlY2hvICJJOmZhaWxlZCI7IGZpCi0rc3RhdHVzPWBleHByICRzdGF0dXMgKyAkdG1wYAotKwotIGVjaG8gIkk6ZXhpdCBzdGF0dXM6ICRzdGF0dXMiCi0gZXhpdCAkc3RhdHVzCi1kaWZmIC0tZ2l0IGEvZG9jL2FybS9CdjlBUk0tYm9vay54bWwgYi9kb2MvYXJtL0J2OUFSTS1ib29rLnhtbAotaW5kZXggODQ4YjU4Mi4uMDM2OTUwNSAxMDA2NDQKLS0tLSBhL2RvYy9hcm0vQnY5QVJNLWJvb2sueG1sCi0rKysgYi9kb2MvYXJtL0J2OUFSTS1ib29rLnhtbAotQEAgLTQ4NTgsNiArNDg1OCw3IEBAIGJhZHJlc3A6MSxhZGJlcnI6MCxmaW5kZmFpbDowLHZhbGZhaWw6MF0KLSAgICAgPG9wdGlvbmFsPiB1c2UtcXVlcnlwb3J0LXBvb2wgPHJlcGxhY2VhYmxlPnllc19vcl9ubzwvcmVwbGFjZWFibGU+OyA8L29wdGlvbmFsPgotICAgICA8b3B0aW9uYWw+IHF1ZXJ5cG9ydC1wb29sLXBvcnRzIDxyZXBsYWNlYWJsZT5udW1iZXI8L3JlcGxhY2VhYmxlPjsgPC9vcHRpb25hbD4KLSAgICAgPG9wdGlvbmFsPiBxdWVyeXBvcnQtcG9vbC11cGRhdGVpbnRlcnZhbCA8cmVwbGFjZWFibGU+bnVtYmVyPC9yZXBsYWNlYWJsZT47IDwvb3B0aW9uYWw+Ci0rICAgIDxvcHRpb25hbD4gbWF4LXJlY29yZHMgPHJlcGxhY2VhYmxlPm51bWJlcjwvcmVwbGFjZWFibGU+OyA8L29wdGlvbmFsPgotICAgICA8b3B0aW9uYWw+IG1heC10cmFuc2Zlci10aW1lLWluIDxyZXBsYWNlYWJsZT5udW1iZXI8L3JlcGxhY2VhYmxlPjsgPC9vcHRpb25hbD4KLSAgICAgPG9wdGlvbmFsPiBtYXgtdHJhbnNmZXItdGltZS1vdXQgPHJlcGxhY2VhYmxlPm51bWJlcjwvcmVwbGFjZWFibGU+OyA8L29wdGlvbmFsPgotICAgICA8b3B0aW9uYWw+IG1heC10cmFuc2Zlci1pZGxlLWluIDxyZXBsYWNlYWJsZT5udW1iZXI8L3JlcGxhY2VhYmxlPjsgPC9vcHRpb25hbD4KLUBAIC04MTY0LDYgKzgxNjUsMTYgQEAgYXZvaWQtdjYtdWRwLXBvcnRzIHsgNDAwMDA7IHJhbmdlIDUwMDAwIDYwMDAwOyB9OwotIAkgICAgPC92YXJsaXN0ZW50cnk+Ci0gCi0gCSAgICA8dmFybGlzdGVudHJ5PgotKwkgICAgICA8dGVybT48Y29tbWFuZD5tYXgtcmVjb3JkczwvY29tbWFuZD48L3Rlcm0+Ci0rCSAgICAgIDxsaXN0aXRlbT4KLSsJCTxwYXJhPgotKwkJICBUaGUgbWF4aW11bSBudW1iZXIgb2YgcmVjb3JkcyBwZXJtaXR0ZWQgaW4gYSB6b25lLgotKwkJICBUaGUgZGVmYXVsdCBpcyB6ZXJvIHdoaWNoIG1lYW5zIHVubGltaXRlZC4KLSsJIAk8L3BhcmE+Ci0rCSAgICAgIDwvbGlzdGl0ZW0+Ci0rCSAgICA8L3Zhcmxpc3RlbnRyeT4KLSsKLSsJICAgIDx2YXJsaXN0ZW50cnk+Ci0gCSAgICAgIDx0ZXJtPjxjb21tYW5kPmhvc3Qtc3RhdGlzdGljcy1tYXg8L2NvbW1hbmQ+PC90ZXJtPgotIAkgICAgICA8bGlzdGl0ZW0+Ci0gCQk8cGFyYT4KLUBAIC0xMjA1Niw2ICsxMjA2NywxNiBAQCB6b25lIDxyZXBsYWNlYWJsZT56b25lX25hbWU8L3JlcGxhY2VhYmxlPiA8b3B0aW9uYWw+PHJlcGxhY2VhYmxlPmNsYXNzPC9yZXBsYWNlYQotIAkgICAgICA8L3Zhcmxpc3RlbnRyeT4KLSAKLSAJICAgICAgPHZhcmxpc3RlbnRyeT4KLSsJCTx0ZXJtPjxjb21tYW5kPm1heC1yZWNvcmRzPC9jb21tYW5kPjwvdGVybT4KLSsJCTxsaXN0aXRlbT4KLSsJCSAgPHBhcmE+Ci0rCQkgICAgU2VlIHRoZSBkZXNjcmlwdGlvbiBvZgotKwkJICAgIDxjb21tYW5kPm1heC1yZWNvcmRzPC9jb21tYW5kPiBpbiA8eHJlZiBsaW5rZW5kPSJzZXJ2ZXJfcmVzb3VyY2VfbGltaXRzIi8+LgotKwkJICA8L3BhcmE+Ci0rCQk8L2xpc3RpdGVtPgotKwkgICAgICA8L3Zhcmxpc3RlbnRyeT4KLSsKLSsJICAgICAgPHZhcmxpc3RlbnRyeT4KLSAJCTx0ZXJtPjxjb21tYW5kPm1heC10cmFuc2Zlci10aW1lLWluPC9jb21tYW5kPjwvdGVybT4KLSAJCTxsaXN0aXRlbT4KLSAJCSAgPHBhcmE+Ci1kaWZmIC0tZ2l0IGEvZG9jL2FybS9ub3Rlcy54bWwgYi9kb2MvYXJtL25vdGVzLnhtbAotaW5kZXggMDk1ZWI1Yi4uMzY0OTVlNyAxMDA2NDQKLS0tLSBhL2RvYy9hcm0vbm90ZXMueG1sCi0rKysgYi9kb2MvYXJtL25vdGVzLnhtbAotQEAgLTUyLDYgKzUyLDE1IEBACi0gICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgPGxpc3RpdGVtPgotICAgICAgICA8cGFyYT4KLSsJICBBZGRlZCB0aGUgYWJpbGl0eSB0byBzcGVjaWZ5IHRoZSBtYXhpbXVtIG51bWJlciBvZiByZWNvcmRzCi0rCSAgcGVybWl0dGVkIGluIGEgem9uZSAobWF4LXJlY29yZHMgIzspLiAgVGhpcyBwcm92aWRlcyBhIG1lY2hhbmlzbQotKwkgIHRvIGJsb2NrIG92ZXJseSBsYXJnZSB6b25lIHRyYW5zZmVycywgd2hpY2ggaXMgYSBwb3RlbnRpYWwgcmlzawotKwkgIHdpdGggc2xhdmUgem9uZXMgZnJvbSBvdGhlciBwYXJ0aWVzLCBhcyBkZXNjcmliZWQgaW4gQ1ZFLTIwMTYtNjE3MC4KLSsJICBbUlQgIzQyMTQzXQotKwk8L3BhcmE+Ci0rICAgICAgPC9saXN0aXRlbT4KLSsgICAgICA8bGlzdGl0ZW0+Ci0rCTxwYXJhPgotICAgICAgICAgIER1cGxpY2F0ZSBFRE5TIENPT0tJRSBvcHRpb25zIGluIGEgcmVzcG9uc2UgY291bGQgdHJpZ2dlcgotICAgICAgICAgIGFuIGFzc2VydGlvbiBmYWlsdXJlLiBUaGlzIGZsYXcgaXMgZGlzY2xvc2VkIGluIENWRS0yMDE2LTIwODguCi0gICAgICAgICAgW1JUICM0MTgwOV0KLWRpZmYgLS1naXQgYS9saWIvYmluZDkvY2hlY2suYyBiL2xpYi9iaW5kOS9jaGVjay5jCi1pbmRleCBiOGMwNWRkLi5lZGI3NTM0IDEwMDY0NAotLS0tIGEvbGliL2JpbmQ5L2NoZWNrLmMKLSsrKyBiL2xpYi9iaW5kOS9jaGVjay5jCi1AQCAtMTUxMCw2ICsxNTEwLDggQEAgY2hlY2tfem9uZWNvbmYoY29uc3QgY2ZnX29ial90ICp6Y29uZmlnLCBjb25zdCBjZmdfb2JqX3QgKnZvcHRpb25zLAotIAkgIFJFRElSRUNUWk9ORSB9LAotIAl7ICJtYXN0ZXJzIiwgU0xBVkVaT05FIHwgU1RVQlpPTkUgfCBSRURJUkVDVFpPTkUgfSwKLSAJeyAibWF4LWl4ZnItbG9nLXNpemUiLCBNQVNURVJaT05FIHwgU0xBVkVaT05FIHwgU1RSRURJUkVDVFpPTkUgfSwKLSsJeyAibWF4LXJlY29yZHMiLCBNQVNURVJaT05FIHwgU0xBVkVaT05FIHwgU1RVQlpPTkUgfCBTVFJFRElSRUNUWk9ORSB8Ci0rICAgICAgICAgIFNUQVRJQ1NUVUJaT05FIHwgUkVESVJFQ1RaT05FIH0sCi0gCXsgIm1heC1yZWZyZXNoLXRpbWUiLCBTTEFWRVpPTkUgfCBTVFVCWk9ORSB8IFNUUkVESVJFQ1RaT05FIH0sCi0gCXsgIm1heC1yZXRyeS10aW1lIiwgU0xBVkVaT05FIHwgU1RVQlpPTkUgfCBTVFJFRElSRUNUWk9ORSB9LAotIAl7ICJtYXgtdHJhbnNmZXItaWRsZS1pbiIsIFNMQVZFWk9ORSB8IFNUVUJaT05FIHwgU1RSRURJUkVDVFpPTkUgfSwKLWRpZmYgLS1naXQgYS9saWIvZG5zL2RiLmMgYi9saWIvZG5zL2RiLmMKLWluZGV4IDdlNGYzNTcuLmNlZDk0YTUgMTAwNjQ0Ci0tLS0gYS9saWIvZG5zL2RiLmMKLSsrKyBiL2xpYi9kbnMvZGIuYwotQEAgLTk5OSw2ICs5OTksMTkgQEAgZG5zX2RiX2dldG5zZWMzcGFyYW1ldGVycyhkbnNfZGJfdCAqZGIsIGRuc19kYnZlcnNpb25fdCAqdmVyc2lvbiwKLSB9Ci0gCi0gaXNjX3Jlc3VsdF90Ci0rZG5zX2RiX2dldHNpemUoZG5zX2RiX3QgKmRiLCBkbnNfZGJ2ZXJzaW9uX3QgKnZlcnNpb24sIGlzY191aW50NjRfdCAqcmVjb3JkcywKLSsJICAgICAgIGlzY191aW50NjRfdCAqYnl0ZXMpCi0rewotKwlSRVFVSVJFKEROU19EQl9WQUxJRChkYikpOwotKwlSRVFVSVJFKGRuc19kYl9pc3pvbmUoZGIpID09IElTQ19UUlVFKTsKLSsKLSsJaWYgKGRiLT5tZXRob2RzLT5nZXRzaXplICE9IE5VTEwpCi0rCQlyZXR1cm4gKChkYi0+bWV0aG9kcy0+Z2V0c2l6ZSkoZGIsIHZlcnNpb24sIHJlY29yZHMsIGJ5dGVzKSk7Ci0rCi0rCXJldHVybiAoSVNDX1JfTk9URk9VTkQpOwotK30KLSsKLStpc2NfcmVzdWx0X3QKLSBkbnNfZGJfc2V0c2lnbmluZ3RpbWUoZG5zX2RiX3QgKmRiLCBkbnNfcmRhdGFzZXRfdCAqcmRhdGFzZXQsCi0gCQkgICAgICBpc2Nfc3RkdGltZV90IHJlc2lnbikKLSB7Ci1kaWZmIC0tZ2l0IGEvbGliL2Rucy9lY2RiLmMgYi9saWIvZG5zL2VjZGIuYwotaW5kZXggNTUzYTMzOS4uYjVkMDRkMiAxMDA2NDQKLS0tLSBhL2xpYi9kbnMvZWNkYi5jCi0rKysgYi9saWIvZG5zL2VjZGIuYwotQEAgLTU4Nyw3ICs1ODcsOCBAQCBzdGF0aWMgZG5zX2RibWV0aG9kc190IGVjZGJfbWV0aG9kcyA9IHsKLSAJTlVMTCwJCQkvKiBmaW5kbm9kZWV4dCAqLwotIAlOVUxMLAkJCS8qIGZpbmRleHQgKi8KLSAJTlVMTCwJCQkvKiBzZXRjYWNoZXN0YXRzICovCi0tCU5VTEwJCQkvKiBoYXNoc2l6ZSAqLwotKwlOVUxMLAkJCS8qIGhhc2hzaXplICovCi0rCU5VTEwJCQkvKiBnZXRzaXplICovCi0gfTsKLSAKLSBzdGF0aWMgaXNjX3Jlc3VsdF90Ci1kaWZmIC0tZ2l0IGEvbGliL2Rucy9pbmNsdWRlL2Rucy9kYi5oIGIvbGliL2Rucy9pbmNsdWRlL2Rucy9kYi5oCi1pbmRleCBhNGE0NDgyLi5hZmY0MmQ2IDEwMDY0NAotLS0tIGEvbGliL2Rucy9pbmNsdWRlL2Rucy9kYi5oCi0rKysgYi9saWIvZG5zL2luY2x1ZGUvZG5zL2RiLmgKLUBAIC0xOTUsNiArMTk1LDggQEAgdHlwZWRlZiBzdHJ1Y3QgZG5zX2RibWV0aG9kcyB7Ci0gCQkJCSAgIGRuc19yZGF0YXNldF90ICpzaWdyZGF0YXNldCk7Ci0gCWlzY19yZXN1bHRfdAkoKnNldGNhY2hlc3RhdHMpKGRuc19kYl90ICpkYiwgaXNjX3N0YXRzX3QgKnN0YXRzKTsKLSAJdW5zaWduZWQgaW50CSgqaGFzaHNpemUpKGRuc19kYl90ICpkYik7Ci0rCWlzY19yZXN1bHRfdAkoKmdldHNpemUpKGRuc19kYl90ICpkYiwgZG5zX2RidmVyc2lvbl90ICp2ZXJzaW9uLAotKwkJCQkgICBpc2NfdWludDY0X3QgKnJlY29yZHMsIGlzY191aW50NjRfdCAqYnl0ZXMpOwotIH0gZG5zX2RibWV0aG9kc190OwotIAotIHR5cGVkZWYgaXNjX3Jlc3VsdF90Ci1AQCAtMTQ4NSw2ICsxNDg3LDI0IEBAIGRuc19kYl9nZXRuc2VjM3BhcmFtZXRlcnMoZG5zX2RiX3QgKmRiLCBkbnNfZGJ2ZXJzaW9uX3QgKnZlcnNpb24sCi0gICovCi0gCi0gaXNjX3Jlc3VsdF90Ci0rZG5zX2RiX2dldHNpemUoZG5zX2RiX3QgKmRiLCBkbnNfZGJ2ZXJzaW9uX3QgKnZlcnNpb24sIGlzY191aW50NjRfdCAqcmVjb3JkcywKLSsgICAgICAgICAgICAgICBpc2NfdWludDY0X3QgKmJ5dGVzKTsKLSsvKiU8Ci0rICogR2V0IHRoZSBudW1iZXIgb2YgcmVjb3JkcyBpbiB0aGUgZ2l2ZW4gdmVyc2lvbiBvZiB0aGUgZGF0YWJhc2UgYXMgd2VsbAotKyAqIGFzIHRoZSBudW1iZXIgYnl0ZXMgdXNlZCB0byBzdG9yZSB0aG9zZSByZWNvcmRzLgotKyAqCi0rICogUmVxdWlyZXM6Ci0rICogXGxpCSdkYicgaXMgYSB2YWxpZCB6b25lIGRhdGFiYXNlLgotKyAqIFxsaQkndmVyc2lvbicgaXMgTlVMTCBvciBhIHZhbGlkIHZlcnNpb24uCi0rICogXGxpCSdyZWNvcmRzJyBpcyBOVUxMIG9yIGEgcG9pbnRlciB0byByZXR1cm4gdGhlIHJlY29yZCBjb3VudCBpbi4KLSsgKiBcbGkJJ2J5dGVzJyBpcyBOVUxMIG9yIGEgcG9pbnRlciB0byByZXR1cm4gdGhlIGJ5dGUgY291bnQgaW4uCi0rICoKLSsgKiBSZXR1cm5zOgotKyAqIFxsaQkjSVNDX1JfU1VDQ0VTUwotKyAqIFxsaQkjSVNDX1JfTk9USU1QTEVNRU5URUQKLSsgKi8KLSsKLStpc2NfcmVzdWx0X3QKLSBkbnNfZGJfZmluZG5zZWMzbm9kZShkbnNfZGJfdCAqZGIsIGRuc19uYW1lX3QgKm5hbWUsCi0gCQkgICAgIGlzY19ib29sZWFuX3QgY3JlYXRlLCBkbnNfZGJub2RlX3QgKipub2RlcCk7Ci0gLyolPAotZGlmZiAtLWdpdCBhL2xpYi9kbnMvaW5jbHVkZS9kbnMvcmRhdGFzbGFiLmggYi9saWIvZG5zL2luY2x1ZGUvZG5zL3JkYXRhc2xhYi5oCi1pbmRleCAzYWM0NGI4Li4yZTFlNzU5IDEwMDY0NAotLS0tIGEvbGliL2Rucy9pbmNsdWRlL2Rucy9yZGF0YXNsYWIuaAotKysrIGIvbGliL2Rucy9pbmNsdWRlL2Rucy9yZGF0YXNsYWIuaAotQEAgLTEwNCw2ICsxMDQsNyBAQCBkbnNfcmRhdGFzbGFiX3RvcmRhdGFzZXQodW5zaWduZWQgY2hhciAqc2xhYiwgdW5zaWduZWQgaW50IHJlc2VydmVsZW4sCi0gICogRW5zdXJlczoKLSAgKlxsaQkncmRhdGFzZXQnIGlzIGFzc29jaWF0ZWQgYW5kIHBvaW50cyB0byBhIHZhbGlkIHJkYXRhZXN0LgotICAqLwotKwotIHVuc2lnbmVkIGludAotIGRuc19yZGF0YXNsYWJfc2l6ZSh1bnNpZ25lZCBjaGFyICpzbGFiLCB1bnNpZ25lZCBpbnQgcmVzZXJ2ZWxlbik7Ci0gLyolPAotQEAgLTExNiw2ICsxMTcsMTggQEAgZG5zX3JkYXRhc2xhYl9zaXplKHVuc2lnbmVkIGNoYXIgKnNsYWIsIHVuc2lnbmVkIGludCByZXNlcnZlbGVuKTsKLSAgKlxsaQlUaGUgbnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBzbGFiLCBpbmNsdWRpbmcgdGhlIHJlc2VydmVsZW4uCi0gICovCi0gCi0rdW5zaWduZWQgaW50Ci0rZG5zX3JkYXRhc2xhYl9jb3VudCh1bnNpZ25lZCBjaGFyICpzbGFiLCB1bnNpZ25lZCBpbnQgcmVzZXJ2ZWxlbik7Ci0rLyolPAotKyAqIFJldHVybiB0aGUgbnVtYmVyIG9mIHJlY29yZHMgaW4gdGhlIHJkYXRhc2xhYgotKyAqCi0rICogUmVxdWlyZXM6Ci0rICpcbGkJJ3NsYWInIHBvaW50cyB0byBhIHNsYWIuCi0rICoKLSsgKiBSZXR1cm5zOgotKyAqXGxpCVRoZSBudW1iZXIgb2YgcmVjb3JkcyBpbiB0aGUgc2xhYi4KLSsgKi8KLSsKLSBpc2NfcmVzdWx0X3QKLSBkbnNfcmRhdGFzbGFiX21lcmdlKHVuc2lnbmVkIGNoYXIgKm9zbGFiLCB1bnNpZ25lZCBjaGFyICpuc2xhYiwKLSAJCSAgICB1bnNpZ25lZCBpbnQgcmVzZXJ2ZWxlbiwgaXNjX21lbV90ICptY3R4LAotZGlmZiAtLWdpdCBhL2xpYi9kbnMvaW5jbHVkZS9kbnMvcmVzdWx0LmggYi9saWIvZG5zL2luY2x1ZGUvZG5zL3Jlc3VsdC5oCi1pbmRleCA3ZDExYzJiLi45M2QxZmQ1IDEwMDY0NAotLS0tIGEvbGliL2Rucy9pbmNsdWRlL2Rucy9yZXN1bHQuaAotKysrIGIvbGliL2Rucy9pbmNsdWRlL2Rucy9yZXN1bHQuaAotQEAgLTE1Nyw4ICsxNTcsMTIgQEAKLSAjZGVmaW5lIEROU19SX0JBRENEUwkJCShJU0NfUkVTVUxUQ0xBU1NfRE5TICsgMTExKQotICNkZWZpbmUgRE5TX1JfQkFEQ0ROU0tFWQkJKElTQ19SRVNVTFRDTEFTU19ETlMgKyAxMTIpCi0gI2RlZmluZSBETlNfUl9PUFRFUlIJCQkoSVNDX1JFU1VMVENMQVNTX0ROUyArIDExMykKLSsjZGVmaW5lIEROU19SX0JBREROU1RBUAkJCShJU0NfUkVTVUxUQ0xBU1NfRE5TICsgMTE0KQotKyNkZWZpbmUgRE5TX1JfQkFEVFNJRwkJCShJU0NfUkVTVUxUQ0xBU1NfRE5TICsgMTE1KQotKyNkZWZpbmUgRE5TX1JfQkFEU0lHMAkJCShJU0NfUkVTVUxUQ0xBU1NfRE5TICsgMTE2KQotKyNkZWZpbmUgRE5TX1JfVE9PTUFOWVJFQ09SRFMJCShJU0NfUkVTVUxUQ0xBU1NfRE5TICsgMTE3KQotIAotLSNkZWZpbmUgRE5TX1JfTlJFU1VMVFMJCQkxMTQJLyolPCBOdW1iZXIgb2YgcmVzdWx0cyAqLwotKyNkZWZpbmUgRE5TX1JfTlJFU1VMVFMJCQkxMTgJLyolPCBOdW1iZXIgb2YgcmVzdWx0cyAqLwotIAotIC8qCi0gICogRE5TIHdpcmUgZm9ybWF0IHJjb2Rlcy4KLWRpZmYgLS1naXQgYS9saWIvZG5zL2luY2x1ZGUvZG5zL3pvbmUuaCBiL2xpYi9kbnMvaW5jbHVkZS9kbnMvem9uZS5oCi1pbmRleCBhOTM2N2YxLi4yMjc1NDBiIDEwMDY0NAotLS0tIGEvbGliL2Rucy9pbmNsdWRlL2Rucy96b25lLmgKLSsrKyBiL2xpYi9kbnMvaW5jbHVkZS9kbnMvem9uZS5oCi1AQCAtMjk2LDYgKzI5NiwzMiBAQCBkbnNfem9uZV9nZXRmaWxlKGRuc196b25lX3QgKnpvbmUpOwotICAqLwotIAotIHZvaWQKLStkbnNfem9uZV9zZXRtYXhyZWNvcmRzKGRuc196b25lX3QgKnpvbmUsIGlzY191aW50MzJfdCByZWNvcmRzKTsKLSsvKiU8Ci0rICogCVNldHMgdGhlIG1heGltaW0gbnVtYmVyIG9mIHJlY29yZHMgcGVybWl0dGVkIGluIGEgem9uZS4KLSsgKgkwIGltcGxpZXMgdW5saW1pdGVkLgotKyAqCi0rICogUmVxdWlyZXM6Ci0rICpcbGkJJ3pvbmUnIHRvIGJlIHZhbGlkIGluaXRpYWxpc2VkIHpvbmUuCi0rICoKLSsgKiBSZXR1cm5zOgotKyAqXGxpCXZvaWQKLSsgKi8KLSsKLStpc2NfdWludDMyX3QKLStkbnNfem9uZV9nZXRtYXhyZWNvcmRzKGRuc196b25lX3QgKnpvbmUpOwotKy8qJTwKLSsgKiAJR2V0cyB0aGUgbWF4aW1pbSBudW1iZXIgb2YgcmVjb3JkcyBwZXJtaXR0ZWQgaW4gYSB6b25lLgotKyAqCTAgaW1wbGllcyB1bmxpbWl0ZWQuCi0rICoKLSsgKiBSZXF1aXJlczoKLSsgKlxsaQknem9uZScgdG8gYmUgdmFsaWQgaW5pdGlhbGlzZWQgem9uZS4KLSsgKgotKyAqIFJldHVybnM6Ci0rICpcbGkJaXNjX3VpbnQzMl90IG1heHJlY29yZHMuCi0rICovCi0rCi0rdm9pZAotIGRuc196b25lX3NldG1heHR0bChkbnNfem9uZV90ICp6b25lLCBpc2NfdWludDMyX3QgbWF4dHRsKTsKLSAvKiU8Ci0gICogCVNldHMgdGhlIG1heCB0dGwgb2YgdGhlIHpvbmUuCi1AQCAtMzE2LDcgKzM0Miw3IEBAIGRuc196b25lX2dldG1heHR0bChkbnNfem9uZV90ICp6b25lKTsKLSAgKlxsaQknem9uZScgdG8gYmUgdmFsaWQgaW5pdGlhbGlzZWQgem9uZS4KLSAgKgotICAqIFJldHVybnM6Ci0tICpcbGkJaXNjX3VpbnQzMl90IG1heHR0bC4KLSsgKlxsaQlkbnNfdHRsX3QgbWF4dHRsLgotICAqLwotIAotIGlzY19yZXN1bHRfdAotZGlmZiAtLWdpdCBhL2xpYi9kbnMvcmJ0ZGIuYyBiL2xpYi9kbnMvcmJ0ZGIuYwotaW5kZXggNjJiZWNmYy4uNzJkNzIyZiAxMDA2NDQKLS0tLSBhL2xpYi9kbnMvcmJ0ZGIuYwotKysrIGIvbGliL2Rucy9yYnRkYi5jCi1AQCAtMjA5LDYgKzIwOSw3IEBAIHR5cGVkZWYgaXNjX3VpbnQ2NF90ICAgICAgICAgICAgICAgICAgICByYnRkYl9zZXJpYWxfdDsKLSAjZGVmaW5lIGZyZWVfcmJ0ZGJfY2FsbGJhY2sgZnJlZV9yYnRkYl9jYWxsYmFjazY0Ci0gI2RlZmluZSBmcmVlX3JkYXRhc2V0IGZyZWVfcmRhdGFzZXQ2NAotICNkZWZpbmUgZ2V0bnNlYzNwYXJhbWV0ZXJzIGdldG5zZWMzcGFyYW1ldGVyczY0Ci0rI2RlZmluZSBnZXRzaXplIGdldHNpemU2NAotICNkZWZpbmUgZ2V0b3JpZ2lubm9kZSBnZXRvcmlnaW5ub2RlNjQKLSAjZGVmaW5lIGdldHJyc2V0c3RhdHMgZ2V0cnJzZXRzdGF0czY0Ci0gI2RlZmluZSBnZXRzaWduaW5ndGltZSBnZXRzaWduaW5ndGltZTY0Ci1AQCAtNTg5LDYgKzU5MCwxMyBAQCB0eXBlZGVmIHN0cnVjdCByYnRkYl92ZXJzaW9uIHsKLSAJaXNjX3VpbnQxNl90CQkJaXRlcmF0aW9uczsKLSAJaXNjX3VpbnQ4X3QJCQlzYWx0X2xlbmd0aDsKLSAJdW5zaWduZWQgY2hhcgkJCXNhbHRbRE5TX05TRUMzX1NBTFRTSVpFXTsKLSsKLSsJLyoKLSsJICogcmVjb3JkcyBhbmQgYnl0ZXMgYXJlIGNvdmVyZWQgYnkgcndsb2NrLgotKwkgKi8KLSsJaXNjX3J3bG9ja190ICAgICAgICAgICAgICAgICAgICByd2xvY2s7Ci0rCWlzY191aW50NjRfdAkJCXJlY29yZHM7Ci0rCWlzY191aW50NjRfdAkJCWJ5dGVzOwotIH0gcmJ0ZGJfdmVyc2lvbl90OwotIAotIHR5cGVkZWYgSVNDX0xJU1QocmJ0ZGJfdmVyc2lvbl90KSAgICAgICByYnRkYl92ZXJzaW9ubGlzdF90OwotQEAgLTExMzAsNiArMTEzOCw3IEBAIGZyZWVfcmJ0ZGIoZG5zX3JidGRiX3QgKnJidGRiLCBpc2NfYm9vbGVhbl90IGxvZywgaXNjX2V2ZW50X3QgKmV2ZW50KSB7Ci0gCQlJTlNJU1QocmVmcyA9PSAwKTsKLSAJCVVOTElOSyhyYnRkYi0+b3Blbl92ZXJzaW9ucywgcmJ0ZGItPmN1cnJlbnRfdmVyc2lvbiwgbGluayk7Ci0gCQlpc2NfcmVmY291bnRfZGVzdHJveSgmcmJ0ZGItPmN1cnJlbnRfdmVyc2lvbi0+cmVmZXJlbmNlcyk7Ci0rCQlpc2Nfcndsb2NrX2Rlc3Ryb3koJnJidGRiLT5jdXJyZW50X3ZlcnNpb24tPnJ3bG9jayk7Ci0gCQlpc2NfbWVtX3B1dChyYnRkYi0+Y29tbW9uLm1jdHgsIHJidGRiLT5jdXJyZW50X3ZlcnNpb24sCi0gCQkJICAgIHNpemVvZihyYnRkYl92ZXJzaW9uX3QpKTsKLSAJfQotQEAgLTEzODMsNiArMTM5Miw3IEBAIGFsbG9jYXRlX3ZlcnNpb24oaXNjX21lbV90ICptY3R4LCByYnRkYl9zZXJpYWxfdCBzZXJpYWwsCi0gCi0gc3RhdGljIGlzY19yZXN1bHRfdAotIG5ld3ZlcnNpb24oZG5zX2RiX3QgKmRiLCBkbnNfZGJ2ZXJzaW9uX3QgKip2ZXJzaW9ucCkgewotKwlpc2NfcmVzdWx0X3QgcmVzdWx0OwotIAlkbnNfcmJ0ZGJfdCAqcmJ0ZGIgPSAoZG5zX3JidGRiX3QgKilkYjsKLSAJcmJ0ZGJfdmVyc2lvbl90ICp2ZXJzaW9uOwotIAotQEAgLTE0MTUsMTMgKzE0MjUsMjggQEAgbmV3dmVyc2lvbihkbnNfZGJfdCAqZGIsIGRuc19kYnZlcnNpb25fdCAqKnZlcnNpb25wKSB7Ci0gCQkJdmVyc2lvbi0+c2FsdF9sZW5ndGggPSAwOwotIAkJCW1lbXNldCh2ZXJzaW9uLT5zYWx0LCAwLCBzaXplb2YodmVyc2lvbi0+c2FsdCkpOwotIAkJfQotLQkJcmJ0ZGItPm5leHRfc2VyaWFsKys7Ci0tCQlyYnRkYi0+ZnV0dXJlX3ZlcnNpb24gPSB2ZXJzaW9uOwotLQl9Ci0rCQlyZXN1bHQgPSBpc2Nfcndsb2NrX2luaXQoJnZlcnNpb24tPnJ3bG9jaywgMCwgMCk7Ci0rCQlpZiAocmVzdWx0ICE9IElTQ19SX1NVQ0NFU1MpIHsKLSsJCQlpc2NfcmVmY291bnRfZGVzdHJveSgmdmVyc2lvbi0+cmVmZXJlbmNlcyk7Ci0rCQkJaXNjX21lbV9wdXQocmJ0ZGItPmNvbW1vbi5tY3R4LCB2ZXJzaW9uLAotKwkJCQkgICAgc2l6ZW9mKCp2ZXJzaW9uKSk7Ci0rCQkJdmVyc2lvbiA9IE5VTEw7Ci0rCQl9IGVsc2UgewotKwkJCVJXTE9DSygmcmJ0ZGItPmN1cnJlbnRfdmVyc2lvbi0+cndsb2NrLAotKwkJCSAgICAgICBpc2Nfcndsb2NrdHlwZV9yZWFkKTsKLSsJCQl2ZXJzaW9uLT5yZWNvcmRzID0gcmJ0ZGItPmN1cnJlbnRfdmVyc2lvbi0+cmVjb3JkczsKLSsJCQl2ZXJzaW9uLT5ieXRlcyA9IHJidGRiLT5jdXJyZW50X3ZlcnNpb24tPmJ5dGVzOwotKwkJCVJXVU5MT0NLKCZyYnRkYi0+Y3VycmVudF92ZXJzaW9uLT5yd2xvY2ssCi0rCQkJCSBpc2Nfcndsb2NrdHlwZV9yZWFkKTsKLSsJCQlyYnRkYi0+bmV4dF9zZXJpYWwrKzsKLSsJCQlyYnRkYi0+ZnV0dXJlX3ZlcnNpb24gPSB2ZXJzaW9uOwotKwkJfQotKwl9IGVsc2UKLSsJCXJlc3VsdCA9IElTQ19SX05PTUVNT1JZOwotIAlSQlREQl9VTkxPQ0soJnJidGRiLT5sb2NrLCBpc2Nfcndsb2NrdHlwZV93cml0ZSk7Ci0gCi0gCWlmICh2ZXJzaW9uID09IE5VTEwpCi0tCQlyZXR1cm4gKElTQ19SX05PTUVNT1JZKTsKLSsJCXJldHVybiAocmVzdWx0KTsKLSAKLSAJKnZlcnNpb25wID0gdmVyc2lvbjsKLSAKLUBAIC0yNjgxLDYgKzI3MDYsNyBAQCBjbG9zZXZlcnNpb24oZG5zX2RiX3QgKmRiLCBkbnNfZGJ2ZXJzaW9uX3QgKip2ZXJzaW9ucCwgaXNjX2Jvb2xlYW5fdCBjb21taXQpIHsKLSAKLSAJaWYgKGNsZWFudXBfdmVyc2lvbiAhPSBOVUxMKSB7Ci0gCQlJTlNJU1QoRU1QVFkoY2xlYW51cF92ZXJzaW9uLT5jaGFuZ2VkX2xpc3QpKTsKLSsJCWlzY19yd2xvY2tfZGVzdHJveSgmY2xlYW51cF92ZXJzaW9uLT5yd2xvY2spOwotIAkJaXNjX21lbV9wdXQocmJ0ZGItPmNvbW1vbi5tY3R4LCBjbGVhbnVwX3ZlcnNpb24sCi0gCQkJICAgIHNpemVvZigqY2xlYW51cF92ZXJzaW9uKSk7Ci0gCX0KLUBAIC02MjU0LDYgKzYyODAsMjYgQEAgYWRkMzIoZG5zX3JidGRiX3QgKnJidGRiLCBkbnNfcmJ0bm9kZV90ICpyYnRub2RlLCByYnRkYl92ZXJzaW9uX3QgKnJidHZlcnNpb24sCi0gCQllbHNlCi0gCQkJcmJ0bm9kZS0+ZGF0YSA9IG5ld2hlYWRlcjsKLSAJCW5ld2hlYWRlci0+bmV4dCA9IHRvcGhlYWRlci0+bmV4dDsKLSsJCWlmIChyYnR2ZXJzaW9uICE9IE5VTEwpCi0rCQkJUldMT0NLKCZyYnR2ZXJzaW9uLT5yd2xvY2ssIGlzY19yd2xvY2t0eXBlX3dyaXRlKTsKLSsJCWlmIChyYnR2ZXJzaW9uICE9IE5VTEwgJiYgIWhlYWRlcl9ueCkgewotKwkJCXJidHZlcnNpb24tPnJlY29yZHMgLT0KLSsJCQkJZG5zX3JkYXRhc2xhYl9jb3VudCgodW5zaWduZWQgY2hhciAqKWhlYWRlciwKLSsJCQkJCQkgICAgc2l6ZW9mKCpoZWFkZXIpKTsKLSsJCQlyYnR2ZXJzaW9uLT5ieXRlcyAtPQotKwkJCQlkbnNfcmRhdGFzbGFiX3NpemUoKHVuc2lnbmVkIGNoYXIgKiloZWFkZXIsCi0rCQkJCQkJICAgc2l6ZW9mKCpoZWFkZXIpKTsKLSsJCX0KLSsJCWlmIChyYnR2ZXJzaW9uICE9IE5VTEwgJiYgIW5ld2hlYWRlcl9ueCkgewotKwkJCXJidHZlcnNpb24tPnJlY29yZHMgKz0KLSsJCQkJZG5zX3JkYXRhc2xhYl9jb3VudCgodW5zaWduZWQgY2hhciAqKW5ld2hlYWRlciwKLSsJCQkJCQkgICAgc2l6ZW9mKCpuZXdoZWFkZXIpKTsKLSsJCQlyYnR2ZXJzaW9uLT5ieXRlcyArPQotKwkJCQlkbnNfcmRhdGFzbGFiX3NpemUoKHVuc2lnbmVkIGNoYXIgKiluZXdoZWFkZXIsCi0rCQkJCQkJICAgc2l6ZW9mKCpuZXdoZWFkZXIpKTsKLSsJCX0KLSsJCWlmIChyYnR2ZXJzaW9uICE9IE5VTEwpCi0rCQkJUldVTkxPQ0soJnJidHZlcnNpb24tPnJ3bG9jaywgaXNjX3J3bG9ja3R5cGVfd3JpdGUpOwotIAkJaWYgKGxvYWRpbmcpIHsKLSAJCQkvKgotIAkJCSAqIFRoZXJlIGFyZSBubyBvdGhlciByZWZlcmVuY2VzIHRvICdoZWFkZXInIHdoZW4KLUBAIC02MzU1LDYgKzY0MDEsMTYgQEAgYWRkMzIoZG5zX3JidGRiX3QgKnJidGRiLCBkbnNfcmJ0bm9kZV90ICpyYnRub2RlLCByYnRkYl92ZXJzaW9uX3QgKnJidHZlcnNpb24sCi0gCQkJbmV3aGVhZGVyLT5kb3duID0gTlVMTDsKLSAJCQlyYnRub2RlLT5kYXRhID0gbmV3aGVhZGVyOwotIAkJfQotKwkJaWYgKHJidHZlcnNpb24gIT0gTlVMTCAmJiAhbmV3aGVhZGVyX254KSB7Ci0rCQkJUldMT0NLKCZyYnR2ZXJzaW9uLT5yd2xvY2ssIGlzY19yd2xvY2t0eXBlX3dyaXRlKTsKLSsJCQlyYnR2ZXJzaW9uLT5yZWNvcmRzICs9Ci0rCQkJCWRuc19yZGF0YXNsYWJfY291bnQoKHVuc2lnbmVkIGNoYXIgKiluZXdoZWFkZXIsCi0rCQkJCQkJICAgIHNpemVvZigqbmV3aGVhZGVyKSk7Ci0rCQkJcmJ0dmVyc2lvbi0+Ynl0ZXMgKz0KLSsJCQkJZG5zX3JkYXRhc2xhYl9zaXplKCh1bnNpZ25lZCBjaGFyICopbmV3aGVhZGVyLAotKwkJCQkJCSAgIHNpemVvZigqbmV3aGVhZGVyKSk7Ci0rCQkJUldVTkxPQ0soJnJidHZlcnNpb24tPnJ3bG9jaywgaXNjX3J3bG9ja3R5cGVfd3JpdGUpOwotKwkJfQotIAkJaWR4ID0gbmV3aGVhZGVyLT5ub2RlLT5sb2NrbnVtOwotIAkJaWYgKElTX0NBQ0hFKHJidGRiKSkgewotIAkJCUlTQ19MSVNUX1BSRVBFTkQocmJ0ZGItPnJkYXRhc2V0c1tpZHhdLAotQEAgLTY4MTEsNiArNjg2NywxMiBAQCBzdWJ0cmFjdHJkYXRhc2V0KGRuc19kYl90ICpkYiwgZG5zX2Ribm9kZV90ICpub2RlLCBkbnNfZGJ2ZXJzaW9uX3QgKnZlcnNpb24sCi0gCQkJICovCi0gCQkJbmV3aGVhZGVyLT5hZGRpdGlvbmFsX2F1dGggPSBOVUxMOwotIAkJCW5ld2hlYWRlci0+YWRkaXRpb25hbF9nbHVlID0gTlVMTDsKLSsJCQlyYnR2ZXJzaW9uLT5yZWNvcmRzICs9Ci0rCQkJCWRuc19yZGF0YXNsYWJfY291bnQoKHVuc2lnbmVkIGNoYXIgKiluZXdoZWFkZXIsCi0rCQkJCQkJICAgIHNpemVvZigqbmV3aGVhZGVyKSk7Ci0rCQkJcmJ0dmVyc2lvbi0+Ynl0ZXMgKz0KLSsJCQkJZG5zX3JkYXRhc2xhYl9zaXplKCh1bnNpZ25lZCBjaGFyICopbmV3aGVhZGVyLAotKwkJCQkJCSAgIHNpemVvZigqbmV3aGVhZGVyKSk7Ci0gCQl9IGVsc2UgaWYgKHJlc3VsdCA9PSBETlNfUl9OWFJSU0VUKSB7Ci0gCQkJLyoKLSAJCQkgKiBUaGlzIHN1YnRyYWN0aW9uIHdvdWxkIHJlbW92ZSBhbGwgb2YgdGhlIHJkYXRhOwotQEAgLTY4NDYsNiArNjkwOCwxMiBAQCBzdWJ0cmFjdHJkYXRhc2V0KGRuc19kYl90ICpkYiwgZG5zX2Ribm9kZV90ICpub2RlLCBkbnNfZGJ2ZXJzaW9uX3QgKnZlcnNpb24sCi0gCQkgKiB0b3BoZWFkZXIuCi0gCQkgKi8KLSAJCUlOU0lTVChyYnR2ZXJzaW9uLT5zZXJpYWwgPj0gdG9waGVhZGVyLT5zZXJpYWwpOwotKwkJcmJ0dmVyc2lvbi0+cmVjb3JkcyAtPQotKwkJCQlkbnNfcmRhdGFzbGFiX2NvdW50KCh1bnNpZ25lZCBjaGFyICopaGVhZGVyLAotKwkJCQkJCSAgICBzaXplb2YoKmhlYWRlcikpOwotKwkJcmJ0dmVyc2lvbi0+Ynl0ZXMgLT0KLSsJCQkJZG5zX3JkYXRhc2xhYl9zaXplKCh1bnNpZ25lZCBjaGFyICopaGVhZGVyLAotKwkJCQkJCSAgIHNpemVvZigqaGVhZGVyKSk7Ci0gCQlpZiAodG9waGVhZGVyX3ByZXYgIT0gTlVMTCkKLSAJCQl0b3BoZWFkZXJfcHJldi0+bmV4dCA9IG5ld2hlYWRlcjsKLSAJCWVsc2UKLUBAIC03MTcyLDYgKzcyNDAsNyBAQCByYnRfZGF0YWZpeGVyKGRuc19yYnRub2RlX3QgKnJidG5vZGUsIHZvaWQgKmJhc2UsIHNpemVfdCBmaWxlc2l6ZSwKLSAJdW5zaWduZWQgY2hhciAqbGltaXQgPSAoKHVuc2lnbmVkIGNoYXIgKikgYmFzZSkgKyBmaWxlc2l6ZTsKLSAJdW5zaWduZWQgY2hhciAqcDsKLSAJc2l6ZV90IHNpemU7Ci0rCXVuc2lnbmVkIGludCBjb3VudDsKLSAKLSAJUkVRVUlSRShyYnRub2RlICE9IE5VTEwpOwotIAotQEAgLTcxNzksNiArNzI0OCw5IEBAIHJidF9kYXRhZml4ZXIoZG5zX3JidG5vZGVfdCAqcmJ0bm9kZSwgdm9pZCAqYmFzZSwgc2l6ZV90IGZpbGVzaXplLAotIAkJcCA9ICh1bnNpZ25lZCBjaGFyICopIGhlYWRlcjsKLSAKLSAJCXNpemUgPSBkbnNfcmRhdGFzbGFiX3NpemUocCwgc2l6ZW9mKCpoZWFkZXIpKTsKLSsJCWNvdW50ID0gZG5zX3JkYXRhc2xhYl9jb3VudChwLCBzaXplb2YoKmhlYWRlcikpOzsKLSsJCXJidGRiLT5jdXJyZW50X3ZlcnNpb24tPnJlY29yZHMgKz0gY291bnQ7Ci0rCQlyYnRkYi0+Y3VycmVudF92ZXJzaW9uLT5ieXRlcyArPSBzaXplOwotIAkJaXNjX2NyYzY0X3VwZGF0ZShjcmMsIHAsIHNpemUpOwotICNpZmRlZiBERUJVRwotIAkJaGV4ZHVtcCgiaGFzaGluZyBoZWFkZXIiLCBwLCBzaXplb2YocmRhdGFzZXRoZWFkZXJfdCkpOwotQEAgLTc3NzcsNiArNzg0OSwzMyBAQCBnZXRuc2VjM3BhcmFtZXRlcnMoZG5zX2RiX3QgKmRiLCBkbnNfZGJ2ZXJzaW9uX3QgKnZlcnNpb24sIGRuc19oYXNoX3QgKmhhc2gsCi0gfQotIAotIHN0YXRpYyBpc2NfcmVzdWx0X3QKLStnZXRzaXplKGRuc19kYl90ICpkYiwgZG5zX2RidmVyc2lvbl90ICp2ZXJzaW9uLCBpc2NfdWludDY0X3QgKnJlY29yZHMsCi0rICAgICAgICBpc2NfdWludDY0X3QgKmJ5dGVzKQotK3sKLSsJZG5zX3JidGRiX3QgKnJidGRiOwotKwlpc2NfcmVzdWx0X3QgcmVzdWx0ID0gSVNDX1JfU1VDQ0VTUzsKLSsJcmJ0ZGJfdmVyc2lvbl90ICpyYnR2ZXJzaW9uID0gdmVyc2lvbjsKLSsKLSsJcmJ0ZGIgPSAoZG5zX3JidGRiX3QgKilkYjsKLSsKLSsJUkVRVUlSRShWQUxJRF9SQlREQihyYnRkYikpOwotKwlJTlNJU1QocmJ0dmVyc2lvbiA9PSBOVUxMIHx8IHJidHZlcnNpb24tPnJidGRiID09IHJidGRiKTsKLSsKLSsJaWYgKHJidHZlcnNpb24gPT0gTlVMTCkKLSsJCXJidHZlcnNpb24gPSByYnRkYi0+Y3VycmVudF92ZXJzaW9uOwotKwotKwlSV0xPQ0soJnJidHZlcnNpb24tPnJ3bG9jaywgaXNjX3J3bG9ja3R5cGVfcmVhZCk7Ci0rCWlmIChyZWNvcmRzICE9IE5VTEwpCi0rCQkqcmVjb3JkcyA9IHJidHZlcnNpb24tPnJlY29yZHM7Ci0rCi0rCWlmIChieXRlcyAhPSBOVUxMKQotKwkJKmJ5dGVzID0gcmJ0dmVyc2lvbi0+Ynl0ZXM7Ci0rCVJXVU5MT0NLKCZyYnR2ZXJzaW9uLT5yd2xvY2ssIGlzY19yd2xvY2t0eXBlX3JlYWQpOwotKwotKwlyZXR1cm4gKHJlc3VsdCk7Ci0rfQotKwotK3N0YXRpYyBpc2NfcmVzdWx0X3QKLSBzZXRzaWduaW5ndGltZShkbnNfZGJfdCAqZGIsIGRuc19yZGF0YXNldF90ICpyZGF0YXNldCwgaXNjX3N0ZHRpbWVfdCByZXNpZ24pIHsKLSAJZG5zX3JidGRiX3QgKnJidGRiID0gKGRuc19yYnRkYl90ICopZGI7Ci0gCWlzY19zdGR0aW1lX3Qgb2xkcmVzaWduOwotQEAgLTc5NzIsNyArODA3MSw4IEBAIHN0YXRpYyBkbnNfZGJtZXRob2RzX3Qgem9uZV9tZXRob2RzID0gewotIAlOVUxMLAotIAlOVUxMLAotIAlOVUxMLAotLQloYXNoc2l6ZQotKwloYXNoc2l6ZSwKLSsJZ2V0c2l6ZQotIH07Ci0gCi0gc3RhdGljIGRuc19kYm1ldGhvZHNfdCBjYWNoZV9tZXRob2RzID0gewotQEAgLTgwMTgsNyArODExOCw4IEBAIHN0YXRpYyBkbnNfZGJtZXRob2RzX3QgY2FjaGVfbWV0aG9kcyA9IHsKLSAJTlVMTCwKLSAJTlVMTCwKLSAJc2V0Y2FjaGVzdGF0cywKLS0JaGFzaHNpemUKLSsJaGFzaHNpemUsCi0rCU5VTEwKLSB9OwotIAotIGlzY19yZXN1bHRfdAotQEAgLTgzMTAsNiArODQxMSwyMCBAQCBkbnNfcmJ0ZGJfY3JlYXRlCi0gCXJidGRiLT5jdXJyZW50X3ZlcnNpb24tPnNhbHRfbGVuZ3RoID0gMDsKLSAJbWVtc2V0KHJidGRiLT5jdXJyZW50X3ZlcnNpb24tPnNhbHQsIDAsCi0gCSAgICAgICBzaXplb2YocmJ0ZGItPmN1cnJlbnRfdmVyc2lvbi0+c2FsdCkpOwotKwlyZXN1bHQgPSBpc2Nfcndsb2NrX2luaXQoJnJidGRiLT5jdXJyZW50X3ZlcnNpb24tPnJ3bG9jaywgMCwgMCk7Ci0rCWlmIChyZXN1bHQgIT0gSVNDX1JfU1VDQ0VTUykgewotKwkJaXNjX3JlZmNvdW50X2Rlc3Ryb3koJnJidGRiLT5jdXJyZW50X3ZlcnNpb24tPnJlZmVyZW5jZXMpOwotKwkJaXNjX21lbV9wdXQobWN0eCwgcmJ0ZGItPmN1cnJlbnRfdmVyc2lvbiwKLSsJCQkgICAgc2l6ZW9mKCpyYnRkYi0+Y3VycmVudF92ZXJzaW9uKSk7Ci0rCQlyYnRkYi0+Y3VycmVudF92ZXJzaW9uID0gTlVMTDsKLSsJCWlzY19yZWZjb3VudF9kZWNyZW1lbnQoJnJidGRiLT5yZWZlcmVuY2VzLCBOVUxMKTsKLSsJCWlzY19yZWZjb3VudF9kZXN0cm95KCZyYnRkYi0+cmVmZXJlbmNlcyk7Ci0rCQlmcmVlX3JidGRiKHJidGRiLCBJU0NfRkFMU0UsIE5VTEwpOwotKwkJcmV0dXJuIChyZXN1bHQpOwotKwl9Ci0rCi0rCXJidGRiLT5jdXJyZW50X3ZlcnNpb24tPnJlY29yZHMgPSAwOwotKwlyYnRkYi0+Y3VycmVudF92ZXJzaW9uLT5ieXRlcyA9IDA7Ci0gCXJidGRiLT5mdXR1cmVfdmVyc2lvbiA9IE5VTEw7Ci0gCUlTQ19MSVNUX0lOSVQocmJ0ZGItPm9wZW5fdmVyc2lvbnMpOwotIAkvKgotZGlmZiAtLWdpdCBhL2xpYi9kbnMvcmRhdGFzbGFiLmMgYi9saWIvZG5zL3JkYXRhc2xhYi5jCi1pbmRleCBlMjlkYzg0Li42M2UzNzI4IDEwMDY0NAotLS0tIGEvbGliL2Rucy9yZGF0YXNsYWIuYwotKysrIGIvbGliL2Rucy9yZGF0YXNsYWIuYwotQEAgLTUyMyw2ICs1MjMsMTkgQEAgZG5zX3JkYXRhc2xhYl9zaXplKHVuc2lnbmVkIGNoYXIgKnNsYWIsIHVuc2lnbmVkIGludCByZXNlcnZlbGVuKSB7Ci0gCXJldHVybiAoKHVuc2lnbmVkIGludCkoY3VycmVudCAtIHNsYWIpKTsKLSB9Ci0gCi0rdW5zaWduZWQgaW50Ci0rZG5zX3JkYXRhc2xhYl9jb3VudCh1bnNpZ25lZCBjaGFyICpzbGFiLCB1bnNpZ25lZCBpbnQgcmVzZXJ2ZWxlbikgewotKwl1bnNpZ25lZCBpbnQgY291bnQ7Ci0rCXVuc2lnbmVkIGNoYXIgKmN1cnJlbnQ7Ci0rCi0rCVJFUVVJUkUoc2xhYiAhPSBOVUxMKTsKLSsKLSsJY3VycmVudCA9IHNsYWIgKyByZXNlcnZlbGVuOwotKwljb3VudCA9ICpjdXJyZW50KysgKiAyNTY7Ci0rCWNvdW50ICs9ICpjdXJyZW50Kys7Ci0rCXJldHVybiAoY291bnQpOwotK30KLSsKLSAvKgotICAqIE1ha2UgdGhlIGRuc19yZGF0YV90ICdyZGF0YScgcmVmZXIgdG8gdGhlIHNsYWIgaXRlbQotICAqIGJlZ2lubmluZyBhdCAnKmN1cnJlbnQnLCB3aGljaCBpcyBwYXJ0IG9mIGEgc2xhYiBvZiB0eXBlCi1kaWZmIC0tZ2l0IGEvbGliL2Rucy9yZXN1bHQuYyBiL2xpYi9kbnMvcmVzdWx0LmMKLWluZGV4IDdiZTRmNTcuLmE2MjE5MDkgMTAwNjQ0Ci0tLS0gYS9saWIvZG5zL3Jlc3VsdC5jCi0rKysgYi9saWIvZG5zL3Jlc3VsdC5jCi1AQCAtMTY3LDExICsxNjcsMTYgQEAgc3RhdGljIGNvbnN0IGNoYXIgKnRleHRbRE5TX1JfTlJFU1VMVFNdID0gewotIAkiY292ZXJlZCBieSBuZWdhdGl2ZSB0cnVzdCBhbmNob3IiLCAgICAvKiU8IDExMCBETlNfUl9OVEFDT1ZFUkVEICovCi0gCSJiYWQgQ0RTIiwJCQkgICAgICAgLyolPCAxMTEgRE5TX1JfQkFEQ1NEICovCi0gCSJiYWQgQ0ROU0tFWSIsCQkJICAgICAgIC8qJTwgMTEyIEROU19SX0JBRENETlNLRVkgKi8KLS0JIm1hbGZvcm1lZCBPUFQgb3B0aW9uIgkJICAgICAgIC8qJTwgMTEzIEROU19SX09QVEVSUiAqLwotKwkibWFsZm9ybWVkIE9QVCBvcHRpb24iLAkJICAgICAgIC8qJTwgMTEzIEROU19SX09QVEVSUiAqLwotKwkibWFsZm9ybWVkIEROU1RBUCBkYXRhIiwJICAgICAgIC8qJTwgMTE0IEROU19SX0JBREROU1RBUCAqLwotKwotKwkiVFNJRyBpbiB3cm9uZyBsb2NhdGlvbiIsCSAgICAgICAvKiU8IDExNSBETlNfUl9CQURUU0lHICovCi0rCSJTSUcoMCkgaW4gd3JvbmcgbG9jYXRpb24iLAkgICAgICAgLyolPCAxMTYgRE5TX1JfQkFEU0lHMCAqLwotKwkidG9vIG1hbnkgcmVjb3JkcyIsCSAgICAgICAgICAgICAgIC8qJTwgMTE3IEROU19SX1RPT01BTllSRUNPUkRTICovCi0gfTsKLSAKLSBzdGF0aWMgY29uc3QgY2hhciAqcmNvZGVfdGV4dFtETlNfUl9OUkNPREVSRVNVTFRTXSA9IHsKLS0JIk5PRVJST1IiLAkJCQkvKiU8IDAgRE5TX1JfTk9FUk9SICovCi0rCSJOT0VSUk9SIiwJCQkJLyolPCAwIEROU19SX05PRVJST1IgKi8KLSAJIkZPUk1FUlIiLAkJCQkvKiU8IDEgRE5TX1JfRk9STUVSUiAqLwotIAkiU0VSVkZBSUwiLAkJCQkvKiU8IDIgRE5TX1JfU0VSVkZBSUwgKi8KLSAJIk5YRE9NQUlOIiwJCQkJLyolPCAzIEROU19SX05YRE9NQUlOICovCi1kaWZmIC0tZ2l0IGEvbGliL2Rucy9zZGIuYyBiL2xpYi9kbnMvc2RiLmMKLWluZGV4IGFiZmVlYjAuLjE5Mzk3ZTAgMTAwNjQ0Ci0tLS0gYS9saWIvZG5zL3NkYi5jCi0rKysgYi9saWIvZG5zL3NkYi5jCi1AQCAtMTI5OCw3ICsxMjk4LDggQEAgc3RhdGljIGRuc19kYm1ldGhvZHNfdCBzZGJfbWV0aG9kcyA9IHsKLSAJZmluZG5vZGVleHQsCi0gCWZpbmRleHQsCi0gCU5VTEwsCQkJLyogc2V0Y2FjaGVzdGF0cyAqLwotLQlOVUxMCQkJLyogaGFzaHNpemUgKi8KLSsJTlVMTCwJCQkvKiBoYXNoc2l6ZSAqLwotKwlOVUxMCQkJLyogZ2V0c2l6ZSAqLwotIH07Ci0gCi0gc3RhdGljIGlzY19yZXN1bHRfdAotZGlmZiAtLWdpdCBhL2xpYi9kbnMvc2Rsei5jIGIvbGliL2Rucy9zZGx6LmMKLWluZGV4IGIxMTk4YTQuLjBlMzE2M2QgMTAwNjQ0Ci0tLS0gYS9saWIvZG5zL3NkbHouYwotKysrIGIvbGliL2Rucy9zZGx6LmMKLUBAIC0xMjY5LDcgKzEyNjksOCBAQCBzdGF0aWMgZG5zX2RibWV0aG9kc190IHNkbHpkYl9tZXRob2RzID0gewotIAlmaW5kbm9kZWV4dCwKLSAJZmluZGV4dCwKLSAJTlVMTCwJCQkvKiBzZXRjYWNoZXN0YXRzICovCi0tCU5VTEwJCQkvKiBoYXNoc2l6ZSAqLwotKwlOVUxMLAkJCS8qIGhhc2hzaXplICovCi0rCU5VTEwJCQkvKiBnZXRzaXplICovCi0gfTsKLSAKLSAvKgotZGlmZiAtLWdpdCBhL2xpYi9kbnMveGZyaW4uYyBiL2xpYi9kbnMveGZyaW4uYwotaW5kZXggMmE2YzFiNC4uYWM1NjZlMSAxMDA2NDQKLS0tLSBhL2xpYi9kbnMveGZyaW4uYwotKysrIGIvbGliL2Rucy94ZnJpbi5jCi1AQCAtMTQ5LDYgKzE0OSw5IEBAIHN0cnVjdCBkbnNfeGZyaW5fY3R4IHsKLSAJdW5zaWduZWQgaW50CQlucmVjczsJCS8qJTwgTnVtYmVyIG9mIHJlY29yZHMgcmVjdmQgKi8KLSAJaXNjX3VpbnQ2NF90CQluYnl0ZXM7CQkvKiU8IE51bWJlciBvZiBieXRlcyByZWNlaXZlZCAqLwotIAotKwl1bnNpZ25lZCBpbnQJCW1heHJlY29yZHM7CS8qJTwgVGhlIG1heGltdW0gbnVtYmVyIG9mCi0rCQkJCQkJICAgICByZWNvcmRzIHNldCBmb3IgdGhlIHpvbmUgKi8KLSsKLSAJaXNjX3RpbWVfdAkJc3RhcnQ7CQkvKiU8IFN0YXJ0IHRpbWUgb2YgdGhlIHRyYW5zZmVyICovCi0gCWlzY190aW1lX3QJCWVuZDsJCS8qJTwgRW5kIHRpbWUgb2YgdGhlIHRyYW5zZmVyICovCi0gCi1AQCAtMzA5LDEwICszMTIsMTggQEAgYXhmcl9wdXRkYXRhKGRuc194ZnJpbl9jdHhfdCAqeGZyLCBkbnNfZGlmZm9wX3Qgb3AsCi0gc3RhdGljIGlzY19yZXN1bHRfdAotIGF4ZnJfYXBwbHkoZG5zX3hmcmluX2N0eF90ICp4ZnIpIHsKLSAJaXNjX3Jlc3VsdF90IHJlc3VsdDsKLSsJaXNjX3VpbnQ2NF90IHJlY29yZHM7Ci0gCi0gCUNIRUNLKGRuc19kaWZmX2xvYWQoJnhmci0+ZGlmZiwgeGZyLT5heGZyLmFkZCwgeGZyLT5heGZyLmFkZF9wcml2YXRlKSk7Ci0gCXhmci0+ZGlmZmxlbiA9IDA7Ci0gCWRuc19kaWZmX2NsZWFyKCZ4ZnItPmRpZmYpOwotKwlpZiAoeGZyLT5tYXhyZWNvcmRzICE9IDBVKSB7Ci0rCQlyZXN1bHQgPSBkbnNfZGJfZ2V0c2l6ZSh4ZnItPmRiLCB4ZnItPnZlciwgJnJlY29yZHMsIE5VTEwpOwotKwkJaWYgKHJlc3VsdCA9PSBJU0NfUl9TVUNDRVNTICYmIHJlY29yZHMgPiB4ZnItPm1heHJlY29yZHMpIHsKLSsJCQlyZXN1bHQgPSBETlNfUl9UT09NQU5ZUkVDT1JEUzsKLSsJCQlnb3RvIGZhaWx1cmU7Ci0rCQl9Ci0rCX0KLSAJcmVzdWx0ID0gSVNDX1JfU1VDQ0VTUzsKLSAgZmFpbHVyZToKLSAJcmV0dXJuIChyZXN1bHQpOwotQEAgLTM5Niw2ICs0MDcsNyBAQCBpeGZyX3B1dGRhdGEoZG5zX3hmcmluX2N0eF90ICp4ZnIsIGRuc19kaWZmb3BfdCBvcCwKLSBzdGF0aWMgaXNjX3Jlc3VsdF90Ci0gaXhmcl9hcHBseShkbnNfeGZyaW5fY3R4X3QgKnhmcikgewotIAlpc2NfcmVzdWx0X3QgcmVzdWx0OwotKwlpc2NfdWludDY0X3QgcmVjb3JkczsKLSAKLSAJaWYgKHhmci0+dmVyID09IE5VTEwpIHsKLSAJCUNIRUNLKGRuc19kYl9uZXd2ZXJzaW9uKHhmci0+ZGIsICZ4ZnItPnZlcikpOwotQEAgLTQwMyw2ICs0MTUsMTMgQEAgaXhmcl9hcHBseShkbnNfeGZyaW5fY3R4X3QgKnhmcikgewotIAkJCUNIRUNLKGRuc19qb3VybmFsX2JlZ2luX3RyYW5zYWN0aW9uKHhmci0+aXhmci5qb3VybmFsKSk7Ci0gCX0KLSAJQ0hFQ0soZG5zX2RpZmZfYXBwbHkoJnhmci0+ZGlmZiwgeGZyLT5kYiwgeGZyLT52ZXIpKTsKLSsJaWYgKHhmci0+bWF4cmVjb3JkcyAhPSAwVSkgewotKwkJcmVzdWx0ID0gZG5zX2RiX2dldHNpemUoeGZyLT5kYiwgeGZyLT52ZXIsICZyZWNvcmRzLCBOVUxMKTsKLSsJCWlmIChyZXN1bHQgPT0gSVNDX1JfU1VDQ0VTUyAmJiByZWNvcmRzID4geGZyLT5tYXhyZWNvcmRzKSB7Ci0rCQkJcmVzdWx0ID0gRE5TX1JfVE9PTUFOWVJFQ09SRFM7Ci0rCQkJZ290byBmYWlsdXJlOwotKwkJfQotKwl9Ci0gCWlmICh4ZnItPml4ZnIuam91cm5hbCAhPSBOVUxMKSB7Ci0gCQlyZXN1bHQgPSBkbnNfam91cm5hbF93cml0ZWRpZmYoeGZyLT5peGZyLmpvdXJuYWwsICZ4ZnItPmRpZmYpOwotIAkJaWYgKHJlc3VsdCAhPSBJU0NfUl9TVUNDRVNTKQotQEAgLTc1OSw3ICs3NzgsNyBAQCB4ZnJpbl9yZXNldChkbnNfeGZyaW5fY3R4X3QgKnhmcikgewotIAotIHN0YXRpYyB2b2lkCi0geGZyaW5fZmFpbChkbnNfeGZyaW5fY3R4X3QgKnhmciwgaXNjX3Jlc3VsdF90IHJlc3VsdCwgY29uc3QgY2hhciAqbXNnKSB7Ci0tCWlmIChyZXN1bHQgIT0gRE5TX1JfVVBUT0RBVEUpIHsKLSsJaWYgKHJlc3VsdCAhPSBETlNfUl9VUFRPREFURSAmJiByZXN1bHQgIT0gRE5TX1JfVE9PTUFOWVJFQ09SRFMpIHsKLSAJCXhmcmluX2xvZyh4ZnIsIElTQ19MT0dfRVJST1IsICIlczogJXMiLAotIAkJCSAgbXNnLCBpc2NfcmVzdWx0X3RvdGV4dChyZXN1bHQpKTsKLSAJCWlmICh4ZnItPmlzX2l4ZnIpCi1AQCAtODUyLDYgKzg3MSw3IEBAIHhmcmluX2NyZWF0ZShpc2NfbWVtX3QgKm1jdHgsCi0gCXhmci0+bm1zZyA9IDA7Ci0gCXhmci0+bnJlY3MgPSAwOwotIAl4ZnItPm5ieXRlcyA9IDA7Ci0rCXhmci0+bWF4cmVjb3JkcyA9IGRuc196b25lX2dldG1heHJlY29yZHMoem9uZSk7Ci0gCWlzY190aW1lX25vdygmeGZyLT5zdGFydCk7Ci0gCi0gCXhmci0+dHNpZ2tleSA9IE5VTEw7Ci1kaWZmIC0tZ2l0IGEvbGliL2Rucy96b25lLmMgYi9saWIvZG5zL3pvbmUuYwotaW5kZXggOTBlNTU4ZC4uMmIwZDhlNCAxMDA2NDQKLS0tLSBhL2xpYi9kbnMvem9uZS5jCi0rKysgYi9saWIvZG5zL3pvbmUuYwotQEAgLTI1Myw2ICsyNTMsOCBAQCBzdHJ1Y3QgZG5zX3pvbmUgewotIAlpc2NfdWludDMyX3QJCW1heHJldHJ5OwotIAlpc2NfdWludDMyX3QJCW1pbnJldHJ5OwotIAotKwlpc2NfdWludDMyX3QJCW1heHJlY29yZHM7Ci0rCi0gCWlzY19zb2NrYWRkcl90CQkqbWFzdGVyczsKLSAJaXNjX2RzY3BfdAkJKm1hc3RlcmRzY3BzOwotIAlkbnNfbmFtZV90CQkqKm1hc3RlcmtleW5hbWVzOwotQEAgLTEwMDg4LDYgKzEwMDkwLDIwIEBAIGRuc196b25lX3NldG1heHJldHJ5dGltZShkbnNfem9uZV90ICp6b25lLCBpc2NfdWludDMyX3QgdmFsKSB7Ci0gCXpvbmUtPm1heHJldHJ5ID0gdmFsOwotIH0KLSAKLStpc2NfdWludDMyX3QKLStkbnNfem9uZV9nZXRtYXhyZWNvcmRzKGRuc196b25lX3QgKnpvbmUpIHsKLSsgICAgICAgIFJFUVVJUkUoRE5TX1pPTkVfVkFMSUQoem9uZSkpOwotKwotKwlyZXR1cm4gKHpvbmUtPm1heHJlY29yZHMpOwotK30KLSsKLSt2b2lkCi0rZG5zX3pvbmVfc2V0bWF4cmVjb3JkcyhkbnNfem9uZV90ICp6b25lLCBpc2NfdWludDMyX3QgdmFsKSB7Ci0rICAgICAgICBSRVFVSVJFKEROU19aT05FX1ZBTElEKHpvbmUpKTsKLSsKLSsJem9uZS0+bWF4cmVjb3JkcyA9IHZhbDsKLSt9Ci0rCi0gc3RhdGljIGlzY19ib29sZWFuX3QKLSBub3RpZnlfaXNxdWV1ZWQoZG5zX3pvbmVfdCAqem9uZSwgdW5zaWduZWQgaW50IGZsYWdzLCBkbnNfbmFtZV90ICpuYW1lLAotIAkJaXNjX3NvY2thZGRyX3QgKmFkZHIsIGRuc190c2lna2V5X3QgKmtleSkKLUBAIC0xNDQzMSw3ICsxNDQ0Nyw3IEBAIHpvbmVfeGZyZG9uZShkbnNfem9uZV90ICp6b25lLCBpc2NfcmVzdWx0X3QgcmVzdWx0KSB7Ci0gCUROU19aT05FX0NMUkZMQUcoem9uZSwgRE5TX1pPTkVGTEdfU09BQkVGT1JFQVhGUik7Ci0gCi0gCVRJTUVfTk9XKCZub3cpOwotLQlzd2l0Y2ggKHJlc3VsdCkgewotKwlzd2l0Y2ggKHhmcnJlc3VsdCkgewotIAljYXNlIElTQ19SX1NVQ0NFU1M6Ci0gCQlETlNfWk9ORV9TRVRGTEFHKHpvbmUsIEROU19aT05FRkxHX05FRUROT1RJRlkpOwotIAkJLypGQUxMVEhST1VHSCovCi1AQCAtMTQ1NTgsNiArMTQ1NzQsMTEgQEAgem9uZV94ZnJkb25lKGRuc196b25lX3QgKnpvbmUsIGlzY19yZXN1bHRfdCByZXN1bHQpIHsKLSAJCUROU19aT05FX1NFVEZMQUcoem9uZSwgRE5TX1pPTkVGTEFHX05PSVhGUik7Ci0gCQlnb3RvIHNhbWVfbWFzdGVyOwotIAotKwljYXNlIEROU19SX1RPT01BTllSRUNPUkRTOgotKwkJRE5TX1pPTkVfSklUVEVSX0FERCgmbm93LCB6b25lLT5yZWZyZXNoLCAmem9uZS0+cmVmcmVzaHRpbWUpOwotKwkJaW5jX3N0YXRzKHpvbmUsIGRuc196b25lc3RhdHNjb3VudGVyX3hmcmZhaWwpOwotKwkJYnJlYWs7Ci0rCi0gCWRlZmF1bHQ6Ci0gCW5leHRfbWFzdGVyOgotIAkJLyoKLWRpZmYgLS1naXQgYS9saWIvaXNjY2ZnL25hbWVkY29uZi5jIGIvbGliL2lzY2NmZy9uYW1lZGNvbmYuYwotaW5kZXggNzgwYWI0Ni4uZTdmZjFjYyAxMDA2NDQKLS0tLSBhL2xpYi9pc2NjZmcvbmFtZWRjb25mLmMKLSsrKyBiL2xpYi9pc2NjZmcvbmFtZWRjb25mLmMKLUBAIC0xNjc5LDYgKzE2NzksNyBAQCB6b25lX2NsYXVzZXNbXSA9IHsKLSAJeyAibWFzdGVyZmlsZS1mb3JtYXQiLCAmY2ZnX3R5cGVfbWFzdGVyZm9ybWF0LCAwIH0sCi0gCXsgIm1heC1peGZyLWxvZy1zaXplIiwgJmNmZ190eXBlX3NpemUsIENGR19DTEFVU0VGTEFHX09CU09MRVRFIH0sCi0gCXsgIm1heC1qb3VybmFsLXNpemUiLCAmY2ZnX3R5cGVfc2l6ZW5vZGVmYXVsdCwgMCB9LAotKwl7ICJtYXgtcmVjb3JkcyIsICZjZmdfdHlwZV91aW50MzIsIDAgfSwKLSAJeyAibWF4LXJlZnJlc2gtdGltZSIsICZjZmdfdHlwZV91aW50MzIsIDAgfSwKLSAJeyAibWF4LXJldHJ5LXRpbWUiLCAmY2ZnX3R5cGVfdWludDMyLCAwIH0sCi0gCXsgIm1heC10cmFuc2Zlci1pZGxlLWluIiwgJmNmZ190eXBlX3VpbnQzMiwgMCB9LAotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvQ1ZFLTIwMTYtODg2NC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9DVkUtMjAxNi04ODY0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNTJkNjgwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9DVkUtMjAxNi04ODY0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjE5ICswLDAgQEAKLUZyb20gYzFkMDU5OWEyNDZmNjQ2ZDFjMjIwMThmOGZhMDk0NTkyNzBhNDRiOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcmsgQW5kcmV3cyA8bWFya2FAaXNjLm9yZz4KLURhdGU6IEZyaSwgMjEgT2N0IDIwMTYgMTQ6NTU6MTAgKzExMDAKLVN1YmplY3Q6IFtQQVRDSF0gNDQ4OS4gW3NlY3VyaXR5XSBJdCB3YXMgcG9zc2libGUgdG8gdHJpZ2dlciBhc3NlcnRpb25zIHdoZW4KLSBwcm9jZXNzaW5nIGEgcmVzcG9uc2UuIChDVkUtMjAxNi04ODY0KSBbUlQgIzQzNDY1XQotCi0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCBiZDZmMjdmNWMzNTMxMzNiNTYzZmU2OTEwMGIyZjE2OGMxMjlmM2NhKQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1baHR0cHM6Ly9zb3VyY2UuaXNjLm9yZy9jZ2ktYmluL2dpdHdlYi5jZ2k/cD1iaW5kOS5naXQ7YT1jb21taXQ7aD1jMWQwNTk5YTI0NmY2NDZkMWMyMjAxOGY4ZmEwOTQ1OTI3MGE0NGI4XQotCi1DVkU6IENWRS0yMDE2LTg4NjQKLQotU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgotLS0tCi0gQ0hBTkdFUyAgICAgICAgICAgIHwgIDMgKysrCi0gbGliL2Rucy9yZXNvbHZlci5jIHwgNjkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA1MCBpbnNlcnRpb25zKCspLCAyMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL0NIQU5HRVMgYi9DSEFOR0VTCi1pbmRleCA1YzhjNjFhLi40MWNmY2U1IDEwMDY0NAotLS0tIGEvQ0hBTkdFUwotKysrIGIvQ0hBTkdFUwotQEAgLTEsMyArMSw2IEBACi0rNDQ4OS4JW3NlY3VyaXR5XQlJdCB3YXMgcG9zc2libGUgdG8gdHJpZ2dlciBhc3NlcnRpb25zIHdoZW4gcHJvY2Vzc2luZwotKwkJCWEgcmVzcG9uc2UuIChDVkUtMjAxNi04ODY0KSBbUlQgIzQzNDY1XQotKwotIDQ0NjcuICAgW3NlY3VyaXR5XSAgICAgIEl0IHdhcyBwb3NzaWJsZSB0byB0cmlnZ2VyIGFuIGFzc2VydGlvbiB3aGVuCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyaW5nIGEgbWVzc2FnZS4gKENWRS0yMDE2LTI3NzYpIFtSVCAjNDMxMzldCi0gCi1kaWZmIC0tZ2l0IGEvbGliL2Rucy9yZXNvbHZlci5jIGIvbGliL2Rucy9yZXNvbHZlci5jCi1pbmRleCBiYTFhZTIzLi4xM2M4YjQ0IDEwMDY0NAotLS0tIGEvbGliL2Rucy9yZXNvbHZlci5jCi0rKysgYi9saWIvZG5zL3Jlc29sdmVyLmMKLUBAIC02MTIsNyArNjEyLDkgQEAgdmFsY3JlYXRlKGZldGNoY3R4X3QgKmZjdHgsIGRuc19hZGJhZGRyaW5mb190ICphZGRyaW5mbywgZG5zX25hbWVfdCAqbmFtZSwKLSAJdmFsYXJnLT5hZGRyaW5mbyA9IGFkZHJpbmZvOwotIAotIAlpZiAoIUlTQ19MSVNUX0VNUFRZKGZjdHgtPnZhbGlkYXRvcnMpKQotLQkJSU5TSVNUKCh2YWxvcHRpb25zICYgRE5TX1ZBTElEQVRPUl9ERUZFUikgIT0gMCk7Ci0rCQl2YWxvcHRpb25zIHw9IEROU19WQUxJREFUT1JfREVGRVI7Ci0rCWVsc2UKLSsJCXZhbG9wdGlvbnMgJj0gfkROU19WQUxJREFUT1JfREVGRVI7Ci0gCi0gCXJlc3VsdCA9IGRuc192YWxpZGF0b3JfY3JlYXRlKGZjdHgtPnJlcy0+dmlldywgbmFtZSwgdHlwZSwgcmRhdGFzZXQsCi0gCQkJCSAgICAgIHNpZ3JkYXRhc2V0LCBmY3R4LT5ybWVzc2FnZSwKLUBAIC01NTI2LDEzICs1NTI4LDYgQEAgY2FjaGVfbmFtZShmZXRjaGN0eF90ICpmY3R4LCBkbnNfbmFtZV90ICpuYW1lLCBkbnNfYWRiYWRkcmluZm9fdCAqYWRkcmluZm8sCi0gCQkJCQkJCSAgIHJkYXRhc2V0LAotIAkJCQkJCQkgICBzaWdyZGF0YXNldCwKLSAJCQkJCQkJICAgdmFsb3B0aW9ucywgdGFzayk7Ci0tCQkJCQkvKgotLQkJCQkJICogRGVmZXIgYW55IGZ1cnRoZXIgdmFsaWRhdGlvbnMuCi0tCQkJCQkgKiBUaGlzIHByZXZlbnRzIG11bHRpcGxlIHZhbGlkYXRvcnMKLS0JCQkJCSAqIGZyb20gbWFuaXB1bGF0aW5nIGZjdHgtPnJtZXNzYWdlCi0tCQkJCQkgKiBzaW11bHRhbmVvdXNseS4KLS0JCQkJCSAqLwotLQkJCQkJdmFsb3B0aW9ucyB8PSBETlNfVkFMSURBVE9SX0RFRkVSOwotIAkJCQl9Ci0gCQkJfSBlbHNlIGlmIChDSEFJTklORyhyZGF0YXNldCkpIHsKLSAJCQkJaWYgKHJkYXRhc2V0LT50eXBlID09IGRuc19yZGF0YXR5cGVfY25hbWUpCi1AQCAtNTY0Nyw2ICs1NjQyLDExIEBAIGNhY2hlX25hbWUoZmV0Y2hjdHhfdCAqZmN0eCwgZG5zX25hbWVfdCAqbmFtZSwgZG5zX2FkYmFkZHJpbmZvX3QgKmFkZHJpbmZvLAotIAkJCQkgICAgICAgZXJlc3VsdCA9PSBETlNfUl9OQ0FDSEVOWFJSU0VUKTsKLSAJCQl9Ci0gCQkJZXZlbnQtPnJlc3VsdCA9IGVyZXN1bHQ7Ci0rCQkJaWYgKGFkYnAgIT0gTlVMTCAmJiAqYWRicCAhPSBOVUxMKSB7Ci0rCQkJCWlmIChhbm9kZXAgIT0gTlVMTCAmJiAqYW5vZGVwICE9IE5VTEwpCi0rCQkJCQlkbnNfZGJfZGV0YWNobm9kZSgqYWRicCwgYW5vZGVwKTsKLSsJCQkJZG5zX2RiX2RldGFjaChhZGJwKTsKLSsJCQl9Ci0gCQkJZG5zX2RiX2F0dGFjaChmY3R4LT5jYWNoZSwgYWRicCk7Ci0gCQkJZG5zX2RiX3RyYW5zZmVybm9kZShmY3R4LT5jYWNoZSwgJm5vZGUsIGFub2RlcCk7Ci0gCQkJY2xvbmVfcmVzdWx0cyhmY3R4KTsKLUBAIC01ODk3LDYgKzU4OTcsMTEgQEAgbmNhY2hlX21lc3NhZ2UoZmV0Y2hjdHhfdCAqZmN0eCwgZG5zX2FkYmFkZHJpbmZvX3QgKmFkZHJpbmZvLAotIAkJZmN0eC0+YXR0cmlidXRlcyB8PSBGQ1RYX0FUVFJfSEFWRUFOU1dFUjsKLSAJCWlmIChldmVudCAhPSBOVUxMKSB7Ci0gCQkJZXZlbnQtPnJlc3VsdCA9IGVyZXN1bHQ7Ci0rCQkJaWYgKGFkYnAgIT0gTlVMTCAmJiAqYWRicCAhPSBOVUxMKSB7Ci0rCQkJCWlmIChhbm9kZXAgIT0gTlVMTCAmJiAqYW5vZGVwICE9IE5VTEwpCi0rCQkJCQlkbnNfZGJfZGV0YWNobm9kZSgqYWRicCwgYW5vZGVwKTsKLSsJCQkJZG5zX2RiX2RldGFjaChhZGJwKTsKLSsJCQl9Ci0gCQkJZG5zX2RiX2F0dGFjaChmY3R4LT5jYWNoZSwgYWRicCk7Ci0gCQkJZG5zX2RiX3RyYW5zZmVybm9kZShmY3R4LT5jYWNoZSwgJm5vZGUsIGFub2RlcCk7Ci0gCQkJY2xvbmVfcmVzdWx0cyhmY3R4KTsKLUBAIC02NzE4LDEzICs2NzIzLDE1IEBAIHN0YXRpYyBpc2NfcmVzdWx0X3QKLSBhbnN3ZXJfcmVzcG9uc2UoZmV0Y2hjdHhfdCAqZmN0eCkgewotIAlpc2NfcmVzdWx0X3QgcmVzdWx0OwotIAlkbnNfbWVzc2FnZV90ICptZXNzYWdlOwotLQlkbnNfbmFtZV90ICpuYW1lLCAqZG5hbWUsICpxbmFtZSwgdG5hbWUsICpuc19uYW1lOwotKwlkbnNfbmFtZV90ICpuYW1lLCAqZG5hbWUgPSBOVUxMLCAqcW5hbWUsICpkcW5hbWUsIHRuYW1lLCAqbnNfbmFtZTsKLSsJZG5zX25hbWVfdCAqY25hbWUgPSBOVUxMOwotIAlkbnNfcmRhdGFzZXRfdCAqcmRhdGFzZXQsICpuc19yZGF0YXNldDsKLSAJaXNjX2Jvb2xlYW5fdCBkb25lLCBleHRlcm5hbCwgY2hhaW5pbmcsIGFhLCBmb3VuZCwgd2FudF9jaGFpbmluZzsKLS0JaXNjX2Jvb2xlYW5fdCBoYXZlX2Fuc3dlciwgZm91bmRfY25hbWUsIGZvdW5kX3R5cGUsIHdhbnRlZF9jaGFpbmluZzsKLSsJaXNjX2Jvb2xlYW5fdCBoYXZlX2Fuc3dlciwgZm91bmRfY25hbWUsIGZvdW5kX2RuYW1lLCBmb3VuZF90eXBlOwotKwlpc2NfYm9vbGVhbl90IHdhbnRlZF9jaGFpbmluZzsKLSAJdW5zaWduZWQgaW50IGFmbGFnOwotIAlkbnNfcmRhdGF0eXBlX3QgdHlwZTsKLS0JZG5zX2ZpeGVkbmFtZV90IGZkbmFtZSwgZnFuYW1lOwotKwlkbnNfZml4ZWRuYW1lX3QgZmRuYW1lLCBmcW5hbWUsIGZxZG5hbWU7Ci0gCWRuc192aWV3X3QgKnZpZXc7Ci0gCi0gCUZDVFhUUkFDRSgiYW5zd2VyX3Jlc3BvbnNlIik7Ci1AQCAtNjczOCw2ICs2NzQ1LDcgQEAgYW5zd2VyX3Jlc3BvbnNlKGZldGNoY3R4X3QgKmZjdHgpIHsKLSAKLSAJZG9uZSA9IElTQ19GQUxTRTsKLSAJZm91bmRfY25hbWUgPSBJU0NfRkFMU0U7Ci0rCWZvdW5kX2RuYW1lID0gSVNDX0ZBTFNFOwotIAlmb3VuZF90eXBlID0gSVNDX0ZBTFNFOwotIAljaGFpbmluZyA9IElTQ19GQUxTRTsKLSAJaGF2ZV9hbnN3ZXIgPSBJU0NfRkFMU0U7Ci1AQCAtNjc0NywxMiArNjc1NSwxMyBAQCBhbnN3ZXJfcmVzcG9uc2UoZmV0Y2hjdHhfdCAqZmN0eCkgewotIAkJYWEgPSBJU0NfVFJVRTsKLSAJZWxzZQotIAkJYWEgPSBJU0NfRkFMU0U7Ci0tCXFuYW1lID0gJmZjdHgtPm5hbWU7Ci0rCWRxbmFtZSA9IHFuYW1lID0gJmZjdHgtPm5hbWU7Ci0gCXR5cGUgPSBmY3R4LT50eXBlOwotIAl2aWV3ID0gZmN0eC0+cmVzLT52aWV3OwotKwlkbnNfZml4ZWRuYW1lX2luaXQoJmZxZG5hbWUpOwotIAlyZXN1bHQgPSBkbnNfbWVzc2FnZV9maXJzdG5hbWUobWVzc2FnZSwgRE5TX1NFQ1RJT05fQU5TV0VSKTsKLSAJd2hpbGUgKCFkb25lICYmIHJlc3VsdCA9PSBJU0NfUl9TVUNDRVNTKSB7Ci0tCQlkbnNfbmFtZXJlbG5fdCBuYW1lcmVsbjsKLSsJCWRuc19uYW1lcmVsbl90IG5hbWVyZWxuLCBkbmFtZXJlbG47Ci0gCQlpbnQgb3JkZXI7Ci0gCQl1bnNpZ25lZCBpbnQgbmxhYmVsczsKLSAKLUBAIC02NzYwLDYgKzY3NjksOCBAQCBhbnN3ZXJfcmVzcG9uc2UoZmV0Y2hjdHhfdCAqZmN0eCkgewotIAkJZG5zX21lc3NhZ2VfY3VycmVudG5hbWUobWVzc2FnZSwgRE5TX1NFQ1RJT05fQU5TV0VSLCAmbmFtZSk7Ci0gCQlleHRlcm5hbCA9IElTQ19URighZG5zX25hbWVfaXNzdWJkb21haW4obmFtZSwgJmZjdHgtPmRvbWFpbikpOwotIAkJbmFtZXJlbG4gPSBkbnNfbmFtZV9mdWxsY29tcGFyZShxbmFtZSwgbmFtZSwgJm9yZGVyLCAmbmxhYmVscyk7Ci0rCQlkbmFtZXJlbG4gPSBkbnNfbmFtZV9mdWxsY29tcGFyZShkcW5hbWUsIG5hbWUsICZvcmRlciwKLSsJCQkJCQkgJm5sYWJlbHMpOwotIAkJaWYgKG5hbWVyZWxuID09IGRuc19uYW1lcmVsbl9lcXVhbCkgewotIAkJCXdhbnRlZF9jaGFpbmluZyA9IElTQ19GQUxTRTsKLSAJCQlmb3IgKHJkYXRhc2V0ID0gSVNDX0xJU1RfSEVBRChuYW1lLT5saXN0KTsKLUBAIC02ODU0LDcgKzY4NjUsNyBAQCBhbnN3ZXJfcmVzcG9uc2UoZmV0Y2hjdHhfdCAqZmN0eCkgewotIAkJCQkJfQotIAkJCQl9IGVsc2UgaWYgKHJkYXRhc2V0LT50eXBlID09IGRuc19yZGF0YXR5cGVfcnJzaWcKLSAJCQkJCSAgICYmIHJkYXRhc2V0LT5jb3ZlcnMgPT0KLS0JCQkJCSAgIGRuc19yZGF0YXR5cGVfY25hbWUKLSsJCQkJCSAgICAgIGRuc19yZGF0YXR5cGVfY25hbWUKLSAJCQkJCSAgICYmICFmb3VuZF90eXBlKSB7Ci0gCQkJCQkvKgotIAkJCQkJICogV2UncmUgbG9va2luZyBmb3Igc29tZXRoaW5nIGVsc2UsCi1AQCAtNjg4NCwxMSArNjg5NSwxOCBAQCBhbnN3ZXJfcmVzcG9uc2UoZmV0Y2hjdHhfdCAqZmN0eCkgewotIAkJCQkJCSAqIGEgQ05BTUUgb3IgRE5BTUUpLgotIAkJCQkJCSAqLwotIAkJCQkJCUlOU0lTVCghZXh0ZXJuYWwpOwotLQkJCQkJCWlmIChhZmxhZyA9PQotLQkJCQkJCSAgICBETlNfUkRBVEFTRVRBVFRSX0FOU1dFUikgewotKwkJCQkJCWlmICgocmRhdGFzZXQtPnR5cGUgIT0KLSsJCQkJCQkgICAgIGRuc19yZGF0YXR5cGVfY25hbWUpIHx8Ci0rCQkJCQkJICAgICFmb3VuZF9kbmFtZSB8fAotKwkJCQkJCSAgICAoYWZsYWcgPT0KLSsJCQkJCQkgICAgIEROU19SREFUQVNFVEFUVFJfQU5TV0VSKSkKLSsJCQkJCQl7Ci0gCQkJCQkJCWhhdmVfYW5zd2VyID0gSVNDX1RSVUU7Ci0rCQkJCQkJCWlmIChyZGF0YXNldC0+dHlwZSA9PQotKwkJCQkJCQkgICAgZG5zX3JkYXRhdHlwZV9jbmFtZSkKLSsJCQkJCQkJCWNuYW1lID0gbmFtZTsKLSAJCQkJCQkJbmFtZS0+YXR0cmlidXRlcyB8PQotLQkJCQkJCQkJRE5TX05BTUVBVFRSX0FOU1dFUjsKLSsJCQkJCQkJICAgIEROU19OQU1FQVRUUl9BTlNXRVI7Ci0gCQkJCQkJfQotIAkJCQkJCXJkYXRhc2V0LT5hdHRyaWJ1dGVzIHw9IGFmbGFnOwotIAkJCQkJCWlmIChhYSkKLUBAIC02OTgyLDExICs3MDAwLDExIEBAIGFuc3dlcl9yZXNwb25zZShmZXRjaGN0eF90ICpmY3R4KSB7Ci0gCQkJCQlyZXR1cm4gKEROU19SX0ZPUk1FUlIpOwotIAkJCQl9Ci0gCi0tCQkJCWlmIChuYW1lcmVsbiAhPSBkbnNfbmFtZXJlbG5fc3ViZG9tYWluKSB7Ci0rCQkJCWlmIChkbmFtZXJlbG4gIT0gZG5zX25hbWVyZWxuX3N1YmRvbWFpbikgewotIAkJCQkJY2hhciBxYnVmW0ROU19OQU1FX0ZPUk1BVFNJWkVdOwotIAkJCQkJY2hhciBvYnVmW0ROU19OQU1FX0ZPUk1BVFNJWkVdOwotIAotLQkJCQkJZG5zX25hbWVfZm9ybWF0KHFuYW1lLCBxYnVmLAotKwkJCQkJZG5zX25hbWVfZm9ybWF0KGRxbmFtZSwgcWJ1ZiwKLSAJCQkJCQkJc2l6ZW9mKHFidWYpKTsKLSAJCQkJCWRuc19uYW1lX2Zvcm1hdChuYW1lLCBvYnVmLAotIAkJCQkJCQlzaXplb2Yob2J1ZikpOwotQEAgLTcwMDEsNyArNzAxOSw3IEBAIGFuc3dlcl9yZXNwb25zZShmZXRjaGN0eF90ICpmY3R4KSB7Ci0gCQkJCQl3YW50X2NoYWluaW5nID0gSVNDX1RSVUU7Ci0gCQkJCQlQT1NUKHdhbnRfY2hhaW5pbmcpOwotIAkJCQkJYWZsYWcgPSBETlNfUkRBVEFTRVRBVFRSX0FOU1dFUjsKLS0JCQkJCXJlc3VsdCA9IGRuYW1lX3RhcmdldChyZGF0YXNldCwgcW5hbWUsCi0rCQkJCQlyZXN1bHQgPSBkbmFtZV90YXJnZXQocmRhdGFzZXQsIGRxbmFtZSwKLSAJCQkJCQkJICAgICAgbmxhYmVscywgJmZkbmFtZSk7Ci0gCQkJCQlpZiAocmVzdWx0ID09IElTQ19SX05PU1BBQ0UpIHsKLSAJCQkJCQkvKgotQEAgLTcwMTgsMTAgKzcwMzYsMTMgQEAgYW5zd2VyX3Jlc3BvbnNlKGZldGNoY3R4X3QgKmZjdHgpIHsKLSAKLSAJCQkJCWRuYW1lID0gZG5zX2ZpeGVkbmFtZV9uYW1lKCZmZG5hbWUpOwotIAkJCQkJaWYgKCFpc19hbnN3ZXJ0YXJnZXRfYWxsb3dlZCh2aWV3LAotLQkJCQkJCQlxbmFtZSwgcmRhdGFzZXQtPnR5cGUsCi0tCQkJCQkJCWRuYW1lLCAmZmN0eC0+ZG9tYWluKSkgewotKwkJCQkJCSAgICAgZHFuYW1lLCByZGF0YXNldC0+dHlwZSwKLSsJCQkJCQkgICAgIGRuYW1lLCAmZmN0eC0+ZG9tYWluKSkKLSsJCQkJCXsKLSAJCQkJCQlyZXR1cm4gKEROU19SX1NFUlZGQUlMKTsKLSAJCQkJCX0KLSsJCQkJCWRxbmFtZSA9IGRuc19maXhlZG5hbWVfbmFtZSgmZnFkbmFtZSk7Ci0rCQkJCQlkbnNfbmFtZV9jb3B5KGRuYW1lLCBkcW5hbWUsIE5VTEwpOwotIAkJCQl9IGVsc2UgewotIAkJCQkJLyoKLSAJCQkJCSAqIFdlJ3ZlIGZvdW5kIGEgc2lnbmF0dXJlIHRoYXQKLUBAIC03MDQ2LDYgKzcwNjcsMTAgQEAgYW5zd2VyX3Jlc3BvbnNlKGZldGNoY3R4X3QgKmZjdHgpIHsKLSAJCQkJCUlOU0lTVCghZXh0ZXJuYWwpOwotIAkJCQkJaWYgKGFmbGFnID09IEROU19SREFUQVNFVEFUVFJfQU5TV0VSKSB7Ci0gCQkJCQkJaGF2ZV9hbnN3ZXIgPSBJU0NfVFJVRTsKLSsJCQkJCQlmb3VuZF9kbmFtZSA9IElTQ19UUlVFOwotKwkJCQkJCWlmIChjbmFtZSAhPSBOVUxMKQotKwkJCQkJCQljbmFtZS0+YXR0cmlidXRlcyAmPQotKwkJCQkJCQkgICB+RE5TX05BTUVBVFRSX0FOU1dFUjsKLSAJCQkJCQluYW1lLT5hdHRyaWJ1dGVzIHw9Ci0gCQkJCQkJCUROU19OQU1FQVRUUl9BTlNXRVI7Ci0gCQkJCQl9Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9iaW5kLWNvbmZnZW4tYnVpbGQtdW5peC5vLW9uY2UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvYmluZC1jb25mZ2VuLWJ1aWxkLXVuaXguby1vbmNlLnBhdGNoCmluZGV4IDA5NmQ1ZDguLjhiYzRlYTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9iaW5kLWNvbmZnZW4tYnVpbGQtdW5peC5vLW9uY2UucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL2JpbmQtY29uZmdlbi1idWlsZC11bml4Lm8tb25jZS5wYXRjaApAQCAtMTcsMjQgKzE3LDI4IEBACiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAogU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CisKK1VwZGF0ZSBjb250ZXh0KHRyYWlsaW5nIHdoaXRlc3BhY2UpIGZvciB2ZXJzaW9uIDkuMTAuNS1QMy4KKworU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CiAtLS0KICBiaW4vY29uZmdlbi9NYWtlZmlsZS5pbiB8ICAgIDQgKystLQogIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9iaW4vY29uZmdlbi9NYWtlZmlsZS5pbiBiL2Jpbi9jb25mZ2VuL01ha2VmaWxlLmluCi1pbmRleCA4YjNlNWFhLi40ODY4YTI0IDEwMDY0NAoraW5kZXggZGNhMjcyZi4uMDJiZWNjZSAxMDA2NDQKIC0tLSBhL2Jpbi9jb25mZ2VuL01ha2VmaWxlLmluCiArKysgYi9iaW4vY29uZmdlbi9NYWtlZmlsZS5pbgogQEAgLTc0LDExICs3NCwxMSBAQCBybmRjLWNvbmZnZW4uQE9AOiBybmRjLWNvbmZnZW4uYwogIGRkbnMtY29uZmdlbi5AT0A6IGRkbnMtY29uZmdlbi5jCiAgCSR7TElCVE9PTF9NT0RFX0NPTVBJTEV9ICR7Q0N9ICR7QUxMX0NGTEFHU30gLWMgJHtzcmNkaXJ9L2RkbnMtY29uZmdlbi5jCiAgCi0tcm5kYy1jb25mZ2VuQEVYRUVYVEA6IHJuZGMtY29uZmdlbi5AT0AgdXRpbC5AT0Aga2V5Z2VuLkBPQCAke1VPQkpTfSAke0NPTkZERVBMSUJTfSAKKy1ybmRjLWNvbmZnZW5ARVhFRVhUQDogcm5kYy1jb25mZ2VuLkBPQCB1dGlsLkBPQCBrZXlnZW4uQE9AICR7VU9CSlN9ICR7Q09ORkRFUExJQlN9CiArcm5kYy1jb25mZ2VuQEVYRUVYVEA6IHJuZGMtY29uZmdlbi5AT0AgdXRpbC5AT0Aga2V5Z2VuLkBPQCAke0NPTkZERVBMSUJTfSAkKFNVQkRJUlMpCiAgCWV4cG9ydCBCQVNFT0JKUz0icm5kYy1jb25mZ2VuLkBPQCB1dGlsLkBPQCBrZXlnZW4uQE9AICR7VU9CSlN9IjsgXAogIAkke0ZJTkFMQlVJTERDTUR9CiAgCi0tZGRucy1jb25mZ2VuQEVYRUVYVEA6IGRkbnMtY29uZmdlbi5AT0AgdXRpbC5AT0Aga2V5Z2VuLkBPQCAke1VPQkpTfSAke0NPTkZERVBMSUJTfSAKKy1kZG5zLWNvbmZnZW5ARVhFRVhUQDogZGRucy1jb25mZ2VuLkBPQCB1dGlsLkBPQCBrZXlnZW4uQE9AICR7VU9CSlN9ICR7Q09ORkRFUExJQlN9CiArZGRucy1jb25mZ2VuQEVYRUVYVEA6IGRkbnMtY29uZmdlbi5AT0AgdXRpbC5AT0Aga2V5Z2VuLkBPQCAke0NPTkZERVBMSUJTfSAkKFNVQkRJUlMpCiAgCWV4cG9ydCBCQVNFT0JKUz0iZGRucy1jb25mZ2VuLkBPQCB1dGlsLkBPQCBrZXlnZW4uQE9AICR7VU9CSlN9IjsgXAogIAkke0ZJTkFMQlVJTERDTUR9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvZ2VuZXJhdGUtcm5kYy1rZXkuc2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvZ2VuZXJhdGUtcm5kYy1rZXkuc2gKaW5kZXggZGIyMDEyNy4uZWY5MTVjMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL2dlbmVyYXRlLXJuZGMta2V5LnNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9nZW5lcmF0ZS1ybmRjLWtleS5zaApAQCAtMyw1ICszLDYgQEAKIGlmIFsgISAtcyAvZXRjL2JpbmQvcm5kYy5rZXkgXTsgdGhlbgogICAgIGVjaG8gLW4gIkdlbmVyYXRpbmcgL2V0Yy9iaW5kL3JuZGMua2V5OiIKICAgICAvdXNyL3NiaW4vcm5kYy1jb25mZ2VuIC1hIC1iIDUxMiAtciAvZGV2L3VyYW5kb20KKyAgICBjaG93biByb290OmJpbmQgL2V0Yy9iaW5kL3JuZGMua2V5CiAgICAgY2htb2QgMDY0MCAvZXRjL2JpbmQvcm5kYy5rZXkKIGZpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvbWlwczEtbm90LXN1cHBvcnQtb3Bjb2RlLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvbWlwczEtbm90LXN1cHBvcnQtb3Bjb2RlLmRpZmYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5MzA3OTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL21pcHMxLW5vdC1zdXBwb3J0LW9wY29kZS5kaWZmCisrKyAvZGV2L251bGwKQEAgLTEsMTA0ICswLDAgQEAKLWJpbmQ6IHBvcnQgYSBwYXRjaCB0byBmaXggYSBidWlsZCBmYWlsdXJlCi0KLW1pcHMxIGRvZXMgbm90IHN1cHBvcnQgbGwgYW5kIHNjIGluc3RydWN0aW9ucywgYW5kIGxlYWQgdG8gYmVsb3cgZXJyb3IsIG5vdwotd2UgcG9ydCBhIHBhdGNoIGZyb20gZGViaWFuIHRvIGZpeCBpdAotW2h0dHA6Ly9zZWN1cml0eS5kZWJpYW4ub3JnL2RlYmlhbi1zZWN1cml0eS9wb29sL3VwZGF0ZXMvbWFpbi9iL2JpbmQ5L2JpbmQ5XzkuOC40LmRmc2cuUDEtNitubXUyK2RlYjd1MS5kaWZmLmd6XQotCi18IHtzdGFuZGFyZCBpbnB1dH06IEFzc2VtYmxlciBtZXNzYWdlczoKLXwge3N0YW5kYXJkIGlucHV0fTo0NzogRXJyb3I6IE9wY29kZSBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcHJvY2Vzc29yOiBtaXBzMSAobWlwczEpIGBsbCAkMywwKCQ2KScKLXwge3N0YW5kYXJkIGlucHV0fTo1MDogRXJyb3I6IE9wY29kZSBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcHJvY2Vzc29yOiBtaXBzMSAobWlwczEpIGBzYyAkMywwKCQ2KScKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFJveSBMaSA8cm9uZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KLQotLS0tIGJpbmQ5LTkuOC40LmRmc2cuUDEub3JpZy9saWIvaXNjL21pcHMvaW5jbHVkZS9pc2MvYXRvbWljLmgKLSsrKyBiaW5kOS05LjguNC5kZnNnLlAxL2xpYi9pc2MvbWlwcy9pbmNsdWRlL2lzYy9hdG9taWMuaAotQEAgLTMxLDE4ICszMSwyMCBAQAotIGlzY19hdG9taWNfeGFkZChpc2NfaW50MzJfdCAqcCwgaW50IHZhbCkgewotIAlpc2NfaW50MzJfdCBvcmlnOwotIAotLQkvKiBhZGQgaXMgYSBjaGVhdCwgc2luY2UgTUlQUyBoYXMgbm8gbW92IGluc3RydWN0aW9uICovCi0tCV9fYXNtX18gdm9sYXRpbGUgKAotLQkgICAgIjE6IgotLQkgICAgImxsICQzLCAlMVxuIgotLQkgICAgImFkZCAlMCwgJDAsICQzXG4iCi0tCSAgICAiYWRkICQzLCAkMywgJTJcbiIKLS0JICAgICJzYyAkMywgJTFcbiIKLS0JICAgICJiZXEgJDMsIDAsIDFiIgotLQkgICAgOiAiPSZyIihvcmlnKQotLQkgICAgOiAibSIoKnApLCAiciIodmFsKQotLQkgICAgOiAibWVtb3J5IiwgIiQzIgotLQkJKTsKLSsJX19hc21fXyBfX3ZvbGF0aWxlX18gKAotKwkiCS5zZXQJcHVzaAkJXG4iCi0rCSIJLnNldAltaXBzMgkJXG4iCi0rCSIJLnNldAlub3Jlb3JkZXIJXG4iCi0rCSIJLnNldAlub2F0CQlcbiIKLSsJIjE6CWxsCSQxLCAlMQkJXG4iCi0rCSIJYWRkdQklMCwgJDEsICUyCVxuIgotKwkiCXNjCSUwLCAlMQkJXG4iCi0rCSIJYmVxegklMCwgMWIJCVxuIgotKwkiCW1vdmUJJTAsICQxCQlcbiIKLSsJIgkuc2V0CXBvcAkJXG4iCi0rCTogIj0mciIgKG9yaWcpLCAiK1IiICgqcCkKLSsJOiAiciIgKHZhbCkKLSsJOiAibWVtb3J5Iik7Ci0gCi0gCXJldHVybiAob3JpZyk7Ci0gfQotQEAgLTUyLDE2ICs1NCw3IEBACi0gICovCi0gc3RhdGljIGlubGluZSB2b2lkCi0gaXNjX2F0b21pY19zdG9yZShpc2NfaW50MzJfdCAqcCwgaXNjX2ludDMyX3QgdmFsKSB7Ci0tCV9fYXNtX18gdm9sYXRpbGUgKAotLQkgICAgIjE6IgotLQkgICAgImxsICQzLCAlMFxuIgotLQkgICAgImFkZCAkMywgJDAsICUxXG4iCi0tCSAgICAic2MgJDMsICUwXG4iCi0tCSAgICAiYmVxICQzLCAwLCAxYiIKLS0JICAgIDoKLS0JICAgIDogIm0iKCpwKSwgInIiKHZhbCkKLS0JICAgIDogIm1lbW9yeSIsICIkMyIKLS0JCSk7Ci0rCSpwID0gdmFsOwotIH0KLSAKLSAvKgotQEAgLTcyLDIwICs2NSwyMyBAQAotIHN0YXRpYyBpbmxpbmUgaXNjX2ludDMyX3QKLSBpc2NfYXRvbWljX2NtcHhjaGcoaXNjX2ludDMyX3QgKnAsIGludCBjbXB2YWwsIGludCB2YWwpIHsKLSAJaXNjX2ludDMyX3Qgb3JpZzsKLSsJaXNjX2ludDMyX3QgdG1wOwotIAotLQlfX2FzbV9fIHZvbGF0aWxlKAotLQkgICAgIjE6IgotLQkgICAgImxsICQzLCAlMVxuIgotLQkgICAgImFkZCAlMCwgJDAsICQzXG4iCi0tCSAgICAiYm5lICQzLCAlMiwgMmZcbiIKLS0JICAgICJhZGQgJDMsICQwLCAlM1xuIgotLQkgICAgInNjICQzLCAlMVxuIgotLQkgICAgImJlcSAkMywgMCwgMWJcbiIKLS0JICAgICIyOiIKLS0JICAgIDogIj0mciIob3JpZykKLS0JICAgIDogIm0iKCpwKSwgInIiKGNtcHZhbCksICJyIih2YWwpCi0tCSAgICA6ICJtZW1vcnkiLCAiJDMiCi0tCQkpOwotKwlfX2FzbV9fIF9fdm9sYXRpbGVfXyAoCi0rCSIJLnNldAlwdXNoCQlcbiIKLSsJIgkuc2V0CW1pcHMyCQlcbiIKLSsJIgkuc2V0CW5vcmVvcmRlcglcbiIKLSsJIgkuc2V0CW5vYXQJCVxuIgotKwkiMToJbGwJJDEsICUxCQlcbiIKLSsJIglibmUJJDEsICUzLCAyZglcbiIKLSsJIgltb3ZlCSUyLCAlNAkJXG4iCi0rCSIJc2MJJTIsICUxCQlcbiIKLSsJIgliZXF6CSUyLCAxYgkJXG4iCi0rCSIyOgltb3ZlCSUwLCAkMQkJXG4iCi0rCSIJLnNldAlwb3AJCVxuIgotKwk6ICI9JnIiKG9yaWcpLCAiK1IiICgqcCksICI9ciIgKHRtcCkKLSsJOiAiciIoY21wdmFsKSwgInIiKHZhbCkKLSsJOiAibWVtb3J5Iik7Ci0gCi0gCXJldHVybiAob3JpZyk7Ci0gfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL3VzZS1weXRob24zLWFuZC1maXgtaW5zdGFsbC1saWItcGF0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC91c2UtcHl0aG9uMy1hbmQtZml4LWluc3RhbGwtbGliLXBhdGgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTgyOWYxNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC91c2UtcHl0aG9uMy1hbmQtZml4LWluc3RhbGwtbGliLXBhdGgucGF0Y2gKQEAgLTAsMCArMSwzNiBAQAorVXNlIHB5dGhvbjMgcmF0aGVyIGRlZmF1bHQgcHl0aG9uIHdoaWNoIG1heWJlIGxpbmtzIHRvIHB5dGhvbjIgZm9yIG9lLiBBbmQgYWRkCitvcHRpb24gZm9yIHNldHVwLnB5IHRvIGluc3RhbGwgZmlsZXMgdG8gcmlnaHQgZGlyZWN0b3J5LgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorZGlmZiAtLWdpdCBhL2Jpbi9weXRob24vTWFrZWZpbGUuaW4gYi9iaW4vcHl0aG9uL01ha2VmaWxlLmluCitpbmRleCBhNDNhM2MxLi4yZTcyN2YyIDEwMDY0NAorLS0tIGEvYmluL3B5dGhvbi9NYWtlZmlsZS5pbgorKysrIGIvYmluL3B5dGhvbi9NYWtlZmlsZS5pbgorQEAgLTU1LDkgKzU1LDkgQEAgaW5zdGFsbDo6ICR7VEFSR0VUU30gaW5zdGFsbGRpcnMKKyAJJHtJTlNUQUxMX0RBVEF9ICR7c3JjZGlyfS9kbnNzZWMtY292ZXJhZ2UuOCAke0RFU1RESVJ9JHttYW5kaXJ9L21hbjgKKyAJaWYgdGVzdCAtbiAiJHtQWVRIT059IiA7IHRoZW4gXAorIAkJaWYgdGVzdCAtbiAiJHtERVNURElSfSIgOyB0aGVuIFwKKy0JCQkke1BZVEhPTn0gJHtzcmNkaXJ9L3NldHVwLnB5IGluc3RhbGwgLS1yb290PSR7REVTVERJUn0gLS1wcmVmaXg9JHtwcmVmaXh9IDsgXAorKwkJCSR7UFlUSE9OfSAke3NyY2Rpcn0vc2V0dXAucHkgaW5zdGFsbCAtLXJvb3Q9JHtERVNURElSfSAtLXByZWZpeD0ke3ByZWZpeH0gLS1pbnN0YWxsLWxpYj0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSA7IFwKKyAJCWVsc2UgXAorLQkJCSR7UFlUSE9OfSAke3NyY2Rpcn0vc2V0dXAucHkgaW5zdGFsbCAtLXByZWZpeD0ke3ByZWZpeH0gOyBcCisrCQkJJHtQWVRIT059ICR7c3JjZGlyfS9zZXR1cC5weSBpbnN0YWxsIC0tcHJlZml4PSR7cHJlZml4fSAtLWluc3RhbGwtbGliPSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IDsgXAorIAkJZmkgXAorIAlmaQorIAorZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgoraW5kZXggMzE0YmI5MC4uODY3OTIzZSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5pbgorKysrIGIvY29uZmlndXJlLmluCitAQCAtMjI3LDcgKzIyNyw3IEBAIEFDX0FSR19XSVRIKHB5dGhvbiwKKyBbICAtLXdpdGgtcHl0aG9uPVBBVEggICAgICBzcGVjaWZ5IHBhdGggdG8gcHl0aG9uIGludGVycHJldGVyXSwKKyAgICAgdXNlX3B5dGhvbj0iJHdpdGh2YWwiLCB1c2VfcHl0aG9uPSJ1bnNwZWMiKQorIAorLXB5dGhvbj0icHl0aG9uIHB5dGhvbjMgcHl0aG9uMy41IHB5dGhvbjMuNCBweXRob24zLjMgcHl0aG9uMy4yIHB5dGhvbjIgcHl0aG9uMi43IgorK3B5dGhvbj0icHl0aG9uMyBweXRob24zLjUgcHl0aG9uMy40IHB5dGhvbjMuMyBweXRob24zLjIgcHl0aG9uMiBweXRob24yLjciCisgCisgdGVzdGFyZ3BhcnNlPSd0cnk6IGltcG9ydCBhcmdwYXJzZQorIGV4Y2VwdDogZXhpdCgxKScKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZF85LjEwLjMtUDMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmRfOS4xMC4zLVAzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhODAyMjc0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZF85LjEwLjMtUDMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMTMgKzAsMCBAQAotU1VNTUFSWSA9ICJJU0MgSW50ZXJuZXQgRG9tYWluIE5hbWUgU2VydmVyIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5pc2Mub3JnL3N3L2JpbmQvIgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi0KLUxJQ0VOU0UgPSAiSVNDICYgQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT0wYTk1ZjUyYTBhYjZjNWY1MmRlZGM5YTQ1ZTdhYmIzZiIKLQotREVQRU5EUyA9ICJvcGVuc3NsIGxpYmNhcCIKLQotU1JDX1VSSSA9ICJmdHA6Ly9mdHAuaXNjLm9yZy9pc2MvYmluZDkvJHtQVn0vJHtCUE59LSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9jb25mLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21ha2UtZXRjLWluaXRkLWJpbmQtc3RvcC13b3JrLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21pcHMxLW5vdC1zdXBwb3J0LW9wY29kZS5kaWZmIFwKLSAgICAgICAgICAgZmlsZTovL2RvbnQtdGVzdC1vbi1ob3N0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2dlbmVyYXRlLXJuZGMta2V5LnNoIFwKLSAgICAgICAgICAgZmlsZTovL25hbWVkLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vYmluZDkgXAotICAgICAgICAgICBmaWxlOi8vaW5pdC5kLWFkZC1zdXBwb3J0LWZvci1yZWFkLW9ubHktcm9vdGZzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2JpbmQtY29uZmdlbi1idWlsZC11bml4Lm8tb25jZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWJ1aWxkLXVzZS1wa2ctY29uZmlnLXRvLWZpbmQtbGlieG1sMi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9iaW5kLWVuc3VyZS1zZWFyY2hpbmctZm9yLWpzb24taGVhZGVycy1zZWFyY2hlcy1zeXNyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZ2VuLmMtZXh0ZW5kLURJUk5BTUVTSVpFLWZyb20tMjU2LXRvLTUxMi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWxpYi1kbnMtZ2VuLmMtZml4LXRvby1sb25nLWVycm9yLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE2LTEyODUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTYtMTI4Nl8xLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE2LTEyODZfMi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi0yMDg4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE2LTI3NzUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTYtMjc3Ni5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi04ODY0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE2LTYxNzAucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJiY2Y3ZTc3MmI2MTZmNzI1OTQyMGEzZWRjNWRmMzUwYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2OTA4MTBkMWZiYjcyYWZhNjI5ZTc0NjM4ZDE5Y2Q0NGUyOGQyYjJlNWViNjNmNTVjNzA1YWQ4NWQxYTRjYjgzIgotCi1FTkFCTEVfSVBWNiA9ICItLWVuYWJsZS1pcHY2PSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsICd5ZXMnLCAnbm8nLCBkKX0iCi1FWFRSQV9PRUNPTkYgPSAiICR7RU5BQkxFX0lQVjZ9IC0td2l0aC1yYW5kb21kZXY9L2Rldi9yYW5kb20gLS1kaXNhYmxlLXRocmVhZHMgXAotICAgICAgICAgICAgICAgICAtLWRpc2FibGUtZGV2cG9sbCAtLWRpc2FibGUtZXBvbGwgLS13aXRoLWdvc3Q9bm8gXAotICAgICAgICAgICAgICAgICAtLXdpdGgtZ3NzYXBpPW5vIC0td2l0aC1lY2RzYT15ZXMgXAotICAgICAgICAgICAgICAgICAtLXN5c2NvbmZkaXI9JHtzeXNjb25mZGlyfS9iaW5kIFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLW9wZW5zc2w9JHtTVEFHSU5HX0xJQkRJUn0vLi4gXAotICAgICAgICAgICAgICAgIgotaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgc3lzdGVtZCB1c2VyYWRkIHBrZ2NvbmZpZwotCi0jIFBBQ0tBR0VDT05GSUdzIHJlYWRsaW5lIGFuZCBsaWJlZGl0IHNob3VsZCBOT1QgYmUgc2V0IGF0IHNhbWUgdGltZQotUEFDS0FHRUNPTkZJRyA/PSAicmVhZGxpbmUiCi1QQUNLQUdFQ09ORklHW2h0dHBzdGF0c10gPSAiLS13aXRoLWxpYnhtbDIsLS13aXRob3V0LWxpYnhtbDIsbGlieG1sMiIKLVBBQ0tBR0VDT05GSUdbcmVhZGxpbmVdID0gIi0td2l0aC1yZWFkbGluZT0tbHJlYWRsaW5lLCxyZWFkbGluZSIKLVBBQ0tBR0VDT05GSUdbbGliZWRpdF0gPSAiLS13aXRoLXJlYWRsaW5lPS1sZWRpdCwsbGliZWRpdCIKLQotVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKLVVTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gLS1ob21lICR7bG9jYWxzdGF0ZWRpcn0vY2FjaGUvYmluZCAtLW5vLWNyZWF0ZS1ob21lIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLS11c2VyLWdyb3VwIGJpbmQiCi0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJiaW5kIgotSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMiCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJuYW1lZC5zZXJ2aWNlIgotCi1QQVJBTExFTF9NQUtFID0gIiIKLQotUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uMy1jb3JlIgotUkRFUEVORFNfJHtQTn0tZGV2ID0gIiIKLQotUEFDS0FHRV9CRUZPUkVfUE4gKz0gIiR7UE59LXV0aWxzIgotRklMRVNfJHtQTn0tdXRpbHMgPSAiJHtiaW5kaXJ9L2hvc3QgJHtiaW5kaXJ9L2RpZyIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9L2lzYy1jb25maWcuaCIKLUZJTEVTXyR7UE59ICs9ICIke3NiaW5kaXJ9L2dlbmVyYXRlLXJuZGMta2V5LnNoIgotCi1kb19pbnN0YWxsX3ByZXBlbmQoKSB7Ci0JIyBjbGVhbiBob3N0IHBhdGggaW4gaXNjLWNvbmZpZy5zaCBiZWZvcmUgdGhlIGhhcmRsaW5rIGNyZWF0ZWQKLQkjIGJ5ICJtYWtlIGluc3RhbGwiOgotCSMgICBiaW5kOS1jb25maWcgLT4gaXNjLWNvbmZpZy5zaAotCXNlZCAtaSAtZSAicywke1NUQUdJTkdfTElCRElSfSwke2xpYmRpcn0sIiAke0J9L2lzYy1jb25maWcuc2gKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0Jcm0gIiR7RH0ke2JpbmRpcn0vbnNsb29rdXAiCi0Jcm0gIiR7RH0ke21hbmRpcn0vbWFuMS9uc2xvb2t1cC4xIgotCXJtZGlyICIke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4iCi0Jcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9IgotCWluc3RhbGwgLWQgLW8gYmluZCAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vY2FjaGUvYmluZCIKLQlpbnN0YWxsIC1kICIke0R9JHtzeXNjb25mZGlyfS9iaW5kIgotCWluc3RhbGwgLWQgIiR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZCIKLQlpbnN0YWxsIC1tIDY0NCAke1N9L2NvbmYvKiAiJHtEfSR7c3lzY29uZmRpcn0vYmluZC8iCi0JaW5zdGFsbCAtbSA3NTUgIiR7U30vaW5pdC5kIiAiJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2JpbmQiCi0Jc2VkIC1pIC1lICcxcywjIS4qcHl0aG9uMywjISAvdXNyL2Jpbi9weXRob24zLCcgJHtEfSR7c2JpbmRpcn0vZG5zc2VjLWNvdmVyYWdlICR7RH0ke3NiaW5kaXJ9L2Ruc3NlYy1jaGVja2RzCi0KLQkjIEluc3RhbGwgc3lzdGVtZCByZWxhdGVkIGZpbGVzCi0JaW5zdGFsbCAtZCAke0R9JHtzYmluZGlyfQotCWluc3RhbGwgLW0gNzU1ICR7V09SS0RJUn0vZ2VuZXJhdGUtcm5kYy1rZXkuc2ggJHtEfSR7c2JpbmRpcn0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbmFtZWQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCXNlZCAtaSAtZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnIFwKLQkgICAgICAgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAotCSAgICAgICAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9uYW1lZC5zZXJ2aWNlCi0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9iaW5kOSAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0Ci19Ci0KLUNPTkZGSUxFU18ke1BOfSA9ICIgXAotCSR7c3lzY29uZmRpcn0vYmluZC9uYW1lZC5jb25mIFwKLQkke3N5c2NvbmZkaXJ9L2JpbmQvbmFtZWQuY29uZi5sb2NhbCBcCi0JJHtzeXNjb25mZGlyfS9iaW5kL25hbWVkLmNvbmYub3B0aW9ucyBcCi0JJHtzeXNjb25mZGlyfS9iaW5kL2RiLjAgXAotCSR7c3lzY29uZmRpcn0vYmluZC9kYi4xMjcgXAotCSR7c3lzY29uZmRpcn0vYmluZC9kYi5lbXB0eSBcCi0JJHtzeXNjb25mZGlyfS9iaW5kL2RiLmxvY2FsIFwKLQkke3N5c2NvbmZkaXJ9L2JpbmQvZGIucm9vdCBcCi0JIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmRfOS4xMC41LVAzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kXzkuMTAuNS1QMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzcyNGE4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kXzkuMTAuNS1QMy5iYgpAQCAtMCwwICsxLDExOSBAQAorU1VNTUFSWSA9ICJJU0MgSW50ZXJuZXQgRG9tYWluIE5hbWUgU2VydmVyIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5pc2Mub3JnL3N3L2JpbmQvIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCisKK0xJQ0VOU0UgPSAiSVNDICYgQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT1kYmE0NjUwNzQ0NjE5ODExOWJjZGUzMmE0ZmVhYWI0MyIKKworREVQRU5EUyA9ICJvcGVuc3NsIGxpYmNhcCIKKworU1JDX1VSSSA9ICJodHRwczovL2Z0cC5pc2Mub3JnL2lzYy9iaW5kOS8ke1BWfS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2NvbmYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbWFrZS1ldGMtaW5pdGQtYmluZC1zdG9wLXdvcmsucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZG9udC10ZXN0LW9uLWhvc3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZ2VuZXJhdGUtcm5kYy1rZXkuc2ggXAorICAgICAgICAgICBmaWxlOi8vbmFtZWQuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly9iaW5kOSBcCisgICAgICAgICAgIGZpbGU6Ly9pbml0LmQtYWRkLXN1cHBvcnQtZm9yLXJlYWQtb25seS1yb290ZnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYmluZC1jb25mZ2VuLWJ1aWxkLXVuaXguby1vbmNlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYnVpbGQtdXNlLXBrZy1jb25maWctdG8tZmluZC1saWJ4bWwyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2JpbmQtZW5zdXJlLXNlYXJjaGluZy1mb3ItanNvbi1oZWFkZXJzLXNlYXJjaGVzLXN5c3IucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1nZW4uYy1leHRlbmQtRElSTkFNRVNJWkUtZnJvbS0yNTYtdG8tNTEyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbGliLWRucy1nZW4uYy1maXgtdG9vLWxvbmctZXJyb3IucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vdXNlLXB5dGhvbjMtYW5kLWZpeC1pbnN0YWxsLWxpYi1wYXRoLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9mdHAuaXNjLm9yZy9pc2MvYmluZDkvIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiKD9QPHB2ZXI+OShcLlxkKykrKC1QXGQrKSopLyIKKworU1JDX1VSSVttZDVzdW1dID0gImQ3OWNhZmJkOWFjNzYyMzllZTUzMmRkODlkMDVjYzgzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhkN2U5NmI1YjBiYmFjN2I5MDBkNGM0YmJiODJlMDk1NmI0ZTUwOTQzM2M1ZmEzOTJiYjcyYTkyOWI5NjYwNmEiCisKK0VOQUJMRV9JUFY2ID0gIi0tZW5hYmxlLWlwdjY9JHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgJ3llcycsICdubycsIGQpfSIKK0VYVFJBX09FQ09ORiA9ICIgJHtFTkFCTEVfSVBWNn0gLS13aXRoLWxpYnRvb2wgLS1lbmFibGUtdGhyZWFkcyBcCisgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1kZXZwb2xsIC0tZW5hYmxlLWVwb2xsIC0td2l0aC1nb3N0PW5vIFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLWdzc2FwaT1ubyAtLXdpdGgtZWNkc2E9eWVzIFwKKyAgICAgICAgICAgICAgICAgLS1zeXNjb25mZGlyPSR7c3lzY29uZmRpcn0vYmluZCBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1vcGVuc3NsPSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKKyAgICAgICAgICAgICAgICIKKworaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgc3lzdGVtZCB1c2VyYWRkIHBrZ2NvbmZpZyBweXRob24zLWRpcgorCitleHBvcnQgUFlUSE9OX1NJVEVQQUNLQUdFU19ESVIKKworIyBQQUNLQUdFQ09ORklHcyByZWFkbGluZSBhbmQgbGliZWRpdCBzaG91bGQgTk9UIGJlIHNldCBhdCBzYW1lIHRpbWUKK1BBQ0tBR0VDT05GSUcgPz0gInJlYWRsaW5lIgorUEFDS0FHRUNPTkZJR1todHRwc3RhdHNdID0gIi0td2l0aC1saWJ4bWwyLC0td2l0aG91dC1saWJ4bWwyLGxpYnhtbDIiCitQQUNLQUdFQ09ORklHW3JlYWRsaW5lXSA9ICItLXdpdGgtcmVhZGxpbmU9LWxyZWFkbGluZSwscmVhZGxpbmUiCitQQUNLQUdFQ09ORklHW2xpYmVkaXRdID0gIi0td2l0aC1yZWFkbGluZT0tbGVkaXQsLGxpYmVkaXQiCitQQUNLQUdFQ09ORklHW3VyYW5kb21dID0gIi0td2l0aC1yYW5kb21kZXY9L2Rldi91cmFuZG9tLC0td2l0aC1yYW5kb21kZXY9L2Rldi9yYW5kb20sLCIKKworVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gLS1ob21lICR7bG9jYWxzdGF0ZWRpcn0vY2FjaGUvYmluZCAtLW5vLWNyZWF0ZS1ob21lIFwKKyAgICAgICAgICAgICAgICAgICAgICAgLS11c2VyLWdyb3VwIGJpbmQiCisKK0lOSVRTQ1JJUFRfTkFNRSA9ICJiaW5kIgorSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJuYW1lZC5zZXJ2aWNlIgorCitQQVJBTExFTF9NQUtFID0gIiIKKworUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uMy1jb3JlIgorUkRFUEVORFNfJHtQTn0tZGV2ID0gIiIKKworUEFDS0FHRV9CRUZPUkVfUE4gKz0gIiR7UE59LXV0aWxzIgorRklMRVNfJHtQTn0tdXRpbHMgPSAiJHtiaW5kaXJ9L2hvc3QgJHtiaW5kaXJ9L2RpZyIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9L2lzYy1jb25maWcuaCIKK0ZJTEVTXyR7UE59ICs9ICIke3NiaW5kaXJ9L2dlbmVyYXRlLXJuZGMta2V5LnNoICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgorCitkb19pbnN0YWxsX3ByZXBlbmQoKSB7CisJIyBjbGVhbiBob3N0IHBhdGggaW4gaXNjLWNvbmZpZy5zaCBiZWZvcmUgdGhlIGhhcmRsaW5rIGNyZWF0ZWQKKwkjIGJ5ICJtYWtlIGluc3RhbGwiOgorCSMgICBiaW5kOS1jb25maWcgLT4gaXNjLWNvbmZpZy5zaAorCXNlZCAtaSAtZSAicywke1NUQUdJTkdfTElCRElSfSwke2xpYmRpcn0sIiAke0J9L2lzYy1jb25maWcuc2gKK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJcm0gIiR7RH0ke2JpbmRpcn0vbnNsb29rdXAiCisJcm0gIiR7RH0ke21hbmRpcn0vbWFuMS9uc2xvb2t1cC4xIgorCXJtZGlyICIke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4iCisJcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9IgorCWluc3RhbGwgLWQgLW8gYmluZCAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vY2FjaGUvYmluZCIKKwlpbnN0YWxsIC1kICIke0R9JHtzeXNjb25mZGlyfS9iaW5kIgorCWluc3RhbGwgLWQgIiR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZCIKKwlpbnN0YWxsIC1tIDY0NCAke1N9L2NvbmYvKiAiJHtEfSR7c3lzY29uZmRpcn0vYmluZC8iCisJaW5zdGFsbCAtbSA3NTUgIiR7U30vaW5pdC5kIiAiJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2JpbmQiCisJc2VkIC1pIC1lICcxcywjIS4qcHl0aG9uMywjISAvdXNyL2Jpbi9weXRob24zLCcgJHtEfSR7c2JpbmRpcn0vZG5zc2VjLWNvdmVyYWdlICR7RH0ke3NiaW5kaXJ9L2Ruc3NlYy1jaGVja2RzCisKKwkjIEluc3RhbGwgc3lzdGVtZCByZWxhdGVkIGZpbGVzCisJaW5zdGFsbCAtZCAke0R9JHtzYmluZGlyfQorCWluc3RhbGwgLW0gNzU1ICR7V09SS0RJUn0vZ2VuZXJhdGUtcm5kYy1rZXkuc2ggJHtEfSR7c2JpbmRpcn0KKwlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbmFtZWQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCXNlZCAtaSAtZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnIFwKKwkgICAgICAgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAorCSAgICAgICAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9uYW1lZC5zZXJ2aWNlCisKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9iaW5kOSAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0CisKKwlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorCQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQKKwkJZWNobyAiZCAvcnVuL25hbWVkIDA3NTUgYmluZCBiaW5kIC0gLSIgPiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL2JpbmQuY29uZgorCWZpCisKKyAgICBybSAtZiAke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vaXNjLyoucHljCit9CisKK0NPTkZGSUxFU18ke1BOfSA9ICIgXAorCSR7c3lzY29uZmRpcn0vYmluZC9uYW1lZC5jb25mIFwKKwkke3N5c2NvbmZkaXJ9L2JpbmQvbmFtZWQuY29uZi5sb2NhbCBcCisJJHtzeXNjb25mZGlyfS9iaW5kL25hbWVkLmNvbmYub3B0aW9ucyBcCisJJHtzeXNjb25mZGlyfS9iaW5kL2RiLjAgXAorCSR7c3lzY29uZmRpcn0vYmluZC9kYi4xMjcgXAorCSR7c3lzY29uZmRpcn0vYmluZC9kYi5lbXB0eSBcCisJJHtzeXNjb25mZGlyfS9iaW5kL2RiLmxvY2FsIFwKKwkke3N5c2NvbmZkaXJ9L2JpbmQvZGIucm9vdCBcCisJIgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUuaW5jCmluZGV4IDg4Mjg3M2EuLjE4MDdhYTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUuaW5jCkBAIC02LDE2ICs2LDQxIEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xMmY4ODRkMmFlMWZmODdjMDllNWI3Y2NjMmM0Y2E3ZSBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9ZmI1MDRiNjdjNTAzMzFmYzc4NzM0ZmVkOTBmYjBlMDkgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL21haW4uYztiZWdpbmxpbmU9MTtlbmRsaW5lPTI0O21kNT05YmM1NGI5M2NkN2UxN2JmMDNmNTI1MTNmMzlmOTI2ZSIKLURFUEVORFMgPSAidWRldiBsaWJ1c2IgZGJ1cy1nbGliIGdsaWItMi4wIGxpYmNoZWNrIgorREVQRU5EUyA9ICJ1ZGV2IGRidXMtZ2xpYiBnbGliLTIuMCBsaWJjaGVjayIKIFBST1ZJREVTICs9ICJibHVlei1oY2lkdW1wIgogUlBST1ZJREVTXyR7UE59ICs9ICJibHVlei1oY2lkdW1wIgogCiBSQ09ORkxJQ1RTXyR7UE59ID0gImJsdWV6NCIKIAotUEFDS0FHRUNPTkZJRyA/Pz0gIm9iZXgtcHJvZmlsZXMgcmVhZGxpbmUiCitQQUNLQUdFQ09ORklHID8/PSAib2JleC1wcm9maWxlcyBcCisgICAgcmVhZGxpbmUgXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBkKX0gXAorICAgIGEyZHAtcHJvZmlsZXMgXAorICAgIGF2cmNwLXByb2ZpbGVzIFwKKyAgICBuZXR3b3JrLXByb2ZpbGVzIFwKKyAgICBoaWQtcHJvZmlsZXMgXAorICAgIGhvZy1wcm9maWxlcyBcCisgICAgdG9vbHMgXAorICAgIGRlcHJlY2F0ZWQgXAorIgogUEFDS0FHRUNPTkZJR1tvYmV4LXByb2ZpbGVzXSA9ICItLWVuYWJsZS1vYmV4LC0tZGlzYWJsZS1vYmV4LGxpYmljYWwiCi1QQUNLQUdFQ09ORklHW2V4cGVyaW1lbnRhbF0gPSAiLS1lbmFibGUtZXhwZXJpbWVudGFsLC0tZGlzYWJsZS1leHBlcmltZW50YWwsIgogUEFDS0FHRUNPTkZJR1tyZWFkbGluZV0gPSAiLS1lbmFibGUtY2xpZW50LC0tZGlzYWJsZS1jbGllbnQscmVhZGxpbmUsIgorUEFDS0FHRUNPTkZJR1t0ZXN0aW5nXSA9ICItLWVuYWJsZS10ZXN0aW5nLC0tZGlzYWJsZS10ZXN0aW5nIgorUEFDS0FHRUNPTkZJR1ttaWRpXSA9ICItLWVuYWJsZS1taWRpLC0tZGlzYWJsZS1taWRpLGFsc2EtbGliIgorUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLWVuYWJsZS1zeXN0ZW1kLC0tZGlzYWJsZS1zeXN0ZW1kIgorUEFDS0FHRUNPTkZJR1tjdXBzXSA9ICItLWVuYWJsZS1jdXBzLC0tZGlzYWJsZS1jdXBzLCxjdXBzIgorUEFDS0FHRUNPTkZJR1tuZmNdID0gIi0tZW5hYmxlLW5mYywtLWRpc2FibGUtbmZjIgorUEFDS0FHRUNPTkZJR1tzYXAtcHJvZmlsZXNdID0gIi0tZW5hYmxlLXNhcCwtLWRpc2FibGUtc2FwIgorUEFDS0FHRUNPTkZJR1thMmRwLXByb2ZpbGVzXSA9ICItLWVuYWJsZS1hMmRwLC0tZGlzYWJsZS1hMmRwIgorUEFDS0FHRUNPTkZJR1thdnJjcC1wcm9maWxlc10gPSAiLS1lbmFibGUtYXZyY3AsLS1kaXNhYmxlLWF2cmNwIgorUEFDS0FHRUNPTkZJR1tuZXR3b3JrLXByb2ZpbGVzXSA9ICItLWVuYWJsZS1uZXR3b3JrLC0tZGlzYWJsZS1uZXR3b3JrIgorUEFDS0FHRUNPTkZJR1toaWQtcHJvZmlsZXNdID0gIi0tZW5hYmxlLWhpZCwtLWRpc2FibGUtaGlkIgorUEFDS0FHRUNPTkZJR1tob2ctcHJvZmlsZXNdID0gIi0tZW5hYmxlLWhvZywtLWRpc2FibGUtaG9nIgorUEFDS0FHRUNPTkZJR1toZWFsdGgtcHJvZmlsZXNdID0gIi0tZW5hYmxlLWhlYWx0aCwtLWRpc2FibGUtaGVhbHRoIgorUEFDS0FHRUNPTkZJR1tzaXhheGlzXSA9ICItLWVuYWJsZS1zaXhheGlzLC0tZGlzYWJsZS1zaXhheGlzIgorUEFDS0FHRUNPTkZJR1t0b29sc10gPSAiLS1lbmFibGUtdG9vbHMsLS1kaXNhYmxlLXRvb2xzIgorUEFDS0FHRUNPTkZJR1t0aHJlYWRzXSA9ICItLWVuYWJsZS10aHJlYWRzLC0tZGlzYWJsZS10aHJlYWRzIgorUEFDS0FHRUNPTkZJR1tkZXByZWNhdGVkXSA9ICItLWVuYWJsZS1kZXByZWNhdGVkLC0tZGlzYWJsZS1kZXByZWNhdGVkIgogCiBTUkNfVVJJID0gIlwKICAgICAke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L2JsdWV0b290aC9ibHVlei0ke1BWfS50YXIueHogXApAQCAtMjQsNiArNDksNyBAQAogICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAogICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICcnLCAnZmlsZTovLzAwMDEtQWxsb3ctdXNpbmctb2JleGQtd2l0aG91dC1zeXN0ZW1kLWluLXRoZS11c2VyLXNlc3Npby5wYXRjaCcsIGQpfSBcCiAgICAgZmlsZTovLzAwMDEtdGVzdHMtYWRkLWEtdGFyZ2V0LWZvci1idWlsZGluZy10ZXN0cy13aXRob3V0LXJ1bm5pbi5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtaGNpYXR0YWNoLWJjbTQzeHgtZml4LXRoZS1kZWxheS10aW1lci1mb3ItZmlybXdhcmUtZC5wYXRjaCBcCiAgICAgZmlsZTovL2N2ZS0yMDE3LTEwMDAyNTAucGF0Y2ggXAogIgogUyA9ICIke1dPUktESVJ9L2JsdWV6LSR7UFZ9IgpAQCAtMzMsMjEgKzU5LDIwIEBACiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgc3lzdGVtZCB1cGRhdGUtcmMuZCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgcHRlc3QKIAogRVhUUkFfT0VDT05GID0gIlwKLSAgLS1lbmFibGUtdG9vbHMgXAotICAtLWRpc2FibGUtY3VwcyBcCiAgIC0tZW5hYmxlLXRlc3QgXAogICAtLWVuYWJsZS1kYXRhZmlsZXMgXAotICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnLS1lbmFibGUtc3lzdGVtZCcsICctLWRpc2FibGUtc3lzdGVtZCcsIGQpfSBcCiAgIC0tZW5hYmxlLWxpYnJhcnkgXAogIgogCiAjIGJsdWV6NSBidWlsZHMgYSBsYXJnZSBudW1iZXIgb2YgdXNlZnVsIHV0aWxpdGllcyBidXQgZG9lcyBub3QKICMgaW5zdGFsbCB0aGVtLiAgU3BlY2lmeSB3aGljaCBvbmVzIHdlIHdhbnQgcHV0IGludG8gJHtQTn0tbm9pbnN0LXRvb2xzLgogTk9JTlNUX1RPT0xTX1JFQURMSU5FID8/PSAiIgotTk9JTlNUX1RPT0xTX0VYUEVSSU1FTlRBTCA/Pz0gIiIKK05PSU5TVF9UT09MU19URVNUSU5HID8/PSAiIgorTk9JTlNUX1RPT0xTX0JUID8/PSAiIgogTk9JTlNUX1RPT0xTID0gIiBcCiAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncmVhZGxpbmUnLCAnJHtOT0lOU1RfVE9PTFNfUkVBRExJTkV9JywgJycsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZXhwZXJpbWVudGFsJywgJyR7Tk9JTlNUX1RPT0xTX0VYUEVSSU1FTlRBTH0nLCAnJywgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd0ZXN0aW5nJywgJyR7Tk9JTlNUX1RPT0xTX1RFU1RJTkd9JywgJycsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndG9vbHMnLCAnJHtOT0lOU1RfVE9PTFNfQlR9JywgJycsIGQpfSBcCiAiCiAKIGRvX2luc3RhbGxfYXBwZW5kKCkgewpAQCAtNTUsMzggKzgwLDM2IEBACiAJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaW5pdCAke0R9JHtJTklUX0RfRElSfS9ibHVldG9vdGgKIAogCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vYmx1ZXRvb3RoLwotCWlmIFsgLWYgJHtTfS9wcm9maWxlcy9hdWRpby9hdWRpby5jb25mIF07IHRoZW4KLQkgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vcHJvZmlsZXMvYXVkaW8vYXVkaW8uY29uZiAke0R9LyR7c3lzY29uZmRpcn0vYmx1ZXRvb3RoLwotCWZpCiAJaWYgWyAtZiAke1N9L3Byb2ZpbGVzL25ldHdvcmsvbmV0d29yay5jb25mIF07IHRoZW4KLQkgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vcHJvZmlsZXMvbmV0d29yay9uZXR3b3JrLmNvbmYgJHtEfS8ke3N5c2NvbmZkaXJ9L2JsdWV0b290aC8KKwkJaW5zdGFsbCAtbSAwNjQ0ICR7U30vcHJvZmlsZXMvbmV0d29yay9uZXR3b3JrLmNvbmYgJHtEfS8ke3N5c2NvbmZkaXJ9L2JsdWV0b290aC8KIAlmaQogCWlmIFsgLWYgJHtTfS9wcm9maWxlcy9pbnB1dC9pbnB1dC5jb25mIF07IHRoZW4KLQkgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vcHJvZmlsZXMvaW5wdXQvaW5wdXQuY29uZiAke0R9LyR7c3lzY29uZmRpcn0vYmx1ZXRvb3RoLworCQlpbnN0YWxsIC1tIDA2NDQgJHtTfS9wcm9maWxlcy9pbnB1dC9pbnB1dC5jb25mICR7RH0vJHtzeXNjb25mZGlyfS9ibHVldG9vdGgvCiAJZmkKIAotICBpZiBbIC1mICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvYmx1ZXRvb3RoIF07IHRoZW4KLSAgICBzZWQgLWkgLWUgJ3MjQExJQkVYRUNESVJAIyR7bGliZXhlY2Rpcn0jZycgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZC9ibHVldG9vdGgKLSAgZmkKKwlpZiBbIC1mICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvYmx1ZXRvb3RoIF07IHRoZW4KKwkJc2VkIC1pIC1lICdzI0BMSUJFWEVDRElSQCMke2xpYmV4ZWNkaXJ9I2cnICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvYmx1ZXRvb3RoCisJZmkKIAogCSMgSW5zdGFsbCBkZXNpcmVkIHRvb2xzIHRoYXQgdXBzdHJlYW0gbGVhdmVzIGluIGJ1aWxkIGFyZWEKLSAgICAgICAgZm9yIGYgaW4gJHtOT0lOU1RfVE9PTFN9IDsgZG8KLQkgICAgaW5zdGFsbCAtbSA3NTUgJHtCfS8kZiAke0R9LyR7YmluZGlyfQorCWZvciBmIGluICR7Tk9JTlNUX1RPT0xTfSA7IGRvCisJCWluc3RhbGwgLW0gNzU1ICR7Qn0vJGYgJHtEfS8ke2JpbmRpcn0KIAlkb25lCiAKLSAgICAgICAgIyBQYXRjaCBweXRob24gdG9vbHMgdG8gdXNlIFB5dGhvbiAzOyB0aGV5IHNob3VsZCBiZSBzb3VyY2UgY29tcGF0aWJsZSwgYnV0Ci0gICAgICAgICMgc3RpbGwgcmVmZXIgdG8gUHl0aG9uIDIgaW4gdGhlIHNoZWJhbmcKLSAgICAgICAgc2VkIC1pIC1lICcxcywjIS4qcHl0aG9uLiosIyEke2JpbmRpcn0vcHl0aG9uMywnICR7RH0ke2xpYmRpcn0vYmx1ZXovdGVzdC8qCisJIyBQYXRjaCBweXRob24gdG9vbHMgdG8gdXNlIFB5dGhvbiAzOyB0aGV5IHNob3VsZCBiZSBzb3VyY2UgY29tcGF0aWJsZSwgYnV0CisJIyBzdGlsbCByZWZlciB0byBQeXRob24gMiBpbiB0aGUgc2hlYmFuZworCXNlZCAtaSAtZSAnMXMsIyEuKnB5dGhvbi4qLCMhJHtiaW5kaXJ9L3B5dGhvbjMsJyAke0R9JHtsaWJkaXJ9L2JsdWV6L3Rlc3QvKgogfQogCi1BTExPV19FTVBUWV9saWJhc291bmQtbW9kdWxlLWJsdWV6ID0gIjEiCi1QQUNLQUdFUyA9KyAibGliYXNvdW5kLW1vZHVsZS1ibHVleiAke1BOfS10ZXN0dG9vbHMgJHtQTn0tb2JleCAke1BOfS1ub2luc3QtdG9vbHMiCitQQUNLQUdFUyA9KyAiJHtQTn0tdGVzdHRvb2xzICR7UE59LW9iZXggJHtQTn0tbm9pbnN0LXRvb2xzIgogCi1GSUxFU19saWJhc291bmQtbW9kdWxlLWJsdWV6ID0gIiR7bGliZGlyfS9hbHNhLWxpYi9saWIqLnNvICR7ZGF0YWRpcn0vYWxzYSIKLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vYmx1ZXRvb3RoL3BsdWdpbnMvKi5zbyAke3N5c3RlbWRfdW5pdGRpcn0vICR7ZGF0YWRpcn0vZGJ1cy0xIgotRklMRVNfJHtQTn0tZGV2ICs9ICJcCi0gICR7bGliZGlyfS9ibHVldG9vdGgvcGx1Z2lucy8qLmxhIFwKLSAgJHtsaWJkaXJ9L2Fsc2EtbGliLyoubGEgXAorRklMRVNfJHtQTn0gKz0gIiBcCisgICAgJHtsaWJkaXJ9L2JsdWV0b290aC9wbHVnaW5zLyouc28gXAorICAgICR7c3lzdGVtZF91bml0ZGlyfS8gJHtkYXRhZGlyfS9kYnVzLTEgXAorICAgICR7bGliZGlyfS9jdXBzIFwKKyIKK0ZJTEVTXyR7UE59LWRldiArPSAiIFwKKyAgICAke2xpYmRpcn0vYmx1ZXRvb3RoL3BsdWdpbnMvKi5sYSBcCiAiCiAKIEZJTEVTXyR7UE59LW9iZXggPSAiJHtsaWJleGVjZGlyfS9ibHVldG9vdGgvb2JleGQgXApAQCAtMTA5LDE3ICsxMzIsMTcgQEAKIAogUkRFUEVORFNfJHtQTn0tdGVzdHRvb2xzICs9ICJweXRob24zIHB5dGhvbjMtZGJ1cyBweXRob24zLXB5Z29iamVjdCIKIAotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImJsdWV0b290aC5zZXJ2aWNlIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3N5c3RlbWQnLCAnYmx1ZXRvb3RoLnNlcnZpY2UnLCAnJywgZCl9IgogSU5JVFNDUklQVF9QQUNLQUdFUyA9ICIke1BOfSIKIElOSVRTQ1JJUFRfTkFNRV8ke1BOfSA9ICJibHVldG9vdGgiCiAKIEVYQ0xVREVfRlJPTV9XT1JMRCA9ICIxIgogCiBkb19jb21waWxlX3B0ZXN0KCkgewotICAgICAgICBvZV9ydW5tYWtlIGJ1aWxkdGVzdHMKKwlvZV9ydW5tYWtlIGJ1aWxkdGVzdHMKIH0KIAogZG9faW5zdGFsbF9wdGVzdCgpIHsKLSAgICAgICAgY3AgLXIgJHtCfS91bml0LyAke0R9JHtQVEVTVF9QQVRIfQotICAgICAgICBybSAtZiAke0R9JHtQVEVTVF9QQVRIfS91bml0LyoubworCWNwIC1yICR7Qn0vdW5pdC8gJHtEfSR7UFRFU1RfUEFUSH0KKwlybSAtZiAke0R9JHtQVEVTVF9QQVRIfS91bml0LyoubwogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS8wMDAxLWhjaWF0dGFjaC1iY200M3h4LWZpeC10aGUtZGVsYXktdGltZXItZm9yLWZpcm13YXJlLWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1LzAwMDEtaGNpYXR0YWNoLWJjbTQzeHgtZml4LXRoZS1kZWxheS10aW1lci1mb3ItZmlybXdhcmUtZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Njc5NDM4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS8wMDAxLWhjaWF0dGFjaC1iY200M3h4LWZpeC10aGUtZGVsYXktdGltZXItZm9yLWZpcm13YXJlLWQucGF0Y2gKQEAgLTAsMCArMSwzNiBAQAorRnJvbSAzYjM0MWZiNDIxZWY2MWRiNzc4MmJmMTMxNGVjNjkzODI4NDY3ZGU5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5keSBEdWFuIDxmdWdhbmcuZHVhbkBueHAuY29tPgorRGF0ZTogV2VkLCAyMyBOb3YgMjAxNiAxNzoxMjoxMiArMDgwMAorU3ViamVjdDogW1BBVENIXSBoY2lhdHRhY2g6IGJjbTQzeHg6IGZpeCB0aGUgZGVsYXkgdGltZXIgZm9yIGZpcm13YXJlIGRvd25sb2FkCisKK0Zyb20gdGhlIGxvZyBpbiAuYmNtNDN4eF9sb2FkX2Zpcm13YXJlKCk6CisgICAgICAgIC8qIFdhaXQgNTBtcyB0byBsZXQgdGhlIGZpcm13YXJlIHBsYWNlZCBpbiBkb3dubG9hZCBtb2RlICovCisgICAgICAgIG5hbm9zbGVlcCgmdG1fbW9kZSwgTlVMTCk7CisKK0J1dCB0aW1lc3BlYyB0bV9tb2RlIGlzIHJlYWwgaXMgNTB1cy4gQ29ycmVjdCB0aGUgZGVsYXllZCB0aW1lciBjb3VudC4KKworVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZCBbaHR0cHM6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2JsdWV0b290aC9ibHVlei5naXQvY29tbWl0Lz9pZD03NjI1NWY3MzJkNjhhZWYyYjkwZDM2ZDljN2JlNTFhOWUxNzM5Y2U3XQorCitTaWduZWQtb2ZmLWJ5OiBGdWdhbmcgRHVhbiA8ZnVnYW5nLmR1YW5AbnhwLmNvbT4KKy0tLQorIHRvb2xzL2hjaWF0dGFjaF9iY200M3h4LmMgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvdG9vbHMvaGNpYXR0YWNoX2JjbTQzeHguYyBiL3Rvb2xzL2hjaWF0dGFjaF9iY200M3h4LmMKK2luZGV4IDgxZjM4Y2IuLmFjMWIzYzEgMTAwNjQ0CistLS0gYS90b29scy9oY2lhdHRhY2hfYmNtNDN4eC5jCisrKysgYi90b29scy9oY2lhdHRhY2hfYmNtNDN4eC5jCitAQCAtMjI4LDggKzIyOCw4IEBAIHN0YXRpYyBpbnQgYmNtNDN4eF9zZXRfc3BlZWQoaW50IGZkLCBzdHJ1Y3QgdGVybWlvcyAqdGksIHVpbnQzMl90IHNwZWVkKQorIHN0YXRpYyBpbnQgYmNtNDN4eF9sb2FkX2Zpcm13YXJlKGludCBmZCwgY29uc3QgY2hhciAqZncpCisgeworIAl1bnNpZ25lZCBjaGFyIGNtZFtdID0geyBIQ0lfQ09NTUFORF9QS1QsIDB4MmUsIDB4ZmMsIDB4MDAgfTsKKy0Jc3RydWN0IHRpbWVzcGVjIHRtX21vZGUgPSB7IDAsIDUwMDAwIH07CistCXN0cnVjdCB0aW1lc3BlYyB0bV9yZWFkeSA9IHsgMCwgMjAwMDAwMCB9OworKwlzdHJ1Y3QgdGltZXNwZWMgdG1fbW9kZSA9IHsgMCwgNTAwMDAwMDAgfTsKKysJc3RydWN0IHRpbWVzcGVjIHRtX3JlYWR5ID0geyAwLCAyMDAwMDAwMDAgfTsKKyAJdW5zaWduZWQgY2hhciByZXNwW0NDX01JTl9TSVpFXTsKKyAJdW5zaWduZWQgY2hhciB0eF9idWZbMTAyNF07CisgCWludCBsZW4sIGZkX2Z3LCBuOworLS0gCisxLjkuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1L2luaXQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1L2luaXQKaW5kZXggNDg5ZTliOS4uZDc5NzJmMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS9pbml0CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvaW5pdApAQCAtMjEsMjUgKzIxLDIyIEBACiAKIGNhc2UgJDEgaW4KICAgc3RhcnQpCi0JZWNobyAiU3RhcnRpbmcgJERFU0MiCi0KKwllY2hvIC1uICJTdGFydGluZyAkREVTQzogIgogCWlmIHRlc3QgIiRCTFVFVE9PVEhfRU5BQkxFRCIgPSAwOyB0aGVuCi0JCWVjaG8gImRpc2FibGVkLiBzZWUgL2V0Yy9kZWZhdWx0L2JsdWV0b290aCIKKwkJZWNobyAiZGlzYWJsZWQgKHNlZSAvZXRjL2RlZmF1bHQvYmx1ZXRvb3RoKS4iCiAJCWV4aXQgMAogCWZpCi0KIAlzdGFydC1zdG9wLWRhZW1vbiAtLXN0YXJ0IC0tYmFja2dyb3VuZCAkU1NEX09QVElPTlMKLQllY2hvICIke0RBRU1PTiMjKi99IgotCisJZWNobyAiJHtEQUVNT04jIyovfS4iCiAgIDs7CiAgIHN0b3ApCi0JZWNobyAiU3RvcHBpbmcgJERFU0MiCisJZWNobyAtbiAiU3RvcHBpbmcgJERFU0M6ICIKIAlpZiB0ZXN0ICIkQkxVRVRPT1RIX0VOQUJMRUQiID0gMDsgdGhlbgotCQllY2hvICJkaXNhYmxlZC4iCisJCWVjaG8gImRpc2FibGVkIChzZWUgL2V0Yy9kZWZhdWx0L2JsdWV0b290aCkuIgogCQlleGl0IDAKIAlmaQogCXN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RvcCAkU1NEX09QVElPTlMKLQllY2hvICIke0RBRU1PTn0iCisJZWNobyAiJHtEQUVNT04jIyovfS4iCiAgIDs7CiAgIHJlc3RhcnR8Zm9yY2UtcmVsb2FkKQogCSQwIHN0b3AKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejVfNS40My5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejVfNS40My5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTEwYjgyZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1XzUuNDMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi1yZXF1aXJlIGJsdWV6NS5pbmMKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gImJsdWV6NSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjY5OGRlZjg4ZGY5Njg0MGRmYmIwODU4YmI2ZDczMzUwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE2YzljMDVkMmExZGE2NDRjZTM1NzBkOTc1YWRhMzY0M2QyZTYwYzAwN2E5NTViYWMwOWMwYTBlZmViNThkMTUiCi0KLSMgbm9pbnN0IHByb2dyYW1zIGluIE1ha2VmaWxlLnRvb2xzIHRoYXQgYXJlIGNvbmRpdGlvbmFsIG9uIFJFQURMSU5FCi0jIHN1cHBvcnQKLU5PSU5TVF9UT09MU19SRUFETElORSA/PSAiIFwKLSAgICBhdHRyaWIvZ2F0dHRvb2wgXAotICAgIHRvb2xzL29iZXgtY2xpZW50LXRvb2wgXAotICAgIHRvb2xzL29iZXgtc2VydmVyLXRvb2wgXAotICAgIHRvb2xzL2JsdWV0b290aC1wbGF5ZXIgXAotICAgIHRvb2xzL29iZXhjdGwgXAotICAgIHRvb2xzL2J0bWdtdCBcCi0iCi0KLSMgbm9pbnN0IHByb2dyYW1zIGluIE1ha2VmaWxlLnRvb2xzIHRoYXQgYXJlIGNvbmRpdGlvbmFsIG9uIEVYUEVSSU1FTlRBTAotIyBzdXBwb3J0Ci1OT0lOU1RfVE9PTFNfRVhQRVJJTUVOVEFMID89ICIgXAotICAgIGVtdWxhdG9yL2J0dmlydCBcCi0gICAgZW11bGF0b3IvYjFlZSBcCi0gICAgZW11bGF0b3IvaGZwIFwKLSAgICB0b29scy8zZHNwIFwKLSAgICB0b29scy9tZ210LXRlc3RlciBcCi0gICAgdG9vbHMvZ2FwLXRlc3RlciBcCi0gICAgdG9vbHMvbDJjYXAtdGVzdGVyIFwKLSAgICB0b29scy9zY28tdGVzdGVyIFwKLSAgICB0b29scy9zbXAtdGVzdGVyIFwKLSAgICB0b29scy9oY2ktdGVzdGVyIFwKLSAgICB0b29scy9yZmNvbW0tdGVzdGVyIFwKLSAgICB0b29scy9iZGFkZHIgXAotICAgIHRvb2xzL2F2aW5mbyBcCi0gICAgdG9vbHMvYXZ0ZXN0IFwKLSAgICB0b29scy9zY290ZXN0IFwKLSAgICB0b29scy9hbXB0ZXN0IFwKLSAgICB0b29scy9od2RiIFwKLSAgICB0b29scy9oY2lldmVudG1hc2sgXAotICAgIHRvb2xzL2hjaXNlY2ZpbHRlciBcCi0gICAgdG9vbHMvYnRpbmZvIFwKLSAgICB0b29scy9idGF0dGFjaCBcCi0gICAgdG9vbHMvYnRzbm9vcCBcCi0gICAgdG9vbHMvYnRwcm94eSBcCi0gICAgdG9vbHMvYnRpb3Rlc3QgXAotICAgIHRvb2xzL21jYXB0ZXN0IFwKLSAgICB0b29scy9jbHRlc3QgXAotICAgIHRvb2xzL29vYnRlc3QgXAotICAgIHRvb2xzL3NlcTJic2VxIFwKLSAgICB0b29scy9pYmVhY29uIFwKLSAgICB0b29scy9idGdhdHQtY2xpZW50IFwKLSAgICB0b29scy9idGdhdHQtc2VydmVyIFwKLSAgICB0b29scy9nYXR0LXNlcnZpY2UgXAotICAgIHByb2ZpbGVzL2lhcC9pYXBkIFwKLSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejVfNS40Ni5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejVfNS40Ni5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMWY4NTg3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NV81LjQ2LmJiCkBAIC0wLDAgKzEsNjkgQEAKK3JlcXVpcmUgYmx1ZXo1LmluYworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAiYmx1ZXo1IgorCitTUkNfVVJJW21kNXN1bV0gPSAiOTEzZjM1ZDZmYTRjYTU3NzJjNTNhZGI5MzZiZjE5NDciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGRhYjNkMzgzN2MxYWZiOGFlMjI4YTk0YmExNzcwOWE0NjUwYmQ0ZGIyNDIxMWI2NzcxYWI3MzVjODkwOGUyOCIKKworIyBub2luc3QgcHJvZ3JhbXMgaW4gTWFrZWZpbGUudG9vbHMgdGhhdCBhcmUgY29uZGl0aW9uYWwgb24gUkVBRExJTkUKKyMgc3VwcG9ydAorTk9JTlNUX1RPT0xTX1JFQURMSU5FID89ICIgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2RlcHJlY2F0ZWQnLCAnYXR0cmliL2dhdHR0b29sJywgJycsIGQpfSBcCisgICAgdG9vbHMvb2JleC1jbGllbnQtdG9vbCBcCisgICAgdG9vbHMvb2JleC1zZXJ2ZXItdG9vbCBcCisgICAgdG9vbHMvYmx1ZXRvb3RoLXBsYXllciBcCisgICAgdG9vbHMvb2JleGN0bCBcCisgICAgdG9vbHMvYnRtZ210IFwKKyIKKworIyBub2luc3QgcHJvZ3JhbXMgaW4gTWFrZWZpbGUudG9vbHMgdGhhdCBhcmUgY29uZGl0aW9uYWwgb24gVEVTVElORworIyBzdXBwb3J0CitOT0lOU1RfVE9PTFNfVEVTVElORyA/PSAiIFwKKyAgICBlbXVsYXRvci9idHZpcnQgXAorICAgIGVtdWxhdG9yL2IxZWUgXAorICAgIGVtdWxhdG9yL2hmcCBcCisgICAgcGVyaXBoZXJhbC9idHNlbnNvciBcCisgICAgdG9vbHMvM2RzcCBcCisgICAgdG9vbHMvbWdtdC10ZXN0ZXIgXAorICAgIHRvb2xzL2dhcC10ZXN0ZXIgXAorICAgIHRvb2xzL2wyY2FwLXRlc3RlciBcCisgICAgdG9vbHMvc2NvLXRlc3RlciBcCisgICAgdG9vbHMvc21wLXRlc3RlciBcCisgICAgdG9vbHMvaGNpLXRlc3RlciBcCisgICAgdG9vbHMvcmZjb21tLXRlc3RlciBcCisgICAgdG9vbHMvYm5lcC10ZXN0ZXIgXAorICAgIHRvb2xzL3VzZXJjaGFuLXRlc3RlciBcCisiCisKKyMgbm9pbnN0IHByb2dyYW1zIGluIE1ha2VmaWxlLnRvb2xzIHRoYXQgYXJlIGNvbmRpdGlvbmFsIG9uIFRPT0xTCisjIHN1cHBvcnQKK05PSU5TVF9UT09MU19CVCA/PSAiIFwKKyAgICB0b29scy9iZGFkZHIgXAorICAgIHRvb2xzL2F2aW5mbyBcCisgICAgdG9vbHMvYXZ0ZXN0IFwKKyAgICB0b29scy9zY290ZXN0IFwKKyAgICB0b29scy9hbXB0ZXN0IFwKKyAgICB0b29scy9od2RiIFwKKyAgICB0b29scy9oY2lldmVudG1hc2sgXAorICAgIHRvb2xzL2hjaXNlY2ZpbHRlciBcCisgICAgdG9vbHMvYnRpbmZvIFwKKyAgICB0b29scy9idHNub29wIFwKKyAgICB0b29scy9idHByb3h5IFwKKyAgICB0b29scy9idGlvdGVzdCBcCisgICAgdG9vbHMvYm5lcHRlc3QgXAorICAgIHRvb2xzL21jYXB0ZXN0IFwKKyAgICB0b29scy9jbHRlc3QgXAorICAgIHRvb2xzL29vYnRlc3QgXAorICAgIHRvb2xzL2FkdnRlc3QgXAorICAgIHRvb2xzL3NlcTJic2VxIFwKKyAgICB0b29scy9ub2tmdyBcCisgICAgdG9vbHMvY3JlYXRlLWltYWdlIFwKKyAgICB0b29scy9lZGR5c3RvbmUgXAorICAgIHRvb2xzL2liZWFjb24gXAorICAgIHRvb2xzL2J0Z2F0dC1jbGllbnQgXAorICAgIHRvb2xzL2J0Z2F0dC1zZXJ2ZXIgXAorICAgIHRvb2xzL3Rlc3QtcnVubmVyIFwKKyAgICB0b29scy9jaGVjay1zZWxmdGVzdCBcCisgICAgdG9vbHMvZ2F0dC1zZXJ2aWNlIFwKKyAgICBwcm9maWxlcy9pYXAvaWFwZCBcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4uaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuLmluYwppbmRleCA2NGE1NDE4Li4yYjAzZjljIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbi5pbmMKQEAgLTEzLDkgKzEzLDkgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTEyZjg4NGQyYWUxZmY4N2MwOWU1YjdjY2MyYzRjYTdlIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9tYWluLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMDttZDU9NDg2YTI3OWE2YWIwYzhkMTUyYmNkYTNhNWI1ZWRjMzYiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBzeXN0ZW1kIHVwZGF0ZS1yYy5kIGJsdWV0b290aAoraW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHN5c3RlbWQgdXBkYXRlLXJjLmQgYmx1ZXRvb3RoIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKIAotREVQRU5EUyAgPSAiZGJ1cyBnbGliLTIuMCBwcHAgaXB0YWJsZXMgcmVhZGxpbmUiCitERVBFTkRTICA9ICJkYnVzIGdsaWItMi4wIHBwcCByZWFkbGluZSIKIAogSU5DX1BSID0gInIyMCIKIApAQCAtMzMsNiArMzMsNyBAQAogUEFDS0FHRUNPTkZJRyA/Pz0gIndpc3ByIFwKICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICczZyBzeXN0ZW1kIHdpZmknLCBkKX0gXAogICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXRvb3RoJywgJ2JsdWV6JywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgaXB0YWJsZXMgXAogIgogCiAjIElmIHlvdSB3YW50IENvbm5NYW4gdG8gc3VwcG9ydCBWUE4sIGFkZCBmb2xsb3dpbmcgc3RhdGVtZW50IGludG8KQEAgLTUwLDYgKzUxLDggQEAKIFBBQ0tBR0VDT05GSUdbcHB0cF0gPSAiLS1lbmFibGUtcHB0cCAtLXdpdGgtcHB0cD0ke3NiaW5kaXJ9L3BwdHAsLS1kaXNhYmxlLXBwdHAsLHBwdHAtbGludXgiCiAjIFdJU1ByIHN1cHBvcnQgZm9yIGxvZ2dpbmcgaW50byBob3RzcG90cywgcmVxdWlyZXMgVExTCiBQQUNLQUdFQ09ORklHW3dpc3ByXSA9ICItLWVuYWJsZS13aXNwciwtLWRpc2FibGUtd2lzcHIsZ251dGxzLCIKK1BBQ0tBR0VDT05GSUdbbmZ0YWJsZXNdID0gIi0td2l0aC1maXJld2FsbD1uZnRhYmxlcyAsLGxpYm1ubCBsaWJuZnRubCwsa2VybmVsLW1vZHVsZS1uZi10YWJsZXMtaXB2NCBrZXJuZWwtbW9kdWxlLW5mdC1jaGFpbi1uYXQtaXB2NCBrZXJuZWwtbW9kdWxlLW5mdC1jaGFpbi1yb3V0ZS1pcHY0IGtlcm5lbC1tb2R1bGUtbmZ0LW1ldGEga2VybmVsLW1vZHVsZS1uZnQtbWFzcS1pcHY0IGtlcm5lbC1tb2R1bGUtbmZ0LW5hdCIKK1BBQ0tBR0VDT05GSUdbaXB0YWJsZXNdID0gIi0td2l0aC1maXJld2FsbD1pcHRhYmxlcyAsLGlwdGFibGVzLGlwdGFibGVzIgogCiBJTklUU0NSSVBUX05BTUUgPSAiY29ubm1hbiIKIElOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDA1IDUgMiAzIC4gc3RvcCAyMiAwIDEgNiAuIgpAQCAtNjYsNiArNjksMTEgQEAKIFNZU1RFTURfU0VSVklDRV8ke1BOfS12cG4gPSAiY29ubm1hbi12cG4uc2VydmljZSIKIFNZU1RFTURfU0VSVklDRV8ke1BOfS13YWl0LW9ubGluZSA9ICJjb25ubWFuLXdhaXQtb25saW5lLnNlcnZpY2UiCiAKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKK0FMVEVSTkFUSVZFXyR7UE59ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywncmVzb2x2LWNvbmYnLCcnLGQpfSIKK0FMVEVSTkFUSVZFX1RBUkdFVFtyZXNvbHYtY29uZl0gPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCcke3N5c2NvbmZkaXJ9L3Jlc29sdi1jb25mLmNvbm5tYW4nLCcnLGQpfSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtyZXNvbHYtY29uZl0gPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCcke3N5c2NvbmZkaXJ9L3Jlc29sdi5jb25mJywnJyxkKX0iCisKIGRvX2luc3RhbGxfYXBwZW5kKCkgewogCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN2aW5pdCcsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCiAJCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCkBAIC04Niw2ICs5NCwxMSBAQAogCSMgQXV0b21ha2UgMS4xMiB3b24ndCBpbnN0YWxsIGVtcHR5IGRpcmVjdG9yaWVzLCBidXQgd2UgbmVlZCB0aGUKIAkjIHBsdWdpbnMgZGlyZWN0b3J5IHRvIGJlIHByZXNlbnQgZm9yIG93bmVyc2hpcAogCW1rZGlyIC1wICR7RH0ke2xpYmRpcn0vY29ubm1hbi9wbHVnaW5zCisKKyAgICAjIEZvciByZWFkLW9ubHkgZmlsZXN5c3RlbSwgZG8gbm90IGNyZWF0ZSBsaW5rcyBkdXJpbmcgYm9vdHVwCisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgorICAgICAgICBsbiAtc2YgLi4vcnVuL2Nvbm5tYW4vcmVzb2x2LmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vcmVzb2x2LWNvbmYuY29ubm1hbgorICAgIGZpCiB9CiAKICMgVGhlc2UgdXNlZCB0byBiZSBwbHVnaW5zLCBidXQgbm93IHRoZXkgYXJlIGNvcmUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbi8wMDAxLUZpeC1jb21waWxlLW9uLW11c2wtd2l0aC1rZXJuZWwtNC45LWhlYWRlcnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vMDAwMS1GaXgtY29tcGlsZS1vbi1tdXNsLXdpdGgta2VybmVsLTQuOS1oZWFkZXJzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZjNiODZkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbi8wMDAxLUZpeC1jb21waWxlLW9uLW11c2wtd2l0aC1rZXJuZWwtNC45LWhlYWRlcnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi1Gcm9tIGM4YmZhZDRlZTlkMmM1MDVjMDBjY2JiOGIyMTM5NTQzYjVhZDZmY2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotRGF0ZTogTW9uLCAyMyBKYW4gMjAxNyAxNzo0MTozOSArMDIwMAotU3ViamVjdDogW1BBVENIXSBGaXggY29tcGlsZSBvbiBtdXNsIHdpdGgga2VybmVsIDQuOSBoZWFkZXJzCi0KLUtlcm5lbCBoZWFkZXJzIGJyZWFrIHdoZW4gbXVzbCBkZWZpbmVzIElGRl9MT1dFUl9VUC4gV2hpbGUKLXdhaXRpbmcgZm9yIG1vcmUgcHJvcGVyIGZpeCBpbiBtdXNsLCBhZGQgYSBoYWNrIHRvIGNvbm5tYW4uCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbV29ya2Fyb3VuZF0KLVNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci0tLS0KLSBzcmMvNnRvNC5jICAgICB8IDQgKysrKwotIHNyYy9maXJld2FsbC5jIHwgNCArKysrCi0gc3JjL2lwdGFibGVzLmMgfCA0ICsrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3NyYy82dG80LmMgYi9zcmMvNnRvNC5jCi1pbmRleCA3MWEyODgyLi4xOTM4YWZiIDEwMDY0NAotLS0tIGEvc3JjLzZ0bzQuYwotKysrIGIvc3JjLzZ0bzQuYwotQEAgLTI0LDYgKzI0LDEwIEBACi0gI2luY2x1ZGUgPGNvbmZpZy5oPgotICNlbmRpZgotIAotKy8qIGhhY2sgdG8gbWFrZSBzdXJlIGtlcm5lbCBoZWFkZXJzIHVuZGVyc3RhbmQgdGhhdCBsaWJjIChtdXNsKQotKyAgIGRvZXMgZGVmaW5lIElGRl9MT1dFUl9VUCBldCBhbC4gKi8KLSsjZGVmaW5lIF9fVUFQSV9ERUZfSUZfTkVUX0RFVklDRV9GTEFHU19MT1dFUl9VUF9ET1JNQU5UX0VDSE8gMAotKwotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLWRpZmYgLS1naXQgYS9zcmMvZmlyZXdhbGwuYyBiL3NyYy9maXJld2FsbC5jCi1pbmRleCBjNDQwZGY2Li5jODNkZWY5IDEwMDY0NAotLS0tIGEvc3JjL2ZpcmV3YWxsLmMKLSsrKyBiL3NyYy9maXJld2FsbC5jCi1AQCAtMjMsNiArMjMsMTAgQEAKLSAjaW5jbHVkZSA8Y29uZmlnLmg+Ci0gI2VuZGlmCi0gCi0rLyogaGFjayB0byBtYWtlIHN1cmUga2VybmVsIGhlYWRlcnMgdW5kZXJzdGFuZCB0aGF0IGxpYmMgKG11c2wpCi0rICAgZG9lcyBkZWZpbmUgSUZGX0xPV0VSX1VQIGV0IGFsLiAqLwotKyNkZWZpbmUgX19VQVBJX0RFRl9JRl9ORVRfREVWSUNFX0ZMQUdTX0xPV0VSX1VQX0RPUk1BTlRfRUNITyAwCi0rCi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gCi0gI2luY2x1ZGUgPHh0YWJsZXMuaD4KLWRpZmYgLS1naXQgYS9zcmMvaXB0YWJsZXMuYyBiL3NyYy9pcHRhYmxlcy5jCi1pbmRleCA4MmUzYWM0Li40NmFkOWUyIDEwMDY0NAotLS0tIGEvc3JjL2lwdGFibGVzLmMKLSsrKyBiL3NyYy9pcHRhYmxlcy5jCi1AQCAtMjMsNiArMjMsMTAgQEAKLSAjaW5jbHVkZSA8Y29uZmlnLmg+Ci0gI2VuZGlmCi0gCi0rLyogaGFjayB0byBtYWtlIHN1cmUga2VybmVsIGhlYWRlcnMgdW5kZXJzdGFuZCB0aGF0IGxpYmMgKG11c2wpCi0rICAgZG9lcyBkZWZpbmUgSUZGX0xPV0VSX1VQIGV0IGFsLiAqLwotKyNkZWZpbmUgX19VQVBJX0RFRl9JRl9ORVRfREVWSUNFX0ZMQUdTX0xPV0VSX1VQX0RPUk1BTlRfRUNITyAwCi0rCi0gI2luY2x1ZGUgPGdldG9wdC5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuLzAwMDEtY29ubm1hbi5zZXJ2aWNlLXN0b3Atc3lzdGVtZC1yZXNvbHZlZC13aGVuLXdlLXVzZS1jby5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbi8wMDAxLWNvbm5tYW4uc2VydmljZS1zdG9wLXN5c3RlbWQtcmVzb2x2ZWQtd2hlbi13ZS11c2UtY28ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGUyZTBiZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbi8wMDAxLWNvbm5tYW4uc2VydmljZS1zdG9wLXN5c3RlbWQtcmVzb2x2ZWQtd2hlbi13ZS11c2UtY28ucGF0Y2gKQEAgLTAsMCArMSwyOSBAQAorRnJvbSA5ZjcwYjk0ZWJmMThmNTJjMTE1NjM0NjQyNjUyODMwZmE3N2YyN2ExIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogIk1heGluIEIuIEpvaG4iIDxtYXhpbi5qb2huQGludGVsLmNvbT4KK0RhdGU6IE1vbiwgMTIgSnVuIDIwMTcgMTY6NTI6MzkgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gY29ubm1hbi5zZXJ2aWNlOiBzdG9wIHN5c3RlbWQtcmVzb2x2ZWQgd2hlbiB3ZSB1c2UgY29ubm1hbgorCitTdG9wIHN5c3RlbWQtcmVzb2x2ZWQgc2VydmljZSB3aGVuIHdlIHVzZSBjb25ubWFuIGFzIG5ldHdvcmsgbWFuYWdlci4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQorCitTaWduZWQtb2ZmLWJ5OiBNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4KKy0tLQorIHNyYy9jb25ubWFuLnNlcnZpY2UuaW4gfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL3NyYy9jb25ubWFuLnNlcnZpY2UuaW4gYi9zcmMvY29ubm1hbi5zZXJ2aWNlLmluCitpbmRleCA5ZjVjMTBmLi5kYWI0OGJjIDEwMDY0NAorLS0tIGEvc3JjL2Nvbm5tYW4uc2VydmljZS5pbgorKysrIGIvc3JjL2Nvbm5tYW4uc2VydmljZS5pbgorQEAgLTYsNiArNiw3IEBAIFJlcXVpcmVzTW91bnRzRm9yPUBsb2NhbHN0YXRlZGlyQC9saWIvY29ubm1hbgorIEFmdGVyPWRidXMuc2VydmljZSBuZXR3b3JrLXByZS50YXJnZXQgc3lzdGVtZC1zeXN1c2Vycy5zZXJ2aWNlCisgQmVmb3JlPW5ldHdvcmsudGFyZ2V0IG11bHRpLXVzZXIudGFyZ2V0IHNodXRkb3duLnRhcmdldAorIFdhbnRzPW5ldHdvcmsudGFyZ2V0CisrQ29uZmxpY3RzPXN5c3RlbWQtcmVzb2x2ZWQuc2VydmljZQorIAorIFtTZXJ2aWNlXQorIFR5cGU9ZGJ1cworLS0gCisyLjQuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vMDAwMS1maXJld2FsbC1uZnRhYmxlcy1maXgtYnVpbGQtd2l0aC1saWJuZnRubC0xLjAuNy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbi8wMDAxLWZpcmV3YWxsLW5mdGFibGVzLWZpeC1idWlsZC13aXRoLWxpYm5mdG5sLTEuMC43LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmYWZiZDEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vMDAwMS1maXJld2FsbC1uZnRhYmxlcy1maXgtYnVpbGQtd2l0aC1saWJuZnRubC0xLjAuNy5wYXRjaApAQCAtMCwwICsxLDcyIEBACitGcm9tIDQwNThjZTMxODZhOTlmZDVmMDMzNTBmYzExYTdmYzhkMzhiNmEzODEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiAiTWF4aW4gQi4gSm9obiIgPG1heGluLmpvaG5AaW50ZWwuY29tPgorRGF0ZTogTW9uLCA4IE1heSAyMDE3IDEwOjUzOjE4ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIGZpcmV3YWxsLW5mdGFibGVzOiBmaXggYnVpbGQgd2l0aCBsaWJuZnRubC0xLjAuNworCitXZSBuZWVkIHRoZXNlIHVwZGF0ZXMgdG8gYWNjb21tb2RhdGUgdGhlIGNoYW5nZXMgY2F1c2VkIGJ5IHRoZSBmb2xsb3dpbmcKK2NvbW1pdCBpbiBsaWJuZnRubC0xLjAuNworCitjb21taXQgOTA3YTlmOGU1YTkzZjViY2Q0NDk2NDNlYjM5MTZhNjU2ZDYzNDc1OAorQXV0aG9yOiBQYWJsbyBOZWlyYSBBeXVzbyA8cGFibG9AbmV0ZmlsdGVyLm9yZz4KK0RhdGU6ICAgVHVlIERlYyAyMCAxMzo0NzoxMSAyMDE2ICswMTAwCisKK3NyYzogZ2V0IHJpZCBvZiBhbGlhc2VzIGFuZCBjb21wYXQKKworVGhpcyBtYWNoaW5lcnkgd2FzIGludHJvZHVjZWQgdG8gYXZvaWQgc3VkZGVuIGNvbXBpbGF0aW9uIGJyZWFrYWdlIG9mCitvbGQgbmZ0YWJsZXMgcmVsZWFzZXMuIFdpdGggdGhlIHVwY29taW5nIHJlbGVhc2Ugb2YgMC43IChhbmQgMC42IHdoaWNoCitpcyBub3cgNiBtb250aHMgb2xkKSB0aGlzIGlzIG5vdCByZXF1aXJlZCBhbnltb3JlLgorCitNb3Jlb3ZlciwgdXNlcnMgZ2FpbiBub3RoaW5nIGZyb20gb2xkZXIgcmVsZWFzZXMgc2luY2UgdGhleSBhcmUKK2hhbGYtYm9pbGVkIGFuZCBidWdneS4KKworU28gbGV0J3MgZ2V0IHJpZCBvZiBhbGlhc2VzIG5vdy4gQnVtcCBMSUJWRVJTSU9OIGFuZCB1cGRhdGUgbWFwIGZpbGUuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCisKK1NpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPgorLS0tCisgc3JjL2ZpcmV3YWxsLW5mdGFibGVzLmMgfCAxNCArKysrKysrLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvZmlyZXdhbGwtbmZ0YWJsZXMuYyBiL3NyYy9maXJld2FsbC1uZnRhYmxlcy5jCitpbmRleCA1ODNkMWM0Li44M2IxMzdiIDEwMDY0NAorLS0tIGEvc3JjL2ZpcmV3YWxsLW5mdGFibGVzLmMKKysrKyBiL3NyYy9maXJld2FsbC1uZnRhYmxlcy5jCitAQCAtMzg3LDkgKzM4Nyw5IEBAIHN0YXRpYyBpbnQgYWRkX2NtcChzdHJ1Y3QgbmZ0bmxfcnVsZSAqcnVsZSwgdWludDMyX3Qgc3JlZywgdWludDMyX3Qgb3AsCisgICAgICAgICBpZiAoIWV4cHIpCisgICAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOworIAorLSAgICAgICAgbmZ0bmxfZXhwcl9zZXRfdTMyKGV4cHIsIE5GVF9FWFBSX0NNUF9TUkVHLCBzcmVnKTsKKy0gICAgICAgIG5mdG5sX2V4cHJfc2V0X3UzMihleHByLCBORlRfRVhQUl9DTVBfT1AsIG9wKTsKKy0gICAgICAgIG5mdG5sX2V4cHJfc2V0KGV4cHIsIE5GVF9FWFBSX0NNUF9EQVRBLCBkYXRhLCBkYXRhX2xlbik7CisrICAgICAgICBuZnRubF9leHByX3NldF91MzIoZXhwciwgTkZUTkxfRVhQUl9DTVBfU1JFRywgc3JlZyk7CisrICAgICAgICBuZnRubF9leHByX3NldF91MzIoZXhwciwgTkZUTkxfRVhQUl9DTVBfT1AsIG9wKTsKKysgICAgICAgIG5mdG5sX2V4cHJfc2V0KGV4cHIsIE5GVE5MX0VYUFJfQ01QX0RBVEEsIGRhdGEsIGRhdGFfbGVuKTsKKyAKKyAgICAgICAgIG5mdG5sX3J1bGVfYWRkX2V4cHIocnVsZSwgZXhwcik7CisgCitAQCAtNTc1LDggKzU3NSw4IEBAIHN0YXRpYyBpbnQgYnVpbGRfcnVsZV9uYXQoY29uc3QgY2hhciAqYWRkcmVzcywgdW5zaWduZWQgY2hhciBwcmVmaXhsZW4sCisgCWV4cHIgPSBuZnRubF9leHByX2FsbG9jKCJtZXRhIik7CisgCWlmICghZXhwcikKKyAJCWdvdG8gZXJyOworLQluZnRubF9leHByX3NldF91MzIoZXhwciwgTkZUX0VYUFJfTUVUQV9LRVksIE5GVF9NRVRBX09JRk5BTUUpOworLQluZnRubF9leHByX3NldF91MzIoZXhwciwgTkZUX0VYUFJfTUVUQV9EUkVHLCBORlRfUkVHXzEpOworKwluZnRubF9leHByX3NldF91MzIoZXhwciwgTkZUTkxfRVhQUl9NRVRBX0tFWSwgTkZUX01FVEFfT0lGTkFNRSk7CisrCW5mdG5sX2V4cHJfc2V0X3UzMihleHByLCBORlROTF9FWFBSX01FVEFfRFJFRywgTkZUX1JFR18xKTsKKyAJbmZ0bmxfcnVsZV9hZGRfZXhwcihydWxlLCBleHByKTsKKyAJZXJyID0gYWRkX2NtcChydWxlLCBORlRfUkVHXzEsIE5GVF9DTVBfRVEsIGludGVyZmFjZSwKKyAJCQlzdHJsZW4oaW50ZXJmYWNlKSArIDEpOworQEAgLTY3Nyw4ICs2NzcsOCBAQCBzdGF0aWMgaW50IGJ1aWxkX3J1bGVfc25hdChpbnQgaW5kZXgsIGNvbnN0IGNoYXIgKmFkZHJlc3MsCisgCWV4cHIgPSBuZnRubF9leHByX2FsbG9jKCJtZXRhIik7CisgCWlmICghZXhwcikKKyAJCWdvdG8gZXJyOworLQluZnRubF9leHByX3NldF91MzIoZXhwciwgTkZUX0VYUFJfTUVUQV9LRVksIE5GVF9NRVRBX09JRik7CistCW5mdG5sX2V4cHJfc2V0X3UzMihleHByLCBORlRfRVhQUl9NRVRBX0RSRUcsIE5GVF9SRUdfMSk7CisrCW5mdG5sX2V4cHJfc2V0X3UzMihleHByLCBORlROTF9FWFBSX01FVEFfS0VZLCBORlRfTUVUQV9PSUYpOworKwluZnRubF9leHByX3NldF91MzIoZXhwciwgTkZUTkxfRVhQUl9NRVRBX0RSRUcsIE5GVF9SRUdfMSk7CisgCW5mdG5sX3J1bGVfYWRkX2V4cHIocnVsZSwgZXhwcik7CisgCWVyciA9IGFkZF9jbXAocnVsZSwgTkZUX1JFR18xLCBORlRfQ01QX0VRLCAmaW5kZXgsIHNpemVvZihpbmRleCkpOworIAlpZiAoZXJyIDwgMCkKKy0tIAorMi40LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuLzAwMDMtc3RhdHMtRml4LWJhZC1maWxlLWRlc2NyaXB0b3ItaW5pdGlhbGlzYXRpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vMDAwMy1zdGF0cy1GaXgtYmFkLWZpbGUtZGVzY3JpcHRvci1pbml0aWFsaXNhdGlvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzU0NTgxMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW4vMDAwMy1zdGF0cy1GaXgtYmFkLWZpbGUtZGVzY3JpcHRvci1pbml0aWFsaXNhdGlvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi1Gcm9tIGM3ZjQxNTFmYjA1M2IwZDA2OTFkOGYxMGQ3ZTM2OTAyNjVkMjg4ODkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBMdWthc3ogTm93YWsgPGxub3dha0B0eWNvaW50LmNvbT4KLURhdGU6IFdlZCwgMjYgT2N0IDIwMTYgMTg6MTM6MDIgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gc3RhdHM6IEZpeCBiYWQgZmlsZSBkZXNjcmlwdG9yIGluaXRpYWxpc2F0aW9uCi0KLVN0YXRzIGZpbGUgY29kZSBpbml0aWFsaXNlcyBpdHMgZmlsZSBkZXNjcmlwdG9yIGZpZWxkIHRvIDAuICBCdXQgMCBpcwotYSB2YWxpZCBmZCB2YWx1ZS4gLTEgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4gIFRoaXMgY2F1c2VzIHByb2JsZW1zCi13aGVuIGFuIGVycm9yIGhhcHBlbnMgYmVmb3JlIGEgc3RhdHMgZmlsZSBpcyBvcGVuIChlLmcuIG1rZGlyCi1mYWlscykuIFRoZSBjbGVhbi11cCBwcm9jZWR1cmUsIHN0YXRzX2ZyZWUoKSBjYWxscyBjbG9zZShmZCkuICBXaGVuIGZkCi1pcyAwLCB0aGlzIGZpcnN0IGNsb3NlcyBzdGRpbiwgYW5kIHRoZW4gYW55IGZpbGVzL3NvY2tldHMgd2hpY2gKLXJlY2VpdmVkIGZkPTAsIHJlLXVzZWQgYnkgdGhlIE9TLgotCi1GaXhlZCBzZXZlcmFsIGluc3RhbmNlcyBvZiBiYWQgZmlsZSBkZXNjcmlwdG9yIGZpZWxkIGhhbmRsaW5nLCBpbiBjYXNlCi1vZiBlcnJvcnMuCi0KLVRoZSBidWcgcmVzdWx0cyB3aXRoIGNvbm5tYW4gZnJlZXppbmcgaWYgdGhlcmUgaXMgbm8gcmVhZC93cml0ZSBzdG9yYWdlCi1kaXJlY3RvcnkgYXZhaWxhYmxlLCBhbmQgdGhlcmUgYXJlIG11bHRpcGxlIGFjdGl2ZSBpbnRlcmZhY2VzCi0oZmQ9MCBnZXRzIHJlLXVzZWQgZm9yIHNvY2tldHMgaW4gdGhhdCBjYXNlKS4KLQotVGhlIHBhdGNoIHdhcyBpbXBvcnRlZCBmcm9tIHRoZSBDb25ubWFuIGdpdCByZXBvc2l0b3J5Ci0oZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9uZXR3b3JrL2Nvbm5tYW4pIGFzIG9mIGNvbW1pdCBpZAotYzdmNDE1MWZiMDUzYjBkMDY5MWQ4ZjEwZDdlMzY5MDI2NWQyODg4OS4gCi0KLVVwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQKLVNpZ25lZC1vZmYtYnk6IEx1a2FzeiBOb3dhayA8bG5vd2FrQHR5Y29pbnQuY29tPgotLS0tCi0gc3JjL3N0YXRzLmMgfCAxNSArKysrKysrKysrKysrKysKLSBzcmMvdXRpbC5jICB8ICA0ICsrLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvc3RhdHMuYyBiL3NyYy9zdGF0cy5jCi1pbmRleCAyNjM0M2IxLi5jM2NhNzM4IDEwMDY0NAotLS0tIGEvc3JjL3N0YXRzLmMKLSsrKyBiL3NyYy9zdGF0cy5jCi1AQCAtMzc4LDYgKzM3OCw3IEBAIHN0YXRpYyBpbnQgc3RhdHNfZmlsZV9zZXR1cChzdHJ1Y3Qgc3RhdHNfZmlsZSAqZmlsZSkKLSAJCQlzdHJlcnJvcihlcnJubyksIGZpbGUtPm5hbWUpOwotIAotIAkJVEZSKGNsb3NlKGZpbGUtPmZkKSk7Ci0rCQlmaWxlLT5mZCA9IC0xOwotIAkJZ19mcmVlKGZpbGUtPm5hbWUpOwotIAkJZmlsZS0+bmFtZSA9IE5VTEw7Ci0gCi1AQCAtMzkzLDYgKzM5NCw3IEBAIHN0YXRpYyBpbnQgc3RhdHNfZmlsZV9zZXR1cChzdHJ1Y3Qgc3RhdHNfZmlsZSAqZmlsZSkKLSAJZXJyID0gc3RhdHNfZmlsZV9yZW1hcChmaWxlLCBzaXplKTsKLSAJaWYgKGVyciA8IDApIHsKLSAJCVRGUihjbG9zZShmaWxlLT5mZCkpOwotKwkJZmlsZS0+ZmQgPSAtMTsKLSAJCWdfZnJlZShmaWxlLT5uYW1lKTsKLSAJCWZpbGUtPm5hbWUgPSBOVUxMOwotIAotQEAgLTY0OSw2ICs2NTEsMTMgQEAgc3RhdGljIGludCBzdGF0c19maWxlX2hpc3RvcnlfdXBkYXRlKHN0cnVjdCBzdGF0c19maWxlICpkYXRhX2ZpbGUpCi0gCWJ6ZXJvKGhpc3RvcnlfZmlsZSwgc2l6ZW9mKHN0cnVjdCBzdGF0c19maWxlKSk7Ci0gCWJ6ZXJvKHRlbXBfZmlsZSwgc2l6ZW9mKHN0cnVjdCBzdGF0c19maWxlKSk7Ci0gCi0rCS8qCi0rCSAqIDAgaXMgYSB2YWxpZCBmaWxlIGRlc2NyaXB0b3IgLSBmZCBuZWVkcyB0byBiZSBpbml0aWFsaXplZAotKwkgKiB0byAtMSB0byBoYW5kbGUgZXJyb3JzIGNvcnJlY3RseQotKwkgKi8KLSsJaGlzdG9yeV9maWxlLT5mZCA9IC0xOwotKwl0ZW1wX2ZpbGUtPmZkID0gLTE7Ci0rCi0gCWVyciA9IHN0YXRzX29wZW4oaGlzdG9yeV9maWxlLCBkYXRhX2ZpbGUtPmhpc3RvcnlfbmFtZSk7Ci0gCWlmIChlcnIgPCAwKQotIAkJcmV0dXJuIGVycjsKLUBAIC02ODIsNiArNjkxLDEyIEBAIGludCBfX2Nvbm5tYW5fc3RhdHNfc2VydmljZV9yZWdpc3RlcihzdHJ1Y3QgY29ubm1hbl9zZXJ2aWNlICpzZXJ2aWNlKQotIAkJaWYgKCFmaWxlKQotIAkJCXJldHVybiAtRU5PTUVNOwotIAotKwkJLyoKLSsJCSAqIDAgaXMgYSB2YWxpZCBmaWxlIGRlc2NyaXB0b3IgLSBmZCBuZWVkcyB0byBiZSBpbml0aWFsaXplZAotKwkJICogdG8gLTEgdG8gaGFuZGxlIGVycm9ycyBjb3JyZWN0bHkKLSsJCSAqLwotKwkJZmlsZS0+ZmQgPSAtMTsKLSsKLSAJCWdfaGFzaF90YWJsZV9pbnNlcnQoc3RhdHNfaGFzaCwgc2VydmljZSwgZmlsZSk7Ci0gCX0gZWxzZSB7Ci0gCQlyZXR1cm4gLUVBTFJFQURZOwotZGlmZiAtLWdpdCBhL3NyYy91dGlsLmMgYi9zcmMvdXRpbC5jCi1pbmRleCBlNjUzMmM4Li43MzJkNDUxIDEwMDY0NAotLS0tIGEvc3JjL3V0aWwuYwotKysrIGIvc3JjL3V0aWwuYwotQEAgLTYzLDcgKzYzLDcgQEAgaW50IF9fY29ubm1hbl91dGlsX2luaXQodm9pZCkKLSB7Ci0gCWludCByID0gMDsKLSAKLS0JaWYgKGYgPiAwKQotKwlpZiAoZiA+PSAwKQotIAkJcmV0dXJuIDA7Ci0gCi0gCWYgPSBvcGVuKFVSQU5ET00sIE9fUkRPTkxZKTsKLUBAIC04Niw3ICs4Niw3IEBAIGludCBfX2Nvbm5tYW5fdXRpbF9pbml0KHZvaWQpCi0gCi0gdm9pZCBfX2Nvbm5tYW5fdXRpbF9jbGVhbnVwKHZvaWQpCi0gewotLQlpZiAoZiA+IDApCi0rCWlmIChmID49IDApCi0gCQljbG9zZShmKTsKLSAKLSAJZiA9IC0xOwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jb25ubWFuL2Nvbm5tYW5fMS4zMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbl8xLjMzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZTA0ZDliLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbl8xLjMzLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotcmVxdWlyZSBjb25ubWFuLmluYwotCi1TUkNfVVJJICA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L25ldHdvcmsvJHtCUE59LyR7QlB9LnRhci54eiBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1wbHVnaW4uaC1DaGFuZ2UtdmlzaWJpbGl0eS10by1kZWZhdWx0LWZvci1kZWJ1Zy1zeW1iLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9jb25ubWFuIFwKLSAgICAgICAgICAgIGZpbGU6Ly9uby12ZXJzaW9uLXNjcmlwdHMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2luY2x1ZGVzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAzLXN0YXRzLUZpeC1iYWQtZmlsZS1kZXNjcmlwdG9yLWluaXRpYWxpc2F0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xMjg2NS5wYXRjaCBcCi0gICAgICAgICAgICAiCi1TUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly8wMDAyLXJlc29sdmUtbXVzbC1kb2VzLW5vdC1pbXBsZW1lbnQtcmVzX25pbml0LnBhdGNoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWNvbXBpbGUtb24tbXVzbC13aXRoLWtlcm5lbC00LjktaGVhZGVycy5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gImM1MTkwM2ZkM2U3YTZhMzcxZDEyYWM1ZDcyYTFmYTAxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImJjODk0NjAzNmZhNzAxMjRkNjYzMTM2ZjlmNmI2MjM4ZDg5N2NhNDgyNzgyZGY5MDdiMDdhNDI4YjA5ZGY1YTAiCi0KLVJSRUNPTU1FTkRTXyR7UE59ID0gImNvbm5tYW4tY29uZiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbl8xLjM0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuXzEuMzQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGMyYzY4OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbl8xLjM0LmJiCkBAIC0wLDAgKzEsMTggQEAKK3JlcXVpcmUgY29ubm1hbi5pbmMKKworU1JDX1VSSSAgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC9uZXR3b3JrLyR7QlBOfS8ke0JQfS50YXIueHogXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtcGx1Z2luLmgtQ2hhbmdlLXZpc2liaWxpdHktdG8tZGVmYXVsdC1mb3ItZGVidWctc3ltYi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1maXJld2FsbC1uZnRhYmxlcy1maXgtYnVpbGQtd2l0aC1saWJuZnRubC0xLjAuNy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25ubWFuLnNlcnZpY2Utc3RvcC1zeXN0ZW1kLXJlc29sdmVkLXdoZW4td2UtdXNlLWNvLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9jb25ubWFuIFwKKyAgICAgICAgICAgIGZpbGU6Ly9uby12ZXJzaW9uLXNjcmlwdHMucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2luY2x1ZGVzLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xMjg2NS5wYXRjaCBcCisgICAgICAgICAgICAiCitTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly8wMDAyLXJlc29sdmUtbXVzbC1kb2VzLW5vdC1pbXBsZW1lbnQtcmVzX25pbml0LnBhdGNoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZTIwMDAyODcwMmM4MzFkNWY1MzVkMjBkNjFlNjA4ZWYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTlhMDgwOGM3MjljMWYzNDhmYzM2ZDhjZWNiNTJkMTliNzJiYzM0Y2I0MTFjNTAyNjA4Y2IwZTAxOTBmYzcxZSIKKworUlJFQ09NTUVORFNfJHtQTn0gPSAiY29ubm1hbi1jb25mIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC5pbmMKaW5kZXggYWFmZGQwYS4uZTk0MzcwNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AuaW5jCkBAIC0xMiwzMCArMTIsMzMgQEAKIAogREVQRU5EUyA9ICJvcGVuc3NsIGJpbmQiCiAKLVNSQ19VUkkgPSAiZnRwOi8vZnRwLmlzYy5vcmcvaXNjL2RoY3AvJHtQVn0vZGhjcC0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vZGVmaW5lLW1hY3JvLV9QQVRIX0RIQ1BEX0NPTkYtYW5kLV9QQVRIX0RIQ0xJRU5UX0NPTi5wYXRjaCBcCitTUkNfVVJJID0gImh0dHA6Ly9mdHAuaXNjLm9yZy9pc2MvZGhjcC8ke1BWfS9kaGNwLSR7UFZ9LnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly9pbml0LXJlbGF5IGZpbGU6Ly9kZWZhdWx0LXJlbGF5IFwKICAgICAgICAgICAgZmlsZTovL2luaXQtc2VydmVyIGZpbGU6Ly9kZWZhdWx0LXNlcnZlciBcCiAgICAgICAgICAgIGZpbGU6Ly9kaGNsaWVudC5jb25mIGZpbGU6Ly9kaGNwZC5jb25mIFwKKyAgICAgICAgICAgZmlsZTovL2RoY2xpZW50LXN5c3RlbWQtd3JhcHBlciBcCisgICAgICAgICAgIGZpbGU6Ly9kaGNsaWVudC5zZXJ2aWNlIFwKICAgICAgICAgICAgZmlsZTovL2RoY3BkLnNlcnZpY2UgZmlsZTovL2RoY3JlbGF5LnNlcnZpY2UgXAogICAgICAgICAgICBmaWxlOi8vZGhjcGQ2LnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vc2VhcmNoLWZvci1saWJ4bWwyLnBhdGNoICIKLQorICAgICAgICAgICAiCiBVUFNUUkVBTV9DSEVDS19VUkkgPSAiZnRwOi8vZnRwLmlzYy5vcmcvaXNjL2RoY3AvIgogVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiKD9QPHB2ZXI+XGQrXC5cZCtcLihcZCs/KSkvIgogCiBpbmhlcml0IGF1dG90b29scyBzeXN0ZW1kIHVzZXJhZGQgdXBkYXRlLXJjLmQKIAogVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfS1zZXJ2ZXIiCi1VU0VSQUREX1BBUkFNXyR7UE59LXNlcnZlciA9ICItLXN5c3RlbSAtLW5vLWNyZWF0ZS1ob21lIC0taG9tZS1kaXIgL3Zhci9ydW4vJHtQTn0gLS1zaGVsbCAvYmluL2ZhbHNlIC0tdXNlci1ncm91cCAke1BOfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0tc2VydmVyID0gIi0tc3lzdGVtIC0tbm8tY3JlYXRlLWhvbWUgLS1ob21lLWRpciAvdmFyL3J1bi8ke0JQTn0gLS1zaGVsbCAvYmluL2ZhbHNlIC0tdXNlci1ncm91cCAke0JQTn0iCiAKLVNZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0tc2VydmVyICR7UE59LXJlbGF5IgorU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfS1zZXJ2ZXIgJHtQTn0tcmVsYXkgJHtQTn0tY2xpZW50IgogU1lTVEVNRF9TRVJWSUNFXyR7UE59LXNlcnZlciA9ICJkaGNwZC5zZXJ2aWNlIGRoY3BkNi5zZXJ2aWNlIgogU1lTVEVNRF9BVVRPX0VOQUJMRV8ke1BOfS1zZXJ2ZXIgPSAiZGlzYWJsZSIKIAogU1lTVEVNRF9TRVJWSUNFXyR7UE59LXJlbGF5ID0gImRoY3JlbGF5LnNlcnZpY2UiCiBTWVNURU1EX0FVVE9fRU5BQkxFXyR7UE59LXJlbGF5ID0gImRpc2FibGUiCiAKK1NZU1RFTURfU0VSVklDRV8ke1BOfS1jbGllbnQgPSAiZGhjbGllbnQuc2VydmljZSIKK1NZU1RFTURfQVVUT19FTkFCTEVfJHtQTn0tY2xpZW50ID0gImRpc2FibGUiCisKIElOSVRTQ1JJUFRfUEFDS0FHRVMgPSAiZGhjcC1zZXJ2ZXIiCiBJTklUU0NSSVBUX05BTUVfZGhjcC1zZXJ2ZXIgPSAiZGhjcC1zZXJ2ZXIiCiBJTklUU0NSSVBUX1BBUkFNU19kaGNwLXNlcnZlciA9ICJkZWZhdWx0cyIKQEAgLTQ2LDcgKzQ5LDcgQEAKICAgICAgICAgICAgICAgICAtLXdpdGgtY2xpLWxlYXNlLWZpbGU9JHtsb2NhbHN0YXRlZGlyfS9saWIvZGhjcC9kaGNsaWVudC5sZWFzZXMgXAogICAgICAgICAgICAgICAgIC0td2l0aC1jbGk2LWxlYXNlLWZpbGU9JHtsb2NhbHN0YXRlZGlyfS9saWIvZGhjcC9kaGNsaWVudDYubGVhc2VzIFwKICAgICAgICAgICAgICAgICAtLXdpdGgtbGliYmluZD0ke1NUQUdJTkdfTElCRElSfS8gXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLXBhcmFub2lhIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1wYXJhbm9pYSAtLWRpc2FibGUtc3RhdGljIFwKICAgICAgICAgICAgICAgICAtLXdpdGgtcmFuZG9tZGV2PS9kZXYvcmFuZG9tIFwKICAgICAgICAgICAgICAgICIKIApAQCAtNzksMTUgKzgyLDIzIEBACiAJc2VkIC1pIC1lICdzLEBTWVNDT05GRElSQCwke3N5c2NvbmZkaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2RoY3BkKi5zZXJ2aWNlCiAJc2VkIC1pIC1lICdzLEBiYXNlX2JpbmRpckAsJHtiYXNlX2JpbmRpcn0sZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vZGhjcGQqLnNlcnZpY2UKIAlzZWQgLWkgLWUgJ3MsQGxvY2Fsc3RhdGVkaXJALCR7bG9jYWxzdGF0ZWRpcn0sZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vZGhjcGQqLnNlcnZpY2UKLSAgICAgICBzZWQgLWkgLWUgJ3MsQFNZU0NPTkZESVJALCR7c3lzY29uZmRpcn0sZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vZGhjcmVsYXkuc2VydmljZQorCXNlZCAtaSAtZSAncyxAU1lTQ09ORkRJUkAsJHtzeXNjb25mZGlyfSxnJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9kaGNyZWxheS5zZXJ2aWNlCisKKwlpbnN0YWxsIC1kICR7RH0ke2Jhc2Vfc2JpbmRpcn0KKwlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9kaGNsaWVudC1zeXN0ZW1kLXdyYXBwZXIgJHtEfSR7YmFzZV9zYmluZGlyfS9kaGNsaWVudC1zeXN0ZW1kLXdyYXBwZXIKKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9kaGNsaWVudC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJc2VkIC1pIC1lICdzLEBTWVNDT05GRElSQCwke3N5c2NvbmZkaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2RoY2xpZW50LnNlcnZpY2UKKwlzZWQgLWkgLWUgJ3MsQEJBU0VfU0JJTkRJUkAsJHtiYXNlX3NiaW5kaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2RoY2xpZW50LnNlcnZpY2UKIH0KIAotUEFDS0FHRVMgKz0gImRoY3Atc2VydmVyIGRoY3Atc2VydmVyLWNvbmZpZyBkaGNwLWNsaWVudCBkaGNwLXJlbGF5IGRoY3Atb21zaGVsbCIKK1BBQ0tBR0VTICs9ICJkaGNwLWxpYnMgZGhjcC1zZXJ2ZXIgZGhjcC1zZXJ2ZXItY29uZmlnIGRoY3AtY2xpZW50IGRoY3AtcmVsYXkgZGhjcC1vbXNoZWxsIgogCi1GSUxFU18ke1BOfSA9ICIiCitQQUNLQUdFU19yZW1vdmUgPSAiJHtQTn0iCiBSREVQRU5EU18ke1BOfS1kZXYgPSAiIgogUkRFUEVORFNfJHtQTn0tc3RhdGljZGV2ID0gIiIKIAorRklMRVNfJHtQTn0tbGlicyA9ICIke2xpYmRpcn0vbGliZGhjcGN0bC5zby4wKiAke2xpYmRpcn0vbGlib21hcGkuc28uMCoiCisKIEZJTEVTXyR7UE59LXNlcnZlciA9ICIke3NiaW5kaXJ9L2RoY3BkICR7c3lzY29uZmRpcn0vaW5pdC5kL2RoY3Atc2VydmVyIgogUlJFQ09NTUVORFNfJHtQTn0tc2VydmVyID0gImRoY3Atc2VydmVyLWNvbmZpZyIKIApAQCAtOTUsNyArMTA2LDExIEBACiAKIEZJTEVTXyR7UE59LXJlbGF5ID0gIiR7c2JpbmRpcn0vZGhjcmVsYXkgJHtzeXNjb25mZGlyfS9pbml0LmQvZGhjcC1yZWxheSAke3N5c2NvbmZkaXJ9L2RlZmF1bHQvZGhjcC1yZWxheSIKIAotRklMRVNfJHtQTn0tY2xpZW50ID0gIiR7YmFzZV9zYmluZGlyfS9kaGNsaWVudCAke2Jhc2Vfc2JpbmRpcn0vZGhjbGllbnQtc2NyaXB0ICR7c3lzY29uZmRpcn0vZGhjcC9kaGNsaWVudC5jb25mIgorRklMRVNfJHtQTn0tY2xpZW50ID0gIiR7YmFzZV9zYmluZGlyfS9kaGNsaWVudCBcCisgICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX3NiaW5kaXJ9L2RoY2xpZW50LXNjcmlwdCBcCisgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9kaGNwL2RoY2xpZW50LmNvbmYgXAorICAgICAgICAgICAgICAgICAgICAgICR7YmFzZV9zYmluZGlyfS9kaGNsaWVudC1zeXN0ZW1kLXdyYXBwZXIgXAorICAgICAgICAgICAgICAgICAgICAgIgogCiBGSUxFU18ke1BOfS1vbXNoZWxsID0gIiR7YmluZGlyfS9vbXNoZWxsIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwMS1kZWZpbmUtbWFjcm8tX1BBVEhfREhDUERfQ09ORi1hbmQtX1BBVEhfREhDTElFTlRfQ09OLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDEtZGVmaW5lLW1hY3JvLV9QQVRIX0RIQ1BEX0NPTkYtYW5kLV9QQVRIX0RIQ0xJRU5UX0NPTi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNWIzY2Y5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDEtZGVmaW5lLW1hY3JvLV9QQVRIX0RIQ1BEX0NPTkYtYW5kLV9QQVRIX0RIQ0xJRU5UX0NPTi5wYXRjaApAQCAtMCwwICsxLDMwIEBACitGcm9tIDdjYzI5MTQ0NTM1YTYyMmZjNjcxZGM4NmViMWRhNjViMDQ3M2E3YzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDE1IEF1ZyAyMDE3IDE2OjE0OjIyICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMDEvMTFdIGRlZmluZSBtYWNybyBfUEFUSF9ESENQRF9DT05GIGFuZCBfUEFUSF9ESENMSUVOVF9DT05GCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCisKK1JlYmFzZSB0byA0LjMuNgorU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgaW5jbHVkZXMvc2l0ZS5oIHwgMyArKy0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9pbmNsdWRlcy9zaXRlLmggYi9pbmNsdWRlcy9zaXRlLmgKK2luZGV4IGIyZjdmZDcuLjI4MGZiYjkgMTAwNjQ0CistLS0gYS9pbmNsdWRlcy9zaXRlLmgKKysrKyBiL2luY2x1ZGVzL3NpdGUuaAorQEAgLTE0OSw3ICsxNDksOCBAQAorIC8qIERlZmluZSB0aGlzIGlmIHlvdSB3YW50IHRoZSBkaGNwZC5jb25mIGZpbGUgdG8gZ28gc29tZXdoZXJlIG90aGVyIHRoYW4KKyAgICB0aGUgZGVmYXVsdCBsb2NhdGlvbi4gICBCeSBkZWZhdWx0LCBpdCBnb2VzIGluIC9ldGMvZGhjcGQuY29uZi4gKi8KKyAKKy0vKiAjZGVmaW5lIF9QQVRIX0RIQ1BEX0NPTkYJIi9ldGMvZGhjcGQuY29uZiIgKi8KKysjZGVmaW5lIF9QQVRIX0RIQ1BEX0NPTkYJIi9ldGMvZGhjcC9kaGNwZC5jb25mIgorKyNkZWZpbmUgX1BBVEhfREhDTElFTlRfQ09ORgkiL2V0Yy9kaGNwL2RoY2xpZW50LmNvbmYiCisgCisgLyogTmV0d29yayBBUEkgZGVmaW5pdGlvbnMuICAgWW91IGRvIG5vdCBuZWVkIHRvIGNob29zZSBvbmUgb2YgdGhlc2UgLSBpZgorICAgIHlvdSBkb24ndCBjaG9vc2UsIG9uZSB3aWxsIGJlIGNob3NlbiBmb3IgeW91IGluIHlvdXIgc3lzdGVtJ3MgY29uZmlnCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDEtc2l0ZS5oLWVuYWJsZS1nZW50bGUtc2h1dGRvd24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwMS1zaXRlLmgtZW5hYmxlLWdlbnRsZS1zaHV0ZG93bi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDc0NDNhNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwMS1zaXRlLmgtZW5hYmxlLWdlbnRsZS1zaHV0ZG93bi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotU3ViamVjdDogW1BBVENIXSBzaXRlLmg6IGVuYWJsZSBnZW50bGUgc2h1dGRvd24KLQotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gaW5jbHVkZXMvc2l0ZS5oIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZXMvc2l0ZS5oIGIvaW5jbHVkZXMvc2l0ZS5oCi1pbmRleCAxZGQxMjUxLi5hYmI2NmU0IDEwMDY0NAotLS0tIGEvaW5jbHVkZXMvc2l0ZS5oCi0rKysgYi9pbmNsdWRlcy9zaXRlLmgKLUBAIC0yODksNyArMjg5LDcgQEAKLSAgICBzaXR1YXRpb25zLiAgV2UgcGxhbiB0byByZXZpc2l0IHRoaXMgZmVhdHVyZSBhbmQgbWF5Ci0gICAgbWFrZSBub24tYmFja3dhcmRzIGNvbXBhdGlibGUgY2hhbmdlcyBpbmNsdWRpbmcgdGhlCi0gICAgcmVtb3ZhbCBvZiB0aGlzIGRlZmluZS4gIFVzZSBhdCB5b3VyIG93biByaXNrLiAgKi8KLS0vKiAjZGVmaW5lIEVOQUJMRV9HRU5UTEVfU0hVVERPV04gKi8KLSsjZGVmaW5lIEVOQUJMRV9HRU5UTEVfU0hVVERPV04KLSAKLSAvKiBJbmNsdWRlIG9sZCBlcnJvciBjb2Rlcy4gIFRoaXMgaXMgcHJvdmlkZWQgaW4gY2FzZSB5b3UKLSAgICBhcmUgYnVpbGRpbmcgYW4gZXh0ZXJuYWwgcHJvZ3JhbSBzaW1pbGFyIHRvIG9tc2hlbGwgZm9yCi0tLSAKLTIuOC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDAyLWRoY2xpZW50LWRidXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwMi1kaGNsaWVudC1kYnVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0NTlkYzAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwMi1kaGNsaWVudC1kYnVzLnBhdGNoCkBAIC0wLDAgKzEsMTE3IEBACitGcm9tIGJlNzU0MGQzMWMzNTZlODBlZTAyZTkwZThiZjE2MmI3YWM2ZTViYTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDE1IEF1ZyAyMDE3IDE0OjU2OjU2ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMDIvMTFdIGRoY2xpZW50IGRidXMKKwordXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtkaXN0cmlidXRpb25dCisKK1JlYmFzZSB0byA0LjMuNgorU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgY2xpZW50L3NjcmlwdHMvYnNkb3MgICB8IDUgKysrKysKKyBjbGllbnQvc2NyaXB0cy9mcmVlYnNkIHwgNSArKysrKworIGNsaWVudC9zY3JpcHRzL2xpbnV4ICAgfCA1ICsrKysrCisgY2xpZW50L3NjcmlwdHMvbmV0YnNkICB8IDUgKysrKysKKyBjbGllbnQvc2NyaXB0cy9vcGVuYnNkIHwgNSArKysrKworIGNsaWVudC9zY3JpcHRzL3NvbGFyaXMgfCA1ICsrKysrCisgNiBmaWxlcyBjaGFuZ2VkLCAzMCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9jbGllbnQvc2NyaXB0cy9ic2RvcyBiL2NsaWVudC9zY3JpcHRzL2JzZG9zCitpbmRleCBkNjlkMGQ4Li4wOTViMTQzIDEwMDc1NQorLS0tIGEvY2xpZW50L3NjcmlwdHMvYnNkb3MKKysrKyBiL2NsaWVudC9zY3JpcHRzL2JzZG9zCitAQCAtNDUsNiArNDUsMTEgQEAgZXhpdF93aXRoX2hvb2tzKCkgeworICAgICAuIC9ldGMvZGhjbGllbnQtZXhpdC1ob29rcworICAgZmkKKyAjIHByb2JhYmx5IHNob3VsZCBkbyBzb21ldGhpbmcgd2l0aCBleGl0IHN0YXR1cyBvZiB0aGUgbG9jYWwgc2NyaXB0CisrICBpZiBbIHgkZGhjX2RidXMgIT0geCAtYSAkZXhpdF9zdGF0dXMgLWVxIDAgXTsgdGhlbgorKyAgICBkYnVzLXNlbmQgLS1zeXN0ZW0gLS1kZXN0PWNvbS5yZWRoYXQuZGhjcCBcCisrICAgICAgLS10eXBlPW1ldGhvZF9jYWxsIC9jb20vcmVkaGF0L2RoY3AvJGludGVyZmFjZSBjb20ucmVkaGF0LmRoY3Auc2V0IFwKKysgICAgICAnc3RyaW5nOiciYGVudiB8IGdyZXAgLUV2ICdeKFBBVEh8U0hMVkx8X3xQV0R8ZGhjX2RidXMpXD0nYCIKKysgIGZpCisgICBleGl0ICRleGl0X3N0YXR1cworIH0KKyAKK2RpZmYgLS1naXQgYS9jbGllbnQvc2NyaXB0cy9mcmVlYnNkIGIvY2xpZW50L3NjcmlwdHMvZnJlZWJzZAoraW5kZXggOGYzZTJhMi4uYWQ3ZmI0NCAxMDA3NTUKKy0tLSBhL2NsaWVudC9zY3JpcHRzL2ZyZWVic2QKKysrKyBiL2NsaWVudC9zY3JpcHRzL2ZyZWVic2QKK0BAIC04OSw2ICs4OSwxMSBAQCBleGl0X3dpdGhfaG9va3MoKSB7CisgICAgIC4gL2V0Yy9kaGNsaWVudC1leGl0LWhvb2tzCisgICBmaQorICMgcHJvYmFibHkgc2hvdWxkIGRvIHNvbWV0aGluZyB3aXRoIGV4aXQgc3RhdHVzIG9mIHRoZSBsb2NhbCBzY3JpcHQKKysgIGlmIFsgeCRkaGNfZGJ1cyAhPSB4IC1hICRleGl0X3N0YXR1cyAtZXEgMCBdOyB0aGVuCisrICAgIGRidXMtc2VuZCAtLXN5c3RlbSAtLWRlc3Q9Y29tLnJlZGhhdC5kaGNwIFwKKysgICAgICAtLXR5cGU9bWV0aG9kX2NhbGwgL2NvbS9yZWRoYXQvZGhjcC8kaW50ZXJmYWNlIGNvbS5yZWRoYXQuZGhjcC5zZXQgXAorKyAgICAgICdzdHJpbmc6JyJgZW52IHwgZ3JlcCAtRXYgJ14oUEFUSHxTSExWTHxffFBXRHxkaGNfZGJ1cylcPSdgIgorKyAgZmkKKyAgIGV4aXQgJGV4aXRfc3RhdHVzCisgfQorIAorZGlmZiAtLWdpdCBhL2NsaWVudC9zY3JpcHRzL2xpbnV4IGIvY2xpZW50L3NjcmlwdHMvbGludXgKK2luZGV4IDVmYjE2MTIuLjNkNDQ3YjYgMTAwNzU1CistLS0gYS9jbGllbnQvc2NyaXB0cy9saW51eAorKysrIGIvY2xpZW50L3NjcmlwdHMvbGludXgKK0BAIC0xNzQsNiArMTc0LDExIEBAIGV4aXRfd2l0aF9ob29rcygpIHsKKyAgICAgICAgIGV4aXRfc3RhdHVzPSQ/CisgICAgIGZpCisgCisrICAgIGlmIFsgeCRkaGNfZGJ1cyAhPSB4IC1hICRleGl0X3N0YXR1cyAtZXEgMCBdOyB0aGVuCisrICAgICAgICBkYnVzLXNlbmQgLS1zeXN0ZW0gLS1kZXN0PWNvbS5yZWRoYXQuZGhjcCBcCisrICAgICAgICAgICAtLXR5cGU9bWV0aG9kX2NhbGwgL2NvbS9yZWRoYXQvZGhjcC8kaW50ZXJmYWNlIGNvbS5yZWRoYXQuZGhjcC5zZXQgXAorKyAgICAgICAgICAgJ3N0cmluZzonImBlbnYgfCBncmVwIC1FdiAnXihQQVRIfFNITFZMfF98UFdEfGRoY19kYnVzKVw9J2AiCisrICAgIGZpCisgICAgIGV4aXQgJGV4aXRfc3RhdHVzCisgfQorIAorZGlmZiAtLWdpdCBhL2NsaWVudC9zY3JpcHRzL25ldGJzZCBiL2NsaWVudC9zY3JpcHRzL25ldGJzZAoraW5kZXggMDczODNiNy4uYWFiYThlOCAxMDA3NTUKKy0tLSBhL2NsaWVudC9zY3JpcHRzL25ldGJzZAorKysrIGIvY2xpZW50L3NjcmlwdHMvbmV0YnNkCitAQCAtNDUsNiArNDUsMTEgQEAgZXhpdF93aXRoX2hvb2tzKCkgeworICAgICAuIC9ldGMvZGhjbGllbnQtZXhpdC1ob29rcworICAgZmkKKyAjIHByb2JhYmx5IHNob3VsZCBkbyBzb21ldGhpbmcgd2l0aCBleGl0IHN0YXR1cyBvZiB0aGUgbG9jYWwgc2NyaXB0CisrICBpZiBbIHgkZGhjX2RidXMgIT0geCAtYSAkZXhpdF9zdGF0dXMgLWVxIDAgXTsgdGhlbgorKyAgICBkYnVzLXNlbmQgLS1zeXN0ZW0gLS1kZXN0PWNvbS5yZWRoYXQuZGhjcCBcCisrICAgICAgLS10eXBlPW1ldGhvZF9jYWxsIC9jb20vcmVkaGF0L2RoY3AvJGludGVyZmFjZSBjb20ucmVkaGF0LmRoY3Auc2V0IFwKKysgICAgICAnc3RyaW5nOiciYGVudiB8IGdyZXAgLUV2ICdeKFBBVEh8U0hMVkx8X3xQV0R8ZGhjX2RidXMpXD0nYCIKKysgIGZpCisgICBleGl0ICRleGl0X3N0YXR1cworIH0KKyAKK2RpZmYgLS1naXQgYS9jbGllbnQvc2NyaXB0cy9vcGVuYnNkIGIvY2xpZW50L3NjcmlwdHMvb3BlbmJzZAoraW5kZXggZTdmNDc0Ni4uNTZiOTgwYyAxMDA2NDQKKy0tLSBhL2NsaWVudC9zY3JpcHRzL29wZW5ic2QKKysrKyBiL2NsaWVudC9zY3JpcHRzL29wZW5ic2QKK0BAIC00NSw2ICs0NSwxMSBAQCBleGl0X3dpdGhfaG9va3MoKSB7CisgICAgIC4gL2V0Yy9kaGNsaWVudC1leGl0LWhvb2tzCisgICBmaQorICMgcHJvYmFibHkgc2hvdWxkIGRvIHNvbWV0aGluZyB3aXRoIGV4aXQgc3RhdHVzIG9mIHRoZSBsb2NhbCBzY3JpcHQKKysgIGlmIFsgeCRkaGNfZGJ1cyAhPSB4IC1hICRleGl0X3N0YXR1cyAtZXEgMCBdOyB0aGVuCisrICAgIGRidXMtc2VuZCAtLXN5c3RlbSAtLWRlc3Q9Y29tLnJlZGhhdC5kaGNwIFwKKysgICAgICAtLXR5cGU9bWV0aG9kX2NhbGwgL2NvbS9yZWRoYXQvZGhjcC8kaW50ZXJmYWNlIGNvbS5yZWRoYXQuZGhjcC5zZXQgXAorKyAgICAgICdzdHJpbmc6JyJgZW52IHwgZ3JlcCAtRXYgJ14oUEFUSHxTSExWTHxffFBXRHxkaGNfZGJ1cylcPSdgIgorKyAgZmkKKyAgIGV4aXQgJGV4aXRfc3RhdHVzCisgfQorIAorZGlmZiAtLWdpdCBhL2NsaWVudC9zY3JpcHRzL3NvbGFyaXMgYi9jbGllbnQvc2NyaXB0cy9zb2xhcmlzCitpbmRleCBhZjU1M2I5Li40YTJhYTY5IDEwMDc1NQorLS0tIGEvY2xpZW50L3NjcmlwdHMvc29sYXJpcworKysrIGIvY2xpZW50L3NjcmlwdHMvc29sYXJpcworQEAgLTI2LDYgKzI2LDExIEBAIGV4aXRfd2l0aF9ob29rcygpIHsKKyAgICAgLiAvZXRjL2RoY2xpZW50LWV4aXQtaG9va3MKKyAgIGZpCisgIyBwcm9iYWJseSBzaG91bGQgZG8gc29tZXRoaW5nIHdpdGggZXhpdCBzdGF0dXMgb2YgdGhlIGxvY2FsIHNjcmlwdAorKyAgaWYgWyB4JGRoY19kYnVzICE9IHggLWEgJGV4aXRfc3RhdHVzIC1lcSAwIF07IHRoZW4KKysgICAgZGJ1cy1zZW5kIC0tc3lzdGVtIC0tZGVzdD1jb20ucmVkaGF0LmRoY3AgXAorKyAgICAgIC0tdHlwZT1tZXRob2RfY2FsbCAvY29tL3JlZGhhdC9kaGNwLyRpbnRlcmZhY2UgY29tLnJlZGhhdC5kaGNwLnNldCBcCisrICAgICAgJ3N0cmluZzonImBlbnYgfCBncmVwIC1FdiAnXihQQVRIfFNITFZMfF98UFdEfGRoY19kYnVzKVw9J2AiCisrICBmaQorICAgZXhpdCAkZXhpdF9zdGF0dXMKKyB9CisgCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDMtbGluay13aXRoLWxjcnlwdG8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwMy1saW5rLXdpdGgtbGNyeXB0by5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTBjN2I2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDMtbGluay13aXRoLWxjcnlwdG8ucGF0Y2gKQEAgLTAsMCArMSwzOCBAQAorRnJvbSBkODBiZDc5MjMyM2RiZDU2MjY5MzA5Zjg1YjQ1MDZlYjZiMWI2MGU5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5kcmVpIEdoZXJ6YW4gPGFuZHJlaUBnaGVyemFuLnJvPgorRGF0ZTogVHVlLCAxNSBBdWcgMjAxNyAxNTowNTo0NyArMDgwMAorU3ViamVjdDogW1BBVENIIDAzLzExXSBsaW5rIHdpdGggbGNyeXB0bworCitGcm9tIDQuMi4wIGZpbmFsIHJlbGVhc2UsIC1sY3J5cHRvIGNoZWNrIHdhcyByZW1vdmVkIGFuZCB3ZSBjb21waWxlCitzdGF0aWMgbGlicmFyaWVzCitmcm9tIGJpbmQgdGhhdCBhcmUgbGlua2VkIHRvIGxpYmNyeXB0by4gVGhpcyBpcyB3aHkgaSBhZGRlZCBhIHBhdGNoIGluCitvcmRlciB0byBhZGQKKy1sY3J5cHRvIHRvIExJQlMuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQW5kcmVpIEdoZXJ6YW4gPGFuZHJlaUBnaGVyemFuLnJvPgorCitSZWJhc2UgdG8gNC4zLjYKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggY2RmYTM1Mi4uNDRmYjU3ZSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNTkxLDYgKzU5MSwxMCBAQCBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbXV0sIFtbdm9pZCBmb28oKSBfX2F0dHJpYnV0ZV9fKChub3JldHVybikpOworICMgTG9vayBmb3Igb3B0aW9uYWwgaGVhZGVycy4KKyBBQ19DSEVDS19IRUFERVJTKHN5cy9zb2NrZXQuaCBuZXQvaWZfZGwuaCBuZXQvaWY2LmggcmVnZXguaCkKKyAKKysjIGZpbmQgYW4gTUQ1IGxpYnJhcnkKKytBQ19TRUFSQ0hfTElCUyhNRDVfSW5pdCwgW2NyeXB0b10pCisrQUNfU0VBUkNIX0xJQlMoTUQ1SW5pdCwgW2NyeXB0b10pCisrCisgIyBTb2xhcmlzIG5lZWRzIHNvbWUgbGlicmFyaWVzIGZvciBmdW5jdGlvbnMKKyBBQ19TRUFSQ0hfTElCUyhzb2NrZXQsIFtzb2NrZXRdKQorIEFDX1NFQVJDSF9MSUJTKGluZXRfbnRvYSwgW25zbF0pCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDQtRml4LW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDA0LUZpeC1vdXQtb2YtdHJlZS1idWlsZHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2QxZDg2NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDA0LUZpeC1vdXQtb2YtdHJlZS1idWlsZHMucGF0Y2gKQEAgLTAsMCArMSwxMDAgQEAKK0Zyb20gY2NjZWMwMzQ0ZDY4ZGFjNDEwMGI2ZjI2MGVlMjRlN2MyZGE5ZGZkYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgMTUgQXVnIDIwMTcgMTU6MDg6MjIgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAwNC8xMV0gRml4IG91dCBvZiB0cmVlIGJ1aWxkcworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworUlAgMjAxMy8wMy8yMQorCitSZWJhc2UgdG8gNC4zLjYKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgY2xpZW50L01ha2VmaWxlLmFtICB8IDQgKystLQorIGNvbW1vbi9NYWtlZmlsZS5hbSAgfCAzICsrLQorIGRoY3BjdGwvTWFrZWZpbGUuYW0gfCAyICsrCisgb21hcGlwL01ha2VmaWxlLmFtICB8IDEgKworIHJlbGF5L01ha2VmaWxlLmFtICAgfCAyICstCisgc2VydmVyL01ha2VmaWxlLmFtICB8IDIgKy0KKyA2IGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NsaWVudC9NYWtlZmlsZS5hbSBiL2NsaWVudC9NYWtlZmlsZS5hbQoraW5kZXggMmNiODNkOC4uNDczMGJiMyAxMDA2NDQKKy0tLSBhL2NsaWVudC9NYWtlZmlsZS5hbQorKysrIGIvY2xpZW50L01ha2VmaWxlLmFtCitAQCAtNywxMSArNywxMSBAQCBTVUJESVJTID0gLiB0ZXN0cworIEJJTkRMSUJESVIgPSBAQklORERJUkAvbGliCisgCisgQU1fQ1BQRkxBR1MgPSAtRENMSUVOVF9QQVRIPSciUEFUSD0kKHNiaW5kaXIpOi9zYmluOi9iaW46L3Vzci9zYmluOi91c3IvYmluIicgXAorLQkgICAgICAtRExPQ0FMU1RBVEVESVI9JyIkKGxvY2Fsc3RhdGVkaXIpIicKKysJICAgICAgLURMT0NBTFNUQVRFRElSPSciJChsb2NhbHN0YXRlZGlyKSInIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcworIAorIGRpc3Rfc3lzY29uZl9EQVRBID0gZGhjbGllbnQuY29uZi5leGFtcGxlCisgc2Jpbl9QUk9HUkFNUyA9IGRoY2xpZW50CistZGhjbGllbnRfU09VUkNFUyA9IGNscGFyc2UuYyBkaGNsaWVudC5jIGRoYzYuYyBcCisrZGhjbGllbnRfU09VUkNFUyA9ICQoc3JjZGlyKS9jbHBhcnNlLmMgJChzcmNkaXIpL2RoY2xpZW50LmMgJChzcmNkaXIpL2RoYzYuYyBcCisgCQkgICBzY3JpcHRzL2JzZG9zIHNjcmlwdHMvZnJlZWJzZCBzY3JpcHRzL2xpbnV4IHNjcmlwdHMvbWFjb3MgXAorIAkJICAgc2NyaXB0cy9uZXRic2Qgc2NyaXB0cy9uZXh0c3RlcCBzY3JpcHRzL29wZW5ic2QgXAorIAkJICAgc2NyaXB0cy9zb2xhcmlzIHNjcmlwdHMvb3BlbndydAorZGlmZiAtLWdpdCBhL2NvbW1vbi9NYWtlZmlsZS5hbSBiL2NvbW1vbi9NYWtlZmlsZS5hbQoraW5kZXggMTEzYWVlOC4uMGYyNGZiYiAxMDA2NDQKKy0tLSBhL2NvbW1vbi9NYWtlZmlsZS5hbQorKysrIGIvY29tbW9uL01ha2VmaWxlLmFtCitAQCAtMSw0ICsxLDUgQEAKKy1BTV9DUFBGTEFHUyA9IC1JJCh0b3Bfc3JjZGlyKSAtRExPQ0FMU1RBVEVESVI9JyJAbG9jYWxzdGF0ZWRpckAiJworK0FNX0NQUEZMQUdTID0gLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGVzIC1JJCh0b3Bfc3JjZGlyKSAtRExPQ0FMU1RBVEVESVI9JyJAbG9jYWxzdGF0ZWRpckAiJworKworIEFNX0NGTEFHUyA9ICQoTERBUF9DRkxBR1MpCisgCisgbm9pbnN0X0xJQlJBUklFUyA9IGxpYmRoY3AuYQorZGlmZiAtLWdpdCBhL2RoY3BjdGwvTWFrZWZpbGUuYW0gYi9kaGNwY3RsL01ha2VmaWxlLmFtCitpbmRleCBjZWIwZGUxLi5iYThkZDhiIDEwMDY0NAorLS0tIGEvZGhjcGN0bC9NYWtlZmlsZS5hbQorKysrIGIvZGhjcGN0bC9NYWtlZmlsZS5hbQorQEAgLTEsNSArMSw3IEBACisgQklORExJQkRJUiA9IEBCSU5ERElSQC9saWIKKyAKKytBTV9DUFBGTEFHUyA9IC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcyAtSSQodG9wX3NyY2RpcikKKysKKyBiaW5fUFJPR1JBTVMgPSBvbXNoZWxsCisgbGliX0xJQlJBUklFUyA9IGxpYmRoY3BjdGwuYQorIG5vaW5zdF9QUk9HUkFNUyA9IGNsdGVzdAorZGlmZiAtLWdpdCBhL29tYXBpcC9NYWtlZmlsZS5hbSBiL29tYXBpcC9NYWtlZmlsZS5hbQoraW5kZXggNDQ2YTU5NC4uZGQxYWZhMCAxMDA2NDQKKy0tLSBhL29tYXBpcC9NYWtlZmlsZS5hbQorKysrIGIvb21hcGlwL01ha2VmaWxlLmFtCitAQCAtMSw0ICsxLDUgQEAKKyBCSU5ETElCRElSID0gQEJJTkRESVJAL2xpYgorK0FNX0NQUEZMQUdTID0gLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGVzCisgCisgbGliX0xJQlJBUklFUyA9IGxpYm9tYXBpLmEKKyBub2luc3RfUFJPR1JBTVMgPSBzdnRlc3QKK2RpZmYgLS1naXQgYS9yZWxheS9NYWtlZmlsZS5hbSBiL3JlbGF5L01ha2VmaWxlLmFtCitpbmRleCAzMDYwZWNhLi42ZDY1MmY2IDEwMDY0NAorLS0tIGEvcmVsYXkvTWFrZWZpbGUuYW0KKysrKyBiL3JlbGF5L01ha2VmaWxlLmFtCitAQCAtMSw2ICsxLDYgQEAKKyBCSU5ETElCRElSID0gQEJJTkRESVJAL2xpYgorIAorLUFNX0NQUEZMQUdTID0gLURMT0NBTFNUQVRFRElSPSciQGxvY2Fsc3RhdGVkaXJAIicKKytBTV9DUFBGTEFHUyA9IC1ETE9DQUxTVEFURURJUj0nIkBsb2NhbHN0YXRlZGlyQCInIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcworIAorIHNiaW5fUFJPR1JBTVMgPSBkaGNyZWxheQorIGRoY3JlbGF5X1NPVVJDRVMgPSBkaGNyZWxheS5jCitkaWZmIC0tZ2l0IGEvc2VydmVyL01ha2VmaWxlLmFtIGIvc2VydmVyL01ha2VmaWxlLmFtCitpbmRleCA1NGZlZWRmLi4zOTkwYjljIDEwMDY0NAorLS0tIGEvc2VydmVyL01ha2VmaWxlLmFtCisrKysgYi9zZXJ2ZXIvTWFrZWZpbGUuYW0KK0BAIC02LDcgKzYsNyBAQCBTVUJESVJTID0gLiB0ZXN0cworIAorIEJJTkRMSUJESVIgPSBAQklORERJUkAvbGliCisgCistQU1fQ1BQRkxBR1MgPSAtSS4uIC1ETE9DQUxTVEFURURJUj0nIkBsb2NhbHN0YXRlZGlyQCInCisrQU1fQ1BQRkxBR1MgPSAtSSQodG9wX3NyY2RpcikgLURMT0NBTFNUQVRFRElSPSciQGxvY2Fsc3RhdGVkaXJAIicgLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGVzCisgCisgZGlzdF9zeXNjb25mX0RBVEEgPSBkaGNwZC5jb25mLmV4YW1wbGUKKyBzYmluX1BST0dSQU1TID0gZGhjcGQKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwNS1kaGNwLWNsaWVudC1maXgtaW52b2tlLWRoY2xpZW50LXNjcmlwdC1mYWlsZWQtb24tUmVhLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDUtZGhjcC1jbGllbnQtZml4LWludm9rZS1kaGNsaWVudC1zY3JpcHQtZmFpbGVkLW9uLVJlYS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZDU2MzgxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDUtZGhjcC1jbGllbnQtZml4LWludm9rZS1kaGNsaWVudC1zY3JpcHQtZmFpbGVkLW9uLVJlYS5wYXRjaApAQCAtMCwwICsxLDM2IEBACitGcm9tIDJlOGZmMGU0ZjZkMzllMzQ2ZWE4NmI4YzUxNGFiNGNjYzc4ZmEzNTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDE1IEF1ZyAyMDE3IDE1OjI0OjE0ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMDUvMTFdIGRoY3AtY2xpZW50OiBmaXggaW52b2tlIGRoY2xpZW50LXNjcmlwdCBmYWlsZWQgb24KKyBSZWFkLW9ubHkgZmlsZSBzeXN0ZW0KKworSW4gcmVhZC1vbmx5IGZpbGUgc3lzdGVtLCAnL2V0YycgaXMgb24gdGhlIHJlYWRvbmx5IHBhcnRpdGlvbiwKK2FuZCAnL2V0Yy9yZXNvbHYuY29uZicgaXMgc3ltbGlua2VkIHRvIGEgc2VwYXJhdGUgd3JpdGFibGUKK3BhcnRpdGlvbi4KKworSW4gdGhpcyBzaXR1YXRpb24sIHdlIGNyZWF0ZSB0ZW1wIGZpbGVzICdyZXNvbHYuY29uZi5kaGNsaWVudC1uZXcnCitpbiAvdG1wIGRpci4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGNsaWVudC9zY3JpcHRzL2xpbnV4IHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY2xpZW50L3NjcmlwdHMvbGludXggYi9jbGllbnQvc2NyaXB0cy9saW51eAoraW5kZXggM2Q0NDdiNi4uMzEyMmE3NSAxMDA3NTUKKy0tLSBhL2NsaWVudC9zY3JpcHRzL2xpbnV4CisrKysgYi9jbGllbnQvc2NyaXB0cy9saW51eAorQEAgLTQwLDcgKzQwLDcgQEAgbWFrZV9yZXNvbHZfY29uZigpIHsKKyAgICAgIyBESENQdjQKKyAgICAgaWYgWyAtbiAiJG5ld19kb21haW5fc2VhcmNoIiBdIHx8IFsgLW4gIiRuZXdfZG9tYWluX25hbWUiIF0gfHwKKyAgICAgICAgWyAtbiAiJG5ld19kb21haW5fbmFtZV9zZXJ2ZXJzIiBdOyB0aGVuCistICAgICAgICBuZXdfcmVzb2x2X2NvbmY9L2V0Yy9yZXNvbHYuY29uZi5kaGNsaWVudC1uZXcKKysgICAgICAgIG5ld19yZXNvbHZfY29uZj0vdG1wL3Jlc29sdi5jb25mLmRoY2xpZW50LW5ldworICAgICAgICAgcm0gLWYgJG5ld19yZXNvbHZfY29uZgorIAorICAgICAgICAgaWYgWyAtbiAiJG5ld19kb21haW5fbmFtZSIgXTsgdGhlbgorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDA2LXNpdGUuaC1lbmFibGUtZ2VudGxlLXNodXRkb3duLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDYtc2l0ZS5oLWVuYWJsZS1nZW50bGUtc2h1dGRvd24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzYyYjI4MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDA2LXNpdGUuaC1lbmFibGUtZ2VudGxlLXNodXRkb3duLnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK0Zyb20gMDE2NDFkMTQ2ZTRlNmJlYTk1NGU0YTRlZTFmNjIzMGI4MjI2NjViNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgMTUgQXVnIDIwMTcgMTU6Mzc6NDkgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAwNi8xMV0gc2l0ZS5oOiBlbmFibGUgZ2VudGxlIHNodXRkb3duCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKworUmViYXNlIHRvIDQuMy42CitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBpbmNsdWRlcy9zaXRlLmggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9pbmNsdWRlcy9zaXRlLmggYi9pbmNsdWRlcy9zaXRlLmgKK2luZGV4IDI4MGZiYjkuLmU2YzI5NzIgMTAwNjQ0CistLS0gYS9pbmNsdWRlcy9zaXRlLmgKKysrKyBiL2luY2x1ZGVzL3NpdGUuaAorQEAgLTI5Niw3ICsyOTYsNyBAQAorICAgIHNpdHVhdGlvbnMuICBXZSBwbGFuIHRvIHJldmlzaXQgdGhpcyBmZWF0dXJlIGFuZCBtYXkKKyAgICBtYWtlIG5vbi1iYWNrd2FyZHMgY29tcGF0aWJsZSBjaGFuZ2VzIGluY2x1ZGluZyB0aGUKKyAgICByZW1vdmFsIG9mIHRoaXMgZGVmaW5lLiAgVXNlIGF0IHlvdXIgb3duIHJpc2suICAqLworLS8qICNkZWZpbmUgRU5BQkxFX0dFTlRMRV9TSFVURE9XTiAqLworKyNkZWZpbmUgRU5BQkxFX0dFTlRMRV9TSFVURE9XTgorIAorIC8qIEluY2x1ZGUgb2xkIGVycm9yIGNvZGVzLiAgVGhpcyBpcyBwcm92aWRlZCBpbiBjYXNlIHlvdQorICAgIGFyZSBidWlsZGluZyBhbiBleHRlcm5hbCBwcm9ncmFtIHNpbWlsYXIgdG8gb21zaGVsbCBmb3IKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwNy1BZGQtY29uZmlndXJlLWFyZ3VtZW50LXRvLW1ha2UtdGhlLWxpYnhtbDItZGVwZW5kZW5jLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDctQWRkLWNvbmZpZ3VyZS1hcmd1bWVudC10by1tYWtlLXRoZS1saWJ4bWwyLWRlcGVuZGVuYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40M2MyNmVhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDctQWRkLWNvbmZpZ3VyZS1hcmd1bWVudC10by1tYWtlLXRoZS1saWJ4bWwyLWRlcGVuZGVuYy5wYXRjaApAQCAtMCwwICsxLDQyIEBACitGcm9tIDcxMDc1MTFmZDIwOWYwOGY5YTk2Zjg5MzgwNDFhZTQ4ZjMyOTU4OTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaHJpc3RvcGhlciBMYXJzb24gPGNocmlzX2xhcnNvbkBtZW50b3IuY29tPgorRGF0ZTogVHVlLCAxNSBBdWcgMjAxNyAxNjoxNzo0OSArMDgwMAorU3ViamVjdDogW1BBVENIIDA3LzExXSBBZGQgY29uZmlndXJlIGFyZ3VtZW50IHRvIG1ha2UgdGhlIGxpYnhtbDIgZGVwZW5kZW5jeQorIGV4cGxpY2l0IGFuZCBkZXRlcm1pbmlzaXRpYy4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IENocmlzdG9waGVyIExhcnNvbiA8Y2hyaXNfbGFyc29uQG1lbnRvci5jb20+CisKK1JlYmFzZSB0byA0LjMuNgorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCAxMSArKysrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDQ0ZmI1N2UuLjhlOWY1MDkgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTYxMSw2ICs2MTEsMTcgQEAgQUNfQ0hFQ0tfRlVOQ1Moc3RybGNhdCkKKyAjIEZvciBIUC9VWCB3ZSBuZWVkIC1saXB2NiBmb3IgaWZfbmFtZXRvaW5kZXgsIHBlcmhhcHMgb3RoZXJzLgorIEFDX1NFQVJDSF9MSUJTKGlmX25hbWV0b2luZGV4LCBbaXB2Nl0pCisgCisrQUNfQVJHX1dJVEgobGlieG1sMiwKKysJQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1saWJ4bWwyXSwgW2xpbmsgYWdhaW5zdCBsaWJ4bWwyLiB0aGlzIGlzIG5lZWRlZCBpZiBiaW5kIHdhcyBidWlsdCB3aXRoIHhtbDIgc3VwcG9ydCBlbmFibGVkXSksCisrCXdpdGhfbGlieG1sMj0iJHdpdGh2YWwiLCB3aXRoX2xpYnhtbDI9Im5vIikKKysKKytpZiB0ZXN0IHgkd2l0aF9saWJ4bWwyICE9IHhubzsgdGhlbgorKwlBQ19TRUFSQ0hfTElCUyh4bWxUZXh0V3JpdGVyU3RhcnRFbGVtZW50LCBbeG1sMl0sCisrCQlbaWYgdGVzdCB4JHdpdGhfbGlieG1sMiAhPSB4YXV0bzsgdGhlbgorKwkJCUFDX01TR19GQUlMVVJFKFsqKiogQ2Fubm90IGZpbmQgeG1sVGV4dFdyaXRlclN0YXJ0RWxlbWVudCB3aXRoIC1seG1sMiBhbmQgbGlieG1sMiB3YXMgcmVxdWVzdGVkXSkKKysJCWZpXSkKKytmaQorKworICMgY2hlY2sgZm9yIC9kZXYvcmFuZG9tIChkZWNsYXJlcyBIQVZFX0RFVl9SQU5ET00pCisgQUNfTVNHX0NIRUNLSU5HKGZvciByYW5kb20gZGV2aWNlKQorIEFDX0FSR19XSVRIKHJhbmRvbWRldiwKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwOC10d2Vhay10by1zdXBwb3J0LWV4dGVybmFsLWJpbmQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwOC10d2Vhay10by1zdXBwb3J0LWV4dGVybmFsLWJpbmQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDA2ZDE4YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDA4LXR3ZWFrLXRvLXN1cHBvcnQtZXh0ZXJuYWwtYmluZC5wYXRjaApAQCAtMCwwICsxLDExNyBAQAorRnJvbSA5Mjg3NWY1Y2M0NDkxNDUxNWU1MGMxMWM1MDNhMDljZWM5MDQ5N2IyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogU2F0LCAxMSBKdW4gMjAxNiAyMjo1MTo0NCAtMDQwMAorU3ViamVjdDogW1BBVENIIDA4LzExXSB0d2VhayB0byBzdXBwb3J0IGV4dGVybmFsIGJpbmQKKworVHdlYWsgdGhlIGV4dGVybmFsIGJpbmQgdG8gb2UtY29yZSdzIHN5c3Jvb3QgcmF0aGVyIHRoYW4KK2V4dGVybmFsIGJpbmQgc291cmNlIGJ1aWxkLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgPG9lLWNvcmUgc3BlY2lmaWM+CisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGNsaWVudC9NYWtlZmlsZS5hbSAgICAgICB8IDIgKy0KKyBjbGllbnQvdGVzdHMvTWFrZWZpbGUuYW0gfCAyICstCisgY29tbW9uL3Rlc3RzL01ha2VmaWxlLmFtIHwgMiArLQorIGRoY3BjdGwvTWFrZWZpbGUuYW0gICAgICB8IDIgKy0KKyBvbWFwaXAvTWFrZWZpbGUuYW0gICAgICAgfCAyICstCisgcmVsYXkvTWFrZWZpbGUuYW0gICAgICAgIHwgMiArLQorIHNlcnZlci9NYWtlZmlsZS5hbSAgICAgICB8IDIgKy0KKyBzZXJ2ZXIvdGVzdHMvTWFrZWZpbGUuYW0gfCAyICstCisgOCBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jbGllbnQvTWFrZWZpbGUuYW0gYi9jbGllbnQvTWFrZWZpbGUuYW0KK2luZGV4IDQ3MzBiYjMuLjg0ZDgxMzEgMTAwNjQ0CistLS0gYS9jbGllbnQvTWFrZWZpbGUuYW0KKysrKyBiL2NsaWVudC9NYWtlZmlsZS5hbQorQEAgLTQsNyArNCw3IEBACisgIyBwcm9kdWN0aW9uIGNvZGUuIFNhZGx5LCB3ZSBhcmUgbm90IHRoZXJlIHlldC4KKyBTVUJESVJTID0gLiB0ZXN0cworIAorLUJJTkRMSUJESVIgPSBAQklORERJUkAvbGliCisrQklORExJQkRJUiA9IEBCSU5ERElSQAorIAorIEFNX0NQUEZMQUdTID0gLURDTElFTlRfUEFUSD0nIlBBVEg9JChzYmluZGlyKTovc2JpbjovYmluOi91c3Ivc2JpbjovdXNyL2JpbiInIFwKKyAJICAgICAgLURMT0NBTFNUQVRFRElSPSciJChsb2NhbHN0YXRlZGlyKSInIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcworZGlmZiAtLWdpdCBhL2NsaWVudC90ZXN0cy9NYWtlZmlsZS5hbSBiL2NsaWVudC90ZXN0cy9NYWtlZmlsZS5hbQoraW5kZXggNTAzMWQwYy4uYThkZmQyNiAxMDA2NDQKKy0tLSBhL2NsaWVudC90ZXN0cy9NYWtlZmlsZS5hbQorKysrIGIvY2xpZW50L3Rlc3RzL01ha2VmaWxlLmFtCitAQCAtMSw2ICsxLDYgQEAKKyBTVUJESVJTID0gLgorIAorLUJJTkRMSUJESVIgPSBAQklORERJUkAvbGliCisrQklORExJQkRJUiA9IEBCSU5ERElSQAorIAorIEFNX0NQUEZMQUdTID0gJChBVEZfQ0ZMQUdTKSAtRFVOSVRfVEVTVCAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMKKyBBTV9DUFBGTEFHUyArPSAtSUBCSU5ERElSQC9pbmNsdWRlIC1JJCh0b3Bfc3JjZGlyKQorZGlmZiAtLWdpdCBhL2NvbW1vbi90ZXN0cy9NYWtlZmlsZS5hbSBiL2NvbW1vbi90ZXN0cy9NYWtlZmlsZS5hbQoraW5kZXggZjZhNDNlNC4uMmY5OGQyMiAxMDA2NDQKKy0tLSBhL2NvbW1vbi90ZXN0cy9NYWtlZmlsZS5hbQorKysrIGIvY29tbW9uL3Rlc3RzL01ha2VmaWxlLmFtCitAQCAtMSw2ICsxLDYgQEAKKyBTVUJESVJTID0gLgorIAorLUJJTkRMSUJESVIgPSBAQklORERJUkAvbGliCisrQklORExJQkRJUiA9IEBCSU5ERElSQAorIAorIEFNX0NQUEZMQUdTID0gJChBVEZfQ0ZMQUdTKSAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMKKyAKK2RpZmYgLS1naXQgYS9kaGNwY3RsL01ha2VmaWxlLmFtIGIvZGhjcGN0bC9NYWtlZmlsZS5hbQoraW5kZXggYmE4ZGQ4Yi4uOWIyNDg2ZSAxMDA2NDQKKy0tLSBhL2RoY3BjdGwvTWFrZWZpbGUuYW0KKysrKyBiL2RoY3BjdGwvTWFrZWZpbGUuYW0KK0BAIC0xLDQgKzEsNCBAQAorLUJJTkRMSUJESVIgPSBAQklORERJUkAvbGliCisrQklORExJQkRJUiA9IEBCSU5ERElSQAorIAorIEFNX0NQUEZMQUdTID0gLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGVzIC1JJCh0b3Bfc3JjZGlyKQorIAorZGlmZiAtLWdpdCBhL29tYXBpcC9NYWtlZmlsZS5hbSBiL29tYXBpcC9NYWtlZmlsZS5hbQoraW5kZXggZGQxYWZhMC4uZTRhODU5OSAxMDA2NDQKKy0tLSBhL29tYXBpcC9NYWtlZmlsZS5hbQorKysrIGIvb21hcGlwL01ha2VmaWxlLmFtCitAQCAtMSw0ICsxLDQgQEAKKy1CSU5ETElCRElSID0gQEJJTkRESVJAL2xpYgorK0JJTkRMSUJESVIgPSBAQklORERJUkAKKyBBTV9DUFBGTEFHUyA9IC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcworIAorIGxpYl9MSUJSQVJJRVMgPSBsaWJvbWFwaS5hCitkaWZmIC0tZ2l0IGEvcmVsYXkvTWFrZWZpbGUuYW0gYi9yZWxheS9NYWtlZmlsZS5hbQoraW5kZXggNmQ2NTJmNi4uYjNiZjU3OCAxMDA2NDQKKy0tLSBhL3JlbGF5L01ha2VmaWxlLmFtCisrKysgYi9yZWxheS9NYWtlZmlsZS5hbQorQEAgLTEsNCArMSw0IEBACistQklORExJQkRJUiA9IEBCSU5ERElSQC9saWIKKytCSU5ETElCRElSID0gQEJJTkRESVJACisgCisgQU1fQ1BQRkxBR1MgPSAtRExPQ0FMU1RBVEVESVI9JyJAbG9jYWxzdGF0ZWRpckAiJyAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMKKyAKK2RpZmYgLS1naXQgYS9zZXJ2ZXIvTWFrZWZpbGUuYW0gYi9zZXJ2ZXIvTWFrZWZpbGUuYW0KK2luZGV4IDM5OTBiOWMuLmI1ZDhjMmQgMTAwNjQ0CistLS0gYS9zZXJ2ZXIvTWFrZWZpbGUuYW0KKysrKyBiL3NlcnZlci9NYWtlZmlsZS5hbQorQEAgLTQsNyArNCw3IEBACisgIyBwcm9kdWN0aW9uIGNvZGUuIFNhZGx5LCB3ZSBhcmUgbm90IHRoZXJlIHlldC4KKyBTVUJESVJTID0gLiB0ZXN0cworIAorLUJJTkRMSUJESVIgPSBAQklORERJUkAvbGliCisrQklORExJQkRJUiA9IEBCSU5ERElSQAorIAorIEFNX0NQUEZMQUdTID0gLUkkKHRvcF9zcmNkaXIpIC1ETE9DQUxTVEFURURJUj0nIkBsb2NhbHN0YXRlZGlyQCInIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcworIAorZGlmZiAtLWdpdCBhL3NlcnZlci90ZXN0cy9NYWtlZmlsZS5hbSBiL3NlcnZlci90ZXN0cy9NYWtlZmlsZS5hbQoraW5kZXggYTg3YzVlNy4uOTgyMTA4MSAxMDA2NDQKKy0tLSBhL3NlcnZlci90ZXN0cy9NYWtlZmlsZS5hbQorKysrIGIvc2VydmVyL3Rlc3RzL01ha2VmaWxlLmFtCitAQCAtMSw2ICsxLDYgQEAKKyBTVUJESVJTID0gLgorIAorLUJJTkRMSUJESVIgPSBAQklORERJUkAvbGliCisrQklORExJQkRJUiA9IEBCSU5ERElSQAorIAorIEFNX0NQUEZMQUdTID0gJChBVEZfQ0ZMQUdTKSAtRFVOSVRfVEVTVCAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMKKyBBTV9DUFBGTEFHUyArPSAtSUBCSU5ERElSQC9pbmNsdWRlIC1JJCh0b3Bfc3JjZGlyKQorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDA5LXJlbW92ZS1kaGNsaWVudC1zY3JpcHQtYmFzaC1kZXBlbmRlbmN5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDktcmVtb3ZlLWRoY2xpZW50LXNjcmlwdC1iYXNoLWRlcGVuZGVuY3kucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTEyYjZkNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDA5LXJlbW92ZS1kaGNsaWVudC1zY3JpcHQtYmFzaC1kZXBlbmRlbmN5LnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gZjNmOGI3NzI2ZTUwZTI0ZWYzZWRmNWZhNWExN2UzMWQzOTExOGQ3ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDE1IEF1ZyAyMDE3IDE1OjQ5OjMxICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMDkvMTFdIHJlbW92ZSBkaGNsaWVudC1zY3JpcHQgYmFzaCBkZXBlbmRlbmN5CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+CisKK1JlYmFzZSB0byA0LjMuNgorU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgY2xpZW50L3NjcmlwdHMvbGludXggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jbGllbnQvc2NyaXB0cy9saW51eCBiL2NsaWVudC9zY3JpcHRzL2xpbnV4CitpbmRleCAzMTIyYTc1Li4xNzEyZDdkIDEwMDc1NQorLS0tIGEvY2xpZW50L3NjcmlwdHMvbGludXgKKysrKyBiL2NsaWVudC9zY3JpcHRzL2xpbnV4CitAQCAtMSw0ICsxLDQgQEAKKy0jIS9iaW4vYmFzaAorKyMhL2Jpbi9zaAorICMgZGhjbGllbnQtc2NyaXB0IGZvciBMaW51eC4gRGFuIEhhbGJlcnQsIE1hcmNoLCAxOTk3LgorICMgVXBkYXRlZCBmb3IgTGludXggMi5bMTJdIGJ5IEJyaWFuIEouIE11cnJlbGwsIEphbnVhcnkgMTk5OS4KKyAjIE5vIGd1YXJhbnRlZXMgYWJvdXQgdGhpcy4gSSdtIGEgbm92aWNlIGF0IHRoZSBkZXRhaWxzIG9mIExpbnV4CistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMTAtYnVpbGQtc2hhcmVkLWxpYnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAxMC1idWlsZC1zaGFyZWQtbGlicy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTI4NzMxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMTAtYnVpbGQtc2hhcmVkLWxpYnMucGF0Y2gKQEAgLTAsMCArMSwyMDggQEAKK0Zyb20gNzZjMzcwYTkyOWU1YWI1ZGJjODFjMmZiY2Y0ZTUwZjRmYmMwOGNlOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAxNSBBdWcgMjAxNyAxNTo1MzozNyArMDgwMAorU3ViamVjdDogW1BBVENIIDEwLzExXSBidWlsZCBzaGFyZWQgbGlicworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworUG9ydCBwYXRjaGVzIGZyb20gRmVkb3JhIHRvIGJ1aWxkIHNoYXJlZCBsaWJzIHJhdGhlciB0aGFuIHN0YXRpYyBsaWJzLgorCitTaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KKworUmViYXNlIHRvIDQuMy42CisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGNsaWVudC9NYWtlZmlsZS5hbSAgICAgICB8ICA0ICsrLS0KKyBjb21tb24vdGVzdHMvTWFrZWZpbGUuYW0gfCAxMyArKysrKy0tLS0tLS0tCisgY29uZmlndXJlLmFjICAgICAgICAgICAgIHwgMTIgKystLS0tLS0tLS0tCisgZGhjcGN0bC9NYWtlZmlsZS5hbSAgICAgIHwgMTQgKysrKysrLS0tLS0tLS0KKyBvbWFwaXAvTWFrZWZpbGUuYW0gICAgICAgfCAgNyArKystLS0tCisgcmVsYXkvTWFrZWZpbGUuYW0gICAgICAgIHwgIDUgKystLS0KKyBzZXJ2ZXIvTWFrZWZpbGUuYW0gICAgICAgfCAgNyArKystLS0tCisgc2VydmVyL3Rlc3RzL01ha2VmaWxlLmFtIHwgIDcgKysrLS0tLQorIDggZmlsZXMgY2hhbmdlZCwgMjYgaW5zZXJ0aW9ucygrKSwgNDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jbGllbnQvTWFrZWZpbGUuYW0gYi9jbGllbnQvTWFrZWZpbGUuYW0KK2luZGV4IDg0ZDgxMzEuLmU3NzZiZjAgMTAwNjQ0CistLS0gYS9jbGllbnQvTWFrZWZpbGUuYW0KKysrKyBiL2NsaWVudC9NYWtlZmlsZS5hbQorQEAgLTE1LDcgKzE1LDcgQEAgZGhjbGllbnRfU09VUkNFUyA9ICQoc3JjZGlyKS9jbHBhcnNlLmMgJChzcmNkaXIpL2RoY2xpZW50LmMgJChzcmNkaXIpL2RoYzYuYyBcCisgCQkgICBzY3JpcHRzL2JzZG9zIHNjcmlwdHMvZnJlZWJzZCBzY3JpcHRzL2xpbnV4IHNjcmlwdHMvbWFjb3MgXAorIAkJICAgc2NyaXB0cy9uZXRic2Qgc2NyaXB0cy9uZXh0c3RlcCBzY3JpcHRzL29wZW5ic2QgXAorIAkJICAgc2NyaXB0cy9zb2xhcmlzIHNjcmlwdHMvb3BlbndydAorLWRoY2xpZW50X0xEQUREID0gLi4vY29tbW9uL2xpYmRoY3AuYSAuLi9vbWFwaXAvbGlib21hcGkuYSAkKEJJTkRMSUJESVIpL2xpYmlycy5hIFwKKy0JCSAkKEJJTkRMSUJESVIpL2xpYmRucy5hICQoQklORExJQkRJUikvbGliaXNjY2ZnLmEgJChCSU5ETElCRElSKS9saWJpc2MuYQorK2RoY2xpZW50X0xEQUREID0gLi4vY29tbW9uL2xpYmRoY3AuYSAuLi9vbWFwaXAvbGlib21hcGkubGEgXAorKwkJICAtTCQoQklORExJQkRJUikgLWxpcnMgLWxkbnMgLWxpc2NjZmcgLWxpc2MKKyBtYW5fTUFOUyA9IGRoY2xpZW50LjggZGhjbGllbnQtc2NyaXB0LjggZGhjbGllbnQuY29uZi41IGRoY2xpZW50LmxlYXNlcy41CisgRVhUUkFfRElTVCA9ICQobWFuX01BTlMpCitkaWZmIC0tZ2l0IGEvY29tbW9uL3Rlc3RzL01ha2VmaWxlLmFtIGIvY29tbW9uL3Rlc3RzL01ha2VmaWxlLmFtCitpbmRleCAyZjk4ZDIyLi44NzQ1ZTg4IDEwMDY0NAorLS0tIGEvY29tbW9uL3Rlc3RzL01ha2VmaWxlLmFtCisrKysgYi9jb21tb24vdGVzdHMvTWFrZWZpbGUuYW0KK0BAIC0xNSwyNiArMTUsMjMgQEAgQVRGX1RFU1RTICs9IGFsbG9jX3VuaXR0ZXN0IGRuc191bml0dGVzdCBtaXNjX3VuaXR0ZXN0IG5zX25hbWVfdW5pdHRlc3QKKyBhbGxvY191bml0dGVzdF9TT1VSQ0VTID0gdGVzdF9hbGxvYy5jICQodG9wX3NyY2RpcikvdGVzdHMvdF9hcGlfZGhjcC5jCisgYWxsb2NfdW5pdHRlc3RfTERBREQgPSAkKEFURl9MREZMQUdTKQorIGFsbG9jX3VuaXR0ZXN0X0xEQUREICs9IC4uL2xpYmRoY3AuYSAgXAorLQkuLi8uLi9vbWFwaXAvbGlib21hcGkuYSAkKEJJTkRMSUJESVIpL2xpYmlycy5hIFwKKy0JJChCSU5ETElCRElSKS9saWJkbnMuYSAkKEJJTkRMSUJESVIpL2xpYmlzY2NmZy5hICAkKEJJTkRMSUJESVIpL2xpYmlzYy5hCisrCS4uLy4uL29tYXBpcC9saWJvbWFwaS5sYSAtTCQoQklORExJQkRJUikgLWxkbnMgLWxpc2NjZmcgLWxpc2MKKyAKKyBkbnNfdW5pdHRlc3RfU09VUkNFUyA9IGRuc191bml0dGVzdC5jICQodG9wX3NyY2RpcikvdGVzdHMvdF9hcGlfZGhjcC5jCisgZG5zX3VuaXR0ZXN0X0xEQUREID0gJChBVEZfTERGTEFHUykKKyBkbnNfdW5pdHRlc3RfTERBREQgKz0gLi4vbGliZGhjcC5hICBcCistCS4uLy4uL29tYXBpcC9saWJvbWFwaS5hICQoQklORExJQkRJUikvbGliaXJzLmEgXAorLQkkKEJJTkRMSUJESVIpL2xpYmRucy5hICQoQklORExJQkRJUikvbGliaXNjY2ZnLmEgICQoQklORExJQkRJUikvbGliaXNjLmEKKysJLi4vLi4vb21hcGlwL2xpYm9tYXBpLmxhIC1MJChCSU5ETElCRElSKSAtbGRucyAtbGlzY2NmZyAtbGlzYworIAorIG1pc2NfdW5pdHRlc3RfU09VUkNFUyA9IG1pc2NfdW5pdHRlc3QuYyAkKHRvcF9zcmNkaXIpL3Rlc3RzL3RfYXBpX2RoY3AuYworIG1pc2NfdW5pdHRlc3RfTERBREQgPSAkKEFURl9MREZMQUdTKQorIG1pc2NfdW5pdHRlc3RfTERBREQgKz0gLi4vbGliZGhjcC5hICBcCistCS4uLy4uL29tYXBpcC9saWJvbWFwaS5hICQoQklORExJQkRJUikvbGliaXJzLmEgXAorLQkkKEJJTkRMSUJESVIpL2xpYmRucy5hICQoQklORExJQkRJUikvbGliaXNjY2ZnLmEgICQoQklORExJQkRJUikvbGliaXNjLmEKKysJLi4vLi4vb21hcGlwL2xpYm9tYXBpLmxhIC1MJChCSU5ETElCRElSKSAtbGRucyAtbGlzY2NmZyAtbGlzYworIAorIG5zX25hbWVfdW5pdHRlc3RfU09VUkNFUyA9IG5zX25hbWVfdGVzdC5jICQodG9wX3NyY2RpcikvdGVzdHMvdF9hcGlfZGhjcC5jCisgbnNfbmFtZV91bml0dGVzdF9MREFERCA9ICQoQVRGX0xERkxBR1MpCisgbnNfbmFtZV91bml0dGVzdF9MREFERCArPSAuLi9saWJkaGNwLmEgIFwKKy0JLi4vLi4vb21hcGlwL2xpYm9tYXBpLmEgJChCSU5ETElCRElSKS9saWJpcnMuYSBcCistCSQoQklORExJQkRJUikvbGliZG5zLmEgJChCSU5ETElCRElSKS9saWJpc2NjZmcuYSAgJChCSU5ETElCRElSKS9saWJpc2MuYQorKwkuLi8uLi9vbWFwaXAvbGlib21hcGkuYSAtTCQoQklORExJQkRJUikgXAorKwktbGRucyAtbGlzY2NmZyAtbGlzYworIAorIGNoZWNrOiAkKEFURl9URVNUUykKKyAJQGlmIHRlc3QgJCh0b3Bfc3JjZGlyKSAhPSAke3RvcF9idWlsZGRpcn07IHRoZW4gXAorZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggOGU5ZjUwOS4uYmZlOTg4YSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNDcsMTYgKzQ3LDggQEAgQU1fQ09ORElUSU9OQUwoQ1JPU1NfQ09NUElMSU5HLCB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9ICJ5ZXMiKQorICMgVXNlIHRoaXMgdG8gZGVmaW5lIF9HTlVfU09VUkNFIHRvIHB1bGwgaW4gdGhlIElQdjYgQWR2YW5jZWQgU29ja2V0IEFQSS4KKyBBQ19VU0VfU1lTVEVNX0VYVEVOU0lPTlMKKyAKKy1BQ19QUk9HX1JBTkxJQgorLQorLUFDX1BBVEhfUFJPRyhBUiwgYXIpCistQUNfU1VCU1QoQVIpCistCistaWYgdGVzdCAiWCRBUiIgPSAiWCI7IHRoZW4KKy0JQUNfTVNHX0VSUk9SKFsKKy1hciBwcm9ncmFtIG5vdCBmb3VuZC4gIFBsZWFzZSBmaXggeW91ciBQQVRIIHRvIGluY2x1ZGUgdGhlIGRpcmVjdG9yeSBpbgorLXdoaWNoIGFyIHJlc2lkZXMsIG9yIHNldCBBUiBpbiB0aGUgZW52aXJvbm1lbnQgd2l0aCB0aGUgZnVsbCBwYXRoIHRvIGFyLl0pCistZmkKKysjIFVzZSBsaWJ0b29sIHRvIHNpbXBsaWZ5IGJ1aWxkaW5nIG9mIHNoYXJlZCBsaWJyYXJpZXMKKytBQ19QUk9HX0xJQlRPT0wKKyAKKyBBQ19DT05GSUdfSEVBREVSUyhbaW5jbHVkZXMvY29uZmlnLmhdKQorIAorZGlmZiAtLWdpdCBhL2RoY3BjdGwvTWFrZWZpbGUuYW0gYi9kaGNwY3RsL01ha2VmaWxlLmFtCitpbmRleCA5YjI0ODZlLi43ODRjZGY3IDEwMDY0NAorLS0tIGEvZGhjcGN0bC9NYWtlZmlsZS5hbQorKysrIGIvZGhjcGN0bC9NYWtlZmlsZS5hbQorQEAgLTMsMTkgKzMsMTcgQEAgQklORExJQkRJUiA9IEBCSU5ERElSQAorIEFNX0NQUEZMQUdTID0gLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGVzIC1JJCh0b3Bfc3JjZGlyKQorIAorIGJpbl9QUk9HUkFNUyA9IG9tc2hlbGwKKy1saWJfTElCUkFSSUVTID0gbGliZGhjcGN0bC5hCisrbGliX0xUTElCUkFSSUVTID0gbGliZGhjcGN0bC5sYQorIG5vaW5zdF9QUk9HUkFNUyA9IGNsdGVzdAorIG1hbl9NQU5TID0gb21zaGVsbC4xIGRoY3BjdGwuMworIEVYVFJBX0RJU1QgPSAkKG1hbl9NQU5TKQorIAorIG9tc2hlbGxfU09VUkNFUyA9IG9tc2hlbGwuYworLW9tc2hlbGxfTERBREQgPSBsaWJkaGNwY3RsLmEgLi4vY29tbW9uL2xpYmRoY3AuYSAuLi9vbWFwaXAvbGlib21hcGkuYSBcCistCSAgICAgICAgJChCSU5ETElCRElSKS9saWJpcnMuYSAkKEJJTkRMSUJESVIpL2xpYmRucy5hIFwKKy0JICAgICAgICAkKEJJTkRMSUJESVIpL2xpYmlzY2NmZy5hICQoQklORExJQkRJUikvbGliaXNjLmEKKytvbXNoZWxsX0xEQUREID0gbGliZGhjcGN0bC5sYSAuLi9jb21tb24vbGliZGhjcC5hIC4uL29tYXBpcC9saWJvbWFwaS5sYSBcCisrCSAgICAgICAgLUwkKEJJTkRMSUJESVIpIC1saXJzIC1sZG5zIC1saXNjY2ZnIC1saXNjCisgCistbGliZGhjcGN0bF9hX1NPVVJDRVMgPSBkaGNwY3RsLmMgY2FsbGJhY2suYyByZW1vdGUuYworK2xpYmRoY3BjdGxfbGFfU09VUkNFUyA9IGRoY3BjdGwuYyBjYWxsYmFjay5jIHJlbW90ZS5jCisgCisgY2x0ZXN0X1NPVVJDRVMgPSBjbHRlc3QuYworLWNsdGVzdF9MREFERCA9IGxpYmRoY3BjdGwuYSAuLi9jb21tb24vbGliZGhjcC5hIC4uL29tYXBpcC9saWJvbWFwaS5hIFwKKy0JICAgICAgICQoQklORExJQkRJUikvbGliaXJzLmEgJChCSU5ETElCRElSKS9saWJkbnMuYSBcCistICAgICAgICAgICAgICAgJChCSU5ETElCRElSKS9saWJpc2NjZmcuYSAkKEJJTkRMSUJESVIpL2xpYmlzYy5hCisrY2x0ZXN0X0xEQUREID0gbGliZGhjcGN0bC5sYSAuLi9jb21tb24vbGliZGhjcC5hIC4uL29tYXBpcC9saWJvbWFwaS5sYSBcCisrCSAgICAgICAtTCQoQklORExJQkRJUikgLWxpcnMgLWxkbnMgLWxpc2NjZmcgLWxpc2MKK2RpZmYgLS1naXQgYS9vbWFwaXAvTWFrZWZpbGUuYW0gYi9vbWFwaXAvTWFrZWZpbGUuYW0KK2luZGV4IGU0YTg1OTkuLmMwYzdhMWUgMTAwNjQ0CistLS0gYS9vbWFwaXAvTWFrZWZpbGUuYW0KKysrKyBiL29tYXBpcC9NYWtlZmlsZS5hbQorQEAgLTEsMTAgKzEsMTAgQEAKKyBCSU5ETElCRElSID0gQEJJTkRESVJACisgQU1fQ1BQRkxBR1MgPSAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMKKyAKKy1saWJfTElCUkFSSUVTID0gbGlib21hcGkuYQorK2xpYl9MVExJQlJBUklFUyA9IGxpYm9tYXBpLmxhCisgbm9pbnN0X1BST0dSQU1TID0gc3Z0ZXN0CisgCistbGlib21hcGlfYV9TT1VSQ0VTID0gcHJvdG9jb2wuYyBidWZmZXIuYyBhbGxvYy5jIHJlc3VsdC5jIGNvbm5lY3Rpb24uYyBcCisrbGlib21hcGlfbGFfU09VUkNFUyA9IHByb3RvY29sLmMgYnVmZmVyLmMgYWxsb2MuYyByZXN1bHQuYyBjb25uZWN0aW9uLmMgXAorIAkJICAgICBlcnJ3YXJuLmMgbGlzdGVuZXIuYyBkaXNwYXRjaC5jIGdlbmVyaWMuYyBzdXBwb3J0LmMgXAorIAkJICAgICBoYW5kbGUuYyBtZXNzYWdlLmMgY29udmVydC5jIGhhc2guYyBhdXRoLmMgaW5ldF9hZGRyLmMgXAorIAkJICAgICBhcnJheS5jIHRyYWNlLmMgdG9pc2MuYyBpc2NwcmludC5jIGlzY2xpYi5jCitAQCAtMTMsNiArMTMsNSBAQCBtYW5fTUFOUyA9IG9tYXBpLjMKKyBFWFRSQV9ESVNUID0gJChtYW5fTUFOUykKKyAKKyBzdnRlc3RfU09VUkNFUyA9IHRlc3QuYworLXN2dGVzdF9MREFERCA9IGxpYm9tYXBpLmEgJChCSU5ETElCRElSKS9saWJpcnMuYSAkKEJJTkRMSUJESVIpL2xpYmRucy5hIFwKKy0JCSQoQklORExJQkRJUikvbGliaXNjY2ZnLmEgJChCSU5ETElCRElSKS9saWJpc2MuYQorK3N2dGVzdF9MREFERCA9IGxpYm9tYXBpLmxhIC1MJChCSU5ETElCRElSKSAtbGlycyAtbGRucyAtbGlzY2NmZyAtbGlzYworIAorZGlmZiAtLWdpdCBhL3JlbGF5L01ha2VmaWxlLmFtIGIvcmVsYXkvTWFrZWZpbGUuYW0KK2luZGV4IGIzYmY1NzguLmY0NzAwOWYgMTAwNjQ0CistLS0gYS9yZWxheS9NYWtlZmlsZS5hbQorKysrIGIvcmVsYXkvTWFrZWZpbGUuYW0KK0BAIC00LDkgKzQsOCBAQCBBTV9DUFBGTEFHUyA9IC1ETE9DQUxTVEFURURJUj0nIkBsb2NhbHN0YXRlZGlyQCInIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcworIAorIHNiaW5fUFJPR1JBTVMgPSBkaGNyZWxheQorIGRoY3JlbGF5X1NPVVJDRVMgPSBkaGNyZWxheS5jCistZGhjcmVsYXlfTERBREQgPSAuLi9jb21tb24vbGliZGhjcC5hIC4uL29tYXBpcC9saWJvbWFwaS5hIFwKKy0JCSAkKEJJTkRMSUJESVIpL2xpYmlycy5hICQoQklORExJQkRJUikvbGliZG5zLmEgXAorLQkJICQoQklORExJQkRJUikvbGliaXNjY2ZnLmEgJChCSU5ETElCRElSKS9saWJpc2MuYQorK2RoY3JlbGF5X0xEQUREID0gLi4vY29tbW9uL2xpYmRoY3AuYSAuLi9vbWFwaXAvbGlib21hcGkubGEgXAorKwkJIC1MJChCSU5ETElCRElSKSAtbGlycyAtbGRucyAtbGlzY2NmZyAtbGlzYworIG1hbl9NQU5TID0gZGhjcmVsYXkuOAorIEVYVFJBX0RJU1QgPSAkKG1hbl9NQU5TKQorIAorZGlmZiAtLWdpdCBhL3NlcnZlci9NYWtlZmlsZS5hbSBiL3NlcnZlci9NYWtlZmlsZS5hbQoraW5kZXggYjVkOGMyZC4uZDdmODc2ZCAxMDA2NDQKKy0tLSBhL3NlcnZlci9NYWtlZmlsZS5hbQorKysrIGIvc2VydmVyL01ha2VmaWxlLmFtCitAQCAtMTUsMTAgKzE1LDkgQEAgZGhjcGRfU09VUkNFUyA9IGRoY3BkLmMgZGhjcC5jIGJvb3RwLmMgY29uZnBhcnMuYyBkYi5jIGNsYXNzLmMgZmFpbG92ZXIuYyBcCisgCQlkaGNwdjYuYyBtZGI2LmMgbGRhcC5jIGxkYXBfY2FzYS5jIGxlYXNlY2hhaW4uYyBsZGFwX2tyYl9oZWxwZXIuYworIAorIGRoY3BkX0NGTEFHUyA9ICQoTERBUF9DRkxBR1MpCistZGhjcGRfTERBREQgPSAuLi9jb21tb24vbGliZGhjcC5hIC4uL29tYXBpcC9saWJvbWFwaS5hIFwKKy0JICAgICAgLi4vZGhjcGN0bC9saWJkaGNwY3RsLmEgJChCSU5ETElCRElSKS9saWJpcnMuYSBcCistCSAgICAgICQoQklORExJQkRJUikvbGliZG5zLmEgJChCSU5ETElCRElSKS9saWJpc2NjZmcuYSBcCistCSAgICAgICQoQklORExJQkRJUikvbGliaXNjLmEgJChMREFQX0xJQlMpCisrZGhjcGRfTERBREQgPSAuLi9jb21tb24vbGliZGhjcC5hIC4uL29tYXBpcC9saWJvbWFwaS5sYSBcCisrCSAgICAgIC4uL2RoY3BjdGwvbGliZGhjcGN0bC5sYSAtTCQoQklORExJQkRJUikgXAorKwkgICAgICAtbGlycyAtbGRucyAtbGlzY2NmZyAtbGlzYyAkKExEQVBfTElCUykKKyAKKyBtYW5fTUFOUyA9IGRoY3BkLjggZGhjcGQuY29uZi41IGRoY3BkLmxlYXNlcy41CisgRVhUUkFfRElTVCA9ICQobWFuX01BTlMpCitkaWZmIC0tZ2l0IGEvc2VydmVyL3Rlc3RzL01ha2VmaWxlLmFtIGIvc2VydmVyL3Rlc3RzL01ha2VmaWxlLmFtCitpbmRleCA5ODIxMDgxLi5kZTk1ODcyIDEwMDY0NAorLS0tIGEvc2VydmVyL3Rlc3RzL01ha2VmaWxlLmFtCisrKysgYi9zZXJ2ZXIvdGVzdHMvTWFrZWZpbGUuYW0KK0BAIC0xOSwxMCArMTksOSBAQCBESENQU1JDID0gLi4vZGhjcC5jIC4uL2Jvb3RwLmMgLi4vY29uZnBhcnMuYyAuLi9kYi5jIC4uL2NsYXNzLmMgICAgICBcCisgICAgICAgICAgIC4uL2RkbnMuYyAuLi9kaGNwbGVhc2VxdWVyeS5jIC4uL2RoY3B2Ni5jIC4uL21kYjYuYyAgICAgICAgXAorICAgICAgICAgICAuLi9sZGFwLmMgLi4vbGRhcF9jYXNhLmMgLi4vZGhjcGQuYyAuLi9sZWFzZWNoYWluLmMKKyAKKy1ESENQTElCUyA9ICQodG9wX2J1aWxkZGlyKS9jb21tb24vbGliZGhjcC5hICQodG9wX2J1aWxkZGlyKS9vbWFwaXAvbGlib21hcGkuYSBcCistICAgICAgICAgICQodG9wX2J1aWxkZGlyKS9kaGNwY3RsL2xpYmRoY3BjdGwuYSAkKEJJTkRMSUJESVIpL2xpYmlycy5hIFwKKy0JICAkKEJJTkRMSUJESVIpL2xpYmRucy5hICQoQklORExJQkRJUikvbGliaXNjY2ZnLmEgXAorLQkgICQoQklORExJQkRJUikvbGliaXNjLmEKKytESENQTElCUyA9ICQodG9wX2J1aWxkZGlyKS9jb21tb24vbGliZGhjcC5hICQodG9wX2J1aWxkZGlyKS9vbWFwaXAvbGlib21hcGkubGEgXAorKyAgICAgICAgICAkKHRvcF9idWlsZGRpcikvZGhjcGN0bC9saWJkaGNwY3RsLmxhIFwKKysgICAgICAgICAgLUwkKEJJTkRMSUJESVIpIC1saXJzIC1sZG5zIC1saXNjY2ZnIC1saXNjCisgCisgQVRGX1RFU1RTID0KKyBpZiBIQVZFX0FURgorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDExLU1vdmVkLXRoZS1jYWxsLXRvLWlzY19hcHBfY3R4c3RhcnQtdG8tbm90LWdldC1zaWduYWwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAxMS1Nb3ZlZC10aGUtY2FsbC10by1pc2NfYXBwX2N0eHN0YXJ0LXRvLW5vdC1nZXQtc2lnbmFsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3YmI0NjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAxMS1Nb3ZlZC10aGUtY2FsbC10by1pc2NfYXBwX2N0eHN0YXJ0LXRvLW5vdC1nZXQtc2lnbmFsLnBhdGNoCkBAIC0wLDAgKzEsODEgQEAKK0Zyb20gMzc3MjVmM2UyMmVkYjUwZTBjYTJkMWZmZjk3MTMyMWE1YTRkNTExMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMTIgSnVsIDIwMTcgMDM6MDU6MTMgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSCAxMS8xMV0gTW92ZWQgdGhlIGNhbGwgdG8gaXNjX2FwcF9jdHhzdGFydCgpIHRvIG5vdCBnZXQgc2lnbmFsCisgYmxvY2sgYnkgYWxsIHRocmVhZHMKKworU2lnbmVkLW9mZi1ieTogRnJhbmNpcyBEdXBvbnQgPGZkdXBvbnRAaXNjLm9yZz4KKworSW4gaHR0cHM6Ly9zb3VyY2UuaXNjLm9yZy9naXQvYmluZDkuZ2l0LCBzaW5jZSB0aGUgZm9sbG93aW5nCitjb21taXQgYXBwbGllZDoKKy4uLgorY29tbWl0IGI5OWJmYTE4NGJjOTM3NTQyMWI1ZGY5MTVlZWE3ZGZhYzZhNjhhOTkKK0F1dGhvcjogRXZhbiBIdW50IDxlYWNoQGlzYy5vcmc+CitEYXRlOiAgIFdlZCBBcHIgMTAgMTM6NDk6NTcgMjAxMyAtMDcwMAorCisgICAgW21hc3Rlcl0gdW5pZnkgaW50ZXJuYWwgYW5kIGV4cG9ydCBsaWJyYXJpZXMKKworICAgIDM1NTAuICAgICAgIFtmdW5jXSAgICAgICAgICBVbmlmaWVkIHRoZSBpbnRlcm5hbCBhbmQgZXhwb3J0IHZlcnNpb25zIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgQklORCBsaWJyYXJpZXMsIGFsbG93aW5nIGV4dGVybmFsIGNsaWVudHMgdG8gdXNlCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgc2FtZSBsaWJyYXJpZXMgYXMgQklORC4gW1JUICMzMzEzMV0KKy4uLgorKGdpdCBzaG93IGI5OWJmYTE4NGJjOTM3NTQyMWI1ZGY5MTVlZWE3ZGZhYzZhNjhhOTkgLS0gLi9saWIvaXNjL3VuaXgvYXBwLmMpCisKK0luIHRoaXMgY29tbWl0LCBpZiBiaW5kOSBlbmFibGUgdGhyZWFkcyhJU0NfUExBVEZPUk1fVVNFVEhSRUFEUyksCitpdCBibG9ja3Mgc2lnbmFsIFNJR0hVUCwgU0lHSU5UIGFuZCBTSUdURVJNIGluIGlzY19fYXBwX2N0eHN0YXJ0LgorV2hpY2ggY2F1c2VkIGRoY2xpZW50L2RoY3BkIGNvdWxkIG5vdCBiZSBzdG9wcGVkIGJ5IFNJR1RFUk0uCisKK0l0IGNhdXNlZCBzeXN0ZW1kJ3MgcmVib290IGh1bmcgd2hpY2ggc2VuZCBTSUdURVJNIGJ5IGRlZmF1bHQuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vc291cmNlLmlzYy5vcmcvZ2l0L2RoY3AuZ2l0XQorU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgb21hcGlwL2lzY2xpYi5jIHwgMjUgKysrKysrKysrKysrKysrLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL29tYXBpcC9pc2NsaWIuYyBiL29tYXBpcC9pc2NsaWIuYworaW5kZXggY2U4NjQ5MC4uNmEwNDM0NSAxMDA2NDQKKy0tLSBhL29tYXBpcC9pc2NsaWIuYworKysrIGIvb21hcGlwL2lzY2xpYi5jCitAQCAtMTg1LDE2ICsxODUsNiBAQCBkaGNwX2NvbnRleHRfY3JlYXRlKGludCBmbGFncywKKyAJCWlmIChyZXN1bHQgIT0gSVNDX1JfU1VDQ0VTUykKKyAJCQlnb3RvIGNsZWFudXA7CisgCistCQlyZXN1bHQgPSBpc2NfYXBwX2N0eHN0YXJ0KGRoY3BfZ2JsX2N0eC5hY3R4KTsKKy0JCWlmIChyZXN1bHQgIT0gSVNDX1JfU1VDQ0VTUykKKy0JCQlyZXR1cm4gKHJlc3VsdCk7CistCQlkaGNwX2dibF9jdHguYWN0eF9zdGFydGVkID0gSVNDX1RSVUU7CistCistCQkvKiBOb3QgYWxsIE9TcyBzdXBwb3J0IHN1cHByZXNzaW5nIFNJR1BJUEUgdGhyb3VnaCBzb2NrZXQKKy0JCSAqIG9wdGlvbnMsIHNvIHNldCB0aGUgc2lnYWwgYWN0aW9uIHRvIGJlIGlnbm9yZS4gIFRoaXMgYWxsb3dzCistCQkgKiBicm9rZW4gY29ubmVjdGlvbnMgdG8gZmFpbCBncmFjZWZ1bGx5IHdpdGggRVBJUEUgb24gd3JpdGVzICovCistCQloYW5kbGVfc2lnbmFsKFNJR1BJUEUsIFNJR19JR04pOworLQorIAkJcmVzdWx0ID0gaXNjX3Rhc2ttZ3JfY3JlYXRlaW5jdHgoZGhjcF9nYmxfY3R4Lm1jdHgsCisgCQkJCQkJIGRoY3BfZ2JsX2N0eC5hY3R4LAorIAkJCQkJCSAxLCAwLAorQEAgLTIxNyw2ICsyMDcsMjEgQEAgZGhjcF9jb250ZXh0X2NyZWF0ZShpbnQgZmxhZ3MsCisgCQlyZXN1bHQgPSBpc2NfdGFza19jcmVhdGUoZGhjcF9nYmxfY3R4LnRhc2ttZ3IsIDAsICZkaGNwX2dibF9jdHgudGFzayk7CisgCQlpZiAocmVzdWx0ICE9IElTQ19SX1NVQ0NFU1MpCisgCQkJZ290byBjbGVhbnVwOworKworKwkJcmVzdWx0ID0gaXNjX2FwcF9jdHhzdGFydChkaGNwX2dibF9jdHguYWN0eCk7CisrCQlpZiAocmVzdWx0ICE9IElTQ19SX1NVQ0NFU1MpCisrCQkJcmV0dXJuIChyZXN1bHQpOworKwkJZGhjcF9nYmxfY3R4LmFjdHhfc3RhcnRlZCA9IElTQ19UUlVFOworKworKwkJLyogTm90IGFsbCBPU3Mgc3VwcG9ydCBzdXBwcmVzc2luZyBTSUdQSVBFIHRocm91Z2ggc29ja2V0CisrCQkgKiBvcHRpb25zLCBzbyBzZXQgdGhlIHNpZ2FsIGFjdGlvbiB0byBiZSBpZ25vcmUuICBUaGlzIGFsbG93cworKwkJICogYnJva2VuIGNvbm5lY3Rpb25zIHRvIGZhaWwgZ3JhY2VmdWxseSB3aXRoIEVQSVBFIG9uIHdyaXRlcyAqLworKwkJaGFuZGxlX3NpZ25hbChTSUdQSVBFLCBTSUdfSUdOKTsKKysKKysJCS8qIFJlc2V0IGhhbmRsZXJzIGluc3RhbGxlZCBieSBpc2NfYXBwX2N0eHN0YXJ0KCkKKysJCSAqIHRvIGRlZmF1bHQgZm9yIGNvbnRyb2wtYyBhbmQga2lsbCAqLworKwkJaGFuZGxlX3NpZ25hbChTSUdJTlQsIFNJR19ERkwpOworKwkJaGFuZGxlX3NpZ25hbChTSUdURVJNLCBTSUdfREZMKTsKKyAJfQorIAorICNpZiBkZWZpbmVkIChOU1VQREFURSkKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAxMi1kaGNwLWNvcnJlY3QtdGhlLWludGVudGlvbi1mb3IteG1sMi1saWItc2VhcmNoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMTItZGhjcC1jb3JyZWN0LXRoZS1pbnRlbnRpb24tZm9yLXhtbDItbGliLXNlYXJjaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDNhZjlkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMTItZGhjcC1jb3JyZWN0LXRoZS1pbnRlbnRpb24tZm9yLXhtbDItbGliLXNlYXJjaC5wYXRjaApAQCAtMCwwICsxLDM3IEBACitGcm9tIDUwMTU0M2IzZWY3MTU0ODhhMTQyZTNkMzAxZmYyNzMzYWEzM2VlYzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBd2FpcyBCZWxhbCA8YXdhaXNfYmVsYWxAbWVudG9yLmNvbT4KK0RhdGU6IFdlZCwgMjUgT2N0IDIwMTcgMjE6MDA6MDUgKzA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gZGhjcDogY29ycmVjdCB0aGUgaW50ZW50aW9uIGZvciB4bWwyIGxpYiBzZWFyY2gKKworQSBtaXNzaW5nIGNhc2UgYnJlYWtzIHRoZSBidWlsZCB3aGVuIGxpYnhtbDIgaXMKK3JlcXVpcmVkIGFuZCBmb3VuZCBhcHByb3ByaWF0ZWx5LiBUaGUgdGhpcmQgYXJndW1lbnQKK3RvIHRoZSBmdW5jdGlvbiBBQ19TRUFSQ0hfTElCIGlzIGFjdGlvbi1pZi1mb3VuZCB3aGljaAord2FzIG1pc3Rha2VubHkgYmVlbiB1c2VkIGZvciB0aGUgY2FzZSB3aGVyZSB0aGUgbGlicmFyeQoraXMgbm90IGZvdW5kIGFuZCBoZW5jZSBicmVha3MgdGhlIGNvbmZpZ3VyZSBwaGFzZQord2hlcmUgaXQgc2hvdWQgYWN0dWFsbHkgcGFzcy4KK1dlIG5vdyBwYXNzIG9uIHNpbGVudGx5IHdoZW4gYWN0aW9uLWlmLWZvdW5kIGlzCitleGVjdXRlZC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEF3YWlzIEJlbGFsIDxhd2Fpc19iZWxhbEBtZW50b3IuY29tPgorLS0tCisgY29uZmlndXJlLmFjIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBiZmU5ODhhLi5mMDQ1OWU2IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC02MDgsNyArNjA4LDcgQEAgQUNfQVJHX1dJVEgobGlieG1sMiwKKyAJd2l0aF9saWJ4bWwyPSIkd2l0aHZhbCIsIHdpdGhfbGlieG1sMj0ibm8iKQorIAorIGlmIHRlc3QgeCR3aXRoX2xpYnhtbDIgIT0geG5vOyB0aGVuCistCUFDX1NFQVJDSF9MSUJTKHhtbFRleHRXcml0ZXJTdGFydEVsZW1lbnQsIFt4bWwyXSwKKysJQUNfU0VBUkNIX0xJQlMoeG1sVGV4dFdyaXRlclN0YXJ0RWxlbWVudCwgW3htbDJdLCwKKyAJCVtpZiB0ZXN0IHgkd2l0aF9saWJ4bWwyICE9IHhhdXRvOyB0aGVuCisgCQkJQUNfTVNHX0ZBSUxVUkUoWyoqKiBDYW5ub3QgZmluZCB4bWxUZXh0V3JpdGVyU3RhcnRFbGVtZW50IHdpdGggLWx4bWwyIGFuZCBsaWJ4bWwyIHdhcyByZXF1ZXN0ZWRdKQorIAkJZmldKQorLS0gCisyLjExLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwL2RlZmluZS1tYWNyby1fUEFUSF9ESENQRF9DT05GLWFuZC1fUEFUSF9ESENMSUVOVF9DT04ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvZGVmaW5lLW1hY3JvLV9QQVRIX0RIQ1BEX0NPTkYtYW5kLV9QQVRIX0RIQ0xJRU5UX0NPTi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzJiZGFmMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvZGVmaW5lLW1hY3JvLV9QQVRIX0RIQ1BEX0NPTkYtYW5kLV9QQVRIX0RIQ0xJRU5UX0NPTi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLWRlZmluZSBtYWNybyBfUEFUSF9ESENQRF9DT05GIGFuZCBfUEFUSF9ESENMSUVOVF9DT05GCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIGluY2x1ZGVzL3NpdGUuaCB8IDMgKystCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZXMvc2l0ZS5oIGIvaW5jbHVkZXMvc2l0ZS5oCi1pbmRleCBkODdiMzA5Li4xN2JjNDBkIDEwMDY0NAotLS0tIGEvaW5jbHVkZXMvc2l0ZS5oCi0rKysgYi9pbmNsdWRlcy9zaXRlLmgKLUBAIC0xMzksNyArMTM5LDggQEAKLSAvKiBEZWZpbmUgdGhpcyBpZiB5b3Ugd2FudCB0aGUgZGhjcGQuY29uZiBmaWxlIHRvIGdvIHNvbWV3aGVyZSBvdGhlciB0aGFuCi0gICAgdGhlIGRlZmF1bHQgbG9jYXRpb24uICAgQnkgZGVmYXVsdCwgaXQgZ29lcyBpbiAvZXRjL2RoY3BkLmNvbmYuICovCi0gCi0tLyogI2RlZmluZSBfUEFUSF9ESENQRF9DT05GCSIvZXRjL2RoY3BkLmNvbmYiICovCi0rI2RlZmluZSBfUEFUSF9ESENQRF9DT05GCSIvZXRjL2RoY3AvZGhjcGQuY29uZiIKLSsjZGVmaW5lIF9QQVRIX0RIQ0xJRU5UX0NPTkYJIi9ldGMvZGhjcC9kaGNsaWVudC5jb25mIgotIAotIC8qIE5ldHdvcmsgQVBJIGRlZmluaXRpb25zLiAgIFlvdSBkbyBub3QgbmVlZCB0byBjaG9vc2Ugb25lIG9mIHRoZXNlIC0gaWYKLSAgICB5b3UgZG9uJ3QgY2hvb3NlLCBvbmUgd2lsbCBiZSBjaG9zZW4gZm9yIHlvdSBpbiB5b3VyIHN5c3RlbSdzIGNvbmZpZwotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvZGhjbGllbnQtc2NyaXB0LWRyb3AtcmVzb2x2LmNvbmYuZGhjbGllbnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvZGhjbGllbnQtc2NyaXB0LWRyb3AtcmVzb2x2LmNvbmYuZGhjbGllbnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2MDk1YTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwL2RoY2xpZW50LXNjcmlwdC1kcm9wLXJlc29sdi5jb25mLmRoY2xpZW50LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotZGhjcC1jbGllbnQ6IGZpeCBpbnZva2UgZGhjbGllbnQtc2NyaXB0IGZhaWxlZCBvbiBSZWFkLW9ubHkgZmlsZSBzeXN0ZW0KLQotSW4gcmVhZC1vbmx5IGZpbGUgc3lzdGVtLCAnL2V0YycgaXMgb24gdGhlIHJlYWRvbmx5IHBhcnRpdGlvbiwKLWFuZCAnL2V0Yy9yZXNvbHYuY29uZicgaXMgc3ltbGlua2VkIHRvIGEgc2VwYXJhdGUgd3JpdGFibGUKLXBhcnRpdGlvbi4KLQotSW4gdGhpcyBzaXR1YXRpb24sIHdlIHNob3VsZCB1c2Ugc2hlbGwgdmFyaWFibGUgdG8gaW5zdGVhZCBvZgotdGVtcCBmaWxlcyAnL2V0Yy9yZXNvbHYuY29uZi5kaGNsaWVudCcgYW5kICcvZXRjL3Jlc29sdi5jb25mLmRoY2xpZW50NicuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gY2xpZW50L3NjcmlwdHMvbGludXggfCAyMCArKysrKysrKystLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY2xpZW50L3NjcmlwdHMvbGludXggYi9jbGllbnQvc2NyaXB0cy9saW51eAotLS0tIGEvY2xpZW50L3NjcmlwdHMvbGludXgKLSsrKyBiL2NsaWVudC9zY3JpcHRzL2xpbnV4Ci1AQCAtMjcsMjcgKzI3LDI1IEBAIGlwPS9zYmluL2lwCi0gCi0gbWFrZV9yZXNvbHZfY29uZigpIHsKLSAgIGlmIFsgeCIkbmV3X2RvbWFpbl9uYW1lX3NlcnZlcnMiICE9IHggXTsgdGhlbgotLSAgICBjYXQgL2Rldi9udWxsID4gL2V0Yy9yZXNvbHYuY29uZi5kaGNsaWVudAotLSAgICBjaG1vZCA2NDQgL2V0Yy9yZXNvbHYuY29uZi5kaGNsaWVudAotKyAgICByZXNvbHZfY29uZj0iIgotICAgICBpZiBbIHgiJG5ld19kb21haW5fc2VhcmNoIiAhPSB4IF07IHRoZW4KLS0gICAgICBlY2hvIHNlYXJjaCAkbmV3X2RvbWFpbl9zZWFyY2ggPj4gL2V0Yy9yZXNvbHYuY29uZi5kaGNsaWVudAotKyAgICAgIHJlc29sdl9jb25mPSJzZWFyY2ggJHtuZXdfZG9tYWluX3NlYXJjaH1cbiIKLSAgICAgZWxpZiBbIHgiJG5ld19kb21haW5fbmFtZSIgIT0geCBdOyB0aGVuCi0gICAgICAgIyBOb3RlIHRoYXQgdGhlIERIQ1AgJ0RvbWFpbiBOYW1lIE9wdGlvbicgaXMgcmVhbGx5IGp1c3QgYSBkb21haW4KLSAgICAgICAjIG5hbWUsIGFuZCB0aGF0IHRoaXMgcHJhY3RpY2Ugb2YgdXNpbmcgdGhlIGRvbWFpbiBuYW1lIG9wdGlvbiBhcwotICAgICAgICMgYSBzZWFyY2ggcGF0aCBpcyBib3RoIG5vbnN0YW5kYXJkIGFuZCBkZXByZWNhdGVkLgotLSAgICAgIGVjaG8gc2VhcmNoICRuZXdfZG9tYWluX25hbWUgPj4gL2V0Yy9yZXNvbHYuY29uZi5kaGNsaWVudAotKyAgICAgIHJlc29sdl9jb25mPSJzZWFyY2ggJHtuZXdfZG9tYWluX25hbWV9XG4iCi0gICAgIGZpCi0gICAgIGZvciBuYW1lc2VydmVyIGluICRuZXdfZG9tYWluX25hbWVfc2VydmVyczsgZG8KLS0gICAgICBlY2hvIG5hbWVzZXJ2ZXIgJG5hbWVzZXJ2ZXIgPj4vZXRjL3Jlc29sdi5jb25mLmRoY2xpZW50Ci0rICAgICAgcmVzb2x2X2NvbmY9IiR7cmVzb2x2X2NvbmZ9bmFtZXNlcnZlciAke25hbWVzZXJ2ZXJ9XG4iCi0gICAgIGRvbmUKLSAKLS0gICAgbXYgL2V0Yy9yZXNvbHYuY29uZi5kaGNsaWVudCAvZXRjL3Jlc29sdi5jb25mCi0rICAgIGVjaG8gLWUgIiR7cmVzb2x2X2NvbmZ9IiA+IC9ldGMvcmVzb2x2LmNvbmYKLSAgIGVsaWYgWyAieCR7bmV3X2RoY3A2X25hbWVfc2VydmVyc30iICE9IHggXSA7IHRoZW4KLS0gICAgY2F0IC9kZXYvbnVsbCA+IC9ldGMvcmVzb2x2LmNvbmYuZGhjbGllbnQ2Ci0tICAgIGNobW9kIDY0NCAvZXRjL3Jlc29sdi5jb25mLmRoY2xpZW50NgotKyAgICByZXNvbHZfY29uZj0iIgotIAotICAgICBpZiBbICJ4JHtuZXdfZGhjcDZfZG9tYWluX3NlYXJjaH0iICE9IHggXSA7IHRoZW4KLS0gICAgICBlY2hvIHNlYXJjaCAke25ld19kaGNwNl9kb21haW5fc2VhcmNofSA+PiAvZXRjL3Jlc29sdi5jb25mLmRoY2xpZW50NgotKyAgICAgIHJlc29sdl9jb25mPSJzZWFyY2ggJHtuZXdfZGhjcDZfZG9tYWluX3NlYXJjaH1cbiIKLSAgICAgZmkKLSAgICAgc2hvcHQgLXMgbm9jYXNlbWF0Y2ggCi0gICAgIGZvciBuYW1lc2VydmVyIGluICR7bmV3X2RoY3A2X25hbWVfc2VydmVyc30gOyBkbwotQEAgLTU5LDExICs1NywxMSBAQCBtYWtlX3Jlc29sdl9jb25mKCkgewotICAgICAgIGVsc2UKLSAJem9uZV9pZD0KLSAgICAgICBmaQotLSAgICAgIGVjaG8gbmFtZXNlcnZlciAke25hbWVzZXJ2ZXJ9JHpvbmVfaWQgPj4gL2V0Yy9yZXNvbHYuY29uZi5kaGNsaWVudDYKLSsgICAgICByZXNvbHZfY29uZj0iJHtyZXNvbHZfY29uZn1uYW1lc2VydmVyICR7bmFtZXNlcnZlcn0kem9uZV9pZFxuIgotICAgICBkb25lCi0gICAgIHNob3B0IC11IG5vY2FzZW1hdGNoIAotIAotLSAgICBtdiAvZXRjL3Jlc29sdi5jb25mLmRoY2xpZW50NiAvZXRjL3Jlc29sdi5jb25mCi0rICAgIGVjaG8gLWUgIiR7cmVzb2x2X2NvbmZ9IiA+IC9ldGMvcmVzb2x2LmNvbmYKLSAgIGZpCi0gfQotIAotLS0gCi0yLjguMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvZGhjcC0zLjAuMy1kaGNsaWVudC1kYnVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwL2RoY3AtMy4wLjMtZGhjbGllbnQtZGJ1cy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjRhNjY2ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvZGhjcC0zLjAuMy1kaGNsaWVudC1kYnVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODYgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtkaXN0cmlidXRpb25dCi0KLS0tLSBjbGllbnQvc2NyaXB0cy9ic2RvcwotKysrIGNsaWVudC9zY3JpcHRzL2JzZG9zCi1AQCAtNDcsNiArNDcsMTEgQEAKLSAgICAgLiAvZXRjL2RoY3AvZGhjbGllbnQtZXhpdC1ob29rcwotICAgZmkKLSAjIHByb2JhYmx5IHNob3VsZCBkbyBzb21ldGhpbmcgd2l0aCBleGl0IHN0YXR1cyBvZiB0aGUgbG9jYWwgc2NyaXB0Ci0rICBpZiBbIHgkZGhjX2RidXMgIT0geCAtYSAkZXhpdF9zdGF0dXMgLWVxIDAgXTsgdGhlbgotKyAgICBkYnVzLXNlbmQgLS1zeXN0ZW0gLS1kZXN0PWNvbS5yZWRoYXQuZGhjcCBcCi0rICAgICAgLS10eXBlPW1ldGhvZF9jYWxsIC9jb20vcmVkaGF0L2RoY3AvJGludGVyZmFjZSBjb20ucmVkaGF0LmRoY3Auc2V0IFwKLSsgICAgICAnc3RyaW5nOiciYGVudiB8IGdyZXAgLUV2ICdeKFBBVEh8U0hMVkx8X3xQV0R8ZGhjX2RidXMpXD0nYCIKLSsgIGZpCi0gICBleGl0ICRleGl0X3N0YXR1cwotIH0KLSAKLS0tLSBjbGllbnQvc2NyaXB0cy9mcmVlYnNkCi0rKysgY2xpZW50L3NjcmlwdHMvZnJlZWJzZAotQEAgLTU3LDYgKzU3LDExIEBACi0gICAgIC4gL2V0Yy9kaGNwL2RoY2xpZW50LWV4aXQtaG9va3MKLSAgIGZpCi0gIyBwcm9iYWJseSBzaG91bGQgZG8gc29tZXRoaW5nIHdpdGggZXhpdCBzdGF0dXMgb2YgdGhlIGxvY2FsIHNjcmlwdAotKyAgaWYgWyB4JGRoY19kYnVzICE9IHggLWEgJGV4aXRfc3RhdHVzIC1lcSAwIF07IHRoZW4KLSsgICAgZGJ1cy1zZW5kIC0tc3lzdGVtIC0tZGVzdD1jb20ucmVkaGF0LmRoY3AgXAotKyAgICAgIC0tdHlwZT1tZXRob2RfY2FsbCAvY29tL3JlZGhhdC9kaGNwLyRpbnRlcmZhY2UgY29tLnJlZGhhdC5kaGNwLnNldCBcCi0rICAgICAgJ3N0cmluZzonImBlbnYgfCBncmVwIC1FdiAnXihQQVRIfFNITFZMfF98UFdEfGRoY19kYnVzKVw9J2AiCi0rICBmaQotICAgZXhpdCAkZXhpdF9zdGF0dXMKLSB9Ci0gCi0tLS0gY2xpZW50L3NjcmlwdHMvbGludXgKLSsrKyBjbGllbnQvc2NyaXB0cy9saW51eAotQEAgLTY5LDYgKzY5LDExIEBACi0gICAgIC4gL2V0Yy9kaGNwL2RoY2xpZW50LWV4aXQtaG9va3MKLSAgIGZpCi0gIyBwcm9iYWJseSBzaG91bGQgZG8gc29tZXRoaW5nIHdpdGggZXhpdCBzdGF0dXMgb2YgdGhlIGxvY2FsIHNjcmlwdAotKyAgaWYgWyB4JGRoY19kYnVzICE9IHggLWEgJGV4aXRfc3RhdHVzIC1lcSAwIF07IHRoZW4KLSsgICAgZGJ1cy1zZW5kIC0tc3lzdGVtIC0tZGVzdD1jb20ucmVkaGF0LmRoY3AgXAotKyAgICAgIC0tdHlwZT1tZXRob2RfY2FsbCAvY29tL3JlZGhhdC9kaGNwLyRpbnRlcmZhY2UgY29tLnJlZGhhdC5kaGNwLnNldCBcCi0rICAgICAgJ3N0cmluZzonImBlbnYgfCBncmVwIC1FdiAnXihQQVRIfFNITFZMfF98UFdEfGRoY19kYnVzKVw9J2AiCi0rICBmaQotICAgZXhpdCAkZXhpdF9zdGF0dXMKLSB9Ci0gCi0tLS0gY2xpZW50L3NjcmlwdHMvbmV0YnNkCi0rKysgY2xpZW50L3NjcmlwdHMvbmV0YnNkCi1AQCAtNDcsNiArNDcsMTEgQEAKLSAgICAgLiAvZXRjL2RoY3AvZGhjbGllbnQtZXhpdC1ob29rcwotICAgZmkKLSAjIHByb2JhYmx5IHNob3VsZCBkbyBzb21ldGhpbmcgd2l0aCBleGl0IHN0YXR1cyBvZiB0aGUgbG9jYWwgc2NyaXB0Ci0rICBpZiBbIHgkZGhjX2RidXMgIT0geCAtYSAkZXhpdF9zdGF0dXMgLWVxIDAgXTsgdGhlbgotKyAgICBkYnVzLXNlbmQgLS1zeXN0ZW0gLS1kZXN0PWNvbS5yZWRoYXQuZGhjcCBcCi0rICAgICAgLS10eXBlPW1ldGhvZF9jYWxsIC9jb20vcmVkaGF0L2RoY3AvJGludGVyZmFjZSBjb20ucmVkaGF0LmRoY3Auc2V0IFwKLSsgICAgICAnc3RyaW5nOiciYGVudiB8IGdyZXAgLUV2ICdeKFBBVEh8U0hMVkx8X3xQV0R8ZGhjX2RidXMpXD0nYCIKLSsgIGZpCi0gICBleGl0ICRleGl0X3N0YXR1cwotIH0KLSAKLS0tLSBjbGllbnQvc2NyaXB0cy9vcGVuYnNkCi0rKysgY2xpZW50L3NjcmlwdHMvb3BlbmJzZAotQEAgLTQ3LDYgKzQ3LDExIEBACi0gICAgIC4gL2V0Yy9kaGNwL2RoY2xpZW50LWV4aXQtaG9va3MKLSAgIGZpCi0gIyBwcm9iYWJseSBzaG91bGQgZG8gc29tZXRoaW5nIHdpdGggZXhpdCBzdGF0dXMgb2YgdGhlIGxvY2FsIHNjcmlwdAotKyAgaWYgWyB4JGRoY19kYnVzICE9IHggLWEgJGV4aXRfc3RhdHVzIC1lcSAwIF07IHRoZW4KLSsgICAgZGJ1cy1zZW5kIC0tc3lzdGVtIC0tZGVzdD1jb20ucmVkaGF0LmRoY3AgXAotKyAgICAgIC0tdHlwZT1tZXRob2RfY2FsbCAvY29tL3JlZGhhdC9kaGNwLyRpbnRlcmZhY2UgY29tLnJlZGhhdC5kaGNwLnNldCBcCi0rICAgICAgJ3N0cmluZzonImBlbnYgfCBncmVwIC1FdiAnXihQQVRIfFNITFZMfF98UFdEfGRoY19kYnVzKVw9J2AiCi0rICBmaQotICAgZXhpdCAkZXhpdF9zdGF0dXMKLSB9Ci0gCi0tLS0gY2xpZW50L3NjcmlwdHMvc29sYXJpcwotKysrIGNsaWVudC9zY3JpcHRzL3NvbGFyaXMKLUBAIC00Nyw2ICs0NywxMSBAQAotICAgICAuIC9ldGMvZGhjcC9kaGNsaWVudC1leGl0LWhvb2tzCi0gICBmaQotICMgcHJvYmFibHkgc2hvdWxkIGRvIHNvbWV0aGluZyB3aXRoIGV4aXQgc3RhdHVzIG9mIHRoZSBsb2NhbCBzY3JpcHQKLSsgIGlmIFsgeCRkaGNfZGJ1cyAhPSB4IC1hICRleGl0X3N0YXR1cyAtZXEgMCBdOyB0aGVuCi0rICAgIGRidXMtc2VuZCAtLXN5c3RlbSAtLWRlc3Q9Y29tLnJlZGhhdC5kaGNwIFwKLSsgICAgICAtLXR5cGU9bWV0aG9kX2NhbGwgL2NvbS9yZWRoYXQvZGhjcC8kaW50ZXJmYWNlIGNvbS5yZWRoYXQuZGhjcC5zZXQgXAotKyAgICAgICdzdHJpbmc6JyJgZW52IHwgZ3JlcCAtRXYgJ14oUEFUSHxTSExWTHxffFBXRHxkaGNfZGJ1cylcPSdgIgotKyAgZmkKLSAgIGV4aXQgJGV4aXRfc3RhdHVzCi0gfQotIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwL2ZpeHNlcGJ1aWxkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwL2ZpeHNlcGJ1aWxkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZjQ0MTQ3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC9maXhzZXBidWlsZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLUZpeCBvdXQgb2YgdHJlZSBidWlsZHMKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVJQIDIwMTMvMDMvMjEKLQotUmViYXNlIHRvIDQuMy40Ci0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIGNsaWVudC9NYWtlZmlsZS5hbSAgfCA0ICsrLS0KLSBjb21tb24vTWFrZWZpbGUuYW0gIHwgMyArKy0KLSBkaGNwY3RsL01ha2VmaWxlLmFtIHwgMiArKwotIG9tYXBpcC9NYWtlZmlsZS5hbSAgfCAxICsKLSByZWxheS9NYWtlZmlsZS5hbSAgIHwgMiArLQotIHNlcnZlci9NYWtlZmlsZS5hbSAgfCAyICstCi0gNiBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jbGllbnQvTWFrZWZpbGUuYW0gYi9jbGllbnQvTWFrZWZpbGUuYW0KLWluZGV4IDJjYjgzZDguLjQ3MzBiYjMgMTAwNjQ0Ci0tLS0gYS9jbGllbnQvTWFrZWZpbGUuYW0KLSsrKyBiL2NsaWVudC9NYWtlZmlsZS5hbQotQEAgLTcsMTEgKzcsMTEgQEAgU1VCRElSUyA9IC4gdGVzdHMKLSBCSU5ETElCRElSID0gQEJJTkRESVJAL2xpYgotIAotIEFNX0NQUEZMQUdTID0gLURDTElFTlRfUEFUSD0nIlBBVEg9JChzYmluZGlyKTovc2JpbjovYmluOi91c3Ivc2JpbjovdXNyL2JpbiInIFwKLS0JICAgICAgLURMT0NBTFNUQVRFRElSPSciJChsb2NhbHN0YXRlZGlyKSInCi0rCSAgICAgIC1ETE9DQUxTVEFURURJUj0nIiQobG9jYWxzdGF0ZWRpcikiJyAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMKLSAKLSBkaXN0X3N5c2NvbmZfREFUQSA9IGRoY2xpZW50LmNvbmYuZXhhbXBsZQotIHNiaW5fUFJPR1JBTVMgPSBkaGNsaWVudAotLWRoY2xpZW50X1NPVVJDRVMgPSBjbHBhcnNlLmMgZGhjbGllbnQuYyBkaGM2LmMgXAotK2RoY2xpZW50X1NPVVJDRVMgPSAkKHNyY2RpcikvY2xwYXJzZS5jICQoc3JjZGlyKS9kaGNsaWVudC5jICQoc3JjZGlyKS9kaGM2LmMgXAotIAkJICAgc2NyaXB0cy9ic2RvcyBzY3JpcHRzL2ZyZWVic2Qgc2NyaXB0cy9saW51eCBzY3JpcHRzL21hY29zIFwKLSAJCSAgIHNjcmlwdHMvbmV0YnNkIHNjcmlwdHMvbmV4dHN0ZXAgc2NyaXB0cy9vcGVuYnNkIFwKLSAJCSAgIHNjcmlwdHMvc29sYXJpcyBzY3JpcHRzL29wZW53cnQKLWRpZmYgLS1naXQgYS9jb21tb24vTWFrZWZpbGUuYW0gYi9jb21tb24vTWFrZWZpbGUuYW0KLWluZGV4IDExM2FlZTguLjBmMjRmYmIgMTAwNjQ0Ci0tLS0gYS9jb21tb24vTWFrZWZpbGUuYW0KLSsrKyBiL2NvbW1vbi9NYWtlZmlsZS5hbQotQEAgLTEsNCArMSw1IEBACi0tQU1fQ1BQRkxBR1MgPSAtSSQodG9wX3NyY2RpcikgLURMT0NBTFNUQVRFRElSPSciQGxvY2Fsc3RhdGVkaXJAIicKLStBTV9DUFBGTEFHUyA9IC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcyAtSSQodG9wX3NyY2RpcikgLURMT0NBTFNUQVRFRElSPSciQGxvY2Fsc3RhdGVkaXJAIicKLSsKLSBBTV9DRkxBR1MgPSAkKExEQVBfQ0ZMQUdTKQotIAotIG5vaW5zdF9MSUJSQVJJRVMgPSBsaWJkaGNwLmEKLWRpZmYgLS1naXQgYS9kaGNwY3RsL01ha2VmaWxlLmFtIGIvZGhjcGN0bC9NYWtlZmlsZS5hbQotaW5kZXggY2ViMGRlMS4uYmE4ZGQ4YiAxMDA2NDQKLS0tLSBhL2RoY3BjdGwvTWFrZWZpbGUuYW0KLSsrKyBiL2RoY3BjdGwvTWFrZWZpbGUuYW0KLUBAIC0xLDUgKzEsNyBAQAotIEJJTkRMSUJESVIgPSBAQklORERJUkAvbGliCi0gCi0rQU1fQ1BQRkxBR1MgPSAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMgLUkkKHRvcF9zcmNkaXIpCi0rCi0gYmluX1BST0dSQU1TID0gb21zaGVsbAotIGxpYl9MSUJSQVJJRVMgPSBsaWJkaGNwY3RsLmEKLSBub2luc3RfUFJPR1JBTVMgPSBjbHRlc3QKLWRpZmYgLS1naXQgYS9vbWFwaXAvTWFrZWZpbGUuYW0gYi9vbWFwaXAvTWFrZWZpbGUuYW0KLWluZGV4IDQ0NmE1OTQuLmRkMWFmYTAgMTAwNjQ0Ci0tLS0gYS9vbWFwaXAvTWFrZWZpbGUuYW0KLSsrKyBiL29tYXBpcC9NYWtlZmlsZS5hbQotQEAgLTEsNCArMSw1IEBACi0gQklORExJQkRJUiA9IEBCSU5ERElSQC9saWIKLStBTV9DUFBGTEFHUyA9IC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcwotIAotIGxpYl9MSUJSQVJJRVMgPSBsaWJvbWFwaS5hCi0gbm9pbnN0X1BST0dSQU1TID0gc3Z0ZXN0Ci1kaWZmIC0tZ2l0IGEvcmVsYXkvTWFrZWZpbGUuYW0gYi9yZWxheS9NYWtlZmlsZS5hbQotaW5kZXggMzA2MGVjYS4uNmQ2NTJmNiAxMDA2NDQKLS0tLSBhL3JlbGF5L01ha2VmaWxlLmFtCi0rKysgYi9yZWxheS9NYWtlZmlsZS5hbQotQEAgLTEsNiArMSw2IEBACi0gQklORExJQkRJUiA9IEBCSU5ERElSQC9saWIKLSAKLS1BTV9DUFBGTEFHUyA9IC1ETE9DQUxTVEFURURJUj0nIkBsb2NhbHN0YXRlZGlyQCInCi0rQU1fQ1BQRkxBR1MgPSAtRExPQ0FMU1RBVEVESVI9JyJAbG9jYWxzdGF0ZWRpckAiJyAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMKLSAKLSBzYmluX1BST0dSQU1TID0gZGhjcmVsYXkKLSBkaGNyZWxheV9TT1VSQ0VTID0gZGhjcmVsYXkuYwotZGlmZiAtLWdpdCBhL3NlcnZlci9NYWtlZmlsZS5hbSBiL3NlcnZlci9NYWtlZmlsZS5hbQotaW5kZXggNTRmZWVkZi4uMzk5MGI5YyAxMDA2NDQKLS0tLSBhL3NlcnZlci9NYWtlZmlsZS5hbQotKysrIGIvc2VydmVyL01ha2VmaWxlLmFtCi1AQCAtNiw3ICs2LDcgQEAgU1VCRElSUyA9IC4gdGVzdHMKLSAKLSBCSU5ETElCRElSID0gQEJJTkRESVJAL2xpYgotIAotLUFNX0NQUEZMQUdTID0gLUkuLiAtRExPQ0FMU1RBVEVESVI9JyJAbG9jYWxzdGF0ZWRpckAiJwotK0FNX0NQUEZMQUdTID0gLUkkKHRvcF9zcmNkaXIpIC1ETE9DQUxTVEFURURJUj0nIkBsb2NhbHN0YXRlZGlyQCInIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcwotIAotIGRpc3Rfc3lzY29uZl9EQVRBID0gZGhjcGQuY29uZi5leGFtcGxlCi0gc2Jpbl9QUk9HUkFNUyA9IGRoY3BkCi0tLSAKLTIuOC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC9saWJ4bWwyLWNvbmZpZ3VyZS1hcmd1bWVudC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC9saWJ4bWwyLWNvbmZpZ3VyZS1hcmd1bWVudC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTQzNTY2Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvbGlieG1sMi1jb25maWd1cmUtYXJndW1lbnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1BZGQgY29uZmlndXJlIGFyZ3VtZW50IHRvIG1ha2UgdGhlIGxpYnhtbDIgZGVwZW5kZW5jeSBleHBsaWNpdCBhbmQKLWRldGVybWluaXNpdGljLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoZXIgTGFyc29uIDxjaHJpc19sYXJzb25AbWVudG9yLmNvbT4KLQotUmViYXNlIHRvIDQuMy40Ci1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCAxMSArKysrKysrKysrLQotIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDcyNmM4OGUuLjE2ODRkZjEgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTcxOCw3ICs3MTgsMTYgQEAgQUNfU1VCU1QoQklORFNSQ0RJUikKLSAKLSAjIFdlIG5lZWQgdG8gZmluZCBsaWJ4bWwyIGlmIGJpbmQgd2FzIGJ1aWx0IHdpdGggc3VwcG9ydCBlbmFibGVkCi0gIyBvdGhlcndpc2Ugd2UnbGwgZmFpbCB0byBidWlsZCBvbWFwaXAvdGVzdC5jCi0tQUNfU0VBUkNIX0xJQlMoeG1sVGV4dFdyaXRlclN0YXJ0RWxlbWVudCwgW3htbDJdLCkKLStBQ19BUkdfV0lUSChsaWJ4bWwyLAotKwlBU19IRUxQX1NUUklORyhbLS13aXRoLWxpYnhtbDJdLCBbbGluayBhZ2FpbnN0IGxpYnhtbDIuIHRoaXMgaXMgbmVlZGVkIGlmIGJpbmQgd2FzIGJ1aWx0IHdpdGggeG1sMiBzdXBwb3J0IGVuYWJsZWRdKSwKLSsJd2l0aF9saWJ4bWwyPSIkd2l0aHZhbCIsIHdpdGhfbGlieG1sMj0ibm8iKQotKwotK2lmIHRlc3QgeCR3aXRoX2xpYnhtbDIgIT0geG5vOyB0aGVuCi0rICAgIEFDX1NFQVJDSF9MSUJTKHhtbFRleHRXcml0ZXJTdGFydEVsZW1lbnQsIFt4bWwyXSwKLSsgICAgICAgICAgICAgICAgICAgW2lmIHRlc3QgeCR3aXRoX2xpYnhtbDIgIT0geGF1dG87IHRoZW4KLSsgICAgICAgICAgICAgICAgICAgICAgICBBQ19NU0dfRkFJTFVSRShbKioqIENhbm5vdCBmaW5kIHhtbFRleHRXcml0ZXJTdGFydEVsZW1lbnQgd2l0aCAtbHhtbDIgYW5kIGxpYnhtbDIgd2FzIHJlcXVlc3RlZF0pCi0rICAgICAgICAgICAgICAgICAgICBmaV0pCi0rZmkKLSAKLSAjIE9wZW5MREFQIHN1cHBvcnQuCi0gQUNfQVJHX1dJVEgobGRhcCwKLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwL2xpbmstd2l0aC1sY3J5cHRvLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwL2xpbmstd2l0aC1sY3J5cHRvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZDBlMGRkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC9saW5rLXdpdGgtbGNyeXB0by5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLUF1dGhvcjogQW5kcmVpIEdoZXJ6YW4gPGFuZHJlaUBnaGVyemFuLnJvPgotRGF0ZTogICBUaHUgRmViIDIgMjM6NTk6MTEgMjAxMiArMDIwMAotCi1Gcm9tIDQuMi4wIGZpbmFsIHJlbGVhc2UsIC1sY3J5cHRvIGNoZWNrIHdhcyByZW1vdmVkIGFuZCB3ZSBjb21waWxlIHN0YXRpYyBsaWJyYXJpZXMKLWZyb20gYmluZCB0aGF0IGFyZSBsaW5rZWQgdG8gbGliY3J5cHRvLiBUaGlzIGlzIHdoeSBpIGFkZGVkIGEgcGF0Y2ggaW4gb3JkZXIgdG8gYWRkCi0tbGNyeXB0byB0byBMSUJTLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEFuZHJlaSBHaGVyemFuIDxhbmRyZWlAZ2hlcnphbi5ybz4KLQotUmViYXNlIHRvIDQuMy40Ci1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCA0ICsrKysKLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDA5N2IwYzMuLjcyNmM4OGUgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTU4NCw2ICs1ODQsMTAgQEAgQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbW11dLCBbW3ZvaWQgZm9vKCkgX19hdHRyaWJ1dGVfXygobm9yZXR1cm4pKTsKLSAjIExvb2sgZm9yIG9wdGlvbmFsIGhlYWRlcnMuCi0gQUNfQ0hFQ0tfSEVBREVSUyhzeXMvc29ja2V0LmggbmV0L2lmX2RsLmggbmV0L2lmNi5oIHJlZ2V4LmgpCi0gCi0rIyBmaW5kIGFuIE1ENSBsaWJyYXJ5Ci0rQUNfU0VBUkNIX0xJQlMoTUQ1X0luaXQsIFtjcnlwdG9dKQotK0FDX1NFQVJDSF9MSUJTKE1ENUluaXQsIFtjcnlwdG9dKQotKwotICMgU29sYXJpcyBuZWVkcyBzb21lIGxpYnJhcmllcyBmb3IgZnVuY3Rpb25zCi0gQUNfU0VBUkNIX0xJQlMoc29ja2V0LCBbc29ja2V0XSkKLSBBQ19TRUFSQ0hfTElCUyhpbmV0X250b2EsIFtuc2xdKQotLS0gCi0yLjguMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvcmVtb3ZlLWRoY2xpZW50LXNjcmlwdC1iYXNoLWRlcGVuZGVuY3kucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvcmVtb3ZlLWRoY2xpZW50LXNjcmlwdC1iYXNoLWRlcGVuZGVuY3kucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5N2I5ZjYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwL3JlbW92ZS1kaGNsaWVudC1zY3JpcHQtYmFzaC1kZXBlbmRlbmN5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotRnJvbSA4YWVkMmE5ZmYwOWNiMGQ1ODRhZDBhNzM0MGZlM2E1OTY4NzlkOWIxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMjEgSnVsIDIwMTYgMTk6MDc6MDIgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gcmVtb3ZlIGRoY2xpZW50LXNjcmlwdCBiYXNoIGRlcGVuZGVuY3kKLQotVGFrZSB0aGUgZGFzaCBjb21wYXRpYmxlIElQdjYgbGluay1sb2NhbCBhZGRyZXNzIHRlc3QgZnJvbSB0aGUgRGViaWFuCi12ZXJzaW9uIG9mIGRoY2xpZW50LXNjcmlwdC4KLQotTm90ZSB0aGF0IGFsdGhvdWdoICJlY2hvIC1lIiBpbiB0aGUgT0UgdmVyc2lvbiBvZiBkaGNsaWVudC1zY3JpcHQgaXMKLXRlY2huaWNhbGx5IGJhc2ggc3BlY2lmaWMgdG9vLCBpdCBpcyBzdXBwb3J0ZWQgYnkgQnVzeWJveCBlY2hvIHdoZW4KLUJ1c3lib3ggaXMgY29uZmlndXJlZCB3aXRoIENPTkZJR19GRUFUVVJFX0ZBTkNZX0VDSE8gZW5hYmxlZCAod2hpY2gKLWlzIHRoZSBkZWZhdWx0IGluIHRoZSBPRSBCdXN5Ym94IGRlZmNvbmZpZykgdGhlcmVmb3JlIGxlYXZlIGFzLWlzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgotLS0tCi0gY2xpZW50L3NjcmlwdHMvbGludXggfCA3ICsrKy0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY2xpZW50L3NjcmlwdHMvbGludXggYi9jbGllbnQvc2NyaXB0cy9saW51eAotaW5kZXggMjMyYTBhYS4uMTM4M2Y0NiAxMDA3NTUKLS0tLSBhL2NsaWVudC9zY3JpcHRzL2xpbnV4Ci0rKysgYi9jbGllbnQvc2NyaXB0cy9saW51eAotQEAgLTEsNCArMSw0IEBACi0tIyEvYmluL2Jhc2gKLSsjIS9iaW4vc2gKLSAjIGRoY2xpZW50LXNjcmlwdCBmb3IgTGludXguIERhbiBIYWxiZXJ0LCBNYXJjaCwgMTk5Ny4KLSAjIFVwZGF0ZWQgZm9yIExpbnV4IDIuWzEyXSBieSBCcmlhbiBKLiBNdXJyZWxsLCBKYW51YXJ5IDE5OTkuCi0gIyBObyBndWFyYW50ZWVzIGFib3V0IHRoaXMuIEknbSBhIG5vdmljZSBhdCB0aGUgZGV0YWlscyBvZiBMaW51eAotQEAgLTQ3LDExICs0NywxMSBAQCBtYWtlX3Jlc29sdl9jb25mKCkgewotICAgICBpZiBbICJ4JHtuZXdfZGhjcDZfZG9tYWluX3NlYXJjaH0iICE9IHggXSA7IHRoZW4KLSAgICAgICByZXNvbHZfY29uZj0ic2VhcmNoICR7bmV3X2RoY3A2X2RvbWFpbl9zZWFyY2h9XG4iCi0gICAgIGZpCi0tICAgIHNob3B0IC1zIG5vY2FzZW1hdGNoIAotICAgICBmb3IgbmFtZXNlcnZlciBpbiAke25ld19kaGNwNl9uYW1lX3NlcnZlcnN9IDsgZG8KLSAgICAgICAjIElmIHRoZSBuYW1lc2VydmVyIGhhcyBhIGxpbmstbG9jYWwgYWRkcmVzcwotICAgICAgICMgYWRkIGEgPHpvbmVfaWQ+IChpbnRlcmZhY2UgbmFtZSkgdG8gaXQuCi0tICAgICAgaWYgIFtbICIkbmFtZXNlcnZlciIgPX4gXmZlODA6OiBdXQotKyAgICAgIGlmIFsgIiR7bmFtZXNlcnZlciMjZmU4MDo6fSIgIT0gIiRuYW1lc2VydmVyIiBdIHx8Ci0rICAgICAgICAgWyAiJHtuYW1lc2VydmVyIyNGRTgwOjp9IiAhPSAiJG5hbWVzZXJ2ZXIiIF0KLSAgICAgICB0aGVuCi0gCXpvbmVfaWQ9IiUkaW50ZXJmYWNlIgotICAgICAgIGVsc2UKLUBAIC01OSw3ICs1OSw2IEBAIG1ha2VfcmVzb2x2X2NvbmYoKSB7Ci0gICAgICAgZmkKLSAgICAgICByZXNvbHZfY29uZj0iJHtyZXNvbHZfY29uZn1uYW1lc2VydmVyICR7bmFtZXNlcnZlcn0kem9uZV9pZFxuIgotICAgICBkb25lCi0tICAgIHNob3B0IC11IG5vY2FzZW1hdGNoIAotIAotICAgICBlY2hvIC1lICIke3Jlc29sdl9jb25mfSIgPiAvZXRjL3Jlc29sdi5jb25mCi0gICBmaQotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvcmVwbGFjZS1pZmNvbmZpZy1yb3V0ZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC9yZXBsYWNlLWlmY29uZmlnLXJvdXRlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODRkZjVjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC9yZXBsYWNlLWlmY29uZmlnLXJvdXRlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTg4ICswLDAgQEAKLUZvdW5kIHRoaXMgcGF0Y2ggaGVyZToKLWh0dHBzOi8vbGlzdHMuaXNjLm9yZy9waXBlcm1haWwvZGhjcC11c2Vycy8yMDExLUphbnVhcnkvMDEyOTEwLmh0bWwKLQotYW5kIG1hZGUgc29tZSBhZGp1c3RtZW50cy91cGRhdGVzIHRvIG1ha2UgaXQgd29yayB3aXRoIHRoaXMgdmVyc2lvbi4KLVdhc24ndCBhYmxlIHRvIGZpbmQgdGhhdCB3aHkgdGhpcyBwYXRjaCB3YXMgbm90IGFjY2VwdGVkIGJ5IElTQyBESENQIGRldmVsb3BlcnMuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBNdWhhbW1hZCBTaGFrZWVsIDxtdWhhbW1hZF9zaGFrZWVsQG1lbnRvci5jb20+Ci0KLVJlYmFzZSB0byA0LjMuNAotCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBjbGllbnQvc2NyaXB0cy9saW51eCB8IDgyICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNDUgaW5zZXJ0aW9ucygrKSwgMzcgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jbGllbnQvc2NyaXB0cy9saW51eCBiL2NsaWVudC9zY3JpcHRzL2xpbnV4Ci1pbmRleCBhMDJjZmQ5Li4yMzJhMGFhIDEwMDc1NQotLS0tIGEvY2xpZW50L3NjcmlwdHMvbGludXgKLSsrKyBiL2NsaWVudC9zY3JpcHRzL2xpbnV4Ci1AQCAtMTAxLDE3ICsxMDEsMTEgQEAgZmkKLSBpZiBbIHgkb2xkX2Jyb2FkY2FzdF9hZGRyZXNzICE9IHggXTsgdGhlbgotICAgb2xkX2Jyb2FkY2FzdF9hcmc9ImJyb2FkY2FzdCAkb2xkX2Jyb2FkY2FzdF9hZGRyZXNzIgotIGZpCi0taWYgWyB4JG5ld19zdWJuZXRfbWFzayAhPSB4IF07IHRoZW4KLS0gIG5ld19zdWJuZXRfYXJnPSJuZXRtYXNrICRuZXdfc3VibmV0X21hc2siCi0raWYgWyAtbiAiJG5ld19zdWJuZXRfbWFzayIgXTsgdGhlbgotKyAgICBuZXdfbWFzaz0iLyRuZXdfc3VibmV0X21hc2siCi0gZmkKLS1pZiBbIHgkb2xkX3N1Ym5ldF9tYXNrICE9IHggXTsgdGhlbgotLSAgb2xkX3N1Ym5ldF9hcmc9Im5ldG1hc2sgJG9sZF9zdWJuZXRfbWFzayIKLS1maQotLWlmIFsgeCRhbGlhc19zdWJuZXRfbWFzayAhPSB4IF07IHRoZW4KLS0gIGFsaWFzX3N1Ym5ldF9hcmc9Im5ldG1hc2sgJGFsaWFzX3N1Ym5ldF9tYXNrIgotLWZpCi0taWYgWyB4JG5ld19pbnRlcmZhY2VfbXR1ICE9IHggXTsgdGhlbgotLSAgbXR1X2FyZz0ibXR1ICRuZXdfaW50ZXJmYWNlX210dSIKLStpZiBbIC1uICIkYWxpYXNfc3VibmV0X21hc2siIF07IHRoZW4KLSsgICAgYWxpYXNfbWFzaz0iLyRhbGlhc19zdWJuZXRfbWFzayIKLSBmaQotIGlmIFsgeCRJRl9NRVRSSUMgIT0geCBdOyB0aGVuCi0gICBtZXRyaWNfYXJnPSJtZXRyaWMgJElGX01FVFJJQyIKLUBAIC0xMjUsOSArMTE5LDkgQEAgZmkKLSBpZiBbIHgkcmVhc29uID0geFBSRUlOSVQgXTsgdGhlbgotICAgaWYgWyB4JGFsaWFzX2lwX2FkZHJlc3MgIT0geCBdOyB0aGVuCi0gICAgICMgQnJpbmcgZG93biBhbGlhcyBpbnRlcmZhY2UuIEl0cyByb3V0ZXMgd2lsbCBkaXNhcHBlYXIgdG9vLgotLSAgICBpZmNvbmZpZyAkaW50ZXJmYWNlOjAtIGluZXQgMAotKyAgICAke2lwfSAtNCBhZGRyIGZsdXNoIGRldiAke2ludGVyZmFjZX0gbGFiZWwgJHtpbnRlcmZhY2V9OjAKLSAgIGZpCi0tICBpZmNvbmZpZyAkaW50ZXJmYWNlIDAgdXAKLSsgICR7aXB9IGxpbmsgc2V0IGRldiAke2ludGVyZmFjZX0gdXAKLSAKLSAgICMgV2UgbmVlZCB0byBnaXZlIHRoZSBrZXJuZWwgc29tZSB0aW1lIHRvIGdldCB0aGUgaW50ZXJmYWNlIHVwLgotICAgc2xlZXAgMQotQEAgLTE1NCwyNSArMTQ4LDMwIEBAIGlmIFsgeCRyZWFzb24gPSB4Qk9VTkQgXSB8fCBbIHgkcmVhc29uID0geFJFTkVXIF0gfHwgXAotICAgaWYgWyB4JG9sZF9pcF9hZGRyZXNzICE9IHggXSAmJiBbIHgkYWxpYXNfaXBfYWRkcmVzcyAhPSB4IF0gJiYgXAotIAkJWyB4JGFsaWFzX2lwX2FkZHJlc3MgIT0geCRvbGRfaXBfYWRkcmVzcyBdOyB0aGVuCi0gICAgICMgUG9zc2libGUgbmV3IGFsaWFzLiBSZW1vdmUgb2xkIGFsaWFzLgotLSAgICBpZmNvbmZpZyAkaW50ZXJmYWNlOjAtIGluZXQgMAotKyAgICAke2lwfSAtNCBhZGRyIGZsdXNoIGRldiAke2ludGVyZmFjZX0gbGFiZWwgJHtpbnRlcmZhY2V9OjAKLSAgIGZpCi0gICBpZiBbIHgkb2xkX2lwX2FkZHJlc3MgIT0geCBdICYmIFsgeCRvbGRfaXBfYWRkcmVzcyAhPSB4JG5ld19pcF9hZGRyZXNzIF07IHRoZW4KLSAgICAgIyBJUCBhZGRyZXNzIGNoYW5nZWQuIEJyaW5naW5nIGRvd24gdGhlIGludGVyZmFjZSB3aWxsIGRlbGV0ZSBhbGwgcm91dGVzLAotICAgICAjIGFuZCBjbGVhciB0aGUgQVJQIGNhY2hlLgotLSAgICBpZmNvbmZpZyAkaW50ZXJmYWNlIGluZXQgMCBkb3duCi0rICAgICR7aXB9IC00IGFkZHIgZmx1c2ggZGV2ICR7aW50ZXJmYWNlfSBsYWJlbCAke2ludGVyZmFjZX0KLSAKLSAgIGZpCi0gICBpZiBbIHgkb2xkX2lwX2FkZHJlc3MgPSB4IF0gfHwgWyB4JG9sZF9pcF9hZGRyZXNzICE9IHgkbmV3X2lwX2FkZHJlc3MgXSB8fCBcCi0gICAgICBbIHgkcmVhc29uID0geEJPVU5EIF0gfHwgWyB4JHJlYXNvbiA9IHhSRUJPT1QgXTsgdGhlbgotIAotLSAgICBpZmNvbmZpZyAkaW50ZXJmYWNlIGluZXQgJG5ld19pcF9hZGRyZXNzICRuZXdfc3VibmV0X2FyZyBcCi0tCQkJCQkkbmV3X2Jyb2FkY2FzdF9hcmcgJG10dV9hcmcKLSsgICAgJHtpcH0gLTQgYWRkciBhZGQgJHtuZXdfaXBfYWRkcmVzc30ke25ld19tYXNrfSAke25ld19icm9hZGNhc3RfYXJnfSBcCi0rICAgICAgICAgICAgICAgIGRldiAke2ludGVyZmFjZX0gbGFiZWwgJHtpbnRlcmZhY2V9Ci0rICAgIGlmIFsgLW4gIiRuZXdfaW50ZXJmYWNlX210dSIgXTsgdGhlbgotKyAgICAgICMgc2V0IE1UVQotKyAgICAgICR7aXB9IGxpbmsgc2V0IGRldiAke2ludGVyZmFjZX0gbXR1ICR7bmV3X2ludGVyZmFjZV9tdHV9Ci0rICAgIGZpCi0gICAgICMgQWRkIGEgbmV0d29yayByb3V0ZSB0byB0aGUgY29tcHV0ZWQgbmV0d29yayBhZGRyZXNzLgotICAgICBmb3Igcm91dGVyIGluICRuZXdfcm91dGVyczsgZG8KLSAgICAgICBpZiBbICJ4JG5ld19zdWJuZXRfbWFzayIgPSAieDI1NS4yNTUuMjU1LjI1NSIgXSA7IHRoZW4KLS0Jcm91dGUgYWRkIC1ob3N0ICRyb3V0ZXIgZGV2ICRpbnRlcmZhY2UKLSsgICAgICAgICR7aXB9IC00IHJvdXRlIGFkZCAke3JvdXRlcn0gZGV2ICRpbnRlcmZhY2UgPi9kZXYvbnVsbCAyPiYxCi0gICAgICAgZmkKLS0gICAgICByb3V0ZSBhZGQgZGVmYXVsdCBndyAkcm91dGVyICRtZXRyaWNfYXJnIGRldiAkaW50ZXJmYWNlCi0rICAgICAgJHtpcH0gLTQgcm91dGUgYWRkIGRlZmF1bHQgdmlhICR7cm91dGVyfSBkZXYgJHtpbnRlcmZhY2V9IFwKLSsgICAgICAgICR7bWV0cmljX2FyZ30gPi9kZXYvbnVsbCAyPiYxCi0gICAgIGRvbmUKLSAgIGVsc2UKLSAgICAgIyB3ZSBoYXZlbid0IGNoYW5nZWQgdGhlIGFkZHJlc3MsIGhhdmUgd2UgY2hhbmdlZCBvdGhlciBvcHRpb25zICAgICAgICAgICAKLUBAIC0xODAsMjEgKzE3OSwyMyBAQCBpZiBbIHgkcmVhc29uID0geEJPVU5EIF0gfHwgWyB4JHJlYXNvbiA9IHhSRU5FVyBdIHx8IFwKLSAgICAgaWYgWyB4JG5ld19yb3V0ZXJzICE9IHggXSAmJiBbIHgkbmV3X3JvdXRlcnMgIT0geCRvbGRfcm91dGVycyBdIDsgdGhlbgotICAgICAgICMgaWYgd2UndmUgY2hhbmdlZCByb3V0ZXJzIGRlbGV0ZSB0aGUgb2xkIGFuZCBhZGQgdGhlIG5ldy4KLSAgICAgICBmb3Igcm91dGVyIGluICRvbGRfcm91dGVyczsgZG8KLS0gICAgICAgIHJvdXRlIGRlbCBkZWZhdWx0IGd3ICRyb3V0ZXIKLSsgICAgICAgICR7aXB9IC00IHJvdXRlIGRlbGV0ZSBkZWZhdWx0IHZpYSAke3JvdXRlcn0KLSAgICAgICBkb25lCi0gICAgICAgZm9yIHJvdXRlciBpbiAkbmV3X3JvdXRlcnM7IGRvCi0gICAgICAgICBpZiBbICJ4JG5ld19zdWJuZXRfbWFzayIgPSAieDI1NS4yNTUuMjU1LjI1NSIgXSA7IHRoZW4KLS0JICByb3V0ZSBhZGQgLWhvc3QgJHJvdXRlciBkZXYgJGludGVyZmFjZQotLQlmaQotLQlyb3V0ZSBhZGQgZGVmYXVsdCBndyAkcm91dGVyICRtZXRyaWNfYXJnIGRldiAkaW50ZXJmYWNlCi0rCSAgICAgICR7aXB9IC00IHJvdXRlIGFkZCAke3JvdXRlcn0gZGV2ICRpbnRlcmZhY2UgPi9kZXYvbnVsbCAyPiYxCi0rCSAgICBmaQotKyAgICAgICAgJHtpcH0gLTQgcm91dGUgYWRkIGRlZmF1bHQgdmlhICR7cm91dGVyfSBkZXYgJHtpbnRlcmZhY2V9IFwKLSsgICAgICAgICAgJHttZXRyaWNfYXJnfSA+L2Rldi9udWxsIDI+JjEKLSAgICAgICBkb25lCi0gICAgIGZpCi0gICBmaQotICAgaWYgWyB4JG5ld19pcF9hZGRyZXNzICE9IHgkYWxpYXNfaXBfYWRkcmVzcyBdICYmIFsgeCRhbGlhc19pcF9hZGRyZXNzICE9IHggXTsKLSAgICB0aGVuCi0tICAgIGlmY29uZmlnICRpbnRlcmZhY2U6MC0gaW5ldCAwCi0tICAgIGlmY29uZmlnICRpbnRlcmZhY2U6MCBpbmV0ICRhbGlhc19pcF9hZGRyZXNzICRhbGlhc19zdWJuZXRfYXJnCi0tICAgIHJvdXRlIGFkZCAtaG9zdCAkYWxpYXNfaXBfYWRkcmVzcyAkaW50ZXJmYWNlOjAKLSsgICAgJHtpcH0gLTQgYWRkciBmbHVzaCBkZXYgJHtpbnRlcmZhY2V9IGxhYmVsICR7aW50ZXJmYWNlfTowCi0rICAgICR7aXB9IC00IGFkZHIgYWRkICR7YWxpYXNfaXBfYWRkcmVzc30ke2FsaWFzX21hc2t9IFwKLSsgICAgICAgIGRldiAke2ludGVyZmFjZX0gbGFiZWwgJHtpbnRlcmZhY2V9OjAKLSsgICAgJHtpcH0gLTQgcm91dGUgYWRkICR7YWxpYXNfaXBfYWRkcmVzc30gZGV2ICR7aW50ZXJmYWNlfSA+L2Rldi9udWxsIDI+JjEKLSAgIGZpCi0gICBtYWtlX3Jlc29sdl9jb25mCi0gICBleGl0X3dpdGhfaG9va3MgMAotQEAgLTIwNCw0MiArMjA1LDQ5IEBAIGlmIFsgeCRyZWFzb24gPSB4RVhQSVJFIF0gfHwgWyB4JHJlYXNvbiA9IHhGQUlMIF0gfHwgWyB4JHJlYXNvbiA9IHhSRUxFQVNFIF0gXAotICAgIHx8IFsgeCRyZWFzb24gPSB4U1RPUCBdOyB0aGVuCi0gICBpZiBbIHgkYWxpYXNfaXBfYWRkcmVzcyAhPSB4IF07IHRoZW4KLSAgICAgIyBUdXJuIG9mZiBhbGlhcyBpbnRlcmZhY2UuCi0tICAgIGlmY29uZmlnICRpbnRlcmZhY2U6MC0gaW5ldCAwCi0rICAgICR7aXB9IC00IGFkZHIgZmx1c2ggZGV2ICR7aW50ZXJmYWNlfSBsYWJlbCAke2ludGVyZmFjZX06MAotICAgZmkKLSAgIGlmIFsgeCRvbGRfaXBfYWRkcmVzcyAhPSB4IF07IHRoZW4KLSAgICAgIyBTaHV0IGRvd24gaW50ZXJmYWNlLCB3aGljaCB3aWxsIGRlbGV0ZSByb3V0ZXMgYW5kIGNsZWFyIGFycCBjYWNoZS4KLS0gICAgaWZjb25maWcgJGludGVyZmFjZSBpbmV0IDAgZG93bgotKyAgICAke2lwfSAtNCBhZGRyIGZsdXNoIGRldiAke2ludGVyZmFjZX0gbGFiZWwgJHtpbnRlcmZhY2V9Ci0gICBmaQotICAgaWYgWyB4JGFsaWFzX2lwX2FkZHJlc3MgIT0geCBdOyB0aGVuCi0tICAgIGlmY29uZmlnICRpbnRlcmZhY2U6MCBpbmV0ICRhbGlhc19pcF9hZGRyZXNzICRhbGlhc19zdWJuZXRfYXJnCi0tICAgIHJvdXRlIGFkZCAtaG9zdCAkYWxpYXNfaXBfYWRkcmVzcyAkaW50ZXJmYWNlOjAKLSsgICAgJHtpcH0gLTQgYWRkciBhZGQgJHthbGlhc19pcF9hZGRyZXNzfSR7YWxpYXNfbmV0d29ya19hcmd9IFwKLSsgICAgICAgIGRldiAke2ludGVyZmFjZX0gbGFiZWwgJHtpbnRlcmZhY2V9OjAKLSsgICAgJHtpcH0gLTQgcm91dGUgYWRkICR7YWxpYXNfaXBfYWRkcmVzc30gZGV2ICR7aW50ZXJmYWNlfSA+L2Rldi9udWxsIDI+JjEKLSAgIGZpCi0gICBleGl0X3dpdGhfaG9va3MgMAotIGZpCi0gCi0gaWYgWyB4JHJlYXNvbiA9IHhUSU1FT1VUIF07IHRoZW4KLSAgIGlmIFsgeCRhbGlhc19pcF9hZGRyZXNzICE9IHggXTsgdGhlbgotLSAgICBpZmNvbmZpZyAkaW50ZXJmYWNlOjAtIGluZXQgMAotKyAgICAke2lwfSAtNCBhZGRyIGZsdXNoIGRldiAke2ludGVyZmFjZX0gbGFiZWwgJHtpbnRlcmZhY2V9OjAKLSsgIGZpCi0rICAke2lwfSAtNCBhZGRyIGFkZCAke25ld19pcF9hZGRyZXNzfSR7bmV3X21hc2t9ICR7bmV3X2Jyb2FkY2FzdF9hcmd9IFwKLSsgICAgICAgICAgICBkZXYgJHtpbnRlcmZhY2V9IGxhYmVsICR7aW50ZXJmYWNlfQotKyAgaWYgWyAtbiAiJG5ld19pbnRlcmZhY2VfbXR1IiBdOyB0aGVuCi0rICAgICMgc2V0IE1UVQotKyAgICBpcCBsaW5rIHNldCBkZXYgJHtpbnRlcmZhY2V9IG10dSAke25ld19pbnRlcmZhY2VfbXR1fQotICAgZmkKLS0gIGlmY29uZmlnICRpbnRlcmZhY2UgaW5ldCAkbmV3X2lwX2FkZHJlc3MgJG5ld19zdWJuZXRfYXJnIFwKLS0JCQkJCSRuZXdfYnJvYWRjYXN0X2FyZyAkbXR1X2FyZwotICAgc2V0ICRuZXdfcm91dGVycwotICAgaWYgcGluZyAtcSAtYyAxICQxOyB0aGVuCi0gICAgIGlmIFsgeCRuZXdfaXBfYWRkcmVzcyAhPSB4JGFsaWFzX2lwX2FkZHJlc3MgXSAmJiBcCi0gCQkJWyB4JGFsaWFzX2lwX2FkZHJlc3MgIT0geCBdOyB0aGVuCi0tICAgICAgaWZjb25maWcgJGludGVyZmFjZTowIGluZXQgJGFsaWFzX2lwX2FkZHJlc3MgJGFsaWFzX3N1Ym5ldF9hcmcKLS0gICAgICByb3V0ZSBhZGQgLWhvc3QgJGFsaWFzX2lwX2FkZHJlc3MgZGV2ICRpbnRlcmZhY2U6MAotKyAgICAgICR7aXB9IC00IGFkZHIgYWRkICR7YWxpYXNfaXBfYWRkcmVzc30ke2FsaWFzX21hc2t9IFwKLSsgICAgICAgICAgICBkZXYgJHtpbnRlcmZhY2V9IGxhYmVsICR7aW50ZXJmYWNlfTowCi0rICAgICAgJHtpcH0gLTQgcm91dGUgYWRkICR7YWxpYXNfaXBfYWRkcmVzc30gZGV2ICR7aW50ZXJmYWNlfSA+L2Rldi9udWxsIDI+JjEKLSAgICAgZmkKLSAgICAgZm9yIHJvdXRlciBpbiAkbmV3X3JvdXRlcnM7IGRvCi0gICAgICAgaWYgWyAieCRuZXdfc3VibmV0X21hc2siID0gIngyNTUuMjU1LjI1NS4yNTUiIF0gOyB0aGVuCi0tCXJvdXRlIGFkZCAtaG9zdCAkcm91dGVyIGRldiAkaW50ZXJmYWNlCi0rCSAgICAke2lwfSAtNCByb3V0ZSBhZGQgJHtyb3V0ZXJ9IGRldiAkaW50ZXJmYWNlID4vZGV2L251bGwgMj4mMQotICAgICAgIGZpCi0tICAgICAgcm91dGUgYWRkIGRlZmF1bHQgZ3cgJHJvdXRlciAkbWV0cmljX2FyZyBkZXYgJGludGVyZmFjZQotKyAgICAgICR7aXB9IC00IHJvdXRlIGFkZCBkZWZhdWx0IHZpYSAke3JvdXRlcn0gZGV2ICR7aW50ZXJmYWNlfSBcCi0rICAgICAgICAke21ldHJpY19hcmd9ID4vZGV2L251bGwgMj4mMQotICAgICBkb25lCi0gICAgIG1ha2VfcmVzb2x2X2NvbmYKLSAgICAgZXhpdF93aXRoX2hvb2tzIDAKLSAgIGZpCi0tICBpZmNvbmZpZyAkaW50ZXJmYWNlIGluZXQgMCBkb3duCi0rICAke2lwfSAtNCBhZGRyIGZsdXNoIGRldiAke2ludGVyZmFjZX0KLSAgIGV4aXRfd2l0aF9ob29rcyAxCi0gZmkKLSAKLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwL3NlYXJjaC1mb3ItbGlieG1sMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC9zZWFyY2gtZm9yLWxpYnhtbDIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwOGE1YjcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwL3NlYXJjaC1mb3ItbGlieG1sMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLWxpYmRucyByZXF1aXJlcyBsaWJ4bWwyIGlmIGJpbmQgd2FzIGJ1aWx0IHdpdGggbGlieG1sMiBzdXBwb3J0Ci1lbmFibGVkLiBDb21waWxhdGlvbiB3aWxsIGZhaWwgZm9yIG9tYXBpcC90ZXN0LmMgaW4gY2FzZQotbHhtbDIgaXNuJ3QgdXNlZCBkdXJpbmcgdGhlIGJ1aWxkLiBTbywgd2UgYWRkIGxvc2VseSBjb3VwbGVkCi1zZWFyY2ggcGF0aCB3aGljaCB3aWxsIHBpY2sgdXAgdGhlIGxpYiBpZiBpdCBpcyBwcmVzZW50LgotCi1TaWduZWQtb2ZmLWJ5OiBBd2FpcyBCZWxhbCA8YXdhaXNfYmVsYWxAbWVudG9yLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBjOWRjOGI1Li44NWY1OWJlIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC02MDIsNiArNjAyLDEwIEBAIG5vKQotIGVzYWMKLSBBQ19TVUJTVChbbGliYmluZF0pCi0gCi0rIyBXZSBuZWVkIHRvIGZpbmQgbGlieG1sMiBpZiBiaW5kIHdhcyBidWlsdCB3aXRoIHN1cHBvcnQgZW5hYmxlZAotKyMgb3RoZXJ3aXNlIHdlJ2xsIGZhaWwgdG8gYnVpbGQgb21hcGlwL3Rlc3QuYwotK0FDX1NFQVJDSF9MSUJTKHhtbFRleHRXcml0ZXJTdGFydEVsZW1lbnQsIFt4bWwyXSwpCi0rCi0gIyBPcGVuTERBUCBzdXBwb3J0LgotIEFDX0FSR19XSVRIKGxkYXAsCi0gICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtbGRhcF0sW2VuYWJsZSBPcGVuTERBUCBzdXBwb3J0IGluIGRoY3BkIChkZWZhdWx0IGlzIG5vKV0pLApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwL3R3ZWFrLXRvLXN1cHBvcnQtZXh0ZXJuYWwtYmluZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC90d2Vhay10by1zdXBwb3J0LWV4dGVybmFsLWJpbmQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzYzZhYmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwL3R3ZWFrLXRvLXN1cHBvcnQtZXh0ZXJuYWwtYmluZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExNyArMCwwIEBACi1Gcm9tIGFkN2JiNDAxZjQ3NzE0ZmMzMGM0MDg4NTNiNzk2Y2UwZjFjN2U2NWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBTYXQsIDExIEp1biAyMDE2IDIyOjUxOjQ0IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIHR3ZWFrIHRvIHN1cHBvcnQgZXh0ZXJuYWwgYmluZAotCi1Ud2VhayB0aGUgZXh0ZXJuYWwgYmluZCB0byBvZS1jb3JlJ3Mgc3lzcm9vdCByYXRoZXIgdGhhbgotZXh0ZXJuYWwgYmluZCBzb3VyY2UgYnVpbGQuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSA8b2UtY29yZSBzcGVjaWZpYz4KLQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gY2xpZW50L01ha2VmaWxlLmFtICAgICAgIHwgMiArLQotIGNsaWVudC90ZXN0cy9NYWtlZmlsZS5hbSB8IDIgKy0KLSBjb21tb24vdGVzdHMvTWFrZWZpbGUuYW0gfCAyICstCi0gZGhjcGN0bC9NYWtlZmlsZS5hbSAgICAgIHwgMiArLQotIG9tYXBpcC9NYWtlZmlsZS5hbSAgICAgICB8IDIgKy0KLSByZWxheS9NYWtlZmlsZS5hbSAgICAgICAgfCAyICstCi0gc2VydmVyL01ha2VmaWxlLmFtICAgICAgIHwgMiArLQotIHNlcnZlci90ZXN0cy9NYWtlZmlsZS5hbSB8IDIgKy0KLSA4IGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NsaWVudC9NYWtlZmlsZS5hbSBiL2NsaWVudC9NYWtlZmlsZS5hbQotaW5kZXggNDczMGJiMy4uODRkODEzMSAxMDA2NDQKLS0tLSBhL2NsaWVudC9NYWtlZmlsZS5hbQotKysrIGIvY2xpZW50L01ha2VmaWxlLmFtCi1AQCAtNCw3ICs0LDcgQEAKLSAjIHByb2R1Y3Rpb24gY29kZS4gU2FkbHksIHdlIGFyZSBub3QgdGhlcmUgeWV0LgotIFNVQkRJUlMgPSAuIHRlc3RzCi0gCi0tQklORExJQkRJUiA9IEBCSU5ERElSQC9saWIKLStCSU5ETElCRElSID0gQEJJTkRESVJACi0gCi0gQU1fQ1BQRkxBR1MgPSAtRENMSUVOVF9QQVRIPSciUEFUSD0kKHNiaW5kaXIpOi9zYmluOi9iaW46L3Vzci9zYmluOi91c3IvYmluIicgXAotIAkgICAgICAtRExPQ0FMU1RBVEVESVI9JyIkKGxvY2Fsc3RhdGVkaXIpIicgLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGVzCi1kaWZmIC0tZ2l0IGEvY2xpZW50L3Rlc3RzL01ha2VmaWxlLmFtIGIvY2xpZW50L3Rlc3RzL01ha2VmaWxlLmFtCi1pbmRleCBkYTY5ZWE5Li5mZTM1ZTU3IDEwMDY0NAotLS0tIGEvY2xpZW50L3Rlc3RzL01ha2VmaWxlLmFtCi0rKysgYi9jbGllbnQvdGVzdHMvTWFrZWZpbGUuYW0KLUBAIC0xLDYgKzEsNiBAQAotIFNVQkRJUlMgPSAuCi0gCi0tQklORExJQkRJUiA9IEBCSU5ERElSQC9saWIKLStCSU5ETElCRElSID0gQEJJTkRESVJACi0gCi0gQU1fQ1BQRkxBR1MgPSAkKEFURl9DRkxBR1MpIC1EVU5JVF9URVNUIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcwotIEFNX0NQUEZMQUdTICs9IC1JQEJJTkRESVJAL2luY2x1ZGUgLUkkKHRvcF9zcmNkaXIpCi1kaWZmIC0tZ2l0IGEvY29tbW9uL3Rlc3RzL01ha2VmaWxlLmFtIGIvY29tbW9uL3Rlc3RzL01ha2VmaWxlLmFtCi1pbmRleCBmOGQ2YjBlLi4wNWNkOWMxIDEwMDY0NAotLS0tIGEvY29tbW9uL3Rlc3RzL01ha2VmaWxlLmFtCi0rKysgYi9jb21tb24vdGVzdHMvTWFrZWZpbGUuYW0KLUBAIC0xLDYgKzEsNiBAQAotIFNVQkRJUlMgPSAuCi0gCi0tQklORExJQkRJUiA9IEBCSU5ERElSQC9saWIKLStCSU5ETElCRElSID0gQEJJTkRESVJACi0gCi0gQU1fQ1BQRkxBR1MgPSAkKEFURl9DRkxBR1MpIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcwotIAotZGlmZiAtLWdpdCBhL2RoY3BjdGwvTWFrZWZpbGUuYW0gYi9kaGNwY3RsL01ha2VmaWxlLmFtCi1pbmRleCBiYThkZDhiLi45YjI0ODZlIDEwMDY0NAotLS0tIGEvZGhjcGN0bC9NYWtlZmlsZS5hbQotKysrIGIvZGhjcGN0bC9NYWtlZmlsZS5hbQotQEAgLTEsNCArMSw0IEBACi0tQklORExJQkRJUiA9IEBCSU5ERElSQC9saWIKLStCSU5ETElCRElSID0gQEJJTkRESVJACi0gCi0gQU1fQ1BQRkxBR1MgPSAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMgLUkkKHRvcF9zcmNkaXIpCi0gCi1kaWZmIC0tZ2l0IGEvb21hcGlwL01ha2VmaWxlLmFtIGIvb21hcGlwL01ha2VmaWxlLmFtCi1pbmRleCBkZDFhZmEwLi5lNGE4NTk5IDEwMDY0NAotLS0tIGEvb21hcGlwL01ha2VmaWxlLmFtCi0rKysgYi9vbWFwaXAvTWFrZWZpbGUuYW0KLUBAIC0xLDQgKzEsNCBAQAotLUJJTkRMSUJESVIgPSBAQklORERJUkAvbGliCi0rQklORExJQkRJUiA9IEBCSU5ERElSQAotIEFNX0NQUEZMQUdTID0gLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGVzCi0gCi0gbGliX0xJQlJBUklFUyA9IGxpYm9tYXBpLmEKLWRpZmYgLS1naXQgYS9yZWxheS9NYWtlZmlsZS5hbSBiL3JlbGF5L01ha2VmaWxlLmFtCi1pbmRleCA2ZDY1MmY2Li5iM2JmNTc4IDEwMDY0NAotLS0tIGEvcmVsYXkvTWFrZWZpbGUuYW0KLSsrKyBiL3JlbGF5L01ha2VmaWxlLmFtCi1AQCAtMSw0ICsxLDQgQEAKLS1CSU5ETElCRElSID0gQEJJTkRESVJAL2xpYgotK0JJTkRMSUJESVIgPSBAQklORERJUkAKLSAKLSBBTV9DUFBGTEFHUyA9IC1ETE9DQUxTVEFURURJUj0nIkBsb2NhbHN0YXRlZGlyQCInIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcwotIAotZGlmZiAtLWdpdCBhL3NlcnZlci9NYWtlZmlsZS5hbSBiL3NlcnZlci9NYWtlZmlsZS5hbQotaW5kZXggMzk5MGI5Yy4uYjVkOGMyZCAxMDA2NDQKLS0tLSBhL3NlcnZlci9NYWtlZmlsZS5hbQotKysrIGIvc2VydmVyL01ha2VmaWxlLmFtCi1AQCAtNCw3ICs0LDcgQEAKLSAjIHByb2R1Y3Rpb24gY29kZS4gU2FkbHksIHdlIGFyZSBub3QgdGhlcmUgeWV0LgotIFNVQkRJUlMgPSAuIHRlc3RzCi0gCi0tQklORExJQkRJUiA9IEBCSU5ERElSQC9saWIKLStCSU5ETElCRElSID0gQEJJTkRESVJACi0gCi0gQU1fQ1BQRkxBR1MgPSAtSSQodG9wX3NyY2RpcikgLURMT0NBTFNUQVRFRElSPSciQGxvY2Fsc3RhdGVkaXJAIicgLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGVzCi0gCi1kaWZmIC0tZ2l0IGEvc2VydmVyL3Rlc3RzL01ha2VmaWxlLmFtIGIvc2VydmVyL3Rlc3RzL01ha2VmaWxlLmFtCi1pbmRleCA2NWE5Zjc0Li4yODkyMzA5IDEwMDY0NAotLS0tIGEvc2VydmVyL3Rlc3RzL01ha2VmaWxlLmFtCi0rKysgYi9zZXJ2ZXIvdGVzdHMvTWFrZWZpbGUuYW0KLUBAIC0xLDYgKzEsNiBAQAotIFNVQkRJUlMgPSAuCi0gCi0tQklORExJQkRJUiA9IEBCSU5ERElSQC9saWIKLStCSU5ETElCRElSID0gQEJJTkRESVJACi0gCi0gQU1fQ1BQRkxBR1MgPSAkKEFURl9DRkxBR1MpIC1EVU5JVF9URVNUIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlcwotIEFNX0NQUEZMQUdTICs9IC1JQEJJTkRESVJAL2luY2x1ZGUgLUkkKHRvcF9zcmNkaXIpCi0tLSAKLTIuOC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcF80LjMuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcF80LjMuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjc4YzI5YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3BfNC4zLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1yZXF1aXJlIGRoY3AuaW5jCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9kaGNwLTMuMC4zLWRoY2xpZW50LWRidXMucGF0Y2g7c3RyaXBsZXZlbD0wIFwKLSAgICAgICAgICAgIGZpbGU6Ly9saW5rLXdpdGgtbGNyeXB0by5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vZml4c2VwYnVpbGQucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2RoY2xpZW50LXNjcmlwdC1kcm9wLXJlc29sdi5jb25mLmRoY2xpZW50LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9yZXBsYWNlLWlmY29uZmlnLXJvdXRlLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXNpdGUuaC1lbmFibGUtZ2VudGxlLXNodXRkb3duLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9saWJ4bWwyLWNvbmZpZ3VyZS1hcmd1bWVudC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vdHdlYWstdG8tc3VwcG9ydC1leHRlcm5hbC1iaW5kLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtZGhjbGllbnQtc2NyaXB0LWJhc2gtZGVwZW5kZW5jeS5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjJiNWU1YjJmYTMxYzJlMjdlNDg3MDM5ZDg2ZjgzZDNmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImViOTU5MzZiZjE1ZDIzOTNjNTVkZDUwNWJjNTI3ZDFkNDQwODI4OWNlYzVhOWZhOGFiYjk5Zjc1NzdlN2Y5NTQiCi0KLVBBQ0tBR0VDT05GSUcgPz0gIiIKLVBBQ0tBR0VDT05GSUdbYmluZC1odHRwc3RhdHNdID0gIi0td2l0aC1saWJ4bWwyLC0td2l0aG91dC1saWJ4bWwyLGxpYnhtbDIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3BfNC4zLjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3BfNC4zLjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjYxNWFlMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcF80LjMuNi5iYgpAQCAtMCwwICsxLDIxIEBACityZXF1aXJlIGRoY3AuaW5jCisKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLWRlZmluZS1tYWNyby1fUEFUSF9ESENQRF9DT05GLWFuZC1fUEFUSF9ESENMSUVOVF9DT04ucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDItZGhjbGllbnQtZGJ1cy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMy1saW5rLXdpdGgtbGNyeXB0by5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwNC1GaXgtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDA1LWRoY3AtY2xpZW50LWZpeC1pbnZva2UtZGhjbGllbnQtc2NyaXB0LWZhaWxlZC1vbi1SZWEucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDYtc2l0ZS5oLWVuYWJsZS1nZW50bGUtc2h1dGRvd24ucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDctQWRkLWNvbmZpZ3VyZS1hcmd1bWVudC10by1tYWtlLXRoZS1saWJ4bWwyLWRlcGVuZGVuYy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwOC10d2Vhay10by1zdXBwb3J0LWV4dGVybmFsLWJpbmQucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDktcmVtb3ZlLWRoY2xpZW50LXNjcmlwdC1iYXNoLWRlcGVuZGVuY3kucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMTAtYnVpbGQtc2hhcmVkLWxpYnMucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMTEtTW92ZWQtdGhlLWNhbGwtdG8taXNjX2FwcF9jdHhzdGFydC10by1ub3QtZ2V0LXNpZ25hbC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAxMi1kaGNwLWNvcnJlY3QtdGhlLWludGVudGlvbi1mb3IteG1sMi1saWItc2VhcmNoLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYWZhNmU5YjNlYjc1MzllYTA0ODQyMWE4MmM2NjhhZGMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTQxZWFmNjM2NGYxMzc3ZmUwNjVkMzU2NzFkOWNmODJiYmJjOGYyMTIwNzgxOWIyYjlmMzNmNjUyYWVjNmYxYiIKKworUEFDS0FHRUNPTkZJRyA/PSAiIgorUEFDS0FHRUNPTkZJR1tiaW5kLWh0dHBzdGF0c10gPSAiLS13aXRoLWxpYnhtbDIsLS13aXRob3V0LWxpYnhtbDIsbGlieG1sMiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZmlsZXMvZGhjbGllbnQtc3lzdGVtZC13cmFwcGVyIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9maWxlcy9kaGNsaWVudC1zeXN0ZW1kLXdyYXBwZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2QwZTIyNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZmlsZXMvZGhjbGllbnQtc3lzdGVtZC13cmFwcGVyCkBAIC0wLDAgKzEsMzkgQEAKKyMhL2Jpbi9zaAorCisjIEluIGNhc2UgdGhlIGludGVyZmFjZSBpcyB1c2VkIGZvciBuZnMsIHNraXAgaXQuCituZnNyb290PTAKK2ludGVyZmFjZXM9IiIKK2V4ZWMgOTwmMCA8IC9wcm9jL21vdW50cword2hpbGUgcmVhZCBkZXYgbXRwdCBmc3R5cGUgcmVzdDsgZG8KKyAgICBpZiB0ZXN0ICRtdHB0ID0gIi8iIDsgdGhlbgorICAgICAgICBjYXNlICRmc3R5cGUgaW4KKyAgICAgICAgICAgIG5mcyB8IG5mczQpCisgICAgICAgICAgICAgICAgbmZzcm9vdD0xCisgICAgICAgICAgICAgICAgbmZzX2FkZHI9YGVjaG8gJHJlc3QgfCBzZWQgLWUgJ3MvXi4qYWRkcj1cKFswLTkuXSpcKS4qJC9cMS8nYAorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICopCisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgZXNhYworICAgIGZpCitkb25lCitleGVjIDA8JjkgOTwmLQorCitpZiBbICRuZnNyb290IC1lcSAwIF07IHRoZW4KKyAgICBpbnRlcmZhY2VzPSIkSU5URVJGQUNFUyIKK2Vsc2UKKyAgICBpZiBbIC14IC9iaW4vaXAgLW8gLXggL3NiaW4vaXAgXSA7IHRoZW4KKwluZnNfaWZhY2U9YGlwIHJvdXRlIGdldCAkbmZzX2FkZHIgfCBncmVwIGRldiB8IHNlZCAtZSAncy9eLipkZXYgXChbLWEtejAtOS5dKlwpLiokL1wxLydgCisgICAgZmkKKyAgICBmb3IgaSBpbiAkSU5URVJGQUNFUzsgZG8KKwlpZiB0ZXN0ICJ4JGkiID0gIngkbmZzX2lmYWNlIjsgdGhlbgorICAgICAgICAgICAgZWNobyAiZGhjbGllbnQgc2tpcHBpbmcgbmZzcm9vdCBpbnRlcmZhY2UgJGkiCisJZWxzZQorCSAgICBpbnRlcmZhY2VzPSIkaW50ZXJmYWNlcyAkaSIKKwlmaQorICAgIGRvbmUKK2ZpCisKK2lmIHRlc3QgIngkaW50ZXJmYWNlcyIgIT0gIngiOyB0aGVuCisgICAgL3NiaW4vZGhjbGllbnQgLWQgLWNmIC9ldGMvZGhjcC9kaGNsaWVudC5jb25mIC1xIC1sZiAvdmFyL2xpYi9kaGNwL2RoY2xpZW50LmxlYXNlcyAkaW50ZXJmYWNlcworZmkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZmlsZXMvZGhjbGllbnQuc2VydmljZSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZmlsZXMvZGhjbGllbnQuc2VydmljZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZGRiNGQxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9maWxlcy9kaGNsaWVudC5zZXJ2aWNlCkBAIC0wLDAgKzEsMTMgQEAKK1tVbml0XQorRGVzY3JpcHRpb249RHluYW1pYyBIb3N0IENvbmZpZ3VyYXRpb24gUHJvdG9jb2wgKERIQ1ApCitXYW50cz1uZXR3b3JrLnRhcmdldAorQmVmb3JlPW5ldHdvcmsudGFyZ2V0CitBZnRlcj1zeXN0ZW1kLXVkZXZkLnNlcnZpY2UKKworW1NlcnZpY2VdCitFbnZpcm9ubWVudEZpbGU9LUBTWVNDT05GRElSQC9kZWZhdWx0L2RoY3AtY2xpZW50CitFeGVjU3RhcnQ9QEJBU0VfU0JJTkRJUkAvZGhjbGllbnQtc3lzdGVtZC13cmFwcGVyCitSZW1haW5BZnRlckV4aXQ9eWVzCisKK1tJbnN0YWxsXQorV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyLmluYwppbmRleCBjZTY0ODg4Li5hNTc4ZWIzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMi5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTIuaW5jCkBAIC0xMyw3ICsxMywxMCBAQAogCiBpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMgYmFzaC1jb21wbGV0aW9uIHBrZ2NvbmZpZwogCi1FWFRSQV9PRU1BS0UgPSAiQ0M9JyR7Q0N9JyBLRVJORUxfSU5DTFVERT0ke1NUQUdJTkdfSU5DRElSfSBET0NESVI9JHtkb2NkaXJ9L2lwcm91dGUyIFNVQkRJUlM9J2xpYiB0YyBpcCBicmlkZ2UgbWlzYyBnZW5sJyBTQklORElSPScke2Jhc2Vfc2JpbmRpcn0nIExJQkRJUj0nJHtsaWJkaXJ9JyIKK1BBQ0tBR0VDT05GSUcgPz89ICJ0aXBjIgorUEFDS0FHRUNPTkZJR1t0aXBjXSA9ICIsLGxpYm1ubCwiCisKK0VYVFJBX09FTUFLRSA9ICJDQz0nJHtDQ30nIEtFUk5FTF9JTkNMVURFPSR7U1RBR0lOR19JTkNESVJ9IERPQ0RJUj0ke2RvY2Rpcn0vaXByb3V0ZTIgU1VCRElSUz0nbGliIHRjIGlwIGJyaWRnZSBtaXNjIGdlbmwgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndGlwYycsICd0aXBjJywgJycsIGQpfScgU0JJTkRJUj0nJHtiYXNlX3NiaW5kaXJ9JyBMSUJESVI9JyR7bGliZGlyfSciCiAKIGRvX2NvbmZpZ3VyZV9hcHBlbmQgKCkgewogICAgIHNoIGNvbmZpZ3VyZSAke1NUQUdJTkdfSU5DRElSfQpAQCAtMzIsNyArMzUsNyBAQAogIyBUaGUgLnNvIGZpbGVzIGluIGlwcm91dGUyLXRjIGFyZSBtb2R1bGVzLCBub3QgdHJhZGl0aW9uYWwgbGlicmFyaWVzCiBJTlNBTkVfU0tJUF8ke1BOfS10YyA9ICJkZXYtc28iCiAKLVBBQ0tBR0VTID0rICIke1BOfS10YyAke1BOfS1sbnN0YXQgJHtQTn0taWZzdGF0ICR7UE59LWdlbmwgJHtQTn0tcnRhY2N0ICR7UE59LW5zdGF0ICR7UE59LXNzIgorUEFDS0FHRVMgPSsgIiR7UE59LXRjICR7UE59LWxuc3RhdCAke1BOfS1pZnN0YXQgJHtQTn0tZ2VubCAke1BOfS1ydGFjY3QgJHtQTn0tbnN0YXQgJHtQTn0tc3MgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndGlwYycsICcke1BOfS10aXBjJywgJycsIGQpfSIKIEZJTEVTXyR7UE59LXRjID0gIiR7YmFzZV9zYmluZGlyfS90YyogXAogICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3RjLyouc28iCiBGSUxFU18ke1BOfS1sbnN0YXQgPSAiJHtiYXNlX3NiaW5kaXJ9L2xuc3RhdCAke2Jhc2Vfc2JpbmRpcn0vY3RzdGF0ICR7YmFzZV9zYmluZGlyfS9ydHN0YXQiCkBAIC00MSw2ICs0NCw3IEBACiBGSUxFU18ke1BOfS1ydGFjY3QgPSAiJHtiYXNlX3NiaW5kaXJ9L3J0YWNjdCIKIEZJTEVTXyR7UE59LW5zdGF0ID0gIiR7YmFzZV9zYmluZGlyfS9uc3RhdCIKIEZJTEVTXyR7UE59LXNzID0gIiR7YmFzZV9zYmluZGlyfS9zcyIKK0ZJTEVTXyR7UE59LXRpcGMgPSAiJHtiYXNlX3NiaW5kaXJ9L3RpcGMiCiAKIEFMVEVSTkFUSVZFXyR7UE59ID0gImlwIgogQUxURVJOQVRJVkVfVEFSR0VUW2lwXSA9ICIke2Jhc2Vfc2JpbmRpcn0vaXAuJHtCUE59IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTIvMDAwMS1pbmNsdWRlLXN0ZGludC5oLWV4cGxpY2l0bHktZm9yLVVJTlQxNl9NQVgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMi8wMDAxLWluY2x1ZGUtc3RkaW50LmgtZXhwbGljaXRseS1mb3ItVUlOVDE2X01BWC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjBjMGFiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTIvMDAwMS1pbmNsdWRlLXN0ZGludC5oLWV4cGxpY2l0bHktZm9yLVVJTlQxNl9NQVgucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSAzYzg4NWQ4N2JlZmM3MDZiYjkyMzkzM2I5ODE5ZGU2ZmUyZGU4OTdlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMjAgTWF5IDIwMTcgMTQ6MDM6MTkgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gaW5jbHVkZSBzdGRpbnQuaCBleHBsaWNpdGx5IGZvciBVSU5UMTZfTUFYKQorCitGaXhlcworfCB0Y19jb3JlLmM6MTkwOjI5OiBlcnJvcjogJ1VJTlQxNl9NQVgnIHVuZGVjbGFyZWQgKGZpcnN0IHVzZSBpbiB0aGlzIGZ1bmN0aW9uKTsgZGlkIHlvdSBtZWFuICdfX0lOVDE2X01BWF9fJz8KK3wgICAgaWYgKChzeiA+PiBzLT5zaXplX2xvZykgPiBVSU5UMTZfTUFYKSB7Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn5+fgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIHRjL3RjX2NvcmUuYyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvdGMvdGNfY29yZS5jIGIvdGMvdGNfY29yZS5jCitpbmRleCA3YmJlMGQ3Li44MjFiNzQxIDEwMDY0NAorLS0tIGEvdGMvdGNfY29yZS5jCisrKysgYi90Yy90Y19jb3JlLmMKK0BAIC0xMiw2ICsxMiw3IEBACisgCisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisgI2luY2x1ZGUgPHN5c2xvZy5oPgorICNpbmNsdWRlIDxmY250bC5oPgorLS0gCisyLjEzLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTIvMDAwMS1pcC1SZW1vdmUtdW5uZWVkLWhlYWRlci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyLzAwMDEtaXAtUmVtb3ZlLXVubmVlZC1oZWFkZXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTlmOGRiNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyLzAwMDEtaXAtUmVtb3ZlLXVubmVlZC1oZWFkZXIucGF0Y2gKQEAgLTAsMCArMSwzMCBAQAorRnJvbSBmNThmYzk5Yzg4YTU0MTM1ZTU1YTZlMDk1NmNlOGFlNzEwNzhkMWNjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hhbmdoeWVvayBCYWUgPGNoYW5naHllb2suYmFlQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMTIgSnVuIDIwMTcgMDQ6Mjk6MDcgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gaXA6IFJlbW92ZSB1bm5lZWQgaGVhZGVyCisKK0ZpeCByZWRlZmluaXRpb24gb2Ygc3RydWN0IGV0aGhkciB3aXRoIGEgc3VpdGFibHkgcGF0Y2hlZCBtdXNsIGxpYmMKK3RoYXQgc3VwcHJlc3NlcyB0aGUga2VybmVsIGlmX2V0aGVyLmguCisKK1NpZ25lZC1vZmYtYnk6IENoYW5naHllb2sgQmFlIDxjaGFuZ2h5ZW9rLmJhZUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtuZXRkZXZAdmdlci5rZXJuZWwub3JnXQorLS0tCisgaXAvaXBsaW5rX2JyaWRnZS5jIHwgMSAtCisgMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2lwL2lwbGlua19icmlkZ2UuYyBiL2lwL2lwbGlua19icmlkZ2UuYworaW5kZXggODE4YjQzYy4uZjA2NWIyMiAxMDA2NDQKKy0tLSBhL2lwL2lwbGlua19icmlkZ2UuYworKysrIGIvaXAvaXBsaW5rX2JyaWRnZS5jCitAQCAtMTUsNyArMTUsNiBAQAorICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisgI2luY2x1ZGUgPGxpbnV4L2lmX2xpbmsuaD4KKyAjaW5jbHVkZSA8bGludXgvaWZfYnJpZGdlLmg+CistI2luY2x1ZGUgPG5ldGluZXQvZXRoZXIuaD4KKyAjaW5jbHVkZSA8bmV0L2lmLmg+CisgCisgI2luY2x1ZGUgInJ0X25hbWVzLmgiCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyXzQuMTAuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyXzQuMTAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTA1MGU4Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMl80LjEwLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1yZXF1aXJlIGlwcm91dGUyLmluYwotCi1TUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvdXRpbHMvbmV0LyR7QlBOfS8ke0JQfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLWNyb3NzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtaXByb3V0ZTItZGUtYmFzaC1zY3JpcHRzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbGliYy1jb21wYXQuaC1hZGQtbXVzbC13b3JrYXJvdW5kLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJiOTRhMmIwZWRlZmFlYWMxMjRkYzhmNWQwMDY5MzFiOSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyMmIxZTFjMWZjNzA0YWQzNTgzN2U1YTY2MTAzNzM5NzI3YjhiNDhhYzkwYjQ4YzEzZjc5YjczNjdmZjBhOWE4IgotCi0jIENGTEFHUyBhcmUgY29tcHV0ZWQgaW4gTWFrZWZpbGUgYW5kIHJlZmVyZW5jZSBDQ09QVFMKLSMKLUVYVFJBX09FTUFLRV9hcHBlbmQgPSAiIENDT1BUUz0nJHtDRkxBR1N9JyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyXzQuMTEuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyXzQuMTEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYmQwNTQ1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTJfNC4xMS4wLmJiCkBAIC0wLDAgKzEsMTYgQEAKK3JlcXVpcmUgaXByb3V0ZTIuaW5jCisKK1NSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC91dGlscy9uZXQvJHtCUE59LyR7QlB9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUtY3Jvc3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1pcHJvdXRlMi1kZS1iYXNoLXNjcmlwdHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1saWJjLWNvbXBhdC5oLWFkZC1tdXNsLXdvcmthcm91bmQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLXN0ZGludC5oLWV4cGxpY2l0bHktZm9yLVVJTlQxNl9NQVgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1pcC1SZW1vdmUtdW5uZWVkLWhlYWRlci5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiN2E5NDk4ZGU4OGJjY2E5NWMzMDVkZjYxMDhhZTE5N2UiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzI2NzEwMjhiZGE2OTZkMGNiOGY0OGVjOGU3MDI1ODFjM2E1MDFjYWVlZDMzZWVjM2E4MWQ3MDQxY2JjODAyNiIKKworIyBDRkxBR1MgYXJlIGNvbXB1dGVkIGluIE1ha2VmaWxlIGFuZCByZWZlcmVuY2UgQ0NPUFRTCisjCitFWFRSQV9PRU1BS0VfYXBwZW5kID0gIiBDQ09QVFM9JyR7Q0ZMQUdTfSciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJwY2FwL2xpYnBjYXAuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlicGNhcC9saWJwY2FwLmluYwppbmRleCA2NjM1Nzc5Li5lNTdlYTg3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJwY2FwL2xpYnBjYXAuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYnBjYXAvbGlicGNhcC5pbmMKQEAgLTM4LDMgKzM4LDUgQEAKIGRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKICAgICBzZWQgLWkgLWUncyxeVl9SUEFUSF9PUFQ9LiokLFZfUlBBVEhfT1BUPSwnICR7U30vcGNhcC1jb25maWcuaW4KIH0KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb2JpbGUtYnJvYWRiYW5kLXByb3ZpZGVyLWluZm8vbW9iaWxlLWJyb2FkYmFuZC1wcm92aWRlci1pbmZvX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L21vYmlsZS1icm9hZGJhbmQtcHJvdmlkZXItaW5mby9tb2JpbGUtYnJvYWRiYW5kLXByb3ZpZGVyLWluZm9fZ2l0LmJiCmluZGV4IGJkNDg4ZWIuLmRiYzU3OGUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L21vYmlsZS1icm9hZGJhbmQtcHJvdmlkZXItaW5mby9tb2JpbGUtYnJvYWRiYW5kLXByb3ZpZGVyLWluZm9fZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L21vYmlsZS1icm9hZGJhbmQtcHJvdmlkZXItaW5mby9tb2JpbGUtYnJvYWRiYW5kLXByb3ZpZGVyLWluZm9fZ2l0LmJiCkBAIC0xLDkgKzEsMTAgQEAKIFNVTU1BUlkgPSAiTW9iaWxlIEJyb2FkYmFuZCBTZXJ2aWNlIFByb3ZpZGVyIERhdGFiYXNlIgorSE9NRVBBR0UgPSAiaHR0cDovL2xpdmUuZ25vbWUub3JnL05ldHdvcmtNYW5hZ2VyL01vYmlsZUJyb2FkYmFuZC9TZXJ2aWNlUHJvdmlkZXJzIgogU0VDVElPTiA9ICJuZXR3b3JrIgogTElDRU5TRSA9ICJQRCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTg3OTY0NTc5YjJhOGVjZTRiYzY3NDRkMmRjOWE4YjA0IgotU1JDUkVWID0gIjUxOTQ2NTc2NmZhYmM4NWI5ZmRlYTVmMmI1ZWUzZDA4YzJiMWY3MGQiCi1QViA9ICIyMDE1MTIxNCIKK1NSQ1JFViA9ICJiZWZjYmJjOTg2N2U3NDJhYzE2NDE1NjYwYjBiNzUyMTIxOGE1MzBjIgorUFYgPSAiMjAxNzAzMTAiCiBQRSA9ICIxIgogCiBTUkNfVVJJID0gImdpdDovL2dpdC5nbm9tZS5vcmcvbW9iaWxlLWJyb2FkYmFuZC1wcm92aWRlci1pbmZvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy8wMDAxLWluY2x1ZGUtc3RkaW50LmgtZm9yLVVJTlQxNl9NQVgtZGVmaW5pdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvMDAwMS1pbmNsdWRlLXN0ZGludC5oLWZvci1VSU5UMTZfTUFYLWRlZmluaXRpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjM1YTJjNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvMDAwMS1pbmNsdWRlLXN0ZGludC5oLWZvci1VSU5UMTZfTUFYLWRlZmluaXRpb24ucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorRnJvbSAzNmI0ODA1N2JjZTc2ZGNlZDMzNWQ2N2EyODk0YTQyMDk2NzgxMWM5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMjAgTWF5IDIwMTcgMTQ6MDc6NTMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gaW5jbHVkZSBzdGRpbnQuaCBmb3IgVUlOVDE2X01BWCBkZWZpbml0aW9uCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgc3VwcG9ydC9uc20vcnBjLmMgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL3N1cHBvcnQvbnNtL3JwYy5jIGIvc3VwcG9ydC9uc20vcnBjLmMKK2luZGV4IDRlNWY0MGUuLmQ5MWM2ZWEgMTAwNjQ0CistLS0gYS9zdXBwb3J0L25zbS9ycGMuYworKysrIGIvc3VwcG9ydC9uc20vcnBjLmMKK0BAIC00MCw2ICs0MCw3IEBACisgCisgI2luY2x1ZGUgPHRpbWUuaD4KKyAjaW5jbHVkZSA8c3RkYm9vbC5oPgorKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorICNpbmNsdWRlIDxmY250bC5oPgorLS0gCisyLjEzLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlsc18xLjMuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHNfMS4zLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjYTlhYjIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlsc18xLjMuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE0OCArMCwwIEBACi1TVU1NQVJZID0gInVzZXJzcGFjZSB1dGlsaXRpZXMgZm9yIGtlcm5lbCBuZnMiCi1ERVNDUklQVElPTiA9ICJUaGUgbmZzLXV0aWxzIHBhY2thZ2UgcHJvdmlkZXMgYSBkYWVtb24gZm9yIHRoZSBrZXJuZWwgXAotTkZTIHNlcnZlciBhbmQgcmVsYXRlZCB0b29scy4iCi1IT01FUEFHRSA9ICJodHRwOi8vbmZzLnNvdXJjZWZvcmdlLm5ldC8iCi1TRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKLQotTElDRU5TRSA9ICJNSVQgJiBHUEx2MisgJiBCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NWYzYTkzYTVjM2M3ODg4ZGU2MjNiNDZlYTA4NWE4NCIKLQotIyB1dGlsLWxpbnV4IGZvciBsaWJibGtpZAotREVQRU5EUyA9ICJsaWJjYXAgbGlibmZzaWRtYXAgbGliZXZlbnQgdXRpbC1saW51eCBzcWxpdGUzIGxpYnRpcnBjIgotUkRFUEVORFNfJHtQTn0gPSAiJHtQTn0tY2xpZW50IGJhc2giCi1SUkVDT01NRU5EU18ke1BOfSA9ICJrZXJuZWwtbW9kdWxlLW5mc2QiCi0KLWluaGVyaXQgdXNlcmFkZAotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59LWNsaWVudCIKLVVTRVJBRERfUEFSQU1fJHtQTn0tY2xpZW50ID0gIi0tc3lzdGVtICAtLWhvbWUtZGlyIC92YXIvbGliL25mcyBcCi0JCQkgICAgICAtLXNoZWxsIC9iaW4vZmFsc2UgLS11c2VyLWdyb3VwIHJwY3VzZXIiCi0KLVNSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC91dGlscy9uZnMtdXRpbHMvJHtQVn0vbmZzLXV0aWxzLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1BbGxvdy10by1leHBsaWNpdGx5LWRpc2FibGUtbmZzaWRtYXAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbmZzLXV0aWxzLTEuMi4zLXNtLW5vdGlmeS1yZXNfaW5pdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9uZnNzZXJ2ZXIgXAotICAgICAgICAgICBmaWxlOi8vbmZzY29tbW9uIFwKLSAgICAgICAgICAgZmlsZTovL25mcy11dGlscy5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL25mcy1zZXJ2ZXIuc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly9uZnMtbW91bnRkLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vbmZzLXN0YXRkLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vcHJvYy1mcy1uZnNkLm1vdW50IFwKLSAgICAgICAgICAgZmlsZTovL25mcy11dGlscy1Eby1ub3QtcGFzcy1DRkxBR1MtdG8tZ2NjLXdoaWxlLWJ1aWxkaW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL25mcy11dGlscy1kZWJpYW5pemUtc3RhcnQtc3RhdGQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYnVnZml4LWFkanVzdC1zdGF0ZC1zZXJ2aWNlLW5hbWUucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNTRlNDExOTA0M2VjODUwN2EyYTBlMDU0Y2YyODg5YTQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjQyYTViYzBhOGQ4MGQwNDY1MDAzMGNlYjlhMTFmMDhmNGFjZmJjYjFlZTI5N2Y2NTdmYjk0ZTMzOWM0NTk3NSIKLQotIyBPbmx5IGtlcm5lbC1tb2R1bGUtbmZzZCBpcyByZXF1aXJlZCBoZXJlIChidXQgY2FuIGJlIGJ1aWx0LWluKSAgLSB0aGUgbmZzZCBtb2R1bGUgd2lsbAotIyBwdWxsIGluIHRoZSByZW1haW5kZXIgb2YgdGhlIGRlcGVuZGVuY2llcy4KLQotSU5JVFNDUklQVF9QQUNLQUdFUyA9ICIke1BOfSAke1BOfS1jbGllbnQiCi1JTklUU0NSSVBUX05BTUUgPSAibmZzc2VydmVyIgotSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMiCi1JTklUU0NSSVBUX05BTUVfJHtQTn0tY2xpZW50ID0gIm5mc2NvbW1vbiIKLUlOSVRTQ1JJUFRfUEFSQU1TXyR7UE59LWNsaWVudCA9ICJkZWZhdWx0cyAxOSAyMSIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHVwZGF0ZS1yYy5kIHN5c3RlbWQgcGtnY29uZmlnCi0KLVNZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0gJHtQTn0tY2xpZW50IgotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIm5mcy1zZXJ2ZXIuc2VydmljZSBuZnMtbW91bnRkLnNlcnZpY2UiCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0tY2xpZW50ID0gIm5mcy1zdGF0ZC5zZXJ2aWNlIgotCi0jIC0tZW5hYmxlLXV1aWQgaXMgbmVlZCBmb3IgY3Jvc3MtY29tcGlsaW5nCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLXN0YXRkdXNlcj1ycGN1c2VyIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1tb3VudGNvbmZpZyBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtbGlibW91bnQtbW91bnQgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1uZnN2NDEgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLXV1aWQgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1nc3MgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1uZnNkY2x0cmFjayBcCi0gICAgICAgICAgICAgICAgLS13aXRoLXN0YXRkcGF0aD0vdmFyL2xpYi9uZnMvc3RhdGQgXAotICAgICAgICAgICAgICAgIgotCi1QQUNLQUdFQ09ORklHID8/PSAidGNwLXdyYXBwZXJzIFwKLSAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IFwKLSIKLVBBQ0tBR0VDT05GSUdfcmVtb3ZlX2xpYmMtbXVzbCA9ICJ0Y3Atd3JhcHBlcnMiCi1QQUNLQUdFQ09ORklHW3RjcC13cmFwcGVyc10gPSAiLS13aXRoLXRjcC13cmFwcGVycywtLXdpdGhvdXQtdGNwLXdyYXBwZXJzLHRjcC13cmFwcGVycyIKLVBBQ0tBR0VDT05GSUdbbmZzaWRtYXBdID0gIi0tZW5hYmxlLW5mc2lkbWFwLC0tZGlzYWJsZS1uZnNpZG1hcCxrZXl1dGlscyIKLVBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCi0KLVBBQ0tBR0VTID0rICIke1BOfS1jbGllbnQgJHtQTn0tbW91bnQgJHtQTn0tc3RhdHMiCi0KLUNPTkZGSUxFU18ke1BOfS1jbGllbnQgKz0gIiR7bG9jYWxzdGF0ZWRpcn0vbGliL25mcy9ldGFiIFwKLQkJCSAgICR7bG9jYWxzdGF0ZWRpcn0vbGliL25mcy9ybXRhYiBcCi0JCQkgICAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9uZnMveHRhYiBcCi0JCQkgICAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9uZnMvc3RhdGQvc3RhdGUgXAotCQkJICAgJHtzeXNjb25mZGlyfS9uZnNtb3VudC5jb25mIgotCi1GSUxFU18ke1BOfS1jbGllbnQgPSAiJHtzYmluZGlyfS8qc3RhdGQgXAotCQkgICAgICAke3NiaW5kaXJ9L3JwYy5pZG1hcGQgJHtzYmluZGlyfS9zbS1ub3RpZnkgXAotCQkgICAgICAke3NiaW5kaXJ9L3Nob3dtb3VudCAke3NiaW5kaXJ9L25mc3N0YXQgXAotCQkgICAgICAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9uZnMgXAotCQkgICAgICAke3N5c2NvbmZkaXJ9L25mcy11dGlscy5jb25mIFwKLQkJICAgICAgJHtzeXNjb25mZGlyfS9uZnNtb3VudC5jb25mIFwKLQkJICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvbmZzY29tbW9uIFwKLQkJICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9uZnMtc3RhdGQuc2VydmljZSIKLVJERVBFTkRTXyR7UE59LWNsaWVudCA9ICIke1BOfS1tb3VudCBycGNiaW5kIgotCi1GSUxFU18ke1BOfS1tb3VudCA9ICIke2Jhc2Vfc2JpbmRpcn0vKm1vdW50Lm5mcyoiCi0KLUZJTEVTXyR7UE59LXN0YXRzID0gIiR7c2JpbmRpcn0vbW91bnRzdGF0cyAke3NiaW5kaXJ9L25mc2lvc3RhdCIKLVJERVBFTkRTXyR7UE59LXN0YXRzID0gInB5dGhvbjMtY29yZSIKLQotRklMRVNfJHtQTn0gKz0gIiR7c3lzdGVtZF91bml0ZGlyfSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgICAgIHNlZCAtaSAtZSAncyxzYmluZGlyID0gL3NiaW4sc2JpbmRpciA9ICR7YmFzZV9zYmluZGlyfSxnJyBcCi0gICAgICAgICAgICAke1N9L3V0aWxzL21vdW50L01ha2VmaWxlLmFtCi0KLSAgICAgICAgc2VkIC1pIC1lICdzLHNiaW5kaXIgPSAvc2JpbixzYmluZGlyID0gJHtiYXNlX3NiaW5kaXJ9LGcnIFwKLSAgICAgICAgICAgICR7U30vdXRpbHMvb3NkX2xvZ2luL01ha2VmaWxlLmFtCi19Ci0KLSMgTWFrZSBjbGVhbiBuZWVkZWQgYmVjYXVzZSB0aGUgcGFja2FnZSBjb21lcyB3aXRoCi0jIHByZWNvbXBpbGVkIDY0LWJpdCBvYmplY3RzIHRoYXQgYnJlYWsgdGhlIGJ1aWxkCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0JbWFrZSBjbGVhbgotfQotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9uZnNzZXJ2ZXIgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL25mc3NlcnZlcgotCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L25mc2NvbW1vbiAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbmZzY29tbW9uCi0KLQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9uZnMtdXRpbHMuY29uZiAke0R9JHtzeXNjb25mZGlyfQotCWluc3RhbGwgLW0gMDc1NSAke1N9L3V0aWxzL21vdW50L25mc21vdW50LmNvbmYgJHtEfSR7c3lzY29uZmRpcn0KLQotCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9uZnMtc2VydmVyLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbmZzLW1vdW50ZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLwotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L25mcy1zdGF0ZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLwotCXNlZCAtaSAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyBcCi0JCS1lICdzLEBTWVNDT05GRElSQCwke3N5c2NvbmZkaXJ9LGcnIFwKLQkJJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vKi5zZXJ2aWNlCi0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgotCSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9wcm9jLWZzLW5mc2QubW91bnQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCi0JICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzaW5pdC50YXJnZXQud2FudHMvCi0JICAgIGxuIC1zZiAuLi9wcm9jLWZzLW5mc2QubW91bnQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzaW5pdC50YXJnZXQud2FudHMvcHJvYy1mcy1uZnNkLm1vdW50Ci0JZmkKLQotCSMga2VybmVsIGNvZGUgYXMgb2YgMy44IGhhcmQtY29kZXMgdGhpcyBwYXRoIGFzIGEgZGVmYXVsdAotCWluc3RhbGwgLWQgJHtEfS92YXIvbGliL25mcy92NHJlY292ZXJ5Ci0KLQkjIGNob3duIHRoZSBkaXJlY3RvcmllcyBhbmQgZmlsZXMKLQljaG93biAtUiBycGN1c2VyOnJwY3VzZXIgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL25mcy9zdGF0ZAotCWNobW9kIDA2NDQgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL25mcy9zdGF0ZC9zdGF0ZQotCi0JIyB0aGUgZm9sbG93aW5nIGFyZSBidWlsdCBieSBDQ19GT1JfQlVJTEQKLQlybSAtZiAke0R9JHtzYmluZGlyfS9ycGNkZWJ1ZwotCXJtIC1mICR7RH0ke3NiaW5kaXJ9L3JwY2dlbgotCXJtIC1mICR7RH0ke3NiaW5kaXJ9L2xvY2t0ZXN0Ci0KLSAgICAgICAgIyBNYWtlIHB5dGhvbiB0b29scyB1c2UgcHl0aG9uIDMKLSAgICAgICAgc2VkIC1pIC1lICcxcywjIS4qcHl0aG9uLiosIyEke2JpbmRpcn0vcHl0aG9uMywnICR7RH0ke3NiaW5kaXJ9L21vdW50c3RhdHMgJHtEfSR7c2JpbmRpcn0vbmZzaW9zdGF0Ci0KLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHNfMi4xLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzXzIuMS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5MTdjNGQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzXzIuMS4xLmJiCkBAIC0wLDAgKzEsMTQ5IEBACitTVU1NQVJZID0gInVzZXJzcGFjZSB1dGlsaXRpZXMgZm9yIGtlcm5lbCBuZnMiCitERVNDUklQVElPTiA9ICJUaGUgbmZzLXV0aWxzIHBhY2thZ2UgcHJvdmlkZXMgYSBkYWVtb24gZm9yIHRoZSBrZXJuZWwgXAorTkZTIHNlcnZlciBhbmQgcmVsYXRlZCB0b29scy4iCitIT01FUEFHRSA9ICJodHRwOi8vbmZzLnNvdXJjZWZvcmdlLm5ldC8iCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKKworTElDRU5TRSA9ICJNSVQgJiBHUEx2MisgJiBCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NWYzYTkzYTVjM2M3ODg4ZGU2MjNiNDZlYTA4NWE4NCIKKworIyB1dGlsLWxpbnV4IGZvciBsaWJibGtpZAorREVQRU5EUyA9ICJsaWJjYXAgbGlibmZzaWRtYXAgbGliZXZlbnQgdXRpbC1saW51eCBzcWxpdGUzIGxpYnRpcnBjIgorUkRFUEVORFNfJHtQTn0gPSAiJHtQTn0tY2xpZW50IGJhc2giCitSUkVDT01NRU5EU18ke1BOfSA9ICJrZXJuZWwtbW9kdWxlLW5mc2QiCisKK2luaGVyaXQgdXNlcmFkZAorCitVU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59LWNsaWVudCIKK1VTRVJBRERfUEFSQU1fJHtQTn0tY2xpZW50ID0gIi0tc3lzdGVtICAtLWhvbWUtZGlyIC92YXIvbGliL25mcyBcCisJCQkgICAgICAtLXNoZWxsIC9iaW4vZmFsc2UgLS11c2VyLWdyb3VwIHJwY3VzZXIiCisKK1NSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC91dGlscy9uZnMtdXRpbHMvJHtQVn0vbmZzLXV0aWxzLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1BbGxvdy10by1leHBsaWNpdGx5LWRpc2FibGUtbmZzaWRtYXAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbmZzLXV0aWxzLTEuMi4zLXNtLW5vdGlmeS1yZXNfaW5pdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9uZnNzZXJ2ZXIgXAorICAgICAgICAgICBmaWxlOi8vbmZzY29tbW9uIFwKKyAgICAgICAgICAgZmlsZTovL25mcy11dGlscy5jb25mIFwKKyAgICAgICAgICAgZmlsZTovL25mcy1zZXJ2ZXIuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly9uZnMtbW91bnRkLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vbmZzLXN0YXRkLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vcHJvYy1mcy1uZnNkLm1vdW50IFwKKyAgICAgICAgICAgZmlsZTovL25mcy11dGlscy1Eby1ub3QtcGFzcy1DRkxBR1MtdG8tZ2NjLXdoaWxlLWJ1aWxkaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL25mcy11dGlscy1kZWJpYW5pemUtc3RhcnQtc3RhdGQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYnVnZml4LWFkanVzdC1zdGF0ZC1zZXJ2aWNlLW5hbWUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLXN0ZGludC5oLWZvci1VSU5UMTZfTUFYLWRlZmluaXRpb24ucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNTlkZmNiMmU2MjU0YjEyOWY5MDFmNDBjODYwODZiMTMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGZhZWI1NGM3MGI4NGU2YmQzYjliNjkwMTU0NGIxZjZhZGQ4ZDI0NmYzNWMxNjgzZTQwMmRhZjRlMGM3MTllZiIKKworIyBPbmx5IGtlcm5lbC1tb2R1bGUtbmZzZCBpcyByZXF1aXJlZCBoZXJlIChidXQgY2FuIGJlIGJ1aWx0LWluKSAgLSB0aGUgbmZzZCBtb2R1bGUgd2lsbAorIyBwdWxsIGluIHRoZSByZW1haW5kZXIgb2YgdGhlIGRlcGVuZGVuY2llcy4KKworSU5JVFNDUklQVF9QQUNLQUdFUyA9ICIke1BOfSAke1BOfS1jbGllbnQiCitJTklUU0NSSVBUX05BTUUgPSAibmZzc2VydmVyIgorSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMiCitJTklUU0NSSVBUX05BTUVfJHtQTn0tY2xpZW50ID0gIm5mc2NvbW1vbiIKK0lOSVRTQ1JJUFRfUEFSQU1TXyR7UE59LWNsaWVudCA9ICJkZWZhdWx0cyAxOSAyMSIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHVwZGF0ZS1yYy5kIHN5c3RlbWQgcGtnY29uZmlnCisKK1NZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0gJHtQTn0tY2xpZW50IgorU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIm5mcy1zZXJ2ZXIuc2VydmljZSBuZnMtbW91bnRkLnNlcnZpY2UiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0tY2xpZW50ID0gIm5mcy1zdGF0ZC5zZXJ2aWNlIgorCisjIC0tZW5hYmxlLXV1aWQgaXMgbmVlZCBmb3IgY3Jvc3MtY29tcGlsaW5nCitFWFRSQV9PRUNPTkYgPSAiLS13aXRoLXN0YXRkdXNlcj1ycGN1c2VyIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1tb3VudGNvbmZpZyBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtbGlibW91bnQtbW91bnQgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1uZnN2NDEgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLXV1aWQgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1nc3MgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1uZnNkY2x0cmFjayBcCisgICAgICAgICAgICAgICAgLS13aXRoLXN0YXRkcGF0aD0vdmFyL2xpYi9uZnMvc3RhdGQgXAorICAgICAgICAgICAgICAgIgorCitQQUNLQUdFQ09ORklHID8/PSAidGNwLXdyYXBwZXJzIFwKKyAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IFwKKyIKK1BBQ0tBR0VDT05GSUdfcmVtb3ZlX2xpYmMtbXVzbCA9ICJ0Y3Atd3JhcHBlcnMiCitQQUNLQUdFQ09ORklHW3RjcC13cmFwcGVyc10gPSAiLS13aXRoLXRjcC13cmFwcGVycywtLXdpdGhvdXQtdGNwLXdyYXBwZXJzLHRjcC13cmFwcGVycyIKK1BBQ0tBR0VDT05GSUdbbmZzaWRtYXBdID0gIi0tZW5hYmxlLW5mc2lkbWFwLC0tZGlzYWJsZS1uZnNpZG1hcCxrZXl1dGlscyIKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCisKK1BBQ0tBR0VTID0rICIke1BOfS1jbGllbnQgJHtQTn0tbW91bnQgJHtQTn0tc3RhdHMiCisKK0NPTkZGSUxFU18ke1BOfS1jbGllbnQgKz0gIiR7bG9jYWxzdGF0ZWRpcn0vbGliL25mcy9ldGFiIFwKKwkJCSAgICR7bG9jYWxzdGF0ZWRpcn0vbGliL25mcy9ybXRhYiBcCisJCQkgICAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9uZnMveHRhYiBcCisJCQkgICAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9uZnMvc3RhdGQvc3RhdGUgXAorCQkJICAgJHtzeXNjb25mZGlyfS9uZnNtb3VudC5jb25mIgorCitGSUxFU18ke1BOfS1jbGllbnQgPSAiJHtzYmluZGlyfS8qc3RhdGQgXAorCQkgICAgICAke3NiaW5kaXJ9L3JwYy5pZG1hcGQgJHtzYmluZGlyfS9zbS1ub3RpZnkgXAorCQkgICAgICAke3NiaW5kaXJ9L3Nob3dtb3VudCAke3NiaW5kaXJ9L25mc3N0YXQgXAorCQkgICAgICAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9uZnMgXAorCQkgICAgICAke3N5c2NvbmZkaXJ9L25mcy11dGlscy5jb25mIFwKKwkJICAgICAgJHtzeXNjb25mZGlyfS9uZnNtb3VudC5jb25mIFwKKwkJICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvbmZzY29tbW9uIFwKKwkJICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9uZnMtc3RhdGQuc2VydmljZSIKK1JERVBFTkRTXyR7UE59LWNsaWVudCA9ICIke1BOfS1tb3VudCBycGNiaW5kIgorCitGSUxFU18ke1BOfS1tb3VudCA9ICIke2Jhc2Vfc2JpbmRpcn0vKm1vdW50Lm5mcyoiCisKK0ZJTEVTXyR7UE59LXN0YXRzID0gIiR7c2JpbmRpcn0vbW91bnRzdGF0cyAke3NiaW5kaXJ9L25mc2lvc3RhdCIKK1JERVBFTkRTXyR7UE59LXN0YXRzID0gInB5dGhvbjMtY29yZSIKKworRklMRVNfJHtQTn0gKz0gIiR7c3lzdGVtZF91bml0ZGlyfSIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgICAgIHNlZCAtaSAtZSAncyxzYmluZGlyID0gL3NiaW4sc2JpbmRpciA9ICR7YmFzZV9zYmluZGlyfSxnJyBcCisgICAgICAgICAgICAke1N9L3V0aWxzL21vdW50L01ha2VmaWxlLmFtCisKKyAgICAgICAgc2VkIC1pIC1lICdzLHNiaW5kaXIgPSAvc2JpbixzYmluZGlyID0gJHtiYXNlX3NiaW5kaXJ9LGcnIFwKKyAgICAgICAgICAgICR7U30vdXRpbHMvb3NkX2xvZ2luL01ha2VmaWxlLmFtCit9CisKKyMgTWFrZSBjbGVhbiBuZWVkZWQgYmVjYXVzZSB0aGUgcGFja2FnZSBjb21lcyB3aXRoCisjIHByZWNvbXBpbGVkIDY0LWJpdCBvYmplY3RzIHRoYXQgYnJlYWsgdGhlIGJ1aWxkCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisJbWFrZSBjbGVhbgorfQorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKwlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9uZnNzZXJ2ZXIgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL25mc3NlcnZlcgorCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L25mc2NvbW1vbiAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbmZzY29tbW9uCisKKwlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9uZnMtdXRpbHMuY29uZiAke0R9JHtzeXNjb25mZGlyfQorCWluc3RhbGwgLW0gMDc1NSAke1N9L3V0aWxzL21vdW50L25mc21vdW50LmNvbmYgJHtEfSR7c3lzY29uZmRpcn0KKworCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9uZnMtc2VydmVyLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbmZzLW1vdW50ZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLworCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L25mcy1zdGF0ZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLworCXNlZCAtaSAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyBcCisJCS1lICdzLEBTWVNDT05GRElSQCwke3N5c2NvbmZkaXJ9LGcnIFwKKwkJJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vKi5zZXJ2aWNlCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgorCSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9wcm9jLWZzLW5mc2QubW91bnQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCisJICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzaW5pdC50YXJnZXQud2FudHMvCisJICAgIGxuIC1zZiAuLi9wcm9jLWZzLW5mc2QubW91bnQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzaW5pdC50YXJnZXQud2FudHMvcHJvYy1mcy1uZnNkLm1vdW50CisJZmkKKworCSMga2VybmVsIGNvZGUgYXMgb2YgMy44IGhhcmQtY29kZXMgdGhpcyBwYXRoIGFzIGEgZGVmYXVsdAorCWluc3RhbGwgLWQgJHtEfS92YXIvbGliL25mcy92NHJlY292ZXJ5CisKKwkjIGNob3duIHRoZSBkaXJlY3RvcmllcyBhbmQgZmlsZXMKKwljaG93biAtUiBycGN1c2VyOnJwY3VzZXIgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL25mcy9zdGF0ZAorCWNobW9kIDA2NDQgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL25mcy9zdGF0ZC9zdGF0ZQorCisJIyB0aGUgZm9sbG93aW5nIGFyZSBidWlsdCBieSBDQ19GT1JfQlVJTEQKKwlybSAtZiAke0R9JHtzYmluZGlyfS9ycGNkZWJ1ZworCXJtIC1mICR7RH0ke3NiaW5kaXJ9L3JwY2dlbgorCXJtIC1mICR7RH0ke3NiaW5kaXJ9L2xvY2t0ZXN0CisKKyAgICAgICAgIyBNYWtlIHB5dGhvbiB0b29scyB1c2UgcHl0aG9uIDMKKyAgICAgICAgc2VkIC1pIC1lICcxcywjIS4qcHl0aG9uLiosIyEke2JpbmRpcn0vcHl0aG9uMywnICR7RH0ke3NiaW5kaXJ9L21vdW50c3RhdHMgJHtEfSR7c2JpbmRpcn0vbmZzaW9zdGF0CisKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29mb25vL29mb25vXzEuMTkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vZm9uby9vZm9ub18xLjE5LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZGViZDcxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29mb25vL29mb25vXzEuMTkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1yZXF1aXJlIG9mb25vLmluYwotCi1TUkNfVVJJICA9ICJcCi0gICR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvbmV0d29yay8ke0JQTn0vJHtCUH0udGFyLnh6IFwKLSAgZmlsZTovL29mb25vIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICJhNWY4ODAzYWNlMTEwNTExYjZmZjVhMmIzOTc4MmU4YiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhMGUwOWJkZDhiNTNiOGQyZTRiNTRmMTg2M2VjZDlhZWJlNDc4NjQ3N2E2Y2JmOGY2NTU0OTZlOGVkYjMxYzgxIgotCi1DRkxBR1NfYXBwZW5kX2xpYmMtdWNsaWJjID0gIiAtRF9HTlVfU09VUkNFIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb2Zvbm8vb2Zvbm9fMS4yMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29mb25vL29mb25vXzEuMjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMThmOTgzZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29mb25vL29mb25vXzEuMjAuYmIKQEAgLTAsMCArMSw4IEBACityZXF1aXJlIG9mb25vLmluYworCitTUkNfVVJJICA9ICJcCisgICR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvbmV0d29yay8ke0JQTn0vJHtCUH0udGFyLnh6IFwKKyAgZmlsZTovL29mb25vIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICJmYWQwNjMwZmNlNmE5YWVjZGI3ZGIzN2JjMWYxZGI3ZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1ZDdiYThmNDgxYTc3MTVkMDEzYTc5ZjhkNjQ3N2ViODlkOGFhYWUzOTkzOTVkNWQwMDhhMTMxN2MzNGEzMWQ1IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb2Zvbm8vb2Zvbm9fZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb2Zvbm8vb2Zvbm9fZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZWFmYjc3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29mb25vL29mb25vX2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLXJlcXVpcmUgb2Zvbm8uaW5jCi0KLVMJID0gIiR7V09SS0RJUn0vZ2l0IgotU1JDUkVWID0gIjE0NTQ0ZDU5OTY4MzZmNjI4NjEzYzJjZTU0NDM4MGVlNmZjOGY1MTQiCi1QVgkgPSAiMC4xMi1naXQke1NSQ1BWfSIKLVBSID0gInI1IgotCi1TUkNfVVJJICA9ICJnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL25ldHdvcmsvb2Zvbm8vb2Zvbm8uZ2l0IFwKLQkgICAgZmlsZTovL29mb25vIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0gICR7U30vYm9vdHN0cmFwCi19Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC8wMDAxLW9wZW5zc2gtRml4LXN5bnRheC1lcnJvci1vbi14MzIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvMDAwMS1vcGVuc3NoLUZpeC1zeW50YXgtZXJyb3Itb24teDMyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlOWUyMDAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvMDAwMS1vcGVuc3NoLUZpeC1zeW50YXgtZXJyb3Itb24teDMyLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gYTdlMzU5ZDRiYTM0NWFhMmExM2MwN2YxMDU3MTg0ZTliNGU1OThhMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IHN3ZWVhdW4gPHN3ZWUuYXVuLmtob3JAaW50ZWwuY29tPgorRGF0ZTogVHVlLCAyMiBBdWcgMjAxNyAxMToxOTo0OCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBvcGVuc3NoOiBGaXggc3ludGF4IGVycm9yIG9uIHgzMgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitUaGlzIGJ1ZyBoYXMgYmVlbiBmaXhlZCBpbiB2XzcuNSBicmFuY2ggaHR0cHM6Ly9naXRodWIuY29tL29wZW5zc2gvCitvcGVuc3NoLXBvcnRhYmxlL3RyZWUvVl83XzUgYW5kIG1hc3RlciBicmFuY2ggaHR0cHM6Ly9naXRodWIuY29tLworb3BlbnNzaC9vcGVuc3NoLXBvcnRhYmxlL3RyZWUvbWFzdGVyLgorCitGaXggY29tcGlsYXRpb24gZXJyb3IgZHVyaW5nIG9wZW5zc2ggeDMyIGJ1aWxkIGR1ZSB0byBzeW50YXggZXJyb3IuCisKK1NpZ25lZC1vZmYtYnk6IHN3ZWVhdW4gPHN3ZWUuYXVuLmtob3JAaW50ZWwuY29tPgorLS0tCisgc2FuZGJveC1zZWNjb21wLWZpbHRlci5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc2FuZGJveC1zZWNjb21wLWZpbHRlci5jIGIvc2FuZGJveC1zZWNjb21wLWZpbHRlci5jCitpbmRleCAzYTFhZWRjLi5hOGQ0NzJhIDEwMDY0NAorLS0tIGEvc2FuZGJveC1zZWNjb21wLWZpbHRlci5jCisrKysgYi9zYW5kYm94LXNlY2NvbXAtZmlsdGVyLmMKK0BAIC0yMzUsNyArMjM1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBzb2NrX2ZpbHRlciBwcmVhdXRoX2luc25zW10gPSB7CisgCSAqIHg4Ni02NCBzeXNjYWxsIHVuZGVyIHNvbWUgY2lyY3Vtc3RhbmNlcywgZS5nLgorIAkgKiBodHRwczovL2J1Z3MuZGViaWFuLm9yZy84NDk5MjMKKyAJICovCistCVNDX0FMTE9XKF9fTlJfY2xvY2tfZ2V0dGltZSAmIH5fX1gzMl9TWVNDQUxMX0JJVCk7CisrCVNDX0FMTE9XKF9fTlJfY2xvY2tfZ2V0dGltZSAmIH5fX1gzMl9TWVNDQUxMX0JJVCksCisgI2VuZGlmCisgCisgCS8qIERlZmF1bHQgZGVueSAqLworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvZml4LXBvdGVudGlhbC1zaWduZWQtb3ZlcmZsb3ctaW4tcG9pbnRlci1hcml0aG1hdGljLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL2ZpeC1wb3RlbnRpYWwtc2lnbmVkLW92ZXJmbG93LWluLXBvaW50ZXItYXJpdGhtYXRpYy5wYXRjaAppbmRleCBkZjY0YTE0Li43ZTA0M2EyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvZml4LXBvdGVudGlhbC1zaWduZWQtb3ZlcmZsb3ctaW4tcG9pbnRlci1hcml0aG1hdGljLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9maXgtcG90ZW50aWFsLXNpZ25lZC1vdmVyZmxvdy1pbi1wb2ludGVyLWFyaXRobWF0aWMucGF0Y2gKQEAgLTgsNyArOCw3IEBACiBJbiBjYXNlIG9mIGNvbXBpbGF0aW9uIGJ5IGdjYyBvciBjbGFuZyB3aXRoIC1mdHJhcHYgb3B0aW9uLCB0aGUgb3ZlcmZsb3cKIHdvdWxkIGxlYWQgdG8gcHJvZ3JhbSBhYm9ydC4KIAotVXBzdHJlYW0tc3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHA6Ly9idWd6aWxsYS5taW5kcm90Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjYwOF0KK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwOi8vYnVnemlsbGEubWluZHJvdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2MDhdCiAKIFNpZ25lZC1vZmYtYnk6IFl1YW5qaWUgSHVhbmcgPHl1YW5qaWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KIC0tLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL3NzaGRfY2hlY2tfa2V5cyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9zc2hkX2NoZWNrX2tleXMKaW5kZXggZjViYmE1My4uNTQ2M2IxYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL3NzaGRfY2hlY2tfa2V5cworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvc3NoZF9jaGVja19rZXlzCkBAIC0xLDUgKzEsMzUgQEAKICMhIC9iaW4vc2gKIAorZ2VuZXJhdGVfa2V5KCkgeworICAgIGxvY2FsIEZJTEU9JDEKKyAgICBsb2NhbCBUWVBFPSQyCisgICAgbG9jYWwgRElSPSIkKGRpcm5hbWUgIiRGSUxFIikiCisKKyAgICBta2RpciAtcCAiJERJUiIKKyAgICBzc2gta2V5Z2VuIC1xIC1mICIke0ZJTEV9LnRtcCIgLU4gJycgLXQgJFRZUEUKKworICAgICMgQXRvbWljYWxseSByZW5hbWUgZmlsZSBwdWJsaWMga2V5CisgICAgbXYgLWYgIiR7RklMRX0udG1wLnB1YiIgIiR7RklMRX0ucHViIgorCisgICAgIyBUaGlzIHN5bmMgZG9lcyBkb3VibGUgZHV0eTogRW5zdXJpbmcgdGhhdCB0aGUgZGF0YSBpbiB0aGUgdGVtcG9yYXJ5CisgICAgIyBwcml2YXRlIGtleSBmaWxlIGlzIG9uIGRpc2sgYmVmb3JlIHRoZSByZW5hbWUsIGFuZCBlbnN1cmluZyB0aGF0IHRoZQorICAgICMgcHVibGljIGtleSByZW5hbWUgaXMgY29tcGxldGVkIGJlZm9yZSB0aGUgcHJpdmF0ZSBrZXkgcmVuYW1lLCBzaW5jZSB3ZQorICAgICMgc3dpdGNoIG9uIHRoZSBleGlzdGVuY2Ugb2YgdGhlIHByaXZhdGUga2V5IHRvIHRyaWdnZXIga2V5IGdlbmVyYXRpb24uCisgICAgIyBUaGlzIGRvZXMgbWVhbiBpdCBpcyBwb3NzaWJsZSBmb3IgdGhlIHB1YmxpYyBrZXkgdG8gZXhpc3QsIGJ1dCBiZSBnYXJiYWdlCisgICAgIyBidXQgdGhpcyBpcyBPSyBiZWNhdXNlIGluIHRoYXQgY2FzZSB0aGUgcHJpdmF0ZSBrZXkgd29uJ3QgZXhpc3QgYW5kIHRoZQorICAgICMga2V5cyB3aWxsIGJlIHJlZ2VuZXJhdGVkLgorICAgICMKKyAgICAjIEluIHRoZSBldmVudCB0aGF0IHN5bmMgdW5kZXJzdGFuZHMgYXJndW1lbnRzIHRoYXQgbGltaXQgd2hhdCBpdCB0cmllcyB0bworICAgICMgZnN5bmMoKSwgd2UgcHJvdmlkZWQgdGhlbS4gSWYgaXQgZG9lcyBub3QsIGl0IHdpbGwgc2ltcGx5IGNhbGwgc3luYygpCisgICAgIyB3aGljaCBpcyBqdXN0IGFzIHdlbGwKKyAgICBzeW5jICIke0ZJTEV9LnB1YiIgIiRESVIiICIke0ZJTEV9LnRtcCIKKworICAgIG12ICIke0ZJTEV9LnRtcCIgIiRGSUxFIgorCisgICAgIyBzeW5jIHRvIGVuc3VyZSB0aGUgYXRvbWljIHJlbmFtZSBpcyBjb21taXR0ZWQKKyAgICBzeW5jICIkRElSIgorfQorCiAjIC9ldGMvZGVmYXVsdC9zc2ggbWF5IHNldCBTWVNDT05GRElSIGFuZCBTU0hEX09QVFMKIGlmIHRlc3QgLWYgL2V0Yy9kZWZhdWx0L3NzaDsgdGhlbgogICAgIC4gL2V0Yy9kZWZhdWx0L3NzaApAQCAtNDMsMjIgKzczLDE4IEBACiAjIGNyZWF0ZSBrZXlzIGlmIG5lY2Vzc2FyeQogaWYgWyAhIC1mICRIT1NUX0tFWV9SU0EgXTsgdGhlbgogICAgIGVjaG8gIiAgZ2VuZXJhdGluZyBzc2ggUlNBIGtleS4uLiIKLSAgICBta2RpciAtcCAkKGRpcm5hbWUgJEhPU1RfS0VZX1JTQSkKLSAgICBzc2gta2V5Z2VuIC1xIC1mICRIT1NUX0tFWV9SU0EgLU4gJycgLXQgcnNhCisgICAgZ2VuZXJhdGVfa2V5ICRIT1NUX0tFWV9SU0EgcnNhCiBmaQogaWYgWyAhIC1mICRIT1NUX0tFWV9FQ0RTQSBdOyB0aGVuCiAgICAgZWNobyAiICBnZW5lcmF0aW5nIHNzaCBFQ0RTQSBrZXkuLi4iCi0gICAgbWtkaXIgLXAgJChkaXJuYW1lICRIT1NUX0tFWV9FQ0RTQSkKLSAgICBzc2gta2V5Z2VuIC1xIC1mICRIT1NUX0tFWV9FQ0RTQSAtTiAnJyAtdCBlY2RzYQorICAgIGdlbmVyYXRlX2tleSAkSE9TVF9LRVlfRUNEU0EgZWNkc2EKIGZpCiBpZiBbICEgLWYgJEhPU1RfS0VZX0RTQSBdOyB0aGVuCiAgICAgZWNobyAiICBnZW5lcmF0aW5nIHNzaCBEU0Ega2V5Li4uIgotICAgIG1rZGlyIC1wICQoZGlybmFtZSAkSE9TVF9LRVlfRFNBKQotICAgIHNzaC1rZXlnZW4gLXEgLWYgJEhPU1RfS0VZX0RTQSAtTiAnJyAtdCBkc2EKKyAgICBnZW5lcmF0ZV9rZXkgJEhPU1RfS0VZX0RTQSBkc2EKIGZpCiBpZiBbICEgLWYgJEhPU1RfS0VZX0VEMjU1MTkgXTsgdGhlbgogICAgIGVjaG8gIiAgZ2VuZXJhdGluZyBzc2ggRUQyNTUxOSBrZXkuLi4iCi0gICAgbWtkaXIgLXAgJChkaXJuYW1lICRIT1NUX0tFWV9FRDI1NTE5KQotICAgIHNzaC1rZXlnZW4gLXEgLWYgJEhPU1RfS0VZX0VEMjU1MTkgLU4gJycgLXQgZWQyNTUxOQorICAgIGdlbmVyYXRlX2tleSAkSE9TVF9LRVlfRUQyNTUxOSBlZDI1NTE5CiBmaQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvc3NoZF9jb25maWcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvc3NoZF9jb25maWcKaW5kZXggZDQ4YmQyYi4uMzFmZTVkOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL3NzaGRfY29uZmlnCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9zc2hkX2NvbmZpZwpAQCAtMTA3LDcgKzEwNyw2IEBACiAjUHJpbnRMYXN0TG9nIHllcwogI1RDUEtlZXBBbGl2ZSB5ZXMKICNVc2VMb2dpbiBubwotVXNlUHJpdmlsZWdlU2VwYXJhdGlvbiBzYW5kYm94ICMgRGVmYXVsdCBmb3IgbmV3IGluc3RhbGxhdGlvbnMuCiAjUGVybWl0VXNlckVudmlyb25tZW50IG5vCiBDb21wcmVzc2lvbiBubwogQ2xpZW50QWxpdmVJbnRlcnZhbCAxNQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoXzcuNHAxLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoXzcuNHAxLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTAxZWFkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaF83LjRwMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE3MiArMCwwIEBACi1TVU1NQVJZID0gIkEgc3VpdGUgb2Ygc2VjdXJpdHktcmVsYXRlZCBuZXR3b3JrIHV0aWxpdGllcyBiYXNlZCBvbiBcCi10aGUgU1NIIHByb3RvY29sIGluY2x1ZGluZyB0aGUgc3NoIGNsaWVudCBhbmQgc3NoZCBzZXJ2ZXIiCi1ERVNDUklQVElPTiA9ICJTZWN1cmUgcmxvZ2luL3JzaC9yY3AvdGVsbmV0IHJlcGxhY2VtZW50IChPcGVuU1NIKSBcCi1Tc2ggKFNlY3VyZSBTaGVsbCkgaXMgYSBwcm9ncmFtIGZvciBsb2dnaW5nIGludG8gYSByZW1vdGUgbWFjaGluZSBcCi1hbmQgZm9yIGV4ZWN1dGluZyBjb21tYW5kcyBvbiBhIHJlbW90ZSBtYWNoaW5lLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cub3BlbnNzaC5jb20vIgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0U7bWQ1PWUzMjYwNDU2NTdlODQyNTQxZDNmMzVhYWRhNDQyNTA3IgotCi1ERVBFTkRTID0gInpsaWIgb3BlbnNzbCIKLURFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2xpYnBhbScsICcnLCBkKX0iCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Z0cC5vcGVuYnNkLm9yZy9wdWIvT3BlbkJTRC9PcGVuU1NIL3BvcnRhYmxlL29wZW5zc2gtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3NzaGRfY29uZmlnIFwKLSAgICAgICAgICAgZmlsZTovL3NzaF9jb25maWcgXAotICAgICAgICAgICBmaWxlOi8vaW5pdCBcCi0gICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJyR7UEFNX1NSQ19VUkl9JywgJycsIGQpfSBcCi0gICAgICAgICAgIGZpbGU6Ly9zc2hkLnNvY2tldCBcCi0gICAgICAgICAgIGZpbGU6Ly9zc2hkQC5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL3NzaGRnZW5rZXlzLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vdm9sYXRpbGVzLjk5X3NzaGQgXAotICAgICAgICAgICBmaWxlOi8vYWRkLXRlc3Qtc3VwcG9ydC1mb3ItYnVzeWJveC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vb3BlbnNzaC03LjFwMS1jb25kaXRpb25hbC1jb21waWxlLWRlcy1pbi1jaXBoZXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vb3BlbnNzaC03LjFwMS1jb25kaXRpb25hbC1jb21waWxlLWRlcy1pbi1wa2NzMTEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LXBvdGVudGlhbC1zaWduZWQtb3ZlcmZsb3ctaW4tcG9pbnRlci1hcml0aG1hdGljLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3NzaGRfY2hlY2tfa2V5cyBcCi0gICAgICAgICAgICIKLQotUEFNX1NSQ19VUkkgPSAiZmlsZTovL3NzaGQiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJiMmRiMmE4M2NhZjY2YTIwOGJiNzhkNmQyODdjZGFhMyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxYjFmYzRhMTRlMjAyNDI5MzE4MTkyNGVkMjQ4NzJlNmYyZTA2MjkzZjNlODkyNmEzNzZiOGFlYzQ4MWYxOWQxIgotCi1pbmhlcml0IHVzZXJhZGQgdXBkYXRlLXJjLmQgdXBkYXRlLWFsdGVybmF0aXZlcyBzeXN0ZW1kCi0KLVVTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0tc3NoZCIKLVVTRVJBRERfUEFSQU1fJHtQTn0tc3NoZCA9ICItLXN5c3RlbSAtLW5vLWNyZWF0ZS1ob21lIC0taG9tZS1kaXIgL3Zhci9ydW4vc3NoZCAtLXNoZWxsIC9iaW4vZmFsc2UgLS11c2VyLWdyb3VwIHNzaGQiCi1JTklUU0NSSVBUX1BBQ0tBR0VTID0gIiR7UE59LXNzaGQiCi1JTklUU0NSSVBUX05BTUVfJHtQTn0tc3NoZCA9ICJzc2hkIgotSU5JVFNDUklQVF9QQVJBTVNfJHtQTn0tc3NoZCA9ICJkZWZhdWx0cyA5IgotCi1TWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59LXNzaGQiCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0tc3NoZCA9ICJzc2hkLnNvY2tldCIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHB0ZXN0Ci0KLSMgTEZTIHN1cHBvcnQ6Ci1DRkxBR1MgKz0gIi1EX19GSUxFX09GRlNFVF9CSVRTPTY0IgotCi0jIGxvZ2luIHBhdGggaXMgaGFyZGNvZGVkIGluIHNzaGQKLUVYVFJBX09FQ09ORiA9ICInTE9HSU5fUFJPR1JBTT0ke2Jhc2VfYmluZGlyfS9sb2dpbicgXAotICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJy0td2l0aC1wYW0nLCAnLS13aXRob3V0LXBhbScsIGQpfSBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LXpsaWItdmVyc2lvbi1jaGVjayBcCi0gICAgICAgICAgICAgICAgLS13aXRoLXByaXZzZXAtcGF0aD0vdmFyL3J1bi9zc2hkIFwKLSAgICAgICAgICAgICAgICAtLXN5c2NvbmZkaXI9JHtzeXNjb25mZGlyfS9zc2ggXAotICAgICAgICAgICAgICAgIC0td2l0aC14YXV0aD0vdXNyL2Jpbi94YXV0aCBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLXN0cmlwIFwKLSAgICAgICAgICAgICAgICAiCi0KLSMgU2luY2Ugd2UgZG8gbm90IGRlcGVuZCBvbiBsaWJic2QsIHdlIGRvIG5vdCB3YW50IGNvbmZpZ3VyZSB0byB1c2UgaXQKLSMganVzdCBiZWNhdXNlIGl0IGZpbmRzIGxpYnV0aWwuaC4gIEJ1dCwgc3BlY2lmeWluZyAtLWRpc2FibGUtbGlidXRpbAotIyBjYXVzZXMgY29tcGlsZSBlcnJvcnMsIHNvLi4uCi1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfaGVhZGVyX2JzZF9saWJ1dGlsX2g9bm8gYWNfY3ZfaGVhZGVyX2xpYnV0aWxfaD1ubyIKLQotIyBwYXNzd2QgcGF0aCBpcyBoYXJkY29kZWQgaW4gc3NoZAotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X3BhdGhfUEFUSF9QQVNTV0RfUFJPRz0ke2JpbmRpcn0vcGFzc3dkIgotCi0jIFdlIGRvbid0IHdhbnQgdG8gZGVwZW5kIG9uIGxpYmJsb2NrZmlsZQotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X2hlYWRlcl9tYWlsbG9ja19oPW5vIgotCi0jIFRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciB1Y2xpYmMgYmVjYXVzZSBpbmNsdWRpbmcgc3RkaW8uaAotIyBwdWxscyBpbiBwdGhyZWFkcy5oIGFuZCBjYXVzZXMgY29uZmxpY3RzIGluIGZ1bmN0aW9uIHByb3RvdHlwZXMuCi0jIFRoaXMgcmVzdWx0cyBpbiBjb21waWxhdGlvbiBmYWlsdXJlLCBzbyB1bmxlc3MgdGhpcyBpcyBmaXhlZCwKLSMgZGlzYWJsZSBwYW0gZm9yIHVjbGliYy4KLUVYVFJBX09FQ09ORl9hcHBlbmRfbGliYy11Y2xpYmM9IiAtLXdpdGhvdXQtcGFtIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0JZXhwb3J0IExEPSIke0NDfSIKLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hkX2NvbmZpZyAke0J9LwotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3NzaF9jb25maWcgJHtCfS8KLQlpZiBbICEgLWUgYWNpbmNsdWRlLm00IC1hIC1lIGFjbG9jYWwubTQgXTsgdGhlbgotCQljcCBhY2xvY2FsLm00IGFjaW5jbHVkZS5tNAotCWZpCi19Ci0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0gICAgICAgICMgc2tpcCByZWdyZXNzL3VuaXR0ZXN0cy8gYmluYXJpZXM6IHRoaXMgd2lsbCBzaWxlbnRseSBza2lwCi0gICAgICAgICMgdW5pdHRlc3RzIGluIHJ1bi1wdGVzdHMgd2hpY2ggaXMgZ29vZCBiZWNhdXNlIHRoZXkgYXJlIHNvIHNsb3cuCi0gICAgICAgIG9lX3J1bm1ha2UgcmVncmVzcy9tb2RwaXBlIHJlZ3Jlc3Mvc2V0dWlkLWFsbG93ZWQgcmVncmVzcy9uZXRjYXQKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSIgXTsgdGhlbgotCQlpbnN0YWxsIC1EIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hkICR7RH0ke3N5c2NvbmZkaXJ9L3BhbS5kL3NzaGQKLQkJc2VkIC1pIC1lICdzOiNVc2VQQU0gbm86VXNlUEFNIHllczonICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZwotCWZpCi0KLQlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0iIF07IHRoZW4KLQkJc2VkIC1pIC1lICdzOiNYMTFGb3J3YXJkaW5nIG5vOlgxMUZvcndhcmRpbmcgeWVzOicgJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnCi0JZmkKLQotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0JaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc3NoZAotCXJtIC1mICR7RH0ke2JpbmRpcn0vc2xvZ2luICR7RH0ke2RhdGFkaXJ9L1NzaC5iaW4KLQlybWRpciAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4vc3NoZCAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4gJHtEfSR7bG9jYWxzdGF0ZWRpcn0KLQlpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcwotCWluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vdm9sYXRpbGVzLjk5X3NzaGQgJHtEfS8ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzk5X3NzaGQKLQlpbnN0YWxsIC1tIDA3NTUgJHtTfS9jb250cmliL3NzaC1jb3B5LWlkICR7RH0ke2JpbmRpcn0KLQotCSMgQ3JlYXRlIGNvbmZpZyBmaWxlcyBmb3IgcmVhZC1vbmx5IHJvb3RmcwotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc3NoCi0JaW5zdGFsbCAtbSA2NDQgJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQotCXNlZCAtaSAnL0hvc3RLZXkvZCcgJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5Ci0JZWNobyAiSG9zdEtleSAvdmFyL3J1bi9zc2gvc3NoX2hvc3RfcnNhX2tleSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5Ci0JZWNobyAiSG9zdEtleSAvdmFyL3J1bi9zc2gvc3NoX2hvc3RfZHNhX2tleSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5Ci0JZWNobyAiSG9zdEtleSAvdmFyL3J1bi9zc2gvc3NoX2hvc3RfZWNkc2Ffa2V5IiA+PiAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWdfcmVhZG9ubHkKLQllY2hvICJIb3N0S2V5IC92YXIvcnVuL3NzaC9zc2hfaG9zdF9lZDI1NTE5X2tleSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5Ci0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0JaW5zdGFsbCAtYyAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZC5zb2NrZXQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQlpbnN0YWxsIC1jIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hkQC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0JaW5zdGFsbCAtYyAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZGdlbmtleXMuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCXNlZCAtaSAtZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnIFwKLQkJLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAotCQktZSAncyxAQklORElSQCwke2JpbmRpcn0sZycgXAotCQktZSAncyxATElCRVhFQ0RJUkAsJHtsaWJleGVjZGlyfS8ke0JQTn0sZycgXAotCQkke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zc2hkLnNvY2tldCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8qLnNlcnZpY2UKLQotCXNlZCAtaSAtZSAncyxATElCRVhFQ0RJUkAsJHtsaWJleGVjZGlyfS8ke0JQTn0sZycgXAotCQkke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc3NoZAotCi0JaW5zdGFsbCAtRCAtbSAwNzU1ICR7V09SS0RJUn0vc3NoZF9jaGVja19rZXlzICR7RH0ke2xpYmV4ZWNkaXJ9LyR7QlBOfS9zc2hkX2NoZWNrX2tleXMKLX0KLQotZG9faW5zdGFsbF9wdGVzdCAoKSB7Ci0Jc2VkIC1pIC1lICJzfF5TRlRQU0VSVkVSPS4qfFNGVFBTRVJWRVI9JHtsaWJleGVjZGlyfS9zZnRwLXNlcnZlcnwiIHJlZ3Jlc3MvdGVzdC1leGVjLnNoCi0JY3AgLXIgcmVncmVzcyAke0R9JHtQVEVTVF9QQVRIfQotfQotCi1BTExPV19FTVBUWV8ke1BOfSA9ICIxIgotCi1QQUNLQUdFUyA9KyAiJHtQTn0ta2V5Z2VuICR7UE59LXNjcCAke1BOfS1zc2ggJHtQTn0tc3NoZCAke1BOfS1zZnRwICR7UE59LW1pc2MgJHtQTn0tc2Z0cC1zZXJ2ZXIiCi1GSUxFU18ke1BOfS1zY3AgPSAiJHtiaW5kaXJ9L3NjcC4ke0JQTn0iCi1GSUxFU18ke1BOfS1zc2ggPSAiJHtiaW5kaXJ9L3NzaC4ke0JQTn0gJHtzeXNjb25mZGlyfS9zc2gvc3NoX2NvbmZpZyIKLUZJTEVTXyR7UE59LXNzaGQgPSAiJHtzYmluZGlyfS9zc2hkICR7c3lzY29uZmRpcn0vaW5pdC5kL3NzaGQgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbSIKLUZJTEVTXyR7UE59LXNzaGQgKz0gIiR7c3lzY29uZmRpcn0vc3NoL21vZHVsaSAke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZyAke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seSAke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzk5X3NzaGQgJHtzeXNjb25mZGlyfS9wYW0uZC9zc2hkIgotRklMRVNfJHtQTn0tc3NoZCArPSAiJHtsaWJleGVjZGlyfS8ke0JQTn0vc3NoZF9jaGVja19rZXlzIgotRklMRVNfJHtQTn0tc2Z0cCA9ICIke2JpbmRpcn0vc2Z0cCIKLUZJTEVTXyR7UE59LXNmdHAtc2VydmVyID0gIiR7bGliZXhlY2Rpcn0vc2Z0cC1zZXJ2ZXIiCi1GSUxFU18ke1BOfS1taXNjID0gIiR7YmluZGlyfS9zc2gqICR7bGliZXhlY2Rpcn0vc3NoKiIKLUZJTEVTXyR7UE59LWtleWdlbiA9ICIke2JpbmRpcn0vc3NoLWtleWdlbiIKLQotUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LXNjcCAke1BOfS1zc2ggJHtQTn0tc3NoZCAke1BOfS1rZXlnZW4iCi1SREVQRU5EU18ke1BOfS1zc2hkICs9ICIke1BOfS1rZXlnZW4gJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAncGFtLXBsdWdpbi1rZXlpbml0IHBhbS1wbHVnaW4tbG9naW51aWQnLCAnJywgZCl9IgotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiR7UE59LXNmdHAgJHtQTn0tbWlzYyAke1BOfS1zZnRwLXNlcnZlciBtYWtlIgotCi1SUFJPVklERVNfJHtQTn0tc3NoID0gInNzaCIKLVJQUk9WSURFU18ke1BOfS1zc2hkID0gInNzaGQiCi0KLVJDT05GTElDVFNfJHtQTn0gPSAiZHJvcGJlYXIiCi1SQ09ORkxJQ1RTXyR7UE59LXNzaGQgPSAiZHJvcGJlYXIiCi1SQ09ORkxJQ1RTXyR7UE59LWtleWdlbiA9ICJzc2gta2V5Z2VuIgotCi1DT05GRklMRVNfJHtQTn0tc3NoZCA9ICIke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZyIKLUNPTkZGSUxFU18ke1BOfS1zc2ggPSAiJHtzeXNjb25mZGlyfS9zc2gvc3NoX2NvbmZpZyIKLQotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiOTAiCi1BTFRFUk5BVElWRV8ke1BOfS1zY3AgPSAic2NwIgotQUxURVJOQVRJVkVfJHtQTn0tc3NoID0gInNzaCIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoXzcuNXAxLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoXzcuNXAxLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2Y2E2ZmYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2hfNy41cDEuYmIKQEAgLTAsMCArMSwxNjggQEAKK1NVTU1BUlkgPSAiQSBzdWl0ZSBvZiBzZWN1cml0eS1yZWxhdGVkIG5ldHdvcmsgdXRpbGl0aWVzIGJhc2VkIG9uIFwKK3RoZSBTU0ggcHJvdG9jb2wgaW5jbHVkaW5nIHRoZSBzc2ggY2xpZW50IGFuZCBzc2hkIHNlcnZlciIKK0RFU0NSSVBUSU9OID0gIlNlY3VyZSBybG9naW4vcnNoL3JjcC90ZWxuZXQgcmVwbGFjZW1lbnQgKE9wZW5TU0gpIFwKK1NzaCAoU2VjdXJlIFNoZWxsKSBpcyBhIHByb2dyYW0gZm9yIGxvZ2dpbmcgaW50byBhIHJlbW90ZSBtYWNoaW5lIFwKK2FuZCBmb3IgZXhlY3V0aW5nIGNvbW1hbmRzIG9uIGEgcmVtb3RlIG1hY2hpbmUuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vcGVuc3NoLmNvbS8iCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5DRTttZDU9ZTMyNjA0NTY1N2U4NDI1NDFkM2YzNWFhZGE0NDI1MDciCisKKyMgb3BlbnNzbCAxLjEgcGF0Y2hlcyBhcmUgcHJvcG9zZWQgYXQgaHR0cHM6Ly9naXRodWIuY29tL29wZW5zc2gvb3BlbnNzaC1wb3J0YWJsZS9wdWxsLzQ4CitERVBFTkRTID0gInpsaWIgb3BlbnNzbDEwIgorREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlicGFtJywgJycsIGQpfSIKKworU1JDX1VSSSA9ICJodHRwOi8vZnRwLm9wZW5ic2Qub3JnL3B1Yi9PcGVuQlNEL09wZW5TU0gvcG9ydGFibGUvb3BlbnNzaC0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vc3NoZF9jb25maWcgXAorICAgICAgICAgICBmaWxlOi8vc3NoX2NvbmZpZyBcCisgICAgICAgICAgIGZpbGU6Ly9pbml0IFwKKyAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnJHtQQU1fU1JDX1VSSX0nLCAnJywgZCl9IFwKKyAgICAgICAgICAgZmlsZTovL3NzaGQuc29ja2V0IFwKKyAgICAgICAgICAgZmlsZTovL3NzaGRALnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vc3NoZGdlbmtleXMuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly92b2xhdGlsZXMuOTlfc3NoZCBcCisgICAgICAgICAgIGZpbGU6Ly9hZGQtdGVzdC1zdXBwb3J0LWZvci1idXN5Ym94LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9vcGVuc3NoLTcuMXAxLWNvbmRpdGlvbmFsLWNvbXBpbGUtZGVzLWluLWNpcGhlci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9vcGVuc3NoLTcuMXAxLWNvbmRpdGlvbmFsLWNvbXBpbGUtZGVzLWluLXBrY3MxMS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtcG90ZW50aWFsLXNpZ25lZC1vdmVyZmxvdy1pbi1wb2ludGVyLWFyaXRobWF0aWMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1vcGVuc3NoLUZpeC1zeW50YXgtZXJyb3Itb24teDMyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3NzaGRfY2hlY2tfa2V5cyBcCisgICAgICAgICAgICIKKworUEFNX1NSQ19VUkkgPSAiZmlsZTovL3NzaGQiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2NTJmZGM3ZDgzOTJmMTEyYmVmMTFjYWNmN2U2OWUyMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5ODQ2ZTNjNWZhYjlmMDU0NzQwMGI0ZDJjMDE3OTkyZjkxNDIyMmIzZmQxZjhlZWU2YzdkYzZiYzVlNTlmOWYwIgorCitpbmhlcml0IHVzZXJhZGQgdXBkYXRlLXJjLmQgdXBkYXRlLWFsdGVybmF0aXZlcyBzeXN0ZW1kCisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0tc3NoZCIKK1VTRVJBRERfUEFSQU1fJHtQTn0tc3NoZCA9ICItLXN5c3RlbSAtLW5vLWNyZWF0ZS1ob21lIC0taG9tZS1kaXIgL3Zhci9ydW4vc3NoZCAtLXNoZWxsIC9iaW4vZmFsc2UgLS11c2VyLWdyb3VwIHNzaGQiCitJTklUU0NSSVBUX1BBQ0tBR0VTID0gIiR7UE59LXNzaGQiCitJTklUU0NSSVBUX05BTUVfJHtQTn0tc3NoZCA9ICJzc2hkIgorSU5JVFNDUklQVF9QQVJBTVNfJHtQTn0tc3NoZCA9ICJkZWZhdWx0cyA5IgorCitTWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59LXNzaGQiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0tc3NoZCA9ICJzc2hkLnNvY2tldCIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHB0ZXN0CisKKyMgTEZTIHN1cHBvcnQ6CitDRkxBR1MgKz0gIi1EX19GSUxFX09GRlNFVF9CSVRTPTY0IgorCisjIGxvZ2luIHBhdGggaXMgaGFyZGNvZGVkIGluIHNzaGQKK0VYVFJBX09FQ09ORiA9ICInTE9HSU5fUFJPR1JBTT0ke2Jhc2VfYmluZGlyfS9sb2dpbicgXAorICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJy0td2l0aC1wYW0nLCAnLS13aXRob3V0LXBhbScsIGQpfSBcCisgICAgICAgICAgICAgICAgLS13aXRob3V0LXpsaWItdmVyc2lvbi1jaGVjayBcCisgICAgICAgICAgICAgICAgLS13aXRoLXByaXZzZXAtcGF0aD0vdmFyL3J1bi9zc2hkIFwKKyAgICAgICAgICAgICAgICAtLXN5c2NvbmZkaXI9JHtzeXNjb25mZGlyfS9zc2ggXAorICAgICAgICAgICAgICAgIC0td2l0aC14YXV0aD0vdXNyL2Jpbi94YXV0aCBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXN0cmlwIFwKKyAgICAgICAgICAgICAgICAiCisKKyMgU2luY2Ugd2UgZG8gbm90IGRlcGVuZCBvbiBsaWJic2QsIHdlIGRvIG5vdCB3YW50IGNvbmZpZ3VyZSB0byB1c2UgaXQKKyMganVzdCBiZWNhdXNlIGl0IGZpbmRzIGxpYnV0aWwuaC4gIEJ1dCwgc3BlY2lmeWluZyAtLWRpc2FibGUtbGlidXRpbAorIyBjYXVzZXMgY29tcGlsZSBlcnJvcnMsIHNvLi4uCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfaGVhZGVyX2JzZF9saWJ1dGlsX2g9bm8gYWNfY3ZfaGVhZGVyX2xpYnV0aWxfaD1ubyIKKworIyBwYXNzd2QgcGF0aCBpcyBoYXJkY29kZWQgaW4gc3NoZAorQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X3BhdGhfUEFUSF9QQVNTV0RfUFJPRz0ke2JpbmRpcn0vcGFzc3dkIgorCisjIFdlIGRvbid0IHdhbnQgdG8gZGVwZW5kIG9uIGxpYmJsb2NrZmlsZQorQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X2hlYWRlcl9tYWlsbG9ja19oPW5vIgorCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisJZXhwb3J0IExEPSIke0NDfSIKKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hkX2NvbmZpZyAke0J9LworCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3NzaF9jb25maWcgJHtCfS8KKwlpZiBbICEgLWUgYWNpbmNsdWRlLm00IC1hIC1lIGFjbG9jYWwubTQgXTsgdGhlbgorCQljcCBhY2xvY2FsLm00IGFjaW5jbHVkZS5tNAorCWZpCit9CisKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisgICAgICAgICMgc2tpcCByZWdyZXNzL3VuaXR0ZXN0cy8gYmluYXJpZXM6IHRoaXMgd2lsbCBzaWxlbnRseSBza2lwCisgICAgICAgICMgdW5pdHRlc3RzIGluIHJ1bi1wdGVzdHMgd2hpY2ggaXMgZ29vZCBiZWNhdXNlIHRoZXkgYXJlIHNvIHNsb3cuCisgICAgICAgIG9lX3J1bm1ha2UgcmVncmVzcy9tb2RwaXBlIHJlZ3Jlc3Mvc2V0dWlkLWFsbG93ZWQgcmVncmVzcy9uZXRjYXQKK30KKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSIgXTsgdGhlbgorCQlpbnN0YWxsIC1EIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hkICR7RH0ke3N5c2NvbmZkaXJ9L3BhbS5kL3NzaGQKKwkJc2VkIC1pIC1lICdzOiNVc2VQQU0gbm86VXNlUEFNIHllczonICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZworCWZpCisKKwlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0iIF07IHRoZW4KKwkJc2VkIC1pIC1lICdzOiNYMTFGb3J3YXJkaW5nIG5vOlgxMUZvcndhcmRpbmcgeWVzOicgJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnCisJZmkKKworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc3NoZAorCXJtIC1mICR7RH0ke2JpbmRpcn0vc2xvZ2luICR7RH0ke2RhdGFkaXJ9L1NzaC5iaW4KKwlybWRpciAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4vc3NoZCAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4gJHtEfSR7bG9jYWxzdGF0ZWRpcn0KKwlpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcworCWluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vdm9sYXRpbGVzLjk5X3NzaGQgJHtEfS8ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzk5X3NzaGQKKwlpbnN0YWxsIC1tIDA3NTUgJHtTfS9jb250cmliL3NzaC1jb3B5LWlkICR7RH0ke2JpbmRpcn0KKworCSMgQ3JlYXRlIGNvbmZpZyBmaWxlcyBmb3IgcmVhZC1vbmx5IHJvb3RmcworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc3NoCisJaW5zdGFsbCAtbSA2NDQgJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQorCXNlZCAtaSAnL0hvc3RLZXkvZCcgJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5CisJZWNobyAiSG9zdEtleSAvdmFyL3J1bi9zc2gvc3NoX2hvc3RfcnNhX2tleSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5CisJZWNobyAiSG9zdEtleSAvdmFyL3J1bi9zc2gvc3NoX2hvc3RfZHNhX2tleSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5CisJZWNobyAiSG9zdEtleSAvdmFyL3J1bi9zc2gvc3NoX2hvc3RfZWNkc2Ffa2V5IiA+PiAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWdfcmVhZG9ubHkKKwllY2hvICJIb3N0S2V5IC92YXIvcnVuL3NzaC9zc2hfaG9zdF9lZDI1NTE5X2tleSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5CisKKwlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJaW5zdGFsbCAtYyAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZC5zb2NrZXQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwlpbnN0YWxsIC1jIC1tIDA2NDQgJHtXT1JLRElSfS9zc2hkQC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJaW5zdGFsbCAtYyAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZGdlbmtleXMuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCXNlZCAtaSAtZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnIFwKKwkJLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAorCQktZSAncyxAQklORElSQCwke2JpbmRpcn0sZycgXAorCQktZSAncyxATElCRVhFQ0RJUkAsJHtsaWJleGVjZGlyfS8ke0JQTn0sZycgXAorCQkke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zc2hkLnNvY2tldCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8qLnNlcnZpY2UKKworCXNlZCAtaSAtZSAncyxATElCRVhFQ0RJUkAsJHtsaWJleGVjZGlyfS8ke0JQTn0sZycgXAorCQkke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc3NoZAorCisJaW5zdGFsbCAtRCAtbSAwNzU1ICR7V09SS0RJUn0vc3NoZF9jaGVja19rZXlzICR7RH0ke2xpYmV4ZWNkaXJ9LyR7QlBOfS9zc2hkX2NoZWNrX2tleXMKK30KKworZG9faW5zdGFsbF9wdGVzdCAoKSB7CisJc2VkIC1pIC1lICJzfF5TRlRQU0VSVkVSPS4qfFNGVFBTRVJWRVI9JHtsaWJleGVjZGlyfS9zZnRwLXNlcnZlcnwiIHJlZ3Jlc3MvdGVzdC1leGVjLnNoCisJY3AgLXIgcmVncmVzcyAke0R9JHtQVEVTVF9QQVRIfQorfQorCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgorCitQQUNLQUdFUyA9KyAiJHtQTn0ta2V5Z2VuICR7UE59LXNjcCAke1BOfS1zc2ggJHtQTn0tc3NoZCAke1BOfS1zZnRwICR7UE59LW1pc2MgJHtQTn0tc2Z0cC1zZXJ2ZXIiCitGSUxFU18ke1BOfS1zY3AgPSAiJHtiaW5kaXJ9L3NjcC4ke0JQTn0iCitGSUxFU18ke1BOfS1zc2ggPSAiJHtiaW5kaXJ9L3NzaC4ke0JQTn0gJHtzeXNjb25mZGlyfS9zc2gvc3NoX2NvbmZpZyIKK0ZJTEVTXyR7UE59LXNzaGQgPSAiJHtzYmluZGlyfS9zc2hkICR7c3lzY29uZmRpcn0vaW5pdC5kL3NzaGQgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbSIKK0ZJTEVTXyR7UE59LXNzaGQgKz0gIiR7c3lzY29uZmRpcn0vc3NoL21vZHVsaSAke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZyAke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seSAke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzk5X3NzaGQgJHtzeXNjb25mZGlyfS9wYW0uZC9zc2hkIgorRklMRVNfJHtQTn0tc3NoZCArPSAiJHtsaWJleGVjZGlyfS8ke0JQTn0vc3NoZF9jaGVja19rZXlzIgorRklMRVNfJHtQTn0tc2Z0cCA9ICIke2JpbmRpcn0vc2Z0cCIKK0ZJTEVTXyR7UE59LXNmdHAtc2VydmVyID0gIiR7bGliZXhlY2Rpcn0vc2Z0cC1zZXJ2ZXIiCitGSUxFU18ke1BOfS1taXNjID0gIiR7YmluZGlyfS9zc2gqICR7bGliZXhlY2Rpcn0vc3NoKiIKK0ZJTEVTXyR7UE59LWtleWdlbiA9ICIke2JpbmRpcn0vc3NoLWtleWdlbiIKKworUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LXNjcCAke1BOfS1zc2ggJHtQTn0tc3NoZCAke1BOfS1rZXlnZW4iCitSREVQRU5EU18ke1BOfS1zc2hkICs9ICIke1BOfS1rZXlnZW4gJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAncGFtLXBsdWdpbi1rZXlpbml0IHBhbS1wbHVnaW4tbG9naW51aWQnLCAnJywgZCl9IgorUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiR7UE59LXNmdHAgJHtQTn0tbWlzYyAke1BOfS1zZnRwLXNlcnZlciBtYWtlIgorCitSUFJPVklERVNfJHtQTn0tc3NoID0gInNzaCIKK1JQUk9WSURFU18ke1BOfS1zc2hkID0gInNzaGQiCisKK1JDT05GTElDVFNfJHtQTn0gPSAiZHJvcGJlYXIiCitSQ09ORkxJQ1RTXyR7UE59LXNzaGQgPSAiZHJvcGJlYXIiCitSQ09ORkxJQ1RTXyR7UE59LWtleWdlbiA9ICJzc2gta2V5Z2VuIgorCitDT05GRklMRVNfJHtQTn0tc3NoZCA9ICIke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZyIKK0NPTkZGSUxFU18ke1BOfS1zc2ggPSAiJHtzeXNjb25mZGlyfS9zc2gvc3NoX2NvbmZpZyIKKworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiOTAiCitBTFRFUk5BVElWRV8ke1BOfS1zY3AgPSAic2NwIgorQUxURVJOQVRJVkVfJHtQTn0tc3NoID0gInNzaCIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybS9kZWJpYW4vdmVyc2lvbi1zY3JpcHQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJtL2RlYmlhbi92ZXJzaW9uLXNjcmlwdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTc0MzRmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybS9kZWJpYW4vdmVyc2lvbi1zY3JpcHQucGF0Y2gKQEAgLTAsMCArMSw0NjY2IEBACisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQorCitJbmRleDogb3BlbnNzbC0xLjAuMn5iZXRhMS5vYnNvbGV0ZS4wLjA0OTg0MzY1MTU0OTA1NzUvQ29uZmlndXJlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gb3BlbnNzbC0xLjAuMn5iZXRhMS5vYnNvbGV0ZS4wLjA0OTg0MzY1MTU0OTA1NzUub3JpZy9Db25maWd1cmUJMjAxNC0wMi0yNCAyMTowMjozMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMC4yfmJldGExLm9ic29sZXRlLjAuMDQ5ODQzNjUxNTQ5MDU3NS9Db25maWd1cmUJMjAxNC0wMi0yNCAyMTowMjozMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xNjUxLDYgKzE2NTEsOCBAQAorIAkJfQorIAl9CisgCisrJHNoYXJlZF9sZGZsYWcgLj0gIiAtV2wsLS12ZXJzaW9uLXNjcmlwdD1vcGVuc3NsLmxkIjsKKysKKyBvcGVuKElOLCc8TWFrZWZpbGUub3JnJykgfHwgZGllICJ1bmFibGUgdG8gcmVhZCBNYWtlZmlsZS5vcmc6JCFcbiI7CisgdW5saW5rKCIkTWFrZWZpbGUubmV3IikgfHwgZGllICJ1bmFibGUgdG8gcmVtb3ZlIG9sZCAkTWFrZWZpbGUubmV3OiQhXG4iIGlmIC1lICIkTWFrZWZpbGUubmV3IjsKKyBvcGVuKE9VVCwiPiRNYWtlZmlsZS5uZXciKSB8fCBkaWUgInVuYWJsZSB0byBjcmVhdGUgJE1ha2VmaWxlLm5ldzokIVxuIjsKK0luZGV4OiBvcGVuc3NsLTEuMC4yfmJldGExLm9ic29sZXRlLjAuMDQ5ODQzNjUxNTQ5MDU3NS9vcGVuc3NsLmxkCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysgb3BlbnNzbC0xLjAuMn5iZXRhMS5vYnNvbGV0ZS4wLjA0OTg0MzY1MTU0OTA1NzUvb3BlbnNzbC5sZAkyMDE0LTAyLTI0IDIyOjE5OjA4LjYwMTgyNzI2NiArMDEwMAorQEAgLTAsMCArMSw0NjE1IEBACisrT1BFTlNTTF8xLjAuMCB7CisrCWdsb2JhbDoKKysJCUJJT19mX3NzbDsKKysJCUJJT19uZXdfYnVmZmVyX3NzbF9jb25uZWN0OworKwkJQklPX25ld19zc2w7CisrCQlCSU9fbmV3X3NzbF9jb25uZWN0OworKwkJQklPX3Byb3h5X3NzbF9jb3B5X3Nlc3Npb25faWQ7CisrCQlCSU9fc3NsX2NvcHlfc2Vzc2lvbl9pZDsKKysJCUJJT19zc2xfc2h1dGRvd247CisrCQlkMmlfU1NMX1NFU1NJT047CisrCQlEVExTdjFfY2xpZW50X21ldGhvZDsKKysJCURUTFN2MV9tZXRob2Q7CisrCQlEVExTdjFfc2VydmVyX21ldGhvZDsKKysJCUVSUl9sb2FkX1NTTF9zdHJpbmdzOworKwkJaTJkX1NTTF9TRVNTSU9OOworKwkJa3NzbF9idWlsZF9wcmluY2lwYWxfMjsKKysJCWtzc2xfY2dldF90a3Q7CisrCQlrc3NsX2NoZWNrX2F1dGhlbnQ7CisrCQlrc3NsX2N0eF9mcmVlOworKwkJa3NzbF9jdHhfbmV3OworKwkJa3NzbF9jdHhfc2V0a2V5OworKwkJa3NzbF9jdHhfc2V0cHJpbmM7CisrCQlrc3NsX2N0eF9zZXRzdHJpbmc7CisrCQlrc3NsX2N0eF9zaG93OworKwkJa3NzbF9lcnJfc2V0OworKwkJa3NzbF9rcmI1X2ZyZWVfZGF0YV9jb250ZW50czsKKysJCWtzc2xfc2dldF90a3Q7CisrCQlrc3NsX3NraXBfY29uZm91bmQ7CisrCQlrc3NsX3ZhbGlkYXRlX3RpbWVzOworKwkJUEVNX3JlYWRfYmlvX1NTTF9TRVNTSU9OOworKwkJUEVNX3JlYWRfU1NMX1NFU1NJT047CisrCQlQRU1fd3JpdGVfYmlvX1NTTF9TRVNTSU9OOworKwkJUEVNX3dyaXRlX1NTTF9TRVNTSU9OOworKwkJU1NMX2FjY2VwdDsKKysJCVNTTF9hZGRfY2xpZW50X0NBOworKwkJU1NMX2FkZF9kaXJfY2VydF9zdWJqZWN0c190b19zdGFjazsKKysJCVNTTF9hZGRfZGlyX2NlcnRfc3VianNfdG9fc3RrOworKwkJU1NMX2FkZF9maWxlX2NlcnRfc3ViamVjdHNfdG9fc3RhY2s7CisrCQlTU0xfYWRkX2ZpbGVfY2VydF9zdWJqc190b19zdGs7CisrCQlTU0xfYWxlcnRfZGVzY19zdHJpbmc7CisrCQlTU0xfYWxlcnRfZGVzY19zdHJpbmdfbG9uZzsKKysJCVNTTF9hbGVydF90eXBlX3N0cmluZzsKKysJCVNTTF9hbGVydF90eXBlX3N0cmluZ19sb25nOworKwkJU1NMX2NhbGxiYWNrX2N0cmw7CisrCQlTU0xfY2hlY2tfcHJpdmF0ZV9rZXk7CisrCQlTU0xfQ0lQSEVSX2Rlc2NyaXB0aW9uOworKwkJU1NMX0NJUEhFUl9nZXRfYml0czsKKysJCVNTTF9DSVBIRVJfZ2V0X25hbWU7CisrCQlTU0xfQ0lQSEVSX2dldF92ZXJzaW9uOworKwkJU1NMX2NsZWFyOworKwkJU1NMX0NPTVBfYWRkX2NvbXByZXNzaW9uX21ldGhvZDsKKysJCVNTTF9DT01QX2dldF9jb21wcmVzc2lvbl9tZXRob2RzOworKwkJU1NMX0NPTVBfZ2V0X2NvbXByZXNzX21ldGhvZHM7CisrCQlTU0xfQ09NUF9nZXRfbmFtZTsKKysJCVNTTF9jb25uZWN0OworKwkJU1NMX2NvcHlfc2Vzc2lvbl9pZDsKKysJCVNTTF9jdHJsOworKwkJU1NMX0NUWF9hZGRfY2xpZW50X0NBOworKwkJU1NMX0NUWF9hZGRfc2Vzc2lvbjsKKysJCVNTTF9DVFhfY2FsbGJhY2tfY3RybDsKKysJCVNTTF9DVFhfY2hlY2tfcHJpdmF0ZV9rZXk7CisrCQlTU0xfQ1RYX2N0cmw7CisrCQlTU0xfQ1RYX2ZsdXNoX3Nlc3Npb25zOworKwkJU1NMX0NUWF9mcmVlOworKwkJU1NMX0NUWF9nZXRfY2VydF9zdG9yZTsKKysJCVNTTF9DVFhfZ2V0X2NsaWVudF9DQV9saXN0OworKwkJU1NMX0NUWF9nZXRfY2xpZW50X2NlcnRfY2I7CisrCQlTU0xfQ1RYX2dldF9leF9kYXRhOworKwkJU1NMX0NUWF9nZXRfZXhfbmV3X2luZGV4OworKwkJU1NMX0NUWF9nZXRfaW5mb19jYWxsYmFjazsKKysJCVNTTF9DVFhfZ2V0X3F1aWV0X3NodXRkb3duOworKwkJU1NMX0NUWF9nZXRfdGltZW91dDsKKysJCVNTTF9DVFhfZ2V0X3ZlcmlmeV9jYWxsYmFjazsKKysJCVNTTF9DVFhfZ2V0X3ZlcmlmeV9kZXB0aDsKKysJCVNTTF9DVFhfZ2V0X3ZlcmlmeV9tb2RlOworKwkJU1NMX0NUWF9sb2FkX3ZlcmlmeV9sb2NhdGlvbnM7CisrCQlTU0xfQ1RYX25ldzsKKysJCVNTTF9DVFhfcmVtb3ZlX3Nlc3Npb247CisrCQlTU0xfQ1RYX3Nlc3NfZ2V0X2dldF9jYjsKKysJCVNTTF9DVFhfc2Vzc19nZXRfbmV3X2NiOworKwkJU1NMX0NUWF9zZXNzX2dldF9yZW1vdmVfY2I7CisrCQlTU0xfQ1RYX3Nlc3Npb25zOworKwkJU1NMX0NUWF9zZXNzX3NldF9nZXRfY2I7CisrCQlTU0xfQ1RYX3Nlc3Nfc2V0X25ld19jYjsKKysJCVNTTF9DVFhfc2Vzc19zZXRfcmVtb3ZlX2NiOworKwkJU1NMX0NUWF9zZXQxX3BhcmFtOworKwkJU1NMX0NUWF9zZXRfY2VydF9zdG9yZTsKKysJCVNTTF9DVFhfc2V0X2NlcnRfdmVyaWZ5X2NhbGxiYWNrOworKwkJU1NMX0NUWF9zZXRfY2VydF92ZXJpZnlfY2I7CisrCQlTU0xfQ1RYX3NldF9jaXBoZXJfbGlzdDsKKysJCVNTTF9DVFhfc2V0X2NsaWVudF9DQV9saXN0OworKwkJU1NMX0NUWF9zZXRfY2xpZW50X2NlcnRfY2I7CisrCQlTU0xfQ1RYX3NldF9jbGllbnRfY2VydF9lbmdpbmU7CisrCQlTU0xfQ1RYX3NldF9jb29raWVfZ2VuZXJhdGVfY2I7CisrCQlTU0xfQ1RYX3NldF9jb29raWVfdmVyaWZ5X2NiOworKwkJU1NMX0NUWF9zZXRfZGVmYXVsdF9wYXNzd2RfY2I7CisrCQlTU0xfQ1RYX3NldF9kZWZhdWx0X3Bhc3N3ZF9jYl91c2VyZGF0YTsKKysJCVNTTF9DVFhfc2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzOworKwkJU1NMX0NUWF9zZXRfZGVmX3Bhc3N3ZF9jYl91ZDsKKysJCVNTTF9DVFhfc2V0X2RlZl92ZXJpZnlfcGF0aHM7CisrCQlTU0xfQ1RYX3NldF9leF9kYXRhOworKwkJU1NMX0NUWF9zZXRfZ2VuZXJhdGVfc2Vzc2lvbl9pZDsKKysJCVNTTF9DVFhfc2V0X2luZm9fY2FsbGJhY2s7CisrCQlTU0xfQ1RYX3NldF9tc2dfY2FsbGJhY2s7CisrCQlTU0xfQ1RYX3NldF9wc2tfY2xpZW50X2NhbGxiYWNrOworKwkJU1NMX0NUWF9zZXRfcHNrX3NlcnZlcl9jYWxsYmFjazsKKysJCVNTTF9DVFhfc2V0X3B1cnBvc2U7CisrCQlTU0xfQ1RYX3NldF9xdWlldF9zaHV0ZG93bjsKKysJCVNTTF9DVFhfc2V0X3Nlc3Npb25faWRfY29udGV4dDsKKysJCVNTTF9DVFhfc2V0X3NzbF92ZXJzaW9uOworKwkJU1NMX0NUWF9zZXRfdGltZW91dDsKKysJCVNTTF9DVFhfc2V0X3RtcF9kaF9jYWxsYmFjazsKKysJCVNTTF9DVFhfc2V0X3RtcF9lY2RoX2NhbGxiYWNrOworKwkJU1NMX0NUWF9zZXRfdG1wX3JzYV9jYWxsYmFjazsKKysJCVNTTF9DVFhfc2V0X3RydXN0OworKwkJU1NMX0NUWF9zZXRfdmVyaWZ5OworKwkJU1NMX0NUWF9zZXRfdmVyaWZ5X2RlcHRoOworKwkJU1NMX0NUWF91c2VfY2VydF9jaGFpbl9maWxlOworKwkJU1NMX0NUWF91c2VfY2VydGlmaWNhdGU7CisrCQlTU0xfQ1RYX3VzZV9jZXJ0aWZpY2F0ZV9BU04xOworKwkJU1NMX0NUWF91c2VfY2VydGlmaWNhdGVfY2hhaW5fZmlsZTsKKysJCVNTTF9DVFhfdXNlX2NlcnRpZmljYXRlX2ZpbGU7CisrCQlTU0xfQ1RYX3VzZV9Qcml2YXRlS2V5OworKwkJU1NMX0NUWF91c2VfUHJpdmF0ZUtleV9BU04xOworKwkJU1NMX0NUWF91c2VfUHJpdmF0ZUtleV9maWxlOworKwkJU1NMX0NUWF91c2VfcHNrX2lkZW50aXR5X2hpbnQ7CisrCQlTU0xfQ1RYX3VzZV9SU0FQcml2YXRlS2V5OworKwkJU1NMX0NUWF91c2VfUlNBUHJpdmF0ZUtleV9BU04xOworKwkJU1NMX0NUWF91c2VfUlNBUHJpdmF0ZUtleV9maWxlOworKwkJU1NMX2RvX2hhbmRzaGFrZTsKKysJCVNTTF9kdXA7CisrCQlTU0xfZHVwX0NBX2xpc3Q7CisrCQlTU0xlYXlfYWRkX3NzbF9hbGdvcml0aG1zOworKwkJU1NMX2ZyZWU7CisrCQlTU0xfZ2V0MV9zZXNzaW9uOworKwkJU1NMX2dldF9jZXJ0aWZpY2F0ZTsKKysJCVNTTF9nZXRfY2lwaGVyX2xpc3Q7CisrCQlTU0xfZ2V0X2NpcGhlcnM7CisrCQlTU0xfZ2V0X2NsaWVudF9DQV9saXN0OworKwkJU1NMX2dldF9jdXJyZW50X2NpcGhlcjsKKysJCVNTTF9nZXRfY3VycmVudF9jb21wcmVzc2lvbjsKKysJCVNTTF9nZXRfY3VycmVudF9leHBhbnNpb247CisrCQlTU0xfZ2V0X2RlZmF1bHRfdGltZW91dDsKKysJCVNTTF9nZXRfZXJyb3I7CisrCQlTU0xfZ2V0X2V4X2RhdGE7CisrCQlTU0xfZ2V0X2V4X2RhdGFfWDUwOV9TVE9SRV9DVFhfaWR4OworKwkJU1NMX2dldF9leF9kX1g1MDlfU1RPUkVfQ1RYX2lkeDsKKysJCVNTTF9nZXRfZXhfbmV3X2luZGV4OworKwkJU1NMX2dldF9mZDsKKysJCVNTTF9nZXRfZmluaXNoZWQ7CisrCQlTU0xfZ2V0X2luZm9fY2FsbGJhY2s7CisrCQlTU0xfZ2V0X3BlZXJfY2VydF9jaGFpbjsKKysJCVNTTF9nZXRfcGVlcl9jZXJ0aWZpY2F0ZTsKKysJCVNTTF9nZXRfcGVlcl9maW5pc2hlZDsKKysJCVNTTF9nZXRfcHJpdmF0ZWtleTsKKysJCVNTTF9nZXRfcHNrX2lkZW50aXR5OworKwkJU1NMX2dldF9wc2tfaWRlbnRpdHlfaGludDsKKysJCVNTTF9nZXRfcXVpZXRfc2h1dGRvd247CisrCQlTU0xfZ2V0X3JiaW87CisrCQlTU0xfZ2V0X3JlYWRfYWhlYWQ7CisrCQlTU0xfZ2V0X3JmZDsKKysJCVNTTF9nZXRfc2VydmVybmFtZTsKKysJCVNTTF9nZXRfc2VydmVybmFtZV90eXBlOworKwkJU1NMX2dldF9zZXNzaW9uOworKwkJU1NMX2dldF9zaGFyZWRfY2lwaGVyczsKKysJCVNTTF9nZXRfc2h1dGRvd247CisrCQlTU0xfZ2V0X1NTTF9DVFg7CisrCQlTU0xfZ2V0X3NzbF9tZXRob2Q7CisrCQlTU0xfZ2V0X3ZlcmlmeV9jYWxsYmFjazsKKysJCVNTTF9nZXRfdmVyaWZ5X2RlcHRoOworKwkJU1NMX2dldF92ZXJpZnlfbW9kZTsKKysJCVNTTF9nZXRfdmVyaWZ5X3Jlc3VsdDsKKysJCVNTTF9nZXRfdmVyc2lvbjsKKysJCVNTTF9nZXRfd2JpbzsKKysJCVNTTF9nZXRfd2ZkOworKwkJU1NMX2hhc19tYXRjaGluZ19zZXNzaW9uX2lkOworKwkJU1NMX2xpYnJhcnlfaW5pdDsKKysJCVNTTF9sb2FkX2NsaWVudF9DQV9maWxlOworKwkJU1NMX2xvYWRfZXJyb3Jfc3RyaW5nczsKKysJCVNTTF9uZXc7CisrCQlTU0xfcGVlazsKKysJCVNTTF9wZW5kaW5nOworKwkJU1NMX3JlYWQ7CisrCQlTU0xfcmVuZWdvdGlhdGU7CisrCQlTU0xfcmVuZWdvdGlhdGVfcGVuZGluZzsKKysJCVNTTF9yc3RhdGVfc3RyaW5nOworKwkJU1NMX3JzdGF0ZV9zdHJpbmdfbG9uZzsKKysJCVNTTF9TRVNTSU9OX2NtcDsKKysJCVNTTF9TRVNTSU9OX2ZyZWU7CisrCQlTU0xfU0VTU0lPTl9nZXRfZXhfZGF0YTsKKysJCVNTTF9TRVNTSU9OX2dldF9leF9uZXdfaW5kZXg7CisrCQlTU0xfU0VTU0lPTl9nZXRfaWQ7CisrCQlTU0xfU0VTU0lPTl9nZXRfdGltZTsKKysJCVNTTF9TRVNTSU9OX2dldF90aW1lb3V0OworKwkJU1NMX1NFU1NJT05faGFzaDsKKysJCVNTTF9TRVNTSU9OX25ldzsKKysJCVNTTF9TRVNTSU9OX3ByaW50OworKwkJU1NMX1NFU1NJT05fcHJpbnRfZnA7CisrCQlTU0xfU0VTU0lPTl9zZXRfZXhfZGF0YTsKKysJCVNTTF9TRVNTSU9OX3NldF90aW1lOworKwkJU1NMX1NFU1NJT05fc2V0X3RpbWVvdXQ7CisrCQlTU0xfc2V0MV9wYXJhbTsKKysJCVNTTF9zZXRfYWNjZXB0X3N0YXRlOworKwkJU1NMX3NldF9iaW87CisrCQlTU0xfc2V0X2NpcGhlcl9saXN0OworKwkJU1NMX3NldF9jbGllbnRfQ0FfbGlzdDsKKysJCVNTTF9zZXRfY29ubmVjdF9zdGF0ZTsKKysJCVNTTF9zZXRfZXhfZGF0YTsKKysJCVNTTF9zZXRfZmQ7CisrCQlTU0xfc2V0X2dlbmVyYXRlX3Nlc3Npb25faWQ7CisrCQlTU0xfc2V0X2luZm9fY2FsbGJhY2s7CisrCQlTU0xfc2V0X21zZ19jYWxsYmFjazsKKysJCVNTTF9zZXRfcHNrX2NsaWVudF9jYWxsYmFjazsKKysJCVNTTF9zZXRfcHNrX3NlcnZlcl9jYWxsYmFjazsKKysJCVNTTF9zZXRfcHVycG9zZTsKKysJCVNTTF9zZXRfcXVpZXRfc2h1dGRvd247CisrCQlTU0xfc2V0X3JlYWRfYWhlYWQ7CisrCQlTU0xfc2V0X3JmZDsKKysJCVNTTF9zZXRfc2Vzc2lvbjsKKysJCVNTTF9zZXRfc2Vzc2lvbl9pZF9jb250ZXh0OworKwkJU1NMX3NldF9zZXNzaW9uX3NlY3JldF9jYjsKKysJCVNTTF9zZXRfc2Vzc2lvbl90aWNrZXRfZXh0OworKwkJU1NMX3NldF9zZXNzaW9uX3RpY2tldF9leHRfY2I7CisrCQlTU0xfc2V0X3NodXRkb3duOworKwkJU1NMX3NldF9TU0xfQ1RYOworKwkJU1NMX3NldF9zc2xfbWV0aG9kOworKwkJU1NMX3NldF90bXBfZGhfY2FsbGJhY2s7CisrCQlTU0xfc2V0X3RtcF9lY2RoX2NhbGxiYWNrOworKwkJU1NMX3NldF90bXBfcnNhX2NhbGxiYWNrOworKwkJU1NMX3NldF90cnVzdDsKKysJCVNTTF9zZXRfdmVyaWZ5OworKwkJU1NMX3NldF92ZXJpZnlfZGVwdGg7CisrCQlTU0xfc2V0X3ZlcmlmeV9yZXN1bHQ7CisrCQlTU0xfc2V0X3dmZDsKKysJCVNTTF9zaHV0ZG93bjsKKysJCVNTTF9zdGF0ZTsKKysJCVNTTF9zdGF0ZV9zdHJpbmc7CisrCQlTU0xfc3RhdGVfc3RyaW5nX2xvbmc7CisrCQlTU0xfdXNlX2NlcnRpZmljYXRlOworKwkJU1NMX3VzZV9jZXJ0aWZpY2F0ZV9BU04xOworKwkJU1NMX3VzZV9jZXJ0aWZpY2F0ZV9maWxlOworKwkJU1NMX3VzZV9Qcml2YXRlS2V5OworKwkJU1NMX3VzZV9Qcml2YXRlS2V5X0FTTjE7CisrCQlTU0xfdXNlX1ByaXZhdGVLZXlfZmlsZTsKKysJCVNTTF91c2VfcHNrX2lkZW50aXR5X2hpbnQ7CisrCQlTU0xfdXNlX1JTQVByaXZhdGVLZXk7CisrCQlTU0xfdXNlX1JTQVByaXZhdGVLZXlfQVNOMTsKKysJCVNTTF91c2VfUlNBUHJpdmF0ZUtleV9maWxlOworKwkJU1NMdjIzX2NsaWVudF9tZXRob2Q7CisrCQlTU0x2MjNfbWV0aG9kOworKwkJU1NMdjIzX3NlcnZlcl9tZXRob2Q7CisrCQlTU0x2Ml9jbGllbnRfbWV0aG9kOworKwkJU1NMdjJfbWV0aG9kOworKwkJU1NMdjJfc2VydmVyX21ldGhvZDsKKysJCVNTTHYzX2NsaWVudF9tZXRob2Q7CisrCQlTU0x2M19tZXRob2Q7CisrCQlTU0x2M19zZXJ2ZXJfbWV0aG9kOworKwkJU1NMX3ZlcnNpb247CisrCQlTU0xfd2FudDsKKysJCVNTTF93cml0ZTsKKysJCVRMU3YxX2NsaWVudF9tZXRob2Q7CisrCQlUTFN2MV9tZXRob2Q7CisrCQlUTFN2MV9zZXJ2ZXJfbWV0aG9kOworKworKworKwkJU1NMZWF5OworKwkJU1NMZWF5X3ZlcnNpb247CisrCQlBU04xX0JJVF9TVFJJTkdfYXNuMV9tZXRoOworKwkJQVNOMV9IRUFERVJfZnJlZTsKKysJCUFTTjFfSEVBREVSX25ldzsKKysJCUFTTjFfSUE1U1RSSU5HX2FzbjFfbWV0aDsKKysJCUFTTjFfSU5URUdFUl9nZXQ7CisrCQlBU04xX0lOVEVHRVJfc2V0OworKwkJQVNOMV9JTlRFR0VSX3RvX0JOOworKwkJQVNOMV9PQkpFQ1RfY3JlYXRlOworKwkJQVNOMV9PQkpFQ1RfZnJlZTsKKysJCUFTTjFfT0JKRUNUX25ldzsKKysJCUFTTjFfUFJJTlRBQkxFX3R5cGU7CisrCQlBU04xX1NUUklOR19jbXA7CisrCQlBU04xX1NUUklOR19kdXA7CisrCQlBU04xX1NUUklOR19mcmVlOworKwkJQVNOMV9TVFJJTkdfbmV3OworKwkJQVNOMV9TVFJJTkdfcHJpbnQ7CisrCQlBU04xX1NUUklOR19zZXQ7CisrCQlBU04xX1NUUklOR190eXBlX25ldzsKKysJCUFTTjFfVFlQRV9mcmVlOworKwkJQVNOMV9UWVBFX25ldzsKKysJCUFTTjFfVU5JVkVSU0FMU1RSSU5HX3RvX3N0cmluZzsKKysJCUFTTjFfVVRDVElNRV9jaGVjazsKKysJCUFTTjFfVVRDVElNRV9wcmludDsKKysJCUFTTjFfVVRDVElNRV9zZXQ7CisrCQlBU04xX2NoZWNrX2luZmluaXRlX2VuZDsKKysJCUFTTjFfZDJpX2JpbzsKKysJCUFTTjFfZDJpX2ZwOworKwkJQVNOMV9kaWdlc3Q7CisrCQlBU04xX2R1cDsKKysJCUFTTjFfZ2V0X29iamVjdDsKKysJCUFTTjFfaTJkX2JpbzsKKysJCUFTTjFfaTJkX2ZwOworKwkJQVNOMV9vYmplY3Rfc2l6ZTsKKysJCUFTTjFfcGFyc2U7CisrCQlBU04xX3B1dF9vYmplY3Q7CisrCQlBU04xX3NpZ247CisrCQlBU04xX3ZlcmlmeTsKKysJCUJGX2NiY19lbmNyeXB0OworKwkJQkZfY2ZiNjRfZW5jcnlwdDsKKysJCUJGX2VjYl9lbmNyeXB0OworKwkJQkZfZW5jcnlwdDsKKysJCUJGX29mYjY0X2VuY3J5cHQ7CisrCQlCRl9vcHRpb25zOworKwkJQkZfc2V0X2tleTsKKysJCUJJT19DT05ORUNUX2ZyZWU7CisrCQlCSU9fQ09OTkVDVF9uZXc7CisrCQlCSU9fYWNjZXB0OworKwkJQklPX2N0cmw7CisrCQlCSU9faW50X2N0cmw7CisrCQlCSU9fZGVidWdfY2FsbGJhY2s7CisrCQlCSU9fZHVtcDsKKysJCUJJT19kdXBfY2hhaW47CisrCQlCSU9fZl9iYXNlNjQ7CisrCQlCSU9fZl9idWZmZXI7CisrCQlCSU9fZl9jaXBoZXI7CisrCQlCSU9fZl9tZDsKKysJCUJJT19mX251bGw7CisrCQlCSU9fZl9wcm94eV9zZXJ2ZXI7CisrCQlCSU9fZmRfbm9uX2ZhdGFsX2Vycm9yOworKwkJQklPX2ZkX3Nob3VsZF9yZXRyeTsKKysJCUJJT19maW5kX3R5cGU7CisrCQlCSU9fZnJlZTsKKysJCUJJT19mcmVlX2FsbDsKKysJCUJJT19nZXRfYWNjZXB0X3NvY2tldDsKKysJCUJJT19nZXRfZmlsdGVyX2JpbzsKKysJCUJJT19nZXRfaG9zdF9pcDsKKysJCUJJT19nZXRfcG9ydDsKKysJCUJJT19nZXRfcmV0cnlfQklPOworKwkJQklPX2dldF9yZXRyeV9yZWFzb247CisrCQlCSU9fZ2V0aG9zdGJ5bmFtZTsKKysJCUJJT19nZXRzOworKwkJQklPX25ldzsKKysJCUJJT19uZXdfYWNjZXB0OworKwkJQklPX25ld19jb25uZWN0OworKwkJQklPX25ld19mZDsKKysJCUJJT19uZXdfZmlsZTsKKysJCUJJT19uZXdfZnA7CisrCQlCSU9fbmV3X3NvY2tldDsKKysJCUJJT19wb3A7CisrCQlCSU9fcHJpbnRmOworKwkJQklPX3B1c2g7CisrCQlCSU9fcHV0czsKKysJCUJJT19yZWFkOworKwkJQklPX3NfYWNjZXB0OworKwkJQklPX3NfY29ubmVjdDsKKysJCUJJT19zX2ZkOworKwkJQklPX3NfZmlsZTsKKysJCUJJT19zX21lbTsKKysJCUJJT19zX251bGw7CisrCQlCSU9fc19wcm94eV9jbGllbnQ7CisrCQlCSU9fc19zb2NrZXQ7CisrCQlCSU9fc2V0OworKwkJQklPX3NldF9jaXBoZXI7CisrCQlCSU9fc2V0X3RjcF9uZGVsYXk7CisrCQlCSU9fc29ja19jbGVhbnVwOworKwkJQklPX3NvY2tfZXJyb3I7CisrCQlCSU9fc29ja19pbml0OworKwkJQklPX3NvY2tfbm9uX2ZhdGFsX2Vycm9yOworKwkJQklPX3NvY2tfc2hvdWxkX3JldHJ5OworKwkJQklPX3NvY2tldF9pb2N0bDsKKysJCUJJT193cml0ZTsKKysJCUJOX0NUWF9mcmVlOworKwkJQk5fQ1RYX25ldzsKKysJCUJOX01PTlRfQ1RYX2ZyZWU7CisrCQlCTl9NT05UX0NUWF9uZXc7CisrCQlCTl9NT05UX0NUWF9zZXQ7CisrCQlCTl9hZGQ7CisrCQlCTl9hZGRfd29yZDsKKysJCUJOX2hleDJibjsKKysJCUJOX2JpbjJibjsKKysJCUJOX2JuMmhleDsKKysJCUJOX2JuMmJpbjsKKysJCUJOX2NsZWFyOworKwkJQk5fY2xlYXJfYml0OworKwkJQk5fY2xlYXJfZnJlZTsKKysJCUJOX2NtcDsKKysJCUJOX2NvcHk7CisrCQlCTl9kaXY7CisrCQlCTl9kaXZfd29yZDsKKysJCUJOX2R1cDsKKysJCUJOX2ZyZWU7CisrCQlCTl9mcm9tX21vbnRnb21lcnk7CisrCQlCTl9nY2Q7CisrCQlCTl9nZW5lcmF0ZV9wcmltZTsKKysJCUJOX2dldF93b3JkOworKwkJQk5faXNfYml0X3NldDsKKysJCUJOX2lzX3ByaW1lOworKwkJQk5fbHNoaWZ0OworKwkJQk5fbHNoaWZ0MTsKKysJCUJOX21hc2tfYml0czsKKysJCUJOX21vZDsKKysJCUJOX21vZF9leHA7CisrCQlCTl9tb2RfZXhwX21vbnQ7CisrCQlCTl9tb2RfZXhwX3NpbXBsZTsKKysJCUJOX21vZF9pbnZlcnNlOworKwkJQk5fbW9kX211bDsKKysJCUJOX21vZF9tdWxfbW9udGdvbWVyeTsKKysJCUJOX21vZF93b3JkOworKwkJQk5fbXVsOworKwkJQk5fbmV3OworKwkJQk5fbnVtX2JpdHM7CisrCQlCTl9udW1fYml0c193b3JkOworKwkJQk5fb3B0aW9uczsKKysJCUJOX3ByaW50OworKwkJQk5fcHJpbnRfZnA7CisrCQlCTl9yYW5kOworKwkJQk5fcmVjaXByb2NhbDsKKysJCUJOX3JzaGlmdDsKKysJCUJOX3JzaGlmdDE7CisrCQlCTl9zZXRfYml0OworKwkJQk5fc2V0X3dvcmQ7CisrCQlCTl9zcXI7CisrCQlCTl9zdWI7CisrCQlCTl90b19BU04xX0lOVEVHRVI7CisrCQlCTl91Y21wOworKwkJQk5fdmFsdWVfb25lOworKwkJQlVGX01FTV9mcmVlOworKwkJQlVGX01FTV9ncm93OworKwkJQlVGX01FTV9uZXc7CisrCQlCVUZfc3RyZHVwOworKwkJQ09ORl9mcmVlOworKwkJQ09ORl9nZXRfbnVtYmVyOworKwkJQ09ORl9nZXRfc2VjdGlvbjsKKysJCUNPTkZfZ2V0X3N0cmluZzsKKysJCUNPTkZfbG9hZDsKKysJCUNSWVBUT19hZGRfbG9jazsKKysJCUNSWVBUT19kYmdfZnJlZTsKKysJCUNSWVBUT19kYmdfbWFsbG9jOworKwkJQ1JZUFRPX2RiZ19yZWFsbG9jOworKwkJQ1JZUFRPX2RiZ19yZW1hbGxvYzsKKysJCUNSWVBUT19mcmVlOworKwkJQ1JZUFRPX2dldF9hZGRfbG9ja19jYWxsYmFjazsKKysJCUNSWVBUT19nZXRfaWRfY2FsbGJhY2s7CisrCQlDUllQVE9fZ2V0X2xvY2tfbmFtZTsKKysJCUNSWVBUT19nZXRfbG9ja2luZ19jYWxsYmFjazsKKysJCUNSWVBUT19nZXRfbWVtX2Z1bmN0aW9uczsKKysJCUNSWVBUT19sb2NrOworKwkJQ1JZUFRPX21hbGxvYzsKKysJCUNSWVBUT19tZW1fY3RybDsKKysJCUNSWVBUT19tZW1fbGVha3M7CisrCQlDUllQVE9fbWVtX2xlYWtzX2NiOworKwkJQ1JZUFRPX21lbV9sZWFrc19mcDsKKysJCUNSWVBUT19yZWFsbG9jOworKwkJQ1JZUFRPX3JlbWFsbG9jOworKwkJQ1JZUFRPX3NldF9hZGRfbG9ja19jYWxsYmFjazsKKysJCUNSWVBUT19zZXRfaWRfY2FsbGJhY2s7CisrCQlDUllQVE9fc2V0X2xvY2tpbmdfY2FsbGJhY2s7CisrCQlDUllQVE9fc2V0X21lbV9mdW5jdGlvbnM7CisrCQlDUllQVE9fdGhyZWFkX2lkOworKwkJREhfY2hlY2s7CisrCQlESF9jb21wdXRlX2tleTsKKysJCURIX2ZyZWU7CisrCQlESF9nZW5lcmF0ZV9rZXk7CisrCQlESF9nZW5lcmF0ZV9wYXJhbWV0ZXJzOworKwkJREhfbmV3OworKwkJREhfc2l6ZTsKKysJCURIcGFyYW1zX3ByaW50OworKwkJREhwYXJhbXNfcHJpbnRfZnA7CisrCQlEU0FfZnJlZTsKKysJCURTQV9nZW5lcmF0ZV9rZXk7CisrCQlEU0FfZ2VuZXJhdGVfcGFyYW1ldGVyczsKKysJCURTQV9pc19wcmltZTsKKysJCURTQV9uZXc7CisrCQlEU0FfcHJpbnQ7CisrCQlEU0FfcHJpbnRfZnA7CisrCQlEU0Ffc2lnbjsKKysJCURTQV9zaWduX3NldHVwOworKwkJRFNBX3NpemU7CisrCQlEU0FfdmVyaWZ5OworKwkJRFNBcGFyYW1zX3ByaW50OworKwkJRFNBcGFyYW1zX3ByaW50X2ZwOworKwkJRVJSX2NsZWFyX2Vycm9yOworKwkJRVJSX2Vycm9yX3N0cmluZzsKKysJCUVSUl9mcmVlX3N0cmluZ3M7CisrCQlFUlJfZnVuY19lcnJvcl9zdHJpbmc7CisrCQlFUlJfZ2V0X2Vycl9zdGF0ZV90YWJsZTsKKysJCUVSUl9nZXRfZXJyb3I7CisrCQlFUlJfZ2V0X2Vycm9yX2xpbmU7CisrCQlFUlJfZ2V0X3N0YXRlOworKwkJRVJSX2dldF9zdHJpbmdfdGFibGU7CisrCQlFUlJfbGliX2Vycm9yX3N0cmluZzsKKysJCUVSUl9sb2FkX0FTTjFfc3RyaW5nczsKKysJCUVSUl9sb2FkX0JJT19zdHJpbmdzOworKwkJRVJSX2xvYWRfQk5fc3RyaW5nczsKKysJCUVSUl9sb2FkX0JVRl9zdHJpbmdzOworKwkJRVJSX2xvYWRfQ09ORl9zdHJpbmdzOworKwkJRVJSX2xvYWRfREhfc3RyaW5nczsKKysJCUVSUl9sb2FkX0RTQV9zdHJpbmdzOworKwkJRVJSX2xvYWRfRVJSX3N0cmluZ3M7CisrCQlFUlJfbG9hZF9FVlBfc3RyaW5nczsKKysJCUVSUl9sb2FkX09CSl9zdHJpbmdzOworKwkJRVJSX2xvYWRfUEVNX3N0cmluZ3M7CisrCQlFUlJfbG9hZF9QUk9YWV9zdHJpbmdzOworKwkJRVJSX2xvYWRfUlNBX3N0cmluZ3M7CisrCQlFUlJfbG9hZF9YNTA5X3N0cmluZ3M7CisrCQlFUlJfbG9hZF9jcnlwdG9fc3RyaW5nczsKKysJCUVSUl9sb2FkX3N0cmluZ3M7CisrCQlFUlJfcGVla19lcnJvcjsKKysJCUVSUl9wZWVrX2Vycm9yX2xpbmU7CisrCQlFUlJfcHJpbnRfZXJyb3JzOworKwkJRVJSX3ByaW50X2Vycm9yc19mcDsKKysJCUVSUl9wdXRfZXJyb3I7CisrCQlFUlJfcmVhc29uX2Vycm9yX3N0cmluZzsKKysJCUVSUl9yZW1vdmVfc3RhdGU7CisrCQlFVlBfQnl0ZXNUb0tleTsKKysJCUVWUF9DSVBIRVJfQ1RYX2NsZWFudXA7CisrCQlFVlBfQ2lwaGVyRmluYWw7CisrCQlFVlBfQ2lwaGVySW5pdDsKKysJCUVWUF9DaXBoZXJVcGRhdGU7CisrCQlFVlBfRGVjb2RlQmxvY2s7CisrCQlFVlBfRGVjb2RlRmluYWw7CisrCQlFVlBfRGVjb2RlSW5pdDsKKysJCUVWUF9EZWNvZGVVcGRhdGU7CisrCQlFVlBfRGVjcnlwdEZpbmFsOworKwkJRVZQX0RlY3J5cHRJbml0OworKwkJRVZQX0RlY3J5cHRVcGRhdGU7CisrCQlFVlBfRGlnZXN0RmluYWw7CisrCQlFVlBfRGlnZXN0SW5pdDsKKysJCUVWUF9EaWdlc3RVcGRhdGU7CisrCQlFVlBfRW5jb2RlQmxvY2s7CisrCQlFVlBfRW5jb2RlRmluYWw7CisrCQlFVlBfRW5jb2RlSW5pdDsKKysJCUVWUF9FbmNvZGVVcGRhdGU7CisrCQlFVlBfRW5jcnlwdEZpbmFsOworKwkJRVZQX0VuY3J5cHRJbml0OworKwkJRVZQX0VuY3J5cHRVcGRhdGU7CisrCQlFVlBfT3BlbkZpbmFsOworKwkJRVZQX09wZW5Jbml0OworKwkJRVZQX1BLRVlfYXNzaWduOworKwkJRVZQX1BLRVlfY29weV9wYXJhbWV0ZXJzOworKwkJRVZQX1BLRVlfZnJlZTsKKysJCUVWUF9QS0VZX21pc3NpbmdfcGFyYW1ldGVyczsKKysJCUVWUF9QS0VZX25ldzsKKysJCUVWUF9QS0VZX3NhdmVfcGFyYW1ldGVyczsKKysJCUVWUF9QS0VZX3NpemU7CisrCQlFVlBfUEtFWV90eXBlOworKwkJRVZQX1NlYWxGaW5hbDsKKysJCUVWUF9TZWFsSW5pdDsKKysJCUVWUF9TaWduRmluYWw7CisrCQlFVlBfVmVyaWZ5RmluYWw7CisrCQlFVlBfYWRkX2FsaWFzOworKwkJRVZQX2FkZF9jaXBoZXI7CisrCQlFVlBfYWRkX2RpZ2VzdDsKKysJCUVWUF9iZl9jYmM7CisrCQlFVlBfYmZfY2ZiNjQ7CisrCQlFVlBfYmZfZWNiOworKwkJRVZQX2JmX29mYjsKKysJCUVWUF9jbGVhbnVwOworKwkJRVZQX2Rlc19jYmM7CisrCQlFVlBfZGVzX2NmYjY0OworKwkJRVZQX2Rlc19lY2I7CisrCQlFVlBfZGVzX2VkZTsKKysJCUVWUF9kZXNfZWRlMzsKKysJCUVWUF9kZXNfZWRlM19jYmM7CisrCQlFVlBfZGVzX2VkZTNfY2ZiNjQ7CisrCQlFVlBfZGVzX2VkZTNfb2ZiOworKwkJRVZQX2Rlc19lZGVfY2JjOworKwkJRVZQX2Rlc19lZGVfY2ZiNjQ7CisrCQlFVlBfZGVzX2VkZV9vZmI7CisrCQlFVlBfZGVzX29mYjsKKysJCUVWUF9kZXN4X2NiYzsKKysJCUVWUF9kc3M7CisrCQlFVlBfZHNzMTsKKysJCUVWUF9lbmNfbnVsbDsKKysJCUVWUF9nZXRfY2lwaGVyYnluYW1lOworKwkJRVZQX2dldF9kaWdlc3RieW5hbWU7CisrCQlFVlBfZ2V0X3B3X3Byb21wdDsKKysJCUVWUF9pZGVhX2NiYzsKKysJCUVWUF9pZGVhX2NmYjY0OworKwkJRVZQX2lkZWFfZWNiOworKwkJRVZQX2lkZWFfb2ZiOworKwkJRVZQX21kMjsKKysJCUVWUF9tZDU7CisrCQlFVlBfbWRfbnVsbDsKKysJCUVWUF9yYzJfY2JjOworKwkJRVZQX3JjMl9jZmI2NDsKKysJCUVWUF9yYzJfZWNiOworKwkJRVZQX3JjMl9vZmI7CisrCQlFVlBfcmM0OworKwkJRVZQX3JlYWRfcHdfc3RyaW5nOworKwkJRVZQX3NldF9wd19wcm9tcHQ7CisrCQlFVlBfc2hhOworKwkJRVZQX3NoYTE7CisrCQlNRDI7CisrCQlNRDJfRmluYWw7CisrCQlNRDJfSW5pdDsKKysJCU1EMl9VcGRhdGU7CisrCQlNRDJfb3B0aW9uczsKKysJCU1ENTsKKysJCU1ENV9GaW5hbDsKKysJCU1ENV9Jbml0OworKwkJTUQ1X1VwZGF0ZTsKKysJCU1EQzI7CisrCQlNREMyX0ZpbmFsOworKwkJTURDMl9Jbml0OworKwkJTURDMl9VcGRhdGU7CisrCQlORVRTQ0FQRV9TUEtBQ19mcmVlOworKwkJTkVUU0NBUEVfU1BLQUNfbmV3OworKwkJTkVUU0NBUEVfU1BLSV9mcmVlOworKwkJTkVUU0NBUEVfU1BLSV9uZXc7CisrCQlORVRTQ0FQRV9TUEtJX3NpZ247CisrCQlORVRTQ0FQRV9TUEtJX3ZlcmlmeTsKKysJCU9CSl9hZGRfb2JqZWN0OworKwkJT0JKX2JzZWFyY2g7CisrCQlPQkpfY2xlYW51cDsKKysJCU9CSl9jbXA7CisrCQlPQkpfY3JlYXRlOworKwkJT0JKX2R1cDsKKysJCU9CSl9sbjJuaWQ7CisrCQlPQkpfbmV3X25pZDsKKysJCU9CSl9uaWQybG47CisrCQlPQkpfbmlkMm9iajsKKysJCU9CSl9uaWQyc247CisrCQlPQkpfb2JqMm5pZDsKKysJCU9CSl9zbjJuaWQ7CisrCQlPQkpfdHh0Mm5pZDsKKysJCVBFTV9BU04xX3JlYWQ7CisrCQlQRU1fQVNOMV9yZWFkX2JpbzsKKysJCVBFTV9BU04xX3dyaXRlOworKwkJUEVNX0FTTjFfd3JpdGVfYmlvOworKwkJUEVNX1NlYWxGaW5hbDsKKysJCVBFTV9TZWFsSW5pdDsKKysJCVBFTV9TZWFsVXBkYXRlOworKwkJUEVNX1NpZ25GaW5hbDsKKysJCVBFTV9TaWduSW5pdDsKKysJCVBFTV9TaWduVXBkYXRlOworKwkJUEVNX1g1MDlfSU5GT19yZWFkOworKwkJUEVNX1g1MDlfSU5GT19yZWFkX2JpbzsKKysJCVBFTV9YNTA5X0lORk9fd3JpdGVfYmlvOworKwkJUEVNX2Rla19pbmZvOworKwkJUEVNX2RvX2hlYWRlcjsKKysJCVBFTV9nZXRfRVZQX0NJUEhFUl9JTkZPOworKwkJUEVNX3Byb2NfdHlwZTsKKysJCVBFTV9yZWFkOworKwkJUEVNX3JlYWRfREhwYXJhbXM7CisrCQlQRU1fcmVhZF9EU0FQcml2YXRlS2V5OworKwkJUEVNX3JlYWRfRFNBcGFyYW1zOworKwkJUEVNX3JlYWRfUEtDUzc7CisrCQlQRU1fcmVhZF9Qcml2YXRlS2V5OworKwkJUEVNX3JlYWRfUlNBUHJpdmF0ZUtleTsKKysJCVBFTV9yZWFkX1g1MDk7CisrCQlQRU1fcmVhZF9YNTA5X0NSTDsKKysJCVBFTV9yZWFkX1g1MDlfUkVROworKwkJUEVNX3JlYWRfYmlvOworKwkJUEVNX3JlYWRfYmlvX0RIcGFyYW1zOworKwkJUEVNX3JlYWRfYmlvX0RTQVByaXZhdGVLZXk7CisrCQlQRU1fcmVhZF9iaW9fRFNBcGFyYW1zOworKwkJUEVNX3JlYWRfYmlvX1BLQ1M3OworKwkJUEVNX3JlYWRfYmlvX1ByaXZhdGVLZXk7CisrCQlQRU1fcmVhZF9iaW9fUlNBUHJpdmF0ZUtleTsKKysJCVBFTV9yZWFkX2Jpb19YNTA5OworKwkJUEVNX3JlYWRfYmlvX1g1MDlfQ1JMOworKwkJUEVNX3JlYWRfYmlvX1g1MDlfUkVROworKwkJUEVNX3dyaXRlOworKwkJUEVNX3dyaXRlX0RIcGFyYW1zOworKwkJUEVNX3dyaXRlX0RTQVByaXZhdGVLZXk7CisrCQlQRU1fd3JpdGVfRFNBcGFyYW1zOworKwkJUEVNX3dyaXRlX1BLQ1M3OworKwkJUEVNX3dyaXRlX1ByaXZhdGVLZXk7CisrCQlQRU1fd3JpdGVfUlNBUHJpdmF0ZUtleTsKKysJCVBFTV93cml0ZV9YNTA5OworKwkJUEVNX3dyaXRlX1g1MDlfQ1JMOworKwkJUEVNX3dyaXRlX1g1MDlfUkVROworKwkJUEVNX3dyaXRlX2JpbzsKKysJCVBFTV93cml0ZV9iaW9fREhwYXJhbXM7CisrCQlQRU1fd3JpdGVfYmlvX0RTQVByaXZhdGVLZXk7CisrCQlQRU1fd3JpdGVfYmlvX0RTQXBhcmFtczsKKysJCVBFTV93cml0ZV9iaW9fUEtDUzc7CisrCQlQRU1fd3JpdGVfYmlvX1ByaXZhdGVLZXk7CisrCQlQRU1fd3JpdGVfYmlvX1JTQVByaXZhdGVLZXk7CisrCQlQRU1fd3JpdGVfYmlvX1g1MDk7CisrCQlQRU1fd3JpdGVfYmlvX1g1MDlfQ1JMOworKwkJUEVNX3dyaXRlX2Jpb19YNTA5X1JFUTsKKysJCVBLQ1M3X0RJR0VTVF9mcmVlOworKwkJUEtDUzdfRElHRVNUX25ldzsKKysJCVBLQ1M3X0VOQ1JZUFRfZnJlZTsKKysJCVBLQ1M3X0VOQ1JZUFRfbmV3OworKwkJUEtDUzdfRU5DX0NPTlRFTlRfZnJlZTsKKysJCVBLQ1M3X0VOQ19DT05URU5UX25ldzsKKysJCVBLQ1M3X0VOVkVMT1BFX2ZyZWU7CisrCQlQS0NTN19FTlZFTE9QRV9uZXc7CisrCQlQS0NTN19JU1NVRVJfQU5EX1NFUklBTF9kaWdlc3Q7CisrCQlQS0NTN19JU1NVRVJfQU5EX1NFUklBTF9mcmVlOworKwkJUEtDUzdfSVNTVUVSX0FORF9TRVJJQUxfbmV3OworKwkJUEtDUzdfUkVDSVBfSU5GT19mcmVlOworKwkJUEtDUzdfUkVDSVBfSU5GT19uZXc7CisrCQlQS0NTN19TSUdORURfZnJlZTsKKysJCVBLQ1M3X1NJR05FRF9uZXc7CisrCQlQS0NTN19TSUdORVJfSU5GT19mcmVlOworKwkJUEtDUzdfU0lHTkVSX0lORk9fbmV3OworKwkJUEtDUzdfU0lHTl9FTlZFTE9QRV9mcmVlOworKwkJUEtDUzdfU0lHTl9FTlZFTE9QRV9uZXc7CisrCQlQS0NTN19kdXA7CisrCQlQS0NTN19mcmVlOworKwkJUEtDUzdfbmV3OworKwkJUFJPWFlfRU5UUllfYWRkX25vcHJveHk7CisrCQlQUk9YWV9FTlRSWV9jbGVhcl9ub3Byb3h5OworKwkJUFJPWFlfRU5UUllfZnJlZTsKKysJCVBST1hZX0VOVFJZX2dldF9ub3Byb3h5OworKwkJUFJPWFlfRU5UUllfbmV3OworKwkJUFJPWFlfRU5UUllfc2V0X3NlcnZlcjsKKysJCVBST1hZX2FkZF9ub3Byb3h5OworKwkJUFJPWFlfYWRkX3NlcnZlcjsKKysJCVBST1hZX2NoZWNrX2J5X2hvc3Q7CisrCQlQUk9YWV9jaGVja191cmw7CisrCQlQUk9YWV9jbGVhcl9ub3Byb3h5OworKwkJUFJPWFlfZnJlZTsKKysJCVBST1hZX2dldF9ub3Byb3h5OworKwkJUFJPWFlfZ2V0X3Byb3hpZXM7CisrCQlQUk9YWV9nZXRfcHJveHlfZW50cnk7CisrCQlQUk9YWV9sb2FkX2NvbmY7CisrCQlQUk9YWV9uZXc7CisrCQlQUk9YWV9wcmludDsKKysJCVJBTkRfYnl0ZXM7CisrCQlSQU5EX2NsZWFudXA7CisrCQlSQU5EX2ZpbGVfbmFtZTsKKysJCVJBTkRfbG9hZF9maWxlOworKwkJUkFORF9zY3JlZW47CisrCQlSQU5EX3NlZWQ7CisrCQlSQU5EX3dyaXRlX2ZpbGU7CisrCQlSQzJfY2JjX2VuY3J5cHQ7CisrCQlSQzJfY2ZiNjRfZW5jcnlwdDsKKysJCVJDMl9lY2JfZW5jcnlwdDsKKysJCVJDMl9lbmNyeXB0OworKwkJUkMyX29mYjY0X2VuY3J5cHQ7CisrCQlSQzJfc2V0X2tleTsKKysJCVJDNDsKKysJCVJDNF9vcHRpb25zOworKwkJUkM0X3NldF9rZXk7CisrCQlSU0FQcml2YXRlS2V5X2FzbjFfbWV0aDsKKysJCVJTQVByaXZhdGVLZXlfZHVwOworKwkJUlNBUHVibGljS2V5X2R1cDsKKysJCVJTQV9QS0NTMV9TU0xlYXk7CisrCQlSU0FfZnJlZTsKKysJCVJTQV9nZW5lcmF0ZV9rZXk7CisrCQlSU0FfbmV3OworKwkJUlNBX25ld19tZXRob2Q7CisrCQlSU0FfcHJpbnQ7CisrCQlSU0FfcHJpbnRfZnA7CisrCQlSU0FfcHJpdmF0ZV9kZWNyeXB0OworKwkJUlNBX3ByaXZhdGVfZW5jcnlwdDsKKysJCVJTQV9wdWJsaWNfZGVjcnlwdDsKKysJCVJTQV9wdWJsaWNfZW5jcnlwdDsKKysJCVJTQV9zZXRfZGVmYXVsdF9tZXRob2Q7CisrCQlSU0Ffc2lnbjsKKysJCVJTQV9zaWduX0FTTjFfT0NURVRfU1RSSU5HOworKwkJUlNBX3NpemU7CisrCQlSU0FfdmVyaWZ5OworKwkJUlNBX3ZlcmlmeV9BU04xX09DVEVUX1NUUklORzsKKysJCVNIQTsKKysJCVNIQTE7CisrCQlTSEExX0ZpbmFsOworKwkJU0hBMV9Jbml0OworKwkJU0hBMV9VcGRhdGU7CisrCQlTSEFfRmluYWw7CisrCQlTSEFfSW5pdDsKKysJCVNIQV9VcGRhdGU7CisrCQlPcGVuU1NMX2FkZF9hbGxfYWxnb3JpdGhtczsKKysJCU9wZW5TU0xfYWRkX2FsbF9jaXBoZXJzOworKwkJT3BlblNTTF9hZGRfYWxsX2RpZ2VzdHM7CisrCQlUWFRfREJfY3JlYXRlX2luZGV4OworKwkJVFhUX0RCX2ZyZWU7CisrCQlUWFRfREJfZ2V0X2J5X2luZGV4OworKwkJVFhUX0RCX2luc2VydDsKKysJCVRYVF9EQl9yZWFkOworKwkJVFhUX0RCX3dyaXRlOworKwkJWDUwOV9BTEdPUl9mcmVlOworKwkJWDUwOV9BTEdPUl9uZXc7CisrCQlYNTA5X0FUVFJJQlVURV9mcmVlOworKwkJWDUwOV9BVFRSSUJVVEVfbmV3OworKwkJWDUwOV9DSU5GX2ZyZWU7CisrCQlYNTA5X0NJTkZfbmV3OworKwkJWDUwOV9DUkxfSU5GT19mcmVlOworKwkJWDUwOV9DUkxfSU5GT19uZXc7CisrCQlYNTA5X0NSTF9hZGRfZXh0OworKwkJWDUwOV9DUkxfY21wOworKwkJWDUwOV9DUkxfZGVsZXRlX2V4dDsKKysJCVg1MDlfQ1JMX2R1cDsKKysJCVg1MDlfQ1JMX2ZyZWU7CisrCQlYNTA5X0NSTF9nZXRfZXh0OworKwkJWDUwOV9DUkxfZ2V0X2V4dF9ieV9OSUQ7CisrCQlYNTA5X0NSTF9nZXRfZXh0X2J5X09CSjsKKysJCVg1MDlfQ1JMX2dldF9leHRfYnlfY3JpdGljYWw7CisrCQlYNTA5X0NSTF9nZXRfZXh0X2NvdW50OworKwkJWDUwOV9DUkxfbmV3OworKwkJWDUwOV9DUkxfc2lnbjsKKysJCVg1MDlfQ1JMX3ZlcmlmeTsKKysJCVg1MDlfRVhURU5TSU9OX2NyZWF0ZV9ieV9OSUQ7CisrCQlYNTA5X0VYVEVOU0lPTl9jcmVhdGVfYnlfT0JKOworKwkJWDUwOV9FWFRFTlNJT05fZHVwOworKwkJWDUwOV9FWFRFTlNJT05fZnJlZTsKKysJCVg1MDlfRVhURU5TSU9OX2dldF9jcml0aWNhbDsKKysJCVg1MDlfRVhURU5TSU9OX2dldF9kYXRhOworKwkJWDUwOV9FWFRFTlNJT05fZ2V0X29iamVjdDsKKysJCVg1MDlfRVhURU5TSU9OX25ldzsKKysJCVg1MDlfRVhURU5TSU9OX3NldF9jcml0aWNhbDsKKysJCVg1MDlfRVhURU5TSU9OX3NldF9kYXRhOworKwkJWDUwOV9FWFRFTlNJT05fc2V0X29iamVjdDsKKysJCVg1MDlfSU5GT19mcmVlOworKwkJWDUwOV9JTkZPX25ldzsKKysJCVg1MDlfTE9PS1VQX2J5X2FsaWFzOworKwkJWDUwOV9MT09LVVBfYnlfZmluZ2VycHJpbnQ7CisrCQlYNTA5X0xPT0tVUF9ieV9pc3N1ZXJfc2VyaWFsOworKwkJWDUwOV9MT09LVVBfYnlfc3ViamVjdDsKKysJCVg1MDlfTE9PS1VQX2N0cmw7CisrCQlYNTA5X0xPT0tVUF9maWxlOworKwkJWDUwOV9MT09LVVBfZnJlZTsKKysJCVg1MDlfTE9PS1VQX2hhc2hfZGlyOworKwkJWDUwOV9MT09LVVBfaW5pdDsKKysJCVg1MDlfTE9PS1VQX25ldzsKKysJCVg1MDlfTE9PS1VQX3NodXRkb3duOworKwkJWDUwOV9OQU1FX0VOVFJZX2NyZWF0ZV9ieV9OSUQ7CisrCQlYNTA5X05BTUVfRU5UUllfY3JlYXRlX2J5X09CSjsKKysJCVg1MDlfTkFNRV9FTlRSWV9kdXA7CisrCQlYNTA5X05BTUVfRU5UUllfZnJlZTsKKysJCVg1MDlfTkFNRV9FTlRSWV9nZXRfZGF0YTsKKysJCVg1MDlfTkFNRV9FTlRSWV9nZXRfb2JqZWN0OworKwkJWDUwOV9OQU1FX0VOVFJZX25ldzsKKysJCVg1MDlfTkFNRV9FTlRSWV9zZXRfZGF0YTsKKysJCVg1MDlfTkFNRV9FTlRSWV9zZXRfb2JqZWN0OworKwkJWDUwOV9OQU1FX2FkZF9lbnRyeTsKKysJCVg1MDlfTkFNRV9jbXA7CisrCQlYNTA5X05BTUVfZGVsZXRlX2VudHJ5OworKwkJWDUwOV9OQU1FX2RpZ2VzdDsKKysJCVg1MDlfTkFNRV9kdXA7CisrCQlYNTA5X05BTUVfZW50cnlfY291bnQ7CisrCQlYNTA5X05BTUVfZnJlZTsKKysJCVg1MDlfTkFNRV9nZXRfZW50cnk7CisrCQlYNTA5X05BTUVfZ2V0X2luZGV4X2J5X05JRDsKKysJCVg1MDlfTkFNRV9nZXRfaW5kZXhfYnlfT0JKOworKwkJWDUwOV9OQU1FX2dldF90ZXh0X2J5X05JRDsKKysJCVg1MDlfTkFNRV9nZXRfdGV4dF9ieV9PQko7CisrCQlYNTA5X05BTUVfaGFzaDsKKysJCVg1MDlfTkFNRV9uZXc7CisrCQlYNTA5X05BTUVfb25lbGluZTsKKysJCVg1MDlfTkFNRV9wcmludDsKKysJCVg1MDlfTkFNRV9zZXQ7CisrCQlYNTA5X09CSkVDVF9mcmVlX2NvbnRlbnRzOworKwkJWDUwOV9PQkpFQ1RfcmV0cmlldmVfYnlfc3ViamVjdDsKKysJCVg1MDlfT0JKRUNUX3VwX3JlZl9jb3VudDsKKysJCVg1MDlfUEtFWV9mcmVlOworKwkJWDUwOV9QS0VZX25ldzsKKysJCVg1MDlfUFVCS0VZX2ZyZWU7CisrCQlYNTA5X1BVQktFWV9nZXQ7CisrCQlYNTA5X1BVQktFWV9uZXc7CisrCQlYNTA5X1BVQktFWV9zZXQ7CisrCQlYNTA5X1JFUV9JTkZPX2ZyZWU7CisrCQlYNTA5X1JFUV9JTkZPX25ldzsKKysJCVg1MDlfUkVRX2R1cDsKKysJCVg1MDlfUkVRX2ZyZWU7CisrCQlYNTA5X1JFUV9nZXRfcHVia2V5OworKwkJWDUwOV9SRVFfbmV3OworKwkJWDUwOV9SRVFfcHJpbnQ7CisrCQlYNTA5X1JFUV9wcmludF9mcDsKKysJCVg1MDlfUkVRX3NldF9wdWJrZXk7CisrCQlYNTA5X1JFUV9zZXRfc3ViamVjdF9uYW1lOworKwkJWDUwOV9SRVFfc2V0X3ZlcnNpb247CisrCQlYNTA5X1JFUV9zaWduOworKwkJWDUwOV9SRVFfdG9fWDUwOTsKKysJCVg1MDlfUkVRX3ZlcmlmeTsKKysJCVg1MDlfUkVWT0tFRF9hZGRfZXh0OworKwkJWDUwOV9SRVZPS0VEX2RlbGV0ZV9leHQ7CisrCQlYNTA5X1JFVk9LRURfZnJlZTsKKysJCVg1MDlfUkVWT0tFRF9nZXRfZXh0OworKwkJWDUwOV9SRVZPS0VEX2dldF9leHRfYnlfTklEOworKwkJWDUwOV9SRVZPS0VEX2dldF9leHRfYnlfT0JKOworKwkJWDUwOV9SRVZPS0VEX2dldF9leHRfYnlfY3JpdGljYWw7CisrCQlYNTA5X1JFVk9LRURfZ2V0X2V4dF9ieV9jcml0aWM7CisrCQlYNTA5X1JFVk9LRURfZ2V0X2V4dF9jb3VudDsKKysJCVg1MDlfUkVWT0tFRF9uZXc7CisrCQlYNTA5X1NJR19mcmVlOworKwkJWDUwOV9TSUdfbmV3OworKwkJWDUwOV9TVE9SRV9DVFhfY2xlYW51cDsKKysJCVg1MDlfU1RPUkVfQ1RYX2luaXQ7CisrCQlYNTA5X1NUT1JFX2FkZF9jZXJ0OworKwkJWDUwOV9TVE9SRV9hZGRfbG9va3VwOworKwkJWDUwOV9TVE9SRV9mcmVlOworKwkJWDUwOV9TVE9SRV9nZXRfYnlfc3ViamVjdDsKKysJCVg1MDlfU1RPUkVfbG9hZF9sb2NhdGlvbnM7CisrCQlYNTA5X1NUT1JFX25ldzsKKysJCVg1MDlfU1RPUkVfc2V0X2RlZmF1bHRfcGF0aHM7CisrCQlYNTA5X1ZBTF9mcmVlOworKwkJWDUwOV9WQUxfbmV3OworKwkJWDUwOV9hZGRfZXh0OworKwkJWDUwOV9hc24xX21ldGg7CisrCQlYNTA5X2NlcnRpZmljYXRlX3R5cGU7CisrCQlYNTA5X2NoZWNrX3ByaXZhdGVfa2V5OworKwkJWDUwOV9jbXBfY3VycmVudF90aW1lOworKwkJWDUwOV9kZWxldGVfZXh0OworKwkJWDUwOV9kaWdlc3Q7CisrCQlYNTA5X2R1cDsKKysJCVg1MDlfZnJlZTsKKysJCVg1MDlfZ2V0X2RlZmF1bHRfY2VydF9hcmVhOworKwkJWDUwOV9nZXRfZGVmYXVsdF9jZXJ0X2RpcjsKKysJCVg1MDlfZ2V0X2RlZmF1bHRfY2VydF9kaXJfZW52OworKwkJWDUwOV9nZXRfZGVmYXVsdF9jZXJ0X2ZpbGU7CisrCQlYNTA5X2dldF9kZWZhdWx0X2NlcnRfZmlsZV9lbnY7CisrCQlYNTA5X2dldF9kZWZhdWx0X3ByaXZhdGVfZGlyOworKwkJWDUwOV9nZXRfZXh0OworKwkJWDUwOV9nZXRfZXh0X2J5X05JRDsKKysJCVg1MDlfZ2V0X2V4dF9ieV9PQko7CisrCQlYNTA5X2dldF9leHRfYnlfY3JpdGljYWw7CisrCQlYNTA5X2dldF9leHRfY291bnQ7CisrCQlYNTA5X2dldF9pc3N1ZXJfbmFtZTsKKysJCVg1MDlfZ2V0X3B1YmtleTsKKysJCVg1MDlfZ2V0X3B1YmtleV9wYXJhbWV0ZXJzOworKwkJWDUwOV9nZXRfc2VyaWFsTnVtYmVyOworKwkJWDUwOV9nZXRfc3ViamVjdF9uYW1lOworKwkJWDUwOV9nbXRpbWVfYWRqOworKwkJWDUwOV9pc3N1ZXJfYW5kX3NlcmlhbF9jbXA7CisrCQlYNTA5X2lzc3Vlcl9hbmRfc2VyaWFsX2hhc2g7CisrCQlYNTA5X2lzc3Vlcl9uYW1lX2NtcDsKKysJCVg1MDlfaXNzdWVyX25hbWVfaGFzaDsKKysJCVg1MDlfbG9hZF9jZXJ0X2ZpbGU7CisrCQlYNTA5X25ldzsKKysJCVg1MDlfcHJpbnQ7CisrCQlYNTA5X3ByaW50X2ZwOworKwkJWDUwOV9zZXRfaXNzdWVyX25hbWU7CisrCQlYNTA5X3NldF9ub3RBZnRlcjsKKysJCVg1MDlfc2V0X25vdEJlZm9yZTsKKysJCVg1MDlfc2V0X3B1YmtleTsKKysJCVg1MDlfc2V0X3NlcmlhbE51bWJlcjsKKysJCVg1MDlfc2V0X3N1YmplY3RfbmFtZTsKKysJCVg1MDlfc2V0X3ZlcnNpb247CisrCQlYNTA5X3NpZ247CisrCQlYNTA5X3N1YmplY3RfbmFtZV9jbXA7CisrCQlYNTA5X3N1YmplY3RfbmFtZV9oYXNoOworKwkJWDUwOV90b19YNTA5X1JFUTsKKysJCVg1MDlfdmVyaWZ5OworKwkJWDUwOV92ZXJpZnlfY2VydDsKKysJCVg1MDlfdmVyaWZ5X2NlcnRfZXJyb3Jfc3RyaW5nOworKwkJWDUwOXYzX2FkZF9leHQ7CisrCQlYNTA5djNfYWRkX2V4dGVuc2lvbjsKKysJCVg1MDl2M19hZGRfbmV0c2NhcGVfZXh0ZW5zaW9uczsKKysJCVg1MDl2M19hZGRfc3RhbmRhcmRfZXh0ZW5zaW9uczsKKysJCVg1MDl2M19jbGVhbnVwX2V4dGVuc2lvbnM7CisrCQlYNTA5djNfZGF0YV90eXBlX2J5X05JRDsKKysJCVg1MDl2M19kYXRhX3R5cGVfYnlfT0JKOworKwkJWDUwOXYzX2RlbGV0ZV9leHQ7CisrCQlYNTA5djNfZ2V0X2V4dDsKKysJCVg1MDl2M19nZXRfZXh0X2J5X05JRDsKKysJCVg1MDl2M19nZXRfZXh0X2J5X09CSjsKKysJCVg1MDl2M19nZXRfZXh0X2J5X2NyaXRpY2FsOworKwkJWDUwOXYzX2dldF9leHRfY291bnQ7CisrCQlYNTA5djNfcGFja19zdHJpbmc7CisrCQlYNTA5djNfcGFja190eXBlX2J5X05JRDsKKysJCVg1MDl2M19wYWNrX3R5cGVfYnlfT0JKOworKwkJWDUwOXYzX3VucGFja19zdHJpbmc7CisrCQlfZGVzX2NyeXB0OworKwkJYTJkX0FTTjFfT0JKRUNUOworKwkJYTJpX0FTTjFfSU5URUdFUjsKKysJCWEyaV9BU04xX1NUUklORzsKKysJCWFzbjFfRmluaXNoOworKwkJYXNuMV9HZXRTZXF1ZW5jZTsKKysJCWJuX2Rpdl93b3JkczsKKysJCWJuX2V4cGFuZDI7CisrCQlibl9tdWxfYWRkX3dvcmRzOworKwkJYm5fbXVsX3dvcmRzOworKwkJQk5fdWFkZDsKKysJCUJOX3VzdWI7CisrCQlibl9zcXJfd29yZHM7CisrCQlfb3NzbF9vbGRfY3J5cHQ7CisrCQlkMmlfQVNOMV9CSVRfU1RSSU5HOworKwkJZDJpX0FTTjFfQk9PTEVBTjsKKysJCWQyaV9BU04xX0hFQURFUjsKKysJCWQyaV9BU04xX0lBNVNUUklORzsKKysJCWQyaV9BU04xX0lOVEVHRVI7CisrCQlkMmlfQVNOMV9PQkpFQ1Q7CisrCQlkMmlfQVNOMV9PQ1RFVF9TVFJJTkc7CisrCQlkMmlfQVNOMV9QUklOVEFCTEU7CisrCQlkMmlfQVNOMV9QUklOVEFCTEVTVFJJTkc7CisrCQlkMmlfQVNOMV9TRVQ7CisrCQlkMmlfQVNOMV9UNjFTVFJJTkc7CisrCQlkMmlfQVNOMV9UWVBFOworKwkJZDJpX0FTTjFfVVRDVElNRTsKKysJCWQyaV9BU04xX2J5dGVzOworKwkJZDJpX0FTTjFfdHlwZV9ieXRlczsKKysJCWQyaV9ESHBhcmFtczsKKysJCWQyaV9EU0FQcml2YXRlS2V5OworKwkJZDJpX0RTQVByaXZhdGVLZXlfYmlvOworKwkJZDJpX0RTQVByaXZhdGVLZXlfZnA7CisrCQlkMmlfRFNBUHVibGljS2V5OworKwkJZDJpX0RTQXBhcmFtczsKKysJCWQyaV9ORVRTQ0FQRV9TUEtBQzsKKysJCWQyaV9ORVRTQ0FQRV9TUEtJOworKwkJZDJpX05ldHNjYXBlX1JTQTsKKysJCWQyaV9QS0NTNzsKKysJCWQyaV9QS0NTN19ESUdFU1Q7CisrCQlkMmlfUEtDUzdfRU5DUllQVDsKKysJCWQyaV9QS0NTN19FTkNfQ09OVEVOVDsKKysJCWQyaV9QS0NTN19FTlZFTE9QRTsKKysJCWQyaV9QS0NTN19JU1NVRVJfQU5EX1NFUklBTDsKKysJCWQyaV9QS0NTN19SRUNJUF9JTkZPOworKwkJZDJpX1BLQ1M3X1NJR05FRDsKKysJCWQyaV9QS0NTN19TSUdORVJfSU5GTzsKKysJCWQyaV9QS0NTN19TSUdOX0VOVkVMT1BFOworKwkJZDJpX1BLQ1M3X2JpbzsKKysJCWQyaV9QS0NTN19mcDsKKysJCWQyaV9Qcml2YXRlS2V5OworKwkJZDJpX1B1YmxpY0tleTsKKysJCWQyaV9SU0FQcml2YXRlS2V5OworKwkJZDJpX1JTQVByaXZhdGVLZXlfYmlvOworKwkJZDJpX1JTQVByaXZhdGVLZXlfZnA7CisrCQlkMmlfUlNBUHVibGljS2V5OworKwkJZDJpX1g1MDk7CisrCQlkMmlfWDUwOV9BTEdPUjsKKysJCWQyaV9YNTA5X0FUVFJJQlVURTsKKysJCWQyaV9YNTA5X0NJTkY7CisrCQlkMmlfWDUwOV9DUkw7CisrCQlkMmlfWDUwOV9DUkxfSU5GTzsKKysJCWQyaV9YNTA5X0NSTF9iaW87CisrCQlkMmlfWDUwOV9DUkxfZnA7CisrCQlkMmlfWDUwOV9FWFRFTlNJT047CisrCQlkMmlfWDUwOV9OQU1FOworKwkJZDJpX1g1MDlfTkFNRV9FTlRSWTsKKysJCWQyaV9YNTA5X1BLRVk7CisrCQlkMmlfWDUwOV9QVUJLRVk7CisrCQlkMmlfWDUwOV9SRVE7CisrCQlkMmlfWDUwOV9SRVFfSU5GTzsKKysJCWQyaV9YNTA5X1JFUV9iaW87CisrCQlkMmlfWDUwOV9SRVFfZnA7CisrCQlkMmlfWDUwOV9SRVZPS0VEOworKwkJZDJpX1g1MDlfU0lHOworKwkJZDJpX1g1MDlfVkFMOworKwkJZDJpX1g1MDlfYmlvOworKwkJZDJpX1g1MDlfZnA7CisrCQlERVNfY2JjX2Nrc3VtOworKwkJREVTX2NiY19lbmNyeXB0OworKwkJREVTX2NibG9ja19wcmludF9maWxlOworKwkJREVTX2NmYjY0X2VuY3J5cHQ7CisrCQlERVNfY2ZiX2VuY3J5cHQ7CisrCQlERVNfZGVjcnlwdDM7CisrCQlERVNfZWNiM19lbmNyeXB0OworKwkJREVTX2VjYl9lbmNyeXB0OworKwkJREVTX2VkZTNfY2JjX2VuY3J5cHQ7CisrCQlERVNfZWRlM19jZmI2NF9lbmNyeXB0OworKwkJREVTX2VkZTNfb2ZiNjRfZW5jcnlwdDsKKysJCURFU19lbmNfcmVhZDsKKysJCURFU19lbmNfd3JpdGU7CisrCQlERVNfZW5jcnlwdDE7CisrCQlERVNfZW5jcnlwdDI7CisrCQlERVNfZW5jcnlwdDM7CisrCQlERVNfZmNyeXB0OworKwkJREVTX2lzX3dlYWtfa2V5OworKwkJREVTX2tleV9zY2hlZDsKKysJCURFU19uY2JjX2VuY3J5cHQ7CisrCQlERVNfb2ZiNjRfZW5jcnlwdDsKKysJCURFU19vZmJfZW5jcnlwdDsKKysJCURFU19vcHRpb25zOworKwkJREVTX3BjYmNfZW5jcnlwdDsKKysJCURFU19xdWFkX2Nrc3VtOworKwkJREVTX3JhbmRvbV9rZXk7CisrCQlfb3NzbF9vbGRfZGVzX3JhbmRvbV9zZWVkOworKwkJX29zc2xfb2xkX2Rlc19yZWFkXzJwYXNzd29yZHM7CisrCQlfb3NzbF9vbGRfZGVzX3JlYWRfcGFzc3dvcmQ7CisrCQlfb3NzbF9vbGRfZGVzX3JlYWRfcHc7CisrCQlfb3NzbF9vbGRfZGVzX3JlYWRfcHdfc3RyaW5nOworKwkJREVTX3NldF9rZXk7CisrCQlERVNfc2V0X29kZF9wYXJpdHk7CisrCQlERVNfc3RyaW5nX3RvXzJrZXlzOworKwkJREVTX3N0cmluZ190b19rZXk7CisrCQlERVNfeGNiY19lbmNyeXB0OworKwkJREVTX3h3aGl0ZV9pbjJvdXQ7CisrCQlmY3J5cHRfYm9keTsKKysJCWkyYV9BU04xX0lOVEVHRVI7CisrCQlpMmFfQVNOMV9PQkpFQ1Q7CisrCQlpMmFfQVNOMV9TVFJJTkc7CisrCQlpMmRfQVNOMV9CSVRfU1RSSU5HOworKwkJaTJkX0FTTjFfQk9PTEVBTjsKKysJCWkyZF9BU04xX0hFQURFUjsKKysJCWkyZF9BU04xX0lBNVNUUklORzsKKysJCWkyZF9BU04xX0lOVEVHRVI7CisrCQlpMmRfQVNOMV9PQkpFQ1Q7CisrCQlpMmRfQVNOMV9PQ1RFVF9TVFJJTkc7CisrCQlpMmRfQVNOMV9QUklOVEFCTEU7CisrCQlpMmRfQVNOMV9TRVQ7CisrCQlpMmRfQVNOMV9UWVBFOworKwkJaTJkX0FTTjFfVVRDVElNRTsKKysJCWkyZF9BU04xX2J5dGVzOworKwkJaTJkX0RIcGFyYW1zOworKwkJaTJkX0RTQVByaXZhdGVLZXk7CisrCQlpMmRfRFNBUHJpdmF0ZUtleV9iaW87CisrCQlpMmRfRFNBUHJpdmF0ZUtleV9mcDsKKysJCWkyZF9EU0FQdWJsaWNLZXk7CisrCQlpMmRfRFNBcGFyYW1zOworKwkJaTJkX05FVFNDQVBFX1NQS0FDOworKwkJaTJkX05FVFNDQVBFX1NQS0k7CisrCQlpMmRfTmV0c2NhcGVfUlNBOworKwkJaTJkX1BLQ1M3OworKwkJaTJkX1BLQ1M3X0RJR0VTVDsKKysJCWkyZF9QS0NTN19FTkNSWVBUOworKwkJaTJkX1BLQ1M3X0VOQ19DT05URU5UOworKwkJaTJkX1BLQ1M3X0VOVkVMT1BFOworKwkJaTJkX1BLQ1M3X0lTU1VFUl9BTkRfU0VSSUFMOworKwkJaTJkX1BLQ1M3X1JFQ0lQX0lORk87CisrCQlpMmRfUEtDUzdfU0lHTkVEOworKwkJaTJkX1BLQ1M3X1NJR05FUl9JTkZPOworKwkJaTJkX1BLQ1M3X1NJR05fRU5WRUxPUEU7CisrCQlpMmRfUEtDUzdfYmlvOworKwkJaTJkX1BLQ1M3X2ZwOworKwkJaTJkX1ByaXZhdGVLZXk7CisrCQlpMmRfUHVibGljS2V5OworKwkJaTJkX1JTQVByaXZhdGVLZXk7CisrCQlpMmRfUlNBUHJpdmF0ZUtleV9iaW87CisrCQlpMmRfUlNBUHJpdmF0ZUtleV9mcDsKKysJCWkyZF9SU0FQdWJsaWNLZXk7CisrCQlpMmRfWDUwOTsKKysJCWkyZF9YNTA5X0FMR09SOworKwkJaTJkX1g1MDlfQVRUUklCVVRFOworKwkJaTJkX1g1MDlfQ0lORjsKKysJCWkyZF9YNTA5X0NSTDsKKysJCWkyZF9YNTA5X0NSTF9JTkZPOworKwkJaTJkX1g1MDlfQ1JMX2JpbzsKKysJCWkyZF9YNTA5X0NSTF9mcDsKKysJCWkyZF9YNTA5X0VYVEVOU0lPTjsKKysJCWkyZF9YNTA5X05BTUU7CisrCQlpMmRfWDUwOV9OQU1FX0VOVFJZOworKwkJaTJkX1g1MDlfUEtFWTsKKysJCWkyZF9YNTA5X1BVQktFWTsKKysJCWkyZF9YNTA5X1JFUTsKKysJCWkyZF9YNTA5X1JFUV9JTkZPOworKwkJaTJkX1g1MDlfUkVRX2JpbzsKKysJCWkyZF9YNTA5X1JFUV9mcDsKKysJCWkyZF9YNTA5X1JFVk9LRUQ7CisrCQlpMmRfWDUwOV9TSUc7CisrCQlpMmRfWDUwOV9WQUw7CisrCQlpMmRfWDUwOV9iaW87CisrCQlpMmRfWDUwOV9mcDsKKysJCWlkZWFfY2JjX2VuY3J5cHQ7CisrCQlpZGVhX2NmYjY0X2VuY3J5cHQ7CisrCQlpZGVhX2VjYl9lbmNyeXB0OworKwkJaWRlYV9lbmNyeXB0OworKwkJaWRlYV9vZmI2NF9lbmNyeXB0OworKwkJaWRlYV9vcHRpb25zOworKwkJaWRlYV9zZXRfZGVjcnlwdF9rZXk7CisrCQlpZGVhX3NldF9lbmNyeXB0X2tleTsKKysJCWxoX2RlbGV0ZTsKKysJCWxoX2RvYWxsOworKwkJbGhfZG9hbGxfYXJnOworKwkJbGhfZnJlZTsKKysJCWxoX2luc2VydDsKKysJCWxoX25ldzsKKysJCWxoX25vZGVfc3RhdHM7CisrCQlsaF9ub2RlX3N0YXRzX2JpbzsKKysJCWxoX25vZGVfdXNhZ2Vfc3RhdHM7CisrCQlsaF9ub2RlX3VzYWdlX3N0YXRzX2JpbzsKKysJCWxoX3JldHJpZXZlOworKwkJbGhfc3RhdHM7CisrCQlsaF9zdGF0c19iaW87CisrCQlsaF9zdHJoYXNoOworKwkJc2tfZGVsZXRlOworKwkJc2tfZGVsZXRlX3B0cjsKKysJCXNrX2R1cDsKKysJCXNrX2ZpbmQ7CisrCQlza19mcmVlOworKwkJc2tfaW5zZXJ0OworKwkJc2tfbmV3OworKwkJc2tfcG9wOworKwkJc2tfcG9wX2ZyZWU7CisrCQlza19wdXNoOworKwkJc2tfc2V0X2NtcF9mdW5jOworKwkJc2tfc2hpZnQ7CisrCQlza191bnNoaWZ0OworKwkJc2tfemVybzsKKysJCUJJT19mX25iaW9fdGVzdDsKKysJCUFTTjFfVFlQRV9nZXQ7CisrCQlBU04xX1RZUEVfc2V0OworKwkJUEtDUzdfY29udGVudF9mcmVlOworKwkJRVJSX2xvYWRfUEtDUzdfc3RyaW5nczsKKysJCVg1MDlfZmluZF9ieV9pc3N1ZXJfYW5kX3NlcmlhbDsKKysJCVg1MDlfZmluZF9ieV9zdWJqZWN0OworKwkJUEtDUzdfY3RybDsKKysJCVBLQ1M3X3NldF90eXBlOworKwkJUEtDUzdfc2V0X2NvbnRlbnQ7CisrCQlQS0NTN19TSUdORVJfSU5GT19zZXQ7CisrCQlQS0NTN19hZGRfc2lnbmVyOworKwkJUEtDUzdfYWRkX2NlcnRpZmljYXRlOworKwkJUEtDUzdfYWRkX2NybDsKKysJCVBLQ1M3X2NvbnRlbnRfbmV3OworKwkJUEtDUzdfZGF0YVNpZ247CisrCQlQS0NTN19kYXRhVmVyaWZ5OworKwkJUEtDUzdfZGF0YUluaXQ7CisrCQlQS0NTN19hZGRfc2lnbmF0dXJlOworKwkJUEtDUzdfY2VydF9mcm9tX3NpZ25lcl9pbmZvOworKwkJUEtDUzdfZ2V0X3NpZ25lcl9pbmZvOworKwkJRVZQX2RlbGV0ZV9hbGlhczsKKysJCUVWUF9tZGMyOworKwkJUEVNX3JlYWRfYmlvX1JTQVB1YmxpY0tleTsKKysJCVBFTV93cml0ZV9iaW9fUlNBUHVibGljS2V5OworKwkJZDJpX1JTQVB1YmxpY0tleV9iaW87CisrCQlpMmRfUlNBUHVibGljS2V5X2JpbzsKKysJCVBFTV9yZWFkX1JTQVB1YmxpY0tleTsKKysJCVBFTV93cml0ZV9SU0FQdWJsaWNLZXk7CisrCQlkMmlfUlNBUHVibGljS2V5X2ZwOworKwkJaTJkX1JTQVB1YmxpY0tleV9mcDsKKysJCUJJT19jb3B5X25leHRfcmV0cnk7CisrCQlSU0FfZmxhZ3M7CisrCQlYNTA5X1NUT1JFX2FkZF9jcmw7CisrCQlYNTA5X2xvYWRfY3JsX2ZpbGU7CisrCQlFVlBfcmMyXzQwX2NiYzsKKysJCUVWUF9yYzRfNDA7CisrCQlFVlBfQ0lQSEVSX0NUWF9pbml0OworKwkJSE1BQzsKKysJCUhNQUNfSW5pdDsKKysJCUhNQUNfVXBkYXRlOworKwkJSE1BQ19GaW5hbDsKKysJCUVSUl9nZXRfbmV4dF9lcnJvcl9saWJyYXJ5OworKwkJRVZQX1BLRVlfY21wX3BhcmFtZXRlcnM7CisrCQlITUFDX2NsZWFudXA7CisrCQlCSU9fcHRyX2N0cmw7CisrCQlCSU9fbmV3X2ZpbGVfaW50ZXJuYWw7CisrCQlCSU9fbmV3X2ZwX2ludGVybmFsOworKwkJQklPX3NfZmlsZV9pbnRlcm5hbDsKKysJCUJOX0JMSU5ESU5HX2NvbnZlcnQ7CisrCQlCTl9CTElORElOR19pbnZlcnQ7CisrCQlCTl9CTElORElOR191cGRhdGU7CisrCQlSU0FfYmxpbmRpbmdfb247CisrCQlSU0FfYmxpbmRpbmdfb2ZmOworKwkJaTJ0X0FTTjFfT0JKRUNUOworKwkJQk5fQkxJTkRJTkdfbmV3OworKwkJQk5fQkxJTkRJTkdfZnJlZTsKKysJCUVWUF9jYXN0NV9jYmM7CisrCQlFVlBfY2FzdDVfY2ZiNjQ7CisrCQlFVlBfY2FzdDVfZWNiOworKwkJRVZQX2Nhc3Q1X29mYjsKKysJCUJGX2RlY3J5cHQ7CisrCQlDQVNUX3NldF9rZXk7CisrCQlDQVNUX2VuY3J5cHQ7CisrCQlDQVNUX2RlY3J5cHQ7CisrCQlDQVNUX2VjYl9lbmNyeXB0OworKwkJQ0FTVF9jYmNfZW5jcnlwdDsKKysJCUNBU1RfY2ZiNjRfZW5jcnlwdDsKKysJCUNBU1Rfb2ZiNjRfZW5jcnlwdDsKKysJCVJDMl9kZWNyeXB0OworKwkJT0JKX2NyZWF0ZV9vYmplY3RzOworKwkJQk5fZXhwOworKwkJQk5fbXVsX3dvcmQ7CisrCQlCTl9zdWJfd29yZDsKKysJCUJOX2RlYzJibjsKKysJCUJOX2JuMmRlYzsKKysJCUJJT19naGJuX2N0cmw7CisrCQlDUllQVE9fZnJlZV9leF9kYXRhOworKwkJQ1JZUFRPX2dldF9leF9kYXRhOworKwkJQ1JZUFRPX3NldF9leF9kYXRhOworKwkJRVJSX2xvYWRfQ1JZUFRPX3N0cmluZ3M7CisrCQlFUlJfbG9hZF9DUllQVE9saWJfc3RyaW5nczsKKysJCUVWUF9QS0VZX2JpdHM7CisrCQlNRDVfVHJhbnNmb3JtOworKwkJU0hBMV9UcmFuc2Zvcm07CisrCQlTSEFfVHJhbnNmb3JtOworKwkJWDUwOV9TVE9SRV9DVFhfZ2V0X2NoYWluOworKwkJWDUwOV9TVE9SRV9DVFhfZ2V0X2N1cnJlbnRfY2VydDsKKysJCVg1MDlfU1RPUkVfQ1RYX2dldF9lcnJvcjsKKysJCVg1MDlfU1RPUkVfQ1RYX2dldF9lcnJvcl9kZXB0aDsKKysJCVg1MDlfU1RPUkVfQ1RYX2dldF9leF9kYXRhOworKwkJWDUwOV9TVE9SRV9DVFhfc2V0X2NlcnQ7CisrCQlYNTA5X1NUT1JFX0NUWF9zZXRfY2hhaW47CisrCQlYNTA5X1NUT1JFX0NUWF9zZXRfZXJyb3I7CisrCQlYNTA5X1NUT1JFX0NUWF9zZXRfZXhfZGF0YTsKKysJCUNSWVBUT19kdXBfZXhfZGF0YTsKKysJCUNSWVBUT19nZXRfbmV3X2xvY2tpZDsKKysJCUNSWVBUT19uZXdfZXhfZGF0YTsKKysJCVJTQV9zZXRfZXhfZGF0YTsKKysJCVJTQV9nZXRfZXhfZGF0YTsKKysJCVJTQV9nZXRfZXhfbmV3X2luZGV4OworKwkJUlNBX3BhZGRpbmdfYWRkX1BLQ1MxX3R5cGVfMTsKKysJCVJTQV9wYWRkaW5nX2FkZF9QS0NTMV90eXBlXzI7CisrCQlSU0FfcGFkZGluZ19hZGRfU1NMdjIzOworKwkJUlNBX3BhZGRpbmdfYWRkX25vbmU7CisrCQlSU0FfcGFkZGluZ19jaGVja19QS0NTMV90eXBlXzE7CisrCQlSU0FfcGFkZGluZ19jaGVja19QS0NTMV90eXBlXzI7CisrCQlSU0FfcGFkZGluZ19jaGVja19TU0x2MjM7CisrCQlSU0FfcGFkZGluZ19jaGVja19ub25lOworKwkJYm5fYWRkX3dvcmRzOworKwkJZDJpX05ldHNjYXBlX1JTQV8yOworKwkJQ1JZUFRPX2dldF9leF9uZXdfaW5kZXg7CisrCQlSSVBFTUQxNjBfSW5pdDsKKysJCVJJUEVNRDE2MF9VcGRhdGU7CisrCQlSSVBFTUQxNjBfRmluYWw7CisrCQlSSVBFTUQxNjA7CisrCQlSSVBFTUQxNjBfVHJhbnNmb3JtOworKwkJUkM1XzMyX3NldF9rZXk7CisrCQlSQzVfMzJfZWNiX2VuY3J5cHQ7CisrCQlSQzVfMzJfZW5jcnlwdDsKKysJCVJDNV8zMl9kZWNyeXB0OworKwkJUkM1XzMyX2NiY19lbmNyeXB0OworKwkJUkM1XzMyX2NmYjY0X2VuY3J5cHQ7CisrCQlSQzVfMzJfb2ZiNjRfZW5jcnlwdDsKKysJCUJOX2JuMm1waTsKKysJCUJOX21waTJibjsKKysJCUFTTjFfQklUX1NUUklOR19nZXRfYml0OworKwkJQVNOMV9CSVRfU1RSSU5HX3NldF9iaXQ7CisrCQlCSU9fZ2V0X2V4X2RhdGE7CisrCQlCSU9fZ2V0X2V4X25ld19pbmRleDsKKysJCUJJT19zZXRfZXhfZGF0YTsKKysJCVg1MDl2M19nZXRfa2V5X3VzYWdlOworKwkJWDUwOXYzX3NldF9rZXlfdXNhZ2U7CisrCQlhMmlfWDUwOXYzX2tleV91c2FnZTsKKysJCWkyYV9YNTA5djNfa2V5X3VzYWdlOworKwkJRVZQX1BLRVlfZGVjcnlwdDsKKysJCUVWUF9QS0VZX2VuY3J5cHQ7CisrCQlQS0NTN19SRUNJUF9JTkZPX3NldDsKKysJCVBLQ1M3X2FkZF9yZWNpcGllbnQ7CisrCQlQS0NTN19hZGRfcmVjaXBpZW50X2luZm87CisrCQlQS0NTN19zZXRfY2lwaGVyOworKwkJQVNOMV9UWVBFX2dldF9pbnRfb2N0ZXRzdHJpbmc7CisrCQlBU04xX1RZUEVfZ2V0X29jdGV0c3RyaW5nOworKwkJQVNOMV9UWVBFX3NldF9pbnRfb2N0ZXRzdHJpbmc7CisrCQlBU04xX1RZUEVfc2V0X29jdGV0c3RyaW5nOworKwkJQVNOMV9VVENUSU1FX3NldF9zdHJpbmc7CisrCQlFUlJfYWRkX2Vycm9yX2RhdGE7CisrCQlFUlJfc2V0X2Vycm9yX2RhdGE7CisrCQlFVlBfQ0lQSEVSX2FzbjFfdG9fcGFyYW07CisrCQlFVlBfQ0lQSEVSX3BhcmFtX3RvX2FzbjE7CisrCQlFVlBfQ0lQSEVSX2dldF9hc24xX2l2OworKwkJRVZQX0NJUEhFUl9zZXRfYXNuMV9pdjsKKysJCUVWUF9yYzVfMzJfMTJfMTZfY2JjOworKwkJRVZQX3JjNV8zMl8xMl8xNl9jZmI2NDsKKysJCUVWUF9yYzVfMzJfMTJfMTZfZWNiOworKwkJRVZQX3JjNV8zMl8xMl8xNl9vZmI7CisrCQlhc24xX2FkZF9lcnJvcjsKKysJCWQyaV9BU04xX0JNUFNUUklORzsKKysJCWkyZF9BU04xX0JNUFNUUklORzsKKysJCUJJT19mX2JlcjsKKysJCUJOX2luaXQ7CisrCQlDT01QX0NUWF9uZXc7CisrCQlDT01QX0NUWF9mcmVlOworKwkJQ09NUF9DVFhfY29tcHJlc3NfYmxvY2s7CisrCQlDT01QX0NUWF9leHBhbmRfYmxvY2s7CisrCQlYNTA5X1NUT1JFX0NUWF9nZXRfZXhfbmV3X2luZGV4OworKwkJT0JKX05BTUVfYWRkOworKwkJQklPX3NvY2tldF9uYmlvOworKwkJRVZQX3JjMl82NF9jYmM7CisrCQlPQkpfTkFNRV9jbGVhbnVwOworKwkJT0JKX05BTUVfZ2V0OworKwkJT0JKX05BTUVfaW5pdDsKKysJCU9CSl9OQU1FX25ld19pbmRleDsKKysJCU9CSl9OQU1FX3JlbW92ZTsKKysJCUJOX01PTlRfQ1RYX2NvcHk7CisrCQlCSU9fbmV3X3NvY2tzNGFfY29ubmVjdDsKKysJCUJJT19zX3NvY2tzNGFfY29ubmVjdDsKKysJCVBST1hZX3NldF9jb25uZWN0X21vZGU7CisrCQlSQU5EX1NTTGVheTsKKysJCVJBTkRfc2V0X3JhbmRfbWV0aG9kOworKwkJUlNBX21lbW9yeV9sb2NrOworKwkJYm5fc3ViX3dvcmRzOworKwkJYm5fbXVsX25vcm1hbDsKKysJCWJuX211bF9jb21iYTg7CisrCQlibl9tdWxfY29tYmE0OworKwkJYm5fc3FyX25vcm1hbDsKKysJCWJuX3Nxcl9jb21iYTg7CisrCQlibl9zcXJfY29tYmE0OworKwkJYm5fY21wX3dvcmRzOworKwkJYm5fbXVsX3JlY3Vyc2l2ZTsKKysJCWJuX211bF9wYXJ0X3JlY3Vyc2l2ZTsKKysJCWJuX3Nxcl9yZWN1cnNpdmU7CisrCQlibl9tdWxfbG93X25vcm1hbDsKKysJCUJOX1JFQ1BfQ1RYX2luaXQ7CisrCQlCTl9SRUNQX0NUWF9uZXc7CisrCQlCTl9SRUNQX0NUWF9mcmVlOworKwkJQk5fUkVDUF9DVFhfc2V0OworKwkJQk5fbW9kX211bF9yZWNpcHJvY2FsOworKwkJQk5fbW9kX2V4cF9yZWNwOworKwkJQk5fZGl2X3JlY3A7CisrCQlCTl9DVFhfaW5pdDsKKysJCUJOX01PTlRfQ1RYX2luaXQ7CisrCQlSQU5EX2dldF9yYW5kX21ldGhvZDsKKysJCVBLQ1M3X2FkZF9hdHRyaWJ1dGU7CisrCQlQS0NTN19hZGRfc2lnbmVkX2F0dHJpYnV0ZTsKKysJCVBLQ1M3X2RpZ2VzdF9mcm9tX2F0dHJpYnV0ZXM7CisrCQlQS0NTN19nZXRfYXR0cmlidXRlOworKwkJUEtDUzdfZ2V0X2lzc3Vlcl9hbmRfc2VyaWFsOworKwkJUEtDUzdfZ2V0X3NpZ25lZF9hdHRyaWJ1dGU7CisrCQlDT01QX2NvbXByZXNzX2Jsb2NrOworKwkJQ09NUF9leHBhbmRfYmxvY2s7CisrCQlDT01QX3JsZTsKKysJCUNPTVBfemxpYjsKKysJCW1zX3RpbWVfZGlmZjsKKysJCW1zX3RpbWVfbmV3OworKwkJbXNfdGltZV9mcmVlOworKwkJbXNfdGltZV9jbXA7CisrCQltc190aW1lX2dldDsKKysJCVBLQ1M3X3NldF9hdHRyaWJ1dGVzOworKwkJUEtDUzdfc2V0X3NpZ25lZF9hdHRyaWJ1dGVzOworKwkJWDUwOV9BVFRSSUJVVEVfY3JlYXRlOworKwkJWDUwOV9BVFRSSUJVVEVfZHVwOworKwkJQVNOMV9HRU5FUkFMSVpFRFRJTUVfY2hlY2s7CisrCQlBU04xX0dFTkVSQUxJWkVEVElNRV9wcmludDsKKysJCUFTTjFfR0VORVJBTElaRURUSU1FX3NldDsKKysJCUFTTjFfR0VORVJBTElaRURUSU1FX3NldF9zdHJpbmc7CisrCQlBU04xX1RJTUVfcHJpbnQ7CisrCQlCQVNJQ19DT05TVFJBSU5UU19mcmVlOworKwkJQkFTSUNfQ09OU1RSQUlOVFNfbmV3OworKwkJRVJSX2xvYWRfWDUwOVYzX3N0cmluZ3M7CisrCQlORVRTQ0FQRV9DRVJUX1NFUVVFTkNFX2ZyZWU7CisrCQlORVRTQ0FQRV9DRVJUX1NFUVVFTkNFX25ldzsKKysJCU9CSl90eHQyb2JqOworKwkJUEVNX3JlYWRfTkVUU0NBUEVfQ0VSVF9TRVFVRU5DRTsKKysJCVBFTV9yZWFkX05TX0NFUlRfU0VROworKwkJUEVNX3JlYWRfYmlvX05FVFNDQVBFX0NFUlRfU0VRVUVOQ0U7CisrCQlQRU1fcmVhZF9iaW9fTlNfQ0VSVF9TRVE7CisrCQlQRU1fd3JpdGVfTkVUU0NBUEVfQ0VSVF9TRVFVRU5DRTsKKysJCVBFTV93cml0ZV9OU19DRVJUX1NFUTsKKysJCVBFTV93cml0ZV9iaW9fTkVUU0NBUEVfQ0VSVF9TRVFVRU5DRTsKKysJCVBFTV93cml0ZV9iaW9fTlNfQ0VSVF9TRVE7CisrCQlYNTA5VjNfRVhUX2FkZDsKKysJCVg1MDlWM19FWFRfYWRkX2FsaWFzOworKwkJWDUwOVYzX0VYVF9hZGRfY29uZjsKKysJCVg1MDlWM19FWFRfY2xlYW51cDsKKysJCVg1MDlWM19FWFRfY29uZjsKKysJCVg1MDlWM19FWFRfY29uZl9uaWQ7CisrCQlYNTA5VjNfRVhUX2dldDsKKysJCVg1MDlWM19FWFRfZ2V0X25pZDsKKysJCVg1MDlWM19FWFRfcHJpbnQ7CisrCQlYNTA5VjNfRVhUX3ByaW50X2ZwOworKwkJWDUwOVYzX2FkZF9zdGFuZGFyZF9leHRlbnNpb25zOworKwkJWDUwOVYzX2FkZF92YWx1ZTsKKysJCVg1MDlWM19hZGRfdmFsdWVfYm9vbDsKKysJCVg1MDlWM19hZGRfdmFsdWVfaW50OworKwkJWDUwOVYzX2NvbmZfZnJlZTsKKysJCVg1MDlWM19nZXRfdmFsdWVfYm9vbDsKKysJCVg1MDlWM19nZXRfdmFsdWVfaW50OworKwkJWDUwOVYzX3BhcnNlX2xpc3Q7CisrCQlkMmlfQVNOMV9HRU5FUkFMSVpFRFRJTUU7CisrCQlkMmlfQVNOMV9USU1FOworKwkJZDJpX0JBU0lDX0NPTlNUUkFJTlRTOworKwkJZDJpX05FVFNDQVBFX0NFUlRfU0VRVUVOQ0U7CisrCQlkMmlfZXh0X2t1OworKwkJZXh0X2t1X2ZyZWU7CisrCQlleHRfa3VfbmV3OworKwkJaTJkX0FTTjFfR0VORVJBTElaRURUSU1FOworKwkJaTJkX0FTTjFfVElNRTsKKysJCWkyZF9CQVNJQ19DT05TVFJBSU5UUzsKKysJCWkyZF9ORVRTQ0FQRV9DRVJUX1NFUVVFTkNFOworKwkJaTJkX2V4dF9rdTsKKysJCUVWUF9NRF9DVFhfY29weTsKKysJCWkyZF9BU04xX0VOVU1FUkFURUQ7CisrCQlkMmlfQVNOMV9FTlVNRVJBVEVEOworKwkJQVNOMV9FTlVNRVJBVEVEX3NldDsKKysJCUFTTjFfRU5VTUVSQVRFRF9nZXQ7CisrCQlCTl90b19BU04xX0VOVU1FUkFURUQ7CisrCQlBU04xX0VOVU1FUkFURURfdG9fQk47CisrCQlpMmFfQVNOMV9FTlVNRVJBVEVEOworKwkJYTJpX0FTTjFfRU5VTUVSQVRFRDsKKysJCWkyZF9HRU5FUkFMX05BTUU7CisrCQlkMmlfR0VORVJBTF9OQU1FOworKwkJR0VORVJBTF9OQU1FX25ldzsKKysJCUdFTkVSQUxfTkFNRV9mcmVlOworKwkJR0VORVJBTF9OQU1FU19uZXc7CisrCQlHRU5FUkFMX05BTUVTX2ZyZWU7CisrCQlkMmlfR0VORVJBTF9OQU1FUzsKKysJCWkyZF9HRU5FUkFMX05BTUVTOworKwkJaTJ2X0dFTkVSQUxfTkFNRVM7CisrCQlpMnNfQVNOMV9PQ1RFVF9TVFJJTkc7CisrCQlzMmlfQVNOMV9PQ1RFVF9TVFJJTkc7CisrCQlYNTA5VjNfRVhUX2NoZWNrX2NvbmY7CisrCQloZXhfdG9fc3RyaW5nOworKwkJc3RyaW5nX3RvX2hleDsKKysJCURFU19lZGUzX2NiY21fZW5jcnlwdDsKKysJCVJTQV9wYWRkaW5nX2FkZF9QS0NTMV9PQUVQOworKwkJUlNBX3BhZGRpbmdfY2hlY2tfUEtDUzFfT0FFUDsKKysJCVg1MDlfQ1JMX3ByaW50X2ZwOworKwkJWDUwOV9DUkxfcHJpbnQ7CisrCQlpMnZfR0VORVJBTF9OQU1FOworKwkJdjJpX0dFTkVSQUxfTkFNRTsKKysJCWkyZF9QS0VZX1VTQUdFX1BFUklPRDsKKysJCWQyaV9QS0VZX1VTQUdFX1BFUklPRDsKKysJCVBLRVlfVVNBR0VfUEVSSU9EX25ldzsKKysJCVBLRVlfVVNBR0VfUEVSSU9EX2ZyZWU7CisrCQl2MmlfR0VORVJBTF9OQU1FUzsKKysJCWkyc19BU04xX0lOVEVHRVI7CisrCQlYNTA5VjNfRVhUX2QyaTsKKysJCW5hbWVfY21wOworKwkJc3RyX2R1cDsKKysJCWkyc19BU04xX0VOVU1FUkFURUQ7CisrCQlpMnNfQVNOMV9FTlVNRVJBVEVEX1RBQkxFOworKwkJQklPX3NfbG9nOworKwkJQklPX2ZfcmVsaWFibGU7CisrCQlQS0NTN19kYXRhRmluYWw7CisrCQlQS0NTN19kYXRhRGVjb2RlOworKwkJWDUwOVYzX0VYVF9DUkxfYWRkX2NvbmY7CisrCQlCTl9zZXRfcGFyYW1zOworKwkJQk5fZ2V0X3BhcmFtczsKKysJCUJJT19nZXRfZXhfbnVtOworKwkJQklPX3NldF9leF9mcmVlX2Z1bmM7CisrCQlFVlBfcmlwZW1kMTYwOworKwkJQVNOMV9USU1FX3NldDsKKysJCWkyZF9BVVRIT1JJVFlfS0VZSUQ7CisrCQlkMmlfQVVUSE9SSVRZX0tFWUlEOworKwkJQVVUSE9SSVRZX0tFWUlEX25ldzsKKysJCUFVVEhPUklUWV9LRVlJRF9mcmVlOworKwkJQVNOMV9zZXFfdW5wYWNrOworKwkJQVNOMV9zZXFfcGFjazsKKysJCUFTTjFfdW5wYWNrX3N0cmluZzsKKysJCUFTTjFfcGFja19zdHJpbmc7CisrCQlQS0NTMTJfcGFja19zYWZlYmFnOworKwkJUEtDUzEyX01BS0VfS0VZQkFHOworKwkJUEtDUzhfZW5jcnlwdDsKKysJCVBLQ1MxMl9NQUtFX1NIS0VZQkFHOworKwkJUEtDUzEyX3BhY2tfcDdkYXRhOworKwkJUEtDUzEyX3BhY2tfcDdlbmNkYXRhOworKwkJUEtDUzEyX2FkZF9sb2NhbGtleWlkOworKwkJUEtDUzEyX2FkZF9mcmllbmRseW5hbWVfYXNjOworKwkJUEtDUzEyX2FkZF9mcmllbmRseW5hbWVfdW5pOworKwkJUEtDUzEyX2dldF9mcmllbmRseW5hbWU7CisrCQlQS0NTMTJfcGJlX2NyeXB0OworKwkJUEtDUzEyX2RlY3J5cHRfZDJpOworKwkJUEtDUzEyX2kyZF9lbmNyeXB0OworKwkJUEtDUzEyX2luaXQ7CisrCQlQS0NTMTJfa2V5X2dlbl9hc2M7CisrCQlQS0NTMTJfa2V5X2dlbl91bmk7CisrCQlQS0NTMTJfZ2VuX21hYzsKKysJCVBLQ1MxMl92ZXJpZnlfbWFjOworKwkJUEtDUzEyX3NldF9tYWM7CisrCQlQS0NTMTJfc2V0dXBfbWFjOworKwkJT1BFTlNTTF9hc2MydW5pOworKwkJT1BFTlNTTF91bmkyYXNjOworKwkJaTJkX1BLQ1MxMl9CQUdTOworKwkJUEtDUzEyX0JBR1NfbmV3OworKwkJZDJpX1BLQ1MxMl9CQUdTOworKwkJUEtDUzEyX0JBR1NfZnJlZTsKKysJCWkyZF9QS0NTMTI7CisrCQlkMmlfUEtDUzEyOworKwkJUEtDUzEyX25ldzsKKysJCVBLQ1MxMl9mcmVlOworKwkJaTJkX1BLQ1MxMl9NQUNfREFUQTsKKysJCVBLQ1MxMl9NQUNfREFUQV9uZXc7CisrCQlkMmlfUEtDUzEyX01BQ19EQVRBOworKwkJUEtDUzEyX01BQ19EQVRBX2ZyZWU7CisrCQlpMmRfUEtDUzEyX1NBRkVCQUc7CisrCQlQS0NTMTJfU0FGRUJBR19uZXc7CisrCQlkMmlfUEtDUzEyX1NBRkVCQUc7CisrCQlQS0NTMTJfU0FGRUJBR19mcmVlOworKwkJRVJSX2xvYWRfUEtDUzEyX3N0cmluZ3M7CisrCQlQS0NTMTJfUEJFX2FkZDsKKysJCVBLQ1M4X2FkZF9rZXl1c2FnZTsKKysJCVBLQ1MxMl9nZXRfYXR0cl9nZW47CisrCQlQS0NTMTJfcGFyc2U7CisrCQlQS0NTMTJfY3JlYXRlOworKwkJaTJkX1BLQ1MxMl9iaW87CisrCQlpMmRfUEtDUzEyX2ZwOworKwkJZDJpX1BLQ1MxMl9iaW87CisrCQlkMmlfUEtDUzEyX2ZwOworKwkJaTJkX1BCRVBBUkFNOworKwkJUEJFUEFSQU1fbmV3OworKwkJZDJpX1BCRVBBUkFNOworKwkJUEJFUEFSQU1fZnJlZTsKKysJCWkyZF9QS0NTOF9QUklWX0tFWV9JTkZPOworKwkJUEtDUzhfUFJJVl9LRVlfSU5GT19uZXc7CisrCQlkMmlfUEtDUzhfUFJJVl9LRVlfSU5GTzsKKysJCVBLQ1M4X1BSSVZfS0VZX0lORk9fZnJlZTsKKysJCUVWUF9QS0NTODJQS0VZOworKwkJRVZQX1BLRVkyUEtDUzg7CisrCQlQS0NTOF9zZXRfYnJva2VuOworKwkJRVZQX1BCRV9BTEdPUl9DaXBoZXJJbml0OworKwkJRVZQX1BCRV9hbGdfYWRkOworKwkJUEtDUzVfcGJlX3NldDsKKysJCUVWUF9QQkVfY2xlYW51cDsKKysJCWkyZF9TWE5FVDsKKysJCWQyaV9TWE5FVDsKKysJCVNYTkVUX25ldzsKKysJCVNYTkVUX2ZyZWU7CisrCQlpMmRfU1hORVRJRDsKKysJCWQyaV9TWE5FVElEOworKwkJU1hORVRJRF9uZXc7CisrCQlTWE5FVElEX2ZyZWU7CisrCQlEU0FfU0lHX25ldzsKKysJCURTQV9TSUdfZnJlZTsKKysJCURTQV9kb19zaWduOworKwkJRFNBX2RvX3ZlcmlmeTsKKysJCWQyaV9EU0FfU0lHOworKwkJaTJkX0RTQV9TSUc7CisrCQlpMmRfQVNOMV9WSVNJQkxFU1RSSU5HOworKwkJZDJpX0FTTjFfVklTSUJMRVNUUklORzsKKysJCWkyZF9BU04xX1VURjhTVFJJTkc7CisrCQlkMmlfQVNOMV9VVEY4U1RSSU5HOworKwkJaTJkX0RJUkVDVE9SWVNUUklORzsKKysJCWQyaV9ESVJFQ1RPUllTVFJJTkc7CisrCQlpMmRfRElTUExBWVRFWFQ7CisrCQlkMmlfRElTUExBWVRFWFQ7CisrCQlkMmlfQVNOMV9TRVRfT0ZfWDUwOTsKKysJCWkyZF9BU04xX1NFVF9PRl9YNTA5OworKwkJaTJkX1BCS0RGMlBBUkFNOworKwkJUEJLREYyUEFSQU1fbmV3OworKwkJZDJpX1BCS0RGMlBBUkFNOworKwkJUEJLREYyUEFSQU1fZnJlZTsKKysJCWkyZF9QQkUyUEFSQU07CisrCQlQQkUyUEFSQU1fbmV3OworKwkJZDJpX1BCRTJQQVJBTTsKKysJCVBCRTJQQVJBTV9mcmVlOworKwkJZDJpX0FTTjFfU0VUX09GX0dFTkVSQUxfTkFNRTsKKysJCWkyZF9BU04xX1NFVF9PRl9HRU5FUkFMX05BTUU7CisrCQlkMmlfQVNOMV9TRVRfT0ZfU1hORVRJRDsKKysJCWkyZF9BU04xX1NFVF9PRl9TWE5FVElEOworKwkJZDJpX0FTTjFfU0VUX09GX1BPTElDWVFVQUxJTkZPOworKwkJaTJkX0FTTjFfU0VUX09GX1BPTElDWVFVQUxJTkZPOworKwkJZDJpX0FTTjFfU0VUX09GX1BPTElDWUlORk87CisrCQlpMmRfQVNOMV9TRVRfT0ZfUE9MSUNZSU5GTzsKKysJCVNYTkVUX2FkZF9pZF9hc2M7CisrCQlTWE5FVF9hZGRfaWRfdWxvbmc7CisrCQlTWE5FVF9hZGRfaWRfSU5URUdFUjsKKysJCVNYTkVUX2dldF9pZF9hc2M7CisrCQlTWE5FVF9nZXRfaWRfdWxvbmc7CisrCQlTWE5FVF9nZXRfaWRfSU5URUdFUjsKKysJCVg1MDlWM19zZXRfY29uZl9saGFzaDsKKysJCWkyZF9DRVJUSUZJQ0FURVBPTElDSUVTOworKwkJQ0VSVElGSUNBVEVQT0xJQ0lFU19uZXc7CisrCQlDRVJUSUZJQ0FURVBPTElDSUVTX2ZyZWU7CisrCQlkMmlfQ0VSVElGSUNBVEVQT0xJQ0lFUzsKKysJCWkyZF9QT0xJQ1lJTkZPOworKwkJUE9MSUNZSU5GT19uZXc7CisrCQlkMmlfUE9MSUNZSU5GTzsKKysJCVBPTElDWUlORk9fZnJlZTsKKysJCWkyZF9QT0xJQ1lRVUFMSU5GTzsKKysJCVBPTElDWVFVQUxJTkZPX25ldzsKKysJCWQyaV9QT0xJQ1lRVUFMSU5GTzsKKysJCVBPTElDWVFVQUxJTkZPX2ZyZWU7CisrCQlpMmRfVVNFUk5PVElDRTsKKysJCVVTRVJOT1RJQ0VfbmV3OworKwkJZDJpX1VTRVJOT1RJQ0U7CisrCQlVU0VSTk9USUNFX2ZyZWU7CisrCQlpMmRfTk9USUNFUkVGOworKwkJTk9USUNFUkVGX25ldzsKKysJCWQyaV9OT1RJQ0VSRUY7CisrCQlOT1RJQ0VSRUZfZnJlZTsKKysJCVg1MDlWM19nZXRfc3RyaW5nOworKwkJWDUwOVYzX2dldF9zZWN0aW9uOworKwkJWDUwOVYzX3N0cmluZ19mcmVlOworKwkJWDUwOVYzX3NlY3Rpb25fZnJlZTsKKysJCVg1MDlWM19zZXRfY3R4OworKwkJczJpX0FTTjFfSU5URUdFUjsKKysJCUNSWVBUT19zZXRfbG9ja2VkX21lbV9mdW5jdGlvbnM7CisrCQlDUllQVE9fZ2V0X2xvY2tlZF9tZW1fZnVuY3Rpb25zOworKwkJQ1JZUFRPX21hbGxvY19sb2NrZWQ7CisrCQlDUllQVE9fZnJlZV9sb2NrZWQ7CisrCQlCTl9tb2RfZXhwMl9tb250OworKwkJRVJSX2dldF9lcnJvcl9saW5lX2RhdGE7CisrCQlFUlJfcGVla19lcnJvcl9saW5lX2RhdGE7CisrCQlQS0NTMTJfUEJFX2tleWl2Z2VuOworKwkJWDUwOV9BTEdPUl9kdXA7CisrCQlkMmlfQVNOMV9TRVRfT0ZfRElTVF9QT0lOVDsKKysJCWkyZF9BU04xX1NFVF9PRl9ESVNUX1BPSU5UOworKwkJaTJkX0NSTF9ESVNUX1BPSU5UUzsKKysJCUNSTF9ESVNUX1BPSU5UU19uZXc7CisrCQlDUkxfRElTVF9QT0lOVFNfZnJlZTsKKysJCWQyaV9DUkxfRElTVF9QT0lOVFM7CisrCQlpMmRfRElTVF9QT0lOVDsKKysJCURJU1RfUE9JTlRfbmV3OworKwkJZDJpX0RJU1RfUE9JTlQ7CisrCQlESVNUX1BPSU5UX2ZyZWU7CisrCQlpMmRfRElTVF9QT0lOVF9OQU1FOworKwkJRElTVF9QT0lOVF9OQU1FX25ldzsKKysJCURJU1RfUE9JTlRfTkFNRV9mcmVlOworKwkJZDJpX0RJU1RfUE9JTlRfTkFNRTsKKysJCVg1MDlWM19hZGRfdmFsdWVfdWNoYXI7CisrCQlkMmlfQVNOMV9TRVRfT0ZfWDUwOV9BVFRSSUJVVEU7CisrCQlpMmRfQVNOMV9TRVRfT0ZfQVNOMV9UWVBFOworKwkJZDJpX0FTTjFfU0VUX09GX1g1MDlfRVhURU5TSU9OOworKwkJZDJpX0FTTjFfU0VUX09GX1g1MDlfTkFNRV9FTlRSWTsKKysJCWQyaV9BU04xX1NFVF9PRl9BU04xX1RZUEU7CisrCQlpMmRfQVNOMV9TRVRfT0ZfWDUwOV9BVFRSSUJVVEU7CisrCQlpMmRfQVNOMV9TRVRfT0ZfWDUwOV9FWFRFTlNJT047CisrCQlpMmRfQVNOMV9TRVRfT0ZfWDUwOV9OQU1FX0VOVFJZOworKwkJWDUwOVYzX0VYVF9pMmQ7CisrCQlYNTA5VjNfRVhUX3ZhbF9wcm47CisrCQlYNTA5VjNfRVhUX2FkZF9saXN0OworKwkJRVZQX0NJUEhFUl90eXBlOworKwkJRVZQX1BCRV9DaXBoZXJJbml0OworKwkJWDUwOVYzX2FkZF92YWx1ZV9ib29sX25mOworKwkJZDJpX0FTTjFfVUlOVEVHRVI7CisrCQlza192YWx1ZTsKKysJCXNrX251bTsKKysJCXNrX3NldDsKKysJCWkyZF9BU04xX1NFVF9PRl9YNTA5X1JFVk9LRUQ7CisrCQlza19zb3J0OworKwkJZDJpX0FTTjFfU0VUX09GX1g1MDlfUkVWT0tFRDsKKysJCWkyZF9BU04xX1NFVF9PRl9YNTA5X0FMR09SOworKwkJaTJkX0FTTjFfU0VUX09GX1g1MDlfQ1JMOworKwkJZDJpX0FTTjFfU0VUX09GX1g1MDlfQUxHT1I7CisrCQlkMmlfQVNOMV9TRVRfT0ZfWDUwOV9DUkw7CisrCQlpMmRfQVNOMV9TRVRfT0ZfUEtDUzdfU0lHTkVSX0lORk87CisrCQlpMmRfQVNOMV9TRVRfT0ZfUEtDUzdfUkVDSVBfSU5GTzsKKysJCWQyaV9BU04xX1NFVF9PRl9QS0NTN19TSUdORVJfSU5GTzsKKysJCWQyaV9BU04xX1NFVF9PRl9QS0NTN19SRUNJUF9JTkZPOworKwkJUEtDUzVfUEJFX2FkZDsKKysJCVBFTV93cml0ZV9iaW9fUEtDUzg7CisrCQlpMmRfUEtDUzhfZnA7CisrCQlQRU1fcmVhZF9iaW9fUEtDUzhfUFJJVl9LRVlfSU5GTzsKKysJCVBFTV9yZWFkX2Jpb19QOF9QUklWX0tFWV9JTkZPOworKwkJZDJpX1BLQ1M4X2JpbzsKKysJCWQyaV9QS0NTOF9QUklWX0tFWV9JTkZPX2ZwOworKwkJUEVNX3dyaXRlX2Jpb19QS0NTOF9QUklWX0tFWV9JTkZPOworKwkJUEVNX3dyaXRlX2Jpb19QOF9QUklWX0tFWV9JTkZPOworKwkJUEVNX3JlYWRfUEtDUzg7CisrCQlkMmlfUEtDUzhfUFJJVl9LRVlfSU5GT19iaW87CisrCQlkMmlfUEtDUzhfZnA7CisrCQlQRU1fd3JpdGVfUEtDUzg7CisrCQlQRU1fcmVhZF9QS0NTOF9QUklWX0tFWV9JTkZPOworKwkJUEVNX3JlYWRfUDhfUFJJVl9LRVlfSU5GTzsKKysJCVBFTV9yZWFkX2Jpb19QS0NTODsKKysJCVBFTV93cml0ZV9QS0NTOF9QUklWX0tFWV9JTkZPOworKwkJUEVNX3dyaXRlX1A4X1BSSVZfS0VZX0lORk87CisrCQlQS0NTNV9QQkVfa2V5aXZnZW47CisrCQlpMmRfUEtDUzhfYmlvOworKwkJaTJkX1BLQ1M4X1BSSVZfS0VZX0lORk9fZnA7CisrCQlpMmRfUEtDUzhfUFJJVl9LRVlfSU5GT19iaW87CisrCQlCSU9fc19iaW87CisrCQlQS0NTNV9wYmUyX3NldDsKKysJCVBLQ1M1X1BCS0RGMl9ITUFDX1NIQTE7CisrCQlQS0NTNV92Ml9QQkVfa2V5aXZnZW47CisrCQlQRU1fd3JpdGVfYmlvX1BLQ1M4UHJpdmF0ZUtleTsKKysJCVBFTV93cml0ZV9QS0NTOFByaXZhdGVLZXk7CisrCQlCSU9fY3RybF9nZXRfcmVhZF9yZXF1ZXN0OworKwkJQklPX2N0cmxfcGVuZGluZzsKKysJCUJJT19jdHJsX3dwZW5kaW5nOworKwkJQklPX25ld19iaW9fcGFpcjsKKysJCUJJT19jdHJsX2dldF93cml0ZV9ndWFyYW50ZWU7CisrCQlDUllQVE9fbnVtX2xvY2tzOworKwkJQ09ORl9sb2FkX2JpbzsKKysJCUNPTkZfbG9hZF9mcDsKKysJCWkyZF9BU04xX1NFVF9PRl9BU04xX09CSkVDVDsKKysJCWQyaV9BU04xX1NFVF9PRl9BU04xX09CSkVDVDsKKysJCVBLQ1M3X3NpZ25hdHVyZVZlcmlmeTsKKysJCVJTQV9zZXRfbWV0aG9kOworKwkJUlNBX2dldF9tZXRob2Q7CisrCQlSU0FfZ2V0X2RlZmF1bHRfbWV0aG9kOworKwkJUlNBX2NoZWNrX2tleTsKKysJCU9CSl9vYmoydHh0OworKwkJRFNBX2R1cF9ESDsKKysJCVg1MDlfUkVRX2dldF9leHRlbnNpb25zOworKwkJWDUwOV9SRVFfc2V0X2V4dGVuc2lvbl9uaWRzOworKwkJQklPX253cml0ZTsKKysJCVg1MDlfUkVRX2V4dGVuc2lvbl9uaWQ7CisrCQlCSU9fbnJlYWQ7CisrCQlYNTA5X1JFUV9nZXRfZXh0ZW5zaW9uX25pZHM7CisrCQlCSU9fbndyaXRlMDsKKysJCVg1MDlfUkVRX2FkZF9leHRlbnNpb25zX25pZDsKKysJCUJJT19ucmVhZDA7CisrCQlYNTA5X1JFUV9hZGRfZXh0ZW5zaW9uczsKKysJCUJJT19uZXdfbWVtX2J1ZjsKKysJCURIX3NldF9leF9kYXRhOworKwkJREhfc2V0X21ldGhvZDsKKysJCURTQV9PcGVuU1NMOworKwkJREhfZ2V0X2V4X2RhdGE7CisrCQlESF9nZXRfZXhfbmV3X2luZGV4OworKwkJRFNBX25ld19tZXRob2Q7CisrCQlESF9uZXdfbWV0aG9kOworKwkJREhfT3BlblNTTDsKKysJCURTQV9nZXRfZXhfbmV3X2luZGV4OworKwkJREhfZ2V0X2RlZmF1bHRfbWV0aG9kOworKwkJRFNBX3NldF9leF9kYXRhOworKwkJREhfc2V0X2RlZmF1bHRfbWV0aG9kOworKwkJRFNBX2dldF9leF9kYXRhOworKwkJWDUwOVYzX0VYVF9SRVFfYWRkX2NvbmY7CisrCQlORVRTQ0FQRV9TUEtJX3ByaW50OworKwkJTkVUU0NBUEVfU1BLSV9zZXRfcHVia2V5OworKwkJTkVUU0NBUEVfU1BLSV9iNjRfZW5jb2RlOworKwkJTkVUU0NBUEVfU1BLSV9nZXRfcHVia2V5OworKwkJTkVUU0NBUEVfU1BLSV9iNjRfZGVjb2RlOworKwkJVVRGOF9wdXRjOworKwkJVVRGOF9nZXRjOworKwkJUlNBX251bGxfbWV0aG9kOworKwkJQVNOMV90YWcyc3RyOworKwkJQklPX2N0cmxfcmVzZXRfcmVhZF9yZXF1ZXN0OworKwkJRElTUExBWVRFWFRfbmV3OworKwkJQVNOMV9HRU5FUkFMSVpFRFRJTUVfZnJlZTsKKysJCVg1MDlfUkVWT0tFRF9nZXRfZXh0X2QyaTsKKysJCVg1MDlfc2V0X2V4X2RhdGE7CisrCQlYNTA5X3JlamVjdF9zZXRfYml0X2FzYzsKKysJCVg1MDlfTkFNRV9hZGRfZW50cnlfYnlfdHh0OworKwkJWDUwOV9OQU1FX2FkZF9lbnRyeV9ieV9OSUQ7CisrCQlYNTA5X1BVUlBPU0VfZ2V0MDsKKysJCVBFTV9yZWFkX1g1MDlfQVVYOworKwkJZDJpX0FVVEhPUklUWV9JTkZPX0FDQ0VTUzsKKysJCVBFTV93cml0ZV9QVUJLRVk7CisrCQlBQ0NFU1NfREVTQ1JJUFRJT05fbmV3OworKwkJWDUwOV9DRVJUX0FVWF9mcmVlOworKwkJZDJpX0FDQ0VTU19ERVNDUklQVElPTjsKKysJCVg1MDlfdHJ1c3RfY2xlYXI7CisrCQlYNTA5X1RSVVNUX2FkZDsKKysJCUFTTjFfVklTSUJMRVNUUklOR19uZXc7CisrCQlYNTA5X2FsaWFzX3NldDE7CisrCQlBU04xX1BSSU5UQUJMRVNUUklOR19mcmVlOworKwkJRVZQX1BLRVlfZ2V0MV9EU0E7CisrCQlBU04xX0JNUFNUUklOR19uZXc7CisrCQlBU04xX21ic3RyaW5nX2NvcHk7CisrCQlBU04xX1VURjhTVFJJTkdfbmV3OworKwkJRFNBX2dldF9kZWZhdWx0X21ldGhvZDsKKysJCWkyZF9BU04xX1NFVF9PRl9BQ0NFU1NfREVTQ1JJUFRJT047CisrCQlBU04xX1Q2MVNUUklOR19mcmVlOworKwkJRFNBX3NldF9tZXRob2Q7CisrCQlYNTA5X2dldF9leF9kYXRhOworKwkJQVNOMV9TVFJJTkdfdHlwZTsKKysJCVg1MDlfUFVSUE9TRV9nZXRfYnlfc25hbWU7CisrCQlBU04xX1RJTUVfZnJlZTsKKysJCUFTTjFfT0NURVRfU1RSSU5HX2NtcDsKKysJCUFTTjFfQklUX1NUUklOR19uZXc7CisrCQlYNTA5X2dldF9leHRfZDJpOworKwkJUEVNX3JlYWRfYmlvX1g1MDlfQVVYOworKwkJQVNOMV9TVFJJTkdfc2V0X2RlZmF1bHRfbWFza19hc2M7CisrCQlBU04xX1NUUklOR19zZXRfZGVmX21hc2tfYXNjOworKwkJUEVNX3dyaXRlX2Jpb19SU0FfUFVCS0VZOworKwkJQVNOMV9JTlRFR0VSX2NtcDsKKysJCWQyaV9SU0FfUFVCS0VZX2ZwOworKwkJWDUwOV90cnVzdF9zZXRfYml0X2FzYzsKKysJCVBFTV93cml0ZV9iaW9fRFNBX1BVQktFWTsKKysJCVg1MDlfU1RPUkVfQ1RYX2ZyZWU7CisrCQlFVlBfUEtFWV9zZXQxX0RTQTsKKysJCWkyZF9EU0FfUFVCS0VZX2ZwOworKwkJWDUwOV9sb2FkX2NlcnRfY3JsX2ZpbGU7CisrCQlBU04xX1RJTUVfbmV3OworKwkJaTJkX1JTQV9QVUJLRVk7CisrCQlYNTA5X1NUT1JFX0NUWF9wdXJwb3NlX2luaGVyaXQ7CisrCQlQRU1fcmVhZF9SU0FfUFVCS0VZOworKwkJZDJpX1g1MDlfQVVYOworKwkJaTJkX0RTQV9QVUJLRVk7CisrCQlYNTA5X0NFUlRfQVVYX3ByaW50OworKwkJUEVNX3JlYWRfRFNBX1BVQktFWTsKKysJCWkyZF9SU0FfUFVCS0VZX2JpbzsKKysJCUFTTjFfQklUX1NUUklOR19udW1fYXNjOworKwkJaTJkX1BVQktFWTsKKysJCUFTTjFfVVRDVElNRV9mcmVlOworKwkJRFNBX3NldF9kZWZhdWx0X21ldGhvZDsKKysJCVg1MDlfUFVSUE9TRV9nZXRfYnlfaWQ7CisrCQlBQ0NFU1NfREVTQ1JJUFRJT05fZnJlZTsKKysJCVBFTV9yZWFkX2Jpb19QVUJLRVk7CisrCQlBU04xX1NUUklOR19zZXRfYnlfTklEOworKwkJWDUwOV9QVVJQT1NFX2dldF9pZDsKKysJCURJU1BMQVlURVhUX2ZyZWU7CisrCQlPVEhFUk5BTUVfbmV3OworKwkJWDUwOV9DRVJUX0FVWF9uZXc7CisrCQlYNTA5X1RSVVNUX2NsZWFudXA7CisrCQlYNTA5X05BTUVfYWRkX2VudHJ5X2J5X09CSjsKKysJCVg1MDlfQ1JMX2dldF9leHRfZDJpOworKwkJWDUwOV9QVVJQT1NFX2dldDBfbmFtZTsKKysJCVBFTV9yZWFkX1BVQktFWTsKKysJCWkyZF9EU0FfUFVCS0VZX2JpbzsKKysJCWkyZF9PVEhFUk5BTUU7CisrCQlBU04xX09DVEVUX1NUUklOR19mcmVlOworKwkJQVNOMV9CSVRfU1RSSU5HX3NldF9hc2M7CisrCQlYNTA5X2dldF9leF9uZXdfaW5kZXg7CisrCQlBU04xX1NUUklOR19UQUJMRV9jbGVhbnVwOworKwkJWDUwOV9UUlVTVF9nZXRfYnlfaWQ7CisrCQlYNTA5X1BVUlBPU0VfZ2V0X3RydXN0OworKwkJQVNOMV9TVFJJTkdfbGVuZ3RoOworKwkJZDJpX0FTTjFfU0VUX09GX0FDQ0VTU19ERVNDUklQVElPTjsKKysJCUFTTjFfUFJJTlRBQkxFU1RSSU5HX25ldzsKKysJCVg1MDlWM19nZXRfZDJpOworKwkJQVNOMV9FTlVNRVJBVEVEX2ZyZWU7CisrCQlpMmRfWDUwOV9DRVJUX0FVWDsKKysJCVg1MDlfU1RPUkVfQ1RYX3NldF90cnVzdDsKKysJCUFTTjFfU1RSSU5HX3NldF9kZWZhdWx0X21hc2s7CisrCQlYNTA5X1NUT1JFX0NUWF9uZXc7CisrCQlFVlBfUEtFWV9nZXQxX1JTQTsKKysJCURJUkVDVE9SWVNUUklOR19mcmVlOworKwkJUEVNX3dyaXRlX1g1MDlfQVVYOworKwkJQVNOMV9PQ1RFVF9TVFJJTkdfc2V0OworKwkJZDJpX0RTQV9QVUJLRVlfZnA7CisrCQlkMmlfUlNBX1BVQktFWTsKKysJCVg1MDlfVFJVU1RfZ2V0MF9uYW1lOworKwkJWDUwOV9UUlVTVF9nZXQwOworKwkJQVVUSE9SSVRZX0lORk9fQUNDRVNTX2ZyZWU7CisrCQlBU04xX0lBNVNUUklOR19uZXc7CisrCQlkMmlfRFNBX1BVQktFWTsKKysJCVg1MDlfY2hlY2tfcHVycG9zZTsKKysJCUFTTjFfRU5VTUVSQVRFRF9uZXc7CisrCQlkMmlfUlNBX1BVQktFWV9iaW87CisrCQlkMmlfUFVCS0VZOworKwkJWDUwOV9UUlVTVF9nZXRfdHJ1c3Q7CisrCQlYNTA5X1RSVVNUX2dldF9mbGFnczsKKysJCUFTTjFfQk1QU1RSSU5HX2ZyZWU7CisrCQlBU04xX1Q2MVNUUklOR19uZXc7CisrCQlBU04xX1VUQ1RJTUVfbmV3OworKwkJaTJkX0FVVEhPUklUWV9JTkZPX0FDQ0VTUzsKKysJCUVWUF9QS0VZX3NldDFfUlNBOworKwkJWDUwOV9TVE9SRV9DVFhfc2V0X3B1cnBvc2U7CisrCQlBU04xX0lBNVNUUklOR19mcmVlOworKwkJUEVNX3dyaXRlX2Jpb19YNTA5X0FVWDsKKysJCVg1MDlfUFVSUE9TRV9nZXRfY291bnQ7CisrCQlDUllQVE9fYWRkX2luZm87CisrCQlYNTA5X05BTUVfRU5UUllfY3JlYXRlX2J5X3R4dDsKKysJCUFTTjFfU1RSSU5HX2dldF9kZWZhdWx0X21hc2s7CisrCQlYNTA5X2FsaWFzX2dldDA7CisrCQlBU04xX1NUUklOR19kYXRhOworKwkJaTJkX0FDQ0VTU19ERVNDUklQVElPTjsKKysJCVg1MDlfdHJ1c3Rfc2V0X2JpdDsKKysJCUFTTjFfQklUX1NUUklOR19mcmVlOworKwkJUEVNX3JlYWRfYmlvX1JTQV9QVUJLRVk7CisrCQlYNTA5X2FkZDFfcmVqZWN0X29iamVjdDsKKysJCVg1MDlfY2hlY2tfdHJ1c3Q7CisrCQlQRU1fcmVhZF9iaW9fRFNBX1BVQktFWTsKKysJCVg1MDlfUFVSUE9TRV9hZGQ7CisrCQlBU04xX1NUUklOR19UQUJMRV9nZXQ7CisrCQlBU04xX1VURjhTVFJJTkdfZnJlZTsKKysJCWQyaV9EU0FfUFVCS0VZX2JpbzsKKysJCVBFTV93cml0ZV9SU0FfUFVCS0VZOworKwkJZDJpX09USEVSTkFNRTsKKysJCVg1MDlfcmVqZWN0X3NldF9iaXQ7CisrCQlQRU1fd3JpdGVfRFNBX1BVQktFWTsKKysJCVg1MDlfUFVSUE9TRV9nZXQwX3NuYW1lOworKwkJRVZQX1BLRVlfc2V0MV9ESDsKKysJCUFTTjFfT0NURVRfU1RSSU5HX2R1cDsKKysJCUFTTjFfQklUX1NUUklOR19zZXQ7CisrCQlYNTA5X1RSVVNUX2dldF9jb3VudDsKKysJCUFTTjFfSU5URUdFUl9mcmVlOworKwkJT1RIRVJOQU1FX2ZyZWU7CisrCQlpMmRfUlNBX1BVQktFWV9mcDsKKysJCUFTTjFfSU5URUdFUl9kdXA7CisrCQlkMmlfWDUwOV9DRVJUX0FVWDsKKysJCVBFTV93cml0ZV9iaW9fUFVCS0VZOworKwkJQVNOMV9WSVNJQkxFU1RSSU5HX2ZyZWU7CisrCQlYNTA5X1BVUlBPU0VfY2xlYW51cDsKKysJCUFTTjFfbWJzdHJpbmdfbmNvcHk7CisrCQlBU04xX0dFTkVSQUxJWkVEVElNRV9uZXc7CisrCQlFVlBfUEtFWV9nZXQxX0RIOworKwkJQVNOMV9PQ1RFVF9TVFJJTkdfbmV3OworKwkJQVNOMV9JTlRFR0VSX25ldzsKKysJCWkyZF9YNTA5X0FVWDsKKysJCUFTTjFfQklUX1NUUklOR19uYW1lX3ByaW50OworKwkJWDUwOV9jbXA7CisrCQlBU04xX1NUUklOR19sZW5ndGhfc2V0OworKwkJRElSRUNUT1JZU1RSSU5HX25ldzsKKysJCVg1MDlfYWRkMV90cnVzdF9vYmplY3Q7CisrCQlQS0NTMTJfbmV3cGFzczsKKysJCVNNSU1FX3dyaXRlX1BLQ1M3OworKwkJU01JTUVfcmVhZF9QS0NTNzsKKysJCURFU19zZXRfa2V5X2NoZWNrZWQ7CisrCQlQS0NTN192ZXJpZnk7CisrCQlQS0NTN19lbmNyeXB0OworKwkJREVTX3NldF9rZXlfdW5jaGVja2VkOworKwkJU01JTUVfY3JsZl9jb3B5OworKwkJaTJkX0FTTjFfUFJJTlRBQkxFU1RSSU5HOworKwkJUEtDUzdfZ2V0MF9zaWduZXJzOworKwkJUEtDUzdfZGVjcnlwdDsKKysJCVNNSU1FX3RleHQ7CisrCQlQS0NTN19zaW1wbGVfc21pbWVjYXA7CisrCQlQS0NTN19nZXRfc21pbWVjYXA7CisrCQlQS0NTN19zaWduOworKwkJUEtDUzdfYWRkX2F0dHJpYl9zbWltZWNhcDsKKysJCUNSWVBUT19kYmdfc2V0X29wdGlvbnM7CisrCQlDUllQVE9fcmVtb3ZlX2FsbF9pbmZvOworKwkJQ1JZUFRPX2dldF9tZW1fZGVidWdfZnVuY3Rpb25zOworKwkJQ1JZUFRPX2lzX21lbV9jaGVja19vbjsKKysJCUNSWVBUT19zZXRfbWVtX2RlYnVnX2Z1bmN0aW9uczsKKysJCUNSWVBUT19wb3BfaW5mbzsKKysJCUNSWVBUT19wdXNoX2luZm9fOworKwkJQ1JZUFRPX3NldF9tZW1fZGVidWdfb3B0aW9uczsKKysJCVBFTV93cml0ZV9QS0NTOFByaXZhdGVLZXlfbmlkOworKwkJUEVNX3dyaXRlX2Jpb19QS0NTOFByaXZhdGVLZXlfbmlkOworKwkJUEVNX3dyaXRlX2Jpb19QS0NTOFByaXZLZXlfbmlkOworKwkJZDJpX1BLQ1M4UHJpdmF0ZUtleV9iaW87CisrCQlBU04xX05VTExfZnJlZTsKKysJCWQyaV9BU04xX05VTEw7CisrCQlBU04xX05VTExfbmV3OworKwkJaTJkX1BLQ1M4UHJpdmF0ZUtleV9iaW87CisrCQlpMmRfUEtDUzhQcml2YXRlS2V5X2ZwOworKwkJaTJkX0FTTjFfTlVMTDsKKysJCWkyZF9QS0NTOFByaXZhdGVLZXlfbmlkX2ZwOworKwkJZDJpX1BLQ1M4UHJpdmF0ZUtleV9mcDsKKysJCWkyZF9QS0NTOFByaXZhdGVLZXlfbmlkX2JpbzsKKysJCWkyZF9QS0NTOFByaXZhdGVLZXlJbmZvX2ZwOworKwkJaTJkX1BLQ1M4UHJpdmF0ZUtleUluZm9fYmlvOworKwkJUEVNX2NiOworKwkJaTJkX1ByaXZhdGVLZXlfZnA7CisrCQlkMmlfUHJpdmF0ZUtleV9iaW87CisrCQlkMmlfUHJpdmF0ZUtleV9mcDsKKysJCWkyZF9Qcml2YXRlS2V5X2JpbzsKKysJCVg1MDlfcmVqZWN0X2NsZWFyOworKwkJWDUwOV9UUlVTVF9zZXRfZGVmYXVsdDsKKysJCWQyaV9BdXRvUHJpdmF0ZUtleTsKKysJCVg1MDlfQVRUUklCVVRFX2dldDBfdHlwZTsKKysJCVg1MDlfQVRUUklCVVRFX3NldDFfZGF0YTsKKysJCVg1MDlhdF9nZXRfYXR0cjsKKysJCVg1MDlhdF9nZXRfYXR0cl9jb3VudDsKKysJCVg1MDlfQVRUUklCVVRFX2NyZWF0ZV9ieV9OSUQ7CisrCQlYNTA5X0FUVFJJQlVURV9zZXQxX29iamVjdDsKKysJCVg1MDlfQVRUUklCVVRFX2NvdW50OworKwkJWDUwOV9BVFRSSUJVVEVfY3JlYXRlX2J5X09CSjsKKysJCVg1MDlfQVRUUklCVVRFX2dldDBfb2JqZWN0OworKwkJWDUwOWF0X2dldF9hdHRyX2J5X05JRDsKKysJCVg1MDlhdF9hZGQxX2F0dHI7CisrCQlYNTA5X0FUVFJJQlVURV9nZXQwX2RhdGE7CisrCQlYNTA5YXRfZGVsZXRlX2F0dHI7CisrCQlYNTA5YXRfZ2V0X2F0dHJfYnlfT0JKOworKwkJUkFORF9hZGQ7CisrCQlCSU9fbnVtYmVyX3dyaXR0ZW47CisrCQlCSU9fbnVtYmVyX3JlYWQ7CisrCQlYNTA5X1NUT1JFX0NUWF9nZXQxX2NoYWluOworKwkJRVJSX2xvYWRfUkFORF9zdHJpbmdzOworKwkJUkFORF9wc2V1ZG9fYnl0ZXM7CisrCQlYNTA5X1JFUV9nZXRfYXR0cl9ieV9OSUQ7CisrCQlYNTA5X1JFUV9nZXRfYXR0cjsKKysJCVg1MDlfUkVRX2FkZDFfYXR0cl9ieV9OSUQ7CisrCQlYNTA5X1JFUV9nZXRfYXR0cl9ieV9PQko7CisrCQlYNTA5YXRfYWRkMV9hdHRyX2J5X05JRDsKKysJCVg1MDlfUkVRX2FkZDFfYXR0cl9ieV9PQko7CisrCQlYNTA5X1JFUV9nZXRfYXR0cl9jb3VudDsKKysJCVg1MDlfUkVRX2FkZDFfYXR0cjsKKysJCVg1MDlfUkVRX2RlbGV0ZV9hdHRyOworKwkJWDUwOWF0X2FkZDFfYXR0cl9ieV9PQko7CisrCQlYNTA5X1JFUV9hZGQxX2F0dHJfYnlfdHh0OworKwkJWDUwOV9BVFRSSUJVVEVfY3JlYXRlX2J5X3R4dDsKKysJCVg1MDlhdF9hZGQxX2F0dHJfYnlfdHh0OworKwkJQk5fcHNldWRvX3JhbmQ7CisrCQlCTl9pc19wcmltZV9mYXN0dGVzdDsKKysJCUJOX0NUWF9lbmQ7CisrCQlCTl9DVFhfc3RhcnQ7CisrCQlCTl9DVFhfZ2V0OworKwkJRVZQX1BLRVkyUEtDUzhfYnJva2VuOworKwkJQVNOMV9TVFJJTkdfVEFCTEVfYWRkOworKwkJQ1JZUFRPX2RiZ19nZXRfb3B0aW9uczsKKysJCUFVVEhPUklUWV9JTkZPX0FDQ0VTU19uZXc7CisrCQlDUllQVE9fZ2V0X21lbV9kZWJ1Z19vcHRpb25zOworKwkJREVTX2NyeXB0OworKwkJUEVNX3dyaXRlX2Jpb19YNTA5X1JFUV9ORVc7CisrCQlQRU1fd3JpdGVfWDUwOV9SRVFfTkVXOworKwkJQklPX2NhbGxiYWNrX2N0cmw7CisrCQlSQU5EX2VnZDsKKysJCVJBTkRfc3RhdHVzOworKwkJYm5fZHVtcDE7CisrCQlERVNfY2hlY2tfa2V5X3Bhcml0eTsKKysJCWxoX251bV9pdGVtczsKKysJCVJBTkRfZXZlbnQ7CisrCQlEU09fbmV3OworKwkJRFNPX25ld19tZXRob2Q7CisrCQlEU09fZnJlZTsKKysJCURTT19mbGFnczsKKysJCURTT191cDsKKysJCURTT19zZXRfZGVmYXVsdF9tZXRob2Q7CisrCQlEU09fZ2V0X2RlZmF1bHRfbWV0aG9kOworKwkJRFNPX2dldF9tZXRob2Q7CisrCQlEU09fc2V0X21ldGhvZDsKKysJCURTT19sb2FkOworKwkJRFNPX2JpbmRfdmFyOworKwkJRFNPX01FVEhPRF9udWxsOworKwkJRFNPX01FVEhPRF9vcGVuc3NsOworKwkJRFNPX01FVEhPRF9kbGZjbjsKKysJCURTT19NRVRIT0Rfd2luMzI7CisrCQlFUlJfbG9hZF9EU09fc3RyaW5nczsKKysJCURTT19NRVRIT0RfZGw7CisrCQlOQ09ORl9sb2FkOworKwkJTkNPTkZfbG9hZF9mcDsKKysJCU5DT05GX25ldzsKKysJCU5DT05GX2dldF9zdHJpbmc7CisrCQlOQ09ORl9mcmVlOworKwkJTkNPTkZfZ2V0X251bWJlcjsKKysJCUNPTkZfZHVtcF9mcDsKKysJCU5DT05GX2xvYWRfYmlvOworKwkJTkNPTkZfZHVtcF9mcDsKKysJCU5DT05GX2dldF9zZWN0aW9uOworKwkJTkNPTkZfZHVtcF9iaW87CisrCQlDT05GX2R1bXBfYmlvOworKwkJTkNPTkZfZnJlZV9kYXRhOworKwkJQ09ORl9zZXRfZGVmYXVsdF9tZXRob2Q7CisrCQlFUlJfZXJyb3Jfc3RyaW5nX247CisrCQlCSU9fc25wcmludGY7CisrCQlEU09fY3RybDsKKysJCWkyZF9BU04xX1NFVF9PRl9BU04xX0lOVEVHRVI7CisrCQlpMmRfQVNOMV9TRVRfT0ZfUEtDUzEyX1NBRkVCQUc7CisrCQlpMmRfQVNOMV9TRVRfT0ZfUEtDUzc7CisrCQlCSU9fdmZyZWU7CisrCQlkMmlfQVNOMV9TRVRfT0ZfQVNOMV9JTlRFR0VSOworKwkJZDJpX0FTTjFfU0VUX09GX1BLQ1MxMl9TQUZFQkFHOworKwkJQVNOMV9VVENUSU1FX2dldDsKKysJCVg1MDlfUkVRX2RpZ2VzdDsKKysJCVg1MDlfQ1JMX2RpZ2VzdDsKKysJCWQyaV9BU04xX1NFVF9PRl9QS0NTNzsKKysJCUVWUF9DSVBIRVJfQ1RYX3NldF9rZXlfbGVuZ3RoOworKwkJRVZQX0NJUEhFUl9DVFhfY3RybDsKKysJCUJOX21vZF9leHBfbW9udF93b3JkOworKwkJUkFORF9lZ2RfYnl0ZXM7CisrCQlYNTA5X1JFUV9nZXQxX2VtYWlsOworKwkJWDUwOV9nZXQxX2VtYWlsOworKwkJWDUwOV9lbWFpbF9mcmVlOworKwkJaTJkX1JTQV9ORVQ7CisrCQlkMmlfUlNBX05FVF8yOworKwkJZDJpX1JTQV9ORVQ7CisrCQlEU09fYmluZF9mdW5jOworKwkJQ1JZUFRPX2dldF9uZXdfZHlubG9ja2lkOworKwkJc2tfbmV3X251bGw7CisrCQlDUllQVE9fc2V0X2R5bmxvY2tfZGVzdHJveV9jYWxsYmFjazsKKysJCUNSWVBUT19zZXRfZHlubG9ja19kZXN0cm95X2NiOworKwkJQ1JZUFRPX2Rlc3Ryb3lfZHlubG9ja2lkOworKwkJQ1JZUFRPX3NldF9keW5sb2NrX3NpemU7CisrCQlDUllQVE9fc2V0X2R5bmxvY2tfY3JlYXRlX2NhbGxiYWNrOworKwkJQ1JZUFRPX3NldF9keW5sb2NrX2NyZWF0ZV9jYjsKKysJCUNSWVBUT19zZXRfZHlubG9ja19sb2NrX2NhbGxiYWNrOworKwkJQ1JZUFRPX3NldF9keW5sb2NrX2xvY2tfY2I7CisrCQlDUllQVE9fZ2V0X2R5bmxvY2tfbG9ja19jYWxsYmFjazsKKysJCUNSWVBUT19nZXRfZHlubG9ja19sb2NrX2NiOworKwkJQ1JZUFRPX2dldF9keW5sb2NrX2Rlc3Ryb3lfY2FsbGJhY2s7CisrCQlDUllQVE9fZ2V0X2R5bmxvY2tfZGVzdHJveV9jYjsKKysJCUNSWVBUT19nZXRfZHlubG9ja192YWx1ZTsKKysJCUNSWVBUT19nZXRfZHlubG9ja19jcmVhdGVfY2FsbGJhY2s7CisrCQlDUllQVE9fZ2V0X2R5bmxvY2tfY3JlYXRlX2NiOworKwkJYzJpX0FTTjFfQklUX1NUUklORzsKKysJCWkyY19BU04xX0JJVF9TVFJJTkc7CisrCQlSQU5EX3BvbGw7CisrCQljMmlfQVNOMV9JTlRFR0VSOworKwkJaTJjX0FTTjFfSU5URUdFUjsKKysJCUJJT19kdW1wX2luZGVudDsKKysJCUFTTjFfcGFyc2VfZHVtcDsKKysJCWMyaV9BU04xX09CSkVDVDsKKysJCVg1MDlfTkFNRV9wcmludF9leF9mcDsKKysJCUFTTjFfU1RSSU5HX3ByaW50X2V4X2ZwOworKwkJWDUwOV9OQU1FX3ByaW50X2V4OworKwkJQVNOMV9TVFJJTkdfcHJpbnRfZXg7CisrCQlNRDQ7CisrCQlNRDRfVHJhbnNmb3JtOworKwkJTUQ0X0ZpbmFsOworKwkJTUQ0X1VwZGF0ZTsKKysJCU1ENF9Jbml0OworKwkJRVZQX21kNDsKKysJCWkyZF9QVUJLRVlfYmlvOworKwkJaTJkX1BVQktFWV9mcDsKKysJCWQyaV9QVUJLRVlfYmlvOworKwkJQVNOMV9TVFJJTkdfdG9fVVRGODsKKysJCUJJT192cHJpbnRmOworKwkJQklPX3ZzbnByaW50ZjsKKysJCWQyaV9QVUJLRVlfZnA7CisrCQlYNTA5X2NtcF90aW1lOworKwkJWDUwOV9TVE9SRV9DVFhfc2V0X3RpbWU7CisrCQlYNTA5X1NUT1JFX0NUWF9nZXQxX2lzc3VlcjsKKysJCVg1MDlfT0JKRUNUX3JldHJpZXZlX21hdGNoOworKwkJWDUwOV9PQkpFQ1RfaWR4X2J5X3N1YmplY3Q7CisrCQlYNTA5X1NUT1JFX0NUWF9zZXRfZmxhZ3M7CisrCQlYNTA5X1NUT1JFX0NUWF90cnVzdGVkX3N0YWNrOworKwkJWDUwOV90aW1lX2FkajsKKysJCVg1MDlfY2hlY2tfaXNzdWVkOworKwkJQVNOMV9VVENUSU1FX2NtcF90aW1lX3Q7CisrCQlERVNfc2V0X3dlYWtfa2V5X2ZsYWc7CisrCQlERVNfY2hlY2tfa2V5OworKwkJREVTX3J3X21vZGU7CisrCQlSU0FfUEtDUzFfUlNBcmVmOworKwkJWDUwOV9rZXlpZF9zZXQxOworKwkJQklPX25leHQ7CisrCQlEU09fTUVUSE9EX3ZtczsKKysJCUJJT19mX2xpbmVidWZmZXI7CisrCQlCTl9ibnRlc3RfcmFuZDsKKysJCU9QRU5TU0xfaXNzZXR1Z2lkOworKwkJQk5fcmFuZF9yYW5nZTsKKysJCUVSUl9sb2FkX0VOR0lORV9zdHJpbmdzOworKwkJRU5HSU5FX3NldF9EU0E7CisrCQlFTkdJTkVfZ2V0X2ZpbmlzaF9mdW5jdGlvbjsKKysJCUVOR0lORV9nZXRfZGVmYXVsdF9SU0E7CisrCQlFTkdJTkVfZ2V0X0JOX21vZF9leHA7CisrCQlEU0FfZ2V0X2RlZmF1bHRfb3BlbnNzbF9tZXRob2Q7CisrCQlFTkdJTkVfc2V0X0RIOworKwkJRU5HSU5FX3NldF9kZWZfQk5fbW9kX2V4cF9jcnQ7CisrCQlFTkdJTkVfc2V0X2RlZmF1bHRfQk5fbW9kX2V4cF9jcnQ7CisrCQlFTkdJTkVfaW5pdDsKKysJCURIX2dldF9kZWZhdWx0X29wZW5zc2xfbWV0aG9kOworKwkJUlNBX3NldF9kZWZhdWx0X29wZW5zc2xfbWV0aG9kOworKwkJRU5HSU5FX2ZpbmlzaDsKKysJCUVOR0lORV9sb2FkX3B1YmxpY19rZXk7CisrCQlFTkdJTkVfZ2V0X0RIOworKwkJRU5HSU5FX2N0cmw7CisrCQlFTkdJTkVfZ2V0X2luaXRfZnVuY3Rpb247CisrCQlFTkdJTkVfc2V0X2luaXRfZnVuY3Rpb247CisrCQlFTkdJTkVfc2V0X2RlZmF1bHRfRFNBOworKwkJRU5HSU5FX2dldF9uYW1lOworKwkJRU5HSU5FX2dldF9sYXN0OworKwkJRU5HSU5FX2dldF9wcmV2OworKwkJRU5HSU5FX2dldF9kZWZhdWx0X0RIOworKwkJRU5HSU5FX2dldF9SU0E7CisrCQlFTkdJTkVfc2V0X2RlZmF1bHQ7CisrCQlFTkdJTkVfZ2V0X1JBTkQ7CisrCQlFTkdJTkVfZ2V0X2ZpcnN0OworKwkJRU5HSU5FX2J5X2lkOworKwkJRU5HSU5FX3NldF9maW5pc2hfZnVuY3Rpb247CisrCQlFTkdJTkVfZ2V0X2RlZl9CTl9tb2RfZXhwX2NydDsKKysJCUVOR0lORV9nZXRfZGVmYXVsdF9CTl9tb2RfZXhwX2NydDsKKysJCVJTQV9nZXRfZGVmYXVsdF9vcGVuc3NsX21ldGhvZDsKKysJCUVOR0lORV9zZXRfUlNBOworKwkJRU5HSU5FX2xvYWRfcHJpdmF0ZV9rZXk7CisrCQlFTkdJTkVfc2V0X2RlZmF1bHRfUkFORDsKKysJCUVOR0lORV9zZXRfQk5fbW9kX2V4cDsKKysJCUVOR0lORV9yZW1vdmU7CisrCQlFTkdJTkVfZnJlZTsKKysJCUVOR0lORV9nZXRfQk5fbW9kX2V4cF9jcnQ7CisrCQlFTkdJTkVfZ2V0X25leHQ7CisrCQlFTkdJTkVfc2V0X25hbWU7CisrCQlFTkdJTkVfZ2V0X2RlZmF1bHRfRFNBOworKwkJRU5HSU5FX3NldF9kZWZhdWx0X0JOX21vZF9leHA7CisrCQlFTkdJTkVfc2V0X2RlZmF1bHRfUlNBOworKwkJRU5HSU5FX2dldF9kZWZhdWx0X1JBTkQ7CisrCQlFTkdJTkVfZ2V0X2RlZmF1bHRfQk5fbW9kX2V4cDsKKysJCUVOR0lORV9zZXRfUkFORDsKKysJCUVOR0lORV9zZXRfaWQ7CisrCQlFTkdJTkVfc2V0X0JOX21vZF9leHBfY3J0OworKwkJRU5HSU5FX3NldF9kZWZhdWx0X0RIOworKwkJRU5HSU5FX25ldzsKKysJCUVOR0lORV9nZXRfaWQ7CisrCQlEU0Ffc2V0X2RlZmF1bHRfb3BlbnNzbF9tZXRob2Q7CisrCQlFTkdJTkVfYWRkOworKwkJREhfc2V0X2RlZmF1bHRfb3BlbnNzbF9tZXRob2Q7CisrCQlFTkdJTkVfZ2V0X0RTQTsKKysJCUVOR0lORV9nZXRfY3RybF9mdW5jdGlvbjsKKysJCUVOR0lORV9zZXRfY3RybF9mdW5jdGlvbjsKKysJCUJOX3BzZXVkb19yYW5kX3JhbmdlOworKwkJWDUwOV9TVE9SRV9DVFhfc2V0X3ZlcmlmeV9jYjsKKysJCUVSUl9sb2FkX0NPTVBfc3RyaW5nczsKKysJCVBLQ1MxMl9pdGVtX2RlY3J5cHRfZDJpOworKwkJQVNOMV9VVEY4U1RSSU5HX2l0OworKwkJRU5HSU5FX3VucmVnaXN0ZXJfY2lwaGVyczsKKysJCUVOR0lORV9nZXRfY2lwaGVyczsKKysJCWQyaV9PQ1NQX0JBU0lDUkVTUDsKKysJCUtSQjVfQ0hFQ0tTVU1faXQ7CisrCQlFQ19QT0lOVF9hZGQ7CisrCQlBU04xX2l0ZW1fZXhfaTJkOworKwkJT0NTUF9DRVJUSURfaXQ7CisrCQlkMmlfT0NTUF9SRVNQQllURVM7CisrCQlYNTA5VjNfYWRkMV9pMmQ7CisrCQlQS0NTN19FTlZFTE9QRV9pdDsKKysJCVVJX2FkZF9pbnB1dF9ib29sZWFuOworKwkJRU5HSU5FX3VucmVnaXN0ZXJfUlNBOworKwkJWDUwOVYzX0VYVF9uY29uZjsKKysJCUFTTjFfR0VORVJBTFNUUklOR19mcmVlOworKwkJZDJpX09DU1BfQ0VSVFNUQVRVUzsKKysJCVg1MDlfUkVWT0tFRF9zZXRfc2VyaWFsTnVtYmVyOworKwkJWDUwOV9wcmludF9leDsKKysJCU9DU1BfT05FUkVRX2dldDFfZXh0X2QyaTsKKysJCUVOR0lORV9yZWdpc3Rlcl9hbGxfUkFORDsKKysJCUVOR0lORV9sb2FkX2R5bmFtaWM7CisrCQlQQktERjJQQVJBTV9pdDsKKysJCUVYVEVOREVEX0tFWV9VU0FHRV9uZXc7CisrCQlFQ19HUk9VUF9jbGVhcl9mcmVlOworKwkJT0NTUF9zZW5kcmVxX2JpbzsKKysJCUFTTjFfaXRlbV9kaWdlc3Q7CisrCQlPQ1NQX0JBU0lDUkVTUF9kZWxldGVfZXh0OworKwkJT0NTUF9TSUdOQVRVUkVfaXQ7CisrCQlYNTA5X0NSTF9pdDsKKysJCU9DU1BfQkFTSUNSRVNQX2FkZF9leHQ7CisrCQlLUkI1X0VOQ0tFWV9pdDsKKysJCVVJX21ldGhvZF9zZXRfY2xvc2VyOworKwkJWDUwOV9TVE9SRV9zZXRfcHVycG9zZTsKKysJCWkyZF9BU04xX0dFTkVSQUxTVFJJTkc7CisrCQlPQ1NQX3Jlc3BvbnNlX3N0YXR1czsKKysJCWkyZF9PQ1NQX1NFUlZJQ0VMT0M7CisrCQlFTkdJTkVfZ2V0X2RpZ2VzdF9lbmdpbmU7CisrCQlFQ19HUk9VUF9zZXRfY3VydmVfR0ZwOworKwkJT0NTUF9SRVFVRVNUX2dldF9leHRfYnlfT0JKOworKwkJX29zc2xfb2xkX2Rlc19yYW5kb21fa2V5OworKwkJQVNOMV9UNjFTVFJJTkdfaXQ7CisrCQlFQ19HUk9VUF9tZXRob2Rfb2Y7CisrCQlpMmRfS1JCNV9BUFJFUTsKKysJCV9vc3NsX29sZF9kZXNfZW5jcnlwdDsKKysJCUFTTjFfUFJJTlRBQkxFX25ldzsKKysJCUhNQUNfSW5pdF9leDsKKysJCWQyaV9LUkI1X0FVVEhFTlQ7CisrCQlPQ1NQX2FyY2hpdmVfY3V0b2ZmX25ldzsKKysJCUVDX1BPSU5UX3NldF9KcHJvamVjdGl2ZV9jb29yZGluYXRlc19HRnA7CisrCQlFQ19QT0lOVF9zZXRfSnByb2pfY29vcmRzX0dGcDsKKysJCV9vc3NsX29sZF9kZXNfaXNfd2Vha19rZXk7CisrCQlPQ1NQX0JBU0lDUkVTUF9nZXRfZXh0X2J5X09CSjsKKysJCUVDX1BPSU5UX29jdDJwb2ludDsKKysJCU9DU1BfU0lOR0xFUkVTUF9nZXRfZXh0X2NvdW50OworKwkJVUlfY3RybDsKKysJCV9zaGFkb3dfREVTX3J3X21vZGU7CisrCQlhc24xX2RvX2FkYjsKKysJCUFTTjFfdGVtcGxhdGVfaTJkOworKwkJRU5HSU5FX3JlZ2lzdGVyX0RIOworKwkJVUlfY29uc3RydWN0X3Byb21wdDsKKysJCVg1MDlfU1RPUkVfc2V0X3RydXN0OworKwkJVUlfZHVwX2lucHV0X3N0cmluZzsKKysJCWQyaV9LUkI1X0FQUkVROworKwkJRVZQX01EX0NUWF9jb3B5X2V4OworKwkJT0NTUF9yZXF1ZXN0X2lzX3NpZ25lZDsKKysJCWkyZF9PQ1NQX1JFUUlORk87CisrCQlLUkI1X0VOQ0tFWV9mcmVlOworKwkJT0NTUF9yZXNwX2dldDA7CisrCQlHRU5FUkFMX05BTUVfaXQ7CisrCQlBU04xX0dFTkVSQUxJWkVEVElNRV9pdDsKKysJCVg1MDlfU1RPUkVfc2V0X2ZsYWdzOworKwkJRUNfUE9JTlRfc2V0X2NvbXByZXNzZWRfY29vcmRpbmF0ZXNfR0ZwOworKwkJRUNfUE9JTlRfc2V0X2NvbXByX2Nvb3Jkc19HRnA7CisrCQlPQ1NQX3Jlc3BvbnNlX3N0YXR1c19zdHI7CisrCQlkMmlfT0NTUF9SRVZPS0VESU5GTzsKKysJCU9DU1BfYmFzaWNfYWRkMV9jZXJ0OworKwkJRVJSX2dldF9pbXBsZW1lbnRhdGlvbjsKKysJCUVWUF9DaXBoZXJGaW5hbF9leDsKKysJCU9DU1BfQ0VSVFNUQVRVU19uZXc7CisrCQlDUllQVE9fY2xlYW51cF9hbGxfZXhfZGF0YTsKKysJCU9DU1BfcmVzcF9maW5kOworKwkJQk5fbm5tb2Q7CisrCQlYNTA5X0NSTF9zb3J0OworKwkJWDUwOV9SRVZPS0VEX3NldF9yZXZvY2F0aW9uRGF0ZTsKKysJCUVOR0lORV9yZWdpc3Rlcl9SQU5EOworKwkJT0NTUF9TRVJWSUNFTE9DX25ldzsKKysJCUVDX1BPSU5UX3NldF9hZmZpbmVfY29vcmRpbmF0ZXNfR0ZwOworKwkJRUNfUE9JTlRfc2V0X2FmZmluZV9jb29yZHNfR0ZwOworKwkJX29zc2xfb2xkX2Rlc19vcHRpb25zOworKwkJU1hORVRfaXQ7CisrCQlVSV9kdXBfaW5wdXRfYm9vbGVhbjsKKysJCVBLQ1MxMl9hZGRfQ1NQTmFtZV9hc2M7CisrCQlFQ19QT0lOVF9pc19hdF9pbmZpbml0eTsKKysJCUVOR0lORV9sb2FkX2NyeXB0b2RldjsKKysJCURTT19jb252ZXJ0X2ZpbGVuYW1lOworKwkJUE9MSUNZUVVBTElORk9faXQ7CisrCQlFTkdJTkVfcmVnaXN0ZXJfY2lwaGVyczsKKysJCUJOX21vZF9sc2hpZnRfcXVpY2s7CisrCQlEU09fc2V0X2ZpbGVuYW1lOworKwkJQVNOMV9pdGVtX2ZyZWU7CisrCQlLUkI1X1RLVEJPRFlfZnJlZTsKKysJCUFVVEhPUklUWV9LRVlJRF9pdDsKKysJCUtSQjVfQVBSRVFCT0RZX25ldzsKKysJCVg1MDlWM19FWFRfUkVRX2FkZF9uY29uZjsKKysJCUVOR0lORV9jdHJsX2NtZF9zdHJpbmc7CisrCQlpMmRfT0NTUF9SRVNQREFUQTsKKysJCUVWUF9NRF9DVFhfaW5pdDsKKysJCUVYVEVOREVEX0tFWV9VU0FHRV9mcmVlOworKwkJUEtDUzdfQVRUUl9TSUdOX2l0OworKwkJVUlfYWRkX2Vycm9yX3N0cmluZzsKKysJCUtSQjVfQ0hFQ0tTVU1fZnJlZTsKKysJCU9DU1BfUkVRVUVTVF9nZXRfZXh0OworKwkJRU5HSU5FX2xvYWRfdWJzZWM7CisrCQlFTkdJTkVfcmVnaXN0ZXJfYWxsX2RpZ2VzdHM7CisrCQlQS0VZX1VTQUdFX1BFUklPRF9pdDsKKysJCVBLQ1MxMl91bnBhY2tfYXV0aHNhZmVzOworKwkJQVNOMV9pdGVtX3VucGFjazsKKysJCU5FVFNDQVBFX1NQS0FDX2l0OworKwkJWDUwOV9SRVZPS0VEX2l0OworKwkJQVNOMV9TVFJJTkdfZW5jb2RlOworKwkJRVZQX2Flc18xMjhfZWNiOworKwkJS1JCNV9BVVRIRU5UX2ZyZWU7CisrCQlPQ1NQX0JBU0lDUkVTUF9nZXRfZXh0X2J5X2NyaXRpY2FsOworKwkJT0NTUF9CQVNJQ1JFU1BfZ2V0X2V4dF9ieV9jcml0OworKwkJT0NTUF9jZXJ0X3N0YXR1c19zdHI7CisrCQlkMmlfT0NTUF9SRVFVRVNUOworKwkJVUlfZHVwX2luZm9fc3RyaW5nOworKwkJX29zc2xfb2xkX2Rlc194d2hpdGVfaW4yb3V0OworKwkJUEtDUzEyX2l0OworKwkJT0NTUF9TSU5HTEVSRVNQX2dldF9leHRfYnlfY3JpdGljYWw7CisrCQlPQ1NQX1NJTkdMRVJFU1BfZ2V0X2V4dF9ieV9jcml0OworKwkJT0NTUF9DRVJUU1RBVFVTX2ZyZWU7CisrCQlfb3NzbF9vbGRfZGVzX2NyeXB0OworKwkJQVNOMV9pdGVtX2kyZDsKKysJCUVWUF9EZWNyeXB0RmluYWxfZXg7CisrCQlFTkdJTkVfbG9hZF9vcGVuc3NsOworKwkJRU5HSU5FX2dldF9jbWRfZGVmbnM7CisrCQlFTkdJTkVfc2V0X2xvYWRfcHJpdmtleV9mdW5jdGlvbjsKKysJCUVOR0lORV9zZXRfbG9hZF9wcml2a2V5X2ZuOworKwkJRVZQX0VuY3J5cHRGaW5hbF9leDsKKysJCUVOR0lORV9zZXRfZGVmYXVsdF9kaWdlc3RzOworKwkJWDUwOV9nZXQwX3B1YmtleV9iaXRzdHI7CisrCQlhc24xX2V4X2kyYzsKKysJCUVOR0lORV9yZWdpc3Rlcl9SU0E7CisrCQlFTkdJTkVfdW5yZWdpc3Rlcl9EU0E7CisrCQlfb3NzbF9vbGRfZGVzX2tleV9zY2hlZDsKKysJCVg1MDlfRVhURU5TSU9OX2l0OworKwkJaTJkX0tSQjVfQVVUSEVOVDsKKysJCVNYTkVUSURfaXQ7CisrCQlkMmlfT0NTUF9TSU5HTEVSRVNQOworKwkJRURJUEFSVFlOQU1FX25ldzsKKysJCVBLQ1MxMl9jZXJ0YmFnMng1MDk7CisrCQlfb3NzbF9vbGRfZGVzX29mYjY0X2VuY3J5cHQ7CisrCQlkMmlfRVhURU5ERURfS0VZX1VTQUdFOworKwkJRVJSX3ByaW50X2Vycm9yc19jYjsKKysJCUVOR0lORV9zZXRfY2lwaGVyczsKKysJCWQyaV9LUkI1X0FQUkVRQk9EWTsKKysJCVVJX21ldGhvZF9nZXRfZmx1c2hlcjsKKysJCVg1MDlfUFVCS0VZX2l0OworKwkJX29zc2xfb2xkX2Rlc19lbmNfcmVhZDsKKysJCVBLQ1M3X0VOQ1JZUFRfaXQ7CisrCQlpMmRfT0NTUF9SRVNQT05TRTsKKysJCUVDX0dST1VQX2dldF9jb2ZhY3RvcjsKKysJCVBLQ1MxMl91bnBhY2tfcDdkYXRhOworKwkJZDJpX0tSQjVfQVVUSERBVEE7CisrCQlPQ1NQX2NvcHlfbm9uY2U7CisrCQlLUkI1X0FVVEhEQVRBX25ldzsKKysJCU9DU1BfUkVTUERBVEFfbmV3OworKwkJRUNfR0ZwX21vbnRfbWV0aG9kOworKwkJT0NTUF9SRVZPS0VESU5GT19mcmVlOworKwkJVUlfZ2V0X2V4X2RhdGE7CisrCQlLUkI1X0FQUkVRQk9EWV9mcmVlOworKwkJRUNfR1JPVVBfZ2V0MF9nZW5lcmF0b3I7CisrCQlVSV9nZXRfZGVmYXVsdF9tZXRob2Q7CisrCQlYNTA5VjNfc2V0X25jb25mOworKwkJUEtDUzEyX2l0ZW1faTJkX2VuY3J5cHQ7CisrCQlYNTA5X2FkZDFfZXh0X2kyZDsKKysJCVBLQ1M3X1NJR05FUl9JTkZPX2l0OworKwkJS1JCNV9QUklOQ05BTUVfbmV3OworKwkJUEtDUzEyX1NBRkVCQUdfaXQ7CisrCQlFQ19HUk9VUF9nZXRfb3JkZXI7CisrCQlkMmlfT0NTUF9SRVNQSUQ7CisrCQlPQ1NQX3JlcXVlc3RfdmVyaWZ5OworKwkJTkNPTkZfZ2V0X251bWJlcl9lOworKwkJX29zc2xfb2xkX2Rlc19kZWNyeXB0MzsKKysJCVg1MDlfc2lnbmF0dXJlX3ByaW50OworKwkJT0NTUF9TSU5HTEVSRVNQX2ZyZWU7CisrCQlFTkdJTkVfbG9hZF9idWlsdGluX2VuZ2luZXM7CisrCQlpMmRfT0NTUF9PTkVSRVE7CisrCQlPQ1NQX1JFUVVFU1RfYWRkX2V4dDsKKysJCU9DU1BfUkVTUEJZVEVTX25ldzsKKysJCUVWUF9NRF9DVFhfY3JlYXRlOworKwkJT0NTUF9yZXNwX2ZpbmRfc3RhdHVzOworKwkJWDUwOV9BTEdPUl9pdDsKKysJCUFTTjFfVElNRV9pdDsKKysJCU9DU1BfcmVxdWVzdF9zZXQxX25hbWU7CisrCQlPQ1NQX09ORVJFUV9nZXRfZXh0X2NvdW50OworKwkJVUlfZ2V0MF9yZXN1bHQ7CisrCQlQS0NTMTJfQVVUSFNBRkVTX2l0OworKwkJRVZQX2Flc18yNTZfZWNiOworKwkJUEtDUzEyX3BhY2tfYXV0aHNhZmVzOworKwkJQVNOMV9JQTVTVFJJTkdfaXQ7CisrCQlVSV9nZXRfaW5wdXRfZmxhZ3M7CisrCQlFQ19HUk9VUF9zZXRfZ2VuZXJhdG9yOworKwkJX29zc2xfb2xkX2Rlc19zdHJpbmdfdG9fMmtleXM7CisrCQlPQ1NQX0NFUlRJRF9mcmVlOworKwkJWDUwOV9DRVJUX0FVWF9pdDsKKysJCUNFUlRJRklDQVRFUE9MSUNJRVNfaXQ7CisrCQlfb3NzbF9vbGRfZGVzX2VkZTNfY2JjX2VuY3J5cHQ7CisrCQlSQU5EX3NldF9yYW5kX2VuZ2luZTsKKysJCURTT19nZXRfbG9hZGVkX2ZpbGVuYW1lOworKwkJWDUwOV9BVFRSSUJVVEVfaXQ7CisrCQlPQ1NQX09ORVJFUV9nZXRfZXh0X2J5X05JRDsKKysJCVBLQ1MxMl9kZWNyeXB0X3NrZXk7CisrCQlLUkI1X0FVVEhFTlRfaXQ7CisrCQlVSV9kdXBfZXJyb3Jfc3RyaW5nOworKwkJUlNBUHVibGljS2V5X2l0OworKwkJaTJkX09DU1BfUkVRVUVTVDsKKysJCVBLQ1MxMl94NTA5Y3JsMmNlcnRiYWc7CisrCQlPQ1NQX1NFUlZJQ0VMT0NfaXQ7CisrCQlBU04xX2l0ZW1fc2lnbjsKKysJCVg1MDlfQ1JMX3NldF9pc3N1ZXJfbmFtZTsKKysJCU9CSl9OQU1FX2RvX2FsbF9zb3J0ZWQ7CisrCQlpMmRfT0NTUF9CQVNJQ1JFU1A7CisrCQlpMmRfT0NTUF9SRVNQQllURVM7CisrCQlQS0NTMTJfdW5wYWNrX3A3ZW5jZGF0YTsKKysJCUhNQUNfQ1RYX2luaXQ7CisrCQlFTkdJTkVfZ2V0X2RpZ2VzdDsKKysJCU9DU1BfUkVTUE9OU0VfcHJpbnQ7CisrCQlLUkI1X1RLVEJPRFlfaXQ7CisrCQlBQ0NFU1NfREVTQ1JJUFRJT05faXQ7CisrCQlQS0NTN19JU1NVRVJfQU5EX1NFUklBTF9pdDsKKysJCVBCRTJQQVJBTV9pdDsKKysJCVBLQ1MxMl9jZXJ0YmFnMng1MDljcmw7CisrCQlQS0NTN19TSUdORURfaXQ7CisrCQlFTkdJTkVfZ2V0X2NpcGhlcjsKKysJCWkyZF9PQ1NQX0NSTElEOworKwkJT0NTUF9TSU5HTEVSRVNQX25ldzsKKysJCUVOR0lORV9jbWRfaXNfZXhlY3V0YWJsZTsKKysJCVJTQV91cF9yZWY7CisrCQlBU04xX0dFTkVSQUxTVFJJTkdfaXQ7CisrCQlFTkdJTkVfcmVnaXN0ZXJfRFNBOworKwkJWDUwOVYzX0VYVF9hZGRfbmNvbmZfc2s7CisrCQlFTkdJTkVfc2V0X2xvYWRfcHVia2V5X2Z1bmN0aW9uOworKwkJUEtDUzhfZGVjcnlwdDsKKysJCVBFTV9ieXRlc19yZWFkX2JpbzsKKysJCURJUkVDVE9SWVNUUklOR19pdDsKKysJCWQyaV9PQ1NQX0NSTElEOworKwkJRUNfUE9JTlRfaXNfb25fY3VydmU7CisrCQlDUllQVE9fc2V0X2xvY2tlZF9tZW1fZXhfZnVuY3Rpb25zOworKwkJQ1JZUFRPX3NldF9sb2NrZWRfbWVtX2V4X2Z1bmNzOworKwkJZDJpX0tSQjVfQ0hFQ0tTVU07CisrCQlBU04xX2l0ZW1fZHVwOworKwkJWDUwOV9pdDsKKysJCUJOX21vZF9hZGQ7CisrCQlLUkI1X0FVVEhEQVRBX2ZyZWU7CisrCQlfb3NzbF9vbGRfZGVzX2NiY19ja3N1bTsKKysJCUFTTjFfaXRlbV92ZXJpZnk7CisrCQlDUllQVE9fc2V0X21lbV9leF9mdW5jdGlvbnM7CisrCQlFQ19QT0lOVF9nZXRfSnByb2plY3RpdmVfY29vcmRpbmF0ZXNfR0ZwOworKwkJRUNfUE9JTlRfZ2V0X0pwcm9qX2Nvb3Jkc19HRnA7CisrCQlaTE9OR19pdDsKKysJCUNSWVBUT19nZXRfbG9ja2VkX21lbV9leF9mdW5jdGlvbnM7CisrCQlDUllQVE9fZ2V0X2xvY2tlZF9tZW1fZXhfZnVuY3M7CisrCQlBU04xX1RJTUVfY2hlY2s7CisrCQlVSV9nZXQwX3VzZXJfZGF0YTsKKysJCUhNQUNfQ1RYX2NsZWFudXA7CisrCQlEU0FfdXBfcmVmOworKwkJX29zc2xfb2xkX2Rlc19lZGUzX2NmYjY0X2VuY3J5cHQ7CisrCQlfb3NzbF9vZGVzX2VkZTNfY2ZiNjRfZW5jcnlwdDsKKysJCUFTTjFfQk1QU1RSSU5HX2l0OworKwkJQVNOMV90YWcyYml0OworKwkJVUlfbWV0aG9kX3NldF9mbHVzaGVyOworKwkJWDUwOV9vY3NwaWRfcHJpbnQ7CisrCQlLUkI1X0VOQ0RBVEFfaXQ7CisrCQlFTkdJTkVfZ2V0X2xvYWRfcHVia2V5X2Z1bmN0aW9uOworKwkJVUlfYWRkX3VzZXJfZGF0YTsKKysJCU9DU1BfUkVRVUVTVF9kZWxldGVfZXh0OworKwkJVUlfZ2V0X21ldGhvZDsKKysJCU9DU1BfT05FUkVRX2ZyZWU7CisrCQlBU04xX1BSSU5UQUJMRVNUUklOR19pdDsKKysJCVg1MDlfQ1JMX3NldF9uZXh0VXBkYXRlOworKwkJT0NTUF9SRVFVRVNUX2l0OworKwkJT0NTUF9CQVNJQ1JFU1BfaXQ7CisrCQlBRVNfZWNiX2VuY3J5cHQ7CisrCQlCTl9tb2Rfc3FyOworKwkJTkVUU0NBUEVfQ0VSVF9TRVFVRU5DRV9pdDsKKysJCUdFTkVSQUxfTkFNRVNfaXQ7CisrCQlBVVRIT1JJVFlfSU5GT19BQ0NFU1NfaXQ7CisrCQlBU04xX0ZCT09MRUFOX2l0OworKwkJVUlfc2V0X2V4X2RhdGE7CisrCQlfb3NzbF9vbGRfZGVzX3N0cmluZ190b19rZXk7CisrCQlFTkdJTkVfcmVnaXN0ZXJfYWxsX1JTQTsKKysJCWQyaV9LUkI1X1BSSU5DTkFNRTsKKysJCU9DU1BfUkVTUEJZVEVTX2l0OworKwkJWDUwOV9DSU5GX2l0OworKwkJRU5HSU5FX3VucmVnaXN0ZXJfZGlnZXN0czsKKysJCWQyaV9FRElQQVJUWU5BTUU7CisrCQlkMmlfT0NTUF9TRVJWSUNFTE9DOworKwkJRU5HSU5FX2dldF9kaWdlc3RzOworKwkJX29zc2xfb2xkX2Rlc19zZXRfb2RkX3Bhcml0eTsKKysJCU9DU1BfUkVTUERBVEFfZnJlZTsKKysJCWQyaV9LUkI1X1RJQ0tFVDsKKysJCU9USEVSTkFNRV9pdDsKKysJCUVWUF9NRF9DVFhfY2xlYW51cDsKKysJCWQyaV9BU04xX0dFTkVSQUxTVFJJTkc7CisrCQlYNTA5X0NSTF9zZXRfdmVyc2lvbjsKKysJCUJOX21vZF9zdWI7CisrCQlPQ1NQX1NJTkdMRVJFU1BfZ2V0X2V4dF9ieV9OSUQ7CisrCQlFTkdJTkVfZ2V0X2V4X25ld19pbmRleDsKKysJCU9DU1BfUkVRVUVTVF9mcmVlOworKwkJT0NTUF9SRVFVRVNUX2FkZDFfZXh0X2kyZDsKKysJCVg1MDlfVkFMX2l0OworKwkJRUNfUE9JTlRzX21ha2VfYWZmaW5lOworKwkJRUNfUE9JTlRfbXVsOworKwkJWDUwOVYzX0VYVF9hZGRfbmNvbmY7CisrCQlYNTA5X1RSVVNUX3NldDsKKysJCVg1MDlfQ1JMX2FkZDFfZXh0X2kyZDsKKysJCV9vc3NsX29sZF9kZXNfZmNyeXB0OworKwkJRElTUExBWVRFWFRfaXQ7CisrCQlYNTA5X0NSTF9zZXRfbGFzdFVwZGF0ZTsKKysJCU9DU1BfQkFTSUNSRVNQX2ZyZWU7CisrCQlPQ1NQX0JBU0lDUkVTUF9hZGQxX2V4dF9pMmQ7CisrCQlkMmlfS1JCNV9BVVRIRU5UQk9EWTsKKysJCUNSWVBUT19zZXRfZXhfZGF0YV9pbXBsZW1lbnRhdGlvbjsKKysJCUNSWVBUT19zZXRfZXhfZGF0YV9pbXBsOworKwkJS1JCNV9FTkNEQVRBX25ldzsKKysJCURTT191cF9yZWY7CisrCQlPQ1NQX2NybF9yZWFzb25fc3RyOworKwkJVUlfZ2V0MF9yZXN1bHRfc3RyaW5nOworKwkJQVNOMV9HRU5FUkFMU1RSSU5HX25ldzsKKysJCVg1MDlfU0lHX2l0OworKwkJRVJSX3NldF9pbXBsZW1lbnRhdGlvbjsKKysJCUVSUl9sb2FkX0VDX3N0cmluZ3M7CisrCQlVSV9nZXQwX2FjdGlvbl9zdHJpbmc7CisrCQlPQ1NQX09ORVJFUV9nZXRfZXh0OworKwkJRUNfUE9JTlRfbWV0aG9kX29mOworKwkJaTJkX0tSQjVfQVBSRVFCT0RZOworKwkJX29zc2xfb2xkX2Rlc19lY2IzX2VuY3J5cHQ7CisrCQlDUllQVE9fZ2V0X21lbV9leF9mdW5jdGlvbnM7CisrCQlFTkdJTkVfZ2V0X2V4X2RhdGE7CisrCQlVSV9kZXN0cm95X21ldGhvZDsKKysJCUFTTjFfaXRlbV9pMmRfYmlvOworKwkJT0NTUF9PTkVSRVFfZ2V0X2V4dF9ieV9PQko7CisrCQlBU04xX3ByaW1pdGl2ZV9uZXc7CisrCQlBU04xX1BSSU5UQUJMRV9pdDsKKysJCUVWUF9hZXNfMTkyX2VjYjsKKysJCU9DU1BfU0lHTkFUVVJFX25ldzsKKysJCUxPTkdfaXQ7CisrCQlBU04xX1ZJU0lCTEVTVFJJTkdfaXQ7CisrCQlPQ1NQX1NJTkdMRVJFU1BfYWRkMV9leHRfaTJkOworKwkJZDJpX09DU1BfQ0VSVElEOworKwkJQVNOMV9pdGVtX2QyaV9mcDsKKysJCUNSTF9ESVNUX1BPSU5UU19pdDsKKysJCUdFTkVSQUxfTkFNRV9wcmludDsKKysJCU9DU1BfU0lOR0xFUkVTUF9kZWxldGVfZXh0OworKwkJUEtDUzEyX1NBRkVCQUdTX2l0OworKwkJZDJpX09DU1BfU0lHTkFUVVJFOworKwkJT0NTUF9yZXF1ZXN0X2FkZDFfbm9uY2U7CisrCQlFTkdJTkVfc2V0X2NtZF9kZWZuczsKKysJCU9DU1BfU0VSVklDRUxPQ19mcmVlOworKwkJRUNfR1JPVVBfZnJlZTsKKysJCUFTTjFfQklUX1NUUklOR19pdDsKKysJCVg1MDlfUkVRX2l0OworKwkJX29zc2xfb2xkX2Rlc19jYmNfZW5jcnlwdDsKKysJCUVSUl91bmxvYWRfc3RyaW5nczsKKysJCVBLQ1M3X1NJR05fRU5WRUxPUEVfaXQ7CisrCQlFRElQQVJUWU5BTUVfZnJlZTsKKysJCU9DU1BfUkVRSU5GT19mcmVlOworKwkJRUNfR1JPVVBfbmV3X2N1cnZlX0dGcDsKKysJCU9DU1BfUkVRVUVTVF9nZXQxX2V4dF9kMmk7CisrCQlQS0NTMTJfaXRlbV9wYWNrX3NhZmViYWc7CisrCQlhc24xX2V4X2MyaTsKKysJCUVOR0lORV9yZWdpc3Rlcl9kaWdlc3RzOworKwkJaTJkX09DU1BfUkVWT0tFRElORk87CisrCQlhc24xX2VuY19yZXN0b3JlOworKwkJVUlfZnJlZTsKKysJCVVJX25ld19tZXRob2Q7CisrCQlFVlBfRW5jcnlwdEluaXRfZXg7CisrCQlYNTA5X3B1YmtleV9kaWdlc3Q7CisrCQlFQ19QT0lOVF9pbnZlcnQ7CisrCQlPQ1NQX2Jhc2ljX3NpZ247CisrCQlpMmRfT0NTUF9SRVNQSUQ7CisrCQlPQ1NQX2NoZWNrX25vbmNlOworKwkJRU5HSU5FX2N0cmxfY21kOworKwkJZDJpX0tSQjVfRU5DS0VZOworKwkJT0NTUF9wYXJzZV91cmw7CisrCQlPQ1NQX1NJTkdMRVJFU1BfZ2V0X2V4dDsKKysJCU9DU1BfQ1JMSURfZnJlZTsKKysJCU9DU1BfQkFTSUNSRVNQX2dldDFfZXh0X2QyaTsKKysJCVJTQVByaXZhdGVLZXlfaXQ7CisrCQlFTkdJTkVfcmVnaXN0ZXJfYWxsX0RIOworKwkJaTJkX0VESVBBUlRZTkFNRTsKKysJCUVDX1BPSU5UX2dldF9hZmZpbmVfY29vcmRpbmF0ZXNfR0ZwOworKwkJRUNfUE9JTlRfZ2V0X2FmZmluZV9jb29yZHNfR0ZwOworKwkJT0NTUF9DUkxJRF9uZXc7CisrCQlFTkdJTkVfZ2V0X2ZsYWdzOworKwkJT0NTUF9PTkVSRVFfaXQ7CisrCQlVSV9wcm9jZXNzOworKwkJQVNOMV9JTlRFR0VSX2l0OworKwkJRVZQX0NpcGhlckluaXRfZXg7CisrCQlVSV9nZXRfc3RyaW5nX3R5cGU7CisrCQlFTkdJTkVfdW5yZWdpc3Rlcl9ESDsKKysJCUVOR0lORV9yZWdpc3Rlcl9hbGxfRFNBOworKwkJT0NTUF9PTkVSRVFfZ2V0X2V4dF9ieV9jcml0aWNhbDsKKysJCWJuX2R1cF9leHBhbmQ7CisrCQlPQ1NQX2NlcnRfaWRfbmV3OworKwkJQkFTSUNfQ09OU1RSQUlOVFNfaXQ7CisrCQlCTl9tb2RfYWRkX3F1aWNrOworKwkJRUNfUE9JTlRfbmV3OworKwkJRVZQX01EX0NUWF9kZXN0cm95OworKwkJT0NTUF9SRVNQQllURVNfZnJlZTsKKysJCUVWUF9hZXNfMTI4X2NiYzsKKysJCU9DU1BfU0lOR0xFUkVTUF9nZXQxX2V4dF9kMmk7CisrCQlFQ19QT0lOVF9mcmVlOworKwkJREhfdXBfcmVmOworKwkJWDUwOV9OQU1FX0VOVFJZX2l0OworKwkJVUlfZ2V0X2V4X25ld19pbmRleDsKKysJCUJOX21vZF9zdWJfcXVpY2s7CisrCQlPQ1NQX09ORVJFUV9hZGRfZXh0OworKwkJT0NTUF9yZXF1ZXN0X3NpZ247CisrCQlFVlBfRGlnZXN0RmluYWxfZXg7CisrCQlFTkdJTkVfc2V0X2RpZ2VzdHM7CisrCQlPQ1NQX2lkX2lzc3Vlcl9jbXA7CisrCQlPQkpfTkFNRV9kb19hbGw7CisrCQlFQ19QT0lOVHNfbXVsOworKwkJRU5HSU5FX3JlZ2lzdGVyX2NvbXBsZXRlOworKwkJWDUwOVYzX0VYVF9uY29uZl9uaWQ7CisrCQlBU04xX1NFUVVFTkNFX2l0OworKwkJVUlfc2V0X2RlZmF1bHRfbWV0aG9kOworKwkJUkFORF9xdWVyeV9lZ2RfYnl0ZXM7CisrCQlVSV9tZXRob2RfZ2V0X3dyaXRlcjsKKysJCVVJX09wZW5TU0w7CisrCQlQRU1fZGVmX2NhbGxiYWNrOworKwkJRU5HSU5FX2NsZWFudXA7CisrCQlESVNUX1BPSU5UX2l0OworKwkJT0NTUF9TSU5HTEVSRVNQX2l0OworKwkJZDJpX0tSQjVfVEtUQk9EWTsKKysJCUVDX1BPSU5UX2NtcDsKKysJCU9DU1BfUkVWT0tFRElORk9fbmV3OworKwkJaTJkX09DU1BfQ0VSVFNUQVRVUzsKKysJCU9DU1BfYmFzaWNfYWRkMV9ub25jZTsKKysJCUFTTjFfaXRlbV9leF9kMmk7CisrCQlCTl9tb2RfbHNoaWZ0MV9xdWljazsKKysJCVVJX3NldF9tZXRob2Q7CisrCQlPQ1NQX2lkX2dldDBfaW5mbzsKKysJCUJOX21vZF9zcXJ0OworKwkJRUNfR1JPVVBfY29weTsKKysJCUtSQjVfRU5DREFUQV9mcmVlOworKwkJX29zc2xfb2xkX2Rlc19jZmJfZW5jcnlwdDsKKysJCU9DU1BfU0lOR0xFUkVTUF9nZXRfZXh0X2J5X09CSjsKKysJCU9DU1BfY2VydF90b19pZDsKKysJCU9DU1BfUkVTUElEX25ldzsKKysJCU9DU1BfUkVTUERBVEFfaXQ7CisrCQlkMmlfT0NTUF9SRVNQREFUQTsKKysJCUVOR0lORV9yZWdpc3Rlcl9hbGxfY29tcGxldGU7CisrCQlPQ1NQX2NoZWNrX3ZhbGlkaXR5OworKwkJUEtDUzEyX0JBR1NfaXQ7CisrCQlPQ1NQX3VybF9zdmNsb2NfbmV3OworKwkJQVNOMV90ZW1wbGF0ZV9mcmVlOworKwkJT0NTUF9TSU5HTEVSRVNQX2FkZF9leHQ7CisrCQlLUkI1X0FVVEhFTlRCT0RZX2l0OworKwkJWDUwOV9zdXBwb3J0ZWRfZXh0ZW5zaW9uOworKwkJaTJkX0tSQjVfQVVUSERBVEE7CisrCQlVSV9tZXRob2RfZ2V0X29wZW5lcjsKKysJCUVOR0lORV9zZXRfZXhfZGF0YTsKKysJCU9DU1BfUkVRVUVTVF9wcmludDsKKysJCUNCSUdOVU1faXQ7CisrCQlLUkI1X1RJQ0tFVF9uZXc7CisrCQlLUkI1X0FQUkVRX25ldzsKKysJCUVDX0dST1VQX2dldF9jdXJ2ZV9HRnA7CisrCQlLUkI1X0VOQ0tFWV9uZXc7CisrCQlBU04xX3RlbXBsYXRlX2QyaTsKKysJCV9vc3NsX29sZF9kZXNfcXVhZF9ja3N1bTsKKysJCU9DU1Bfc2luZ2xlX2dldDBfc3RhdHVzOworKwkJQk5fc3dhcDsKKysJCVBPTElDWUlORk9faXQ7CisrCQlFTkdJTkVfc2V0X2Rlc3Ryb3lfZnVuY3Rpb247CisrCQlhc24xX2VuY19mcmVlOworKwkJT0NTUF9SRVNQSURfaXQ7CisrCQlFQ19HUk9VUF9uZXc7CisrCQlFVlBfYWVzXzI1Nl9jYmM7CisrCQlpMmRfS1JCNV9QUklOQ05BTUU7CisrCQlfb3NzbF9vbGRfZGVzX2VuY3J5cHQyOworKwkJX29zc2xfb2xkX2Rlc19lbmNyeXB0MzsKKysJCVBLQ1M4X1BSSVZfS0VZX0lORk9faXQ7CisrCQlPQ1NQX1JFUUlORk9faXQ7CisrCQlQQkVQQVJBTV9pdDsKKysJCUtSQjVfQVVUSEVOVEJPRFlfbmV3OworKwkJWDUwOV9DUkxfYWRkMF9yZXZva2VkOworKwkJRURJUEFSVFlOQU1FX2l0OworKwkJTkVUU0NBUEVfU1BLSV9pdDsKKysJCVVJX2dldDBfdGVzdF9zdHJpbmc7CisrCQlFTkdJTkVfZ2V0X2NpcGhlcl9lbmdpbmU7CisrCQlFTkdJTkVfcmVnaXN0ZXJfYWxsX2NpcGhlcnM7CisrCQlFQ19QT0lOVF9jb3B5OworKwkJQk5fa3JvbmVja2VyOworKwkJX29zc2xfb2xkX2Rlc19lZGUzX29mYjY0X2VuY3J5cHQ7CisrCQlfb3NzbF9vZGVzX2VkZTNfb2ZiNjRfZW5jcnlwdDsKKysJCVVJX21ldGhvZF9nZXRfcmVhZGVyOworKwkJT0NTUF9CQVNJQ1JFU1BfZ2V0X2V4dF9jb3VudDsKKysJCUFTTjFfRU5VTUVSQVRFRF9pdDsKKysJCVVJX3NldF9yZXN1bHQ7CisrCQlpMmRfS1JCNV9USUNLRVQ7CisrCQlYNTA5X3ByaW50X2V4X2ZwOworKwkJRVZQX0NJUEhFUl9DVFhfc2V0X3BhZGRpbmc7CisrCQlkMmlfT0NTUF9SRVNQT05TRTsKKysJCUFTTjFfVVRDVElNRV9pdDsKKysJCV9vc3NsX29sZF9kZXNfZW5jX3dyaXRlOworKwkJT0NTUF9SRVNQT05TRV9uZXc7CisrCQlBRVNfc2V0X2VuY3J5cHRfa2V5OworKwkJT0NTUF9yZXNwX2NvdW50OworKwkJS1JCNV9DSEVDS1NVTV9uZXc7CisrCQlFTkdJTkVfbG9hZF9jc3dpZnQ7CisrCQlPQ1NQX29uZXJlcV9nZXQwX2lkOworKwkJRU5HSU5FX3NldF9kZWZhdWx0X2NpcGhlcnM7CisrCQlOT1RJQ0VSRUZfaXQ7CisrCQlYNTA5VjNfRVhUX0NSTF9hZGRfbmNvbmY7CisrCQlPQ1NQX1JFVk9LRURJTkZPX2l0OworKwkJQUVTX2VuY3J5cHQ7CisrCQlPQ1NQX1JFUVVFU1RfbmV3OworKwkJQVNOMV9BTllfaXQ7CisrCQlDUllQVE9fZXhfZGF0YV9uZXdfY2xhc3M7CisrCQlfb3NzbF9vbGRfZGVzX25jYmNfZW5jcnlwdDsKKysJCWkyZF9LUkI1X1RLVEJPRFk7CisrCQlFQ19QT0lOVF9jbGVhcl9mcmVlOworKwkJQUVTX2RlY3J5cHQ7CisrCQlhc24xX2VuY19pbml0OworKwkJVUlfZ2V0X3Jlc3VsdF9tYXhzaXplOworKwkJT0NTUF9DRVJUSURfbmV3OworKwkJRU5HSU5FX3VucmVnaXN0ZXJfUkFORDsKKysJCVVJX21ldGhvZF9nZXRfY2xvc2VyOworKwkJZDJpX0tSQjVfRU5DREFUQTsKKysJCU9DU1BfcmVxdWVzdF9vbmVyZXFfY291bnQ7CisrCQlPQ1NQX2Jhc2ljX3ZlcmlmeTsKKysJCUtSQjVfQVVUSEVOVEJPRFlfZnJlZTsKKysJCUFTTjFfaXRlbV9kMmk7CisrCQlBU04xX3ByaW1pdGl2ZV9mcmVlOworKwkJaTJkX0VYVEVOREVEX0tFWV9VU0FHRTsKKysJCWkyZF9PQ1NQX1NJR05BVFVSRTsKKysJCWFzbjFfZW5jX3NhdmU7CisrCQlFTkdJTkVfbG9hZF9udXJvbjsKKysJCV9vc3NsX29sZF9kZXNfcGNiY19lbmNyeXB0OworKwkJUEtDUzEyX01BQ19EQVRBX2l0OworKwkJT0NTUF9hY2NlcHRfcmVzcG9uc2VzX25ldzsKKysJCWFzbjFfZG9fbG9jazsKKysJCVBLQ1M3X0FUVFJfVkVSSUZZX2l0OworKwkJS1JCNV9BUFJFUUJPRFlfaXQ7CisrCQlpMmRfT0NTUF9TSU5HTEVSRVNQOworKwkJQVNOMV9pdGVtX2V4X25ldzsKKysJCVVJX2FkZF92ZXJpZnlfc3RyaW5nOworKwkJX29zc2xfb2xkX2Rlc19zZXRfa2V5OworKwkJS1JCNV9QUklOQ05BTUVfaXQ7CisrCQlFVlBfRGVjcnlwdEluaXRfZXg7CisrCQlpMmRfT0NTUF9DRVJUSUQ7CisrCQlBU04xX2l0ZW1fZDJpX2JpbzsKKysJCUVDX1BPSU5UX2RibDsKKysJCWFzbjFfZ2V0X2Nob2ljZV9zZWxlY3RvcjsKKysJCWkyZF9LUkI1X0NIRUNLU1VNOworKwkJRU5HSU5FX3NldF90YWJsZV9mbGFnczsKKysJCUFFU19vcHRpb25zOworKwkJRU5HSU5FX2xvYWRfY2hpbDsKKysJCU9DU1BfaWRfY21wOworKwkJT0NTUF9CQVNJQ1JFU1BfbmV3OworKwkJT0NTUF9SRVFVRVNUX2dldF9leHRfYnlfTklEOworKwkJS1JCNV9BUFJFUV9pdDsKKysJCUVOR0lORV9nZXRfZGVzdHJveV9mdW5jdGlvbjsKKysJCUNPTkZfc2V0X25jb25mOworKwkJQVNOMV9QUklOVEFCTEVfZnJlZTsKKysJCU9DU1BfQkFTSUNSRVNQX2dldF9leHRfYnlfTklEOworKwkJRElTVF9QT0lOVF9OQU1FX2l0OworKwkJWDUwOVYzX2V4dGVuc2lvbnNfcHJpbnQ7CisrCQlfb3NzbF9vbGRfZGVzX2NmYjY0X2VuY3J5cHQ7CisrCQlYNTA5X1JFVk9LRURfYWRkMV9leHRfaTJkOworKwkJX29zc2xfb2xkX2Rlc19vZmJfZW5jcnlwdDsKKysJCUtSQjVfVEtUQk9EWV9uZXc7CisrCQlBU04xX09DVEVUX1NUUklOR19pdDsKKysJCUVSUl9sb2FkX1VJX3N0cmluZ3M7CisrCQlpMmRfS1JCNV9FTkNLRVk7CisrCQlBU04xX3RlbXBsYXRlX25ldzsKKysJCU9DU1BfU0lHTkFUVVJFX2ZyZWU7CisrCQlBU04xX2l0ZW1faTJkX2ZwOworKwkJS1JCNV9QUklOQ05BTUVfZnJlZTsKKysJCVBLQ1M3X1JFQ0lQX0lORk9faXQ7CisrCQlFWFRFTkRFRF9LRVlfVVNBR0VfaXQ7CisrCQlFQ19HRnBfc2ltcGxlX21ldGhvZDsKKysJCUVDX0dST1VQX3ByZWNvbXB1dGVfbXVsdDsKKysJCU9DU1BfcmVxdWVzdF9vbmVyZXFfZ2V0MDsKKysJCVVJX21ldGhvZF9zZXRfd3JpdGVyOworKwkJS1JCNV9BVVRIRU5UX25ldzsKKysJCVg1MDlfQ1JMX0lORk9faXQ7CisrCQlEU09fc2V0X25hbWVfY29udmVydGVyOworKwkJQUVTX3NldF9kZWNyeXB0X2tleTsKKysJCVBLQ1M3X0RJR0VTVF9pdDsKKysJCVBLQ1MxMl94NTA5MmNlcnRiYWc7CisrCQlFVlBfRGlnZXN0SW5pdF9leDsKKysJCWkyYV9BQ0NFU1NfREVTQ1JJUFRJT047CisrCQlPQ1NQX1JFU1BPTlNFX2l0OworKwkJUEtDUzdfRU5DX0NPTlRFTlRfaXQ7CisrCQlPQ1NQX3JlcXVlc3RfYWRkMF9pZDsKKysJCUVDX1BPSU5UX21ha2VfYWZmaW5lOworKwkJRFNPX2dldF9maWxlbmFtZTsKKysJCU9DU1BfQ0VSVFNUQVRVU19pdDsKKysJCU9DU1BfcmVxdWVzdF9hZGQxX2NlcnQ7CisrCQlVSV9nZXQwX291dHB1dF9zdHJpbmc7CisrCQlVSV9kdXBfdmVyaWZ5X3N0cmluZzsKKysJCUJOX21vZF9sc2hpZnQ7CisrCQlLUkI1X0FVVEhEQVRBX2l0OworKwkJYXNuMV9zZXRfY2hvaWNlX3NlbGVjdG9yOworKwkJT0NTUF9iYXNpY19hZGQxX3N0YXR1czsKKysJCU9DU1BfUkVTUElEX2ZyZWU7CisrCQlhc24xX2dldF9maWVsZF9wdHI7CisrCQlVSV9hZGRfaW5wdXRfc3RyaW5nOworKwkJT0NTUF9DUkxJRF9pdDsKKysJCWkyZF9LUkI1X0FVVEhFTlRCT0RZOworKwkJT0NTUF9SRVFVRVNUX2dldF9leHRfY291bnQ7CisrCQlFTkdJTkVfbG9hZF9hdGFsbGE7CisrCQlYNTA5X05BTUVfaXQ7CisrCQlVU0VSTk9USUNFX2l0OworKwkJT0NTUF9SRVFJTkZPX25ldzsKKysJCU9DU1BfQkFTSUNSRVNQX2dldF9leHQ7CisrCQlDUllQVE9fZ2V0X2V4X2RhdGFfaW1wbGVtZW50YXRpb247CisrCQlDUllQVE9fZ2V0X2V4X2RhdGFfaW1wbDsKKysJCUFTTjFfaXRlbV9wYWNrOworKwkJaTJkX0tSQjVfRU5DREFUQTsKKysJCVg1MDlfUFVSUE9TRV9zZXQ7CisrCQlYNTA5X1JFUV9JTkZPX2l0OworKwkJVUlfbWV0aG9kX3NldF9vcGVuZXI7CisrCQlBU04xX2l0ZW1fZXhfZnJlZTsKKysJCUFTTjFfQk9PTEVBTl9pdDsKKysJCUVOR0lORV9nZXRfdGFibGVfZmxhZ3M7CisrCQlVSV9jcmVhdGVfbWV0aG9kOworKwkJT0NTUF9PTkVSRVFfYWRkMV9leHRfaTJkOworKwkJX3NoYWRvd19ERVNfY2hlY2tfa2V5OworKwkJZDJpX09DU1BfUkVRSU5GTzsKKysJCVVJX2FkZF9pbmZvX3N0cmluZzsKKysJCVVJX2dldF9yZXN1bHRfbWluc2l6ZTsKKysJCUFTTjFfTlVMTF9pdDsKKysJCUJOX21vZF9sc2hpZnQxOworKwkJZDJpX09DU1BfT05FUkVROworKwkJT0NTUF9PTkVSRVFfbmV3OworKwkJS1JCNV9USUNLRVRfaXQ7CisrCQlFVlBfYWVzXzE5Ml9jYmM7CisrCQlLUkI1X1RJQ0tFVF9mcmVlOworKwkJVUlfbmV3OworKwkJT0NTUF9yZXNwb25zZV9jcmVhdGU7CisrCQlfb3NzbF9vbGRfZGVzX3hjYmNfZW5jcnlwdDsKKysJCVBLQ1M3X2l0OworKwkJT0NTUF9SRVFVRVNUX2dldF9leHRfYnlfY3JpdGljYWw7CisrCQlPQ1NQX1JFUVVFU1RfZ2V0X2V4dF9ieV9jcml0OworKwkJRU5HSU5FX3NldF9mbGFnczsKKysJCV9vc3NsX29sZF9kZXNfZWNiX2VuY3J5cHQ7CisrCQlPQ1NQX3Jlc3BvbnNlX2dldDFfYmFzaWM7CisrCQlFVlBfRGlnZXN0OworKwkJT0NTUF9PTkVSRVFfZGVsZXRlX2V4dDsKKysJCUFTTjFfVEJPT0xFQU5faXQ7CisrCQlBU04xX2l0ZW1fbmV3OworKwkJQVNOMV9USU1FX3RvX2dlbmVyYWxpemVkdGltZTsKKysJCUJJR05VTV9pdDsKKysJCUFFU19jYmNfZW5jcnlwdDsKKysJCUVOR0lORV9nZXRfbG9hZF9wcml2a2V5X2Z1bmN0aW9uOworKwkJRU5HSU5FX2dldF9sb2FkX3ByaXZrZXlfZm47CisrCQlPQ1NQX1JFU1BPTlNFX2ZyZWU7CisrCQlVSV9tZXRob2Rfc2V0X3JlYWRlcjsKKysJCWkyZF9BU04xX1Q2MVNUUklORzsKKysJCUVDX1BPSU5UX3NldF90b19pbmZpbml0eTsKKysJCUVSUl9sb2FkX09DU1Bfc3RyaW5nczsKKysJCUVDX1BPSU5UX3BvaW50Mm9jdDsKKysJCUtSQjVfQVBSRVFfZnJlZTsKKysJCUFTTjFfT0JKRUNUX2l0OworKwkJT0NTUF9jcmxJRF9uZXc7CisrCQlPQ1NQX2NybElEMl9uZXc7CisrCQlDT05GX21vZHVsZXNfbG9hZF9maWxlOworKwkJQ09ORl9pbW9kdWxlX3NldF91c3JfZGF0YTsKKysJCUVOR0lORV9zZXRfZGVmYXVsdF9zdHJpbmc7CisrCQlDT05GX21vZHVsZV9nZXRfdXNyX2RhdGE7CisrCQlBU04xX2FkZF9vaWRfbW9kdWxlOworKwkJQ09ORl9tb2R1bGVzX2ZpbmlzaDsKKysJCU9QRU5TU0xfY29uZmlnOworKwkJQ09ORl9tb2R1bGVzX3VubG9hZDsKKysJCUNPTkZfaW1vZHVsZV9nZXRfdmFsdWU7CisrCQlDT05GX21vZHVsZV9zZXRfdXNyX2RhdGE7CisrCQlDT05GX3BhcnNlX2xpc3Q7CisrCQlDT05GX21vZHVsZV9hZGQ7CisrCQlDT05GX2dldDFfZGVmYXVsdF9jb25maWdfZmlsZTsKKysJCUNPTkZfaW1vZHVsZV9nZXRfZmxhZ3M7CisrCQlDT05GX2ltb2R1bGVfZ2V0X21vZHVsZTsKKysJCUNPTkZfbW9kdWxlc19sb2FkOworKwkJQ09ORl9pbW9kdWxlX2dldF9uYW1lOworKwkJRVJSX3BlZWtfdG9wX2Vycm9yOworKwkJQ09ORl9pbW9kdWxlX2dldF91c3JfZGF0YTsKKysJCUNPTkZfaW1vZHVsZV9zZXRfZmxhZ3M7CisrCQlFTkdJTkVfYWRkX2NvbmZfbW9kdWxlOworKwkJRVJSX3BlZWtfbGFzdF9lcnJvcl9saW5lOworKwkJRVJSX3BlZWtfbGFzdF9lcnJvcl9saW5lX2RhdGE7CisrCQlFUlJfcGVla19sYXN0X2Vycm9yOworKwkJREVTX3JlYWRfMnBhc3N3b3JkczsKKysJCURFU19yZWFkX3Bhc3N3b3JkOworKwkJVUlfVVRJTF9yZWFkX3B3OworKwkJVUlfVVRJTF9yZWFkX3B3X3N0cmluZzsKKysJCUVOR0lORV9sb2FkX2FlcDsKKysJCUVOR0lORV9sb2FkX3N1cmV3YXJlOworKwkJT1BFTlNTTF9hZGRfYWxsX2FsZ29yaXRobXNfbm9jb25mOworKwkJT1BFTlNTTF9hZGRfYWxsX2FsZ29fbm9jb25mOworKwkJT1BFTlNTTF9hZGRfYWxsX2FsZ29yaXRobXNfY29uZjsKKysJCU9QRU5TU0xfYWRkX2FsbF9hbGdvX2NvbmY7CisrCQlPUEVOU1NMX2xvYWRfYnVpbHRpbl9tb2R1bGVzOworKwkJQUVTX29mYjEyOF9lbmNyeXB0OworKwkJQUVTX2N0cjEyOF9lbmNyeXB0OworKwkJQUVTX2NmYjEyOF9lbmNyeXB0OworKwkJRU5HSU5FX2xvYWRfNDc1OGNjYTsKKysJCV9vc3NsXzA5Nl9kZXNfcmFuZG9tX3NlZWQ7CisrCQlFVlBfYWVzXzI1Nl9vZmI7CisrCQlFVlBfYWVzXzE5Ml9vZmI7CisrCQlFVlBfYWVzXzEyOF9jZmIxMjg7CisrCQlFVlBfYWVzXzI1Nl9jZmIxMjg7CisrCQlFVlBfYWVzXzEyOF9vZmI7CisrCQlFVlBfYWVzXzE5Ml9jZmIxMjg7CisrCQlDT05GX21vZHVsZXNfZnJlZTsKKysJCU5DT05GX2RlZmF1bHQ7CisrCQlPUEVOU1NMX25vX2NvbmZpZzsKKysJCU5DT05GX1dJTjMyOworKwkJQVNOMV9VTklWRVJTQUxTVFJJTkdfbmV3OworKwkJRVZQX2Rlc19lZGVfZWNiOworKwkJaTJkX0FTTjFfVU5JVkVSU0FMU1RSSU5HOworKwkJQVNOMV9VTklWRVJTQUxTVFJJTkdfZnJlZTsKKysJCUFTTjFfVU5JVkVSU0FMU1RSSU5HX2l0OworKwkJZDJpX0FTTjFfVU5JVkVSU0FMU1RSSU5HOworKwkJRVZQX2Rlc19lZGUzX2VjYjsKKysJCVg1MDlfUkVRX3ByaW50X2V4OworKwkJRU5HSU5FX3VwX3JlZjsKKysJCUJVRl9NRU1fZ3Jvd19jbGVhbjsKKysJCUNSWVBUT19yZWFsbG9jX2NsZWFuOworKwkJQlVGX3N0cmxjYXQ7CisrCQlCSU9faW5kZW50OworKwkJQlVGX3N0cmxjcHk7CisrCQlPcGVuU1NMRGllOworKwkJT1BFTlNTTF9jbGVhbnNlOworKwkJRU5HSU5FX3NldHVwX2JzZF9jcnlwdG9kZXY7CisrCQlFUlJfcmVsZWFzZV9lcnJfc3RhdGVfdGFibGU7CisrCQlFVlBfYWVzXzEyOF9jZmI4OworKwkJRklQU19jb3JydXB0X3JzYTsKKysJCUZJUFNfc2VsZnRlc3RfZGVzOworKwkJRVZQX2Flc18xMjhfY2ZiMTsKKysJCUVWUF9hZXNfMTkyX2NmYjg7CisrCQlGSVBTX21vZGVfc2V0OworKwkJRklQU19zZWxmdGVzdF9kc2E7CisrCQlFVlBfYWVzXzI1Nl9jZmI4OworKwkJRklQU19hbGxvd19tZDU7CisrCQlERVNfZWRlM19jZmJfZW5jcnlwdDsKKysJCUVWUF9kZXNfZWRlM19jZmI4OworKwkJRklQU19yYW5kX3NlZWRlZDsKKysJCUFFU19jZmJyX2VuY3J5cHRfYmxvY2s7CisrCQlBRVNfY2ZiOF9lbmNyeXB0OworKwkJRklQU19yYW5kX3NlZWQ7CisrCQlGSVBTX2NvcnJ1cHRfZGVzOworKwkJRVZQX2Flc18xOTJfY2ZiMTsKKysJCUZJUFNfc2VsZnRlc3RfYWVzOworKwkJRklQU19zZXRfcHJuZ19rZXk7CisrCQlFVlBfZGVzX2NmYjg7CisrCQlGSVBTX2NvcnJ1cHRfZHNhOworKwkJRklQU190ZXN0X21vZGU7CisrCQlGSVBTX3JhbmRfbWV0aG9kOworKwkJRVZQX2Flc18yNTZfY2ZiMTsKKysJCUVSUl9sb2FkX0ZJUFNfc3RyaW5nczsKKysJCUZJUFNfY29ycnVwdF9hZXM7CisrCQlGSVBTX3NlbGZ0ZXN0X3NoYTE7CisrCQlGSVBTX3NlbGZ0ZXN0X3JzYTsKKysJCUZJUFNfY29ycnVwdF9zaGExOworKwkJRVZQX2Rlc19jZmIxOworKwkJRklQU19kc2FfY2hlY2s7CisrCQlBRVNfY2ZiMV9lbmNyeXB0OworKwkJRVZQX2Rlc19lZGUzX2NmYjE7CisrCQlGSVBTX3JhbmRfY2hlY2s7CisrCQlGSVBTX21kNV9hbGxvd2VkOworKwkJRklQU19tb2RlOworKwkJRklQU19zZWxmdGVzdF9mYWlsZWQ7CisrCQlza19pc19zb3J0ZWQ7CisrCQlYNTA5X2NoZWNrX2NhOworKwkJSE1BQ19DVFhfc2V0X2ZsYWdzOworKwkJZDJpX1BST1hZX0NFUlRfSU5GT19FWFRFTlNJT047CisrCQlQUk9YWV9QT0xJQ1lfaXQ7CisrCQlpMmRfUFJPWFlfUE9MSUNZOworKwkJaTJkX1BST1hZX0NFUlRfSU5GT19FWFRFTlNJT047CisrCQlkMmlfUFJPWFlfUE9MSUNZOworKwkJUFJPWFlfQ0VSVF9JTkZPX0VYVEVOU0lPTl9uZXc7CisrCQlQUk9YWV9DRVJUX0lORk9fRVhURU5TSU9OX2ZyZWU7CisrCQlQUk9YWV9DRVJUX0lORk9fRVhURU5TSU9OX2l0OworKwkJUFJPWFlfUE9MSUNZX2ZyZWU7CisrCQlQUk9YWV9QT0xJQ1lfbmV3OworKwkJQk5fTU9OVF9DVFhfc2V0X2xvY2tlZDsKKysJCUZJUFNfc2VsZnRlc3Rfcm5nOworKwkJRVZQX3NoYTM4NDsKKysJCUVWUF9zaGE1MTI7CisrCQlFVlBfc2hhMjI0OworKwkJRVZQX3NoYTI1NjsKKysJCUZJUFNfc2VsZnRlc3RfaG1hYzsKKysJCUZJUFNfY29ycnVwdF9ybmc7CisrCQlCTl9tb2RfZXhwX21vbnRfY29uc3R0aW1lOworKwkJUlNBX1g5MzFfaGFzaF9pZDsKKysJCVJTQV9wYWRkaW5nX2NoZWNrX1g5MzE7CisrCQlSU0FfdmVyaWZ5X1BLQ1MxX1BTUzsKKysJCVJTQV9wYWRkaW5nX2FkZF9YOTMxOworKwkJUlNBX3BhZGRpbmdfYWRkX1BLQ1MxX1BTUzsKKysJCVBLQ1MxX01HRjE7CisrCQlCTl9YOTMxX2dlbmVyYXRlX1hwcTsKKysJCVJTQV9YOTMxX2dlbmVyYXRlX2tleTsKKysJCUJOX1g5MzFfZGVyaXZlX3ByaW1lOworKwkJQk5fWDkzMV9nZW5lcmF0ZV9wcmltZTsKKysJCVJTQV9YOTMxX2Rlcml2ZTsKKysJCUJJT19uZXdfZGdyYW07CisrCQlCTl9nZXQwX25pc3RfcHJpbWVfMzg0OworKwkJRVJSX3NldF9tYXJrOworKwkJWDUwOV9TVE9SRV9DVFhfc2V0MF9jcmxzOworKwkJRU5HSU5FX3NldF9TVE9SRTsKKysJCUVOR0lORV9yZWdpc3Rlcl9FQ0RTQTsKKysJCVNUT1JFX21ldGhfc2V0X2xpc3Rfc3RhcnRfZm47CisrCQlTVE9SRV9tZXRob2Rfc2V0X2xpc3Rfc3RhcnRfZnVuY3Rpb247CisrCQlCTl9CTElORElOR19pbnZlcnRfZXg7CisrCQlOQU1FX0NPTlNUUkFJTlRTX2ZyZWU7CisrCQlTVE9SRV9BVFRSX0lORk9fc2V0X251bWJlcjsKKysJCUJOX0JMSU5ESU5HX2dldF90aHJlYWRfaWQ7CisrCQlYNTA5X1NUT1JFX0NUWF9zZXQwX3BhcmFtOworKwkJUE9MSUNZX01BUFBJTkdfaXQ7CisrCQlTVE9SRV9wYXJzZV9hdHRyc19zdGFydDsKKysJCVBPTElDWV9DT05TVFJBSU5UU19mcmVlOworKwkJRVZQX1BLRVlfYWRkMV9hdHRyX2J5X05JRDsKKysJCUJOX25pc3RfbW9kXzE5MjsKKysJCUVDX0dST1VQX2dldF90cmlub21pYWxfYmFzaXM7CisrCQlTVE9SRV9zZXRfbWV0aG9kOworKwkJR0VORVJBTF9TVUJUUkVFX2ZyZWU7CisrCQlOQU1FX0NPTlNUUkFJTlRTX2l0OworKwkJRUNESF9nZXRfZGVmYXVsdF9tZXRob2Q7CisrCQlQS0NTMTJfYWRkX3NhZmU7CisrCQlFQ19LRVlfbmV3X2J5X2N1cnZlX25hbWU7CisrCQlTVE9SRV9tZXRoX2dldF91cGRhdGVfc3RvcmVfZm47CisrCQlTVE9SRV9tZXRob2RfZ2V0X3VwZGF0ZV9zdG9yZV9mdW5jdGlvbjsKKysJCUVOR0lORV9yZWdpc3Rlcl9FQ0RIOworKwkJU0hBNTEyX1VwZGF0ZTsKKysJCWkyZF9FQ1ByaXZhdGVLZXk7CisrCQlCTl9nZXQwX25pc3RfcHJpbWVfMTkyOworKwkJU1RPUkVfbW9kaWZ5X2NlcnRpZmljYXRlOworKwkJRUNfUE9JTlRfc2V0X2FmZmluZV9jb29yZGluYXRlc19HRjJtOworKwkJRUNfUE9JTlRfc2V0X2FmZmluZV9jb29yZHNfR0YybTsKKysJCUJOX0dGMm1fbW9kX2V4cF9hcnI7CisrCQlTVE9SRV9BVFRSX0lORk9fbW9kaWZ5X251bWJlcjsKKysJCVg1MDlfa2V5aWRfZ2V0MDsKKysJCUVOR0lORV9sb2FkX2dtcDsKKysJCXBpdGVtX25ldzsKKysJCUJOX0dGMm1fbW9kX211bF9hcnI7CisrCQlTVE9SRV9saXN0X3B1YmxpY19rZXlfZW5kcDsKKysJCW8yaV9FQ1B1YmxpY0tleTsKKysJCUVDX0tFWV9jb3B5OworKwkJQklPX2R1bXBfZnA7CisrCQlYNTA5X3BvbGljeV9ub2RlX2dldDBfcGFyZW50OworKwkJRUNfR1JPVVBfY2hlY2tfZGlzY3JpbWluYW50OworKwkJaTJvX0VDUHVibGljS2V5OworKwkJRUNfS0VZX3ByZWNvbXB1dGVfbXVsdDsKKysJCWEyaV9JUEFERFJFU1M7CisrCQlTVE9SRV9tZXRoX3NldF9pbml0aWFsaXNlX2ZuOworKwkJU1RPUkVfbWV0aG9kX3NldF9pbml0aWFsaXNlX2Z1bmN0aW9uOworKwkJWDUwOV9TVE9SRV9DVFhfc2V0X2RlcHRoOworKwkJWDUwOV9WRVJJRllfUEFSQU1faW5oZXJpdDsKKysJCUVDX1BPSU5UX3BvaW50MmJuOworKwkJU1RPUkVfQVRUUl9JTkZPX3NldF9kbjsKKysJCVg1MDlfcG9saWN5X3RyZWVfZ2V0MF9wb2xpY2llczsKKysJCUVDX0dST1VQX25ld19jdXJ2ZV9HRjJtOworKwkJU1RPUkVfZGVzdHJveV9tZXRob2Q7CisrCQlFTkdJTkVfdW5yZWdpc3Rlcl9TVE9SRTsKKysJCUVWUF9QS0VZX2dldDFfRUNfS0VZOworKwkJU1RPUkVfQVRUUl9JTkZPX2dldDBfbnVtYmVyOworKwkJRU5HSU5FX2dldF9kZWZhdWx0X0VDREg7CisrCQlFQ19LRVlfZ2V0X2NvbnZfZm9ybTsKKysJCUFTTjFfT0NURVRfU1RSSU5HX05ERUZfaXQ7CisrCQlTVE9SRV9kZWxldGVfcHVibGljX2tleTsKKysJCVNUT1JFX2dldF9wdWJsaWNfa2V5OworKwkJU1RPUkVfbW9kaWZ5X2FyYml0cmFyeTsKKysJCUVOR0lORV9nZXRfc3RhdGljX3N0YXRlOworKwkJcHF1ZXVlX2l0ZXJhdG9yOworKwkJRUNEU0FfU0lHX25ldzsKKysJCU9QRU5TU0xfRElSX2VuZDsKKysJCUJOX0dGMm1fbW9kX3NxcjsKKysJCUVDX1BPSU5UX2JuMnBvaW50OworKwkJWDUwOV9WRVJJRllfUEFSQU1fc2V0X2RlcHRoOworKwkJRUNfS0VZX3NldF9hc24xX2ZsYWc7CisrCQlTVE9SRV9nZXRfbWV0aG9kOworKwkJRUNfS0VZX2dldF9rZXlfbWV0aG9kX2RhdGE7CisrCQlFQ0RTQV9zaWduX2V4OworKwkJU1RPUkVfcGFyc2VfYXR0cnNfZW5kOworKwkJRUNfR1JPVVBfZ2V0X3BvaW50X2NvbnZlcnNpb25fZm9ybTsKKysJCUVDX0dST1VQX2dldF9wb2ludF9jb252X2Zvcm07CisrCQlTVE9SRV9tZXRob2Rfc2V0X3N0b3JlX2Z1bmN0aW9uOworKwkJU1RPUkVfQVRUUl9JTkZPX2luOworKwkJUEVNX3JlYWRfYmlvX0VDUEtQYXJhbWV0ZXJzOworKwkJRUNfR1JPVVBfZ2V0X3BlbnRhbm9taWFsX2Jhc2lzOworKwkJRVZQX1BLRVlfYWRkMV9hdHRyX2J5X3R4dDsKKysJCUJOX0JMSU5ESU5HX3NldF9mbGFnczsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX3NldDFfcG9saWNpZXM7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXQxX25hbWU7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXRfcHVycG9zZTsKKysJCVNUT1JFX2dldF9udW1iZXI7CisrCQlFQ0RTQV9zaWduX3NldHVwOworKwkJQk5fR0YybV9tb2Rfc29sdmVfcXVhZF9hcnI7CisrCQlFQ19LRVlfdXBfcmVmOworKwkJUE9MSUNZX01BUFBJTkdfZnJlZTsKKysJCUJOX0dGMm1fbW9kX2RpdjsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX3NldF9mbGFnczsKKysJCUVDX0tFWV9mcmVlOworKwkJU1RPUkVfbWV0aF9zZXRfbGlzdF9uZXh0X2ZuOworKwkJU1RPUkVfbWV0aG9kX3NldF9saXN0X25leHRfZnVuY3Rpb247CisrCQlQRU1fd3JpdGVfYmlvX0VDUHJpdmF0ZUtleTsKKysJCWQyaV9FQ19QVUJLRVk7CisrCQlTVE9SRV9tZXRoX2dldF9nZW5lcmF0ZV9mbjsKKysJCVNUT1JFX21ldGhvZF9nZXRfZ2VuZXJhdGVfZnVuY3Rpb247CisrCQlTVE9SRV9tZXRoX3NldF9saXN0X2VuZF9mbjsKKysJCVNUT1JFX21ldGhvZF9zZXRfbGlzdF9lbmRfZnVuY3Rpb247CisrCQlwcXVldWVfcHJpbnQ7CisrCQlFQ19HUk9VUF9oYXZlX3ByZWNvbXB1dGVfbXVsdDsKKysJCUVDX0tFWV9wcmludF9mcDsKKysJCUJOX0dGMm1fbW9kX2FycjsKKysJCVBFTV93cml0ZV9iaW9fWDUwOV9DRVJUX1BBSVI7CisrCQlFVlBfUEtFWV9jbXA7CisrCQlYNTA5X3BvbGljeV9sZXZlbF9ub2RlX2NvdW50OworKwkJU1RPUkVfbmV3X2VuZ2luZTsKKysJCVNUT1JFX2xpc3RfcHVibGljX2tleV9zdGFydDsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX25ldzsKKysJCUVDREhfZ2V0X2V4X2RhdGE7CisrCQlFVlBfUEtFWV9nZXRfYXR0cjsKKysJCUVDRFNBX2RvX3NpZ247CisrCQlFTkdJTkVfdW5yZWdpc3Rlcl9FQ0RIOworKwkJRUNESF9PcGVuU1NMOworKwkJRUNfS0VZX3NldF9jb252X2Zvcm07CisrCQlFQ19QT0lOVF9kdXA7CisrCQlHRU5FUkFMX1NVQlRSRUVfbmV3OworKwkJU1RPUkVfbGlzdF9jcmxfZW5kcDsKKysJCUVDX2dldF9idWlsdGluX2N1cnZlczsKKysJCVg1MDlfcG9saWN5X25vZGVfZ2V0MF9xdWFsaWZpZXJzOworKwkJWDUwOV9wY3lfbm9kZV9nZXQwX3F1YWxpZmllcnM7CisrCQlTVE9SRV9saXN0X2NybF9lbmQ7CisrCQlFVlBfUEtFWV9zZXQxX0VDX0tFWTsKKysJCUJOX0dGMm1fbW9kX3NxcnRfYXJyOworKwkJaTJkX0VDUHJpdmF0ZUtleV9iaW87CisrCQlFQ1BLUGFyYW1ldGVyc19wcmludF9mcDsKKysJCXBxdWV1ZV9maW5kOworKwkJRUNEU0FfU0lHX2ZyZWU7CisrCQlQRU1fd3JpdGVfYmlvX0VDUEtQYXJhbWV0ZXJzOworKwkJU1RPUkVfbWV0aG9kX3NldF9jdHJsX2Z1bmN0aW9uOworKwkJU1RPUkVfbGlzdF9wdWJsaWNfa2V5X2VuZDsKKysJCUVDX0tFWV9zZXRfcHJpdmF0ZV9rZXk7CisrCQlwcXVldWVfcGVlazsKKysJCVNUT1JFX2dldF9hcmJpdHJhcnk7CisrCQlTVE9SRV9zdG9yZV9jcmw7CisrCQlYNTA5X3BvbGljeV9ub2RlX2dldDBfcG9saWN5OworKwkJUEtDUzEyX2FkZF9zYWZlczsKKysJCUJOX0JMSU5ESU5HX2NvbnZlcnRfZXg7CisrCQlYNTA5X3BvbGljeV90cmVlX2ZyZWU7CisrCQlPUEVOU1NMX2lhMzJjYXBfbG9jOworKwkJQk5fR0YybV9wb2x5MmFycjsKKysJCVNUT1JFX2N0cmw7CisrCQlTVE9SRV9BVFRSX0lORk9fY29tcGFyZTsKKysJCUJOX2dldDBfbmlzdF9wcmltZV8yMjQ7CisrCQlpMmRfRUNQYXJhbWV0ZXJzOworKwkJaTJkX0VDUEtQYXJhbWV0ZXJzOworKwkJQk5fR0VOQ0JfY2FsbDsKKysJCWQyaV9FQ1BLUGFyYW1ldGVyczsKKysJCVNUT1JFX21ldGhfc2V0X2dlbmVyYXRlX2ZuOworKwkJU1RPUkVfbWV0aG9kX3NldF9nZW5lcmF0ZV9mdW5jdGlvbjsKKysJCUVOR0lORV9zZXRfRUNESDsKKysJCU5BTUVfQ09OU1RSQUlOVFNfbmV3OworKwkJU0hBMjU2X0luaXQ7CisrCQlFQ19LRVlfZ2V0MF9wdWJsaWNfa2V5OworKwkJUEVNX3dyaXRlX2Jpb19FQ19QVUJLRVk7CisrCQlTVE9SRV9BVFRSX0lORk9fc2V0X2NzdHI7CisrCQlTVE9SRV9saXN0X2NybF9uZXh0OworKwkJU1RPUkVfQVRUUl9JTkZPX2luX3JhbmdlOworKwkJRUNQYXJhbWV0ZXJzX3ByaW50OworKwkJU1RPUkVfbWV0aF9zZXRfZGVsZXRlX2ZuOworKwkJU1RPUkVfbWV0aG9kX3NldF9kZWxldGVfZnVuY3Rpb247CisrCQlTVE9SRV9saXN0X2NlcnRpZmljYXRlX25leHQ7CisrCQlBU04xX2dlbmVyYXRlX25jb25mOworKwkJQlVGX21lbWR1cDsKKysJCUJOX0dGMm1fbW9kX211bDsKKysJCVNUT1JFX21ldGhfZ2V0X2xpc3RfbmV4dF9mbjsKKysJCVNUT1JFX21ldGhvZF9nZXRfbGlzdF9uZXh0X2Z1bmN0aW9uOworKwkJU1RPUkVfQVRUUl9JTkZPX2dldDBfZG47CisrCQlTVE9SRV9saXN0X3ByaXZhdGVfa2V5X25leHQ7CisrCQlFQ19HUk9VUF9zZXRfc2VlZDsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX3NldF90cnVzdDsKKysJCVNUT1JFX0FUVFJfSU5GT19mcmVlOworKwkJU1RPUkVfZ2V0X3ByaXZhdGVfa2V5OworKwkJRVZQX1BLRVlfZ2V0X2F0dHJfY291bnQ7CisrCQlTVE9SRV9BVFRSX0lORk9fbmV3OworKwkJRUNfR1JPVVBfZ2V0X2N1cnZlX0dGMm07CisrCQlTVE9SRV9tZXRoX3NldF9yZXZva2VfZm47CisrCQlTVE9SRV9tZXRob2Rfc2V0X3Jldm9rZV9mdW5jdGlvbjsKKysJCVNUT1JFX3N0b3JlX251bWJlcjsKKysJCUJOX2lzX3ByaW1lX2V4OworKwkJU1RPUkVfcmV2b2tlX3B1YmxpY19rZXk7CisrCQlYNTA5X1NUT1JFX0NUWF9nZXQwX3BhcmFtOworKwkJU1RPUkVfZGVsZXRlX2FyYml0cmFyeTsKKysJCVBFTV9yZWFkX1g1MDlfQ0VSVF9QQUlSOworKwkJWDUwOV9TVE9SRV9zZXRfZGVwdGg7CisrCQlFQ0RTQV9nZXRfZXhfZGF0YTsKKysJCVNIQTIyNDsKKysJCUJJT19kdW1wX2luZGVudF9mcDsKKysJCUVDX0tFWV9zZXRfZ3JvdXA7CisrCQlCVUZfc3RybmR1cDsKKysJCVNUT1JFX2xpc3RfY2VydGlmaWNhdGVfc3RhcnQ7CisrCQlCTl9HRjJtX21vZDsKKysJCVg1MDlfUkVRX2NoZWNrX3ByaXZhdGVfa2V5OworKwkJRUNfR1JPVVBfZ2V0X3NlZWRfbGVuOworKwkJRVJSX2xvYWRfU1RPUkVfc3RyaW5nczsKKysJCVBFTV9yZWFkX2Jpb19FQ19QVUJLRVk7CisrCQlTVE9SRV9saXN0X3ByaXZhdGVfa2V5X2VuZDsKKysJCWkyZF9FQ19QVUJLRVk7CisrCQlFQ0RTQV9nZXRfZGVmYXVsdF9tZXRob2Q7CisrCQlBU04xX3B1dF9lb2M7CisrCQlYNTA5X1NUT1JFX0NUWF9nZXRfZXhwbGljaXRfcG9saWN5OworKwkJWDUwOV9TVE9SRV9DVFhfZ2V0X2V4cGxfcG9saWN5OworKwkJWDUwOV9WRVJJRllfUEFSQU1fdGFibGVfY2xlYW51cDsKKysJCVNUT1JFX21vZGlmeV9wcml2YXRlX2tleTsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX2ZyZWU7CisrCQlFQ19NRVRIT0RfZ2V0X2ZpZWxkX3R5cGU7CisrCQlFQ19HRnBfbmlzdF9tZXRob2Q7CisrCQlTVE9SRV9tZXRoX3NldF9tb2RpZnlfZm47CisrCQlTVE9SRV9tZXRob2Rfc2V0X21vZGlmeV9mdW5jdGlvbjsKKysJCVNUT1JFX3BhcnNlX2F0dHJzX25leHQ7CisrCQlFTkdJTkVfbG9hZF9wYWRsb2NrOworKwkJRUNfR1JPVVBfc2V0X2N1cnZlX25hbWU7CisrCQlYNTA5X0NFUlRfUEFJUl9pdDsKKysJCVNUT1JFX21ldGhfZ2V0X3Jldm9rZV9mbjsKKysJCVNUT1JFX21ldGhvZF9nZXRfcmV2b2tlX2Z1bmN0aW9uOworKwkJU1RPUkVfbWV0aG9kX3NldF9nZXRfZnVuY3Rpb247CisrCQlTVE9SRV9tb2RpZnlfbnVtYmVyOworKwkJU1RPUkVfbWV0aG9kX2dldF9zdG9yZV9mdW5jdGlvbjsKKysJCVNUT1JFX3N0b3JlX3ByaXZhdGVfa2V5OworKwkJQk5fR0YybV9tb2Rfc3FyX2FycjsKKysJCVJTQV9zZXR1cF9ibGluZGluZzsKKysJCUJJT19zX2RhdGFncmFtOworKwkJU1RPUkVfTWVtb3J5OworKwkJc2tfZmluZF9leDsKKysJCUVDX0dST1VQX3NldF9jdXJ2ZV9HRjJtOworKwkJRU5HSU5FX3NldF9kZWZhdWx0X0VDRFNBOworKwkJUE9MSUNZX0NPTlNUUkFJTlRTX25ldzsKKysJCUJOX0dGMm1fbW9kX3NxcnQ7CisrCQlFQ0RIX3NldF9kZWZhdWx0X21ldGhvZDsKKysJCUVDX0tFWV9nZW5lcmF0ZV9rZXk7CisrCQlTSEEzODRfVXBkYXRlOworKwkJQk5fR0YybV9hcnIycG9seTsKKysJCVNUT1JFX21ldGhvZF9nZXRfZ2V0X2Z1bmN0aW9uOworKwkJU1RPUkVfbWV0aF9zZXRfY2xlYW51cF9mbjsKKysJCVNUT1JFX21ldGhvZF9zZXRfY2xlYW51cF9mdW5jdGlvbjsKKysJCUVDX0dST1VQX2NoZWNrOworKwkJZDJpX0VDUHJpdmF0ZUtleV9iaW87CisrCQlFQ19LRVlfaW5zZXJ0X2tleV9tZXRob2RfZGF0YTsKKysJCVNUT1JFX21ldGhfZ2V0X2xvY2tfc3RvcmVfZm47CisrCQlTVE9SRV9tZXRob2RfZ2V0X2xvY2tfc3RvcmVfZnVuY3Rpb247CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9nZXRfZGVwdGg7CisrCQlTSEEyMjRfRmluYWw7CisrCQlTVE9SRV9tZXRoX3NldF91cGRhdGVfc3RvcmVfZm47CisrCQlTVE9SRV9tZXRob2Rfc2V0X3VwZGF0ZV9zdG9yZV9mdW5jdGlvbjsKKysJCVNIQTIyNF9VcGRhdGU7CisrCQlkMmlfRUNQcml2YXRlS2V5OworKwkJQVNOMV9pdGVtX25kZWZfaTJkOworKwkJU1RPUkVfZGVsZXRlX3ByaXZhdGVfa2V5OworKwkJRVJSX3BvcF90b19tYXJrOworKwkJRU5HSU5FX3JlZ2lzdGVyX2FsbF9TVE9SRTsKKysJCVg1MDlfcG9saWN5X2xldmVsX2dldDBfbm9kZTsKKysJCWkyZF9QS0NTN19OREVGOworKwkJRUNfR1JPVVBfZ2V0X2RlZ3JlZTsKKysJCUFTTjFfZ2VuZXJhdGVfdjM7CisrCQlTVE9SRV9BVFRSX0lORk9fbW9kaWZ5X2NzdHI7CisrCQlYNTA5X3BvbGljeV90cmVlX2xldmVsX2NvdW50OworKwkJQk5fR0YybV9hZGQ7CisrCQlFQ19LRVlfZ2V0MF9ncm91cDsKKysJCVNUT1JFX2dlbmVyYXRlX2NybDsKKysJCVNUT1JFX3N0b3JlX3B1YmxpY19rZXk7CisrCQlYNTA5X0NFUlRfUEFJUl9mcmVlOworKwkJU1RPUkVfcmV2b2tlX3ByaXZhdGVfa2V5OworKwkJQk5fbmlzdF9tb2RfMjI0OworKwkJU0hBNTEyX0ZpbmFsOworKwkJU1RPUkVfQVRUUl9JTkZPX21vZGlmeV9kbjsKKysJCVNUT1JFX21ldGhfZ2V0X2luaXRpYWxpc2VfZm47CisrCQlTVE9SRV9tZXRob2RfZ2V0X2luaXRpYWxpc2VfZnVuY3Rpb247CisrCQlTVE9SRV9kZWxldGVfbnVtYmVyOworKwkJaTJkX0VDX1BVQktFWV9iaW87CisrCQlCSU9fZGdyYW1fbm9uX2ZhdGFsX2Vycm9yOworKwkJRUNfR1JPVVBfZ2V0X2FzbjFfZmxhZzsKKysJCVNUT1JFX0FUVFJfSU5GT19pbl9leDsKKysJCVNUT1JFX2xpc3RfY3JsX3N0YXJ0OworKwkJRUNESF9nZXRfZXhfbmV3X2luZGV4OworKwkJU1RPUkVfbWV0aF9nZXRfbW9kaWZ5X2ZuOworKwkJU1RPUkVfbWV0aG9kX2dldF9tb2RpZnlfZnVuY3Rpb247CisrCQl2MmlfQVNOMV9CSVRfU1RSSU5HOworKwkJU1RPUkVfc3RvcmVfY2VydGlmaWNhdGU7CisrCQlPQkpfYnNlYXJjaF9leDsKKysJCVg1MDlfU1RPUkVfQ1RYX3NldF9kZWZhdWx0OworKwkJU1RPUkVfQVRUUl9JTkZPX3NldF9zaGExc3RyOworKwkJQk5fR0YybV9tb2RfaW52OworKwkJQk5fR0YybV9tb2RfZXhwOworKwkJU1RPUkVfbW9kaWZ5X3B1YmxpY19rZXk7CisrCQlTVE9SRV9tZXRoX2dldF9saXN0X3N0YXJ0X2ZuOworKwkJU1RPUkVfbWV0aG9kX2dldF9saXN0X3N0YXJ0X2Z1bmN0aW9uOworKwkJRUNfR1JPVVBfZ2V0MF9zZWVkOworKwkJU1RPUkVfc3RvcmVfYXJiaXRyYXJ5OworKwkJU1RPUkVfbWV0aF9zZXRfdW5sb2NrX3N0b3JlX2ZuOworKwkJU1RPUkVfbWV0aG9kX3NldF91bmxvY2tfc3RvcmVfZnVuY3Rpb247CisrCQlCTl9HRjJtX21vZF9kaXZfYXJyOworKwkJRU5HSU5FX3NldF9FQ0RTQTsKKysJCVNUT1JFX2NyZWF0ZV9tZXRob2Q7CisrCQlFQ1BLUGFyYW1ldGVyc19wcmludDsKKysJCUVDX0tFWV9nZXQwX3ByaXZhdGVfa2V5OworKwkJUEVNX3dyaXRlX0VDX1BVQktFWTsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX3NldDE7CisrCQlFQ0RIX3NldF9tZXRob2Q7CisrCQl2MmlfR0VORVJBTF9OQU1FX2V4OworKwkJRUNESF9zZXRfZXhfZGF0YTsKKysJCVNUT1JFX2dlbmVyYXRlX2tleTsKKysJCUJOX25pc3RfbW9kXzUyMTsKKysJCVg1MDlfcG9saWN5X3RyZWVfZ2V0MF9sZXZlbDsKKysJCUVDX0dST1VQX3NldF9wb2ludF9jb252ZXJzaW9uX2Zvcm07CisrCQlFQ19HUk9VUF9zZXRfcG9pbnRfY29udl9mb3JtOworKwkJUEVNX3JlYWRfRUNfUFVCS0VZOworKwkJaTJkX0VDRFNBX1NJRzsKKysJCUVDRFNBX09wZW5TU0w7CisrCQlTVE9SRV9kZWxldGVfY3JsOworKwkJRUNfS0VZX2dldF9lbmNfZmxhZ3M7CisrCQlBU04xX2NvbnN0X2NoZWNrX2luZmluaXRlX2VuZDsKKysJCUVWUF9QS0VZX2RlbGV0ZV9hdHRyOworKwkJRUNEU0Ffc2V0X2RlZmF1bHRfbWV0aG9kOworKwkJRUNfUE9JTlRfc2V0X2NvbXByZXNzZWRfY29vcmRpbmF0ZXNfR0YybTsKKysJCUVDX1BPSU5UX3NldF9jb21wcl9jb29yZHNfR0YybTsKKysJCUVDX0dST1VQX2NtcDsKKysJCVNUT1JFX3Jldm9rZV9jZXJ0aWZpY2F0ZTsKKysJCUJOX2dldDBfbmlzdF9wcmltZV8yNTY7CisrCQlTVE9SRV9tZXRoX2dldF9kZWxldGVfZm47CisrCQlTVE9SRV9tZXRob2RfZ2V0X2RlbGV0ZV9mdW5jdGlvbjsKKysJCVNIQTIyNF9Jbml0OworKwkJUEVNX3JlYWRfRUNQcml2YXRlS2V5OworKwkJU0hBNTEyX0luaXQ7CisrCQlTVE9SRV9wYXJzZV9hdHRyc19lbmRwOworKwkJQk5fc2V0X25lZ2F0aXZlOworKwkJRVJSX2xvYWRfRUNEU0Ffc3RyaW5nczsKKysJCUVDX0dST1VQX2dldF9iYXNpc190eXBlOworKwkJU1RPUkVfbGlzdF9wdWJsaWNfa2V5X25leHQ7CisrCQlpMnZfQVNOMV9CSVRfU1RSSU5HOworKwkJU1RPUkVfT0JKRUNUX2ZyZWU7CisrCQlCTl9uaXN0X21vZF8zODQ7CisrCQlpMmRfWDUwOV9DRVJUX1BBSVI7CisrCQlQRU1fd3JpdGVfRUNQS1BhcmFtZXRlcnM7CisrCQlFQ0RIX2NvbXB1dGVfa2V5OworKwkJU1RPUkVfQVRUUl9JTkZPX2dldDBfc2hhMXN0cjsKKysJCUVOR0lORV9yZWdpc3Rlcl9hbGxfRUNESDsKKysJCXBxdWV1ZV9wb3A7CisrCQlTVE9SRV9BVFRSX0lORk9fZ2V0MF9jc3RyOworKwkJUE9MSUNZX0NPTlNUUkFJTlRTX2l0OworKwkJU1RPUkVfZ2V0X2V4X25ld19pbmRleDsKKysJCUVWUF9QS0VZX2dldF9hdHRyX2J5X09CSjsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX2FkZDBfcG9saWN5OworKwkJQk5fR0YybV9tb2Rfc29sdmVfcXVhZDsKKysJCVNIQTI1NjsKKysJCWkyZF9FQ1ByaXZhdGVLZXlfZnA7CisrCQlYNTA5X3BvbGljeV90cmVlX2dldDBfdXNlcl9wb2xpY2llczsKKysJCVg1MDlfcGN5X3RyZWVfZ2V0MF91c3JfcG9saWNpZXM7CisrCQlPUEVOU1NMX0RJUl9yZWFkOworKwkJRU5HSU5FX3JlZ2lzdGVyX2FsbF9FQ0RTQTsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX2xvb2t1cDsKKysJCUVDX1BPSU5UX2dldF9hZmZpbmVfY29vcmRpbmF0ZXNfR0YybTsKKysJCUVDX1BPSU5UX2dldF9hZmZpbmVfY29vcmRzX0dGMm07CisrCQlFQ19HUk9VUF9kdXA7CisrCQlFTkdJTkVfZ2V0X2RlZmF1bHRfRUNEU0E7CisrCQlFQ19LRVlfbmV3OworKwkJU0hBMjU2X1RyYW5zZm9ybTsKKysJCUVDX0tFWV9zZXRfZW5jX2ZsYWdzOworKwkJRUNEU0FfdmVyaWZ5OworKwkJRUNfUE9JTlRfcG9pbnQyaGV4OworKwkJRU5HSU5FX2dldF9TVE9SRTsKKysJCVNIQTUxMjsKKysJCVNUT1JFX2dldF9jZXJ0aWZpY2F0ZTsKKysJCUVDRFNBX2RvX3NpZ25fZXg7CisrCQlFQ0RTQV9kb192ZXJpZnk7CisrCQlkMmlfRUNQcml2YXRlS2V5X2ZwOworKwkJU1RPUkVfZGVsZXRlX2NlcnRpZmljYXRlOworKwkJU0hBNTEyX1RyYW5zZm9ybTsKKysJCVg1MDlfU1RPUkVfc2V0MV9wYXJhbTsKKysJCVNUT1JFX21ldGhvZF9nZXRfY3RybF9mdW5jdGlvbjsKKysJCVNUT1JFX2ZyZWU7CisrCQlQRU1fd3JpdGVfRUNQcml2YXRlS2V5OworKwkJU1RPUkVfbWV0aF9nZXRfdW5sb2NrX3N0b3JlX2ZuOworKwkJU1RPUkVfbWV0aG9kX2dldF91bmxvY2tfc3RvcmVfZnVuY3Rpb247CisrCQlTVE9SRV9nZXRfZXhfZGF0YTsKKysJCUVDX0tFWV9zZXRfcHVibGljX2tleTsKKysJCVBFTV9yZWFkX0VDUEtQYXJhbWV0ZXJzOworKwkJWDUwOV9DRVJUX1BBSVJfbmV3OworKwkJRU5HSU5FX3JlZ2lzdGVyX1NUT1JFOworKwkJUlNBX2dlbmVyYXRlX2tleV9leDsKKysJCURTQV9nZW5lcmF0ZV9wYXJhbWV0ZXJzX2V4OworKwkJRUNQYXJhbWV0ZXJzX3ByaW50X2ZwOworKwkJWDUwOVYzX05BTUVfZnJvbV9zZWN0aW9uOworKwkJRVZQX1BLRVlfYWRkMV9hdHRyOworKwkJU1RPUkVfbW9kaWZ5X2NybDsKKysJCVNUT1JFX2xpc3RfcHJpdmF0ZV9rZXlfc3RhcnQ7CisrCQlQT0xJQ1lfTUFQUElOR1NfaXQ7CisrCQlHRU5FUkFMX1NVQlRSRUVfaXQ7CisrCQlFQ19HUk9VUF9nZXRfY3VydmVfbmFtZTsKKysJCVBFTV93cml0ZV9YNTA5X0NFUlRfUEFJUjsKKysJCUJJT19kdW1wX2luZGVudF9jYjsKKysJCWQyaV9YNTA5X0NFUlRfUEFJUjsKKysJCVNUT1JFX2xpc3RfcHJpdmF0ZV9rZXlfZW5kcDsKKysJCWFzbjFfY29uc3RfRmluaXNoOworKwkJaTJkX0VDX1BVQktFWV9mcDsKKysJCUJOX25pc3RfbW9kXzI1NjsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX2FkZDBfdGFibGU7CisrCQlwcXVldWVfZnJlZTsKKysJCUJOX0JMSU5ESU5HX2NyZWF0ZV9wYXJhbTsKKysJCUVDRFNBX3NpemU7CisrCQlkMmlfRUNfUFVCS0VZX2JpbzsKKysJCUJOX2dldDBfbmlzdF9wcmltZV81MjE7CisrCQlTVE9SRV9BVFRSX0lORk9fbW9kaWZ5X3NoYTFzdHI7CisrCQlCTl9nZW5lcmF0ZV9wcmltZV9leDsKKysJCUVDX0dST1VQX25ld19ieV9jdXJ2ZV9uYW1lOworKwkJU0hBMjU2X0ZpbmFsOworKwkJREhfZ2VuZXJhdGVfcGFyYW1ldGVyc19leDsKKysJCVBFTV9yZWFkX2Jpb19FQ1ByaXZhdGVLZXk7CisrCQlTVE9SRV9tZXRoX2dldF9jbGVhbnVwX2ZuOworKwkJU1RPUkVfbWV0aG9kX2dldF9jbGVhbnVwX2Z1bmN0aW9uOworKwkJRU5HSU5FX2dldF9FQ0RIOworKwkJZDJpX0VDRFNBX1NJRzsKKysJCUJOX2lzX3ByaW1lX2Zhc3R0ZXN0X2V4OworKwkJRUNEU0Ffc2lnbjsKKysJCVg1MDlfcG9saWN5X2NoZWNrOworKwkJRVZQX1BLRVlfZ2V0X2F0dHJfYnlfTklEOworKwkJU1RPUkVfc2V0X2V4X2RhdGE7CisrCQlFTkdJTkVfZ2V0X0VDRFNBOworKwkJRVZQX2VjZHNhOworKwkJQk5fQkxJTkRJTkdfZ2V0X2ZsYWdzOworKwkJUEtDUzEyX2FkZF9jZXJ0OworKwkJU1RPUkVfT0JKRUNUX25ldzsKKysJCUVSUl9sb2FkX0VDREhfc3RyaW5nczsKKysJCUVDX0tFWV9kdXA7CisrCQlFVlBfQ0lQSEVSX0NUWF9yYW5kX2tleTsKKysJCUVDRFNBX3NldF9tZXRob2Q7CisrCQlhMmlfSVBBRERSRVNTX05DOworKwkJZDJpX0VDUGFyYW1ldGVyczsKKysJCVNUT1JFX2xpc3RfY2VydGlmaWNhdGVfZW5kOworKwkJU1RPUkVfZ2V0X2NybDsKKysJCVg1MDlfUE9MSUNZX05PREVfcHJpbnQ7CisrCQlTSEEzODRfSW5pdDsKKysJCUVDX0dGMm1fc2ltcGxlX21ldGhvZDsKKysJCUVDRFNBX3NldF9leF9kYXRhOworKwkJU0hBMzg0X0ZpbmFsOworKwkJUEtDUzdfc2V0X2RpZ2VzdDsKKysJCUVDX0tFWV9wcmludDsKKysJCVNUT1JFX21ldGhfc2V0X2xvY2tfc3RvcmVfZm47CisrCQlTVE9SRV9tZXRob2Rfc2V0X2xvY2tfc3RvcmVfZnVuY3Rpb247CisrCQlFQ0RTQV9nZXRfZXhfbmV3X2luZGV4OworKwkJU0hBMzg0OworKwkJUE9MSUNZX01BUFBJTkdfbmV3OworKwkJU1RPUkVfbGlzdF9jZXJ0aWZpY2F0ZV9lbmRwOworKwkJWDUwOV9TVE9SRV9DVFhfZ2V0MF9wb2xpY3lfdHJlZTsKKysJCUVDX0dST1VQX3NldF9hc24xX2ZsYWc7CisrCQlFQ19LRVlfY2hlY2tfa2V5OworKwkJZDJpX0VDX1BVQktFWV9mcDsKKysJCVBLQ1M3X3NldDBfdHlwZV9vdGhlcjsKKysJCVBFTV9yZWFkX2Jpb19YNTA5X0NFUlRfUEFJUjsKKysJCXBxdWV1ZV9uZXh0OworKwkJU1RPUkVfbWV0aF9nZXRfbGlzdF9lbmRfZm47CisrCQlTVE9SRV9tZXRob2RfZ2V0X2xpc3RfZW5kX2Z1bmN0aW9uOworKwkJRVZQX1BLRVlfYWRkMV9hdHRyX2J5X09CSjsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX3NldF90aW1lOworKwkJcHF1ZXVlX25ldzsKKysJCUVOR0lORV9zZXRfZGVmYXVsdF9FQ0RIOworKwkJU1RPUkVfbmV3X21ldGhvZDsKKysJCVBLQ1MxMl9hZGRfa2V5OworKwkJRFNPX21lcmdlOworKwkJRUNfUE9JTlRfaGV4MnBvaW50OworKwkJQklPX2R1bXBfY2I7CisrCQlTSEEyNTZfVXBkYXRlOworKwkJcHF1ZXVlX2luc2VydDsKKysJCXBpdGVtX2ZyZWU7CisrCQlCTl9HRjJtX21vZF9pbnZfYXJyOworKwkJRU5HSU5FX3VucmVnaXN0ZXJfRUNEU0E7CisrCQlCTl9CTElORElOR19zZXRfdGhyZWFkX2lkOworKwkJZ2V0X3JmYzM1MjZfcHJpbWVfODE5MjsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX2NsZWFyX2ZsYWdzOworKwkJZ2V0X3JmYzI0MDlfcHJpbWVfMTAyNDsKKysJCURIX2NoZWNrX3B1Yl9rZXk7CisrCQlnZXRfcmZjMzUyNl9wcmltZV8yMDQ4OworKwkJZ2V0X3JmYzM1MjZfcHJpbWVfNjE0NDsKKysJCWdldF9yZmMzNTI2X3ByaW1lXzE1MzY7CisrCQlnZXRfcmZjMzUyNl9wcmltZV8zMDcyOworKwkJZ2V0X3JmYzM1MjZfcHJpbWVfNDA5NjsKKysJCWdldF9yZmMyNDA5X3ByaW1lXzc2ODsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX2dldF9mbGFnczsKKysJCUVWUF9DSVBIRVJfQ1RYX25ldzsKKysJCUVWUF9DSVBIRVJfQ1RYX2ZyZWU7CisrCQlDYW1lbGxpYV9jYmNfZW5jcnlwdDsKKysJCUNhbWVsbGlhX2NmYjEyOF9lbmNyeXB0OworKwkJQ2FtZWxsaWFfY2ZiMV9lbmNyeXB0OworKwkJQ2FtZWxsaWFfY2ZiOF9lbmNyeXB0OworKwkJQ2FtZWxsaWFfY3RyMTI4X2VuY3J5cHQ7CisrCQlDYW1lbGxpYV9jZmJyX2VuY3J5cHRfYmxvY2s7CisrCQlDYW1lbGxpYV9kZWNyeXB0OworKwkJQ2FtZWxsaWFfZWNiX2VuY3J5cHQ7CisrCQlDYW1lbGxpYV9lbmNyeXB0OworKwkJQ2FtZWxsaWFfb2ZiMTI4X2VuY3J5cHQ7CisrCQlDYW1lbGxpYV9zZXRfa2V5OworKwkJRVZQX2NhbWVsbGlhXzEyOF9jYmM7CisrCQlFVlBfY2FtZWxsaWFfMTI4X2NmYjEyODsKKysJCUVWUF9jYW1lbGxpYV8xMjhfY2ZiMTsKKysJCUVWUF9jYW1lbGxpYV8xMjhfY2ZiODsKKysJCUVWUF9jYW1lbGxpYV8xMjhfZWNiOworKwkJRVZQX2NhbWVsbGlhXzEyOF9vZmI7CisrCQlFVlBfY2FtZWxsaWFfMTkyX2NiYzsKKysJCUVWUF9jYW1lbGxpYV8xOTJfY2ZiMTI4OworKwkJRVZQX2NhbWVsbGlhXzE5Ml9jZmIxOworKwkJRVZQX2NhbWVsbGlhXzE5Ml9jZmI4OworKwkJRVZQX2NhbWVsbGlhXzE5Ml9lY2I7CisrCQlFVlBfY2FtZWxsaWFfMTkyX29mYjsKKysJCUVWUF9jYW1lbGxpYV8yNTZfY2JjOworKwkJRVZQX2NhbWVsbGlhXzI1Nl9jZmIxMjg7CisrCQlFVlBfY2FtZWxsaWFfMjU2X2NmYjE7CisrCQlFVlBfY2FtZWxsaWFfMjU2X2NmYjg7CisrCQlFVlBfY2FtZWxsaWFfMjU2X2VjYjsKKysJCUVWUF9jYW1lbGxpYV8yNTZfb2ZiOworKwkJYTJpX2lwYWRkOworKwkJQVNJZGVudGlmaWVyc19mcmVlOworKwkJaTJkX0FTSWRPclJhbmdlOworKwkJRVZQX0NJUEhFUl9ibG9ja19zaXplOworKwkJdjNfYXNpZF9pc19jYW5vbmljYWw7CisrCQlJUEFkZHJlc3NDaG9pY2VfZnJlZTsKKysJCUVWUF9DSVBIRVJfQ1RYX3NldF9hcHBfZGF0YTsKKysJCUJJT19zZXRfY2FsbGJhY2tfYXJnOworKwkJdjNfYWRkcl9hZGRfcHJlZml4OworKwkJSVBBZGRyZXNzT3JSYW5nZV9pdDsKKysJCUJJT19zZXRfZmxhZ3M7CisrCQlBU0lkZW50aWZpZXJzX2l0OworKwkJdjNfYWRkcl9nZXRfcmFuZ2U7CisrCQlCSU9fbWV0aG9kX3R5cGU7CisrCQl2M19hZGRyX2luaGVyaXRzOworKwkJSVBBZGRyZXNzQ2hvaWNlX2l0OworKwkJQUVTX2lnZV9lbmNyeXB0OworKwkJdjNfYWRkcl9hZGRfcmFuZ2U7CisrCQlFVlBfQ0lQSEVSX0NUWF9uaWQ7CisrCQlkMmlfQVNSYW5nZTsKKysJCXYzX2FkZHJfYWRkX2luaGVyaXQ7CisrCQl2M19hc2lkX2FkZF9pZF9vcl9yYW5nZTsKKysJCXYzX2FkZHJfdmFsaWRhdGVfcmVzb3VyY2Vfc2V0OworKwkJRVZQX0NJUEhFUl9pdl9sZW5ndGg7CisrCQlFVlBfTURfdHlwZTsKKysJCXYzX2FzaWRfY2Fub25pemU7CisrCQlJUEFkZHJlc3NSYW5nZV9mcmVlOworKwkJdjNfYXNpZF9hZGRfaW5oZXJpdDsKKysJCUVWUF9DSVBIRVJfQ1RYX2tleV9sZW5ndGg7CisrCQlJUEFkZHJlc3NSYW5nZV9uZXc7CisrCQlBU0lkT3JSYW5nZV9uZXc7CisrCQlFVlBfTURfc2l6ZTsKKysJCUVWUF9NRF9DVFhfdGVzdF9mbGFnczsKKysJCUJJT19jbGVhcl9mbGFnczsKKysJCWkyZF9BU1JhbmdlOworKwkJSVBBZGRyZXNzUmFuZ2VfaXQ7CisrCQlJUEFkZHJlc3NDaG9pY2VfbmV3OworKwkJQVNJZGVudGlmaWVyQ2hvaWNlX25ldzsKKysJCUFTUmFuZ2VfZnJlZTsKKysJCUVWUF9NRF9wa2V5X3R5cGU7CisrCQlFVlBfTURfQ1RYX2NsZWFyX2ZsYWdzOworKwkJSVBBZGRyZXNzRmFtaWx5X2ZyZWU7CisrCQlpMmRfSVBBZGRyZXNzRmFtaWx5OworKwkJSVBBZGRyZXNzT3JSYW5nZV9uZXc7CisrCQlFVlBfQ0lQSEVSX2ZsYWdzOworKwkJdjNfYXNpZF92YWxpZGF0ZV9yZXNvdXJjZV9zZXQ7CisrCQlkMmlfSVBBZGRyZXNzUmFuZ2U7CisrCQlBRVNfYmlfaWdlX2VuY3J5cHQ7CisrCQlCSU9fZ2V0X2NhbGxiYWNrOworKwkJSVBBZGRyZXNzT3JSYW5nZV9mcmVlOworKwkJdjNfYWRkcl9zdWJzZXQ7CisrCQlkMmlfSVBBZGRyZXNzRmFtaWx5OworKwkJdjNfYXNpZF9zdWJzZXQ7CisrCQlCSU9fdGVzdF9mbGFnczsKKysJCWkyZF9BU0lkZW50aWZpZXJDaG9pY2U7CisrCQlBU1JhbmdlX2l0OworKwkJZDJpX0FTSWRlbnRpZmllcnM7CisrCQlBU1JhbmdlX25ldzsKKysJCWQyaV9JUEFkZHJlc3NDaG9pY2U7CisrCQl2M19hZGRyX2dldF9hZmk7CisrCQlFVlBfQ0lQSEVSX2tleV9sZW5ndGg7CisrCQlFVlBfQ2lwaGVyOworKwkJaTJkX0lQQWRkcmVzc09yUmFuZ2U7CisrCQlBU0lkT3JSYW5nZV9pdDsKKysJCUVWUF9DSVBIRVJfbmlkOworKwkJaTJkX0lQQWRkcmVzc0Nob2ljZTsKKysJCUVWUF9DSVBIRVJfQ1RYX2Jsb2NrX3NpemU7CisrCQlBU0lkZW50aWZpZXJzX25ldzsKKysJCXYzX2FkZHJfdmFsaWRhdGVfcGF0aDsKKysJCUlQQWRkcmVzc0ZhbWlseV9uZXc7CisrCQlFVlBfTURfQ1RYX3NldF9mbGFnczsKKysJCXYzX2FkZHJfaXNfY2Fub25pY2FsOworKwkJaTJkX0lQQWRkcmVzc1JhbmdlOworKwkJSVBBZGRyZXNzRmFtaWx5X2l0OworKwkJdjNfYXNpZF9pbmhlcml0czsKKysJCUVWUF9DSVBIRVJfQ1RYX2NpcGhlcjsKKysJCUVWUF9DSVBIRVJfQ1RYX2dldF9hcHBfZGF0YTsKKysJCUVWUF9NRF9ibG9ja19zaXplOworKwkJRVZQX0NJUEhFUl9DVFhfZmxhZ3M7CisrCQl2M19hc2lkX3ZhbGlkYXRlX3BhdGg7CisrCQlkMmlfSVBBZGRyZXNzT3JSYW5nZTsKKysJCXYzX2FkZHJfY2Fub25pemU7CisrCQlBU0lkZW50aWZpZXJDaG9pY2VfaXQ7CisrCQlFVlBfTURfQ1RYX21kOworKwkJZDJpX0FTSWRlbnRpZmllckNob2ljZTsKKysJCUJJT19tZXRob2RfbmFtZTsKKysJCUVWUF9DSVBIRVJfQ1RYX2l2X2xlbmd0aDsKKysJCUFTSWRPclJhbmdlX2ZyZWU7CisrCQlBU0lkZW50aWZpZXJDaG9pY2VfZnJlZTsKKysJCUJJT19nZXRfY2FsbGJhY2tfYXJnOworKwkJQklPX3NldF9jYWxsYmFjazsKKysJCWQyaV9BU0lkT3JSYW5nZTsKKysJCWkyZF9BU0lkZW50aWZpZXJzOworKwkJU0VFRF9kZWNyeXB0OworKwkJU0VFRF9lbmNyeXB0OworKwkJU0VFRF9jYmNfZW5jcnlwdDsKKysJCUVWUF9zZWVkX29mYjsKKysJCVNFRURfY2ZiMTI4X2VuY3J5cHQ7CisrCQlTRUVEX29mYjEyOF9lbmNyeXB0OworKwkJRVZQX3NlZWRfY2JjOworKwkJU0VFRF9lY2JfZW5jcnlwdDsKKysJCUVWUF9zZWVkX2VjYjsKKysJCVNFRURfc2V0X2tleTsKKysJCUVWUF9zZWVkX2NmYjEyODsKKysJCVg1MDlfRVhURU5TSU9OU19pdDsKKysJCVg1MDlfZ2V0MV9vY3NwOworKwkJT0NTUF9SRVFfQ1RYX2ZyZWU7CisrCQlpMmRfWDUwOV9FWFRFTlNJT05TOworKwkJT0NTUF9zZW5kcmVxX25iaW87CisrCQlPQ1NQX3NlbmRyZXFfbmV3OworKwkJZDJpX1g1MDlfRVhURU5TSU9OUzsKKysJCVg1MDlfQUxHT1JTX2l0OworKwkJWDUwOV9BTEdPUl9nZXQwOworKwkJWDUwOV9BTEdPUl9zZXQwOworKwkJQUVTX3Vud3JhcF9rZXk7CisrCQlBRVNfd3JhcF9rZXk7CisrCQlYNTA5YXRfZ2V0MF9kYXRhX2J5X09CSjsKKysJCUFTTjFfVFlQRV9zZXQxOworKwkJQVNOMV9TVFJJTkdfc2V0MDsKKysJCWkyZF9YNTA5X0FMR09SUzsKKysJCUJJT19mX3psaWI7CisrCQlDT01QX3psaWJfY2xlYW51cDsKKysJCWQyaV9YNTA5X0FMR09SUzsKKysJCUNNU19SZWNlaXB0UmVxdWVzdF9mcmVlOworKwkJUEVNX3dyaXRlX0NNUzsKKysJCUNNU19hZGQwX0NlcnRpZmljYXRlQ2hvaWNlczsKKysJCUNNU191bnNpZ25lZF9hZGQxX2F0dHJfYnlfT0JKOworKwkJRVJSX2xvYWRfQ01TX3N0cmluZ3M7CisrCQlDTVNfc2lnbl9yZWNlaXB0OworKwkJaTJkX0NNU19Db250ZW50SW5mbzsKKysJCUNNU19zaWduZWRfZGVsZXRlX2F0dHI7CisrCQlkMmlfQ01TX2JpbzsKKysJCUNNU191bnNpZ25lZF9nZXRfYXR0cl9ieV9OSUQ7CisrCQlDTVNfdmVyaWZ5OworKwkJU01JTUVfcmVhZF9DTVM7CisrCQlDTVNfZGVjcnlwdF9zZXQxX2tleTsKKysJCUNNU19TaWduZXJJbmZvX2dldDBfYWxnczsKKysJCUNNU19hZGQxX2NlcnQ7CisrCQlDTVNfc2V0X2RldGFjaGVkOworKwkJQ01TX2VuY3J5cHQ7CisrCQlDTVNfRW52ZWxvcGVkRGF0YV9jcmVhdGU7CisrCQlDTVNfdW5jb21wcmVzczsKKysJCUNNU19hZGQwX2NybDsKKysJCUNNU19TaWduZXJJbmZvX3ZlcmlmeV9jb250ZW50OworKwkJQ01TX3Vuc2lnbmVkX2dldDBfZGF0YV9ieV9PQko7CisrCQlQRU1fd3JpdGVfYmlvX0NNUzsKKysJCUNNU191bnNpZ25lZF9nZXRfYXR0cjsKKysJCUNNU19SZWNpcGllbnRJbmZvX2t0cmlfY2VydF9jbXA7CisrCQlDTVNfUmVjaXBpZW50SW5mb19rdHJpX2dldDBfYWxnczsKKysJCUNNU19SZWNpcEluZm9fa3RyaV9nZXQwX2FsZ3M7CisrCQlDTVNfQ29udGVudEluZm9fZnJlZTsKKysJCUNNU19maW5hbDsKKysJCUNNU19hZGRfc2ltcGxlX3NtaW1lY2FwOworKwkJQ01TX1NpZ25lckluZm9fdmVyaWZ5OworKwkJQ01TX2RhdGE7CisrCQlDTVNfQ29udGVudEluZm9faXQ7CisrCQlkMmlfQ01TX1JlY2VpcHRSZXF1ZXN0OworKwkJQ01TX2NvbXByZXNzOworKwkJQ01TX2RpZ2VzdF9jcmVhdGU7CisrCQlDTVNfU2lnbmVySW5mb19jZXJ0X2NtcDsKKysJCUNNU19TaWduZXJJbmZvX3NpZ247CisrCQlDTVNfZGF0YV9jcmVhdGU7CisrCQlpMmRfQ01TX2JpbzsKKysJCUNNU19FbmNyeXB0ZWREYXRhX3NldDFfa2V5OworKwkJQ01TX2RlY3J5cHQ7CisrCQlpbnRfc21pbWVfd3JpdGVfQVNOMTsKKysJCUNNU191bnNpZ25lZF9kZWxldGVfYXR0cjsKKysJCUNNU191bnNpZ25lZF9nZXRfYXR0cl9jb3VudDsKKysJCUNNU19hZGRfc21pbWVjYXA7CisrCQlQRU1fcmVhZF9DTVM7CisrCQlDTVNfc2lnbmVkX2dldF9hdHRyX2J5X09CSjsKKysJCWQyaV9DTVNfQ29udGVudEluZm87CisrCQlDTVNfYWRkX3N0YW5kYXJkX3NtaW1lY2FwOworKwkJQ01TX0NvbnRlbnRJbmZvX25ldzsKKysJCUNNU19SZWNpcGllbnRJbmZvX3R5cGU7CisrCQlDTVNfZ2V0MF90eXBlOworKwkJQ01TX2lzX2RldGFjaGVkOworKwkJQ01TX3NpZ247CisrCQlDTVNfc2lnbmVkX2FkZDFfYXR0cjsKKysJCUNNU191bnNpZ25lZF9nZXRfYXR0cl9ieV9PQko7CisrCQlTTUlNRV93cml0ZV9DTVM7CisrCQlDTVNfRW5jcnlwdGVkRGF0YV9kZWNyeXB0OworKwkJQ01TX2dldDBfUmVjaXBpZW50SW5mb3M7CisrCQlDTVNfYWRkMF9SZXZvY2F0aW9uSW5mb0Nob2ljZTsKKysJCUNNU19kZWNyeXB0X3NldDFfcGtleTsKKysJCUNNU19TaWduZXJJbmZvX3NldDFfc2lnbmVyX2NlcnQ7CisrCQlDTVNfZ2V0MF9zaWduZXJzOworKwkJQ01TX1JlY2VpcHRSZXF1ZXN0X2dldDBfdmFsdWVzOworKwkJQ01TX3NpZ25lZF9nZXQwX2RhdGFfYnlfT0JKOworKwkJQ01TX2dldDBfU2lnbmVySW5mb3M7CisrCQlDTVNfYWRkMF9jZXJ0OworKwkJQ01TX0VuY3J5cHRlZERhdGFfZW5jcnlwdDsKKysJCUNNU19kaWdlc3RfdmVyaWZ5OworKwkJQ01TX3NldDFfc2lnbmVyc19jZXJ0czsKKysJCUNNU19zaWduZWRfZ2V0X2F0dHI7CisrCQlDTVNfUmVjaXBpZW50SW5mb19zZXQwX2tleTsKKysJCUNNU19TaWduZWREYXRhX2luaXQ7CisrCQlDTVNfUmVjaXBpZW50SW5mb19rZWtyaV9nZXQwX2lkOworKwkJQ01TX3ZlcmlmeV9yZWNlaXB0OworKwkJQ01TX1JlY2VpcHRSZXF1ZXN0X2l0OworKwkJUEVNX3JlYWRfYmlvX0NNUzsKKysJCUNNU19nZXQxX2NybHM7CisrCQlDTVNfYWRkMF9yZWNpcGllbnRfa2V5OworKwkJU01JTUVfcmVhZF9BU04xOworKwkJQ01TX1JlY2VpcHRSZXF1ZXN0X25ldzsKKysJCUNNU19nZXQwX2NvbnRlbnQ7CisrCQlDTVNfZ2V0MV9SZWNlaXB0UmVxdWVzdDsKKysJCUNNU19zaWduZWRfYWRkMV9hdHRyX2J5X09CSjsKKysJCUNNU19SZWNpcGllbnRJbmZvX2tla3JpX2lkX2NtcDsKKysJCUNNU19hZGQxX1JlY2VpcHRSZXF1ZXN0OworKwkJQ01TX1NpZ25lckluZm9fZ2V0MF9zaWduZXJfaWQ7CisrCQlDTVNfdW5zaWduZWRfYWRkMV9hdHRyX2J5X05JRDsKKysJCUNNU191bnNpZ25lZF9hZGQxX2F0dHI7CisrCQlDTVNfc2lnbmVkX2dldF9hdHRyX2J5X05JRDsKKysJCUNNU19nZXQxX2NlcnRzOworKwkJQ01TX3NpZ25lZF9hZGQxX2F0dHJfYnlfTklEOworKwkJQ01TX3Vuc2lnbmVkX2FkZDFfYXR0cl9ieV90eHQ7CisrCQlDTVNfZGF0YUZpbmFsOworKwkJQ01TX1JlY2lwaWVudEluZm9fa3RyaV9nZXQwX3NpZ25lcl9pZDsKKysJCUNNU19SZWNpcEluZm9fa3RyaV9nZXQwX3NpZ3JfaWQ7CisrCQlpMmRfQ01TX1JlY2VpcHRSZXF1ZXN0OworKwkJQ01TX2FkZDFfcmVjaXBpZW50X2NlcnQ7CisrCQlDTVNfZGF0YUluaXQ7CisrCQlDTVNfc2lnbmVkX2FkZDFfYXR0cl9ieV90eHQ7CisrCQlDTVNfUmVjaXBpZW50SW5mb19kZWNyeXB0OworKwkJQ01TX3NpZ25lZF9nZXRfYXR0cl9jb3VudDsKKysJCUNNU19nZXQwX2VDb250ZW50VHlwZTsKKysJCUNNU19zZXQxX2VDb250ZW50VHlwZTsKKysJCUNNU19SZWNlaXB0UmVxdWVzdF9jcmVhdGUwOworKwkJQ01TX2FkZDFfc2lnbmVyOworKwkJQ01TX1JlY2lwaWVudEluZm9fc2V0MF9wa2V5OworKwkJRU5HSU5FX3NldF9sb2FkX3NzbF9jbGllbnRfY2VydF9mdW5jdGlvbjsKKysJCUVOR0lORV9zZXRfbGRfc3NsX2NsbnRfY2VydF9mbjsKKysJCUVOR0lORV9nZXRfc3NsX2NsaWVudF9jZXJ0X2Z1bmN0aW9uOworKwkJRU5HSU5FX2dldF9zc2xfY2xpZW50X2NlcnRfZm47CisrCQlFTkdJTkVfbG9hZF9zc2xfY2xpZW50X2NlcnQ7CisrCQlFTkdJTkVfbG9hZF9jYXBpOworKwkJT1BFTlNTTF9pc3NlcnZpY2U7CisrCQlGSVBTX2RzYV9zaWdfZGVjb2RlOworKwkJRVZQX0NJUEhFUl9DVFhfY2xlYXJfZmxhZ3M7CisrCQlGSVBTX3JhbmRfc3RhdHVzOworKwkJRklQU19yYW5kX3NldF9rZXk7CisrCQlDUllQVE9fc2V0X21lbV9pbmZvX2Z1bmN0aW9uczsKKysJCVJTQV9YOTMxX2dlbmVyYXRlX2tleV9leDsKKysJCWludF9FUlJfc2V0X3N0YXRlX2Z1bmM7CisrCQlpbnRfRVZQX01EX3NldF9lbmdpbmVfY2FsbGJhY2tzOworKwkJaW50X0NSWVBUT19zZXRfZG9fZHlubG9ja19jYWxsYmFjazsKKysJCUZJUFNfcm5nX3N0aWNrOworKwkJRVZQX0NJUEhFUl9DVFhfc2V0X2ZsYWdzOworKwkJQk5fWDkzMV9nZW5lcmF0ZV9wcmltZV9leDsKKysJCUZJUFNfc2VsZnRlc3RfY2hlY2s7CisrCQlGSVBTX3JhbmRfc2V0X2R0OworKwkJQ1JZUFRPX2RiZ19wb3BfaW5mbzsKKysJCUZJUFNfZHNhX2ZyZWU7CisrCQlSU0FfWDkzMV9kZXJpdmVfZXg7CisrCQlGSVBTX3JzYV9uZXc7CisrCQlGSVBTX3JhbmRfYnl0ZXM7CisrCQlmaXBzX2NpcGhlcl90ZXN0OworKwkJRVZQX0NJUEhFUl9DVFhfdGVzdF9mbGFnczsKKysJCUNSWVBUT19tYWxsb2NfZGVidWdfaW5pdDsKKysJCUNSWVBUT19kYmdfcHVzaF9pbmZvOworKwkJRklQU19jb3JydXB0X3JzYV9rZXlnZW47CisrCQlGSVBTX2RoX25ldzsKKysJCUZJUFNfY29ycnVwdF9kc2Ffa2V5Z2VuOworKwkJRklQU19kaF9mcmVlOworKwkJZmlwc19wa2V5X3NpZ25hdHVyZV90ZXN0OworKwkJRVZQX2FkZF9hbGdfbW9kdWxlOworKwkJaW50X1JBTkRfaW5pdF9lbmdpbmVfY2FsbGJhY2tzOworKwkJaW50X0VWUF9DSVBIRVJfc2V0X2VuZ2luZV9jYWxsYmFja3M7CisrCQlpbnRfRVZQX01EX2luaXRfZW5naW5lX2NhbGxiYWNrczsKKysJCUZJUFNfcmFuZF90ZXN0X21vZGU7CisrCQlGSVBTX3JhbmRfcmVzZXQ7CisrCQlGSVBTX2RzYV9uZXc7CisrCQlpbnRfUkFORF9zZXRfY2FsbGJhY2tzOworKwkJQk5fWDkzMV9kZXJpdmVfcHJpbWVfZXg7CisrCQlpbnRfRVJSX2xpYl9pbml0OworKwkJaW50X0VWUF9DSVBIRVJfaW5pdF9lbmdpbmVfY2FsbGJhY2tzOworKwkJRklQU19yc2FfZnJlZTsKKysJCUZJUFNfZHNhX3NpZ19lbmNvZGU7CisrCQlDUllQVE9fZGJnX3JlbW92ZV9hbGxfaW5mbzsKKysJCU9QRU5TU0xfaW5pdDsKKysJCUNSWVBUT19zdHJkdXA7CisrCQlKUEFLRV9TVEVQM0FfcHJvY2VzczsKKysJCUpQQUtFX1NURVAxX3JlbGVhc2U7CisrCQlKUEFLRV9nZXRfc2hhcmVkX2tleTsKKysJCUpQQUtFX1NURVAzQl9pbml0OworKwkJSlBBS0VfU1RFUDFfZ2VuZXJhdGU7CisrCQlKUEFLRV9TVEVQMV9pbml0OworKwkJSlBBS0VfU1RFUDNCX3Byb2Nlc3M7CisrCQlKUEFLRV9TVEVQMl9nZW5lcmF0ZTsKKysJCUpQQUtFX0NUWF9uZXc7CisrCQlKUEFLRV9DVFhfZnJlZTsKKysJCUpQQUtFX1NURVAzQl9yZWxlYXNlOworKwkJSlBBS0VfU1RFUDNBX3JlbGVhc2U7CisrCQlKUEFLRV9TVEVQMl9wcm9jZXNzOworKwkJSlBBS0VfU1RFUDNCX2dlbmVyYXRlOworKwkJSlBBS0VfU1RFUDFfcHJvY2VzczsKKysJCUpQQUtFX1NURVAzQV9nZW5lcmF0ZTsKKysJCUpQQUtFX1NURVAyX3JlbGVhc2U7CisrCQlKUEFLRV9TVEVQM0FfaW5pdDsKKysJCUVSUl9sb2FkX0pQQUtFX3N0cmluZ3M7CisrCQlKUEFLRV9TVEVQMl9pbml0OworKwkJcHF1ZXVlX3NpemU7CisrCQlpMmRfVFNfQUNDVVJBQ1k7CisrCQlpMmRfVFNfTVNHX0lNUFJJTlRfZnA7CisrCQlpMmRfVFNfTVNHX0lNUFJJTlQ7CisrCQlFVlBfUEtFWV9wcmludF9wdWJsaWM7CisrCQlFVlBfUEtFWV9DVFhfbmV3OworKwkJaTJkX1RTX1RTVF9JTkZPOworKwkJRVZQX1BLRVlfYXNuMV9maW5kOworKwkJRFNPX01FVEhPRF9iZW9zOworKwkJVFNfQ09ORl9sb2FkX2NlcnQ7CisrCQlUU19SRVFfZ2V0X2V4dDsKKysJCUVWUF9QS0VZX3NpZ25faW5pdDsKKysJCUFTTjFfaXRlbV9wcmludDsKKysJCVRTX1RTVF9JTkZPX3NldF9ub25jZTsKKysJCVRTX1JFU1BfZHVwOworKwkJRU5HSU5FX3JlZ2lzdGVyX3BrZXlfbWV0aHM7CisrCQlFVlBfUEtFWV9hc24xX2FkZDA7CisrCQlQS0NTN19hZGQwX2F0dHJpYl9zaWduaW5nX3RpbWU7CisrCQlpMmRfVFNfVFNUX0lORk9fZnA7CisrCQlCSU9fYXNuMV9nZXRfcHJlZml4OworKwkJVFNfVFNUX0lORk9fc2V0X3RpbWU7CisrCQlFVlBfUEtFWV9tZXRoX3NldF9kZWNyeXB0OworKwkJRVZQX1BLRVlfc2V0X3R5cGVfc3RyOworKwkJRVZQX1BLRVlfQ1RYX2dldF9rZXlnZW5faW5mbzsKKysJCVRTX1JFUV9zZXRfcG9saWN5X2lkOworKwkJZDJpX1RTX1JFU1BfZnA7CisrCQlFTkdJTkVfZ2V0X3BrZXlfYXNuMV9tZXRoX2VuZ2luZTsKKysJCUVOR0lORV9nZXRfcGtleV9hc24xX21ldGhfZW5nOworKwkJV0hJUkxQT09MX0luaXQ7CisrCQlUU19SRVNQX3NldF9zdGF0dXNfaW5mbzsKKysJCUVWUF9QS0VZX2tleWdlbjsKKysJCUVWUF9EaWdlc3RTaWduSW5pdDsKKysJCVRTX0FDQ1VSQUNZX3NldF9taWxsaXM7CisrCQlUU19SRVFfZHVwOworKwkJR0VORVJBTF9OQU1FX2R1cDsKKysJCUFTTjFfU0VRVUVOQ0VfQU5ZX2l0OworKwkJV0hJUkxQT09MOworKwkJWDUwOV9TVE9SRV9nZXQxX2NybHM7CisrCQlFTkdJTkVfZ2V0X3BrZXlfYXNuMV9tZXRoOworKwkJRVZQX1BLRVlfYXNuMV9uZXc7CisrCQlCSU9fbmV3X05ERUY7CisrCQlFTkdJTkVfZ2V0X3BrZXlfbWV0aDsKKysJCVRTX01TR19JTVBSSU5UX3NldF9hbGdvOworKwkJaTJkX1RTX1RTVF9JTkZPX2JpbzsKKysJCVRTX1RTVF9JTkZPX3NldF9vcmRlcmluZzsKKysJCVRTX1RTVF9JTkZPX2dldF9leHRfYnlfT0JKOworKwkJQ1JZUFRPX1RIUkVBRElEX3NldF9wb2ludGVyOworKwkJVFNfQ09ORl9nZXRfdHNhX3NlY3Rpb247CisrCQlTTUlNRV93cml0ZV9BU04xOworKwkJVFNfUkVTUF9DVFhfc2V0X3NpZ25lcl9rZXk7CisrCQlFVlBfUEtFWV9lbmNyeXB0X29sZDsKKysJCUVWUF9QS0VZX2VuY3J5cHRfaW5pdDsKKysJCUNSWVBUT19USFJFQURJRF9jcHk7CisrCQlBU04xX1BDVFhfZ2V0X2NlcnRfZmxhZ3M7CisrCQlpMmRfRVNTX1NJR05JTkdfQ0VSVDsKKysJCVRTX0NPTkZfbG9hZF9rZXk7CisrCQlpMmRfQVNOMV9TRVFVRU5DRV9BTlk7CisrCQlkMmlfVFNfTVNHX0lNUFJJTlRfYmlvOworKwkJRVZQX1BLRVlfYXNuMV9zZXRfcHVibGljOworKwkJYjJpX1B1YmxpY0tleV9iaW87CisrCQlCSU9fYXNuMV9zZXRfcHJlZml4OworKwkJRVZQX1BLRVlfbmV3X21hY19rZXk7CisrCQlCSU9fbmV3X0NNUzsKKysJCUNSWVBUT19USFJFQURJRF9jbXA7CisrCQlUU19SRVFfZXh0X2ZyZWU7CisrCQlFVlBfUEtFWV9hc24xX3NldF9mcmVlOworKwkJRVZQX1BLRVlfZ2V0MF9hc24xOworKwkJZDJpX05FVFNDQVBFX1g1MDk7CisrCQlFVlBfUEtFWV92ZXJpZnlfcmVjb3Zlcl9pbml0OworKwkJRVZQX1BLRVlfQ1RYX3NldF9kYXRhOworKwkJRVZQX1BLRVlfa2V5Z2VuX2luaXQ7CisrCQlUU19SRVNQX0NUWF9zZXRfc3RhdHVzX2luZm87CisrCQlUU19NU0dfSU1QUklOVF9nZXRfYWxnbzsKKysJCVRTX1JFUV9wcmludF9iaW87CisrCQlFVlBfUEtFWV9DVFhfY3RybF9zdHI7CisrCQlFVlBfUEtFWV9nZXRfZGVmYXVsdF9kaWdlc3RfbmlkOworKwkJUEVNX3dyaXRlX2Jpb19QS0NTN19zdHJlYW07CisrCQlUU19NU0dfSU1QUklOVF9wcmludF9iaW87CisrCQlCTl9hc2MyYm47CisrCQlUU19SRVFfZ2V0X3BvbGljeV9pZDsKKysJCUVOR0lORV9zZXRfZGVmYXVsdF9wa2V5X2FzbjFfbWV0aHM7CisrCQlFTkdJTkVfc2V0X2RlZl9wa2V5X2FzbjFfbWV0aHM7CisrCQlkMmlfVFNfQUNDVVJBQ1k7CisrCQlEU09fZ2xvYmFsX2xvb2t1cDsKKysJCVRTX0NPTkZfc2V0X3RzYV9uYW1lOworKwkJaTJkX0FTTjFfU0VUX0FOWTsKKysJCUVOR0lORV9sb2FkX2dvc3Q7CisrCQlXSElSTFBPT0xfQml0VXBkYXRlOworKwkJQVNOMV9QQ1RYX2dldF9mbGFnczsKKysJCVRTX1RTVF9JTkZPX2dldF9leHRfYnlfTklEOworKwkJVFNfUkVTUF9uZXc7CisrCQlFU1NfQ0VSVF9JRF9kdXA7CisrCQlUU19TVEFUVVNfSU5GT19kdXA7CisrCQlUU19SRVFfZGVsZXRlX2V4dDsKKysJCUVWUF9EaWdlc3RWZXJpZnlGaW5hbDsKKysJCUVWUF9QS0VZX3ByaW50X3BhcmFtczsKKysJCWkyZF9DTVNfYmlvX3N0cmVhbTsKKysJCVRTX1JFUV9nZXRfbXNnX2ltcHJpbnQ7CisrCQlPQkpfZmluZF9zaWdpZF9ieV9hbGdzOworKwkJVFNfVFNUX0lORk9fZ2V0X3NlcmlhbDsKKysJCVRTX1JFUV9nZXRfbm9uY2U7CisrCQlYNTA5X1BVQktFWV9zZXQwX3BhcmFtOworKwkJRVZQX1BLRVlfQ1RYX3NldDBfa2V5Z2VuX2luZm87CisrCQlESVNUX1BPSU5UX3NldF9kcG5hbWU7CisrCQlpMmRfSVNTVUlOR19ESVNUX1BPSU5UOworKwkJQVNOMV9TRVRfQU5ZX2l0OworKwkJRVZQX1BLRVlfQ1RYX2dldF9kYXRhOworKwkJVFNfU1RBVFVTX0lORk9fcHJpbnRfYmlvOworKwkJRVZQX1BLRVlfZGVyaXZlX2luaXQ7CisrCQlkMmlfVFNfVFNUX0lORk87CisrCQlFVlBfUEtFWV9hc24xX2FkZF9hbGlhczsKKysJCWQyaV9UU19SRVNQX2JpbzsKKysJCU9USEVSTkFNRV9jbXA7CisrCQlHRU5FUkFMX05BTUVfc2V0MF92YWx1ZTsKKysJCVBLQ1M3X1JFQ0lQX0lORk9fZ2V0MF9hbGc7CisrCQlUU19SRVNQX0NUWF9uZXc7CisrCQlUU19SRVNQX3NldF90c3RfaW5mbzsKKysJCVBLQ1M3X2ZpbmFsOworKwkJRVZQX1BLRVlfYmFzZV9pZDsKKysJCVRTX1JFU1BfQ1RYX3NldF9zaWduZXJfY2VydDsKKysJCVRTX1JFUV9zZXRfbXNnX2ltcHJpbnQ7CisrCQlFVlBfUEtFWV9DVFhfY3RybDsKKysJCVRTX0NPTkZfc2V0X2RpZ2VzdHM7CisrCQlkMmlfVFNfTVNHX0lNUFJJTlQ7CisrCQlFVlBfUEtFWV9tZXRoX3NldF9jdHJsOworKwkJVFNfUkVRX2dldF9leHRfYnlfTklEOworKwkJUEtDUzVfcGJlX3NldDBfYWxnb3I7CisrCQlCTl9CTElORElOR190aHJlYWRfaWQ7CisrCQlUU19BQ0NVUkFDWV9uZXc7CisrCQlYNTA5X0NSTF9NRVRIT0RfZnJlZTsKKysJCUFTTjFfUENUWF9nZXRfbm1fZmxhZ3M7CisrCQlFVlBfUEtFWV9tZXRoX3NldF9zaWduOworKwkJQ1JZUFRPX1RIUkVBRElEX2N1cnJlbnQ7CisrCQlFVlBfUEtFWV9kZWNyeXB0X2luaXQ7CisrCQlORVRTQ0FQRV9YNTA5X2ZyZWU7CisrCQlpMmJfUFZLX2JpbzsKKysJCUVWUF9QS0VZX3ByaW50X3ByaXZhdGU7CisrCQlHRU5FUkFMX05BTUVfZ2V0MF92YWx1ZTsKKysJCWIyaV9QVktfYmlvOworKwkJQVNOMV9VVENUSU1FX2FkajsKKysJCVRTX1RTVF9JTkZPX25ldzsKKysJCUVWUF9NRF9kb19hbGxfc29ydGVkOworKwkJVFNfQ09ORl9zZXRfZGVmYXVsdF9lbmdpbmU7CisrCQlUU19BQ0NVUkFDWV9zZXRfc2Vjb25kczsKKysJCVRTX1RTVF9JTkZPX2dldF90aW1lOworKwkJUEtDUzhfcGtleV9nZXQwOworKwkJRVZQX1BLRVlfYXNuMV9nZXQwOworKwkJT0JKX2FkZF9zaWdpZDsKKysJCVBLQ1M3X1NJR05FUl9JTkZPX3NpZ247CisrCQlFVlBfUEtFWV9wYXJhbWdlbl9pbml0OworKwkJRVZQX1BLRVlfc2lnbjsKKysJCU9CSl9zaWdpZF9mcmVlOworKwkJRVZQX1BLRVlfbWV0aF9zZXRfaW5pdDsKKysJCWQyaV9FU1NfSVNTVUVSX1NFUklBTDsKKysJCUlTU1VJTkdfRElTVF9QT0lOVF9uZXc7CisrCQlBU04xX1RJTUVfYWRqOworKwkJVFNfT0JKX3ByaW50X2JpbzsKKysJCUVWUF9QS0VZX21ldGhfc2V0X3ZlcmlmeV9yZWNvdmVyOworKwkJRVZQX1BLRVlfbWV0aF9zZXRfdnJmeV9yZWNvdmVyOworKwkJVFNfUkVTUF9nZXRfc3RhdHVzX2luZm87CisrCQlDTVNfc3RyZWFtOworKwkJRVZQX1BLRVlfQ1RYX3NldF9jYjsKKysJCVBLQ1M3X3RvX1RTX1RTVF9JTkZPOworKwkJQVNOMV9QQ1RYX2dldF9vaWRfZmxhZ3M7CisrCQlUU19UU1RfSU5GT19hZGRfZXh0OworKwkJRVZQX1BLRVlfbWV0aF9zZXRfZGVyaXZlOworKwkJaTJkX1RTX1JFU1BfZnA7CisrCQlpMmRfVFNfTVNHX0lNUFJJTlRfYmlvOworKwkJVFNfUkVTUF9DVFhfc2V0X2FjY3VyYWN5OworKwkJVFNfUkVRX3NldF9ub25jZTsKKysJCUVTU19DRVJUX0lEX25ldzsKKysJCUVOR0lORV9wa2V5X2FzbjFfZmluZF9zdHI7CisrCQlUU19SRVFfZ2V0X2V4dF9jb3VudDsKKysJCUJVRl9yZXZlcnNlOworKwkJVFNfVFNUX0lORk9fcHJpbnRfYmlvOworKwkJZDJpX0lTU1VJTkdfRElTVF9QT0lOVDsKKysJCUVOR0lORV9nZXRfcGtleV9tZXRoczsKKysJCWkyYl9Qcml2YXRlS2V5X2JpbzsKKysJCWkyZF9UU19SRVNQOworKwkJYjJpX1B1YmxpY0tleTsKKysJCVRTX1ZFUklGWV9DVFhfY2xlYW51cDsKKysJCVRTX1NUQVRVU19JTkZPX2ZyZWU7CisrCQlUU19SRVNQX3ZlcmlmeV90b2tlbjsKKysJCU9CSl9ic2VhcmNoX2V4XzsKKysJCUFTTjFfYm5fcHJpbnQ7CisrCQlFVlBfUEtFWV9hc24xX2dldF9jb3VudDsKKysJCUVOR0lORV9yZWdpc3Rlcl9wa2V5X2FzbjFfbWV0aHM7CisrCQlBU04xX1BDVFhfc2V0X25tX2ZsYWdzOworKwkJRVZQX0RpZ2VzdFZlcmlmeUluaXQ7CisrCQlFTkdJTkVfc2V0X2RlZmF1bHRfcGtleV9tZXRoczsKKysJCVRTX1RTVF9JTkZPX2dldF9wb2xpY3lfaWQ7CisrCQlUU19SRVFfZ2V0X2NlcnRfcmVxOworKwkJWDUwOV9DUkxfc2V0X21ldGhfZGF0YTsKKysJCVBLQ1M4X3BrZXlfc2V0MDsKKysJCUFTTjFfU1RSSU5HX2NvcHk7CisrCQlkMmlfVFNfVFNUX0lORk9fZnA7CisrCQlYNTA5X0NSTF9tYXRjaDsKKysJCUVWUF9QS0VZX2FzbjFfc2V0X3ByaXZhdGU7CisrCQlUU19UU1RfSU5GT19nZXRfZXh0X2QyaTsKKysJCVRTX1JFU1BfQ1RYX2FkZF9wb2xpY3k7CisrCQlkMmlfVFNfUkVTUDsKKysJCVRTX0NPTkZfbG9hZF9jZXJ0czsKKysJCVRTX1RTVF9JTkZPX2dldF9tc2dfaW1wcmludDsKKysJCUVSUl9sb2FkX1RTX3N0cmluZ3M7CisrCQlUU19UU1RfSU5GT19nZXRfdmVyc2lvbjsKKysJCUVWUF9QS0VZX0NUWF9kdXA7CisrCQlFVlBfUEtFWV9tZXRoX3NldF92ZXJpZnk7CisrCQlpMmJfUHVibGljS2V5X2JpbzsKKysJCVRTX0NPTkZfc2V0X2NlcnRzOworKwkJRVZQX1BLRVlfYXNuMV9nZXQwX2luZm87CisrCQlUU19WRVJJRllfQ1RYX2ZyZWU7CisrCQlUU19SRVFfZ2V0X2V4dF9ieV9jcml0aWNhbDsKKysJCVRTX1JFU1BfQ1RYX3NldF9zZXJpYWxfY2I7CisrCQlYNTA5X0NSTF9nZXRfbWV0aF9kYXRhOworKwkJVFNfUkVTUF9DVFhfc2V0X3RpbWVfY2I7CisrCQlUU19NU0dfSU1QUklOVF9nZXRfbXNnOworKwkJVFNfVFNUX0lORk9fZXh0X2ZyZWU7CisrCQlUU19SRVFfZ2V0X3ZlcnNpb247CisrCQlUU19SRVFfYWRkX2V4dDsKKysJCUVWUF9QS0VZX0NUWF9zZXRfYXBwX2RhdGE7CisrCQlPQkpfYnNlYXJjaF87CisrCQlFVlBfUEtFWV9tZXRoX3NldF92ZXJpZnljdHg7CisrCQlpMmRfUEtDUzdfYmlvX3N0cmVhbTsKKysJCUNSWVBUT19USFJFQURJRF9zZXRfbnVtZXJpYzsKKysJCVBLQ1M3X3NpZ25fYWRkX3NpZ25lcjsKKysJCWQyaV9UU19UU1RfSU5GT19iaW87CisrCQlUU19UU1RfSU5GT19nZXRfb3JkZXJpbmc7CisrCQlUU19SRVNQX3ByaW50X2JpbzsKKysJCVRTX1RTVF9JTkZPX2dldF9leHRzOworKwkJSE1BQ19DVFhfY29weTsKKysJCVBLQ1M1X3BiZTJfc2V0X2l2OworKwkJRU5HSU5FX2dldF9wa2V5X2FzbjFfbWV0aHM7CisrCQliMmlfUHJpdmF0ZUtleTsKKysJCUVWUF9QS0VZX0NUWF9nZXRfYXBwX2RhdGE7CisrCQlUU19SRVFfc2V0X2NlcnRfcmVxOworKwkJQ1JZUFRPX1RIUkVBRElEX3NldF9jYWxsYmFjazsKKysJCVRTX0NPTkZfc2V0X3NlcmlhbDsKKysJCVRTX1RTVF9JTkZPX2ZyZWU7CisrCQlkMmlfVFNfUkVRX2ZwOworKwkJVFNfUkVTUF92ZXJpZnlfcmVzcG9uc2U7CisrCQlpMmRfRVNTX0lTU1VFUl9TRVJJQUw7CisrCQlUU19BQ0NVUkFDWV9nZXRfc2Vjb25kczsKKysJCUVWUF9DSVBIRVJfZG9fYWxsOworKwkJYjJpX1ByaXZhdGVLZXlfYmlvOworKwkJT0NTUF9DRVJUSURfZHVwOworKwkJWDUwOV9QVUJLRVlfZ2V0MF9wYXJhbTsKKysJCVRTX01TR19JTVBSSU5UX2R1cDsKKysJCVBLQ1M3X3ByaW50X2N0eDsKKysJCWkyZF9UU19SRVFfYmlvOworKwkJRVZQX3doaXJscG9vbDsKKysJCUVWUF9QS0VZX2FzbjFfc2V0X3BhcmFtOworKwkJRVZQX1BLRVlfbWV0aF9zZXRfZW5jcnlwdDsKKysJCUFTTjFfUENUWF9zZXRfZmxhZ3M7CisrCQlpMmRfRVNTX0NFUlRfSUQ7CisrCQlUU19WRVJJRllfQ1RYX25ldzsKKysJCVRTX1JFU1BfQ1RYX3NldF9leHRlbnNpb25fY2I7CisrCQlFTkdJTkVfcmVnaXN0ZXJfYWxsX3BrZXlfbWV0aHM7CisrCQlUU19SRVNQX0NUWF9zZXRfc3RhdHVzX2luZm9fY29uZDsKKysJCVRTX1JFU1BfQ1RYX3NldF9zdGF0X2luZm9fY29uZDsKKysJCUVWUF9QS0VZX3ZlcmlmeTsKKysJCVdISVJMUE9PTF9GaW5hbDsKKysJCVg1MDlfQ1JMX01FVEhPRF9uZXc7CisrCQlFVlBfRGlnZXN0U2lnbkZpbmFsOworKwkJVFNfUkVTUF9DVFhfc2V0X2RlZl9wb2xpY3k7CisrCQlORVRTQ0FQRV9YNTA5X2l0OworKwkJVFNfUkVTUF9jcmVhdGVfcmVzcG9uc2U7CisrCQlQS0NTN19TSUdORVJfSU5GT19nZXQwX2FsZ3M7CisrCQlUU19UU1RfSU5GT19nZXRfbm9uY2U7CisrCQlFVlBfUEtFWV9kZWNyeXB0X29sZDsKKysJCVRTX1RTVF9JTkZPX3NldF9wb2xpY3lfaWQ7CisrCQlUU19DT05GX3NldF9lc3NfY2VydF9pZF9jaGFpbjsKKysJCUVWUF9QS0VZX0NUWF9nZXQwX3BrZXk7CisrCQlkMmlfVFNfUkVROworKwkJRVZQX1BLRVlfYXNuMV9maW5kX3N0cjsKKysJCUJJT19mX2FzbjE7CisrCQlFU1NfU0lHTklOR19DRVJUX25ldzsKKysJCUVWUF9QQkVfZmluZDsKKysJCVg1MDlfQ1JMX2dldDBfYnlfY2VydDsKKysJCUVWUF9QS0VZX2Rlcml2ZTsKKysJCWkyZF9UU19SRVE7CisrCQlUU19UU1RfSU5GT19kZWxldGVfZXh0OworKwkJRVNTX0lTU1VFUl9TRVJJQUxfZnJlZTsKKysJCUFTTjFfUENUWF9zZXRfc3RyX2ZsYWdzOworKwkJRU5HSU5FX2dldF9wa2V5X2FzbjFfbWV0aF9zdHI7CisrCQlUU19DT05GX3NldF9zaWduZXJfa2V5OworKwkJVFNfQUNDVVJBQ1lfZ2V0X21pbGxpczsKKysJCVRTX1JFU1BfZ2V0X3Rva2VuOworKwkJVFNfQUNDVVJBQ1lfZHVwOworKwkJRU5HSU5FX3JlZ2lzdGVyX2FsbF9wa2V5X2FzbjFfbWV0aHM7CisrCQlFTkdJTkVfcmVnX2FsbF9wa2V5X2FzbjFfbWV0aHM7CisrCQlYNTA5X0NSTF9zZXRfZGVmYXVsdF9tZXRob2Q7CisrCQlDUllQVE9fVEhSRUFESURfaGFzaDsKKysJCUNNU19Db250ZW50SW5mb19wcmludF9jdHg7CisrCQlUU19SRVNQX2ZyZWU7CisrCQlJU1NVSU5HX0RJU1RfUE9JTlRfZnJlZTsKKysJCUVTU19JU1NVRVJfU0VSSUFMX25ldzsKKysJCUNNU19hZGQxX2NybDsKKysJCVBLQ1M3X2FkZDFfYXR0cmliX2RpZ2VzdDsKKysJCVRTX1JFU1BfQ1RYX2FkZF9tZDsKKysJCVRTX1RTVF9JTkZPX2R1cDsKKysJCUVOR0lORV9zZXRfcGtleV9hc24xX21ldGhzOworKwkJUEVNX3dyaXRlX2Jpb19QYXJhbWV0ZXJzOworKwkJVFNfVFNUX0lORk9fZ2V0X2FjY3VyYWN5OworKwkJWDUwOV9DUkxfZ2V0MF9ieV9zZXJpYWw7CisrCQlUU19UU1RfSU5GT19zZXRfdmVyc2lvbjsKKysJCVRTX1JFU1BfQ1RYX2dldF90c3RfaW5mbzsKKysJCVRTX1JFU1BfdmVyaWZ5X3NpZ25hdHVyZTsKKysJCUNSWVBUT19USFJFQURJRF9nZXRfY2FsbGJhY2s7CisrCQlUU19UU1RfSU5GT19nZXRfdHNhOworKwkJVFNfU1RBVFVTX0lORk9fbmV3OworKwkJRVZQX1BLRVlfQ1RYX2dldF9jYjsKKysJCVRTX1JFUV9nZXRfZXh0X2QyaTsKKysJCUdFTkVSQUxfTkFNRV9zZXQwX290aGVybmFtZTsKKysJCVRTX1RTVF9JTkZPX2dldF9leHRfY291bnQ7CisrCQlUU19SRVNQX0NUWF9nZXRfcmVxdWVzdDsKKysJCWkyZF9ORVRTQ0FQRV9YNTA5OworKwkJRU5HSU5FX2dldF9wa2V5X21ldGhfZW5naW5lOworKwkJRVZQX1BLRVlfbWV0aF9zZXRfc2lnbmN0eDsKKysJCUVWUF9QS0VZX2FzbjFfY29weTsKKysJCUFTTjFfVFlQRV9jbXA7CisrCQlFVlBfQ0lQSEVSX2RvX2FsbF9zb3J0ZWQ7CisrCQlFVlBfUEtFWV9DVFhfZnJlZTsKKysJCUlTU1VJTkdfRElTVF9QT0lOVF9pdDsKKysJCWQyaV9UU19NU0dfSU1QUklOVF9mcDsKKysJCVg1MDlfU1RPUkVfZ2V0MV9jZXJ0czsKKysJCUVWUF9QS0VZX0NUWF9nZXRfb3BlcmF0aW9uOworKwkJZDJpX0VTU19TSUdOSU5HX0NFUlQ7CisrCQlUU19DT05GX3NldF9vcmRlcmluZzsKKysJCUVWUF9QQkVfYWxnX2FkZF90eXBlOworKwkJVFNfUkVRX3NldF92ZXJzaW9uOworKwkJRVZQX1BLRVlfZ2V0MDsKKysJCUJJT19hc24xX3NldF9zdWZmaXg7CisrCQlpMmRfVFNfU1RBVFVTX0lORk87CisrCQlFVlBfTURfZG9fYWxsOworKwkJVFNfVFNUX0lORk9fc2V0X2FjY3VyYWN5OworKwkJUEtDUzdfYWRkX2F0dHJpYl9jb250ZW50X3R5cGU7CisrCQlFUlJfcmVtb3ZlX3RocmVhZF9zdGF0ZTsKKysJCUVWUF9QS0VZX21ldGhfYWRkMDsKKysJCVRTX1RTVF9JTkZPX3NldF90c2E7CisrCQlFVlBfUEtFWV9tZXRoX25ldzsKKysJCVdISVJMUE9PTF9VcGRhdGU7CisrCQlUU19DT05GX3NldF9hY2N1cmFjeTsKKysJCUFTTjFfUENUWF9zZXRfb2lkX2ZsYWdzOworKwkJRVNTX1NJR05JTkdfQ0VSVF9kdXA7CisrCQlkMmlfVFNfUkVRX2JpbzsKKysJCVg1MDlfdGltZV9hZGpfZXg7CisrCQlUU19SRVNQX0NUWF9hZGRfZmxhZ3M7CisrCQlkMmlfVFNfU1RBVFVTX0lORk87CisrCQlUU19NU0dfSU1QUklOVF9zZXRfbXNnOworKwkJQklPX2FzbjFfZ2V0X3N1ZmZpeDsKKysJCVRTX1JFUV9mcmVlOworKwkJRVZQX1BLRVlfbWV0aF9mcmVlOworKwkJVFNfUkVRX2dldF9leHRzOworKwkJVFNfUkVTUF9DVFhfc2V0X2Nsb2NrX3ByZWNpc2lvbl9kaWdpdHM7CisrCQlUU19SRVNQX0NUWF9zZXRfY2xrX3ByZWNfZGlnaXRzOworKwkJVFNfUkVTUF9DVFhfYWRkX2ZhaWx1cmVfaW5mbzsKKysJCWkyZF9UU19SRVNQX2JpbzsKKysJCUVWUF9QS0VZX0NUWF9nZXQwX3BlZXJrZXk7CisrCQlQRU1fd3JpdGVfYmlvX0NNU19zdHJlYW07CisrCQlUU19SRVFfbmV3OworKwkJVFNfTVNHX0lNUFJJTlRfbmV3OworKwkJRVZQX1BLRVlfbWV0aF9maW5kOworKwkJRVZQX1BLRVlfaWQ7CisrCQlUU19UU1RfSU5GT19zZXRfc2VyaWFsOworKwkJYTJpX0dFTkVSQUxfTkFNRTsKKysJCVRTX0NPTkZfc2V0X2NyeXB0b19kZXZpY2U7CisrCQlFVlBfUEtFWV92ZXJpZnlfaW5pdDsKKysJCVRTX0NPTkZfc2V0X3BvbGljaWVzOworKwkJQVNOMV9QQ1RYX25ldzsKKysJCUVTU19DRVJUX0lEX2ZyZWU7CisrCQlFTkdJTkVfdW5yZWdpc3Rlcl9wa2V5X21ldGhzOworKwkJVFNfTVNHX0lNUFJJTlRfZnJlZTsKKysJCVRTX1ZFUklGWV9DVFhfaW5pdDsKKysJCVBLQ1M3X3N0cmVhbTsKKysJCVRTX1JFU1BfQ1RYX3NldF9jZXJ0czsKKysJCVRTX0NPTkZfc2V0X2RlZl9wb2xpY3k7CisrCQlBU04xX0dFTkVSQUxJWkVEVElNRV9hZGo7CisrCQlORVRTQ0FQRV9YNTA5X25ldzsKKysJCVRTX0FDQ1VSQUNZX2ZyZWU7CisrCQlUU19SRVNQX2dldF90c3RfaW5mbzsKKysJCUVWUF9QS0VZX2Rlcml2ZV9zZXRfcGVlcjsKKysJCVBFTV9yZWFkX2Jpb19QYXJhbWV0ZXJzOworKwkJVFNfQ09ORl9zZXRfY2xvY2tfcHJlY2lzaW9uX2RpZ2l0czsKKysJCVRTX0NPTkZfc2V0X2Nsa19wcmVjX2RpZ2l0czsKKysJCUVTU19JU1NVRVJfU0VSSUFMX2R1cDsKKysJCVRTX0FDQ1VSQUNZX2dldF9taWNyb3M7CisrCQlBU04xX1BDVFhfZ2V0X3N0cl9mbGFnczsKKysJCU5BTUVfQ09OU1RSQUlOVFNfY2hlY2s7CisrCQlBU04xX0JJVF9TVFJJTkdfY2hlY2s7CisrCQlYNTA5X2NoZWNrX2FraWQ7CisrCQlFTkdJTkVfdW5yZWdpc3Rlcl9wa2V5X2FzbjFfbWV0aHM7CisrCQlFTkdJTkVfdW5yZWdfcGtleV9hc24xX21ldGhzOworKwkJQVNOMV9QQ1RYX2ZyZWU7CisrCQlQRU1fd3JpdGVfYmlvX0FTTjFfc3RyZWFtOworKwkJaTJkX0FTTjFfYmlvX3N0cmVhbTsKKysJCVRTX1g1MDlfQUxHT1JfcHJpbnRfYmlvOworKwkJRVZQX1BLRVlfbWV0aF9zZXRfY2xlYW51cDsKKysJCUVWUF9QS0VZX2FzbjFfZnJlZTsKKysJCUVTU19TSUdOSU5HX0NFUlRfZnJlZTsKKysJCVRTX1RTVF9JTkZPX3NldF9tc2dfaW1wcmludDsKKysJCUdFTkVSQUxfTkFNRV9jbXA7CisrCQlkMmlfQVNOMV9TRVRfQU5ZOworKwkJRU5HSU5FX3NldF9wa2V5X21ldGhzOworKwkJaTJkX1RTX1JFUV9mcDsKKysJCWQyaV9BU04xX1NFUVVFTkNFX0FOWTsKKysJCUdFTkVSQUxfTkFNRV9nZXQwX290aGVyTmFtZTsKKysJCWQyaV9FU1NfQ0VSVF9JRDsKKysJCU9CSl9maW5kX3NpZ2lkX2FsZ3M7CisrCQlFVlBfUEtFWV9tZXRoX3NldF9rZXlnZW47CisrCQlQS0NTNV9QQktERjJfSE1BQzsKKysJCUVWUF9QS0VZX3BhcmFtZ2VuOworKwkJRVZQX1BLRVlfbWV0aF9zZXRfcGFyYW1nZW47CisrCQlCSU9fbmV3X1BLQ1M3OworKwkJRVZQX1BLRVlfdmVyaWZ5X3JlY292ZXI7CisrCQlUU19leHRfcHJpbnRfYmlvOworKwkJVFNfQVNOMV9JTlRFR0VSX3ByaW50X2JpbzsKKysJCWNoZWNrX2RlZmVyOworKwkJRFNPX3BhdGhieWFkZHI7CisrCQlFVlBfUEtFWV9zZXRfdHlwZTsKKysJCVRTX0FDQ1VSQUNZX3NldF9taWNyb3M7CisrCQlUU19SRVFfdG9fVFNfVkVSSUZZX0NUWDsKKysJCUVWUF9QS0VZX21ldGhfc2V0X2NvcHk7CisrCQlBU04xX1BDVFhfc2V0X2NlcnRfZmxhZ3M7CisrCQlUU19UU1RfSU5GT19nZXRfZXh0OworKwkJRVZQX1BLRVlfYXNuMV9zZXRfY3RybDsKKysJCVRTX1RTVF9JTkZPX2dldF9leHRfYnlfY3JpdGljYWw7CisrCQlFVlBfUEtFWV9DVFhfbmV3X2lkOworKwkJVFNfUkVRX2dldF9leHRfYnlfT0JKOworKwkJVFNfQ09ORl9zZXRfc2lnbmVyX2NlcnQ7CisrCQlYNTA5X05BTUVfaGFzaF9vbGQ7CisrCQlBU04xX1RJTUVfc2V0X3N0cmluZzsKKysJCUVWUF9NRF9mbGFnczsKKysJCVRTX1JFU1BfQ1RYX2ZyZWU7CisrCQlEU0FwYXJhbXNfZHVwOworKwkJREhwYXJhbXNfZHVwOworKwkJT0NTUF9SRVFfQ1RYX2FkZDFfaGVhZGVyOworKwkJT0NTUF9SRVFfQ1RYX3NldDFfcmVxOworKwkJWDUwOV9TVE9SRV9zZXRfdmVyaWZ5X2NiOworKwkJWDUwOV9TVE9SRV9DVFhfZ2V0MF9jdXJyZW50X2NybDsKKysJCVg1MDlfU1RPUkVfQ1RYX2dldDBfcGFyZW50X2N0eDsKKysJCVg1MDlfU1RPUkVfQ1RYX2dldDBfY3VycmVudF9pc3N1ZXI7CisrCQlYNTA5X1NUT1JFX0NUWF9nZXQwX2N1cl9pc3N1ZXI7CisrCQlYNTA5X2lzc3Vlcl9uYW1lX2hhc2hfb2xkOworKwkJWDUwOV9zdWJqZWN0X25hbWVfaGFzaF9vbGQ7CisrCQlFVlBfQ0lQSEVSX0NUWF9jb3B5OworKwkJVUlfbWV0aG9kX2dldF9wcm9tcHRfY29uc3RydWN0b3I7CisrCQlVSV9tZXRob2RfZ2V0X3Byb21wdF9jb25zdHJ1Y3RyOworKwkJVUlfbWV0aG9kX3NldF9wcm9tcHRfY29uc3RydWN0b3I7CisrCQlVSV9tZXRob2Rfc2V0X3Byb21wdF9jb25zdHJ1Y3RyOworKwkJRVZQX3JlYWRfcHdfc3RyaW5nX21pbjsKKysJCUNSWVBUT19jdHMxMjhfZW5jcnlwdDsKKysJCUNSWVBUT19jdHMxMjhfZGVjcnlwdF9ibG9jazsKKysJCUNSWVBUT19jZmIxMjhfMV9lbmNyeXB0OworKwkJQ1JZUFRPX2NiYzEyOF9lbmNyeXB0OworKwkJQ1JZUFRPX2N0cjEyOF9lbmNyeXB0OworKwkJQ1JZUFRPX29mYjEyOF9lbmNyeXB0OworKwkJQ1JZUFRPX2N0czEyOF9kZWNyeXB0OworKwkJQ1JZUFRPX2N0czEyOF9lbmNyeXB0X2Jsb2NrOworKwkJQ1JZUFRPX2NiYzEyOF9kZWNyeXB0OworKwkJQ1JZUFRPX2NmYjEyOF9lbmNyeXB0OworKwkJQ1JZUFRPX2NmYjEyOF84X2VuY3J5cHQ7CisrCisrCWxvY2FsOgorKwkJKjsKKyt9OworKworKworK09QRU5TU0xfMS4wLjEgeworKwlnbG9iYWw6CisrCQlTU0xfcmVuZWdvdGlhdGVfYWJicmV2aWF0ZWQ7CisrCQlUTFN2MV8xX21ldGhvZDsKKysJCVRMU3YxXzFfY2xpZW50X21ldGhvZDsKKysJCVRMU3YxXzFfc2VydmVyX21ldGhvZDsKKysJCVNTTF9DVFhfc2V0X3NycF9jbGllbnRfcHdkX2NhbGxiYWNrOworKwkJU1NMX0NUWF9zZXRfc3JwX2NsaWVudF9wd2RfY2I7CisrCQlTU0xfZ2V0X3NycF9nOworKwkJU1NMX0NUWF9zZXRfc3JwX3VzZXJuYW1lX2NhbGxiYWNrOworKwkJU1NMX0NUWF9zZXRfc3JwX3VuX2NiOworKwkJU1NMX2dldF9zcnBfdXNlcmluZm87CisrCQlTU0xfc2V0X3NycF9zZXJ2ZXJfcGFyYW07CisrCQlTU0xfc2V0X3NycF9zZXJ2ZXJfcGFyYW1fcHc7CisrCQlTU0xfZ2V0X3NycF9OOworKwkJU1NMX2dldF9zcnBfdXNlcm5hbWU7CisrCQlTU0xfQ1RYX3NldF9zcnBfcGFzc3dvcmQ7CisrCQlTU0xfQ1RYX3NldF9zcnBfc3RyZW5ndGg7CisrCQlTU0xfQ1RYX3NldF9zcnBfdmVyaWZ5X3BhcmFtX2NhbGxiYWNrOworKwkJU1NMX0NUWF9zZXRfc3JwX3ZmeV9wYXJhbV9jYjsKKysJCVNTTF9DVFhfc2V0X3NycF9jYl9hcmc7CisrCQlTU0xfQ1RYX3NldF9zcnBfdXNlcm5hbWU7CisrCQlTU0xfQ1RYX1NSUF9DVFhfaW5pdDsKKysJCVNTTF9TUlBfQ1RYX2luaXQ7CisrCQlTUlBfQ2FsY19BX3BhcmFtOworKwkJU1JQX2dlbmVyYXRlX3NlcnZlcl9tYXN0ZXJfc2VjcmV0OworKwkJU1JQX2dlbl9zZXJ2ZXJfbWFzdGVyX3NlY3JldDsKKysJCVNTTF9DVFhfU1JQX0NUWF9mcmVlOworKwkJU1JQX2dlbmVyYXRlX2NsaWVudF9tYXN0ZXJfc2VjcmV0OworKwkJU1JQX2dlbl9jbGllbnRfbWFzdGVyX3NlY3JldDsKKysJCVNTTF9zcnBfc2VydmVyX3BhcmFtX3dpdGhfdXNlcm5hbWU7CisrCQlTU0xfc3JwX3NlcnZlcl9wYXJhbV93aXRoX3VuOworKwkJU1NMX1NSUF9DVFhfZnJlZTsKKysJCVNTTF9zZXRfZGVidWc7CisrCQlTU0xfU0VTU0lPTl9nZXQwX3BlZXI7CisrCQlUTFN2MV8yX2NsaWVudF9tZXRob2Q7CisrCQlTU0xfU0VTU0lPTl9zZXQxX2lkX2NvbnRleHQ7CisrCQlUTFN2MV8yX3NlcnZlcl9tZXRob2Q7CisrCQlTU0xfY2FjaGVfaGl0OworKwkJU1NMX2dldDBfa3NzbF9jdHg7CisrCQlTU0xfc2V0MF9rc3NsX2N0eDsKKysJCVNTTF9zZXRfc3RhdGU7CisrCQlTU0xfQ0lQSEVSX2dldF9pZDsKKysJCVRMU3YxXzJfbWV0aG9kOworKwkJa3NzbF9jdHhfZ2V0MF9jbGllbnRfcHJpbmM7CisrCQlTU0xfZXhwb3J0X2tleWluZ19tYXRlcmlhbDsKKysJCVNTTF9zZXRfdGxzZXh0X3VzZV9zcnRwOworKwkJU1NMX0NUWF9zZXRfbmV4dF9wcm90b3NfYWR2ZXJ0aXNlZF9jYjsKKysJCVNTTF9DVFhfc2V0X25leHRfcHJvdG9zX2Fkdl9jYjsKKysJCVNTTF9nZXQwX25leHRfcHJvdG9fbmVnb3RpYXRlZDsKKysJCVNTTF9nZXRfc2VsZWN0ZWRfc3J0cF9wcm9maWxlOworKwkJU1NMX0NUWF9zZXRfdGxzZXh0X3VzZV9zcnRwOworKwkJU1NMX3NlbGVjdF9uZXh0X3Byb3RvOworKwkJU1NMX2dldF9zcnRwX3Byb2ZpbGVzOworKwkJU1NMX0NUWF9zZXRfbmV4dF9wcm90b19zZWxlY3RfY2I7CisrCQlTU0xfQ1RYX3NldF9uZXh0X3Byb3RvX3NlbF9jYjsKKysJCVNTTF9TRVNTSU9OX2dldF9jb21wcmVzc19pZDsKKysKKysJCVNSUF9WQkFTRV9nZXRfYnlfdXNlcjsKKysJCVNSUF9DYWxjX3NlcnZlcl9rZXk7CisrCQlTUlBfY3JlYXRlX3ZlcmlmaWVyOworKwkJU1JQX2NyZWF0ZV92ZXJpZmllcl9CTjsKKysJCVNSUF9DYWxjX3U7CisrCQlTUlBfVkJBU0VfZnJlZTsKKysJCVNSUF9DYWxjX2NsaWVudF9rZXk7CisrCQlTUlBfZ2V0X2RlZmF1bHRfZ047CisrCQlTUlBfQ2FsY194OworKwkJU1JQX0NhbGNfQjsKKysJCVNSUF9WQkFTRV9uZXc7CisrCQlTUlBfY2hlY2tfa25vd25fZ05fcGFyYW07CisrCQlTUlBfQ2FsY19BOworKwkJU1JQX1ZlcmlmeV9BX21vZF9OOworKwkJU1JQX1ZCQVNFX2luaXQ7CisrCQlTUlBfVmVyaWZ5X0JfbW9kX047CisrCQlFQ19LRVlfc2V0X3B1YmxpY19rZXlfYWZmaW5lX2Nvb3JkaW5hdGVzOworKwkJRUNfS0VZX3NldF9wdWJfa2V5X2FmZl9jb29yZHM7CisrCQlFVlBfYWVzXzE5Ml9jdHI7CisrCQlFVlBfUEtFWV9tZXRoX2dldDBfaW5mbzsKKysJCUVWUF9QS0VZX21ldGhfY29weTsKKysJCUVSUl9hZGRfZXJyb3JfdmRhdGE7CisrCQlFVlBfYWVzXzEyOF9jdHI7CisrCQlFVlBfYWVzXzI1Nl9jdHI7CisrCQlFQ19HRnBfbmlzdHAyMjRfbWV0aG9kOworKwkJRUNfS0VZX2dldF9mbGFnczsKKysJCVJTQV9wYWRkaW5nX2FkZF9QS0NTMV9QU1NfbWdmMTsKKysJCUVWUF9hZXNfMTI4X3h0czsKKysJCUVWUF9hZXNfMjU2X3h0czsKKysJCUVWUF9hZXNfMTI4X2djbTsKKysJCUVDX0tFWV9jbGVhcl9mbGFnczsKKysJCUVDX0tFWV9zZXRfZmxhZ3M7CisrCQlFVlBfYWVzXzI1Nl9jY207CisrCQlSU0FfdmVyaWZ5X1BLQ1MxX1BTU19tZ2YxOworKwkJRVZQX2Flc18xMjhfY2NtOworKwkJRVZQX2Flc18xOTJfZ2NtOworKwkJWDUwOV9BTEdPUl9zZXRfbWQ7CisrCQlSQU5EX2luaXRfZmlwczsKKysJCUVWUF9hZXNfMjU2X2djbTsKKysJCUVWUF9hZXNfMTkyX2NjbTsKKysJCUNNQUNfQ1RYX2NvcHk7CisrCQlDTUFDX0NUWF9mcmVlOworKwkJQ01BQ19DVFhfZ2V0MF9jaXBoZXJfY3R4OworKwkJQ01BQ19DVFhfY2xlYW51cDsKKysJCUNNQUNfSW5pdDsKKysJCUNNQUNfVXBkYXRlOworKwkJQ01BQ19yZXN1bWU7CisrCQlDTUFDX0NUWF9uZXc7CisrCQlDTUFDX0ZpbmFsOworKwkJQ1JZUFRPX2N0cjEyOF9lbmNyeXB0X2N0cjMyOworKwkJQ1JZUFRPX2djbTEyOF9yZWxlYXNlOworKwkJQ1JZUFRPX2NjbTEyOF9kZWNyeXB0X2NjbTY0OworKwkJQ1JZUFRPX2NjbTEyOF9lbmNyeXB0OworKwkJQ1JZUFRPX2djbTEyOF9lbmNyeXB0OworKwkJQ1JZUFRPX3h0czEyOF9lbmNyeXB0OworKwkJRVZQX3JjNF9obWFjX21kNTsKKysJCUNSWVBUT19uaXN0Y3RzMTI4X2RlY3J5cHRfYmxvY2s7CisrCQlDUllQVE9fZ2NtMTI4X3NldGl2OworKwkJQ1JZUFRPX25pc3RjdHMxMjhfZW5jcnlwdDsKKysJCUVWUF9hZXNfMTI4X2NiY19obWFjX3NoYTE7CisrCQlDUllQVE9fZ2NtMTI4X3RhZzsKKysJCUNSWVBUT19jY20xMjhfZW5jcnlwdF9jY202NDsKKysJCUVOR0lORV9sb2FkX3JkcmFuZDsKKysJCUNSWVBUT19jY20xMjhfc2V0aXY7CisrCQlDUllQVE9fbmlzdGN0czEyOF9lbmNyeXB0X2Jsb2NrOworKwkJQ1JZUFRPX2djbTEyOF9hYWQ7CisrCQlDUllQVE9fY2NtMTI4X2luaXQ7CisrCQlDUllQVE9fbmlzdGN0czEyOF9kZWNyeXB0OworKwkJQ1JZUFRPX2djbTEyOF9uZXc7CisrCQlDUllQVE9fY2NtMTI4X3RhZzsKKysJCUNSWVBUT19jY20xMjhfZGVjcnlwdDsKKysJCUNSWVBUT19jY20xMjhfYWFkOworKwkJQ1JZUFRPX2djbTEyOF9pbml0OworKwkJQ1JZUFRPX2djbTEyOF9kZWNyeXB0OworKwkJRU5HSU5FX2xvYWRfcnNheDsKKysJCUNSWVBUT19nY20xMjhfZGVjcnlwdF9jdHIzMjsKKysJCUNSWVBUT19nY20xMjhfZW5jcnlwdF9jdHIzMjsKKysJCUNSWVBUT19nY20xMjhfZmluaXNoOworKwkJRVZQX2Flc18yNTZfY2JjX2htYWNfc2hhMTsKKysJCVBLQ1M1X3Bia2RmMl9zZXQ7CisrCQlDTVNfYWRkMF9yZWNpcGllbnRfcGFzc3dvcmQ7CisrCQlDTVNfZGVjcnlwdF9zZXQxX3Bhc3N3b3JkOworKwkJQ01TX1JlY2lwaWVudEluZm9fc2V0MF9wYXNzd29yZDsKKysJCVJBTkRfc2V0X2ZpcHNfZHJiZ190eXBlOworKwkJWDUwOV9SRVFfc2lnbl9jdHg7CisrCQlSU0FfUFNTX1BBUkFNU19uZXc7CisrCQlYNTA5X0NSTF9zaWduX2N0eDsKKysJCVg1MDlfc2lnbmF0dXJlX2R1bXA7CisrCQlkMmlfUlNBX1BTU19QQVJBTVM7CisrCQlSU0FfUFNTX1BBUkFNU19pdDsKKysJCVJTQV9QU1NfUEFSQU1TX2ZyZWU7CisrCQlYNTA5X3NpZ25fY3R4OworKwkJaTJkX1JTQV9QU1NfUEFSQU1TOworKwkJQVNOMV9pdGVtX3NpZ25fY3R4OworKwkJRUNfR0ZwX25pc3RwNTIxX21ldGhvZDsKKysJCUVDX0dGcF9uaXN0cDI1Nl9tZXRob2Q7CisrCQlPUEVOU1NMX3N0ZGVycjsKKysJCU9QRU5TU0xfY3B1aWRfc2V0dXA7CisrCQlPUEVOU1NMX3Nob3dmYXRhbDsKKysJCUJJT19uZXdfZGdyYW1fc2N0cDsKKysJCUJJT19kZ3JhbV9zY3RwX21zZ193YWl0aW5nOworKwkJQklPX2RncmFtX3NjdHBfd2FpdF9mb3JfZHJ5OworKwkJQklPX3NfZGF0YWdyYW1fc2N0cDsKKysJCUJJT19kZ3JhbV9pc19zY3RwOworKwkJQklPX2RncmFtX3NjdHBfbm90aWZpY2F0aW9uX2NiOworK30gT1BFTlNTTF8xLjAuMDsKKysKKytPUEVOU1NMXzEuMC4xZCB7CisrCWdsb2JhbDoKKysJCUNSWVBUT19tZW1jbXA7CisrfSBPUEVOU1NMXzEuMC4xOworKworK09QRU5TU0xfMS4wLjIgeworKwlnbG9iYWw6CisrCQlTU0xfQ1RYX3NldF9hbHBuX3Byb3RvczsKKysJCVNTTF9zZXRfYWxwbl9wcm90b3M7CisrCQlTU0xfQ1RYX3NldF9hbHBuX3NlbGVjdF9jYjsKKysJCVNTTF9nZXQwX2FscG5fc2VsZWN0ZWQ7CisrCQlTU0xfQ1RYX3NldF9jdXN0b21fY2xpX2V4dDsKKysJCVNTTF9DVFhfc2V0X2N1c3RvbV9zcnZfZXh0OworKwkJU1NMX0NUWF9zZXRfc3J2X3N1cHBfZGF0YTsKKysJCVNTTF9DVFhfc2V0X2NsaV9zdXBwX2RhdGE7CisrCQlTU0xfc2V0X2NlcnRfY2I7CisrCQlTU0xfQ1RYX3VzZV9zZXJ2ZXJpbmZvOworKwkJU1NMX0NUWF91c2Vfc2VydmVyaW5mb19maWxlOworKwkJU1NMX0NUWF9zZXRfY2VydF9jYjsKKysJCVNTTF9DVFhfZ2V0MF9wYXJhbTsKKysJCVNTTF9nZXQwX3BhcmFtOworKwkJU1NMX2NlcnRzX2NsZWFyOworKwkJRFRMU3YxXzJfbWV0aG9kOworKwkJRFRMU3YxXzJfc2VydmVyX21ldGhvZDsKKysJCURUTFN2MV8yX2NsaWVudF9tZXRob2Q7CisrCQlEVExTX21ldGhvZDsKKysJCURUTFNfc2VydmVyX21ldGhvZDsKKysJCURUTFNfY2xpZW50X21ldGhvZDsKKysJCVNTTF9DVFhfZ2V0X3NzbF9tZXRob2Q7CisrCQlTU0xfQ1RYX2dldDBfY2VydGlmaWNhdGU7CisrCQlTU0xfQ1RYX2dldDBfcHJpdmF0ZWtleTsKKysJCVNTTF9DT01QX3NldDBfY29tcHJlc3Npb25fbWV0aG9kczsKKysJCVNTTF9DT01QX2ZyZWVfY29tcHJlc3Npb25fbWV0aG9kczsKKysJCVNTTF9DSVBIRVJfZmluZDsKKysJCVNTTF9pc19zZXJ2ZXI7CisrCQlTU0xfQ09ORl9DVFhfbmV3OworKwkJU1NMX0NPTkZfQ1RYX2ZpbmlzaDsKKysJCVNTTF9DT05GX0NUWF9mcmVlOworKwkJU1NMX0NPTkZfQ1RYX3NldF9mbGFnczsKKysJCVNTTF9DT05GX0NUWF9jbGVhcl9mbGFnczsKKysJCVNTTF9DT05GX0NUWF9zZXQxX3ByZWZpeDsKKysJCVNTTF9DT05GX0NUWF9zZXRfc3NsOworKwkJU1NMX0NPTkZfQ1RYX3NldF9zc2xfY3R4OworKwkJU1NMX0NPTkZfY21kOworKwkJU1NMX0NPTkZfY21kX2FyZ3Y7CisrCQlTU0xfQ09ORl9jbWRfdmFsdWVfdHlwZTsKKysJCVNTTF90cmFjZTsKKysJCVNTTF9DSVBIRVJfc3RhbmRhcmRfbmFtZTsKKysJCVNTTF9nZXRfdGxzYV9yZWNvcmRfYnluYW1lOworKwkJQVNOMV9USU1FX2RpZmY7CisrCQlCSU9faGV4X3N0cmluZzsKKysJCUNNU19SZWNpcGllbnRJbmZvX2dldDBfcGtleV9jdHg7CisrCQlDTVNfUmVjaXBpZW50SW5mb19lbmNyeXB0OworKwkJQ01TX1NpZ25lckluZm9fZ2V0MF9wa2V5X2N0eDsKKysJCUNNU19TaWduZXJJbmZvX2dldDBfbWRfY3R4OworKwkJQ01TX1NpZ25lckluZm9fZ2V0MF9zaWduYXR1cmU7CisrCQlDTVNfUmVjaXBpZW50SW5mb19rYXJpX2dldDBfYWxnOworKwkJQ01TX1JlY2lwaWVudEluZm9fa2FyaV9nZXQwX3Jla3M7CisrCQlDTVNfUmVjaXBpZW50SW5mb19rYXJpX2dldDBfb3JpZ19pZDsKKysJCUNNU19SZWNpcGllbnRJbmZvX2thcmlfb3JpZ19pZF9jbXA7CisrCQlDTVNfUmVjaXBpZW50RW5jcnlwdGVkS2V5X2dldDBfaWQ7CisrCQlDTVNfUmVjaXBpZW50RW5jcnlwdGVkS2V5X2NlcnRfY21wOworKwkJQ01TX1JlY2lwaWVudEluZm9fa2FyaV9zZXQwX3BrZXk7CisrCQlDTVNfUmVjaXBpZW50SW5mb19rYXJpX2dldDBfY3R4OworKwkJQ01TX1JlY2lwaWVudEluZm9fa2FyaV9kZWNyeXB0OworKwkJQ01TX1NoYXJlZEluZm9fZW5jb2RlOworKwkJREhfY29tcHV0ZV9rZXlfcGFkZGVkOworKwkJZDJpX0RIeHBhcmFtczsKKysJCWkyZF9ESHhwYXJhbXM7CisrCQlESF9nZXRfMTAyNF8xNjA7CisrCQlESF9nZXRfMjA0OF8yMjQ7CisrCQlESF9nZXRfMjA0OF8yNTY7CisrCQlESF9LREZfWDlfNDI7CisrCQlFQ0RIX0tERl9YOV82MjsKKysJCUVDRFNBX01FVEhPRF9uZXc7CisrCQlFQ0RTQV9NRVRIT0RfZnJlZTsKKysJCUVDRFNBX01FVEhPRF9zZXRfYXBwX2RhdGE7CisrCQlFQ0RTQV9NRVRIT0RfZ2V0X2FwcF9kYXRhOworKwkJRUNEU0FfTUVUSE9EX3NldF9zaWduOworKwkJRUNEU0FfTUVUSE9EX3NldF9zaWduX3NldHVwOworKwkJRUNEU0FfTUVUSE9EX3NldF92ZXJpZnk7CisrCQlFQ0RTQV9NRVRIT0Rfc2V0X2ZsYWdzOworKwkJRUNEU0FfTUVUSE9EX3NldF9uYW1lOworKwkJRVZQX2Rlc19lZGUzX3dyYXA7CisrCQlFVlBfYWVzXzEyOF93cmFwOworKwkJRVZQX2Flc18xOTJfd3JhcDsKKysJCUVWUF9hZXNfMjU2X3dyYXA7CisrCQlFVlBfYWVzXzEyOF9jYmNfaG1hY19zaGEyNTY7CisrCQlFVlBfYWVzXzI1Nl9jYmNfaG1hY19zaGEyNTY7CisrCQlDUllQVE9fMTI4X3dyYXA7CisrCQlDUllQVE9fMTI4X3Vud3JhcDsKKysJCU9DU1BfUkVRX0NUWF9uYmlvOworKwkJT0NTUF9SRVFfQ1RYX25ldzsKKysJCU9DU1Bfc2V0X21heF9yZXNwb25zZV9sZW5ndGg7CisrCQlPQ1NQX1JFUV9DVFhfaTJkOworKwkJT0NTUF9SRVFfQ1RYX25iaW9fZDJpOworKwkJT0NTUF9SRVFfQ1RYX2dldDBfbWVtX2JpbzsKKysJCU9DU1BfUkVRX0NUWF9odHRwOworKwkJUlNBX3BhZGRpbmdfYWRkX1BLQ1MxX09BRVBfbWdmMTsKKysJCVJTQV9wYWRkaW5nX2NoZWNrX1BLQ1MxX09BRVBfbWdmMTsKKysJCVJTQV9PQUVQX1BBUkFNU19mcmVlOworKwkJUlNBX09BRVBfUEFSQU1TX2l0OworKwkJUlNBX09BRVBfUEFSQU1TX25ldzsKKysJCVNTTF9nZXRfc2lnYWxnczsKKysJCVNTTF9nZXRfc2hhcmVkX3NpZ2FsZ3M7CisrCQlTU0xfY2hlY2tfY2hhaW47CisrCQlYNTA5X2NoYWluX3VwX3JlZjsKKysJCVg1MDlfaHR0cF9uYmlvOworKwkJWDUwOV9DUkxfaHR0cF9uYmlvOworKwkJWDUwOV9SRVZPS0VEX2R1cDsKKysJCWkyZF9yZV9YNTA5X3RiczsKKysJCVg1MDlfZ2V0MF9zaWduYXR1cmU7CisrCQlYNTA5X2dldF9zaWduYXR1cmVfbmlkOworKwkJWDUwOV9DUkxfZGlmZjsKKysJCVg1MDlfY2hhaW5fY2hlY2tfc3VpdGViOworKwkJWDUwOV9DUkxfY2hlY2tfc3VpdGViOworKwkJWDUwOV9jaGVja19ob3N0OworKwkJWDUwOV9jaGVja19lbWFpbDsKKysJCVg1MDlfY2hlY2tfaXA7CisrCQlYNTA5X2NoZWNrX2lwX2FzYzsKKysJCVg1MDlfU1RPUkVfc2V0X2xvb2t1cF9jcmxzX2NiOworKwkJWDUwOV9TVE9SRV9DVFhfZ2V0MF9zdG9yZTsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX3NldDFfaG9zdDsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX2FkZDFfaG9zdDsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX3NldF9ob3N0ZmxhZ3M7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9nZXQwX3BlZXJuYW1lOworKwkJWDUwOV9WRVJJRllfUEFSQU1fc2V0MV9lbWFpbDsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX3NldDFfaXA7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXQxX2lwX2FzYzsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX2dldDBfbmFtZTsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX2dldF9jb3VudDsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX2dldDA7CisrCQlYNTA5VjNfRVhUX2ZyZWU7CisrCQlFQ19HUk9VUF9nZXRfbW9udF9kYXRhOworKwkJRUNfY3VydmVfbmlkMm5pc3Q7CisrCQlFQ19jdXJ2ZV9uaXN0Mm5pZDsKKysJCVBFTV93cml0ZV9iaW9fREh4cGFyYW1zOworKwkJUEVNX3dyaXRlX0RIeHBhcmFtczsKKysJCVNTTF9DVFhfYWRkX2NsaWVudF9jdXN0b21fZXh0OworKwkJU1NMX0NUWF9hZGRfc2VydmVyX2N1c3RvbV9leHQ7CisrCQlTU0xfZXh0ZW5zaW9uX3N1cHBvcnRlZDsKKysJCUJVRl9zdHJubGVuOworKwkJc2tfZGVlcF9jb3B5OworKwkJU1NMX3Rlc3RfZnVuY3Rpb25zOworK30gT1BFTlNTTF8xLjAuMWQ7CisrCitJbmRleDogb3BlbnNzbC0xLjAuMn5iZXRhMS5vYnNvbGV0ZS4wLjA0OTg0MzY1MTU0OTA1NzUvZW5naW5lcy9vcGVuc3NsLmxkCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysgb3BlbnNzbC0xLjAuMn5iZXRhMS5vYnNvbGV0ZS4wLjA0OTg0MzY1MTU0OTA1NzUvZW5naW5lcy9vcGVuc3NsLmxkCTIwMTQtMDItMjQgMjE6MDI6MzAuMDAwMDAwMDAwICswMTAwCitAQCAtMCwwICsxLDEwIEBACisrT1BFTlNTTF8xLjAuMCB7CisrCWdsb2JhbDoKKysJCWJpbmRfZW5naW5lOworKwkJdl9jaGVjazsKKysJCU9QRU5TU0xfaW5pdDsKKysJCU9QRU5TU0xfZmluaXNoOworKwlsb2NhbDoKKysJCSo7CisrfTsKKysKK0luZGV4OiBvcGVuc3NsLTEuMC4yfmJldGExLm9ic29sZXRlLjAuMDQ5ODQzNjUxNTQ5MDU3NS9lbmdpbmVzL2NjZ29zdC9vcGVuc3NsLmxkCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysgb3BlbnNzbC0xLjAuMn5iZXRhMS5vYnNvbGV0ZS4wLjA0OTg0MzY1MTU0OTA1NzUvZW5naW5lcy9jY2dvc3Qvb3BlbnNzbC5sZAkyMDE0LTAyLTI0IDIxOjAyOjMwLjAwMDAwMDAwMCArMDEwMAorQEAgLTAsMCArMSwxMCBAQAorK09QRU5TU0xfMS4wLjAgeworKwlnbG9iYWw6CisrCQliaW5kX2VuZ2luZTsKKysJCXZfY2hlY2s7CisrCQlPUEVOU1NMX2luaXQ7CisrCQlPUEVOU1NMX2ZpbmlzaDsKKysJbG9jYWw6CisrCQkqOworK307CisrCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvMDAwMS1GaXgtYnVpbGQtd2l0aC1jbGFuZy11c2luZy1leHRlcm5hbC1hc3NlbWJsZXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuLzAwMDEtRml4LWJ1aWxkLXdpdGgtY2xhbmctdXNpbmctZXh0ZXJuYWwtYXNzZW1ibGVyLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvMDAwMS1GaXgtYnVpbGQtd2l0aC1jbGFuZy11c2luZy1leHRlcm5hbC1hc3NlbWJsZXIucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vMDAwMS1GaXgtYnVpbGQtd2l0aC1jbGFuZy11c2luZy1leHRlcm5hbC1hc3NlbWJsZXIucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vMDAwMS1vcGVuc3NsLWZvcmNlLXNvZnQtbGluay10by1hdm9pZC1yYXJlLXJhY2UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuLzAwMDEtb3BlbnNzbC1mb3JjZS1zb2Z0LWxpbmstdG8tYXZvaWQtcmFyZS1yYWNlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkMWE5YjEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuLzAwMDEtb3BlbnNzbC1mb3JjZS1zb2Z0LWxpbmstdG8tYXZvaWQtcmFyZS1yYWNlLnBhdGNoCkBAIC0wLDAgKzEsNDYgQEAKK0Zyb20gM2Q5MTk5NDIzZDQ4NzY2NjQ5YTJiMmViYjM5MjRlODkyZWQxNmZhNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJhbmR5IE1hY0xlb2QgPFJhbmR5Lk1hY0xlb2RAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgMjAgSnVuIDIwMTcgMTU6MzI6MDggLTA0MDAKK1N1YmplY3Q6IFtQQVRDSF0gb3BlbnNzbDogRm9yY2Ugc29mdCBsaW5rIHRvIGF2b2lkIHJhcmUgcmFjZQorCitUaGlzIHBhdGNoIHdvcmtzIGFyb3VuZCBhIHJhcmUgcGFyYWxsZWwgYnVpbGQgcmFjZSBjb25kaXRpb24uIAorVGhlIGVycm9yIHNlZW4gaXM6CisKK2xuOiBmYWlsZWQgdG8gY3JlYXRlIHN5bWJvbGljIGxpbmsgJ2xpYnNzbC5zbyc6IEZpbGUgZXhpc3RzCittYWtlWzRdOiAqKiogW01ha2VmaWxlLnNoYXJlZDoxNzE6IGxpbmtfYS5nbnVdIEVycm9yIDEKK21ha2VbNF06IExlYXZpbmcgZGlyZWN0b3J5CisnLy4uLi9idWlsZC90bXAtZ2xpYmMvd29yay94ODZfNjQtbGludXgvb3BlbnNzbC1uYXRpdmUvMS4wLjJrLXIwL29wZW5zc2wtMS4wLjJrJworCitUaGUgb3BlbnNzbCB0ZWFtIGlzIHJld3JpdGluZyB0aGVpciBidWlsZCBmaWxlcyBzbyBpdCdzIG5vdAorYXBwcm9wcmlhdGUgZm9yIG9wZW5zc2wgdXBzdHJlYW0gYW5kIGZpeGluZyB0aGUgcm9vdCBjYXVzZSBvZgordGhlIE1ha2VmaWxlIHJhY2UgY29uZGl0aW9uIHdhcyBhbHNvIG5vdCBwdXJzdWVkLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2J1aWxkIHJ1bGVzIHJld3JpdGUgaW4gcHJvZ3Jlc3NdCitTaWduZWQtb2ZmLWJ5OiBSYW5keSBNYWNMZW9kIDxSYW5keS5NYWNMZW9kQHdpbmRyaXZlci5jb20+CistLS0KKyBNYWtlZmlsZS5zaGFyZWQgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuc2hhcmVkIGIvTWFrZWZpbGUuc2hhcmVkCitpbmRleCBlOGQyMjJhLi4xYmZmOTJmIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuc2hhcmVkCisrKysgYi9NYWtlZmlsZS5zaGFyZWQKK0BAIC0xMTgsMTQgKzExOCwxNCBAQAorIAkJaWYgWyAtbiAiJCRTSExJQl9DT01QQVQiIF07IHRoZW4gXAorIAkJCWZvciB4IGluICQkU0hMSUJfQ09NUEFUOyBkbyBcCisgCQkJCSggJChTRVRfWCk7IHJtIC1mICQkU0hMSUIkJHgkJFNITElCX1NVRkZJWDsgXAorLQkJCQkgIGxuIC1zICQkcHJldiAkJFNITElCJCR4JCRTSExJQl9TVUZGSVggKTsgXAorKwkJCQkgIGxuIC1zZiAkJHByZXYgJCRTSExJQiQkeCQkU0hMSUJfU1VGRklYICk7IFwKKyAJCQkJcHJldj0kJFNITElCJCR4JCRTSExJQl9TVUZGSVg7IFwKKyAJCQlkb25lOyBcCisgCQlmaTsgXAorIAkJaWYgWyAtbiAiJCRTSExJQl9TT1ZFUiIgXTsgdGhlbiBcCisgCQkJWyAtZSAiJCRTSExJQiQkU0hMSUJfU1VGRklYIiBdIHx8IFwKKyAJCQkoICQoU0VUX1gpOyBybSAtZiAkJFNITElCJCRTSExJQl9TVUZGSVg7IFwKKy0JCQkgIGxuIC1zICQkcHJldiAkJFNITElCJCRTSExJQl9TVUZGSVggKTsgXAorKwkJCSAgbG4gLXNmICQkcHJldiAkJFNITElCJCRTSExJQl9TVUZGSVggKTsgXAorIAkJZmk7IFwKKyAJZmkKKyAKKy0tIAorMi45LjMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vTWFrZWZpbGVzLXB0ZXN0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9NYWtlZmlsZXMtcHRlc3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjEyMmZhMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vTWFrZWZpbGVzLXB0ZXN0LnBhdGNoCkBAIC0wLDAgKzEsOTMgQEAKK0Zyb20gYTE3NmM2OWY0ZmRmYmZhN2U0Y2NiNzlkOTFjM2I2NjAyZGE3ZTY5YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFuZGVycyBSb3hlbGwgPGFuZGVycy5yb3hlbGxAZW5lYS5jb20+CitEYXRlOiBUaHUsIDI0IEFwciAyMDE0IDE5OjI4OjI1ICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMTkvMjhdIG9wZW5zc2w6IGVuYWJsZSBwdGVzdCBzdXBwb3J0CisKK0FkZCAnYnVpbGR0ZXN0JyBhbmQgJ3J1bnRlc3QnIHRhcmdldHMgdG8gTWFrZWZpbGUsIHRvIGJ1aWxkIGFuZCBydW4gdGVzdHMKK2Nyb3NzLWNvbXBpbGVkLgorCitTaWduZWQtb2ZmLWJ5OiBBbmRlcnMgUm94ZWxsIDxhbmRlcnMucm94ZWxsQGVuZWEuY29tPgorU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBlbmVhLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCistLS0KKyBNYWtlZmlsZS5vcmcgICAgICAgfCAgMTAgKy0KKyBNYWtlZmlsZS5vcmcub3JpZyAgfCAgIDcgKy0KKyB0ZXN0L01ha2VmaWxlICAgICAgfCAgMTMgKy0KKyB0ZXN0L01ha2VmaWxlLm9yaWcgfCA5ODcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyA0IGZpbGVzIGNoYW5nZWQsIDEwMDkgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdC9NYWtlZmlsZS5vcmlnCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5vcmcgYi9NYWtlZmlsZS5vcmcKK2luZGV4IDExMWZiYmEuLjhlNzkzNmMgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5vcmcKKysrKyBiL01ha2VmaWxlLm9yZworQEAgLTQ2OCw4ICs0NjgsMTYgQEAgcmVoYXNoLnRpbWU6IGNlcnRzIGFwcHMKKyB0ZXN0OiAgIHRlc3RzCisgCisgdGVzdHM6IHJlaGFzaAorKwkkKE1BS0UpIGJ1aWxkdGVzdAorKwkkKE1BS0UpIHJ1bnRlc3QKKysKKytidWlsZHRlc3Q6CisrCUAoY2QgdGVzdCAmJiBcCisrCSQoQ0xFQVJFTlYpICYmICQoTUFLRSkgLWUgJChCVUlMREVOVikgVE9QPS4uIFRFU1RTPSckKFRFU1RTKScgT1BFTlNTTF9ERUJVR19NRU1PUlk9b24gT1BFTlNTTF9DT05GPS4uL2FwcHMvb3BlbnNzbC5jbmYgZXhlIGFwcHMpOworKworK3J1bnRlc3Q6CisgCUAoY2QgdGVzdCAmJiBlY2hvICJ0ZXN0aW5nLi4uIiAmJiBcCistCSQoQ0xFQVJFTlYpICYmICQoTUFLRSkgLWUgJChCVUlMREVOVikgVE9QPS4uIFRFU1RTPSckKFRFU1RTKScgT1BFTlNTTF9ERUJVR19NRU1PUlk9b24gT1BFTlNTTF9DT05GPS4uL2FwcHMvb3BlbnNzbC5jbmYgdGVzdHMgKTsKKysJJChDTEVBUkVOVikgJiYgJChNQUtFKSAtZSAkKEJVSUxERU5WKSBUT1A9Li4gVEVTVFM9JyQoVEVTVFMpJyBPUEVOU1NMX0RFQlVHX01FTU9SWT1vbiBPUEVOU1NMX0NPTkY9Li4vYXBwcy9vcGVuc3NsLmNuZiBhbGx0ZXN0cyApOworIAlPUEVOU1NMX0NPTkY9YXBwcy9vcGVuc3NsLmNuZiB1dGlsL29wZW5zc2x3cmFwLnNoIHZlcnNpb24gLWEKKyAKKyByZXBvcnQ6CitkaWZmIC0tZ2l0IGEvdGVzdC9NYWtlZmlsZSBiL3Rlc3QvTWFrZWZpbGUKK2luZGV4IGExZjdlZWIuLmIyOTg0YzQgMTAwNjQ0CistLS0gYS90ZXN0L01ha2VmaWxlCisrKysgYi90ZXN0L01ha2VmaWxlCitAQCAtMTUwLDcgKzE1MCw3IEBAIHRlc3RzOglleGUgYXBwcyAkKFRFU1RTKQorIGFwcHM6CisgCUAoY2QgLi47ICQoTUFLRSkgRElSUz1hcHBzIGFsbCkKKyAKKy1hbGx0ZXN0czogXAorK2FsbC10ZXN0cz0gXAorIAl0ZXN0X2RlcyB0ZXN0X2lkZWEgdGVzdF9zaGEgdGVzdF9tZDQgdGVzdF9tZDUgdGVzdF9obWFjIFwKKyAJdGVzdF9tZDIgdGVzdF9tZGMyIHRlc3Rfd3AgXAorIAl0ZXN0X3JtZCB0ZXN0X3JjMiB0ZXN0X3JjNCB0ZXN0X3JjNSB0ZXN0X2JmIHRlc3RfY2FzdCB0ZXN0X2FlcyBcCitAQCAtMTYyLDYgKzE2MiwxMSBAQCBhbGx0ZXN0czogXAorIAl0ZXN0X2NvbnN0YW50X3RpbWUgdGVzdF92ZXJpZnlfZXh0cmEgdGVzdF9jbGllbnRoZWxsbyB0ZXN0X3NzbHYyY29uZnRlc3QgXAorIAl0ZXN0X2R0bHMgdGVzdF9iYWRfZHRscyB0ZXN0X2ZhdGFsZXJyCisgCisrYWxsdGVzdHM6CisrCUAoZm9yIGkgaW4gJChhbGwtdGVzdHMpOyBkbyBcCisrCSggJChNQUtFKSAkJGkgJiYgZWNobyAiUEFTUzogJCRpIiApIHx8IGVjaG8gIkZBSUw6ICQkaSI7IFwKKysJZG9uZSkKKysKKyB0ZXN0X2V2cDogJChFVlBURVNUKSQoRVhFX0VYVCkgZXZwdGVzdHMudHh0CisgCS4uL3V0aWwvc2hsaWJfd3JhcC5zaCAuLyQoRVZQVEVTVCkgZXZwdGVzdHMudHh0CisgCitAQCAtMjMwLDcgKzIzNSw3IEBAIHRlc3RfeDUwOTogLi4vYXBwcy9vcGVuc3NsJChFWEVfRVhUKSB0eDUwOSB0ZXN0eDUwOS5wZW0gdjMtY2VydDEucGVtIHYzLWNlcnQyLnBlCisgCWVjaG8gdGVzdCBzZWNvbmQgeDUwOXYzIGNlcnRpZmljYXRlCisgCXNoIC4vdHg1MDkgdjMtY2VydDIucGVtIDI+L2Rldi9udWxsCisgCistdGVzdF9yc2E6ICQoUlNBVEVTVCkkKEVYRV9FWFQpIC4uL2FwcHMvb3BlbnNzbCQoRVhFX0VYVCkgdHJzYSB0ZXN0cnNhLnBlbQorK3Rlc3RfcnNhOiAuLi9hcHBzL29wZW5zc2wkKEVYRV9FWFQpIHRyc2EgdGVzdHJzYS5wZW0KKyAJQHNoIC4vdHJzYSAyPi9kZXYvbnVsbAorIAkuLi91dGlsL3NobGliX3dyYXAuc2ggLi8kKFJTQVRFU1QpCisgCitAQCAtMzMxLDExICszMzYsMTEgQEAgdGVzdF90c2E6IC4uL2FwcHMvb3BlbnNzbCQoRVhFX0VYVCkgdGVzdHRzYSBDQXRzYS5jbmYgLi4vdXRpbC9zaGxpYl93cmFwLnNoCisgCSAgc2ggLi90ZXN0dHNhOyBcCisgCWZpCisgCistdGVzdF9pZ2U6ICQoSUdFVEVTVCkkKEVYRV9FWFQpCisrdGVzdF9pZ2U6CisgCUBlY2hvICJUZXN0IElHRSBtb2RlIgorIAkuLi91dGlsL3NobGliX3dyYXAuc2ggLi8kKElHRVRFU1QpCisgCistdGVzdF9qcGFrZTogJChKUEFLRVRFU1QpJChFWEVfRVhUKQorK3Rlc3RfanBha2U6CisgCUBlY2hvICJUZXN0IEpQQUtFIgorIAkuLi91dGlsL3NobGliX3dyYXAuc2ggLi8kKEpQQUtFVEVTVCkKKyAKKy0tIAorMi4xNS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9Vc2UtU0hBMjU2LW5vdC1NRDUtYXMtZGVmYXVsdC1kaWdlc3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL1VzZS1TSEEyNTYtbm90LU1ENS1hcy1kZWZhdWx0LWRpZ2VzdC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL1VzZS1TSEEyNTYtbm90LU1ENS1hcy1kZWZhdWx0LWRpZ2VzdC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9Vc2UtU0hBMjU2LW5vdC1NRDUtYXMtZGVmYXVsdC1kaWdlc3QucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vY29uZmlndXJlLW11c2wtdGFyZ2V0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9jb25maWd1cmUtbXVzbC10YXJnZXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjM1N2IzZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vY29uZmlndXJlLW11c2wtdGFyZ2V0LnBhdGNoCkBAIC0wLDAgKzEsMjUgQEAKK0FkZCBtdXNsIHRyaXBsZXQgc3VwcG9ydAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK0luZGV4OiBvcGVuc3NsLTEuMC4yYS9Db25maWd1cmUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGVuc3NsLTEuMC4yYS5vcmlnL0NvbmZpZ3VyZQorKysrIG9wZW5zc2wtMS4wLjJhL0NvbmZpZ3VyZQorQEAgLTQzMSw3ICs0MzEsNyBAQCBteSAldGFibGU9KAorICMKKyAjICAgICAgIC4vQ29uZmlndXJlIGxpbnV4LWFybXY0IC1tYXJjaD1hcm12NiAtRF9fQVJNX01BWF9BUkNIX189OAorICMKKy0ibGludXgtYXJtdjQiLAkiZ2NjOiAtTzMgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJGX1BUUjoke2FybXY0X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImxpbnV4LWFybXY0IiwgImdjYzogLU8zIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTCBCRl9QVFI6JHthcm12NF9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorICJsaW51eC1hYXJjaDY0IiwiZ2NjOiAtTzMgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEwgQkZfUFRSOiR7YWFyY2g2NF9hc219OmxpbnV4NjQ6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisgIyBDb25maWd1cmUgc2NyaXB0IGFkZHMgbWluaW1hbGx5IHJlcXVpcmVkIC1tYXJjaCBmb3IgYXNzZW1ibHkgc3VwcG9ydCwKKyAjIGlmIG5vIC1tYXJjaCB3YXMgc3BlY2lmaWVkIGF0IGNvbW1hbmQgbGluZS4gbWlwczMyIGFuZCBtaXBzNjQgYmVsb3cKK0BAIC01MDQsNCArNTA0LDYgQEAgbXkgJXRhYmxlPSgKKyAibGludXgtZ251ZWFiaS1hcm1lYiIsIiRFTlZ7J0NDJ306LURCX0VORElBTiAtTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBERVNfUklTQzE6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJsaW51eC1tdXNsZWFiaS1hcm0iLCIkRU5WeydDQyd9Oi1ETF9FTkRJQU4gLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgREVTX1JJU0MxOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysibGludXgtbXVzbGVhYmktYXJtZWIiLCIkRU5WeydDQyd9Oi1EQl9FTkRJQU4gLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgREVTX1JJU0MxOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKyAKKyAibGludXgtYXZyMzIiLCIkRU5WeydDQyd9Oi1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIERFU19SSVNDMToke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLiIsCisgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2NvbmZpZ3VyZS10YXJnZXRzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9jb25maWd1cmUtdGFyZ2V0cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZTAxNTg5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9jb25maWd1cmUtdGFyZ2V0cy5wYXRjaApAQCAtMCwwICsxLDM1IEBACitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorCitUaGUgbnVtYmVyIG9mIGNvbG9ucyBhcmUgaW1wb3J0YW50IDopCisKKworLS0tCisgQ29uZmlndXJlIHwgICAxNiArKysrKysrKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDE2IGluc2VydGlvbnMoKykKKworSW5kZXg6IG9wZW5zc2wtMS4wLjJhL0NvbmZpZ3VyZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG9wZW5zc2wtMS4wLjJhLm9yaWcvQ29uZmlndXJlCisrKysgb3BlbnNzbC0xLjAuMmEvQ29uZmlndXJlCitAQCAtNDQzLDYgKzQ0MywyMSBAQCBteSAldGFibGU9KAorICJsaW51eC1hbHBoYS1jY2MiLCJjY2M6LWZhc3QgLXJlYWRvbmx5X3N0cmluZ3MgLURMX0VORElBTjo6LURfUkVFTlRSQU5UOjo6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX0lOVCBERVNfUFRSIERFU19SSVNDMSBERVNfVU5ST0xMOiR7YWxwaGFfYXNtfSIsCisgImxpbnV4LWFscGhhK2J3eC1jY2MiLCJjY2M6LWZhc3QgLXJlYWRvbmx5X3N0cmluZ3MgLURMX0VORElBTjo6LURfUkVFTlRSQU5UOjo6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfUFRSIERFU19SSVNDMSBERVNfVU5ST0xMOiR7YWxwaGFfYXNtfSIsCisgCisrIAorKyMgTGludXggb24gQVJNCisrImxpbnV4LWVsZi1hcm0iLCIkRU5WeydDQyd9Oi1ETF9FTkRJQU4gLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgREVTX1JJU0MxOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysibGludXgtZWxmLWFybWViIiwiJEVOVnsnQ0MnfTotREJfRU5ESUFOIC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIERFU19SSVNDMToke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImxpbnV4LWdudWVhYmktYXJtIiwiJEVOVnsnQ0MnfTotRExfRU5ESUFOIC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIERFU19SSVNDMToke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCisrImxpbnV4LWdudWVhYmktYXJtZWIiLCIkRU5WeydDQyd9Oi1EQl9FTkRJQU4gLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgREVTX1JJU0MxOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysKKysibGludXgtYXZyMzIiLCIkRU5WeydDQyd9Oi1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIERFU19SSVNDMToke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLiIsCisrCisrIyMjIyBMaW51eCBvbiBNSVBTL01JUFM2NAorKyJsaW51eC1taXBzIiwiJEVOVnsnQ0MnfTotREJfRU5ESUFOIC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDMl9DSEFSIFJDNF9JTkRFWCBERVNfSU5UIERFU19VTlJPTEwgREVTX1JJU0MyOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysibGludXgtbWlwczY0IiwiJEVOVnsnQ0MnfTotREJfRU5ESUFOIC1tYWJpPTY0IC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkMyX0NIQVIgUkM0X0lOREVYIERFU19JTlQgREVTX1VOUk9MTCBERVNfUklTQzI6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorKyJsaW51eC1taXBzNjRlbCIsIiRFTlZ7J0NDJ306LURMX0VORElBTiAtbWFiaT02NCAtTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDMl9DSEFSIFJDNF9JTkRFWCBERVNfSU5UIERFU19VTlJPTEwgREVTX1JJU0MyOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysibGludXgtbWlwc2VsIiwiJEVOVnsnQ0MnfTotRExfRU5ESUFOIC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIFJDMl9DSEFSIFJDNF9JTkRFWCBERVNfSU5UIERFU19VTlJPTEwgREVTX1JJU0MyOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKKysKKyAjIEFuZHJvaWQ6IGxpbnV4LSogYnV0IHdpdGhvdXQgcG9pbnRlcnMgdG8gaGVhZGVycyBhbmQgbGlicy4KKyAiYW5kcm9pZCIsImdjYzotbWFuZHJvaWQgLUlcJChBTkRST0lEX0RFVikvaW5jbHVkZSAtQlwkKEFORFJPSURfREVWKS9saWIgLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTCBCRl9QVFI6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAorICJhbmRyb2lkLXg4NiIsImdjYzotbWFuZHJvaWQgLUlcJChBTkRST0lEX0RFVikvaW5jbHVkZSAtQlwkKEFORFJPSURfREVWKS9saWIgLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgJHt4ODZfZ2NjX2Rlc30gJHt4ODZfZ2NjX29wdHN9OiIuZXZhbHtteSAkYXNtPSR7eDg2X2VsZl9hc219OyRhc209fnMvOmVsZi86YW5kcm9pZC87JGFzbX0uIjpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9kZWJpYW4vY19yZWhhc2gtY29tcGF0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4vY19yZWhhc2gtY29tcGF0LnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvZGViaWFuL2NfcmVoYXNoLWNvbXBhdC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4vY19yZWhhc2gtY29tcGF0LnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvZGViaWFuL2NhLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4vY2EucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9kZWJpYW4vY2EucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZGViaWFuL2NhLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvZGViaWFuL2RlYmlhbi10YXJnZXRzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4vZGViaWFuLXRhcmdldHMucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9kZWJpYW4vZGViaWFuLXRhcmdldHMucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZGViaWFuL2RlYmlhbi10YXJnZXRzLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvZGViaWFuL21hbi1kaXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2RlYmlhbi9tYW4tZGlyLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvZGViaWFuL21hbi1kaXIucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZGViaWFuL21hbi1kaXIucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9kZWJpYW4vbWFuLXNlY3Rpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2RlYmlhbi9tYW4tc2VjdGlvbi5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL2RlYmlhbi9tYW4tc2VjdGlvbi5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4vbWFuLXNlY3Rpb24ucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9kZWJpYW4vbm8tcnBhdGgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2RlYmlhbi9uby1ycGF0aC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL2RlYmlhbi9uby1ycGF0aC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4vbm8tcnBhdGgucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9kZWJpYW4vbm8tc3ltYm9saWMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2RlYmlhbi9uby1zeW1ib2xpYy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL2RlYmlhbi9uby1zeW1ib2xpYy5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4vbm8tc3ltYm9saWMucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9kZWJpYW4vcGljLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4vcGljLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvZGViaWFuL3BpYy5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4vcGljLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvZGViaWFuMS4wLjIvYmxvY2tfZGlnaWNlcnRfbWFsYXlzaWEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2RlYmlhbjEuMC4yL2Jsb2NrX2RpZ2ljZXJ0X21hbGF5c2lhLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvZGViaWFuMS4wLjIvYmxvY2tfZGlnaWNlcnRfbWFsYXlzaWEucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZGViaWFuMS4wLjIvYmxvY2tfZGlnaWNlcnRfbWFsYXlzaWEucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9kZWJpYW4xLjAuMi9ibG9ja19kaWdpbm90YXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2RlYmlhbjEuMC4yL2Jsb2NrX2RpZ2lub3Rhci5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL2RlYmlhbjEuMC4yL2Jsb2NrX2RpZ2lub3Rhci5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4xLjAuMi9ibG9ja19kaWdpbm90YXIucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZGViaWFuMS4wLjIvc29uYW1lLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4xLjAuMi9zb25hbWUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDlkZDllYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZGViaWFuMS4wLjIvc29uYW1lLnBhdGNoCkBAIC0wLDAgKzEsMTUgQEAKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQorCitJbmRleDogb3BlbnNzbC0xLjAuMmQvY3J5cHRvL29wZW5zc2x2LmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGVuc3NsLTEuMC4yZC5vcmlnL2NyeXB0by9vcGVuc3Nsdi5oCisrKysgb3BlbnNzbC0xLjAuMmQvY3J5cHRvL29wZW5zc2x2LmgKK0BAIC04OCw3ICs4OCw3IEBAIGV4dGVybiAiQyIgeworICAqIHNob3VsZCBvbmx5IGtlZXAgdGhlIHZlcnNpb25zIHRoYXQgYXJlIGJpbmFyeSBjb21wYXRpYmxlIHdpdGggdGhlIGN1cnJlbnQuCisgICovCisgIyBkZWZpbmUgU0hMSUJfVkVSU0lPTl9ISVNUT1JZICIiCistIyBkZWZpbmUgU0hMSUJfVkVSU0lPTl9OVU1CRVIgIjEuMC4wIgorKyMgZGVmaW5lIFNITElCX1ZFUlNJT05fTlVNQkVSICIxLjAuMiIKKyAKKyAKKyAjaWZkZWYgIF9fY3BsdXNwbHVzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2RlYmlhbjEuMC4yL3ZlcnNpb24tc2NyaXB0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4xLjAuMi92ZXJzaW9uLXNjcmlwdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNDA0ZWUzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9kZWJpYW4xLjAuMi92ZXJzaW9uLXNjcmlwdC5wYXRjaApAQCAtMCwwICsxLDQ2NTggQEAKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQorCitJbmRleDogb3BlbnNzbC0xLjAuMn5iZXRhMS5vYnNvbGV0ZS4wLjA0OTg0MzY1MTU0OTA1NzUvQ29uZmlndXJlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gb3BlbnNzbC0xLjAuMn5iZXRhMS5vYnNvbGV0ZS4wLjA0OTg0MzY1MTU0OTA1NzUub3JpZy9Db25maWd1cmUJMjAxNC0wMi0yNCAyMTowMjozMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMC4yfmJldGExLm9ic29sZXRlLjAuMDQ5ODQzNjUxNTQ5MDU3NS9Db25maWd1cmUJMjAxNC0wMi0yNCAyMTowMjozMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xNjUxLDYgKzE2NTEsOCBAQAorIAkJfQorIAl9CisgCisrJHNoYXJlZF9sZGZsYWcgLj0gIiAtV2wsLS12ZXJzaW9uLXNjcmlwdD1vcGVuc3NsLmxkIjsKKysKKyBvcGVuKElOLCc8TWFrZWZpbGUub3JnJykgfHwgZGllICJ1bmFibGUgdG8gcmVhZCBNYWtlZmlsZS5vcmc6JCFcbiI7CisgdW5saW5rKCIkTWFrZWZpbGUubmV3IikgfHwgZGllICJ1bmFibGUgdG8gcmVtb3ZlIG9sZCAkTWFrZWZpbGUubmV3OiQhXG4iIGlmIC1lICIkTWFrZWZpbGUubmV3IjsKKyBvcGVuKE9VVCwiPiRNYWtlZmlsZS5uZXciKSB8fCBkaWUgInVuYWJsZSB0byBjcmVhdGUgJE1ha2VmaWxlLm5ldzokIVxuIjsKK0luZGV4OiBvcGVuc3NsLTEuMC4yfmJldGExLm9ic29sZXRlLjAuMDQ5ODQzNjUxNTQ5MDU3NS9vcGVuc3NsLmxkCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysgb3BlbnNzbC0xLjAuMn5iZXRhMS5vYnNvbGV0ZS4wLjA0OTg0MzY1MTU0OTA1NzUvb3BlbnNzbC5sZAkyMDE0LTAyLTI0IDIyOjE5OjA4LjYwMTgyNzI2NiArMDEwMAorQEAgLTAsMCArMSw0NjA4IEBACisrT1BFTlNTTF8xLjAuMmQgeworKwlnbG9iYWw6CisrCQlCSU9fZl9zc2w7CisrCQlCSU9fbmV3X2J1ZmZlcl9zc2xfY29ubmVjdDsKKysJCUJJT19uZXdfc3NsOworKwkJQklPX25ld19zc2xfY29ubmVjdDsKKysJCUJJT19wcm94eV9zc2xfY29weV9zZXNzaW9uX2lkOworKwkJQklPX3NzbF9jb3B5X3Nlc3Npb25faWQ7CisrCQlCSU9fc3NsX3NodXRkb3duOworKwkJZDJpX1NTTF9TRVNTSU9OOworKwkJRFRMU3YxX2NsaWVudF9tZXRob2Q7CisrCQlEVExTdjFfbWV0aG9kOworKwkJRFRMU3YxX3NlcnZlcl9tZXRob2Q7CisrCQlFUlJfbG9hZF9TU0xfc3RyaW5nczsKKysJCWkyZF9TU0xfU0VTU0lPTjsKKysJCWtzc2xfYnVpbGRfcHJpbmNpcGFsXzI7CisrCQlrc3NsX2NnZXRfdGt0OworKwkJa3NzbF9jaGVja19hdXRoZW50OworKwkJa3NzbF9jdHhfZnJlZTsKKysJCWtzc2xfY3R4X25ldzsKKysJCWtzc2xfY3R4X3NldGtleTsKKysJCWtzc2xfY3R4X3NldHByaW5jOworKwkJa3NzbF9jdHhfc2V0c3RyaW5nOworKwkJa3NzbF9jdHhfc2hvdzsKKysJCWtzc2xfZXJyX3NldDsKKysJCWtzc2xfa3JiNV9mcmVlX2RhdGFfY29udGVudHM7CisrCQlrc3NsX3NnZXRfdGt0OworKwkJa3NzbF9za2lwX2NvbmZvdW5kOworKwkJa3NzbF92YWxpZGF0ZV90aW1lczsKKysJCVBFTV9yZWFkX2Jpb19TU0xfU0VTU0lPTjsKKysJCVBFTV9yZWFkX1NTTF9TRVNTSU9OOworKwkJUEVNX3dyaXRlX2Jpb19TU0xfU0VTU0lPTjsKKysJCVBFTV93cml0ZV9TU0xfU0VTU0lPTjsKKysJCVNTTF9hY2NlcHQ7CisrCQlTU0xfYWRkX2NsaWVudF9DQTsKKysJCVNTTF9hZGRfZGlyX2NlcnRfc3ViamVjdHNfdG9fc3RhY2s7CisrCQlTU0xfYWRkX2Rpcl9jZXJ0X3N1YmpzX3RvX3N0azsKKysJCVNTTF9hZGRfZmlsZV9jZXJ0X3N1YmplY3RzX3RvX3N0YWNrOworKwkJU1NMX2FkZF9maWxlX2NlcnRfc3VianNfdG9fc3RrOworKwkJU1NMX2FsZXJ0X2Rlc2Nfc3RyaW5nOworKwkJU1NMX2FsZXJ0X2Rlc2Nfc3RyaW5nX2xvbmc7CisrCQlTU0xfYWxlcnRfdHlwZV9zdHJpbmc7CisrCQlTU0xfYWxlcnRfdHlwZV9zdHJpbmdfbG9uZzsKKysJCVNTTF9jYWxsYmFja19jdHJsOworKwkJU1NMX2NoZWNrX3ByaXZhdGVfa2V5OworKwkJU1NMX0NJUEhFUl9kZXNjcmlwdGlvbjsKKysJCVNTTF9DSVBIRVJfZ2V0X2JpdHM7CisrCQlTU0xfQ0lQSEVSX2dldF9uYW1lOworKwkJU1NMX0NJUEhFUl9nZXRfdmVyc2lvbjsKKysJCVNTTF9jbGVhcjsKKysJCVNTTF9DT01QX2FkZF9jb21wcmVzc2lvbl9tZXRob2Q7CisrCQlTU0xfQ09NUF9nZXRfY29tcHJlc3Npb25fbWV0aG9kczsKKysJCVNTTF9DT01QX2dldF9jb21wcmVzc19tZXRob2RzOworKwkJU1NMX0NPTVBfZ2V0X25hbWU7CisrCQlTU0xfY29ubmVjdDsKKysJCVNTTF9jb3B5X3Nlc3Npb25faWQ7CisrCQlTU0xfY3RybDsKKysJCVNTTF9DVFhfYWRkX2NsaWVudF9DQTsKKysJCVNTTF9DVFhfYWRkX3Nlc3Npb247CisrCQlTU0xfQ1RYX2NhbGxiYWNrX2N0cmw7CisrCQlTU0xfQ1RYX2NoZWNrX3ByaXZhdGVfa2V5OworKwkJU1NMX0NUWF9jdHJsOworKwkJU1NMX0NUWF9mbHVzaF9zZXNzaW9uczsKKysJCVNTTF9DVFhfZnJlZTsKKysJCVNTTF9DVFhfZ2V0X2NlcnRfc3RvcmU7CisrCQlTU0xfQ1RYX2dldF9jbGllbnRfQ0FfbGlzdDsKKysJCVNTTF9DVFhfZ2V0X2NsaWVudF9jZXJ0X2NiOworKwkJU1NMX0NUWF9nZXRfZXhfZGF0YTsKKysJCVNTTF9DVFhfZ2V0X2V4X25ld19pbmRleDsKKysJCVNTTF9DVFhfZ2V0X2luZm9fY2FsbGJhY2s7CisrCQlTU0xfQ1RYX2dldF9xdWlldF9zaHV0ZG93bjsKKysJCVNTTF9DVFhfZ2V0X3RpbWVvdXQ7CisrCQlTU0xfQ1RYX2dldF92ZXJpZnlfY2FsbGJhY2s7CisrCQlTU0xfQ1RYX2dldF92ZXJpZnlfZGVwdGg7CisrCQlTU0xfQ1RYX2dldF92ZXJpZnlfbW9kZTsKKysJCVNTTF9DVFhfbG9hZF92ZXJpZnlfbG9jYXRpb25zOworKwkJU1NMX0NUWF9uZXc7CisrCQlTU0xfQ1RYX3JlbW92ZV9zZXNzaW9uOworKwkJU1NMX0NUWF9zZXNzX2dldF9nZXRfY2I7CisrCQlTU0xfQ1RYX3Nlc3NfZ2V0X25ld19jYjsKKysJCVNTTF9DVFhfc2Vzc19nZXRfcmVtb3ZlX2NiOworKwkJU1NMX0NUWF9zZXNzaW9uczsKKysJCVNTTF9DVFhfc2Vzc19zZXRfZ2V0X2NiOworKwkJU1NMX0NUWF9zZXNzX3NldF9uZXdfY2I7CisrCQlTU0xfQ1RYX3Nlc3Nfc2V0X3JlbW92ZV9jYjsKKysJCVNTTF9DVFhfc2V0MV9wYXJhbTsKKysJCVNTTF9DVFhfc2V0X2NlcnRfc3RvcmU7CisrCQlTU0xfQ1RYX3NldF9jZXJ0X3ZlcmlmeV9jYWxsYmFjazsKKysJCVNTTF9DVFhfc2V0X2NlcnRfdmVyaWZ5X2NiOworKwkJU1NMX0NUWF9zZXRfY2lwaGVyX2xpc3Q7CisrCQlTU0xfQ1RYX3NldF9jbGllbnRfQ0FfbGlzdDsKKysJCVNTTF9DVFhfc2V0X2NsaWVudF9jZXJ0X2NiOworKwkJU1NMX0NUWF9zZXRfY2xpZW50X2NlcnRfZW5naW5lOworKwkJU1NMX0NUWF9zZXRfY29va2llX2dlbmVyYXRlX2NiOworKwkJU1NMX0NUWF9zZXRfY29va2llX3ZlcmlmeV9jYjsKKysJCVNTTF9DVFhfc2V0X2RlZmF1bHRfcGFzc3dkX2NiOworKwkJU1NMX0NUWF9zZXRfZGVmYXVsdF9wYXNzd2RfY2JfdXNlcmRhdGE7CisrCQlTU0xfQ1RYX3NldF9kZWZhdWx0X3ZlcmlmeV9wYXRoczsKKysJCVNTTF9DVFhfc2V0X2RlZl9wYXNzd2RfY2JfdWQ7CisrCQlTU0xfQ1RYX3NldF9kZWZfdmVyaWZ5X3BhdGhzOworKwkJU1NMX0NUWF9zZXRfZXhfZGF0YTsKKysJCVNTTF9DVFhfc2V0X2dlbmVyYXRlX3Nlc3Npb25faWQ7CisrCQlTU0xfQ1RYX3NldF9pbmZvX2NhbGxiYWNrOworKwkJU1NMX0NUWF9zZXRfbXNnX2NhbGxiYWNrOworKwkJU1NMX0NUWF9zZXRfcHNrX2NsaWVudF9jYWxsYmFjazsKKysJCVNTTF9DVFhfc2V0X3Bza19zZXJ2ZXJfY2FsbGJhY2s7CisrCQlTU0xfQ1RYX3NldF9wdXJwb3NlOworKwkJU1NMX0NUWF9zZXRfcXVpZXRfc2h1dGRvd247CisrCQlTU0xfQ1RYX3NldF9zZXNzaW9uX2lkX2NvbnRleHQ7CisrCQlTU0xfQ1RYX3NldF9zc2xfdmVyc2lvbjsKKysJCVNTTF9DVFhfc2V0X3RpbWVvdXQ7CisrCQlTU0xfQ1RYX3NldF90bXBfZGhfY2FsbGJhY2s7CisrCQlTU0xfQ1RYX3NldF90bXBfZWNkaF9jYWxsYmFjazsKKysJCVNTTF9DVFhfc2V0X3RtcF9yc2FfY2FsbGJhY2s7CisrCQlTU0xfQ1RYX3NldF90cnVzdDsKKysJCVNTTF9DVFhfc2V0X3ZlcmlmeTsKKysJCVNTTF9DVFhfc2V0X3ZlcmlmeV9kZXB0aDsKKysJCVNTTF9DVFhfdXNlX2NlcnRfY2hhaW5fZmlsZTsKKysJCVNTTF9DVFhfdXNlX2NlcnRpZmljYXRlOworKwkJU1NMX0NUWF91c2VfY2VydGlmaWNhdGVfQVNOMTsKKysJCVNTTF9DVFhfdXNlX2NlcnRpZmljYXRlX2NoYWluX2ZpbGU7CisrCQlTU0xfQ1RYX3VzZV9jZXJ0aWZpY2F0ZV9maWxlOworKwkJU1NMX0NUWF91c2VfUHJpdmF0ZUtleTsKKysJCVNTTF9DVFhfdXNlX1ByaXZhdGVLZXlfQVNOMTsKKysJCVNTTF9DVFhfdXNlX1ByaXZhdGVLZXlfZmlsZTsKKysJCVNTTF9DVFhfdXNlX3Bza19pZGVudGl0eV9oaW50OworKwkJU1NMX0NUWF91c2VfUlNBUHJpdmF0ZUtleTsKKysJCVNTTF9DVFhfdXNlX1JTQVByaXZhdGVLZXlfQVNOMTsKKysJCVNTTF9DVFhfdXNlX1JTQVByaXZhdGVLZXlfZmlsZTsKKysJCVNTTF9kb19oYW5kc2hha2U7CisrCQlTU0xfZHVwOworKwkJU1NMX2R1cF9DQV9saXN0OworKwkJU1NMZWF5X2FkZF9zc2xfYWxnb3JpdGhtczsKKysJCVNTTF9mcmVlOworKwkJU1NMX2dldDFfc2Vzc2lvbjsKKysJCVNTTF9nZXRfY2VydGlmaWNhdGU7CisrCQlTU0xfZ2V0X2NpcGhlcl9saXN0OworKwkJU1NMX2dldF9jaXBoZXJzOworKwkJU1NMX2dldF9jbGllbnRfQ0FfbGlzdDsKKysJCVNTTF9nZXRfY3VycmVudF9jaXBoZXI7CisrCQlTU0xfZ2V0X2N1cnJlbnRfY29tcHJlc3Npb247CisrCQlTU0xfZ2V0X2N1cnJlbnRfZXhwYW5zaW9uOworKwkJU1NMX2dldF9kZWZhdWx0X3RpbWVvdXQ7CisrCQlTU0xfZ2V0X2Vycm9yOworKwkJU1NMX2dldF9leF9kYXRhOworKwkJU1NMX2dldF9leF9kYXRhX1g1MDlfU1RPUkVfQ1RYX2lkeDsKKysJCVNTTF9nZXRfZXhfZF9YNTA5X1NUT1JFX0NUWF9pZHg7CisrCQlTU0xfZ2V0X2V4X25ld19pbmRleDsKKysJCVNTTF9nZXRfZmQ7CisrCQlTU0xfZ2V0X2ZpbmlzaGVkOworKwkJU1NMX2dldF9pbmZvX2NhbGxiYWNrOworKwkJU1NMX2dldF9wZWVyX2NlcnRfY2hhaW47CisrCQlTU0xfZ2V0X3BlZXJfY2VydGlmaWNhdGU7CisrCQlTU0xfZ2V0X3BlZXJfZmluaXNoZWQ7CisrCQlTU0xfZ2V0X3ByaXZhdGVrZXk7CisrCQlTU0xfZ2V0X3Bza19pZGVudGl0eTsKKysJCVNTTF9nZXRfcHNrX2lkZW50aXR5X2hpbnQ7CisrCQlTU0xfZ2V0X3F1aWV0X3NodXRkb3duOworKwkJU1NMX2dldF9yYmlvOworKwkJU1NMX2dldF9yZWFkX2FoZWFkOworKwkJU1NMX2dldF9yZmQ7CisrCQlTU0xfZ2V0X3NlcnZlcm5hbWU7CisrCQlTU0xfZ2V0X3NlcnZlcm5hbWVfdHlwZTsKKysJCVNTTF9nZXRfc2Vzc2lvbjsKKysJCVNTTF9nZXRfc2hhcmVkX2NpcGhlcnM7CisrCQlTU0xfZ2V0X3NodXRkb3duOworKwkJU1NMX2dldF9TU0xfQ1RYOworKwkJU1NMX2dldF9zc2xfbWV0aG9kOworKwkJU1NMX2dldF92ZXJpZnlfY2FsbGJhY2s7CisrCQlTU0xfZ2V0X3ZlcmlmeV9kZXB0aDsKKysJCVNTTF9nZXRfdmVyaWZ5X21vZGU7CisrCQlTU0xfZ2V0X3ZlcmlmeV9yZXN1bHQ7CisrCQlTU0xfZ2V0X3ZlcnNpb247CisrCQlTU0xfZ2V0X3diaW87CisrCQlTU0xfZ2V0X3dmZDsKKysJCVNTTF9oYXNfbWF0Y2hpbmdfc2Vzc2lvbl9pZDsKKysJCVNTTF9saWJyYXJ5X2luaXQ7CisrCQlTU0xfbG9hZF9jbGllbnRfQ0FfZmlsZTsKKysJCVNTTF9sb2FkX2Vycm9yX3N0cmluZ3M7CisrCQlTU0xfbmV3OworKwkJU1NMX3BlZWs7CisrCQlTU0xfcGVuZGluZzsKKysJCVNTTF9yZWFkOworKwkJU1NMX3JlbmVnb3RpYXRlOworKwkJU1NMX3JlbmVnb3RpYXRlX3BlbmRpbmc7CisrCQlTU0xfcnN0YXRlX3N0cmluZzsKKysJCVNTTF9yc3RhdGVfc3RyaW5nX2xvbmc7CisrCQlTU0xfU0VTU0lPTl9jbXA7CisrCQlTU0xfU0VTU0lPTl9mcmVlOworKwkJU1NMX1NFU1NJT05fZ2V0X2V4X2RhdGE7CisrCQlTU0xfU0VTU0lPTl9nZXRfZXhfbmV3X2luZGV4OworKwkJU1NMX1NFU1NJT05fZ2V0X2lkOworKwkJU1NMX1NFU1NJT05fZ2V0X3RpbWU7CisrCQlTU0xfU0VTU0lPTl9nZXRfdGltZW91dDsKKysJCVNTTF9TRVNTSU9OX2hhc2g7CisrCQlTU0xfU0VTU0lPTl9uZXc7CisrCQlTU0xfU0VTU0lPTl9wcmludDsKKysJCVNTTF9TRVNTSU9OX3ByaW50X2ZwOworKwkJU1NMX1NFU1NJT05fc2V0X2V4X2RhdGE7CisrCQlTU0xfU0VTU0lPTl9zZXRfdGltZTsKKysJCVNTTF9TRVNTSU9OX3NldF90aW1lb3V0OworKwkJU1NMX3NldDFfcGFyYW07CisrCQlTU0xfc2V0X2FjY2VwdF9zdGF0ZTsKKysJCVNTTF9zZXRfYmlvOworKwkJU1NMX3NldF9jaXBoZXJfbGlzdDsKKysJCVNTTF9zZXRfY2xpZW50X0NBX2xpc3Q7CisrCQlTU0xfc2V0X2Nvbm5lY3Rfc3RhdGU7CisrCQlTU0xfc2V0X2V4X2RhdGE7CisrCQlTU0xfc2V0X2ZkOworKwkJU1NMX3NldF9nZW5lcmF0ZV9zZXNzaW9uX2lkOworKwkJU1NMX3NldF9pbmZvX2NhbGxiYWNrOworKwkJU1NMX3NldF9tc2dfY2FsbGJhY2s7CisrCQlTU0xfc2V0X3Bza19jbGllbnRfY2FsbGJhY2s7CisrCQlTU0xfc2V0X3Bza19zZXJ2ZXJfY2FsbGJhY2s7CisrCQlTU0xfc2V0X3B1cnBvc2U7CisrCQlTU0xfc2V0X3F1aWV0X3NodXRkb3duOworKwkJU1NMX3NldF9yZWFkX2FoZWFkOworKwkJU1NMX3NldF9yZmQ7CisrCQlTU0xfc2V0X3Nlc3Npb247CisrCQlTU0xfc2V0X3Nlc3Npb25faWRfY29udGV4dDsKKysJCVNTTF9zZXRfc2Vzc2lvbl9zZWNyZXRfY2I7CisrCQlTU0xfc2V0X3Nlc3Npb25fdGlja2V0X2V4dDsKKysJCVNTTF9zZXRfc2Vzc2lvbl90aWNrZXRfZXh0X2NiOworKwkJU1NMX3NldF9zaHV0ZG93bjsKKysJCVNTTF9zZXRfU1NMX0NUWDsKKysJCVNTTF9zZXRfc3NsX21ldGhvZDsKKysJCVNTTF9zZXRfdG1wX2RoX2NhbGxiYWNrOworKwkJU1NMX3NldF90bXBfZWNkaF9jYWxsYmFjazsKKysJCVNTTF9zZXRfdG1wX3JzYV9jYWxsYmFjazsKKysJCVNTTF9zZXRfdHJ1c3Q7CisrCQlTU0xfc2V0X3ZlcmlmeTsKKysJCVNTTF9zZXRfdmVyaWZ5X2RlcHRoOworKwkJU1NMX3NldF92ZXJpZnlfcmVzdWx0OworKwkJU1NMX3NldF93ZmQ7CisrCQlTU0xfc2h1dGRvd247CisrCQlTU0xfc3RhdGU7CisrCQlTU0xfc3RhdGVfc3RyaW5nOworKwkJU1NMX3N0YXRlX3N0cmluZ19sb25nOworKwkJU1NMX3VzZV9jZXJ0aWZpY2F0ZTsKKysJCVNTTF91c2VfY2VydGlmaWNhdGVfQVNOMTsKKysJCVNTTF91c2VfY2VydGlmaWNhdGVfZmlsZTsKKysJCVNTTF91c2VfUHJpdmF0ZUtleTsKKysJCVNTTF91c2VfUHJpdmF0ZUtleV9BU04xOworKwkJU1NMX3VzZV9Qcml2YXRlS2V5X2ZpbGU7CisrCQlTU0xfdXNlX3Bza19pZGVudGl0eV9oaW50OworKwkJU1NMX3VzZV9SU0FQcml2YXRlS2V5OworKwkJU1NMX3VzZV9SU0FQcml2YXRlS2V5X0FTTjE7CisrCQlTU0xfdXNlX1JTQVByaXZhdGVLZXlfZmlsZTsKKysJCVNTTHYyM19jbGllbnRfbWV0aG9kOworKwkJU1NMdjIzX21ldGhvZDsKKysJCVNTTHYyM19zZXJ2ZXJfbWV0aG9kOworKwkJU1NMdjJfY2xpZW50X21ldGhvZDsKKysJCVNTTHYyX21ldGhvZDsKKysJCVNTTHYyX3NlcnZlcl9tZXRob2Q7CisrCQlTU0x2M19jbGllbnRfbWV0aG9kOworKwkJU1NMdjNfbWV0aG9kOworKwkJU1NMdjNfc2VydmVyX21ldGhvZDsKKysJCVNTTF92ZXJzaW9uOworKwkJU1NMX3dhbnQ7CisrCQlTU0xfd3JpdGU7CisrCQlUTFN2MV9jbGllbnRfbWV0aG9kOworKwkJVExTdjFfbWV0aG9kOworKwkJVExTdjFfc2VydmVyX21ldGhvZDsKKysKKysKKysJCVNTTGVheTsKKysJCVNTTGVheV92ZXJzaW9uOworKwkJQVNOMV9CSVRfU1RSSU5HX2FzbjFfbWV0aDsKKysJCUFTTjFfSEVBREVSX2ZyZWU7CisrCQlBU04xX0hFQURFUl9uZXc7CisrCQlBU04xX0lBNVNUUklOR19hc24xX21ldGg7CisrCQlBU04xX0lOVEVHRVJfZ2V0OworKwkJQVNOMV9JTlRFR0VSX3NldDsKKysJCUFTTjFfSU5URUdFUl90b19CTjsKKysJCUFTTjFfT0JKRUNUX2NyZWF0ZTsKKysJCUFTTjFfT0JKRUNUX2ZyZWU7CisrCQlBU04xX09CSkVDVF9uZXc7CisrCQlBU04xX1BSSU5UQUJMRV90eXBlOworKwkJQVNOMV9TVFJJTkdfY21wOworKwkJQVNOMV9TVFJJTkdfZHVwOworKwkJQVNOMV9TVFJJTkdfZnJlZTsKKysJCUFTTjFfU1RSSU5HX25ldzsKKysJCUFTTjFfU1RSSU5HX3ByaW50OworKwkJQVNOMV9TVFJJTkdfc2V0OworKwkJQVNOMV9TVFJJTkdfdHlwZV9uZXc7CisrCQlBU04xX1RZUEVfZnJlZTsKKysJCUFTTjFfVFlQRV9uZXc7CisrCQlBU04xX1VOSVZFUlNBTFNUUklOR190b19zdHJpbmc7CisrCQlBU04xX1VUQ1RJTUVfY2hlY2s7CisrCQlBU04xX1VUQ1RJTUVfcHJpbnQ7CisrCQlBU04xX1VUQ1RJTUVfc2V0OworKwkJQVNOMV9jaGVja19pbmZpbml0ZV9lbmQ7CisrCQlBU04xX2QyaV9iaW87CisrCQlBU04xX2QyaV9mcDsKKysJCUFTTjFfZGlnZXN0OworKwkJQVNOMV9kdXA7CisrCQlBU04xX2dldF9vYmplY3Q7CisrCQlBU04xX2kyZF9iaW87CisrCQlBU04xX2kyZF9mcDsKKysJCUFTTjFfb2JqZWN0X3NpemU7CisrCQlBU04xX3BhcnNlOworKwkJQVNOMV9wdXRfb2JqZWN0OworKwkJQVNOMV9zaWduOworKwkJQVNOMV92ZXJpZnk7CisrCQlCRl9jYmNfZW5jcnlwdDsKKysJCUJGX2NmYjY0X2VuY3J5cHQ7CisrCQlCRl9lY2JfZW5jcnlwdDsKKysJCUJGX2VuY3J5cHQ7CisrCQlCRl9vZmI2NF9lbmNyeXB0OworKwkJQkZfb3B0aW9uczsKKysJCUJGX3NldF9rZXk7CisrCQlCSU9fQ09OTkVDVF9mcmVlOworKwkJQklPX0NPTk5FQ1RfbmV3OworKwkJQklPX2FjY2VwdDsKKysJCUJJT19jdHJsOworKwkJQklPX2ludF9jdHJsOworKwkJQklPX2RlYnVnX2NhbGxiYWNrOworKwkJQklPX2R1bXA7CisrCQlCSU9fZHVwX2NoYWluOworKwkJQklPX2ZfYmFzZTY0OworKwkJQklPX2ZfYnVmZmVyOworKwkJQklPX2ZfY2lwaGVyOworKwkJQklPX2ZfbWQ7CisrCQlCSU9fZl9udWxsOworKwkJQklPX2ZfcHJveHlfc2VydmVyOworKwkJQklPX2ZkX25vbl9mYXRhbF9lcnJvcjsKKysJCUJJT19mZF9zaG91bGRfcmV0cnk7CisrCQlCSU9fZmluZF90eXBlOworKwkJQklPX2ZyZWU7CisrCQlCSU9fZnJlZV9hbGw7CisrCQlCSU9fZ2V0X2FjY2VwdF9zb2NrZXQ7CisrCQlCSU9fZ2V0X2ZpbHRlcl9iaW87CisrCQlCSU9fZ2V0X2hvc3RfaXA7CisrCQlCSU9fZ2V0X3BvcnQ7CisrCQlCSU9fZ2V0X3JldHJ5X0JJTzsKKysJCUJJT19nZXRfcmV0cnlfcmVhc29uOworKwkJQklPX2dldGhvc3RieW5hbWU7CisrCQlCSU9fZ2V0czsKKysJCUJJT19uZXc7CisrCQlCSU9fbmV3X2FjY2VwdDsKKysJCUJJT19uZXdfY29ubmVjdDsKKysJCUJJT19uZXdfZmQ7CisrCQlCSU9fbmV3X2ZpbGU7CisrCQlCSU9fbmV3X2ZwOworKwkJQklPX25ld19zb2NrZXQ7CisrCQlCSU9fcG9wOworKwkJQklPX3ByaW50ZjsKKysJCUJJT19wdXNoOworKwkJQklPX3B1dHM7CisrCQlCSU9fcmVhZDsKKysJCUJJT19zX2FjY2VwdDsKKysJCUJJT19zX2Nvbm5lY3Q7CisrCQlCSU9fc19mZDsKKysJCUJJT19zX2ZpbGU7CisrCQlCSU9fc19tZW07CisrCQlCSU9fc19udWxsOworKwkJQklPX3NfcHJveHlfY2xpZW50OworKwkJQklPX3Nfc29ja2V0OworKwkJQklPX3NldDsKKysJCUJJT19zZXRfY2lwaGVyOworKwkJQklPX3NldF90Y3BfbmRlbGF5OworKwkJQklPX3NvY2tfY2xlYW51cDsKKysJCUJJT19zb2NrX2Vycm9yOworKwkJQklPX3NvY2tfaW5pdDsKKysJCUJJT19zb2NrX25vbl9mYXRhbF9lcnJvcjsKKysJCUJJT19zb2NrX3Nob3VsZF9yZXRyeTsKKysJCUJJT19zb2NrZXRfaW9jdGw7CisrCQlCSU9fd3JpdGU7CisrCQlCTl9DVFhfZnJlZTsKKysJCUJOX0NUWF9uZXc7CisrCQlCTl9NT05UX0NUWF9mcmVlOworKwkJQk5fTU9OVF9DVFhfbmV3OworKwkJQk5fTU9OVF9DVFhfc2V0OworKwkJQk5fYWRkOworKwkJQk5fYWRkX3dvcmQ7CisrCQlCTl9oZXgyYm47CisrCQlCTl9iaW4yYm47CisrCQlCTl9ibjJoZXg7CisrCQlCTl9ibjJiaW47CisrCQlCTl9jbGVhcjsKKysJCUJOX2NsZWFyX2JpdDsKKysJCUJOX2NsZWFyX2ZyZWU7CisrCQlCTl9jbXA7CisrCQlCTl9jb3B5OworKwkJQk5fZGl2OworKwkJQk5fZGl2X3dvcmQ7CisrCQlCTl9kdXA7CisrCQlCTl9mcmVlOworKwkJQk5fZnJvbV9tb250Z29tZXJ5OworKwkJQk5fZ2NkOworKwkJQk5fZ2VuZXJhdGVfcHJpbWU7CisrCQlCTl9nZXRfd29yZDsKKysJCUJOX2lzX2JpdF9zZXQ7CisrCQlCTl9pc19wcmltZTsKKysJCUJOX2xzaGlmdDsKKysJCUJOX2xzaGlmdDE7CisrCQlCTl9tYXNrX2JpdHM7CisrCQlCTl9tb2Q7CisrCQlCTl9tb2RfZXhwOworKwkJQk5fbW9kX2V4cF9tb250OworKwkJQk5fbW9kX2V4cF9zaW1wbGU7CisrCQlCTl9tb2RfaW52ZXJzZTsKKysJCUJOX21vZF9tdWw7CisrCQlCTl9tb2RfbXVsX21vbnRnb21lcnk7CisrCQlCTl9tb2Rfd29yZDsKKysJCUJOX211bDsKKysJCUJOX25ldzsKKysJCUJOX251bV9iaXRzOworKwkJQk5fbnVtX2JpdHNfd29yZDsKKysJCUJOX29wdGlvbnM7CisrCQlCTl9wcmludDsKKysJCUJOX3ByaW50X2ZwOworKwkJQk5fcmFuZDsKKysJCUJOX3JlY2lwcm9jYWw7CisrCQlCTl9yc2hpZnQ7CisrCQlCTl9yc2hpZnQxOworKwkJQk5fc2V0X2JpdDsKKysJCUJOX3NldF93b3JkOworKwkJQk5fc3FyOworKwkJQk5fc3ViOworKwkJQk5fdG9fQVNOMV9JTlRFR0VSOworKwkJQk5fdWNtcDsKKysJCUJOX3ZhbHVlX29uZTsKKysJCUJVRl9NRU1fZnJlZTsKKysJCUJVRl9NRU1fZ3JvdzsKKysJCUJVRl9NRU1fbmV3OworKwkJQlVGX3N0cmR1cDsKKysJCUNPTkZfZnJlZTsKKysJCUNPTkZfZ2V0X251bWJlcjsKKysJCUNPTkZfZ2V0X3NlY3Rpb247CisrCQlDT05GX2dldF9zdHJpbmc7CisrCQlDT05GX2xvYWQ7CisrCQlDUllQVE9fYWRkX2xvY2s7CisrCQlDUllQVE9fZGJnX2ZyZWU7CisrCQlDUllQVE9fZGJnX21hbGxvYzsKKysJCUNSWVBUT19kYmdfcmVhbGxvYzsKKysJCUNSWVBUT19kYmdfcmVtYWxsb2M7CisrCQlDUllQVE9fZnJlZTsKKysJCUNSWVBUT19nZXRfYWRkX2xvY2tfY2FsbGJhY2s7CisrCQlDUllQVE9fZ2V0X2lkX2NhbGxiYWNrOworKwkJQ1JZUFRPX2dldF9sb2NrX25hbWU7CisrCQlDUllQVE9fZ2V0X2xvY2tpbmdfY2FsbGJhY2s7CisrCQlDUllQVE9fZ2V0X21lbV9mdW5jdGlvbnM7CisrCQlDUllQVE9fbG9jazsKKysJCUNSWVBUT19tYWxsb2M7CisrCQlDUllQVE9fbWVtX2N0cmw7CisrCQlDUllQVE9fbWVtX2xlYWtzOworKwkJQ1JZUFRPX21lbV9sZWFrc19jYjsKKysJCUNSWVBUT19tZW1fbGVha3NfZnA7CisrCQlDUllQVE9fcmVhbGxvYzsKKysJCUNSWVBUT19yZW1hbGxvYzsKKysJCUNSWVBUT19zZXRfYWRkX2xvY2tfY2FsbGJhY2s7CisrCQlDUllQVE9fc2V0X2lkX2NhbGxiYWNrOworKwkJQ1JZUFRPX3NldF9sb2NraW5nX2NhbGxiYWNrOworKwkJQ1JZUFRPX3NldF9tZW1fZnVuY3Rpb25zOworKwkJQ1JZUFRPX3RocmVhZF9pZDsKKysJCURIX2NoZWNrOworKwkJREhfY29tcHV0ZV9rZXk7CisrCQlESF9mcmVlOworKwkJREhfZ2VuZXJhdGVfa2V5OworKwkJREhfZ2VuZXJhdGVfcGFyYW1ldGVyczsKKysJCURIX25ldzsKKysJCURIX3NpemU7CisrCQlESHBhcmFtc19wcmludDsKKysJCURIcGFyYW1zX3ByaW50X2ZwOworKwkJRFNBX2ZyZWU7CisrCQlEU0FfZ2VuZXJhdGVfa2V5OworKwkJRFNBX2dlbmVyYXRlX3BhcmFtZXRlcnM7CisrCQlEU0FfaXNfcHJpbWU7CisrCQlEU0FfbmV3OworKwkJRFNBX3ByaW50OworKwkJRFNBX3ByaW50X2ZwOworKwkJRFNBX3NpZ247CisrCQlEU0Ffc2lnbl9zZXR1cDsKKysJCURTQV9zaXplOworKwkJRFNBX3ZlcmlmeTsKKysJCURTQXBhcmFtc19wcmludDsKKysJCURTQXBhcmFtc19wcmludF9mcDsKKysJCUVSUl9jbGVhcl9lcnJvcjsKKysJCUVSUl9lcnJvcl9zdHJpbmc7CisrCQlFUlJfZnJlZV9zdHJpbmdzOworKwkJRVJSX2Z1bmNfZXJyb3Jfc3RyaW5nOworKwkJRVJSX2dldF9lcnJfc3RhdGVfdGFibGU7CisrCQlFUlJfZ2V0X2Vycm9yOworKwkJRVJSX2dldF9lcnJvcl9saW5lOworKwkJRVJSX2dldF9zdGF0ZTsKKysJCUVSUl9nZXRfc3RyaW5nX3RhYmxlOworKwkJRVJSX2xpYl9lcnJvcl9zdHJpbmc7CisrCQlFUlJfbG9hZF9BU04xX3N0cmluZ3M7CisrCQlFUlJfbG9hZF9CSU9fc3RyaW5nczsKKysJCUVSUl9sb2FkX0JOX3N0cmluZ3M7CisrCQlFUlJfbG9hZF9CVUZfc3RyaW5nczsKKysJCUVSUl9sb2FkX0NPTkZfc3RyaW5nczsKKysJCUVSUl9sb2FkX0RIX3N0cmluZ3M7CisrCQlFUlJfbG9hZF9EU0Ffc3RyaW5nczsKKysJCUVSUl9sb2FkX0VSUl9zdHJpbmdzOworKwkJRVJSX2xvYWRfRVZQX3N0cmluZ3M7CisrCQlFUlJfbG9hZF9PQkpfc3RyaW5nczsKKysJCUVSUl9sb2FkX1BFTV9zdHJpbmdzOworKwkJRVJSX2xvYWRfUFJPWFlfc3RyaW5nczsKKysJCUVSUl9sb2FkX1JTQV9zdHJpbmdzOworKwkJRVJSX2xvYWRfWDUwOV9zdHJpbmdzOworKwkJRVJSX2xvYWRfY3J5cHRvX3N0cmluZ3M7CisrCQlFUlJfbG9hZF9zdHJpbmdzOworKwkJRVJSX3BlZWtfZXJyb3I7CisrCQlFUlJfcGVla19lcnJvcl9saW5lOworKwkJRVJSX3ByaW50X2Vycm9yczsKKysJCUVSUl9wcmludF9lcnJvcnNfZnA7CisrCQlFUlJfcHV0X2Vycm9yOworKwkJRVJSX3JlYXNvbl9lcnJvcl9zdHJpbmc7CisrCQlFUlJfcmVtb3ZlX3N0YXRlOworKwkJRVZQX0J5dGVzVG9LZXk7CisrCQlFVlBfQ0lQSEVSX0NUWF9jbGVhbnVwOworKwkJRVZQX0NpcGhlckZpbmFsOworKwkJRVZQX0NpcGhlckluaXQ7CisrCQlFVlBfQ2lwaGVyVXBkYXRlOworKwkJRVZQX0RlY29kZUJsb2NrOworKwkJRVZQX0RlY29kZUZpbmFsOworKwkJRVZQX0RlY29kZUluaXQ7CisrCQlFVlBfRGVjb2RlVXBkYXRlOworKwkJRVZQX0RlY3J5cHRGaW5hbDsKKysJCUVWUF9EZWNyeXB0SW5pdDsKKysJCUVWUF9EZWNyeXB0VXBkYXRlOworKwkJRVZQX0RpZ2VzdEZpbmFsOworKwkJRVZQX0RpZ2VzdEluaXQ7CisrCQlFVlBfRGlnZXN0VXBkYXRlOworKwkJRVZQX0VuY29kZUJsb2NrOworKwkJRVZQX0VuY29kZUZpbmFsOworKwkJRVZQX0VuY29kZUluaXQ7CisrCQlFVlBfRW5jb2RlVXBkYXRlOworKwkJRVZQX0VuY3J5cHRGaW5hbDsKKysJCUVWUF9FbmNyeXB0SW5pdDsKKysJCUVWUF9FbmNyeXB0VXBkYXRlOworKwkJRVZQX09wZW5GaW5hbDsKKysJCUVWUF9PcGVuSW5pdDsKKysJCUVWUF9QS0VZX2Fzc2lnbjsKKysJCUVWUF9QS0VZX2NvcHlfcGFyYW1ldGVyczsKKysJCUVWUF9QS0VZX2ZyZWU7CisrCQlFVlBfUEtFWV9taXNzaW5nX3BhcmFtZXRlcnM7CisrCQlFVlBfUEtFWV9uZXc7CisrCQlFVlBfUEtFWV9zYXZlX3BhcmFtZXRlcnM7CisrCQlFVlBfUEtFWV9zaXplOworKwkJRVZQX1BLRVlfdHlwZTsKKysJCUVWUF9TZWFsRmluYWw7CisrCQlFVlBfU2VhbEluaXQ7CisrCQlFVlBfU2lnbkZpbmFsOworKwkJRVZQX1ZlcmlmeUZpbmFsOworKwkJRVZQX2FkZF9hbGlhczsKKysJCUVWUF9hZGRfY2lwaGVyOworKwkJRVZQX2FkZF9kaWdlc3Q7CisrCQlFVlBfYmZfY2JjOworKwkJRVZQX2JmX2NmYjY0OworKwkJRVZQX2JmX2VjYjsKKysJCUVWUF9iZl9vZmI7CisrCQlFVlBfY2xlYW51cDsKKysJCUVWUF9kZXNfY2JjOworKwkJRVZQX2Rlc19jZmI2NDsKKysJCUVWUF9kZXNfZWNiOworKwkJRVZQX2Rlc19lZGU7CisrCQlFVlBfZGVzX2VkZTM7CisrCQlFVlBfZGVzX2VkZTNfY2JjOworKwkJRVZQX2Rlc19lZGUzX2NmYjY0OworKwkJRVZQX2Rlc19lZGUzX29mYjsKKysJCUVWUF9kZXNfZWRlX2NiYzsKKysJCUVWUF9kZXNfZWRlX2NmYjY0OworKwkJRVZQX2Rlc19lZGVfb2ZiOworKwkJRVZQX2Rlc19vZmI7CisrCQlFVlBfZGVzeF9jYmM7CisrCQlFVlBfZHNzOworKwkJRVZQX2RzczE7CisrCQlFVlBfZW5jX251bGw7CisrCQlFVlBfZ2V0X2NpcGhlcmJ5bmFtZTsKKysJCUVWUF9nZXRfZGlnZXN0YnluYW1lOworKwkJRVZQX2dldF9wd19wcm9tcHQ7CisrCQlFVlBfaWRlYV9jYmM7CisrCQlFVlBfaWRlYV9jZmI2NDsKKysJCUVWUF9pZGVhX2VjYjsKKysJCUVWUF9pZGVhX29mYjsKKysJCUVWUF9tZDI7CisrCQlFVlBfbWQ1OworKwkJRVZQX21kX251bGw7CisrCQlFVlBfcmMyX2NiYzsKKysJCUVWUF9yYzJfY2ZiNjQ7CisrCQlFVlBfcmMyX2VjYjsKKysJCUVWUF9yYzJfb2ZiOworKwkJRVZQX3JjNDsKKysJCUVWUF9yZWFkX3B3X3N0cmluZzsKKysJCUVWUF9zZXRfcHdfcHJvbXB0OworKwkJRVZQX3NoYTsKKysJCUVWUF9zaGExOworKwkJTUQyOworKwkJTUQyX0ZpbmFsOworKwkJTUQyX0luaXQ7CisrCQlNRDJfVXBkYXRlOworKwkJTUQyX29wdGlvbnM7CisrCQlNRDU7CisrCQlNRDVfRmluYWw7CisrCQlNRDVfSW5pdDsKKysJCU1ENV9VcGRhdGU7CisrCQlNREMyOworKwkJTURDMl9GaW5hbDsKKysJCU1EQzJfSW5pdDsKKysJCU1EQzJfVXBkYXRlOworKwkJTkVUU0NBUEVfU1BLQUNfZnJlZTsKKysJCU5FVFNDQVBFX1NQS0FDX25ldzsKKysJCU5FVFNDQVBFX1NQS0lfZnJlZTsKKysJCU5FVFNDQVBFX1NQS0lfbmV3OworKwkJTkVUU0NBUEVfU1BLSV9zaWduOworKwkJTkVUU0NBUEVfU1BLSV92ZXJpZnk7CisrCQlPQkpfYWRkX29iamVjdDsKKysJCU9CSl9ic2VhcmNoOworKwkJT0JKX2NsZWFudXA7CisrCQlPQkpfY21wOworKwkJT0JKX2NyZWF0ZTsKKysJCU9CSl9kdXA7CisrCQlPQkpfbG4ybmlkOworKwkJT0JKX25ld19uaWQ7CisrCQlPQkpfbmlkMmxuOworKwkJT0JKX25pZDJvYmo7CisrCQlPQkpfbmlkMnNuOworKwkJT0JKX29iajJuaWQ7CisrCQlPQkpfc24ybmlkOworKwkJT0JKX3R4dDJuaWQ7CisrCQlQRU1fQVNOMV9yZWFkOworKwkJUEVNX0FTTjFfcmVhZF9iaW87CisrCQlQRU1fQVNOMV93cml0ZTsKKysJCVBFTV9BU04xX3dyaXRlX2JpbzsKKysJCVBFTV9TZWFsRmluYWw7CisrCQlQRU1fU2VhbEluaXQ7CisrCQlQRU1fU2VhbFVwZGF0ZTsKKysJCVBFTV9TaWduRmluYWw7CisrCQlQRU1fU2lnbkluaXQ7CisrCQlQRU1fU2lnblVwZGF0ZTsKKysJCVBFTV9YNTA5X0lORk9fcmVhZDsKKysJCVBFTV9YNTA5X0lORk9fcmVhZF9iaW87CisrCQlQRU1fWDUwOV9JTkZPX3dyaXRlX2JpbzsKKysJCVBFTV9kZWtfaW5mbzsKKysJCVBFTV9kb19oZWFkZXI7CisrCQlQRU1fZ2V0X0VWUF9DSVBIRVJfSU5GTzsKKysJCVBFTV9wcm9jX3R5cGU7CisrCQlQRU1fcmVhZDsKKysJCVBFTV9yZWFkX0RIcGFyYW1zOworKwkJUEVNX3JlYWRfRFNBUHJpdmF0ZUtleTsKKysJCVBFTV9yZWFkX0RTQXBhcmFtczsKKysJCVBFTV9yZWFkX1BLQ1M3OworKwkJUEVNX3JlYWRfUHJpdmF0ZUtleTsKKysJCVBFTV9yZWFkX1JTQVByaXZhdGVLZXk7CisrCQlQRU1fcmVhZF9YNTA5OworKwkJUEVNX3JlYWRfWDUwOV9DUkw7CisrCQlQRU1fcmVhZF9YNTA5X1JFUTsKKysJCVBFTV9yZWFkX2JpbzsKKysJCVBFTV9yZWFkX2Jpb19ESHBhcmFtczsKKysJCVBFTV9yZWFkX2Jpb19EU0FQcml2YXRlS2V5OworKwkJUEVNX3JlYWRfYmlvX0RTQXBhcmFtczsKKysJCVBFTV9yZWFkX2Jpb19QS0NTNzsKKysJCVBFTV9yZWFkX2Jpb19Qcml2YXRlS2V5OworKwkJUEVNX3JlYWRfYmlvX1JTQVByaXZhdGVLZXk7CisrCQlQRU1fcmVhZF9iaW9fWDUwOTsKKysJCVBFTV9yZWFkX2Jpb19YNTA5X0NSTDsKKysJCVBFTV9yZWFkX2Jpb19YNTA5X1JFUTsKKysJCVBFTV93cml0ZTsKKysJCVBFTV93cml0ZV9ESHBhcmFtczsKKysJCVBFTV93cml0ZV9EU0FQcml2YXRlS2V5OworKwkJUEVNX3dyaXRlX0RTQXBhcmFtczsKKysJCVBFTV93cml0ZV9QS0NTNzsKKysJCVBFTV93cml0ZV9Qcml2YXRlS2V5OworKwkJUEVNX3dyaXRlX1JTQVByaXZhdGVLZXk7CisrCQlQRU1fd3JpdGVfWDUwOTsKKysJCVBFTV93cml0ZV9YNTA5X0NSTDsKKysJCVBFTV93cml0ZV9YNTA5X1JFUTsKKysJCVBFTV93cml0ZV9iaW87CisrCQlQRU1fd3JpdGVfYmlvX0RIcGFyYW1zOworKwkJUEVNX3dyaXRlX2Jpb19EU0FQcml2YXRlS2V5OworKwkJUEVNX3dyaXRlX2Jpb19EU0FwYXJhbXM7CisrCQlQRU1fd3JpdGVfYmlvX1BLQ1M3OworKwkJUEVNX3dyaXRlX2Jpb19Qcml2YXRlS2V5OworKwkJUEVNX3dyaXRlX2Jpb19SU0FQcml2YXRlS2V5OworKwkJUEVNX3dyaXRlX2Jpb19YNTA5OworKwkJUEVNX3dyaXRlX2Jpb19YNTA5X0NSTDsKKysJCVBFTV93cml0ZV9iaW9fWDUwOV9SRVE7CisrCQlQS0NTN19ESUdFU1RfZnJlZTsKKysJCVBLQ1M3X0RJR0VTVF9uZXc7CisrCQlQS0NTN19FTkNSWVBUX2ZyZWU7CisrCQlQS0NTN19FTkNSWVBUX25ldzsKKysJCVBLQ1M3X0VOQ19DT05URU5UX2ZyZWU7CisrCQlQS0NTN19FTkNfQ09OVEVOVF9uZXc7CisrCQlQS0NTN19FTlZFTE9QRV9mcmVlOworKwkJUEtDUzdfRU5WRUxPUEVfbmV3OworKwkJUEtDUzdfSVNTVUVSX0FORF9TRVJJQUxfZGlnZXN0OworKwkJUEtDUzdfSVNTVUVSX0FORF9TRVJJQUxfZnJlZTsKKysJCVBLQ1M3X0lTU1VFUl9BTkRfU0VSSUFMX25ldzsKKysJCVBLQ1M3X1JFQ0lQX0lORk9fZnJlZTsKKysJCVBLQ1M3X1JFQ0lQX0lORk9fbmV3OworKwkJUEtDUzdfU0lHTkVEX2ZyZWU7CisrCQlQS0NTN19TSUdORURfbmV3OworKwkJUEtDUzdfU0lHTkVSX0lORk9fZnJlZTsKKysJCVBLQ1M3X1NJR05FUl9JTkZPX25ldzsKKysJCVBLQ1M3X1NJR05fRU5WRUxPUEVfZnJlZTsKKysJCVBLQ1M3X1NJR05fRU5WRUxPUEVfbmV3OworKwkJUEtDUzdfZHVwOworKwkJUEtDUzdfZnJlZTsKKysJCVBLQ1M3X25ldzsKKysJCVBST1hZX0VOVFJZX2FkZF9ub3Byb3h5OworKwkJUFJPWFlfRU5UUllfY2xlYXJfbm9wcm94eTsKKysJCVBST1hZX0VOVFJZX2ZyZWU7CisrCQlQUk9YWV9FTlRSWV9nZXRfbm9wcm94eTsKKysJCVBST1hZX0VOVFJZX25ldzsKKysJCVBST1hZX0VOVFJZX3NldF9zZXJ2ZXI7CisrCQlQUk9YWV9hZGRfbm9wcm94eTsKKysJCVBST1hZX2FkZF9zZXJ2ZXI7CisrCQlQUk9YWV9jaGVja19ieV9ob3N0OworKwkJUFJPWFlfY2hlY2tfdXJsOworKwkJUFJPWFlfY2xlYXJfbm9wcm94eTsKKysJCVBST1hZX2ZyZWU7CisrCQlQUk9YWV9nZXRfbm9wcm94eTsKKysJCVBST1hZX2dldF9wcm94aWVzOworKwkJUFJPWFlfZ2V0X3Byb3h5X2VudHJ5OworKwkJUFJPWFlfbG9hZF9jb25mOworKwkJUFJPWFlfbmV3OworKwkJUFJPWFlfcHJpbnQ7CisrCQlSQU5EX2J5dGVzOworKwkJUkFORF9jbGVhbnVwOworKwkJUkFORF9maWxlX25hbWU7CisrCQlSQU5EX2xvYWRfZmlsZTsKKysJCVJBTkRfc2NyZWVuOworKwkJUkFORF9zZWVkOworKwkJUkFORF93cml0ZV9maWxlOworKwkJUkMyX2NiY19lbmNyeXB0OworKwkJUkMyX2NmYjY0X2VuY3J5cHQ7CisrCQlSQzJfZWNiX2VuY3J5cHQ7CisrCQlSQzJfZW5jcnlwdDsKKysJCVJDMl9vZmI2NF9lbmNyeXB0OworKwkJUkMyX3NldF9rZXk7CisrCQlSQzQ7CisrCQlSQzRfb3B0aW9uczsKKysJCVJDNF9zZXRfa2V5OworKwkJUlNBUHJpdmF0ZUtleV9hc24xX21ldGg7CisrCQlSU0FQcml2YXRlS2V5X2R1cDsKKysJCVJTQVB1YmxpY0tleV9kdXA7CisrCQlSU0FfUEtDUzFfU1NMZWF5OworKwkJUlNBX2ZyZWU7CisrCQlSU0FfZ2VuZXJhdGVfa2V5OworKwkJUlNBX25ldzsKKysJCVJTQV9uZXdfbWV0aG9kOworKwkJUlNBX3ByaW50OworKwkJUlNBX3ByaW50X2ZwOworKwkJUlNBX3ByaXZhdGVfZGVjcnlwdDsKKysJCVJTQV9wcml2YXRlX2VuY3J5cHQ7CisrCQlSU0FfcHVibGljX2RlY3J5cHQ7CisrCQlSU0FfcHVibGljX2VuY3J5cHQ7CisrCQlSU0Ffc2V0X2RlZmF1bHRfbWV0aG9kOworKwkJUlNBX3NpZ247CisrCQlSU0Ffc2lnbl9BU04xX09DVEVUX1NUUklORzsKKysJCVJTQV9zaXplOworKwkJUlNBX3ZlcmlmeTsKKysJCVJTQV92ZXJpZnlfQVNOMV9PQ1RFVF9TVFJJTkc7CisrCQlTSEE7CisrCQlTSEExOworKwkJU0hBMV9GaW5hbDsKKysJCVNIQTFfSW5pdDsKKysJCVNIQTFfVXBkYXRlOworKwkJU0hBX0ZpbmFsOworKwkJU0hBX0luaXQ7CisrCQlTSEFfVXBkYXRlOworKwkJT3BlblNTTF9hZGRfYWxsX2FsZ29yaXRobXM7CisrCQlPcGVuU1NMX2FkZF9hbGxfY2lwaGVyczsKKysJCU9wZW5TU0xfYWRkX2FsbF9kaWdlc3RzOworKwkJVFhUX0RCX2NyZWF0ZV9pbmRleDsKKysJCVRYVF9EQl9mcmVlOworKwkJVFhUX0RCX2dldF9ieV9pbmRleDsKKysJCVRYVF9EQl9pbnNlcnQ7CisrCQlUWFRfREJfcmVhZDsKKysJCVRYVF9EQl93cml0ZTsKKysJCVg1MDlfQUxHT1JfZnJlZTsKKysJCVg1MDlfQUxHT1JfbmV3OworKwkJWDUwOV9BVFRSSUJVVEVfZnJlZTsKKysJCVg1MDlfQVRUUklCVVRFX25ldzsKKysJCVg1MDlfQ0lORl9mcmVlOworKwkJWDUwOV9DSU5GX25ldzsKKysJCVg1MDlfQ1JMX0lORk9fZnJlZTsKKysJCVg1MDlfQ1JMX0lORk9fbmV3OworKwkJWDUwOV9DUkxfYWRkX2V4dDsKKysJCVg1MDlfQ1JMX2NtcDsKKysJCVg1MDlfQ1JMX2RlbGV0ZV9leHQ7CisrCQlYNTA5X0NSTF9kdXA7CisrCQlYNTA5X0NSTF9mcmVlOworKwkJWDUwOV9DUkxfZ2V0X2V4dDsKKysJCVg1MDlfQ1JMX2dldF9leHRfYnlfTklEOworKwkJWDUwOV9DUkxfZ2V0X2V4dF9ieV9PQko7CisrCQlYNTA5X0NSTF9nZXRfZXh0X2J5X2NyaXRpY2FsOworKwkJWDUwOV9DUkxfZ2V0X2V4dF9jb3VudDsKKysJCVg1MDlfQ1JMX25ldzsKKysJCVg1MDlfQ1JMX3NpZ247CisrCQlYNTA5X0NSTF92ZXJpZnk7CisrCQlYNTA5X0VYVEVOU0lPTl9jcmVhdGVfYnlfTklEOworKwkJWDUwOV9FWFRFTlNJT05fY3JlYXRlX2J5X09CSjsKKysJCVg1MDlfRVhURU5TSU9OX2R1cDsKKysJCVg1MDlfRVhURU5TSU9OX2ZyZWU7CisrCQlYNTA5X0VYVEVOU0lPTl9nZXRfY3JpdGljYWw7CisrCQlYNTA5X0VYVEVOU0lPTl9nZXRfZGF0YTsKKysJCVg1MDlfRVhURU5TSU9OX2dldF9vYmplY3Q7CisrCQlYNTA5X0VYVEVOU0lPTl9uZXc7CisrCQlYNTA5X0VYVEVOU0lPTl9zZXRfY3JpdGljYWw7CisrCQlYNTA5X0VYVEVOU0lPTl9zZXRfZGF0YTsKKysJCVg1MDlfRVhURU5TSU9OX3NldF9vYmplY3Q7CisrCQlYNTA5X0lORk9fZnJlZTsKKysJCVg1MDlfSU5GT19uZXc7CisrCQlYNTA5X0xPT0tVUF9ieV9hbGlhczsKKysJCVg1MDlfTE9PS1VQX2J5X2ZpbmdlcnByaW50OworKwkJWDUwOV9MT09LVVBfYnlfaXNzdWVyX3NlcmlhbDsKKysJCVg1MDlfTE9PS1VQX2J5X3N1YmplY3Q7CisrCQlYNTA5X0xPT0tVUF9jdHJsOworKwkJWDUwOV9MT09LVVBfZmlsZTsKKysJCVg1MDlfTE9PS1VQX2ZyZWU7CisrCQlYNTA5X0xPT0tVUF9oYXNoX2RpcjsKKysJCVg1MDlfTE9PS1VQX2luaXQ7CisrCQlYNTA5X0xPT0tVUF9uZXc7CisrCQlYNTA5X0xPT0tVUF9zaHV0ZG93bjsKKysJCVg1MDlfTkFNRV9FTlRSWV9jcmVhdGVfYnlfTklEOworKwkJWDUwOV9OQU1FX0VOVFJZX2NyZWF0ZV9ieV9PQko7CisrCQlYNTA5X05BTUVfRU5UUllfZHVwOworKwkJWDUwOV9OQU1FX0VOVFJZX2ZyZWU7CisrCQlYNTA5X05BTUVfRU5UUllfZ2V0X2RhdGE7CisrCQlYNTA5X05BTUVfRU5UUllfZ2V0X29iamVjdDsKKysJCVg1MDlfTkFNRV9FTlRSWV9uZXc7CisrCQlYNTA5X05BTUVfRU5UUllfc2V0X2RhdGE7CisrCQlYNTA5X05BTUVfRU5UUllfc2V0X29iamVjdDsKKysJCVg1MDlfTkFNRV9hZGRfZW50cnk7CisrCQlYNTA5X05BTUVfY21wOworKwkJWDUwOV9OQU1FX2RlbGV0ZV9lbnRyeTsKKysJCVg1MDlfTkFNRV9kaWdlc3Q7CisrCQlYNTA5X05BTUVfZHVwOworKwkJWDUwOV9OQU1FX2VudHJ5X2NvdW50OworKwkJWDUwOV9OQU1FX2ZyZWU7CisrCQlYNTA5X05BTUVfZ2V0X2VudHJ5OworKwkJWDUwOV9OQU1FX2dldF9pbmRleF9ieV9OSUQ7CisrCQlYNTA5X05BTUVfZ2V0X2luZGV4X2J5X09CSjsKKysJCVg1MDlfTkFNRV9nZXRfdGV4dF9ieV9OSUQ7CisrCQlYNTA5X05BTUVfZ2V0X3RleHRfYnlfT0JKOworKwkJWDUwOV9OQU1FX2hhc2g7CisrCQlYNTA5X05BTUVfbmV3OworKwkJWDUwOV9OQU1FX29uZWxpbmU7CisrCQlYNTA5X05BTUVfcHJpbnQ7CisrCQlYNTA5X05BTUVfc2V0OworKwkJWDUwOV9PQkpFQ1RfZnJlZV9jb250ZW50czsKKysJCVg1MDlfT0JKRUNUX3JldHJpZXZlX2J5X3N1YmplY3Q7CisrCQlYNTA5X09CSkVDVF91cF9yZWZfY291bnQ7CisrCQlYNTA5X1BLRVlfZnJlZTsKKysJCVg1MDlfUEtFWV9uZXc7CisrCQlYNTA5X1BVQktFWV9mcmVlOworKwkJWDUwOV9QVUJLRVlfZ2V0OworKwkJWDUwOV9QVUJLRVlfbmV3OworKwkJWDUwOV9QVUJLRVlfc2V0OworKwkJWDUwOV9SRVFfSU5GT19mcmVlOworKwkJWDUwOV9SRVFfSU5GT19uZXc7CisrCQlYNTA5X1JFUV9kdXA7CisrCQlYNTA5X1JFUV9mcmVlOworKwkJWDUwOV9SRVFfZ2V0X3B1YmtleTsKKysJCVg1MDlfUkVRX25ldzsKKysJCVg1MDlfUkVRX3ByaW50OworKwkJWDUwOV9SRVFfcHJpbnRfZnA7CisrCQlYNTA5X1JFUV9zZXRfcHVia2V5OworKwkJWDUwOV9SRVFfc2V0X3N1YmplY3RfbmFtZTsKKysJCVg1MDlfUkVRX3NldF92ZXJzaW9uOworKwkJWDUwOV9SRVFfc2lnbjsKKysJCVg1MDlfUkVRX3RvX1g1MDk7CisrCQlYNTA5X1JFUV92ZXJpZnk7CisrCQlYNTA5X1JFVk9LRURfYWRkX2V4dDsKKysJCVg1MDlfUkVWT0tFRF9kZWxldGVfZXh0OworKwkJWDUwOV9SRVZPS0VEX2ZyZWU7CisrCQlYNTA5X1JFVk9LRURfZ2V0X2V4dDsKKysJCVg1MDlfUkVWT0tFRF9nZXRfZXh0X2J5X05JRDsKKysJCVg1MDlfUkVWT0tFRF9nZXRfZXh0X2J5X09CSjsKKysJCVg1MDlfUkVWT0tFRF9nZXRfZXh0X2J5X2NyaXRpY2FsOworKwkJWDUwOV9SRVZPS0VEX2dldF9leHRfYnlfY3JpdGljOworKwkJWDUwOV9SRVZPS0VEX2dldF9leHRfY291bnQ7CisrCQlYNTA5X1JFVk9LRURfbmV3OworKwkJWDUwOV9TSUdfZnJlZTsKKysJCVg1MDlfU0lHX25ldzsKKysJCVg1MDlfU1RPUkVfQ1RYX2NsZWFudXA7CisrCQlYNTA5X1NUT1JFX0NUWF9pbml0OworKwkJWDUwOV9TVE9SRV9hZGRfY2VydDsKKysJCVg1MDlfU1RPUkVfYWRkX2xvb2t1cDsKKysJCVg1MDlfU1RPUkVfZnJlZTsKKysJCVg1MDlfU1RPUkVfZ2V0X2J5X3N1YmplY3Q7CisrCQlYNTA5X1NUT1JFX2xvYWRfbG9jYXRpb25zOworKwkJWDUwOV9TVE9SRV9uZXc7CisrCQlYNTA5X1NUT1JFX3NldF9kZWZhdWx0X3BhdGhzOworKwkJWDUwOV9WQUxfZnJlZTsKKysJCVg1MDlfVkFMX25ldzsKKysJCVg1MDlfYWRkX2V4dDsKKysJCVg1MDlfYXNuMV9tZXRoOworKwkJWDUwOV9jZXJ0aWZpY2F0ZV90eXBlOworKwkJWDUwOV9jaGVja19wcml2YXRlX2tleTsKKysJCVg1MDlfY21wX2N1cnJlbnRfdGltZTsKKysJCVg1MDlfZGVsZXRlX2V4dDsKKysJCVg1MDlfZGlnZXN0OworKwkJWDUwOV9kdXA7CisrCQlYNTA5X2ZyZWU7CisrCQlYNTA5X2dldF9kZWZhdWx0X2NlcnRfYXJlYTsKKysJCVg1MDlfZ2V0X2RlZmF1bHRfY2VydF9kaXI7CisrCQlYNTA5X2dldF9kZWZhdWx0X2NlcnRfZGlyX2VudjsKKysJCVg1MDlfZ2V0X2RlZmF1bHRfY2VydF9maWxlOworKwkJWDUwOV9nZXRfZGVmYXVsdF9jZXJ0X2ZpbGVfZW52OworKwkJWDUwOV9nZXRfZGVmYXVsdF9wcml2YXRlX2RpcjsKKysJCVg1MDlfZ2V0X2V4dDsKKysJCVg1MDlfZ2V0X2V4dF9ieV9OSUQ7CisrCQlYNTA5X2dldF9leHRfYnlfT0JKOworKwkJWDUwOV9nZXRfZXh0X2J5X2NyaXRpY2FsOworKwkJWDUwOV9nZXRfZXh0X2NvdW50OworKwkJWDUwOV9nZXRfaXNzdWVyX25hbWU7CisrCQlYNTA5X2dldF9wdWJrZXk7CisrCQlYNTA5X2dldF9wdWJrZXlfcGFyYW1ldGVyczsKKysJCVg1MDlfZ2V0X3NlcmlhbE51bWJlcjsKKysJCVg1MDlfZ2V0X3N1YmplY3RfbmFtZTsKKysJCVg1MDlfZ210aW1lX2FkajsKKysJCVg1MDlfaXNzdWVyX2FuZF9zZXJpYWxfY21wOworKwkJWDUwOV9pc3N1ZXJfYW5kX3NlcmlhbF9oYXNoOworKwkJWDUwOV9pc3N1ZXJfbmFtZV9jbXA7CisrCQlYNTA5X2lzc3Vlcl9uYW1lX2hhc2g7CisrCQlYNTA5X2xvYWRfY2VydF9maWxlOworKwkJWDUwOV9uZXc7CisrCQlYNTA5X3ByaW50OworKwkJWDUwOV9wcmludF9mcDsKKysJCVg1MDlfc2V0X2lzc3Vlcl9uYW1lOworKwkJWDUwOV9zZXRfbm90QWZ0ZXI7CisrCQlYNTA5X3NldF9ub3RCZWZvcmU7CisrCQlYNTA5X3NldF9wdWJrZXk7CisrCQlYNTA5X3NldF9zZXJpYWxOdW1iZXI7CisrCQlYNTA5X3NldF9zdWJqZWN0X25hbWU7CisrCQlYNTA5X3NldF92ZXJzaW9uOworKwkJWDUwOV9zaWduOworKwkJWDUwOV9zdWJqZWN0X25hbWVfY21wOworKwkJWDUwOV9zdWJqZWN0X25hbWVfaGFzaDsKKysJCVg1MDlfdG9fWDUwOV9SRVE7CisrCQlYNTA5X3ZlcmlmeTsKKysJCVg1MDlfdmVyaWZ5X2NlcnQ7CisrCQlYNTA5X3ZlcmlmeV9jZXJ0X2Vycm9yX3N0cmluZzsKKysJCVg1MDl2M19hZGRfZXh0OworKwkJWDUwOXYzX2FkZF9leHRlbnNpb247CisrCQlYNTA5djNfYWRkX25ldHNjYXBlX2V4dGVuc2lvbnM7CisrCQlYNTA5djNfYWRkX3N0YW5kYXJkX2V4dGVuc2lvbnM7CisrCQlYNTA5djNfY2xlYW51cF9leHRlbnNpb25zOworKwkJWDUwOXYzX2RhdGFfdHlwZV9ieV9OSUQ7CisrCQlYNTA5djNfZGF0YV90eXBlX2J5X09CSjsKKysJCVg1MDl2M19kZWxldGVfZXh0OworKwkJWDUwOXYzX2dldF9leHQ7CisrCQlYNTA5djNfZ2V0X2V4dF9ieV9OSUQ7CisrCQlYNTA5djNfZ2V0X2V4dF9ieV9PQko7CisrCQlYNTA5djNfZ2V0X2V4dF9ieV9jcml0aWNhbDsKKysJCVg1MDl2M19nZXRfZXh0X2NvdW50OworKwkJWDUwOXYzX3BhY2tfc3RyaW5nOworKwkJWDUwOXYzX3BhY2tfdHlwZV9ieV9OSUQ7CisrCQlYNTA5djNfcGFja190eXBlX2J5X09CSjsKKysJCVg1MDl2M191bnBhY2tfc3RyaW5nOworKwkJX2Rlc19jcnlwdDsKKysJCWEyZF9BU04xX09CSkVDVDsKKysJCWEyaV9BU04xX0lOVEVHRVI7CisrCQlhMmlfQVNOMV9TVFJJTkc7CisrCQlhc24xX0ZpbmlzaDsKKysJCWFzbjFfR2V0U2VxdWVuY2U7CisrCQlibl9kaXZfd29yZHM7CisrCQlibl9leHBhbmQyOworKwkJYm5fbXVsX2FkZF93b3JkczsKKysJCWJuX211bF93b3JkczsKKysJCUJOX3VhZGQ7CisrCQlCTl91c3ViOworKwkJYm5fc3FyX3dvcmRzOworKwkJX29zc2xfb2xkX2NyeXB0OworKwkJZDJpX0FTTjFfQklUX1NUUklORzsKKysJCWQyaV9BU04xX0JPT0xFQU47CisrCQlkMmlfQVNOMV9IRUFERVI7CisrCQlkMmlfQVNOMV9JQTVTVFJJTkc7CisrCQlkMmlfQVNOMV9JTlRFR0VSOworKwkJZDJpX0FTTjFfT0JKRUNUOworKwkJZDJpX0FTTjFfT0NURVRfU1RSSU5HOworKwkJZDJpX0FTTjFfUFJJTlRBQkxFOworKwkJZDJpX0FTTjFfUFJJTlRBQkxFU1RSSU5HOworKwkJZDJpX0FTTjFfU0VUOworKwkJZDJpX0FTTjFfVDYxU1RSSU5HOworKwkJZDJpX0FTTjFfVFlQRTsKKysJCWQyaV9BU04xX1VUQ1RJTUU7CisrCQlkMmlfQVNOMV9ieXRlczsKKysJCWQyaV9BU04xX3R5cGVfYnl0ZXM7CisrCQlkMmlfREhwYXJhbXM7CisrCQlkMmlfRFNBUHJpdmF0ZUtleTsKKysJCWQyaV9EU0FQcml2YXRlS2V5X2JpbzsKKysJCWQyaV9EU0FQcml2YXRlS2V5X2ZwOworKwkJZDJpX0RTQVB1YmxpY0tleTsKKysJCWQyaV9EU0FwYXJhbXM7CisrCQlkMmlfTkVUU0NBUEVfU1BLQUM7CisrCQlkMmlfTkVUU0NBUEVfU1BLSTsKKysJCWQyaV9OZXRzY2FwZV9SU0E7CisrCQlkMmlfUEtDUzc7CisrCQlkMmlfUEtDUzdfRElHRVNUOworKwkJZDJpX1BLQ1M3X0VOQ1JZUFQ7CisrCQlkMmlfUEtDUzdfRU5DX0NPTlRFTlQ7CisrCQlkMmlfUEtDUzdfRU5WRUxPUEU7CisrCQlkMmlfUEtDUzdfSVNTVUVSX0FORF9TRVJJQUw7CisrCQlkMmlfUEtDUzdfUkVDSVBfSU5GTzsKKysJCWQyaV9QS0NTN19TSUdORUQ7CisrCQlkMmlfUEtDUzdfU0lHTkVSX0lORk87CisrCQlkMmlfUEtDUzdfU0lHTl9FTlZFTE9QRTsKKysJCWQyaV9QS0NTN19iaW87CisrCQlkMmlfUEtDUzdfZnA7CisrCQlkMmlfUHJpdmF0ZUtleTsKKysJCWQyaV9QdWJsaWNLZXk7CisrCQlkMmlfUlNBUHJpdmF0ZUtleTsKKysJCWQyaV9SU0FQcml2YXRlS2V5X2JpbzsKKysJCWQyaV9SU0FQcml2YXRlS2V5X2ZwOworKwkJZDJpX1JTQVB1YmxpY0tleTsKKysJCWQyaV9YNTA5OworKwkJZDJpX1g1MDlfQUxHT1I7CisrCQlkMmlfWDUwOV9BVFRSSUJVVEU7CisrCQlkMmlfWDUwOV9DSU5GOworKwkJZDJpX1g1MDlfQ1JMOworKwkJZDJpX1g1MDlfQ1JMX0lORk87CisrCQlkMmlfWDUwOV9DUkxfYmlvOworKwkJZDJpX1g1MDlfQ1JMX2ZwOworKwkJZDJpX1g1MDlfRVhURU5TSU9OOworKwkJZDJpX1g1MDlfTkFNRTsKKysJCWQyaV9YNTA5X05BTUVfRU5UUlk7CisrCQlkMmlfWDUwOV9QS0VZOworKwkJZDJpX1g1MDlfUFVCS0VZOworKwkJZDJpX1g1MDlfUkVROworKwkJZDJpX1g1MDlfUkVRX0lORk87CisrCQlkMmlfWDUwOV9SRVFfYmlvOworKwkJZDJpX1g1MDlfUkVRX2ZwOworKwkJZDJpX1g1MDlfUkVWT0tFRDsKKysJCWQyaV9YNTA5X1NJRzsKKysJCWQyaV9YNTA5X1ZBTDsKKysJCWQyaV9YNTA5X2JpbzsKKysJCWQyaV9YNTA5X2ZwOworKwkJREVTX2NiY19ja3N1bTsKKysJCURFU19jYmNfZW5jcnlwdDsKKysJCURFU19jYmxvY2tfcHJpbnRfZmlsZTsKKysJCURFU19jZmI2NF9lbmNyeXB0OworKwkJREVTX2NmYl9lbmNyeXB0OworKwkJREVTX2RlY3J5cHQzOworKwkJREVTX2VjYjNfZW5jcnlwdDsKKysJCURFU19lY2JfZW5jcnlwdDsKKysJCURFU19lZGUzX2NiY19lbmNyeXB0OworKwkJREVTX2VkZTNfY2ZiNjRfZW5jcnlwdDsKKysJCURFU19lZGUzX29mYjY0X2VuY3J5cHQ7CisrCQlERVNfZW5jX3JlYWQ7CisrCQlERVNfZW5jX3dyaXRlOworKwkJREVTX2VuY3J5cHQxOworKwkJREVTX2VuY3J5cHQyOworKwkJREVTX2VuY3J5cHQzOworKwkJREVTX2ZjcnlwdDsKKysJCURFU19pc193ZWFrX2tleTsKKysJCURFU19rZXlfc2NoZWQ7CisrCQlERVNfbmNiY19lbmNyeXB0OworKwkJREVTX29mYjY0X2VuY3J5cHQ7CisrCQlERVNfb2ZiX2VuY3J5cHQ7CisrCQlERVNfb3B0aW9uczsKKysJCURFU19wY2JjX2VuY3J5cHQ7CisrCQlERVNfcXVhZF9ja3N1bTsKKysJCURFU19yYW5kb21fa2V5OworKwkJX29zc2xfb2xkX2Rlc19yYW5kb21fc2VlZDsKKysJCV9vc3NsX29sZF9kZXNfcmVhZF8ycGFzc3dvcmRzOworKwkJX29zc2xfb2xkX2Rlc19yZWFkX3Bhc3N3b3JkOworKwkJX29zc2xfb2xkX2Rlc19yZWFkX3B3OworKwkJX29zc2xfb2xkX2Rlc19yZWFkX3B3X3N0cmluZzsKKysJCURFU19zZXRfa2V5OworKwkJREVTX3NldF9vZGRfcGFyaXR5OworKwkJREVTX3N0cmluZ190b18ya2V5czsKKysJCURFU19zdHJpbmdfdG9fa2V5OworKwkJREVTX3hjYmNfZW5jcnlwdDsKKysJCURFU194d2hpdGVfaW4yb3V0OworKwkJZmNyeXB0X2JvZHk7CisrCQlpMmFfQVNOMV9JTlRFR0VSOworKwkJaTJhX0FTTjFfT0JKRUNUOworKwkJaTJhX0FTTjFfU1RSSU5HOworKwkJaTJkX0FTTjFfQklUX1NUUklORzsKKysJCWkyZF9BU04xX0JPT0xFQU47CisrCQlpMmRfQVNOMV9IRUFERVI7CisrCQlpMmRfQVNOMV9JQTVTVFJJTkc7CisrCQlpMmRfQVNOMV9JTlRFR0VSOworKwkJaTJkX0FTTjFfT0JKRUNUOworKwkJaTJkX0FTTjFfT0NURVRfU1RSSU5HOworKwkJaTJkX0FTTjFfUFJJTlRBQkxFOworKwkJaTJkX0FTTjFfU0VUOworKwkJaTJkX0FTTjFfVFlQRTsKKysJCWkyZF9BU04xX1VUQ1RJTUU7CisrCQlpMmRfQVNOMV9ieXRlczsKKysJCWkyZF9ESHBhcmFtczsKKysJCWkyZF9EU0FQcml2YXRlS2V5OworKwkJaTJkX0RTQVByaXZhdGVLZXlfYmlvOworKwkJaTJkX0RTQVByaXZhdGVLZXlfZnA7CisrCQlpMmRfRFNBUHVibGljS2V5OworKwkJaTJkX0RTQXBhcmFtczsKKysJCWkyZF9ORVRTQ0FQRV9TUEtBQzsKKysJCWkyZF9ORVRTQ0FQRV9TUEtJOworKwkJaTJkX05ldHNjYXBlX1JTQTsKKysJCWkyZF9QS0NTNzsKKysJCWkyZF9QS0NTN19ESUdFU1Q7CisrCQlpMmRfUEtDUzdfRU5DUllQVDsKKysJCWkyZF9QS0NTN19FTkNfQ09OVEVOVDsKKysJCWkyZF9QS0NTN19FTlZFTE9QRTsKKysJCWkyZF9QS0NTN19JU1NVRVJfQU5EX1NFUklBTDsKKysJCWkyZF9QS0NTN19SRUNJUF9JTkZPOworKwkJaTJkX1BLQ1M3X1NJR05FRDsKKysJCWkyZF9QS0NTN19TSUdORVJfSU5GTzsKKysJCWkyZF9QS0NTN19TSUdOX0VOVkVMT1BFOworKwkJaTJkX1BLQ1M3X2JpbzsKKysJCWkyZF9QS0NTN19mcDsKKysJCWkyZF9Qcml2YXRlS2V5OworKwkJaTJkX1B1YmxpY0tleTsKKysJCWkyZF9SU0FQcml2YXRlS2V5OworKwkJaTJkX1JTQVByaXZhdGVLZXlfYmlvOworKwkJaTJkX1JTQVByaXZhdGVLZXlfZnA7CisrCQlpMmRfUlNBUHVibGljS2V5OworKwkJaTJkX1g1MDk7CisrCQlpMmRfWDUwOV9BTEdPUjsKKysJCWkyZF9YNTA5X0FUVFJJQlVURTsKKysJCWkyZF9YNTA5X0NJTkY7CisrCQlpMmRfWDUwOV9DUkw7CisrCQlpMmRfWDUwOV9DUkxfSU5GTzsKKysJCWkyZF9YNTA5X0NSTF9iaW87CisrCQlpMmRfWDUwOV9DUkxfZnA7CisrCQlpMmRfWDUwOV9FWFRFTlNJT047CisrCQlpMmRfWDUwOV9OQU1FOworKwkJaTJkX1g1MDlfTkFNRV9FTlRSWTsKKysJCWkyZF9YNTA5X1BLRVk7CisrCQlpMmRfWDUwOV9QVUJLRVk7CisrCQlpMmRfWDUwOV9SRVE7CisrCQlpMmRfWDUwOV9SRVFfSU5GTzsKKysJCWkyZF9YNTA5X1JFUV9iaW87CisrCQlpMmRfWDUwOV9SRVFfZnA7CisrCQlpMmRfWDUwOV9SRVZPS0VEOworKwkJaTJkX1g1MDlfU0lHOworKwkJaTJkX1g1MDlfVkFMOworKwkJaTJkX1g1MDlfYmlvOworKwkJaTJkX1g1MDlfZnA7CisrCQlpZGVhX2NiY19lbmNyeXB0OworKwkJaWRlYV9jZmI2NF9lbmNyeXB0OworKwkJaWRlYV9lY2JfZW5jcnlwdDsKKysJCWlkZWFfZW5jcnlwdDsKKysJCWlkZWFfb2ZiNjRfZW5jcnlwdDsKKysJCWlkZWFfb3B0aW9uczsKKysJCWlkZWFfc2V0X2RlY3J5cHRfa2V5OworKwkJaWRlYV9zZXRfZW5jcnlwdF9rZXk7CisrCQlsaF9kZWxldGU7CisrCQlsaF9kb2FsbDsKKysJCWxoX2RvYWxsX2FyZzsKKysJCWxoX2ZyZWU7CisrCQlsaF9pbnNlcnQ7CisrCQlsaF9uZXc7CisrCQlsaF9ub2RlX3N0YXRzOworKwkJbGhfbm9kZV9zdGF0c19iaW87CisrCQlsaF9ub2RlX3VzYWdlX3N0YXRzOworKwkJbGhfbm9kZV91c2FnZV9zdGF0c19iaW87CisrCQlsaF9yZXRyaWV2ZTsKKysJCWxoX3N0YXRzOworKwkJbGhfc3RhdHNfYmlvOworKwkJbGhfc3RyaGFzaDsKKysJCXNrX2RlbGV0ZTsKKysJCXNrX2RlbGV0ZV9wdHI7CisrCQlza19kdXA7CisrCQlza19maW5kOworKwkJc2tfZnJlZTsKKysJCXNrX2luc2VydDsKKysJCXNrX25ldzsKKysJCXNrX3BvcDsKKysJCXNrX3BvcF9mcmVlOworKwkJc2tfcHVzaDsKKysJCXNrX3NldF9jbXBfZnVuYzsKKysJCXNrX3NoaWZ0OworKwkJc2tfdW5zaGlmdDsKKysJCXNrX3plcm87CisrCQlCSU9fZl9uYmlvX3Rlc3Q7CisrCQlBU04xX1RZUEVfZ2V0OworKwkJQVNOMV9UWVBFX3NldDsKKysJCVBLQ1M3X2NvbnRlbnRfZnJlZTsKKysJCUVSUl9sb2FkX1BLQ1M3X3N0cmluZ3M7CisrCQlYNTA5X2ZpbmRfYnlfaXNzdWVyX2FuZF9zZXJpYWw7CisrCQlYNTA5X2ZpbmRfYnlfc3ViamVjdDsKKysJCVBLQ1M3X2N0cmw7CisrCQlQS0NTN19zZXRfdHlwZTsKKysJCVBLQ1M3X3NldF9jb250ZW50OworKwkJUEtDUzdfU0lHTkVSX0lORk9fc2V0OworKwkJUEtDUzdfYWRkX3NpZ25lcjsKKysJCVBLQ1M3X2FkZF9jZXJ0aWZpY2F0ZTsKKysJCVBLQ1M3X2FkZF9jcmw7CisrCQlQS0NTN19jb250ZW50X25ldzsKKysJCVBLQ1M3X2RhdGFTaWduOworKwkJUEtDUzdfZGF0YVZlcmlmeTsKKysJCVBLQ1M3X2RhdGFJbml0OworKwkJUEtDUzdfYWRkX3NpZ25hdHVyZTsKKysJCVBLQ1M3X2NlcnRfZnJvbV9zaWduZXJfaW5mbzsKKysJCVBLQ1M3X2dldF9zaWduZXJfaW5mbzsKKysJCUVWUF9kZWxldGVfYWxpYXM7CisrCQlFVlBfbWRjMjsKKysJCVBFTV9yZWFkX2Jpb19SU0FQdWJsaWNLZXk7CisrCQlQRU1fd3JpdGVfYmlvX1JTQVB1YmxpY0tleTsKKysJCWQyaV9SU0FQdWJsaWNLZXlfYmlvOworKwkJaTJkX1JTQVB1YmxpY0tleV9iaW87CisrCQlQRU1fcmVhZF9SU0FQdWJsaWNLZXk7CisrCQlQRU1fd3JpdGVfUlNBUHVibGljS2V5OworKwkJZDJpX1JTQVB1YmxpY0tleV9mcDsKKysJCWkyZF9SU0FQdWJsaWNLZXlfZnA7CisrCQlCSU9fY29weV9uZXh0X3JldHJ5OworKwkJUlNBX2ZsYWdzOworKwkJWDUwOV9TVE9SRV9hZGRfY3JsOworKwkJWDUwOV9sb2FkX2NybF9maWxlOworKwkJRVZQX3JjMl80MF9jYmM7CisrCQlFVlBfcmM0XzQwOworKwkJRVZQX0NJUEhFUl9DVFhfaW5pdDsKKysJCUhNQUM7CisrCQlITUFDX0luaXQ7CisrCQlITUFDX1VwZGF0ZTsKKysJCUhNQUNfRmluYWw7CisrCQlFUlJfZ2V0X25leHRfZXJyb3JfbGlicmFyeTsKKysJCUVWUF9QS0VZX2NtcF9wYXJhbWV0ZXJzOworKwkJSE1BQ19jbGVhbnVwOworKwkJQklPX3B0cl9jdHJsOworKwkJQklPX25ld19maWxlX2ludGVybmFsOworKwkJQklPX25ld19mcF9pbnRlcm5hbDsKKysJCUJJT19zX2ZpbGVfaW50ZXJuYWw7CisrCQlCTl9CTElORElOR19jb252ZXJ0OworKwkJQk5fQkxJTkRJTkdfaW52ZXJ0OworKwkJQk5fQkxJTkRJTkdfdXBkYXRlOworKwkJUlNBX2JsaW5kaW5nX29uOworKwkJUlNBX2JsaW5kaW5nX29mZjsKKysJCWkydF9BU04xX09CSkVDVDsKKysJCUJOX0JMSU5ESU5HX25ldzsKKysJCUJOX0JMSU5ESU5HX2ZyZWU7CisrCQlFVlBfY2FzdDVfY2JjOworKwkJRVZQX2Nhc3Q1X2NmYjY0OworKwkJRVZQX2Nhc3Q1X2VjYjsKKysJCUVWUF9jYXN0NV9vZmI7CisrCQlCRl9kZWNyeXB0OworKwkJQ0FTVF9zZXRfa2V5OworKwkJQ0FTVF9lbmNyeXB0OworKwkJQ0FTVF9kZWNyeXB0OworKwkJQ0FTVF9lY2JfZW5jcnlwdDsKKysJCUNBU1RfY2JjX2VuY3J5cHQ7CisrCQlDQVNUX2NmYjY0X2VuY3J5cHQ7CisrCQlDQVNUX29mYjY0X2VuY3J5cHQ7CisrCQlSQzJfZGVjcnlwdDsKKysJCU9CSl9jcmVhdGVfb2JqZWN0czsKKysJCUJOX2V4cDsKKysJCUJOX211bF93b3JkOworKwkJQk5fc3ViX3dvcmQ7CisrCQlCTl9kZWMyYm47CisrCQlCTl9ibjJkZWM7CisrCQlCSU9fZ2hibl9jdHJsOworKwkJQ1JZUFRPX2ZyZWVfZXhfZGF0YTsKKysJCUNSWVBUT19nZXRfZXhfZGF0YTsKKysJCUNSWVBUT19zZXRfZXhfZGF0YTsKKysJCUVSUl9sb2FkX0NSWVBUT19zdHJpbmdzOworKwkJRVJSX2xvYWRfQ1JZUFRPbGliX3N0cmluZ3M7CisrCQlFVlBfUEtFWV9iaXRzOworKwkJTUQ1X1RyYW5zZm9ybTsKKysJCVNIQTFfVHJhbnNmb3JtOworKwkJU0hBX1RyYW5zZm9ybTsKKysJCVg1MDlfU1RPUkVfQ1RYX2dldF9jaGFpbjsKKysJCVg1MDlfU1RPUkVfQ1RYX2dldF9jdXJyZW50X2NlcnQ7CisrCQlYNTA5X1NUT1JFX0NUWF9nZXRfZXJyb3I7CisrCQlYNTA5X1NUT1JFX0NUWF9nZXRfZXJyb3JfZGVwdGg7CisrCQlYNTA5X1NUT1JFX0NUWF9nZXRfZXhfZGF0YTsKKysJCVg1MDlfU1RPUkVfQ1RYX3NldF9jZXJ0OworKwkJWDUwOV9TVE9SRV9DVFhfc2V0X2NoYWluOworKwkJWDUwOV9TVE9SRV9DVFhfc2V0X2Vycm9yOworKwkJWDUwOV9TVE9SRV9DVFhfc2V0X2V4X2RhdGE7CisrCQlDUllQVE9fZHVwX2V4X2RhdGE7CisrCQlDUllQVE9fZ2V0X25ld19sb2NraWQ7CisrCQlDUllQVE9fbmV3X2V4X2RhdGE7CisrCQlSU0Ffc2V0X2V4X2RhdGE7CisrCQlSU0FfZ2V0X2V4X2RhdGE7CisrCQlSU0FfZ2V0X2V4X25ld19pbmRleDsKKysJCVJTQV9wYWRkaW5nX2FkZF9QS0NTMV90eXBlXzE7CisrCQlSU0FfcGFkZGluZ19hZGRfUEtDUzFfdHlwZV8yOworKwkJUlNBX3BhZGRpbmdfYWRkX1NTTHYyMzsKKysJCVJTQV9wYWRkaW5nX2FkZF9ub25lOworKwkJUlNBX3BhZGRpbmdfY2hlY2tfUEtDUzFfdHlwZV8xOworKwkJUlNBX3BhZGRpbmdfY2hlY2tfUEtDUzFfdHlwZV8yOworKwkJUlNBX3BhZGRpbmdfY2hlY2tfU1NMdjIzOworKwkJUlNBX3BhZGRpbmdfY2hlY2tfbm9uZTsKKysJCWJuX2FkZF93b3JkczsKKysJCWQyaV9OZXRzY2FwZV9SU0FfMjsKKysJCUNSWVBUT19nZXRfZXhfbmV3X2luZGV4OworKwkJUklQRU1EMTYwX0luaXQ7CisrCQlSSVBFTUQxNjBfVXBkYXRlOworKwkJUklQRU1EMTYwX0ZpbmFsOworKwkJUklQRU1EMTYwOworKwkJUklQRU1EMTYwX1RyYW5zZm9ybTsKKysJCVJDNV8zMl9zZXRfa2V5OworKwkJUkM1XzMyX2VjYl9lbmNyeXB0OworKwkJUkM1XzMyX2VuY3J5cHQ7CisrCQlSQzVfMzJfZGVjcnlwdDsKKysJCVJDNV8zMl9jYmNfZW5jcnlwdDsKKysJCVJDNV8zMl9jZmI2NF9lbmNyeXB0OworKwkJUkM1XzMyX29mYjY0X2VuY3J5cHQ7CisrCQlCTl9ibjJtcGk7CisrCQlCTl9tcGkyYm47CisrCQlBU04xX0JJVF9TVFJJTkdfZ2V0X2JpdDsKKysJCUFTTjFfQklUX1NUUklOR19zZXRfYml0OworKwkJQklPX2dldF9leF9kYXRhOworKwkJQklPX2dldF9leF9uZXdfaW5kZXg7CisrCQlCSU9fc2V0X2V4X2RhdGE7CisrCQlYNTA5djNfZ2V0X2tleV91c2FnZTsKKysJCVg1MDl2M19zZXRfa2V5X3VzYWdlOworKwkJYTJpX1g1MDl2M19rZXlfdXNhZ2U7CisrCQlpMmFfWDUwOXYzX2tleV91c2FnZTsKKysJCUVWUF9QS0VZX2RlY3J5cHQ7CisrCQlFVlBfUEtFWV9lbmNyeXB0OworKwkJUEtDUzdfUkVDSVBfSU5GT19zZXQ7CisrCQlQS0NTN19hZGRfcmVjaXBpZW50OworKwkJUEtDUzdfYWRkX3JlY2lwaWVudF9pbmZvOworKwkJUEtDUzdfc2V0X2NpcGhlcjsKKysJCUFTTjFfVFlQRV9nZXRfaW50X29jdGV0c3RyaW5nOworKwkJQVNOMV9UWVBFX2dldF9vY3RldHN0cmluZzsKKysJCUFTTjFfVFlQRV9zZXRfaW50X29jdGV0c3RyaW5nOworKwkJQVNOMV9UWVBFX3NldF9vY3RldHN0cmluZzsKKysJCUFTTjFfVVRDVElNRV9zZXRfc3RyaW5nOworKwkJRVJSX2FkZF9lcnJvcl9kYXRhOworKwkJRVJSX3NldF9lcnJvcl9kYXRhOworKwkJRVZQX0NJUEhFUl9hc24xX3RvX3BhcmFtOworKwkJRVZQX0NJUEhFUl9wYXJhbV90b19hc24xOworKwkJRVZQX0NJUEhFUl9nZXRfYXNuMV9pdjsKKysJCUVWUF9DSVBIRVJfc2V0X2FzbjFfaXY7CisrCQlFVlBfcmM1XzMyXzEyXzE2X2NiYzsKKysJCUVWUF9yYzVfMzJfMTJfMTZfY2ZiNjQ7CisrCQlFVlBfcmM1XzMyXzEyXzE2X2VjYjsKKysJCUVWUF9yYzVfMzJfMTJfMTZfb2ZiOworKwkJYXNuMV9hZGRfZXJyb3I7CisrCQlkMmlfQVNOMV9CTVBTVFJJTkc7CisrCQlpMmRfQVNOMV9CTVBTVFJJTkc7CisrCQlCSU9fZl9iZXI7CisrCQlCTl9pbml0OworKwkJQ09NUF9DVFhfbmV3OworKwkJQ09NUF9DVFhfZnJlZTsKKysJCUNPTVBfQ1RYX2NvbXByZXNzX2Jsb2NrOworKwkJQ09NUF9DVFhfZXhwYW5kX2Jsb2NrOworKwkJWDUwOV9TVE9SRV9DVFhfZ2V0X2V4X25ld19pbmRleDsKKysJCU9CSl9OQU1FX2FkZDsKKysJCUJJT19zb2NrZXRfbmJpbzsKKysJCUVWUF9yYzJfNjRfY2JjOworKwkJT0JKX05BTUVfY2xlYW51cDsKKysJCU9CSl9OQU1FX2dldDsKKysJCU9CSl9OQU1FX2luaXQ7CisrCQlPQkpfTkFNRV9uZXdfaW5kZXg7CisrCQlPQkpfTkFNRV9yZW1vdmU7CisrCQlCTl9NT05UX0NUWF9jb3B5OworKwkJQklPX25ld19zb2NrczRhX2Nvbm5lY3Q7CisrCQlCSU9fc19zb2NrczRhX2Nvbm5lY3Q7CisrCQlQUk9YWV9zZXRfY29ubmVjdF9tb2RlOworKwkJUkFORF9TU0xlYXk7CisrCQlSQU5EX3NldF9yYW5kX21ldGhvZDsKKysJCVJTQV9tZW1vcnlfbG9jazsKKysJCWJuX3N1Yl93b3JkczsKKysJCWJuX211bF9ub3JtYWw7CisrCQlibl9tdWxfY29tYmE4OworKwkJYm5fbXVsX2NvbWJhNDsKKysJCWJuX3Nxcl9ub3JtYWw7CisrCQlibl9zcXJfY29tYmE4OworKwkJYm5fc3FyX2NvbWJhNDsKKysJCWJuX2NtcF93b3JkczsKKysJCWJuX211bF9yZWN1cnNpdmU7CisrCQlibl9tdWxfcGFydF9yZWN1cnNpdmU7CisrCQlibl9zcXJfcmVjdXJzaXZlOworKwkJYm5fbXVsX2xvd19ub3JtYWw7CisrCQlCTl9SRUNQX0NUWF9pbml0OworKwkJQk5fUkVDUF9DVFhfbmV3OworKwkJQk5fUkVDUF9DVFhfZnJlZTsKKysJCUJOX1JFQ1BfQ1RYX3NldDsKKysJCUJOX21vZF9tdWxfcmVjaXByb2NhbDsKKysJCUJOX21vZF9leHBfcmVjcDsKKysJCUJOX2Rpdl9yZWNwOworKwkJQk5fQ1RYX2luaXQ7CisrCQlCTl9NT05UX0NUWF9pbml0OworKwkJUkFORF9nZXRfcmFuZF9tZXRob2Q7CisrCQlQS0NTN19hZGRfYXR0cmlidXRlOworKwkJUEtDUzdfYWRkX3NpZ25lZF9hdHRyaWJ1dGU7CisrCQlQS0NTN19kaWdlc3RfZnJvbV9hdHRyaWJ1dGVzOworKwkJUEtDUzdfZ2V0X2F0dHJpYnV0ZTsKKysJCVBLQ1M3X2dldF9pc3N1ZXJfYW5kX3NlcmlhbDsKKysJCVBLQ1M3X2dldF9zaWduZWRfYXR0cmlidXRlOworKwkJQ09NUF9jb21wcmVzc19ibG9jazsKKysJCUNPTVBfZXhwYW5kX2Jsb2NrOworKwkJQ09NUF9ybGU7CisrCQlDT01QX3psaWI7CisrCQltc190aW1lX2RpZmY7CisrCQltc190aW1lX25ldzsKKysJCW1zX3RpbWVfZnJlZTsKKysJCW1zX3RpbWVfY21wOworKwkJbXNfdGltZV9nZXQ7CisrCQlQS0NTN19zZXRfYXR0cmlidXRlczsKKysJCVBLQ1M3X3NldF9zaWduZWRfYXR0cmlidXRlczsKKysJCVg1MDlfQVRUUklCVVRFX2NyZWF0ZTsKKysJCVg1MDlfQVRUUklCVVRFX2R1cDsKKysJCUFTTjFfR0VORVJBTElaRURUSU1FX2NoZWNrOworKwkJQVNOMV9HRU5FUkFMSVpFRFRJTUVfcHJpbnQ7CisrCQlBU04xX0dFTkVSQUxJWkVEVElNRV9zZXQ7CisrCQlBU04xX0dFTkVSQUxJWkVEVElNRV9zZXRfc3RyaW5nOworKwkJQVNOMV9USU1FX3ByaW50OworKwkJQkFTSUNfQ09OU1RSQUlOVFNfZnJlZTsKKysJCUJBU0lDX0NPTlNUUkFJTlRTX25ldzsKKysJCUVSUl9sb2FkX1g1MDlWM19zdHJpbmdzOworKwkJTkVUU0NBUEVfQ0VSVF9TRVFVRU5DRV9mcmVlOworKwkJTkVUU0NBUEVfQ0VSVF9TRVFVRU5DRV9uZXc7CisrCQlPQkpfdHh0Mm9iajsKKysJCVBFTV9yZWFkX05FVFNDQVBFX0NFUlRfU0VRVUVOQ0U7CisrCQlQRU1fcmVhZF9OU19DRVJUX1NFUTsKKysJCVBFTV9yZWFkX2Jpb19ORVRTQ0FQRV9DRVJUX1NFUVVFTkNFOworKwkJUEVNX3JlYWRfYmlvX05TX0NFUlRfU0VROworKwkJUEVNX3dyaXRlX05FVFNDQVBFX0NFUlRfU0VRVUVOQ0U7CisrCQlQRU1fd3JpdGVfTlNfQ0VSVF9TRVE7CisrCQlQRU1fd3JpdGVfYmlvX05FVFNDQVBFX0NFUlRfU0VRVUVOQ0U7CisrCQlQRU1fd3JpdGVfYmlvX05TX0NFUlRfU0VROworKwkJWDUwOVYzX0VYVF9hZGQ7CisrCQlYNTA5VjNfRVhUX2FkZF9hbGlhczsKKysJCVg1MDlWM19FWFRfYWRkX2NvbmY7CisrCQlYNTA5VjNfRVhUX2NsZWFudXA7CisrCQlYNTA5VjNfRVhUX2NvbmY7CisrCQlYNTA5VjNfRVhUX2NvbmZfbmlkOworKwkJWDUwOVYzX0VYVF9nZXQ7CisrCQlYNTA5VjNfRVhUX2dldF9uaWQ7CisrCQlYNTA5VjNfRVhUX3ByaW50OworKwkJWDUwOVYzX0VYVF9wcmludF9mcDsKKysJCVg1MDlWM19hZGRfc3RhbmRhcmRfZXh0ZW5zaW9uczsKKysJCVg1MDlWM19hZGRfdmFsdWU7CisrCQlYNTA5VjNfYWRkX3ZhbHVlX2Jvb2w7CisrCQlYNTA5VjNfYWRkX3ZhbHVlX2ludDsKKysJCVg1MDlWM19jb25mX2ZyZWU7CisrCQlYNTA5VjNfZ2V0X3ZhbHVlX2Jvb2w7CisrCQlYNTA5VjNfZ2V0X3ZhbHVlX2ludDsKKysJCVg1MDlWM19wYXJzZV9saXN0OworKwkJZDJpX0FTTjFfR0VORVJBTElaRURUSU1FOworKwkJZDJpX0FTTjFfVElNRTsKKysJCWQyaV9CQVNJQ19DT05TVFJBSU5UUzsKKysJCWQyaV9ORVRTQ0FQRV9DRVJUX1NFUVVFTkNFOworKwkJZDJpX2V4dF9rdTsKKysJCWV4dF9rdV9mcmVlOworKwkJZXh0X2t1X25ldzsKKysJCWkyZF9BU04xX0dFTkVSQUxJWkVEVElNRTsKKysJCWkyZF9BU04xX1RJTUU7CisrCQlpMmRfQkFTSUNfQ09OU1RSQUlOVFM7CisrCQlpMmRfTkVUU0NBUEVfQ0VSVF9TRVFVRU5DRTsKKysJCWkyZF9leHRfa3U7CisrCQlFVlBfTURfQ1RYX2NvcHk7CisrCQlpMmRfQVNOMV9FTlVNRVJBVEVEOworKwkJZDJpX0FTTjFfRU5VTUVSQVRFRDsKKysJCUFTTjFfRU5VTUVSQVRFRF9zZXQ7CisrCQlBU04xX0VOVU1FUkFURURfZ2V0OworKwkJQk5fdG9fQVNOMV9FTlVNRVJBVEVEOworKwkJQVNOMV9FTlVNRVJBVEVEX3RvX0JOOworKwkJaTJhX0FTTjFfRU5VTUVSQVRFRDsKKysJCWEyaV9BU04xX0VOVU1FUkFURUQ7CisrCQlpMmRfR0VORVJBTF9OQU1FOworKwkJZDJpX0dFTkVSQUxfTkFNRTsKKysJCUdFTkVSQUxfTkFNRV9uZXc7CisrCQlHRU5FUkFMX05BTUVfZnJlZTsKKysJCUdFTkVSQUxfTkFNRVNfbmV3OworKwkJR0VORVJBTF9OQU1FU19mcmVlOworKwkJZDJpX0dFTkVSQUxfTkFNRVM7CisrCQlpMmRfR0VORVJBTF9OQU1FUzsKKysJCWkydl9HRU5FUkFMX05BTUVTOworKwkJaTJzX0FTTjFfT0NURVRfU1RSSU5HOworKwkJczJpX0FTTjFfT0NURVRfU1RSSU5HOworKwkJWDUwOVYzX0VYVF9jaGVja19jb25mOworKwkJaGV4X3RvX3N0cmluZzsKKysJCXN0cmluZ190b19oZXg7CisrCQlERVNfZWRlM19jYmNtX2VuY3J5cHQ7CisrCQlSU0FfcGFkZGluZ19hZGRfUEtDUzFfT0FFUDsKKysJCVJTQV9wYWRkaW5nX2NoZWNrX1BLQ1MxX09BRVA7CisrCQlYNTA5X0NSTF9wcmludF9mcDsKKysJCVg1MDlfQ1JMX3ByaW50OworKwkJaTJ2X0dFTkVSQUxfTkFNRTsKKysJCXYyaV9HRU5FUkFMX05BTUU7CisrCQlpMmRfUEtFWV9VU0FHRV9QRVJJT0Q7CisrCQlkMmlfUEtFWV9VU0FHRV9QRVJJT0Q7CisrCQlQS0VZX1VTQUdFX1BFUklPRF9uZXc7CisrCQlQS0VZX1VTQUdFX1BFUklPRF9mcmVlOworKwkJdjJpX0dFTkVSQUxfTkFNRVM7CisrCQlpMnNfQVNOMV9JTlRFR0VSOworKwkJWDUwOVYzX0VYVF9kMmk7CisrCQluYW1lX2NtcDsKKysJCXN0cl9kdXA7CisrCQlpMnNfQVNOMV9FTlVNRVJBVEVEOworKwkJaTJzX0FTTjFfRU5VTUVSQVRFRF9UQUJMRTsKKysJCUJJT19zX2xvZzsKKysJCUJJT19mX3JlbGlhYmxlOworKwkJUEtDUzdfZGF0YUZpbmFsOworKwkJUEtDUzdfZGF0YURlY29kZTsKKysJCVg1MDlWM19FWFRfQ1JMX2FkZF9jb25mOworKwkJQk5fc2V0X3BhcmFtczsKKysJCUJOX2dldF9wYXJhbXM7CisrCQlCSU9fZ2V0X2V4X251bTsKKysJCUJJT19zZXRfZXhfZnJlZV9mdW5jOworKwkJRVZQX3JpcGVtZDE2MDsKKysJCUFTTjFfVElNRV9zZXQ7CisrCQlpMmRfQVVUSE9SSVRZX0tFWUlEOworKwkJZDJpX0FVVEhPUklUWV9LRVlJRDsKKysJCUFVVEhPUklUWV9LRVlJRF9uZXc7CisrCQlBVVRIT1JJVFlfS0VZSURfZnJlZTsKKysJCUFTTjFfc2VxX3VucGFjazsKKysJCUFTTjFfc2VxX3BhY2s7CisrCQlBU04xX3VucGFja19zdHJpbmc7CisrCQlBU04xX3BhY2tfc3RyaW5nOworKwkJUEtDUzEyX3BhY2tfc2FmZWJhZzsKKysJCVBLQ1MxMl9NQUtFX0tFWUJBRzsKKysJCVBLQ1M4X2VuY3J5cHQ7CisrCQlQS0NTMTJfTUFLRV9TSEtFWUJBRzsKKysJCVBLQ1MxMl9wYWNrX3A3ZGF0YTsKKysJCVBLQ1MxMl9wYWNrX3A3ZW5jZGF0YTsKKysJCVBLQ1MxMl9hZGRfbG9jYWxrZXlpZDsKKysJCVBLQ1MxMl9hZGRfZnJpZW5kbHluYW1lX2FzYzsKKysJCVBLQ1MxMl9hZGRfZnJpZW5kbHluYW1lX3VuaTsKKysJCVBLQ1MxMl9nZXRfZnJpZW5kbHluYW1lOworKwkJUEtDUzEyX3BiZV9jcnlwdDsKKysJCVBLQ1MxMl9kZWNyeXB0X2QyaTsKKysJCVBLQ1MxMl9pMmRfZW5jcnlwdDsKKysJCVBLQ1MxMl9pbml0OworKwkJUEtDUzEyX2tleV9nZW5fYXNjOworKwkJUEtDUzEyX2tleV9nZW5fdW5pOworKwkJUEtDUzEyX2dlbl9tYWM7CisrCQlQS0NTMTJfdmVyaWZ5X21hYzsKKysJCVBLQ1MxMl9zZXRfbWFjOworKwkJUEtDUzEyX3NldHVwX21hYzsKKysJCU9QRU5TU0xfYXNjMnVuaTsKKysJCU9QRU5TU0xfdW5pMmFzYzsKKysJCWkyZF9QS0NTMTJfQkFHUzsKKysJCVBLQ1MxMl9CQUdTX25ldzsKKysJCWQyaV9QS0NTMTJfQkFHUzsKKysJCVBLQ1MxMl9CQUdTX2ZyZWU7CisrCQlpMmRfUEtDUzEyOworKwkJZDJpX1BLQ1MxMjsKKysJCVBLQ1MxMl9uZXc7CisrCQlQS0NTMTJfZnJlZTsKKysJCWkyZF9QS0NTMTJfTUFDX0RBVEE7CisrCQlQS0NTMTJfTUFDX0RBVEFfbmV3OworKwkJZDJpX1BLQ1MxMl9NQUNfREFUQTsKKysJCVBLQ1MxMl9NQUNfREFUQV9mcmVlOworKwkJaTJkX1BLQ1MxMl9TQUZFQkFHOworKwkJUEtDUzEyX1NBRkVCQUdfbmV3OworKwkJZDJpX1BLQ1MxMl9TQUZFQkFHOworKwkJUEtDUzEyX1NBRkVCQUdfZnJlZTsKKysJCUVSUl9sb2FkX1BLQ1MxMl9zdHJpbmdzOworKwkJUEtDUzEyX1BCRV9hZGQ7CisrCQlQS0NTOF9hZGRfa2V5dXNhZ2U7CisrCQlQS0NTMTJfZ2V0X2F0dHJfZ2VuOworKwkJUEtDUzEyX3BhcnNlOworKwkJUEtDUzEyX2NyZWF0ZTsKKysJCWkyZF9QS0NTMTJfYmlvOworKwkJaTJkX1BLQ1MxMl9mcDsKKysJCWQyaV9QS0NTMTJfYmlvOworKwkJZDJpX1BLQ1MxMl9mcDsKKysJCWkyZF9QQkVQQVJBTTsKKysJCVBCRVBBUkFNX25ldzsKKysJCWQyaV9QQkVQQVJBTTsKKysJCVBCRVBBUkFNX2ZyZWU7CisrCQlpMmRfUEtDUzhfUFJJVl9LRVlfSU5GTzsKKysJCVBLQ1M4X1BSSVZfS0VZX0lORk9fbmV3OworKwkJZDJpX1BLQ1M4X1BSSVZfS0VZX0lORk87CisrCQlQS0NTOF9QUklWX0tFWV9JTkZPX2ZyZWU7CisrCQlFVlBfUEtDUzgyUEtFWTsKKysJCUVWUF9QS0VZMlBLQ1M4OworKwkJUEtDUzhfc2V0X2Jyb2tlbjsKKysJCUVWUF9QQkVfQUxHT1JfQ2lwaGVySW5pdDsKKysJCUVWUF9QQkVfYWxnX2FkZDsKKysJCVBLQ1M1X3BiZV9zZXQ7CisrCQlFVlBfUEJFX2NsZWFudXA7CisrCQlpMmRfU1hORVQ7CisrCQlkMmlfU1hORVQ7CisrCQlTWE5FVF9uZXc7CisrCQlTWE5FVF9mcmVlOworKwkJaTJkX1NYTkVUSUQ7CisrCQlkMmlfU1hORVRJRDsKKysJCVNYTkVUSURfbmV3OworKwkJU1hORVRJRF9mcmVlOworKwkJRFNBX1NJR19uZXc7CisrCQlEU0FfU0lHX2ZyZWU7CisrCQlEU0FfZG9fc2lnbjsKKysJCURTQV9kb192ZXJpZnk7CisrCQlkMmlfRFNBX1NJRzsKKysJCWkyZF9EU0FfU0lHOworKwkJaTJkX0FTTjFfVklTSUJMRVNUUklORzsKKysJCWQyaV9BU04xX1ZJU0lCTEVTVFJJTkc7CisrCQlpMmRfQVNOMV9VVEY4U1RSSU5HOworKwkJZDJpX0FTTjFfVVRGOFNUUklORzsKKysJCWkyZF9ESVJFQ1RPUllTVFJJTkc7CisrCQlkMmlfRElSRUNUT1JZU1RSSU5HOworKwkJaTJkX0RJU1BMQVlURVhUOworKwkJZDJpX0RJU1BMQVlURVhUOworKwkJZDJpX0FTTjFfU0VUX09GX1g1MDk7CisrCQlpMmRfQVNOMV9TRVRfT0ZfWDUwOTsKKysJCWkyZF9QQktERjJQQVJBTTsKKysJCVBCS0RGMlBBUkFNX25ldzsKKysJCWQyaV9QQktERjJQQVJBTTsKKysJCVBCS0RGMlBBUkFNX2ZyZWU7CisrCQlpMmRfUEJFMlBBUkFNOworKwkJUEJFMlBBUkFNX25ldzsKKysJCWQyaV9QQkUyUEFSQU07CisrCQlQQkUyUEFSQU1fZnJlZTsKKysJCWQyaV9BU04xX1NFVF9PRl9HRU5FUkFMX05BTUU7CisrCQlpMmRfQVNOMV9TRVRfT0ZfR0VORVJBTF9OQU1FOworKwkJZDJpX0FTTjFfU0VUX09GX1NYTkVUSUQ7CisrCQlpMmRfQVNOMV9TRVRfT0ZfU1hORVRJRDsKKysJCWQyaV9BU04xX1NFVF9PRl9QT0xJQ1lRVUFMSU5GTzsKKysJCWkyZF9BU04xX1NFVF9PRl9QT0xJQ1lRVUFMSU5GTzsKKysJCWQyaV9BU04xX1NFVF9PRl9QT0xJQ1lJTkZPOworKwkJaTJkX0FTTjFfU0VUX09GX1BPTElDWUlORk87CisrCQlTWE5FVF9hZGRfaWRfYXNjOworKwkJU1hORVRfYWRkX2lkX3Vsb25nOworKwkJU1hORVRfYWRkX2lkX0lOVEVHRVI7CisrCQlTWE5FVF9nZXRfaWRfYXNjOworKwkJU1hORVRfZ2V0X2lkX3Vsb25nOworKwkJU1hORVRfZ2V0X2lkX0lOVEVHRVI7CisrCQlYNTA5VjNfc2V0X2NvbmZfbGhhc2g7CisrCQlpMmRfQ0VSVElGSUNBVEVQT0xJQ0lFUzsKKysJCUNFUlRJRklDQVRFUE9MSUNJRVNfbmV3OworKwkJQ0VSVElGSUNBVEVQT0xJQ0lFU19mcmVlOworKwkJZDJpX0NFUlRJRklDQVRFUE9MSUNJRVM7CisrCQlpMmRfUE9MSUNZSU5GTzsKKysJCVBPTElDWUlORk9fbmV3OworKwkJZDJpX1BPTElDWUlORk87CisrCQlQT0xJQ1lJTkZPX2ZyZWU7CisrCQlpMmRfUE9MSUNZUVVBTElORk87CisrCQlQT0xJQ1lRVUFMSU5GT19uZXc7CisrCQlkMmlfUE9MSUNZUVVBTElORk87CisrCQlQT0xJQ1lRVUFMSU5GT19mcmVlOworKwkJaTJkX1VTRVJOT1RJQ0U7CisrCQlVU0VSTk9USUNFX25ldzsKKysJCWQyaV9VU0VSTk9USUNFOworKwkJVVNFUk5PVElDRV9mcmVlOworKwkJaTJkX05PVElDRVJFRjsKKysJCU5PVElDRVJFRl9uZXc7CisrCQlkMmlfTk9USUNFUkVGOworKwkJTk9USUNFUkVGX2ZyZWU7CisrCQlYNTA5VjNfZ2V0X3N0cmluZzsKKysJCVg1MDlWM19nZXRfc2VjdGlvbjsKKysJCVg1MDlWM19zdHJpbmdfZnJlZTsKKysJCVg1MDlWM19zZWN0aW9uX2ZyZWU7CisrCQlYNTA5VjNfc2V0X2N0eDsKKysJCXMyaV9BU04xX0lOVEVHRVI7CisrCQlDUllQVE9fc2V0X2xvY2tlZF9tZW1fZnVuY3Rpb25zOworKwkJQ1JZUFRPX2dldF9sb2NrZWRfbWVtX2Z1bmN0aW9uczsKKysJCUNSWVBUT19tYWxsb2NfbG9ja2VkOworKwkJQ1JZUFRPX2ZyZWVfbG9ja2VkOworKwkJQk5fbW9kX2V4cDJfbW9udDsKKysJCUVSUl9nZXRfZXJyb3JfbGluZV9kYXRhOworKwkJRVJSX3BlZWtfZXJyb3JfbGluZV9kYXRhOworKwkJUEtDUzEyX1BCRV9rZXlpdmdlbjsKKysJCVg1MDlfQUxHT1JfZHVwOworKwkJZDJpX0FTTjFfU0VUX09GX0RJU1RfUE9JTlQ7CisrCQlpMmRfQVNOMV9TRVRfT0ZfRElTVF9QT0lOVDsKKysJCWkyZF9DUkxfRElTVF9QT0lOVFM7CisrCQlDUkxfRElTVF9QT0lOVFNfbmV3OworKwkJQ1JMX0RJU1RfUE9JTlRTX2ZyZWU7CisrCQlkMmlfQ1JMX0RJU1RfUE9JTlRTOworKwkJaTJkX0RJU1RfUE9JTlQ7CisrCQlESVNUX1BPSU5UX25ldzsKKysJCWQyaV9ESVNUX1BPSU5UOworKwkJRElTVF9QT0lOVF9mcmVlOworKwkJaTJkX0RJU1RfUE9JTlRfTkFNRTsKKysJCURJU1RfUE9JTlRfTkFNRV9uZXc7CisrCQlESVNUX1BPSU5UX05BTUVfZnJlZTsKKysJCWQyaV9ESVNUX1BPSU5UX05BTUU7CisrCQlYNTA5VjNfYWRkX3ZhbHVlX3VjaGFyOworKwkJZDJpX0FTTjFfU0VUX09GX1g1MDlfQVRUUklCVVRFOworKwkJaTJkX0FTTjFfU0VUX09GX0FTTjFfVFlQRTsKKysJCWQyaV9BU04xX1NFVF9PRl9YNTA5X0VYVEVOU0lPTjsKKysJCWQyaV9BU04xX1NFVF9PRl9YNTA5X05BTUVfRU5UUlk7CisrCQlkMmlfQVNOMV9TRVRfT0ZfQVNOMV9UWVBFOworKwkJaTJkX0FTTjFfU0VUX09GX1g1MDlfQVRUUklCVVRFOworKwkJaTJkX0FTTjFfU0VUX09GX1g1MDlfRVhURU5TSU9OOworKwkJaTJkX0FTTjFfU0VUX09GX1g1MDlfTkFNRV9FTlRSWTsKKysJCVg1MDlWM19FWFRfaTJkOworKwkJWDUwOVYzX0VYVF92YWxfcHJuOworKwkJWDUwOVYzX0VYVF9hZGRfbGlzdDsKKysJCUVWUF9DSVBIRVJfdHlwZTsKKysJCUVWUF9QQkVfQ2lwaGVySW5pdDsKKysJCVg1MDlWM19hZGRfdmFsdWVfYm9vbF9uZjsKKysJCWQyaV9BU04xX1VJTlRFR0VSOworKwkJc2tfdmFsdWU7CisrCQlza19udW07CisrCQlza19zZXQ7CisrCQlpMmRfQVNOMV9TRVRfT0ZfWDUwOV9SRVZPS0VEOworKwkJc2tfc29ydDsKKysJCWQyaV9BU04xX1NFVF9PRl9YNTA5X1JFVk9LRUQ7CisrCQlpMmRfQVNOMV9TRVRfT0ZfWDUwOV9BTEdPUjsKKysJCWkyZF9BU04xX1NFVF9PRl9YNTA5X0NSTDsKKysJCWQyaV9BU04xX1NFVF9PRl9YNTA5X0FMR09SOworKwkJZDJpX0FTTjFfU0VUX09GX1g1MDlfQ1JMOworKwkJaTJkX0FTTjFfU0VUX09GX1BLQ1M3X1NJR05FUl9JTkZPOworKwkJaTJkX0FTTjFfU0VUX09GX1BLQ1M3X1JFQ0lQX0lORk87CisrCQlkMmlfQVNOMV9TRVRfT0ZfUEtDUzdfU0lHTkVSX0lORk87CisrCQlkMmlfQVNOMV9TRVRfT0ZfUEtDUzdfUkVDSVBfSU5GTzsKKysJCVBLQ1M1X1BCRV9hZGQ7CisrCQlQRU1fd3JpdGVfYmlvX1BLQ1M4OworKwkJaTJkX1BLQ1M4X2ZwOworKwkJUEVNX3JlYWRfYmlvX1BLQ1M4X1BSSVZfS0VZX0lORk87CisrCQlQRU1fcmVhZF9iaW9fUDhfUFJJVl9LRVlfSU5GTzsKKysJCWQyaV9QS0NTOF9iaW87CisrCQlkMmlfUEtDUzhfUFJJVl9LRVlfSU5GT19mcDsKKysJCVBFTV93cml0ZV9iaW9fUEtDUzhfUFJJVl9LRVlfSU5GTzsKKysJCVBFTV93cml0ZV9iaW9fUDhfUFJJVl9LRVlfSU5GTzsKKysJCVBFTV9yZWFkX1BLQ1M4OworKwkJZDJpX1BLQ1M4X1BSSVZfS0VZX0lORk9fYmlvOworKwkJZDJpX1BLQ1M4X2ZwOworKwkJUEVNX3dyaXRlX1BLQ1M4OworKwkJUEVNX3JlYWRfUEtDUzhfUFJJVl9LRVlfSU5GTzsKKysJCVBFTV9yZWFkX1A4X1BSSVZfS0VZX0lORk87CisrCQlQRU1fcmVhZF9iaW9fUEtDUzg7CisrCQlQRU1fd3JpdGVfUEtDUzhfUFJJVl9LRVlfSU5GTzsKKysJCVBFTV93cml0ZV9QOF9QUklWX0tFWV9JTkZPOworKwkJUEtDUzVfUEJFX2tleWl2Z2VuOworKwkJaTJkX1BLQ1M4X2JpbzsKKysJCWkyZF9QS0NTOF9QUklWX0tFWV9JTkZPX2ZwOworKwkJaTJkX1BLQ1M4X1BSSVZfS0VZX0lORk9fYmlvOworKwkJQklPX3NfYmlvOworKwkJUEtDUzVfcGJlMl9zZXQ7CisrCQlQS0NTNV9QQktERjJfSE1BQ19TSEExOworKwkJUEtDUzVfdjJfUEJFX2tleWl2Z2VuOworKwkJUEVNX3dyaXRlX2Jpb19QS0NTOFByaXZhdGVLZXk7CisrCQlQRU1fd3JpdGVfUEtDUzhQcml2YXRlS2V5OworKwkJQklPX2N0cmxfZ2V0X3JlYWRfcmVxdWVzdDsKKysJCUJJT19jdHJsX3BlbmRpbmc7CisrCQlCSU9fY3RybF93cGVuZGluZzsKKysJCUJJT19uZXdfYmlvX3BhaXI7CisrCQlCSU9fY3RybF9nZXRfd3JpdGVfZ3VhcmFudGVlOworKwkJQ1JZUFRPX251bV9sb2NrczsKKysJCUNPTkZfbG9hZF9iaW87CisrCQlDT05GX2xvYWRfZnA7CisrCQlpMmRfQVNOMV9TRVRfT0ZfQVNOMV9PQkpFQ1Q7CisrCQlkMmlfQVNOMV9TRVRfT0ZfQVNOMV9PQkpFQ1Q7CisrCQlQS0NTN19zaWduYXR1cmVWZXJpZnk7CisrCQlSU0Ffc2V0X21ldGhvZDsKKysJCVJTQV9nZXRfbWV0aG9kOworKwkJUlNBX2dldF9kZWZhdWx0X21ldGhvZDsKKysJCVJTQV9jaGVja19rZXk7CisrCQlPQkpfb2JqMnR4dDsKKysJCURTQV9kdXBfREg7CisrCQlYNTA5X1JFUV9nZXRfZXh0ZW5zaW9uczsKKysJCVg1MDlfUkVRX3NldF9leHRlbnNpb25fbmlkczsKKysJCUJJT19ud3JpdGU7CisrCQlYNTA5X1JFUV9leHRlbnNpb25fbmlkOworKwkJQklPX25yZWFkOworKwkJWDUwOV9SRVFfZ2V0X2V4dGVuc2lvbl9uaWRzOworKwkJQklPX253cml0ZTA7CisrCQlYNTA5X1JFUV9hZGRfZXh0ZW5zaW9uc19uaWQ7CisrCQlCSU9fbnJlYWQwOworKwkJWDUwOV9SRVFfYWRkX2V4dGVuc2lvbnM7CisrCQlCSU9fbmV3X21lbV9idWY7CisrCQlESF9zZXRfZXhfZGF0YTsKKysJCURIX3NldF9tZXRob2Q7CisrCQlEU0FfT3BlblNTTDsKKysJCURIX2dldF9leF9kYXRhOworKwkJREhfZ2V0X2V4X25ld19pbmRleDsKKysJCURTQV9uZXdfbWV0aG9kOworKwkJREhfbmV3X21ldGhvZDsKKysJCURIX09wZW5TU0w7CisrCQlEU0FfZ2V0X2V4X25ld19pbmRleDsKKysJCURIX2dldF9kZWZhdWx0X21ldGhvZDsKKysJCURTQV9zZXRfZXhfZGF0YTsKKysJCURIX3NldF9kZWZhdWx0X21ldGhvZDsKKysJCURTQV9nZXRfZXhfZGF0YTsKKysJCVg1MDlWM19FWFRfUkVRX2FkZF9jb25mOworKwkJTkVUU0NBUEVfU1BLSV9wcmludDsKKysJCU5FVFNDQVBFX1NQS0lfc2V0X3B1YmtleTsKKysJCU5FVFNDQVBFX1NQS0lfYjY0X2VuY29kZTsKKysJCU5FVFNDQVBFX1NQS0lfZ2V0X3B1YmtleTsKKysJCU5FVFNDQVBFX1NQS0lfYjY0X2RlY29kZTsKKysJCVVURjhfcHV0YzsKKysJCVVURjhfZ2V0YzsKKysJCVJTQV9udWxsX21ldGhvZDsKKysJCUFTTjFfdGFnMnN0cjsKKysJCUJJT19jdHJsX3Jlc2V0X3JlYWRfcmVxdWVzdDsKKysJCURJU1BMQVlURVhUX25ldzsKKysJCUFTTjFfR0VORVJBTElaRURUSU1FX2ZyZWU7CisrCQlYNTA5X1JFVk9LRURfZ2V0X2V4dF9kMmk7CisrCQlYNTA5X3NldF9leF9kYXRhOworKwkJWDUwOV9yZWplY3Rfc2V0X2JpdF9hc2M7CisrCQlYNTA5X05BTUVfYWRkX2VudHJ5X2J5X3R4dDsKKysJCVg1MDlfTkFNRV9hZGRfZW50cnlfYnlfTklEOworKwkJWDUwOV9QVVJQT1NFX2dldDA7CisrCQlQRU1fcmVhZF9YNTA5X0FVWDsKKysJCWQyaV9BVVRIT1JJVFlfSU5GT19BQ0NFU1M7CisrCQlQRU1fd3JpdGVfUFVCS0VZOworKwkJQUNDRVNTX0RFU0NSSVBUSU9OX25ldzsKKysJCVg1MDlfQ0VSVF9BVVhfZnJlZTsKKysJCWQyaV9BQ0NFU1NfREVTQ1JJUFRJT047CisrCQlYNTA5X3RydXN0X2NsZWFyOworKwkJWDUwOV9UUlVTVF9hZGQ7CisrCQlBU04xX1ZJU0lCTEVTVFJJTkdfbmV3OworKwkJWDUwOV9hbGlhc19zZXQxOworKwkJQVNOMV9QUklOVEFCTEVTVFJJTkdfZnJlZTsKKysJCUVWUF9QS0VZX2dldDFfRFNBOworKwkJQVNOMV9CTVBTVFJJTkdfbmV3OworKwkJQVNOMV9tYnN0cmluZ19jb3B5OworKwkJQVNOMV9VVEY4U1RSSU5HX25ldzsKKysJCURTQV9nZXRfZGVmYXVsdF9tZXRob2Q7CisrCQlpMmRfQVNOMV9TRVRfT0ZfQUNDRVNTX0RFU0NSSVBUSU9OOworKwkJQVNOMV9UNjFTVFJJTkdfZnJlZTsKKysJCURTQV9zZXRfbWV0aG9kOworKwkJWDUwOV9nZXRfZXhfZGF0YTsKKysJCUFTTjFfU1RSSU5HX3R5cGU7CisrCQlYNTA5X1BVUlBPU0VfZ2V0X2J5X3NuYW1lOworKwkJQVNOMV9USU1FX2ZyZWU7CisrCQlBU04xX09DVEVUX1NUUklOR19jbXA7CisrCQlBU04xX0JJVF9TVFJJTkdfbmV3OworKwkJWDUwOV9nZXRfZXh0X2QyaTsKKysJCVBFTV9yZWFkX2Jpb19YNTA5X0FVWDsKKysJCUFTTjFfU1RSSU5HX3NldF9kZWZhdWx0X21hc2tfYXNjOworKwkJQVNOMV9TVFJJTkdfc2V0X2RlZl9tYXNrX2FzYzsKKysJCVBFTV93cml0ZV9iaW9fUlNBX1BVQktFWTsKKysJCUFTTjFfSU5URUdFUl9jbXA7CisrCQlkMmlfUlNBX1BVQktFWV9mcDsKKysJCVg1MDlfdHJ1c3Rfc2V0X2JpdF9hc2M7CisrCQlQRU1fd3JpdGVfYmlvX0RTQV9QVUJLRVk7CisrCQlYNTA5X1NUT1JFX0NUWF9mcmVlOworKwkJRVZQX1BLRVlfc2V0MV9EU0E7CisrCQlpMmRfRFNBX1BVQktFWV9mcDsKKysJCVg1MDlfbG9hZF9jZXJ0X2NybF9maWxlOworKwkJQVNOMV9USU1FX25ldzsKKysJCWkyZF9SU0FfUFVCS0VZOworKwkJWDUwOV9TVE9SRV9DVFhfcHVycG9zZV9pbmhlcml0OworKwkJUEVNX3JlYWRfUlNBX1BVQktFWTsKKysJCWQyaV9YNTA5X0FVWDsKKysJCWkyZF9EU0FfUFVCS0VZOworKwkJWDUwOV9DRVJUX0FVWF9wcmludDsKKysJCVBFTV9yZWFkX0RTQV9QVUJLRVk7CisrCQlpMmRfUlNBX1BVQktFWV9iaW87CisrCQlBU04xX0JJVF9TVFJJTkdfbnVtX2FzYzsKKysJCWkyZF9QVUJLRVk7CisrCQlBU04xX1VUQ1RJTUVfZnJlZTsKKysJCURTQV9zZXRfZGVmYXVsdF9tZXRob2Q7CisrCQlYNTA5X1BVUlBPU0VfZ2V0X2J5X2lkOworKwkJQUNDRVNTX0RFU0NSSVBUSU9OX2ZyZWU7CisrCQlQRU1fcmVhZF9iaW9fUFVCS0VZOworKwkJQVNOMV9TVFJJTkdfc2V0X2J5X05JRDsKKysJCVg1MDlfUFVSUE9TRV9nZXRfaWQ7CisrCQlESVNQTEFZVEVYVF9mcmVlOworKwkJT1RIRVJOQU1FX25ldzsKKysJCVg1MDlfQ0VSVF9BVVhfbmV3OworKwkJWDUwOV9UUlVTVF9jbGVhbnVwOworKwkJWDUwOV9OQU1FX2FkZF9lbnRyeV9ieV9PQko7CisrCQlYNTA5X0NSTF9nZXRfZXh0X2QyaTsKKysJCVg1MDlfUFVSUE9TRV9nZXQwX25hbWU7CisrCQlQRU1fcmVhZF9QVUJLRVk7CisrCQlpMmRfRFNBX1BVQktFWV9iaW87CisrCQlpMmRfT1RIRVJOQU1FOworKwkJQVNOMV9PQ1RFVF9TVFJJTkdfZnJlZTsKKysJCUFTTjFfQklUX1NUUklOR19zZXRfYXNjOworKwkJWDUwOV9nZXRfZXhfbmV3X2luZGV4OworKwkJQVNOMV9TVFJJTkdfVEFCTEVfY2xlYW51cDsKKysJCVg1MDlfVFJVU1RfZ2V0X2J5X2lkOworKwkJWDUwOV9QVVJQT1NFX2dldF90cnVzdDsKKysJCUFTTjFfU1RSSU5HX2xlbmd0aDsKKysJCWQyaV9BU04xX1NFVF9PRl9BQ0NFU1NfREVTQ1JJUFRJT047CisrCQlBU04xX1BSSU5UQUJMRVNUUklOR19uZXc7CisrCQlYNTA5VjNfZ2V0X2QyaTsKKysJCUFTTjFfRU5VTUVSQVRFRF9mcmVlOworKwkJaTJkX1g1MDlfQ0VSVF9BVVg7CisrCQlYNTA5X1NUT1JFX0NUWF9zZXRfdHJ1c3Q7CisrCQlBU04xX1NUUklOR19zZXRfZGVmYXVsdF9tYXNrOworKwkJWDUwOV9TVE9SRV9DVFhfbmV3OworKwkJRVZQX1BLRVlfZ2V0MV9SU0E7CisrCQlESVJFQ1RPUllTVFJJTkdfZnJlZTsKKysJCVBFTV93cml0ZV9YNTA5X0FVWDsKKysJCUFTTjFfT0NURVRfU1RSSU5HX3NldDsKKysJCWQyaV9EU0FfUFVCS0VZX2ZwOworKwkJZDJpX1JTQV9QVUJLRVk7CisrCQlYNTA5X1RSVVNUX2dldDBfbmFtZTsKKysJCVg1MDlfVFJVU1RfZ2V0MDsKKysJCUFVVEhPUklUWV9JTkZPX0FDQ0VTU19mcmVlOworKwkJQVNOMV9JQTVTVFJJTkdfbmV3OworKwkJZDJpX0RTQV9QVUJLRVk7CisrCQlYNTA5X2NoZWNrX3B1cnBvc2U7CisrCQlBU04xX0VOVU1FUkFURURfbmV3OworKwkJZDJpX1JTQV9QVUJLRVlfYmlvOworKwkJZDJpX1BVQktFWTsKKysJCVg1MDlfVFJVU1RfZ2V0X3RydXN0OworKwkJWDUwOV9UUlVTVF9nZXRfZmxhZ3M7CisrCQlBU04xX0JNUFNUUklOR19mcmVlOworKwkJQVNOMV9UNjFTVFJJTkdfbmV3OworKwkJQVNOMV9VVENUSU1FX25ldzsKKysJCWkyZF9BVVRIT1JJVFlfSU5GT19BQ0NFU1M7CisrCQlFVlBfUEtFWV9zZXQxX1JTQTsKKysJCVg1MDlfU1RPUkVfQ1RYX3NldF9wdXJwb3NlOworKwkJQVNOMV9JQTVTVFJJTkdfZnJlZTsKKysJCVBFTV93cml0ZV9iaW9fWDUwOV9BVVg7CisrCQlYNTA5X1BVUlBPU0VfZ2V0X2NvdW50OworKwkJQ1JZUFRPX2FkZF9pbmZvOworKwkJWDUwOV9OQU1FX0VOVFJZX2NyZWF0ZV9ieV90eHQ7CisrCQlBU04xX1NUUklOR19nZXRfZGVmYXVsdF9tYXNrOworKwkJWDUwOV9hbGlhc19nZXQwOworKwkJQVNOMV9TVFJJTkdfZGF0YTsKKysJCWkyZF9BQ0NFU1NfREVTQ1JJUFRJT047CisrCQlYNTA5X3RydXN0X3NldF9iaXQ7CisrCQlBU04xX0JJVF9TVFJJTkdfZnJlZTsKKysJCVBFTV9yZWFkX2Jpb19SU0FfUFVCS0VZOworKwkJWDUwOV9hZGQxX3JlamVjdF9vYmplY3Q7CisrCQlYNTA5X2NoZWNrX3RydXN0OworKwkJUEVNX3JlYWRfYmlvX0RTQV9QVUJLRVk7CisrCQlYNTA5X1BVUlBPU0VfYWRkOworKwkJQVNOMV9TVFJJTkdfVEFCTEVfZ2V0OworKwkJQVNOMV9VVEY4U1RSSU5HX2ZyZWU7CisrCQlkMmlfRFNBX1BVQktFWV9iaW87CisrCQlQRU1fd3JpdGVfUlNBX1BVQktFWTsKKysJCWQyaV9PVEhFUk5BTUU7CisrCQlYNTA5X3JlamVjdF9zZXRfYml0OworKwkJUEVNX3dyaXRlX0RTQV9QVUJLRVk7CisrCQlYNTA5X1BVUlBPU0VfZ2V0MF9zbmFtZTsKKysJCUVWUF9QS0VZX3NldDFfREg7CisrCQlBU04xX09DVEVUX1NUUklOR19kdXA7CisrCQlBU04xX0JJVF9TVFJJTkdfc2V0OworKwkJWDUwOV9UUlVTVF9nZXRfY291bnQ7CisrCQlBU04xX0lOVEVHRVJfZnJlZTsKKysJCU9USEVSTkFNRV9mcmVlOworKwkJaTJkX1JTQV9QVUJLRVlfZnA7CisrCQlBU04xX0lOVEVHRVJfZHVwOworKwkJZDJpX1g1MDlfQ0VSVF9BVVg7CisrCQlQRU1fd3JpdGVfYmlvX1BVQktFWTsKKysJCUFTTjFfVklTSUJMRVNUUklOR19mcmVlOworKwkJWDUwOV9QVVJQT1NFX2NsZWFudXA7CisrCQlBU04xX21ic3RyaW5nX25jb3B5OworKwkJQVNOMV9HRU5FUkFMSVpFRFRJTUVfbmV3OworKwkJRVZQX1BLRVlfZ2V0MV9ESDsKKysJCUFTTjFfT0NURVRfU1RSSU5HX25ldzsKKysJCUFTTjFfSU5URUdFUl9uZXc7CisrCQlpMmRfWDUwOV9BVVg7CisrCQlBU04xX0JJVF9TVFJJTkdfbmFtZV9wcmludDsKKysJCVg1MDlfY21wOworKwkJQVNOMV9TVFJJTkdfbGVuZ3RoX3NldDsKKysJCURJUkVDVE9SWVNUUklOR19uZXc7CisrCQlYNTA5X2FkZDFfdHJ1c3Rfb2JqZWN0OworKwkJUEtDUzEyX25ld3Bhc3M7CisrCQlTTUlNRV93cml0ZV9QS0NTNzsKKysJCVNNSU1FX3JlYWRfUEtDUzc7CisrCQlERVNfc2V0X2tleV9jaGVja2VkOworKwkJUEtDUzdfdmVyaWZ5OworKwkJUEtDUzdfZW5jcnlwdDsKKysJCURFU19zZXRfa2V5X3VuY2hlY2tlZDsKKysJCVNNSU1FX2NybGZfY29weTsKKysJCWkyZF9BU04xX1BSSU5UQUJMRVNUUklORzsKKysJCVBLQ1M3X2dldDBfc2lnbmVyczsKKysJCVBLQ1M3X2RlY3J5cHQ7CisrCQlTTUlNRV90ZXh0OworKwkJUEtDUzdfc2ltcGxlX3NtaW1lY2FwOworKwkJUEtDUzdfZ2V0X3NtaW1lY2FwOworKwkJUEtDUzdfc2lnbjsKKysJCVBLQ1M3X2FkZF9hdHRyaWJfc21pbWVjYXA7CisrCQlDUllQVE9fZGJnX3NldF9vcHRpb25zOworKwkJQ1JZUFRPX3JlbW92ZV9hbGxfaW5mbzsKKysJCUNSWVBUT19nZXRfbWVtX2RlYnVnX2Z1bmN0aW9uczsKKysJCUNSWVBUT19pc19tZW1fY2hlY2tfb247CisrCQlDUllQVE9fc2V0X21lbV9kZWJ1Z19mdW5jdGlvbnM7CisrCQlDUllQVE9fcG9wX2luZm87CisrCQlDUllQVE9fcHVzaF9pbmZvXzsKKysJCUNSWVBUT19zZXRfbWVtX2RlYnVnX29wdGlvbnM7CisrCQlQRU1fd3JpdGVfUEtDUzhQcml2YXRlS2V5X25pZDsKKysJCVBFTV93cml0ZV9iaW9fUEtDUzhQcml2YXRlS2V5X25pZDsKKysJCVBFTV93cml0ZV9iaW9fUEtDUzhQcml2S2V5X25pZDsKKysJCWQyaV9QS0NTOFByaXZhdGVLZXlfYmlvOworKwkJQVNOMV9OVUxMX2ZyZWU7CisrCQlkMmlfQVNOMV9OVUxMOworKwkJQVNOMV9OVUxMX25ldzsKKysJCWkyZF9QS0NTOFByaXZhdGVLZXlfYmlvOworKwkJaTJkX1BLQ1M4UHJpdmF0ZUtleV9mcDsKKysJCWkyZF9BU04xX05VTEw7CisrCQlpMmRfUEtDUzhQcml2YXRlS2V5X25pZF9mcDsKKysJCWQyaV9QS0NTOFByaXZhdGVLZXlfZnA7CisrCQlpMmRfUEtDUzhQcml2YXRlS2V5X25pZF9iaW87CisrCQlpMmRfUEtDUzhQcml2YXRlS2V5SW5mb19mcDsKKysJCWkyZF9QS0NTOFByaXZhdGVLZXlJbmZvX2JpbzsKKysJCVBFTV9jYjsKKysJCWkyZF9Qcml2YXRlS2V5X2ZwOworKwkJZDJpX1ByaXZhdGVLZXlfYmlvOworKwkJZDJpX1ByaXZhdGVLZXlfZnA7CisrCQlpMmRfUHJpdmF0ZUtleV9iaW87CisrCQlYNTA5X3JlamVjdF9jbGVhcjsKKysJCVg1MDlfVFJVU1Rfc2V0X2RlZmF1bHQ7CisrCQlkMmlfQXV0b1ByaXZhdGVLZXk7CisrCQlYNTA5X0FUVFJJQlVURV9nZXQwX3R5cGU7CisrCQlYNTA5X0FUVFJJQlVURV9zZXQxX2RhdGE7CisrCQlYNTA5YXRfZ2V0X2F0dHI7CisrCQlYNTA5YXRfZ2V0X2F0dHJfY291bnQ7CisrCQlYNTA5X0FUVFJJQlVURV9jcmVhdGVfYnlfTklEOworKwkJWDUwOV9BVFRSSUJVVEVfc2V0MV9vYmplY3Q7CisrCQlYNTA5X0FUVFJJQlVURV9jb3VudDsKKysJCVg1MDlfQVRUUklCVVRFX2NyZWF0ZV9ieV9PQko7CisrCQlYNTA5X0FUVFJJQlVURV9nZXQwX29iamVjdDsKKysJCVg1MDlhdF9nZXRfYXR0cl9ieV9OSUQ7CisrCQlYNTA5YXRfYWRkMV9hdHRyOworKwkJWDUwOV9BVFRSSUJVVEVfZ2V0MF9kYXRhOworKwkJWDUwOWF0X2RlbGV0ZV9hdHRyOworKwkJWDUwOWF0X2dldF9hdHRyX2J5X09CSjsKKysJCVJBTkRfYWRkOworKwkJQklPX251bWJlcl93cml0dGVuOworKwkJQklPX251bWJlcl9yZWFkOworKwkJWDUwOV9TVE9SRV9DVFhfZ2V0MV9jaGFpbjsKKysJCUVSUl9sb2FkX1JBTkRfc3RyaW5nczsKKysJCVJBTkRfcHNldWRvX2J5dGVzOworKwkJWDUwOV9SRVFfZ2V0X2F0dHJfYnlfTklEOworKwkJWDUwOV9SRVFfZ2V0X2F0dHI7CisrCQlYNTA5X1JFUV9hZGQxX2F0dHJfYnlfTklEOworKwkJWDUwOV9SRVFfZ2V0X2F0dHJfYnlfT0JKOworKwkJWDUwOWF0X2FkZDFfYXR0cl9ieV9OSUQ7CisrCQlYNTA5X1JFUV9hZGQxX2F0dHJfYnlfT0JKOworKwkJWDUwOV9SRVFfZ2V0X2F0dHJfY291bnQ7CisrCQlYNTA5X1JFUV9hZGQxX2F0dHI7CisrCQlYNTA5X1JFUV9kZWxldGVfYXR0cjsKKysJCVg1MDlhdF9hZGQxX2F0dHJfYnlfT0JKOworKwkJWDUwOV9SRVFfYWRkMV9hdHRyX2J5X3R4dDsKKysJCVg1MDlfQVRUUklCVVRFX2NyZWF0ZV9ieV90eHQ7CisrCQlYNTA5YXRfYWRkMV9hdHRyX2J5X3R4dDsKKysJCUJOX3BzZXVkb19yYW5kOworKwkJQk5faXNfcHJpbWVfZmFzdHRlc3Q7CisrCQlCTl9DVFhfZW5kOworKwkJQk5fQ1RYX3N0YXJ0OworKwkJQk5fQ1RYX2dldDsKKysJCUVWUF9QS0VZMlBLQ1M4X2Jyb2tlbjsKKysJCUFTTjFfU1RSSU5HX1RBQkxFX2FkZDsKKysJCUNSWVBUT19kYmdfZ2V0X29wdGlvbnM7CisrCQlBVVRIT1JJVFlfSU5GT19BQ0NFU1NfbmV3OworKwkJQ1JZUFRPX2dldF9tZW1fZGVidWdfb3B0aW9uczsKKysJCURFU19jcnlwdDsKKysJCVBFTV93cml0ZV9iaW9fWDUwOV9SRVFfTkVXOworKwkJUEVNX3dyaXRlX1g1MDlfUkVRX05FVzsKKysJCUJJT19jYWxsYmFja19jdHJsOworKwkJUkFORF9lZ2Q7CisrCQlSQU5EX3N0YXR1czsKKysJCWJuX2R1bXAxOworKwkJREVTX2NoZWNrX2tleV9wYXJpdHk7CisrCQlsaF9udW1faXRlbXM7CisrCQlSQU5EX2V2ZW50OworKwkJRFNPX25ldzsKKysJCURTT19uZXdfbWV0aG9kOworKwkJRFNPX2ZyZWU7CisrCQlEU09fZmxhZ3M7CisrCQlEU09fdXA7CisrCQlEU09fc2V0X2RlZmF1bHRfbWV0aG9kOworKwkJRFNPX2dldF9kZWZhdWx0X21ldGhvZDsKKysJCURTT19nZXRfbWV0aG9kOworKwkJRFNPX3NldF9tZXRob2Q7CisrCQlEU09fbG9hZDsKKysJCURTT19iaW5kX3ZhcjsKKysJCURTT19NRVRIT0RfbnVsbDsKKysJCURTT19NRVRIT0Rfb3BlbnNzbDsKKysJCURTT19NRVRIT0RfZGxmY247CisrCQlEU09fTUVUSE9EX3dpbjMyOworKwkJRVJSX2xvYWRfRFNPX3N0cmluZ3M7CisrCQlEU09fTUVUSE9EX2RsOworKwkJTkNPTkZfbG9hZDsKKysJCU5DT05GX2xvYWRfZnA7CisrCQlOQ09ORl9uZXc7CisrCQlOQ09ORl9nZXRfc3RyaW5nOworKwkJTkNPTkZfZnJlZTsKKysJCU5DT05GX2dldF9udW1iZXI7CisrCQlDT05GX2R1bXBfZnA7CisrCQlOQ09ORl9sb2FkX2JpbzsKKysJCU5DT05GX2R1bXBfZnA7CisrCQlOQ09ORl9nZXRfc2VjdGlvbjsKKysJCU5DT05GX2R1bXBfYmlvOworKwkJQ09ORl9kdW1wX2JpbzsKKysJCU5DT05GX2ZyZWVfZGF0YTsKKysJCUNPTkZfc2V0X2RlZmF1bHRfbWV0aG9kOworKwkJRVJSX2Vycm9yX3N0cmluZ19uOworKwkJQklPX3NucHJpbnRmOworKwkJRFNPX2N0cmw7CisrCQlpMmRfQVNOMV9TRVRfT0ZfQVNOMV9JTlRFR0VSOworKwkJaTJkX0FTTjFfU0VUX09GX1BLQ1MxMl9TQUZFQkFHOworKwkJaTJkX0FTTjFfU0VUX09GX1BLQ1M3OworKwkJQklPX3ZmcmVlOworKwkJZDJpX0FTTjFfU0VUX09GX0FTTjFfSU5URUdFUjsKKysJCWQyaV9BU04xX1NFVF9PRl9QS0NTMTJfU0FGRUJBRzsKKysJCUFTTjFfVVRDVElNRV9nZXQ7CisrCQlYNTA5X1JFUV9kaWdlc3Q7CisrCQlYNTA5X0NSTF9kaWdlc3Q7CisrCQlkMmlfQVNOMV9TRVRfT0ZfUEtDUzc7CisrCQlFVlBfQ0lQSEVSX0NUWF9zZXRfa2V5X2xlbmd0aDsKKysJCUVWUF9DSVBIRVJfQ1RYX2N0cmw7CisrCQlCTl9tb2RfZXhwX21vbnRfd29yZDsKKysJCVJBTkRfZWdkX2J5dGVzOworKwkJWDUwOV9SRVFfZ2V0MV9lbWFpbDsKKysJCVg1MDlfZ2V0MV9lbWFpbDsKKysJCVg1MDlfZW1haWxfZnJlZTsKKysJCWkyZF9SU0FfTkVUOworKwkJZDJpX1JTQV9ORVRfMjsKKysJCWQyaV9SU0FfTkVUOworKwkJRFNPX2JpbmRfZnVuYzsKKysJCUNSWVBUT19nZXRfbmV3X2R5bmxvY2tpZDsKKysJCXNrX25ld19udWxsOworKwkJQ1JZUFRPX3NldF9keW5sb2NrX2Rlc3Ryb3lfY2FsbGJhY2s7CisrCQlDUllQVE9fc2V0X2R5bmxvY2tfZGVzdHJveV9jYjsKKysJCUNSWVBUT19kZXN0cm95X2R5bmxvY2tpZDsKKysJCUNSWVBUT19zZXRfZHlubG9ja19zaXplOworKwkJQ1JZUFRPX3NldF9keW5sb2NrX2NyZWF0ZV9jYWxsYmFjazsKKysJCUNSWVBUT19zZXRfZHlubG9ja19jcmVhdGVfY2I7CisrCQlDUllQVE9fc2V0X2R5bmxvY2tfbG9ja19jYWxsYmFjazsKKysJCUNSWVBUT19zZXRfZHlubG9ja19sb2NrX2NiOworKwkJQ1JZUFRPX2dldF9keW5sb2NrX2xvY2tfY2FsbGJhY2s7CisrCQlDUllQVE9fZ2V0X2R5bmxvY2tfbG9ja19jYjsKKysJCUNSWVBUT19nZXRfZHlubG9ja19kZXN0cm95X2NhbGxiYWNrOworKwkJQ1JZUFRPX2dldF9keW5sb2NrX2Rlc3Ryb3lfY2I7CisrCQlDUllQVE9fZ2V0X2R5bmxvY2tfdmFsdWU7CisrCQlDUllQVE9fZ2V0X2R5bmxvY2tfY3JlYXRlX2NhbGxiYWNrOworKwkJQ1JZUFRPX2dldF9keW5sb2NrX2NyZWF0ZV9jYjsKKysJCWMyaV9BU04xX0JJVF9TVFJJTkc7CisrCQlpMmNfQVNOMV9CSVRfU1RSSU5HOworKwkJUkFORF9wb2xsOworKwkJYzJpX0FTTjFfSU5URUdFUjsKKysJCWkyY19BU04xX0lOVEVHRVI7CisrCQlCSU9fZHVtcF9pbmRlbnQ7CisrCQlBU04xX3BhcnNlX2R1bXA7CisrCQljMmlfQVNOMV9PQkpFQ1Q7CisrCQlYNTA5X05BTUVfcHJpbnRfZXhfZnA7CisrCQlBU04xX1NUUklOR19wcmludF9leF9mcDsKKysJCVg1MDlfTkFNRV9wcmludF9leDsKKysJCUFTTjFfU1RSSU5HX3ByaW50X2V4OworKwkJTUQ0OworKwkJTUQ0X1RyYW5zZm9ybTsKKysJCU1ENF9GaW5hbDsKKysJCU1ENF9VcGRhdGU7CisrCQlNRDRfSW5pdDsKKysJCUVWUF9tZDQ7CisrCQlpMmRfUFVCS0VZX2JpbzsKKysJCWkyZF9QVUJLRVlfZnA7CisrCQlkMmlfUFVCS0VZX2JpbzsKKysJCUFTTjFfU1RSSU5HX3RvX1VURjg7CisrCQlCSU9fdnByaW50ZjsKKysJCUJJT192c25wcmludGY7CisrCQlkMmlfUFVCS0VZX2ZwOworKwkJWDUwOV9jbXBfdGltZTsKKysJCVg1MDlfU1RPUkVfQ1RYX3NldF90aW1lOworKwkJWDUwOV9TVE9SRV9DVFhfZ2V0MV9pc3N1ZXI7CisrCQlYNTA5X09CSkVDVF9yZXRyaWV2ZV9tYXRjaDsKKysJCVg1MDlfT0JKRUNUX2lkeF9ieV9zdWJqZWN0OworKwkJWDUwOV9TVE9SRV9DVFhfc2V0X2ZsYWdzOworKwkJWDUwOV9TVE9SRV9DVFhfdHJ1c3RlZF9zdGFjazsKKysJCVg1MDlfdGltZV9hZGo7CisrCQlYNTA5X2NoZWNrX2lzc3VlZDsKKysJCUFTTjFfVVRDVElNRV9jbXBfdGltZV90OworKwkJREVTX3NldF93ZWFrX2tleV9mbGFnOworKwkJREVTX2NoZWNrX2tleTsKKysJCURFU19yd19tb2RlOworKwkJUlNBX1BLQ1MxX1JTQXJlZjsKKysJCVg1MDlfa2V5aWRfc2V0MTsKKysJCUJJT19uZXh0OworKwkJRFNPX01FVEhPRF92bXM7CisrCQlCSU9fZl9saW5lYnVmZmVyOworKwkJQk5fYm50ZXN0X3JhbmQ7CisrCQlPUEVOU1NMX2lzc2V0dWdpZDsKKysJCUJOX3JhbmRfcmFuZ2U7CisrCQlFUlJfbG9hZF9FTkdJTkVfc3RyaW5nczsKKysJCUVOR0lORV9zZXRfRFNBOworKwkJRU5HSU5FX2dldF9maW5pc2hfZnVuY3Rpb247CisrCQlFTkdJTkVfZ2V0X2RlZmF1bHRfUlNBOworKwkJRU5HSU5FX2dldF9CTl9tb2RfZXhwOworKwkJRFNBX2dldF9kZWZhdWx0X29wZW5zc2xfbWV0aG9kOworKwkJRU5HSU5FX3NldF9ESDsKKysJCUVOR0lORV9zZXRfZGVmX0JOX21vZF9leHBfY3J0OworKwkJRU5HSU5FX3NldF9kZWZhdWx0X0JOX21vZF9leHBfY3J0OworKwkJRU5HSU5FX2luaXQ7CisrCQlESF9nZXRfZGVmYXVsdF9vcGVuc3NsX21ldGhvZDsKKysJCVJTQV9zZXRfZGVmYXVsdF9vcGVuc3NsX21ldGhvZDsKKysJCUVOR0lORV9maW5pc2g7CisrCQlFTkdJTkVfbG9hZF9wdWJsaWNfa2V5OworKwkJRU5HSU5FX2dldF9ESDsKKysJCUVOR0lORV9jdHJsOworKwkJRU5HSU5FX2dldF9pbml0X2Z1bmN0aW9uOworKwkJRU5HSU5FX3NldF9pbml0X2Z1bmN0aW9uOworKwkJRU5HSU5FX3NldF9kZWZhdWx0X0RTQTsKKysJCUVOR0lORV9nZXRfbmFtZTsKKysJCUVOR0lORV9nZXRfbGFzdDsKKysJCUVOR0lORV9nZXRfcHJldjsKKysJCUVOR0lORV9nZXRfZGVmYXVsdF9ESDsKKysJCUVOR0lORV9nZXRfUlNBOworKwkJRU5HSU5FX3NldF9kZWZhdWx0OworKwkJRU5HSU5FX2dldF9SQU5EOworKwkJRU5HSU5FX2dldF9maXJzdDsKKysJCUVOR0lORV9ieV9pZDsKKysJCUVOR0lORV9zZXRfZmluaXNoX2Z1bmN0aW9uOworKwkJRU5HSU5FX2dldF9kZWZfQk5fbW9kX2V4cF9jcnQ7CisrCQlFTkdJTkVfZ2V0X2RlZmF1bHRfQk5fbW9kX2V4cF9jcnQ7CisrCQlSU0FfZ2V0X2RlZmF1bHRfb3BlbnNzbF9tZXRob2Q7CisrCQlFTkdJTkVfc2V0X1JTQTsKKysJCUVOR0lORV9sb2FkX3ByaXZhdGVfa2V5OworKwkJRU5HSU5FX3NldF9kZWZhdWx0X1JBTkQ7CisrCQlFTkdJTkVfc2V0X0JOX21vZF9leHA7CisrCQlFTkdJTkVfcmVtb3ZlOworKwkJRU5HSU5FX2ZyZWU7CisrCQlFTkdJTkVfZ2V0X0JOX21vZF9leHBfY3J0OworKwkJRU5HSU5FX2dldF9uZXh0OworKwkJRU5HSU5FX3NldF9uYW1lOworKwkJRU5HSU5FX2dldF9kZWZhdWx0X0RTQTsKKysJCUVOR0lORV9zZXRfZGVmYXVsdF9CTl9tb2RfZXhwOworKwkJRU5HSU5FX3NldF9kZWZhdWx0X1JTQTsKKysJCUVOR0lORV9nZXRfZGVmYXVsdF9SQU5EOworKwkJRU5HSU5FX2dldF9kZWZhdWx0X0JOX21vZF9leHA7CisrCQlFTkdJTkVfc2V0X1JBTkQ7CisrCQlFTkdJTkVfc2V0X2lkOworKwkJRU5HSU5FX3NldF9CTl9tb2RfZXhwX2NydDsKKysJCUVOR0lORV9zZXRfZGVmYXVsdF9ESDsKKysJCUVOR0lORV9uZXc7CisrCQlFTkdJTkVfZ2V0X2lkOworKwkJRFNBX3NldF9kZWZhdWx0X29wZW5zc2xfbWV0aG9kOworKwkJRU5HSU5FX2FkZDsKKysJCURIX3NldF9kZWZhdWx0X29wZW5zc2xfbWV0aG9kOworKwkJRU5HSU5FX2dldF9EU0E7CisrCQlFTkdJTkVfZ2V0X2N0cmxfZnVuY3Rpb247CisrCQlFTkdJTkVfc2V0X2N0cmxfZnVuY3Rpb247CisrCQlCTl9wc2V1ZG9fcmFuZF9yYW5nZTsKKysJCVg1MDlfU1RPUkVfQ1RYX3NldF92ZXJpZnlfY2I7CisrCQlFUlJfbG9hZF9DT01QX3N0cmluZ3M7CisrCQlQS0NTMTJfaXRlbV9kZWNyeXB0X2QyaTsKKysJCUFTTjFfVVRGOFNUUklOR19pdDsKKysJCUVOR0lORV91bnJlZ2lzdGVyX2NpcGhlcnM7CisrCQlFTkdJTkVfZ2V0X2NpcGhlcnM7CisrCQlkMmlfT0NTUF9CQVNJQ1JFU1A7CisrCQlLUkI1X0NIRUNLU1VNX2l0OworKwkJRUNfUE9JTlRfYWRkOworKwkJQVNOMV9pdGVtX2V4X2kyZDsKKysJCU9DU1BfQ0VSVElEX2l0OworKwkJZDJpX09DU1BfUkVTUEJZVEVTOworKwkJWDUwOVYzX2FkZDFfaTJkOworKwkJUEtDUzdfRU5WRUxPUEVfaXQ7CisrCQlVSV9hZGRfaW5wdXRfYm9vbGVhbjsKKysJCUVOR0lORV91bnJlZ2lzdGVyX1JTQTsKKysJCVg1MDlWM19FWFRfbmNvbmY7CisrCQlBU04xX0dFTkVSQUxTVFJJTkdfZnJlZTsKKysJCWQyaV9PQ1NQX0NFUlRTVEFUVVM7CisrCQlYNTA5X1JFVk9LRURfc2V0X3NlcmlhbE51bWJlcjsKKysJCVg1MDlfcHJpbnRfZXg7CisrCQlPQ1NQX09ORVJFUV9nZXQxX2V4dF9kMmk7CisrCQlFTkdJTkVfcmVnaXN0ZXJfYWxsX1JBTkQ7CisrCQlFTkdJTkVfbG9hZF9keW5hbWljOworKwkJUEJLREYyUEFSQU1faXQ7CisrCQlFWFRFTkRFRF9LRVlfVVNBR0VfbmV3OworKwkJRUNfR1JPVVBfY2xlYXJfZnJlZTsKKysJCU9DU1Bfc2VuZHJlcV9iaW87CisrCQlBU04xX2l0ZW1fZGlnZXN0OworKwkJT0NTUF9CQVNJQ1JFU1BfZGVsZXRlX2V4dDsKKysJCU9DU1BfU0lHTkFUVVJFX2l0OworKwkJWDUwOV9DUkxfaXQ7CisrCQlPQ1NQX0JBU0lDUkVTUF9hZGRfZXh0OworKwkJS1JCNV9FTkNLRVlfaXQ7CisrCQlVSV9tZXRob2Rfc2V0X2Nsb3NlcjsKKysJCVg1MDlfU1RPUkVfc2V0X3B1cnBvc2U7CisrCQlpMmRfQVNOMV9HRU5FUkFMU1RSSU5HOworKwkJT0NTUF9yZXNwb25zZV9zdGF0dXM7CisrCQlpMmRfT0NTUF9TRVJWSUNFTE9DOworKwkJRU5HSU5FX2dldF9kaWdlc3RfZW5naW5lOworKwkJRUNfR1JPVVBfc2V0X2N1cnZlX0dGcDsKKysJCU9DU1BfUkVRVUVTVF9nZXRfZXh0X2J5X09CSjsKKysJCV9vc3NsX29sZF9kZXNfcmFuZG9tX2tleTsKKysJCUFTTjFfVDYxU1RSSU5HX2l0OworKwkJRUNfR1JPVVBfbWV0aG9kX29mOworKwkJaTJkX0tSQjVfQVBSRVE7CisrCQlfb3NzbF9vbGRfZGVzX2VuY3J5cHQ7CisrCQlBU04xX1BSSU5UQUJMRV9uZXc7CisrCQlITUFDX0luaXRfZXg7CisrCQlkMmlfS1JCNV9BVVRIRU5UOworKwkJT0NTUF9hcmNoaXZlX2N1dG9mZl9uZXc7CisrCQlFQ19QT0lOVF9zZXRfSnByb2plY3RpdmVfY29vcmRpbmF0ZXNfR0ZwOworKwkJRUNfUE9JTlRfc2V0X0pwcm9qX2Nvb3Jkc19HRnA7CisrCQlfb3NzbF9vbGRfZGVzX2lzX3dlYWtfa2V5OworKwkJT0NTUF9CQVNJQ1JFU1BfZ2V0X2V4dF9ieV9PQko7CisrCQlFQ19QT0lOVF9vY3QycG9pbnQ7CisrCQlPQ1NQX1NJTkdMRVJFU1BfZ2V0X2V4dF9jb3VudDsKKysJCVVJX2N0cmw7CisrCQlfc2hhZG93X0RFU19yd19tb2RlOworKwkJYXNuMV9kb19hZGI7CisrCQlBU04xX3RlbXBsYXRlX2kyZDsKKysJCUVOR0lORV9yZWdpc3Rlcl9ESDsKKysJCVVJX2NvbnN0cnVjdF9wcm9tcHQ7CisrCQlYNTA5X1NUT1JFX3NldF90cnVzdDsKKysJCVVJX2R1cF9pbnB1dF9zdHJpbmc7CisrCQlkMmlfS1JCNV9BUFJFUTsKKysJCUVWUF9NRF9DVFhfY29weV9leDsKKysJCU9DU1BfcmVxdWVzdF9pc19zaWduZWQ7CisrCQlpMmRfT0NTUF9SRVFJTkZPOworKwkJS1JCNV9FTkNLRVlfZnJlZTsKKysJCU9DU1BfcmVzcF9nZXQwOworKwkJR0VORVJBTF9OQU1FX2l0OworKwkJQVNOMV9HRU5FUkFMSVpFRFRJTUVfaXQ7CisrCQlYNTA5X1NUT1JFX3NldF9mbGFnczsKKysJCUVDX1BPSU5UX3NldF9jb21wcmVzc2VkX2Nvb3JkaW5hdGVzX0dGcDsKKysJCUVDX1BPSU5UX3NldF9jb21wcl9jb29yZHNfR0ZwOworKwkJT0NTUF9yZXNwb25zZV9zdGF0dXNfc3RyOworKwkJZDJpX09DU1BfUkVWT0tFRElORk87CisrCQlPQ1NQX2Jhc2ljX2FkZDFfY2VydDsKKysJCUVSUl9nZXRfaW1wbGVtZW50YXRpb247CisrCQlFVlBfQ2lwaGVyRmluYWxfZXg7CisrCQlPQ1NQX0NFUlRTVEFUVVNfbmV3OworKwkJQ1JZUFRPX2NsZWFudXBfYWxsX2V4X2RhdGE7CisrCQlPQ1NQX3Jlc3BfZmluZDsKKysJCUJOX25ubW9kOworKwkJWDUwOV9DUkxfc29ydDsKKysJCVg1MDlfUkVWT0tFRF9zZXRfcmV2b2NhdGlvbkRhdGU7CisrCQlFTkdJTkVfcmVnaXN0ZXJfUkFORDsKKysJCU9DU1BfU0VSVklDRUxPQ19uZXc7CisrCQlFQ19QT0lOVF9zZXRfYWZmaW5lX2Nvb3JkaW5hdGVzX0dGcDsKKysJCUVDX1BPSU5UX3NldF9hZmZpbmVfY29vcmRzX0dGcDsKKysJCV9vc3NsX29sZF9kZXNfb3B0aW9uczsKKysJCVNYTkVUX2l0OworKwkJVUlfZHVwX2lucHV0X2Jvb2xlYW47CisrCQlQS0NTMTJfYWRkX0NTUE5hbWVfYXNjOworKwkJRUNfUE9JTlRfaXNfYXRfaW5maW5pdHk7CisrCQlFTkdJTkVfbG9hZF9jcnlwdG9kZXY7CisrCQlEU09fY29udmVydF9maWxlbmFtZTsKKysJCVBPTElDWVFVQUxJTkZPX2l0OworKwkJRU5HSU5FX3JlZ2lzdGVyX2NpcGhlcnM7CisrCQlCTl9tb2RfbHNoaWZ0X3F1aWNrOworKwkJRFNPX3NldF9maWxlbmFtZTsKKysJCUFTTjFfaXRlbV9mcmVlOworKwkJS1JCNV9US1RCT0RZX2ZyZWU7CisrCQlBVVRIT1JJVFlfS0VZSURfaXQ7CisrCQlLUkI1X0FQUkVRQk9EWV9uZXc7CisrCQlYNTA5VjNfRVhUX1JFUV9hZGRfbmNvbmY7CisrCQlFTkdJTkVfY3RybF9jbWRfc3RyaW5nOworKwkJaTJkX09DU1BfUkVTUERBVEE7CisrCQlFVlBfTURfQ1RYX2luaXQ7CisrCQlFWFRFTkRFRF9LRVlfVVNBR0VfZnJlZTsKKysJCVBLQ1M3X0FUVFJfU0lHTl9pdDsKKysJCVVJX2FkZF9lcnJvcl9zdHJpbmc7CisrCQlLUkI1X0NIRUNLU1VNX2ZyZWU7CisrCQlPQ1NQX1JFUVVFU1RfZ2V0X2V4dDsKKysJCUVOR0lORV9sb2FkX3Vic2VjOworKwkJRU5HSU5FX3JlZ2lzdGVyX2FsbF9kaWdlc3RzOworKwkJUEtFWV9VU0FHRV9QRVJJT0RfaXQ7CisrCQlQS0NTMTJfdW5wYWNrX2F1dGhzYWZlczsKKysJCUFTTjFfaXRlbV91bnBhY2s7CisrCQlORVRTQ0FQRV9TUEtBQ19pdDsKKysJCVg1MDlfUkVWT0tFRF9pdDsKKysJCUFTTjFfU1RSSU5HX2VuY29kZTsKKysJCUVWUF9hZXNfMTI4X2VjYjsKKysJCUtSQjVfQVVUSEVOVF9mcmVlOworKwkJT0NTUF9CQVNJQ1JFU1BfZ2V0X2V4dF9ieV9jcml0aWNhbDsKKysJCU9DU1BfQkFTSUNSRVNQX2dldF9leHRfYnlfY3JpdDsKKysJCU9DU1BfY2VydF9zdGF0dXNfc3RyOworKwkJZDJpX09DU1BfUkVRVUVTVDsKKysJCVVJX2R1cF9pbmZvX3N0cmluZzsKKysJCV9vc3NsX29sZF9kZXNfeHdoaXRlX2luMm91dDsKKysJCVBLQ1MxMl9pdDsKKysJCU9DU1BfU0lOR0xFUkVTUF9nZXRfZXh0X2J5X2NyaXRpY2FsOworKwkJT0NTUF9TSU5HTEVSRVNQX2dldF9leHRfYnlfY3JpdDsKKysJCU9DU1BfQ0VSVFNUQVRVU19mcmVlOworKwkJX29zc2xfb2xkX2Rlc19jcnlwdDsKKysJCUFTTjFfaXRlbV9pMmQ7CisrCQlFVlBfRGVjcnlwdEZpbmFsX2V4OworKwkJRU5HSU5FX2xvYWRfb3BlbnNzbDsKKysJCUVOR0lORV9nZXRfY21kX2RlZm5zOworKwkJRU5HSU5FX3NldF9sb2FkX3ByaXZrZXlfZnVuY3Rpb247CisrCQlFTkdJTkVfc2V0X2xvYWRfcHJpdmtleV9mbjsKKysJCUVWUF9FbmNyeXB0RmluYWxfZXg7CisrCQlFTkdJTkVfc2V0X2RlZmF1bHRfZGlnZXN0czsKKysJCVg1MDlfZ2V0MF9wdWJrZXlfYml0c3RyOworKwkJYXNuMV9leF9pMmM7CisrCQlFTkdJTkVfcmVnaXN0ZXJfUlNBOworKwkJRU5HSU5FX3VucmVnaXN0ZXJfRFNBOworKwkJX29zc2xfb2xkX2Rlc19rZXlfc2NoZWQ7CisrCQlYNTA5X0VYVEVOU0lPTl9pdDsKKysJCWkyZF9LUkI1X0FVVEhFTlQ7CisrCQlTWE5FVElEX2l0OworKwkJZDJpX09DU1BfU0lOR0xFUkVTUDsKKysJCUVESVBBUlRZTkFNRV9uZXc7CisrCQlQS0NTMTJfY2VydGJhZzJ4NTA5OworKwkJX29zc2xfb2xkX2Rlc19vZmI2NF9lbmNyeXB0OworKwkJZDJpX0VYVEVOREVEX0tFWV9VU0FHRTsKKysJCUVSUl9wcmludF9lcnJvcnNfY2I7CisrCQlFTkdJTkVfc2V0X2NpcGhlcnM7CisrCQlkMmlfS1JCNV9BUFJFUUJPRFk7CisrCQlVSV9tZXRob2RfZ2V0X2ZsdXNoZXI7CisrCQlYNTA5X1BVQktFWV9pdDsKKysJCV9vc3NsX29sZF9kZXNfZW5jX3JlYWQ7CisrCQlQS0NTN19FTkNSWVBUX2l0OworKwkJaTJkX09DU1BfUkVTUE9OU0U7CisrCQlFQ19HUk9VUF9nZXRfY29mYWN0b3I7CisrCQlQS0NTMTJfdW5wYWNrX3A3ZGF0YTsKKysJCWQyaV9LUkI1X0FVVEhEQVRBOworKwkJT0NTUF9jb3B5X25vbmNlOworKwkJS1JCNV9BVVRIREFUQV9uZXc7CisrCQlPQ1NQX1JFU1BEQVRBX25ldzsKKysJCUVDX0dGcF9tb250X21ldGhvZDsKKysJCU9DU1BfUkVWT0tFRElORk9fZnJlZTsKKysJCVVJX2dldF9leF9kYXRhOworKwkJS1JCNV9BUFJFUUJPRFlfZnJlZTsKKysJCUVDX0dST1VQX2dldDBfZ2VuZXJhdG9yOworKwkJVUlfZ2V0X2RlZmF1bHRfbWV0aG9kOworKwkJWDUwOVYzX3NldF9uY29uZjsKKysJCVBLQ1MxMl9pdGVtX2kyZF9lbmNyeXB0OworKwkJWDUwOV9hZGQxX2V4dF9pMmQ7CisrCQlQS0NTN19TSUdORVJfSU5GT19pdDsKKysJCUtSQjVfUFJJTkNOQU1FX25ldzsKKysJCVBLQ1MxMl9TQUZFQkFHX2l0OworKwkJRUNfR1JPVVBfZ2V0X29yZGVyOworKwkJZDJpX09DU1BfUkVTUElEOworKwkJT0NTUF9yZXF1ZXN0X3ZlcmlmeTsKKysJCU5DT05GX2dldF9udW1iZXJfZTsKKysJCV9vc3NsX29sZF9kZXNfZGVjcnlwdDM7CisrCQlYNTA5X3NpZ25hdHVyZV9wcmludDsKKysJCU9DU1BfU0lOR0xFUkVTUF9mcmVlOworKwkJRU5HSU5FX2xvYWRfYnVpbHRpbl9lbmdpbmVzOworKwkJaTJkX09DU1BfT05FUkVROworKwkJT0NTUF9SRVFVRVNUX2FkZF9leHQ7CisrCQlPQ1NQX1JFU1BCWVRFU19uZXc7CisrCQlFVlBfTURfQ1RYX2NyZWF0ZTsKKysJCU9DU1BfcmVzcF9maW5kX3N0YXR1czsKKysJCVg1MDlfQUxHT1JfaXQ7CisrCQlBU04xX1RJTUVfaXQ7CisrCQlPQ1NQX3JlcXVlc3Rfc2V0MV9uYW1lOworKwkJT0NTUF9PTkVSRVFfZ2V0X2V4dF9jb3VudDsKKysJCVVJX2dldDBfcmVzdWx0OworKwkJUEtDUzEyX0FVVEhTQUZFU19pdDsKKysJCUVWUF9hZXNfMjU2X2VjYjsKKysJCVBLQ1MxMl9wYWNrX2F1dGhzYWZlczsKKysJCUFTTjFfSUE1U1RSSU5HX2l0OworKwkJVUlfZ2V0X2lucHV0X2ZsYWdzOworKwkJRUNfR1JPVVBfc2V0X2dlbmVyYXRvcjsKKysJCV9vc3NsX29sZF9kZXNfc3RyaW5nX3RvXzJrZXlzOworKwkJT0NTUF9DRVJUSURfZnJlZTsKKysJCVg1MDlfQ0VSVF9BVVhfaXQ7CisrCQlDRVJUSUZJQ0FURVBPTElDSUVTX2l0OworKwkJX29zc2xfb2xkX2Rlc19lZGUzX2NiY19lbmNyeXB0OworKwkJUkFORF9zZXRfcmFuZF9lbmdpbmU7CisrCQlEU09fZ2V0X2xvYWRlZF9maWxlbmFtZTsKKysJCVg1MDlfQVRUUklCVVRFX2l0OworKwkJT0NTUF9PTkVSRVFfZ2V0X2V4dF9ieV9OSUQ7CisrCQlQS0NTMTJfZGVjcnlwdF9za2V5OworKwkJS1JCNV9BVVRIRU5UX2l0OworKwkJVUlfZHVwX2Vycm9yX3N0cmluZzsKKysJCVJTQVB1YmxpY0tleV9pdDsKKysJCWkyZF9PQ1NQX1JFUVVFU1Q7CisrCQlQS0NTMTJfeDUwOWNybDJjZXJ0YmFnOworKwkJT0NTUF9TRVJWSUNFTE9DX2l0OworKwkJQVNOMV9pdGVtX3NpZ247CisrCQlYNTA5X0NSTF9zZXRfaXNzdWVyX25hbWU7CisrCQlPQkpfTkFNRV9kb19hbGxfc29ydGVkOworKwkJaTJkX09DU1BfQkFTSUNSRVNQOworKwkJaTJkX09DU1BfUkVTUEJZVEVTOworKwkJUEtDUzEyX3VucGFja19wN2VuY2RhdGE7CisrCQlITUFDX0NUWF9pbml0OworKwkJRU5HSU5FX2dldF9kaWdlc3Q7CisrCQlPQ1NQX1JFU1BPTlNFX3ByaW50OworKwkJS1JCNV9US1RCT0RZX2l0OworKwkJQUNDRVNTX0RFU0NSSVBUSU9OX2l0OworKwkJUEtDUzdfSVNTVUVSX0FORF9TRVJJQUxfaXQ7CisrCQlQQkUyUEFSQU1faXQ7CisrCQlQS0NTMTJfY2VydGJhZzJ4NTA5Y3JsOworKwkJUEtDUzdfU0lHTkVEX2l0OworKwkJRU5HSU5FX2dldF9jaXBoZXI7CisrCQlpMmRfT0NTUF9DUkxJRDsKKysJCU9DU1BfU0lOR0xFUkVTUF9uZXc7CisrCQlFTkdJTkVfY21kX2lzX2V4ZWN1dGFibGU7CisrCQlSU0FfdXBfcmVmOworKwkJQVNOMV9HRU5FUkFMU1RSSU5HX2l0OworKwkJRU5HSU5FX3JlZ2lzdGVyX0RTQTsKKysJCVg1MDlWM19FWFRfYWRkX25jb25mX3NrOworKwkJRU5HSU5FX3NldF9sb2FkX3B1YmtleV9mdW5jdGlvbjsKKysJCVBLQ1M4X2RlY3J5cHQ7CisrCQlQRU1fYnl0ZXNfcmVhZF9iaW87CisrCQlESVJFQ1RPUllTVFJJTkdfaXQ7CisrCQlkMmlfT0NTUF9DUkxJRDsKKysJCUVDX1BPSU5UX2lzX29uX2N1cnZlOworKwkJQ1JZUFRPX3NldF9sb2NrZWRfbWVtX2V4X2Z1bmN0aW9uczsKKysJCUNSWVBUT19zZXRfbG9ja2VkX21lbV9leF9mdW5jczsKKysJCWQyaV9LUkI1X0NIRUNLU1VNOworKwkJQVNOMV9pdGVtX2R1cDsKKysJCVg1MDlfaXQ7CisrCQlCTl9tb2RfYWRkOworKwkJS1JCNV9BVVRIREFUQV9mcmVlOworKwkJX29zc2xfb2xkX2Rlc19jYmNfY2tzdW07CisrCQlBU04xX2l0ZW1fdmVyaWZ5OworKwkJQ1JZUFRPX3NldF9tZW1fZXhfZnVuY3Rpb25zOworKwkJRUNfUE9JTlRfZ2V0X0pwcm9qZWN0aXZlX2Nvb3JkaW5hdGVzX0dGcDsKKysJCUVDX1BPSU5UX2dldF9KcHJval9jb29yZHNfR0ZwOworKwkJWkxPTkdfaXQ7CisrCQlDUllQVE9fZ2V0X2xvY2tlZF9tZW1fZXhfZnVuY3Rpb25zOworKwkJQ1JZUFRPX2dldF9sb2NrZWRfbWVtX2V4X2Z1bmNzOworKwkJQVNOMV9USU1FX2NoZWNrOworKwkJVUlfZ2V0MF91c2VyX2RhdGE7CisrCQlITUFDX0NUWF9jbGVhbnVwOworKwkJRFNBX3VwX3JlZjsKKysJCV9vc3NsX29sZF9kZXNfZWRlM19jZmI2NF9lbmNyeXB0OworKwkJX29zc2xfb2Rlc19lZGUzX2NmYjY0X2VuY3J5cHQ7CisrCQlBU04xX0JNUFNUUklOR19pdDsKKysJCUFTTjFfdGFnMmJpdDsKKysJCVVJX21ldGhvZF9zZXRfZmx1c2hlcjsKKysJCVg1MDlfb2NzcGlkX3ByaW50OworKwkJS1JCNV9FTkNEQVRBX2l0OworKwkJRU5HSU5FX2dldF9sb2FkX3B1YmtleV9mdW5jdGlvbjsKKysJCVVJX2FkZF91c2VyX2RhdGE7CisrCQlPQ1NQX1JFUVVFU1RfZGVsZXRlX2V4dDsKKysJCVVJX2dldF9tZXRob2Q7CisrCQlPQ1NQX09ORVJFUV9mcmVlOworKwkJQVNOMV9QUklOVEFCTEVTVFJJTkdfaXQ7CisrCQlYNTA5X0NSTF9zZXRfbmV4dFVwZGF0ZTsKKysJCU9DU1BfUkVRVUVTVF9pdDsKKysJCU9DU1BfQkFTSUNSRVNQX2l0OworKwkJQUVTX2VjYl9lbmNyeXB0OworKwkJQk5fbW9kX3NxcjsKKysJCU5FVFNDQVBFX0NFUlRfU0VRVUVOQ0VfaXQ7CisrCQlHRU5FUkFMX05BTUVTX2l0OworKwkJQVVUSE9SSVRZX0lORk9fQUNDRVNTX2l0OworKwkJQVNOMV9GQk9PTEVBTl9pdDsKKysJCVVJX3NldF9leF9kYXRhOworKwkJX29zc2xfb2xkX2Rlc19zdHJpbmdfdG9fa2V5OworKwkJRU5HSU5FX3JlZ2lzdGVyX2FsbF9SU0E7CisrCQlkMmlfS1JCNV9QUklOQ05BTUU7CisrCQlPQ1NQX1JFU1BCWVRFU19pdDsKKysJCVg1MDlfQ0lORl9pdDsKKysJCUVOR0lORV91bnJlZ2lzdGVyX2RpZ2VzdHM7CisrCQlkMmlfRURJUEFSVFlOQU1FOworKwkJZDJpX09DU1BfU0VSVklDRUxPQzsKKysJCUVOR0lORV9nZXRfZGlnZXN0czsKKysJCV9vc3NsX29sZF9kZXNfc2V0X29kZF9wYXJpdHk7CisrCQlPQ1NQX1JFU1BEQVRBX2ZyZWU7CisrCQlkMmlfS1JCNV9USUNLRVQ7CisrCQlPVEhFUk5BTUVfaXQ7CisrCQlFVlBfTURfQ1RYX2NsZWFudXA7CisrCQlkMmlfQVNOMV9HRU5FUkFMU1RSSU5HOworKwkJWDUwOV9DUkxfc2V0X3ZlcnNpb247CisrCQlCTl9tb2Rfc3ViOworKwkJT0NTUF9TSU5HTEVSRVNQX2dldF9leHRfYnlfTklEOworKwkJRU5HSU5FX2dldF9leF9uZXdfaW5kZXg7CisrCQlPQ1NQX1JFUVVFU1RfZnJlZTsKKysJCU9DU1BfUkVRVUVTVF9hZGQxX2V4dF9pMmQ7CisrCQlYNTA5X1ZBTF9pdDsKKysJCUVDX1BPSU5Uc19tYWtlX2FmZmluZTsKKysJCUVDX1BPSU5UX211bDsKKysJCVg1MDlWM19FWFRfYWRkX25jb25mOworKwkJWDUwOV9UUlVTVF9zZXQ7CisrCQlYNTA5X0NSTF9hZGQxX2V4dF9pMmQ7CisrCQlfb3NzbF9vbGRfZGVzX2ZjcnlwdDsKKysJCURJU1BMQVlURVhUX2l0OworKwkJWDUwOV9DUkxfc2V0X2xhc3RVcGRhdGU7CisrCQlPQ1NQX0JBU0lDUkVTUF9mcmVlOworKwkJT0NTUF9CQVNJQ1JFU1BfYWRkMV9leHRfaTJkOworKwkJZDJpX0tSQjVfQVVUSEVOVEJPRFk7CisrCQlDUllQVE9fc2V0X2V4X2RhdGFfaW1wbGVtZW50YXRpb247CisrCQlDUllQVE9fc2V0X2V4X2RhdGFfaW1wbDsKKysJCUtSQjVfRU5DREFUQV9uZXc7CisrCQlEU09fdXBfcmVmOworKwkJT0NTUF9jcmxfcmVhc29uX3N0cjsKKysJCVVJX2dldDBfcmVzdWx0X3N0cmluZzsKKysJCUFTTjFfR0VORVJBTFNUUklOR19uZXc7CisrCQlYNTA5X1NJR19pdDsKKysJCUVSUl9zZXRfaW1wbGVtZW50YXRpb247CisrCQlFUlJfbG9hZF9FQ19zdHJpbmdzOworKwkJVUlfZ2V0MF9hY3Rpb25fc3RyaW5nOworKwkJT0NTUF9PTkVSRVFfZ2V0X2V4dDsKKysJCUVDX1BPSU5UX21ldGhvZF9vZjsKKysJCWkyZF9LUkI1X0FQUkVRQk9EWTsKKysJCV9vc3NsX29sZF9kZXNfZWNiM19lbmNyeXB0OworKwkJQ1JZUFRPX2dldF9tZW1fZXhfZnVuY3Rpb25zOworKwkJRU5HSU5FX2dldF9leF9kYXRhOworKwkJVUlfZGVzdHJveV9tZXRob2Q7CisrCQlBU04xX2l0ZW1faTJkX2JpbzsKKysJCU9DU1BfT05FUkVRX2dldF9leHRfYnlfT0JKOworKwkJQVNOMV9wcmltaXRpdmVfbmV3OworKwkJQVNOMV9QUklOVEFCTEVfaXQ7CisrCQlFVlBfYWVzXzE5Ml9lY2I7CisrCQlPQ1NQX1NJR05BVFVSRV9uZXc7CisrCQlMT05HX2l0OworKwkJQVNOMV9WSVNJQkxFU1RSSU5HX2l0OworKwkJT0NTUF9TSU5HTEVSRVNQX2FkZDFfZXh0X2kyZDsKKysJCWQyaV9PQ1NQX0NFUlRJRDsKKysJCUFTTjFfaXRlbV9kMmlfZnA7CisrCQlDUkxfRElTVF9QT0lOVFNfaXQ7CisrCQlHRU5FUkFMX05BTUVfcHJpbnQ7CisrCQlPQ1NQX1NJTkdMRVJFU1BfZGVsZXRlX2V4dDsKKysJCVBLQ1MxMl9TQUZFQkFHU19pdDsKKysJCWQyaV9PQ1NQX1NJR05BVFVSRTsKKysJCU9DU1BfcmVxdWVzdF9hZGQxX25vbmNlOworKwkJRU5HSU5FX3NldF9jbWRfZGVmbnM7CisrCQlPQ1NQX1NFUlZJQ0VMT0NfZnJlZTsKKysJCUVDX0dST1VQX2ZyZWU7CisrCQlBU04xX0JJVF9TVFJJTkdfaXQ7CisrCQlYNTA5X1JFUV9pdDsKKysJCV9vc3NsX29sZF9kZXNfY2JjX2VuY3J5cHQ7CisrCQlFUlJfdW5sb2FkX3N0cmluZ3M7CisrCQlQS0NTN19TSUdOX0VOVkVMT1BFX2l0OworKwkJRURJUEFSVFlOQU1FX2ZyZWU7CisrCQlPQ1NQX1JFUUlORk9fZnJlZTsKKysJCUVDX0dST1VQX25ld19jdXJ2ZV9HRnA7CisrCQlPQ1NQX1JFUVVFU1RfZ2V0MV9leHRfZDJpOworKwkJUEtDUzEyX2l0ZW1fcGFja19zYWZlYmFnOworKwkJYXNuMV9leF9jMmk7CisrCQlFTkdJTkVfcmVnaXN0ZXJfZGlnZXN0czsKKysJCWkyZF9PQ1NQX1JFVk9LRURJTkZPOworKwkJYXNuMV9lbmNfcmVzdG9yZTsKKysJCVVJX2ZyZWU7CisrCQlVSV9uZXdfbWV0aG9kOworKwkJRVZQX0VuY3J5cHRJbml0X2V4OworKwkJWDUwOV9wdWJrZXlfZGlnZXN0OworKwkJRUNfUE9JTlRfaW52ZXJ0OworKwkJT0NTUF9iYXNpY19zaWduOworKwkJaTJkX09DU1BfUkVTUElEOworKwkJT0NTUF9jaGVja19ub25jZTsKKysJCUVOR0lORV9jdHJsX2NtZDsKKysJCWQyaV9LUkI1X0VOQ0tFWTsKKysJCU9DU1BfcGFyc2VfdXJsOworKwkJT0NTUF9TSU5HTEVSRVNQX2dldF9leHQ7CisrCQlPQ1NQX0NSTElEX2ZyZWU7CisrCQlPQ1NQX0JBU0lDUkVTUF9nZXQxX2V4dF9kMmk7CisrCQlSU0FQcml2YXRlS2V5X2l0OworKwkJRU5HSU5FX3JlZ2lzdGVyX2FsbF9ESDsKKysJCWkyZF9FRElQQVJUWU5BTUU7CisrCQlFQ19QT0lOVF9nZXRfYWZmaW5lX2Nvb3JkaW5hdGVzX0dGcDsKKysJCUVDX1BPSU5UX2dldF9hZmZpbmVfY29vcmRzX0dGcDsKKysJCU9DU1BfQ1JMSURfbmV3OworKwkJRU5HSU5FX2dldF9mbGFnczsKKysJCU9DU1BfT05FUkVRX2l0OworKwkJVUlfcHJvY2VzczsKKysJCUFTTjFfSU5URUdFUl9pdDsKKysJCUVWUF9DaXBoZXJJbml0X2V4OworKwkJVUlfZ2V0X3N0cmluZ190eXBlOworKwkJRU5HSU5FX3VucmVnaXN0ZXJfREg7CisrCQlFTkdJTkVfcmVnaXN0ZXJfYWxsX0RTQTsKKysJCU9DU1BfT05FUkVRX2dldF9leHRfYnlfY3JpdGljYWw7CisrCQlibl9kdXBfZXhwYW5kOworKwkJT0NTUF9jZXJ0X2lkX25ldzsKKysJCUJBU0lDX0NPTlNUUkFJTlRTX2l0OworKwkJQk5fbW9kX2FkZF9xdWljazsKKysJCUVDX1BPSU5UX25ldzsKKysJCUVWUF9NRF9DVFhfZGVzdHJveTsKKysJCU9DU1BfUkVTUEJZVEVTX2ZyZWU7CisrCQlFVlBfYWVzXzEyOF9jYmM7CisrCQlPQ1NQX1NJTkdMRVJFU1BfZ2V0MV9leHRfZDJpOworKwkJRUNfUE9JTlRfZnJlZTsKKysJCURIX3VwX3JlZjsKKysJCVg1MDlfTkFNRV9FTlRSWV9pdDsKKysJCVVJX2dldF9leF9uZXdfaW5kZXg7CisrCQlCTl9tb2Rfc3ViX3F1aWNrOworKwkJT0NTUF9PTkVSRVFfYWRkX2V4dDsKKysJCU9DU1BfcmVxdWVzdF9zaWduOworKwkJRVZQX0RpZ2VzdEZpbmFsX2V4OworKwkJRU5HSU5FX3NldF9kaWdlc3RzOworKwkJT0NTUF9pZF9pc3N1ZXJfY21wOworKwkJT0JKX05BTUVfZG9fYWxsOworKwkJRUNfUE9JTlRzX211bDsKKysJCUVOR0lORV9yZWdpc3Rlcl9jb21wbGV0ZTsKKysJCVg1MDlWM19FWFRfbmNvbmZfbmlkOworKwkJQVNOMV9TRVFVRU5DRV9pdDsKKysJCVVJX3NldF9kZWZhdWx0X21ldGhvZDsKKysJCVJBTkRfcXVlcnlfZWdkX2J5dGVzOworKwkJVUlfbWV0aG9kX2dldF93cml0ZXI7CisrCQlVSV9PcGVuU1NMOworKwkJUEVNX2RlZl9jYWxsYmFjazsKKysJCUVOR0lORV9jbGVhbnVwOworKwkJRElTVF9QT0lOVF9pdDsKKysJCU9DU1BfU0lOR0xFUkVTUF9pdDsKKysJCWQyaV9LUkI1X1RLVEJPRFk7CisrCQlFQ19QT0lOVF9jbXA7CisrCQlPQ1NQX1JFVk9LRURJTkZPX25ldzsKKysJCWkyZF9PQ1NQX0NFUlRTVEFUVVM7CisrCQlPQ1NQX2Jhc2ljX2FkZDFfbm9uY2U7CisrCQlBU04xX2l0ZW1fZXhfZDJpOworKwkJQk5fbW9kX2xzaGlmdDFfcXVpY2s7CisrCQlVSV9zZXRfbWV0aG9kOworKwkJT0NTUF9pZF9nZXQwX2luZm87CisrCQlCTl9tb2Rfc3FydDsKKysJCUVDX0dST1VQX2NvcHk7CisrCQlLUkI1X0VOQ0RBVEFfZnJlZTsKKysJCV9vc3NsX29sZF9kZXNfY2ZiX2VuY3J5cHQ7CisrCQlPQ1NQX1NJTkdMRVJFU1BfZ2V0X2V4dF9ieV9PQko7CisrCQlPQ1NQX2NlcnRfdG9faWQ7CisrCQlPQ1NQX1JFU1BJRF9uZXc7CisrCQlPQ1NQX1JFU1BEQVRBX2l0OworKwkJZDJpX09DU1BfUkVTUERBVEE7CisrCQlFTkdJTkVfcmVnaXN0ZXJfYWxsX2NvbXBsZXRlOworKwkJT0NTUF9jaGVja192YWxpZGl0eTsKKysJCVBLQ1MxMl9CQUdTX2l0OworKwkJT0NTUF91cmxfc3ZjbG9jX25ldzsKKysJCUFTTjFfdGVtcGxhdGVfZnJlZTsKKysJCU9DU1BfU0lOR0xFUkVTUF9hZGRfZXh0OworKwkJS1JCNV9BVVRIRU5UQk9EWV9pdDsKKysJCVg1MDlfc3VwcG9ydGVkX2V4dGVuc2lvbjsKKysJCWkyZF9LUkI1X0FVVEhEQVRBOworKwkJVUlfbWV0aG9kX2dldF9vcGVuZXI7CisrCQlFTkdJTkVfc2V0X2V4X2RhdGE7CisrCQlPQ1NQX1JFUVVFU1RfcHJpbnQ7CisrCQlDQklHTlVNX2l0OworKwkJS1JCNV9USUNLRVRfbmV3OworKwkJS1JCNV9BUFJFUV9uZXc7CisrCQlFQ19HUk9VUF9nZXRfY3VydmVfR0ZwOworKwkJS1JCNV9FTkNLRVlfbmV3OworKwkJQVNOMV90ZW1wbGF0ZV9kMmk7CisrCQlfb3NzbF9vbGRfZGVzX3F1YWRfY2tzdW07CisrCQlPQ1NQX3NpbmdsZV9nZXQwX3N0YXR1czsKKysJCUJOX3N3YXA7CisrCQlQT0xJQ1lJTkZPX2l0OworKwkJRU5HSU5FX3NldF9kZXN0cm95X2Z1bmN0aW9uOworKwkJYXNuMV9lbmNfZnJlZTsKKysJCU9DU1BfUkVTUElEX2l0OworKwkJRUNfR1JPVVBfbmV3OworKwkJRVZQX2Flc18yNTZfY2JjOworKwkJaTJkX0tSQjVfUFJJTkNOQU1FOworKwkJX29zc2xfb2xkX2Rlc19lbmNyeXB0MjsKKysJCV9vc3NsX29sZF9kZXNfZW5jcnlwdDM7CisrCQlQS0NTOF9QUklWX0tFWV9JTkZPX2l0OworKwkJT0NTUF9SRVFJTkZPX2l0OworKwkJUEJFUEFSQU1faXQ7CisrCQlLUkI1X0FVVEhFTlRCT0RZX25ldzsKKysJCVg1MDlfQ1JMX2FkZDBfcmV2b2tlZDsKKysJCUVESVBBUlRZTkFNRV9pdDsKKysJCU5FVFNDQVBFX1NQS0lfaXQ7CisrCQlVSV9nZXQwX3Rlc3Rfc3RyaW5nOworKwkJRU5HSU5FX2dldF9jaXBoZXJfZW5naW5lOworKwkJRU5HSU5FX3JlZ2lzdGVyX2FsbF9jaXBoZXJzOworKwkJRUNfUE9JTlRfY29weTsKKysJCUJOX2tyb25lY2tlcjsKKysJCV9vc3NsX29sZF9kZXNfZWRlM19vZmI2NF9lbmNyeXB0OworKwkJX29zc2xfb2Rlc19lZGUzX29mYjY0X2VuY3J5cHQ7CisrCQlVSV9tZXRob2RfZ2V0X3JlYWRlcjsKKysJCU9DU1BfQkFTSUNSRVNQX2dldF9leHRfY291bnQ7CisrCQlBU04xX0VOVU1FUkFURURfaXQ7CisrCQlVSV9zZXRfcmVzdWx0OworKwkJaTJkX0tSQjVfVElDS0VUOworKwkJWDUwOV9wcmludF9leF9mcDsKKysJCUVWUF9DSVBIRVJfQ1RYX3NldF9wYWRkaW5nOworKwkJZDJpX09DU1BfUkVTUE9OU0U7CisrCQlBU04xX1VUQ1RJTUVfaXQ7CisrCQlfb3NzbF9vbGRfZGVzX2VuY193cml0ZTsKKysJCU9DU1BfUkVTUE9OU0VfbmV3OworKwkJQUVTX3NldF9lbmNyeXB0X2tleTsKKysJCU9DU1BfcmVzcF9jb3VudDsKKysJCUtSQjVfQ0hFQ0tTVU1fbmV3OworKwkJRU5HSU5FX2xvYWRfY3N3aWZ0OworKwkJT0NTUF9vbmVyZXFfZ2V0MF9pZDsKKysJCUVOR0lORV9zZXRfZGVmYXVsdF9jaXBoZXJzOworKwkJTk9USUNFUkVGX2l0OworKwkJWDUwOVYzX0VYVF9DUkxfYWRkX25jb25mOworKwkJT0NTUF9SRVZPS0VESU5GT19pdDsKKysJCUFFU19lbmNyeXB0OworKwkJT0NTUF9SRVFVRVNUX25ldzsKKysJCUFTTjFfQU5ZX2l0OworKwkJQ1JZUFRPX2V4X2RhdGFfbmV3X2NsYXNzOworKwkJX29zc2xfb2xkX2Rlc19uY2JjX2VuY3J5cHQ7CisrCQlpMmRfS1JCNV9US1RCT0RZOworKwkJRUNfUE9JTlRfY2xlYXJfZnJlZTsKKysJCUFFU19kZWNyeXB0OworKwkJYXNuMV9lbmNfaW5pdDsKKysJCVVJX2dldF9yZXN1bHRfbWF4c2l6ZTsKKysJCU9DU1BfQ0VSVElEX25ldzsKKysJCUVOR0lORV91bnJlZ2lzdGVyX1JBTkQ7CisrCQlVSV9tZXRob2RfZ2V0X2Nsb3NlcjsKKysJCWQyaV9LUkI1X0VOQ0RBVEE7CisrCQlPQ1NQX3JlcXVlc3Rfb25lcmVxX2NvdW50OworKwkJT0NTUF9iYXNpY192ZXJpZnk7CisrCQlLUkI1X0FVVEhFTlRCT0RZX2ZyZWU7CisrCQlBU04xX2l0ZW1fZDJpOworKwkJQVNOMV9wcmltaXRpdmVfZnJlZTsKKysJCWkyZF9FWFRFTkRFRF9LRVlfVVNBR0U7CisrCQlpMmRfT0NTUF9TSUdOQVRVUkU7CisrCQlhc24xX2VuY19zYXZlOworKwkJRU5HSU5FX2xvYWRfbnVyb247CisrCQlfb3NzbF9vbGRfZGVzX3BjYmNfZW5jcnlwdDsKKysJCVBLQ1MxMl9NQUNfREFUQV9pdDsKKysJCU9DU1BfYWNjZXB0X3Jlc3BvbnNlc19uZXc7CisrCQlhc24xX2RvX2xvY2s7CisrCQlQS0NTN19BVFRSX1ZFUklGWV9pdDsKKysJCUtSQjVfQVBSRVFCT0RZX2l0OworKwkJaTJkX09DU1BfU0lOR0xFUkVTUDsKKysJCUFTTjFfaXRlbV9leF9uZXc7CisrCQlVSV9hZGRfdmVyaWZ5X3N0cmluZzsKKysJCV9vc3NsX29sZF9kZXNfc2V0X2tleTsKKysJCUtSQjVfUFJJTkNOQU1FX2l0OworKwkJRVZQX0RlY3J5cHRJbml0X2V4OworKwkJaTJkX09DU1BfQ0VSVElEOworKwkJQVNOMV9pdGVtX2QyaV9iaW87CisrCQlFQ19QT0lOVF9kYmw7CisrCQlhc24xX2dldF9jaG9pY2Vfc2VsZWN0b3I7CisrCQlpMmRfS1JCNV9DSEVDS1NVTTsKKysJCUVOR0lORV9zZXRfdGFibGVfZmxhZ3M7CisrCQlBRVNfb3B0aW9uczsKKysJCUVOR0lORV9sb2FkX2NoaWw7CisrCQlPQ1NQX2lkX2NtcDsKKysJCU9DU1BfQkFTSUNSRVNQX25ldzsKKysJCU9DU1BfUkVRVUVTVF9nZXRfZXh0X2J5X05JRDsKKysJCUtSQjVfQVBSRVFfaXQ7CisrCQlFTkdJTkVfZ2V0X2Rlc3Ryb3lfZnVuY3Rpb247CisrCQlDT05GX3NldF9uY29uZjsKKysJCUFTTjFfUFJJTlRBQkxFX2ZyZWU7CisrCQlPQ1NQX0JBU0lDUkVTUF9nZXRfZXh0X2J5X05JRDsKKysJCURJU1RfUE9JTlRfTkFNRV9pdDsKKysJCVg1MDlWM19leHRlbnNpb25zX3ByaW50OworKwkJX29zc2xfb2xkX2Rlc19jZmI2NF9lbmNyeXB0OworKwkJWDUwOV9SRVZPS0VEX2FkZDFfZXh0X2kyZDsKKysJCV9vc3NsX29sZF9kZXNfb2ZiX2VuY3J5cHQ7CisrCQlLUkI1X1RLVEJPRFlfbmV3OworKwkJQVNOMV9PQ1RFVF9TVFJJTkdfaXQ7CisrCQlFUlJfbG9hZF9VSV9zdHJpbmdzOworKwkJaTJkX0tSQjVfRU5DS0VZOworKwkJQVNOMV90ZW1wbGF0ZV9uZXc7CisrCQlPQ1NQX1NJR05BVFVSRV9mcmVlOworKwkJQVNOMV9pdGVtX2kyZF9mcDsKKysJCUtSQjVfUFJJTkNOQU1FX2ZyZWU7CisrCQlQS0NTN19SRUNJUF9JTkZPX2l0OworKwkJRVhURU5ERURfS0VZX1VTQUdFX2l0OworKwkJRUNfR0ZwX3NpbXBsZV9tZXRob2Q7CisrCQlFQ19HUk9VUF9wcmVjb21wdXRlX211bHQ7CisrCQlPQ1NQX3JlcXVlc3Rfb25lcmVxX2dldDA7CisrCQlVSV9tZXRob2Rfc2V0X3dyaXRlcjsKKysJCUtSQjVfQVVUSEVOVF9uZXc7CisrCQlYNTA5X0NSTF9JTkZPX2l0OworKwkJRFNPX3NldF9uYW1lX2NvbnZlcnRlcjsKKysJCUFFU19zZXRfZGVjcnlwdF9rZXk7CisrCQlQS0NTN19ESUdFU1RfaXQ7CisrCQlQS0NTMTJfeDUwOTJjZXJ0YmFnOworKwkJRVZQX0RpZ2VzdEluaXRfZXg7CisrCQlpMmFfQUNDRVNTX0RFU0NSSVBUSU9OOworKwkJT0NTUF9SRVNQT05TRV9pdDsKKysJCVBLQ1M3X0VOQ19DT05URU5UX2l0OworKwkJT0NTUF9yZXF1ZXN0X2FkZDBfaWQ7CisrCQlFQ19QT0lOVF9tYWtlX2FmZmluZTsKKysJCURTT19nZXRfZmlsZW5hbWU7CisrCQlPQ1NQX0NFUlRTVEFUVVNfaXQ7CisrCQlPQ1NQX3JlcXVlc3RfYWRkMV9jZXJ0OworKwkJVUlfZ2V0MF9vdXRwdXRfc3RyaW5nOworKwkJVUlfZHVwX3ZlcmlmeV9zdHJpbmc7CisrCQlCTl9tb2RfbHNoaWZ0OworKwkJS1JCNV9BVVRIREFUQV9pdDsKKysJCWFzbjFfc2V0X2Nob2ljZV9zZWxlY3RvcjsKKysJCU9DU1BfYmFzaWNfYWRkMV9zdGF0dXM7CisrCQlPQ1NQX1JFU1BJRF9mcmVlOworKwkJYXNuMV9nZXRfZmllbGRfcHRyOworKwkJVUlfYWRkX2lucHV0X3N0cmluZzsKKysJCU9DU1BfQ1JMSURfaXQ7CisrCQlpMmRfS1JCNV9BVVRIRU5UQk9EWTsKKysJCU9DU1BfUkVRVUVTVF9nZXRfZXh0X2NvdW50OworKwkJRU5HSU5FX2xvYWRfYXRhbGxhOworKwkJWDUwOV9OQU1FX2l0OworKwkJVVNFUk5PVElDRV9pdDsKKysJCU9DU1BfUkVRSU5GT19uZXc7CisrCQlPQ1NQX0JBU0lDUkVTUF9nZXRfZXh0OworKwkJQ1JZUFRPX2dldF9leF9kYXRhX2ltcGxlbWVudGF0aW9uOworKwkJQ1JZUFRPX2dldF9leF9kYXRhX2ltcGw7CisrCQlBU04xX2l0ZW1fcGFjazsKKysJCWkyZF9LUkI1X0VOQ0RBVEE7CisrCQlYNTA5X1BVUlBPU0Vfc2V0OworKwkJWDUwOV9SRVFfSU5GT19pdDsKKysJCVVJX21ldGhvZF9zZXRfb3BlbmVyOworKwkJQVNOMV9pdGVtX2V4X2ZyZWU7CisrCQlBU04xX0JPT0xFQU5faXQ7CisrCQlFTkdJTkVfZ2V0X3RhYmxlX2ZsYWdzOworKwkJVUlfY3JlYXRlX21ldGhvZDsKKysJCU9DU1BfT05FUkVRX2FkZDFfZXh0X2kyZDsKKysJCV9zaGFkb3dfREVTX2NoZWNrX2tleTsKKysJCWQyaV9PQ1NQX1JFUUlORk87CisrCQlVSV9hZGRfaW5mb19zdHJpbmc7CisrCQlVSV9nZXRfcmVzdWx0X21pbnNpemU7CisrCQlBU04xX05VTExfaXQ7CisrCQlCTl9tb2RfbHNoaWZ0MTsKKysJCWQyaV9PQ1NQX09ORVJFUTsKKysJCU9DU1BfT05FUkVRX25ldzsKKysJCUtSQjVfVElDS0VUX2l0OworKwkJRVZQX2Flc18xOTJfY2JjOworKwkJS1JCNV9USUNLRVRfZnJlZTsKKysJCVVJX25ldzsKKysJCU9DU1BfcmVzcG9uc2VfY3JlYXRlOworKwkJX29zc2xfb2xkX2Rlc194Y2JjX2VuY3J5cHQ7CisrCQlQS0NTN19pdDsKKysJCU9DU1BfUkVRVUVTVF9nZXRfZXh0X2J5X2NyaXRpY2FsOworKwkJT0NTUF9SRVFVRVNUX2dldF9leHRfYnlfY3JpdDsKKysJCUVOR0lORV9zZXRfZmxhZ3M7CisrCQlfb3NzbF9vbGRfZGVzX2VjYl9lbmNyeXB0OworKwkJT0NTUF9yZXNwb25zZV9nZXQxX2Jhc2ljOworKwkJRVZQX0RpZ2VzdDsKKysJCU9DU1BfT05FUkVRX2RlbGV0ZV9leHQ7CisrCQlBU04xX1RCT09MRUFOX2l0OworKwkJQVNOMV9pdGVtX25ldzsKKysJCUFTTjFfVElNRV90b19nZW5lcmFsaXplZHRpbWU7CisrCQlCSUdOVU1faXQ7CisrCQlBRVNfY2JjX2VuY3J5cHQ7CisrCQlFTkdJTkVfZ2V0X2xvYWRfcHJpdmtleV9mdW5jdGlvbjsKKysJCUVOR0lORV9nZXRfbG9hZF9wcml2a2V5X2ZuOworKwkJT0NTUF9SRVNQT05TRV9mcmVlOworKwkJVUlfbWV0aG9kX3NldF9yZWFkZXI7CisrCQlpMmRfQVNOMV9UNjFTVFJJTkc7CisrCQlFQ19QT0lOVF9zZXRfdG9faW5maW5pdHk7CisrCQlFUlJfbG9hZF9PQ1NQX3N0cmluZ3M7CisrCQlFQ19QT0lOVF9wb2ludDJvY3Q7CisrCQlLUkI1X0FQUkVRX2ZyZWU7CisrCQlBU04xX09CSkVDVF9pdDsKKysJCU9DU1BfY3JsSURfbmV3OworKwkJT0NTUF9jcmxJRDJfbmV3OworKwkJQ09ORl9tb2R1bGVzX2xvYWRfZmlsZTsKKysJCUNPTkZfaW1vZHVsZV9zZXRfdXNyX2RhdGE7CisrCQlFTkdJTkVfc2V0X2RlZmF1bHRfc3RyaW5nOworKwkJQ09ORl9tb2R1bGVfZ2V0X3Vzcl9kYXRhOworKwkJQVNOMV9hZGRfb2lkX21vZHVsZTsKKysJCUNPTkZfbW9kdWxlc19maW5pc2g7CisrCQlPUEVOU1NMX2NvbmZpZzsKKysJCUNPTkZfbW9kdWxlc191bmxvYWQ7CisrCQlDT05GX2ltb2R1bGVfZ2V0X3ZhbHVlOworKwkJQ09ORl9tb2R1bGVfc2V0X3Vzcl9kYXRhOworKwkJQ09ORl9wYXJzZV9saXN0OworKwkJQ09ORl9tb2R1bGVfYWRkOworKwkJQ09ORl9nZXQxX2RlZmF1bHRfY29uZmlnX2ZpbGU7CisrCQlDT05GX2ltb2R1bGVfZ2V0X2ZsYWdzOworKwkJQ09ORl9pbW9kdWxlX2dldF9tb2R1bGU7CisrCQlDT05GX21vZHVsZXNfbG9hZDsKKysJCUNPTkZfaW1vZHVsZV9nZXRfbmFtZTsKKysJCUVSUl9wZWVrX3RvcF9lcnJvcjsKKysJCUNPTkZfaW1vZHVsZV9nZXRfdXNyX2RhdGE7CisrCQlDT05GX2ltb2R1bGVfc2V0X2ZsYWdzOworKwkJRU5HSU5FX2FkZF9jb25mX21vZHVsZTsKKysJCUVSUl9wZWVrX2xhc3RfZXJyb3JfbGluZTsKKysJCUVSUl9wZWVrX2xhc3RfZXJyb3JfbGluZV9kYXRhOworKwkJRVJSX3BlZWtfbGFzdF9lcnJvcjsKKysJCURFU19yZWFkXzJwYXNzd29yZHM7CisrCQlERVNfcmVhZF9wYXNzd29yZDsKKysJCVVJX1VUSUxfcmVhZF9wdzsKKysJCVVJX1VUSUxfcmVhZF9wd19zdHJpbmc7CisrCQlFTkdJTkVfbG9hZF9hZXA7CisrCQlFTkdJTkVfbG9hZF9zdXJld2FyZTsKKysJCU9QRU5TU0xfYWRkX2FsbF9hbGdvcml0aG1zX25vY29uZjsKKysJCU9QRU5TU0xfYWRkX2FsbF9hbGdvX25vY29uZjsKKysJCU9QRU5TU0xfYWRkX2FsbF9hbGdvcml0aG1zX2NvbmY7CisrCQlPUEVOU1NMX2FkZF9hbGxfYWxnb19jb25mOworKwkJT1BFTlNTTF9sb2FkX2J1aWx0aW5fbW9kdWxlczsKKysJCUFFU19vZmIxMjhfZW5jcnlwdDsKKysJCUFFU19jdHIxMjhfZW5jcnlwdDsKKysJCUFFU19jZmIxMjhfZW5jcnlwdDsKKysJCUVOR0lORV9sb2FkXzQ3NThjY2E7CisrCQlfb3NzbF8wOTZfZGVzX3JhbmRvbV9zZWVkOworKwkJRVZQX2Flc18yNTZfb2ZiOworKwkJRVZQX2Flc18xOTJfb2ZiOworKwkJRVZQX2Flc18xMjhfY2ZiMTI4OworKwkJRVZQX2Flc18yNTZfY2ZiMTI4OworKwkJRVZQX2Flc18xMjhfb2ZiOworKwkJRVZQX2Flc18xOTJfY2ZiMTI4OworKwkJQ09ORl9tb2R1bGVzX2ZyZWU7CisrCQlOQ09ORl9kZWZhdWx0OworKwkJT1BFTlNTTF9ub19jb25maWc7CisrCQlOQ09ORl9XSU4zMjsKKysJCUFTTjFfVU5JVkVSU0FMU1RSSU5HX25ldzsKKysJCUVWUF9kZXNfZWRlX2VjYjsKKysJCWkyZF9BU04xX1VOSVZFUlNBTFNUUklORzsKKysJCUFTTjFfVU5JVkVSU0FMU1RSSU5HX2ZyZWU7CisrCQlBU04xX1VOSVZFUlNBTFNUUklOR19pdDsKKysJCWQyaV9BU04xX1VOSVZFUlNBTFNUUklORzsKKysJCUVWUF9kZXNfZWRlM19lY2I7CisrCQlYNTA5X1JFUV9wcmludF9leDsKKysJCUVOR0lORV91cF9yZWY7CisrCQlCVUZfTUVNX2dyb3dfY2xlYW47CisrCQlDUllQVE9fcmVhbGxvY19jbGVhbjsKKysJCUJVRl9zdHJsY2F0OworKwkJQklPX2luZGVudDsKKysJCUJVRl9zdHJsY3B5OworKwkJT3BlblNTTERpZTsKKysJCU9QRU5TU0xfY2xlYW5zZTsKKysJCUVOR0lORV9zZXR1cF9ic2RfY3J5cHRvZGV2OworKwkJRVJSX3JlbGVhc2VfZXJyX3N0YXRlX3RhYmxlOworKwkJRVZQX2Flc18xMjhfY2ZiODsKKysJCUZJUFNfY29ycnVwdF9yc2E7CisrCQlGSVBTX3NlbGZ0ZXN0X2RlczsKKysJCUVWUF9hZXNfMTI4X2NmYjE7CisrCQlFVlBfYWVzXzE5Ml9jZmI4OworKwkJRklQU19tb2RlX3NldDsKKysJCUZJUFNfc2VsZnRlc3RfZHNhOworKwkJRVZQX2Flc18yNTZfY2ZiODsKKysJCUZJUFNfYWxsb3dfbWQ1OworKwkJREVTX2VkZTNfY2ZiX2VuY3J5cHQ7CisrCQlFVlBfZGVzX2VkZTNfY2ZiODsKKysJCUZJUFNfcmFuZF9zZWVkZWQ7CisrCQlBRVNfY2Zicl9lbmNyeXB0X2Jsb2NrOworKwkJQUVTX2NmYjhfZW5jcnlwdDsKKysJCUZJUFNfcmFuZF9zZWVkOworKwkJRklQU19jb3JydXB0X2RlczsKKysJCUVWUF9hZXNfMTkyX2NmYjE7CisrCQlGSVBTX3NlbGZ0ZXN0X2FlczsKKysJCUZJUFNfc2V0X3Bybmdfa2V5OworKwkJRVZQX2Rlc19jZmI4OworKwkJRklQU19jb3JydXB0X2RzYTsKKysJCUZJUFNfdGVzdF9tb2RlOworKwkJRklQU19yYW5kX21ldGhvZDsKKysJCUVWUF9hZXNfMjU2X2NmYjE7CisrCQlFUlJfbG9hZF9GSVBTX3N0cmluZ3M7CisrCQlGSVBTX2NvcnJ1cHRfYWVzOworKwkJRklQU19zZWxmdGVzdF9zaGExOworKwkJRklQU19zZWxmdGVzdF9yc2E7CisrCQlGSVBTX2NvcnJ1cHRfc2hhMTsKKysJCUVWUF9kZXNfY2ZiMTsKKysJCUZJUFNfZHNhX2NoZWNrOworKwkJQUVTX2NmYjFfZW5jcnlwdDsKKysJCUVWUF9kZXNfZWRlM19jZmIxOworKwkJRklQU19yYW5kX2NoZWNrOworKwkJRklQU19tZDVfYWxsb3dlZDsKKysJCUZJUFNfbW9kZTsKKysJCUZJUFNfc2VsZnRlc3RfZmFpbGVkOworKwkJc2tfaXNfc29ydGVkOworKwkJWDUwOV9jaGVja19jYTsKKysJCUhNQUNfQ1RYX3NldF9mbGFnczsKKysJCWQyaV9QUk9YWV9DRVJUX0lORk9fRVhURU5TSU9OOworKwkJUFJPWFlfUE9MSUNZX2l0OworKwkJaTJkX1BST1hZX1BPTElDWTsKKysJCWkyZF9QUk9YWV9DRVJUX0lORk9fRVhURU5TSU9OOworKwkJZDJpX1BST1hZX1BPTElDWTsKKysJCVBST1hZX0NFUlRfSU5GT19FWFRFTlNJT05fbmV3OworKwkJUFJPWFlfQ0VSVF9JTkZPX0VYVEVOU0lPTl9mcmVlOworKwkJUFJPWFlfQ0VSVF9JTkZPX0VYVEVOU0lPTl9pdDsKKysJCVBST1hZX1BPTElDWV9mcmVlOworKwkJUFJPWFlfUE9MSUNZX25ldzsKKysJCUJOX01PTlRfQ1RYX3NldF9sb2NrZWQ7CisrCQlGSVBTX3NlbGZ0ZXN0X3JuZzsKKysJCUVWUF9zaGEzODQ7CisrCQlFVlBfc2hhNTEyOworKwkJRVZQX3NoYTIyNDsKKysJCUVWUF9zaGEyNTY7CisrCQlGSVBTX3NlbGZ0ZXN0X2htYWM7CisrCQlGSVBTX2NvcnJ1cHRfcm5nOworKwkJQk5fbW9kX2V4cF9tb250X2NvbnN0dGltZTsKKysJCVJTQV9YOTMxX2hhc2hfaWQ7CisrCQlSU0FfcGFkZGluZ19jaGVja19YOTMxOworKwkJUlNBX3ZlcmlmeV9QS0NTMV9QU1M7CisrCQlSU0FfcGFkZGluZ19hZGRfWDkzMTsKKysJCVJTQV9wYWRkaW5nX2FkZF9QS0NTMV9QU1M7CisrCQlQS0NTMV9NR0YxOworKwkJQk5fWDkzMV9nZW5lcmF0ZV9YcHE7CisrCQlSU0FfWDkzMV9nZW5lcmF0ZV9rZXk7CisrCQlCTl9YOTMxX2Rlcml2ZV9wcmltZTsKKysJCUJOX1g5MzFfZ2VuZXJhdGVfcHJpbWU7CisrCQlSU0FfWDkzMV9kZXJpdmU7CisrCQlCSU9fbmV3X2RncmFtOworKwkJQk5fZ2V0MF9uaXN0X3ByaW1lXzM4NDsKKysJCUVSUl9zZXRfbWFyazsKKysJCVg1MDlfU1RPUkVfQ1RYX3NldDBfY3JsczsKKysJCUVOR0lORV9zZXRfU1RPUkU7CisrCQlFTkdJTkVfcmVnaXN0ZXJfRUNEU0E7CisrCQlTVE9SRV9tZXRoX3NldF9saXN0X3N0YXJ0X2ZuOworKwkJU1RPUkVfbWV0aG9kX3NldF9saXN0X3N0YXJ0X2Z1bmN0aW9uOworKwkJQk5fQkxJTkRJTkdfaW52ZXJ0X2V4OworKwkJTkFNRV9DT05TVFJBSU5UU19mcmVlOworKwkJU1RPUkVfQVRUUl9JTkZPX3NldF9udW1iZXI7CisrCQlCTl9CTElORElOR19nZXRfdGhyZWFkX2lkOworKwkJWDUwOV9TVE9SRV9DVFhfc2V0MF9wYXJhbTsKKysJCVBPTElDWV9NQVBQSU5HX2l0OworKwkJU1RPUkVfcGFyc2VfYXR0cnNfc3RhcnQ7CisrCQlQT0xJQ1lfQ09OU1RSQUlOVFNfZnJlZTsKKysJCUVWUF9QS0VZX2FkZDFfYXR0cl9ieV9OSUQ7CisrCQlCTl9uaXN0X21vZF8xOTI7CisrCQlFQ19HUk9VUF9nZXRfdHJpbm9taWFsX2Jhc2lzOworKwkJU1RPUkVfc2V0X21ldGhvZDsKKysJCUdFTkVSQUxfU1VCVFJFRV9mcmVlOworKwkJTkFNRV9DT05TVFJBSU5UU19pdDsKKysJCUVDREhfZ2V0X2RlZmF1bHRfbWV0aG9kOworKwkJUEtDUzEyX2FkZF9zYWZlOworKwkJRUNfS0VZX25ld19ieV9jdXJ2ZV9uYW1lOworKwkJU1RPUkVfbWV0aF9nZXRfdXBkYXRlX3N0b3JlX2ZuOworKwkJU1RPUkVfbWV0aG9kX2dldF91cGRhdGVfc3RvcmVfZnVuY3Rpb247CisrCQlFTkdJTkVfcmVnaXN0ZXJfRUNESDsKKysJCVNIQTUxMl9VcGRhdGU7CisrCQlpMmRfRUNQcml2YXRlS2V5OworKwkJQk5fZ2V0MF9uaXN0X3ByaW1lXzE5MjsKKysJCVNUT1JFX21vZGlmeV9jZXJ0aWZpY2F0ZTsKKysJCUVDX1BPSU5UX3NldF9hZmZpbmVfY29vcmRpbmF0ZXNfR0YybTsKKysJCUVDX1BPSU5UX3NldF9hZmZpbmVfY29vcmRzX0dGMm07CisrCQlCTl9HRjJtX21vZF9leHBfYXJyOworKwkJU1RPUkVfQVRUUl9JTkZPX21vZGlmeV9udW1iZXI7CisrCQlYNTA5X2tleWlkX2dldDA7CisrCQlFTkdJTkVfbG9hZF9nbXA7CisrCQlwaXRlbV9uZXc7CisrCQlCTl9HRjJtX21vZF9tdWxfYXJyOworKwkJU1RPUkVfbGlzdF9wdWJsaWNfa2V5X2VuZHA7CisrCQlvMmlfRUNQdWJsaWNLZXk7CisrCQlFQ19LRVlfY29weTsKKysJCUJJT19kdW1wX2ZwOworKwkJWDUwOV9wb2xpY3lfbm9kZV9nZXQwX3BhcmVudDsKKysJCUVDX0dST1VQX2NoZWNrX2Rpc2NyaW1pbmFudDsKKysJCWkyb19FQ1B1YmxpY0tleTsKKysJCUVDX0tFWV9wcmVjb21wdXRlX211bHQ7CisrCQlhMmlfSVBBRERSRVNTOworKwkJU1RPUkVfbWV0aF9zZXRfaW5pdGlhbGlzZV9mbjsKKysJCVNUT1JFX21ldGhvZF9zZXRfaW5pdGlhbGlzZV9mdW5jdGlvbjsKKysJCVg1MDlfU1RPUkVfQ1RYX3NldF9kZXB0aDsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX2luaGVyaXQ7CisrCQlFQ19QT0lOVF9wb2ludDJibjsKKysJCVNUT1JFX0FUVFJfSU5GT19zZXRfZG47CisrCQlYNTA5X3BvbGljeV90cmVlX2dldDBfcG9saWNpZXM7CisrCQlFQ19HUk9VUF9uZXdfY3VydmVfR0YybTsKKysJCVNUT1JFX2Rlc3Ryb3lfbWV0aG9kOworKwkJRU5HSU5FX3VucmVnaXN0ZXJfU1RPUkU7CisrCQlFVlBfUEtFWV9nZXQxX0VDX0tFWTsKKysJCVNUT1JFX0FUVFJfSU5GT19nZXQwX251bWJlcjsKKysJCUVOR0lORV9nZXRfZGVmYXVsdF9FQ0RIOworKwkJRUNfS0VZX2dldF9jb252X2Zvcm07CisrCQlBU04xX09DVEVUX1NUUklOR19OREVGX2l0OworKwkJU1RPUkVfZGVsZXRlX3B1YmxpY19rZXk7CisrCQlTVE9SRV9nZXRfcHVibGljX2tleTsKKysJCVNUT1JFX21vZGlmeV9hcmJpdHJhcnk7CisrCQlFTkdJTkVfZ2V0X3N0YXRpY19zdGF0ZTsKKysJCXBxdWV1ZV9pdGVyYXRvcjsKKysJCUVDRFNBX1NJR19uZXc7CisrCQlPUEVOU1NMX0RJUl9lbmQ7CisrCQlCTl9HRjJtX21vZF9zcXI7CisrCQlFQ19QT0lOVF9ibjJwb2ludDsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX3NldF9kZXB0aDsKKysJCUVDX0tFWV9zZXRfYXNuMV9mbGFnOworKwkJU1RPUkVfZ2V0X21ldGhvZDsKKysJCUVDX0tFWV9nZXRfa2V5X21ldGhvZF9kYXRhOworKwkJRUNEU0Ffc2lnbl9leDsKKysJCVNUT1JFX3BhcnNlX2F0dHJzX2VuZDsKKysJCUVDX0dST1VQX2dldF9wb2ludF9jb252ZXJzaW9uX2Zvcm07CisrCQlFQ19HUk9VUF9nZXRfcG9pbnRfY29udl9mb3JtOworKwkJU1RPUkVfbWV0aG9kX3NldF9zdG9yZV9mdW5jdGlvbjsKKysJCVNUT1JFX0FUVFJfSU5GT19pbjsKKysJCVBFTV9yZWFkX2Jpb19FQ1BLUGFyYW1ldGVyczsKKysJCUVDX0dST1VQX2dldF9wZW50YW5vbWlhbF9iYXNpczsKKysJCUVWUF9QS0VZX2FkZDFfYXR0cl9ieV90eHQ7CisrCQlCTl9CTElORElOR19zZXRfZmxhZ3M7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXQxX3BvbGljaWVzOworKwkJWDUwOV9WRVJJRllfUEFSQU1fc2V0MV9uYW1lOworKwkJWDUwOV9WRVJJRllfUEFSQU1fc2V0X3B1cnBvc2U7CisrCQlTVE9SRV9nZXRfbnVtYmVyOworKwkJRUNEU0Ffc2lnbl9zZXR1cDsKKysJCUJOX0dGMm1fbW9kX3NvbHZlX3F1YWRfYXJyOworKwkJRUNfS0VZX3VwX3JlZjsKKysJCVBPTElDWV9NQVBQSU5HX2ZyZWU7CisrCQlCTl9HRjJtX21vZF9kaXY7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXRfZmxhZ3M7CisrCQlFQ19LRVlfZnJlZTsKKysJCVNUT1JFX21ldGhfc2V0X2xpc3RfbmV4dF9mbjsKKysJCVNUT1JFX21ldGhvZF9zZXRfbGlzdF9uZXh0X2Z1bmN0aW9uOworKwkJUEVNX3dyaXRlX2Jpb19FQ1ByaXZhdGVLZXk7CisrCQlkMmlfRUNfUFVCS0VZOworKwkJU1RPUkVfbWV0aF9nZXRfZ2VuZXJhdGVfZm47CisrCQlTVE9SRV9tZXRob2RfZ2V0X2dlbmVyYXRlX2Z1bmN0aW9uOworKwkJU1RPUkVfbWV0aF9zZXRfbGlzdF9lbmRfZm47CisrCQlTVE9SRV9tZXRob2Rfc2V0X2xpc3RfZW5kX2Z1bmN0aW9uOworKwkJcHF1ZXVlX3ByaW50OworKwkJRUNfR1JPVVBfaGF2ZV9wcmVjb21wdXRlX211bHQ7CisrCQlFQ19LRVlfcHJpbnRfZnA7CisrCQlCTl9HRjJtX21vZF9hcnI7CisrCQlQRU1fd3JpdGVfYmlvX1g1MDlfQ0VSVF9QQUlSOworKwkJRVZQX1BLRVlfY21wOworKwkJWDUwOV9wb2xpY3lfbGV2ZWxfbm9kZV9jb3VudDsKKysJCVNUT1JFX25ld19lbmdpbmU7CisrCQlTVE9SRV9saXN0X3B1YmxpY19rZXlfc3RhcnQ7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9uZXc7CisrCQlFQ0RIX2dldF9leF9kYXRhOworKwkJRVZQX1BLRVlfZ2V0X2F0dHI7CisrCQlFQ0RTQV9kb19zaWduOworKwkJRU5HSU5FX3VucmVnaXN0ZXJfRUNESDsKKysJCUVDREhfT3BlblNTTDsKKysJCUVDX0tFWV9zZXRfY29udl9mb3JtOworKwkJRUNfUE9JTlRfZHVwOworKwkJR0VORVJBTF9TVUJUUkVFX25ldzsKKysJCVNUT1JFX2xpc3RfY3JsX2VuZHA7CisrCQlFQ19nZXRfYnVpbHRpbl9jdXJ2ZXM7CisrCQlYNTA5X3BvbGljeV9ub2RlX2dldDBfcXVhbGlmaWVyczsKKysJCVg1MDlfcGN5X25vZGVfZ2V0MF9xdWFsaWZpZXJzOworKwkJU1RPUkVfbGlzdF9jcmxfZW5kOworKwkJRVZQX1BLRVlfc2V0MV9FQ19LRVk7CisrCQlCTl9HRjJtX21vZF9zcXJ0X2FycjsKKysJCWkyZF9FQ1ByaXZhdGVLZXlfYmlvOworKwkJRUNQS1BhcmFtZXRlcnNfcHJpbnRfZnA7CisrCQlwcXVldWVfZmluZDsKKysJCUVDRFNBX1NJR19mcmVlOworKwkJUEVNX3dyaXRlX2Jpb19FQ1BLUGFyYW1ldGVyczsKKysJCVNUT1JFX21ldGhvZF9zZXRfY3RybF9mdW5jdGlvbjsKKysJCVNUT1JFX2xpc3RfcHVibGljX2tleV9lbmQ7CisrCQlFQ19LRVlfc2V0X3ByaXZhdGVfa2V5OworKwkJcHF1ZXVlX3BlZWs7CisrCQlTVE9SRV9nZXRfYXJiaXRyYXJ5OworKwkJU1RPUkVfc3RvcmVfY3JsOworKwkJWDUwOV9wb2xpY3lfbm9kZV9nZXQwX3BvbGljeTsKKysJCVBLQ1MxMl9hZGRfc2FmZXM7CisrCQlCTl9CTElORElOR19jb252ZXJ0X2V4OworKwkJWDUwOV9wb2xpY3lfdHJlZV9mcmVlOworKwkJT1BFTlNTTF9pYTMyY2FwX2xvYzsKKysJCUJOX0dGMm1fcG9seTJhcnI7CisrCQlTVE9SRV9jdHJsOworKwkJU1RPUkVfQVRUUl9JTkZPX2NvbXBhcmU7CisrCQlCTl9nZXQwX25pc3RfcHJpbWVfMjI0OworKwkJaTJkX0VDUGFyYW1ldGVyczsKKysJCWkyZF9FQ1BLUGFyYW1ldGVyczsKKysJCUJOX0dFTkNCX2NhbGw7CisrCQlkMmlfRUNQS1BhcmFtZXRlcnM7CisrCQlTVE9SRV9tZXRoX3NldF9nZW5lcmF0ZV9mbjsKKysJCVNUT1JFX21ldGhvZF9zZXRfZ2VuZXJhdGVfZnVuY3Rpb247CisrCQlFTkdJTkVfc2V0X0VDREg7CisrCQlOQU1FX0NPTlNUUkFJTlRTX25ldzsKKysJCVNIQTI1Nl9Jbml0OworKwkJRUNfS0VZX2dldDBfcHVibGljX2tleTsKKysJCVBFTV93cml0ZV9iaW9fRUNfUFVCS0VZOworKwkJU1RPUkVfQVRUUl9JTkZPX3NldF9jc3RyOworKwkJU1RPUkVfbGlzdF9jcmxfbmV4dDsKKysJCVNUT1JFX0FUVFJfSU5GT19pbl9yYW5nZTsKKysJCUVDUGFyYW1ldGVyc19wcmludDsKKysJCVNUT1JFX21ldGhfc2V0X2RlbGV0ZV9mbjsKKysJCVNUT1JFX21ldGhvZF9zZXRfZGVsZXRlX2Z1bmN0aW9uOworKwkJU1RPUkVfbGlzdF9jZXJ0aWZpY2F0ZV9uZXh0OworKwkJQVNOMV9nZW5lcmF0ZV9uY29uZjsKKysJCUJVRl9tZW1kdXA7CisrCQlCTl9HRjJtX21vZF9tdWw7CisrCQlTVE9SRV9tZXRoX2dldF9saXN0X25leHRfZm47CisrCQlTVE9SRV9tZXRob2RfZ2V0X2xpc3RfbmV4dF9mdW5jdGlvbjsKKysJCVNUT1JFX0FUVFJfSU5GT19nZXQwX2RuOworKwkJU1RPUkVfbGlzdF9wcml2YXRlX2tleV9uZXh0OworKwkJRUNfR1JPVVBfc2V0X3NlZWQ7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXRfdHJ1c3Q7CisrCQlTVE9SRV9BVFRSX0lORk9fZnJlZTsKKysJCVNUT1JFX2dldF9wcml2YXRlX2tleTsKKysJCUVWUF9QS0VZX2dldF9hdHRyX2NvdW50OworKwkJU1RPUkVfQVRUUl9JTkZPX25ldzsKKysJCUVDX0dST1VQX2dldF9jdXJ2ZV9HRjJtOworKwkJU1RPUkVfbWV0aF9zZXRfcmV2b2tlX2ZuOworKwkJU1RPUkVfbWV0aG9kX3NldF9yZXZva2VfZnVuY3Rpb247CisrCQlTVE9SRV9zdG9yZV9udW1iZXI7CisrCQlCTl9pc19wcmltZV9leDsKKysJCVNUT1JFX3Jldm9rZV9wdWJsaWNfa2V5OworKwkJWDUwOV9TVE9SRV9DVFhfZ2V0MF9wYXJhbTsKKysJCVNUT1JFX2RlbGV0ZV9hcmJpdHJhcnk7CisrCQlQRU1fcmVhZF9YNTA5X0NFUlRfUEFJUjsKKysJCVg1MDlfU1RPUkVfc2V0X2RlcHRoOworKwkJRUNEU0FfZ2V0X2V4X2RhdGE7CisrCQlTSEEyMjQ7CisrCQlCSU9fZHVtcF9pbmRlbnRfZnA7CisrCQlFQ19LRVlfc2V0X2dyb3VwOworKwkJQlVGX3N0cm5kdXA7CisrCQlTVE9SRV9saXN0X2NlcnRpZmljYXRlX3N0YXJ0OworKwkJQk5fR0YybV9tb2Q7CisrCQlYNTA5X1JFUV9jaGVja19wcml2YXRlX2tleTsKKysJCUVDX0dST1VQX2dldF9zZWVkX2xlbjsKKysJCUVSUl9sb2FkX1NUT1JFX3N0cmluZ3M7CisrCQlQRU1fcmVhZF9iaW9fRUNfUFVCS0VZOworKwkJU1RPUkVfbGlzdF9wcml2YXRlX2tleV9lbmQ7CisrCQlpMmRfRUNfUFVCS0VZOworKwkJRUNEU0FfZ2V0X2RlZmF1bHRfbWV0aG9kOworKwkJQVNOMV9wdXRfZW9jOworKwkJWDUwOV9TVE9SRV9DVFhfZ2V0X2V4cGxpY2l0X3BvbGljeTsKKysJCVg1MDlfU1RPUkVfQ1RYX2dldF9leHBsX3BvbGljeTsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX3RhYmxlX2NsZWFudXA7CisrCQlTVE9SRV9tb2RpZnlfcHJpdmF0ZV9rZXk7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9mcmVlOworKwkJRUNfTUVUSE9EX2dldF9maWVsZF90eXBlOworKwkJRUNfR0ZwX25pc3RfbWV0aG9kOworKwkJU1RPUkVfbWV0aF9zZXRfbW9kaWZ5X2ZuOworKwkJU1RPUkVfbWV0aG9kX3NldF9tb2RpZnlfZnVuY3Rpb247CisrCQlTVE9SRV9wYXJzZV9hdHRyc19uZXh0OworKwkJRU5HSU5FX2xvYWRfcGFkbG9jazsKKysJCUVDX0dST1VQX3NldF9jdXJ2ZV9uYW1lOworKwkJWDUwOV9DRVJUX1BBSVJfaXQ7CisrCQlTVE9SRV9tZXRoX2dldF9yZXZva2VfZm47CisrCQlTVE9SRV9tZXRob2RfZ2V0X3Jldm9rZV9mdW5jdGlvbjsKKysJCVNUT1JFX21ldGhvZF9zZXRfZ2V0X2Z1bmN0aW9uOworKwkJU1RPUkVfbW9kaWZ5X251bWJlcjsKKysJCVNUT1JFX21ldGhvZF9nZXRfc3RvcmVfZnVuY3Rpb247CisrCQlTVE9SRV9zdG9yZV9wcml2YXRlX2tleTsKKysJCUJOX0dGMm1fbW9kX3Nxcl9hcnI7CisrCQlSU0Ffc2V0dXBfYmxpbmRpbmc7CisrCQlCSU9fc19kYXRhZ3JhbTsKKysJCVNUT1JFX01lbW9yeTsKKysJCXNrX2ZpbmRfZXg7CisrCQlFQ19HUk9VUF9zZXRfY3VydmVfR0YybTsKKysJCUVOR0lORV9zZXRfZGVmYXVsdF9FQ0RTQTsKKysJCVBPTElDWV9DT05TVFJBSU5UU19uZXc7CisrCQlCTl9HRjJtX21vZF9zcXJ0OworKwkJRUNESF9zZXRfZGVmYXVsdF9tZXRob2Q7CisrCQlFQ19LRVlfZ2VuZXJhdGVfa2V5OworKwkJU0hBMzg0X1VwZGF0ZTsKKysJCUJOX0dGMm1fYXJyMnBvbHk7CisrCQlTVE9SRV9tZXRob2RfZ2V0X2dldF9mdW5jdGlvbjsKKysJCVNUT1JFX21ldGhfc2V0X2NsZWFudXBfZm47CisrCQlTVE9SRV9tZXRob2Rfc2V0X2NsZWFudXBfZnVuY3Rpb247CisrCQlFQ19HUk9VUF9jaGVjazsKKysJCWQyaV9FQ1ByaXZhdGVLZXlfYmlvOworKwkJRUNfS0VZX2luc2VydF9rZXlfbWV0aG9kX2RhdGE7CisrCQlTVE9SRV9tZXRoX2dldF9sb2NrX3N0b3JlX2ZuOworKwkJU1RPUkVfbWV0aG9kX2dldF9sb2NrX3N0b3JlX2Z1bmN0aW9uOworKwkJWDUwOV9WRVJJRllfUEFSQU1fZ2V0X2RlcHRoOworKwkJU0hBMjI0X0ZpbmFsOworKwkJU1RPUkVfbWV0aF9zZXRfdXBkYXRlX3N0b3JlX2ZuOworKwkJU1RPUkVfbWV0aG9kX3NldF91cGRhdGVfc3RvcmVfZnVuY3Rpb247CisrCQlTSEEyMjRfVXBkYXRlOworKwkJZDJpX0VDUHJpdmF0ZUtleTsKKysJCUFTTjFfaXRlbV9uZGVmX2kyZDsKKysJCVNUT1JFX2RlbGV0ZV9wcml2YXRlX2tleTsKKysJCUVSUl9wb3BfdG9fbWFyazsKKysJCUVOR0lORV9yZWdpc3Rlcl9hbGxfU1RPUkU7CisrCQlYNTA5X3BvbGljeV9sZXZlbF9nZXQwX25vZGU7CisrCQlpMmRfUEtDUzdfTkRFRjsKKysJCUVDX0dST1VQX2dldF9kZWdyZWU7CisrCQlBU04xX2dlbmVyYXRlX3YzOworKwkJU1RPUkVfQVRUUl9JTkZPX21vZGlmeV9jc3RyOworKwkJWDUwOV9wb2xpY3lfdHJlZV9sZXZlbF9jb3VudDsKKysJCUJOX0dGMm1fYWRkOworKwkJRUNfS0VZX2dldDBfZ3JvdXA7CisrCQlTVE9SRV9nZW5lcmF0ZV9jcmw7CisrCQlTVE9SRV9zdG9yZV9wdWJsaWNfa2V5OworKwkJWDUwOV9DRVJUX1BBSVJfZnJlZTsKKysJCVNUT1JFX3Jldm9rZV9wcml2YXRlX2tleTsKKysJCUJOX25pc3RfbW9kXzIyNDsKKysJCVNIQTUxMl9GaW5hbDsKKysJCVNUT1JFX0FUVFJfSU5GT19tb2RpZnlfZG47CisrCQlTVE9SRV9tZXRoX2dldF9pbml0aWFsaXNlX2ZuOworKwkJU1RPUkVfbWV0aG9kX2dldF9pbml0aWFsaXNlX2Z1bmN0aW9uOworKwkJU1RPUkVfZGVsZXRlX251bWJlcjsKKysJCWkyZF9FQ19QVUJLRVlfYmlvOworKwkJQklPX2RncmFtX25vbl9mYXRhbF9lcnJvcjsKKysJCUVDX0dST1VQX2dldF9hc24xX2ZsYWc7CisrCQlTVE9SRV9BVFRSX0lORk9faW5fZXg7CisrCQlTVE9SRV9saXN0X2NybF9zdGFydDsKKysJCUVDREhfZ2V0X2V4X25ld19pbmRleDsKKysJCVNUT1JFX21ldGhfZ2V0X21vZGlmeV9mbjsKKysJCVNUT1JFX21ldGhvZF9nZXRfbW9kaWZ5X2Z1bmN0aW9uOworKwkJdjJpX0FTTjFfQklUX1NUUklORzsKKysJCVNUT1JFX3N0b3JlX2NlcnRpZmljYXRlOworKwkJT0JKX2JzZWFyY2hfZXg7CisrCQlYNTA5X1NUT1JFX0NUWF9zZXRfZGVmYXVsdDsKKysJCVNUT1JFX0FUVFJfSU5GT19zZXRfc2hhMXN0cjsKKysJCUJOX0dGMm1fbW9kX2ludjsKKysJCUJOX0dGMm1fbW9kX2V4cDsKKysJCVNUT1JFX21vZGlmeV9wdWJsaWNfa2V5OworKwkJU1RPUkVfbWV0aF9nZXRfbGlzdF9zdGFydF9mbjsKKysJCVNUT1JFX21ldGhvZF9nZXRfbGlzdF9zdGFydF9mdW5jdGlvbjsKKysJCUVDX0dST1VQX2dldDBfc2VlZDsKKysJCVNUT1JFX3N0b3JlX2FyYml0cmFyeTsKKysJCVNUT1JFX21ldGhfc2V0X3VubG9ja19zdG9yZV9mbjsKKysJCVNUT1JFX21ldGhvZF9zZXRfdW5sb2NrX3N0b3JlX2Z1bmN0aW9uOworKwkJQk5fR0YybV9tb2RfZGl2X2FycjsKKysJCUVOR0lORV9zZXRfRUNEU0E7CisrCQlTVE9SRV9jcmVhdGVfbWV0aG9kOworKwkJRUNQS1BhcmFtZXRlcnNfcHJpbnQ7CisrCQlFQ19LRVlfZ2V0MF9wcml2YXRlX2tleTsKKysJCVBFTV93cml0ZV9FQ19QVUJLRVk7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXQxOworKwkJRUNESF9zZXRfbWV0aG9kOworKwkJdjJpX0dFTkVSQUxfTkFNRV9leDsKKysJCUVDREhfc2V0X2V4X2RhdGE7CisrCQlTVE9SRV9nZW5lcmF0ZV9rZXk7CisrCQlCTl9uaXN0X21vZF81MjE7CisrCQlYNTA5X3BvbGljeV90cmVlX2dldDBfbGV2ZWw7CisrCQlFQ19HUk9VUF9zZXRfcG9pbnRfY29udmVyc2lvbl9mb3JtOworKwkJRUNfR1JPVVBfc2V0X3BvaW50X2NvbnZfZm9ybTsKKysJCVBFTV9yZWFkX0VDX1BVQktFWTsKKysJCWkyZF9FQ0RTQV9TSUc7CisrCQlFQ0RTQV9PcGVuU1NMOworKwkJU1RPUkVfZGVsZXRlX2NybDsKKysJCUVDX0tFWV9nZXRfZW5jX2ZsYWdzOworKwkJQVNOMV9jb25zdF9jaGVja19pbmZpbml0ZV9lbmQ7CisrCQlFVlBfUEtFWV9kZWxldGVfYXR0cjsKKysJCUVDRFNBX3NldF9kZWZhdWx0X21ldGhvZDsKKysJCUVDX1BPSU5UX3NldF9jb21wcmVzc2VkX2Nvb3JkaW5hdGVzX0dGMm07CisrCQlFQ19QT0lOVF9zZXRfY29tcHJfY29vcmRzX0dGMm07CisrCQlFQ19HUk9VUF9jbXA7CisrCQlTVE9SRV9yZXZva2VfY2VydGlmaWNhdGU7CisrCQlCTl9nZXQwX25pc3RfcHJpbWVfMjU2OworKwkJU1RPUkVfbWV0aF9nZXRfZGVsZXRlX2ZuOworKwkJU1RPUkVfbWV0aG9kX2dldF9kZWxldGVfZnVuY3Rpb247CisrCQlTSEEyMjRfSW5pdDsKKysJCVBFTV9yZWFkX0VDUHJpdmF0ZUtleTsKKysJCVNIQTUxMl9Jbml0OworKwkJU1RPUkVfcGFyc2VfYXR0cnNfZW5kcDsKKysJCUJOX3NldF9uZWdhdGl2ZTsKKysJCUVSUl9sb2FkX0VDRFNBX3N0cmluZ3M7CisrCQlFQ19HUk9VUF9nZXRfYmFzaXNfdHlwZTsKKysJCVNUT1JFX2xpc3RfcHVibGljX2tleV9uZXh0OworKwkJaTJ2X0FTTjFfQklUX1NUUklORzsKKysJCVNUT1JFX09CSkVDVF9mcmVlOworKwkJQk5fbmlzdF9tb2RfMzg0OworKwkJaTJkX1g1MDlfQ0VSVF9QQUlSOworKwkJUEVNX3dyaXRlX0VDUEtQYXJhbWV0ZXJzOworKwkJRUNESF9jb21wdXRlX2tleTsKKysJCVNUT1JFX0FUVFJfSU5GT19nZXQwX3NoYTFzdHI7CisrCQlFTkdJTkVfcmVnaXN0ZXJfYWxsX0VDREg7CisrCQlwcXVldWVfcG9wOworKwkJU1RPUkVfQVRUUl9JTkZPX2dldDBfY3N0cjsKKysJCVBPTElDWV9DT05TVFJBSU5UU19pdDsKKysJCVNUT1JFX2dldF9leF9uZXdfaW5kZXg7CisrCQlFVlBfUEtFWV9nZXRfYXR0cl9ieV9PQko7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9hZGQwX3BvbGljeTsKKysJCUJOX0dGMm1fbW9kX3NvbHZlX3F1YWQ7CisrCQlTSEEyNTY7CisrCQlpMmRfRUNQcml2YXRlS2V5X2ZwOworKwkJWDUwOV9wb2xpY3lfdHJlZV9nZXQwX3VzZXJfcG9saWNpZXM7CisrCQlYNTA5X3BjeV90cmVlX2dldDBfdXNyX3BvbGljaWVzOworKwkJT1BFTlNTTF9ESVJfcmVhZDsKKysJCUVOR0lORV9yZWdpc3Rlcl9hbGxfRUNEU0E7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9sb29rdXA7CisrCQlFQ19QT0lOVF9nZXRfYWZmaW5lX2Nvb3JkaW5hdGVzX0dGMm07CisrCQlFQ19QT0lOVF9nZXRfYWZmaW5lX2Nvb3Jkc19HRjJtOworKwkJRUNfR1JPVVBfZHVwOworKwkJRU5HSU5FX2dldF9kZWZhdWx0X0VDRFNBOworKwkJRUNfS0VZX25ldzsKKysJCVNIQTI1Nl9UcmFuc2Zvcm07CisrCQlFQ19LRVlfc2V0X2VuY19mbGFnczsKKysJCUVDRFNBX3ZlcmlmeTsKKysJCUVDX1BPSU5UX3BvaW50MmhleDsKKysJCUVOR0lORV9nZXRfU1RPUkU7CisrCQlTSEE1MTI7CisrCQlTVE9SRV9nZXRfY2VydGlmaWNhdGU7CisrCQlFQ0RTQV9kb19zaWduX2V4OworKwkJRUNEU0FfZG9fdmVyaWZ5OworKwkJZDJpX0VDUHJpdmF0ZUtleV9mcDsKKysJCVNUT1JFX2RlbGV0ZV9jZXJ0aWZpY2F0ZTsKKysJCVNIQTUxMl9UcmFuc2Zvcm07CisrCQlYNTA5X1NUT1JFX3NldDFfcGFyYW07CisrCQlTVE9SRV9tZXRob2RfZ2V0X2N0cmxfZnVuY3Rpb247CisrCQlTVE9SRV9mcmVlOworKwkJUEVNX3dyaXRlX0VDUHJpdmF0ZUtleTsKKysJCVNUT1JFX21ldGhfZ2V0X3VubG9ja19zdG9yZV9mbjsKKysJCVNUT1JFX21ldGhvZF9nZXRfdW5sb2NrX3N0b3JlX2Z1bmN0aW9uOworKwkJU1RPUkVfZ2V0X2V4X2RhdGE7CisrCQlFQ19LRVlfc2V0X3B1YmxpY19rZXk7CisrCQlQRU1fcmVhZF9FQ1BLUGFyYW1ldGVyczsKKysJCVg1MDlfQ0VSVF9QQUlSX25ldzsKKysJCUVOR0lORV9yZWdpc3Rlcl9TVE9SRTsKKysJCVJTQV9nZW5lcmF0ZV9rZXlfZXg7CisrCQlEU0FfZ2VuZXJhdGVfcGFyYW1ldGVyc19leDsKKysJCUVDUGFyYW1ldGVyc19wcmludF9mcDsKKysJCVg1MDlWM19OQU1FX2Zyb21fc2VjdGlvbjsKKysJCUVWUF9QS0VZX2FkZDFfYXR0cjsKKysJCVNUT1JFX21vZGlmeV9jcmw7CisrCQlTVE9SRV9saXN0X3ByaXZhdGVfa2V5X3N0YXJ0OworKwkJUE9MSUNZX01BUFBJTkdTX2l0OworKwkJR0VORVJBTF9TVUJUUkVFX2l0OworKwkJRUNfR1JPVVBfZ2V0X2N1cnZlX25hbWU7CisrCQlQRU1fd3JpdGVfWDUwOV9DRVJUX1BBSVI7CisrCQlCSU9fZHVtcF9pbmRlbnRfY2I7CisrCQlkMmlfWDUwOV9DRVJUX1BBSVI7CisrCQlTVE9SRV9saXN0X3ByaXZhdGVfa2V5X2VuZHA7CisrCQlhc24xX2NvbnN0X0ZpbmlzaDsKKysJCWkyZF9FQ19QVUJLRVlfZnA7CisrCQlCTl9uaXN0X21vZF8yNTY7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9hZGQwX3RhYmxlOworKwkJcHF1ZXVlX2ZyZWU7CisrCQlCTl9CTElORElOR19jcmVhdGVfcGFyYW07CisrCQlFQ0RTQV9zaXplOworKwkJZDJpX0VDX1BVQktFWV9iaW87CisrCQlCTl9nZXQwX25pc3RfcHJpbWVfNTIxOworKwkJU1RPUkVfQVRUUl9JTkZPX21vZGlmeV9zaGExc3RyOworKwkJQk5fZ2VuZXJhdGVfcHJpbWVfZXg7CisrCQlFQ19HUk9VUF9uZXdfYnlfY3VydmVfbmFtZTsKKysJCVNIQTI1Nl9GaW5hbDsKKysJCURIX2dlbmVyYXRlX3BhcmFtZXRlcnNfZXg7CisrCQlQRU1fcmVhZF9iaW9fRUNQcml2YXRlS2V5OworKwkJU1RPUkVfbWV0aF9nZXRfY2xlYW51cF9mbjsKKysJCVNUT1JFX21ldGhvZF9nZXRfY2xlYW51cF9mdW5jdGlvbjsKKysJCUVOR0lORV9nZXRfRUNESDsKKysJCWQyaV9FQ0RTQV9TSUc7CisrCQlCTl9pc19wcmltZV9mYXN0dGVzdF9leDsKKysJCUVDRFNBX3NpZ247CisrCQlYNTA5X3BvbGljeV9jaGVjazsKKysJCUVWUF9QS0VZX2dldF9hdHRyX2J5X05JRDsKKysJCVNUT1JFX3NldF9leF9kYXRhOworKwkJRU5HSU5FX2dldF9FQ0RTQTsKKysJCUVWUF9lY2RzYTsKKysJCUJOX0JMSU5ESU5HX2dldF9mbGFnczsKKysJCVBLQ1MxMl9hZGRfY2VydDsKKysJCVNUT1JFX09CSkVDVF9uZXc7CisrCQlFUlJfbG9hZF9FQ0RIX3N0cmluZ3M7CisrCQlFQ19LRVlfZHVwOworKwkJRVZQX0NJUEhFUl9DVFhfcmFuZF9rZXk7CisrCQlFQ0RTQV9zZXRfbWV0aG9kOworKwkJYTJpX0lQQUREUkVTU19OQzsKKysJCWQyaV9FQ1BhcmFtZXRlcnM7CisrCQlTVE9SRV9saXN0X2NlcnRpZmljYXRlX2VuZDsKKysJCVNUT1JFX2dldF9jcmw7CisrCQlYNTA5X1BPTElDWV9OT0RFX3ByaW50OworKwkJU0hBMzg0X0luaXQ7CisrCQlFQ19HRjJtX3NpbXBsZV9tZXRob2Q7CisrCQlFQ0RTQV9zZXRfZXhfZGF0YTsKKysJCVNIQTM4NF9GaW5hbDsKKysJCVBLQ1M3X3NldF9kaWdlc3Q7CisrCQlFQ19LRVlfcHJpbnQ7CisrCQlTVE9SRV9tZXRoX3NldF9sb2NrX3N0b3JlX2ZuOworKwkJU1RPUkVfbWV0aG9kX3NldF9sb2NrX3N0b3JlX2Z1bmN0aW9uOworKwkJRUNEU0FfZ2V0X2V4X25ld19pbmRleDsKKysJCVNIQTM4NDsKKysJCVBPTElDWV9NQVBQSU5HX25ldzsKKysJCVNUT1JFX2xpc3RfY2VydGlmaWNhdGVfZW5kcDsKKysJCVg1MDlfU1RPUkVfQ1RYX2dldDBfcG9saWN5X3RyZWU7CisrCQlFQ19HUk9VUF9zZXRfYXNuMV9mbGFnOworKwkJRUNfS0VZX2NoZWNrX2tleTsKKysJCWQyaV9FQ19QVUJLRVlfZnA7CisrCQlQS0NTN19zZXQwX3R5cGVfb3RoZXI7CisrCQlQRU1fcmVhZF9iaW9fWDUwOV9DRVJUX1BBSVI7CisrCQlwcXVldWVfbmV4dDsKKysJCVNUT1JFX21ldGhfZ2V0X2xpc3RfZW5kX2ZuOworKwkJU1RPUkVfbWV0aG9kX2dldF9saXN0X2VuZF9mdW5jdGlvbjsKKysJCUVWUF9QS0VZX2FkZDFfYXR0cl9ieV9PQko7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXRfdGltZTsKKysJCXBxdWV1ZV9uZXc7CisrCQlFTkdJTkVfc2V0X2RlZmF1bHRfRUNESDsKKysJCVNUT1JFX25ld19tZXRob2Q7CisrCQlQS0NTMTJfYWRkX2tleTsKKysJCURTT19tZXJnZTsKKysJCUVDX1BPSU5UX2hleDJwb2ludDsKKysJCUJJT19kdW1wX2NiOworKwkJU0hBMjU2X1VwZGF0ZTsKKysJCXBxdWV1ZV9pbnNlcnQ7CisrCQlwaXRlbV9mcmVlOworKwkJQk5fR0YybV9tb2RfaW52X2FycjsKKysJCUVOR0lORV91bnJlZ2lzdGVyX0VDRFNBOworKwkJQk5fQkxJTkRJTkdfc2V0X3RocmVhZF9pZDsKKysJCWdldF9yZmMzNTI2X3ByaW1lXzgxOTI7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9jbGVhcl9mbGFnczsKKysJCWdldF9yZmMyNDA5X3ByaW1lXzEwMjQ7CisrCQlESF9jaGVja19wdWJfa2V5OworKwkJZ2V0X3JmYzM1MjZfcHJpbWVfMjA0ODsKKysJCWdldF9yZmMzNTI2X3ByaW1lXzYxNDQ7CisrCQlnZXRfcmZjMzUyNl9wcmltZV8xNTM2OworKwkJZ2V0X3JmYzM1MjZfcHJpbWVfMzA3MjsKKysJCWdldF9yZmMzNTI2X3ByaW1lXzQwOTY7CisrCQlnZXRfcmZjMjQwOV9wcmltZV83Njg7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9nZXRfZmxhZ3M7CisrCQlFVlBfQ0lQSEVSX0NUWF9uZXc7CisrCQlFVlBfQ0lQSEVSX0NUWF9mcmVlOworKwkJQ2FtZWxsaWFfY2JjX2VuY3J5cHQ7CisrCQlDYW1lbGxpYV9jZmIxMjhfZW5jcnlwdDsKKysJCUNhbWVsbGlhX2NmYjFfZW5jcnlwdDsKKysJCUNhbWVsbGlhX2NmYjhfZW5jcnlwdDsKKysJCUNhbWVsbGlhX2N0cjEyOF9lbmNyeXB0OworKwkJQ2FtZWxsaWFfY2Zicl9lbmNyeXB0X2Jsb2NrOworKwkJQ2FtZWxsaWFfZGVjcnlwdDsKKysJCUNhbWVsbGlhX2VjYl9lbmNyeXB0OworKwkJQ2FtZWxsaWFfZW5jcnlwdDsKKysJCUNhbWVsbGlhX29mYjEyOF9lbmNyeXB0OworKwkJQ2FtZWxsaWFfc2V0X2tleTsKKysJCUVWUF9jYW1lbGxpYV8xMjhfY2JjOworKwkJRVZQX2NhbWVsbGlhXzEyOF9jZmIxMjg7CisrCQlFVlBfY2FtZWxsaWFfMTI4X2NmYjE7CisrCQlFVlBfY2FtZWxsaWFfMTI4X2NmYjg7CisrCQlFVlBfY2FtZWxsaWFfMTI4X2VjYjsKKysJCUVWUF9jYW1lbGxpYV8xMjhfb2ZiOworKwkJRVZQX2NhbWVsbGlhXzE5Ml9jYmM7CisrCQlFVlBfY2FtZWxsaWFfMTkyX2NmYjEyODsKKysJCUVWUF9jYW1lbGxpYV8xOTJfY2ZiMTsKKysJCUVWUF9jYW1lbGxpYV8xOTJfY2ZiODsKKysJCUVWUF9jYW1lbGxpYV8xOTJfZWNiOworKwkJRVZQX2NhbWVsbGlhXzE5Ml9vZmI7CisrCQlFVlBfY2FtZWxsaWFfMjU2X2NiYzsKKysJCUVWUF9jYW1lbGxpYV8yNTZfY2ZiMTI4OworKwkJRVZQX2NhbWVsbGlhXzI1Nl9jZmIxOworKwkJRVZQX2NhbWVsbGlhXzI1Nl9jZmI4OworKwkJRVZQX2NhbWVsbGlhXzI1Nl9lY2I7CisrCQlFVlBfY2FtZWxsaWFfMjU2X29mYjsKKysJCWEyaV9pcGFkZDsKKysJCUFTSWRlbnRpZmllcnNfZnJlZTsKKysJCWkyZF9BU0lkT3JSYW5nZTsKKysJCUVWUF9DSVBIRVJfYmxvY2tfc2l6ZTsKKysJCXYzX2FzaWRfaXNfY2Fub25pY2FsOworKwkJSVBBZGRyZXNzQ2hvaWNlX2ZyZWU7CisrCQlFVlBfQ0lQSEVSX0NUWF9zZXRfYXBwX2RhdGE7CisrCQlCSU9fc2V0X2NhbGxiYWNrX2FyZzsKKysJCXYzX2FkZHJfYWRkX3ByZWZpeDsKKysJCUlQQWRkcmVzc09yUmFuZ2VfaXQ7CisrCQlCSU9fc2V0X2ZsYWdzOworKwkJQVNJZGVudGlmaWVyc19pdDsKKysJCXYzX2FkZHJfZ2V0X3JhbmdlOworKwkJQklPX21ldGhvZF90eXBlOworKwkJdjNfYWRkcl9pbmhlcml0czsKKysJCUlQQWRkcmVzc0Nob2ljZV9pdDsKKysJCUFFU19pZ2VfZW5jcnlwdDsKKysJCXYzX2FkZHJfYWRkX3JhbmdlOworKwkJRVZQX0NJUEhFUl9DVFhfbmlkOworKwkJZDJpX0FTUmFuZ2U7CisrCQl2M19hZGRyX2FkZF9pbmhlcml0OworKwkJdjNfYXNpZF9hZGRfaWRfb3JfcmFuZ2U7CisrCQl2M19hZGRyX3ZhbGlkYXRlX3Jlc291cmNlX3NldDsKKysJCUVWUF9DSVBIRVJfaXZfbGVuZ3RoOworKwkJRVZQX01EX3R5cGU7CisrCQl2M19hc2lkX2Nhbm9uaXplOworKwkJSVBBZGRyZXNzUmFuZ2VfZnJlZTsKKysJCXYzX2FzaWRfYWRkX2luaGVyaXQ7CisrCQlFVlBfQ0lQSEVSX0NUWF9rZXlfbGVuZ3RoOworKwkJSVBBZGRyZXNzUmFuZ2VfbmV3OworKwkJQVNJZE9yUmFuZ2VfbmV3OworKwkJRVZQX01EX3NpemU7CisrCQlFVlBfTURfQ1RYX3Rlc3RfZmxhZ3M7CisrCQlCSU9fY2xlYXJfZmxhZ3M7CisrCQlpMmRfQVNSYW5nZTsKKysJCUlQQWRkcmVzc1JhbmdlX2l0OworKwkJSVBBZGRyZXNzQ2hvaWNlX25ldzsKKysJCUFTSWRlbnRpZmllckNob2ljZV9uZXc7CisrCQlBU1JhbmdlX2ZyZWU7CisrCQlFVlBfTURfcGtleV90eXBlOworKwkJRVZQX01EX0NUWF9jbGVhcl9mbGFnczsKKysJCUlQQWRkcmVzc0ZhbWlseV9mcmVlOworKwkJaTJkX0lQQWRkcmVzc0ZhbWlseTsKKysJCUlQQWRkcmVzc09yUmFuZ2VfbmV3OworKwkJRVZQX0NJUEhFUl9mbGFnczsKKysJCXYzX2FzaWRfdmFsaWRhdGVfcmVzb3VyY2Vfc2V0OworKwkJZDJpX0lQQWRkcmVzc1JhbmdlOworKwkJQUVTX2JpX2lnZV9lbmNyeXB0OworKwkJQklPX2dldF9jYWxsYmFjazsKKysJCUlQQWRkcmVzc09yUmFuZ2VfZnJlZTsKKysJCXYzX2FkZHJfc3Vic2V0OworKwkJZDJpX0lQQWRkcmVzc0ZhbWlseTsKKysJCXYzX2FzaWRfc3Vic2V0OworKwkJQklPX3Rlc3RfZmxhZ3M7CisrCQlpMmRfQVNJZGVudGlmaWVyQ2hvaWNlOworKwkJQVNSYW5nZV9pdDsKKysJCWQyaV9BU0lkZW50aWZpZXJzOworKwkJQVNSYW5nZV9uZXc7CisrCQlkMmlfSVBBZGRyZXNzQ2hvaWNlOworKwkJdjNfYWRkcl9nZXRfYWZpOworKwkJRVZQX0NJUEhFUl9rZXlfbGVuZ3RoOworKwkJRVZQX0NpcGhlcjsKKysJCWkyZF9JUEFkZHJlc3NPclJhbmdlOworKwkJQVNJZE9yUmFuZ2VfaXQ7CisrCQlFVlBfQ0lQSEVSX25pZDsKKysJCWkyZF9JUEFkZHJlc3NDaG9pY2U7CisrCQlFVlBfQ0lQSEVSX0NUWF9ibG9ja19zaXplOworKwkJQVNJZGVudGlmaWVyc19uZXc7CisrCQl2M19hZGRyX3ZhbGlkYXRlX3BhdGg7CisrCQlJUEFkZHJlc3NGYW1pbHlfbmV3OworKwkJRVZQX01EX0NUWF9zZXRfZmxhZ3M7CisrCQl2M19hZGRyX2lzX2Nhbm9uaWNhbDsKKysJCWkyZF9JUEFkZHJlc3NSYW5nZTsKKysJCUlQQWRkcmVzc0ZhbWlseV9pdDsKKysJCXYzX2FzaWRfaW5oZXJpdHM7CisrCQlFVlBfQ0lQSEVSX0NUWF9jaXBoZXI7CisrCQlFVlBfQ0lQSEVSX0NUWF9nZXRfYXBwX2RhdGE7CisrCQlFVlBfTURfYmxvY2tfc2l6ZTsKKysJCUVWUF9DSVBIRVJfQ1RYX2ZsYWdzOworKwkJdjNfYXNpZF92YWxpZGF0ZV9wYXRoOworKwkJZDJpX0lQQWRkcmVzc09yUmFuZ2U7CisrCQl2M19hZGRyX2Nhbm9uaXplOworKwkJQVNJZGVudGlmaWVyQ2hvaWNlX2l0OworKwkJRVZQX01EX0NUWF9tZDsKKysJCWQyaV9BU0lkZW50aWZpZXJDaG9pY2U7CisrCQlCSU9fbWV0aG9kX25hbWU7CisrCQlFVlBfQ0lQSEVSX0NUWF9pdl9sZW5ndGg7CisrCQlBU0lkT3JSYW5nZV9mcmVlOworKwkJQVNJZGVudGlmaWVyQ2hvaWNlX2ZyZWU7CisrCQlCSU9fZ2V0X2NhbGxiYWNrX2FyZzsKKysJCUJJT19zZXRfY2FsbGJhY2s7CisrCQlkMmlfQVNJZE9yUmFuZ2U7CisrCQlpMmRfQVNJZGVudGlmaWVyczsKKysJCVNFRURfZGVjcnlwdDsKKysJCVNFRURfZW5jcnlwdDsKKysJCVNFRURfY2JjX2VuY3J5cHQ7CisrCQlFVlBfc2VlZF9vZmI7CisrCQlTRUVEX2NmYjEyOF9lbmNyeXB0OworKwkJU0VFRF9vZmIxMjhfZW5jcnlwdDsKKysJCUVWUF9zZWVkX2NiYzsKKysJCVNFRURfZWNiX2VuY3J5cHQ7CisrCQlFVlBfc2VlZF9lY2I7CisrCQlTRUVEX3NldF9rZXk7CisrCQlFVlBfc2VlZF9jZmIxMjg7CisrCQlYNTA5X0VYVEVOU0lPTlNfaXQ7CisrCQlYNTA5X2dldDFfb2NzcDsKKysJCU9DU1BfUkVRX0NUWF9mcmVlOworKwkJaTJkX1g1MDlfRVhURU5TSU9OUzsKKysJCU9DU1Bfc2VuZHJlcV9uYmlvOworKwkJT0NTUF9zZW5kcmVxX25ldzsKKysJCWQyaV9YNTA5X0VYVEVOU0lPTlM7CisrCQlYNTA5X0FMR09SU19pdDsKKysJCVg1MDlfQUxHT1JfZ2V0MDsKKysJCVg1MDlfQUxHT1Jfc2V0MDsKKysJCUFFU191bndyYXBfa2V5OworKwkJQUVTX3dyYXBfa2V5OworKwkJWDUwOWF0X2dldDBfZGF0YV9ieV9PQko7CisrCQlBU04xX1RZUEVfc2V0MTsKKysJCUFTTjFfU1RSSU5HX3NldDA7CisrCQlpMmRfWDUwOV9BTEdPUlM7CisrCQlCSU9fZl96bGliOworKwkJQ09NUF96bGliX2NsZWFudXA7CisrCQlkMmlfWDUwOV9BTEdPUlM7CisrCQlDTVNfUmVjZWlwdFJlcXVlc3RfZnJlZTsKKysJCVBFTV93cml0ZV9DTVM7CisrCQlDTVNfYWRkMF9DZXJ0aWZpY2F0ZUNob2ljZXM7CisrCQlDTVNfdW5zaWduZWRfYWRkMV9hdHRyX2J5X09CSjsKKysJCUVSUl9sb2FkX0NNU19zdHJpbmdzOworKwkJQ01TX3NpZ25fcmVjZWlwdDsKKysJCWkyZF9DTVNfQ29udGVudEluZm87CisrCQlDTVNfc2lnbmVkX2RlbGV0ZV9hdHRyOworKwkJZDJpX0NNU19iaW87CisrCQlDTVNfdW5zaWduZWRfZ2V0X2F0dHJfYnlfTklEOworKwkJQ01TX3ZlcmlmeTsKKysJCVNNSU1FX3JlYWRfQ01TOworKwkJQ01TX2RlY3J5cHRfc2V0MV9rZXk7CisrCQlDTVNfU2lnbmVySW5mb19nZXQwX2FsZ3M7CisrCQlDTVNfYWRkMV9jZXJ0OworKwkJQ01TX3NldF9kZXRhY2hlZDsKKysJCUNNU19lbmNyeXB0OworKwkJQ01TX0VudmVsb3BlZERhdGFfY3JlYXRlOworKwkJQ01TX3VuY29tcHJlc3M7CisrCQlDTVNfYWRkMF9jcmw7CisrCQlDTVNfU2lnbmVySW5mb192ZXJpZnlfY29udGVudDsKKysJCUNNU191bnNpZ25lZF9nZXQwX2RhdGFfYnlfT0JKOworKwkJUEVNX3dyaXRlX2Jpb19DTVM7CisrCQlDTVNfdW5zaWduZWRfZ2V0X2F0dHI7CisrCQlDTVNfUmVjaXBpZW50SW5mb19rdHJpX2NlcnRfY21wOworKwkJQ01TX1JlY2lwaWVudEluZm9fa3RyaV9nZXQwX2FsZ3M7CisrCQlDTVNfUmVjaXBJbmZvX2t0cmlfZ2V0MF9hbGdzOworKwkJQ01TX0NvbnRlbnRJbmZvX2ZyZWU7CisrCQlDTVNfZmluYWw7CisrCQlDTVNfYWRkX3NpbXBsZV9zbWltZWNhcDsKKysJCUNNU19TaWduZXJJbmZvX3ZlcmlmeTsKKysJCUNNU19kYXRhOworKwkJQ01TX0NvbnRlbnRJbmZvX2l0OworKwkJZDJpX0NNU19SZWNlaXB0UmVxdWVzdDsKKysJCUNNU19jb21wcmVzczsKKysJCUNNU19kaWdlc3RfY3JlYXRlOworKwkJQ01TX1NpZ25lckluZm9fY2VydF9jbXA7CisrCQlDTVNfU2lnbmVySW5mb19zaWduOworKwkJQ01TX2RhdGFfY3JlYXRlOworKwkJaTJkX0NNU19iaW87CisrCQlDTVNfRW5jcnlwdGVkRGF0YV9zZXQxX2tleTsKKysJCUNNU19kZWNyeXB0OworKwkJaW50X3NtaW1lX3dyaXRlX0FTTjE7CisrCQlDTVNfdW5zaWduZWRfZGVsZXRlX2F0dHI7CisrCQlDTVNfdW5zaWduZWRfZ2V0X2F0dHJfY291bnQ7CisrCQlDTVNfYWRkX3NtaW1lY2FwOworKwkJUEVNX3JlYWRfQ01TOworKwkJQ01TX3NpZ25lZF9nZXRfYXR0cl9ieV9PQko7CisrCQlkMmlfQ01TX0NvbnRlbnRJbmZvOworKwkJQ01TX2FkZF9zdGFuZGFyZF9zbWltZWNhcDsKKysJCUNNU19Db250ZW50SW5mb19uZXc7CisrCQlDTVNfUmVjaXBpZW50SW5mb190eXBlOworKwkJQ01TX2dldDBfdHlwZTsKKysJCUNNU19pc19kZXRhY2hlZDsKKysJCUNNU19zaWduOworKwkJQ01TX3NpZ25lZF9hZGQxX2F0dHI7CisrCQlDTVNfdW5zaWduZWRfZ2V0X2F0dHJfYnlfT0JKOworKwkJU01JTUVfd3JpdGVfQ01TOworKwkJQ01TX0VuY3J5cHRlZERhdGFfZGVjcnlwdDsKKysJCUNNU19nZXQwX1JlY2lwaWVudEluZm9zOworKwkJQ01TX2FkZDBfUmV2b2NhdGlvbkluZm9DaG9pY2U7CisrCQlDTVNfZGVjcnlwdF9zZXQxX3BrZXk7CisrCQlDTVNfU2lnbmVySW5mb19zZXQxX3NpZ25lcl9jZXJ0OworKwkJQ01TX2dldDBfc2lnbmVyczsKKysJCUNNU19SZWNlaXB0UmVxdWVzdF9nZXQwX3ZhbHVlczsKKysJCUNNU19zaWduZWRfZ2V0MF9kYXRhX2J5X09CSjsKKysJCUNNU19nZXQwX1NpZ25lckluZm9zOworKwkJQ01TX2FkZDBfY2VydDsKKysJCUNNU19FbmNyeXB0ZWREYXRhX2VuY3J5cHQ7CisrCQlDTVNfZGlnZXN0X3ZlcmlmeTsKKysJCUNNU19zZXQxX3NpZ25lcnNfY2VydHM7CisrCQlDTVNfc2lnbmVkX2dldF9hdHRyOworKwkJQ01TX1JlY2lwaWVudEluZm9fc2V0MF9rZXk7CisrCQlDTVNfU2lnbmVkRGF0YV9pbml0OworKwkJQ01TX1JlY2lwaWVudEluZm9fa2VrcmlfZ2V0MF9pZDsKKysJCUNNU192ZXJpZnlfcmVjZWlwdDsKKysJCUNNU19SZWNlaXB0UmVxdWVzdF9pdDsKKysJCVBFTV9yZWFkX2Jpb19DTVM7CisrCQlDTVNfZ2V0MV9jcmxzOworKwkJQ01TX2FkZDBfcmVjaXBpZW50X2tleTsKKysJCVNNSU1FX3JlYWRfQVNOMTsKKysJCUNNU19SZWNlaXB0UmVxdWVzdF9uZXc7CisrCQlDTVNfZ2V0MF9jb250ZW50OworKwkJQ01TX2dldDFfUmVjZWlwdFJlcXVlc3Q7CisrCQlDTVNfc2lnbmVkX2FkZDFfYXR0cl9ieV9PQko7CisrCQlDTVNfUmVjaXBpZW50SW5mb19rZWtyaV9pZF9jbXA7CisrCQlDTVNfYWRkMV9SZWNlaXB0UmVxdWVzdDsKKysJCUNNU19TaWduZXJJbmZvX2dldDBfc2lnbmVyX2lkOworKwkJQ01TX3Vuc2lnbmVkX2FkZDFfYXR0cl9ieV9OSUQ7CisrCQlDTVNfdW5zaWduZWRfYWRkMV9hdHRyOworKwkJQ01TX3NpZ25lZF9nZXRfYXR0cl9ieV9OSUQ7CisrCQlDTVNfZ2V0MV9jZXJ0czsKKysJCUNNU19zaWduZWRfYWRkMV9hdHRyX2J5X05JRDsKKysJCUNNU191bnNpZ25lZF9hZGQxX2F0dHJfYnlfdHh0OworKwkJQ01TX2RhdGFGaW5hbDsKKysJCUNNU19SZWNpcGllbnRJbmZvX2t0cmlfZ2V0MF9zaWduZXJfaWQ7CisrCQlDTVNfUmVjaXBJbmZvX2t0cmlfZ2V0MF9zaWdyX2lkOworKwkJaTJkX0NNU19SZWNlaXB0UmVxdWVzdDsKKysJCUNNU19hZGQxX3JlY2lwaWVudF9jZXJ0OworKwkJQ01TX2RhdGFJbml0OworKwkJQ01TX3NpZ25lZF9hZGQxX2F0dHJfYnlfdHh0OworKwkJQ01TX1JlY2lwaWVudEluZm9fZGVjcnlwdDsKKysJCUNNU19zaWduZWRfZ2V0X2F0dHJfY291bnQ7CisrCQlDTVNfZ2V0MF9lQ29udGVudFR5cGU7CisrCQlDTVNfc2V0MV9lQ29udGVudFR5cGU7CisrCQlDTVNfUmVjZWlwdFJlcXVlc3RfY3JlYXRlMDsKKysJCUNNU19hZGQxX3NpZ25lcjsKKysJCUNNU19SZWNpcGllbnRJbmZvX3NldDBfcGtleTsKKysJCUVOR0lORV9zZXRfbG9hZF9zc2xfY2xpZW50X2NlcnRfZnVuY3Rpb247CisrCQlFTkdJTkVfc2V0X2xkX3NzbF9jbG50X2NlcnRfZm47CisrCQlFTkdJTkVfZ2V0X3NzbF9jbGllbnRfY2VydF9mdW5jdGlvbjsKKysJCUVOR0lORV9nZXRfc3NsX2NsaWVudF9jZXJ0X2ZuOworKwkJRU5HSU5FX2xvYWRfc3NsX2NsaWVudF9jZXJ0OworKwkJRU5HSU5FX2xvYWRfY2FwaTsKKysJCU9QRU5TU0xfaXNzZXJ2aWNlOworKwkJRklQU19kc2Ffc2lnX2RlY29kZTsKKysJCUVWUF9DSVBIRVJfQ1RYX2NsZWFyX2ZsYWdzOworKwkJRklQU19yYW5kX3N0YXR1czsKKysJCUZJUFNfcmFuZF9zZXRfa2V5OworKwkJQ1JZUFRPX3NldF9tZW1faW5mb19mdW5jdGlvbnM7CisrCQlSU0FfWDkzMV9nZW5lcmF0ZV9rZXlfZXg7CisrCQlpbnRfRVJSX3NldF9zdGF0ZV9mdW5jOworKwkJaW50X0VWUF9NRF9zZXRfZW5naW5lX2NhbGxiYWNrczsKKysJCWludF9DUllQVE9fc2V0X2RvX2R5bmxvY2tfY2FsbGJhY2s7CisrCQlGSVBTX3JuZ19zdGljazsKKysJCUVWUF9DSVBIRVJfQ1RYX3NldF9mbGFnczsKKysJCUJOX1g5MzFfZ2VuZXJhdGVfcHJpbWVfZXg7CisrCQlGSVBTX3NlbGZ0ZXN0X2NoZWNrOworKwkJRklQU19yYW5kX3NldF9kdDsKKysJCUNSWVBUT19kYmdfcG9wX2luZm87CisrCQlGSVBTX2RzYV9mcmVlOworKwkJUlNBX1g5MzFfZGVyaXZlX2V4OworKwkJRklQU19yc2FfbmV3OworKwkJRklQU19yYW5kX2J5dGVzOworKwkJZmlwc19jaXBoZXJfdGVzdDsKKysJCUVWUF9DSVBIRVJfQ1RYX3Rlc3RfZmxhZ3M7CisrCQlDUllQVE9fbWFsbG9jX2RlYnVnX2luaXQ7CisrCQlDUllQVE9fZGJnX3B1c2hfaW5mbzsKKysJCUZJUFNfY29ycnVwdF9yc2Ffa2V5Z2VuOworKwkJRklQU19kaF9uZXc7CisrCQlGSVBTX2NvcnJ1cHRfZHNhX2tleWdlbjsKKysJCUZJUFNfZGhfZnJlZTsKKysJCWZpcHNfcGtleV9zaWduYXR1cmVfdGVzdDsKKysJCUVWUF9hZGRfYWxnX21vZHVsZTsKKysJCWludF9SQU5EX2luaXRfZW5naW5lX2NhbGxiYWNrczsKKysJCWludF9FVlBfQ0lQSEVSX3NldF9lbmdpbmVfY2FsbGJhY2tzOworKwkJaW50X0VWUF9NRF9pbml0X2VuZ2luZV9jYWxsYmFja3M7CisrCQlGSVBTX3JhbmRfdGVzdF9tb2RlOworKwkJRklQU19yYW5kX3Jlc2V0OworKwkJRklQU19kc2FfbmV3OworKwkJaW50X1JBTkRfc2V0X2NhbGxiYWNrczsKKysJCUJOX1g5MzFfZGVyaXZlX3ByaW1lX2V4OworKwkJaW50X0VSUl9saWJfaW5pdDsKKysJCWludF9FVlBfQ0lQSEVSX2luaXRfZW5naW5lX2NhbGxiYWNrczsKKysJCUZJUFNfcnNhX2ZyZWU7CisrCQlGSVBTX2RzYV9zaWdfZW5jb2RlOworKwkJQ1JZUFRPX2RiZ19yZW1vdmVfYWxsX2luZm87CisrCQlPUEVOU1NMX2luaXQ7CisrCQlDUllQVE9fc3RyZHVwOworKwkJSlBBS0VfU1RFUDNBX3Byb2Nlc3M7CisrCQlKUEFLRV9TVEVQMV9yZWxlYXNlOworKwkJSlBBS0VfZ2V0X3NoYXJlZF9rZXk7CisrCQlKUEFLRV9TVEVQM0JfaW5pdDsKKysJCUpQQUtFX1NURVAxX2dlbmVyYXRlOworKwkJSlBBS0VfU1RFUDFfaW5pdDsKKysJCUpQQUtFX1NURVAzQl9wcm9jZXNzOworKwkJSlBBS0VfU1RFUDJfZ2VuZXJhdGU7CisrCQlKUEFLRV9DVFhfbmV3OworKwkJSlBBS0VfQ1RYX2ZyZWU7CisrCQlKUEFLRV9TVEVQM0JfcmVsZWFzZTsKKysJCUpQQUtFX1NURVAzQV9yZWxlYXNlOworKwkJSlBBS0VfU1RFUDJfcHJvY2VzczsKKysJCUpQQUtFX1NURVAzQl9nZW5lcmF0ZTsKKysJCUpQQUtFX1NURVAxX3Byb2Nlc3M7CisrCQlKUEFLRV9TVEVQM0FfZ2VuZXJhdGU7CisrCQlKUEFLRV9TVEVQMl9yZWxlYXNlOworKwkJSlBBS0VfU1RFUDNBX2luaXQ7CisrCQlFUlJfbG9hZF9KUEFLRV9zdHJpbmdzOworKwkJSlBBS0VfU1RFUDJfaW5pdDsKKysJCXBxdWV1ZV9zaXplOworKwkJaTJkX1RTX0FDQ1VSQUNZOworKwkJaTJkX1RTX01TR19JTVBSSU5UX2ZwOworKwkJaTJkX1RTX01TR19JTVBSSU5UOworKwkJRVZQX1BLRVlfcHJpbnRfcHVibGljOworKwkJRVZQX1BLRVlfQ1RYX25ldzsKKysJCWkyZF9UU19UU1RfSU5GTzsKKysJCUVWUF9QS0VZX2FzbjFfZmluZDsKKysJCURTT19NRVRIT0RfYmVvczsKKysJCVRTX0NPTkZfbG9hZF9jZXJ0OworKwkJVFNfUkVRX2dldF9leHQ7CisrCQlFVlBfUEtFWV9zaWduX2luaXQ7CisrCQlBU04xX2l0ZW1fcHJpbnQ7CisrCQlUU19UU1RfSU5GT19zZXRfbm9uY2U7CisrCQlUU19SRVNQX2R1cDsKKysJCUVOR0lORV9yZWdpc3Rlcl9wa2V5X21ldGhzOworKwkJRVZQX1BLRVlfYXNuMV9hZGQwOworKwkJUEtDUzdfYWRkMF9hdHRyaWJfc2lnbmluZ190aW1lOworKwkJaTJkX1RTX1RTVF9JTkZPX2ZwOworKwkJQklPX2FzbjFfZ2V0X3ByZWZpeDsKKysJCVRTX1RTVF9JTkZPX3NldF90aW1lOworKwkJRVZQX1BLRVlfbWV0aF9zZXRfZGVjcnlwdDsKKysJCUVWUF9QS0VZX3NldF90eXBlX3N0cjsKKysJCUVWUF9QS0VZX0NUWF9nZXRfa2V5Z2VuX2luZm87CisrCQlUU19SRVFfc2V0X3BvbGljeV9pZDsKKysJCWQyaV9UU19SRVNQX2ZwOworKwkJRU5HSU5FX2dldF9wa2V5X2FzbjFfbWV0aF9lbmdpbmU7CisrCQlFTkdJTkVfZ2V0X3BrZXlfYXNuMV9tZXRoX2VuZzsKKysJCVdISVJMUE9PTF9Jbml0OworKwkJVFNfUkVTUF9zZXRfc3RhdHVzX2luZm87CisrCQlFVlBfUEtFWV9rZXlnZW47CisrCQlFVlBfRGlnZXN0U2lnbkluaXQ7CisrCQlUU19BQ0NVUkFDWV9zZXRfbWlsbGlzOworKwkJVFNfUkVRX2R1cDsKKysJCUdFTkVSQUxfTkFNRV9kdXA7CisrCQlBU04xX1NFUVVFTkNFX0FOWV9pdDsKKysJCVdISVJMUE9PTDsKKysJCVg1MDlfU1RPUkVfZ2V0MV9jcmxzOworKwkJRU5HSU5FX2dldF9wa2V5X2FzbjFfbWV0aDsKKysJCUVWUF9QS0VZX2FzbjFfbmV3OworKwkJQklPX25ld19OREVGOworKwkJRU5HSU5FX2dldF9wa2V5X21ldGg7CisrCQlUU19NU0dfSU1QUklOVF9zZXRfYWxnbzsKKysJCWkyZF9UU19UU1RfSU5GT19iaW87CisrCQlUU19UU1RfSU5GT19zZXRfb3JkZXJpbmc7CisrCQlUU19UU1RfSU5GT19nZXRfZXh0X2J5X09CSjsKKysJCUNSWVBUT19USFJFQURJRF9zZXRfcG9pbnRlcjsKKysJCVRTX0NPTkZfZ2V0X3RzYV9zZWN0aW9uOworKwkJU01JTUVfd3JpdGVfQVNOMTsKKysJCVRTX1JFU1BfQ1RYX3NldF9zaWduZXJfa2V5OworKwkJRVZQX1BLRVlfZW5jcnlwdF9vbGQ7CisrCQlFVlBfUEtFWV9lbmNyeXB0X2luaXQ7CisrCQlDUllQVE9fVEhSRUFESURfY3B5OworKwkJQVNOMV9QQ1RYX2dldF9jZXJ0X2ZsYWdzOworKwkJaTJkX0VTU19TSUdOSU5HX0NFUlQ7CisrCQlUU19DT05GX2xvYWRfa2V5OworKwkJaTJkX0FTTjFfU0VRVUVOQ0VfQU5ZOworKwkJZDJpX1RTX01TR19JTVBSSU5UX2JpbzsKKysJCUVWUF9QS0VZX2FzbjFfc2V0X3B1YmxpYzsKKysJCWIyaV9QdWJsaWNLZXlfYmlvOworKwkJQklPX2FzbjFfc2V0X3ByZWZpeDsKKysJCUVWUF9QS0VZX25ld19tYWNfa2V5OworKwkJQklPX25ld19DTVM7CisrCQlDUllQVE9fVEhSRUFESURfY21wOworKwkJVFNfUkVRX2V4dF9mcmVlOworKwkJRVZQX1BLRVlfYXNuMV9zZXRfZnJlZTsKKysJCUVWUF9QS0VZX2dldDBfYXNuMTsKKysJCWQyaV9ORVRTQ0FQRV9YNTA5OworKwkJRVZQX1BLRVlfdmVyaWZ5X3JlY292ZXJfaW5pdDsKKysJCUVWUF9QS0VZX0NUWF9zZXRfZGF0YTsKKysJCUVWUF9QS0VZX2tleWdlbl9pbml0OworKwkJVFNfUkVTUF9DVFhfc2V0X3N0YXR1c19pbmZvOworKwkJVFNfTVNHX0lNUFJJTlRfZ2V0X2FsZ287CisrCQlUU19SRVFfcHJpbnRfYmlvOworKwkJRVZQX1BLRVlfQ1RYX2N0cmxfc3RyOworKwkJRVZQX1BLRVlfZ2V0X2RlZmF1bHRfZGlnZXN0X25pZDsKKysJCVBFTV93cml0ZV9iaW9fUEtDUzdfc3RyZWFtOworKwkJVFNfTVNHX0lNUFJJTlRfcHJpbnRfYmlvOworKwkJQk5fYXNjMmJuOworKwkJVFNfUkVRX2dldF9wb2xpY3lfaWQ7CisrCQlFTkdJTkVfc2V0X2RlZmF1bHRfcGtleV9hc24xX21ldGhzOworKwkJRU5HSU5FX3NldF9kZWZfcGtleV9hc24xX21ldGhzOworKwkJZDJpX1RTX0FDQ1VSQUNZOworKwkJRFNPX2dsb2JhbF9sb29rdXA7CisrCQlUU19DT05GX3NldF90c2FfbmFtZTsKKysJCWkyZF9BU04xX1NFVF9BTlk7CisrCQlFTkdJTkVfbG9hZF9nb3N0OworKwkJV0hJUkxQT09MX0JpdFVwZGF0ZTsKKysJCUFTTjFfUENUWF9nZXRfZmxhZ3M7CisrCQlUU19UU1RfSU5GT19nZXRfZXh0X2J5X05JRDsKKysJCVRTX1JFU1BfbmV3OworKwkJRVNTX0NFUlRfSURfZHVwOworKwkJVFNfU1RBVFVTX0lORk9fZHVwOworKwkJVFNfUkVRX2RlbGV0ZV9leHQ7CisrCQlFVlBfRGlnZXN0VmVyaWZ5RmluYWw7CisrCQlFVlBfUEtFWV9wcmludF9wYXJhbXM7CisrCQlpMmRfQ01TX2Jpb19zdHJlYW07CisrCQlUU19SRVFfZ2V0X21zZ19pbXByaW50OworKwkJT0JKX2ZpbmRfc2lnaWRfYnlfYWxnczsKKysJCVRTX1RTVF9JTkZPX2dldF9zZXJpYWw7CisrCQlUU19SRVFfZ2V0X25vbmNlOworKwkJWDUwOV9QVUJLRVlfc2V0MF9wYXJhbTsKKysJCUVWUF9QS0VZX0NUWF9zZXQwX2tleWdlbl9pbmZvOworKwkJRElTVF9QT0lOVF9zZXRfZHBuYW1lOworKwkJaTJkX0lTU1VJTkdfRElTVF9QT0lOVDsKKysJCUFTTjFfU0VUX0FOWV9pdDsKKysJCUVWUF9QS0VZX0NUWF9nZXRfZGF0YTsKKysJCVRTX1NUQVRVU19JTkZPX3ByaW50X2JpbzsKKysJCUVWUF9QS0VZX2Rlcml2ZV9pbml0OworKwkJZDJpX1RTX1RTVF9JTkZPOworKwkJRVZQX1BLRVlfYXNuMV9hZGRfYWxpYXM7CisrCQlkMmlfVFNfUkVTUF9iaW87CisrCQlPVEhFUk5BTUVfY21wOworKwkJR0VORVJBTF9OQU1FX3NldDBfdmFsdWU7CisrCQlQS0NTN19SRUNJUF9JTkZPX2dldDBfYWxnOworKwkJVFNfUkVTUF9DVFhfbmV3OworKwkJVFNfUkVTUF9zZXRfdHN0X2luZm87CisrCQlQS0NTN19maW5hbDsKKysJCUVWUF9QS0VZX2Jhc2VfaWQ7CisrCQlUU19SRVNQX0NUWF9zZXRfc2lnbmVyX2NlcnQ7CisrCQlUU19SRVFfc2V0X21zZ19pbXByaW50OworKwkJRVZQX1BLRVlfQ1RYX2N0cmw7CisrCQlUU19DT05GX3NldF9kaWdlc3RzOworKwkJZDJpX1RTX01TR19JTVBSSU5UOworKwkJRVZQX1BLRVlfbWV0aF9zZXRfY3RybDsKKysJCVRTX1JFUV9nZXRfZXh0X2J5X05JRDsKKysJCVBLQ1M1X3BiZV9zZXQwX2FsZ29yOworKwkJQk5fQkxJTkRJTkdfdGhyZWFkX2lkOworKwkJVFNfQUNDVVJBQ1lfbmV3OworKwkJWDUwOV9DUkxfTUVUSE9EX2ZyZWU7CisrCQlBU04xX1BDVFhfZ2V0X25tX2ZsYWdzOworKwkJRVZQX1BLRVlfbWV0aF9zZXRfc2lnbjsKKysJCUNSWVBUT19USFJFQURJRF9jdXJyZW50OworKwkJRVZQX1BLRVlfZGVjcnlwdF9pbml0OworKwkJTkVUU0NBUEVfWDUwOV9mcmVlOworKwkJaTJiX1BWS19iaW87CisrCQlFVlBfUEtFWV9wcmludF9wcml2YXRlOworKwkJR0VORVJBTF9OQU1FX2dldDBfdmFsdWU7CisrCQliMmlfUFZLX2JpbzsKKysJCUFTTjFfVVRDVElNRV9hZGo7CisrCQlUU19UU1RfSU5GT19uZXc7CisrCQlFVlBfTURfZG9fYWxsX3NvcnRlZDsKKysJCVRTX0NPTkZfc2V0X2RlZmF1bHRfZW5naW5lOworKwkJVFNfQUNDVVJBQ1lfc2V0X3NlY29uZHM7CisrCQlUU19UU1RfSU5GT19nZXRfdGltZTsKKysJCVBLQ1M4X3BrZXlfZ2V0MDsKKysJCUVWUF9QS0VZX2FzbjFfZ2V0MDsKKysJCU9CSl9hZGRfc2lnaWQ7CisrCQlQS0NTN19TSUdORVJfSU5GT19zaWduOworKwkJRVZQX1BLRVlfcGFyYW1nZW5faW5pdDsKKysJCUVWUF9QS0VZX3NpZ247CisrCQlPQkpfc2lnaWRfZnJlZTsKKysJCUVWUF9QS0VZX21ldGhfc2V0X2luaXQ7CisrCQlkMmlfRVNTX0lTU1VFUl9TRVJJQUw7CisrCQlJU1NVSU5HX0RJU1RfUE9JTlRfbmV3OworKwkJQVNOMV9USU1FX2FkajsKKysJCVRTX09CSl9wcmludF9iaW87CisrCQlFVlBfUEtFWV9tZXRoX3NldF92ZXJpZnlfcmVjb3ZlcjsKKysJCUVWUF9QS0VZX21ldGhfc2V0X3ZyZnlfcmVjb3ZlcjsKKysJCVRTX1JFU1BfZ2V0X3N0YXR1c19pbmZvOworKwkJQ01TX3N0cmVhbTsKKysJCUVWUF9QS0VZX0NUWF9zZXRfY2I7CisrCQlQS0NTN190b19UU19UU1RfSU5GTzsKKysJCUFTTjFfUENUWF9nZXRfb2lkX2ZsYWdzOworKwkJVFNfVFNUX0lORk9fYWRkX2V4dDsKKysJCUVWUF9QS0VZX21ldGhfc2V0X2Rlcml2ZTsKKysJCWkyZF9UU19SRVNQX2ZwOworKwkJaTJkX1RTX01TR19JTVBSSU5UX2JpbzsKKysJCVRTX1JFU1BfQ1RYX3NldF9hY2N1cmFjeTsKKysJCVRTX1JFUV9zZXRfbm9uY2U7CisrCQlFU1NfQ0VSVF9JRF9uZXc7CisrCQlFTkdJTkVfcGtleV9hc24xX2ZpbmRfc3RyOworKwkJVFNfUkVRX2dldF9leHRfY291bnQ7CisrCQlCVUZfcmV2ZXJzZTsKKysJCVRTX1RTVF9JTkZPX3ByaW50X2JpbzsKKysJCWQyaV9JU1NVSU5HX0RJU1RfUE9JTlQ7CisrCQlFTkdJTkVfZ2V0X3BrZXlfbWV0aHM7CisrCQlpMmJfUHJpdmF0ZUtleV9iaW87CisrCQlpMmRfVFNfUkVTUDsKKysJCWIyaV9QdWJsaWNLZXk7CisrCQlUU19WRVJJRllfQ1RYX2NsZWFudXA7CisrCQlUU19TVEFUVVNfSU5GT19mcmVlOworKwkJVFNfUkVTUF92ZXJpZnlfdG9rZW47CisrCQlPQkpfYnNlYXJjaF9leF87CisrCQlBU04xX2JuX3ByaW50OworKwkJRVZQX1BLRVlfYXNuMV9nZXRfY291bnQ7CisrCQlFTkdJTkVfcmVnaXN0ZXJfcGtleV9hc24xX21ldGhzOworKwkJQVNOMV9QQ1RYX3NldF9ubV9mbGFnczsKKysJCUVWUF9EaWdlc3RWZXJpZnlJbml0OworKwkJRU5HSU5FX3NldF9kZWZhdWx0X3BrZXlfbWV0aHM7CisrCQlUU19UU1RfSU5GT19nZXRfcG9saWN5X2lkOworKwkJVFNfUkVRX2dldF9jZXJ0X3JlcTsKKysJCVg1MDlfQ1JMX3NldF9tZXRoX2RhdGE7CisrCQlQS0NTOF9wa2V5X3NldDA7CisrCQlBU04xX1NUUklOR19jb3B5OworKwkJZDJpX1RTX1RTVF9JTkZPX2ZwOworKwkJWDUwOV9DUkxfbWF0Y2g7CisrCQlFVlBfUEtFWV9hc24xX3NldF9wcml2YXRlOworKwkJVFNfVFNUX0lORk9fZ2V0X2V4dF9kMmk7CisrCQlUU19SRVNQX0NUWF9hZGRfcG9saWN5OworKwkJZDJpX1RTX1JFU1A7CisrCQlUU19DT05GX2xvYWRfY2VydHM7CisrCQlUU19UU1RfSU5GT19nZXRfbXNnX2ltcHJpbnQ7CisrCQlFUlJfbG9hZF9UU19zdHJpbmdzOworKwkJVFNfVFNUX0lORk9fZ2V0X3ZlcnNpb247CisrCQlFVlBfUEtFWV9DVFhfZHVwOworKwkJRVZQX1BLRVlfbWV0aF9zZXRfdmVyaWZ5OworKwkJaTJiX1B1YmxpY0tleV9iaW87CisrCQlUU19DT05GX3NldF9jZXJ0czsKKysJCUVWUF9QS0VZX2FzbjFfZ2V0MF9pbmZvOworKwkJVFNfVkVSSUZZX0NUWF9mcmVlOworKwkJVFNfUkVRX2dldF9leHRfYnlfY3JpdGljYWw7CisrCQlUU19SRVNQX0NUWF9zZXRfc2VyaWFsX2NiOworKwkJWDUwOV9DUkxfZ2V0X21ldGhfZGF0YTsKKysJCVRTX1JFU1BfQ1RYX3NldF90aW1lX2NiOworKwkJVFNfTVNHX0lNUFJJTlRfZ2V0X21zZzsKKysJCVRTX1RTVF9JTkZPX2V4dF9mcmVlOworKwkJVFNfUkVRX2dldF92ZXJzaW9uOworKwkJVFNfUkVRX2FkZF9leHQ7CisrCQlFVlBfUEtFWV9DVFhfc2V0X2FwcF9kYXRhOworKwkJT0JKX2JzZWFyY2hfOworKwkJRVZQX1BLRVlfbWV0aF9zZXRfdmVyaWZ5Y3R4OworKwkJaTJkX1BLQ1M3X2Jpb19zdHJlYW07CisrCQlDUllQVE9fVEhSRUFESURfc2V0X251bWVyaWM7CisrCQlQS0NTN19zaWduX2FkZF9zaWduZXI7CisrCQlkMmlfVFNfVFNUX0lORk9fYmlvOworKwkJVFNfVFNUX0lORk9fZ2V0X29yZGVyaW5nOworKwkJVFNfUkVTUF9wcmludF9iaW87CisrCQlUU19UU1RfSU5GT19nZXRfZXh0czsKKysJCUhNQUNfQ1RYX2NvcHk7CisrCQlQS0NTNV9wYmUyX3NldF9pdjsKKysJCUVOR0lORV9nZXRfcGtleV9hc24xX21ldGhzOworKwkJYjJpX1ByaXZhdGVLZXk7CisrCQlFVlBfUEtFWV9DVFhfZ2V0X2FwcF9kYXRhOworKwkJVFNfUkVRX3NldF9jZXJ0X3JlcTsKKysJCUNSWVBUT19USFJFQURJRF9zZXRfY2FsbGJhY2s7CisrCQlUU19DT05GX3NldF9zZXJpYWw7CisrCQlUU19UU1RfSU5GT19mcmVlOworKwkJZDJpX1RTX1JFUV9mcDsKKysJCVRTX1JFU1BfdmVyaWZ5X3Jlc3BvbnNlOworKwkJaTJkX0VTU19JU1NVRVJfU0VSSUFMOworKwkJVFNfQUNDVVJBQ1lfZ2V0X3NlY29uZHM7CisrCQlFVlBfQ0lQSEVSX2RvX2FsbDsKKysJCWIyaV9Qcml2YXRlS2V5X2JpbzsKKysJCU9DU1BfQ0VSVElEX2R1cDsKKysJCVg1MDlfUFVCS0VZX2dldDBfcGFyYW07CisrCQlUU19NU0dfSU1QUklOVF9kdXA7CisrCQlQS0NTN19wcmludF9jdHg7CisrCQlpMmRfVFNfUkVRX2JpbzsKKysJCUVWUF93aGlybHBvb2w7CisrCQlFVlBfUEtFWV9hc24xX3NldF9wYXJhbTsKKysJCUVWUF9QS0VZX21ldGhfc2V0X2VuY3J5cHQ7CisrCQlBU04xX1BDVFhfc2V0X2ZsYWdzOworKwkJaTJkX0VTU19DRVJUX0lEOworKwkJVFNfVkVSSUZZX0NUWF9uZXc7CisrCQlUU19SRVNQX0NUWF9zZXRfZXh0ZW5zaW9uX2NiOworKwkJRU5HSU5FX3JlZ2lzdGVyX2FsbF9wa2V5X21ldGhzOworKwkJVFNfUkVTUF9DVFhfc2V0X3N0YXR1c19pbmZvX2NvbmQ7CisrCQlUU19SRVNQX0NUWF9zZXRfc3RhdF9pbmZvX2NvbmQ7CisrCQlFVlBfUEtFWV92ZXJpZnk7CisrCQlXSElSTFBPT0xfRmluYWw7CisrCQlYNTA5X0NSTF9NRVRIT0RfbmV3OworKwkJRVZQX0RpZ2VzdFNpZ25GaW5hbDsKKysJCVRTX1JFU1BfQ1RYX3NldF9kZWZfcG9saWN5OworKwkJTkVUU0NBUEVfWDUwOV9pdDsKKysJCVRTX1JFU1BfY3JlYXRlX3Jlc3BvbnNlOworKwkJUEtDUzdfU0lHTkVSX0lORk9fZ2V0MF9hbGdzOworKwkJVFNfVFNUX0lORk9fZ2V0X25vbmNlOworKwkJRVZQX1BLRVlfZGVjcnlwdF9vbGQ7CisrCQlUU19UU1RfSU5GT19zZXRfcG9saWN5X2lkOworKwkJVFNfQ09ORl9zZXRfZXNzX2NlcnRfaWRfY2hhaW47CisrCQlFVlBfUEtFWV9DVFhfZ2V0MF9wa2V5OworKwkJZDJpX1RTX1JFUTsKKysJCUVWUF9QS0VZX2FzbjFfZmluZF9zdHI7CisrCQlCSU9fZl9hc24xOworKwkJRVNTX1NJR05JTkdfQ0VSVF9uZXc7CisrCQlFVlBfUEJFX2ZpbmQ7CisrCQlYNTA5X0NSTF9nZXQwX2J5X2NlcnQ7CisrCQlFVlBfUEtFWV9kZXJpdmU7CisrCQlpMmRfVFNfUkVROworKwkJVFNfVFNUX0lORk9fZGVsZXRlX2V4dDsKKysJCUVTU19JU1NVRVJfU0VSSUFMX2ZyZWU7CisrCQlBU04xX1BDVFhfc2V0X3N0cl9mbGFnczsKKysJCUVOR0lORV9nZXRfcGtleV9hc24xX21ldGhfc3RyOworKwkJVFNfQ09ORl9zZXRfc2lnbmVyX2tleTsKKysJCVRTX0FDQ1VSQUNZX2dldF9taWxsaXM7CisrCQlUU19SRVNQX2dldF90b2tlbjsKKysJCVRTX0FDQ1VSQUNZX2R1cDsKKysJCUVOR0lORV9yZWdpc3Rlcl9hbGxfcGtleV9hc24xX21ldGhzOworKwkJRU5HSU5FX3JlZ19hbGxfcGtleV9hc24xX21ldGhzOworKwkJWDUwOV9DUkxfc2V0X2RlZmF1bHRfbWV0aG9kOworKwkJQ1JZUFRPX1RIUkVBRElEX2hhc2g7CisrCQlDTVNfQ29udGVudEluZm9fcHJpbnRfY3R4OworKwkJVFNfUkVTUF9mcmVlOworKwkJSVNTVUlOR19ESVNUX1BPSU5UX2ZyZWU7CisrCQlFU1NfSVNTVUVSX1NFUklBTF9uZXc7CisrCQlDTVNfYWRkMV9jcmw7CisrCQlQS0NTN19hZGQxX2F0dHJpYl9kaWdlc3Q7CisrCQlUU19SRVNQX0NUWF9hZGRfbWQ7CisrCQlUU19UU1RfSU5GT19kdXA7CisrCQlFTkdJTkVfc2V0X3BrZXlfYXNuMV9tZXRoczsKKysJCVBFTV93cml0ZV9iaW9fUGFyYW1ldGVyczsKKysJCVRTX1RTVF9JTkZPX2dldF9hY2N1cmFjeTsKKysJCVg1MDlfQ1JMX2dldDBfYnlfc2VyaWFsOworKwkJVFNfVFNUX0lORk9fc2V0X3ZlcnNpb247CisrCQlUU19SRVNQX0NUWF9nZXRfdHN0X2luZm87CisrCQlUU19SRVNQX3ZlcmlmeV9zaWduYXR1cmU7CisrCQlDUllQVE9fVEhSRUFESURfZ2V0X2NhbGxiYWNrOworKwkJVFNfVFNUX0lORk9fZ2V0X3RzYTsKKysJCVRTX1NUQVRVU19JTkZPX25ldzsKKysJCUVWUF9QS0VZX0NUWF9nZXRfY2I7CisrCQlUU19SRVFfZ2V0X2V4dF9kMmk7CisrCQlHRU5FUkFMX05BTUVfc2V0MF9vdGhlcm5hbWU7CisrCQlUU19UU1RfSU5GT19nZXRfZXh0X2NvdW50OworKwkJVFNfUkVTUF9DVFhfZ2V0X3JlcXVlc3Q7CisrCQlpMmRfTkVUU0NBUEVfWDUwOTsKKysJCUVOR0lORV9nZXRfcGtleV9tZXRoX2VuZ2luZTsKKysJCUVWUF9QS0VZX21ldGhfc2V0X3NpZ25jdHg7CisrCQlFVlBfUEtFWV9hc24xX2NvcHk7CisrCQlBU04xX1RZUEVfY21wOworKwkJRVZQX0NJUEhFUl9kb19hbGxfc29ydGVkOworKwkJRVZQX1BLRVlfQ1RYX2ZyZWU7CisrCQlJU1NVSU5HX0RJU1RfUE9JTlRfaXQ7CisrCQlkMmlfVFNfTVNHX0lNUFJJTlRfZnA7CisrCQlYNTA5X1NUT1JFX2dldDFfY2VydHM7CisrCQlFVlBfUEtFWV9DVFhfZ2V0X29wZXJhdGlvbjsKKysJCWQyaV9FU1NfU0lHTklOR19DRVJUOworKwkJVFNfQ09ORl9zZXRfb3JkZXJpbmc7CisrCQlFVlBfUEJFX2FsZ19hZGRfdHlwZTsKKysJCVRTX1JFUV9zZXRfdmVyc2lvbjsKKysJCUVWUF9QS0VZX2dldDA7CisrCQlCSU9fYXNuMV9zZXRfc3VmZml4OworKwkJaTJkX1RTX1NUQVRVU19JTkZPOworKwkJRVZQX01EX2RvX2FsbDsKKysJCVRTX1RTVF9JTkZPX3NldF9hY2N1cmFjeTsKKysJCVBLQ1M3X2FkZF9hdHRyaWJfY29udGVudF90eXBlOworKwkJRVJSX3JlbW92ZV90aHJlYWRfc3RhdGU7CisrCQlFVlBfUEtFWV9tZXRoX2FkZDA7CisrCQlUU19UU1RfSU5GT19zZXRfdHNhOworKwkJRVZQX1BLRVlfbWV0aF9uZXc7CisrCQlXSElSTFBPT0xfVXBkYXRlOworKwkJVFNfQ09ORl9zZXRfYWNjdXJhY3k7CisrCQlBU04xX1BDVFhfc2V0X29pZF9mbGFnczsKKysJCUVTU19TSUdOSU5HX0NFUlRfZHVwOworKwkJZDJpX1RTX1JFUV9iaW87CisrCQlYNTA5X3RpbWVfYWRqX2V4OworKwkJVFNfUkVTUF9DVFhfYWRkX2ZsYWdzOworKwkJZDJpX1RTX1NUQVRVU19JTkZPOworKwkJVFNfTVNHX0lNUFJJTlRfc2V0X21zZzsKKysJCUJJT19hc24xX2dldF9zdWZmaXg7CisrCQlUU19SRVFfZnJlZTsKKysJCUVWUF9QS0VZX21ldGhfZnJlZTsKKysJCVRTX1JFUV9nZXRfZXh0czsKKysJCVRTX1JFU1BfQ1RYX3NldF9jbG9ja19wcmVjaXNpb25fZGlnaXRzOworKwkJVFNfUkVTUF9DVFhfc2V0X2Nsa19wcmVjX2RpZ2l0czsKKysJCVRTX1JFU1BfQ1RYX2FkZF9mYWlsdXJlX2luZm87CisrCQlpMmRfVFNfUkVTUF9iaW87CisrCQlFVlBfUEtFWV9DVFhfZ2V0MF9wZWVya2V5OworKwkJUEVNX3dyaXRlX2Jpb19DTVNfc3RyZWFtOworKwkJVFNfUkVRX25ldzsKKysJCVRTX01TR19JTVBSSU5UX25ldzsKKysJCUVWUF9QS0VZX21ldGhfZmluZDsKKysJCUVWUF9QS0VZX2lkOworKwkJVFNfVFNUX0lORk9fc2V0X3NlcmlhbDsKKysJCWEyaV9HRU5FUkFMX05BTUU7CisrCQlUU19DT05GX3NldF9jcnlwdG9fZGV2aWNlOworKwkJRVZQX1BLRVlfdmVyaWZ5X2luaXQ7CisrCQlUU19DT05GX3NldF9wb2xpY2llczsKKysJCUFTTjFfUENUWF9uZXc7CisrCQlFU1NfQ0VSVF9JRF9mcmVlOworKwkJRU5HSU5FX3VucmVnaXN0ZXJfcGtleV9tZXRoczsKKysJCVRTX01TR19JTVBSSU5UX2ZyZWU7CisrCQlUU19WRVJJRllfQ1RYX2luaXQ7CisrCQlQS0NTN19zdHJlYW07CisrCQlUU19SRVNQX0NUWF9zZXRfY2VydHM7CisrCQlUU19DT05GX3NldF9kZWZfcG9saWN5OworKwkJQVNOMV9HRU5FUkFMSVpFRFRJTUVfYWRqOworKwkJTkVUU0NBUEVfWDUwOV9uZXc7CisrCQlUU19BQ0NVUkFDWV9mcmVlOworKwkJVFNfUkVTUF9nZXRfdHN0X2luZm87CisrCQlFVlBfUEtFWV9kZXJpdmVfc2V0X3BlZXI7CisrCQlQRU1fcmVhZF9iaW9fUGFyYW1ldGVyczsKKysJCVRTX0NPTkZfc2V0X2Nsb2NrX3ByZWNpc2lvbl9kaWdpdHM7CisrCQlUU19DT05GX3NldF9jbGtfcHJlY19kaWdpdHM7CisrCQlFU1NfSVNTVUVSX1NFUklBTF9kdXA7CisrCQlUU19BQ0NVUkFDWV9nZXRfbWljcm9zOworKwkJQVNOMV9QQ1RYX2dldF9zdHJfZmxhZ3M7CisrCQlOQU1FX0NPTlNUUkFJTlRTX2NoZWNrOworKwkJQVNOMV9CSVRfU1RSSU5HX2NoZWNrOworKwkJWDUwOV9jaGVja19ha2lkOworKwkJRU5HSU5FX3VucmVnaXN0ZXJfcGtleV9hc24xX21ldGhzOworKwkJRU5HSU5FX3VucmVnX3BrZXlfYXNuMV9tZXRoczsKKysJCUFTTjFfUENUWF9mcmVlOworKwkJUEVNX3dyaXRlX2Jpb19BU04xX3N0cmVhbTsKKysJCWkyZF9BU04xX2Jpb19zdHJlYW07CisrCQlUU19YNTA5X0FMR09SX3ByaW50X2JpbzsKKysJCUVWUF9QS0VZX21ldGhfc2V0X2NsZWFudXA7CisrCQlFVlBfUEtFWV9hc24xX2ZyZWU7CisrCQlFU1NfU0lHTklOR19DRVJUX2ZyZWU7CisrCQlUU19UU1RfSU5GT19zZXRfbXNnX2ltcHJpbnQ7CisrCQlHRU5FUkFMX05BTUVfY21wOworKwkJZDJpX0FTTjFfU0VUX0FOWTsKKysJCUVOR0lORV9zZXRfcGtleV9tZXRoczsKKysJCWkyZF9UU19SRVFfZnA7CisrCQlkMmlfQVNOMV9TRVFVRU5DRV9BTlk7CisrCQlHRU5FUkFMX05BTUVfZ2V0MF9vdGhlck5hbWU7CisrCQlkMmlfRVNTX0NFUlRfSUQ7CisrCQlPQkpfZmluZF9zaWdpZF9hbGdzOworKwkJRVZQX1BLRVlfbWV0aF9zZXRfa2V5Z2VuOworKwkJUEtDUzVfUEJLREYyX0hNQUM7CisrCQlFVlBfUEtFWV9wYXJhbWdlbjsKKysJCUVWUF9QS0VZX21ldGhfc2V0X3BhcmFtZ2VuOworKwkJQklPX25ld19QS0NTNzsKKysJCUVWUF9QS0VZX3ZlcmlmeV9yZWNvdmVyOworKwkJVFNfZXh0X3ByaW50X2JpbzsKKysJCVRTX0FTTjFfSU5URUdFUl9wcmludF9iaW87CisrCQljaGVja19kZWZlcjsKKysJCURTT19wYXRoYnlhZGRyOworKwkJRVZQX1BLRVlfc2V0X3R5cGU7CisrCQlUU19BQ0NVUkFDWV9zZXRfbWljcm9zOworKwkJVFNfUkVRX3RvX1RTX1ZFUklGWV9DVFg7CisrCQlFVlBfUEtFWV9tZXRoX3NldF9jb3B5OworKwkJQVNOMV9QQ1RYX3NldF9jZXJ0X2ZsYWdzOworKwkJVFNfVFNUX0lORk9fZ2V0X2V4dDsKKysJCUVWUF9QS0VZX2FzbjFfc2V0X2N0cmw7CisrCQlUU19UU1RfSU5GT19nZXRfZXh0X2J5X2NyaXRpY2FsOworKwkJRVZQX1BLRVlfQ1RYX25ld19pZDsKKysJCVRTX1JFUV9nZXRfZXh0X2J5X09CSjsKKysJCVRTX0NPTkZfc2V0X3NpZ25lcl9jZXJ0OworKwkJWDUwOV9OQU1FX2hhc2hfb2xkOworKwkJQVNOMV9USU1FX3NldF9zdHJpbmc7CisrCQlFVlBfTURfZmxhZ3M7CisrCQlUU19SRVNQX0NUWF9mcmVlOworKwkJRFNBcGFyYW1zX2R1cDsKKysJCURIcGFyYW1zX2R1cDsKKysJCU9DU1BfUkVRX0NUWF9hZGQxX2hlYWRlcjsKKysJCU9DU1BfUkVRX0NUWF9zZXQxX3JlcTsKKysJCVg1MDlfU1RPUkVfc2V0X3ZlcmlmeV9jYjsKKysJCVg1MDlfU1RPUkVfQ1RYX2dldDBfY3VycmVudF9jcmw7CisrCQlYNTA5X1NUT1JFX0NUWF9nZXQwX3BhcmVudF9jdHg7CisrCQlYNTA5X1NUT1JFX0NUWF9nZXQwX2N1cnJlbnRfaXNzdWVyOworKwkJWDUwOV9TVE9SRV9DVFhfZ2V0MF9jdXJfaXNzdWVyOworKwkJWDUwOV9pc3N1ZXJfbmFtZV9oYXNoX29sZDsKKysJCVg1MDlfc3ViamVjdF9uYW1lX2hhc2hfb2xkOworKwkJRVZQX0NJUEhFUl9DVFhfY29weTsKKysJCVVJX21ldGhvZF9nZXRfcHJvbXB0X2NvbnN0cnVjdG9yOworKwkJVUlfbWV0aG9kX2dldF9wcm9tcHRfY29uc3RydWN0cjsKKysJCVVJX21ldGhvZF9zZXRfcHJvbXB0X2NvbnN0cnVjdG9yOworKwkJVUlfbWV0aG9kX3NldF9wcm9tcHRfY29uc3RydWN0cjsKKysJCUVWUF9yZWFkX3B3X3N0cmluZ19taW47CisrCQlDUllQVE9fY3RzMTI4X2VuY3J5cHQ7CisrCQlDUllQVE9fY3RzMTI4X2RlY3J5cHRfYmxvY2s7CisrCQlDUllQVE9fY2ZiMTI4XzFfZW5jcnlwdDsKKysJCUNSWVBUT19jYmMxMjhfZW5jcnlwdDsKKysJCUNSWVBUT19jdHIxMjhfZW5jcnlwdDsKKysJCUNSWVBUT19vZmIxMjhfZW5jcnlwdDsKKysJCUNSWVBUT19jdHMxMjhfZGVjcnlwdDsKKysJCUNSWVBUT19jdHMxMjhfZW5jcnlwdF9ibG9jazsKKysJCUNSWVBUT19jYmMxMjhfZGVjcnlwdDsKKysJCUNSWVBUT19jZmIxMjhfZW5jcnlwdDsKKysJCUNSWVBUT19jZmIxMjhfOF9lbmNyeXB0OworKwkJU1NMX3JlbmVnb3RpYXRlX2FiYnJldmlhdGVkOworKwkJVExTdjFfMV9tZXRob2Q7CisrCQlUTFN2MV8xX2NsaWVudF9tZXRob2Q7CisrCQlUTFN2MV8xX3NlcnZlcl9tZXRob2Q7CisrCQlTU0xfQ1RYX3NldF9zcnBfY2xpZW50X3B3ZF9jYWxsYmFjazsKKysJCVNTTF9DVFhfc2V0X3NycF9jbGllbnRfcHdkX2NiOworKwkJU1NMX2dldF9zcnBfZzsKKysJCVNTTF9DVFhfc2V0X3NycF91c2VybmFtZV9jYWxsYmFjazsKKysJCVNTTF9DVFhfc2V0X3NycF91bl9jYjsKKysJCVNTTF9nZXRfc3JwX3VzZXJpbmZvOworKwkJU1NMX3NldF9zcnBfc2VydmVyX3BhcmFtOworKwkJU1NMX3NldF9zcnBfc2VydmVyX3BhcmFtX3B3OworKwkJU1NMX2dldF9zcnBfTjsKKysJCVNTTF9nZXRfc3JwX3VzZXJuYW1lOworKwkJU1NMX0NUWF9zZXRfc3JwX3Bhc3N3b3JkOworKwkJU1NMX0NUWF9zZXRfc3JwX3N0cmVuZ3RoOworKwkJU1NMX0NUWF9zZXRfc3JwX3ZlcmlmeV9wYXJhbV9jYWxsYmFjazsKKysJCVNTTF9DVFhfc2V0X3NycF92ZnlfcGFyYW1fY2I7CisrCQlTU0xfQ1RYX3NldF9zcnBfY2JfYXJnOworKwkJU1NMX0NUWF9zZXRfc3JwX3VzZXJuYW1lOworKwkJU1NMX0NUWF9TUlBfQ1RYX2luaXQ7CisrCQlTU0xfU1JQX0NUWF9pbml0OworKwkJU1JQX0NhbGNfQV9wYXJhbTsKKysJCVNSUF9nZW5lcmF0ZV9zZXJ2ZXJfbWFzdGVyX3NlY3JldDsKKysJCVNSUF9nZW5fc2VydmVyX21hc3Rlcl9zZWNyZXQ7CisrCQlTU0xfQ1RYX1NSUF9DVFhfZnJlZTsKKysJCVNSUF9nZW5lcmF0ZV9jbGllbnRfbWFzdGVyX3NlY3JldDsKKysJCVNSUF9nZW5fY2xpZW50X21hc3Rlcl9zZWNyZXQ7CisrCQlTU0xfc3JwX3NlcnZlcl9wYXJhbV93aXRoX3VzZXJuYW1lOworKwkJU1NMX3NycF9zZXJ2ZXJfcGFyYW1fd2l0aF91bjsKKysJCVNTTF9TUlBfQ1RYX2ZyZWU7CisrCQlTU0xfc2V0X2RlYnVnOworKwkJU1NMX1NFU1NJT05fZ2V0MF9wZWVyOworKwkJVExTdjFfMl9jbGllbnRfbWV0aG9kOworKwkJU1NMX1NFU1NJT05fc2V0MV9pZF9jb250ZXh0OworKwkJVExTdjFfMl9zZXJ2ZXJfbWV0aG9kOworKwkJU1NMX2NhY2hlX2hpdDsKKysJCVNTTF9nZXQwX2tzc2xfY3R4OworKwkJU1NMX3NldDBfa3NzbF9jdHg7CisrCQlTU0xfc2V0X3N0YXRlOworKwkJU1NMX0NJUEhFUl9nZXRfaWQ7CisrCQlUTFN2MV8yX21ldGhvZDsKKysJCWtzc2xfY3R4X2dldDBfY2xpZW50X3ByaW5jOworKwkJU1NMX2V4cG9ydF9rZXlpbmdfbWF0ZXJpYWw7CisrCQlTU0xfc2V0X3Rsc2V4dF91c2Vfc3J0cDsKKysJCVNTTF9DVFhfc2V0X25leHRfcHJvdG9zX2FkdmVydGlzZWRfY2I7CisrCQlTU0xfQ1RYX3NldF9uZXh0X3Byb3Rvc19hZHZfY2I7CisrCQlTU0xfZ2V0MF9uZXh0X3Byb3RvX25lZ290aWF0ZWQ7CisrCQlTU0xfZ2V0X3NlbGVjdGVkX3NydHBfcHJvZmlsZTsKKysJCVNTTF9DVFhfc2V0X3Rsc2V4dF91c2Vfc3J0cDsKKysJCVNTTF9zZWxlY3RfbmV4dF9wcm90bzsKKysJCVNTTF9nZXRfc3J0cF9wcm9maWxlczsKKysJCVNTTF9DVFhfc2V0X25leHRfcHJvdG9fc2VsZWN0X2NiOworKwkJU1NMX0NUWF9zZXRfbmV4dF9wcm90b19zZWxfY2I7CisrCQlTU0xfU0VTU0lPTl9nZXRfY29tcHJlc3NfaWQ7CisrCisrCQlTUlBfVkJBU0VfZ2V0X2J5X3VzZXI7CisrCQlTUlBfQ2FsY19zZXJ2ZXJfa2V5OworKwkJU1JQX2NyZWF0ZV92ZXJpZmllcjsKKysJCVNSUF9jcmVhdGVfdmVyaWZpZXJfQk47CisrCQlTUlBfQ2FsY191OworKwkJU1JQX1ZCQVNFX2ZyZWU7CisrCQlTUlBfQ2FsY19jbGllbnRfa2V5OworKwkJU1JQX2dldF9kZWZhdWx0X2dOOworKwkJU1JQX0NhbGNfeDsKKysJCVNSUF9DYWxjX0I7CisrCQlTUlBfVkJBU0VfbmV3OworKwkJU1JQX2NoZWNrX2tub3duX2dOX3BhcmFtOworKwkJU1JQX0NhbGNfQTsKKysJCVNSUF9WZXJpZnlfQV9tb2RfTjsKKysJCVNSUF9WQkFTRV9pbml0OworKwkJU1JQX1ZlcmlmeV9CX21vZF9OOworKwkJRUNfS0VZX3NldF9wdWJsaWNfa2V5X2FmZmluZV9jb29yZGluYXRlczsKKysJCUVDX0tFWV9zZXRfcHViX2tleV9hZmZfY29vcmRzOworKwkJRVZQX2Flc18xOTJfY3RyOworKwkJRVZQX1BLRVlfbWV0aF9nZXQwX2luZm87CisrCQlFVlBfUEtFWV9tZXRoX2NvcHk7CisrCQlFUlJfYWRkX2Vycm9yX3ZkYXRhOworKwkJRVZQX2Flc18xMjhfY3RyOworKwkJRVZQX2Flc18yNTZfY3RyOworKwkJRUNfR0ZwX25pc3RwMjI0X21ldGhvZDsKKysJCUVDX0tFWV9nZXRfZmxhZ3M7CisrCQlSU0FfcGFkZGluZ19hZGRfUEtDUzFfUFNTX21nZjE7CisrCQlFVlBfYWVzXzEyOF94dHM7CisrCQlFVlBfYWVzXzI1Nl94dHM7CisrCQlFVlBfYWVzXzEyOF9nY207CisrCQlFQ19LRVlfY2xlYXJfZmxhZ3M7CisrCQlFQ19LRVlfc2V0X2ZsYWdzOworKwkJRVZQX2Flc18yNTZfY2NtOworKwkJUlNBX3ZlcmlmeV9QS0NTMV9QU1NfbWdmMTsKKysJCUVWUF9hZXNfMTI4X2NjbTsKKysJCUVWUF9hZXNfMTkyX2djbTsKKysJCVg1MDlfQUxHT1Jfc2V0X21kOworKwkJUkFORF9pbml0X2ZpcHM7CisrCQlFVlBfYWVzXzI1Nl9nY207CisrCQlFVlBfYWVzXzE5Ml9jY207CisrCQlDTUFDX0NUWF9jb3B5OworKwkJQ01BQ19DVFhfZnJlZTsKKysJCUNNQUNfQ1RYX2dldDBfY2lwaGVyX2N0eDsKKysJCUNNQUNfQ1RYX2NsZWFudXA7CisrCQlDTUFDX0luaXQ7CisrCQlDTUFDX1VwZGF0ZTsKKysJCUNNQUNfcmVzdW1lOworKwkJQ01BQ19DVFhfbmV3OworKwkJQ01BQ19GaW5hbDsKKysJCUNSWVBUT19jdHIxMjhfZW5jcnlwdF9jdHIzMjsKKysJCUNSWVBUT19nY20xMjhfcmVsZWFzZTsKKysJCUNSWVBUT19jY20xMjhfZGVjcnlwdF9jY202NDsKKysJCUNSWVBUT19jY20xMjhfZW5jcnlwdDsKKysJCUNSWVBUT19nY20xMjhfZW5jcnlwdDsKKysJCUNSWVBUT194dHMxMjhfZW5jcnlwdDsKKysJCUVWUF9yYzRfaG1hY19tZDU7CisrCQlDUllQVE9fbmlzdGN0czEyOF9kZWNyeXB0X2Jsb2NrOworKwkJQ1JZUFRPX2djbTEyOF9zZXRpdjsKKysJCUNSWVBUT19uaXN0Y3RzMTI4X2VuY3J5cHQ7CisrCQlFVlBfYWVzXzEyOF9jYmNfaG1hY19zaGExOworKwkJQ1JZUFRPX2djbTEyOF90YWc7CisrCQlDUllQVE9fY2NtMTI4X2VuY3J5cHRfY2NtNjQ7CisrCQlFTkdJTkVfbG9hZF9yZHJhbmQ7CisrCQlDUllQVE9fY2NtMTI4X3NldGl2OworKwkJQ1JZUFRPX25pc3RjdHMxMjhfZW5jcnlwdF9ibG9jazsKKysJCUNSWVBUT19nY20xMjhfYWFkOworKwkJQ1JZUFRPX2NjbTEyOF9pbml0OworKwkJQ1JZUFRPX25pc3RjdHMxMjhfZGVjcnlwdDsKKysJCUNSWVBUT19nY20xMjhfbmV3OworKwkJQ1JZUFRPX2NjbTEyOF90YWc7CisrCQlDUllQVE9fY2NtMTI4X2RlY3J5cHQ7CisrCQlDUllQVE9fY2NtMTI4X2FhZDsKKysJCUNSWVBUT19nY20xMjhfaW5pdDsKKysJCUNSWVBUT19nY20xMjhfZGVjcnlwdDsKKysJCUVOR0lORV9sb2FkX3JzYXg7CisrCQlDUllQVE9fZ2NtMTI4X2RlY3J5cHRfY3RyMzI7CisrCQlDUllQVE9fZ2NtMTI4X2VuY3J5cHRfY3RyMzI7CisrCQlDUllQVE9fZ2NtMTI4X2ZpbmlzaDsKKysJCUVWUF9hZXNfMjU2X2NiY19obWFjX3NoYTE7CisrCQlQS0NTNV9wYmtkZjJfc2V0OworKwkJQ01TX2FkZDBfcmVjaXBpZW50X3Bhc3N3b3JkOworKwkJQ01TX2RlY3J5cHRfc2V0MV9wYXNzd29yZDsKKysJCUNNU19SZWNpcGllbnRJbmZvX3NldDBfcGFzc3dvcmQ7CisrCQlSQU5EX3NldF9maXBzX2RyYmdfdHlwZTsKKysJCVg1MDlfUkVRX3NpZ25fY3R4OworKwkJUlNBX1BTU19QQVJBTVNfbmV3OworKwkJWDUwOV9DUkxfc2lnbl9jdHg7CisrCQlYNTA5X3NpZ25hdHVyZV9kdW1wOworKwkJZDJpX1JTQV9QU1NfUEFSQU1TOworKwkJUlNBX1BTU19QQVJBTVNfaXQ7CisrCQlSU0FfUFNTX1BBUkFNU19mcmVlOworKwkJWDUwOV9zaWduX2N0eDsKKysJCWkyZF9SU0FfUFNTX1BBUkFNUzsKKysJCUFTTjFfaXRlbV9zaWduX2N0eDsKKysJCUVDX0dGcF9uaXN0cDUyMV9tZXRob2Q7CisrCQlFQ19HRnBfbmlzdHAyNTZfbWV0aG9kOworKwkJT1BFTlNTTF9zdGRlcnI7CisrCQlPUEVOU1NMX2NwdWlkX3NldHVwOworKwkJT1BFTlNTTF9zaG93ZmF0YWw7CisrCQlCSU9fbmV3X2RncmFtX3NjdHA7CisrCQlCSU9fZGdyYW1fc2N0cF9tc2dfd2FpdGluZzsKKysJCUJJT19kZ3JhbV9zY3RwX3dhaXRfZm9yX2RyeTsKKysJCUJJT19zX2RhdGFncmFtX3NjdHA7CisrCQlCSU9fZGdyYW1faXNfc2N0cDsKKysJCUJJT19kZ3JhbV9zY3RwX25vdGlmaWNhdGlvbl9jYjsKKysJCUNSWVBUT19tZW1jbXA7CisrCQlTU0xfQ1RYX3NldF9hbHBuX3Byb3RvczsKKysJCVNTTF9zZXRfYWxwbl9wcm90b3M7CisrCQlTU0xfQ1RYX3NldF9hbHBuX3NlbGVjdF9jYjsKKysJCVNTTF9nZXQwX2FscG5fc2VsZWN0ZWQ7CisrCQlTU0xfQ1RYX3NldF9jdXN0b21fY2xpX2V4dDsKKysJCVNTTF9DVFhfc2V0X2N1c3RvbV9zcnZfZXh0OworKwkJU1NMX0NUWF9zZXRfc3J2X3N1cHBfZGF0YTsKKysJCVNTTF9DVFhfc2V0X2NsaV9zdXBwX2RhdGE7CisrCQlTU0xfc2V0X2NlcnRfY2I7CisrCQlTU0xfQ1RYX3VzZV9zZXJ2ZXJpbmZvOworKwkJU1NMX0NUWF91c2Vfc2VydmVyaW5mb19maWxlOworKwkJU1NMX0NUWF9zZXRfY2VydF9jYjsKKysJCVNTTF9DVFhfZ2V0MF9wYXJhbTsKKysJCVNTTF9nZXQwX3BhcmFtOworKwkJU1NMX2NlcnRzX2NsZWFyOworKwkJRFRMU3YxXzJfbWV0aG9kOworKwkJRFRMU3YxXzJfc2VydmVyX21ldGhvZDsKKysJCURUTFN2MV8yX2NsaWVudF9tZXRob2Q7CisrCQlEVExTX21ldGhvZDsKKysJCURUTFNfc2VydmVyX21ldGhvZDsKKysJCURUTFNfY2xpZW50X21ldGhvZDsKKysJCVNTTF9DVFhfZ2V0X3NzbF9tZXRob2Q7CisrCQlTU0xfQ1RYX2dldDBfY2VydGlmaWNhdGU7CisrCQlTU0xfQ1RYX2dldDBfcHJpdmF0ZWtleTsKKysJCVNTTF9DT01QX3NldDBfY29tcHJlc3Npb25fbWV0aG9kczsKKysJCVNTTF9DT01QX2ZyZWVfY29tcHJlc3Npb25fbWV0aG9kczsKKysJCVNTTF9DSVBIRVJfZmluZDsKKysJCVNTTF9pc19zZXJ2ZXI7CisrCQlTU0xfQ09ORl9DVFhfbmV3OworKwkJU1NMX0NPTkZfQ1RYX2ZpbmlzaDsKKysJCVNTTF9DT05GX0NUWF9mcmVlOworKwkJU1NMX0NPTkZfQ1RYX3NldF9mbGFnczsKKysJCVNTTF9DT05GX0NUWF9jbGVhcl9mbGFnczsKKysJCVNTTF9DT05GX0NUWF9zZXQxX3ByZWZpeDsKKysJCVNTTF9DT05GX0NUWF9zZXRfc3NsOworKwkJU1NMX0NPTkZfQ1RYX3NldF9zc2xfY3R4OworKwkJU1NMX0NPTkZfY21kOworKwkJU1NMX0NPTkZfY21kX2FyZ3Y7CisrCQlTU0xfQ09ORl9jbWRfdmFsdWVfdHlwZTsKKysJCVNTTF90cmFjZTsKKysJCVNTTF9DSVBIRVJfc3RhbmRhcmRfbmFtZTsKKysJCVNTTF9nZXRfdGxzYV9yZWNvcmRfYnluYW1lOworKwkJQVNOMV9USU1FX2RpZmY7CisrCQlCSU9faGV4X3N0cmluZzsKKysJCUNNU19SZWNpcGllbnRJbmZvX2dldDBfcGtleV9jdHg7CisrCQlDTVNfUmVjaXBpZW50SW5mb19lbmNyeXB0OworKwkJQ01TX1NpZ25lckluZm9fZ2V0MF9wa2V5X2N0eDsKKysJCUNNU19TaWduZXJJbmZvX2dldDBfbWRfY3R4OworKwkJQ01TX1NpZ25lckluZm9fZ2V0MF9zaWduYXR1cmU7CisrCQlDTVNfUmVjaXBpZW50SW5mb19rYXJpX2dldDBfYWxnOworKwkJQ01TX1JlY2lwaWVudEluZm9fa2FyaV9nZXQwX3Jla3M7CisrCQlDTVNfUmVjaXBpZW50SW5mb19rYXJpX2dldDBfb3JpZ19pZDsKKysJCUNNU19SZWNpcGllbnRJbmZvX2thcmlfb3JpZ19pZF9jbXA7CisrCQlDTVNfUmVjaXBpZW50RW5jcnlwdGVkS2V5X2dldDBfaWQ7CisrCQlDTVNfUmVjaXBpZW50RW5jcnlwdGVkS2V5X2NlcnRfY21wOworKwkJQ01TX1JlY2lwaWVudEluZm9fa2FyaV9zZXQwX3BrZXk7CisrCQlDTVNfUmVjaXBpZW50SW5mb19rYXJpX2dldDBfY3R4OworKwkJQ01TX1JlY2lwaWVudEluZm9fa2FyaV9kZWNyeXB0OworKwkJQ01TX1NoYXJlZEluZm9fZW5jb2RlOworKwkJREhfY29tcHV0ZV9rZXlfcGFkZGVkOworKwkJZDJpX0RIeHBhcmFtczsKKysJCWkyZF9ESHhwYXJhbXM7CisrCQlESF9nZXRfMTAyNF8xNjA7CisrCQlESF9nZXRfMjA0OF8yMjQ7CisrCQlESF9nZXRfMjA0OF8yNTY7CisrCQlESF9LREZfWDlfNDI7CisrCQlFQ0RIX0tERl9YOV82MjsKKysJCUVDRFNBX01FVEhPRF9uZXc7CisrCQlFQ0RTQV9NRVRIT0RfZnJlZTsKKysJCUVDRFNBX01FVEhPRF9zZXRfYXBwX2RhdGE7CisrCQlFQ0RTQV9NRVRIT0RfZ2V0X2FwcF9kYXRhOworKwkJRUNEU0FfTUVUSE9EX3NldF9zaWduOworKwkJRUNEU0FfTUVUSE9EX3NldF9zaWduX3NldHVwOworKwkJRUNEU0FfTUVUSE9EX3NldF92ZXJpZnk7CisrCQlFQ0RTQV9NRVRIT0Rfc2V0X2ZsYWdzOworKwkJRUNEU0FfTUVUSE9EX3NldF9uYW1lOworKwkJRVZQX2Rlc19lZGUzX3dyYXA7CisrCQlFVlBfYWVzXzEyOF93cmFwOworKwkJRVZQX2Flc18xOTJfd3JhcDsKKysJCUVWUF9hZXNfMjU2X3dyYXA7CisrCQlFVlBfYWVzXzEyOF9jYmNfaG1hY19zaGEyNTY7CisrCQlFVlBfYWVzXzI1Nl9jYmNfaG1hY19zaGEyNTY7CisrCQlDUllQVE9fMTI4X3dyYXA7CisrCQlDUllQVE9fMTI4X3Vud3JhcDsKKysJCU9DU1BfUkVRX0NUWF9uYmlvOworKwkJT0NTUF9SRVFfQ1RYX25ldzsKKysJCU9DU1Bfc2V0X21heF9yZXNwb25zZV9sZW5ndGg7CisrCQlPQ1NQX1JFUV9DVFhfaTJkOworKwkJT0NTUF9SRVFfQ1RYX25iaW9fZDJpOworKwkJT0NTUF9SRVFfQ1RYX2dldDBfbWVtX2JpbzsKKysJCU9DU1BfUkVRX0NUWF9odHRwOworKwkJUlNBX3BhZGRpbmdfYWRkX1BLQ1MxX09BRVBfbWdmMTsKKysJCVJTQV9wYWRkaW5nX2NoZWNrX1BLQ1MxX09BRVBfbWdmMTsKKysJCVJTQV9PQUVQX1BBUkFNU19mcmVlOworKwkJUlNBX09BRVBfUEFSQU1TX2l0OworKwkJUlNBX09BRVBfUEFSQU1TX25ldzsKKysJCVNTTF9nZXRfc2lnYWxnczsKKysJCVNTTF9nZXRfc2hhcmVkX3NpZ2FsZ3M7CisrCQlTU0xfY2hlY2tfY2hhaW47CisrCQlYNTA5X2NoYWluX3VwX3JlZjsKKysJCVg1MDlfaHR0cF9uYmlvOworKwkJWDUwOV9DUkxfaHR0cF9uYmlvOworKwkJWDUwOV9SRVZPS0VEX2R1cDsKKysJCWkyZF9yZV9YNTA5X3RiczsKKysJCVg1MDlfZ2V0MF9zaWduYXR1cmU7CisrCQlYNTA5X2dldF9zaWduYXR1cmVfbmlkOworKwkJWDUwOV9DUkxfZGlmZjsKKysJCVg1MDlfY2hhaW5fY2hlY2tfc3VpdGViOworKwkJWDUwOV9DUkxfY2hlY2tfc3VpdGViOworKwkJWDUwOV9jaGVja19ob3N0OworKwkJWDUwOV9jaGVja19lbWFpbDsKKysJCVg1MDlfY2hlY2tfaXA7CisrCQlYNTA5X2NoZWNrX2lwX2FzYzsKKysJCVg1MDlfU1RPUkVfc2V0X2xvb2t1cF9jcmxzX2NiOworKwkJWDUwOV9TVE9SRV9DVFhfZ2V0MF9zdG9yZTsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX3NldDFfaG9zdDsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX2FkZDFfaG9zdDsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX3NldF9ob3N0ZmxhZ3M7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9nZXQwX3BlZXJuYW1lOworKwkJWDUwOV9WRVJJRllfUEFSQU1fc2V0MV9lbWFpbDsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX3NldDFfaXA7CisrCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXQxX2lwX2FzYzsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX2dldDBfbmFtZTsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX2dldF9jb3VudDsKKysJCVg1MDlfVkVSSUZZX1BBUkFNX2dldDA7CisrCQlYNTA5VjNfRVhUX2ZyZWU7CisrCQlFQ19HUk9VUF9nZXRfbW9udF9kYXRhOworKwkJRUNfY3VydmVfbmlkMm5pc3Q7CisrCQlFQ19jdXJ2ZV9uaXN0Mm5pZDsKKysJCVBFTV93cml0ZV9iaW9fREh4cGFyYW1zOworKwkJUEVNX3dyaXRlX0RIeHBhcmFtczsKKysJCVNTTF9DVFhfYWRkX2NsaWVudF9jdXN0b21fZXh0OworKwkJU1NMX0NUWF9hZGRfc2VydmVyX2N1c3RvbV9leHQ7CisrCQlTU0xfZXh0ZW5zaW9uX3N1cHBvcnRlZDsKKysJCUJVRl9zdHJubGVuOworKwkJc2tfZGVlcF9jb3B5OworKwkJU1NMX3Rlc3RfZnVuY3Rpb25zOworKworKwlsb2NhbDoKKysJCSo7CisrfTsKKysKKytPUEVOU1NMXzEuMC4yZyB7CisrICAgICAgIGdsb2JhbDoKKysgICAgICAgICAgICAgICBTUlBfVkJBU0VfZ2V0MV9ieV91c2VyOworKyAgICAgICAgICAgICAgIFNSUF91c2VyX3B3ZF9mcmVlOworK30gT1BFTlNTTF8xLjAuMmQ7CisrCitJbmRleDogb3BlbnNzbC0xLjAuMn5iZXRhMS5vYnNvbGV0ZS4wLjA0OTg0MzY1MTU0OTA1NzUvZW5naW5lcy9vcGVuc3NsLmxkCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysgb3BlbnNzbC0xLjAuMn5iZXRhMS5vYnNvbGV0ZS4wLjA0OTg0MzY1MTU0OTA1NzUvZW5naW5lcy9vcGVuc3NsLmxkCTIwMTQtMDItMjQgMjE6MDI6MzAuMDAwMDAwMDAwICswMTAwCitAQCAtMCwwICsxLDEwIEBACisrT1BFTlNTTF8xLjAuMiB7CisrCWdsb2JhbDoKKysJCWJpbmRfZW5naW5lOworKwkJdl9jaGVjazsKKysJCU9QRU5TU0xfaW5pdDsKKysJCU9QRU5TU0xfZmluaXNoOworKwlsb2NhbDoKKysJCSo7CisrfTsKKysKK0luZGV4OiBvcGVuc3NsLTEuMC4yfmJldGExLm9ic29sZXRlLjAuMDQ5ODQzNjUxNTQ5MDU3NS9lbmdpbmVzL2NjZ29zdC9vcGVuc3NsLmxkCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysgb3BlbnNzbC0xLjAuMn5iZXRhMS5vYnNvbGV0ZS4wLjA0OTg0MzY1MTU0OTA1NzUvZW5naW5lcy9jY2dvc3Qvb3BlbnNzbC5sZAkyMDE0LTAyLTI0IDIxOjAyOjMwLjAwMDAwMDAwMCArMDEwMAorQEAgLTAsMCArMSwxMCBAQAorK09QRU5TU0xfMS4wLjIgeworKwlnbG9iYWw6CisrCQliaW5kX2VuZ2luZTsKKysJCXZfY2hlY2s7CisrCQlPUEVOU1NMX2luaXQ7CisrCQlPUEVOU1NMX2ZpbmlzaDsKKysJbG9jYWw6CisrCQkqOworK307CisrCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvZW5naW5lcy1pbnN0YWxsLWluLWxpYmRpci1zc2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL2VuZ2luZXMtaW5zdGFsbC1pbi1saWJkaXItc3NsLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvZW5naW5lcy1pbnN0YWxsLWluLWxpYmRpci1zc2wucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vZW5naW5lcy1pbnN0YWxsLWluLWxpYmRpci1zc2wucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9maW5kLnBsIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9maW5kLnBsCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvZmluZC5wbApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9maW5kLnBsCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvb2UtbGRmbGFncy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vb2UtbGRmbGFncy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL29lLWxkZmxhZ3MucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vb2UtbGRmbGFncy5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL29wZW5zc2wtMS4wLjJhLXgzMi1hc20ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL29wZW5zc2wtMS4wLjJhLXgzMi1hc20ucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9vcGVuc3NsLTEuMC4yYS14MzItYXNtLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL29wZW5zc2wtMS4wLjJhLXgzMi1hc20ucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vb3BlbnNzbC1jX3JlaGFzaC5zaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vb3BlbnNzbC1jX3JlaGFzaC5zaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NjIwZmRjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9vcGVuc3NsLWNfcmVoYXNoLnNoCkBAIC0wLDAgKzEsMjIyIEBACisjIS9iaW4vc2gKKyMKKyMgQmVuIFNlY3Jlc3QgPGJsc2VjcmVzQGdtYWlsLmNvbT4KKyMKKyMgc2ggY19yZWhhc2ggc2NyaXB0LCBzY2FuIGFsbCBmaWxlcyBpbiBhIGRpcmVjdG9yeQorIyBhbmQgYWRkIHN5bWJvbGljIGxpbmtzIHRvIHRoZWlyIGhhc2ggdmFsdWVzLgorIworIyBiYXNlZCBvbiB0aGUgY19yZWhhc2ggcGVybCBzY3JpcHQgZGlzdHJpYnV0ZWQgd2l0aCBvcGVuc3NsCisjCisjIExJQ0VOU0U6IFNlZSBPcGVuU1NMIGxpY2Vuc2UKKyMgXl5hY2NlcHRhYmxlP15eCisjCisKKyMgZGVmYXVsdCBjZXJ0aWZpY2F0ZSBsb2NhdGlvbgorRElSPS9ldGMvb3BlbnNzbAorCisjIGZvciBmaWxldHlwZSBiaXRmaWVsZAorSVNfQ0VSVD0kKCggMSA8PCAwICkpCitJU19DUkw9JCgoIDEgPDwgMSApKQorCisKKyMgY2hlY2sgdG8gc2VlIGlmIGEgZmlsZSBpcyBhIGNlcnRpZmljYXRlIGZpbGUgb3IgYSBDUkwgZmlsZQorIyBhcmd1bWVudHM6CisjICAgICAgIDEuIHRoZSBmaWxlbmFtZSB0byBiZSBzY2FubmVkCisjIHJldHVybnM6CisjICAgICAgIGJpdGZpZWxkIG9mIGZpbGUgdHlwZTsgdXNlcyAke0lTX0NFUlR9IGFuZCAke0lTX0NSTH0KKyMKK2NoZWNrX2ZpbGUoKQoreworICAgIGxvY2FsIElTX1RZUEU9MAorCisgICAgIyBtYWtlIElGUyBhIG5ld2xpbmUgc28gd2UgY2FuIHByb2Nlc3MgZ3JlcCBvdXRwdXQgbGluZSBieSBsaW5lCisgICAgbG9jYWwgT0xESUZTPSR7SUZTfQorICAgIElGUz0kKCBwcmludGYgIlxuIiApCisKKyAgICAjIFhYWDogY291bGQgYmUgbW9yZSBlZmZpY2llbnQgdG8gaGF2ZSB0d28gJ2dyZXAgLW0nIGJ1dCBpcyAtbSBwb3J0YWJsZT8KKyAgICBmb3IgTElORSBpbiAkKCBncmVwICdeLS0tLS1CRUdJTiAuKi0tLS0tJyAkezF9ICkKKyAgICBkbworCWlmIGVjaG8gJHtMSU5FfSBcCisJICAgIHwgZ3JlcCAtcSAtRSAnXi0tLS0tQkVHSU4gKFg1MDkgfFRSVVNURUQgKT9DRVJUSUZJQ0FURS0tLS0tJworCXRoZW4KKwkgICAgSVNfVFlQRT0kKCggJHtJU19UWVBFfSB8ICR7SVNfQ0VSVH0gKSkKKworCSAgICBpZiBbICQoKCAke0lTX1RZUEV9ICYgJHtJU19DUkx9ICkpIC1uZSAwIF0KKwkgICAgdGhlbgorCSAgICAJYnJlYWsKKwkgICAgZmkKKwllbGlmIGVjaG8gJHtMSU5FfSB8IGdyZXAgLXEgJ14tLS0tLUJFR0lOIFg1MDkgQ1JMLS0tLS0nCisJdGhlbgorCSAgICBJU19UWVBFPSQoKCAke0lTX1RZUEV9IHwgJHtJU19DUkx9ICkpCisKKwkgICAgaWYgWyAkKCggJHtJU19UWVBFfSAmICR7SVNfQ0VSVH0gKSkgLW5lIDAgXQorCSAgICB0aGVuCisJICAgIAlicmVhaworCSAgICBmaQorCWZpCisgICAgZG9uZQorCisgICAgIyByZXN0b3JlIElGUworICAgIElGUz0ke09MRElGU30KKworICAgIHJldHVybiAke0lTX1RZUEV9Cit9CisKKworIworIyB1c2Ugb3BlbnNzbCB0byBmaW5nZXJwcmludCBhIGZpbGUKKyMgICAgYXJndW1lbnRzOgorIwkxLiB0aGUgZmlsZW5hbWUgdG8gZmluZ2VycHJpbnQKKyMJMi4gdGhlIG1ldGhvZCB0byB1c2UgKHg1MDksIGNybCkKKyMgICAgcmV0dXJuczoKKyMJbm9uZQorIyAgICBhc3N1bXB0aW9uczoKKyMJdXNlciB3aWxsIGNhcHR1cmUgb3V0cHV0IGZyb20gbGFzdCBzdGFnZSBvZiBwaXBlbGluZQorIworZmluZ2VycHJpbnQoKQoreworICAgICR7U1NMX0NNRH0gJHsyfSAtZmluZ2VycHJpbnQgLW5vb3V0IC1pbiAkezF9IHwgc2VkICdzL14uKj0vLycgfCB0ciAtZCAnOicKK30KKworCisjCisjIGxpbmtfaGFzaCAtIGNyZWF0ZSBsaW5rcyB0byBjZXJ0aWZpY2F0ZSBmaWxlcworIyAgICBhcmd1bWVudHM6CisjICAgICAgIDEuIHRoZSBmaWxlbmFtZSB0byBjcmVhdGUgYSBsaW5rIGZvcgorIwkyLiB0aGUgdHlwZSBvZiBjZXJ0aWZpY2F0ZSBiZWluZyBsaW5rZWQgKHg1MDksIGNybCkKKyMgICAgcmV0dXJuczoKKyMJMCBvbiBzdWNjZXNzLCAxIG90aGVyd2lzZQorIworbGlua19oYXNoKCkKK3sKKyAgICBsb2NhbCBGSU5HRVJQUklOVD0kKCBmaW5nZXJwcmludCAkezF9ICR7Mn0gKQorICAgIGxvY2FsIEhBU0g9JCggJHtTU0xfQ01EfSAkezJ9IC1oYXNoIC1ub291dCAtaW4gJHsxfSApCisgICAgbG9jYWwgU1VGRklYPTAKKyAgICBsb2NhbCBMSU5LRklMRT0nJworICAgIGxvY2FsIFRBRz0nJworCisgICAgaWYgWyAkezJ9ID0gImNybCIgXQorICAgIHRoZW4KKyAgICAJVEFHPSdyJworICAgIGZpCisKKyAgICBMSU5LRklMRT0ke0hBU0h9LiR7VEFHfSR7U1VGRklYfQorCisgICAgd2hpbGUgWyAtZiAke0xJTktGSUxFfSBdCisgICAgZG8KKwlpZiBbICR7RklOR0VSUFJJTlR9ID0gJCggZmluZ2VycHJpbnQgJHtMSU5LRklMRX0gJHsyfSApIF0KKwl0aGVuCisJICAgIGVjaG8gIk5PVEU6IFNraXBwaW5nIGR1cGxpY2F0ZSBmaWxlICR7MX0iID4mMgorCSAgICByZXR1cm4gMQorCWZpCQorCisJU1VGRklYPSQoKCAke1NVRkZJWH0gKyAxICkpCisJTElOS0ZJTEU9JHtIQVNIfS4ke1RBR30ke1NVRkZJWH0KKyAgICBkb25lCisKKyAgICBlY2hvICIkezN9ID0+ICR7TElOS0ZJTEV9IgorCisgICAgIyBhc3N1bWUgYW55IHN5c3RlbSB3aXRoIGEgUE9TSVggc2hlbGwgd2lsbCBlaXRoZXIgc3VwcG9ydCBzeW1saW5rcyBvcgorICAgICMgZG8gc29tZXRoaW5nIHRvIGhhbmRsZSB0aGlzIGdyYWNlZnVsbHkKKyAgICBsbiAtcyAkezN9ICR7TElOS0ZJTEV9CisKKyAgICByZXR1cm4gMAorfQorCisKKyMgaGFzaF9kaXIgY3JlYXRlIGhhc2ggbGlua3MgaW4gYSBnaXZlbiBkaXJlY3RvcnkKK2hhc2hfZGlyKCkKK3sKKyAgICBlY2hvICJEb2luZyAkezF9IgorCisgICAgY2QgJHsxfQorCisgICAgbHMgLTEgKiAyPi9kZXYvbnVsbCB8IHdoaWxlIHJlYWQgRklMRQorICAgIGRvCisgICAgICAgIGlmIGVjaG8gJHtGSUxFfSB8IGdyZXAgLXEgLUUgJ15bWzp4ZGlnaXQ6XV17OH1cLnI/W1s6ZGlnaXQ6XV0rJCcgXAorCSAgICAJJiYgWyAtaCAiJHtGSUxFfSIgXQorICAgICAgICB0aGVuCisgICAgICAgICAgICBybSAke0ZJTEV9CisgICAgICAgIGZpCisgICAgZG9uZQorCisgICAgbHMgLTEgKi5wZW0gKi5jZXIgKi5jcnQgKi5jcmwgMj4vZGV2L251bGwgfCB3aGlsZSByZWFkIEZJTEUKKyAgICBkbworCVJFQUxfRklMRT0ke0ZJTEV9CisJIyBpZiB3ZSBydW4gb24gYnVpbGQgaG9zdCB0aGVuIGdldCB0byB0aGUgcmVhbCBmaWxlcyBpbiByb290ZnMKKwlpZiBbIC1uICIke1NZU1JPT1R9IiAtYSAtaCAke0ZJTEV9IF0KKwl0aGVuCisJICAgIEZJTEU9JCggcmVhZGxpbmsgJHtGSUxFfSApCisJICAgICMgY2hlY2sgdGhlIHN5bWxpbmsgaXMgYWJzb2x1dGUgKG9yIGRhbmdsaW5nIGluIG90aGVyIHdvcmQpCisJICAgIGlmIFsgIngvIiA9ICJ4JCggZWNobyAke0ZJTEV9IHwgY3V0IC1jMSAtKSIgXQorCSAgICB0aGVuCisJCVJFQUxfRklMRT0ke1NZU1JPT1R9LyR7RklMRX0KKwkgICAgZmkKKwlmaQorCisJY2hlY2tfZmlsZSAke1JFQUxfRklMRX0KKyAgICAgICAgbG9jYWwgRklMRV9UWVBFPSR7P30KKwlsb2NhbCBUWVBFX1NUUj0nJworCisgICAgICAgIGlmIFsgJCgoICR7RklMRV9UWVBFfSAmICR7SVNfQ0VSVH0gKSkgLW5lIDAgXQorICAgICAgICB0aGVuCisgICAgICAgICAgICBUWVBFX1NUUj0neDUwOScKKyAgICAgICAgZWxpZiBbICQoKCAke0ZJTEVfVFlQRX0gJiAke0lTX0NSTH0gKSkgLW5lIDAgXQorICAgICAgICB0aGVuCisgICAgICAgICAgICBUWVBFX1NUUj0nY3JsJworICAgICAgICBlbHNlCisgICAgICAgICAgICBlY2hvICJOT1RFOiAke0ZJTEV9IGRvZXMgbm90IGNvbnRhaW4gYSBjZXJ0aWZpY2F0ZSBvciBDUkw6IHNraXBwaW5nIiA+JjIKKwkgICAgY29udGludWUKKyAgICAgICAgZmkKKworCWxpbmtfaGFzaCAke1JFQUxfRklMRX0gJHtUWVBFX1NUUn0gJHtGSUxFfQorICAgIGRvbmUKK30KKworCisjIGNob29zZSB0aGUgbmFtZSBvZiBhbiBzc2wgYXBwbGljYXRpb24KK2lmIFsgLW4gIiR7T1BFTlNTTH0iIF0KK3RoZW4KKyAgICBTU0xfQ01EPSQod2hpY2ggJHtPUEVOU1NMfSAyPi9kZXYvbnVsbCkKK2Vsc2UKKyAgICBTU0xfQ01EPS91c3IvYmluL29wZW5zc2wKKyAgICBPUEVOU1NMPSR7U1NMX0NNRH0KKyAgICBleHBvcnQgT1BFTlNTTAorZmkKKworIyBmaXggcGF0aHMKK1BBVEg9JHtQQVRIfToke0RJUn0vYmluCitleHBvcnQgUEFUSAorCisjIGNvbmZpcm0gZXhpc3RhbmNlL2V4ZWN1dGFiaWxpdHkgb2Ygc3NsIGNvbW1hbmQKK2lmICEgWyAteCAke1NTTF9DTUR9IF0KK3RoZW4KKyAgICBlY2hvICIkezB9OiByZWhhc2hpbmcgc2tpcHBlZCAoJ29wZW5zc2wnIHByb2dyYW0gbm90IGF2YWlsYWJsZSkiID4mMgorICAgIGV4aXQgMAorZmkKKworIyBkZXRlcm1pbmUgd2hpY2ggZGlyZWN0b3JpZXMgdG8gcHJvY2Vzcworb2xkX0lGUz0kSUZTCitpZiBbICR7I30gLWd0IDAgXQordGhlbgorICAgIElGUz0nOicKKyAgICBESVJMSVNUPSR7Kn0KK2VsaWYgWyAtbiAiJHtTU0xfQ0VSVF9ESVJ9IiBdCit0aGVuCisgICAgRElSTElTVD0kU1NMX0NFUlRfRElSCitlbHNlCisgICAgRElSTElTVD0ke0RJUn0vY2VydHMKK2ZpCisKK0lGUz0nOicKKworIyBwcm9jZXNzIGRpcmVjdG9yaWVzCitmb3IgQ0VSVF9ESVIgaW4gJHtESVJMSVNUfQorZG8KKyAgICBpZiBbIC1kICR7Q0VSVF9ESVJ9IC1hIC13ICR7Q0VSVF9ESVJ9IF0KKyAgICB0aGVuCisgICAgICAgIElGUz0kb2xkX0lGUworICAgICAgICBoYXNoX2RpciAke0NFUlRfRElSfQorICAgICAgICBJRlM9JzonCisgICAgZmkKK2RvbmUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9vcGVuc3NsLWZpeC1kZXMucG9kLWVycm9yLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9vcGVuc3NsLWZpeC1kZXMucG9kLWVycm9yLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvb3BlbnNzbC1maXgtZGVzLnBvZC1lcnJvci5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9vcGVuc3NsLWZpeC1kZXMucG9kLWVycm9yLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvb3BlbnNzbC11dGlsLXBlcmxwYXRoLnBsLWN3ZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vb3BlbnNzbC11dGlsLXBlcmxwYXRoLnBsLWN3ZC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL29wZW5zc2wtdXRpbC1wZXJscGF0aC5wbC1jd2QucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vb3BlbnNzbC11dGlsLXBlcmxwYXRoLnBsLWN3ZC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL29wZW5zc2xfZml4X2Zvcl94MzIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL29wZW5zc2xfZml4X2Zvcl94MzIucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9vcGVuc3NsX2ZpeF9mb3JfeDMyLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL29wZW5zc2xfZml4X2Zvcl94MzIucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vcGFyYWxsZWwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL3BhcmFsbGVsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1NDEzYmYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL3BhcmFsbGVsLnBhdGNoCkBAIC0wLDAgKzEsMzcwIEBACitGcm9tIDdmYjExOTJmMTEyYzE5MjBiZmQzOWY0MTg1ZjM0ZTlhZmZmM2NmZjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorRGF0ZTogU2F0LCA1IE1hciAyMDE2IDAwOjEyOjAyICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMjQvMjhdIEZpeCB0aGUgcGFyYWxsZWwgcmFjZXMgaW4gdGhlIE1ha2VmaWxlcy4KKworVGhpcyBwYXRjaCB3YXMgdGFrZW4gZnJvbSB0aGUgR2VudG9vIHBhY2thZ2luZzoKK2h0dHBzOi8vZ2l0d2ViLmdlbnRvby5vcmcvcmVwby9nZW50b28uZ2l0L3BsYWluL2Rldi1saWJzL29wZW5zc2wvZmlsZXMvb3BlbnNzbC0xLjAuMmctcGFyYWxsZWwtYnVpbGQucGF0Y2gKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCitSZWZyZXNoZWQgZm9yIDEuMC4yaQorU2lnbmVkLW9mZi1ieTogUGF0cmljayBPaGx5IDxwYXRyaWNrLm9obHlAaW50ZWwuY29tPgorCistLS0KKyBNYWtlZmlsZS5vcmcgICAgICAgICAgfCAgMTQgKy0KKyBNYWtlZmlsZS5vcmcub3JpZyAgICAgfCAgMTAgKy0KKyBNYWtlZmlsZS5zaGFyZWQgICAgICAgfCAgIDIgKworIE1ha2VmaWxlLnNoYXJlZC5vcmlnICB8IDY1NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIGNyeXB0by9NYWtlZmlsZSAgICAgICB8ICAxMCArLQorIGVuZ2luZXMvTWFrZWZpbGUgICAgICB8ICAgNiArLQorIGVuZ2luZXMvTWFrZWZpbGUub3JpZyB8IDMzOCArKysrKysrKysrKysrKysrKysrKysrKysrKworIHRlc3QvTWFrZWZpbGUgICAgICAgICB8ICA5MiArKystLS0tCisgdGVzdC9NYWtlZmlsZS5vcmlnICAgIHwgIDg4ICsrKystLS0KKyA5IGZpbGVzIGNoYW5nZWQsIDExMDggaW5zZXJ0aW9ucygrKSwgMTA3IGRlbGV0aW9ucygtKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBNYWtlZmlsZS5zaGFyZWQub3JpZworIGNyZWF0ZSBtb2RlIDEwMDY0NCBlbmdpbmVzL01ha2VmaWxlLm9yaWcKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLm9yZyBiL01ha2VmaWxlLm9yZworaW5kZXggOGU3OTM2Yy4uZWQ5OGQyYSAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLm9yZworKysrIGIvTWFrZWZpbGUub3JnCitAQCAtMjgzLDE3ICsyODMsMTcgQEAgYnVpbGRfbGliY3J5cHRvOiBidWlsZF9jcnlwdG8gYnVpbGRfZW5naW5lcyBsaWJjcnlwdG8ucGMKKyBidWlsZF9saWJzc2w6IGJ1aWxkX3NzbCBsaWJzc2wucGMKKyAKKyBidWlsZF9jcnlwdG86CistCUBkaXI9Y3J5cHRvOyB0YXJnZXQ9YWxsOyAkKEJVSUxEX09ORV9DTUQpCisrCStAZGlyPWNyeXB0bzsgdGFyZ2V0PWFsbDsgJChCVUlMRF9PTkVfQ01EKQorIGJ1aWxkX3NzbDogYnVpbGRfY3J5cHRvCistCUBkaXI9c3NsOyB0YXJnZXQ9YWxsOyAkKEJVSUxEX09ORV9DTUQpCisrCStAZGlyPXNzbDsgdGFyZ2V0PWFsbDsgJChCVUlMRF9PTkVfQ01EKQorIGJ1aWxkX2VuZ2luZXM6IGJ1aWxkX2NyeXB0bworLQlAZGlyPWVuZ2luZXM7IHRhcmdldD1hbGw7ICQoQlVJTERfT05FX0NNRCkKKysJK0BkaXI9ZW5naW5lczsgdGFyZ2V0PWFsbDsgJChCVUlMRF9PTkVfQ01EKQorIGJ1aWxkX2FwcHM6IGJ1aWxkX2xpYnMKKy0JQGRpcj1hcHBzOyB0YXJnZXQ9YWxsOyAkKEJVSUxEX09ORV9DTUQpCisrCStAZGlyPWFwcHM7IHRhcmdldD1hbGw7ICQoQlVJTERfT05FX0NNRCkKKyBidWlsZF90ZXN0czogYnVpbGRfbGlicworLQlAZGlyPXRlc3Q7IHRhcmdldD1hbGw7ICQoQlVJTERfT05FX0NNRCkKKysJK0BkaXI9dGVzdDsgdGFyZ2V0PWFsbDsgJChCVUlMRF9PTkVfQ01EKQorIGJ1aWxkX3Rvb2xzOiBidWlsZF9saWJzCistCUBkaXI9dG9vbHM7IHRhcmdldD1hbGw7ICQoQlVJTERfT05FX0NNRCkKKysJK0BkaXI9dG9vbHM7IHRhcmdldD1hbGw7ICQoQlVJTERfT05FX0NNRCkKKyAKKyBhbGxfdGVzdGFwcHM6IGJ1aWxkX2xpYnMgYnVpbGRfdGVzdGFwcHMKKyBidWlsZF90ZXN0YXBwczoKK0BAIC01NjUsNyArNTY1LDcgQEAgaW5zdGFsbF9zdzoKKyAJKGNwICQkaSAkKElOU1RBTExfUFJFRklYKSQoSU5TVEFMTFRPUCkvaW5jbHVkZS9vcGVuc3NsLyQkaTsgXAorIAljaG1vZCA2NDQgJChJTlNUQUxMX1BSRUZJWCkkKElOU1RBTExUT1ApL2luY2x1ZGUvb3BlbnNzbC8kJGkgKTsgXAorIAlkb25lOworLQlAc2V0IC1lOyB0YXJnZXQ9aW5zdGFsbDsgJChSRUNVUlNJVkVfQlVJTERfQ01EKQorKwkrQHNldCAtZTsgdGFyZ2V0PWluc3RhbGw7ICQoUkVDVVJTSVZFX0JVSUxEX0NNRCkKKyAJQHNldCAtZTsgbGlibGlzdD0iJChMSUJTKSI7IGZvciBpIGluICQkbGlibGlzdCA7XAorIAlkbyBcCisgCQlpZiBbIC1mICIkJGkiIF07IHRoZW4gXAorZGlmZiAtLWdpdCBhL01ha2VmaWxlLnNoYXJlZCBiL01ha2VmaWxlLnNoYXJlZAoraW5kZXggZjZmOTJlNy4uODE2NDE4NiAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLnNoYXJlZAorKysrIGIvTWFrZWZpbGUuc2hhcmVkCitAQCAtMTA1LDYgKzEwNSw3IEBAIExJTktfU089CVwKKyAgICAgU0hBUkVERkxBR1M9IiQoT0VfTERGTEFHUykgJCR7U0hBUkVERkxBR1M6LSQoQ0ZMQUdTKSAkKFNIQVJFRF9MREZMQUdTKX0iOyBcCisgICAgIExJQlBBVEg9YGZvciB4IGluICQkTElCREVQUzsgZG8gZWNobyAkJHg7IGRvbmUgfCBzZWQgLWUgJ3MvXiAqLUwvLzt0JyAtZSBkIHwgdW5pcWA7IFwKKyAgICAgTElCUEFUSD1gZWNobyAkJExJQlBBVEggfCBzZWQgLWUgJ3MvIC86L2cnYDsgXAorKyAgICBbIC1lICQkU0hMSUIkJFNITElCX1NPVkVSJCRTSExJQl9TVUZGSVggXSAmJiBleGl0IDA7IFwKKyAgICAgTERfTElCUkFSWV9QQVRIPSQkTElCUEFUSDokJExEX0xJQlJBUllfUEFUSCBcCisgICAgICQke1NIQVJFRENNRH0gJCR7U0hBUkVERkxBR1N9IFwKKyAJLW8gJCRTSExJQiQkU0hMSUJfU09WRVIkJFNITElCX1NVRkZJWCBcCitAQCAtMTIyLDYgKzEyMyw3IEBAIFNZTUxJTktfU089CVwKKyAJCQlkb25lOyBcCisgCQlmaTsgXAorIAkJaWYgWyAtbiAiJCRTSExJQl9TT1ZFUiIgXTsgdGhlbiBcCisrCQkJWyAtZSAiJCRTSExJQiQkU0hMSUJfU1VGRklYIiBdIHx8IFwKKyAJCQkoICQoU0VUX1gpOyBybSAtZiAkJFNITElCJCRTSExJQl9TVUZGSVg7IFwKKyAJCQkgIGxuIC1zICQkcHJldiAkJFNITElCJCRTSExJQl9TVUZGSVggKTsgXAorIAkJZmk7IFwKK2RpZmYgLS1naXQgYS9jcnlwdG8vTWFrZWZpbGUgYi9jcnlwdG8vTWFrZWZpbGUKK2luZGV4IDE3YTg3ZjguLjI5YzJkY2YgMTAwNjQ0CistLS0gYS9jcnlwdG8vTWFrZWZpbGUKKysrKyBiL2NyeXB0by9NYWtlZmlsZQorQEAgLTg1LDExICs4NSwxMSBAQCB0ZXN0YXBwczoKKyAJQGlmIFsgLXogIiQoVEhJUykiIF07IHRoZW4gJChNQUtFKSAtZiAkKFRPUCkvTWFrZWZpbGUgcmVmbGVjdCBUSElTPSRAOyBmaQorIAorIHN1YmRpcnM6CistCUB0YXJnZXQ9YWxsOyAkKFJFQ1VSU0lWRV9NQUtFKQorKwkrQHRhcmdldD1hbGw7ICQoUkVDVVJTSVZFX01BS0UpCisgCisgZmlsZXM6CisgCSQoUEVSTCkgJChUT1ApL3V0aWwvZmlsZXMucGwgIkNQVUlEX09CSj0kKENQVUlEX09CSikiIE1ha2VmaWxlID4+ICQoVE9QKS9NSU5GTworLQlAdGFyZ2V0PWZpbGVzOyAkKFJFQ1VSU0lWRV9NQUtFKQorKwkrQHRhcmdldD1maWxlczsgJChSRUNVUlNJVkVfTUFLRSkKKyAKKyBsaW5rczoKKyAJQCQoUEVSTCkgJChUT1ApL3V0aWwvbWtsaW5rLnBsIC4uL2luY2x1ZGUvb3BlbnNzbCAkKEVYSEVBREVSKQorQEAgLTEwMCw3ICsxMDAsNyBAQCBsaW5rczoKKyAjIGxpYjogJChMSUIpOiBhcmUgc3BsaXR0ZWQgdG8gYXZvaWQgZW5kLWxlc3MgbG9vcAorIGxpYjoJJChMSUIpCisgCUB0b3VjaCBsaWIKKy0kKExJQik6CSQoTElCT0JKKQorKyQoTElCKToJJChMSUJPQkopIHwgc3ViZGlycworIAkkKEFSKSAkKExJQikgJChMSUJPQkopCisgCXRlc3QgLXogIiQoRklQU0xJQkRJUikiIHx8ICQoQVIpICQoTElCKSAkKEZJUFNMSUJESVIpZmlwc2NhbmlzdGVyLm8KKyAJJChSQU5MSUIpICQoTElCKSB8fCBlY2hvIE5ldmVyIG1pbmQuCitAQCAtMTExLDcgKzExMSw3IEBAIHNoYXJlZDogYnVpbGRpbmYuaCBsaWIgc3ViZGlycworIAlmaQorIAorIGxpYnM6CistCUB0YXJnZXQ9bGliOyAkKFJFQ1VSU0lWRV9NQUtFKQorKwkrQHRhcmdldD1saWI7ICQoUkVDVVJTSVZFX01BS0UpCisgCisgaW5zdGFsbDoKKyAJQFsgLW4gIiQoSU5TVEFMTFRPUCkiIF0gIyBzaG91bGQgYmUgc2V0IGJ5IHRvcCBNYWtlZmlsZS4uLgorQEAgLTEyMCw3ICsxMjAsNyBAQCBpbnN0YWxsOgorIAkoY3AgJCRpICQoSU5TVEFMTF9QUkVGSVgpJChJTlNUQUxMVE9QKS9pbmNsdWRlL29wZW5zc2wvJCRpOyBcCisgCWNobW9kIDY0NCAkKElOU1RBTExfUFJFRklYKSQoSU5TVEFMTFRPUCkvaW5jbHVkZS9vcGVuc3NsLyQkaSApOyBcCisgCWRvbmU7CistCUB0YXJnZXQ9aW5zdGFsbDsgJChSRUNVUlNJVkVfTUFLRSkKKysJK0B0YXJnZXQ9aW5zdGFsbDsgJChSRUNVUlNJVkVfTUFLRSkKKyAKKyBsaW50OgorIAlAdGFyZ2V0PWxpbnQ7ICQoUkVDVVJTSVZFX01BS0UpCitkaWZmIC0tZ2l0IGEvZW5naW5lcy9NYWtlZmlsZSBiL2VuZ2luZXMvTWFrZWZpbGUKK2luZGV4IGZlOGU5Y2EuLmE0M2QyMWIgMTAwNjQ0CistLS0gYS9lbmdpbmVzL01ha2VmaWxlCisrKysgYi9lbmdpbmVzL01ha2VmaWxlCitAQCAtNzIsNyArNzIsNyBAQCB0b3A6CisgCisgYWxsOglsaWIgc3ViZGlycworIAorLWxpYjoJJChMSUJPQkopCisrbGliOgkkKExJQk9CSikgfCBzdWJkaXJzCisgCUBpZiBbIC1uICIkKFNIQVJFRF9MSUJTKSIgXTsgdGhlbiBcCisgCQlzZXQgLWU7IFwKKyAJCWZvciBsIGluICQoTElCTkFNRVMpOyBkbyBcCitAQCAtODksNyArODksNyBAQCBsaWI6CSQoTElCT0JKKQorIAorIHN1YmRpcnM6CisgCWVjaG8gJChFRElSUykKKy0JQHRhcmdldD1hbGw7ICQoUkVDVVJTSVZFX01BS0UpCisrCStAdGFyZ2V0PWFsbDsgJChSRUNVUlNJVkVfTUFLRSkKKyAKKyBmaWxlczoKKyAJJChQRVJMKSAkKFRPUCkvdXRpbC9maWxlcy5wbCBNYWtlZmlsZSA+PiAkKFRPUCkvTUlORk8KK0BAIC0xMjgsNyArMTI4LDcgQEAgaW5zdGFsbDoKKyAJCQkgIG12IC1mICQoSU5TVEFMTF9QUkVGSVgpJChJTlNUQUxMVE9QKS8kKExJQkRJUikvc3NsL2VuZ2luZXMvJCRwZngkJGwkJHNmeC5uZXcgJChJTlNUQUxMX1BSRUZJWCkkKElOU1RBTExUT1ApLyQoTElCRElSKS9zc2wvZW5naW5lcy8kJHBmeCQkbCQkc2Z4ICk7IFwKKyAJCWRvbmU7IFwKKyAJZmkKKy0JQHRhcmdldD1pbnN0YWxsOyAkKFJFQ1VSU0lWRV9NQUtFKQorKwkrQHRhcmdldD1pbnN0YWxsOyAkKFJFQ1VSU0lWRV9NQUtFKQorIAorIHRhZ3M6CisgCWN0YWdzICQoU1JDKQorZGlmZiAtLWdpdCBhL3Rlc3QvTWFrZWZpbGUgYi90ZXN0L01ha2VmaWxlCitpbmRleCA0MGFiZDYwLi43OGQzNzg4IDEwMDY0NAorLS0tIGEvdGVzdC9NYWtlZmlsZQorKysrIGIvdGVzdC9NYWtlZmlsZQorQEAgLTE0NSw3ICsxNDUsNyBAQCBpbnN0YWxsOgorIHRhZ3M6CisgCWN0YWdzICQoU1JDKQorIAorLXRlc3RzOglleGUgYXBwcyAkKFRFU1RTKQorK3Rlc3RzOglleGUgJChURVNUUykKKyAKKyBhcHBzOgorIAlAKGNkIC4uOyAkKE1BS0UpIERJUlM9YXBwcyBhbGwpCitAQCAtNDQ0LDEzOSArNDQ0LDEzOSBAQCBCVUlMRF9DTURfU1RBVElDPXNobGliX3RhcmdldD07IFwKKyAJCWxpbmtfYXBwLiQke3NobGliX3RhcmdldH0KKyAKKyAkKFJTQVRFU1QpJChFWEVfRVhUKTogJChSU0FURVNUKS5vICQoRExJQkNSWVBUTykKKy0JQHRhcmdldD0kKFJTQVRFU1QpOyAkKEJVSUxEX0NNRCkKKysJK0B0YXJnZXQ9JChSU0FURVNUKTsgJChCVUlMRF9DTUQpCisgCisgJChCTlRFU1QpJChFWEVfRVhUKTogJChCTlRFU1QpLm8gJChETElCQ1JZUFRPKQorLQlAdGFyZ2V0PSQoQk5URVNUKTsgJChCVUlMRF9DTUQpCisrCStAdGFyZ2V0PSQoQk5URVNUKTsgJChCVUlMRF9DTUQpCisgCisgJChFQ1RFU1QpJChFWEVfRVhUKTogJChFQ1RFU1QpLm8gJChETElCQ1JZUFRPKQorLQlAdGFyZ2V0PSQoRUNURVNUKTsgJChCVUlMRF9DTUQpCisrCStAdGFyZ2V0PSQoRUNURVNUKTsgJChCVUlMRF9DTUQpCisgCisgJChFWFBURVNUKSQoRVhFX0VYVCk6ICQoRVhQVEVTVCkubyAkKERMSUJDUllQVE8pCistCUB0YXJnZXQ9JChFWFBURVNUKTsgJChCVUlMRF9DTUQpCisrCStAdGFyZ2V0PSQoRVhQVEVTVCk7ICQoQlVJTERfQ01EKQorIAorICQoSURFQVRFU1QpJChFWEVfRVhUKTogJChJREVBVEVTVCkubyAkKERMSUJDUllQVE8pCistCUB0YXJnZXQ9JChJREVBVEVTVCk7ICQoQlVJTERfQ01EKQorKwkrQHRhcmdldD0kKElERUFURVNUKTsgJChCVUlMRF9DTUQpCisgCisgJChNRDJURVNUKSQoRVhFX0VYVCk6ICQoTUQyVEVTVCkubyAkKERMSUJDUllQVE8pCistCUB0YXJnZXQ9JChNRDJURVNUKTsgJChCVUlMRF9DTUQpCisrCStAdGFyZ2V0PSQoTUQyVEVTVCk7ICQoQlVJTERfQ01EKQorIAorICQoU0hBVEVTVCkkKEVYRV9FWFQpOiAkKFNIQVRFU1QpLm8gJChETElCQ1JZUFRPKQorLQlAdGFyZ2V0PSQoU0hBVEVTVCk7ICQoQlVJTERfQ01EKQorKwkrQHRhcmdldD0kKFNIQVRFU1QpOyAkKEJVSUxEX0NNRCkKKyAKKyAkKFNIQTFURVNUKSQoRVhFX0VYVCk6ICQoU0hBMVRFU1QpLm8gJChETElCQ1JZUFRPKQorLQlAdGFyZ2V0PSQoU0hBMVRFU1QpOyAkKEJVSUxEX0NNRCkKKysJK0B0YXJnZXQ9JChTSEExVEVTVCk7ICQoQlVJTERfQ01EKQorIAorICQoU0hBMjU2VEVTVCkkKEVYRV9FWFQpOiAkKFNIQTI1NlRFU1QpLm8gJChETElCQ1JZUFRPKQorLQlAdGFyZ2V0PSQoU0hBMjU2VEVTVCk7ICQoQlVJTERfQ01EKQorKwkrQHRhcmdldD0kKFNIQTI1NlRFU1QpOyAkKEJVSUxEX0NNRCkKKyAKKyAkKFNIQTUxMlRFU1QpJChFWEVfRVhUKTogJChTSEE1MTJURVNUKS5vICQoRExJQkNSWVBUTykKKy0JQHRhcmdldD0kKFNIQTUxMlRFU1QpOyAkKEJVSUxEX0NNRCkKKysJK0B0YXJnZXQ9JChTSEE1MTJURVNUKTsgJChCVUlMRF9DTUQpCisgCisgJChSTURURVNUKSQoRVhFX0VYVCk6ICQoUk1EVEVTVCkubyAkKERMSUJDUllQVE8pCistCUB0YXJnZXQ9JChSTURURVNUKTsgJChCVUlMRF9DTUQpCisrCStAdGFyZ2V0PSQoUk1EVEVTVCk7ICQoQlVJTERfQ01EKQorIAorICQoTURDMlRFU1QpJChFWEVfRVhUKTogJChNREMyVEVTVCkubyAkKERMSUJDUllQVE8pCistCUB0YXJnZXQ9JChNREMyVEVTVCk7ICQoQlVJTERfQ01EKQorKwkrQHRhcmdldD0kKE1EQzJURVNUKTsgJChCVUlMRF9DTUQpCisgCisgJChNRDRURVNUKSQoRVhFX0VYVCk6ICQoTUQ0VEVTVCkubyAkKERMSUJDUllQVE8pCistCUB0YXJnZXQ9JChNRDRURVNUKTsgJChCVUlMRF9DTUQpCisrCStAdGFyZ2V0PSQoTUQ0VEVTVCk7ICQoQlVJTERfQ01EKQorIAorICQoTUQ1VEVTVCkkKEVYRV9FWFQpOiAkKE1ENVRFU1QpLm8gJChETElCQ1JZUFRPKQorLQlAdGFyZ2V0PSQoTUQ1VEVTVCk7ICQoQlVJTERfQ01EKQorKwkrQHRhcmdldD0kKE1ENVRFU1QpOyAkKEJVSUxEX0NNRCkKKyAKKyAkKEhNQUNURVNUKSQoRVhFX0VYVCk6ICQoSE1BQ1RFU1QpLm8gJChETElCQ1JZUFRPKQorLQlAdGFyZ2V0PSQoSE1BQ1RFU1QpOyAkKEJVSUxEX0NNRCkKKysJK0B0YXJnZXQ9JChITUFDVEVTVCk7ICQoQlVJTERfQ01EKQorIAorICQoV1BURVNUKSQoRVhFX0VYVCk6ICQoV1BURVNUKS5vICQoRExJQkNSWVBUTykKKy0JQHRhcmdldD0kKFdQVEVTVCk7ICQoQlVJTERfQ01EKQorKwkrQHRhcmdldD0kKFdQVEVTVCk7ICQoQlVJTERfQ01EKQorIAorICQoUkMyVEVTVCkkKEVYRV9FWFQpOiAkKFJDMlRFU1QpLm8gJChETElCQ1JZUFRPKQorLQlAdGFyZ2V0PSQoUkMyVEVTVCk7ICQoQlVJTERfQ01EKQorKwkrQHRhcmdldD0kKFJDMlRFU1QpOyAkKEJVSUxEX0NNRCkKKyAKKyAkKEJGVEVTVCkkKEVYRV9FWFQpOiAkKEJGVEVTVCkubyAkKERMSUJDUllQVE8pCistCUB0YXJnZXQ9JChCRlRFU1QpOyAkKEJVSUxEX0NNRCkKKysJK0B0YXJnZXQ9JChCRlRFU1QpOyAkKEJVSUxEX0NNRCkKKyAKKyAkKENBU1RURVNUKSQoRVhFX0VYVCk6ICQoQ0FTVFRFU1QpLm8gJChETElCQ1JZUFRPKQorLQlAdGFyZ2V0PSQoQ0FTVFRFU1QpOyAkKEJVSUxEX0NNRCkKKysJK0B0YXJnZXQ9JChDQVNUVEVTVCk7ICQoQlVJTERfQ01EKQorIAorICQoUkM0VEVTVCkkKEVYRV9FWFQpOiAkKFJDNFRFU1QpLm8gJChETElCQ1JZUFRPKQorLQlAdGFyZ2V0PSQoUkM0VEVTVCk7ICQoQlVJTERfQ01EKQorKwkrQHRhcmdldD0kKFJDNFRFU1QpOyAkKEJVSUxEX0NNRCkKKyAKKyAkKFJDNVRFU1QpJChFWEVfRVhUKTogJChSQzVURVNUKS5vICQoRExJQkNSWVBUTykKKy0JQHRhcmdldD0kKFJDNVRFU1QpOyAkKEJVSUxEX0NNRCkKKysJK0B0YXJnZXQ9JChSQzVURVNUKTsgJChCVUlMRF9DTUQpCisgCisgJChERVNURVNUKSQoRVhFX0VYVCk6ICQoREVTVEVTVCkubyAkKERMSUJDUllQVE8pCistCUB0YXJnZXQ9JChERVNURVNUKTsgJChCVUlMRF9DTUQpCisrCStAdGFyZ2V0PSQoREVTVEVTVCk7ICQoQlVJTERfQ01EKQorIAorICQoUkFORFRFU1QpJChFWEVfRVhUKTogJChSQU5EVEVTVCkubyAkKERMSUJDUllQVE8pCistCUB0YXJnZXQ9JChSQU5EVEVTVCk7ICQoQlVJTERfQ01EKQorKwkrQHRhcmdldD0kKFJBTkRURVNUKTsgJChCVUlMRF9DTUQpCisgCisgJChESFRFU1QpJChFWEVfRVhUKTogJChESFRFU1QpLm8gJChETElCQ1JZUFRPKQorLQlAdGFyZ2V0PSQoREhURVNUKTsgJChCVUlMRF9DTUQpCisrCStAdGFyZ2V0PSQoREhURVNUKTsgJChCVUlMRF9DTUQpCisgCisgJChEU0FURVNUKSQoRVhFX0VYVCk6ICQoRFNBVEVTVCkubyAkKERMSUJDUllQVE8pCistCUB0YXJnZXQ9JChEU0FURVNUKTsgJChCVUlMRF9DTUQpCisrCStAdGFyZ2V0PSQoRFNBVEVTVCk7ICQoQlVJTERfQ01EKQorIAorICQoTUVUSFRFU1QpJChFWEVfRVhUKTogJChNRVRIVEVTVCkubyAkKERMSUJDUllQVE8pCistCUB0YXJnZXQ9JChNRVRIVEVTVCk7ICQoQlVJTERfQ01EKQorKwkrQHRhcmdldD0kKE1FVEhURVNUKTsgJChCVUlMRF9DTUQpCisgCisgJChTU0xURVNUKSQoRVhFX0VYVCk6ICQoU1NMVEVTVCkubyAkKERMSUJTU0wpICQoRExJQkNSWVBUTykKKy0JQHRhcmdldD0kKFNTTFRFU1QpOyAkKEZJUFNfQlVJTERfQ01EKQorKwkrQHRhcmdldD0kKFNTTFRFU1QpOyAkKEZJUFNfQlVJTERfQ01EKQorIAorICQoRU5HSU5FVEVTVCkkKEVYRV9FWFQpOiAkKEVOR0lORVRFU1QpLm8gJChETElCQ1JZUFRPKQorLQlAdGFyZ2V0PSQoRU5HSU5FVEVTVCk7ICQoQlVJTERfQ01EKQorKwkrQHRhcmdldD0kKEVOR0lORVRFU1QpOyAkKEJVSUxEX0NNRCkKKyAKKyAkKEVWUFRFU1QpJChFWEVfRVhUKTogJChFVlBURVNUKS5vICQoRExJQkNSWVBUTykKKy0JQHRhcmdldD0kKEVWUFRFU1QpOyAkKEJVSUxEX0NNRCkKKysJK0B0YXJnZXQ9JChFVlBURVNUKTsgJChCVUlMRF9DTUQpCisgCisgJChFVlBFWFRSQVRFU1QpJChFWEVfRVhUKTogJChFVlBFWFRSQVRFU1QpLm8gJChETElCQ1JZUFRPKQorLQlAdGFyZ2V0PSQoRVZQRVhUUkFURVNUKTsgJChCVUlMRF9DTUQpCisrCStAdGFyZ2V0PSQoRVZQRVhUUkFURVNUKTsgJChCVUlMRF9DTUQpCisgCisgJChFQ0RTQVRFU1QpJChFWEVfRVhUKTogJChFQ0RTQVRFU1QpLm8gJChETElCQ1JZUFRPKQorLQlAdGFyZ2V0PSQoRUNEU0FURVNUKTsgJChCVUlMRF9DTUQpCisrCStAdGFyZ2V0PSQoRUNEU0FURVNUKTsgJChCVUlMRF9DTUQpCisgCisgJChFQ0RIVEVTVCkkKEVYRV9FWFQpOiAkKEVDREhURVNUKS5vICQoRExJQkNSWVBUTykKKy0JQHRhcmdldD0kKEVDREhURVNUKTsgJChCVUlMRF9DTUQpCisrCStAdGFyZ2V0PSQoRUNESFRFU1QpOyAkKEJVSUxEX0NNRCkKKyAKKyAkKElHRVRFU1QpJChFWEVfRVhUKTogJChJR0VURVNUKS5vICQoRExJQkNSWVBUTykKKy0JQHRhcmdldD0kKElHRVRFU1QpOyAkKEJVSUxEX0NNRCkKKysJK0B0YXJnZXQ9JChJR0VURVNUKTsgJChCVUlMRF9DTUQpCisgCisgJChKUEFLRVRFU1QpJChFWEVfRVhUKTogJChKUEFLRVRFU1QpLm8gJChETElCQ1JZUFRPKQorLQlAdGFyZ2V0PSQoSlBBS0VURVNUKTsgJChCVUlMRF9DTUQpCisrCStAdGFyZ2V0PSQoSlBBS0VURVNUKTsgJChCVUlMRF9DTUQpCisgCisgJChBU04xVEVTVCkkKEVYRV9FWFQpOiAkKEFTTjFURVNUKS5vICQoRExJQkNSWVBUTykKKy0JQHRhcmdldD0kKEFTTjFURVNUKTsgJChCVUlMRF9DTUQpCisrCStAdGFyZ2V0PSQoQVNOMVRFU1QpOyAkKEJVSUxEX0NNRCkKKyAKKyAkKFNSUFRFU1QpJChFWEVfRVhUKTogJChTUlBURVNUKS5vICQoRExJQkNSWVBUTykKKy0JQHRhcmdldD0kKFNSUFRFU1QpOyAkKEJVSUxEX0NNRCkKKysJK0B0YXJnZXQ9JChTUlBURVNUKTsgJChCVUlMRF9DTUQpCisgCisgJChWM05BTUVURVNUKSQoRVhFX0VYVCk6ICQoVjNOQU1FVEVTVCkubyAkKERMSUJDUllQVE8pCistCUB0YXJnZXQ9JChWM05BTUVURVNUKTsgJChCVUlMRF9DTUQpCisrCStAdGFyZ2V0PSQoVjNOQU1FVEVTVCk7ICQoQlVJTERfQ01EKQorIAorICQoSEVBUlRCRUFUVEVTVCkkKEVYRV9FWFQpOiAkKEhFQVJUQkVBVFRFU1QpLm8gJChETElCQ1JZUFRPKQorLQlAdGFyZ2V0PSQoSEVBUlRCRUFUVEVTVCk7ICQoQlVJTERfQ01EX1NUQVRJQykKKysJK0B0YXJnZXQ9JChIRUFSVEJFQVRURVNUKTsgJChCVUlMRF9DTURfU1RBVElDKQorIAorICQoQ09OU1RUSU1FVEVTVCkkKEVYRV9FWFQpOiAkKENPTlNUVElNRVRFU1QpLm8KKy0JQHRhcmdldD0kKENPTlNUVElNRVRFU1QpICQoQlVJTERfQ01EKQorKwkrQHRhcmdldD0kKENPTlNUVElNRVRFU1QpICQoQlVJTERfQ01EKQorIAorICQoVkVSSUZZRVhUUkFURVNUKSQoRVhFX0VYVCk6ICQoVkVSSUZZRVhUUkFURVNUKS5vCistCUB0YXJnZXQ9JChWRVJJRllFWFRSQVRFU1QpICQoQlVJTERfQ01EKQorKwkrQHRhcmdldD0kKFZFUklGWUVYVFJBVEVTVCkgJChCVUlMRF9DTUQpCisgCisgJChDTElFTlRIRUxMT1RFU1QpJChFWEVfRVhUKTogJChDTElFTlRIRUxMT1RFU1QpLm8KKy0JQHRhcmdldD0kKENMSUVOVEhFTExPVEVTVCkgJChCVUlMRF9DTUQpCisrCStAdGFyZ2V0PSQoQ0xJRU5USEVMTE9URVNUKSAkKEJVSUxEX0NNRCkKKyAKKyAkKEJBRERUTFNURVNUKSQoRVhFX0VYVCk6ICQoQkFERFRMU1RFU1QpLm8KKy0JQHRhcmdldD0kKEJBRERUTFNURVNUKSAkKEJVSUxEX0NNRCkKKysJK0B0YXJnZXQ9JChCQUREVExTVEVTVCkgJChCVUlMRF9DTUQpCisgCisgJChGQVRBTEVSUlRFU1QpJChFWEVfRVhUKTogJChGQVRBTEVSUlRFU1QpLm8gc3NsdGVzdGxpYi5vICQoRExJQlNTTCkgJChETElCQ1JZUFRPKQorIAlAdGFyZ2V0PSQoRkFUQUxFUlJURVNUKTsgZXhvYmo9c3NsdGVzdGxpYi5vOyAkKEJVSUxEX0NNRCkKKyAKKyAkKFNTTFYyQ09ORlRFU1QpJChFWEVfRVhUKTogJChTU0xWMkNPTkZURVNUKS5vCistCUB0YXJnZXQ9JChTU0xWMkNPTkZURVNUKSAkKEJVSUxEX0NNRCkKKysJK0B0YXJnZXQ9JChTU0xWMkNPTkZURVNUKSAkKEJVSUxEX0NNRCkKKyAKKyAkKERUTFNURVNUKSQoRVhFX0VYVCk6ICQoRFRMU1RFU1QpLm8gc3NsdGVzdGxpYi5vICQoRExJQlNTTCkgJChETElCQ1JZUFRPKQorLQlAdGFyZ2V0PSQoRFRMU1RFU1QpOyBleG9iaj1zc2x0ZXN0bGliLm87ICQoQlVJTERfQ01EKQorKwkrQHRhcmdldD0kKERUTFNURVNUKTsgZXhvYmo9c3NsdGVzdGxpYi5vOyAkKEJVSUxEX0NNRCkKKyAKKyAjJChBRVNURVNUKS5vOiAkKEFFU1RFU1QpLmMKKyAjCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtRElOVEVSTUVESUFURV9WQUxVRV9LQVQgLURUUkFDRV9LQVRfTUNUICQoQUVTVEVTVCkuYworQEAgLTU4OSw3ICs1ODksNyBAQCAkKERUTFNURVNUKSQoRVhFX0VYVCk6ICQoRFRMU1RFU1QpLm8gc3NsdGVzdGxpYi5vICQoRExJQlNTTCkgJChETElCQ1JZUFRPKQorICMJZmkKKyAKKyBkdW1teXRlc3QkKEVYRV9FWFQpOiBkdW1teXRlc3QubyAkKERMSUJDUllQVE8pCistCUB0YXJnZXQ9ZHVtbXl0ZXN0OyAkKEJVSUxEX0NNRCkKKysJK0B0YXJnZXQ9ZHVtbXl0ZXN0OyAkKEJVSUxEX0NNRCkKKyAKKyAjIERPIE5PVCBERUxFVEUgVEhJUyBMSU5FIC0tIG1ha2UgZGVwZW5kIGRlcGVuZHMgb24gaXQuCisgCistLSAKKzIuMTUuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvcHRlc3QtZGVwcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vcHRlc3QtZGVwcy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL3B0ZXN0LWRlcHMucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vcHRlc3QtZGVwcy5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL3B0ZXN0X21ha2VmaWxlX2RlcHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL3B0ZXN0X21ha2VmaWxlX2RlcHMucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9wdGVzdF9tYWtlZmlsZV9kZXBzLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wtMS4wLjJuL3B0ZXN0X21ha2VmaWxlX2RlcHMucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vcnVuLXB0ZXN0IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uM2IyMGZjZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vcnVuLXB0ZXN0CkBAIC0wLDAgKzEsMiBAQAorIyEvYmluL3NoCittYWtlIC1rIHJ1bnRlc3QKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9zaGFyZWQtbGlicy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC0xLjAuMm4vc2hhcmVkLWxpYnMucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9zaGFyZWQtbGlicy5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLTEuMC4ybi9zaGFyZWQtbGlicy5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmMmE3OTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLmluYworKysgL2Rldi9udWxsCkBAIC0xLDI1MiArMCwwIEBACi1TVU1NQVJZID0gIlNlY3VyZSBTb2NrZXQgTGF5ZXIiCi1ERVNDUklQVElPTiA9ICJTZWN1cmUgU29ja2V0IExheWVyIChTU0wpIGJpbmFyeSBhbmQgcmVsYXRlZCBjcnlwdG9ncmFwaGljIHRvb2xzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cub3BlbnNzbC5vcmcvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vd3d3Lm9wZW5zc2wub3JnL25ld3MvdnVsbmVyYWJpbGl0aWVzLmh0bWwiCi1TRUNUSU9OID0gImxpYnMvbmV0d29yayIKLQotIyAib3BlbnNzbCB8IFNTTGVheSIgZHVhbCBsaWNlbnNlCi1MSUNFTlNFID0gIm9wZW5zc2wiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1mOWE4Zjk2ODEwNzM0NWUwYjc1YWE4YzJlY2FhN2VjOCIKLQotREVQRU5EUyA9ICJtYWtlZGVwZW5kLW5hdGl2ZSBob3N0cGVybC1ydW50aW1lLW5hdGl2ZSIKLURFUEVORFNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgb3BlbnNzbC1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2Uvb3BlbnNzbC0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICIKLVMgPSAiJHtXT1JLRElSfS9vcGVuc3NsLSR7UFZ9IgotCi1QQUNLQUdFQ09ORklHW3BlcmxdID0gIiwsLCIKLQotVEVSTUlPX2xpYmMtbXVzbCA9ICItRFRFUk1JT1MiCi1URVJNSU8gPz0gIi1EVEVSTUlPIgotIyBBdm9pZCBiaW5hcmllcyBiZWluZyBtYXJrZWQgYXMgcmVxdWlyaW5nIGFuIGV4ZWN1dGFibGUgc3RhY2sgc2luY2UgaXQgCi0jIGRvZXNuJ3Qod2hpY2ggY2F1c2VzIGFuZCB0aGlzIGNhdXNlcyBpc3N1ZXMgd2l0aCBTRUxpbnV4Ci1DRkxBRyA9ICIke0BiYXNlX2NvbmRpdGlvbmFsKCdTSVRFSU5GT19FTkRJQU5ORVNTJywgJ2xlJywgJy1ETF9FTkRJQU4nLCAnLURCX0VORElBTicsIGQpfSBcCi0JICR7VEVSTUlPfSAke0NGTEFHU30gLVdhbGwgLVdhLC0tbm9leGVjc3RhY2siCi0KLWV4cG9ydCBESVJTID0gImNyeXB0byBzc2wgYXBwcyIKLWV4cG9ydCBFWF9MSUJTID0gIi1sZ2NjIC1sZGwiCi1leHBvcnQgQVMgPSAiJHtDQ30gLWMiCi0KLWluaGVyaXQgcGtnY29uZmlnIHNpdGVpbmZvIG11bHRpbGliX2hlYWRlciBwdGVzdCByZWxhdGl2ZV9zeW1saW5rcwotCi1QQUNLQUdFUyA9KyAibGliY3J5cHRvIGxpYnNzbCAke1BOfS1taXNjIG9wZW5zc2wtY29uZiIKLUZJTEVTX2xpYmNyeXB0byA9ICIke2xpYmRpcn0vbGliY3J5cHRvJHtTT0xJQlN9IgotRklMRVNfbGlic3NsID0gIiR7bGliZGlyfS9saWJzc2wke1NPTElCU30iCi1GSUxFU18ke1BOfSA9KyAiICR7bGliZGlyfS9zc2wvKiIKLUZJTEVTXyR7UE59LW1pc2MgPSAiJHtsaWJkaXJ9L3NzbC9taXNjIgotUkRFUEVORFNfJHtQTn0tbWlzYyA9ICIke0BiYi51dGlscy5maWx0ZXIoJ1BBQ0tBR0VDT05GSUcnLCAncGVybCcsIGQpfSIKLQotUFJPVklERVMgKz0gIm9wZW5zc2wxMCIKLQotIyBBZGQgdGhlIG9wZW5zc2wuY25mIGZpbGUgdG8gdGhlIG9wZW5zc2wtY29uZiBwYWNrYWdlLiAgTWFrZSB0aGUgbGliY3J5cHRvCi0jIHBhY2thZ2UgUlJFQ09NTUVORFMgb24gdGhpcyBwYWNrYWdlLiAgVGhpcyB3aWxsIGVuYWJsZSB0aGUgY29uZmlndXJhdGlvbgotIyBmaWxlIHRvIGJlIGluc3RhbGxlZCBmb3IgYm90aCB0aGUgYmFzZSBvcGVuc3NsIHBhY2thZ2UgYW5kIHRoZSBsaWJjcnlwdG8KLSMgcGFja2FnZSBzaW5jZSB0aGUgYmFzZSBvcGVuc3NsIHBhY2thZ2UgZGVwZW5kcyBvbiB0aGUgbGliY3J5cHRvIHBhY2thZ2UuCi1GSUxFU19vcGVuc3NsLWNvbmYgPSAiJHtzeXNjb25mZGlyfS9zc2wvb3BlbnNzbC5jbmYiCi1DT05GRklMRVNfb3BlbnNzbC1jb25mID0gIiR7c3lzY29uZmRpcn0vc3NsL29wZW5zc2wuY25mIgotUlJFQ09NTUVORFNfbGliY3J5cHRvICs9ICJvcGVuc3NsLWNvbmYiCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAiJHtQTn0tbWlzYyBtYWtlIHBlcmwgcGVybC1tb2R1bGUtZmlsZWhhbmRsZSBiYyIKLQotIyBSZW1vdmUgdGhpcyB0byBlbmFibGUgU1NMdjMuIFNTTHYzIGlzIGRlZmF1bHRlZCB0byBkaXNhYmxlZCBkdWUgdG8gdGhlIFBPT0RMRQotIyB2dWxuZXJhYmlsaXR5Ci1FWFRSQV9PRUNPTkYgPSAiIC1uby1zc2wzIgotCi1kb19jb25maWd1cmVfcHJlcGVuZF9kYXJ3aW4gKCkgewotCXNlZCAtaSAtZSAnL3ZlcnNpb24tc2NyaXB0PW9wZW5zc2xcLmxkL2QnIENvbmZpZ3VyZQotfQotCi1kb19jb25maWd1cmUgKCkgewotCWNkIHV0aWwKLQlwZXJsIHBlcmxwYXRoLnBsICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfQotCWNkIC4uCi0JbG4gLXNmIGFwcHMvb3BlbnNzbC5wb2QgY3J5cHRvL2NyeXB0by5wb2Qgc3NsL3NzbC5wb2QgZG9jLwotCi0Jb3M9JHtIT1NUX09TfQotCWNhc2UgJG9zIGluCi0JbGludXgtdWNsaWJjIHxcCi0JbGludXgtdWNsaWJjZWFiaSB8XAotCWxpbnV4LWdudWVhYmkgfFwKLQlsaW51eC11Y2xpYmNzcGUgfFwKLQlsaW51eC1nbnVzcGUgfFwKLQlsaW51eC1tdXNsKikKLQkJb3M9bGludXgKLQkJOzsKLQkJKikKLQkJOzsKLQllc2FjCi0JdGFyZ2V0PSIkb3MtJHtIT1NUX0FSQ0h9IgotCWNhc2UgJHRhcmdldCBpbgotCWxpbnV4LWFybSkKLQkJdGFyZ2V0PWxpbnV4LWFybXY0Ci0JCTs7Ci0JbGludXgtYXJtZWIpCi0JCXRhcmdldD1saW51eC1lbGYtYXJtZWIKLQkJOzsKLQlsaW51eC1hYXJjaDY0KikKLQkJdGFyZ2V0PWxpbnV4LWFhcmNoNjQKLQkJOzsKLQlsaW51eC1zaDMpCi0JCXRhcmdldD1kZWJpYW4tc2gzCi0JCTs7Ci0JbGludXgtc2g0KQotCQl0YXJnZXQ9ZGViaWFuLXNoNAotCQk7OwotCWxpbnV4LWk0ODYpCi0JCXRhcmdldD1kZWJpYW4taTM4Ni1pNDg2Ci0JCTs7Ci0JbGludXgtaTU4NiB8IGxpbnV4LXZpYWMzKQotCQl0YXJnZXQ9ZGViaWFuLWkzODYtaTU4NgotCQk7OwotCWxpbnV4LWk2ODYpCi0JCXRhcmdldD1kZWJpYW4taTM4Ni1pNjg2L2Ntb3YKLQkJOzsKLQlsaW51eC1nbnV4MzIteDg2XzY0KQotCQl0YXJnZXQ9bGludXgteDMyCi0JCTs7Ci0JbGludXgtZ251NjQteDg2XzY0KQotCQl0YXJnZXQ9bGludXgteDg2XzY0Ci0JCTs7Ci0JbGludXgtZ251bjMyLW1pcHMqZWwpCi0JCXRhcmdldD1kZWJpYW4tbWlwc24zMmVsCi0JCTs7Ci0JbGludXgtZ251bjMyLW1pcHMqKQotCQl0YXJnZXQ9ZGViaWFuLW1pcHNuMzIKLQkJOzsKLQlsaW51eC1taXBzKjY0KmVsKQotCQl0YXJnZXQ9ZGViaWFuLW1pcHM2NGVsCi0JCTs7Ci0JbGludXgtbWlwcyo2NCopCi0JCXRhcmdldD1kZWJpYW4tbWlwczY0Ci0JCTs7Ci0JbGludXgtbWlwcyplbCkKLQkJdGFyZ2V0PWRlYmlhbi1taXBzZWwKLQkJOzsKLQlsaW51eC1taXBzKikKLQkJdGFyZ2V0PWRlYmlhbi1taXBzCi0JCTs7Ci0JbGludXgtbWljcm9ibGF6ZSp8bGludXgtbmlvczIqKQotCQl0YXJnZXQ9bGludXgtZ2VuZXJpYzMyCi0JCTs7Ci0JbGludXgtcG93ZXJwYykKLQkJdGFyZ2V0PWxpbnV4LXBwYwotCQk7OwotCWxpbnV4LXBvd2VycGM2NCkKLQkJdGFyZ2V0PWxpbnV4LXBwYzY0Ci0JCTs7Ci0JbGludXgtc3VwZXJzcGFyYykKLQkJdGFyZ2V0PWxpbnV4LXNwYXJjdjgKLQkJOzsKLQlsaW51eC1zcGFyYykKLQkJdGFyZ2V0PWxpbnV4LXNwYXJjdjgKLQkJOzsKLQlkYXJ3aW4taTM4NikKLQkJdGFyZ2V0PWRhcndpbi1pMzg2LWNjCi0JCTs7Ci0JZXNhYwotCSMgaW5qZWN0IG1hY2hpbmUtc3BlY2lmaWMgZmxhZ3MKLQlzZWQgLWkgLWUgInN8XlwoXCIkdGFyZ2V0XCIsXHMqXCJbXjpdXCtcKTpcKFteOl1cK1wpfFwxOiR7Q0ZMQUd9fGciIENvbmZpZ3VyZQotICAgICAgICB1c2VwcmVmaXg9JHtwcmVmaXh9Ci0gICAgICAgIGlmIFsgIngkdXNlcHJlZml4IiA9ICJ4IiBdOyB0aGVuCi0gICAgICAgICAgICAgICAgdXNlcHJlZml4PS8KLSAgICAgICAgZmkgICAgICAgIAotCXBlcmwgLi9Db25maWd1cmUgJHtFWFRSQV9PRUNPTkZ9IHNoYXJlZCAtLXByZWZpeD0kdXNlcHJlZml4IC0tb3BlbnNzbGRpcj0ke2xpYmRpcn0vc3NsIC0tbGliZGlyPWBiYXNlbmFtZSAke2xpYmRpcn1gICR0YXJnZXQKLX0KLQotZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLXRhcmdldCAoKSB7Ci0gICAgc2VkIC1pICdzL1woKE9QRU5TU0w9XCkiLioiL1wxIm9wZW5zc2wiLycgTWFrZWZpbGUKLX0KLQotZG9fY29tcGlsZSAoKSB7Ci0Jb2VfcnVubWFrZSBkZXBlbmQKLQlvZV9ydW5tYWtlCi19Ci0KLWRvX2NvbXBpbGVfcHRlc3QgKCkgewotCSMgYnVpbGQgZGVwZW5kZW5jaWVzIGZvciB0ZXN0IGRpcmVjdG9yeSB0b28KLQlleHBvcnQgRElSUz0iJERJUlMgdGVzdCIKLQlvZV9ydW5tYWtlIGRlcGVuZAotCW9lX3J1bm1ha2UgYnVpbGR0ZXN0Ci19Ci0KLWRvX2luc3RhbGwgKCkgewotCSMgQ3JlYXRlICR7RH0vJHtwcmVmaXh9IHRvIGZpeCBwYXJhbGxlbCBpc3N1ZXMKLQlta2RpciAtcCAke0R9LyR7cHJlZml4fS8KLQotCW9lX3J1bm1ha2UgSU5TVEFMTF9QUkVGSVg9IiR7RH0iIE1BTkRJUj0iJHttYW5kaXJ9IiBpbnN0YWxsCi0KLQlvZV9saWJpbnN0YWxsIC1zbyBsaWJjcnlwdG8gJHtEfSR7bGliZGlyfQotCW9lX2xpYmluc3RhbGwgLXNvIGxpYnNzbCAke0R9JHtsaWJkaXJ9Ci0KLQlpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9Ci0JY3AgLS1kZXJlZmVyZW5jZSAtUiBpbmNsdWRlL29wZW5zc2wgJHtEfSR7aW5jbHVkZWRpcn0KLQotCWluc3RhbGwgLURtIDA3NTUgJHtXT1JLRElSfS9vcGVuc3NsLWNfcmVoYXNoLnNoICR7RH0ke2JpbmRpcn0vY19yZWhhc2gKLQlzZWQgLWkgLWUgJ3MsL2V0Yy9vcGVuc3NsLCR7c3lzY29uZmRpcn0vc3NsLGcnICR7RH0ke2JpbmRpcn0vY19yZWhhc2gKLQotCW9lX211bHRpbGliX2hlYWRlciBvcGVuc3NsL29wZW5zc2xjb25mLmgKLQlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ1BBQ0tBR0VDT05GSUcnLCAncGVybCcsIGQpfSIgXTsgdGhlbgotCQlzZWQgLWkgLWUgJzFzLC4qLCMhJHtiaW5kaXJ9L2VudiBwZXJsLCcgJHtEfSR7bGliZGlyfS9zc2wvbWlzYy9DQS5wbAotCQlzZWQgLWkgLWUgJzFzLC4qLCMhJHtiaW5kaXJ9L2VudiBwZXJsLCcgJHtEfSR7bGliZGlyfS9zc2wvbWlzYy90c2dldAotCWVsc2UKLQkJcm0gLWYgJHtEfSR7bGliZGlyfS9zc2wvbWlzYy9DQS5wbCAke0R9JHtsaWJkaXJ9L3NzbC9taXNjL3RzZ2V0Ci0JZmkKLQotCSMgQ3JlYXRlIFNTTCBzdHJ1Y3R1cmUKLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3NzbC8KLQltdiAke0R9JHtsaWJkaXJ9L3NzbC9vcGVuc3NsLmNuZiBcCi0JICAgJHtEfSR7bGliZGlyfS9zc2wvY2VydHMgXAotCSAgICR7RH0ke2xpYmRpcn0vc3NsL3ByaXZhdGUgXAotCSAgIFwKLQkgICAke0R9JHtzeXNjb25mZGlyfS9zc2wvCi0JbG4gLXNmICR7c3lzY29uZmRpcn0vc3NsL2NlcnRzICR7RH0ke2xpYmRpcn0vc3NsL2NlcnRzCi0JbG4gLXNmICR7c3lzY29uZmRpcn0vc3NsL3ByaXZhdGUgJHtEfSR7bGliZGlyfS9zc2wvcHJpdmF0ZQotCWxuIC1zZiAke3N5c2NvbmZkaXJ9L3NzbC9vcGVuc3NsLmNuZiAke0R9JHtsaWJkaXJ9L3NzbC9vcGVuc3NsLmNuZgotfQotCi1kb19pbnN0YWxsX3B0ZXN0ICgpIHsKLQljcCAtciAtTCBNYWtlZmlsZS5vcmcgTWFrZWZpbGUgdGVzdCAke0R9JHtQVEVTVF9QQVRIfQotCi0gICAgICAgICMgUmVwbGFjZSB0aGUgcGF0aCB0byBuYXRpdmUgcGVybCB3aXRoIHRoZSBwYXRoIHRvIHRhcmdldCBwZXJsCi0gICAgICAgIHNlZCAtaSAncyxeUEVSTD0uKixQRVJMPSR7YmluZGlyfS9wZXJsLCcgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKLQotCWNwIENvbmZpZ3VyZSBjb25maWcgZV9vcy5oICR7RH0ke1BURVNUX1BBVEh9Ci0JY3AgLXIgLUwgaW5jbHVkZSAke0R9JHtQVEVTVF9QQVRIfQotCWxuIC1zZiAke2xpYmRpcn0vbGliY3J5cHRvLmEgJHtEfSR7UFRFU1RfUEFUSH0KLQlsbiAtc2YgJHtsaWJkaXJ9L2xpYnNzbC5hICR7RH0ke1BURVNUX1BBVEh9Ci0JbWtkaXIgLXAgJHtEfSR7UFRFU1RfUEFUSH0vY3J5cHRvCi0JY3AgY3J5cHRvL2NvbnN0YW50X3RpbWVfbG9jbC5oICR7RH0ke1BURVNUX1BBVEh9L2NyeXB0bwotCWNwIC1yIGNlcnRzICR7RH0ke1BURVNUX1BBVEh9Ci0JbWtkaXIgLXAgJHtEfSR7UFRFU1RfUEFUSH0vYXBwcwotCWxuIC1zZiAke2xpYmRpcn0vc3NsL21pc2MvQ0Euc2ggICR7RH0ke1BURVNUX1BBVEh9L2FwcHMKLQlsbiAtc2YgJHtzeXNjb25mZGlyfS9zc2wvb3BlbnNzbC5jbmYgJHtEfSR7UFRFU1RfUEFUSH0vYXBwcwotCWxuIC1zZiAke2JpbmRpcn0vb3BlbnNzbCAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L2FwcHMKLQljcCBhcHBzL3NlcnZlci5wZW0gICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L2FwcHMKLQljcCBhcHBzL3NlcnZlcjIucGVtICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L2FwcHMKLQlta2RpciAtcCAke0R9JHtQVEVTVF9QQVRIfS91dGlsCi0JaW5zdGFsbCB1dGlsL29wZW5zc2x3cmFwLnNoICAgICR7RH0ke1BURVNUX1BBVEh9L3V0aWwKLQlpbnN0YWxsIHV0aWwvc2hsaWJfd3JhcC5zaCAgICAgJHtEfSR7UFRFU1RfUEFUSH0vdXRpbAotCSMgVGltZSBzdGFtcHMgYXJlIHJlbGV2YW50IGZvciAibWFrZSBhbGx0ZXN0cyIsIG90aGVyd2lzZQotCSMgbWFrZSBtYXkgdHJ5IHRvIHJlY29tcGlsZSBiaW5hcmllcy4gTm90IG9ubHkgbXVzdCB0aGUKLQkjIGJpbmFyeSBmaWxlcyBiZSBuZXdlciB0aGFuIHRoZSBzb3VyY2VzLCB0aGV5IGFsc28gbXVzdAotCSMgYmUgbW9yZSByZWNlbnQgdGhhbiB0aGUgaGVhZGVyIGZpbGVzIGluIC91c3IvaW5jbHVkZS4KLQkjCi0JIyBVc2luZyAiY3AgLWEiIGlzIG5vdCBzdWZmaWNpZW50LCBiZWNhdXNlIGRvX2luc3RhbGwKLQkjIGRvZXMgbm90IHByZXNlcnZlIHRoZSBvcmlnaW5hbCB0aW1lIHN0YW1wcy4KLQkjCi0JIyBTbyBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBvcmlnaW5hbCBmaWxlIHN0YW1wcywgd2Ugc2V0Ci0JIyB0aGUgY3VycmVudCB0aW1lIGZvciBhbGwgZmlsZXMuIEJpbmFyaWVzIHdpbGwgZ2V0Ci0JIyBtb2RpZmllZCBhZ2FpbiBsYXRlciB3aGVuIHN0cmlwcGluZyB0aGVtLCBidXQgdGhhdCdzIG9rYXkuCi0JdG91Y2ggJHtEfSR7UFRFU1RfUEFUSH0KLQlmaW5kICR7RH0ke1BURVNUX1BBVEh9IC10eXBlIGYgLXByaW50MCB8IHhhcmdzIC0tdmVyYm9zZSAtMCB0b3VjaCAtciAke0R9JHtQVEVTVF9QQVRIfQotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0JY3JlYXRlX3dyYXBwZXIgJHtEfSR7YmluZGlyfS9vcGVuc3NsIFwKLQkgICAgT1BFTlNTTF9DT05GPSR7bGliZGlyfS9zc2wvb3BlbnNzbC5jbmYgXAotCSAgICBTU0xfQ0VSVF9ESVI9JHtsaWJkaXJ9L3NzbC9jZXJ0cyBcCi0JICAgIFNTTF9DRVJUX0ZJTEU9JHtsaWJkaXJ9L3NzbC9jZXJ0LnBlbSBcCi0JICAgIE9QRU5TU0xfRU5HSU5FUz0ke2xpYmRpcn0vc3NsL2VuZ2luZXMKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLzAwMDEtUmVtb3ZlLXRlc3QtdGhhdC1yZXF1aXJlcy1ydW5uaW5nLWFzLW5vbi1yb290LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLzAwMDEtUmVtb3ZlLXRlc3QtdGhhdC1yZXF1aXJlcy1ydW5uaW5nLWFzLW5vbi1yb290LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczNmJiMzkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvMDAwMS1SZW1vdmUtdGVzdC10aGF0LXJlcXVpcmVzLXJ1bm5pbmctYXMtbm9uLXJvb3QucGF0Y2gKQEAgLTAsMCArMSw0OSBAQAorRnJvbSAzZmRiMWUyYTE2ZWE0MDVjNjczMTQ0N2E4OTk0ZjIyMjgwOGVmN2U2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBGcmksIDcgQXByIDIwMTcgMTg6MDE6NTIgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gUmVtb3ZlIHRlc3QgdGhhdCByZXF1aXJlcyBydW5uaW5nIGFzIG5vbi1yb290CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgdGVzdC9yZWNpcGVzLzQwLXRlc3RfcmVoYXNoLnQgfCAxNyArLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMTYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS90ZXN0L3JlY2lwZXMvNDAtdGVzdF9yZWhhc2gudCBiL3Rlc3QvcmVjaXBlcy80MC10ZXN0X3JlaGFzaC50CitpbmRleCBmOTAyYzIzLi5jNzU2N2MxIDEwMDY0NAorLS0tIGEvdGVzdC9yZWNpcGVzLzQwLXRlc3RfcmVoYXNoLnQKKysrKyBiL3Rlc3QvcmVjaXBlcy80MC10ZXN0X3JlaGFzaC50CitAQCAtMjMsNyArMjMsNyBAQCBzZXR1cCgidGVzdF9yZWhhc2giKTsKKyBwbGFuIHNraXBfYWxsID0+ICJ0ZXN0X3JlaGFzaCBpcyBub3QgYXZhaWxhYmxlIG9uIHRoaXMgcGxhdGZvcm0iCisgICAgIHVubGVzcyBydW4oYXBwKFsib3BlbnNzbCIsICJyZWhhc2giLCAiLWhlbHAiXSkpOworIAorLXBsYW4gdGVzdHMgPT4gNTsKKytwbGFuIHRlc3RzID0+IDM7CisgCisgaW5kaXIgInJlaGFzaC4kJCIgPT4gc3ViIHsKKyAgICAgcHJlcGFyZSgpOworQEAgLTQyLDIxICs0Miw2IEBAIGluZGlyICJyZWhhc2guJCQiID0+IHN1YiB7CisgICAgICAgICdUZXN0aW5nIHJlaGFzaCBvcGVyYXRpb25zIG9uIGVtcHR5IGRpcmVjdG9yeScpOworIH0sIGNyZWF0ZSA9PiAxLCBjbGVhbnVwID0+IDE7CisgCistaW5kaXIgInJlaGFzaC4kJCIgPT4gc3ViIHsKKy0gICAgcHJlcGFyZSgpOworLSAgICBjaG1vZCAwNTAwLCBjdXJkaXIoKTsKKy0gIFNLSVA6IHsKKy0gICAgICBpZiAoIW9rKCFvcGVuKEZPTywgIj51bndyaXRhYmxlLnR4dCIpLAorLSAgICAgICAgICAgICAgIlRlc3RpbmcgdGhhdCB3ZSBhcmVuJ3QgcnVubmluZyBhcyBhIHByaXZpbGVnZWQgdXNlciwgc3VjaCBhcyByb290IikpIHsKKy0gICAgICAgICAgY2xvc2UgRk9POworLSAgICAgICAgICBza2lwICJJdCdzIHBvaW50bGVzcyB0byBydW4gdGhlIG5leHQgdGVzdCBhcyByb290IiwgMTsKKy0gICAgICB9CistICAgICAgaXNudChydW4oYXBwKFsib3BlbnNzbCIsICJyZWhhc2giLCBjdXJkaXIoKV0pKSwgMSwKKy0gICAgICAgICAgICdUZXN0aW5nIHJlaGFzaCBvcGVyYXRpb25zIG9uIHJlYWRvbmx5IGRpcmVjdG9yeScpOworLSAgICB9CistICAgIGNobW9kIDA3MDAsIGN1cmRpcigpOyAgICAgICAjIG1ha2UgaXQgd3JpdGFibGUgYWdhaW4sIHNvIGNsZWFudXAgd29ya3MKKy19LCBjcmVhdGUgPT4gMSwgY2xlYW51cCA9PiAxOworLQorIHN1YiBwcmVwYXJlIHsKKyAgICAgbXkgQHBlbXNvdXJjZWZpbGVzID0gc29ydCBnbG9iKHNyY3RvcF9maWxlKCd0ZXN0JywgIioucGVtIikpOworICAgICBteSBAZGVzdGZpbGVzID0gKCk7CistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvMDAwMS1UYWtlLWxpbmtpbmctZmxhZ3MtZnJvbS1MREZMQUdTLWVudi12YXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvMDAwMS1UYWtlLWxpbmtpbmctZmxhZ3MtZnJvbS1MREZMQUdTLWVudi12YXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmNlNGU0NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC8wMDAxLVRha2UtbGlua2luZy1mbGFncy1mcm9tLUxERkxBR1MtZW52LXZhci5wYXRjaApAQCAtMCwwICsxLDQzIEBACitGcm9tIDA4ZmFjZTQzNTNkODAxMTE5NzNhYmE5YzEzMDRjOTIxNThjZmFkMGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMjggTWFyIDIwMTcgMTY6NDA6MTIgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gVGFrZSBsaW5raW5nIGZsYWdzIGZyb20gTERGTEFHUyBlbnYgdmFyCisKK1RoaXMgZml4ZXMgIk5vIEdOVV9IQVNIIGluIHRoZSBlbGYgYmluYXJ5IiBpc3N1ZXMuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgQ29uZmlndXJhdGlvbnMvdW5peC1NYWtlZmlsZS50bXBsIHwgMiArLQorIENvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL0NvbmZpZ3VyYXRpb25zL3VuaXgtTWFrZWZpbGUudG1wbCBiL0NvbmZpZ3VyYXRpb25zL3VuaXgtTWFrZWZpbGUudG1wbAoraW5kZXggYzAyOTgxNy4uNDNiNzY5YiAxMDA2NDQKKy0tLSBhL0NvbmZpZ3VyYXRpb25zL3VuaXgtTWFrZWZpbGUudG1wbAorKysrIGIvQ29uZmlndXJhdGlvbnMvdW5peC1NYWtlZmlsZS50bXBsCitAQCAtMTczLDcgKzE3Myw3IEBAIENST1NTX0NPTVBJTEU9IHstICRjb25maWd7Y3Jvc3NfY29tcGlsZV9wcmVmaXh9IC19CisgQ0M9ICQoQ1JPU1NfQ09NUElMRSl7LSAkdGFyZ2V0e2NjfSAtfQorIENGTEFHUz17LSBvdXIgJGNmbGFnczIgPSBqb2luKCIgIiwobWFwIHsgIi1EIi4kX30gQHskdGFyZ2V0e2RlZmluZXN9fSwgQHskY29uZmlne2RlZmluZXN9fSksIi1ET1BFTlNTTERJUj1cIlxcXCJcJChPUEVOU1NMRElSKVxcXCJcIiIsIi1ERU5HSU5FU0RJUj1cIlxcXCJcJChFTkdJTkVTRElSKVxcXCJcIiIpIC19IHstICR0YXJnZXR7Y2ZsYWdzfSAtfSB7LSAkY29uZmlne2NmbGFnc30gLX0KKyBDRkxBR1NfUT17LSAkY2ZsYWdzMiA9fiBzfChbXFwiXSl8XFwkMXxnOyAkY2ZsYWdzMiAtfSB7LSAkY29uZmlne2NmbGFnc30gLX0KKy1MREZMQUdTPSB7LSAkdGFyZ2V0e2xmbGFnc30gLX0KKytMREZMQUdTPSB7LSAkdGFyZ2V0e2xmbGFnc30uIiAiLiRFTlZ7J0xERkxBR1MnfSAtfQorIFBMSUJfTERGTEFHUz0gey0gJHRhcmdldHtwbGliX2xmbGFnc30gLX0KKyBFWF9MSUJTPSB7LSAkdGFyZ2V0e2V4X2xpYnN9IC19IHstICRjb25maWd7ZXhfbGlic30gLX0KKyBMSUJfQ0ZMQUdTPXstICR0YXJnZXR7c2hhcmVkX2NmbGFnfSB8fCAiIiAtfQorZGlmZiAtLWdpdCBhL0NvbmZpZ3VyZSBiL0NvbmZpZ3VyZQoraW5kZXggYWVlN2NjMy4uMjc0ZDIzNiAxMDA3NTUKKy0tLSBhL0NvbmZpZ3VyZQorKysrIGIvQ29uZmlndXJlCitAQCAtOTc5LDcgKzk3OSw3IEBAICRjb25maWd7YnVpbGRfZmlsZX0gPSAkdGFyZ2V0e2J1aWxkX2ZpbGV9OworICRjb25maWd7ZGVmaW5lc30gPSBbXTsKKyAkY29uZmlne2NmbGFnc30gPSAiIjsKKyAkY29uZmlne2V4X2xpYnN9ID0gIiI7CistJGNvbmZpZ3tzaGFyZWRfbGRmbGFnfSA9ICIiOworKyRjb25maWd7c2hhcmVkX2xkZmxhZ30gPSAkRU5WeydMREZMQUdTJ307CisgCisgIyBNYWtlIHN1cmUgYnVpbGRfc2NoZW1lIGlzIGNvbnNpc3RlbnQuCisgJHRhcmdldHtidWlsZF9zY2hlbWV9ID0gWyAkdGFyZ2V0e2J1aWxkX3NjaGVtZX0gXQorLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsLzAwMDEtYWVzLWFzbS1hZXMtYXJtdjQtYnNhZXMtYXJtdjctLnBsLW1ha2UtaXQtd29yay13aXRoLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC8wMDAxLWFlcy1hc20tYWVzLWFybXY0LWJzYWVzLWFybXY3LS5wbC1tYWtlLWl0LXdvcmstd2l0aC0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmIwYTE2OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC8wMDAxLWFlcy1hc20tYWVzLWFybXY0LWJzYWVzLWFybXY3LS5wbC1tYWtlLWl0LXdvcmstd2l0aC0ucGF0Y2gKQEAgLTAsMCArMSw4OCBAQAorRnJvbSBiY2MwOTZhNTA4MTFiZjBmMGM0ZmQzNGIyOTkzZmVkN2E3MDE1OTcyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5keSBQb2x5YWtvdiA8YXBwcm9Ab3BlbnNzbC5vcmc+CitEYXRlOiBGcmksIDMgTm92IDIwMTcgMjM6MzA6MDEgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gYWVzL2FzbS97YWVzLWFybXY0fGJzYWVzLWFybXY3fS5wbDogbWFrZSBpdCB3b3JrIHdpdGgKKyBiaW51dGlscy0yLjI5LgorCitJdCdzIG5vdCBjbGVhciBpZiBpdCdzIGEgZmVhdHVyZSBvciBidWcsIGJ1dCBiaW51dGlscy0yLjI5Wy4xXQoraW50ZXJwcmV0cyAnYWRyJyBpbnN0cnVjdGlvbiB3aXRoIFRodW1iMiBjb2RlIHJlZmVyZW5jZSBkaWZmZXJlbnRseSwKK2luIGEgd2F5IHRoYXQgYWZmZWN0cyBjYWxjdWxhdGlvbiBvZiBhZGRyZXNzZXMgb2YgY29uc3RhbnRzJyB0YWJsZXMuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworUmV2aWV3ZWQtYnk6IFRpbSBIdWRzb24gPHRqaEBvcGVuc3NsLm9yZz4KK1Jldmlld2VkLWJ5OiBCZXJuZCBFZGxpbmdlciA8YmVybmQuZWRsaW5nZXJAaG90bWFpbC5kZT4KK1NpZ25lZC1vZmYtYnk6IFN0ZWZhbiBBZ25lciA8c3RlZmFuLmFnbmVyQHRvcmFkZXguY29tPgorKE1lcmdlZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuc3NsL29wZW5zc2wvcHVsbC80NjY5KQorCisoY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCBiODJhY2MzYzFhN2YzMDRjOWRmMzE4NDE3NTNhMGZhNzZiNWIzY2RhKQorLS0tCisgY3J5cHRvL2Flcy9hc20vYWVzLWFybXY0LnBsICAgfCA2ICsrKy0tLQorIGNyeXB0by9hZXMvYXNtL2JzYWVzLWFybXY3LnBsIHwgNiArKystLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NyeXB0by9hZXMvYXNtL2Flcy1hcm12NC5wbCBiL2NyeXB0by9hZXMvYXNtL2Flcy1hcm12NC5wbAoraW5kZXggMTZkNzlhYWU1My4uYzY0NzRiOGFhZCAxMDA2NDQKKy0tLSBhL2NyeXB0by9hZXMvYXNtL2Flcy1hcm12NC5wbAorKysrIGIvY3J5cHRvL2Flcy9hc20vYWVzLWFybXY0LnBsCitAQCAtMjAwLDcgKzIwMCw3IEBAIEFFU19lbmNyeXB0OgorICNpZm5kZWYJX190aHVtYjJfXworIAlzdWIJcjMscGMsIzgJCUAgQUVTX2VuY3J5cHQKKyAjZWxzZQorLQlhZHIJcjMsQUVTX2VuY3J5cHQKKysJYWRyCXIzLC4KKyAjZW5kaWYKKyAJc3RtZGIgICBzcCEse3IxLHI0LXIxMixscn0KKyAjaWZkZWYJX19BUFBMRV9fCitAQCAtNDUwLDcgKzQ1MCw3IEBAIF9hcm12NF9BRVNfc2V0X2VuY3J5cHRfa2V5OgorICNpZm5kZWYJX190aHVtYjJfXworIAlzdWIJcjMscGMsIzgJCUAgQUVTX3NldF9lbmNyeXB0X2tleQorICNlbHNlCistCWFkcglyMyxBRVNfc2V0X2VuY3J5cHRfa2V5CisrCWFkcglyMywuCisgI2VuZGlmCisgCXRlcQlyMCwjMAorICNpZmRlZglfX3RodW1iMl9fCitAQCAtOTc2LDcgKzk3Niw3IEBAIEFFU19kZWNyeXB0OgorICNpZm5kZWYJX190aHVtYjJfXworIAlzdWIJcjMscGMsIzgJCUAgQUVTX2RlY3J5cHQKKyAjZWxzZQorLQlhZHIJcjMsQUVTX2RlY3J5cHQKKysJYWRyCXIzLC4KKyAjZW5kaWYKKyAJc3RtZGIgICBzcCEse3IxLHI0LXIxMixscn0KKyAjaWZkZWYJX19BUFBMRV9fCitkaWZmIC0tZ2l0IGEvY3J5cHRvL2Flcy9hc20vYnNhZXMtYXJtdjcucGwgYi9jcnlwdG8vYWVzL2FzbS9ic2Flcy1hcm12Ny5wbAoraW5kZXggOWYyODg2NjBlZi4uYTI3YmI0YTE3OSAxMDA2NDQKKy0tLSBhL2NyeXB0by9hZXMvYXNtL2JzYWVzLWFybXY3LnBsCisrKysgYi9jcnlwdG8vYWVzL2FzbS9ic2Flcy1hcm12Ny5wbAorQEAgLTc0NCw3ICs3NDQsNyBAQCAkY29kZS49PDxfX187CisgLnR5cGUJX2JzYWVzX2RlY3J5cHQ4LCVmdW5jdGlvbgorIC5hbGlnbgk0CisgX2JzYWVzX2RlY3J5cHQ4OgorLQlhZHIJJGNvbnN0LF9ic2Flc19kZWNyeXB0OAorKwlhZHIJJGNvbnN0LC4KKyAJdmxkbWlhCSRrZXkhLCB7QFhNTVs5XX0JCUAgcm91bmQgMCBrZXkKKyAjaWZkZWYJX19BUFBMRV9fCisgCWFkcgkkY29uc3QsLkxNMElTUgorQEAgLTg0Myw3ICs4NDMsNyBAQCBfYnNhZXNfY29uc3Q6CisgLnR5cGUJX2JzYWVzX2VuY3J5cHQ4LCVmdW5jdGlvbgorIC5hbGlnbgk0CisgX2JzYWVzX2VuY3J5cHQ4OgorLQlhZHIJJGNvbnN0LF9ic2Flc19lbmNyeXB0OAorKwlhZHIJJGNvbnN0LC4KKyAJdmxkbWlhCSRrZXkhLCB7QFhNTVs5XX0JCUAgcm91bmQgMCBrZXkKKyAjaWZkZWYJX19BUFBMRV9fCisgCWFkcgkkY29uc3QsLkxNMFNSCitAQCAtOTUxLDcgKzk1MSw3IEBAICRjb2RlLj08PF9fXzsKKyAudHlwZQlfYnNhZXNfa2V5X2NvbnZlcnQsJWZ1bmN0aW9uCisgLmFsaWduCTQKKyBfYnNhZXNfa2V5X2NvbnZlcnQ6CistCWFkcgkkY29uc3QsX2JzYWVzX2tleV9jb252ZXJ0CisrCWFkcgkkY29uc3QsLgorIAl2bGQxLjgJe0BYTU1bN119LCAgWyRpbnBdIQkJQCBsb2FkIHJvdW5kIDAga2V5CisgI2lmZGVmCV9fQVBQTEVfXworIAlhZHIJJGNvbnN0LC5MTTAKKy0tIAorMi4xNS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9NYWtlZmlsZXMtcHRlc3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvTWFrZWZpbGVzLXB0ZXN0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNDk0NDZhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9NYWtlZmlsZXMtcHRlc3QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3NyArMCwwIEBACi1BZGQgJ2J1aWxkdGVzdCcgYW5kICdydW50ZXN0JyB0YXJnZXRzIHRvIE1ha2VmaWxlLCB0byBidWlsZCBhbmQgcnVuIHRlc3RzCi1jcm9zcy1jb21waWxlZC4KLQotU2lnbmVkLW9mZi1ieTogQW5kZXJzIFJveGVsbCA8YW5kZXJzLnJveGVsbEBlbmVhLmNvbT4KLVNpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AZW5lYS5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotSW5kZXg6IG9wZW5zc2wtMS4wLjIvTWFrZWZpbGUub3JnCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gb3BlbnNzbC0xLjAuMi5vcmlnL01ha2VmaWxlLm9yZwotKysrIG9wZW5zc2wtMS4wLjIvTWFrZWZpbGUub3JnCi1AQCAtNDUxLDggKzQ1MSwxNiBAQCByZWhhc2gudGltZTogY2VydHMgYXBwcwotIHRlc3Q6ICAgdGVzdHMKLSAKLSB0ZXN0czogcmVoYXNoCi0rCSQoTUFLRSkgYnVpbGR0ZXN0Ci0rCSQoTUFLRSkgcnVudGVzdAotKwotK2J1aWxkdGVzdDoKLSsJQChjZCB0ZXN0ICYmIFwKLSsJJChDTEVBUkVOVikgJiYgJChNQUtFKSAtZSAkKEJVSUxERU5WKSBUT1A9Li4gVEVTVFM9JyQoVEVTVFMpJyBPUEVOU1NMX0RFQlVHX01FTU9SWT1vbiBPUEVOU1NMX0NPTkY9Li4vYXBwcy9vcGVuc3NsLmNuZiBleGUgYXBwcyk7Ci0rCi0rcnVudGVzdDoKLSAJQChjZCB0ZXN0ICYmIGVjaG8gInRlc3RpbmcuLi4iICYmIFwKLS0JJChDTEVBUkVOVikgJiYgJChNQUtFKSAtZSAkKEJVSUxERU5WKSBUT1A9Li4gVEVTVFM9JyQoVEVTVFMpJyBPUEVOU1NMX0RFQlVHX01FTU9SWT1vbiBPUEVOU1NMX0NPTkY9Li4vYXBwcy9vcGVuc3NsLmNuZiB0ZXN0cyApOwotKwkkKENMRUFSRU5WKSAmJiAkKE1BS0UpIC1lICQoQlVJTERFTlYpIFRPUD0uLiBURVNUUz0nJChURVNUUyknIE9QRU5TU0xfREVCVUdfTUVNT1JZPW9uIE9QRU5TU0xfQ09ORj0uLi9hcHBzL29wZW5zc2wuY25mIGFsbHRlc3RzICk7Ci0gCU9QRU5TU0xfQ09ORj1hcHBzL29wZW5zc2wuY25mIHV0aWwvb3BlbnNzbHdyYXAuc2ggdmVyc2lvbiAtYQotIAotIHJlcG9ydDoKLUluZGV4OiBvcGVuc3NsLTEuMC4yL3Rlc3QvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBvcGVuc3NsLTEuMC4yLm9yaWcvdGVzdC9NYWtlZmlsZQotKysrIG9wZW5zc2wtMS4wLjIvdGVzdC9NYWtlZmlsZQotQEAgLTEzNyw3ICsxMzcsNyBAQCB0ZXN0czoJZXhlIGFwcHMgJChURVNUUykKLSBhcHBzOgotIAlAKGNkIC4uOyAkKE1BS0UpIERJUlM9YXBwcyBhbGwpCi0gCi0tYWxsdGVzdHM6IFwKLSthbGwtdGVzdHM9IFwKLSAJdGVzdF9kZXMgdGVzdF9pZGVhIHRlc3Rfc2hhIHRlc3RfbWQ0IHRlc3RfbWQ1IHRlc3RfaG1hYyBcCi0gCXRlc3RfbWQyIHRlc3RfbWRjMiB0ZXN0X3dwIFwKLSAJdGVzdF9ybWQgdGVzdF9yYzIgdGVzdF9yYzQgdGVzdF9yYzUgdGVzdF9iZiB0ZXN0X2Nhc3QgdGVzdF9hZXMgXAotQEAgLTE0OCw2ICsxNDgsMTEgQEAgYWxsdGVzdHM6IFwKLSAJdGVzdF9qcGFrZSB0ZXN0X3NycCB0ZXN0X2NtcyB0ZXN0X29jc3AgdGVzdF92M25hbWUgdGVzdF9oZWFydGJlYXQgXAotIAl0ZXN0X2NvbnN0YW50X3RpbWUKLSAKLSthbGx0ZXN0czoKLSsJQChmb3IgaSBpbiAkKGFsbC10ZXN0cyk7IGRvIFwKLSsJKCAkKE1BS0UpICQkaSAmJiBlY2hvICJQQVNTOiAkJGkiICkgfHwgZWNobyAiRkFJTDogJCRpIjsgXAotKwlkb25lKQotKwotIHRlc3RfZXZwOiAkKEVWUFRFU1QpJChFWEVfRVhUKSBldnB0ZXN0cy50eHQKLSAJLi4vdXRpbC9zaGxpYl93cmFwLnNoIC4vJChFVlBURVNUKSBldnB0ZXN0cy50eHQKLSAKLUBAIC0yMTMsNyArMjE4LDcgQEAgdGVzdF94NTA5OiAuLi9hcHBzL29wZW5zc2wkKEVYRV9FWFQpIHR4NQotIAllY2hvIHRlc3Qgc2Vjb25kIHg1MDl2MyBjZXJ0aWZpY2F0ZQotIAlzaCAuL3R4NTA5IHYzLWNlcnQyLnBlbSAyPi9kZXYvbnVsbAotIAotLXRlc3RfcnNhOiAkKFJTQVRFU1QpJChFWEVfRVhUKSAuLi9hcHBzL29wZW5zc2wkKEVYRV9FWFQpIHRyc2EgdGVzdHJzYS5wZW0KLSt0ZXN0X3JzYTogLi4vYXBwcy9vcGVuc3NsJChFWEVfRVhUKSB0cnNhIHRlc3Ryc2EucGVtCi0gCUBzaCAuL3Ryc2EgMj4vZGV2L251bGwKLSAJLi4vdXRpbC9zaGxpYl93cmFwLnNoIC4vJChSU0FURVNUKQotIAotQEAgLTMxMywxMSArMzE4LDExIEBAIHRlc3RfdHNhOiAuLi9hcHBzL29wZW5zc2wkKEVYRV9FWFQpIHRlc3QKLSAJICBzaCAuL3Rlc3R0c2E7IFwKLSAJZmkKLSAKLS10ZXN0X2lnZTogJChJR0VURVNUKSQoRVhFX0VYVCkKLSt0ZXN0X2lnZToKLSAJQGVjaG8gIlRlc3QgSUdFIG1vZGUiCi0gCS4uL3V0aWwvc2hsaWJfd3JhcC5zaCAuLyQoSUdFVEVTVCkKLSAKLS10ZXN0X2pwYWtlOiAkKEpQQUtFVEVTVCkkKEVYRV9FWFQpCi0rdGVzdF9qcGFrZToKLSAJQGVjaG8gIlRlc3QgSlBBS0UiCi0gCS4uL3V0aWwvc2hsaWJfd3JhcC5zaCAuLyQoSlBBS0VURVNUKQotIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL2NvbmZpZ3VyZS1tdXNsLXRhcmdldC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9jb25maWd1cmUtbXVzbC10YXJnZXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxM2RjN2IuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL2NvbmZpZ3VyZS1tdXNsLXRhcmdldC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLUFkZCBtdXNsIHRyaXBsZXQgc3VwcG9ydAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLUluZGV4OiBvcGVuc3NsLTEuMC4yYS9Db25maWd1cmUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBvcGVuc3NsLTEuMC4yYS5vcmlnL0NvbmZpZ3VyZQotKysrIG9wZW5zc2wtMS4wLjJhL0NvbmZpZ3VyZQotQEAgLTQzMSw3ICs0MzEsNyBAQCBteSAldGFibGU9KAotICMKLSAjICAgICAgIC4vQ29uZmlndXJlIGxpbnV4LWFybXY0IC1tYXJjaD1hcm12NiAtRF9fQVJNX01BWF9BUkNIX189OAotICMKLS0ibGludXgtYXJtdjQiLAkiZ2NjOiAtTzMgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJGX1BUUjoke2FybXY0X2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImxpbnV4LWFybXY0IiwgImdjYzogLU8zIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTCBCRl9QVFI6JHthcm12NF9hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotICJsaW51eC1hYXJjaDY0IiwiZ2NjOiAtTzMgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEwgQkZfUFRSOiR7YWFyY2g2NF9hc219OmxpbnV4NjQ6ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0gIyBDb25maWd1cmUgc2NyaXB0IGFkZHMgbWluaW1hbGx5IHJlcXVpcmVkIC1tYXJjaCBmb3IgYXNzZW1ibHkgc3VwcG9ydCwKLSAjIGlmIG5vIC1tYXJjaCB3YXMgc3BlY2lmaWVkIGF0IGNvbW1hbmQgbGluZS4gbWlwczMyIGFuZCBtaXBzNjQgYmVsb3cKLUBAIC01MDQsNiArNTA0LDggQEAgbXkgJXRhYmxlPSgKLSAibGludXgtZ251ZWFiaS1hcm1lYiIsIiRFTlZ7J0NDJ306LURCX0VORElBTiAtTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBERVNfUklTQzE6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotICJsaW51eC11Y2xpYmNlYWJpLWFybSIsIiRFTlZ7J0NDJ306LURMX0VORElBTiAtTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBERVNfUklTQzE6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotICJsaW51eC11Y2xpYmNlYWJpLWFybWViIiwiJEVOVnsnQ0MnfTotREJfRU5ESUFOIC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIERFU19SSVNDMToke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImxpbnV4LW11c2xlYWJpLWFybSIsIiRFTlZ7J0NDJ306LURMX0VORElBTiAtTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBERVNfUklTQzE6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJsaW51eC1tdXNsZWFiaS1hcm1lYiIsIiRFTlZ7J0NDJ306LURCX0VORElBTiAtTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBERVNfUklTQzE6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotIAotICJsaW51eC1hdnIzMiIsIiRFTlZ7J0NDJ306LU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgREVTX1JJU0MxOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuIiwKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9jb25maWd1cmUtdGFyZ2V0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9jb25maWd1cmUtdGFyZ2V0cy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjkxZTc0YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvY29uZmlndXJlLXRhcmdldHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotCi1UaGUgbnVtYmVyIG9mIGNvbG9ucyBhcmUgaW1wb3J0YW50IDopCi0KLQotLS0tCi0gQ29uZmlndXJlIHwgICAxNiArKysrKysrKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDE2IGluc2VydGlvbnMoKykKLQotSW5kZXg6IG9wZW5zc2wtMS4wLjJhL0NvbmZpZ3VyZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG9wZW5zc2wtMS4wLjJhLm9yaWcvQ29uZmlndXJlCi0rKysgb3BlbnNzbC0xLjAuMmEvQ29uZmlndXJlCi1AQCAtNDQzLDYgKzQ0MywyMyBAQCBteSAldGFibGU9KAotICJsaW51eC1hbHBoYS1jY2MiLCJjY2M6LWZhc3QgLXJlYWRvbmx5X3N0cmluZ3MgLURMX0VORElBTjo6LURfUkVFTlRSQU5UOjo6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX0lOVCBERVNfUFRSIERFU19SSVNDMSBERVNfVU5ST0xMOiR7YWxwaGFfYXNtfSIsCi0gImxpbnV4LWFscGhhK2J3eC1jY2MiLCJjY2M6LWZhc3QgLXJlYWRvbmx5X3N0cmluZ3MgLURMX0VORElBTjo6LURfUkVFTlRSQU5UOjo6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfUFRSIERFU19SSVNDMSBERVNfVU5ST0xMOiR7YWxwaGFfYXNtfSIsCi0gCi0rIAotKyMgTGludXggb24gQVJNCi0rImxpbnV4LWVsZi1hcm0iLCIkRU5WeydDQyd9Oi1ETF9FTkRJQU4gLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgREVTX1JJU0MxOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsibGludXgtZWxmLWFybWViIiwiJEVOVnsnQ0MnfTotREJfRU5ESUFOIC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIERFU19SSVNDMToke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImxpbnV4LWdudWVhYmktYXJtIiwiJEVOVnsnQ0MnfTotRExfRU5ESUFOIC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOkJOX0xMT05HIERFU19SSVNDMToke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImxpbnV4LWdudWVhYmktYXJtZWIiLCIkRU5WeydDQyd9Oi1EQl9FTkRJQU4gLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgREVTX1JJU0MxOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsibGludXgtdWNsaWJjZWFiaS1hcm0iLCIkRU5WeydDQyd9Oi1ETF9FTkRJQU4gLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgREVTX1JJU0MxOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpIiwKLSsibGludXgtdWNsaWJjZWFiaS1hcm1lYiIsIiRFTlZ7J0NDJ306LURCX0VORElBTiAtTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBERVNfUklTQzE6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKwotKyJsaW51eC1hdnIzMiIsIiRFTlZ7J0NDJ306LU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgREVTX1JJU0MxOiR7bm9fYXNtfTpkbGZjbjpsaW51eC1zaGFyZWQ6LWZQSUM6Oi5zby5cJChTSExJQl9NQUpPUikuIiwKLSsKLSsjIyMjIExpbnV4IG9uIE1JUFMvTUlQUzY0Ci0rImxpbnV4LW1pcHMiLCIkRU5WeydDQyd9Oi1EQl9FTkRJQU4gLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkMyX0NIQVIgUkM0X0lOREVYIERFU19JTlQgREVTX1VOUk9MTCBERVNfUklTQzI6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJsaW51eC1taXBzNjQiLCIkRU5WeydDQyd9Oi1EQl9FTkRJQU4gLW1hYmk9NjQgLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzJfQ0hBUiBSQzRfSU5ERVggREVTX0lOVCBERVNfVU5ST0xMIERFU19SSVNDMjoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0rImxpbnV4LW1pcHM2NGVsIiwiJEVOVnsnQ0MnfTotRExfRU5ESUFOIC1tYWJpPTY0IC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbDo6LURfUkVFTlRSQU5UOjotbGRsOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkMyX0NIQVIgUkM0X0lOREVYIERFU19JTlQgREVTX1VOUk9MTCBERVNfUklTQzI6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKyJsaW51eC1taXBzZWwiLCIkRU5WeydDQyd9Oi1ETF9FTkRJQU4gLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsOjotRF9SRUVOVFJBTlQ6Oi1sZGw6Qk5fTExPTkcgUkMyX0NIQVIgUkM0X0lOREVYIERFU19JTlQgREVTX1VOUk9MTCBERVNfUklTQzI6JHtub19hc219OmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLAotKwotICMgQW5kcm9pZDogbGludXgtKiBidXQgd2l0aG91dCBwb2ludGVycyB0byBoZWFkZXJzIGFuZCBsaWJzLgotICJhbmRyb2lkIiwiZ2NjOi1tYW5kcm9pZCAtSVwkKEFORFJPSURfREVWKS9pbmNsdWRlIC1CXCQoQU5EUk9JRF9ERVYpL2xpYiAtTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMIEJGX1BUUjoke25vX2FzbX06ZGxmY246bGludXgtc2hhcmVkOi1mUElDOjouc28uXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKSIsCi0gImFuZHJvaWQteDg2IiwiZ2NjOi1tYW5kcm9pZCAtSVwkKEFORFJPSURfREVWKS9pbmNsdWRlIC1CXCQoQU5EUk9JRF9ERVYpL2xpYiAtTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLVdhbGw6Oi1EX1JFRU5UUkFOVDo6LWxkbDpCTl9MTE9ORyAke3g4Nl9nY2NfZGVzfSAke3g4Nl9nY2Nfb3B0c306Ii5ldmFse215ICRhc209JHt4ODZfZWxmX2FzbX07JGFzbT1+cy86ZWxmLzphbmRyb2lkLzskYXNtfS4iOmRsZmNuOmxpbnV4LXNoYXJlZDotZlBJQzo6LnNvLlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikiLApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL2RlYmlhbi92ZXJzaW9uLXNjcmlwdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9kZWJpYW4vdmVyc2lvbi1zY3JpcHQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyNDkxODAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL2RlYmlhbi92ZXJzaW9uLXNjcmlwdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2NjMgKzAsMCBAQAotSW5kZXg6IG9wZW5zc2wtMS4wLjJ+YmV0YTEub2Jzb2xldGUuMC4wNDk4NDM2NTE1NDkwNTc1L0NvbmZpZ3VyZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG9wZW5zc2wtMS4wLjJ+YmV0YTEub2Jzb2xldGUuMC4wNDk4NDM2NTE1NDkwNTc1Lm9yaWcvQ29uZmlndXJlCTIwMTQtMDItMjQgMjE6MDI6MzAuMDAwMDAwMDAwICswMTAwCi0rKysgb3BlbnNzbC0xLjAuMn5iZXRhMS5vYnNvbGV0ZS4wLjA0OTg0MzY1MTU0OTA1NzUvQ29uZmlndXJlCTIwMTQtMDItMjQgMjE6MDI6MzAuMDAwMDAwMDAwICswMTAwCi1AQCAtMTY1MSw2ICsxNjUxLDggQEAKLSAJCX0KLSAJfQotIAotKyRzaGFyZWRfbGRmbGFnIC49ICIgLVdsLC0tdmVyc2lvbi1zY3JpcHQ9b3BlbnNzbC5sZCI7Ci0rCi0gb3BlbihJTiwnPE1ha2VmaWxlLm9yZycpIHx8IGRpZSAidW5hYmxlIHRvIHJlYWQgTWFrZWZpbGUub3JnOiQhXG4iOwotIHVubGluaygiJE1ha2VmaWxlLm5ldyIpIHx8IGRpZSAidW5hYmxlIHRvIHJlbW92ZSBvbGQgJE1ha2VmaWxlLm5ldzokIVxuIiBpZiAtZSAiJE1ha2VmaWxlLm5ldyI7Ci0gb3BlbihPVVQsIj4kTWFrZWZpbGUubmV3IikgfHwgZGllICJ1bmFibGUgdG8gY3JlYXRlICRNYWtlZmlsZS5uZXc6JCFcbiI7Ci1JbmRleDogb3BlbnNzbC0xLjAuMn5iZXRhMS5vYnNvbGV0ZS4wLjA0OTg0MzY1MTU0OTA1NzUvb3BlbnNzbC5sZAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIG9wZW5zc2wtMS4wLjJ+YmV0YTEub2Jzb2xldGUuMC4wNDk4NDM2NTE1NDkwNTc1L29wZW5zc2wubGQJMjAxNC0wMi0yNCAyMjoxOTowOC42MDE4MjcyNjYgKzAxMDAKLUBAIC0wLDAgKzEsNDYxNSBAQAotK09QRU5TU0xfMS4wLjAgewotKwlnbG9iYWw6Ci0rCQlCSU9fZl9zc2w7Ci0rCQlCSU9fbmV3X2J1ZmZlcl9zc2xfY29ubmVjdDsKLSsJCUJJT19uZXdfc3NsOwotKwkJQklPX25ld19zc2xfY29ubmVjdDsKLSsJCUJJT19wcm94eV9zc2xfY29weV9zZXNzaW9uX2lkOwotKwkJQklPX3NzbF9jb3B5X3Nlc3Npb25faWQ7Ci0rCQlCSU9fc3NsX3NodXRkb3duOwotKwkJZDJpX1NTTF9TRVNTSU9OOwotKwkJRFRMU3YxX2NsaWVudF9tZXRob2Q7Ci0rCQlEVExTdjFfbWV0aG9kOwotKwkJRFRMU3YxX3NlcnZlcl9tZXRob2Q7Ci0rCQlFUlJfbG9hZF9TU0xfc3RyaW5nczsKLSsJCWkyZF9TU0xfU0VTU0lPTjsKLSsJCWtzc2xfYnVpbGRfcHJpbmNpcGFsXzI7Ci0rCQlrc3NsX2NnZXRfdGt0OwotKwkJa3NzbF9jaGVja19hdXRoZW50OwotKwkJa3NzbF9jdHhfZnJlZTsKLSsJCWtzc2xfY3R4X25ldzsKLSsJCWtzc2xfY3R4X3NldGtleTsKLSsJCWtzc2xfY3R4X3NldHByaW5jOwotKwkJa3NzbF9jdHhfc2V0c3RyaW5nOwotKwkJa3NzbF9jdHhfc2hvdzsKLSsJCWtzc2xfZXJyX3NldDsKLSsJCWtzc2xfa3JiNV9mcmVlX2RhdGFfY29udGVudHM7Ci0rCQlrc3NsX3NnZXRfdGt0OwotKwkJa3NzbF9za2lwX2NvbmZvdW5kOwotKwkJa3NzbF92YWxpZGF0ZV90aW1lczsKLSsJCVBFTV9yZWFkX2Jpb19TU0xfU0VTU0lPTjsKLSsJCVBFTV9yZWFkX1NTTF9TRVNTSU9OOwotKwkJUEVNX3dyaXRlX2Jpb19TU0xfU0VTU0lPTjsKLSsJCVBFTV93cml0ZV9TU0xfU0VTU0lPTjsKLSsJCVNTTF9hY2NlcHQ7Ci0rCQlTU0xfYWRkX2NsaWVudF9DQTsKLSsJCVNTTF9hZGRfZGlyX2NlcnRfc3ViamVjdHNfdG9fc3RhY2s7Ci0rCQlTU0xfYWRkX2Rpcl9jZXJ0X3N1YmpzX3RvX3N0azsKLSsJCVNTTF9hZGRfZmlsZV9jZXJ0X3N1YmplY3RzX3RvX3N0YWNrOwotKwkJU1NMX2FkZF9maWxlX2NlcnRfc3VianNfdG9fc3RrOwotKwkJU1NMX2FsZXJ0X2Rlc2Nfc3RyaW5nOwotKwkJU1NMX2FsZXJ0X2Rlc2Nfc3RyaW5nX2xvbmc7Ci0rCQlTU0xfYWxlcnRfdHlwZV9zdHJpbmc7Ci0rCQlTU0xfYWxlcnRfdHlwZV9zdHJpbmdfbG9uZzsKLSsJCVNTTF9jYWxsYmFja19jdHJsOwotKwkJU1NMX2NoZWNrX3ByaXZhdGVfa2V5OwotKwkJU1NMX0NJUEhFUl9kZXNjcmlwdGlvbjsKLSsJCVNTTF9DSVBIRVJfZ2V0X2JpdHM7Ci0rCQlTU0xfQ0lQSEVSX2dldF9uYW1lOwotKwkJU1NMX0NJUEhFUl9nZXRfdmVyc2lvbjsKLSsJCVNTTF9jbGVhcjsKLSsJCVNTTF9DT01QX2FkZF9jb21wcmVzc2lvbl9tZXRob2Q7Ci0rCQlTU0xfQ09NUF9nZXRfY29tcHJlc3Npb25fbWV0aG9kczsKLSsJCVNTTF9DT01QX2dldF9jb21wcmVzc19tZXRob2RzOwotKwkJU1NMX0NPTVBfZ2V0X25hbWU7Ci0rCQlTU0xfY29ubmVjdDsKLSsJCVNTTF9jb3B5X3Nlc3Npb25faWQ7Ci0rCQlTU0xfY3RybDsKLSsJCVNTTF9DVFhfYWRkX2NsaWVudF9DQTsKLSsJCVNTTF9DVFhfYWRkX3Nlc3Npb247Ci0rCQlTU0xfQ1RYX2NhbGxiYWNrX2N0cmw7Ci0rCQlTU0xfQ1RYX2NoZWNrX3ByaXZhdGVfa2V5OwotKwkJU1NMX0NUWF9jdHJsOwotKwkJU1NMX0NUWF9mbHVzaF9zZXNzaW9uczsKLSsJCVNTTF9DVFhfZnJlZTsKLSsJCVNTTF9DVFhfZ2V0X2NlcnRfc3RvcmU7Ci0rCQlTU0xfQ1RYX2dldF9jbGllbnRfQ0FfbGlzdDsKLSsJCVNTTF9DVFhfZ2V0X2NsaWVudF9jZXJ0X2NiOwotKwkJU1NMX0NUWF9nZXRfZXhfZGF0YTsKLSsJCVNTTF9DVFhfZ2V0X2V4X25ld19pbmRleDsKLSsJCVNTTF9DVFhfZ2V0X2luZm9fY2FsbGJhY2s7Ci0rCQlTU0xfQ1RYX2dldF9xdWlldF9zaHV0ZG93bjsKLSsJCVNTTF9DVFhfZ2V0X3RpbWVvdXQ7Ci0rCQlTU0xfQ1RYX2dldF92ZXJpZnlfY2FsbGJhY2s7Ci0rCQlTU0xfQ1RYX2dldF92ZXJpZnlfZGVwdGg7Ci0rCQlTU0xfQ1RYX2dldF92ZXJpZnlfbW9kZTsKLSsJCVNTTF9DVFhfbG9hZF92ZXJpZnlfbG9jYXRpb25zOwotKwkJU1NMX0NUWF9uZXc7Ci0rCQlTU0xfQ1RYX3JlbW92ZV9zZXNzaW9uOwotKwkJU1NMX0NUWF9zZXNzX2dldF9nZXRfY2I7Ci0rCQlTU0xfQ1RYX3Nlc3NfZ2V0X25ld19jYjsKLSsJCVNTTF9DVFhfc2Vzc19nZXRfcmVtb3ZlX2NiOwotKwkJU1NMX0NUWF9zZXNzaW9uczsKLSsJCVNTTF9DVFhfc2Vzc19zZXRfZ2V0X2NiOwotKwkJU1NMX0NUWF9zZXNzX3NldF9uZXdfY2I7Ci0rCQlTU0xfQ1RYX3Nlc3Nfc2V0X3JlbW92ZV9jYjsKLSsJCVNTTF9DVFhfc2V0MV9wYXJhbTsKLSsJCVNTTF9DVFhfc2V0X2NlcnRfc3RvcmU7Ci0rCQlTU0xfQ1RYX3NldF9jZXJ0X3ZlcmlmeV9jYWxsYmFjazsKLSsJCVNTTF9DVFhfc2V0X2NlcnRfdmVyaWZ5X2NiOwotKwkJU1NMX0NUWF9zZXRfY2lwaGVyX2xpc3Q7Ci0rCQlTU0xfQ1RYX3NldF9jbGllbnRfQ0FfbGlzdDsKLSsJCVNTTF9DVFhfc2V0X2NsaWVudF9jZXJ0X2NiOwotKwkJU1NMX0NUWF9zZXRfY2xpZW50X2NlcnRfZW5naW5lOwotKwkJU1NMX0NUWF9zZXRfY29va2llX2dlbmVyYXRlX2NiOwotKwkJU1NMX0NUWF9zZXRfY29va2llX3ZlcmlmeV9jYjsKLSsJCVNTTF9DVFhfc2V0X2RlZmF1bHRfcGFzc3dkX2NiOwotKwkJU1NMX0NUWF9zZXRfZGVmYXVsdF9wYXNzd2RfY2JfdXNlcmRhdGE7Ci0rCQlTU0xfQ1RYX3NldF9kZWZhdWx0X3ZlcmlmeV9wYXRoczsKLSsJCVNTTF9DVFhfc2V0X2RlZl9wYXNzd2RfY2JfdWQ7Ci0rCQlTU0xfQ1RYX3NldF9kZWZfdmVyaWZ5X3BhdGhzOwotKwkJU1NMX0NUWF9zZXRfZXhfZGF0YTsKLSsJCVNTTF9DVFhfc2V0X2dlbmVyYXRlX3Nlc3Npb25faWQ7Ci0rCQlTU0xfQ1RYX3NldF9pbmZvX2NhbGxiYWNrOwotKwkJU1NMX0NUWF9zZXRfbXNnX2NhbGxiYWNrOwotKwkJU1NMX0NUWF9zZXRfcHNrX2NsaWVudF9jYWxsYmFjazsKLSsJCVNTTF9DVFhfc2V0X3Bza19zZXJ2ZXJfY2FsbGJhY2s7Ci0rCQlTU0xfQ1RYX3NldF9wdXJwb3NlOwotKwkJU1NMX0NUWF9zZXRfcXVpZXRfc2h1dGRvd247Ci0rCQlTU0xfQ1RYX3NldF9zZXNzaW9uX2lkX2NvbnRleHQ7Ci0rCQlTU0xfQ1RYX3NldF9zc2xfdmVyc2lvbjsKLSsJCVNTTF9DVFhfc2V0X3RpbWVvdXQ7Ci0rCQlTU0xfQ1RYX3NldF90bXBfZGhfY2FsbGJhY2s7Ci0rCQlTU0xfQ1RYX3NldF90bXBfZWNkaF9jYWxsYmFjazsKLSsJCVNTTF9DVFhfc2V0X3RtcF9yc2FfY2FsbGJhY2s7Ci0rCQlTU0xfQ1RYX3NldF90cnVzdDsKLSsJCVNTTF9DVFhfc2V0X3ZlcmlmeTsKLSsJCVNTTF9DVFhfc2V0X3ZlcmlmeV9kZXB0aDsKLSsJCVNTTF9DVFhfdXNlX2NlcnRfY2hhaW5fZmlsZTsKLSsJCVNTTF9DVFhfdXNlX2NlcnRpZmljYXRlOwotKwkJU1NMX0NUWF91c2VfY2VydGlmaWNhdGVfQVNOMTsKLSsJCVNTTF9DVFhfdXNlX2NlcnRpZmljYXRlX2NoYWluX2ZpbGU7Ci0rCQlTU0xfQ1RYX3VzZV9jZXJ0aWZpY2F0ZV9maWxlOwotKwkJU1NMX0NUWF91c2VfUHJpdmF0ZUtleTsKLSsJCVNTTF9DVFhfdXNlX1ByaXZhdGVLZXlfQVNOMTsKLSsJCVNTTF9DVFhfdXNlX1ByaXZhdGVLZXlfZmlsZTsKLSsJCVNTTF9DVFhfdXNlX3Bza19pZGVudGl0eV9oaW50OwotKwkJU1NMX0NUWF91c2VfUlNBUHJpdmF0ZUtleTsKLSsJCVNTTF9DVFhfdXNlX1JTQVByaXZhdGVLZXlfQVNOMTsKLSsJCVNTTF9DVFhfdXNlX1JTQVByaXZhdGVLZXlfZmlsZTsKLSsJCVNTTF9kb19oYW5kc2hha2U7Ci0rCQlTU0xfZHVwOwotKwkJU1NMX2R1cF9DQV9saXN0OwotKwkJU1NMZWF5X2FkZF9zc2xfYWxnb3JpdGhtczsKLSsJCVNTTF9mcmVlOwotKwkJU1NMX2dldDFfc2Vzc2lvbjsKLSsJCVNTTF9nZXRfY2VydGlmaWNhdGU7Ci0rCQlTU0xfZ2V0X2NpcGhlcl9saXN0OwotKwkJU1NMX2dldF9jaXBoZXJzOwotKwkJU1NMX2dldF9jbGllbnRfQ0FfbGlzdDsKLSsJCVNTTF9nZXRfY3VycmVudF9jaXBoZXI7Ci0rCQlTU0xfZ2V0X2N1cnJlbnRfY29tcHJlc3Npb247Ci0rCQlTU0xfZ2V0X2N1cnJlbnRfZXhwYW5zaW9uOwotKwkJU1NMX2dldF9kZWZhdWx0X3RpbWVvdXQ7Ci0rCQlTU0xfZ2V0X2Vycm9yOwotKwkJU1NMX2dldF9leF9kYXRhOwotKwkJU1NMX2dldF9leF9kYXRhX1g1MDlfU1RPUkVfQ1RYX2lkeDsKLSsJCVNTTF9nZXRfZXhfZF9YNTA5X1NUT1JFX0NUWF9pZHg7Ci0rCQlTU0xfZ2V0X2V4X25ld19pbmRleDsKLSsJCVNTTF9nZXRfZmQ7Ci0rCQlTU0xfZ2V0X2ZpbmlzaGVkOwotKwkJU1NMX2dldF9pbmZvX2NhbGxiYWNrOwotKwkJU1NMX2dldF9wZWVyX2NlcnRfY2hhaW47Ci0rCQlTU0xfZ2V0X3BlZXJfY2VydGlmaWNhdGU7Ci0rCQlTU0xfZ2V0X3BlZXJfZmluaXNoZWQ7Ci0rCQlTU0xfZ2V0X3ByaXZhdGVrZXk7Ci0rCQlTU0xfZ2V0X3Bza19pZGVudGl0eTsKLSsJCVNTTF9nZXRfcHNrX2lkZW50aXR5X2hpbnQ7Ci0rCQlTU0xfZ2V0X3F1aWV0X3NodXRkb3duOwotKwkJU1NMX2dldF9yYmlvOwotKwkJU1NMX2dldF9yZWFkX2FoZWFkOwotKwkJU1NMX2dldF9yZmQ7Ci0rCQlTU0xfZ2V0X3NlcnZlcm5hbWU7Ci0rCQlTU0xfZ2V0X3NlcnZlcm5hbWVfdHlwZTsKLSsJCVNTTF9nZXRfc2Vzc2lvbjsKLSsJCVNTTF9nZXRfc2hhcmVkX2NpcGhlcnM7Ci0rCQlTU0xfZ2V0X3NodXRkb3duOwotKwkJU1NMX2dldF9TU0xfQ1RYOwotKwkJU1NMX2dldF9zc2xfbWV0aG9kOwotKwkJU1NMX2dldF92ZXJpZnlfY2FsbGJhY2s7Ci0rCQlTU0xfZ2V0X3ZlcmlmeV9kZXB0aDsKLSsJCVNTTF9nZXRfdmVyaWZ5X21vZGU7Ci0rCQlTU0xfZ2V0X3ZlcmlmeV9yZXN1bHQ7Ci0rCQlTU0xfZ2V0X3ZlcnNpb247Ci0rCQlTU0xfZ2V0X3diaW87Ci0rCQlTU0xfZ2V0X3dmZDsKLSsJCVNTTF9oYXNfbWF0Y2hpbmdfc2Vzc2lvbl9pZDsKLSsJCVNTTF9saWJyYXJ5X2luaXQ7Ci0rCQlTU0xfbG9hZF9jbGllbnRfQ0FfZmlsZTsKLSsJCVNTTF9sb2FkX2Vycm9yX3N0cmluZ3M7Ci0rCQlTU0xfbmV3OwotKwkJU1NMX3BlZWs7Ci0rCQlTU0xfcGVuZGluZzsKLSsJCVNTTF9yZWFkOwotKwkJU1NMX3JlbmVnb3RpYXRlOwotKwkJU1NMX3JlbmVnb3RpYXRlX3BlbmRpbmc7Ci0rCQlTU0xfcnN0YXRlX3N0cmluZzsKLSsJCVNTTF9yc3RhdGVfc3RyaW5nX2xvbmc7Ci0rCQlTU0xfU0VTU0lPTl9jbXA7Ci0rCQlTU0xfU0VTU0lPTl9mcmVlOwotKwkJU1NMX1NFU1NJT05fZ2V0X2V4X2RhdGE7Ci0rCQlTU0xfU0VTU0lPTl9nZXRfZXhfbmV3X2luZGV4OwotKwkJU1NMX1NFU1NJT05fZ2V0X2lkOwotKwkJU1NMX1NFU1NJT05fZ2V0X3RpbWU7Ci0rCQlTU0xfU0VTU0lPTl9nZXRfdGltZW91dDsKLSsJCVNTTF9TRVNTSU9OX2hhc2g7Ci0rCQlTU0xfU0VTU0lPTl9uZXc7Ci0rCQlTU0xfU0VTU0lPTl9wcmludDsKLSsJCVNTTF9TRVNTSU9OX3ByaW50X2ZwOwotKwkJU1NMX1NFU1NJT05fc2V0X2V4X2RhdGE7Ci0rCQlTU0xfU0VTU0lPTl9zZXRfdGltZTsKLSsJCVNTTF9TRVNTSU9OX3NldF90aW1lb3V0OwotKwkJU1NMX3NldDFfcGFyYW07Ci0rCQlTU0xfc2V0X2FjY2VwdF9zdGF0ZTsKLSsJCVNTTF9zZXRfYmlvOwotKwkJU1NMX3NldF9jaXBoZXJfbGlzdDsKLSsJCVNTTF9zZXRfY2xpZW50X0NBX2xpc3Q7Ci0rCQlTU0xfc2V0X2Nvbm5lY3Rfc3RhdGU7Ci0rCQlTU0xfc2V0X2V4X2RhdGE7Ci0rCQlTU0xfc2V0X2ZkOwotKwkJU1NMX3NldF9nZW5lcmF0ZV9zZXNzaW9uX2lkOwotKwkJU1NMX3NldF9pbmZvX2NhbGxiYWNrOwotKwkJU1NMX3NldF9tc2dfY2FsbGJhY2s7Ci0rCQlTU0xfc2V0X3Bza19jbGllbnRfY2FsbGJhY2s7Ci0rCQlTU0xfc2V0X3Bza19zZXJ2ZXJfY2FsbGJhY2s7Ci0rCQlTU0xfc2V0X3B1cnBvc2U7Ci0rCQlTU0xfc2V0X3F1aWV0X3NodXRkb3duOwotKwkJU1NMX3NldF9yZWFkX2FoZWFkOwotKwkJU1NMX3NldF9yZmQ7Ci0rCQlTU0xfc2V0X3Nlc3Npb247Ci0rCQlTU0xfc2V0X3Nlc3Npb25faWRfY29udGV4dDsKLSsJCVNTTF9zZXRfc2Vzc2lvbl9zZWNyZXRfY2I7Ci0rCQlTU0xfc2V0X3Nlc3Npb25fdGlja2V0X2V4dDsKLSsJCVNTTF9zZXRfc2Vzc2lvbl90aWNrZXRfZXh0X2NiOwotKwkJU1NMX3NldF9zaHV0ZG93bjsKLSsJCVNTTF9zZXRfU1NMX0NUWDsKLSsJCVNTTF9zZXRfc3NsX21ldGhvZDsKLSsJCVNTTF9zZXRfdG1wX2RoX2NhbGxiYWNrOwotKwkJU1NMX3NldF90bXBfZWNkaF9jYWxsYmFjazsKLSsJCVNTTF9zZXRfdG1wX3JzYV9jYWxsYmFjazsKLSsJCVNTTF9zZXRfdHJ1c3Q7Ci0rCQlTU0xfc2V0X3ZlcmlmeTsKLSsJCVNTTF9zZXRfdmVyaWZ5X2RlcHRoOwotKwkJU1NMX3NldF92ZXJpZnlfcmVzdWx0OwotKwkJU1NMX3NldF93ZmQ7Ci0rCQlTU0xfc2h1dGRvd247Ci0rCQlTU0xfc3RhdGU7Ci0rCQlTU0xfc3RhdGVfc3RyaW5nOwotKwkJU1NMX3N0YXRlX3N0cmluZ19sb25nOwotKwkJU1NMX3VzZV9jZXJ0aWZpY2F0ZTsKLSsJCVNTTF91c2VfY2VydGlmaWNhdGVfQVNOMTsKLSsJCVNTTF91c2VfY2VydGlmaWNhdGVfZmlsZTsKLSsJCVNTTF91c2VfUHJpdmF0ZUtleTsKLSsJCVNTTF91c2VfUHJpdmF0ZUtleV9BU04xOwotKwkJU1NMX3VzZV9Qcml2YXRlS2V5X2ZpbGU7Ci0rCQlTU0xfdXNlX3Bza19pZGVudGl0eV9oaW50OwotKwkJU1NMX3VzZV9SU0FQcml2YXRlS2V5OwotKwkJU1NMX3VzZV9SU0FQcml2YXRlS2V5X0FTTjE7Ci0rCQlTU0xfdXNlX1JTQVByaXZhdGVLZXlfZmlsZTsKLSsJCVNTTHYyM19jbGllbnRfbWV0aG9kOwotKwkJU1NMdjIzX21ldGhvZDsKLSsJCVNTTHYyM19zZXJ2ZXJfbWV0aG9kOwotKwkJU1NMdjJfY2xpZW50X21ldGhvZDsKLSsJCVNTTHYyX21ldGhvZDsKLSsJCVNTTHYyX3NlcnZlcl9tZXRob2Q7Ci0rCQlTU0x2M19jbGllbnRfbWV0aG9kOwotKwkJU1NMdjNfbWV0aG9kOwotKwkJU1NMdjNfc2VydmVyX21ldGhvZDsKLSsJCVNTTF92ZXJzaW9uOwotKwkJU1NMX3dhbnQ7Ci0rCQlTU0xfd3JpdGU7Ci0rCQlUTFN2MV9jbGllbnRfbWV0aG9kOwotKwkJVExTdjFfbWV0aG9kOwotKwkJVExTdjFfc2VydmVyX21ldGhvZDsKLSsKLSsKLSsJCVNTTGVheTsKLSsJCVNTTGVheV92ZXJzaW9uOwotKwkJQVNOMV9CSVRfU1RSSU5HX2FzbjFfbWV0aDsKLSsJCUFTTjFfSEVBREVSX2ZyZWU7Ci0rCQlBU04xX0hFQURFUl9uZXc7Ci0rCQlBU04xX0lBNVNUUklOR19hc24xX21ldGg7Ci0rCQlBU04xX0lOVEVHRVJfZ2V0OwotKwkJQVNOMV9JTlRFR0VSX3NldDsKLSsJCUFTTjFfSU5URUdFUl90b19CTjsKLSsJCUFTTjFfT0JKRUNUX2NyZWF0ZTsKLSsJCUFTTjFfT0JKRUNUX2ZyZWU7Ci0rCQlBU04xX09CSkVDVF9uZXc7Ci0rCQlBU04xX1BSSU5UQUJMRV90eXBlOwotKwkJQVNOMV9TVFJJTkdfY21wOwotKwkJQVNOMV9TVFJJTkdfZHVwOwotKwkJQVNOMV9TVFJJTkdfZnJlZTsKLSsJCUFTTjFfU1RSSU5HX25ldzsKLSsJCUFTTjFfU1RSSU5HX3ByaW50OwotKwkJQVNOMV9TVFJJTkdfc2V0OwotKwkJQVNOMV9TVFJJTkdfdHlwZV9uZXc7Ci0rCQlBU04xX1RZUEVfZnJlZTsKLSsJCUFTTjFfVFlQRV9uZXc7Ci0rCQlBU04xX1VOSVZFUlNBTFNUUklOR190b19zdHJpbmc7Ci0rCQlBU04xX1VUQ1RJTUVfY2hlY2s7Ci0rCQlBU04xX1VUQ1RJTUVfcHJpbnQ7Ci0rCQlBU04xX1VUQ1RJTUVfc2V0OwotKwkJQVNOMV9jaGVja19pbmZpbml0ZV9lbmQ7Ci0rCQlBU04xX2QyaV9iaW87Ci0rCQlBU04xX2QyaV9mcDsKLSsJCUFTTjFfZGlnZXN0OwotKwkJQVNOMV9kdXA7Ci0rCQlBU04xX2dldF9vYmplY3Q7Ci0rCQlBU04xX2kyZF9iaW87Ci0rCQlBU04xX2kyZF9mcDsKLSsJCUFTTjFfb2JqZWN0X3NpemU7Ci0rCQlBU04xX3BhcnNlOwotKwkJQVNOMV9wdXRfb2JqZWN0OwotKwkJQVNOMV9zaWduOwotKwkJQVNOMV92ZXJpZnk7Ci0rCQlCRl9jYmNfZW5jcnlwdDsKLSsJCUJGX2NmYjY0X2VuY3J5cHQ7Ci0rCQlCRl9lY2JfZW5jcnlwdDsKLSsJCUJGX2VuY3J5cHQ7Ci0rCQlCRl9vZmI2NF9lbmNyeXB0OwotKwkJQkZfb3B0aW9uczsKLSsJCUJGX3NldF9rZXk7Ci0rCQlCSU9fQ09OTkVDVF9mcmVlOwotKwkJQklPX0NPTk5FQ1RfbmV3OwotKwkJQklPX2FjY2VwdDsKLSsJCUJJT19jdHJsOwotKwkJQklPX2ludF9jdHJsOwotKwkJQklPX2RlYnVnX2NhbGxiYWNrOwotKwkJQklPX2R1bXA7Ci0rCQlCSU9fZHVwX2NoYWluOwotKwkJQklPX2ZfYmFzZTY0OwotKwkJQklPX2ZfYnVmZmVyOwotKwkJQklPX2ZfY2lwaGVyOwotKwkJQklPX2ZfbWQ7Ci0rCQlCSU9fZl9udWxsOwotKwkJQklPX2ZfcHJveHlfc2VydmVyOwotKwkJQklPX2ZkX25vbl9mYXRhbF9lcnJvcjsKLSsJCUJJT19mZF9zaG91bGRfcmV0cnk7Ci0rCQlCSU9fZmluZF90eXBlOwotKwkJQklPX2ZyZWU7Ci0rCQlCSU9fZnJlZV9hbGw7Ci0rCQlCSU9fZ2V0X2FjY2VwdF9zb2NrZXQ7Ci0rCQlCSU9fZ2V0X2ZpbHRlcl9iaW87Ci0rCQlCSU9fZ2V0X2hvc3RfaXA7Ci0rCQlCSU9fZ2V0X3BvcnQ7Ci0rCQlCSU9fZ2V0X3JldHJ5X0JJTzsKLSsJCUJJT19nZXRfcmV0cnlfcmVhc29uOwotKwkJQklPX2dldGhvc3RieW5hbWU7Ci0rCQlCSU9fZ2V0czsKLSsJCUJJT19uZXc7Ci0rCQlCSU9fbmV3X2FjY2VwdDsKLSsJCUJJT19uZXdfY29ubmVjdDsKLSsJCUJJT19uZXdfZmQ7Ci0rCQlCSU9fbmV3X2ZpbGU7Ci0rCQlCSU9fbmV3X2ZwOwotKwkJQklPX25ld19zb2NrZXQ7Ci0rCQlCSU9fcG9wOwotKwkJQklPX3ByaW50ZjsKLSsJCUJJT19wdXNoOwotKwkJQklPX3B1dHM7Ci0rCQlCSU9fcmVhZDsKLSsJCUJJT19zX2FjY2VwdDsKLSsJCUJJT19zX2Nvbm5lY3Q7Ci0rCQlCSU9fc19mZDsKLSsJCUJJT19zX2ZpbGU7Ci0rCQlCSU9fc19tZW07Ci0rCQlCSU9fc19udWxsOwotKwkJQklPX3NfcHJveHlfY2xpZW50OwotKwkJQklPX3Nfc29ja2V0OwotKwkJQklPX3NldDsKLSsJCUJJT19zZXRfY2lwaGVyOwotKwkJQklPX3NldF90Y3BfbmRlbGF5OwotKwkJQklPX3NvY2tfY2xlYW51cDsKLSsJCUJJT19zb2NrX2Vycm9yOwotKwkJQklPX3NvY2tfaW5pdDsKLSsJCUJJT19zb2NrX25vbl9mYXRhbF9lcnJvcjsKLSsJCUJJT19zb2NrX3Nob3VsZF9yZXRyeTsKLSsJCUJJT19zb2NrZXRfaW9jdGw7Ci0rCQlCSU9fd3JpdGU7Ci0rCQlCTl9DVFhfZnJlZTsKLSsJCUJOX0NUWF9uZXc7Ci0rCQlCTl9NT05UX0NUWF9mcmVlOwotKwkJQk5fTU9OVF9DVFhfbmV3OwotKwkJQk5fTU9OVF9DVFhfc2V0OwotKwkJQk5fYWRkOwotKwkJQk5fYWRkX3dvcmQ7Ci0rCQlCTl9oZXgyYm47Ci0rCQlCTl9iaW4yYm47Ci0rCQlCTl9ibjJoZXg7Ci0rCQlCTl9ibjJiaW47Ci0rCQlCTl9jbGVhcjsKLSsJCUJOX2NsZWFyX2JpdDsKLSsJCUJOX2NsZWFyX2ZyZWU7Ci0rCQlCTl9jbXA7Ci0rCQlCTl9jb3B5OwotKwkJQk5fZGl2OwotKwkJQk5fZGl2X3dvcmQ7Ci0rCQlCTl9kdXA7Ci0rCQlCTl9mcmVlOwotKwkJQk5fZnJvbV9tb250Z29tZXJ5OwotKwkJQk5fZ2NkOwotKwkJQk5fZ2VuZXJhdGVfcHJpbWU7Ci0rCQlCTl9nZXRfd29yZDsKLSsJCUJOX2lzX2JpdF9zZXQ7Ci0rCQlCTl9pc19wcmltZTsKLSsJCUJOX2xzaGlmdDsKLSsJCUJOX2xzaGlmdDE7Ci0rCQlCTl9tYXNrX2JpdHM7Ci0rCQlCTl9tb2Q7Ci0rCQlCTl9tb2RfZXhwOwotKwkJQk5fbW9kX2V4cF9tb250OwotKwkJQk5fbW9kX2V4cF9zaW1wbGU7Ci0rCQlCTl9tb2RfaW52ZXJzZTsKLSsJCUJOX21vZF9tdWw7Ci0rCQlCTl9tb2RfbXVsX21vbnRnb21lcnk7Ci0rCQlCTl9tb2Rfd29yZDsKLSsJCUJOX211bDsKLSsJCUJOX25ldzsKLSsJCUJOX251bV9iaXRzOwotKwkJQk5fbnVtX2JpdHNfd29yZDsKLSsJCUJOX29wdGlvbnM7Ci0rCQlCTl9wcmludDsKLSsJCUJOX3ByaW50X2ZwOwotKwkJQk5fcmFuZDsKLSsJCUJOX3JlY2lwcm9jYWw7Ci0rCQlCTl9yc2hpZnQ7Ci0rCQlCTl9yc2hpZnQxOwotKwkJQk5fc2V0X2JpdDsKLSsJCUJOX3NldF93b3JkOwotKwkJQk5fc3FyOwotKwkJQk5fc3ViOwotKwkJQk5fdG9fQVNOMV9JTlRFR0VSOwotKwkJQk5fdWNtcDsKLSsJCUJOX3ZhbHVlX29uZTsKLSsJCUJVRl9NRU1fZnJlZTsKLSsJCUJVRl9NRU1fZ3JvdzsKLSsJCUJVRl9NRU1fbmV3OwotKwkJQlVGX3N0cmR1cDsKLSsJCUNPTkZfZnJlZTsKLSsJCUNPTkZfZ2V0X251bWJlcjsKLSsJCUNPTkZfZ2V0X3NlY3Rpb247Ci0rCQlDT05GX2dldF9zdHJpbmc7Ci0rCQlDT05GX2xvYWQ7Ci0rCQlDUllQVE9fYWRkX2xvY2s7Ci0rCQlDUllQVE9fZGJnX2ZyZWU7Ci0rCQlDUllQVE9fZGJnX21hbGxvYzsKLSsJCUNSWVBUT19kYmdfcmVhbGxvYzsKLSsJCUNSWVBUT19kYmdfcmVtYWxsb2M7Ci0rCQlDUllQVE9fZnJlZTsKLSsJCUNSWVBUT19nZXRfYWRkX2xvY2tfY2FsbGJhY2s7Ci0rCQlDUllQVE9fZ2V0X2lkX2NhbGxiYWNrOwotKwkJQ1JZUFRPX2dldF9sb2NrX25hbWU7Ci0rCQlDUllQVE9fZ2V0X2xvY2tpbmdfY2FsbGJhY2s7Ci0rCQlDUllQVE9fZ2V0X21lbV9mdW5jdGlvbnM7Ci0rCQlDUllQVE9fbG9jazsKLSsJCUNSWVBUT19tYWxsb2M7Ci0rCQlDUllQVE9fbWVtX2N0cmw7Ci0rCQlDUllQVE9fbWVtX2xlYWtzOwotKwkJQ1JZUFRPX21lbV9sZWFrc19jYjsKLSsJCUNSWVBUT19tZW1fbGVha3NfZnA7Ci0rCQlDUllQVE9fcmVhbGxvYzsKLSsJCUNSWVBUT19yZW1hbGxvYzsKLSsJCUNSWVBUT19zZXRfYWRkX2xvY2tfY2FsbGJhY2s7Ci0rCQlDUllQVE9fc2V0X2lkX2NhbGxiYWNrOwotKwkJQ1JZUFRPX3NldF9sb2NraW5nX2NhbGxiYWNrOwotKwkJQ1JZUFRPX3NldF9tZW1fZnVuY3Rpb25zOwotKwkJQ1JZUFRPX3RocmVhZF9pZDsKLSsJCURIX2NoZWNrOwotKwkJREhfY29tcHV0ZV9rZXk7Ci0rCQlESF9mcmVlOwotKwkJREhfZ2VuZXJhdGVfa2V5OwotKwkJREhfZ2VuZXJhdGVfcGFyYW1ldGVyczsKLSsJCURIX25ldzsKLSsJCURIX3NpemU7Ci0rCQlESHBhcmFtc19wcmludDsKLSsJCURIcGFyYW1zX3ByaW50X2ZwOwotKwkJRFNBX2ZyZWU7Ci0rCQlEU0FfZ2VuZXJhdGVfa2V5OwotKwkJRFNBX2dlbmVyYXRlX3BhcmFtZXRlcnM7Ci0rCQlEU0FfaXNfcHJpbWU7Ci0rCQlEU0FfbmV3OwotKwkJRFNBX3ByaW50OwotKwkJRFNBX3ByaW50X2ZwOwotKwkJRFNBX3NpZ247Ci0rCQlEU0Ffc2lnbl9zZXR1cDsKLSsJCURTQV9zaXplOwotKwkJRFNBX3ZlcmlmeTsKLSsJCURTQXBhcmFtc19wcmludDsKLSsJCURTQXBhcmFtc19wcmludF9mcDsKLSsJCUVSUl9jbGVhcl9lcnJvcjsKLSsJCUVSUl9lcnJvcl9zdHJpbmc7Ci0rCQlFUlJfZnJlZV9zdHJpbmdzOwotKwkJRVJSX2Z1bmNfZXJyb3Jfc3RyaW5nOwotKwkJRVJSX2dldF9lcnJfc3RhdGVfdGFibGU7Ci0rCQlFUlJfZ2V0X2Vycm9yOwotKwkJRVJSX2dldF9lcnJvcl9saW5lOwotKwkJRVJSX2dldF9zdGF0ZTsKLSsJCUVSUl9nZXRfc3RyaW5nX3RhYmxlOwotKwkJRVJSX2xpYl9lcnJvcl9zdHJpbmc7Ci0rCQlFUlJfbG9hZF9BU04xX3N0cmluZ3M7Ci0rCQlFUlJfbG9hZF9CSU9fc3RyaW5nczsKLSsJCUVSUl9sb2FkX0JOX3N0cmluZ3M7Ci0rCQlFUlJfbG9hZF9CVUZfc3RyaW5nczsKLSsJCUVSUl9sb2FkX0NPTkZfc3RyaW5nczsKLSsJCUVSUl9sb2FkX0RIX3N0cmluZ3M7Ci0rCQlFUlJfbG9hZF9EU0Ffc3RyaW5nczsKLSsJCUVSUl9sb2FkX0VSUl9zdHJpbmdzOwotKwkJRVJSX2xvYWRfRVZQX3N0cmluZ3M7Ci0rCQlFUlJfbG9hZF9PQkpfc3RyaW5nczsKLSsJCUVSUl9sb2FkX1BFTV9zdHJpbmdzOwotKwkJRVJSX2xvYWRfUFJPWFlfc3RyaW5nczsKLSsJCUVSUl9sb2FkX1JTQV9zdHJpbmdzOwotKwkJRVJSX2xvYWRfWDUwOV9zdHJpbmdzOwotKwkJRVJSX2xvYWRfY3J5cHRvX3N0cmluZ3M7Ci0rCQlFUlJfbG9hZF9zdHJpbmdzOwotKwkJRVJSX3BlZWtfZXJyb3I7Ci0rCQlFUlJfcGVla19lcnJvcl9saW5lOwotKwkJRVJSX3ByaW50X2Vycm9yczsKLSsJCUVSUl9wcmludF9lcnJvcnNfZnA7Ci0rCQlFUlJfcHV0X2Vycm9yOwotKwkJRVJSX3JlYXNvbl9lcnJvcl9zdHJpbmc7Ci0rCQlFUlJfcmVtb3ZlX3N0YXRlOwotKwkJRVZQX0J5dGVzVG9LZXk7Ci0rCQlFVlBfQ0lQSEVSX0NUWF9jbGVhbnVwOwotKwkJRVZQX0NpcGhlckZpbmFsOwotKwkJRVZQX0NpcGhlckluaXQ7Ci0rCQlFVlBfQ2lwaGVyVXBkYXRlOwotKwkJRVZQX0RlY29kZUJsb2NrOwotKwkJRVZQX0RlY29kZUZpbmFsOwotKwkJRVZQX0RlY29kZUluaXQ7Ci0rCQlFVlBfRGVjb2RlVXBkYXRlOwotKwkJRVZQX0RlY3J5cHRGaW5hbDsKLSsJCUVWUF9EZWNyeXB0SW5pdDsKLSsJCUVWUF9EZWNyeXB0VXBkYXRlOwotKwkJRVZQX0RpZ2VzdEZpbmFsOwotKwkJRVZQX0RpZ2VzdEluaXQ7Ci0rCQlFVlBfRGlnZXN0VXBkYXRlOwotKwkJRVZQX0VuY29kZUJsb2NrOwotKwkJRVZQX0VuY29kZUZpbmFsOwotKwkJRVZQX0VuY29kZUluaXQ7Ci0rCQlFVlBfRW5jb2RlVXBkYXRlOwotKwkJRVZQX0VuY3J5cHRGaW5hbDsKLSsJCUVWUF9FbmNyeXB0SW5pdDsKLSsJCUVWUF9FbmNyeXB0VXBkYXRlOwotKwkJRVZQX09wZW5GaW5hbDsKLSsJCUVWUF9PcGVuSW5pdDsKLSsJCUVWUF9QS0VZX2Fzc2lnbjsKLSsJCUVWUF9QS0VZX2NvcHlfcGFyYW1ldGVyczsKLSsJCUVWUF9QS0VZX2ZyZWU7Ci0rCQlFVlBfUEtFWV9taXNzaW5nX3BhcmFtZXRlcnM7Ci0rCQlFVlBfUEtFWV9uZXc7Ci0rCQlFVlBfUEtFWV9zYXZlX3BhcmFtZXRlcnM7Ci0rCQlFVlBfUEtFWV9zaXplOwotKwkJRVZQX1BLRVlfdHlwZTsKLSsJCUVWUF9TZWFsRmluYWw7Ci0rCQlFVlBfU2VhbEluaXQ7Ci0rCQlFVlBfU2lnbkZpbmFsOwotKwkJRVZQX1ZlcmlmeUZpbmFsOwotKwkJRVZQX2FkZF9hbGlhczsKLSsJCUVWUF9hZGRfY2lwaGVyOwotKwkJRVZQX2FkZF9kaWdlc3Q7Ci0rCQlFVlBfYmZfY2JjOwotKwkJRVZQX2JmX2NmYjY0OwotKwkJRVZQX2JmX2VjYjsKLSsJCUVWUF9iZl9vZmI7Ci0rCQlFVlBfY2xlYW51cDsKLSsJCUVWUF9kZXNfY2JjOwotKwkJRVZQX2Rlc19jZmI2NDsKLSsJCUVWUF9kZXNfZWNiOwotKwkJRVZQX2Rlc19lZGU7Ci0rCQlFVlBfZGVzX2VkZTM7Ci0rCQlFVlBfZGVzX2VkZTNfY2JjOwotKwkJRVZQX2Rlc19lZGUzX2NmYjY0OwotKwkJRVZQX2Rlc19lZGUzX29mYjsKLSsJCUVWUF9kZXNfZWRlX2NiYzsKLSsJCUVWUF9kZXNfZWRlX2NmYjY0OwotKwkJRVZQX2Rlc19lZGVfb2ZiOwotKwkJRVZQX2Rlc19vZmI7Ci0rCQlFVlBfZGVzeF9jYmM7Ci0rCQlFVlBfZHNzOwotKwkJRVZQX2RzczE7Ci0rCQlFVlBfZW5jX251bGw7Ci0rCQlFVlBfZ2V0X2NpcGhlcmJ5bmFtZTsKLSsJCUVWUF9nZXRfZGlnZXN0YnluYW1lOwotKwkJRVZQX2dldF9wd19wcm9tcHQ7Ci0rCQlFVlBfaWRlYV9jYmM7Ci0rCQlFVlBfaWRlYV9jZmI2NDsKLSsJCUVWUF9pZGVhX2VjYjsKLSsJCUVWUF9pZGVhX29mYjsKLSsJCUVWUF9tZDI7Ci0rCQlFVlBfbWQ1OwotKwkJRVZQX21kX251bGw7Ci0rCQlFVlBfcmMyX2NiYzsKLSsJCUVWUF9yYzJfY2ZiNjQ7Ci0rCQlFVlBfcmMyX2VjYjsKLSsJCUVWUF9yYzJfb2ZiOwotKwkJRVZQX3JjNDsKLSsJCUVWUF9yZWFkX3B3X3N0cmluZzsKLSsJCUVWUF9zZXRfcHdfcHJvbXB0OwotKwkJRVZQX3NoYTsKLSsJCUVWUF9zaGExOwotKwkJTUQyOwotKwkJTUQyX0ZpbmFsOwotKwkJTUQyX0luaXQ7Ci0rCQlNRDJfVXBkYXRlOwotKwkJTUQyX29wdGlvbnM7Ci0rCQlNRDU7Ci0rCQlNRDVfRmluYWw7Ci0rCQlNRDVfSW5pdDsKLSsJCU1ENV9VcGRhdGU7Ci0rCQlNREMyOwotKwkJTURDMl9GaW5hbDsKLSsJCU1EQzJfSW5pdDsKLSsJCU1EQzJfVXBkYXRlOwotKwkJTkVUU0NBUEVfU1BLQUNfZnJlZTsKLSsJCU5FVFNDQVBFX1NQS0FDX25ldzsKLSsJCU5FVFNDQVBFX1NQS0lfZnJlZTsKLSsJCU5FVFNDQVBFX1NQS0lfbmV3OwotKwkJTkVUU0NBUEVfU1BLSV9zaWduOwotKwkJTkVUU0NBUEVfU1BLSV92ZXJpZnk7Ci0rCQlPQkpfYWRkX29iamVjdDsKLSsJCU9CSl9ic2VhcmNoOwotKwkJT0JKX2NsZWFudXA7Ci0rCQlPQkpfY21wOwotKwkJT0JKX2NyZWF0ZTsKLSsJCU9CSl9kdXA7Ci0rCQlPQkpfbG4ybmlkOwotKwkJT0JKX25ld19uaWQ7Ci0rCQlPQkpfbmlkMmxuOwotKwkJT0JKX25pZDJvYmo7Ci0rCQlPQkpfbmlkMnNuOwotKwkJT0JKX29iajJuaWQ7Ci0rCQlPQkpfc24ybmlkOwotKwkJT0JKX3R4dDJuaWQ7Ci0rCQlQRU1fQVNOMV9yZWFkOwotKwkJUEVNX0FTTjFfcmVhZF9iaW87Ci0rCQlQRU1fQVNOMV93cml0ZTsKLSsJCVBFTV9BU04xX3dyaXRlX2JpbzsKLSsJCVBFTV9TZWFsRmluYWw7Ci0rCQlQRU1fU2VhbEluaXQ7Ci0rCQlQRU1fU2VhbFVwZGF0ZTsKLSsJCVBFTV9TaWduRmluYWw7Ci0rCQlQRU1fU2lnbkluaXQ7Ci0rCQlQRU1fU2lnblVwZGF0ZTsKLSsJCVBFTV9YNTA5X0lORk9fcmVhZDsKLSsJCVBFTV9YNTA5X0lORk9fcmVhZF9iaW87Ci0rCQlQRU1fWDUwOV9JTkZPX3dyaXRlX2JpbzsKLSsJCVBFTV9kZWtfaW5mbzsKLSsJCVBFTV9kb19oZWFkZXI7Ci0rCQlQRU1fZ2V0X0VWUF9DSVBIRVJfSU5GTzsKLSsJCVBFTV9wcm9jX3R5cGU7Ci0rCQlQRU1fcmVhZDsKLSsJCVBFTV9yZWFkX0RIcGFyYW1zOwotKwkJUEVNX3JlYWRfRFNBUHJpdmF0ZUtleTsKLSsJCVBFTV9yZWFkX0RTQXBhcmFtczsKLSsJCVBFTV9yZWFkX1BLQ1M3OwotKwkJUEVNX3JlYWRfUHJpdmF0ZUtleTsKLSsJCVBFTV9yZWFkX1JTQVByaXZhdGVLZXk7Ci0rCQlQRU1fcmVhZF9YNTA5OwotKwkJUEVNX3JlYWRfWDUwOV9DUkw7Ci0rCQlQRU1fcmVhZF9YNTA5X1JFUTsKLSsJCVBFTV9yZWFkX2JpbzsKLSsJCVBFTV9yZWFkX2Jpb19ESHBhcmFtczsKLSsJCVBFTV9yZWFkX2Jpb19EU0FQcml2YXRlS2V5OwotKwkJUEVNX3JlYWRfYmlvX0RTQXBhcmFtczsKLSsJCVBFTV9yZWFkX2Jpb19QS0NTNzsKLSsJCVBFTV9yZWFkX2Jpb19Qcml2YXRlS2V5OwotKwkJUEVNX3JlYWRfYmlvX1JTQVByaXZhdGVLZXk7Ci0rCQlQRU1fcmVhZF9iaW9fWDUwOTsKLSsJCVBFTV9yZWFkX2Jpb19YNTA5X0NSTDsKLSsJCVBFTV9yZWFkX2Jpb19YNTA5X1JFUTsKLSsJCVBFTV93cml0ZTsKLSsJCVBFTV93cml0ZV9ESHBhcmFtczsKLSsJCVBFTV93cml0ZV9EU0FQcml2YXRlS2V5OwotKwkJUEVNX3dyaXRlX0RTQXBhcmFtczsKLSsJCVBFTV93cml0ZV9QS0NTNzsKLSsJCVBFTV93cml0ZV9Qcml2YXRlS2V5OwotKwkJUEVNX3dyaXRlX1JTQVByaXZhdGVLZXk7Ci0rCQlQRU1fd3JpdGVfWDUwOTsKLSsJCVBFTV93cml0ZV9YNTA5X0NSTDsKLSsJCVBFTV93cml0ZV9YNTA5X1JFUTsKLSsJCVBFTV93cml0ZV9iaW87Ci0rCQlQRU1fd3JpdGVfYmlvX0RIcGFyYW1zOwotKwkJUEVNX3dyaXRlX2Jpb19EU0FQcml2YXRlS2V5OwotKwkJUEVNX3dyaXRlX2Jpb19EU0FwYXJhbXM7Ci0rCQlQRU1fd3JpdGVfYmlvX1BLQ1M3OwotKwkJUEVNX3dyaXRlX2Jpb19Qcml2YXRlS2V5OwotKwkJUEVNX3dyaXRlX2Jpb19SU0FQcml2YXRlS2V5OwotKwkJUEVNX3dyaXRlX2Jpb19YNTA5OwotKwkJUEVNX3dyaXRlX2Jpb19YNTA5X0NSTDsKLSsJCVBFTV93cml0ZV9iaW9fWDUwOV9SRVE7Ci0rCQlQS0NTN19ESUdFU1RfZnJlZTsKLSsJCVBLQ1M3X0RJR0VTVF9uZXc7Ci0rCQlQS0NTN19FTkNSWVBUX2ZyZWU7Ci0rCQlQS0NTN19FTkNSWVBUX25ldzsKLSsJCVBLQ1M3X0VOQ19DT05URU5UX2ZyZWU7Ci0rCQlQS0NTN19FTkNfQ09OVEVOVF9uZXc7Ci0rCQlQS0NTN19FTlZFTE9QRV9mcmVlOwotKwkJUEtDUzdfRU5WRUxPUEVfbmV3OwotKwkJUEtDUzdfSVNTVUVSX0FORF9TRVJJQUxfZGlnZXN0OwotKwkJUEtDUzdfSVNTVUVSX0FORF9TRVJJQUxfZnJlZTsKLSsJCVBLQ1M3X0lTU1VFUl9BTkRfU0VSSUFMX25ldzsKLSsJCVBLQ1M3X1JFQ0lQX0lORk9fZnJlZTsKLSsJCVBLQ1M3X1JFQ0lQX0lORk9fbmV3OwotKwkJUEtDUzdfU0lHTkVEX2ZyZWU7Ci0rCQlQS0NTN19TSUdORURfbmV3OwotKwkJUEtDUzdfU0lHTkVSX0lORk9fZnJlZTsKLSsJCVBLQ1M3X1NJR05FUl9JTkZPX25ldzsKLSsJCVBLQ1M3X1NJR05fRU5WRUxPUEVfZnJlZTsKLSsJCVBLQ1M3X1NJR05fRU5WRUxPUEVfbmV3OwotKwkJUEtDUzdfZHVwOwotKwkJUEtDUzdfZnJlZTsKLSsJCVBLQ1M3X25ldzsKLSsJCVBST1hZX0VOVFJZX2FkZF9ub3Byb3h5OwotKwkJUFJPWFlfRU5UUllfY2xlYXJfbm9wcm94eTsKLSsJCVBST1hZX0VOVFJZX2ZyZWU7Ci0rCQlQUk9YWV9FTlRSWV9nZXRfbm9wcm94eTsKLSsJCVBST1hZX0VOVFJZX25ldzsKLSsJCVBST1hZX0VOVFJZX3NldF9zZXJ2ZXI7Ci0rCQlQUk9YWV9hZGRfbm9wcm94eTsKLSsJCVBST1hZX2FkZF9zZXJ2ZXI7Ci0rCQlQUk9YWV9jaGVja19ieV9ob3N0OwotKwkJUFJPWFlfY2hlY2tfdXJsOwotKwkJUFJPWFlfY2xlYXJfbm9wcm94eTsKLSsJCVBST1hZX2ZyZWU7Ci0rCQlQUk9YWV9nZXRfbm9wcm94eTsKLSsJCVBST1hZX2dldF9wcm94aWVzOwotKwkJUFJPWFlfZ2V0X3Byb3h5X2VudHJ5OwotKwkJUFJPWFlfbG9hZF9jb25mOwotKwkJUFJPWFlfbmV3OwotKwkJUFJPWFlfcHJpbnQ7Ci0rCQlSQU5EX2J5dGVzOwotKwkJUkFORF9jbGVhbnVwOwotKwkJUkFORF9maWxlX25hbWU7Ci0rCQlSQU5EX2xvYWRfZmlsZTsKLSsJCVJBTkRfc2NyZWVuOwotKwkJUkFORF9zZWVkOwotKwkJUkFORF93cml0ZV9maWxlOwotKwkJUkMyX2NiY19lbmNyeXB0OwotKwkJUkMyX2NmYjY0X2VuY3J5cHQ7Ci0rCQlSQzJfZWNiX2VuY3J5cHQ7Ci0rCQlSQzJfZW5jcnlwdDsKLSsJCVJDMl9vZmI2NF9lbmNyeXB0OwotKwkJUkMyX3NldF9rZXk7Ci0rCQlSQzQ7Ci0rCQlSQzRfb3B0aW9uczsKLSsJCVJDNF9zZXRfa2V5OwotKwkJUlNBUHJpdmF0ZUtleV9hc24xX21ldGg7Ci0rCQlSU0FQcml2YXRlS2V5X2R1cDsKLSsJCVJTQVB1YmxpY0tleV9kdXA7Ci0rCQlSU0FfUEtDUzFfU1NMZWF5OwotKwkJUlNBX2ZyZWU7Ci0rCQlSU0FfZ2VuZXJhdGVfa2V5OwotKwkJUlNBX25ldzsKLSsJCVJTQV9uZXdfbWV0aG9kOwotKwkJUlNBX3ByaW50OwotKwkJUlNBX3ByaW50X2ZwOwotKwkJUlNBX3ByaXZhdGVfZGVjcnlwdDsKLSsJCVJTQV9wcml2YXRlX2VuY3J5cHQ7Ci0rCQlSU0FfcHVibGljX2RlY3J5cHQ7Ci0rCQlSU0FfcHVibGljX2VuY3J5cHQ7Ci0rCQlSU0Ffc2V0X2RlZmF1bHRfbWV0aG9kOwotKwkJUlNBX3NpZ247Ci0rCQlSU0Ffc2lnbl9BU04xX09DVEVUX1NUUklORzsKLSsJCVJTQV9zaXplOwotKwkJUlNBX3ZlcmlmeTsKLSsJCVJTQV92ZXJpZnlfQVNOMV9PQ1RFVF9TVFJJTkc7Ci0rCQlTSEE7Ci0rCQlTSEExOwotKwkJU0hBMV9GaW5hbDsKLSsJCVNIQTFfSW5pdDsKLSsJCVNIQTFfVXBkYXRlOwotKwkJU0hBX0ZpbmFsOwotKwkJU0hBX0luaXQ7Ci0rCQlTSEFfVXBkYXRlOwotKwkJT3BlblNTTF9hZGRfYWxsX2FsZ29yaXRobXM7Ci0rCQlPcGVuU1NMX2FkZF9hbGxfY2lwaGVyczsKLSsJCU9wZW5TU0xfYWRkX2FsbF9kaWdlc3RzOwotKwkJVFhUX0RCX2NyZWF0ZV9pbmRleDsKLSsJCVRYVF9EQl9mcmVlOwotKwkJVFhUX0RCX2dldF9ieV9pbmRleDsKLSsJCVRYVF9EQl9pbnNlcnQ7Ci0rCQlUWFRfREJfcmVhZDsKLSsJCVRYVF9EQl93cml0ZTsKLSsJCVg1MDlfQUxHT1JfZnJlZTsKLSsJCVg1MDlfQUxHT1JfbmV3OwotKwkJWDUwOV9BVFRSSUJVVEVfZnJlZTsKLSsJCVg1MDlfQVRUUklCVVRFX25ldzsKLSsJCVg1MDlfQ0lORl9mcmVlOwotKwkJWDUwOV9DSU5GX25ldzsKLSsJCVg1MDlfQ1JMX0lORk9fZnJlZTsKLSsJCVg1MDlfQ1JMX0lORk9fbmV3OwotKwkJWDUwOV9DUkxfYWRkX2V4dDsKLSsJCVg1MDlfQ1JMX2NtcDsKLSsJCVg1MDlfQ1JMX2RlbGV0ZV9leHQ7Ci0rCQlYNTA5X0NSTF9kdXA7Ci0rCQlYNTA5X0NSTF9mcmVlOwotKwkJWDUwOV9DUkxfZ2V0X2V4dDsKLSsJCVg1MDlfQ1JMX2dldF9leHRfYnlfTklEOwotKwkJWDUwOV9DUkxfZ2V0X2V4dF9ieV9PQko7Ci0rCQlYNTA5X0NSTF9nZXRfZXh0X2J5X2NyaXRpY2FsOwotKwkJWDUwOV9DUkxfZ2V0X2V4dF9jb3VudDsKLSsJCVg1MDlfQ1JMX25ldzsKLSsJCVg1MDlfQ1JMX3NpZ247Ci0rCQlYNTA5X0NSTF92ZXJpZnk7Ci0rCQlYNTA5X0VYVEVOU0lPTl9jcmVhdGVfYnlfTklEOwotKwkJWDUwOV9FWFRFTlNJT05fY3JlYXRlX2J5X09CSjsKLSsJCVg1MDlfRVhURU5TSU9OX2R1cDsKLSsJCVg1MDlfRVhURU5TSU9OX2ZyZWU7Ci0rCQlYNTA5X0VYVEVOU0lPTl9nZXRfY3JpdGljYWw7Ci0rCQlYNTA5X0VYVEVOU0lPTl9nZXRfZGF0YTsKLSsJCVg1MDlfRVhURU5TSU9OX2dldF9vYmplY3Q7Ci0rCQlYNTA5X0VYVEVOU0lPTl9uZXc7Ci0rCQlYNTA5X0VYVEVOU0lPTl9zZXRfY3JpdGljYWw7Ci0rCQlYNTA5X0VYVEVOU0lPTl9zZXRfZGF0YTsKLSsJCVg1MDlfRVhURU5TSU9OX3NldF9vYmplY3Q7Ci0rCQlYNTA5X0lORk9fZnJlZTsKLSsJCVg1MDlfSU5GT19uZXc7Ci0rCQlYNTA5X0xPT0tVUF9ieV9hbGlhczsKLSsJCVg1MDlfTE9PS1VQX2J5X2ZpbmdlcnByaW50OwotKwkJWDUwOV9MT09LVVBfYnlfaXNzdWVyX3NlcmlhbDsKLSsJCVg1MDlfTE9PS1VQX2J5X3N1YmplY3Q7Ci0rCQlYNTA5X0xPT0tVUF9jdHJsOwotKwkJWDUwOV9MT09LVVBfZmlsZTsKLSsJCVg1MDlfTE9PS1VQX2ZyZWU7Ci0rCQlYNTA5X0xPT0tVUF9oYXNoX2RpcjsKLSsJCVg1MDlfTE9PS1VQX2luaXQ7Ci0rCQlYNTA5X0xPT0tVUF9uZXc7Ci0rCQlYNTA5X0xPT0tVUF9zaHV0ZG93bjsKLSsJCVg1MDlfTkFNRV9FTlRSWV9jcmVhdGVfYnlfTklEOwotKwkJWDUwOV9OQU1FX0VOVFJZX2NyZWF0ZV9ieV9PQko7Ci0rCQlYNTA5X05BTUVfRU5UUllfZHVwOwotKwkJWDUwOV9OQU1FX0VOVFJZX2ZyZWU7Ci0rCQlYNTA5X05BTUVfRU5UUllfZ2V0X2RhdGE7Ci0rCQlYNTA5X05BTUVfRU5UUllfZ2V0X29iamVjdDsKLSsJCVg1MDlfTkFNRV9FTlRSWV9uZXc7Ci0rCQlYNTA5X05BTUVfRU5UUllfc2V0X2RhdGE7Ci0rCQlYNTA5X05BTUVfRU5UUllfc2V0X29iamVjdDsKLSsJCVg1MDlfTkFNRV9hZGRfZW50cnk7Ci0rCQlYNTA5X05BTUVfY21wOwotKwkJWDUwOV9OQU1FX2RlbGV0ZV9lbnRyeTsKLSsJCVg1MDlfTkFNRV9kaWdlc3Q7Ci0rCQlYNTA5X05BTUVfZHVwOwotKwkJWDUwOV9OQU1FX2VudHJ5X2NvdW50OwotKwkJWDUwOV9OQU1FX2ZyZWU7Ci0rCQlYNTA5X05BTUVfZ2V0X2VudHJ5OwotKwkJWDUwOV9OQU1FX2dldF9pbmRleF9ieV9OSUQ7Ci0rCQlYNTA5X05BTUVfZ2V0X2luZGV4X2J5X09CSjsKLSsJCVg1MDlfTkFNRV9nZXRfdGV4dF9ieV9OSUQ7Ci0rCQlYNTA5X05BTUVfZ2V0X3RleHRfYnlfT0JKOwotKwkJWDUwOV9OQU1FX2hhc2g7Ci0rCQlYNTA5X05BTUVfbmV3OwotKwkJWDUwOV9OQU1FX29uZWxpbmU7Ci0rCQlYNTA5X05BTUVfcHJpbnQ7Ci0rCQlYNTA5X05BTUVfc2V0OwotKwkJWDUwOV9PQkpFQ1RfZnJlZV9jb250ZW50czsKLSsJCVg1MDlfT0JKRUNUX3JldHJpZXZlX2J5X3N1YmplY3Q7Ci0rCQlYNTA5X09CSkVDVF91cF9yZWZfY291bnQ7Ci0rCQlYNTA5X1BLRVlfZnJlZTsKLSsJCVg1MDlfUEtFWV9uZXc7Ci0rCQlYNTA5X1BVQktFWV9mcmVlOwotKwkJWDUwOV9QVUJLRVlfZ2V0OwotKwkJWDUwOV9QVUJLRVlfbmV3OwotKwkJWDUwOV9QVUJLRVlfc2V0OwotKwkJWDUwOV9SRVFfSU5GT19mcmVlOwotKwkJWDUwOV9SRVFfSU5GT19uZXc7Ci0rCQlYNTA5X1JFUV9kdXA7Ci0rCQlYNTA5X1JFUV9mcmVlOwotKwkJWDUwOV9SRVFfZ2V0X3B1YmtleTsKLSsJCVg1MDlfUkVRX25ldzsKLSsJCVg1MDlfUkVRX3ByaW50OwotKwkJWDUwOV9SRVFfcHJpbnRfZnA7Ci0rCQlYNTA5X1JFUV9zZXRfcHVia2V5OwotKwkJWDUwOV9SRVFfc2V0X3N1YmplY3RfbmFtZTsKLSsJCVg1MDlfUkVRX3NldF92ZXJzaW9uOwotKwkJWDUwOV9SRVFfc2lnbjsKLSsJCVg1MDlfUkVRX3RvX1g1MDk7Ci0rCQlYNTA5X1JFUV92ZXJpZnk7Ci0rCQlYNTA5X1JFVk9LRURfYWRkX2V4dDsKLSsJCVg1MDlfUkVWT0tFRF9kZWxldGVfZXh0OwotKwkJWDUwOV9SRVZPS0VEX2ZyZWU7Ci0rCQlYNTA5X1JFVk9LRURfZ2V0X2V4dDsKLSsJCVg1MDlfUkVWT0tFRF9nZXRfZXh0X2J5X05JRDsKLSsJCVg1MDlfUkVWT0tFRF9nZXRfZXh0X2J5X09CSjsKLSsJCVg1MDlfUkVWT0tFRF9nZXRfZXh0X2J5X2NyaXRpY2FsOwotKwkJWDUwOV9SRVZPS0VEX2dldF9leHRfYnlfY3JpdGljOwotKwkJWDUwOV9SRVZPS0VEX2dldF9leHRfY291bnQ7Ci0rCQlYNTA5X1JFVk9LRURfbmV3OwotKwkJWDUwOV9TSUdfZnJlZTsKLSsJCVg1MDlfU0lHX25ldzsKLSsJCVg1MDlfU1RPUkVfQ1RYX2NsZWFudXA7Ci0rCQlYNTA5X1NUT1JFX0NUWF9pbml0OwotKwkJWDUwOV9TVE9SRV9hZGRfY2VydDsKLSsJCVg1MDlfU1RPUkVfYWRkX2xvb2t1cDsKLSsJCVg1MDlfU1RPUkVfZnJlZTsKLSsJCVg1MDlfU1RPUkVfZ2V0X2J5X3N1YmplY3Q7Ci0rCQlYNTA5X1NUT1JFX2xvYWRfbG9jYXRpb25zOwotKwkJWDUwOV9TVE9SRV9uZXc7Ci0rCQlYNTA5X1NUT1JFX3NldF9kZWZhdWx0X3BhdGhzOwotKwkJWDUwOV9WQUxfZnJlZTsKLSsJCVg1MDlfVkFMX25ldzsKLSsJCVg1MDlfYWRkX2V4dDsKLSsJCVg1MDlfYXNuMV9tZXRoOwotKwkJWDUwOV9jZXJ0aWZpY2F0ZV90eXBlOwotKwkJWDUwOV9jaGVja19wcml2YXRlX2tleTsKLSsJCVg1MDlfY21wX2N1cnJlbnRfdGltZTsKLSsJCVg1MDlfZGVsZXRlX2V4dDsKLSsJCVg1MDlfZGlnZXN0OwotKwkJWDUwOV9kdXA7Ci0rCQlYNTA5X2ZyZWU7Ci0rCQlYNTA5X2dldF9kZWZhdWx0X2NlcnRfYXJlYTsKLSsJCVg1MDlfZ2V0X2RlZmF1bHRfY2VydF9kaXI7Ci0rCQlYNTA5X2dldF9kZWZhdWx0X2NlcnRfZGlyX2VudjsKLSsJCVg1MDlfZ2V0X2RlZmF1bHRfY2VydF9maWxlOwotKwkJWDUwOV9nZXRfZGVmYXVsdF9jZXJ0X2ZpbGVfZW52OwotKwkJWDUwOV9nZXRfZGVmYXVsdF9wcml2YXRlX2RpcjsKLSsJCVg1MDlfZ2V0X2V4dDsKLSsJCVg1MDlfZ2V0X2V4dF9ieV9OSUQ7Ci0rCQlYNTA5X2dldF9leHRfYnlfT0JKOwotKwkJWDUwOV9nZXRfZXh0X2J5X2NyaXRpY2FsOwotKwkJWDUwOV9nZXRfZXh0X2NvdW50OwotKwkJWDUwOV9nZXRfaXNzdWVyX25hbWU7Ci0rCQlYNTA5X2dldF9wdWJrZXk7Ci0rCQlYNTA5X2dldF9wdWJrZXlfcGFyYW1ldGVyczsKLSsJCVg1MDlfZ2V0X3NlcmlhbE51bWJlcjsKLSsJCVg1MDlfZ2V0X3N1YmplY3RfbmFtZTsKLSsJCVg1MDlfZ210aW1lX2FkajsKLSsJCVg1MDlfaXNzdWVyX2FuZF9zZXJpYWxfY21wOwotKwkJWDUwOV9pc3N1ZXJfYW5kX3NlcmlhbF9oYXNoOwotKwkJWDUwOV9pc3N1ZXJfbmFtZV9jbXA7Ci0rCQlYNTA5X2lzc3Vlcl9uYW1lX2hhc2g7Ci0rCQlYNTA5X2xvYWRfY2VydF9maWxlOwotKwkJWDUwOV9uZXc7Ci0rCQlYNTA5X3ByaW50OwotKwkJWDUwOV9wcmludF9mcDsKLSsJCVg1MDlfc2V0X2lzc3Vlcl9uYW1lOwotKwkJWDUwOV9zZXRfbm90QWZ0ZXI7Ci0rCQlYNTA5X3NldF9ub3RCZWZvcmU7Ci0rCQlYNTA5X3NldF9wdWJrZXk7Ci0rCQlYNTA5X3NldF9zZXJpYWxOdW1iZXI7Ci0rCQlYNTA5X3NldF9zdWJqZWN0X25hbWU7Ci0rCQlYNTA5X3NldF92ZXJzaW9uOwotKwkJWDUwOV9zaWduOwotKwkJWDUwOV9zdWJqZWN0X25hbWVfY21wOwotKwkJWDUwOV9zdWJqZWN0X25hbWVfaGFzaDsKLSsJCVg1MDlfdG9fWDUwOV9SRVE7Ci0rCQlYNTA5X3ZlcmlmeTsKLSsJCVg1MDlfdmVyaWZ5X2NlcnQ7Ci0rCQlYNTA5X3ZlcmlmeV9jZXJ0X2Vycm9yX3N0cmluZzsKLSsJCVg1MDl2M19hZGRfZXh0OwotKwkJWDUwOXYzX2FkZF9leHRlbnNpb247Ci0rCQlYNTA5djNfYWRkX25ldHNjYXBlX2V4dGVuc2lvbnM7Ci0rCQlYNTA5djNfYWRkX3N0YW5kYXJkX2V4dGVuc2lvbnM7Ci0rCQlYNTA5djNfY2xlYW51cF9leHRlbnNpb25zOwotKwkJWDUwOXYzX2RhdGFfdHlwZV9ieV9OSUQ7Ci0rCQlYNTA5djNfZGF0YV90eXBlX2J5X09CSjsKLSsJCVg1MDl2M19kZWxldGVfZXh0OwotKwkJWDUwOXYzX2dldF9leHQ7Ci0rCQlYNTA5djNfZ2V0X2V4dF9ieV9OSUQ7Ci0rCQlYNTA5djNfZ2V0X2V4dF9ieV9PQko7Ci0rCQlYNTA5djNfZ2V0X2V4dF9ieV9jcml0aWNhbDsKLSsJCVg1MDl2M19nZXRfZXh0X2NvdW50OwotKwkJWDUwOXYzX3BhY2tfc3RyaW5nOwotKwkJWDUwOXYzX3BhY2tfdHlwZV9ieV9OSUQ7Ci0rCQlYNTA5djNfcGFja190eXBlX2J5X09CSjsKLSsJCVg1MDl2M191bnBhY2tfc3RyaW5nOwotKwkJX2Rlc19jcnlwdDsKLSsJCWEyZF9BU04xX09CSkVDVDsKLSsJCWEyaV9BU04xX0lOVEVHRVI7Ci0rCQlhMmlfQVNOMV9TVFJJTkc7Ci0rCQlhc24xX0ZpbmlzaDsKLSsJCWFzbjFfR2V0U2VxdWVuY2U7Ci0rCQlibl9kaXZfd29yZHM7Ci0rCQlibl9leHBhbmQyOwotKwkJYm5fbXVsX2FkZF93b3JkczsKLSsJCWJuX211bF93b3JkczsKLSsJCUJOX3VhZGQ7Ci0rCQlCTl91c3ViOwotKwkJYm5fc3FyX3dvcmRzOwotKwkJX29zc2xfb2xkX2NyeXB0OwotKwkJZDJpX0FTTjFfQklUX1NUUklORzsKLSsJCWQyaV9BU04xX0JPT0xFQU47Ci0rCQlkMmlfQVNOMV9IRUFERVI7Ci0rCQlkMmlfQVNOMV9JQTVTVFJJTkc7Ci0rCQlkMmlfQVNOMV9JTlRFR0VSOwotKwkJZDJpX0FTTjFfT0JKRUNUOwotKwkJZDJpX0FTTjFfT0NURVRfU1RSSU5HOwotKwkJZDJpX0FTTjFfUFJJTlRBQkxFOwotKwkJZDJpX0FTTjFfUFJJTlRBQkxFU1RSSU5HOwotKwkJZDJpX0FTTjFfU0VUOwotKwkJZDJpX0FTTjFfVDYxU1RSSU5HOwotKwkJZDJpX0FTTjFfVFlQRTsKLSsJCWQyaV9BU04xX1VUQ1RJTUU7Ci0rCQlkMmlfQVNOMV9ieXRlczsKLSsJCWQyaV9BU04xX3R5cGVfYnl0ZXM7Ci0rCQlkMmlfREhwYXJhbXM7Ci0rCQlkMmlfRFNBUHJpdmF0ZUtleTsKLSsJCWQyaV9EU0FQcml2YXRlS2V5X2JpbzsKLSsJCWQyaV9EU0FQcml2YXRlS2V5X2ZwOwotKwkJZDJpX0RTQVB1YmxpY0tleTsKLSsJCWQyaV9EU0FwYXJhbXM7Ci0rCQlkMmlfTkVUU0NBUEVfU1BLQUM7Ci0rCQlkMmlfTkVUU0NBUEVfU1BLSTsKLSsJCWQyaV9OZXRzY2FwZV9SU0E7Ci0rCQlkMmlfUEtDUzc7Ci0rCQlkMmlfUEtDUzdfRElHRVNUOwotKwkJZDJpX1BLQ1M3X0VOQ1JZUFQ7Ci0rCQlkMmlfUEtDUzdfRU5DX0NPTlRFTlQ7Ci0rCQlkMmlfUEtDUzdfRU5WRUxPUEU7Ci0rCQlkMmlfUEtDUzdfSVNTVUVSX0FORF9TRVJJQUw7Ci0rCQlkMmlfUEtDUzdfUkVDSVBfSU5GTzsKLSsJCWQyaV9QS0NTN19TSUdORUQ7Ci0rCQlkMmlfUEtDUzdfU0lHTkVSX0lORk87Ci0rCQlkMmlfUEtDUzdfU0lHTl9FTlZFTE9QRTsKLSsJCWQyaV9QS0NTN19iaW87Ci0rCQlkMmlfUEtDUzdfZnA7Ci0rCQlkMmlfUHJpdmF0ZUtleTsKLSsJCWQyaV9QdWJsaWNLZXk7Ci0rCQlkMmlfUlNBUHJpdmF0ZUtleTsKLSsJCWQyaV9SU0FQcml2YXRlS2V5X2JpbzsKLSsJCWQyaV9SU0FQcml2YXRlS2V5X2ZwOwotKwkJZDJpX1JTQVB1YmxpY0tleTsKLSsJCWQyaV9YNTA5OwotKwkJZDJpX1g1MDlfQUxHT1I7Ci0rCQlkMmlfWDUwOV9BVFRSSUJVVEU7Ci0rCQlkMmlfWDUwOV9DSU5GOwotKwkJZDJpX1g1MDlfQ1JMOwotKwkJZDJpX1g1MDlfQ1JMX0lORk87Ci0rCQlkMmlfWDUwOV9DUkxfYmlvOwotKwkJZDJpX1g1MDlfQ1JMX2ZwOwotKwkJZDJpX1g1MDlfRVhURU5TSU9OOwotKwkJZDJpX1g1MDlfTkFNRTsKLSsJCWQyaV9YNTA5X05BTUVfRU5UUlk7Ci0rCQlkMmlfWDUwOV9QS0VZOwotKwkJZDJpX1g1MDlfUFVCS0VZOwotKwkJZDJpX1g1MDlfUkVROwotKwkJZDJpX1g1MDlfUkVRX0lORk87Ci0rCQlkMmlfWDUwOV9SRVFfYmlvOwotKwkJZDJpX1g1MDlfUkVRX2ZwOwotKwkJZDJpX1g1MDlfUkVWT0tFRDsKLSsJCWQyaV9YNTA5X1NJRzsKLSsJCWQyaV9YNTA5X1ZBTDsKLSsJCWQyaV9YNTA5X2JpbzsKLSsJCWQyaV9YNTA5X2ZwOwotKwkJREVTX2NiY19ja3N1bTsKLSsJCURFU19jYmNfZW5jcnlwdDsKLSsJCURFU19jYmxvY2tfcHJpbnRfZmlsZTsKLSsJCURFU19jZmI2NF9lbmNyeXB0OwotKwkJREVTX2NmYl9lbmNyeXB0OwotKwkJREVTX2RlY3J5cHQzOwotKwkJREVTX2VjYjNfZW5jcnlwdDsKLSsJCURFU19lY2JfZW5jcnlwdDsKLSsJCURFU19lZGUzX2NiY19lbmNyeXB0OwotKwkJREVTX2VkZTNfY2ZiNjRfZW5jcnlwdDsKLSsJCURFU19lZGUzX29mYjY0X2VuY3J5cHQ7Ci0rCQlERVNfZW5jX3JlYWQ7Ci0rCQlERVNfZW5jX3dyaXRlOwotKwkJREVTX2VuY3J5cHQxOwotKwkJREVTX2VuY3J5cHQyOwotKwkJREVTX2VuY3J5cHQzOwotKwkJREVTX2ZjcnlwdDsKLSsJCURFU19pc193ZWFrX2tleTsKLSsJCURFU19rZXlfc2NoZWQ7Ci0rCQlERVNfbmNiY19lbmNyeXB0OwotKwkJREVTX29mYjY0X2VuY3J5cHQ7Ci0rCQlERVNfb2ZiX2VuY3J5cHQ7Ci0rCQlERVNfb3B0aW9uczsKLSsJCURFU19wY2JjX2VuY3J5cHQ7Ci0rCQlERVNfcXVhZF9ja3N1bTsKLSsJCURFU19yYW5kb21fa2V5OwotKwkJX29zc2xfb2xkX2Rlc19yYW5kb21fc2VlZDsKLSsJCV9vc3NsX29sZF9kZXNfcmVhZF8ycGFzc3dvcmRzOwotKwkJX29zc2xfb2xkX2Rlc19yZWFkX3Bhc3N3b3JkOwotKwkJX29zc2xfb2xkX2Rlc19yZWFkX3B3OwotKwkJX29zc2xfb2xkX2Rlc19yZWFkX3B3X3N0cmluZzsKLSsJCURFU19zZXRfa2V5OwotKwkJREVTX3NldF9vZGRfcGFyaXR5OwotKwkJREVTX3N0cmluZ190b18ya2V5czsKLSsJCURFU19zdHJpbmdfdG9fa2V5OwotKwkJREVTX3hjYmNfZW5jcnlwdDsKLSsJCURFU194d2hpdGVfaW4yb3V0OwotKwkJZmNyeXB0X2JvZHk7Ci0rCQlpMmFfQVNOMV9JTlRFR0VSOwotKwkJaTJhX0FTTjFfT0JKRUNUOwotKwkJaTJhX0FTTjFfU1RSSU5HOwotKwkJaTJkX0FTTjFfQklUX1NUUklORzsKLSsJCWkyZF9BU04xX0JPT0xFQU47Ci0rCQlpMmRfQVNOMV9IRUFERVI7Ci0rCQlpMmRfQVNOMV9JQTVTVFJJTkc7Ci0rCQlpMmRfQVNOMV9JTlRFR0VSOwotKwkJaTJkX0FTTjFfT0JKRUNUOwotKwkJaTJkX0FTTjFfT0NURVRfU1RSSU5HOwotKwkJaTJkX0FTTjFfUFJJTlRBQkxFOwotKwkJaTJkX0FTTjFfU0VUOwotKwkJaTJkX0FTTjFfVFlQRTsKLSsJCWkyZF9BU04xX1VUQ1RJTUU7Ci0rCQlpMmRfQVNOMV9ieXRlczsKLSsJCWkyZF9ESHBhcmFtczsKLSsJCWkyZF9EU0FQcml2YXRlS2V5OwotKwkJaTJkX0RTQVByaXZhdGVLZXlfYmlvOwotKwkJaTJkX0RTQVByaXZhdGVLZXlfZnA7Ci0rCQlpMmRfRFNBUHVibGljS2V5OwotKwkJaTJkX0RTQXBhcmFtczsKLSsJCWkyZF9ORVRTQ0FQRV9TUEtBQzsKLSsJCWkyZF9ORVRTQ0FQRV9TUEtJOwotKwkJaTJkX05ldHNjYXBlX1JTQTsKLSsJCWkyZF9QS0NTNzsKLSsJCWkyZF9QS0NTN19ESUdFU1Q7Ci0rCQlpMmRfUEtDUzdfRU5DUllQVDsKLSsJCWkyZF9QS0NTN19FTkNfQ09OVEVOVDsKLSsJCWkyZF9QS0NTN19FTlZFTE9QRTsKLSsJCWkyZF9QS0NTN19JU1NVRVJfQU5EX1NFUklBTDsKLSsJCWkyZF9QS0NTN19SRUNJUF9JTkZPOwotKwkJaTJkX1BLQ1M3X1NJR05FRDsKLSsJCWkyZF9QS0NTN19TSUdORVJfSU5GTzsKLSsJCWkyZF9QS0NTN19TSUdOX0VOVkVMT1BFOwotKwkJaTJkX1BLQ1M3X2JpbzsKLSsJCWkyZF9QS0NTN19mcDsKLSsJCWkyZF9Qcml2YXRlS2V5OwotKwkJaTJkX1B1YmxpY0tleTsKLSsJCWkyZF9SU0FQcml2YXRlS2V5OwotKwkJaTJkX1JTQVByaXZhdGVLZXlfYmlvOwotKwkJaTJkX1JTQVByaXZhdGVLZXlfZnA7Ci0rCQlpMmRfUlNBUHVibGljS2V5OwotKwkJaTJkX1g1MDk7Ci0rCQlpMmRfWDUwOV9BTEdPUjsKLSsJCWkyZF9YNTA5X0FUVFJJQlVURTsKLSsJCWkyZF9YNTA5X0NJTkY7Ci0rCQlpMmRfWDUwOV9DUkw7Ci0rCQlpMmRfWDUwOV9DUkxfSU5GTzsKLSsJCWkyZF9YNTA5X0NSTF9iaW87Ci0rCQlpMmRfWDUwOV9DUkxfZnA7Ci0rCQlpMmRfWDUwOV9FWFRFTlNJT047Ci0rCQlpMmRfWDUwOV9OQU1FOwotKwkJaTJkX1g1MDlfTkFNRV9FTlRSWTsKLSsJCWkyZF9YNTA5X1BLRVk7Ci0rCQlpMmRfWDUwOV9QVUJLRVk7Ci0rCQlpMmRfWDUwOV9SRVE7Ci0rCQlpMmRfWDUwOV9SRVFfSU5GTzsKLSsJCWkyZF9YNTA5X1JFUV9iaW87Ci0rCQlpMmRfWDUwOV9SRVFfZnA7Ci0rCQlpMmRfWDUwOV9SRVZPS0VEOwotKwkJaTJkX1g1MDlfU0lHOwotKwkJaTJkX1g1MDlfVkFMOwotKwkJaTJkX1g1MDlfYmlvOwotKwkJaTJkX1g1MDlfZnA7Ci0rCQlpZGVhX2NiY19lbmNyeXB0OwotKwkJaWRlYV9jZmI2NF9lbmNyeXB0OwotKwkJaWRlYV9lY2JfZW5jcnlwdDsKLSsJCWlkZWFfZW5jcnlwdDsKLSsJCWlkZWFfb2ZiNjRfZW5jcnlwdDsKLSsJCWlkZWFfb3B0aW9uczsKLSsJCWlkZWFfc2V0X2RlY3J5cHRfa2V5OwotKwkJaWRlYV9zZXRfZW5jcnlwdF9rZXk7Ci0rCQlsaF9kZWxldGU7Ci0rCQlsaF9kb2FsbDsKLSsJCWxoX2RvYWxsX2FyZzsKLSsJCWxoX2ZyZWU7Ci0rCQlsaF9pbnNlcnQ7Ci0rCQlsaF9uZXc7Ci0rCQlsaF9ub2RlX3N0YXRzOwotKwkJbGhfbm9kZV9zdGF0c19iaW87Ci0rCQlsaF9ub2RlX3VzYWdlX3N0YXRzOwotKwkJbGhfbm9kZV91c2FnZV9zdGF0c19iaW87Ci0rCQlsaF9yZXRyaWV2ZTsKLSsJCWxoX3N0YXRzOwotKwkJbGhfc3RhdHNfYmlvOwotKwkJbGhfc3RyaGFzaDsKLSsJCXNrX2RlbGV0ZTsKLSsJCXNrX2RlbGV0ZV9wdHI7Ci0rCQlza19kdXA7Ci0rCQlza19maW5kOwotKwkJc2tfZnJlZTsKLSsJCXNrX2luc2VydDsKLSsJCXNrX25ldzsKLSsJCXNrX3BvcDsKLSsJCXNrX3BvcF9mcmVlOwotKwkJc2tfcHVzaDsKLSsJCXNrX3NldF9jbXBfZnVuYzsKLSsJCXNrX3NoaWZ0OwotKwkJc2tfdW5zaGlmdDsKLSsJCXNrX3plcm87Ci0rCQlCSU9fZl9uYmlvX3Rlc3Q7Ci0rCQlBU04xX1RZUEVfZ2V0OwotKwkJQVNOMV9UWVBFX3NldDsKLSsJCVBLQ1M3X2NvbnRlbnRfZnJlZTsKLSsJCUVSUl9sb2FkX1BLQ1M3X3N0cmluZ3M7Ci0rCQlYNTA5X2ZpbmRfYnlfaXNzdWVyX2FuZF9zZXJpYWw7Ci0rCQlYNTA5X2ZpbmRfYnlfc3ViamVjdDsKLSsJCVBLQ1M3X2N0cmw7Ci0rCQlQS0NTN19zZXRfdHlwZTsKLSsJCVBLQ1M3X3NldF9jb250ZW50OwotKwkJUEtDUzdfU0lHTkVSX0lORk9fc2V0OwotKwkJUEtDUzdfYWRkX3NpZ25lcjsKLSsJCVBLQ1M3X2FkZF9jZXJ0aWZpY2F0ZTsKLSsJCVBLQ1M3X2FkZF9jcmw7Ci0rCQlQS0NTN19jb250ZW50X25ldzsKLSsJCVBLQ1M3X2RhdGFTaWduOwotKwkJUEtDUzdfZGF0YVZlcmlmeTsKLSsJCVBLQ1M3X2RhdGFJbml0OwotKwkJUEtDUzdfYWRkX3NpZ25hdHVyZTsKLSsJCVBLQ1M3X2NlcnRfZnJvbV9zaWduZXJfaW5mbzsKLSsJCVBLQ1M3X2dldF9zaWduZXJfaW5mbzsKLSsJCUVWUF9kZWxldGVfYWxpYXM7Ci0rCQlFVlBfbWRjMjsKLSsJCVBFTV9yZWFkX2Jpb19SU0FQdWJsaWNLZXk7Ci0rCQlQRU1fd3JpdGVfYmlvX1JTQVB1YmxpY0tleTsKLSsJCWQyaV9SU0FQdWJsaWNLZXlfYmlvOwotKwkJaTJkX1JTQVB1YmxpY0tleV9iaW87Ci0rCQlQRU1fcmVhZF9SU0FQdWJsaWNLZXk7Ci0rCQlQRU1fd3JpdGVfUlNBUHVibGljS2V5OwotKwkJZDJpX1JTQVB1YmxpY0tleV9mcDsKLSsJCWkyZF9SU0FQdWJsaWNLZXlfZnA7Ci0rCQlCSU9fY29weV9uZXh0X3JldHJ5OwotKwkJUlNBX2ZsYWdzOwotKwkJWDUwOV9TVE9SRV9hZGRfY3JsOwotKwkJWDUwOV9sb2FkX2NybF9maWxlOwotKwkJRVZQX3JjMl80MF9jYmM7Ci0rCQlFVlBfcmM0XzQwOwotKwkJRVZQX0NJUEhFUl9DVFhfaW5pdDsKLSsJCUhNQUM7Ci0rCQlITUFDX0luaXQ7Ci0rCQlITUFDX1VwZGF0ZTsKLSsJCUhNQUNfRmluYWw7Ci0rCQlFUlJfZ2V0X25leHRfZXJyb3JfbGlicmFyeTsKLSsJCUVWUF9QS0VZX2NtcF9wYXJhbWV0ZXJzOwotKwkJSE1BQ19jbGVhbnVwOwotKwkJQklPX3B0cl9jdHJsOwotKwkJQklPX25ld19maWxlX2ludGVybmFsOwotKwkJQklPX25ld19mcF9pbnRlcm5hbDsKLSsJCUJJT19zX2ZpbGVfaW50ZXJuYWw7Ci0rCQlCTl9CTElORElOR19jb252ZXJ0OwotKwkJQk5fQkxJTkRJTkdfaW52ZXJ0OwotKwkJQk5fQkxJTkRJTkdfdXBkYXRlOwotKwkJUlNBX2JsaW5kaW5nX29uOwotKwkJUlNBX2JsaW5kaW5nX29mZjsKLSsJCWkydF9BU04xX09CSkVDVDsKLSsJCUJOX0JMSU5ESU5HX25ldzsKLSsJCUJOX0JMSU5ESU5HX2ZyZWU7Ci0rCQlFVlBfY2FzdDVfY2JjOwotKwkJRVZQX2Nhc3Q1X2NmYjY0OwotKwkJRVZQX2Nhc3Q1X2VjYjsKLSsJCUVWUF9jYXN0NV9vZmI7Ci0rCQlCRl9kZWNyeXB0OwotKwkJQ0FTVF9zZXRfa2V5OwotKwkJQ0FTVF9lbmNyeXB0OwotKwkJQ0FTVF9kZWNyeXB0OwotKwkJQ0FTVF9lY2JfZW5jcnlwdDsKLSsJCUNBU1RfY2JjX2VuY3J5cHQ7Ci0rCQlDQVNUX2NmYjY0X2VuY3J5cHQ7Ci0rCQlDQVNUX29mYjY0X2VuY3J5cHQ7Ci0rCQlSQzJfZGVjcnlwdDsKLSsJCU9CSl9jcmVhdGVfb2JqZWN0czsKLSsJCUJOX2V4cDsKLSsJCUJOX211bF93b3JkOwotKwkJQk5fc3ViX3dvcmQ7Ci0rCQlCTl9kZWMyYm47Ci0rCQlCTl9ibjJkZWM7Ci0rCQlCSU9fZ2hibl9jdHJsOwotKwkJQ1JZUFRPX2ZyZWVfZXhfZGF0YTsKLSsJCUNSWVBUT19nZXRfZXhfZGF0YTsKLSsJCUNSWVBUT19zZXRfZXhfZGF0YTsKLSsJCUVSUl9sb2FkX0NSWVBUT19zdHJpbmdzOwotKwkJRVJSX2xvYWRfQ1JZUFRPbGliX3N0cmluZ3M7Ci0rCQlFVlBfUEtFWV9iaXRzOwotKwkJTUQ1X1RyYW5zZm9ybTsKLSsJCVNIQTFfVHJhbnNmb3JtOwotKwkJU0hBX1RyYW5zZm9ybTsKLSsJCVg1MDlfU1RPUkVfQ1RYX2dldF9jaGFpbjsKLSsJCVg1MDlfU1RPUkVfQ1RYX2dldF9jdXJyZW50X2NlcnQ7Ci0rCQlYNTA5X1NUT1JFX0NUWF9nZXRfZXJyb3I7Ci0rCQlYNTA5X1NUT1JFX0NUWF9nZXRfZXJyb3JfZGVwdGg7Ci0rCQlYNTA5X1NUT1JFX0NUWF9nZXRfZXhfZGF0YTsKLSsJCVg1MDlfU1RPUkVfQ1RYX3NldF9jZXJ0OwotKwkJWDUwOV9TVE9SRV9DVFhfc2V0X2NoYWluOwotKwkJWDUwOV9TVE9SRV9DVFhfc2V0X2Vycm9yOwotKwkJWDUwOV9TVE9SRV9DVFhfc2V0X2V4X2RhdGE7Ci0rCQlDUllQVE9fZHVwX2V4X2RhdGE7Ci0rCQlDUllQVE9fZ2V0X25ld19sb2NraWQ7Ci0rCQlDUllQVE9fbmV3X2V4X2RhdGE7Ci0rCQlSU0Ffc2V0X2V4X2RhdGE7Ci0rCQlSU0FfZ2V0X2V4X2RhdGE7Ci0rCQlSU0FfZ2V0X2V4X25ld19pbmRleDsKLSsJCVJTQV9wYWRkaW5nX2FkZF9QS0NTMV90eXBlXzE7Ci0rCQlSU0FfcGFkZGluZ19hZGRfUEtDUzFfdHlwZV8yOwotKwkJUlNBX3BhZGRpbmdfYWRkX1NTTHYyMzsKLSsJCVJTQV9wYWRkaW5nX2FkZF9ub25lOwotKwkJUlNBX3BhZGRpbmdfY2hlY2tfUEtDUzFfdHlwZV8xOwotKwkJUlNBX3BhZGRpbmdfY2hlY2tfUEtDUzFfdHlwZV8yOwotKwkJUlNBX3BhZGRpbmdfY2hlY2tfU1NMdjIzOwotKwkJUlNBX3BhZGRpbmdfY2hlY2tfbm9uZTsKLSsJCWJuX2FkZF93b3JkczsKLSsJCWQyaV9OZXRzY2FwZV9SU0FfMjsKLSsJCUNSWVBUT19nZXRfZXhfbmV3X2luZGV4OwotKwkJUklQRU1EMTYwX0luaXQ7Ci0rCQlSSVBFTUQxNjBfVXBkYXRlOwotKwkJUklQRU1EMTYwX0ZpbmFsOwotKwkJUklQRU1EMTYwOwotKwkJUklQRU1EMTYwX1RyYW5zZm9ybTsKLSsJCVJDNV8zMl9zZXRfa2V5OwotKwkJUkM1XzMyX2VjYl9lbmNyeXB0OwotKwkJUkM1XzMyX2VuY3J5cHQ7Ci0rCQlSQzVfMzJfZGVjcnlwdDsKLSsJCVJDNV8zMl9jYmNfZW5jcnlwdDsKLSsJCVJDNV8zMl9jZmI2NF9lbmNyeXB0OwotKwkJUkM1XzMyX29mYjY0X2VuY3J5cHQ7Ci0rCQlCTl9ibjJtcGk7Ci0rCQlCTl9tcGkyYm47Ci0rCQlBU04xX0JJVF9TVFJJTkdfZ2V0X2JpdDsKLSsJCUFTTjFfQklUX1NUUklOR19zZXRfYml0OwotKwkJQklPX2dldF9leF9kYXRhOwotKwkJQklPX2dldF9leF9uZXdfaW5kZXg7Ci0rCQlCSU9fc2V0X2V4X2RhdGE7Ci0rCQlYNTA5djNfZ2V0X2tleV91c2FnZTsKLSsJCVg1MDl2M19zZXRfa2V5X3VzYWdlOwotKwkJYTJpX1g1MDl2M19rZXlfdXNhZ2U7Ci0rCQlpMmFfWDUwOXYzX2tleV91c2FnZTsKLSsJCUVWUF9QS0VZX2RlY3J5cHQ7Ci0rCQlFVlBfUEtFWV9lbmNyeXB0OwotKwkJUEtDUzdfUkVDSVBfSU5GT19zZXQ7Ci0rCQlQS0NTN19hZGRfcmVjaXBpZW50OwotKwkJUEtDUzdfYWRkX3JlY2lwaWVudF9pbmZvOwotKwkJUEtDUzdfc2V0X2NpcGhlcjsKLSsJCUFTTjFfVFlQRV9nZXRfaW50X29jdGV0c3RyaW5nOwotKwkJQVNOMV9UWVBFX2dldF9vY3RldHN0cmluZzsKLSsJCUFTTjFfVFlQRV9zZXRfaW50X29jdGV0c3RyaW5nOwotKwkJQVNOMV9UWVBFX3NldF9vY3RldHN0cmluZzsKLSsJCUFTTjFfVVRDVElNRV9zZXRfc3RyaW5nOwotKwkJRVJSX2FkZF9lcnJvcl9kYXRhOwotKwkJRVJSX3NldF9lcnJvcl9kYXRhOwotKwkJRVZQX0NJUEhFUl9hc24xX3RvX3BhcmFtOwotKwkJRVZQX0NJUEhFUl9wYXJhbV90b19hc24xOwotKwkJRVZQX0NJUEhFUl9nZXRfYXNuMV9pdjsKLSsJCUVWUF9DSVBIRVJfc2V0X2FzbjFfaXY7Ci0rCQlFVlBfcmM1XzMyXzEyXzE2X2NiYzsKLSsJCUVWUF9yYzVfMzJfMTJfMTZfY2ZiNjQ7Ci0rCQlFVlBfcmM1XzMyXzEyXzE2X2VjYjsKLSsJCUVWUF9yYzVfMzJfMTJfMTZfb2ZiOwotKwkJYXNuMV9hZGRfZXJyb3I7Ci0rCQlkMmlfQVNOMV9CTVBTVFJJTkc7Ci0rCQlpMmRfQVNOMV9CTVBTVFJJTkc7Ci0rCQlCSU9fZl9iZXI7Ci0rCQlCTl9pbml0OwotKwkJQ09NUF9DVFhfbmV3OwotKwkJQ09NUF9DVFhfZnJlZTsKLSsJCUNPTVBfQ1RYX2NvbXByZXNzX2Jsb2NrOwotKwkJQ09NUF9DVFhfZXhwYW5kX2Jsb2NrOwotKwkJWDUwOV9TVE9SRV9DVFhfZ2V0X2V4X25ld19pbmRleDsKLSsJCU9CSl9OQU1FX2FkZDsKLSsJCUJJT19zb2NrZXRfbmJpbzsKLSsJCUVWUF9yYzJfNjRfY2JjOwotKwkJT0JKX05BTUVfY2xlYW51cDsKLSsJCU9CSl9OQU1FX2dldDsKLSsJCU9CSl9OQU1FX2luaXQ7Ci0rCQlPQkpfTkFNRV9uZXdfaW5kZXg7Ci0rCQlPQkpfTkFNRV9yZW1vdmU7Ci0rCQlCTl9NT05UX0NUWF9jb3B5OwotKwkJQklPX25ld19zb2NrczRhX2Nvbm5lY3Q7Ci0rCQlCSU9fc19zb2NrczRhX2Nvbm5lY3Q7Ci0rCQlQUk9YWV9zZXRfY29ubmVjdF9tb2RlOwotKwkJUkFORF9TU0xlYXk7Ci0rCQlSQU5EX3NldF9yYW5kX21ldGhvZDsKLSsJCVJTQV9tZW1vcnlfbG9jazsKLSsJCWJuX3N1Yl93b3JkczsKLSsJCWJuX211bF9ub3JtYWw7Ci0rCQlibl9tdWxfY29tYmE4OwotKwkJYm5fbXVsX2NvbWJhNDsKLSsJCWJuX3Nxcl9ub3JtYWw7Ci0rCQlibl9zcXJfY29tYmE4OwotKwkJYm5fc3FyX2NvbWJhNDsKLSsJCWJuX2NtcF93b3JkczsKLSsJCWJuX211bF9yZWN1cnNpdmU7Ci0rCQlibl9tdWxfcGFydF9yZWN1cnNpdmU7Ci0rCQlibl9zcXJfcmVjdXJzaXZlOwotKwkJYm5fbXVsX2xvd19ub3JtYWw7Ci0rCQlCTl9SRUNQX0NUWF9pbml0OwotKwkJQk5fUkVDUF9DVFhfbmV3OwotKwkJQk5fUkVDUF9DVFhfZnJlZTsKLSsJCUJOX1JFQ1BfQ1RYX3NldDsKLSsJCUJOX21vZF9tdWxfcmVjaXByb2NhbDsKLSsJCUJOX21vZF9leHBfcmVjcDsKLSsJCUJOX2Rpdl9yZWNwOwotKwkJQk5fQ1RYX2luaXQ7Ci0rCQlCTl9NT05UX0NUWF9pbml0OwotKwkJUkFORF9nZXRfcmFuZF9tZXRob2Q7Ci0rCQlQS0NTN19hZGRfYXR0cmlidXRlOwotKwkJUEtDUzdfYWRkX3NpZ25lZF9hdHRyaWJ1dGU7Ci0rCQlQS0NTN19kaWdlc3RfZnJvbV9hdHRyaWJ1dGVzOwotKwkJUEtDUzdfZ2V0X2F0dHJpYnV0ZTsKLSsJCVBLQ1M3X2dldF9pc3N1ZXJfYW5kX3NlcmlhbDsKLSsJCVBLQ1M3X2dldF9zaWduZWRfYXR0cmlidXRlOwotKwkJQ09NUF9jb21wcmVzc19ibG9jazsKLSsJCUNPTVBfZXhwYW5kX2Jsb2NrOwotKwkJQ09NUF9ybGU7Ci0rCQlDT01QX3psaWI7Ci0rCQltc190aW1lX2RpZmY7Ci0rCQltc190aW1lX25ldzsKLSsJCW1zX3RpbWVfZnJlZTsKLSsJCW1zX3RpbWVfY21wOwotKwkJbXNfdGltZV9nZXQ7Ci0rCQlQS0NTN19zZXRfYXR0cmlidXRlczsKLSsJCVBLQ1M3X3NldF9zaWduZWRfYXR0cmlidXRlczsKLSsJCVg1MDlfQVRUUklCVVRFX2NyZWF0ZTsKLSsJCVg1MDlfQVRUUklCVVRFX2R1cDsKLSsJCUFTTjFfR0VORVJBTElaRURUSU1FX2NoZWNrOwotKwkJQVNOMV9HRU5FUkFMSVpFRFRJTUVfcHJpbnQ7Ci0rCQlBU04xX0dFTkVSQUxJWkVEVElNRV9zZXQ7Ci0rCQlBU04xX0dFTkVSQUxJWkVEVElNRV9zZXRfc3RyaW5nOwotKwkJQVNOMV9USU1FX3ByaW50OwotKwkJQkFTSUNfQ09OU1RSQUlOVFNfZnJlZTsKLSsJCUJBU0lDX0NPTlNUUkFJTlRTX25ldzsKLSsJCUVSUl9sb2FkX1g1MDlWM19zdHJpbmdzOwotKwkJTkVUU0NBUEVfQ0VSVF9TRVFVRU5DRV9mcmVlOwotKwkJTkVUU0NBUEVfQ0VSVF9TRVFVRU5DRV9uZXc7Ci0rCQlPQkpfdHh0Mm9iajsKLSsJCVBFTV9yZWFkX05FVFNDQVBFX0NFUlRfU0VRVUVOQ0U7Ci0rCQlQRU1fcmVhZF9OU19DRVJUX1NFUTsKLSsJCVBFTV9yZWFkX2Jpb19ORVRTQ0FQRV9DRVJUX1NFUVVFTkNFOwotKwkJUEVNX3JlYWRfYmlvX05TX0NFUlRfU0VROwotKwkJUEVNX3dyaXRlX05FVFNDQVBFX0NFUlRfU0VRVUVOQ0U7Ci0rCQlQRU1fd3JpdGVfTlNfQ0VSVF9TRVE7Ci0rCQlQRU1fd3JpdGVfYmlvX05FVFNDQVBFX0NFUlRfU0VRVUVOQ0U7Ci0rCQlQRU1fd3JpdGVfYmlvX05TX0NFUlRfU0VROwotKwkJWDUwOVYzX0VYVF9hZGQ7Ci0rCQlYNTA5VjNfRVhUX2FkZF9hbGlhczsKLSsJCVg1MDlWM19FWFRfYWRkX2NvbmY7Ci0rCQlYNTA5VjNfRVhUX2NsZWFudXA7Ci0rCQlYNTA5VjNfRVhUX2NvbmY7Ci0rCQlYNTA5VjNfRVhUX2NvbmZfbmlkOwotKwkJWDUwOVYzX0VYVF9nZXQ7Ci0rCQlYNTA5VjNfRVhUX2dldF9uaWQ7Ci0rCQlYNTA5VjNfRVhUX3ByaW50OwotKwkJWDUwOVYzX0VYVF9wcmludF9mcDsKLSsJCVg1MDlWM19hZGRfc3RhbmRhcmRfZXh0ZW5zaW9uczsKLSsJCVg1MDlWM19hZGRfdmFsdWU7Ci0rCQlYNTA5VjNfYWRkX3ZhbHVlX2Jvb2w7Ci0rCQlYNTA5VjNfYWRkX3ZhbHVlX2ludDsKLSsJCVg1MDlWM19jb25mX2ZyZWU7Ci0rCQlYNTA5VjNfZ2V0X3ZhbHVlX2Jvb2w7Ci0rCQlYNTA5VjNfZ2V0X3ZhbHVlX2ludDsKLSsJCVg1MDlWM19wYXJzZV9saXN0OwotKwkJZDJpX0FTTjFfR0VORVJBTElaRURUSU1FOwotKwkJZDJpX0FTTjFfVElNRTsKLSsJCWQyaV9CQVNJQ19DT05TVFJBSU5UUzsKLSsJCWQyaV9ORVRTQ0FQRV9DRVJUX1NFUVVFTkNFOwotKwkJZDJpX2V4dF9rdTsKLSsJCWV4dF9rdV9mcmVlOwotKwkJZXh0X2t1X25ldzsKLSsJCWkyZF9BU04xX0dFTkVSQUxJWkVEVElNRTsKLSsJCWkyZF9BU04xX1RJTUU7Ci0rCQlpMmRfQkFTSUNfQ09OU1RSQUlOVFM7Ci0rCQlpMmRfTkVUU0NBUEVfQ0VSVF9TRVFVRU5DRTsKLSsJCWkyZF9leHRfa3U7Ci0rCQlFVlBfTURfQ1RYX2NvcHk7Ci0rCQlpMmRfQVNOMV9FTlVNRVJBVEVEOwotKwkJZDJpX0FTTjFfRU5VTUVSQVRFRDsKLSsJCUFTTjFfRU5VTUVSQVRFRF9zZXQ7Ci0rCQlBU04xX0VOVU1FUkFURURfZ2V0OwotKwkJQk5fdG9fQVNOMV9FTlVNRVJBVEVEOwotKwkJQVNOMV9FTlVNRVJBVEVEX3RvX0JOOwotKwkJaTJhX0FTTjFfRU5VTUVSQVRFRDsKLSsJCWEyaV9BU04xX0VOVU1FUkFURUQ7Ci0rCQlpMmRfR0VORVJBTF9OQU1FOwotKwkJZDJpX0dFTkVSQUxfTkFNRTsKLSsJCUdFTkVSQUxfTkFNRV9uZXc7Ci0rCQlHRU5FUkFMX05BTUVfZnJlZTsKLSsJCUdFTkVSQUxfTkFNRVNfbmV3OwotKwkJR0VORVJBTF9OQU1FU19mcmVlOwotKwkJZDJpX0dFTkVSQUxfTkFNRVM7Ci0rCQlpMmRfR0VORVJBTF9OQU1FUzsKLSsJCWkydl9HRU5FUkFMX05BTUVTOwotKwkJaTJzX0FTTjFfT0NURVRfU1RSSU5HOwotKwkJczJpX0FTTjFfT0NURVRfU1RSSU5HOwotKwkJWDUwOVYzX0VYVF9jaGVja19jb25mOwotKwkJaGV4X3RvX3N0cmluZzsKLSsJCXN0cmluZ190b19oZXg7Ci0rCQlERVNfZWRlM19jYmNtX2VuY3J5cHQ7Ci0rCQlSU0FfcGFkZGluZ19hZGRfUEtDUzFfT0FFUDsKLSsJCVJTQV9wYWRkaW5nX2NoZWNrX1BLQ1MxX09BRVA7Ci0rCQlYNTA5X0NSTF9wcmludF9mcDsKLSsJCVg1MDlfQ1JMX3ByaW50OwotKwkJaTJ2X0dFTkVSQUxfTkFNRTsKLSsJCXYyaV9HRU5FUkFMX05BTUU7Ci0rCQlpMmRfUEtFWV9VU0FHRV9QRVJJT0Q7Ci0rCQlkMmlfUEtFWV9VU0FHRV9QRVJJT0Q7Ci0rCQlQS0VZX1VTQUdFX1BFUklPRF9uZXc7Ci0rCQlQS0VZX1VTQUdFX1BFUklPRF9mcmVlOwotKwkJdjJpX0dFTkVSQUxfTkFNRVM7Ci0rCQlpMnNfQVNOMV9JTlRFR0VSOwotKwkJWDUwOVYzX0VYVF9kMmk7Ci0rCQluYW1lX2NtcDsKLSsJCXN0cl9kdXA7Ci0rCQlpMnNfQVNOMV9FTlVNRVJBVEVEOwotKwkJaTJzX0FTTjFfRU5VTUVSQVRFRF9UQUJMRTsKLSsJCUJJT19zX2xvZzsKLSsJCUJJT19mX3JlbGlhYmxlOwotKwkJUEtDUzdfZGF0YUZpbmFsOwotKwkJUEtDUzdfZGF0YURlY29kZTsKLSsJCVg1MDlWM19FWFRfQ1JMX2FkZF9jb25mOwotKwkJQk5fc2V0X3BhcmFtczsKLSsJCUJOX2dldF9wYXJhbXM7Ci0rCQlCSU9fZ2V0X2V4X251bTsKLSsJCUJJT19zZXRfZXhfZnJlZV9mdW5jOwotKwkJRVZQX3JpcGVtZDE2MDsKLSsJCUFTTjFfVElNRV9zZXQ7Ci0rCQlpMmRfQVVUSE9SSVRZX0tFWUlEOwotKwkJZDJpX0FVVEhPUklUWV9LRVlJRDsKLSsJCUFVVEhPUklUWV9LRVlJRF9uZXc7Ci0rCQlBVVRIT1JJVFlfS0VZSURfZnJlZTsKLSsJCUFTTjFfc2VxX3VucGFjazsKLSsJCUFTTjFfc2VxX3BhY2s7Ci0rCQlBU04xX3VucGFja19zdHJpbmc7Ci0rCQlBU04xX3BhY2tfc3RyaW5nOwotKwkJUEtDUzEyX3BhY2tfc2FmZWJhZzsKLSsJCVBLQ1MxMl9NQUtFX0tFWUJBRzsKLSsJCVBLQ1M4X2VuY3J5cHQ7Ci0rCQlQS0NTMTJfTUFLRV9TSEtFWUJBRzsKLSsJCVBLQ1MxMl9wYWNrX3A3ZGF0YTsKLSsJCVBLQ1MxMl9wYWNrX3A3ZW5jZGF0YTsKLSsJCVBLQ1MxMl9hZGRfbG9jYWxrZXlpZDsKLSsJCVBLQ1MxMl9hZGRfZnJpZW5kbHluYW1lX2FzYzsKLSsJCVBLQ1MxMl9hZGRfZnJpZW5kbHluYW1lX3VuaTsKLSsJCVBLQ1MxMl9nZXRfZnJpZW5kbHluYW1lOwotKwkJUEtDUzEyX3BiZV9jcnlwdDsKLSsJCVBLQ1MxMl9kZWNyeXB0X2QyaTsKLSsJCVBLQ1MxMl9pMmRfZW5jcnlwdDsKLSsJCVBLQ1MxMl9pbml0OwotKwkJUEtDUzEyX2tleV9nZW5fYXNjOwotKwkJUEtDUzEyX2tleV9nZW5fdW5pOwotKwkJUEtDUzEyX2dlbl9tYWM7Ci0rCQlQS0NTMTJfdmVyaWZ5X21hYzsKLSsJCVBLQ1MxMl9zZXRfbWFjOwotKwkJUEtDUzEyX3NldHVwX21hYzsKLSsJCU9QRU5TU0xfYXNjMnVuaTsKLSsJCU9QRU5TU0xfdW5pMmFzYzsKLSsJCWkyZF9QS0NTMTJfQkFHUzsKLSsJCVBLQ1MxMl9CQUdTX25ldzsKLSsJCWQyaV9QS0NTMTJfQkFHUzsKLSsJCVBLQ1MxMl9CQUdTX2ZyZWU7Ci0rCQlpMmRfUEtDUzEyOwotKwkJZDJpX1BLQ1MxMjsKLSsJCVBLQ1MxMl9uZXc7Ci0rCQlQS0NTMTJfZnJlZTsKLSsJCWkyZF9QS0NTMTJfTUFDX0RBVEE7Ci0rCQlQS0NTMTJfTUFDX0RBVEFfbmV3OwotKwkJZDJpX1BLQ1MxMl9NQUNfREFUQTsKLSsJCVBLQ1MxMl9NQUNfREFUQV9mcmVlOwotKwkJaTJkX1BLQ1MxMl9TQUZFQkFHOwotKwkJUEtDUzEyX1NBRkVCQUdfbmV3OwotKwkJZDJpX1BLQ1MxMl9TQUZFQkFHOwotKwkJUEtDUzEyX1NBRkVCQUdfZnJlZTsKLSsJCUVSUl9sb2FkX1BLQ1MxMl9zdHJpbmdzOwotKwkJUEtDUzEyX1BCRV9hZGQ7Ci0rCQlQS0NTOF9hZGRfa2V5dXNhZ2U7Ci0rCQlQS0NTMTJfZ2V0X2F0dHJfZ2VuOwotKwkJUEtDUzEyX3BhcnNlOwotKwkJUEtDUzEyX2NyZWF0ZTsKLSsJCWkyZF9QS0NTMTJfYmlvOwotKwkJaTJkX1BLQ1MxMl9mcDsKLSsJCWQyaV9QS0NTMTJfYmlvOwotKwkJZDJpX1BLQ1MxMl9mcDsKLSsJCWkyZF9QQkVQQVJBTTsKLSsJCVBCRVBBUkFNX25ldzsKLSsJCWQyaV9QQkVQQVJBTTsKLSsJCVBCRVBBUkFNX2ZyZWU7Ci0rCQlpMmRfUEtDUzhfUFJJVl9LRVlfSU5GTzsKLSsJCVBLQ1M4X1BSSVZfS0VZX0lORk9fbmV3OwotKwkJZDJpX1BLQ1M4X1BSSVZfS0VZX0lORk87Ci0rCQlQS0NTOF9QUklWX0tFWV9JTkZPX2ZyZWU7Ci0rCQlFVlBfUEtDUzgyUEtFWTsKLSsJCUVWUF9QS0VZMlBLQ1M4OwotKwkJUEtDUzhfc2V0X2Jyb2tlbjsKLSsJCUVWUF9QQkVfQUxHT1JfQ2lwaGVySW5pdDsKLSsJCUVWUF9QQkVfYWxnX2FkZDsKLSsJCVBLQ1M1X3BiZV9zZXQ7Ci0rCQlFVlBfUEJFX2NsZWFudXA7Ci0rCQlpMmRfU1hORVQ7Ci0rCQlkMmlfU1hORVQ7Ci0rCQlTWE5FVF9uZXc7Ci0rCQlTWE5FVF9mcmVlOwotKwkJaTJkX1NYTkVUSUQ7Ci0rCQlkMmlfU1hORVRJRDsKLSsJCVNYTkVUSURfbmV3OwotKwkJU1hORVRJRF9mcmVlOwotKwkJRFNBX1NJR19uZXc7Ci0rCQlEU0FfU0lHX2ZyZWU7Ci0rCQlEU0FfZG9fc2lnbjsKLSsJCURTQV9kb192ZXJpZnk7Ci0rCQlkMmlfRFNBX1NJRzsKLSsJCWkyZF9EU0FfU0lHOwotKwkJaTJkX0FTTjFfVklTSUJMRVNUUklORzsKLSsJCWQyaV9BU04xX1ZJU0lCTEVTVFJJTkc7Ci0rCQlpMmRfQVNOMV9VVEY4U1RSSU5HOwotKwkJZDJpX0FTTjFfVVRGOFNUUklORzsKLSsJCWkyZF9ESVJFQ1RPUllTVFJJTkc7Ci0rCQlkMmlfRElSRUNUT1JZU1RSSU5HOwotKwkJaTJkX0RJU1BMQVlURVhUOwotKwkJZDJpX0RJU1BMQVlURVhUOwotKwkJZDJpX0FTTjFfU0VUX09GX1g1MDk7Ci0rCQlpMmRfQVNOMV9TRVRfT0ZfWDUwOTsKLSsJCWkyZF9QQktERjJQQVJBTTsKLSsJCVBCS0RGMlBBUkFNX25ldzsKLSsJCWQyaV9QQktERjJQQVJBTTsKLSsJCVBCS0RGMlBBUkFNX2ZyZWU7Ci0rCQlpMmRfUEJFMlBBUkFNOwotKwkJUEJFMlBBUkFNX25ldzsKLSsJCWQyaV9QQkUyUEFSQU07Ci0rCQlQQkUyUEFSQU1fZnJlZTsKLSsJCWQyaV9BU04xX1NFVF9PRl9HRU5FUkFMX05BTUU7Ci0rCQlpMmRfQVNOMV9TRVRfT0ZfR0VORVJBTF9OQU1FOwotKwkJZDJpX0FTTjFfU0VUX09GX1NYTkVUSUQ7Ci0rCQlpMmRfQVNOMV9TRVRfT0ZfU1hORVRJRDsKLSsJCWQyaV9BU04xX1NFVF9PRl9QT0xJQ1lRVUFMSU5GTzsKLSsJCWkyZF9BU04xX1NFVF9PRl9QT0xJQ1lRVUFMSU5GTzsKLSsJCWQyaV9BU04xX1NFVF9PRl9QT0xJQ1lJTkZPOwotKwkJaTJkX0FTTjFfU0VUX09GX1BPTElDWUlORk87Ci0rCQlTWE5FVF9hZGRfaWRfYXNjOwotKwkJU1hORVRfYWRkX2lkX3Vsb25nOwotKwkJU1hORVRfYWRkX2lkX0lOVEVHRVI7Ci0rCQlTWE5FVF9nZXRfaWRfYXNjOwotKwkJU1hORVRfZ2V0X2lkX3Vsb25nOwotKwkJU1hORVRfZ2V0X2lkX0lOVEVHRVI7Ci0rCQlYNTA5VjNfc2V0X2NvbmZfbGhhc2g7Ci0rCQlpMmRfQ0VSVElGSUNBVEVQT0xJQ0lFUzsKLSsJCUNFUlRJRklDQVRFUE9MSUNJRVNfbmV3OwotKwkJQ0VSVElGSUNBVEVQT0xJQ0lFU19mcmVlOwotKwkJZDJpX0NFUlRJRklDQVRFUE9MSUNJRVM7Ci0rCQlpMmRfUE9MSUNZSU5GTzsKLSsJCVBPTElDWUlORk9fbmV3OwotKwkJZDJpX1BPTElDWUlORk87Ci0rCQlQT0xJQ1lJTkZPX2ZyZWU7Ci0rCQlpMmRfUE9MSUNZUVVBTElORk87Ci0rCQlQT0xJQ1lRVUFMSU5GT19uZXc7Ci0rCQlkMmlfUE9MSUNZUVVBTElORk87Ci0rCQlQT0xJQ1lRVUFMSU5GT19mcmVlOwotKwkJaTJkX1VTRVJOT1RJQ0U7Ci0rCQlVU0VSTk9USUNFX25ldzsKLSsJCWQyaV9VU0VSTk9USUNFOwotKwkJVVNFUk5PVElDRV9mcmVlOwotKwkJaTJkX05PVElDRVJFRjsKLSsJCU5PVElDRVJFRl9uZXc7Ci0rCQlkMmlfTk9USUNFUkVGOwotKwkJTk9USUNFUkVGX2ZyZWU7Ci0rCQlYNTA5VjNfZ2V0X3N0cmluZzsKLSsJCVg1MDlWM19nZXRfc2VjdGlvbjsKLSsJCVg1MDlWM19zdHJpbmdfZnJlZTsKLSsJCVg1MDlWM19zZWN0aW9uX2ZyZWU7Ci0rCQlYNTA5VjNfc2V0X2N0eDsKLSsJCXMyaV9BU04xX0lOVEVHRVI7Ci0rCQlDUllQVE9fc2V0X2xvY2tlZF9tZW1fZnVuY3Rpb25zOwotKwkJQ1JZUFRPX2dldF9sb2NrZWRfbWVtX2Z1bmN0aW9uczsKLSsJCUNSWVBUT19tYWxsb2NfbG9ja2VkOwotKwkJQ1JZUFRPX2ZyZWVfbG9ja2VkOwotKwkJQk5fbW9kX2V4cDJfbW9udDsKLSsJCUVSUl9nZXRfZXJyb3JfbGluZV9kYXRhOwotKwkJRVJSX3BlZWtfZXJyb3JfbGluZV9kYXRhOwotKwkJUEtDUzEyX1BCRV9rZXlpdmdlbjsKLSsJCVg1MDlfQUxHT1JfZHVwOwotKwkJZDJpX0FTTjFfU0VUX09GX0RJU1RfUE9JTlQ7Ci0rCQlpMmRfQVNOMV9TRVRfT0ZfRElTVF9QT0lOVDsKLSsJCWkyZF9DUkxfRElTVF9QT0lOVFM7Ci0rCQlDUkxfRElTVF9QT0lOVFNfbmV3OwotKwkJQ1JMX0RJU1RfUE9JTlRTX2ZyZWU7Ci0rCQlkMmlfQ1JMX0RJU1RfUE9JTlRTOwotKwkJaTJkX0RJU1RfUE9JTlQ7Ci0rCQlESVNUX1BPSU5UX25ldzsKLSsJCWQyaV9ESVNUX1BPSU5UOwotKwkJRElTVF9QT0lOVF9mcmVlOwotKwkJaTJkX0RJU1RfUE9JTlRfTkFNRTsKLSsJCURJU1RfUE9JTlRfTkFNRV9uZXc7Ci0rCQlESVNUX1BPSU5UX05BTUVfZnJlZTsKLSsJCWQyaV9ESVNUX1BPSU5UX05BTUU7Ci0rCQlYNTA5VjNfYWRkX3ZhbHVlX3VjaGFyOwotKwkJZDJpX0FTTjFfU0VUX09GX1g1MDlfQVRUUklCVVRFOwotKwkJaTJkX0FTTjFfU0VUX09GX0FTTjFfVFlQRTsKLSsJCWQyaV9BU04xX1NFVF9PRl9YNTA5X0VYVEVOU0lPTjsKLSsJCWQyaV9BU04xX1NFVF9PRl9YNTA5X05BTUVfRU5UUlk7Ci0rCQlkMmlfQVNOMV9TRVRfT0ZfQVNOMV9UWVBFOwotKwkJaTJkX0FTTjFfU0VUX09GX1g1MDlfQVRUUklCVVRFOwotKwkJaTJkX0FTTjFfU0VUX09GX1g1MDlfRVhURU5TSU9OOwotKwkJaTJkX0FTTjFfU0VUX09GX1g1MDlfTkFNRV9FTlRSWTsKLSsJCVg1MDlWM19FWFRfaTJkOwotKwkJWDUwOVYzX0VYVF92YWxfcHJuOwotKwkJWDUwOVYzX0VYVF9hZGRfbGlzdDsKLSsJCUVWUF9DSVBIRVJfdHlwZTsKLSsJCUVWUF9QQkVfQ2lwaGVySW5pdDsKLSsJCVg1MDlWM19hZGRfdmFsdWVfYm9vbF9uZjsKLSsJCWQyaV9BU04xX1VJTlRFR0VSOwotKwkJc2tfdmFsdWU7Ci0rCQlza19udW07Ci0rCQlza19zZXQ7Ci0rCQlpMmRfQVNOMV9TRVRfT0ZfWDUwOV9SRVZPS0VEOwotKwkJc2tfc29ydDsKLSsJCWQyaV9BU04xX1NFVF9PRl9YNTA5X1JFVk9LRUQ7Ci0rCQlpMmRfQVNOMV9TRVRfT0ZfWDUwOV9BTEdPUjsKLSsJCWkyZF9BU04xX1NFVF9PRl9YNTA5X0NSTDsKLSsJCWQyaV9BU04xX1NFVF9PRl9YNTA5X0FMR09SOwotKwkJZDJpX0FTTjFfU0VUX09GX1g1MDlfQ1JMOwotKwkJaTJkX0FTTjFfU0VUX09GX1BLQ1M3X1NJR05FUl9JTkZPOwotKwkJaTJkX0FTTjFfU0VUX09GX1BLQ1M3X1JFQ0lQX0lORk87Ci0rCQlkMmlfQVNOMV9TRVRfT0ZfUEtDUzdfU0lHTkVSX0lORk87Ci0rCQlkMmlfQVNOMV9TRVRfT0ZfUEtDUzdfUkVDSVBfSU5GTzsKLSsJCVBLQ1M1X1BCRV9hZGQ7Ci0rCQlQRU1fd3JpdGVfYmlvX1BLQ1M4OwotKwkJaTJkX1BLQ1M4X2ZwOwotKwkJUEVNX3JlYWRfYmlvX1BLQ1M4X1BSSVZfS0VZX0lORk87Ci0rCQlQRU1fcmVhZF9iaW9fUDhfUFJJVl9LRVlfSU5GTzsKLSsJCWQyaV9QS0NTOF9iaW87Ci0rCQlkMmlfUEtDUzhfUFJJVl9LRVlfSU5GT19mcDsKLSsJCVBFTV93cml0ZV9iaW9fUEtDUzhfUFJJVl9LRVlfSU5GTzsKLSsJCVBFTV93cml0ZV9iaW9fUDhfUFJJVl9LRVlfSU5GTzsKLSsJCVBFTV9yZWFkX1BLQ1M4OwotKwkJZDJpX1BLQ1M4X1BSSVZfS0VZX0lORk9fYmlvOwotKwkJZDJpX1BLQ1M4X2ZwOwotKwkJUEVNX3dyaXRlX1BLQ1M4OwotKwkJUEVNX3JlYWRfUEtDUzhfUFJJVl9LRVlfSU5GTzsKLSsJCVBFTV9yZWFkX1A4X1BSSVZfS0VZX0lORk87Ci0rCQlQRU1fcmVhZF9iaW9fUEtDUzg7Ci0rCQlQRU1fd3JpdGVfUEtDUzhfUFJJVl9LRVlfSU5GTzsKLSsJCVBFTV93cml0ZV9QOF9QUklWX0tFWV9JTkZPOwotKwkJUEtDUzVfUEJFX2tleWl2Z2VuOwotKwkJaTJkX1BLQ1M4X2JpbzsKLSsJCWkyZF9QS0NTOF9QUklWX0tFWV9JTkZPX2ZwOwotKwkJaTJkX1BLQ1M4X1BSSVZfS0VZX0lORk9fYmlvOwotKwkJQklPX3NfYmlvOwotKwkJUEtDUzVfcGJlMl9zZXQ7Ci0rCQlQS0NTNV9QQktERjJfSE1BQ19TSEExOwotKwkJUEtDUzVfdjJfUEJFX2tleWl2Z2VuOwotKwkJUEVNX3dyaXRlX2Jpb19QS0NTOFByaXZhdGVLZXk7Ci0rCQlQRU1fd3JpdGVfUEtDUzhQcml2YXRlS2V5OwotKwkJQklPX2N0cmxfZ2V0X3JlYWRfcmVxdWVzdDsKLSsJCUJJT19jdHJsX3BlbmRpbmc7Ci0rCQlCSU9fY3RybF93cGVuZGluZzsKLSsJCUJJT19uZXdfYmlvX3BhaXI7Ci0rCQlCSU9fY3RybF9nZXRfd3JpdGVfZ3VhcmFudGVlOwotKwkJQ1JZUFRPX251bV9sb2NrczsKLSsJCUNPTkZfbG9hZF9iaW87Ci0rCQlDT05GX2xvYWRfZnA7Ci0rCQlpMmRfQVNOMV9TRVRfT0ZfQVNOMV9PQkpFQ1Q7Ci0rCQlkMmlfQVNOMV9TRVRfT0ZfQVNOMV9PQkpFQ1Q7Ci0rCQlQS0NTN19zaWduYXR1cmVWZXJpZnk7Ci0rCQlSU0Ffc2V0X21ldGhvZDsKLSsJCVJTQV9nZXRfbWV0aG9kOwotKwkJUlNBX2dldF9kZWZhdWx0X21ldGhvZDsKLSsJCVJTQV9jaGVja19rZXk7Ci0rCQlPQkpfb2JqMnR4dDsKLSsJCURTQV9kdXBfREg7Ci0rCQlYNTA5X1JFUV9nZXRfZXh0ZW5zaW9uczsKLSsJCVg1MDlfUkVRX3NldF9leHRlbnNpb25fbmlkczsKLSsJCUJJT19ud3JpdGU7Ci0rCQlYNTA5X1JFUV9leHRlbnNpb25fbmlkOwotKwkJQklPX25yZWFkOwotKwkJWDUwOV9SRVFfZ2V0X2V4dGVuc2lvbl9uaWRzOwotKwkJQklPX253cml0ZTA7Ci0rCQlYNTA5X1JFUV9hZGRfZXh0ZW5zaW9uc19uaWQ7Ci0rCQlCSU9fbnJlYWQwOwotKwkJWDUwOV9SRVFfYWRkX2V4dGVuc2lvbnM7Ci0rCQlCSU9fbmV3X21lbV9idWY7Ci0rCQlESF9zZXRfZXhfZGF0YTsKLSsJCURIX3NldF9tZXRob2Q7Ci0rCQlEU0FfT3BlblNTTDsKLSsJCURIX2dldF9leF9kYXRhOwotKwkJREhfZ2V0X2V4X25ld19pbmRleDsKLSsJCURTQV9uZXdfbWV0aG9kOwotKwkJREhfbmV3X21ldGhvZDsKLSsJCURIX09wZW5TU0w7Ci0rCQlEU0FfZ2V0X2V4X25ld19pbmRleDsKLSsJCURIX2dldF9kZWZhdWx0X21ldGhvZDsKLSsJCURTQV9zZXRfZXhfZGF0YTsKLSsJCURIX3NldF9kZWZhdWx0X21ldGhvZDsKLSsJCURTQV9nZXRfZXhfZGF0YTsKLSsJCVg1MDlWM19FWFRfUkVRX2FkZF9jb25mOwotKwkJTkVUU0NBUEVfU1BLSV9wcmludDsKLSsJCU5FVFNDQVBFX1NQS0lfc2V0X3B1YmtleTsKLSsJCU5FVFNDQVBFX1NQS0lfYjY0X2VuY29kZTsKLSsJCU5FVFNDQVBFX1NQS0lfZ2V0X3B1YmtleTsKLSsJCU5FVFNDQVBFX1NQS0lfYjY0X2RlY29kZTsKLSsJCVVURjhfcHV0YzsKLSsJCVVURjhfZ2V0YzsKLSsJCVJTQV9udWxsX21ldGhvZDsKLSsJCUFTTjFfdGFnMnN0cjsKLSsJCUJJT19jdHJsX3Jlc2V0X3JlYWRfcmVxdWVzdDsKLSsJCURJU1BMQVlURVhUX25ldzsKLSsJCUFTTjFfR0VORVJBTElaRURUSU1FX2ZyZWU7Ci0rCQlYNTA5X1JFVk9LRURfZ2V0X2V4dF9kMmk7Ci0rCQlYNTA5X3NldF9leF9kYXRhOwotKwkJWDUwOV9yZWplY3Rfc2V0X2JpdF9hc2M7Ci0rCQlYNTA5X05BTUVfYWRkX2VudHJ5X2J5X3R4dDsKLSsJCVg1MDlfTkFNRV9hZGRfZW50cnlfYnlfTklEOwotKwkJWDUwOV9QVVJQT1NFX2dldDA7Ci0rCQlQRU1fcmVhZF9YNTA5X0FVWDsKLSsJCWQyaV9BVVRIT1JJVFlfSU5GT19BQ0NFU1M7Ci0rCQlQRU1fd3JpdGVfUFVCS0VZOwotKwkJQUNDRVNTX0RFU0NSSVBUSU9OX25ldzsKLSsJCVg1MDlfQ0VSVF9BVVhfZnJlZTsKLSsJCWQyaV9BQ0NFU1NfREVTQ1JJUFRJT047Ci0rCQlYNTA5X3RydXN0X2NsZWFyOwotKwkJWDUwOV9UUlVTVF9hZGQ7Ci0rCQlBU04xX1ZJU0lCTEVTVFJJTkdfbmV3OwotKwkJWDUwOV9hbGlhc19zZXQxOwotKwkJQVNOMV9QUklOVEFCTEVTVFJJTkdfZnJlZTsKLSsJCUVWUF9QS0VZX2dldDFfRFNBOwotKwkJQVNOMV9CTVBTVFJJTkdfbmV3OwotKwkJQVNOMV9tYnN0cmluZ19jb3B5OwotKwkJQVNOMV9VVEY4U1RSSU5HX25ldzsKLSsJCURTQV9nZXRfZGVmYXVsdF9tZXRob2Q7Ci0rCQlpMmRfQVNOMV9TRVRfT0ZfQUNDRVNTX0RFU0NSSVBUSU9OOwotKwkJQVNOMV9UNjFTVFJJTkdfZnJlZTsKLSsJCURTQV9zZXRfbWV0aG9kOwotKwkJWDUwOV9nZXRfZXhfZGF0YTsKLSsJCUFTTjFfU1RSSU5HX3R5cGU7Ci0rCQlYNTA5X1BVUlBPU0VfZ2V0X2J5X3NuYW1lOwotKwkJQVNOMV9USU1FX2ZyZWU7Ci0rCQlBU04xX09DVEVUX1NUUklOR19jbXA7Ci0rCQlBU04xX0JJVF9TVFJJTkdfbmV3OwotKwkJWDUwOV9nZXRfZXh0X2QyaTsKLSsJCVBFTV9yZWFkX2Jpb19YNTA5X0FVWDsKLSsJCUFTTjFfU1RSSU5HX3NldF9kZWZhdWx0X21hc2tfYXNjOwotKwkJQVNOMV9TVFJJTkdfc2V0X2RlZl9tYXNrX2FzYzsKLSsJCVBFTV93cml0ZV9iaW9fUlNBX1BVQktFWTsKLSsJCUFTTjFfSU5URUdFUl9jbXA7Ci0rCQlkMmlfUlNBX1BVQktFWV9mcDsKLSsJCVg1MDlfdHJ1c3Rfc2V0X2JpdF9hc2M7Ci0rCQlQRU1fd3JpdGVfYmlvX0RTQV9QVUJLRVk7Ci0rCQlYNTA5X1NUT1JFX0NUWF9mcmVlOwotKwkJRVZQX1BLRVlfc2V0MV9EU0E7Ci0rCQlpMmRfRFNBX1BVQktFWV9mcDsKLSsJCVg1MDlfbG9hZF9jZXJ0X2NybF9maWxlOwotKwkJQVNOMV9USU1FX25ldzsKLSsJCWkyZF9SU0FfUFVCS0VZOwotKwkJWDUwOV9TVE9SRV9DVFhfcHVycG9zZV9pbmhlcml0OwotKwkJUEVNX3JlYWRfUlNBX1BVQktFWTsKLSsJCWQyaV9YNTA5X0FVWDsKLSsJCWkyZF9EU0FfUFVCS0VZOwotKwkJWDUwOV9DRVJUX0FVWF9wcmludDsKLSsJCVBFTV9yZWFkX0RTQV9QVUJLRVk7Ci0rCQlpMmRfUlNBX1BVQktFWV9iaW87Ci0rCQlBU04xX0JJVF9TVFJJTkdfbnVtX2FzYzsKLSsJCWkyZF9QVUJLRVk7Ci0rCQlBU04xX1VUQ1RJTUVfZnJlZTsKLSsJCURTQV9zZXRfZGVmYXVsdF9tZXRob2Q7Ci0rCQlYNTA5X1BVUlBPU0VfZ2V0X2J5X2lkOwotKwkJQUNDRVNTX0RFU0NSSVBUSU9OX2ZyZWU7Ci0rCQlQRU1fcmVhZF9iaW9fUFVCS0VZOwotKwkJQVNOMV9TVFJJTkdfc2V0X2J5X05JRDsKLSsJCVg1MDlfUFVSUE9TRV9nZXRfaWQ7Ci0rCQlESVNQTEFZVEVYVF9mcmVlOwotKwkJT1RIRVJOQU1FX25ldzsKLSsJCVg1MDlfQ0VSVF9BVVhfbmV3OwotKwkJWDUwOV9UUlVTVF9jbGVhbnVwOwotKwkJWDUwOV9OQU1FX2FkZF9lbnRyeV9ieV9PQko7Ci0rCQlYNTA5X0NSTF9nZXRfZXh0X2QyaTsKLSsJCVg1MDlfUFVSUE9TRV9nZXQwX25hbWU7Ci0rCQlQRU1fcmVhZF9QVUJLRVk7Ci0rCQlpMmRfRFNBX1BVQktFWV9iaW87Ci0rCQlpMmRfT1RIRVJOQU1FOwotKwkJQVNOMV9PQ1RFVF9TVFJJTkdfZnJlZTsKLSsJCUFTTjFfQklUX1NUUklOR19zZXRfYXNjOwotKwkJWDUwOV9nZXRfZXhfbmV3X2luZGV4OwotKwkJQVNOMV9TVFJJTkdfVEFCTEVfY2xlYW51cDsKLSsJCVg1MDlfVFJVU1RfZ2V0X2J5X2lkOwotKwkJWDUwOV9QVVJQT1NFX2dldF90cnVzdDsKLSsJCUFTTjFfU1RSSU5HX2xlbmd0aDsKLSsJCWQyaV9BU04xX1NFVF9PRl9BQ0NFU1NfREVTQ1JJUFRJT047Ci0rCQlBU04xX1BSSU5UQUJMRVNUUklOR19uZXc7Ci0rCQlYNTA5VjNfZ2V0X2QyaTsKLSsJCUFTTjFfRU5VTUVSQVRFRF9mcmVlOwotKwkJaTJkX1g1MDlfQ0VSVF9BVVg7Ci0rCQlYNTA5X1NUT1JFX0NUWF9zZXRfdHJ1c3Q7Ci0rCQlBU04xX1NUUklOR19zZXRfZGVmYXVsdF9tYXNrOwotKwkJWDUwOV9TVE9SRV9DVFhfbmV3OwotKwkJRVZQX1BLRVlfZ2V0MV9SU0E7Ci0rCQlESVJFQ1RPUllTVFJJTkdfZnJlZTsKLSsJCVBFTV93cml0ZV9YNTA5X0FVWDsKLSsJCUFTTjFfT0NURVRfU1RSSU5HX3NldDsKLSsJCWQyaV9EU0FfUFVCS0VZX2ZwOwotKwkJZDJpX1JTQV9QVUJLRVk7Ci0rCQlYNTA5X1RSVVNUX2dldDBfbmFtZTsKLSsJCVg1MDlfVFJVU1RfZ2V0MDsKLSsJCUFVVEhPUklUWV9JTkZPX0FDQ0VTU19mcmVlOwotKwkJQVNOMV9JQTVTVFJJTkdfbmV3OwotKwkJZDJpX0RTQV9QVUJLRVk7Ci0rCQlYNTA5X2NoZWNrX3B1cnBvc2U7Ci0rCQlBU04xX0VOVU1FUkFURURfbmV3OwotKwkJZDJpX1JTQV9QVUJLRVlfYmlvOwotKwkJZDJpX1BVQktFWTsKLSsJCVg1MDlfVFJVU1RfZ2V0X3RydXN0OwotKwkJWDUwOV9UUlVTVF9nZXRfZmxhZ3M7Ci0rCQlBU04xX0JNUFNUUklOR19mcmVlOwotKwkJQVNOMV9UNjFTVFJJTkdfbmV3OwotKwkJQVNOMV9VVENUSU1FX25ldzsKLSsJCWkyZF9BVVRIT1JJVFlfSU5GT19BQ0NFU1M7Ci0rCQlFVlBfUEtFWV9zZXQxX1JTQTsKLSsJCVg1MDlfU1RPUkVfQ1RYX3NldF9wdXJwb3NlOwotKwkJQVNOMV9JQTVTVFJJTkdfZnJlZTsKLSsJCVBFTV93cml0ZV9iaW9fWDUwOV9BVVg7Ci0rCQlYNTA5X1BVUlBPU0VfZ2V0X2NvdW50OwotKwkJQ1JZUFRPX2FkZF9pbmZvOwotKwkJWDUwOV9OQU1FX0VOVFJZX2NyZWF0ZV9ieV90eHQ7Ci0rCQlBU04xX1NUUklOR19nZXRfZGVmYXVsdF9tYXNrOwotKwkJWDUwOV9hbGlhc19nZXQwOwotKwkJQVNOMV9TVFJJTkdfZGF0YTsKLSsJCWkyZF9BQ0NFU1NfREVTQ1JJUFRJT047Ci0rCQlYNTA5X3RydXN0X3NldF9iaXQ7Ci0rCQlBU04xX0JJVF9TVFJJTkdfZnJlZTsKLSsJCVBFTV9yZWFkX2Jpb19SU0FfUFVCS0VZOwotKwkJWDUwOV9hZGQxX3JlamVjdF9vYmplY3Q7Ci0rCQlYNTA5X2NoZWNrX3RydXN0OwotKwkJUEVNX3JlYWRfYmlvX0RTQV9QVUJLRVk7Ci0rCQlYNTA5X1BVUlBPU0VfYWRkOwotKwkJQVNOMV9TVFJJTkdfVEFCTEVfZ2V0OwotKwkJQVNOMV9VVEY4U1RSSU5HX2ZyZWU7Ci0rCQlkMmlfRFNBX1BVQktFWV9iaW87Ci0rCQlQRU1fd3JpdGVfUlNBX1BVQktFWTsKLSsJCWQyaV9PVEhFUk5BTUU7Ci0rCQlYNTA5X3JlamVjdF9zZXRfYml0OwotKwkJUEVNX3dyaXRlX0RTQV9QVUJLRVk7Ci0rCQlYNTA5X1BVUlBPU0VfZ2V0MF9zbmFtZTsKLSsJCUVWUF9QS0VZX3NldDFfREg7Ci0rCQlBU04xX09DVEVUX1NUUklOR19kdXA7Ci0rCQlBU04xX0JJVF9TVFJJTkdfc2V0OwotKwkJWDUwOV9UUlVTVF9nZXRfY291bnQ7Ci0rCQlBU04xX0lOVEVHRVJfZnJlZTsKLSsJCU9USEVSTkFNRV9mcmVlOwotKwkJaTJkX1JTQV9QVUJLRVlfZnA7Ci0rCQlBU04xX0lOVEVHRVJfZHVwOwotKwkJZDJpX1g1MDlfQ0VSVF9BVVg7Ci0rCQlQRU1fd3JpdGVfYmlvX1BVQktFWTsKLSsJCUFTTjFfVklTSUJMRVNUUklOR19mcmVlOwotKwkJWDUwOV9QVVJQT1NFX2NsZWFudXA7Ci0rCQlBU04xX21ic3RyaW5nX25jb3B5OwotKwkJQVNOMV9HRU5FUkFMSVpFRFRJTUVfbmV3OwotKwkJRVZQX1BLRVlfZ2V0MV9ESDsKLSsJCUFTTjFfT0NURVRfU1RSSU5HX25ldzsKLSsJCUFTTjFfSU5URUdFUl9uZXc7Ci0rCQlpMmRfWDUwOV9BVVg7Ci0rCQlBU04xX0JJVF9TVFJJTkdfbmFtZV9wcmludDsKLSsJCVg1MDlfY21wOwotKwkJQVNOMV9TVFJJTkdfbGVuZ3RoX3NldDsKLSsJCURJUkVDVE9SWVNUUklOR19uZXc7Ci0rCQlYNTA5X2FkZDFfdHJ1c3Rfb2JqZWN0OwotKwkJUEtDUzEyX25ld3Bhc3M7Ci0rCQlTTUlNRV93cml0ZV9QS0NTNzsKLSsJCVNNSU1FX3JlYWRfUEtDUzc7Ci0rCQlERVNfc2V0X2tleV9jaGVja2VkOwotKwkJUEtDUzdfdmVyaWZ5OwotKwkJUEtDUzdfZW5jcnlwdDsKLSsJCURFU19zZXRfa2V5X3VuY2hlY2tlZDsKLSsJCVNNSU1FX2NybGZfY29weTsKLSsJCWkyZF9BU04xX1BSSU5UQUJMRVNUUklORzsKLSsJCVBLQ1M3X2dldDBfc2lnbmVyczsKLSsJCVBLQ1M3X2RlY3J5cHQ7Ci0rCQlTTUlNRV90ZXh0OwotKwkJUEtDUzdfc2ltcGxlX3NtaW1lY2FwOwotKwkJUEtDUzdfZ2V0X3NtaW1lY2FwOwotKwkJUEtDUzdfc2lnbjsKLSsJCVBLQ1M3X2FkZF9hdHRyaWJfc21pbWVjYXA7Ci0rCQlDUllQVE9fZGJnX3NldF9vcHRpb25zOwotKwkJQ1JZUFRPX3JlbW92ZV9hbGxfaW5mbzsKLSsJCUNSWVBUT19nZXRfbWVtX2RlYnVnX2Z1bmN0aW9uczsKLSsJCUNSWVBUT19pc19tZW1fY2hlY2tfb247Ci0rCQlDUllQVE9fc2V0X21lbV9kZWJ1Z19mdW5jdGlvbnM7Ci0rCQlDUllQVE9fcG9wX2luZm87Ci0rCQlDUllQVE9fcHVzaF9pbmZvXzsKLSsJCUNSWVBUT19zZXRfbWVtX2RlYnVnX29wdGlvbnM7Ci0rCQlQRU1fd3JpdGVfUEtDUzhQcml2YXRlS2V5X25pZDsKLSsJCVBFTV93cml0ZV9iaW9fUEtDUzhQcml2YXRlS2V5X25pZDsKLSsJCVBFTV93cml0ZV9iaW9fUEtDUzhQcml2S2V5X25pZDsKLSsJCWQyaV9QS0NTOFByaXZhdGVLZXlfYmlvOwotKwkJQVNOMV9OVUxMX2ZyZWU7Ci0rCQlkMmlfQVNOMV9OVUxMOwotKwkJQVNOMV9OVUxMX25ldzsKLSsJCWkyZF9QS0NTOFByaXZhdGVLZXlfYmlvOwotKwkJaTJkX1BLQ1M4UHJpdmF0ZUtleV9mcDsKLSsJCWkyZF9BU04xX05VTEw7Ci0rCQlpMmRfUEtDUzhQcml2YXRlS2V5X25pZF9mcDsKLSsJCWQyaV9QS0NTOFByaXZhdGVLZXlfZnA7Ci0rCQlpMmRfUEtDUzhQcml2YXRlS2V5X25pZF9iaW87Ci0rCQlpMmRfUEtDUzhQcml2YXRlS2V5SW5mb19mcDsKLSsJCWkyZF9QS0NTOFByaXZhdGVLZXlJbmZvX2JpbzsKLSsJCVBFTV9jYjsKLSsJCWkyZF9Qcml2YXRlS2V5X2ZwOwotKwkJZDJpX1ByaXZhdGVLZXlfYmlvOwotKwkJZDJpX1ByaXZhdGVLZXlfZnA7Ci0rCQlpMmRfUHJpdmF0ZUtleV9iaW87Ci0rCQlYNTA5X3JlamVjdF9jbGVhcjsKLSsJCVg1MDlfVFJVU1Rfc2V0X2RlZmF1bHQ7Ci0rCQlkMmlfQXV0b1ByaXZhdGVLZXk7Ci0rCQlYNTA5X0FUVFJJQlVURV9nZXQwX3R5cGU7Ci0rCQlYNTA5X0FUVFJJQlVURV9zZXQxX2RhdGE7Ci0rCQlYNTA5YXRfZ2V0X2F0dHI7Ci0rCQlYNTA5YXRfZ2V0X2F0dHJfY291bnQ7Ci0rCQlYNTA5X0FUVFJJQlVURV9jcmVhdGVfYnlfTklEOwotKwkJWDUwOV9BVFRSSUJVVEVfc2V0MV9vYmplY3Q7Ci0rCQlYNTA5X0FUVFJJQlVURV9jb3VudDsKLSsJCVg1MDlfQVRUUklCVVRFX2NyZWF0ZV9ieV9PQko7Ci0rCQlYNTA5X0FUVFJJQlVURV9nZXQwX29iamVjdDsKLSsJCVg1MDlhdF9nZXRfYXR0cl9ieV9OSUQ7Ci0rCQlYNTA5YXRfYWRkMV9hdHRyOwotKwkJWDUwOV9BVFRSSUJVVEVfZ2V0MF9kYXRhOwotKwkJWDUwOWF0X2RlbGV0ZV9hdHRyOwotKwkJWDUwOWF0X2dldF9hdHRyX2J5X09CSjsKLSsJCVJBTkRfYWRkOwotKwkJQklPX251bWJlcl93cml0dGVuOwotKwkJQklPX251bWJlcl9yZWFkOwotKwkJWDUwOV9TVE9SRV9DVFhfZ2V0MV9jaGFpbjsKLSsJCUVSUl9sb2FkX1JBTkRfc3RyaW5nczsKLSsJCVJBTkRfcHNldWRvX2J5dGVzOwotKwkJWDUwOV9SRVFfZ2V0X2F0dHJfYnlfTklEOwotKwkJWDUwOV9SRVFfZ2V0X2F0dHI7Ci0rCQlYNTA5X1JFUV9hZGQxX2F0dHJfYnlfTklEOwotKwkJWDUwOV9SRVFfZ2V0X2F0dHJfYnlfT0JKOwotKwkJWDUwOWF0X2FkZDFfYXR0cl9ieV9OSUQ7Ci0rCQlYNTA5X1JFUV9hZGQxX2F0dHJfYnlfT0JKOwotKwkJWDUwOV9SRVFfZ2V0X2F0dHJfY291bnQ7Ci0rCQlYNTA5X1JFUV9hZGQxX2F0dHI7Ci0rCQlYNTA5X1JFUV9kZWxldGVfYXR0cjsKLSsJCVg1MDlhdF9hZGQxX2F0dHJfYnlfT0JKOwotKwkJWDUwOV9SRVFfYWRkMV9hdHRyX2J5X3R4dDsKLSsJCVg1MDlfQVRUUklCVVRFX2NyZWF0ZV9ieV90eHQ7Ci0rCQlYNTA5YXRfYWRkMV9hdHRyX2J5X3R4dDsKLSsJCUJOX3BzZXVkb19yYW5kOwotKwkJQk5faXNfcHJpbWVfZmFzdHRlc3Q7Ci0rCQlCTl9DVFhfZW5kOwotKwkJQk5fQ1RYX3N0YXJ0OwotKwkJQk5fQ1RYX2dldDsKLSsJCUVWUF9QS0VZMlBLQ1M4X2Jyb2tlbjsKLSsJCUFTTjFfU1RSSU5HX1RBQkxFX2FkZDsKLSsJCUNSWVBUT19kYmdfZ2V0X29wdGlvbnM7Ci0rCQlBVVRIT1JJVFlfSU5GT19BQ0NFU1NfbmV3OwotKwkJQ1JZUFRPX2dldF9tZW1fZGVidWdfb3B0aW9uczsKLSsJCURFU19jcnlwdDsKLSsJCVBFTV93cml0ZV9iaW9fWDUwOV9SRVFfTkVXOwotKwkJUEVNX3dyaXRlX1g1MDlfUkVRX05FVzsKLSsJCUJJT19jYWxsYmFja19jdHJsOwotKwkJUkFORF9lZ2Q7Ci0rCQlSQU5EX3N0YXR1czsKLSsJCWJuX2R1bXAxOwotKwkJREVTX2NoZWNrX2tleV9wYXJpdHk7Ci0rCQlsaF9udW1faXRlbXM7Ci0rCQlSQU5EX2V2ZW50OwotKwkJRFNPX25ldzsKLSsJCURTT19uZXdfbWV0aG9kOwotKwkJRFNPX2ZyZWU7Ci0rCQlEU09fZmxhZ3M7Ci0rCQlEU09fdXA7Ci0rCQlEU09fc2V0X2RlZmF1bHRfbWV0aG9kOwotKwkJRFNPX2dldF9kZWZhdWx0X21ldGhvZDsKLSsJCURTT19nZXRfbWV0aG9kOwotKwkJRFNPX3NldF9tZXRob2Q7Ci0rCQlEU09fbG9hZDsKLSsJCURTT19iaW5kX3ZhcjsKLSsJCURTT19NRVRIT0RfbnVsbDsKLSsJCURTT19NRVRIT0Rfb3BlbnNzbDsKLSsJCURTT19NRVRIT0RfZGxmY247Ci0rCQlEU09fTUVUSE9EX3dpbjMyOwotKwkJRVJSX2xvYWRfRFNPX3N0cmluZ3M7Ci0rCQlEU09fTUVUSE9EX2RsOwotKwkJTkNPTkZfbG9hZDsKLSsJCU5DT05GX2xvYWRfZnA7Ci0rCQlOQ09ORl9uZXc7Ci0rCQlOQ09ORl9nZXRfc3RyaW5nOwotKwkJTkNPTkZfZnJlZTsKLSsJCU5DT05GX2dldF9udW1iZXI7Ci0rCQlDT05GX2R1bXBfZnA7Ci0rCQlOQ09ORl9sb2FkX2JpbzsKLSsJCU5DT05GX2R1bXBfZnA7Ci0rCQlOQ09ORl9nZXRfc2VjdGlvbjsKLSsJCU5DT05GX2R1bXBfYmlvOwotKwkJQ09ORl9kdW1wX2JpbzsKLSsJCU5DT05GX2ZyZWVfZGF0YTsKLSsJCUNPTkZfc2V0X2RlZmF1bHRfbWV0aG9kOwotKwkJRVJSX2Vycm9yX3N0cmluZ19uOwotKwkJQklPX3NucHJpbnRmOwotKwkJRFNPX2N0cmw7Ci0rCQlpMmRfQVNOMV9TRVRfT0ZfQVNOMV9JTlRFR0VSOwotKwkJaTJkX0FTTjFfU0VUX09GX1BLQ1MxMl9TQUZFQkFHOwotKwkJaTJkX0FTTjFfU0VUX09GX1BLQ1M3OwotKwkJQklPX3ZmcmVlOwotKwkJZDJpX0FTTjFfU0VUX09GX0FTTjFfSU5URUdFUjsKLSsJCWQyaV9BU04xX1NFVF9PRl9QS0NTMTJfU0FGRUJBRzsKLSsJCUFTTjFfVVRDVElNRV9nZXQ7Ci0rCQlYNTA5X1JFUV9kaWdlc3Q7Ci0rCQlYNTA5X0NSTF9kaWdlc3Q7Ci0rCQlkMmlfQVNOMV9TRVRfT0ZfUEtDUzc7Ci0rCQlFVlBfQ0lQSEVSX0NUWF9zZXRfa2V5X2xlbmd0aDsKLSsJCUVWUF9DSVBIRVJfQ1RYX2N0cmw7Ci0rCQlCTl9tb2RfZXhwX21vbnRfd29yZDsKLSsJCVJBTkRfZWdkX2J5dGVzOwotKwkJWDUwOV9SRVFfZ2V0MV9lbWFpbDsKLSsJCVg1MDlfZ2V0MV9lbWFpbDsKLSsJCVg1MDlfZW1haWxfZnJlZTsKLSsJCWkyZF9SU0FfTkVUOwotKwkJZDJpX1JTQV9ORVRfMjsKLSsJCWQyaV9SU0FfTkVUOwotKwkJRFNPX2JpbmRfZnVuYzsKLSsJCUNSWVBUT19nZXRfbmV3X2R5bmxvY2tpZDsKLSsJCXNrX25ld19udWxsOwotKwkJQ1JZUFRPX3NldF9keW5sb2NrX2Rlc3Ryb3lfY2FsbGJhY2s7Ci0rCQlDUllQVE9fc2V0X2R5bmxvY2tfZGVzdHJveV9jYjsKLSsJCUNSWVBUT19kZXN0cm95X2R5bmxvY2tpZDsKLSsJCUNSWVBUT19zZXRfZHlubG9ja19zaXplOwotKwkJQ1JZUFRPX3NldF9keW5sb2NrX2NyZWF0ZV9jYWxsYmFjazsKLSsJCUNSWVBUT19zZXRfZHlubG9ja19jcmVhdGVfY2I7Ci0rCQlDUllQVE9fc2V0X2R5bmxvY2tfbG9ja19jYWxsYmFjazsKLSsJCUNSWVBUT19zZXRfZHlubG9ja19sb2NrX2NiOwotKwkJQ1JZUFRPX2dldF9keW5sb2NrX2xvY2tfY2FsbGJhY2s7Ci0rCQlDUllQVE9fZ2V0X2R5bmxvY2tfbG9ja19jYjsKLSsJCUNSWVBUT19nZXRfZHlubG9ja19kZXN0cm95X2NhbGxiYWNrOwotKwkJQ1JZUFRPX2dldF9keW5sb2NrX2Rlc3Ryb3lfY2I7Ci0rCQlDUllQVE9fZ2V0X2R5bmxvY2tfdmFsdWU7Ci0rCQlDUllQVE9fZ2V0X2R5bmxvY2tfY3JlYXRlX2NhbGxiYWNrOwotKwkJQ1JZUFRPX2dldF9keW5sb2NrX2NyZWF0ZV9jYjsKLSsJCWMyaV9BU04xX0JJVF9TVFJJTkc7Ci0rCQlpMmNfQVNOMV9CSVRfU1RSSU5HOwotKwkJUkFORF9wb2xsOwotKwkJYzJpX0FTTjFfSU5URUdFUjsKLSsJCWkyY19BU04xX0lOVEVHRVI7Ci0rCQlCSU9fZHVtcF9pbmRlbnQ7Ci0rCQlBU04xX3BhcnNlX2R1bXA7Ci0rCQljMmlfQVNOMV9PQkpFQ1Q7Ci0rCQlYNTA5X05BTUVfcHJpbnRfZXhfZnA7Ci0rCQlBU04xX1NUUklOR19wcmludF9leF9mcDsKLSsJCVg1MDlfTkFNRV9wcmludF9leDsKLSsJCUFTTjFfU1RSSU5HX3ByaW50X2V4OwotKwkJTUQ0OwotKwkJTUQ0X1RyYW5zZm9ybTsKLSsJCU1ENF9GaW5hbDsKLSsJCU1ENF9VcGRhdGU7Ci0rCQlNRDRfSW5pdDsKLSsJCUVWUF9tZDQ7Ci0rCQlpMmRfUFVCS0VZX2JpbzsKLSsJCWkyZF9QVUJLRVlfZnA7Ci0rCQlkMmlfUFVCS0VZX2JpbzsKLSsJCUFTTjFfU1RSSU5HX3RvX1VURjg7Ci0rCQlCSU9fdnByaW50ZjsKLSsJCUJJT192c25wcmludGY7Ci0rCQlkMmlfUFVCS0VZX2ZwOwotKwkJWDUwOV9jbXBfdGltZTsKLSsJCVg1MDlfU1RPUkVfQ1RYX3NldF90aW1lOwotKwkJWDUwOV9TVE9SRV9DVFhfZ2V0MV9pc3N1ZXI7Ci0rCQlYNTA5X09CSkVDVF9yZXRyaWV2ZV9tYXRjaDsKLSsJCVg1MDlfT0JKRUNUX2lkeF9ieV9zdWJqZWN0OwotKwkJWDUwOV9TVE9SRV9DVFhfc2V0X2ZsYWdzOwotKwkJWDUwOV9TVE9SRV9DVFhfdHJ1c3RlZF9zdGFjazsKLSsJCVg1MDlfdGltZV9hZGo7Ci0rCQlYNTA5X2NoZWNrX2lzc3VlZDsKLSsJCUFTTjFfVVRDVElNRV9jbXBfdGltZV90OwotKwkJREVTX3NldF93ZWFrX2tleV9mbGFnOwotKwkJREVTX2NoZWNrX2tleTsKLSsJCURFU19yd19tb2RlOwotKwkJUlNBX1BLQ1MxX1JTQXJlZjsKLSsJCVg1MDlfa2V5aWRfc2V0MTsKLSsJCUJJT19uZXh0OwotKwkJRFNPX01FVEhPRF92bXM7Ci0rCQlCSU9fZl9saW5lYnVmZmVyOwotKwkJQk5fYm50ZXN0X3JhbmQ7Ci0rCQlPUEVOU1NMX2lzc2V0dWdpZDsKLSsJCUJOX3JhbmRfcmFuZ2U7Ci0rCQlFUlJfbG9hZF9FTkdJTkVfc3RyaW5nczsKLSsJCUVOR0lORV9zZXRfRFNBOwotKwkJRU5HSU5FX2dldF9maW5pc2hfZnVuY3Rpb247Ci0rCQlFTkdJTkVfZ2V0X2RlZmF1bHRfUlNBOwotKwkJRU5HSU5FX2dldF9CTl9tb2RfZXhwOwotKwkJRFNBX2dldF9kZWZhdWx0X29wZW5zc2xfbWV0aG9kOwotKwkJRU5HSU5FX3NldF9ESDsKLSsJCUVOR0lORV9zZXRfZGVmX0JOX21vZF9leHBfY3J0OwotKwkJRU5HSU5FX3NldF9kZWZhdWx0X0JOX21vZF9leHBfY3J0OwotKwkJRU5HSU5FX2luaXQ7Ci0rCQlESF9nZXRfZGVmYXVsdF9vcGVuc3NsX21ldGhvZDsKLSsJCVJTQV9zZXRfZGVmYXVsdF9vcGVuc3NsX21ldGhvZDsKLSsJCUVOR0lORV9maW5pc2g7Ci0rCQlFTkdJTkVfbG9hZF9wdWJsaWNfa2V5OwotKwkJRU5HSU5FX2dldF9ESDsKLSsJCUVOR0lORV9jdHJsOwotKwkJRU5HSU5FX2dldF9pbml0X2Z1bmN0aW9uOwotKwkJRU5HSU5FX3NldF9pbml0X2Z1bmN0aW9uOwotKwkJRU5HSU5FX3NldF9kZWZhdWx0X0RTQTsKLSsJCUVOR0lORV9nZXRfbmFtZTsKLSsJCUVOR0lORV9nZXRfbGFzdDsKLSsJCUVOR0lORV9nZXRfcHJldjsKLSsJCUVOR0lORV9nZXRfZGVmYXVsdF9ESDsKLSsJCUVOR0lORV9nZXRfUlNBOwotKwkJRU5HSU5FX3NldF9kZWZhdWx0OwotKwkJRU5HSU5FX2dldF9SQU5EOwotKwkJRU5HSU5FX2dldF9maXJzdDsKLSsJCUVOR0lORV9ieV9pZDsKLSsJCUVOR0lORV9zZXRfZmluaXNoX2Z1bmN0aW9uOwotKwkJRU5HSU5FX2dldF9kZWZfQk5fbW9kX2V4cF9jcnQ7Ci0rCQlFTkdJTkVfZ2V0X2RlZmF1bHRfQk5fbW9kX2V4cF9jcnQ7Ci0rCQlSU0FfZ2V0X2RlZmF1bHRfb3BlbnNzbF9tZXRob2Q7Ci0rCQlFTkdJTkVfc2V0X1JTQTsKLSsJCUVOR0lORV9sb2FkX3ByaXZhdGVfa2V5OwotKwkJRU5HSU5FX3NldF9kZWZhdWx0X1JBTkQ7Ci0rCQlFTkdJTkVfc2V0X0JOX21vZF9leHA7Ci0rCQlFTkdJTkVfcmVtb3ZlOwotKwkJRU5HSU5FX2ZyZWU7Ci0rCQlFTkdJTkVfZ2V0X0JOX21vZF9leHBfY3J0OwotKwkJRU5HSU5FX2dldF9uZXh0OwotKwkJRU5HSU5FX3NldF9uYW1lOwotKwkJRU5HSU5FX2dldF9kZWZhdWx0X0RTQTsKLSsJCUVOR0lORV9zZXRfZGVmYXVsdF9CTl9tb2RfZXhwOwotKwkJRU5HSU5FX3NldF9kZWZhdWx0X1JTQTsKLSsJCUVOR0lORV9nZXRfZGVmYXVsdF9SQU5EOwotKwkJRU5HSU5FX2dldF9kZWZhdWx0X0JOX21vZF9leHA7Ci0rCQlFTkdJTkVfc2V0X1JBTkQ7Ci0rCQlFTkdJTkVfc2V0X2lkOwotKwkJRU5HSU5FX3NldF9CTl9tb2RfZXhwX2NydDsKLSsJCUVOR0lORV9zZXRfZGVmYXVsdF9ESDsKLSsJCUVOR0lORV9uZXc7Ci0rCQlFTkdJTkVfZ2V0X2lkOwotKwkJRFNBX3NldF9kZWZhdWx0X29wZW5zc2xfbWV0aG9kOwotKwkJRU5HSU5FX2FkZDsKLSsJCURIX3NldF9kZWZhdWx0X29wZW5zc2xfbWV0aG9kOwotKwkJRU5HSU5FX2dldF9EU0E7Ci0rCQlFTkdJTkVfZ2V0X2N0cmxfZnVuY3Rpb247Ci0rCQlFTkdJTkVfc2V0X2N0cmxfZnVuY3Rpb247Ci0rCQlCTl9wc2V1ZG9fcmFuZF9yYW5nZTsKLSsJCVg1MDlfU1RPUkVfQ1RYX3NldF92ZXJpZnlfY2I7Ci0rCQlFUlJfbG9hZF9DT01QX3N0cmluZ3M7Ci0rCQlQS0NTMTJfaXRlbV9kZWNyeXB0X2QyaTsKLSsJCUFTTjFfVVRGOFNUUklOR19pdDsKLSsJCUVOR0lORV91bnJlZ2lzdGVyX2NpcGhlcnM7Ci0rCQlFTkdJTkVfZ2V0X2NpcGhlcnM7Ci0rCQlkMmlfT0NTUF9CQVNJQ1JFU1A7Ci0rCQlLUkI1X0NIRUNLU1VNX2l0OwotKwkJRUNfUE9JTlRfYWRkOwotKwkJQVNOMV9pdGVtX2V4X2kyZDsKLSsJCU9DU1BfQ0VSVElEX2l0OwotKwkJZDJpX09DU1BfUkVTUEJZVEVTOwotKwkJWDUwOVYzX2FkZDFfaTJkOwotKwkJUEtDUzdfRU5WRUxPUEVfaXQ7Ci0rCQlVSV9hZGRfaW5wdXRfYm9vbGVhbjsKLSsJCUVOR0lORV91bnJlZ2lzdGVyX1JTQTsKLSsJCVg1MDlWM19FWFRfbmNvbmY7Ci0rCQlBU04xX0dFTkVSQUxTVFJJTkdfZnJlZTsKLSsJCWQyaV9PQ1NQX0NFUlRTVEFUVVM7Ci0rCQlYNTA5X1JFVk9LRURfc2V0X3NlcmlhbE51bWJlcjsKLSsJCVg1MDlfcHJpbnRfZXg7Ci0rCQlPQ1NQX09ORVJFUV9nZXQxX2V4dF9kMmk7Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfYWxsX1JBTkQ7Ci0rCQlFTkdJTkVfbG9hZF9keW5hbWljOwotKwkJUEJLREYyUEFSQU1faXQ7Ci0rCQlFWFRFTkRFRF9LRVlfVVNBR0VfbmV3OwotKwkJRUNfR1JPVVBfY2xlYXJfZnJlZTsKLSsJCU9DU1Bfc2VuZHJlcV9iaW87Ci0rCQlBU04xX2l0ZW1fZGlnZXN0OwotKwkJT0NTUF9CQVNJQ1JFU1BfZGVsZXRlX2V4dDsKLSsJCU9DU1BfU0lHTkFUVVJFX2l0OwotKwkJWDUwOV9DUkxfaXQ7Ci0rCQlPQ1NQX0JBU0lDUkVTUF9hZGRfZXh0OwotKwkJS1JCNV9FTkNLRVlfaXQ7Ci0rCQlVSV9tZXRob2Rfc2V0X2Nsb3NlcjsKLSsJCVg1MDlfU1RPUkVfc2V0X3B1cnBvc2U7Ci0rCQlpMmRfQVNOMV9HRU5FUkFMU1RSSU5HOwotKwkJT0NTUF9yZXNwb25zZV9zdGF0dXM7Ci0rCQlpMmRfT0NTUF9TRVJWSUNFTE9DOwotKwkJRU5HSU5FX2dldF9kaWdlc3RfZW5naW5lOwotKwkJRUNfR1JPVVBfc2V0X2N1cnZlX0dGcDsKLSsJCU9DU1BfUkVRVUVTVF9nZXRfZXh0X2J5X09CSjsKLSsJCV9vc3NsX29sZF9kZXNfcmFuZG9tX2tleTsKLSsJCUFTTjFfVDYxU1RSSU5HX2l0OwotKwkJRUNfR1JPVVBfbWV0aG9kX29mOwotKwkJaTJkX0tSQjVfQVBSRVE7Ci0rCQlfb3NzbF9vbGRfZGVzX2VuY3J5cHQ7Ci0rCQlBU04xX1BSSU5UQUJMRV9uZXc7Ci0rCQlITUFDX0luaXRfZXg7Ci0rCQlkMmlfS1JCNV9BVVRIRU5UOwotKwkJT0NTUF9hcmNoaXZlX2N1dG9mZl9uZXc7Ci0rCQlFQ19QT0lOVF9zZXRfSnByb2plY3RpdmVfY29vcmRpbmF0ZXNfR0ZwOwotKwkJRUNfUE9JTlRfc2V0X0pwcm9qX2Nvb3Jkc19HRnA7Ci0rCQlfb3NzbF9vbGRfZGVzX2lzX3dlYWtfa2V5OwotKwkJT0NTUF9CQVNJQ1JFU1BfZ2V0X2V4dF9ieV9PQko7Ci0rCQlFQ19QT0lOVF9vY3QycG9pbnQ7Ci0rCQlPQ1NQX1NJTkdMRVJFU1BfZ2V0X2V4dF9jb3VudDsKLSsJCVVJX2N0cmw7Ci0rCQlfc2hhZG93X0RFU19yd19tb2RlOwotKwkJYXNuMV9kb19hZGI7Ci0rCQlBU04xX3RlbXBsYXRlX2kyZDsKLSsJCUVOR0lORV9yZWdpc3Rlcl9ESDsKLSsJCVVJX2NvbnN0cnVjdF9wcm9tcHQ7Ci0rCQlYNTA5X1NUT1JFX3NldF90cnVzdDsKLSsJCVVJX2R1cF9pbnB1dF9zdHJpbmc7Ci0rCQlkMmlfS1JCNV9BUFJFUTsKLSsJCUVWUF9NRF9DVFhfY29weV9leDsKLSsJCU9DU1BfcmVxdWVzdF9pc19zaWduZWQ7Ci0rCQlpMmRfT0NTUF9SRVFJTkZPOwotKwkJS1JCNV9FTkNLRVlfZnJlZTsKLSsJCU9DU1BfcmVzcF9nZXQwOwotKwkJR0VORVJBTF9OQU1FX2l0OwotKwkJQVNOMV9HRU5FUkFMSVpFRFRJTUVfaXQ7Ci0rCQlYNTA5X1NUT1JFX3NldF9mbGFnczsKLSsJCUVDX1BPSU5UX3NldF9jb21wcmVzc2VkX2Nvb3JkaW5hdGVzX0dGcDsKLSsJCUVDX1BPSU5UX3NldF9jb21wcl9jb29yZHNfR0ZwOwotKwkJT0NTUF9yZXNwb25zZV9zdGF0dXNfc3RyOwotKwkJZDJpX09DU1BfUkVWT0tFRElORk87Ci0rCQlPQ1NQX2Jhc2ljX2FkZDFfY2VydDsKLSsJCUVSUl9nZXRfaW1wbGVtZW50YXRpb247Ci0rCQlFVlBfQ2lwaGVyRmluYWxfZXg7Ci0rCQlPQ1NQX0NFUlRTVEFUVVNfbmV3OwotKwkJQ1JZUFRPX2NsZWFudXBfYWxsX2V4X2RhdGE7Ci0rCQlPQ1NQX3Jlc3BfZmluZDsKLSsJCUJOX25ubW9kOwotKwkJWDUwOV9DUkxfc29ydDsKLSsJCVg1MDlfUkVWT0tFRF9zZXRfcmV2b2NhdGlvbkRhdGU7Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfUkFORDsKLSsJCU9DU1BfU0VSVklDRUxPQ19uZXc7Ci0rCQlFQ19QT0lOVF9zZXRfYWZmaW5lX2Nvb3JkaW5hdGVzX0dGcDsKLSsJCUVDX1BPSU5UX3NldF9hZmZpbmVfY29vcmRzX0dGcDsKLSsJCV9vc3NsX29sZF9kZXNfb3B0aW9uczsKLSsJCVNYTkVUX2l0OwotKwkJVUlfZHVwX2lucHV0X2Jvb2xlYW47Ci0rCQlQS0NTMTJfYWRkX0NTUE5hbWVfYXNjOwotKwkJRUNfUE9JTlRfaXNfYXRfaW5maW5pdHk7Ci0rCQlFTkdJTkVfbG9hZF9jcnlwdG9kZXY7Ci0rCQlEU09fY29udmVydF9maWxlbmFtZTsKLSsJCVBPTElDWVFVQUxJTkZPX2l0OwotKwkJRU5HSU5FX3JlZ2lzdGVyX2NpcGhlcnM7Ci0rCQlCTl9tb2RfbHNoaWZ0X3F1aWNrOwotKwkJRFNPX3NldF9maWxlbmFtZTsKLSsJCUFTTjFfaXRlbV9mcmVlOwotKwkJS1JCNV9US1RCT0RZX2ZyZWU7Ci0rCQlBVVRIT1JJVFlfS0VZSURfaXQ7Ci0rCQlLUkI1X0FQUkVRQk9EWV9uZXc7Ci0rCQlYNTA5VjNfRVhUX1JFUV9hZGRfbmNvbmY7Ci0rCQlFTkdJTkVfY3RybF9jbWRfc3RyaW5nOwotKwkJaTJkX09DU1BfUkVTUERBVEE7Ci0rCQlFVlBfTURfQ1RYX2luaXQ7Ci0rCQlFWFRFTkRFRF9LRVlfVVNBR0VfZnJlZTsKLSsJCVBLQ1M3X0FUVFJfU0lHTl9pdDsKLSsJCVVJX2FkZF9lcnJvcl9zdHJpbmc7Ci0rCQlLUkI1X0NIRUNLU1VNX2ZyZWU7Ci0rCQlPQ1NQX1JFUVVFU1RfZ2V0X2V4dDsKLSsJCUVOR0lORV9sb2FkX3Vic2VjOwotKwkJRU5HSU5FX3JlZ2lzdGVyX2FsbF9kaWdlc3RzOwotKwkJUEtFWV9VU0FHRV9QRVJJT0RfaXQ7Ci0rCQlQS0NTMTJfdW5wYWNrX2F1dGhzYWZlczsKLSsJCUFTTjFfaXRlbV91bnBhY2s7Ci0rCQlORVRTQ0FQRV9TUEtBQ19pdDsKLSsJCVg1MDlfUkVWT0tFRF9pdDsKLSsJCUFTTjFfU1RSSU5HX2VuY29kZTsKLSsJCUVWUF9hZXNfMTI4X2VjYjsKLSsJCUtSQjVfQVVUSEVOVF9mcmVlOwotKwkJT0NTUF9CQVNJQ1JFU1BfZ2V0X2V4dF9ieV9jcml0aWNhbDsKLSsJCU9DU1BfQkFTSUNSRVNQX2dldF9leHRfYnlfY3JpdDsKLSsJCU9DU1BfY2VydF9zdGF0dXNfc3RyOwotKwkJZDJpX09DU1BfUkVRVUVTVDsKLSsJCVVJX2R1cF9pbmZvX3N0cmluZzsKLSsJCV9vc3NsX29sZF9kZXNfeHdoaXRlX2luMm91dDsKLSsJCVBLQ1MxMl9pdDsKLSsJCU9DU1BfU0lOR0xFUkVTUF9nZXRfZXh0X2J5X2NyaXRpY2FsOwotKwkJT0NTUF9TSU5HTEVSRVNQX2dldF9leHRfYnlfY3JpdDsKLSsJCU9DU1BfQ0VSVFNUQVRVU19mcmVlOwotKwkJX29zc2xfb2xkX2Rlc19jcnlwdDsKLSsJCUFTTjFfaXRlbV9pMmQ7Ci0rCQlFVlBfRGVjcnlwdEZpbmFsX2V4OwotKwkJRU5HSU5FX2xvYWRfb3BlbnNzbDsKLSsJCUVOR0lORV9nZXRfY21kX2RlZm5zOwotKwkJRU5HSU5FX3NldF9sb2FkX3ByaXZrZXlfZnVuY3Rpb247Ci0rCQlFTkdJTkVfc2V0X2xvYWRfcHJpdmtleV9mbjsKLSsJCUVWUF9FbmNyeXB0RmluYWxfZXg7Ci0rCQlFTkdJTkVfc2V0X2RlZmF1bHRfZGlnZXN0czsKLSsJCVg1MDlfZ2V0MF9wdWJrZXlfYml0c3RyOwotKwkJYXNuMV9leF9pMmM7Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfUlNBOwotKwkJRU5HSU5FX3VucmVnaXN0ZXJfRFNBOwotKwkJX29zc2xfb2xkX2Rlc19rZXlfc2NoZWQ7Ci0rCQlYNTA5X0VYVEVOU0lPTl9pdDsKLSsJCWkyZF9LUkI1X0FVVEhFTlQ7Ci0rCQlTWE5FVElEX2l0OwotKwkJZDJpX09DU1BfU0lOR0xFUkVTUDsKLSsJCUVESVBBUlRZTkFNRV9uZXc7Ci0rCQlQS0NTMTJfY2VydGJhZzJ4NTA5OwotKwkJX29zc2xfb2xkX2Rlc19vZmI2NF9lbmNyeXB0OwotKwkJZDJpX0VYVEVOREVEX0tFWV9VU0FHRTsKLSsJCUVSUl9wcmludF9lcnJvcnNfY2I7Ci0rCQlFTkdJTkVfc2V0X2NpcGhlcnM7Ci0rCQlkMmlfS1JCNV9BUFJFUUJPRFk7Ci0rCQlVSV9tZXRob2RfZ2V0X2ZsdXNoZXI7Ci0rCQlYNTA5X1BVQktFWV9pdDsKLSsJCV9vc3NsX29sZF9kZXNfZW5jX3JlYWQ7Ci0rCQlQS0NTN19FTkNSWVBUX2l0OwotKwkJaTJkX09DU1BfUkVTUE9OU0U7Ci0rCQlFQ19HUk9VUF9nZXRfY29mYWN0b3I7Ci0rCQlQS0NTMTJfdW5wYWNrX3A3ZGF0YTsKLSsJCWQyaV9LUkI1X0FVVEhEQVRBOwotKwkJT0NTUF9jb3B5X25vbmNlOwotKwkJS1JCNV9BVVRIREFUQV9uZXc7Ci0rCQlPQ1NQX1JFU1BEQVRBX25ldzsKLSsJCUVDX0dGcF9tb250X21ldGhvZDsKLSsJCU9DU1BfUkVWT0tFRElORk9fZnJlZTsKLSsJCVVJX2dldF9leF9kYXRhOwotKwkJS1JCNV9BUFJFUUJPRFlfZnJlZTsKLSsJCUVDX0dST1VQX2dldDBfZ2VuZXJhdG9yOwotKwkJVUlfZ2V0X2RlZmF1bHRfbWV0aG9kOwotKwkJWDUwOVYzX3NldF9uY29uZjsKLSsJCVBLQ1MxMl9pdGVtX2kyZF9lbmNyeXB0OwotKwkJWDUwOV9hZGQxX2V4dF9pMmQ7Ci0rCQlQS0NTN19TSUdORVJfSU5GT19pdDsKLSsJCUtSQjVfUFJJTkNOQU1FX25ldzsKLSsJCVBLQ1MxMl9TQUZFQkFHX2l0OwotKwkJRUNfR1JPVVBfZ2V0X29yZGVyOwotKwkJZDJpX09DU1BfUkVTUElEOwotKwkJT0NTUF9yZXF1ZXN0X3ZlcmlmeTsKLSsJCU5DT05GX2dldF9udW1iZXJfZTsKLSsJCV9vc3NsX29sZF9kZXNfZGVjcnlwdDM7Ci0rCQlYNTA5X3NpZ25hdHVyZV9wcmludDsKLSsJCU9DU1BfU0lOR0xFUkVTUF9mcmVlOwotKwkJRU5HSU5FX2xvYWRfYnVpbHRpbl9lbmdpbmVzOwotKwkJaTJkX09DU1BfT05FUkVROwotKwkJT0NTUF9SRVFVRVNUX2FkZF9leHQ7Ci0rCQlPQ1NQX1JFU1BCWVRFU19uZXc7Ci0rCQlFVlBfTURfQ1RYX2NyZWF0ZTsKLSsJCU9DU1BfcmVzcF9maW5kX3N0YXR1czsKLSsJCVg1MDlfQUxHT1JfaXQ7Ci0rCQlBU04xX1RJTUVfaXQ7Ci0rCQlPQ1NQX3JlcXVlc3Rfc2V0MV9uYW1lOwotKwkJT0NTUF9PTkVSRVFfZ2V0X2V4dF9jb3VudDsKLSsJCVVJX2dldDBfcmVzdWx0OwotKwkJUEtDUzEyX0FVVEhTQUZFU19pdDsKLSsJCUVWUF9hZXNfMjU2X2VjYjsKLSsJCVBLQ1MxMl9wYWNrX2F1dGhzYWZlczsKLSsJCUFTTjFfSUE1U1RSSU5HX2l0OwotKwkJVUlfZ2V0X2lucHV0X2ZsYWdzOwotKwkJRUNfR1JPVVBfc2V0X2dlbmVyYXRvcjsKLSsJCV9vc3NsX29sZF9kZXNfc3RyaW5nX3RvXzJrZXlzOwotKwkJT0NTUF9DRVJUSURfZnJlZTsKLSsJCVg1MDlfQ0VSVF9BVVhfaXQ7Ci0rCQlDRVJUSUZJQ0FURVBPTElDSUVTX2l0OwotKwkJX29zc2xfb2xkX2Rlc19lZGUzX2NiY19lbmNyeXB0OwotKwkJUkFORF9zZXRfcmFuZF9lbmdpbmU7Ci0rCQlEU09fZ2V0X2xvYWRlZF9maWxlbmFtZTsKLSsJCVg1MDlfQVRUUklCVVRFX2l0OwotKwkJT0NTUF9PTkVSRVFfZ2V0X2V4dF9ieV9OSUQ7Ci0rCQlQS0NTMTJfZGVjcnlwdF9za2V5OwotKwkJS1JCNV9BVVRIRU5UX2l0OwotKwkJVUlfZHVwX2Vycm9yX3N0cmluZzsKLSsJCVJTQVB1YmxpY0tleV9pdDsKLSsJCWkyZF9PQ1NQX1JFUVVFU1Q7Ci0rCQlQS0NTMTJfeDUwOWNybDJjZXJ0YmFnOwotKwkJT0NTUF9TRVJWSUNFTE9DX2l0OwotKwkJQVNOMV9pdGVtX3NpZ247Ci0rCQlYNTA5X0NSTF9zZXRfaXNzdWVyX25hbWU7Ci0rCQlPQkpfTkFNRV9kb19hbGxfc29ydGVkOwotKwkJaTJkX09DU1BfQkFTSUNSRVNQOwotKwkJaTJkX09DU1BfUkVTUEJZVEVTOwotKwkJUEtDUzEyX3VucGFja19wN2VuY2RhdGE7Ci0rCQlITUFDX0NUWF9pbml0OwotKwkJRU5HSU5FX2dldF9kaWdlc3Q7Ci0rCQlPQ1NQX1JFU1BPTlNFX3ByaW50OwotKwkJS1JCNV9US1RCT0RZX2l0OwotKwkJQUNDRVNTX0RFU0NSSVBUSU9OX2l0OwotKwkJUEtDUzdfSVNTVUVSX0FORF9TRVJJQUxfaXQ7Ci0rCQlQQkUyUEFSQU1faXQ7Ci0rCQlQS0NTMTJfY2VydGJhZzJ4NTA5Y3JsOwotKwkJUEtDUzdfU0lHTkVEX2l0OwotKwkJRU5HSU5FX2dldF9jaXBoZXI7Ci0rCQlpMmRfT0NTUF9DUkxJRDsKLSsJCU9DU1BfU0lOR0xFUkVTUF9uZXc7Ci0rCQlFTkdJTkVfY21kX2lzX2V4ZWN1dGFibGU7Ci0rCQlSU0FfdXBfcmVmOwotKwkJQVNOMV9HRU5FUkFMU1RSSU5HX2l0OwotKwkJRU5HSU5FX3JlZ2lzdGVyX0RTQTsKLSsJCVg1MDlWM19FWFRfYWRkX25jb25mX3NrOwotKwkJRU5HSU5FX3NldF9sb2FkX3B1YmtleV9mdW5jdGlvbjsKLSsJCVBLQ1M4X2RlY3J5cHQ7Ci0rCQlQRU1fYnl0ZXNfcmVhZF9iaW87Ci0rCQlESVJFQ1RPUllTVFJJTkdfaXQ7Ci0rCQlkMmlfT0NTUF9DUkxJRDsKLSsJCUVDX1BPSU5UX2lzX29uX2N1cnZlOwotKwkJQ1JZUFRPX3NldF9sb2NrZWRfbWVtX2V4X2Z1bmN0aW9uczsKLSsJCUNSWVBUT19zZXRfbG9ja2VkX21lbV9leF9mdW5jczsKLSsJCWQyaV9LUkI1X0NIRUNLU1VNOwotKwkJQVNOMV9pdGVtX2R1cDsKLSsJCVg1MDlfaXQ7Ci0rCQlCTl9tb2RfYWRkOwotKwkJS1JCNV9BVVRIREFUQV9mcmVlOwotKwkJX29zc2xfb2xkX2Rlc19jYmNfY2tzdW07Ci0rCQlBU04xX2l0ZW1fdmVyaWZ5OwotKwkJQ1JZUFRPX3NldF9tZW1fZXhfZnVuY3Rpb25zOwotKwkJRUNfUE9JTlRfZ2V0X0pwcm9qZWN0aXZlX2Nvb3JkaW5hdGVzX0dGcDsKLSsJCUVDX1BPSU5UX2dldF9KcHJval9jb29yZHNfR0ZwOwotKwkJWkxPTkdfaXQ7Ci0rCQlDUllQVE9fZ2V0X2xvY2tlZF9tZW1fZXhfZnVuY3Rpb25zOwotKwkJQ1JZUFRPX2dldF9sb2NrZWRfbWVtX2V4X2Z1bmNzOwotKwkJQVNOMV9USU1FX2NoZWNrOwotKwkJVUlfZ2V0MF91c2VyX2RhdGE7Ci0rCQlITUFDX0NUWF9jbGVhbnVwOwotKwkJRFNBX3VwX3JlZjsKLSsJCV9vc3NsX29sZF9kZXNfZWRlM19jZmI2NF9lbmNyeXB0OwotKwkJX29zc2xfb2Rlc19lZGUzX2NmYjY0X2VuY3J5cHQ7Ci0rCQlBU04xX0JNUFNUUklOR19pdDsKLSsJCUFTTjFfdGFnMmJpdDsKLSsJCVVJX21ldGhvZF9zZXRfZmx1c2hlcjsKLSsJCVg1MDlfb2NzcGlkX3ByaW50OwotKwkJS1JCNV9FTkNEQVRBX2l0OwotKwkJRU5HSU5FX2dldF9sb2FkX3B1YmtleV9mdW5jdGlvbjsKLSsJCVVJX2FkZF91c2VyX2RhdGE7Ci0rCQlPQ1NQX1JFUVVFU1RfZGVsZXRlX2V4dDsKLSsJCVVJX2dldF9tZXRob2Q7Ci0rCQlPQ1NQX09ORVJFUV9mcmVlOwotKwkJQVNOMV9QUklOVEFCTEVTVFJJTkdfaXQ7Ci0rCQlYNTA5X0NSTF9zZXRfbmV4dFVwZGF0ZTsKLSsJCU9DU1BfUkVRVUVTVF9pdDsKLSsJCU9DU1BfQkFTSUNSRVNQX2l0OwotKwkJQUVTX2VjYl9lbmNyeXB0OwotKwkJQk5fbW9kX3NxcjsKLSsJCU5FVFNDQVBFX0NFUlRfU0VRVUVOQ0VfaXQ7Ci0rCQlHRU5FUkFMX05BTUVTX2l0OwotKwkJQVVUSE9SSVRZX0lORk9fQUNDRVNTX2l0OwotKwkJQVNOMV9GQk9PTEVBTl9pdDsKLSsJCVVJX3NldF9leF9kYXRhOwotKwkJX29zc2xfb2xkX2Rlc19zdHJpbmdfdG9fa2V5OwotKwkJRU5HSU5FX3JlZ2lzdGVyX2FsbF9SU0E7Ci0rCQlkMmlfS1JCNV9QUklOQ05BTUU7Ci0rCQlPQ1NQX1JFU1BCWVRFU19pdDsKLSsJCVg1MDlfQ0lORl9pdDsKLSsJCUVOR0lORV91bnJlZ2lzdGVyX2RpZ2VzdHM7Ci0rCQlkMmlfRURJUEFSVFlOQU1FOwotKwkJZDJpX09DU1BfU0VSVklDRUxPQzsKLSsJCUVOR0lORV9nZXRfZGlnZXN0czsKLSsJCV9vc3NsX29sZF9kZXNfc2V0X29kZF9wYXJpdHk7Ci0rCQlPQ1NQX1JFU1BEQVRBX2ZyZWU7Ci0rCQlkMmlfS1JCNV9USUNLRVQ7Ci0rCQlPVEhFUk5BTUVfaXQ7Ci0rCQlFVlBfTURfQ1RYX2NsZWFudXA7Ci0rCQlkMmlfQVNOMV9HRU5FUkFMU1RSSU5HOwotKwkJWDUwOV9DUkxfc2V0X3ZlcnNpb247Ci0rCQlCTl9tb2Rfc3ViOwotKwkJT0NTUF9TSU5HTEVSRVNQX2dldF9leHRfYnlfTklEOwotKwkJRU5HSU5FX2dldF9leF9uZXdfaW5kZXg7Ci0rCQlPQ1NQX1JFUVVFU1RfZnJlZTsKLSsJCU9DU1BfUkVRVUVTVF9hZGQxX2V4dF9pMmQ7Ci0rCQlYNTA5X1ZBTF9pdDsKLSsJCUVDX1BPSU5Uc19tYWtlX2FmZmluZTsKLSsJCUVDX1BPSU5UX211bDsKLSsJCVg1MDlWM19FWFRfYWRkX25jb25mOwotKwkJWDUwOV9UUlVTVF9zZXQ7Ci0rCQlYNTA5X0NSTF9hZGQxX2V4dF9pMmQ7Ci0rCQlfb3NzbF9vbGRfZGVzX2ZjcnlwdDsKLSsJCURJU1BMQVlURVhUX2l0OwotKwkJWDUwOV9DUkxfc2V0X2xhc3RVcGRhdGU7Ci0rCQlPQ1NQX0JBU0lDUkVTUF9mcmVlOwotKwkJT0NTUF9CQVNJQ1JFU1BfYWRkMV9leHRfaTJkOwotKwkJZDJpX0tSQjVfQVVUSEVOVEJPRFk7Ci0rCQlDUllQVE9fc2V0X2V4X2RhdGFfaW1wbGVtZW50YXRpb247Ci0rCQlDUllQVE9fc2V0X2V4X2RhdGFfaW1wbDsKLSsJCUtSQjVfRU5DREFUQV9uZXc7Ci0rCQlEU09fdXBfcmVmOwotKwkJT0NTUF9jcmxfcmVhc29uX3N0cjsKLSsJCVVJX2dldDBfcmVzdWx0X3N0cmluZzsKLSsJCUFTTjFfR0VORVJBTFNUUklOR19uZXc7Ci0rCQlYNTA5X1NJR19pdDsKLSsJCUVSUl9zZXRfaW1wbGVtZW50YXRpb247Ci0rCQlFUlJfbG9hZF9FQ19zdHJpbmdzOwotKwkJVUlfZ2V0MF9hY3Rpb25fc3RyaW5nOwotKwkJT0NTUF9PTkVSRVFfZ2V0X2V4dDsKLSsJCUVDX1BPSU5UX21ldGhvZF9vZjsKLSsJCWkyZF9LUkI1X0FQUkVRQk9EWTsKLSsJCV9vc3NsX29sZF9kZXNfZWNiM19lbmNyeXB0OwotKwkJQ1JZUFRPX2dldF9tZW1fZXhfZnVuY3Rpb25zOwotKwkJRU5HSU5FX2dldF9leF9kYXRhOwotKwkJVUlfZGVzdHJveV9tZXRob2Q7Ci0rCQlBU04xX2l0ZW1faTJkX2JpbzsKLSsJCU9DU1BfT05FUkVRX2dldF9leHRfYnlfT0JKOwotKwkJQVNOMV9wcmltaXRpdmVfbmV3OwotKwkJQVNOMV9QUklOVEFCTEVfaXQ7Ci0rCQlFVlBfYWVzXzE5Ml9lY2I7Ci0rCQlPQ1NQX1NJR05BVFVSRV9uZXc7Ci0rCQlMT05HX2l0OwotKwkJQVNOMV9WSVNJQkxFU1RSSU5HX2l0OwotKwkJT0NTUF9TSU5HTEVSRVNQX2FkZDFfZXh0X2kyZDsKLSsJCWQyaV9PQ1NQX0NFUlRJRDsKLSsJCUFTTjFfaXRlbV9kMmlfZnA7Ci0rCQlDUkxfRElTVF9QT0lOVFNfaXQ7Ci0rCQlHRU5FUkFMX05BTUVfcHJpbnQ7Ci0rCQlPQ1NQX1NJTkdMRVJFU1BfZGVsZXRlX2V4dDsKLSsJCVBLQ1MxMl9TQUZFQkFHU19pdDsKLSsJCWQyaV9PQ1NQX1NJR05BVFVSRTsKLSsJCU9DU1BfcmVxdWVzdF9hZGQxX25vbmNlOwotKwkJRU5HSU5FX3NldF9jbWRfZGVmbnM7Ci0rCQlPQ1NQX1NFUlZJQ0VMT0NfZnJlZTsKLSsJCUVDX0dST1VQX2ZyZWU7Ci0rCQlBU04xX0JJVF9TVFJJTkdfaXQ7Ci0rCQlYNTA5X1JFUV9pdDsKLSsJCV9vc3NsX29sZF9kZXNfY2JjX2VuY3J5cHQ7Ci0rCQlFUlJfdW5sb2FkX3N0cmluZ3M7Ci0rCQlQS0NTN19TSUdOX0VOVkVMT1BFX2l0OwotKwkJRURJUEFSVFlOQU1FX2ZyZWU7Ci0rCQlPQ1NQX1JFUUlORk9fZnJlZTsKLSsJCUVDX0dST1VQX25ld19jdXJ2ZV9HRnA7Ci0rCQlPQ1NQX1JFUVVFU1RfZ2V0MV9leHRfZDJpOwotKwkJUEtDUzEyX2l0ZW1fcGFja19zYWZlYmFnOwotKwkJYXNuMV9leF9jMmk7Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfZGlnZXN0czsKLSsJCWkyZF9PQ1NQX1JFVk9LRURJTkZPOwotKwkJYXNuMV9lbmNfcmVzdG9yZTsKLSsJCVVJX2ZyZWU7Ci0rCQlVSV9uZXdfbWV0aG9kOwotKwkJRVZQX0VuY3J5cHRJbml0X2V4OwotKwkJWDUwOV9wdWJrZXlfZGlnZXN0OwotKwkJRUNfUE9JTlRfaW52ZXJ0OwotKwkJT0NTUF9iYXNpY19zaWduOwotKwkJaTJkX09DU1BfUkVTUElEOwotKwkJT0NTUF9jaGVja19ub25jZTsKLSsJCUVOR0lORV9jdHJsX2NtZDsKLSsJCWQyaV9LUkI1X0VOQ0tFWTsKLSsJCU9DU1BfcGFyc2VfdXJsOwotKwkJT0NTUF9TSU5HTEVSRVNQX2dldF9leHQ7Ci0rCQlPQ1NQX0NSTElEX2ZyZWU7Ci0rCQlPQ1NQX0JBU0lDUkVTUF9nZXQxX2V4dF9kMmk7Ci0rCQlSU0FQcml2YXRlS2V5X2l0OwotKwkJRU5HSU5FX3JlZ2lzdGVyX2FsbF9ESDsKLSsJCWkyZF9FRElQQVJUWU5BTUU7Ci0rCQlFQ19QT0lOVF9nZXRfYWZmaW5lX2Nvb3JkaW5hdGVzX0dGcDsKLSsJCUVDX1BPSU5UX2dldF9hZmZpbmVfY29vcmRzX0dGcDsKLSsJCU9DU1BfQ1JMSURfbmV3OwotKwkJRU5HSU5FX2dldF9mbGFnczsKLSsJCU9DU1BfT05FUkVRX2l0OwotKwkJVUlfcHJvY2VzczsKLSsJCUFTTjFfSU5URUdFUl9pdDsKLSsJCUVWUF9DaXBoZXJJbml0X2V4OwotKwkJVUlfZ2V0X3N0cmluZ190eXBlOwotKwkJRU5HSU5FX3VucmVnaXN0ZXJfREg7Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfYWxsX0RTQTsKLSsJCU9DU1BfT05FUkVRX2dldF9leHRfYnlfY3JpdGljYWw7Ci0rCQlibl9kdXBfZXhwYW5kOwotKwkJT0NTUF9jZXJ0X2lkX25ldzsKLSsJCUJBU0lDX0NPTlNUUkFJTlRTX2l0OwotKwkJQk5fbW9kX2FkZF9xdWljazsKLSsJCUVDX1BPSU5UX25ldzsKLSsJCUVWUF9NRF9DVFhfZGVzdHJveTsKLSsJCU9DU1BfUkVTUEJZVEVTX2ZyZWU7Ci0rCQlFVlBfYWVzXzEyOF9jYmM7Ci0rCQlPQ1NQX1NJTkdMRVJFU1BfZ2V0MV9leHRfZDJpOwotKwkJRUNfUE9JTlRfZnJlZTsKLSsJCURIX3VwX3JlZjsKLSsJCVg1MDlfTkFNRV9FTlRSWV9pdDsKLSsJCVVJX2dldF9leF9uZXdfaW5kZXg7Ci0rCQlCTl9tb2Rfc3ViX3F1aWNrOwotKwkJT0NTUF9PTkVSRVFfYWRkX2V4dDsKLSsJCU9DU1BfcmVxdWVzdF9zaWduOwotKwkJRVZQX0RpZ2VzdEZpbmFsX2V4OwotKwkJRU5HSU5FX3NldF9kaWdlc3RzOwotKwkJT0NTUF9pZF9pc3N1ZXJfY21wOwotKwkJT0JKX05BTUVfZG9fYWxsOwotKwkJRUNfUE9JTlRzX211bDsKLSsJCUVOR0lORV9yZWdpc3Rlcl9jb21wbGV0ZTsKLSsJCVg1MDlWM19FWFRfbmNvbmZfbmlkOwotKwkJQVNOMV9TRVFVRU5DRV9pdDsKLSsJCVVJX3NldF9kZWZhdWx0X21ldGhvZDsKLSsJCVJBTkRfcXVlcnlfZWdkX2J5dGVzOwotKwkJVUlfbWV0aG9kX2dldF93cml0ZXI7Ci0rCQlVSV9PcGVuU1NMOwotKwkJUEVNX2RlZl9jYWxsYmFjazsKLSsJCUVOR0lORV9jbGVhbnVwOwotKwkJRElTVF9QT0lOVF9pdDsKLSsJCU9DU1BfU0lOR0xFUkVTUF9pdDsKLSsJCWQyaV9LUkI1X1RLVEJPRFk7Ci0rCQlFQ19QT0lOVF9jbXA7Ci0rCQlPQ1NQX1JFVk9LRURJTkZPX25ldzsKLSsJCWkyZF9PQ1NQX0NFUlRTVEFUVVM7Ci0rCQlPQ1NQX2Jhc2ljX2FkZDFfbm9uY2U7Ci0rCQlBU04xX2l0ZW1fZXhfZDJpOwotKwkJQk5fbW9kX2xzaGlmdDFfcXVpY2s7Ci0rCQlVSV9zZXRfbWV0aG9kOwotKwkJT0NTUF9pZF9nZXQwX2luZm87Ci0rCQlCTl9tb2Rfc3FydDsKLSsJCUVDX0dST1VQX2NvcHk7Ci0rCQlLUkI1X0VOQ0RBVEFfZnJlZTsKLSsJCV9vc3NsX29sZF9kZXNfY2ZiX2VuY3J5cHQ7Ci0rCQlPQ1NQX1NJTkdMRVJFU1BfZ2V0X2V4dF9ieV9PQko7Ci0rCQlPQ1NQX2NlcnRfdG9faWQ7Ci0rCQlPQ1NQX1JFU1BJRF9uZXc7Ci0rCQlPQ1NQX1JFU1BEQVRBX2l0OwotKwkJZDJpX09DU1BfUkVTUERBVEE7Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfYWxsX2NvbXBsZXRlOwotKwkJT0NTUF9jaGVja192YWxpZGl0eTsKLSsJCVBLQ1MxMl9CQUdTX2l0OwotKwkJT0NTUF91cmxfc3ZjbG9jX25ldzsKLSsJCUFTTjFfdGVtcGxhdGVfZnJlZTsKLSsJCU9DU1BfU0lOR0xFUkVTUF9hZGRfZXh0OwotKwkJS1JCNV9BVVRIRU5UQk9EWV9pdDsKLSsJCVg1MDlfc3VwcG9ydGVkX2V4dGVuc2lvbjsKLSsJCWkyZF9LUkI1X0FVVEhEQVRBOwotKwkJVUlfbWV0aG9kX2dldF9vcGVuZXI7Ci0rCQlFTkdJTkVfc2V0X2V4X2RhdGE7Ci0rCQlPQ1NQX1JFUVVFU1RfcHJpbnQ7Ci0rCQlDQklHTlVNX2l0OwotKwkJS1JCNV9USUNLRVRfbmV3OwotKwkJS1JCNV9BUFJFUV9uZXc7Ci0rCQlFQ19HUk9VUF9nZXRfY3VydmVfR0ZwOwotKwkJS1JCNV9FTkNLRVlfbmV3OwotKwkJQVNOMV90ZW1wbGF0ZV9kMmk7Ci0rCQlfb3NzbF9vbGRfZGVzX3F1YWRfY2tzdW07Ci0rCQlPQ1NQX3NpbmdsZV9nZXQwX3N0YXR1czsKLSsJCUJOX3N3YXA7Ci0rCQlQT0xJQ1lJTkZPX2l0OwotKwkJRU5HSU5FX3NldF9kZXN0cm95X2Z1bmN0aW9uOwotKwkJYXNuMV9lbmNfZnJlZTsKLSsJCU9DU1BfUkVTUElEX2l0OwotKwkJRUNfR1JPVVBfbmV3OwotKwkJRVZQX2Flc18yNTZfY2JjOwotKwkJaTJkX0tSQjVfUFJJTkNOQU1FOwotKwkJX29zc2xfb2xkX2Rlc19lbmNyeXB0MjsKLSsJCV9vc3NsX29sZF9kZXNfZW5jcnlwdDM7Ci0rCQlQS0NTOF9QUklWX0tFWV9JTkZPX2l0OwotKwkJT0NTUF9SRVFJTkZPX2l0OwotKwkJUEJFUEFSQU1faXQ7Ci0rCQlLUkI1X0FVVEhFTlRCT0RZX25ldzsKLSsJCVg1MDlfQ1JMX2FkZDBfcmV2b2tlZDsKLSsJCUVESVBBUlRZTkFNRV9pdDsKLSsJCU5FVFNDQVBFX1NQS0lfaXQ7Ci0rCQlVSV9nZXQwX3Rlc3Rfc3RyaW5nOwotKwkJRU5HSU5FX2dldF9jaXBoZXJfZW5naW5lOwotKwkJRU5HSU5FX3JlZ2lzdGVyX2FsbF9jaXBoZXJzOwotKwkJRUNfUE9JTlRfY29weTsKLSsJCUJOX2tyb25lY2tlcjsKLSsJCV9vc3NsX29sZF9kZXNfZWRlM19vZmI2NF9lbmNyeXB0OwotKwkJX29zc2xfb2Rlc19lZGUzX29mYjY0X2VuY3J5cHQ7Ci0rCQlVSV9tZXRob2RfZ2V0X3JlYWRlcjsKLSsJCU9DU1BfQkFTSUNSRVNQX2dldF9leHRfY291bnQ7Ci0rCQlBU04xX0VOVU1FUkFURURfaXQ7Ci0rCQlVSV9zZXRfcmVzdWx0OwotKwkJaTJkX0tSQjVfVElDS0VUOwotKwkJWDUwOV9wcmludF9leF9mcDsKLSsJCUVWUF9DSVBIRVJfQ1RYX3NldF9wYWRkaW5nOwotKwkJZDJpX09DU1BfUkVTUE9OU0U7Ci0rCQlBU04xX1VUQ1RJTUVfaXQ7Ci0rCQlfb3NzbF9vbGRfZGVzX2VuY193cml0ZTsKLSsJCU9DU1BfUkVTUE9OU0VfbmV3OwotKwkJQUVTX3NldF9lbmNyeXB0X2tleTsKLSsJCU9DU1BfcmVzcF9jb3VudDsKLSsJCUtSQjVfQ0hFQ0tTVU1fbmV3OwotKwkJRU5HSU5FX2xvYWRfY3N3aWZ0OwotKwkJT0NTUF9vbmVyZXFfZ2V0MF9pZDsKLSsJCUVOR0lORV9zZXRfZGVmYXVsdF9jaXBoZXJzOwotKwkJTk9USUNFUkVGX2l0OwotKwkJWDUwOVYzX0VYVF9DUkxfYWRkX25jb25mOwotKwkJT0NTUF9SRVZPS0VESU5GT19pdDsKLSsJCUFFU19lbmNyeXB0OwotKwkJT0NTUF9SRVFVRVNUX25ldzsKLSsJCUFTTjFfQU5ZX2l0OwotKwkJQ1JZUFRPX2V4X2RhdGFfbmV3X2NsYXNzOwotKwkJX29zc2xfb2xkX2Rlc19uY2JjX2VuY3J5cHQ7Ci0rCQlpMmRfS1JCNV9US1RCT0RZOwotKwkJRUNfUE9JTlRfY2xlYXJfZnJlZTsKLSsJCUFFU19kZWNyeXB0OwotKwkJYXNuMV9lbmNfaW5pdDsKLSsJCVVJX2dldF9yZXN1bHRfbWF4c2l6ZTsKLSsJCU9DU1BfQ0VSVElEX25ldzsKLSsJCUVOR0lORV91bnJlZ2lzdGVyX1JBTkQ7Ci0rCQlVSV9tZXRob2RfZ2V0X2Nsb3NlcjsKLSsJCWQyaV9LUkI1X0VOQ0RBVEE7Ci0rCQlPQ1NQX3JlcXVlc3Rfb25lcmVxX2NvdW50OwotKwkJT0NTUF9iYXNpY192ZXJpZnk7Ci0rCQlLUkI1X0FVVEhFTlRCT0RZX2ZyZWU7Ci0rCQlBU04xX2l0ZW1fZDJpOwotKwkJQVNOMV9wcmltaXRpdmVfZnJlZTsKLSsJCWkyZF9FWFRFTkRFRF9LRVlfVVNBR0U7Ci0rCQlpMmRfT0NTUF9TSUdOQVRVUkU7Ci0rCQlhc24xX2VuY19zYXZlOwotKwkJRU5HSU5FX2xvYWRfbnVyb247Ci0rCQlfb3NzbF9vbGRfZGVzX3BjYmNfZW5jcnlwdDsKLSsJCVBLQ1MxMl9NQUNfREFUQV9pdDsKLSsJCU9DU1BfYWNjZXB0X3Jlc3BvbnNlc19uZXc7Ci0rCQlhc24xX2RvX2xvY2s7Ci0rCQlQS0NTN19BVFRSX1ZFUklGWV9pdDsKLSsJCUtSQjVfQVBSRVFCT0RZX2l0OwotKwkJaTJkX09DU1BfU0lOR0xFUkVTUDsKLSsJCUFTTjFfaXRlbV9leF9uZXc7Ci0rCQlVSV9hZGRfdmVyaWZ5X3N0cmluZzsKLSsJCV9vc3NsX29sZF9kZXNfc2V0X2tleTsKLSsJCUtSQjVfUFJJTkNOQU1FX2l0OwotKwkJRVZQX0RlY3J5cHRJbml0X2V4OwotKwkJaTJkX09DU1BfQ0VSVElEOwotKwkJQVNOMV9pdGVtX2QyaV9iaW87Ci0rCQlFQ19QT0lOVF9kYmw7Ci0rCQlhc24xX2dldF9jaG9pY2Vfc2VsZWN0b3I7Ci0rCQlpMmRfS1JCNV9DSEVDS1NVTTsKLSsJCUVOR0lORV9zZXRfdGFibGVfZmxhZ3M7Ci0rCQlBRVNfb3B0aW9uczsKLSsJCUVOR0lORV9sb2FkX2NoaWw7Ci0rCQlPQ1NQX2lkX2NtcDsKLSsJCU9DU1BfQkFTSUNSRVNQX25ldzsKLSsJCU9DU1BfUkVRVUVTVF9nZXRfZXh0X2J5X05JRDsKLSsJCUtSQjVfQVBSRVFfaXQ7Ci0rCQlFTkdJTkVfZ2V0X2Rlc3Ryb3lfZnVuY3Rpb247Ci0rCQlDT05GX3NldF9uY29uZjsKLSsJCUFTTjFfUFJJTlRBQkxFX2ZyZWU7Ci0rCQlPQ1NQX0JBU0lDUkVTUF9nZXRfZXh0X2J5X05JRDsKLSsJCURJU1RfUE9JTlRfTkFNRV9pdDsKLSsJCVg1MDlWM19leHRlbnNpb25zX3ByaW50OwotKwkJX29zc2xfb2xkX2Rlc19jZmI2NF9lbmNyeXB0OwotKwkJWDUwOV9SRVZPS0VEX2FkZDFfZXh0X2kyZDsKLSsJCV9vc3NsX29sZF9kZXNfb2ZiX2VuY3J5cHQ7Ci0rCQlLUkI1X1RLVEJPRFlfbmV3OwotKwkJQVNOMV9PQ1RFVF9TVFJJTkdfaXQ7Ci0rCQlFUlJfbG9hZF9VSV9zdHJpbmdzOwotKwkJaTJkX0tSQjVfRU5DS0VZOwotKwkJQVNOMV90ZW1wbGF0ZV9uZXc7Ci0rCQlPQ1NQX1NJR05BVFVSRV9mcmVlOwotKwkJQVNOMV9pdGVtX2kyZF9mcDsKLSsJCUtSQjVfUFJJTkNOQU1FX2ZyZWU7Ci0rCQlQS0NTN19SRUNJUF9JTkZPX2l0OwotKwkJRVhURU5ERURfS0VZX1VTQUdFX2l0OwotKwkJRUNfR0ZwX3NpbXBsZV9tZXRob2Q7Ci0rCQlFQ19HUk9VUF9wcmVjb21wdXRlX211bHQ7Ci0rCQlPQ1NQX3JlcXVlc3Rfb25lcmVxX2dldDA7Ci0rCQlVSV9tZXRob2Rfc2V0X3dyaXRlcjsKLSsJCUtSQjVfQVVUSEVOVF9uZXc7Ci0rCQlYNTA5X0NSTF9JTkZPX2l0OwotKwkJRFNPX3NldF9uYW1lX2NvbnZlcnRlcjsKLSsJCUFFU19zZXRfZGVjcnlwdF9rZXk7Ci0rCQlQS0NTN19ESUdFU1RfaXQ7Ci0rCQlQS0NTMTJfeDUwOTJjZXJ0YmFnOwotKwkJRVZQX0RpZ2VzdEluaXRfZXg7Ci0rCQlpMmFfQUNDRVNTX0RFU0NSSVBUSU9OOwotKwkJT0NTUF9SRVNQT05TRV9pdDsKLSsJCVBLQ1M3X0VOQ19DT05URU5UX2l0OwotKwkJT0NTUF9yZXF1ZXN0X2FkZDBfaWQ7Ci0rCQlFQ19QT0lOVF9tYWtlX2FmZmluZTsKLSsJCURTT19nZXRfZmlsZW5hbWU7Ci0rCQlPQ1NQX0NFUlRTVEFUVVNfaXQ7Ci0rCQlPQ1NQX3JlcXVlc3RfYWRkMV9jZXJ0OwotKwkJVUlfZ2V0MF9vdXRwdXRfc3RyaW5nOwotKwkJVUlfZHVwX3ZlcmlmeV9zdHJpbmc7Ci0rCQlCTl9tb2RfbHNoaWZ0OwotKwkJS1JCNV9BVVRIREFUQV9pdDsKLSsJCWFzbjFfc2V0X2Nob2ljZV9zZWxlY3RvcjsKLSsJCU9DU1BfYmFzaWNfYWRkMV9zdGF0dXM7Ci0rCQlPQ1NQX1JFU1BJRF9mcmVlOwotKwkJYXNuMV9nZXRfZmllbGRfcHRyOwotKwkJVUlfYWRkX2lucHV0X3N0cmluZzsKLSsJCU9DU1BfQ1JMSURfaXQ7Ci0rCQlpMmRfS1JCNV9BVVRIRU5UQk9EWTsKLSsJCU9DU1BfUkVRVUVTVF9nZXRfZXh0X2NvdW50OwotKwkJRU5HSU5FX2xvYWRfYXRhbGxhOwotKwkJWDUwOV9OQU1FX2l0OwotKwkJVVNFUk5PVElDRV9pdDsKLSsJCU9DU1BfUkVRSU5GT19uZXc7Ci0rCQlPQ1NQX0JBU0lDUkVTUF9nZXRfZXh0OwotKwkJQ1JZUFRPX2dldF9leF9kYXRhX2ltcGxlbWVudGF0aW9uOwotKwkJQ1JZUFRPX2dldF9leF9kYXRhX2ltcGw7Ci0rCQlBU04xX2l0ZW1fcGFjazsKLSsJCWkyZF9LUkI1X0VOQ0RBVEE7Ci0rCQlYNTA5X1BVUlBPU0Vfc2V0OwotKwkJWDUwOV9SRVFfSU5GT19pdDsKLSsJCVVJX21ldGhvZF9zZXRfb3BlbmVyOwotKwkJQVNOMV9pdGVtX2V4X2ZyZWU7Ci0rCQlBU04xX0JPT0xFQU5faXQ7Ci0rCQlFTkdJTkVfZ2V0X3RhYmxlX2ZsYWdzOwotKwkJVUlfY3JlYXRlX21ldGhvZDsKLSsJCU9DU1BfT05FUkVRX2FkZDFfZXh0X2kyZDsKLSsJCV9zaGFkb3dfREVTX2NoZWNrX2tleTsKLSsJCWQyaV9PQ1NQX1JFUUlORk87Ci0rCQlVSV9hZGRfaW5mb19zdHJpbmc7Ci0rCQlVSV9nZXRfcmVzdWx0X21pbnNpemU7Ci0rCQlBU04xX05VTExfaXQ7Ci0rCQlCTl9tb2RfbHNoaWZ0MTsKLSsJCWQyaV9PQ1NQX09ORVJFUTsKLSsJCU9DU1BfT05FUkVRX25ldzsKLSsJCUtSQjVfVElDS0VUX2l0OwotKwkJRVZQX2Flc18xOTJfY2JjOwotKwkJS1JCNV9USUNLRVRfZnJlZTsKLSsJCVVJX25ldzsKLSsJCU9DU1BfcmVzcG9uc2VfY3JlYXRlOwotKwkJX29zc2xfb2xkX2Rlc194Y2JjX2VuY3J5cHQ7Ci0rCQlQS0NTN19pdDsKLSsJCU9DU1BfUkVRVUVTVF9nZXRfZXh0X2J5X2NyaXRpY2FsOwotKwkJT0NTUF9SRVFVRVNUX2dldF9leHRfYnlfY3JpdDsKLSsJCUVOR0lORV9zZXRfZmxhZ3M7Ci0rCQlfb3NzbF9vbGRfZGVzX2VjYl9lbmNyeXB0OwotKwkJT0NTUF9yZXNwb25zZV9nZXQxX2Jhc2ljOwotKwkJRVZQX0RpZ2VzdDsKLSsJCU9DU1BfT05FUkVRX2RlbGV0ZV9leHQ7Ci0rCQlBU04xX1RCT09MRUFOX2l0OwotKwkJQVNOMV9pdGVtX25ldzsKLSsJCUFTTjFfVElNRV90b19nZW5lcmFsaXplZHRpbWU7Ci0rCQlCSUdOVU1faXQ7Ci0rCQlBRVNfY2JjX2VuY3J5cHQ7Ci0rCQlFTkdJTkVfZ2V0X2xvYWRfcHJpdmtleV9mdW5jdGlvbjsKLSsJCUVOR0lORV9nZXRfbG9hZF9wcml2a2V5X2ZuOwotKwkJT0NTUF9SRVNQT05TRV9mcmVlOwotKwkJVUlfbWV0aG9kX3NldF9yZWFkZXI7Ci0rCQlpMmRfQVNOMV9UNjFTVFJJTkc7Ci0rCQlFQ19QT0lOVF9zZXRfdG9faW5maW5pdHk7Ci0rCQlFUlJfbG9hZF9PQ1NQX3N0cmluZ3M7Ci0rCQlFQ19QT0lOVF9wb2ludDJvY3Q7Ci0rCQlLUkI1X0FQUkVRX2ZyZWU7Ci0rCQlBU04xX09CSkVDVF9pdDsKLSsJCU9DU1BfY3JsSURfbmV3OwotKwkJT0NTUF9jcmxJRDJfbmV3OwotKwkJQ09ORl9tb2R1bGVzX2xvYWRfZmlsZTsKLSsJCUNPTkZfaW1vZHVsZV9zZXRfdXNyX2RhdGE7Ci0rCQlFTkdJTkVfc2V0X2RlZmF1bHRfc3RyaW5nOwotKwkJQ09ORl9tb2R1bGVfZ2V0X3Vzcl9kYXRhOwotKwkJQVNOMV9hZGRfb2lkX21vZHVsZTsKLSsJCUNPTkZfbW9kdWxlc19maW5pc2g7Ci0rCQlPUEVOU1NMX2NvbmZpZzsKLSsJCUNPTkZfbW9kdWxlc191bmxvYWQ7Ci0rCQlDT05GX2ltb2R1bGVfZ2V0X3ZhbHVlOwotKwkJQ09ORl9tb2R1bGVfc2V0X3Vzcl9kYXRhOwotKwkJQ09ORl9wYXJzZV9saXN0OwotKwkJQ09ORl9tb2R1bGVfYWRkOwotKwkJQ09ORl9nZXQxX2RlZmF1bHRfY29uZmlnX2ZpbGU7Ci0rCQlDT05GX2ltb2R1bGVfZ2V0X2ZsYWdzOwotKwkJQ09ORl9pbW9kdWxlX2dldF9tb2R1bGU7Ci0rCQlDT05GX21vZHVsZXNfbG9hZDsKLSsJCUNPTkZfaW1vZHVsZV9nZXRfbmFtZTsKLSsJCUVSUl9wZWVrX3RvcF9lcnJvcjsKLSsJCUNPTkZfaW1vZHVsZV9nZXRfdXNyX2RhdGE7Ci0rCQlDT05GX2ltb2R1bGVfc2V0X2ZsYWdzOwotKwkJRU5HSU5FX2FkZF9jb25mX21vZHVsZTsKLSsJCUVSUl9wZWVrX2xhc3RfZXJyb3JfbGluZTsKLSsJCUVSUl9wZWVrX2xhc3RfZXJyb3JfbGluZV9kYXRhOwotKwkJRVJSX3BlZWtfbGFzdF9lcnJvcjsKLSsJCURFU19yZWFkXzJwYXNzd29yZHM7Ci0rCQlERVNfcmVhZF9wYXNzd29yZDsKLSsJCVVJX1VUSUxfcmVhZF9wdzsKLSsJCVVJX1VUSUxfcmVhZF9wd19zdHJpbmc7Ci0rCQlFTkdJTkVfbG9hZF9hZXA7Ci0rCQlFTkdJTkVfbG9hZF9zdXJld2FyZTsKLSsJCU9QRU5TU0xfYWRkX2FsbF9hbGdvcml0aG1zX25vY29uZjsKLSsJCU9QRU5TU0xfYWRkX2FsbF9hbGdvX25vY29uZjsKLSsJCU9QRU5TU0xfYWRkX2FsbF9hbGdvcml0aG1zX2NvbmY7Ci0rCQlPUEVOU1NMX2FkZF9hbGxfYWxnb19jb25mOwotKwkJT1BFTlNTTF9sb2FkX2J1aWx0aW5fbW9kdWxlczsKLSsJCUFFU19vZmIxMjhfZW5jcnlwdDsKLSsJCUFFU19jdHIxMjhfZW5jcnlwdDsKLSsJCUFFU19jZmIxMjhfZW5jcnlwdDsKLSsJCUVOR0lORV9sb2FkXzQ3NThjY2E7Ci0rCQlfb3NzbF8wOTZfZGVzX3JhbmRvbV9zZWVkOwotKwkJRVZQX2Flc18yNTZfb2ZiOwotKwkJRVZQX2Flc18xOTJfb2ZiOwotKwkJRVZQX2Flc18xMjhfY2ZiMTI4OwotKwkJRVZQX2Flc18yNTZfY2ZiMTI4OwotKwkJRVZQX2Flc18xMjhfb2ZiOwotKwkJRVZQX2Flc18xOTJfY2ZiMTI4OwotKwkJQ09ORl9tb2R1bGVzX2ZyZWU7Ci0rCQlOQ09ORl9kZWZhdWx0OwotKwkJT1BFTlNTTF9ub19jb25maWc7Ci0rCQlOQ09ORl9XSU4zMjsKLSsJCUFTTjFfVU5JVkVSU0FMU1RSSU5HX25ldzsKLSsJCUVWUF9kZXNfZWRlX2VjYjsKLSsJCWkyZF9BU04xX1VOSVZFUlNBTFNUUklORzsKLSsJCUFTTjFfVU5JVkVSU0FMU1RSSU5HX2ZyZWU7Ci0rCQlBU04xX1VOSVZFUlNBTFNUUklOR19pdDsKLSsJCWQyaV9BU04xX1VOSVZFUlNBTFNUUklORzsKLSsJCUVWUF9kZXNfZWRlM19lY2I7Ci0rCQlYNTA5X1JFUV9wcmludF9leDsKLSsJCUVOR0lORV91cF9yZWY7Ci0rCQlCVUZfTUVNX2dyb3dfY2xlYW47Ci0rCQlDUllQVE9fcmVhbGxvY19jbGVhbjsKLSsJCUJVRl9zdHJsY2F0OwotKwkJQklPX2luZGVudDsKLSsJCUJVRl9zdHJsY3B5OwotKwkJT3BlblNTTERpZTsKLSsJCU9QRU5TU0xfY2xlYW5zZTsKLSsJCUVOR0lORV9zZXR1cF9ic2RfY3J5cHRvZGV2OwotKwkJRVJSX3JlbGVhc2VfZXJyX3N0YXRlX3RhYmxlOwotKwkJRVZQX2Flc18xMjhfY2ZiODsKLSsJCUZJUFNfY29ycnVwdF9yc2E7Ci0rCQlGSVBTX3NlbGZ0ZXN0X2RlczsKLSsJCUVWUF9hZXNfMTI4X2NmYjE7Ci0rCQlFVlBfYWVzXzE5Ml9jZmI4OwotKwkJRklQU19tb2RlX3NldDsKLSsJCUZJUFNfc2VsZnRlc3RfZHNhOwotKwkJRVZQX2Flc18yNTZfY2ZiODsKLSsJCUZJUFNfYWxsb3dfbWQ1OwotKwkJREVTX2VkZTNfY2ZiX2VuY3J5cHQ7Ci0rCQlFVlBfZGVzX2VkZTNfY2ZiODsKLSsJCUZJUFNfcmFuZF9zZWVkZWQ7Ci0rCQlBRVNfY2Zicl9lbmNyeXB0X2Jsb2NrOwotKwkJQUVTX2NmYjhfZW5jcnlwdDsKLSsJCUZJUFNfcmFuZF9zZWVkOwotKwkJRklQU19jb3JydXB0X2RlczsKLSsJCUVWUF9hZXNfMTkyX2NmYjE7Ci0rCQlGSVBTX3NlbGZ0ZXN0X2FlczsKLSsJCUZJUFNfc2V0X3Bybmdfa2V5OwotKwkJRVZQX2Rlc19jZmI4OwotKwkJRklQU19jb3JydXB0X2RzYTsKLSsJCUZJUFNfdGVzdF9tb2RlOwotKwkJRklQU19yYW5kX21ldGhvZDsKLSsJCUVWUF9hZXNfMjU2X2NmYjE7Ci0rCQlFUlJfbG9hZF9GSVBTX3N0cmluZ3M7Ci0rCQlGSVBTX2NvcnJ1cHRfYWVzOwotKwkJRklQU19zZWxmdGVzdF9zaGExOwotKwkJRklQU19zZWxmdGVzdF9yc2E7Ci0rCQlGSVBTX2NvcnJ1cHRfc2hhMTsKLSsJCUVWUF9kZXNfY2ZiMTsKLSsJCUZJUFNfZHNhX2NoZWNrOwotKwkJQUVTX2NmYjFfZW5jcnlwdDsKLSsJCUVWUF9kZXNfZWRlM19jZmIxOwotKwkJRklQU19yYW5kX2NoZWNrOwotKwkJRklQU19tZDVfYWxsb3dlZDsKLSsJCUZJUFNfbW9kZTsKLSsJCUZJUFNfc2VsZnRlc3RfZmFpbGVkOwotKwkJc2tfaXNfc29ydGVkOwotKwkJWDUwOV9jaGVja19jYTsKLSsJCUhNQUNfQ1RYX3NldF9mbGFnczsKLSsJCWQyaV9QUk9YWV9DRVJUX0lORk9fRVhURU5TSU9OOwotKwkJUFJPWFlfUE9MSUNZX2l0OwotKwkJaTJkX1BST1hZX1BPTElDWTsKLSsJCWkyZF9QUk9YWV9DRVJUX0lORk9fRVhURU5TSU9OOwotKwkJZDJpX1BST1hZX1BPTElDWTsKLSsJCVBST1hZX0NFUlRfSU5GT19FWFRFTlNJT05fbmV3OwotKwkJUFJPWFlfQ0VSVF9JTkZPX0VYVEVOU0lPTl9mcmVlOwotKwkJUFJPWFlfQ0VSVF9JTkZPX0VYVEVOU0lPTl9pdDsKLSsJCVBST1hZX1BPTElDWV9mcmVlOwotKwkJUFJPWFlfUE9MSUNZX25ldzsKLSsJCUJOX01PTlRfQ1RYX3NldF9sb2NrZWQ7Ci0rCQlGSVBTX3NlbGZ0ZXN0X3JuZzsKLSsJCUVWUF9zaGEzODQ7Ci0rCQlFVlBfc2hhNTEyOwotKwkJRVZQX3NoYTIyNDsKLSsJCUVWUF9zaGEyNTY7Ci0rCQlGSVBTX3NlbGZ0ZXN0X2htYWM7Ci0rCQlGSVBTX2NvcnJ1cHRfcm5nOwotKwkJQk5fbW9kX2V4cF9tb250X2NvbnN0dGltZTsKLSsJCVJTQV9YOTMxX2hhc2hfaWQ7Ci0rCQlSU0FfcGFkZGluZ19jaGVja19YOTMxOwotKwkJUlNBX3ZlcmlmeV9QS0NTMV9QU1M7Ci0rCQlSU0FfcGFkZGluZ19hZGRfWDkzMTsKLSsJCVJTQV9wYWRkaW5nX2FkZF9QS0NTMV9QU1M7Ci0rCQlQS0NTMV9NR0YxOwotKwkJQk5fWDkzMV9nZW5lcmF0ZV9YcHE7Ci0rCQlSU0FfWDkzMV9nZW5lcmF0ZV9rZXk7Ci0rCQlCTl9YOTMxX2Rlcml2ZV9wcmltZTsKLSsJCUJOX1g5MzFfZ2VuZXJhdGVfcHJpbWU7Ci0rCQlSU0FfWDkzMV9kZXJpdmU7Ci0rCQlCSU9fbmV3X2RncmFtOwotKwkJQk5fZ2V0MF9uaXN0X3ByaW1lXzM4NDsKLSsJCUVSUl9zZXRfbWFyazsKLSsJCVg1MDlfU1RPUkVfQ1RYX3NldDBfY3JsczsKLSsJCUVOR0lORV9zZXRfU1RPUkU7Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfRUNEU0E7Ci0rCQlTVE9SRV9tZXRoX3NldF9saXN0X3N0YXJ0X2ZuOwotKwkJU1RPUkVfbWV0aG9kX3NldF9saXN0X3N0YXJ0X2Z1bmN0aW9uOwotKwkJQk5fQkxJTkRJTkdfaW52ZXJ0X2V4OwotKwkJTkFNRV9DT05TVFJBSU5UU19mcmVlOwotKwkJU1RPUkVfQVRUUl9JTkZPX3NldF9udW1iZXI7Ci0rCQlCTl9CTElORElOR19nZXRfdGhyZWFkX2lkOwotKwkJWDUwOV9TVE9SRV9DVFhfc2V0MF9wYXJhbTsKLSsJCVBPTElDWV9NQVBQSU5HX2l0OwotKwkJU1RPUkVfcGFyc2VfYXR0cnNfc3RhcnQ7Ci0rCQlQT0xJQ1lfQ09OU1RSQUlOVFNfZnJlZTsKLSsJCUVWUF9QS0VZX2FkZDFfYXR0cl9ieV9OSUQ7Ci0rCQlCTl9uaXN0X21vZF8xOTI7Ci0rCQlFQ19HUk9VUF9nZXRfdHJpbm9taWFsX2Jhc2lzOwotKwkJU1RPUkVfc2V0X21ldGhvZDsKLSsJCUdFTkVSQUxfU1VCVFJFRV9mcmVlOwotKwkJTkFNRV9DT05TVFJBSU5UU19pdDsKLSsJCUVDREhfZ2V0X2RlZmF1bHRfbWV0aG9kOwotKwkJUEtDUzEyX2FkZF9zYWZlOwotKwkJRUNfS0VZX25ld19ieV9jdXJ2ZV9uYW1lOwotKwkJU1RPUkVfbWV0aF9nZXRfdXBkYXRlX3N0b3JlX2ZuOwotKwkJU1RPUkVfbWV0aG9kX2dldF91cGRhdGVfc3RvcmVfZnVuY3Rpb247Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfRUNESDsKLSsJCVNIQTUxMl9VcGRhdGU7Ci0rCQlpMmRfRUNQcml2YXRlS2V5OwotKwkJQk5fZ2V0MF9uaXN0X3ByaW1lXzE5MjsKLSsJCVNUT1JFX21vZGlmeV9jZXJ0aWZpY2F0ZTsKLSsJCUVDX1BPSU5UX3NldF9hZmZpbmVfY29vcmRpbmF0ZXNfR0YybTsKLSsJCUVDX1BPSU5UX3NldF9hZmZpbmVfY29vcmRzX0dGMm07Ci0rCQlCTl9HRjJtX21vZF9leHBfYXJyOwotKwkJU1RPUkVfQVRUUl9JTkZPX21vZGlmeV9udW1iZXI7Ci0rCQlYNTA5X2tleWlkX2dldDA7Ci0rCQlFTkdJTkVfbG9hZF9nbXA7Ci0rCQlwaXRlbV9uZXc7Ci0rCQlCTl9HRjJtX21vZF9tdWxfYXJyOwotKwkJU1RPUkVfbGlzdF9wdWJsaWNfa2V5X2VuZHA7Ci0rCQlvMmlfRUNQdWJsaWNLZXk7Ci0rCQlFQ19LRVlfY29weTsKLSsJCUJJT19kdW1wX2ZwOwotKwkJWDUwOV9wb2xpY3lfbm9kZV9nZXQwX3BhcmVudDsKLSsJCUVDX0dST1VQX2NoZWNrX2Rpc2NyaW1pbmFudDsKLSsJCWkyb19FQ1B1YmxpY0tleTsKLSsJCUVDX0tFWV9wcmVjb21wdXRlX211bHQ7Ci0rCQlhMmlfSVBBRERSRVNTOwotKwkJU1RPUkVfbWV0aF9zZXRfaW5pdGlhbGlzZV9mbjsKLSsJCVNUT1JFX21ldGhvZF9zZXRfaW5pdGlhbGlzZV9mdW5jdGlvbjsKLSsJCVg1MDlfU1RPUkVfQ1RYX3NldF9kZXB0aDsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX2luaGVyaXQ7Ci0rCQlFQ19QT0lOVF9wb2ludDJibjsKLSsJCVNUT1JFX0FUVFJfSU5GT19zZXRfZG47Ci0rCQlYNTA5X3BvbGljeV90cmVlX2dldDBfcG9saWNpZXM7Ci0rCQlFQ19HUk9VUF9uZXdfY3VydmVfR0YybTsKLSsJCVNUT1JFX2Rlc3Ryb3lfbWV0aG9kOwotKwkJRU5HSU5FX3VucmVnaXN0ZXJfU1RPUkU7Ci0rCQlFVlBfUEtFWV9nZXQxX0VDX0tFWTsKLSsJCVNUT1JFX0FUVFJfSU5GT19nZXQwX251bWJlcjsKLSsJCUVOR0lORV9nZXRfZGVmYXVsdF9FQ0RIOwotKwkJRUNfS0VZX2dldF9jb252X2Zvcm07Ci0rCQlBU04xX09DVEVUX1NUUklOR19OREVGX2l0OwotKwkJU1RPUkVfZGVsZXRlX3B1YmxpY19rZXk7Ci0rCQlTVE9SRV9nZXRfcHVibGljX2tleTsKLSsJCVNUT1JFX21vZGlmeV9hcmJpdHJhcnk7Ci0rCQlFTkdJTkVfZ2V0X3N0YXRpY19zdGF0ZTsKLSsJCXBxdWV1ZV9pdGVyYXRvcjsKLSsJCUVDRFNBX1NJR19uZXc7Ci0rCQlPUEVOU1NMX0RJUl9lbmQ7Ci0rCQlCTl9HRjJtX21vZF9zcXI7Ci0rCQlFQ19QT0lOVF9ibjJwb2ludDsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX3NldF9kZXB0aDsKLSsJCUVDX0tFWV9zZXRfYXNuMV9mbGFnOwotKwkJU1RPUkVfZ2V0X21ldGhvZDsKLSsJCUVDX0tFWV9nZXRfa2V5X21ldGhvZF9kYXRhOwotKwkJRUNEU0Ffc2lnbl9leDsKLSsJCVNUT1JFX3BhcnNlX2F0dHJzX2VuZDsKLSsJCUVDX0dST1VQX2dldF9wb2ludF9jb252ZXJzaW9uX2Zvcm07Ci0rCQlFQ19HUk9VUF9nZXRfcG9pbnRfY29udl9mb3JtOwotKwkJU1RPUkVfbWV0aG9kX3NldF9zdG9yZV9mdW5jdGlvbjsKLSsJCVNUT1JFX0FUVFJfSU5GT19pbjsKLSsJCVBFTV9yZWFkX2Jpb19FQ1BLUGFyYW1ldGVyczsKLSsJCUVDX0dST1VQX2dldF9wZW50YW5vbWlhbF9iYXNpczsKLSsJCUVWUF9QS0VZX2FkZDFfYXR0cl9ieV90eHQ7Ci0rCQlCTl9CTElORElOR19zZXRfZmxhZ3M7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXQxX3BvbGljaWVzOwotKwkJWDUwOV9WRVJJRllfUEFSQU1fc2V0MV9uYW1lOwotKwkJWDUwOV9WRVJJRllfUEFSQU1fc2V0X3B1cnBvc2U7Ci0rCQlTVE9SRV9nZXRfbnVtYmVyOwotKwkJRUNEU0Ffc2lnbl9zZXR1cDsKLSsJCUJOX0dGMm1fbW9kX3NvbHZlX3F1YWRfYXJyOwotKwkJRUNfS0VZX3VwX3JlZjsKLSsJCVBPTElDWV9NQVBQSU5HX2ZyZWU7Ci0rCQlCTl9HRjJtX21vZF9kaXY7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXRfZmxhZ3M7Ci0rCQlFQ19LRVlfZnJlZTsKLSsJCVNUT1JFX21ldGhfc2V0X2xpc3RfbmV4dF9mbjsKLSsJCVNUT1JFX21ldGhvZF9zZXRfbGlzdF9uZXh0X2Z1bmN0aW9uOwotKwkJUEVNX3dyaXRlX2Jpb19FQ1ByaXZhdGVLZXk7Ci0rCQlkMmlfRUNfUFVCS0VZOwotKwkJU1RPUkVfbWV0aF9nZXRfZ2VuZXJhdGVfZm47Ci0rCQlTVE9SRV9tZXRob2RfZ2V0X2dlbmVyYXRlX2Z1bmN0aW9uOwotKwkJU1RPUkVfbWV0aF9zZXRfbGlzdF9lbmRfZm47Ci0rCQlTVE9SRV9tZXRob2Rfc2V0X2xpc3RfZW5kX2Z1bmN0aW9uOwotKwkJcHF1ZXVlX3ByaW50OwotKwkJRUNfR1JPVVBfaGF2ZV9wcmVjb21wdXRlX211bHQ7Ci0rCQlFQ19LRVlfcHJpbnRfZnA7Ci0rCQlCTl9HRjJtX21vZF9hcnI7Ci0rCQlQRU1fd3JpdGVfYmlvX1g1MDlfQ0VSVF9QQUlSOwotKwkJRVZQX1BLRVlfY21wOwotKwkJWDUwOV9wb2xpY3lfbGV2ZWxfbm9kZV9jb3VudDsKLSsJCVNUT1JFX25ld19lbmdpbmU7Ci0rCQlTVE9SRV9saXN0X3B1YmxpY19rZXlfc3RhcnQ7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9uZXc7Ci0rCQlFQ0RIX2dldF9leF9kYXRhOwotKwkJRVZQX1BLRVlfZ2V0X2F0dHI7Ci0rCQlFQ0RTQV9kb19zaWduOwotKwkJRU5HSU5FX3VucmVnaXN0ZXJfRUNESDsKLSsJCUVDREhfT3BlblNTTDsKLSsJCUVDX0tFWV9zZXRfY29udl9mb3JtOwotKwkJRUNfUE9JTlRfZHVwOwotKwkJR0VORVJBTF9TVUJUUkVFX25ldzsKLSsJCVNUT1JFX2xpc3RfY3JsX2VuZHA7Ci0rCQlFQ19nZXRfYnVpbHRpbl9jdXJ2ZXM7Ci0rCQlYNTA5X3BvbGljeV9ub2RlX2dldDBfcXVhbGlmaWVyczsKLSsJCVg1MDlfcGN5X25vZGVfZ2V0MF9xdWFsaWZpZXJzOwotKwkJU1RPUkVfbGlzdF9jcmxfZW5kOwotKwkJRVZQX1BLRVlfc2V0MV9FQ19LRVk7Ci0rCQlCTl9HRjJtX21vZF9zcXJ0X2FycjsKLSsJCWkyZF9FQ1ByaXZhdGVLZXlfYmlvOwotKwkJRUNQS1BhcmFtZXRlcnNfcHJpbnRfZnA7Ci0rCQlwcXVldWVfZmluZDsKLSsJCUVDRFNBX1NJR19mcmVlOwotKwkJUEVNX3dyaXRlX2Jpb19FQ1BLUGFyYW1ldGVyczsKLSsJCVNUT1JFX21ldGhvZF9zZXRfY3RybF9mdW5jdGlvbjsKLSsJCVNUT1JFX2xpc3RfcHVibGljX2tleV9lbmQ7Ci0rCQlFQ19LRVlfc2V0X3ByaXZhdGVfa2V5OwotKwkJcHF1ZXVlX3BlZWs7Ci0rCQlTVE9SRV9nZXRfYXJiaXRyYXJ5OwotKwkJU1RPUkVfc3RvcmVfY3JsOwotKwkJWDUwOV9wb2xpY3lfbm9kZV9nZXQwX3BvbGljeTsKLSsJCVBLQ1MxMl9hZGRfc2FmZXM7Ci0rCQlCTl9CTElORElOR19jb252ZXJ0X2V4OwotKwkJWDUwOV9wb2xpY3lfdHJlZV9mcmVlOwotKwkJT1BFTlNTTF9pYTMyY2FwX2xvYzsKLSsJCUJOX0dGMm1fcG9seTJhcnI7Ci0rCQlTVE9SRV9jdHJsOwotKwkJU1RPUkVfQVRUUl9JTkZPX2NvbXBhcmU7Ci0rCQlCTl9nZXQwX25pc3RfcHJpbWVfMjI0OwotKwkJaTJkX0VDUGFyYW1ldGVyczsKLSsJCWkyZF9FQ1BLUGFyYW1ldGVyczsKLSsJCUJOX0dFTkNCX2NhbGw7Ci0rCQlkMmlfRUNQS1BhcmFtZXRlcnM7Ci0rCQlTVE9SRV9tZXRoX3NldF9nZW5lcmF0ZV9mbjsKLSsJCVNUT1JFX21ldGhvZF9zZXRfZ2VuZXJhdGVfZnVuY3Rpb247Ci0rCQlFTkdJTkVfc2V0X0VDREg7Ci0rCQlOQU1FX0NPTlNUUkFJTlRTX25ldzsKLSsJCVNIQTI1Nl9Jbml0OwotKwkJRUNfS0VZX2dldDBfcHVibGljX2tleTsKLSsJCVBFTV93cml0ZV9iaW9fRUNfUFVCS0VZOwotKwkJU1RPUkVfQVRUUl9JTkZPX3NldF9jc3RyOwotKwkJU1RPUkVfbGlzdF9jcmxfbmV4dDsKLSsJCVNUT1JFX0FUVFJfSU5GT19pbl9yYW5nZTsKLSsJCUVDUGFyYW1ldGVyc19wcmludDsKLSsJCVNUT1JFX21ldGhfc2V0X2RlbGV0ZV9mbjsKLSsJCVNUT1JFX21ldGhvZF9zZXRfZGVsZXRlX2Z1bmN0aW9uOwotKwkJU1RPUkVfbGlzdF9jZXJ0aWZpY2F0ZV9uZXh0OwotKwkJQVNOMV9nZW5lcmF0ZV9uY29uZjsKLSsJCUJVRl9tZW1kdXA7Ci0rCQlCTl9HRjJtX21vZF9tdWw7Ci0rCQlTVE9SRV9tZXRoX2dldF9saXN0X25leHRfZm47Ci0rCQlTVE9SRV9tZXRob2RfZ2V0X2xpc3RfbmV4dF9mdW5jdGlvbjsKLSsJCVNUT1JFX0FUVFJfSU5GT19nZXQwX2RuOwotKwkJU1RPUkVfbGlzdF9wcml2YXRlX2tleV9uZXh0OwotKwkJRUNfR1JPVVBfc2V0X3NlZWQ7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXRfdHJ1c3Q7Ci0rCQlTVE9SRV9BVFRSX0lORk9fZnJlZTsKLSsJCVNUT1JFX2dldF9wcml2YXRlX2tleTsKLSsJCUVWUF9QS0VZX2dldF9hdHRyX2NvdW50OwotKwkJU1RPUkVfQVRUUl9JTkZPX25ldzsKLSsJCUVDX0dST1VQX2dldF9jdXJ2ZV9HRjJtOwotKwkJU1RPUkVfbWV0aF9zZXRfcmV2b2tlX2ZuOwotKwkJU1RPUkVfbWV0aG9kX3NldF9yZXZva2VfZnVuY3Rpb247Ci0rCQlTVE9SRV9zdG9yZV9udW1iZXI7Ci0rCQlCTl9pc19wcmltZV9leDsKLSsJCVNUT1JFX3Jldm9rZV9wdWJsaWNfa2V5OwotKwkJWDUwOV9TVE9SRV9DVFhfZ2V0MF9wYXJhbTsKLSsJCVNUT1JFX2RlbGV0ZV9hcmJpdHJhcnk7Ci0rCQlQRU1fcmVhZF9YNTA5X0NFUlRfUEFJUjsKLSsJCVg1MDlfU1RPUkVfc2V0X2RlcHRoOwotKwkJRUNEU0FfZ2V0X2V4X2RhdGE7Ci0rCQlTSEEyMjQ7Ci0rCQlCSU9fZHVtcF9pbmRlbnRfZnA7Ci0rCQlFQ19LRVlfc2V0X2dyb3VwOwotKwkJQlVGX3N0cm5kdXA7Ci0rCQlTVE9SRV9saXN0X2NlcnRpZmljYXRlX3N0YXJ0OwotKwkJQk5fR0YybV9tb2Q7Ci0rCQlYNTA5X1JFUV9jaGVja19wcml2YXRlX2tleTsKLSsJCUVDX0dST1VQX2dldF9zZWVkX2xlbjsKLSsJCUVSUl9sb2FkX1NUT1JFX3N0cmluZ3M7Ci0rCQlQRU1fcmVhZF9iaW9fRUNfUFVCS0VZOwotKwkJU1RPUkVfbGlzdF9wcml2YXRlX2tleV9lbmQ7Ci0rCQlpMmRfRUNfUFVCS0VZOwotKwkJRUNEU0FfZ2V0X2RlZmF1bHRfbWV0aG9kOwotKwkJQVNOMV9wdXRfZW9jOwotKwkJWDUwOV9TVE9SRV9DVFhfZ2V0X2V4cGxpY2l0X3BvbGljeTsKLSsJCVg1MDlfU1RPUkVfQ1RYX2dldF9leHBsX3BvbGljeTsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX3RhYmxlX2NsZWFudXA7Ci0rCQlTVE9SRV9tb2RpZnlfcHJpdmF0ZV9rZXk7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9mcmVlOwotKwkJRUNfTUVUSE9EX2dldF9maWVsZF90eXBlOwotKwkJRUNfR0ZwX25pc3RfbWV0aG9kOwotKwkJU1RPUkVfbWV0aF9zZXRfbW9kaWZ5X2ZuOwotKwkJU1RPUkVfbWV0aG9kX3NldF9tb2RpZnlfZnVuY3Rpb247Ci0rCQlTVE9SRV9wYXJzZV9hdHRyc19uZXh0OwotKwkJRU5HSU5FX2xvYWRfcGFkbG9jazsKLSsJCUVDX0dST1VQX3NldF9jdXJ2ZV9uYW1lOwotKwkJWDUwOV9DRVJUX1BBSVJfaXQ7Ci0rCQlTVE9SRV9tZXRoX2dldF9yZXZva2VfZm47Ci0rCQlTVE9SRV9tZXRob2RfZ2V0X3Jldm9rZV9mdW5jdGlvbjsKLSsJCVNUT1JFX21ldGhvZF9zZXRfZ2V0X2Z1bmN0aW9uOwotKwkJU1RPUkVfbW9kaWZ5X251bWJlcjsKLSsJCVNUT1JFX21ldGhvZF9nZXRfc3RvcmVfZnVuY3Rpb247Ci0rCQlTVE9SRV9zdG9yZV9wcml2YXRlX2tleTsKLSsJCUJOX0dGMm1fbW9kX3Nxcl9hcnI7Ci0rCQlSU0Ffc2V0dXBfYmxpbmRpbmc7Ci0rCQlCSU9fc19kYXRhZ3JhbTsKLSsJCVNUT1JFX01lbW9yeTsKLSsJCXNrX2ZpbmRfZXg7Ci0rCQlFQ19HUk9VUF9zZXRfY3VydmVfR0YybTsKLSsJCUVOR0lORV9zZXRfZGVmYXVsdF9FQ0RTQTsKLSsJCVBPTElDWV9DT05TVFJBSU5UU19uZXc7Ci0rCQlCTl9HRjJtX21vZF9zcXJ0OwotKwkJRUNESF9zZXRfZGVmYXVsdF9tZXRob2Q7Ci0rCQlFQ19LRVlfZ2VuZXJhdGVfa2V5OwotKwkJU0hBMzg0X1VwZGF0ZTsKLSsJCUJOX0dGMm1fYXJyMnBvbHk7Ci0rCQlTVE9SRV9tZXRob2RfZ2V0X2dldF9mdW5jdGlvbjsKLSsJCVNUT1JFX21ldGhfc2V0X2NsZWFudXBfZm47Ci0rCQlTVE9SRV9tZXRob2Rfc2V0X2NsZWFudXBfZnVuY3Rpb247Ci0rCQlFQ19HUk9VUF9jaGVjazsKLSsJCWQyaV9FQ1ByaXZhdGVLZXlfYmlvOwotKwkJRUNfS0VZX2luc2VydF9rZXlfbWV0aG9kX2RhdGE7Ci0rCQlTVE9SRV9tZXRoX2dldF9sb2NrX3N0b3JlX2ZuOwotKwkJU1RPUkVfbWV0aG9kX2dldF9sb2NrX3N0b3JlX2Z1bmN0aW9uOwotKwkJWDUwOV9WRVJJRllfUEFSQU1fZ2V0X2RlcHRoOwotKwkJU0hBMjI0X0ZpbmFsOwotKwkJU1RPUkVfbWV0aF9zZXRfdXBkYXRlX3N0b3JlX2ZuOwotKwkJU1RPUkVfbWV0aG9kX3NldF91cGRhdGVfc3RvcmVfZnVuY3Rpb247Ci0rCQlTSEEyMjRfVXBkYXRlOwotKwkJZDJpX0VDUHJpdmF0ZUtleTsKLSsJCUFTTjFfaXRlbV9uZGVmX2kyZDsKLSsJCVNUT1JFX2RlbGV0ZV9wcml2YXRlX2tleTsKLSsJCUVSUl9wb3BfdG9fbWFyazsKLSsJCUVOR0lORV9yZWdpc3Rlcl9hbGxfU1RPUkU7Ci0rCQlYNTA5X3BvbGljeV9sZXZlbF9nZXQwX25vZGU7Ci0rCQlpMmRfUEtDUzdfTkRFRjsKLSsJCUVDX0dST1VQX2dldF9kZWdyZWU7Ci0rCQlBU04xX2dlbmVyYXRlX3YzOwotKwkJU1RPUkVfQVRUUl9JTkZPX21vZGlmeV9jc3RyOwotKwkJWDUwOV9wb2xpY3lfdHJlZV9sZXZlbF9jb3VudDsKLSsJCUJOX0dGMm1fYWRkOwotKwkJRUNfS0VZX2dldDBfZ3JvdXA7Ci0rCQlTVE9SRV9nZW5lcmF0ZV9jcmw7Ci0rCQlTVE9SRV9zdG9yZV9wdWJsaWNfa2V5OwotKwkJWDUwOV9DRVJUX1BBSVJfZnJlZTsKLSsJCVNUT1JFX3Jldm9rZV9wcml2YXRlX2tleTsKLSsJCUJOX25pc3RfbW9kXzIyNDsKLSsJCVNIQTUxMl9GaW5hbDsKLSsJCVNUT1JFX0FUVFJfSU5GT19tb2RpZnlfZG47Ci0rCQlTVE9SRV9tZXRoX2dldF9pbml0aWFsaXNlX2ZuOwotKwkJU1RPUkVfbWV0aG9kX2dldF9pbml0aWFsaXNlX2Z1bmN0aW9uOwotKwkJU1RPUkVfZGVsZXRlX251bWJlcjsKLSsJCWkyZF9FQ19QVUJLRVlfYmlvOwotKwkJQklPX2RncmFtX25vbl9mYXRhbF9lcnJvcjsKLSsJCUVDX0dST1VQX2dldF9hc24xX2ZsYWc7Ci0rCQlTVE9SRV9BVFRSX0lORk9faW5fZXg7Ci0rCQlTVE9SRV9saXN0X2NybF9zdGFydDsKLSsJCUVDREhfZ2V0X2V4X25ld19pbmRleDsKLSsJCVNUT1JFX21ldGhfZ2V0X21vZGlmeV9mbjsKLSsJCVNUT1JFX21ldGhvZF9nZXRfbW9kaWZ5X2Z1bmN0aW9uOwotKwkJdjJpX0FTTjFfQklUX1NUUklORzsKLSsJCVNUT1JFX3N0b3JlX2NlcnRpZmljYXRlOwotKwkJT0JKX2JzZWFyY2hfZXg7Ci0rCQlYNTA5X1NUT1JFX0NUWF9zZXRfZGVmYXVsdDsKLSsJCVNUT1JFX0FUVFJfSU5GT19zZXRfc2hhMXN0cjsKLSsJCUJOX0dGMm1fbW9kX2ludjsKLSsJCUJOX0dGMm1fbW9kX2V4cDsKLSsJCVNUT1JFX21vZGlmeV9wdWJsaWNfa2V5OwotKwkJU1RPUkVfbWV0aF9nZXRfbGlzdF9zdGFydF9mbjsKLSsJCVNUT1JFX21ldGhvZF9nZXRfbGlzdF9zdGFydF9mdW5jdGlvbjsKLSsJCUVDX0dST1VQX2dldDBfc2VlZDsKLSsJCVNUT1JFX3N0b3JlX2FyYml0cmFyeTsKLSsJCVNUT1JFX21ldGhfc2V0X3VubG9ja19zdG9yZV9mbjsKLSsJCVNUT1JFX21ldGhvZF9zZXRfdW5sb2NrX3N0b3JlX2Z1bmN0aW9uOwotKwkJQk5fR0YybV9tb2RfZGl2X2FycjsKLSsJCUVOR0lORV9zZXRfRUNEU0E7Ci0rCQlTVE9SRV9jcmVhdGVfbWV0aG9kOwotKwkJRUNQS1BhcmFtZXRlcnNfcHJpbnQ7Ci0rCQlFQ19LRVlfZ2V0MF9wcml2YXRlX2tleTsKLSsJCVBFTV93cml0ZV9FQ19QVUJLRVk7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXQxOwotKwkJRUNESF9zZXRfbWV0aG9kOwotKwkJdjJpX0dFTkVSQUxfTkFNRV9leDsKLSsJCUVDREhfc2V0X2V4X2RhdGE7Ci0rCQlTVE9SRV9nZW5lcmF0ZV9rZXk7Ci0rCQlCTl9uaXN0X21vZF81MjE7Ci0rCQlYNTA5X3BvbGljeV90cmVlX2dldDBfbGV2ZWw7Ci0rCQlFQ19HUk9VUF9zZXRfcG9pbnRfY29udmVyc2lvbl9mb3JtOwotKwkJRUNfR1JPVVBfc2V0X3BvaW50X2NvbnZfZm9ybTsKLSsJCVBFTV9yZWFkX0VDX1BVQktFWTsKLSsJCWkyZF9FQ0RTQV9TSUc7Ci0rCQlFQ0RTQV9PcGVuU1NMOwotKwkJU1RPUkVfZGVsZXRlX2NybDsKLSsJCUVDX0tFWV9nZXRfZW5jX2ZsYWdzOwotKwkJQVNOMV9jb25zdF9jaGVja19pbmZpbml0ZV9lbmQ7Ci0rCQlFVlBfUEtFWV9kZWxldGVfYXR0cjsKLSsJCUVDRFNBX3NldF9kZWZhdWx0X21ldGhvZDsKLSsJCUVDX1BPSU5UX3NldF9jb21wcmVzc2VkX2Nvb3JkaW5hdGVzX0dGMm07Ci0rCQlFQ19QT0lOVF9zZXRfY29tcHJfY29vcmRzX0dGMm07Ci0rCQlFQ19HUk9VUF9jbXA7Ci0rCQlTVE9SRV9yZXZva2VfY2VydGlmaWNhdGU7Ci0rCQlCTl9nZXQwX25pc3RfcHJpbWVfMjU2OwotKwkJU1RPUkVfbWV0aF9nZXRfZGVsZXRlX2ZuOwotKwkJU1RPUkVfbWV0aG9kX2dldF9kZWxldGVfZnVuY3Rpb247Ci0rCQlTSEEyMjRfSW5pdDsKLSsJCVBFTV9yZWFkX0VDUHJpdmF0ZUtleTsKLSsJCVNIQTUxMl9Jbml0OwotKwkJU1RPUkVfcGFyc2VfYXR0cnNfZW5kcDsKLSsJCUJOX3NldF9uZWdhdGl2ZTsKLSsJCUVSUl9sb2FkX0VDRFNBX3N0cmluZ3M7Ci0rCQlFQ19HUk9VUF9nZXRfYmFzaXNfdHlwZTsKLSsJCVNUT1JFX2xpc3RfcHVibGljX2tleV9uZXh0OwotKwkJaTJ2X0FTTjFfQklUX1NUUklORzsKLSsJCVNUT1JFX09CSkVDVF9mcmVlOwotKwkJQk5fbmlzdF9tb2RfMzg0OwotKwkJaTJkX1g1MDlfQ0VSVF9QQUlSOwotKwkJUEVNX3dyaXRlX0VDUEtQYXJhbWV0ZXJzOwotKwkJRUNESF9jb21wdXRlX2tleTsKLSsJCVNUT1JFX0FUVFJfSU5GT19nZXQwX3NoYTFzdHI7Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfYWxsX0VDREg7Ci0rCQlwcXVldWVfcG9wOwotKwkJU1RPUkVfQVRUUl9JTkZPX2dldDBfY3N0cjsKLSsJCVBPTElDWV9DT05TVFJBSU5UU19pdDsKLSsJCVNUT1JFX2dldF9leF9uZXdfaW5kZXg7Ci0rCQlFVlBfUEtFWV9nZXRfYXR0cl9ieV9PQko7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9hZGQwX3BvbGljeTsKLSsJCUJOX0dGMm1fbW9kX3NvbHZlX3F1YWQ7Ci0rCQlTSEEyNTY7Ci0rCQlpMmRfRUNQcml2YXRlS2V5X2ZwOwotKwkJWDUwOV9wb2xpY3lfdHJlZV9nZXQwX3VzZXJfcG9saWNpZXM7Ci0rCQlYNTA5X3BjeV90cmVlX2dldDBfdXNyX3BvbGljaWVzOwotKwkJT1BFTlNTTF9ESVJfcmVhZDsKLSsJCUVOR0lORV9yZWdpc3Rlcl9hbGxfRUNEU0E7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9sb29rdXA7Ci0rCQlFQ19QT0lOVF9nZXRfYWZmaW5lX2Nvb3JkaW5hdGVzX0dGMm07Ci0rCQlFQ19QT0lOVF9nZXRfYWZmaW5lX2Nvb3Jkc19HRjJtOwotKwkJRUNfR1JPVVBfZHVwOwotKwkJRU5HSU5FX2dldF9kZWZhdWx0X0VDRFNBOwotKwkJRUNfS0VZX25ldzsKLSsJCVNIQTI1Nl9UcmFuc2Zvcm07Ci0rCQlFQ19LRVlfc2V0X2VuY19mbGFnczsKLSsJCUVDRFNBX3ZlcmlmeTsKLSsJCUVDX1BPSU5UX3BvaW50MmhleDsKLSsJCUVOR0lORV9nZXRfU1RPUkU7Ci0rCQlTSEE1MTI7Ci0rCQlTVE9SRV9nZXRfY2VydGlmaWNhdGU7Ci0rCQlFQ0RTQV9kb19zaWduX2V4OwotKwkJRUNEU0FfZG9fdmVyaWZ5OwotKwkJZDJpX0VDUHJpdmF0ZUtleV9mcDsKLSsJCVNUT1JFX2RlbGV0ZV9jZXJ0aWZpY2F0ZTsKLSsJCVNIQTUxMl9UcmFuc2Zvcm07Ci0rCQlYNTA5X1NUT1JFX3NldDFfcGFyYW07Ci0rCQlTVE9SRV9tZXRob2RfZ2V0X2N0cmxfZnVuY3Rpb247Ci0rCQlTVE9SRV9mcmVlOwotKwkJUEVNX3dyaXRlX0VDUHJpdmF0ZUtleTsKLSsJCVNUT1JFX21ldGhfZ2V0X3VubG9ja19zdG9yZV9mbjsKLSsJCVNUT1JFX21ldGhvZF9nZXRfdW5sb2NrX3N0b3JlX2Z1bmN0aW9uOwotKwkJU1RPUkVfZ2V0X2V4X2RhdGE7Ci0rCQlFQ19LRVlfc2V0X3B1YmxpY19rZXk7Ci0rCQlQRU1fcmVhZF9FQ1BLUGFyYW1ldGVyczsKLSsJCVg1MDlfQ0VSVF9QQUlSX25ldzsKLSsJCUVOR0lORV9yZWdpc3Rlcl9TVE9SRTsKLSsJCVJTQV9nZW5lcmF0ZV9rZXlfZXg7Ci0rCQlEU0FfZ2VuZXJhdGVfcGFyYW1ldGVyc19leDsKLSsJCUVDUGFyYW1ldGVyc19wcmludF9mcDsKLSsJCVg1MDlWM19OQU1FX2Zyb21fc2VjdGlvbjsKLSsJCUVWUF9QS0VZX2FkZDFfYXR0cjsKLSsJCVNUT1JFX21vZGlmeV9jcmw7Ci0rCQlTVE9SRV9saXN0X3ByaXZhdGVfa2V5X3N0YXJ0OwotKwkJUE9MSUNZX01BUFBJTkdTX2l0OwotKwkJR0VORVJBTF9TVUJUUkVFX2l0OwotKwkJRUNfR1JPVVBfZ2V0X2N1cnZlX25hbWU7Ci0rCQlQRU1fd3JpdGVfWDUwOV9DRVJUX1BBSVI7Ci0rCQlCSU9fZHVtcF9pbmRlbnRfY2I7Ci0rCQlkMmlfWDUwOV9DRVJUX1BBSVI7Ci0rCQlTVE9SRV9saXN0X3ByaXZhdGVfa2V5X2VuZHA7Ci0rCQlhc24xX2NvbnN0X0ZpbmlzaDsKLSsJCWkyZF9FQ19QVUJLRVlfZnA7Ci0rCQlCTl9uaXN0X21vZF8yNTY7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9hZGQwX3RhYmxlOwotKwkJcHF1ZXVlX2ZyZWU7Ci0rCQlCTl9CTElORElOR19jcmVhdGVfcGFyYW07Ci0rCQlFQ0RTQV9zaXplOwotKwkJZDJpX0VDX1BVQktFWV9iaW87Ci0rCQlCTl9nZXQwX25pc3RfcHJpbWVfNTIxOwotKwkJU1RPUkVfQVRUUl9JTkZPX21vZGlmeV9zaGExc3RyOwotKwkJQk5fZ2VuZXJhdGVfcHJpbWVfZXg7Ci0rCQlFQ19HUk9VUF9uZXdfYnlfY3VydmVfbmFtZTsKLSsJCVNIQTI1Nl9GaW5hbDsKLSsJCURIX2dlbmVyYXRlX3BhcmFtZXRlcnNfZXg7Ci0rCQlQRU1fcmVhZF9iaW9fRUNQcml2YXRlS2V5OwotKwkJU1RPUkVfbWV0aF9nZXRfY2xlYW51cF9mbjsKLSsJCVNUT1JFX21ldGhvZF9nZXRfY2xlYW51cF9mdW5jdGlvbjsKLSsJCUVOR0lORV9nZXRfRUNESDsKLSsJCWQyaV9FQ0RTQV9TSUc7Ci0rCQlCTl9pc19wcmltZV9mYXN0dGVzdF9leDsKLSsJCUVDRFNBX3NpZ247Ci0rCQlYNTA5X3BvbGljeV9jaGVjazsKLSsJCUVWUF9QS0VZX2dldF9hdHRyX2J5X05JRDsKLSsJCVNUT1JFX3NldF9leF9kYXRhOwotKwkJRU5HSU5FX2dldF9FQ0RTQTsKLSsJCUVWUF9lY2RzYTsKLSsJCUJOX0JMSU5ESU5HX2dldF9mbGFnczsKLSsJCVBLQ1MxMl9hZGRfY2VydDsKLSsJCVNUT1JFX09CSkVDVF9uZXc7Ci0rCQlFUlJfbG9hZF9FQ0RIX3N0cmluZ3M7Ci0rCQlFQ19LRVlfZHVwOwotKwkJRVZQX0NJUEhFUl9DVFhfcmFuZF9rZXk7Ci0rCQlFQ0RTQV9zZXRfbWV0aG9kOwotKwkJYTJpX0lQQUREUkVTU19OQzsKLSsJCWQyaV9FQ1BhcmFtZXRlcnM7Ci0rCQlTVE9SRV9saXN0X2NlcnRpZmljYXRlX2VuZDsKLSsJCVNUT1JFX2dldF9jcmw7Ci0rCQlYNTA5X1BPTElDWV9OT0RFX3ByaW50OwotKwkJU0hBMzg0X0luaXQ7Ci0rCQlFQ19HRjJtX3NpbXBsZV9tZXRob2Q7Ci0rCQlFQ0RTQV9zZXRfZXhfZGF0YTsKLSsJCVNIQTM4NF9GaW5hbDsKLSsJCVBLQ1M3X3NldF9kaWdlc3Q7Ci0rCQlFQ19LRVlfcHJpbnQ7Ci0rCQlTVE9SRV9tZXRoX3NldF9sb2NrX3N0b3JlX2ZuOwotKwkJU1RPUkVfbWV0aG9kX3NldF9sb2NrX3N0b3JlX2Z1bmN0aW9uOwotKwkJRUNEU0FfZ2V0X2V4X25ld19pbmRleDsKLSsJCVNIQTM4NDsKLSsJCVBPTElDWV9NQVBQSU5HX25ldzsKLSsJCVNUT1JFX2xpc3RfY2VydGlmaWNhdGVfZW5kcDsKLSsJCVg1MDlfU1RPUkVfQ1RYX2dldDBfcG9saWN5X3RyZWU7Ci0rCQlFQ19HUk9VUF9zZXRfYXNuMV9mbGFnOwotKwkJRUNfS0VZX2NoZWNrX2tleTsKLSsJCWQyaV9FQ19QVUJLRVlfZnA7Ci0rCQlQS0NTN19zZXQwX3R5cGVfb3RoZXI7Ci0rCQlQRU1fcmVhZF9iaW9fWDUwOV9DRVJUX1BBSVI7Ci0rCQlwcXVldWVfbmV4dDsKLSsJCVNUT1JFX21ldGhfZ2V0X2xpc3RfZW5kX2ZuOwotKwkJU1RPUkVfbWV0aG9kX2dldF9saXN0X2VuZF9mdW5jdGlvbjsKLSsJCUVWUF9QS0VZX2FkZDFfYXR0cl9ieV9PQko7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXRfdGltZTsKLSsJCXBxdWV1ZV9uZXc7Ci0rCQlFTkdJTkVfc2V0X2RlZmF1bHRfRUNESDsKLSsJCVNUT1JFX25ld19tZXRob2Q7Ci0rCQlQS0NTMTJfYWRkX2tleTsKLSsJCURTT19tZXJnZTsKLSsJCUVDX1BPSU5UX2hleDJwb2ludDsKLSsJCUJJT19kdW1wX2NiOwotKwkJU0hBMjU2X1VwZGF0ZTsKLSsJCXBxdWV1ZV9pbnNlcnQ7Ci0rCQlwaXRlbV9mcmVlOwotKwkJQk5fR0YybV9tb2RfaW52X2FycjsKLSsJCUVOR0lORV91bnJlZ2lzdGVyX0VDRFNBOwotKwkJQk5fQkxJTkRJTkdfc2V0X3RocmVhZF9pZDsKLSsJCWdldF9yZmMzNTI2X3ByaW1lXzgxOTI7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9jbGVhcl9mbGFnczsKLSsJCWdldF9yZmMyNDA5X3ByaW1lXzEwMjQ7Ci0rCQlESF9jaGVja19wdWJfa2V5OwotKwkJZ2V0X3JmYzM1MjZfcHJpbWVfMjA0ODsKLSsJCWdldF9yZmMzNTI2X3ByaW1lXzYxNDQ7Ci0rCQlnZXRfcmZjMzUyNl9wcmltZV8xNTM2OwotKwkJZ2V0X3JmYzM1MjZfcHJpbWVfMzA3MjsKLSsJCWdldF9yZmMzNTI2X3ByaW1lXzQwOTY7Ci0rCQlnZXRfcmZjMjQwOV9wcmltZV83Njg7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9nZXRfZmxhZ3M7Ci0rCQlFVlBfQ0lQSEVSX0NUWF9uZXc7Ci0rCQlFVlBfQ0lQSEVSX0NUWF9mcmVlOwotKwkJQ2FtZWxsaWFfY2JjX2VuY3J5cHQ7Ci0rCQlDYW1lbGxpYV9jZmIxMjhfZW5jcnlwdDsKLSsJCUNhbWVsbGlhX2NmYjFfZW5jcnlwdDsKLSsJCUNhbWVsbGlhX2NmYjhfZW5jcnlwdDsKLSsJCUNhbWVsbGlhX2N0cjEyOF9lbmNyeXB0OwotKwkJQ2FtZWxsaWFfY2Zicl9lbmNyeXB0X2Jsb2NrOwotKwkJQ2FtZWxsaWFfZGVjcnlwdDsKLSsJCUNhbWVsbGlhX2VjYl9lbmNyeXB0OwotKwkJQ2FtZWxsaWFfZW5jcnlwdDsKLSsJCUNhbWVsbGlhX29mYjEyOF9lbmNyeXB0OwotKwkJQ2FtZWxsaWFfc2V0X2tleTsKLSsJCUVWUF9jYW1lbGxpYV8xMjhfY2JjOwotKwkJRVZQX2NhbWVsbGlhXzEyOF9jZmIxMjg7Ci0rCQlFVlBfY2FtZWxsaWFfMTI4X2NmYjE7Ci0rCQlFVlBfY2FtZWxsaWFfMTI4X2NmYjg7Ci0rCQlFVlBfY2FtZWxsaWFfMTI4X2VjYjsKLSsJCUVWUF9jYW1lbGxpYV8xMjhfb2ZiOwotKwkJRVZQX2NhbWVsbGlhXzE5Ml9jYmM7Ci0rCQlFVlBfY2FtZWxsaWFfMTkyX2NmYjEyODsKLSsJCUVWUF9jYW1lbGxpYV8xOTJfY2ZiMTsKLSsJCUVWUF9jYW1lbGxpYV8xOTJfY2ZiODsKLSsJCUVWUF9jYW1lbGxpYV8xOTJfZWNiOwotKwkJRVZQX2NhbWVsbGlhXzE5Ml9vZmI7Ci0rCQlFVlBfY2FtZWxsaWFfMjU2X2NiYzsKLSsJCUVWUF9jYW1lbGxpYV8yNTZfY2ZiMTI4OwotKwkJRVZQX2NhbWVsbGlhXzI1Nl9jZmIxOwotKwkJRVZQX2NhbWVsbGlhXzI1Nl9jZmI4OwotKwkJRVZQX2NhbWVsbGlhXzI1Nl9lY2I7Ci0rCQlFVlBfY2FtZWxsaWFfMjU2X29mYjsKLSsJCWEyaV9pcGFkZDsKLSsJCUFTSWRlbnRpZmllcnNfZnJlZTsKLSsJCWkyZF9BU0lkT3JSYW5nZTsKLSsJCUVWUF9DSVBIRVJfYmxvY2tfc2l6ZTsKLSsJCXYzX2FzaWRfaXNfY2Fub25pY2FsOwotKwkJSVBBZGRyZXNzQ2hvaWNlX2ZyZWU7Ci0rCQlFVlBfQ0lQSEVSX0NUWF9zZXRfYXBwX2RhdGE7Ci0rCQlCSU9fc2V0X2NhbGxiYWNrX2FyZzsKLSsJCXYzX2FkZHJfYWRkX3ByZWZpeDsKLSsJCUlQQWRkcmVzc09yUmFuZ2VfaXQ7Ci0rCQlCSU9fc2V0X2ZsYWdzOwotKwkJQVNJZGVudGlmaWVyc19pdDsKLSsJCXYzX2FkZHJfZ2V0X3JhbmdlOwotKwkJQklPX21ldGhvZF90eXBlOwotKwkJdjNfYWRkcl9pbmhlcml0czsKLSsJCUlQQWRkcmVzc0Nob2ljZV9pdDsKLSsJCUFFU19pZ2VfZW5jcnlwdDsKLSsJCXYzX2FkZHJfYWRkX3JhbmdlOwotKwkJRVZQX0NJUEhFUl9DVFhfbmlkOwotKwkJZDJpX0FTUmFuZ2U7Ci0rCQl2M19hZGRyX2FkZF9pbmhlcml0OwotKwkJdjNfYXNpZF9hZGRfaWRfb3JfcmFuZ2U7Ci0rCQl2M19hZGRyX3ZhbGlkYXRlX3Jlc291cmNlX3NldDsKLSsJCUVWUF9DSVBIRVJfaXZfbGVuZ3RoOwotKwkJRVZQX01EX3R5cGU7Ci0rCQl2M19hc2lkX2Nhbm9uaXplOwotKwkJSVBBZGRyZXNzUmFuZ2VfZnJlZTsKLSsJCXYzX2FzaWRfYWRkX2luaGVyaXQ7Ci0rCQlFVlBfQ0lQSEVSX0NUWF9rZXlfbGVuZ3RoOwotKwkJSVBBZGRyZXNzUmFuZ2VfbmV3OwotKwkJQVNJZE9yUmFuZ2VfbmV3OwotKwkJRVZQX01EX3NpemU7Ci0rCQlFVlBfTURfQ1RYX3Rlc3RfZmxhZ3M7Ci0rCQlCSU9fY2xlYXJfZmxhZ3M7Ci0rCQlpMmRfQVNSYW5nZTsKLSsJCUlQQWRkcmVzc1JhbmdlX2l0OwotKwkJSVBBZGRyZXNzQ2hvaWNlX25ldzsKLSsJCUFTSWRlbnRpZmllckNob2ljZV9uZXc7Ci0rCQlBU1JhbmdlX2ZyZWU7Ci0rCQlFVlBfTURfcGtleV90eXBlOwotKwkJRVZQX01EX0NUWF9jbGVhcl9mbGFnczsKLSsJCUlQQWRkcmVzc0ZhbWlseV9mcmVlOwotKwkJaTJkX0lQQWRkcmVzc0ZhbWlseTsKLSsJCUlQQWRkcmVzc09yUmFuZ2VfbmV3OwotKwkJRVZQX0NJUEhFUl9mbGFnczsKLSsJCXYzX2FzaWRfdmFsaWRhdGVfcmVzb3VyY2Vfc2V0OwotKwkJZDJpX0lQQWRkcmVzc1JhbmdlOwotKwkJQUVTX2JpX2lnZV9lbmNyeXB0OwotKwkJQklPX2dldF9jYWxsYmFjazsKLSsJCUlQQWRkcmVzc09yUmFuZ2VfZnJlZTsKLSsJCXYzX2FkZHJfc3Vic2V0OwotKwkJZDJpX0lQQWRkcmVzc0ZhbWlseTsKLSsJCXYzX2FzaWRfc3Vic2V0OwotKwkJQklPX3Rlc3RfZmxhZ3M7Ci0rCQlpMmRfQVNJZGVudGlmaWVyQ2hvaWNlOwotKwkJQVNSYW5nZV9pdDsKLSsJCWQyaV9BU0lkZW50aWZpZXJzOwotKwkJQVNSYW5nZV9uZXc7Ci0rCQlkMmlfSVBBZGRyZXNzQ2hvaWNlOwotKwkJdjNfYWRkcl9nZXRfYWZpOwotKwkJRVZQX0NJUEhFUl9rZXlfbGVuZ3RoOwotKwkJRVZQX0NpcGhlcjsKLSsJCWkyZF9JUEFkZHJlc3NPclJhbmdlOwotKwkJQVNJZE9yUmFuZ2VfaXQ7Ci0rCQlFVlBfQ0lQSEVSX25pZDsKLSsJCWkyZF9JUEFkZHJlc3NDaG9pY2U7Ci0rCQlFVlBfQ0lQSEVSX0NUWF9ibG9ja19zaXplOwotKwkJQVNJZGVudGlmaWVyc19uZXc7Ci0rCQl2M19hZGRyX3ZhbGlkYXRlX3BhdGg7Ci0rCQlJUEFkZHJlc3NGYW1pbHlfbmV3OwotKwkJRVZQX01EX0NUWF9zZXRfZmxhZ3M7Ci0rCQl2M19hZGRyX2lzX2Nhbm9uaWNhbDsKLSsJCWkyZF9JUEFkZHJlc3NSYW5nZTsKLSsJCUlQQWRkcmVzc0ZhbWlseV9pdDsKLSsJCXYzX2FzaWRfaW5oZXJpdHM7Ci0rCQlFVlBfQ0lQSEVSX0NUWF9jaXBoZXI7Ci0rCQlFVlBfQ0lQSEVSX0NUWF9nZXRfYXBwX2RhdGE7Ci0rCQlFVlBfTURfYmxvY2tfc2l6ZTsKLSsJCUVWUF9DSVBIRVJfQ1RYX2ZsYWdzOwotKwkJdjNfYXNpZF92YWxpZGF0ZV9wYXRoOwotKwkJZDJpX0lQQWRkcmVzc09yUmFuZ2U7Ci0rCQl2M19hZGRyX2Nhbm9uaXplOwotKwkJQVNJZGVudGlmaWVyQ2hvaWNlX2l0OwotKwkJRVZQX01EX0NUWF9tZDsKLSsJCWQyaV9BU0lkZW50aWZpZXJDaG9pY2U7Ci0rCQlCSU9fbWV0aG9kX25hbWU7Ci0rCQlFVlBfQ0lQSEVSX0NUWF9pdl9sZW5ndGg7Ci0rCQlBU0lkT3JSYW5nZV9mcmVlOwotKwkJQVNJZGVudGlmaWVyQ2hvaWNlX2ZyZWU7Ci0rCQlCSU9fZ2V0X2NhbGxiYWNrX2FyZzsKLSsJCUJJT19zZXRfY2FsbGJhY2s7Ci0rCQlkMmlfQVNJZE9yUmFuZ2U7Ci0rCQlpMmRfQVNJZGVudGlmaWVyczsKLSsJCVNFRURfZGVjcnlwdDsKLSsJCVNFRURfZW5jcnlwdDsKLSsJCVNFRURfY2JjX2VuY3J5cHQ7Ci0rCQlFVlBfc2VlZF9vZmI7Ci0rCQlTRUVEX2NmYjEyOF9lbmNyeXB0OwotKwkJU0VFRF9vZmIxMjhfZW5jcnlwdDsKLSsJCUVWUF9zZWVkX2NiYzsKLSsJCVNFRURfZWNiX2VuY3J5cHQ7Ci0rCQlFVlBfc2VlZF9lY2I7Ci0rCQlTRUVEX3NldF9rZXk7Ci0rCQlFVlBfc2VlZF9jZmIxMjg7Ci0rCQlYNTA5X0VYVEVOU0lPTlNfaXQ7Ci0rCQlYNTA5X2dldDFfb2NzcDsKLSsJCU9DU1BfUkVRX0NUWF9mcmVlOwotKwkJaTJkX1g1MDlfRVhURU5TSU9OUzsKLSsJCU9DU1Bfc2VuZHJlcV9uYmlvOwotKwkJT0NTUF9zZW5kcmVxX25ldzsKLSsJCWQyaV9YNTA5X0VYVEVOU0lPTlM7Ci0rCQlYNTA5X0FMR09SU19pdDsKLSsJCVg1MDlfQUxHT1JfZ2V0MDsKLSsJCVg1MDlfQUxHT1Jfc2V0MDsKLSsJCUFFU191bndyYXBfa2V5OwotKwkJQUVTX3dyYXBfa2V5OwotKwkJWDUwOWF0X2dldDBfZGF0YV9ieV9PQko7Ci0rCQlBU04xX1RZUEVfc2V0MTsKLSsJCUFTTjFfU1RSSU5HX3NldDA7Ci0rCQlpMmRfWDUwOV9BTEdPUlM7Ci0rCQlCSU9fZl96bGliOwotKwkJQ09NUF96bGliX2NsZWFudXA7Ci0rCQlkMmlfWDUwOV9BTEdPUlM7Ci0rCQlDTVNfUmVjZWlwdFJlcXVlc3RfZnJlZTsKLSsJCVBFTV93cml0ZV9DTVM7Ci0rCQlDTVNfYWRkMF9DZXJ0aWZpY2F0ZUNob2ljZXM7Ci0rCQlDTVNfdW5zaWduZWRfYWRkMV9hdHRyX2J5X09CSjsKLSsJCUVSUl9sb2FkX0NNU19zdHJpbmdzOwotKwkJQ01TX3NpZ25fcmVjZWlwdDsKLSsJCWkyZF9DTVNfQ29udGVudEluZm87Ci0rCQlDTVNfc2lnbmVkX2RlbGV0ZV9hdHRyOwotKwkJZDJpX0NNU19iaW87Ci0rCQlDTVNfdW5zaWduZWRfZ2V0X2F0dHJfYnlfTklEOwotKwkJQ01TX3ZlcmlmeTsKLSsJCVNNSU1FX3JlYWRfQ01TOwotKwkJQ01TX2RlY3J5cHRfc2V0MV9rZXk7Ci0rCQlDTVNfU2lnbmVySW5mb19nZXQwX2FsZ3M7Ci0rCQlDTVNfYWRkMV9jZXJ0OwotKwkJQ01TX3NldF9kZXRhY2hlZDsKLSsJCUNNU19lbmNyeXB0OwotKwkJQ01TX0VudmVsb3BlZERhdGFfY3JlYXRlOwotKwkJQ01TX3VuY29tcHJlc3M7Ci0rCQlDTVNfYWRkMF9jcmw7Ci0rCQlDTVNfU2lnbmVySW5mb192ZXJpZnlfY29udGVudDsKLSsJCUNNU191bnNpZ25lZF9nZXQwX2RhdGFfYnlfT0JKOwotKwkJUEVNX3dyaXRlX2Jpb19DTVM7Ci0rCQlDTVNfdW5zaWduZWRfZ2V0X2F0dHI7Ci0rCQlDTVNfUmVjaXBpZW50SW5mb19rdHJpX2NlcnRfY21wOwotKwkJQ01TX1JlY2lwaWVudEluZm9fa3RyaV9nZXQwX2FsZ3M7Ci0rCQlDTVNfUmVjaXBJbmZvX2t0cmlfZ2V0MF9hbGdzOwotKwkJQ01TX0NvbnRlbnRJbmZvX2ZyZWU7Ci0rCQlDTVNfZmluYWw7Ci0rCQlDTVNfYWRkX3NpbXBsZV9zbWltZWNhcDsKLSsJCUNNU19TaWduZXJJbmZvX3ZlcmlmeTsKLSsJCUNNU19kYXRhOwotKwkJQ01TX0NvbnRlbnRJbmZvX2l0OwotKwkJZDJpX0NNU19SZWNlaXB0UmVxdWVzdDsKLSsJCUNNU19jb21wcmVzczsKLSsJCUNNU19kaWdlc3RfY3JlYXRlOwotKwkJQ01TX1NpZ25lckluZm9fY2VydF9jbXA7Ci0rCQlDTVNfU2lnbmVySW5mb19zaWduOwotKwkJQ01TX2RhdGFfY3JlYXRlOwotKwkJaTJkX0NNU19iaW87Ci0rCQlDTVNfRW5jcnlwdGVkRGF0YV9zZXQxX2tleTsKLSsJCUNNU19kZWNyeXB0OwotKwkJaW50X3NtaW1lX3dyaXRlX0FTTjE7Ci0rCQlDTVNfdW5zaWduZWRfZGVsZXRlX2F0dHI7Ci0rCQlDTVNfdW5zaWduZWRfZ2V0X2F0dHJfY291bnQ7Ci0rCQlDTVNfYWRkX3NtaW1lY2FwOwotKwkJUEVNX3JlYWRfQ01TOwotKwkJQ01TX3NpZ25lZF9nZXRfYXR0cl9ieV9PQko7Ci0rCQlkMmlfQ01TX0NvbnRlbnRJbmZvOwotKwkJQ01TX2FkZF9zdGFuZGFyZF9zbWltZWNhcDsKLSsJCUNNU19Db250ZW50SW5mb19uZXc7Ci0rCQlDTVNfUmVjaXBpZW50SW5mb190eXBlOwotKwkJQ01TX2dldDBfdHlwZTsKLSsJCUNNU19pc19kZXRhY2hlZDsKLSsJCUNNU19zaWduOwotKwkJQ01TX3NpZ25lZF9hZGQxX2F0dHI7Ci0rCQlDTVNfdW5zaWduZWRfZ2V0X2F0dHJfYnlfT0JKOwotKwkJU01JTUVfd3JpdGVfQ01TOwotKwkJQ01TX0VuY3J5cHRlZERhdGFfZGVjcnlwdDsKLSsJCUNNU19nZXQwX1JlY2lwaWVudEluZm9zOwotKwkJQ01TX2FkZDBfUmV2b2NhdGlvbkluZm9DaG9pY2U7Ci0rCQlDTVNfZGVjcnlwdF9zZXQxX3BrZXk7Ci0rCQlDTVNfU2lnbmVySW5mb19zZXQxX3NpZ25lcl9jZXJ0OwotKwkJQ01TX2dldDBfc2lnbmVyczsKLSsJCUNNU19SZWNlaXB0UmVxdWVzdF9nZXQwX3ZhbHVlczsKLSsJCUNNU19zaWduZWRfZ2V0MF9kYXRhX2J5X09CSjsKLSsJCUNNU19nZXQwX1NpZ25lckluZm9zOwotKwkJQ01TX2FkZDBfY2VydDsKLSsJCUNNU19FbmNyeXB0ZWREYXRhX2VuY3J5cHQ7Ci0rCQlDTVNfZGlnZXN0X3ZlcmlmeTsKLSsJCUNNU19zZXQxX3NpZ25lcnNfY2VydHM7Ci0rCQlDTVNfc2lnbmVkX2dldF9hdHRyOwotKwkJQ01TX1JlY2lwaWVudEluZm9fc2V0MF9rZXk7Ci0rCQlDTVNfU2lnbmVkRGF0YV9pbml0OwotKwkJQ01TX1JlY2lwaWVudEluZm9fa2VrcmlfZ2V0MF9pZDsKLSsJCUNNU192ZXJpZnlfcmVjZWlwdDsKLSsJCUNNU19SZWNlaXB0UmVxdWVzdF9pdDsKLSsJCVBFTV9yZWFkX2Jpb19DTVM7Ci0rCQlDTVNfZ2V0MV9jcmxzOwotKwkJQ01TX2FkZDBfcmVjaXBpZW50X2tleTsKLSsJCVNNSU1FX3JlYWRfQVNOMTsKLSsJCUNNU19SZWNlaXB0UmVxdWVzdF9uZXc7Ci0rCQlDTVNfZ2V0MF9jb250ZW50OwotKwkJQ01TX2dldDFfUmVjZWlwdFJlcXVlc3Q7Ci0rCQlDTVNfc2lnbmVkX2FkZDFfYXR0cl9ieV9PQko7Ci0rCQlDTVNfUmVjaXBpZW50SW5mb19rZWtyaV9pZF9jbXA7Ci0rCQlDTVNfYWRkMV9SZWNlaXB0UmVxdWVzdDsKLSsJCUNNU19TaWduZXJJbmZvX2dldDBfc2lnbmVyX2lkOwotKwkJQ01TX3Vuc2lnbmVkX2FkZDFfYXR0cl9ieV9OSUQ7Ci0rCQlDTVNfdW5zaWduZWRfYWRkMV9hdHRyOwotKwkJQ01TX3NpZ25lZF9nZXRfYXR0cl9ieV9OSUQ7Ci0rCQlDTVNfZ2V0MV9jZXJ0czsKLSsJCUNNU19zaWduZWRfYWRkMV9hdHRyX2J5X05JRDsKLSsJCUNNU191bnNpZ25lZF9hZGQxX2F0dHJfYnlfdHh0OwotKwkJQ01TX2RhdGFGaW5hbDsKLSsJCUNNU19SZWNpcGllbnRJbmZvX2t0cmlfZ2V0MF9zaWduZXJfaWQ7Ci0rCQlDTVNfUmVjaXBJbmZvX2t0cmlfZ2V0MF9zaWdyX2lkOwotKwkJaTJkX0NNU19SZWNlaXB0UmVxdWVzdDsKLSsJCUNNU19hZGQxX3JlY2lwaWVudF9jZXJ0OwotKwkJQ01TX2RhdGFJbml0OwotKwkJQ01TX3NpZ25lZF9hZGQxX2F0dHJfYnlfdHh0OwotKwkJQ01TX1JlY2lwaWVudEluZm9fZGVjcnlwdDsKLSsJCUNNU19zaWduZWRfZ2V0X2F0dHJfY291bnQ7Ci0rCQlDTVNfZ2V0MF9lQ29udGVudFR5cGU7Ci0rCQlDTVNfc2V0MV9lQ29udGVudFR5cGU7Ci0rCQlDTVNfUmVjZWlwdFJlcXVlc3RfY3JlYXRlMDsKLSsJCUNNU19hZGQxX3NpZ25lcjsKLSsJCUNNU19SZWNpcGllbnRJbmZvX3NldDBfcGtleTsKLSsJCUVOR0lORV9zZXRfbG9hZF9zc2xfY2xpZW50X2NlcnRfZnVuY3Rpb247Ci0rCQlFTkdJTkVfc2V0X2xkX3NzbF9jbG50X2NlcnRfZm47Ci0rCQlFTkdJTkVfZ2V0X3NzbF9jbGllbnRfY2VydF9mdW5jdGlvbjsKLSsJCUVOR0lORV9nZXRfc3NsX2NsaWVudF9jZXJ0X2ZuOwotKwkJRU5HSU5FX2xvYWRfc3NsX2NsaWVudF9jZXJ0OwotKwkJRU5HSU5FX2xvYWRfY2FwaTsKLSsJCU9QRU5TU0xfaXNzZXJ2aWNlOwotKwkJRklQU19kc2Ffc2lnX2RlY29kZTsKLSsJCUVWUF9DSVBIRVJfQ1RYX2NsZWFyX2ZsYWdzOwotKwkJRklQU19yYW5kX3N0YXR1czsKLSsJCUZJUFNfcmFuZF9zZXRfa2V5OwotKwkJQ1JZUFRPX3NldF9tZW1faW5mb19mdW5jdGlvbnM7Ci0rCQlSU0FfWDkzMV9nZW5lcmF0ZV9rZXlfZXg7Ci0rCQlpbnRfRVJSX3NldF9zdGF0ZV9mdW5jOwotKwkJaW50X0VWUF9NRF9zZXRfZW5naW5lX2NhbGxiYWNrczsKLSsJCWludF9DUllQVE9fc2V0X2RvX2R5bmxvY2tfY2FsbGJhY2s7Ci0rCQlGSVBTX3JuZ19zdGljazsKLSsJCUVWUF9DSVBIRVJfQ1RYX3NldF9mbGFnczsKLSsJCUJOX1g5MzFfZ2VuZXJhdGVfcHJpbWVfZXg7Ci0rCQlGSVBTX3NlbGZ0ZXN0X2NoZWNrOwotKwkJRklQU19yYW5kX3NldF9kdDsKLSsJCUNSWVBUT19kYmdfcG9wX2luZm87Ci0rCQlGSVBTX2RzYV9mcmVlOwotKwkJUlNBX1g5MzFfZGVyaXZlX2V4OwotKwkJRklQU19yc2FfbmV3OwotKwkJRklQU19yYW5kX2J5dGVzOwotKwkJZmlwc19jaXBoZXJfdGVzdDsKLSsJCUVWUF9DSVBIRVJfQ1RYX3Rlc3RfZmxhZ3M7Ci0rCQlDUllQVE9fbWFsbG9jX2RlYnVnX2luaXQ7Ci0rCQlDUllQVE9fZGJnX3B1c2hfaW5mbzsKLSsJCUZJUFNfY29ycnVwdF9yc2Ffa2V5Z2VuOwotKwkJRklQU19kaF9uZXc7Ci0rCQlGSVBTX2NvcnJ1cHRfZHNhX2tleWdlbjsKLSsJCUZJUFNfZGhfZnJlZTsKLSsJCWZpcHNfcGtleV9zaWduYXR1cmVfdGVzdDsKLSsJCUVWUF9hZGRfYWxnX21vZHVsZTsKLSsJCWludF9SQU5EX2luaXRfZW5naW5lX2NhbGxiYWNrczsKLSsJCWludF9FVlBfQ0lQSEVSX3NldF9lbmdpbmVfY2FsbGJhY2tzOwotKwkJaW50X0VWUF9NRF9pbml0X2VuZ2luZV9jYWxsYmFja3M7Ci0rCQlGSVBTX3JhbmRfdGVzdF9tb2RlOwotKwkJRklQU19yYW5kX3Jlc2V0OwotKwkJRklQU19kc2FfbmV3OwotKwkJaW50X1JBTkRfc2V0X2NhbGxiYWNrczsKLSsJCUJOX1g5MzFfZGVyaXZlX3ByaW1lX2V4OwotKwkJaW50X0VSUl9saWJfaW5pdDsKLSsJCWludF9FVlBfQ0lQSEVSX2luaXRfZW5naW5lX2NhbGxiYWNrczsKLSsJCUZJUFNfcnNhX2ZyZWU7Ci0rCQlGSVBTX2RzYV9zaWdfZW5jb2RlOwotKwkJQ1JZUFRPX2RiZ19yZW1vdmVfYWxsX2luZm87Ci0rCQlPUEVOU1NMX2luaXQ7Ci0rCQlDUllQVE9fc3RyZHVwOwotKwkJSlBBS0VfU1RFUDNBX3Byb2Nlc3M7Ci0rCQlKUEFLRV9TVEVQMV9yZWxlYXNlOwotKwkJSlBBS0VfZ2V0X3NoYXJlZF9rZXk7Ci0rCQlKUEFLRV9TVEVQM0JfaW5pdDsKLSsJCUpQQUtFX1NURVAxX2dlbmVyYXRlOwotKwkJSlBBS0VfU1RFUDFfaW5pdDsKLSsJCUpQQUtFX1NURVAzQl9wcm9jZXNzOwotKwkJSlBBS0VfU1RFUDJfZ2VuZXJhdGU7Ci0rCQlKUEFLRV9DVFhfbmV3OwotKwkJSlBBS0VfQ1RYX2ZyZWU7Ci0rCQlKUEFLRV9TVEVQM0JfcmVsZWFzZTsKLSsJCUpQQUtFX1NURVAzQV9yZWxlYXNlOwotKwkJSlBBS0VfU1RFUDJfcHJvY2VzczsKLSsJCUpQQUtFX1NURVAzQl9nZW5lcmF0ZTsKLSsJCUpQQUtFX1NURVAxX3Byb2Nlc3M7Ci0rCQlKUEFLRV9TVEVQM0FfZ2VuZXJhdGU7Ci0rCQlKUEFLRV9TVEVQMl9yZWxlYXNlOwotKwkJSlBBS0VfU1RFUDNBX2luaXQ7Ci0rCQlFUlJfbG9hZF9KUEFLRV9zdHJpbmdzOwotKwkJSlBBS0VfU1RFUDJfaW5pdDsKLSsJCXBxdWV1ZV9zaXplOwotKwkJaTJkX1RTX0FDQ1VSQUNZOwotKwkJaTJkX1RTX01TR19JTVBSSU5UX2ZwOwotKwkJaTJkX1RTX01TR19JTVBSSU5UOwotKwkJRVZQX1BLRVlfcHJpbnRfcHVibGljOwotKwkJRVZQX1BLRVlfQ1RYX25ldzsKLSsJCWkyZF9UU19UU1RfSU5GTzsKLSsJCUVWUF9QS0VZX2FzbjFfZmluZDsKLSsJCURTT19NRVRIT0RfYmVvczsKLSsJCVRTX0NPTkZfbG9hZF9jZXJ0OwotKwkJVFNfUkVRX2dldF9leHQ7Ci0rCQlFVlBfUEtFWV9zaWduX2luaXQ7Ci0rCQlBU04xX2l0ZW1fcHJpbnQ7Ci0rCQlUU19UU1RfSU5GT19zZXRfbm9uY2U7Ci0rCQlUU19SRVNQX2R1cDsKLSsJCUVOR0lORV9yZWdpc3Rlcl9wa2V5X21ldGhzOwotKwkJRVZQX1BLRVlfYXNuMV9hZGQwOwotKwkJUEtDUzdfYWRkMF9hdHRyaWJfc2lnbmluZ190aW1lOwotKwkJaTJkX1RTX1RTVF9JTkZPX2ZwOwotKwkJQklPX2FzbjFfZ2V0X3ByZWZpeDsKLSsJCVRTX1RTVF9JTkZPX3NldF90aW1lOwotKwkJRVZQX1BLRVlfbWV0aF9zZXRfZGVjcnlwdDsKLSsJCUVWUF9QS0VZX3NldF90eXBlX3N0cjsKLSsJCUVWUF9QS0VZX0NUWF9nZXRfa2V5Z2VuX2luZm87Ci0rCQlUU19SRVFfc2V0X3BvbGljeV9pZDsKLSsJCWQyaV9UU19SRVNQX2ZwOwotKwkJRU5HSU5FX2dldF9wa2V5X2FzbjFfbWV0aF9lbmdpbmU7Ci0rCQlFTkdJTkVfZ2V0X3BrZXlfYXNuMV9tZXRoX2VuZzsKLSsJCVdISVJMUE9PTF9Jbml0OwotKwkJVFNfUkVTUF9zZXRfc3RhdHVzX2luZm87Ci0rCQlFVlBfUEtFWV9rZXlnZW47Ci0rCQlFVlBfRGlnZXN0U2lnbkluaXQ7Ci0rCQlUU19BQ0NVUkFDWV9zZXRfbWlsbGlzOwotKwkJVFNfUkVRX2R1cDsKLSsJCUdFTkVSQUxfTkFNRV9kdXA7Ci0rCQlBU04xX1NFUVVFTkNFX0FOWV9pdDsKLSsJCVdISVJMUE9PTDsKLSsJCVg1MDlfU1RPUkVfZ2V0MV9jcmxzOwotKwkJRU5HSU5FX2dldF9wa2V5X2FzbjFfbWV0aDsKLSsJCUVWUF9QS0VZX2FzbjFfbmV3OwotKwkJQklPX25ld19OREVGOwotKwkJRU5HSU5FX2dldF9wa2V5X21ldGg7Ci0rCQlUU19NU0dfSU1QUklOVF9zZXRfYWxnbzsKLSsJCWkyZF9UU19UU1RfSU5GT19iaW87Ci0rCQlUU19UU1RfSU5GT19zZXRfb3JkZXJpbmc7Ci0rCQlUU19UU1RfSU5GT19nZXRfZXh0X2J5X09CSjsKLSsJCUNSWVBUT19USFJFQURJRF9zZXRfcG9pbnRlcjsKLSsJCVRTX0NPTkZfZ2V0X3RzYV9zZWN0aW9uOwotKwkJU01JTUVfd3JpdGVfQVNOMTsKLSsJCVRTX1JFU1BfQ1RYX3NldF9zaWduZXJfa2V5OwotKwkJRVZQX1BLRVlfZW5jcnlwdF9vbGQ7Ci0rCQlFVlBfUEtFWV9lbmNyeXB0X2luaXQ7Ci0rCQlDUllQVE9fVEhSRUFESURfY3B5OwotKwkJQVNOMV9QQ1RYX2dldF9jZXJ0X2ZsYWdzOwotKwkJaTJkX0VTU19TSUdOSU5HX0NFUlQ7Ci0rCQlUU19DT05GX2xvYWRfa2V5OwotKwkJaTJkX0FTTjFfU0VRVUVOQ0VfQU5ZOwotKwkJZDJpX1RTX01TR19JTVBSSU5UX2JpbzsKLSsJCUVWUF9QS0VZX2FzbjFfc2V0X3B1YmxpYzsKLSsJCWIyaV9QdWJsaWNLZXlfYmlvOwotKwkJQklPX2FzbjFfc2V0X3ByZWZpeDsKLSsJCUVWUF9QS0VZX25ld19tYWNfa2V5OwotKwkJQklPX25ld19DTVM7Ci0rCQlDUllQVE9fVEhSRUFESURfY21wOwotKwkJVFNfUkVRX2V4dF9mcmVlOwotKwkJRVZQX1BLRVlfYXNuMV9zZXRfZnJlZTsKLSsJCUVWUF9QS0VZX2dldDBfYXNuMTsKLSsJCWQyaV9ORVRTQ0FQRV9YNTA5OwotKwkJRVZQX1BLRVlfdmVyaWZ5X3JlY292ZXJfaW5pdDsKLSsJCUVWUF9QS0VZX0NUWF9zZXRfZGF0YTsKLSsJCUVWUF9QS0VZX2tleWdlbl9pbml0OwotKwkJVFNfUkVTUF9DVFhfc2V0X3N0YXR1c19pbmZvOwotKwkJVFNfTVNHX0lNUFJJTlRfZ2V0X2FsZ287Ci0rCQlUU19SRVFfcHJpbnRfYmlvOwotKwkJRVZQX1BLRVlfQ1RYX2N0cmxfc3RyOwotKwkJRVZQX1BLRVlfZ2V0X2RlZmF1bHRfZGlnZXN0X25pZDsKLSsJCVBFTV93cml0ZV9iaW9fUEtDUzdfc3RyZWFtOwotKwkJVFNfTVNHX0lNUFJJTlRfcHJpbnRfYmlvOwotKwkJQk5fYXNjMmJuOwotKwkJVFNfUkVRX2dldF9wb2xpY3lfaWQ7Ci0rCQlFTkdJTkVfc2V0X2RlZmF1bHRfcGtleV9hc24xX21ldGhzOwotKwkJRU5HSU5FX3NldF9kZWZfcGtleV9hc24xX21ldGhzOwotKwkJZDJpX1RTX0FDQ1VSQUNZOwotKwkJRFNPX2dsb2JhbF9sb29rdXA7Ci0rCQlUU19DT05GX3NldF90c2FfbmFtZTsKLSsJCWkyZF9BU04xX1NFVF9BTlk7Ci0rCQlFTkdJTkVfbG9hZF9nb3N0OwotKwkJV0hJUkxQT09MX0JpdFVwZGF0ZTsKLSsJCUFTTjFfUENUWF9nZXRfZmxhZ3M7Ci0rCQlUU19UU1RfSU5GT19nZXRfZXh0X2J5X05JRDsKLSsJCVRTX1JFU1BfbmV3OwotKwkJRVNTX0NFUlRfSURfZHVwOwotKwkJVFNfU1RBVFVTX0lORk9fZHVwOwotKwkJVFNfUkVRX2RlbGV0ZV9leHQ7Ci0rCQlFVlBfRGlnZXN0VmVyaWZ5RmluYWw7Ci0rCQlFVlBfUEtFWV9wcmludF9wYXJhbXM7Ci0rCQlpMmRfQ01TX2Jpb19zdHJlYW07Ci0rCQlUU19SRVFfZ2V0X21zZ19pbXByaW50OwotKwkJT0JKX2ZpbmRfc2lnaWRfYnlfYWxnczsKLSsJCVRTX1RTVF9JTkZPX2dldF9zZXJpYWw7Ci0rCQlUU19SRVFfZ2V0X25vbmNlOwotKwkJWDUwOV9QVUJLRVlfc2V0MF9wYXJhbTsKLSsJCUVWUF9QS0VZX0NUWF9zZXQwX2tleWdlbl9pbmZvOwotKwkJRElTVF9QT0lOVF9zZXRfZHBuYW1lOwotKwkJaTJkX0lTU1VJTkdfRElTVF9QT0lOVDsKLSsJCUFTTjFfU0VUX0FOWV9pdDsKLSsJCUVWUF9QS0VZX0NUWF9nZXRfZGF0YTsKLSsJCVRTX1NUQVRVU19JTkZPX3ByaW50X2JpbzsKLSsJCUVWUF9QS0VZX2Rlcml2ZV9pbml0OwotKwkJZDJpX1RTX1RTVF9JTkZPOwotKwkJRVZQX1BLRVlfYXNuMV9hZGRfYWxpYXM7Ci0rCQlkMmlfVFNfUkVTUF9iaW87Ci0rCQlPVEhFUk5BTUVfY21wOwotKwkJR0VORVJBTF9OQU1FX3NldDBfdmFsdWU7Ci0rCQlQS0NTN19SRUNJUF9JTkZPX2dldDBfYWxnOwotKwkJVFNfUkVTUF9DVFhfbmV3OwotKwkJVFNfUkVTUF9zZXRfdHN0X2luZm87Ci0rCQlQS0NTN19maW5hbDsKLSsJCUVWUF9QS0VZX2Jhc2VfaWQ7Ci0rCQlUU19SRVNQX0NUWF9zZXRfc2lnbmVyX2NlcnQ7Ci0rCQlUU19SRVFfc2V0X21zZ19pbXByaW50OwotKwkJRVZQX1BLRVlfQ1RYX2N0cmw7Ci0rCQlUU19DT05GX3NldF9kaWdlc3RzOwotKwkJZDJpX1RTX01TR19JTVBSSU5UOwotKwkJRVZQX1BLRVlfbWV0aF9zZXRfY3RybDsKLSsJCVRTX1JFUV9nZXRfZXh0X2J5X05JRDsKLSsJCVBLQ1M1X3BiZV9zZXQwX2FsZ29yOwotKwkJQk5fQkxJTkRJTkdfdGhyZWFkX2lkOwotKwkJVFNfQUNDVVJBQ1lfbmV3OwotKwkJWDUwOV9DUkxfTUVUSE9EX2ZyZWU7Ci0rCQlBU04xX1BDVFhfZ2V0X25tX2ZsYWdzOwotKwkJRVZQX1BLRVlfbWV0aF9zZXRfc2lnbjsKLSsJCUNSWVBUT19USFJFQURJRF9jdXJyZW50OwotKwkJRVZQX1BLRVlfZGVjcnlwdF9pbml0OwotKwkJTkVUU0NBUEVfWDUwOV9mcmVlOwotKwkJaTJiX1BWS19iaW87Ci0rCQlFVlBfUEtFWV9wcmludF9wcml2YXRlOwotKwkJR0VORVJBTF9OQU1FX2dldDBfdmFsdWU7Ci0rCQliMmlfUFZLX2JpbzsKLSsJCUFTTjFfVVRDVElNRV9hZGo7Ci0rCQlUU19UU1RfSU5GT19uZXc7Ci0rCQlFVlBfTURfZG9fYWxsX3NvcnRlZDsKLSsJCVRTX0NPTkZfc2V0X2RlZmF1bHRfZW5naW5lOwotKwkJVFNfQUNDVVJBQ1lfc2V0X3NlY29uZHM7Ci0rCQlUU19UU1RfSU5GT19nZXRfdGltZTsKLSsJCVBLQ1M4X3BrZXlfZ2V0MDsKLSsJCUVWUF9QS0VZX2FzbjFfZ2V0MDsKLSsJCU9CSl9hZGRfc2lnaWQ7Ci0rCQlQS0NTN19TSUdORVJfSU5GT19zaWduOwotKwkJRVZQX1BLRVlfcGFyYW1nZW5faW5pdDsKLSsJCUVWUF9QS0VZX3NpZ247Ci0rCQlPQkpfc2lnaWRfZnJlZTsKLSsJCUVWUF9QS0VZX21ldGhfc2V0X2luaXQ7Ci0rCQlkMmlfRVNTX0lTU1VFUl9TRVJJQUw7Ci0rCQlJU1NVSU5HX0RJU1RfUE9JTlRfbmV3OwotKwkJQVNOMV9USU1FX2FkajsKLSsJCVRTX09CSl9wcmludF9iaW87Ci0rCQlFVlBfUEtFWV9tZXRoX3NldF92ZXJpZnlfcmVjb3ZlcjsKLSsJCUVWUF9QS0VZX21ldGhfc2V0X3ZyZnlfcmVjb3ZlcjsKLSsJCVRTX1JFU1BfZ2V0X3N0YXR1c19pbmZvOwotKwkJQ01TX3N0cmVhbTsKLSsJCUVWUF9QS0VZX0NUWF9zZXRfY2I7Ci0rCQlQS0NTN190b19UU19UU1RfSU5GTzsKLSsJCUFTTjFfUENUWF9nZXRfb2lkX2ZsYWdzOwotKwkJVFNfVFNUX0lORk9fYWRkX2V4dDsKLSsJCUVWUF9QS0VZX21ldGhfc2V0X2Rlcml2ZTsKLSsJCWkyZF9UU19SRVNQX2ZwOwotKwkJaTJkX1RTX01TR19JTVBSSU5UX2JpbzsKLSsJCVRTX1JFU1BfQ1RYX3NldF9hY2N1cmFjeTsKLSsJCVRTX1JFUV9zZXRfbm9uY2U7Ci0rCQlFU1NfQ0VSVF9JRF9uZXc7Ci0rCQlFTkdJTkVfcGtleV9hc24xX2ZpbmRfc3RyOwotKwkJVFNfUkVRX2dldF9leHRfY291bnQ7Ci0rCQlCVUZfcmV2ZXJzZTsKLSsJCVRTX1RTVF9JTkZPX3ByaW50X2JpbzsKLSsJCWQyaV9JU1NVSU5HX0RJU1RfUE9JTlQ7Ci0rCQlFTkdJTkVfZ2V0X3BrZXlfbWV0aHM7Ci0rCQlpMmJfUHJpdmF0ZUtleV9iaW87Ci0rCQlpMmRfVFNfUkVTUDsKLSsJCWIyaV9QdWJsaWNLZXk7Ci0rCQlUU19WRVJJRllfQ1RYX2NsZWFudXA7Ci0rCQlUU19TVEFUVVNfSU5GT19mcmVlOwotKwkJVFNfUkVTUF92ZXJpZnlfdG9rZW47Ci0rCQlPQkpfYnNlYXJjaF9leF87Ci0rCQlBU04xX2JuX3ByaW50OwotKwkJRVZQX1BLRVlfYXNuMV9nZXRfY291bnQ7Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfcGtleV9hc24xX21ldGhzOwotKwkJQVNOMV9QQ1RYX3NldF9ubV9mbGFnczsKLSsJCUVWUF9EaWdlc3RWZXJpZnlJbml0OwotKwkJRU5HSU5FX3NldF9kZWZhdWx0X3BrZXlfbWV0aHM7Ci0rCQlUU19UU1RfSU5GT19nZXRfcG9saWN5X2lkOwotKwkJVFNfUkVRX2dldF9jZXJ0X3JlcTsKLSsJCVg1MDlfQ1JMX3NldF9tZXRoX2RhdGE7Ci0rCQlQS0NTOF9wa2V5X3NldDA7Ci0rCQlBU04xX1NUUklOR19jb3B5OwotKwkJZDJpX1RTX1RTVF9JTkZPX2ZwOwotKwkJWDUwOV9DUkxfbWF0Y2g7Ci0rCQlFVlBfUEtFWV9hc24xX3NldF9wcml2YXRlOwotKwkJVFNfVFNUX0lORk9fZ2V0X2V4dF9kMmk7Ci0rCQlUU19SRVNQX0NUWF9hZGRfcG9saWN5OwotKwkJZDJpX1RTX1JFU1A7Ci0rCQlUU19DT05GX2xvYWRfY2VydHM7Ci0rCQlUU19UU1RfSU5GT19nZXRfbXNnX2ltcHJpbnQ7Ci0rCQlFUlJfbG9hZF9UU19zdHJpbmdzOwotKwkJVFNfVFNUX0lORk9fZ2V0X3ZlcnNpb247Ci0rCQlFVlBfUEtFWV9DVFhfZHVwOwotKwkJRVZQX1BLRVlfbWV0aF9zZXRfdmVyaWZ5OwotKwkJaTJiX1B1YmxpY0tleV9iaW87Ci0rCQlUU19DT05GX3NldF9jZXJ0czsKLSsJCUVWUF9QS0VZX2FzbjFfZ2V0MF9pbmZvOwotKwkJVFNfVkVSSUZZX0NUWF9mcmVlOwotKwkJVFNfUkVRX2dldF9leHRfYnlfY3JpdGljYWw7Ci0rCQlUU19SRVNQX0NUWF9zZXRfc2VyaWFsX2NiOwotKwkJWDUwOV9DUkxfZ2V0X21ldGhfZGF0YTsKLSsJCVRTX1JFU1BfQ1RYX3NldF90aW1lX2NiOwotKwkJVFNfTVNHX0lNUFJJTlRfZ2V0X21zZzsKLSsJCVRTX1RTVF9JTkZPX2V4dF9mcmVlOwotKwkJVFNfUkVRX2dldF92ZXJzaW9uOwotKwkJVFNfUkVRX2FkZF9leHQ7Ci0rCQlFVlBfUEtFWV9DVFhfc2V0X2FwcF9kYXRhOwotKwkJT0JKX2JzZWFyY2hfOwotKwkJRVZQX1BLRVlfbWV0aF9zZXRfdmVyaWZ5Y3R4OwotKwkJaTJkX1BLQ1M3X2Jpb19zdHJlYW07Ci0rCQlDUllQVE9fVEhSRUFESURfc2V0X251bWVyaWM7Ci0rCQlQS0NTN19zaWduX2FkZF9zaWduZXI7Ci0rCQlkMmlfVFNfVFNUX0lORk9fYmlvOwotKwkJVFNfVFNUX0lORk9fZ2V0X29yZGVyaW5nOwotKwkJVFNfUkVTUF9wcmludF9iaW87Ci0rCQlUU19UU1RfSU5GT19nZXRfZXh0czsKLSsJCUhNQUNfQ1RYX2NvcHk7Ci0rCQlQS0NTNV9wYmUyX3NldF9pdjsKLSsJCUVOR0lORV9nZXRfcGtleV9hc24xX21ldGhzOwotKwkJYjJpX1ByaXZhdGVLZXk7Ci0rCQlFVlBfUEtFWV9DVFhfZ2V0X2FwcF9kYXRhOwotKwkJVFNfUkVRX3NldF9jZXJ0X3JlcTsKLSsJCUNSWVBUT19USFJFQURJRF9zZXRfY2FsbGJhY2s7Ci0rCQlUU19DT05GX3NldF9zZXJpYWw7Ci0rCQlUU19UU1RfSU5GT19mcmVlOwotKwkJZDJpX1RTX1JFUV9mcDsKLSsJCVRTX1JFU1BfdmVyaWZ5X3Jlc3BvbnNlOwotKwkJaTJkX0VTU19JU1NVRVJfU0VSSUFMOwotKwkJVFNfQUNDVVJBQ1lfZ2V0X3NlY29uZHM7Ci0rCQlFVlBfQ0lQSEVSX2RvX2FsbDsKLSsJCWIyaV9Qcml2YXRlS2V5X2JpbzsKLSsJCU9DU1BfQ0VSVElEX2R1cDsKLSsJCVg1MDlfUFVCS0VZX2dldDBfcGFyYW07Ci0rCQlUU19NU0dfSU1QUklOVF9kdXA7Ci0rCQlQS0NTN19wcmludF9jdHg7Ci0rCQlpMmRfVFNfUkVRX2JpbzsKLSsJCUVWUF93aGlybHBvb2w7Ci0rCQlFVlBfUEtFWV9hc24xX3NldF9wYXJhbTsKLSsJCUVWUF9QS0VZX21ldGhfc2V0X2VuY3J5cHQ7Ci0rCQlBU04xX1BDVFhfc2V0X2ZsYWdzOwotKwkJaTJkX0VTU19DRVJUX0lEOwotKwkJVFNfVkVSSUZZX0NUWF9uZXc7Ci0rCQlUU19SRVNQX0NUWF9zZXRfZXh0ZW5zaW9uX2NiOwotKwkJRU5HSU5FX3JlZ2lzdGVyX2FsbF9wa2V5X21ldGhzOwotKwkJVFNfUkVTUF9DVFhfc2V0X3N0YXR1c19pbmZvX2NvbmQ7Ci0rCQlUU19SRVNQX0NUWF9zZXRfc3RhdF9pbmZvX2NvbmQ7Ci0rCQlFVlBfUEtFWV92ZXJpZnk7Ci0rCQlXSElSTFBPT0xfRmluYWw7Ci0rCQlYNTA5X0NSTF9NRVRIT0RfbmV3OwotKwkJRVZQX0RpZ2VzdFNpZ25GaW5hbDsKLSsJCVRTX1JFU1BfQ1RYX3NldF9kZWZfcG9saWN5OwotKwkJTkVUU0NBUEVfWDUwOV9pdDsKLSsJCVRTX1JFU1BfY3JlYXRlX3Jlc3BvbnNlOwotKwkJUEtDUzdfU0lHTkVSX0lORk9fZ2V0MF9hbGdzOwotKwkJVFNfVFNUX0lORk9fZ2V0X25vbmNlOwotKwkJRVZQX1BLRVlfZGVjcnlwdF9vbGQ7Ci0rCQlUU19UU1RfSU5GT19zZXRfcG9saWN5X2lkOwotKwkJVFNfQ09ORl9zZXRfZXNzX2NlcnRfaWRfY2hhaW47Ci0rCQlFVlBfUEtFWV9DVFhfZ2V0MF9wa2V5OwotKwkJZDJpX1RTX1JFUTsKLSsJCUVWUF9QS0VZX2FzbjFfZmluZF9zdHI7Ci0rCQlCSU9fZl9hc24xOwotKwkJRVNTX1NJR05JTkdfQ0VSVF9uZXc7Ci0rCQlFVlBfUEJFX2ZpbmQ7Ci0rCQlYNTA5X0NSTF9nZXQwX2J5X2NlcnQ7Ci0rCQlFVlBfUEtFWV9kZXJpdmU7Ci0rCQlpMmRfVFNfUkVROwotKwkJVFNfVFNUX0lORk9fZGVsZXRlX2V4dDsKLSsJCUVTU19JU1NVRVJfU0VSSUFMX2ZyZWU7Ci0rCQlBU04xX1BDVFhfc2V0X3N0cl9mbGFnczsKLSsJCUVOR0lORV9nZXRfcGtleV9hc24xX21ldGhfc3RyOwotKwkJVFNfQ09ORl9zZXRfc2lnbmVyX2tleTsKLSsJCVRTX0FDQ1VSQUNZX2dldF9taWxsaXM7Ci0rCQlUU19SRVNQX2dldF90b2tlbjsKLSsJCVRTX0FDQ1VSQUNZX2R1cDsKLSsJCUVOR0lORV9yZWdpc3Rlcl9hbGxfcGtleV9hc24xX21ldGhzOwotKwkJRU5HSU5FX3JlZ19hbGxfcGtleV9hc24xX21ldGhzOwotKwkJWDUwOV9DUkxfc2V0X2RlZmF1bHRfbWV0aG9kOwotKwkJQ1JZUFRPX1RIUkVBRElEX2hhc2g7Ci0rCQlDTVNfQ29udGVudEluZm9fcHJpbnRfY3R4OwotKwkJVFNfUkVTUF9mcmVlOwotKwkJSVNTVUlOR19ESVNUX1BPSU5UX2ZyZWU7Ci0rCQlFU1NfSVNTVUVSX1NFUklBTF9uZXc7Ci0rCQlDTVNfYWRkMV9jcmw7Ci0rCQlQS0NTN19hZGQxX2F0dHJpYl9kaWdlc3Q7Ci0rCQlUU19SRVNQX0NUWF9hZGRfbWQ7Ci0rCQlUU19UU1RfSU5GT19kdXA7Ci0rCQlFTkdJTkVfc2V0X3BrZXlfYXNuMV9tZXRoczsKLSsJCVBFTV93cml0ZV9iaW9fUGFyYW1ldGVyczsKLSsJCVRTX1RTVF9JTkZPX2dldF9hY2N1cmFjeTsKLSsJCVg1MDlfQ1JMX2dldDBfYnlfc2VyaWFsOwotKwkJVFNfVFNUX0lORk9fc2V0X3ZlcnNpb247Ci0rCQlUU19SRVNQX0NUWF9nZXRfdHN0X2luZm87Ci0rCQlUU19SRVNQX3ZlcmlmeV9zaWduYXR1cmU7Ci0rCQlDUllQVE9fVEhSRUFESURfZ2V0X2NhbGxiYWNrOwotKwkJVFNfVFNUX0lORk9fZ2V0X3RzYTsKLSsJCVRTX1NUQVRVU19JTkZPX25ldzsKLSsJCUVWUF9QS0VZX0NUWF9nZXRfY2I7Ci0rCQlUU19SRVFfZ2V0X2V4dF9kMmk7Ci0rCQlHRU5FUkFMX05BTUVfc2V0MF9vdGhlcm5hbWU7Ci0rCQlUU19UU1RfSU5GT19nZXRfZXh0X2NvdW50OwotKwkJVFNfUkVTUF9DVFhfZ2V0X3JlcXVlc3Q7Ci0rCQlpMmRfTkVUU0NBUEVfWDUwOTsKLSsJCUVOR0lORV9nZXRfcGtleV9tZXRoX2VuZ2luZTsKLSsJCUVWUF9QS0VZX21ldGhfc2V0X3NpZ25jdHg7Ci0rCQlFVlBfUEtFWV9hc24xX2NvcHk7Ci0rCQlBU04xX1RZUEVfY21wOwotKwkJRVZQX0NJUEhFUl9kb19hbGxfc29ydGVkOwotKwkJRVZQX1BLRVlfQ1RYX2ZyZWU7Ci0rCQlJU1NVSU5HX0RJU1RfUE9JTlRfaXQ7Ci0rCQlkMmlfVFNfTVNHX0lNUFJJTlRfZnA7Ci0rCQlYNTA5X1NUT1JFX2dldDFfY2VydHM7Ci0rCQlFVlBfUEtFWV9DVFhfZ2V0X29wZXJhdGlvbjsKLSsJCWQyaV9FU1NfU0lHTklOR19DRVJUOwotKwkJVFNfQ09ORl9zZXRfb3JkZXJpbmc7Ci0rCQlFVlBfUEJFX2FsZ19hZGRfdHlwZTsKLSsJCVRTX1JFUV9zZXRfdmVyc2lvbjsKLSsJCUVWUF9QS0VZX2dldDA7Ci0rCQlCSU9fYXNuMV9zZXRfc3VmZml4OwotKwkJaTJkX1RTX1NUQVRVU19JTkZPOwotKwkJRVZQX01EX2RvX2FsbDsKLSsJCVRTX1RTVF9JTkZPX3NldF9hY2N1cmFjeTsKLSsJCVBLQ1M3X2FkZF9hdHRyaWJfY29udGVudF90eXBlOwotKwkJRVJSX3JlbW92ZV90aHJlYWRfc3RhdGU7Ci0rCQlFVlBfUEtFWV9tZXRoX2FkZDA7Ci0rCQlUU19UU1RfSU5GT19zZXRfdHNhOwotKwkJRVZQX1BLRVlfbWV0aF9uZXc7Ci0rCQlXSElSTFBPT0xfVXBkYXRlOwotKwkJVFNfQ09ORl9zZXRfYWNjdXJhY3k7Ci0rCQlBU04xX1BDVFhfc2V0X29pZF9mbGFnczsKLSsJCUVTU19TSUdOSU5HX0NFUlRfZHVwOwotKwkJZDJpX1RTX1JFUV9iaW87Ci0rCQlYNTA5X3RpbWVfYWRqX2V4OwotKwkJVFNfUkVTUF9DVFhfYWRkX2ZsYWdzOwotKwkJZDJpX1RTX1NUQVRVU19JTkZPOwotKwkJVFNfTVNHX0lNUFJJTlRfc2V0X21zZzsKLSsJCUJJT19hc24xX2dldF9zdWZmaXg7Ci0rCQlUU19SRVFfZnJlZTsKLSsJCUVWUF9QS0VZX21ldGhfZnJlZTsKLSsJCVRTX1JFUV9nZXRfZXh0czsKLSsJCVRTX1JFU1BfQ1RYX3NldF9jbG9ja19wcmVjaXNpb25fZGlnaXRzOwotKwkJVFNfUkVTUF9DVFhfc2V0X2Nsa19wcmVjX2RpZ2l0czsKLSsJCVRTX1JFU1BfQ1RYX2FkZF9mYWlsdXJlX2luZm87Ci0rCQlpMmRfVFNfUkVTUF9iaW87Ci0rCQlFVlBfUEtFWV9DVFhfZ2V0MF9wZWVya2V5OwotKwkJUEVNX3dyaXRlX2Jpb19DTVNfc3RyZWFtOwotKwkJVFNfUkVRX25ldzsKLSsJCVRTX01TR19JTVBSSU5UX25ldzsKLSsJCUVWUF9QS0VZX21ldGhfZmluZDsKLSsJCUVWUF9QS0VZX2lkOwotKwkJVFNfVFNUX0lORk9fc2V0X3NlcmlhbDsKLSsJCWEyaV9HRU5FUkFMX05BTUU7Ci0rCQlUU19DT05GX3NldF9jcnlwdG9fZGV2aWNlOwotKwkJRVZQX1BLRVlfdmVyaWZ5X2luaXQ7Ci0rCQlUU19DT05GX3NldF9wb2xpY2llczsKLSsJCUFTTjFfUENUWF9uZXc7Ci0rCQlFU1NfQ0VSVF9JRF9mcmVlOwotKwkJRU5HSU5FX3VucmVnaXN0ZXJfcGtleV9tZXRoczsKLSsJCVRTX01TR19JTVBSSU5UX2ZyZWU7Ci0rCQlUU19WRVJJRllfQ1RYX2luaXQ7Ci0rCQlQS0NTN19zdHJlYW07Ci0rCQlUU19SRVNQX0NUWF9zZXRfY2VydHM7Ci0rCQlUU19DT05GX3NldF9kZWZfcG9saWN5OwotKwkJQVNOMV9HRU5FUkFMSVpFRFRJTUVfYWRqOwotKwkJTkVUU0NBUEVfWDUwOV9uZXc7Ci0rCQlUU19BQ0NVUkFDWV9mcmVlOwotKwkJVFNfUkVTUF9nZXRfdHN0X2luZm87Ci0rCQlFVlBfUEtFWV9kZXJpdmVfc2V0X3BlZXI7Ci0rCQlQRU1fcmVhZF9iaW9fUGFyYW1ldGVyczsKLSsJCVRTX0NPTkZfc2V0X2Nsb2NrX3ByZWNpc2lvbl9kaWdpdHM7Ci0rCQlUU19DT05GX3NldF9jbGtfcHJlY19kaWdpdHM7Ci0rCQlFU1NfSVNTVUVSX1NFUklBTF9kdXA7Ci0rCQlUU19BQ0NVUkFDWV9nZXRfbWljcm9zOwotKwkJQVNOMV9QQ1RYX2dldF9zdHJfZmxhZ3M7Ci0rCQlOQU1FX0NPTlNUUkFJTlRTX2NoZWNrOwotKwkJQVNOMV9CSVRfU1RSSU5HX2NoZWNrOwotKwkJWDUwOV9jaGVja19ha2lkOwotKwkJRU5HSU5FX3VucmVnaXN0ZXJfcGtleV9hc24xX21ldGhzOwotKwkJRU5HSU5FX3VucmVnX3BrZXlfYXNuMV9tZXRoczsKLSsJCUFTTjFfUENUWF9mcmVlOwotKwkJUEVNX3dyaXRlX2Jpb19BU04xX3N0cmVhbTsKLSsJCWkyZF9BU04xX2Jpb19zdHJlYW07Ci0rCQlUU19YNTA5X0FMR09SX3ByaW50X2JpbzsKLSsJCUVWUF9QS0VZX21ldGhfc2V0X2NsZWFudXA7Ci0rCQlFVlBfUEtFWV9hc24xX2ZyZWU7Ci0rCQlFU1NfU0lHTklOR19DRVJUX2ZyZWU7Ci0rCQlUU19UU1RfSU5GT19zZXRfbXNnX2ltcHJpbnQ7Ci0rCQlHRU5FUkFMX05BTUVfY21wOwotKwkJZDJpX0FTTjFfU0VUX0FOWTsKLSsJCUVOR0lORV9zZXRfcGtleV9tZXRoczsKLSsJCWkyZF9UU19SRVFfZnA7Ci0rCQlkMmlfQVNOMV9TRVFVRU5DRV9BTlk7Ci0rCQlHRU5FUkFMX05BTUVfZ2V0MF9vdGhlck5hbWU7Ci0rCQlkMmlfRVNTX0NFUlRfSUQ7Ci0rCQlPQkpfZmluZF9zaWdpZF9hbGdzOwotKwkJRVZQX1BLRVlfbWV0aF9zZXRfa2V5Z2VuOwotKwkJUEtDUzVfUEJLREYyX0hNQUM7Ci0rCQlFVlBfUEtFWV9wYXJhbWdlbjsKLSsJCUVWUF9QS0VZX21ldGhfc2V0X3BhcmFtZ2VuOwotKwkJQklPX25ld19QS0NTNzsKLSsJCUVWUF9QS0VZX3ZlcmlmeV9yZWNvdmVyOwotKwkJVFNfZXh0X3ByaW50X2JpbzsKLSsJCVRTX0FTTjFfSU5URUdFUl9wcmludF9iaW87Ci0rCQljaGVja19kZWZlcjsKLSsJCURTT19wYXRoYnlhZGRyOwotKwkJRVZQX1BLRVlfc2V0X3R5cGU7Ci0rCQlUU19BQ0NVUkFDWV9zZXRfbWljcm9zOwotKwkJVFNfUkVRX3RvX1RTX1ZFUklGWV9DVFg7Ci0rCQlFVlBfUEtFWV9tZXRoX3NldF9jb3B5OwotKwkJQVNOMV9QQ1RYX3NldF9jZXJ0X2ZsYWdzOwotKwkJVFNfVFNUX0lORk9fZ2V0X2V4dDsKLSsJCUVWUF9QS0VZX2FzbjFfc2V0X2N0cmw7Ci0rCQlUU19UU1RfSU5GT19nZXRfZXh0X2J5X2NyaXRpY2FsOwotKwkJRVZQX1BLRVlfQ1RYX25ld19pZDsKLSsJCVRTX1JFUV9nZXRfZXh0X2J5X09CSjsKLSsJCVRTX0NPTkZfc2V0X3NpZ25lcl9jZXJ0OwotKwkJWDUwOV9OQU1FX2hhc2hfb2xkOwotKwkJQVNOMV9USU1FX3NldF9zdHJpbmc7Ci0rCQlFVlBfTURfZmxhZ3M7Ci0rCQlUU19SRVNQX0NUWF9mcmVlOwotKwkJRFNBcGFyYW1zX2R1cDsKLSsJCURIcGFyYW1zX2R1cDsKLSsJCU9DU1BfUkVRX0NUWF9hZGQxX2hlYWRlcjsKLSsJCU9DU1BfUkVRX0NUWF9zZXQxX3JlcTsKLSsJCVg1MDlfU1RPUkVfc2V0X3ZlcmlmeV9jYjsKLSsJCVg1MDlfU1RPUkVfQ1RYX2dldDBfY3VycmVudF9jcmw7Ci0rCQlYNTA5X1NUT1JFX0NUWF9nZXQwX3BhcmVudF9jdHg7Ci0rCQlYNTA5X1NUT1JFX0NUWF9nZXQwX2N1cnJlbnRfaXNzdWVyOwotKwkJWDUwOV9TVE9SRV9DVFhfZ2V0MF9jdXJfaXNzdWVyOwotKwkJWDUwOV9pc3N1ZXJfbmFtZV9oYXNoX29sZDsKLSsJCVg1MDlfc3ViamVjdF9uYW1lX2hhc2hfb2xkOwotKwkJRVZQX0NJUEhFUl9DVFhfY29weTsKLSsJCVVJX21ldGhvZF9nZXRfcHJvbXB0X2NvbnN0cnVjdG9yOwotKwkJVUlfbWV0aG9kX2dldF9wcm9tcHRfY29uc3RydWN0cjsKLSsJCVVJX21ldGhvZF9zZXRfcHJvbXB0X2NvbnN0cnVjdG9yOwotKwkJVUlfbWV0aG9kX3NldF9wcm9tcHRfY29uc3RydWN0cjsKLSsJCUVWUF9yZWFkX3B3X3N0cmluZ19taW47Ci0rCQlDUllQVE9fY3RzMTI4X2VuY3J5cHQ7Ci0rCQlDUllQVE9fY3RzMTI4X2RlY3J5cHRfYmxvY2s7Ci0rCQlDUllQVE9fY2ZiMTI4XzFfZW5jcnlwdDsKLSsJCUNSWVBUT19jYmMxMjhfZW5jcnlwdDsKLSsJCUNSWVBUT19jdHIxMjhfZW5jcnlwdDsKLSsJCUNSWVBUT19vZmIxMjhfZW5jcnlwdDsKLSsJCUNSWVBUT19jdHMxMjhfZGVjcnlwdDsKLSsJCUNSWVBUT19jdHMxMjhfZW5jcnlwdF9ibG9jazsKLSsJCUNSWVBUT19jYmMxMjhfZGVjcnlwdDsKLSsJCUNSWVBUT19jZmIxMjhfZW5jcnlwdDsKLSsJCUNSWVBUT19jZmIxMjhfOF9lbmNyeXB0OwotKwotKwlsb2NhbDoKLSsJCSo7Ci0rfTsKLSsKLSsKLStPUEVOU1NMXzEuMC4xIHsKLSsJZ2xvYmFsOgotKwkJU1NMX3JlbmVnb3RpYXRlX2FiYnJldmlhdGVkOwotKwkJVExTdjFfMV9tZXRob2Q7Ci0rCQlUTFN2MV8xX2NsaWVudF9tZXRob2Q7Ci0rCQlUTFN2MV8xX3NlcnZlcl9tZXRob2Q7Ci0rCQlTU0xfQ1RYX3NldF9zcnBfY2xpZW50X3B3ZF9jYWxsYmFjazsKLSsJCVNTTF9DVFhfc2V0X3NycF9jbGllbnRfcHdkX2NiOwotKwkJU1NMX2dldF9zcnBfZzsKLSsJCVNTTF9DVFhfc2V0X3NycF91c2VybmFtZV9jYWxsYmFjazsKLSsJCVNTTF9DVFhfc2V0X3NycF91bl9jYjsKLSsJCVNTTF9nZXRfc3JwX3VzZXJpbmZvOwotKwkJU1NMX3NldF9zcnBfc2VydmVyX3BhcmFtOwotKwkJU1NMX3NldF9zcnBfc2VydmVyX3BhcmFtX3B3OwotKwkJU1NMX2dldF9zcnBfTjsKLSsJCVNTTF9nZXRfc3JwX3VzZXJuYW1lOwotKwkJU1NMX0NUWF9zZXRfc3JwX3Bhc3N3b3JkOwotKwkJU1NMX0NUWF9zZXRfc3JwX3N0cmVuZ3RoOwotKwkJU1NMX0NUWF9zZXRfc3JwX3ZlcmlmeV9wYXJhbV9jYWxsYmFjazsKLSsJCVNTTF9DVFhfc2V0X3NycF92ZnlfcGFyYW1fY2I7Ci0rCQlTU0xfQ1RYX3NldF9zcnBfY2JfYXJnOwotKwkJU1NMX0NUWF9zZXRfc3JwX3VzZXJuYW1lOwotKwkJU1NMX0NUWF9TUlBfQ1RYX2luaXQ7Ci0rCQlTU0xfU1JQX0NUWF9pbml0OwotKwkJU1JQX0NhbGNfQV9wYXJhbTsKLSsJCVNSUF9nZW5lcmF0ZV9zZXJ2ZXJfbWFzdGVyX3NlY3JldDsKLSsJCVNSUF9nZW5fc2VydmVyX21hc3Rlcl9zZWNyZXQ7Ci0rCQlTU0xfQ1RYX1NSUF9DVFhfZnJlZTsKLSsJCVNSUF9nZW5lcmF0ZV9jbGllbnRfbWFzdGVyX3NlY3JldDsKLSsJCVNSUF9nZW5fY2xpZW50X21hc3Rlcl9zZWNyZXQ7Ci0rCQlTU0xfc3JwX3NlcnZlcl9wYXJhbV93aXRoX3VzZXJuYW1lOwotKwkJU1NMX3NycF9zZXJ2ZXJfcGFyYW1fd2l0aF91bjsKLSsJCVNTTF9TUlBfQ1RYX2ZyZWU7Ci0rCQlTU0xfc2V0X2RlYnVnOwotKwkJU1NMX1NFU1NJT05fZ2V0MF9wZWVyOwotKwkJVExTdjFfMl9jbGllbnRfbWV0aG9kOwotKwkJU1NMX1NFU1NJT05fc2V0MV9pZF9jb250ZXh0OwotKwkJVExTdjFfMl9zZXJ2ZXJfbWV0aG9kOwotKwkJU1NMX2NhY2hlX2hpdDsKLSsJCVNTTF9nZXQwX2tzc2xfY3R4OwotKwkJU1NMX3NldDBfa3NzbF9jdHg7Ci0rCQlTU0xfc2V0X3N0YXRlOwotKwkJU1NMX0NJUEhFUl9nZXRfaWQ7Ci0rCQlUTFN2MV8yX21ldGhvZDsKLSsJCWtzc2xfY3R4X2dldDBfY2xpZW50X3ByaW5jOwotKwkJU1NMX2V4cG9ydF9rZXlpbmdfbWF0ZXJpYWw7Ci0rCQlTU0xfc2V0X3Rsc2V4dF91c2Vfc3J0cDsKLSsJCVNTTF9DVFhfc2V0X25leHRfcHJvdG9zX2FkdmVydGlzZWRfY2I7Ci0rCQlTU0xfQ1RYX3NldF9uZXh0X3Byb3Rvc19hZHZfY2I7Ci0rCQlTU0xfZ2V0MF9uZXh0X3Byb3RvX25lZ290aWF0ZWQ7Ci0rCQlTU0xfZ2V0X3NlbGVjdGVkX3NydHBfcHJvZmlsZTsKLSsJCVNTTF9DVFhfc2V0X3Rsc2V4dF91c2Vfc3J0cDsKLSsJCVNTTF9zZWxlY3RfbmV4dF9wcm90bzsKLSsJCVNTTF9nZXRfc3J0cF9wcm9maWxlczsKLSsJCVNTTF9DVFhfc2V0X25leHRfcHJvdG9fc2VsZWN0X2NiOwotKwkJU1NMX0NUWF9zZXRfbmV4dF9wcm90b19zZWxfY2I7Ci0rCQlTU0xfU0VTU0lPTl9nZXRfY29tcHJlc3NfaWQ7Ci0rCi0rCQlTUlBfVkJBU0VfZ2V0X2J5X3VzZXI7Ci0rCQlTUlBfQ2FsY19zZXJ2ZXJfa2V5OwotKwkJU1JQX2NyZWF0ZV92ZXJpZmllcjsKLSsJCVNSUF9jcmVhdGVfdmVyaWZpZXJfQk47Ci0rCQlTUlBfQ2FsY191OwotKwkJU1JQX1ZCQVNFX2ZyZWU7Ci0rCQlTUlBfQ2FsY19jbGllbnRfa2V5OwotKwkJU1JQX2dldF9kZWZhdWx0X2dOOwotKwkJU1JQX0NhbGNfeDsKLSsJCVNSUF9DYWxjX0I7Ci0rCQlTUlBfVkJBU0VfbmV3OwotKwkJU1JQX2NoZWNrX2tub3duX2dOX3BhcmFtOwotKwkJU1JQX0NhbGNfQTsKLSsJCVNSUF9WZXJpZnlfQV9tb2RfTjsKLSsJCVNSUF9WQkFTRV9pbml0OwotKwkJU1JQX1ZlcmlmeV9CX21vZF9OOwotKwkJRUNfS0VZX3NldF9wdWJsaWNfa2V5X2FmZmluZV9jb29yZGluYXRlczsKLSsJCUVDX0tFWV9zZXRfcHViX2tleV9hZmZfY29vcmRzOwotKwkJRVZQX2Flc18xOTJfY3RyOwotKwkJRVZQX1BLRVlfbWV0aF9nZXQwX2luZm87Ci0rCQlFVlBfUEtFWV9tZXRoX2NvcHk7Ci0rCQlFUlJfYWRkX2Vycm9yX3ZkYXRhOwotKwkJRVZQX2Flc18xMjhfY3RyOwotKwkJRVZQX2Flc18yNTZfY3RyOwotKwkJRUNfR0ZwX25pc3RwMjI0X21ldGhvZDsKLSsJCUVDX0tFWV9nZXRfZmxhZ3M7Ci0rCQlSU0FfcGFkZGluZ19hZGRfUEtDUzFfUFNTX21nZjE7Ci0rCQlFVlBfYWVzXzEyOF94dHM7Ci0rCQlFVlBfYWVzXzI1Nl94dHM7Ci0rCQlFVlBfYWVzXzEyOF9nY207Ci0rCQlFQ19LRVlfY2xlYXJfZmxhZ3M7Ci0rCQlFQ19LRVlfc2V0X2ZsYWdzOwotKwkJRVZQX2Flc18yNTZfY2NtOwotKwkJUlNBX3ZlcmlmeV9QS0NTMV9QU1NfbWdmMTsKLSsJCUVWUF9hZXNfMTI4X2NjbTsKLSsJCUVWUF9hZXNfMTkyX2djbTsKLSsJCVg1MDlfQUxHT1Jfc2V0X21kOwotKwkJUkFORF9pbml0X2ZpcHM7Ci0rCQlFVlBfYWVzXzI1Nl9nY207Ci0rCQlFVlBfYWVzXzE5Ml9jY207Ci0rCQlDTUFDX0NUWF9jb3B5OwotKwkJQ01BQ19DVFhfZnJlZTsKLSsJCUNNQUNfQ1RYX2dldDBfY2lwaGVyX2N0eDsKLSsJCUNNQUNfQ1RYX2NsZWFudXA7Ci0rCQlDTUFDX0luaXQ7Ci0rCQlDTUFDX1VwZGF0ZTsKLSsJCUNNQUNfcmVzdW1lOwotKwkJQ01BQ19DVFhfbmV3OwotKwkJQ01BQ19GaW5hbDsKLSsJCUNSWVBUT19jdHIxMjhfZW5jcnlwdF9jdHIzMjsKLSsJCUNSWVBUT19nY20xMjhfcmVsZWFzZTsKLSsJCUNSWVBUT19jY20xMjhfZGVjcnlwdF9jY202NDsKLSsJCUNSWVBUT19jY20xMjhfZW5jcnlwdDsKLSsJCUNSWVBUT19nY20xMjhfZW5jcnlwdDsKLSsJCUNSWVBUT194dHMxMjhfZW5jcnlwdDsKLSsJCUVWUF9yYzRfaG1hY19tZDU7Ci0rCQlDUllQVE9fbmlzdGN0czEyOF9kZWNyeXB0X2Jsb2NrOwotKwkJQ1JZUFRPX2djbTEyOF9zZXRpdjsKLSsJCUNSWVBUT19uaXN0Y3RzMTI4X2VuY3J5cHQ7Ci0rCQlFVlBfYWVzXzEyOF9jYmNfaG1hY19zaGExOwotKwkJQ1JZUFRPX2djbTEyOF90YWc7Ci0rCQlDUllQVE9fY2NtMTI4X2VuY3J5cHRfY2NtNjQ7Ci0rCQlFTkdJTkVfbG9hZF9yZHJhbmQ7Ci0rCQlDUllQVE9fY2NtMTI4X3NldGl2OwotKwkJQ1JZUFRPX25pc3RjdHMxMjhfZW5jcnlwdF9ibG9jazsKLSsJCUNSWVBUT19nY20xMjhfYWFkOwotKwkJQ1JZUFRPX2NjbTEyOF9pbml0OwotKwkJQ1JZUFRPX25pc3RjdHMxMjhfZGVjcnlwdDsKLSsJCUNSWVBUT19nY20xMjhfbmV3OwotKwkJQ1JZUFRPX2NjbTEyOF90YWc7Ci0rCQlDUllQVE9fY2NtMTI4X2RlY3J5cHQ7Ci0rCQlDUllQVE9fY2NtMTI4X2FhZDsKLSsJCUNSWVBUT19nY20xMjhfaW5pdDsKLSsJCUNSWVBUT19nY20xMjhfZGVjcnlwdDsKLSsJCUVOR0lORV9sb2FkX3JzYXg7Ci0rCQlDUllQVE9fZ2NtMTI4X2RlY3J5cHRfY3RyMzI7Ci0rCQlDUllQVE9fZ2NtMTI4X2VuY3J5cHRfY3RyMzI7Ci0rCQlDUllQVE9fZ2NtMTI4X2ZpbmlzaDsKLSsJCUVWUF9hZXNfMjU2X2NiY19obWFjX3NoYTE7Ci0rCQlQS0NTNV9wYmtkZjJfc2V0OwotKwkJQ01TX2FkZDBfcmVjaXBpZW50X3Bhc3N3b3JkOwotKwkJQ01TX2RlY3J5cHRfc2V0MV9wYXNzd29yZDsKLSsJCUNNU19SZWNpcGllbnRJbmZvX3NldDBfcGFzc3dvcmQ7Ci0rCQlSQU5EX3NldF9maXBzX2RyYmdfdHlwZTsKLSsJCVg1MDlfUkVRX3NpZ25fY3R4OwotKwkJUlNBX1BTU19QQVJBTVNfbmV3OwotKwkJWDUwOV9DUkxfc2lnbl9jdHg7Ci0rCQlYNTA5X3NpZ25hdHVyZV9kdW1wOwotKwkJZDJpX1JTQV9QU1NfUEFSQU1TOwotKwkJUlNBX1BTU19QQVJBTVNfaXQ7Ci0rCQlSU0FfUFNTX1BBUkFNU19mcmVlOwotKwkJWDUwOV9zaWduX2N0eDsKLSsJCWkyZF9SU0FfUFNTX1BBUkFNUzsKLSsJCUFTTjFfaXRlbV9zaWduX2N0eDsKLSsJCUVDX0dGcF9uaXN0cDUyMV9tZXRob2Q7Ci0rCQlFQ19HRnBfbmlzdHAyNTZfbWV0aG9kOwotKwkJT1BFTlNTTF9zdGRlcnI7Ci0rCQlPUEVOU1NMX2NwdWlkX3NldHVwOwotKwkJT1BFTlNTTF9zaG93ZmF0YWw7Ci0rCQlCSU9fbmV3X2RncmFtX3NjdHA7Ci0rCQlCSU9fZGdyYW1fc2N0cF9tc2dfd2FpdGluZzsKLSsJCUJJT19kZ3JhbV9zY3RwX3dhaXRfZm9yX2RyeTsKLSsJCUJJT19zX2RhdGFncmFtX3NjdHA7Ci0rCQlCSU9fZGdyYW1faXNfc2N0cDsKLSsJCUJJT19kZ3JhbV9zY3RwX25vdGlmaWNhdGlvbl9jYjsKLSt9IE9QRU5TU0xfMS4wLjA7Ci0rCi0rT1BFTlNTTF8xLjAuMWQgewotKwlnbG9iYWw6Ci0rCQlDUllQVE9fbWVtY21wOwotK30gT1BFTlNTTF8xLjAuMTsKLSsKLStPUEVOU1NMXzEuMC4yIHsKLSsJZ2xvYmFsOgotKwkJU1NMX0NUWF9zZXRfYWxwbl9wcm90b3M7Ci0rCQlTU0xfc2V0X2FscG5fcHJvdG9zOwotKwkJU1NMX0NUWF9zZXRfYWxwbl9zZWxlY3RfY2I7Ci0rCQlTU0xfZ2V0MF9hbHBuX3NlbGVjdGVkOwotKwkJU1NMX0NUWF9zZXRfY3VzdG9tX2NsaV9leHQ7Ci0rCQlTU0xfQ1RYX3NldF9jdXN0b21fc3J2X2V4dDsKLSsJCVNTTF9DVFhfc2V0X3Nydl9zdXBwX2RhdGE7Ci0rCQlTU0xfQ1RYX3NldF9jbGlfc3VwcF9kYXRhOwotKwkJU1NMX3NldF9jZXJ0X2NiOwotKwkJU1NMX0NUWF91c2Vfc2VydmVyaW5mbzsKLSsJCVNTTF9DVFhfdXNlX3NlcnZlcmluZm9fZmlsZTsKLSsJCVNTTF9DVFhfc2V0X2NlcnRfY2I7Ci0rCQlTU0xfQ1RYX2dldDBfcGFyYW07Ci0rCQlTU0xfZ2V0MF9wYXJhbTsKLSsJCVNTTF9jZXJ0c19jbGVhcjsKLSsJCURUTFN2MV8yX21ldGhvZDsKLSsJCURUTFN2MV8yX3NlcnZlcl9tZXRob2Q7Ci0rCQlEVExTdjFfMl9jbGllbnRfbWV0aG9kOwotKwkJRFRMU19tZXRob2Q7Ci0rCQlEVExTX3NlcnZlcl9tZXRob2Q7Ci0rCQlEVExTX2NsaWVudF9tZXRob2Q7Ci0rCQlTU0xfQ1RYX2dldF9zc2xfbWV0aG9kOwotKwkJU1NMX0NUWF9nZXQwX2NlcnRpZmljYXRlOwotKwkJU1NMX0NUWF9nZXQwX3ByaXZhdGVrZXk7Ci0rCQlTU0xfQ09NUF9zZXQwX2NvbXByZXNzaW9uX21ldGhvZHM7Ci0rCQlTU0xfQ09NUF9mcmVlX2NvbXByZXNzaW9uX21ldGhvZHM7Ci0rCQlTU0xfQ0lQSEVSX2ZpbmQ7Ci0rCQlTU0xfaXNfc2VydmVyOwotKwkJU1NMX0NPTkZfQ1RYX25ldzsKLSsJCVNTTF9DT05GX0NUWF9maW5pc2g7Ci0rCQlTU0xfQ09ORl9DVFhfZnJlZTsKLSsJCVNTTF9DT05GX0NUWF9zZXRfZmxhZ3M7Ci0rCQlTU0xfQ09ORl9DVFhfY2xlYXJfZmxhZ3M7Ci0rCQlTU0xfQ09ORl9DVFhfc2V0MV9wcmVmaXg7Ci0rCQlTU0xfQ09ORl9DVFhfc2V0X3NzbDsKLSsJCVNTTF9DT05GX0NUWF9zZXRfc3NsX2N0eDsKLSsJCVNTTF9DT05GX2NtZDsKLSsJCVNTTF9DT05GX2NtZF9hcmd2OwotKwkJU1NMX0NPTkZfY21kX3ZhbHVlX3R5cGU7Ci0rCQlTU0xfdHJhY2U7Ci0rCQlTU0xfQ0lQSEVSX3N0YW5kYXJkX25hbWU7Ci0rCQlTU0xfZ2V0X3Rsc2FfcmVjb3JkX2J5bmFtZTsKLSsJCUFTTjFfVElNRV9kaWZmOwotKwkJQklPX2hleF9zdHJpbmc7Ci0rCQlDTVNfUmVjaXBpZW50SW5mb19nZXQwX3BrZXlfY3R4OwotKwkJQ01TX1JlY2lwaWVudEluZm9fZW5jcnlwdDsKLSsJCUNNU19TaWduZXJJbmZvX2dldDBfcGtleV9jdHg7Ci0rCQlDTVNfU2lnbmVySW5mb19nZXQwX21kX2N0eDsKLSsJCUNNU19TaWduZXJJbmZvX2dldDBfc2lnbmF0dXJlOwotKwkJQ01TX1JlY2lwaWVudEluZm9fa2FyaV9nZXQwX2FsZzsKLSsJCUNNU19SZWNpcGllbnRJbmZvX2thcmlfZ2V0MF9yZWtzOwotKwkJQ01TX1JlY2lwaWVudEluZm9fa2FyaV9nZXQwX29yaWdfaWQ7Ci0rCQlDTVNfUmVjaXBpZW50SW5mb19rYXJpX29yaWdfaWRfY21wOwotKwkJQ01TX1JlY2lwaWVudEVuY3J5cHRlZEtleV9nZXQwX2lkOwotKwkJQ01TX1JlY2lwaWVudEVuY3J5cHRlZEtleV9jZXJ0X2NtcDsKLSsJCUNNU19SZWNpcGllbnRJbmZvX2thcmlfc2V0MF9wa2V5OwotKwkJQ01TX1JlY2lwaWVudEluZm9fa2FyaV9nZXQwX2N0eDsKLSsJCUNNU19SZWNpcGllbnRJbmZvX2thcmlfZGVjcnlwdDsKLSsJCUNNU19TaGFyZWRJbmZvX2VuY29kZTsKLSsJCURIX2NvbXB1dGVfa2V5X3BhZGRlZDsKLSsJCWQyaV9ESHhwYXJhbXM7Ci0rCQlpMmRfREh4cGFyYW1zOwotKwkJREhfZ2V0XzEwMjRfMTYwOwotKwkJREhfZ2V0XzIwNDhfMjI0OwotKwkJREhfZ2V0XzIwNDhfMjU2OwotKwkJREhfS0RGX1g5XzQyOwotKwkJRUNESF9LREZfWDlfNjI7Ci0rCQlFQ0RTQV9NRVRIT0RfbmV3OwotKwkJRUNEU0FfTUVUSE9EX2ZyZWU7Ci0rCQlFQ0RTQV9NRVRIT0Rfc2V0X2FwcF9kYXRhOwotKwkJRUNEU0FfTUVUSE9EX2dldF9hcHBfZGF0YTsKLSsJCUVDRFNBX01FVEhPRF9zZXRfc2lnbjsKLSsJCUVDRFNBX01FVEhPRF9zZXRfc2lnbl9zZXR1cDsKLSsJCUVDRFNBX01FVEhPRF9zZXRfdmVyaWZ5OwotKwkJRUNEU0FfTUVUSE9EX3NldF9mbGFnczsKLSsJCUVDRFNBX01FVEhPRF9zZXRfbmFtZTsKLSsJCUVWUF9kZXNfZWRlM193cmFwOwotKwkJRVZQX2Flc18xMjhfd3JhcDsKLSsJCUVWUF9hZXNfMTkyX3dyYXA7Ci0rCQlFVlBfYWVzXzI1Nl93cmFwOwotKwkJRVZQX2Flc18xMjhfY2JjX2htYWNfc2hhMjU2OwotKwkJRVZQX2Flc18yNTZfY2JjX2htYWNfc2hhMjU2OwotKwkJQ1JZUFRPXzEyOF93cmFwOwotKwkJQ1JZUFRPXzEyOF91bndyYXA7Ci0rCQlPQ1NQX1JFUV9DVFhfbmJpbzsKLSsJCU9DU1BfUkVRX0NUWF9uZXc7Ci0rCQlPQ1NQX3NldF9tYXhfcmVzcG9uc2VfbGVuZ3RoOwotKwkJT0NTUF9SRVFfQ1RYX2kyZDsKLSsJCU9DU1BfUkVRX0NUWF9uYmlvX2QyaTsKLSsJCU9DU1BfUkVRX0NUWF9nZXQwX21lbV9iaW87Ci0rCQlPQ1NQX1JFUV9DVFhfaHR0cDsKLSsJCVJTQV9wYWRkaW5nX2FkZF9QS0NTMV9PQUVQX21nZjE7Ci0rCQlSU0FfcGFkZGluZ19jaGVja19QS0NTMV9PQUVQX21nZjE7Ci0rCQlSU0FfT0FFUF9QQVJBTVNfZnJlZTsKLSsJCVJTQV9PQUVQX1BBUkFNU19pdDsKLSsJCVJTQV9PQUVQX1BBUkFNU19uZXc7Ci0rCQlTU0xfZ2V0X3NpZ2FsZ3M7Ci0rCQlTU0xfZ2V0X3NoYXJlZF9zaWdhbGdzOwotKwkJU1NMX2NoZWNrX2NoYWluOwotKwkJWDUwOV9jaGFpbl91cF9yZWY7Ci0rCQlYNTA5X2h0dHBfbmJpbzsKLSsJCVg1MDlfQ1JMX2h0dHBfbmJpbzsKLSsJCVg1MDlfUkVWT0tFRF9kdXA7Ci0rCQlpMmRfcmVfWDUwOV90YnM7Ci0rCQlYNTA5X2dldDBfc2lnbmF0dXJlOwotKwkJWDUwOV9nZXRfc2lnbmF0dXJlX25pZDsKLSsJCVg1MDlfQ1JMX2RpZmY7Ci0rCQlYNTA5X2NoYWluX2NoZWNrX3N1aXRlYjsKLSsJCVg1MDlfQ1JMX2NoZWNrX3N1aXRlYjsKLSsJCVg1MDlfY2hlY2tfaG9zdDsKLSsJCVg1MDlfY2hlY2tfZW1haWw7Ci0rCQlYNTA5X2NoZWNrX2lwOwotKwkJWDUwOV9jaGVja19pcF9hc2M7Ci0rCQlYNTA5X1NUT1JFX3NldF9sb29rdXBfY3Jsc19jYjsKLSsJCVg1MDlfU1RPUkVfQ1RYX2dldDBfc3RvcmU7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXQxX2hvc3Q7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9hZGQxX2hvc3Q7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXRfaG9zdGZsYWdzOwotKwkJWDUwOV9WRVJJRllfUEFSQU1fZ2V0MF9wZWVybmFtZTsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX3NldDFfZW1haWw7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXQxX2lwOwotKwkJWDUwOV9WRVJJRllfUEFSQU1fc2V0MV9pcF9hc2M7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9nZXQwX25hbWU7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9nZXRfY291bnQ7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9nZXQwOwotKwkJWDUwOVYzX0VYVF9mcmVlOwotKwkJRUNfR1JPVVBfZ2V0X21vbnRfZGF0YTsKLSsJCUVDX2N1cnZlX25pZDJuaXN0OwotKwkJRUNfY3VydmVfbmlzdDJuaWQ7Ci0rCQlQRU1fd3JpdGVfYmlvX0RIeHBhcmFtczsKLSsJCVBFTV93cml0ZV9ESHhwYXJhbXM7Ci0rCQlTU0xfQ1RYX2FkZF9jbGllbnRfY3VzdG9tX2V4dDsKLSsJCVNTTF9DVFhfYWRkX3NlcnZlcl9jdXN0b21fZXh0OwotKwkJU1NMX2V4dGVuc2lvbl9zdXBwb3J0ZWQ7Ci0rCQlCVUZfc3RybmxlbjsKLSsJCXNrX2RlZXBfY29weTsKLSsJCVNTTF90ZXN0X2Z1bmN0aW9uczsKLSt9IE9QRU5TU0xfMS4wLjFkOwotKwotSW5kZXg6IG9wZW5zc2wtMS4wLjJ+YmV0YTEub2Jzb2xldGUuMC4wNDk4NDM2NTE1NDkwNTc1L2VuZ2luZXMvb3BlbnNzbC5sZAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIG9wZW5zc2wtMS4wLjJ+YmV0YTEub2Jzb2xldGUuMC4wNDk4NDM2NTE1NDkwNTc1L2VuZ2luZXMvb3BlbnNzbC5sZAkyMDE0LTAyLTI0IDIxOjAyOjMwLjAwMDAwMDAwMCArMDEwMAotQEAgLTAsMCArMSwxMCBAQAotK09QRU5TU0xfMS4wLjAgewotKwlnbG9iYWw6Ci0rCQliaW5kX2VuZ2luZTsKLSsJCXZfY2hlY2s7Ci0rCQlPUEVOU1NMX2luaXQ7Ci0rCQlPUEVOU1NMX2ZpbmlzaDsKLSsJbG9jYWw6Ci0rCQkqOwotK307Ci0rCi1JbmRleDogb3BlbnNzbC0xLjAuMn5iZXRhMS5vYnNvbGV0ZS4wLjA0OTg0MzY1MTU0OTA1NzUvZW5naW5lcy9jY2dvc3Qvb3BlbnNzbC5sZAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIG9wZW5zc2wtMS4wLjJ+YmV0YTEub2Jzb2xldGUuMC4wNDk4NDM2NTE1NDkwNTc1L2VuZ2luZXMvY2Nnb3N0L29wZW5zc2wubGQJMjAxNC0wMi0yNCAyMTowMjozMC4wMDAwMDAwMDAgKzAxMDAKLUBAIC0wLDAgKzEsMTAgQEAKLStPUEVOU1NMXzEuMC4wIHsKLSsJZ2xvYmFsOgotKwkJYmluZF9lbmdpbmU7Ci0rCQl2X2NoZWNrOwotKwkJT1BFTlNTTF9pbml0OwotKwkJT1BFTlNTTF9maW5pc2g7Ci0rCWxvY2FsOgotKwkJKjsKLSt9OwotKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL2RlYmlhbjEuMC4yL3NvbmFtZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9kZWJpYW4xLjAuMi9zb25hbWUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5Y2RmZWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL2RlYmlhbjEuMC4yL3NvbmFtZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLUluZGV4OiBvcGVuc3NsLTEuMC4yZC9jcnlwdG8vb3BlbnNzbHYuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG9wZW5zc2wtMS4wLjJkLm9yaWcvY3J5cHRvL29wZW5zc2x2LmgKLSsrKyBvcGVuc3NsLTEuMC4yZC9jcnlwdG8vb3BlbnNzbHYuaAotQEAgLTg4LDcgKzg4LDcgQEAgZXh0ZXJuICJDIiB7Ci0gICogc2hvdWxkIG9ubHkga2VlcCB0aGUgdmVyc2lvbnMgdGhhdCBhcmUgYmluYXJ5IGNvbXBhdGlibGUgd2l0aCB0aGUgY3VycmVudC4KLSAgKi8KLSAjIGRlZmluZSBTSExJQl9WRVJTSU9OX0hJU1RPUlkgIiIKLS0jIGRlZmluZSBTSExJQl9WRVJTSU9OX05VTUJFUiAiMS4wLjAiCi0rIyBkZWZpbmUgU0hMSUJfVkVSU0lPTl9OVU1CRVIgIjEuMC4yIgotIAotIAotICNpZmRlZiAgX19jcGx1c3BsdXMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9kZWJpYW4xLjAuMi92ZXJzaW9uLXNjcmlwdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9kZWJpYW4xLjAuMi92ZXJzaW9uLXNjcmlwdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjlmMTFhMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvZGViaWFuMS4wLjIvdmVyc2lvbi1zY3JpcHQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NjU2ICswLDAgQEAKLUluZGV4OiBvcGVuc3NsLTEuMC4yfmJldGExLm9ic29sZXRlLjAuMDQ5ODQzNjUxNTQ5MDU3NS9Db25maWd1cmUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBvcGVuc3NsLTEuMC4yfmJldGExLm9ic29sZXRlLjAuMDQ5ODQzNjUxNTQ5MDU3NS5vcmlnL0NvbmZpZ3VyZQkyMDE0LTAyLTI0IDIxOjAyOjMwLjAwMDAwMDAwMCArMDEwMAotKysrIG9wZW5zc2wtMS4wLjJ+YmV0YTEub2Jzb2xldGUuMC4wNDk4NDM2NTE1NDkwNTc1L0NvbmZpZ3VyZQkyMDE0LTAyLTI0IDIxOjAyOjMwLjAwMDAwMDAwMCArMDEwMAotQEAgLTE2NTEsNiArMTY1MSw4IEBACi0gCQl9Ci0gCX0KLSAKLSskc2hhcmVkX2xkZmxhZyAuPSAiIC1XbCwtLXZlcnNpb24tc2NyaXB0PW9wZW5zc2wubGQiOwotKwotIG9wZW4oSU4sJzxNYWtlZmlsZS5vcmcnKSB8fCBkaWUgInVuYWJsZSB0byByZWFkIE1ha2VmaWxlLm9yZzokIVxuIjsKLSB1bmxpbmsoIiRNYWtlZmlsZS5uZXciKSB8fCBkaWUgInVuYWJsZSB0byByZW1vdmUgb2xkICRNYWtlZmlsZS5uZXc6JCFcbiIgaWYgLWUgIiRNYWtlZmlsZS5uZXciOwotIG9wZW4oT1VULCI+JE1ha2VmaWxlLm5ldyIpIHx8IGRpZSAidW5hYmxlIHRvIGNyZWF0ZSAkTWFrZWZpbGUubmV3OiQhXG4iOwotSW5kZXg6IG9wZW5zc2wtMS4wLjJ+YmV0YTEub2Jzb2xldGUuMC4wNDk4NDM2NTE1NDkwNTc1L29wZW5zc2wubGQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBvcGVuc3NsLTEuMC4yfmJldGExLm9ic29sZXRlLjAuMDQ5ODQzNjUxNTQ5MDU3NS9vcGVuc3NsLmxkCTIwMTQtMDItMjQgMjI6MTk6MDguNjAxODI3MjY2ICswMTAwCi1AQCAtMCwwICsxLDQ2MDggQEAKLStPUEVOU1NMXzEuMC4yZCB7Ci0rCWdsb2JhbDoKLSsJCUJJT19mX3NzbDsKLSsJCUJJT19uZXdfYnVmZmVyX3NzbF9jb25uZWN0OwotKwkJQklPX25ld19zc2w7Ci0rCQlCSU9fbmV3X3NzbF9jb25uZWN0OwotKwkJQklPX3Byb3h5X3NzbF9jb3B5X3Nlc3Npb25faWQ7Ci0rCQlCSU9fc3NsX2NvcHlfc2Vzc2lvbl9pZDsKLSsJCUJJT19zc2xfc2h1dGRvd247Ci0rCQlkMmlfU1NMX1NFU1NJT047Ci0rCQlEVExTdjFfY2xpZW50X21ldGhvZDsKLSsJCURUTFN2MV9tZXRob2Q7Ci0rCQlEVExTdjFfc2VydmVyX21ldGhvZDsKLSsJCUVSUl9sb2FkX1NTTF9zdHJpbmdzOwotKwkJaTJkX1NTTF9TRVNTSU9OOwotKwkJa3NzbF9idWlsZF9wcmluY2lwYWxfMjsKLSsJCWtzc2xfY2dldF90a3Q7Ci0rCQlrc3NsX2NoZWNrX2F1dGhlbnQ7Ci0rCQlrc3NsX2N0eF9mcmVlOwotKwkJa3NzbF9jdHhfbmV3OwotKwkJa3NzbF9jdHhfc2V0a2V5OwotKwkJa3NzbF9jdHhfc2V0cHJpbmM7Ci0rCQlrc3NsX2N0eF9zZXRzdHJpbmc7Ci0rCQlrc3NsX2N0eF9zaG93OwotKwkJa3NzbF9lcnJfc2V0OwotKwkJa3NzbF9rcmI1X2ZyZWVfZGF0YV9jb250ZW50czsKLSsJCWtzc2xfc2dldF90a3Q7Ci0rCQlrc3NsX3NraXBfY29uZm91bmQ7Ci0rCQlrc3NsX3ZhbGlkYXRlX3RpbWVzOwotKwkJUEVNX3JlYWRfYmlvX1NTTF9TRVNTSU9OOwotKwkJUEVNX3JlYWRfU1NMX1NFU1NJT047Ci0rCQlQRU1fd3JpdGVfYmlvX1NTTF9TRVNTSU9OOwotKwkJUEVNX3dyaXRlX1NTTF9TRVNTSU9OOwotKwkJU1NMX2FjY2VwdDsKLSsJCVNTTF9hZGRfY2xpZW50X0NBOwotKwkJU1NMX2FkZF9kaXJfY2VydF9zdWJqZWN0c190b19zdGFjazsKLSsJCVNTTF9hZGRfZGlyX2NlcnRfc3VianNfdG9fc3RrOwotKwkJU1NMX2FkZF9maWxlX2NlcnRfc3ViamVjdHNfdG9fc3RhY2s7Ci0rCQlTU0xfYWRkX2ZpbGVfY2VydF9zdWJqc190b19zdGs7Ci0rCQlTU0xfYWxlcnRfZGVzY19zdHJpbmc7Ci0rCQlTU0xfYWxlcnRfZGVzY19zdHJpbmdfbG9uZzsKLSsJCVNTTF9hbGVydF90eXBlX3N0cmluZzsKLSsJCVNTTF9hbGVydF90eXBlX3N0cmluZ19sb25nOwotKwkJU1NMX2NhbGxiYWNrX2N0cmw7Ci0rCQlTU0xfY2hlY2tfcHJpdmF0ZV9rZXk7Ci0rCQlTU0xfQ0lQSEVSX2Rlc2NyaXB0aW9uOwotKwkJU1NMX0NJUEhFUl9nZXRfYml0czsKLSsJCVNTTF9DSVBIRVJfZ2V0X25hbWU7Ci0rCQlTU0xfQ0lQSEVSX2dldF92ZXJzaW9uOwotKwkJU1NMX2NsZWFyOwotKwkJU1NMX0NPTVBfYWRkX2NvbXByZXNzaW9uX21ldGhvZDsKLSsJCVNTTF9DT01QX2dldF9jb21wcmVzc2lvbl9tZXRob2RzOwotKwkJU1NMX0NPTVBfZ2V0X2NvbXByZXNzX21ldGhvZHM7Ci0rCQlTU0xfQ09NUF9nZXRfbmFtZTsKLSsJCVNTTF9jb25uZWN0OwotKwkJU1NMX2NvcHlfc2Vzc2lvbl9pZDsKLSsJCVNTTF9jdHJsOwotKwkJU1NMX0NUWF9hZGRfY2xpZW50X0NBOwotKwkJU1NMX0NUWF9hZGRfc2Vzc2lvbjsKLSsJCVNTTF9DVFhfY2FsbGJhY2tfY3RybDsKLSsJCVNTTF9DVFhfY2hlY2tfcHJpdmF0ZV9rZXk7Ci0rCQlTU0xfQ1RYX2N0cmw7Ci0rCQlTU0xfQ1RYX2ZsdXNoX3Nlc3Npb25zOwotKwkJU1NMX0NUWF9mcmVlOwotKwkJU1NMX0NUWF9nZXRfY2VydF9zdG9yZTsKLSsJCVNTTF9DVFhfZ2V0X2NsaWVudF9DQV9saXN0OwotKwkJU1NMX0NUWF9nZXRfY2xpZW50X2NlcnRfY2I7Ci0rCQlTU0xfQ1RYX2dldF9leF9kYXRhOwotKwkJU1NMX0NUWF9nZXRfZXhfbmV3X2luZGV4OwotKwkJU1NMX0NUWF9nZXRfaW5mb19jYWxsYmFjazsKLSsJCVNTTF9DVFhfZ2V0X3F1aWV0X3NodXRkb3duOwotKwkJU1NMX0NUWF9nZXRfdGltZW91dDsKLSsJCVNTTF9DVFhfZ2V0X3ZlcmlmeV9jYWxsYmFjazsKLSsJCVNTTF9DVFhfZ2V0X3ZlcmlmeV9kZXB0aDsKLSsJCVNTTF9DVFhfZ2V0X3ZlcmlmeV9tb2RlOwotKwkJU1NMX0NUWF9sb2FkX3ZlcmlmeV9sb2NhdGlvbnM7Ci0rCQlTU0xfQ1RYX25ldzsKLSsJCVNTTF9DVFhfcmVtb3ZlX3Nlc3Npb247Ci0rCQlTU0xfQ1RYX3Nlc3NfZ2V0X2dldF9jYjsKLSsJCVNTTF9DVFhfc2Vzc19nZXRfbmV3X2NiOwotKwkJU1NMX0NUWF9zZXNzX2dldF9yZW1vdmVfY2I7Ci0rCQlTU0xfQ1RYX3Nlc3Npb25zOwotKwkJU1NMX0NUWF9zZXNzX3NldF9nZXRfY2I7Ci0rCQlTU0xfQ1RYX3Nlc3Nfc2V0X25ld19jYjsKLSsJCVNTTF9DVFhfc2Vzc19zZXRfcmVtb3ZlX2NiOwotKwkJU1NMX0NUWF9zZXQxX3BhcmFtOwotKwkJU1NMX0NUWF9zZXRfY2VydF9zdG9yZTsKLSsJCVNTTF9DVFhfc2V0X2NlcnRfdmVyaWZ5X2NhbGxiYWNrOwotKwkJU1NMX0NUWF9zZXRfY2VydF92ZXJpZnlfY2I7Ci0rCQlTU0xfQ1RYX3NldF9jaXBoZXJfbGlzdDsKLSsJCVNTTF9DVFhfc2V0X2NsaWVudF9DQV9saXN0OwotKwkJU1NMX0NUWF9zZXRfY2xpZW50X2NlcnRfY2I7Ci0rCQlTU0xfQ1RYX3NldF9jbGllbnRfY2VydF9lbmdpbmU7Ci0rCQlTU0xfQ1RYX3NldF9jb29raWVfZ2VuZXJhdGVfY2I7Ci0rCQlTU0xfQ1RYX3NldF9jb29raWVfdmVyaWZ5X2NiOwotKwkJU1NMX0NUWF9zZXRfZGVmYXVsdF9wYXNzd2RfY2I7Ci0rCQlTU0xfQ1RYX3NldF9kZWZhdWx0X3Bhc3N3ZF9jYl91c2VyZGF0YTsKLSsJCVNTTF9DVFhfc2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzOwotKwkJU1NMX0NUWF9zZXRfZGVmX3Bhc3N3ZF9jYl91ZDsKLSsJCVNTTF9DVFhfc2V0X2RlZl92ZXJpZnlfcGF0aHM7Ci0rCQlTU0xfQ1RYX3NldF9leF9kYXRhOwotKwkJU1NMX0NUWF9zZXRfZ2VuZXJhdGVfc2Vzc2lvbl9pZDsKLSsJCVNTTF9DVFhfc2V0X2luZm9fY2FsbGJhY2s7Ci0rCQlTU0xfQ1RYX3NldF9tc2dfY2FsbGJhY2s7Ci0rCQlTU0xfQ1RYX3NldF9wc2tfY2xpZW50X2NhbGxiYWNrOwotKwkJU1NMX0NUWF9zZXRfcHNrX3NlcnZlcl9jYWxsYmFjazsKLSsJCVNTTF9DVFhfc2V0X3B1cnBvc2U7Ci0rCQlTU0xfQ1RYX3NldF9xdWlldF9zaHV0ZG93bjsKLSsJCVNTTF9DVFhfc2V0X3Nlc3Npb25faWRfY29udGV4dDsKLSsJCVNTTF9DVFhfc2V0X3NzbF92ZXJzaW9uOwotKwkJU1NMX0NUWF9zZXRfdGltZW91dDsKLSsJCVNTTF9DVFhfc2V0X3RtcF9kaF9jYWxsYmFjazsKLSsJCVNTTF9DVFhfc2V0X3RtcF9lY2RoX2NhbGxiYWNrOwotKwkJU1NMX0NUWF9zZXRfdG1wX3JzYV9jYWxsYmFjazsKLSsJCVNTTF9DVFhfc2V0X3RydXN0OwotKwkJU1NMX0NUWF9zZXRfdmVyaWZ5OwotKwkJU1NMX0NUWF9zZXRfdmVyaWZ5X2RlcHRoOwotKwkJU1NMX0NUWF91c2VfY2VydF9jaGFpbl9maWxlOwotKwkJU1NMX0NUWF91c2VfY2VydGlmaWNhdGU7Ci0rCQlTU0xfQ1RYX3VzZV9jZXJ0aWZpY2F0ZV9BU04xOwotKwkJU1NMX0NUWF91c2VfY2VydGlmaWNhdGVfY2hhaW5fZmlsZTsKLSsJCVNTTF9DVFhfdXNlX2NlcnRpZmljYXRlX2ZpbGU7Ci0rCQlTU0xfQ1RYX3VzZV9Qcml2YXRlS2V5OwotKwkJU1NMX0NUWF91c2VfUHJpdmF0ZUtleV9BU04xOwotKwkJU1NMX0NUWF91c2VfUHJpdmF0ZUtleV9maWxlOwotKwkJU1NMX0NUWF91c2VfcHNrX2lkZW50aXR5X2hpbnQ7Ci0rCQlTU0xfQ1RYX3VzZV9SU0FQcml2YXRlS2V5OwotKwkJU1NMX0NUWF91c2VfUlNBUHJpdmF0ZUtleV9BU04xOwotKwkJU1NMX0NUWF91c2VfUlNBUHJpdmF0ZUtleV9maWxlOwotKwkJU1NMX2RvX2hhbmRzaGFrZTsKLSsJCVNTTF9kdXA7Ci0rCQlTU0xfZHVwX0NBX2xpc3Q7Ci0rCQlTU0xlYXlfYWRkX3NzbF9hbGdvcml0aG1zOwotKwkJU1NMX2ZyZWU7Ci0rCQlTU0xfZ2V0MV9zZXNzaW9uOwotKwkJU1NMX2dldF9jZXJ0aWZpY2F0ZTsKLSsJCVNTTF9nZXRfY2lwaGVyX2xpc3Q7Ci0rCQlTU0xfZ2V0X2NpcGhlcnM7Ci0rCQlTU0xfZ2V0X2NsaWVudF9DQV9saXN0OwotKwkJU1NMX2dldF9jdXJyZW50X2NpcGhlcjsKLSsJCVNTTF9nZXRfY3VycmVudF9jb21wcmVzc2lvbjsKLSsJCVNTTF9nZXRfY3VycmVudF9leHBhbnNpb247Ci0rCQlTU0xfZ2V0X2RlZmF1bHRfdGltZW91dDsKLSsJCVNTTF9nZXRfZXJyb3I7Ci0rCQlTU0xfZ2V0X2V4X2RhdGE7Ci0rCQlTU0xfZ2V0X2V4X2RhdGFfWDUwOV9TVE9SRV9DVFhfaWR4OwotKwkJU1NMX2dldF9leF9kX1g1MDlfU1RPUkVfQ1RYX2lkeDsKLSsJCVNTTF9nZXRfZXhfbmV3X2luZGV4OwotKwkJU1NMX2dldF9mZDsKLSsJCVNTTF9nZXRfZmluaXNoZWQ7Ci0rCQlTU0xfZ2V0X2luZm9fY2FsbGJhY2s7Ci0rCQlTU0xfZ2V0X3BlZXJfY2VydF9jaGFpbjsKLSsJCVNTTF9nZXRfcGVlcl9jZXJ0aWZpY2F0ZTsKLSsJCVNTTF9nZXRfcGVlcl9maW5pc2hlZDsKLSsJCVNTTF9nZXRfcHJpdmF0ZWtleTsKLSsJCVNTTF9nZXRfcHNrX2lkZW50aXR5OwotKwkJU1NMX2dldF9wc2tfaWRlbnRpdHlfaGludDsKLSsJCVNTTF9nZXRfcXVpZXRfc2h1dGRvd247Ci0rCQlTU0xfZ2V0X3JiaW87Ci0rCQlTU0xfZ2V0X3JlYWRfYWhlYWQ7Ci0rCQlTU0xfZ2V0X3JmZDsKLSsJCVNTTF9nZXRfc2VydmVybmFtZTsKLSsJCVNTTF9nZXRfc2VydmVybmFtZV90eXBlOwotKwkJU1NMX2dldF9zZXNzaW9uOwotKwkJU1NMX2dldF9zaGFyZWRfY2lwaGVyczsKLSsJCVNTTF9nZXRfc2h1dGRvd247Ci0rCQlTU0xfZ2V0X1NTTF9DVFg7Ci0rCQlTU0xfZ2V0X3NzbF9tZXRob2Q7Ci0rCQlTU0xfZ2V0X3ZlcmlmeV9jYWxsYmFjazsKLSsJCVNTTF9nZXRfdmVyaWZ5X2RlcHRoOwotKwkJU1NMX2dldF92ZXJpZnlfbW9kZTsKLSsJCVNTTF9nZXRfdmVyaWZ5X3Jlc3VsdDsKLSsJCVNTTF9nZXRfdmVyc2lvbjsKLSsJCVNTTF9nZXRfd2JpbzsKLSsJCVNTTF9nZXRfd2ZkOwotKwkJU1NMX2hhc19tYXRjaGluZ19zZXNzaW9uX2lkOwotKwkJU1NMX2xpYnJhcnlfaW5pdDsKLSsJCVNTTF9sb2FkX2NsaWVudF9DQV9maWxlOwotKwkJU1NMX2xvYWRfZXJyb3Jfc3RyaW5nczsKLSsJCVNTTF9uZXc7Ci0rCQlTU0xfcGVlazsKLSsJCVNTTF9wZW5kaW5nOwotKwkJU1NMX3JlYWQ7Ci0rCQlTU0xfcmVuZWdvdGlhdGU7Ci0rCQlTU0xfcmVuZWdvdGlhdGVfcGVuZGluZzsKLSsJCVNTTF9yc3RhdGVfc3RyaW5nOwotKwkJU1NMX3JzdGF0ZV9zdHJpbmdfbG9uZzsKLSsJCVNTTF9TRVNTSU9OX2NtcDsKLSsJCVNTTF9TRVNTSU9OX2ZyZWU7Ci0rCQlTU0xfU0VTU0lPTl9nZXRfZXhfZGF0YTsKLSsJCVNTTF9TRVNTSU9OX2dldF9leF9uZXdfaW5kZXg7Ci0rCQlTU0xfU0VTU0lPTl9nZXRfaWQ7Ci0rCQlTU0xfU0VTU0lPTl9nZXRfdGltZTsKLSsJCVNTTF9TRVNTSU9OX2dldF90aW1lb3V0OwotKwkJU1NMX1NFU1NJT05faGFzaDsKLSsJCVNTTF9TRVNTSU9OX25ldzsKLSsJCVNTTF9TRVNTSU9OX3ByaW50OwotKwkJU1NMX1NFU1NJT05fcHJpbnRfZnA7Ci0rCQlTU0xfU0VTU0lPTl9zZXRfZXhfZGF0YTsKLSsJCVNTTF9TRVNTSU9OX3NldF90aW1lOwotKwkJU1NMX1NFU1NJT05fc2V0X3RpbWVvdXQ7Ci0rCQlTU0xfc2V0MV9wYXJhbTsKLSsJCVNTTF9zZXRfYWNjZXB0X3N0YXRlOwotKwkJU1NMX3NldF9iaW87Ci0rCQlTU0xfc2V0X2NpcGhlcl9saXN0OwotKwkJU1NMX3NldF9jbGllbnRfQ0FfbGlzdDsKLSsJCVNTTF9zZXRfY29ubmVjdF9zdGF0ZTsKLSsJCVNTTF9zZXRfZXhfZGF0YTsKLSsJCVNTTF9zZXRfZmQ7Ci0rCQlTU0xfc2V0X2dlbmVyYXRlX3Nlc3Npb25faWQ7Ci0rCQlTU0xfc2V0X2luZm9fY2FsbGJhY2s7Ci0rCQlTU0xfc2V0X21zZ19jYWxsYmFjazsKLSsJCVNTTF9zZXRfcHNrX2NsaWVudF9jYWxsYmFjazsKLSsJCVNTTF9zZXRfcHNrX3NlcnZlcl9jYWxsYmFjazsKLSsJCVNTTF9zZXRfcHVycG9zZTsKLSsJCVNTTF9zZXRfcXVpZXRfc2h1dGRvd247Ci0rCQlTU0xfc2V0X3JlYWRfYWhlYWQ7Ci0rCQlTU0xfc2V0X3JmZDsKLSsJCVNTTF9zZXRfc2Vzc2lvbjsKLSsJCVNTTF9zZXRfc2Vzc2lvbl9pZF9jb250ZXh0OwotKwkJU1NMX3NldF9zZXNzaW9uX3NlY3JldF9jYjsKLSsJCVNTTF9zZXRfc2Vzc2lvbl90aWNrZXRfZXh0OwotKwkJU1NMX3NldF9zZXNzaW9uX3RpY2tldF9leHRfY2I7Ci0rCQlTU0xfc2V0X3NodXRkb3duOwotKwkJU1NMX3NldF9TU0xfQ1RYOwotKwkJU1NMX3NldF9zc2xfbWV0aG9kOwotKwkJU1NMX3NldF90bXBfZGhfY2FsbGJhY2s7Ci0rCQlTU0xfc2V0X3RtcF9lY2RoX2NhbGxiYWNrOwotKwkJU1NMX3NldF90bXBfcnNhX2NhbGxiYWNrOwotKwkJU1NMX3NldF90cnVzdDsKLSsJCVNTTF9zZXRfdmVyaWZ5OwotKwkJU1NMX3NldF92ZXJpZnlfZGVwdGg7Ci0rCQlTU0xfc2V0X3ZlcmlmeV9yZXN1bHQ7Ci0rCQlTU0xfc2V0X3dmZDsKLSsJCVNTTF9zaHV0ZG93bjsKLSsJCVNTTF9zdGF0ZTsKLSsJCVNTTF9zdGF0ZV9zdHJpbmc7Ci0rCQlTU0xfc3RhdGVfc3RyaW5nX2xvbmc7Ci0rCQlTU0xfdXNlX2NlcnRpZmljYXRlOwotKwkJU1NMX3VzZV9jZXJ0aWZpY2F0ZV9BU04xOwotKwkJU1NMX3VzZV9jZXJ0aWZpY2F0ZV9maWxlOwotKwkJU1NMX3VzZV9Qcml2YXRlS2V5OwotKwkJU1NMX3VzZV9Qcml2YXRlS2V5X0FTTjE7Ci0rCQlTU0xfdXNlX1ByaXZhdGVLZXlfZmlsZTsKLSsJCVNTTF91c2VfcHNrX2lkZW50aXR5X2hpbnQ7Ci0rCQlTU0xfdXNlX1JTQVByaXZhdGVLZXk7Ci0rCQlTU0xfdXNlX1JTQVByaXZhdGVLZXlfQVNOMTsKLSsJCVNTTF91c2VfUlNBUHJpdmF0ZUtleV9maWxlOwotKwkJU1NMdjIzX2NsaWVudF9tZXRob2Q7Ci0rCQlTU0x2MjNfbWV0aG9kOwotKwkJU1NMdjIzX3NlcnZlcl9tZXRob2Q7Ci0rCQlTU0x2Ml9jbGllbnRfbWV0aG9kOwotKwkJU1NMdjJfbWV0aG9kOwotKwkJU1NMdjJfc2VydmVyX21ldGhvZDsKLSsJCVNTTHYzX2NsaWVudF9tZXRob2Q7Ci0rCQlTU0x2M19tZXRob2Q7Ci0rCQlTU0x2M19zZXJ2ZXJfbWV0aG9kOwotKwkJU1NMX3ZlcnNpb247Ci0rCQlTU0xfd2FudDsKLSsJCVNTTF93cml0ZTsKLSsJCVRMU3YxX2NsaWVudF9tZXRob2Q7Ci0rCQlUTFN2MV9tZXRob2Q7Ci0rCQlUTFN2MV9zZXJ2ZXJfbWV0aG9kOwotKwotKwotKwkJU1NMZWF5OwotKwkJU1NMZWF5X3ZlcnNpb247Ci0rCQlBU04xX0JJVF9TVFJJTkdfYXNuMV9tZXRoOwotKwkJQVNOMV9IRUFERVJfZnJlZTsKLSsJCUFTTjFfSEVBREVSX25ldzsKLSsJCUFTTjFfSUE1U1RSSU5HX2FzbjFfbWV0aDsKLSsJCUFTTjFfSU5URUdFUl9nZXQ7Ci0rCQlBU04xX0lOVEVHRVJfc2V0OwotKwkJQVNOMV9JTlRFR0VSX3RvX0JOOwotKwkJQVNOMV9PQkpFQ1RfY3JlYXRlOwotKwkJQVNOMV9PQkpFQ1RfZnJlZTsKLSsJCUFTTjFfT0JKRUNUX25ldzsKLSsJCUFTTjFfUFJJTlRBQkxFX3R5cGU7Ci0rCQlBU04xX1NUUklOR19jbXA7Ci0rCQlBU04xX1NUUklOR19kdXA7Ci0rCQlBU04xX1NUUklOR19mcmVlOwotKwkJQVNOMV9TVFJJTkdfbmV3OwotKwkJQVNOMV9TVFJJTkdfcHJpbnQ7Ci0rCQlBU04xX1NUUklOR19zZXQ7Ci0rCQlBU04xX1NUUklOR190eXBlX25ldzsKLSsJCUFTTjFfVFlQRV9mcmVlOwotKwkJQVNOMV9UWVBFX25ldzsKLSsJCUFTTjFfVU5JVkVSU0FMU1RSSU5HX3RvX3N0cmluZzsKLSsJCUFTTjFfVVRDVElNRV9jaGVjazsKLSsJCUFTTjFfVVRDVElNRV9wcmludDsKLSsJCUFTTjFfVVRDVElNRV9zZXQ7Ci0rCQlBU04xX2NoZWNrX2luZmluaXRlX2VuZDsKLSsJCUFTTjFfZDJpX2JpbzsKLSsJCUFTTjFfZDJpX2ZwOwotKwkJQVNOMV9kaWdlc3Q7Ci0rCQlBU04xX2R1cDsKLSsJCUFTTjFfZ2V0X29iamVjdDsKLSsJCUFTTjFfaTJkX2JpbzsKLSsJCUFTTjFfaTJkX2ZwOwotKwkJQVNOMV9vYmplY3Rfc2l6ZTsKLSsJCUFTTjFfcGFyc2U7Ci0rCQlBU04xX3B1dF9vYmplY3Q7Ci0rCQlBU04xX3NpZ247Ci0rCQlBU04xX3ZlcmlmeTsKLSsJCUJGX2NiY19lbmNyeXB0OwotKwkJQkZfY2ZiNjRfZW5jcnlwdDsKLSsJCUJGX2VjYl9lbmNyeXB0OwotKwkJQkZfZW5jcnlwdDsKLSsJCUJGX29mYjY0X2VuY3J5cHQ7Ci0rCQlCRl9vcHRpb25zOwotKwkJQkZfc2V0X2tleTsKLSsJCUJJT19DT05ORUNUX2ZyZWU7Ci0rCQlCSU9fQ09OTkVDVF9uZXc7Ci0rCQlCSU9fYWNjZXB0OwotKwkJQklPX2N0cmw7Ci0rCQlCSU9faW50X2N0cmw7Ci0rCQlCSU9fZGVidWdfY2FsbGJhY2s7Ci0rCQlCSU9fZHVtcDsKLSsJCUJJT19kdXBfY2hhaW47Ci0rCQlCSU9fZl9iYXNlNjQ7Ci0rCQlCSU9fZl9idWZmZXI7Ci0rCQlCSU9fZl9jaXBoZXI7Ci0rCQlCSU9fZl9tZDsKLSsJCUJJT19mX251bGw7Ci0rCQlCSU9fZl9wcm94eV9zZXJ2ZXI7Ci0rCQlCSU9fZmRfbm9uX2ZhdGFsX2Vycm9yOwotKwkJQklPX2ZkX3Nob3VsZF9yZXRyeTsKLSsJCUJJT19maW5kX3R5cGU7Ci0rCQlCSU9fZnJlZTsKLSsJCUJJT19mcmVlX2FsbDsKLSsJCUJJT19nZXRfYWNjZXB0X3NvY2tldDsKLSsJCUJJT19nZXRfZmlsdGVyX2JpbzsKLSsJCUJJT19nZXRfaG9zdF9pcDsKLSsJCUJJT19nZXRfcG9ydDsKLSsJCUJJT19nZXRfcmV0cnlfQklPOwotKwkJQklPX2dldF9yZXRyeV9yZWFzb247Ci0rCQlCSU9fZ2V0aG9zdGJ5bmFtZTsKLSsJCUJJT19nZXRzOwotKwkJQklPX25ldzsKLSsJCUJJT19uZXdfYWNjZXB0OwotKwkJQklPX25ld19jb25uZWN0OwotKwkJQklPX25ld19mZDsKLSsJCUJJT19uZXdfZmlsZTsKLSsJCUJJT19uZXdfZnA7Ci0rCQlCSU9fbmV3X3NvY2tldDsKLSsJCUJJT19wb3A7Ci0rCQlCSU9fcHJpbnRmOwotKwkJQklPX3B1c2g7Ci0rCQlCSU9fcHV0czsKLSsJCUJJT19yZWFkOwotKwkJQklPX3NfYWNjZXB0OwotKwkJQklPX3NfY29ubmVjdDsKLSsJCUJJT19zX2ZkOwotKwkJQklPX3NfZmlsZTsKLSsJCUJJT19zX21lbTsKLSsJCUJJT19zX251bGw7Ci0rCQlCSU9fc19wcm94eV9jbGllbnQ7Ci0rCQlCSU9fc19zb2NrZXQ7Ci0rCQlCSU9fc2V0OwotKwkJQklPX3NldF9jaXBoZXI7Ci0rCQlCSU9fc2V0X3RjcF9uZGVsYXk7Ci0rCQlCSU9fc29ja19jbGVhbnVwOwotKwkJQklPX3NvY2tfZXJyb3I7Ci0rCQlCSU9fc29ja19pbml0OwotKwkJQklPX3NvY2tfbm9uX2ZhdGFsX2Vycm9yOwotKwkJQklPX3NvY2tfc2hvdWxkX3JldHJ5OwotKwkJQklPX3NvY2tldF9pb2N0bDsKLSsJCUJJT193cml0ZTsKLSsJCUJOX0NUWF9mcmVlOwotKwkJQk5fQ1RYX25ldzsKLSsJCUJOX01PTlRfQ1RYX2ZyZWU7Ci0rCQlCTl9NT05UX0NUWF9uZXc7Ci0rCQlCTl9NT05UX0NUWF9zZXQ7Ci0rCQlCTl9hZGQ7Ci0rCQlCTl9hZGRfd29yZDsKLSsJCUJOX2hleDJibjsKLSsJCUJOX2JpbjJibjsKLSsJCUJOX2JuMmhleDsKLSsJCUJOX2JuMmJpbjsKLSsJCUJOX2NsZWFyOwotKwkJQk5fY2xlYXJfYml0OwotKwkJQk5fY2xlYXJfZnJlZTsKLSsJCUJOX2NtcDsKLSsJCUJOX2NvcHk7Ci0rCQlCTl9kaXY7Ci0rCQlCTl9kaXZfd29yZDsKLSsJCUJOX2R1cDsKLSsJCUJOX2ZyZWU7Ci0rCQlCTl9mcm9tX21vbnRnb21lcnk7Ci0rCQlCTl9nY2Q7Ci0rCQlCTl9nZW5lcmF0ZV9wcmltZTsKLSsJCUJOX2dldF93b3JkOwotKwkJQk5faXNfYml0X3NldDsKLSsJCUJOX2lzX3ByaW1lOwotKwkJQk5fbHNoaWZ0OwotKwkJQk5fbHNoaWZ0MTsKLSsJCUJOX21hc2tfYml0czsKLSsJCUJOX21vZDsKLSsJCUJOX21vZF9leHA7Ci0rCQlCTl9tb2RfZXhwX21vbnQ7Ci0rCQlCTl9tb2RfZXhwX3NpbXBsZTsKLSsJCUJOX21vZF9pbnZlcnNlOwotKwkJQk5fbW9kX211bDsKLSsJCUJOX21vZF9tdWxfbW9udGdvbWVyeTsKLSsJCUJOX21vZF93b3JkOwotKwkJQk5fbXVsOwotKwkJQk5fbmV3OwotKwkJQk5fbnVtX2JpdHM7Ci0rCQlCTl9udW1fYml0c193b3JkOwotKwkJQk5fb3B0aW9uczsKLSsJCUJOX3ByaW50OwotKwkJQk5fcHJpbnRfZnA7Ci0rCQlCTl9yYW5kOwotKwkJQk5fcmVjaXByb2NhbDsKLSsJCUJOX3JzaGlmdDsKLSsJCUJOX3JzaGlmdDE7Ci0rCQlCTl9zZXRfYml0OwotKwkJQk5fc2V0X3dvcmQ7Ci0rCQlCTl9zcXI7Ci0rCQlCTl9zdWI7Ci0rCQlCTl90b19BU04xX0lOVEVHRVI7Ci0rCQlCTl91Y21wOwotKwkJQk5fdmFsdWVfb25lOwotKwkJQlVGX01FTV9mcmVlOwotKwkJQlVGX01FTV9ncm93OwotKwkJQlVGX01FTV9uZXc7Ci0rCQlCVUZfc3RyZHVwOwotKwkJQ09ORl9mcmVlOwotKwkJQ09ORl9nZXRfbnVtYmVyOwotKwkJQ09ORl9nZXRfc2VjdGlvbjsKLSsJCUNPTkZfZ2V0X3N0cmluZzsKLSsJCUNPTkZfbG9hZDsKLSsJCUNSWVBUT19hZGRfbG9jazsKLSsJCUNSWVBUT19kYmdfZnJlZTsKLSsJCUNSWVBUT19kYmdfbWFsbG9jOwotKwkJQ1JZUFRPX2RiZ19yZWFsbG9jOwotKwkJQ1JZUFRPX2RiZ19yZW1hbGxvYzsKLSsJCUNSWVBUT19mcmVlOwotKwkJQ1JZUFRPX2dldF9hZGRfbG9ja19jYWxsYmFjazsKLSsJCUNSWVBUT19nZXRfaWRfY2FsbGJhY2s7Ci0rCQlDUllQVE9fZ2V0X2xvY2tfbmFtZTsKLSsJCUNSWVBUT19nZXRfbG9ja2luZ19jYWxsYmFjazsKLSsJCUNSWVBUT19nZXRfbWVtX2Z1bmN0aW9uczsKLSsJCUNSWVBUT19sb2NrOwotKwkJQ1JZUFRPX21hbGxvYzsKLSsJCUNSWVBUT19tZW1fY3RybDsKLSsJCUNSWVBUT19tZW1fbGVha3M7Ci0rCQlDUllQVE9fbWVtX2xlYWtzX2NiOwotKwkJQ1JZUFRPX21lbV9sZWFrc19mcDsKLSsJCUNSWVBUT19yZWFsbG9jOwotKwkJQ1JZUFRPX3JlbWFsbG9jOwotKwkJQ1JZUFRPX3NldF9hZGRfbG9ja19jYWxsYmFjazsKLSsJCUNSWVBUT19zZXRfaWRfY2FsbGJhY2s7Ci0rCQlDUllQVE9fc2V0X2xvY2tpbmdfY2FsbGJhY2s7Ci0rCQlDUllQVE9fc2V0X21lbV9mdW5jdGlvbnM7Ci0rCQlDUllQVE9fdGhyZWFkX2lkOwotKwkJREhfY2hlY2s7Ci0rCQlESF9jb21wdXRlX2tleTsKLSsJCURIX2ZyZWU7Ci0rCQlESF9nZW5lcmF0ZV9rZXk7Ci0rCQlESF9nZW5lcmF0ZV9wYXJhbWV0ZXJzOwotKwkJREhfbmV3OwotKwkJREhfc2l6ZTsKLSsJCURIcGFyYW1zX3ByaW50OwotKwkJREhwYXJhbXNfcHJpbnRfZnA7Ci0rCQlEU0FfZnJlZTsKLSsJCURTQV9nZW5lcmF0ZV9rZXk7Ci0rCQlEU0FfZ2VuZXJhdGVfcGFyYW1ldGVyczsKLSsJCURTQV9pc19wcmltZTsKLSsJCURTQV9uZXc7Ci0rCQlEU0FfcHJpbnQ7Ci0rCQlEU0FfcHJpbnRfZnA7Ci0rCQlEU0Ffc2lnbjsKLSsJCURTQV9zaWduX3NldHVwOwotKwkJRFNBX3NpemU7Ci0rCQlEU0FfdmVyaWZ5OwotKwkJRFNBcGFyYW1zX3ByaW50OwotKwkJRFNBcGFyYW1zX3ByaW50X2ZwOwotKwkJRVJSX2NsZWFyX2Vycm9yOwotKwkJRVJSX2Vycm9yX3N0cmluZzsKLSsJCUVSUl9mcmVlX3N0cmluZ3M7Ci0rCQlFUlJfZnVuY19lcnJvcl9zdHJpbmc7Ci0rCQlFUlJfZ2V0X2Vycl9zdGF0ZV90YWJsZTsKLSsJCUVSUl9nZXRfZXJyb3I7Ci0rCQlFUlJfZ2V0X2Vycm9yX2xpbmU7Ci0rCQlFUlJfZ2V0X3N0YXRlOwotKwkJRVJSX2dldF9zdHJpbmdfdGFibGU7Ci0rCQlFUlJfbGliX2Vycm9yX3N0cmluZzsKLSsJCUVSUl9sb2FkX0FTTjFfc3RyaW5nczsKLSsJCUVSUl9sb2FkX0JJT19zdHJpbmdzOwotKwkJRVJSX2xvYWRfQk5fc3RyaW5nczsKLSsJCUVSUl9sb2FkX0JVRl9zdHJpbmdzOwotKwkJRVJSX2xvYWRfQ09ORl9zdHJpbmdzOwotKwkJRVJSX2xvYWRfREhfc3RyaW5nczsKLSsJCUVSUl9sb2FkX0RTQV9zdHJpbmdzOwotKwkJRVJSX2xvYWRfRVJSX3N0cmluZ3M7Ci0rCQlFUlJfbG9hZF9FVlBfc3RyaW5nczsKLSsJCUVSUl9sb2FkX09CSl9zdHJpbmdzOwotKwkJRVJSX2xvYWRfUEVNX3N0cmluZ3M7Ci0rCQlFUlJfbG9hZF9QUk9YWV9zdHJpbmdzOwotKwkJRVJSX2xvYWRfUlNBX3N0cmluZ3M7Ci0rCQlFUlJfbG9hZF9YNTA5X3N0cmluZ3M7Ci0rCQlFUlJfbG9hZF9jcnlwdG9fc3RyaW5nczsKLSsJCUVSUl9sb2FkX3N0cmluZ3M7Ci0rCQlFUlJfcGVla19lcnJvcjsKLSsJCUVSUl9wZWVrX2Vycm9yX2xpbmU7Ci0rCQlFUlJfcHJpbnRfZXJyb3JzOwotKwkJRVJSX3ByaW50X2Vycm9yc19mcDsKLSsJCUVSUl9wdXRfZXJyb3I7Ci0rCQlFUlJfcmVhc29uX2Vycm9yX3N0cmluZzsKLSsJCUVSUl9yZW1vdmVfc3RhdGU7Ci0rCQlFVlBfQnl0ZXNUb0tleTsKLSsJCUVWUF9DSVBIRVJfQ1RYX2NsZWFudXA7Ci0rCQlFVlBfQ2lwaGVyRmluYWw7Ci0rCQlFVlBfQ2lwaGVySW5pdDsKLSsJCUVWUF9DaXBoZXJVcGRhdGU7Ci0rCQlFVlBfRGVjb2RlQmxvY2s7Ci0rCQlFVlBfRGVjb2RlRmluYWw7Ci0rCQlFVlBfRGVjb2RlSW5pdDsKLSsJCUVWUF9EZWNvZGVVcGRhdGU7Ci0rCQlFVlBfRGVjcnlwdEZpbmFsOwotKwkJRVZQX0RlY3J5cHRJbml0OwotKwkJRVZQX0RlY3J5cHRVcGRhdGU7Ci0rCQlFVlBfRGlnZXN0RmluYWw7Ci0rCQlFVlBfRGlnZXN0SW5pdDsKLSsJCUVWUF9EaWdlc3RVcGRhdGU7Ci0rCQlFVlBfRW5jb2RlQmxvY2s7Ci0rCQlFVlBfRW5jb2RlRmluYWw7Ci0rCQlFVlBfRW5jb2RlSW5pdDsKLSsJCUVWUF9FbmNvZGVVcGRhdGU7Ci0rCQlFVlBfRW5jcnlwdEZpbmFsOwotKwkJRVZQX0VuY3J5cHRJbml0OwotKwkJRVZQX0VuY3J5cHRVcGRhdGU7Ci0rCQlFVlBfT3BlbkZpbmFsOwotKwkJRVZQX09wZW5Jbml0OwotKwkJRVZQX1BLRVlfYXNzaWduOwotKwkJRVZQX1BLRVlfY29weV9wYXJhbWV0ZXJzOwotKwkJRVZQX1BLRVlfZnJlZTsKLSsJCUVWUF9QS0VZX21pc3NpbmdfcGFyYW1ldGVyczsKLSsJCUVWUF9QS0VZX25ldzsKLSsJCUVWUF9QS0VZX3NhdmVfcGFyYW1ldGVyczsKLSsJCUVWUF9QS0VZX3NpemU7Ci0rCQlFVlBfUEtFWV90eXBlOwotKwkJRVZQX1NlYWxGaW5hbDsKLSsJCUVWUF9TZWFsSW5pdDsKLSsJCUVWUF9TaWduRmluYWw7Ci0rCQlFVlBfVmVyaWZ5RmluYWw7Ci0rCQlFVlBfYWRkX2FsaWFzOwotKwkJRVZQX2FkZF9jaXBoZXI7Ci0rCQlFVlBfYWRkX2RpZ2VzdDsKLSsJCUVWUF9iZl9jYmM7Ci0rCQlFVlBfYmZfY2ZiNjQ7Ci0rCQlFVlBfYmZfZWNiOwotKwkJRVZQX2JmX29mYjsKLSsJCUVWUF9jbGVhbnVwOwotKwkJRVZQX2Rlc19jYmM7Ci0rCQlFVlBfZGVzX2NmYjY0OwotKwkJRVZQX2Rlc19lY2I7Ci0rCQlFVlBfZGVzX2VkZTsKLSsJCUVWUF9kZXNfZWRlMzsKLSsJCUVWUF9kZXNfZWRlM19jYmM7Ci0rCQlFVlBfZGVzX2VkZTNfY2ZiNjQ7Ci0rCQlFVlBfZGVzX2VkZTNfb2ZiOwotKwkJRVZQX2Rlc19lZGVfY2JjOwotKwkJRVZQX2Rlc19lZGVfY2ZiNjQ7Ci0rCQlFVlBfZGVzX2VkZV9vZmI7Ci0rCQlFVlBfZGVzX29mYjsKLSsJCUVWUF9kZXN4X2NiYzsKLSsJCUVWUF9kc3M7Ci0rCQlFVlBfZHNzMTsKLSsJCUVWUF9lbmNfbnVsbDsKLSsJCUVWUF9nZXRfY2lwaGVyYnluYW1lOwotKwkJRVZQX2dldF9kaWdlc3RieW5hbWU7Ci0rCQlFVlBfZ2V0X3B3X3Byb21wdDsKLSsJCUVWUF9pZGVhX2NiYzsKLSsJCUVWUF9pZGVhX2NmYjY0OwotKwkJRVZQX2lkZWFfZWNiOwotKwkJRVZQX2lkZWFfb2ZiOwotKwkJRVZQX21kMjsKLSsJCUVWUF9tZDU7Ci0rCQlFVlBfbWRfbnVsbDsKLSsJCUVWUF9yYzJfY2JjOwotKwkJRVZQX3JjMl9jZmI2NDsKLSsJCUVWUF9yYzJfZWNiOwotKwkJRVZQX3JjMl9vZmI7Ci0rCQlFVlBfcmM0OwotKwkJRVZQX3JlYWRfcHdfc3RyaW5nOwotKwkJRVZQX3NldF9wd19wcm9tcHQ7Ci0rCQlFVlBfc2hhOwotKwkJRVZQX3NoYTE7Ci0rCQlNRDI7Ci0rCQlNRDJfRmluYWw7Ci0rCQlNRDJfSW5pdDsKLSsJCU1EMl9VcGRhdGU7Ci0rCQlNRDJfb3B0aW9uczsKLSsJCU1ENTsKLSsJCU1ENV9GaW5hbDsKLSsJCU1ENV9Jbml0OwotKwkJTUQ1X1VwZGF0ZTsKLSsJCU1EQzI7Ci0rCQlNREMyX0ZpbmFsOwotKwkJTURDMl9Jbml0OwotKwkJTURDMl9VcGRhdGU7Ci0rCQlORVRTQ0FQRV9TUEtBQ19mcmVlOwotKwkJTkVUU0NBUEVfU1BLQUNfbmV3OwotKwkJTkVUU0NBUEVfU1BLSV9mcmVlOwotKwkJTkVUU0NBUEVfU1BLSV9uZXc7Ci0rCQlORVRTQ0FQRV9TUEtJX3NpZ247Ci0rCQlORVRTQ0FQRV9TUEtJX3ZlcmlmeTsKLSsJCU9CSl9hZGRfb2JqZWN0OwotKwkJT0JKX2JzZWFyY2g7Ci0rCQlPQkpfY2xlYW51cDsKLSsJCU9CSl9jbXA7Ci0rCQlPQkpfY3JlYXRlOwotKwkJT0JKX2R1cDsKLSsJCU9CSl9sbjJuaWQ7Ci0rCQlPQkpfbmV3X25pZDsKLSsJCU9CSl9uaWQybG47Ci0rCQlPQkpfbmlkMm9iajsKLSsJCU9CSl9uaWQyc247Ci0rCQlPQkpfb2JqMm5pZDsKLSsJCU9CSl9zbjJuaWQ7Ci0rCQlPQkpfdHh0Mm5pZDsKLSsJCVBFTV9BU04xX3JlYWQ7Ci0rCQlQRU1fQVNOMV9yZWFkX2JpbzsKLSsJCVBFTV9BU04xX3dyaXRlOwotKwkJUEVNX0FTTjFfd3JpdGVfYmlvOwotKwkJUEVNX1NlYWxGaW5hbDsKLSsJCVBFTV9TZWFsSW5pdDsKLSsJCVBFTV9TZWFsVXBkYXRlOwotKwkJUEVNX1NpZ25GaW5hbDsKLSsJCVBFTV9TaWduSW5pdDsKLSsJCVBFTV9TaWduVXBkYXRlOwotKwkJUEVNX1g1MDlfSU5GT19yZWFkOwotKwkJUEVNX1g1MDlfSU5GT19yZWFkX2JpbzsKLSsJCVBFTV9YNTA5X0lORk9fd3JpdGVfYmlvOwotKwkJUEVNX2Rla19pbmZvOwotKwkJUEVNX2RvX2hlYWRlcjsKLSsJCVBFTV9nZXRfRVZQX0NJUEhFUl9JTkZPOwotKwkJUEVNX3Byb2NfdHlwZTsKLSsJCVBFTV9yZWFkOwotKwkJUEVNX3JlYWRfREhwYXJhbXM7Ci0rCQlQRU1fcmVhZF9EU0FQcml2YXRlS2V5OwotKwkJUEVNX3JlYWRfRFNBcGFyYW1zOwotKwkJUEVNX3JlYWRfUEtDUzc7Ci0rCQlQRU1fcmVhZF9Qcml2YXRlS2V5OwotKwkJUEVNX3JlYWRfUlNBUHJpdmF0ZUtleTsKLSsJCVBFTV9yZWFkX1g1MDk7Ci0rCQlQRU1fcmVhZF9YNTA5X0NSTDsKLSsJCVBFTV9yZWFkX1g1MDlfUkVROwotKwkJUEVNX3JlYWRfYmlvOwotKwkJUEVNX3JlYWRfYmlvX0RIcGFyYW1zOwotKwkJUEVNX3JlYWRfYmlvX0RTQVByaXZhdGVLZXk7Ci0rCQlQRU1fcmVhZF9iaW9fRFNBcGFyYW1zOwotKwkJUEVNX3JlYWRfYmlvX1BLQ1M3OwotKwkJUEVNX3JlYWRfYmlvX1ByaXZhdGVLZXk7Ci0rCQlQRU1fcmVhZF9iaW9fUlNBUHJpdmF0ZUtleTsKLSsJCVBFTV9yZWFkX2Jpb19YNTA5OwotKwkJUEVNX3JlYWRfYmlvX1g1MDlfQ1JMOwotKwkJUEVNX3JlYWRfYmlvX1g1MDlfUkVROwotKwkJUEVNX3dyaXRlOwotKwkJUEVNX3dyaXRlX0RIcGFyYW1zOwotKwkJUEVNX3dyaXRlX0RTQVByaXZhdGVLZXk7Ci0rCQlQRU1fd3JpdGVfRFNBcGFyYW1zOwotKwkJUEVNX3dyaXRlX1BLQ1M3OwotKwkJUEVNX3dyaXRlX1ByaXZhdGVLZXk7Ci0rCQlQRU1fd3JpdGVfUlNBUHJpdmF0ZUtleTsKLSsJCVBFTV93cml0ZV9YNTA5OwotKwkJUEVNX3dyaXRlX1g1MDlfQ1JMOwotKwkJUEVNX3dyaXRlX1g1MDlfUkVROwotKwkJUEVNX3dyaXRlX2JpbzsKLSsJCVBFTV93cml0ZV9iaW9fREhwYXJhbXM7Ci0rCQlQRU1fd3JpdGVfYmlvX0RTQVByaXZhdGVLZXk7Ci0rCQlQRU1fd3JpdGVfYmlvX0RTQXBhcmFtczsKLSsJCVBFTV93cml0ZV9iaW9fUEtDUzc7Ci0rCQlQRU1fd3JpdGVfYmlvX1ByaXZhdGVLZXk7Ci0rCQlQRU1fd3JpdGVfYmlvX1JTQVByaXZhdGVLZXk7Ci0rCQlQRU1fd3JpdGVfYmlvX1g1MDk7Ci0rCQlQRU1fd3JpdGVfYmlvX1g1MDlfQ1JMOwotKwkJUEVNX3dyaXRlX2Jpb19YNTA5X1JFUTsKLSsJCVBLQ1M3X0RJR0VTVF9mcmVlOwotKwkJUEtDUzdfRElHRVNUX25ldzsKLSsJCVBLQ1M3X0VOQ1JZUFRfZnJlZTsKLSsJCVBLQ1M3X0VOQ1JZUFRfbmV3OwotKwkJUEtDUzdfRU5DX0NPTlRFTlRfZnJlZTsKLSsJCVBLQ1M3X0VOQ19DT05URU5UX25ldzsKLSsJCVBLQ1M3X0VOVkVMT1BFX2ZyZWU7Ci0rCQlQS0NTN19FTlZFTE9QRV9uZXc7Ci0rCQlQS0NTN19JU1NVRVJfQU5EX1NFUklBTF9kaWdlc3Q7Ci0rCQlQS0NTN19JU1NVRVJfQU5EX1NFUklBTF9mcmVlOwotKwkJUEtDUzdfSVNTVUVSX0FORF9TRVJJQUxfbmV3OwotKwkJUEtDUzdfUkVDSVBfSU5GT19mcmVlOwotKwkJUEtDUzdfUkVDSVBfSU5GT19uZXc7Ci0rCQlQS0NTN19TSUdORURfZnJlZTsKLSsJCVBLQ1M3X1NJR05FRF9uZXc7Ci0rCQlQS0NTN19TSUdORVJfSU5GT19mcmVlOwotKwkJUEtDUzdfU0lHTkVSX0lORk9fbmV3OwotKwkJUEtDUzdfU0lHTl9FTlZFTE9QRV9mcmVlOwotKwkJUEtDUzdfU0lHTl9FTlZFTE9QRV9uZXc7Ci0rCQlQS0NTN19kdXA7Ci0rCQlQS0NTN19mcmVlOwotKwkJUEtDUzdfbmV3OwotKwkJUFJPWFlfRU5UUllfYWRkX25vcHJveHk7Ci0rCQlQUk9YWV9FTlRSWV9jbGVhcl9ub3Byb3h5OwotKwkJUFJPWFlfRU5UUllfZnJlZTsKLSsJCVBST1hZX0VOVFJZX2dldF9ub3Byb3h5OwotKwkJUFJPWFlfRU5UUllfbmV3OwotKwkJUFJPWFlfRU5UUllfc2V0X3NlcnZlcjsKLSsJCVBST1hZX2FkZF9ub3Byb3h5OwotKwkJUFJPWFlfYWRkX3NlcnZlcjsKLSsJCVBST1hZX2NoZWNrX2J5X2hvc3Q7Ci0rCQlQUk9YWV9jaGVja191cmw7Ci0rCQlQUk9YWV9jbGVhcl9ub3Byb3h5OwotKwkJUFJPWFlfZnJlZTsKLSsJCVBST1hZX2dldF9ub3Byb3h5OwotKwkJUFJPWFlfZ2V0X3Byb3hpZXM7Ci0rCQlQUk9YWV9nZXRfcHJveHlfZW50cnk7Ci0rCQlQUk9YWV9sb2FkX2NvbmY7Ci0rCQlQUk9YWV9uZXc7Ci0rCQlQUk9YWV9wcmludDsKLSsJCVJBTkRfYnl0ZXM7Ci0rCQlSQU5EX2NsZWFudXA7Ci0rCQlSQU5EX2ZpbGVfbmFtZTsKLSsJCVJBTkRfbG9hZF9maWxlOwotKwkJUkFORF9zY3JlZW47Ci0rCQlSQU5EX3NlZWQ7Ci0rCQlSQU5EX3dyaXRlX2ZpbGU7Ci0rCQlSQzJfY2JjX2VuY3J5cHQ7Ci0rCQlSQzJfY2ZiNjRfZW5jcnlwdDsKLSsJCVJDMl9lY2JfZW5jcnlwdDsKLSsJCVJDMl9lbmNyeXB0OwotKwkJUkMyX29mYjY0X2VuY3J5cHQ7Ci0rCQlSQzJfc2V0X2tleTsKLSsJCVJDNDsKLSsJCVJDNF9vcHRpb25zOwotKwkJUkM0X3NldF9rZXk7Ci0rCQlSU0FQcml2YXRlS2V5X2FzbjFfbWV0aDsKLSsJCVJTQVByaXZhdGVLZXlfZHVwOwotKwkJUlNBUHVibGljS2V5X2R1cDsKLSsJCVJTQV9QS0NTMV9TU0xlYXk7Ci0rCQlSU0FfZnJlZTsKLSsJCVJTQV9nZW5lcmF0ZV9rZXk7Ci0rCQlSU0FfbmV3OwotKwkJUlNBX25ld19tZXRob2Q7Ci0rCQlSU0FfcHJpbnQ7Ci0rCQlSU0FfcHJpbnRfZnA7Ci0rCQlSU0FfcHJpdmF0ZV9kZWNyeXB0OwotKwkJUlNBX3ByaXZhdGVfZW5jcnlwdDsKLSsJCVJTQV9wdWJsaWNfZGVjcnlwdDsKLSsJCVJTQV9wdWJsaWNfZW5jcnlwdDsKLSsJCVJTQV9zZXRfZGVmYXVsdF9tZXRob2Q7Ci0rCQlSU0Ffc2lnbjsKLSsJCVJTQV9zaWduX0FTTjFfT0NURVRfU1RSSU5HOwotKwkJUlNBX3NpemU7Ci0rCQlSU0FfdmVyaWZ5OwotKwkJUlNBX3ZlcmlmeV9BU04xX09DVEVUX1NUUklORzsKLSsJCVNIQTsKLSsJCVNIQTE7Ci0rCQlTSEExX0ZpbmFsOwotKwkJU0hBMV9Jbml0OwotKwkJU0hBMV9VcGRhdGU7Ci0rCQlTSEFfRmluYWw7Ci0rCQlTSEFfSW5pdDsKLSsJCVNIQV9VcGRhdGU7Ci0rCQlPcGVuU1NMX2FkZF9hbGxfYWxnb3JpdGhtczsKLSsJCU9wZW5TU0xfYWRkX2FsbF9jaXBoZXJzOwotKwkJT3BlblNTTF9hZGRfYWxsX2RpZ2VzdHM7Ci0rCQlUWFRfREJfY3JlYXRlX2luZGV4OwotKwkJVFhUX0RCX2ZyZWU7Ci0rCQlUWFRfREJfZ2V0X2J5X2luZGV4OwotKwkJVFhUX0RCX2luc2VydDsKLSsJCVRYVF9EQl9yZWFkOwotKwkJVFhUX0RCX3dyaXRlOwotKwkJWDUwOV9BTEdPUl9mcmVlOwotKwkJWDUwOV9BTEdPUl9uZXc7Ci0rCQlYNTA5X0FUVFJJQlVURV9mcmVlOwotKwkJWDUwOV9BVFRSSUJVVEVfbmV3OwotKwkJWDUwOV9DSU5GX2ZyZWU7Ci0rCQlYNTA5X0NJTkZfbmV3OwotKwkJWDUwOV9DUkxfSU5GT19mcmVlOwotKwkJWDUwOV9DUkxfSU5GT19uZXc7Ci0rCQlYNTA5X0NSTF9hZGRfZXh0OwotKwkJWDUwOV9DUkxfY21wOwotKwkJWDUwOV9DUkxfZGVsZXRlX2V4dDsKLSsJCVg1MDlfQ1JMX2R1cDsKLSsJCVg1MDlfQ1JMX2ZyZWU7Ci0rCQlYNTA5X0NSTF9nZXRfZXh0OwotKwkJWDUwOV9DUkxfZ2V0X2V4dF9ieV9OSUQ7Ci0rCQlYNTA5X0NSTF9nZXRfZXh0X2J5X09CSjsKLSsJCVg1MDlfQ1JMX2dldF9leHRfYnlfY3JpdGljYWw7Ci0rCQlYNTA5X0NSTF9nZXRfZXh0X2NvdW50OwotKwkJWDUwOV9DUkxfbmV3OwotKwkJWDUwOV9DUkxfc2lnbjsKLSsJCVg1MDlfQ1JMX3ZlcmlmeTsKLSsJCVg1MDlfRVhURU5TSU9OX2NyZWF0ZV9ieV9OSUQ7Ci0rCQlYNTA5X0VYVEVOU0lPTl9jcmVhdGVfYnlfT0JKOwotKwkJWDUwOV9FWFRFTlNJT05fZHVwOwotKwkJWDUwOV9FWFRFTlNJT05fZnJlZTsKLSsJCVg1MDlfRVhURU5TSU9OX2dldF9jcml0aWNhbDsKLSsJCVg1MDlfRVhURU5TSU9OX2dldF9kYXRhOwotKwkJWDUwOV9FWFRFTlNJT05fZ2V0X29iamVjdDsKLSsJCVg1MDlfRVhURU5TSU9OX25ldzsKLSsJCVg1MDlfRVhURU5TSU9OX3NldF9jcml0aWNhbDsKLSsJCVg1MDlfRVhURU5TSU9OX3NldF9kYXRhOwotKwkJWDUwOV9FWFRFTlNJT05fc2V0X29iamVjdDsKLSsJCVg1MDlfSU5GT19mcmVlOwotKwkJWDUwOV9JTkZPX25ldzsKLSsJCVg1MDlfTE9PS1VQX2J5X2FsaWFzOwotKwkJWDUwOV9MT09LVVBfYnlfZmluZ2VycHJpbnQ7Ci0rCQlYNTA5X0xPT0tVUF9ieV9pc3N1ZXJfc2VyaWFsOwotKwkJWDUwOV9MT09LVVBfYnlfc3ViamVjdDsKLSsJCVg1MDlfTE9PS1VQX2N0cmw7Ci0rCQlYNTA5X0xPT0tVUF9maWxlOwotKwkJWDUwOV9MT09LVVBfZnJlZTsKLSsJCVg1MDlfTE9PS1VQX2hhc2hfZGlyOwotKwkJWDUwOV9MT09LVVBfaW5pdDsKLSsJCVg1MDlfTE9PS1VQX25ldzsKLSsJCVg1MDlfTE9PS1VQX3NodXRkb3duOwotKwkJWDUwOV9OQU1FX0VOVFJZX2NyZWF0ZV9ieV9OSUQ7Ci0rCQlYNTA5X05BTUVfRU5UUllfY3JlYXRlX2J5X09CSjsKLSsJCVg1MDlfTkFNRV9FTlRSWV9kdXA7Ci0rCQlYNTA5X05BTUVfRU5UUllfZnJlZTsKLSsJCVg1MDlfTkFNRV9FTlRSWV9nZXRfZGF0YTsKLSsJCVg1MDlfTkFNRV9FTlRSWV9nZXRfb2JqZWN0OwotKwkJWDUwOV9OQU1FX0VOVFJZX25ldzsKLSsJCVg1MDlfTkFNRV9FTlRSWV9zZXRfZGF0YTsKLSsJCVg1MDlfTkFNRV9FTlRSWV9zZXRfb2JqZWN0OwotKwkJWDUwOV9OQU1FX2FkZF9lbnRyeTsKLSsJCVg1MDlfTkFNRV9jbXA7Ci0rCQlYNTA5X05BTUVfZGVsZXRlX2VudHJ5OwotKwkJWDUwOV9OQU1FX2RpZ2VzdDsKLSsJCVg1MDlfTkFNRV9kdXA7Ci0rCQlYNTA5X05BTUVfZW50cnlfY291bnQ7Ci0rCQlYNTA5X05BTUVfZnJlZTsKLSsJCVg1MDlfTkFNRV9nZXRfZW50cnk7Ci0rCQlYNTA5X05BTUVfZ2V0X2luZGV4X2J5X05JRDsKLSsJCVg1MDlfTkFNRV9nZXRfaW5kZXhfYnlfT0JKOwotKwkJWDUwOV9OQU1FX2dldF90ZXh0X2J5X05JRDsKLSsJCVg1MDlfTkFNRV9nZXRfdGV4dF9ieV9PQko7Ci0rCQlYNTA5X05BTUVfaGFzaDsKLSsJCVg1MDlfTkFNRV9uZXc7Ci0rCQlYNTA5X05BTUVfb25lbGluZTsKLSsJCVg1MDlfTkFNRV9wcmludDsKLSsJCVg1MDlfTkFNRV9zZXQ7Ci0rCQlYNTA5X09CSkVDVF9mcmVlX2NvbnRlbnRzOwotKwkJWDUwOV9PQkpFQ1RfcmV0cmlldmVfYnlfc3ViamVjdDsKLSsJCVg1MDlfT0JKRUNUX3VwX3JlZl9jb3VudDsKLSsJCVg1MDlfUEtFWV9mcmVlOwotKwkJWDUwOV9QS0VZX25ldzsKLSsJCVg1MDlfUFVCS0VZX2ZyZWU7Ci0rCQlYNTA5X1BVQktFWV9nZXQ7Ci0rCQlYNTA5X1BVQktFWV9uZXc7Ci0rCQlYNTA5X1BVQktFWV9zZXQ7Ci0rCQlYNTA5X1JFUV9JTkZPX2ZyZWU7Ci0rCQlYNTA5X1JFUV9JTkZPX25ldzsKLSsJCVg1MDlfUkVRX2R1cDsKLSsJCVg1MDlfUkVRX2ZyZWU7Ci0rCQlYNTA5X1JFUV9nZXRfcHVia2V5OwotKwkJWDUwOV9SRVFfbmV3OwotKwkJWDUwOV9SRVFfcHJpbnQ7Ci0rCQlYNTA5X1JFUV9wcmludF9mcDsKLSsJCVg1MDlfUkVRX3NldF9wdWJrZXk7Ci0rCQlYNTA5X1JFUV9zZXRfc3ViamVjdF9uYW1lOwotKwkJWDUwOV9SRVFfc2V0X3ZlcnNpb247Ci0rCQlYNTA5X1JFUV9zaWduOwotKwkJWDUwOV9SRVFfdG9fWDUwOTsKLSsJCVg1MDlfUkVRX3ZlcmlmeTsKLSsJCVg1MDlfUkVWT0tFRF9hZGRfZXh0OwotKwkJWDUwOV9SRVZPS0VEX2RlbGV0ZV9leHQ7Ci0rCQlYNTA5X1JFVk9LRURfZnJlZTsKLSsJCVg1MDlfUkVWT0tFRF9nZXRfZXh0OwotKwkJWDUwOV9SRVZPS0VEX2dldF9leHRfYnlfTklEOwotKwkJWDUwOV9SRVZPS0VEX2dldF9leHRfYnlfT0JKOwotKwkJWDUwOV9SRVZPS0VEX2dldF9leHRfYnlfY3JpdGljYWw7Ci0rCQlYNTA5X1JFVk9LRURfZ2V0X2V4dF9ieV9jcml0aWM7Ci0rCQlYNTA5X1JFVk9LRURfZ2V0X2V4dF9jb3VudDsKLSsJCVg1MDlfUkVWT0tFRF9uZXc7Ci0rCQlYNTA5X1NJR19mcmVlOwotKwkJWDUwOV9TSUdfbmV3OwotKwkJWDUwOV9TVE9SRV9DVFhfY2xlYW51cDsKLSsJCVg1MDlfU1RPUkVfQ1RYX2luaXQ7Ci0rCQlYNTA5X1NUT1JFX2FkZF9jZXJ0OwotKwkJWDUwOV9TVE9SRV9hZGRfbG9va3VwOwotKwkJWDUwOV9TVE9SRV9mcmVlOwotKwkJWDUwOV9TVE9SRV9nZXRfYnlfc3ViamVjdDsKLSsJCVg1MDlfU1RPUkVfbG9hZF9sb2NhdGlvbnM7Ci0rCQlYNTA5X1NUT1JFX25ldzsKLSsJCVg1MDlfU1RPUkVfc2V0X2RlZmF1bHRfcGF0aHM7Ci0rCQlYNTA5X1ZBTF9mcmVlOwotKwkJWDUwOV9WQUxfbmV3OwotKwkJWDUwOV9hZGRfZXh0OwotKwkJWDUwOV9hc24xX21ldGg7Ci0rCQlYNTA5X2NlcnRpZmljYXRlX3R5cGU7Ci0rCQlYNTA5X2NoZWNrX3ByaXZhdGVfa2V5OwotKwkJWDUwOV9jbXBfY3VycmVudF90aW1lOwotKwkJWDUwOV9kZWxldGVfZXh0OwotKwkJWDUwOV9kaWdlc3Q7Ci0rCQlYNTA5X2R1cDsKLSsJCVg1MDlfZnJlZTsKLSsJCVg1MDlfZ2V0X2RlZmF1bHRfY2VydF9hcmVhOwotKwkJWDUwOV9nZXRfZGVmYXVsdF9jZXJ0X2RpcjsKLSsJCVg1MDlfZ2V0X2RlZmF1bHRfY2VydF9kaXJfZW52OwotKwkJWDUwOV9nZXRfZGVmYXVsdF9jZXJ0X2ZpbGU7Ci0rCQlYNTA5X2dldF9kZWZhdWx0X2NlcnRfZmlsZV9lbnY7Ci0rCQlYNTA5X2dldF9kZWZhdWx0X3ByaXZhdGVfZGlyOwotKwkJWDUwOV9nZXRfZXh0OwotKwkJWDUwOV9nZXRfZXh0X2J5X05JRDsKLSsJCVg1MDlfZ2V0X2V4dF9ieV9PQko7Ci0rCQlYNTA5X2dldF9leHRfYnlfY3JpdGljYWw7Ci0rCQlYNTA5X2dldF9leHRfY291bnQ7Ci0rCQlYNTA5X2dldF9pc3N1ZXJfbmFtZTsKLSsJCVg1MDlfZ2V0X3B1YmtleTsKLSsJCVg1MDlfZ2V0X3B1YmtleV9wYXJhbWV0ZXJzOwotKwkJWDUwOV9nZXRfc2VyaWFsTnVtYmVyOwotKwkJWDUwOV9nZXRfc3ViamVjdF9uYW1lOwotKwkJWDUwOV9nbXRpbWVfYWRqOwotKwkJWDUwOV9pc3N1ZXJfYW5kX3NlcmlhbF9jbXA7Ci0rCQlYNTA5X2lzc3Vlcl9hbmRfc2VyaWFsX2hhc2g7Ci0rCQlYNTA5X2lzc3Vlcl9uYW1lX2NtcDsKLSsJCVg1MDlfaXNzdWVyX25hbWVfaGFzaDsKLSsJCVg1MDlfbG9hZF9jZXJ0X2ZpbGU7Ci0rCQlYNTA5X25ldzsKLSsJCVg1MDlfcHJpbnQ7Ci0rCQlYNTA5X3ByaW50X2ZwOwotKwkJWDUwOV9zZXRfaXNzdWVyX25hbWU7Ci0rCQlYNTA5X3NldF9ub3RBZnRlcjsKLSsJCVg1MDlfc2V0X25vdEJlZm9yZTsKLSsJCVg1MDlfc2V0X3B1YmtleTsKLSsJCVg1MDlfc2V0X3NlcmlhbE51bWJlcjsKLSsJCVg1MDlfc2V0X3N1YmplY3RfbmFtZTsKLSsJCVg1MDlfc2V0X3ZlcnNpb247Ci0rCQlYNTA5X3NpZ247Ci0rCQlYNTA5X3N1YmplY3RfbmFtZV9jbXA7Ci0rCQlYNTA5X3N1YmplY3RfbmFtZV9oYXNoOwotKwkJWDUwOV90b19YNTA5X1JFUTsKLSsJCVg1MDlfdmVyaWZ5OwotKwkJWDUwOV92ZXJpZnlfY2VydDsKLSsJCVg1MDlfdmVyaWZ5X2NlcnRfZXJyb3Jfc3RyaW5nOwotKwkJWDUwOXYzX2FkZF9leHQ7Ci0rCQlYNTA5djNfYWRkX2V4dGVuc2lvbjsKLSsJCVg1MDl2M19hZGRfbmV0c2NhcGVfZXh0ZW5zaW9uczsKLSsJCVg1MDl2M19hZGRfc3RhbmRhcmRfZXh0ZW5zaW9uczsKLSsJCVg1MDl2M19jbGVhbnVwX2V4dGVuc2lvbnM7Ci0rCQlYNTA5djNfZGF0YV90eXBlX2J5X05JRDsKLSsJCVg1MDl2M19kYXRhX3R5cGVfYnlfT0JKOwotKwkJWDUwOXYzX2RlbGV0ZV9leHQ7Ci0rCQlYNTA5djNfZ2V0X2V4dDsKLSsJCVg1MDl2M19nZXRfZXh0X2J5X05JRDsKLSsJCVg1MDl2M19nZXRfZXh0X2J5X09CSjsKLSsJCVg1MDl2M19nZXRfZXh0X2J5X2NyaXRpY2FsOwotKwkJWDUwOXYzX2dldF9leHRfY291bnQ7Ci0rCQlYNTA5djNfcGFja19zdHJpbmc7Ci0rCQlYNTA5djNfcGFja190eXBlX2J5X05JRDsKLSsJCVg1MDl2M19wYWNrX3R5cGVfYnlfT0JKOwotKwkJWDUwOXYzX3VucGFja19zdHJpbmc7Ci0rCQlfZGVzX2NyeXB0OwotKwkJYTJkX0FTTjFfT0JKRUNUOwotKwkJYTJpX0FTTjFfSU5URUdFUjsKLSsJCWEyaV9BU04xX1NUUklORzsKLSsJCWFzbjFfRmluaXNoOwotKwkJYXNuMV9HZXRTZXF1ZW5jZTsKLSsJCWJuX2Rpdl93b3JkczsKLSsJCWJuX2V4cGFuZDI7Ci0rCQlibl9tdWxfYWRkX3dvcmRzOwotKwkJYm5fbXVsX3dvcmRzOwotKwkJQk5fdWFkZDsKLSsJCUJOX3VzdWI7Ci0rCQlibl9zcXJfd29yZHM7Ci0rCQlfb3NzbF9vbGRfY3J5cHQ7Ci0rCQlkMmlfQVNOMV9CSVRfU1RSSU5HOwotKwkJZDJpX0FTTjFfQk9PTEVBTjsKLSsJCWQyaV9BU04xX0hFQURFUjsKLSsJCWQyaV9BU04xX0lBNVNUUklORzsKLSsJCWQyaV9BU04xX0lOVEVHRVI7Ci0rCQlkMmlfQVNOMV9PQkpFQ1Q7Ci0rCQlkMmlfQVNOMV9PQ1RFVF9TVFJJTkc7Ci0rCQlkMmlfQVNOMV9QUklOVEFCTEU7Ci0rCQlkMmlfQVNOMV9QUklOVEFCTEVTVFJJTkc7Ci0rCQlkMmlfQVNOMV9TRVQ7Ci0rCQlkMmlfQVNOMV9UNjFTVFJJTkc7Ci0rCQlkMmlfQVNOMV9UWVBFOwotKwkJZDJpX0FTTjFfVVRDVElNRTsKLSsJCWQyaV9BU04xX2J5dGVzOwotKwkJZDJpX0FTTjFfdHlwZV9ieXRlczsKLSsJCWQyaV9ESHBhcmFtczsKLSsJCWQyaV9EU0FQcml2YXRlS2V5OwotKwkJZDJpX0RTQVByaXZhdGVLZXlfYmlvOwotKwkJZDJpX0RTQVByaXZhdGVLZXlfZnA7Ci0rCQlkMmlfRFNBUHVibGljS2V5OwotKwkJZDJpX0RTQXBhcmFtczsKLSsJCWQyaV9ORVRTQ0FQRV9TUEtBQzsKLSsJCWQyaV9ORVRTQ0FQRV9TUEtJOwotKwkJZDJpX05ldHNjYXBlX1JTQTsKLSsJCWQyaV9QS0NTNzsKLSsJCWQyaV9QS0NTN19ESUdFU1Q7Ci0rCQlkMmlfUEtDUzdfRU5DUllQVDsKLSsJCWQyaV9QS0NTN19FTkNfQ09OVEVOVDsKLSsJCWQyaV9QS0NTN19FTlZFTE9QRTsKLSsJCWQyaV9QS0NTN19JU1NVRVJfQU5EX1NFUklBTDsKLSsJCWQyaV9QS0NTN19SRUNJUF9JTkZPOwotKwkJZDJpX1BLQ1M3X1NJR05FRDsKLSsJCWQyaV9QS0NTN19TSUdORVJfSU5GTzsKLSsJCWQyaV9QS0NTN19TSUdOX0VOVkVMT1BFOwotKwkJZDJpX1BLQ1M3X2JpbzsKLSsJCWQyaV9QS0NTN19mcDsKLSsJCWQyaV9Qcml2YXRlS2V5OwotKwkJZDJpX1B1YmxpY0tleTsKLSsJCWQyaV9SU0FQcml2YXRlS2V5OwotKwkJZDJpX1JTQVByaXZhdGVLZXlfYmlvOwotKwkJZDJpX1JTQVByaXZhdGVLZXlfZnA7Ci0rCQlkMmlfUlNBUHVibGljS2V5OwotKwkJZDJpX1g1MDk7Ci0rCQlkMmlfWDUwOV9BTEdPUjsKLSsJCWQyaV9YNTA5X0FUVFJJQlVURTsKLSsJCWQyaV9YNTA5X0NJTkY7Ci0rCQlkMmlfWDUwOV9DUkw7Ci0rCQlkMmlfWDUwOV9DUkxfSU5GTzsKLSsJCWQyaV9YNTA5X0NSTF9iaW87Ci0rCQlkMmlfWDUwOV9DUkxfZnA7Ci0rCQlkMmlfWDUwOV9FWFRFTlNJT047Ci0rCQlkMmlfWDUwOV9OQU1FOwotKwkJZDJpX1g1MDlfTkFNRV9FTlRSWTsKLSsJCWQyaV9YNTA5X1BLRVk7Ci0rCQlkMmlfWDUwOV9QVUJLRVk7Ci0rCQlkMmlfWDUwOV9SRVE7Ci0rCQlkMmlfWDUwOV9SRVFfSU5GTzsKLSsJCWQyaV9YNTA5X1JFUV9iaW87Ci0rCQlkMmlfWDUwOV9SRVFfZnA7Ci0rCQlkMmlfWDUwOV9SRVZPS0VEOwotKwkJZDJpX1g1MDlfU0lHOwotKwkJZDJpX1g1MDlfVkFMOwotKwkJZDJpX1g1MDlfYmlvOwotKwkJZDJpX1g1MDlfZnA7Ci0rCQlERVNfY2JjX2Nrc3VtOwotKwkJREVTX2NiY19lbmNyeXB0OwotKwkJREVTX2NibG9ja19wcmludF9maWxlOwotKwkJREVTX2NmYjY0X2VuY3J5cHQ7Ci0rCQlERVNfY2ZiX2VuY3J5cHQ7Ci0rCQlERVNfZGVjcnlwdDM7Ci0rCQlERVNfZWNiM19lbmNyeXB0OwotKwkJREVTX2VjYl9lbmNyeXB0OwotKwkJREVTX2VkZTNfY2JjX2VuY3J5cHQ7Ci0rCQlERVNfZWRlM19jZmI2NF9lbmNyeXB0OwotKwkJREVTX2VkZTNfb2ZiNjRfZW5jcnlwdDsKLSsJCURFU19lbmNfcmVhZDsKLSsJCURFU19lbmNfd3JpdGU7Ci0rCQlERVNfZW5jcnlwdDE7Ci0rCQlERVNfZW5jcnlwdDI7Ci0rCQlERVNfZW5jcnlwdDM7Ci0rCQlERVNfZmNyeXB0OwotKwkJREVTX2lzX3dlYWtfa2V5OwotKwkJREVTX2tleV9zY2hlZDsKLSsJCURFU19uY2JjX2VuY3J5cHQ7Ci0rCQlERVNfb2ZiNjRfZW5jcnlwdDsKLSsJCURFU19vZmJfZW5jcnlwdDsKLSsJCURFU19vcHRpb25zOwotKwkJREVTX3BjYmNfZW5jcnlwdDsKLSsJCURFU19xdWFkX2Nrc3VtOwotKwkJREVTX3JhbmRvbV9rZXk7Ci0rCQlfb3NzbF9vbGRfZGVzX3JhbmRvbV9zZWVkOwotKwkJX29zc2xfb2xkX2Rlc19yZWFkXzJwYXNzd29yZHM7Ci0rCQlfb3NzbF9vbGRfZGVzX3JlYWRfcGFzc3dvcmQ7Ci0rCQlfb3NzbF9vbGRfZGVzX3JlYWRfcHc7Ci0rCQlfb3NzbF9vbGRfZGVzX3JlYWRfcHdfc3RyaW5nOwotKwkJREVTX3NldF9rZXk7Ci0rCQlERVNfc2V0X29kZF9wYXJpdHk7Ci0rCQlERVNfc3RyaW5nX3RvXzJrZXlzOwotKwkJREVTX3N0cmluZ190b19rZXk7Ci0rCQlERVNfeGNiY19lbmNyeXB0OwotKwkJREVTX3h3aGl0ZV9pbjJvdXQ7Ci0rCQlmY3J5cHRfYm9keTsKLSsJCWkyYV9BU04xX0lOVEVHRVI7Ci0rCQlpMmFfQVNOMV9PQkpFQ1Q7Ci0rCQlpMmFfQVNOMV9TVFJJTkc7Ci0rCQlpMmRfQVNOMV9CSVRfU1RSSU5HOwotKwkJaTJkX0FTTjFfQk9PTEVBTjsKLSsJCWkyZF9BU04xX0hFQURFUjsKLSsJCWkyZF9BU04xX0lBNVNUUklORzsKLSsJCWkyZF9BU04xX0lOVEVHRVI7Ci0rCQlpMmRfQVNOMV9PQkpFQ1Q7Ci0rCQlpMmRfQVNOMV9PQ1RFVF9TVFJJTkc7Ci0rCQlpMmRfQVNOMV9QUklOVEFCTEU7Ci0rCQlpMmRfQVNOMV9TRVQ7Ci0rCQlpMmRfQVNOMV9UWVBFOwotKwkJaTJkX0FTTjFfVVRDVElNRTsKLSsJCWkyZF9BU04xX2J5dGVzOwotKwkJaTJkX0RIcGFyYW1zOwotKwkJaTJkX0RTQVByaXZhdGVLZXk7Ci0rCQlpMmRfRFNBUHJpdmF0ZUtleV9iaW87Ci0rCQlpMmRfRFNBUHJpdmF0ZUtleV9mcDsKLSsJCWkyZF9EU0FQdWJsaWNLZXk7Ci0rCQlpMmRfRFNBcGFyYW1zOwotKwkJaTJkX05FVFNDQVBFX1NQS0FDOwotKwkJaTJkX05FVFNDQVBFX1NQS0k7Ci0rCQlpMmRfTmV0c2NhcGVfUlNBOwotKwkJaTJkX1BLQ1M3OwotKwkJaTJkX1BLQ1M3X0RJR0VTVDsKLSsJCWkyZF9QS0NTN19FTkNSWVBUOwotKwkJaTJkX1BLQ1M3X0VOQ19DT05URU5UOwotKwkJaTJkX1BLQ1M3X0VOVkVMT1BFOwotKwkJaTJkX1BLQ1M3X0lTU1VFUl9BTkRfU0VSSUFMOwotKwkJaTJkX1BLQ1M3X1JFQ0lQX0lORk87Ci0rCQlpMmRfUEtDUzdfU0lHTkVEOwotKwkJaTJkX1BLQ1M3X1NJR05FUl9JTkZPOwotKwkJaTJkX1BLQ1M3X1NJR05fRU5WRUxPUEU7Ci0rCQlpMmRfUEtDUzdfYmlvOwotKwkJaTJkX1BLQ1M3X2ZwOwotKwkJaTJkX1ByaXZhdGVLZXk7Ci0rCQlpMmRfUHVibGljS2V5OwotKwkJaTJkX1JTQVByaXZhdGVLZXk7Ci0rCQlpMmRfUlNBUHJpdmF0ZUtleV9iaW87Ci0rCQlpMmRfUlNBUHJpdmF0ZUtleV9mcDsKLSsJCWkyZF9SU0FQdWJsaWNLZXk7Ci0rCQlpMmRfWDUwOTsKLSsJCWkyZF9YNTA5X0FMR09SOwotKwkJaTJkX1g1MDlfQVRUUklCVVRFOwotKwkJaTJkX1g1MDlfQ0lORjsKLSsJCWkyZF9YNTA5X0NSTDsKLSsJCWkyZF9YNTA5X0NSTF9JTkZPOwotKwkJaTJkX1g1MDlfQ1JMX2JpbzsKLSsJCWkyZF9YNTA5X0NSTF9mcDsKLSsJCWkyZF9YNTA5X0VYVEVOU0lPTjsKLSsJCWkyZF9YNTA5X05BTUU7Ci0rCQlpMmRfWDUwOV9OQU1FX0VOVFJZOwotKwkJaTJkX1g1MDlfUEtFWTsKLSsJCWkyZF9YNTA5X1BVQktFWTsKLSsJCWkyZF9YNTA5X1JFUTsKLSsJCWkyZF9YNTA5X1JFUV9JTkZPOwotKwkJaTJkX1g1MDlfUkVRX2JpbzsKLSsJCWkyZF9YNTA5X1JFUV9mcDsKLSsJCWkyZF9YNTA5X1JFVk9LRUQ7Ci0rCQlpMmRfWDUwOV9TSUc7Ci0rCQlpMmRfWDUwOV9WQUw7Ci0rCQlpMmRfWDUwOV9iaW87Ci0rCQlpMmRfWDUwOV9mcDsKLSsJCWlkZWFfY2JjX2VuY3J5cHQ7Ci0rCQlpZGVhX2NmYjY0X2VuY3J5cHQ7Ci0rCQlpZGVhX2VjYl9lbmNyeXB0OwotKwkJaWRlYV9lbmNyeXB0OwotKwkJaWRlYV9vZmI2NF9lbmNyeXB0OwotKwkJaWRlYV9vcHRpb25zOwotKwkJaWRlYV9zZXRfZGVjcnlwdF9rZXk7Ci0rCQlpZGVhX3NldF9lbmNyeXB0X2tleTsKLSsJCWxoX2RlbGV0ZTsKLSsJCWxoX2RvYWxsOwotKwkJbGhfZG9hbGxfYXJnOwotKwkJbGhfZnJlZTsKLSsJCWxoX2luc2VydDsKLSsJCWxoX25ldzsKLSsJCWxoX25vZGVfc3RhdHM7Ci0rCQlsaF9ub2RlX3N0YXRzX2JpbzsKLSsJCWxoX25vZGVfdXNhZ2Vfc3RhdHM7Ci0rCQlsaF9ub2RlX3VzYWdlX3N0YXRzX2JpbzsKLSsJCWxoX3JldHJpZXZlOwotKwkJbGhfc3RhdHM7Ci0rCQlsaF9zdGF0c19iaW87Ci0rCQlsaF9zdHJoYXNoOwotKwkJc2tfZGVsZXRlOwotKwkJc2tfZGVsZXRlX3B0cjsKLSsJCXNrX2R1cDsKLSsJCXNrX2ZpbmQ7Ci0rCQlza19mcmVlOwotKwkJc2tfaW5zZXJ0OwotKwkJc2tfbmV3OwotKwkJc2tfcG9wOwotKwkJc2tfcG9wX2ZyZWU7Ci0rCQlza19wdXNoOwotKwkJc2tfc2V0X2NtcF9mdW5jOwotKwkJc2tfc2hpZnQ7Ci0rCQlza191bnNoaWZ0OwotKwkJc2tfemVybzsKLSsJCUJJT19mX25iaW9fdGVzdDsKLSsJCUFTTjFfVFlQRV9nZXQ7Ci0rCQlBU04xX1RZUEVfc2V0OwotKwkJUEtDUzdfY29udGVudF9mcmVlOwotKwkJRVJSX2xvYWRfUEtDUzdfc3RyaW5nczsKLSsJCVg1MDlfZmluZF9ieV9pc3N1ZXJfYW5kX3NlcmlhbDsKLSsJCVg1MDlfZmluZF9ieV9zdWJqZWN0OwotKwkJUEtDUzdfY3RybDsKLSsJCVBLQ1M3X3NldF90eXBlOwotKwkJUEtDUzdfc2V0X2NvbnRlbnQ7Ci0rCQlQS0NTN19TSUdORVJfSU5GT19zZXQ7Ci0rCQlQS0NTN19hZGRfc2lnbmVyOwotKwkJUEtDUzdfYWRkX2NlcnRpZmljYXRlOwotKwkJUEtDUzdfYWRkX2NybDsKLSsJCVBLQ1M3X2NvbnRlbnRfbmV3OwotKwkJUEtDUzdfZGF0YVNpZ247Ci0rCQlQS0NTN19kYXRhVmVyaWZ5OwotKwkJUEtDUzdfZGF0YUluaXQ7Ci0rCQlQS0NTN19hZGRfc2lnbmF0dXJlOwotKwkJUEtDUzdfY2VydF9mcm9tX3NpZ25lcl9pbmZvOwotKwkJUEtDUzdfZ2V0X3NpZ25lcl9pbmZvOwotKwkJRVZQX2RlbGV0ZV9hbGlhczsKLSsJCUVWUF9tZGMyOwotKwkJUEVNX3JlYWRfYmlvX1JTQVB1YmxpY0tleTsKLSsJCVBFTV93cml0ZV9iaW9fUlNBUHVibGljS2V5OwotKwkJZDJpX1JTQVB1YmxpY0tleV9iaW87Ci0rCQlpMmRfUlNBUHVibGljS2V5X2JpbzsKLSsJCVBFTV9yZWFkX1JTQVB1YmxpY0tleTsKLSsJCVBFTV93cml0ZV9SU0FQdWJsaWNLZXk7Ci0rCQlkMmlfUlNBUHVibGljS2V5X2ZwOwotKwkJaTJkX1JTQVB1YmxpY0tleV9mcDsKLSsJCUJJT19jb3B5X25leHRfcmV0cnk7Ci0rCQlSU0FfZmxhZ3M7Ci0rCQlYNTA5X1NUT1JFX2FkZF9jcmw7Ci0rCQlYNTA5X2xvYWRfY3JsX2ZpbGU7Ci0rCQlFVlBfcmMyXzQwX2NiYzsKLSsJCUVWUF9yYzRfNDA7Ci0rCQlFVlBfQ0lQSEVSX0NUWF9pbml0OwotKwkJSE1BQzsKLSsJCUhNQUNfSW5pdDsKLSsJCUhNQUNfVXBkYXRlOwotKwkJSE1BQ19GaW5hbDsKLSsJCUVSUl9nZXRfbmV4dF9lcnJvcl9saWJyYXJ5OwotKwkJRVZQX1BLRVlfY21wX3BhcmFtZXRlcnM7Ci0rCQlITUFDX2NsZWFudXA7Ci0rCQlCSU9fcHRyX2N0cmw7Ci0rCQlCSU9fbmV3X2ZpbGVfaW50ZXJuYWw7Ci0rCQlCSU9fbmV3X2ZwX2ludGVybmFsOwotKwkJQklPX3NfZmlsZV9pbnRlcm5hbDsKLSsJCUJOX0JMSU5ESU5HX2NvbnZlcnQ7Ci0rCQlCTl9CTElORElOR19pbnZlcnQ7Ci0rCQlCTl9CTElORElOR191cGRhdGU7Ci0rCQlSU0FfYmxpbmRpbmdfb247Ci0rCQlSU0FfYmxpbmRpbmdfb2ZmOwotKwkJaTJ0X0FTTjFfT0JKRUNUOwotKwkJQk5fQkxJTkRJTkdfbmV3OwotKwkJQk5fQkxJTkRJTkdfZnJlZTsKLSsJCUVWUF9jYXN0NV9jYmM7Ci0rCQlFVlBfY2FzdDVfY2ZiNjQ7Ci0rCQlFVlBfY2FzdDVfZWNiOwotKwkJRVZQX2Nhc3Q1X29mYjsKLSsJCUJGX2RlY3J5cHQ7Ci0rCQlDQVNUX3NldF9rZXk7Ci0rCQlDQVNUX2VuY3J5cHQ7Ci0rCQlDQVNUX2RlY3J5cHQ7Ci0rCQlDQVNUX2VjYl9lbmNyeXB0OwotKwkJQ0FTVF9jYmNfZW5jcnlwdDsKLSsJCUNBU1RfY2ZiNjRfZW5jcnlwdDsKLSsJCUNBU1Rfb2ZiNjRfZW5jcnlwdDsKLSsJCVJDMl9kZWNyeXB0OwotKwkJT0JKX2NyZWF0ZV9vYmplY3RzOwotKwkJQk5fZXhwOwotKwkJQk5fbXVsX3dvcmQ7Ci0rCQlCTl9zdWJfd29yZDsKLSsJCUJOX2RlYzJibjsKLSsJCUJOX2JuMmRlYzsKLSsJCUJJT19naGJuX2N0cmw7Ci0rCQlDUllQVE9fZnJlZV9leF9kYXRhOwotKwkJQ1JZUFRPX2dldF9leF9kYXRhOwotKwkJQ1JZUFRPX3NldF9leF9kYXRhOwotKwkJRVJSX2xvYWRfQ1JZUFRPX3N0cmluZ3M7Ci0rCQlFUlJfbG9hZF9DUllQVE9saWJfc3RyaW5nczsKLSsJCUVWUF9QS0VZX2JpdHM7Ci0rCQlNRDVfVHJhbnNmb3JtOwotKwkJU0hBMV9UcmFuc2Zvcm07Ci0rCQlTSEFfVHJhbnNmb3JtOwotKwkJWDUwOV9TVE9SRV9DVFhfZ2V0X2NoYWluOwotKwkJWDUwOV9TVE9SRV9DVFhfZ2V0X2N1cnJlbnRfY2VydDsKLSsJCVg1MDlfU1RPUkVfQ1RYX2dldF9lcnJvcjsKLSsJCVg1MDlfU1RPUkVfQ1RYX2dldF9lcnJvcl9kZXB0aDsKLSsJCVg1MDlfU1RPUkVfQ1RYX2dldF9leF9kYXRhOwotKwkJWDUwOV9TVE9SRV9DVFhfc2V0X2NlcnQ7Ci0rCQlYNTA5X1NUT1JFX0NUWF9zZXRfY2hhaW47Ci0rCQlYNTA5X1NUT1JFX0NUWF9zZXRfZXJyb3I7Ci0rCQlYNTA5X1NUT1JFX0NUWF9zZXRfZXhfZGF0YTsKLSsJCUNSWVBUT19kdXBfZXhfZGF0YTsKLSsJCUNSWVBUT19nZXRfbmV3X2xvY2tpZDsKLSsJCUNSWVBUT19uZXdfZXhfZGF0YTsKLSsJCVJTQV9zZXRfZXhfZGF0YTsKLSsJCVJTQV9nZXRfZXhfZGF0YTsKLSsJCVJTQV9nZXRfZXhfbmV3X2luZGV4OwotKwkJUlNBX3BhZGRpbmdfYWRkX1BLQ1MxX3R5cGVfMTsKLSsJCVJTQV9wYWRkaW5nX2FkZF9QS0NTMV90eXBlXzI7Ci0rCQlSU0FfcGFkZGluZ19hZGRfU1NMdjIzOwotKwkJUlNBX3BhZGRpbmdfYWRkX25vbmU7Ci0rCQlSU0FfcGFkZGluZ19jaGVja19QS0NTMV90eXBlXzE7Ci0rCQlSU0FfcGFkZGluZ19jaGVja19QS0NTMV90eXBlXzI7Ci0rCQlSU0FfcGFkZGluZ19jaGVja19TU0x2MjM7Ci0rCQlSU0FfcGFkZGluZ19jaGVja19ub25lOwotKwkJYm5fYWRkX3dvcmRzOwotKwkJZDJpX05ldHNjYXBlX1JTQV8yOwotKwkJQ1JZUFRPX2dldF9leF9uZXdfaW5kZXg7Ci0rCQlSSVBFTUQxNjBfSW5pdDsKLSsJCVJJUEVNRDE2MF9VcGRhdGU7Ci0rCQlSSVBFTUQxNjBfRmluYWw7Ci0rCQlSSVBFTUQxNjA7Ci0rCQlSSVBFTUQxNjBfVHJhbnNmb3JtOwotKwkJUkM1XzMyX3NldF9rZXk7Ci0rCQlSQzVfMzJfZWNiX2VuY3J5cHQ7Ci0rCQlSQzVfMzJfZW5jcnlwdDsKLSsJCVJDNV8zMl9kZWNyeXB0OwotKwkJUkM1XzMyX2NiY19lbmNyeXB0OwotKwkJUkM1XzMyX2NmYjY0X2VuY3J5cHQ7Ci0rCQlSQzVfMzJfb2ZiNjRfZW5jcnlwdDsKLSsJCUJOX2JuMm1waTsKLSsJCUJOX21waTJibjsKLSsJCUFTTjFfQklUX1NUUklOR19nZXRfYml0OwotKwkJQVNOMV9CSVRfU1RSSU5HX3NldF9iaXQ7Ci0rCQlCSU9fZ2V0X2V4X2RhdGE7Ci0rCQlCSU9fZ2V0X2V4X25ld19pbmRleDsKLSsJCUJJT19zZXRfZXhfZGF0YTsKLSsJCVg1MDl2M19nZXRfa2V5X3VzYWdlOwotKwkJWDUwOXYzX3NldF9rZXlfdXNhZ2U7Ci0rCQlhMmlfWDUwOXYzX2tleV91c2FnZTsKLSsJCWkyYV9YNTA5djNfa2V5X3VzYWdlOwotKwkJRVZQX1BLRVlfZGVjcnlwdDsKLSsJCUVWUF9QS0VZX2VuY3J5cHQ7Ci0rCQlQS0NTN19SRUNJUF9JTkZPX3NldDsKLSsJCVBLQ1M3X2FkZF9yZWNpcGllbnQ7Ci0rCQlQS0NTN19hZGRfcmVjaXBpZW50X2luZm87Ci0rCQlQS0NTN19zZXRfY2lwaGVyOwotKwkJQVNOMV9UWVBFX2dldF9pbnRfb2N0ZXRzdHJpbmc7Ci0rCQlBU04xX1RZUEVfZ2V0X29jdGV0c3RyaW5nOwotKwkJQVNOMV9UWVBFX3NldF9pbnRfb2N0ZXRzdHJpbmc7Ci0rCQlBU04xX1RZUEVfc2V0X29jdGV0c3RyaW5nOwotKwkJQVNOMV9VVENUSU1FX3NldF9zdHJpbmc7Ci0rCQlFUlJfYWRkX2Vycm9yX2RhdGE7Ci0rCQlFUlJfc2V0X2Vycm9yX2RhdGE7Ci0rCQlFVlBfQ0lQSEVSX2FzbjFfdG9fcGFyYW07Ci0rCQlFVlBfQ0lQSEVSX3BhcmFtX3RvX2FzbjE7Ci0rCQlFVlBfQ0lQSEVSX2dldF9hc24xX2l2OwotKwkJRVZQX0NJUEhFUl9zZXRfYXNuMV9pdjsKLSsJCUVWUF9yYzVfMzJfMTJfMTZfY2JjOwotKwkJRVZQX3JjNV8zMl8xMl8xNl9jZmI2NDsKLSsJCUVWUF9yYzVfMzJfMTJfMTZfZWNiOwotKwkJRVZQX3JjNV8zMl8xMl8xNl9vZmI7Ci0rCQlhc24xX2FkZF9lcnJvcjsKLSsJCWQyaV9BU04xX0JNUFNUUklORzsKLSsJCWkyZF9BU04xX0JNUFNUUklORzsKLSsJCUJJT19mX2JlcjsKLSsJCUJOX2luaXQ7Ci0rCQlDT01QX0NUWF9uZXc7Ci0rCQlDT01QX0NUWF9mcmVlOwotKwkJQ09NUF9DVFhfY29tcHJlc3NfYmxvY2s7Ci0rCQlDT01QX0NUWF9leHBhbmRfYmxvY2s7Ci0rCQlYNTA5X1NUT1JFX0NUWF9nZXRfZXhfbmV3X2luZGV4OwotKwkJT0JKX05BTUVfYWRkOwotKwkJQklPX3NvY2tldF9uYmlvOwotKwkJRVZQX3JjMl82NF9jYmM7Ci0rCQlPQkpfTkFNRV9jbGVhbnVwOwotKwkJT0JKX05BTUVfZ2V0OwotKwkJT0JKX05BTUVfaW5pdDsKLSsJCU9CSl9OQU1FX25ld19pbmRleDsKLSsJCU9CSl9OQU1FX3JlbW92ZTsKLSsJCUJOX01PTlRfQ1RYX2NvcHk7Ci0rCQlCSU9fbmV3X3NvY2tzNGFfY29ubmVjdDsKLSsJCUJJT19zX3NvY2tzNGFfY29ubmVjdDsKLSsJCVBST1hZX3NldF9jb25uZWN0X21vZGU7Ci0rCQlSQU5EX1NTTGVheTsKLSsJCVJBTkRfc2V0X3JhbmRfbWV0aG9kOwotKwkJUlNBX21lbW9yeV9sb2NrOwotKwkJYm5fc3ViX3dvcmRzOwotKwkJYm5fbXVsX25vcm1hbDsKLSsJCWJuX211bF9jb21iYTg7Ci0rCQlibl9tdWxfY29tYmE0OwotKwkJYm5fc3FyX25vcm1hbDsKLSsJCWJuX3Nxcl9jb21iYTg7Ci0rCQlibl9zcXJfY29tYmE0OwotKwkJYm5fY21wX3dvcmRzOwotKwkJYm5fbXVsX3JlY3Vyc2l2ZTsKLSsJCWJuX211bF9wYXJ0X3JlY3Vyc2l2ZTsKLSsJCWJuX3Nxcl9yZWN1cnNpdmU7Ci0rCQlibl9tdWxfbG93X25vcm1hbDsKLSsJCUJOX1JFQ1BfQ1RYX2luaXQ7Ci0rCQlCTl9SRUNQX0NUWF9uZXc7Ci0rCQlCTl9SRUNQX0NUWF9mcmVlOwotKwkJQk5fUkVDUF9DVFhfc2V0OwotKwkJQk5fbW9kX211bF9yZWNpcHJvY2FsOwotKwkJQk5fbW9kX2V4cF9yZWNwOwotKwkJQk5fZGl2X3JlY3A7Ci0rCQlCTl9DVFhfaW5pdDsKLSsJCUJOX01PTlRfQ1RYX2luaXQ7Ci0rCQlSQU5EX2dldF9yYW5kX21ldGhvZDsKLSsJCVBLQ1M3X2FkZF9hdHRyaWJ1dGU7Ci0rCQlQS0NTN19hZGRfc2lnbmVkX2F0dHJpYnV0ZTsKLSsJCVBLQ1M3X2RpZ2VzdF9mcm9tX2F0dHJpYnV0ZXM7Ci0rCQlQS0NTN19nZXRfYXR0cmlidXRlOwotKwkJUEtDUzdfZ2V0X2lzc3Vlcl9hbmRfc2VyaWFsOwotKwkJUEtDUzdfZ2V0X3NpZ25lZF9hdHRyaWJ1dGU7Ci0rCQlDT01QX2NvbXByZXNzX2Jsb2NrOwotKwkJQ09NUF9leHBhbmRfYmxvY2s7Ci0rCQlDT01QX3JsZTsKLSsJCUNPTVBfemxpYjsKLSsJCW1zX3RpbWVfZGlmZjsKLSsJCW1zX3RpbWVfbmV3OwotKwkJbXNfdGltZV9mcmVlOwotKwkJbXNfdGltZV9jbXA7Ci0rCQltc190aW1lX2dldDsKLSsJCVBLQ1M3X3NldF9hdHRyaWJ1dGVzOwotKwkJUEtDUzdfc2V0X3NpZ25lZF9hdHRyaWJ1dGVzOwotKwkJWDUwOV9BVFRSSUJVVEVfY3JlYXRlOwotKwkJWDUwOV9BVFRSSUJVVEVfZHVwOwotKwkJQVNOMV9HRU5FUkFMSVpFRFRJTUVfY2hlY2s7Ci0rCQlBU04xX0dFTkVSQUxJWkVEVElNRV9wcmludDsKLSsJCUFTTjFfR0VORVJBTElaRURUSU1FX3NldDsKLSsJCUFTTjFfR0VORVJBTElaRURUSU1FX3NldF9zdHJpbmc7Ci0rCQlBU04xX1RJTUVfcHJpbnQ7Ci0rCQlCQVNJQ19DT05TVFJBSU5UU19mcmVlOwotKwkJQkFTSUNfQ09OU1RSQUlOVFNfbmV3OwotKwkJRVJSX2xvYWRfWDUwOVYzX3N0cmluZ3M7Ci0rCQlORVRTQ0FQRV9DRVJUX1NFUVVFTkNFX2ZyZWU7Ci0rCQlORVRTQ0FQRV9DRVJUX1NFUVVFTkNFX25ldzsKLSsJCU9CSl90eHQyb2JqOwotKwkJUEVNX3JlYWRfTkVUU0NBUEVfQ0VSVF9TRVFVRU5DRTsKLSsJCVBFTV9yZWFkX05TX0NFUlRfU0VROwotKwkJUEVNX3JlYWRfYmlvX05FVFNDQVBFX0NFUlRfU0VRVUVOQ0U7Ci0rCQlQRU1fcmVhZF9iaW9fTlNfQ0VSVF9TRVE7Ci0rCQlQRU1fd3JpdGVfTkVUU0NBUEVfQ0VSVF9TRVFVRU5DRTsKLSsJCVBFTV93cml0ZV9OU19DRVJUX1NFUTsKLSsJCVBFTV93cml0ZV9iaW9fTkVUU0NBUEVfQ0VSVF9TRVFVRU5DRTsKLSsJCVBFTV93cml0ZV9iaW9fTlNfQ0VSVF9TRVE7Ci0rCQlYNTA5VjNfRVhUX2FkZDsKLSsJCVg1MDlWM19FWFRfYWRkX2FsaWFzOwotKwkJWDUwOVYzX0VYVF9hZGRfY29uZjsKLSsJCVg1MDlWM19FWFRfY2xlYW51cDsKLSsJCVg1MDlWM19FWFRfY29uZjsKLSsJCVg1MDlWM19FWFRfY29uZl9uaWQ7Ci0rCQlYNTA5VjNfRVhUX2dldDsKLSsJCVg1MDlWM19FWFRfZ2V0X25pZDsKLSsJCVg1MDlWM19FWFRfcHJpbnQ7Ci0rCQlYNTA5VjNfRVhUX3ByaW50X2ZwOwotKwkJWDUwOVYzX2FkZF9zdGFuZGFyZF9leHRlbnNpb25zOwotKwkJWDUwOVYzX2FkZF92YWx1ZTsKLSsJCVg1MDlWM19hZGRfdmFsdWVfYm9vbDsKLSsJCVg1MDlWM19hZGRfdmFsdWVfaW50OwotKwkJWDUwOVYzX2NvbmZfZnJlZTsKLSsJCVg1MDlWM19nZXRfdmFsdWVfYm9vbDsKLSsJCVg1MDlWM19nZXRfdmFsdWVfaW50OwotKwkJWDUwOVYzX3BhcnNlX2xpc3Q7Ci0rCQlkMmlfQVNOMV9HRU5FUkFMSVpFRFRJTUU7Ci0rCQlkMmlfQVNOMV9USU1FOwotKwkJZDJpX0JBU0lDX0NPTlNUUkFJTlRTOwotKwkJZDJpX05FVFNDQVBFX0NFUlRfU0VRVUVOQ0U7Ci0rCQlkMmlfZXh0X2t1OwotKwkJZXh0X2t1X2ZyZWU7Ci0rCQlleHRfa3VfbmV3OwotKwkJaTJkX0FTTjFfR0VORVJBTElaRURUSU1FOwotKwkJaTJkX0FTTjFfVElNRTsKLSsJCWkyZF9CQVNJQ19DT05TVFJBSU5UUzsKLSsJCWkyZF9ORVRTQ0FQRV9DRVJUX1NFUVVFTkNFOwotKwkJaTJkX2V4dF9rdTsKLSsJCUVWUF9NRF9DVFhfY29weTsKLSsJCWkyZF9BU04xX0VOVU1FUkFURUQ7Ci0rCQlkMmlfQVNOMV9FTlVNRVJBVEVEOwotKwkJQVNOMV9FTlVNRVJBVEVEX3NldDsKLSsJCUFTTjFfRU5VTUVSQVRFRF9nZXQ7Ci0rCQlCTl90b19BU04xX0VOVU1FUkFURUQ7Ci0rCQlBU04xX0VOVU1FUkFURURfdG9fQk47Ci0rCQlpMmFfQVNOMV9FTlVNRVJBVEVEOwotKwkJYTJpX0FTTjFfRU5VTUVSQVRFRDsKLSsJCWkyZF9HRU5FUkFMX05BTUU7Ci0rCQlkMmlfR0VORVJBTF9OQU1FOwotKwkJR0VORVJBTF9OQU1FX25ldzsKLSsJCUdFTkVSQUxfTkFNRV9mcmVlOwotKwkJR0VORVJBTF9OQU1FU19uZXc7Ci0rCQlHRU5FUkFMX05BTUVTX2ZyZWU7Ci0rCQlkMmlfR0VORVJBTF9OQU1FUzsKLSsJCWkyZF9HRU5FUkFMX05BTUVTOwotKwkJaTJ2X0dFTkVSQUxfTkFNRVM7Ci0rCQlpMnNfQVNOMV9PQ1RFVF9TVFJJTkc7Ci0rCQlzMmlfQVNOMV9PQ1RFVF9TVFJJTkc7Ci0rCQlYNTA5VjNfRVhUX2NoZWNrX2NvbmY7Ci0rCQloZXhfdG9fc3RyaW5nOwotKwkJc3RyaW5nX3RvX2hleDsKLSsJCURFU19lZGUzX2NiY21fZW5jcnlwdDsKLSsJCVJTQV9wYWRkaW5nX2FkZF9QS0NTMV9PQUVQOwotKwkJUlNBX3BhZGRpbmdfY2hlY2tfUEtDUzFfT0FFUDsKLSsJCVg1MDlfQ1JMX3ByaW50X2ZwOwotKwkJWDUwOV9DUkxfcHJpbnQ7Ci0rCQlpMnZfR0VORVJBTF9OQU1FOwotKwkJdjJpX0dFTkVSQUxfTkFNRTsKLSsJCWkyZF9QS0VZX1VTQUdFX1BFUklPRDsKLSsJCWQyaV9QS0VZX1VTQUdFX1BFUklPRDsKLSsJCVBLRVlfVVNBR0VfUEVSSU9EX25ldzsKLSsJCVBLRVlfVVNBR0VfUEVSSU9EX2ZyZWU7Ci0rCQl2MmlfR0VORVJBTF9OQU1FUzsKLSsJCWkyc19BU04xX0lOVEVHRVI7Ci0rCQlYNTA5VjNfRVhUX2QyaTsKLSsJCW5hbWVfY21wOwotKwkJc3RyX2R1cDsKLSsJCWkyc19BU04xX0VOVU1FUkFURUQ7Ci0rCQlpMnNfQVNOMV9FTlVNRVJBVEVEX1RBQkxFOwotKwkJQklPX3NfbG9nOwotKwkJQklPX2ZfcmVsaWFibGU7Ci0rCQlQS0NTN19kYXRhRmluYWw7Ci0rCQlQS0NTN19kYXRhRGVjb2RlOwotKwkJWDUwOVYzX0VYVF9DUkxfYWRkX2NvbmY7Ci0rCQlCTl9zZXRfcGFyYW1zOwotKwkJQk5fZ2V0X3BhcmFtczsKLSsJCUJJT19nZXRfZXhfbnVtOwotKwkJQklPX3NldF9leF9mcmVlX2Z1bmM7Ci0rCQlFVlBfcmlwZW1kMTYwOwotKwkJQVNOMV9USU1FX3NldDsKLSsJCWkyZF9BVVRIT1JJVFlfS0VZSUQ7Ci0rCQlkMmlfQVVUSE9SSVRZX0tFWUlEOwotKwkJQVVUSE9SSVRZX0tFWUlEX25ldzsKLSsJCUFVVEhPUklUWV9LRVlJRF9mcmVlOwotKwkJQVNOMV9zZXFfdW5wYWNrOwotKwkJQVNOMV9zZXFfcGFjazsKLSsJCUFTTjFfdW5wYWNrX3N0cmluZzsKLSsJCUFTTjFfcGFja19zdHJpbmc7Ci0rCQlQS0NTMTJfcGFja19zYWZlYmFnOwotKwkJUEtDUzEyX01BS0VfS0VZQkFHOwotKwkJUEtDUzhfZW5jcnlwdDsKLSsJCVBLQ1MxMl9NQUtFX1NIS0VZQkFHOwotKwkJUEtDUzEyX3BhY2tfcDdkYXRhOwotKwkJUEtDUzEyX3BhY2tfcDdlbmNkYXRhOwotKwkJUEtDUzEyX2FkZF9sb2NhbGtleWlkOwotKwkJUEtDUzEyX2FkZF9mcmllbmRseW5hbWVfYXNjOwotKwkJUEtDUzEyX2FkZF9mcmllbmRseW5hbWVfdW5pOwotKwkJUEtDUzEyX2dldF9mcmllbmRseW5hbWU7Ci0rCQlQS0NTMTJfcGJlX2NyeXB0OwotKwkJUEtDUzEyX2RlY3J5cHRfZDJpOwotKwkJUEtDUzEyX2kyZF9lbmNyeXB0OwotKwkJUEtDUzEyX2luaXQ7Ci0rCQlQS0NTMTJfa2V5X2dlbl9hc2M7Ci0rCQlQS0NTMTJfa2V5X2dlbl91bmk7Ci0rCQlQS0NTMTJfZ2VuX21hYzsKLSsJCVBLQ1MxMl92ZXJpZnlfbWFjOwotKwkJUEtDUzEyX3NldF9tYWM7Ci0rCQlQS0NTMTJfc2V0dXBfbWFjOwotKwkJT1BFTlNTTF9hc2MydW5pOwotKwkJT1BFTlNTTF91bmkyYXNjOwotKwkJaTJkX1BLQ1MxMl9CQUdTOwotKwkJUEtDUzEyX0JBR1NfbmV3OwotKwkJZDJpX1BLQ1MxMl9CQUdTOwotKwkJUEtDUzEyX0JBR1NfZnJlZTsKLSsJCWkyZF9QS0NTMTI7Ci0rCQlkMmlfUEtDUzEyOwotKwkJUEtDUzEyX25ldzsKLSsJCVBLQ1MxMl9mcmVlOwotKwkJaTJkX1BLQ1MxMl9NQUNfREFUQTsKLSsJCVBLQ1MxMl9NQUNfREFUQV9uZXc7Ci0rCQlkMmlfUEtDUzEyX01BQ19EQVRBOwotKwkJUEtDUzEyX01BQ19EQVRBX2ZyZWU7Ci0rCQlpMmRfUEtDUzEyX1NBRkVCQUc7Ci0rCQlQS0NTMTJfU0FGRUJBR19uZXc7Ci0rCQlkMmlfUEtDUzEyX1NBRkVCQUc7Ci0rCQlQS0NTMTJfU0FGRUJBR19mcmVlOwotKwkJRVJSX2xvYWRfUEtDUzEyX3N0cmluZ3M7Ci0rCQlQS0NTMTJfUEJFX2FkZDsKLSsJCVBLQ1M4X2FkZF9rZXl1c2FnZTsKLSsJCVBLQ1MxMl9nZXRfYXR0cl9nZW47Ci0rCQlQS0NTMTJfcGFyc2U7Ci0rCQlQS0NTMTJfY3JlYXRlOwotKwkJaTJkX1BLQ1MxMl9iaW87Ci0rCQlpMmRfUEtDUzEyX2ZwOwotKwkJZDJpX1BLQ1MxMl9iaW87Ci0rCQlkMmlfUEtDUzEyX2ZwOwotKwkJaTJkX1BCRVBBUkFNOwotKwkJUEJFUEFSQU1fbmV3OwotKwkJZDJpX1BCRVBBUkFNOwotKwkJUEJFUEFSQU1fZnJlZTsKLSsJCWkyZF9QS0NTOF9QUklWX0tFWV9JTkZPOwotKwkJUEtDUzhfUFJJVl9LRVlfSU5GT19uZXc7Ci0rCQlkMmlfUEtDUzhfUFJJVl9LRVlfSU5GTzsKLSsJCVBLQ1M4X1BSSVZfS0VZX0lORk9fZnJlZTsKLSsJCUVWUF9QS0NTODJQS0VZOwotKwkJRVZQX1BLRVkyUEtDUzg7Ci0rCQlQS0NTOF9zZXRfYnJva2VuOwotKwkJRVZQX1BCRV9BTEdPUl9DaXBoZXJJbml0OwotKwkJRVZQX1BCRV9hbGdfYWRkOwotKwkJUEtDUzVfcGJlX3NldDsKLSsJCUVWUF9QQkVfY2xlYW51cDsKLSsJCWkyZF9TWE5FVDsKLSsJCWQyaV9TWE5FVDsKLSsJCVNYTkVUX25ldzsKLSsJCVNYTkVUX2ZyZWU7Ci0rCQlpMmRfU1hORVRJRDsKLSsJCWQyaV9TWE5FVElEOwotKwkJU1hORVRJRF9uZXc7Ci0rCQlTWE5FVElEX2ZyZWU7Ci0rCQlEU0FfU0lHX25ldzsKLSsJCURTQV9TSUdfZnJlZTsKLSsJCURTQV9kb19zaWduOwotKwkJRFNBX2RvX3ZlcmlmeTsKLSsJCWQyaV9EU0FfU0lHOwotKwkJaTJkX0RTQV9TSUc7Ci0rCQlpMmRfQVNOMV9WSVNJQkxFU1RSSU5HOwotKwkJZDJpX0FTTjFfVklTSUJMRVNUUklORzsKLSsJCWkyZF9BU04xX1VURjhTVFJJTkc7Ci0rCQlkMmlfQVNOMV9VVEY4U1RSSU5HOwotKwkJaTJkX0RJUkVDVE9SWVNUUklORzsKLSsJCWQyaV9ESVJFQ1RPUllTVFJJTkc7Ci0rCQlpMmRfRElTUExBWVRFWFQ7Ci0rCQlkMmlfRElTUExBWVRFWFQ7Ci0rCQlkMmlfQVNOMV9TRVRfT0ZfWDUwOTsKLSsJCWkyZF9BU04xX1NFVF9PRl9YNTA5OwotKwkJaTJkX1BCS0RGMlBBUkFNOwotKwkJUEJLREYyUEFSQU1fbmV3OwotKwkJZDJpX1BCS0RGMlBBUkFNOwotKwkJUEJLREYyUEFSQU1fZnJlZTsKLSsJCWkyZF9QQkUyUEFSQU07Ci0rCQlQQkUyUEFSQU1fbmV3OwotKwkJZDJpX1BCRTJQQVJBTTsKLSsJCVBCRTJQQVJBTV9mcmVlOwotKwkJZDJpX0FTTjFfU0VUX09GX0dFTkVSQUxfTkFNRTsKLSsJCWkyZF9BU04xX1NFVF9PRl9HRU5FUkFMX05BTUU7Ci0rCQlkMmlfQVNOMV9TRVRfT0ZfU1hORVRJRDsKLSsJCWkyZF9BU04xX1NFVF9PRl9TWE5FVElEOwotKwkJZDJpX0FTTjFfU0VUX09GX1BPTElDWVFVQUxJTkZPOwotKwkJaTJkX0FTTjFfU0VUX09GX1BPTElDWVFVQUxJTkZPOwotKwkJZDJpX0FTTjFfU0VUX09GX1BPTElDWUlORk87Ci0rCQlpMmRfQVNOMV9TRVRfT0ZfUE9MSUNZSU5GTzsKLSsJCVNYTkVUX2FkZF9pZF9hc2M7Ci0rCQlTWE5FVF9hZGRfaWRfdWxvbmc7Ci0rCQlTWE5FVF9hZGRfaWRfSU5URUdFUjsKLSsJCVNYTkVUX2dldF9pZF9hc2M7Ci0rCQlTWE5FVF9nZXRfaWRfdWxvbmc7Ci0rCQlTWE5FVF9nZXRfaWRfSU5URUdFUjsKLSsJCVg1MDlWM19zZXRfY29uZl9saGFzaDsKLSsJCWkyZF9DRVJUSUZJQ0FURVBPTElDSUVTOwotKwkJQ0VSVElGSUNBVEVQT0xJQ0lFU19uZXc7Ci0rCQlDRVJUSUZJQ0FURVBPTElDSUVTX2ZyZWU7Ci0rCQlkMmlfQ0VSVElGSUNBVEVQT0xJQ0lFUzsKLSsJCWkyZF9QT0xJQ1lJTkZPOwotKwkJUE9MSUNZSU5GT19uZXc7Ci0rCQlkMmlfUE9MSUNZSU5GTzsKLSsJCVBPTElDWUlORk9fZnJlZTsKLSsJCWkyZF9QT0xJQ1lRVUFMSU5GTzsKLSsJCVBPTElDWVFVQUxJTkZPX25ldzsKLSsJCWQyaV9QT0xJQ1lRVUFMSU5GTzsKLSsJCVBPTElDWVFVQUxJTkZPX2ZyZWU7Ci0rCQlpMmRfVVNFUk5PVElDRTsKLSsJCVVTRVJOT1RJQ0VfbmV3OwotKwkJZDJpX1VTRVJOT1RJQ0U7Ci0rCQlVU0VSTk9USUNFX2ZyZWU7Ci0rCQlpMmRfTk9USUNFUkVGOwotKwkJTk9USUNFUkVGX25ldzsKLSsJCWQyaV9OT1RJQ0VSRUY7Ci0rCQlOT1RJQ0VSRUZfZnJlZTsKLSsJCVg1MDlWM19nZXRfc3RyaW5nOwotKwkJWDUwOVYzX2dldF9zZWN0aW9uOwotKwkJWDUwOVYzX3N0cmluZ19mcmVlOwotKwkJWDUwOVYzX3NlY3Rpb25fZnJlZTsKLSsJCVg1MDlWM19zZXRfY3R4OwotKwkJczJpX0FTTjFfSU5URUdFUjsKLSsJCUNSWVBUT19zZXRfbG9ja2VkX21lbV9mdW5jdGlvbnM7Ci0rCQlDUllQVE9fZ2V0X2xvY2tlZF9tZW1fZnVuY3Rpb25zOwotKwkJQ1JZUFRPX21hbGxvY19sb2NrZWQ7Ci0rCQlDUllQVE9fZnJlZV9sb2NrZWQ7Ci0rCQlCTl9tb2RfZXhwMl9tb250OwotKwkJRVJSX2dldF9lcnJvcl9saW5lX2RhdGE7Ci0rCQlFUlJfcGVla19lcnJvcl9saW5lX2RhdGE7Ci0rCQlQS0NTMTJfUEJFX2tleWl2Z2VuOwotKwkJWDUwOV9BTEdPUl9kdXA7Ci0rCQlkMmlfQVNOMV9TRVRfT0ZfRElTVF9QT0lOVDsKLSsJCWkyZF9BU04xX1NFVF9PRl9ESVNUX1BPSU5UOwotKwkJaTJkX0NSTF9ESVNUX1BPSU5UUzsKLSsJCUNSTF9ESVNUX1BPSU5UU19uZXc7Ci0rCQlDUkxfRElTVF9QT0lOVFNfZnJlZTsKLSsJCWQyaV9DUkxfRElTVF9QT0lOVFM7Ci0rCQlpMmRfRElTVF9QT0lOVDsKLSsJCURJU1RfUE9JTlRfbmV3OwotKwkJZDJpX0RJU1RfUE9JTlQ7Ci0rCQlESVNUX1BPSU5UX2ZyZWU7Ci0rCQlpMmRfRElTVF9QT0lOVF9OQU1FOwotKwkJRElTVF9QT0lOVF9OQU1FX25ldzsKLSsJCURJU1RfUE9JTlRfTkFNRV9mcmVlOwotKwkJZDJpX0RJU1RfUE9JTlRfTkFNRTsKLSsJCVg1MDlWM19hZGRfdmFsdWVfdWNoYXI7Ci0rCQlkMmlfQVNOMV9TRVRfT0ZfWDUwOV9BVFRSSUJVVEU7Ci0rCQlpMmRfQVNOMV9TRVRfT0ZfQVNOMV9UWVBFOwotKwkJZDJpX0FTTjFfU0VUX09GX1g1MDlfRVhURU5TSU9OOwotKwkJZDJpX0FTTjFfU0VUX09GX1g1MDlfTkFNRV9FTlRSWTsKLSsJCWQyaV9BU04xX1NFVF9PRl9BU04xX1RZUEU7Ci0rCQlpMmRfQVNOMV9TRVRfT0ZfWDUwOV9BVFRSSUJVVEU7Ci0rCQlpMmRfQVNOMV9TRVRfT0ZfWDUwOV9FWFRFTlNJT047Ci0rCQlpMmRfQVNOMV9TRVRfT0ZfWDUwOV9OQU1FX0VOVFJZOwotKwkJWDUwOVYzX0VYVF9pMmQ7Ci0rCQlYNTA5VjNfRVhUX3ZhbF9wcm47Ci0rCQlYNTA5VjNfRVhUX2FkZF9saXN0OwotKwkJRVZQX0NJUEhFUl90eXBlOwotKwkJRVZQX1BCRV9DaXBoZXJJbml0OwotKwkJWDUwOVYzX2FkZF92YWx1ZV9ib29sX25mOwotKwkJZDJpX0FTTjFfVUlOVEVHRVI7Ci0rCQlza192YWx1ZTsKLSsJCXNrX251bTsKLSsJCXNrX3NldDsKLSsJCWkyZF9BU04xX1NFVF9PRl9YNTA5X1JFVk9LRUQ7Ci0rCQlza19zb3J0OwotKwkJZDJpX0FTTjFfU0VUX09GX1g1MDlfUkVWT0tFRDsKLSsJCWkyZF9BU04xX1NFVF9PRl9YNTA5X0FMR09SOwotKwkJaTJkX0FTTjFfU0VUX09GX1g1MDlfQ1JMOwotKwkJZDJpX0FTTjFfU0VUX09GX1g1MDlfQUxHT1I7Ci0rCQlkMmlfQVNOMV9TRVRfT0ZfWDUwOV9DUkw7Ci0rCQlpMmRfQVNOMV9TRVRfT0ZfUEtDUzdfU0lHTkVSX0lORk87Ci0rCQlpMmRfQVNOMV9TRVRfT0ZfUEtDUzdfUkVDSVBfSU5GTzsKLSsJCWQyaV9BU04xX1NFVF9PRl9QS0NTN19TSUdORVJfSU5GTzsKLSsJCWQyaV9BU04xX1NFVF9PRl9QS0NTN19SRUNJUF9JTkZPOwotKwkJUEtDUzVfUEJFX2FkZDsKLSsJCVBFTV93cml0ZV9iaW9fUEtDUzg7Ci0rCQlpMmRfUEtDUzhfZnA7Ci0rCQlQRU1fcmVhZF9iaW9fUEtDUzhfUFJJVl9LRVlfSU5GTzsKLSsJCVBFTV9yZWFkX2Jpb19QOF9QUklWX0tFWV9JTkZPOwotKwkJZDJpX1BLQ1M4X2JpbzsKLSsJCWQyaV9QS0NTOF9QUklWX0tFWV9JTkZPX2ZwOwotKwkJUEVNX3dyaXRlX2Jpb19QS0NTOF9QUklWX0tFWV9JTkZPOwotKwkJUEVNX3dyaXRlX2Jpb19QOF9QUklWX0tFWV9JTkZPOwotKwkJUEVNX3JlYWRfUEtDUzg7Ci0rCQlkMmlfUEtDUzhfUFJJVl9LRVlfSU5GT19iaW87Ci0rCQlkMmlfUEtDUzhfZnA7Ci0rCQlQRU1fd3JpdGVfUEtDUzg7Ci0rCQlQRU1fcmVhZF9QS0NTOF9QUklWX0tFWV9JTkZPOwotKwkJUEVNX3JlYWRfUDhfUFJJVl9LRVlfSU5GTzsKLSsJCVBFTV9yZWFkX2Jpb19QS0NTODsKLSsJCVBFTV93cml0ZV9QS0NTOF9QUklWX0tFWV9JTkZPOwotKwkJUEVNX3dyaXRlX1A4X1BSSVZfS0VZX0lORk87Ci0rCQlQS0NTNV9QQkVfa2V5aXZnZW47Ci0rCQlpMmRfUEtDUzhfYmlvOwotKwkJaTJkX1BLQ1M4X1BSSVZfS0VZX0lORk9fZnA7Ci0rCQlpMmRfUEtDUzhfUFJJVl9LRVlfSU5GT19iaW87Ci0rCQlCSU9fc19iaW87Ci0rCQlQS0NTNV9wYmUyX3NldDsKLSsJCVBLQ1M1X1BCS0RGMl9ITUFDX1NIQTE7Ci0rCQlQS0NTNV92Ml9QQkVfa2V5aXZnZW47Ci0rCQlQRU1fd3JpdGVfYmlvX1BLQ1M4UHJpdmF0ZUtleTsKLSsJCVBFTV93cml0ZV9QS0NTOFByaXZhdGVLZXk7Ci0rCQlCSU9fY3RybF9nZXRfcmVhZF9yZXF1ZXN0OwotKwkJQklPX2N0cmxfcGVuZGluZzsKLSsJCUJJT19jdHJsX3dwZW5kaW5nOwotKwkJQklPX25ld19iaW9fcGFpcjsKLSsJCUJJT19jdHJsX2dldF93cml0ZV9ndWFyYW50ZWU7Ci0rCQlDUllQVE9fbnVtX2xvY2tzOwotKwkJQ09ORl9sb2FkX2JpbzsKLSsJCUNPTkZfbG9hZF9mcDsKLSsJCWkyZF9BU04xX1NFVF9PRl9BU04xX09CSkVDVDsKLSsJCWQyaV9BU04xX1NFVF9PRl9BU04xX09CSkVDVDsKLSsJCVBLQ1M3X3NpZ25hdHVyZVZlcmlmeTsKLSsJCVJTQV9zZXRfbWV0aG9kOwotKwkJUlNBX2dldF9tZXRob2Q7Ci0rCQlSU0FfZ2V0X2RlZmF1bHRfbWV0aG9kOwotKwkJUlNBX2NoZWNrX2tleTsKLSsJCU9CSl9vYmoydHh0OwotKwkJRFNBX2R1cF9ESDsKLSsJCVg1MDlfUkVRX2dldF9leHRlbnNpb25zOwotKwkJWDUwOV9SRVFfc2V0X2V4dGVuc2lvbl9uaWRzOwotKwkJQklPX253cml0ZTsKLSsJCVg1MDlfUkVRX2V4dGVuc2lvbl9uaWQ7Ci0rCQlCSU9fbnJlYWQ7Ci0rCQlYNTA5X1JFUV9nZXRfZXh0ZW5zaW9uX25pZHM7Ci0rCQlCSU9fbndyaXRlMDsKLSsJCVg1MDlfUkVRX2FkZF9leHRlbnNpb25zX25pZDsKLSsJCUJJT19ucmVhZDA7Ci0rCQlYNTA5X1JFUV9hZGRfZXh0ZW5zaW9uczsKLSsJCUJJT19uZXdfbWVtX2J1ZjsKLSsJCURIX3NldF9leF9kYXRhOwotKwkJREhfc2V0X21ldGhvZDsKLSsJCURTQV9PcGVuU1NMOwotKwkJREhfZ2V0X2V4X2RhdGE7Ci0rCQlESF9nZXRfZXhfbmV3X2luZGV4OwotKwkJRFNBX25ld19tZXRob2Q7Ci0rCQlESF9uZXdfbWV0aG9kOwotKwkJREhfT3BlblNTTDsKLSsJCURTQV9nZXRfZXhfbmV3X2luZGV4OwotKwkJREhfZ2V0X2RlZmF1bHRfbWV0aG9kOwotKwkJRFNBX3NldF9leF9kYXRhOwotKwkJREhfc2V0X2RlZmF1bHRfbWV0aG9kOwotKwkJRFNBX2dldF9leF9kYXRhOwotKwkJWDUwOVYzX0VYVF9SRVFfYWRkX2NvbmY7Ci0rCQlORVRTQ0FQRV9TUEtJX3ByaW50OwotKwkJTkVUU0NBUEVfU1BLSV9zZXRfcHVia2V5OwotKwkJTkVUU0NBUEVfU1BLSV9iNjRfZW5jb2RlOwotKwkJTkVUU0NBUEVfU1BLSV9nZXRfcHVia2V5OwotKwkJTkVUU0NBUEVfU1BLSV9iNjRfZGVjb2RlOwotKwkJVVRGOF9wdXRjOwotKwkJVVRGOF9nZXRjOwotKwkJUlNBX251bGxfbWV0aG9kOwotKwkJQVNOMV90YWcyc3RyOwotKwkJQklPX2N0cmxfcmVzZXRfcmVhZF9yZXF1ZXN0OwotKwkJRElTUExBWVRFWFRfbmV3OwotKwkJQVNOMV9HRU5FUkFMSVpFRFRJTUVfZnJlZTsKLSsJCVg1MDlfUkVWT0tFRF9nZXRfZXh0X2QyaTsKLSsJCVg1MDlfc2V0X2V4X2RhdGE7Ci0rCQlYNTA5X3JlamVjdF9zZXRfYml0X2FzYzsKLSsJCVg1MDlfTkFNRV9hZGRfZW50cnlfYnlfdHh0OwotKwkJWDUwOV9OQU1FX2FkZF9lbnRyeV9ieV9OSUQ7Ci0rCQlYNTA5X1BVUlBPU0VfZ2V0MDsKLSsJCVBFTV9yZWFkX1g1MDlfQVVYOwotKwkJZDJpX0FVVEhPUklUWV9JTkZPX0FDQ0VTUzsKLSsJCVBFTV93cml0ZV9QVUJLRVk7Ci0rCQlBQ0NFU1NfREVTQ1JJUFRJT05fbmV3OwotKwkJWDUwOV9DRVJUX0FVWF9mcmVlOwotKwkJZDJpX0FDQ0VTU19ERVNDUklQVElPTjsKLSsJCVg1MDlfdHJ1c3RfY2xlYXI7Ci0rCQlYNTA5X1RSVVNUX2FkZDsKLSsJCUFTTjFfVklTSUJMRVNUUklOR19uZXc7Ci0rCQlYNTA5X2FsaWFzX3NldDE7Ci0rCQlBU04xX1BSSU5UQUJMRVNUUklOR19mcmVlOwotKwkJRVZQX1BLRVlfZ2V0MV9EU0E7Ci0rCQlBU04xX0JNUFNUUklOR19uZXc7Ci0rCQlBU04xX21ic3RyaW5nX2NvcHk7Ci0rCQlBU04xX1VURjhTVFJJTkdfbmV3OwotKwkJRFNBX2dldF9kZWZhdWx0X21ldGhvZDsKLSsJCWkyZF9BU04xX1NFVF9PRl9BQ0NFU1NfREVTQ1JJUFRJT047Ci0rCQlBU04xX1Q2MVNUUklOR19mcmVlOwotKwkJRFNBX3NldF9tZXRob2Q7Ci0rCQlYNTA5X2dldF9leF9kYXRhOwotKwkJQVNOMV9TVFJJTkdfdHlwZTsKLSsJCVg1MDlfUFVSUE9TRV9nZXRfYnlfc25hbWU7Ci0rCQlBU04xX1RJTUVfZnJlZTsKLSsJCUFTTjFfT0NURVRfU1RSSU5HX2NtcDsKLSsJCUFTTjFfQklUX1NUUklOR19uZXc7Ci0rCQlYNTA5X2dldF9leHRfZDJpOwotKwkJUEVNX3JlYWRfYmlvX1g1MDlfQVVYOwotKwkJQVNOMV9TVFJJTkdfc2V0X2RlZmF1bHRfbWFza19hc2M7Ci0rCQlBU04xX1NUUklOR19zZXRfZGVmX21hc2tfYXNjOwotKwkJUEVNX3dyaXRlX2Jpb19SU0FfUFVCS0VZOwotKwkJQVNOMV9JTlRFR0VSX2NtcDsKLSsJCWQyaV9SU0FfUFVCS0VZX2ZwOwotKwkJWDUwOV90cnVzdF9zZXRfYml0X2FzYzsKLSsJCVBFTV93cml0ZV9iaW9fRFNBX1BVQktFWTsKLSsJCVg1MDlfU1RPUkVfQ1RYX2ZyZWU7Ci0rCQlFVlBfUEtFWV9zZXQxX0RTQTsKLSsJCWkyZF9EU0FfUFVCS0VZX2ZwOwotKwkJWDUwOV9sb2FkX2NlcnRfY3JsX2ZpbGU7Ci0rCQlBU04xX1RJTUVfbmV3OwotKwkJaTJkX1JTQV9QVUJLRVk7Ci0rCQlYNTA5X1NUT1JFX0NUWF9wdXJwb3NlX2luaGVyaXQ7Ci0rCQlQRU1fcmVhZF9SU0FfUFVCS0VZOwotKwkJZDJpX1g1MDlfQVVYOwotKwkJaTJkX0RTQV9QVUJLRVk7Ci0rCQlYNTA5X0NFUlRfQVVYX3ByaW50OwotKwkJUEVNX3JlYWRfRFNBX1BVQktFWTsKLSsJCWkyZF9SU0FfUFVCS0VZX2JpbzsKLSsJCUFTTjFfQklUX1NUUklOR19udW1fYXNjOwotKwkJaTJkX1BVQktFWTsKLSsJCUFTTjFfVVRDVElNRV9mcmVlOwotKwkJRFNBX3NldF9kZWZhdWx0X21ldGhvZDsKLSsJCVg1MDlfUFVSUE9TRV9nZXRfYnlfaWQ7Ci0rCQlBQ0NFU1NfREVTQ1JJUFRJT05fZnJlZTsKLSsJCVBFTV9yZWFkX2Jpb19QVUJLRVk7Ci0rCQlBU04xX1NUUklOR19zZXRfYnlfTklEOwotKwkJWDUwOV9QVVJQT1NFX2dldF9pZDsKLSsJCURJU1BMQVlURVhUX2ZyZWU7Ci0rCQlPVEhFUk5BTUVfbmV3OwotKwkJWDUwOV9DRVJUX0FVWF9uZXc7Ci0rCQlYNTA5X1RSVVNUX2NsZWFudXA7Ci0rCQlYNTA5X05BTUVfYWRkX2VudHJ5X2J5X09CSjsKLSsJCVg1MDlfQ1JMX2dldF9leHRfZDJpOwotKwkJWDUwOV9QVVJQT1NFX2dldDBfbmFtZTsKLSsJCVBFTV9yZWFkX1BVQktFWTsKLSsJCWkyZF9EU0FfUFVCS0VZX2JpbzsKLSsJCWkyZF9PVEhFUk5BTUU7Ci0rCQlBU04xX09DVEVUX1NUUklOR19mcmVlOwotKwkJQVNOMV9CSVRfU1RSSU5HX3NldF9hc2M7Ci0rCQlYNTA5X2dldF9leF9uZXdfaW5kZXg7Ci0rCQlBU04xX1NUUklOR19UQUJMRV9jbGVhbnVwOwotKwkJWDUwOV9UUlVTVF9nZXRfYnlfaWQ7Ci0rCQlYNTA5X1BVUlBPU0VfZ2V0X3RydXN0OwotKwkJQVNOMV9TVFJJTkdfbGVuZ3RoOwotKwkJZDJpX0FTTjFfU0VUX09GX0FDQ0VTU19ERVNDUklQVElPTjsKLSsJCUFTTjFfUFJJTlRBQkxFU1RSSU5HX25ldzsKLSsJCVg1MDlWM19nZXRfZDJpOwotKwkJQVNOMV9FTlVNRVJBVEVEX2ZyZWU7Ci0rCQlpMmRfWDUwOV9DRVJUX0FVWDsKLSsJCVg1MDlfU1RPUkVfQ1RYX3NldF90cnVzdDsKLSsJCUFTTjFfU1RSSU5HX3NldF9kZWZhdWx0X21hc2s7Ci0rCQlYNTA5X1NUT1JFX0NUWF9uZXc7Ci0rCQlFVlBfUEtFWV9nZXQxX1JTQTsKLSsJCURJUkVDVE9SWVNUUklOR19mcmVlOwotKwkJUEVNX3dyaXRlX1g1MDlfQVVYOwotKwkJQVNOMV9PQ1RFVF9TVFJJTkdfc2V0OwotKwkJZDJpX0RTQV9QVUJLRVlfZnA7Ci0rCQlkMmlfUlNBX1BVQktFWTsKLSsJCVg1MDlfVFJVU1RfZ2V0MF9uYW1lOwotKwkJWDUwOV9UUlVTVF9nZXQwOwotKwkJQVVUSE9SSVRZX0lORk9fQUNDRVNTX2ZyZWU7Ci0rCQlBU04xX0lBNVNUUklOR19uZXc7Ci0rCQlkMmlfRFNBX1BVQktFWTsKLSsJCVg1MDlfY2hlY2tfcHVycG9zZTsKLSsJCUFTTjFfRU5VTUVSQVRFRF9uZXc7Ci0rCQlkMmlfUlNBX1BVQktFWV9iaW87Ci0rCQlkMmlfUFVCS0VZOwotKwkJWDUwOV9UUlVTVF9nZXRfdHJ1c3Q7Ci0rCQlYNTA5X1RSVVNUX2dldF9mbGFnczsKLSsJCUFTTjFfQk1QU1RSSU5HX2ZyZWU7Ci0rCQlBU04xX1Q2MVNUUklOR19uZXc7Ci0rCQlBU04xX1VUQ1RJTUVfbmV3OwotKwkJaTJkX0FVVEhPUklUWV9JTkZPX0FDQ0VTUzsKLSsJCUVWUF9QS0VZX3NldDFfUlNBOwotKwkJWDUwOV9TVE9SRV9DVFhfc2V0X3B1cnBvc2U7Ci0rCQlBU04xX0lBNVNUUklOR19mcmVlOwotKwkJUEVNX3dyaXRlX2Jpb19YNTA5X0FVWDsKLSsJCVg1MDlfUFVSUE9TRV9nZXRfY291bnQ7Ci0rCQlDUllQVE9fYWRkX2luZm87Ci0rCQlYNTA5X05BTUVfRU5UUllfY3JlYXRlX2J5X3R4dDsKLSsJCUFTTjFfU1RSSU5HX2dldF9kZWZhdWx0X21hc2s7Ci0rCQlYNTA5X2FsaWFzX2dldDA7Ci0rCQlBU04xX1NUUklOR19kYXRhOwotKwkJaTJkX0FDQ0VTU19ERVNDUklQVElPTjsKLSsJCVg1MDlfdHJ1c3Rfc2V0X2JpdDsKLSsJCUFTTjFfQklUX1NUUklOR19mcmVlOwotKwkJUEVNX3JlYWRfYmlvX1JTQV9QVUJLRVk7Ci0rCQlYNTA5X2FkZDFfcmVqZWN0X29iamVjdDsKLSsJCVg1MDlfY2hlY2tfdHJ1c3Q7Ci0rCQlQRU1fcmVhZF9iaW9fRFNBX1BVQktFWTsKLSsJCVg1MDlfUFVSUE9TRV9hZGQ7Ci0rCQlBU04xX1NUUklOR19UQUJMRV9nZXQ7Ci0rCQlBU04xX1VURjhTVFJJTkdfZnJlZTsKLSsJCWQyaV9EU0FfUFVCS0VZX2JpbzsKLSsJCVBFTV93cml0ZV9SU0FfUFVCS0VZOwotKwkJZDJpX09USEVSTkFNRTsKLSsJCVg1MDlfcmVqZWN0X3NldF9iaXQ7Ci0rCQlQRU1fd3JpdGVfRFNBX1BVQktFWTsKLSsJCVg1MDlfUFVSUE9TRV9nZXQwX3NuYW1lOwotKwkJRVZQX1BLRVlfc2V0MV9ESDsKLSsJCUFTTjFfT0NURVRfU1RSSU5HX2R1cDsKLSsJCUFTTjFfQklUX1NUUklOR19zZXQ7Ci0rCQlYNTA5X1RSVVNUX2dldF9jb3VudDsKLSsJCUFTTjFfSU5URUdFUl9mcmVlOwotKwkJT1RIRVJOQU1FX2ZyZWU7Ci0rCQlpMmRfUlNBX1BVQktFWV9mcDsKLSsJCUFTTjFfSU5URUdFUl9kdXA7Ci0rCQlkMmlfWDUwOV9DRVJUX0FVWDsKLSsJCVBFTV93cml0ZV9iaW9fUFVCS0VZOwotKwkJQVNOMV9WSVNJQkxFU1RSSU5HX2ZyZWU7Ci0rCQlYNTA5X1BVUlBPU0VfY2xlYW51cDsKLSsJCUFTTjFfbWJzdHJpbmdfbmNvcHk7Ci0rCQlBU04xX0dFTkVSQUxJWkVEVElNRV9uZXc7Ci0rCQlFVlBfUEtFWV9nZXQxX0RIOwotKwkJQVNOMV9PQ1RFVF9TVFJJTkdfbmV3OwotKwkJQVNOMV9JTlRFR0VSX25ldzsKLSsJCWkyZF9YNTA5X0FVWDsKLSsJCUFTTjFfQklUX1NUUklOR19uYW1lX3ByaW50OwotKwkJWDUwOV9jbXA7Ci0rCQlBU04xX1NUUklOR19sZW5ndGhfc2V0OwotKwkJRElSRUNUT1JZU1RSSU5HX25ldzsKLSsJCVg1MDlfYWRkMV90cnVzdF9vYmplY3Q7Ci0rCQlQS0NTMTJfbmV3cGFzczsKLSsJCVNNSU1FX3dyaXRlX1BLQ1M3OwotKwkJU01JTUVfcmVhZF9QS0NTNzsKLSsJCURFU19zZXRfa2V5X2NoZWNrZWQ7Ci0rCQlQS0NTN192ZXJpZnk7Ci0rCQlQS0NTN19lbmNyeXB0OwotKwkJREVTX3NldF9rZXlfdW5jaGVja2VkOwotKwkJU01JTUVfY3JsZl9jb3B5OwotKwkJaTJkX0FTTjFfUFJJTlRBQkxFU1RSSU5HOwotKwkJUEtDUzdfZ2V0MF9zaWduZXJzOwotKwkJUEtDUzdfZGVjcnlwdDsKLSsJCVNNSU1FX3RleHQ7Ci0rCQlQS0NTN19zaW1wbGVfc21pbWVjYXA7Ci0rCQlQS0NTN19nZXRfc21pbWVjYXA7Ci0rCQlQS0NTN19zaWduOwotKwkJUEtDUzdfYWRkX2F0dHJpYl9zbWltZWNhcDsKLSsJCUNSWVBUT19kYmdfc2V0X29wdGlvbnM7Ci0rCQlDUllQVE9fcmVtb3ZlX2FsbF9pbmZvOwotKwkJQ1JZUFRPX2dldF9tZW1fZGVidWdfZnVuY3Rpb25zOwotKwkJQ1JZUFRPX2lzX21lbV9jaGVja19vbjsKLSsJCUNSWVBUT19zZXRfbWVtX2RlYnVnX2Z1bmN0aW9uczsKLSsJCUNSWVBUT19wb3BfaW5mbzsKLSsJCUNSWVBUT19wdXNoX2luZm9fOwotKwkJQ1JZUFRPX3NldF9tZW1fZGVidWdfb3B0aW9uczsKLSsJCVBFTV93cml0ZV9QS0NTOFByaXZhdGVLZXlfbmlkOwotKwkJUEVNX3dyaXRlX2Jpb19QS0NTOFByaXZhdGVLZXlfbmlkOwotKwkJUEVNX3dyaXRlX2Jpb19QS0NTOFByaXZLZXlfbmlkOwotKwkJZDJpX1BLQ1M4UHJpdmF0ZUtleV9iaW87Ci0rCQlBU04xX05VTExfZnJlZTsKLSsJCWQyaV9BU04xX05VTEw7Ci0rCQlBU04xX05VTExfbmV3OwotKwkJaTJkX1BLQ1M4UHJpdmF0ZUtleV9iaW87Ci0rCQlpMmRfUEtDUzhQcml2YXRlS2V5X2ZwOwotKwkJaTJkX0FTTjFfTlVMTDsKLSsJCWkyZF9QS0NTOFByaXZhdGVLZXlfbmlkX2ZwOwotKwkJZDJpX1BLQ1M4UHJpdmF0ZUtleV9mcDsKLSsJCWkyZF9QS0NTOFByaXZhdGVLZXlfbmlkX2JpbzsKLSsJCWkyZF9QS0NTOFByaXZhdGVLZXlJbmZvX2ZwOwotKwkJaTJkX1BLQ1M4UHJpdmF0ZUtleUluZm9fYmlvOwotKwkJUEVNX2NiOwotKwkJaTJkX1ByaXZhdGVLZXlfZnA7Ci0rCQlkMmlfUHJpdmF0ZUtleV9iaW87Ci0rCQlkMmlfUHJpdmF0ZUtleV9mcDsKLSsJCWkyZF9Qcml2YXRlS2V5X2JpbzsKLSsJCVg1MDlfcmVqZWN0X2NsZWFyOwotKwkJWDUwOV9UUlVTVF9zZXRfZGVmYXVsdDsKLSsJCWQyaV9BdXRvUHJpdmF0ZUtleTsKLSsJCVg1MDlfQVRUUklCVVRFX2dldDBfdHlwZTsKLSsJCVg1MDlfQVRUUklCVVRFX3NldDFfZGF0YTsKLSsJCVg1MDlhdF9nZXRfYXR0cjsKLSsJCVg1MDlhdF9nZXRfYXR0cl9jb3VudDsKLSsJCVg1MDlfQVRUUklCVVRFX2NyZWF0ZV9ieV9OSUQ7Ci0rCQlYNTA5X0FUVFJJQlVURV9zZXQxX29iamVjdDsKLSsJCVg1MDlfQVRUUklCVVRFX2NvdW50OwotKwkJWDUwOV9BVFRSSUJVVEVfY3JlYXRlX2J5X09CSjsKLSsJCVg1MDlfQVRUUklCVVRFX2dldDBfb2JqZWN0OwotKwkJWDUwOWF0X2dldF9hdHRyX2J5X05JRDsKLSsJCVg1MDlhdF9hZGQxX2F0dHI7Ci0rCQlYNTA5X0FUVFJJQlVURV9nZXQwX2RhdGE7Ci0rCQlYNTA5YXRfZGVsZXRlX2F0dHI7Ci0rCQlYNTA5YXRfZ2V0X2F0dHJfYnlfT0JKOwotKwkJUkFORF9hZGQ7Ci0rCQlCSU9fbnVtYmVyX3dyaXR0ZW47Ci0rCQlCSU9fbnVtYmVyX3JlYWQ7Ci0rCQlYNTA5X1NUT1JFX0NUWF9nZXQxX2NoYWluOwotKwkJRVJSX2xvYWRfUkFORF9zdHJpbmdzOwotKwkJUkFORF9wc2V1ZG9fYnl0ZXM7Ci0rCQlYNTA5X1JFUV9nZXRfYXR0cl9ieV9OSUQ7Ci0rCQlYNTA5X1JFUV9nZXRfYXR0cjsKLSsJCVg1MDlfUkVRX2FkZDFfYXR0cl9ieV9OSUQ7Ci0rCQlYNTA5X1JFUV9nZXRfYXR0cl9ieV9PQko7Ci0rCQlYNTA5YXRfYWRkMV9hdHRyX2J5X05JRDsKLSsJCVg1MDlfUkVRX2FkZDFfYXR0cl9ieV9PQko7Ci0rCQlYNTA5X1JFUV9nZXRfYXR0cl9jb3VudDsKLSsJCVg1MDlfUkVRX2FkZDFfYXR0cjsKLSsJCVg1MDlfUkVRX2RlbGV0ZV9hdHRyOwotKwkJWDUwOWF0X2FkZDFfYXR0cl9ieV9PQko7Ci0rCQlYNTA5X1JFUV9hZGQxX2F0dHJfYnlfdHh0OwotKwkJWDUwOV9BVFRSSUJVVEVfY3JlYXRlX2J5X3R4dDsKLSsJCVg1MDlhdF9hZGQxX2F0dHJfYnlfdHh0OwotKwkJQk5fcHNldWRvX3JhbmQ7Ci0rCQlCTl9pc19wcmltZV9mYXN0dGVzdDsKLSsJCUJOX0NUWF9lbmQ7Ci0rCQlCTl9DVFhfc3RhcnQ7Ci0rCQlCTl9DVFhfZ2V0OwotKwkJRVZQX1BLRVkyUEtDUzhfYnJva2VuOwotKwkJQVNOMV9TVFJJTkdfVEFCTEVfYWRkOwotKwkJQ1JZUFRPX2RiZ19nZXRfb3B0aW9uczsKLSsJCUFVVEhPUklUWV9JTkZPX0FDQ0VTU19uZXc7Ci0rCQlDUllQVE9fZ2V0X21lbV9kZWJ1Z19vcHRpb25zOwotKwkJREVTX2NyeXB0OwotKwkJUEVNX3dyaXRlX2Jpb19YNTA5X1JFUV9ORVc7Ci0rCQlQRU1fd3JpdGVfWDUwOV9SRVFfTkVXOwotKwkJQklPX2NhbGxiYWNrX2N0cmw7Ci0rCQlSQU5EX2VnZDsKLSsJCVJBTkRfc3RhdHVzOwotKwkJYm5fZHVtcDE7Ci0rCQlERVNfY2hlY2tfa2V5X3Bhcml0eTsKLSsJCWxoX251bV9pdGVtczsKLSsJCVJBTkRfZXZlbnQ7Ci0rCQlEU09fbmV3OwotKwkJRFNPX25ld19tZXRob2Q7Ci0rCQlEU09fZnJlZTsKLSsJCURTT19mbGFnczsKLSsJCURTT191cDsKLSsJCURTT19zZXRfZGVmYXVsdF9tZXRob2Q7Ci0rCQlEU09fZ2V0X2RlZmF1bHRfbWV0aG9kOwotKwkJRFNPX2dldF9tZXRob2Q7Ci0rCQlEU09fc2V0X21ldGhvZDsKLSsJCURTT19sb2FkOwotKwkJRFNPX2JpbmRfdmFyOwotKwkJRFNPX01FVEhPRF9udWxsOwotKwkJRFNPX01FVEhPRF9vcGVuc3NsOwotKwkJRFNPX01FVEhPRF9kbGZjbjsKLSsJCURTT19NRVRIT0Rfd2luMzI7Ci0rCQlFUlJfbG9hZF9EU09fc3RyaW5nczsKLSsJCURTT19NRVRIT0RfZGw7Ci0rCQlOQ09ORl9sb2FkOwotKwkJTkNPTkZfbG9hZF9mcDsKLSsJCU5DT05GX25ldzsKLSsJCU5DT05GX2dldF9zdHJpbmc7Ci0rCQlOQ09ORl9mcmVlOwotKwkJTkNPTkZfZ2V0X251bWJlcjsKLSsJCUNPTkZfZHVtcF9mcDsKLSsJCU5DT05GX2xvYWRfYmlvOwotKwkJTkNPTkZfZHVtcF9mcDsKLSsJCU5DT05GX2dldF9zZWN0aW9uOwotKwkJTkNPTkZfZHVtcF9iaW87Ci0rCQlDT05GX2R1bXBfYmlvOwotKwkJTkNPTkZfZnJlZV9kYXRhOwotKwkJQ09ORl9zZXRfZGVmYXVsdF9tZXRob2Q7Ci0rCQlFUlJfZXJyb3Jfc3RyaW5nX247Ci0rCQlCSU9fc25wcmludGY7Ci0rCQlEU09fY3RybDsKLSsJCWkyZF9BU04xX1NFVF9PRl9BU04xX0lOVEVHRVI7Ci0rCQlpMmRfQVNOMV9TRVRfT0ZfUEtDUzEyX1NBRkVCQUc7Ci0rCQlpMmRfQVNOMV9TRVRfT0ZfUEtDUzc7Ci0rCQlCSU9fdmZyZWU7Ci0rCQlkMmlfQVNOMV9TRVRfT0ZfQVNOMV9JTlRFR0VSOwotKwkJZDJpX0FTTjFfU0VUX09GX1BLQ1MxMl9TQUZFQkFHOwotKwkJQVNOMV9VVENUSU1FX2dldDsKLSsJCVg1MDlfUkVRX2RpZ2VzdDsKLSsJCVg1MDlfQ1JMX2RpZ2VzdDsKLSsJCWQyaV9BU04xX1NFVF9PRl9QS0NTNzsKLSsJCUVWUF9DSVBIRVJfQ1RYX3NldF9rZXlfbGVuZ3RoOwotKwkJRVZQX0NJUEhFUl9DVFhfY3RybDsKLSsJCUJOX21vZF9leHBfbW9udF93b3JkOwotKwkJUkFORF9lZ2RfYnl0ZXM7Ci0rCQlYNTA5X1JFUV9nZXQxX2VtYWlsOwotKwkJWDUwOV9nZXQxX2VtYWlsOwotKwkJWDUwOV9lbWFpbF9mcmVlOwotKwkJaTJkX1JTQV9ORVQ7Ci0rCQlkMmlfUlNBX05FVF8yOwotKwkJZDJpX1JTQV9ORVQ7Ci0rCQlEU09fYmluZF9mdW5jOwotKwkJQ1JZUFRPX2dldF9uZXdfZHlubG9ja2lkOwotKwkJc2tfbmV3X251bGw7Ci0rCQlDUllQVE9fc2V0X2R5bmxvY2tfZGVzdHJveV9jYWxsYmFjazsKLSsJCUNSWVBUT19zZXRfZHlubG9ja19kZXN0cm95X2NiOwotKwkJQ1JZUFRPX2Rlc3Ryb3lfZHlubG9ja2lkOwotKwkJQ1JZUFRPX3NldF9keW5sb2NrX3NpemU7Ci0rCQlDUllQVE9fc2V0X2R5bmxvY2tfY3JlYXRlX2NhbGxiYWNrOwotKwkJQ1JZUFRPX3NldF9keW5sb2NrX2NyZWF0ZV9jYjsKLSsJCUNSWVBUT19zZXRfZHlubG9ja19sb2NrX2NhbGxiYWNrOwotKwkJQ1JZUFRPX3NldF9keW5sb2NrX2xvY2tfY2I7Ci0rCQlDUllQVE9fZ2V0X2R5bmxvY2tfbG9ja19jYWxsYmFjazsKLSsJCUNSWVBUT19nZXRfZHlubG9ja19sb2NrX2NiOwotKwkJQ1JZUFRPX2dldF9keW5sb2NrX2Rlc3Ryb3lfY2FsbGJhY2s7Ci0rCQlDUllQVE9fZ2V0X2R5bmxvY2tfZGVzdHJveV9jYjsKLSsJCUNSWVBUT19nZXRfZHlubG9ja192YWx1ZTsKLSsJCUNSWVBUT19nZXRfZHlubG9ja19jcmVhdGVfY2FsbGJhY2s7Ci0rCQlDUllQVE9fZ2V0X2R5bmxvY2tfY3JlYXRlX2NiOwotKwkJYzJpX0FTTjFfQklUX1NUUklORzsKLSsJCWkyY19BU04xX0JJVF9TVFJJTkc7Ci0rCQlSQU5EX3BvbGw7Ci0rCQljMmlfQVNOMV9JTlRFR0VSOwotKwkJaTJjX0FTTjFfSU5URUdFUjsKLSsJCUJJT19kdW1wX2luZGVudDsKLSsJCUFTTjFfcGFyc2VfZHVtcDsKLSsJCWMyaV9BU04xX09CSkVDVDsKLSsJCVg1MDlfTkFNRV9wcmludF9leF9mcDsKLSsJCUFTTjFfU1RSSU5HX3ByaW50X2V4X2ZwOwotKwkJWDUwOV9OQU1FX3ByaW50X2V4OwotKwkJQVNOMV9TVFJJTkdfcHJpbnRfZXg7Ci0rCQlNRDQ7Ci0rCQlNRDRfVHJhbnNmb3JtOwotKwkJTUQ0X0ZpbmFsOwotKwkJTUQ0X1VwZGF0ZTsKLSsJCU1ENF9Jbml0OwotKwkJRVZQX21kNDsKLSsJCWkyZF9QVUJLRVlfYmlvOwotKwkJaTJkX1BVQktFWV9mcDsKLSsJCWQyaV9QVUJLRVlfYmlvOwotKwkJQVNOMV9TVFJJTkdfdG9fVVRGODsKLSsJCUJJT192cHJpbnRmOwotKwkJQklPX3ZzbnByaW50ZjsKLSsJCWQyaV9QVUJLRVlfZnA7Ci0rCQlYNTA5X2NtcF90aW1lOwotKwkJWDUwOV9TVE9SRV9DVFhfc2V0X3RpbWU7Ci0rCQlYNTA5X1NUT1JFX0NUWF9nZXQxX2lzc3VlcjsKLSsJCVg1MDlfT0JKRUNUX3JldHJpZXZlX21hdGNoOwotKwkJWDUwOV9PQkpFQ1RfaWR4X2J5X3N1YmplY3Q7Ci0rCQlYNTA5X1NUT1JFX0NUWF9zZXRfZmxhZ3M7Ci0rCQlYNTA5X1NUT1JFX0NUWF90cnVzdGVkX3N0YWNrOwotKwkJWDUwOV90aW1lX2FkajsKLSsJCVg1MDlfY2hlY2tfaXNzdWVkOwotKwkJQVNOMV9VVENUSU1FX2NtcF90aW1lX3Q7Ci0rCQlERVNfc2V0X3dlYWtfa2V5X2ZsYWc7Ci0rCQlERVNfY2hlY2tfa2V5OwotKwkJREVTX3J3X21vZGU7Ci0rCQlSU0FfUEtDUzFfUlNBcmVmOwotKwkJWDUwOV9rZXlpZF9zZXQxOwotKwkJQklPX25leHQ7Ci0rCQlEU09fTUVUSE9EX3ZtczsKLSsJCUJJT19mX2xpbmVidWZmZXI7Ci0rCQlCTl9ibnRlc3RfcmFuZDsKLSsJCU9QRU5TU0xfaXNzZXR1Z2lkOwotKwkJQk5fcmFuZF9yYW5nZTsKLSsJCUVSUl9sb2FkX0VOR0lORV9zdHJpbmdzOwotKwkJRU5HSU5FX3NldF9EU0E7Ci0rCQlFTkdJTkVfZ2V0X2ZpbmlzaF9mdW5jdGlvbjsKLSsJCUVOR0lORV9nZXRfZGVmYXVsdF9SU0E7Ci0rCQlFTkdJTkVfZ2V0X0JOX21vZF9leHA7Ci0rCQlEU0FfZ2V0X2RlZmF1bHRfb3BlbnNzbF9tZXRob2Q7Ci0rCQlFTkdJTkVfc2V0X0RIOwotKwkJRU5HSU5FX3NldF9kZWZfQk5fbW9kX2V4cF9jcnQ7Ci0rCQlFTkdJTkVfc2V0X2RlZmF1bHRfQk5fbW9kX2V4cF9jcnQ7Ci0rCQlFTkdJTkVfaW5pdDsKLSsJCURIX2dldF9kZWZhdWx0X29wZW5zc2xfbWV0aG9kOwotKwkJUlNBX3NldF9kZWZhdWx0X29wZW5zc2xfbWV0aG9kOwotKwkJRU5HSU5FX2ZpbmlzaDsKLSsJCUVOR0lORV9sb2FkX3B1YmxpY19rZXk7Ci0rCQlFTkdJTkVfZ2V0X0RIOwotKwkJRU5HSU5FX2N0cmw7Ci0rCQlFTkdJTkVfZ2V0X2luaXRfZnVuY3Rpb247Ci0rCQlFTkdJTkVfc2V0X2luaXRfZnVuY3Rpb247Ci0rCQlFTkdJTkVfc2V0X2RlZmF1bHRfRFNBOwotKwkJRU5HSU5FX2dldF9uYW1lOwotKwkJRU5HSU5FX2dldF9sYXN0OwotKwkJRU5HSU5FX2dldF9wcmV2OwotKwkJRU5HSU5FX2dldF9kZWZhdWx0X0RIOwotKwkJRU5HSU5FX2dldF9SU0E7Ci0rCQlFTkdJTkVfc2V0X2RlZmF1bHQ7Ci0rCQlFTkdJTkVfZ2V0X1JBTkQ7Ci0rCQlFTkdJTkVfZ2V0X2ZpcnN0OwotKwkJRU5HSU5FX2J5X2lkOwotKwkJRU5HSU5FX3NldF9maW5pc2hfZnVuY3Rpb247Ci0rCQlFTkdJTkVfZ2V0X2RlZl9CTl9tb2RfZXhwX2NydDsKLSsJCUVOR0lORV9nZXRfZGVmYXVsdF9CTl9tb2RfZXhwX2NydDsKLSsJCVJTQV9nZXRfZGVmYXVsdF9vcGVuc3NsX21ldGhvZDsKLSsJCUVOR0lORV9zZXRfUlNBOwotKwkJRU5HSU5FX2xvYWRfcHJpdmF0ZV9rZXk7Ci0rCQlFTkdJTkVfc2V0X2RlZmF1bHRfUkFORDsKLSsJCUVOR0lORV9zZXRfQk5fbW9kX2V4cDsKLSsJCUVOR0lORV9yZW1vdmU7Ci0rCQlFTkdJTkVfZnJlZTsKLSsJCUVOR0lORV9nZXRfQk5fbW9kX2V4cF9jcnQ7Ci0rCQlFTkdJTkVfZ2V0X25leHQ7Ci0rCQlFTkdJTkVfc2V0X25hbWU7Ci0rCQlFTkdJTkVfZ2V0X2RlZmF1bHRfRFNBOwotKwkJRU5HSU5FX3NldF9kZWZhdWx0X0JOX21vZF9leHA7Ci0rCQlFTkdJTkVfc2V0X2RlZmF1bHRfUlNBOwotKwkJRU5HSU5FX2dldF9kZWZhdWx0X1JBTkQ7Ci0rCQlFTkdJTkVfZ2V0X2RlZmF1bHRfQk5fbW9kX2V4cDsKLSsJCUVOR0lORV9zZXRfUkFORDsKLSsJCUVOR0lORV9zZXRfaWQ7Ci0rCQlFTkdJTkVfc2V0X0JOX21vZF9leHBfY3J0OwotKwkJRU5HSU5FX3NldF9kZWZhdWx0X0RIOwotKwkJRU5HSU5FX25ldzsKLSsJCUVOR0lORV9nZXRfaWQ7Ci0rCQlEU0Ffc2V0X2RlZmF1bHRfb3BlbnNzbF9tZXRob2Q7Ci0rCQlFTkdJTkVfYWRkOwotKwkJREhfc2V0X2RlZmF1bHRfb3BlbnNzbF9tZXRob2Q7Ci0rCQlFTkdJTkVfZ2V0X0RTQTsKLSsJCUVOR0lORV9nZXRfY3RybF9mdW5jdGlvbjsKLSsJCUVOR0lORV9zZXRfY3RybF9mdW5jdGlvbjsKLSsJCUJOX3BzZXVkb19yYW5kX3JhbmdlOwotKwkJWDUwOV9TVE9SRV9DVFhfc2V0X3ZlcmlmeV9jYjsKLSsJCUVSUl9sb2FkX0NPTVBfc3RyaW5nczsKLSsJCVBLQ1MxMl9pdGVtX2RlY3J5cHRfZDJpOwotKwkJQVNOMV9VVEY4U1RSSU5HX2l0OwotKwkJRU5HSU5FX3VucmVnaXN0ZXJfY2lwaGVyczsKLSsJCUVOR0lORV9nZXRfY2lwaGVyczsKLSsJCWQyaV9PQ1NQX0JBU0lDUkVTUDsKLSsJCUtSQjVfQ0hFQ0tTVU1faXQ7Ci0rCQlFQ19QT0lOVF9hZGQ7Ci0rCQlBU04xX2l0ZW1fZXhfaTJkOwotKwkJT0NTUF9DRVJUSURfaXQ7Ci0rCQlkMmlfT0NTUF9SRVNQQllURVM7Ci0rCQlYNTA5VjNfYWRkMV9pMmQ7Ci0rCQlQS0NTN19FTlZFTE9QRV9pdDsKLSsJCVVJX2FkZF9pbnB1dF9ib29sZWFuOwotKwkJRU5HSU5FX3VucmVnaXN0ZXJfUlNBOwotKwkJWDUwOVYzX0VYVF9uY29uZjsKLSsJCUFTTjFfR0VORVJBTFNUUklOR19mcmVlOwotKwkJZDJpX09DU1BfQ0VSVFNUQVRVUzsKLSsJCVg1MDlfUkVWT0tFRF9zZXRfc2VyaWFsTnVtYmVyOwotKwkJWDUwOV9wcmludF9leDsKLSsJCU9DU1BfT05FUkVRX2dldDFfZXh0X2QyaTsKLSsJCUVOR0lORV9yZWdpc3Rlcl9hbGxfUkFORDsKLSsJCUVOR0lORV9sb2FkX2R5bmFtaWM7Ci0rCQlQQktERjJQQVJBTV9pdDsKLSsJCUVYVEVOREVEX0tFWV9VU0FHRV9uZXc7Ci0rCQlFQ19HUk9VUF9jbGVhcl9mcmVlOwotKwkJT0NTUF9zZW5kcmVxX2JpbzsKLSsJCUFTTjFfaXRlbV9kaWdlc3Q7Ci0rCQlPQ1NQX0JBU0lDUkVTUF9kZWxldGVfZXh0OwotKwkJT0NTUF9TSUdOQVRVUkVfaXQ7Ci0rCQlYNTA5X0NSTF9pdDsKLSsJCU9DU1BfQkFTSUNSRVNQX2FkZF9leHQ7Ci0rCQlLUkI1X0VOQ0tFWV9pdDsKLSsJCVVJX21ldGhvZF9zZXRfY2xvc2VyOwotKwkJWDUwOV9TVE9SRV9zZXRfcHVycG9zZTsKLSsJCWkyZF9BU04xX0dFTkVSQUxTVFJJTkc7Ci0rCQlPQ1NQX3Jlc3BvbnNlX3N0YXR1czsKLSsJCWkyZF9PQ1NQX1NFUlZJQ0VMT0M7Ci0rCQlFTkdJTkVfZ2V0X2RpZ2VzdF9lbmdpbmU7Ci0rCQlFQ19HUk9VUF9zZXRfY3VydmVfR0ZwOwotKwkJT0NTUF9SRVFVRVNUX2dldF9leHRfYnlfT0JKOwotKwkJX29zc2xfb2xkX2Rlc19yYW5kb21fa2V5OwotKwkJQVNOMV9UNjFTVFJJTkdfaXQ7Ci0rCQlFQ19HUk9VUF9tZXRob2Rfb2Y7Ci0rCQlpMmRfS1JCNV9BUFJFUTsKLSsJCV9vc3NsX29sZF9kZXNfZW5jcnlwdDsKLSsJCUFTTjFfUFJJTlRBQkxFX25ldzsKLSsJCUhNQUNfSW5pdF9leDsKLSsJCWQyaV9LUkI1X0FVVEhFTlQ7Ci0rCQlPQ1NQX2FyY2hpdmVfY3V0b2ZmX25ldzsKLSsJCUVDX1BPSU5UX3NldF9KcHJvamVjdGl2ZV9jb29yZGluYXRlc19HRnA7Ci0rCQlFQ19QT0lOVF9zZXRfSnByb2pfY29vcmRzX0dGcDsKLSsJCV9vc3NsX29sZF9kZXNfaXNfd2Vha19rZXk7Ci0rCQlPQ1NQX0JBU0lDUkVTUF9nZXRfZXh0X2J5X09CSjsKLSsJCUVDX1BPSU5UX29jdDJwb2ludDsKLSsJCU9DU1BfU0lOR0xFUkVTUF9nZXRfZXh0X2NvdW50OwotKwkJVUlfY3RybDsKLSsJCV9zaGFkb3dfREVTX3J3X21vZGU7Ci0rCQlhc24xX2RvX2FkYjsKLSsJCUFTTjFfdGVtcGxhdGVfaTJkOwotKwkJRU5HSU5FX3JlZ2lzdGVyX0RIOwotKwkJVUlfY29uc3RydWN0X3Byb21wdDsKLSsJCVg1MDlfU1RPUkVfc2V0X3RydXN0OwotKwkJVUlfZHVwX2lucHV0X3N0cmluZzsKLSsJCWQyaV9LUkI1X0FQUkVROwotKwkJRVZQX01EX0NUWF9jb3B5X2V4OwotKwkJT0NTUF9yZXF1ZXN0X2lzX3NpZ25lZDsKLSsJCWkyZF9PQ1NQX1JFUUlORk87Ci0rCQlLUkI1X0VOQ0tFWV9mcmVlOwotKwkJT0NTUF9yZXNwX2dldDA7Ci0rCQlHRU5FUkFMX05BTUVfaXQ7Ci0rCQlBU04xX0dFTkVSQUxJWkVEVElNRV9pdDsKLSsJCVg1MDlfU1RPUkVfc2V0X2ZsYWdzOwotKwkJRUNfUE9JTlRfc2V0X2NvbXByZXNzZWRfY29vcmRpbmF0ZXNfR0ZwOwotKwkJRUNfUE9JTlRfc2V0X2NvbXByX2Nvb3Jkc19HRnA7Ci0rCQlPQ1NQX3Jlc3BvbnNlX3N0YXR1c19zdHI7Ci0rCQlkMmlfT0NTUF9SRVZPS0VESU5GTzsKLSsJCU9DU1BfYmFzaWNfYWRkMV9jZXJ0OwotKwkJRVJSX2dldF9pbXBsZW1lbnRhdGlvbjsKLSsJCUVWUF9DaXBoZXJGaW5hbF9leDsKLSsJCU9DU1BfQ0VSVFNUQVRVU19uZXc7Ci0rCQlDUllQVE9fY2xlYW51cF9hbGxfZXhfZGF0YTsKLSsJCU9DU1BfcmVzcF9maW5kOwotKwkJQk5fbm5tb2Q7Ci0rCQlYNTA5X0NSTF9zb3J0OwotKwkJWDUwOV9SRVZPS0VEX3NldF9yZXZvY2F0aW9uRGF0ZTsKLSsJCUVOR0lORV9yZWdpc3Rlcl9SQU5EOwotKwkJT0NTUF9TRVJWSUNFTE9DX25ldzsKLSsJCUVDX1BPSU5UX3NldF9hZmZpbmVfY29vcmRpbmF0ZXNfR0ZwOwotKwkJRUNfUE9JTlRfc2V0X2FmZmluZV9jb29yZHNfR0ZwOwotKwkJX29zc2xfb2xkX2Rlc19vcHRpb25zOwotKwkJU1hORVRfaXQ7Ci0rCQlVSV9kdXBfaW5wdXRfYm9vbGVhbjsKLSsJCVBLQ1MxMl9hZGRfQ1NQTmFtZV9hc2M7Ci0rCQlFQ19QT0lOVF9pc19hdF9pbmZpbml0eTsKLSsJCUVOR0lORV9sb2FkX2NyeXB0b2RldjsKLSsJCURTT19jb252ZXJ0X2ZpbGVuYW1lOwotKwkJUE9MSUNZUVVBTElORk9faXQ7Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfY2lwaGVyczsKLSsJCUJOX21vZF9sc2hpZnRfcXVpY2s7Ci0rCQlEU09fc2V0X2ZpbGVuYW1lOwotKwkJQVNOMV9pdGVtX2ZyZWU7Ci0rCQlLUkI1X1RLVEJPRFlfZnJlZTsKLSsJCUFVVEhPUklUWV9LRVlJRF9pdDsKLSsJCUtSQjVfQVBSRVFCT0RZX25ldzsKLSsJCVg1MDlWM19FWFRfUkVRX2FkZF9uY29uZjsKLSsJCUVOR0lORV9jdHJsX2NtZF9zdHJpbmc7Ci0rCQlpMmRfT0NTUF9SRVNQREFUQTsKLSsJCUVWUF9NRF9DVFhfaW5pdDsKLSsJCUVYVEVOREVEX0tFWV9VU0FHRV9mcmVlOwotKwkJUEtDUzdfQVRUUl9TSUdOX2l0OwotKwkJVUlfYWRkX2Vycm9yX3N0cmluZzsKLSsJCUtSQjVfQ0hFQ0tTVU1fZnJlZTsKLSsJCU9DU1BfUkVRVUVTVF9nZXRfZXh0OwotKwkJRU5HSU5FX2xvYWRfdWJzZWM7Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfYWxsX2RpZ2VzdHM7Ci0rCQlQS0VZX1VTQUdFX1BFUklPRF9pdDsKLSsJCVBLQ1MxMl91bnBhY2tfYXV0aHNhZmVzOwotKwkJQVNOMV9pdGVtX3VucGFjazsKLSsJCU5FVFNDQVBFX1NQS0FDX2l0OwotKwkJWDUwOV9SRVZPS0VEX2l0OwotKwkJQVNOMV9TVFJJTkdfZW5jb2RlOwotKwkJRVZQX2Flc18xMjhfZWNiOwotKwkJS1JCNV9BVVRIRU5UX2ZyZWU7Ci0rCQlPQ1NQX0JBU0lDUkVTUF9nZXRfZXh0X2J5X2NyaXRpY2FsOwotKwkJT0NTUF9CQVNJQ1JFU1BfZ2V0X2V4dF9ieV9jcml0OwotKwkJT0NTUF9jZXJ0X3N0YXR1c19zdHI7Ci0rCQlkMmlfT0NTUF9SRVFVRVNUOwotKwkJVUlfZHVwX2luZm9fc3RyaW5nOwotKwkJX29zc2xfb2xkX2Rlc194d2hpdGVfaW4yb3V0OwotKwkJUEtDUzEyX2l0OwotKwkJT0NTUF9TSU5HTEVSRVNQX2dldF9leHRfYnlfY3JpdGljYWw7Ci0rCQlPQ1NQX1NJTkdMRVJFU1BfZ2V0X2V4dF9ieV9jcml0OwotKwkJT0NTUF9DRVJUU1RBVFVTX2ZyZWU7Ci0rCQlfb3NzbF9vbGRfZGVzX2NyeXB0OwotKwkJQVNOMV9pdGVtX2kyZDsKLSsJCUVWUF9EZWNyeXB0RmluYWxfZXg7Ci0rCQlFTkdJTkVfbG9hZF9vcGVuc3NsOwotKwkJRU5HSU5FX2dldF9jbWRfZGVmbnM7Ci0rCQlFTkdJTkVfc2V0X2xvYWRfcHJpdmtleV9mdW5jdGlvbjsKLSsJCUVOR0lORV9zZXRfbG9hZF9wcml2a2V5X2ZuOwotKwkJRVZQX0VuY3J5cHRGaW5hbF9leDsKLSsJCUVOR0lORV9zZXRfZGVmYXVsdF9kaWdlc3RzOwotKwkJWDUwOV9nZXQwX3B1YmtleV9iaXRzdHI7Ci0rCQlhc24xX2V4X2kyYzsKLSsJCUVOR0lORV9yZWdpc3Rlcl9SU0E7Ci0rCQlFTkdJTkVfdW5yZWdpc3Rlcl9EU0E7Ci0rCQlfb3NzbF9vbGRfZGVzX2tleV9zY2hlZDsKLSsJCVg1MDlfRVhURU5TSU9OX2l0OwotKwkJaTJkX0tSQjVfQVVUSEVOVDsKLSsJCVNYTkVUSURfaXQ7Ci0rCQlkMmlfT0NTUF9TSU5HTEVSRVNQOwotKwkJRURJUEFSVFlOQU1FX25ldzsKLSsJCVBLQ1MxMl9jZXJ0YmFnMng1MDk7Ci0rCQlfb3NzbF9vbGRfZGVzX29mYjY0X2VuY3J5cHQ7Ci0rCQlkMmlfRVhURU5ERURfS0VZX1VTQUdFOwotKwkJRVJSX3ByaW50X2Vycm9yc19jYjsKLSsJCUVOR0lORV9zZXRfY2lwaGVyczsKLSsJCWQyaV9LUkI1X0FQUkVRQk9EWTsKLSsJCVVJX21ldGhvZF9nZXRfZmx1c2hlcjsKLSsJCVg1MDlfUFVCS0VZX2l0OwotKwkJX29zc2xfb2xkX2Rlc19lbmNfcmVhZDsKLSsJCVBLQ1M3X0VOQ1JZUFRfaXQ7Ci0rCQlpMmRfT0NTUF9SRVNQT05TRTsKLSsJCUVDX0dST1VQX2dldF9jb2ZhY3RvcjsKLSsJCVBLQ1MxMl91bnBhY2tfcDdkYXRhOwotKwkJZDJpX0tSQjVfQVVUSERBVEE7Ci0rCQlPQ1NQX2NvcHlfbm9uY2U7Ci0rCQlLUkI1X0FVVEhEQVRBX25ldzsKLSsJCU9DU1BfUkVTUERBVEFfbmV3OwotKwkJRUNfR0ZwX21vbnRfbWV0aG9kOwotKwkJT0NTUF9SRVZPS0VESU5GT19mcmVlOwotKwkJVUlfZ2V0X2V4X2RhdGE7Ci0rCQlLUkI1X0FQUkVRQk9EWV9mcmVlOwotKwkJRUNfR1JPVVBfZ2V0MF9nZW5lcmF0b3I7Ci0rCQlVSV9nZXRfZGVmYXVsdF9tZXRob2Q7Ci0rCQlYNTA5VjNfc2V0X25jb25mOwotKwkJUEtDUzEyX2l0ZW1faTJkX2VuY3J5cHQ7Ci0rCQlYNTA5X2FkZDFfZXh0X2kyZDsKLSsJCVBLQ1M3X1NJR05FUl9JTkZPX2l0OwotKwkJS1JCNV9QUklOQ05BTUVfbmV3OwotKwkJUEtDUzEyX1NBRkVCQUdfaXQ7Ci0rCQlFQ19HUk9VUF9nZXRfb3JkZXI7Ci0rCQlkMmlfT0NTUF9SRVNQSUQ7Ci0rCQlPQ1NQX3JlcXVlc3RfdmVyaWZ5OwotKwkJTkNPTkZfZ2V0X251bWJlcl9lOwotKwkJX29zc2xfb2xkX2Rlc19kZWNyeXB0MzsKLSsJCVg1MDlfc2lnbmF0dXJlX3ByaW50OwotKwkJT0NTUF9TSU5HTEVSRVNQX2ZyZWU7Ci0rCQlFTkdJTkVfbG9hZF9idWlsdGluX2VuZ2luZXM7Ci0rCQlpMmRfT0NTUF9PTkVSRVE7Ci0rCQlPQ1NQX1JFUVVFU1RfYWRkX2V4dDsKLSsJCU9DU1BfUkVTUEJZVEVTX25ldzsKLSsJCUVWUF9NRF9DVFhfY3JlYXRlOwotKwkJT0NTUF9yZXNwX2ZpbmRfc3RhdHVzOwotKwkJWDUwOV9BTEdPUl9pdDsKLSsJCUFTTjFfVElNRV9pdDsKLSsJCU9DU1BfcmVxdWVzdF9zZXQxX25hbWU7Ci0rCQlPQ1NQX09ORVJFUV9nZXRfZXh0X2NvdW50OwotKwkJVUlfZ2V0MF9yZXN1bHQ7Ci0rCQlQS0NTMTJfQVVUSFNBRkVTX2l0OwotKwkJRVZQX2Flc18yNTZfZWNiOwotKwkJUEtDUzEyX3BhY2tfYXV0aHNhZmVzOwotKwkJQVNOMV9JQTVTVFJJTkdfaXQ7Ci0rCQlVSV9nZXRfaW5wdXRfZmxhZ3M7Ci0rCQlFQ19HUk9VUF9zZXRfZ2VuZXJhdG9yOwotKwkJX29zc2xfb2xkX2Rlc19zdHJpbmdfdG9fMmtleXM7Ci0rCQlPQ1NQX0NFUlRJRF9mcmVlOwotKwkJWDUwOV9DRVJUX0FVWF9pdDsKLSsJCUNFUlRJRklDQVRFUE9MSUNJRVNfaXQ7Ci0rCQlfb3NzbF9vbGRfZGVzX2VkZTNfY2JjX2VuY3J5cHQ7Ci0rCQlSQU5EX3NldF9yYW5kX2VuZ2luZTsKLSsJCURTT19nZXRfbG9hZGVkX2ZpbGVuYW1lOwotKwkJWDUwOV9BVFRSSUJVVEVfaXQ7Ci0rCQlPQ1NQX09ORVJFUV9nZXRfZXh0X2J5X05JRDsKLSsJCVBLQ1MxMl9kZWNyeXB0X3NrZXk7Ci0rCQlLUkI1X0FVVEhFTlRfaXQ7Ci0rCQlVSV9kdXBfZXJyb3Jfc3RyaW5nOwotKwkJUlNBUHVibGljS2V5X2l0OwotKwkJaTJkX09DU1BfUkVRVUVTVDsKLSsJCVBLQ1MxMl94NTA5Y3JsMmNlcnRiYWc7Ci0rCQlPQ1NQX1NFUlZJQ0VMT0NfaXQ7Ci0rCQlBU04xX2l0ZW1fc2lnbjsKLSsJCVg1MDlfQ1JMX3NldF9pc3N1ZXJfbmFtZTsKLSsJCU9CSl9OQU1FX2RvX2FsbF9zb3J0ZWQ7Ci0rCQlpMmRfT0NTUF9CQVNJQ1JFU1A7Ci0rCQlpMmRfT0NTUF9SRVNQQllURVM7Ci0rCQlQS0NTMTJfdW5wYWNrX3A3ZW5jZGF0YTsKLSsJCUhNQUNfQ1RYX2luaXQ7Ci0rCQlFTkdJTkVfZ2V0X2RpZ2VzdDsKLSsJCU9DU1BfUkVTUE9OU0VfcHJpbnQ7Ci0rCQlLUkI1X1RLVEJPRFlfaXQ7Ci0rCQlBQ0NFU1NfREVTQ1JJUFRJT05faXQ7Ci0rCQlQS0NTN19JU1NVRVJfQU5EX1NFUklBTF9pdDsKLSsJCVBCRTJQQVJBTV9pdDsKLSsJCVBLQ1MxMl9jZXJ0YmFnMng1MDljcmw7Ci0rCQlQS0NTN19TSUdORURfaXQ7Ci0rCQlFTkdJTkVfZ2V0X2NpcGhlcjsKLSsJCWkyZF9PQ1NQX0NSTElEOwotKwkJT0NTUF9TSU5HTEVSRVNQX25ldzsKLSsJCUVOR0lORV9jbWRfaXNfZXhlY3V0YWJsZTsKLSsJCVJTQV91cF9yZWY7Ci0rCQlBU04xX0dFTkVSQUxTVFJJTkdfaXQ7Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfRFNBOwotKwkJWDUwOVYzX0VYVF9hZGRfbmNvbmZfc2s7Ci0rCQlFTkdJTkVfc2V0X2xvYWRfcHVia2V5X2Z1bmN0aW9uOwotKwkJUEtDUzhfZGVjcnlwdDsKLSsJCVBFTV9ieXRlc19yZWFkX2JpbzsKLSsJCURJUkVDVE9SWVNUUklOR19pdDsKLSsJCWQyaV9PQ1NQX0NSTElEOwotKwkJRUNfUE9JTlRfaXNfb25fY3VydmU7Ci0rCQlDUllQVE9fc2V0X2xvY2tlZF9tZW1fZXhfZnVuY3Rpb25zOwotKwkJQ1JZUFRPX3NldF9sb2NrZWRfbWVtX2V4X2Z1bmNzOwotKwkJZDJpX0tSQjVfQ0hFQ0tTVU07Ci0rCQlBU04xX2l0ZW1fZHVwOwotKwkJWDUwOV9pdDsKLSsJCUJOX21vZF9hZGQ7Ci0rCQlLUkI1X0FVVEhEQVRBX2ZyZWU7Ci0rCQlfb3NzbF9vbGRfZGVzX2NiY19ja3N1bTsKLSsJCUFTTjFfaXRlbV92ZXJpZnk7Ci0rCQlDUllQVE9fc2V0X21lbV9leF9mdW5jdGlvbnM7Ci0rCQlFQ19QT0lOVF9nZXRfSnByb2plY3RpdmVfY29vcmRpbmF0ZXNfR0ZwOwotKwkJRUNfUE9JTlRfZ2V0X0pwcm9qX2Nvb3Jkc19HRnA7Ci0rCQlaTE9OR19pdDsKLSsJCUNSWVBUT19nZXRfbG9ja2VkX21lbV9leF9mdW5jdGlvbnM7Ci0rCQlDUllQVE9fZ2V0X2xvY2tlZF9tZW1fZXhfZnVuY3M7Ci0rCQlBU04xX1RJTUVfY2hlY2s7Ci0rCQlVSV9nZXQwX3VzZXJfZGF0YTsKLSsJCUhNQUNfQ1RYX2NsZWFudXA7Ci0rCQlEU0FfdXBfcmVmOwotKwkJX29zc2xfb2xkX2Rlc19lZGUzX2NmYjY0X2VuY3J5cHQ7Ci0rCQlfb3NzbF9vZGVzX2VkZTNfY2ZiNjRfZW5jcnlwdDsKLSsJCUFTTjFfQk1QU1RSSU5HX2l0OwotKwkJQVNOMV90YWcyYml0OwotKwkJVUlfbWV0aG9kX3NldF9mbHVzaGVyOwotKwkJWDUwOV9vY3NwaWRfcHJpbnQ7Ci0rCQlLUkI1X0VOQ0RBVEFfaXQ7Ci0rCQlFTkdJTkVfZ2V0X2xvYWRfcHVia2V5X2Z1bmN0aW9uOwotKwkJVUlfYWRkX3VzZXJfZGF0YTsKLSsJCU9DU1BfUkVRVUVTVF9kZWxldGVfZXh0OwotKwkJVUlfZ2V0X21ldGhvZDsKLSsJCU9DU1BfT05FUkVRX2ZyZWU7Ci0rCQlBU04xX1BSSU5UQUJMRVNUUklOR19pdDsKLSsJCVg1MDlfQ1JMX3NldF9uZXh0VXBkYXRlOwotKwkJT0NTUF9SRVFVRVNUX2l0OwotKwkJT0NTUF9CQVNJQ1JFU1BfaXQ7Ci0rCQlBRVNfZWNiX2VuY3J5cHQ7Ci0rCQlCTl9tb2Rfc3FyOwotKwkJTkVUU0NBUEVfQ0VSVF9TRVFVRU5DRV9pdDsKLSsJCUdFTkVSQUxfTkFNRVNfaXQ7Ci0rCQlBVVRIT1JJVFlfSU5GT19BQ0NFU1NfaXQ7Ci0rCQlBU04xX0ZCT09MRUFOX2l0OwotKwkJVUlfc2V0X2V4X2RhdGE7Ci0rCQlfb3NzbF9vbGRfZGVzX3N0cmluZ190b19rZXk7Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfYWxsX1JTQTsKLSsJCWQyaV9LUkI1X1BSSU5DTkFNRTsKLSsJCU9DU1BfUkVTUEJZVEVTX2l0OwotKwkJWDUwOV9DSU5GX2l0OwotKwkJRU5HSU5FX3VucmVnaXN0ZXJfZGlnZXN0czsKLSsJCWQyaV9FRElQQVJUWU5BTUU7Ci0rCQlkMmlfT0NTUF9TRVJWSUNFTE9DOwotKwkJRU5HSU5FX2dldF9kaWdlc3RzOwotKwkJX29zc2xfb2xkX2Rlc19zZXRfb2RkX3Bhcml0eTsKLSsJCU9DU1BfUkVTUERBVEFfZnJlZTsKLSsJCWQyaV9LUkI1X1RJQ0tFVDsKLSsJCU9USEVSTkFNRV9pdDsKLSsJCUVWUF9NRF9DVFhfY2xlYW51cDsKLSsJCWQyaV9BU04xX0dFTkVSQUxTVFJJTkc7Ci0rCQlYNTA5X0NSTF9zZXRfdmVyc2lvbjsKLSsJCUJOX21vZF9zdWI7Ci0rCQlPQ1NQX1NJTkdMRVJFU1BfZ2V0X2V4dF9ieV9OSUQ7Ci0rCQlFTkdJTkVfZ2V0X2V4X25ld19pbmRleDsKLSsJCU9DU1BfUkVRVUVTVF9mcmVlOwotKwkJT0NTUF9SRVFVRVNUX2FkZDFfZXh0X2kyZDsKLSsJCVg1MDlfVkFMX2l0OwotKwkJRUNfUE9JTlRzX21ha2VfYWZmaW5lOwotKwkJRUNfUE9JTlRfbXVsOwotKwkJWDUwOVYzX0VYVF9hZGRfbmNvbmY7Ci0rCQlYNTA5X1RSVVNUX3NldDsKLSsJCVg1MDlfQ1JMX2FkZDFfZXh0X2kyZDsKLSsJCV9vc3NsX29sZF9kZXNfZmNyeXB0OwotKwkJRElTUExBWVRFWFRfaXQ7Ci0rCQlYNTA5X0NSTF9zZXRfbGFzdFVwZGF0ZTsKLSsJCU9DU1BfQkFTSUNSRVNQX2ZyZWU7Ci0rCQlPQ1NQX0JBU0lDUkVTUF9hZGQxX2V4dF9pMmQ7Ci0rCQlkMmlfS1JCNV9BVVRIRU5UQk9EWTsKLSsJCUNSWVBUT19zZXRfZXhfZGF0YV9pbXBsZW1lbnRhdGlvbjsKLSsJCUNSWVBUT19zZXRfZXhfZGF0YV9pbXBsOwotKwkJS1JCNV9FTkNEQVRBX25ldzsKLSsJCURTT191cF9yZWY7Ci0rCQlPQ1NQX2NybF9yZWFzb25fc3RyOwotKwkJVUlfZ2V0MF9yZXN1bHRfc3RyaW5nOwotKwkJQVNOMV9HRU5FUkFMU1RSSU5HX25ldzsKLSsJCVg1MDlfU0lHX2l0OwotKwkJRVJSX3NldF9pbXBsZW1lbnRhdGlvbjsKLSsJCUVSUl9sb2FkX0VDX3N0cmluZ3M7Ci0rCQlVSV9nZXQwX2FjdGlvbl9zdHJpbmc7Ci0rCQlPQ1NQX09ORVJFUV9nZXRfZXh0OwotKwkJRUNfUE9JTlRfbWV0aG9kX29mOwotKwkJaTJkX0tSQjVfQVBSRVFCT0RZOwotKwkJX29zc2xfb2xkX2Rlc19lY2IzX2VuY3J5cHQ7Ci0rCQlDUllQVE9fZ2V0X21lbV9leF9mdW5jdGlvbnM7Ci0rCQlFTkdJTkVfZ2V0X2V4X2RhdGE7Ci0rCQlVSV9kZXN0cm95X21ldGhvZDsKLSsJCUFTTjFfaXRlbV9pMmRfYmlvOwotKwkJT0NTUF9PTkVSRVFfZ2V0X2V4dF9ieV9PQko7Ci0rCQlBU04xX3ByaW1pdGl2ZV9uZXc7Ci0rCQlBU04xX1BSSU5UQUJMRV9pdDsKLSsJCUVWUF9hZXNfMTkyX2VjYjsKLSsJCU9DU1BfU0lHTkFUVVJFX25ldzsKLSsJCUxPTkdfaXQ7Ci0rCQlBU04xX1ZJU0lCTEVTVFJJTkdfaXQ7Ci0rCQlPQ1NQX1NJTkdMRVJFU1BfYWRkMV9leHRfaTJkOwotKwkJZDJpX09DU1BfQ0VSVElEOwotKwkJQVNOMV9pdGVtX2QyaV9mcDsKLSsJCUNSTF9ESVNUX1BPSU5UU19pdDsKLSsJCUdFTkVSQUxfTkFNRV9wcmludDsKLSsJCU9DU1BfU0lOR0xFUkVTUF9kZWxldGVfZXh0OwotKwkJUEtDUzEyX1NBRkVCQUdTX2l0OwotKwkJZDJpX09DU1BfU0lHTkFUVVJFOwotKwkJT0NTUF9yZXF1ZXN0X2FkZDFfbm9uY2U7Ci0rCQlFTkdJTkVfc2V0X2NtZF9kZWZuczsKLSsJCU9DU1BfU0VSVklDRUxPQ19mcmVlOwotKwkJRUNfR1JPVVBfZnJlZTsKLSsJCUFTTjFfQklUX1NUUklOR19pdDsKLSsJCVg1MDlfUkVRX2l0OwotKwkJX29zc2xfb2xkX2Rlc19jYmNfZW5jcnlwdDsKLSsJCUVSUl91bmxvYWRfc3RyaW5nczsKLSsJCVBLQ1M3X1NJR05fRU5WRUxPUEVfaXQ7Ci0rCQlFRElQQVJUWU5BTUVfZnJlZTsKLSsJCU9DU1BfUkVRSU5GT19mcmVlOwotKwkJRUNfR1JPVVBfbmV3X2N1cnZlX0dGcDsKLSsJCU9DU1BfUkVRVUVTVF9nZXQxX2V4dF9kMmk7Ci0rCQlQS0NTMTJfaXRlbV9wYWNrX3NhZmViYWc7Ci0rCQlhc24xX2V4X2MyaTsKLSsJCUVOR0lORV9yZWdpc3Rlcl9kaWdlc3RzOwotKwkJaTJkX09DU1BfUkVWT0tFRElORk87Ci0rCQlhc24xX2VuY19yZXN0b3JlOwotKwkJVUlfZnJlZTsKLSsJCVVJX25ld19tZXRob2Q7Ci0rCQlFVlBfRW5jcnlwdEluaXRfZXg7Ci0rCQlYNTA5X3B1YmtleV9kaWdlc3Q7Ci0rCQlFQ19QT0lOVF9pbnZlcnQ7Ci0rCQlPQ1NQX2Jhc2ljX3NpZ247Ci0rCQlpMmRfT0NTUF9SRVNQSUQ7Ci0rCQlPQ1NQX2NoZWNrX25vbmNlOwotKwkJRU5HSU5FX2N0cmxfY21kOwotKwkJZDJpX0tSQjVfRU5DS0VZOwotKwkJT0NTUF9wYXJzZV91cmw7Ci0rCQlPQ1NQX1NJTkdMRVJFU1BfZ2V0X2V4dDsKLSsJCU9DU1BfQ1JMSURfZnJlZTsKLSsJCU9DU1BfQkFTSUNSRVNQX2dldDFfZXh0X2QyaTsKLSsJCVJTQVByaXZhdGVLZXlfaXQ7Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfYWxsX0RIOwotKwkJaTJkX0VESVBBUlRZTkFNRTsKLSsJCUVDX1BPSU5UX2dldF9hZmZpbmVfY29vcmRpbmF0ZXNfR0ZwOwotKwkJRUNfUE9JTlRfZ2V0X2FmZmluZV9jb29yZHNfR0ZwOwotKwkJT0NTUF9DUkxJRF9uZXc7Ci0rCQlFTkdJTkVfZ2V0X2ZsYWdzOwotKwkJT0NTUF9PTkVSRVFfaXQ7Ci0rCQlVSV9wcm9jZXNzOwotKwkJQVNOMV9JTlRFR0VSX2l0OwotKwkJRVZQX0NpcGhlckluaXRfZXg7Ci0rCQlVSV9nZXRfc3RyaW5nX3R5cGU7Ci0rCQlFTkdJTkVfdW5yZWdpc3Rlcl9ESDsKLSsJCUVOR0lORV9yZWdpc3Rlcl9hbGxfRFNBOwotKwkJT0NTUF9PTkVSRVFfZ2V0X2V4dF9ieV9jcml0aWNhbDsKLSsJCWJuX2R1cF9leHBhbmQ7Ci0rCQlPQ1NQX2NlcnRfaWRfbmV3OwotKwkJQkFTSUNfQ09OU1RSQUlOVFNfaXQ7Ci0rCQlCTl9tb2RfYWRkX3F1aWNrOwotKwkJRUNfUE9JTlRfbmV3OwotKwkJRVZQX01EX0NUWF9kZXN0cm95OwotKwkJT0NTUF9SRVNQQllURVNfZnJlZTsKLSsJCUVWUF9hZXNfMTI4X2NiYzsKLSsJCU9DU1BfU0lOR0xFUkVTUF9nZXQxX2V4dF9kMmk7Ci0rCQlFQ19QT0lOVF9mcmVlOwotKwkJREhfdXBfcmVmOwotKwkJWDUwOV9OQU1FX0VOVFJZX2l0OwotKwkJVUlfZ2V0X2V4X25ld19pbmRleDsKLSsJCUJOX21vZF9zdWJfcXVpY2s7Ci0rCQlPQ1NQX09ORVJFUV9hZGRfZXh0OwotKwkJT0NTUF9yZXF1ZXN0X3NpZ247Ci0rCQlFVlBfRGlnZXN0RmluYWxfZXg7Ci0rCQlFTkdJTkVfc2V0X2RpZ2VzdHM7Ci0rCQlPQ1NQX2lkX2lzc3Vlcl9jbXA7Ci0rCQlPQkpfTkFNRV9kb19hbGw7Ci0rCQlFQ19QT0lOVHNfbXVsOwotKwkJRU5HSU5FX3JlZ2lzdGVyX2NvbXBsZXRlOwotKwkJWDUwOVYzX0VYVF9uY29uZl9uaWQ7Ci0rCQlBU04xX1NFUVVFTkNFX2l0OwotKwkJVUlfc2V0X2RlZmF1bHRfbWV0aG9kOwotKwkJUkFORF9xdWVyeV9lZ2RfYnl0ZXM7Ci0rCQlVSV9tZXRob2RfZ2V0X3dyaXRlcjsKLSsJCVVJX09wZW5TU0w7Ci0rCQlQRU1fZGVmX2NhbGxiYWNrOwotKwkJRU5HSU5FX2NsZWFudXA7Ci0rCQlESVNUX1BPSU5UX2l0OwotKwkJT0NTUF9TSU5HTEVSRVNQX2l0OwotKwkJZDJpX0tSQjVfVEtUQk9EWTsKLSsJCUVDX1BPSU5UX2NtcDsKLSsJCU9DU1BfUkVWT0tFRElORk9fbmV3OwotKwkJaTJkX09DU1BfQ0VSVFNUQVRVUzsKLSsJCU9DU1BfYmFzaWNfYWRkMV9ub25jZTsKLSsJCUFTTjFfaXRlbV9leF9kMmk7Ci0rCQlCTl9tb2RfbHNoaWZ0MV9xdWljazsKLSsJCVVJX3NldF9tZXRob2Q7Ci0rCQlPQ1NQX2lkX2dldDBfaW5mbzsKLSsJCUJOX21vZF9zcXJ0OwotKwkJRUNfR1JPVVBfY29weTsKLSsJCUtSQjVfRU5DREFUQV9mcmVlOwotKwkJX29zc2xfb2xkX2Rlc19jZmJfZW5jcnlwdDsKLSsJCU9DU1BfU0lOR0xFUkVTUF9nZXRfZXh0X2J5X09CSjsKLSsJCU9DU1BfY2VydF90b19pZDsKLSsJCU9DU1BfUkVTUElEX25ldzsKLSsJCU9DU1BfUkVTUERBVEFfaXQ7Ci0rCQlkMmlfT0NTUF9SRVNQREFUQTsKLSsJCUVOR0lORV9yZWdpc3Rlcl9hbGxfY29tcGxldGU7Ci0rCQlPQ1NQX2NoZWNrX3ZhbGlkaXR5OwotKwkJUEtDUzEyX0JBR1NfaXQ7Ci0rCQlPQ1NQX3VybF9zdmNsb2NfbmV3OwotKwkJQVNOMV90ZW1wbGF0ZV9mcmVlOwotKwkJT0NTUF9TSU5HTEVSRVNQX2FkZF9leHQ7Ci0rCQlLUkI1X0FVVEhFTlRCT0RZX2l0OwotKwkJWDUwOV9zdXBwb3J0ZWRfZXh0ZW5zaW9uOwotKwkJaTJkX0tSQjVfQVVUSERBVEE7Ci0rCQlVSV9tZXRob2RfZ2V0X29wZW5lcjsKLSsJCUVOR0lORV9zZXRfZXhfZGF0YTsKLSsJCU9DU1BfUkVRVUVTVF9wcmludDsKLSsJCUNCSUdOVU1faXQ7Ci0rCQlLUkI1X1RJQ0tFVF9uZXc7Ci0rCQlLUkI1X0FQUkVRX25ldzsKLSsJCUVDX0dST1VQX2dldF9jdXJ2ZV9HRnA7Ci0rCQlLUkI1X0VOQ0tFWV9uZXc7Ci0rCQlBU04xX3RlbXBsYXRlX2QyaTsKLSsJCV9vc3NsX29sZF9kZXNfcXVhZF9ja3N1bTsKLSsJCU9DU1Bfc2luZ2xlX2dldDBfc3RhdHVzOwotKwkJQk5fc3dhcDsKLSsJCVBPTElDWUlORk9faXQ7Ci0rCQlFTkdJTkVfc2V0X2Rlc3Ryb3lfZnVuY3Rpb247Ci0rCQlhc24xX2VuY19mcmVlOwotKwkJT0NTUF9SRVNQSURfaXQ7Ci0rCQlFQ19HUk9VUF9uZXc7Ci0rCQlFVlBfYWVzXzI1Nl9jYmM7Ci0rCQlpMmRfS1JCNV9QUklOQ05BTUU7Ci0rCQlfb3NzbF9vbGRfZGVzX2VuY3J5cHQyOwotKwkJX29zc2xfb2xkX2Rlc19lbmNyeXB0MzsKLSsJCVBLQ1M4X1BSSVZfS0VZX0lORk9faXQ7Ci0rCQlPQ1NQX1JFUUlORk9faXQ7Ci0rCQlQQkVQQVJBTV9pdDsKLSsJCUtSQjVfQVVUSEVOVEJPRFlfbmV3OwotKwkJWDUwOV9DUkxfYWRkMF9yZXZva2VkOwotKwkJRURJUEFSVFlOQU1FX2l0OwotKwkJTkVUU0NBUEVfU1BLSV9pdDsKLSsJCVVJX2dldDBfdGVzdF9zdHJpbmc7Ci0rCQlFTkdJTkVfZ2V0X2NpcGhlcl9lbmdpbmU7Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfYWxsX2NpcGhlcnM7Ci0rCQlFQ19QT0lOVF9jb3B5OwotKwkJQk5fa3JvbmVja2VyOwotKwkJX29zc2xfb2xkX2Rlc19lZGUzX29mYjY0X2VuY3J5cHQ7Ci0rCQlfb3NzbF9vZGVzX2VkZTNfb2ZiNjRfZW5jcnlwdDsKLSsJCVVJX21ldGhvZF9nZXRfcmVhZGVyOwotKwkJT0NTUF9CQVNJQ1JFU1BfZ2V0X2V4dF9jb3VudDsKLSsJCUFTTjFfRU5VTUVSQVRFRF9pdDsKLSsJCVVJX3NldF9yZXN1bHQ7Ci0rCQlpMmRfS1JCNV9USUNLRVQ7Ci0rCQlYNTA5X3ByaW50X2V4X2ZwOwotKwkJRVZQX0NJUEhFUl9DVFhfc2V0X3BhZGRpbmc7Ci0rCQlkMmlfT0NTUF9SRVNQT05TRTsKLSsJCUFTTjFfVVRDVElNRV9pdDsKLSsJCV9vc3NsX29sZF9kZXNfZW5jX3dyaXRlOwotKwkJT0NTUF9SRVNQT05TRV9uZXc7Ci0rCQlBRVNfc2V0X2VuY3J5cHRfa2V5OwotKwkJT0NTUF9yZXNwX2NvdW50OwotKwkJS1JCNV9DSEVDS1NVTV9uZXc7Ci0rCQlFTkdJTkVfbG9hZF9jc3dpZnQ7Ci0rCQlPQ1NQX29uZXJlcV9nZXQwX2lkOwotKwkJRU5HSU5FX3NldF9kZWZhdWx0X2NpcGhlcnM7Ci0rCQlOT1RJQ0VSRUZfaXQ7Ci0rCQlYNTA5VjNfRVhUX0NSTF9hZGRfbmNvbmY7Ci0rCQlPQ1NQX1JFVk9LRURJTkZPX2l0OwotKwkJQUVTX2VuY3J5cHQ7Ci0rCQlPQ1NQX1JFUVVFU1RfbmV3OwotKwkJQVNOMV9BTllfaXQ7Ci0rCQlDUllQVE9fZXhfZGF0YV9uZXdfY2xhc3M7Ci0rCQlfb3NzbF9vbGRfZGVzX25jYmNfZW5jcnlwdDsKLSsJCWkyZF9LUkI1X1RLVEJPRFk7Ci0rCQlFQ19QT0lOVF9jbGVhcl9mcmVlOwotKwkJQUVTX2RlY3J5cHQ7Ci0rCQlhc24xX2VuY19pbml0OwotKwkJVUlfZ2V0X3Jlc3VsdF9tYXhzaXplOwotKwkJT0NTUF9DRVJUSURfbmV3OwotKwkJRU5HSU5FX3VucmVnaXN0ZXJfUkFORDsKLSsJCVVJX21ldGhvZF9nZXRfY2xvc2VyOwotKwkJZDJpX0tSQjVfRU5DREFUQTsKLSsJCU9DU1BfcmVxdWVzdF9vbmVyZXFfY291bnQ7Ci0rCQlPQ1NQX2Jhc2ljX3ZlcmlmeTsKLSsJCUtSQjVfQVVUSEVOVEJPRFlfZnJlZTsKLSsJCUFTTjFfaXRlbV9kMmk7Ci0rCQlBU04xX3ByaW1pdGl2ZV9mcmVlOwotKwkJaTJkX0VYVEVOREVEX0tFWV9VU0FHRTsKLSsJCWkyZF9PQ1NQX1NJR05BVFVSRTsKLSsJCWFzbjFfZW5jX3NhdmU7Ci0rCQlFTkdJTkVfbG9hZF9udXJvbjsKLSsJCV9vc3NsX29sZF9kZXNfcGNiY19lbmNyeXB0OwotKwkJUEtDUzEyX01BQ19EQVRBX2l0OwotKwkJT0NTUF9hY2NlcHRfcmVzcG9uc2VzX25ldzsKLSsJCWFzbjFfZG9fbG9jazsKLSsJCVBLQ1M3X0FUVFJfVkVSSUZZX2l0OwotKwkJS1JCNV9BUFJFUUJPRFlfaXQ7Ci0rCQlpMmRfT0NTUF9TSU5HTEVSRVNQOwotKwkJQVNOMV9pdGVtX2V4X25ldzsKLSsJCVVJX2FkZF92ZXJpZnlfc3RyaW5nOwotKwkJX29zc2xfb2xkX2Rlc19zZXRfa2V5OwotKwkJS1JCNV9QUklOQ05BTUVfaXQ7Ci0rCQlFVlBfRGVjcnlwdEluaXRfZXg7Ci0rCQlpMmRfT0NTUF9DRVJUSUQ7Ci0rCQlBU04xX2l0ZW1fZDJpX2JpbzsKLSsJCUVDX1BPSU5UX2RibDsKLSsJCWFzbjFfZ2V0X2Nob2ljZV9zZWxlY3RvcjsKLSsJCWkyZF9LUkI1X0NIRUNLU1VNOwotKwkJRU5HSU5FX3NldF90YWJsZV9mbGFnczsKLSsJCUFFU19vcHRpb25zOwotKwkJRU5HSU5FX2xvYWRfY2hpbDsKLSsJCU9DU1BfaWRfY21wOwotKwkJT0NTUF9CQVNJQ1JFU1BfbmV3OwotKwkJT0NTUF9SRVFVRVNUX2dldF9leHRfYnlfTklEOwotKwkJS1JCNV9BUFJFUV9pdDsKLSsJCUVOR0lORV9nZXRfZGVzdHJveV9mdW5jdGlvbjsKLSsJCUNPTkZfc2V0X25jb25mOwotKwkJQVNOMV9QUklOVEFCTEVfZnJlZTsKLSsJCU9DU1BfQkFTSUNSRVNQX2dldF9leHRfYnlfTklEOwotKwkJRElTVF9QT0lOVF9OQU1FX2l0OwotKwkJWDUwOVYzX2V4dGVuc2lvbnNfcHJpbnQ7Ci0rCQlfb3NzbF9vbGRfZGVzX2NmYjY0X2VuY3J5cHQ7Ci0rCQlYNTA5X1JFVk9LRURfYWRkMV9leHRfaTJkOwotKwkJX29zc2xfb2xkX2Rlc19vZmJfZW5jcnlwdDsKLSsJCUtSQjVfVEtUQk9EWV9uZXc7Ci0rCQlBU04xX09DVEVUX1NUUklOR19pdDsKLSsJCUVSUl9sb2FkX1VJX3N0cmluZ3M7Ci0rCQlpMmRfS1JCNV9FTkNLRVk7Ci0rCQlBU04xX3RlbXBsYXRlX25ldzsKLSsJCU9DU1BfU0lHTkFUVVJFX2ZyZWU7Ci0rCQlBU04xX2l0ZW1faTJkX2ZwOwotKwkJS1JCNV9QUklOQ05BTUVfZnJlZTsKLSsJCVBLQ1M3X1JFQ0lQX0lORk9faXQ7Ci0rCQlFWFRFTkRFRF9LRVlfVVNBR0VfaXQ7Ci0rCQlFQ19HRnBfc2ltcGxlX21ldGhvZDsKLSsJCUVDX0dST1VQX3ByZWNvbXB1dGVfbXVsdDsKLSsJCU9DU1BfcmVxdWVzdF9vbmVyZXFfZ2V0MDsKLSsJCVVJX21ldGhvZF9zZXRfd3JpdGVyOwotKwkJS1JCNV9BVVRIRU5UX25ldzsKLSsJCVg1MDlfQ1JMX0lORk9faXQ7Ci0rCQlEU09fc2V0X25hbWVfY29udmVydGVyOwotKwkJQUVTX3NldF9kZWNyeXB0X2tleTsKLSsJCVBLQ1M3X0RJR0VTVF9pdDsKLSsJCVBLQ1MxMl94NTA5MmNlcnRiYWc7Ci0rCQlFVlBfRGlnZXN0SW5pdF9leDsKLSsJCWkyYV9BQ0NFU1NfREVTQ1JJUFRJT047Ci0rCQlPQ1NQX1JFU1BPTlNFX2l0OwotKwkJUEtDUzdfRU5DX0NPTlRFTlRfaXQ7Ci0rCQlPQ1NQX3JlcXVlc3RfYWRkMF9pZDsKLSsJCUVDX1BPSU5UX21ha2VfYWZmaW5lOwotKwkJRFNPX2dldF9maWxlbmFtZTsKLSsJCU9DU1BfQ0VSVFNUQVRVU19pdDsKLSsJCU9DU1BfcmVxdWVzdF9hZGQxX2NlcnQ7Ci0rCQlVSV9nZXQwX291dHB1dF9zdHJpbmc7Ci0rCQlVSV9kdXBfdmVyaWZ5X3N0cmluZzsKLSsJCUJOX21vZF9sc2hpZnQ7Ci0rCQlLUkI1X0FVVEhEQVRBX2l0OwotKwkJYXNuMV9zZXRfY2hvaWNlX3NlbGVjdG9yOwotKwkJT0NTUF9iYXNpY19hZGQxX3N0YXR1czsKLSsJCU9DU1BfUkVTUElEX2ZyZWU7Ci0rCQlhc24xX2dldF9maWVsZF9wdHI7Ci0rCQlVSV9hZGRfaW5wdXRfc3RyaW5nOwotKwkJT0NTUF9DUkxJRF9pdDsKLSsJCWkyZF9LUkI1X0FVVEhFTlRCT0RZOwotKwkJT0NTUF9SRVFVRVNUX2dldF9leHRfY291bnQ7Ci0rCQlFTkdJTkVfbG9hZF9hdGFsbGE7Ci0rCQlYNTA5X05BTUVfaXQ7Ci0rCQlVU0VSTk9USUNFX2l0OwotKwkJT0NTUF9SRVFJTkZPX25ldzsKLSsJCU9DU1BfQkFTSUNSRVNQX2dldF9leHQ7Ci0rCQlDUllQVE9fZ2V0X2V4X2RhdGFfaW1wbGVtZW50YXRpb247Ci0rCQlDUllQVE9fZ2V0X2V4X2RhdGFfaW1wbDsKLSsJCUFTTjFfaXRlbV9wYWNrOwotKwkJaTJkX0tSQjVfRU5DREFUQTsKLSsJCVg1MDlfUFVSUE9TRV9zZXQ7Ci0rCQlYNTA5X1JFUV9JTkZPX2l0OwotKwkJVUlfbWV0aG9kX3NldF9vcGVuZXI7Ci0rCQlBU04xX2l0ZW1fZXhfZnJlZTsKLSsJCUFTTjFfQk9PTEVBTl9pdDsKLSsJCUVOR0lORV9nZXRfdGFibGVfZmxhZ3M7Ci0rCQlVSV9jcmVhdGVfbWV0aG9kOwotKwkJT0NTUF9PTkVSRVFfYWRkMV9leHRfaTJkOwotKwkJX3NoYWRvd19ERVNfY2hlY2tfa2V5OwotKwkJZDJpX09DU1BfUkVRSU5GTzsKLSsJCVVJX2FkZF9pbmZvX3N0cmluZzsKLSsJCVVJX2dldF9yZXN1bHRfbWluc2l6ZTsKLSsJCUFTTjFfTlVMTF9pdDsKLSsJCUJOX21vZF9sc2hpZnQxOwotKwkJZDJpX09DU1BfT05FUkVROwotKwkJT0NTUF9PTkVSRVFfbmV3OwotKwkJS1JCNV9USUNLRVRfaXQ7Ci0rCQlFVlBfYWVzXzE5Ml9jYmM7Ci0rCQlLUkI1X1RJQ0tFVF9mcmVlOwotKwkJVUlfbmV3OwotKwkJT0NTUF9yZXNwb25zZV9jcmVhdGU7Ci0rCQlfb3NzbF9vbGRfZGVzX3hjYmNfZW5jcnlwdDsKLSsJCVBLQ1M3X2l0OwotKwkJT0NTUF9SRVFVRVNUX2dldF9leHRfYnlfY3JpdGljYWw7Ci0rCQlPQ1NQX1JFUVVFU1RfZ2V0X2V4dF9ieV9jcml0OwotKwkJRU5HSU5FX3NldF9mbGFnczsKLSsJCV9vc3NsX29sZF9kZXNfZWNiX2VuY3J5cHQ7Ci0rCQlPQ1NQX3Jlc3BvbnNlX2dldDFfYmFzaWM7Ci0rCQlFVlBfRGlnZXN0OwotKwkJT0NTUF9PTkVSRVFfZGVsZXRlX2V4dDsKLSsJCUFTTjFfVEJPT0xFQU5faXQ7Ci0rCQlBU04xX2l0ZW1fbmV3OwotKwkJQVNOMV9USU1FX3RvX2dlbmVyYWxpemVkdGltZTsKLSsJCUJJR05VTV9pdDsKLSsJCUFFU19jYmNfZW5jcnlwdDsKLSsJCUVOR0lORV9nZXRfbG9hZF9wcml2a2V5X2Z1bmN0aW9uOwotKwkJRU5HSU5FX2dldF9sb2FkX3ByaXZrZXlfZm47Ci0rCQlPQ1NQX1JFU1BPTlNFX2ZyZWU7Ci0rCQlVSV9tZXRob2Rfc2V0X3JlYWRlcjsKLSsJCWkyZF9BU04xX1Q2MVNUUklORzsKLSsJCUVDX1BPSU5UX3NldF90b19pbmZpbml0eTsKLSsJCUVSUl9sb2FkX09DU1Bfc3RyaW5nczsKLSsJCUVDX1BPSU5UX3BvaW50Mm9jdDsKLSsJCUtSQjVfQVBSRVFfZnJlZTsKLSsJCUFTTjFfT0JKRUNUX2l0OwotKwkJT0NTUF9jcmxJRF9uZXc7Ci0rCQlPQ1NQX2NybElEMl9uZXc7Ci0rCQlDT05GX21vZHVsZXNfbG9hZF9maWxlOwotKwkJQ09ORl9pbW9kdWxlX3NldF91c3JfZGF0YTsKLSsJCUVOR0lORV9zZXRfZGVmYXVsdF9zdHJpbmc7Ci0rCQlDT05GX21vZHVsZV9nZXRfdXNyX2RhdGE7Ci0rCQlBU04xX2FkZF9vaWRfbW9kdWxlOwotKwkJQ09ORl9tb2R1bGVzX2ZpbmlzaDsKLSsJCU9QRU5TU0xfY29uZmlnOwotKwkJQ09ORl9tb2R1bGVzX3VubG9hZDsKLSsJCUNPTkZfaW1vZHVsZV9nZXRfdmFsdWU7Ci0rCQlDT05GX21vZHVsZV9zZXRfdXNyX2RhdGE7Ci0rCQlDT05GX3BhcnNlX2xpc3Q7Ci0rCQlDT05GX21vZHVsZV9hZGQ7Ci0rCQlDT05GX2dldDFfZGVmYXVsdF9jb25maWdfZmlsZTsKLSsJCUNPTkZfaW1vZHVsZV9nZXRfZmxhZ3M7Ci0rCQlDT05GX2ltb2R1bGVfZ2V0X21vZHVsZTsKLSsJCUNPTkZfbW9kdWxlc19sb2FkOwotKwkJQ09ORl9pbW9kdWxlX2dldF9uYW1lOwotKwkJRVJSX3BlZWtfdG9wX2Vycm9yOwotKwkJQ09ORl9pbW9kdWxlX2dldF91c3JfZGF0YTsKLSsJCUNPTkZfaW1vZHVsZV9zZXRfZmxhZ3M7Ci0rCQlFTkdJTkVfYWRkX2NvbmZfbW9kdWxlOwotKwkJRVJSX3BlZWtfbGFzdF9lcnJvcl9saW5lOwotKwkJRVJSX3BlZWtfbGFzdF9lcnJvcl9saW5lX2RhdGE7Ci0rCQlFUlJfcGVla19sYXN0X2Vycm9yOwotKwkJREVTX3JlYWRfMnBhc3N3b3JkczsKLSsJCURFU19yZWFkX3Bhc3N3b3JkOwotKwkJVUlfVVRJTF9yZWFkX3B3OwotKwkJVUlfVVRJTF9yZWFkX3B3X3N0cmluZzsKLSsJCUVOR0lORV9sb2FkX2FlcDsKLSsJCUVOR0lORV9sb2FkX3N1cmV3YXJlOwotKwkJT1BFTlNTTF9hZGRfYWxsX2FsZ29yaXRobXNfbm9jb25mOwotKwkJT1BFTlNTTF9hZGRfYWxsX2FsZ29fbm9jb25mOwotKwkJT1BFTlNTTF9hZGRfYWxsX2FsZ29yaXRobXNfY29uZjsKLSsJCU9QRU5TU0xfYWRkX2FsbF9hbGdvX2NvbmY7Ci0rCQlPUEVOU1NMX2xvYWRfYnVpbHRpbl9tb2R1bGVzOwotKwkJQUVTX29mYjEyOF9lbmNyeXB0OwotKwkJQUVTX2N0cjEyOF9lbmNyeXB0OwotKwkJQUVTX2NmYjEyOF9lbmNyeXB0OwotKwkJRU5HSU5FX2xvYWRfNDc1OGNjYTsKLSsJCV9vc3NsXzA5Nl9kZXNfcmFuZG9tX3NlZWQ7Ci0rCQlFVlBfYWVzXzI1Nl9vZmI7Ci0rCQlFVlBfYWVzXzE5Ml9vZmI7Ci0rCQlFVlBfYWVzXzEyOF9jZmIxMjg7Ci0rCQlFVlBfYWVzXzI1Nl9jZmIxMjg7Ci0rCQlFVlBfYWVzXzEyOF9vZmI7Ci0rCQlFVlBfYWVzXzE5Ml9jZmIxMjg7Ci0rCQlDT05GX21vZHVsZXNfZnJlZTsKLSsJCU5DT05GX2RlZmF1bHQ7Ci0rCQlPUEVOU1NMX25vX2NvbmZpZzsKLSsJCU5DT05GX1dJTjMyOwotKwkJQVNOMV9VTklWRVJTQUxTVFJJTkdfbmV3OwotKwkJRVZQX2Rlc19lZGVfZWNiOwotKwkJaTJkX0FTTjFfVU5JVkVSU0FMU1RSSU5HOwotKwkJQVNOMV9VTklWRVJTQUxTVFJJTkdfZnJlZTsKLSsJCUFTTjFfVU5JVkVSU0FMU1RSSU5HX2l0OwotKwkJZDJpX0FTTjFfVU5JVkVSU0FMU1RSSU5HOwotKwkJRVZQX2Rlc19lZGUzX2VjYjsKLSsJCVg1MDlfUkVRX3ByaW50X2V4OwotKwkJRU5HSU5FX3VwX3JlZjsKLSsJCUJVRl9NRU1fZ3Jvd19jbGVhbjsKLSsJCUNSWVBUT19yZWFsbG9jX2NsZWFuOwotKwkJQlVGX3N0cmxjYXQ7Ci0rCQlCSU9faW5kZW50OwotKwkJQlVGX3N0cmxjcHk7Ci0rCQlPcGVuU1NMRGllOwotKwkJT1BFTlNTTF9jbGVhbnNlOwotKwkJRU5HSU5FX3NldHVwX2JzZF9jcnlwdG9kZXY7Ci0rCQlFUlJfcmVsZWFzZV9lcnJfc3RhdGVfdGFibGU7Ci0rCQlFVlBfYWVzXzEyOF9jZmI4OwotKwkJRklQU19jb3JydXB0X3JzYTsKLSsJCUZJUFNfc2VsZnRlc3RfZGVzOwotKwkJRVZQX2Flc18xMjhfY2ZiMTsKLSsJCUVWUF9hZXNfMTkyX2NmYjg7Ci0rCQlGSVBTX21vZGVfc2V0OwotKwkJRklQU19zZWxmdGVzdF9kc2E7Ci0rCQlFVlBfYWVzXzI1Nl9jZmI4OwotKwkJRklQU19hbGxvd19tZDU7Ci0rCQlERVNfZWRlM19jZmJfZW5jcnlwdDsKLSsJCUVWUF9kZXNfZWRlM19jZmI4OwotKwkJRklQU19yYW5kX3NlZWRlZDsKLSsJCUFFU19jZmJyX2VuY3J5cHRfYmxvY2s7Ci0rCQlBRVNfY2ZiOF9lbmNyeXB0OwotKwkJRklQU19yYW5kX3NlZWQ7Ci0rCQlGSVBTX2NvcnJ1cHRfZGVzOwotKwkJRVZQX2Flc18xOTJfY2ZiMTsKLSsJCUZJUFNfc2VsZnRlc3RfYWVzOwotKwkJRklQU19zZXRfcHJuZ19rZXk7Ci0rCQlFVlBfZGVzX2NmYjg7Ci0rCQlGSVBTX2NvcnJ1cHRfZHNhOwotKwkJRklQU190ZXN0X21vZGU7Ci0rCQlGSVBTX3JhbmRfbWV0aG9kOwotKwkJRVZQX2Flc18yNTZfY2ZiMTsKLSsJCUVSUl9sb2FkX0ZJUFNfc3RyaW5nczsKLSsJCUZJUFNfY29ycnVwdF9hZXM7Ci0rCQlGSVBTX3NlbGZ0ZXN0X3NoYTE7Ci0rCQlGSVBTX3NlbGZ0ZXN0X3JzYTsKLSsJCUZJUFNfY29ycnVwdF9zaGExOwotKwkJRVZQX2Rlc19jZmIxOwotKwkJRklQU19kc2FfY2hlY2s7Ci0rCQlBRVNfY2ZiMV9lbmNyeXB0OwotKwkJRVZQX2Rlc19lZGUzX2NmYjE7Ci0rCQlGSVBTX3JhbmRfY2hlY2s7Ci0rCQlGSVBTX21kNV9hbGxvd2VkOwotKwkJRklQU19tb2RlOwotKwkJRklQU19zZWxmdGVzdF9mYWlsZWQ7Ci0rCQlza19pc19zb3J0ZWQ7Ci0rCQlYNTA5X2NoZWNrX2NhOwotKwkJSE1BQ19DVFhfc2V0X2ZsYWdzOwotKwkJZDJpX1BST1hZX0NFUlRfSU5GT19FWFRFTlNJT047Ci0rCQlQUk9YWV9QT0xJQ1lfaXQ7Ci0rCQlpMmRfUFJPWFlfUE9MSUNZOwotKwkJaTJkX1BST1hZX0NFUlRfSU5GT19FWFRFTlNJT047Ci0rCQlkMmlfUFJPWFlfUE9MSUNZOwotKwkJUFJPWFlfQ0VSVF9JTkZPX0VYVEVOU0lPTl9uZXc7Ci0rCQlQUk9YWV9DRVJUX0lORk9fRVhURU5TSU9OX2ZyZWU7Ci0rCQlQUk9YWV9DRVJUX0lORk9fRVhURU5TSU9OX2l0OwotKwkJUFJPWFlfUE9MSUNZX2ZyZWU7Ci0rCQlQUk9YWV9QT0xJQ1lfbmV3OwotKwkJQk5fTU9OVF9DVFhfc2V0X2xvY2tlZDsKLSsJCUZJUFNfc2VsZnRlc3Rfcm5nOwotKwkJRVZQX3NoYTM4NDsKLSsJCUVWUF9zaGE1MTI7Ci0rCQlFVlBfc2hhMjI0OwotKwkJRVZQX3NoYTI1NjsKLSsJCUZJUFNfc2VsZnRlc3RfaG1hYzsKLSsJCUZJUFNfY29ycnVwdF9ybmc7Ci0rCQlCTl9tb2RfZXhwX21vbnRfY29uc3R0aW1lOwotKwkJUlNBX1g5MzFfaGFzaF9pZDsKLSsJCVJTQV9wYWRkaW5nX2NoZWNrX1g5MzE7Ci0rCQlSU0FfdmVyaWZ5X1BLQ1MxX1BTUzsKLSsJCVJTQV9wYWRkaW5nX2FkZF9YOTMxOwotKwkJUlNBX3BhZGRpbmdfYWRkX1BLQ1MxX1BTUzsKLSsJCVBLQ1MxX01HRjE7Ci0rCQlCTl9YOTMxX2dlbmVyYXRlX1hwcTsKLSsJCVJTQV9YOTMxX2dlbmVyYXRlX2tleTsKLSsJCUJOX1g5MzFfZGVyaXZlX3ByaW1lOwotKwkJQk5fWDkzMV9nZW5lcmF0ZV9wcmltZTsKLSsJCVJTQV9YOTMxX2Rlcml2ZTsKLSsJCUJJT19uZXdfZGdyYW07Ci0rCQlCTl9nZXQwX25pc3RfcHJpbWVfMzg0OwotKwkJRVJSX3NldF9tYXJrOwotKwkJWDUwOV9TVE9SRV9DVFhfc2V0MF9jcmxzOwotKwkJRU5HSU5FX3NldF9TVE9SRTsKLSsJCUVOR0lORV9yZWdpc3Rlcl9FQ0RTQTsKLSsJCVNUT1JFX21ldGhfc2V0X2xpc3Rfc3RhcnRfZm47Ci0rCQlTVE9SRV9tZXRob2Rfc2V0X2xpc3Rfc3RhcnRfZnVuY3Rpb247Ci0rCQlCTl9CTElORElOR19pbnZlcnRfZXg7Ci0rCQlOQU1FX0NPTlNUUkFJTlRTX2ZyZWU7Ci0rCQlTVE9SRV9BVFRSX0lORk9fc2V0X251bWJlcjsKLSsJCUJOX0JMSU5ESU5HX2dldF90aHJlYWRfaWQ7Ci0rCQlYNTA5X1NUT1JFX0NUWF9zZXQwX3BhcmFtOwotKwkJUE9MSUNZX01BUFBJTkdfaXQ7Ci0rCQlTVE9SRV9wYXJzZV9hdHRyc19zdGFydDsKLSsJCVBPTElDWV9DT05TVFJBSU5UU19mcmVlOwotKwkJRVZQX1BLRVlfYWRkMV9hdHRyX2J5X05JRDsKLSsJCUJOX25pc3RfbW9kXzE5MjsKLSsJCUVDX0dST1VQX2dldF90cmlub21pYWxfYmFzaXM7Ci0rCQlTVE9SRV9zZXRfbWV0aG9kOwotKwkJR0VORVJBTF9TVUJUUkVFX2ZyZWU7Ci0rCQlOQU1FX0NPTlNUUkFJTlRTX2l0OwotKwkJRUNESF9nZXRfZGVmYXVsdF9tZXRob2Q7Ci0rCQlQS0NTMTJfYWRkX3NhZmU7Ci0rCQlFQ19LRVlfbmV3X2J5X2N1cnZlX25hbWU7Ci0rCQlTVE9SRV9tZXRoX2dldF91cGRhdGVfc3RvcmVfZm47Ci0rCQlTVE9SRV9tZXRob2RfZ2V0X3VwZGF0ZV9zdG9yZV9mdW5jdGlvbjsKLSsJCUVOR0lORV9yZWdpc3Rlcl9FQ0RIOwotKwkJU0hBNTEyX1VwZGF0ZTsKLSsJCWkyZF9FQ1ByaXZhdGVLZXk7Ci0rCQlCTl9nZXQwX25pc3RfcHJpbWVfMTkyOwotKwkJU1RPUkVfbW9kaWZ5X2NlcnRpZmljYXRlOwotKwkJRUNfUE9JTlRfc2V0X2FmZmluZV9jb29yZGluYXRlc19HRjJtOwotKwkJRUNfUE9JTlRfc2V0X2FmZmluZV9jb29yZHNfR0YybTsKLSsJCUJOX0dGMm1fbW9kX2V4cF9hcnI7Ci0rCQlTVE9SRV9BVFRSX0lORk9fbW9kaWZ5X251bWJlcjsKLSsJCVg1MDlfa2V5aWRfZ2V0MDsKLSsJCUVOR0lORV9sb2FkX2dtcDsKLSsJCXBpdGVtX25ldzsKLSsJCUJOX0dGMm1fbW9kX211bF9hcnI7Ci0rCQlTVE9SRV9saXN0X3B1YmxpY19rZXlfZW5kcDsKLSsJCW8yaV9FQ1B1YmxpY0tleTsKLSsJCUVDX0tFWV9jb3B5OwotKwkJQklPX2R1bXBfZnA7Ci0rCQlYNTA5X3BvbGljeV9ub2RlX2dldDBfcGFyZW50OwotKwkJRUNfR1JPVVBfY2hlY2tfZGlzY3JpbWluYW50OwotKwkJaTJvX0VDUHVibGljS2V5OwotKwkJRUNfS0VZX3ByZWNvbXB1dGVfbXVsdDsKLSsJCWEyaV9JUEFERFJFU1M7Ci0rCQlTVE9SRV9tZXRoX3NldF9pbml0aWFsaXNlX2ZuOwotKwkJU1RPUkVfbWV0aG9kX3NldF9pbml0aWFsaXNlX2Z1bmN0aW9uOwotKwkJWDUwOV9TVE9SRV9DVFhfc2V0X2RlcHRoOwotKwkJWDUwOV9WRVJJRllfUEFSQU1faW5oZXJpdDsKLSsJCUVDX1BPSU5UX3BvaW50MmJuOwotKwkJU1RPUkVfQVRUUl9JTkZPX3NldF9kbjsKLSsJCVg1MDlfcG9saWN5X3RyZWVfZ2V0MF9wb2xpY2llczsKLSsJCUVDX0dST1VQX25ld19jdXJ2ZV9HRjJtOwotKwkJU1RPUkVfZGVzdHJveV9tZXRob2Q7Ci0rCQlFTkdJTkVfdW5yZWdpc3Rlcl9TVE9SRTsKLSsJCUVWUF9QS0VZX2dldDFfRUNfS0VZOwotKwkJU1RPUkVfQVRUUl9JTkZPX2dldDBfbnVtYmVyOwotKwkJRU5HSU5FX2dldF9kZWZhdWx0X0VDREg7Ci0rCQlFQ19LRVlfZ2V0X2NvbnZfZm9ybTsKLSsJCUFTTjFfT0NURVRfU1RSSU5HX05ERUZfaXQ7Ci0rCQlTVE9SRV9kZWxldGVfcHVibGljX2tleTsKLSsJCVNUT1JFX2dldF9wdWJsaWNfa2V5OwotKwkJU1RPUkVfbW9kaWZ5X2FyYml0cmFyeTsKLSsJCUVOR0lORV9nZXRfc3RhdGljX3N0YXRlOwotKwkJcHF1ZXVlX2l0ZXJhdG9yOwotKwkJRUNEU0FfU0lHX25ldzsKLSsJCU9QRU5TU0xfRElSX2VuZDsKLSsJCUJOX0dGMm1fbW9kX3NxcjsKLSsJCUVDX1BPSU5UX2JuMnBvaW50OwotKwkJWDUwOV9WRVJJRllfUEFSQU1fc2V0X2RlcHRoOwotKwkJRUNfS0VZX3NldF9hc24xX2ZsYWc7Ci0rCQlTVE9SRV9nZXRfbWV0aG9kOwotKwkJRUNfS0VZX2dldF9rZXlfbWV0aG9kX2RhdGE7Ci0rCQlFQ0RTQV9zaWduX2V4OwotKwkJU1RPUkVfcGFyc2VfYXR0cnNfZW5kOwotKwkJRUNfR1JPVVBfZ2V0X3BvaW50X2NvbnZlcnNpb25fZm9ybTsKLSsJCUVDX0dST1VQX2dldF9wb2ludF9jb252X2Zvcm07Ci0rCQlTVE9SRV9tZXRob2Rfc2V0X3N0b3JlX2Z1bmN0aW9uOwotKwkJU1RPUkVfQVRUUl9JTkZPX2luOwotKwkJUEVNX3JlYWRfYmlvX0VDUEtQYXJhbWV0ZXJzOwotKwkJRUNfR1JPVVBfZ2V0X3BlbnRhbm9taWFsX2Jhc2lzOwotKwkJRVZQX1BLRVlfYWRkMV9hdHRyX2J5X3R4dDsKLSsJCUJOX0JMSU5ESU5HX3NldF9mbGFnczsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX3NldDFfcG9saWNpZXM7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXQxX25hbWU7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXRfcHVycG9zZTsKLSsJCVNUT1JFX2dldF9udW1iZXI7Ci0rCQlFQ0RTQV9zaWduX3NldHVwOwotKwkJQk5fR0YybV9tb2Rfc29sdmVfcXVhZF9hcnI7Ci0rCQlFQ19LRVlfdXBfcmVmOwotKwkJUE9MSUNZX01BUFBJTkdfZnJlZTsKLSsJCUJOX0dGMm1fbW9kX2RpdjsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX3NldF9mbGFnczsKLSsJCUVDX0tFWV9mcmVlOwotKwkJU1RPUkVfbWV0aF9zZXRfbGlzdF9uZXh0X2ZuOwotKwkJU1RPUkVfbWV0aG9kX3NldF9saXN0X25leHRfZnVuY3Rpb247Ci0rCQlQRU1fd3JpdGVfYmlvX0VDUHJpdmF0ZUtleTsKLSsJCWQyaV9FQ19QVUJLRVk7Ci0rCQlTVE9SRV9tZXRoX2dldF9nZW5lcmF0ZV9mbjsKLSsJCVNUT1JFX21ldGhvZF9nZXRfZ2VuZXJhdGVfZnVuY3Rpb247Ci0rCQlTVE9SRV9tZXRoX3NldF9saXN0X2VuZF9mbjsKLSsJCVNUT1JFX21ldGhvZF9zZXRfbGlzdF9lbmRfZnVuY3Rpb247Ci0rCQlwcXVldWVfcHJpbnQ7Ci0rCQlFQ19HUk9VUF9oYXZlX3ByZWNvbXB1dGVfbXVsdDsKLSsJCUVDX0tFWV9wcmludF9mcDsKLSsJCUJOX0dGMm1fbW9kX2FycjsKLSsJCVBFTV93cml0ZV9iaW9fWDUwOV9DRVJUX1BBSVI7Ci0rCQlFVlBfUEtFWV9jbXA7Ci0rCQlYNTA5X3BvbGljeV9sZXZlbF9ub2RlX2NvdW50OwotKwkJU1RPUkVfbmV3X2VuZ2luZTsKLSsJCVNUT1JFX2xpc3RfcHVibGljX2tleV9zdGFydDsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX25ldzsKLSsJCUVDREhfZ2V0X2V4X2RhdGE7Ci0rCQlFVlBfUEtFWV9nZXRfYXR0cjsKLSsJCUVDRFNBX2RvX3NpZ247Ci0rCQlFTkdJTkVfdW5yZWdpc3Rlcl9FQ0RIOwotKwkJRUNESF9PcGVuU1NMOwotKwkJRUNfS0VZX3NldF9jb252X2Zvcm07Ci0rCQlFQ19QT0lOVF9kdXA7Ci0rCQlHRU5FUkFMX1NVQlRSRUVfbmV3OwotKwkJU1RPUkVfbGlzdF9jcmxfZW5kcDsKLSsJCUVDX2dldF9idWlsdGluX2N1cnZlczsKLSsJCVg1MDlfcG9saWN5X25vZGVfZ2V0MF9xdWFsaWZpZXJzOwotKwkJWDUwOV9wY3lfbm9kZV9nZXQwX3F1YWxpZmllcnM7Ci0rCQlTVE9SRV9saXN0X2NybF9lbmQ7Ci0rCQlFVlBfUEtFWV9zZXQxX0VDX0tFWTsKLSsJCUJOX0dGMm1fbW9kX3NxcnRfYXJyOwotKwkJaTJkX0VDUHJpdmF0ZUtleV9iaW87Ci0rCQlFQ1BLUGFyYW1ldGVyc19wcmludF9mcDsKLSsJCXBxdWV1ZV9maW5kOwotKwkJRUNEU0FfU0lHX2ZyZWU7Ci0rCQlQRU1fd3JpdGVfYmlvX0VDUEtQYXJhbWV0ZXJzOwotKwkJU1RPUkVfbWV0aG9kX3NldF9jdHJsX2Z1bmN0aW9uOwotKwkJU1RPUkVfbGlzdF9wdWJsaWNfa2V5X2VuZDsKLSsJCUVDX0tFWV9zZXRfcHJpdmF0ZV9rZXk7Ci0rCQlwcXVldWVfcGVlazsKLSsJCVNUT1JFX2dldF9hcmJpdHJhcnk7Ci0rCQlTVE9SRV9zdG9yZV9jcmw7Ci0rCQlYNTA5X3BvbGljeV9ub2RlX2dldDBfcG9saWN5OwotKwkJUEtDUzEyX2FkZF9zYWZlczsKLSsJCUJOX0JMSU5ESU5HX2NvbnZlcnRfZXg7Ci0rCQlYNTA5X3BvbGljeV90cmVlX2ZyZWU7Ci0rCQlPUEVOU1NMX2lhMzJjYXBfbG9jOwotKwkJQk5fR0YybV9wb2x5MmFycjsKLSsJCVNUT1JFX2N0cmw7Ci0rCQlTVE9SRV9BVFRSX0lORk9fY29tcGFyZTsKLSsJCUJOX2dldDBfbmlzdF9wcmltZV8yMjQ7Ci0rCQlpMmRfRUNQYXJhbWV0ZXJzOwotKwkJaTJkX0VDUEtQYXJhbWV0ZXJzOwotKwkJQk5fR0VOQ0JfY2FsbDsKLSsJCWQyaV9FQ1BLUGFyYW1ldGVyczsKLSsJCVNUT1JFX21ldGhfc2V0X2dlbmVyYXRlX2ZuOwotKwkJU1RPUkVfbWV0aG9kX3NldF9nZW5lcmF0ZV9mdW5jdGlvbjsKLSsJCUVOR0lORV9zZXRfRUNESDsKLSsJCU5BTUVfQ09OU1RSQUlOVFNfbmV3OwotKwkJU0hBMjU2X0luaXQ7Ci0rCQlFQ19LRVlfZ2V0MF9wdWJsaWNfa2V5OwotKwkJUEVNX3dyaXRlX2Jpb19FQ19QVUJLRVk7Ci0rCQlTVE9SRV9BVFRSX0lORk9fc2V0X2NzdHI7Ci0rCQlTVE9SRV9saXN0X2NybF9uZXh0OwotKwkJU1RPUkVfQVRUUl9JTkZPX2luX3JhbmdlOwotKwkJRUNQYXJhbWV0ZXJzX3ByaW50OwotKwkJU1RPUkVfbWV0aF9zZXRfZGVsZXRlX2ZuOwotKwkJU1RPUkVfbWV0aG9kX3NldF9kZWxldGVfZnVuY3Rpb247Ci0rCQlTVE9SRV9saXN0X2NlcnRpZmljYXRlX25leHQ7Ci0rCQlBU04xX2dlbmVyYXRlX25jb25mOwotKwkJQlVGX21lbWR1cDsKLSsJCUJOX0dGMm1fbW9kX211bDsKLSsJCVNUT1JFX21ldGhfZ2V0X2xpc3RfbmV4dF9mbjsKLSsJCVNUT1JFX21ldGhvZF9nZXRfbGlzdF9uZXh0X2Z1bmN0aW9uOwotKwkJU1RPUkVfQVRUUl9JTkZPX2dldDBfZG47Ci0rCQlTVE9SRV9saXN0X3ByaXZhdGVfa2V5X25leHQ7Ci0rCQlFQ19HUk9VUF9zZXRfc2VlZDsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX3NldF90cnVzdDsKLSsJCVNUT1JFX0FUVFJfSU5GT19mcmVlOwotKwkJU1RPUkVfZ2V0X3ByaXZhdGVfa2V5OwotKwkJRVZQX1BLRVlfZ2V0X2F0dHJfY291bnQ7Ci0rCQlTVE9SRV9BVFRSX0lORk9fbmV3OwotKwkJRUNfR1JPVVBfZ2V0X2N1cnZlX0dGMm07Ci0rCQlTVE9SRV9tZXRoX3NldF9yZXZva2VfZm47Ci0rCQlTVE9SRV9tZXRob2Rfc2V0X3Jldm9rZV9mdW5jdGlvbjsKLSsJCVNUT1JFX3N0b3JlX251bWJlcjsKLSsJCUJOX2lzX3ByaW1lX2V4OwotKwkJU1RPUkVfcmV2b2tlX3B1YmxpY19rZXk7Ci0rCQlYNTA5X1NUT1JFX0NUWF9nZXQwX3BhcmFtOwotKwkJU1RPUkVfZGVsZXRlX2FyYml0cmFyeTsKLSsJCVBFTV9yZWFkX1g1MDlfQ0VSVF9QQUlSOwotKwkJWDUwOV9TVE9SRV9zZXRfZGVwdGg7Ci0rCQlFQ0RTQV9nZXRfZXhfZGF0YTsKLSsJCVNIQTIyNDsKLSsJCUJJT19kdW1wX2luZGVudF9mcDsKLSsJCUVDX0tFWV9zZXRfZ3JvdXA7Ci0rCQlCVUZfc3RybmR1cDsKLSsJCVNUT1JFX2xpc3RfY2VydGlmaWNhdGVfc3RhcnQ7Ci0rCQlCTl9HRjJtX21vZDsKLSsJCVg1MDlfUkVRX2NoZWNrX3ByaXZhdGVfa2V5OwotKwkJRUNfR1JPVVBfZ2V0X3NlZWRfbGVuOwotKwkJRVJSX2xvYWRfU1RPUkVfc3RyaW5nczsKLSsJCVBFTV9yZWFkX2Jpb19FQ19QVUJLRVk7Ci0rCQlTVE9SRV9saXN0X3ByaXZhdGVfa2V5X2VuZDsKLSsJCWkyZF9FQ19QVUJLRVk7Ci0rCQlFQ0RTQV9nZXRfZGVmYXVsdF9tZXRob2Q7Ci0rCQlBU04xX3B1dF9lb2M7Ci0rCQlYNTA5X1NUT1JFX0NUWF9nZXRfZXhwbGljaXRfcG9saWN5OwotKwkJWDUwOV9TVE9SRV9DVFhfZ2V0X2V4cGxfcG9saWN5OwotKwkJWDUwOV9WRVJJRllfUEFSQU1fdGFibGVfY2xlYW51cDsKLSsJCVNUT1JFX21vZGlmeV9wcml2YXRlX2tleTsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX2ZyZWU7Ci0rCQlFQ19NRVRIT0RfZ2V0X2ZpZWxkX3R5cGU7Ci0rCQlFQ19HRnBfbmlzdF9tZXRob2Q7Ci0rCQlTVE9SRV9tZXRoX3NldF9tb2RpZnlfZm47Ci0rCQlTVE9SRV9tZXRob2Rfc2V0X21vZGlmeV9mdW5jdGlvbjsKLSsJCVNUT1JFX3BhcnNlX2F0dHJzX25leHQ7Ci0rCQlFTkdJTkVfbG9hZF9wYWRsb2NrOwotKwkJRUNfR1JPVVBfc2V0X2N1cnZlX25hbWU7Ci0rCQlYNTA5X0NFUlRfUEFJUl9pdDsKLSsJCVNUT1JFX21ldGhfZ2V0X3Jldm9rZV9mbjsKLSsJCVNUT1JFX21ldGhvZF9nZXRfcmV2b2tlX2Z1bmN0aW9uOwotKwkJU1RPUkVfbWV0aG9kX3NldF9nZXRfZnVuY3Rpb247Ci0rCQlTVE9SRV9tb2RpZnlfbnVtYmVyOwotKwkJU1RPUkVfbWV0aG9kX2dldF9zdG9yZV9mdW5jdGlvbjsKLSsJCVNUT1JFX3N0b3JlX3ByaXZhdGVfa2V5OwotKwkJQk5fR0YybV9tb2Rfc3FyX2FycjsKLSsJCVJTQV9zZXR1cF9ibGluZGluZzsKLSsJCUJJT19zX2RhdGFncmFtOwotKwkJU1RPUkVfTWVtb3J5OwotKwkJc2tfZmluZF9leDsKLSsJCUVDX0dST1VQX3NldF9jdXJ2ZV9HRjJtOwotKwkJRU5HSU5FX3NldF9kZWZhdWx0X0VDRFNBOwotKwkJUE9MSUNZX0NPTlNUUkFJTlRTX25ldzsKLSsJCUJOX0dGMm1fbW9kX3NxcnQ7Ci0rCQlFQ0RIX3NldF9kZWZhdWx0X21ldGhvZDsKLSsJCUVDX0tFWV9nZW5lcmF0ZV9rZXk7Ci0rCQlTSEEzODRfVXBkYXRlOwotKwkJQk5fR0YybV9hcnIycG9seTsKLSsJCVNUT1JFX21ldGhvZF9nZXRfZ2V0X2Z1bmN0aW9uOwotKwkJU1RPUkVfbWV0aF9zZXRfY2xlYW51cF9mbjsKLSsJCVNUT1JFX21ldGhvZF9zZXRfY2xlYW51cF9mdW5jdGlvbjsKLSsJCUVDX0dST1VQX2NoZWNrOwotKwkJZDJpX0VDUHJpdmF0ZUtleV9iaW87Ci0rCQlFQ19LRVlfaW5zZXJ0X2tleV9tZXRob2RfZGF0YTsKLSsJCVNUT1JFX21ldGhfZ2V0X2xvY2tfc3RvcmVfZm47Ci0rCQlTVE9SRV9tZXRob2RfZ2V0X2xvY2tfc3RvcmVfZnVuY3Rpb247Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9nZXRfZGVwdGg7Ci0rCQlTSEEyMjRfRmluYWw7Ci0rCQlTVE9SRV9tZXRoX3NldF91cGRhdGVfc3RvcmVfZm47Ci0rCQlTVE9SRV9tZXRob2Rfc2V0X3VwZGF0ZV9zdG9yZV9mdW5jdGlvbjsKLSsJCVNIQTIyNF9VcGRhdGU7Ci0rCQlkMmlfRUNQcml2YXRlS2V5OwotKwkJQVNOMV9pdGVtX25kZWZfaTJkOwotKwkJU1RPUkVfZGVsZXRlX3ByaXZhdGVfa2V5OwotKwkJRVJSX3BvcF90b19tYXJrOwotKwkJRU5HSU5FX3JlZ2lzdGVyX2FsbF9TVE9SRTsKLSsJCVg1MDlfcG9saWN5X2xldmVsX2dldDBfbm9kZTsKLSsJCWkyZF9QS0NTN19OREVGOwotKwkJRUNfR1JPVVBfZ2V0X2RlZ3JlZTsKLSsJCUFTTjFfZ2VuZXJhdGVfdjM7Ci0rCQlTVE9SRV9BVFRSX0lORk9fbW9kaWZ5X2NzdHI7Ci0rCQlYNTA5X3BvbGljeV90cmVlX2xldmVsX2NvdW50OwotKwkJQk5fR0YybV9hZGQ7Ci0rCQlFQ19LRVlfZ2V0MF9ncm91cDsKLSsJCVNUT1JFX2dlbmVyYXRlX2NybDsKLSsJCVNUT1JFX3N0b3JlX3B1YmxpY19rZXk7Ci0rCQlYNTA5X0NFUlRfUEFJUl9mcmVlOwotKwkJU1RPUkVfcmV2b2tlX3ByaXZhdGVfa2V5OwotKwkJQk5fbmlzdF9tb2RfMjI0OwotKwkJU0hBNTEyX0ZpbmFsOwotKwkJU1RPUkVfQVRUUl9JTkZPX21vZGlmeV9kbjsKLSsJCVNUT1JFX21ldGhfZ2V0X2luaXRpYWxpc2VfZm47Ci0rCQlTVE9SRV9tZXRob2RfZ2V0X2luaXRpYWxpc2VfZnVuY3Rpb247Ci0rCQlTVE9SRV9kZWxldGVfbnVtYmVyOwotKwkJaTJkX0VDX1BVQktFWV9iaW87Ci0rCQlCSU9fZGdyYW1fbm9uX2ZhdGFsX2Vycm9yOwotKwkJRUNfR1JPVVBfZ2V0X2FzbjFfZmxhZzsKLSsJCVNUT1JFX0FUVFJfSU5GT19pbl9leDsKLSsJCVNUT1JFX2xpc3RfY3JsX3N0YXJ0OwotKwkJRUNESF9nZXRfZXhfbmV3X2luZGV4OwotKwkJU1RPUkVfbWV0aF9nZXRfbW9kaWZ5X2ZuOwotKwkJU1RPUkVfbWV0aG9kX2dldF9tb2RpZnlfZnVuY3Rpb247Ci0rCQl2MmlfQVNOMV9CSVRfU1RSSU5HOwotKwkJU1RPUkVfc3RvcmVfY2VydGlmaWNhdGU7Ci0rCQlPQkpfYnNlYXJjaF9leDsKLSsJCVg1MDlfU1RPUkVfQ1RYX3NldF9kZWZhdWx0OwotKwkJU1RPUkVfQVRUUl9JTkZPX3NldF9zaGExc3RyOwotKwkJQk5fR0YybV9tb2RfaW52OwotKwkJQk5fR0YybV9tb2RfZXhwOwotKwkJU1RPUkVfbW9kaWZ5X3B1YmxpY19rZXk7Ci0rCQlTVE9SRV9tZXRoX2dldF9saXN0X3N0YXJ0X2ZuOwotKwkJU1RPUkVfbWV0aG9kX2dldF9saXN0X3N0YXJ0X2Z1bmN0aW9uOwotKwkJRUNfR1JPVVBfZ2V0MF9zZWVkOwotKwkJU1RPUkVfc3RvcmVfYXJiaXRyYXJ5OwotKwkJU1RPUkVfbWV0aF9zZXRfdW5sb2NrX3N0b3JlX2ZuOwotKwkJU1RPUkVfbWV0aG9kX3NldF91bmxvY2tfc3RvcmVfZnVuY3Rpb247Ci0rCQlCTl9HRjJtX21vZF9kaXZfYXJyOwotKwkJRU5HSU5FX3NldF9FQ0RTQTsKLSsJCVNUT1JFX2NyZWF0ZV9tZXRob2Q7Ci0rCQlFQ1BLUGFyYW1ldGVyc19wcmludDsKLSsJCUVDX0tFWV9nZXQwX3ByaXZhdGVfa2V5OwotKwkJUEVNX3dyaXRlX0VDX1BVQktFWTsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX3NldDE7Ci0rCQlFQ0RIX3NldF9tZXRob2Q7Ci0rCQl2MmlfR0VORVJBTF9OQU1FX2V4OwotKwkJRUNESF9zZXRfZXhfZGF0YTsKLSsJCVNUT1JFX2dlbmVyYXRlX2tleTsKLSsJCUJOX25pc3RfbW9kXzUyMTsKLSsJCVg1MDlfcG9saWN5X3RyZWVfZ2V0MF9sZXZlbDsKLSsJCUVDX0dST1VQX3NldF9wb2ludF9jb252ZXJzaW9uX2Zvcm07Ci0rCQlFQ19HUk9VUF9zZXRfcG9pbnRfY29udl9mb3JtOwotKwkJUEVNX3JlYWRfRUNfUFVCS0VZOwotKwkJaTJkX0VDRFNBX1NJRzsKLSsJCUVDRFNBX09wZW5TU0w7Ci0rCQlTVE9SRV9kZWxldGVfY3JsOwotKwkJRUNfS0VZX2dldF9lbmNfZmxhZ3M7Ci0rCQlBU04xX2NvbnN0X2NoZWNrX2luZmluaXRlX2VuZDsKLSsJCUVWUF9QS0VZX2RlbGV0ZV9hdHRyOwotKwkJRUNEU0Ffc2V0X2RlZmF1bHRfbWV0aG9kOwotKwkJRUNfUE9JTlRfc2V0X2NvbXByZXNzZWRfY29vcmRpbmF0ZXNfR0YybTsKLSsJCUVDX1BPSU5UX3NldF9jb21wcl9jb29yZHNfR0YybTsKLSsJCUVDX0dST1VQX2NtcDsKLSsJCVNUT1JFX3Jldm9rZV9jZXJ0aWZpY2F0ZTsKLSsJCUJOX2dldDBfbmlzdF9wcmltZV8yNTY7Ci0rCQlTVE9SRV9tZXRoX2dldF9kZWxldGVfZm47Ci0rCQlTVE9SRV9tZXRob2RfZ2V0X2RlbGV0ZV9mdW5jdGlvbjsKLSsJCVNIQTIyNF9Jbml0OwotKwkJUEVNX3JlYWRfRUNQcml2YXRlS2V5OwotKwkJU0hBNTEyX0luaXQ7Ci0rCQlTVE9SRV9wYXJzZV9hdHRyc19lbmRwOwotKwkJQk5fc2V0X25lZ2F0aXZlOwotKwkJRVJSX2xvYWRfRUNEU0Ffc3RyaW5nczsKLSsJCUVDX0dST1VQX2dldF9iYXNpc190eXBlOwotKwkJU1RPUkVfbGlzdF9wdWJsaWNfa2V5X25leHQ7Ci0rCQlpMnZfQVNOMV9CSVRfU1RSSU5HOwotKwkJU1RPUkVfT0JKRUNUX2ZyZWU7Ci0rCQlCTl9uaXN0X21vZF8zODQ7Ci0rCQlpMmRfWDUwOV9DRVJUX1BBSVI7Ci0rCQlQRU1fd3JpdGVfRUNQS1BhcmFtZXRlcnM7Ci0rCQlFQ0RIX2NvbXB1dGVfa2V5OwotKwkJU1RPUkVfQVRUUl9JTkZPX2dldDBfc2hhMXN0cjsKLSsJCUVOR0lORV9yZWdpc3Rlcl9hbGxfRUNESDsKLSsJCXBxdWV1ZV9wb3A7Ci0rCQlTVE9SRV9BVFRSX0lORk9fZ2V0MF9jc3RyOwotKwkJUE9MSUNZX0NPTlNUUkFJTlRTX2l0OwotKwkJU1RPUkVfZ2V0X2V4X25ld19pbmRleDsKLSsJCUVWUF9QS0VZX2dldF9hdHRyX2J5X09CSjsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX2FkZDBfcG9saWN5OwotKwkJQk5fR0YybV9tb2Rfc29sdmVfcXVhZDsKLSsJCVNIQTI1NjsKLSsJCWkyZF9FQ1ByaXZhdGVLZXlfZnA7Ci0rCQlYNTA5X3BvbGljeV90cmVlX2dldDBfdXNlcl9wb2xpY2llczsKLSsJCVg1MDlfcGN5X3RyZWVfZ2V0MF91c3JfcG9saWNpZXM7Ci0rCQlPUEVOU1NMX0RJUl9yZWFkOwotKwkJRU5HSU5FX3JlZ2lzdGVyX2FsbF9FQ0RTQTsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX2xvb2t1cDsKLSsJCUVDX1BPSU5UX2dldF9hZmZpbmVfY29vcmRpbmF0ZXNfR0YybTsKLSsJCUVDX1BPSU5UX2dldF9hZmZpbmVfY29vcmRzX0dGMm07Ci0rCQlFQ19HUk9VUF9kdXA7Ci0rCQlFTkdJTkVfZ2V0X2RlZmF1bHRfRUNEU0E7Ci0rCQlFQ19LRVlfbmV3OwotKwkJU0hBMjU2X1RyYW5zZm9ybTsKLSsJCUVDX0tFWV9zZXRfZW5jX2ZsYWdzOwotKwkJRUNEU0FfdmVyaWZ5OwotKwkJRUNfUE9JTlRfcG9pbnQyaGV4OwotKwkJRU5HSU5FX2dldF9TVE9SRTsKLSsJCVNIQTUxMjsKLSsJCVNUT1JFX2dldF9jZXJ0aWZpY2F0ZTsKLSsJCUVDRFNBX2RvX3NpZ25fZXg7Ci0rCQlFQ0RTQV9kb192ZXJpZnk7Ci0rCQlkMmlfRUNQcml2YXRlS2V5X2ZwOwotKwkJU1RPUkVfZGVsZXRlX2NlcnRpZmljYXRlOwotKwkJU0hBNTEyX1RyYW5zZm9ybTsKLSsJCVg1MDlfU1RPUkVfc2V0MV9wYXJhbTsKLSsJCVNUT1JFX21ldGhvZF9nZXRfY3RybF9mdW5jdGlvbjsKLSsJCVNUT1JFX2ZyZWU7Ci0rCQlQRU1fd3JpdGVfRUNQcml2YXRlS2V5OwotKwkJU1RPUkVfbWV0aF9nZXRfdW5sb2NrX3N0b3JlX2ZuOwotKwkJU1RPUkVfbWV0aG9kX2dldF91bmxvY2tfc3RvcmVfZnVuY3Rpb247Ci0rCQlTVE9SRV9nZXRfZXhfZGF0YTsKLSsJCUVDX0tFWV9zZXRfcHVibGljX2tleTsKLSsJCVBFTV9yZWFkX0VDUEtQYXJhbWV0ZXJzOwotKwkJWDUwOV9DRVJUX1BBSVJfbmV3OwotKwkJRU5HSU5FX3JlZ2lzdGVyX1NUT1JFOwotKwkJUlNBX2dlbmVyYXRlX2tleV9leDsKLSsJCURTQV9nZW5lcmF0ZV9wYXJhbWV0ZXJzX2V4OwotKwkJRUNQYXJhbWV0ZXJzX3ByaW50X2ZwOwotKwkJWDUwOVYzX05BTUVfZnJvbV9zZWN0aW9uOwotKwkJRVZQX1BLRVlfYWRkMV9hdHRyOwotKwkJU1RPUkVfbW9kaWZ5X2NybDsKLSsJCVNUT1JFX2xpc3RfcHJpdmF0ZV9rZXlfc3RhcnQ7Ci0rCQlQT0xJQ1lfTUFQUElOR1NfaXQ7Ci0rCQlHRU5FUkFMX1NVQlRSRUVfaXQ7Ci0rCQlFQ19HUk9VUF9nZXRfY3VydmVfbmFtZTsKLSsJCVBFTV93cml0ZV9YNTA5X0NFUlRfUEFJUjsKLSsJCUJJT19kdW1wX2luZGVudF9jYjsKLSsJCWQyaV9YNTA5X0NFUlRfUEFJUjsKLSsJCVNUT1JFX2xpc3RfcHJpdmF0ZV9rZXlfZW5kcDsKLSsJCWFzbjFfY29uc3RfRmluaXNoOwotKwkJaTJkX0VDX1BVQktFWV9mcDsKLSsJCUJOX25pc3RfbW9kXzI1NjsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX2FkZDBfdGFibGU7Ci0rCQlwcXVldWVfZnJlZTsKLSsJCUJOX0JMSU5ESU5HX2NyZWF0ZV9wYXJhbTsKLSsJCUVDRFNBX3NpemU7Ci0rCQlkMmlfRUNfUFVCS0VZX2JpbzsKLSsJCUJOX2dldDBfbmlzdF9wcmltZV81MjE7Ci0rCQlTVE9SRV9BVFRSX0lORk9fbW9kaWZ5X3NoYTFzdHI7Ci0rCQlCTl9nZW5lcmF0ZV9wcmltZV9leDsKLSsJCUVDX0dST1VQX25ld19ieV9jdXJ2ZV9uYW1lOwotKwkJU0hBMjU2X0ZpbmFsOwotKwkJREhfZ2VuZXJhdGVfcGFyYW1ldGVyc19leDsKLSsJCVBFTV9yZWFkX2Jpb19FQ1ByaXZhdGVLZXk7Ci0rCQlTVE9SRV9tZXRoX2dldF9jbGVhbnVwX2ZuOwotKwkJU1RPUkVfbWV0aG9kX2dldF9jbGVhbnVwX2Z1bmN0aW9uOwotKwkJRU5HSU5FX2dldF9FQ0RIOwotKwkJZDJpX0VDRFNBX1NJRzsKLSsJCUJOX2lzX3ByaW1lX2Zhc3R0ZXN0X2V4OwotKwkJRUNEU0Ffc2lnbjsKLSsJCVg1MDlfcG9saWN5X2NoZWNrOwotKwkJRVZQX1BLRVlfZ2V0X2F0dHJfYnlfTklEOwotKwkJU1RPUkVfc2V0X2V4X2RhdGE7Ci0rCQlFTkdJTkVfZ2V0X0VDRFNBOwotKwkJRVZQX2VjZHNhOwotKwkJQk5fQkxJTkRJTkdfZ2V0X2ZsYWdzOwotKwkJUEtDUzEyX2FkZF9jZXJ0OwotKwkJU1RPUkVfT0JKRUNUX25ldzsKLSsJCUVSUl9sb2FkX0VDREhfc3RyaW5nczsKLSsJCUVDX0tFWV9kdXA7Ci0rCQlFVlBfQ0lQSEVSX0NUWF9yYW5kX2tleTsKLSsJCUVDRFNBX3NldF9tZXRob2Q7Ci0rCQlhMmlfSVBBRERSRVNTX05DOwotKwkJZDJpX0VDUGFyYW1ldGVyczsKLSsJCVNUT1JFX2xpc3RfY2VydGlmaWNhdGVfZW5kOwotKwkJU1RPUkVfZ2V0X2NybDsKLSsJCVg1MDlfUE9MSUNZX05PREVfcHJpbnQ7Ci0rCQlTSEEzODRfSW5pdDsKLSsJCUVDX0dGMm1fc2ltcGxlX21ldGhvZDsKLSsJCUVDRFNBX3NldF9leF9kYXRhOwotKwkJU0hBMzg0X0ZpbmFsOwotKwkJUEtDUzdfc2V0X2RpZ2VzdDsKLSsJCUVDX0tFWV9wcmludDsKLSsJCVNUT1JFX21ldGhfc2V0X2xvY2tfc3RvcmVfZm47Ci0rCQlTVE9SRV9tZXRob2Rfc2V0X2xvY2tfc3RvcmVfZnVuY3Rpb247Ci0rCQlFQ0RTQV9nZXRfZXhfbmV3X2luZGV4OwotKwkJU0hBMzg0OwotKwkJUE9MSUNZX01BUFBJTkdfbmV3OwotKwkJU1RPUkVfbGlzdF9jZXJ0aWZpY2F0ZV9lbmRwOwotKwkJWDUwOV9TVE9SRV9DVFhfZ2V0MF9wb2xpY3lfdHJlZTsKLSsJCUVDX0dST1VQX3NldF9hc24xX2ZsYWc7Ci0rCQlFQ19LRVlfY2hlY2tfa2V5OwotKwkJZDJpX0VDX1BVQktFWV9mcDsKLSsJCVBLQ1M3X3NldDBfdHlwZV9vdGhlcjsKLSsJCVBFTV9yZWFkX2Jpb19YNTA5X0NFUlRfUEFJUjsKLSsJCXBxdWV1ZV9uZXh0OwotKwkJU1RPUkVfbWV0aF9nZXRfbGlzdF9lbmRfZm47Ci0rCQlTVE9SRV9tZXRob2RfZ2V0X2xpc3RfZW5kX2Z1bmN0aW9uOwotKwkJRVZQX1BLRVlfYWRkMV9hdHRyX2J5X09CSjsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX3NldF90aW1lOwotKwkJcHF1ZXVlX25ldzsKLSsJCUVOR0lORV9zZXRfZGVmYXVsdF9FQ0RIOwotKwkJU1RPUkVfbmV3X21ldGhvZDsKLSsJCVBLQ1MxMl9hZGRfa2V5OwotKwkJRFNPX21lcmdlOwotKwkJRUNfUE9JTlRfaGV4MnBvaW50OwotKwkJQklPX2R1bXBfY2I7Ci0rCQlTSEEyNTZfVXBkYXRlOwotKwkJcHF1ZXVlX2luc2VydDsKLSsJCXBpdGVtX2ZyZWU7Ci0rCQlCTl9HRjJtX21vZF9pbnZfYXJyOwotKwkJRU5HSU5FX3VucmVnaXN0ZXJfRUNEU0E7Ci0rCQlCTl9CTElORElOR19zZXRfdGhyZWFkX2lkOwotKwkJZ2V0X3JmYzM1MjZfcHJpbWVfODE5MjsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX2NsZWFyX2ZsYWdzOwotKwkJZ2V0X3JmYzI0MDlfcHJpbWVfMTAyNDsKLSsJCURIX2NoZWNrX3B1Yl9rZXk7Ci0rCQlnZXRfcmZjMzUyNl9wcmltZV8yMDQ4OwotKwkJZ2V0X3JmYzM1MjZfcHJpbWVfNjE0NDsKLSsJCWdldF9yZmMzNTI2X3ByaW1lXzE1MzY7Ci0rCQlnZXRfcmZjMzUyNl9wcmltZV8zMDcyOwotKwkJZ2V0X3JmYzM1MjZfcHJpbWVfNDA5NjsKLSsJCWdldF9yZmMyNDA5X3ByaW1lXzc2ODsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX2dldF9mbGFnczsKLSsJCUVWUF9DSVBIRVJfQ1RYX25ldzsKLSsJCUVWUF9DSVBIRVJfQ1RYX2ZyZWU7Ci0rCQlDYW1lbGxpYV9jYmNfZW5jcnlwdDsKLSsJCUNhbWVsbGlhX2NmYjEyOF9lbmNyeXB0OwotKwkJQ2FtZWxsaWFfY2ZiMV9lbmNyeXB0OwotKwkJQ2FtZWxsaWFfY2ZiOF9lbmNyeXB0OwotKwkJQ2FtZWxsaWFfY3RyMTI4X2VuY3J5cHQ7Ci0rCQlDYW1lbGxpYV9jZmJyX2VuY3J5cHRfYmxvY2s7Ci0rCQlDYW1lbGxpYV9kZWNyeXB0OwotKwkJQ2FtZWxsaWFfZWNiX2VuY3J5cHQ7Ci0rCQlDYW1lbGxpYV9lbmNyeXB0OwotKwkJQ2FtZWxsaWFfb2ZiMTI4X2VuY3J5cHQ7Ci0rCQlDYW1lbGxpYV9zZXRfa2V5OwotKwkJRVZQX2NhbWVsbGlhXzEyOF9jYmM7Ci0rCQlFVlBfY2FtZWxsaWFfMTI4X2NmYjEyODsKLSsJCUVWUF9jYW1lbGxpYV8xMjhfY2ZiMTsKLSsJCUVWUF9jYW1lbGxpYV8xMjhfY2ZiODsKLSsJCUVWUF9jYW1lbGxpYV8xMjhfZWNiOwotKwkJRVZQX2NhbWVsbGlhXzEyOF9vZmI7Ci0rCQlFVlBfY2FtZWxsaWFfMTkyX2NiYzsKLSsJCUVWUF9jYW1lbGxpYV8xOTJfY2ZiMTI4OwotKwkJRVZQX2NhbWVsbGlhXzE5Ml9jZmIxOwotKwkJRVZQX2NhbWVsbGlhXzE5Ml9jZmI4OwotKwkJRVZQX2NhbWVsbGlhXzE5Ml9lY2I7Ci0rCQlFVlBfY2FtZWxsaWFfMTkyX29mYjsKLSsJCUVWUF9jYW1lbGxpYV8yNTZfY2JjOwotKwkJRVZQX2NhbWVsbGlhXzI1Nl9jZmIxMjg7Ci0rCQlFVlBfY2FtZWxsaWFfMjU2X2NmYjE7Ci0rCQlFVlBfY2FtZWxsaWFfMjU2X2NmYjg7Ci0rCQlFVlBfY2FtZWxsaWFfMjU2X2VjYjsKLSsJCUVWUF9jYW1lbGxpYV8yNTZfb2ZiOwotKwkJYTJpX2lwYWRkOwotKwkJQVNJZGVudGlmaWVyc19mcmVlOwotKwkJaTJkX0FTSWRPclJhbmdlOwotKwkJRVZQX0NJUEhFUl9ibG9ja19zaXplOwotKwkJdjNfYXNpZF9pc19jYW5vbmljYWw7Ci0rCQlJUEFkZHJlc3NDaG9pY2VfZnJlZTsKLSsJCUVWUF9DSVBIRVJfQ1RYX3NldF9hcHBfZGF0YTsKLSsJCUJJT19zZXRfY2FsbGJhY2tfYXJnOwotKwkJdjNfYWRkcl9hZGRfcHJlZml4OwotKwkJSVBBZGRyZXNzT3JSYW5nZV9pdDsKLSsJCUJJT19zZXRfZmxhZ3M7Ci0rCQlBU0lkZW50aWZpZXJzX2l0OwotKwkJdjNfYWRkcl9nZXRfcmFuZ2U7Ci0rCQlCSU9fbWV0aG9kX3R5cGU7Ci0rCQl2M19hZGRyX2luaGVyaXRzOwotKwkJSVBBZGRyZXNzQ2hvaWNlX2l0OwotKwkJQUVTX2lnZV9lbmNyeXB0OwotKwkJdjNfYWRkcl9hZGRfcmFuZ2U7Ci0rCQlFVlBfQ0lQSEVSX0NUWF9uaWQ7Ci0rCQlkMmlfQVNSYW5nZTsKLSsJCXYzX2FkZHJfYWRkX2luaGVyaXQ7Ci0rCQl2M19hc2lkX2FkZF9pZF9vcl9yYW5nZTsKLSsJCXYzX2FkZHJfdmFsaWRhdGVfcmVzb3VyY2Vfc2V0OwotKwkJRVZQX0NJUEhFUl9pdl9sZW5ndGg7Ci0rCQlFVlBfTURfdHlwZTsKLSsJCXYzX2FzaWRfY2Fub25pemU7Ci0rCQlJUEFkZHJlc3NSYW5nZV9mcmVlOwotKwkJdjNfYXNpZF9hZGRfaW5oZXJpdDsKLSsJCUVWUF9DSVBIRVJfQ1RYX2tleV9sZW5ndGg7Ci0rCQlJUEFkZHJlc3NSYW5nZV9uZXc7Ci0rCQlBU0lkT3JSYW5nZV9uZXc7Ci0rCQlFVlBfTURfc2l6ZTsKLSsJCUVWUF9NRF9DVFhfdGVzdF9mbGFnczsKLSsJCUJJT19jbGVhcl9mbGFnczsKLSsJCWkyZF9BU1JhbmdlOwotKwkJSVBBZGRyZXNzUmFuZ2VfaXQ7Ci0rCQlJUEFkZHJlc3NDaG9pY2VfbmV3OwotKwkJQVNJZGVudGlmaWVyQ2hvaWNlX25ldzsKLSsJCUFTUmFuZ2VfZnJlZTsKLSsJCUVWUF9NRF9wa2V5X3R5cGU7Ci0rCQlFVlBfTURfQ1RYX2NsZWFyX2ZsYWdzOwotKwkJSVBBZGRyZXNzRmFtaWx5X2ZyZWU7Ci0rCQlpMmRfSVBBZGRyZXNzRmFtaWx5OwotKwkJSVBBZGRyZXNzT3JSYW5nZV9uZXc7Ci0rCQlFVlBfQ0lQSEVSX2ZsYWdzOwotKwkJdjNfYXNpZF92YWxpZGF0ZV9yZXNvdXJjZV9zZXQ7Ci0rCQlkMmlfSVBBZGRyZXNzUmFuZ2U7Ci0rCQlBRVNfYmlfaWdlX2VuY3J5cHQ7Ci0rCQlCSU9fZ2V0X2NhbGxiYWNrOwotKwkJSVBBZGRyZXNzT3JSYW5nZV9mcmVlOwotKwkJdjNfYWRkcl9zdWJzZXQ7Ci0rCQlkMmlfSVBBZGRyZXNzRmFtaWx5OwotKwkJdjNfYXNpZF9zdWJzZXQ7Ci0rCQlCSU9fdGVzdF9mbGFnczsKLSsJCWkyZF9BU0lkZW50aWZpZXJDaG9pY2U7Ci0rCQlBU1JhbmdlX2l0OwotKwkJZDJpX0FTSWRlbnRpZmllcnM7Ci0rCQlBU1JhbmdlX25ldzsKLSsJCWQyaV9JUEFkZHJlc3NDaG9pY2U7Ci0rCQl2M19hZGRyX2dldF9hZmk7Ci0rCQlFVlBfQ0lQSEVSX2tleV9sZW5ndGg7Ci0rCQlFVlBfQ2lwaGVyOwotKwkJaTJkX0lQQWRkcmVzc09yUmFuZ2U7Ci0rCQlBU0lkT3JSYW5nZV9pdDsKLSsJCUVWUF9DSVBIRVJfbmlkOwotKwkJaTJkX0lQQWRkcmVzc0Nob2ljZTsKLSsJCUVWUF9DSVBIRVJfQ1RYX2Jsb2NrX3NpemU7Ci0rCQlBU0lkZW50aWZpZXJzX25ldzsKLSsJCXYzX2FkZHJfdmFsaWRhdGVfcGF0aDsKLSsJCUlQQWRkcmVzc0ZhbWlseV9uZXc7Ci0rCQlFVlBfTURfQ1RYX3NldF9mbGFnczsKLSsJCXYzX2FkZHJfaXNfY2Fub25pY2FsOwotKwkJaTJkX0lQQWRkcmVzc1JhbmdlOwotKwkJSVBBZGRyZXNzRmFtaWx5X2l0OwotKwkJdjNfYXNpZF9pbmhlcml0czsKLSsJCUVWUF9DSVBIRVJfQ1RYX2NpcGhlcjsKLSsJCUVWUF9DSVBIRVJfQ1RYX2dldF9hcHBfZGF0YTsKLSsJCUVWUF9NRF9ibG9ja19zaXplOwotKwkJRVZQX0NJUEhFUl9DVFhfZmxhZ3M7Ci0rCQl2M19hc2lkX3ZhbGlkYXRlX3BhdGg7Ci0rCQlkMmlfSVBBZGRyZXNzT3JSYW5nZTsKLSsJCXYzX2FkZHJfY2Fub25pemU7Ci0rCQlBU0lkZW50aWZpZXJDaG9pY2VfaXQ7Ci0rCQlFVlBfTURfQ1RYX21kOwotKwkJZDJpX0FTSWRlbnRpZmllckNob2ljZTsKLSsJCUJJT19tZXRob2RfbmFtZTsKLSsJCUVWUF9DSVBIRVJfQ1RYX2l2X2xlbmd0aDsKLSsJCUFTSWRPclJhbmdlX2ZyZWU7Ci0rCQlBU0lkZW50aWZpZXJDaG9pY2VfZnJlZTsKLSsJCUJJT19nZXRfY2FsbGJhY2tfYXJnOwotKwkJQklPX3NldF9jYWxsYmFjazsKLSsJCWQyaV9BU0lkT3JSYW5nZTsKLSsJCWkyZF9BU0lkZW50aWZpZXJzOwotKwkJU0VFRF9kZWNyeXB0OwotKwkJU0VFRF9lbmNyeXB0OwotKwkJU0VFRF9jYmNfZW5jcnlwdDsKLSsJCUVWUF9zZWVkX29mYjsKLSsJCVNFRURfY2ZiMTI4X2VuY3J5cHQ7Ci0rCQlTRUVEX29mYjEyOF9lbmNyeXB0OwotKwkJRVZQX3NlZWRfY2JjOwotKwkJU0VFRF9lY2JfZW5jcnlwdDsKLSsJCUVWUF9zZWVkX2VjYjsKLSsJCVNFRURfc2V0X2tleTsKLSsJCUVWUF9zZWVkX2NmYjEyODsKLSsJCVg1MDlfRVhURU5TSU9OU19pdDsKLSsJCVg1MDlfZ2V0MV9vY3NwOwotKwkJT0NTUF9SRVFfQ1RYX2ZyZWU7Ci0rCQlpMmRfWDUwOV9FWFRFTlNJT05TOwotKwkJT0NTUF9zZW5kcmVxX25iaW87Ci0rCQlPQ1NQX3NlbmRyZXFfbmV3OwotKwkJZDJpX1g1MDlfRVhURU5TSU9OUzsKLSsJCVg1MDlfQUxHT1JTX2l0OwotKwkJWDUwOV9BTEdPUl9nZXQwOwotKwkJWDUwOV9BTEdPUl9zZXQwOwotKwkJQUVTX3Vud3JhcF9rZXk7Ci0rCQlBRVNfd3JhcF9rZXk7Ci0rCQlYNTA5YXRfZ2V0MF9kYXRhX2J5X09CSjsKLSsJCUFTTjFfVFlQRV9zZXQxOwotKwkJQVNOMV9TVFJJTkdfc2V0MDsKLSsJCWkyZF9YNTA5X0FMR09SUzsKLSsJCUJJT19mX3psaWI7Ci0rCQlDT01QX3psaWJfY2xlYW51cDsKLSsJCWQyaV9YNTA5X0FMR09SUzsKLSsJCUNNU19SZWNlaXB0UmVxdWVzdF9mcmVlOwotKwkJUEVNX3dyaXRlX0NNUzsKLSsJCUNNU19hZGQwX0NlcnRpZmljYXRlQ2hvaWNlczsKLSsJCUNNU191bnNpZ25lZF9hZGQxX2F0dHJfYnlfT0JKOwotKwkJRVJSX2xvYWRfQ01TX3N0cmluZ3M7Ci0rCQlDTVNfc2lnbl9yZWNlaXB0OwotKwkJaTJkX0NNU19Db250ZW50SW5mbzsKLSsJCUNNU19zaWduZWRfZGVsZXRlX2F0dHI7Ci0rCQlkMmlfQ01TX2JpbzsKLSsJCUNNU191bnNpZ25lZF9nZXRfYXR0cl9ieV9OSUQ7Ci0rCQlDTVNfdmVyaWZ5OwotKwkJU01JTUVfcmVhZF9DTVM7Ci0rCQlDTVNfZGVjcnlwdF9zZXQxX2tleTsKLSsJCUNNU19TaWduZXJJbmZvX2dldDBfYWxnczsKLSsJCUNNU19hZGQxX2NlcnQ7Ci0rCQlDTVNfc2V0X2RldGFjaGVkOwotKwkJQ01TX2VuY3J5cHQ7Ci0rCQlDTVNfRW52ZWxvcGVkRGF0YV9jcmVhdGU7Ci0rCQlDTVNfdW5jb21wcmVzczsKLSsJCUNNU19hZGQwX2NybDsKLSsJCUNNU19TaWduZXJJbmZvX3ZlcmlmeV9jb250ZW50OwotKwkJQ01TX3Vuc2lnbmVkX2dldDBfZGF0YV9ieV9PQko7Ci0rCQlQRU1fd3JpdGVfYmlvX0NNUzsKLSsJCUNNU191bnNpZ25lZF9nZXRfYXR0cjsKLSsJCUNNU19SZWNpcGllbnRJbmZvX2t0cmlfY2VydF9jbXA7Ci0rCQlDTVNfUmVjaXBpZW50SW5mb19rdHJpX2dldDBfYWxnczsKLSsJCUNNU19SZWNpcEluZm9fa3RyaV9nZXQwX2FsZ3M7Ci0rCQlDTVNfQ29udGVudEluZm9fZnJlZTsKLSsJCUNNU19maW5hbDsKLSsJCUNNU19hZGRfc2ltcGxlX3NtaW1lY2FwOwotKwkJQ01TX1NpZ25lckluZm9fdmVyaWZ5OwotKwkJQ01TX2RhdGE7Ci0rCQlDTVNfQ29udGVudEluZm9faXQ7Ci0rCQlkMmlfQ01TX1JlY2VpcHRSZXF1ZXN0OwotKwkJQ01TX2NvbXByZXNzOwotKwkJQ01TX2RpZ2VzdF9jcmVhdGU7Ci0rCQlDTVNfU2lnbmVySW5mb19jZXJ0X2NtcDsKLSsJCUNNU19TaWduZXJJbmZvX3NpZ247Ci0rCQlDTVNfZGF0YV9jcmVhdGU7Ci0rCQlpMmRfQ01TX2JpbzsKLSsJCUNNU19FbmNyeXB0ZWREYXRhX3NldDFfa2V5OwotKwkJQ01TX2RlY3J5cHQ7Ci0rCQlpbnRfc21pbWVfd3JpdGVfQVNOMTsKLSsJCUNNU191bnNpZ25lZF9kZWxldGVfYXR0cjsKLSsJCUNNU191bnNpZ25lZF9nZXRfYXR0cl9jb3VudDsKLSsJCUNNU19hZGRfc21pbWVjYXA7Ci0rCQlQRU1fcmVhZF9DTVM7Ci0rCQlDTVNfc2lnbmVkX2dldF9hdHRyX2J5X09CSjsKLSsJCWQyaV9DTVNfQ29udGVudEluZm87Ci0rCQlDTVNfYWRkX3N0YW5kYXJkX3NtaW1lY2FwOwotKwkJQ01TX0NvbnRlbnRJbmZvX25ldzsKLSsJCUNNU19SZWNpcGllbnRJbmZvX3R5cGU7Ci0rCQlDTVNfZ2V0MF90eXBlOwotKwkJQ01TX2lzX2RldGFjaGVkOwotKwkJQ01TX3NpZ247Ci0rCQlDTVNfc2lnbmVkX2FkZDFfYXR0cjsKLSsJCUNNU191bnNpZ25lZF9nZXRfYXR0cl9ieV9PQko7Ci0rCQlTTUlNRV93cml0ZV9DTVM7Ci0rCQlDTVNfRW5jcnlwdGVkRGF0YV9kZWNyeXB0OwotKwkJQ01TX2dldDBfUmVjaXBpZW50SW5mb3M7Ci0rCQlDTVNfYWRkMF9SZXZvY2F0aW9uSW5mb0Nob2ljZTsKLSsJCUNNU19kZWNyeXB0X3NldDFfcGtleTsKLSsJCUNNU19TaWduZXJJbmZvX3NldDFfc2lnbmVyX2NlcnQ7Ci0rCQlDTVNfZ2V0MF9zaWduZXJzOwotKwkJQ01TX1JlY2VpcHRSZXF1ZXN0X2dldDBfdmFsdWVzOwotKwkJQ01TX3NpZ25lZF9nZXQwX2RhdGFfYnlfT0JKOwotKwkJQ01TX2dldDBfU2lnbmVySW5mb3M7Ci0rCQlDTVNfYWRkMF9jZXJ0OwotKwkJQ01TX0VuY3J5cHRlZERhdGFfZW5jcnlwdDsKLSsJCUNNU19kaWdlc3RfdmVyaWZ5OwotKwkJQ01TX3NldDFfc2lnbmVyc19jZXJ0czsKLSsJCUNNU19zaWduZWRfZ2V0X2F0dHI7Ci0rCQlDTVNfUmVjaXBpZW50SW5mb19zZXQwX2tleTsKLSsJCUNNU19TaWduZWREYXRhX2luaXQ7Ci0rCQlDTVNfUmVjaXBpZW50SW5mb19rZWtyaV9nZXQwX2lkOwotKwkJQ01TX3ZlcmlmeV9yZWNlaXB0OwotKwkJQ01TX1JlY2VpcHRSZXF1ZXN0X2l0OwotKwkJUEVNX3JlYWRfYmlvX0NNUzsKLSsJCUNNU19nZXQxX2NybHM7Ci0rCQlDTVNfYWRkMF9yZWNpcGllbnRfa2V5OwotKwkJU01JTUVfcmVhZF9BU04xOwotKwkJQ01TX1JlY2VpcHRSZXF1ZXN0X25ldzsKLSsJCUNNU19nZXQwX2NvbnRlbnQ7Ci0rCQlDTVNfZ2V0MV9SZWNlaXB0UmVxdWVzdDsKLSsJCUNNU19zaWduZWRfYWRkMV9hdHRyX2J5X09CSjsKLSsJCUNNU19SZWNpcGllbnRJbmZvX2tla3JpX2lkX2NtcDsKLSsJCUNNU19hZGQxX1JlY2VpcHRSZXF1ZXN0OwotKwkJQ01TX1NpZ25lckluZm9fZ2V0MF9zaWduZXJfaWQ7Ci0rCQlDTVNfdW5zaWduZWRfYWRkMV9hdHRyX2J5X05JRDsKLSsJCUNNU191bnNpZ25lZF9hZGQxX2F0dHI7Ci0rCQlDTVNfc2lnbmVkX2dldF9hdHRyX2J5X05JRDsKLSsJCUNNU19nZXQxX2NlcnRzOwotKwkJQ01TX3NpZ25lZF9hZGQxX2F0dHJfYnlfTklEOwotKwkJQ01TX3Vuc2lnbmVkX2FkZDFfYXR0cl9ieV90eHQ7Ci0rCQlDTVNfZGF0YUZpbmFsOwotKwkJQ01TX1JlY2lwaWVudEluZm9fa3RyaV9nZXQwX3NpZ25lcl9pZDsKLSsJCUNNU19SZWNpcEluZm9fa3RyaV9nZXQwX3NpZ3JfaWQ7Ci0rCQlpMmRfQ01TX1JlY2VpcHRSZXF1ZXN0OwotKwkJQ01TX2FkZDFfcmVjaXBpZW50X2NlcnQ7Ci0rCQlDTVNfZGF0YUluaXQ7Ci0rCQlDTVNfc2lnbmVkX2FkZDFfYXR0cl9ieV90eHQ7Ci0rCQlDTVNfUmVjaXBpZW50SW5mb19kZWNyeXB0OwotKwkJQ01TX3NpZ25lZF9nZXRfYXR0cl9jb3VudDsKLSsJCUNNU19nZXQwX2VDb250ZW50VHlwZTsKLSsJCUNNU19zZXQxX2VDb250ZW50VHlwZTsKLSsJCUNNU19SZWNlaXB0UmVxdWVzdF9jcmVhdGUwOwotKwkJQ01TX2FkZDFfc2lnbmVyOwotKwkJQ01TX1JlY2lwaWVudEluZm9fc2V0MF9wa2V5OwotKwkJRU5HSU5FX3NldF9sb2FkX3NzbF9jbGllbnRfY2VydF9mdW5jdGlvbjsKLSsJCUVOR0lORV9zZXRfbGRfc3NsX2NsbnRfY2VydF9mbjsKLSsJCUVOR0lORV9nZXRfc3NsX2NsaWVudF9jZXJ0X2Z1bmN0aW9uOwotKwkJRU5HSU5FX2dldF9zc2xfY2xpZW50X2NlcnRfZm47Ci0rCQlFTkdJTkVfbG9hZF9zc2xfY2xpZW50X2NlcnQ7Ci0rCQlFTkdJTkVfbG9hZF9jYXBpOwotKwkJT1BFTlNTTF9pc3NlcnZpY2U7Ci0rCQlGSVBTX2RzYV9zaWdfZGVjb2RlOwotKwkJRVZQX0NJUEhFUl9DVFhfY2xlYXJfZmxhZ3M7Ci0rCQlGSVBTX3JhbmRfc3RhdHVzOwotKwkJRklQU19yYW5kX3NldF9rZXk7Ci0rCQlDUllQVE9fc2V0X21lbV9pbmZvX2Z1bmN0aW9uczsKLSsJCVJTQV9YOTMxX2dlbmVyYXRlX2tleV9leDsKLSsJCWludF9FUlJfc2V0X3N0YXRlX2Z1bmM7Ci0rCQlpbnRfRVZQX01EX3NldF9lbmdpbmVfY2FsbGJhY2tzOwotKwkJaW50X0NSWVBUT19zZXRfZG9fZHlubG9ja19jYWxsYmFjazsKLSsJCUZJUFNfcm5nX3N0aWNrOwotKwkJRVZQX0NJUEhFUl9DVFhfc2V0X2ZsYWdzOwotKwkJQk5fWDkzMV9nZW5lcmF0ZV9wcmltZV9leDsKLSsJCUZJUFNfc2VsZnRlc3RfY2hlY2s7Ci0rCQlGSVBTX3JhbmRfc2V0X2R0OwotKwkJQ1JZUFRPX2RiZ19wb3BfaW5mbzsKLSsJCUZJUFNfZHNhX2ZyZWU7Ci0rCQlSU0FfWDkzMV9kZXJpdmVfZXg7Ci0rCQlGSVBTX3JzYV9uZXc7Ci0rCQlGSVBTX3JhbmRfYnl0ZXM7Ci0rCQlmaXBzX2NpcGhlcl90ZXN0OwotKwkJRVZQX0NJUEhFUl9DVFhfdGVzdF9mbGFnczsKLSsJCUNSWVBUT19tYWxsb2NfZGVidWdfaW5pdDsKLSsJCUNSWVBUT19kYmdfcHVzaF9pbmZvOwotKwkJRklQU19jb3JydXB0X3JzYV9rZXlnZW47Ci0rCQlGSVBTX2RoX25ldzsKLSsJCUZJUFNfY29ycnVwdF9kc2Ffa2V5Z2VuOwotKwkJRklQU19kaF9mcmVlOwotKwkJZmlwc19wa2V5X3NpZ25hdHVyZV90ZXN0OwotKwkJRVZQX2FkZF9hbGdfbW9kdWxlOwotKwkJaW50X1JBTkRfaW5pdF9lbmdpbmVfY2FsbGJhY2tzOwotKwkJaW50X0VWUF9DSVBIRVJfc2V0X2VuZ2luZV9jYWxsYmFja3M7Ci0rCQlpbnRfRVZQX01EX2luaXRfZW5naW5lX2NhbGxiYWNrczsKLSsJCUZJUFNfcmFuZF90ZXN0X21vZGU7Ci0rCQlGSVBTX3JhbmRfcmVzZXQ7Ci0rCQlGSVBTX2RzYV9uZXc7Ci0rCQlpbnRfUkFORF9zZXRfY2FsbGJhY2tzOwotKwkJQk5fWDkzMV9kZXJpdmVfcHJpbWVfZXg7Ci0rCQlpbnRfRVJSX2xpYl9pbml0OwotKwkJaW50X0VWUF9DSVBIRVJfaW5pdF9lbmdpbmVfY2FsbGJhY2tzOwotKwkJRklQU19yc2FfZnJlZTsKLSsJCUZJUFNfZHNhX3NpZ19lbmNvZGU7Ci0rCQlDUllQVE9fZGJnX3JlbW92ZV9hbGxfaW5mbzsKLSsJCU9QRU5TU0xfaW5pdDsKLSsJCUNSWVBUT19zdHJkdXA7Ci0rCQlKUEFLRV9TVEVQM0FfcHJvY2VzczsKLSsJCUpQQUtFX1NURVAxX3JlbGVhc2U7Ci0rCQlKUEFLRV9nZXRfc2hhcmVkX2tleTsKLSsJCUpQQUtFX1NURVAzQl9pbml0OwotKwkJSlBBS0VfU1RFUDFfZ2VuZXJhdGU7Ci0rCQlKUEFLRV9TVEVQMV9pbml0OwotKwkJSlBBS0VfU1RFUDNCX3Byb2Nlc3M7Ci0rCQlKUEFLRV9TVEVQMl9nZW5lcmF0ZTsKLSsJCUpQQUtFX0NUWF9uZXc7Ci0rCQlKUEFLRV9DVFhfZnJlZTsKLSsJCUpQQUtFX1NURVAzQl9yZWxlYXNlOwotKwkJSlBBS0VfU1RFUDNBX3JlbGVhc2U7Ci0rCQlKUEFLRV9TVEVQMl9wcm9jZXNzOwotKwkJSlBBS0VfU1RFUDNCX2dlbmVyYXRlOwotKwkJSlBBS0VfU1RFUDFfcHJvY2VzczsKLSsJCUpQQUtFX1NURVAzQV9nZW5lcmF0ZTsKLSsJCUpQQUtFX1NURVAyX3JlbGVhc2U7Ci0rCQlKUEFLRV9TVEVQM0FfaW5pdDsKLSsJCUVSUl9sb2FkX0pQQUtFX3N0cmluZ3M7Ci0rCQlKUEFLRV9TVEVQMl9pbml0OwotKwkJcHF1ZXVlX3NpemU7Ci0rCQlpMmRfVFNfQUNDVVJBQ1k7Ci0rCQlpMmRfVFNfTVNHX0lNUFJJTlRfZnA7Ci0rCQlpMmRfVFNfTVNHX0lNUFJJTlQ7Ci0rCQlFVlBfUEtFWV9wcmludF9wdWJsaWM7Ci0rCQlFVlBfUEtFWV9DVFhfbmV3OwotKwkJaTJkX1RTX1RTVF9JTkZPOwotKwkJRVZQX1BLRVlfYXNuMV9maW5kOwotKwkJRFNPX01FVEhPRF9iZW9zOwotKwkJVFNfQ09ORl9sb2FkX2NlcnQ7Ci0rCQlUU19SRVFfZ2V0X2V4dDsKLSsJCUVWUF9QS0VZX3NpZ25faW5pdDsKLSsJCUFTTjFfaXRlbV9wcmludDsKLSsJCVRTX1RTVF9JTkZPX3NldF9ub25jZTsKLSsJCVRTX1JFU1BfZHVwOwotKwkJRU5HSU5FX3JlZ2lzdGVyX3BrZXlfbWV0aHM7Ci0rCQlFVlBfUEtFWV9hc24xX2FkZDA7Ci0rCQlQS0NTN19hZGQwX2F0dHJpYl9zaWduaW5nX3RpbWU7Ci0rCQlpMmRfVFNfVFNUX0lORk9fZnA7Ci0rCQlCSU9fYXNuMV9nZXRfcHJlZml4OwotKwkJVFNfVFNUX0lORk9fc2V0X3RpbWU7Ci0rCQlFVlBfUEtFWV9tZXRoX3NldF9kZWNyeXB0OwotKwkJRVZQX1BLRVlfc2V0X3R5cGVfc3RyOwotKwkJRVZQX1BLRVlfQ1RYX2dldF9rZXlnZW5faW5mbzsKLSsJCVRTX1JFUV9zZXRfcG9saWN5X2lkOwotKwkJZDJpX1RTX1JFU1BfZnA7Ci0rCQlFTkdJTkVfZ2V0X3BrZXlfYXNuMV9tZXRoX2VuZ2luZTsKLSsJCUVOR0lORV9nZXRfcGtleV9hc24xX21ldGhfZW5nOwotKwkJV0hJUkxQT09MX0luaXQ7Ci0rCQlUU19SRVNQX3NldF9zdGF0dXNfaW5mbzsKLSsJCUVWUF9QS0VZX2tleWdlbjsKLSsJCUVWUF9EaWdlc3RTaWduSW5pdDsKLSsJCVRTX0FDQ1VSQUNZX3NldF9taWxsaXM7Ci0rCQlUU19SRVFfZHVwOwotKwkJR0VORVJBTF9OQU1FX2R1cDsKLSsJCUFTTjFfU0VRVUVOQ0VfQU5ZX2l0OwotKwkJV0hJUkxQT09MOwotKwkJWDUwOV9TVE9SRV9nZXQxX2NybHM7Ci0rCQlFTkdJTkVfZ2V0X3BrZXlfYXNuMV9tZXRoOwotKwkJRVZQX1BLRVlfYXNuMV9uZXc7Ci0rCQlCSU9fbmV3X05ERUY7Ci0rCQlFTkdJTkVfZ2V0X3BrZXlfbWV0aDsKLSsJCVRTX01TR19JTVBSSU5UX3NldF9hbGdvOwotKwkJaTJkX1RTX1RTVF9JTkZPX2JpbzsKLSsJCVRTX1RTVF9JTkZPX3NldF9vcmRlcmluZzsKLSsJCVRTX1RTVF9JTkZPX2dldF9leHRfYnlfT0JKOwotKwkJQ1JZUFRPX1RIUkVBRElEX3NldF9wb2ludGVyOwotKwkJVFNfQ09ORl9nZXRfdHNhX3NlY3Rpb247Ci0rCQlTTUlNRV93cml0ZV9BU04xOwotKwkJVFNfUkVTUF9DVFhfc2V0X3NpZ25lcl9rZXk7Ci0rCQlFVlBfUEtFWV9lbmNyeXB0X29sZDsKLSsJCUVWUF9QS0VZX2VuY3J5cHRfaW5pdDsKLSsJCUNSWVBUT19USFJFQURJRF9jcHk7Ci0rCQlBU04xX1BDVFhfZ2V0X2NlcnRfZmxhZ3M7Ci0rCQlpMmRfRVNTX1NJR05JTkdfQ0VSVDsKLSsJCVRTX0NPTkZfbG9hZF9rZXk7Ci0rCQlpMmRfQVNOMV9TRVFVRU5DRV9BTlk7Ci0rCQlkMmlfVFNfTVNHX0lNUFJJTlRfYmlvOwotKwkJRVZQX1BLRVlfYXNuMV9zZXRfcHVibGljOwotKwkJYjJpX1B1YmxpY0tleV9iaW87Ci0rCQlCSU9fYXNuMV9zZXRfcHJlZml4OwotKwkJRVZQX1BLRVlfbmV3X21hY19rZXk7Ci0rCQlCSU9fbmV3X0NNUzsKLSsJCUNSWVBUT19USFJFQURJRF9jbXA7Ci0rCQlUU19SRVFfZXh0X2ZyZWU7Ci0rCQlFVlBfUEtFWV9hc24xX3NldF9mcmVlOwotKwkJRVZQX1BLRVlfZ2V0MF9hc24xOwotKwkJZDJpX05FVFNDQVBFX1g1MDk7Ci0rCQlFVlBfUEtFWV92ZXJpZnlfcmVjb3Zlcl9pbml0OwotKwkJRVZQX1BLRVlfQ1RYX3NldF9kYXRhOwotKwkJRVZQX1BLRVlfa2V5Z2VuX2luaXQ7Ci0rCQlUU19SRVNQX0NUWF9zZXRfc3RhdHVzX2luZm87Ci0rCQlUU19NU0dfSU1QUklOVF9nZXRfYWxnbzsKLSsJCVRTX1JFUV9wcmludF9iaW87Ci0rCQlFVlBfUEtFWV9DVFhfY3RybF9zdHI7Ci0rCQlFVlBfUEtFWV9nZXRfZGVmYXVsdF9kaWdlc3RfbmlkOwotKwkJUEVNX3dyaXRlX2Jpb19QS0NTN19zdHJlYW07Ci0rCQlUU19NU0dfSU1QUklOVF9wcmludF9iaW87Ci0rCQlCTl9hc2MyYm47Ci0rCQlUU19SRVFfZ2V0X3BvbGljeV9pZDsKLSsJCUVOR0lORV9zZXRfZGVmYXVsdF9wa2V5X2FzbjFfbWV0aHM7Ci0rCQlFTkdJTkVfc2V0X2RlZl9wa2V5X2FzbjFfbWV0aHM7Ci0rCQlkMmlfVFNfQUNDVVJBQ1k7Ci0rCQlEU09fZ2xvYmFsX2xvb2t1cDsKLSsJCVRTX0NPTkZfc2V0X3RzYV9uYW1lOwotKwkJaTJkX0FTTjFfU0VUX0FOWTsKLSsJCUVOR0lORV9sb2FkX2dvc3Q7Ci0rCQlXSElSTFBPT0xfQml0VXBkYXRlOwotKwkJQVNOMV9QQ1RYX2dldF9mbGFnczsKLSsJCVRTX1RTVF9JTkZPX2dldF9leHRfYnlfTklEOwotKwkJVFNfUkVTUF9uZXc7Ci0rCQlFU1NfQ0VSVF9JRF9kdXA7Ci0rCQlUU19TVEFUVVNfSU5GT19kdXA7Ci0rCQlUU19SRVFfZGVsZXRlX2V4dDsKLSsJCUVWUF9EaWdlc3RWZXJpZnlGaW5hbDsKLSsJCUVWUF9QS0VZX3ByaW50X3BhcmFtczsKLSsJCWkyZF9DTVNfYmlvX3N0cmVhbTsKLSsJCVRTX1JFUV9nZXRfbXNnX2ltcHJpbnQ7Ci0rCQlPQkpfZmluZF9zaWdpZF9ieV9hbGdzOwotKwkJVFNfVFNUX0lORk9fZ2V0X3NlcmlhbDsKLSsJCVRTX1JFUV9nZXRfbm9uY2U7Ci0rCQlYNTA5X1BVQktFWV9zZXQwX3BhcmFtOwotKwkJRVZQX1BLRVlfQ1RYX3NldDBfa2V5Z2VuX2luZm87Ci0rCQlESVNUX1BPSU5UX3NldF9kcG5hbWU7Ci0rCQlpMmRfSVNTVUlOR19ESVNUX1BPSU5UOwotKwkJQVNOMV9TRVRfQU5ZX2l0OwotKwkJRVZQX1BLRVlfQ1RYX2dldF9kYXRhOwotKwkJVFNfU1RBVFVTX0lORk9fcHJpbnRfYmlvOwotKwkJRVZQX1BLRVlfZGVyaXZlX2luaXQ7Ci0rCQlkMmlfVFNfVFNUX0lORk87Ci0rCQlFVlBfUEtFWV9hc24xX2FkZF9hbGlhczsKLSsJCWQyaV9UU19SRVNQX2JpbzsKLSsJCU9USEVSTkFNRV9jbXA7Ci0rCQlHRU5FUkFMX05BTUVfc2V0MF92YWx1ZTsKLSsJCVBLQ1M3X1JFQ0lQX0lORk9fZ2V0MF9hbGc7Ci0rCQlUU19SRVNQX0NUWF9uZXc7Ci0rCQlUU19SRVNQX3NldF90c3RfaW5mbzsKLSsJCVBLQ1M3X2ZpbmFsOwotKwkJRVZQX1BLRVlfYmFzZV9pZDsKLSsJCVRTX1JFU1BfQ1RYX3NldF9zaWduZXJfY2VydDsKLSsJCVRTX1JFUV9zZXRfbXNnX2ltcHJpbnQ7Ci0rCQlFVlBfUEtFWV9DVFhfY3RybDsKLSsJCVRTX0NPTkZfc2V0X2RpZ2VzdHM7Ci0rCQlkMmlfVFNfTVNHX0lNUFJJTlQ7Ci0rCQlFVlBfUEtFWV9tZXRoX3NldF9jdHJsOwotKwkJVFNfUkVRX2dldF9leHRfYnlfTklEOwotKwkJUEtDUzVfcGJlX3NldDBfYWxnb3I7Ci0rCQlCTl9CTElORElOR190aHJlYWRfaWQ7Ci0rCQlUU19BQ0NVUkFDWV9uZXc7Ci0rCQlYNTA5X0NSTF9NRVRIT0RfZnJlZTsKLSsJCUFTTjFfUENUWF9nZXRfbm1fZmxhZ3M7Ci0rCQlFVlBfUEtFWV9tZXRoX3NldF9zaWduOwotKwkJQ1JZUFRPX1RIUkVBRElEX2N1cnJlbnQ7Ci0rCQlFVlBfUEtFWV9kZWNyeXB0X2luaXQ7Ci0rCQlORVRTQ0FQRV9YNTA5X2ZyZWU7Ci0rCQlpMmJfUFZLX2JpbzsKLSsJCUVWUF9QS0VZX3ByaW50X3ByaXZhdGU7Ci0rCQlHRU5FUkFMX05BTUVfZ2V0MF92YWx1ZTsKLSsJCWIyaV9QVktfYmlvOwotKwkJQVNOMV9VVENUSU1FX2FkajsKLSsJCVRTX1RTVF9JTkZPX25ldzsKLSsJCUVWUF9NRF9kb19hbGxfc29ydGVkOwotKwkJVFNfQ09ORl9zZXRfZGVmYXVsdF9lbmdpbmU7Ci0rCQlUU19BQ0NVUkFDWV9zZXRfc2Vjb25kczsKLSsJCVRTX1RTVF9JTkZPX2dldF90aW1lOwotKwkJUEtDUzhfcGtleV9nZXQwOwotKwkJRVZQX1BLRVlfYXNuMV9nZXQwOwotKwkJT0JKX2FkZF9zaWdpZDsKLSsJCVBLQ1M3X1NJR05FUl9JTkZPX3NpZ247Ci0rCQlFVlBfUEtFWV9wYXJhbWdlbl9pbml0OwotKwkJRVZQX1BLRVlfc2lnbjsKLSsJCU9CSl9zaWdpZF9mcmVlOwotKwkJRVZQX1BLRVlfbWV0aF9zZXRfaW5pdDsKLSsJCWQyaV9FU1NfSVNTVUVSX1NFUklBTDsKLSsJCUlTU1VJTkdfRElTVF9QT0lOVF9uZXc7Ci0rCQlBU04xX1RJTUVfYWRqOwotKwkJVFNfT0JKX3ByaW50X2JpbzsKLSsJCUVWUF9QS0VZX21ldGhfc2V0X3ZlcmlmeV9yZWNvdmVyOwotKwkJRVZQX1BLRVlfbWV0aF9zZXRfdnJmeV9yZWNvdmVyOwotKwkJVFNfUkVTUF9nZXRfc3RhdHVzX2luZm87Ci0rCQlDTVNfc3RyZWFtOwotKwkJRVZQX1BLRVlfQ1RYX3NldF9jYjsKLSsJCVBLQ1M3X3RvX1RTX1RTVF9JTkZPOwotKwkJQVNOMV9QQ1RYX2dldF9vaWRfZmxhZ3M7Ci0rCQlUU19UU1RfSU5GT19hZGRfZXh0OwotKwkJRVZQX1BLRVlfbWV0aF9zZXRfZGVyaXZlOwotKwkJaTJkX1RTX1JFU1BfZnA7Ci0rCQlpMmRfVFNfTVNHX0lNUFJJTlRfYmlvOwotKwkJVFNfUkVTUF9DVFhfc2V0X2FjY3VyYWN5OwotKwkJVFNfUkVRX3NldF9ub25jZTsKLSsJCUVTU19DRVJUX0lEX25ldzsKLSsJCUVOR0lORV9wa2V5X2FzbjFfZmluZF9zdHI7Ci0rCQlUU19SRVFfZ2V0X2V4dF9jb3VudDsKLSsJCUJVRl9yZXZlcnNlOwotKwkJVFNfVFNUX0lORk9fcHJpbnRfYmlvOwotKwkJZDJpX0lTU1VJTkdfRElTVF9QT0lOVDsKLSsJCUVOR0lORV9nZXRfcGtleV9tZXRoczsKLSsJCWkyYl9Qcml2YXRlS2V5X2JpbzsKLSsJCWkyZF9UU19SRVNQOwotKwkJYjJpX1B1YmxpY0tleTsKLSsJCVRTX1ZFUklGWV9DVFhfY2xlYW51cDsKLSsJCVRTX1NUQVRVU19JTkZPX2ZyZWU7Ci0rCQlUU19SRVNQX3ZlcmlmeV90b2tlbjsKLSsJCU9CSl9ic2VhcmNoX2V4XzsKLSsJCUFTTjFfYm5fcHJpbnQ7Ci0rCQlFVlBfUEtFWV9hc24xX2dldF9jb3VudDsKLSsJCUVOR0lORV9yZWdpc3Rlcl9wa2V5X2FzbjFfbWV0aHM7Ci0rCQlBU04xX1BDVFhfc2V0X25tX2ZsYWdzOwotKwkJRVZQX0RpZ2VzdFZlcmlmeUluaXQ7Ci0rCQlFTkdJTkVfc2V0X2RlZmF1bHRfcGtleV9tZXRoczsKLSsJCVRTX1RTVF9JTkZPX2dldF9wb2xpY3lfaWQ7Ci0rCQlUU19SRVFfZ2V0X2NlcnRfcmVxOwotKwkJWDUwOV9DUkxfc2V0X21ldGhfZGF0YTsKLSsJCVBLQ1M4X3BrZXlfc2V0MDsKLSsJCUFTTjFfU1RSSU5HX2NvcHk7Ci0rCQlkMmlfVFNfVFNUX0lORk9fZnA7Ci0rCQlYNTA5X0NSTF9tYXRjaDsKLSsJCUVWUF9QS0VZX2FzbjFfc2V0X3ByaXZhdGU7Ci0rCQlUU19UU1RfSU5GT19nZXRfZXh0X2QyaTsKLSsJCVRTX1JFU1BfQ1RYX2FkZF9wb2xpY3k7Ci0rCQlkMmlfVFNfUkVTUDsKLSsJCVRTX0NPTkZfbG9hZF9jZXJ0czsKLSsJCVRTX1RTVF9JTkZPX2dldF9tc2dfaW1wcmludDsKLSsJCUVSUl9sb2FkX1RTX3N0cmluZ3M7Ci0rCQlUU19UU1RfSU5GT19nZXRfdmVyc2lvbjsKLSsJCUVWUF9QS0VZX0NUWF9kdXA7Ci0rCQlFVlBfUEtFWV9tZXRoX3NldF92ZXJpZnk7Ci0rCQlpMmJfUHVibGljS2V5X2JpbzsKLSsJCVRTX0NPTkZfc2V0X2NlcnRzOwotKwkJRVZQX1BLRVlfYXNuMV9nZXQwX2luZm87Ci0rCQlUU19WRVJJRllfQ1RYX2ZyZWU7Ci0rCQlUU19SRVFfZ2V0X2V4dF9ieV9jcml0aWNhbDsKLSsJCVRTX1JFU1BfQ1RYX3NldF9zZXJpYWxfY2I7Ci0rCQlYNTA5X0NSTF9nZXRfbWV0aF9kYXRhOwotKwkJVFNfUkVTUF9DVFhfc2V0X3RpbWVfY2I7Ci0rCQlUU19NU0dfSU1QUklOVF9nZXRfbXNnOwotKwkJVFNfVFNUX0lORk9fZXh0X2ZyZWU7Ci0rCQlUU19SRVFfZ2V0X3ZlcnNpb247Ci0rCQlUU19SRVFfYWRkX2V4dDsKLSsJCUVWUF9QS0VZX0NUWF9zZXRfYXBwX2RhdGE7Ci0rCQlPQkpfYnNlYXJjaF87Ci0rCQlFVlBfUEtFWV9tZXRoX3NldF92ZXJpZnljdHg7Ci0rCQlpMmRfUEtDUzdfYmlvX3N0cmVhbTsKLSsJCUNSWVBUT19USFJFQURJRF9zZXRfbnVtZXJpYzsKLSsJCVBLQ1M3X3NpZ25fYWRkX3NpZ25lcjsKLSsJCWQyaV9UU19UU1RfSU5GT19iaW87Ci0rCQlUU19UU1RfSU5GT19nZXRfb3JkZXJpbmc7Ci0rCQlUU19SRVNQX3ByaW50X2JpbzsKLSsJCVRTX1RTVF9JTkZPX2dldF9leHRzOwotKwkJSE1BQ19DVFhfY29weTsKLSsJCVBLQ1M1X3BiZTJfc2V0X2l2OwotKwkJRU5HSU5FX2dldF9wa2V5X2FzbjFfbWV0aHM7Ci0rCQliMmlfUHJpdmF0ZUtleTsKLSsJCUVWUF9QS0VZX0NUWF9nZXRfYXBwX2RhdGE7Ci0rCQlUU19SRVFfc2V0X2NlcnRfcmVxOwotKwkJQ1JZUFRPX1RIUkVBRElEX3NldF9jYWxsYmFjazsKLSsJCVRTX0NPTkZfc2V0X3NlcmlhbDsKLSsJCVRTX1RTVF9JTkZPX2ZyZWU7Ci0rCQlkMmlfVFNfUkVRX2ZwOwotKwkJVFNfUkVTUF92ZXJpZnlfcmVzcG9uc2U7Ci0rCQlpMmRfRVNTX0lTU1VFUl9TRVJJQUw7Ci0rCQlUU19BQ0NVUkFDWV9nZXRfc2Vjb25kczsKLSsJCUVWUF9DSVBIRVJfZG9fYWxsOwotKwkJYjJpX1ByaXZhdGVLZXlfYmlvOwotKwkJT0NTUF9DRVJUSURfZHVwOwotKwkJWDUwOV9QVUJLRVlfZ2V0MF9wYXJhbTsKLSsJCVRTX01TR19JTVBSSU5UX2R1cDsKLSsJCVBLQ1M3X3ByaW50X2N0eDsKLSsJCWkyZF9UU19SRVFfYmlvOwotKwkJRVZQX3doaXJscG9vbDsKLSsJCUVWUF9QS0VZX2FzbjFfc2V0X3BhcmFtOwotKwkJRVZQX1BLRVlfbWV0aF9zZXRfZW5jcnlwdDsKLSsJCUFTTjFfUENUWF9zZXRfZmxhZ3M7Ci0rCQlpMmRfRVNTX0NFUlRfSUQ7Ci0rCQlUU19WRVJJRllfQ1RYX25ldzsKLSsJCVRTX1JFU1BfQ1RYX3NldF9leHRlbnNpb25fY2I7Ci0rCQlFTkdJTkVfcmVnaXN0ZXJfYWxsX3BrZXlfbWV0aHM7Ci0rCQlUU19SRVNQX0NUWF9zZXRfc3RhdHVzX2luZm9fY29uZDsKLSsJCVRTX1JFU1BfQ1RYX3NldF9zdGF0X2luZm9fY29uZDsKLSsJCUVWUF9QS0VZX3ZlcmlmeTsKLSsJCVdISVJMUE9PTF9GaW5hbDsKLSsJCVg1MDlfQ1JMX01FVEhPRF9uZXc7Ci0rCQlFVlBfRGlnZXN0U2lnbkZpbmFsOwotKwkJVFNfUkVTUF9DVFhfc2V0X2RlZl9wb2xpY3k7Ci0rCQlORVRTQ0FQRV9YNTA5X2l0OwotKwkJVFNfUkVTUF9jcmVhdGVfcmVzcG9uc2U7Ci0rCQlQS0NTN19TSUdORVJfSU5GT19nZXQwX2FsZ3M7Ci0rCQlUU19UU1RfSU5GT19nZXRfbm9uY2U7Ci0rCQlFVlBfUEtFWV9kZWNyeXB0X29sZDsKLSsJCVRTX1RTVF9JTkZPX3NldF9wb2xpY3lfaWQ7Ci0rCQlUU19DT05GX3NldF9lc3NfY2VydF9pZF9jaGFpbjsKLSsJCUVWUF9QS0VZX0NUWF9nZXQwX3BrZXk7Ci0rCQlkMmlfVFNfUkVROwotKwkJRVZQX1BLRVlfYXNuMV9maW5kX3N0cjsKLSsJCUJJT19mX2FzbjE7Ci0rCQlFU1NfU0lHTklOR19DRVJUX25ldzsKLSsJCUVWUF9QQkVfZmluZDsKLSsJCVg1MDlfQ1JMX2dldDBfYnlfY2VydDsKLSsJCUVWUF9QS0VZX2Rlcml2ZTsKLSsJCWkyZF9UU19SRVE7Ci0rCQlUU19UU1RfSU5GT19kZWxldGVfZXh0OwotKwkJRVNTX0lTU1VFUl9TRVJJQUxfZnJlZTsKLSsJCUFTTjFfUENUWF9zZXRfc3RyX2ZsYWdzOwotKwkJRU5HSU5FX2dldF9wa2V5X2FzbjFfbWV0aF9zdHI7Ci0rCQlUU19DT05GX3NldF9zaWduZXJfa2V5OwotKwkJVFNfQUNDVVJBQ1lfZ2V0X21pbGxpczsKLSsJCVRTX1JFU1BfZ2V0X3Rva2VuOwotKwkJVFNfQUNDVVJBQ1lfZHVwOwotKwkJRU5HSU5FX3JlZ2lzdGVyX2FsbF9wa2V5X2FzbjFfbWV0aHM7Ci0rCQlFTkdJTkVfcmVnX2FsbF9wa2V5X2FzbjFfbWV0aHM7Ci0rCQlYNTA5X0NSTF9zZXRfZGVmYXVsdF9tZXRob2Q7Ci0rCQlDUllQVE9fVEhSRUFESURfaGFzaDsKLSsJCUNNU19Db250ZW50SW5mb19wcmludF9jdHg7Ci0rCQlUU19SRVNQX2ZyZWU7Ci0rCQlJU1NVSU5HX0RJU1RfUE9JTlRfZnJlZTsKLSsJCUVTU19JU1NVRVJfU0VSSUFMX25ldzsKLSsJCUNNU19hZGQxX2NybDsKLSsJCVBLQ1M3X2FkZDFfYXR0cmliX2RpZ2VzdDsKLSsJCVRTX1JFU1BfQ1RYX2FkZF9tZDsKLSsJCVRTX1RTVF9JTkZPX2R1cDsKLSsJCUVOR0lORV9zZXRfcGtleV9hc24xX21ldGhzOwotKwkJUEVNX3dyaXRlX2Jpb19QYXJhbWV0ZXJzOwotKwkJVFNfVFNUX0lORk9fZ2V0X2FjY3VyYWN5OwotKwkJWDUwOV9DUkxfZ2V0MF9ieV9zZXJpYWw7Ci0rCQlUU19UU1RfSU5GT19zZXRfdmVyc2lvbjsKLSsJCVRTX1JFU1BfQ1RYX2dldF90c3RfaW5mbzsKLSsJCVRTX1JFU1BfdmVyaWZ5X3NpZ25hdHVyZTsKLSsJCUNSWVBUT19USFJFQURJRF9nZXRfY2FsbGJhY2s7Ci0rCQlUU19UU1RfSU5GT19nZXRfdHNhOwotKwkJVFNfU1RBVFVTX0lORk9fbmV3OwotKwkJRVZQX1BLRVlfQ1RYX2dldF9jYjsKLSsJCVRTX1JFUV9nZXRfZXh0X2QyaTsKLSsJCUdFTkVSQUxfTkFNRV9zZXQwX290aGVybmFtZTsKLSsJCVRTX1RTVF9JTkZPX2dldF9leHRfY291bnQ7Ci0rCQlUU19SRVNQX0NUWF9nZXRfcmVxdWVzdDsKLSsJCWkyZF9ORVRTQ0FQRV9YNTA5OwotKwkJRU5HSU5FX2dldF9wa2V5X21ldGhfZW5naW5lOwotKwkJRVZQX1BLRVlfbWV0aF9zZXRfc2lnbmN0eDsKLSsJCUVWUF9QS0VZX2FzbjFfY29weTsKLSsJCUFTTjFfVFlQRV9jbXA7Ci0rCQlFVlBfQ0lQSEVSX2RvX2FsbF9zb3J0ZWQ7Ci0rCQlFVlBfUEtFWV9DVFhfZnJlZTsKLSsJCUlTU1VJTkdfRElTVF9QT0lOVF9pdDsKLSsJCWQyaV9UU19NU0dfSU1QUklOVF9mcDsKLSsJCVg1MDlfU1RPUkVfZ2V0MV9jZXJ0czsKLSsJCUVWUF9QS0VZX0NUWF9nZXRfb3BlcmF0aW9uOwotKwkJZDJpX0VTU19TSUdOSU5HX0NFUlQ7Ci0rCQlUU19DT05GX3NldF9vcmRlcmluZzsKLSsJCUVWUF9QQkVfYWxnX2FkZF90eXBlOwotKwkJVFNfUkVRX3NldF92ZXJzaW9uOwotKwkJRVZQX1BLRVlfZ2V0MDsKLSsJCUJJT19hc24xX3NldF9zdWZmaXg7Ci0rCQlpMmRfVFNfU1RBVFVTX0lORk87Ci0rCQlFVlBfTURfZG9fYWxsOwotKwkJVFNfVFNUX0lORk9fc2V0X2FjY3VyYWN5OwotKwkJUEtDUzdfYWRkX2F0dHJpYl9jb250ZW50X3R5cGU7Ci0rCQlFUlJfcmVtb3ZlX3RocmVhZF9zdGF0ZTsKLSsJCUVWUF9QS0VZX21ldGhfYWRkMDsKLSsJCVRTX1RTVF9JTkZPX3NldF90c2E7Ci0rCQlFVlBfUEtFWV9tZXRoX25ldzsKLSsJCVdISVJMUE9PTF9VcGRhdGU7Ci0rCQlUU19DT05GX3NldF9hY2N1cmFjeTsKLSsJCUFTTjFfUENUWF9zZXRfb2lkX2ZsYWdzOwotKwkJRVNTX1NJR05JTkdfQ0VSVF9kdXA7Ci0rCQlkMmlfVFNfUkVRX2JpbzsKLSsJCVg1MDlfdGltZV9hZGpfZXg7Ci0rCQlUU19SRVNQX0NUWF9hZGRfZmxhZ3M7Ci0rCQlkMmlfVFNfU1RBVFVTX0lORk87Ci0rCQlUU19NU0dfSU1QUklOVF9zZXRfbXNnOwotKwkJQklPX2FzbjFfZ2V0X3N1ZmZpeDsKLSsJCVRTX1JFUV9mcmVlOwotKwkJRVZQX1BLRVlfbWV0aF9mcmVlOwotKwkJVFNfUkVRX2dldF9leHRzOwotKwkJVFNfUkVTUF9DVFhfc2V0X2Nsb2NrX3ByZWNpc2lvbl9kaWdpdHM7Ci0rCQlUU19SRVNQX0NUWF9zZXRfY2xrX3ByZWNfZGlnaXRzOwotKwkJVFNfUkVTUF9DVFhfYWRkX2ZhaWx1cmVfaW5mbzsKLSsJCWkyZF9UU19SRVNQX2JpbzsKLSsJCUVWUF9QS0VZX0NUWF9nZXQwX3BlZXJrZXk7Ci0rCQlQRU1fd3JpdGVfYmlvX0NNU19zdHJlYW07Ci0rCQlUU19SRVFfbmV3OwotKwkJVFNfTVNHX0lNUFJJTlRfbmV3OwotKwkJRVZQX1BLRVlfbWV0aF9maW5kOwotKwkJRVZQX1BLRVlfaWQ7Ci0rCQlUU19UU1RfSU5GT19zZXRfc2VyaWFsOwotKwkJYTJpX0dFTkVSQUxfTkFNRTsKLSsJCVRTX0NPTkZfc2V0X2NyeXB0b19kZXZpY2U7Ci0rCQlFVlBfUEtFWV92ZXJpZnlfaW5pdDsKLSsJCVRTX0NPTkZfc2V0X3BvbGljaWVzOwotKwkJQVNOMV9QQ1RYX25ldzsKLSsJCUVTU19DRVJUX0lEX2ZyZWU7Ci0rCQlFTkdJTkVfdW5yZWdpc3Rlcl9wa2V5X21ldGhzOwotKwkJVFNfTVNHX0lNUFJJTlRfZnJlZTsKLSsJCVRTX1ZFUklGWV9DVFhfaW5pdDsKLSsJCVBLQ1M3X3N0cmVhbTsKLSsJCVRTX1JFU1BfQ1RYX3NldF9jZXJ0czsKLSsJCVRTX0NPTkZfc2V0X2RlZl9wb2xpY3k7Ci0rCQlBU04xX0dFTkVSQUxJWkVEVElNRV9hZGo7Ci0rCQlORVRTQ0FQRV9YNTA5X25ldzsKLSsJCVRTX0FDQ1VSQUNZX2ZyZWU7Ci0rCQlUU19SRVNQX2dldF90c3RfaW5mbzsKLSsJCUVWUF9QS0VZX2Rlcml2ZV9zZXRfcGVlcjsKLSsJCVBFTV9yZWFkX2Jpb19QYXJhbWV0ZXJzOwotKwkJVFNfQ09ORl9zZXRfY2xvY2tfcHJlY2lzaW9uX2RpZ2l0czsKLSsJCVRTX0NPTkZfc2V0X2Nsa19wcmVjX2RpZ2l0czsKLSsJCUVTU19JU1NVRVJfU0VSSUFMX2R1cDsKLSsJCVRTX0FDQ1VSQUNZX2dldF9taWNyb3M7Ci0rCQlBU04xX1BDVFhfZ2V0X3N0cl9mbGFnczsKLSsJCU5BTUVfQ09OU1RSQUlOVFNfY2hlY2s7Ci0rCQlBU04xX0JJVF9TVFJJTkdfY2hlY2s7Ci0rCQlYNTA5X2NoZWNrX2FraWQ7Ci0rCQlFTkdJTkVfdW5yZWdpc3Rlcl9wa2V5X2FzbjFfbWV0aHM7Ci0rCQlFTkdJTkVfdW5yZWdfcGtleV9hc24xX21ldGhzOwotKwkJQVNOMV9QQ1RYX2ZyZWU7Ci0rCQlQRU1fd3JpdGVfYmlvX0FTTjFfc3RyZWFtOwotKwkJaTJkX0FTTjFfYmlvX3N0cmVhbTsKLSsJCVRTX1g1MDlfQUxHT1JfcHJpbnRfYmlvOwotKwkJRVZQX1BLRVlfbWV0aF9zZXRfY2xlYW51cDsKLSsJCUVWUF9QS0VZX2FzbjFfZnJlZTsKLSsJCUVTU19TSUdOSU5HX0NFUlRfZnJlZTsKLSsJCVRTX1RTVF9JTkZPX3NldF9tc2dfaW1wcmludDsKLSsJCUdFTkVSQUxfTkFNRV9jbXA7Ci0rCQlkMmlfQVNOMV9TRVRfQU5ZOwotKwkJRU5HSU5FX3NldF9wa2V5X21ldGhzOwotKwkJaTJkX1RTX1JFUV9mcDsKLSsJCWQyaV9BU04xX1NFUVVFTkNFX0FOWTsKLSsJCUdFTkVSQUxfTkFNRV9nZXQwX290aGVyTmFtZTsKLSsJCWQyaV9FU1NfQ0VSVF9JRDsKLSsJCU9CSl9maW5kX3NpZ2lkX2FsZ3M7Ci0rCQlFVlBfUEtFWV9tZXRoX3NldF9rZXlnZW47Ci0rCQlQS0NTNV9QQktERjJfSE1BQzsKLSsJCUVWUF9QS0VZX3BhcmFtZ2VuOwotKwkJRVZQX1BLRVlfbWV0aF9zZXRfcGFyYW1nZW47Ci0rCQlCSU9fbmV3X1BLQ1M3OwotKwkJRVZQX1BLRVlfdmVyaWZ5X3JlY292ZXI7Ci0rCQlUU19leHRfcHJpbnRfYmlvOwotKwkJVFNfQVNOMV9JTlRFR0VSX3ByaW50X2JpbzsKLSsJCWNoZWNrX2RlZmVyOwotKwkJRFNPX3BhdGhieWFkZHI7Ci0rCQlFVlBfUEtFWV9zZXRfdHlwZTsKLSsJCVRTX0FDQ1VSQUNZX3NldF9taWNyb3M7Ci0rCQlUU19SRVFfdG9fVFNfVkVSSUZZX0NUWDsKLSsJCUVWUF9QS0VZX21ldGhfc2V0X2NvcHk7Ci0rCQlBU04xX1BDVFhfc2V0X2NlcnRfZmxhZ3M7Ci0rCQlUU19UU1RfSU5GT19nZXRfZXh0OwotKwkJRVZQX1BLRVlfYXNuMV9zZXRfY3RybDsKLSsJCVRTX1RTVF9JTkZPX2dldF9leHRfYnlfY3JpdGljYWw7Ci0rCQlFVlBfUEtFWV9DVFhfbmV3X2lkOwotKwkJVFNfUkVRX2dldF9leHRfYnlfT0JKOwotKwkJVFNfQ09ORl9zZXRfc2lnbmVyX2NlcnQ7Ci0rCQlYNTA5X05BTUVfaGFzaF9vbGQ7Ci0rCQlBU04xX1RJTUVfc2V0X3N0cmluZzsKLSsJCUVWUF9NRF9mbGFnczsKLSsJCVRTX1JFU1BfQ1RYX2ZyZWU7Ci0rCQlEU0FwYXJhbXNfZHVwOwotKwkJREhwYXJhbXNfZHVwOwotKwkJT0NTUF9SRVFfQ1RYX2FkZDFfaGVhZGVyOwotKwkJT0NTUF9SRVFfQ1RYX3NldDFfcmVxOwotKwkJWDUwOV9TVE9SRV9zZXRfdmVyaWZ5X2NiOwotKwkJWDUwOV9TVE9SRV9DVFhfZ2V0MF9jdXJyZW50X2NybDsKLSsJCVg1MDlfU1RPUkVfQ1RYX2dldDBfcGFyZW50X2N0eDsKLSsJCVg1MDlfU1RPUkVfQ1RYX2dldDBfY3VycmVudF9pc3N1ZXI7Ci0rCQlYNTA5X1NUT1JFX0NUWF9nZXQwX2N1cl9pc3N1ZXI7Ci0rCQlYNTA5X2lzc3Vlcl9uYW1lX2hhc2hfb2xkOwotKwkJWDUwOV9zdWJqZWN0X25hbWVfaGFzaF9vbGQ7Ci0rCQlFVlBfQ0lQSEVSX0NUWF9jb3B5OwotKwkJVUlfbWV0aG9kX2dldF9wcm9tcHRfY29uc3RydWN0b3I7Ci0rCQlVSV9tZXRob2RfZ2V0X3Byb21wdF9jb25zdHJ1Y3RyOwotKwkJVUlfbWV0aG9kX3NldF9wcm9tcHRfY29uc3RydWN0b3I7Ci0rCQlVSV9tZXRob2Rfc2V0X3Byb21wdF9jb25zdHJ1Y3RyOwotKwkJRVZQX3JlYWRfcHdfc3RyaW5nX21pbjsKLSsJCUNSWVBUT19jdHMxMjhfZW5jcnlwdDsKLSsJCUNSWVBUT19jdHMxMjhfZGVjcnlwdF9ibG9jazsKLSsJCUNSWVBUT19jZmIxMjhfMV9lbmNyeXB0OwotKwkJQ1JZUFRPX2NiYzEyOF9lbmNyeXB0OwotKwkJQ1JZUFRPX2N0cjEyOF9lbmNyeXB0OwotKwkJQ1JZUFRPX29mYjEyOF9lbmNyeXB0OwotKwkJQ1JZUFRPX2N0czEyOF9kZWNyeXB0OwotKwkJQ1JZUFRPX2N0czEyOF9lbmNyeXB0X2Jsb2NrOwotKwkJQ1JZUFRPX2NiYzEyOF9kZWNyeXB0OwotKwkJQ1JZUFRPX2NmYjEyOF9lbmNyeXB0OwotKwkJQ1JZUFRPX2NmYjEyOF84X2VuY3J5cHQ7Ci0rCQlTU0xfcmVuZWdvdGlhdGVfYWJicmV2aWF0ZWQ7Ci0rCQlUTFN2MV8xX21ldGhvZDsKLSsJCVRMU3YxXzFfY2xpZW50X21ldGhvZDsKLSsJCVRMU3YxXzFfc2VydmVyX21ldGhvZDsKLSsJCVNTTF9DVFhfc2V0X3NycF9jbGllbnRfcHdkX2NhbGxiYWNrOwotKwkJU1NMX0NUWF9zZXRfc3JwX2NsaWVudF9wd2RfY2I7Ci0rCQlTU0xfZ2V0X3NycF9nOwotKwkJU1NMX0NUWF9zZXRfc3JwX3VzZXJuYW1lX2NhbGxiYWNrOwotKwkJU1NMX0NUWF9zZXRfc3JwX3VuX2NiOwotKwkJU1NMX2dldF9zcnBfdXNlcmluZm87Ci0rCQlTU0xfc2V0X3NycF9zZXJ2ZXJfcGFyYW07Ci0rCQlTU0xfc2V0X3NycF9zZXJ2ZXJfcGFyYW1fcHc7Ci0rCQlTU0xfZ2V0X3NycF9OOwotKwkJU1NMX2dldF9zcnBfdXNlcm5hbWU7Ci0rCQlTU0xfQ1RYX3NldF9zcnBfcGFzc3dvcmQ7Ci0rCQlTU0xfQ1RYX3NldF9zcnBfc3RyZW5ndGg7Ci0rCQlTU0xfQ1RYX3NldF9zcnBfdmVyaWZ5X3BhcmFtX2NhbGxiYWNrOwotKwkJU1NMX0NUWF9zZXRfc3JwX3ZmeV9wYXJhbV9jYjsKLSsJCVNTTF9DVFhfc2V0X3NycF9jYl9hcmc7Ci0rCQlTU0xfQ1RYX3NldF9zcnBfdXNlcm5hbWU7Ci0rCQlTU0xfQ1RYX1NSUF9DVFhfaW5pdDsKLSsJCVNTTF9TUlBfQ1RYX2luaXQ7Ci0rCQlTUlBfQ2FsY19BX3BhcmFtOwotKwkJU1JQX2dlbmVyYXRlX3NlcnZlcl9tYXN0ZXJfc2VjcmV0OwotKwkJU1JQX2dlbl9zZXJ2ZXJfbWFzdGVyX3NlY3JldDsKLSsJCVNTTF9DVFhfU1JQX0NUWF9mcmVlOwotKwkJU1JQX2dlbmVyYXRlX2NsaWVudF9tYXN0ZXJfc2VjcmV0OwotKwkJU1JQX2dlbl9jbGllbnRfbWFzdGVyX3NlY3JldDsKLSsJCVNTTF9zcnBfc2VydmVyX3BhcmFtX3dpdGhfdXNlcm5hbWU7Ci0rCQlTU0xfc3JwX3NlcnZlcl9wYXJhbV93aXRoX3VuOwotKwkJU1NMX1NSUF9DVFhfZnJlZTsKLSsJCVNTTF9zZXRfZGVidWc7Ci0rCQlTU0xfU0VTU0lPTl9nZXQwX3BlZXI7Ci0rCQlUTFN2MV8yX2NsaWVudF9tZXRob2Q7Ci0rCQlTU0xfU0VTU0lPTl9zZXQxX2lkX2NvbnRleHQ7Ci0rCQlUTFN2MV8yX3NlcnZlcl9tZXRob2Q7Ci0rCQlTU0xfY2FjaGVfaGl0OwotKwkJU1NMX2dldDBfa3NzbF9jdHg7Ci0rCQlTU0xfc2V0MF9rc3NsX2N0eDsKLSsJCVNTTF9zZXRfc3RhdGU7Ci0rCQlTU0xfQ0lQSEVSX2dldF9pZDsKLSsJCVRMU3YxXzJfbWV0aG9kOwotKwkJa3NzbF9jdHhfZ2V0MF9jbGllbnRfcHJpbmM7Ci0rCQlTU0xfZXhwb3J0X2tleWluZ19tYXRlcmlhbDsKLSsJCVNTTF9zZXRfdGxzZXh0X3VzZV9zcnRwOwotKwkJU1NMX0NUWF9zZXRfbmV4dF9wcm90b3NfYWR2ZXJ0aXNlZF9jYjsKLSsJCVNTTF9DVFhfc2V0X25leHRfcHJvdG9zX2Fkdl9jYjsKLSsJCVNTTF9nZXQwX25leHRfcHJvdG9fbmVnb3RpYXRlZDsKLSsJCVNTTF9nZXRfc2VsZWN0ZWRfc3J0cF9wcm9maWxlOwotKwkJU1NMX0NUWF9zZXRfdGxzZXh0X3VzZV9zcnRwOwotKwkJU1NMX3NlbGVjdF9uZXh0X3Byb3RvOwotKwkJU1NMX2dldF9zcnRwX3Byb2ZpbGVzOwotKwkJU1NMX0NUWF9zZXRfbmV4dF9wcm90b19zZWxlY3RfY2I7Ci0rCQlTU0xfQ1RYX3NldF9uZXh0X3Byb3RvX3NlbF9jYjsKLSsJCVNTTF9TRVNTSU9OX2dldF9jb21wcmVzc19pZDsKLSsKLSsJCVNSUF9WQkFTRV9nZXRfYnlfdXNlcjsKLSsJCVNSUF9DYWxjX3NlcnZlcl9rZXk7Ci0rCQlTUlBfY3JlYXRlX3ZlcmlmaWVyOwotKwkJU1JQX2NyZWF0ZV92ZXJpZmllcl9CTjsKLSsJCVNSUF9DYWxjX3U7Ci0rCQlTUlBfVkJBU0VfZnJlZTsKLSsJCVNSUF9DYWxjX2NsaWVudF9rZXk7Ci0rCQlTUlBfZ2V0X2RlZmF1bHRfZ047Ci0rCQlTUlBfQ2FsY194OwotKwkJU1JQX0NhbGNfQjsKLSsJCVNSUF9WQkFTRV9uZXc7Ci0rCQlTUlBfY2hlY2tfa25vd25fZ05fcGFyYW07Ci0rCQlTUlBfQ2FsY19BOwotKwkJU1JQX1ZlcmlmeV9BX21vZF9OOwotKwkJU1JQX1ZCQVNFX2luaXQ7Ci0rCQlTUlBfVmVyaWZ5X0JfbW9kX047Ci0rCQlFQ19LRVlfc2V0X3B1YmxpY19rZXlfYWZmaW5lX2Nvb3JkaW5hdGVzOwotKwkJRUNfS0VZX3NldF9wdWJfa2V5X2FmZl9jb29yZHM7Ci0rCQlFVlBfYWVzXzE5Ml9jdHI7Ci0rCQlFVlBfUEtFWV9tZXRoX2dldDBfaW5mbzsKLSsJCUVWUF9QS0VZX21ldGhfY29weTsKLSsJCUVSUl9hZGRfZXJyb3JfdmRhdGE7Ci0rCQlFVlBfYWVzXzEyOF9jdHI7Ci0rCQlFVlBfYWVzXzI1Nl9jdHI7Ci0rCQlFQ19HRnBfbmlzdHAyMjRfbWV0aG9kOwotKwkJRUNfS0VZX2dldF9mbGFnczsKLSsJCVJTQV9wYWRkaW5nX2FkZF9QS0NTMV9QU1NfbWdmMTsKLSsJCUVWUF9hZXNfMTI4X3h0czsKLSsJCUVWUF9hZXNfMjU2X3h0czsKLSsJCUVWUF9hZXNfMTI4X2djbTsKLSsJCUVDX0tFWV9jbGVhcl9mbGFnczsKLSsJCUVDX0tFWV9zZXRfZmxhZ3M7Ci0rCQlFVlBfYWVzXzI1Nl9jY207Ci0rCQlSU0FfdmVyaWZ5X1BLQ1MxX1BTU19tZ2YxOwotKwkJRVZQX2Flc18xMjhfY2NtOwotKwkJRVZQX2Flc18xOTJfZ2NtOwotKwkJWDUwOV9BTEdPUl9zZXRfbWQ7Ci0rCQlSQU5EX2luaXRfZmlwczsKLSsJCUVWUF9hZXNfMjU2X2djbTsKLSsJCUVWUF9hZXNfMTkyX2NjbTsKLSsJCUNNQUNfQ1RYX2NvcHk7Ci0rCQlDTUFDX0NUWF9mcmVlOwotKwkJQ01BQ19DVFhfZ2V0MF9jaXBoZXJfY3R4OwotKwkJQ01BQ19DVFhfY2xlYW51cDsKLSsJCUNNQUNfSW5pdDsKLSsJCUNNQUNfVXBkYXRlOwotKwkJQ01BQ19yZXN1bWU7Ci0rCQlDTUFDX0NUWF9uZXc7Ci0rCQlDTUFDX0ZpbmFsOwotKwkJQ1JZUFRPX2N0cjEyOF9lbmNyeXB0X2N0cjMyOwotKwkJQ1JZUFRPX2djbTEyOF9yZWxlYXNlOwotKwkJQ1JZUFRPX2NjbTEyOF9kZWNyeXB0X2NjbTY0OwotKwkJQ1JZUFRPX2NjbTEyOF9lbmNyeXB0OwotKwkJQ1JZUFRPX2djbTEyOF9lbmNyeXB0OwotKwkJQ1JZUFRPX3h0czEyOF9lbmNyeXB0OwotKwkJRVZQX3JjNF9obWFjX21kNTsKLSsJCUNSWVBUT19uaXN0Y3RzMTI4X2RlY3J5cHRfYmxvY2s7Ci0rCQlDUllQVE9fZ2NtMTI4X3NldGl2OwotKwkJQ1JZUFRPX25pc3RjdHMxMjhfZW5jcnlwdDsKLSsJCUVWUF9hZXNfMTI4X2NiY19obWFjX3NoYTE7Ci0rCQlDUllQVE9fZ2NtMTI4X3RhZzsKLSsJCUNSWVBUT19jY20xMjhfZW5jcnlwdF9jY202NDsKLSsJCUVOR0lORV9sb2FkX3JkcmFuZDsKLSsJCUNSWVBUT19jY20xMjhfc2V0aXY7Ci0rCQlDUllQVE9fbmlzdGN0czEyOF9lbmNyeXB0X2Jsb2NrOwotKwkJQ1JZUFRPX2djbTEyOF9hYWQ7Ci0rCQlDUllQVE9fY2NtMTI4X2luaXQ7Ci0rCQlDUllQVE9fbmlzdGN0czEyOF9kZWNyeXB0OwotKwkJQ1JZUFRPX2djbTEyOF9uZXc7Ci0rCQlDUllQVE9fY2NtMTI4X3RhZzsKLSsJCUNSWVBUT19jY20xMjhfZGVjcnlwdDsKLSsJCUNSWVBUT19jY20xMjhfYWFkOwotKwkJQ1JZUFRPX2djbTEyOF9pbml0OwotKwkJQ1JZUFRPX2djbTEyOF9kZWNyeXB0OwotKwkJRU5HSU5FX2xvYWRfcnNheDsKLSsJCUNSWVBUT19nY20xMjhfZGVjcnlwdF9jdHIzMjsKLSsJCUNSWVBUT19nY20xMjhfZW5jcnlwdF9jdHIzMjsKLSsJCUNSWVBUT19nY20xMjhfZmluaXNoOwotKwkJRVZQX2Flc18yNTZfY2JjX2htYWNfc2hhMTsKLSsJCVBLQ1M1X3Bia2RmMl9zZXQ7Ci0rCQlDTVNfYWRkMF9yZWNpcGllbnRfcGFzc3dvcmQ7Ci0rCQlDTVNfZGVjcnlwdF9zZXQxX3Bhc3N3b3JkOwotKwkJQ01TX1JlY2lwaWVudEluZm9fc2V0MF9wYXNzd29yZDsKLSsJCVJBTkRfc2V0X2ZpcHNfZHJiZ190eXBlOwotKwkJWDUwOV9SRVFfc2lnbl9jdHg7Ci0rCQlSU0FfUFNTX1BBUkFNU19uZXc7Ci0rCQlYNTA5X0NSTF9zaWduX2N0eDsKLSsJCVg1MDlfc2lnbmF0dXJlX2R1bXA7Ci0rCQlkMmlfUlNBX1BTU19QQVJBTVM7Ci0rCQlSU0FfUFNTX1BBUkFNU19pdDsKLSsJCVJTQV9QU1NfUEFSQU1TX2ZyZWU7Ci0rCQlYNTA5X3NpZ25fY3R4OwotKwkJaTJkX1JTQV9QU1NfUEFSQU1TOwotKwkJQVNOMV9pdGVtX3NpZ25fY3R4OwotKwkJRUNfR0ZwX25pc3RwNTIxX21ldGhvZDsKLSsJCUVDX0dGcF9uaXN0cDI1Nl9tZXRob2Q7Ci0rCQlPUEVOU1NMX3N0ZGVycjsKLSsJCU9QRU5TU0xfY3B1aWRfc2V0dXA7Ci0rCQlPUEVOU1NMX3Nob3dmYXRhbDsKLSsJCUJJT19uZXdfZGdyYW1fc2N0cDsKLSsJCUJJT19kZ3JhbV9zY3RwX21zZ193YWl0aW5nOwotKwkJQklPX2RncmFtX3NjdHBfd2FpdF9mb3JfZHJ5OwotKwkJQklPX3NfZGF0YWdyYW1fc2N0cDsKLSsJCUJJT19kZ3JhbV9pc19zY3RwOwotKwkJQklPX2RncmFtX3NjdHBfbm90aWZpY2F0aW9uX2NiOwotKwkJQ1JZUFRPX21lbWNtcDsKLSsJCVNTTF9DVFhfc2V0X2FscG5fcHJvdG9zOwotKwkJU1NMX3NldF9hbHBuX3Byb3RvczsKLSsJCVNTTF9DVFhfc2V0X2FscG5fc2VsZWN0X2NiOwotKwkJU1NMX2dldDBfYWxwbl9zZWxlY3RlZDsKLSsJCVNTTF9DVFhfc2V0X2N1c3RvbV9jbGlfZXh0OwotKwkJU1NMX0NUWF9zZXRfY3VzdG9tX3Nydl9leHQ7Ci0rCQlTU0xfQ1RYX3NldF9zcnZfc3VwcF9kYXRhOwotKwkJU1NMX0NUWF9zZXRfY2xpX3N1cHBfZGF0YTsKLSsJCVNTTF9zZXRfY2VydF9jYjsKLSsJCVNTTF9DVFhfdXNlX3NlcnZlcmluZm87Ci0rCQlTU0xfQ1RYX3VzZV9zZXJ2ZXJpbmZvX2ZpbGU7Ci0rCQlTU0xfQ1RYX3NldF9jZXJ0X2NiOwotKwkJU1NMX0NUWF9nZXQwX3BhcmFtOwotKwkJU1NMX2dldDBfcGFyYW07Ci0rCQlTU0xfY2VydHNfY2xlYXI7Ci0rCQlEVExTdjFfMl9tZXRob2Q7Ci0rCQlEVExTdjFfMl9zZXJ2ZXJfbWV0aG9kOwotKwkJRFRMU3YxXzJfY2xpZW50X21ldGhvZDsKLSsJCURUTFNfbWV0aG9kOwotKwkJRFRMU19zZXJ2ZXJfbWV0aG9kOwotKwkJRFRMU19jbGllbnRfbWV0aG9kOwotKwkJU1NMX0NUWF9nZXRfc3NsX21ldGhvZDsKLSsJCVNTTF9DVFhfZ2V0MF9jZXJ0aWZpY2F0ZTsKLSsJCVNTTF9DVFhfZ2V0MF9wcml2YXRla2V5OwotKwkJU1NMX0NPTVBfc2V0MF9jb21wcmVzc2lvbl9tZXRob2RzOwotKwkJU1NMX0NPTVBfZnJlZV9jb21wcmVzc2lvbl9tZXRob2RzOwotKwkJU1NMX0NJUEhFUl9maW5kOwotKwkJU1NMX2lzX3NlcnZlcjsKLSsJCVNTTF9DT05GX0NUWF9uZXc7Ci0rCQlTU0xfQ09ORl9DVFhfZmluaXNoOwotKwkJU1NMX0NPTkZfQ1RYX2ZyZWU7Ci0rCQlTU0xfQ09ORl9DVFhfc2V0X2ZsYWdzOwotKwkJU1NMX0NPTkZfQ1RYX2NsZWFyX2ZsYWdzOwotKwkJU1NMX0NPTkZfQ1RYX3NldDFfcHJlZml4OwotKwkJU1NMX0NPTkZfQ1RYX3NldF9zc2w7Ci0rCQlTU0xfQ09ORl9DVFhfc2V0X3NzbF9jdHg7Ci0rCQlTU0xfQ09ORl9jbWQ7Ci0rCQlTU0xfQ09ORl9jbWRfYXJndjsKLSsJCVNTTF9DT05GX2NtZF92YWx1ZV90eXBlOwotKwkJU1NMX3RyYWNlOwotKwkJU1NMX0NJUEhFUl9zdGFuZGFyZF9uYW1lOwotKwkJU1NMX2dldF90bHNhX3JlY29yZF9ieW5hbWU7Ci0rCQlBU04xX1RJTUVfZGlmZjsKLSsJCUJJT19oZXhfc3RyaW5nOwotKwkJQ01TX1JlY2lwaWVudEluZm9fZ2V0MF9wa2V5X2N0eDsKLSsJCUNNU19SZWNpcGllbnRJbmZvX2VuY3J5cHQ7Ci0rCQlDTVNfU2lnbmVySW5mb19nZXQwX3BrZXlfY3R4OwotKwkJQ01TX1NpZ25lckluZm9fZ2V0MF9tZF9jdHg7Ci0rCQlDTVNfU2lnbmVySW5mb19nZXQwX3NpZ25hdHVyZTsKLSsJCUNNU19SZWNpcGllbnRJbmZvX2thcmlfZ2V0MF9hbGc7Ci0rCQlDTVNfUmVjaXBpZW50SW5mb19rYXJpX2dldDBfcmVrczsKLSsJCUNNU19SZWNpcGllbnRJbmZvX2thcmlfZ2V0MF9vcmlnX2lkOwotKwkJQ01TX1JlY2lwaWVudEluZm9fa2FyaV9vcmlnX2lkX2NtcDsKLSsJCUNNU19SZWNpcGllbnRFbmNyeXB0ZWRLZXlfZ2V0MF9pZDsKLSsJCUNNU19SZWNpcGllbnRFbmNyeXB0ZWRLZXlfY2VydF9jbXA7Ci0rCQlDTVNfUmVjaXBpZW50SW5mb19rYXJpX3NldDBfcGtleTsKLSsJCUNNU19SZWNpcGllbnRJbmZvX2thcmlfZ2V0MF9jdHg7Ci0rCQlDTVNfUmVjaXBpZW50SW5mb19rYXJpX2RlY3J5cHQ7Ci0rCQlDTVNfU2hhcmVkSW5mb19lbmNvZGU7Ci0rCQlESF9jb21wdXRlX2tleV9wYWRkZWQ7Ci0rCQlkMmlfREh4cGFyYW1zOwotKwkJaTJkX0RIeHBhcmFtczsKLSsJCURIX2dldF8xMDI0XzE2MDsKLSsJCURIX2dldF8yMDQ4XzIyNDsKLSsJCURIX2dldF8yMDQ4XzI1NjsKLSsJCURIX0tERl9YOV80MjsKLSsJCUVDREhfS0RGX1g5XzYyOwotKwkJRUNEU0FfTUVUSE9EX25ldzsKLSsJCUVDRFNBX01FVEhPRF9mcmVlOwotKwkJRUNEU0FfTUVUSE9EX3NldF9hcHBfZGF0YTsKLSsJCUVDRFNBX01FVEhPRF9nZXRfYXBwX2RhdGE7Ci0rCQlFQ0RTQV9NRVRIT0Rfc2V0X3NpZ247Ci0rCQlFQ0RTQV9NRVRIT0Rfc2V0X3NpZ25fc2V0dXA7Ci0rCQlFQ0RTQV9NRVRIT0Rfc2V0X3ZlcmlmeTsKLSsJCUVDRFNBX01FVEhPRF9zZXRfZmxhZ3M7Ci0rCQlFQ0RTQV9NRVRIT0Rfc2V0X25hbWU7Ci0rCQlFVlBfZGVzX2VkZTNfd3JhcDsKLSsJCUVWUF9hZXNfMTI4X3dyYXA7Ci0rCQlFVlBfYWVzXzE5Ml93cmFwOwotKwkJRVZQX2Flc18yNTZfd3JhcDsKLSsJCUVWUF9hZXNfMTI4X2NiY19obWFjX3NoYTI1NjsKLSsJCUVWUF9hZXNfMjU2X2NiY19obWFjX3NoYTI1NjsKLSsJCUNSWVBUT18xMjhfd3JhcDsKLSsJCUNSWVBUT18xMjhfdW53cmFwOwotKwkJT0NTUF9SRVFfQ1RYX25iaW87Ci0rCQlPQ1NQX1JFUV9DVFhfbmV3OwotKwkJT0NTUF9zZXRfbWF4X3Jlc3BvbnNlX2xlbmd0aDsKLSsJCU9DU1BfUkVRX0NUWF9pMmQ7Ci0rCQlPQ1NQX1JFUV9DVFhfbmJpb19kMmk7Ci0rCQlPQ1NQX1JFUV9DVFhfZ2V0MF9tZW1fYmlvOwotKwkJT0NTUF9SRVFfQ1RYX2h0dHA7Ci0rCQlSU0FfcGFkZGluZ19hZGRfUEtDUzFfT0FFUF9tZ2YxOwotKwkJUlNBX3BhZGRpbmdfY2hlY2tfUEtDUzFfT0FFUF9tZ2YxOwotKwkJUlNBX09BRVBfUEFSQU1TX2ZyZWU7Ci0rCQlSU0FfT0FFUF9QQVJBTVNfaXQ7Ci0rCQlSU0FfT0FFUF9QQVJBTVNfbmV3OwotKwkJU1NMX2dldF9zaWdhbGdzOwotKwkJU1NMX2dldF9zaGFyZWRfc2lnYWxnczsKLSsJCVNTTF9jaGVja19jaGFpbjsKLSsJCVg1MDlfY2hhaW5fdXBfcmVmOwotKwkJWDUwOV9odHRwX25iaW87Ci0rCQlYNTA5X0NSTF9odHRwX25iaW87Ci0rCQlYNTA5X1JFVk9LRURfZHVwOwotKwkJaTJkX3JlX1g1MDlfdGJzOwotKwkJWDUwOV9nZXQwX3NpZ25hdHVyZTsKLSsJCVg1MDlfZ2V0X3NpZ25hdHVyZV9uaWQ7Ci0rCQlYNTA5X0NSTF9kaWZmOwotKwkJWDUwOV9jaGFpbl9jaGVja19zdWl0ZWI7Ci0rCQlYNTA5X0NSTF9jaGVja19zdWl0ZWI7Ci0rCQlYNTA5X2NoZWNrX2hvc3Q7Ci0rCQlYNTA5X2NoZWNrX2VtYWlsOwotKwkJWDUwOV9jaGVja19pcDsKLSsJCVg1MDlfY2hlY2tfaXBfYXNjOwotKwkJWDUwOV9TVE9SRV9zZXRfbG9va3VwX2NybHNfY2I7Ci0rCQlYNTA5X1NUT1JFX0NUWF9nZXQwX3N0b3JlOwotKwkJWDUwOV9WRVJJRllfUEFSQU1fc2V0MV9ob3N0OwotKwkJWDUwOV9WRVJJRllfUEFSQU1fYWRkMV9ob3N0OwotKwkJWDUwOV9WRVJJRllfUEFSQU1fc2V0X2hvc3RmbGFnczsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX2dldDBfcGVlcm5hbWU7Ci0rCQlYNTA5X1ZFUklGWV9QQVJBTV9zZXQxX2VtYWlsOwotKwkJWDUwOV9WRVJJRllfUEFSQU1fc2V0MV9pcDsKLSsJCVg1MDlfVkVSSUZZX1BBUkFNX3NldDFfaXBfYXNjOwotKwkJWDUwOV9WRVJJRllfUEFSQU1fZ2V0MF9uYW1lOwotKwkJWDUwOV9WRVJJRllfUEFSQU1fZ2V0X2NvdW50OwotKwkJWDUwOV9WRVJJRllfUEFSQU1fZ2V0MDsKLSsJCVg1MDlWM19FWFRfZnJlZTsKLSsJCUVDX0dST1VQX2dldF9tb250X2RhdGE7Ci0rCQlFQ19jdXJ2ZV9uaWQybmlzdDsKLSsJCUVDX2N1cnZlX25pc3QybmlkOwotKwkJUEVNX3dyaXRlX2Jpb19ESHhwYXJhbXM7Ci0rCQlQRU1fd3JpdGVfREh4cGFyYW1zOwotKwkJU1NMX0NUWF9hZGRfY2xpZW50X2N1c3RvbV9leHQ7Ci0rCQlTU0xfQ1RYX2FkZF9zZXJ2ZXJfY3VzdG9tX2V4dDsKLSsJCVNTTF9leHRlbnNpb25fc3VwcG9ydGVkOwotKwkJQlVGX3N0cm5sZW47Ci0rCQlza19kZWVwX2NvcHk7Ci0rCQlTU0xfdGVzdF9mdW5jdGlvbnM7Ci0rCi0rCWxvY2FsOgotKwkJKjsKLSt9OwotKwotK09QRU5TU0xfMS4wLjJnIHsKLSsgICAgICAgZ2xvYmFsOgotKyAgICAgICAgICAgICAgIFNSUF9WQkFTRV9nZXQxX2J5X3VzZXI7Ci0rICAgICAgICAgICAgICAgU1JQX3VzZXJfcHdkX2ZyZWU7Ci0rfSBPUEVOU1NMXzEuMC4yZDsKLSsKLUluZGV4OiBvcGVuc3NsLTEuMC4yfmJldGExLm9ic29sZXRlLjAuMDQ5ODQzNjUxNTQ5MDU3NS9lbmdpbmVzL29wZW5zc2wubGQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBvcGVuc3NsLTEuMC4yfmJldGExLm9ic29sZXRlLjAuMDQ5ODQzNjUxNTQ5MDU3NS9lbmdpbmVzL29wZW5zc2wubGQJMjAxNC0wMi0yNCAyMTowMjozMC4wMDAwMDAwMDAgKzAxMDAKLUBAIC0wLDAgKzEsMTAgQEAKLStPUEVOU1NMXzEuMC4yIHsKLSsJZ2xvYmFsOgotKwkJYmluZF9lbmdpbmU7Ci0rCQl2X2NoZWNrOwotKwkJT1BFTlNTTF9pbml0OwotKwkJT1BFTlNTTF9maW5pc2g7Ci0rCWxvY2FsOgotKwkJKjsKLSt9OwotKwotSW5kZXg6IG9wZW5zc2wtMS4wLjJ+YmV0YTEub2Jzb2xldGUuMC4wNDk4NDM2NTE1NDkwNTc1L2VuZ2luZXMvY2Nnb3N0L29wZW5zc2wubGQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBvcGVuc3NsLTEuMC4yfmJldGExLm9ic29sZXRlLjAuMDQ5ODQzNjUxNTQ5MDU3NS9lbmdpbmVzL2NjZ29zdC9vcGVuc3NsLmxkCTIwMTQtMDItMjQgMjE6MDI6MzAuMDAwMDAwMDAwICswMTAwCi1AQCAtMCwwICsxLDEwIEBACi0rT1BFTlNTTF8xLjAuMiB7Ci0rCWdsb2JhbDoKLSsJCWJpbmRfZW5naW5lOwotKwkJdl9jaGVjazsKLSsJCU9QRU5TU0xfaW5pdDsKLSsJCU9QRU5TU0xfZmluaXNoOwotKwlsb2NhbDoKLSsJCSo7Ci0rfTsKLSsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9maXgtY2lwaGVyLWRlcy1lZGUzLWNmYjEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvZml4LWNpcGhlci1kZXMtZWRlMy1jZmIxLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTMxOGE0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9maXgtY2lwaGVyLWRlcy1lZGUzLWNmYjEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotCi1UaGlzIHBhdGNoIGFkZHMgdGhlIGZpeCBmb3Igb25lIG9mIHRoZSBjaXBoZXJzIHVzZWQgaW4gb3BlbnNzbCwgbmFtZWx5Ci10aGUgY2lwaGVyIGRlcy1lZGUzLWNmYjEuIENvbXBsZXRlIGJ1ZyBsb2cgYW5kIHBhdGNoIGlzIHByZXNlbnQgaGVyZToKLWh0dHA6Ly9ydC5vcGVuc3NsLm9yZy9UaWNrZXQvRGlzcGxheS5odG1sP2lkPTI4NjcKLQotU2lnbmVkLW9mZi1ieTogTXVoYW1tYWQgU2hha2VlbCA8bXVoYW1tYWRfc2hha2VlbEBtZW50b3IuY29tPgotCi1JbmRleDogb3BlbnNzbC0xLjAuMi9jcnlwdG8vZXZwL2VfZGVzMy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gb3BlbnNzbC0xLjAuMi5vcmlnL2NyeXB0by9ldnAvZV9kZXMzLmMKLSsrKyBvcGVuc3NsLTEuMC4yL2NyeXB0by9ldnAvZV9kZXMzLmMKLUBAIC0yMTEsNyArMjExLDcgQEAgc3RhdGljIGludCBkZXNfZWRlM19jZmIxX2NpcGhlcihFVlBfQ0lQSAotICAgICBzaXplX3QgbjsKLSAgICAgdW5zaWduZWQgY2hhciBjWzFdLCBkWzFdOwotIAotLSAgICBmb3IgKG4gPSAwOyBuIDwgaW5sOyArK24pIHsKLSsgICAgZm9yIChuID0gMDsgbiAqIDggPCBpbmw7ICsrbikgewotICAgICAgICAgY1swXSA9IChpbltuIC8gOF0gJiAoMSA8PCAoNyAtIG4gJSA4KSkpID8gMHg4MCA6IDA7Ci0gICAgICAgICBERVNfZWRlM19jZmJfZW5jcnlwdChjLCBkLCAxLCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRhdGEoY3R4KS0+a3MxLCAmZGF0YShjdHgpLT5rczIsCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvb3BlbnNzbC1hdm9pZC1OVUxMLXBvaW50ZXItZGVyZWZlcmVuY2UtaW4tRVZQX0RpZ2VzdEluaXRfZXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wvb3BlbnNzbC1hdm9pZC1OVUxMLXBvaW50ZXItZGVyZWZlcmVuY2UtaW4tRVZQX0RpZ2VzdEluaXRfZXgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3MzZlNWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL29wZW5zc2wtYXZvaWQtTlVMTC1wb2ludGVyLWRlcmVmZXJlbmNlLWluLUVWUF9EaWdlc3RJbml0X2V4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotb3BlbnNzbDogYXZvaWQgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIEVWUF9EaWdlc3RJbml0X2V4KCkKLQotV2Ugc2hvdWxkIGF2b2lkIGFjY2Vzc2luZyB0aGUgdHlwZSBwb2ludGVyIGlmIGl0J3MgTlVMTCwKLXRoaXMgY291bGQgaGFwcGVuIGlmIGN0eC0+ZGlnZXN0IGlzIG5vdCBOVUxMLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotaHR0cDovL3d3dy5tYWlsLWFyY2hpdmUuY29tL29wZW5zc2wtZGV2QG9wZW5zc2wub3JnL21zZzMyODYwLmh0bWwKLQotU2lnbmVkLW9mZi1ieTogWHVmZW5nIFpoYW5nIDx4dWZlbmcuemhhbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotSW5kZXg6IG9wZW5zc2wtMS4wLjJoL2NyeXB0by9ldnAvZGlnZXN0LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBvcGVuc3NsLTEuMC4yaC5vcmlnL2NyeXB0by9ldnAvZGlnZXN0LmMKLSsrKyBvcGVuc3NsLTEuMC4yaC9jcnlwdG8vZXZwL2RpZ2VzdC5jCi1AQCAtMjExLDcgKzIxMSw3IEBAIGludCBFVlBfRGlnZXN0SW5pdF9leChFVlBfTURfQ1RYICpjdHgsIGMKLSAgICAgICAgIHR5cGUgPSBjdHgtPmRpZ2VzdDsKLSAgICAgfQotICNlbmRpZgotLSAgICBpZiAoY3R4LT5kaWdlc3QgIT0gdHlwZSkgewotKyAgICBpZiAodHlwZSAmJiAoY3R4LT5kaWdlc3QgIT0gdHlwZSkpIHsKLSAgICAgICAgIGlmIChjdHgtPmRpZ2VzdCAmJiBjdHgtPmRpZ2VzdC0+Y3R4X3NpemUpIHsKLSAgICAgICAgICAgICBPUEVOU1NMX2ZyZWUoY3R4LT5tZF9kYXRhKTsKLSAgICAgICAgICAgICBjdHgtPm1kX2RhdGEgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL3BhcmFsbGVsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL3BhcmFsbGVsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmM2Y0Yzk5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9wYXJhbGxlbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzNyArMCwwIEBACi1GaXggdGhlIHBhcmFsbGVsIHJhY2VzIGluIHRoZSBNYWtlZmlsZXMuCi0KLVRoaXMgcGF0Y2ggd2FzIHRha2VuIGZyb20gdGhlIEdlbnRvbyBwYWNrYWdpbmc6Ci1odHRwczovL2dpdHdlYi5nZW50b28ub3JnL3JlcG8vZ2VudG9vLmdpdC9wbGFpbi9kZXYtbGlicy9vcGVuc3NsL2ZpbGVzL29wZW5zc2wtMS4wLjJnLXBhcmFsbGVsLWJ1aWxkLnBhdGNoCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotUmVmcmVzaGVkIGZvciAxLjAuMmkKLVNpZ25lZC1vZmYtYnk6IFBhdHJpY2sgT2hseSA8cGF0cmljay5vaGx5QGludGVsLmNvbT4KLQotLS0tIG9wZW5zc2wtMS4wLjJnL2NyeXB0by9NYWtlZmlsZQotKysrIG9wZW5zc2wtMS4wLjJnL2NyeXB0by9NYWtlZmlsZQotQEAgLTg1LDExICs4NSwxMSBAQAotIAlAaWYgWyAteiAiJChUSElTKSIgXTsgdGhlbiAkKE1BS0UpIC1mICQoVE9QKS9NYWtlZmlsZSByZWZsZWN0IFRISVM9JEA7IGZpCi0gCi0gc3ViZGlyczoKLS0JQHRhcmdldD1hbGw7ICQoUkVDVVJTSVZFX01BS0UpCi0rCStAdGFyZ2V0PWFsbDsgJChSRUNVUlNJVkVfTUFLRSkKLSAKLSBmaWxlczoKLSAJJChQRVJMKSAkKFRPUCkvdXRpbC9maWxlcy5wbCAiQ1BVSURfT0JKPSQoQ1BVSURfT0JKKSIgTWFrZWZpbGUgPj4gJChUT1ApL01JTkZPCi0tCUB0YXJnZXQ9ZmlsZXM7ICQoUkVDVVJTSVZFX01BS0UpCi0rCStAdGFyZ2V0PWZpbGVzOyAkKFJFQ1VSU0lWRV9NQUtFKQotIAotIGxpbmtzOgotIAlAJChQRVJMKSAkKFRPUCkvdXRpbC9ta2xpbmsucGwgLi4vaW5jbHVkZS9vcGVuc3NsICQoRVhIRUFERVIpCi1AQCAtMTAwLDcgKzEwMCw3IEBACi0gIyBsaWI6ICQoTElCKTogYXJlIHNwbGl0dGVkIHRvIGF2b2lkIGVuZC1sZXNzIGxvb3AKLSBsaWI6CSQoTElCKQotIAlAdG91Y2ggbGliCi0tJChMSUIpOgkkKExJQk9CSikKLSskKExJQik6CSQoTElCT0JKKSB8IHN1YmRpcnMKLSAJJChBUikgJChMSUIpICQoTElCT0JKKQotIAl0ZXN0IC16ICIkKEZJUFNMSUJESVIpIiB8fCAkKEFSKSAkKExJQikgJChGSVBTTElCRElSKWZpcHNjYW5pc3Rlci5vCi0gCSQoUkFOTElCKSAkKExJQikgfHwgZWNobyBOZXZlciBtaW5kLgotQEAgLTExMSw3ICsxMTEsNyBAQAotIAlmaQotIAotIGxpYnM6Ci0tCUB0YXJnZXQ9bGliOyAkKFJFQ1VSU0lWRV9NQUtFKQotKwkrQHRhcmdldD1saWI7ICQoUkVDVVJTSVZFX01BS0UpCi0gCi0gaW5zdGFsbDoKLSAJQFsgLW4gIiQoSU5TVEFMTFRPUCkiIF0gIyBzaG91bGQgYmUgc2V0IGJ5IHRvcCBNYWtlZmlsZS4uLgotQEAgLTEyMCw3ICsxMjAsNyBAQAotIAkoY3AgJCRpICQoSU5TVEFMTF9QUkVGSVgpJChJTlNUQUxMVE9QKS9pbmNsdWRlL29wZW5zc2wvJCRpOyBcCi0gCWNobW9kIDY0NCAkKElOU1RBTExfUFJFRklYKSQoSU5TVEFMTFRPUCkvaW5jbHVkZS9vcGVuc3NsLyQkaSApOyBcCi0gCWRvbmU7Ci0tCUB0YXJnZXQ9aW5zdGFsbDsgJChSRUNVUlNJVkVfTUFLRSkKLSsJK0B0YXJnZXQ9aW5zdGFsbDsgJChSRUNVUlNJVkVfTUFLRSkKLSAKLSBsaW50OgotIAlAdGFyZ2V0PWxpbnQ7ICQoUkVDVVJTSVZFX01BS0UpCi0tLS0gb3BlbnNzbC0xLjAuMmcvZW5naW5lcy9NYWtlZmlsZQotKysrIG9wZW5zc2wtMS4wLjJnL2VuZ2luZXMvTWFrZWZpbGUKLUBAIC03Miw3ICs3Miw3IEBACi0gCi0gYWxsOglsaWIgc3ViZGlycwotIAotLWxpYjoJJChMSUJPQkopCi0rbGliOgkkKExJQk9CSikgfCBzdWJkaXJzCi0gCUBpZiBbIC1uICIkKFNIQVJFRF9MSUJTKSIgXTsgdGhlbiBcCi0gCQlzZXQgLWU7IFwKLSAJCWZvciBsIGluICQoTElCTkFNRVMpOyBkbyBcCi1AQCAtODksNyArODksNyBAQAotIAotIHN1YmRpcnM6Ci0gCWVjaG8gJChFRElSUykKLS0JQHRhcmdldD1hbGw7ICQoUkVDVVJTSVZFX01BS0UpCi0rCStAdGFyZ2V0PWFsbDsgJChSRUNVUlNJVkVfTUFLRSkKLSAKLSBmaWxlczoKLSAJJChQRVJMKSAkKFRPUCkvdXRpbC9maWxlcy5wbCBNYWtlZmlsZSA+PiAkKFRPUCkvTUlORk8KLUBAIC0xMjgsNyArMTI4LDcgQEAKLSAJCQkgIG12IC1mICQoSU5TVEFMTF9QUkVGSVgpJChJTlNUQUxMVE9QKS8kKExJQkRJUikvZW5naW5lcy8kJHBmeCQkbCQkc2Z4Lm5ldyAkKElOU1RBTExfUFJFRklYKSQoSU5TVEFMTFRPUCkvJChMSUJESVIpL2VuZ2luZXMvJCRwZngkJGwkJHNmeCApOyBcCi0gCQlkb25lOyBcCi0gCWZpCi0tCUB0YXJnZXQ9aW5zdGFsbDsgJChSRUNVUlNJVkVfTUFLRSkKLSsJK0B0YXJnZXQ9aW5zdGFsbDsgJChSRUNVUlNJVkVfTUFLRSkKLSAKLSB0YWdzOgotIAljdGFncyAkKFNSQykKLS0tLSBvcGVuc3NsLTEuMC4yZy9NYWtlZmlsZS5vcmcKLSsrKyBvcGVuc3NsLTEuMC4yZy9NYWtlZmlsZS5vcmcKLUBAIC0yNzksMTcgKzI3OSwxNyBAQAotIGJ1aWxkX2xpYnNzbDogYnVpbGRfc3NsIGxpYnNzbC5wYwotIAotIGJ1aWxkX2NyeXB0bzoKLS0JQGRpcj1jcnlwdG87IHRhcmdldD1hbGw7ICQoQlVJTERfT05FX0NNRCkKLSsJK0BkaXI9Y3J5cHRvOyB0YXJnZXQ9YWxsOyAkKEJVSUxEX09ORV9DTUQpCi0gYnVpbGRfc3NsOiBidWlsZF9jcnlwdG8KLS0JQGRpcj1zc2w7IHRhcmdldD1hbGw7ICQoQlVJTERfT05FX0NNRCkKLSsJK0BkaXI9c3NsOyB0YXJnZXQ9YWxsOyAkKEJVSUxEX09ORV9DTUQpCi0gYnVpbGRfZW5naW5lczogYnVpbGRfY3J5cHRvCi0tCUBkaXI9ZW5naW5lczsgdGFyZ2V0PWFsbDsgJChCVUlMRF9PTkVfQ01EKQotKwkrQGRpcj1lbmdpbmVzOyB0YXJnZXQ9YWxsOyAkKEJVSUxEX09ORV9DTUQpCi0gYnVpbGRfYXBwczogYnVpbGRfbGlicwotLQlAZGlyPWFwcHM7IHRhcmdldD1hbGw7ICQoQlVJTERfT05FX0NNRCkKLSsJK0BkaXI9YXBwczsgdGFyZ2V0PWFsbDsgJChCVUlMRF9PTkVfQ01EKQotIGJ1aWxkX3Rlc3RzOiBidWlsZF9saWJzCi0tCUBkaXI9dGVzdDsgdGFyZ2V0PWFsbDsgJChCVUlMRF9PTkVfQ01EKQotKwkrQGRpcj10ZXN0OyB0YXJnZXQ9YWxsOyAkKEJVSUxEX09ORV9DTUQpCi0gYnVpbGRfdG9vbHM6IGJ1aWxkX2xpYnMKLS0JQGRpcj10b29sczsgdGFyZ2V0PWFsbDsgJChCVUlMRF9PTkVfQ01EKQotKwkrQGRpcj10b29sczsgdGFyZ2V0PWFsbDsgJChCVUlMRF9PTkVfQ01EKQotIAotIGFsbF90ZXN0YXBwczogYnVpbGRfbGlicyBidWlsZF90ZXN0YXBwcwotIGJ1aWxkX3Rlc3RhcHBzOgotQEAgLTU0NCw3ICs1NDQsNyBAQAotIAkoY3AgJCRpICQoSU5TVEFMTF9QUkVGSVgpJChJTlNUQUxMVE9QKS9pbmNsdWRlL29wZW5zc2wvJCRpOyBcCi0gCWNobW9kIDY0NCAkKElOU1RBTExfUFJFRklYKSQoSU5TVEFMTFRPUCkvaW5jbHVkZS9vcGVuc3NsLyQkaSApOyBcCi0gCWRvbmU7Ci0tCUBzZXQgLWU7IHRhcmdldD1pbnN0YWxsOyAkKFJFQ1VSU0lWRV9CVUlMRF9DTUQpCi0rCStAc2V0IC1lOyB0YXJnZXQ9aW5zdGFsbDsgJChSRUNVUlNJVkVfQlVJTERfQ01EKQotIAlAc2V0IC1lOyBsaWJsaXN0PSIkKExJQlMpIjsgZm9yIGkgaW4gJCRsaWJsaXN0IDtcCi0gCWRvIFwKLSAJCWlmIFsgLWYgIiQkaSIgXTsgdGhlbiBcCi0tLS0gb3BlbnNzbC0xLjAuMmcvTWFrZWZpbGUuc2hhcmVkCi0rKysgb3BlbnNzbC0xLjAuMmcvTWFrZWZpbGUuc2hhcmVkCi1AQCAtMTA1LDYgKzEwNSw3IEBACi0gICAgIFNIQVJFREZMQUdTPSIkJHtTSEFSRURGTEFHUzotJChDRkxBR1MpICQoU0hBUkVEX0xERkxBR1MpfSI7IFwKLSAgICAgTElCUEFUSD1gZm9yIHggaW4gJCRMSUJERVBTOyBkbyBlY2hvICQkeDsgZG9uZSB8IHNlZCAtZSAncy9eICotTC8vO3QnIC1lIGQgfCB1bmlxYDsgXAotICAgICBMSUJQQVRIPWBlY2hvICQkTElCUEFUSCB8IHNlZCAtZSAncy8gLzovZydgOyBcCi0rICAgIFsgLWUgJCRTSExJQiQkU0hMSUJfU09WRVIkJFNITElCX1NVRkZJWCBdICYmIGV4aXQgMDsgXAotICAgICBMRF9MSUJSQVJZX1BBVEg9JCRMSUJQQVRIOiQkTERfTElCUkFSWV9QQVRIIFwKLSAgICAgJCR7U0hBUkVEQ01EfSAkJHtTSEFSRURGTEFHU30gXAotIAktbyAkJFNITElCJCRTSExJQl9TT1ZFUiQkU0hMSUJfU1VGRklYIFwKLUBAIC0xMjIsNiArMTIzLDcgQEAKLSAJCQlkb25lOyBcCi0gCQlmaTsgXAotIAkJaWYgWyAtbiAiJCRTSExJQl9TT1ZFUiIgXTsgdGhlbiBcCi0rCQkJWyAtZSAiJCRTSExJQiQkU0hMSUJfU1VGRklYIiBdIHx8IFwKLSAJCQkoICQoU0VUX1gpOyBybSAtZiAkJFNITElCJCRTSExJQl9TVUZGSVg7IFwKLSAJCQkgIGxuIC1zICQkcHJldiAkJFNITElCJCRTSExJQl9TVUZGSVggKTsgXAotIAkJZmk7IFwKLS0tLSBvcGVuc3NsLTEuMC4yZy90ZXN0L01ha2VmaWxlCi0rKysgb3BlbnNzbC0xLjAuMmcvdGVzdC9NYWtlZmlsZQotQEAgLTE0NCw3ICsxNDQsNyBAQAotIHRhZ3M6Ci0gCWN0YWdzICQoU1JDKQotIAotLXRlc3RzOglleGUgYXBwcyAkKFRFU1RTKQotK3Rlc3RzOglleGUgJChURVNUUykKLSAKLSBhcHBzOgotIAlAKGNkIC4uOyAkKE1BS0UpIERJUlM9YXBwcyBhbGwpCi1AQCAtNDM4LDEzNiArNDM4LDEzNiBAQAotIAkJbGlua19hcHAuJCR7c2hsaWJfdGFyZ2V0fQotIAotICQoUlNBVEVTVCkkKEVYRV9FWFQpOiAkKFJTQVRFU1QpLm8gJChETElCQ1JZUFRPKQotLQlAdGFyZ2V0PSQoUlNBVEVTVCk7ICQoQlVJTERfQ01EKQotKwkrQHRhcmdldD0kKFJTQVRFU1QpOyAkKEJVSUxEX0NNRCkKLSAKLSAkKEJOVEVTVCkkKEVYRV9FWFQpOiAkKEJOVEVTVCkubyAkKERMSUJDUllQVE8pCi0tCUB0YXJnZXQ9JChCTlRFU1QpOyAkKEJVSUxEX0NNRCkKLSsJK0B0YXJnZXQ9JChCTlRFU1QpOyAkKEJVSUxEX0NNRCkKLSAKLSAkKEVDVEVTVCkkKEVYRV9FWFQpOiAkKEVDVEVTVCkubyAkKERMSUJDUllQVE8pCi0tCUB0YXJnZXQ9JChFQ1RFU1QpOyAkKEJVSUxEX0NNRCkKLSsJK0B0YXJnZXQ9JChFQ1RFU1QpOyAkKEJVSUxEX0NNRCkKLSAKLSAkKEVYUFRFU1QpJChFWEVfRVhUKTogJChFWFBURVNUKS5vICQoRExJQkNSWVBUTykKLS0JQHRhcmdldD0kKEVYUFRFU1QpOyAkKEJVSUxEX0NNRCkKLSsJK0B0YXJnZXQ9JChFWFBURVNUKTsgJChCVUlMRF9DTUQpCi0gCi0gJChJREVBVEVTVCkkKEVYRV9FWFQpOiAkKElERUFURVNUKS5vICQoRExJQkNSWVBUTykKLS0JQHRhcmdldD0kKElERUFURVNUKTsgJChCVUlMRF9DTUQpCi0rCStAdGFyZ2V0PSQoSURFQVRFU1QpOyAkKEJVSUxEX0NNRCkKLSAKLSAkKE1EMlRFU1QpJChFWEVfRVhUKTogJChNRDJURVNUKS5vICQoRExJQkNSWVBUTykKLS0JQHRhcmdldD0kKE1EMlRFU1QpOyAkKEJVSUxEX0NNRCkKLSsJK0B0YXJnZXQ9JChNRDJURVNUKTsgJChCVUlMRF9DTUQpCi0gCi0gJChTSEFURVNUKSQoRVhFX0VYVCk6ICQoU0hBVEVTVCkubyAkKERMSUJDUllQVE8pCi0tCUB0YXJnZXQ9JChTSEFURVNUKTsgJChCVUlMRF9DTUQpCi0rCStAdGFyZ2V0PSQoU0hBVEVTVCk7ICQoQlVJTERfQ01EKQotIAotICQoU0hBMVRFU1QpJChFWEVfRVhUKTogJChTSEExVEVTVCkubyAkKERMSUJDUllQVE8pCi0tCUB0YXJnZXQ9JChTSEExVEVTVCk7ICQoQlVJTERfQ01EKQotKwkrQHRhcmdldD0kKFNIQTFURVNUKTsgJChCVUlMRF9DTUQpCi0gCi0gJChTSEEyNTZURVNUKSQoRVhFX0VYVCk6ICQoU0hBMjU2VEVTVCkubyAkKERMSUJDUllQVE8pCi0tCUB0YXJnZXQ9JChTSEEyNTZURVNUKTsgJChCVUlMRF9DTUQpCi0rCStAdGFyZ2V0PSQoU0hBMjU2VEVTVCk7ICQoQlVJTERfQ01EKQotIAotICQoU0hBNTEyVEVTVCkkKEVYRV9FWFQpOiAkKFNIQTUxMlRFU1QpLm8gJChETElCQ1JZUFRPKQotLQlAdGFyZ2V0PSQoU0hBNTEyVEVTVCk7ICQoQlVJTERfQ01EKQotKwkrQHRhcmdldD0kKFNIQTUxMlRFU1QpOyAkKEJVSUxEX0NNRCkKLSAKLSAkKFJNRFRFU1QpJChFWEVfRVhUKTogJChSTURURVNUKS5vICQoRExJQkNSWVBUTykKLS0JQHRhcmdldD0kKFJNRFRFU1QpOyAkKEJVSUxEX0NNRCkKLSsJK0B0YXJnZXQ9JChSTURURVNUKTsgJChCVUlMRF9DTUQpCi0gCi0gJChNREMyVEVTVCkkKEVYRV9FWFQpOiAkKE1EQzJURVNUKS5vICQoRExJQkNSWVBUTykKLS0JQHRhcmdldD0kKE1EQzJURVNUKTsgJChCVUlMRF9DTUQpCi0rCStAdGFyZ2V0PSQoTURDMlRFU1QpOyAkKEJVSUxEX0NNRCkKLSAKLSAkKE1ENFRFU1QpJChFWEVfRVhUKTogJChNRDRURVNUKS5vICQoRExJQkNSWVBUTykKLS0JQHRhcmdldD0kKE1ENFRFU1QpOyAkKEJVSUxEX0NNRCkKLSsJK0B0YXJnZXQ9JChNRDRURVNUKTsgJChCVUlMRF9DTUQpCi0gCi0gJChNRDVURVNUKSQoRVhFX0VYVCk6ICQoTUQ1VEVTVCkubyAkKERMSUJDUllQVE8pCi0tCUB0YXJnZXQ9JChNRDVURVNUKTsgJChCVUlMRF9DTUQpCi0rCStAdGFyZ2V0PSQoTUQ1VEVTVCk7ICQoQlVJTERfQ01EKQotIAotICQoSE1BQ1RFU1QpJChFWEVfRVhUKTogJChITUFDVEVTVCkubyAkKERMSUJDUllQVE8pCi0tCUB0YXJnZXQ9JChITUFDVEVTVCk7ICQoQlVJTERfQ01EKQotKwkrQHRhcmdldD0kKEhNQUNURVNUKTsgJChCVUlMRF9DTUQpCi0gCi0gJChXUFRFU1QpJChFWEVfRVhUKTogJChXUFRFU1QpLm8gJChETElCQ1JZUFRPKQotLQlAdGFyZ2V0PSQoV1BURVNUKTsgJChCVUlMRF9DTUQpCi0rCStAdGFyZ2V0PSQoV1BURVNUKTsgJChCVUlMRF9DTUQpCi0gCi0gJChSQzJURVNUKSQoRVhFX0VYVCk6ICQoUkMyVEVTVCkubyAkKERMSUJDUllQVE8pCi0tCUB0YXJnZXQ9JChSQzJURVNUKTsgJChCVUlMRF9DTUQpCi0rCStAdGFyZ2V0PSQoUkMyVEVTVCk7ICQoQlVJTERfQ01EKQotIAotICQoQkZURVNUKSQoRVhFX0VYVCk6ICQoQkZURVNUKS5vICQoRExJQkNSWVBUTykKLS0JQHRhcmdldD0kKEJGVEVTVCk7ICQoQlVJTERfQ01EKQotKwkrQHRhcmdldD0kKEJGVEVTVCk7ICQoQlVJTERfQ01EKQotIAotICQoQ0FTVFRFU1QpJChFWEVfRVhUKTogJChDQVNUVEVTVCkubyAkKERMSUJDUllQVE8pCi0tCUB0YXJnZXQ9JChDQVNUVEVTVCk7ICQoQlVJTERfQ01EKQotKwkrQHRhcmdldD0kKENBU1RURVNUKTsgJChCVUlMRF9DTUQpCi0gCi0gJChSQzRURVNUKSQoRVhFX0VYVCk6ICQoUkM0VEVTVCkubyAkKERMSUJDUllQVE8pCi0tCUB0YXJnZXQ9JChSQzRURVNUKTsgJChCVUlMRF9DTUQpCi0rCStAdGFyZ2V0PSQoUkM0VEVTVCk7ICQoQlVJTERfQ01EKQotIAotICQoUkM1VEVTVCkkKEVYRV9FWFQpOiAkKFJDNVRFU1QpLm8gJChETElCQ1JZUFRPKQotLQlAdGFyZ2V0PSQoUkM1VEVTVCk7ICQoQlVJTERfQ01EKQotKwkrQHRhcmdldD0kKFJDNVRFU1QpOyAkKEJVSUxEX0NNRCkKLSAKLSAkKERFU1RFU1QpJChFWEVfRVhUKTogJChERVNURVNUKS5vICQoRExJQkNSWVBUTykKLS0JQHRhcmdldD0kKERFU1RFU1QpOyAkKEJVSUxEX0NNRCkKLSsJK0B0YXJnZXQ9JChERVNURVNUKTsgJChCVUlMRF9DTUQpCi0gCi0gJChSQU5EVEVTVCkkKEVYRV9FWFQpOiAkKFJBTkRURVNUKS5vICQoRExJQkNSWVBUTykKLS0JQHRhcmdldD0kKFJBTkRURVNUKTsgJChCVUlMRF9DTUQpCi0rCStAdGFyZ2V0PSQoUkFORFRFU1QpOyAkKEJVSUxEX0NNRCkKLSAKLSAkKERIVEVTVCkkKEVYRV9FWFQpOiAkKERIVEVTVCkubyAkKERMSUJDUllQVE8pCi0tCUB0YXJnZXQ9JChESFRFU1QpOyAkKEJVSUxEX0NNRCkKLSsJK0B0YXJnZXQ9JChESFRFU1QpOyAkKEJVSUxEX0NNRCkKLSAKLSAkKERTQVRFU1QpJChFWEVfRVhUKTogJChEU0FURVNUKS5vICQoRExJQkNSWVBUTykKLS0JQHRhcmdldD0kKERTQVRFU1QpOyAkKEJVSUxEX0NNRCkKLSsJK0B0YXJnZXQ9JChEU0FURVNUKTsgJChCVUlMRF9DTUQpCi0gCi0gJChNRVRIVEVTVCkkKEVYRV9FWFQpOiAkKE1FVEhURVNUKS5vICQoRExJQkNSWVBUTykKLS0JQHRhcmdldD0kKE1FVEhURVNUKTsgJChCVUlMRF9DTUQpCi0rCStAdGFyZ2V0PSQoTUVUSFRFU1QpOyAkKEJVSUxEX0NNRCkKLSAKLSAkKFNTTFRFU1QpJChFWEVfRVhUKTogJChTU0xURVNUKS5vICQoRExJQlNTTCkgJChETElCQ1JZUFRPKQotLQlAdGFyZ2V0PSQoU1NMVEVTVCk7ICQoRklQU19CVUlMRF9DTUQpCi0rCStAdGFyZ2V0PSQoU1NMVEVTVCk7ICQoRklQU19CVUlMRF9DTUQpCi0gCi0gJChFTkdJTkVURVNUKSQoRVhFX0VYVCk6ICQoRU5HSU5FVEVTVCkubyAkKERMSUJDUllQVE8pCi0tCUB0YXJnZXQ9JChFTkdJTkVURVNUKTsgJChCVUlMRF9DTUQpCi0rCStAdGFyZ2V0PSQoRU5HSU5FVEVTVCk7ICQoQlVJTERfQ01EKQotIAotICQoRVZQVEVTVCkkKEVYRV9FWFQpOiAkKEVWUFRFU1QpLm8gJChETElCQ1JZUFRPKQotLQlAdGFyZ2V0PSQoRVZQVEVTVCk7ICQoQlVJTERfQ01EKQotKwkrQHRhcmdldD0kKEVWUFRFU1QpOyAkKEJVSUxEX0NNRCkKLSAKLSAkKEVWUEVYVFJBVEVTVCkkKEVYRV9FWFQpOiAkKEVWUEVYVFJBVEVTVCkubyAkKERMSUJDUllQVE8pCi0tCUB0YXJnZXQ9JChFVlBFWFRSQVRFU1QpOyAkKEJVSUxEX0NNRCkKLSsJK0B0YXJnZXQ9JChFVlBFWFRSQVRFU1QpOyAkKEJVSUxEX0NNRCkKLSAKLSAkKEVDRFNBVEVTVCkkKEVYRV9FWFQpOiAkKEVDRFNBVEVTVCkubyAkKERMSUJDUllQVE8pCi0tCUB0YXJnZXQ9JChFQ0RTQVRFU1QpOyAkKEJVSUxEX0NNRCkKLSsJK0B0YXJnZXQ9JChFQ0RTQVRFU1QpOyAkKEJVSUxEX0NNRCkKLSAKLSAkKEVDREhURVNUKSQoRVhFX0VYVCk6ICQoRUNESFRFU1QpLm8gJChETElCQ1JZUFRPKQotLQlAdGFyZ2V0PSQoRUNESFRFU1QpOyAkKEJVSUxEX0NNRCkKLSsJK0B0YXJnZXQ9JChFQ0RIVEVTVCk7ICQoQlVJTERfQ01EKQotIAotICQoSUdFVEVTVCkkKEVYRV9FWFQpOiAkKElHRVRFU1QpLm8gJChETElCQ1JZUFRPKQotLQlAdGFyZ2V0PSQoSUdFVEVTVCk7ICQoQlVJTERfQ01EKQotKwkrQHRhcmdldD0kKElHRVRFU1QpOyAkKEJVSUxEX0NNRCkKLSAKLSAkKEpQQUtFVEVTVCkkKEVYRV9FWFQpOiAkKEpQQUtFVEVTVCkubyAkKERMSUJDUllQVE8pCi0tCUB0YXJnZXQ9JChKUEFLRVRFU1QpOyAkKEJVSUxEX0NNRCkKLSsJK0B0YXJnZXQ9JChKUEFLRVRFU1QpOyAkKEJVSUxEX0NNRCkKLSAKLSAkKEFTTjFURVNUKSQoRVhFX0VYVCk6ICQoQVNOMVRFU1QpLm8gJChETElCQ1JZUFRPKQotLQlAdGFyZ2V0PSQoQVNOMVRFU1QpOyAkKEJVSUxEX0NNRCkKLSsJK0B0YXJnZXQ9JChBU04xVEVTVCk7ICQoQlVJTERfQ01EKQotIAotICQoU1JQVEVTVCkkKEVYRV9FWFQpOiAkKFNSUFRFU1QpLm8gJChETElCQ1JZUFRPKQotLQlAdGFyZ2V0PSQoU1JQVEVTVCk7ICQoQlVJTERfQ01EKQotKwkrQHRhcmdldD0kKFNSUFRFU1QpOyAkKEJVSUxEX0NNRCkKLSAKLSAkKFYzTkFNRVRFU1QpJChFWEVfRVhUKTogJChWM05BTUVURVNUKS5vICQoRExJQkNSWVBUTykKLS0JQHRhcmdldD0kKFYzTkFNRVRFU1QpOyAkKEJVSUxEX0NNRCkKLSsJK0B0YXJnZXQ9JChWM05BTUVURVNUKTsgJChCVUlMRF9DTUQpCi0gCi0gJChIRUFSVEJFQVRURVNUKSQoRVhFX0VYVCk6ICQoSEVBUlRCRUFUVEVTVCkubyAkKERMSUJDUllQVE8pCi0tCUB0YXJnZXQ9JChIRUFSVEJFQVRURVNUKTsgJChCVUlMRF9DTURfU1RBVElDKQotKwkrQHRhcmdldD0kKEhFQVJUQkVBVFRFU1QpOyAkKEJVSUxEX0NNRF9TVEFUSUMpCi0gCi0gJChDT05TVFRJTUVURVNUKSQoRVhFX0VYVCk6ICQoQ09OU1RUSU1FVEVTVCkubwotLQlAdGFyZ2V0PSQoQ09OU1RUSU1FVEVTVCkgJChCVUlMRF9DTUQpCi0rCStAdGFyZ2V0PSQoQ09OU1RUSU1FVEVTVCkgJChCVUlMRF9DTUQpCi0gCi0gJChWRVJJRllFWFRSQVRFU1QpJChFWEVfRVhUKTogJChWRVJJRllFWFRSQVRFU1QpLm8KLS0JQHRhcmdldD0kKFZFUklGWUVYVFJBVEVTVCkgJChCVUlMRF9DTUQpCi0rCStAdGFyZ2V0PSQoVkVSSUZZRVhUUkFURVNUKSAkKEJVSUxEX0NNRCkKLSAKLSAkKENMSUVOVEhFTExPVEVTVCkkKEVYRV9FWFQpOiAkKENMSUVOVEhFTExPVEVTVCkubwotLQlAdGFyZ2V0PSQoQ0xJRU5USEVMTE9URVNUKSAkKEJVSUxEX0NNRCkKLSsJK0B0YXJnZXQ9JChDTElFTlRIRUxMT1RFU1QpICQoQlVJTERfQ01EKQotIAotICQoQkFERFRMU1RFU1QpJChFWEVfRVhUKTogJChCQUREVExTVEVTVCkubwotLQlAdGFyZ2V0PSQoQkFERFRMU1RFU1QpICQoQlVJTERfQ01EKQotKwkrQHRhcmdldD0kKEJBRERUTFNURVNUKSAkKEJVSUxEX0NNRCkKLSAKLSAkKFNTTFYyQ09ORlRFU1QpJChFWEVfRVhUKTogJChTU0xWMkNPTkZURVNUKS5vCi0tCUB0YXJnZXQ9JChTU0xWMkNPTkZURVNUKSAkKEJVSUxEX0NNRCkKLSsJK0B0YXJnZXQ9JChTU0xWMkNPTkZURVNUKSAkKEJVSUxEX0NNRCkKLSAKLSAkKERUTFNURVNUKSQoRVhFX0VYVCk6ICQoRFRMU1RFU1QpLm8gc3NsdGVzdGxpYi5vICQoRExJQlNTTCkgJChETElCQ1JZUFRPKQotLQlAdGFyZ2V0PSQoRFRMU1RFU1QpOyBleG9iaj1zc2x0ZXN0bGliLm87ICQoQlVJTERfQ01EKQotKwkrQHRhcmdldD0kKERUTFNURVNUKTsgZXhvYmo9c3NsdGVzdGxpYi5vOyAkKEJVSUxEX0NNRCkKLSAKLSAjJChBRVNURVNUKS5vOiAkKEFFU1RFU1QpLmMKLSAjCSQoQ0MpIC1jICQoQ0ZMQUdTKSAtRElOVEVSTUVESUFURV9WQUxVRV9LQVQgLURUUkFDRV9LQVRfTUNUICQoQUVTVEVTVCkuYwotQEAgLTU4MCw2ICs1ODAsNiBAQAotICMJZmkKLSAKLSBkdW1teXRlc3QkKEVYRV9FWFQpOiBkdW1teXRlc3QubyAkKERMSUJDUllQVE8pCi0tCUB0YXJnZXQ9ZHVtbXl0ZXN0OyAkKEJVSUxEX0NNRCkKLSsJK0B0YXJnZXQ9ZHVtbXl0ZXN0OyAkKEJVSUxEX0NNRCkKLSAKLSAjIERPIE5PVCBERUxFVEUgVEhJUyBMSU5FIC0tIG1ha2UgZGVwZW5kIGRlcGVuZHMgb24gaXQuCi0gClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL3J1bi1wdGVzdCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9ydW4tcHRlc3QKb2xkIG1vZGUgMTAwNzU1Cm5ldyBtb2RlIDEwMDY0NAppbmRleCAzYjIwZmNlLi42NWM2Y2M3Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9ydW4tcHRlc3QKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL3J1bi1wdGVzdApAQCAtMSwyICsxLDQgQEAKICMhL2Jpbi9zaAotbWFrZSAtayBydW50ZXN0CitjZCB0ZXN0CitPUEVOU1NMX0VOR0lORVM9Li4vZW5naW5lcyBCTERUT1A9Li4gU1JDVE9QPS4uIHBlcmwgcnVuX3Rlc3RzLnBsCitjZCAuLgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsMTAuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzZjk3ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2wxMC5pbmMKQEAgLTAsMCArMSwyNzUgQEAKK1NVTU1BUlkgPSAiU2VjdXJlIFNvY2tldCBMYXllciIKK0RFU0NSSVBUSU9OID0gIlNlY3VyZSBTb2NrZXQgTGF5ZXIgKFNTTCkgYmluYXJ5IGFuZCByZWxhdGVkIGNyeXB0b2dyYXBoaWMgdG9vbHMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly93d3cub3BlbnNzbC5vcmcvbmV3cy92dWxuZXJhYmlsaXRpZXMuaHRtbCIKK1NFQ1RJT04gPSAibGlicy9uZXR3b3JrIgorCisjICJvcGVuc3NsIHwgU1NMZWF5IiBkdWFsIGxpY2Vuc2UKK0xJQ0VOU0UgPSAib3BlbnNzbCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWY5YThmOTY4MTA3MzQ1ZTBiNzVhYThjMmVjYWE3ZWM4IgorCitERVBFTkRTID0gIm1ha2VkZXBlbmQtbmF0aXZlIGhvc3RwZXJsLXJ1bnRpbWUtbmF0aXZlIgorREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBvcGVuc3NsLW5hdGl2ZSIKKworUFJPVklERVMgKz0gIm9wZW5zc2wxMCIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm9wZW5zc2wub3JnL3NvdXJjZS9vcGVuc3NsLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIgorUyA9ICIke1dPUktESVJ9L29wZW5zc2wtJHtQVn0iCisKK1BBQ0tBR0VDT05GSUcgPz0gImNyeXB0b2Rldi1saW51eCIKK1BBQ0tBR0VDT05GSUdbcGVybF0gPSAiLCwsIgorUEFDS0FHRUNPTkZJR1tjcnlwdG9kZXYtbGludXhdID0gIi1ESEFWRV9DUllQVE9ERVYgLURVU0VfQ1JZUFRPREVWX0RJR0VTVFMsLGNyeXB0b2Rldi1saW51eCIKKworVEVSTUlPX2xpYmMtbXVzbCA9ICItRFRFUk1JT1MiCitURVJNSU8gPz0gIi1EVEVSTUlPIgorIyBBdm9pZCBiaW5hcmllcyBiZWluZyBtYXJrZWQgYXMgcmVxdWlyaW5nIGFuIGV4ZWN1dGFibGUgc3RhY2sgc2luY2UgaXQgCisjIGRvZXNuJ3Qod2hpY2ggY2F1c2VzIGFuZCB0aGlzIGNhdXNlcyBpc3N1ZXMgd2l0aCBTRUxpbnV4CitDRkxBRyA9ICIke0BiYXNlX2NvbmRpdGlvbmFsKCdTSVRFSU5GT19FTkRJQU5ORVNTJywgJ2xlJywgJy1ETF9FTkRJQU4nLCAnLURCX0VORElBTicsIGQpfSBcCisJICR7VEVSTUlPfSAke0NGTEFHU30gLVdhbGwgLVdhLC0tbm9leGVjc3RhY2siCisKK2V4cG9ydCBESVJTID0gImNyeXB0byBzc2wgYXBwcyIKK2V4cG9ydCBFWF9MSUJTID0gIi1sZ2NjIC1sZGwiCitleHBvcnQgQVMgPSAiJHtDQ30gLWMiCisKK2luaGVyaXQgcGtnY29uZmlnIHNpdGVpbmZvIG11bHRpbGliX2hlYWRlciBwdGVzdCByZWxhdGl2ZV9zeW1saW5rcworCitQQUNLQUdFUyA9KyAibGliY3J5cHRvIGxpYnNzbCAke1BOfS1taXNjIG9wZW5zc2wtY29uZiIKK0ZJTEVTX2xpYmNyeXB0byA9ICIke2xpYmRpcn0vbGliY3J5cHRvJHtTT0xJQlN9IgorRklMRVNfbGlic3NsID0gIiR7bGliZGlyfS9saWJzc2wke1NPTElCU30iCitGSUxFU18ke1BOfSA9KyAiICR7bGliZGlyfS9zc2wvKiIKK0ZJTEVTXyR7UE59LW1pc2MgPSAiJHtsaWJkaXJ9L3NzbC9taXNjIgorUkRFUEVORFNfJHtQTn0tbWlzYyA9ICIke0BiYi51dGlscy5maWx0ZXIoJ1BBQ0tBR0VDT05GSUcnLCAncGVybCcsIGQpfSIKKworIyBBZGQgdGhlIG9wZW5zc2wuY25mIGZpbGUgdG8gdGhlIG9wZW5zc2wtY29uZiBwYWNrYWdlLiAgTWFrZSB0aGUgbGliY3J5cHRvCisjIHBhY2thZ2UgUlJFQ09NTUVORFMgb24gdGhpcyBwYWNrYWdlLiAgVGhpcyB3aWxsIGVuYWJsZSB0aGUgY29uZmlndXJhdGlvbgorIyBmaWxlIHRvIGJlIGluc3RhbGxlZCBmb3IgYm90aCB0aGUgYmFzZSBvcGVuc3NsIHBhY2thZ2UgYW5kIHRoZSBsaWJjcnlwdG8KKyMgcGFja2FnZSBzaW5jZSB0aGUgYmFzZSBvcGVuc3NsIHBhY2thZ2UgZGVwZW5kcyBvbiB0aGUgbGliY3J5cHRvIHBhY2thZ2UuCitGSUxFU19vcGVuc3NsLWNvbmYgPSAiJHtzeXNjb25mZGlyfS9zc2wvb3BlbnNzbC5jbmYiCitDT05GRklMRVNfb3BlbnNzbC1jb25mID0gIiR7c3lzY29uZmRpcn0vc3NsL29wZW5zc2wuY25mIgorUlJFQ09NTUVORFNfbGliY3J5cHRvICs9ICJvcGVuc3NsLWNvbmYiCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiJHtQTn0tbWlzYyBtYWtlIHBlcmwgcGVybC1tb2R1bGUtZmlsZWhhbmRsZSBiYyIKKworIyBSZW1vdmUgdGhpcyB0byBlbmFibGUgU1NMdjMuIFNTTHYzIGlzIGRlZmF1bHRlZCB0byBkaXNhYmxlZCBkdWUgdG8gdGhlIFBPT0RMRQorIyB2dWxuZXJhYmlsaXR5CitFWFRSQV9PRUNPTkYgPSAiIC1uby1zc2wzIgorCitkb19jb25maWd1cmVfcHJlcGVuZF9kYXJ3aW4gKCkgeworCXNlZCAtaSAtZSAnL3ZlcnNpb24tc2NyaXB0PW9wZW5zc2xcLmxkL2QnIENvbmZpZ3VyZQorfQorCitkb19jb25maWd1cmUgKCkgeworCWNkIHV0aWwKKwlwZXJsIHBlcmxwYXRoLnBsICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfQorCWNkIC4uCisJbG4gLXNmIGFwcHMvb3BlbnNzbC5wb2QgY3J5cHRvL2NyeXB0by5wb2Qgc3NsL3NzbC5wb2QgZG9jLworCisJb3M9JHtIT1NUX09TfQorCWNhc2UgJG9zIGluCisJbGludXgtZ251ZWFiaSB8XAorCWxpbnV4LWdudXNwZSB8XAorCWxpbnV4LW11c2xlYWJpIHxcCisJbGludXgtbXVzbHNwZSB8XAorCWxpbnV4LW11c2wgKQorCQlvcz1saW51eAorCQk7OworCQkqKQorCQk7OworCWVzYWMKKwl0YXJnZXQ9IiRvcy0ke0hPU1RfQVJDSH0iCisJY2FzZSAkdGFyZ2V0IGluCisJbGludXgtYXJtKQorCQl0YXJnZXQ9bGludXgtYXJtdjQKKwkJOzsKKwlsaW51eC1hcm1lYikKKwkJdGFyZ2V0PWxpbnV4LWVsZi1hcm1lYgorCQk7OworCWxpbnV4LWFhcmNoNjQqKQorCQl0YXJnZXQ9bGludXgtYWFyY2g2NAorCQk7OworCWxpbnV4LXNoMykKKwkJdGFyZ2V0PWRlYmlhbi1zaDMKKwkJOzsKKwlsaW51eC1zaDQpCisJCXRhcmdldD1kZWJpYW4tc2g0CisJCTs7CisJbGludXgtaTQ4NikKKwkJdGFyZ2V0PWRlYmlhbi1pMzg2LWk0ODYKKwkJOzsKKwlsaW51eC1pNTg2IHwgbGludXgtdmlhYzMpCisJCXRhcmdldD1kZWJpYW4taTM4Ni1pNTg2CisJCTs7CisJbGludXgtaTY4NikKKwkJdGFyZ2V0PWRlYmlhbi1pMzg2LWk2ODYvY21vdgorCQk7OworCWxpbnV4LWdudXgzMi14ODZfNjQgfCBsaW51eC1tdXNseDMyLXg4Nl82NCApCisJCXRhcmdldD1saW51eC14MzIKKwkJOzsKKwlsaW51eC1nbnU2NC14ODZfNjQpCisJCXRhcmdldD1saW51eC14ODZfNjQKKwkJOzsKKwlsaW51eC1nbnVuMzItbWlwcyplbCkKKwkJdGFyZ2V0PWRlYmlhbi1taXBzbjMyZWwKKwkJOzsKKwlsaW51eC1nbnVuMzItbWlwcyopCisJCXRhcmdldD1kZWJpYW4tbWlwc24zMgorCQk7OworCWxpbnV4LW1pcHMqNjQqZWwpCisJCXRhcmdldD1kZWJpYW4tbWlwczY0ZWwKKwkJOzsKKwlsaW51eC1taXBzKjY0KikKKwkJdGFyZ2V0PWRlYmlhbi1taXBzNjQKKwkJOzsKKwlsaW51eC1taXBzKmVsKQorCQl0YXJnZXQ9ZGViaWFuLW1pcHNlbAorCQk7OworCWxpbnV4LW1pcHMqKQorCQl0YXJnZXQ9ZGViaWFuLW1pcHMKKwkJOzsKKwlsaW51eC1taWNyb2JsYXplKnxsaW51eC1uaW9zMip8bGludXgtZ251KmlscDMyKiopCisJCXRhcmdldD1saW51eC1nZW5lcmljMzIKKwkJOzsKKwlsaW51eC1wb3dlcnBjKQorCQl0YXJnZXQ9bGludXgtcHBjCisJCTs7CisJbGludXgtcG93ZXJwYzY0KQorCQl0YXJnZXQ9bGludXgtcHBjNjQKKwkJOzsKKwlsaW51eC1zdXBlcnNwYXJjKQorCQl0YXJnZXQ9bGludXgtc3BhcmN2OAorCQk7OworCWxpbnV4LXNwYXJjKQorCQl0YXJnZXQ9bGludXgtc3BhcmN2OAorCQk7OworCWRhcndpbi1pMzg2KQorCQl0YXJnZXQ9ZGFyd2luLWkzODYtY2MKKwkJOzsKKwllc2FjCisJIyBpbmplY3QgbWFjaGluZS1zcGVjaWZpYyBmbGFncworCXNlZCAtaSAtZSAic3xeXChcIiR0YXJnZXRcIixccypcIlteOl1cK1wpOlwoW146XVwrXCl8XDE6JHtDRkxBR318ZyIgQ29uZmlndXJlCisgICAgICAgIHVzZXByZWZpeD0ke3ByZWZpeH0KKyAgICAgICAgaWYgWyAieCR1c2VwcmVmaXgiID0gIngiIF07IHRoZW4KKyAgICAgICAgICAgICAgICB1c2VwcmVmaXg9LworICAgICAgICBmaSAgICAgICAgCisJcGVybCAuL0NvbmZpZ3VyZSAke0VYVFJBX09FQ09ORn0gc2hhcmVkIC0tcHJlZml4PSR1c2VwcmVmaXggLS1vcGVuc3NsZGlyPSR7bGliZGlyfS9zc2wgLS1saWJkaXI9YGJhc2VuYW1lICR7bGliZGlyfWAgJHRhcmdldAorfQorCitkb19jb21waWxlX3ByZXBlbmRfY2xhc3MtdGFyZ2V0ICgpIHsKKyAgICBzZWQgLWkgJ3MvXCgoT1BFTlNTTD1cKSIuKiIvXDEib3BlbnNzbCIvJyBNYWtlZmlsZQorfQorCitkb19jb21waWxlICgpIHsKKwlvZV9ydW5tYWtlIGRlcGVuZAorCW9lX3J1bm1ha2UKK30KKworZG9fY29tcGlsZV9wdGVzdCAoKSB7CisJIyBidWlsZCBkZXBlbmRlbmNpZXMgZm9yIHRlc3QgZGlyZWN0b3J5IHRvbworCWV4cG9ydCBESVJTPSIkRElSUyB0ZXN0IgorCW9lX3J1bm1ha2UgZGVwZW5kCisJb2VfcnVubWFrZSBidWlsZHRlc3QKK30KKworZG9faW5zdGFsbCAoKSB7CisJIyBDcmVhdGUgJHtEfS8ke3ByZWZpeH0gdG8gZml4IHBhcmFsbGVsIGlzc3VlcworCW1rZGlyIC1wICR7RH0vJHtwcmVmaXh9LworCisJb2VfcnVubWFrZSBJTlNUQUxMX1BSRUZJWD0iJHtEfSIgTUFORElSPSIke21hbmRpcn0iIGluc3RhbGwKKworCW9lX2xpYmluc3RhbGwgLXNvIGxpYmNyeXB0byAke0R9JHtsaWJkaXJ9CisJb2VfbGliaW5zdGFsbCAtc28gbGlic3NsICR7RH0ke2xpYmRpcn0KKworCWluc3RhbGwgLWQgJHtEfSR7aW5jbHVkZWRpcn0KKwljcCAtLWRlcmVmZXJlbmNlIC1SIGluY2x1ZGUvb3BlbnNzbCAke0R9JHtpbmNsdWRlZGlyfQorCisJaW5zdGFsbCAtRG0gMDc1NSAke1dPUktESVJ9L29wZW5zc2wtY19yZWhhc2guc2ggJHtEfSR7YmluZGlyfS9jX3JlaGFzaAorCXNlZCAtaSAtZSAncywvZXRjL29wZW5zc2wsJHtzeXNjb25mZGlyfS9zc2wsZycgJHtEfSR7YmluZGlyfS9jX3JlaGFzaAorCisJb2VfbXVsdGlsaWJfaGVhZGVyIG9wZW5zc2wvb3BlbnNzbGNvbmYuaAorCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignUEFDS0FHRUNPTkZJRycsICdwZXJsJywgZCl9IiBdOyB0aGVuCisJCXNlZCAtaSAtZSAnMXMsLiosIyEke2JpbmRpcn0vZW52IHBlcmwsJyAke0R9JHtsaWJkaXJ9L3NzbC9taXNjL0NBLnBsCisJCXNlZCAtaSAtZSAnMXMsLiosIyEke2JpbmRpcn0vZW52IHBlcmwsJyAke0R9JHtsaWJkaXJ9L3NzbC9taXNjL3RzZ2V0CisJZWxzZQorCQlybSAtZiAke0R9JHtsaWJkaXJ9L3NzbC9taXNjL0NBLnBsICR7RH0ke2xpYmRpcn0vc3NsL21pc2MvdHNnZXQKKwlmaQorCisJIyBDcmVhdGUgU1NMIHN0cnVjdHVyZQorCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc3NsLworCW12ICR7RH0ke2xpYmRpcn0vc3NsL29wZW5zc2wuY25mIFwKKwkgICAke0R9JHtsaWJkaXJ9L3NzbC9jZXJ0cyBcCisJICAgJHtEfSR7bGliZGlyfS9zc2wvcHJpdmF0ZSBcCisJICAgXAorCSAgICR7RH0ke3N5c2NvbmZkaXJ9L3NzbC8KKwlsbiAtc2YgJHtzeXNjb25mZGlyfS9zc2wvY2VydHMgJHtEfSR7bGliZGlyfS9zc2wvY2VydHMKKwlsbiAtc2YgJHtzeXNjb25mZGlyfS9zc2wvcHJpdmF0ZSAke0R9JHtsaWJkaXJ9L3NzbC9wcml2YXRlCisJbG4gLXNmICR7c3lzY29uZmRpcn0vc3NsL29wZW5zc2wuY25mICR7RH0ke2xpYmRpcn0vc3NsL29wZW5zc2wuY25mCisKKwkjIFJlbmFtZSBtYW4gcGFnZXMgdG8gcHJlZml4IG9wZW5zc2wxMC0qCisJZm9yIGYgaW4gYGZpbmQgJHtEfSR7bWFuZGlyfSAtdHlwZSBmYDsgZG8KKwkgICAgbXYgJGYgJChkaXJuYW1lICRmKS9vcGVuc3NsMTAtJChiYXNlbmFtZSAkZikKKwlkb25lCisJZm9yIGYgaW4gYGZpbmQgJHtEfSR7bWFuZGlyfSAtdHlwZSBsYDsgZG8KKwkgICAgbG5fZj1gcmVhZGxpbmsgJGZgCisJICAgIHJtIC1mICRmCisJICAgIGxuIC1zIG9wZW5zc2wxMC0kbG5fZiAkKGRpcm5hbWUgJGYpL29wZW5zc2wxMC0kKGJhc2VuYW1lICRmKQorCWRvbmUKK30KKworZG9faW5zdGFsbF9wdGVzdCAoKSB7CisJY3AgLXIgLUwgTWFrZWZpbGUub3JnIE1ha2VmaWxlIHRlc3QgJHtEfSR7UFRFU1RfUEFUSH0KKworICAgICAgICAjIFJlcGxhY2UgdGhlIHBhdGggdG8gbmF0aXZlIHBlcmwgd2l0aCB0aGUgcGF0aCB0byB0YXJnZXQgcGVybAorICAgICAgICBzZWQgLWkgJ3MsXlBFUkw9LiosUEVSTD0ke2JpbmRpcn0vcGVybCwnICR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlCisKKwljcCBDb25maWd1cmUgY29uZmlnIGVfb3MuaCAke0R9JHtQVEVTVF9QQVRIfQorCWNwIC1yIC1MIGluY2x1ZGUgJHtEfSR7UFRFU1RfUEFUSH0KKwlsbiAtc2YgJHtsaWJkaXJ9L2xpYmNyeXB0by5hICR7RH0ke1BURVNUX1BBVEh9CisJbG4gLXNmICR7bGliZGlyfS9saWJzc2wuYSAke0R9JHtQVEVTVF9QQVRIfQorCW1rZGlyIC1wICR7RH0ke1BURVNUX1BBVEh9L2NyeXB0bworCWNwIGNyeXB0by9jb25zdGFudF90aW1lX2xvY2wuaCAke0R9JHtQVEVTVF9QQVRIfS9jcnlwdG8KKwljcCAtciBjZXJ0cyAke0R9JHtQVEVTVF9QQVRIfQorCW1rZGlyIC1wICR7RH0ke1BURVNUX1BBVEh9L2FwcHMKKwlsbiAtc2YgJHtsaWJkaXJ9L3NzbC9taXNjL0NBLnNoICAke0R9JHtQVEVTVF9QQVRIfS9hcHBzCisJbG4gLXNmICR7c3lzY29uZmRpcn0vc3NsL29wZW5zc2wuY25mICR7RH0ke1BURVNUX1BBVEh9L2FwcHMKKwlsbiAtc2YgJHtiaW5kaXJ9L29wZW5zc2wgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9hcHBzCisJY3AgYXBwcy9zZXJ2ZXIucGVtICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9hcHBzCisJY3AgYXBwcy9zZXJ2ZXIyLnBlbSAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9hcHBzCisJbWtkaXIgLXAgJHtEfSR7UFRFU1RfUEFUSH0vdXRpbAorCWluc3RhbGwgdXRpbC9vcGVuc3Nsd3JhcC5zaCAgICAke0R9JHtQVEVTVF9QQVRIfS91dGlsCisJaW5zdGFsbCB1dGlsL3NobGliX3dyYXAuc2ggICAgICR7RH0ke1BURVNUX1BBVEh9L3V0aWwKKwkjIFRpbWUgc3RhbXBzIGFyZSByZWxldmFudCBmb3IgIm1ha2UgYWxsdGVzdHMiLCBvdGhlcndpc2UKKwkjIG1ha2UgbWF5IHRyeSB0byByZWNvbXBpbGUgYmluYXJpZXMuIE5vdCBvbmx5IG11c3QgdGhlCisJIyBiaW5hcnkgZmlsZXMgYmUgbmV3ZXIgdGhhbiB0aGUgc291cmNlcywgdGhleSBhbHNvIG11c3QKKwkjIGJlIG1vcmUgcmVjZW50IHRoYW4gdGhlIGhlYWRlciBmaWxlcyBpbiAvdXNyL2luY2x1ZGUuCisJIworCSMgVXNpbmcgImNwIC1hIiBpcyBub3Qgc3VmZmljaWVudCwgYmVjYXVzZSBkb19pbnN0YWxsCisJIyBkb2VzIG5vdCBwcmVzZXJ2ZSB0aGUgb3JpZ2luYWwgdGltZSBzdGFtcHMuCisJIworCSMgU28gaW5zdGVhZCBvZiB1c2luZyB0aGUgb3JpZ2luYWwgZmlsZSBzdGFtcHMsIHdlIHNldAorCSMgdGhlIGN1cnJlbnQgdGltZSBmb3IgYWxsIGZpbGVzLiBCaW5hcmllcyB3aWxsIGdldAorCSMgbW9kaWZpZWQgYWdhaW4gbGF0ZXIgd2hlbiBzdHJpcHBpbmcgdGhlbSwgYnV0IHRoYXQncyBva2F5LgorCXRvdWNoICR7RH0ke1BURVNUX1BBVEh9CisJZmluZCAke0R9JHtQVEVTVF9QQVRIfSAtdHlwZSBmIC1wcmludDAgfCB4YXJncyAtLXZlcmJvc2UgLTAgdG91Y2ggLXIgJHtEfSR7UFRFU1RfUEFUSH0KKworCSMgZXhjbHVkZSBiaW5hcnkgZmlsZXMgb3IgdGhlIHBhY2thZ2Ugd29uJ3QgaW5zdGFsbAorCWZvciBkIGluIHNzbHRlc3Rfb2xkIHYzZXh0IHg1MDlhdXg7IGRvCisJCXJtIC1yZiAke0R9JHtsaWJkaXJ9LyR7QlBOfS9wdGVzdC90ZXN0LyRkCisJZG9uZQorCisJIyBSZW1vdmUgYnVpbGQgaG9zdCByZWZlcmVuY2VzCisJc2VkIC1pIFwKKyAgICAgICAtZSAncywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCisgICAgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAorICAgICAgICR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlICR7RH0ke1BURVNUX1BBVEh9L0NvbmZpZ3VyZQorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisJY3JlYXRlX3dyYXBwZXIgJHtEfSR7YmluZGlyfS9vcGVuc3NsIFwKKwkgICAgT1BFTlNTTF9DT05GPSR7bGliZGlyfS9zc2wvb3BlbnNzbC5jbmYgXAorCSAgICBTU0xfQ0VSVF9ESVI9JHtsaWJkaXJ9L3NzbC9jZXJ0cyBcCisJICAgIFNTTF9DRVJUX0ZJTEU9JHtsaWJkaXJ9L3NzbC9jZXJ0LnBlbSBcCisJICAgIE9QRU5TU0xfRU5HSU5FUz0ke2xpYmRpcn0vc3NsL2VuZ2luZXMKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2xfMS4wLjJrLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsXzEuMC4yay5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODNkMWE1MC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2xfMS4wLjJrLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotcmVxdWlyZSBvcGVuc3NsLmluYwotCi0jIEZvciB0YXJnZXQgc2lkZSB2ZXJzaW9ucyBvZiBvcGVuc3NsIGVuYWJsZSBzdXBwb3J0IGZvciBPQ0YgTGludXggZHJpdmVyCi0jIGlmIHRoZXkgYXJlIGF2YWlsYWJsZS4KLURFUEVORFMgKz0gImNyeXB0b2Rldi1saW51eCIKLQotQ0ZMQUcgKz0gIi1ESEFWRV9DUllQVE9ERVYgLURVU0VfQ1JZUFRPREVWX0RJR0VTVFMiCi1DRkxBR19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtZlBJQyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MjdmZmE1ZDc0YmI1YTMzNzA1NmMxNGIyZWY5M2ZiZjYiCi0KLWV4cG9ydCBESVJTID0gImNyeXB0byBzc2wgYXBwcyBlbmdpbmVzIgotZXhwb3J0IE9FX0xERkxBR1M9IiR7TERGTEFHU30iCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9maW5kLnBsO3N1YmRpcj0ke0JQfS91dGlsLyBcCi0gICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgIGZpbGU6Ly9vcGVuc3NsLWNfcmVoYXNoLnNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUtdGFyZ2V0cy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vc2hhcmVkLWxpYnMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL29lLWxkZmxhZ3MucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2VuZ2luZXMtaW5zdGFsbC1pbi1saWJkaXItc3NsLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4xLjAuMi9ibG9ja19kaWdpbm90YXIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2RlYmlhbjEuMC4yL2Jsb2NrX2RpZ2ljZXJ0X21hbGF5c2lhLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vY2EucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2RlYmlhbi9jX3JlaGFzaC1jb21wYXQucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2RlYmlhbi9kZWJpYW4tdGFyZ2V0cy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vZGViaWFuL21hbi1kaXIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2RlYmlhbi9tYW4tc2VjdGlvbi5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vZGViaWFuL25vLXJwYXRoLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vbm8tc3ltYm9saWMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2RlYmlhbi9waWMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2RlYmlhbjEuMC4yL3ZlcnNpb24tc2NyaXB0LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4xLjAuMi9zb25hbWUucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL29wZW5zc2xfZml4X2Zvcl94MzIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2ZpeC1jaXBoZXItZGVzLWVkZTMtY2ZiMS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vb3BlbnNzbC1hdm9pZC1OVUxMLXBvaW50ZXItZGVyZWZlcmVuY2UtaW4tRVZQX0RpZ2VzdEluaXRfZXgucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL29wZW5zc2wtZml4LWRlcy5wb2QtZXJyb3IucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL01ha2VmaWxlcy1wdGVzdC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcHRlc3QtZGVwcy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vb3BlbnNzbC0xLjAuMmEteDMyLWFzbS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcHRlc3RfbWFrZWZpbGVfZGVwcy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLW11c2wtdGFyZ2V0LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9wYXJhbGxlbC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vb3BlbnNzbC11dGlsLXBlcmxwYXRoLnBsLWN3ZC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vVXNlLVNIQTI1Ni1ub3QtTUQ1LWFzLWRlZmF1bHQtZGlnZXN0LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC13aXRoLWNsYW5nLXVzaW5nLWV4dGVybmFsLWFzc2VtYmxlci5wYXRjaCBcCi0gICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiZjk2NWZjMGJmMDFiZjg4MmIzMTMxNGI2MTM5MWFlNjUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmIzOTc3YzYxZjJhZWRmMGY5NjM2N2RjZmI1YzZlNTc4Y2YzN2U3YjhkOTEzYjRlY2I2NjQzYzNjYjg4ZDhjMCIKLQotUEFDS0FHRVMgPSsgIiR7UE59LWVuZ2luZXMiCi1GSUxFU18ke1BOfS1lbmdpbmVzID0gIiR7bGliZGlyfS9zc2wvZW5naW5lcy8qLnNvICR7bGliZGlyfS9lbmdpbmVzIgotCi0jIFRoZSBjcnlwdG9fdXNlX2JpZ2ludCBwYXRjaCBtZWFucyB0aGF0IHBlcmwncyBiaWdudW0gbW9kdWxlIG5lZWRzIHRvIGJlCi0jIGluc3RhbGxlZCwgYnV0IHNvbWUgZGlzdHJpYnV0aW9ucyAoZm9yIGV4YW1wbGUgRmVkb3JhIDIzKSBkb24ndCBzaGlwIGl0IGJ5Ci0jIGRlZmF1bHQuICBBcyB0aGUgcmVzdWx0aW5nIGVycm9yIGlzIHZlcnkgbWlzbGVhZGluZyBjaGVjayBmb3IgYmlnbnVtIGJlZm9yZQotIyBidWlsZGluZy4KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotCWlmICEgcGVybCAtTWJpZ2ludCAtZSB0cnVlOyB0aGVuCi0JCWJiZmF0YWwgIlRoZSBwZXJsIG1vZHVsZSAnYmlnbnVtJyB3YXMgbm90IGZvdW5kIGJ1dCB0aGlzIGlzIHJlcXVpcmVkIHRvIGJ1aWxkIG9wZW5zc2wuICBQbGVhc2UgaW5zdGFsbCB0aGlzIG1vZHVsZSAob2Z0ZW4gcGFja2FnZWQgYXMgcGVybC1iaWdudW0pIGFuZCByZS1ydW4gYml0YmFrZS4iCi0JZmkKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbF8xLjAuMm4uYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2xfMS4wLjJuLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyNDQ0YzYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2xfMS4wLjJuLmJiCkBAIC0wLDAgKzEsNjAgQEAKK3JlcXVpcmUgb3BlbnNzbDEwLmluYworCisjIEZvciB0YXJnZXQgc2lkZSB2ZXJzaW9ucyBvZiBvcGVuc3NsIGVuYWJsZSBzdXBwb3J0IGZvciBPQ0YgTGludXggZHJpdmVyCisjIGlmIHRoZXkgYXJlIGF2YWlsYWJsZS4KKworQ0ZMQUcgKz0gIi1ESEFWRV9DUllQVE9ERVYgLURVU0VfQ1JZUFRPREVWX0RJR0VTVFMiCitDRkxBR19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtZlBJQyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MDU3ZDkyMThjNjE4MGUxZDllZTQwNzU3MmIyZGQyMjUiCisKK2V4cG9ydCBESVJTID0gImNyeXB0byBzc2wgYXBwcyBlbmdpbmVzIgorZXhwb3J0IE9FX0xERkxBR1M9IiR7TERGTEFHU30iCisKK1NSQ19VUkkgKz0gImZpbGU6Ly9maW5kLnBsO3N1YmRpcj1vcGVuc3NsLSR7UFZ9L3V0aWwvIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9vcGVuc3NsLWNfcmVoYXNoLnNoIFwKKyAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS10YXJnZXRzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3NoYXJlZC1saWJzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL29lLWxkZmxhZ3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZW5naW5lcy1pbnN0YWxsLWluLWxpYmRpci1zc2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuMS4wLjIvYmxvY2tfZGlnaW5vdGFyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbjEuMC4yL2Jsb2NrX2RpZ2ljZXJ0X21hbGF5c2lhLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi9jYS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vY19yZWhhc2gtY29tcGF0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi9kZWJpYW4tdGFyZ2V0cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vbWFuLWRpci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vbWFuLXNlY3Rpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuL25vLXJwYXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi9uby1zeW1ib2xpYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vcGljLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbjEuMC4yL3ZlcnNpb24tc2NyaXB0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbjEuMC4yL3NvbmFtZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9vcGVuc3NsX2ZpeF9mb3JfeDMyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL29wZW5zc2wtZml4LWRlcy5wb2QtZXJyb3IucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGVzLXB0ZXN0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3B0ZXN0LWRlcHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vb3BlbnNzbC0xLjAuMmEteDMyLWFzbS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9wdGVzdF9tYWtlZmlsZV9kZXBzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS1tdXNsLXRhcmdldC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9wYXJhbGxlbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9vcGVuc3NsLXV0aWwtcGVybHBhdGgucGwtY3dkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL1VzZS1TSEEyNTYtbm90LU1ENS1hcy1kZWZhdWx0LWRpZ2VzdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC13aXRoLWNsYW5nLXVzaW5nLWV4dGVybmFsLWFzc2VtYmxlci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW9wZW5zc2wtZm9yY2Utc29mdC1saW5rLXRvLWF2b2lkLXJhcmUtcmFjZS5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICIxM2JkYzFiMWQxZmYzOWI2ZmQ0MmEyNTVlNzQ2NzZhNCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzNzBiYWJiNzVmMjc4YzM5ZTBjNTBlOGM0ZTc0OTNiYzBmMThkYjY4Njc0NzgzNDFhODMyYTk4MmZkMTVhOGZlIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tZW5naW5lcyIKK0ZJTEVTXyR7UE59LWVuZ2luZXMgPSAiJHtsaWJkaXJ9L3NzbC9lbmdpbmVzLyouc28gJHtsaWJkaXJ9L2VuZ2luZXMiCisKKyMgVGhlIGNyeXB0b191c2VfYmlnaW50IHBhdGNoIG1lYW5zIHRoYXQgcGVybCdzIGJpZ251bSBtb2R1bGUgbmVlZHMgdG8gYmUKKyMgaW5zdGFsbGVkLCBidXQgc29tZSBkaXN0cmlidXRpb25zIChmb3IgZXhhbXBsZSBGZWRvcmEgMjMpIGRvbid0IHNoaXAgaXQgYnkKKyMgZGVmYXVsdC4gIEFzIHRoZSByZXN1bHRpbmcgZXJyb3IgaXMgdmVyeSBtaXNsZWFkaW5nIGNoZWNrIGZvciBiaWdudW0gYmVmb3JlCisjIGJ1aWxkaW5nLgorZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisJaWYgISBwZXJsIC1NYmlnaW50IC1lIHRydWU7IHRoZW4KKwkJYmJmYXRhbCAiVGhlIHBlcmwgbW9kdWxlICdiaWdudW0nIHdhcyBub3QgZm91bmQgYnV0IHRoaXMgaXMgcmVxdWlyZWQgdG8gYnVpbGQgb3BlbnNzbC4gIFBsZWFzZSBpbnN0YWxsIHRoaXMgbW9kdWxlIChvZnRlbiBwYWNrYWdlZCBhcyBwZXJsLWJpZ251bSkgYW5kIHJlLXJ1biBiaXRiYWtlLiIKKwlmaQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsXzEuMS4wZy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbF8xLjEuMGcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTY0OWJmZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbF8xLjEuMGcuYmIKQEAgLTAsMCArMSwxNTYgQEAKK1NVTU1BUlkgPSAiU2VjdXJlIFNvY2tldCBMYXllciIKK0RFU0NSSVBUSU9OID0gIlNlY3VyZSBTb2NrZXQgTGF5ZXIgKFNTTCkgYmluYXJ5IGFuZCByZWxhdGVkIGNyeXB0b2dyYXBoaWMgdG9vbHMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly93d3cub3BlbnNzbC5vcmcvbmV3cy92dWxuZXJhYmlsaXRpZXMuaHRtbCIKK1NFQ1RJT04gPSAibGlicy9uZXR3b3JrIgorCisjICJvcGVuc3NsIHwgU1NMZWF5IiBkdWFsIGxpY2Vuc2UKK0xJQ0VOU0UgPSAib3BlbnNzbCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWNhZTZkYTEwZjRmZmQ5NzAzMjE0Nzc2ZDJhYWJjZTMyIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiYTVmMWI4YjgzNWI4OGNhZGJjZTliMzVlZDk1MzFhNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkZTRkNTAxMjY3ZGEzOTMxMDkwNWNiNmRjOGM2MTIxZjdhMmNhZDQ1YTc3MDdmNzZkZjgyOGZlMWI4NTA3M2FmIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlL29wZW5zc2wtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9vcGVuc3NsLWNfcmVoYXNoLnNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVGFrZS1saW5raW5nLWZsYWdzLWZyb20tTERGTEFHUy1lbnYtdmFyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtUmVtb3ZlLXRlc3QtdGhhdC1yZXF1aXJlcy1ydW5uaW5nLWFzLW5vbi1yb290LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYWVzLWFzbS1hZXMtYXJtdjQtYnNhZXMtYXJtdjctLnBsLW1ha2UtaXQtd29yay13aXRoLS5wYXRjaCBcCisgICAgICAgICAgIgorCitTID0gIiR7V09SS0RJUn0vb3BlbnNzbC0ke1BWfSIKKworaW5oZXJpdCBsaWJfcGFja2FnZSBtdWx0aWxpYl9oZWFkZXIgcHRlc3QKKworZG9fY29uZmlndXJlICgpIHsKKwlvcz0ke0hPU1RfT1N9CisJY2FzZSAkb3MgaW4KKwlsaW51eC11Y2xpYmMgfFwKKwlsaW51eC11Y2xpYmNlYWJpIHxcCisJbGludXgtZ251ZWFiaSB8XAorCWxpbnV4LXVjbGliY3NwZSB8XAorCWxpbnV4LWdudXNwZSB8XAorCWxpbnV4LW11c2wqKQorCQlvcz1saW51eAorCQk7OworCQkqKQorCQk7OworCWVzYWMKKwl0YXJnZXQ9IiRvcy0ke0hPU1RfQVJDSH0iCisJY2FzZSAkdGFyZ2V0IGluCisJbGludXgtYXJtKQorCQl0YXJnZXQ9bGludXgtYXJtdjQKKwkJOzsKKwlsaW51eC1hcm1lYikKKwkJdGFyZ2V0PWxpbnV4LWFybXY0CisJCTs7CisJbGludXgtYWFyY2g2NCopCisJCXRhcmdldD1saW51eC1hYXJjaDY0CisJCTs7CisJbGludXgtc2gzKQorCQl0YXJnZXQ9bGludXgtZ2VuZXJpYzMyCisJCTs7CisJbGludXgtc2g0KQorCQl0YXJnZXQ9bGludXgtZ2VuZXJpYzMyCisJCTs7CisJbGludXgtaTQ4NikKKwkJdGFyZ2V0PWxpbnV4LWVsZgorCQk7OworCWxpbnV4LWk1ODYgfCBsaW51eC12aWFjMykKKwkJdGFyZ2V0PWxpbnV4LWVsZgorCQk7OworCWxpbnV4LWk2ODYpCisJCXRhcmdldD1saW51eC1lbGYKKwkJOzsKKwlsaW51eC1nbnV4MzIteDg2XzY0KQorCQl0YXJnZXQ9bGludXgteDMyCisJCTs7CisJbGludXgtZ251NjQteDg2XzY0KQorCQl0YXJnZXQ9bGludXgteDg2XzY0CisJCTs7CisJbGludXgtbWlwcykKKyAgICAgICAgICAgICAgICAjIHNwZWNpZnlpbmcgVEFSR0VUX0NDX0FSQ0ggcHJldmVudHMgb3BlbnNzbCBmcm9tIChpbmNvcnJlY3RseSkgYWRkaW5nIHRhcmdldCBhcmNoaXRlY3R1cmUgZmxhZ3MKKwkJdGFyZ2V0PSJsaW51eC1taXBzMzIgJHtUQVJHRVRfQ0NfQVJDSH0iCisJCTs7CisJbGludXgtbWlwc2VsKQorCQl0YXJnZXQ9ImxpbnV4LW1pcHMzMiAke1RBUkdFVF9DQ19BUkNIfSIKKwkJOzsKKyAgICAgICAgbGludXgtZ251bjMyLW1pcHMqKQorICAgICAgICAgICAgICAgdGFyZ2V0PWxpbnV4LW1pcHM2NAorICAgICAgICAgICAgICAgIDs7CisgICAgICAgIGxpbnV4LSotbWlwczY0IHwgbGludXgtbWlwczY0KQorICAgICAgICAgICAgICAgdGFyZ2V0PWxpbnV4NjQtbWlwczY0CisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgbGludXgtKi1taXBzNjRlbCB8IGxpbnV4LW1pcHM2NGVsKQorICAgICAgICAgICAgICAgdGFyZ2V0PWxpbnV4NjQtbWlwczY0CisgICAgICAgICAgICAgICAgOzsKKwlsaW51eC1taWNyb2JsYXplKnxsaW51eC1uaW9zMiopCisJCXRhcmdldD1saW51eC1nZW5lcmljMzIKKwkJOzsKKwlsaW51eC1wb3dlcnBjKQorCQl0YXJnZXQ9bGludXgtcHBjCisJCTs7CisJbGludXgtcG93ZXJwYzY0KQorCQl0YXJnZXQ9bGludXgtcHBjNjQKKwkJOzsKKwlsaW51eC1zdXBlcnNwYXJjKQorCQl0YXJnZXQ9bGludXgtc3BhcmN2OQorCQk7OworCWxpbnV4LXNwYXJjKQorCQl0YXJnZXQ9bGludXgtc3BhcmN2OQorCQk7OworCWRhcndpbi1pMzg2KQorCQl0YXJnZXQ9ZGFyd2luLWkzODYtY2MKKwkJOzsKKwllc2FjCisgICAgICAgIHVzZXByZWZpeD0ke3ByZWZpeH0KKyAgICAgICAgaWYgWyAieCR1c2VwcmVmaXgiID0gIngiIF07IHRoZW4KKyAgICAgICAgICAgICAgICB1c2VwcmVmaXg9LworICAgICAgICBmaQorCXBlcmwgLi9Db25maWd1cmUgJHtFWFRSQV9PRUNPTkZ9IC0tcHJlZml4PSR1c2VwcmVmaXggLS1vcGVuc3NsZGlyPSR7bGliZGlyfS9zc2wtMS4xIC0tbGliZGlyPWBiYXNlbmFtZSAke2xpYmRpcn1gICR0YXJnZXQKK30KKworI3wgZW5naW5lcy9hZmFsZy9lX2FmYWxnLmM6IEluIGZ1bmN0aW9uICdldmVudGZkJzoKKyN8IGVuZ2luZXMvYWZhbGcvZV9hZmFsZy5jOjExMDoyMDogZXJyb3I6ICdfX05SX2V2ZW50ZmQnIHVuZGVjbGFyZWQgKGZpcnN0IHVzZSBpbiB0aGlzIGZ1bmN0aW9uKQorI3wgICAgICByZXR1cm4gc3lzY2FsbChfX05SX2V2ZW50ZmQsIG4pOworI3wgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fn5+fn4KK0VYVFJBX09FQ09ORl9hYXJjaDY0ICs9ICJuby1hZmFsZ2VuZyIKKworI3wgLi9saWJjcnlwdG8uc286IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGdldGNvbnRleHQnCisjfCAuL2xpYmNyeXB0by5zbzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgc2V0Y29udGV4dCcKKyN8IC4vbGliY3J5cHRvLnNvOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBtYWtlY29udGV4dCcKK0VYVFJBX09FQ09ORl9saWJjLW11c2wgKz0gIi1ET1BFTlNTTF9OT19BU1lOQyIKKworZG9faW5zdGFsbCAoKSB7CisgICAgICAgIG9lX3J1bm1ha2UgREVTVERJUj0iJHtEfSIgTUFORElSPSIke21hbmRpcn0iIE1BTlNVRkZJWD1zc2wgaW5zdGFsbAorICAgICAgICBvZV9tdWx0aWxpYl9oZWFkZXIgb3BlbnNzbC9vcGVuc3NsY29uZi5oCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7CisgICAgICAgICMgSW5zdGFsbCBhIGN1c3RvbSB2ZXJzaW9uIG9mIGNfcmVoYXNoIHRoYXQgY2FuIGhhbmRsZSBzeXNyb290cyBwcm9wZXJseS4KKyAgICAgICAgIyBUaGlzIHZlcnNpb24gaXMgdXNlZCBmb3IgZXhhbXBsZSB3aGVuIGluc3RhbGxpbmcgY2EtY2VydGlmaWNhdGVzIGR1cmluZworICAgICAgICAjIGltYWdlIGNyZWF0aW9uLgorICAgICAgICBpbnN0YWxsIC1EbSAwNzU1ICR7V09SS0RJUn0vb3BlbnNzbC1jX3JlaGFzaC5zaCAke0R9JHtiaW5kaXJ9L2NfcmVoYXNoCisgICAgICAgIHNlZCAtaSAtZSAncywvZXRjL29wZW5zc2wsJHtzeXNjb25mZGlyfS9zc2wsZycgJHtEfSR7YmluZGlyfS9jX3JlaGFzaAorfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworICAgICAgICBjcCAtciAqICR7RH0ke1BURVNUX1BBVEh9CisKKyAgICAgICAgIyBQdXR0aW5nIC5zbyBmaWxlcyBpbiBwdGVzdCBwYWNrYWdlIHdpbGwgbWVzcyB1cCB0aGUgZGVwZW5kZW5jaWVzIG9mIHRoZSBtYWluIG9wZW5zc2wgcGFja2FnZQorICAgICAgICAjIHNvIHdlIHJlbmFtZSB0aGVtIHRvIC5zby5wdGVzdCBhbmQgcGF0Y2ggdGhlIHRlc3QgYWNjb3JkaW5nbHkKKyAgICAgICAgbXYgJHtEfSR7UFRFU1RfUEFUSH0vbGliY3J5cHRvLnNvICR7RH0ke1BURVNUX1BBVEh9L2xpYmNyeXB0by5zby5wdGVzdAorICAgICAgICBtdiAke0R9JHtQVEVTVF9QQVRIfS9saWJzc2wuc28gJHtEfSR7UFRFU1RfUEFUSH0vbGlic3NsLnNvLnB0ZXN0CisgICAgICAgIHNlZCAtaSAncy8kdGFyZ2V0e3NoYXJlZF9leHRlbnNpb25fc2ltcGxlfS8iLnNvLnB0ZXN0Ii8nICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvcmVjaXBlcy85MC10ZXN0X3NobGlibG9hZC50Cit9CisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJwZXJsLW1vZHVsZS1maWxlLXNwZWMtZnVuY3Rpb25zIGJhc2ggcHl0aG9uIgorCitGSUxFU18ke1BOfSA9KyAiICR7bGliZGlyfS9zc2wtMS4xLyoiCisKK1BBQ0tBR0VTID0rICIke1BOfS1lbmdpbmVzIgorRklMRVNfJHtQTn0tZW5naW5lcyA9ICIke2xpYmRpcn0vZW5naW5lcy0xLjEiCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BvcnRtYXAvcG9ydG1hcC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wb3J0bWFwL3BvcnRtYXAuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMzhhZjMzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BvcnRtYXAvcG9ydG1hcC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1TVU1NQVJZID0gIlJQQyBwcm9ncmFtIG51bWJlciBtYXBwZXIiCi1IT01FUEFHRSA9ICJodHRwOi8vbmVpbC5icm93bi5uYW1lL3BvcnRtYXAvIgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3BvcnRtYXAuYztiZWdpbmxpbmU9MjtlbmRsaW5lPTMxO21kNT01MWZmNjdlNjZlYzg0YjIwMDliMDE3YjFmOTRhZmJmNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9mcm9tX2xvY2FsLmM7YmVnaW5saW5lPTk7ZW5kbGluZT0zNTttZDU9MWJlYzkzOGEyMjY4YjhiNDIzYzU4ODAxYWNlM2FkYzEiCi0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJwb3J0bWFwIgotSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgMTAgMiAzIDQgNSAuIHN0b3AgMzIgMCAxIDYgLiIKLQotaW5oZXJpdCB1cGRhdGUtcmMuZCBzeXN0ZW1kCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJwb3J0bWFwLnNlcnZpY2UiCi0KLVBBQ0tBR0VTID0rICJwb3J0bWFwLXV0aWxzIgotRklMRVNfcG9ydG1hcC11dGlscyA9ICIke2Jhc2Vfc2JpbmRpcn0vcG1hcF9zZXQgJHtiYXNlX3NiaW5kaXJ9L3BtYXBfZHVtcCIKLUZJTEVTXyR7UE59LWRvYyArPSAiJHtkb2NkaXJ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcG9ydG1hcC9wb3J0bWFwL2Rlc3RkaXItbm8tc3RyaXAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wb3J0bWFwL3BvcnRtYXAvZGVzdGRpci1uby1zdHJpcC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmZiZjc4NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wb3J0bWFwL3BvcnRtYXAvZGVzdGRpci1uby1zdHJpcC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotRnJvbTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZTogU3VuLCAxMyBNYXkgMjAwNyAyMToxNToxMiArMDAwMCAoLTA0MDApCi1TdWJqZWN0OiByZXNwZWN0IERFU1RESVIgYW5kIGRvbnQgdXNlIC1zIHdpdGggaW5zdGFsbAotWC1HaXQtVXJsOiBodHRwOi8vbmVpbC5icm93bi5uYW1lL2dpdD9wPXBvcnRtYXA7YT1jb21taXRkaWZmX3BsYWluO2g9NjAzYzU5Yjk3OGMwNGRmMjM1NGY2OGQ0YTJkYzY3NmE3NThmZjQ2ZAotCi1yZXNwZWN0IERFU1RESVIgYW5kIGRvbnQgdXNlIC1zIHdpdGggaW5zdGFsbAotCi0kKERFU1RESVIpIGlzIHRoZSBzdGFuZGFyZCBmb3IgaW5zdGFsbGluZyBpbnRvIG90aGVyIHRyZWVzLCBub3QgJChCQVNFRElSKSAuLi4KLXNvIEkndmUgY29udmVydGVkIHRoZSBNYWtlZmlsZSB0byB1c2UgdGhhdC4gIEkndmUgYWxzbyBsZWZ0IGluICQoQkFTRURJUikgYXMgYQotZGVmYXVsdCB0byBzdXBwb3J0IG9sZCBpbnN0YWxsczsgbm90IHN1cmUgaWYgeW91J2QganVzdCBjdXQgaXQuCi0KLVN0cmlwcGluZyBzaG91bGQgYmUgbGVmdCB0byB0aGUgcGVyc29uIHRvIGhhbmRsZSwgbm90IGF1dG9tYXRpY2FsbHkgZG9uZSBieQotdGhlIGluc3RhbGwgc3RlcC4gIEFsc28sIGBpbnN0YWxsIC1zYCBhbHdheXMgY2FsbHMgYHN0cmlwYCB3aGljaCBpcwotd3JvbmcvdW5kZXNpcmVkIGluIGNyb3NzLWNvbXBpbGluZyBzY2VuYXJpb3MuCi0KLVNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLVNpZ25lZC1vZmYtYnk6IE5laWwgQnJvd24gPG5laWxiQHN1c2UuZGU+Ci0tLS0KLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKLWluZGV4IDllOWE0YjQuLjUzNDM0MjggMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZQotKysrIGIvTWFrZWZpbGUKLUBAIC0xMzUsMTMgKzEzNSwxNCBAQCBmcm9tX2xvY2FsOiBDUFBGTEFHUyArPSAtRFRFU1QKLSBwb3J0bWFwLm1hbiA6IHBvcnRtYXAuOAotIAlzZWQgJChNQU5fU0VEKSA8IHBvcnRtYXAuOCA+IHBvcnRtYXAubWFuCi0gCi0rREVTVERJUiA9ICQoQkFTRURJUikKLSBpbnN0YWxsOiBhbGwKLS0JaW5zdGFsbCAtbyByb290IC1nIHJvb3QgLW0gMDc1NSAtcyBwb3J0bWFwICR7QkFTRURJUn0vc2JpbgotLQlpbnN0YWxsIC1vIHJvb3QgLWcgcm9vdCAtbSAwNzU1IC1zIHBtYXBfZHVtcCAke0JBU0VESVJ9L3NiaW4KLS0JaW5zdGFsbCAtbyByb290IC1nIHJvb3QgLW0gMDc1NSAtcyBwbWFwX3NldCAke0JBU0VESVJ9L3NiaW4KLS0JaW5zdGFsbCAtbyByb290IC1nIHJvb3QgLW0gMDY0NCBwb3J0bWFwLm1hbiAke0JBU0VESVJ9L3Vzci9zaGFyZS9tYW4vbWFuOC9wb3J0bWFwLjgKLS0JaW5zdGFsbCAtbyByb290IC1nIHJvb3QgLW0gMDY0NCBwbWFwX2R1bXAuOCAke0JBU0VESVJ9L3Vzci9zaGFyZS9tYW4vbWFuOAotLQlpbnN0YWxsIC1vIHJvb3QgLWcgcm9vdCAtbSAwNjQ0IHBtYXBfc2V0LjggJHtCQVNFRElSfS91c3Ivc2hhcmUvbWFuL21hbjgKLSsJaW5zdGFsbCAtbyByb290IC1nIHJvb3QgLW0gMDc1NSBwb3J0bWFwICQoREVTVERJUikvc2JpbgotKwlpbnN0YWxsIC1vIHJvb3QgLWcgcm9vdCAtbSAwNzU1IHBtYXBfZHVtcCAkKERFU1RESVIpL3NiaW4KLSsJaW5zdGFsbCAtbyByb290IC1nIHJvb3QgLW0gMDc1NSBwbWFwX3NldCAkKERFU1RESVIpL3NiaW4KLSsJaW5zdGFsbCAtbyByb290IC1nIHJvb3QgLW0gMDY0NCBwb3J0bWFwLm1hbiAkKERFU1RESVIpL3Vzci9zaGFyZS9tYW4vbWFuOC9wb3J0bWFwLjgKLSsJaW5zdGFsbCAtbyByb290IC1nIHJvb3QgLW0gMDY0NCBwbWFwX2R1bXAuOCAkKERFU1RESVIpL3Vzci9zaGFyZS9tYW4vbWFuOAotKwlpbnN0YWxsIC1vIHJvb3QgLWcgcm9vdCAtbSAwNjQ0IHBtYXBfc2V0LjggJChERVNURElSKS91c3Ivc2hhcmUvbWFuL21hbjgKLSAKLSBjbGVhbjoKLSAJcm0gLWYgKi5vIHBvcnRtYXAgcG1hcF9kdW1wIHBtYXBfc2V0IGZyb21fbG9jYWwgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcG9ydG1hcC9wb3J0bWFwL3BvcnRtYXAuaW5pdCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BvcnRtYXAvcG9ydG1hcC9wb3J0bWFwLmluaXQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDYyMWFhMTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcG9ydG1hcC9wb3J0bWFwL3BvcnRtYXAuaW5pdAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLSMhL2Jpbi9zaAotIwotIyMjIEJFR0lOIElOSVQgSU5GTwotIyBQcm92aWRlczogICAgICAgICAgcG9ydG1hcAotIyBSZXF1aXJlZC1TdGFydDogICAgJG5ldHdvcmsKLSMgUmVxdWlyZWQtU3RvcDogICAgICRuZXR3b3JrCi0jIERlZmF1bHQtU3RhcnQ6ICAgICBTIDIgMyA0IDUKLSMgRGVmYXVsdC1TdG9wOiAgICAgIDAgMSA2Ci0jIFNob3J0LURlc2NyaXB0aW9uOiBUaGUgUlBDIHBvcnRtYXBwZXIKLSMgRGVzY3JpcHRpb246ICAgICAgIFBvcnRtYXAgaXMgYSBzZXJ2ZXIgdGhhdCBjb252ZXJ0cyBSUEMgKFJlbW90ZQotIyAgICAgICAgICAgICAgICAgICAgUHJvY2VkdXJlIENhbGwpIHByb2dyYW0gbnVtYmVycyBpbnRvIERBUlBBCi0jICAgICAgICAgICAgICAgICAgICBwcm90b2NvbCBwb3J0IG51bWJlcnMuIEl0IG11c3QgYmUgcnVubmluZyBpbgotIyAgICAgICAgICAgICAgICAgICAgb3JkZXIgdG8gbWFrZSBSUEMgY2FsbHMuIFNlcnZpY2VzIHRoYXQgdXNlCi0jICAgICAgICAgICAgICAgICAgICBSUEMgaW5jbHVkZSBORlMgYW5kIE5JUy4KLSMjIyBFTkQgSU5JVCBJTkZPCi0KLXRlc3QgLWYgL3NiaW4vcG9ydG1hcCB8fCBleGl0IDAKLQotY2FzZSAiJDEiIGluCi0gICAgc3RhcnQpCi0JZWNobyAiU3RhcnRpbmcgcG9ydG1hcCBkYWVtb24uLi4iCi0gICAgICAgIHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RhcnQgLS1xdWlldCAtLWV4ZWMgL3NiaW4vcG9ydG1hcAotCi0JaWYgWyAtZiAvdmFyL3J1bi9wb3J0bWFwLnVwZ3JhZGUtc3RhdGUgXTsgdGhlbgotICAgICAgICAgIGVjaG8gIlJlc3RvcmluZyBvbGQgUlBDIHNlcnZpY2UgaW5mb3JtYXRpb24uLi4iCi0gICAgICAgICAgc2xlZXAgMSAjIG5lZWRzIGEgc2hvcnQgcGF1c2Ugb3IgcG1hcF9zZXQgd29uJ3Qgd29yay4gOigKLQkgIHBtYXBfc2V0IDwvdmFyL3J1bi9wb3J0bWFwLnVwZ3JhZGUtc3RhdGUKLQkgIHJtIC1mIC92YXIvcnVuL3BvcnRtYXAudXBncmFkZS1zdGF0ZQotICAgICAgICAgIGVjaG8gImRvbmUuIgotICAgICAgICBmaQotCi0JOzsKLSAgICBzdG9wKQotICAgICAgICBlY2hvICJTdG9wcGluZyBwb3J0bWFwIGRhZW1vbi4uLiIKLSAgICAgICAgc3RhcnQtc3RvcC1kYWVtb24gLS1zdG9wIC0tcXVpZXQgLS1leGVjIC9zYmluL3BvcnRtYXAKLQk7OwotICAgIHJlbG9hZCkKLQk7OwotICAgIGZvcmNlLXJlbG9hZCkKLSAgICAgICAgJDAgcmVzdGFydAotCTs7Ci0gICAgcmVzdGFydCkKLQkjIHBtYXBfZHVtcCBhbmQgcG1hcF9zZXQgbWF5IGJlIGluIGEgZGlmZmVyZW50IHBhY2thZ2UgYW5kIG5vdCBpbnN0YWxsZWQuLi4KLQlpZiBbIC1mIC9zYmluL3BtYXBfZHVtcCAtYSAtZiAvc2Jpbi9wbWFwX3NldCBdOyB0aGVuCi0JCWRvX3N0YXRlPTEKLQllbHNlCi0JCWRvX3N0YXRlPTAKLQlmaQotCVsgJGRvX3N0YXRlIC1lcSAxIF0gJiYgcG1hcF9kdW1wID4vdmFyL3J1bi9wb3J0bWFwLnN0YXRlCi0gICAgICAgICQwIHN0b3AKLSAgICAgICAgJDAgc3RhcnQKLQlpZiBbICRkb19zdGF0ZSAtZXEgMSBdOyB0aGVuCi0JICBpZiBbICEgLWYgL3Zhci9ydW4vcG9ydG1hcC51cGdyYWRlLXN0YXRlIF07IHRoZW4KLSAgICAgICAgICAgIHNsZWVwIDEKLQkgICAgcG1hcF9zZXQgPC92YXIvcnVuL3BvcnRtYXAuc3RhdGUKLQkgIGZpCi0JICBybSAtZiAvdmFyL3J1bi9wb3J0bWFwLnN0YXRlCi0JZmkKLQk7OwotICAgICopCi0JZWNobyAiVXNhZ2U6IC9ldGMvaW5pdC5kL3BvcnRtYXAge3N0YXJ0fHN0b3B8cmVsb2FkfHJlc3RhcnR9IgotCWV4aXQgMQotCTs7Ci1lc2FjCi0KLWV4aXQgMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wb3J0bWFwL3BvcnRtYXAvcG9ydG1hcC5zZXJ2aWNlIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcG9ydG1hcC9wb3J0bWFwL3BvcnRtYXAuc2VydmljZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2VmOWQ3Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wb3J0bWFwL3BvcnRtYXAvcG9ydG1hcC5zZXJ2aWNlCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotW1VuaXRdCi1EZXNjcmlwdGlvbj1UaGUgUlBDIHBvcnRtYXBwZXIKLUFmdGVyPW5ldHdvcmsudGFyZ2V0Ci0KLVtTZXJ2aWNlXQotVHlwZT1mb3JraW5nCi1FeGVjU3RhcnQ9QEJBU0VfU0JJTkRJUkAvcG9ydG1hcAotCi1bSW5zdGFsbF0KLVdhbnRlZEJ5PW11bHRpLXVzZXIudGFyZ2V0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wb3J0bWFwL3BvcnRtYXAvdGNwZC1jb25maWcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wb3J0bWFwL3BvcnRtYXAvdGNwZC1jb25maWcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmMjUwNTguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcG9ydG1hcC9wb3J0bWFwL3RjcGQtY29uZmlnLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1Gcm9tOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOiBTdW4sIDEzIE1heSAyMDA3IDIxOjE3OjMyICswMDAwICgtMDQwMCkKLVN1YmplY3Q6IGZpeCBidWlsZGluZyB3aXRoIHRjcGQgc3VwcG9ydCBkaXNhYmxlZAotWC1HaXQtVXJsOiBodHRwOi8vbmVpbC5icm93bi5uYW1lL2dpdD9wPXBvcnRtYXA7YT1jb21taXRkaWZmX3BsYWluO2g9Nzg0NzIwN2FlZDFiNDRmYWYwNzdlZWQxNGE5YWM5YzY4MjQ0ZWJhNQotCi1maXggYnVpbGRpbmcgd2l0aCB0Y3BkIHN1cHBvcnQgZGlzYWJsZWQKLQotTWFrZSBzdXJlIHBtYXBfY2hlY2suYyBvbmx5IGluY2x1ZGVzIHRjcGQuaCB3aGVuIEhPU1RTX0FDQ0VTUyBpcyBkZWZpbmVkLgotCi1TaWduZWQtb2ZmLWJ5OiBUaW1vdGh5IFJlZGFlbGxpIDxkcml6enRAZ2VudG9vLm9yZz4KLVNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLVNpZ25lZC1vZmYtYnk6IE5laWwgQnJvd24gPG5laWxiQHN1c2UuZGU+Ci0tLS0KLQotZGlmZiAtLWdpdCBhL3BtYXBfY2hlY2suYyBiL3BtYXBfY2hlY2suYwotaW5kZXggODRmMmMxMi4uNDQzYTgyMiAxMDA2NDQKLS0tLSBhL3BtYXBfY2hlY2suYwotKysrIGIvcG1hcF9jaGVjay5jCi1AQCAtNDQsNyArNDQsOSBAQAotICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0gI2luY2x1ZGUgPHJwYy9ycGNlbnQuaD4KLSAjZW5kaWYKLSsjaWZkZWYgSE9TVFNfQUNDRVNTCi0gI2luY2x1ZGUgPHRjcGQuaD4KLSsjZW5kaWYKLSAjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+Ci0gI2luY2x1ZGUgPGdycC5oPgotIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcG9ydG1hcC9wb3J0bWFwXzYuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BvcnRtYXAvcG9ydG1hcF82LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5NzAwOTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcG9ydG1hcC9wb3J0bWFwXzYuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLXJlcXVpcmUgcG9ydG1hcC5pbmMKLQotREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBsaWJ0aXJwYyAiCi0KLVBSID0gInI5IgotCi1TUkNfVVJJID0gImh0dHBzOi8vZm9zc2llcy5vcmcvbGludXgvbWlzYy9vbGQvcG9ydG1hcC02LjAudGd6IFwKLSAgICAgICAgICAgZmlsZTovL2Rlc3RkaXItbm8tc3RyaXAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdGNwZC1jb25maWcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcG9ydG1hcC5pbml0IFwKLSAgICAgICAgICAgZmlsZTovL3BvcnRtYXAuc2VydmljZSIKLQotU1JDX1VSSVttZDVzdW1dID0gImFjMTA4YWI2OGJmMGYzNDQ3N2Y4MzE3NzkxYWFmMWZmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAyYzgyMGQzOWYzZTZlNzI5ZDFiZWEzMjg3YTJkOGE2YzY4NGYxMDA2ZmI5NjEyZjk3ZGNhZDRhMjgxZDQxZGUiCi0KLVMgPSAiJHtXT1JLRElSfS8ke0JQTn1fJHtQVn0vIgotCi1QQUNLQUdFQ09ORklHID8/PSAidGNwLXdyYXBwZXJzIgotUEFDS0FHRUNPTkZJR1t0Y3Atd3JhcHBlcnNdID0gIiwsdGNwLXdyYXBwZXJzIgotCi1DUFBGTEFHUyArPSAiLURGQUNJTElUWT1MT0dfREFFTU9OIC1ERU5BQkxFX0ROUyAtREhPU1RTX0FDQ0VTUyIKLUNGTEFHUyArPSAiLVdhbGwgLVdzdHJpY3QtcHJvdG90eXBlcyAtZlBJQyIKLUVYVFJBX09FTUFLRSArPSAiJ05PX1RDUF9XUkFQUEVSPSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3RjcC13cmFwcGVycycsICcnLCAnMScsIGQpfSciCi1DRkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLUkke1NUQUdJTkdfSU5DRElSfS90aXJwYyAiCi1MREZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1sdGlycGMgIgotCi1kb19pbnN0YWxsKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7bWFuZGlyfS9tYW44LyAke0R9JHtiYXNlX3NiaW5kaXJ9ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L3BvcnRtYXAuaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvcG9ydG1hcAotICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0KLQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9wb3J0bWFwLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICBzZWQgLWkgLWUgJ3MsQEJBU0VfU0JJTkRJUkAsJHtiYXNlX3NiaW5kaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3BvcnRtYXAuc2VydmljZQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvd3BhLXN1cHBsaWNhbnQvd3BhLXN1cHBsaWNhbnQvd3BhLXN1cHBsaWNhbnQuc2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS93cGEtc3VwcGxpY2FudC93cGEtc3VwcGxpY2FudC93cGEtc3VwcGxpY2FudC5zaAppbmRleCA1YzllNWQzLi4zNWExYWE2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS93cGEtc3VwcGxpY2FudC93cGEtc3VwcGxpY2FudC93cGEtc3VwcGxpY2FudC5zaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS93cGEtc3VwcGxpY2FudC93cGEtc3VwcGxpY2FudC93cGEtc3VwcGxpY2FudC5zaApAQCAtNCw2ICs0LDcgQEAKIFdQQV9TVVBfQklOPSIvdXNyL3NiaW4vd3BhX3N1cHBsaWNhbnQiCiBXUEFfU1VQX1BOQU1FPSJ3cGFfc3VwcGxpY2FudCIKIFdQQV9TVVBfUElERklMRT0iL3Zhci9ydW4vd3BhX3N1cHBsaWNhbnQuJElGQUNFLnBpZCIKK1dQQV9DT01NT05fQ1RSTF9JRkFDRT0iL3Zhci9ydW4vd3BhX3N1cHBsaWNhbnQiCiBXUEFfU1VQX09QVElPTlM9Ii1CIC1QICRXUEFfU1VQX1BJREZJTEUgLWkgJElGQUNFIgogCiBWRVJCT1NJVFk9MApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Jhc2UtZmlsZXMvYmFzZS1maWxlcy9wcm9maWxlIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Jhc2UtZmlsZXMvYmFzZS1maWxlcy9wcm9maWxlCmluZGV4IGNlYWYxNWYuLmEwNjIwMjggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9iYXNlLWZpbGVzL2Jhc2UtZmlsZXMvcHJvZmlsZQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYmFzZS1maWxlcy9iYXNlLWZpbGVzL3Byb2ZpbGUKQEAgLTMsMTUgKzMsMTMgQEAKIAogUEFUSD0iL3Vzci9sb2NhbC9iaW46L3Vzci9iaW46L2JpbiIKIEVESVRPUj0idmkiCQkJIyBuZWVkZWQgZm9yIHBhY2thZ2VzIGxpa2UgY3JvbiwgZ2l0LWNvbW1pdAotdGVzdCAteiAiJFRFUk0iICYmIFRFUk09InZ0MTAwIgkjIEJhc2ljIHRlcm1pbmFsIGNhcGFiLiBGb3Igc2NyZWVuIGV0Yy4KK1sgIiRURVJNIiBdIHx8IFRFUk09InZ0MTAwIgkjIEJhc2ljIHRlcm1pbmFsIGNhcGFiLiBGb3Igc2NyZWVuIGV0Yy4KIAotaWYgWyAiJEhPTUUiID0gIlJPT1RIT01FIiBdOyB0aGVuCi0JUEFUSD0kUEFUSDovdXNyL2xvY2FsL3NiaW46L3Vzci9zYmluOi9zYmluCi1maQotaWYgWyAiJFBTMSIgXTsgdGhlbgotCSMgd29ya3MgZm9yIGJhc2ggYW5kIGFzaCAobm8gb3RoZXIgc2hlbGxzIGtub3duIHRvIGJlIGluIHVzZSBoZXJlKQotCVBTMT0nXHVAXGg6XHdcJCAnCi1maQorIyBBZGQgL3NiaW4gJiBjbyB0byAkUEFUSCBmb3IgdGhlIHJvb3QgdXNlcgorWyAiJEhPTUUiICE9ICJST09USE9NRSIgXSB8fCBQQVRIPSRQQVRIOi91c3IvbG9jYWwvc2JpbjovdXNyL3NiaW46L3NiaW4KKworIyBTZXQgdGhlIHByb21wdCBmb3IgYmFzaCBhbmQgYXNoIChubyBvdGhlciBzaGVsbHMga25vd24gdG8gYmUgaW4gdXNlIGhlcmUpCitbIC16ICIkUFMxIiBdIHx8IFBTMT0nXHVAXGg6XHdcJCAnCiAKIGlmIFsgLWQgL2V0Yy9wcm9maWxlLmQgXTsgdGhlbgogCWZvciBpIGluIC9ldGMvcHJvZmlsZS5kLyouc2g7IGRvCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYmFzZS1maWxlcy9iYXNlLWZpbGVzL3NoYXJlL2RvdC5wcm9maWxlIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Jhc2UtZmlsZXMvYmFzZS1maWxlcy9zaGFyZS9kb3QucHJvZmlsZQppbmRleCA5Nzk3OTNlLi5hODczMTYwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYmFzZS1maWxlcy9iYXNlLWZpbGVzL3NoYXJlL2RvdC5wcm9maWxlCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9iYXNlLWZpbGVzL2Jhc2UtZmlsZXMvc2hhcmUvZG90LnByb2ZpbGUKQEAgLTcsNCArNyw1IEBACiAjIHBhdGggc2V0IGJ5IC9ldGMvcHJvZmlsZQogIyBleHBvcnQgUEFUSAogCi1tZXNnIG4KKyMgTWlnaHQgZmFpbCBhZnRlciAic3UgLSBteXVzZXIiIHdoZW4gL2Rldi90dHkqIGlzIG5vdCB3cml0YWJsZSBieSAibXl1c2VyIi4KK21lc2cgbiAyPi9kZXYvbnVsbApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Jhc2UtZmlsZXMvYmFzZS1maWxlc18zLjAuMTQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYmFzZS1maWxlcy9iYXNlLWZpbGVzXzMuMC4xNC5iYgppbmRleCBjYTdiZjA2Li4xYzA4NjNiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYmFzZS1maWxlcy9iYXNlLWZpbGVzXzMuMC4xNC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYmFzZS1maWxlcy9iYXNlLWZpbGVzXzMuMC4xNC5iYgpAQCAtNDIsNyArNDIsNyBAQAogICAgICAgICAgICAke2xvY2Fsc3RhdGVkaXJ9L2JhY2t1cHMgJHtsb2NhbHN0YXRlZGlyfS9saWIgXAogICAgICAgICAgICAvc3lzICR7bG9jYWxzdGF0ZWRpcn0vbGliL21pc2MgJHtsb2NhbHN0YXRlZGlyfS9zcG9vbCBcCiAgICAgICAgICAgICR7bG9jYWxzdGF0ZWRpcn0vdm9sYXRpbGUgXAotICAgICAgICAgICAke2xvY2Fsc3RhdGVkaXJ9L3ZvbGF0aWxlL2xvZyBcCisgICAgICAgICAgICR7bG9jYWxzdGF0ZWRpcn0vJHtAJ3ZvbGF0aWxlLycgaWYgb2UudHlwZXMuYm9vbGVhbignJHtWT0xBVElMRV9MT0dfRElSfScpIGVsc2UgJyd9bG9nIFwKICAgICAgICAgICAgL2hvbWUgJHtwcmVmaXh9L3NyYyAke2xvY2Fsc3RhdGVkaXJ9L2xvY2FsIFwKICAgICAgICAgICAgL21lZGlhIgogCkBAIC01Myw3ICs1Myw3IEBACiAgICAgICAgICAgICAgICAke3ByZWZpeH0vbGliL2xvY2FsZSIKIGRpcnMyNzc1LWxzYiA9ICIvdmFyL21haWwiCiAKLXZvbGF0aWxlcyA9ICJsb2cgdG1wIgordm9sYXRpbGVzID0gIiR7QCdsb2cnIGlmIG9lLnR5cGVzLmJvb2xlYW4oJyR7Vk9MQVRJTEVfTE9HX0RJUn0nKSBlbHNlICcnfSB0bXAiCiBjb25mZmlsZXMgPSAiJHtzeXNjb25mZGlyfS9kZWJpYW5fdmVyc2lvbiAke3N5c2NvbmZkaXJ9L2hvc3QuY29uZiBcCiAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pc3N1ZSAvJHtzeXNjb25mZGlyfS9pc3N1ZS5uZXQgXAogICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vbnNzd2l0Y2guY29uZiAke3N5c2NvbmZkaXJ9L3Byb2ZpbGUgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LmluYwppbmRleCBhZGM2ZTlhLi40ODkxMGNhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LmluYwpAQCAtMzksOSArMzksMTEgQEAKIElOSVRTQ1JJUFRfTkFNRV8ke1BOfS11ZGhjcGQgPSAiYnVzeWJveC11ZGhjcGQiCiAKIFNZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0tc3lzbG9nIgotU1lTVEVNRF9TRVJWSUNFXyR7UE59LXN5c2xvZyA9ICJidXN5Ym94LXN5c2xvZy5zZXJ2aWNlIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59LXN5c2xvZyA9ICIke0BiYi51dGlscy5jb250YWlucygnU1JDX1VSSScsICdmaWxlOi8vc3lzbG9nLmNmZycsICdidXN5Ym94LXN5c2xvZy5zZXJ2aWNlJywgJycsIGQpfSIKIAotQ09ORkZJTEVTXyR7UE59LXN5c2xvZyA9ICIke3N5c2NvbmZkaXJ9L3N5c2xvZy1zdGFydHVwLmNvbmYuJHtCUE59IgorQ09ORkZJTEVTXyR7UE59LXN5c2xvZyA9ICIke3N5c2NvbmZkaXJ9L3N5c2xvZy1zdGFydHVwLmNvbmYiCitSQ09ORkxJQ1RTXyR7UE59LXN5c2xvZyA9ICJyc3lzbG9nIHN5c2tsb2dkIHN5c2xvZy1uZyIKKwogQ09ORkZJTEVTXyR7UE59LW1kZXYgPSAiJHtzeXNjb25mZGlyfS9tZGV2LmNvbmYiCiAKIFJSRUNPTU1FTkRTXyR7UE59ID0gIiR7UE59LXN5c2xvZyAke1BOfS11ZGhjcGMiCkBAIC03MSw3ICs3Myw3IEBACiAJYnVzeWJveF9jZmcoYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdibHVldG9vdGgnLCBUcnVlLCBGYWxzZSwgZCksICdDT05GSUdfUkZLSUxMJywgY25mLCByZW0pCiAJcmV0dXJuICJcbiIuam9pbihjbmYpLCAiXG4iLmpvaW4ocmVtKQogCi0jIFgsIFkgPSAke0BmZWF0dXJlc190b191Y2xpYmNfc2V0dGluZ3MoZCl9CisjIFgsIFkgPSAke0BmZWF0dXJlc190b19idXN5Ym94X3NldHRpbmdzKGQpfQogIyB1bmZvcnR1bmF0ZWx5IGRvZXNuJ3Qgc2VlbSB0byB3b3JrIHdpdGggYml0YmFrZSwgd29ya2Fyb3VuZDoKIGRlZiBmZWF0dXJlc190b19idXN5Ym94X2NvbmYoZCk6CiAJY25mLCByZW0gPSBmZWF0dXJlc190b19idXN5Ym94X3NldHRpbmdzKGQpCkBAIC0xMDIsNiArMTA0LDkgQEAKIH0KIAogZG9fcHJlcGFyZV9jb25maWcgKCkgeworCWlmIFsgIiRCVUlMRF9SRVBST0RVQ0lCTEVfQklOQVJJRVMiID0gIjEiIF07IHRoZW4KKwkJZXhwb3J0IEtDT05GSUdfTk9USU1FU1RBTVA9MQorCWZpCiAJc2VkIC1lICcvQ09ORklHX1NUQVRJQy9kJyBcCiAJCTwgJHtXT1JLRElSfS9kZWZjb25maWcgPiAke1N9Ly5jb25maWcKIAllY2hvICIjIENPTkZJR19TVEFUSUMgaXMgbm90IHNldCIgPj4gLmNvbmZpZwpAQCAtMTE4LDYgKzEyMyw3IEBACiAJCSAgJHtTfS8uY29uZmlnLm9lLXRtcCA+ICR7U30vLmNvbmZpZwogCWZpCiAJc2VkIC1pICdzL0NPTkZJR19JRlVQRE9XTl9VREhDUENfQ01EX09QVElPTlM9Ii1SIC1uIi9DT05GSUdfSUZVUERPV05fVURIQ1BDX0NNRF9PUFRJT05TPSItUiAtYiIvJyAke1N9Ly5jb25maWcKKwlzZWQgLWkgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgJHtTfS8uY29uZmlnCiB9CiAKICMgcmV0dXJucyBhbGwgdGhlIGVsZW1lbnRzIGZyb20gdGhlIHNyYyB1cmkgdGhhdCBhcmUgLmNmZyBmaWxlcwpAQCAtMTM4LDYgKzE0NCw5IEBACiAKIGRvX2NvbXBpbGUoKSB7CiAJdW5zZXQgQ0ZMQUdTIENQUEZMQUdTIENYWEZMQUdTIExERkxBR1MKKwlpZiBbICIkQlVJTERfUkVQUk9EVUNJQkxFX0JJTkFSSUVTIiA9ICIxIiBdOyB0aGVuCisJCWV4cG9ydCBLQ09ORklHX05PVElNRVNUQU1QPTEKKwlmaQogCWlmIFsgIiR7QlVTWUJPWF9TUExJVF9TVUlEfSIgPSAiMSIgLWEgeGBncmVwICJDT05GSUdfRkVBVFVSRV9JTkRJVklEVUFMPXkiIC5jb25maWdgID0geCBdOyB0aGVuCiAJIyBzcGxpdCB0aGUgLmNvbmZpZyBpbnRvIHR3byBwYXJ0cywgYW5kIG1ha2UgdHdvIGJ1c3lib3ggYmluYXJpZXMKIAkJaWYgWyAtZSAuY29uZmlnLm9yaWcgXTsgdGhlbgpAQCAtMjQxLDkgKzI1MCw5IEBACiAJZmkKIAogCWlmIGdyZXAgLXEgIkNPTkZJR19TWVNMT0dEPXkiICR7Qn0vLmNvbmZpZzsgdGhlbgotCQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9zeXNsb2cgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3N5c2xvZy4ke0JQTn0KLQkJaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9zeXNsb2ctc3RhcnR1cC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2xvZy1zdGFydHVwLmNvbmYuJHtCUE59Ci0JCWluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vc3lzbG9nLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vc3lzbG9nLmNvbmYuJHtCUE59CisJCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L3N5c2xvZyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc3lzbG9nCisJCWluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vc3lzbG9nLXN0YXJ0dXAuY29uZiAke0R9JHtzeXNjb25mZGlyfS9zeXNsb2ctc3RhcnR1cC5jb25mCisJCWluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vc3lzbG9nLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vc3lzbG9nLmNvbmYKIAlmaQogCWlmIGdyZXAgIkNPTkZJR19DUk9ORD15IiAke0J9Ly5jb25maWc7IHRoZW4KIAkJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vYnVzeWJveC1jcm9uICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC8KQEAgLTMwNCw3ICszMTMsNiBAQAogCQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKIAkJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vYnVzeWJveC1zeXNsb2cuZGVmYXVsdCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L2J1c3lib3gtc3lzbG9nCiAgICAgICAgICAgICBmaQotICAgICAgICAgICAgbG4gLXNmIC9kZXYvbnVsbCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXNsb2cuc2VydmljZQogICAgICAgICBmaQogICAgICAgICBpZiBncmVwIC1xICJDT05GSUdfS0xPR0Q9eSIgJHtCfS8uY29uZmlnOyB0aGVuCiAgICAgICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCkBAIC0zMTUsNyArMzIzLDcgQEAKIAogICAgICMgUmVtb3ZlIHRoZSBzeXN2aW5pdCBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGZpbGUgZm9yIHN5c3RlbWQgc3lzdGVtcyB0byBhdm9pZCBjb25mdXNpb24KICAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3Zpbml0JywgJ2ZhbHNlJywgJ3RydWUnLCBkKX07IHRoZW4KLQlybSAtZiAke0R9JHtzeXNjb25mZGlyfS9zeXNsb2ctc3RhcnR1cC5jb25mLiR7QlBOfQorCXJtIC1mICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2xvZy1zdGFydHVwLmNvbmYKICAgICBmaQogfQogCkBAIC0zMjksMjAgKzMzNyw2IEBACiAKIEFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjUwIgogCi1BTFRFUk5BVElWRV8ke1BOfS1zeXNsb2cgKz0gInN5c2xvZy1jb25mIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3N5c2xvZy1jb25mXSA9ICIke3N5c2NvbmZkaXJ9L3N5c2xvZy5jb25mIgotCi1weXRob24gKCkgewotICAgIGlmIGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCBUcnVlLCBGYWxzZSwgZCk6Ci0gICAgICAgIHBuID0gZC5nZXRWYXIoJ1BOJykKLSAgICAgICAgZC5hcHBlbmRWYXIoJ0FMVEVSTkFUSVZFXyVzLXN5c2xvZycgJSAocG4pLCAnIHN5c2xvZy1pbml0JykKLSAgICAgICAgZC5zZXRWYXJGbGFnKCdBTFRFUk5BVElWRV9MSU5LX05BTUUnLCAnc3lzbG9nLWluaXQnLCAnJXMvaW5pdC5kL3N5c2xvZycgJSAoZC5nZXRWYXIoJ3N5c2NvbmZkaXInKSkpCi0gICAgICAgIGQuc2V0VmFyRmxhZygnQUxURVJOQVRJVkVfVEFSR0VUJywgJ3N5c2xvZy1pbml0JywgJyVzL2luaXQuZC9zeXNsb2cuJXMnICUgKGQuZ2V0VmFyKCdzeXNjb25mZGlyJyksIGQuZ2V0VmFyKCdCUE4nKSkpCi0gICAgICAgIGQuYXBwZW5kVmFyKCdBTFRFUk5BVElWRV8lcy1zeXNsb2cnICUgKHBuKSwgJyBzeXNsb2ctc3RhcnR1cC1jb25mJykKLSAgICAgICAgZC5zZXRWYXJGbGFnKCdBTFRFUk5BVElWRV9MSU5LX05BTUUnLCAnc3lzbG9nLXN0YXJ0dXAtY29uZicsICclcy9zeXNsb2ctc3RhcnR1cC5jb25mJyAlIChkLmdldFZhcignc3lzY29uZmRpcicpKSkKLSAgICAgICAgZC5zZXRWYXJGbGFnKCdBTFRFUk5BVElWRV9UQVJHRVQnLCAnc3lzbG9nLXN0YXJ0dXAtY29uZicsICclcy9zeXNsb2ctc3RhcnR1cC5jb25mLiVzJyAlIChkLmdldFZhcignc3lzY29uZmRpcicpLCBkLmdldFZhcignQlBOJykpKQotfQotCiBweXRob24gZG9fcGFja2FnZV9wcmVwZW5kICgpIHsKICAgICAjIFdlIG5lZWQgdG8gbG9hZCB0aGUgZnVsbCBzZXQgb2YgYnVzeWJveCBwcm92aWRlcyBmcm9tIHRoZSAvZXRjL2J1c3lib3gubGlua3MKICAgICAjIFVzZSB0aGlzIHRvIHNlZSB0aGUgdXBkYXRlLWFsdGVybmF0aXZlcyB3aXRoIHRoZSByaWdodCBpbmZvcm1hdGlvbgpAQCAtNDM5LDMgKzQzMyw1IEBACiAJCWZpCiAJZmkKIH0KKworUlBST1ZJREVTXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3Vzcm1lcmdlJywgJy9iaW4vc2gnLCAnJywgZCl9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC9kZWZjb25maWcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2RlZmNvbmZpZwppbmRleCA4ODAzYjUyLi5jYzY4YmVhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2RlZmNvbmZpZworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L2RlZmNvbmZpZwpAQCAtODIwLDkgKzgyMCw5IEBACiAjIENPTkZJR19JRlBMVUdEIGlzIG5vdCBzZXQKIENPTkZJR19JRlVQRE9XTj15CiBDT05GSUdfSUZVUERPV05fSUZTVEFURV9QQVRIPSIvdmFyL3J1bi9pZnN0YXRlIgotIyBDT05GSUdfRkVBVFVSRV9JRlVQRE9XTl9JUCBpcyBub3Qgc2V0Ci0jIENPTkZJR19GRUFUVVJFX0lGVVBET1dOX0lQX0JVSUxUSU4gaXMgbm90IHNldAotQ09ORklHX0ZFQVRVUkVfSUZVUERPV05fSUZDT05GSUdfQlVJTFRJTj15CitDT05GSUdfRkVBVFVSRV9JRlVQRE9XTl9JUD15CitDT05GSUdfRkVBVFVSRV9JRlVQRE9XTl9JUF9CVUlMVElOPXkKKyMgQ09ORklHX0ZFQVRVUkVfSUZVUERPV05fSUZDT05GSUdfQlVJTFRJTiBpcyBub3Qgc2V0CiBDT05GSUdfRkVBVFVSRV9JRlVQRE9XTl9JUFY0PXkKIENPTkZJR19GRUFUVVJFX0lGVVBET1dOX0lQVjY9eQogQ09ORklHX0ZFQVRVUkVfSUZVUERPV05fTUFQUElORz15CkBAIC0xMDUzLDE3ICsxMDUzLDE1IEBACiAjCiAjIFN5c3RlbSBMb2dnaW5nIFV0aWxpdGllcwogIwotQ09ORklHX1NZU0xPR0Q9eQotQ09ORklHX0ZFQVRVUkVfUk9UQVRFX0xPR0ZJTEU9eQotQ09ORklHX0ZFQVRVUkVfUkVNT1RFX0xPRz15Ci1DT05GSUdfRkVBVFVSRV9TWVNMT0dEX0RVUD15Ci1DT05GSUdfRkVBVFVSRV9TWVNMT0dEX0NGRz15Ci1DT05GSUdfRkVBVFVSRV9TWVNMT0dEX1JFQURfQlVGRkVSX1NJWkU9MjU2Ci1DT05GSUdfRkVBVFVSRV9JUENfU1lTTE9HPXkKLUNPTkZJR19GRUFUVVJFX0lQQ19TWVNMT0dfQlVGRkVSX1NJWkU9NjQKLUNPTkZJR19MT0dSRUFEPXkKLUNPTkZJR19GRUFUVVJFX0xPR1JFQURfUkVEVUNFRF9MT0NLSU5HPXkKLUNPTkZJR19GRUFUVVJFX0tNU0dfU1lTTE9HPXkKKyMgQ09ORklHX1NZU0xPR0QgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9ST1RBVEVfTE9HRklMRSBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX1JFTU9URV9MT0cgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9TWVNMT0dEX0RVUCBpcyBub3Qgc2V0CisjIENPTkZJR19GRUFUVVJFX1NZU0xPR0RfQ0ZHIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfSVBDX1NZU0xPRyBpcyBub3Qgc2V0CisjIENPTkZJR19MT0dSRUFEIGlzIG5vdCBzZXQKKyMgQ09ORklHX0ZFQVRVUkVfTE9HUkVBRF9SRURVQ0VEX0xPQ0tJTkcgaXMgbm90IHNldAorIyBDT05GSUdfRkVBVFVSRV9LTVNHX1NZU0xPRyBpcyBub3Qgc2V0CiBDT05GSUdfS0xPR0Q9eQogCiAjCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L3N5c2xvZy5jZmcgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94L3N5c2xvZy5jZmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTI0MjVlZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvc3lzbG9nLmNmZwpAQCAtMCwwICsxLDExIEBACitDT05GSUdfU1lTTE9HRD15CitDT05GSUdfRkVBVFVSRV9ST1RBVEVfTE9HRklMRT15CitDT05GSUdfRkVBVFVSRV9SRU1PVEVfTE9HPXkKK0NPTkZJR19GRUFUVVJFX1NZU0xPR0RfRFVQPXkKK0NPTkZJR19GRUFUVVJFX1NZU0xPR0RfQ0ZHPXkKK0NPTkZJR19GRUFUVVJFX1NZU0xPR0RfUkVBRF9CVUZGRVJfU0laRT0yNTYKK0NPTkZJR19GRUFUVVJFX0lQQ19TWVNMT0c9eQorQ09ORklHX0ZFQVRVUkVfSVBDX1NZU0xPR19CVUZGRVJfU0laRT02NAorQ09ORklHX0xPR1JFQUQ9eQorQ09ORklHX0ZFQVRVUkVfTE9HUkVBRF9SRURVQ0VEX0xPQ0tJTkc9eQorQ09ORklHX0ZFQVRVUkVfS01TR19TWVNMT0c9eQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveF8xLjI0LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94XzEuMjQuMS5iYgppbmRleCA2Y2NiZmZkLi4xYzg1ODA4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94XzEuMjQuMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94XzEuMjQuMS5iYgpAQCAtNDAsNiArNDAsNyBAQAogICAgICAgICAgICBmaWxlOi8vcmVzaXplLmNmZyBcCiAgICAgICAgICAgICR7QFsiIiwgImZpbGU6Ly9pbml0LmNmZyJdWyhkLmdldFZhcignVklSVFVBTC1SVU5USU1FX2luaXRfbWFuYWdlcicpID09ICdidXN5Ym94JyldfSBcCiAgICAgICAgICAgICR7QFsiIiwgImZpbGU6Ly9tZGV2LmNmZyJdWyhkLmdldFZhcignVklSVFVBTC1SVU5USU1FX2Rldl9tYW5hZ2VyJykgPT0gJ2J1c3lib3gtbWRldicpXX0gXAorICAgICAgICAgICBmaWxlOi8vc3lzbG9nLmNmZyBcCiAgICAgICAgICAgIGZpbGU6Ly9pbml0dGFiIFwKICAgICAgICAgICAgZmlsZTovL3JjUyBcCiAgICAgICAgICAgIGZpbGU6Ly9yY0sgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHMtOC4yNi8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHMvMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHMtOC4yNi8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlscy8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlscy04LjI2LzAwMDEtbG9jYWwubWstZml4LWNyb3NzLWNvbXBpbGluZy1wcm9ibGVtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHMvMDAwMS1sb2NhbC5tay1maXgtY3Jvc3MtY29tcGlsaW5nLXByb2JsZW0ucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzLTguMjYvMDAwMS1sb2NhbC5tay1maXgtY3Jvc3MtY29tcGlsaW5nLXByb2JsZW0ucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzLzAwMDEtbG9jYWwubWstZml4LWNyb3NzLWNvbXBpbGluZy1wcm9ibGVtLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlscy04LjI2LzAwMDEtdW5hbWUtcmVwb3J0LXByb2Nlc3Nvci1hbmQtaGFyZHdhcmUtY29ycmVjdGx5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHMvMDAwMS11bmFtZS1yZXBvcnQtcHJvY2Vzc29yLWFuZC1oYXJkd2FyZS1jb3JyZWN0bHkucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzLTguMjYvMDAwMS11bmFtZS1yZXBvcnQtcHJvY2Vzc29yLWFuZC1oYXJkd2FyZS1jb3JyZWN0bHkucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzLzAwMDEtdW5hbWUtcmVwb3J0LXByb2Nlc3Nvci1hbmQtaGFyZHdhcmUtY29ycmVjdGx5LnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlscy04LjI2L2Rpc2FibGUtbHMtb3V0cHV0LXF1b3RpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlscy9kaXNhYmxlLWxzLW91dHB1dC1xdW90aW5nLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlscy04LjI2L2Rpc2FibGUtbHMtb3V0cHV0LXF1b3RpbmcucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzL2Rpc2FibGUtbHMtb3V0cHV0LXF1b3RpbmcucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzLTguMjYvZml4LXNlbGludXgtZmxhc2sucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlscy9maXgtc2VsaW51eC1mbGFzay5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHMtOC4yNi9maXgtc2VsaW51eC1mbGFzay5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHMvZml4LXNlbGludXgtZmxhc2sucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzLTguMjYvbWFuLWRlY291cGxlLW1hbnBhZ2VzLWZyb20tYnVpbGQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlscy9tYW4tZGVjb3VwbGUtbWFucGFnZXMtZnJvbS1idWlsZC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHMtOC4yNi9tYW4tZGVjb3VwbGUtbWFucGFnZXMtZnJvbS1idWlsZC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHMvbWFuLWRlY291cGxlLW1hbnBhZ2VzLWZyb20tYnVpbGQucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzLTguMjYvcmVtb3ZlLXVzci1sb2NhbC1saWItZnJvbS1tNC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzL3JlbW92ZS11c3ItbG9jYWwtbGliLWZyb20tbTQucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzLTguMjYvcmVtb3ZlLXVzci1sb2NhbC1saWItZnJvbS1tNC5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHMvcmVtb3ZlLXVzci1sb2NhbC1saWItZnJvbS1tNC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHNfOC4yNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzXzguMjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyZWYxMDEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHNfOC4yNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE0MiArMCwwIEBACi1TVU1NQVJZID0gIlRoZSBiYXNpYyBmaWxlLCBzaGVsbCBhbmQgdGV4dCBtYW5pcHVsYXRpb24gdXRpbGl0aWVzIgotREVTQ1JJUFRJT04gPSAiVGhlIEdOVSBDb3JlIFV0aWxpdGllcyBwcm92aWRlIHRoZSBiYXNpYyBmaWxlLCBzaGVsbCBhbmQgdGV4dCBcCi1tYW5pcHVsYXRpb24gdXRpbGl0aWVzLiBUaGVzZSBhcmUgdGhlIGNvcmUgdXRpbGl0aWVzIHdoaWNoIGFyZSBleHBlY3RlZCB0byBleGlzdCBvbiBcCi1ldmVyeSBzeXN0ZW0uIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2NvcmV1dGlscy8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9kZWJidWdzLmdudS5vcmcvY29yZXV0aWxzIgotTElDRU5TRSA9ICJHUEx2MysiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9scy5jO2JlZ2lubGluZT01O2VuZGxpbmU9MTY7bWQ1PTM4Yjc5Nzg1Y2E4ODUzN2I3NTg3MTc4MmEyYTNjNmI4IgotREVQRU5EUyA9ICJnbXAgbGliY2FwIgotREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiIgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8KLQotU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2NvcmV1dGlscy8ke0JQfS50YXIueHo7bmFtZT10YXJiYWxsIFwKLSAgICAgICAgICAgaHR0cDovL2Rpc3RmaWxlcy5nZW50b28ub3JnL2Rpc3RmaWxlcy8ke0JQfS1tYW4udGFyLnh6O25hbWU9bWFucGFnZXMgXAotICAgICAgICAgICBmaWxlOi8vbWFuLWRlY291cGxlLW1hbnBhZ2VzLWZyb20tYnVpbGQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLXVzci1sb2NhbC1saWItZnJvbS1tNC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtc2VsaW51eC1mbGFzay5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtdW5hbWUtcmVwb3J0LXByb2Nlc3Nvci1hbmQtaGFyZHdhcmUtY29ycmVjdGx5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtbHMtb3V0cHV0LXF1b3RpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1sb2NhbC5tay1maXgtY3Jvc3MtY29tcGlsaW5nLXByb2JsZW0ucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVt0YXJiYWxsLm1kNXN1bV0gPSAiZDVhYTIwNzJmNjYyZDQxMThiOWY0YzYzYjk0NjAxYTYiCi1TUkNfVVJJW3RhcmJhbGwuc2hhMjU2c3VtXSA9ICIxNTVlOTRkNzQ4ZjhlMmJjMzI3YzY2ZTBjYmViZGI4ZDZhYjI2NWQyZjM3YzNjOTI4ZjdiZjZjM2JlYmE5YThlIgotU1JDX1VSSVttYW5wYWdlcy5tZDVzdW1dID0gImI1ODEwN2Y1MzJmN2JlZmZjYjJmMzhlMmFjMWYyZGEzIgotU1JDX1VSSVttYW5wYWdlcy5zaGEyNTZzdW1dID0gIjkzMjRlYzQxMmZmY2EzYjA0MzFlNjI5OTcyMGMzM2FjOThlNzQ5ZTQzMGY3MmE3YzZlNjVmMzYzNWM4NmFhMjkiCi0KLUVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiLS13aXRob3V0LWdtcCIKLUVYVFJBX09FQ09ORl9jbGFzcy10YXJnZXQgPSAiLS1lbmFibGUtaW5zdGFsbC1wcm9ncmFtPWFyY2ggLS1saWJleGVjZGlyPSR7bGliZGlyfSIKLUVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmVzZGsgPSAiLS1lbmFibGUtaW5zdGFsbC1wcm9ncmFtPWFyY2giCi0KLSMgYWNsIGFuZCB4YXR0ciBhcmUgbm90IGRlZmF1bHQgZmVhdHVyZXMKLSMKLVBBQ0tBR0VDT05GSUdfY2xhc3MtdGFyZ2V0ID8/PSAiXAotICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2FjbCB4YXR0cicsIGQpfSBcCi0iCi0KLSMgVGhlIGxpYi9vZS9wYXRoLnB5IHJlcXVpcmVzIHhhdHRyCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA/Pz0gInhhdHRyIgotCi0jIHdpdGgsIHdpdGhvdXQsIGRlcGVuZHMsIHJkZXBlbmRzCi0jCi1QQUNLQUdFQ09ORklHW2FjbF0gPSAiLS1lbmFibGUtYWNsLC0tZGlzYWJsZS1hY2wsYWNsLCIKLVBBQ0tBR0VDT05GSUdbeGF0dHJdID0gIi0tZW5hYmxlLXhhdHRyLC0tZGlzYWJsZS14YXR0cixhdHRyLCIKLQotIyBbIGRmIG1rdGVtcCBiYXNlNjQgZ2V0cyBhIHNwZWNpYWwgdHJlYXRtZW50IGFuZCBpcyBub3QgaW5jbHVkZWQgaW4gdGhpcwotYmluZGlyX3Byb2dzID0gImFyY2ggYmFzZW5hbWUgY2hjb24gY2tzdW0gY29tbSBjc3BsaXQgY3V0IGRpciBkaXJjb2xvcnMgZGlybmFtZSBkdSBcCi0gICAgICAgICAgICAgICAgZW52IGV4cGFuZCBleHByIGZhY3RvciBmbXQgZm9sZCBncm91cHMgaGVhZCBob3N0aWQgaWQgaW5zdGFsbCBcCi0gICAgICAgICAgICAgICAgam9pbiBsaW5rIGxvZ25hbWUgbWQ1c3VtIG1rZmlmbyBuaWNlIG5sIG5vaHVwIG5wcm9jIG9kIHBhc3RlIHBhdGhjaGsgXAotICAgICAgICAgICAgICAgIHBpbmt5IHByIHByaW50ZW52IHByaW50ZiBwdHggcmVhZGxpbmsgcmVhbHBhdGggcnVuY29uIHNlcSBzaGExc3VtIHNoYTIyNHN1bSBzaGEyNTZzdW0gXAotICAgICAgICAgICAgICAgIHNoYTM4NHN1bSBzaGE1MTJzdW0gc2hyZWQgc2h1ZiBzb3J0IHNwbGl0IHN0ZGJ1ZiBzdW0gdGFjIHRhaWwgdGVlIHRlc3QgdGltZW91dFwKLSAgICAgICAgICAgICAgICB0ciB0cnVuY2F0ZSB0c29ydCB0dHkgdW5leHBhbmQgdW5pcSB1bmxpbmsgdXB0aW1lIHVzZXJzIHZkaXIgd2Mgd2hvIHdob2FtaSB5ZXMiCi0KLSMgaG9zdG5hbWUgZ2V0cyBhIHNwZWNpYWwgdHJlYXRtZW50IGFuZCBpcyBub3QgaW5jbHVkZWQgaW4gdGhpcwotYmFzZV9iaW5kaXJfcHJvZ3MgPSAiY2F0IGNoZ3JwIGNobW9kIGNob3duIGNwIGRhdGUgZGQgZWNobyBmYWxzZSBraWxsIGxuIGxzIG1rZGlyIFwKLSAgICAgICAgICAgICAgICAgICAgIG1rbm9kIG12IHB3ZCBybSBybWRpciBzbGVlcCBzdHR5IHN5bmMgdG91Y2ggdHJ1ZSB1bmFtZSBzdGF0IgotCi1zYmluZGlyX3Byb2dzPSAiY2hyb290IgotCi0jIExldCBhY2xvY2FsIHVzZSB0aGUgcmVsYXRpdmUgcGF0aCBmb3IgdGhlIG00IGZpbGUgcmF0aGVyIHRoYW4gdGhlCi0jIGFic29sdXRlIHNpbmNlIGNvcmV1dGlscyBoYXMgYSBsb3Qgb2YgbTQgZmlsZXMsIG90aGVyd2lzZSB0aGVyZSBtaWdodAotIyBiZSBhbiAiQXJndW1lbnQgbGlzdCB0b28gbG9uZyIgZXJyb3Igd2hlbiBpdCBpcyBidWlsdCBpbiBhIGxvbmcvZGVlcAotIyBkaXJlY3RvcnkuCi1hY3BhdGhzID0gIi1JIC4vbTQiCi0KLSMgRGVhbCB3aXRoIGEgc2VwYXJhdGUgYnVpbGRkaXIgZmFpbHVyZSBpZiBzcmMgZG9lc24ndCBleGlzdCB3aGVuIGNyZWF0aW5nIHZlcnNpb24uYy92ZXJzaW9uLmgKLWRvX2NvbXBpbGVfcHJlcGVuZCAoKSB7Ci0JbWtkaXIgLXAgJHtCfS9zcmMKLX0KLQotZG9faW5zdGFsbF9jbGFzcy1uYXRpdmUoKSB7Ci0JYXV0b3Rvb2xzX2RvX2luc3RhbGwKLQkjIHJlbW92ZSBncm91cHMgdG8gZml4IGNvbmZsaWN0IHdpdGggc2hhZG93LW5hdGl2ZQotCXJtIC1mICR7RH0ke1NUQUdJTkdfQklORElSX05BVElWRX0vZ3JvdXBzCi0JIyBUaGUgcmV0dXJuIGlzIGEgbXVzdCBzaW5jZSBuYXRpdmUgZG9lc24ndCBuZWVkIHRoZQotCSMgZG9faW5zdGFsbF9hcHBlbmQoKSBpbiB0aGUgYmVsb3cuCi0JcmV0dXJuCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCWZvciBpIGluIGRmIG1rdGVtcCBiYXNlNjQ7IGRvIG12ICR7RH0ke2JpbmRpcn0vJGkgJHtEfSR7YmluZGlyfS8kaS4ke0JQTn07IGRvbmUKLQotCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9Ci0JWyAiJHtiYXNlX2JpbmRpcn0iICE9ICIke2JpbmRpcn0iIF0gJiYgZm9yIGkgaW4gJHtiYXNlX2JpbmRpcl9wcm9nc307IGRvIG12ICR7RH0ke2JpbmRpcn0vJGkgJHtEfSR7YmFzZV9iaW5kaXJ9LyRpLiR7QlBOfTsgZG9uZQotCi0JaW5zdGFsbCAtZCAke0R9JHtzYmluZGlyfQotCVsgIiR7c2JpbmRpcn0iICE9ICIke2JpbmRpcn0iIF0gJiYgZm9yIGkgaW4gJHtzYmluZGlyX3Byb2dzfTsgZG8gbXYgJHtEfSR7YmluZGlyfS8kaSAke0R9JHtzYmluZGlyfS8kaS4ke0JQTn07IGRvbmUKLQotCSMgWyByZXF1aXJlcyBzcGVjaWFsIGhhbmRsaW5nIGJlY2F1c2UgWy5jb3JldXRpbHMgd2lsbCBjYXVzZSB0aGUgc2VkIHN0dWZmCi0JIyBpbiB1cGRhdGUtYWx0ZXJuYXRpdmVzIHRvIGZhaWwsIHRoZXJlZm9yZSB1c2UgbGJyYWNrZXQgLSB0aGUgbmFtZSB1c2VkCi0JIyBmb3IgdGhlIGFjdHVhbCBzb3VyY2UgZmlsZS4KLQltdiAke0R9JHtiaW5kaXJ9L1sgJHtEfSR7YmluZGlyfS9sYnJhY2tldC4ke0JQTn0KLQotCSMgcHJlYnVpbHQgbWFuIHBhZ2VzCi0JaW5zdGFsbCAtZCAke0R9LyR7bWFuZGlyfS9tYW4xCi0JaW5zdGFsbCAtdCAke0R9LyR7bWFuZGlyfS9tYW4xICR7U30vbWFuLyouMQotCSMgcHJlYnVpbHQgbWFuIHBhZ2VzIGRvbid0IGRvIGEgc2VwYXJhdGUgbWFuIHBhZ2UgZm9yIFsgdnMgdGVzdC4KLQkjIHNlZSBjb21tZW50IGFib3ZlIHIuZS4gc2VkIGFuZCB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0JY3AgLWEgJHtEfSR7bWFuZGlyfS9tYW4xL3Rlc3QuMSAke0R9JHttYW5kaXJ9L21hbjEvbGJyYWNrZXQuMS4ke0JQTn0KLX0KLQotaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLUFMVEVSTkFUSVZFXyR7UE59ID0gImxicmFja2V0ICR7YmluZGlyX3Byb2dzfSAke2Jhc2VfYmluZGlyX3Byb2dzfSAke3NiaW5kaXJfcHJvZ3N9IGJhc2U2NCBta3RlbXAgZGYiCi1BTFRFUk5BVElWRV8ke1BOfS1kb2MgPSAiYmFzZTY0LjEgbWt0ZW1wLjEgZGYuMSBsYnJhY2tldC4xIGdyb3Vwcy4xIGtpbGwuMSB1cHRpbWUuMSBzdGF0LjEgIGhvc3RuYW1lLjEiCi0KLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtob3N0bmFtZS4xXSA9ICIke21hbmRpcn0vbWFuMS9ob3N0bmFtZS4xIgotCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbYmFzZTY0XSA9ICIke2Jhc2VfYmluZGlyfS9iYXNlNjQiCi1BTFRFUk5BVElWRV9UQVJHRVRbYmFzZTY0XSA9ICIke2JpbmRpcn0vYmFzZTY0LiR7QlBOfSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtiYXNlNjQuMV0gPSAiJHttYW5kaXJ9L21hbjEvYmFzZTY0LjEiCi0KLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtta3RlbXBdID0gIiR7YmFzZV9iaW5kaXJ9L21rdGVtcCIKLUFMVEVSTkFUSVZFX1RBUkdFVFtta3RlbXBdID0gIiR7YmluZGlyfS9ta3RlbXAuJHtCUE59IgotQUxURVJOQVRJVkVfTElOS19OQU1FW21rdGVtcC4xXSA9ICIke21hbmRpcn0vbWFuMS9ta3RlbXAuMSIKLQotQUxURVJOQVRJVkVfTElOS19OQU1FW2RmXSA9ICIke2Jhc2VfYmluZGlyfS9kZiIKLUFMVEVSTkFUSVZFX1RBUkdFVFtkZl0gPSAiJHtiaW5kaXJ9L2RmLiR7QlBOfSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtkZi4xXSA9ICIke21hbmRpcn0vbWFuMS9kZi4xIgotCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbbGJyYWNrZXRdID0gIiR7YmluZGlyfS9bIgotQUxURVJOQVRJVkVfVEFSR0VUW2xicmFja2V0XSA9ICIke2JpbmRpcn0vbGJyYWNrZXQuJHtCUE59IgotQUxURVJOQVRJVkVfTElOS19OQU1FW2xicmFja2V0LjFdID0gIiR7bWFuZGlyfS9tYW4xL2xicmFja2V0LjEiCi0KLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtncm91cHMuMV0gPSAiJHttYW5kaXJ9L21hbjEvZ3JvdXBzLjEiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbdXB0aW1lLjFdID0gIiR7bWFuZGlyfS9tYW4xL3VwdGltZS4xIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2tpbGwuMV0gPSAiJHttYW5kaXJ9L21hbjEva2lsbC4xIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3N0YXQuMV0gPSAiJHttYW5kaXJ9L21hbjEvc3RhdC4xIgotCi1weXRob24gX19hbm9ueW1vdXMoKSB7Ci0JZm9yIHByb2cgaW4gZC5nZXRWYXIoJ2Jhc2VfYmluZGlyX3Byb2dzJykuc3BsaXQoKToKLQkJZC5zZXRWYXJGbGFnKCdBTFRFUk5BVElWRV9MSU5LX05BTUUnLCBwcm9nLCAnJXMvJXMnICUgKGQuZ2V0VmFyKCdiYXNlX2JpbmRpcicpLCBwcm9nKSkKLQotCWZvciBwcm9nIGluIGQuZ2V0VmFyKCdzYmluZGlyX3Byb2dzJykuc3BsaXQoKToKLQkJZC5zZXRWYXJGbGFnKCdBTFRFUk5BVElWRV9MSU5LX05BTUUnLCBwcm9nLCAnJXMvJXMnICUgKGQuZ2V0VmFyKCdzYmluZGlyJyksIHByb2cpKQotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlsc184LjI3LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHNfOC4yNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYTg3NDBhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHNfOC4yNy5iYgpAQCAtMCwwICsxLDE0MiBAQAorU1VNTUFSWSA9ICJUaGUgYmFzaWMgZmlsZSwgc2hlbGwgYW5kIHRleHQgbWFuaXB1bGF0aW9uIHV0aWxpdGllcyIKK0RFU0NSSVBUSU9OID0gIlRoZSBHTlUgQ29yZSBVdGlsaXRpZXMgcHJvdmlkZSB0aGUgYmFzaWMgZmlsZSwgc2hlbGwgYW5kIHRleHQgXAorbWFuaXB1bGF0aW9uIHV0aWxpdGllcy4gVGhlc2UgYXJlIHRoZSBjb3JlIHV0aWxpdGllcyB3aGljaCBhcmUgZXhwZWN0ZWQgdG8gZXhpc3Qgb24gXAorZXZlcnkgc3lzdGVtLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9jb3JldXRpbHMvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vZGViYnVncy5nbnUub3JnL2NvcmV1dGlscyIKK0xJQ0VOU0UgPSAiR1BMdjMrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDRcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvbHMuYztiZWdpbmxpbmU9NTtlbmRsaW5lPTE2O21kNT0zOGI3OTc4NWNhODg1MzdiNzU4NzE3ODJhMmEzYzZiOCIKK0RFUEVORFMgPSAiZ21wIGxpYmNhcCIKK0RFUEVORFNfY2xhc3MtbmF0aXZlID0gIiIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvCisKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9jb3JldXRpbHMvJHtCUH0udGFyLnh6O25hbWU9dGFyYmFsbCBcCisgICAgICAgICAgIGh0dHA6Ly9kaXN0ZmlsZXMuZ2VudG9vLm9yZy9kaXN0ZmlsZXMvJHtCUH0tbWFuLnRhci54ejtuYW1lPW1hbnBhZ2VzIFwKKyAgICAgICAgICAgZmlsZTovL21hbi1kZWNvdXBsZS1tYW5wYWdlcy1mcm9tLWJ1aWxkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3JlbW92ZS11c3ItbG9jYWwtbGliLWZyb20tbTQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZml4LXNlbGludXgtZmxhc2sucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXVuYW1lLXJlcG9ydC1wcm9jZXNzb3ItYW5kLWhhcmR3YXJlLWNvcnJlY3RseS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWxzLW91dHB1dC1xdW90aW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbG9jYWwubWstZml4LWNyb3NzLWNvbXBpbGluZy1wcm9ibGVtLnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbdGFyYmFsbC5tZDVzdW1dID0gIjUwMjc5NTc5MmMyMTI5MzIzNjVlMDc3OTQ2ZDM1M2FlIgorU1JDX1VSSVt0YXJiYWxsLnNoYTI1NnN1bV0gPSAiODg5MWQzNDllZTg3YjlmZjc4NzBmNTJiNmQ5MzEyYTlkYjY3MmQyNDM5ZDI4OWJjNTcwODQ3NzFjYTIxNjU2YiIKK1NSQ19VUklbbWFucGFnZXMubWQ1c3VtXSA9ICIxYjMxYTY4OGQwNjc2NGUwZTk0YWEyMGI3ZWEwODIyMiIKK1NSQ19VUklbbWFucGFnZXMuc2hhMjU2c3VtXSA9ICIxZjYxNTgxOWU5MTY3NjQ2YzczMTYzNmI2YzVlY2JlNzk4MzdlODJhMTg2NjZiYWNjODJjM2ZiMWRmY2ZhZWEzIgorCitFWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIi0td2l0aG91dC1nbXAiCitFWFRSQV9PRUNPTkZfY2xhc3MtdGFyZ2V0ID0gIi0tZW5hYmxlLWluc3RhbGwtcHJvZ3JhbT1hcmNoIC0tbGliZXhlY2Rpcj0ke2xpYmRpcn0iCitFWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlc2RrID0gIi0tZW5hYmxlLWluc3RhbGwtcHJvZ3JhbT1hcmNoIgorCisjIGFjbCBhbmQgeGF0dHIgYXJlIG5vdCBkZWZhdWx0IGZlYXR1cmVzCisjCitQQUNLQUdFQ09ORklHX2NsYXNzLXRhcmdldCA/Pz0gIlwKKyAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdhY2wgeGF0dHInLCBkKX0gXAorIgorCisjIFRoZSBsaWIvb2UvcGF0aC5weSByZXF1aXJlcyB4YXR0cgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPz89ICJ4YXR0ciIKKworIyB3aXRoLCB3aXRob3V0LCBkZXBlbmRzLCByZGVwZW5kcworIworUEFDS0FHRUNPTkZJR1thY2xdID0gIi0tZW5hYmxlLWFjbCwtLWRpc2FibGUtYWNsLGFjbCwiCitQQUNLQUdFQ09ORklHW3hhdHRyXSA9ICItLWVuYWJsZS14YXR0ciwtLWRpc2FibGUteGF0dHIsYXR0ciwiCisKKyMgWyBkZiBta3RlbXAgYmFzZTY0IGdldHMgYSBzcGVjaWFsIHRyZWF0bWVudCBhbmQgaXMgbm90IGluY2x1ZGVkIGluIHRoaXMKK2JpbmRpcl9wcm9ncyA9ICJhcmNoIGJhc2VuYW1lIGNoY29uIGNrc3VtIGNvbW0gY3NwbGl0IGN1dCBkaXIgZGlyY29sb3JzIGRpcm5hbWUgZHUgXAorICAgICAgICAgICAgICAgIGVudiBleHBhbmQgZXhwciBmYWN0b3IgZm10IGZvbGQgZ3JvdXBzIGhlYWQgaG9zdGlkIGlkIGluc3RhbGwgXAorICAgICAgICAgICAgICAgIGpvaW4gbGluayBsb2duYW1lIG1kNXN1bSBta2ZpZm8gbmljZSBubCBub2h1cCBucHJvYyBvZCBwYXN0ZSBwYXRoY2hrIFwKKyAgICAgICAgICAgICAgICBwaW5reSBwciBwcmludGVudiBwcmludGYgcHR4IHJlYWRsaW5rIHJlYWxwYXRoIHJ1bmNvbiBzZXEgc2hhMXN1bSBzaGEyMjRzdW0gc2hhMjU2c3VtIFwKKyAgICAgICAgICAgICAgICBzaGEzODRzdW0gc2hhNTEyc3VtIHNocmVkIHNodWYgc29ydCBzcGxpdCBzdGRidWYgc3VtIHRhYyB0YWlsIHRlZSB0ZXN0IHRpbWVvdXRcCisgICAgICAgICAgICAgICAgdHIgdHJ1bmNhdGUgdHNvcnQgdHR5IHVuZXhwYW5kIHVuaXEgdW5saW5rIHVwdGltZSB1c2VycyB2ZGlyIHdjIHdobyB3aG9hbWkgeWVzIgorCisjIGhvc3RuYW1lIGdldHMgYSBzcGVjaWFsIHRyZWF0bWVudCBhbmQgaXMgbm90IGluY2x1ZGVkIGluIHRoaXMKK2Jhc2VfYmluZGlyX3Byb2dzID0gImNhdCBjaGdycCBjaG1vZCBjaG93biBjcCBkYXRlIGRkIGVjaG8gZmFsc2Uga2lsbCBsbiBscyBta2RpciBcCisgICAgICAgICAgICAgICAgICAgICBta25vZCBtdiBwd2Qgcm0gcm1kaXIgc2xlZXAgc3R0eSBzeW5jIHRvdWNoIHRydWUgdW5hbWUgc3RhdCIKKworc2JpbmRpcl9wcm9ncz0gImNocm9vdCIKKworIyBMZXQgYWNsb2NhbCB1c2UgdGhlIHJlbGF0aXZlIHBhdGggZm9yIHRoZSBtNCBmaWxlIHJhdGhlciB0aGFuIHRoZQorIyBhYnNvbHV0ZSBzaW5jZSBjb3JldXRpbHMgaGFzIGEgbG90IG9mIG00IGZpbGVzLCBvdGhlcndpc2UgdGhlcmUgbWlnaHQKKyMgYmUgYW4gIkFyZ3VtZW50IGxpc3QgdG9vIGxvbmciIGVycm9yIHdoZW4gaXQgaXMgYnVpbHQgaW4gYSBsb25nL2RlZXAKKyMgZGlyZWN0b3J5LgorYWNwYXRocyA9ICItSSAuL200IgorCisjIERlYWwgd2l0aCBhIHNlcGFyYXRlIGJ1aWxkZGlyIGZhaWx1cmUgaWYgc3JjIGRvZXNuJ3QgZXhpc3Qgd2hlbiBjcmVhdGluZyB2ZXJzaW9uLmMvdmVyc2lvbi5oCitkb19jb21waWxlX3ByZXBlbmQgKCkgeworCW1rZGlyIC1wICR7Qn0vc3JjCit9CisKK2RvX2luc3RhbGxfY2xhc3MtbmF0aXZlKCkgeworCWF1dG90b29sc19kb19pbnN0YWxsCisJIyByZW1vdmUgZ3JvdXBzIHRvIGZpeCBjb25mbGljdCB3aXRoIHNoYWRvdy1uYXRpdmUKKwlybSAtZiAke0R9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2dyb3VwcworCSMgVGhlIHJldHVybiBpcyBhIG11c3Qgc2luY2UgbmF0aXZlIGRvZXNuJ3QgbmVlZCB0aGUKKwkjIGRvX2luc3RhbGxfYXBwZW5kKCkgaW4gdGhlIGJlbG93LgorCXJldHVybgorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlmb3IgaSBpbiBkZiBta3RlbXAgYmFzZTY0OyBkbyBtdiAke0R9JHtiaW5kaXJ9LyRpICR7RH0ke2JpbmRpcn0vJGkuJHtCUE59OyBkb25lCisKKwlpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfQorCVsgIiR7YmFzZV9iaW5kaXJ9IiAhPSAiJHtiaW5kaXJ9IiBdICYmIGZvciBpIGluICR7YmFzZV9iaW5kaXJfcHJvZ3N9OyBkbyBtdiAke0R9JHtiaW5kaXJ9LyRpICR7RH0ke2Jhc2VfYmluZGlyfS8kaS4ke0JQTn07IGRvbmUKKworCWluc3RhbGwgLWQgJHtEfSR7c2JpbmRpcn0KKwlbICIke3NiaW5kaXJ9IiAhPSAiJHtiaW5kaXJ9IiBdICYmIGZvciBpIGluICR7c2JpbmRpcl9wcm9nc307IGRvIG12ICR7RH0ke2JpbmRpcn0vJGkgJHtEfSR7c2JpbmRpcn0vJGkuJHtCUE59OyBkb25lCisKKwkjIFsgcmVxdWlyZXMgc3BlY2lhbCBoYW5kbGluZyBiZWNhdXNlIFsuY29yZXV0aWxzIHdpbGwgY2F1c2UgdGhlIHNlZCBzdHVmZgorCSMgaW4gdXBkYXRlLWFsdGVybmF0aXZlcyB0byBmYWlsLCB0aGVyZWZvcmUgdXNlIGxicmFja2V0IC0gdGhlIG5hbWUgdXNlZAorCSMgZm9yIHRoZSBhY3R1YWwgc291cmNlIGZpbGUuCisJbXYgJHtEfSR7YmluZGlyfS9bICR7RH0ke2JpbmRpcn0vbGJyYWNrZXQuJHtCUE59CisKKwkjIHByZWJ1aWx0IG1hbiBwYWdlcworCWluc3RhbGwgLWQgJHtEfS8ke21hbmRpcn0vbWFuMQorCWluc3RhbGwgLXQgJHtEfS8ke21hbmRpcn0vbWFuMSAke1N9L21hbi8qLjEKKwkjIHByZWJ1aWx0IG1hbiBwYWdlcyBkb24ndCBkbyBhIHNlcGFyYXRlIG1hbiBwYWdlIGZvciBbIHZzIHRlc3QuCisJIyBzZWUgY29tbWVudCBhYm92ZSByLmUuIHNlZCBhbmQgdXBkYXRlLWFsdGVybmF0aXZlcworCWNwIC1SIC0tbm8tZGVyZWZlcmVuY2UgLS1wcmVzZXJ2ZT1tb2RlLGxpbmtzIC12ICR7RH0ke21hbmRpcn0vbWFuMS90ZXN0LjEgJHtEfSR7bWFuZGlyfS9tYW4xL2xicmFja2V0LjEuJHtCUE59Cit9CisKK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcworCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCitBTFRFUk5BVElWRV8ke1BOfSA9ICJsYnJhY2tldCAke2JpbmRpcl9wcm9nc30gJHtiYXNlX2JpbmRpcl9wcm9nc30gJHtzYmluZGlyX3Byb2dzfSBiYXNlNjQgbWt0ZW1wIGRmIgorQUxURVJOQVRJVkVfJHtQTn0tZG9jID0gImJhc2U2NC4xIG1rdGVtcC4xIGRmLjEgbGJyYWNrZXQuMSBncm91cHMuMSBraWxsLjEgdXB0aW1lLjEgc3RhdC4xICBob3N0bmFtZS4xIgorCitBTFRFUk5BVElWRV9MSU5LX05BTUVbaG9zdG5hbWUuMV0gPSAiJHttYW5kaXJ9L21hbjEvaG9zdG5hbWUuMSIKKworQUxURVJOQVRJVkVfTElOS19OQU1FW2Jhc2U2NF0gPSAiJHtiYXNlX2JpbmRpcn0vYmFzZTY0IgorQUxURVJOQVRJVkVfVEFSR0VUW2Jhc2U2NF0gPSAiJHtiaW5kaXJ9L2Jhc2U2NC4ke0JQTn0iCitBTFRFUk5BVElWRV9MSU5LX05BTUVbYmFzZTY0LjFdID0gIiR7bWFuZGlyfS9tYW4xL2Jhc2U2NC4xIgorCitBTFRFUk5BVElWRV9MSU5LX05BTUVbbWt0ZW1wXSA9ICIke2Jhc2VfYmluZGlyfS9ta3RlbXAiCitBTFRFUk5BVElWRV9UQVJHRVRbbWt0ZW1wXSA9ICIke2JpbmRpcn0vbWt0ZW1wLiR7QlBOfSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtta3RlbXAuMV0gPSAiJHttYW5kaXJ9L21hbjEvbWt0ZW1wLjEiCisKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtkZl0gPSAiJHtiYXNlX2JpbmRpcn0vZGYiCitBTFRFUk5BVElWRV9UQVJHRVRbZGZdID0gIiR7YmluZGlyfS9kZi4ke0JQTn0iCitBTFRFUk5BVElWRV9MSU5LX05BTUVbZGYuMV0gPSAiJHttYW5kaXJ9L21hbjEvZGYuMSIKKworQUxURVJOQVRJVkVfTElOS19OQU1FW2xicmFja2V0XSA9ICIke2JpbmRpcn0vWyIKK0FMVEVSTkFUSVZFX1RBUkdFVFtsYnJhY2tldF0gPSAiJHtiaW5kaXJ9L2xicmFja2V0LiR7QlBOfSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtsYnJhY2tldC4xXSA9ICIke21hbmRpcn0vbWFuMS9sYnJhY2tldC4xIgorCitBTFRFUk5BVElWRV9MSU5LX05BTUVbZ3JvdXBzLjFdID0gIiR7bWFuZGlyfS9tYW4xL2dyb3Vwcy4xIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3VwdGltZS4xXSA9ICIke21hbmRpcn0vbWFuMS91cHRpbWUuMSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtraWxsLjFdID0gIiR7bWFuZGlyfS9tYW4xL2tpbGwuMSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtzdGF0LjFdID0gIiR7bWFuZGlyfS9tYW4xL3N0YXQuMSIKKworcHl0aG9uIF9fYW5vbnltb3VzKCkgeworCWZvciBwcm9nIGluIGQuZ2V0VmFyKCdiYXNlX2JpbmRpcl9wcm9ncycpLnNwbGl0KCk6CisJCWQuc2V0VmFyRmxhZygnQUxURVJOQVRJVkVfTElOS19OQU1FJywgcHJvZywgJyVzLyVzJyAlIChkLmdldFZhcignYmFzZV9iaW5kaXInKSwgcHJvZykpCisKKwlmb3IgcHJvZyBpbiBkLmdldFZhcignc2JpbmRpcl9wcm9ncycpLnNwbGl0KCk6CisJCWQuc2V0VmFyRmxhZygnQUxURVJOQVRJVkVfTElOS19OQU1FJywgcHJvZywgJyVzLyVzJyAlIChkLmdldFZhcignc2JpbmRpcicpLCBwcm9nKSkKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMtd2FpdC9kYnVzLXdhaXRfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMtd2FpdC9kYnVzLXdhaXRfZ2l0LmJiCmluZGV4IDY5MWRjODYuLjRhZmI5MGMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzLXdhaXQvZGJ1cy13YWl0X2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy13YWl0L2RidXMtd2FpdF9naXQuYmIKQEAgLTExLDYgKzExLDcgQEAKIFBSID0gInIyIgogCiBTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnLyR7QlBOfSIKK1VQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLXRlc3RfMS4xMC4xNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtdGVzdF8xLjEwLjE0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Mzk0ODE0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtdGVzdF8xLjEwLjE0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotU1VNTUFSWSA9ICJELUJ1cyB0ZXN0IHBhY2thZ2UgKGZvciBELWJ1cyBmdW5jdGlvbmFsaXR5IHRlc3Rpbmcgb25seSkiCi1IT01FUEFHRSA9ICJodHRwOi8vZGJ1cy5mcmVlZGVza3RvcC5vcmciCi1TRUNUSU9OID0gImJhc2UiCi1MSUNFTlNFID0gIkFGTC0yIHwgR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTBkZGVkM2I1ODE0OGYzZjFmZDgwNGIyNjM1NGFmM2UgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZGJ1cy9kYnVzLmg7YmVnaW5saW5lPTY7ZW5kbGluZT0yMDttZDU9Nzc1NWM5ZDdhYmNjZDVkYmQyNWE2YTk3NDUzOGJiM2MiCi0KLURFUEVORFMgPSAiZGJ1cyBnbGliLTIuMCIKLQotUkRFUEVORFNfJHtQTn0gKz0gIm1ha2UiCi1SREVQRU5EU18ke1BOfS1kZXYgPSAiIgotCi1TUkNfVVJJID0gImh0dHA6Ly9kYnVzLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy9kYnVzL2RidXMtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3RtcGRpci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vcHl0aG9uLWNvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9jbGVhci1ndWlkX2Zyb21fc2VydmVyLWlmLXNlbmRfbmVnb3RpYXRlX3VuaXhfZi5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjNmN2IwMTNjZThmNjQxY2Q0Yzg5N2FjZGEwZWYzNDY3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIzMjM4ZjcwMzUzZTM4Y2U1Y2ExODNlYmM5NTI1YzBkOTdhYzAwZWY2NDBhZDI5Y2Y3OTQ3ODJhZjZlNmEwODMiCi0KLVM9IiR7V09SS0RJUn0vZGJ1cy0ke1BWfSIKLUZJTEVTRVhUUkFQQVRIUyA9LiAiJHtGSUxFX0RJUk5BTUV9L2RidXM6IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCBwdGVzdCB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KLQotRVhUUkFfT0VDT05GX1ggPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnLS13aXRoLXgnLCAnLS13aXRob3V0LXgnLCBkKX0iCi1FWFRSQV9PRUNPTkZfWF9jbGFzcy1uYXRpdmUgPSAiLS13aXRob3V0LXgiCi0KLUVYVFJBX09FQ09ORiA9ICItLWVuYWJsZS10ZXN0cyBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtbW9kdWxhci10ZXN0cyBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtaW5zdGFsbGVkLXRlc3RzIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1jaGVja3MgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLWFzc2VydHMgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLXZlcmJvc2UtbW9kZSBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLXhtbC1kb2NzIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtZG94eWdlbi1kb2NzIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtbGliYXVkaXQgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1zeXN0ZW1kIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtc3lzdGVtZHN5c3RlbXVuaXRkaXIgXAotICAgICAgICAgICAgICAgIC0td2l0aC1kYnVzLXRlc3QtZGlyPSR7UFRFU1RfUEFUSH0gXAotICAgICAgICAgICAgICAgICR7RVhUUkFfT0VDT05GX1h9IgotCi1kb19pbnN0YWxsKCkgewotICAgIDoKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKLQlsPSJzaGVsbCBwcmludGYgcmVmcyBzeXNsb2cgbWFyc2hhbCBzeW50YXggY29ycnVwdCBkYnVzLWRhZW1vbiBkYnVzLWRhZW1vbi1lYXZlc2Ryb3AgbG9vcGJhY2sgcmVsYXkiCi0JZm9yIGkgaW4gJGw7IGRvIGluc3RhbGwgJHtCfS90ZXN0Ly5saWJzL3Rlc3QtJGkgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdDsgZG9uZQotCWw9ImJ1cyBidXMtc3lzdGVtIGJ1cy1sYXVuY2gtaGVscGVyIgotCWZvciBpIGluICRsOyBkbyBpbnN0YWxsICR7Qn0vYnVzLy5saWJzL3Rlc3QtJGkgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdDsgZG9uZQotCWluc3RhbGwgJHtCfS9kYnVzLy5saWJzL3Rlc3QtZGJ1cyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0Ci0JY3AgLXIgJHtCfS90ZXN0L2RhdGEgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAotfQotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImJhc2giCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLXRlc3RfMS4xMC4yMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtdGVzdF8xLjEwLjIwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlYWRiN2QKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLXRlc3RfMS4xMC4yMC5iYgpAQCAtMCwwICsxLDU4IEBACitTVU1NQVJZID0gIkQtQnVzIHRlc3QgcGFja2FnZSAoZm9yIEQtYnVzIGZ1bmN0aW9uYWxpdHkgdGVzdGluZyBvbmx5KSIKK0hPTUVQQUdFID0gImh0dHA6Ly9kYnVzLmZyZWVkZXNrdG9wLm9yZyIKK1NFQ1RJT04gPSAiYmFzZSIKK0xJQ0VOU0UgPSAiQUZMLTIgfCBHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xMGRkZWQzYjU4MTQ4ZjNmMWZkODA0YjI2MzU0YWYzZSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kYnVzL2RidXMuaDtiZWdpbmxpbmU9NjtlbmRsaW5lPTIwO21kNT03NzU1YzlkN2FiY2NkNWRiZDI1YTZhOTc0NTM4YmIzYyIKKworREVQRU5EUyA9ICJkYnVzIGdsaWItMi4wIgorCitSREVQRU5EU18ke1BOfSArPSAibWFrZSIKK1JERVBFTkRTXyR7UE59LWRldiA9ICIiCisKK1NSQ19VUkkgPSAiaHR0cDovL2RidXMuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL2RidXMvZGJ1cy0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vdG1wZGlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9weXRob24tY29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2NsZWFyLWd1aWRfZnJvbV9zZXJ2ZXItaWYtc2VuZF9uZWdvdGlhdGVfdW5peF9mLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOTRjOTkxZTc2M2Q0ZjlmMTM2OTA0MTZiMmRjZDk0MTEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTU3NGI5NzgwYjU0MjVmZGU0ZDk3M2JiNTk2ZTdlYTBmMDllMDBmZTJlZGQ2NjJkYTkwMTZlOTc2YzQ2MGI0OCIKKworUz0iJHtXT1JLRElSfS9kYnVzLSR7UFZ9IgorRklMRVNFWFRSQVBBVEhTID0uICIke0ZJTEVfRElSTkFNRX0vZGJ1czoiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IHB0ZXN0IHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgorCitFWFRSQV9PRUNPTkZfWCA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICctLXdpdGgteCcsICctLXdpdGhvdXQteCcsIGQpfSIKK0VYVFJBX09FQ09ORl9YX2NsYXNzLW5hdGl2ZSA9ICItLXdpdGhvdXQteCIKKworRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXRlc3RzIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1tb2R1bGFyLXRlc3RzIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1pbnN0YWxsZWQtdGVzdHMgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLWNoZWNrcyBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtYXNzZXJ0cyBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtdmVyYm9zZS1tb2RlIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUteG1sLWRvY3MgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1kb3h5Z2VuLWRvY3MgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1saWJhdWRpdCBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXN5c3RlbWQgXAorICAgICAgICAgICAgICAgIC0td2l0aG91dC1zeXN0ZW1kc3lzdGVtdW5pdGRpciBcCisgICAgICAgICAgICAgICAgLS13aXRoLWRidXMtdGVzdC1kaXI9JHtQVEVTVF9QQVRIfSBcCisgICAgICAgICAgICAgICAgJHtFWFRSQV9PRUNPTkZfWH0iCisKK2RvX2luc3RhbGwoKSB7CisgICAgOgorfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCWluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAorCWw9InNoZWxsIHByaW50ZiByZWZzIHN5c2xvZyBtYXJzaGFsIHN5bnRheCBjb3JydXB0IGRidXMtZGFlbW9uIGRidXMtZGFlbW9uLWVhdmVzZHJvcCBsb29wYmFjayByZWxheSIKKwlmb3IgaSBpbiAkbDsgZG8gaW5zdGFsbCAke0J9L3Rlc3QvLmxpYnMvdGVzdC0kaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0OyBkb25lCisJbD0iYnVzIGJ1cy1zeXN0ZW0gYnVzLWxhdW5jaC1oZWxwZXIiCisJZm9yIGkgaW4gJGw7IGRvIGluc3RhbGwgJHtCfS9idXMvLmxpYnMvdGVzdC0kaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0OyBkb25lCisJaW5zdGFsbCAke0J9L2RidXMvLmxpYnMvdGVzdC1kYnVzICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKKwljcCAtciAke0J9L3Rlc3QvZGF0YSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0Cit9CitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiYmFzaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXNfMS4xMC4xNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXNfMS4xMC4xNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTFkNzM1Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzXzEuMTAuMTQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxODAgKzAsMCBAQAotU1VNTUFSWSA9ICJELUJ1cyBtZXNzYWdlIGJ1cyIKLURFU0NSSVBUSU9OID0gIkQtQnVzIGlzIGEgbWVzc2FnZSBidXMgc3lzdGVtLCBhIHNpbXBsZSB3YXkgZm9yIGFwcGxpY2F0aW9ucyB0byB0YWxrIHRvIG9uZSBhbm90aGVyLiBJbiBhZGRpdGlvbiB0byBpbnRlcnByb2Nlc3MgY29tbXVuaWNhdGlvbiwgRC1CdXMgaGVscHMgY29vcmRpbmF0ZSBwcm9jZXNzIGxpZmVjeWNsZTsgaXQgbWFrZXMgaXQgc2ltcGxlIGFuZCByZWxpYWJsZSB0byBjb2RlIGEgXCJzaW5nbGUgaW5zdGFuY2VcIiBhcHBsaWNhdGlvbiBvciBkYWVtb24sIGFuZCB0byBsYXVuY2ggYXBwbGljYXRpb25zIGFuZCBkYWVtb25zIG9uIGRlbWFuZCB3aGVuIHRoZWlyIHNlcnZpY2VzIGFyZSBuZWVkZWQuIgotSE9NRVBBR0UgPSAiaHR0cDovL2RidXMuZnJlZWRlc2t0b3Aub3JnIgotU0VDVElPTiA9ICJiYXNlIgotTElDRU5TRSA9ICJBRkwtMiB8IEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTEwZGRlZDNiNTgxNDhmM2YxZmQ4MDRiMjYzNTRhZjNlIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RidXMvZGJ1cy5oO2JlZ2lubGluZT02O2VuZGxpbmU9MjA7bWQ1PTc3NTVjOWQ3YWJjY2Q1ZGJkMjVhNmE5NzQ1MzhiYjNjIgotREVQRU5EUyA9ICJleHBhdCB2aXJ0dWFsL2xpYmludGwiCi1SREVQRU5EU19kYnVzX2NsYXNzLW5hdGl2ZSA9ICIiCi1SREVQRU5EU19kYnVzX2NsYXNzLW5hdGl2ZXNkayA9ICIiCi1QQUNLQUdFUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwdGVzdCcsICcke1BOfS1wdGVzdCcsICcnLCBkKX0iCi1BTExPV19FTVBUWV9kYnVzLXB0ZXN0ID0gIjEiCi1SREVQRU5EU19kYnVzLXB0ZXN0X2NsYXNzLXRhcmdldCA9ICJkYnVzLXRlc3QtcHRlc3QiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2RidXMuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL2RidXMvZGJ1cy0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vdG1wZGlyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RidXMtMS5pbml0IFwKLSAgICAgICAgICAgZmlsZTovL29zLXRlc3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vY2xlYXItZ3VpZF9mcm9tX3NlcnZlci1pZi1zZW5kX25lZ290aWF0ZV91bml4X2YucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtZXhwbGljaXRlbHktY2hlY2stc3RkaW50LmgucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiM2Y3YjAxM2NlOGY2NDFjZDRjODk3YWNkYTBlZjM0NjciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjMyMzhmNzAzNTNlMzhjZTVjYTE4M2ViYzk1MjVjMGQ5N2FjMDBlZjY0MGFkMjljZjc5NDc4MmFmNmU2YTA4MyIKLQotaW5oZXJpdCB1c2VyYWRkIGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCB1cGRhdGUtcmMuZCB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KLQotSU5JVFNDUklQVF9OQU1FID0gImRidXMtMSIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDAyIDUgMyAyIC4gc3RvcCAyMCAwIDEgNiAuIgotCi1weXRob24gX19hbm9ueW1vdXMoKSB7Ci0gICAgaWYgbm90IGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCBUcnVlLCBGYWxzZSwgZCk6Ci0gICAgICAgIGQuc2V0VmFyKCJJTkhJQklUX1VQREFURVJDRF9CQkNMQVNTIiwgIjEiKQotfQotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgotR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAiLXIgbmV0ZGV2IgotVVNFUkFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSAtLWhvbWUgJHtsb2NhbHN0YXRlZGlyfS9saWIvZGJ1cyBcCi0gICAgICAgICAgICAgICAgICAgICAgIC0tbm8tY3JlYXRlLWhvbWUgLS1zaGVsbCAvYmluL2ZhbHNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLS11c2VyLWdyb3VwIG1lc3NhZ2VidXMiCi0KLUNPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L2RidXMtMS9zeXN0ZW0uY29uZiAke3N5c2NvbmZkaXJ9L2RidXMtMS9zZXNzaW9uLmNvbmYiCi0KLURFQklBTk5BTUVfJHtQTn0gPSAiZGJ1cy0xIgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tbGliIgotCi1PTERQS0dOQU1FID0gImRidXMteDExIgotT0xEUEtHTkFNRV9jbGFzcy1uYXRpdmVzZGsgPSAiIgotCi0jIGZvciBjb21wYXRpYmlsaXR5Ci1SUFJPVklERVNfJHtQTn0gPSAiJHtPTERQS0dOQU1FfSIKLVJSRVBMQUNFU18ke1BOfSArPSAiJHtPTERQS0dOQU1FfSIKLQotRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9L2RidXMtZGFlbW9uKiBcCi0gICAgICAgICAgICAgICAke2JpbmRpcn0vZGJ1cy11dWlkZ2VuIFwKLSAgICAgICAgICAgICAgICR7YmluZGlyfS9kYnVzLWNsZWFudXAtc29ja2V0cyBcCi0gICAgICAgICAgICAgICAke2JpbmRpcn0vZGJ1cy1zZW5kIFwKLSAgICAgICAgICAgICAgICR7YmluZGlyfS9kYnVzLW1vbml0b3IgXAotICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2RidXMtbGF1bmNoIFwKLSAgICAgICAgICAgICAgICR7YmluZGlyfS9kYnVzLXJ1bi1zZXNzaW9uIFwKLSAgICAgICAgICAgICAgICR7YmluZGlyfS9kYnVzLXVwZGF0ZS1hY3RpdmF0aW9uLWVudmlyb25tZW50IFwKLSAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vZGJ1cyogXAotICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfSBcCi0gICAgICAgICAgICAgICAke2xvY2Fsc3RhdGVkaXJ9IFwKLSAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3NlcnZpY2VzIFwKLSAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS1zZXJ2aWNlcyBcCi0gICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zZXNzaW9uLmQgXAotICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc2Vzc2lvbi5jb25mIFwKLSAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kIFwKLSAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5jb25mIFwKLSAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0gXAotICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0gXAotIgotRklMRVNfJHtQTn0tbGliID0gIiR7bGliZGlyfS9saWIqLnNvLioiCi1SUkVDT01NRU5EU18ke1BOfS1saWIgPSAiJHtQTn0iCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9kYnVzLTEuMC9pbmNsdWRlICR7YmluZGlyfS9kYnVzLXRlc3QtdG9vbCIKLQotUEFDS0FHRV9XUklURV9ERVBTICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCBzeXN2aW5pdCcsJ3N5c3RlbWQtc3lzdGVtY3RsLW5hdGl2ZScsJycsZCl9IgotcGtnX3Bvc3RpbnN0X2RidXMoKSB7Ci0JIyBJZiBib3RoIHN5c3RlbWQgYW5kIHN5c3Zpbml0IGFyZSBlbmFibGVkLCBtYXNrIHRoZSBkYnVzLTEgaW5pdCBzY3JpcHQKLSAgICAgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQgc3lzdmluaXQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgotCQlpZiBbIC1uICIkRCIgXTsgdGhlbgotCQkJT1BUUz0iLS1yb290PSREIgotCQlmaQotCQlzeXN0ZW1jdGwgJE9QVFMgbWFzayBkYnVzLTEuc2VydmljZQotCWZpCi0KLQlpZiBbIC16ICIkRCIgXSAmJiBbIC1lIC9ldGMvaW5pdC5kL3BvcHVsYXRlLXZvbGF0aWxlLnNoIF0gOyB0aGVuCi0JCS9ldGMvaW5pdC5kL3BvcHVsYXRlLXZvbGF0aWxlLnNoIHVwZGF0ZQotCWZpCi19Ci0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtdGVzdHMgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS14bWwtZG9jcyBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLWRveHlnZW4tZG9jcyBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLWxpYmF1ZGl0IFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1sYXJnZWZpbGUgXAotICAgICAgICAgICAgICAgICIKLQotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIFNZU1RFTUNUTD0ke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLS1kaXNhYmxlLXNlbGludXgiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kIHgxMScsIGQpfSIKLVBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gIiIKLVBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlc2RrID0gIiIKLQotUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLWVuYWJsZS1zeXN0ZW1kIC0td2l0aC1zeXN0ZW1kc3lzdGVtdW5pdGRpcj0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9LC0tZGlzYWJsZS1zeXN0ZW1kIC0td2l0aG91dC1zeXN0ZW1kc3lzdGVtdW5pdGRpcixzeXN0ZW1kIgotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0td2l0aC14IC0tZW5hYmxlLXgxMS1hdXRvbGF1bmNoLC0td2l0aG91dC14IC0tZGlzYWJsZS14MTEtYXV0b2xhdW5jaCwgdmlydHVhbC9saWJ4MTEgbGlic20iCi1QQUNLQUdFQ09ORklHW3VzZXItc2Vzc2lvbl0gPSAiLS1lbmFibGUtdXNlci1zZXNzaW9uIC0td2l0aC1zeXN0ZW1kdXNlcnVuaXRkaXI9JHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0sLS1kaXNhYmxlLXVzZXItc2Vzc2lvbiIKLQotZG9faW5zdGFsbCgpIHsKLQlhdXRvdG9vbHNfZG9faW5zdGFsbAotCi0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0JCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0JCXNlZCAnczpAYmluZGlyQDoke2JpbmRpcn06JyA8ICR7V09SS0RJUn0vZGJ1cy0xLmluaXQgPiR7V09SS0RJUn0vZGJ1cy0xLmluaXQuc2gKLQkJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vZGJ1cy0xLmluaXQuc2ggJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2RidXMtMQotCWZpCi0KLQlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotCQlmb3IgaSBpbiBkYnVzLnRhcmdldC53YW50cyBzb2NrZXRzLnRhcmdldC53YW50cyBtdWx0aS11c2VyLnRhcmdldC53YW50czsgZG8gXAotCQkJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS8kaTsgZG9uZQotCQlpbnN0YWxsIC1tIDA2NDQgJHtCfS9idXMvZGJ1cy5zZXJ2aWNlICR7Qn0vYnVzL2RidXMuc29ja2V0ICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9LwotCQlsbiAtZnMgLi4vZGJ1cy5zb2NrZXQgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vZGJ1cy50YXJnZXQud2FudHMvZGJ1cy5zb2NrZXQKLQkJbG4gLWZzIC4uL2RidXMuc29ja2V0ICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3NvY2tldHMudGFyZ2V0LndhbnRzL2RidXMuc29ja2V0Ci0JCWxuIC1mcyAuLi9kYnVzLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbXVsdGktdXNlci50YXJnZXQud2FudHMvZGJ1cy5zZXJ2aWNlCi0JZmkKLQotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKLQllY2hvICJkIG1lc3NhZ2VidXMgbWVzc2FnZWJ1cyAwNzU1ICR7bG9jYWxzdGF0ZWRpcn0vcnVuL2RidXMgbm9uZSIgXAotCSAgICAgPiAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy85OV9kYnVzCi0KLQotCW1rZGlyIC1wICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9kYnVzCi0KLQljaG93biBtZXNzYWdlYnVzOm1lc3NhZ2VidXMgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL2RidXMKLQotCWNob3duIHJvb3Q6bWVzc2FnZWJ1cyAke0R9JHtsaWJleGVjZGlyfS9kYnVzLWRhZW1vbi1sYXVuY2gtaGVscGVyCi0JY2htb2QgNDc1NSAke0R9JHtsaWJleGVjZGlyfS9kYnVzLWRhZW1vbi1sYXVuY2gtaGVscGVyCi0KLQkjIFJlbW92ZSBSZWQgSGF0IGluaXRzY3JpcHQKLQlybSAtcmYgJHtEfSR7c3lzY29uZmRpcn0vcmMuZAotCi0JIyBSZW1vdmUgZW1wdHkgdGVzdGV4ZWMgZGlyZWN0b3J5IGFzIHdlIGRvbid0IGJ1aWxkIHRlc3RzCi0Jcm0gLXJmICR7RH0ke2xpYmRpcn0vZGJ1cy0xLjAvdGVzdAotCi0JIyBSZW1vdmUgL3Zhci9ydW4gYXMgaXQgaXMgY3JlYXRlZCBvbiBzdGFydHVwCi0Jcm0gLXJmICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1bgotfQotCi1kb19pbnN0YWxsX2NsYXNzLW5hdGl2ZSgpIHsKLQlhdXRvdG9vbHNfZG9faW5zdGFsbAotCi0JIyBmb3IgZGJ1cy1nbGliLW5hdGl2ZSBpbnRyb3NwZWN0aW9uIGdlbmVyYXRpb24KLQlpbnN0YWxsIC1kICR7RH0ke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2RidXMvCi0JIyBOLkIuIGlzIGJlbG93IGluc3RhbGwgYWN0dWFsbHkgcmVxdWlyZWQ/Ci0JaW5zdGFsbCAtbSAwNjQ0IGJ1cy9zZXNzaW9uLmNvbmYgJHtEfSR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZGJ1cy9zZXNzaW9uLmNvbmYKLQotCSMgZGJ1cy1nbGliLW5hdGl2ZSBhbmQgZGJ1cy1nbGliIG5lZWQgdGhpcyB4bWwgZmlsZQotCS4vYnVzL2RidXMtZGFlbW9uIC0taW50cm9zcGVjdCA+ICR7RH0ke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2RidXMvZGJ1cy1idXMtaW50cm9zcGVjdC54bWwKLQkKLQkjIGRidXMtbGF1bmNoIGhhcyBubyBYIHN1cHBvcnQgc28gbGV0cyBub3QgaW5zdGFsbCBpdCBpbiBjYXNlIHRoZSBob3N0Ci0JIyBoYXMgYSBtb3JlIGZlYXR1cmVkIGFuZCB1c2VmdWwgdmVyc2lvbgotCXJtIC1mICR7RH0ke2JpbmRpcn0vZGJ1cy1sYXVuY2gKLX0KLQotZG9faW5zdGFsbF9jbGFzcy1uYXRpdmVzZGsoKSB7Ci0JYXV0b3Rvb2xzX2RvX2luc3RhbGwKLQotCSMgZGJ1cy1sYXVuY2ggaGFzIG5vIFggc3VwcG9ydCBzbyBsZXRzIG5vdCBpbnN0YWxsIGl0IGluIGNhc2UgdGhlIGhvc3QKLQkjIGhhcyBhIG1vcmUgZmVhdHVyZWQgYW5kIHVzZWZ1bCB2ZXJzaW9uCi0Jcm0gLWYgJHtEfSR7YmluZGlyfS9kYnVzLWxhdW5jaAotCi0JIyBSZW1vdmUgL3Zhci9ydW4gdG8gYXZvaWQgUUEgZXJyb3IKLQlybSAtcmYgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuCi19Ci1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLUlOU0FORV9TS0lQXyR7UE59LXB0ZXN0ICs9ICJidWlsZC1kZXBzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1c18xLjEwLjIwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1c18xLjEwLjIwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkZGVkYzEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzXzEuMTAuMjAuYmIKQEAgLTAsMCArMSwxODAgQEAKK1NVTU1BUlkgPSAiRC1CdXMgbWVzc2FnZSBidXMiCitERVNDUklQVElPTiA9ICJELUJ1cyBpcyBhIG1lc3NhZ2UgYnVzIHN5c3RlbSwgYSBzaW1wbGUgd2F5IGZvciBhcHBsaWNhdGlvbnMgdG8gdGFsayB0byBvbmUgYW5vdGhlci4gSW4gYWRkaXRpb24gdG8gaW50ZXJwcm9jZXNzIGNvbW11bmljYXRpb24sIEQtQnVzIGhlbHBzIGNvb3JkaW5hdGUgcHJvY2VzcyBsaWZlY3ljbGU7IGl0IG1ha2VzIGl0IHNpbXBsZSBhbmQgcmVsaWFibGUgdG8gY29kZSBhIFwic2luZ2xlIGluc3RhbmNlXCIgYXBwbGljYXRpb24gb3IgZGFlbW9uLCBhbmQgdG8gbGF1bmNoIGFwcGxpY2F0aW9ucyBhbmQgZGFlbW9ucyBvbiBkZW1hbmQgd2hlbiB0aGVpciBzZXJ2aWNlcyBhcmUgbmVlZGVkLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9kYnVzLmZyZWVkZXNrdG9wLm9yZyIKK1NFQ1RJT04gPSAiYmFzZSIKK0xJQ0VOU0UgPSAiQUZMLTIgfCBHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xMGRkZWQzYjU4MTQ4ZjNmMWZkODA0YjI2MzU0YWYzZSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kYnVzL2RidXMuaDtiZWdpbmxpbmU9NjtlbmRsaW5lPTIwO21kNT03NzU1YzlkN2FiY2NkNWRiZDI1YTZhOTc0NTM4YmIzYyIKK0RFUEVORFMgPSAiZXhwYXQgdmlydHVhbC9saWJpbnRsIgorUkRFUEVORFNfZGJ1c19jbGFzcy1uYXRpdmUgPSAiIgorUkRFUEVORFNfZGJ1c19jbGFzcy1uYXRpdmVzZGsgPSAiIgorUEFDS0FHRVMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncHRlc3QnLCAnJHtQTn0tcHRlc3QnLCAnJywgZCl9IgorQUxMT1dfRU1QVFlfZGJ1cy1wdGVzdCA9ICIxIgorUkRFUEVORFNfZGJ1cy1wdGVzdF9jbGFzcy10YXJnZXQgPSAiZGJ1cy10ZXN0LXB0ZXN0IgorCitTUkNfVVJJID0gImh0dHA6Ly9kYnVzLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy9kYnVzL2RidXMtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3RtcGRpci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kYnVzLTEuaW5pdCBcCisgICAgICAgICAgIGZpbGU6Ly9vcy10ZXN0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2NsZWFyLWd1aWRfZnJvbV9zZXJ2ZXItaWYtc2VuZF9uZWdvdGlhdGVfdW5peF9mLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLWV4cGxpY2l0ZWx5LWNoZWNrLXN0ZGludC5oLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjk0Yzk5MWU3NjNkNGY5ZjEzNjkwNDE2YjJkY2Q5NDExIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImU1NzRiOTc4MGI1NDI1ZmRlNGQ5NzNiYjU5NmU3ZWEwZjA5ZTAwZmUyZWRkNjYyZGE5MDE2ZTk3NmM0NjBiNDgiCisKK2luaGVyaXQgdXNlcmFkZCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgdXBkYXRlLXJjLmQgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCisKK0lOSVRTQ1JJUFRfTkFNRSA9ICJkYnVzLTEiCitJTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCAwMiA1IDMgMiAuIHN0b3AgMjAgMCAxIDYgLiIKKworcHl0aG9uIF9fYW5vbnltb3VzKCkgeworICAgIGlmIG5vdCBiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3Zpbml0JywgVHJ1ZSwgRmFsc2UsIGQpOgorICAgICAgICBkLnNldFZhcigiSU5ISUJJVF9VUERBVEVSQ0RfQkJDTEFTUyIsICIxIikKK30KKworVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKK0dST1VQQUREX1BBUkFNXyR7UE59ID0gIi1yIG5ldGRldiIKK1VTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gLS1ob21lICR7bG9jYWxzdGF0ZWRpcn0vbGliL2RidXMgXAorICAgICAgICAgICAgICAgICAgICAgICAtLW5vLWNyZWF0ZS1ob21lIC0tc2hlbGwgL2Jpbi9mYWxzZSBcCisgICAgICAgICAgICAgICAgICAgICAgIC0tdXNlci1ncm91cCBtZXNzYWdlYnVzIgorCitDT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9kYnVzLTEvc3lzdGVtLmNvbmYgJHtzeXNjb25mZGlyfS9kYnVzLTEvc2Vzc2lvbi5jb25mIgorCitERUJJQU5OQU1FXyR7UE59ID0gImRidXMtMSIKKworUEFDS0FHRVMgPSsgIiR7UE59LWxpYiIKKworT0xEUEtHTkFNRSA9ICJkYnVzLXgxMSIKK09MRFBLR05BTUVfY2xhc3MtbmF0aXZlc2RrID0gIiIKKworIyBmb3IgY29tcGF0aWJpbGl0eQorUlBST1ZJREVTXyR7UE59ID0gIiR7T0xEUEtHTkFNRX0iCitSUkVQTEFDRVNfJHtQTn0gKz0gIiR7T0xEUEtHTkFNRX0iCisKK0ZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS9kYnVzLWRhZW1vbiogXAorICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2RidXMtdXVpZGdlbiBcCisgICAgICAgICAgICAgICAke2JpbmRpcn0vZGJ1cy1jbGVhbnVwLXNvY2tldHMgXAorICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2RidXMtc2VuZCBcCisgICAgICAgICAgICAgICAke2JpbmRpcn0vZGJ1cy1tb25pdG9yIFwKKyAgICAgICAgICAgICAgICR7YmluZGlyfS9kYnVzLWxhdW5jaCBcCisgICAgICAgICAgICAgICAke2JpbmRpcn0vZGJ1cy1ydW4tc2Vzc2lvbiBcCisgICAgICAgICAgICAgICAke2JpbmRpcn0vZGJ1cy11cGRhdGUtYWN0aXZhdGlvbi1lbnZpcm9ubWVudCBcCisgICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L2RidXMqIFwKKyAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0gXAorICAgICAgICAgICAgICAgJHtsb2NhbHN0YXRlZGlyfSBcCisgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zZXJ2aWNlcyBcCisgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0tc2VydmljZXMgXAorICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc2Vzc2lvbi5kIFwKKyAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3Nlc3Npb24uY29uZiBcCisgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZCBcCisgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uY29uZiBcCisgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9IFwKKyAgICAgICAgICAgICAgICR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9IFwKKyIKK0ZJTEVTXyR7UE59LWxpYiA9ICIke2xpYmRpcn0vbGliKi5zby4qIgorUlJFQ09NTUVORFNfJHtQTn0tbGliID0gIiR7UE59IgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vZGJ1cy0xLjAvaW5jbHVkZSAke2JpbmRpcn0vZGJ1cy10ZXN0LXRvb2wiCisKK1BBQ0tBR0VfV1JJVEVfREVQUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQgc3lzdmluaXQnLCdzeXN0ZW1kLXN5c3RlbWN0bC1uYXRpdmUnLCcnLGQpfSIKK3BrZ19wb3N0aW5zdF9kYnVzKCkgeworCSMgSWYgYm90aCBzeXN0ZW1kIGFuZCBzeXN2aW5pdCBhcmUgZW5hYmxlZCwgbWFzayB0aGUgZGJ1cy0xIGluaXQgc2NyaXB0CisgICAgICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kIHN5c3Zpbml0JywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KKwkJaWYgWyAtbiAiJEQiIF07IHRoZW4KKwkJCU9QVFM9Ii0tcm9vdD0kRCIKKwkJZmkKKwkJc3lzdGVtY3RsICRPUFRTIG1hc2sgZGJ1cy0xLnNlcnZpY2UKKwlmaQorCisJaWYgWyAteiAiJEQiIF0gJiYgWyAtZSAvZXRjL2luaXQuZC9wb3B1bGF0ZS12b2xhdGlsZS5zaCBdIDsgdGhlbgorCQkvZXRjL2luaXQuZC9wb3B1bGF0ZS12b2xhdGlsZS5zaCB1cGRhdGUKKwlmaQorfQorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXRlc3RzIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUteG1sLWRvY3MgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1kb3h5Z2VuLWRvY3MgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1saWJhdWRpdCBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtbGFyZ2VmaWxlIFwKKyAgICAgICAgICAgICAgICAiCisKK0VYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBTWVNURU1DVEw9JHtiYXNlX2JpbmRpcn0vc3lzdGVtY3RsIgorRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC0tZGlzYWJsZS1zZWxpbnV4IgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCB4MTEnLCBkKX0iCitQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICIiCitQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZXNkayA9ICIiCisKK1BBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS1lbmFibGUtc3lzdGVtZCAtLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXI9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfSwtLWRpc2FibGUtc3lzdGVtZCAtLXdpdGhvdXQtc3lzdGVtZHN5c3RlbXVuaXRkaXIsc3lzdGVtZCIKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItLXdpdGgteCAtLWVuYWJsZS14MTEtYXV0b2xhdW5jaCwtLXdpdGhvdXQteCAtLWRpc2FibGUteDExLWF1dG9sYXVuY2gsIHZpcnR1YWwvbGlieDExIGxpYnNtIgorUEFDS0FHRUNPTkZJR1t1c2VyLXNlc3Npb25dID0gIi0tZW5hYmxlLXVzZXItc2Vzc2lvbiAtLXdpdGgtc3lzdGVtZHVzZXJ1bml0ZGlyPSR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9LC0tZGlzYWJsZS11c2VyLXNlc3Npb24iCisKK2RvX2luc3RhbGwoKSB7CisJYXV0b3Rvb2xzX2RvX2luc3RhbGwKKworCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorCQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAorCQlzZWQgJ3M6QGJpbmRpckA6JHtiaW5kaXJ9OicgPCAke1dPUktESVJ9L2RidXMtMS5pbml0ID4ke1dPUktESVJ9L2RidXMtMS5pbml0LnNoCisJCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2RidXMtMS5pbml0LnNoICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9kYnVzLTEKKwlmaQorCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKwkJZm9yIGkgaW4gZGJ1cy50YXJnZXQud2FudHMgc29ja2V0cy50YXJnZXQud2FudHMgbXVsdGktdXNlci50YXJnZXQud2FudHM7IGRvIFwKKwkJCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vJGk7IGRvbmUKKwkJaW5zdGFsbCAtbSAwNjQ0ICR7Qn0vYnVzL2RidXMuc2VydmljZSAke0J9L2J1cy9kYnVzLnNvY2tldCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS8KKwkJbG4gLWZzIC4uL2RidXMuc29ja2V0ICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2RidXMudGFyZ2V0LndhbnRzL2RidXMuc29ja2V0CisJCWxuIC1mcyAuLi9kYnVzLnNvY2tldCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zb2NrZXRzLnRhcmdldC53YW50cy9kYnVzLnNvY2tldAorCQlsbiAtZnMgLi4vZGJ1cy5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L211bHRpLXVzZXIudGFyZ2V0LndhbnRzL2RidXMuc2VydmljZQorCWZpCisKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzCisJZWNobyAiZCBtZXNzYWdlYnVzIG1lc3NhZ2VidXMgMDc1NSAke2xvY2Fsc3RhdGVkaXJ9L3J1bi9kYnVzIG5vbmUiIFwKKwkgICAgID4gJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvOTlfZGJ1cworCisKKwlta2RpciAtcCAke0R9JHtsb2NhbHN0YXRlZGlyfS9saWIvZGJ1cworCisJY2hvd24gbWVzc2FnZWJ1czptZXNzYWdlYnVzICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9kYnVzCisKKwljaG93biByb290Om1lc3NhZ2VidXMgJHtEfSR7bGliZXhlY2Rpcn0vZGJ1cy1kYWVtb24tbGF1bmNoLWhlbHBlcgorCWNobW9kIDQ3NTUgJHtEfSR7bGliZXhlY2Rpcn0vZGJ1cy1kYWVtb24tbGF1bmNoLWhlbHBlcgorCisJIyBSZW1vdmUgUmVkIEhhdCBpbml0c2NyaXB0CisJcm0gLXJmICR7RH0ke3N5c2NvbmZkaXJ9L3JjLmQKKworCSMgUmVtb3ZlIGVtcHR5IHRlc3RleGVjIGRpcmVjdG9yeSBhcyB3ZSBkb24ndCBidWlsZCB0ZXN0cworCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2RidXMtMS4wL3Rlc3QKKworCSMgUmVtb3ZlIC92YXIvcnVuIGFzIGl0IGlzIGNyZWF0ZWQgb24gc3RhcnR1cAorCXJtIC1yZiAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4KK30KKworZG9faW5zdGFsbF9jbGFzcy1uYXRpdmUoKSB7CisJYXV0b3Rvb2xzX2RvX2luc3RhbGwKKworCSMgZm9yIGRidXMtZ2xpYi1uYXRpdmUgaW50cm9zcGVjdGlvbiBnZW5lcmF0aW9uCisJaW5zdGFsbCAtZCAke0R9JHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9kYnVzLworCSMgTi5CLiBpcyBiZWxvdyBpbnN0YWxsIGFjdHVhbGx5IHJlcXVpcmVkPworCWluc3RhbGwgLW0gMDY0NCBidXMvc2Vzc2lvbi5jb25mICR7RH0ke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2RidXMvc2Vzc2lvbi5jb25mCisKKwkjIGRidXMtZ2xpYi1uYXRpdmUgYW5kIGRidXMtZ2xpYiBuZWVkIHRoaXMgeG1sIGZpbGUKKwkuL2J1cy9kYnVzLWRhZW1vbiAtLWludHJvc3BlY3QgPiAke0R9JHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9kYnVzL2RidXMtYnVzLWludHJvc3BlY3QueG1sCisJCisJIyBkYnVzLWxhdW5jaCBoYXMgbm8gWCBzdXBwb3J0IHNvIGxldHMgbm90IGluc3RhbGwgaXQgaW4gY2FzZSB0aGUgaG9zdAorCSMgaGFzIGEgbW9yZSBmZWF0dXJlZCBhbmQgdXNlZnVsIHZlcnNpb24KKwlybSAtZiAke0R9JHtiaW5kaXJ9L2RidXMtbGF1bmNoCit9CisKK2RvX2luc3RhbGxfY2xhc3MtbmF0aXZlc2RrKCkgeworCWF1dG90b29sc19kb19pbnN0YWxsCisKKwkjIGRidXMtbGF1bmNoIGhhcyBubyBYIHN1cHBvcnQgc28gbGV0cyBub3QgaW5zdGFsbCBpdCBpbiBjYXNlIHRoZSBob3N0CisJIyBoYXMgYSBtb3JlIGZlYXR1cmVkIGFuZCB1c2VmdWwgdmVyc2lvbgorCXJtIC1mICR7RH0ke2JpbmRpcn0vZGJ1cy1sYXVuY2gKKworCSMgUmVtb3ZlIC92YXIvcnVuIHRvIGF2b2lkIFFBIGVycm9yCisJcm0gLXJmICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1bgorfQorQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitJTlNBTkVfU0tJUF8ke1BOfS1wdGVzdCArPSAiYnVpbGQtZGVwcyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci8wMDAzLWNvbmZpZ3VyZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci8wMDAzLWNvbmZpZ3VyZS5wYXRjaAppbmRleCBjNTNhYjAxLi44NDY5YTUwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXIvMDAwMy1jb25maWd1cmUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyLzAwMDMtY29uZmlndXJlLnBhdGNoCkBAIC0xLDE5ICsxLDIwIEBACi1Gcm9tIGM1ZjVjNTA1NGMxYjE1NTM5ZGNjZjg2NmUyYzNmYWJhN2VkNjg0NTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDU4ZGQyNGE4MGNhMGY0MDBkMDc2MWFmZDljZTJiN2Y2ODRmYzkxMjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiA9P1VURi04P3E/RXJpYz0yMEI9QzM9QTluYXJkPz0gPGVyaWNAZXVrcmVhLmNvbT4KIERhdGU6IFRodSwgMjUgQXByIDIwMTMgMDA6Mjc6MjUgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAzLzZdIGNvbmZpZ3VyZTogYWRkIGEgdmFyaWFibGUgdG8gYWxsb3cgb3BlbnB0eSBjaGVjayB0byBiZSBjYWNoZWQKK1N1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlOiBhZGQgYSB2YXJpYWJsZSB0byBhbGxvdyBvcGVucHR5IGNoZWNrIHRvIGJlIGNhY2hlZAogCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFsgaHR0cHM6Ly9naXRodWIuY29tL21rai9kcm9wYmVhci9wdWxsLzQ4IF0KIAorU2lnbmVkLW9mZi1ieTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KIC0tLQogIGNvbmZpZ3VyZS5hYyB8IDExICsrKysrKysrLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggMDU0NjFmMy4uOWMxNmQ5MCAxMDA2NDQKK2luZGV4IDg5M2I5MDQuLjI0NTQwOGQgMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTE2NiwxNSArMTY2LDIwIEBAIEFDX0FSR19FTkFCTEUob3BlbnB0eSwKK0BAIC0xNzcsMTUgKzE3NywyMCBAQCBBQ19BUkdfRU5BQkxFKG9wZW5wdHksCiAgCQkJQUNfTVNHX05PVElDRShOb3QgdXNpbmcgb3BlbnB0eSkKICAJCWVsc2UKICAJCQlBQ19NU0dfTk9USUNFKFVzaW5nIG9wZW5wdHkgaWYgYXZhaWxhYmxlKQpAQCAtMzgsNSArMzksNSBAQAogIEFDX0FSR19FTkFCTEUoc3lzbG9nLAogIAlbICAtLWRpc2FibGUtc3lzbG9nICAgICAgICBEb24ndCBpbmNsdWRlIHN5c2xvZyBzdXBwb3J0XSwKIC0tIAotMS43LjExLjcKKzIuOC4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci9maXgtbGlidG9tY3J5cHQtbGlidG9tbWF0aC1vcmRlcmluZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci9maXgtbGlidG9tY3J5cHQtbGlidG9tbWF0aC1vcmRlcmluZy5wYXRjaAppbmRleCBkZTkzMGYyLi4yYjA1ZTE4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXIvZml4LWxpYnRvbWNyeXB0LWxpYnRvbW1hdGgtb3JkZXJpbmcucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyL2ZpeC1saWJ0b21jcnlwdC1saWJ0b21tYXRoLW9yZGVyaW5nLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAyZmQ4ZDJhZWRhZDBjNTBjZGYxZTQzZWRkMjM4Nzg3NGI3MjBhZDRjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBmMzdmYTlhNDFmMjQ4ZmE0MWRkNzRhNDFjNjZjYjQxYTI5MWMwM2QyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KIERhdGU6IEZyaSwgMTYgU2VwIDIwMTYgMTI6MTg6MjMgLTA3MDAKIFN1YmplY3Q6IFtQQVRDSF0gZml4IGxpYnRvbWNyeXB0L2xpYnRvbW1hdGggb3JkZXJpbmcKQEAgLTExLDE4ICsxMSwxOSBAQAogTm90ZSB0aGF0IExJQlRPTV9MSUJTIGlzIG5vdCB1c2VkIHdoZW4gbGlua2luZyB3aXRoIHRoZSBidW5kbGVkCiBsaWJ0b20gbGlicy4KIAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFsgaHR0cHM6Ly9naXRodWIuY29tL21rai9kcm9wYmVhci9jb21taXQvZjllNmJjMmFlY2FiMGY0YjViNTI5ZTA3YTkyY2M2M2M4YTY2Y2Q0YiBdCiAKIFNpZ25lZC1vZmYtYnk6IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgogLS0tCiAgY29uZmlndXJlLmFjIHwgOCArKysrLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGI2YWJlNGMuLjg1YmI4YmMgMTAwNjQ0CitpbmRleCAyNDU0MDhkLi5kNjI0ODUzIDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC0zOTAsMTYgKzM5MCwxNiBAQCBBQ19BUkdfRU5BQkxFKGJ1bmRsZWQtbGlidG9tLAorQEAgLTM5MywxNiArMzkzLDE2IEBAIEFDX0FSR19FTkFCTEUoYnVuZGxlZC1saWJ0b20sCiAgCQkJQUNfTVNHX05PVElDRShGb3JjaW5nIGJ1bmRsZWQgbGlidG9tKikKICAJCWVsc2UKICAJCQlCVU5ETEVEX0xJQlRPTT0wCkBAIC00NCw1ICs0NSw1IEBACiAgKQogIAogLS0gCi0xLjkuMQorMi44LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyL3N1cHBvcnQtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyL3N1cHBvcnQtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjZlZmI0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kcm9wYmVhci9kcm9wYmVhci9zdXBwb3J0LW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLUZyb206ID0/VVRGLTg/cT9IZW5yaWs9MjBOb3Jkc3RyPUMzPUI2bT89IDxoZW5yaWtAa25jLm51PgotRGF0ZTogV2VkLCAxMSBNYXkgMjAxNiAxMjozNTowNiArMDIwMAotU3ViamVjdDogW1BBVENIXSBTdXBwb3J0IG91dC1vZi10cmVlIGJ1aWxkcyB1c2lnbiBidW5kbGVkIGxpYnRvbQotCi1XaGVuIGJ1aWxkaW5nIG91dC1vZi10cmVlIHdlIG5lZWQgYm90aCBzb3VyY2UgYW5kIGdlbmVyYXRlZAotZm9sZGVycyBpbiBpbmNsdWRlIHBhdGhzIHRvIGZpbmQgYm90aCBkaXN0cmlidXRlZCBhbmQgZ2VuZXJhdGVkCi1oZWFkZXJzLgotCi0KLQotU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLS0tLQotIGxpYnRvbWNyeXB0L01ha2VmaWxlLmluIHwgMiArLQotIGxpYnRvbW1hdGgvTWFrZWZpbGUuaW4gIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGlidG9tY3J5cHQvTWFrZWZpbGUuaW4gYi9saWJ0b21jcnlwdC9NYWtlZmlsZS5pbgotaW5kZXggMzA1NmVmMC4uNzk3MDcwMCAxMDA2NDQKLS0tLSBhL2xpYnRvbWNyeXB0L01ha2VmaWxlLmluCi0rKysgYi9saWJ0b21jcnlwdC9NYWtlZmlsZS5pbgotQEAgLTE5LDcgKzE5LDcgQEAgc3JjZGlyPUBzcmNkaXJACi0gCi0gIyBDb21waWxhdGlvbiBmbGFncy4gTm90ZSB0aGUgKz0gZG9lcyBub3Qgd3JpdGUgb3ZlciB0aGUgdXNlcidzIENGTEFHUyEKLSAjIFRoZSByZXN0IG9mIHRoZSBmbGFncyBjb21lIGZyb20gdGhlIHBhcmVudCBEcm9wYmVhciBtYWtlZmlsZQotLUNGTEFHUyArPSAtYyAtSSQoc3JjZGlyKS9zcmMvaGVhZGVycy8gLUkkKHNyY2RpcikvLi4vIC1ETFRDX1NPVVJDRSAtSSQoc3JjZGlyKS8uLi9saWJ0b21tYXRoLwotK0NGTEFHUyArPSAtYyAtSXNyYy9oZWFkZXJzLyAtSSQoc3JjZGlyKS9zcmMvaGVhZGVycy8gLUkuLi8gLUkkKHNyY2RpcikvLi4vIC1ETFRDX1NPVVJDRSAtSS4uL2xpYnRvbW1hdGgvIC1JJChzcmNkaXIpLy4uL2xpYnRvbW1hdGgvCi0gCi0gIyBhZGRpdGlvbmFsIHdhcm5pbmdzIChuZXdlciBHQ0MgMy40IGFuZCBoaWdoZXIpCi0gaWZkZWYgR0NDXzM0Ci1kaWZmIC0tZ2l0IGEvbGlidG9tbWF0aC9NYWtlZmlsZS5pbiBiL2xpYnRvbW1hdGgvTWFrZWZpbGUuaW4KLWluZGV4IDA2YWJhNjguLjAxOWM1MGIgMTAwNjQ0Ci0tLS0gYS9saWJ0b21tYXRoL01ha2VmaWxlLmluCi0rKysgYi9saWJ0b21tYXRoL01ha2VmaWxlLmluCi1AQCAtOSw3ICs5LDcgQEAgVlBBVEg9QHNyY2RpckAKLSBzcmNkaXI9QHNyY2RpckAKLSAKLSAjIFNvIHRoYXQgbGlidG9tbWF0aCBjYW4gaW5jbHVkZSBEcm9wYmVhciBoZWFkZXJzIGZvciBvcHRpb25zIGFuZCBtX2J1cm4oKQotLUNGTEFHUyArPSAtSSQoc3JjZGlyKS8uLi9saWJ0b21jcnlwdC9zcmMvaGVhZGVycy8gLUkkKHNyY2RpcikvLi4vCi0rQ0ZMQUdTICs9IC1JLiAtSSQoc3JjZGlyKSAtSS4uL2xpYnRvbWNyeXB0L3NyYy9oZWFkZXJzLyAtSSQoc3JjZGlyKS8uLi9saWJ0b21jcnlwdC9zcmMvaGVhZGVycy8gLUkuLi8gLUkkKHNyY2RpcikvLi4vCi0gCi0gaWZuZGVmIElHTk9SRV9TUEVFRAotIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyXzIwMTYuNzQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXJfMjAxNi43NC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTcwMjA5Ny4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXJfMjAxNi43NC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotcmVxdWlyZSBkcm9wYmVhci5pbmMKLQotU1JDX1VSSSArPSAiZmlsZTovL3N1cHBvcnQtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOWFkMDE3MjczMWUwZjE2NjIzOTM3ODA0NjQzYjViZDgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjcyMGVhNTRlZDAwOWFmODEyNzAxYmNjMjkwYTJhNjAxZDVjMTA3ZDEyOTkzZTVkOTJjMGY1ZjgxZjcxODg5MSIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyXzIwMTcuNzUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXJfMjAxNy43NS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZmIwZDE5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyXzIwMTcuNzUuYmIKQEAgLTAsMCArMSw1IEBACityZXF1aXJlIGRyb3BiZWFyLmluYworCitTUkNfVVJJW21kNXN1bV0gPSAiZTU3ZTliOWQyNTcwNWRjYjA3M2JhMTVjNDE2NDI0ZmQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmNiYzFkY2IxYzk3MDlkMjI2ZGZmNjY5ZTU2MDQxNzJhMThjZjVkYmY5YTIwMTQ3NGQ1NjE4YWU0NDY1MDk4YyIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9leHBhdC9leHBhdC5pbmMKaW5kZXggOWZhMGNhMi4uMGVlNmMyNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXQuaW5jCkBAIC02LDcgKzYsMTEgQEAKIAogU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vZXhwYXQvZXhwYXQtJHtQVn0udGFyLmJ6MiBcCiAgICAgICAgICAgIGZpbGU6Ly9hdXRvdG9vbHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbGlidG9vbC10YWcucGF0Y2ggXAogCSAgIgorCitTUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly9ub19nZXRyYW5kb20ucGF0Y2giCisKIGluaGVyaXQgYXV0b3Rvb2xzIGxpYl9wYWNrYWdlCiAKICMgVGhpcyBwYWNrYWdlIHVzZXMgYW4gYXJjaGl2ZSBmb3JtYXQga25vd24gdG8gaGF2ZSBpc3N1ZSB3aXRoIHNvbWUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9leHBhdC9leHBhdC9saWJ0b29sLXRhZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9leHBhdC9leHBhdC9saWJ0b29sLXRhZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZWY0MTk3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0L2xpYnRvb2wtdGFnLnBhdGNoCkBAIC0wLDAgKzEsMTggQEAKK0FkZCBDQyB0YWcgdG8gYnVpbGQKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitJbmRleDogZXhwYXQtMi4yLjIvTWFrZWZpbGUuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBleHBhdC0yLjIuMi5vcmlnL01ha2VmaWxlLmluCisrKysgZXhwYXQtMi4yLjIvTWFrZWZpbGUuaW4KK0BAIC0xMDksNyArMTA5LDcgQEAgbWtkaXItaW5pdDoKKyAKKyBDQyA9IEBDQ0AKKyBDWFggPSBAQ1hYQAorLUxJQlRPT0wgPSBATElCVE9PTEAKKytMSUJUT09MID0gQExJQlRPT0xAIC0tdGFnIENDCisgCisgSU5DTFVERVMgPSAtSSQoc3JjZGlyKS9saWIgLUkuCisgTERGTEFHUyA9IEBMREZMQUdTQApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0L25vX2dldHJhbmRvbS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9leHBhdC9leHBhdC9ub19nZXRyYW5kb20ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDY0ZjFiZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9leHBhdC9leHBhdC9ub19nZXRyYW5kb20ucGF0Y2gKQEAgLTAsMCArMSwyMyBAQAorVGhlIG5hdGl2ZSB2ZXJzaW9uIG9mIGV4cGF0IG1heSBiZSB1c2VkIG9uIG9sZGVyIHN5c3RlbXMgd2hpY2ggZG9udCBoYXZlIGdsaWJjIDIuMjUKK2FuZCBoZW5jZSBkb24ndCBoYXZlIGdldHJhbmRvbSgpIHRoYW5rcyB0byB1bmluYXRpdmUuIERpc2FibGUgdGhlIGxpYmMgY2FsbCBhbmQKK3VzZSB0aGUgc3lzY2FsbCBpbnN0ZWFkIHRvIGF2b2lkIGEgY29tcGF0aWJpbGl0eSBpc3N1ZSB1bnRpbCB3ZSBoYXZlIDIuMjUgZXZlcnl3aGVyZQord2Ugc3VwcG9ydCB3aXRoIHVuaW5hdGl2ZS4KKworUlAKKzIwMTcvOC8xNAorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKKworSW5kZXg6IGV4cGF0LTIuMi4zL2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGV4cGF0LTIuMi4zLm9yaWcvY29uZmlndXJlLmFjCisrKysgZXhwYXQtMi4yLjMvY29uZmlndXJlLmFjCitAQCAtMTUxLDcgKzE1MSw3IEBAIEFDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbCisgICAjaW5jbHVkZSA8c3RkbGliLmg+ICAvKiBmb3IgTlVMTCAqLworICAgI2luY2x1ZGUgPHN5cy9yYW5kb20uaD4KKyAgIGludCBtYWluKCkgeworLSAgICByZXR1cm4gZ2V0cmFuZG9tKE5VTEwsIDBVLCAwVSk7CisrICAgIHJldHVybiBnZXRyYW5kb21CUkVBS01FKE5VTEwsIDBVLCAwVSk7CisgICB9CisgXSldLCBbCisgICAgIEFDX0RFRklORShbSEFWRV9HRVRSQU5ET01dLCBbMV0sCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXRfMi4yLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXRfMi4yLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmMjFhMTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0XzIuMi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1yZXF1aXJlIGV4cGF0LmluYwotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OWMzZWU1NTljNmY5ZGNlZTEwNDNlYWQxMTIxMzlmNGYiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyZjQ3ODQxYzgyOWZhY2IzNDZlYjZlM2ZhYjUyMTJlMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkOWU1MGZmMmQxOWIzNTM4YmQyMTI3OTAyYTg5OTg3NDc0ZTFhNGRiOGU0M2E2NmE0ZDFhNzEyYWI5YTUwNGZmIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0XzIuMi4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2V4cGF0L2V4cGF0XzIuMi4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiZjg0NTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZXhwYXQvZXhwYXRfMi4yLjMuYmIKQEAgLTAsMCArMSw0IEBACityZXF1aXJlIGV4cGF0LmluYworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWI4NjIwZDk4ZTQ5NzcyZDk1ZmMxZDI5MWMyNmFhNzkiCitTUkNfVVJJW21kNXN1bV0gPSAiZjA1M2FmNjNlZjVmMzliZDliNzhkMDFmYmMyMDMzMzQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjMxODkwZmIwMmY4NWMwMDJhNjc0OTE5MjNmODliZGE1MDI4YTg4MGZkNmMzNzRmNzA3MTkzYWQ4MWFhY2U1ZiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9mdHMvZnRzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Z0cy9mdHMuYmIKaW5kZXggZGU5Mjk3ZS4uMDJmNTQwOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Z0cy9mdHMuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Z0cy9mdHMuYmIKQEAgLTMsMzggKzMsMTggQEAKIAogU1VNTUFSWSA9ICJQT1NJWCBmaWxlIHRyZWUgc3RyZWFtIG9wZXJhdGlvbnMgbGlicmFyeSIKIEhPTUVQQUdFID0gImh0dHBzOi8vc2l0ZXMuZ29vZ2xlLmNvbS9hL2Jvc3RpYy5jb20va2VpdGhib3N0aWMiCi1MSUNFTlNFID0gIkJTRC00LUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2Z0cy5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MzY7bWQ1PTI1MzJlZGRiM2QxYTIxOTA1NzIzYTQwMTFlYzRlMDg1IgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01ZmZlMzU4MTc0YWFkMzgzZjFiNjljZTNiNTNkYTk4MiIKIFNFQ1RJT04gPSAibGlicyIKIAotU1JDX1VSSSA9ICJodHRwczovL3NpdGVzLmdvb2dsZS5jb20vYS9ib3N0aWMuY29tL2tlaXRoYm9zdGljL2ZpbGVzL2Z0cy50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vZnRzLWhlYWRlci1jb3JyZWN0bmVzcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9mdHMtdWNsaWJjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3JlbW92ZV9jZGVmcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9zdGRpbnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZ2NjNS5wYXRjaCBcCitTUkNSRVYgPSAiOTQ0MzMzYWVkOWRjMjRjZmE3NmNjNjRiZmU3MGM3NWQyNTY1Mjc1MyIKK1BWID0gIjEuMitnaXQke1NSQ1BWfSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3ZvaWRsaW51eC9tdXNsLWZ0cyBcCiAiCitTID0gIiR7V09SS0RJUn0vZ2l0IgogCi1TUkNfVVJJW21kNXN1bV0gPSAiMTIwYzE0NzE1NDg1ZWM2Y2VkMTRmNDk0ZDA1OWQyMGEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2RmOWI5YjVhNDVhZWFmMTZmMzNiYjg0ZTY5MmExMGRjNjYyZTIyZWM4YTUxNzQ4Zjk4NzY3ZDY3ZmI2ZjM0MiIKLQotUyA9ICIke1dPUktESVJ9LyR7QlBOfSIKLQotZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKLQotSEFTSFNUWUxFX21pcHNhcmNoID0gInN5c3YiCi1IQVNIU1RZTEUgPSAiZ251IgotCi1WRVIgPSAiMCIKLWRvX2NvbXBpbGUgKCkgewotICAgICR7Q0N9IC1JJHtTfSAtZlBJQyAtc2hhcmVkIC1XbCwtLWhhc2gtc3R5bGU9JHtIQVNIU1RZTEV9IC1vIGxpYmZ0cy5zby4ke1ZFUn0gLVdsLC1zb25hbWUsbGliZnRzLnNvLiR7VkVSfSAke1N9L2Z0cy5jCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgaW5zdGFsbCAtRG03NTUgJHtCfS9saWJmdHMuc28uJHtWRVJ9ICR7RH0ke2xpYmRpcn0vbGliZnRzLnNvLiR7VkVSfQotICAgIGxuIC1zZiBsaWJmdHMuc28uJHtWRVJ9ICR7RH0ke2xpYmRpcn0vbGliZnRzLnNvCi0gICAgaW5zdGFsbCAtRG02NDQgJHtTfS9mdHMuaCAke0R9JHtpbmNsdWRlZGlyfS9mdHMuaAotfQoraW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCiAjCiAjIFdlIHdpbGwgc2tpcCBwYXJzaW5nIGZvciBub24tbXVzbCBzeXN0ZW1zCiAjCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZnRzL2Z0cy9mdHMtaGVhZGVyLWNvcnJlY3RuZXNzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Z0cy9mdHMvZnRzLWhlYWRlci1jb3JyZWN0bmVzcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzczZGRjOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZnRzL2Z0cy9mdHMtaGVhZGVyLWNvcnJlY3RuZXNzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotSW5jbHVkZWQgbmVlZGVkIGhlYWRlcnMgZm9yIGNvbXBpbGluZyB3aXRoIG11c2wKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQotCi0tLS0gZnRzLm9yaWcvZnRzLmgKLSsrKyBmdHMvZnRzLmgKLUBAIC0zOCw2ICszOCwxNyBAQAotICNpZm5kZWYJX0ZUU19IXwotICNkZWZpbmUJX0ZUU19IXwotIAotKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSsjaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0rI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0rCi0rI2luY2x1ZGUgPGRpcmVudC5oPgotKyNpbmNsdWRlIDxlcnJuby5oPgotKyNpbmNsdWRlIDxmY250bC5oPgotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2luY2x1ZGUgPHVuaXN0ZC5oPgotKwotIHR5cGVkZWYgc3RydWN0IHsKLSAJc3RydWN0IF9mdHNlbnQgKmZ0c19jdXI7CS8qIGN1cnJlbnQgbm9kZSAqLwotIAlzdHJ1Y3QgX2Z0c2VudCAqZnRzX2NoaWxkOwkvKiBsaW5rZWQgbGlzdCBvZiBjaGlsZHJlbiAqLwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Z0cy9mdHMvZnRzLXVjbGliYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9mdHMvZnRzL2Z0cy11Y2xpYmMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5NzY1NGIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Z0cy9mdHMvZnRzLXVjbGliYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLUFkZCBtaXNzaW5nIGRlZmluZXMgZm9yIHVjbGliYwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCi0KLS0tLSBmdHMub3JpZy9mdHMuYwotKysrIGZ0cy9mdHMuYwotQEAgLTMxLDYgKzMxLDEwIEBACi0gICogU1VDSCBEQU1BR0UuCi0gICovCi0gCi0rI2RlZmluZQlhbGlnbm9mKFRZUEUpICAgKChpbnQpICYoKHN0cnVjdCB7IGNoYXIgZHVtbXkxOyBUWVBFIGR1bW15MjsgfSAqKSAwKS0+ZHVtbXkyKQotKyNkZWZpbmUJQUxJR05CWVRFUwkoYWxpZ25vZihsb25nIGRvdWJsZSkgLSAxKQotKyNkZWZpbmUJQUxJR04ocCkJKCgodWludHB0cl90KShwKSArIEFMSUdOQllURVMpICYgfkFMSUdOQllURVMpIAotKwotICNpZiBkZWZpbmVkKExJQkNfU0NDUykgJiYgIWRlZmluZWQobGludCkKLSBzdGF0aWMgY2hhciBzY2NzaWRbXSA9ICJAKCMpZnRzLmMJOC42IChCZXJrZWxleSkgOC8xNC85NCI7Ci0gI2VuZGlmIC8qIExJQkNfU0NDUyBhbmQgbm90IGxpbnQgKi8KLUBAIC02NTIsMTAgKzY1NiwxMCBAQAotIAkJaWYgKCFJU1NFVChGVFNfU0VFRE9UKSAmJiBJU0RPVChkcC0+ZF9uYW1lKSkKLSAJCQljb250aW51ZTsKLSAKLS0JCWlmICgocCA9IGZ0c19hbGxvYyhzcCwgZHAtPmRfbmFtZSwgKGludClkcC0+ZF9uYW1sZW4pKSA9PSBOVUxMKQotKwkJaWYgKChwID0gZnRzX2FsbG9jKHNwLCBkcC0+ZF9uYW1lLCAoaW50KWRwLT5kX3JlY2xlbikpID09IE5VTEwpCi0gCQkJZ290byBtZW0xOwotLQkJaWYgKGRwLT5kX25hbWxlbiA+IG1heGxlbikgewotLQkJCWlmIChmdHNfcGFsbG9jKHNwLCAoc2l6ZV90KWRwLT5kX25hbWxlbikpIHsKLSsJCWlmIChkcC0+ZF9yZWNsZW4gPiBtYXhsZW4pIHsKLSsJCQlpZiAoZnRzX3BhbGxvYyhzcCwgKHNpemVfdClkcC0+ZF9yZWNsZW4pKSB7Ci0gCQkJCS8qCi0gCQkJCSAqIE5vIG1vcmUgbWVtb3J5IGZvciBwYXRoIG9yIHN0cnVjdHVyZXMuICBTYXZlCi0gCQkJCSAqIGVycm5vLCBmcmVlIHVwIHRoZSBjdXJyZW50IHN0cnVjdHVyZSBhbmQgdGhlCi1AQCAtNjc1LDcgKzY3OSw3IEBACi0gCQkJbWF4bGVuID0gc3AtPmZ0c19wYXRobGVuIC0gc3AtPmZ0c19jdXItPmZ0c19wYXRobGVuIC0gMTsKLSAJCX0KLSAKLS0JCXAtPmZ0c19wYXRobGVuID0gbGVuICsgZHAtPmRfbmFtbGVuICsgMTsKLSsJCXAtPmZ0c19wYXRobGVuID0gbGVuICsgZHAtPmRfcmVjbGVuICsgMTsKLSAJCXAtPmZ0c19wYXJlbnQgPSBzcC0+ZnRzX2N1cjsKLSAJCXAtPmZ0c19sZXZlbCA9IGxldmVsOwotIAotQEAgLTc4NCw3ICs3ODgsNyBAQAotIAkvKiBJZiB1c2VyIG5lZWRzIHN0YXQgaW5mbywgc3RhdCBidWZmZXIgYWxyZWFkeSBhbGxvY2F0ZWQuICovCi0gCXNicCA9IElTU0VUKEZUU19OT1NUQVQpID8gJnNiIDogcC0+ZnRzX3N0YXRwOwotIAotLSNpZmRlZiBEVF9XSFQKLSsjaWZkZWYgU19JRldIVAotIAkvKgotIAkgKiBXaGl0ZWQtb3V0IGZpbGVzIGRvbid0IHJlYWxseSBleGlzdC4gIEhvd2V2ZXIsIHRoZXJlJ3Mgc3RhdCgyKSBmaWxlCi0gCSAqIG1hc2sgZm9yIHRoZW0sIHNvIHdlIHNldCBpdCBzbyB0aGF0IHByb2dyYW1zIChpLmUuLCBmaW5kKSBkb24ndCBoYXZlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZnRzL2Z0cy9nY2M1LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Z0cy9mdHMvZ2NjNS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjViOTQ4ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZnRzL2Z0cy9nY2M1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTM2OCArMCwwIEBACi1Gb3J3YXJkIHBvcnQgdGhlIHNvdXJjZXMgdG8gYmUgYWJsZSB0byBjb21waWxlIHdpdGggYzk5L2djYzUKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQotCi1JbmRleDogZnRzL2Z0cy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZnRzLm9yaWcvZnRzLmMKLSsrKyBmdHMvZnRzLmMKLUBAIC01MSwxNiArNTEsNiBAQCBzdGF0aWMgY2hhciBzY2NzaWRbXSA9ICJAKCMpZnRzLmMJOC42IChCCi0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAKLS1zdGF0aWMgRlRTRU5UCSpmdHNfYWxsb2MgX19QKEZUUyAqLCBjaGFyICosIGludCk7Ci0tc3RhdGljIEZUU0VOVAkqZnRzX2J1aWxkIF9fUChGVFMgKiwgaW50KTsKLS1zdGF0aWMgdm9pZAkgZnRzX2xmcmVlIF9fUChGVFNFTlQgKik7Ci0tc3RhdGljIHZvaWQJIGZ0c19sb2FkIF9fUChGVFMgKiwgRlRTRU5UICopOwotLXN0YXRpYyBzaXplX3QJIGZ0c19tYXhhcmdsZW4gX19QKGNoYXIgKiBjb25zdCAqKTsKLS1zdGF0aWMgdm9pZAkgZnRzX3BhZGp1c3QgX19QKEZUUyAqLCB2b2lkICopOwotLXN0YXRpYyBpbnQJIGZ0c19wYWxsb2MgX19QKEZUUyAqLCBzaXplX3QpOwotLXN0YXRpYyBGVFNFTlQJKmZ0c19zb3J0IF9fUChGVFMgKiwgRlRTRU5UICosIGludCk7Ci0tc3RhdGljIHVfc2hvcnQJIGZ0c19zdGF0IF9fUChGVFMgKiwgc3RydWN0IGRpcmVudCAqLCBGVFNFTlQgKiwgaW50KTsKLS0KLSAjZGVmaW5lCUlTRE9UKGEpCShhWzBdID09ICcuJyAmJiAoIWFbMV0gfHwgYVsxXSA9PSAnLicgJiYgIWFbMl0pKQotIAotICNkZWZpbmUJSVNTRVQob3B0KQkoc3AtPmZ0c19vcHRpb25zICYgb3B0KQotQEAgLTczLDExOSArNjMsMTYgQEAgc3RhdGljIHVfc2hvcnQJIGZ0c19zdGF0IF9fUChGVFMgKiwgc3RydQotICNkZWZpbmUJQkNISUxECQkxCQkvKiBmdHNfY2hpbGRyZW4gKi8KLSAjZGVmaW5lCUJOQU1FUwkJMgkJLyogZnRzX2NoaWxkcmVuLCBuYW1lcyBvbmx5ICovCi0gI2RlZmluZQlCUkVBRAkJMwkJLyogZnRzX3JlYWQgKi8KLS0KLS1GVFMgKgotLWZ0c19vcGVuKGFyZ3YsIG9wdGlvbnMsIGNvbXBhcikKLS0JY2hhciAqIGNvbnN0ICphcmd2OwotLQlyZWdpc3RlciBpbnQgb3B0aW9uczsKLS0JaW50ICgqY29tcGFyKSgpOwotLXsKLS0JcmVnaXN0ZXIgRlRTICpzcDsKLS0JcmVnaXN0ZXIgRlRTRU5UICpwLCAqcm9vdDsKLS0JcmVnaXN0ZXIgaW50IG5pdGVtczsKLS0JRlRTRU5UICpwYXJlbnQsICp0bXA7Ci0tCWludCBsZW47Ci0tCi0tCS8qIE9wdGlvbnMgY2hlY2suICovCi0tCWlmIChvcHRpb25zICYgfkZUU19PUFRJT05NQVNLKSB7Ci0tCQllcnJubyA9IEVJTlZBTDsKLS0JCXJldHVybiAoTlVMTCk7Ci0tCX0KLS0KLS0JLyogQWxsb2NhdGUvaW5pdGlhbGl6ZSB0aGUgc3RyZWFtICovCi0tCWlmICgoc3AgPSBtYWxsb2MoKHVfaW50KXNpemVvZihGVFMpKSkgPT0gTlVMTCkKLS0JCXJldHVybiAoTlVMTCk7Ci0tCW1lbXNldChzcCwgMCwgc2l6ZW9mKEZUUykpOwotLQlzcC0+ZnRzX2NvbXBhciA9IGNvbXBhcjsKLS0Jc3AtPmZ0c19vcHRpb25zID0gb3B0aW9uczsKLS0KLS0JLyogTG9naWNhbCB3YWxrcyB0dXJuIG9uIE5PQ0hESVI7IHN5bWJvbGljIGxpbmtzIGFyZSB0b28gaGFyZC4gKi8KLS0JaWYgKElTU0VUKEZUU19MT0dJQ0FMKSkKLS0JCVNFVChGVFNfTk9DSERJUik7Ci0tCi0tCS8qCi0tCSAqIFN0YXJ0IG91dCB3aXRoIDFLIG9mIHBhdGggc3BhY2UsIGFuZCBlbm91Z2gsIGluIGFueSBjYXNlLAotLQkgKiB0byBob2xkIHRoZSB1c2VyJ3MgcGF0aHMuCi0tCSAqLwotLQlpZiAoZnRzX3BhbGxvYyhzcCwgTUFYKGZ0c19tYXhhcmdsZW4oYXJndiksIE1BWFBBVEhMRU4pKSkKLS0JCWdvdG8gbWVtMTsKLS0KLS0JLyogQWxsb2NhdGUvaW5pdGlhbGl6ZSByb290J3MgcGFyZW50LiAqLwotLQlpZiAoKHBhcmVudCA9IGZ0c19hbGxvYyhzcCwgIiIsIDApKSA9PSBOVUxMKQotLQkJZ290byBtZW0yOwotLQlwYXJlbnQtPmZ0c19sZXZlbCA9IEZUU19ST09UUEFSRU5UTEVWRUw7Ci0tCi0tCS8qIEFsbG9jYXRlL2luaXRpYWxpemUgcm9vdChzKS4gKi8KLS0JZm9yIChyb290ID0gTlVMTCwgbml0ZW1zID0gMDsgKmFyZ3Y7ICsrYXJndiwgKytuaXRlbXMpIHsKLS0JCS8qIERvbid0IGFsbG93IHplcm8tbGVuZ3RoIHBhdGhzLiAqLwotLQkJaWYgKChsZW4gPSBzdHJsZW4oKmFyZ3YpKSA9PSAwKSB7Ci0tCQkJZXJybm8gPSBFSU5WQUw7Ci0tCQkJZ290byBtZW0zOwotLQkJfQotLQotLQkJcCA9IGZ0c19hbGxvYyhzcCwgKmFyZ3YsIGxlbik7Ci0tCQlwLT5mdHNfbGV2ZWwgPSBGVFNfUk9PVExFVkVMOwotLQkJcC0+ZnRzX3BhcmVudCA9IHBhcmVudDsKLS0JCXAtPmZ0c19hY2NwYXRoID0gcC0+ZnRzX25hbWU7Ci0tCQlwLT5mdHNfaW5mbyA9IGZ0c19zdGF0KHNwLCBOVUxMLCBwLCBJU1NFVChGVFNfQ09NRk9MTE9XKSk7Ci0tCi0tCQkvKiBDb21tYW5kLWxpbmUgIi4iIGFuZCAiLi4iIGFyZSByZWFsIGRpcmVjdG9yaWVzLiAqLwotLQkJaWYgKHAtPmZ0c19pbmZvID09IEZUU19ET1QpCi0tCQkJcC0+ZnRzX2luZm8gPSBGVFNfRDsKLS0KLS0JCS8qCi0tCQkgKiBJZiBjb21wYXJpc29uIHJvdXRpbmUgc3VwcGxpZWQsIHRyYXZlcnNlIGluIHNvcnRlZAotLQkJICogb3JkZXI7IG90aGVyd2lzZSB0cmF2ZXJzZSBpbiB0aGUgb3JkZXIgc3BlY2lmaWVkLgotLQkJICovCi0tCQlpZiAoY29tcGFyKSB7Ci0tCQkJcC0+ZnRzX2xpbmsgPSByb290OwotLQkJCXJvb3QgPSBwOwotLQkJfSBlbHNlIHsKLS0JCQlwLT5mdHNfbGluayA9IE5VTEw7Ci0tCQkJaWYgKHJvb3QgPT0gTlVMTCkKLS0JCQkJdG1wID0gcm9vdCA9IHA7Ci0tCQkJZWxzZSB7Ci0tCQkJCXRtcC0+ZnRzX2xpbmsgPSBwOwotLQkJCQl0bXAgPSBwOwotLQkJCX0KLS0JCX0KLS0JfQotLQlpZiAoY29tcGFyICYmIG5pdGVtcyA+IDEpCi0tCQlyb290ID0gZnRzX3NvcnQoc3AsIHJvb3QsIG5pdGVtcyk7Ci0tCi0tCS8qCi0tCSAqIEFsbG9jYXRlIGEgZHVtbXkgcG9pbnRlciBhbmQgbWFrZSBmdHNfcmVhZCB0aGluayB0aGF0IHdlJ3ZlIGp1c3QKLS0JICogZmluaXNoZWQgdGhlIG5vZGUgYmVmb3JlIHRoZSByb290KHMpOyBzZXQgcC0+ZnRzX2luZm8gdG8gRlRTX0lOSVQKLS0JICogc28gdGhhdCBldmVyeXRoaW5nIGFib3V0IHRoZSAiY3VycmVudCIgbm9kZSBpcyBpZ25vcmVkLgotLQkgKi8KLS0JaWYgKChzcC0+ZnRzX2N1ciA9IGZ0c19hbGxvYyhzcCwgIiIsIDApKSA9PSBOVUxMKQotLQkJZ290byBtZW0zOwotLQlzcC0+ZnRzX2N1ci0+ZnRzX2xpbmsgPSByb290OwotLQlzcC0+ZnRzX2N1ci0+ZnRzX2luZm8gPSBGVFNfSU5JVDsKLS0KLS0JLyoKLS0JICogSWYgdXNpbmcgY2hkaXIoMiksIGdyYWIgYSBmaWxlIGRlc2NyaXB0b3IgcG9pbnRpbmcgdG8gZG90IHRvIGluc3VyZQotLQkgKiB0aGF0IHdlIGNhbiBnZXQgYmFjayBoZXJlOyB0aGlzIGNvdWxkIGJlIGF2b2lkZWQgZm9yIHNvbWUgcGF0aHMsCi0tCSAqIGJ1dCBhbG1vc3QgY2VydGFpbmx5IG5vdCB3b3J0aCB0aGUgZWZmb3J0LiAgU2xhc2hlcywgc3ltYm9saWMgbGlua3MsCi0tCSAqIGFuZCAiLi4iIGFyZSBhbGwgZmFpcmx5IG5hc3R5IHByb2JsZW1zLiAgTm90ZSwgaWYgd2UgY2FuJ3QgZ2V0IHRoZQotLQkgKiBkZXNjcmlwdG9yIHdlIHJ1biBhbnl3YXksIGp1c3QgbW9yZSBzbG93bHkuCi0tCSAqLwotLQlpZiAoIUlTU0VUKEZUU19OT0NIRElSKSAmJiAoc3AtPmZ0c19yZmQgPSBvcGVuKCIuIiwgT19SRE9OTFksIDApKSA8IDApCi0tCQlTRVQoRlRTX05PQ0hESVIpOwotLQotLQlyZXR1cm4gKHNwKTsKLS0KLS1tZW0zOglmdHNfbGZyZWUocm9vdCk7Ci0tCWZyZWUocGFyZW50KTsKLS1tZW0yOglmcmVlKHNwLT5mdHNfcGF0aCk7Ci0tbWVtMToJZnJlZShzcCk7Ci0tCXJldHVybiAoTlVMTCk7Ci0tfQotKy8qCi0rICogU3BlY2lhbCBjYXNlIGEgcm9vdCBvZiAiLyIgc28gdGhhdCBzbGFzaGVzIGFyZW4ndCBhcHBlbmRlZCB3aGljaCB3b3VsZAotKyAqIGNhdXNlIHBhdGhzIHRvIGJlIHdyaXR0ZW4gYXMgIi8vZm9vIi4KLSsgKi8KLSsjZGVmaW5lCU5BUFBFTkQocCkJCQkJCQkJXAotKwkocC0+ZnRzX2xldmVsID09IEZUU19ST09UTEVWRUwgJiYgcC0+ZnRzX3BhdGhsZW4gPT0gMSAmJglcCi0rCSAgICBwLT5mdHNfcGF0aFswXSA9PSAnLycgPyAwIDogcC0+ZnRzX3BhdGhsZW4pCi0gCi0gc3RhdGljIHZvaWQKLS1mdHNfbG9hZChzcCwgcCkKLS0JRlRTICpzcDsKLS0JcmVnaXN0ZXIgRlRTRU5UICpwOwotK2Z0c19sb2FkKEZUUyAqc3AsIHJlZ2lzdGVyIEZUU0VOVCAqcCkKLSB7Ci0gCXJlZ2lzdGVyIGludCBsZW47Ci0gCXJlZ2lzdGVyIGNoYXIgKmNwOwotQEAgLTIwOCwzMzIgKzk1LDIxNCBAQCBmdHNfbG9hZChzcCwgcCkKLSAJc3AtPmZ0c19kZXYgPSBwLT5mdHNfZGV2OwotIH0KLSAKLS1pbnQKLS1mdHNfY2xvc2Uoc3ApCi0tCUZUUyAqc3A7Ci0rc3RhdGljIHZvaWQKLStmdHNfbGZyZWUocmVnaXN0ZXIgRlRTRU5UICpoZWFkKQotIHsKLS0JcmVnaXN0ZXIgRlRTRU5UICpmcmVlcCwgKnA7Ci0tCWludCBzYXZlZF9lcnJubzsKLSsJcmVnaXN0ZXIgRlRTRU5UICpwOwotIAotLQkvKgotLQkgKiBUaGlzIHN0aWxsIHdvcmtzIGlmIHdlIGhhdmVuJ3QgcmVhZCBhbnl0aGluZyAtLSB0aGUgZHVtbXkgc3RydWN0dXJlCi0tCSAqIHBvaW50cyB0byB0aGUgcm9vdCBsaXN0LCBzbyB3ZSBzdGVwIHRocm91Z2ggdG8gdGhlIGVuZCBvZiB0aGUgcm9vdAotLQkgKiBsaXN0IHdoaWNoIGhhcyBhIHZhbGlkIHBhcmVudCBwb2ludGVyLgotLQkgKi8KLS0JaWYgKHNwLT5mdHNfY3VyKSB7Ci0tCQlmb3IgKHAgPSBzcC0+ZnRzX2N1cjsgcC0+ZnRzX2xldmVsID49IEZUU19ST09UTEVWRUw7KSB7Ci0tCQkJZnJlZXAgPSBwOwotLQkJCXAgPSBwLT5mdHNfbGluayA/IHAtPmZ0c19saW5rIDogcC0+ZnRzX3BhcmVudDsKLS0JCQlmcmVlKGZyZWVwKTsKLS0JCX0KLSsJLyogRnJlZSBhIGxpbmtlZCBsaXN0IG9mIHN0cnVjdHVyZXMuICovCi0rCXdoaWxlIChwID0gaGVhZCkgewotKwkJaGVhZCA9IGhlYWQtPmZ0c19saW5rOwotIAkJZnJlZShwKTsKLSAJfQotK30KLSAKLS0JLyogRnJlZSB1cCBjaGlsZCBsaW5rZWQgbGlzdCwgc29ydCBhcnJheSwgcGF0aCBidWZmZXIuICovCi0tCWlmIChzcC0+ZnRzX2NoaWxkKQotLQkJZnRzX2xmcmVlKHNwLT5mdHNfY2hpbGQpOwotLQlpZiAoc3AtPmZ0c19hcnJheSkKLS0JCWZyZWUoc3AtPmZ0c19hcnJheSk7Ci0tCWZyZWUoc3AtPmZ0c19wYXRoKTsKLStzdGF0aWMgc2l6ZV90Ci0rZnRzX21heGFyZ2xlbihjaGFyICogY29uc3QgKmFyZ3YpCi0rewotKwlzaXplX3QgbGVuLCBtYXg7Ci0gCi0tCS8qIFJldHVybiB0byBvcmlnaW5hbCBkaXJlY3RvcnksIHNhdmUgZXJybm8gaWYgbmVjZXNzYXJ5LiAqLwotLQlpZiAoIUlTU0VUKEZUU19OT0NIRElSKSkgewotLQkJc2F2ZWRfZXJybm8gPSBmY2hkaXIoc3AtPmZ0c19yZmQpID8gZXJybm8gOiAwOwotLQkJKHZvaWQpY2xvc2Uoc3AtPmZ0c19yZmQpOwotLQl9Ci0rCWZvciAobWF4ID0gMDsgKmFyZ3Y7ICsrYXJndikKLSsJCWlmICgobGVuID0gc3RybGVuKCphcmd2KSkgPiBtYXgpCi0rCQkJbWF4ID0gbGVuOwotKwlyZXR1cm4gKG1heCk7Ci0rfQotIAotLQkvKiBGcmVlIHVwIHRoZSBzdHJlYW0gcG9pbnRlci4gKi8KLS0JZnJlZShzcCk7Ci0gCi0tCS8qIFNldCBlcnJubyBhbmQgcmV0dXJuLiAqLwotLQlpZiAoIUlTU0VUKEZUU19OT0NIRElSKSAmJiBzYXZlZF9lcnJubykgewotLQkJZXJybm8gPSBzYXZlZF9lcnJubzsKLS0JCXJldHVybiAoLTEpOwotKy8qCi0rICogV2hlbiB0aGUgcGF0aCBpcyByZWFsbG9jJ2QsIGhhdmUgdG8gZml4IGFsbCBvZiB0aGUgcG9pbnRlcnMgaW4gc3RydWN0dXJlcwotKyAqIGFscmVhZHkgcmV0dXJuZWQuCi0rICovCi0rc3RhdGljIHZvaWQKLStmdHNfcGFkanVzdChGVFMgKnNwLCB2b2lkICphZGRyKQotK3sKLSsJRlRTRU5UICpwOwotKwotKyNkZWZpbmUJQURKVVNUKHApIHsJCQkJCQkJXAotKwkocCktPmZ0c19hY2NwYXRoID0JCQkJCQlcCi0rCSAgICAoY2hhciAqKWFkZHIgKyAoKHApLT5mdHNfYWNjcGF0aCAtIChwKS0+ZnRzX3BhdGgpOwkJXAotKwkocCktPmZ0c19wYXRoID0gYWRkcjsJCQkJCQlcCi0rfQotKwkvKiBBZGp1c3QgdGhlIGN1cnJlbnQgc2V0IG9mIGNoaWxkcmVuLiAqLwotKwlmb3IgKHAgPSBzcC0+ZnRzX2NoaWxkOyBwOyBwID0gcC0+ZnRzX2xpbmspCi0rCQlBREpVU1QocCk7Ci0rCi0rCS8qIEFkanVzdCB0aGUgcmVzdCBvZiB0aGUgdHJlZS4gKi8KLSsJZm9yIChwID0gc3AtPmZ0c19jdXI7IHAtPmZ0c19sZXZlbCA+PSBGVFNfUk9PVExFVkVMOykgewotKwkJQURKVVNUKHApOwotKwkJcCA9IHAtPmZ0c19saW5rID8gcC0+ZnRzX2xpbmsgOiBwLT5mdHNfcGFyZW50OwotIAl9Ci0tCXJldHVybiAoMCk7Ci0gfQotIAotIC8qCi0tICogU3BlY2lhbCBjYXNlIGEgcm9vdCBvZiAiLyIgc28gdGhhdCBzbGFzaGVzIGFyZW4ndCBhcHBlbmRlZCB3aGljaCB3b3VsZAotLSAqIGNhdXNlIHBhdGhzIHRvIGJlIHdyaXR0ZW4gYXMgIi8vZm9vIi4KLSsgKiBBbGxvdyBlc3NlbnRpYWxseSB1bmxpbWl0ZWQgcGF0aHM7IGZpbmQsIHJtLCBscyBzaG91bGQgYWxsIHdvcmsgb24gYW55IHRyZWUuCi0rICogTW9zdCBzeXN0ZW1zIHdpbGwgYWxsb3cgY3JlYXRpb24gb2YgcGF0aHMgbXVjaCBsb25nZXIgdGhhbiBNQVhQQVRITEVOLCBldmVuCi0rICogdGhvdWdoIHRoZSBrZXJuZWwgd29uJ3QgcmVzb2x2ZSB0aGVtLiAgQWRkIHRoZSBzaXplIChub3QganVzdCB3aGF0J3MgbmVlZGVkKQotKyAqIHBsdXMgMjU2IGJ5dGVzIHNvIGRvbid0IHJlYWxsb2MgdGhlIHBhdGggMiBieXRlcyBhdCBhIHRpbWUuCi0gICovCi0tI2RlZmluZQlOQVBQRU5EKHApCQkJCQkJCVwKLS0JKHAtPmZ0c19sZXZlbCA9PSBGVFNfUk9PVExFVkVMICYmIHAtPmZ0c19wYXRobGVuID09IDEgJiYJXAotLQkgICAgcC0+ZnRzX3BhdGhbMF0gPT0gJy8nID8gMCA6IHAtPmZ0c19wYXRobGVuKQotK3N0YXRpYyBpbnQKLStmdHNfcGFsbG9jKEZUUyAqc3AsIHNpemVfdCBtb3JlKQotK3sKLSsJc3AtPmZ0c19wYXRobGVuICs9IG1vcmUgKyAyNTY7Ci0rCXNwLT5mdHNfcGF0aCA9IHJlYWxsb2Moc3AtPmZ0c19wYXRoLCAoc2l6ZV90KXNwLT5mdHNfcGF0aGxlbik7Ci0rCXJldHVybiAoc3AtPmZ0c19wYXRoID09IE5VTEwpOwotK30KLSAKLS1GVFNFTlQgKgotLWZ0c19yZWFkKHNwKQotLQlyZWdpc3RlciBGVFMgKnNwOwotK3N0YXRpYyBGVFNFTlQgKgotK2Z0c19hbGxvYyhGVFMgKnNwLCBjaGFyICpuYW1lLCByZWdpc3RlciBpbnQgbmFtZWxlbikKLSB7Ci0tCXJlZ2lzdGVyIEZUU0VOVCAqcCwgKnRtcDsKLS0JcmVnaXN0ZXIgaW50IGluc3RyOwotLQlyZWdpc3RlciBjaGFyICp0OwotLQlpbnQgc2F2ZWRfZXJybm87Ci0rCXJlZ2lzdGVyIEZUU0VOVCAqcDsKLSsJc2l6ZV90IGxlbjsKLSAKLS0JLyogSWYgZmluaXNoZWQgb3IgdW5yZWNvdmVyYWJsZSBlcnJvciwgcmV0dXJuIE5VTEwuICovCi0tCWlmIChzcC0+ZnRzX2N1ciA9PSBOVUxMIHx8IElTU0VUKEZUU19TVE9QKSkKLSsJLyoKLSsJICogVGhlIGZpbGUgbmFtZSBpcyBhIHZhcmlhYmxlIGxlbmd0aCBhcnJheSBhbmQgbm8gc3RhdCBzdHJ1Y3R1cmUgaXMKLSsJICogbmVjZXNzYXJ5IGlmIHRoZSB1c2VyIGhhcyBzZXQgdGhlIG5vc3RhdCBiaXQuICBBbGxvY2F0ZSB0aGUgRlRTRU5UCi0rCSAqIHN0cnVjdHVyZSwgdGhlIGZpbGUgbmFtZSBhbmQgdGhlIHN0YXQgc3RydWN0dXJlIGluIG9uZSBjaHVuaywgYnV0Ci0rCSAqIGJlIGNhcmVmdWwgdGhhdCB0aGUgc3RhdCBzdHJ1Y3R1cmUgaXMgcmVhc29uYWJseSBhbGlnbmVkLiAgU2luY2UgdGhlCi0rCSAqIGZ0c19uYW1lIGZpZWxkIGlzIGRlY2xhcmVkIHRvIGJlIG9mIHNpemUgMSwgdGhlIGZ0c19uYW1lIHBvaW50ZXIgaXMKLSsJICogbmFtZWxlbiArIDIgYmVmb3JlIHRoZSBmaXJzdCBwb3NzaWJsZSBhZGRyZXNzIG9mIHRoZSBzdGF0IHN0cnVjdHVyZS4KLSsJICovCi0rCWxlbiA9IHNpemVvZihGVFNFTlQpICsgbmFtZWxlbjsKLSsJaWYgKCFJU1NFVChGVFNfTk9TVEFUKSkKLSsJCWxlbiArPSBzaXplb2Yoc3RydWN0IHN0YXQpICsgQUxJR05CWVRFUzsKLSsJaWYgKChwID0gbWFsbG9jKGxlbikpID09IE5VTEwpCi0gCQlyZXR1cm4gKE5VTEwpOwotIAotLQkvKiBTZXQgY3VycmVudCBub2RlIHBvaW50ZXIuICovCi0tCXAgPSBzcC0+ZnRzX2N1cjsKLSsJLyogQ29weSB0aGUgbmFtZSBwbHVzIHRoZSB0cmFpbGluZyBOVUxMLiAqLwotKwltZW1tb3ZlKHAtPmZ0c19uYW1lLCBuYW1lLCBuYW1lbGVuICsgMSk7Ci0gCi0tCS8qIFNhdmUgYW5kIHplcm8gb3V0IHVzZXIgaW5zdHJ1Y3Rpb25zLiAqLwotLQlpbnN0ciA9IHAtPmZ0c19pbnN0cjsKLSsJaWYgKCFJU1NFVChGVFNfTk9TVEFUKSkKLSsJCXAtPmZ0c19zdGF0cCA9IChzdHJ1Y3Qgc3RhdCAqKUFMSUdOKHAtPmZ0c19uYW1lICsgbmFtZWxlbiArIDIpOwotKwlwLT5mdHNfbmFtZWxlbiA9IG5hbWVsZW47Ci0rCXAtPmZ0c19wYXRoID0gc3AtPmZ0c19wYXRoOwotKwlwLT5mdHNfZXJybm8gPSAwOwotKwlwLT5mdHNfZmxhZ3MgPSAwOwotIAlwLT5mdHNfaW5zdHIgPSBGVFNfTk9JTlNUUjsKLSsJcC0+ZnRzX251bWJlciA9IDA7Ci0rCXAtPmZ0c19wb2ludGVyID0gTlVMTDsKLSsJcmV0dXJuIChwKTsKLSt9Ci0gCi0tCS8qIEFueSB0eXBlIG9mIGZpbGUgbWF5IGJlIHJlLXZpc2l0ZWQ7IHJlLXN0YXQgYW5kIHJlLXR1cm4uICovCi0tCWlmIChpbnN0ciA9PSBGVFNfQUdBSU4pIHsKLS0JCXAtPmZ0c19pbmZvID0gZnRzX3N0YXQoc3AsIE5VTEwsIHAsIDApOwotLQkJcmV0dXJuIChwKTsKLS0JfQotIAotK3N0YXRpYyB1X3Nob3J0Ci0rZnRzX3N0YXQoRlRTICpzcCwgcmVnaXN0ZXIgRlRTRU5UICpwLCBzdHJ1Y3QgZGlyZW50ICpkcCwgaW50IGZvbGxvdykKLSt7Ci0rCXJlZ2lzdGVyIEZUU0VOVCAqdDsKLSsJcmVnaXN0ZXIgZGV2X3QgZGV2OwotKwlyZWdpc3RlciBpbm9fdCBpbm87Ci0rCXN0cnVjdCBzdGF0ICpzYnAsIHNiOwotKwlpbnQgc2F2ZWRfZXJybm87Ci0rCi0rCS8qIElmIHVzZXIgbmVlZHMgc3RhdCBpbmZvLCBzdGF0IGJ1ZmZlciBhbHJlYWR5IGFsbG9jYXRlZC4gKi8KLSsJc2JwID0gSVNTRVQoRlRTX05PU1RBVCkgPyAmc2IgOiBwLT5mdHNfc3RhdHA7Ci0rCi0rI2lmZGVmIFNfSUZXSFQKLSAJLyoKLS0JICogRm9sbG93aW5nIGEgc3ltbGluayAtLSBTTE5PTkUgdGVzdCBhbGxvd3MgYXBwbGljYXRpb24gdG8gc2VlCi0tCSAqIFNMTk9ORSBhbmQgcmVjb3Zlci4gIElmIGluZGlyZWN0aW5nIHRocm91Z2ggYSBzeW1saW5rLCBoYXZlCi0tCSAqIGtlZXAgYSBwb2ludGVyIHRvIGN1cnJlbnQgbG9jYXRpb24uICBJZiB1bmFibGUgdG8gZ2V0IHRoYXQKLS0JICogcG9pbnRlciwgZm9sbG93IGZhaWxzLgotLQkgKi8KLS0JaWYgKGluc3RyID09IEZUU19GT0xMT1cgJiYKLS0JICAgIChwLT5mdHNfaW5mbyA9PSBGVFNfU0wgfHwgcC0+ZnRzX2luZm8gPT0gRlRTX1NMTk9ORSkpIHsKLS0JCXAtPmZ0c19pbmZvID0gZnRzX3N0YXQoc3AsIE5VTEwsIHAsIDEpOwotLQkJaWYgKHAtPmZ0c19pbmZvID09IEZUU19EICYmICFJU1NFVChGVFNfTk9DSERJUikpCi0tCQkJaWYgKChwLT5mdHNfc3ltZmQgPSBvcGVuKCIuIiwgT19SRE9OTFksIDApKSA8IDApIHsKLS0JCQkJcC0+ZnRzX2Vycm5vID0gZXJybm87Ci0tCQkJCXAtPmZ0c19pbmZvID0gRlRTX0VSUjsKLS0JCQl9IGVsc2UKLS0JCQkJcC0+ZnRzX2ZsYWdzIHw9IEZUU19TWU1GT0xMT1c7Ci0tCQlyZXR1cm4gKHApOwotKwkgKiBXaGl0ZWQtb3V0IGZpbGVzIGRvbid0IHJlYWxseSBleGlzdC4gIEhvd2V2ZXIsIHRoZXJlJ3Mgc3RhdCgyKSBmaWxlCi0rCSAqIG1hc2sgZm9yIHRoZW0sIHNvIHdlIHNldCBpdCBzbyB0aGF0IHByb2dyYW1zIChpLmUuLCBmaW5kKSBkb24ndCBoYXZlCi0rCSAqIHRvIHRlc3QgRlRTX1cgc2VwYXJhdGVseSBmcm9tIG90aGVyIGZpbGUgdHlwZXMuCi0rCSAqLwotKwlpZiAoZHAgIT0gTlVMTCAmJiBkcC0+ZF90eXBlID09IERUX1dIVCkgewotKwkJbWVtc2V0KHNicCwgMCwgc2l6ZW9mKHN0cnVjdCBzdGF0KSk7Ci0rCQlzYnAtPnN0X21vZGUgPSBTX0lGV0hUOwotKwkJcmV0dXJuIChGVFNfVyk7Ci0gCX0KLS0KLS0JLyogRGlyZWN0b3J5IGluIHByZS1vcmRlci4gKi8KLS0JaWYgKHAtPmZ0c19pbmZvID09IEZUU19EKSB7Ci0tCQkvKiBJZiBza2lwcGVkIG9yIGNyb3NzZWQgbW91bnQgcG9pbnQsIGRvIHBvc3Qtb3JkZXIgdmlzaXQuICovCi0tCQlpZiAoaW5zdHIgPT0gRlRTX1NLSVAgfHwKLS0JCSAgICBJU1NFVChGVFNfWERFVikgJiYgcC0+ZnRzX2RldiAhPSBzcC0+ZnRzX2RldikgewotLQkJCWlmIChwLT5mdHNfZmxhZ3MgJiBGVFNfU1lNRk9MTE9XKQotLQkJCQkodm9pZCljbG9zZShwLT5mdHNfc3ltZmQpOwotLQkJCWlmIChzcC0+ZnRzX2NoaWxkKSB7Ci0tCQkJCWZ0c19sZnJlZShzcC0+ZnRzX2NoaWxkKTsKLS0JCQkJc3AtPmZ0c19jaGlsZCA9IE5VTEw7Ci0tCQkJfQotLQkJCXAtPmZ0c19pbmZvID0gRlRTX0RQOwotLQkJCXJldHVybiAocCk7Ci0tCQl9IAotLQotLQkJLyogUmVidWlsZCBpZiBvbmx5IHJlYWQgdGhlIG5hbWVzIGFuZCBub3cgdHJhdmVyc2luZy4gKi8KLS0JCWlmIChzcC0+ZnRzX2NoaWxkICYmIHNwLT5mdHNfb3B0aW9ucyAmIEZUU19OQU1FT05MWSkgewotLQkJCXNwLT5mdHNfb3B0aW9ucyAmPSB+RlRTX05BTUVPTkxZOwotLQkJCWZ0c19sZnJlZShzcC0+ZnRzX2NoaWxkKTsKLS0JCQlzcC0+ZnRzX2NoaWxkID0gTlVMTDsKLS0JCX0KLS0KLS0JCS8qCi0tCQkgKiBDZCB0byB0aGUgc3ViZGlyZWN0b3J5LgotLQkJICoKLS0JCSAqIElmIGhhdmUgYWxyZWFkeSByZWFkIGFuZCBub3cgZmFpbCB0byBjaGRpciwgd2hhY2sgdGhlIGxpc3QKLS0JCSAqIHRvIG1ha2UgdGhlIG5hbWVzIGNvbWUgb3V0IHJpZ2h0LCBhbmQgc2V0IHRoZSBwYXJlbnQgZXJybm8KLS0JCSAqIHNvIHRoZSBhcHBsaWNhdGlvbiB3aWxsIGV2ZW50dWFsbHkgZ2V0IGFuIGVycm9yIGNvbmRpdGlvbi4KLS0JCSAqIFNldCB0aGUgRlRTX0RPTlRDSERJUiBmbGFnIHNvIHRoYXQgd2hlbiB3ZSBsb2dpY2FsbHkgY2hhbmdlCi0tCQkgKiBkaXJlY3RvcmllcyBiYWNrIHRvIHRoZSBwYXJlbnQgd2UgZG9uJ3QgZG8gYSBjaGRpci4KLS0JCSAqCi0tCQkgKiBJZiBoYXZlbid0IHJlYWQgZG8gc28uICBJZiB0aGUgcmVhZCBmYWlscywgZnRzX2J1aWxkIHNldHMKLS0JCSAqIEZUU19TVE9QIG9yIHRoZSBmdHNfaW5mbyBmaWVsZCBvZiB0aGUgbm9kZS4KLS0JCSAqLwotLQkJaWYgKHNwLT5mdHNfY2hpbGQpIHsKLS0JCQlpZiAoQ0hESVIoc3AsIHAtPmZ0c19hY2NwYXRoKSkgewotLQkJCQlwLT5mdHNfZXJybm8gPSBlcnJubzsKLS0JCQkJcC0+ZnRzX2ZsYWdzIHw9IEZUU19ET05UQ0hESVI7Ci0tCQkJCWZvciAocCA9IHNwLT5mdHNfY2hpbGQ7IHA7IHAgPSBwLT5mdHNfbGluaykKLS0JCQkJCXAtPmZ0c19hY2NwYXRoID0KLS0JCQkJCSAgICBwLT5mdHNfcGFyZW50LT5mdHNfYWNjcGF0aDsKLS0JCQl9Ci0tCQl9IGVsc2UgaWYgKChzcC0+ZnRzX2NoaWxkID0gZnRzX2J1aWxkKHNwLCBCUkVBRCkpID09IE5VTEwpIHsKLS0JCQlpZiAoSVNTRVQoRlRTX1NUT1ApKQotLQkJCQlyZXR1cm4gKE5VTEwpOwotLQkJCXJldHVybiAocCk7Ci0rI2VuZGlmCi0rCi0rCS8qCi0rCSAqIElmIGRvaW5nIGEgbG9naWNhbCB3YWxrLCBvciBhcHBsaWNhdGlvbiByZXF1ZXN0ZWQgRlRTX0ZPTExPVywgZG8KLSsJICogYSBzdGF0KDIpLiAgSWYgdGhhdCBmYWlscywgY2hlY2sgZm9yIGEgbm9uLWV4aXN0ZW50IHN5bWxpbmsuICBJZgotKwkgKiBmYWlsLCBzZXQgdGhlIGVycm5vIGZyb20gdGhlIHN0YXQgY2FsbC4KLSsJICovCi0rCWlmIChJU1NFVChGVFNfTE9HSUNBTCkgfHwgZm9sbG93KSB7Ci0rCQlpZiAoc3RhdChwLT5mdHNfYWNjcGF0aCwgc2JwKSkgewotKwkJCXNhdmVkX2Vycm5vID0gZXJybm87Ci0rCQkJaWYgKCFsc3RhdChwLT5mdHNfYWNjcGF0aCwgc2JwKSkgewotKwkJCQllcnJubyA9IDA7Ci0rCQkJCXJldHVybiAoRlRTX1NMTk9ORSk7Ci0rCQkJfQotKwkJCXAtPmZ0c19lcnJubyA9IHNhdmVkX2Vycm5vOwotKwkJCWdvdG8gZXJyOwotIAkJfQotLQkJcCA9IHNwLT5mdHNfY2hpbGQ7Ci0tCQlzcC0+ZnRzX2NoaWxkID0gTlVMTDsKLS0JCWdvdG8gbmFtZTsKLSsJfSBlbHNlIGlmIChsc3RhdChwLT5mdHNfYWNjcGF0aCwgc2JwKSkgewotKwkJcC0+ZnRzX2Vycm5vID0gZXJybm87Ci0rZXJyOgkJbWVtc2V0KHNicCwgMCwgc2l6ZW9mKHN0cnVjdCBzdGF0KSk7Ci0rCQlyZXR1cm4gKEZUU19OUyk7Ci0gCX0KLSAKLS0JLyogTW92ZSB0byB0aGUgbmV4dCBub2RlIG9uIHRoaXMgbGV2ZWwuICovCi0tbmV4dDoJdG1wID0gcDsKLS0JaWYgKHAgPSBwLT5mdHNfbGluaykgewotLQkJZnJlZSh0bXApOwotLQotLQkJLyoKLS0JCSAqIElmIHJlYWNoZWQgdGhlIHRvcCwgcmV0dXJuIHRvIHRoZSBvcmlnaW5hbCBkaXJlY3RvcnksIGFuZAotLQkJICogbG9hZCB0aGUgcGF0aHMgZm9yIHRoZSBuZXh0IHJvb3QuCi0tCQkgKi8KLS0JCWlmIChwLT5mdHNfbGV2ZWwgPT0gRlRTX1JPT1RMRVZFTCkgewotLQkJCWlmICghSVNTRVQoRlRTX05PQ0hESVIpICYmIEZDSERJUihzcCwgc3AtPmZ0c19yZmQpKSB7Ci0tCQkJCVNFVChGVFNfU1RPUCk7Ci0tCQkJCXJldHVybiAoTlVMTCk7Ci0tCQkJfQotLQkJCWZ0c19sb2FkKHNwLCBwKTsKLS0JCQlyZXR1cm4gKHNwLT5mdHNfY3VyID0gcCk7Ci0tCQl9Ci0tCi0rCWlmIChTX0lTRElSKHNicC0+c3RfbW9kZSkpIHsKLSAJCS8qCi0tCQkgKiBVc2VyIG1heSBoYXZlIGNhbGxlZCBmdHNfc2V0IG9uIHRoZSBub2RlLiAgSWYgc2tpcHBlZCwKLS0JCSAqIGlnbm9yZS4gIElmIGZvbGxvd2VkLCBnZXQgYSBmaWxlIGRlc2NyaXB0b3Igc28gd2UgY2FuCi0tCQkgKiBnZXQgYmFjayBpZiBuZWNlc3NhcnkuCi0rCQkgKiBTZXQgdGhlIGRldmljZS9pbm9kZS4gIFVzZWQgdG8gZmluZCBjeWNsZXMgYW5kIGNoZWNrIGZvcgotKwkJICogY3Jvc3NpbmcgbW91bnQgcG9pbnRzLiAgQWxzbyByZW1lbWJlciB0aGUgbGluayBjb3VudCwgdXNlZAotKwkJICogaW4gZnRzX2J1aWxkIHRvIGxpbWl0IHRoZSBudW1iZXIgb2Ygc3RhdCBjYWxscy4gIEl0IGlzCi0rCQkgKiB1bmRlcnN0b29kIHRoYXQgdGhlc2UgZmllbGRzIGFyZSBvbmx5IHJlZmVyZW5jZWQgaWYgZnRzX2luZm8KLSsJCSAqIGlzIHNldCB0byBGVFNfRC4KLSAJCSAqLwotLQkJaWYgKHAtPmZ0c19pbnN0ciA9PSBGVFNfU0tJUCkKLS0JCQlnb3RvIG5leHQ7Ci0tCQlpZiAocC0+ZnRzX2luc3RyID09IEZUU19GT0xMT1cpIHsKLS0JCQlwLT5mdHNfaW5mbyA9IGZ0c19zdGF0KHNwLCBOVUxMLCBwLCAxKTsKLS0JCQlpZiAocC0+ZnRzX2luZm8gPT0gRlRTX0QgJiYgIUlTU0VUKEZUU19OT0NIRElSKSkKLS0JCQkJaWYgKChwLT5mdHNfc3ltZmQgPQotLQkJCQkgICAgb3BlbigiLiIsIE9fUkRPTkxZLCAwKSkgPCAwKSB7Ci0tCQkJCQlwLT5mdHNfZXJybm8gPSBlcnJubzsKLS0JCQkJCXAtPmZ0c19pbmZvID0gRlRTX0VSUjsKLS0JCQkJfSBlbHNlCi0tCQkJCQlwLT5mdHNfZmxhZ3MgfD0gRlRTX1NZTUZPTExPVzsKLS0JCQlwLT5mdHNfaW5zdHIgPSBGVFNfTk9JTlNUUjsKLS0JCX0KLS0KLS1uYW1lOgkJdCA9IHNwLT5mdHNfcGF0aCArIE5BUFBFTkQocC0+ZnRzX3BhcmVudCk7Ci0tCQkqdCsrID0gJy8nOwotLQkJbWVtbW92ZSh0LCBwLT5mdHNfbmFtZSwgcC0+ZnRzX25hbWVsZW4gKyAxKTsKLS0JCXJldHVybiAoc3AtPmZ0c19jdXIgPSBwKTsKLS0JfQotKwkJZGV2ID0gcC0+ZnRzX2RldiA9IHNicC0+c3RfZGV2OwotKwkJaW5vID0gcC0+ZnRzX2lubyA9IHNicC0+c3RfaW5vOwotKwkJcC0+ZnRzX25saW5rID0gc2JwLT5zdF9ubGluazsKLSAKLS0JLyogTW92ZSB1cCB0byB0aGUgcGFyZW50IG5vZGUuICovCi0tCXAgPSB0bXAtPmZ0c19wYXJlbnQ7Ci0tCWZyZWUodG1wKTsKLSsJCWlmIChJU0RPVChwLT5mdHNfbmFtZSkpCi0rCQkJcmV0dXJuIChGVFNfRE9UKTsKLSAKLS0JaWYgKHAtPmZ0c19sZXZlbCA9PSBGVFNfUk9PVFBBUkVOVExFVkVMKSB7Ci0gCQkvKgotLQkJICogRG9uZTsgZnJlZSBldmVyeXRoaW5nIHVwIGFuZCBzZXQgZXJybm8gdG8gMCBzbyB0aGUgdXNlcgotLQkJICogY2FuIGRpc3Rpbmd1aXNoIGJldHdlZW4gZXJyb3IgYW5kIEVPRi4KLSsJCSAqIEN5Y2xlIGRldGVjdGlvbiBpcyBkb25lIGJ5IGJydXRlIGZvcmNlIHdoZW4gdGhlIGRpcmVjdG9yeQotKwkJICogaXMgZmlyc3QgZW5jb3VudGVyZWQuICBJZiB0aGUgdHJlZSBnZXRzIGRlZXAgZW5vdWdoIG9yIHRoZQotKwkJICogbnVtYmVyIG9mIHN5bWJvbGljIGxpbmtzIHRvIGRpcmVjdG9yaWVzIGlzIGhpZ2ggZW5vdWdoLAotKwkJICogc29tZXRoaW5nIGZhc3RlciBtaWdodCBiZSB3b3J0aHdoaWxlLgotIAkJICovCi0tCQlmcmVlKHApOwotLQkJZXJybm8gPSAwOwotLQkJcmV0dXJuIChzcC0+ZnRzX2N1ciA9IE5VTEwpOwotLQl9Ci0tCi0tCS8qIE51bCB0ZXJtaW5hdGUgdGhlIHBhdGhuYW1lLiAqLwotLQlzcC0+ZnRzX3BhdGhbcC0+ZnRzX3BhdGhsZW5dID0gJ1wwJzsKLS0KLS0JLyoKLS0JICogUmV0dXJuIHRvIHRoZSBwYXJlbnQgZGlyZWN0b3J5LiAgSWYgYXQgYSByb290IG5vZGUgb3IgY2FtZSB0aHJvdWdoCi0tCSAqIGEgc3ltbGluaywgZ28gYmFjayB0aHJvdWdoIHRoZSBmaWxlIGRlc2NyaXB0b3IuICBPdGhlcndpc2UsIGNkIHVwCi0tCSAqIG9uZSBkaXJlY3RvcnkuCi0tCSAqLwotLQlpZiAocC0+ZnRzX2xldmVsID09IEZUU19ST09UTEVWRUwpIHsKLS0JCWlmICghSVNTRVQoRlRTX05PQ0hESVIpICYmIEZDSERJUihzcCwgc3AtPmZ0c19yZmQpKSB7Ci0tCQkJU0VUKEZUU19TVE9QKTsKLS0JCQlyZXR1cm4gKE5VTEwpOwotLQkJfQotLQl9IGVsc2UgaWYgKHAtPmZ0c19mbGFncyAmIEZUU19TWU1GT0xMT1cpIHsKLS0JCWlmIChGQ0hESVIoc3AsIHAtPmZ0c19zeW1mZCkpIHsKLS0JCQlzYXZlZF9lcnJubyA9IGVycm5vOwotLQkJCSh2b2lkKWNsb3NlKHAtPmZ0c19zeW1mZCk7Ci0tCQkJZXJybm8gPSBzYXZlZF9lcnJubzsKLS0JCQlTRVQoRlRTX1NUT1ApOwotLQkJCXJldHVybiAoTlVMTCk7Ci0tCQl9Ci0tCQkodm9pZCljbG9zZShwLT5mdHNfc3ltZmQpOwotLQl9IGVsc2UgaWYgKCEocC0+ZnRzX2ZsYWdzICYgRlRTX0RPTlRDSERJUikpIHsKLS0JCWlmIChDSERJUihzcCwgIi4uIikpIHsKLS0JCQlTRVQoRlRTX1NUT1ApOwotLQkJCXJldHVybiAoTlVMTCk7Ci0tCQl9Ci0tCX0KLS0JcC0+ZnRzX2luZm8gPSBwLT5mdHNfZXJybm8gPyBGVFNfRVJSIDogRlRTX0RQOwotLQlyZXR1cm4gKHNwLT5mdHNfY3VyID0gcCk7Ci0tfQotLQotLS8qCi0tICogRnRzX3NldCB0YWtlcyB0aGUgc3RyZWFtIGFzIGFuIGFyZ3VtZW50IGFsdGhvdWdoIGl0J3Mgbm90IHVzZWQgaW4gdGhpcwotLSAqIGltcGxlbWVudGF0aW9uOyBpdCB3b3VsZCBiZSBuZWNlc3NhcnkgaWYgYW55b25lIHdhbnRlZCB0byBhZGQgZ2xvYmFsCi0tICogc2VtYW50aWNzIHRvIGZ0cyB1c2luZyBmdHNfc2V0LiAgQW4gZXJyb3IgcmV0dXJuIGlzIGFsbG93ZWQgZm9yIHNpbWlsYXIKLS0gKiByZWFzb25zLgotLSAqLwotLS8qIEFSR1NVU0VEICovCi0taW50Ci0tZnRzX3NldChzcCwgcCwgaW5zdHIpCi0tCUZUUyAqc3A7Ci0tCUZUU0VOVCAqcDsKLS0JaW50IGluc3RyOwotLXsKLS0JaWYgKGluc3RyICYmIGluc3RyICE9IEZUU19BR0FJTiAmJiBpbnN0ciAhPSBGVFNfRk9MTE9XICYmCi0tCSAgICBpbnN0ciAhPSBGVFNfTk9JTlNUUiAmJiBpbnN0ciAhPSBGVFNfU0tJUCkgewotLQkJZXJybm8gPSBFSU5WQUw7Ci0tCQlyZXR1cm4gKDEpOwotKwkJZm9yICh0ID0gcC0+ZnRzX3BhcmVudDsKLSsJCSAgICB0LT5mdHNfbGV2ZWwgPj0gRlRTX1JPT1RMRVZFTDsgdCA9IHQtPmZ0c19wYXJlbnQpCi0rCQkJaWYgKGlubyA9PSB0LT5mdHNfaW5vICYmIGRldiA9PSB0LT5mdHNfZGV2KSB7Ci0rCQkJCXAtPmZ0c19jeWNsZSA9IHQ7Ci0rCQkJCXJldHVybiAoRlRTX0RDKTsKLSsJCQl9Ci0rCQlyZXR1cm4gKEZUU19EKTsKLSAJfQotLQlwLT5mdHNfaW5zdHIgPSBpbnN0cjsKLS0JcmV0dXJuICgwKTsKLSsJaWYgKFNfSVNMTksoc2JwLT5zdF9tb2RlKSkKLSsJCXJldHVybiAoRlRTX1NMKTsKLSsJaWYgKFNfSVNSRUcoc2JwLT5zdF9tb2RlKSkKLSsJCXJldHVybiAoRlRTX0YpOwotKwlyZXR1cm4gKEZUU19ERUZBVUxUKTsKLSB9Ci0gCi0tRlRTRU5UICoKLS1mdHNfY2hpbGRyZW4oc3AsIGluc3RyKQotLQlyZWdpc3RlciBGVFMgKnNwOwotLQlpbnQgaW5zdHI7Ci0rc3RhdGljIEZUU0VOVCAqCi0rZnRzX3NvcnQoRlRTICpzcCwgRlRTRU5UICpoZWFkLCByZWdpc3RlciBpbnQgbml0ZW1zKQotIHsKLS0JcmVnaXN0ZXIgRlRTRU5UICpwOwotLQlpbnQgZmQ7Ci0tCi0tCWlmIChpbnN0ciAmJiBpbnN0ciAhPSBGVFNfTkFNRU9OTFkpIHsKLS0JCWVycm5vID0gRUlOVkFMOwotLQkJcmV0dXJuIChOVUxMKTsKLS0JfQotLQotLQkvKiBTZXQgY3VycmVudCBub2RlIHBvaW50ZXIuICovCi0tCXAgPSBzcC0+ZnRzX2N1cjsKLS0KLS0JLyoKLS0JICogRXJybm8gc2V0IHRvIDAgc28gdXNlciBjYW4gZGlzdGluZ3Vpc2ggZW1wdHkgZGlyZWN0b3J5IGZyb20KLS0JICogYW4gZXJyb3IuCi0tCSAqLwotLQllcnJubyA9IDA7Ci0tCi0tCS8qIEZhdGFsIGVycm9ycyBzdG9wIGhlcmUuICovCi0tCWlmIChJU1NFVChGVFNfU1RPUCkpCi0tCQlyZXR1cm4gKE5VTEwpOwotLQotLQkvKiBSZXR1cm4gbG9naWNhbCBoaWVyYXJjaHkgb2YgdXNlcidzIGFyZ3VtZW50cy4gKi8KLS0JaWYgKHAtPmZ0c19pbmZvID09IEZUU19JTklUKQotLQkJcmV0dXJuIChwLT5mdHNfbGluayk7Ci0tCi0tCS8qCi0tCSAqIElmIG5vdCBhIGRpcmVjdG9yeSBiZWluZyB2aXNpdGVkIGluIHByZS1vcmRlciwgc3RvcCBoZXJlLiAgQ291bGQKLS0JICogYWxsb3cgRlRTX0ROUiwgYXNzdW1pbmcgdGhlIHVzZXIgaGFzIGZpeGVkIHRoZSBwcm9ibGVtLCBidXQgdGhlCi0tCSAqIHNhbWUgZWZmZWN0IGlzIGF2YWlsYWJsZSB3aXRoIEZUU19BR0FJTi4KLS0JICovCi0tCWlmIChwLT5mdHNfaW5mbyAhPSBGVFNfRCAvKiAmJiBwLT5mdHNfaW5mbyAhPSBGVFNfRE5SICovKQotLQkJcmV0dXJuIChOVUxMKTsKLS0KLS0JLyogRnJlZSB1cCBhbnkgcHJldmlvdXMgY2hpbGQgbGlzdC4gKi8KLS0JaWYgKHNwLT5mdHNfY2hpbGQpCi0tCQlmdHNfbGZyZWUoc3AtPmZ0c19jaGlsZCk7Ci0tCi0tCWlmIChpbnN0ciA9PSBGVFNfTkFNRU9OTFkpIHsKLS0JCXNwLT5mdHNfb3B0aW9ucyB8PSBGVFNfTkFNRU9OTFk7Ci0tCQlpbnN0ciA9IEJOQU1FUzsKLS0JfSBlbHNlIAotLQkJaW5zdHIgPSBCQ0hJTEQ7Ci0rCXJlZ2lzdGVyIEZUU0VOVCAqKmFwLCAqcDsKLSAKLSAJLyoKLS0JICogSWYgdXNpbmcgY2hkaXIgb24gYSByZWxhdGl2ZSBwYXRoIGFuZCBjYWxsZWQgQkVGT1JFIGZ0c19yZWFkIGRvZXMKLS0JICogaXRzIGNoZGlyIHRvIHRoZSByb290IG9mIGEgdHJhdmVyc2FsLCB3ZSBjYW4gbG9zZSAtLSB3ZSBuZWVkIHRvCi0tCSAqIGNoZGlyIGludG8gdGhlIHN1YmRpcmVjdG9yeSwgYW5kIHdlIGRvbid0IGtub3cgd2hlcmUgdGhlIGN1cnJlbnQKLS0JICogZGlyZWN0b3J5IGlzLCBzbyB3ZSBjYW4ndCBnZXQgYmFjayBzbyB0aGF0IHRoZSB1cGNvbWluZyBjaGRpciBieQotLQkgKiBmdHNfcmVhZCB3aWxsIHdvcmsuCi0rCSAqIENvbnN0cnVjdCBhbiBhcnJheSBvZiBwb2ludGVycyB0byB0aGUgc3RydWN0dXJlcyBhbmQgY2FsbCBxc29ydCgzKS4KLSsJICogUmVhc3NlbWJsZSB0aGUgYXJyYXkgaW4gdGhlIG9yZGVyIHJldHVybmVkIGJ5IHFzb3J0LiAgSWYgdW5hYmxlIHRvCi0rCSAqIHNvcnQgZm9yIG1lbW9yeSByZWFzb25zLCByZXR1cm4gdGhlIGRpcmVjdG9yeSBlbnRyaWVzIGluIHRoZWlyCi0rCSAqIGN1cnJlbnQgb3JkZXIuICBBbGxvY2F0ZSBlbm91Z2ggc3BhY2UgZm9yIHRoZSBjdXJyZW50IG5lZWRzIHBsdXMKLSsJICogNDAgc28gZG9uJ3QgcmVhbGxvYyBvbmUgZW50cnkgYXQgYSB0aW1lLgotIAkgKi8KLS0JaWYgKHAtPmZ0c19sZXZlbCAhPSBGVFNfUk9PVExFVkVMIHx8IHAtPmZ0c19hY2NwYXRoWzBdID09ICcvJyB8fAotLQkgICAgSVNTRVQoRlRTX05PQ0hESVIpKQotLQkJcmV0dXJuIChzcC0+ZnRzX2NoaWxkID0gZnRzX2J1aWxkKHNwLCBpbnN0cikpOwotLQotLQlpZiAoKGZkID0gb3BlbigiLiIsIE9fUkRPTkxZLCAwKSkgPCAwKQotLQkJcmV0dXJuIChOVUxMKTsKLS0Jc3AtPmZ0c19jaGlsZCA9IGZ0c19idWlsZChzcCwgaW5zdHIpOwotLQlpZiAoZmNoZGlyKGZkKSkKLS0JCXJldHVybiAoTlVMTCk7Ci0tCSh2b2lkKWNsb3NlKGZkKTsKLS0JcmV0dXJuIChzcC0+ZnRzX2NoaWxkKTsKLSsJaWYgKG5pdGVtcyA+IHNwLT5mdHNfbml0ZW1zKSB7Ci0rCQlzcC0+ZnRzX25pdGVtcyA9IG5pdGVtcyArIDQwOwotKwkJaWYgKChzcC0+ZnRzX2FycmF5ID0gcmVhbGxvYyhzcC0+ZnRzX2FycmF5LAotKwkJICAgIChzaXplX3QpKHNwLT5mdHNfbml0ZW1zICogc2l6ZW9mKEZUU0VOVCAqKSkpKSA9PSBOVUxMKSB7Ci0rCQkJc3AtPmZ0c19uaXRlbXMgPSAwOwotKwkJCXJldHVybiAoaGVhZCk7Ci0rCQl9Ci0rCX0KLSsJZm9yIChhcCA9IHNwLT5mdHNfYXJyYXksIHAgPSBoZWFkOyBwOyBwID0gcC0+ZnRzX2xpbmspCi0rCQkqYXArKyA9IHA7Ci0rCXFzb3J0KCh2b2lkICopc3AtPmZ0c19hcnJheSwgbml0ZW1zLCBzaXplb2YoRlRTRU5UICopLCBzcC0+ZnRzX2NvbXBhcik7Ci0rCWZvciAoaGVhZCA9ICooYXAgPSBzcC0+ZnRzX2FycmF5KTsgLS1uaXRlbXM7ICsrYXApCi0rCQlhcFswXS0+ZnRzX2xpbmsgPSBhcFsxXTsKLSsJYXBbMF0tPmZ0c19saW5rID0gTlVMTDsKLSsJcmV0dXJuIChoZWFkKTsKLSB9Ci0gCi0gLyoKLUBAIC01NTEsOSArMzIwLDcgQEAgZnRzX2NoaWxkcmVuKHNwLCBpbnN0cikKLSAgKiBiZWVuIGZvdW5kLCBjdXR0aW5nIHRoZSBzdGF0IGNhbGxzIGJ5IGFib3V0IDIvMy4KLSAgKi8KLSBzdGF0aWMgRlRTRU5UICoKLS1mdHNfYnVpbGQoc3AsIHR5cGUpCi0tCXJlZ2lzdGVyIEZUUyAqc3A7Ci0tCWludCB0eXBlOwotK2Z0c19idWlsZChyZWdpc3RlciBGVFMgKnNwLCBpbnQgdHlwZSkKLSB7Ci0gCXJlZ2lzdGVyIHN0cnVjdCBkaXJlbnQgKmRwOwotIAlyZWdpc3RlciBGVFNFTlQgKnAsICpoZWFkOwotQEAgLTcxNiwyODMgKzQ4Myw0NzkgQEAgbWVtMToJCQkJc2F2ZWRfZXJybm8gPSBlcnJubzsKLSAJCQkJLS1ubGlua3M7Ci0gCQl9Ci0gCi0tCQkvKiBXZSB3YWxrIGluIGRpcmVjdG9yeSBvcmRlciBzbyAibHMgLWYiIGRvZXNuJ3QgZ2V0IHVwc2V0LiAqLwotLQkJcC0+ZnRzX2xpbmsgPSBOVUxMOwotLQkJaWYgKGhlYWQgPT0gTlVMTCkKLS0JCQloZWFkID0gdGFpbCA9IHA7Ci0tCQllbHNlIHsKLS0JCQl0YWlsLT5mdHNfbGluayA9IHA7Ci0tCQkJdGFpbCA9IHA7Ci0rCQkvKiBXZSB3YWxrIGluIGRpcmVjdG9yeSBvcmRlciBzbyAibHMgLWYiIGRvZXNuJ3QgZ2V0IHVwc2V0LiAqLwotKwkJcC0+ZnRzX2xpbmsgPSBOVUxMOwotKwkJaWYgKGhlYWQgPT0gTlVMTCkKLSsJCQloZWFkID0gdGFpbCA9IHA7Ci0rCQllbHNlIHsKLSsJCQl0YWlsLT5mdHNfbGluayA9IHA7Ci0rCQkJdGFpbCA9IHA7Ci0rCQl9Ci0rCQkrK25pdGVtczsKLSsJfQotKwkodm9pZCljbG9zZWRpcihkaXJwKTsKLSsKLSsJLyoKLSsJICogSWYgaGFkIHRvIHJlYWxsb2MgdGhlIHBhdGgsIGFkanVzdCB0aGUgYWRkcmVzc2VzIGZvciB0aGUgcmVzdAotKwkgKiBvZiB0aGUgdHJlZS4KLSsJICovCi0rCWlmIChhZGphZGRyKQotKwkJZnRzX3BhZGp1c3Qoc3AsIGFkamFkZHIpOwotKwotKwkvKgotKwkgKiBJZiBub3QgY2hhbmdpbmcgZGlyZWN0b3JpZXMsIHJlc2V0IHRoZSBwYXRoIGJhY2sgdG8gb3JpZ2luYWwKLSsJICogc3RhdGUuCi0rCSAqLwotKwlpZiAoSVNTRVQoRlRTX05PQ0hESVIpKSB7Ci0rCQlpZiAoY3AgLSAxID4gc3AtPmZ0c19wYXRoKQotKwkJCS0tY3A7Ci0rCQkqY3AgPSAnXDAnOwotKwl9Ci0rCi0rCS8qCi0rCSAqIElmIGRlc2NlbmRlZCBhZnRlciBjYWxsZWQgZnJvbSBmdHNfY2hpbGRyZW4gb3IgYWZ0ZXIgY2FsbGVkIGZyb20KLSsJICogZnRzX3JlYWQgYW5kIG5vdGhpbmcgZm91bmQsIGdldCBiYWNrLiAgQXQgdGhlIHJvb3QgbGV2ZWwgd2UgdXNlCi0rCSAqIHRoZSBzYXZlZCBmZDsgaWYgb25lIG9mIGZ0c19vcGVuKCkncyBhcmd1bWVudHMgaXMgYSByZWxhdGl2ZSBwYXRoCi0rCSAqIHRvIGFuIGVtcHR5IGRpcmVjdG9yeSwgd2Ugd2luZCB1cCBoZXJlIHdpdGggbm8gb3RoZXIgd2F5IGJhY2suICBJZgotKwkgKiBjYW4ndCBnZXQgYmFjaywgd2UncmUgZG9uZS4KLSsJICovCi0rCWlmIChkZXNjZW5kICYmICh0eXBlID09IEJDSElMRCB8fCAhbml0ZW1zKSAmJgotKwkgICAgKGN1ci0+ZnRzX2xldmVsID09IEZUU19ST09UTEVWRUwgPwotKwkgICAgRkNIRElSKHNwLCBzcC0+ZnRzX3JmZCkgOiBDSERJUihzcCwgIi4uIikpKSB7Ci0rCQljdXItPmZ0c19pbmZvID0gRlRTX0VSUjsKLSsJCVNFVChGVFNfU1RPUCk7Ci0rCQlyZXR1cm4gKE5VTEwpOwotKwl9Ci0rCi0rCS8qIElmIGRpZG4ndCBmaW5kIGFueXRoaW5nLCByZXR1cm4gTlVMTC4gKi8KLSsJaWYgKCFuaXRlbXMpIHsKLSsJCWlmICh0eXBlID09IEJSRUFEKQotKwkJCWN1ci0+ZnRzX2luZm8gPSBGVFNfRFA7Ci0rCQlyZXR1cm4gKE5VTEwpOwotKwl9Ci0rCi0rCS8qIFNvcnQgdGhlIGVudHJpZXMuICovCi0rCWlmIChzcC0+ZnRzX2NvbXBhciAmJiBuaXRlbXMgPiAxKQotKwkJaGVhZCA9IGZ0c19zb3J0KHNwLCBoZWFkLCBuaXRlbXMpOwotKwlyZXR1cm4gKGhlYWQpOwotK30KLSsKLSsKLStGVFMgKgotK2Z0c19vcGVuKGNoYXIgKiBjb25zdCAqYXJndiwgcmVnaXN0ZXIgaW50IG9wdGlvbnMsIGludCAoKmNvbXBhcikoKSkKLSt7Ci0rCXJlZ2lzdGVyIEZUUyAqc3A7Ci0rCXJlZ2lzdGVyIEZUU0VOVCAqcCwgKnJvb3Q7Ci0rCXJlZ2lzdGVyIGludCBuaXRlbXM7Ci0rCUZUU0VOVCAqcGFyZW50LCAqdG1wOwotKwlpbnQgbGVuOwotKwotKwkvKiBPcHRpb25zIGNoZWNrLiAqLwotKwlpZiAob3B0aW9ucyAmIH5GVFNfT1BUSU9OTUFTSykgewotKwkJZXJybm8gPSBFSU5WQUw7Ci0rCQlyZXR1cm4gKE5VTEwpOwotKwl9Ci0rCi0rCS8qIEFsbG9jYXRlL2luaXRpYWxpemUgdGhlIHN0cmVhbSAqLwotKwlpZiAoKHNwID0gbWFsbG9jKCh1X2ludClzaXplb2YoRlRTKSkpID09IE5VTEwpCi0rCQlyZXR1cm4gKE5VTEwpOwotKwltZW1zZXQoc3AsIDAsIHNpemVvZihGVFMpKTsKLSsJc3AtPmZ0c19jb21wYXIgPSBjb21wYXI7Ci0rCXNwLT5mdHNfb3B0aW9ucyA9IG9wdGlvbnM7Ci0rCi0rCS8qIExvZ2ljYWwgd2Fsa3MgdHVybiBvbiBOT0NIRElSOyBzeW1ib2xpYyBsaW5rcyBhcmUgdG9vIGhhcmQuICovCi0rCWlmIChJU1NFVChGVFNfTE9HSUNBTCkpCi0rCQlTRVQoRlRTX05PQ0hESVIpOwotKwotKwkvKgotKwkgKiBTdGFydCBvdXQgd2l0aCAxSyBvZiBwYXRoIHNwYWNlLCBhbmQgZW5vdWdoLCBpbiBhbnkgY2FzZSwKLSsJICogdG8gaG9sZCB0aGUgdXNlcidzIHBhdGhzLgotKwkgKi8KLSsJaWYgKGZ0c19wYWxsb2Moc3AsIE1BWChmdHNfbWF4YXJnbGVuKGFyZ3YpLCBNQVhQQVRITEVOKSkpCi0rCQlnb3RvIG1lbTE7Ci0rCi0rCS8qIEFsbG9jYXRlL2luaXRpYWxpemUgcm9vdCdzIHBhcmVudC4gKi8KLSsJaWYgKChwYXJlbnQgPSBmdHNfYWxsb2Moc3AsICIiLCAwKSkgPT0gTlVMTCkKLSsJCWdvdG8gbWVtMjsKLSsJcGFyZW50LT5mdHNfbGV2ZWwgPSBGVFNfUk9PVFBBUkVOVExFVkVMOwotKwotKwkvKiBBbGxvY2F0ZS9pbml0aWFsaXplIHJvb3QocykuICovCi0rCWZvciAocm9vdCA9IE5VTEwsIG5pdGVtcyA9IDA7ICphcmd2OyArK2FyZ3YsICsrbml0ZW1zKSB7Ci0rCQkvKiBEb24ndCBhbGxvdyB6ZXJvLWxlbmd0aCBwYXRocy4gKi8KLSsJCWlmICgobGVuID0gc3RybGVuKCphcmd2KSkgPT0gMCkgewotKwkJCWVycm5vID0gRUlOVkFMOwotKwkJCWdvdG8gbWVtMzsKLSsJCX0KLSsKLSsJCXAgPSBmdHNfYWxsb2Moc3AsICphcmd2LCBsZW4pOwotKwkJcC0+ZnRzX2xldmVsID0gRlRTX1JPT1RMRVZFTDsKLSsJCXAtPmZ0c19wYXJlbnQgPSBwYXJlbnQ7Ci0rCQlwLT5mdHNfYWNjcGF0aCA9IHAtPmZ0c19uYW1lOwotKwkJcC0+ZnRzX2luZm8gPSBmdHNfc3RhdChzcCwgTlVMTCwgcCwgSVNTRVQoRlRTX0NPTUZPTExPVykpOwotKwotKwkJLyogQ29tbWFuZC1saW5lICIuIiBhbmQgIi4uIiBhcmUgcmVhbCBkaXJlY3Rvcmllcy4gKi8KLSsJCWlmIChwLT5mdHNfaW5mbyA9PSBGVFNfRE9UKQotKwkJCXAtPmZ0c19pbmZvID0gRlRTX0Q7Ci0rCi0rCQkvKgotKwkJICogSWYgY29tcGFyaXNvbiByb3V0aW5lIHN1cHBsaWVkLCB0cmF2ZXJzZSBpbiBzb3J0ZWQKLSsJCSAqIG9yZGVyOyBvdGhlcndpc2UgdHJhdmVyc2UgaW4gdGhlIG9yZGVyIHNwZWNpZmllZC4KLSsJCSAqLwotKwkJaWYgKGNvbXBhcikgewotKwkJCXAtPmZ0c19saW5rID0gcm9vdDsKLSsJCQlyb290ID0gcDsKLSsJCX0gZWxzZSB7Ci0rCQkJcC0+ZnRzX2xpbmsgPSBOVUxMOwotKwkJCWlmIChyb290ID09IE5VTEwpCi0rCQkJCXRtcCA9IHJvb3QgPSBwOwotKwkJCWVsc2UgewotKwkJCQl0bXAtPmZ0c19saW5rID0gcDsKLSsJCQkJdG1wID0gcDsKLSsJCQl9Ci0gCQl9Ci0tCQkrK25pdGVtczsKLSAJfQotLQkodm9pZCljbG9zZWRpcihkaXJwKTsKLS0KLS0JLyoKLS0JICogSWYgaGFkIHRvIHJlYWxsb2MgdGhlIHBhdGgsIGFkanVzdCB0aGUgYWRkcmVzc2VzIGZvciB0aGUgcmVzdAotLQkgKiBvZiB0aGUgdHJlZS4KLS0JICovCi0tCWlmIChhZGphZGRyKQotLQkJZnRzX3BhZGp1c3Qoc3AsIGFkamFkZHIpOwotKwlpZiAoY29tcGFyICYmIG5pdGVtcyA+IDEpCi0rCQlyb290ID0gZnRzX3NvcnQoc3AsIHJvb3QsIG5pdGVtcyk7Ci0gCi0gCS8qCi0tCSAqIElmIG5vdCBjaGFuZ2luZyBkaXJlY3RvcmllcywgcmVzZXQgdGhlIHBhdGggYmFjayB0byBvcmlnaW5hbAotLQkgKiBzdGF0ZS4KLSsJICogQWxsb2NhdGUgYSBkdW1teSBwb2ludGVyIGFuZCBtYWtlIGZ0c19yZWFkIHRoaW5rIHRoYXQgd2UndmUganVzdAotKwkgKiBmaW5pc2hlZCB0aGUgbm9kZSBiZWZvcmUgdGhlIHJvb3Qocyk7IHNldCBwLT5mdHNfaW5mbyB0byBGVFNfSU5JVAotKwkgKiBzbyB0aGF0IGV2ZXJ5dGhpbmcgYWJvdXQgdGhlICJjdXJyZW50IiBub2RlIGlzIGlnbm9yZWQuCi0gCSAqLwotLQlpZiAoSVNTRVQoRlRTX05PQ0hESVIpKSB7Ci0tCQlpZiAoY3AgLSAxID4gc3AtPmZ0c19wYXRoKQotLQkJCS0tY3A7Ci0tCQkqY3AgPSAnXDAnOwotLQl9Ci0rCWlmICgoc3AtPmZ0c19jdXIgPSBmdHNfYWxsb2Moc3AsICIiLCAwKSkgPT0gTlVMTCkKLSsJCWdvdG8gbWVtMzsKLSsJc3AtPmZ0c19jdXItPmZ0c19saW5rID0gcm9vdDsKLSsJc3AtPmZ0c19jdXItPmZ0c19pbmZvID0gRlRTX0lOSVQ7Ci0gCi0gCS8qCi0tCSAqIElmIGRlc2NlbmRlZCBhZnRlciBjYWxsZWQgZnJvbSBmdHNfY2hpbGRyZW4gb3IgYWZ0ZXIgY2FsbGVkIGZyb20KLS0JICogZnRzX3JlYWQgYW5kIG5vdGhpbmcgZm91bmQsIGdldCBiYWNrLiAgQXQgdGhlIHJvb3QgbGV2ZWwgd2UgdXNlCi0tCSAqIHRoZSBzYXZlZCBmZDsgaWYgb25lIG9mIGZ0c19vcGVuKCkncyBhcmd1bWVudHMgaXMgYSByZWxhdGl2ZSBwYXRoCi0tCSAqIHRvIGFuIGVtcHR5IGRpcmVjdG9yeSwgd2Ugd2luZCB1cCBoZXJlIHdpdGggbm8gb3RoZXIgd2F5IGJhY2suICBJZgotLQkgKiBjYW4ndCBnZXQgYmFjaywgd2UncmUgZG9uZS4KLSsJICogSWYgdXNpbmcgY2hkaXIoMiksIGdyYWIgYSBmaWxlIGRlc2NyaXB0b3IgcG9pbnRpbmcgdG8gZG90IHRvIGluc3VyZQotKwkgKiB0aGF0IHdlIGNhbiBnZXQgYmFjayBoZXJlOyB0aGlzIGNvdWxkIGJlIGF2b2lkZWQgZm9yIHNvbWUgcGF0aHMsCi0rCSAqIGJ1dCBhbG1vc3QgY2VydGFpbmx5IG5vdCB3b3J0aCB0aGUgZWZmb3J0LiAgU2xhc2hlcywgc3ltYm9saWMgbGlua3MsCi0rCSAqIGFuZCAiLi4iIGFyZSBhbGwgZmFpcmx5IG5hc3R5IHByb2JsZW1zLiAgTm90ZSwgaWYgd2UgY2FuJ3QgZ2V0IHRoZQotKwkgKiBkZXNjcmlwdG9yIHdlIHJ1biBhbnl3YXksIGp1c3QgbW9yZSBzbG93bHkuCi0gCSAqLwotLQlpZiAoZGVzY2VuZCAmJiAodHlwZSA9PSBCQ0hJTEQgfHwgIW5pdGVtcykgJiYKLS0JICAgIChjdXItPmZ0c19sZXZlbCA9PSBGVFNfUk9PVExFVkVMID8KLS0JICAgIEZDSERJUihzcCwgc3AtPmZ0c19yZmQpIDogQ0hESVIoc3AsICIuLiIpKSkgewotLQkJY3VyLT5mdHNfaW5mbyA9IEZUU19FUlI7Ci0tCQlTRVQoRlRTX1NUT1ApOwotLQkJcmV0dXJuIChOVUxMKTsKLS0JfQotKwlpZiAoIUlTU0VUKEZUU19OT0NIRElSKSAmJiAoc3AtPmZ0c19yZmQgPSBvcGVuKCIuIiwgT19SRE9OTFksIDApKSA8IDApCi0rCQlTRVQoRlRTX05PQ0hESVIpOwotIAotLQkvKiBJZiBkaWRuJ3QgZmluZCBhbnl0aGluZywgcmV0dXJuIE5VTEwuICovCi0tCWlmICghbml0ZW1zKSB7Ci0tCQlpZiAodHlwZSA9PSBCUkVBRCkKLS0JCQljdXItPmZ0c19pbmZvID0gRlRTX0RQOwotLQkJcmV0dXJuIChOVUxMKTsKLS0JfQotKwlyZXR1cm4gKHNwKTsKLSAKLS0JLyogU29ydCB0aGUgZW50cmllcy4gKi8KLS0JaWYgKHNwLT5mdHNfY29tcGFyICYmIG5pdGVtcyA+IDEpCi0tCQloZWFkID0gZnRzX3NvcnQoc3AsIGhlYWQsIG5pdGVtcyk7Ci0tCXJldHVybiAoaGVhZCk7Ci0rbWVtMzoJZnRzX2xmcmVlKHJvb3QpOwotKwlmcmVlKHBhcmVudCk7Ci0rbWVtMjoJZnJlZShzcC0+ZnRzX3BhdGgpOwotK21lbTE6CWZyZWUoc3ApOwotKwlyZXR1cm4gKE5VTEwpOwotIH0KLSAKLS1zdGF0aWMgdV9zaG9ydAotLWZ0c19zdGF0KHNwLCBkcCwgcCwgZm9sbG93KQotLQlGVFMgKnNwOwotLQlyZWdpc3RlciBGVFNFTlQgKnA7Ci0tCXN0cnVjdCBkaXJlbnQgKmRwOwotLQlpbnQgZm9sbG93OwotK0ZUU0VOVCAqCi0rZnRzX3JlYWQocmVnaXN0ZXIgRlRTICpzcCkKLSB7Ci0tCXJlZ2lzdGVyIEZUU0VOVCAqdDsKLS0JcmVnaXN0ZXIgZGV2X3QgZGV2OwotLQlyZWdpc3RlciBpbm9fdCBpbm87Ci0tCXN0cnVjdCBzdGF0ICpzYnAsIHNiOwotKwlyZWdpc3RlciBGVFNFTlQgKnAsICp0bXA7Ci0rCXJlZ2lzdGVyIGludCBpbnN0cjsKLSsJcmVnaXN0ZXIgY2hhciAqdDsKLSAJaW50IHNhdmVkX2Vycm5vOwotIAotLQkvKiBJZiB1c2VyIG5lZWRzIHN0YXQgaW5mbywgc3RhdCBidWZmZXIgYWxyZWFkeSBhbGxvY2F0ZWQuICovCi0tCXNicCA9IElTU0VUKEZUU19OT1NUQVQpID8gJnNiIDogcC0+ZnRzX3N0YXRwOwotKwkvKiBJZiBmaW5pc2hlZCBvciB1bnJlY292ZXJhYmxlIGVycm9yLCByZXR1cm4gTlVMTC4gKi8KLSsJaWYgKHNwLT5mdHNfY3VyID09IE5VTEwgfHwgSVNTRVQoRlRTX1NUT1ApKQotKwkJcmV0dXJuIChOVUxMKTsKLSAKLS0jaWZkZWYgU19JRldIVAotLQkvKgotLQkgKiBXaGl0ZWQtb3V0IGZpbGVzIGRvbid0IHJlYWxseSBleGlzdC4gIEhvd2V2ZXIsIHRoZXJlJ3Mgc3RhdCgyKSBmaWxlCi0tCSAqIG1hc2sgZm9yIHRoZW0sIHNvIHdlIHNldCBpdCBzbyB0aGF0IHByb2dyYW1zIChpLmUuLCBmaW5kKSBkb24ndCBoYXZlCi0tCSAqIHRvIHRlc3QgRlRTX1cgc2VwYXJhdGVseSBmcm9tIG90aGVyIGZpbGUgdHlwZXMuCi0tCSAqLwotLQlpZiAoZHAgIT0gTlVMTCAmJiBkcC0+ZF90eXBlID09IERUX1dIVCkgewotLQkJbWVtc2V0KHNicCwgMCwgc2l6ZW9mKHN0cnVjdCBzdGF0KSk7Ci0tCQlzYnAtPnN0X21vZGUgPSBTX0lGV0hUOwotLQkJcmV0dXJuIChGVFNfVyk7Ci0rCS8qIFNldCBjdXJyZW50IG5vZGUgcG9pbnRlci4gKi8KLSsJcCA9IHNwLT5mdHNfY3VyOwotKwotKwkvKiBTYXZlIGFuZCB6ZXJvIG91dCB1c2VyIGluc3RydWN0aW9ucy4gKi8KLSsJaW5zdHIgPSBwLT5mdHNfaW5zdHI7Ci0rCXAtPmZ0c19pbnN0ciA9IEZUU19OT0lOU1RSOwotKwotKwkvKiBBbnkgdHlwZSBvZiBmaWxlIG1heSBiZSByZS12aXNpdGVkOyByZS1zdGF0IGFuZCByZS10dXJuLiAqLwotKwlpZiAoaW5zdHIgPT0gRlRTX0FHQUlOKSB7Ci0rCQlwLT5mdHNfaW5mbyA9IGZ0c19zdGF0KHNwLCBOVUxMLCBwLCAwKTsKLSsJCXJldHVybiAocCk7Ci0gCX0KLS0jZW5kaWYKLS0JCi0rCi0gCS8qCi0tCSAqIElmIGRvaW5nIGEgbG9naWNhbCB3YWxrLCBvciBhcHBsaWNhdGlvbiByZXF1ZXN0ZWQgRlRTX0ZPTExPVywgZG8KLS0JICogYSBzdGF0KDIpLiAgSWYgdGhhdCBmYWlscywgY2hlY2sgZm9yIGEgbm9uLWV4aXN0ZW50IHN5bWxpbmsuICBJZgotLQkgKiBmYWlsLCBzZXQgdGhlIGVycm5vIGZyb20gdGhlIHN0YXQgY2FsbC4KLSsJICogRm9sbG93aW5nIGEgc3ltbGluayAtLSBTTE5PTkUgdGVzdCBhbGxvd3MgYXBwbGljYXRpb24gdG8gc2VlCi0rCSAqIFNMTk9ORSBhbmQgcmVjb3Zlci4gIElmIGluZGlyZWN0aW5nIHRocm91Z2ggYSBzeW1saW5rLCBoYXZlCi0rCSAqIGtlZXAgYSBwb2ludGVyIHRvIGN1cnJlbnQgbG9jYXRpb24uICBJZiB1bmFibGUgdG8gZ2V0IHRoYXQKLSsJICogcG9pbnRlciwgZm9sbG93IGZhaWxzLgotIAkgKi8KLS0JaWYgKElTU0VUKEZUU19MT0dJQ0FMKSB8fCBmb2xsb3cpIHsKLS0JCWlmIChzdGF0KHAtPmZ0c19hY2NwYXRoLCBzYnApKSB7Ci0tCQkJc2F2ZWRfZXJybm8gPSBlcnJubzsKLS0JCQlpZiAoIWxzdGF0KHAtPmZ0c19hY2NwYXRoLCBzYnApKSB7Ci0tCQkJCWVycm5vID0gMDsKLS0JCQkJcmV0dXJuIChGVFNfU0xOT05FKTsKLS0JCQl9IAotLQkJCXAtPmZ0c19lcnJubyA9IHNhdmVkX2Vycm5vOwotLQkJCWdvdG8gZXJyOwotKwlpZiAoaW5zdHIgPT0gRlRTX0ZPTExPVyAmJgotKwkgICAgKHAtPmZ0c19pbmZvID09IEZUU19TTCB8fCBwLT5mdHNfaW5mbyA9PSBGVFNfU0xOT05FKSkgewotKwkJcC0+ZnRzX2luZm8gPSBmdHNfc3RhdChzcCwgTlVMTCwgcCwgMSk7Ci0rCQlpZiAocC0+ZnRzX2luZm8gPT0gRlRTX0QgJiYgIUlTU0VUKEZUU19OT0NIRElSKSkKLSsJCQlpZiAoKHAtPmZ0c19zeW1mZCA9IG9wZW4oIi4iLCBPX1JET05MWSwgMCkpIDwgMCkgewotKwkJCQlwLT5mdHNfZXJybm8gPSBlcnJubzsKLSsJCQkJcC0+ZnRzX2luZm8gPSBGVFNfRVJSOwotKwkJCX0gZWxzZQotKwkJCQlwLT5mdHNfZmxhZ3MgfD0gRlRTX1NZTUZPTExPVzsKLSsJCXJldHVybiAocCk7Ci0rCX0KLSsKLSsJLyogRGlyZWN0b3J5IGluIHByZS1vcmRlci4gKi8KLSsJaWYgKHAtPmZ0c19pbmZvID09IEZUU19EKSB7Ci0rCQkvKiBJZiBza2lwcGVkIG9yIGNyb3NzZWQgbW91bnQgcG9pbnQsIGRvIHBvc3Qtb3JkZXIgdmlzaXQuICovCi0rCQlpZiAoaW5zdHIgPT0gRlRTX1NLSVAgfHwKLSsJCSAgICBJU1NFVChGVFNfWERFVikgJiYgcC0+ZnRzX2RldiAhPSBzcC0+ZnRzX2RldikgewotKwkJCWlmIChwLT5mdHNfZmxhZ3MgJiBGVFNfU1lNRk9MTE9XKQotKwkJCQkodm9pZCljbG9zZShwLT5mdHNfc3ltZmQpOwotKwkJCWlmIChzcC0+ZnRzX2NoaWxkKSB7Ci0rCQkJCWZ0c19sZnJlZShzcC0+ZnRzX2NoaWxkKTsKLSsJCQkJc3AtPmZ0c19jaGlsZCA9IE5VTEw7Ci0rCQkJfQotKwkJCXAtPmZ0c19pbmZvID0gRlRTX0RQOwotKwkJCXJldHVybiAocCk7Ci0gCQl9Ci0tCX0gZWxzZSBpZiAobHN0YXQocC0+ZnRzX2FjY3BhdGgsIHNicCkpIHsKLS0JCXAtPmZ0c19lcnJubyA9IGVycm5vOwotLWVycjoJCW1lbXNldChzYnAsIDAsIHNpemVvZihzdHJ1Y3Qgc3RhdCkpOwotLQkJcmV0dXJuIChGVFNfTlMpOwotKwotKwkJLyogUmVidWlsZCBpZiBvbmx5IHJlYWQgdGhlIG5hbWVzIGFuZCBub3cgdHJhdmVyc2luZy4gKi8KLSsJCWlmIChzcC0+ZnRzX2NoaWxkICYmIHNwLT5mdHNfb3B0aW9ucyAmIEZUU19OQU1FT05MWSkgewotKwkJCXNwLT5mdHNfb3B0aW9ucyAmPSB+RlRTX05BTUVPTkxZOwotKwkJCWZ0c19sZnJlZShzcC0+ZnRzX2NoaWxkKTsKLSsJCQlzcC0+ZnRzX2NoaWxkID0gTlVMTDsKLSsJCX0KLSsKLSsJCS8qCi0rCQkgKiBDZCB0byB0aGUgc3ViZGlyZWN0b3J5LgotKwkJICoKLSsJCSAqIElmIGhhdmUgYWxyZWFkeSByZWFkIGFuZCBub3cgZmFpbCB0byBjaGRpciwgd2hhY2sgdGhlIGxpc3QKLSsJCSAqIHRvIG1ha2UgdGhlIG5hbWVzIGNvbWUgb3V0IHJpZ2h0LCBhbmQgc2V0IHRoZSBwYXJlbnQgZXJybm8KLSsJCSAqIHNvIHRoZSBhcHBsaWNhdGlvbiB3aWxsIGV2ZW50dWFsbHkgZ2V0IGFuIGVycm9yIGNvbmRpdGlvbi4KLSsJCSAqIFNldCB0aGUgRlRTX0RPTlRDSERJUiBmbGFnIHNvIHRoYXQgd2hlbiB3ZSBsb2dpY2FsbHkgY2hhbmdlCi0rCQkgKiBkaXJlY3RvcmllcyBiYWNrIHRvIHRoZSBwYXJlbnQgd2UgZG9uJ3QgZG8gYSBjaGRpci4KLSsJCSAqCi0rCQkgKiBJZiBoYXZlbid0IHJlYWQgZG8gc28uICBJZiB0aGUgcmVhZCBmYWlscywgZnRzX2J1aWxkIHNldHMKLSsJCSAqIEZUU19TVE9QIG9yIHRoZSBmdHNfaW5mbyBmaWVsZCBvZiB0aGUgbm9kZS4KLSsJCSAqLwotKwkJaWYgKHNwLT5mdHNfY2hpbGQpIHsKLSsJCQlpZiAoQ0hESVIoc3AsIHAtPmZ0c19hY2NwYXRoKSkgewotKwkJCQlwLT5mdHNfZXJybm8gPSBlcnJubzsKLSsJCQkJcC0+ZnRzX2ZsYWdzIHw9IEZUU19ET05UQ0hESVI7Ci0rCQkJCWZvciAocCA9IHNwLT5mdHNfY2hpbGQ7IHA7IHAgPSBwLT5mdHNfbGluaykKLSsJCQkJCXAtPmZ0c19hY2NwYXRoID0KLSsJCQkJCSAgICBwLT5mdHNfcGFyZW50LT5mdHNfYWNjcGF0aDsKLSsJCQl9Ci0rCQl9IGVsc2UgaWYgKChzcC0+ZnRzX2NoaWxkID0gZnRzX2J1aWxkKHNwLCBCUkVBRCkpID09IE5VTEwpIHsKLSsJCQlpZiAoSVNTRVQoRlRTX1NUT1ApKQotKwkJCQlyZXR1cm4gKE5VTEwpOwotKwkJCXJldHVybiAocCk7Ci0rCQl9Ci0rCQlwID0gc3AtPmZ0c19jaGlsZDsKLSsJCXNwLT5mdHNfY2hpbGQgPSBOVUxMOwotKwkJZ290byBuYW1lOwotIAl9Ci0gCi0tCWlmIChTX0lTRElSKHNicC0+c3RfbW9kZSkpIHsKLSsJLyogTW92ZSB0byB0aGUgbmV4dCBub2RlIG9uIHRoaXMgbGV2ZWwuICovCi0rbmV4dDoJdG1wID0gcDsKLSsJaWYgKHAgPSBwLT5mdHNfbGluaykgewotKwkJZnJlZSh0bXApOwotKwotIAkJLyoKLS0JCSAqIFNldCB0aGUgZGV2aWNlL2lub2RlLiAgVXNlZCB0byBmaW5kIGN5Y2xlcyBhbmQgY2hlY2sgZm9yCi0tCQkgKiBjcm9zc2luZyBtb3VudCBwb2ludHMuICBBbHNvIHJlbWVtYmVyIHRoZSBsaW5rIGNvdW50LCB1c2VkCi0tCQkgKiBpbiBmdHNfYnVpbGQgdG8gbGltaXQgdGhlIG51bWJlciBvZiBzdGF0IGNhbGxzLiAgSXQgaXMKLS0JCSAqIHVuZGVyc3Rvb2QgdGhhdCB0aGVzZSBmaWVsZHMgYXJlIG9ubHkgcmVmZXJlbmNlZCBpZiBmdHNfaW5mbwotLQkJICogaXMgc2V0IHRvIEZUU19ELgotKwkJICogSWYgcmVhY2hlZCB0aGUgdG9wLCByZXR1cm4gdG8gdGhlIG9yaWdpbmFsIGRpcmVjdG9yeSwgYW5kCi0rCQkgKiBsb2FkIHRoZSBwYXRocyBmb3IgdGhlIG5leHQgcm9vdC4KLSAJCSAqLwotLQkJZGV2ID0gcC0+ZnRzX2RldiA9IHNicC0+c3RfZGV2OwotLQkJaW5vID0gcC0+ZnRzX2lubyA9IHNicC0+c3RfaW5vOwotLQkJcC0+ZnRzX25saW5rID0gc2JwLT5zdF9ubGluazsKLSsJCWlmIChwLT5mdHNfbGV2ZWwgPT0gRlRTX1JPT1RMRVZFTCkgewotKwkJCWlmICghSVNTRVQoRlRTX05PQ0hESVIpICYmIEZDSERJUihzcCwgc3AtPmZ0c19yZmQpKSB7Ci0rCQkJCVNFVChGVFNfU1RPUCk7Ci0rCQkJCXJldHVybiAoTlVMTCk7Ci0rCQkJfQotKwkJCWZ0c19sb2FkKHNwLCBwKTsKLSsJCQlyZXR1cm4gKHNwLT5mdHNfY3VyID0gcCk7Ci0rCQl9Ci0rCi0rCQkvKgotKwkJICogVXNlciBtYXkgaGF2ZSBjYWxsZWQgZnRzX3NldCBvbiB0aGUgbm9kZS4gIElmIHNraXBwZWQsCi0rCQkgKiBpZ25vcmUuICBJZiBmb2xsb3dlZCwgZ2V0IGEgZmlsZSBkZXNjcmlwdG9yIHNvIHdlIGNhbgotKwkJICogZ2V0IGJhY2sgaWYgbmVjZXNzYXJ5LgotKwkJICovCi0rCQlpZiAocC0+ZnRzX2luc3RyID09IEZUU19TS0lQKQotKwkJCWdvdG8gbmV4dDsKLSsJCWlmIChwLT5mdHNfaW5zdHIgPT0gRlRTX0ZPTExPVykgewotKwkJCXAtPmZ0c19pbmZvID0gZnRzX3N0YXQoc3AsIE5VTEwsIHAsIDEpOwotKwkJCWlmIChwLT5mdHNfaW5mbyA9PSBGVFNfRCAmJiAhSVNTRVQoRlRTX05PQ0hESVIpKQotKwkJCQlpZiAoKHAtPmZ0c19zeW1mZCA9Ci0rCQkJCSAgICBvcGVuKCIuIiwgT19SRE9OTFksIDApKSA8IDApIHsKLSsJCQkJCXAtPmZ0c19lcnJubyA9IGVycm5vOwotKwkJCQkJcC0+ZnRzX2luZm8gPSBGVFNfRVJSOwotKwkJCQl9IGVsc2UKLSsJCQkJCXAtPmZ0c19mbGFncyB8PSBGVFNfU1lNRk9MTE9XOwotKwkJCXAtPmZ0c19pbnN0ciA9IEZUU19OT0lOU1RSOwotKwkJfQotIAotLQkJaWYgKElTRE9UKHAtPmZ0c19uYW1lKSkKLS0JCQlyZXR1cm4gKEZUU19ET1QpOwotK25hbWU6CQl0ID0gc3AtPmZ0c19wYXRoICsgTkFQUEVORChwLT5mdHNfcGFyZW50KTsKLSsJCSp0KysgPSAnLyc7Ci0rCQltZW1tb3ZlKHQsIHAtPmZ0c19uYW1lLCBwLT5mdHNfbmFtZWxlbiArIDEpOwotKwkJcmV0dXJuIChzcC0+ZnRzX2N1ciA9IHApOwotKwl9Ci0gCi0rCS8qIE1vdmUgdXAgdG8gdGhlIHBhcmVudCBub2RlLiAqLwotKwlwID0gdG1wLT5mdHNfcGFyZW50OwotKwlmcmVlKHRtcCk7Ci0rCi0rCWlmIChwLT5mdHNfbGV2ZWwgPT0gRlRTX1JPT1RQQVJFTlRMRVZFTCkgewotIAkJLyoKLS0JCSAqIEN5Y2xlIGRldGVjdGlvbiBpcyBkb25lIGJ5IGJydXRlIGZvcmNlIHdoZW4gdGhlIGRpcmVjdG9yeQotLQkJICogaXMgZmlyc3QgZW5jb3VudGVyZWQuICBJZiB0aGUgdHJlZSBnZXRzIGRlZXAgZW5vdWdoIG9yIHRoZQotLQkJICogbnVtYmVyIG9mIHN5bWJvbGljIGxpbmtzIHRvIGRpcmVjdG9yaWVzIGlzIGhpZ2ggZW5vdWdoLAotLQkJICogc29tZXRoaW5nIGZhc3RlciBtaWdodCBiZSB3b3J0aHdoaWxlLgotKwkJICogRG9uZTsgZnJlZSBldmVyeXRoaW5nIHVwIGFuZCBzZXQgZXJybm8gdG8gMCBzbyB0aGUgdXNlcgotKwkJICogY2FuIGRpc3Rpbmd1aXNoIGJldHdlZW4gZXJyb3IgYW5kIEVPRi4KLSAJCSAqLwotLQkJZm9yICh0ID0gcC0+ZnRzX3BhcmVudDsKLS0JCSAgICB0LT5mdHNfbGV2ZWwgPj0gRlRTX1JPT1RMRVZFTDsgdCA9IHQtPmZ0c19wYXJlbnQpCi0tCQkJaWYgKGlubyA9PSB0LT5mdHNfaW5vICYmIGRldiA9PSB0LT5mdHNfZGV2KSB7Ci0tCQkJCXAtPmZ0c19jeWNsZSA9IHQ7Ci0tCQkJCXJldHVybiAoRlRTX0RDKTsKLS0JCQl9Ci0tCQlyZXR1cm4gKEZUU19EKTsKLSsJCWZyZWUocCk7Ci0rCQllcnJubyA9IDA7Ci0rCQlyZXR1cm4gKHNwLT5mdHNfY3VyID0gTlVMTCk7Ci0gCX0KLS0JaWYgKFNfSVNMTksoc2JwLT5zdF9tb2RlKSkKLS0JCXJldHVybiAoRlRTX1NMKTsKLS0JaWYgKFNfSVNSRUcoc2JwLT5zdF9tb2RlKSkKLS0JCXJldHVybiAoRlRTX0YpOwotLQlyZXR1cm4gKEZUU19ERUZBVUxUKTsKLS19Ci0gCi0tc3RhdGljIEZUU0VOVCAqCi0tZnRzX3NvcnQoc3AsIGhlYWQsIG5pdGVtcykKLS0JRlRTICpzcDsKLS0JRlRTRU5UICpoZWFkOwotLQlyZWdpc3RlciBpbnQgbml0ZW1zOwotLXsKLS0JcmVnaXN0ZXIgRlRTRU5UICoqYXAsICpwOwotKwkvKiBOdWwgdGVybWluYXRlIHRoZSBwYXRobmFtZS4gKi8KLSsJc3AtPmZ0c19wYXRoW3AtPmZ0c19wYXRobGVuXSA9ICdcMCc7Ci0gCi0gCS8qCi0tCSAqIENvbnN0cnVjdCBhbiBhcnJheSBvZiBwb2ludGVycyB0byB0aGUgc3RydWN0dXJlcyBhbmQgY2FsbCBxc29ydCgzKS4KLS0JICogUmVhc3NlbWJsZSB0aGUgYXJyYXkgaW4gdGhlIG9yZGVyIHJldHVybmVkIGJ5IHFzb3J0LiAgSWYgdW5hYmxlIHRvCi0tCSAqIHNvcnQgZm9yIG1lbW9yeSByZWFzb25zLCByZXR1cm4gdGhlIGRpcmVjdG9yeSBlbnRyaWVzIGluIHRoZWlyCi0tCSAqIGN1cnJlbnQgb3JkZXIuICBBbGxvY2F0ZSBlbm91Z2ggc3BhY2UgZm9yIHRoZSBjdXJyZW50IG5lZWRzIHBsdXMKLS0JICogNDAgc28gZG9uJ3QgcmVhbGxvYyBvbmUgZW50cnkgYXQgYSB0aW1lLgotKwkgKiBSZXR1cm4gdG8gdGhlIHBhcmVudCBkaXJlY3RvcnkuICBJZiBhdCBhIHJvb3Qgbm9kZSBvciBjYW1lIHRocm91Z2gKLSsJICogYSBzeW1saW5rLCBnbyBiYWNrIHRocm91Z2ggdGhlIGZpbGUgZGVzY3JpcHRvci4gIE90aGVyd2lzZSwgY2QgdXAKLSsJICogb25lIGRpcmVjdG9yeS4KLSAJICovCi0tCWlmIChuaXRlbXMgPiBzcC0+ZnRzX25pdGVtcykgewotLQkJc3AtPmZ0c19uaXRlbXMgPSBuaXRlbXMgKyA0MDsKLS0JCWlmICgoc3AtPmZ0c19hcnJheSA9IHJlYWxsb2Moc3AtPmZ0c19hcnJheSwKLS0JCSAgICAoc2l6ZV90KShzcC0+ZnRzX25pdGVtcyAqIHNpemVvZihGVFNFTlQgKikpKSkgPT0gTlVMTCkgewotLQkJCXNwLT5mdHNfbml0ZW1zID0gMDsKLS0JCQlyZXR1cm4gKGhlYWQpOwotKwlpZiAocC0+ZnRzX2xldmVsID09IEZUU19ST09UTEVWRUwpIHsKLSsJCWlmICghSVNTRVQoRlRTX05PQ0hESVIpICYmIEZDSERJUihzcCwgc3AtPmZ0c19yZmQpKSB7Ci0rCQkJU0VUKEZUU19TVE9QKTsKLSsJCQlyZXR1cm4gKE5VTEwpOwotKwkJfQotKwl9IGVsc2UgaWYgKHAtPmZ0c19mbGFncyAmIEZUU19TWU1GT0xMT1cpIHsKLSsJCWlmIChGQ0hESVIoc3AsIHAtPmZ0c19zeW1mZCkpIHsKLSsJCQlzYXZlZF9lcnJubyA9IGVycm5vOwotKwkJCSh2b2lkKWNsb3NlKHAtPmZ0c19zeW1mZCk7Ci0rCQkJZXJybm8gPSBzYXZlZF9lcnJubzsKLSsJCQlTRVQoRlRTX1NUT1ApOwotKwkJCXJldHVybiAoTlVMTCk7Ci0rCQl9Ci0rCQkodm9pZCljbG9zZShwLT5mdHNfc3ltZmQpOwotKwl9IGVsc2UgaWYgKCEocC0+ZnRzX2ZsYWdzICYgRlRTX0RPTlRDSERJUikpIHsKLSsJCWlmIChDSERJUihzcCwgIi4uIikpIHsKLSsJCQlTRVQoRlRTX1NUT1ApOwotKwkJCXJldHVybiAoTlVMTCk7Ci0gCQl9Ci0gCX0KLS0JZm9yIChhcCA9IHNwLT5mdHNfYXJyYXksIHAgPSBoZWFkOyBwOyBwID0gcC0+ZnRzX2xpbmspCi0tCQkqYXArKyA9IHA7Ci0tCXFzb3J0KCh2b2lkICopc3AtPmZ0c19hcnJheSwgbml0ZW1zLCBzaXplb2YoRlRTRU5UICopLCBzcC0+ZnRzX2NvbXBhcik7Ci0tCWZvciAoaGVhZCA9ICooYXAgPSBzcC0+ZnRzX2FycmF5KTsgLS1uaXRlbXM7ICsrYXApCi0tCQlhcFswXS0+ZnRzX2xpbmsgPSBhcFsxXTsKLS0JYXBbMF0tPmZ0c19saW5rID0gTlVMTDsKLS0JcmV0dXJuIChoZWFkKTsKLSsJcC0+ZnRzX2luZm8gPSBwLT5mdHNfZXJybm8gPyBGVFNfRVJSIDogRlRTX0RQOwotKwlyZXR1cm4gKHNwLT5mdHNfY3VyID0gcCk7Ci0gfQotIAotLXN0YXRpYyBGVFNFTlQgKgotLWZ0c19hbGxvYyhzcCwgbmFtZSwgbmFtZWxlbikKLS0JRlRTICpzcDsKLS0JY2hhciAqbmFtZTsKLS0JcmVnaXN0ZXIgaW50IG5hbWVsZW47Ci0rLyoKLSsgKiBGdHNfc2V0IHRha2VzIHRoZSBzdHJlYW0gYXMgYW4gYXJndW1lbnQgYWx0aG91Z2ggaXQncyBub3QgdXNlZCBpbiB0aGlzCi0rICogaW1wbGVtZW50YXRpb247IGl0IHdvdWxkIGJlIG5lY2Vzc2FyeSBpZiBhbnlvbmUgd2FudGVkIHRvIGFkZCBnbG9iYWwKLSsgKiBzZW1hbnRpY3MgdG8gZnRzIHVzaW5nIGZ0c19zZXQuICBBbiBlcnJvciByZXR1cm4gaXMgYWxsb3dlZCBmb3Igc2ltaWxhcgotKyAqIHJlYXNvbnMuCi0rICovCi0rLyogQVJHU1VTRUQgKi8KLStpbnQKLStmdHNfc2V0KEZUUyAqc3AsIEZUU0VOVCAqcCwgaW50IGluc3RyKQotK3sKLSsJaWYgKGluc3RyICYmIGluc3RyICE9IEZUU19BR0FJTiAmJiBpbnN0ciAhPSBGVFNfRk9MTE9XICYmCi0rCSAgICBpbnN0ciAhPSBGVFNfTk9JTlNUUiAmJiBpbnN0ciAhPSBGVFNfU0tJUCkgewotKwkJZXJybm8gPSBFSU5WQUw7Ci0rCQlyZXR1cm4gKDEpOwotKwl9Ci0rCXAtPmZ0c19pbnN0ciA9IGluc3RyOwotKwlyZXR1cm4gKDApOwotK30KLSsKLStGVFNFTlQgKgotK2Z0c19jaGlsZHJlbihyZWdpc3RlciBGVFMgKnNwLCBpbnQgaW5zdHIpCi0gewotIAlyZWdpc3RlciBGVFNFTlQgKnA7Ci0tCXNpemVfdCBsZW47Ci0rCWludCBmZDsKLSsKLSsJaWYgKGluc3RyICYmIGluc3RyICE9IEZUU19OQU1FT05MWSkgewotKwkJZXJybm8gPSBFSU5WQUw7Ci0rCQlyZXR1cm4gKE5VTEwpOwotKwl9Ci0rCi0rCS8qIFNldCBjdXJyZW50IG5vZGUgcG9pbnRlci4gKi8KLSsJcCA9IHNwLT5mdHNfY3VyOwotIAotIAkvKgotLQkgKiBUaGUgZmlsZSBuYW1lIGlzIGEgdmFyaWFibGUgbGVuZ3RoIGFycmF5IGFuZCBubyBzdGF0IHN0cnVjdHVyZSBpcwotLQkgKiBuZWNlc3NhcnkgaWYgdGhlIHVzZXIgaGFzIHNldCB0aGUgbm9zdGF0IGJpdC4gIEFsbG9jYXRlIHRoZSBGVFNFTlQKLS0JICogc3RydWN0dXJlLCB0aGUgZmlsZSBuYW1lIGFuZCB0aGUgc3RhdCBzdHJ1Y3R1cmUgaW4gb25lIGNodW5rLCBidXQKLS0JICogYmUgY2FyZWZ1bCB0aGF0IHRoZSBzdGF0IHN0cnVjdHVyZSBpcyByZWFzb25hYmx5IGFsaWduZWQuICBTaW5jZSB0aGUKLS0JICogZnRzX25hbWUgZmllbGQgaXMgZGVjbGFyZWQgdG8gYmUgb2Ygc2l6ZSAxLCB0aGUgZnRzX25hbWUgcG9pbnRlciBpcwotLQkgKiBuYW1lbGVuICsgMiBiZWZvcmUgdGhlIGZpcnN0IHBvc3NpYmxlIGFkZHJlc3Mgb2YgdGhlIHN0YXQgc3RydWN0dXJlLgotKwkgKiBFcnJubyBzZXQgdG8gMCBzbyB1c2VyIGNhbiBkaXN0aW5ndWlzaCBlbXB0eSBkaXJlY3RvcnkgZnJvbQotKwkgKiBhbiBlcnJvci4KLSAJICovCi0tCWxlbiA9IHNpemVvZihGVFNFTlQpICsgbmFtZWxlbjsKLS0JaWYgKCFJU1NFVChGVFNfTk9TVEFUKSkKLS0JCWxlbiArPSBzaXplb2Yoc3RydWN0IHN0YXQpICsgQUxJR05CWVRFUzsKLS0JaWYgKChwID0gbWFsbG9jKGxlbikpID09IE5VTEwpCi0rCWVycm5vID0gMDsKLSsKLSsJLyogRmF0YWwgZXJyb3JzIHN0b3AgaGVyZS4gKi8KLSsJaWYgKElTU0VUKEZUU19TVE9QKSkKLSAJCXJldHVybiAoTlVMTCk7Ci0gCi0tCS8qIENvcHkgdGhlIG5hbWUgcGx1cyB0aGUgdHJhaWxpbmcgTlVMTC4gKi8KLS0JbWVtbW92ZShwLT5mdHNfbmFtZSwgbmFtZSwgbmFtZWxlbiArIDEpOwotKwkvKiBSZXR1cm4gbG9naWNhbCBoaWVyYXJjaHkgb2YgdXNlcidzIGFyZ3VtZW50cy4gKi8KLSsJaWYgKHAtPmZ0c19pbmZvID09IEZUU19JTklUKQotKwkJcmV0dXJuIChwLT5mdHNfbGluayk7Ci0gCi0tCWlmICghSVNTRVQoRlRTX05PU1RBVCkpCi0tCQlwLT5mdHNfc3RhdHAgPSAoc3RydWN0IHN0YXQgKilBTElHTihwLT5mdHNfbmFtZSArIG5hbWVsZW4gKyAyKTsKLS0JcC0+ZnRzX25hbWVsZW4gPSBuYW1lbGVuOwotLQlwLT5mdHNfcGF0aCA9IHNwLT5mdHNfcGF0aDsKLS0JcC0+ZnRzX2Vycm5vID0gMDsKLS0JcC0+ZnRzX2ZsYWdzID0gMDsKLS0JcC0+ZnRzX2luc3RyID0gRlRTX05PSU5TVFI7Ci0tCXAtPmZ0c19udW1iZXIgPSAwOwotLQlwLT5mdHNfcG9pbnRlciA9IE5VTEw7Ci0tCXJldHVybiAocCk7Ci0rCS8qCi0rCSAqIElmIG5vdCBhIGRpcmVjdG9yeSBiZWluZyB2aXNpdGVkIGluIHByZS1vcmRlciwgc3RvcCBoZXJlLiAgQ291bGQKLSsJICogYWxsb3cgRlRTX0ROUiwgYXNzdW1pbmcgdGhlIHVzZXIgaGFzIGZpeGVkIHRoZSBwcm9ibGVtLCBidXQgdGhlCi0rCSAqIHNhbWUgZWZmZWN0IGlzIGF2YWlsYWJsZSB3aXRoIEZUU19BR0FJTi4KLSsJICovCi0rCWlmIChwLT5mdHNfaW5mbyAhPSBGVFNfRCAvKiAmJiBwLT5mdHNfaW5mbyAhPSBGVFNfRE5SICovKQotKwkJcmV0dXJuIChOVUxMKTsKLSsKLSsJLyogRnJlZSB1cCBhbnkgcHJldmlvdXMgY2hpbGQgbGlzdC4gKi8KLSsJaWYgKHNwLT5mdHNfY2hpbGQpCi0rCQlmdHNfbGZyZWUoc3AtPmZ0c19jaGlsZCk7Ci0rCi0rCWlmIChpbnN0ciA9PSBGVFNfTkFNRU9OTFkpIHsKLSsJCXNwLT5mdHNfb3B0aW9ucyB8PSBGVFNfTkFNRU9OTFk7Ci0rCQlpbnN0ciA9IEJOQU1FUzsKLSsJfSBlbHNlCi0rCQlpbnN0ciA9IEJDSElMRDsKLSsKLSsJLyoKLSsJICogSWYgdXNpbmcgY2hkaXIgb24gYSByZWxhdGl2ZSBwYXRoIGFuZCBjYWxsZWQgQkVGT1JFIGZ0c19yZWFkIGRvZXMKLSsJICogaXRzIGNoZGlyIHRvIHRoZSByb290IG9mIGEgdHJhdmVyc2FsLCB3ZSBjYW4gbG9zZSAtLSB3ZSBuZWVkIHRvCi0rCSAqIGNoZGlyIGludG8gdGhlIHN1YmRpcmVjdG9yeSwgYW5kIHdlIGRvbid0IGtub3cgd2hlcmUgdGhlIGN1cnJlbnQKLSsJICogZGlyZWN0b3J5IGlzLCBzbyB3ZSBjYW4ndCBnZXQgYmFjayBzbyB0aGF0IHRoZSB1cGNvbWluZyBjaGRpciBieQotKwkgKiBmdHNfcmVhZCB3aWxsIHdvcmsuCi0rCSAqLwotKwlpZiAocC0+ZnRzX2xldmVsICE9IEZUU19ST09UTEVWRUwgfHwgcC0+ZnRzX2FjY3BhdGhbMF0gPT0gJy8nIHx8Ci0rCSAgICBJU1NFVChGVFNfTk9DSERJUikpCi0rCQlyZXR1cm4gKHNwLT5mdHNfY2hpbGQgPSBmdHNfYnVpbGQoc3AsIGluc3RyKSk7Ci0rCi0rCWlmICgoZmQgPSBvcGVuKCIuIiwgT19SRE9OTFksIDApKSA8IDApCi0rCQlyZXR1cm4gKE5VTEwpOwotKwlzcC0+ZnRzX2NoaWxkID0gZnRzX2J1aWxkKHNwLCBpbnN0cik7Ci0rCWlmIChmY2hkaXIoZmQpKQotKwkJcmV0dXJuIChOVUxMKTsKLSsJKHZvaWQpY2xvc2UoZmQpOwotKwlyZXR1cm4gKHNwLT5mdHNfY2hpbGQpOwotIH0KLSAKLS1zdGF0aWMgdm9pZAotLWZ0c19sZnJlZShoZWFkKQotLQlyZWdpc3RlciBGVFNFTlQgKmhlYWQ7Ci0raW50Ci0rZnRzX2Nsb3NlKEZUUyAqc3ApCi0gewotLQlyZWdpc3RlciBGVFNFTlQgKnA7Ci0rCXJlZ2lzdGVyIEZUU0VOVCAqZnJlZXAsICpwOwotKwlpbnQgc2F2ZWRfZXJybm87Ci0gCi0tCS8qIEZyZWUgYSBsaW5rZWQgbGlzdCBvZiBzdHJ1Y3R1cmVzLiAqLwotLQl3aGlsZSAocCA9IGhlYWQpIHsKLS0JCWhlYWQgPSBoZWFkLT5mdHNfbGluazsKLSsJLyoKLSsJICogVGhpcyBzdGlsbCB3b3JrcyBpZiB3ZSBoYXZlbid0IHJlYWQgYW55dGhpbmcgLS0gdGhlIGR1bW15IHN0cnVjdHVyZQotKwkgKiBwb2ludHMgdG8gdGhlIHJvb3QgbGlzdCwgc28gd2Ugc3RlcCB0aHJvdWdoIHRvIHRoZSBlbmQgb2YgdGhlIHJvb3QKLSsJICogbGlzdCB3aGljaCBoYXMgYSB2YWxpZCBwYXJlbnQgcG9pbnRlci4KLSsJICovCi0rCWlmIChzcC0+ZnRzX2N1cikgewotKwkJZm9yIChwID0gc3AtPmZ0c19jdXI7IHAtPmZ0c19sZXZlbCA+PSBGVFNfUk9PVExFVkVMOykgewotKwkJCWZyZWVwID0gcDsKLSsJCQlwID0gcC0+ZnRzX2xpbmsgPyBwLT5mdHNfbGluayA6IHAtPmZ0c19wYXJlbnQ7Ci0rCQkJZnJlZShmcmVlcCk7Ci0rCQl9Ci0gCQlmcmVlKHApOwotIAl9Ci0tfQotIAotLS8qCi0tICogQWxsb3cgZXNzZW50aWFsbHkgdW5saW1pdGVkIHBhdGhzOyBmaW5kLCBybSwgbHMgc2hvdWxkIGFsbCB3b3JrIG9uIGFueSB0cmVlLgotLSAqIE1vc3Qgc3lzdGVtcyB3aWxsIGFsbG93IGNyZWF0aW9uIG9mIHBhdGhzIG11Y2ggbG9uZ2VyIHRoYW4gTUFYUEFUSExFTiwgZXZlbgotLSAqIHRob3VnaCB0aGUga2VybmVsIHdvbid0IHJlc29sdmUgdGhlbS4gIEFkZCB0aGUgc2l6ZSAobm90IGp1c3Qgd2hhdCdzIG5lZWRlZCkKLS0gKiBwbHVzIDI1NiBieXRlcyBzbyBkb24ndCByZWFsbG9jIHRoZSBwYXRoIDIgYnl0ZXMgYXQgYSB0aW1lLiAKLS0gKi8KLS1zdGF0aWMgaW50Ci0tZnRzX3BhbGxvYyhzcCwgbW9yZSkKLS0JRlRTICpzcDsKLS0Jc2l6ZV90IG1vcmU7Ci0tewotLQlzcC0+ZnRzX3BhdGhsZW4gKz0gbW9yZSArIDI1NjsKLS0Jc3AtPmZ0c19wYXRoID0gcmVhbGxvYyhzcC0+ZnRzX3BhdGgsIChzaXplX3Qpc3AtPmZ0c19wYXRobGVuKTsKLS0JcmV0dXJuIChzcC0+ZnRzX3BhdGggPT0gTlVMTCk7Ci0tfQotKwkvKiBGcmVlIHVwIGNoaWxkIGxpbmtlZCBsaXN0LCBzb3J0IGFycmF5LCBwYXRoIGJ1ZmZlci4gKi8KLSsJaWYgKHNwLT5mdHNfY2hpbGQpCi0rCQlmdHNfbGZyZWUoc3AtPmZ0c19jaGlsZCk7Ci0rCWlmIChzcC0+ZnRzX2FycmF5KQotKwkJZnJlZShzcC0+ZnRzX2FycmF5KTsKLSsJZnJlZShzcC0+ZnRzX3BhdGgpOwotIAotLS8qCi0tICogV2hlbiB0aGUgcGF0aCBpcyByZWFsbG9jJ2QsIGhhdmUgdG8gZml4IGFsbCBvZiB0aGUgcG9pbnRlcnMgaW4gc3RydWN0dXJlcwotLSAqIGFscmVhZHkgcmV0dXJuZWQuCi0tICovCi0tc3RhdGljIHZvaWQKLS1mdHNfcGFkanVzdChzcCwgYWRkcikKLS0JRlRTICpzcDsKLS0Jdm9pZCAqYWRkcjsKLS17Ci0tCUZUU0VOVCAqcDsKLSsJLyogUmV0dXJuIHRvIG9yaWdpbmFsIGRpcmVjdG9yeSwgc2F2ZSBlcnJubyBpZiBuZWNlc3NhcnkuICovCi0rCWlmICghSVNTRVQoRlRTX05PQ0hESVIpKSB7Ci0rCQlzYXZlZF9lcnJubyA9IGZjaGRpcihzcC0+ZnRzX3JmZCkgPyBlcnJubyA6IDA7Ci0rCQkodm9pZCljbG9zZShzcC0+ZnRzX3JmZCk7Ci0rCX0KLSAKLS0jZGVmaW5lCUFESlVTVChwKSB7CQkJCQkJCVwKLS0JKHApLT5mdHNfYWNjcGF0aCA9CQkJCQkJXAotLQkgICAgKGNoYXIgKilhZGRyICsgKChwKS0+ZnRzX2FjY3BhdGggLSAocCktPmZ0c19wYXRoKTsJCVwKLS0JKHApLT5mdHNfcGF0aCA9IGFkZHI7CQkJCQkJXAotLX0KLS0JLyogQWRqdXN0IHRoZSBjdXJyZW50IHNldCBvZiBjaGlsZHJlbi4gKi8KLS0JZm9yIChwID0gc3AtPmZ0c19jaGlsZDsgcDsgcCA9IHAtPmZ0c19saW5rKQotLQkJQURKVVNUKHApOwotKwkvKiBGcmVlIHVwIHRoZSBzdHJlYW0gcG9pbnRlci4gKi8KLSsJZnJlZShzcCk7Ci0gCi0tCS8qIEFkanVzdCB0aGUgcmVzdCBvZiB0aGUgdHJlZS4gKi8KLS0JZm9yIChwID0gc3AtPmZ0c19jdXI7IHAtPmZ0c19sZXZlbCA+PSBGVFNfUk9PVExFVkVMOykgewotLQkJQURKVVNUKHApOwotLQkJcCA9IHAtPmZ0c19saW5rID8gcC0+ZnRzX2xpbmsgOiBwLT5mdHNfcGFyZW50OwotKwkvKiBTZXQgZXJybm8gYW5kIHJldHVybi4gKi8KLSsJaWYgKCFJU1NFVChGVFNfTk9DSERJUikgJiYgc2F2ZWRfZXJybm8pIHsKLSsJCWVycm5vID0gc2F2ZWRfZXJybm87Ci0rCQlyZXR1cm4gKC0xKTsKLSAJfQotKwlyZXR1cm4gKDApOwotIH0KLSAKLS1zdGF0aWMgc2l6ZV90Ci0tZnRzX21heGFyZ2xlbihhcmd2KQotLQljaGFyICogY29uc3QgKmFyZ3Y7Ci0tewotLQlzaXplX3QgbGVuLCBtYXg7Ci0tCi0tCWZvciAobWF4ID0gMDsgKmFyZ3Y7ICsrYXJndikKLS0JCWlmICgobGVuID0gc3RybGVuKCphcmd2KSkgPiBtYXgpCi0tCQkJbWF4ID0gbGVuOwotLQlyZXR1cm4gKG1heCk7Ci0tfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Z0cy9mdHMvcmVtb3ZlX2NkZWZzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Z0cy9mdHMvcmVtb3ZlX2NkZWZzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMTUyNzA0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9mdHMvZnRzL3JlbW92ZV9jZGVmcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLVJlcGxhY2UgdXNlIG9mIG1hY3JvcyBmcm9tIHN5cy9jZGVmcy5oIHNpbmNlIGNkZWZzLmggaXMgbWlzc2luZyBvbiBtdXNsCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKLQotSW5kZXg6IGZ0cy9mdHMuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGZ0cy5vcmlnL2Z0cy5oCi0rKysgZnRzL2Z0cy5oCi1AQCAtMTI2LDE1ICsxMjYsMjEgQEAgdHlwZWRlZiBzdHJ1Y3QgX2Z0c2VudCB7Ci0gCWNoYXIgZnRzX25hbWVbMV07CQkvKiBmaWxlIG5hbWUgKi8KLSB9IEZUU0VOVDsKLSAKLS0jaW5jbHVkZSA8c3lzL2NkZWZzLmg+Ci0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rZXh0ZXJuICJDIiB7Ci0rI2VuZGlmCi0gCi0tX19CRUdJTl9ERUNMUwotLUZUU0VOVAkqZnRzX2NoaWxkcmVuIF9fUCgoRlRTICosIGludCkpOwotLWludAkgZnRzX2Nsb3NlIF9fUCgoRlRTICopKTsKLS1GVFMJKmZ0c19vcGVuIF9fUCgoY2hhciAqIGNvbnN0ICosIGludCwKLS0JICAgIGludCAoKikoY29uc3QgRlRTRU5UICoqLCBjb25zdCBGVFNFTlQgKiopKSk7Ci0tRlRTRU5UCSpmdHNfcmVhZCBfX1AoKEZUUyAqKSk7Ci0taW50CSBmdHNfc2V0IF9fUCgoRlRTICosIEZUU0VOVCAqLCBpbnQpKTsKLS1fX0VORF9ERUNMUwotKyNpZm5kZWYgX19QCi0rI2RlZmluZSBfX1AKLSsjZW5kaWYKLStGVFNFTlQJKmZ0c19jaGlsZHJlbiAoRlRTICpwLCBpbnQgb3B0cyk7Ci0raW50CSBmdHNfY2xvc2UgKEZUUyAqcCk7Ci0rRlRTCSpmdHNfb3BlbiAoY2hhciAqIGNvbnN0ICogcGF0aCwgaW50IG9wdHMsCi0rCSAgICBpbnQgKCpjb21wZm4pKGNvbnN0IEZUU0VOVCAqKiwgY29uc3QgRlRTRU5UICoqKSk7Ci0rRlRTRU5UCSpmdHNfcmVhZCAoRlRTICpwKTsKLStpbnQJIGZ0c19zZXQgKEZUUyAqcCwgRlRTRU5UICpmLCBpbnQgb3B0cyk7Ci0gCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rfQotKyNlbmRpZgotICNlbmRpZiAvKiAhX0ZUU19IXyAqLwotSW5kZXg6IGZ0cy9mdHMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGZ0cy5vcmlnL2Z0cy5jCi0rKysgZnRzL2Z0cy5jCi1AQCAtNTAsMTUgKzUwLDE1IEBAIHN0YXRpYyBjaGFyIHNjY3NpZFtdID0gIkAoIylmdHMuYwk4LjYgKEIKLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotIAotLXN0YXRpYyBGVFNFTlQJKmZ0c19hbGxvYyBfX1AoKEZUUyAqLCBjaGFyICosIGludCkpOwotLXN0YXRpYyBGVFNFTlQJKmZ0c19idWlsZCBfX1AoKEZUUyAqLCBpbnQpKTsKLS1zdGF0aWMgdm9pZAkgZnRzX2xmcmVlIF9fUCgoRlRTRU5UICopKTsKLS1zdGF0aWMgdm9pZAkgZnRzX2xvYWQgX19QKChGVFMgKiwgRlRTRU5UICopKTsKLS1zdGF0aWMgc2l6ZV90CSBmdHNfbWF4YXJnbGVuIF9fUCgoY2hhciAqIGNvbnN0ICopKTsKLS1zdGF0aWMgdm9pZAkgZnRzX3BhZGp1c3QgX19QKChGVFMgKiwgdm9pZCAqKSk7Ci0tc3RhdGljIGludAkgZnRzX3BhbGxvYyBfX1AoKEZUUyAqLCBzaXplX3QpKTsKLS1zdGF0aWMgRlRTRU5UCSpmdHNfc29ydCBfX1AoKEZUUyAqLCBGVFNFTlQgKiwgaW50KSk7Ci0tc3RhdGljIHVfc2hvcnQJIGZ0c19zdGF0IF9fUCgoRlRTICosIHN0cnVjdCBkaXJlbnQgKiwgRlRTRU5UICosIGludCkpOwotK3N0YXRpYyBGVFNFTlQJKmZ0c19hbGxvYyBfX1AoRlRTICosIGNoYXIgKiwgaW50KTsKLStzdGF0aWMgRlRTRU5UCSpmdHNfYnVpbGQgX19QKEZUUyAqLCBpbnQpOwotK3N0YXRpYyB2b2lkCSBmdHNfbGZyZWUgX19QKEZUU0VOVCAqKTsKLStzdGF0aWMgdm9pZAkgZnRzX2xvYWQgX19QKEZUUyAqLCBGVFNFTlQgKik7Ci0rc3RhdGljIHNpemVfdAkgZnRzX21heGFyZ2xlbiBfX1AoY2hhciAqIGNvbnN0ICopOwotK3N0YXRpYyB2b2lkCSBmdHNfcGFkanVzdCBfX1AoRlRTICosIHZvaWQgKik7Ci0rc3RhdGljIGludAkgZnRzX3BhbGxvYyBfX1AoRlRTICosIHNpemVfdCk7Ci0rc3RhdGljIEZUU0VOVAkqZnRzX3NvcnQgX19QKEZUUyAqLCBGVFNFTlQgKiwgaW50KTsKLStzdGF0aWMgdV9zaG9ydAkgZnRzX3N0YXQgX19QKEZUUyAqLCBzdHJ1Y3QgZGlyZW50ICosIEZUU0VOVCAqLCBpbnQpOwotIAotICNkZWZpbmUJSVNET1QoYSkJKGFbMF0gPT0gJy4nICYmICghYVsxXSB8fCBhWzFdID09ICcuJyAmJiAhYVsyXSkpCi0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZnRzL2Z0cy9zdGRpbnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZnRzL2Z0cy9zdGRpbnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5ZTYwOTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Z0cy9mdHMvc3RkaW50LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotSW5jbHVkZSBzdGRpbnQuaCBmb3IgdV8qIHR5cGVkZWZzCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKLQotLS0tIC4vZnRzLmMub3JpZwotKysrIC4vZnRzLmMKLUBAIC00Niw2ICs0Niw3IEBACi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPGZ0cy5oPgotKyNpbmNsdWRlIDxzdGRpbnQuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHRfMC4xOS44LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0XzAuMTkuOC4xLmJiCmluZGV4IDgzZWRmZmUuLmMyMDU5ZTYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHRfMC4xOS44LjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dF8wLjE5LjguMS5iYgpAQCAtMjQsOCArMjQsNiBAQAogCiBQQUNLQUdFQ09ORklHW21zZ2NhdC1jdXJzZXNdID0gIi0td2l0aC1saWJuY3Vyc2VzLXByZWZpeD0ke1NUQUdJTkdfTElCRElSfS8uLiwtLWRpc2FibGUtY3Vyc2VzLG5jdXJzZXMsIgogCi1MREZMQUdTX3ByZXBlbmRfbGliYy11Y2xpYmMgPSAiIC1scnQgLWxwdGhyZWFkICIKLQogaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbwogCiBFWFRSQV9PRUNPTkYgKz0gIi0td2l0aG91dC1saXNwZGlyIFwKQEAgLTg2LDE1ICs4NCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYmFzcHJpbnRmLnNvKiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L0dOVS5HZXR0ZXh0LmRsbCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAiCi1GSUxFU19nZXR0ZXh0LXJ1bnRpbWVfYXBwZW5kX2xpYmMtdWNsaWJjID0gIiAke2xpYmRpcn0vbGliaW50bC5zby4qIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9jaGFyc2V0LmFsaWFzIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCiBGSUxFU19nZXR0ZXh0LXJ1bnRpbWUtZGV2ICs9ICIke2xpYmRpcn0vbGliYXNwcmludGYuYSBcCiAgICAgICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS9hdXRvc3ByaW50Zi5oIFwKICAgICAgICAgICAgICAgICAgICAgICIKLUZJTEVTX2dldHRleHQtcnVudGltZS1kZXZfYXBwZW5kX2xpYmMtdWNsaWJjID0gIiAke2xpYmRpcn0vbGliaW50bC5zbyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS9saWJpbnRsLmggXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCiBGSUxFU19nZXR0ZXh0LXJ1bnRpbWUtZG9jID0gIiR7bWFuZGlyfS9tYW4xL2dldHRleHQuKiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bWFuZGlyfS9tYW4xL25nZXR0ZXh0LiogXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke21hbmRpcn0vbWFuMS9lbnZzdWJzdC4qIFwKQEAgLTExOSw2ICsxMTEsMTAgQEAKIAlybSAke0R9JHtkYXRhZGlyfS9nZXR0ZXh0L2NvbmZpZy5ycGF0aAogCXJtICR7RH0ke2RhdGFkaXJ9L2dldHRleHQvcG8vTWFrZWZpbGUuaW4uaW4KIAlybSAke0R9JHtkYXRhZGlyfS9nZXR0ZXh0L3BvL3JlbW92ZS1wb3RjZGF0ZS5zaW4KKworICAgICAgICBjcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9L21zZ2ZtdCBcCisgICAgICAgICAgICAgICAgR0VUVEVYVERBVEFESVI9IiR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZ2V0dGV4dC0wLjE5LjgvIgorCiB9CiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9maXgtY29uZmxpY3RpbmctcmFuZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9maXgtY29uZmxpY3RpbmctcmFuZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTU3MTExMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvZml4LWNvbmZsaWN0aW5nLXJhbmQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1SZW5hbWUgJ3JhbmQnIHZhcmlhYmxlIHRvIGF2b2lkIGNvbmZsaWN0LgotCi1VcHN0cmVhbS1TdGF0dXM6IHBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEJqw7ZybiBTdGVuYmVyZyA8YmpzdEBlbmVhLmNvbT4KLQotZGlmZiAtdSBnbGliLTIuMzQuMy90ZXN0cy9yZWZjb3VudC9zaWduYWxzLmN+IGdsaWItMi4zNC4zL3Rlc3RzL3JlZmNvdW50L3NpZ25hbHMuYwotLS0tIGdsaWItMi4zNC4zL3Rlc3RzL3JlZmNvdW50L3NpZ25hbHMuYwkyMDEyLTExLTI2IDE3OjUyOjQ4LjAwMDAwMDAwMCArMDEwMAotKysrIGdsaWItMi4zNC4zL3Rlc3RzL3JlZmNvdW50L3NpZ25hbHMuYwkyMDEzLTAyLTA4IDE0OjI0OjEwLjA1MjQ3NzU0NiArMDEwMAotQEAgLTksNyArOSw3IEBACi0gI2RlZmluZSBNWV9JU19URVNUX0NMQVNTKHRjbGFzcykgICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUgKCh0Y2xhc3MpLCBHX1RZUEVfVEVTVCkpCi0gI2RlZmluZSBNWV9URVNUX0dFVF9DTEFTUyh0ZXN0KSAgICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUyAoKHRlc3QpLCBHX1RZUEVfVEVTVCwgR1Rlc3RDbGFzcykpCi0gCi0tc3RhdGljIEdSYW5kICpyYW5kOwotK3N0YXRpYyBHUmFuZCAqZ3JhbmQ7Ci0gCi0gdHlwZWRlZiBzdHJ1Y3QgX0dUZXN0IEdUZXN0OwotIHR5cGVkZWYgc3RydWN0IF9HVGVzdENsYXNzIEdUZXN0Q2xhc3M7Ci1AQCAtODQsNyArODQsNyBAQAotICAgICAgIE5VTEwKLSAgICAgfTsKLSAKLS0gICAgcmFuZCA9IGdfcmFuZF9uZXcoKTsKLSsgICAgZ3JhbmQgPSBnX3JhbmRfbmV3KCk7Ci0gCi0gICAgIHRlc3RfdHlwZSA9IGdfdHlwZV9yZWdpc3Rlcl9zdGF0aWMgKEdfVFlQRV9PQkpFQ1QsICJHVGVzdCIsCi0gICAgICAgICAmdGVzdF9pbmZvLCAwKTsKLUBAIC0yMTgsNyArMjE4LDcgQEAKLSBzdGF0aWMgdm9pZAotIG15X3Rlc3RfZG9fcHJvcCAoR1Rlc3QgKiB0ZXN0KQotIHsKLS0gIHRlc3QtPnZhbHVlID0gZ19yYW5kX2ludCAocmFuZCk7Ci0rICB0ZXN0LT52YWx1ZSA9IGdfcmFuZF9pbnQgKGdyYW5kKTsKLSAgIGdfb2JqZWN0X25vdGlmeSAoR19PQkpFQ1QgKHRlc3QpLCAidGVzdC1wcm9wIik7Ci0gfQotIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL2dsaWItZ2V0dGV4dGl6ZS1kaXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvZ2xpYi1nZXR0ZXh0aXplLWRpci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWU0MzUxMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvZ2xpYi1nZXR0ZXh0aXplLWRpci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLSMgYW4gdmVyeSBvbGQgcGF0Y2ggY2hlcnJ5LXBpY2tlZCBpbiBldmVyeSBnbGliLTIuMCBwYXRjaCBkaXJlY3RvcnkuIFRoZSBlYXJsaWVzdCBjb250YWluZXIKLSMgZm9yIGl0IGlzIDIuNi41IGluIE9FLiBUaGUgZWFybGllc3QgY29tbWl0IGZvciBpdCBpcyBjOGU1NzAyMTI3ZTUwN2U4MmU2ZjY4YTRiOGM1NDY4MDNhY2NlYTlkCi0jIGluIE9FIHNpZGUgd2hpY2ggcG9ydHMgZnJvbSBwcmV2aW91cyBiaXRrZWVwZXIgU0NNLiBJbiBPRSBzaWRlIGl0J3Mgb25seSB1c2VkIHRpbCAyLjEyLjQuCi0jCi0jIGtlZXAgaXQgc2luY2UgaXQncyBhbHdheXMgY2xlYW5lciB0byBub3QgaGFyZGNvZGUgZGVzdGluYXRpb24gcGF0aC4gVXNlIEBkYXRhZGlyQCBpcyBtb3JlCi0jIHBvcnRhYmxlIGhlcmUuIG1hcmsgZm9yIHVwc3RyZWFtCi0jCi0jIGJ5IEtldmluIFRpYW4gPGtldmluLnRpYW5AaW50ZWwuY29tPiwgMDYvMjUvMjAxMAotIyBSZWJhc2VkIGJ5IERvbmd4aWFvIFh1IDxkb25neGlhby54dUBpbnRlbC5jb20+LCAxMS8xNi8yMDEwCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotZGlmZiAtcnVOIGdsaWItMi4yNy4zLW9yaWcvZ2xpYi1nZXR0ZXh0aXplLmluIGdsaWItMi4yNy4zL2dsaWItZ2V0dGV4dGl6ZS5pbgotLS0tIGdsaWItMi4yNy4zLW9yaWcvZ2xpYi1nZXR0ZXh0aXplLmluCTIwMDktMDQtMDEgMDc6MDQ6MjAuMDAwMDAwMDAwICswODAwCi0rKysgZ2xpYi0yLjI3LjMvZ2xpYi1nZXR0ZXh0aXplLmluCTIwMTAtMTEtMTYgMTI6NTU6MDYuODc0NjA1OTE2ICswODAwCi1AQCAtNTIsNyArNTIsNyBAQAotIGRhdGFkaXI9QGRhdGFkaXJACi0gZGF0YXJvb3RkaXI9QGRhdGFyb290ZGlyQAotIAotLWdldHRleHRfZGlyPSRwcmVmaXgvc2hhcmUvZ2xpYi0yLjAvZ2V0dGV4dAotK2dldHRleHRfZGlyPUBkYXRhZGlyQC9nbGliLTIuMC9nZXR0ZXh0Ci0gCi0gd2hpbGUgdGVzdCAkIyAtZ3QgMDsgZG8KLSAgIGNhc2UgIiQxIiBpbgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wXzIuNTAuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMF8yLjUwLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyZWEzNDcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wXzIuNTAuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLXJlcXVpcmUgZ2xpYi5pbmMKLQotUEUgPSAiMSIKLQotU0hSVF9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKLQotU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vZ2xpYi8ke1NIUlRfVkVSfS9nbGliLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUtbGlidG9vbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtY29uZmxpY3RpbmctcmFuZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vcHRlc3QtcGF0aHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdWNsaWJjX211c2xfdHJhbnNsYXRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYWxsb3ctcnVuLW1lZGlhLXNkWC1kcml2ZS1tb3VudC1pZi11c2VybmFtZS1yb290LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtUmVtb3ZlLXRoZS13YXJuaW5nLWFib3V0LWRlcHJlY2F0ZWQtcGF0aHMtaW4tc2NoZW1hcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9FbmFibGUtbW9yZS10ZXN0cy13aGlsZS1jcm9zcy1jb21waWxpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1JbnN0YWxsLWdpby1xdWVyeW1vZHVsZXMtYXMtbGliZXhlY19QUk9HUkFNLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWlnbm9yZS1yZXR1cm4tdmFsdWUtb2Ytd3JpdGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1UZXN0LWZvci1wdGhyZWFkX2dldG5hbWVfbnAtYmVmb3JlLXVzaW5nLWl0LnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly9nbGliLWdldHRleHRpemUtZGlyLnBhdGNoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL3JlbG9jYXRlLW1vZHVsZXMucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzODFhYjIyOTM0ZjI5Njc1MGQwMzZhYTU1YTM5N2RlZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4MmVlOTRiZjRjMDE0NTliNmIwMGNiOWRiMDU0NWMyMjM3OTIxZTMwNjBjMGI3NGNmZjEzZmJjMDIwY2ZkOTk5IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wXzIuNTIuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMF8yLjUyLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjFmZTYwMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMF8yLjUyLjMuYmIKQEAgLTAsMCArMSwyMyBAQAorcmVxdWlyZSBnbGliLmluYworCitQRSA9ICIxIgorCitTSFJUX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgorCitTUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS9nbGliLyR7U0hSVF9WRVJ9L2dsaWItJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS1saWJ0b29sLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9wdGVzdC1wYXRocy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly91Y2xpYmNfbXVzbF90cmFuc2xhdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9hbGxvdy1ydW4tbWVkaWEtc2RYLWRyaXZlLW1vdW50LWlmLXVzZXJuYW1lLXJvb3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1SZW1vdmUtdGhlLXdhcm5pbmctYWJvdXQtZGVwcmVjYXRlZC1wYXRocy1pbi1zY2hlbWFzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0VuYWJsZS1tb3JlLXRlc3RzLXdoaWxlLWNyb3NzLWNvbXBpbGluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUluc3RhbGwtZ2lvLXF1ZXJ5bW9kdWxlcy1hcy1saWJleGVjX1BST0dSQU0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtaWdub3JlLXJldHVybi12YWx1ZS1vZi13cml0ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVRlc3QtZm9yLXB0aHJlYWRfZ2V0bmFtZV9ucC1iZWZvcmUtdXNpbmctaXQucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZTovL3JlbG9jYXRlLW1vZHVsZXMucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4OTI2NWQwMjg5YTQzNmU5OWNhZDU0NDkxZWIyMWVmNCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyNWVlNzYzNWE3YzBmY2Q0ZWM5MWNiYzNhZTA3YzdmOGY1Y2U2MjFkODE4MzUxMWY0MTRkZWQwOWU3ZTRlMTI4IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWIuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWIuaW5jCmluZGV4IDJiMzBlMzcuLjRjZGYxNDEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi5pbmMKQEAgLTQ1LDcgKzQ1LDYgQEAKIFBSSU5URl9taW5ndzMyID0gIi0tZW5hYmxlLWluY2x1ZGVkLXByaW50Zj15ZXMiCiBFWFRSQV9PRUNPTkYgPSAiJHtQUklOVEZ9ICR7Q09SRUNPTkZ9IgogRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICIke0NPUkVDT05GfSAtLWRpc2FibGUtc2VsaW51eCIKLUVYVFJBX09FQ09ORl9hcHBlbmRfbGliYy11Y2xpYmMgPSAiIC0td2l0aC1saWJpY29udj1nbnUiCiAKICMgVGVsbCBjb25maWd1cmUgdGhhdCB3ZSdsbCBoYXZlIGRidXMtZGFlbW9uIG9uIHRoZSB0YXJnZXQgZm9yIHRoZSB0ZXN0cwogRVhUUkFfT0VDT05GX2NsYXNzLXRhcmdldF9hcHBlbmQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQVEVTVF9FTkFCTEVEJywgJzEnLCAnIGFjX2N2X3Byb2dfREJVU19EQUVNT049ZGJ1cy1kYWVtb24nLCAnJywgZCl9IgpAQCAtNjcsMTIgKzY2LDE3IEBACiAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9nbGliLWNvbXBpbGUtcmVzb3VyY2VzIFwKICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9nbGliLTIuMC9nZXR0ZXh0L3BvL01ha2VmaWxlLmluLmluIFwKICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9nbGliLTIuMC9zY2hlbWFzL2dzY2hlbWEuZHRkIFwKKyAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9nbGliLTIuMC92YWxncmluZC9nbGliLnN1cHAgXAogICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2dldHRleHQvaXRzIgogRklMRVNfJHtQTn0tZGJnICs9ICIke2RhdGFkaXJ9L2dsaWItMi4wL2dkYiAke2RhdGFkaXJ9L2dkYiIKIEZJTEVTXyR7UE59LWNvZGVnZW4gPSAiJHtkYXRhZGlyfS9nbGliLTIuMC9jb2RlZ2VuLyoucHkgXAogICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vZ2RidXMtY29kZWdlbiIKIEZJTEVTXyR7UE59LXV0aWxzID0gIiR7YmluZGlyfS8qIgogCitSUkVDT01NRU5EU18ke1BOfSArPSAic2hhcmVkLW1pbWUtaW5mbyIKKyMgV2hlbiBjcm9zcyBjb21waWxpbmcgZm9yIFdpbmRvd3Mgd2UgZG9uJ3Qgd2FudCB0byBpbmNsdWRlIHRoaXMKK1JSRUNPTU1FTkRTXyR7UE59X3JlbW92ZV9taW5ndzMyID0gInNoYXJlZC1taW1lLWluZm8iCisKIEFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgogQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCiAjIFZhbGdyaW5kIHJ1bnRpbWUgZGV0ZWN0aW9uIHdvcmtzIHVzaW5nIGhhbmQtd3JpdHRlbiBhc3NlbWJseSwgd2hpY2gKQEAgLTExNyw2ICsxMjEsMTIgQEAKIAlmaQogfQogCitSREVQRU5EU18ke1BOfS1jb2RlZ2VuICs9ICJcCisgICAgICAgICAgICBweXRob24zIFwKKyAgICAgICAgICAgIHB5dGhvbjMtZGlzdHV0aWxzIFwKKyAgICAgICAgICAgIHB5dGhvbjMteG1sIFwKKyAgICAgICAgICAgIgorCiBSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiXAogICAgICAgICAgICAgZGJ1cyBcCiAgICAgICAgICAgICBnbm9tZS1kZXNrdG9wLXRlc3RpbmcgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2Nyb3NzLWxvY2FsZWRlZi1uYXRpdmVfMi4yNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9jcm9zcy1sb2NhbGVkZWYtbmF0aXZlXzIuMjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhZTg2ODMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2Nyb3NzLWxvY2FsZWRlZi1uYXRpdmVfMi4yNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLVNVTU1BUlkgPSAiQ3Jvc3MgbG9jYWxlIGdlbmVyYXRpb24gdG9vbCBmb3IgZ2xpYmMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGliYy9saWJjLmh0bWwiCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkxHUEwtMi4xIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFUzttZDU9ZTlhNTU4ZTI0M2IzNmQzMjA5ZjM4MGRlYjM5NGIyMTMgXAotICAgICAgZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgIGZpbGU6Ly9wb3NpeC9yeHNwZW5jZXIvQ09QWVJJR0hUO21kNT1kYzU0ODViYjM5NGExM2IyMzMyZWMxYzc4NWY1ZDgzYSBcCi0gICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgotCi0jIFRlbGwgYXV0b3Rvb2xzIHRoYXQgd2UncmUgd29ya2luZyBpbiB0aGUgbG9jYWxlZGVmIGRpcmVjdG9yeQotIwotQVVUT1RPT0xTX1NDUklQVF9QQVRIID0gIiR7U30vbG9jYWxlZGVmIgotCi1pbmhlcml0IG5hdGl2ZQotaW5oZXJpdCBhdXRvdG9vbHMKLQotRklMRVNFWFRSQVBBVEhTID0uICIke0ZJTEVfRElSTkFNRX0vJHtQTn06JHtGSUxFX0RJUk5BTUV9L2dsaWJjOiIKLQotU1JDQlJBTkNIID89ICJyZWxlYXNlLyR7UFZ9L21hc3RlciIKLUdMSUJDX0dJVF9VUkkgPz0gImdpdDovL3NvdXJjZXdhcmUub3JnL2dpdC9nbGliYy5naXQiCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5cZCtcLlxkKyhcLlxkKykqKSIKLQotU1JDUkVWX2dsaWJjID89ICJkYjAyNDJlMzAyMzQzNjc1N2JiYzdjNDg4YTc3OWU2ZTMzNDNkYjA0IgotU1JDUkVWX2xvY2FsZWRlZiA/PSAiMjk4NjliNmRjMTE0MjdjNWJhYjgzOWJkYjE1NWM4NWE3YzY0NGM3MSIKLQotU1JDX1VSSSA9ICIke0dMSUJDX0dJVF9VUkl9O2JyYW5jaD0ke1NSQ0JSQU5DSH07bmFtZT1nbGliYyBcCi0gICAgICAgICAgIGdpdDovL2dpdGh1Yi5jb20va3Jhai9sb2NhbGVkZWY7YnJhbmNoPW1hc3RlcjtuYW1lPWxvY2FsZWRlZjtkZXN0c3VmZml4PWdpdC9sb2NhbGVkZWYgXAotICAgICAgICAgICBmaWxlOi8vMDAxNi10aW1lem9uZS1yZS13cml0dGVuLXR6c2VsZWN0LWFzLXBvc2l4LXNoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTctUmVtb3ZlLWJhc2gtZGVwZW5kZW5jeS1mb3ItbnNjZC1pbml0LXNjcmlwdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE4LWVnbGliYy1Dcm9zcy1idWlsZGluZy1hbmQtdGVzdGluZy1pbnN0cnVjdGlvbnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxOS1lZ2xpYmMtSGVscC1ib290c3RyYXAtY3Jvc3MtdG9vbGNoYWluLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjAtZWdsaWJjLWNoZXJyeS1waWNrZWQtZnJvbS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIxLWVnbGliYy1DbGVhci1jYWNoZS1saW5lcy1vbi1wcGM4eHgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMi1lZ2xpYmMtUmVzb2x2ZS1fX2Zwc2NyX3ZhbHVlcy1vbi1TSDQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMy1lZ2xpYmMtSW5zdGFsbC1QSUMtYXJjaGl2ZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNC1lZ2xpYmMtRm9yd2FyZC1wb3J0LWNyb3NzLWxvY2FsZS1nZW5lcmF0aW9uLXN1cHBvcnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNS1EZWZpbmUtRFVNTVlfTE9DQUxFX1QtaWYtbm90LWRlZmluZWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1JbmNsdWRlLWxvY2FsZV90LmgtY29tcGF0aWJpbGl0eS1oZWFkZXIucGF0Y2ggXAotIgotIyBNYWtlcyBmb3IgYSByYXRoZXIgbG9uZyByZXYgKDIyIGNoYXJhY3RlcnMpLCBidXQuLi4KLSMKLVNSQ1JFVl9GT1JNQVQgPSAiZ2xpYmNfbG9jYWxlZGVmIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLWdsaWJjPSR7U30iCi1DRkxBR1MgKz0gIi1mZ251ODktaW5saW5lIC1zdGQ9Z251OTkgLURJU19JTlwoeFwpPScwJyIKLQotZG9faW5zdGFsbCgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KLQlpbnN0YWxsIC1tIDA3NTUgJHtCfS9sb2NhbGVkZWYgJHtEfSR7YmluZGlyfS9jcm9zcy1sb2NhbGVkZWYKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9jcm9zcy1sb2NhbGVkZWYtbmF0aXZlXzIuMjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvY3Jvc3MtbG9jYWxlZGVmLW5hdGl2ZV8yLjI2LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjNWQ3MGQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvY3Jvc3MtbG9jYWxlZGVmLW5hdGl2ZV8yLjI2LmJiCkBAIC0wLDAgKzEsNTEgQEAKK1NVTU1BUlkgPSAiQ3Jvc3MgbG9jYWxlIGdlbmVyYXRpb24gdG9vbCBmb3IgZ2xpYmMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGliYy9saWJjLmh0bWwiCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkxHUEwtMi4xIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFUzttZDU9ZTlhNTU4ZTI0M2IzNmQzMjA5ZjM4MGRlYjM5NGIyMTMgXAorICAgICAgZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgIGZpbGU6Ly9wb3NpeC9yeHNwZW5jZXIvQ09QWVJJR0hUO21kNT1kYzU0ODViYjM5NGExM2IyMzMyZWMxYzc4NWY1ZDgzYSBcCisgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgorCisjIFRlbGwgYXV0b3Rvb2xzIHRoYXQgd2UncmUgd29ya2luZyBpbiB0aGUgbG9jYWxlZGVmIGRpcmVjdG9yeQorIworQVVUT1RPT0xTX1NDUklQVF9QQVRIID0gIiR7U30vbG9jYWxlZGVmIgorCitpbmhlcml0IG5hdGl2ZQoraW5oZXJpdCBhdXRvdG9vbHMKKworRklMRVNFWFRSQVBBVEhTID0uICIke0ZJTEVfRElSTkFNRX0vJHtQTn06JHtGSUxFX0RJUk5BTUV9L2dsaWJjOiIKKworU1JDQlJBTkNIID89ICJyZWxlYXNlLyR7UFZ9L21hc3RlciIKK0dMSUJDX0dJVF9VUkkgPz0gImdpdDovL3NvdXJjZXdhcmUub3JnL2dpdC9nbGliYy5naXQiCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5cZCtcLlxkKyhcLlxkKykqKSIKKworU1JDUkVWX2dsaWJjID89ICIxYzlhNWMyNzBkOGI2NmYzMGRjZmFmMWNiMmQ2Y2YzOWQzZTE4MzY5IgorU1JDUkVWX2xvY2FsZWRlZiA/PSAiZGZiNGFmZTU1MWM2YzZlOTRmOWNjODU0MTdiZDFmNTgyMTY4Yzg0MyIKKworU1JDX1VSSSA9ICIke0dMSUJDX0dJVF9VUkl9O2JyYW5jaD0ke1NSQ0JSQU5DSH07bmFtZT1nbGliYyBcCisgICAgICAgICAgIGdpdDovL2dpdGh1Yi5jb20va3Jhai9sb2NhbGVkZWY7YnJhbmNoPW1hc3RlcjtuYW1lPWxvY2FsZWRlZjtkZXN0c3VmZml4PWdpdC9sb2NhbGVkZWYgXAorICAgICAgICAgICBmaWxlOi8vMDAxNS10aW1lem9uZS1yZS13cml0dGVuLXR6c2VsZWN0LWFzLXBvc2l4LXNoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTYtUmVtb3ZlLWJhc2gtZGVwZW5kZW5jeS1mb3ItbnNjZC1pbml0LXNjcmlwdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE3LWVnbGliYy1Dcm9zcy1idWlsZGluZy1hbmQtdGVzdGluZy1pbnN0cnVjdGlvbnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxOC1lZ2xpYmMtSGVscC1ib290c3RyYXAtY3Jvc3MtdG9vbGNoYWluLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTktZWdsaWJjLUNsZWFyLWNhY2hlLWxpbmVzLW9uLXBwYzh4eC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIwLWVnbGliYy1SZXNvbHZlLV9fZnBzY3JfdmFsdWVzLW9uLVNINC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIxLWVnbGliYy1JbnN0YWxsLVBJQy1hcmNoaXZlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIyLWVnbGliYy1Gb3J3YXJkLXBvcnQtY3Jvc3MtbG9jYWxlLWdlbmVyYXRpb24tc3VwcG9ydC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIzLURlZmluZS1EVU1NWV9MT0NBTEVfVC1pZi1ub3QtZGVmaW5lZC5wYXRjaCBcCisiCisjIE1ha2VzIGZvciBhIHJhdGhlciBsb25nIHJldiAoMjIgY2hhcmFjdGVycyksIGJ1dC4uLgorIworU1JDUkVWX0ZPUk1BVCA9ICJnbGliY19sb2NhbGVkZWYiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgtZ2xpYmM9JHtTfSIKK0NGTEFHUyArPSAiLWZnbnU4OS1pbmxpbmUgLXN0ZD1nbnU5OSAtRElTX0lOXCh4XCk9JzAnIgorCitkb19pbnN0YWxsKCkgeworCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQorCWluc3RhbGwgLW0gMDc1NSAke0J9L2xvY2FsZWRlZiAke0R9JHtiaW5kaXJ9L2Nyb3NzLWxvY2FsZWRlZgorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWNvbGxhdGVyYWwuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWNvbGxhdGVyYWwuaW5jCmluZGV4IDM3ZjI3Y2EuLmRlODU5ZDUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1jb2xsYXRlcmFsLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtY29sbGF0ZXJhbC5pbmMKQEAgLTE4LDUgKzE4LDQgQEAKIGRvX2luc3RhbGxbZGVwZW5kc10gKz0gInZpcnR1YWwvJHtNTFBSRUZJWH1saWJjOmRvX3N0YXNoX2xvY2FsZSIKIAogQ09NUEFUSUJMRV9IT1NUX2xpYmMtbXVzbF9jbGFzcy10YXJnZXQgPSAibnVsbCIKLUNPTVBBVElCTEVfSE9TVF9saWJjLXVjbGliY19jbGFzcy10YXJnZXQgPSAibnVsbCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWluaXRpYWxfMi4yNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1pbml0aWFsXzIuMjYuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1pbml0aWFsXzIuMjUuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1pbml0aWFsXzIuMjYuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1sb2NhbGUuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWxvY2FsZS5pbmMKaW5kZXggNzVhYmFiZS4uYjNjYjEwYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWxvY2FsZS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWxvY2FsZS5pbmMKQEAgLTEyLDcgKzEyLDcgQEAKIEJJTlVUSUxTREVQX2NsYXNzLW5hdGl2ZXNkayA9ICJ2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1iaW51dGlscy1jcm9zc3Nkazpkb19wb3B1bGF0ZV9zeXNyb290IgogZG9fcGFja2FnZVtkZXBlbmRzXSArPSAiJHtCSU5VVElMU0RFUH0iCiAKLSMgbG9jYWxlZGVmIGxpbmtzIHdpdGggbGliYy5zbyBhbmQgZ2xpYmMtY29sbGF0ZXJhbC5pbmNpbmhpYml0cyBhbGwgZGVmYXVsdCBkZXBzCisjIGxvY2FsZWRlZiBsaW5rcyB3aXRoIGxpYmMuc28gYW5kIGdsaWJjLWNvbGxhdGVyYWwuaW5jIGluaGliaXRzIGFsbCBkZWZhdWx0IGRlcHMKICMgY2Fubm90IGFkZCB2aXJ0dWFsL2xpYmMgdG8gREVQRU5EUywgYmVjYXVzZSBpdCB3b3VsZCBjb25mbGljdCB3aXRoIGxpYmMtaW5pdGlhbCBpbiBSU1MKIFJERVBFTkRTX2xvY2FsZWRlZiArPSAiZ2xpYmMiCiAKQEAgLTM5LDcgKzM5LDYgQEAKIAogUEFDS0FHRVNfRFlOQU1JQyA9ICJebG9jYWxlLWJhc2UtLiogXAogICAgICAgICAgICAgICAgICAgICBeZ2xpYmMtZ2NvbnYtLiogXmdsaWJjLWNoYXJtYXAtLiogXmdsaWJjLWxvY2FsZWRhdGEtLiogXmdsaWJjLWJpbmFyeS1sb2NhbGVkYXRhLS4qIFwKLSAgICAgICAgICAgICAgICAgICAgXmdsaWJjLWdjb252LS4qICBeZ2xpYmMtY2hhcm1hcC0uKiAgXmdsaWJjLWxvY2FsZWRhdGEtLiogIF5nbGliYy1iaW5hcnktbG9jYWxlZGF0YS0uKiBcCiAgICAgICAgICAgICAgICAgICAgIF4ke01MUFJFRklYfWdsaWJjLWdjb252JCIKIAogIyBDcmVhdGUgYSBnbGliYy1iaW5hcmllcyBwYWNrYWdlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtbG9jYWxlXzIuMjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtbG9jYWxlXzIuMjYuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1sb2NhbGVfMi4yNS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWxvY2FsZV8yLjI2LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtbXRyYWNlXzIuMjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtbXRyYWNlXzIuMjYuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1tdHJhY2VfMi4yNS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLW10cmFjZV8yLjI2LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtcGFja2FnZS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtcGFja2FnZS5pbmMKaW5kZXggOWY3ZmE2Mi4uZGYzZGIyYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXBhY2thZ2UuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1wYWNrYWdlLmluYwpAQCAtMSwxOSArMSwzIEBACi0jCi0jIEZvciBub3csIHdlIHdpbGwgc2tpcCBidWlsZGluZyBvZiBhIGdjYyBwYWNrYWdlIGlmIGl0IGlzIGEgdWNsaWJjIG9uZQotIyBhbmQgb3VyIGJ1aWxkIGlzIG5vdCBhIHVjbGliYyBvbmUsIGFuZCB3ZSBza2lwIGEgZ2xpYmMgb25lIGlmIG91ciBidWlsZAotIyBpcyBhIHVjbGliYyBidWlsZC4KLSMKLSMgU2VlIHRoZSBub3RlIGluIGdjYy9nY2NfMy40LjAub2UKLSMKLQotcHl0aG9uIF9fYW5vbnltb3VzICgpIHsKLSAgICBpbXBvcnQgYmIsIHJlCi0gICAgdWNfb3MgPSAocmUubWF0Y2goJy4qdWNsaWJjKicsIGQuZ2V0VmFyKCdUQVJHRVRfT1MnKSkgIT0gTm9uZSkKLSAgICBpZiB1Y19vczoKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoImluY29tcGF0aWJsZSB3aXRoIHRhcmdldCAlcyIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLmdldFZhcignVEFSR0VUX09TJykpCi19Ci0KIElOSElCSVRfU1lTUk9PVF9TVFJJUCA9ICIxIgogCiBQQUNLQUdFUyA9ICIke1BOfS1kYmcgY2F0Y2hzZWd2IHNsbiBuc2NkIGxkZCB0emNvZGUgZ2xpYmMtdGhyZWFkLWRiICR7UE59LXBpYyBsaWJjaWRuIGxpYm1lbXVzYWdlIGxpYnNlZ2ZhdWx0ICR7UE59LXBjcHJvZmlsZSBsaWJzb3RydXNzICR7UE59ICR7UE59LXV0aWxzIGdsaWJjLWV4dHJhLW5zcyAke1BOfS1kZXYgJHtQTn0tc3RhdGljZGV2ICR7UE59LWRvYyIKQEAgLTE0NywxMSArMTMxLDE1IEBACiAJZG9faW5zdGFsbF9hcm1tdWx0aWxpYgogfQogCitkb19pbnN0YWxsX2FwcGVuZF9hcm1lYiAoKSB7CisJZG9faW5zdGFsbF9hcm1tdWx0aWxpYgorfQorCiBkb19pbnN0YWxsX2FybW11bHRpbGliICgpIHsKIAogCW9lX211bHRpbGliX2hlYWRlciBiaXRzL2VuZGlhbi5oIGJpdHMvZmNudGwuaCBiaXRzL2ZlbnYuaCBiaXRzL2ZwLWZhc3QuaCBiaXRzL2h3Y2FwLmggYml0cy9pcGMuaCBiaXRzL2xpbmsuaCBiaXRzL3dvcmRzaXplLmgKLQlvZV9tdWx0aWxpYl9oZWFkZXIgYml0cy9sb2NhbF9saW0uaCBiaXRzL21tYW4uaCBiaXRzL21zcS5oIGJpdHMvcHRocmVhZHR5cGVzLmggIGJpdHMvc2VtLmggIGJpdHMvc2VtYXBob3JlLmggYml0cy9zZXRqbXAuaAotCW9lX211bHRpbGliX2hlYWRlciBiaXRzL3NobS5oIGJpdHMvc2lnc3RhY2suaCBiaXRzL3N0YXQuaCBiaXRzL3N0YXRmcy5oIGJpdHMvc3RyaW5nLmggYml0cy90eXBlc2l6ZXMuaAorCW9lX211bHRpbGliX2hlYWRlciBiaXRzL2xvY2FsX2xpbS5oIGJpdHMvbW1hbi5oIGJpdHMvbXNxLmggYml0cy9wdGhyZWFkdHlwZXMuaCBiaXRzL3B0aHJlYWR0eXBlcy1hcmNoLmggIGJpdHMvc2VtLmggIGJpdHMvc2VtYXBob3JlLmggYml0cy9zZXRqbXAuaAorCW9lX211bHRpbGliX2hlYWRlciBiaXRzL3NobS5oIGJpdHMvc2lnc3RhY2suaCBiaXRzL3N0YXQuaCBiaXRzL3N0YXRmcy5oIGJpdHMvdHlwZXNpemVzLmgKIAogCW9lX211bHRpbGliX2hlYWRlciBmcHVfY29udHJvbC5oIGdudS9saWItbmFtZXMuaCBnbnUvc3R1YnMuaCBpZWVlNzU0LmgKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXNjcmlwdHNfMi4yNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1zY3JpcHRzXzIuMjYuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1zY3JpcHRzXzIuMjUuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1zY3JpcHRzXzIuMjYuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAxLUluY2x1ZGUtbG9jYWxlX3QuaC1jb21wYXRpYmlsaXR5LWhlYWRlci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAxLUluY2x1ZGUtbG9jYWxlX3QuaC1jb21wYXRpYmlsaXR5LWhlYWRlci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTEzYzQyOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMS1JbmNsdWRlLWxvY2FsZV90LmgtY29tcGF0aWJpbGl0eS1oZWFkZXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1Gcm9tIGFiZmViMGNmNGUzMjYxYTY2YTdhMjNhYmM5YWVkMzNjMDM0Yzg1MGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKb3NodWEgV2F0dCA8Sm9zaHVhLldhdHRAZ2FybWluLmNvbT4KLURhdGU6IFdlZCwgNiBEZWMgMjAxNyAxMzoyNjoxOSAtMDYwMAotU3ViamVjdDogW1BBVENIXSBJbmNsdWRlIGxvY2FsZV90LmggY29tcGF0aWJpbGl0eSBoZWFkZXIKLQotTmV3ZXIgdmVyc2lvbnMgb2YgZ2xpYmMgKHNpbmNlIDIuMjYpIG1vdmVkIHRoZSBsb2NhbGUgdHlwZWRlZnMgZnJvbQoteGxvY2FsZS5oIHRvIGJpdHMvdHlwZXMvbG9jYWxlX3QuaC4gQ3JlYXRlIGEgY29tcGF0aWJpbGl0eSBoZWFkZXIgZm9yCi10aGVzZSBuZXdlciB2ZXJzaW9ucyBvZiBnbGliYwotCi1TZWUgZjBiZTI1YjYzMzZkYjc0OTJlNDdkMmU4ZTcyZWI4YWY1M2I1NTA2ZCBpbiBnbGliYwotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgY29tcGF0aWJpbGl0eSB3aXRoIG5ld2VyIGhvc3QgZ2xpYmMKLVNpZ25lZC1vZmYtYnk6IEpvc2h1YSBXYXR0IDxKUEVXaGFja2VyQGdtYWlsLmNvbT4KLQotLS0tCi0gbG9jYWxlL2JpdHMvdHlwZXMvbG9jYWxlX3QuaCB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBsb2NhbGUvYml0cy90eXBlcy9sb2NhbGVfdC5oCi0KLWRpZmYgLS1naXQgYS9sb2NhbGUvYml0cy90eXBlcy9sb2NhbGVfdC5oIGIvbG9jYWxlL2JpdHMvdHlwZXMvbG9jYWxlX3QuaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAuLmI1MTlhNmM1ZjgKLS0tLSAvZGV2L251bGwKLSsrKyBiL2xvY2FsZS9iaXRzL3R5cGVzL2xvY2FsZV90LmgKLUBAIC0wLDAgKzEgQEAKLSsjaW5jbHVkZSA8eGxvY2FsZS5oPgotLS0gCi0yLjE0LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDEtbmF0aXZlc2RrLWdsaWJjLUxvb2stZm9yLWhvc3Qtc3lzdGVtLWxkLnNvLmNhY2hlLWFzLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAxLW5hdGl2ZXNkay1nbGliYy1Mb29rLWZvci1ob3N0LXN5c3RlbS1sZC5zby5jYWNoZS1hcy0ucGF0Y2gKaW5kZXggMDU1M2Y4YS4uMTljMWQ5YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDEtbmF0aXZlc2RrLWdsaWJjLUxvb2stZm9yLWhvc3Qtc3lzdGVtLWxkLnNvLmNhY2hlLWFzLS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMS1uYXRpdmVzZGstZ2xpYmMtTG9vay1mb3ItaG9zdC1zeXN0ZW0tbGQuc28uY2FjaGUtYXMtLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSAyNzI3ZTU4ZDFkMjY5OTk0ZGUxN2NhZGIxMjE5NTAwMWIxNDU4NWU3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA4MTM0NmIyZjc3MzU2OTgwNzhkNWJmOTE5YTc4YjZjMDI2OWQ2ZmVlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDE6NDg6MjQgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwMS8yNl0gbmF0aXZlc2RrLWdsaWJjOiBMb29rIGZvciBob3N0IHN5c3RlbSBsZC5zby5jYWNoZSBhcworU3ViamVjdDogW1BBVENIIDAxLzI1XSBuYXRpdmVzZGstZ2xpYmM6IExvb2sgZm9yIGhvc3Qgc3lzdGVtIGxkLnNvLmNhY2hlIGFzCiAgd2VsbAogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQpAQCAtMzEsNyArMzEsNyBAQAogIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9lbGYvZGwtbG9hZC5jIGIvZWxmL2RsLWxvYWQuYwotaW5kZXggNTFmYjBkMC4uZjUwM2RiYyAxMDA2NDQKK2luZGV4IGMxYjZkNGJhMGYuLmQ3YWY5ZWJjYmMgMTAwNjQ0CiAtLS0gYS9lbGYvZGwtbG9hZC5jCiArKysgYi9lbGYvZGwtbG9hZC5jCiBAQCAtMjA1NCw2ICsyMDU0LDE0IEBAIF9kbF9tYXBfb2JqZWN0IChzdHJ1Y3QgbGlua19tYXAgKmxvYWRlciwgY29uc3QgY2hhciAqbmFtZSwKQEAgLTY1LDUgKzY1LDUgQEAKICAgICAgICBpZiAoX19nbGliY191bmxpa2VseSAoR0xSTyhkbF9kZWJ1Z19tYXNrKSAmIERMX0RFQlVHX0xJQlMpKQogIAlfZGxfZGVidWdfcHJpbnRmICgiXG4iKTsKIC0tIAotMi4xMC4yCisyLjEzLjIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDItbmF0aXZlc2RrLWdsaWJjLUZpeC1idWZmZXItb3ZlcnJ1bi13aXRoLWEtcmVsb2NhdGVkLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAyLW5hdGl2ZXNkay1nbGliYy1GaXgtYnVmZmVyLW92ZXJydW4td2l0aC1hLXJlbG9jYXRlZC0ucGF0Y2gKaW5kZXggZTVlZjM0MS4uMmNlMjQwYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDItbmF0aXZlc2RrLWdsaWJjLUZpeC1idWZmZXItb3ZlcnJ1bi13aXRoLWEtcmVsb2NhdGVkLS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMi1uYXRpdmVzZGstZ2xpYmMtRml4LWJ1ZmZlci1vdmVycnVuLXdpdGgtYS1yZWxvY2F0ZWQtLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSAxNTc4ZjUyNjQ3ZWM4ODA0MTg2ZDE5NDRkNGNkMjA5NTEzMmVmYzM5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA4MmYyZTkxMGVjMGUyZGU2YTllMmIwMDc4MjViZGRmYzU4NTA1NzVkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDE6NTA6MDAgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwMi8yNl0gbmF0aXZlc2RrLWdsaWJjOiBGaXggYnVmZmVyIG92ZXJydW4gd2l0aCBhIHJlbG9jYXRlZAorU3ViamVjdDogW1BBVENIIDAyLzI1XSBuYXRpdmVzZGstZ2xpYmM6IEZpeCBidWZmZXIgb3ZlcnJ1biB3aXRoIGEgcmVsb2NhdGVkCiAgU0RLCiAKIFdoZW4gbGQtbGludXgtKi5zby4yIGlzIHJlbG9jYXRlZCB0byBhIHBhdGggdGhhdCBpcyBsb25nZXIgdGhhbiB0aGUKQEAgLTIyLDcgKzIyLDcgQEAKICAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvZWxmL2RsLWxvYWQuYyBiL2VsZi9kbC1sb2FkLmMKLWluZGV4IGY1MDNkYmMuLjNhM2QxMTIgMTAwNjQ0CitpbmRleCBkN2FmOWViY2JjLi4xOWMxZGI5OTQ4IDEwMDY0NAogLS0tIGEvZWxmL2RsLWxvYWQuYwogKysrIGIvZWxmL2RsLWxvYWQuYwogQEAgLTE3NTMsNyArMTc1MywxOSBAQCBvcGVuX3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIHNpemVfdCBuYW1lbGVuLCBpbnQgbW9kZSwKQEAgLTQ2LDUgKzQ2LDUgQEAKICAgICAgewogICAgICAgIHN0cnVjdCByX3NlYXJjaF9wYXRoX2VsZW0gKnRoaXNfZGlyID0gKmRpcnM7CiAtLSAKLTIuMTAuMgorMi4xMy4yCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAzLW5hdGl2ZXNkay1nbGliYy1SYWlzZS10aGUtc2l6ZS1vZi1hcnJheXMtY29udGFpbmluZy0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMy1uYXRpdmVzZGstZ2xpYmMtUmFpc2UtdGhlLXNpemUtb2YtYXJyYXlzLWNvbnRhaW5pbmctLnBhdGNoCmluZGV4IDllMjA3ZTQuLjM5N2U4YjMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAzLW5hdGl2ZXNkay1nbGliYy1SYWlzZS10aGUtc2l6ZS1vZi1hcnJheXMtY29udGFpbmluZy0ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDMtbmF0aXZlc2RrLWdsaWJjLVJhaXNlLXRoZS1zaXplLW9mLWFycmF5cy1jb250YWluaW5nLS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gZTUzOTY4ZDYxODA0YjZiYWIzMmVjNmUxM2NjMGIzY2Q1NzIxNDc5NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNDkwYTBlYjRkYTFhZjcyNmVhNWQ2OGUzZWZjMGQxOGJhOTRjNDA1NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAxOjUxOjM4ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDMvMjZdIG5hdGl2ZXNkay1nbGliYzogUmFpc2UgdGhlIHNpemUgb2YgYXJyYXlzIGNvbnRhaW5pbmcgZGwKK1N1YmplY3Q6IFtQQVRDSCAwMy8yNV0gbmF0aXZlc2RrLWdsaWJjOiBSYWlzZSB0aGUgc2l6ZSBvZiBhcnJheXMgY29udGFpbmluZyBkbAogIHBhdGhzCiAKIFRoaXMgcGF0Y2ggcHV0cyB0aGUgZHluYW1pYyBsb2FkZXIgcGF0aCBpbiB0aGUgYmluYXJpZXMsIFNZU1RFTV9ESVJTIHN0cmluZ3MKQEAgLTI2LDEwICsyNiwxMCBAQAogIDcgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9lbGYvZGwtY2FjaGUuYyBiL2VsZi9kbC1jYWNoZS5jCi1pbmRleCBjZmEzMzVlLi5kYWExMmVjIDEwMDY0NAoraW5kZXggZTk2MzJkYTBiMy4uNGRlNTI5ZDJjZiAxMDA2NDQKIC0tLSBhL2VsZi9kbC1jYWNoZS5jCiArKysgYi9lbGYvZGwtY2FjaGUuYwotQEAgLTEzMiw2ICsxMzIsMTAgQEAgZG8JCQkJCQkJCQkgICAgICBcCitAQCAtMTMzLDYgKzEzMywxMCBAQCBkbwkJCQkJCQkJCSAgICAgIFwKICB3aGlsZSAoMCkKICAKICAKQEAgLTQxLDcgKzQxLDcgQEAKICBpbnRlcm5hbF9mdW5jdGlvbgogIF9kbF9jYWNoZV9saWJjbXAgKGNvbnN0IGNoYXIgKnAxLCBjb25zdCBjaGFyICpwMikKIGRpZmYgLS1naXQgYS9lbGYvZGwtbG9hZC5jIGIvZWxmL2RsLWxvYWQuYwotaW5kZXggM2EzZDExMi4uYTE0MTBlNCAxMDA2NDQKK2luZGV4IDE5YzFkYjk5NDguLjcwYzI1OWI0MDAgMTAwNjQ0CiAtLS0gYS9lbGYvZGwtbG9hZC5jCiArKysgYi9lbGYvZGwtbG9hZC5jCiBAQCAtMTA2LDggKzEwNiw4IEBAIHN0YXRpYyBzaXplX3QgbWF4X2NhcHN0cmxlbiBhdHRyaWJ1dGVfcmVscm87CkBAIC01Niw3ICs1Niw3IEBACiAgICBTWVNURU1fRElSU19MRU4KICB9OwogZGlmZiAtLWdpdCBhL2VsZi9pbnRlcnAuYyBiL2VsZi9pbnRlcnAuYwotaW5kZXggOTQ0ODgwMi4uZTdlOGM3MCAxMDA2NDQKK2luZGV4IGI2ZThmMDQ0NDQuLjQ3YzIwNDE1YmMgMTAwNjQ0CiAtLS0gYS9lbGYvaW50ZXJwLmMKICsrKyBiL2VsZi9pbnRlcnAuYwogQEAgLTE4LDUgKzE4LDUgQEAKQEAgLTY3LDcgKzY3LDcgQEAKICtjb25zdCBjaGFyIF9faW52b2tlX2R5bmFtaWNfbGlua2VyX19bNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuaW50ZXJwIikpKQogICAgPSBSVU5USU1FX0xJTktFUjsKIGRpZmYgLS1naXQgYS9lbGYvbGRjb25maWcuYyBiL2VsZi9sZGNvbmZpZy5jCi1pbmRleCA0NjdjYTgyLi42MzFhMmE5IDEwMDY0NAoraW5kZXggOTljYWY5ZTliYi4uMzZlYTVkZjVmMSAxMDA2NDQKIC0tLSBhL2VsZi9sZGNvbmZpZy5jCiArKysgYi9lbGYvbGRjb25maWcuYwogQEAgLTE2OCw2ICsxNjgsOSBAQCBzdGF0aWMgc3RydWN0IGFyZ3AgYXJncCA9CkBAIC04MSwxOCArODEsMTggQEAKICAgICBhIHBsYXRmb3JtLiAgKi8KICBzdGF0aWMgaW50CiBkaWZmIC0tZ2l0IGEvZWxmL3J0bGQuYyBiL2VsZi9ydGxkLmMKLWluZGV4IDRlYzI1ZDcuLmUxNTljMTIgMTAwNjQ0CitpbmRleCA2NTY0N2ZiMWM4Li5jZDgzODFjYjMzIDEwMDY0NAogLS0tIGEvZWxmL3J0bGQuYwogKysrIGIvZWxmL3J0bGQuYwotQEAgLTk5LDYgKzk5LDcgQEAgdWludHB0cl90IF9fcG9pbnRlcl9jaGtfZ3VhcmRfbG9jYWwKLSBzdHJvbmdfYWxpYXMgKF9fcG9pbnRlcl9jaGtfZ3VhcmRfbG9jYWwsIF9fcG9pbnRlcl9jaGtfZ3VhcmQpCi0gI2VuZGlmCi0gCitAQCAtMTI4LDYgKzEyOCw3IEBAIGRzb19uYW1lX3ZhbGlkX2Zvcl9zdWlkIChjb25zdCBjaGFyICpwKQorICAgICB9CisgICByZXR1cm4gKnAgIT0gJ1wwJzsKKyB9CiArZXh0ZXJuIGNvbnN0IGNoYXIgTERfU09fQ0FDSEVbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIubGRzb2NhY2hlIikpKTsKICAKLSAvKiBMaXN0IG9mIGF1ZGl0aW5nIERTT3MuICAqLwotIHN0YXRpYyBzdHJ1Y3QgYXVkaXRfbGlzdAotQEAgLTg1NCwxMiArODU1LDEyIEBAIG9mIHRoaXMgaGVscGVyIHByb2dyYW07IGNoYW5jZXMgYXJlIHlvdSBkaWQgbm90IGludGVuZCB0byBydW4gdGhpcyBwcm9ncmFtLlxuXAorIC8qIExEX0FVRElUIHZhcmlhYmxlIGNvbnRlbnRzLiAgTXVzdCBiZSBwcm9jZXNzZWQgYmVmb3JlIHRoZQorICAgIGF1ZGl0X2xpc3QgYmVsb3cuICAqLworQEAgLTk5OSwxMiArMTAwMCwxMiBAQCBvZiB0aGlzIGhlbHBlciBwcm9ncmFtOyBjaGFuY2VzIGFyZSB5b3UgZGlkIG5vdCBpbnRlbmQgdG8gcnVuIHRoaXMgcHJvZ3JhbS5cblwKICAgIC0tbGlzdCAgICAgICAgICAgICAgICBsaXN0IGFsbCBkZXBlbmRlbmNpZXMgYW5kIGhvdyB0aGV5IGFyZSByZXNvbHZlZFxuXAogICAgLS12ZXJpZnkgICAgICAgICAgICAgIHZlcmlmeSB0aGF0IGdpdmVuIG9iamVjdCByZWFsbHkgaXMgYSBkeW5hbWljYWxseSBsaW5rZWRcblwKICAJCQlvYmplY3Qgd2UgY2FuIGhhbmRsZVxuXApAQCAtMTA4LDcgKzEwOCw3IEBACiAgICAgICAgKytfZGxfc2tpcF9hcmdzOwogICAgICAgIC0tX2RsX2FyZ2M7CiBkaWZmIC0tZ2l0IGEvaWNvbnYvZ2NvbnZfY29uZi5jIGIvaWNvbnYvZ2NvbnZfY29uZi5jCi1pbmRleCBlMjM1MTg4Li41NjlmNzJlIDEwMDY0NAoraW5kZXggNWFhMDU1ZGU2ZS4uYjlhMTRiOWJkMyAxMDA2NDQKIC0tLSBhL2ljb252L2djb252X2NvbmYuYwogKysrIGIvaWNvbnYvZ2NvbnZfY29uZi5jCiBAQCAtMzYsNyArMzYsNyBAQApAQCAtMTIxLDcgKzEyMSw3IEBACiAgLyogVGhlIHBhdGggZWxlbWVudHMsIGFzIGRldGVybWluZWQgYnkgdGhlIF9fZ2NvbnZfZ2V0X3BhdGggZnVuY3Rpb24uCiAgICAgQWxsIHBhdGggZWxlbWVudHMgZW5kIGluIGEgc2xhc2guICAqLwogZGlmZiAtLWdpdCBhL3N5c2RlcHMvZ2VuZXJpYy9kbC1jYWNoZS5oIGIvc3lzZGVwcy9nZW5lcmljL2RsLWNhY2hlLmgKLWluZGV4IGViMmY5MDAuLjUwNTgwNGUgMTAwNjQ0CitpbmRleCAxZjBiOGY2MjlkLi5hY2JlNjgzOTlkIDEwMDY0NAogLS0tIGEvc3lzZGVwcy9nZW5lcmljL2RsLWNhY2hlLmgKICsrKyBiL3N5c2RlcHMvZ2VuZXJpYy9kbC1jYWNoZS5oCiBAQCAtMjcsMTAgKzI3LDYgQEAKQEAgLTEzNiw1ICsxMzYsNSBAQAogICMgZGVmaW5lIGFkZF9zeXN0ZW1fZGlyKGRpcikgYWRkX2RpciAoZGlyKQogICNlbmRpZgogLS0gCi0yLjEwLjIKKzIuMTMuMgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNC1uYXRpdmVzZGstZ2xpYmMtQWxsb3ctNjQtYml0LWF0b21pY3MtZm9yLXg4Ni5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA0LW5hdGl2ZXNkay1nbGliYy1BbGxvdy02NC1iaXQtYXRvbWljcy1mb3IteDg2LnBhdGNoCmluZGV4IGI5ODFmN2IuLjhkYjQ3YmMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA0LW5hdGl2ZXNkay1nbGliYy1BbGxvdy02NC1iaXQtYXRvbWljcy1mb3IteDg2LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA0LW5hdGl2ZXNkay1nbGliYy1BbGxvdy02NC1iaXQtYXRvbWljcy1mb3IteDg2LnBhdGNoCkBAIC0xLDEyICsxLDE0IEBACi1Gcm9tIDBiOTVmMzQyMDdmZmVkM2FhNTNmYTk0OTY2MmJmYmNjYzdjODY0YTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDhmZTFiNTYxODBjMzBkMjM3Y2MyYWI5YTVhOWM5N2EwMzExZjQxZGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogVGh1LCAzMSBEZWMgMjAxNSAxNDozNTozNSAtMDgwMAotU3ViamVjdDogW1BBVENIIDA0LzI2XSBuYXRpdmVzZGstZ2xpYmM6IEFsbG93IDY0IGJpdCBhdG9taWNzIGZvciB4ODYKK1N1YmplY3Q6IFtQQVRDSCAwNC8yNV0gbmF0aXZlc2RrLWdsaWJjOiBBbGxvdyA2NCBiaXQgYXRvbWljcyBmb3IgeDg2CiAKIFRoZSBmaXggY29uc2lzdCBvZiBhbGxvd2luZyA2NGJpdCBhdG9taWMgb3BzIGZvciB4ODYuCiBUaGlzIHNob3VsZCBiZSBzYWZlIGZvciBpNTg2IGFuZCBuZXdlciBDUFVzLgogSXQgYWxzbyBtYWtlcyB0aGUgc3luY2hyb25pemF0aW9uIG1vcmUgZWZmaWNpZW50LgogCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FLVNwZWNpZmljXQorCiBTaWduZWQtb2ZmLWJ5OiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgogU2lnbmVkLW9mZi1ieTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgpAQCAtMTUsNyArMTcsNyBAQAogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy9pMzg2L2F0b21pYy1tYWNoaW5lLmggYi9zeXNkZXBzL2kzODYvYXRvbWljLW1hY2hpbmUuaAotaW5kZXggY2U2MmIzMy4uNGZlNDRlYSAxMDA2NDQKK2luZGV4IDBlMjQyMDA2MTcuLjE1MzJmNTJkZWMgMTAwNjQ0CiAtLS0gYS9zeXNkZXBzL2kzODYvYXRvbWljLW1hY2hpbmUuaAogKysrIGIvc3lzZGVwcy9pMzg2L2F0b21pYy1tYWNoaW5lLmgKIEBAIC01NCw3ICs1NCw3IEBAIHR5cGVkZWYgdWludG1heF90IHVhdG9taWNfbWF4X3Q7CkBAIC0yNSw4ICsyNyw4IEBACiAtI2RlZmluZSBfX0hBVkVfNjRCX0FUT01JQ1MgMAogKyNkZWZpbmUgX19IQVZFXzY0Ql9BVE9NSUNTIDEKICAjZGVmaW5lIFVTRV9BVE9NSUNfQ09NUElMRVJfQlVJTFRJTlMgMAotIAorICNkZWZpbmUgQVRPTUlDX0VYQ0hBTkdFX1VTRVNfQ0FTIDAKICAKIC0tIAotMi4xMC4yCisyLjEzLjIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDUtZnNsLWU1MDAtZTU1MDAtZTY1MDAtNjAzZS1mc3FydC1pbXBsZW1lbnRhdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA1LWZzbC1lNTAwLWU1NTAwLWU2NTAwLTYwM2UtZnNxcnQtaW1wbGVtZW50YXRpb24ucGF0Y2gKaW5kZXggZWU1MDAwMC4uOTU2YjJhYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDUtZnNsLWU1MDAtZTU1MDAtZTY1MDAtNjAzZS1mc3FydC1pbXBsZW1lbnRhdGlvbi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNS1mc2wtZTUwMC1lNTUwMC1lNjUwMC02MDNlLWZzcXJ0LWltcGxlbWVudGF0aW9uLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA3N2E3NDk1Mzc2YzdkMGM1NTA3YzBlYzk5YmYxNTY4MTUwMzM5ZWY0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBiOWVkY2M4NDU2NDE5NTZiNzI4NmM2MGM4MzNmMDVhOWY3MGNmYWI5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MDE6NTAgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwNS8yNl0gZnNsIGU1MDAvZTU1MDAvZTY1MDAvNjAzZSBmc3FydCBpbXBsZW1lbnRhdGlvbgorU3ViamVjdDogW1BBVENIIDA1LzI1XSBmc2wgZTUwMC9lNTUwMC9lNjUwMC82MDNlIGZzcXJ0IGltcGxlbWVudGF0aW9uCiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogU2lnbmVkLW9mZi1ieTogRWRtYXIgV2llbnNrb3NraSA8ZWRtYXJAZnJlZXNjYWxlLmNvbT4KQEAgLTQ5LDcgKzQ5LDcgQEAKIAogZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNzFlNTE2ZAoraW5kZXggMDAwMDAwMDAwMC4uNzFlNTE2ZDFjOAogLS0tIC9kZXYvbnVsbAogKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYwogQEAgLTAsMCArMSwxMzQgQEAKQEAgLTE4OSw3ICsxODksNyBAQAogK30KIGRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMjZmYTA2NworaW5kZXggMDAwMDAwMDAwMC4uMjZmYTA2N2FiZgogLS0tIC9kZXYvbnVsbAogKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMKIEBAIC0wLDAgKzEsMTAxIEBACkBAIC0yOTYsNyArMjk2LDcgQEAKICt9CiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNzFlNTE2ZAoraW5kZXggMDAwMDAwMDAwMC4uNzFlNTE2ZDFjOAogLS0tIC9kZXYvbnVsbAogKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jCiBAQCAtMCwwICsxLDEzNCBAQApAQCAtNDM2LDcgKzQzNiw3IEBACiArfQogZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMjZmYTA2NworaW5kZXggMDAwMDAwMDAwMC4uMjZmYTA2N2FiZgogLS0tIC9kZXYvbnVsbAogKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYwogQEAgLTAsMCArMSwxMDEgQEAKQEAgLTU0Myw3ICs1NDMsNyBAQAogK30KIGRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNzFlNTE2ZAoraW5kZXggMDAwMDAwMDAwMC4uNzFlNTE2ZDFjOAogLS0tIC9kZXYvbnVsbAogKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMKIEBAIC0wLDAgKzEsMTM0IEBACkBAIC02ODMsNyArNjgzLDcgQEAKICt9CiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMjZmYTA2NworaW5kZXggMDAwMDAwMDAwMC4uMjZmYTA2N2FiZgogLS0tIC9kZXYvbnVsbAogKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jCiBAQCAtMCwwICsxLDEwMSBAQApAQCAtNzkwLDcgKzc5MCw3IEBACiArfQogZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi43MWU1MTZkCitpbmRleCAwMDAwMDAwMDAwLi43MWU1MTZkMWM4CiAtLS0gL2Rldi9udWxsCiArKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYwogQEAgLTAsMCArMSwxMzQgQEAKQEAgLTkzMCw3ICs5MzAsNyBAQAogK30KIGRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4yNmZhMDY3CitpbmRleCAwMDAwMDAwMDAwLi4yNmZhMDY3YWJmCiAtLS0gL2Rldi9udWxsCiArKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKIEBAIC0wLDAgKzEsMTAxIEBACkBAIC0xMDM3LDcgKzEwMzcsNyBAQAogK30KIGRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNzFlNTE2ZAoraW5kZXggMDAwMDAwMDAwMC4uNzFlNTE2ZDFjOAogLS0tIC9kZXYvbnVsbAogKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMKIEBAIC0wLDAgKzEsMTM0IEBACkBAIC0xMTc3LDcgKzExNzcsNyBAQAogK30KIGRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4yNmZhMDY3CitpbmRleCAwMDAwMDAwMDAwLi4yNmZhMDY3YWJmCiAtLS0gL2Rldi9udWxsCiArKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMKIEBAIC0wLDAgKzEsMTAxIEBACkBAIC0xMjg0LDcgKzEyODQsNyBAQAogK30KIGRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNzFlNTE2ZAoraW5kZXggMDAwMDAwMDAwMC4uNzFlNTE2ZDFjOAogLS0tIC9kZXYvbnVsbAogKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMKIEBAIC0wLDAgKzEsMTM0IEBACkBAIC0xNDI0LDcgKzE0MjQsNyBAQAogK30KIGRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4yNmZhMDY3CitpbmRleCAwMDAwMDAwMDAwLi4yNmZhMDY3YWJmCiAtLS0gL2Rldi9udWxsCiArKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMKIEBAIC0wLDAgKzEsMTAxIEBACkBAIC0xNTMxLDE0ICsxNTMxLDE0IEBACiArfQogZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L0ltcGxpZXMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9JbXBsaWVzCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYjEwM2I0ZAoraW5kZXggMDAwMDAwMDAwMC4uYjEwM2I0ZGVhNQogLS0tIC9kZXYvbnVsbAogKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvSW1wbGllcwogQEAgLTAsMCArMSBAQAogK3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1CiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTMwMGMzL2ZwdS9JbXBsaWVzIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTMwMGMzL2ZwdS9JbXBsaWVzCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNjRkYjE3ZgoraW5kZXggMDAwMDAwMDAwMC4uNjRkYjE3ZmFkYQogLS0tIC9kZXYvbnVsbAogKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTMwMGMzL2ZwdS9JbXBsaWVzCiBAQCAtMCwwICsxLDIgQEAKQEAgLTE1NDYsMzkgKzE1NDYsMzkgQEAKICtwb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdQogZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvSW1wbGllcyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvSW1wbGllcwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjdlYWM1ZmMKK2luZGV4IDAwMDAwMDAwMDAuLjdlYWM1ZmNmMDIKIC0tLSAvZGV2L251bGwKICsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvSW1wbGllcwogQEAgLTAsMCArMSBAQAogK3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUKIGRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvSW1wbGllcyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9JbXBsaWVzCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMjY0YjJhNworaW5kZXggMDAwMDAwMDAwMC4uMjY0YjJhNzcwMAogLS0tIC9kZXYvbnVsbAogKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L0ltcGxpZXMKIEBAIC0wLDAgKzEgQEAKICtwb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUKIGRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvSW1wbGllcyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9JbXBsaWVzCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYTI1OTM0NAoraW5kZXggMDAwMDAwMDAwMC4uYTI1OTM0NDY3YgogLS0tIC9kZXYvbnVsbAogKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L0ltcGxpZXMKIEBAIC0wLDAgKzEgQEAKICtwb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUKIGRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvSW1wbGllcyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9JbXBsaWVzCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYTdiYzg1NAoraW5kZXggMDAwMDAwMDAwMC4uYTdiYzg1NGJlOAogLS0tIC9kZXYvbnVsbAogKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L0ltcGxpZXMKIEBAIC0wLDAgKzEgQEAKICtwb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUKIGRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvSW1wbGllcyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9JbXBsaWVzCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMDRmZjhjYworaW5kZXggMDAwMDAwMDAwMC4uMDRmZjhjYzE4MQogLS0tIC9kZXYvbnVsbAogKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L0ltcGxpZXMKIEBAIC0wLDAgKzEgQEAKICtwb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUKIC0tIAotMi4xMC4yCisyLjEzLjIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDYtcmVhZGxpYi1BZGQtT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTLXRvLWtub3duLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA2LXJlYWRsaWItQWRkLU9FQ09SRV9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUy10by1rbm93bi0ucGF0Y2gKaW5kZXggOTA4OGQyOS4uYzc0ZmVhZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDYtcmVhZGxpYi1BZGQtT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTLXRvLWtub3duLS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNi1yZWFkbGliLUFkZC1PRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMtdG8ta25vd24tLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA1MjBjYjllNzQ2YWY2MzdjZjAxZmVhMzg1YjdmNGVlNGFhZGJkZmRkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAzMjQyMDI0ODhhMWMyNDM5YmUzNDU3NDU3MjJmNWNiMDRjMGUwODQ3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MTE6MjIgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwNi8yNl0gcmVhZGxpYjogQWRkIE9FQ09SRV9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUyB0byBrbm93bgorU3ViamVjdDogW1BBVENIIDA2LzI1XSByZWFkbGliOiBBZGQgT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTIHRvIGtub3duCiAgbmFtZXMKIAogVGhpcyBib2x0cyBpbiBhIGhvb2sgZm9yIE9FIHRvIHBhc3MgaXRzIG93biB2ZXJzaW9uIG9mIGludGVycHJldGVyCkBAIC0xNyw3ICsxNyw3IEBACiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCiAKIGRpZmYgLS1naXQgYS9lbGYvcmVhZGxpYi5jIGIvZWxmL3JlYWRsaWIuYwotaW5kZXggOGE2NmZmZS4uMDhkNTZmYyAxMDA2NDQKK2luZGV4IGQyNzhhMTg5YjIuLmE4NGNiODUxNTggMTAwNjQ0CiAtLS0gYS9lbGYvcmVhZGxpYi5jCiArKysgYi9lbGYvcmVhZGxpYi5jCiBAQCAtNTEsNiArNTEsNyBAQCBzdGF0aWMgc3RydWN0IGtub3duX25hbWVzIGludGVycHJldGVyc1tdID0KQEAgLTI5LDUgKzI5LDUgQEAKICAKICBzdGF0aWMgc3RydWN0IGtub3duX25hbWVzIGtub3duX2xpYnNbXSA9CiAtLSAKLTIuMTAuMgorMi4xMy4yCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA3LXBwYy1zcXJ0LUZpeC11bmRlZmluZWQtcmVmZXJlbmNlLXRvLV9fc3FydF9maW5pdGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNy1wcGMtc3FydC1GaXgtdW5kZWZpbmVkLXJlZmVyZW5jZS10by1fX3NxcnRfZmluaXRlLnBhdGNoCmluZGV4IGYzM2RlZmUuLmI2NDMyNzYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA3LXBwYy1zcXJ0LUZpeC11bmRlZmluZWQtcmVmZXJlbmNlLXRvLV9fc3FydF9maW5pdGUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDctcHBjLXNxcnQtRml4LXVuZGVmaW5lZC1yZWZlcmVuY2UtdG8tX19zcXJ0X2Zpbml0ZS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gNjQxMzAyNjI3ODdkNTRlMmU2Njk1YWU0ZWQ4NzgzYmZlYzE0ZmZlZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gY2YwMGJmOWRlODEyODE3MWU3OWEwMTlkZTgwOWUzNWYzYWVlZDI4MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjE1OjA3ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDcvMjZdIHBwYy9zcXJ0OiBGaXggdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX19zcXJ0X2Zpbml0ZScKK1N1YmplY3Q6IFtQQVRDSCAwNy8yNV0gcHBjL3NxcnQ6IEZpeCB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfX3NxcnRfZmluaXRlJwogCiBvbiBwcGMgZml4ZXMgdGhlIGVycm9ycyBsaWtlIGJlbG93CiB8IC4vLmxpYnMvbGlicHVsc2Vjb3JlLTEuMS5zbzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX19zcXJ0X2Zpbml0ZScKQEAgLTM2LDcgKzM2LDcgQEAKICAxMiBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jCi1pbmRleCA3MWU1MTZkLi4xNzk1ZmQ2IDEwMDY0NAoraW5kZXggNzFlNTE2ZDFjOC4uMTc5NWZkNmMzZSAxMDA2NDQKIC0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMKICsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMKIEBAIC0zOSwxNCArMzksOCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKQEAgLTYwLDcgKzYwLDcgQEAKICB9CiArc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKIGRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jCi1pbmRleCAyNmZhMDY3Li5hOTE3ZjMxIDEwMDY0NAoraW5kZXggMjZmYTA2N2FiZi4uYTkxN2YzMTNhYiAxMDA2NDQKIC0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jCiArKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYwogQEAgLTM3LDE0ICszNyw4IEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7CkBAIC04NCw3ICs4NCw3IEBACiAgfQogK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKIGRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMKLWluZGV4IDcxZTUxNmQuLmZjNGE3NDkgMTAwNjQ0CitpbmRleCA3MWU1MTZkMWM4Li5mYzRhNzQ5OTBlIDEwMDY0NAogLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jCiArKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMKIEBAIC0xMzIsMyArMTMyLDQgQEAgX19pZWVlNzU0X3NxcnQgKGIpCkBAIC05Myw3ICs5Myw3IEBACiAgfQogK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMKLWluZGV4IDI2ZmEwNjcuLjlkMTc1MTIgMTAwNjQ0CitpbmRleCAyNmZhMDY3YWJmLi45ZDE3NTEyMmE4IDEwMDY0NAogLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYwogKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYwogQEAgLTk5LDMgKzk5LDQgQEAgX19pZWVlNzU0X3NxcnRmIChiKQpAQCAtMTAyLDcgKzEwMiw3IEBACiAgfQogK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKIGRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jCi1pbmRleCA3MWU1MTZkLi5mYzRhNzQ5IDEwMDY0NAoraW5kZXggNzFlNTE2ZDFjOC4uZmM0YTc0OTkwZSAxMDA2NDQKIC0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jCiArKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYwogQEAgLTEzMiwzICsxMzIsNCBAQCBfX2llZWU3NTRfc3FydCAoYikKQEAgLTExMSw3ICsxMTEsNyBAQAogIH0KICtzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQogZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYwotaW5kZXggMjZmYTA2Ny4uOWQxNzUxMiAxMDA2NDQKK2luZGV4IDI2ZmEwNjdhYmYuLjlkMTc1MTIyYTggMTAwNjQ0CiAtLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMKICsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYwogQEAgLTk5LDMgKzk5LDQgQEAgX19pZWVlNzU0X3NxcnRmIChiKQpAQCAtMTIwLDcgKzEyMCw3IEBACiAgfQogK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKIGRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCi1pbmRleCA3MWU1MTZkLi5mYzRhNzQ5IDEwMDY0NAoraW5kZXggNzFlNTE2ZDFjOC4uZmM0YTc0OTkwZSAxMDA2NDQKIC0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCiArKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYwogQEAgLTEzMiwzICsxMzIsNCBAQCBfX2llZWU3NTRfc3FydCAoYikKQEAgLTEyOSw3ICsxMjksNyBAQAogIH0KICtzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQogZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYwotaW5kZXggMjZmYTA2Ny4uOWQxNzUxMiAxMDA2NDQKK2luZGV4IDI2ZmEwNjdhYmYuLjlkMTc1MTIyYTggMTAwNjQ0CiAtLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKICsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYwogQEAgLTk5LDMgKzk5LDQgQEAgX19pZWVlNzU0X3NxcnRmIChiKQpAQCAtMTM4LDcgKzEzOCw3IEBACiAgfQogK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKIGRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCi1pbmRleCA3MWU1MTZkLi4xNzk1ZmQ2IDEwMDY0NAoraW5kZXggNzFlNTE2ZDFjOC4uMTc5NWZkNmMzZSAxMDA2NDQKIC0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCiArKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYwogQEAgLTM5LDE0ICszOSw4IEBAIHN0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OwpAQCAtMTYyLDcgKzE2Miw3IEBACiAgfQogK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jCi1pbmRleCAyNmZhMDY3Li5hOTE3ZjMxIDEwMDY0NAoraW5kZXggMjZmYTA2N2FiZi4uYTkxN2YzMTNhYiAxMDA2NDQKIC0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYwogKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jCiBAQCAtMzcsMTQgKzM3LDggQEAgc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKQEAgLTE4Niw3ICsxODYsNyBAQAogIH0KICtzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYwotaW5kZXggNzFlNTE2ZC4uZmM0YTc0OSAxMDA2NDQKK2luZGV4IDcxZTUxNmQxYzguLmZjNGE3NDk5MGUgMTAwNjQ0CiAtLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYwogKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMKIEBAIC0xMzIsMyArMTMyLDQgQEAgX19pZWVlNzU0X3NxcnQgKGIpCkBAIC0xOTUsNyArMTk1LDcgQEAKICB9CiArc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKIGRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMKLWluZGV4IDI2ZmEwNjcuLjlkMTc1MTIgMTAwNjQ0CitpbmRleCAyNmZhMDY3YWJmLi45ZDE3NTEyMmE4IDEwMDY0NAogLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jCiArKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMKIEBAIC05OSwzICs5OSw0IEBAIF9faWVlZTc1NF9zcXJ0ZiAoYikKQEAgLTIwNCw1ICsyMDQsNSBAQAogIH0KICtzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCiAtLSAKLTIuMTAuMgorMi4xMy4yCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA4LV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwOC1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoCmluZGV4IDI2ZjY1YzUuLjNhZWVjNTIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA4LV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDgtX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gNWFmYjAxNDdlM2U0OWMzYjQ3NDQwNDUyNDAxNGVmZTUxYjJiY2E1YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYmFiZTMxMWRlY2E5ZWUyNzMwMjc4ZjEzYjA2MWI5MTRiNTI4NmRjMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjE2OjM4ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDgvMjZdIF9faWVlZTc1NF9zcXJ0eyxmfSBhcmUgbm93IGlubGluZSBmdW5jdGlvbnMgYW5kIGNhbGwKK1N1YmplY3Q6IFtQQVRDSCAwOC8yNV0gX19pZWVlNzU0X3NxcnR7LGZ9IGFyZSBub3cgaW5saW5lIGZ1bmN0aW9ucyBhbmQgY2FsbAogIG91dCBfX3Nsb3cgdmVyc2lvbnMKIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCkBAIC0yMyw3ICsyMyw3IEBACiAgMTIgZmlsZXMgY2hhbmdlZCwgMTE0IGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMKLWluZGV4IDE3OTVmZDYuLmRhYTgzZjMgMTAwNjQ0CitpbmRleCAxNzk1ZmQ2YzNlLi5kYWE4M2YzZmU4IDEwMDY0NAogLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYwogKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYwogQEAgLTQwLDcgKzQwLDcgQEAgc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7CkBAIC01OCw3ICs1OCw3IEBACiArCiAgc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKIGRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jCi1pbmRleCBhOTE3ZjMxLi5iODEyY2YxIDEwMDY0NAoraW5kZXggYTkxN2YzMTNhYi4uYjgxMmNmMTcwNSAxMDA2NDQKIC0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jCiArKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYwogQEAgLTM4LDcgKzM4LDcgQEAgc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKQEAgLTgyLDcgKzgyLDcgQEAKICt9CiAgc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQogZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYwotaW5kZXggZmM0YTc0OS4uNzAzOGE3MCAxMDA2NDQKK2luZGV4IGZjNGE3NDk5MGUuLjcwMzhhNzBiNDcgMTAwNjQ0CiAtLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMKICsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYwogQEAgLTQxLDEwICs0MSwxMCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKQEAgLTEyMSw3ICsxMjEsNyBAQAogKwogIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMKLWluZGV4IDlkMTc1MTIuLjEwZGUxZjAgMTAwNjQ0CitpbmRleCA5ZDE3NTEyMmE4Li4xMGRlMWYwY2MzIDEwMDY0NAogLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYwogKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYwogQEAgLTM5LDEwICszOSwxMCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OwpAQCAtMTUxLDcgKzE1MSw3IEBACiArCiAgc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQogZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMKLWluZGV4IGZjNGE3NDkuLjcwMzhhNzAgMTAwNjQ0CitpbmRleCBmYzRhNzQ5OTBlLi43MDM4YTcwYjQ3IDEwMDY0NAogLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMKICsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jCiBAQCAtNDEsMTAgKzQxLDEwIEBAIHN0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OwpAQCAtMTkwLDcgKzE5MCw3IEBACiArCiAgc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKIGRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMKLWluZGV4IDlkMTc1MTIuLjEwZGUxZjAgMTAwNjQ0CitpbmRleCA5ZDE3NTEyMmE4Li4xMGRlMWYwY2MzIDEwMDY0NAogLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jCiArKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMKIEBAIC0zOSwxMCArMzksMTAgQEAgc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKQEAgLTIyMCw3ICsyMjAsNyBAQAogKwogIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKIGRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCi1pbmRleCBmYzRhNzQ5Li4xYzM0MjQ0IDEwMDY0NAoraW5kZXggZmM0YTc0OTkwZS4uMWMzNDI0NGJkOCAxMDA2NDQKIC0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCiArKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYwogQEAgLTEzMiw0ICsxMzIsMTIgQEAgX19pZWVlNzU0X3NxcnQgKGIpCkBAIC0yMzcsNyArMjM3LDcgQEAKICsKICBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQogZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYwotaW5kZXggOWQxNzUxMi4uODEyNjUzNSAxMDA2NDQKK2luZGV4IDlkMTc1MTIyYTguLjgxMjY1MzU1OGYgMTAwNjQ0CiAtLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKICsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYwogQEAgLTk5LDQgKzk5LDEyIEBAIF9faWVlZTc1NF9zcXJ0ZiAoYikKQEAgLTI1NCw3ICsyNTQsNyBAQAogKwogIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKIGRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCi1pbmRleCAxNzk1ZmQ2Li4xM2E4MTk3IDEwMDY0NAoraW5kZXggMTc5NWZkNmMzZS4uMTNhODE5NzNlMyAxMDA2NDQKIC0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCiArKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYwogQEAgLTQwLDcgKzQwLDcgQEAgc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7CkBAIC0yODksNyArMjg5LDcgQEAKICsKICBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQogZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYwotaW5kZXggYTkxN2YzMS4uZmFlMmQ4MSAxMDA2NDQKK2luZGV4IGE5MTdmMzEzYWIuLmZhZTJkODEyMTAgMTAwNjQ0CiAtLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMKICsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYwogQEAgLTM4LDcgKzM4LDcgQEAgc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKQEAgLTMxNCw3ICszMTQsNyBAQAogKwogIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKIGRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jCi1pbmRleCBmYzRhNzQ5Li43MDM4YTcwIDEwMDY0NAoraW5kZXggZmM0YTc0OTkwZS4uNzAzOGE3MGI0NyAxMDA2NDQKIC0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jCiArKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYwogQEAgLTQxLDEwICs0MSwxMCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKQEAgLTM1Myw3ICszNTMsNyBAQAogKwogIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jCi1pbmRleCA5ZDE3NTEyLi4xMGRlMWYwIDEwMDY0NAoraW5kZXggOWQxNzUxMjJhOC4uMTBkZTFmMGNjMyAxMDA2NDQKIC0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYwogKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jCiBAQCAtMzksMTAgKzM5LDEwIEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7CkBAIC0zODMsNSArMzgzLDUgQEAKICsKICBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCiAtLSAKLTIuMTAuMgorMi4xMy4yCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA5LVF1b3RlLWZyb20tYnVnLTE0NDMtd2hpY2gtZXhwbGFpbnMtd2hhdC10aGUtcGF0Y2gtZG8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwOS1RdW90ZS1mcm9tLWJ1Zy0xNDQzLXdoaWNoLWV4cGxhaW5zLXdoYXQtdGhlLXBhdGNoLWRvLnBhdGNoCmluZGV4IGQ0MTZhY2QuLjdkNWMyZTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA5LVF1b3RlLWZyb20tYnVnLTE0NDMtd2hpY2gtZXhwbGFpbnMtd2hhdC10aGUtcGF0Y2gtZG8ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDktUXVvdGUtZnJvbS1idWctMTQ0My13aGljaC1leHBsYWlucy13aGF0LXRoZS1wYXRjaC1kby5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gZGRkNTFiYjRlMDA1NDMyY2IzYzBmOGYzMzgyMjk1NDQwOGE5ZmVlMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gOTNiNWQ2YmVkMTk5MzkwMzkwMzFjNDViNzc3ZDI5NjE5ZGIwNjE4NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjIwOjA5ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDkvMjZdIFF1b3RlIGZyb20gYnVnIDE0NDMgd2hpY2ggZXhwbGFpbnMgd2hhdCB0aGUgcGF0Y2ggZG9lcworU3ViamVjdDogW1BBVENIIDA5LzI1XSBRdW90ZSBmcm9tIGJ1ZyAxNDQzIHdoaWNoIGV4cGxhaW5zIHdoYXQgdGhlIHBhdGNoIGRvZXMKICA6CiAKICAgV2UgYnVpbGQgc29tZSByYW5kb20gcHJvZ3JhbSBhbmQgbGluayBpdCB3aXRoIC1sdXN0LiAgV2hlbiB3ZSBydW4gaXQsCkBAIC00NSwxMCArNDUsMTAgQEAKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL3N5c2RlcHMvYXJtL2RsLW1hY2hpbmUuaCBiL3N5c2RlcHMvYXJtL2RsLW1hY2hpbmUuaAotaW5kZXggNjBlZWUwMC4uN2Q1NGQ1ZSAxMDA2NDQKK2luZGV4IDcwNTNlYWQxNmUuLjBiMWUxNzE2YjAgMTAwNjQ0CiAtLS0gYS9zeXNkZXBzL2FybS9kbC1tYWNoaW5lLmgKICsrKyBiL3N5c2RlcHMvYXJtL2RsLW1hY2hpbmUuaAotQEAgLTQ5OSw3ICs0OTksNyBAQCBlbGZfbWFjaGluZV9yZWwgKHN0cnVjdCBsaW5rX21hcCAqbWFwLCBjb25zdCBFbGYzMl9SZWwgKnJlbG9jLAorQEAgLTUwMCw3ICs1MDAsNyBAQCBlbGZfbWFjaGluZV9yZWwgKHN0cnVjdCBsaW5rX21hcCAqbWFwLCBjb25zdCBFbGYzMl9SZWwgKnJlbG9jLAogIAogIAljYXNlIFJfQVJNX1RMU19EVFBPRkYzMjoKICAJICBpZiAoc3ltICE9IE5VTEwpCkBAIC01OCw1ICs1OCw1IEBACiAgCiAgCWNhc2UgUl9BUk1fVExTX1RQT0ZGMzI6CiAtLSAKLTIuMTAuMgorMi4xMy4yCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEwLWVnbGliYy1ydW4tbGlibS1lcnItdGFiLnBsLXdpdGgtc3BlY2lmaWMtZGlycy1pbi1TLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTAtZWdsaWJjLXJ1bi1saWJtLWVyci10YWIucGwtd2l0aC1zcGVjaWZpYy1kaXJzLWluLVMucGF0Y2gKaW5kZXggMjc2ZjFmYS4uNzI3NWMzZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTAtZWdsaWJjLXJ1bi1saWJtLWVyci10YWIucGwtd2l0aC1zcGVjaWZpYy1kaXJzLWluLVMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTAtZWdsaWJjLXJ1bi1saWJtLWVyci10YWIucGwtd2l0aC1zcGVjaWZpYy1kaXJzLWluLVMucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIGQ3ZTc0NjcwODI1MzMwZjU0MjFhNTVmNWFhMmExY2U2ZmRhN2Q3ZmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDFhNmUwZjRlZTg1ODRiMDQyMjYxNTZkZjFhM2RlM2U0NjdmMGVmNmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBUaW5nIExpdSA8YjI4NDk1QGZyZWVzY2FsZS5jb20+CiBEYXRlOiBXZWQsIDE5IERlYyAyMDEyIDA0OjM5OjU3IC0wNjAwCi1TdWJqZWN0OiBbUEFUQ0ggMTAvMjZdIGVnbGliYzogcnVuIGxpYm0tZXJyLXRhYi5wbCB3aXRoIHNwZWNpZmljIGRpcnMgaW4gJHtTfQorU3ViamVjdDogW1BBVENIIDEwLzI1XSBlZ2xpYmM6IHJ1biBsaWJtLWVyci10YWIucGwgd2l0aCBzcGVjaWZpYyBkaXJzIGluICR7U30KIAogbGlibS1lcnItdGFiLnBsIHdpbGwgcGFyc2UgYWxsIHRoZSBmaWxlcyBuYW1lZCAibGlibS10ZXN0LXVscHMiCiBpbiB0aGUgZ2l2ZW4gZGlyIHJlY3Vyc2l2ZWx5LiBUbyBhdm9pZCBwYXJzaW5nIHRoZSBvbmUgaW4KQEAgLTE4LDcgKzE4LDcgQEAKICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9tYW51YWwvTWFrZWZpbGUgYi9tYW51YWwvTWFrZWZpbGUKLWluZGV4IGYyZjY5NGYuLmUwNjI4MzMgMTAwNjQ0CitpbmRleCA0ZWQ2M2E4ZWYzLi5lODk5MTllYjE5IDEwMDY0NAogLS0tIGEvbWFudWFsL01ha2VmaWxlCiArKysgYi9tYW51YWwvTWFrZWZpbGUKIEBAIC0xMDUsNyArMTA1LDggQEAgJChvYmpwZngpbGlibS1lcnIudGV4aTogJChvYmpwZngpc3RhbXAtbGlibS1lcnIKQEAgLTMyLDUgKzMyLDUgQEAKICAJdG91Y2ggJEAKICAKIC0tIAotMi4xMC4yCisyLjEzLjIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTEtX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDExLV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2gKaW5kZXggMDk2ZGFiNS4uODRmMmNhNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTEtX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMS1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSBkNmUyMDc2NTcxMjYzZTQ1YzQ4ODg5ODk2ZDNkOTRmZjU3NmRmMmJlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA5YjJhZjZjYmY2OGQzMzUzZDcyNTE5ZTdmNmM0NmJlY2I3YmQxZDBmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MjQ6NDYgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxMS8yNl0gX19pZWVlNzU0X3NxcnR7LGZ9IGFyZSBub3cgaW5saW5lIGZ1bmN0aW9ucyBhbmQgY2FsbAorU3ViamVjdDogW1BBVENIIDExLzI1XSBfX2llZWU3NTRfc3FydHssZn0gYXJlIG5vdyBpbmxpbmUgZnVuY3Rpb25zIGFuZCBjYWxsCiAgb3V0IF9fc2xvdyB2ZXJzaW9ucwogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKQEAgLTE0LDcgKzE0LDcgQEAKICAyIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKLWluZGV4IDFjMzQyNDQuLjcwMzhhNzAgMTAwNjQ0CitpbmRleCAxYzM0MjQ0YmQ4Li43MDM4YTcwYjQ3IDEwMDY0NAogLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKICsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCiBAQCAtNDEsMTAgKzQxLDEwIEBAIHN0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OwpAQCAtNDAsNyArNDAsNyBAQAogICNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiBkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCi1pbmRleCA4MTI2NTM1Li4xMGRlMWYwIDEwMDY0NAoraW5kZXggODEyNjUzNTU4Zi4uMTBkZTFmMGNjMyAxMDA2NDQKIC0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYwogKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCiBAQCAtMzksMTAgKzM5LDEwIEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7CkBAIC01Nyw1ICs1Nyw1IEBACiAgI2VuZGlmCiAgewogLS0gCi0yLjEwLjIKKzIuMTMuMgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMi1NYWtlLWxkLXZlcnNpb24tb3V0cHV0LW1hdGNoaW5nLWdyb2stZ29sZC1zLW91dHB1dC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEyLU1ha2UtbGQtdmVyc2lvbi1vdXRwdXQtbWF0Y2hpbmctZ3Jvay1nb2xkLXMtb3V0cHV0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NzI4YzYxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEyLU1ha2UtbGQtdmVyc2lvbi1vdXRwdXQtbWF0Y2hpbmctZ3Jvay1nb2xkLXMtb3V0cHV0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotRnJvbSBjMDk3NGM3NDZlMDI2NjUwYmVmNWQxOTQwZWIzZjUxOTc2NWM3N2FmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MjU6NDUgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxMi8yNl0gTWFrZSBsZCAtLXZlcnNpb24gb3V0cHV0IG1hdGNoaW5nIGdyb2sgZ29sZCdzIG91dHB1dAotCi1hZGFwdGVkIGZyb20gZnJvbSB1cHN0cmVhbSBicmFuY2ggcm9sYW5kL2dvbGQtdnMtbGliYwotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBjb25maWd1cmUgICAgfCAyICstCi0gY29uZmlndXJlLmFjIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCi1pbmRleCA1Y2YzMjMwLi4zOTFmMjlkIDEwMDc1NQotLS0tIGEvY29uZmlndXJlCi0rKysgYi9jb25maWd1cmUKLUBAIC00NTU1LDcgKzQ1NTUsNyBAQCBlbHNlCi0gICAjIEZvdW5kIGl0LCBub3cgY2hlY2sgdGhlIHZlcnNpb24uCi0gICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHZlcnNpb24gb2YgJExEIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyB2ZXJzaW9uIG9mICRMRC4uLiAiID4mNjsgfQotLSAgYWNfcHJvZ192ZXJzaW9uPWAkTEQgLS12ZXJzaW9uIDI+JjEgfCBzZWQgLW4gJ3MvXi4qR05VIGxkLiogXChbMC05XVswLTldKlwuWzAtOS5dKlwpLiokL1wxL3AnYAotKyAgYWNfcHJvZ192ZXJzaW9uPWAkTEQgLS12ZXJzaW9uIDI+JjEgfCBzZWQgLW4gJ3MvXi4qR05VIFtCYmludXRpbHNkXVteLl0qIFwoWzAtOV1bMC05XSpcLlswLTkuXSpcKS4qJC9cMS9wJ2AKLSAgIGNhc2UgJGFjX3Byb2dfdmVyc2lvbiBpbgotICAgICAnJykgYWNfcHJvZ192ZXJzaW9uPSJ2LiA/Lj8/LCBiYWQiOyBhY192ZXJjX2ZhaWw9eWVzOzsKLSAgICAgMi4xWzAtOV1bMC05XSp8Mi4yWzItOV0qfDIuWzMtOV1bMC05XSp8WzMtOV0uKnxbMS05XVswLTldKikKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGQ3MTlmYWQuLjViNTg3N2MgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTk5MCw3ICs5OTAsNyBAQCBBQ19DSEVDS19QUk9HX1ZFUihBUywgJEFTLCAtLXZlcnNpb24sCi0gCQkgIFsyLjFbMC05XVswLTldKnwyLjJbMi05XSp8Mi5bMy05XVswLTldKnxbMy05XS4qfFsxLTldWzAtOV0qXSwKLSAJCSAgQVM9OiBjcml0aWNfbWlzc2luZz0iJGNyaXRpY19taXNzaW5nIGFzIikKLSBBQ19DSEVDS19QUk9HX1ZFUihMRCwgJExELCAtLXZlcnNpb24sCi0tCQkgIFtHTlUgbGQuKiBcKFswLTldWzAtOV0qXC5bMC05Ll0qXCldLAotKwkJICBbR05VIFtCYmludXRpbHNkXVteLl0qIFwoWzAtOV1bMC05XSpcLlswLTkuXSpcKV0sCi0gCQkgIFsyLjFbMC05XVswLTldKnwyLjJbMi05XSp8Mi5bMy05XVswLTldKnxbMy05XS4qfFsxLTldWzAtOV0qXSwKLSAJCSAgTEQ9OiBjcml0aWNfbWlzc2luZz0iJGNyaXRpY19taXNzaW5nIGxkIikKLSAKLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEyLXN5c2RlcHMtZ251LWNvbmZpZ3VyZS5hYy1oYW5kbGUtY29ycmVjdGx5LWxpYmNfY3Zfcm8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMi1zeXNkZXBzLWdudS1jb25maWd1cmUuYWMtaGFuZGxlLWNvcnJlY3RseS1saWJjX2N2X3JvLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiZjZiMjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMi1zeXNkZXBzLWdudS1jb25maWd1cmUuYWMtaGFuZGxlLWNvcnJlY3RseS1saWJjX2N2X3JvLnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK0Zyb20gZmZkM2M1YTA0ZDhmMmYyNmZlYTcxZmVkNGNlNDFlODhiNmY1MTA4NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjI3OjEwICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMTIvMjVdIHN5c2RlcHMvZ251L2NvbmZpZ3VyZS5hYzogaGFuZGxlIGNvcnJlY3RseQorICRsaWJjX2N2X3Jvb3RzYmluZGlyCisKK1Vwc3RyZWFtLVN0YXR1czpQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IE1hdHRoaWV1IENyYXBldCA8TWF0dGhpZXUuQ3JhcGV0QGluZ2VuaWNvLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzeXNkZXBzL2dudS9jb25maWd1cmUgICAgfCAyICstCisgc3lzZGVwcy9nbnUvY29uZmlndXJlLmFjIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9nbnUvY29uZmlndXJlIGIvc3lzZGVwcy9nbnUvY29uZmlndXJlCitpbmRleCA3MTI0M2FkMGM2Li5mNTc4MTg3NTc2IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9nbnUvY29uZmlndXJlCisrKysgYi9zeXNkZXBzL2dudS9jb25maWd1cmUKK0BAIC0zMiw2ICszMiw2IEBAIGNhc2UgIiRwcmVmaXgiIGluCisgICBlbHNlCisgICAgIGxpYmNfY3ZfbG9jYWxzdGF0ZWRpcj0kbG9jYWxzdGF0ZWRpcgorICAgIGZpCistICBsaWJjX2N2X3Jvb3RzYmluZGlyPS9zYmluCisrICB0ZXN0IC1uICIkbGliY19jdl9yb290c2JpbmRpciIgfHwgbGliY19jdl9yb290c2JpbmRpcj0vc2JpbgorICAgOzsKKyBlc2FjCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9nbnUvY29uZmlndXJlLmFjIGIvc3lzZGVwcy9nbnUvY29uZmlndXJlLmFjCitpbmRleCA2MzRmZTRkZTJhLi4zZGIxNjk3ZjRmIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9nbnUvY29uZmlndXJlLmFjCisrKysgYi9zeXNkZXBzL2dudS9jb25maWd1cmUuYWMKK0BAIC0yMSw2ICsyMSw2IEBAIGNhc2UgIiRwcmVmaXgiIGluCisgICBlbHNlCisgICAgIGxpYmNfY3ZfbG9jYWxzdGF0ZWRpcj0kbG9jYWxzdGF0ZWRpcgorICAgIGZpCistICBsaWJjX2N2X3Jvb3RzYmluZGlyPS9zYmluCisrICB0ZXN0IC1uICIkbGliY19jdl9yb290c2JpbmRpciIgfHwgbGliY19jdl9yb290c2JpbmRpcj0vc2JpbgorICAgOzsKKyBlc2FjCistLSAKKzIuMTMuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMy1BZGQtdW51c2VkLWF0dHJpYnV0ZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEzLUFkZC11bnVzZWQtYXR0cmlidXRlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5OWZlNTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMy1BZGQtdW51c2VkLWF0dHJpYnV0ZS5wYXRjaApAQCAtMCwwICsxLDM0IEBACitGcm9tIDA0OWNjZTgyZjM1ZTBkODY0ZDk4MDc1YjgzODg4ZGJiYTRkNjhhZmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoyODo0MSArMDAwMAorU3ViamVjdDogW1BBVENIIDEzLzI1XSBBZGQgdW51c2VkIGF0dHJpYnV0ZQorCitIZWxwcyBpbiBhdm9pZGluZyBnY2Mgd2FybmluZyB3aGVuIGhlYWRlciBpcyBpcyBpbmNsdWRlZCBpbgorYSBzb3VyY2UgZmlsZSB3aGljaCBkb2VzIG5vdCB1c2UgYm90aCBmdW5jdGlvbnMKKworICAgICAgICAqIGljb252L2djb252X2NoYXJzZXQuaCAoc3RyaXApOgorICAgICAgICBBZGQgdW51c2VkIGF0dHJpYnV0ZS4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBpY29udi9nY29udl9jaGFyc2V0LmggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9pY29udi9nY29udl9jaGFyc2V0LmggYi9pY29udi9nY29udl9jaGFyc2V0LmgKK2luZGV4IDE4ZDhiZDZhZTcuLmViNzI5ZGE1ZDMgMTAwNjQ0CistLS0gYS9pY29udi9nY29udl9jaGFyc2V0LmgKKysrKyBiL2ljb252L2djb252X2NoYXJzZXQuaAorQEAgLTIxLDcgKzIxLDcgQEAKKyAjaW5jbHVkZSA8bG9jYWxlLmg+CisgCisgCistc3RhdGljIHZvaWQKKytzdGF0aWMgdm9pZCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkKKyBzdHJpcCAoY2hhciAqd3AsIGNvbnN0IGNoYXIgKnMpCisgeworICAgaW50IHNsYXNoX2NvdW50ID0gMDsKKy0tIAorMi4xMy4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEzLXN5c2RlcHMtZ251LWNvbmZpZ3VyZS5hYy1oYW5kbGUtY29ycmVjdGx5LWxpYmNfY3Zfcm8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMy1zeXNkZXBzLWdudS1jb25maWd1cmUuYWMtaGFuZGxlLWNvcnJlY3RseS1saWJjX2N2X3JvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYzgxYzcyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEzLXN5c2RlcHMtZ251LWNvbmZpZ3VyZS5hYy1oYW5kbGUtY29ycmVjdGx5LWxpYmNfY3Zfcm8ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1Gcm9tIDJhMTJlYWRmZDc5NDBiNmIwOTEzZGU4ZTk1ZDg1MTI1NGNjZTc5NTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoyNzoxMCArMDAwMAotU3ViamVjdDogW1BBVENIIDEzLzI2XSBzeXNkZXBzL2dudS9jb25maWd1cmUuYWM6IGhhbmRsZSBjb3JyZWN0bHkKLSAkbGliY19jdl9yb290c2JpbmRpcgotCi1VcHN0cmVhbS1TdGF0dXM6UGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBNYXR0aGlldSBDcmFwZXQgPE1hdHRoaWV1LkNyYXBldEBpbmdlbmljby5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3lzZGVwcy9nbnUvY29uZmlndXJlICAgIHwgMiArLQotIHN5c2RlcHMvZ251L2NvbmZpZ3VyZS5hYyB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvZ251L2NvbmZpZ3VyZSBiL3N5c2RlcHMvZ251L2NvbmZpZ3VyZQotaW5kZXggNzEyNDNhZC4uZjU3ODE4NyAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvZ251L2NvbmZpZ3VyZQotKysrIGIvc3lzZGVwcy9nbnUvY29uZmlndXJlCi1AQCAtMzIsNiArMzIsNiBAQCBjYXNlICIkcHJlZml4IiBpbgotICAgZWxzZQotICAgICBsaWJjX2N2X2xvY2Fsc3RhdGVkaXI9JGxvY2Fsc3RhdGVkaXIKLSAgICBmaQotLSAgbGliY19jdl9yb290c2JpbmRpcj0vc2JpbgotKyAgdGVzdCAtbiAiJGxpYmNfY3Zfcm9vdHNiaW5kaXIiIHx8IGxpYmNfY3Zfcm9vdHNiaW5kaXI9L3NiaW4KLSAgIDs7Ci0gZXNhYwotZGlmZiAtLWdpdCBhL3N5c2RlcHMvZ251L2NvbmZpZ3VyZS5hYyBiL3N5c2RlcHMvZ251L2NvbmZpZ3VyZS5hYwotaW5kZXggNjM0ZmU0ZC4uM2RiMTY5NyAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvZ251L2NvbmZpZ3VyZS5hYwotKysrIGIvc3lzZGVwcy9nbnUvY29uZmlndXJlLmFjCi1AQCAtMjEsNiArMjEsNiBAQCBjYXNlICIkcHJlZml4IiBpbgotICAgZWxzZQotICAgICBsaWJjX2N2X2xvY2Fsc3RhdGVkaXI9JGxvY2Fsc3RhdGVkaXIKLSAgICBmaQotLSAgbGliY19jdl9yb290c2JpbmRpcj0vc2JpbgotKyAgdGVzdCAtbiAiJGxpYmNfY3Zfcm9vdHNiaW5kaXIiIHx8IGxpYmNfY3Zfcm9vdHNiaW5kaXI9L3NiaW4KLSAgIDs7Ci0gZXNhYwotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTQtQWRkLXVudXNlZC1hdHRyaWJ1dGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNC1BZGQtdW51c2VkLWF0dHJpYnV0ZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjIzZTEwNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNC1BZGQtdW51c2VkLWF0dHJpYnV0ZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLUZyb20gZWM0Zjc3NjNiMzA2MDNiN2JhMGI3MGJkNzc1MGUzNGQ0NDI4MjFiMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjI4OjQxICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTQvMjZdIEFkZCB1bnVzZWQgYXR0cmlidXRlCi0KLUhlbHBzIGluIGF2b2lkaW5nIGdjYyB3YXJuaW5nIHdoZW4gaGVhZGVyIGlzIGlzIGluY2x1ZGVkIGluCi1hIHNvdXJjZSBmaWxlIHdoaWNoIGRvZXMgbm90IHVzZSBib3RoIGZ1bmN0aW9ucwotCi0gICAgICAgICogaWNvbnYvZ2NvbnZfY2hhcnNldC5oIChzdHJpcCk6Ci0gICAgICAgIEFkZCB1bnVzZWQgYXR0cmlidXRlLgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGljb252L2djb252X2NoYXJzZXQuaCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2ljb252L2djb252X2NoYXJzZXQuaCBiL2ljb252L2djb252X2NoYXJzZXQuaAotaW5kZXggOTVjYmNlNy4uMTkxYTBkZCAxMDA2NDQKLS0tLSBhL2ljb252L2djb252X2NoYXJzZXQuaAotKysrIGIvaWNvbnYvZ2NvbnZfY2hhcnNldC5oCi1AQCAtMjEsNyArMjEsNyBAQAotICNpbmNsdWRlIDxsb2NhbGUuaD4KLSAKLSAKLS1zdGF0aWMgdm9pZAotK3N0YXRpYyB2b2lkIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKQotIHN0cmlwIChjaGFyICp3cCwgY29uc3QgY2hhciAqcykKLSB7Ci0gICBpbnQgc2xhc2hfY291bnQgPSAwOwotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTQteWVzLXdpdGhpbi10aGUtcGF0aC1zZXRzLXdyb25nLWNvbmZpZy12YXJpYWJsZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNC15ZXMtd2l0aGluLXRoZS1wYXRoLXNldHMtd3JvbmctY29uZmlnLXZhcmlhYmxlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZGM3MGUwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTQteWVzLXdpdGhpbi10aGUtcGF0aC1zZXRzLXdyb25nLWNvbmZpZy12YXJpYWJsZXMucGF0Y2gKQEAgLTAsMCArMSwyNjMgQEAKK0Zyb20gM2I5MDRiZWU4MWExY2ZlODFlM2Y0MzdiNWYzMjk2ZWZkNTRhNTFhYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjMxOjA2ICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMTQvMjVdICd5ZXMnIHdpdGhpbiB0aGUgcGF0aCBzZXRzIHdyb25nIGNvbmZpZyB2YXJpYWJsZXMKKworSXQgc2VlbXMgdGhhdCB0aGUgJ0FDX0VHUkVQX0NQUCh5ZXMuLi4nIGV4YW1wbGUgaXMgcXVpdGUgcG9wdWxhcgorYnV0IGJlaW5nIHN1Y2ggYSBzaG9ydCB3b3JkIHRvIGdyZXAgaXQgaXMgbGlrZWx5IHRvIHByb2R1Y2UKK2ZhbHNlLXBvc2l0aXZlIG1hdGNoZXMgd2l0aCB0aGUgcGF0aCBpdCBpcyBjb25maWd1cmVkIGludG8uCisKK1RoZSBjaGFuZ2UgaXMgdG8gdXNlIGEgbW9yZSBlbGFib3JhdGVkIHN0cmluZyB0byBncmVwIGZvci4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2xpYmMtYWxwaGFAc291cmNld2FyZS5vcmddCisKK1NpZ25lZC1vZmYtYnk6IEJlbmphbWluIEVzcXVpdmVsIDxiZW5qYW1pbi5lc3F1aXZlbEBsaW51eC5pbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCisgc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCisgc3lzZGVwcy9hcm0vY29uZmlndXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCisgc3lzZGVwcy9hcm0vY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCisgc3lzZGVwcy9taXBzL2NvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCisgc3lzZGVwcy9taXBzL2NvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCisgc3lzZGVwcy9uaW9zMi9jb25maWd1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCisgc3lzZGVwcy9uaW9zMi9jb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCisgc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUgICAgICAgICAgICAgICAgIHwgNCArKy0tCisgc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUuYWMgICAgICAgICAgICAgIHwgNCArKy0tCisgc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlICAgIHwgOCArKysrLS0tLQorIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZS5hYyB8IDggKysrKy0tLS0KKyAxMiBmaWxlcyBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspLCAyOCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3N5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUgYi9zeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlCitpbmRleCA1YmQzNTVhNjkxLi4zYmM1NTM3YmMwIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZQorKysrIGIvc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZQorQEAgLTE0OCwxMiArMTQ4LDEyIEBAIGVsc2UKKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgI2lmZGVmIF9fQUFSQ0g2NEVCX18KKy0gICAgICAgICAgICAgICAgICAgICAgeWVzCisrICAgICAgICAgICAgICAgICAgICAgIGlzX2FhcmNoNjRfYmUKKyAgICAgICAgICAgICAgICAgICAgICAjZW5kaWYKKyAKKyBfQUNFT0YKKyBpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CistICAkRUdSRVAgInllcyIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKysgICRFR1JFUCAiaXNfYWFyY2g2NF9iZSIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKyAgIGxpYmNfY3ZfYWFyY2g2NF9iZT15ZXMKKyBlbHNlCisgICBsaWJjX2N2X2FhcmNoNjRfYmU9bm8KK2RpZmYgLS1naXQgYS9zeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlLmFjIGIvc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZS5hYworaW5kZXggNzg1MWRkNGRhYy4uNmU5MjM4MTcxZiAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUuYWMKKysrKyBiL3N5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUuYWMKK0BAIC0xMCw4ICsxMCw4IEBAIEdMSUJDX1BST1ZJREVTIGRubCBTZWUgYWNsb2NhbC5tNCBpbiB0aGUgdG9wIGxldmVsIHNvdXJjZSBkaXJlY3RvcnkuCisgIyB0aGUgZHluYW1pYyBsaW5rZXIgdmlhICVpZmRlZi4KKyBBQ19DQUNIRV9DSEVDSyhbZm9yIGJpZyBlbmRpYW5dLAorICAgW2xpYmNfY3ZfYWFyY2g2NF9iZV0sCistICBbQUNfRUdSRVBfQ1BQKHllcyxbI2lmZGVmIF9fQUFSQ0g2NEVCX18KKy0gICAgICAgICAgICAgICAgICAgICAgeWVzCisrICBbQUNfRUdSRVBfQ1BQKGlzX2FhcmNoNjRfYmUsWyNpZmRlZiBfX0FBUkNINjRFQl9fCisrICAgICAgICAgICAgICAgICAgICAgIGlzX2FhcmNoNjRfYmUKKyAgICAgICAgICAgICAgICAgICAgICAjZW5kaWYKKyAgIF0sIGxpYmNfY3ZfYWFyY2g2NF9iZT15ZXMsIGxpYmNfY3ZfYWFyY2g2NF9iZT1ubyldKQorIGlmIHRlc3QgJGxpYmNfY3ZfYWFyY2g2NF9iZSA9IHllczsgdGhlbgorZGlmZiAtLWdpdCBhL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZSBiL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZQoraW5kZXggNDMxZTg0M2IyYi4uZTE1MjQ2MTEzOCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZQorKysrIGIvc3lzZGVwcy9hcm0vY29uZmlndXJlCitAQCAtMTUxLDEyICsxNTEsMTIgQEAgZWxzZQorICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAjaWZkZWYgX19BUk1fUENTX1ZGUAorLQkJICAgICAgeWVzCisrCQkgICAgICB1c2VfYXJtX3Bjc192ZnAKKyAJCSAgICAgI2VuZGlmCisgCisgX0FDRU9GCisgaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAorLSAgJEVHUkVQICJ5ZXMiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CisrICAkRUdSRVAgInVzZV9hcm1fcGNzX3ZmcCIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKyAgIGxpYmNfY3ZfYXJtX3Bjc192ZnA9eWVzCisgZWxzZQorICAgbGliY19jdl9hcm1fcGNzX3ZmcD1ubworZGlmZiAtLWdpdCBhL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZS5hYyBiL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZS5hYworaW5kZXggOTBjZGQ2OWM3NS4uMDVhMjYyYmEwMCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZS5hYworKysrIGIvc3lzZGVwcy9hcm0vY29uZmlndXJlLmFjCitAQCAtMTUsOCArMTUsOCBAQCBBQ19ERUZJTkUoUElfU1RBVElDX0FORF9ISURERU4pCisgIyB0aGUgZHluYW1pYyBsaW5rZXIgdmlhICVpZmRlZi4KKyBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciB0aGUgY29tcGlsZXIgaXMgdXNpbmcgdGhlIEFSTSBoYXJkLWZsb2F0IEFCSV0sCisgICBbbGliY19jdl9hcm1fcGNzX3ZmcF0sCistICBbQUNfRUdSRVBfQ1BQKHllcyxbI2lmZGVmIF9fQVJNX1BDU19WRlAKKy0JCSAgICAgIHllcworKyAgW0FDX0VHUkVQX0NQUCh1c2VfYXJtX3Bjc192ZnAsWyNpZmRlZiBfX0FSTV9QQ1NfVkZQCisrCQkgICAgICB1c2VfYXJtX3Bjc192ZnAKKyAJCSAgICAgI2VuZGlmCisgICBdLCBsaWJjX2N2X2FybV9wY3NfdmZwPXllcywgbGliY19jdl9hcm1fcGNzX3ZmcD1ubyldKQorIGlmIHRlc3QgJGxpYmNfY3ZfYXJtX3Bjc192ZnAgPSB5ZXM7IHRoZW4KK2RpZmYgLS1naXQgYS9zeXNkZXBzL21pcHMvY29uZmlndXJlIGIvc3lzZGVwcy9taXBzL2NvbmZpZ3VyZQoraW5kZXggNGUxMzI0OGMwMy4uZjE0YWY5NTJkMCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvbWlwcy9jb25maWd1cmUKKysrKyBiL3N5c2RlcHMvbWlwcy9jb25maWd1cmUKK0BAIC0xNDMsMTEgKzE0MywxMSBAQCBlbHNlCisgLyogZW5kIGNvbmZkZWZzLmguICAqLworIGRubAorICNpZmRlZiBfX21pcHNfbmFuMjAwOAorLXllcworK3VzZV9taXBzX25hbjIwMDgKKyAjZW5kaWYKKyBfQUNFT0YKKyBpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CistICAkRUdSRVAgInllcyIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKysgICRFR1JFUCAidXNlX21pcHNfbmFuMjAwOCIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKyAgIGxpYmNfY3ZfbWlwc19uYW4yMDA4PXllcworIGVsc2UKKyAgIGxpYmNfY3ZfbWlwc19uYW4yMDA4PW5vCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9taXBzL2NvbmZpZ3VyZS5hYyBiL3N5c2RlcHMvbWlwcy9jb25maWd1cmUuYWMKK2luZGV4IGJjYmRhZmZkOWYuLmFkMzA1N2Y0Y2MgMTAwNjQ0CistLS0gYS9zeXNkZXBzL21pcHMvY29uZmlndXJlLmFjCisrKysgYi9zeXNkZXBzL21pcHMvY29uZmlndXJlLmFjCitAQCAtNiw5ICs2LDkgQEAgZG5sIHBvc2l0aW9uIGluZGVwZW5kZW50IHdheS4KKyBkbmwgQUNfREVGSU5FKFBJX1NUQVRJQ19BTkRfSElEREVOKQorIAorIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIHRoZSBjb21waWxlciBpcyB1c2luZyB0aGUgMjAwOCBOYU4gZW5jb2RpbmddLAorLSAgbGliY19jdl9taXBzX25hbjIwMDgsIFtBQ19FR1JFUF9DUFAoeWVzLCBbZG5sCisrICBsaWJjX2N2X21pcHNfbmFuMjAwOCwgW0FDX0VHUkVQX0NQUCh1c2VfbWlwc19uYW4yMDA4LCBbZG5sCisgI2lmZGVmIF9fbWlwc19uYW4yMDA4CisteWVzCisrdXNlX21pcHNfbmFuMjAwOAorICNlbmRpZl0sIGxpYmNfY3ZfbWlwc19uYW4yMDA4PXllcywgbGliY19jdl9taXBzX25hbjIwMDg9bm8pXSkKKyBpZiB0ZXN0IHgkbGliY19jdl9taXBzX25hbjIwMDggPSB4eWVzOyB0aGVuCisgICBBQ19ERUZJTkUoSEFWRV9NSVBTX05BTjIwMDgpCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9uaW9zMi9jb25maWd1cmUgYi9zeXNkZXBzL25pb3MyL2NvbmZpZ3VyZQoraW5kZXggMTRjOGEzYTAxNC4uZGRlMzgxNGVmMiAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvbmlvczIvY29uZmlndXJlCisrKysgYi9zeXNkZXBzL25pb3MyL2NvbmZpZ3VyZQorQEAgLTE0MiwxMiArMTQyLDEyIEBAIGVsc2UKKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgI2lmZGVmIF9fbmlvczJfYmlnX2VuZGlhbl9fCistICAgICAgICAgICAgICAgICAgICAgIHllcworKyAgICAgICAgICAgICAgICAgICAgICBpc19uaW9zMl9iZQorICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgorIAorIF9BQ0VPRgorIGlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKKy0gICRFR1JFUCAieWVzIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorKyAgJEVHUkVQICJpc19uaW9zMl9iZSIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKyAgIGxpYmNfY3ZfbmlvczJfYmU9eWVzCisgZWxzZQorICAgbGliY19jdl9uaW9zMl9iZT1ubworZGlmZiAtLWdpdCBhL3N5c2RlcHMvbmlvczIvY29uZmlndXJlLmFjIGIvc3lzZGVwcy9uaW9zMi9jb25maWd1cmUuYWMKK2luZGV4IGYwNWY0MzgwMmIuLmRjODYzOTkwMmQgMTAwNjQ0CistLS0gYS9zeXNkZXBzL25pb3MyL2NvbmZpZ3VyZS5hYworKysrIGIvc3lzZGVwcy9uaW9zMi9jb25maWd1cmUuYWMKK0BAIC00LDggKzQsOCBAQCBHTElCQ19QUk9WSURFUyBkbmwgU2VlIGFjbG9jYWwubTQgaW4gdGhlIHRvcCBsZXZlbCBzb3VyY2UgZGlyZWN0b3J5LgorICMgTmlvcyBJSSBiaWcgZW5kaWFuIGlzIG5vdCB5ZXQgc3VwcG9ydGVkLgorIEFDX0NBQ0hFX0NIRUNLKFtmb3IgYmlnIGVuZGlhbl0sCisgICBbbGliY19jdl9uaW9zMl9iZV0sCistICBbQUNfRUdSRVBfQ1BQKHllcyxbI2lmZGVmIF9fbmlvczJfYmlnX2VuZGlhbl9fCistICAgICAgICAgICAgICAgICAgICAgIHllcworKyAgW0FDX0VHUkVQX0NQUChpc19uaW9zMl9iZSxbI2lmZGVmIF9fbmlvczJfYmlnX2VuZGlhbl9fCisrICAgICAgICAgICAgICAgICAgICAgIGlzX25pb3MyX2JlCisgICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCisgICBdLCBsaWJjX2N2X25pb3MyX2JlPXllcywgbGliY19jdl9uaW9zMl9iZT1ubyldKQorIGlmIHRlc3QgJGxpYmNfY3ZfbmlvczJfYmUgPSB5ZXM7IHRoZW4KK2RpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZSBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlCitpbmRleCBhNTUxM2ZhZDQ4Li4yODNiMjkzZmYzIDEwMDY0NAorLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUKKysrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlCitAQCAtNDE0LDExICs0MTQsMTEgQEAgZWxzZQorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyBkbmwKKyAjaWZkZWYgX19taXBzX25hbjIwMDgKKy15ZXMKKyt1c2VfbWlwc19uYW4yMDA4CisgI2VuZGlmCisgX0FDRU9GCisgaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAorLSAgJEVHUkVQICJ5ZXMiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CisrICAkRUdSRVAgInVzZV9taXBzX25hbjIwMDgiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CisgICBsaWJjX2N2X21pcHNfbmFuMjAwOD15ZXMKKyBlbHNlCisgICBsaWJjX2N2X21pcHNfbmFuMjAwOD1ubworZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlLmFjIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUuYWMKK2luZGV4IDkxNDdhYTQ1ODIuLjc4OThlMjQ3MzggMTAwNjQ0CistLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZS5hYworKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUuYWMKK0BAIC0xMDUsOSArMTA1LDkgQEAgQUNfQ09NUElMRV9JRkVMU0UoCisgTElCQ19DT05GSUdfVkFSKFttaXBzLW1vZGUtc3dpdGNoXSxbJHtsaWJjX21pcHNfbW9kZV9zd2l0Y2h9XSkKKyAKKyBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciB0aGUgY29tcGlsZXIgaXMgdXNpbmcgdGhlIDIwMDggTmFOIGVuY29kaW5nXSwKKy0gIGxpYmNfY3ZfbWlwc19uYW4yMDA4LCBbQUNfRUdSRVBfQ1BQKHllcywgW2RubAorKyAgbGliY19jdl9taXBzX25hbjIwMDgsIFtBQ19FR1JFUF9DUFAodXNlX21pcHNfbmFuMjAwOCwgW2RubAorICNpZmRlZiBfX21pcHNfbmFuMjAwOAorLXllcworK3VzZV9taXBzX25hbjIwMDgKKyAjZW5kaWZdLCBsaWJjX2N2X21pcHNfbmFuMjAwOD15ZXMsIGxpYmNfY3ZfbWlwc19uYW4yMDA4PW5vKV0pCisgCisgbGliY19taXBzX25hbj0KK2RpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUKK2luZGV4IDRlN2ZjZjFkOTcuLjQ0YTljYjM3OTEgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUKKysrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZQorQEAgLTE1NSwxMiArMTU1LDEyIEBAIGVsc2UKKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgI2lmIF9DQUxMX0VMRiA9PSAyCistICAgICAgICAgICAgICAgICAgICAgIHllcworKyAgICAgICAgICAgICAgICAgICAgICB1c2VfcHBjX2VsZnYyX2FiaQorICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgorIAorIF9BQ0VPRgorIGlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKKy0gICRFR1JFUCAieWVzIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorKyAgJEVHUkVQICJ1c2VfcHBjX2VsZnYyX2FiaSIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKyAgIGxpYmNfY3ZfcHBjNjRfZWxmdjJfYWJpPXllcworIGVsc2UKKyAgIGxpYmNfY3ZfcHBjNjRfZWxmdjJfYWJpPW5vCitAQCAtMTg4LDEyICsxODgsMTIgQEAgZWxzZQorICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAjaWZkZWYgX0NBTExfRUxGCistICAgICAgICAgICAgICAgICAgICAgICAgIHllcworKyAgICAgICAgICAgICAgICAgICAgICAgICBpc19kZWZfY2FsbF9lbGYKKyAgICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgorIAorIF9BQ0VPRgorIGlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKKy0gICRFR1JFUCAieWVzIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorKyAgJEVHUkVQICJpc19kZWZfY2FsbF9lbGYiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CisgICBsaWJjX2N2X3BwYzY0X2RlZl9jYWxsX2VsZj15ZXMKKyBlbHNlCisgICBsaWJjX2N2X3BwYzY0X2RlZl9jYWxsX2VsZj1ubworZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZS5hYyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZS5hYworaW5kZXggZjljYmE2ZTE1ZC4uYjIxZjcyZjFlNCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZS5hYworKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlLmFjCitAQCAtNiw4ICs2LDggQEAgTElCQ19TTElCRElSX1JUTERESVIoW2xpYjY0XSwgW2xpYjY0XSkKKyAjIERlZmluZSBkZWZhdWx0LWFiaSBhY2NvcmRpbmcgdG8gY29tcGlsZXIgZmxhZ3MuCisgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgdGhlIGNvbXBpbGVyIGlzIHVzaW5nIHRoZSBQb3dlclBDNjQgRUxGdjIgQUJJXSwKKyAgIFtsaWJjX2N2X3BwYzY0X2VsZnYyX2FiaV0sCistICBbQUNfRUdSRVBfQ1BQKHllcyxbI2lmIF9DQUxMX0VMRiA9PSAyCistICAgICAgICAgICAgICAgICAgICAgIHllcworKyAgW0FDX0VHUkVQX0NQUCh1c2VfcHBjX2VsZnYyX2FiaSxbI2lmIF9DQUxMX0VMRiA9PSAyCisrICAgICAgICAgICAgICAgICAgICAgIHVzZV9wcGNfZWxmdjJfYWJpCisgICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCisgICBdLCBsaWJjX2N2X3BwYzY0X2VsZnYyX2FiaT15ZXMsIGxpYmNfY3ZfcHBjNjRfZWxmdjJfYWJpPW5vKV0pCisgaWYgdGVzdCAkbGliY19jdl9wcGM2NF9lbGZ2Ml9hYmkgPSB5ZXM7IHRoZW4KK0BAIC0xOSw4ICsxOSw4IEBAIGVsc2UKKyAgICMgQ29tcGlsZXIgdGhhdCBkbyBub3Qgc3VwcG9ydCBFTEZ2MiBBQkkgZG9lcyBub3QgZGVmaW5lIF9DQUxMX0VMRgorICAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgdGhlIGNvbXBpbGVyIGRlZmluZXMgX0NBTExfRUxGXSwKKyAgICAgW2xpYmNfY3ZfcHBjNjRfZGVmX2NhbGxfZWxmXSwKKy0gICAgW0FDX0VHUkVQX0NQUCh5ZXMsWyNpZmRlZiBfQ0FMTF9FTEYKKy0gICAgICAgICAgICAgICAgICAgICAgICAgeWVzCisrICAgIFtBQ19FR1JFUF9DUFAoaXNfZGVmX2NhbGxfZWxmLFsjaWZkZWYgX0NBTExfRUxGCisrICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2RlZl9jYWxsX2VsZgorICAgICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCisgICAgIF0sIGxpYmNfY3ZfcHBjNjRfZGVmX2NhbGxfZWxmPXllcywgbGliY19jdl9wcGM2NF9kZWZfY2FsbF9lbGY9bm8pXSkKKyAgIGlmIHRlc3QgJGxpYmNfY3ZfcHBjNjRfZGVmX2NhbGxfZWxmID0gbm87IHRoZW4KKy0tIAorMi4xMy4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE1LXRpbWV6b25lLXJlLXdyaXR0ZW4tdHpzZWxlY3QtYXMtcG9zaXgtc2gucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNS10aW1lem9uZS1yZS13cml0dGVuLXR6c2VsZWN0LWFzLXBvc2l4LXNoLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1ZmVmZmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNS10aW1lem9uZS1yZS13cml0dGVuLXR6c2VsZWN0LWFzLXBvc2l4LXNoLnBhdGNoCkBAIC0wLDAgKzEsNDUgQEAKK0Zyb20gYjhjYjhjYjI0MmNiNzUxZDg4OGZlYjFhZGE1YzRkMGYwNWNiYzFkNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjMzOjAzICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMTUvMjVdIHRpbWV6b25lOiByZS13cml0dGVuIHR6c2VsZWN0IGFzIHBvc2l4IHNoCisKK1RvIGF2b2lkIHRoZSBiYXNoIGRlcGVuZGVuY3kuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgdGltZXpvbmUvTWFrZWZpbGUgICAgIHwgMiArLQorIHRpbWV6b25lL3R6c2VsZWN0LmtzaCB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3RpbWV6b25lL01ha2VmaWxlIGIvdGltZXpvbmUvTWFrZWZpbGUKK2luZGV4IGQ2Y2M3YmEzNTcuLmU0ZWFkNmUxYTcgMTAwNjQ0CistLS0gYS90aW1lem9uZS9NYWtlZmlsZQorKysrIGIvdGltZXpvbmUvTWFrZWZpbGUKK0BAIC0xMjIsNyArMTIyLDcgQEAgJCh0ZXN0ZGF0YSkvWFQlOiB0ZXN0ZGF0YS9YVCUKKyAJY3AgJDwgJEAKKyAKKyAkKG9ianBmeCl0enNlbGVjdDogdHpzZWxlY3Qua3NoICQoY29tbW9uLW9ianBmeCljb25maWcubWFrZQorLQlzZWQgLWUgJ3N8L2Jpbi9iYXNofCQoQkFTSCl8JyBcCisrCXNlZCAtZSAnc3wvYmluL2Jhc2h8L2Jpbi9zaHwnIFwKKyAJICAgIC1lICdzfFRaRElSPVtefV0qfFRaRElSPSQoem9uZWRpcil8JyBcCisgCSAgICAtZSAnL1RaVkVSU0lPTj0vc3xzZWVfTWFrZWZpbGV8IiQodmVyc2lvbikifCcgXAorIAkgICAgLWUgJy9QS0dWRVJTSU9OPS9zfD0uKnw9IiQoUEtHVkVSU0lPTikifCcgXAorZGlmZiAtLWdpdCBhL3RpbWV6b25lL3R6c2VsZWN0LmtzaCBiL3RpbWV6b25lL3R6c2VsZWN0LmtzaAoraW5kZXggZDJjM2E2ZDFkZC4uMDg5Njc5ZjMwNiAxMDA3NTUKKy0tLSBhL3RpbWV6b25lL3R6c2VsZWN0LmtzaAorKysrIGIvdGltZXpvbmUvdHpzZWxlY3Qua3NoCitAQCAtMzUsNyArMzUsNyBAQCBSRVBPUlRfQlVHU19UTz10ekBpYW5hLm9yZworIAorICMgU3BlY2lmeSBkZWZhdWx0IHZhbHVlcyBmb3IgZW52aXJvbm1lbnQgdmFyaWFibGVzIGlmIHRoZXkgYXJlIHVuc2V0LgorIDogJHtBV0s9YXdrfQorLTogJHtUWkRJUj1gcHdkYH0KKys6ICR7VFpESVI9JChwd2QpfQorIAorICMgT3V0cHV0IG9uZSBhcmd1bWVudCBhcy1pcyB0byBzdGFuZGFyZCBvdXRwdXQuCisgIyBTYWZlciB0aGFuICdlY2hvJywgd2hpY2ggY2FuIG1pc2hhbmRsZSAnXCcgb3IgbGVhZGluZyAnLScuCistLSAKKzIuMTMuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNS15ZXMtd2l0aGluLXRoZS1wYXRoLXNldHMtd3JvbmctY29uZmlnLXZhcmlhYmxlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE1LXllcy13aXRoaW4tdGhlLXBhdGgtc2V0cy13cm9uZy1jb25maWctdmFyaWFibGVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OGQ0MjVhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE1LXllcy13aXRoaW4tdGhlLXBhdGgtc2V0cy13cm9uZy1jb25maWctdmFyaWFibGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjYzICswLDAgQEAKLUZyb20gMThkNjQ5NTFjYmI2OGQ4ZDc1ZThlZjM0N2NiZDBlMGE1YzE0NjA0YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjMxOjA2ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTUvMjZdICd5ZXMnIHdpdGhpbiB0aGUgcGF0aCBzZXRzIHdyb25nIGNvbmZpZyB2YXJpYWJsZXMKLQotSXQgc2VlbXMgdGhhdCB0aGUgJ0FDX0VHUkVQX0NQUCh5ZXMuLi4nIGV4YW1wbGUgaXMgcXVpdGUgcG9wdWxhcgotYnV0IGJlaW5nIHN1Y2ggYSBzaG9ydCB3b3JkIHRvIGdyZXAgaXQgaXMgbGlrZWx5IHRvIHByb2R1Y2UKLWZhbHNlLXBvc2l0aXZlIG1hdGNoZXMgd2l0aCB0aGUgcGF0aCBpdCBpcyBjb25maWd1cmVkIGludG8uCi0KLVRoZSBjaGFuZ2UgaXMgdG8gdXNlIGEgbW9yZSBlbGFib3JhdGVkIHN0cmluZyB0byBncmVwIGZvci4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2xpYmMtYWxwaGFAc291cmNld2FyZS5vcmddCi0KLVNpZ25lZC1vZmYtYnk6IEJlbmphbWluIEVzcXVpdmVsIDxiZW5qYW1pbi5lc3F1aXZlbEBsaW51eC5pbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCi0gc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCi0gc3lzZGVwcy9hcm0vY29uZmlndXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCi0gc3lzZGVwcy9hcm0vY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCi0gc3lzZGVwcy9taXBzL2NvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCi0gc3lzZGVwcy9taXBzL2NvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCi0gc3lzZGVwcy9uaW9zMi9jb25maWd1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCi0gc3lzZGVwcy9uaW9zMi9jb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCi0gc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUgICAgICAgICAgICAgICAgIHwgNCArKy0tCi0gc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUuYWMgICAgICAgICAgICAgIHwgNCArKy0tCi0gc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlICAgIHwgOCArKysrLS0tLQotIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZS5hYyB8IDggKysrKy0tLS0KLSAxMiBmaWxlcyBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspLCAyOCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUgYi9zeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlCi1pbmRleCA1YmQzNTVhLi4zYmM1NTM3IDEwMDY0NAotLS0tIGEvc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZQotKysrIGIvc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZQotQEAgLTE0OCwxMiArMTQ4LDEyIEBAIGVsc2UKLSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gI2lmZGVmIF9fQUFSQ0g2NEVCX18KLS0gICAgICAgICAgICAgICAgICAgICAgeWVzCi0rICAgICAgICAgICAgICAgICAgICAgIGlzX2FhcmNoNjRfYmUKLSAgICAgICAgICAgICAgICAgICAgICAjZW5kaWYKLSAKLSBfQUNFT0YKLSBpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8Ci0tICAkRUdSRVAgInllcyIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLSsgICRFR1JFUCAiaXNfYWFyY2g2NF9iZSIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLSAgIGxpYmNfY3ZfYWFyY2g2NF9iZT15ZXMKLSBlbHNlCi0gICBsaWJjX2N2X2FhcmNoNjRfYmU9bm8KLWRpZmYgLS1naXQgYS9zeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlLmFjIGIvc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZS5hYwotaW5kZXggNzg1MWRkNC4uNmU5MjM4MSAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUuYWMKLSsrKyBiL3N5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUuYWMKLUBAIC0xMCw4ICsxMCw4IEBAIEdMSUJDX1BST1ZJREVTIGRubCBTZWUgYWNsb2NhbC5tNCBpbiB0aGUgdG9wIGxldmVsIHNvdXJjZSBkaXJlY3RvcnkuCi0gIyB0aGUgZHluYW1pYyBsaW5rZXIgdmlhICVpZmRlZi4KLSBBQ19DQUNIRV9DSEVDSyhbZm9yIGJpZyBlbmRpYW5dLAotICAgW2xpYmNfY3ZfYWFyY2g2NF9iZV0sCi0tICBbQUNfRUdSRVBfQ1BQKHllcyxbI2lmZGVmIF9fQUFSQ0g2NEVCX18KLS0gICAgICAgICAgICAgICAgICAgICAgeWVzCi0rICBbQUNfRUdSRVBfQ1BQKGlzX2FhcmNoNjRfYmUsWyNpZmRlZiBfX0FBUkNINjRFQl9fCi0rICAgICAgICAgICAgICAgICAgICAgIGlzX2FhcmNoNjRfYmUKLSAgICAgICAgICAgICAgICAgICAgICAjZW5kaWYKLSAgIF0sIGxpYmNfY3ZfYWFyY2g2NF9iZT15ZXMsIGxpYmNfY3ZfYWFyY2g2NF9iZT1ubyldKQotIGlmIHRlc3QgJGxpYmNfY3ZfYWFyY2g2NF9iZSA9IHllczsgdGhlbgotZGlmZiAtLWdpdCBhL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZSBiL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZQotaW5kZXggNDMxZTg0My4uZTE1MjQ2MSAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZQotKysrIGIvc3lzZGVwcy9hcm0vY29uZmlndXJlCi1AQCAtMTUxLDEyICsxNTEsMTIgQEAgZWxzZQotICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAjaWZkZWYgX19BUk1fUENTX1ZGUAotLQkJICAgICAgeWVzCi0rCQkgICAgICB1c2VfYXJtX3Bjc192ZnAKLSAJCSAgICAgI2VuZGlmCi0gCi0gX0FDRU9GCi0gaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAotLSAgJEVHUkVQICJ5ZXMiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0rICAkRUdSRVAgInVzZV9hcm1fcGNzX3ZmcCIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLSAgIGxpYmNfY3ZfYXJtX3Bjc192ZnA9eWVzCi0gZWxzZQotICAgbGliY19jdl9hcm1fcGNzX3ZmcD1ubwotZGlmZiAtLWdpdCBhL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZS5hYyBiL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZS5hYwotaW5kZXggOTBjZGQ2OS4uMDVhMjYyYiAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZS5hYwotKysrIGIvc3lzZGVwcy9hcm0vY29uZmlndXJlLmFjCi1AQCAtMTUsOCArMTUsOCBAQCBBQ19ERUZJTkUoUElfU1RBVElDX0FORF9ISURERU4pCi0gIyB0aGUgZHluYW1pYyBsaW5rZXIgdmlhICVpZmRlZi4KLSBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciB0aGUgY29tcGlsZXIgaXMgdXNpbmcgdGhlIEFSTSBoYXJkLWZsb2F0IEFCSV0sCi0gICBbbGliY19jdl9hcm1fcGNzX3ZmcF0sCi0tICBbQUNfRUdSRVBfQ1BQKHllcyxbI2lmZGVmIF9fQVJNX1BDU19WRlAKLS0JCSAgICAgIHllcwotKyAgW0FDX0VHUkVQX0NQUCh1c2VfYXJtX3Bjc192ZnAsWyNpZmRlZiBfX0FSTV9QQ1NfVkZQCi0rCQkgICAgICB1c2VfYXJtX3Bjc192ZnAKLSAJCSAgICAgI2VuZGlmCi0gICBdLCBsaWJjX2N2X2FybV9wY3NfdmZwPXllcywgbGliY19jdl9hcm1fcGNzX3ZmcD1ubyldKQotIGlmIHRlc3QgJGxpYmNfY3ZfYXJtX3Bjc192ZnAgPSB5ZXM7IHRoZW4KLWRpZmYgLS1naXQgYS9zeXNkZXBzL21pcHMvY29uZmlndXJlIGIvc3lzZGVwcy9taXBzL2NvbmZpZ3VyZQotaW5kZXggNGUxMzI0OC4uZjE0YWY5NSAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvbWlwcy9jb25maWd1cmUKLSsrKyBiL3N5c2RlcHMvbWlwcy9jb25maWd1cmUKLUBAIC0xNDMsMTEgKzE0MywxMSBAQCBlbHNlCi0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotIGRubAotICNpZmRlZiBfX21pcHNfbmFuMjAwOAotLXllcwotK3VzZV9taXBzX25hbjIwMDgKLSAjZW5kaWYKLSBfQUNFT0YKLSBpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8Ci0tICAkRUdSRVAgInllcyIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLSsgICRFR1JFUCAidXNlX21pcHNfbmFuMjAwOCIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLSAgIGxpYmNfY3ZfbWlwc19uYW4yMDA4PXllcwotIGVsc2UKLSAgIGxpYmNfY3ZfbWlwc19uYW4yMDA4PW5vCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9taXBzL2NvbmZpZ3VyZS5hYyBiL3N5c2RlcHMvbWlwcy9jb25maWd1cmUuYWMKLWluZGV4IGJjYmRhZmYuLmFkMzA1N2YgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL21pcHMvY29uZmlndXJlLmFjCi0rKysgYi9zeXNkZXBzL21pcHMvY29uZmlndXJlLmFjCi1AQCAtNiw5ICs2LDkgQEAgZG5sIHBvc2l0aW9uIGluZGVwZW5kZW50IHdheS4KLSBkbmwgQUNfREVGSU5FKFBJX1NUQVRJQ19BTkRfSElEREVOKQotIAotIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIHRoZSBjb21waWxlciBpcyB1c2luZyB0aGUgMjAwOCBOYU4gZW5jb2RpbmddLAotLSAgbGliY19jdl9taXBzX25hbjIwMDgsIFtBQ19FR1JFUF9DUFAoeWVzLCBbZG5sCi0rICBsaWJjX2N2X21pcHNfbmFuMjAwOCwgW0FDX0VHUkVQX0NQUCh1c2VfbWlwc19uYW4yMDA4LCBbZG5sCi0gI2lmZGVmIF9fbWlwc19uYW4yMDA4Ci0teWVzCi0rdXNlX21pcHNfbmFuMjAwOAotICNlbmRpZl0sIGxpYmNfY3ZfbWlwc19uYW4yMDA4PXllcywgbGliY19jdl9taXBzX25hbjIwMDg9bm8pXSkKLSBpZiB0ZXN0IHgkbGliY19jdl9taXBzX25hbjIwMDggPSB4eWVzOyB0aGVuCi0gICBBQ19ERUZJTkUoSEFWRV9NSVBTX05BTjIwMDgpCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9uaW9zMi9jb25maWd1cmUgYi9zeXNkZXBzL25pb3MyL2NvbmZpZ3VyZQotaW5kZXggMTRjOGEzYS4uZGRlMzgxNCAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvbmlvczIvY29uZmlndXJlCi0rKysgYi9zeXNkZXBzL25pb3MyL2NvbmZpZ3VyZQotQEAgLTE0MiwxMiArMTQyLDEyIEBAIGVsc2UKLSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gI2lmZGVmIF9fbmlvczJfYmlnX2VuZGlhbl9fCi0tICAgICAgICAgICAgICAgICAgICAgIHllcwotKyAgICAgICAgICAgICAgICAgICAgICBpc19uaW9zMl9iZQotICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgotIAotIF9BQ0VPRgotIGlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKLS0gICRFR1JFUCAieWVzIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgotKyAgJEVHUkVQICJpc19uaW9zMl9iZSIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLSAgIGxpYmNfY3ZfbmlvczJfYmU9eWVzCi0gZWxzZQotICAgbGliY19jdl9uaW9zMl9iZT1ubwotZGlmZiAtLWdpdCBhL3N5c2RlcHMvbmlvczIvY29uZmlndXJlLmFjIGIvc3lzZGVwcy9uaW9zMi9jb25maWd1cmUuYWMKLWluZGV4IGYwNWY0MzguLmRjODYzOTkgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL25pb3MyL2NvbmZpZ3VyZS5hYwotKysrIGIvc3lzZGVwcy9uaW9zMi9jb25maWd1cmUuYWMKLUBAIC00LDggKzQsOCBAQCBHTElCQ19QUk9WSURFUyBkbmwgU2VlIGFjbG9jYWwubTQgaW4gdGhlIHRvcCBsZXZlbCBzb3VyY2UgZGlyZWN0b3J5LgotICMgTmlvcyBJSSBiaWcgZW5kaWFuIGlzIG5vdCB5ZXQgc3VwcG9ydGVkLgotIEFDX0NBQ0hFX0NIRUNLKFtmb3IgYmlnIGVuZGlhbl0sCi0gICBbbGliY19jdl9uaW9zMl9iZV0sCi0tICBbQUNfRUdSRVBfQ1BQKHllcyxbI2lmZGVmIF9fbmlvczJfYmlnX2VuZGlhbl9fCi0tICAgICAgICAgICAgICAgICAgICAgIHllcwotKyAgW0FDX0VHUkVQX0NQUChpc19uaW9zMl9iZSxbI2lmZGVmIF9fbmlvczJfYmlnX2VuZGlhbl9fCi0rICAgICAgICAgICAgICAgICAgICAgIGlzX25pb3MyX2JlCi0gICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCi0gICBdLCBsaWJjX2N2X25pb3MyX2JlPXllcywgbGliY19jdl9uaW9zMl9iZT1ubyldKQotIGlmIHRlc3QgJGxpYmNfY3ZfbmlvczJfYmUgPSB5ZXM7IHRoZW4KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZSBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlCi1pbmRleCBhNTUxM2ZhLi4yODNiMjkzIDEwMDY0NAotLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUKLSsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlCi1AQCAtNDE0LDExICs0MTQsMTEgQEAgZWxzZQotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSBkbmwKLSAjaWZkZWYgX19taXBzX25hbjIwMDgKLS15ZXMKLSt1c2VfbWlwc19uYW4yMDA4Ci0gI2VuZGlmCi0gX0FDRU9GCi0gaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAotLSAgJEVHUkVQICJ5ZXMiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0rICAkRUdSRVAgInVzZV9taXBzX25hbjIwMDgiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0gICBsaWJjX2N2X21pcHNfbmFuMjAwOD15ZXMKLSBlbHNlCi0gICBsaWJjX2N2X21pcHNfbmFuMjAwOD1ubwotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlLmFjIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUuYWMKLWluZGV4IDkxNDdhYTQuLjc4OThlMjQgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZS5hYwotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUuYWMKLUBAIC0xMDUsOSArMTA1LDkgQEAgQUNfQ09NUElMRV9JRkVMU0UoCi0gTElCQ19DT05GSUdfVkFSKFttaXBzLW1vZGUtc3dpdGNoXSxbJHtsaWJjX21pcHNfbW9kZV9zd2l0Y2h9XSkKLSAKLSBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciB0aGUgY29tcGlsZXIgaXMgdXNpbmcgdGhlIDIwMDggTmFOIGVuY29kaW5nXSwKLS0gIGxpYmNfY3ZfbWlwc19uYW4yMDA4LCBbQUNfRUdSRVBfQ1BQKHllcywgW2RubAotKyAgbGliY19jdl9taXBzX25hbjIwMDgsIFtBQ19FR1JFUF9DUFAodXNlX21pcHNfbmFuMjAwOCwgW2RubAotICNpZmRlZiBfX21pcHNfbmFuMjAwOAotLXllcwotK3VzZV9taXBzX25hbjIwMDgKLSAjZW5kaWZdLCBsaWJjX2N2X21pcHNfbmFuMjAwOD15ZXMsIGxpYmNfY3ZfbWlwc19uYW4yMDA4PW5vKV0pCi0gCi0gbGliY19taXBzX25hbj0KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUKLWluZGV4IGFmMDY5NzAuLjI3YjhjMWIgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUKLSsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZQotQEAgLTE1NSwxMiArMTU1LDEyIEBAIGVsc2UKLSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gI2lmIF9DQUxMX0VMRiA9PSAyCi0tICAgICAgICAgICAgICAgICAgICAgIHllcwotKyAgICAgICAgICAgICAgICAgICAgICB1c2VfcHBjX2VsZnYyX2FiaQotICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgotIAotIF9BQ0VPRgotIGlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKLS0gICRFR1JFUCAieWVzIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgotKyAgJEVHUkVQICJ1c2VfcHBjX2VsZnYyX2FiaSIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLSAgIGxpYmNfY3ZfcHBjNjRfZWxmdjJfYWJpPXllcwotIGVsc2UKLSAgIGxpYmNfY3ZfcHBjNjRfZWxmdjJfYWJpPW5vCi1AQCAtMTg4LDEyICsxODgsMTIgQEAgZWxzZQotICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAjaWZkZWYgX0NBTExfRUxGCi0tICAgICAgICAgICAgICAgICAgICAgICAgIHllcwotKyAgICAgICAgICAgICAgICAgICAgICAgICBpc19kZWZfY2FsbF9lbGYKLSAgICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgotIAotIF9BQ0VPRgotIGlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKLS0gICRFR1JFUCAieWVzIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgotKyAgJEVHUkVQICJpc19kZWZfY2FsbF9lbGYiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0gICBsaWJjX2N2X3BwYzY0X2RlZl9jYWxsX2VsZj15ZXMKLSBlbHNlCi0gICBsaWJjX2N2X3BwYzY0X2RlZl9jYWxsX2VsZj1ubwotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZS5hYyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZS5hYwotaW5kZXggMDgyMjkxNS4uOWEzMmZkZCAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZS5hYwotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlLmFjCi1AQCAtNiw4ICs2LDggQEAgTElCQ19TTElCRElSX1JUTERESVIoW2xpYjY0XSwgW2xpYjY0XSkKLSAjIERlZmluZSBkZWZhdWx0LWFiaSBhY2NvcmRpbmcgdG8gY29tcGlsZXIgZmxhZ3MuCi0gQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgdGhlIGNvbXBpbGVyIGlzIHVzaW5nIHRoZSBQb3dlclBDNjQgRUxGdjIgQUJJXSwKLSAgIFtsaWJjX2N2X3BwYzY0X2VsZnYyX2FiaV0sCi0tICBbQUNfRUdSRVBfQ1BQKHllcyxbI2lmIF9DQUxMX0VMRiA9PSAyCi0tICAgICAgICAgICAgICAgICAgICAgIHllcwotKyAgW0FDX0VHUkVQX0NQUCh1c2VfcHBjX2VsZnYyX2FiaSxbI2lmIF9DQUxMX0VMRiA9PSAyCi0rICAgICAgICAgICAgICAgICAgICAgIHVzZV9wcGNfZWxmdjJfYWJpCi0gICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCi0gICBdLCBsaWJjX2N2X3BwYzY0X2VsZnYyX2FiaT15ZXMsIGxpYmNfY3ZfcHBjNjRfZWxmdjJfYWJpPW5vKV0pCi0gaWYgdGVzdCAkbGliY19jdl9wcGM2NF9lbGZ2Ml9hYmkgPSB5ZXM7IHRoZW4KLUBAIC0xOSw4ICsxOSw4IEBAIGVsc2UKLSAgICMgQ29tcGlsZXIgdGhhdCBkbyBub3Qgc3VwcG9ydCBFTEZ2MiBBQkkgZG9lcyBub3QgZGVmaW5lIF9DQUxMX0VMRgotICAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgdGhlIGNvbXBpbGVyIGRlZmluZXMgX0NBTExfRUxGXSwKLSAgICAgW2xpYmNfY3ZfcHBjNjRfZGVmX2NhbGxfZWxmXSwKLS0gICAgW0FDX0VHUkVQX0NQUCh5ZXMsWyNpZmRlZiBfQ0FMTF9FTEYKLS0gICAgICAgICAgICAgICAgICAgICAgICAgeWVzCi0rICAgIFtBQ19FR1JFUF9DUFAoaXNfZGVmX2NhbGxfZWxmLFsjaWZkZWYgX0NBTExfRUxGCi0rICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2RlZl9jYWxsX2VsZgotICAgICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCi0gICAgIF0sIGxpYmNfY3ZfcHBjNjRfZGVmX2NhbGxfZWxmPXllcywgbGliY19jdl9wcGM2NF9kZWZfY2FsbF9lbGY9bm8pXSkKLSAgIGlmIHRlc3QgJGxpYmNfY3ZfcHBjNjRfZGVmX2NhbGxfZWxmID0gbm87IHRoZW4KLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE2LVJlbW92ZS1iYXNoLWRlcGVuZGVuY3ktZm9yLW5zY2QtaW5pdC1zY3JpcHQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNi1SZW1vdmUtYmFzaC1kZXBlbmRlbmN5LWZvci1uc2NkLWluaXQtc2NyaXB0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkOTk4M2IKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNi1SZW1vdmUtYmFzaC1kZXBlbmRlbmN5LWZvci1uc2NkLWluaXQtc2NyaXB0LnBhdGNoCkBAIC0wLDAgKzEsNzUgQEAKK0Zyb20gNjlkMzc4MDAxYWRmZTlhMzU5ZDJmNGIwNjljMWVkMmQzNmRlNDQ4MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDMxIERlYyAyMDE1IDE0OjMzOjAyIC0wODAwCitTdWJqZWN0OiBbUEFUQ0ggMTYvMjVdIFJlbW92ZSBiYXNoIGRlcGVuZGVuY3kgZm9yIG5zY2QgaW5pdCBzY3JpcHQKKworVGhlIG5zY2QgaW5pdCBzY3JpcHQgdXNlcyAjISAvYmluL2Jhc2ggYnV0IG9ubHkgcmVhbGx5IHVzZXMgb25lIGJhc2hpc20KKyh0cmFuc2xhdGVkIHN0cmluZ3MpLCBzbyByZW1vdmUgdGhlbSBhbmQgc3dpdGNoIHRoZSBzaGVsbCB0byAjIS9iaW4vc2guCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIG5zY2QvbnNjZC5pbml0IHwgMTQgKysrKysrKy0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbnNjZC9uc2NkLmluaXQgYi9uc2NkL25zY2QuaW5pdAoraW5kZXggYTg4MmRhN2Q4Yi4uYjAyOTg2ZWMxNSAxMDA2NDQKKy0tLSBhL25zY2QvbnNjZC5pbml0CisrKysgYi9uc2NkL25zY2QuaW5pdAorQEAgLTEsNCArMSw0IEBACistIyEvYmluL2Jhc2gKKysjIS9iaW4vc2gKKyAjCisgIyBuc2NkOgkJU3RhcnRzIHRoZSBOYW1lIFN3aXRjaCBDYWNoZSBEYWVtb24KKyAjCitAQCAtNDksNyArNDksNyBAQCBwcm9nPW5zY2QKKyBzdGFydCAoKSB7CisgICAgIFsgLWQgL3Zhci9ydW4vbnNjZCBdIHx8IG1rZGlyIC92YXIvcnVuL25zY2QKKyAgICAgWyAtZCAvdmFyL2RiL25zY2QgXSB8fCBta2RpciAvdmFyL2RiL25zY2QKKy0gICAgZWNobyAtbiAkIlN0YXJ0aW5nICRwcm9nOiAiCisrICAgIGVjaG8gLW4gIlN0YXJ0aW5nICRwcm9nOiAiCisgICAgIGRhZW1vbiAvdXNyL3NiaW4vbnNjZAorICAgICBSRVRWQUw9JD8KKyAgICAgZWNobworQEAgLTU4LDcgKzU4LDcgQEAgc3RhcnQgKCkgeworIH0KKyAKKyBzdG9wICgpIHsKKy0gICAgZWNobyAtbiAkIlN0b3BwaW5nICRwcm9nOiAiCisrICAgIGVjaG8gLW4gIlN0b3BwaW5nICRwcm9nOiAiCisgICAgIC91c3Ivc2Jpbi9uc2NkIC1LCisgICAgIFJFVFZBTD0kPworICAgICBpZiBbICRSRVRWQUwgLWVxIDAgXTsgdGhlbgorQEAgLTY3LDkgKzY3LDkgQEAgc3RvcCAoKSB7CisgCSMgYSBub24tcHJpdmlsZWdlZCB1c2VyCisgCXJtIC1mIC92YXIvcnVuL25zY2QvbnNjZC5waWQKKyAJcm0gLWYgL3Zhci9ydW4vbnNjZC9zb2NrZXQKKy0gICAgICAgCXN1Y2Nlc3MgJCIkcHJvZyBzaHV0ZG93biIKKysJc3VjY2VzcyAiJHByb2cgc2h1dGRvd24iCisgICAgIGVsc2UKKy0gICAgICAgCWZhaWx1cmUgJCIkcHJvZyBzaHV0ZG93biIKKysJZmFpbHVyZSAiJHByb2cgc2h1dGRvd24iCisgICAgIGZpCisgICAgIGVjaG8KKyAgICAgcmV0dXJuICRSRVRWQUwKK0BAIC0xMDMsMTMgKzEwMywxMyBAQCBjYXNlICIkMSIgaW4KKyAJUkVUVkFMPSQ/CisgCTs7CisgICAgIGZvcmNlLXJlbG9hZCB8IHJlbG9hZCkKKy0gICAgCWVjaG8gLW4gJCJSZWxvYWRpbmcgJHByb2c6ICIKKysJZWNobyAtbiAiUmVsb2FkaW5nICRwcm9nOiAiCisgCWtpbGxwcm9jIC91c3Ivc2Jpbi9uc2NkIC1IVVAKKyAJUkVUVkFMPSQ/CisgCWVjaG8KKyAJOzsKKyAgICAgKikKKy0JZWNobyAkIlVzYWdlOiAkMCB7c3RhcnR8c3RvcHxzdGF0dXN8cmVzdGFydHxyZWxvYWR8Y29uZHJlc3RhcnR9IgorKwllY2hvICJVc2FnZTogJDAge3N0YXJ0fHN0b3B8c3RhdHVzfHJlc3RhcnR8cmVsb2FkfGNvbmRyZXN0YXJ0fSIKKyAJUkVUVkFMPTEKKyAJOzsKKyBlc2FjCistLSAKKzIuMTMuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNi10aW1lem9uZS1yZS13cml0dGVuLXR6c2VsZWN0LWFzLXBvc2l4LXNoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTYtdGltZXpvbmUtcmUtd3JpdHRlbi10enNlbGVjdC1hcy1wb3NpeC1zaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDI2YTJjMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNi10aW1lem9uZS1yZS13cml0dGVuLXR6c2VsZWN0LWFzLXBvc2l4LXNoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotRnJvbSAyYmVkNTE1YjlmOWY2MTNhZTBkYjliOTYwN2Q4ZmE2MGE0YWZjYTViIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MzM6MDMgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxNi8yNl0gdGltZXpvbmU6IHJlLXdyaXR0ZW4gdHpzZWxlY3QgYXMgcG9zaXggc2gKLQotVG8gYXZvaWQgdGhlIGJhc2ggZGVwZW5kZW5jeS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSB0aW1lem9uZS9NYWtlZmlsZSAgICAgfCAyICstCi0gdGltZXpvbmUvdHpzZWxlY3Qua3NoIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGltZXpvbmUvTWFrZWZpbGUgYi90aW1lem9uZS9NYWtlZmlsZQotaW5kZXggZGVlNzU2OC4uNjZhNTBiZSAxMDA2NDQKLS0tLSBhL3RpbWV6b25lL01ha2VmaWxlCi0rKysgYi90aW1lem9uZS9NYWtlZmlsZQotQEAgLTEyMCw3ICsxMjAsNyBAQCAkKHRlc3RkYXRhKS9YVCU6IHRlc3RkYXRhL1hUJQotIAljcCAkPCAkQAotIAotICQob2JqcGZ4KXR6c2VsZWN0OiB0enNlbGVjdC5rc2ggJChjb21tb24tb2JqcGZ4KWNvbmZpZy5tYWtlCi0tCXNlZCAtZSAnc3wvYmluL2Jhc2h8JChCQVNIKXwnIFwKLSsJc2VkIC1lICdzfC9iaW4vYmFzaHwvYmluL3NofCcgXAotIAkgICAgLWUgJ3N8VFpESVI9W159XSp8VFpESVI9JCh6b25lZGlyKXwnIFwKLSAJICAgIC1lICcvVFpWRVJTSU9OPS9zfHNlZV9NYWtlZmlsZXwiJCh2ZXJzaW9uKSJ8JyBcCi0gCSAgICAtZSAnL1BLR1ZFUlNJT049L3N8PS4qfD0iJChQS0dWRVJTSU9OKSJ8JyBcCi1kaWZmIC0tZ2l0IGEvdGltZXpvbmUvdHpzZWxlY3Qua3NoIGIvdGltZXpvbmUvdHpzZWxlY3Qua3NoCi1pbmRleCAyYzNiMmY0Li4wYzA0YTYxIDEwMDc1NQotLS0tIGEvdGltZXpvbmUvdHpzZWxlY3Qua3NoCi0rKysgYi90aW1lem9uZS90enNlbGVjdC5rc2gKLUBAIC0zNSw3ICszNSw3IEBAIFJFUE9SVF9CVUdTX1RPPXR6QGlhbmEub3JnCi0gCi0gIyBTcGVjaWZ5IGRlZmF1bHQgdmFsdWVzIGZvciBlbnZpcm9ubWVudCB2YXJpYWJsZXMgaWYgdGhleSBhcmUgdW5zZXQuCi0gOiAke0FXSz1hd2t9Ci0tOiAke1RaRElSPWBwd2RgfQotKzogJHtUWkRJUj0kKHB3ZCl9Ci0gCi0gIyBPdXRwdXQgb25lIGFyZ3VtZW50IGFzLWlzIHRvIHN0YW5kYXJkIG91dHB1dC4KLSAjIFNhZmVyIHRoYW4gJ2VjaG8nLCB3aGljaCBjYW4gbWlzaGFuZGxlICdcJyBvciBsZWFkaW5nICctJy4KLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE3LVJlbW92ZS1iYXNoLWRlcGVuZGVuY3ktZm9yLW5zY2QtaW5pdC1zY3JpcHQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNy1SZW1vdmUtYmFzaC1kZXBlbmRlbmN5LWZvci1uc2NkLWluaXQtc2NyaXB0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YzI1MDZjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE3LVJlbW92ZS1iYXNoLWRlcGVuZGVuY3ktZm9yLW5zY2QtaW5pdC1zY3JpcHQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi1Gcm9tIGM4ODE0ODc1YjM2MmVmYmZkNzc4MzQ1ZDBkMjc3NzQ3OGJmMTFhMzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVGh1LCAzMSBEZWMgMjAxNSAxNDozMzowMiAtMDgwMAotU3ViamVjdDogW1BBVENIIDE3LzI2XSBSZW1vdmUgYmFzaCBkZXBlbmRlbmN5IGZvciBuc2NkIGluaXQgc2NyaXB0Ci0KLVRoZSBuc2NkIGluaXQgc2NyaXB0IHVzZXMgIyEgL2Jpbi9iYXNoIGJ1dCBvbmx5IHJlYWxseSB1c2VzIG9uZSBiYXNoaXNtCi0odHJhbnNsYXRlZCBzdHJpbmdzKSwgc28gcmVtb3ZlIHRoZW0gYW5kIHN3aXRjaCB0aGUgc2hlbGwgdG8gIyEvYmluL3NoLgotCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIG5zY2QvbnNjZC5pbml0IHwgMTQgKysrKysrKy0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbnNjZC9uc2NkLmluaXQgYi9uc2NkL25zY2QuaW5pdAotaW5kZXggYTg4MmRhNy4uYjAyOTg2ZSAxMDA2NDQKLS0tLSBhL25zY2QvbnNjZC5pbml0Ci0rKysgYi9uc2NkL25zY2QuaW5pdAotQEAgLTEsNCArMSw0IEBACi0tIyEvYmluL2Jhc2gKLSsjIS9iaW4vc2gKLSAjCi0gIyBuc2NkOgkJU3RhcnRzIHRoZSBOYW1lIFN3aXRjaCBDYWNoZSBEYWVtb24KLSAjCi1AQCAtNDksNyArNDksNyBAQCBwcm9nPW5zY2QKLSBzdGFydCAoKSB7Ci0gICAgIFsgLWQgL3Zhci9ydW4vbnNjZCBdIHx8IG1rZGlyIC92YXIvcnVuL25zY2QKLSAgICAgWyAtZCAvdmFyL2RiL25zY2QgXSB8fCBta2RpciAvdmFyL2RiL25zY2QKLS0gICAgZWNobyAtbiAkIlN0YXJ0aW5nICRwcm9nOiAiCi0rICAgIGVjaG8gLW4gIlN0YXJ0aW5nICRwcm9nOiAiCi0gICAgIGRhZW1vbiAvdXNyL3NiaW4vbnNjZAotICAgICBSRVRWQUw9JD8KLSAgICAgZWNobwotQEAgLTU4LDcgKzU4LDcgQEAgc3RhcnQgKCkgewotIH0KLSAKLSBzdG9wICgpIHsKLS0gICAgZWNobyAtbiAkIlN0b3BwaW5nICRwcm9nOiAiCi0rICAgIGVjaG8gLW4gIlN0b3BwaW5nICRwcm9nOiAiCi0gICAgIC91c3Ivc2Jpbi9uc2NkIC1LCi0gICAgIFJFVFZBTD0kPwotICAgICBpZiBbICRSRVRWQUwgLWVxIDAgXTsgdGhlbgotQEAgLTY3LDkgKzY3LDkgQEAgc3RvcCAoKSB7Ci0gCSMgYSBub24tcHJpdmlsZWdlZCB1c2VyCi0gCXJtIC1mIC92YXIvcnVuL25zY2QvbnNjZC5waWQKLSAJcm0gLWYgL3Zhci9ydW4vbnNjZC9zb2NrZXQKLS0gICAgICAgCXN1Y2Nlc3MgJCIkcHJvZyBzaHV0ZG93biIKLSsJc3VjY2VzcyAiJHByb2cgc2h1dGRvd24iCi0gICAgIGVsc2UKLS0gICAgICAgCWZhaWx1cmUgJCIkcHJvZyBzaHV0ZG93biIKLSsJZmFpbHVyZSAiJHByb2cgc2h1dGRvd24iCi0gICAgIGZpCi0gICAgIGVjaG8KLSAgICAgcmV0dXJuICRSRVRWQUwKLUBAIC0xMDMsMTMgKzEwMywxMyBAQCBjYXNlICIkMSIgaW4KLSAJUkVUVkFMPSQ/Ci0gCTs7Ci0gICAgIGZvcmNlLXJlbG9hZCB8IHJlbG9hZCkKLS0gICAgCWVjaG8gLW4gJCJSZWxvYWRpbmcgJHByb2c6ICIKLSsJZWNobyAtbiAiUmVsb2FkaW5nICRwcm9nOiAiCi0gCWtpbGxwcm9jIC91c3Ivc2Jpbi9uc2NkIC1IVVAKLSAJUkVUVkFMPSQ/Ci0gCWVjaG8KLSAJOzsKLSAgICAgKikKLS0JZWNobyAkIlVzYWdlOiAkMCB7c3RhcnR8c3RvcHxzdGF0dXN8cmVzdGFydHxyZWxvYWR8Y29uZHJlc3RhcnR9IgotKwllY2hvICJVc2FnZTogJDAge3N0YXJ0fHN0b3B8c3RhdHVzfHJlc3RhcnR8cmVsb2FkfGNvbmRyZXN0YXJ0fSIKLSAJUkVUVkFMPTEKLSAJOzsKLSBlc2FjCi0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNy1lZ2xpYmMtQ3Jvc3MtYnVpbGRpbmctYW5kLXRlc3RpbmctaW5zdHJ1Y3Rpb25zLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTctZWdsaWJjLUNyb3NzLWJ1aWxkaW5nLWFuZC10ZXN0aW5nLWluc3RydWN0aW9ucy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTM5ZDc0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTctZWdsaWJjLUNyb3NzLWJ1aWxkaW5nLWFuZC10ZXN0aW5nLWluc3RydWN0aW9ucy5wYXRjaApAQCAtMCwwICsxLDYxOSBAQAorRnJvbSBjZGM4OGRmZmEyMjY4MTVlM2EyMTg2MDQ2NTU0NTllMzNkYzg2NDgzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6NDI6NTggKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAxNy8yNV0gZWdsaWJjOiBDcm9zcyBidWlsZGluZyBhbmQgdGVzdGluZyBpbnN0cnVjdGlvbnMKKworUG9ydGVkIGZyb20gZWdsaWJjCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIEdMSUJDLmNyb3NzLWJ1aWxkaW5nIHwgMzgzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIEdMSUJDLmNyb3NzLXRlc3RpbmcgIHwgMjA1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKworIDIgZmlsZXMgY2hhbmdlZCwgNTg4IGluc2VydGlvbnMoKykKKyBjcmVhdGUgbW9kZSAxMDA2NDQgR0xJQkMuY3Jvc3MtYnVpbGRpbmcKKyBjcmVhdGUgbW9kZSAxMDA2NDQgR0xJQkMuY3Jvc3MtdGVzdGluZworCitkaWZmIC0tZ2l0IGEvR0xJQkMuY3Jvc3MtYnVpbGRpbmcgYi9HTElCQy5jcm9zcy1idWlsZGluZworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLmU2ZTBkYTFhYWYKKy0tLSAvZGV2L251bGwKKysrKyBiL0dMSUJDLmNyb3NzLWJ1aWxkaW5nCitAQCAtMCwwICsxLDM4MyBAQAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSotIG1vZGU6IHRleHQgLSotCisrCisrICAgICAgICAgICAgICAgICAgICAgICAgQ3Jvc3MtQ29tcGlsaW5nIEdMSUJDCisrICAgICAgICAgICAgICAgICAgSmltIEJsYW5keSA8amltYkBjb2Rlc291cmNlcnkuY29tPgorKworKworK0ludHJvZHVjdGlvbgorKworK01vc3QgR05VIHRvb2xzIGhhdmUgYSBzaW1wbGUgYnVpbGQgcHJvY2VkdXJlOiB5b3UgcnVuIHRoZWlyCisrJ2NvbmZpZ3VyZScgc2NyaXB0LCBhbmQgdGhlbiB5b3UgcnVuICdtYWtlJy4gIFVuZm9ydHVuYXRlbHksIHRoZQorK3Byb2Nlc3Mgb2YgY3Jvc3MtY29tcGlsaW5nIHRoZSBHTlUgQyBsaWJyYXJ5IGlzIHF1aXRlIGEgYml0IG1vcmUKKytpbnZvbHZlZDoKKysKKysxKSBCdWlsZCBhIGNyb3NzLWNvbXBpbGVyLCB3aXRoIGNlcnRhaW4gZmFjaWxpdGllcyBkaXNhYmxlZC4KKysKKysyKSBDb25maWd1cmUgdGhlIEMgbGlicmFyeSB1c2luZyB0aGUgY29tcGlsZXIgeW91IGJ1aWx0IGluIHN0ZXAgMSkuCisrICAgQnVpbGQgYSBmZXcgb2YgdGhlIEMgcnVuLXRpbWUgb2JqZWN0IGZpbGVzLCBidXQgbm90IHRoZSByZXN0IG9mIHRoZQorKyAgIGxpYnJhcnkuICBJbnN0YWxsIHRoZSBsaWJyYXJ5J3MgaGVhZGVyIGZpbGVzIGFuZCB0aGUgcnVuLXRpbWUKKysgICBvYmplY3QgZmlsZXMsIGFuZCBjcmVhdGUgYSBkdW1teSBsaWJjLnNvLgorKworKzMpIEJ1aWxkIGEgc2Vjb25kIGNyb3NzLWNvbXBpbGVyLCB1c2luZyB0aGUgaGVhZGVyIGZpbGVzIGFuZCBvYmplY3QKKysgICBmaWxlcyB5b3UgaW5zdGFsbGVkIGluIHN0ZXAgMi4KKysKKys0KSBDb25maWd1cmUsIGJ1aWxkLCBhbmQgaW5zdGFsbCBhIGZyZXNoIEMgbGlicmFyeSwgdXNpbmcgdGhlIGNvbXBpbGVyCisrICAgYnVpbHQgaW4gc3RlcCAzLgorKworKzUpIEJ1aWxkIGEgdGhpcmQgY3Jvc3MtY29tcGlsZXIsIGJhc2VkIG9uIHRoZSBDIGxpYnJhcnkgYnVpbHQgaW4gc3RlcCA0LgorKworK1RoZSByZWFzb24gZm9yIHRoaXMgY29tcGxleGl0eSBpcyB0aGF0LCBhbHRob3VnaCBHQ0MgYW5kIHRoZSBHTlUgQworK2xpYnJhcnkgYXJlIGRpc3RyaWJ1dGVkIHNlcGFyYXRlbHksIHRoZXkgYXJlIG5vdCBhY3R1YWxseSBpbmRlcGVuZGVudAorK29mIGVhY2ggb3RoZXI6IEdDQyByZXF1aXJlcyB0aGUgQyBsaWJyYXJ5J3MgaGVhZGVycyBhbmQgc29tZSBvYmplY3QKKytmaWxlcyB0byBjb21waWxlIGl0cyBvd24gbGlicmFyaWVzLCB3aGlsZSB0aGUgQyBsaWJyYXJ5IGRlcGVuZHMgb24KKytHQ0MncyBsaWJyYXJpZXMuICBHTElCQyBpbmNsdWRlcyBmZWF0dXJlcyBhbmQgYnVnIGZpeGVzIHRvIHRoZSBzdG9jaworK0dOVSBDIGxpYnJhcnkgdGhhdCBzaW1wbGlmeSB0aGlzIHByb2Nlc3MsIGJ1dCB0aGUgZnVuZGFtZW50YWwKKytpbnRlcmRlcGVuZGVuY3kgc3RhbmRzLgorKworK0luIHRoaXMgZG9jdW1lbnQsIHdlIGV4cGxhaW4gaG93IHRvIGNyb3NzLWNvbXBpbGUgYW4gR0xJQkMvR0NDIHBhaXIKKytmcm9tIHNvdXJjZS4gIE91ciBpbnRlbmRlZCBhdWRpZW5jZSBpcyBkZXZlbG9wZXJzIHdobyBhcmUgYWxyZWFkeQorK2ZhbWlsaWFyIHdpdGggdGhlIEdOVSB0b29sY2hhaW4gYW5kIGNvbWZvcnRhYmxlIHdvcmtpbmcgd2l0aAorK2Nyb3NzLWRldmVsb3BtZW50IHRvb2xzLiAgV2hpbGUgd2UgZG8gcHJlc2VudCBhIHdvcmtlZCBleGFtcGxlIHRvCisrYWNjb21wYW55IHRoZSBleHBsYW5hdGlvbiwgZm9yIGNsYXJpdHkncyBzYWtlIHdlIGRvIG5vdCBjb3ZlciBtYW55IG9mCisrdGhlIG9wdGlvbnMgYXZhaWxhYmxlIHRvIGNyb3NzLXRvb2xjaGFpbiB1c2Vycy4KKysKKysKKytQcmVwYXJhdGlvbgorKworK0dMSUJDIHJlcXVpcmVzIHJlY2VudCB2ZXJzaW9ucyBvZiB0aGUgR05VIGJpbnV0aWxzLCBHQ0MsIGFuZCB0aGUKKytMaW51eCBrZXJuZWwuICBUaGUgd2ViIHBhZ2UgPGh0dHA6Ly93d3cuZWdsaWJjLm9yZy9wcmVyZXF1aXNpdGVzPgorK2RvY3VtZW50cyB0aGUgY3VycmVudCByZXF1aXJlbWVudHMsIGFuZCBsaXN0cyBwYXRjaGVzIG5lZWRlZCBmb3IKKytjZXJ0YWluIHRhcmdldCBhcmNoaXRlY3R1cmVzLiAgQXMgb2YgdGhpcyB3cml0aW5nLCB0aGVzZSBidWlsZAorK2luc3RydWN0aW9ucyBoYXZlIGJlZW4gdGVzdGVkIHdpdGggYmludXRpbHMgMi4yMi41MSwgR0NDIDQuNi4yLAorK2FuZCBMaW51eCAzLjEuCisrCisrRmlyc3QsIGxldCdzIHNldCBzb21lIHZhcmlhYmxlcywgdG8gc2ltcGxpZnkgbGF0ZXIgY29tbWFuZHMuICBXZSdsbAorK2J1aWxkIEdMSUJDIGFuZCBHQ0MgZm9yIGFuIEFSTSB0YXJnZXQsIGtub3duIHRvIHRoZSBMaW51eCBrZXJuZWwKKythcyAnYXJtJywgYW5kIHdlJ2xsIGRvIHRoZSBidWlsZCBvbiBhbiBJbnRlbCB4ODZfNjQgTGludXggYm94OgorKworKyAgICAkIGJ1aWxkPXg4Nl82NC1wYy1saW51eC1nbnUKKysgICAgJCBob3N0PSRidWlsZAorKyAgICAkIHRhcmdldD1hcm0tbm9uZS1saW51eC1nbnVlYWJpCisrICAgICQgbGludXhfYXJjaD1hcm0KKysKKytXZSdyZSB1c2luZyB0aGUgYWZvcmVtZW50aW9uZWQgdmVyc2lvbnMgb2YgQmludXRpbHMsIEdDQywgYW5kIExpbnV4OgorKworKyAgICAkIGJpbnV0aWxzdj1iaW51dGlscy0yLjIyLjUxCisrICAgICQgZ2Njdj1nY2MtNC42LjIKKysgICAgJCBsaW51eHY9bGludXgtMy4xCisrCisrV2UncmUgY2Fycnlpbmcgb3V0IHRoZSBlbnRpcmUgcHJvY2VzcyB1bmRlciAnfi9jcm9zcy1idWlsZCcsIHdoaWNoCisrY29udGFpbnMgdW5wYWNrZWQgc291cmNlIHRyZWVzIGZvciBiaW51dGlscywgZ2NjLCBhbmQgbGludXgga2VybmVsLAorK2Fsb25nIHdpdGggR0xJQkMgc3ZuIHRydW5rICh3aGljaCBjYW4gYmUgY2hlY2tlZC1vdXQgd2l0aAorKydzdm4gY28gaHR0cDovL3d3dy5lZ2xpYmMub3JnL3N2bi90cnVuayBlZ2xpYmMnKToKKysKKysgICAgJCB0b3A9JEhPTUUvY3Jvc3MtYnVpbGQvJHRhcmdldAorKyAgICAkIHNyYz0kSE9NRS9jcm9zcy1idWlsZC9zcmMKKysgICAgJCBscyAkc3JjCisrICAgIGJpbnV0aWxzLTIuMjIuNTEgIGdsaWJjICBnY2MtNC42LjIgIGxpbnV4LTMuMQorKworK1dlJ3JlIGdvaW5nIHRvIHBsYWNlIG91ciBidWlsZCBkaXJlY3RvcmllcyBpbiBhIHN1YmRpcmVjdG9yeSAnb2JqJywKKyt3ZSdsbCBpbnN0YWxsIHRoZSBjcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW4gaW4gJ3Rvb2xzJywgYW5kIHdlJ2xsCisrcGxhY2Ugb3VyIHN5c3Jvb3QgKGNvbnRhaW5pbmcgZmlsZXMgdG8gYmUgaW5zdGFsbGVkIG9uIHRoZSB0YXJnZXQKKytzeXN0ZW0pIGluICdzeXNyb290JzoKKysKKysgICAgJCBvYmo9JHRvcC9vYmoKKysgICAgJCB0b29scz0kdG9wL3Rvb2xzCisrICAgICQgc3lzcm9vdD0kdG9wL3N5c3Jvb3QKKysKKysKKytCaW51dGlscworKworK0NvbmZpZ3VyaW5nIGFuZCBidWlsZGluZyBiaW51dGlscyBmb3IgdGhlIHRhcmdldCBpcyBzdHJhaWdodGZvcndhcmQ6CisrCisrICAgICQgbWtkaXIgLXAgJG9iai9iaW51dGlscworKyAgICAkIGNkICRvYmovYmludXRpbHMKKysgICAgJCAkc3JjLyRiaW51dGlsc3YvY29uZmlndXJlIFwKKysgICAgPiAgICAgLS10YXJnZXQ9JHRhcmdldCBcCisrICAgID4gICAgIC0tcHJlZml4PSR0b29scyBcCisrICAgID4gICAgIC0td2l0aC1zeXNyb290PSRzeXNyb290CisrICAgICQgbWFrZQorKyAgICAkIG1ha2UgaW5zdGFsbAorKworKworK1RoZSBGaXJzdCBHQ0MKKysKKytGb3Igb3VyIHdvcmssIHdlIG5lZWQgYSBjcm9zcy1jb21waWxlciB0YXJnZXRpbmcgYW4gQVJNIExpbnV4Cisrc3lzdGVtLiAgSG93ZXZlciwgdGhhdCBjb25maWd1cmF0aW9uIGluY2x1ZGVzIHRoZSBzaGFyZWQgbGlicmFyeQorKydsaWJnY2Nfcy5zbycsIHdoaWNoIGlzIGNvbXBpbGVkIGFnYWluc3QgdGhlIEdMSUJDIGhlYWRlcnMgKHdoaWNoIHdlCisraGF2ZW4ndCBpbnN0YWxsZWQgeWV0KSBhbmQgbGlua2VkIGFnYWluc3QgJ2xpYmMuc28nICh3aGljaCB3ZSBoYXZlbid0CisrYnVpbHQgeWV0KS4KKysKKytGb3J0dW5hdGVseSwgdGhlcmUgYXJlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgR0NDIHdoaWNoIHRlbGwgaXQgbm90CisrdG8gYnVpbGQgJ2xpYmdjY19zLnNvJy4gIFRoZSAnLS13aXRob3V0LWhlYWRlcnMnIG9wdGlvbiBpcyBzdXBwb3NlZCB0bworK3Rha2UgY2FyZSBvZiB0aGlzLCBidXQgaXRzIGltcGxlbWVudGF0aW9uIGlzIGluY29tcGxldGUsIHNvIHlvdSBtdXN0CisrYWxzbyBjb25maWd1cmUgd2l0aCB0aGUgJy0td2l0aC1uZXdsaWInIG9wdGlvbi4gIFdoaWxlICctLXdpdGgtbmV3bGliJworK2FwcGVhcnMgdG8gbWVhbiAiVXNlIHRoZSBOZXdsaWIgQyBsaWJyYXJ5IiwgaXRzIGVmZmVjdCBpcyB0byB0ZWxsIHRoZQorK0dDQyBidWlsZCBtYWNoaW5lcnksICJEb24ndCBhc3N1bWUgdGhlcmUgaXMgYSBDIGxpYnJhcnkgYXZhaWxhYmxlLiIKKysKKytXZSBhbHNvIG5lZWQgdG8gZGlzYWJsZSBzb21lIG9mIHRoZSBsaWJyYXJpZXMgdGhhdCB3b3VsZCBub3JtYWxseSBiZQorK2J1aWx0IGFsb25nIHdpdGggR0NDLCBhbmQgc3BlY2lmeSB0aGF0IG9ubHkgdGhlIGNvbXBpbGVyIGZvciB0aGUgQworK2xhbmd1YWdlIGlzIG5lZWRlZC4KKysKKytTbywgd2UgY3JlYXRlIGEgYnVpbGQgZGlyZWN0b3J5LCBjb25maWd1cmUsIG1ha2UsIGFuZCBpbnN0YWxsLgorKworKyAgICAkIG1rZGlyIC1wICRvYmovZ2NjMQorKyAgICAkIGNkICRvYmovZ2NjMQorKyAgICAkICRzcmMvJGdjY3YvY29uZmlndXJlIFwKKysgICAgPiAgICAgLS10YXJnZXQ9JHRhcmdldCBcCisrICAgID4gICAgIC0tcHJlZml4PSR0b29scyBcCisrICAgID4gICAgIC0td2l0aG91dC1oZWFkZXJzIC0td2l0aC1uZXdsaWIgXAorKyAgICA+ICAgICAtLWRpc2FibGUtc2hhcmVkIC0tZGlzYWJsZS10aHJlYWRzIC0tZGlzYWJsZS1saWJzc3AgXAorKyAgICA+ICAgICAtLWRpc2FibGUtbGliZ29tcCAtLWRpc2FibGUtbGlibXVkZmxhcCAtLWRpc2FibGUtbGlicXVhZG1hdGggXAorKyAgICA+ICAgICAtLWRpc2FibGUtZGVjaW1hbC1mbG9hdCAtLWRpc2FibGUtbGliZmZpIFwKKysgICAgPiAgICAgLS1lbmFibGUtbGFuZ3VhZ2VzPWMKKysgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZQorKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlIGluc3RhbGwKKysKKysKKytMaW51eCBLZXJuZWwgSGVhZGVycworKworK1RvIGNvbmZpZ3VyZSBHTElCQywgd2UgYWxzbyBuZWVkIExpbnV4IGtlcm5lbCBoZWFkZXJzIGluIHBsYWNlLgorK0ZvcnR1bmF0ZWx5LCB0aGUgTGludXggbWFrZWZpbGVzIGhhdmUgYSB0YXJnZXQgdGhhdCBpbnN0YWxscyB0aGVtIGZvcgorK3VzLiAgU2luY2UgdGhlIHByb2Nlc3MgZG9lcyBtb2RpZnkgdGhlIHNvdXJjZSB0cmVlIGEgYml0LCB3ZSBtYWtlIGEKKytjb3B5IGZpcnN0OgorKworKyAgICAkIGNwIC1yICRzcmMvJGxpbnV4diAkb2JqL2xpbnV4CisrICAgICQgY2QgJG9iai9saW51eAorKworK05vdyB3ZSdyZSByZWFkeSB0byBpbnN0YWxsIHRoZSBoZWFkZXJzIGludG8gdGhlIHN5c3Jvb3Q6CisrCisrICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIFwKKysgICAgPiBtYWtlIGhlYWRlcnNfaW5zdGFsbCBcCisrICAgID4gICAgICBBUkNIPSRsaW51eF9hcmNoIENST1NTX0NPTVBJTEU9JHRhcmdldC0gXAorKyAgICA+ICAgICAgSU5TVEFMTF9IRFJfUEFUSD0kc3lzcm9vdC91c3IKKysKKysKKytHTElCQyBIZWFkZXJzIGFuZCBQcmVsaW1pbmFyeSBPYmplY3RzCisrCisrVXNpbmcgdGhlIGNyb3NzLWNvbXBpbGVyIHdlJ3ZlIGp1c3QgYnVpbHQsIHdlIGNhbiBub3cgY29uZmlndXJlIEdMSUJDCisrd2VsbCBlbm91Z2ggdG8gaW5zdGFsbCB0aGUgaGVhZGVycyBhbmQgYnVpbGQgdGhlIG9iamVjdCBmaWxlcyB0aGF0IHRoZQorK2Z1bGwgY3Jvc3MtY29tcGlsZXIgd2lsbCBuZWVkOgorKworKyAgICAkIG1rZGlyIC1wICRvYmovZ2xpYmMtaGVhZGVycworKyAgICAkIGNkICRvYmovZ2xpYmMtaGVhZGVycworKyAgICAkIEJVSUxEX0NDPWdjYyBcCisrICAgID4gQ0M9JHRvb2xzL2Jpbi8kdGFyZ2V0LWdjYyBcCisrICAgID4gQ1hYPSR0b29scy9iaW4vJHRhcmdldC1nKysgXAorKyAgICA+IEFSPSR0b29scy9iaW4vJHRhcmdldC1hciBcCisrICAgID4gUkFOTElCPSR0b29scy9iaW4vJHRhcmdldC1yYW5saWIgXAorKyAgICA+ICRzcmMvZ2xpYmMvbGliYy9jb25maWd1cmUgXAorKyAgICA+ICAgICAtLXByZWZpeD0vdXNyIFwKKysgICAgPiAgICAgLS13aXRoLWhlYWRlcnM9JHN5c3Jvb3QvdXNyL2luY2x1ZGUgXAorKyAgICA+ICAgICAtLWJ1aWxkPSRidWlsZCBcCisrICAgID4gICAgIC0taG9zdD0kdGFyZ2V0IFwKKysgICAgPiAgICAgLS1kaXNhYmxlLXByb2ZpbGUgLS13aXRob3V0LWdkIC0td2l0aG91dC1jdnMgXAorKyAgICA+ICAgICAtLWVuYWJsZS1hZGQtb25zPW5wdGwsbGliaWRuLC4uL3BvcnRzCisrCisrVGhlIG9wdGlvbiAnLS1wcmVmaXg9L3VzcicgbWF5IGxvb2sgc3RyYW5nZSwgYnV0IHlvdSBzaG91bGQgbmV2ZXIKKytjb25maWd1cmUgR0xJQkMgd2l0aCBhIHByZWZpeCBvdGhlciB0aGFuICcvdXNyJzogaW4gdmFyaW91cyBwbGFjZXMsCisrR0xJQkMncyBidWlsZCBzeXN0ZW0gY2hlY2tzIHdoZXRoZXIgdGhlIHByZWZpeCBpcyAnL3VzcicsIGFuZCBkb2VzCisrc3BlY2lhbCBoYW5kbGluZyBvbmx5IGlmIHRoYXQgaXMgdGhlIGNhc2UuICBVbmxlc3MgeW91IHVzZSB0aGlzCisrcHJlZml4LCB5b3Ugd2lsbCBnZXQgYSBzeXNyb290IHRoYXQgZG9lcyBub3QgdXNlIHRoZSBzdGFuZGFyZCBMaW51eAorK2RpcmVjdG9yeSBsYXlvdXRzIGFuZCBjYW5ub3QgYmUgdXNlZCBhcyBhIGJhc2lzIGZvciB0aGUgcm9vdAorK2ZpbGVzeXN0ZW0gb24geW91ciB0YXJnZXQgc3lzdGVtIGNvbXBhdGlibHkgd2l0aCBub3JtYWwgR0xJQkMKKytpbnN0YWxsYXRpb25zLgorKworK1RoZSAnLS13aXRoLWhlYWRlcnMnIG9wdGlvbiB0ZWxscyBHTElCQyB3aGVyZSB0aGUgTGludXggaGVhZGVycyBoYXZlCisrYmVlbiBpbnN0YWxsZWQuCisrCisrVGhlICctLWVuYWJsZS1hZGQtb25zPW5wdGwsbGliaWRuLC4uL3BvcnRzJyBvcHRpb24gdGVsbHMgR0xJQkMgdG8gbG9vaworK2ZvciB0aGUgbGlzdGVkIGdsaWJjIGFkZC1vbnMuIE1vc3Qgbm90YWJseSB0aGUgcG9ydHMgYWRkLW9uIChsb2NhdGVkCisranVzdCBhYm92ZSB0aGUgbGliYyBzb3VyY2VzIGluIHRoZSBHTElCQyBzdm4gdHJlZSkgaXMgcmVxdWlyZWQgdG8KKytzdXBwb3J0IEFSTSB0YXJnZXRzLgorKworK1dlIGNhbiBub3cgdXNlIHRoZSAnaW5zdGFsbC1oZWFkZXJzJyBtYWtlZmlsZSB0YXJnZXQgdG8gaW5zdGFsbCB0aGUKKytoZWFkZXJzOgorKworKyAgICAkIG1ha2UgaW5zdGFsbC1oZWFkZXJzIGluc3RhbGxfcm9vdD0kc3lzcm9vdCBcCisrICAgID4gICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbC1ib290c3RyYXAtaGVhZGVycz15ZXMKKysKKytUaGUgJ2luc3RhbGxfcm9vdCcgdmFyaWFibGUgaW5kaWNhdGVzIHdoZXJlIHRoZSBmaWxlcyBzaG91bGQgYWN0dWFsbHkKKytiZSBpbnN0YWxsZWQ7IGl0cyB2YWx1ZSBpcyB0cmVhdGVkIGFzIHRoZSBwYXJlbnQgb2YgdGhlICctLXByZWZpeCcKKytkaXJlY3Rvcnkgd2UgcGFzc2VkIHRvIHRoZSBjb25maWd1cmUgc2NyaXB0LCBzbyB0aGUgaGVhZGVycyB3aWxsIGdvIGluCisrJyRzeXNyb290L3Vzci9pbmNsdWRlJy4gIFRoZSAnaW5zdGFsbC1ib290c3RyYXAtaGVhZGVycycgdmFyaWFibGUKKytyZXF1ZXN0cyBzcGVjaWFsIGhhbmRsaW5nIGZvciBjZXJ0YWluIHRyaWNreSBoZWFkZXIgZmlsZXMuCisrCisrTmV4dCwgdGhlcmUgYXJlIGEgZmV3IG9iamVjdCBmaWxlcyBuZWVkZWQgdG8gbGluayBzaGFyZWQgbGlicmFyaWVzLAorK3doaWNoIHdlIGJ1aWxkIGFuZCBpbnN0YWxsIGJ5IGhhbmQ6CisrCisrICAgICQgbWtkaXIgLXAgJHN5c3Jvb3QvdXNyL2xpYgorKyAgICAkIG1ha2UgY3N1L3N1YmRpcl9saWIKKysgICAgJCBjcCBjc3UvY3J0MS5vIGNzdS9jcnRpLm8gY3N1L2NydG4ubyAkc3lzcm9vdC91c3IvbGliCisrCisrRmluYWxseSwgJ2xpYmdjY19zLnNvJyByZXF1aXJlcyBhICdsaWJjLnNvJyB0byBsaW5rIGFnYWluc3QuICBIb3dldmVyLAorK3NpbmNlIHdlIHdpbGwgbmV2ZXIgYWN0dWFsbHkgZXhlY3V0ZSBpdHMgY29kZSwgaXQgZG9lc24ndCBtYXR0ZXIgd2hhdAorK2l0IGNvbnRhaW5zLiAgU28sIHRyZWF0aW5nICcvZGV2L251bGwnIGFzIGEgQyBzb3VyY2UgZmlsZSwgd2UgcHJvZHVjZQorK2EgZHVtbXkgJ2xpYmMuc28nIGluIG9uZSBzdGVwOgorKworKyAgICAkICR0b29scy9iaW4vJHRhcmdldC1nY2MgLW5vc3RkbGliIC1ub3N0YXJ0ZmlsZXMgLXNoYXJlZCAteCBjIC9kZXYvbnVsbCBcCisrICAgID4gICAgICAgICAgICAgICAgICAgICAgICAtbyAkc3lzcm9vdC91c3IvbGliL2xpYmMuc28KKysKKysKKytUaGUgU2Vjb25kIEdDQworKworK1dpdGggdGhlIEdMSUJDIGhlYWRlcnMgYW5kIHNlbGVjdGVkIG9iamVjdCBmaWxlcyBpbnN0YWxsZWQsIHdlIGNhbgorK25vdyBidWlsZCBhIEdDQyB0aGF0IGlzIGNhcGFibGUgb2YgY29tcGlsaW5nIEdMSUJDLiAgV2UgY29uZmlndXJlLAorK2J1aWxkLCBhbmQgaW5zdGFsbCB0aGUgc2Vjb25kIEdDQywgYWdhaW4gYnVpbGRpbmcgb25seSB0aGUgQyBjb21waWxlciwKKythbmQgYXZvaWRpbmcgbGlicmFyaWVzIHdlIHdvbid0IHVzZToKKysKKysgICAgJCBta2RpciAtcCAkb2JqL2djYzIKKysgICAgJCBjZCAkb2JqL2djYzIKKysgICAgJCAkc3JjLyRnY2N2L2NvbmZpZ3VyZSBcCisrICAgID4gICAgIC0tdGFyZ2V0PSR0YXJnZXQgXAorKyAgICA+ICAgICAtLXByZWZpeD0kdG9vbHMgXAorKyAgICA+ICAgICAtLXdpdGgtc3lzcm9vdD0kc3lzcm9vdCBcCisrICAgID4gICAgIC0tZGlzYWJsZS1saWJzc3AgLS1kaXNhYmxlLWxpYmdvbXAgLS1kaXNhYmxlLWxpYm11ZGZsYXAgXAorKyAgICA+ICAgICAtLWRpc2FibGUtbGliZmZpIC0tZGlzYWJsZS1saWJxdWFkbWF0aCBcCisrICAgID4gICAgIC0tZW5hYmxlLWxhbmd1YWdlcz1jCisrICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UKKysgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZSBpbnN0YWxsCisrCisrCisrR0xJQkMsIENvbXBsZXRlCisrCisrV2l0aCB0aGUgc2Vjb25kIGNvbXBpbGVyIGJ1aWx0IGFuZCBpbnN0YWxsZWQsIHdlJ3JlIG5vdyByZWFkeSBmb3IgdGhlCisrZnVsbCBHTElCQyBidWlsZDoKKysKKysgICAgJCBta2RpciAtcCAkb2JqL2dsaWJjCisrICAgICQgY2QgJG9iai9nbGliYworKyAgICAkIEJVSUxEX0NDPWdjYyBcCisrICAgID4gQ0M9JHRvb2xzL2Jpbi8kdGFyZ2V0LWdjYyBcCisrICAgID4gQ1hYPSR0b29scy9iaW4vJHRhcmdldC1nKysgXAorKyAgICA+IEFSPSR0b29scy9iaW4vJHRhcmdldC1hciBcCisrICAgID4gUkFOTElCPSR0b29scy9iaW4vJHRhcmdldC1yYW5saWIgXAorKyAgICA+ICRzcmMvZ2xpYmMvbGliYy9jb25maWd1cmUgXAorKyAgICA+ICAgICAtLXByZWZpeD0vdXNyIFwKKysgICAgPiAgICAgLS13aXRoLWhlYWRlcnM9JHN5c3Jvb3QvdXNyL2luY2x1ZGUgXAorKyAgICA+ICAgICAtLXdpdGgta2NvbmZpZz0kb2JqL2xpbnV4L3NjcmlwdHMva2NvbmZpZyBcCisrICAgID4gICAgIC0tYnVpbGQ9JGJ1aWxkIFwKKysgICAgPiAgICAgLS1ob3N0PSR0YXJnZXQgXAorKyAgICA+ICAgICAtLWRpc2FibGUtcHJvZmlsZSAtLXdpdGhvdXQtZ2QgLS13aXRob3V0LWN2cyBcCisrICAgID4gICAgIC0tZW5hYmxlLWFkZC1vbnM9bnB0bCxsaWJpZG4sLi4vcG9ydHMKKysKKytOb3RlIHRoZSBhZGRpdGlvbmFsICctLXdpdGgta2NvbmZpZycgb3B0aW9uLiBUaGlzIHRlbGxzIEdMSUJDIHdoZXJlIHRvCisrZmluZCB0aGUgaG9zdCBjb25maWcgdG9vbHMgdXNlZCBieSB0aGUga2VybmVsICdtYWtlIGNvbmZpZycgYW5kICdtYWtlCisrbWVudWNvbmZpZycuICBUaGVzZSB0b29scyBjYW4gYmUgcmUtdXNlZCBieSBHTElCQyBmb3IgaXRzIG93biAnbWFrZQorKypjb25maWcnIHN1cHBvcnQsIHdoaWNoIHdpbGwgY3JlYXRlICdvcHRpb24tZ3JvdXBzLmNvbmZpZycgZm9yIHlvdS4KKytCdXQgZmlyc3QgbWFrZSBzdXJlIHRob3NlIHRvb2xzIGhhdmUgYmVlbiBidWlsdCBieSBydW5uaW5nIHNvbWUKKytkdW1teSAnbWFrZSAqY29uZmlnJyBjYWxscyBpbiB0aGUga2VybmVsIGRpcmVjdG9yeToKKysKKysgICAgJCBjZCAkb2JqL2xpbnV4CisrICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgY29uZmlnIFwKKysgICAgPiAgICAgIEFSQ0g9JGxpbnV4X2FyY2ggQ1JPU1NfQ09NUElMRT0kdGFyZ2V0LSBcCisrICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgbWVudWNvbmZpZyBcCisrICAgID4gICAgICBBUkNIPSRsaW51eF9hcmNoIENST1NTX0NPTVBJTEU9JHRhcmdldC0gXAorKworK05vdyB3ZSBjYW4gY29uZmlndXJlIGFuZCBidWlsZCB0aGUgZnVsbCBHTElCQzoKKysKKysgICAgJCBjZCAkb2JqL2dsaWJjCisrICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgZGVmY29uZmlnCisrICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgbWVudWNvbmZpZworKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlCisrICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgaW5zdGFsbCBpbnN0YWxsX3Jvb3Q9JHN5c3Jvb3QKKysKKytBdCB0aGlzIHBvaW50LCB3ZSBoYXZlIGEgY29tcGxldGUgR0xJQkMgaW5zdGFsbGF0aW9uIGluICckc3lzcm9vdCcsCisrd2l0aCBoZWFkZXIgZmlsZXMsIGxpYnJhcnkgZmlsZXMsIGFuZCBtb3N0IG9mIHRoZSBDIHJ1bnRpbWUgc3RhcnR1cAorK2ZpbGVzIGluIHBsYWNlLgorKworKworK1RoZSBUaGlyZCBHQ0MKKysKKytGaW5hbGx5LCB3ZSByZWNvbXBpbGUgR0NDIGFnYWluc3QgdGhpcyBmdWxsIGluc3RhbGxhdGlvbiwgZW5hYmxpbmcKKyt3aGF0ZXZlciBsYW5ndWFnZXMgYW5kIGxpYnJhcmllcyB3ZSB3b3VsZCBsaWtlIHRvIHVzZToKKysKKysgICAgJCBta2RpciAtcCAkb2JqL2djYzMKKysgICAgJCBjZCAkb2JqL2djYzMKKysgICAgJCAkc3JjLyRnY2N2L2NvbmZpZ3VyZSBcCisrICAgID4gICAgIC0tdGFyZ2V0PSR0YXJnZXQgXAorKyAgICA+ICAgICAtLXByZWZpeD0kdG9vbHMgXAorKyAgICA+ICAgICAtLXdpdGgtc3lzcm9vdD0kc3lzcm9vdCBcCisrICAgID4gICAgIC0tZW5hYmxlLV9fY3hhX2F0ZXhpdCBcCisrICAgID4gICAgIC0tZGlzYWJsZS1saWJzc3AgLS1kaXNhYmxlLWxpYmdvbXAgLS1kaXNhYmxlLWxpYm11ZGZsYXAgXAorKyAgICA+ICAgICAtLWVuYWJsZS1sYW5ndWFnZXM9YyxjKysKKysgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZQorKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlIGluc3RhbGwKKysKKytUaGUgJy0tZW5hYmxlLV9fY3hhX2F0ZXhpdCcgb3B0aW9uIHRlbGxzIEdDQyB3aGF0IHNvcnQgb2YgQysrCisrZGVzdHJ1Y3RvciBzdXBwb3J0IHRvIGV4cGVjdCBmcm9tIHRoZSBDIGxpYnJhcnk7IGl0J3MgcmVxdWlyZWQgd2l0aAorK0dMSUJDLgorKworK0FuZCBzaW5jZSBHQ0MncyBpbnN0YWxsYXRpb24gcHJvY2VzcyBpc24ndCBkZXNpZ25lZCB0byBoZWxwIGNvbnN0cnVjdAorK3N5c3Jvb3QgdHJlZXMsIHdlIG11c3QgbWFudWFsbHkgY29weSBjZXJ0YWluIGxpYnJhcmllcyBpbnRvIHBsYWNlIGluCisrdGhlIHN5c3Jvb3QuCisrCisrICAgICQgY3AgLWQgJHRvb2xzLyR0YXJnZXQvbGliL2xpYmdjY19zLnNvKiAkc3lzcm9vdC9saWIKKysgICAgJCBjcCAtZCAkdG9vbHMvJHRhcmdldC9saWIvbGlic3RkYysrLnNvKiAkc3lzcm9vdC91c3IvbGliCisrCisrCisrVHJ5aW5nIFRoaW5ncyBPdXQKKysKKytBdCB0aGlzIHBvaW50LCAnJHRvb2xzJyBjb250YWlucyBhIGNyb3NzIHRvb2xjaGFpbiByZWFkeSB0byB1c2UKKyt0aGUgR0xJQkMgaW5zdGFsbGF0aW9uIGluICckc3lzcm9vdCc6CisrCisrICAgICQgY2F0ID4gaGVsbG8uYyA8PEVPRgorKyAgICA+ICNpbmNsdWRlIDxzdGRpby5oPgorKyAgICA+IGludAorKyAgICA+IG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKKysgICAgPiB7CisrICAgID4gICBwdXRzICgiSGVsbG8sIHdvcmxkISIpOworKyAgICA+ICAgcmV0dXJuIDA7CisrICAgID4gfQorKyAgICA+IEVPRgorKyAgICAkICR0b29scy9iaW4vJHRhcmdldC1nY2MgLVdhbGwgaGVsbG8uYyAtbyBoZWxsbworKyAgICAkIGNhdCA+IGMrKy1oZWxsby5jYyA8PEVPRgorKyAgICA+ICNpbmNsdWRlIDxpb3N0cmVhbT4KKysgICAgPiBpbnQKKysgICAgPiBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisrICAgID4geworKyAgICA+ICAgc3RkOjpjb3V0IDw8ICJIZWxsbywgQysrIHdvcmxkISIgPDwgc3RkOjplbmRsOworKyAgICA+ICAgcmV0dXJuIDA7CisrICAgID4gfQorKyAgICA+IEVPRgorKyAgICAkICR0b29scy9iaW4vJHRhcmdldC1nKysgLVdhbGwgYysrLWhlbGxvLmNjIC1vIGMrKy1oZWxsbworKworKworK1dlIGNhbiB1c2UgJ3JlYWRlbGYnIHRvIHZlcmlmeSB0aGF0IHRoZXNlIGFyZSBpbmRlZWQgZXhlY3V0YWJsZXMgZm9yCisrb3VyIHRhcmdldCwgdXNpbmcgb3VyIGR5bmFtaWMgbGlua2VyOgorKworKyAgICAkICR0b29scy9iaW4vJHRhcmdldC1yZWFkZWxmIC1obCBoZWxsbworKyAgICBFTEYgSGVhZGVyOgorKyAgICAuLi4KKysgICAgICBUeXBlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVYRUMgKEV4ZWN1dGFibGUgZmlsZSkKKysgICAgICBNYWNoaW5lOiAgICAgICAgICAgICAgICAgICAgICAgICAgIEFSTQorKworKyAgICAuLi4KKysgICAgUHJvZ3JhbSBIZWFkZXJzOgorKyAgICAgIFR5cGUgICAgICAgICAgIE9mZnNldCAgIFZpcnRBZGRyICAgUGh5c0FkZHIgICBGaWxlU2l6IE1lbVNpeiAgRmxnIEFsaWduCisrICAgICAgUEhEUiAgICAgICAgICAgMHgwMDAwMzQgMHgxMDAwMDAzNCAweDEwMDAwMDM0IDB4MDAxMDAgMHgwMDEwMCBSIEUgMHg0CisrICAgICAgSU5URVJQICAgICAgICAgMHgwMDAxMzQgMHgwMDAwODEzNCAweDAwMDA4MTM0IDB4MDAwMTMgMHgwMDAxMyBSICAgMHgxCisrICAgICAgICAgIFtSZXF1ZXN0aW5nIHByb2dyYW0gaW50ZXJwcmV0ZXI6IC9saWIvbGQtbGludXguc28uM10KKysgICAgICBMT0FEICAgICAgICAgICAweDAwMDAwMCAweDAwMDA4MDAwIDB4MDAwMDgwMDAgMHgwMDQyYyAweDAwNDJjIFIgRSAweDgwMDAKKysgICAgLi4uCisrCisrTG9va2luZyBhdCB0aGUgZHluYW1pYyBzZWN0aW9uIG9mIHRoZSBpbnN0YWxsZWQgJ2xpYmdjY19zLnNvJywgd2Ugc2VlCisrdGhhdCB0aGUgJ05FRURFRCcgZW50cnkgZm9yIHRoZSBDIGxpYnJhcnkgZG9lcyBpbmNsdWRlIHRoZSAnLjYnCisrc3VmZml4LCBpbmRpY2F0aW5nIHRoYXQgd2FzIGxpbmtlZCBhZ2FpbnN0IG91ciBmdWxseSBidWlsZCBHTElCQywgYW5kCisrbm90IG91ciBkdW1teSAnbGliYy5zbyc6CisrCisrICAgICQgJHRvb2xzL2Jpbi8kdGFyZ2V0LXJlYWRlbGYgLWQgJHN5c3Jvb3QvbGliL2xpYmdjY19zLnNvLjEKKysgICAgRHluYW1pYyBzZWN0aW9uIGF0IG9mZnNldCAweDEwODNjIGNvbnRhaW5zIDI0IGVudHJpZXM6CisrICAgICAgVGFnICAgICAgICBUeXBlICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUvVmFsdWUKKysgICAgIDB4MDAwMDAwMDEgKE5FRURFRCkgICAgICAgICAgICAgICAgICAgICBTaGFyZWQgbGlicmFyeTogW2xpYmMuc28uNl0KKysgICAgIDB4MDAwMDAwMGUgKFNPTkFNRSkgICAgICAgICAgICAgICAgICAgICBMaWJyYXJ5IHNvbmFtZTogW2xpYmdjY19zLnNvLjFdCisrICAgIC4uLgorKworKworK0FuZCBvbiB0aGUgdGFyZ2V0IG1hY2hpbmUsIHdlIGNhbiBydW4gb3VyIHByb2dyYW1zOgorKworKyAgICAkICRzeXNyb290L2xpYi9sZC5zby4xIC0tbGlicmFyeS1wYXRoICRzeXNyb290L2xpYjokc3lzcm9vdC91c3IvbGliIFwKKysgICAgPiAuL2hlbGxvCisrICAgIEhlbGxvLCB3b3JsZCEKKysgICAgJCAkc3lzcm9vdC9saWIvbGQuc28uMSAtLWxpYnJhcnktcGF0aCAkc3lzcm9vdC9saWI6JHN5c3Jvb3QvdXNyL2xpYiBcCisrICAgID4gLi9jKystaGVsbG8KKysgICAgSGVsbG8sIEMrKyB3b3JsZCEKK2RpZmYgLS1naXQgYS9HTElCQy5jcm9zcy10ZXN0aW5nIGIvR0xJQkMuY3Jvc3MtdGVzdGluZworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLmI2N2I0Njg0NjYKKy0tLSAvZGV2L251bGwKKysrKyBiL0dMSUJDLmNyb3NzLXRlc3RpbmcKK0BAIC0wLDAgKzEsMjA1IEBACisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKi0gbW9kZTogdGV4dCAtKi0KKysKKysgICAgICAgICAgICAgICAgICAgICAgQ3Jvc3MtVGVzdGluZyBXaXRoIEdMSUJDCisrICAgICAgICAgICAgICAgICAgSmltIEJsYW5keSA8amltYkBjb2Rlc291cmNlcnkuY29tPgorKworKworK0ludHJvZHVjdGlvbgorKworK0RldmVsb3BlcnMgd3JpdGluZyBzb2Z0d2FyZSBmb3IgZW1iZWRkZWQgc3lzdGVtcyBvZnRlbiB1c2UgYSBkZXNrdG9wCisrb3Igb3RoZXIgc2ltaWxhcmx5IGNhcGFibGUgY29tcHV0ZXIgZm9yIGRldmVsb3BtZW50LCBidXQgbmVlZCB0byBydW4KKyt0ZXN0cyBvbiB0aGUgZW1iZWRkZWQgc3lzdGVtLCBvciBwZXJoYXBzIG9uIGEgc2ltdWxhdG9yLiAgV2hlbgorK2NvbmZpZ3VyZWQgZm9yIGNyb3NzLWNvbXBpbGF0aW9uLCB0aGUgc3RvY2sgR05VIEMgbGlicmFyeSBzaW1wbHkKKytkaXNhYmxlcyBydW5uaW5nIHRlc3RzIGFsdG9nZXRoZXI6IHRoZSBjb21tYW5kICdtYWtlIHRlc3RzJyBidWlsZHMKKyt0ZXN0IHByb2dyYW1zLCBidXQgZG9lcyBub3QgcnVuIHRoZW0uICBHTElCQywgaG93ZXZlciwgcHJvdmlkZXMKKytmYWNpbGl0aWVzIGZvciBjb21waWxpbmcgdGVzdHMgYW5kIGdlbmVyYXRpbmcgZGF0YSBmaWxlcyBvbiB0aGUgYnVpbGQKKytzeXN0ZW0sIGJ1dCBydW5uaW5nIHRoZSB0ZXN0IHByb2dyYW1zIHRoZW1zZWx2ZXMgb24gYSByZW1vdGUgc3lzdGVtIG9yCisrc2ltdWxhdG9yLgorKworKworK1Rlc3QgZW52aXJvbm1lbnQgcmVxdWlyZW1lbnRzCisrCisrVGhlIHRlc3QgZW52aXJvbm1lbnQgbXVzdCBtZWV0IGNlcnRhaW4gY29uZGl0aW9ucyBmb3IgR0xJQkMncworK2Nyb3NzLXRlc3RpbmcgZmFjaWxpdGllcyB0byB3b3JrOgorKworKy0gU2hhcmVkIGZpbGVzeXN0ZW1zLiAgVGhlICdidWlsZCcgc3lzdGVtLCBvbiB3aGljaCB5b3UgY29uZmlndXJlIGFuZAorKyAgY29tcGlsZSBHTElCQywgYW5kIHRoZSAnaG9zdCcgc3lzdGVtLCBvbiB3aGljaCB5b3UgaW50ZW5kIHRvIHJ1bgorKyAgR0xJQkMsIG11c3Qgc2hhcmUgYSBmaWxlc3lzdGVtIGNvbnRhaW5pbmcgdGhlIEdMSUJDIGJ1aWxkIGFuZAorKyAgc291cmNlIHRyZWVzLiAgRmlsZXMgbXVzdCBhcHBlYXIgYXQgdGhlIHNhbWUgcGF0aHMgb24gYm90aCBzeXN0ZW1zLgorKworKy0gUmVtb3RlLXNoZWxsIGxpa2UgaW52b2NhdGlvbi4gIFRoZXJlIG11c3QgYmUgYSB3YXkgdG8gcnVuIGEgcHJvZ3JhbQorKyAgb24gdGhlIGhvc3Qgc3lzdGVtIGZyb20gdGhlIGJ1aWxkIHN5c3RlbSwgcGFzc2luZyBpdCBwcm9wZXJseSBxdW90ZWQKKysgIGNvbW1hbmQtbGluZSBhcmd1bWVudHMsIHNldHRpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzLCBhbmQKKysgIGluaGVyaXRpbmcgdGhlIGNhbGxlcidzIHN0YW5kYXJkIGlucHV0IGFuZCBvdXRwdXQuCisrCisrCisrVXNhZ2UKKysKKytUbyB1c2UgR0xJQkMncyBjcm9zcy10ZXN0aW5nIHN1cHBvcnQsIHByb3ZpZGUgdmFsdWVzIGZvciB0aGUKKytmb2xsb3dpbmcgTWFrZSB2YXJpYWJsZXMgd2hlbiB5b3UgaW52b2tlICdtYWtlJzoKKysKKystIGNyb3NzLXRlc3Qtd3JhcHBlcgorKworKyAgVGhpcyBzaG91bGQgYmUgdGhlIG5hbWUgb2YgdGhlIGNyb3NzLXRlc3Rpbmcgd3JhcHBlciBjb21tYW5kLCBhbG9uZworKyAgd2l0aCBhbnkgYXJndW1lbnRzLgorKworKy0gY3Jvc3MtbG9jYWxlZGVmCisrCisrICBUaGlzIHNob3VsZCBiZSB0aGUgbmFtZSBvZiBhIGNyb3NzLWNhcGFibGUgbG9jYWxlZGVmIHByb2dyYW0sIGxpa2UKKysgIHRoYXQgaW5jbHVkZWQgaW4gdGhlIEdMSUJDICdsb2NhbGVkZWYnIG1vZHVsZSwgYWxvbmcgd2l0aCBhbnkKKysgIGFyZ3VtZW50cyBuZWVkZWQuCisrCisrVGhlc2UgYXJlIGVhY2ggZXhwbGFpbmVkIGluIGRldGFpbCBiZWxvdy4KKysKKysKKytUaGUgQ3Jvc3MtVGVzdGluZyBXcmFwcGVyCisrCisrVG8gcnVuIHRlc3QgcHJvZ3JhbXMgcmVsaWFibHksIHRoZSBzdG9jayBHTlUgQyBsaWJyYXJ5IHRha2VzIGNhcmUgdG8KKytlbnN1cmUgdGhhdCB0ZXN0IHByb2dyYW1zIHVzZSB0aGUgbmV3bHkgY29tcGlsZWQgZHluYW1pYyBsaW5rZXIgYW5kCisrc2hhcmVkIGxpYnJhcmllcywgYW5kIG5ldmVyIHRoZSBob3N0IHN5c3RlbSdzIGluc3RhbGxlZCBsaWJyYXJpZXMuICBUbworK2FjY29tcGxpc2ggdGhpcywgaXQgcnVucyB0aGUgdGVzdHMgYnkgZXhwbGljaXRseSBpbnZva2luZyB0aGUgZHluYW1pYworK2xpbmtlciBmcm9tIHRoZSBidWlsZCB0cmVlLCBwYXNzaW5nIGl0IGEgbGlzdCBvZiBidWlsZCB0cmVlCisrZGlyZWN0b3JpZXMgdG8gc2VhcmNoIGZvciBzaGFyZWQgbGlicmFyaWVzLCBmb2xsb3dlZCBieSB0aGUgbmFtZSBvZgorK3RoZSBleGVjdXRhYmxlIHRvIHJ1biBhbmQgaXRzIGFyZ3VtZW50cy4KKysKKytGb3IgZXhhbXBsZSwgd2hlcmUgb25lIG1pZ2h0IG5vcm1hbGx5IHJ1biBhIHRlc3QgcHJvZ3JhbSBsaWtlIHRoaXM6CisrCisrICAgICQgLi90c3QtZm9vIGFyZzEgYXJnMgorKworK3RoZSBHTlUgQyBsaWJyYXJ5IG1pZ2h0IHJ1biB0aGF0IHByb2dyYW0gbGlrZSB0aGlzOgorKworKyAgICAkICRvYmpkaXIvZWxmL2xkLWxpbnV4LnNvLjMgLS1saWJyYXJ5LXBhdGggJG9iamRpciBcCisrICAgICAgLi90c3QtZm9vIGFyZzEgYXJnMgorKworKyh3aGVyZSAkb2JqZGlyIGlzIHRoZSBwYXRoIHRvIHRoZSB0b3Agb2YgdGhlIGJ1aWxkIHRyZWUsIGFuZCB0aGUKKyt0cmFpbGluZyBiYWNrc2xhc2ggaW5kaWNhdGVzIGEgY29udGludWF0aW9uIG9mIHRoZSBjb21tYW5kKS4gIEluIG90aGVyCisrd29yZHMsIGVhY2ggdGVzdCBwcm9ncmFtIGludm9jYXRpb24gaXMgJ3dyYXBwZWQgdXAnIGluc2lkZSBhbiBleHBsaWNpdAorK2ludm9jYXRpb24gb2YgdGhlIGR5bmFtaWMgbGlua2VyLCB3aGljaCBtdXN0IGl0c2VsZiBleGVjdXRlIHRoZSB0ZXN0CisrcHJvZ3JhbSwgaGF2aW5nIGxvYWRlZCBzaGFyZWQgbGlicmFyaWVzIGZyb20gdGhlIGFwcHJvcHJpYXRlCisrZGlyZWN0b3JpZXMuCisrCisrVG8gc3VwcG9ydCBjcm9zcy10ZXN0aW5nLCBHTElCQyBhbGxvd3MgdGhlIGRldmVsb3BlciB0byBvcHRpb25hbGx5Cisrc2V0IHRoZSAnY3Jvc3MtdGVzdC13cmFwcGVyJyBNYWtlIHZhcmlhYmxlIHRvIGFub3RoZXIgd3JhcHBlciBjb21tYW5kLAorK3RvIHdoaWNoIGl0IHBhc3NlcyB0aGUgZW50aXJlIGR5bmFtaWMgbGlua2VyIGludm9jYXRpb24gc2hvd24gYWJvdmUgYXMKKythcmd1bWVudHMuICBGb3IgZXhhbXBsZSwgaWYgdGhlIGRldmVsb3BlciBzdXBwbGllcyBhIHdyYXBwZXIgb2YKKysnbXktd3JhcHBlciBob3N0bmFtZScsIHRoZW4gR0xJQkMgd291bGQgcnVuIHRoZSB0ZXN0IGFib3ZlIGFzCisrZm9sbG93czoKKysKKysgICAgJCBteS13cmFwcGVyIGhvc3RuYW1lIFwKKysgICAgICAkb2JqZGlyL2VsZi9sZC1saW51eC5zby4zIC0tbGlicmFyeS1wYXRoICRvYmpkaXIgXAorKyAgICAgIC4vdHN0LWZvbyBhcmcxIGFyZzIKKysKKytUaGUgJ215LXdyYXBwZXInIGNvbW1hbmQgaXMgcmVzcG9uc2libGUgZm9yIGV4ZWN1dGluZyB0aGUgY29tbWFuZAorK2dpdmVuIG9uIHRoZSBob3N0IHN5c3RlbS4KKysKKytTaW5jZSB0ZXN0cyBhcmUgcnVuIGluIHZhcnlpbmcgZGlyZWN0b3JpZXMsIHRoZSB3cmFwcGVyIHNob3VsZCBlaXRoZXIKKytiZSBpbiB5b3VyIGNvbW1hbmQgc2VhcmNoIHBhdGgsIG9yICdjcm9zcy10ZXN0LXdyYXBwZXInIHNob3VsZCBnaXZlIGFuCisrYWJzb2x1dGUgcGF0aCBmb3IgdGhlIHdyYXBwZXIuCisrCisrVGhlIHdyYXBwZXIgbXVzdCBtZWV0IHNldmVyYWwgcmVxdWlyZW1lbnRzOgorKworKy0gSXQgbXVzdCBwcmVzZXJ2ZSB0aGUgY3VycmVudCBkaXJlY3RvcnkuICBBcyBleHBsYWluZWQgYWJvdmUsIHRoZQorKyAgYnVpbGQgZGlyZWN0b3J5IHRyZWUgbXVzdCBiZSB2aXNpYmxlIG9uIGJvdGggdGhlIGJ1aWxkIGFuZCBob3N0CisrICBzeXN0ZW1zLCBhdCB0aGUgc2FtZSBwYXRoLiAgVGhlIHRlc3Qgd3JhcHBlciBtdXN0IGVuc3VyZSB0aGF0IHRoZQorKyAgY3VycmVudCBkaXJlY3RvcnkgaXQgaW5oZXJpdHMgaXMgYWxzbyBpbmhlcml0ZWQgYnkgdGhlIGR5bmFtaWMKKysgIGxpbmtlciAoYW5kIHRodXMgdGhlIHRlc3QgcHJvZ3JhbSBpdHNlbGYpLgorKworKy0gSXQgbXVzdCBwcmVzZXJ2ZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMnIHZhbHVlcy4gIE1hbnkgR0xJQkMgdGVzdHMKKysgIHNldCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yIHRlc3QgcnVuczsgaW4gbmF0aXZlIHRlc3RpbmcsIGl0CisrICBpbnZva2VzIHByb2dyYW1zIGxpa2UgdGhpczoKKysKKysgICAgJCBHQ09OVl9QQVRIPSRvYmpkaXIvaWNvbnZkYXRhIFwKKysgICAgICAkb2JqZGlyL2VsZi9sZC1saW51eC5zby4zIC0tbGlicmFyeS1wYXRoICRvYmpkaXIgXAorKyAgICAgIC4vdHN0LWZvbyBhcmcxIGFyZzIKKysKKysgIFdpdGggdGhlIGNyb3NzLXRlc3Rpbmcgd3JhcHBlciwgdGhhdCBpbnZvY2F0aW9uIGJlY29tZXM6CisrCisrICAgICQgR0NPTlZfUEFUSD0kb2JqZGlyL2ljb252ZGF0YSBcCisrICAgICAgbXktd3JhcHBlciBob3N0bmFtZSBcCisrICAgICAgJG9iamRpci9lbGYvbGQtbGludXguc28uMyAtLWxpYnJhcnktcGF0aCAkb2JqZGlyIFwKKysgICAgICAuL3RzdC1mb28gYXJnMSBhcmcyCisrCisrICBIZXJlLCAnbXktd3JhcHBlcicgbXVzdCBlbnN1cmUgdGhhdCB0aGUgdmFsdWUgaXQgc2VlcyBmb3IKKysgICdHQ09OVl9QQVRIJyB3aWxsIGJlIHNlZW4gYnkgdGhlIGR5bmFtaWMgbGlua2VyLCBhbmQgdGh1cyAndHN0LWZvbycKKysgIGl0c2VsZi4gIChUaGUgd3JhcHBlciBzdXBwbGllZCB3aXRoIEdMSUJDIHNpbXBseSBwcmVzZXJ2ZXMgdGhlCisrICB2YWx1ZXMgb2YgKmFsbCogZW52aXJvbWVudCB2YXJpYWJsZXMsIHdpdGggYSBmaXhlZCBzZXQgb2YKKysgIGV4Y2VwdGlvbnMuKQorKworKyAgSWYgeW91ciB3cmFwcGVyIGlzIGEgc2hlbGwgc2NyaXB0LCB0YWtlIGNhcmUgdG8gY29ycmVjdGx5IHByb3BhZ2F0ZQorKyAgZW52aXJvbm1lbnQgdmFyaWFibGVzIHdob3NlIHZhbHVlcyBjb250YWluIHNwYWNlcyBhbmQgc2hlbGwKKysgIG1ldGFjaGFyYWN0ZXJzLgorKworKy0gSXQgbXVzdCBwYXNzIHRoZSBjb21tYW5kJ3MgYXJndW1lbnRzLCB1bm1vZGlmaWVkLiAgVGhlIGFyZ3VtZW50cworKyAgc2VlbiBieSB0aGUgdGVzdCBwcm9ncmFtIHNob3VsZCBiZSBleGFjdGx5IHRob3NlIHNlZW4gYnkgdGhlIHdyYXBwZXIKKysgIChhZnRlciB3aGF0ZXZlciBhcmd1bWVudHMgYXJlIGdpdmVuIHRvIHRoZSB3cmFwcGVyIGl0c2VsZikuICBUaGUKKysgIEdMSUJDIHRlc3QgZnJhbWV3b3JrIHBlcmZvcm1zIGFsbCBuZWVkZWQgc2hlbGwgd29yZCBzcGxpdHRpbmcgYW5kCisrICBleHBhbnNpb24gKHdpbGRjYXJkIGV4cGFuc2lvbiwgcGFyYW1ldGVyIHN1YnN0aXR1dGlvbiwgYW5kIHNvIG9uKQorKyAgYmVmb3JlIGludm9raW5nIHRoZSB3cmFwcGVyOyBmdXJ0aGVyIGV4cGFuc2lvbiBtYXkgYnJlYWsgdGhlIHRlc3RzLgorKworKworK1RoZSAnY3Jvc3MtdGVzdC1zc2guc2gnIHNjcmlwdAorKworK0lmIHlvdSB3YW50IHRvIHVzZSAnc3NoJyAob3Igc29tZXRoaW5nIHN1ZmZpY2llbnRseSBzaW1pbGFyKSB0byBydW4KKyt0ZXN0IHByb2dyYW1zIG9uIHlvdXIgaG9zdCBzeXN0ZW0sIEdMSUJDIGluY2x1ZGVzIGEgc2hlbGwgc2NyaXB0LAorKydzY3JpcHRzL2Nyb3NzLXRlc3Qtc3NoLnNoJywgd2hpY2ggeW91IGNhbiB1c2UgYXMgeW91ciB3cmFwcGVyCisrY29tbWFuZC4gIFRoaXMgc2NyaXB0IHRha2VzIGNhcmUgb2Ygc2V0dGluZyB0aGUgdGVzdCBjb21tYW5kJ3MgY3VycmVudAorK2RpcmVjdG9yeSwgcHJvcGFnYXRpbmcgZW52aXJvbm1lbnQgdmFyaWFibGUgdmFsdWVzLCBhbmQgY2FycnlpbmcKKytjb21tYW5kLWxpbmUgYXJndW1lbnRzLCBhbGwgYWNyb3NzIGFuICdzc2gnIGNvbm5lY3Rpb24uICBZb3UgbWF5IGV2ZW4KKytzdXBwbHkgYW4gYWx0ZXJuYXRpdmUgdG8gJ3NzaCcgb24gdGhlIGNvbW1hbmQgbGluZSwgaWYgbmVlZGVkLgorKworK0ZvciBtb3JlIGRldGFpbHMsIHBhc3MgJ2Nyb3NzLXRlc3Qtc3NoLnNoJyB0aGUgJy0taGVscCcgb3B0aW9uLgorKworKworK1RoZSBDcm9zcy1Db21waWxpbmcgTG9jYWxlIERlZmluaXRpb24gQ29tbWFuZAorKworK1NvbWUgR0xJQkMgdGVzdHMgcmVseSBvbiBsb2NhbGVzIGdlbmVyYXRlZCBlc3BlY2lhbGx5IGZvciB0aGUgdGVzdAorK3Byb2Nlc3MuICBJbiBhIG5hdGl2ZSBjb25maWd1cmF0aW9uLCB0aGVzZSB0ZXN0cyBzaW1wbHkgcnVuIHRoZQorKydsb2NhbGVkZWYnIGNvbW1hbmQgYnVpbHQgYnkgdGhlIG5vcm1hbCBHTElCQyBidWlsZCBwcm9jZXNzLAorKydsb2NhbGUvbG9jYWxlZGVmJywgdG8gcHJvY2VzcyBhbmQgaW5zdGFsbCB0aGVpciBsb2NhbGVzLiAgSG93ZXZlciwgaW4KKythIGNyb3NzLWNvbXBpbGluZyBjb25maWd1cmF0aW9uLCB0aGlzICdsb2NhbGVkZWYnIGlzIGJ1aWx0IGZvciB0aGUKKytob3N0IHN5c3RlbSwgbm90IHRoZSBidWlsZCBzeXN0ZW0sIGFuZCBzaW5jZSBpdCByZXF1aXJlcyBxdWl0ZSBhIGJpdAorK29mIG1lbW9yeSB0byBydW4gKHdlIGhhdmUgc2VlbiBpdCBmYWlsIG9uIHN5c3RlbXMgd2l0aCA2NE1pQiBvZgorK21lbW9yeSksIGl0IG1heSBub3QgYmUgcHJhY3RpY2FsIHRvIHJ1biBpdCBvbiB0aGUgaG9zdCBzeXN0ZW0uCisrCisrSWYgc2V0LCBHTElCQyB1c2VzIHRoZSAnY3Jvc3MtbG9jYWxlZGVmJyBNYWtlIHZhcmlhYmxlIGFzIHRoZSBjb21tYW5kCisrdG8gcnVuIG9uIHRoZSBidWlsZCBzeXN0ZW0gdG8gcHJvY2VzcyBhbmQgaW5zdGFsbCBsb2NhbGVzLiAgVGhlCisrbG9jYWxlZGVmIHByb2dyYW0gYnVpbHQgZnJvbSB0aGUgR0xJQkMgJ2xvY2FsZWRlZicgbW9kdWxlIGlzCisrc3VpdGFibGUuCisrCisrVGhlIHZhbHVlIG9mICdjcm9zcy1sb2NhbGVkZWYnIG1heSBhbHNvIGluY2x1ZGUgY29tbWFuZC1saW5lIGFyZ3VtZW50cworK3RvIGJlIHBhc3NlZCB0byB0aGUgcHJvZ3JhbTsgaWYgeW91IGFyZSB1c2luZyBHTElCQydzICdsb2NhbGVkZWYnLAorK3lvdSBtYXkgaW5jbHVkZSBlbmRpYW5uZXNzIGFuZCAndWludDMyX3QnIGFsaWdubWVudCBhcmd1bWVudHMgaGVyZS4KKysKKysKKytFeGFtcGxlCisrCisrSW4gZGV2ZWxvcGluZyBHTElCQydzIGNyb3NzLXRlc3RpbmcgZmFjaWxpdHksIHdlIGludm9rZWQgJ21ha2UnIHdpdGgKKyt0aGUgZm9sbG93aW5nIHNjcmlwdDoKKysKKysgICAgIyEvYmluL3NoCisrCisrICAgIHNyY2Rpcj0uLi4KKysgICAgdGVzdF9ob3N0bmFtZT0uLi4KKysgICAgbG9jYWxlZGVmZGlyPS4uLgorKyAgICBjcm9zc19neHg9Li4uLWcrKworKworKyAgICB3cmFwcGVyPSIkc3JjZGlyL3NjcmlwdHMvY3Jvc3MtdGVzdC1zc2guc2ggJHRlc3RfaG9zdG5hbWUiCisrICAgIGxvY2FsZWRlZj0iJGxvY2FsZWRlZmRpci9sb2NhbGVkZWYgLS1saXR0bGUtZW5kaWFuIC0tdWludDMyLWFsaWduPTQiCisrCisrICAgIG1ha2UgY3Jvc3MtdGVzdC13cmFwcGVyPSIkd3JhcHBlciIgXAorKyAgICAgICAgIGNyb3NzLWxvY2FsZWRlZj0iJGxvY2FsZWRlZiIgXAorKyAgICAgICAgIENYWD0iJGNyb3NzX2d4eCIgXAorKyAgICAgICAgICIkQCIKKysKKysKKytPdGhlciBDcm9zcy1UZXN0aW5nIENvbmNlcm5zCisrCisrSGVyZSBhcmUgbm90ZXMgb24gc29tZSBvdGhlciBpc3N1ZXMgd2hpY2ggeW91IG1heSBlbmNvdW50ZXIgaW4gcnVubmluZworK3RoZSBHTElCQyB0ZXN0cyBpbiBhIGNyb3NzLWNvbXBpbGluZyBlbnZpcm9ubWVudDoKKysKKystIFNvbWUgdGVzdHMgcmVxdWlyZSBhIEMrKyBjcm9zcy1jb21waWxlcjsgeW91IHNob3VsZCBzZXQgdGhlICdDWFgnCisrICBNYWtlIHZhcmlhYmxlIHRvIHRoZSBuYW1lIG9mIGFuIGFwcHJvcHJpYXRlIGNyb3NzLWNvbXBpbGVyLgorKworKy0gU29tZSB0ZXN0cyByZXF1aXJlIGFjY2VzcyB0byBsaWJzdGRjKysuc28uNiBhbmQgbGliZ2NjX3Muc28uMTsgd2UKKysgIHNpbXBseSBwbGFjZSBjb3BpZXMgb2YgdGhlc2UgbGlicmFyaWVzIGluIHRoZSB0b3AgR0xJQkMgYnVpbGQKKysgIGRpcmVjdG9yeS4KKy0tIAorMi4xMy4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE4LWVnbGliYy1Dcm9zcy1idWlsZGluZy1hbmQtdGVzdGluZy1pbnN0cnVjdGlvbnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxOC1lZ2xpYmMtQ3Jvc3MtYnVpbGRpbmctYW5kLXRlc3RpbmctaW5zdHJ1Y3Rpb25zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZWMwMWYwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE4LWVnbGliYy1Dcm9zcy1idWlsZGluZy1hbmQtdGVzdGluZy1pbnN0cnVjdGlvbnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MTkgKzAsMCBAQAotRnJvbSBkZjk2ZDZiNjFiYjYwZjEzY2QzZDQ5ODlkMWFmYzU2ZDcwNWY0YTMzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6NDI6NTggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxOC8yNl0gZWdsaWJjOiBDcm9zcyBidWlsZGluZyBhbmQgdGVzdGluZyBpbnN0cnVjdGlvbnMKLQotUG9ydGVkIGZyb20gZWdsaWJjCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIEdMSUJDLmNyb3NzLWJ1aWxkaW5nIHwgMzgzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIEdMSUJDLmNyb3NzLXRlc3RpbmcgIHwgMjA1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgNTg4IGluc2VydGlvbnMoKykKLSBjcmVhdGUgbW9kZSAxMDA2NDQgR0xJQkMuY3Jvc3MtYnVpbGRpbmcKLSBjcmVhdGUgbW9kZSAxMDA2NDQgR0xJQkMuY3Jvc3MtdGVzdGluZwotCi1kaWZmIC0tZ2l0IGEvR0xJQkMuY3Jvc3MtYnVpbGRpbmcgYi9HTElCQy5jcm9zcy1idWlsZGluZwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmU2ZTBkYTEKLS0tLSAvZGV2L251bGwKLSsrKyBiL0dMSUJDLmNyb3NzLWJ1aWxkaW5nCi1AQCAtMCwwICsxLDM4MyBAQAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSotIG1vZGU6IHRleHQgLSotCi0rCi0rICAgICAgICAgICAgICAgICAgICAgICAgQ3Jvc3MtQ29tcGlsaW5nIEdMSUJDCi0rICAgICAgICAgICAgICAgICAgSmltIEJsYW5keSA8amltYkBjb2Rlc291cmNlcnkuY29tPgotKwotKwotK0ludHJvZHVjdGlvbgotKwotK01vc3QgR05VIHRvb2xzIGhhdmUgYSBzaW1wbGUgYnVpbGQgcHJvY2VkdXJlOiB5b3UgcnVuIHRoZWlyCi0rJ2NvbmZpZ3VyZScgc2NyaXB0LCBhbmQgdGhlbiB5b3UgcnVuICdtYWtlJy4gIFVuZm9ydHVuYXRlbHksIHRoZQotK3Byb2Nlc3Mgb2YgY3Jvc3MtY29tcGlsaW5nIHRoZSBHTlUgQyBsaWJyYXJ5IGlzIHF1aXRlIGEgYml0IG1vcmUKLStpbnZvbHZlZDoKLSsKLSsxKSBCdWlsZCBhIGNyb3NzLWNvbXBpbGVyLCB3aXRoIGNlcnRhaW4gZmFjaWxpdGllcyBkaXNhYmxlZC4KLSsKLSsyKSBDb25maWd1cmUgdGhlIEMgbGlicmFyeSB1c2luZyB0aGUgY29tcGlsZXIgeW91IGJ1aWx0IGluIHN0ZXAgMSkuCi0rICAgQnVpbGQgYSBmZXcgb2YgdGhlIEMgcnVuLXRpbWUgb2JqZWN0IGZpbGVzLCBidXQgbm90IHRoZSByZXN0IG9mIHRoZQotKyAgIGxpYnJhcnkuICBJbnN0YWxsIHRoZSBsaWJyYXJ5J3MgaGVhZGVyIGZpbGVzIGFuZCB0aGUgcnVuLXRpbWUKLSsgICBvYmplY3QgZmlsZXMsIGFuZCBjcmVhdGUgYSBkdW1teSBsaWJjLnNvLgotKwotKzMpIEJ1aWxkIGEgc2Vjb25kIGNyb3NzLWNvbXBpbGVyLCB1c2luZyB0aGUgaGVhZGVyIGZpbGVzIGFuZCBvYmplY3QKLSsgICBmaWxlcyB5b3UgaW5zdGFsbGVkIGluIHN0ZXAgMi4KLSsKLSs0KSBDb25maWd1cmUsIGJ1aWxkLCBhbmQgaW5zdGFsbCBhIGZyZXNoIEMgbGlicmFyeSwgdXNpbmcgdGhlIGNvbXBpbGVyCi0rICAgYnVpbHQgaW4gc3RlcCAzLgotKwotKzUpIEJ1aWxkIGEgdGhpcmQgY3Jvc3MtY29tcGlsZXIsIGJhc2VkIG9uIHRoZSBDIGxpYnJhcnkgYnVpbHQgaW4gc3RlcCA0LgotKwotK1RoZSByZWFzb24gZm9yIHRoaXMgY29tcGxleGl0eSBpcyB0aGF0LCBhbHRob3VnaCBHQ0MgYW5kIHRoZSBHTlUgQwotK2xpYnJhcnkgYXJlIGRpc3RyaWJ1dGVkIHNlcGFyYXRlbHksIHRoZXkgYXJlIG5vdCBhY3R1YWxseSBpbmRlcGVuZGVudAotK29mIGVhY2ggb3RoZXI6IEdDQyByZXF1aXJlcyB0aGUgQyBsaWJyYXJ5J3MgaGVhZGVycyBhbmQgc29tZSBvYmplY3QKLStmaWxlcyB0byBjb21waWxlIGl0cyBvd24gbGlicmFyaWVzLCB3aGlsZSB0aGUgQyBsaWJyYXJ5IGRlcGVuZHMgb24KLStHQ0MncyBsaWJyYXJpZXMuICBHTElCQyBpbmNsdWRlcyBmZWF0dXJlcyBhbmQgYnVnIGZpeGVzIHRvIHRoZSBzdG9jawotK0dOVSBDIGxpYnJhcnkgdGhhdCBzaW1wbGlmeSB0aGlzIHByb2Nlc3MsIGJ1dCB0aGUgZnVuZGFtZW50YWwKLStpbnRlcmRlcGVuZGVuY3kgc3RhbmRzLgotKwotK0luIHRoaXMgZG9jdW1lbnQsIHdlIGV4cGxhaW4gaG93IHRvIGNyb3NzLWNvbXBpbGUgYW4gR0xJQkMvR0NDIHBhaXIKLStmcm9tIHNvdXJjZS4gIE91ciBpbnRlbmRlZCBhdWRpZW5jZSBpcyBkZXZlbG9wZXJzIHdobyBhcmUgYWxyZWFkeQotK2ZhbWlsaWFyIHdpdGggdGhlIEdOVSB0b29sY2hhaW4gYW5kIGNvbWZvcnRhYmxlIHdvcmtpbmcgd2l0aAotK2Nyb3NzLWRldmVsb3BtZW50IHRvb2xzLiAgV2hpbGUgd2UgZG8gcHJlc2VudCBhIHdvcmtlZCBleGFtcGxlIHRvCi0rYWNjb21wYW55IHRoZSBleHBsYW5hdGlvbiwgZm9yIGNsYXJpdHkncyBzYWtlIHdlIGRvIG5vdCBjb3ZlciBtYW55IG9mCi0rdGhlIG9wdGlvbnMgYXZhaWxhYmxlIHRvIGNyb3NzLXRvb2xjaGFpbiB1c2Vycy4KLSsKLSsKLStQcmVwYXJhdGlvbgotKwotK0dMSUJDIHJlcXVpcmVzIHJlY2VudCB2ZXJzaW9ucyBvZiB0aGUgR05VIGJpbnV0aWxzLCBHQ0MsIGFuZCB0aGUKLStMaW51eCBrZXJuZWwuICBUaGUgd2ViIHBhZ2UgPGh0dHA6Ly93d3cuZWdsaWJjLm9yZy9wcmVyZXF1aXNpdGVzPgotK2RvY3VtZW50cyB0aGUgY3VycmVudCByZXF1aXJlbWVudHMsIGFuZCBsaXN0cyBwYXRjaGVzIG5lZWRlZCBmb3IKLStjZXJ0YWluIHRhcmdldCBhcmNoaXRlY3R1cmVzLiAgQXMgb2YgdGhpcyB3cml0aW5nLCB0aGVzZSBidWlsZAotK2luc3RydWN0aW9ucyBoYXZlIGJlZW4gdGVzdGVkIHdpdGggYmludXRpbHMgMi4yMi41MSwgR0NDIDQuNi4yLAotK2FuZCBMaW51eCAzLjEuCi0rCi0rRmlyc3QsIGxldCdzIHNldCBzb21lIHZhcmlhYmxlcywgdG8gc2ltcGxpZnkgbGF0ZXIgY29tbWFuZHMuICBXZSdsbAotK2J1aWxkIEdMSUJDIGFuZCBHQ0MgZm9yIGFuIEFSTSB0YXJnZXQsIGtub3duIHRvIHRoZSBMaW51eCBrZXJuZWwKLSthcyAnYXJtJywgYW5kIHdlJ2xsIGRvIHRoZSBidWlsZCBvbiBhbiBJbnRlbCB4ODZfNjQgTGludXggYm94OgotKwotKyAgICAkIGJ1aWxkPXg4Nl82NC1wYy1saW51eC1nbnUKLSsgICAgJCBob3N0PSRidWlsZAotKyAgICAkIHRhcmdldD1hcm0tbm9uZS1saW51eC1nbnVlYWJpCi0rICAgICQgbGludXhfYXJjaD1hcm0KLSsKLStXZSdyZSB1c2luZyB0aGUgYWZvcmVtZW50aW9uZWQgdmVyc2lvbnMgb2YgQmludXRpbHMsIEdDQywgYW5kIExpbnV4OgotKwotKyAgICAkIGJpbnV0aWxzdj1iaW51dGlscy0yLjIyLjUxCi0rICAgICQgZ2Njdj1nY2MtNC42LjIKLSsgICAgJCBsaW51eHY9bGludXgtMy4xCi0rCi0rV2UncmUgY2Fycnlpbmcgb3V0IHRoZSBlbnRpcmUgcHJvY2VzcyB1bmRlciAnfi9jcm9zcy1idWlsZCcsIHdoaWNoCi0rY29udGFpbnMgdW5wYWNrZWQgc291cmNlIHRyZWVzIGZvciBiaW51dGlscywgZ2NjLCBhbmQgbGludXgga2VybmVsLAotK2Fsb25nIHdpdGggR0xJQkMgc3ZuIHRydW5rICh3aGljaCBjYW4gYmUgY2hlY2tlZC1vdXQgd2l0aAotKydzdm4gY28gaHR0cDovL3d3dy5lZ2xpYmMub3JnL3N2bi90cnVuayBlZ2xpYmMnKToKLSsKLSsgICAgJCB0b3A9JEhPTUUvY3Jvc3MtYnVpbGQvJHRhcmdldAotKyAgICAkIHNyYz0kSE9NRS9jcm9zcy1idWlsZC9zcmMKLSsgICAgJCBscyAkc3JjCi0rICAgIGJpbnV0aWxzLTIuMjIuNTEgIGdsaWJjICBnY2MtNC42LjIgIGxpbnV4LTMuMQotKwotK1dlJ3JlIGdvaW5nIHRvIHBsYWNlIG91ciBidWlsZCBkaXJlY3RvcmllcyBpbiBhIHN1YmRpcmVjdG9yeSAnb2JqJywKLSt3ZSdsbCBpbnN0YWxsIHRoZSBjcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW4gaW4gJ3Rvb2xzJywgYW5kIHdlJ2xsCi0rcGxhY2Ugb3VyIHN5c3Jvb3QgKGNvbnRhaW5pbmcgZmlsZXMgdG8gYmUgaW5zdGFsbGVkIG9uIHRoZSB0YXJnZXQKLStzeXN0ZW0pIGluICdzeXNyb290JzoKLSsKLSsgICAgJCBvYmo9JHRvcC9vYmoKLSsgICAgJCB0b29scz0kdG9wL3Rvb2xzCi0rICAgICQgc3lzcm9vdD0kdG9wL3N5c3Jvb3QKLSsKLSsKLStCaW51dGlscwotKwotK0NvbmZpZ3VyaW5nIGFuZCBidWlsZGluZyBiaW51dGlscyBmb3IgdGhlIHRhcmdldCBpcyBzdHJhaWdodGZvcndhcmQ6Ci0rCi0rICAgICQgbWtkaXIgLXAgJG9iai9iaW51dGlscwotKyAgICAkIGNkICRvYmovYmludXRpbHMKLSsgICAgJCAkc3JjLyRiaW51dGlsc3YvY29uZmlndXJlIFwKLSsgICAgPiAgICAgLS10YXJnZXQ9JHRhcmdldCBcCi0rICAgID4gICAgIC0tcHJlZml4PSR0b29scyBcCi0rICAgID4gICAgIC0td2l0aC1zeXNyb290PSRzeXNyb290Ci0rICAgICQgbWFrZQotKyAgICAkIG1ha2UgaW5zdGFsbAotKwotKwotK1RoZSBGaXJzdCBHQ0MKLSsKLStGb3Igb3VyIHdvcmssIHdlIG5lZWQgYSBjcm9zcy1jb21waWxlciB0YXJnZXRpbmcgYW4gQVJNIExpbnV4Ci0rc3lzdGVtLiAgSG93ZXZlciwgdGhhdCBjb25maWd1cmF0aW9uIGluY2x1ZGVzIHRoZSBzaGFyZWQgbGlicmFyeQotKydsaWJnY2Nfcy5zbycsIHdoaWNoIGlzIGNvbXBpbGVkIGFnYWluc3QgdGhlIEdMSUJDIGhlYWRlcnMgKHdoaWNoIHdlCi0raGF2ZW4ndCBpbnN0YWxsZWQgeWV0KSBhbmQgbGlua2VkIGFnYWluc3QgJ2xpYmMuc28nICh3aGljaCB3ZSBoYXZlbid0Ci0rYnVpbHQgeWV0KS4KLSsKLStGb3J0dW5hdGVseSwgdGhlcmUgYXJlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgR0NDIHdoaWNoIHRlbGwgaXQgbm90Ci0rdG8gYnVpbGQgJ2xpYmdjY19zLnNvJy4gIFRoZSAnLS13aXRob3V0LWhlYWRlcnMnIG9wdGlvbiBpcyBzdXBwb3NlZCB0bwotK3Rha2UgY2FyZSBvZiB0aGlzLCBidXQgaXRzIGltcGxlbWVudGF0aW9uIGlzIGluY29tcGxldGUsIHNvIHlvdSBtdXN0Ci0rYWxzbyBjb25maWd1cmUgd2l0aCB0aGUgJy0td2l0aC1uZXdsaWInIG9wdGlvbi4gIFdoaWxlICctLXdpdGgtbmV3bGliJwotK2FwcGVhcnMgdG8gbWVhbiAiVXNlIHRoZSBOZXdsaWIgQyBsaWJyYXJ5IiwgaXRzIGVmZmVjdCBpcyB0byB0ZWxsIHRoZQotK0dDQyBidWlsZCBtYWNoaW5lcnksICJEb24ndCBhc3N1bWUgdGhlcmUgaXMgYSBDIGxpYnJhcnkgYXZhaWxhYmxlLiIKLSsKLStXZSBhbHNvIG5lZWQgdG8gZGlzYWJsZSBzb21lIG9mIHRoZSBsaWJyYXJpZXMgdGhhdCB3b3VsZCBub3JtYWxseSBiZQotK2J1aWx0IGFsb25nIHdpdGggR0NDLCBhbmQgc3BlY2lmeSB0aGF0IG9ubHkgdGhlIGNvbXBpbGVyIGZvciB0aGUgQwotK2xhbmd1YWdlIGlzIG5lZWRlZC4KLSsKLStTbywgd2UgY3JlYXRlIGEgYnVpbGQgZGlyZWN0b3J5LCBjb25maWd1cmUsIG1ha2UsIGFuZCBpbnN0YWxsLgotKwotKyAgICAkIG1rZGlyIC1wICRvYmovZ2NjMQotKyAgICAkIGNkICRvYmovZ2NjMQotKyAgICAkICRzcmMvJGdjY3YvY29uZmlndXJlIFwKLSsgICAgPiAgICAgLS10YXJnZXQ9JHRhcmdldCBcCi0rICAgID4gICAgIC0tcHJlZml4PSR0b29scyBcCi0rICAgID4gICAgIC0td2l0aG91dC1oZWFkZXJzIC0td2l0aC1uZXdsaWIgXAotKyAgICA+ICAgICAtLWRpc2FibGUtc2hhcmVkIC0tZGlzYWJsZS10aHJlYWRzIC0tZGlzYWJsZS1saWJzc3AgXAotKyAgICA+ICAgICAtLWRpc2FibGUtbGliZ29tcCAtLWRpc2FibGUtbGlibXVkZmxhcCAtLWRpc2FibGUtbGlicXVhZG1hdGggXAotKyAgICA+ICAgICAtLWRpc2FibGUtZGVjaW1hbC1mbG9hdCAtLWRpc2FibGUtbGliZmZpIFwKLSsgICAgPiAgICAgLS1lbmFibGUtbGFuZ3VhZ2VzPWMKLSsgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZQotKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlIGluc3RhbGwKLSsKLSsKLStMaW51eCBLZXJuZWwgSGVhZGVycwotKwotK1RvIGNvbmZpZ3VyZSBHTElCQywgd2UgYWxzbyBuZWVkIExpbnV4IGtlcm5lbCBoZWFkZXJzIGluIHBsYWNlLgotK0ZvcnR1bmF0ZWx5LCB0aGUgTGludXggbWFrZWZpbGVzIGhhdmUgYSB0YXJnZXQgdGhhdCBpbnN0YWxscyB0aGVtIGZvcgotK3VzLiAgU2luY2UgdGhlIHByb2Nlc3MgZG9lcyBtb2RpZnkgdGhlIHNvdXJjZSB0cmVlIGEgYml0LCB3ZSBtYWtlIGEKLStjb3B5IGZpcnN0OgotKwotKyAgICAkIGNwIC1yICRzcmMvJGxpbnV4diAkb2JqL2xpbnV4Ci0rICAgICQgY2QgJG9iai9saW51eAotKwotK05vdyB3ZSdyZSByZWFkeSB0byBpbnN0YWxsIHRoZSBoZWFkZXJzIGludG8gdGhlIHN5c3Jvb3Q6Ci0rCi0rICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIFwKLSsgICAgPiBtYWtlIGhlYWRlcnNfaW5zdGFsbCBcCi0rICAgID4gICAgICBBUkNIPSRsaW51eF9hcmNoIENST1NTX0NPTVBJTEU9JHRhcmdldC0gXAotKyAgICA+ICAgICAgSU5TVEFMTF9IRFJfUEFUSD0kc3lzcm9vdC91c3IKLSsKLSsKLStHTElCQyBIZWFkZXJzIGFuZCBQcmVsaW1pbmFyeSBPYmplY3RzCi0rCi0rVXNpbmcgdGhlIGNyb3NzLWNvbXBpbGVyIHdlJ3ZlIGp1c3QgYnVpbHQsIHdlIGNhbiBub3cgY29uZmlndXJlIEdMSUJDCi0rd2VsbCBlbm91Z2ggdG8gaW5zdGFsbCB0aGUgaGVhZGVycyBhbmQgYnVpbGQgdGhlIG9iamVjdCBmaWxlcyB0aGF0IHRoZQotK2Z1bGwgY3Jvc3MtY29tcGlsZXIgd2lsbCBuZWVkOgotKwotKyAgICAkIG1rZGlyIC1wICRvYmovZ2xpYmMtaGVhZGVycwotKyAgICAkIGNkICRvYmovZ2xpYmMtaGVhZGVycwotKyAgICAkIEJVSUxEX0NDPWdjYyBcCi0rICAgID4gQ0M9JHRvb2xzL2Jpbi8kdGFyZ2V0LWdjYyBcCi0rICAgID4gQ1hYPSR0b29scy9iaW4vJHRhcmdldC1nKysgXAotKyAgICA+IEFSPSR0b29scy9iaW4vJHRhcmdldC1hciBcCi0rICAgID4gUkFOTElCPSR0b29scy9iaW4vJHRhcmdldC1yYW5saWIgXAotKyAgICA+ICRzcmMvZ2xpYmMvbGliYy9jb25maWd1cmUgXAotKyAgICA+ICAgICAtLXByZWZpeD0vdXNyIFwKLSsgICAgPiAgICAgLS13aXRoLWhlYWRlcnM9JHN5c3Jvb3QvdXNyL2luY2x1ZGUgXAotKyAgICA+ICAgICAtLWJ1aWxkPSRidWlsZCBcCi0rICAgID4gICAgIC0taG9zdD0kdGFyZ2V0IFwKLSsgICAgPiAgICAgLS1kaXNhYmxlLXByb2ZpbGUgLS13aXRob3V0LWdkIC0td2l0aG91dC1jdnMgXAotKyAgICA+ICAgICAtLWVuYWJsZS1hZGQtb25zPW5wdGwsbGliaWRuLC4uL3BvcnRzCi0rCi0rVGhlIG9wdGlvbiAnLS1wcmVmaXg9L3VzcicgbWF5IGxvb2sgc3RyYW5nZSwgYnV0IHlvdSBzaG91bGQgbmV2ZXIKLStjb25maWd1cmUgR0xJQkMgd2l0aCBhIHByZWZpeCBvdGhlciB0aGFuICcvdXNyJzogaW4gdmFyaW91cyBwbGFjZXMsCi0rR0xJQkMncyBidWlsZCBzeXN0ZW0gY2hlY2tzIHdoZXRoZXIgdGhlIHByZWZpeCBpcyAnL3VzcicsIGFuZCBkb2VzCi0rc3BlY2lhbCBoYW5kbGluZyBvbmx5IGlmIHRoYXQgaXMgdGhlIGNhc2UuICBVbmxlc3MgeW91IHVzZSB0aGlzCi0rcHJlZml4LCB5b3Ugd2lsbCBnZXQgYSBzeXNyb290IHRoYXQgZG9lcyBub3QgdXNlIHRoZSBzdGFuZGFyZCBMaW51eAotK2RpcmVjdG9yeSBsYXlvdXRzIGFuZCBjYW5ub3QgYmUgdXNlZCBhcyBhIGJhc2lzIGZvciB0aGUgcm9vdAotK2ZpbGVzeXN0ZW0gb24geW91ciB0YXJnZXQgc3lzdGVtIGNvbXBhdGlibHkgd2l0aCBub3JtYWwgR0xJQkMKLStpbnN0YWxsYXRpb25zLgotKwotK1RoZSAnLS13aXRoLWhlYWRlcnMnIG9wdGlvbiB0ZWxscyBHTElCQyB3aGVyZSB0aGUgTGludXggaGVhZGVycyBoYXZlCi0rYmVlbiBpbnN0YWxsZWQuCi0rCi0rVGhlICctLWVuYWJsZS1hZGQtb25zPW5wdGwsbGliaWRuLC4uL3BvcnRzJyBvcHRpb24gdGVsbHMgR0xJQkMgdG8gbG9vawotK2ZvciB0aGUgbGlzdGVkIGdsaWJjIGFkZC1vbnMuIE1vc3Qgbm90YWJseSB0aGUgcG9ydHMgYWRkLW9uIChsb2NhdGVkCi0ranVzdCBhYm92ZSB0aGUgbGliYyBzb3VyY2VzIGluIHRoZSBHTElCQyBzdm4gdHJlZSkgaXMgcmVxdWlyZWQgdG8KLStzdXBwb3J0IEFSTSB0YXJnZXRzLgotKwotK1dlIGNhbiBub3cgdXNlIHRoZSAnaW5zdGFsbC1oZWFkZXJzJyBtYWtlZmlsZSB0YXJnZXQgdG8gaW5zdGFsbCB0aGUKLStoZWFkZXJzOgotKwotKyAgICAkIG1ha2UgaW5zdGFsbC1oZWFkZXJzIGluc3RhbGxfcm9vdD0kc3lzcm9vdCBcCi0rICAgID4gICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbC1ib290c3RyYXAtaGVhZGVycz15ZXMKLSsKLStUaGUgJ2luc3RhbGxfcm9vdCcgdmFyaWFibGUgaW5kaWNhdGVzIHdoZXJlIHRoZSBmaWxlcyBzaG91bGQgYWN0dWFsbHkKLStiZSBpbnN0YWxsZWQ7IGl0cyB2YWx1ZSBpcyB0cmVhdGVkIGFzIHRoZSBwYXJlbnQgb2YgdGhlICctLXByZWZpeCcKLStkaXJlY3Rvcnkgd2UgcGFzc2VkIHRvIHRoZSBjb25maWd1cmUgc2NyaXB0LCBzbyB0aGUgaGVhZGVycyB3aWxsIGdvIGluCi0rJyRzeXNyb290L3Vzci9pbmNsdWRlJy4gIFRoZSAnaW5zdGFsbC1ib290c3RyYXAtaGVhZGVycycgdmFyaWFibGUKLStyZXF1ZXN0cyBzcGVjaWFsIGhhbmRsaW5nIGZvciBjZXJ0YWluIHRyaWNreSBoZWFkZXIgZmlsZXMuCi0rCi0rTmV4dCwgdGhlcmUgYXJlIGEgZmV3IG9iamVjdCBmaWxlcyBuZWVkZWQgdG8gbGluayBzaGFyZWQgbGlicmFyaWVzLAotK3doaWNoIHdlIGJ1aWxkIGFuZCBpbnN0YWxsIGJ5IGhhbmQ6Ci0rCi0rICAgICQgbWtkaXIgLXAgJHN5c3Jvb3QvdXNyL2xpYgotKyAgICAkIG1ha2UgY3N1L3N1YmRpcl9saWIKLSsgICAgJCBjcCBjc3UvY3J0MS5vIGNzdS9jcnRpLm8gY3N1L2NydG4ubyAkc3lzcm9vdC91c3IvbGliCi0rCi0rRmluYWxseSwgJ2xpYmdjY19zLnNvJyByZXF1aXJlcyBhICdsaWJjLnNvJyB0byBsaW5rIGFnYWluc3QuICBIb3dldmVyLAotK3NpbmNlIHdlIHdpbGwgbmV2ZXIgYWN0dWFsbHkgZXhlY3V0ZSBpdHMgY29kZSwgaXQgZG9lc24ndCBtYXR0ZXIgd2hhdAotK2l0IGNvbnRhaW5zLiAgU28sIHRyZWF0aW5nICcvZGV2L251bGwnIGFzIGEgQyBzb3VyY2UgZmlsZSwgd2UgcHJvZHVjZQotK2EgZHVtbXkgJ2xpYmMuc28nIGluIG9uZSBzdGVwOgotKwotKyAgICAkICR0b29scy9iaW4vJHRhcmdldC1nY2MgLW5vc3RkbGliIC1ub3N0YXJ0ZmlsZXMgLXNoYXJlZCAteCBjIC9kZXYvbnVsbCBcCi0rICAgID4gICAgICAgICAgICAgICAgICAgICAgICAtbyAkc3lzcm9vdC91c3IvbGliL2xpYmMuc28KLSsKLSsKLStUaGUgU2Vjb25kIEdDQwotKwotK1dpdGggdGhlIEdMSUJDIGhlYWRlcnMgYW5kIHNlbGVjdGVkIG9iamVjdCBmaWxlcyBpbnN0YWxsZWQsIHdlIGNhbgotK25vdyBidWlsZCBhIEdDQyB0aGF0IGlzIGNhcGFibGUgb2YgY29tcGlsaW5nIEdMSUJDLiAgV2UgY29uZmlndXJlLAotK2J1aWxkLCBhbmQgaW5zdGFsbCB0aGUgc2Vjb25kIEdDQywgYWdhaW4gYnVpbGRpbmcgb25seSB0aGUgQyBjb21waWxlciwKLSthbmQgYXZvaWRpbmcgbGlicmFyaWVzIHdlIHdvbid0IHVzZToKLSsKLSsgICAgJCBta2RpciAtcCAkb2JqL2djYzIKLSsgICAgJCBjZCAkb2JqL2djYzIKLSsgICAgJCAkc3JjLyRnY2N2L2NvbmZpZ3VyZSBcCi0rICAgID4gICAgIC0tdGFyZ2V0PSR0YXJnZXQgXAotKyAgICA+ICAgICAtLXByZWZpeD0kdG9vbHMgXAotKyAgICA+ICAgICAtLXdpdGgtc3lzcm9vdD0kc3lzcm9vdCBcCi0rICAgID4gICAgIC0tZGlzYWJsZS1saWJzc3AgLS1kaXNhYmxlLWxpYmdvbXAgLS1kaXNhYmxlLWxpYm11ZGZsYXAgXAotKyAgICA+ICAgICAtLWRpc2FibGUtbGliZmZpIC0tZGlzYWJsZS1saWJxdWFkbWF0aCBcCi0rICAgID4gICAgIC0tZW5hYmxlLWxhbmd1YWdlcz1jCi0rICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UKLSsgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZSBpbnN0YWxsCi0rCi0rCi0rR0xJQkMsIENvbXBsZXRlCi0rCi0rV2l0aCB0aGUgc2Vjb25kIGNvbXBpbGVyIGJ1aWx0IGFuZCBpbnN0YWxsZWQsIHdlJ3JlIG5vdyByZWFkeSBmb3IgdGhlCi0rZnVsbCBHTElCQyBidWlsZDoKLSsKLSsgICAgJCBta2RpciAtcCAkb2JqL2dsaWJjCi0rICAgICQgY2QgJG9iai9nbGliYwotKyAgICAkIEJVSUxEX0NDPWdjYyBcCi0rICAgID4gQ0M9JHRvb2xzL2Jpbi8kdGFyZ2V0LWdjYyBcCi0rICAgID4gQ1hYPSR0b29scy9iaW4vJHRhcmdldC1nKysgXAotKyAgICA+IEFSPSR0b29scy9iaW4vJHRhcmdldC1hciBcCi0rICAgID4gUkFOTElCPSR0b29scy9iaW4vJHRhcmdldC1yYW5saWIgXAotKyAgICA+ICRzcmMvZ2xpYmMvbGliYy9jb25maWd1cmUgXAotKyAgICA+ICAgICAtLXByZWZpeD0vdXNyIFwKLSsgICAgPiAgICAgLS13aXRoLWhlYWRlcnM9JHN5c3Jvb3QvdXNyL2luY2x1ZGUgXAotKyAgICA+ICAgICAtLXdpdGgta2NvbmZpZz0kb2JqL2xpbnV4L3NjcmlwdHMva2NvbmZpZyBcCi0rICAgID4gICAgIC0tYnVpbGQ9JGJ1aWxkIFwKLSsgICAgPiAgICAgLS1ob3N0PSR0YXJnZXQgXAotKyAgICA+ICAgICAtLWRpc2FibGUtcHJvZmlsZSAtLXdpdGhvdXQtZ2QgLS13aXRob3V0LWN2cyBcCi0rICAgID4gICAgIC0tZW5hYmxlLWFkZC1vbnM9bnB0bCxsaWJpZG4sLi4vcG9ydHMKLSsKLStOb3RlIHRoZSBhZGRpdGlvbmFsICctLXdpdGgta2NvbmZpZycgb3B0aW9uLiBUaGlzIHRlbGxzIEdMSUJDIHdoZXJlIHRvCi0rZmluZCB0aGUgaG9zdCBjb25maWcgdG9vbHMgdXNlZCBieSB0aGUga2VybmVsICdtYWtlIGNvbmZpZycgYW5kICdtYWtlCi0rbWVudWNvbmZpZycuICBUaGVzZSB0b29scyBjYW4gYmUgcmUtdXNlZCBieSBHTElCQyBmb3IgaXRzIG93biAnbWFrZQotKypjb25maWcnIHN1cHBvcnQsIHdoaWNoIHdpbGwgY3JlYXRlICdvcHRpb24tZ3JvdXBzLmNvbmZpZycgZm9yIHlvdS4KLStCdXQgZmlyc3QgbWFrZSBzdXJlIHRob3NlIHRvb2xzIGhhdmUgYmVlbiBidWlsdCBieSBydW5uaW5nIHNvbWUKLStkdW1teSAnbWFrZSAqY29uZmlnJyBjYWxscyBpbiB0aGUga2VybmVsIGRpcmVjdG9yeToKLSsKLSsgICAgJCBjZCAkb2JqL2xpbnV4Ci0rICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgY29uZmlnIFwKLSsgICAgPiAgICAgIEFSQ0g9JGxpbnV4X2FyY2ggQ1JPU1NfQ09NUElMRT0kdGFyZ2V0LSBcCi0rICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgbWVudWNvbmZpZyBcCi0rICAgID4gICAgICBBUkNIPSRsaW51eF9hcmNoIENST1NTX0NPTVBJTEU9JHRhcmdldC0gXAotKwotK05vdyB3ZSBjYW4gY29uZmlndXJlIGFuZCBidWlsZCB0aGUgZnVsbCBHTElCQzoKLSsKLSsgICAgJCBjZCAkb2JqL2dsaWJjCi0rICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgZGVmY29uZmlnCi0rICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgbWVudWNvbmZpZwotKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlCi0rICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgaW5zdGFsbCBpbnN0YWxsX3Jvb3Q9JHN5c3Jvb3QKLSsKLStBdCB0aGlzIHBvaW50LCB3ZSBoYXZlIGEgY29tcGxldGUgR0xJQkMgaW5zdGFsbGF0aW9uIGluICckc3lzcm9vdCcsCi0rd2l0aCBoZWFkZXIgZmlsZXMsIGxpYnJhcnkgZmlsZXMsIGFuZCBtb3N0IG9mIHRoZSBDIHJ1bnRpbWUgc3RhcnR1cAotK2ZpbGVzIGluIHBsYWNlLgotKwotKwotK1RoZSBUaGlyZCBHQ0MKLSsKLStGaW5hbGx5LCB3ZSByZWNvbXBpbGUgR0NDIGFnYWluc3QgdGhpcyBmdWxsIGluc3RhbGxhdGlvbiwgZW5hYmxpbmcKLSt3aGF0ZXZlciBsYW5ndWFnZXMgYW5kIGxpYnJhcmllcyB3ZSB3b3VsZCBsaWtlIHRvIHVzZToKLSsKLSsgICAgJCBta2RpciAtcCAkb2JqL2djYzMKLSsgICAgJCBjZCAkb2JqL2djYzMKLSsgICAgJCAkc3JjLyRnY2N2L2NvbmZpZ3VyZSBcCi0rICAgID4gICAgIC0tdGFyZ2V0PSR0YXJnZXQgXAotKyAgICA+ICAgICAtLXByZWZpeD0kdG9vbHMgXAotKyAgICA+ICAgICAtLXdpdGgtc3lzcm9vdD0kc3lzcm9vdCBcCi0rICAgID4gICAgIC0tZW5hYmxlLV9fY3hhX2F0ZXhpdCBcCi0rICAgID4gICAgIC0tZGlzYWJsZS1saWJzc3AgLS1kaXNhYmxlLWxpYmdvbXAgLS1kaXNhYmxlLWxpYm11ZGZsYXAgXAotKyAgICA+ICAgICAtLWVuYWJsZS1sYW5ndWFnZXM9YyxjKysKLSsgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZQotKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlIGluc3RhbGwKLSsKLStUaGUgJy0tZW5hYmxlLV9fY3hhX2F0ZXhpdCcgb3B0aW9uIHRlbGxzIEdDQyB3aGF0IHNvcnQgb2YgQysrCi0rZGVzdHJ1Y3RvciBzdXBwb3J0IHRvIGV4cGVjdCBmcm9tIHRoZSBDIGxpYnJhcnk7IGl0J3MgcmVxdWlyZWQgd2l0aAotK0dMSUJDLgotKwotK0FuZCBzaW5jZSBHQ0MncyBpbnN0YWxsYXRpb24gcHJvY2VzcyBpc24ndCBkZXNpZ25lZCB0byBoZWxwIGNvbnN0cnVjdAotK3N5c3Jvb3QgdHJlZXMsIHdlIG11c3QgbWFudWFsbHkgY29weSBjZXJ0YWluIGxpYnJhcmllcyBpbnRvIHBsYWNlIGluCi0rdGhlIHN5c3Jvb3QuCi0rCi0rICAgICQgY3AgLWQgJHRvb2xzLyR0YXJnZXQvbGliL2xpYmdjY19zLnNvKiAkc3lzcm9vdC9saWIKLSsgICAgJCBjcCAtZCAkdG9vbHMvJHRhcmdldC9saWIvbGlic3RkYysrLnNvKiAkc3lzcm9vdC91c3IvbGliCi0rCi0rCi0rVHJ5aW5nIFRoaW5ncyBPdXQKLSsKLStBdCB0aGlzIHBvaW50LCAnJHRvb2xzJyBjb250YWlucyBhIGNyb3NzIHRvb2xjaGFpbiByZWFkeSB0byB1c2UKLSt0aGUgR0xJQkMgaW5zdGFsbGF0aW9uIGluICckc3lzcm9vdCc6Ci0rCi0rICAgICQgY2F0ID4gaGVsbG8uYyA8PEVPRgotKyAgICA+ICNpbmNsdWRlIDxzdGRpby5oPgotKyAgICA+IGludAotKyAgICA+IG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSsgICAgPiB7Ci0rICAgID4gICBwdXRzICgiSGVsbG8sIHdvcmxkISIpOwotKyAgICA+ICAgcmV0dXJuIDA7Ci0rICAgID4gfQotKyAgICA+IEVPRgotKyAgICAkICR0b29scy9iaW4vJHRhcmdldC1nY2MgLVdhbGwgaGVsbG8uYyAtbyBoZWxsbwotKyAgICAkIGNhdCA+IGMrKy1oZWxsby5jYyA8PEVPRgotKyAgICA+ICNpbmNsdWRlIDxpb3N0cmVhbT4KLSsgICAgPiBpbnQKLSsgICAgPiBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0rICAgID4gewotKyAgICA+ICAgc3RkOjpjb3V0IDw8ICJIZWxsbywgQysrIHdvcmxkISIgPDwgc3RkOjplbmRsOwotKyAgICA+ICAgcmV0dXJuIDA7Ci0rICAgID4gfQotKyAgICA+IEVPRgotKyAgICAkICR0b29scy9iaW4vJHRhcmdldC1nKysgLVdhbGwgYysrLWhlbGxvLmNjIC1vIGMrKy1oZWxsbwotKwotKwotK1dlIGNhbiB1c2UgJ3JlYWRlbGYnIHRvIHZlcmlmeSB0aGF0IHRoZXNlIGFyZSBpbmRlZWQgZXhlY3V0YWJsZXMgZm9yCi0rb3VyIHRhcmdldCwgdXNpbmcgb3VyIGR5bmFtaWMgbGlua2VyOgotKwotKyAgICAkICR0b29scy9iaW4vJHRhcmdldC1yZWFkZWxmIC1obCBoZWxsbwotKyAgICBFTEYgSGVhZGVyOgotKyAgICAuLi4KLSsgICAgICBUeXBlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVYRUMgKEV4ZWN1dGFibGUgZmlsZSkKLSsgICAgICBNYWNoaW5lOiAgICAgICAgICAgICAgICAgICAgICAgICAgIEFSTQotKwotKyAgICAuLi4KLSsgICAgUHJvZ3JhbSBIZWFkZXJzOgotKyAgICAgIFR5cGUgICAgICAgICAgIE9mZnNldCAgIFZpcnRBZGRyICAgUGh5c0FkZHIgICBGaWxlU2l6IE1lbVNpeiAgRmxnIEFsaWduCi0rICAgICAgUEhEUiAgICAgICAgICAgMHgwMDAwMzQgMHgxMDAwMDAzNCAweDEwMDAwMDM0IDB4MDAxMDAgMHgwMDEwMCBSIEUgMHg0Ci0rICAgICAgSU5URVJQICAgICAgICAgMHgwMDAxMzQgMHgwMDAwODEzNCAweDAwMDA4MTM0IDB4MDAwMTMgMHgwMDAxMyBSICAgMHgxCi0rICAgICAgICAgIFtSZXF1ZXN0aW5nIHByb2dyYW0gaW50ZXJwcmV0ZXI6IC9saWIvbGQtbGludXguc28uM10KLSsgICAgICBMT0FEICAgICAgICAgICAweDAwMDAwMCAweDAwMDA4MDAwIDB4MDAwMDgwMDAgMHgwMDQyYyAweDAwNDJjIFIgRSAweDgwMDAKLSsgICAgLi4uCi0rCi0rTG9va2luZyBhdCB0aGUgZHluYW1pYyBzZWN0aW9uIG9mIHRoZSBpbnN0YWxsZWQgJ2xpYmdjY19zLnNvJywgd2Ugc2VlCi0rdGhhdCB0aGUgJ05FRURFRCcgZW50cnkgZm9yIHRoZSBDIGxpYnJhcnkgZG9lcyBpbmNsdWRlIHRoZSAnLjYnCi0rc3VmZml4LCBpbmRpY2F0aW5nIHRoYXQgd2FzIGxpbmtlZCBhZ2FpbnN0IG91ciBmdWxseSBidWlsZCBHTElCQywgYW5kCi0rbm90IG91ciBkdW1teSAnbGliYy5zbyc6Ci0rCi0rICAgICQgJHRvb2xzL2Jpbi8kdGFyZ2V0LXJlYWRlbGYgLWQgJHN5c3Jvb3QvbGliL2xpYmdjY19zLnNvLjEKLSsgICAgRHluYW1pYyBzZWN0aW9uIGF0IG9mZnNldCAweDEwODNjIGNvbnRhaW5zIDI0IGVudHJpZXM6Ci0rICAgICAgVGFnICAgICAgICBUeXBlICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUvVmFsdWUKLSsgICAgIDB4MDAwMDAwMDEgKE5FRURFRCkgICAgICAgICAgICAgICAgICAgICBTaGFyZWQgbGlicmFyeTogW2xpYmMuc28uNl0KLSsgICAgIDB4MDAwMDAwMGUgKFNPTkFNRSkgICAgICAgICAgICAgICAgICAgICBMaWJyYXJ5IHNvbmFtZTogW2xpYmdjY19zLnNvLjFdCi0rICAgIC4uLgotKwotKwotK0FuZCBvbiB0aGUgdGFyZ2V0IG1hY2hpbmUsIHdlIGNhbiBydW4gb3VyIHByb2dyYW1zOgotKwotKyAgICAkICRzeXNyb290L2xpYi9sZC5zby4xIC0tbGlicmFyeS1wYXRoICRzeXNyb290L2xpYjokc3lzcm9vdC91c3IvbGliIFwKLSsgICAgPiAuL2hlbGxvCi0rICAgIEhlbGxvLCB3b3JsZCEKLSsgICAgJCAkc3lzcm9vdC9saWIvbGQuc28uMSAtLWxpYnJhcnktcGF0aCAkc3lzcm9vdC9saWI6JHN5c3Jvb3QvdXNyL2xpYiBcCi0rICAgID4gLi9jKystaGVsbG8KLSsgICAgSGVsbG8sIEMrKyB3b3JsZCEKLWRpZmYgLS1naXQgYS9HTElCQy5jcm9zcy10ZXN0aW5nIGIvR0xJQkMuY3Jvc3MtdGVzdGluZwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmI2N2I0NjgKLS0tLSAvZGV2L251bGwKLSsrKyBiL0dMSUJDLmNyb3NzLXRlc3RpbmcKLUBAIC0wLDAgKzEsMjA1IEBACi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKi0gbW9kZTogdGV4dCAtKi0KLSsKLSsgICAgICAgICAgICAgICAgICAgICAgQ3Jvc3MtVGVzdGluZyBXaXRoIEdMSUJDCi0rICAgICAgICAgICAgICAgICAgSmltIEJsYW5keSA8amltYkBjb2Rlc291cmNlcnkuY29tPgotKwotKwotK0ludHJvZHVjdGlvbgotKwotK0RldmVsb3BlcnMgd3JpdGluZyBzb2Z0d2FyZSBmb3IgZW1iZWRkZWQgc3lzdGVtcyBvZnRlbiB1c2UgYSBkZXNrdG9wCi0rb3Igb3RoZXIgc2ltaWxhcmx5IGNhcGFibGUgY29tcHV0ZXIgZm9yIGRldmVsb3BtZW50LCBidXQgbmVlZCB0byBydW4KLSt0ZXN0cyBvbiB0aGUgZW1iZWRkZWQgc3lzdGVtLCBvciBwZXJoYXBzIG9uIGEgc2ltdWxhdG9yLiAgV2hlbgotK2NvbmZpZ3VyZWQgZm9yIGNyb3NzLWNvbXBpbGF0aW9uLCB0aGUgc3RvY2sgR05VIEMgbGlicmFyeSBzaW1wbHkKLStkaXNhYmxlcyBydW5uaW5nIHRlc3RzIGFsdG9nZXRoZXI6IHRoZSBjb21tYW5kICdtYWtlIHRlc3RzJyBidWlsZHMKLSt0ZXN0IHByb2dyYW1zLCBidXQgZG9lcyBub3QgcnVuIHRoZW0uICBHTElCQywgaG93ZXZlciwgcHJvdmlkZXMKLStmYWNpbGl0aWVzIGZvciBjb21waWxpbmcgdGVzdHMgYW5kIGdlbmVyYXRpbmcgZGF0YSBmaWxlcyBvbiB0aGUgYnVpbGQKLStzeXN0ZW0sIGJ1dCBydW5uaW5nIHRoZSB0ZXN0IHByb2dyYW1zIHRoZW1zZWx2ZXMgb24gYSByZW1vdGUgc3lzdGVtIG9yCi0rc2ltdWxhdG9yLgotKwotKwotK1Rlc3QgZW52aXJvbm1lbnQgcmVxdWlyZW1lbnRzCi0rCi0rVGhlIHRlc3QgZW52aXJvbm1lbnQgbXVzdCBtZWV0IGNlcnRhaW4gY29uZGl0aW9ucyBmb3IgR0xJQkMncwotK2Nyb3NzLXRlc3RpbmcgZmFjaWxpdGllcyB0byB3b3JrOgotKwotKy0gU2hhcmVkIGZpbGVzeXN0ZW1zLiAgVGhlICdidWlsZCcgc3lzdGVtLCBvbiB3aGljaCB5b3UgY29uZmlndXJlIGFuZAotKyAgY29tcGlsZSBHTElCQywgYW5kIHRoZSAnaG9zdCcgc3lzdGVtLCBvbiB3aGljaCB5b3UgaW50ZW5kIHRvIHJ1bgotKyAgR0xJQkMsIG11c3Qgc2hhcmUgYSBmaWxlc3lzdGVtIGNvbnRhaW5pbmcgdGhlIEdMSUJDIGJ1aWxkIGFuZAotKyAgc291cmNlIHRyZWVzLiAgRmlsZXMgbXVzdCBhcHBlYXIgYXQgdGhlIHNhbWUgcGF0aHMgb24gYm90aCBzeXN0ZW1zLgotKwotKy0gUmVtb3RlLXNoZWxsIGxpa2UgaW52b2NhdGlvbi4gIFRoZXJlIG11c3QgYmUgYSB3YXkgdG8gcnVuIGEgcHJvZ3JhbQotKyAgb24gdGhlIGhvc3Qgc3lzdGVtIGZyb20gdGhlIGJ1aWxkIHN5c3RlbSwgcGFzc2luZyBpdCBwcm9wZXJseSBxdW90ZWQKLSsgIGNvbW1hbmQtbGluZSBhcmd1bWVudHMsIHNldHRpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzLCBhbmQKLSsgIGluaGVyaXRpbmcgdGhlIGNhbGxlcidzIHN0YW5kYXJkIGlucHV0IGFuZCBvdXRwdXQuCi0rCi0rCi0rVXNhZ2UKLSsKLStUbyB1c2UgR0xJQkMncyBjcm9zcy10ZXN0aW5nIHN1cHBvcnQsIHByb3ZpZGUgdmFsdWVzIGZvciB0aGUKLStmb2xsb3dpbmcgTWFrZSB2YXJpYWJsZXMgd2hlbiB5b3UgaW52b2tlICdtYWtlJzoKLSsKLSstIGNyb3NzLXRlc3Qtd3JhcHBlcgotKwotKyAgVGhpcyBzaG91bGQgYmUgdGhlIG5hbWUgb2YgdGhlIGNyb3NzLXRlc3Rpbmcgd3JhcHBlciBjb21tYW5kLCBhbG9uZwotKyAgd2l0aCBhbnkgYXJndW1lbnRzLgotKwotKy0gY3Jvc3MtbG9jYWxlZGVmCi0rCi0rICBUaGlzIHNob3VsZCBiZSB0aGUgbmFtZSBvZiBhIGNyb3NzLWNhcGFibGUgbG9jYWxlZGVmIHByb2dyYW0sIGxpa2UKLSsgIHRoYXQgaW5jbHVkZWQgaW4gdGhlIEdMSUJDICdsb2NhbGVkZWYnIG1vZHVsZSwgYWxvbmcgd2l0aCBhbnkKLSsgIGFyZ3VtZW50cyBuZWVkZWQuCi0rCi0rVGhlc2UgYXJlIGVhY2ggZXhwbGFpbmVkIGluIGRldGFpbCBiZWxvdy4KLSsKLSsKLStUaGUgQ3Jvc3MtVGVzdGluZyBXcmFwcGVyCi0rCi0rVG8gcnVuIHRlc3QgcHJvZ3JhbXMgcmVsaWFibHksIHRoZSBzdG9jayBHTlUgQyBsaWJyYXJ5IHRha2VzIGNhcmUgdG8KLStlbnN1cmUgdGhhdCB0ZXN0IHByb2dyYW1zIHVzZSB0aGUgbmV3bHkgY29tcGlsZWQgZHluYW1pYyBsaW5rZXIgYW5kCi0rc2hhcmVkIGxpYnJhcmllcywgYW5kIG5ldmVyIHRoZSBob3N0IHN5c3RlbSdzIGluc3RhbGxlZCBsaWJyYXJpZXMuICBUbwotK2FjY29tcGxpc2ggdGhpcywgaXQgcnVucyB0aGUgdGVzdHMgYnkgZXhwbGljaXRseSBpbnZva2luZyB0aGUgZHluYW1pYwotK2xpbmtlciBmcm9tIHRoZSBidWlsZCB0cmVlLCBwYXNzaW5nIGl0IGEgbGlzdCBvZiBidWlsZCB0cmVlCi0rZGlyZWN0b3JpZXMgdG8gc2VhcmNoIGZvciBzaGFyZWQgbGlicmFyaWVzLCBmb2xsb3dlZCBieSB0aGUgbmFtZSBvZgotK3RoZSBleGVjdXRhYmxlIHRvIHJ1biBhbmQgaXRzIGFyZ3VtZW50cy4KLSsKLStGb3IgZXhhbXBsZSwgd2hlcmUgb25lIG1pZ2h0IG5vcm1hbGx5IHJ1biBhIHRlc3QgcHJvZ3JhbSBsaWtlIHRoaXM6Ci0rCi0rICAgICQgLi90c3QtZm9vIGFyZzEgYXJnMgotKwotK3RoZSBHTlUgQyBsaWJyYXJ5IG1pZ2h0IHJ1biB0aGF0IHByb2dyYW0gbGlrZSB0aGlzOgotKwotKyAgICAkICRvYmpkaXIvZWxmL2xkLWxpbnV4LnNvLjMgLS1saWJyYXJ5LXBhdGggJG9iamRpciBcCi0rICAgICAgLi90c3QtZm9vIGFyZzEgYXJnMgotKwotKyh3aGVyZSAkb2JqZGlyIGlzIHRoZSBwYXRoIHRvIHRoZSB0b3Agb2YgdGhlIGJ1aWxkIHRyZWUsIGFuZCB0aGUKLSt0cmFpbGluZyBiYWNrc2xhc2ggaW5kaWNhdGVzIGEgY29udGludWF0aW9uIG9mIHRoZSBjb21tYW5kKS4gIEluIG90aGVyCi0rd29yZHMsIGVhY2ggdGVzdCBwcm9ncmFtIGludm9jYXRpb24gaXMgJ3dyYXBwZWQgdXAnIGluc2lkZSBhbiBleHBsaWNpdAotK2ludm9jYXRpb24gb2YgdGhlIGR5bmFtaWMgbGlua2VyLCB3aGljaCBtdXN0IGl0c2VsZiBleGVjdXRlIHRoZSB0ZXN0Ci0rcHJvZ3JhbSwgaGF2aW5nIGxvYWRlZCBzaGFyZWQgbGlicmFyaWVzIGZyb20gdGhlIGFwcHJvcHJpYXRlCi0rZGlyZWN0b3JpZXMuCi0rCi0rVG8gc3VwcG9ydCBjcm9zcy10ZXN0aW5nLCBHTElCQyBhbGxvd3MgdGhlIGRldmVsb3BlciB0byBvcHRpb25hbGx5Ci0rc2V0IHRoZSAnY3Jvc3MtdGVzdC13cmFwcGVyJyBNYWtlIHZhcmlhYmxlIHRvIGFub3RoZXIgd3JhcHBlciBjb21tYW5kLAotK3RvIHdoaWNoIGl0IHBhc3NlcyB0aGUgZW50aXJlIGR5bmFtaWMgbGlua2VyIGludm9jYXRpb24gc2hvd24gYWJvdmUgYXMKLSthcmd1bWVudHMuICBGb3IgZXhhbXBsZSwgaWYgdGhlIGRldmVsb3BlciBzdXBwbGllcyBhIHdyYXBwZXIgb2YKLSsnbXktd3JhcHBlciBob3N0bmFtZScsIHRoZW4gR0xJQkMgd291bGQgcnVuIHRoZSB0ZXN0IGFib3ZlIGFzCi0rZm9sbG93czoKLSsKLSsgICAgJCBteS13cmFwcGVyIGhvc3RuYW1lIFwKLSsgICAgICAkb2JqZGlyL2VsZi9sZC1saW51eC5zby4zIC0tbGlicmFyeS1wYXRoICRvYmpkaXIgXAotKyAgICAgIC4vdHN0LWZvbyBhcmcxIGFyZzIKLSsKLStUaGUgJ215LXdyYXBwZXInIGNvbW1hbmQgaXMgcmVzcG9uc2libGUgZm9yIGV4ZWN1dGluZyB0aGUgY29tbWFuZAotK2dpdmVuIG9uIHRoZSBob3N0IHN5c3RlbS4KLSsKLStTaW5jZSB0ZXN0cyBhcmUgcnVuIGluIHZhcnlpbmcgZGlyZWN0b3JpZXMsIHRoZSB3cmFwcGVyIHNob3VsZCBlaXRoZXIKLStiZSBpbiB5b3VyIGNvbW1hbmQgc2VhcmNoIHBhdGgsIG9yICdjcm9zcy10ZXN0LXdyYXBwZXInIHNob3VsZCBnaXZlIGFuCi0rYWJzb2x1dGUgcGF0aCBmb3IgdGhlIHdyYXBwZXIuCi0rCi0rVGhlIHdyYXBwZXIgbXVzdCBtZWV0IHNldmVyYWwgcmVxdWlyZW1lbnRzOgotKwotKy0gSXQgbXVzdCBwcmVzZXJ2ZSB0aGUgY3VycmVudCBkaXJlY3RvcnkuICBBcyBleHBsYWluZWQgYWJvdmUsIHRoZQotKyAgYnVpbGQgZGlyZWN0b3J5IHRyZWUgbXVzdCBiZSB2aXNpYmxlIG9uIGJvdGggdGhlIGJ1aWxkIGFuZCBob3N0Ci0rICBzeXN0ZW1zLCBhdCB0aGUgc2FtZSBwYXRoLiAgVGhlIHRlc3Qgd3JhcHBlciBtdXN0IGVuc3VyZSB0aGF0IHRoZQotKyAgY3VycmVudCBkaXJlY3RvcnkgaXQgaW5oZXJpdHMgaXMgYWxzbyBpbmhlcml0ZWQgYnkgdGhlIGR5bmFtaWMKLSsgIGxpbmtlciAoYW5kIHRodXMgdGhlIHRlc3QgcHJvZ3JhbSBpdHNlbGYpLgotKwotKy0gSXQgbXVzdCBwcmVzZXJ2ZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMnIHZhbHVlcy4gIE1hbnkgR0xJQkMgdGVzdHMKLSsgIHNldCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yIHRlc3QgcnVuczsgaW4gbmF0aXZlIHRlc3RpbmcsIGl0Ci0rICBpbnZva2VzIHByb2dyYW1zIGxpa2UgdGhpczoKLSsKLSsgICAgJCBHQ09OVl9QQVRIPSRvYmpkaXIvaWNvbnZkYXRhIFwKLSsgICAgICAkb2JqZGlyL2VsZi9sZC1saW51eC5zby4zIC0tbGlicmFyeS1wYXRoICRvYmpkaXIgXAotKyAgICAgIC4vdHN0LWZvbyBhcmcxIGFyZzIKLSsKLSsgIFdpdGggdGhlIGNyb3NzLXRlc3Rpbmcgd3JhcHBlciwgdGhhdCBpbnZvY2F0aW9uIGJlY29tZXM6Ci0rCi0rICAgICQgR0NPTlZfUEFUSD0kb2JqZGlyL2ljb252ZGF0YSBcCi0rICAgICAgbXktd3JhcHBlciBob3N0bmFtZSBcCi0rICAgICAgJG9iamRpci9lbGYvbGQtbGludXguc28uMyAtLWxpYnJhcnktcGF0aCAkb2JqZGlyIFwKLSsgICAgICAuL3RzdC1mb28gYXJnMSBhcmcyCi0rCi0rICBIZXJlLCAnbXktd3JhcHBlcicgbXVzdCBlbnN1cmUgdGhhdCB0aGUgdmFsdWUgaXQgc2VlcyBmb3IKLSsgICdHQ09OVl9QQVRIJyB3aWxsIGJlIHNlZW4gYnkgdGhlIGR5bmFtaWMgbGlua2VyLCBhbmQgdGh1cyAndHN0LWZvbycKLSsgIGl0c2VsZi4gIChUaGUgd3JhcHBlciBzdXBwbGllZCB3aXRoIEdMSUJDIHNpbXBseSBwcmVzZXJ2ZXMgdGhlCi0rICB2YWx1ZXMgb2YgKmFsbCogZW52aXJvbWVudCB2YXJpYWJsZXMsIHdpdGggYSBmaXhlZCBzZXQgb2YKLSsgIGV4Y2VwdGlvbnMuKQotKwotKyAgSWYgeW91ciB3cmFwcGVyIGlzIGEgc2hlbGwgc2NyaXB0LCB0YWtlIGNhcmUgdG8gY29ycmVjdGx5IHByb3BhZ2F0ZQotKyAgZW52aXJvbm1lbnQgdmFyaWFibGVzIHdob3NlIHZhbHVlcyBjb250YWluIHNwYWNlcyBhbmQgc2hlbGwKLSsgIG1ldGFjaGFyYWN0ZXJzLgotKwotKy0gSXQgbXVzdCBwYXNzIHRoZSBjb21tYW5kJ3MgYXJndW1lbnRzLCB1bm1vZGlmaWVkLiAgVGhlIGFyZ3VtZW50cwotKyAgc2VlbiBieSB0aGUgdGVzdCBwcm9ncmFtIHNob3VsZCBiZSBleGFjdGx5IHRob3NlIHNlZW4gYnkgdGhlIHdyYXBwZXIKLSsgIChhZnRlciB3aGF0ZXZlciBhcmd1bWVudHMgYXJlIGdpdmVuIHRvIHRoZSB3cmFwcGVyIGl0c2VsZikuICBUaGUKLSsgIEdMSUJDIHRlc3QgZnJhbWV3b3JrIHBlcmZvcm1zIGFsbCBuZWVkZWQgc2hlbGwgd29yZCBzcGxpdHRpbmcgYW5kCi0rICBleHBhbnNpb24gKHdpbGRjYXJkIGV4cGFuc2lvbiwgcGFyYW1ldGVyIHN1YnN0aXR1dGlvbiwgYW5kIHNvIG9uKQotKyAgYmVmb3JlIGludm9raW5nIHRoZSB3cmFwcGVyOyBmdXJ0aGVyIGV4cGFuc2lvbiBtYXkgYnJlYWsgdGhlIHRlc3RzLgotKwotKwotK1RoZSAnY3Jvc3MtdGVzdC1zc2guc2gnIHNjcmlwdAotKwotK0lmIHlvdSB3YW50IHRvIHVzZSAnc3NoJyAob3Igc29tZXRoaW5nIHN1ZmZpY2llbnRseSBzaW1pbGFyKSB0byBydW4KLSt0ZXN0IHByb2dyYW1zIG9uIHlvdXIgaG9zdCBzeXN0ZW0sIEdMSUJDIGluY2x1ZGVzIGEgc2hlbGwgc2NyaXB0LAotKydzY3JpcHRzL2Nyb3NzLXRlc3Qtc3NoLnNoJywgd2hpY2ggeW91IGNhbiB1c2UgYXMgeW91ciB3cmFwcGVyCi0rY29tbWFuZC4gIFRoaXMgc2NyaXB0IHRha2VzIGNhcmUgb2Ygc2V0dGluZyB0aGUgdGVzdCBjb21tYW5kJ3MgY3VycmVudAotK2RpcmVjdG9yeSwgcHJvcGFnYXRpbmcgZW52aXJvbm1lbnQgdmFyaWFibGUgdmFsdWVzLCBhbmQgY2FycnlpbmcKLStjb21tYW5kLWxpbmUgYXJndW1lbnRzLCBhbGwgYWNyb3NzIGFuICdzc2gnIGNvbm5lY3Rpb24uICBZb3UgbWF5IGV2ZW4KLStzdXBwbHkgYW4gYWx0ZXJuYXRpdmUgdG8gJ3NzaCcgb24gdGhlIGNvbW1hbmQgbGluZSwgaWYgbmVlZGVkLgotKwotK0ZvciBtb3JlIGRldGFpbHMsIHBhc3MgJ2Nyb3NzLXRlc3Qtc3NoLnNoJyB0aGUgJy0taGVscCcgb3B0aW9uLgotKwotKwotK1RoZSBDcm9zcy1Db21waWxpbmcgTG9jYWxlIERlZmluaXRpb24gQ29tbWFuZAotKwotK1NvbWUgR0xJQkMgdGVzdHMgcmVseSBvbiBsb2NhbGVzIGdlbmVyYXRlZCBlc3BlY2lhbGx5IGZvciB0aGUgdGVzdAotK3Byb2Nlc3MuICBJbiBhIG5hdGl2ZSBjb25maWd1cmF0aW9uLCB0aGVzZSB0ZXN0cyBzaW1wbHkgcnVuIHRoZQotKydsb2NhbGVkZWYnIGNvbW1hbmQgYnVpbHQgYnkgdGhlIG5vcm1hbCBHTElCQyBidWlsZCBwcm9jZXNzLAotKydsb2NhbGUvbG9jYWxlZGVmJywgdG8gcHJvY2VzcyBhbmQgaW5zdGFsbCB0aGVpciBsb2NhbGVzLiAgSG93ZXZlciwgaW4KLSthIGNyb3NzLWNvbXBpbGluZyBjb25maWd1cmF0aW9uLCB0aGlzICdsb2NhbGVkZWYnIGlzIGJ1aWx0IGZvciB0aGUKLStob3N0IHN5c3RlbSwgbm90IHRoZSBidWlsZCBzeXN0ZW0sIGFuZCBzaW5jZSBpdCByZXF1aXJlcyBxdWl0ZSBhIGJpdAotK29mIG1lbW9yeSB0byBydW4gKHdlIGhhdmUgc2VlbiBpdCBmYWlsIG9uIHN5c3RlbXMgd2l0aCA2NE1pQiBvZgotK21lbW9yeSksIGl0IG1heSBub3QgYmUgcHJhY3RpY2FsIHRvIHJ1biBpdCBvbiB0aGUgaG9zdCBzeXN0ZW0uCi0rCi0rSWYgc2V0LCBHTElCQyB1c2VzIHRoZSAnY3Jvc3MtbG9jYWxlZGVmJyBNYWtlIHZhcmlhYmxlIGFzIHRoZSBjb21tYW5kCi0rdG8gcnVuIG9uIHRoZSBidWlsZCBzeXN0ZW0gdG8gcHJvY2VzcyBhbmQgaW5zdGFsbCBsb2NhbGVzLiAgVGhlCi0rbG9jYWxlZGVmIHByb2dyYW0gYnVpbHQgZnJvbSB0aGUgR0xJQkMgJ2xvY2FsZWRlZicgbW9kdWxlIGlzCi0rc3VpdGFibGUuCi0rCi0rVGhlIHZhbHVlIG9mICdjcm9zcy1sb2NhbGVkZWYnIG1heSBhbHNvIGluY2x1ZGUgY29tbWFuZC1saW5lIGFyZ3VtZW50cwotK3RvIGJlIHBhc3NlZCB0byB0aGUgcHJvZ3JhbTsgaWYgeW91IGFyZSB1c2luZyBHTElCQydzICdsb2NhbGVkZWYnLAotK3lvdSBtYXkgaW5jbHVkZSBlbmRpYW5uZXNzIGFuZCAndWludDMyX3QnIGFsaWdubWVudCBhcmd1bWVudHMgaGVyZS4KLSsKLSsKLStFeGFtcGxlCi0rCi0rSW4gZGV2ZWxvcGluZyBHTElCQydzIGNyb3NzLXRlc3RpbmcgZmFjaWxpdHksIHdlIGludm9rZWQgJ21ha2UnIHdpdGgKLSt0aGUgZm9sbG93aW5nIHNjcmlwdDoKLSsKLSsgICAgIyEvYmluL3NoCi0rCi0rICAgIHNyY2Rpcj0uLi4KLSsgICAgdGVzdF9ob3N0bmFtZT0uLi4KLSsgICAgbG9jYWxlZGVmZGlyPS4uLgotKyAgICBjcm9zc19neHg9Li4uLWcrKwotKwotKyAgICB3cmFwcGVyPSIkc3JjZGlyL3NjcmlwdHMvY3Jvc3MtdGVzdC1zc2guc2ggJHRlc3RfaG9zdG5hbWUiCi0rICAgIGxvY2FsZWRlZj0iJGxvY2FsZWRlZmRpci9sb2NhbGVkZWYgLS1saXR0bGUtZW5kaWFuIC0tdWludDMyLWFsaWduPTQiCi0rCi0rICAgIG1ha2UgY3Jvc3MtdGVzdC13cmFwcGVyPSIkd3JhcHBlciIgXAotKyAgICAgICAgIGNyb3NzLWxvY2FsZWRlZj0iJGxvY2FsZWRlZiIgXAotKyAgICAgICAgIENYWD0iJGNyb3NzX2d4eCIgXAotKyAgICAgICAgICIkQCIKLSsKLSsKLStPdGhlciBDcm9zcy1UZXN0aW5nIENvbmNlcm5zCi0rCi0rSGVyZSBhcmUgbm90ZXMgb24gc29tZSBvdGhlciBpc3N1ZXMgd2hpY2ggeW91IG1heSBlbmNvdW50ZXIgaW4gcnVubmluZwotK3RoZSBHTElCQyB0ZXN0cyBpbiBhIGNyb3NzLWNvbXBpbGluZyBlbnZpcm9ubWVudDoKLSsKLSstIFNvbWUgdGVzdHMgcmVxdWlyZSBhIEMrKyBjcm9zcy1jb21waWxlcjsgeW91IHNob3VsZCBzZXQgdGhlICdDWFgnCi0rICBNYWtlIHZhcmlhYmxlIHRvIHRoZSBuYW1lIG9mIGFuIGFwcHJvcHJpYXRlIGNyb3NzLWNvbXBpbGVyLgotKwotKy0gU29tZSB0ZXN0cyByZXF1aXJlIGFjY2VzcyB0byBsaWJzdGRjKysuc28uNiBhbmQgbGliZ2NjX3Muc28uMTsgd2UKLSsgIHNpbXBseSBwbGFjZSBjb3BpZXMgb2YgdGhlc2UgbGlicmFyaWVzIGluIHRoZSB0b3AgR0xJQkMgYnVpbGQKLSsgIGRpcmVjdG9yeS4KLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE4LWVnbGliYy1IZWxwLWJvb3RzdHJhcC1jcm9zcy10b29sY2hhaW4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxOC1lZ2xpYmMtSGVscC1ib290c3RyYXAtY3Jvc3MtdG9vbGNoYWluLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyZjM1ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxOC1lZ2xpYmMtSGVscC1ib290c3RyYXAtY3Jvc3MtdG9vbGNoYWluLnBhdGNoCkBAIC0wLDAgKzEsMTAwIEBACitGcm9tIDExNjFjZDFjNjgzNTQ3ZDI5YTAzNjI2ZDlkN2RlN2Y5Y2MwM2I3NGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDo0OToyOCArMDAwMAorU3ViamVjdDogW1BBVENIIDE4LzI1XSBlZ2xpYmM6IEhlbHAgYm9vdHN0cmFwIGNyb3NzIHRvb2xjaGFpbgorCitUYWtlbiBmcm9tIEVHTElCQywgcjE0ODQgKyByMTUyNQorCisgICAgICAgIDIwMDctMDItMjAgIEppbSBCbGFuZHkgIDxqaW1iQGNvZGVzb3VyY2VyeS5jb20+CisKKyAgICAgICAgICAgICAgICAqIE1ha2VmaWxlIChpbnN0YWxsLWhlYWRlcnMpOiBQcmVzZXJ2ZSBvbGQgYmVoYXZpb3I6IGRlcGVuZCBvbgorICAgICAgICAgICAgICAgICQoaW5zdF9pbmNsdWRlZGlyKS9nbnUvc3R1YnMuaCBvbmx5IGlmIGluc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnMKKyAgICAgICAgICAgICAgICBpcyBzZXQ7IG90aGVyd2lzZSwgcGxhY2UgZ251L3N0dWJzLmggb24gdGhlICdpbnN0YWxsLW90aGVycycgbGlzdC4KKworICAgICAgICAyMDA3LTAyLTE2ICBKaW0gQmxhbmR5ICA8amltYkBjb2Rlc291cmNlcnkuY29tPgorCisgICAgICAgICAgICAgICAgKiBNYWtlZmlsZTogQW1lbmQgbWFrZSBpbnN0YWxsLWhlYWRlcnMgdG8gaW5zdGFsbCBldmVyeXRoaW5nCisgICAgICAgICAgICAgICAgbmVjZXNzYXJ5IGZvciBidWlsZGluZyBhIGNyb3NzLWNvbXBpbGVyLiAgSW5zdGFsbCBnbnUvc3R1YnMuaCBhcworICAgICAgICAgICAgICAgIHBhcnQgb2YgJ2luc3RhbGwtaGVhZGVycycsIG5vdCAnaW5zdGFsbC1vdGhlcnMnLgorICAgICAgICAgICAgICAgIElmIGluc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnMgaXMgJ3llcycsIGluc3RhbGwgYSBkdW1teSBjb3B5IG9mCisgICAgICAgICAgICAgICAgZ251L3N0dWJzLmgsIGluc3RlYWQgb2YgY29tcHV0aW5nIHRoZSByZWFsIHRoaW5nLgorICAgICAgICAgICAgICAgICogaW5jbHVkZS9zdHVicy1ib290c3RyYXAuaDogTmV3IGZpbGUuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIE1ha2VmaWxlICAgICAgICAgICAgICAgICAgfCAyMiArKysrKysrKysrKysrKysrKysrKystCisgaW5jbHVkZS9zdHVicy1ib290c3RyYXAuaCB8IDEyICsrKysrKysrKysrKworIDIgZmlsZXMgY2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3N0dWJzLWJvb3RzdHJhcC5oCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCitpbmRleCAzZTBhZTZmNDNiLi4yNGRjNjZkMTdjIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUKKysrKyBiL01ha2VmaWxlCitAQCAtNzAsOSArNzAsMTggQEAgc3ViZGlyLWRpcnMgPSBpbmNsdWRlCisgdnBhdGggJS5oICQoc3ViZGlyLWRpcnMpCisgCisgIyBXaGF0IHRvIGluc3RhbGwuCistaW5zdGFsbC1vdGhlcnMgPSAkKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmgKKyBpbnN0YWxsLWJpbi1zY3JpcHQgPQorIAorKyMgSWYgd2UncmUgYm9vdHN0cmFwcGluZywgaW5zdGFsbCBhIGR1bW15IGdudS9zdHVicy5oIGFsb25nIHdpdGggdGhlCisrIyBvdGhlciBoZWFkZXJzLCBzbyAnbWFrZSBpbnN0YWxsLWhlYWRlcnMnIHByb2R1Y2VzIGEgdXNlYWJsZSBpbmNsdWRlCisrIyB0cmVlLiAgT3RoZXJ3aXNlLCBpbnN0YWxsIGdudS9zdHVicy5oIGxhdGVyLCBhZnRlciB0aGUgcmVzdCBvZiB0aGUKKysjIGJ1aWxkIGlzIGRvbmUuCisraWZlcSAoJChpbnN0YWxsLWJvb3RzdHJhcC1oZWFkZXJzKSx5ZXMpCisraW5zdGFsbC1oZWFkZXJzOiAkKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmgKKytlbHNlCisraW5zdGFsbC1vdGhlcnMgPSAkKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmgKKytlbmRpZgorKworIGlmZXEgKHllcywkKGJ1aWxkLXNoYXJlZCkpCisgaGVhZGVycyArPSBnbnUvbGliLW5hbWVzLmgKKyBlbmRpZgorQEAgLTE1Miw2ICsxNjEsMTYgQEAgb3RoZXJzOiAkKGNvbW1vbi1vYmpwZngpdGVzdHJ1bi5zaAorIAorIHN1YmRpci1zdHVicyA6PSAkKGZvcmVhY2ggZGlyLCQoc3ViZGlycyksJChjb21tb24tb2JqcGZ4KSQoZGlyKS9zdHVicykKKyAKKysjIGdudS9zdHVicy5oIGRlcGVuZHMgKHZpYSB0aGUgc3ViZGlyICdzdHVicycgdGFyZ2V0cykgb24gYWxsIHRoZSAubworKyMgZmlsZXMgaW4gRUdMSUJDLiAgRm9yIGJvb3RzdHJhcHBpbmcgYSBHQ0MvRUdMSUJDIHBhaXIsIGFuIGVtcHR5CisrIyBnbnUvc3R1YnMuaCBpcyBnb29kIGVub3VnaC4KKytpZmVxICgkKGluc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnMpLHllcykKKyskKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmg6IGluY2x1ZGUvc3R1YnMtYm9vdHN0cmFwLmggJCgrZm9yY2UpCisrCSQobWFrZS10YXJnZXQtZGlyZWN0b3J5KQorKwkkKElOU1RBTExfREFUQSkgJDwgJEAKKysKKytpbnN0YWxsZWQtc3R1YnMgPQorK2Vsc2UKKyBpZm5kZWYgYWJpLXZhcmlhbnRzCisgaW5zdGFsbGVkLXN0dWJzID0gJChpbnN0X2luY2x1ZGVkaXIpL2dudS9zdHVicy5oCisgZWxzZQorQEAgLTE3OCw2ICsxOTcsNyBAQCAkKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmg6ICQoK2ZvcmNlKQorIAorIGluc3RhbGwtb3RoZXJzLW5vc3ViZGlyOiAkKGluc3RhbGxlZC1zdHVicykKKyBlbmRpZgorK2VuZGlmCisgCisgCisgIyBTaW5jZSBzdHVicy5oIGlzIG5ldmVyIG5lZWRlZCB3aGVuIGJ1aWxkaW5nIHRoZSBsaWJyYXJ5LCB3ZSBzaW1wbGlmeSB0aGUKK2RpZmYgLS1naXQgYS9pbmNsdWRlL3N0dWJzLWJvb3RzdHJhcC5oIGIvaW5jbHVkZS9zdHVicy1ib290c3RyYXAuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjFkMmI2NjlhZmYKKy0tLSAvZGV2L251bGwKKysrKyBiL2luY2x1ZGUvc3R1YnMtYm9vdHN0cmFwLmgKK0BAIC0wLDAgKzEsMTIgQEAKKysvKiBQbGFjZWhvbGRlciBzdHVicy5oIGZpbGUgZm9yIGJvb3RzdHJhcHBpbmcuCisrCisrICAgV2hlbiBib290c3RyYXBwaW5nIGEgR0NDL0VHTElCQyBwYWlyLCBHQ0MgcmVxdWlyZXMgdGhhdCB0aGUgRUdMSUJDCisrICAgaGVhZGVycyBiZSBpbnN0YWxsZWQsIGJ1dCB3ZSBjYW4ndCBmdWxseSBidWlsZCBFR0xJQkMgd2l0aG91dCB0aGF0CisrICAgR0NDLiAgU28gd2UgcnVuIHRoZSBjb21tYW5kOgorKworKyAgICAgIG1ha2UgaW5zdGFsbC1oZWFkZXJzIGluc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnM9eWVzCisrCisrICAgdG8gaW5zdGFsbCB0aGUgaGVhZGVycyBHQ0MgbmVlZHMsIGJ1dCBhdm9pZCBidWlsZGluZyBjZXJ0YWluCisrICAgZGlmZmljdWx0IGhlYWRlcnMuICBUaGUgPGdudS9zdHVicy5oPiBoZWFkZXIgZGVwZW5kcywgdmlhIHRoZQorKyAgIEVHTElCQyBzdWJkaXIgJ3N0dWJzJyBtYWtlIHRhcmdldHMsIG9uIGV2ZXJ5IC5vIGZpbGUgaW4gRUdMSUJDLCBidXQKKysgICBhbiBlbXB0eSBzdHVicy5oIGxpa2UgdGhpcyB3aWxsIGRvIGZpbmUgZm9yIEdDQy4gICovCistLSAKKzIuMTMuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxOS1lZ2xpYmMtQ2xlYXItY2FjaGUtbGluZXMtb24tcHBjOHh4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTktZWdsaWJjLUNsZWFyLWNhY2hlLWxpbmVzLW9uLXBwYzh4eC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZGIyOGNmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTktZWdsaWJjLUNsZWFyLWNhY2hlLWxpbmVzLW9uLXBwYzh4eC5wYXRjaApAQCAtMCwwICsxLDgzIEBACitGcm9tIDE3MzJjN2YyNTQ1M2M4NzljMTc3MDE4MzllZjM0ODc2YTczNTcwMDggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCAzMSBEZWMgMjAxNSAxNToxNTowOSAtMDgwMAorU3ViamVjdDogW1BBVENIIDE5LzI1XSBlZ2xpYmM6IENsZWFyIGNhY2hlIGxpbmVzIG9uIHBwYzh4eAorCisyMDA3LTA2LTEzICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgorICAgICAgICAgICAgTWFyayBTaGlud2VsbCAgPHNoaW53ZWxsQGNvZGVzb3VyY2VyeS5jb20+CisKKyAgICAgICAgKiBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2xpYmMtc3RhcnQuYworICAgICAgICAoX19saWJjX3N0YXJ0X21haW4pOiBEZXRlY3QgOHh4IHBhcnRzIGFuZCBjbGVhcgorICAgICAgICBfX2NhY2hlX2xpbmVfc2l6ZSBpZiBkZXRlY3RlZC4KKyAgICAgICAgKiBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLXN5c2RlcC5jCisgICAgICAgIChETF9QTEFURk9STV9BVVhWKTogTGlrZXdpc2UuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9kbC1zeXNkZXAuYyAgfCAxNCArKysrKysrKysrKysrLQorIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvbGliYy1zdGFydC5jIHwgMTYgKysrKysrKysrKysrKysrLQorIDIgZmlsZXMgY2hhbmdlZCwgMjggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvZGwtc3lzZGVwLmMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLXN5c2RlcC5jCitpbmRleCAyM2Y1ZDVkMzg4Li43ZTQ1Mjg4ZGI3IDEwMDY0NAorLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9kbC1zeXNkZXAuYworKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9kbC1zeXNkZXAuYworQEAgLTI0LDkgKzI0LDIxIEBAIGludCBfX2NhY2hlX2xpbmVfc2l6ZSBhdHRyaWJ1dGVfaGlkZGVuOworIC8qIFNjYW4gdGhlIEF1eCBWZWN0b3IgZm9yIHRoZSAiRGF0YSBDYWNoZSBCbG9jayBTaXplIiBlbnRyeS4gIElmIGZvdW5kCisgICAgdmVyaWZ5IHRoYXQgdGhlIHN0YXRpYyBleHRlcm4gX19jYWNoZV9saW5lX3NpemUgaXMgZGVmaW5lZCBieSBjaGVja2luZworICAgIGZvciBub3QgTlVMTC4gIElmIGl0IGlzIGRlZmluZWQgdGhlbiBhc3NpZ24gdGhlIGNhY2hlIGJsb2NrIHNpemUKKy0gICB2YWx1ZSB0byBfX2NhY2hlX2xpbmVfc2l6ZS4gICovCisrICAgdmFsdWUgdG8gX19jYWNoZV9saW5lX3NpemUuICBUaGlzIGlzIHVzZWQgYnkgbWVtc2V0IHRvCisrICAgb3B0aW1pemUgc2V0dGluZyB0byB6ZXJvLiAgV2UgaGF2ZSB0byBkZXRlY3QgOHh4IHByb2Nlc3NvcnMsIHdoaWNoCisrICAgaGF2ZSBidWdneSBkY2J6IGltcGxlbWVudGF0aW9ucyB0aGF0IGNhbm5vdCByZXBvcnQgcGFnZSBmYXVsdHMKKysgICBjb3JyZWN0bHkuICBUaGF0IHJlcXVpcmVzIHJlYWRpbmcgU1BSLCB3aGljaCBpcyBhIHByaXZpbGVnZWQKKysgICBvcGVyYXRpb24uICBGb3J0dW5hdGVseSAyLjIuMTggYW5kIGxhdGVyIGVtdWxhdGVzIFBvd2VyUEMgbWZzcHIKKysgICByZWFkcyBmcm9tIHRoZSBQVlIgcmVnaXN0ZXIuICAgKi8KKyAjZGVmaW5lIERMX1BMQVRGT1JNX0FVWFYJCQkJCQkgICAgICBcCisgICAgICAgY2FzZSBBVF9EQ0FDSEVCU0laRToJCQkJCQkgICAgICBcCisrCWlmIChfX0xJTlVYX0tFUk5FTF9WRVJTSU9OID49IDB4MDIwMjE4KQkJCQkgICAgICBcCisrCSAgewkJCQkJCQkJICAgICAgXAorKwkgICAgdW5zaWduZWQgcHZyID0gMDsJCQkJCQkgICAgICBcCisrCSAgICBhc20gKCJtZnNwciAlMCwgMjg3IiA6ICI9ciIgKHB2cikpOwkJCQkgICAgICBcCisrCSAgICBpZiAoKHB2ciAmIDB4ZmZmZjAwMDApID09IDB4MDA1MDAwMDApCQkJICAgICAgXAorKwkgICAgICBicmVhazsJCQkJCQkJICAgICAgXAorKwkgIH0JCQkJCQkJCSAgICAgIFwKKyAJX19jYWNoZV9saW5lX3NpemUgPSBhdi0+YV91bi5hX3ZhbDsJCQkJICAgICAgXAorIAlicmVhazsKKyAKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2xpYmMtc3RhcnQuYyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvbGliYy1zdGFydC5jCitpbmRleCBhZDAzNmMxZTRiLi5hZmVlNTZhM2RhIDEwMDY0NAorLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9saWJjLXN0YXJ0LmMKKysrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvbGliYy1zdGFydC5jCitAQCAtNzMsMTEgKzczLDI1IEBAIF9fbGliY19zdGFydF9tYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YsCisgCisgICAvKiBJbml0aWFsaXplIHRoZSBfX2NhY2hlX2xpbmVfc2l6ZSB2YXJpYWJsZSBmcm9tIHRoZSBhdXggdmVjdG9yLiAgRm9yIHRoZQorICAgICAgc3RhdGljIGNhc2UsIHdlIGFsc28gbmVlZCBfZGxfaHdjYXAsIF9kbF9od2NhcDIgYW5kIF9kbF9wbGF0Zm9ybSwgc28gd2UKKy0gICAgIGNhbiBjYWxsIF9fdGNiX3BhcnNlX2h3Y2FwX2FuZF9jb252ZXJ0X2F0X3BsYXRmb3JtICgpLiAgKi8KKysgICAgIGNhbiBjYWxsIF9fdGNiX3BhcnNlX2h3Y2FwX2FuZF9jb252ZXJ0X2F0X3BsYXRmb3JtICgpLgorKworKyAgICAgVGhpcyBpcyB1c2VkIGJ5IG1lbXNldCB0byBvcHRpbWl6ZSBzZXR0aW5nIHRvIHplcm8uICBXZSBoYXZlIHRvCisrICAgICBkZXRlY3QgOHh4IHByb2Nlc3NvcnMsIHdoaWNoIGhhdmUgYnVnZ3kgZGNieiBpbXBsZW1lbnRhdGlvbnMgdGhhdAorKyAgICAgY2Fubm90IHJlcG9ydCBwYWdlIGZhdWx0cyBjb3JyZWN0bHkuICBUaGF0IHJlcXVpcmVzIHJlYWRpbmcgU1BSLAorKyAgICAgd2hpY2ggaXMgYSBwcml2aWxlZ2VkIG9wZXJhdGlvbi4gIEZvcnR1bmF0ZWx5IDIuMi4xOCBhbmQgbGF0ZXIKKysgICAgIGVtdWxhdGVzIFBvd2VyUEMgbWZzcHIgcmVhZHMgZnJvbSB0aGUgUFZSIHJlZ2lzdGVyLiAgKi8KKyAgIGZvciAoRWxmVyAoYXV4dl90KSAqIGF2ID0gYXV4dmVjOyBhdi0+YV90eXBlICE9IEFUX05VTEw7ICsrYXYpCisgICAgIHN3aXRjaCAoYXYtPmFfdHlwZSkKKyAgICAgICB7CisgICAgICAgY2FzZSBBVF9EQ0FDSEVCU0laRToKKysJaWYgKF9fTElOVVhfS0VSTkVMX1ZFUlNJT04gPj0gMHgwMjAyMTgpCisrCSAgeworKwkgICAgdW5zaWduZWQgcHZyID0gMDsKKysKKysJICAgIGFzbSAoIm1mc3ByICUwLCAyODciIDogIj1yIiAocHZyKSA6KTsKKysJICAgIGlmICgocHZyICYgMHhmZmZmMDAwMCkgPT0gMHgwMDUwMDAwMCkKKysJICAgICAgYnJlYWs7CisrCSAgfQorIAlfX2NhY2hlX2xpbmVfc2l6ZSA9IGF2LT5hX3VuLmFfdmFsOworIAlicmVhazsKKyAjaWZuZGVmIFNIQVJFRAorLS0gCisyLjEzLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTktZWdsaWJjLUhlbHAtYm9vdHN0cmFwLWNyb3NzLXRvb2xjaGFpbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE5LWVnbGliYy1IZWxwLWJvb3RzdHJhcC1jcm9zcy10b29sY2hhaW4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1OTIxYmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTktZWdsaWJjLUhlbHAtYm9vdHN0cmFwLWNyb3NzLXRvb2xjaGFpbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMCArMCwwIEBACi1Gcm9tIDJjYjdlM2NhZTQwMjBmNDMxZDQyNmFkMTc0MGJiMjU1MDZjZGU4OTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDo0OToyOCArMDAwMAotU3ViamVjdDogW1BBVENIIDE5LzI2XSBlZ2xpYmM6IEhlbHAgYm9vdHN0cmFwIGNyb3NzIHRvb2xjaGFpbgotCi1UYWtlbiBmcm9tIEVHTElCQywgcjE0ODQgKyByMTUyNQotCi0gICAgICAgIDIwMDctMDItMjAgIEppbSBCbGFuZHkgIDxqaW1iQGNvZGVzb3VyY2VyeS5jb20+Ci0KLSAgICAgICAgICAgICAgICAqIE1ha2VmaWxlIChpbnN0YWxsLWhlYWRlcnMpOiBQcmVzZXJ2ZSBvbGQgYmVoYXZpb3I6IGRlcGVuZCBvbgotICAgICAgICAgICAgICAgICQoaW5zdF9pbmNsdWRlZGlyKS9nbnUvc3R1YnMuaCBvbmx5IGlmIGluc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnMKLSAgICAgICAgICAgICAgICBpcyBzZXQ7IG90aGVyd2lzZSwgcGxhY2UgZ251L3N0dWJzLmggb24gdGhlICdpbnN0YWxsLW90aGVycycgbGlzdC4KLQotICAgICAgICAyMDA3LTAyLTE2ICBKaW0gQmxhbmR5ICA8amltYkBjb2Rlc291cmNlcnkuY29tPgotCi0gICAgICAgICAgICAgICAgKiBNYWtlZmlsZTogQW1lbmQgbWFrZSBpbnN0YWxsLWhlYWRlcnMgdG8gaW5zdGFsbCBldmVyeXRoaW5nCi0gICAgICAgICAgICAgICAgbmVjZXNzYXJ5IGZvciBidWlsZGluZyBhIGNyb3NzLWNvbXBpbGVyLiAgSW5zdGFsbCBnbnUvc3R1YnMuaCBhcwotICAgICAgICAgICAgICAgIHBhcnQgb2YgJ2luc3RhbGwtaGVhZGVycycsIG5vdCAnaW5zdGFsbC1vdGhlcnMnLgotICAgICAgICAgICAgICAgIElmIGluc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnMgaXMgJ3llcycsIGluc3RhbGwgYSBkdW1teSBjb3B5IG9mCi0gICAgICAgICAgICAgICAgZ251L3N0dWJzLmgsIGluc3RlYWQgb2YgY29tcHV0aW5nIHRoZSByZWFsIHRoaW5nLgotICAgICAgICAgICAgICAgICogaW5jbHVkZS9zdHVicy1ib290c3RyYXAuaDogTmV3IGZpbGUuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIE1ha2VmaWxlICAgICAgICAgICAgICAgICAgfCAyMiArKysrKysrKysrKysrKysrKysrKystCi0gaW5jbHVkZS9zdHVicy1ib290c3RyYXAuaCB8IDEyICsrKysrKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3N0dWJzLWJvb3RzdHJhcC5oCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCi1pbmRleCAxYWUzMjgxLi4yNmFiN2JmIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUKLSsrKyBiL01ha2VmaWxlCi1AQCAtNzAsOSArNzAsMTggQEAgc3ViZGlyLWRpcnMgPSBpbmNsdWRlCi0gdnBhdGggJS5oICQoc3ViZGlyLWRpcnMpCi0gCi0gIyBXaGF0IHRvIGluc3RhbGwuCi0taW5zdGFsbC1vdGhlcnMgPSAkKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmgKLSBpbnN0YWxsLWJpbi1zY3JpcHQgPQotIAotKyMgSWYgd2UncmUgYm9vdHN0cmFwcGluZywgaW5zdGFsbCBhIGR1bW15IGdudS9zdHVicy5oIGFsb25nIHdpdGggdGhlCi0rIyBvdGhlciBoZWFkZXJzLCBzbyAnbWFrZSBpbnN0YWxsLWhlYWRlcnMnIHByb2R1Y2VzIGEgdXNlYWJsZSBpbmNsdWRlCi0rIyB0cmVlLiAgT3RoZXJ3aXNlLCBpbnN0YWxsIGdudS9zdHVicy5oIGxhdGVyLCBhZnRlciB0aGUgcmVzdCBvZiB0aGUKLSsjIGJ1aWxkIGlzIGRvbmUuCi0raWZlcSAoJChpbnN0YWxsLWJvb3RzdHJhcC1oZWFkZXJzKSx5ZXMpCi0raW5zdGFsbC1oZWFkZXJzOiAkKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmgKLStlbHNlCi0raW5zdGFsbC1vdGhlcnMgPSAkKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmgKLStlbmRpZgotKwotIGlmZXEgKHllcywkKGJ1aWxkLXNoYXJlZCkpCi0gaGVhZGVycyArPSBnbnUvbGliLW5hbWVzLmgKLSBlbmRpZgotQEAgLTE1Miw2ICsxNjEsMTYgQEAgb3RoZXJzOiAkKGNvbW1vbi1vYmpwZngpdGVzdHJ1bi5zaAotIAotIHN1YmRpci1zdHVicyA6PSAkKGZvcmVhY2ggZGlyLCQoc3ViZGlycyksJChjb21tb24tb2JqcGZ4KSQoZGlyKS9zdHVicykKLSAKLSsjIGdudS9zdHVicy5oIGRlcGVuZHMgKHZpYSB0aGUgc3ViZGlyICdzdHVicycgdGFyZ2V0cykgb24gYWxsIHRoZSAubwotKyMgZmlsZXMgaW4gRUdMSUJDLiAgRm9yIGJvb3RzdHJhcHBpbmcgYSBHQ0MvRUdMSUJDIHBhaXIsIGFuIGVtcHR5Ci0rIyBnbnUvc3R1YnMuaCBpcyBnb29kIGVub3VnaC4KLStpZmVxICgkKGluc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnMpLHllcykKLSskKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmg6IGluY2x1ZGUvc3R1YnMtYm9vdHN0cmFwLmggJCgrZm9yY2UpCi0rCSQobWFrZS10YXJnZXQtZGlyZWN0b3J5KQotKwkkKElOU1RBTExfREFUQSkgJDwgJEAKLSsKLStpbnN0YWxsZWQtc3R1YnMgPQotK2Vsc2UKLSBpZm5kZWYgYWJpLXZhcmlhbnRzCi0gaW5zdGFsbGVkLXN0dWJzID0gJChpbnN0X2luY2x1ZGVkaXIpL2dudS9zdHVicy5oCi0gZWxzZQotQEAgLTE3OCw2ICsxOTcsNyBAQCAkKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmg6ICQoK2ZvcmNlKQotIAotIGluc3RhbGwtb3RoZXJzLW5vc3ViZGlyOiAkKGluc3RhbGxlZC1zdHVicykKLSBlbmRpZgotK2VuZGlmCi0gCi0gCi0gIyBTaW5jZSBzdHVicy5oIGlzIG5ldmVyIG5lZWRlZCB3aGVuIGJ1aWxkaW5nIHRoZSBsaWJyYXJ5LCB3ZSBzaW1wbGlmeSB0aGUKLWRpZmYgLS1naXQgYS9pbmNsdWRlL3N0dWJzLWJvb3RzdHJhcC5oIGIvaW5jbHVkZS9zdHVicy1ib290c3RyYXAuaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjFkMmI2NjkKLS0tLSAvZGV2L251bGwKLSsrKyBiL2luY2x1ZGUvc3R1YnMtYm9vdHN0cmFwLmgKLUBAIC0wLDAgKzEsMTIgQEAKLSsvKiBQbGFjZWhvbGRlciBzdHVicy5oIGZpbGUgZm9yIGJvb3RzdHJhcHBpbmcuCi0rCi0rICAgV2hlbiBib290c3RyYXBwaW5nIGEgR0NDL0VHTElCQyBwYWlyLCBHQ0MgcmVxdWlyZXMgdGhhdCB0aGUgRUdMSUJDCi0rICAgaGVhZGVycyBiZSBpbnN0YWxsZWQsIGJ1dCB3ZSBjYW4ndCBmdWxseSBidWlsZCBFR0xJQkMgd2l0aG91dCB0aGF0Ci0rICAgR0NDLiAgU28gd2UgcnVuIHRoZSBjb21tYW5kOgotKwotKyAgICAgIG1ha2UgaW5zdGFsbC1oZWFkZXJzIGluc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnM9eWVzCi0rCi0rICAgdG8gaW5zdGFsbCB0aGUgaGVhZGVycyBHQ0MgbmVlZHMsIGJ1dCBhdm9pZCBidWlsZGluZyBjZXJ0YWluCi0rICAgZGlmZmljdWx0IGhlYWRlcnMuICBUaGUgPGdudS9zdHVicy5oPiBoZWFkZXIgZGVwZW5kcywgdmlhIHRoZQotKyAgIEVHTElCQyBzdWJkaXIgJ3N0dWJzJyBtYWtlIHRhcmdldHMsIG9uIGV2ZXJ5IC5vIGZpbGUgaW4gRUdMSUJDLCBidXQKLSsgICBhbiBlbXB0eSBzdHVicy5oIGxpa2UgdGhpcyB3aWxsIGRvIGZpbmUgZm9yIEdDQy4gICovCi0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMC1lZ2xpYmMtUmVzb2x2ZS1fX2Zwc2NyX3ZhbHVlcy1vbi1TSDQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMC1lZ2xpYmMtUmVzb2x2ZS1fX2Zwc2NyX3ZhbHVlcy1vbi1TSDQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjgzNWQ4NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIwLWVnbGliYy1SZXNvbHZlLV9fZnBzY3JfdmFsdWVzLW9uLVNINC5wYXRjaApAQCAtMCwwICsxLDU2IEBACitGcm9tIDEwOGIzYTFkZjk2YTg1NTIyYzUyYTBkZWMwMzJmYzJjMTA2ZjVmMmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDo1NTo1MyArMDAwMAorU3ViamVjdDogW1BBVENIIDIwLzI1XSBlZ2xpYmM6IFJlc29sdmUgX19mcHNjcl92YWx1ZXMgb24gU0g0CisKKzIwMTAtMDktMjkgIE5vYnVoaXJvIEl3YW1hdHN1ICA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CisgICAgICAgICAgICBBbmRyZXcgU3R1YmJzICA8YW1zQGNvZGVzb3VyY2VyeS5jb20+CisKKyAgICAgICAgUmVzb2x2ZSBTSCdzIF9fZnBzY3JfdmFsdWVzIHRvIHN5bWJvbCBpbiBsaWJjLnNvLgorCisgICAgICAgICogc3lzZGVwcy9zaC9zaDQvZnB1L2ZwdV9jb250cm9sLmg6IEFkZCBDKysgX19zZXRfZnBzY3IgcHJvdG90eXBlLgorICAgICAgICAqIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL1ZlcnNpb25zIChHTElCQ18yLjIpOiBBZGQgX19mcHNjcl92YWx1ZXMuCisgICAgICAgICogc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvc3lzZGVwLlMgKF9fX2Zwc2NyX3ZhbHVlcyk6IE5ldyBjb25zdGFudC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9WZXJzaW9ucyB8ICAxICsKKyBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9zeXNkZXAuUyB8IDExICsrKysrKysrKysrCisgMiBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9WZXJzaW9ucyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL1ZlcnNpb25zCitpbmRleCBlMDkzOGM0MTY1Li5jYTFkN2RhMzM5IDEwMDY0NAorLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvVmVyc2lvbnMKKysrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL1ZlcnNpb25zCitAQCAtMiw2ICsyLDcgQEAgbGliYyB7CisgICBHTElCQ18yLjIgeworICAgICAjIGZ1bmN0aW9ucyB1c2VkIGluIG90aGVyIGxpYnJhcmllcworICAgICBfX3hzdGF0NjQ7IF9fZnhzdGF0NjQ7IF9fbHhzdGF0NjQ7CisrICAgIF9fZnBzY3JfdmFsdWVzOworIAorICAgICAjIGEqCisgICAgIGFscGhhc29ydDY0OworZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL3N5c2RlcC5TIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvc3lzZGVwLlMKK2luZGV4IDVmMTFiYzczN2IuLjJmZDIxN2IwMGIgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9zeXNkZXAuUworKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvc3lzZGVwLlMKK0BAIC0zMCwzICszMCwxNCBAQCBFTlRSWSAoX19zeXNjYWxsX2Vycm9yKQorIAorICNkZWZpbmUgX19zeXNjYWxsX2Vycm9yIF9fc3lzY2FsbF9lcnJvcl8xCisgI2luY2x1ZGUgPHN5c2RlcHMvdW5peC9zaC9zeXNkZXAuUz4KKysKKysgICAgICAgLmRhdGEKKysgICAgICAgLmFsaWduIDMKKysgICAgICAgLmdsb2JsIF9fX2Zwc2NyX3ZhbHVlcworKyAgICAgICAudHlwZSBfX19mcHNjcl92YWx1ZXMsIEBvYmplY3QKKysgICAgICAgLnNpemUgX19fZnBzY3JfdmFsdWVzLCA4CisrX19fZnBzY3JfdmFsdWVzOgorKyAgICAgICAubG9uZyAwCisrICAgICAgIC5sb25nIDB4ODAwMDAKKyt3ZWFrX2FsaWFzIChfX19mcHNjcl92YWx1ZXMsIF9fZnBzY3JfdmFsdWVzKQorKworLS0gCisyLjEzLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjAtZWdsaWJjLWNoZXJyeS1waWNrZWQtZnJvbS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIwLWVnbGliYy1jaGVycnktcGlja2VkLWZyb20ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzNDQ1NzMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjAtZWdsaWJjLWNoZXJyeS1waWNrZWQtZnJvbS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLUZyb20gYjJlZDkwNmVjODY0NTgzYjQzMzc5ZWY5YWQyYjU2MzBjMTIzMjU2NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDMxIERlYyAyMDE1IDE1OjEwOjMzIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMjAvMjZdIGVnbGliYzogY2hlcnJ5LXBpY2tlZCBmcm9tCi0KLWh0dHA6Ly93d3cuZWdsaWJjLm9yZy9hcmNoaXZlcy9wYXRjaGVzL21zZzAwNzcyLmh0bWwKLQotTm90IHlldCBtZXJnZWQgaW50byBnbGliYwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHJlc29sdi9yZXNfbGliYy5jIHwgMTQgKysrKysrKysrKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvcmVzb2x2L3Jlc19saWJjLmMgYi9yZXNvbHYvcmVzX2xpYmMuYwotaW5kZXggYTRiMzc2Zi4uMzI1NmUxMiAxMDA2NDQKLS0tLSBhL3Jlc29sdi9yZXNfbGliYy5jCi0rKysgYi9yZXNvbHYvcmVzX2xpYmMuYwotQEAgLTIxLDExICsyMSwxMyBAQAotICNpbmNsdWRlIDxhdG9taWMuaD4KLSAjaW5jbHVkZSA8bGltaXRzLmg+Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgotICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0gI2luY2x1ZGUgPGFycGEvbmFtZXNlci5oPgotICNpbmNsdWRlIDxyZXNvbHYuaD4KLSAjaW5jbHVkZSA8bGliYy1sb2NrLmg+Ci0gCi0rX19saWJjX2xvY2tfZGVmaW5lX2luaXRpYWxpemVkIChzdGF0aWMsIGxvY2spOwotIGV4dGVybiB1bnNpZ25lZCBsb25nIGxvbmcgaW50IF9fcmVzX2luaXRzdGFtcCBhdHRyaWJ1dGVfaGlkZGVuOwotIC8qIFdlIGhhdmUgYXRvbWljIGluY3JlbWVudCBvcGVyYXRpb25zIG9uIDY0LWJpdCBwbGF0Zm9ybXMuICAqLwotICNpZiBfX1dPUkRTSVpFID09IDY0Ci1AQCAtMzMsNyArMzUsNiBAQCBleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIGludCBfX3Jlc19pbml0c3RhbXAgYXR0cmlidXRlX2hpZGRlbjsKLSAjIGRlZmluZSBhdG9taWNpbmN1bmxvY2sobG9jaykgKHZvaWQpIDAKLSAjIGRlZmluZSBhdG9taWNpbmModmFyKSBjYXRvbWljX2luY3JlbWVudCAoJih2YXIpKQotICNlbHNlCi0tX19saWJjX2xvY2tfZGVmaW5lX2luaXRpYWxpemVkIChzdGF0aWMsIGxvY2spOwotICMgZGVmaW5lIGF0b21pY2luY2xvY2sobG9jaykgX19saWJjX2xvY2tfbG9jayAobG9jaykKLSAjIGRlZmluZSBhdG9taWNpbmN1bmxvY2sobG9jaykgX19saWJjX2xvY2tfdW5sb2NrIChsb2NrKQotICMgZGVmaW5lIGF0b21pY2luYyh2YXIpICsrdmFyCi1AQCAtOTIsNyArOTMsMTggQEAgcmVzX2luaXQodm9pZCkgewotIGludAotIF9fcmVzX21heWJlX2luaXQgKHJlc19zdGF0ZSByZXNwLCBpbnQgcHJlaW5pdCkKLSB7Ci0rCXN0YXRpYyB0aW1lX3QgbGFzdF9tdGltZTsKLSsJc3RydWN0IHN0YXQgc3RhdGJ1ZjsKLSsJaW50IHJldDsKLSsKLSAJaWYgKHJlc3AtPm9wdGlvbnMgJiBSRVNfSU5JVCkgewotKwkJcmV0ID0gc3RhdCAoX1BBVEhfUkVTQ09ORiwgJnN0YXRidWYpOwotKwkJX19saWJjX2xvY2tfbG9jayAobG9jayk7Ci0rCQlpZiAoKHJldCA9PSAwKSAmJiAobGFzdF9tdGltZSAhPSBzdGF0YnVmLnN0X210aW1lKSkgewotKwkJCWxhc3RfbXRpbWUgPSBzdGF0YnVmLnN0X210aW1lOwotKwkJCWF0b21pY2luYyAoX19yZXNfaW5pdHN0YW1wKTsKLSsJCX0KLSsJCV9fbGliY19sb2NrX3VubG9jayAobG9jayk7Ci0gCQlpZiAoX19yZXNfaW5pdHN0YW1wICE9IHJlc3AtPl91Ll9leHQuaW5pdHN0YW1wKSB7Ci0gCQkJaWYgKHJlc3AtPm5zY291bnQgPiAwKQotIAkJCQlfX3Jlc19pY2xvc2UgKHJlc3AsIHRydWUpOwotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjEtZWdsaWJjLUNsZWFyLWNhY2hlLWxpbmVzLW9uLXBwYzh4eC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIxLWVnbGliYy1DbGVhci1jYWNoZS1saW5lcy1vbi1wcGM4eHgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5YTczOTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjEtZWdsaWJjLUNsZWFyLWNhY2hlLWxpbmVzLW9uLXBwYzh4eC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDgzICswLDAgQEAKLUZyb20gMDAwYWI1MThhYTEyNjk3MTRiYzBhOWE0NjMzYjBhNTM4ZmFlOTFkOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDMxIERlYyAyMDE1IDE1OjE1OjA5IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMjEvMjZdIGVnbGliYzogQ2xlYXIgY2FjaGUgbGluZXMgb24gcHBjOHh4Ci0KLTIwMDctMDYtMTMgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+Ci0gICAgICAgICAgICBNYXJrIFNoaW53ZWxsICA8c2hpbndlbGxAY29kZXNvdXJjZXJ5LmNvbT4KLQotICAgICAgICAqIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvbGliYy1zdGFydC5jCi0gICAgICAgIChfX2xpYmNfc3RhcnRfbWFpbik6IERldGVjdCA4eHggcGFydHMgYW5kIGNsZWFyCi0gICAgICAgIF9fY2FjaGVfbGluZV9zaXplIGlmIGRldGVjdGVkLgotICAgICAgICAqIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvZGwtc3lzZGVwLmMKLSAgICAgICAgKERMX1BMQVRGT1JNX0FVWFYpOiBMaWtld2lzZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLXN5c2RlcC5jICB8IDE0ICsrKysrKysrKysrKystCi0gc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9saWJjLXN0YXJ0LmMgfCAxNiArKysrKysrKysrKysrKystCi0gMiBmaWxlcyBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9kbC1zeXNkZXAuYyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvZGwtc3lzZGVwLmMKLWluZGV4IDk4ZWMyYjMuLmIzODRhZTAgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLXN5c2RlcC5jCi0rKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLXN5c2RlcC5jCi1AQCAtMjQsOSArMjQsMjEgQEAgaW50IF9fY2FjaGVfbGluZV9zaXplIGF0dHJpYnV0ZV9oaWRkZW47Ci0gLyogU2NhbiB0aGUgQXV4IFZlY3RvciBmb3IgdGhlICJEYXRhIENhY2hlIEJsb2NrIFNpemUiIGVudHJ5LiAgSWYgZm91bmQKLSAgICB2ZXJpZnkgdGhhdCB0aGUgc3RhdGljIGV4dGVybiBfX2NhY2hlX2xpbmVfc2l6ZSBpcyBkZWZpbmVkIGJ5IGNoZWNraW5nCi0gICAgZm9yIG5vdCBOVUxMLiAgSWYgaXQgaXMgZGVmaW5lZCB0aGVuIGFzc2lnbiB0aGUgY2FjaGUgYmxvY2sgc2l6ZQotLSAgIHZhbHVlIHRvIF9fY2FjaGVfbGluZV9zaXplLiAgKi8KLSsgICB2YWx1ZSB0byBfX2NhY2hlX2xpbmVfc2l6ZS4gIFRoaXMgaXMgdXNlZCBieSBtZW1zZXQgdG8KLSsgICBvcHRpbWl6ZSBzZXR0aW5nIHRvIHplcm8uICBXZSBoYXZlIHRvIGRldGVjdCA4eHggcHJvY2Vzc29ycywgd2hpY2gKLSsgICBoYXZlIGJ1Z2d5IGRjYnogaW1wbGVtZW50YXRpb25zIHRoYXQgY2Fubm90IHJlcG9ydCBwYWdlIGZhdWx0cwotKyAgIGNvcnJlY3RseS4gIFRoYXQgcmVxdWlyZXMgcmVhZGluZyBTUFIsIHdoaWNoIGlzIGEgcHJpdmlsZWdlZAotKyAgIG9wZXJhdGlvbi4gIEZvcnR1bmF0ZWx5IDIuMi4xOCBhbmQgbGF0ZXIgZW11bGF0ZXMgUG93ZXJQQyBtZnNwcgotKyAgIHJlYWRzIGZyb20gdGhlIFBWUiByZWdpc3Rlci4gICAqLwotICNkZWZpbmUgRExfUExBVEZPUk1fQVVYVgkJCQkJCSAgICAgIFwKLSAgICAgICBjYXNlIEFUX0RDQUNIRUJTSVpFOgkJCQkJCSAgICAgIFwKLSsJaWYgKF9fTElOVVhfS0VSTkVMX1ZFUlNJT04gPj0gMHgwMjAyMTgpCQkJCSAgICAgIFwKLSsJICB7CQkJCQkJCQkgICAgICBcCi0rCSAgICB1bnNpZ25lZCBwdnIgPSAwOwkJCQkJCSAgICAgIFwKLSsJICAgIGFzbSAoIm1mc3ByICUwLCAyODciIDogIj1yIiAocHZyKSk7CQkJCSAgICAgIFwKLSsJICAgIGlmICgocHZyICYgMHhmZmZmMDAwMCkgPT0gMHgwMDUwMDAwMCkJCQkgICAgICBcCi0rCSAgICAgIGJyZWFrOwkJCQkJCQkgICAgICBcCi0rCSAgfQkJCQkJCQkJICAgICAgXAotIAlfX2NhY2hlX2xpbmVfc2l6ZSA9IGF2LT5hX3VuLmFfdmFsOwkJCQkgICAgICBcCi0gCWJyZWFrOwotIAotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvbGliYy1zdGFydC5jIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9saWJjLXN0YXJ0LmMKLWluZGV4IDBlZmQyOTcuLjhjYzBlZjggMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2xpYmMtc3RhcnQuYwotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9saWJjLXN0YXJ0LmMKLUBAIC03MywxMSArNzMsMjUgQEAgX19saWJjX3N0YXJ0X21haW4gKGludCBhcmdjLCBjaGFyICoqYXJndiwKLSAKLSAgIC8qIEluaXRpYWxpemUgdGhlIF9fY2FjaGVfbGluZV9zaXplIHZhcmlhYmxlIGZyb20gdGhlIGF1eCB2ZWN0b3IuICBGb3IgdGhlCi0gICAgICBzdGF0aWMgY2FzZSwgd2UgYWxzbyBuZWVkIF9kbF9od2NhcCwgX2RsX2h3Y2FwMiBhbmQgX2RsX3BsYXRmb3JtLCBzbyB3ZQotLSAgICAgY2FuIGNhbGwgX190Y2JfcGFyc2VfaHdjYXBfYW5kX2NvbnZlcnRfYXRfcGxhdGZvcm0gKCkuICAqLwotKyAgICAgY2FuIGNhbGwgX190Y2JfcGFyc2VfaHdjYXBfYW5kX2NvbnZlcnRfYXRfcGxhdGZvcm0gKCkuCi0rCi0rICAgICBUaGlzIGlzIHVzZWQgYnkgbWVtc2V0IHRvIG9wdGltaXplIHNldHRpbmcgdG8gemVyby4gIFdlIGhhdmUgdG8KLSsgICAgIGRldGVjdCA4eHggcHJvY2Vzc29ycywgd2hpY2ggaGF2ZSBidWdneSBkY2J6IGltcGxlbWVudGF0aW9ucyB0aGF0Ci0rICAgICBjYW5ub3QgcmVwb3J0IHBhZ2UgZmF1bHRzIGNvcnJlY3RseS4gIFRoYXQgcmVxdWlyZXMgcmVhZGluZyBTUFIsCi0rICAgICB3aGljaCBpcyBhIHByaXZpbGVnZWQgb3BlcmF0aW9uLiAgRm9ydHVuYXRlbHkgMi4yLjE4IGFuZCBsYXRlcgotKyAgICAgZW11bGF0ZXMgUG93ZXJQQyBtZnNwciByZWFkcyBmcm9tIHRoZSBQVlIgcmVnaXN0ZXIuICAqLwotICAgZm9yIChFbGZXIChhdXh2X3QpICogYXYgPSBhdXh2ZWM7IGF2LT5hX3R5cGUgIT0gQVRfTlVMTDsgKythdikKLSAgICAgc3dpdGNoIChhdi0+YV90eXBlKQotICAgICAgIHsKLSAgICAgICBjYXNlIEFUX0RDQUNIRUJTSVpFOgotKwlpZiAoX19MSU5VWF9LRVJORUxfVkVSU0lPTiA+PSAweDAyMDIxOCkKLSsJICB7Ci0rCSAgICB1bnNpZ25lZCBwdnIgPSAwOwotKwotKwkgICAgYXNtICgibWZzcHIgJTAsIDI4NyIgOiAiPXIiIChwdnIpIDopOwotKwkgICAgaWYgKChwdnIgJiAweGZmZmYwMDAwKSA9PSAweDAwNTAwMDAwKQotKwkgICAgICBicmVhazsKLSsJICB9Ci0gCV9fY2FjaGVfbGluZV9zaXplID0gYXYtPmFfdW4uYV92YWw7Ci0gCWJyZWFrOwotICNpZm5kZWYgU0hBUkVECi0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMS1lZ2xpYmMtSW5zdGFsbC1QSUMtYXJjaGl2ZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMS1lZ2xpYmMtSW5zdGFsbC1QSUMtYXJjaGl2ZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmVlMzk3YgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIxLWVnbGliYy1JbnN0YWxsLVBJQy1hcmNoaXZlcy5wYXRjaApAQCAtMCwwICsxLDEyMyBAQAorRnJvbSAzMzkyZWU4M2IwMTMyYzA4OWRmZmIxZTk4OTJiNGIyNTJjZTFlYzBlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDE6NTc6MDEgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAyMS8yNV0gZWdsaWJjOiBJbnN0YWxsIFBJQyBhcmNoaXZlcworCitGb3J3YXJkIHBvcnQgZnJvbSBlZ2xpYmMKKworMjAwOC0wMi0wNyAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CisKKyAgICAgICAgKiBNYWtlcnVsZXMgKGluc3RhbGwtZXh0cmFzLCBpbnN0YWxsLW1hcCk6IE5ldyB2YXJpYWJsZXMuCisgICAgICAgIChpbnN0YWxsZWQtbGliY3MpOiBBZGQgbGliY19waWMuYS4KKyAgICAgICAgKGluc3RhbGwtbGliKTogSW5jbHVkZSBfcGljLmEgZmlsZXMgZm9yIHZlcnNpb25lZCBzaGFyZWQKKyAgICAgICAgbGlicmFyaWVzLgorICAgICAgICAoaW5zdGFsbC1tYXAtbm9zdWJkaXIsIGluc3RhbGwtZXh0cmFzLW5vc3ViZGlyKTogQWRkIHJ1bGVzIGZvcgorICAgICAgICBpbnN0YWxsaW5nIGV4dHJhIGZpbGVzLgorICAgICAgICAoaW5zdGFsbC1uby1saWJjLmEtbm9zdWJkaXIpOiBEZXBlbmQgb24gaW5zdGFsbC1tYXAtbm9zdWJkaXIgYW5kCisgICAgICAgIGluc3RhbGwtZXh0cmFzLW5vc3ViZGlyLgorCisyMDA4LTA0LTAxICBNYXhpbSBLdXZ5cmtvdiAgPG1heGltQGNvZGVzb3VyY2VyeS5jb20+CisKKyAgICAgICAgKiBNYWtlcnVsZXMgKGluc3RhbGwtbGliKTogRG9uJ3QgaW5zdGFsbCBsaWJwdGhyZWFkX3BpYy5hLgorICAgICAgICAoaW5zdGFsbC1tYXApOiBEb24ndCBpbnN0YWxsIGxpYnB0aHJlYWRfcGljLm1hcC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBNYWtlcnVsZXMgfCA0MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgNDAgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01ha2VydWxlcyBiL01ha2VydWxlcworaW5kZXggOWJiNzA3YzE2OC4uNzRjYmVmYjliYSAxMDA2NDQKKy0tLSBhL01ha2VydWxlcworKysrIGIvTWFrZXJ1bGVzCitAQCAtNzc1LDYgKzc3NSw5IEBAIGlmZXEgKCQoYnVpbGQtc2hhcmVkKSx5ZXMpCisgJChjb21tb24tb2JqcGZ4KWxpYmMuc286ICQoY29tbW9uLW9ianBmeClsaWJjLm1hcAorIGVuZGlmCisgY29tbW9uLWdlbmVyYXRlZCArPSBsaWJjLnNvIGxpYmNfcGljLm9zCisraWZuZGVmIHN1YmRpcgorK2luc3RhbGwtZXh0cmFzIDo9IHNvaW5pdC5vIHNvZmluaS5vCisrZW5kaWYKKyBpZmRlZiBsaWJjLnNvLXZlcnNpb24KKyAkKGNvbW1vbi1vYmpwZngpbGliYy5zbyQobGliYy5zby12ZXJzaW9uKTogJChjb21tb24tb2JqcGZ4KWxpYmMuc28KKyAJJChtYWtlLWxpbmspCitAQCAtMTAyNiw2ICsxMDI5LDcgQEAgZW5kaWYKKyAKKyBpbnN0YWxsOiBjaGVjay1pbnN0YWxsLXN1cHBvcnRlZAorIAorK2luc3RhbGxlZC1saWJjcyA6PSAkKGluc3RhbGxlZC1saWJjcykgJChpbnN0X2xpYmRpcikvbGliY19waWMuYQorIGluc3RhbGw6ICQoaW5zdGFsbGVkLWxpYmNzKQorICQoaW5zdGFsbGVkLWxpYmNzKTogJChpbnN0X2xpYmRpcikvbGliJChsaWJwcmVmaXgpJTogbGliICQoK2ZvcmNlKQorIAkkKG1ha2UtdGFyZ2V0LWRpcmVjdG9yeSkKK0BAIC0xMDU0LDYgKzEwNTgsMjIgQEAgdmVyc2lvbmVkIDo9ICQoc3RyaXAgJChmb3JlYWNoIHNvLCQoaW5zdGFsbC1saWIuc28pLFwKKyBpbnN0YWxsLWxpYi5zby12ZXJzaW9uZWQgOj0gJChmaWx0ZXIgJCh2ZXJzaW9uZWQpLCAkKGluc3RhbGwtbGliLnNvKSkKKyBpbnN0YWxsLWxpYi5zby11bnZlcnNpb25lZCA6PSAkKGZpbHRlci1vdXQgJCh2ZXJzaW9uZWQpLCAkKGluc3RhbGwtbGliLnNvKSkKKyAKKysjIEluc3RhbGwgdGhlIF9waWMuYSBmaWxlcyBmb3IgdmVyc2lvbmVkIGxpYnJhcmllcywgYW5kIGNvcnJlc3BvbmRpbmcKKysjIC5tYXAgZmlsZXMuCisrIyBsaWJwdGhyZWFkX3BpYy5hIGJyZWFrcyBta2xpYnMsIHNvIGRvbid0IGluc3RhbGwgaXQgYW5kIGl0cyBtYXAuCisraW5zdGFsbC1saWIgOj0gJChpbnN0YWxsLWxpYikgJChpbnN0YWxsLWxpYi5zby12ZXJzaW9uZWQ6JS5zbz0lX3BpYy5hKQorK2luc3RhbGwtbGliIDo9ICQoZmlsdGVyLW91dCBsaWJwdGhyZWFkX3BpYy5hLCQoaW5zdGFsbC1saWIpKQorKyMgRGVzcGl0ZSBoYXZpbmcgYSBzb25hbWUgbGliaHVyZHVzZXIgYW5kIGxpYm1hY2h1c2VyIGRvIG5vdCB1c2Ugc3ltYm9sCisrIyB2ZXJzaW9uaW5nLCBzbyBkb24ndCBpbnN0YWxsIHRoZSBjb3JyZXNwb25kaW5nIC5tYXAgZmlsZXMuCisraWZlcSAoJChidWlsZC1zaGFyZWQpLHllcykKKytpbnN0YWxsLW1hcCA6PSAkKHBhdHN1YnN0ICUuc28sJS5tYXAsXAorKwkJCSQoZm9yZWFjaCBMLCQoaW5zdGFsbC1saWIuc28tdmVyc2lvbmVkKSwkKG5vdGRpciAkTCkpKQorK2luc3RhbGwtbWFwIDo9ICQoZmlsdGVyLW91dCBsaWJodXJkdXNlci5tYXAgbGlibWFjaHVzZXIubWFwIGxpYnB0aHJlYWQubWFwLCQoaW5zdGFsbC1tYXApKQorK2lmbmRlZiBzdWJkaXIKKytpbnN0YWxsLW1hcCA6PSAkKGluc3RhbGwtbWFwKSBsaWJjLm1hcAorK2VuZGlmCisrZW5kaWYKKysKKyAjIEZvciB2ZXJzaW9uZWQgbGlicmFyaWVzLCB3ZSBpbnN0YWxsIHRocmVlIGZpbGVzOgorICMJJChpbnN0X2xpYmRpcikvbGliZm9vLnNvCS0tIGZvciBsaW5raW5nLCBzeW1saW5rIG9yIGxkIHNjcmlwdAorICMJJChpbnN0X3NsaWJkaXIpL2xpYmZvby5zby5OTgktLSBmb3IgbG9hZGluZyBieSBTT05BTUUsIHN5bWxpbmsKK0BAIC0xMjk4LDkgKzEzMTgsMjIgQEAgJChhZGRwcmVmaXggJChpbnN0X2luY2x1ZGVkaXIpLywkKGhlYWRlcnMtbm9uaCkpOiAkKGluc3RfaW5jbHVkZWRpcikvJTogXAorIGVuZGlmCSMgaGVhZGVycy1ub25oCisgZW5kaWYJIyBoZWFkZXJzCisgCisraWZkZWYgaW5zdGFsbC1tYXAKKyskKGFkZHByZWZpeCAkKGluc3RfbGliZGlyKS8sJChwYXRzdWJzdCBsaWIlLm1hcCxsaWIlX3BpYy5tYXAsJChpbnN0YWxsLW1hcCkpKTogXAorKyAgJChpbnN0X2xpYmRpcikvbGliJV9waWMubWFwOiAkKGNvbW1vbi1vYmpwZngpbGliJS5tYXAgJCgrZm9yY2UpCisrCSQoZG8taW5zdGFsbCkKKytlbmRpZgorKworK2lmZGVmIGluc3RhbGwtZXh0cmFzCisrJChhZGRwcmVmaXggJChpbnN0X2xpYmRpcikvbGliY19waWMvLCQoaW5zdGFsbC1leHRyYXMpKTogXAorKyAgJChpbnN0X2xpYmRpcikvbGliY19waWMvJS5vOiAkKGVsZi1vYmpwZngpJS5vcyAkKCtmb3JjZSkKKysJJChkby1pbnN0YWxsKQorK2VuZGlmCisrCisgLlBIT05ZOiBpbnN0YWxsLWJpbi1ub3N1YmRpciBpbnN0YWxsLWJpbi1zY3JpcHQtbm9zdWJkaXIgXAorIAlpbnN0YWxsLXJvb3RzYmluLW5vc3ViZGlyIGluc3RhbGwtc2Jpbi1ub3N1YmRpciBpbnN0YWxsLWxpYi1ub3N1YmRpciBcCistCWluc3RhbGwtZGF0YS1ub3N1YmRpciBpbnN0YWxsLWhlYWRlcnMtbm9zdWJkaXIKKysJaW5zdGFsbC1kYXRhLW5vc3ViZGlyIGluc3RhbGwtaGVhZGVycy1ub3N1YmRpciBpbnN0YWxsLW1hcC1ub3N1YmRpciBcCisrCWluc3RhbGwtZXh0cmFzLW5vc3ViZGlyCisgaW5zdGFsbC1iaW4tbm9zdWJkaXI6ICQoYWRkcHJlZml4ICQoaW5zdF9iaW5kaXIpLywkKGluc3RhbGwtYmluKSkKKyBpbnN0YWxsLWJpbi1zY3JpcHQtbm9zdWJkaXI6ICQoYWRkcHJlZml4ICQoaW5zdF9iaW5kaXIpLywkKGluc3RhbGwtYmluLXNjcmlwdCkpCisgaW5zdGFsbC1yb290c2Jpbi1ub3N1YmRpcjogXAorQEAgLTEzMTMsNiArMTM0NiwxMCBAQCBpbnN0YWxsLWRhdGEtbm9zdWJkaXI6ICQoYWRkcHJlZml4ICQoaW5zdF9kYXRhZGlyKS8sJChpbnN0YWxsLWRhdGEpKQorIGluc3RhbGwtaGVhZGVycy1ub3N1YmRpcjogJChhZGRwcmVmaXggJChpbnN0X2luY2x1ZGVkaXIpLywkKGhlYWRlcnMpKQorIGluc3RhbGwtb3RoZXJzLW5vc3ViZGlyOiAkKGluc3RhbGwtb3RoZXJzKQorIGluc3RhbGwtb3RoZXJzLXByb2dyYW1zLW5vc3ViZGlyOiAkKGluc3RhbGwtb3RoZXJzLXByb2dyYW1zKQorK2luc3RhbGwtbWFwLW5vc3ViZGlyOiAkKGFkZHByZWZpeCAkKGluc3RfbGliZGlyKS8sXAorKwkJICAgICAgICQocGF0c3Vic3QgbGliJS5tYXAsbGliJV9waWMubWFwLCQoaW5zdGFsbC1tYXApKSkKKytpbnN0YWxsLWV4dHJhcy1ub3N1YmRpcjogJChhZGRwcmVmaXggJChpbnN0X2xpYmRpcikvbGliY19waWMvLFwKKysJCSAgICAgICAkKGluc3RhbGwtZXh0cmFzKSkKKyAKKyAjIFdlIG5lZWQgYWxsIHRoZSBgLW5vc3ViZGlyJyB0YXJnZXRzIHNvIHRoYXQgYGluc3RhbGwnIGluIHRoZSBwYXJlbnQKKyAjIGRvZXNuJ3QgZGVwZW5kIG9uIHNldmVyYWwgdGhpbmdzIHdoaWNoIGVhY2ggaXRlcmF0ZSBvdmVyIHRoZSBzdWJkaXJzLgorQEAgLTEzMjIsNyArMTM1OSw4IEBAIGluc3RhbGwtJTo6IGluc3RhbGwtJS1ub3N1YmRpciA7CisgCisgLlBIT05ZOiBpbnN0YWxsIGluc3RhbGwtbm8tbGliYy5hLW5vc3ViZGlyCisgaW5zdGFsbC1uby1saWJjLmEtbm9zdWJkaXI6IGluc3RhbGwtaGVhZGVycy1ub3N1YmRpciBpbnN0YWxsLWRhdGEtbm9zdWJkaXIgXAorLQkJCSAgICBpbnN0YWxsLWxpYi1ub3N1YmRpciBpbnN0YWxsLW90aGVycy1ub3N1YmRpcgorKwkJCSAgICBpbnN0YWxsLWxpYi1ub3N1YmRpciBpbnN0YWxsLW90aGVycy1ub3N1YmRpciBcCisrCQkJICAgIGluc3RhbGwtbWFwLW5vc3ViZGlyIGluc3RhbGwtZXh0cmFzLW5vc3ViZGlyCisgaWZlcSAoJChidWlsZC1wcm9ncmFtcykseWVzKQorIGluc3RhbGwtbm8tbGliYy5hLW5vc3ViZGlyOiBpbnN0YWxsLWJpbi1ub3N1YmRpciBpbnN0YWxsLWJpbi1zY3JpcHQtbm9zdWJkaXIgXAorIAkJCSAgICBpbnN0YWxsLXJvb3RzYmluLW5vc3ViZGlyIGluc3RhbGwtc2Jpbi1ub3N1YmRpciBcCistLSAKKzIuMTMuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMi1lZ2xpYmMtRm9yd2FyZC1wb3J0LWNyb3NzLWxvY2FsZS1nZW5lcmF0aW9uLXN1cHBvcnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMi1lZ2xpYmMtRm9yd2FyZC1wb3J0LWNyb3NzLWxvY2FsZS1nZW5lcmF0aW9uLXN1cHBvcnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmE4YTIwYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIyLWVnbGliYy1Gb3J3YXJkLXBvcnQtY3Jvc3MtbG9jYWxlLWdlbmVyYXRpb24tc3VwcG9ydC5wYXRjaApAQCAtMCwwICsxLDU2NiBAQAorRnJvbSBkOTc1MzNkYzIwMWNmZDg2Mzc2NWIxYTY3YTI3ZmRlM2UyNjIyZGE3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDE6MzM6NDkgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAyMi8yNV0gZWdsaWJjOiBGb3J3YXJkIHBvcnQgY3Jvc3MgbG9jYWxlIGdlbmVyYXRpb24gc3VwcG9ydAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGxvY2FsZS9NYWtlZmlsZSAgICAgICAgICAgICAgIHwgIDMgKystCisgbG9jYWxlL2NhdG5hbWVzLmMgICAgICAgICAgICAgfCA0OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIGxvY2FsZS9sb2NhbGVpbmZvLmggICAgICAgICAgIHwgIDIgKy0KKyBsb2NhbGUvcHJvZ3JhbXMvY2hhcm1hcC1kaXIuYyB8ICA2ICsrKysrCisgbG9jYWxlL3Byb2dyYW1zL2xkLWNvbGxhdGUuYyAgfCAxNyArKysrKystLS0tLS0tCisgbG9jYWxlL3Byb2dyYW1zL2xkLWN0eXBlLmMgICAgfCAyNyArKysrKysrKysrLS0tLS0tLS0tLQorIGxvY2FsZS9wcm9ncmFtcy9sZC10aW1lLmMgICAgIHwgMzEgKysrKysrKysrKysrKysrLS0tLS0tLS0KKyBsb2NhbGUvcHJvZ3JhbXMvbGluZXJlYWRlci5jICB8ICAyICstCisgbG9jYWxlL3Byb2dyYW1zL2xvY2FsZWRlZi5jICAgfCAgOCArKysrKysKKyBsb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5jICAgICB8ICA1ICsrKy0KKyBsb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5oICAgICB8IDU5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KKyBsb2NhbGUvc2V0bG9jYWxlLmMgICAgICAgICAgICB8IDMwIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxMiBmaWxlcyBjaGFuZ2VkLCAxNjkgaW5zZXJ0aW9ucygrKSwgNjkgZGVsZXRpb25zKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGxvY2FsZS9jYXRuYW1lcy5jCisKK2RpZmYgLS1naXQgYS9sb2NhbGUvTWFrZWZpbGUgYi9sb2NhbGUvTWFrZWZpbGUKK2luZGV4IDk4ZWU3NjI3MmQuLmJjM2FmYjIyNDggMTAwNjQ0CistLS0gYS9sb2NhbGUvTWFrZWZpbGUKKysrKyBiL2xvY2FsZS9NYWtlZmlsZQorQEAgLTI2LDcgKzI2LDggQEAgaGVhZGVycwkJPSBsYW5naW5mby5oIGxvY2FsZS5oIGJpdHMvbG9jYWxlLmggXAorIAkJICBiaXRzL3R5cGVzL2xvY2FsZV90LmggYml0cy90eXBlcy9fX2xvY2FsZV90LmgKKyByb3V0aW5lcwk9IHNldGxvY2FsZSBmaW5kbG9jYWxlIGxvYWRsb2NhbGUgbG9hZGFyY2hpdmUgXAorIAkJICBsb2NhbGVjb252IG5sX2xhbmdpbmZvIG5sX2xhbmdpbmZvX2wgbWJfY3VyX21heCBcCistCQkgIG5ld2xvY2FsZSBkdXBsb2NhbGUgZnJlZWxvY2FsZSB1c2Vsb2NhbGUKKysJCSAgbmV3bG9jYWxlIGR1cGxvY2FsZSBmcmVlbG9jYWxlIHVzZWxvY2FsZSBcCisrCQkgIGNhdG5hbWVzCisgdGVzdHMJCT0gdHN0LUMtbG9jYWxlIHRzdC1sb2NuYW1lIHRzdC1kdXBsb2NhbGUKKyBjYXRlZ29yaWVzCT0gY3R5cGUgbWVzc2FnZXMgbW9uZXRhcnkgbnVtZXJpYyB0aW1lIHBhcGVyIG5hbWUgXAorIAkJICBhZGRyZXNzIHRlbGVwaG9uZSBtZWFzdXJlbWVudCBpZGVudGlmaWNhdGlvbiBjb2xsYXRlCitkaWZmIC0tZ2l0IGEvbG9jYWxlL2NhdG5hbWVzLmMgYi9sb2NhbGUvY2F0bmFtZXMuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjlmYWQzNTdkYjEKKy0tLSAvZGV2L251bGwKKysrKyBiL2xvY2FsZS9jYXRuYW1lcy5jCitAQCAtMCwwICsxLDQ4IEBACisrLyogQ29weXJpZ2h0IChDKSAyMDA2ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKysgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisrICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisrICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCisrICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKKysgICAwMjExMS0xMzA3IFVTQS4gICovCisrCisrI2luY2x1ZGUgImxvY2FsZWluZm8uaCIKKysKKysvKiBEZWZpbmUgYW4gYXJyYXkgb2YgY2F0ZWdvcnkgbmFtZXMgKGFsc28gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWVzKS4gICovCisrY29uc3QgdW5pb24gY2F0bmFtZXN0cl90IF9ubF9jYXRlZ29yeV9uYW1lcyBhdHRyaWJ1dGVfaGlkZGVuID0KKysgIHsKKysgICAgeworKyNkZWZpbmUgREVGSU5FX0NBVEVHT1JZKGNhdGVnb3J5LCBjYXRlZ29yeV9uYW1lLCBpdGVtcywgYSkgXAorKyAgICAgIGNhdGVnb3J5X25hbWUsCisrI2luY2x1ZGUgImNhdGVnb3JpZXMuZGVmIgorKyN1bmRlZiBERUZJTkVfQ0FURUdPUlkKKysgICAgfQorKyAgfTsKKysKKytjb25zdCB1aW50OF90IF9ubF9jYXRlZ29yeV9uYW1lX2lkeHNbX19MQ19MQVNUXSBhdHRyaWJ1dGVfaGlkZGVuID0KKysgIHsKKysjZGVmaW5lIERFRklORV9DQVRFR09SWShjYXRlZ29yeSwgY2F0ZWdvcnlfbmFtZSwgaXRlbXMsIGEpIFwKKysgICAgW2NhdGVnb3J5XSA9IG9mZnNldG9mICh1bmlvbiBjYXRuYW1lc3RyX3QsIENBVE5BTUVNRiAoX19MSU5FX18pKSwKKysjaW5jbHVkZSAiY2F0ZWdvcmllcy5kZWYiCisrI3VuZGVmIERFRklORV9DQVRFR09SWQorKyAgfTsKKysKKysvKiBBbiBhcnJheSBvZiB0aGVpciBsZW5ndGhzLCBmb3IgY29udmVuaWVuY2UuICAqLworK2NvbnN0IHVpbnQ4X3QgX25sX2NhdGVnb3J5X25hbWVfc2l6ZXNbXSBhdHRyaWJ1dGVfaGlkZGVuID0KKysgIHsKKysjZGVmaW5lIERFRklORV9DQVRFR09SWShjYXRlZ29yeSwgY2F0ZWdvcnlfbmFtZSwgaXRlbXMsIGEpIFwKKysgICAgW2NhdGVnb3J5XSA9IHNpemVvZiAoY2F0ZWdvcnlfbmFtZSkgLSAxLAorKyNpbmNsdWRlICJjYXRlZ29yaWVzLmRlZiIKKysjdW5kZWYJREVGSU5FX0NBVEVHT1JZCisrICAgIFtMQ19BTExdID0gc2l6ZW9mICgiTENfQUxMIikgLSAxCisrICB9OworZGlmZiAtLWdpdCBhL2xvY2FsZS9sb2NhbGVpbmZvLmggYi9sb2NhbGUvbG9jYWxlaW5mby5oCitpbmRleCA0ZTFjOGM1NjhhLi5mN2VkOTQ2ZjFjIDEwMDY0NAorLS0tIGEvbG9jYWxlL2xvY2FsZWluZm8uaAorKysrIGIvbG9jYWxlL2xvY2FsZWluZm8uaAorQEAgLTIyNCw3ICsyMjQsNyBAQCBfX2xpYmNfdHNkX2RlZmluZSAoZXh0ZXJuLCBsb2NhbGVfdCwgTE9DQUxFKQorICAgIHVudXNlZC4gIFdlIGNhbiBtYW5hZ2UgdGhpcyBwbGF5aW5nIHNvbWUgdHJpY2tzIHdpdGggd2VhayByZWZlcmVuY2VzLgorICAgIEJ1dCB3aXRoIHRocmVhZC1sb2NhbCBsb2NhbGUgc2V0dGluZ3MsIGl0IGJlY29tZXMgcXVpdGUgdW5nYWlubHkgdW5sZXNzCisgICAgd2UgY2FuIHVzZSBfX3RocmVhZCB2YXJpYWJsZXMuICBTbyBvbmx5IGluIHRoYXQgY2FzZSBkbyB3ZSBhdHRlbXB0IHRoaXMuICAqLworLSNpZm5kZWYgU0hBUkVECisrI2lmICFkZWZpbmVkIFNIQVJFRCAmJiAhZGVmaW5lZCBJTl9HTElCQ19MT0NBTEVERUYKKyAjIGluY2x1ZGUgPHRscy5oPgorICMgZGVmaW5lIE5MX0NVUlJFTlRfSU5ESVJFQ1QJMQorICNlbmRpZgorZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9jaGFybWFwLWRpci5jIGIvbG9jYWxlL3Byb2dyYW1zL2NoYXJtYXAtZGlyLmMKK2luZGV4IGU1NWFiODZlMjguLjBmODdlNmRkMjggMTAwNjQ0CistLS0gYS9sb2NhbGUvcHJvZ3JhbXMvY2hhcm1hcC1kaXIuYworKysrIGIvbG9jYWxlL3Byb2dyYW1zL2NoYXJtYXAtZGlyLmMKK0BAIC0xOSw3ICsxOSw5IEBACisgI2luY2x1ZGUgPGVycm9yLmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPGxpYmludGwuaD4KKysjaWZuZGVmIE5PX1VOQ09NUFJFU1MKKyAjaW5jbHVkZSA8c3Bhd24uaD4KKysjZW5kaWYKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorQEAgLTE1Niw2ICsxNTgsNyBAQCBjaGFybWFwX2Nsb3NlZGlyIChDSEFSTUFQX0RJUiAqY2RpcikKKyAgIHJldHVybiBjbG9zZWRpciAoZGlyKTsKKyB9CisgCisrI2lmbmRlZiBOT19VTkNPTVBSRVNTCisgLyogQ3JlYXRlcyBhIHN1YnByb2Nlc3MgZGVjb21wcmVzc2luZyB0aGUgZ2l2ZW4gcGF0aG5hbWUsIGFuZCByZXR1cm5zCisgICAgYSBzdHJlYW0gcmVhZGluZyBpdHMgb3V0cHV0ICh0aGUgZGVjb21wcmVzc2VkIGRhdGEpLiAgKi8KKyBzdGF0aWMKK0BAIC0yMDQsNiArMjA3LDcgQEAgZm9wZW5fdW5jb21wcmVzc2VkIChjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3QgY2hhciAqY29tcHJlc3NvcikKKyAgICAgfQorICAgcmV0dXJuIE5VTEw7CisgfQorKyNlbmRpZgorIAorIC8qIE9wZW5zIGEgY2hhcm1hcCBmb3IgcmVhZGluZywgZ2l2ZW4gaXRzIG5hbWUgKG5vdCBhbiBhbGlhcyBuYW1lKS4gICovCisgRklMRSAqCitAQCAtMjI2LDYgKzIzMCw3IEBAIGNoYXJtYXBfb3BlbiAoY29uc3QgY2hhciAqZGlyZWN0b3J5LCBjb25zdCBjaGFyICpuYW1lKQorICAgaWYgKHN0cmVhbSAhPSBOVUxMKQorICAgICByZXR1cm4gc3RyZWFtOworIAorKyNpZm5kZWYgTk9fVU5DT01QUkVTUworICAgbWVtY3B5IChwLCAiLmd6IiwgNCk7CisgICBzdHJlYW0gPSBmb3Blbl91bmNvbXByZXNzZWQgKHBhdGhuYW1lLCAiZ3ppcCIpOworICAgaWYgKHN0cmVhbSAhPSBOVUxMKQorQEAgLTIzNSw2ICsyNDAsNyBAQCBjaGFybWFwX29wZW4gKGNvbnN0IGNoYXIgKmRpcmVjdG9yeSwgY29uc3QgY2hhciAqbmFtZSkKKyAgIHN0cmVhbSA9IGZvcGVuX3VuY29tcHJlc3NlZCAocGF0aG5hbWUsICJiemlwMiIpOworICAgaWYgKHN0cmVhbSAhPSBOVUxMKQorICAgICByZXR1cm4gc3RyZWFtOworKyNlbmRpZgorIAorICAgcmV0dXJuIE5VTEw7CisgfQorZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sZC1jb2xsYXRlLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbGQtY29sbGF0ZS5jCitpbmRleCBjZWM4NDhjYjdjLi5mY2Q3NjhlYjdkIDEwMDY0NAorLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xkLWNvbGxhdGUuYworKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xkLWNvbGxhdGUuYworQEAgLTM1MCw3ICszNTAsNyBAQCBuZXdfZWxlbWVudCAoc3RydWN0IGxvY2FsZV9jb2xsYXRlX3QgKmNvbGxhdGUsIGNvbnN0IGNoYXIgKm1icywgc2l6ZV90IG1ic2xlbiwKKyAgICAgfQorICAgaWYgKHdjcyAhPSBOVUxMKQorICAgICB7CistICAgICAgc2l6ZV90IG53Y3MgPSB3Y3NsZW4gKCh3Y2hhcl90ICopIHdjcyk7CisrICAgICAgc2l6ZV90IG53Y3MgPSB3Y3NsZW5fdWludDMyICh3Y3MpOworICAgICAgIHVpbnQzMl90IHplcm8gPSAwOworICAgICAgIC8qIEhhbmRsZSA8VTAwMDA+IGFzIGEgc2luZ2xlIGNoYXJhY3Rlci4gICovCisgICAgICAgaWYgKG53Y3MgPT0gMCkKK0BAIC0xNzc2LDggKzE3NzYsNyBAQCBzeW1ib2wgYCVzJyBoYXMgdGhlIHNhbWUgZW5jb2RpbmcgYXMiKSwgKCplcHRyKS0+bmFtZSk7CisgCisgCSAgICAgIGlmICgoKmVwdHIpLT5ud2NzID09IHJ1bnAtPm53Y3MpCisgCQl7CistCQkgIGludCBjID0gd21lbWNtcCAoKHdjaGFyX3QgKikgKCplcHRyKS0+d2NzLAorLQkJCQkgICAod2NoYXJfdCAqKSBydW5wLT53Y3MsIHJ1bnAtPm53Y3MpOworKwkJICBpbnQgYyA9IHdtZW1jbXBfdWludDMyICgoKmVwdHIpLT53Y3MsIHJ1bnAtPndjcywgcnVucC0+bndjcyk7CisgCisgCQkgIGlmIChjID09IDApCisgCQkgICAgeworQEAgLTIwMTAsOSArMjAwOSw5IEBAIGFkZF90b190YWJsZXdjICh1aW50MzJfdCBjaCwgc3RydWN0IGVsZW1lbnRfdCAqcnVucCkKKyAJICAgICBvbmUgY29uc2VjdXRpdmUgZW50cnkuICAqLworIAkgIGlmIChydW5wLT53Y25leHQgIT0gTlVMTAorIAkgICAgICAmJiBydW5wLT5ud2NzID09IHJ1bnAtPndjbmV4dC0+bndjcworLQkgICAgICAmJiB3bWVtY21wICgod2NoYXJfdCAqKSBydW5wLT53Y3MsCistCQkJICAod2NoYXJfdCAqKXJ1bnAtPndjbmV4dC0+d2NzLAorLQkJCSAgcnVucC0+bndjcyAtIDEpID09IDAKKysJICAgICAgJiYgd21lbWNtcF91aW50MzIgKHJ1bnAtPndjcywKKysJCQkJIHJ1bnAtPndjbmV4dC0+d2NzLAorKwkJCQkgcnVucC0+bndjcyAtIDEpID09IDAKKyAJICAgICAgJiYgKHJ1bnAtPndjc1tydW5wLT5ud2NzIC0gMV0KKyAJCSAgPT0gcnVucC0+d2NuZXh0LT53Y3NbcnVucC0+bndjcyAtIDFdICsgMSkpCisgCSAgICB7CitAQCAtMjAzNiw5ICsyMDM1LDkgQEAgYWRkX3RvX3RhYmxld2MgKHVpbnQzMl90IGNoLCBzdHJ1Y3QgZWxlbWVudF90ICpydW5wKQorIAkJcnVucCA9IHJ1bnAtPndjbmV4dDsKKyAJICAgICAgd2hpbGUgKHJ1bnAtPndjbmV4dCAhPSBOVUxMCisgCQkgICAgICYmIHJ1bnAtPm53Y3MgPT0gcnVucC0+d2NuZXh0LT5ud2NzCistCQkgICAgICYmIHdtZW1jbXAgKCh3Y2hhcl90ICopIHJ1bnAtPndjcywKKy0JCQkJICh3Y2hhcl90ICopcnVucC0+d2NuZXh0LT53Y3MsCistCQkJCSBydW5wLT5ud2NzIC0gMSkgPT0gMAorKwkJICAgICAmJiB3bWVtY21wX3VpbnQzMiAocnVucC0+d2NzLAorKwkJCQkJcnVucC0+d2NuZXh0LT53Y3MsCisrCQkJCQlydW5wLT5ud2NzIC0gMSkgPT0gMAorIAkJICAgICAmJiAocnVucC0+d2NzW3J1bnAtPm53Y3MgLSAxXQorIAkJCSA9PSBydW5wLT53Y25leHQtPndjc1tydW5wLT5ud2NzIC0gMV0gKyAxKSk7CisgCitkaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2xkLWN0eXBlLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbGQtY3R5cGUuYworaW5kZXggZGYyNjZjMjBkNi4uMDVjMDE1MmVjOSAxMDA2NDQKKy0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sZC1jdHlwZS5jCisrKysgYi9sb2NhbGUvcHJvZ3JhbXMvbGQtY3R5cGUuYworQEAgLTkyNiw3ICs5MjYsNyBAQCBjdHlwZV9vdXRwdXQgKHN0cnVjdCBsb2NhbGVkZWZfdCAqbG9jYWxlLCBjb25zdCBzdHJ1Y3QgY2hhcm1hcF90ICpjaGFybWFwLAorICAgYWxsb2NhdGVfYXJyYXlzIChjdHlwZSwgY2hhcm1hcCwgY3R5cGUtPnJlcGVydG9pcmUpOworIAorICAgZGVmYXVsdF9taXNzaW5nX2xlbiA9IChjdHlwZS0+ZGVmYXVsdF9taXNzaW5nCistCQkJID8gd2NzbGVuICgod2NoYXJfdCAqKSBjdHlwZS0+ZGVmYXVsdF9taXNzaW5nKQorKwkJCSA/IHdjc2xlbl91aW50MzIgKGN0eXBlLT5kZWZhdWx0X21pc3NpbmcpCisgCQkJIDogMCk7CisgCisgICBpbml0X2xvY2FsZV9kYXRhICgmZmlsZSwgbmVsZW1zKTsKK0BAIC0xOTM3LDcgKzE5MzcsNyBAQCByZWFkX3RyYW5zbGl0X2VudHJ5IChzdHJ1Y3QgbGluZXJlYWRlciAqbGRmaWxlLCBzdHJ1Y3QgbG9jYWxlX2N0eXBlX3QgKmN0eXBlLAorIAkgICAgaWdub3JlID0gMTsKKyAJICBlbHNlCisgCSAgICAvKiBUaGlzIHZhbHVlIGlzIHVzYWJsZS4gICovCistCSAgICBvYnN0YWNrX2dyb3cgKG9iLCB0b193c3RyLCB3Y3NsZW4gKCh3Y2hhcl90ICopIHRvX3dzdHIpICogNCk7CisrCSAgICBvYnN0YWNrX2dyb3cgKG9iLCB0b193c3RyLCB3Y3NsZW5fdWludDMyICh0b193c3RyKSAqIDQpOworIAorIAkgIGZpcnN0ID0gMDsKKyAJfQorQEAgLTI0NzEsOCArMjQ3MSw4IEBAIHdpdGggY2hhcmFjdGVyIGNvZGUgcmFuZ2UgdmFsdWVzIG9uZSBtdXN0IHVzZSB0aGUgYWJzb2x1dGUgZWxsaXBzaXMgYC4uLiciKSk7CisgCSAgICB9CisgCisgCWhhbmRsZV90b2tfZGlnaXQ6CistCSAgY2xhc3NfYml0ID0gX0lTd2RpZ2l0OworLQkgIGNsYXNzMjU2X2JpdCA9IF9JU2RpZ2l0OworKwkgIGNsYXNzX2JpdCA9IEJJVHcgKHRva19kaWdpdCk7CisrCSAgY2xhc3MyNTZfYml0ID0gQklUICh0b2tfZGlnaXQpOworIAkgIGhhbmRsZV9kaWdpdHMgPSAxOworIAkgIGdvdG8gcmVhZF9jaGFyY2xhc3M7CisgCitAQCAtMzkyOSw4ICszOTI5LDcgQEAgYWxsb2NhdGVfYXJyYXlzIChzdHJ1Y3QgbG9jYWxlX2N0eXBlX3QgKmN0eXBlLCBjb25zdCBzdHJ1Y3QgY2hhcm1hcF90ICpjaGFybWFwLAorIAorIAkgIHdoaWxlIChpZHggPCBudW1iZXIpCisgCSAgICB7CistCSAgICAgIGludCByZXMgPSB3Y3NjbXAgKChjb25zdCB3Y2hhcl90ICopIHNvcnRlZFtpZHhdLT5mcm9tLAorLQkJCQkoY29uc3Qgd2NoYXJfdCAqKSBydW5wLT5mcm9tKTsKKysJICAgICAgaW50IHJlcyA9IHdjc2NtcF91aW50MzIgKHNvcnRlZFtpZHhdLT5mcm9tLCBydW5wLT5mcm9tKTsKKyAJICAgICAgaWYgKHJlcyA9PSAwKQorIAkJeworIAkJICByZXBsYWNlID0gMTsKK0BAIC0zOTY3LDExICszOTY2LDExIEBAIGFsbG9jYXRlX2FycmF5cyAoc3RydWN0IGxvY2FsZV9jdHlwZV90ICpjdHlwZSwgY29uc3Qgc3RydWN0IGNoYXJtYXBfdCAqY2hhcm1hcCwKKyAgICAgICBmb3IgKHNpemVfdCBjbnQgPSAwOyBjbnQgPCBudW1iZXI7ICsrY250KQorIAl7CisgCSAgc3RydWN0IHRyYW5zbGl0X3RvX3QgKnNydW5wOworLQkgIGZyb21fbGVuICs9IHdjc2xlbiAoKGNvbnN0IHdjaGFyX3QgKikgc29ydGVkW2NudF0tPmZyb20pICsgMTsKKysJICBmcm9tX2xlbiArPSB3Y3NsZW5fdWludDMyIChzb3J0ZWRbY250XS0+ZnJvbSkgKyAxOworIAkgIHNydW5wID0gc29ydGVkW2NudF0tPnRvOworIAkgIHdoaWxlIChzcnVucCAhPSBOVUxMKQorIAkgICAgeworLQkgICAgICB0b19sZW4gKz0gd2NzbGVuICgoY29uc3Qgd2NoYXJfdCAqKSBzcnVucC0+c3RyKSArIDE7CisrCSAgICAgIHRvX2xlbiArPSB3Y3NsZW5fdWludDMyIChzcnVucC0+c3RyKSArIDE7CisgCSAgICAgIHNydW5wID0gc3J1bnAtPm5leHQ7CisgCSAgICB9CisgCSAgLyogUGx1cyBvbmUgZm9yIHRoZSBleHRyYSBOVUwgY2hhcmFjdGVyIG1hcmtpbmcgdGhlIGVuZCBvZgorQEAgLTM5OTUsMTggKzM5OTQsMTggQEAgYWxsb2NhdGVfYXJyYXlzIChzdHJ1Y3QgbG9jYWxlX2N0eXBlX3QgKmN0eXBlLCBjb25zdCBzdHJ1Y3QgY2hhcm1hcF90ICpjaGFybWFwLAorIAkgIGN0eXBlLT50cmFuc2xpdF9mcm9tX2lkeFtjbnRdID0gZnJvbV9sZW47CisgCSAgY3R5cGUtPnRyYW5zbGl0X3RvX2lkeFtjbnRdID0gdG9fbGVuOworIAorLQkgIGxlbiA9IHdjc2xlbiAoKGNvbnN0IHdjaGFyX3QgKikgc29ydGVkW2NudF0tPmZyb20pICsgMTsKKy0JICB3bWVtY3B5ICgod2NoYXJfdCAqKSAmY3R5cGUtPnRyYW5zbGl0X2Zyb21fdGJsW2Zyb21fbGVuXSwKKy0JCSAgIChjb25zdCB3Y2hhcl90ICopIHNvcnRlZFtjbnRdLT5mcm9tLCBsZW4pOworKwkgIGxlbiA9IHdjc2xlbl91aW50MzIgKHNvcnRlZFtjbnRdLT5mcm9tKSArIDE7CisrCSAgd21lbWNweV91aW50MzIgKCZjdHlwZS0+dHJhbnNsaXRfZnJvbV90YmxbZnJvbV9sZW5dLAorKwkJCSAgc29ydGVkW2NudF0tPmZyb20sIGxlbik7CisgCSAgZnJvbV9sZW4gKz0gbGVuOworIAorIAkgIGN0eXBlLT50cmFuc2xpdF90b19pZHhbY250XSA9IHRvX2xlbjsKKyAJICBzcnVucCA9IHNvcnRlZFtjbnRdLT50bzsKKyAJICB3aGlsZSAoc3J1bnAgIT0gTlVMTCkKKyAJICAgIHsKKy0JICAgICAgbGVuID0gd2NzbGVuICgoY29uc3Qgd2NoYXJfdCAqKSBzcnVucC0+c3RyKSArIDE7CistCSAgICAgIHdtZW1jcHkgKCh3Y2hhcl90ICopICZjdHlwZS0+dHJhbnNsaXRfdG9fdGJsW3RvX2xlbl0sCistCQkgICAgICAgKGNvbnN0IHdjaGFyX3QgKikgc3J1bnAtPnN0ciwgbGVuKTsKKysJICAgICAgbGVuID0gd2NzbGVuX3VpbnQzMiAoc3J1bnAtPnN0cikgKyAxOworKwkgICAgICB3bWVtY3B5X3VpbnQzMiAoJmN0eXBlLT50cmFuc2xpdF90b190YmxbdG9fbGVuXSwKKysJCQkgICAgICBzcnVucC0+c3RyLCBsZW4pOworIAkgICAgICB0b19sZW4gKz0gbGVuOworIAkgICAgICBzcnVucCA9IHNydW5wLT5uZXh0OworIAkgICAgfQorZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sZC10aW1lLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbGQtdGltZS5jCitpbmRleCAzMmU5YzQxZTM1Li42YTYxZmNlZGViIDEwMDY0NAorLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xkLXRpbWUuYworKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xkLXRpbWUuYworQEAgLTIxNSw4ICsyMTUsMTAgQEAgTm8gZGVmaW5pdGlvbiBmb3IgJXMgY2F0ZWdvcnkgZm91bmQiKSwgIkxDX1RJTUUiKSk7CisgCX0KKyAgICAgICBlbHNlCisgCXsKKysJICBzdGF0aWMgY29uc3QgdWludDMyX3Qgd3RfZm10X2FtcG1bXQorKwkgICAgPSB7ICclJywnSScsJzonLCclJywnTScsJzonLCclJywnUycsJyAnLCclJywncCcsMCB9OworIAkgIHRpbWUtPnRfZm10X2FtcG0gPSAiJUk6JU06JVMgJXAiOworLQkgIHRpbWUtPnd0X2ZtdF9hbXBtID0gKGNvbnN0IHVpbnQzMl90ICopIEwiJUk6JU06JVMgJXAiOworKwkgIHRpbWUtPnd0X2ZtdF9hbXBtID0gd3RfZm10X2FtcG07CisgCX0KKyAgICAgfQorIAorQEAgLTIyNiw3ICsyMjgsNyBAQCBObyBkZWZpbml0aW9uIGZvciAlcyBjYXRlZ29yeSBmb3VuZCIpLCAiTENfVElNRSIpKTsKKyAgICAgICBjb25zdCBpbnQgZGF5c19wZXJfbW9udGhbMTJdID0geyAzMSwgMjksIDMxLCAzMCwgMzEsIDMwLAorIAkJCQkgICAgICAgMzEsIDMxLCAzMCwgMzEgLDMwLCAzMSB9OworICAgICAgIHNpemVfdCBpZHg7CistICAgICAgd2NoYXJfdCAqd3N0cjsKKysgICAgICB1aW50MzJfdCAqd3N0cjsKKyAKKyAgICAgICB0aW1lLT5lcmFfZW50cmllcyA9CisgCShzdHJ1Y3QgZXJhX2RhdGEgKikgeG1hbGxvYyAodGltZS0+bnVtX2VyYQorQEAgLTQ2NCwxOCArNDY2LDE4IEBAIE5vIGRlZmluaXRpb24gZm9yICVzIGNhdGVnb3J5IGZvdW5kIiksICJMQ19USU1FIikpOworIAkgICAgfQorIAorIAkgIC8qIE5vdyBnZW5lcmF0ZSB0aGUgd2lkZSBjaGFyYWN0ZXIgbmFtZSBhbmQgZm9ybWF0LiAgKi8KKy0JICB3c3RyID0gd2NzY2hyICgod2NoYXJfdCAqKSB0aW1lLT53ZXJhW2lkeF0sIEwnOicpOy8qIGVuZCBkaXJlY3Rpb24gKi8KKy0JICB3c3RyID0gd3N0ciA/IHdjc2NociAod3N0ciArIDEsIEwnOicpIDogTlVMTDsJLyogZW5kIG9mZnNldCAqLworLQkgIHdzdHIgPSB3c3RyID8gd2NzY2hyICh3c3RyICsgMSwgTCc6JykgOiBOVUxMOwkvKiBlbmQgc3RhcnQgKi8KKy0JICB3c3RyID0gd3N0ciA/IHdjc2NociAod3N0ciArIDEsIEwnOicpIDogTlVMTDsJLyogZW5kIGVuZCAqLworKwkgIHdzdHIgPSB3Y3NjaHJfdWludDMyICh0aW1lLT53ZXJhW2lkeF0sIEwnOicpOyAvKiBlbmQgZGlyZWN0aW9uICovCisrCSAgd3N0ciA9IHdzdHIgPyB3Y3NjaHJfdWludDMyICh3c3RyICsgMSwgTCc6JykgOiBOVUxMOyAvKiBlbmQgb2Zmc2V0ICovCisrCSAgd3N0ciA9IHdzdHIgPyB3Y3NjaHJfdWludDMyICh3c3RyICsgMSwgTCc6JykgOiBOVUxMOyAvKiBlbmQgc3RhcnQgKi8KKysJICB3c3RyID0gd3N0ciA/IHdjc2Nocl91aW50MzIgKHdzdHIgKyAxLCBMJzonKSA6IE5VTEw7IC8qIGVuZCBlbmQgKi8KKyAJICBpZiAod3N0ciAhPSBOVUxMKQorIAkgICAgeworLQkgICAgICB0aW1lLT5lcmFfZW50cmllc1tpZHhdLnduYW1lID0gKHVpbnQzMl90ICopIHdzdHIgKyAxOworLQkgICAgICB3c3RyID0gd2NzY2hyICh3c3RyICsgMSwgTCc6Jyk7CS8qIGVuZCBuYW1lICovCisrCSAgICAgIHRpbWUtPmVyYV9lbnRyaWVzW2lkeF0ud25hbWUgPSB3c3RyICsgMTsKKysJICAgICAgd3N0ciA9IHdjc2Nocl91aW50MzIgKHdzdHIgKyAxLCBMJzonKTsgLyogZW5kIG5hbWUgKi8KKyAJICAgICAgaWYgKHdzdHIgIT0gTlVMTCkKKyAJCXsKKyAJCSAgKndzdHIgPSBMJ1wwJzsKKy0JCSAgdGltZS0+ZXJhX2VudHJpZXNbaWR4XS53Zm9ybWF0ID0gKHVpbnQzMl90ICopIHdzdHIgKyAxOworKwkJICB0aW1lLT5lcmFfZW50cmllc1tpZHhdLndmb3JtYXQgPSB3c3RyICsgMTsKKyAJCX0KKyAJICAgICAgZWxzZQorIAkJdGltZS0+ZXJhX2VudHJpZXNbaWR4XS53bmFtZSA9CitAQCAtNTM0LDcgKzUzNiwxNiBAQCBObyBkZWZpbml0aW9uIGZvciAlcyBjYXRlZ29yeSBmb3VuZCIpLCAiTENfVElNRSIpKTsKKyAgIGlmICh0aW1lLT5kYXRlX2ZtdCA9PSBOVUxMKQorICAgICB0aW1lLT5kYXRlX2ZtdCA9ICIlYSAlYiAlZSAlSDolTTolUyAlWiAlWSI7CisgICBpZiAodGltZS0+d2RhdGVfZm10ID09IE5VTEwpCistICAgIHRpbWUtPndkYXRlX2ZtdCA9IChjb25zdCB1aW50MzJfdCAqKSBMIiVhICViICVlICVIOiVNOiVTICVaICVZIjsKKysgICAgeworKyAgICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCB3ZGF0ZV9mbXRbXSA9CisrCXsgJyUnLCdhJywnICcsCisrCSAgJyUnLCdiJywnICcsCisrCSAgJyUnLCdlJywnICcsCisrCSAgJyUnLCdIJywnOicsJyUnLCdNJywnOicsJyUnLCdTJywnICcsCisrCSAgJyUnLCdaJywnICcsCisrCSAgJyUnLCdZJywwIH07CisrICAgICAgdGltZS0+d2RhdGVfZm10ID0gd2RhdGVfZm10OworKyAgICB9CisgfQorIAorIAorZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9saW5lcmVhZGVyLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbGluZXJlYWRlci5jCitpbmRleCA1MmIzNDA5NjNhLi4xYThiY2UxN2I0IDEwMDY0NAorLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xpbmVyZWFkZXIuYworKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xpbmVyZWFkZXIuYworQEAgLTU5NSw3ICs1OTUsNyBAQCBnZXRfc3RyaW5nIChzdHJ1Y3QgbGluZXJlYWRlciAqbHIsIGNvbnN0IHN0cnVjdCBjaGFybWFwX3QgKmNoYXJtYXAsCisgeworICAgaW50IHJldHVybl93aWRlc3RyID0gbHItPnJldHVybl93aWRlc3RyOworICAgY2hhciAqYnVmOworLSAgd2NoYXJfdCAqYnVmMiA9IE5VTEw7CisrICB1aW50MzJfdCAqYnVmMiA9IE5VTEw7CisgICBzaXplX3QgYnVmYWN0OworICAgc2l6ZV90IGJ1Zm1heCA9IDU2OworIAorZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sb2NhbGVkZWYuYyBiL2xvY2FsZS9wcm9ncmFtcy9sb2NhbGVkZWYuYworaW5kZXggNmFjYzEzNDJjNy4uZGY4Nzc0MGY4YiAxMDA2NDQKKy0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sb2NhbGVkZWYuYworKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xvY2FsZWRlZi5jCitAQCAtMTA4LDYgKzEwOCw3IEBAIHZvaWQgKCphcmdwX3Byb2dyYW1fdmVyc2lvbl9ob29rKSAoRklMRSAqLCBzdHJ1Y3QgYXJncF9zdGF0ZSAqKSA9IHByaW50X3ZlcnNpb247CisgI2RlZmluZSBPUFRfTElTVF9BUkNISVZFIDMwOQorICNkZWZpbmUgT1BUX0xJVFRMRV9FTkRJQU4gNDAwCisgI2RlZmluZSBPUFRfQklHX0VORElBTiA0MDEKKysjZGVmaW5lIE9QVF9VSU5UMzJfQUxJR04gNDAyCisgCisgLyogRGVmaW5pdGlvbnMgb2YgYXJndW1lbnRzIGZvciBhcmdwIGZ1bmN0aW9ucy4gICovCisgc3RhdGljIGNvbnN0IHN0cnVjdCBhcmdwX29wdGlvbiBvcHRpb25zW10gPQorQEAgLTE0Myw2ICsxNDQsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGFyZ3Bfb3B0aW9uIG9wdGlvbnNbXSA9CisgICAgIE5fKCJHZW5lcmF0ZSBsaXR0bGUtZW5kaWFuIG91dHB1dCIpIH0sCisgICB7ICJiaWctZW5kaWFuIiwgT1BUX0JJR19FTkRJQU4sIE5VTEwsIDAsCisgICAgIE5fKCJHZW5lcmF0ZSBiaWctZW5kaWFuIG91dHB1dCIpIH0sCisrICB7ICJ1aW50MzItYWxpZ24iLCBPUFRfVUlOVDMyX0FMSUdOLCAiQUxJR05NRU5UIiwgMCwKKysgICAgTl8oIlNldCB0aGUgdGFyZ2V0J3MgdWludDMyX3QgYWxpZ25tZW50IGluIGJ5dGVzIChkZWZhdWx0IDQpIikgfSwKKyAgIHsgTlVMTCwgMCwgTlVMTCwgMCwgTlVMTCB9CisgfTsKKyAKK0BAIC0yMzIsMTIgKzIzNSwxNCBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQorICAgICAgY3R5cGUgbG9jYWxlLiAgKFAxMDAzLjIgNC4zNS41LjIpICAqLworICAgc2V0bG9jYWxlIChMQ19DVFlQRSwgIlBPU0lYIik7CisgCisrI2lmbmRlZiBOT19TWVNDT05GCisgICAvKiBMb29rIHdoZXRoZXIgdGhlIHN5c3RlbSByZWFsbHkgYWxsb3dzIGxvY2FsZSBkZWZpbml0aW9ucy4gIFBPU0lYCisgICAgICBkZWZpbmVzIGVycm9yIGNvZGUgMyBmb3IgdGhpcyBzaXR1YXRpb24gc28gSSB0aGluayBpdCBtdXN0IGJlCisgICAgICBhIGZhdGFsIGVycm9yIChzZWUgUDEwMDMuMiA0LjM1LjgpLiAgKi8KKyAgIGlmIChzeXNjb25mIChfU0NfMl9MT0NBTEVERUYpIDwgMCkKKyAgICAgV0lUSF9DVVJfTE9DQUxFIChlcnJvciAoMywgMCwgXygiXAorIEZBVEFMOiBzeXN0ZW0gZG9lcyBub3QgZGVmaW5lIGBfUE9TSVgyX0xPQ0FMRURFRiciKSkpOworKyNlbmRpZgorIAorICAgLyogUHJvY2VzcyBjaGFybWFwIGZpbGUuICAqLworICAgY2hhcm1hcCA9IGNoYXJtYXBfcmVhZCAoY2hhcm1hcF9maWxlLCB2ZXJib3NlLCAxLCBiZV9xdWlldCwgMSk7CitAQCAtMzI4LDYgKzMzMyw5IEBAIHBhcnNlX29wdCAoaW50IGtleSwgY2hhciAqYXJnLCBzdHJ1Y3QgYXJncF9zdGF0ZSAqc3RhdGUpCisgICAgIGNhc2UgT1BUX0JJR19FTkRJQU46CisgICAgICAgc2V0X2JpZ19lbmRpYW4gKHRydWUpOworICAgICAgIGJyZWFrOworKyAgICBjYXNlIE9QVF9VSU5UMzJfQUxJR046CisrICAgICAgdWludDMyX2FsaWduX21hc2sgPSBzdHJ0b2wgKGFyZywgTlVMTCwgMCkgLSAxOworKyAgICAgIGJyZWFrOworICAgICBjYXNlICdjJzoKKyAgICAgICBmb3JjZV9vdXRwdXQgPSAxOworICAgICAgIGJyZWFrOworZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5jCitpbmRleCAwOTkwZWYxMWJlLi42ODM0MjJjOTA4IDEwMDY0NAorLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuYworKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuYworQEAgLTU0NCw2ICs1NDQsOSBAQCBjb21wYXJlX2ZpbGVzIChjb25zdCBjaGFyICpmaWxlbmFtZTEsIGNvbnN0IGNoYXIgKmZpbGVuYW1lMiwgc2l6ZV90IHNpemUsCisgICAgbWFjaGluZSBydW5uaW5nIGxvY2FsZWRlZi4gICovCisgYm9vbCBzd2FwX2VuZGlhbm5lc3NfcDsKKyAKKysvKiBUaGUgdGFyZ2V0J3MgdmFsdWUgb2YgX19hbGlnbl9fKHVpbnQzMl90KSAtIDEuICAqLworK3Vuc2lnbmVkIGludCB1aW50MzJfYWxpZ25fbWFzayA9IDM7CisrCisgLyogV2hlbiBjYWxsZWQgb3V0c2lkZSBhIHN0YXJ0X2xvY2FsZV9zdHJ1Y3R1cmUvZW5kX2xvY2FsZV9zdHJ1Y3R1cmUKKyAgICBvciBzdGFydF9sb2NhbGVfcHJlbHVkZS9lbmRfbG9jYWxlX3ByZWx1ZGUgYmxvY2ssIHJlY29yZCB0aGF0IHRoZQorICAgIG5leHQgYnl0ZSBpbiBGSUxFJ3Mgb2JzdGFjayB3aWxsIGJlIHRoZSBmaXJzdCBieXRlIG9mIGEgbmV3IGVsZW1lbnQuCitAQCAtNjIxLDcgKzYyNCw3IEBAIGFkZF9sb2NhbGVfc3RyaW5nIChzdHJ1Y3QgbG9jYWxlX2ZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgKnN0cmluZykKKyB2b2lkCisgYWRkX2xvY2FsZV93c3RyaW5nIChzdHJ1Y3QgbG9jYWxlX2ZpbGUgKmZpbGUsIGNvbnN0IHVpbnQzMl90ICpzdHJpbmcpCisgeworLSAgYWRkX2xvY2FsZV91aW50MzJfYXJyYXkgKGZpbGUsIHN0cmluZywgd2NzbGVuICgoY29uc3Qgd2NoYXJfdCAqKSBzdHJpbmcpICsgMSk7CisrICBhZGRfbG9jYWxlX3VpbnQzMl9hcnJheSAoZmlsZSwgc3RyaW5nLCB3Y3NsZW5fdWludDMyIChzdHJpbmcpICsgMSk7CisgfQorIAorIC8qIFJlY29yZCB0aGF0IEZJTEUncyBuZXh0IGVsZW1lbnQgaXMgdGhlIDMyLWJpdCBpbnRlZ2VyIFZBTFVFLiAgKi8KK2RpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5oIGIvbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuaAoraW5kZXggMzQwN2UxM2MxMy4uMGJiNTU2Y2FmOCAxMDA2NDQKKy0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmgKKysrKyBiL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmgKK0BAIC03MSw2ICs3MSw4IEBAIGV4dGVybiB2b2lkIHdyaXRlX2FsbF9jYXRlZ29yaWVzIChzdHJ1Y3QgbG9jYWxlZGVmX3QgKmRlZmluaXRpb25zLAorIAorIGV4dGVybiBib29sIHN3YXBfZW5kaWFubmVzc19wOworIAorK2V4dGVybiB1bnNpZ25lZCBpbnQgdWludDMyX2FsaWduX21hc2s7CisrCisgLyogQ2hhbmdlIHRoZSBvdXRwdXQgdG8gYmUgYmlnLWVuZGlhbiBpZiBCSUdfRU5ESUFOIGlzIHRydWUgYW5kCisgICAgbGl0dGxlLWVuZGlhbiBvdGhlcndpc2UuICAqLworIHN0YXRpYyBpbmxpbmUgdm9pZAorQEAgLTg5LDcgKzkxLDggQEAgbWF5YmVfc3dhcF91aW50MzIgKHVpbnQzMl90IHZhbHVlKQorIH0KKyAKKyAvKiBMaWtld2lzZSwgYnV0IG11bmdlIGFuIGFycmF5IG9mIE4gdWludDMyX3RzIHN0YXJ0aW5nIGF0IEFSUkFZLiAgKi8KKy1zdGF0aWMgaW5saW5lIHZvaWQKKytzdGF0aWMgdm9pZAorK19fYXR0cmlidXRlX18gKCh1bnVzZWQpKQorIG1heWJlX3N3YXBfdWludDMyX2FycmF5ICh1aW50MzJfdCAqYXJyYXksIHNpemVfdCBuKQorIHsKKyAgIGlmIChzd2FwX2VuZGlhbm5lc3NfcCkKK0BAIC05OSw3ICsxMDIsOCBAQCBtYXliZV9zd2FwX3VpbnQzMl9hcnJheSAodWludDMyX3QgKmFycmF5LCBzaXplX3QgbikKKyAKKyAvKiBMaWtlIG1heWJlX3N3YXBfdWludDMyX2FycmF5LCBidXQgdGhlIGFycmF5IG9mIE4gZWxlbWVudHMgaXMgYXQKKyAgICB0aGUgZW5kIG9mIE9CU1RBQ0sncyBjdXJyZW50IG9iamVjdC4gICovCistc3RhdGljIGlubGluZSB2b2lkCisrc3RhdGljIHZvaWQKKytfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkKKyBtYXliZV9zd2FwX3VpbnQzMl9vYnN0YWNrIChzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFjaywgc2l6ZV90IG4pCisgeworICAgbWF5YmVfc3dhcF91aW50MzJfYXJyYXkgKCh1aW50MzJfdCAqKSBvYnN0YWNrX25leHRfZnJlZSAob2JzdGFjaykgLSBuLCBuKTsKK0BAIC0yNzYsNCArMjgwLDU1IEBAIGV4dGVybiB2b2lkIGlkZW50aWZpY2F0aW9uX291dHB1dCAoc3RydWN0IGxvY2FsZWRlZl90ICpsb2NhbGUsCisgCQkJCSAgIGNvbnN0IHN0cnVjdCBjaGFybWFwX3QgKmNoYXJtYXAsCisgCQkJCSAgIGNvbnN0IGNoYXIgKm91dHB1dF9wYXRoKTsKKyAKKytzdGF0aWMgc2l6ZV90IHdjc2xlbl91aW50MzIgKGNvbnN0IHVpbnQzMl90ICpzdHIpIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKTsKKytzdGF0aWMgdWludDMyX3QgKiB3bWVtY3B5X3VpbnQzMiAodWludDMyX3QgKnMxLCBjb25zdCB1aW50MzJfdCAqczIsIHNpemVfdCBuKSBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSk7Cisrc3RhdGljIHVpbnQzMl90ICogd2NzY2hyX3VpbnQzMiAoY29uc3QgdWludDMyX3QgKnMsIHVpbnQzMl90IGNoKSBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSk7Cisrc3RhdGljIGludCB3Y3NjbXBfdWludDMyIChjb25zdCB1aW50MzJfdCAqczEsIGNvbnN0IHVpbnQzMl90ICpzMikgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpOworK3N0YXRpYyBpbnQgd21lbWNtcF91aW50MzIgKGNvbnN0IHVpbnQzMl90ICpzMSwgY29uc3QgdWludDMyX3QgKnMyLCBzaXplX3QgbikgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpOworKworK3N0YXRpYyBzaXplX3QKKyt3Y3NsZW5fdWludDMyIChjb25zdCB1aW50MzJfdCAqc3RyKQorK3sKKysgIHNpemVfdCBsZW4gPSAwOworKyAgd2hpbGUgKHN0cltsZW5dICE9IDApCisrICAgIGxlbisrOworKyAgcmV0dXJuIGxlbjsKKyt9CisrCisrc3RhdGljICBpbnQKKyt3bWVtY21wX3VpbnQzMiAoY29uc3QgdWludDMyX3QgKnMxLCBjb25zdCB1aW50MzJfdCAqczIsIHNpemVfdCBuKQorK3sKKysgIHdoaWxlIChuLS0gIT0gMCkKKysgICAgeworKyAgICAgIGludCBkaWZmID0gKnMxKysgLSAqczIrKzsKKysgICAgICBpZiAoZGlmZiAhPSAwKQorKwlyZXR1cm4gZGlmZjsKKysgICAgfQorKyAgcmV0dXJuIDA7CisrfQorKworK3N0YXRpYyBpbnQKKyt3Y3NjbXBfdWludDMyIChjb25zdCB1aW50MzJfdCAqczEsIGNvbnN0IHVpbnQzMl90ICpzMikKKyt7CisrICB3aGlsZSAoKnMxICE9IDAgJiYgKnMxID09ICpzMikKKysgICAgczErKywgczIrKzsKKysgIHJldHVybiAqczEgLSAqczI7CisrfQorKworK3N0YXRpYyB1aW50MzJfdCAqCisrd21lbWNweV91aW50MzIgKHVpbnQzMl90ICpzMSwgY29uc3QgdWludDMyX3QgKnMyLCBzaXplX3QgbikKKyt7CisrICByZXR1cm4gbWVtY3B5IChzMSwgczIsIG4gKiBzaXplb2YgKHVpbnQzMl90KSk7CisrfQorKworK3N0YXRpYyB1aW50MzJfdCAqCisrd2NzY2hyX3VpbnQzMiAoY29uc3QgdWludDMyX3QgKnMsIHVpbnQzMl90IGNoKQorK3sKKysgIGRvCisrICAgIGlmICgqcyA9PSBjaCkKKysgICAgICByZXR1cm4gKHVpbnQzMl90ICopIHM7CisrICB3aGlsZSAoKnMrKyAhPSAwKTsKKysgIHJldHVybiAwOworK30KKysKKyAjZW5kaWYgLyogbG9jZmlsZS5oICovCitkaWZmIC0tZ2l0IGEvbG9jYWxlL3NldGxvY2FsZS5jIGIvbG9jYWxlL3NldGxvY2FsZS5jCitpbmRleCAxOWFjYzRiMmM3Li5jODlkM2I4N2FkIDEwMDY0NAorLS0tIGEvbG9jYWxlL3NldGxvY2FsZS5jCisrKysgYi9sb2NhbGUvc2V0bG9jYWxlLmMKK0BAIC02NCwzNiArNjQsNiBAQCBzdGF0aWMgY2hhciAqY29uc3QgX25sX2N1cnJlbnRfdXNlZFtdID0KKyAjZW5kaWYKKyAKKyAKKy0vKiBEZWZpbmUgYW4gYXJyYXkgb2YgY2F0ZWdvcnkgbmFtZXMgKGFsc28gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWVzKS4gICovCistY29uc3QgdW5pb24gY2F0bmFtZXN0cl90IF9ubF9jYXRlZ29yeV9uYW1lcyBhdHRyaWJ1dGVfaGlkZGVuID0KKy0gIHsKKy0gICAgeworLSNkZWZpbmUgREVGSU5FX0NBVEVHT1JZKGNhdGVnb3J5LCBjYXRlZ29yeV9uYW1lLCBpdGVtcywgYSkgXAorLSAgICAgIGNhdGVnb3J5X25hbWUsCistI2luY2x1ZGUgImNhdGVnb3JpZXMuZGVmIgorLSN1bmRlZiBERUZJTkVfQ0FURUdPUlkKKy0gICAgfQorLSAgfTsKKy0KKy1jb25zdCB1aW50OF90IF9ubF9jYXRlZ29yeV9uYW1lX2lkeHNbX19MQ19MQVNUXSBhdHRyaWJ1dGVfaGlkZGVuID0KKy0gIHsKKy0jZGVmaW5lIERFRklORV9DQVRFR09SWShjYXRlZ29yeSwgY2F0ZWdvcnlfbmFtZSwgaXRlbXMsIGEpIFwKKy0gICAgW2NhdGVnb3J5XSA9IG9mZnNldG9mICh1bmlvbiBjYXRuYW1lc3RyX3QsIENBVE5BTUVNRiAoX19MSU5FX18pKSwKKy0jaW5jbHVkZSAiY2F0ZWdvcmllcy5kZWYiCistI3VuZGVmIERFRklORV9DQVRFR09SWQorLSAgfTsKKy0KKy0vKiBBbiBhcnJheSBvZiB0aGVpciBsZW5ndGhzLCBmb3IgY29udmVuaWVuY2UuICAqLworLWNvbnN0IHVpbnQ4X3QgX25sX2NhdGVnb3J5X25hbWVfc2l6ZXNbXSBhdHRyaWJ1dGVfaGlkZGVuID0KKy0gIHsKKy0jZGVmaW5lIERFRklORV9DQVRFR09SWShjYXRlZ29yeSwgY2F0ZWdvcnlfbmFtZSwgaXRlbXMsIGEpIFwKKy0gICAgW2NhdGVnb3J5XSA9IHNpemVvZiAoY2F0ZWdvcnlfbmFtZSkgLSAxLAorLSNpbmNsdWRlICJjYXRlZ29yaWVzLmRlZiIKKy0jdW5kZWYJREVGSU5FX0NBVEVHT1JZCistICAgIFtMQ19BTExdID0gc2l6ZW9mICgiTENfQUxMIikgLSAxCistICB9OworLQorLQorICNpZmRlZiBOTF9DVVJSRU5UX0lORElSRUNUCisgIyBkZWZpbmUgV0VBS19QT1NUTE9BRChwb3N0bG9hZCkgd2Vha19leHRlcm4gKHBvc3Rsb2FkKQorICNlbHNlCistLSAKKzIuMTMuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMi1lZ2xpYmMtUmVzb2x2ZS1fX2Zwc2NyX3ZhbHVlcy1vbi1TSDQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMi1lZ2xpYmMtUmVzb2x2ZS1fX2Zwc2NyX3ZhbHVlcy1vbi1TSDQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwY2Q1YjAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjItZWdsaWJjLVJlc29sdmUtX19mcHNjcl92YWx1ZXMtb24tU0g0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotRnJvbSBhNTBjNmU4MDU0M2ZiNGNiYzU4OTk3OGMxMWZlODQ2YmY0YTk0NDkyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6NTU6NTMgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAyMi8yNl0gZWdsaWJjOiBSZXNvbHZlIF9fZnBzY3JfdmFsdWVzIG9uIFNINAotCi0yMDEwLTA5LTI5ICBOb2J1aGlybyBJd2FtYXRzdSAgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotICAgICAgICAgICAgQW5kcmV3IFN0dWJicyAgPGFtc0Bjb2Rlc291cmNlcnkuY29tPgotCi0gICAgICAgIFJlc29sdmUgU0gncyBfX2Zwc2NyX3ZhbHVlcyB0byBzeW1ib2wgaW4gbGliYy5zby4KLQotICAgICAgICAqIHN5c2RlcHMvc2gvc2g0L2ZwdS9mcHVfY29udHJvbC5oOiBBZGQgQysrIF9fc2V0X2Zwc2NyIHByb3RvdHlwZS4KLSAgICAgICAgKiBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9WZXJzaW9ucyAoR0xJQkNfMi4yKTogQWRkIF9fZnBzY3JfdmFsdWVzLgotICAgICAgICAqIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL3N5c2RlcC5TIChfX19mcHNjcl92YWx1ZXMpOiBOZXcgY29uc3RhbnQuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvVmVyc2lvbnMgfCAgMSArCi0gc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvc3lzZGVwLlMgfCAxMSArKysrKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvVmVyc2lvbnMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9WZXJzaW9ucwotaW5kZXggZTA5MzhjNC4uY2ExZDdkYSAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL1ZlcnNpb25zCi0rKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9WZXJzaW9ucwotQEAgLTIsNiArMiw3IEBAIGxpYmMgewotICAgR0xJQkNfMi4yIHsKLSAgICAgIyBmdW5jdGlvbnMgdXNlZCBpbiBvdGhlciBsaWJyYXJpZXMKLSAgICAgX194c3RhdDY0OyBfX2Z4c3RhdDY0OyBfX2x4c3RhdDY0OwotKyAgICBfX2Zwc2NyX3ZhbHVlczsKLSAKLSAgICAgIyBhKgotICAgICBhbHBoYXNvcnQ2NDsKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9zeXNkZXAuUyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL3N5c2RlcC5TCi1pbmRleCAwMDI0ZDc5Li5kMWRiN2U0IDEwMDY0NAotLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvc3lzZGVwLlMKLSsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL3N5c2RlcC5TCi1AQCAtMzAsMyArMzAsMTQgQEAgRU5UUlkgKF9fc3lzY2FsbF9lcnJvcikKLSAKLSAjZGVmaW5lIF9fc3lzY2FsbF9lcnJvciBfX3N5c2NhbGxfZXJyb3JfMQotICNpbmNsdWRlIDxzeXNkZXBzL3VuaXgvc2gvc3lzZGVwLlM+Ci0rCi0rICAgICAgIC5kYXRhCi0rICAgICAgIC5hbGlnbiAzCi0rICAgICAgIC5nbG9ibCBfX19mcHNjcl92YWx1ZXMKLSsgICAgICAgLnR5cGUgX19fZnBzY3JfdmFsdWVzLCBAb2JqZWN0Ci0rICAgICAgIC5zaXplIF9fX2Zwc2NyX3ZhbHVlcywgOAotK19fX2Zwc2NyX3ZhbHVlczoKLSsgICAgICAgLmxvbmcgMAotKyAgICAgICAubG9uZyAweDgwMDAwCi0rd2Vha19hbGlhcyAoX19fZnBzY3JfdmFsdWVzLCBfX2Zwc2NyX3ZhbHVlcykKLSsKLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIzLURlZmluZS1EVU1NWV9MT0NBTEVfVC1pZi1ub3QtZGVmaW5lZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIzLURlZmluZS1EVU1NWV9MT0NBTEVfVC1pZi1ub3QtZGVmaW5lZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTU4MGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjMtRGVmaW5lLURVTU1ZX0xPQ0FMRV9ULWlmLW5vdC1kZWZpbmVkLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gY2I0ZDAwZWFjN2Y4NDA5MjMxNGRlNTkzNjI2ZWVhNDBmOTUyOTAzOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDIwIEFwciAyMDE2IDIxOjExOjAwIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMjMvMjVdIERlZmluZSBEVU1NWV9MT0NBTEVfVCBpZiBub3QgZGVmaW5lZAorCitUaGlzIGlzIGEgaGFjayB0byBmaXggYnVpbGRpbmcgdGhlIGxvY2FsZSBiaXRzIG9uIGFuIG9sZGVyCitDZW50T3MgNS5YIG1hY2hpbmUKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvdGhlcl0KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGxvY2FsZS9wcm9ncmFtcy9jb25maWcuaCB8IDMgKysrCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2NvbmZpZy5oIGIvbG9jYWxlL3Byb2dyYW1zL2NvbmZpZy5oCitpbmRleCA1YjQxNmJlMGQ4Li43OWU2NmVlZDVlIDEwMDY0NAorLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2NvbmZpZy5oCisrKysgYi9sb2NhbGUvcHJvZ3JhbXMvY29uZmlnLmgKK0BAIC0xOSw2ICsxOSw5IEBACisgI2lmbmRlZiBfTERfQ09ORklHX0gKKyAjZGVmaW5lIF9MRF9DT05GSUdfSAkxCisgCisrI2lmbmRlZiBEVU1NWV9MT0NBTEVfVAorKyNkZWZpbmUgRFVNTVlfTE9DQUxFX1QKKysjZW5kaWYKKyAvKiBVc2UgdGhlIGludGVybmFsIHRleHRkb21haW4gdXNlZCBmb3IgbGliYyBtZXNzYWdlcy4gICovCisgI2RlZmluZSBQQUNLQUdFIF9saWJjX2ludGxfZG9tYWlubmFtZQorICNpZm5kZWYgVkVSU0lPTgorLS0gCisyLjEzLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjMtZWdsaWJjLUluc3RhbGwtUElDLWFyY2hpdmVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjMtZWdsaWJjLUluc3RhbGwtUElDLWFyY2hpdmVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjM2U1NzFmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIzLWVnbGliYy1JbnN0YWxsLVBJQy1hcmNoaXZlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi1Gcm9tIDEwMTU2OGRhZjQ4ZDk5ZTcxYjI4MGEyZmRkODU0NjBmZTc0MGQ1ODMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMTo1NzowMSArMDAwMAotU3ViamVjdDogW1BBVENIIDIzLzI2XSBlZ2xpYmM6IEluc3RhbGwgUElDIGFyY2hpdmVzCi0KLUZvcndhcmQgcG9ydCBmcm9tIGVnbGliYwotCi0yMDA4LTAyLTA3ICBKb3NlcGggTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KLQotICAgICAgICAqIE1ha2VydWxlcyAoaW5zdGFsbC1leHRyYXMsIGluc3RhbGwtbWFwKTogTmV3IHZhcmlhYmxlcy4KLSAgICAgICAgKGluc3RhbGxlZC1saWJjcyk6IEFkZCBsaWJjX3BpYy5hLgotICAgICAgICAoaW5zdGFsbC1saWIpOiBJbmNsdWRlIF9waWMuYSBmaWxlcyBmb3IgdmVyc2lvbmVkIHNoYXJlZAotICAgICAgICBsaWJyYXJpZXMuCi0gICAgICAgIChpbnN0YWxsLW1hcC1ub3N1YmRpciwgaW5zdGFsbC1leHRyYXMtbm9zdWJkaXIpOiBBZGQgcnVsZXMgZm9yCi0gICAgICAgIGluc3RhbGxpbmcgZXh0cmEgZmlsZXMuCi0gICAgICAgIChpbnN0YWxsLW5vLWxpYmMuYS1ub3N1YmRpcik6IERlcGVuZCBvbiBpbnN0YWxsLW1hcC1ub3N1YmRpciBhbmQKLSAgICAgICAgaW5zdGFsbC1leHRyYXMtbm9zdWJkaXIuCi0KLTIwMDgtMDQtMDEgIE1heGltIEt1dnlya292ICA8bWF4aW1AY29kZXNvdXJjZXJ5LmNvbT4KLQotICAgICAgICAqIE1ha2VydWxlcyAoaW5zdGFsbC1saWIpOiBEb24ndCBpbnN0YWxsIGxpYnB0aHJlYWRfcGljLmEuCi0gICAgICAgIChpbnN0YWxsLW1hcCk6IERvbid0IGluc3RhbGwgbGlicHRocmVhZF9waWMubWFwLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIE1ha2VydWxlcyB8IDQyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQotIDEgZmlsZSBjaGFuZ2VkLCA0MCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZXJ1bGVzIGIvTWFrZXJ1bGVzCi1pbmRleCA2MWEwMjQwLi4zNzNlNjI4IDEwMDY0NAotLS0tIGEvTWFrZXJ1bGVzCi0rKysgYi9NYWtlcnVsZXMKLUBAIC03NjIsNiArNzYyLDkgQEAgaWZlcSAoJChidWlsZC1zaGFyZWQpLHllcykKLSAkKGNvbW1vbi1vYmpwZngpbGliYy5zbzogJChjb21tb24tb2JqcGZ4KWxpYmMubWFwCi0gZW5kaWYKLSBjb21tb24tZ2VuZXJhdGVkICs9IGxpYmMuc28gbGliY19waWMub3MKLStpZm5kZWYgc3ViZGlyCi0raW5zdGFsbC1leHRyYXMgOj0gc29pbml0Lm8gc29maW5pLm8KLStlbmRpZgotIGlmZGVmIGxpYmMuc28tdmVyc2lvbgotICQoY29tbW9uLW9ianBmeClsaWJjLnNvJChsaWJjLnNvLXZlcnNpb24pOiAkKGNvbW1vbi1vYmpwZngpbGliYy5zbwotIAkkKG1ha2UtbGluaykKLUBAIC0xMDA0LDYgKzEwMDcsNyBAQCBlbmRpZgotIAotIGluc3RhbGw6IGNoZWNrLWluc3RhbGwtc3VwcG9ydGVkCi0gCi0raW5zdGFsbGVkLWxpYmNzIDo9ICQoaW5zdGFsbGVkLWxpYmNzKSAkKGluc3RfbGliZGlyKS9saWJjX3BpYy5hCi0gaW5zdGFsbDogJChpbnN0YWxsZWQtbGliY3MpCi0gJChpbnN0YWxsZWQtbGliY3MpOiAkKGluc3RfbGliZGlyKS9saWIkKGxpYnByZWZpeCklOiBsaWIgJCgrZm9yY2UpCi0gCSQobWFrZS10YXJnZXQtZGlyZWN0b3J5KQotQEAgLTEwMzIsNiArMTAzNiwyMiBAQCB2ZXJzaW9uZWQgOj0gJChzdHJpcCAkKGZvcmVhY2ggc28sJChpbnN0YWxsLWxpYi5zbyksXAotIGluc3RhbGwtbGliLnNvLXZlcnNpb25lZCA6PSAkKGZpbHRlciAkKHZlcnNpb25lZCksICQoaW5zdGFsbC1saWIuc28pKQotIGluc3RhbGwtbGliLnNvLXVudmVyc2lvbmVkIDo9ICQoZmlsdGVyLW91dCAkKHZlcnNpb25lZCksICQoaW5zdGFsbC1saWIuc28pKQotIAotKyMgSW5zdGFsbCB0aGUgX3BpYy5hIGZpbGVzIGZvciB2ZXJzaW9uZWQgbGlicmFyaWVzLCBhbmQgY29ycmVzcG9uZGluZwotKyMgLm1hcCBmaWxlcy4KLSsjIGxpYnB0aHJlYWRfcGljLmEgYnJlYWtzIG1rbGlicywgc28gZG9uJ3QgaW5zdGFsbCBpdCBhbmQgaXRzIG1hcC4KLStpbnN0YWxsLWxpYiA6PSAkKGluc3RhbGwtbGliKSAkKGluc3RhbGwtbGliLnNvLXZlcnNpb25lZDolLnNvPSVfcGljLmEpCi0raW5zdGFsbC1saWIgOj0gJChmaWx0ZXItb3V0IGxpYnB0aHJlYWRfcGljLmEsJChpbnN0YWxsLWxpYikpCi0rIyBEZXNwaXRlIGhhdmluZyBhIHNvbmFtZSBsaWJodXJkdXNlciBhbmQgbGlibWFjaHVzZXIgZG8gbm90IHVzZSBzeW1ib2wKLSsjIHZlcnNpb25pbmcsIHNvIGRvbid0IGluc3RhbGwgdGhlIGNvcnJlc3BvbmRpbmcgLm1hcCBmaWxlcy4KLStpZmVxICgkKGJ1aWxkLXNoYXJlZCkseWVzKQotK2luc3RhbGwtbWFwIDo9ICQocGF0c3Vic3QgJS5zbywlLm1hcCxcCi0rCQkJJChmb3JlYWNoIEwsJChpbnN0YWxsLWxpYi5zby12ZXJzaW9uZWQpLCQobm90ZGlyICRMKSkpCi0raW5zdGFsbC1tYXAgOj0gJChmaWx0ZXItb3V0IGxpYmh1cmR1c2VyLm1hcCBsaWJtYWNodXNlci5tYXAgbGlicHRocmVhZC5tYXAsJChpbnN0YWxsLW1hcCkpCi0raWZuZGVmIHN1YmRpcgotK2luc3RhbGwtbWFwIDo9ICQoaW5zdGFsbC1tYXApIGxpYmMubWFwCi0rZW5kaWYKLStlbmRpZgotKwotICMgRm9yIHZlcnNpb25lZCBsaWJyYXJpZXMsIHdlIGluc3RhbGwgdGhyZWUgZmlsZXM6Ci0gIwkkKGluc3RfbGliZGlyKS9saWJmb28uc28JLS0gZm9yIGxpbmtpbmcsIHN5bWxpbmsgb3IgbGQgc2NyaXB0Ci0gIwkkKGluc3Rfc2xpYmRpcikvbGliZm9vLnNvLk5OCS0tIGZvciBsb2FkaW5nIGJ5IFNPTkFNRSwgc3ltbGluawotQEAgLTEyNzUsOSArMTI5NSwyMiBAQCAkKGFkZHByZWZpeCAkKGluc3RfaW5jbHVkZWRpcikvLCQoaGVhZGVycy1ub25oKSk6ICQoaW5zdF9pbmNsdWRlZGlyKS8lOiBcCi0gZW5kaWYJIyBoZWFkZXJzLW5vbmgKLSBlbmRpZgkjIGhlYWRlcnMKLSAKLStpZmRlZiBpbnN0YWxsLW1hcAotKyQoYWRkcHJlZml4ICQoaW5zdF9saWJkaXIpLywkKHBhdHN1YnN0IGxpYiUubWFwLGxpYiVfcGljLm1hcCwkKGluc3RhbGwtbWFwKSkpOiBcCi0rICAkKGluc3RfbGliZGlyKS9saWIlX3BpYy5tYXA6ICQoY29tbW9uLW9ianBmeClsaWIlLm1hcCAkKCtmb3JjZSkKLSsJJChkby1pbnN0YWxsKQotK2VuZGlmCi0rCi0raWZkZWYgaW5zdGFsbC1leHRyYXMKLSskKGFkZHByZWZpeCAkKGluc3RfbGliZGlyKS9saWJjX3BpYy8sJChpbnN0YWxsLWV4dHJhcykpOiBcCi0rICAkKGluc3RfbGliZGlyKS9saWJjX3BpYy8lLm86ICQoZWxmLW9ianBmeCklLm9zICQoK2ZvcmNlKQotKwkkKGRvLWluc3RhbGwpCi0rZW5kaWYKLSsKLSAuUEhPTlk6IGluc3RhbGwtYmluLW5vc3ViZGlyIGluc3RhbGwtYmluLXNjcmlwdC1ub3N1YmRpciBcCi0gCWluc3RhbGwtcm9vdHNiaW4tbm9zdWJkaXIgaW5zdGFsbC1zYmluLW5vc3ViZGlyIGluc3RhbGwtbGliLW5vc3ViZGlyIFwKLS0JaW5zdGFsbC1kYXRhLW5vc3ViZGlyIGluc3RhbGwtaGVhZGVycy1ub3N1YmRpcgotKwlpbnN0YWxsLWRhdGEtbm9zdWJkaXIgaW5zdGFsbC1oZWFkZXJzLW5vc3ViZGlyIGluc3RhbGwtbWFwLW5vc3ViZGlyIFwKLSsJaW5zdGFsbC1leHRyYXMtbm9zdWJkaXIKLSBpbnN0YWxsLWJpbi1ub3N1YmRpcjogJChhZGRwcmVmaXggJChpbnN0X2JpbmRpcikvLCQoaW5zdGFsbC1iaW4pKQotIGluc3RhbGwtYmluLXNjcmlwdC1ub3N1YmRpcjogJChhZGRwcmVmaXggJChpbnN0X2JpbmRpcikvLCQoaW5zdGFsbC1iaW4tc2NyaXB0KSkKLSBpbnN0YWxsLXJvb3RzYmluLW5vc3ViZGlyOiBcCi1AQCAtMTI5MCw2ICsxMzIzLDEwIEBAIGluc3RhbGwtZGF0YS1ub3N1YmRpcjogJChhZGRwcmVmaXggJChpbnN0X2RhdGFkaXIpLywkKGluc3RhbGwtZGF0YSkpCi0gaW5zdGFsbC1oZWFkZXJzLW5vc3ViZGlyOiAkKGFkZHByZWZpeCAkKGluc3RfaW5jbHVkZWRpcikvLCQoaGVhZGVycykpCi0gaW5zdGFsbC1vdGhlcnMtbm9zdWJkaXI6ICQoaW5zdGFsbC1vdGhlcnMpCi0gaW5zdGFsbC1vdGhlcnMtcHJvZ3JhbXMtbm9zdWJkaXI6ICQoaW5zdGFsbC1vdGhlcnMtcHJvZ3JhbXMpCi0raW5zdGFsbC1tYXAtbm9zdWJkaXI6ICQoYWRkcHJlZml4ICQoaW5zdF9saWJkaXIpLyxcCi0rCQkgICAgICAgJChwYXRzdWJzdCBsaWIlLm1hcCxsaWIlX3BpYy5tYXAsJChpbnN0YWxsLW1hcCkpKQotK2luc3RhbGwtZXh0cmFzLW5vc3ViZGlyOiAkKGFkZHByZWZpeCAkKGluc3RfbGliZGlyKS9saWJjX3BpYy8sXAotKwkJICAgICAgICQoaW5zdGFsbC1leHRyYXMpKQotIAotICMgV2UgbmVlZCBhbGwgdGhlIGAtbm9zdWJkaXInIHRhcmdldHMgc28gdGhhdCBgaW5zdGFsbCcgaW4gdGhlIHBhcmVudAotICMgZG9lc24ndCBkZXBlbmQgb24gc2V2ZXJhbCB0aGluZ3Mgd2hpY2ggZWFjaCBpdGVyYXRlIG92ZXIgdGhlIHN1YmRpcnMuCi1AQCAtMTI5OSw3ICsxMzM2LDggQEAgaW5zdGFsbC0lOjogaW5zdGFsbC0lLW5vc3ViZGlyIDsKLSAKLSAuUEhPTlk6IGluc3RhbGwgaW5zdGFsbC1uby1saWJjLmEtbm9zdWJkaXIKLSBpbnN0YWxsLW5vLWxpYmMuYS1ub3N1YmRpcjogaW5zdGFsbC1oZWFkZXJzLW5vc3ViZGlyIGluc3RhbGwtZGF0YS1ub3N1YmRpciBcCi0tCQkJICAgIGluc3RhbGwtbGliLW5vc3ViZGlyIGluc3RhbGwtb3RoZXJzLW5vc3ViZGlyCi0rCQkJICAgIGluc3RhbGwtbGliLW5vc3ViZGlyIGluc3RhbGwtb3RoZXJzLW5vc3ViZGlyIFwKLSsJCQkgICAgaW5zdGFsbC1tYXAtbm9zdWJkaXIgaW5zdGFsbC1leHRyYXMtbm9zdWJkaXIKLSBpZmVxICgkKGJ1aWxkLXByb2dyYW1zKSx5ZXMpCi0gaW5zdGFsbC1uby1saWJjLmEtbm9zdWJkaXI6IGluc3RhbGwtYmluLW5vc3ViZGlyIGluc3RhbGwtYmluLXNjcmlwdC1ub3N1YmRpciBcCi0gCQkJICAgIGluc3RhbGwtcm9vdHNiaW4tbm9zdWJkaXIgaW5zdGFsbC1zYmluLW5vc3ViZGlyIFwKLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI0LWVnbGliYy1Gb3J3YXJkLXBvcnQtY3Jvc3MtbG9jYWxlLWdlbmVyYXRpb24tc3VwcG9ydC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI0LWVnbGliYy1Gb3J3YXJkLXBvcnQtY3Jvc3MtbG9jYWxlLWdlbmVyYXRpb24tc3VwcG9ydC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzM5OTg5MC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNC1lZ2xpYmMtRm9yd2FyZC1wb3J0LWNyb3NzLWxvY2FsZS1nZW5lcmF0aW9uLXN1cHBvcnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NjYgKzAsMCBAQAotRnJvbSA4MjUxNmUzZWQzNzJmNjE4Yzg4NmEyZGU0Zjk0OThmNTk3YWE4YThiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDE6MzM6NDkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAyNC8yNl0gZWdsaWJjOiBGb3J3YXJkIHBvcnQgY3Jvc3MgbG9jYWxlIGdlbmVyYXRpb24gc3VwcG9ydAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGxvY2FsZS9NYWtlZmlsZSAgICAgICAgICAgICAgIHwgIDMgKystCi0gbG9jYWxlL2NhdG5hbWVzLmMgICAgICAgICAgICAgfCA0OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIGxvY2FsZS9sb2NhbGVpbmZvLmggICAgICAgICAgIHwgIDIgKy0KLSBsb2NhbGUvcHJvZ3JhbXMvY2hhcm1hcC1kaXIuYyB8ICA2ICsrKysrCi0gbG9jYWxlL3Byb2dyYW1zL2xkLWNvbGxhdGUuYyAgfCAxNyArKysrKystLS0tLS0tCi0gbG9jYWxlL3Byb2dyYW1zL2xkLWN0eXBlLmMgICAgfCAyNyArKysrKysrKysrLS0tLS0tLS0tLQotIGxvY2FsZS9wcm9ncmFtcy9sZC10aW1lLmMgICAgIHwgMzEgKysrKysrKysrKysrKysrLS0tLS0tLS0KLSBsb2NhbGUvcHJvZ3JhbXMvbGluZXJlYWRlci5jICB8ICAyICstCi0gbG9jYWxlL3Byb2dyYW1zL2xvY2FsZWRlZi5jICAgfCAgOCArKysrKysKLSBsb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5jICAgICB8ICA1ICsrKy0KLSBsb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5oICAgICB8IDU5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KLSBsb2NhbGUvc2V0bG9jYWxlLmMgICAgICAgICAgICB8IDMwIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxMiBmaWxlcyBjaGFuZ2VkLCAxNjkgaW5zZXJ0aW9ucygrKSwgNjkgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGxvY2FsZS9jYXRuYW1lcy5jCi0KLWRpZmYgLS1naXQgYS9sb2NhbGUvTWFrZWZpbGUgYi9sb2NhbGUvTWFrZWZpbGUKLWluZGV4IGM1Mzc5ZTYuLmM5OGM2NzUgMTAwNjQ0Ci0tLS0gYS9sb2NhbGUvTWFrZWZpbGUKLSsrKyBiL2xvY2FsZS9NYWtlZmlsZQotQEAgLTI1LDcgKzI1LDggQEAgaW5jbHVkZSAuLi9NYWtlY29uZmlnCi0gaGVhZGVycwkJPSBsb2NhbGUuaCBiaXRzL2xvY2FsZS5oIGxhbmdpbmZvLmggeGxvY2FsZS5oCi0gcm91dGluZXMJPSBzZXRsb2NhbGUgZmluZGxvY2FsZSBsb2FkbG9jYWxlIGxvYWRhcmNoaXZlIFwKLSAJCSAgbG9jYWxlY29udiBubF9sYW5naW5mbyBubF9sYW5naW5mb19sIG1iX2N1cl9tYXggXAotLQkJICBuZXdsb2NhbGUgZHVwbG9jYWxlIGZyZWVsb2NhbGUgdXNlbG9jYWxlCi0rCQkgIG5ld2xvY2FsZSBkdXBsb2NhbGUgZnJlZWxvY2FsZSB1c2Vsb2NhbGUgXAotKwkJICBjYXRuYW1lcwotIHRlc3RzCQk9IHRzdC1DLWxvY2FsZSB0c3QtbG9jbmFtZSB0c3QtZHVwbG9jYWxlCi0gY2F0ZWdvcmllcwk9IGN0eXBlIG1lc3NhZ2VzIG1vbmV0YXJ5IG51bWVyaWMgdGltZSBwYXBlciBuYW1lIFwKLSAJCSAgYWRkcmVzcyB0ZWxlcGhvbmUgbWVhc3VyZW1lbnQgaWRlbnRpZmljYXRpb24gY29sbGF0ZQotZGlmZiAtLWdpdCBhL2xvY2FsZS9jYXRuYW1lcy5jIGIvbG9jYWxlL2NhdG5hbWVzLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi45ZmFkMzU3Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9sb2NhbGUvY2F0bmFtZXMuYwotQEAgLTAsMCArMSw0OCBAQAotKy8qIENvcHlyaWdodCAoQykgMjAwNiAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCi0rICAgMDIxMTEtMTMwNyBVU0EuICAqLwotKwotKyNpbmNsdWRlICJsb2NhbGVpbmZvLmgiCi0rCi0rLyogRGVmaW5lIGFuIGFycmF5IG9mIGNhdGVnb3J5IG5hbWVzIChhbHNvIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lcykuICAqLwotK2NvbnN0IHVuaW9uIGNhdG5hbWVzdHJfdCBfbmxfY2F0ZWdvcnlfbmFtZXMgYXR0cmlidXRlX2hpZGRlbiA9Ci0rICB7Ci0rICAgIHsKLSsjZGVmaW5lIERFRklORV9DQVRFR09SWShjYXRlZ29yeSwgY2F0ZWdvcnlfbmFtZSwgaXRlbXMsIGEpIFwKLSsgICAgICBjYXRlZ29yeV9uYW1lLAotKyNpbmNsdWRlICJjYXRlZ29yaWVzLmRlZiIKLSsjdW5kZWYgREVGSU5FX0NBVEVHT1JZCi0rICAgIH0KLSsgIH07Ci0rCi0rY29uc3QgdWludDhfdCBfbmxfY2F0ZWdvcnlfbmFtZV9pZHhzW19fTENfTEFTVF0gYXR0cmlidXRlX2hpZGRlbiA9Ci0rICB7Ci0rI2RlZmluZSBERUZJTkVfQ0FURUdPUlkoY2F0ZWdvcnksIGNhdGVnb3J5X25hbWUsIGl0ZW1zLCBhKSBcCi0rICAgIFtjYXRlZ29yeV0gPSBvZmZzZXRvZiAodW5pb24gY2F0bmFtZXN0cl90LCBDQVROQU1FTUYgKF9fTElORV9fKSksCi0rI2luY2x1ZGUgImNhdGVnb3JpZXMuZGVmIgotKyN1bmRlZiBERUZJTkVfQ0FURUdPUlkKLSsgIH07Ci0rCi0rLyogQW4gYXJyYXkgb2YgdGhlaXIgbGVuZ3RocywgZm9yIGNvbnZlbmllbmNlLiAgKi8KLStjb25zdCB1aW50OF90IF9ubF9jYXRlZ29yeV9uYW1lX3NpemVzW10gYXR0cmlidXRlX2hpZGRlbiA9Ci0rICB7Ci0rI2RlZmluZSBERUZJTkVfQ0FURUdPUlkoY2F0ZWdvcnksIGNhdGVnb3J5X25hbWUsIGl0ZW1zLCBhKSBcCi0rICAgIFtjYXRlZ29yeV0gPSBzaXplb2YgKGNhdGVnb3J5X25hbWUpIC0gMSwKLSsjaW5jbHVkZSAiY2F0ZWdvcmllcy5kZWYiCi0rI3VuZGVmCURFRklORV9DQVRFR09SWQotKyAgICBbTENfQUxMXSA9IHNpemVvZiAoIkxDX0FMTCIpIC0gMQotKyAgfTsKLWRpZmYgLS1naXQgYS9sb2NhbGUvbG9jYWxlaW5mby5oIGIvbG9jYWxlL2xvY2FsZWluZm8uaAotaW5kZXggMWY0ZGE5Mi4uN2Y2ODkzNSAxMDA2NDQKLS0tLSBhL2xvY2FsZS9sb2NhbGVpbmZvLmgKLSsrKyBiL2xvY2FsZS9sb2NhbGVpbmZvLmgKLUBAIC0yMjQsNyArMjI0LDcgQEAgX19saWJjX3RzZF9kZWZpbmUgKGV4dGVybiwgX19sb2NhbGVfdCwgTE9DQUxFKQotICAgIHVudXNlZC4gIFdlIGNhbiBtYW5hZ2UgdGhpcyBwbGF5aW5nIHNvbWUgdHJpY2tzIHdpdGggd2VhayByZWZlcmVuY2VzLgotICAgIEJ1dCB3aXRoIHRocmVhZC1sb2NhbCBsb2NhbGUgc2V0dGluZ3MsIGl0IGJlY29tZXMgcXVpdGUgdW5nYWlubHkgdW5sZXNzCi0gICAgd2UgY2FuIHVzZSBfX3RocmVhZCB2YXJpYWJsZXMuICBTbyBvbmx5IGluIHRoYXQgY2FzZSBkbyB3ZSBhdHRlbXB0IHRoaXMuICAqLwotLSNpZm5kZWYgU0hBUkVECi0rI2lmICFkZWZpbmVkIFNIQVJFRCAmJiAhZGVmaW5lZCBJTl9HTElCQ19MT0NBTEVERUYKLSAjIGluY2x1ZGUgPHRscy5oPgotICMgZGVmaW5lIE5MX0NVUlJFTlRfSU5ESVJFQ1QJMQotICNlbmRpZgotZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9jaGFybWFwLWRpci5jIGIvbG9jYWxlL3Byb2dyYW1zL2NoYXJtYXAtZGlyLmMKLWluZGV4IDk5ZmNkMzUuLjVlNTI4ZGMgMTAwNjQ0Ci0tLS0gYS9sb2NhbGUvcHJvZ3JhbXMvY2hhcm1hcC1kaXIuYwotKysrIGIvbG9jYWxlL3Byb2dyYW1zL2NoYXJtYXAtZGlyLmMKLUBAIC0xOSw3ICsxOSw5IEBACi0gI2luY2x1ZGUgPGVycm9yLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPGxpYmludGwuaD4KLSsjaWZuZGVmIE5PX1VOQ09NUFJFU1MKLSAjaW5jbHVkZSA8c3Bhd24uaD4KLSsjZW5kaWYKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotQEAgLTE1Niw2ICsxNTgsNyBAQCBjaGFybWFwX2Nsb3NlZGlyIChDSEFSTUFQX0RJUiAqY2RpcikKLSAgIHJldHVybiBjbG9zZWRpciAoZGlyKTsKLSB9Ci0gCi0rI2lmbmRlZiBOT19VTkNPTVBSRVNTCi0gLyogQ3JlYXRlcyBhIHN1YnByb2Nlc3MgZGVjb21wcmVzc2luZyB0aGUgZ2l2ZW4gcGF0aG5hbWUsIGFuZCByZXR1cm5zCi0gICAgYSBzdHJlYW0gcmVhZGluZyBpdHMgb3V0cHV0ICh0aGUgZGVjb21wcmVzc2VkIGRhdGEpLiAgKi8KLSBzdGF0aWMKLUBAIC0yMDQsNiArMjA3LDcgQEAgZm9wZW5fdW5jb21wcmVzc2VkIChjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3QgY2hhciAqY29tcHJlc3NvcikKLSAgICAgfQotICAgcmV0dXJuIE5VTEw7Ci0gfQotKyNlbmRpZgotIAotIC8qIE9wZW5zIGEgY2hhcm1hcCBmb3IgcmVhZGluZywgZ2l2ZW4gaXRzIG5hbWUgKG5vdCBhbiBhbGlhcyBuYW1lKS4gICovCi0gRklMRSAqCi1AQCAtMjI2LDYgKzIzMCw3IEBAIGNoYXJtYXBfb3BlbiAoY29uc3QgY2hhciAqZGlyZWN0b3J5LCBjb25zdCBjaGFyICpuYW1lKQotICAgaWYgKHN0cmVhbSAhPSBOVUxMKQotICAgICByZXR1cm4gc3RyZWFtOwotIAotKyNpZm5kZWYgTk9fVU5DT01QUkVTUwotICAgbWVtY3B5IChwLCAiLmd6IiwgNCk7Ci0gICBzdHJlYW0gPSBmb3Blbl91bmNvbXByZXNzZWQgKHBhdGhuYW1lLCAiZ3ppcCIpOwotICAgaWYgKHN0cmVhbSAhPSBOVUxMKQotQEAgLTIzNSw2ICsyNDAsNyBAQCBjaGFybWFwX29wZW4gKGNvbnN0IGNoYXIgKmRpcmVjdG9yeSwgY29uc3QgY2hhciAqbmFtZSkKLSAgIHN0cmVhbSA9IGZvcGVuX3VuY29tcHJlc3NlZCAocGF0aG5hbWUsICJiemlwMiIpOwotICAgaWYgKHN0cmVhbSAhPSBOVUxMKQotICAgICByZXR1cm4gc3RyZWFtOwotKyNlbmRpZgotIAotICAgcmV0dXJuIE5VTEw7Ci0gfQotZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sZC1jb2xsYXRlLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbGQtY29sbGF0ZS5jCi1pbmRleCAxZTEyNWY2Li4zYjI4NjdmIDEwMDY0NAotLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xkLWNvbGxhdGUuYwotKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xkLWNvbGxhdGUuYwotQEAgLTM1MCw3ICszNTAsNyBAQCBuZXdfZWxlbWVudCAoc3RydWN0IGxvY2FsZV9jb2xsYXRlX3QgKmNvbGxhdGUsIGNvbnN0IGNoYXIgKm1icywgc2l6ZV90IG1ic2xlbiwKLSAgICAgfQotICAgaWYgKHdjcyAhPSBOVUxMKQotICAgICB7Ci0tICAgICAgc2l6ZV90IG53Y3MgPSB3Y3NsZW4gKCh3Y2hhcl90ICopIHdjcyk7Ci0rICAgICAgc2l6ZV90IG53Y3MgPSB3Y3NsZW5fdWludDMyICh3Y3MpOwotICAgICAgIHVpbnQzMl90IHplcm8gPSAwOwotICAgICAgIC8qIEhhbmRsZSA8VTAwMDA+IGFzIGEgc2luZ2xlIGNoYXJhY3Rlci4gICovCi0gICAgICAgaWYgKG53Y3MgPT0gMCkKLUBAIC0xNzc2LDggKzE3NzYsNyBAQCBzeW1ib2wgYCVzJyBoYXMgdGhlIHNhbWUgZW5jb2RpbmcgYXMiKSwgKCplcHRyKS0+bmFtZSk7Ci0gCi0gCSAgICAgIGlmICgoKmVwdHIpLT5ud2NzID09IHJ1bnAtPm53Y3MpCi0gCQl7Ci0tCQkgIGludCBjID0gd21lbWNtcCAoKHdjaGFyX3QgKikgKCplcHRyKS0+d2NzLAotLQkJCQkgICAod2NoYXJfdCAqKSBydW5wLT53Y3MsIHJ1bnAtPm53Y3MpOwotKwkJICBpbnQgYyA9IHdtZW1jbXBfdWludDMyICgoKmVwdHIpLT53Y3MsIHJ1bnAtPndjcywgcnVucC0+bndjcyk7Ci0gCi0gCQkgIGlmIChjID09IDApCi0gCQkgICAgewotQEAgLTIwMTAsOSArMjAwOSw5IEBAIGFkZF90b190YWJsZXdjICh1aW50MzJfdCBjaCwgc3RydWN0IGVsZW1lbnRfdCAqcnVucCkKLSAJICAgICBvbmUgY29uc2VjdXRpdmUgZW50cnkuICAqLwotIAkgIGlmIChydW5wLT53Y25leHQgIT0gTlVMTAotIAkgICAgICAmJiBydW5wLT5ud2NzID09IHJ1bnAtPndjbmV4dC0+bndjcwotLQkgICAgICAmJiB3bWVtY21wICgod2NoYXJfdCAqKSBydW5wLT53Y3MsCi0tCQkJICAod2NoYXJfdCAqKXJ1bnAtPndjbmV4dC0+d2NzLAotLQkJCSAgcnVucC0+bndjcyAtIDEpID09IDAKLSsJICAgICAgJiYgd21lbWNtcF91aW50MzIgKHJ1bnAtPndjcywKLSsJCQkJIHJ1bnAtPndjbmV4dC0+d2NzLAotKwkJCQkgcnVucC0+bndjcyAtIDEpID09IDAKLSAJICAgICAgJiYgKHJ1bnAtPndjc1tydW5wLT5ud2NzIC0gMV0KLSAJCSAgPT0gcnVucC0+d2NuZXh0LT53Y3NbcnVucC0+bndjcyAtIDFdICsgMSkpCi0gCSAgICB7Ci1AQCAtMjAzNiw5ICsyMDM1LDkgQEAgYWRkX3RvX3RhYmxld2MgKHVpbnQzMl90IGNoLCBzdHJ1Y3QgZWxlbWVudF90ICpydW5wKQotIAkJcnVucCA9IHJ1bnAtPndjbmV4dDsKLSAJICAgICAgd2hpbGUgKHJ1bnAtPndjbmV4dCAhPSBOVUxMCi0gCQkgICAgICYmIHJ1bnAtPm53Y3MgPT0gcnVucC0+d2NuZXh0LT5ud2NzCi0tCQkgICAgICYmIHdtZW1jbXAgKCh3Y2hhcl90ICopIHJ1bnAtPndjcywKLS0JCQkJICh3Y2hhcl90ICopcnVucC0+d2NuZXh0LT53Y3MsCi0tCQkJCSBydW5wLT5ud2NzIC0gMSkgPT0gMAotKwkJICAgICAmJiB3bWVtY21wX3VpbnQzMiAocnVucC0+d2NzLAotKwkJCQkJcnVucC0+d2NuZXh0LT53Y3MsCi0rCQkJCQlydW5wLT5ud2NzIC0gMSkgPT0gMAotIAkJICAgICAmJiAocnVucC0+d2NzW3J1bnAtPm53Y3MgLSAxXQotIAkJCSA9PSBydW5wLT53Y25leHQtPndjc1tydW5wLT5ud2NzIC0gMV0gKyAxKSk7Ci0gCi1kaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2xkLWN0eXBlLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbGQtY3R5cGUuYwotaW5kZXggMGZkMTQxYy4uNjgxMzZlNiAxMDA2NDQKLS0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sZC1jdHlwZS5jCi0rKysgYi9sb2NhbGUvcHJvZ3JhbXMvbGQtY3R5cGUuYwotQEAgLTkyNiw3ICs5MjYsNyBAQCBjdHlwZV9vdXRwdXQgKHN0cnVjdCBsb2NhbGVkZWZfdCAqbG9jYWxlLCBjb25zdCBzdHJ1Y3QgY2hhcm1hcF90ICpjaGFybWFwLAotICAgYWxsb2NhdGVfYXJyYXlzIChjdHlwZSwgY2hhcm1hcCwgY3R5cGUtPnJlcGVydG9pcmUpOwotIAotICAgZGVmYXVsdF9taXNzaW5nX2xlbiA9IChjdHlwZS0+ZGVmYXVsdF9taXNzaW5nCi0tCQkJID8gd2NzbGVuICgod2NoYXJfdCAqKSBjdHlwZS0+ZGVmYXVsdF9taXNzaW5nKQotKwkJCSA/IHdjc2xlbl91aW50MzIgKGN0eXBlLT5kZWZhdWx0X21pc3NpbmcpCi0gCQkJIDogMCk7Ci0gCi0gICBpbml0X2xvY2FsZV9kYXRhICgmZmlsZSwgbmVsZW1zKTsKLUBAIC0xOTM3LDcgKzE5MzcsNyBAQCByZWFkX3RyYW5zbGl0X2VudHJ5IChzdHJ1Y3QgbGluZXJlYWRlciAqbGRmaWxlLCBzdHJ1Y3QgbG9jYWxlX2N0eXBlX3QgKmN0eXBlLAotIAkgICAgaWdub3JlID0gMTsKLSAJICBlbHNlCi0gCSAgICAvKiBUaGlzIHZhbHVlIGlzIHVzYWJsZS4gICovCi0tCSAgICBvYnN0YWNrX2dyb3cgKG9iLCB0b193c3RyLCB3Y3NsZW4gKCh3Y2hhcl90ICopIHRvX3dzdHIpICogNCk7Ci0rCSAgICBvYnN0YWNrX2dyb3cgKG9iLCB0b193c3RyLCB3Y3NsZW5fdWludDMyICh0b193c3RyKSAqIDQpOwotIAotIAkgIGZpcnN0ID0gMDsKLSAJfQotQEAgLTI0NzEsOCArMjQ3MSw4IEBAIHdpdGggY2hhcmFjdGVyIGNvZGUgcmFuZ2UgdmFsdWVzIG9uZSBtdXN0IHVzZSB0aGUgYWJzb2x1dGUgZWxsaXBzaXMgYC4uLiciKSk7Ci0gCSAgICB9Ci0gCi0gCWhhbmRsZV90b2tfZGlnaXQ6Ci0tCSAgY2xhc3NfYml0ID0gX0lTd2RpZ2l0OwotLQkgIGNsYXNzMjU2X2JpdCA9IF9JU2RpZ2l0OwotKwkgIGNsYXNzX2JpdCA9IEJJVHcgKHRva19kaWdpdCk7Ci0rCSAgY2xhc3MyNTZfYml0ID0gQklUICh0b2tfZGlnaXQpOwotIAkgIGhhbmRsZV9kaWdpdHMgPSAxOwotIAkgIGdvdG8gcmVhZF9jaGFyY2xhc3M7Ci0gCi1AQCAtMzkyOSw4ICszOTI5LDcgQEAgYWxsb2NhdGVfYXJyYXlzIChzdHJ1Y3QgbG9jYWxlX2N0eXBlX3QgKmN0eXBlLCBjb25zdCBzdHJ1Y3QgY2hhcm1hcF90ICpjaGFybWFwLAotIAotIAkgIHdoaWxlIChpZHggPCBudW1iZXIpCi0gCSAgICB7Ci0tCSAgICAgIGludCByZXMgPSB3Y3NjbXAgKChjb25zdCB3Y2hhcl90ICopIHNvcnRlZFtpZHhdLT5mcm9tLAotLQkJCQkoY29uc3Qgd2NoYXJfdCAqKSBydW5wLT5mcm9tKTsKLSsJICAgICAgaW50IHJlcyA9IHdjc2NtcF91aW50MzIgKHNvcnRlZFtpZHhdLT5mcm9tLCBydW5wLT5mcm9tKTsKLSAJICAgICAgaWYgKHJlcyA9PSAwKQotIAkJewotIAkJICByZXBsYWNlID0gMTsKLUBAIC0zOTY3LDExICszOTY2LDExIEBAIGFsbG9jYXRlX2FycmF5cyAoc3RydWN0IGxvY2FsZV9jdHlwZV90ICpjdHlwZSwgY29uc3Qgc3RydWN0IGNoYXJtYXBfdCAqY2hhcm1hcCwKLSAgICAgICBmb3IgKHNpemVfdCBjbnQgPSAwOyBjbnQgPCBudW1iZXI7ICsrY250KQotIAl7Ci0gCSAgc3RydWN0IHRyYW5zbGl0X3RvX3QgKnNydW5wOwotLQkgIGZyb21fbGVuICs9IHdjc2xlbiAoKGNvbnN0IHdjaGFyX3QgKikgc29ydGVkW2NudF0tPmZyb20pICsgMTsKLSsJICBmcm9tX2xlbiArPSB3Y3NsZW5fdWludDMyIChzb3J0ZWRbY250XS0+ZnJvbSkgKyAxOwotIAkgIHNydW5wID0gc29ydGVkW2NudF0tPnRvOwotIAkgIHdoaWxlIChzcnVucCAhPSBOVUxMKQotIAkgICAgewotLQkgICAgICB0b19sZW4gKz0gd2NzbGVuICgoY29uc3Qgd2NoYXJfdCAqKSBzcnVucC0+c3RyKSArIDE7Ci0rCSAgICAgIHRvX2xlbiArPSB3Y3NsZW5fdWludDMyIChzcnVucC0+c3RyKSArIDE7Ci0gCSAgICAgIHNydW5wID0gc3J1bnAtPm5leHQ7Ci0gCSAgICB9Ci0gCSAgLyogUGx1cyBvbmUgZm9yIHRoZSBleHRyYSBOVUwgY2hhcmFjdGVyIG1hcmtpbmcgdGhlIGVuZCBvZgotQEAgLTM5OTUsMTggKzM5OTQsMTggQEAgYWxsb2NhdGVfYXJyYXlzIChzdHJ1Y3QgbG9jYWxlX2N0eXBlX3QgKmN0eXBlLCBjb25zdCBzdHJ1Y3QgY2hhcm1hcF90ICpjaGFybWFwLAotIAkgIGN0eXBlLT50cmFuc2xpdF9mcm9tX2lkeFtjbnRdID0gZnJvbV9sZW47Ci0gCSAgY3R5cGUtPnRyYW5zbGl0X3RvX2lkeFtjbnRdID0gdG9fbGVuOwotIAotLQkgIGxlbiA9IHdjc2xlbiAoKGNvbnN0IHdjaGFyX3QgKikgc29ydGVkW2NudF0tPmZyb20pICsgMTsKLS0JICB3bWVtY3B5ICgod2NoYXJfdCAqKSAmY3R5cGUtPnRyYW5zbGl0X2Zyb21fdGJsW2Zyb21fbGVuXSwKLS0JCSAgIChjb25zdCB3Y2hhcl90ICopIHNvcnRlZFtjbnRdLT5mcm9tLCBsZW4pOwotKwkgIGxlbiA9IHdjc2xlbl91aW50MzIgKHNvcnRlZFtjbnRdLT5mcm9tKSArIDE7Ci0rCSAgd21lbWNweV91aW50MzIgKCZjdHlwZS0+dHJhbnNsaXRfZnJvbV90YmxbZnJvbV9sZW5dLAotKwkJCSAgc29ydGVkW2NudF0tPmZyb20sIGxlbik7Ci0gCSAgZnJvbV9sZW4gKz0gbGVuOwotIAotIAkgIGN0eXBlLT50cmFuc2xpdF90b19pZHhbY250XSA9IHRvX2xlbjsKLSAJICBzcnVucCA9IHNvcnRlZFtjbnRdLT50bzsKLSAJICB3aGlsZSAoc3J1bnAgIT0gTlVMTCkKLSAJICAgIHsKLS0JICAgICAgbGVuID0gd2NzbGVuICgoY29uc3Qgd2NoYXJfdCAqKSBzcnVucC0+c3RyKSArIDE7Ci0tCSAgICAgIHdtZW1jcHkgKCh3Y2hhcl90ICopICZjdHlwZS0+dHJhbnNsaXRfdG9fdGJsW3RvX2xlbl0sCi0tCQkgICAgICAgKGNvbnN0IHdjaGFyX3QgKikgc3J1bnAtPnN0ciwgbGVuKTsKLSsJICAgICAgbGVuID0gd2NzbGVuX3VpbnQzMiAoc3J1bnAtPnN0cikgKyAxOwotKwkgICAgICB3bWVtY3B5X3VpbnQzMiAoJmN0eXBlLT50cmFuc2xpdF90b190YmxbdG9fbGVuXSwKLSsJCQkgICAgICBzcnVucC0+c3RyLCBsZW4pOwotIAkgICAgICB0b19sZW4gKz0gbGVuOwotIAkgICAgICBzcnVucCA9IHNydW5wLT5uZXh0OwotIAkgICAgfQotZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sZC10aW1lLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbGQtdGltZS5jCi1pbmRleCA4NzUzMWJjLi41ZjJjMjY2IDEwMDY0NAotLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xkLXRpbWUuYwotKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xkLXRpbWUuYwotQEAgLTIxNSw4ICsyMTUsMTAgQEAgTm8gZGVmaW5pdGlvbiBmb3IgJXMgY2F0ZWdvcnkgZm91bmQiKSwgIkxDX1RJTUUiKSk7Ci0gCX0KLSAgICAgICBlbHNlCi0gCXsKLSsJICBzdGF0aWMgY29uc3QgdWludDMyX3Qgd3RfZm10X2FtcG1bXQotKwkgICAgPSB7ICclJywnSScsJzonLCclJywnTScsJzonLCclJywnUycsJyAnLCclJywncCcsMCB9OwotIAkgIHRpbWUtPnRfZm10X2FtcG0gPSAiJUk6JU06JVMgJXAiOwotLQkgIHRpbWUtPnd0X2ZtdF9hbXBtID0gKGNvbnN0IHVpbnQzMl90ICopIEwiJUk6JU06JVMgJXAiOwotKwkgIHRpbWUtPnd0X2ZtdF9hbXBtID0gd3RfZm10X2FtcG07Ci0gCX0KLSAgICAgfQotIAotQEAgLTIyNiw3ICsyMjgsNyBAQCBObyBkZWZpbml0aW9uIGZvciAlcyBjYXRlZ29yeSBmb3VuZCIpLCAiTENfVElNRSIpKTsKLSAgICAgICBjb25zdCBpbnQgZGF5c19wZXJfbW9udGhbMTJdID0geyAzMSwgMjksIDMxLCAzMCwgMzEsIDMwLAotIAkJCQkgICAgICAgMzEsIDMxLCAzMCwgMzEgLDMwLCAzMSB9OwotICAgICAgIHNpemVfdCBpZHg7Ci0tICAgICAgd2NoYXJfdCAqd3N0cjsKLSsgICAgICB1aW50MzJfdCAqd3N0cjsKLSAKLSAgICAgICB0aW1lLT5lcmFfZW50cmllcyA9Ci0gCShzdHJ1Y3QgZXJhX2RhdGEgKikgeG1hbGxvYyAodGltZS0+bnVtX2VyYQotQEAgLTQ2NCwxOCArNDY2LDE4IEBAIE5vIGRlZmluaXRpb24gZm9yICVzIGNhdGVnb3J5IGZvdW5kIiksICJMQ19USU1FIikpOwotIAkgICAgfQotIAotIAkgIC8qIE5vdyBnZW5lcmF0ZSB0aGUgd2lkZSBjaGFyYWN0ZXIgbmFtZSBhbmQgZm9ybWF0LiAgKi8KLS0JICB3c3RyID0gd2NzY2hyICgod2NoYXJfdCAqKSB0aW1lLT53ZXJhW2lkeF0sIEwnOicpOy8qIGVuZCBkaXJlY3Rpb24gKi8KLS0JICB3c3RyID0gd3N0ciA/IHdjc2NociAod3N0ciArIDEsIEwnOicpIDogTlVMTDsJLyogZW5kIG9mZnNldCAqLwotLQkgIHdzdHIgPSB3c3RyID8gd2NzY2hyICh3c3RyICsgMSwgTCc6JykgOiBOVUxMOwkvKiBlbmQgc3RhcnQgKi8KLS0JICB3c3RyID0gd3N0ciA/IHdjc2NociAod3N0ciArIDEsIEwnOicpIDogTlVMTDsJLyogZW5kIGVuZCAqLwotKwkgIHdzdHIgPSB3Y3NjaHJfdWludDMyICh0aW1lLT53ZXJhW2lkeF0sIEwnOicpOyAvKiBlbmQgZGlyZWN0aW9uICovCi0rCSAgd3N0ciA9IHdzdHIgPyB3Y3NjaHJfdWludDMyICh3c3RyICsgMSwgTCc6JykgOiBOVUxMOyAvKiBlbmQgb2Zmc2V0ICovCi0rCSAgd3N0ciA9IHdzdHIgPyB3Y3NjaHJfdWludDMyICh3c3RyICsgMSwgTCc6JykgOiBOVUxMOyAvKiBlbmQgc3RhcnQgKi8KLSsJICB3c3RyID0gd3N0ciA/IHdjc2Nocl91aW50MzIgKHdzdHIgKyAxLCBMJzonKSA6IE5VTEw7IC8qIGVuZCBlbmQgKi8KLSAJICBpZiAod3N0ciAhPSBOVUxMKQotIAkgICAgewotLQkgICAgICB0aW1lLT5lcmFfZW50cmllc1tpZHhdLnduYW1lID0gKHVpbnQzMl90ICopIHdzdHIgKyAxOwotLQkgICAgICB3c3RyID0gd2NzY2hyICh3c3RyICsgMSwgTCc6Jyk7CS8qIGVuZCBuYW1lICovCi0rCSAgICAgIHRpbWUtPmVyYV9lbnRyaWVzW2lkeF0ud25hbWUgPSB3c3RyICsgMTsKLSsJICAgICAgd3N0ciA9IHdjc2Nocl91aW50MzIgKHdzdHIgKyAxLCBMJzonKTsgLyogZW5kIG5hbWUgKi8KLSAJICAgICAgaWYgKHdzdHIgIT0gTlVMTCkKLSAJCXsKLSAJCSAgKndzdHIgPSBMJ1wwJzsKLS0JCSAgdGltZS0+ZXJhX2VudHJpZXNbaWR4XS53Zm9ybWF0ID0gKHVpbnQzMl90ICopIHdzdHIgKyAxOwotKwkJICB0aW1lLT5lcmFfZW50cmllc1tpZHhdLndmb3JtYXQgPSB3c3RyICsgMTsKLSAJCX0KLSAJICAgICAgZWxzZQotIAkJdGltZS0+ZXJhX2VudHJpZXNbaWR4XS53bmFtZSA9Ci1AQCAtNTM0LDcgKzUzNiwxNiBAQCBObyBkZWZpbml0aW9uIGZvciAlcyBjYXRlZ29yeSBmb3VuZCIpLCAiTENfVElNRSIpKTsKLSAgIGlmICh0aW1lLT5kYXRlX2ZtdCA9PSBOVUxMKQotICAgICB0aW1lLT5kYXRlX2ZtdCA9ICIlYSAlYiAlZSAlSDolTTolUyAlWiAlWSI7Ci0gICBpZiAodGltZS0+d2RhdGVfZm10ID09IE5VTEwpCi0tICAgIHRpbWUtPndkYXRlX2ZtdCA9IChjb25zdCB1aW50MzJfdCAqKSBMIiVhICViICVlICVIOiVNOiVTICVaICVZIjsKLSsgICAgewotKyAgICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCB3ZGF0ZV9mbXRbXSA9Ci0rCXsgJyUnLCdhJywnICcsCi0rCSAgJyUnLCdiJywnICcsCi0rCSAgJyUnLCdlJywnICcsCi0rCSAgJyUnLCdIJywnOicsJyUnLCdNJywnOicsJyUnLCdTJywnICcsCi0rCSAgJyUnLCdaJywnICcsCi0rCSAgJyUnLCdZJywwIH07Ci0rICAgICAgdGltZS0+d2RhdGVfZm10ID0gd2RhdGVfZm10OwotKyAgICB9Ci0gfQotIAotIAotZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9saW5lcmVhZGVyLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbGluZXJlYWRlci5jCi1pbmRleCBiODg1ZjY1Li4wYWZiNjMxIDEwMDY0NAotLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xpbmVyZWFkZXIuYwotKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xpbmVyZWFkZXIuYwotQEAgLTU5NSw3ICs1OTUsNyBAQCBnZXRfc3RyaW5nIChzdHJ1Y3QgbGluZXJlYWRlciAqbHIsIGNvbnN0IHN0cnVjdCBjaGFybWFwX3QgKmNoYXJtYXAsCi0gewotICAgaW50IHJldHVybl93aWRlc3RyID0gbHItPnJldHVybl93aWRlc3RyOwotICAgY2hhciAqYnVmOwotLSAgd2NoYXJfdCAqYnVmMiA9IE5VTEw7Ci0rICB1aW50MzJfdCAqYnVmMiA9IE5VTEw7Ci0gICBzaXplX3QgYnVmYWN0OwotICAgc2l6ZV90IGJ1Zm1heCA9IDU2OwotIAotZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sb2NhbGVkZWYuYyBiL2xvY2FsZS9wcm9ncmFtcy9sb2NhbGVkZWYuYwotaW5kZXggYjRjNDhmMS4uZWQwOGQ0OCAxMDA2NDQKLS0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sb2NhbGVkZWYuYwotKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xvY2FsZWRlZi5jCi1AQCAtMTA4LDYgKzEwOCw3IEBAIHZvaWQgKCphcmdwX3Byb2dyYW1fdmVyc2lvbl9ob29rKSAoRklMRSAqLCBzdHJ1Y3QgYXJncF9zdGF0ZSAqKSA9IHByaW50X3ZlcnNpb247Ci0gI2RlZmluZSBPUFRfTElTVF9BUkNISVZFIDMwOQotICNkZWZpbmUgT1BUX0xJVFRMRV9FTkRJQU4gNDAwCi0gI2RlZmluZSBPUFRfQklHX0VORElBTiA0MDEKLSsjZGVmaW5lIE9QVF9VSU5UMzJfQUxJR04gNDAyCi0gCi0gLyogRGVmaW5pdGlvbnMgb2YgYXJndW1lbnRzIGZvciBhcmdwIGZ1bmN0aW9ucy4gICovCi0gc3RhdGljIGNvbnN0IHN0cnVjdCBhcmdwX29wdGlvbiBvcHRpb25zW10gPQotQEAgLTE0Myw2ICsxNDQsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGFyZ3Bfb3B0aW9uIG9wdGlvbnNbXSA9Ci0gICAgIE5fKCJHZW5lcmF0ZSBsaXR0bGUtZW5kaWFuIG91dHB1dCIpIH0sCi0gICB7ICJiaWctZW5kaWFuIiwgT1BUX0JJR19FTkRJQU4sIE5VTEwsIDAsCi0gICAgIE5fKCJHZW5lcmF0ZSBiaWctZW5kaWFuIG91dHB1dCIpIH0sCi0rICB7ICJ1aW50MzItYWxpZ24iLCBPUFRfVUlOVDMyX0FMSUdOLCAiQUxJR05NRU5UIiwgMCwKLSsgICAgTl8oIlNldCB0aGUgdGFyZ2V0J3MgdWludDMyX3QgYWxpZ25tZW50IGluIGJ5dGVzIChkZWZhdWx0IDQpIikgfSwKLSAgIHsgTlVMTCwgMCwgTlVMTCwgMCwgTlVMTCB9Ci0gfTsKLSAKLUBAIC0yMzIsMTIgKzIzNSwxNCBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQotICAgICAgY3R5cGUgbG9jYWxlLiAgKFAxMDAzLjIgNC4zNS41LjIpICAqLwotICAgc2V0bG9jYWxlIChMQ19DVFlQRSwgIlBPU0lYIik7Ci0gCi0rI2lmbmRlZiBOT19TWVNDT05GCi0gICAvKiBMb29rIHdoZXRoZXIgdGhlIHN5c3RlbSByZWFsbHkgYWxsb3dzIGxvY2FsZSBkZWZpbml0aW9ucy4gIFBPU0lYCi0gICAgICBkZWZpbmVzIGVycm9yIGNvZGUgMyBmb3IgdGhpcyBzaXR1YXRpb24gc28gSSB0aGluayBpdCBtdXN0IGJlCi0gICAgICBhIGZhdGFsIGVycm9yIChzZWUgUDEwMDMuMiA0LjM1LjgpLiAgKi8KLSAgIGlmIChzeXNjb25mIChfU0NfMl9MT0NBTEVERUYpIDwgMCkKLSAgICAgV0lUSF9DVVJfTE9DQUxFIChlcnJvciAoMywgMCwgXygiXAotIEZBVEFMOiBzeXN0ZW0gZG9lcyBub3QgZGVmaW5lIGBfUE9TSVgyX0xPQ0FMRURFRiciKSkpOwotKyNlbmRpZgotIAotICAgLyogUHJvY2VzcyBjaGFybWFwIGZpbGUuICAqLwotICAgY2hhcm1hcCA9IGNoYXJtYXBfcmVhZCAoY2hhcm1hcF9maWxlLCB2ZXJib3NlLCAxLCBiZV9xdWlldCwgMSk7Ci1AQCAtMzI4LDYgKzMzMyw5IEBAIHBhcnNlX29wdCAoaW50IGtleSwgY2hhciAqYXJnLCBzdHJ1Y3QgYXJncF9zdGF0ZSAqc3RhdGUpCi0gICAgIGNhc2UgT1BUX0JJR19FTkRJQU46Ci0gICAgICAgc2V0X2JpZ19lbmRpYW4gKHRydWUpOwotICAgICAgIGJyZWFrOwotKyAgICBjYXNlIE9QVF9VSU5UMzJfQUxJR046Ci0rICAgICAgdWludDMyX2FsaWduX21hc2sgPSBzdHJ0b2wgKGFyZywgTlVMTCwgMCkgLSAxOwotKyAgICAgIGJyZWFrOwotICAgICBjYXNlICdjJzoKLSAgICAgICBmb3JjZV9vdXRwdXQgPSAxOwotICAgICAgIGJyZWFrOwotZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5jCi1pbmRleCAzMmY1Y2QyLi4wMjk2N2IwIDEwMDY0NAotLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuYwotKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuYwotQEAgLTU0NCw2ICs1NDQsOSBAQCBjb21wYXJlX2ZpbGVzIChjb25zdCBjaGFyICpmaWxlbmFtZTEsIGNvbnN0IGNoYXIgKmZpbGVuYW1lMiwgc2l6ZV90IHNpemUsCi0gICAgbWFjaGluZSBydW5uaW5nIGxvY2FsZWRlZi4gICovCi0gYm9vbCBzd2FwX2VuZGlhbm5lc3NfcDsKLSAKLSsvKiBUaGUgdGFyZ2V0J3MgdmFsdWUgb2YgX19hbGlnbl9fKHVpbnQzMl90KSAtIDEuICAqLwotK3Vuc2lnbmVkIGludCB1aW50MzJfYWxpZ25fbWFzayA9IDM7Ci0rCi0gLyogV2hlbiBjYWxsZWQgb3V0c2lkZSBhIHN0YXJ0X2xvY2FsZV9zdHJ1Y3R1cmUvZW5kX2xvY2FsZV9zdHJ1Y3R1cmUKLSAgICBvciBzdGFydF9sb2NhbGVfcHJlbHVkZS9lbmRfbG9jYWxlX3ByZWx1ZGUgYmxvY2ssIHJlY29yZCB0aGF0IHRoZQotICAgIG5leHQgYnl0ZSBpbiBGSUxFJ3Mgb2JzdGFjayB3aWxsIGJlIHRoZSBmaXJzdCBieXRlIG9mIGEgbmV3IGVsZW1lbnQuCi1AQCAtNjIxLDcgKzYyNCw3IEBAIGFkZF9sb2NhbGVfc3RyaW5nIChzdHJ1Y3QgbG9jYWxlX2ZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgKnN0cmluZykKLSB2b2lkCi0gYWRkX2xvY2FsZV93c3RyaW5nIChzdHJ1Y3QgbG9jYWxlX2ZpbGUgKmZpbGUsIGNvbnN0IHVpbnQzMl90ICpzdHJpbmcpCi0gewotLSAgYWRkX2xvY2FsZV91aW50MzJfYXJyYXkgKGZpbGUsIHN0cmluZywgd2NzbGVuICgoY29uc3Qgd2NoYXJfdCAqKSBzdHJpbmcpICsgMSk7Ci0rICBhZGRfbG9jYWxlX3VpbnQzMl9hcnJheSAoZmlsZSwgc3RyaW5nLCB3Y3NsZW5fdWludDMyIChzdHJpbmcpICsgMSk7Ci0gfQotIAotIC8qIFJlY29yZCB0aGF0IEZJTEUncyBuZXh0IGVsZW1lbnQgaXMgdGhlIDMyLWJpdCBpbnRlZ2VyIFZBTFVFLiAgKi8KLWRpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5oIGIvbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuaAotaW5kZXggYTNkZDkwNC4uMmM3NzYzYSAxMDA2NDQKLS0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmgKLSsrKyBiL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmgKLUBAIC03MSw2ICs3MSw4IEBAIGV4dGVybiB2b2lkIHdyaXRlX2FsbF9jYXRlZ29yaWVzIChzdHJ1Y3QgbG9jYWxlZGVmX3QgKmRlZmluaXRpb25zLAotIAotIGV4dGVybiBib29sIHN3YXBfZW5kaWFubmVzc19wOwotIAotK2V4dGVybiB1bnNpZ25lZCBpbnQgdWludDMyX2FsaWduX21hc2s7Ci0rCi0gLyogQ2hhbmdlIHRoZSBvdXRwdXQgdG8gYmUgYmlnLWVuZGlhbiBpZiBCSUdfRU5ESUFOIGlzIHRydWUgYW5kCi0gICAgbGl0dGxlLWVuZGlhbiBvdGhlcndpc2UuICAqLwotIHN0YXRpYyBpbmxpbmUgdm9pZAotQEAgLTg5LDcgKzkxLDggQEAgbWF5YmVfc3dhcF91aW50MzIgKHVpbnQzMl90IHZhbHVlKQotIH0KLSAKLSAvKiBMaWtld2lzZSwgYnV0IG11bmdlIGFuIGFycmF5IG9mIE4gdWludDMyX3RzIHN0YXJ0aW5nIGF0IEFSUkFZLiAgKi8KLS1zdGF0aWMgaW5saW5lIHZvaWQKLStzdGF0aWMgdm9pZAotK19fYXR0cmlidXRlX18gKCh1bnVzZWQpKQotIG1heWJlX3N3YXBfdWludDMyX2FycmF5ICh1aW50MzJfdCAqYXJyYXksIHNpemVfdCBuKQotIHsKLSAgIGlmIChzd2FwX2VuZGlhbm5lc3NfcCkKLUBAIC05OSw3ICsxMDIsOCBAQCBtYXliZV9zd2FwX3VpbnQzMl9hcnJheSAodWludDMyX3QgKmFycmF5LCBzaXplX3QgbikKLSAKLSAvKiBMaWtlIG1heWJlX3N3YXBfdWludDMyX2FycmF5LCBidXQgdGhlIGFycmF5IG9mIE4gZWxlbWVudHMgaXMgYXQKLSAgICB0aGUgZW5kIG9mIE9CU1RBQ0sncyBjdXJyZW50IG9iamVjdC4gICovCi0tc3RhdGljIGlubGluZSB2b2lkCi0rc3RhdGljIHZvaWQKLStfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkKLSBtYXliZV9zd2FwX3VpbnQzMl9vYnN0YWNrIChzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFjaywgc2l6ZV90IG4pCi0gewotICAgbWF5YmVfc3dhcF91aW50MzJfYXJyYXkgKCh1aW50MzJfdCAqKSBvYnN0YWNrX25leHRfZnJlZSAob2JzdGFjaykgLSBuLCBuKTsKLUBAIC0yNzYsNCArMjgwLDU1IEBAIGV4dGVybiB2b2lkIGlkZW50aWZpY2F0aW9uX291dHB1dCAoc3RydWN0IGxvY2FsZWRlZl90ICpsb2NhbGUsCi0gCQkJCSAgIGNvbnN0IHN0cnVjdCBjaGFybWFwX3QgKmNoYXJtYXAsCi0gCQkJCSAgIGNvbnN0IGNoYXIgKm91dHB1dF9wYXRoKTsKLSAKLStzdGF0aWMgc2l6ZV90IHdjc2xlbl91aW50MzIgKGNvbnN0IHVpbnQzMl90ICpzdHIpIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKTsKLStzdGF0aWMgdWludDMyX3QgKiB3bWVtY3B5X3VpbnQzMiAodWludDMyX3QgKnMxLCBjb25zdCB1aW50MzJfdCAqczIsIHNpemVfdCBuKSBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSk7Ci0rc3RhdGljIHVpbnQzMl90ICogd2NzY2hyX3VpbnQzMiAoY29uc3QgdWludDMyX3QgKnMsIHVpbnQzMl90IGNoKSBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSk7Ci0rc3RhdGljIGludCB3Y3NjbXBfdWludDMyIChjb25zdCB1aW50MzJfdCAqczEsIGNvbnN0IHVpbnQzMl90ICpzMikgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpOwotK3N0YXRpYyBpbnQgd21lbWNtcF91aW50MzIgKGNvbnN0IHVpbnQzMl90ICpzMSwgY29uc3QgdWludDMyX3QgKnMyLCBzaXplX3QgbikgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpOwotKwotK3N0YXRpYyBzaXplX3QKLSt3Y3NsZW5fdWludDMyIChjb25zdCB1aW50MzJfdCAqc3RyKQotK3sKLSsgIHNpemVfdCBsZW4gPSAwOwotKyAgd2hpbGUgKHN0cltsZW5dICE9IDApCi0rICAgIGxlbisrOwotKyAgcmV0dXJuIGxlbjsKLSt9Ci0rCi0rc3RhdGljICBpbnQKLSt3bWVtY21wX3VpbnQzMiAoY29uc3QgdWludDMyX3QgKnMxLCBjb25zdCB1aW50MzJfdCAqczIsIHNpemVfdCBuKQotK3sKLSsgIHdoaWxlIChuLS0gIT0gMCkKLSsgICAgewotKyAgICAgIGludCBkaWZmID0gKnMxKysgLSAqczIrKzsKLSsgICAgICBpZiAoZGlmZiAhPSAwKQotKwlyZXR1cm4gZGlmZjsKLSsgICAgfQotKyAgcmV0dXJuIDA7Ci0rfQotKwotK3N0YXRpYyBpbnQKLSt3Y3NjbXBfdWludDMyIChjb25zdCB1aW50MzJfdCAqczEsIGNvbnN0IHVpbnQzMl90ICpzMikKLSt7Ci0rICB3aGlsZSAoKnMxICE9IDAgJiYgKnMxID09ICpzMikKLSsgICAgczErKywgczIrKzsKLSsgIHJldHVybiAqczEgLSAqczI7Ci0rfQotKwotK3N0YXRpYyB1aW50MzJfdCAqCi0rd21lbWNweV91aW50MzIgKHVpbnQzMl90ICpzMSwgY29uc3QgdWludDMyX3QgKnMyLCBzaXplX3QgbikKLSt7Ci0rICByZXR1cm4gbWVtY3B5IChzMSwgczIsIG4gKiBzaXplb2YgKHVpbnQzMl90KSk7Ci0rfQotKwotK3N0YXRpYyB1aW50MzJfdCAqCi0rd2NzY2hyX3VpbnQzMiAoY29uc3QgdWludDMyX3QgKnMsIHVpbnQzMl90IGNoKQotK3sKLSsgIGRvCi0rICAgIGlmICgqcyA9PSBjaCkKLSsgICAgICByZXR1cm4gKHVpbnQzMl90ICopIHM7Ci0rICB3aGlsZSAoKnMrKyAhPSAwKTsKLSsgIHJldHVybiAwOwotK30KLSsKLSAjZW5kaWYgLyogbG9jZmlsZS5oICovCi1kaWZmIC0tZ2l0IGEvbG9jYWxlL3NldGxvY2FsZS5jIGIvbG9jYWxlL3NldGxvY2FsZS5jCi1pbmRleCA2OWIzMTQxLi4xY2VmMGJlIDEwMDY0NAotLS0tIGEvbG9jYWxlL3NldGxvY2FsZS5jCi0rKysgYi9sb2NhbGUvc2V0bG9jYWxlLmMKLUBAIC02NCwzNiArNjQsNiBAQCBzdGF0aWMgY2hhciAqY29uc3QgX25sX2N1cnJlbnRfdXNlZFtdID0KLSAjZW5kaWYKLSAKLSAKLS0vKiBEZWZpbmUgYW4gYXJyYXkgb2YgY2F0ZWdvcnkgbmFtZXMgKGFsc28gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWVzKS4gICovCi0tY29uc3QgdW5pb24gY2F0bmFtZXN0cl90IF9ubF9jYXRlZ29yeV9uYW1lcyBhdHRyaWJ1dGVfaGlkZGVuID0KLS0gIHsKLS0gICAgewotLSNkZWZpbmUgREVGSU5FX0NBVEVHT1JZKGNhdGVnb3J5LCBjYXRlZ29yeV9uYW1lLCBpdGVtcywgYSkgXAotLSAgICAgIGNhdGVnb3J5X25hbWUsCi0tI2luY2x1ZGUgImNhdGVnb3JpZXMuZGVmIgotLSN1bmRlZiBERUZJTkVfQ0FURUdPUlkKLS0gICAgfQotLSAgfTsKLS0KLS1jb25zdCB1aW50OF90IF9ubF9jYXRlZ29yeV9uYW1lX2lkeHNbX19MQ19MQVNUXSBhdHRyaWJ1dGVfaGlkZGVuID0KLS0gIHsKLS0jZGVmaW5lIERFRklORV9DQVRFR09SWShjYXRlZ29yeSwgY2F0ZWdvcnlfbmFtZSwgaXRlbXMsIGEpIFwKLS0gICAgW2NhdGVnb3J5XSA9IG9mZnNldG9mICh1bmlvbiBjYXRuYW1lc3RyX3QsIENBVE5BTUVNRiAoX19MSU5FX18pKSwKLS0jaW5jbHVkZSAiY2F0ZWdvcmllcy5kZWYiCi0tI3VuZGVmIERFRklORV9DQVRFR09SWQotLSAgfTsKLS0KLS0vKiBBbiBhcnJheSBvZiB0aGVpciBsZW5ndGhzLCBmb3IgY29udmVuaWVuY2UuICAqLwotLWNvbnN0IHVpbnQ4X3QgX25sX2NhdGVnb3J5X25hbWVfc2l6ZXNbXSBhdHRyaWJ1dGVfaGlkZGVuID0KLS0gIHsKLS0jZGVmaW5lIERFRklORV9DQVRFR09SWShjYXRlZ29yeSwgY2F0ZWdvcnlfbmFtZSwgaXRlbXMsIGEpIFwKLS0gICAgW2NhdGVnb3J5XSA9IHNpemVvZiAoY2F0ZWdvcnlfbmFtZSkgLSAxLAotLSNpbmNsdWRlICJjYXRlZ29yaWVzLmRlZiIKLS0jdW5kZWYJREVGSU5FX0NBVEVHT1JZCi0tICAgIFtMQ19BTExdID0gc2l6ZW9mICgiTENfQUxMIikgLSAxCi0tICB9OwotLQotLQotICNpZmRlZiBOTF9DVVJSRU5UX0lORElSRUNUCi0gIyBkZWZpbmUgV0VBS19QT1NUTE9BRChwb3N0bG9hZCkgd2Vha19leHRlcm4gKHBvc3Rsb2FkKQotICNlbHNlCi0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNC1lbGYtZGwtZGVwcy5jLU1ha2UtX2RsX2J1aWxkX2xvY2FsX3Njb3BlLWJyZWFkdGgtZmlyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjQtZWxmLWRsLWRlcHMuYy1NYWtlLV9kbF9idWlsZF9sb2NhbF9zY29wZS1icmVhZHRoLWZpci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjU5MzUyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjQtZWxmLWRsLWRlcHMuYy1NYWtlLV9kbF9idWlsZF9sb2NhbF9zY29wZS1icmVhZHRoLWZpci5wYXRjaApAQCAtMCwwICsxLDU2IEBACitGcm9tIGE3ODQ3NDI3MzljOTBlZWEwZDRjY2JiZDA3M2EwNjdkNTVjYTk1ZTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDE4IEF1ZyAyMDE2IDE0OjA3OjU4IC0wNTAwCitTdWJqZWN0OiBbUEFUQ0ggMjQvMjVdIGVsZi9kbC1kZXBzLmM6IE1ha2UgX2RsX2J1aWxkX2xvY2FsX3Njb3BlIGJyZWFkdGggZmlyc3QKKworQWNjb3JkaW5nIHRvIHRoZSBFTEYgc3BlY2lmaWNhdGlvbjoKKworV2hlbiByZXNvbHZpbmcgc3ltYm9saWMgcmVmZXJlbmNlcywgdGhlIGR5bmFtaWMgbGlua2VyIGV4YW1pbmVzIHRoZSBzeW1ib2wKK3RhYmxlcyB3aXRoIGEgYnJlYWR0aC1maXJzdCBzZWFyY2guCisKK1RoaXMgZnVuY3Rpb24gd2FzIHVzaW5nIGEgZGVwdGggZmlyc3Qgc2VhcmNoLiAgQnkgZG9pbmcgc28gdGhlIGNvbmZsaWN0CityZXNvbHV0aW9uIHJlcG9ydGVkIHRvIHRoZSBwcmVsaW5rZXIgKHdoZW4gTERfVFJBQ0VfUFJFTElOS0lORz0xIGlzIHNldCkKK3dhcyBpbmNvcnJlY3QuICBUaGlzIGNhdXNlZCBwcm9ibGVtcyB3aGVuIHRoZWlyIHdlcmUgdmFyaW91cyBjaXJjdWxhcgorZGVwZW5kZW5jaWVzIGJldHdlZW4gbGlicmFyaWVzLiAgVGhlIHByb2JsZW0gdXN1YWxseSBtYW5pZmVzdGVkIGl0c2VsZiBieQordGhlIHdyb25nIElGVU5DIGJlaW5nIGV4ZWN1dGVkLgorCitbQlojIDIwNDg4XQorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbbGliYy1hbHBoYV0KKworU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgorLS0tCisgZWxmL2RsLWRlcHMuYyB8IDE0ICsrKysrKysrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9lbGYvZGwtZGVwcy5jIGIvZWxmL2RsLWRlcHMuYworaW5kZXggMWI4YmFjNjU5My4uYzYxNjgwOGYzMSAxMDA2NDQKKy0tLSBhL2VsZi9kbC1kZXBzLmMKKysrKyBiL2VsZi9kbC1kZXBzLmMKK0BAIC03MywxMyArNzMsMTkgQEAgX2RsX2J1aWxkX2xvY2FsX3Njb3BlIChzdHJ1Y3QgbGlua19tYXAgKipsaXN0LCBzdHJ1Y3QgbGlua19tYXAgKm1hcCkKKyB7CisgICBzdHJ1Y3QgbGlua19tYXAgKipwID0gbGlzdDsKKyAgIHN0cnVjdCBsaW5rX21hcCAqKnE7CisrICBzdHJ1Y3QgbGlua19tYXAgKipyOworIAorICAgKnArKyA9IG1hcDsKKyAgIG1hcC0+bF9yZXNlcnZlZCA9IDE7CistICBpZiAobWFwLT5sX2luaXRmaW5pKQorLSAgICBmb3IgKHEgPSBtYXAtPmxfaW5pdGZpbmkgKyAxOyAqcTsgKytxKQorLSAgICAgIGlmICghICgqcSktPmxfcmVzZXJ2ZWQpCistCXAgKz0gX2RsX2J1aWxkX2xvY2FsX3Njb3BlIChwLCAqcSk7CisrCisrICBmb3IgKHIgPSBsaXN0OyByIDwgcDsgKytyKQorKyAgICBpZiAoKCpyKS0+bF9pbml0ZmluaSkKKysgICAgICBmb3IgKHEgPSAoKnIpLT5sX2luaXRmaW5pICsgMTsgKnE7ICsrcSkKKysJaWYgKCEgKCpxKS0+bF9yZXNlcnZlZCkKKysJICB7CisrCSAgICAqcCsrID0gKnE7CisrCSAgICAoKnEpLT5sX3Jlc2VydmVkID0gMTsKKysJICB9CisgICByZXR1cm4gcCAtIGxpc3Q7CisgfQorIAorLS0gCisyLjEzLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjUtRGVmaW5lLURVTU1ZX0xPQ0FMRV9ULWlmLW5vdC1kZWZpbmVkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjUtRGVmaW5lLURVTU1ZX0xPQ0FMRV9ULWlmLW5vdC1kZWZpbmVkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZjBmNWQ0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI1LURlZmluZS1EVU1NWV9MT0NBTEVfVC1pZi1ub3QtZGVmaW5lZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLUZyb20gYzJkOGNkZWFiMTE2Y2FhY2RmZWRiMzVlZWIzZTc0M2I0NDgwN2JlYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDIwIEFwciAyMDE2IDIxOjExOjAwIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMjUvMjZdIERlZmluZSBEVU1NWV9MT0NBTEVfVCBpZiBub3QgZGVmaW5lZAotCi1UaGlzIGlzIGEgaGFjayB0byBmaXggYnVpbGRpbmcgdGhlIGxvY2FsZSBiaXRzIG9uIGFuIG9sZGVyCi1DZW50T3MgNS5YIG1hY2hpbmUKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvdGhlcl0KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGxvY2FsZS9wcm9ncmFtcy9jb25maWcuaCB8IDMgKysrCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2NvbmZpZy5oIGIvbG9jYWxlL3Byb2dyYW1zL2NvbmZpZy5oCi1pbmRleCBmNjA2MzY1Li4wZTVmOGMzIDEwMDY0NAotLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2NvbmZpZy5oCi0rKysgYi9sb2NhbGUvcHJvZ3JhbXMvY29uZmlnLmgKLUBAIC0xOSw2ICsxOSw5IEBACi0gI2lmbmRlZiBfTERfQ09ORklHX0gKLSAjZGVmaW5lIF9MRF9DT05GSUdfSAkxCi0gCi0rI2lmbmRlZiBEVU1NWV9MT0NBTEVfVAotKyNkZWZpbmUgRFVNTVlfTE9DQUxFX1QKLSsjZW5kaWYKLSAvKiBVc2UgdGhlIGludGVybmFsIHRleHRkb21haW4gdXNlZCBmb3IgbGliYyBtZXNzYWdlcy4gICovCi0gI2RlZmluZSBQQUNLQUdFIF9saWJjX2ludGxfZG9tYWlubmFtZQotICNpZm5kZWYgVkVSU0lPTgotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjUtbG9jYWxlLWZpeC1oYXJkLWNvZGVkLXJlZmVyZW5jZS10by1nY2MtRS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI1LWxvY2FsZS1maXgtaGFyZC1jb2RlZC1yZWZlcmVuY2UtdG8tZ2NjLUUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDlhZDA0YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI1LWxvY2FsZS1maXgtaGFyZC1jb2RlZC1yZWZlcmVuY2UtdG8tZ2NjLUUucGF0Y2gKQEAgLTAsMCArMSwzOCBAQAorRnJvbSBmM2E2NzA0OTZjOGZlNmQ0YWNmMDQ1ZjViMTY3YTE5Y2Y0MWIwNDRlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP0o9QzM9QTlyPUMzPUE5bXk9MjBSb3Nlbj89IDxqZXJlbXkucm9zZW5Ac21pbGUuZnI+CitEYXRlOiBNb24sIDIyIEF1ZyAyMDE2IDE2OjA5OjI1ICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMjUvMjVdIGxvY2FsZTogZml4IGhhcmQtY29kZWQgcmVmZXJlbmNlIHRvIGdjYyAtRQorCitXaGVuIG5ldyB2ZXJzaW9uIG9mIGNvbXBpbGVycyBhcmUgcHVibGlzaGVkLCB0aGV5IG1heSBub3QgYmUgY29tcGF0aWJsZSB3aXRoCitvbGRlciB2ZXJzaW9ucyBvZiBzb2Z0d2FyZS4gVGhpcyBpcyBwYXJ0aWN1bGFybHkgY29tbW9uIHdoZW4gc29mdHdhcmUgaXMgYnVpbHQKK3dpdGggLVdlcnJvci4KKworQXV0b3Rvb2xzIHByb3ZpZGVzIGEgd2F5IGZvciBhIHVzZXIgdG8gc3BlY2lmeSB0aGUgbmFtZSBvZiBoaXMgY29tcGlsZXIgdXNpbmcgYQorc2V0IG9mIHZhcmlhYmxlcyAoJENDICRDWFggJENQUCBldGMuKS4gVGhvc2UgdmFyaWFibGVzIGFyZSB1c2VkIGNvcnJlY3RseSB3aGVuCitjb21waWxpbmcgZ2xpYmMgYnV0IHRoZSBzY3JpcHQgdXNlZCB0byBnZW5lcmF0ZSB0cmFuc2xpdGVyYXRpb25zIGluIHRoZSBsb2NhbGUvCitzdWJkaXJlY3RvcnkgZGlyZWN0bHkgY2FsbHMgdGhlIGdjYyBiaW5hcnkgdG8gZ2V0IHRoZSBvdXRwdXQgb2YgdGhlCitwcmVwcm9jZXNzb3IgaW5zdGVhZCBvZiB1c2luZyB0aGUgJENQUCB2YXJpYWJsZSBwcm92aWRlZCBieSB0aGUgYnVpbGQKK2Vudmlyb25tZW50LgorCitUaGlzIHBhdGNoIHJlcGxhY2VzIHRoZSBoYXJkLWNvZGVkIHJlZmVyZW5jZSB0byB0aGUgZ2NjIGJpbmFyeSB3aXRoIHRoZSBwcm9wZXIKK2Vudmlyb25tZW50IHZhcmlhYmxlLCB0aHVzIGFsbG93aW5nIGEgdXNlciB0byBvdmVycmlkZSBpdC4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vc291cmNld2FyZS5vcmcvbWwvbGliYy1hbHBoYS8yMDE2LTA4L21zZzAwNzQ2Lmh0bWxdCistLS0KKyBsb2NhbGUvZ2VuLXRyYW5zbGl0LnBsIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbG9jYWxlL2dlbi10cmFuc2xpdC5wbCBiL2xvY2FsZS9nZW4tdHJhbnNsaXQucGwKK2luZGV4IDMwZDNmMmYxOTUuLmU5NzY1MzAxN2MgMTAwNjQ0CistLS0gYS9sb2NhbGUvZ2VuLXRyYW5zbGl0LnBsCisrKysgYi9sb2NhbGUvZ2VuLXRyYW5zbGl0LnBsCitAQCAtMSw1ICsxLDUgQEAKKyAjIS91c3IvYmluL3BlcmwgLXcKKy1vcGVuIEYsICJjYXQgQy10cmFuc2xpdC5oLmluIHwgZ2NjIC1FIC0gfCIgfHwgZGllICJDYW5ub3QgcHJlcHJvY2VzcyBpbnB1dCBmaWxlIjsKKytvcGVuIEYsICdjYXQgQy10cmFuc2xpdC5oLmluIHwgJHtDUFA6LWdjYyAtRX0gLSB8JyB8fCBkaWUgIkNhbm5vdCBwcmVwcm9jZXNzIGlucHV0IGZpbGUiOworIAorIAorIHN1YiBjc3RybGVuIHsKKy0tIAorMi4xMy4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI2LWFzc2VydC1TdXBwcmVzcy1wZWRhbnRpYy13YXJuaW5nLWNhdXNlZC1ieS1zdGF0ZW1lbnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNi1hc3NlcnQtU3VwcHJlc3MtcGVkYW50aWMtd2FybmluZy1jYXVzZWQtYnktc3RhdGVtZW50LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyYmI5NmIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNi1hc3NlcnQtU3VwcHJlc3MtcGVkYW50aWMtd2FybmluZy1jYXVzZWQtYnktc3RhdGVtZW50LnBhdGNoCkBAIC0wLDAgKzEsOTAgQEAKK0Zyb20gMDM3MjgzY2JjNzQ3MzliNzJmMzZkZmVjODI3ZDEyMGZhYTI0MzQwNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEZsb3JpYW4gV2VpbWVyIDxmd2VpbWVyIGF0IHJlZGhhdCBkb3QgY29tPgorRGF0ZTogVGh1LCA2IEp1bCAyMDE3IDExOjUwOjU1ICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMjYvMjZdIGFzc2VydDogU3VwcHJlc3MgcGVkYW50aWMgd2FybmluZyBjYXVzZWQgYnkgc3RhdGVtZW50CisgZXhwcmVzc2lvbiBbQlojIDIxMjQyXQorCitPbiAwNy8wNS8yMDE3IDEwOjE1IFBNLCBaYWNrIFdlaW5iZXJnIHdyb3RlOgorPiBPbiBXZWQsIEp1bCA1LCAyMDE3IGF0IDExOjUxIEFNLCBGbG9yaWFuIFdlaW1lciA8ZndlaW1lckByZWRoYXQuY29tPiB3cm90ZToKKz4+IE9uIDA3LzA1LzIwMTcgMDU6NDYgUE0sIFphY2sgV2VpbmJlcmcgd3JvdGU6Cis+Pj4gQSBwcm9ibGVtIG9jY3VycyB0byBtZTogZXhwcmVzc2lvbnMgaW52b2x2aW5nIFZMQXMgX2FyZV8gZXZhbHVhdGVkCis+Pj4gaW5zaWRlIHNpemVvZi4KKz4+Cis+PiBUaGUgdHlwZSBvZiB0aGUgc2l6ZW9mIGFyZ3VtZW50IHdvdWxkIHN0aWxsIGJlIGludCAoZHVlIHRvIHRoZQorPj4gY29tcGFyaXNvbiBhZ2FpbnN0IDApLCBzbyB0aGlzIGRvZXNuJ3QgYWN0dWFsbHkgb2NjdXIuCis+Cis+IEkgcmVjaGVja2VkIHdoYXQgQzk5IHNheXMgYWJvdXQgc2l6ZW9mIGFuZCBWTEFzLCBhbmQgeW91J3JlIHJpZ2h0IC0KKz4gdGhlIG9wZXJhbmQgb2Ygc2l6ZW9mIGlzIG9ubHkgZXZhbHVhdGVkIHdoZW4gc2l6ZW9mIGlzIF9kaXJlY3RseV8KKz4gYXBwbGllZCB0byBhIFZMQS4gIFNvIHRoaXMgaXMgaW5kZWVkIHNhZmUsIGJ1dCBJIHRoaW5rIHRoaXMgd3JpbmtsZQorPiBzaG91bGQgYmUgbWVudGlvbmVkIGluIHRoZSBjb21tZW50LiAgUGVyaGFwcworPgorPiAvKiBUaGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBFWFBSIGlzIG5vdCBldmFsdWF0ZWQgZHVlIHRvIHRoZSBzaXplb2YsCis+ICAgIGJ1dCB3aWxsIHRyaWdnZXIgYW55IHBlZGFudGljIHdhcm5pbmdzIG1hc2tlZCBieSB0aGUgX19leHRlbnNpb25fXworPiAgICBmb3IgdGhlIHNlY29uZCBvY2N1cnJlbmNlLiAgVGhlIGV4cGxpY2l0IGNvbXBhcmlzb24gYWdhaW5zdCB6ZXJvCis+ICAgIGVuc3VyZXMgdGhhdCBzaXplb2YgaXMgbm90IGRpcmVjdGx5IGFwcGxpZWQgdG8gYSBmdW5jdGlvbiBwb2ludGVyIG9yCis+ICAgIGJpdC1maWVsZCAod2hpY2ggd291bGQgYmUgaWxsLWZvcm1lZCkgb3IgVkxBICh3aGljaCB3b3VsZCBiZSBldmFsdWF0ZWQpLiAgKi8KKz4KKz4gencKKworV2hhdCBhYm91dCB0aGUgYXR0YWNoZWQgcGF0Y2g/CisKK1NpZGRoZXNoLCBpcyB0aGlzIG9rYXkgZHVyaW5nIHRoZSBmcmVlemU/ICBJJ2QgbGlrZSB0byBiYWNrcG9ydCBpdCB0bworMi4yNSBhcyB3ZWxsLgorCitUaGFua3MsCitGbG9yaWFuCisKK2Fzc2VydDogU3VwcHJlc3MgcGVkYW50aWMgd2FybmluZyBjYXVzZWQgYnkgc3RhdGVtZW50IGV4cHJlc3Npb24KKworMjAxNy0wNy0wNiAgRmxvcmlhbiBXZWltZXIgIDxmd2VpbWVyQHJlZGhhdC5jb20+CisKKwlbQlogIzIxMjQyXQorCSogYXNzZXJ0L2Fzc2VydC5oIFtfX0dOVUNfXyAmJiAhX19TVFJJQ1RfQU5TSV9fXSAoYXNzZXJ0KToKKwlTdXBwcmVzcyBwZWRhbnRpYyB3YXJuaW5nIHJlc3VsdGluZyBmcm9tIHN0YXRlbWVudCBleHByZXNzaW9uLgorCShfX0FTU0VSVF9GVU5DVElPTik6IEFkZCBtaXNzaW5nIF9fZXh0ZW5kc2lvbl9fLgorLS0tCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCisgYXNzZXJ0L2Fzc2VydC5oIHwgMTIgKysrKysrKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2Fzc2VydC9hc3NlcnQuaCBiL2Fzc2VydC9hc3NlcnQuaAoraW5kZXggMjJmMDE5NTM3Yy4uNjgwMWNmZWIxMCAxMDA2NDQKKy0tLSBhL2Fzc2VydC9hc3NlcnQuaAorKysrIGIvYXNzZXJ0L2Fzc2VydC5oCitAQCAtOTEsMTMgKzkxLDE5IEBAIF9fRU5EX0RFQ0xTCisgICAgICA/IF9fQVNTRVJUX1ZPSURfQ0FTVCAoMCkJCQkJCQlcCisgICAgICA6IF9fYXNzZXJ0X2ZhaWwgKCNleHByLCBfX0ZJTEVfXywgX19MSU5FX18sIF9fQVNTRVJUX0ZVTkNUSU9OKSkKKyAjIGVsc2UKKysvKiBUaGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiBFWFBSIGlzIG5vdCBldmFsdWF0ZWQgZHVlIHRvIHRoZSBzaXplb2YsCisrICAgYnV0IHdpbGwgdHJpZ2dlciBhbnkgcGVkYW50aWMgd2FybmluZ3MgbWFza2VkIGJ5IHRoZSBfX2V4dGVuc2lvbl9fCisrICAgZm9yIHRoZSBzZWNvbmQgb2NjdXJyZW5jZS4gIFRoZSBleHBsaWNpdCBjb21wYXJpc29uIGFnYWluc3QgemVybyBpcworKyAgIHJlcXVpcmVkIHRvIHN1cHBvcnQgZnVuY3Rpb24gcG9pbnRlcnMgYW5kIGJpdCBmaWVsZHMgaW4gdGhpcworKyAgIGNvbnRleHQsIGFuZCB0byBzdXBwcmVzcyB0aGUgZXZhbHVhdGlvbiBvZiB2YXJpYWJsZSBsZW5ndGgKKysgICBhcnJheXMuICAqLworICMgIGRlZmluZSBhc3NlcnQoZXhwcikJCQkJCQkJXAorLSAgICAoewkJCQkJCQkJCVwKKysgICgodm9pZCkgc2l6ZW9mICgoZXhwcikgPT0gMCksIF9fZXh0ZW5zaW9uX18gKHsJCQlcCisgICAgICAgaWYgKGV4cHIpCQkJCQkJCQlcCisgICAgICAgICA7IC8qIGVtcHR5ICovCQkJCQkJCVwKKyAgICAgICBlbHNlCQkJCQkJCQlcCisgICAgICAgICBfX2Fzc2VydF9mYWlsICgjZXhwciwgX19GSUxFX18sIF9fTElORV9fLCBfX0FTU0VSVF9GVU5DVElPTik7CVwKKy0gICAgfSkKKysgICAgfSkpCisgIyBlbmRpZgorIAorICMgaWZkZWYJX19VU0VfR05VCitAQCAtMTEzLDcgKzExOSw3IEBAIF9fRU5EX0RFQ0xTCisgICAgQzl4IGhhcyBhIHNpbWlsYXIgdmFyaWFibGUgY2FsbGVkIF9fZnVuY19fLCBidXQgcHJlZmVyIHRoZSBHQ0Mgb25lIHNpbmNlCisgICAgaXQgZGVtYW5nbGVzIEMrKyBmdW5jdGlvbiBuYW1lcy4gICovCisgIyBpZiBkZWZpbmVkIF9fY3BsdXNwbHVzID8gX19HTlVDX1BSRVJFUSAoMiwgNikgOiBfX0dOVUNfUFJFUkVRICgyLCA0KQorLSMgICBkZWZpbmUgX19BU1NFUlRfRlVOQ1RJT04JX19QUkVUVFlfRlVOQ1RJT05fXworKyMgICBkZWZpbmUgX19BU1NFUlRfRlVOQ1RJT04JX19leHRlbnNpb25fXyBfX1BSRVRUWV9GVU5DVElPTl9fCisgIyBlbHNlCisgIyAgaWYgZGVmaW5lZCBfX1NURENfVkVSU0lPTl9fICYmIF9fU1REQ19WRVJTSU9OX18gPj0gMTk5OTAxTAorICMgICBkZWZpbmUgX19BU1NFUlRfRlVOQ1RJT04JX19mdW5jX18KKy0tIAorMi4xMy4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI2LWVsZi1kbC1kZXBzLmMtTWFrZS1fZGxfYnVpbGRfbG9jYWxfc2NvcGUtYnJlYWR0aC1maXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNi1lbGYtZGwtZGVwcy5jLU1ha2UtX2RsX2J1aWxkX2xvY2FsX3Njb3BlLWJyZWFkdGgtZmlyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NTJmNTMwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI2LWVsZi1kbC1kZXBzLmMtTWFrZS1fZGxfYnVpbGRfbG9jYWxfc2NvcGUtYnJlYWR0aC1maXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi1Gcm9tIGZiMzE1YzE5N2NjYTYxMjk5YTZmNjU4OGVhMzQ2MDE0NWMyNTVkMDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUaHUsIDE4IEF1ZyAyMDE2IDE0OjA3OjU4IC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0ggMjYvMjZdIGVsZi9kbC1kZXBzLmM6IE1ha2UgX2RsX2J1aWxkX2xvY2FsX3Njb3BlIGJyZWFkdGggZmlyc3QKLQotQWNjb3JkaW5nIHRvIHRoZSBFTEYgc3BlY2lmaWNhdGlvbjoKLQotV2hlbiByZXNvbHZpbmcgc3ltYm9saWMgcmVmZXJlbmNlcywgdGhlIGR5bmFtaWMgbGlua2VyIGV4YW1pbmVzIHRoZSBzeW1ib2wKLXRhYmxlcyB3aXRoIGEgYnJlYWR0aC1maXJzdCBzZWFyY2guCi0KLVRoaXMgZnVuY3Rpb24gd2FzIHVzaW5nIGEgZGVwdGggZmlyc3Qgc2VhcmNoLiAgQnkgZG9pbmcgc28gdGhlIGNvbmZsaWN0Ci1yZXNvbHV0aW9uIHJlcG9ydGVkIHRvIHRoZSBwcmVsaW5rZXIgKHdoZW4gTERfVFJBQ0VfUFJFTElOS0lORz0xIGlzIHNldCkKLXdhcyBpbmNvcnJlY3QuICBUaGlzIGNhdXNlZCBwcm9ibGVtcyB3aGVuIHRoZWlyIHdlcmUgdmFyaW91cyBjaXJjdWxhcgotZGVwZW5kZW5jaWVzIGJldHdlZW4gbGlicmFyaWVzLiAgVGhlIHByb2JsZW0gdXN1YWxseSBtYW5pZmVzdGVkIGl0c2VsZiBieQotdGhlIHdyb25nIElGVU5DIGJlaW5nIGV4ZWN1dGVkLgotCi1bQlojIDIwNDg4XQotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbbGliYy1hbHBoYV0KLQotU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgotLS0tCi0gZWxmL2RsLWRlcHMuYyB8IDE0ICsrKysrKysrKystLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9lbGYvZGwtZGVwcy5jIGIvZWxmL2RsLWRlcHMuYwotaW5kZXggNmE4Mjk4Ny4uNTNiZTgyNCAxMDA2NDQKLS0tLSBhL2VsZi9kbC1kZXBzLmMKLSsrKyBiL2VsZi9kbC1kZXBzLmMKLUBAIC03MywxMyArNzMsMTkgQEAgX2RsX2J1aWxkX2xvY2FsX3Njb3BlIChzdHJ1Y3QgbGlua19tYXAgKipsaXN0LCBzdHJ1Y3QgbGlua19tYXAgKm1hcCkKLSB7Ci0gICBzdHJ1Y3QgbGlua19tYXAgKipwID0gbGlzdDsKLSAgIHN0cnVjdCBsaW5rX21hcCAqKnE7Ci0rICBzdHJ1Y3QgbGlua19tYXAgKipyOwotIAotICAgKnArKyA9IG1hcDsKLSAgIG1hcC0+bF9yZXNlcnZlZCA9IDE7Ci0tICBpZiAobWFwLT5sX2luaXRmaW5pKQotLSAgICBmb3IgKHEgPSBtYXAtPmxfaW5pdGZpbmkgKyAxOyAqcTsgKytxKQotLSAgICAgIGlmICghICgqcSktPmxfcmVzZXJ2ZWQpCi0tCXAgKz0gX2RsX2J1aWxkX2xvY2FsX3Njb3BlIChwLCAqcSk7Ci0rCi0rICBmb3IgKHIgPSBsaXN0OyByIDwgcDsgKytyKQotKyAgICBpZiAoKCpyKS0+bF9pbml0ZmluaSkKLSsgICAgICBmb3IgKHEgPSAoKnIpLT5sX2luaXRmaW5pICsgMTsgKnE7ICsrcSkKLSsJaWYgKCEgKCpxKS0+bF9yZXNlcnZlZCkKLSsJICB7Ci0rCSAgICAqcCsrID0gKnE7Ci0rCSAgICAoKnEpLT5sX3Jlc2VydmVkID0gMTsKLSsJICB9Ci0gICByZXR1cm4gcCAtIGxpc3Q7Ci0gfQotIAotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjctZ2xpYmMtcmVzZXQtZGwtbG9hZC13cml0ZS1sb2NrLWFmdGVyLWZvcmtpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNy1nbGliYy1yZXNldC1kbC1sb2FkLXdyaXRlLWxvY2stYWZ0ZXItZm9ya2luZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzdiMjUzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjctZ2xpYmMtcmVzZXQtZGwtbG9hZC13cml0ZS1sb2NrLWFmdGVyLWZvcmtpbmcucGF0Y2gKQEAgLTAsMCArMSwzNyBAQAorRnJvbSBhNmJiNzNkMWNmZDIwYTczZmJiZTYwNzYwMDgzNzZmYjg3ODc5ZDFiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogWXVhbmppZSBIdWFuZyA8eXVhbmppZS5odWFuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAxOCBBdWcgMjAxNiAxNzo1OToxMyArMDgwMAorU3ViamVjdDogW1BBVENIXSByZXNldCBkbF9sb2FkX3dyaXRlX2xvY2sgYWZ0ZXIgZm9ya2luZworCitUaGUgcGF0Y2ggaW4gdGhpcyBCdWd6aWxsYSBlbnRyeSB3YXMgcmVxdWVzdGVkIGJ5IGEgY3VzdG9tZXI6CisKKyAgaHR0cHM6Ly93d3cuc291cmNld2FyZS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTE5MjgyCisKK1RoZSBfX2xpYmNfZm9yaygpIGNvZGUgcmVzZXQgZGxfbG9hZF9sb2NrLCBidXQgaXQgYWxzbyBuZWVkZWQgdG8gcmVzZXQKK2RsX2xvYWRfd3JpdGVfbG9jay4gIFRoZSBwYXRjaCBoYXMgbm90IHlldCBiZWVuIGludGVncmF0ZWQgdXBzdHJlYW0uCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbIE5vdCBBdXRob3IgU2VlIGJ1Z3ppbGxhXQorCitTaWduZWQtb2ZmLWJ5OiBEYW1vZGFyIFNvbm9uZSA8ZGFtb2Rhci5zb25vbmVAa3BpdC5jb20+CitTaWduZWQtb2ZmLWJ5OiBZdWFuamllIEh1YW5nIDx5dWFuamllLmh1YW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBzeXNkZXBzL25wdGwvZm9yay5jIHwgMyArKy0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zeXNkZXBzL25wdGwvZm9yay5jIGIvc3lzZGVwcy9ucHRsL2ZvcmsuYworaW5kZXggMmI5YWU0Yi4uM2QwYjhkYSAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvbnB0bC9mb3JrLmMKKysrKyBiL3N5c2RlcHMvbnB0bC9mb3JrLmMKK0BAIC0xNzQsOCArMTc0LDkgQEAgX19saWJjX2ZvcmsgKHZvaWQpCisgICAgICAgLyogUmVzZXQgbG9ja3MgaW4gdGhlIEkvTyBjb2RlLiAgKi8KKyAgICAgICBfSU9fbGlzdF9yZXNldGxvY2sgKCk7CisgCistICAgICAgLyogUmVzZXQgdGhlIGxvY2sgdGhlIGR5bmFtaWMgbG9hZGVyIHVzZXMgdG8gcHJvdGVjdCBpdHMgZGF0YS4gICovCisrICAgICAgLyogUmVzZXQgdGhlIGxvY2tzIHRoZSBkeW5hbWljIGxvYWRlciB1c2VzIHRvIHByb3RlY3QgaXRzIGRhdGEuICAqLworICAgICAgIF9fcnRsZF9sb2NrX2luaXRpYWxpemUgKEdMKGRsX2xvYWRfbG9jaykpOworKyAgICAgIF9fcnRsZF9sb2NrX2luaXRpYWxpemUgKEdMKGRsX2xvYWRfd3JpdGVfbG9jaykpOworIAorICAgICAgIC8qIFJ1biB0aGUgaGFuZGxlcnMgcmVnaXN0ZXJlZCBmb3IgdGhlIGNoaWxkLiAgKi8KKyAgICAgICB3aGlsZSAoYWxscCAhPSBOVUxMKQorLS0gCisxLjkuMQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjctbG9jYWxlLWZpeC1oYXJkLWNvZGVkLXJlZmVyZW5jZS10by1nY2MtRS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI3LWxvY2FsZS1maXgtaGFyZC1jb2RlZC1yZWZlcmVuY2UtdG8tZ2NjLUUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxYzBiZGMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjctbG9jYWxlLWZpeC1oYXJkLWNvZGVkLXJlZmVyZW5jZS10by1nY2MtRS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLUZyb20gYTJmYzg2Y2I4ZDAzNjYxNzFmMTAwZWJkMDMzYWViOTYwOWZhNDBkZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9KPUMzPUE5cj1DMz1BOW15PTIwUm9zZW4/PSA8amVyZW15LnJvc2VuQHNtaWxlLmZyPgotRGF0ZTogTW9uLCAyMiBBdWcgMjAxNiAxNjowOToyNSArMDIwMAotU3ViamVjdDogW1BBVENIIDI3LzI3XSBsb2NhbGU6IGZpeCBoYXJkLWNvZGVkIHJlZmVyZW5jZSB0byBnY2MgLUUKLQotV2hlbiBuZXcgdmVyc2lvbiBvZiBjb21waWxlcnMgYXJlIHB1Ymxpc2hlZCwgdGhleSBtYXkgbm90IGJlIGNvbXBhdGlibGUgd2l0aAotb2xkZXIgdmVyc2lvbnMgb2Ygc29mdHdhcmUuIFRoaXMgaXMgcGFydGljdWxhcmx5IGNvbW1vbiB3aGVuIHNvZnR3YXJlIGlzIGJ1aWx0Ci13aXRoIC1XZXJyb3IuCi0KLUF1dG90b29scyBwcm92aWRlcyBhIHdheSBmb3IgYSB1c2VyIHRvIHNwZWNpZnkgdGhlIG5hbWUgb2YgaGlzIGNvbXBpbGVyIHVzaW5nIGEKLXNldCBvZiB2YXJpYWJsZXMgKCRDQyAkQ1hYICRDUFAgZXRjLikuIFRob3NlIHZhcmlhYmxlcyBhcmUgdXNlZCBjb3JyZWN0bHkgd2hlbgotY29tcGlsaW5nIGdsaWJjIGJ1dCB0aGUgc2NyaXB0IHVzZWQgdG8gZ2VuZXJhdGUgdHJhbnNsaXRlcmF0aW9ucyBpbiB0aGUgbG9jYWxlLwotc3ViZGlyZWN0b3J5IGRpcmVjdGx5IGNhbGxzIHRoZSBnY2MgYmluYXJ5IHRvIGdldCB0aGUgb3V0cHV0IG9mIHRoZQotcHJlcHJvY2Vzc29yIGluc3RlYWQgb2YgdXNpbmcgdGhlICRDUFAgdmFyaWFibGUgcHJvdmlkZWQgYnkgdGhlIGJ1aWxkCi1lbnZpcm9ubWVudC4KLQotVGhpcyBwYXRjaCByZXBsYWNlcyB0aGUgaGFyZC1jb2RlZCByZWZlcmVuY2UgdG8gdGhlIGdjYyBiaW5hcnkgd2l0aCB0aGUgcHJvcGVyCi1lbnZpcm9ubWVudCB2YXJpYWJsZSwgdGh1cyBhbGxvd2luZyBhIHVzZXIgdG8gb3ZlcnJpZGUgaXQuCi0KLVVwc3RyZWFtLVN0YXR1cyA6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9tbC9saWJjLWFscGhhLzIwMTYtMDgvbXNnMDA3NDYuaHRtbF0KLS0tLQotIGxvY2FsZS9nZW4tdHJhbnNsaXQucGwgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9sb2NhbGUvZ2VuLXRyYW5zbGl0LnBsIGIvbG9jYWxlL2dlbi10cmFuc2xpdC5wbAotaW5kZXggMzBkM2YyZi4uZTk3NjUzMCAxMDA2NDQKLS0tLSBhL2xvY2FsZS9nZW4tdHJhbnNsaXQucGwKLSsrKyBiL2xvY2FsZS9nZW4tdHJhbnNsaXQucGwKLUBAIC0xLDUgKzEsNSBAQAotICMhL3Vzci9iaW4vcGVybCAtdwotLW9wZW4gRiwgImNhdCBDLXRyYW5zbGl0LmguaW4gfCBnY2MgLUUgLSB8IiB8fCBkaWUgIkNhbm5vdCBwcmVwcm9jZXNzIGlucHV0IGZpbGUiOwotK29wZW4gRiwgJ2NhdCBDLXRyYW5zbGl0LmguaW4gfCAke0NQUDotZ2NjIC1FfSAtIHwnIHx8IGRpZSAiQ2Fubm90IHByZXByb2Nlc3MgaW5wdXQgZmlsZSI7Ci0gCi0gCi0gc3ViIGNzdHJsZW4gewotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjgtQnVnLTQ1NzgtYWRkLWxkLnNvLWxvY2std2hpbGUtZm9yay5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI4LUJ1Zy00NTc4LWFkZC1sZC5zby1sb2NrLXdoaWxlLWZvcmsucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjc2MjM3YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI4LUJ1Zy00NTc4LWFkZC1sZC5zby1sb2NrLXdoaWxlLWZvcmsucGF0Y2gKQEAgLTAsMCArMSw1NyBAQAorVGhlIHBhdGNoIGluIHRoaXMgQnVnemlsbGEgZW50cnkgd2FzIHJlcXVlc3RlZCBieSBhIGN1c3RvbWVyOgorICBodHRwczovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD00NTc4CisKK0lmIGEgdGhyZWFkIGhhcHBlbnMgdG8gaG9sZCBkbF9sb2FkX2xvY2sgYW5kIGhhdmUgcl9zdGF0ZSBzZXQgdG8gUlRfQUREIG9yCitSVF9ERUxFVEUgYXQgdGhlIHRpbWUgYW5vdGhlciB0aHJlYWQgY2FsbHMgZm9yaygpLCB0aGVuIHRoZSBjaGlsZCBleGl0IGNvZGUKK2Zyb20gZm9yayAoaW4gbnB0bC9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9mb3JrLmMgaW4gb3VyIGNhc2UpIHJlLWluaXRpYWxpemVzCitkbF9sb2FkX2xvY2sgYnV0IGRvZXMgbm90IHJlc3RvcmUgcl9zdGF0ZSB0byBSVF9DT05TSVNURU5ULiBJZiB0aGUgY2hpbGQKK3N1YnNlcXVlbnRseSByZXF1aXJlcyBsZC5zbyBmdW5jdGlvbmFsaXR5IGJlZm9yZSBjYWxsaW5nIGV4ZWMoKSwgdGhlbiB0aGUKK2Fzc2VydGlvbiB3aWxsIGZpcmUuCisKK1RoZSBwYXRjaCBhY3F1aXJlcyBkbF9sb2FkX2xvY2sgb24gZW50cnkgdG8gZm9yaygpIGFuZCByZWxlYXNlcyBpdCBvbiBleGl0Citmcm9tIHRoZSBwYXJlbnQgcGF0aC4gIFRoZSBjaGlsZCBwYXRoIGlzIGluaXRpYWxpemVkIGFzIGN1cnJlbnRseSBkb25lLgorVGhpcyBpcyBlc3NlbnRpYWxseSBwdGhyZWFkc19hdGZvcmssIGJ1dCBmb3JjZWQgdG8gYmUgZmlyc3QgYmVjYXVzZSB0aGUKK2FjcXVpc2l0aW9uIG9mIGRsX2xvYWRfbG9jayBtdXN0IGhhcHBlbiBiZWZvcmUgbWFsbG9jX2F0Zm9yayBpcyBhY3RpdmUKK3RvIGF2b2lkIGEgZGVhZGxvY2suCitUaGUgcGF0Y2ggaGFzIG5vdCB5ZXQgYmVlbiBpbnRlZ3JhdGVkIHVwc3RyZWFtLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgWyBOb3QgQXV0aG9yIFNlZSBidWd6aWxsYV0KKworU2lnbmVkLW9mZi1ieTogUmFnaHVuYXRoIExvbHVyIDxSYWdodW5hdGguTG9sdXJAa3BpdC5jb20+CitTaWduZWQtb2ZmLWJ5OiBZdWFuamllIEh1YW5nIDx5dWFuamllLmh1YW5nQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBaaGl4aW9uZyBDaGkgPHpoaXhpb25nLmNoaUB3aW5kcml2ZXIuY29tPgorCitJbmRleDogZ2l0L3N5c2RlcHMvbnB0bC9mb3JrLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9zeXNkZXBzL25wdGwvZm9yay5jICAgICAgIDIwMTctMDgtMDMgMTY6MDI6MTUuNjc0NzA0MDgwICswODAwCisrKysgZ2l0L3N5c2RlcHMvbnB0bC9mb3JrLmMgICAgMjAxNy0wOC0wNCAxODoxNTowMi40NjMzNjIwMTUgKzA4MDAKK0BAIC0yNSw2ICsyNSw3IEBACisgI2luY2x1ZGUgPHRscy5oPgorICNpbmNsdWRlIDxocC10aW1pbmcuaD4KKyAjaW5jbHVkZSA8bGRzb2RlZnMuaD4KKysjaW5jbHVkZSA8bGliYy1sb2NrLmg+CisgI2luY2x1ZGUgPHN0ZGlvLWxvY2suaD4KKyAjaW5jbHVkZSA8YXRvbWljLmg+CisgI2luY2x1ZGUgPG5wdGwvcHRocmVhZFAuaD4KK0BAIC02MCw2ICs2MSwxMCBAQAorICAgICAgYnV0IG91ciBjdXJyZW50IGZvcmsgaW1wbGVtZW50YXRpb24gaXMgbm90LiAgKi8KKyAgIGJvb2wgbXVsdGlwbGVfdGhyZWFkcyA9IFRIUkVBRF9HRVRNRU0gKFRIUkVBRF9TRUxGLCBoZWFkZXIubXVsdGlwbGVfdGhyZWFkcyk7CisgCisrICAvKiBncmFiIGxkLnNvIGxvY2sgQkVGT1JFIHN3aXRjaGluZyB0byBtYWxsb2NfYXRmb3JrICovCisrICBfX3J0bGRfbG9ja19sb2NrX3JlY3Vyc2l2ZSAoR0woZGxfbG9hZF9sb2NrKSk7CisrICBfX3J0bGRfbG9ja19sb2NrX3JlY3Vyc2l2ZSAoR0woZGxfbG9hZF93cml0ZV9sb2NrKSk7CisrCisgICAvKiBSdW4gYWxsIHRoZSByZWdpc3RlcmVkIHByZXBhcmF0aW9uIGhhbmRsZXJzLiAgSW4gcmV2ZXJzZSBvcmRlci4KKyAgICAgIFdoaWxlIGRvaW5nIHRoaXMgd2UgYnVpbGQgdXAgYSBsaXN0IG9mIGFsbCB0aGUgZW50cmllcy4gICovCisgICBzdHJ1Y3QgZm9ya19oYW5kbGVyICpydW5wOworQEAgLTI0Nyw2ICsyNTIsMTAgQEAKKyAKKyAJICBhbGxwID0gYWxscC0+bmV4dDsKKyAJfQorKworKyAgICAgIC8qIHVubG9jayBsZC5zbyBsYXN0LCBiZWNhdXNlIHdlIGxvY2tlZCBpdCBmaXJzdCAqLworKyAgICAgIF9fcnRsZF9sb2NrX3VubG9ja19yZWN1cnNpdmUgKEdMKGRsX2xvYWRfd3JpdGVfbG9jaykpOworKyAgICAgIF9fcnRsZF9sb2NrX3VubG9ja19yZWN1cnNpdmUgKEdMKGRsX2xvYWRfbG9jaykpOworICAgICB9CisgCisgICByZXR1cm4gcGlkOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjgtUmV3b3JrLWZuby1vbWl0LWZyYW1lLXBvaW50ZXItc3VwcG9ydC1vbi1pMzg2LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjgtUmV3b3JrLWZuby1vbWl0LWZyYW1lLXBvaW50ZXItc3VwcG9ydC1vbi1pMzg2LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZWQyYjkwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI4LVJld29yay1mbm8tb21pdC1mcmFtZS1wb2ludGVyLXN1cHBvcnQtb24taTM4Ni5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI2OCArMCwwIEBACi1Gcm9tIDFlYTAwM2Q0ZmNjYzQ2NDZmZDE4NDhhMTgyNDA1YTFjNzAwMGFiMTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBZGhlbWVydmFsIFphbmVsbGEgPGFkaGVtZXJ2YWwuemFuZWxsYUBsaW5hcm8ub3JnPgotRGF0ZTogU3VuLCA4IEphbiAyMDE3IDExOjM4OjIzIC0wMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMjgvMjhdIFJld29yayAtZm5vLW9taXQtZnJhbWUtcG9pbnRlciBzdXBwb3J0IG9uIGkzODYKLQotQ29tbWl0IDZiMWRmOGIyN2YgZml4ZWQgdGhlIC1PUyBidWlsZCBpc3N1ZSBvbiBpMzg2IChCWiMyMDcyOSkgYnkKLWV4cGxpY2l0aW5nIGRpc2FibGluZyBmcmFtZSBwb2ludGVyICgtZm9taXQtZnJhbWUtcG9pbnRlcikgb24gdGhlCi1mYXVsdHkgb2JqZWN0cy4gIEFsdGhvdWdoIGl0IGRvZXMgZml4IHRoZSBpc3N1ZSwgaXQgaXMgYSBzdWJwYXIKLXdvcmthcm91bmQgdGhhdCBhZGRzIGNvbXBsZXhpdHkgaW4gYnVpbGQgcHJvY2VzcyAoYSBydWxlIGZvciBlYWNoCi1vYmplY3QgdG8gYWRkIHRoZSByZXF1aXJlZCBjb21waWxlciBvcHRpb24gYW5kIHBvbnRlbnRpYWxseSBtb3JlCi1ydWxlcyBmb3Igb2JqZWN0cyB0aGF0IGNhbGwge0lOTElORSxJTlRFUk5BTH1fU1lTQ0FMTCkgYW5kIGRvZXMgbm90Ci1hbGxvdyB0aGUgaW1wbGVtZW50YXRpb25zIHRvIGdldCBhbGwgdGhlIHBvc3NpYmxlIGRlYnVnL2NhbGx0cmFjawotaW5mb3JtYXRpb24gcG9zc2libGUgKHVzZWQgbWFpbmx5IGluIGRlYnVnZ2VycyBhbmQgcGVyZm9ybWFuY2UKLW1lYXN1cmVtZW50IHRvb2xzKS4KLQotVGhpcyBwYXRjaCBmaXhlcyBpdCBieSBhZGRpbmcgYW4gZXhwbGljaXQgY29uZmlndXJlIGNoZWNrIHRvIHNlZQotaWYgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIgaXMgc2V0IGFuZCB0byBhY3QgYWNjb3JkaW5nbHkgKHNldCBvcgotbm90IE9QVElNSVpFX0ZPUl9HQ0NfNSkuICBUaGUgbWFrZSBydWxlcyBpcyBzaW1wbGlmaWVkIGFuZCBvbmx5Ci1vbmUgaXMgcmVxdWlyZWQ6IHRvIGFkZCBsaWJjLWRvLXN5c2NhbGwgb24gbG9hZGVyIGR1ZSBtbWFwCi0od2hpY2ggd2lsbCBiZSBlbXB0eSBhbnl3YXkgZm9yIGRlZmF1bHQgYnVpbGQgd2l0aAotLWZvbWl0LWZyYW1lLXBvaW50ZXIpLgotCi1DaGVja2VkIG9uIGkzODYtbGludXgtZ251IHdpdGggR0NDIDYuMi4xIHdpdGggQ0ZMQUdTIHNldHMgYXMKLSctT3MnLCAnLU8yIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyJywgYW5kICctTzIgLWZvbWl0LWZyYW1lLXBvaW50ZXInLgotRm9yICctT3MnIHRoZSB0ZXN0c3VpdGUgaXNzdWVzIGRlc2NyaWJlZCBieSBCWiMxOTQ2MyBhbmQgQlojMTUxMDUKLXN0aWxsIGFwcGxpZWQuCi0KLUl0IGZpeGVzIEJaICMyMTAyOSwgYWx0aG91Z2ggaXQgaXMgbWFya2VkIGFzIGR1cGxpY2F0ZWQgb2YgIzIwNzI5Ci0oSSByZW9wZW5lZCB0byB0cmFjayB0aGlzIGNsZWFudXApLgotCi0JW0JaICMyMTAyOV0KLQkqIGNvbmZpZy5oLmluIFtDQU5fVVNFX1JFR0lTVEVSX0FTTV9FQlBdOiBOZXcgZGVmaW5lLgotCSogc3lzZGVwcy91bml4L3N5c3YvbGludXgvaTM4Ni9NYWtlZmlsZQotCVskKHN1YmRpcikgPSBlbGZdIChzeXNkZXAtZGwtcm91dGluZXMpOiBBZGQgbGliYy1kby1zeXNjYWxsLgotCSh1c2VzLTYtc3lzY2FsbC1hcmd1bWVudHMpOiBSZW1vdmUuCi0JWyQoc3ViZGlyKSA9IG1pc2NdIChDRkxBR1MtZXBvbGxfcHdhaXQubyk6IExpa2V3aXNlLgotCVskKHN1YmRpcikgPSBtaXNjXSAoQ0ZMQUdTLWVwb2xsX3B3YWl0Lm9zKTogTGlrZXdpc2UuCi0JWyQoc3ViZGlyKSA9IG1pc2NdIChDRkxBR1MtbW1hcC5vKTogTGlrZXdpc2UuCi0JWyQoc3ViZGlyKSA9IG1pc2NdIChDRkxBR1MtbW1hcC5vcyk6IExpa2V3aXNlLgotCVskKHN1YmRpcikgPSBtaXNjXSAoQ0ZMQUdTLW1tYXA2NC5vKTogTGlrZXdpc2UuCi0JWyQoc3ViZGlyKSA9IG1pc2NdIChDRkxBR1MtbW1hcDY0Lm9zKTogTGlrZXdpc2UuCi0JWyQoc3ViZGlyKSA9IG1pc2NdIChDRkxBR1MtcHNlbGVjdC5vKTogTGlrZXdpc2UuCi0JWyQoc3ViZGlyKSA9IG1pc2NdIChjZmxhZ3MtcHNlbGVjdC5vKTogTGlrZXdpc2UuCi0JWyQoc3ViZGlyKSA9IG1pc2NdIChjZmxhZ3MtcHNlbGVjdC5vcyk6IExpa2V3aXNlLgotCVskKHN1YmRpcikgPSBtaXNjXSAoY2ZsYWdzLXJ0bGQtbW1hcC5vcyk6IExpa2V3aXNlLgotCVskKHN1YmRpcikgPSBzeXN2aXBjXSAoY2ZsYWdzLXNlbXRpbWVkb3Aubyk6IExpa2V3aXNlLgotCVskKHN1YmRpcikgPSBzeXN2aXBjXSAoY2ZsYWdzLXNlbXRpbWVkb3Aub3MpOiBMaWtld2lzZS4KLQlbJChzdWJkaXIpID0gaW9dIChDRkxBR1MtcG9zaXhfZmFkdmlzZTY0Lm8pOiBMaWtld2lzZS4KLQlbJChzdWJkaXIpID0gaW9dIChDRkxBR1MtcG9zaXhfZmFkdmlzZTY0Lm9zKTogTGlrZXdpc2UuCi0JWyQoc3ViZGlyKSA9IGlvXSAoQ0ZMQUdTLXBvc2l4X2ZhbGxvY2F0ZS5vKTogTGlrZXdpc2UuCi0JWyQoc3ViZGlyKSA9IGlvXSAoQ0ZMQUdTLXBvc2l4X2ZhbGxvY2F0ZS5vcyk6IExpa2V3aXNlLgotCVskKHN1YmRpcikgPSBpb10gKENGTEFHUy1wb3NpeF9mYWxsb2NhdGU2NC5vKTogTGlrZXdpc2UuCi0JWyQoc3ViZGlyKSA9IGlvXSAoQ0ZMQUdTLXBvc2l4X2ZhbGxvY2F0ZTY0Lm9zKTogTGlrZXdpc2UuCi0JWyQoc3ViZGlyKSA9IGlvXSAoQ0ZMQUdTLXN5bmNfZmlsZV9yYW5nZS5vKTogTGlrZXdpc2UuCi0JWyQoc3ViZGlyKSA9IGlvXSAoQ0ZMQUdTLXN5bmNfZmlsZV9yYW5nZS5vcyk6IExpa2V3aXNlLgotCVskKHN1YmRpcikgPSBpb10gKENGTEFHUy1mYWxsb2NhdGUubyk6IExpa2V3aXNlLgotCVskKHN1YmRpcikgPSBpb10gKENGTEFHUy1mYWxsb2NhdGUub3MpOiBMaWtld2lzZS4KLQlbJChzdWJkaXIpID0gaW9dIChDRkxBR1MtZmFsbG9jYXRlNjQubyk6IExpa2V3aXNlLgotCVskKHN1YmRpcikgPSBpb10gKENGTEFHUy1mYWxsb2NhdGU2NC5vcyk6IExpa2V3aXNlLgotCVskKHN1YmRpcikgPSBucHRsXSAoQ0ZMQUdTLXB0aHJlYWRfcndsb2NrX3RpbWVkcmRsb2NrLm8pOgotCUxpa2V3aXNlLgotCVskKHN1YmRpcikgPSBucHRsXSAoQ0ZMQUdTLXB0aHJlYWRfcndsb2NrX3RpbWVkcmRsb2NrLm9zKToKLQlMaWtld2lzZS4KLQlbJChzdWJkaXIpID0gbnB0bF0gKENGTEFHUy1wdGhyZWFkX3J3bG9ja190aW1lZHJ3bG9jay5vKToKLQlMaWtld2lzZS4KLQlbJChzdWJkaXIpID0gbnB0bF0gKENGTEFHUy1wdGhyZWFkX3J3bG9ja190aW1lZHJ3bG9jay5vcyk6Ci0JTGlrZXdpc2UuCi0JWyQoc3ViZGlyKSA9IG5wdGxdIChDRkxBR1Mtc2VtX3dhaXQubyk6IExpa2V3aXNlLgotCVskKHN1YmRpcikgPSBucHRsXSAoQ0ZMQUdTLXNlbV93YWl0Lm9zKTogTGlrZXdpc2UuCi0JWyQoc3ViZGlyKSA9IG5wdGxdIChDRkxBR1Mtc2VtX3RpbWVkd2FpdC5vKTogTGlrZXdpc2UuCi0JWyQoc3ViZGlyKSA9IG5wdGxdIChDRkxBR1Mtc2VtX3RpbWVkd2FpdC5vcyk6IExpa2V3aXNlLgotCSogc3lzZGVwcy91bml4L3N5c3YvbGludXgvaTM4Ni9jb25maWd1cmUuYWM6IEFkZCBjaGVjayBpZiBjb21waWxlciBhbGxvd3MKLQllYnAgb24gaW5saW5lIGFzc2VtYmx5LgotCSogc3lzZGVwcy91bml4L3N5c3YvbGludXgvaTM4Ni9jb25maWd1cmU6IFJlZ2VuZXJhdGUuCi0JKiBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9pMzg2L3N5c2RlcC5oIChPUFRJTUlaRV9GT1JfR0NDXzUpOgotCVNldCBpZiBDQU5fVVNFX1JFR0lTVEVSX0FTTV9FQlAgaXMgc2V0LgotCShjaGVja19jb25zaXN0ZW5jeSk6IExpa2V3aXNlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLSAgaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9naXQvP3A9Z2xpYmMuZ2l0O2E9Y29tbWl0ZGlmZjtoPTNiMzNkNmVkNjA5NmMxZDIwZDA1YTY1MGIwNjAyNmQ2NzNmNzM5OWEKLQotU2lnbmVkLW9mZi1ieTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KLS0tLQotIGNvbmZpZy5oLmluICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKysrKwotIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2kzODYvTWFrZWZpbGUgICAgIHwgMzkgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2kzODYvY29uZmlndXJlICAgIHwgMzkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2kzODYvY29uZmlndXJlLmFjIHwgMTcgKysrKysrKysrKysrKysKLSBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9pMzg2L3N5c2RlcC5oICAgICB8ICA2ICsrLS0tCi0gNSBmaWxlcyBjaGFuZ2VkLCA2NCBpbnNlcnRpb25zKCspLCA0MSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZy5oLmluIGIvY29uZmlnLmguaW4KLWluZGV4IDdiZmU5MjMuLmZiMmNjNTEgMTAwNjQ0Ci0tLS0gYS9jb25maWcuaC5pbgotKysrIGIvY29uZmlnLmguaW4KLUBAIC0yNTksNCArMjU5LDggQEAKLSAvKiBCdWlsZCBnbGliYyB3aXRoIHR1bmFibGVzIHN1cHBvcnQuICAqLwotICNkZWZpbmUgSEFWRV9UVU5BQkxFUyAwCi0gCi0rLyogU29tZSBjb21waWxlciBvcHRpb25zIG1heSBub3cgYWxsb3cgdG8gdXNlIGVicCBpbiBfX2FzbV9fICh1c2VkIG1haW5seQotKyAgIGluIGkzODYgNiBhcmd1bWVudCBzeXNjYWxsIGlzc3VlKS4gICovCi0rI2RlZmluZSBDQU5fVVNFX1JFR0lTVEVSX0FTTV9FQlAgMAotKwotICNlbmRpZgotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2kzODYvTWFrZWZpbGUgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9pMzg2L01ha2VmaWxlCi1pbmRleCA5NjA5NzUyLi42YWFjMGRmIDEwMDY0NAotLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvaTM4Ni9NYWtlZmlsZQotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvaTM4Ni9NYWtlZmlsZQotQEAgLTEsNDcgKzEsMTggQEAKLSAjIFRoZSBkZWZhdWx0IEFCSSBpcyAzMi4KLSBkZWZhdWx0LWFiaSA6PSAzMgotIAotLSMgJWVicCBpcyB1c2VkIHRvIHBhc3MgdGhlIDZ0aCBhcmd1bWVudCB0byBzeXN0ZW0gY2FsbHMsIHNvIHRoZXNlCi0tIyBzeXN0ZW0gY2FsbHMgYXJlIGluY29tcGF0aWJsZSB3aXRoIGEgZnJhbWUgcG9pbnRlci4KLS11c2VzLTYtc3lzY2FsbC1hcmd1bWVudHMgPSAtZm9taXQtZnJhbWUtcG9pbnRlcgotLQotIGlmZXEgKCQoc3ViZGlyKSxtaXNjKQotIHN5c2RlcF9yb3V0aW5lcyArPSBpb3Blcm0gaW9wbCB2bTg2Ci0tQ0ZMQUdTLWVwb2xsX3B3YWl0Lm8gKz0gJCh1c2VzLTYtc3lzY2FsbC1hcmd1bWVudHMpCi0tQ0ZMQUdTLWVwb2xsX3B3YWl0Lm9zICs9ICQodXNlcy02LXN5c2NhbGwtYXJndW1lbnRzKQotLUNGTEFHUy1tbWFwLm8gKz0gJCh1c2VzLTYtc3lzY2FsbC1hcmd1bWVudHMpCi0tQ0ZMQUdTLW1tYXAub3MgKz0gJCh1c2VzLTYtc3lzY2FsbC1hcmd1bWVudHMpCi0tQ0ZMQUdTLW1tYXA2NC5vICs9ICQodXNlcy02LXN5c2NhbGwtYXJndW1lbnRzKQotLUNGTEFHUy1tbWFwNjQub3MgKz0gJCh1c2VzLTYtc3lzY2FsbC1hcmd1bWVudHMpCi0tQ0ZMQUdTLXBzZWxlY3QubyArPSAkKHVzZXMtNi1zeXNjYWxsLWFyZ3VtZW50cykKLS1DRkxBR1MtcHNlbGVjdC5vcyArPSAkKHVzZXMtNi1zeXNjYWxsLWFyZ3VtZW50cykKLS1DRkxBR1MtcnRsZC1tbWFwLm9zICs9ICQodXNlcy02LXN5c2NhbGwtYXJndW1lbnRzKQotLWVuZGlmCi0tCi0taWZlcSAoJChzdWJkaXIpLHN5c3ZpcGMpCi0tQ0ZMQUdTLXNlbXRpbWVkb3AubyArPSAkKHVzZXMtNi1zeXNjYWxsLWFyZ3VtZW50cykKLS1DRkxBR1Mtc2VtdGltZWRvcC5vcyArPSAkKHVzZXMtNi1zeXNjYWxsLWFyZ3VtZW50cykKLSBlbmRpZgotIAotIGlmZXEgKCQoc3ViZGlyKSxlbGYpCi0rc3lzZGVwLWRsLXJvdXRpbmVzICs9IGxpYmMtZG8tc3lzY2FsbAotIHN5c2RlcC1vdGhlcnMgKz0gbGRkbGliYzQKLSBpbnN0YWxsLWJpbiArPSBsZGRsaWJjNAotIGVuZGlmCi0gCi0gaWZlcSAoJChzdWJkaXIpLGlvKQotIHN5c2RlcF9yb3V0aW5lcyArPSBsaWJjLWRvLXN5c2NhbGwKLS1DRkxBR1MtcG9zaXhfZmFkdmlzZTY0Lm8gKz0gJCh1c2VzLTYtc3lzY2FsbC1hcmd1bWVudHMpCi0tQ0ZMQUdTLXBvc2l4X2ZhZHZpc2U2NC5vcyArPSAkKHVzZXMtNi1zeXNjYWxsLWFyZ3VtZW50cykKLS1DRkxBR1MtcG9zaXhfZmFsbG9jYXRlLm8gKz0gJCh1c2VzLTYtc3lzY2FsbC1hcmd1bWVudHMpCi0tQ0ZMQUdTLXBvc2l4X2ZhbGxvY2F0ZS5vcyArPSAkKHVzZXMtNi1zeXNjYWxsLWFyZ3VtZW50cykKLS1DRkxBR1MtcG9zaXhfZmFsbG9jYXRlNjQubyArPSAkKHVzZXMtNi1zeXNjYWxsLWFyZ3VtZW50cykKLS1DRkxBR1MtcG9zaXhfZmFsbG9jYXRlNjQub3MgKz0gJCh1c2VzLTYtc3lzY2FsbC1hcmd1bWVudHMpCi0tQ0ZMQUdTLXN5bmNfZmlsZV9yYW5nZS5vICs9ICQodXNlcy02LXN5c2NhbGwtYXJndW1lbnRzKQotLUNGTEFHUy1zeW5jX2ZpbGVfcmFuZ2Uub3MgKz0gJCh1c2VzLTYtc3lzY2FsbC1hcmd1bWVudHMpCi0tQ0ZMQUdTLWZhbGxvY2F0ZS5vICs9ICQodXNlcy02LXN5c2NhbGwtYXJndW1lbnRzKQotLUNGTEFHUy1mYWxsb2NhdGUub3MgKz0gJCh1c2VzLTYtc3lzY2FsbC1hcmd1bWVudHMpCi0tQ0ZMQUdTLWZhbGxvY2F0ZTY0Lm8gKz0gJCh1c2VzLTYtc3lzY2FsbC1hcmd1bWVudHMpCi0tQ0ZMQUdTLWZhbGxvY2F0ZTY0Lm9zICs9ICQodXNlcy02LXN5c2NhbGwtYXJndW1lbnRzKQotIGVuZGlmCi0gCi0gaWZlcSAoJChzdWJkaXIpLG5wdGwpCi1AQCAtNjEsMTQgKzMyLDYgQEAgaWZlcSAoJChzdWJkaXIpLG5wdGwpCi0gIyBwdWxsIGluIF9fc3lzY2FsbF9lcnJvciByb3V0aW5lCi0gbGlicHRocmVhZC1yb3V0aW5lcyArPSBzeXNkZXAKLSBsaWJwdGhyZWFkLXNoYXJlZC1vbmx5LXJvdXRpbmVzICs9IHN5c2RlcAotLUNGTEFHUy1wdGhyZWFkX3J3bG9ja190aW1lZHJkbG9jay5vICs9ICQodXNlcy02LXN5c2NhbGwtYXJndW1lbnRzKQotLUNGTEFHUy1wdGhyZWFkX3J3bG9ja190aW1lZHJkbG9jay5vcyArPSAkKHVzZXMtNi1zeXNjYWxsLWFyZ3VtZW50cykKLS1DRkxBR1MtcHRocmVhZF9yd2xvY2tfdGltZWR3cmxvY2subyArPSAkKHVzZXMtNi1zeXNjYWxsLWFyZ3VtZW50cykKLS1DRkxBR1MtcHRocmVhZF9yd2xvY2tfdGltZWR3cmxvY2sub3MgKz0gJCh1c2VzLTYtc3lzY2FsbC1hcmd1bWVudHMpCi0tQ0ZMQUdTLXNlbV93YWl0Lm8gKz0gJCh1c2VzLTYtc3lzY2FsbC1hcmd1bWVudHMpCi0tQ0ZMQUdTLXNlbV93YWl0Lm9zICs9ICQodXNlcy02LXN5c2NhbGwtYXJndW1lbnRzKQotLUNGTEFHUy1zZW1fdGltZWR3YWl0Lm8gKz0gJCh1c2VzLTYtc3lzY2FsbC1hcmd1bWVudHMpCi0tQ0ZMQUdTLXNlbV90aW1lZHdhaXQub3MgKz0gJCh1c2VzLTYtc3lzY2FsbC1hcmd1bWVudHMpCi0gZW5kaWYKLSAKLSBpZmVxICgkKHN1YmRpcikscnQpCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvaTM4Ni9jb25maWd1cmUgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9pMzg2L2NvbmZpZ3VyZQotaW5kZXggZWI3MjY1OS4uYWUyYzM1NiAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2kzODYvY29uZmlndXJlCi0rKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9pMzg2L2NvbmZpZ3VyZQotQEAgLTMsNSArMyw0NCBAQAotIAotIGFyY2hfbWluaW11bV9rZXJuZWw9Mi42LjMyCi0gCi0rIyBDaGVjayBpZiBDRkxBR1MgYWxsb3dzIGNvbXBpbGVyIHRvIHVzZSBlYnAgcmVnaXN0ZXIgaW4gaW5saW5lIGFzc2VtYmx5LgotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgY29tcGlsZXIgZmxhZ3MgYWxsb3dzIGVicCBpbiBpbmxpbmUgYXNzZW1ibHkiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGlmIGNvbXBpbGVyIGZsYWdzIGFsbG93cyBlYnAgaW4gaW5saW5lIGFzc2VtYmx5Li4uICIgPiY2OyB9Ci0raWYgJHtsaWJjX2N2X2Nhbl91c2VfcmVnaXN0ZXJfYXNtX2VicCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsKLStjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rLyogZW5kIGNvbmZkZWZzLmguICAqLwotKwotKyAgICB2b2lkIGZvbyAoaW50IGkpCi0rICAgIHsKLSsgICAgICByZWdpc3RlciBpbnQgcmVnIGFzbSAoImVicCIpID0gaTsKLSsgICAgICBhc20gKCIjICUwIiA6IDogInIiIChyZWcpKTsKLSsgICAgfQotK2ludAotK21haW4gKCkKLSt7Ci0rCi0rICA7Ci0rICByZXR1cm4gMDsKLSt9Ci0rX0FDRU9GCi0raWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotKyAgbGliY19jdl9jYW5fdXNlX3JlZ2lzdGVyX2FzbV9lYnA9eWVzCi0rZWxzZQotKyAgbGliY19jdl9jYW5fdXNlX3JlZ2lzdGVyX2FzbV9lYnA9bm8KLStmaQotK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotKwotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsaWJjX2N2X2Nhbl91c2VfcmVnaXN0ZXJfYXNtX2VicCIgPiY1Ci0rJGFzX2VjaG8gIiRsaWJjX2N2X2Nhbl91c2VfcmVnaXN0ZXJfYXNtX2VicCIgPiY2OyB9Ci0raWYgdGVzdCAkbGliY19jdl9jYW5fdXNlX3JlZ2lzdGVyX2FzbV9lYnAgPSB5ZXM7IHRoZW4KLSsgICRhc19lY2hvICIjZGVmaW5lIENBTl9VU0VfUkVHSVNURVJfQVNNX0VCUCAxIiA+PmNvbmZkZWZzLmgKLSsKLStmaQotKwotIGxpYmNfY3ZfZ2NjX3Vud2luZF9maW5kX2ZkZT15ZXMKLSBsZGRfcmV3cml0ZV9zY3JpcHQ9c3lzZGVwcy91bml4L3N5c3YvbGludXgvbGRkLXJld3JpdGUuc2VkCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvaTM4Ni9jb25maWd1cmUuYWMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9pMzg2L2NvbmZpZ3VyZS5hYwotaW5kZXggMWExMWRhNi4uMWNkNjMyZSAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2kzODYvY29uZmlndXJlLmFjCi0rKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9pMzg2L2NvbmZpZ3VyZS5hYwotQEAgLTMsNSArMywyMiBAQCBHTElCQ19QUk9WSURFUyBkbmwgU2VlIGFjbG9jYWwubTQgaW4gdGhlIHRvcCBsZXZlbCBzb3VyY2UgZGlyZWN0b3J5LgotIAotIGFyY2hfbWluaW11bV9rZXJuZWw9Mi42LjMyCi0gCi0rIyBDaGVjayBpZiBDRkxBR1MgYWxsb3dzIGNvbXBpbGVyIHRvIHVzZSBlYnAgcmVnaXN0ZXIgaW4gaW5saW5lIGFzc2VtYmx5LgotK0FDX0NBQ0hFX0NIRUNLKFtpZiBjb21waWxlciBmbGFncyBhbGxvd3MgZWJwIGluIGlubGluZSBhc3NlbWJseV0sCi0rICAgICAgICAgICAgICAgIGxpYmNfY3ZfY2FuX3VzZV9yZWdpc3Rlcl9hc21fZWJwLCBbCi0rQUNfQ09NUElMRV9JRkVMU0UoCi0rICBbQUNfTEFOR19QUk9HUkFNKFsKLSsgICAgdm9pZCBmb28gKGludCBpKQotKyAgICB7Ci0rICAgICAgcmVnaXN0ZXIgaW50IHJlZyBhc20gKCJlYnAiKSA9IGk7Ci0rICAgICAgYXNtICgiIyAlMCIgOiA6ICJyIiAocmVnKSk7Ci0rICAgIH1dKV0sCi0rICBbbGliY19jdl9jYW5fdXNlX3JlZ2lzdGVyX2FzbV9lYnA9eWVzXSwKLSsgIFtsaWJjX2N2X2Nhbl91c2VfcmVnaXN0ZXJfYXNtX2VicD1ub10pCi0rXSkKLStpZiB0ZXN0ICRsaWJjX2N2X2Nhbl91c2VfcmVnaXN0ZXJfYXNtX2VicCA9IHllczsgdGhlbgotKyAgQUNfREVGSU5FKENBTl9VU0VfUkVHSVNURVJfQVNNX0VCUCkKLStmaQotKwotIGxpYmNfY3ZfZ2NjX3Vud2luZF9maW5kX2ZkZT15ZXMKLSBsZGRfcmV3cml0ZV9zY3JpcHQ9c3lzZGVwcy91bml4L3N5c3YvbGludXgvbGRkLXJld3JpdGUuc2VkCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvaTM4Ni9zeXNkZXAuaCBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2kzODYvc3lzZGVwLmgKLWluZGV4IGJhZjQ2NDIuLjQ0OWIyM2UgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9pMzg2L3N5c2RlcC5oCi0rKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9pMzg2L3N5c2RlcC5oCi1AQCAtNDQsOSArNDQsOSBAQAotIC8qIFNpbmNlIEdDQyA1IGFuZCBhYm92ZSBjYW4gcHJvcGVybHkgc3BpbGwgJWVieCB3aXRoIFBJQyB3aGVuIG5lZWRlZCwKLSAgICB3ZSBjYW4gaW5saW5lIHN5c2NhbGxzIHdpdGggNiBhcmd1bWVudHMgaWYgR0NDIDUgb3IgYWJvdmUgaXMgdXNlZAotICAgIHRvIGNvbXBpbGUgZ2xpYmMuICBEaXNhYmxlIEdDQyA1IG9wdGltaXphdGlvbiB3aGVuIGNvbXBpbGluZyBmb3IKLS0gICBwcm9maWxpbmcgc2luY2UgYXNtICgiZWJwIikgY2FuJ3QgYmUgdXNlZCB0byBwdXQgdGhlIDZ0aCBhcmd1bWVudAotLSAgIGluICVlYnAgZm9yIHN5c2NhbGwuICAqLwotLSNpZiBfX0dOVUNfUFJFUkVRICg1LDApICYmICFkZWZpbmVkIFBST0YKLSsgICBwcm9maWxpbmcgb3Igd2hlbiAtZm5vLW9taXQtZnJhbWUtcG9pbnRlciBpcyB1c2VkIHNpbmNlIGFzbSAoImVicCIpCi0rICAgY2FuJ3QgYmUgdXNlZCB0byBwdXQgdGhlIDZ0aCBhcmd1bWVudCBpbiAlZWJwIGZvciBzeXNjYWxsLiAgKi8KLSsjaWYgX19HTlVDX1BSRVJFUSAoNSwwKSAmJiAhZGVmaW5lZCBQUk9GICYmIENBTl9VU0VfUkVHSVNURVJfQVNNX0VCUAotICMgZGVmaW5lIE9QVElNSVpFX0ZPUl9HQ0NfNQotICNlbmRpZgotIAotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyOS1hc3NlcnQtU3VwcG9ydC10eXBlcy13aXRob3V0LW9wZXJhdG9yLWludC1CWi0yMTk3Mi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI5LWFzc2VydC1TdXBwb3J0LXR5cGVzLXdpdGhvdXQtb3BlcmF0b3ItaW50LUJaLTIxOTcyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjNzA1MGYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyOS1hc3NlcnQtU3VwcG9ydC10eXBlcy13aXRob3V0LW9wZXJhdG9yLWludC1CWi0yMTk3Mi5wYXRjaApAQCAtMCwwICsxLDE5NCBAQAorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCisqIGZpeGVzICJsYW1iZGEtZXhwcmVzc2lvbiBpbiB1bmV2YWx1YXRlZCBjb250ZXh0IiBjb21waWxlIGZhaWx1cmVzIHN1Y2ggYXMKKyAgaHR0cHM6Ly9naXRodWIuY29tL25sb2htYW5uL2pzb24vaXNzdWVzLzcwNQorCisqIGZpeGVzICJubyBtYXRjaCBmb3IgJ29wZXJhdG9yPT0iIGNvbXBpbGUgZmFpbHVyZXMgc3VjaCBhcworICBodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTE0ODI5OTAKKworKiBDaGFuZ2Vsb2cgZWRpdCB3YXMgcmVtb3ZlZCBmcm9tIHVwc3RyZWFtIGNvbW1pdCBiZWNhdXNlIGl0IGNhdXNlZCBjb25mbGljdAorCitTaWduZWQtb2ZmLWJ5OiBTLiBMb2Nrd29vZC1DaGlsZHMgPHNqbEB2Y3RsYWJzLmNvbT4KKworRnJvbSBiNTg4OWQyNWU5YmY5NDRhODlmZGQ3YmNhYmYzYjZjNmY2YmI2ZjdjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRmxvcmlhbiBXZWltZXIgPGZ3ZWltZXJAcmVkaGF0LmNvbT4KK0RhdGU6IE1vbiwgMjEgQXVnIDIwMTcgMTM6MDM6MjkgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gYXNzZXJ0OiBTdXBwb3J0IHR5cGVzIHdpdGhvdXQgb3BlcmF0b3I9PSAoaW50KSBbQlogIzIxOTcyXQorCistLS0KKyBhc3NlcnQvTWFrZWZpbGUgICAgICAgICAgfCAxMSArKysrKystCisgYXNzZXJ0L2Fzc2VydC5oICAgICAgICAgIHwgMTYgKysrKysrLS0tLQorIGFzc2VydC90c3QtYXNzZXJ0LWMrKy5jYyB8IDc4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIGFzc2VydC90c3QtYXNzZXJ0LWcrKy5jYyB8IDE5ICsrKysrKysrKysrKworIDQgZmlsZXMgY2hhbmdlZCwgMTI4IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGFzc2VydC90c3QtYXNzZXJ0LWMrKy5jYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBhc3NlcnQvdHN0LWFzc2VydC1nKysuY2MKKworZGlmZiAtLWdpdCBhL2Fzc2VydC9NYWtlZmlsZSBiL2Fzc2VydC9NYWtlZmlsZQoraW5kZXggMWMzYmU5Yi4uOWVjMWJlOCAxMDA2NDQKKy0tLSBhL2Fzc2VydC9NYWtlZmlsZQorKysrIGIvYXNzZXJ0L01ha2VmaWxlCitAQCAtMjUsNiArMjUsMTUgQEAgaW5jbHVkZSAuLi9NYWtlY29uZmlnCisgaGVhZGVycwk6PSBhc3NlcnQuaAorIAorIHJvdXRpbmVzIDo9IGFzc2VydCBhc3NlcnQtcGVyciBfX2Fzc2VydAorLXRlc3RzIDo9IHRlc3QtYXNzZXJ0IHRlc3QtYXNzZXJ0LXBlcnIKKyt0ZXN0cyA6PSB0ZXN0LWFzc2VydCB0ZXN0LWFzc2VydC1wZXJyIHRzdC1hc3NlcnQtYysrIHRzdC1hc3NlcnQtZysrCisgCisgaW5jbHVkZSAuLi9SdWxlcworKworK2lmZXEgKCQoaGF2ZS1jeHgtdGhyZWFkX2xvY2FsKSx5ZXMpCisrQ0ZMQUdTLXRzdC1hc3NlcnQtYysrLm8gPSAtc3RkPWMrKzExCisrTERMSUJTLXRzdC1hc3NlcnQtYysrID0gLWxzdGRjKysKKytDRkxBR1MtdHN0LWFzc2VydC1nKysubyA9IC1zdGQ9Z251KysxMQorK0xETElCUy10c3QtYXNzZXJ0LWcrKyA9IC1sc3RkYysrCisrZWxzZQorK3Rlc3RzLXVuc3VwcG9ydGVkICs9IHRzdC1hc3NlcnQtYysrIHRzdC1hc3NlcnQtZysrCisrZW5kaWYKK2RpZmYgLS1naXQgYS9hc3NlcnQvYXNzZXJ0LmggYi9hc3NlcnQvYXNzZXJ0LmgKK2luZGV4IDY4MDFjZmUuLjY0MGM5NWMgMTAwNjQ0CistLS0gYS9hc3NlcnQvYXNzZXJ0LmgKKysrKyBiL2Fzc2VydC9hc3NlcnQuaAorQEAgLTg1LDcgKzg1LDEyIEBAIF9fRU5EX0RFQ0xTCisgLyogV2hlbiBwb3NzaWJsZSwgZGVmaW5lIGFzc2VydCBzbyB0aGF0IGl0IGRvZXMgbm90IGFkZCBleHRyYQorICAgIHBhcmVudGhlc2VzIGFyb3VuZCBFWFBSLiAgT3RoZXJ3aXNlLCB0aG9zZSBhZGRlZCBwYXJlbnRoZXNlcyB3b3VsZAorICAgIHN1cHByZXNzIHdhcm5pbmdzIHdlJ2QgZXhwZWN0IHRvIGJlIGRldGVjdGVkIGJ5IGdjYydzIC1XcGFyZW50aGVzZXMuICAqLworLSMgaWYgIWRlZmluZWQgX19HTlVDX18gfHwgZGVmaW5lZCBfX1NUUklDVF9BTlNJX18KKysjIGlmIGRlZmluZWQgX19jcGx1c3BsdXMKKysjICBkZWZpbmUgYXNzZXJ0KGV4cHIpCQkJCQkJCVwKKysgICAgIChzdGF0aWNfY2FzdCA8Ym9vbD4gKGV4cHIpCQkJCQkJXAorKyAgICAgID8gdm9pZCAoMCkJCQkJCQkJXAorKyAgICAgIDogX19hc3NlcnRfZmFpbCAoI2V4cHIsIF9fRklMRV9fLCBfX0xJTkVfXywgX19BU1NFUlRfRlVOQ1RJT04pKQorKyMgZWxpZiAhZGVmaW5lZCBfX0dOVUNfXyB8fCBkZWZpbmVkIF9fU1RSSUNUX0FOU0lfXworICMgIGRlZmluZSBhc3NlcnQoZXhwcikJCQkJCQkJXAorICAgICAoKGV4cHIpCQkJCQkJCQlcCisgICAgICA/IF9fQVNTRVJUX1ZPSURfQ0FTVCAoMCkJCQkJCQlcCitAQCAtOTMsMTIgKzk4LDExIEBAIF9fRU5EX0RFQ0xTCisgIyBlbHNlCisgLyogVGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgRVhQUiBpcyBub3QgZXZhbHVhdGVkIGR1ZSB0byB0aGUgc2l6ZW9mLAorICAgIGJ1dCB3aWxsIHRyaWdnZXIgYW55IHBlZGFudGljIHdhcm5pbmdzIG1hc2tlZCBieSB0aGUgX19leHRlbnNpb25fXworLSAgIGZvciB0aGUgc2Vjb25kIG9jY3VycmVuY2UuICBUaGUgZXhwbGljaXQgY29tcGFyaXNvbiBhZ2FpbnN0IHplcm8gaXMKKy0gICByZXF1aXJlZCB0byBzdXBwb3J0IGZ1bmN0aW9uIHBvaW50ZXJzIGFuZCBiaXQgZmllbGRzIGluIHRoaXMKKy0gICBjb250ZXh0LCBhbmQgdG8gc3VwcHJlc3MgdGhlIGV2YWx1YXRpb24gb2YgdmFyaWFibGUgbGVuZ3RoCistICAgYXJyYXlzLiAgKi8KKysgICBmb3IgdGhlIHNlY29uZCBvY2N1cnJlbmNlLiAgVGhlIHRlcm5hcnkgb3BlcmF0b3IgaXMgcmVxdWlyZWQgdG8KKysgICBzdXBwb3J0IGZ1bmN0aW9uIHBvaW50ZXJzIGFuZCBiaXQgZmllbGRzIGluIHRoaXMgY29udGV4dCwgYW5kIHRvCisrICAgc3VwcHJlc3MgdGhlIGV2YWx1YXRpb24gb2YgdmFyaWFibGUgbGVuZ3RoIGFycmF5cy4gICovCisgIyAgZGVmaW5lIGFzc2VydChleHByKQkJCQkJCQlcCistICAoKHZvaWQpIHNpemVvZiAoKGV4cHIpID09IDApLCBfX2V4dGVuc2lvbl9fICh7CQkJXAorKyAgKCh2b2lkKSBzaXplb2YgKChleHByKSA/IDEgOiAwKSwgX19leHRlbnNpb25fXyAoewkJCVwKKyAgICAgICBpZiAoZXhwcikJCQkJCQkJCVwKKyAgICAgICAgIDsgLyogZW1wdHkgKi8JCQkJCQkJXAorICAgICAgIGVsc2UJCQkJCQkJCVwKK2RpZmYgLS1naXQgYS9hc3NlcnQvdHN0LWFzc2VydC1jKysuY2MgYi9hc3NlcnQvdHN0LWFzc2VydC1jKysuY2MKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi4xMmE1ZTY5CistLS0gL2Rldi9udWxsCisrKysgYi9hc3NlcnQvdHN0LWFzc2VydC1jKysuY2MKK0BAIC0wLDAgKzEsNzggQEAKKysvKiBUZXN0cyBmb3IgaW50ZXJhY3Rpb25zIGJldHdlZW4gQysrIGFuZCBhc3NlcnQuCisrICAgQ29weXJpZ2h0IChDKSAyMDE3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorKyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKysgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKysgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgc2VlCisrICAgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKysjaW5jbHVkZSA8YXNzZXJ0Lmg+CisrCisrLyogVGhlIEMrKyBzdGFuZGFyZCByZXF1aXJlcyB0aGF0IGlmIHRoZSBhc3NlcnQgYXJndW1lbnQgaXMgYSBjb25zdGFudAorKyAgIHN1YmV4cHJlc3Npb24sIHRoZW4gdGhlIGFzc2VydCBpdHNlbGYgaXMgb25lLCB0b28uICAqLworK2NvbnN0ZXhwciBpbnQKKytjaGVja19jb25zdGV4cHIgKCkKKyt7CisrICByZXR1cm4gKGFzc2VydCAodHJ1ZSksIDEpOworK30KKysKKysvKiBPYmplY3RzIG9mIHRoaXMgY2xhc3MgY2FuIGJlIGNvbnRleHR1YWxseSBjb252ZXJ0ZWQgdG8gYm9vbCwgYnV0CisrICAgY2Fubm90IGJlIGNvbXBhcmVkIHRvIGludC4gICovCisrc3RydWN0IG5vX2ludAorK3sKKysgIG5vX2ludCAoKSA9IGRlZmF1bHQ7CisrICBub19pbnQgKGNvbnN0IG5vX2ludCAmKSA9IGRlbGV0ZTsKKysKKysgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2wgKCkgY29uc3QKKysgIHsKKysgICAgcmV0dXJuIHRydWU7CisrICB9CisrCisrICBib29sIG9wZXJhdG9yISAoKSBjb25zdDsgLyogTm8gZGVmaW5pdGlvbi4gICovCisrICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gYm9vbCBvcGVyYXRvcj09IChUKSBjb25zdDsgLyogTm8gZGVmaW5pdGlvbi4gICovCisrICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gYm9vbCBvcGVyYXRvciE9IChUKSBjb25zdDsgLyogTm8gZGVmaW5pdGlvbi4gICovCisrfTsKKysKKysvKiBUaGlzIGNsYXNzIHRlc3RzIHRoYXQgb3BlcmF0b3I9PSBpcyBub3QgdXNlZCBieSBhc3NlcnQuICAqLworK3N0cnVjdCBib29sX2FuZF9pbnQKKyt7CisrICBib29sX2FuZF9pbnQgKCkgPSBkZWZhdWx0OworKyAgYm9vbF9hbmRfaW50IChjb25zdCBub19pbnQgJikgPSBkZWxldGU7CisrCisrICBleHBsaWNpdCBvcGVyYXRvciBib29sICgpIGNvbnN0CisrICB7CisrICAgIHJldHVybiB0cnVlOworKyAgfQorKworKyAgYm9vbCBvcGVyYXRvciEgKCkgY29uc3Q7IC8qIE5vIGRlZmluaXRpb24uICAqLworKyAgdGVtcGxhdGUgPGNsYXNzIFQ+IGJvb2wgb3BlcmF0b3I9PSAoVCkgY29uc3Q7IC8qIE5vIGRlZmluaXRpb24uICAqLworKyAgdGVtcGxhdGUgPGNsYXNzIFQ+IGJvb2wgb3BlcmF0b3IhPSAoVCkgY29uc3Q7IC8qIE5vIGRlZmluaXRpb24uICAqLworK307CisrCisrc3RhdGljIGludAorK2RvX3Rlc3QgKCkKKyt7CisrICB7CisrICAgIG5vX2ludCB2YWx1ZTsKKysgICAgYXNzZXJ0ICh2YWx1ZSk7CisrICB9CisrCisrICB7CisrICAgIGJvb2xfYW5kX2ludCB2YWx1ZTsKKysgICAgYXNzZXJ0ICh2YWx1ZSk7CisrICB9CisrCisrICByZXR1cm4gMDsKKyt9CisrCisrI2luY2x1ZGUgPHN1cHBvcnQvdGVzdC1kcml2ZXIuYz4KK2RpZmYgLS1naXQgYS9hc3NlcnQvdHN0LWFzc2VydC1nKysuY2MgYi9hc3NlcnQvdHN0LWFzc2VydC1nKysuY2MKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi44YzA2NDAyCistLS0gL2Rldi9udWxsCisrKysgYi9hc3NlcnQvdHN0LWFzc2VydC1nKysuY2MKK0BAIC0wLDAgKzEsMTkgQEAKKysvKiBUZXN0cyBmb3IgaW50ZXJhY3Rpb25zIGJldHdlZW4gQysrIGFuZCBhc3NlcnQuICBHTlUgQysrMTEgdmVyc2lvbi4KKysgICBDb3B5cmlnaHQgKEMpIDIwMTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCisrCisrICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCBzZWUKKysgICA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworKworKyNpbmNsdWRlIDx0c3QtYXNzZXJ0LWMrKy5jYz4KKy0tIAorMS45LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjL0NWRS0yMDE3LTE1NjcwLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjL0NWRS0yMDE3LTE1NjcwLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlMDUwYTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvQ1ZFLTIwMTctMTU2NzAucGF0Y2gKQEAgLTAsMCArMSw2MSBAQAorRnJvbSBhNzYzNzZkZjdjMDdlNTc3YTk1MTVjM2ZhYTVkYmQ1MGJkYTVkYTA3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGF1bCBFZ2dlcnQgPGVnZ2VydEBjcy51Y2xhLmVkdT4KK0RhdGU6IEZyaSwgMjAgT2N0IDIwMTcgMTg6NDE6MTQgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gQ1ZFLTIwMTctMTU2NzA6IGdsb2I6IEZpeCBvbmUtYnl0ZSBvdmVyZmxvdyBbQlogIzIyMzIwXQorCisoY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCBjMzY5ZDY2ZTU0MjZhMzBlNDcyNWIxMDBkNWNkMjhlMzcyNzU0ZjkwKQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitDVkU6IENWRS0yMDE3LTE1NjcwCitBZmZlY3RzOiBnbGliYyA8IDIuMjcKK1NpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgorCistLS0KKyBDaGFuZ2VMb2cgICAgfCA2ICsrKysrKworIE5FV1MgICAgICAgICB8IDUgKysrKysKKyBwb3NpeC9nbG9iLmMgfCAyICstCisgMyBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK0luZGV4OiBnaXQvTkVXUworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL05FV1MKKysrKyBnaXQvTkVXUworQEAgLTIwNiw2ICsyMDYsMTEgQEAgU2VjdXJpdHkgcmVsYXRlZCBjaGFuZ2VzOgorICogQSB1c2UtYWZ0ZXItZnJlZSB2dWxuZXJhYmlsaXR5IGluIGNsbnR1ZHBfY2FsbCBpbiB0aGUgU3VuIFJQQyBzeXN0ZW0gaGFzIGJlZW4KKyAgIGZpeGVkIChDVkUtMjAxNy0xMjEzMykuCisgCisrICBDVkUtMjAxNy0xNTY3MDogVGhlIGdsb2IgZnVuY3Rpb24sIHdoZW4gaW52b2tlZCB3aXRoIEdMT0JfVElMREUsCisrICBzdWZmZXJlZCBmcm9tIGEgb25lLWJ5dGUgb3ZlcmZsb3cgZHVyaW5nIH4gb3BlcmF0b3IgcHJvY2Vzc2luZyAoZWl0aGVyCisrICBvbiB0aGUgc3RhY2sgb3IgdGhlIGhlYXAsIGRlcGVuZGluZyBvbiB0aGUgbGVuZ3RoIG9mIHRoZSB1c2VyIG5hbWUpLgorKyAgUmVwb3J0ZWQgYnkgVGltIFLDvGhzZW4uCisrCisgVGhlIGZvbGxvd2luZyBidWdzIGFyZSByZXNvbHZlZCB3aXRoIHRoaXMgcmVsZWFzZToKKyAKKyAgIFs5ODRdIG5ldHdvcms6IFJlc3BvbmQgdG8gY2hhbmdlZCByZXNvbHYuY29uZiBpbiBnZXRob3N0YnluYW1lCitJbmRleDogZ2l0L3Bvc2l4L2dsb2IuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3Bvc2l4L2dsb2IuYworKysrIGdpdC9wb3NpeC9nbG9iLmMKK0BAIC04NDMsNyArODQzLDcgQEAgZ2xvYiAoY29uc3QgY2hhciAqcGF0dGVybiwgaW50IGZsYWdzLCBpbgorIAkJICAqcCA9ICdcMCc7CisgCQl9CisgCSAgICAgIGVsc2UKKy0JCSooKGNoYXIgKikgbWVtcGNweSAobmV3cCwgZGlybmFtZSArIDEsIGVuZF9uYW1lIC0gZGlybmFtZSkpCisrCQkqKChjaGFyICopIG1lbXBjcHkgKG5ld3AsIGRpcm5hbWUgKyAxLCBlbmRfbmFtZSAtIGRpcm5hbWUgLSAxKSkKKyAJCSAgPSAnXDAnOworIAkgICAgICB1c2VyX25hbWUgPSBuZXdwOworIAkgICAgfQorSW5kZXg6IGdpdC9DaGFuZ2VMb2cKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9DaGFuZ2VMb2cKKysrKyBnaXQvQ2hhbmdlTG9nCitAQCAtMSwzICsxLDkgQEAKKysyMDE3LTEwLTIwICBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1PgorKworKyAgICAgICBbQlogIzIyMzIwXQorKyAgICAgICBDVkUtMjAxNy0xNTY3MAorKyAgICAgICAqIHBvc2l4L2dsb2IuYyAoX19nbG9iKTogRml4IG9uZS1ieXRlIG92ZXJmbG93LgorKworIDIwMTctMDgtMDIgIFNpZGRoZXNoIFBveWFyZWthciAgPHNpZGRoZXNoQHNvdXJjZXdhcmUub3JnPgorIAorIAkqIHZlcnNpb24uaCAoUkVMRUFTRSk6IFNldCB0byAic3RhYmxlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjL0NWRS0yMDE3LTE1NjcxLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjL0NWRS0yMDE3LTE1NjcxLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1NjkyODIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvQ1ZFLTIwMTctMTU2NzEucGF0Y2gKQEAgLTAsMCArMSw2NiBAQAorRnJvbSBmMWNmOThiNTgzNzg3Y2ZiNjI3OGJhZWE0NmUyODZhMGVlNzU2N2ZkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGF1bCBFZ2dlcnQgPGVnZ2VydEBjcy51Y2xhLmVkdT4KK0RhdGU6IFN1biwgMjIgT2N0IDIwMTcgMTA6MDA6NTcgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gZ2xvYjogRml4IGJ1ZmZlciBvdmVyZmxvdyBkdXJpbmcgR0xPQl9USUxERSB1bmVzY2FwaW5nIFtCWgorICMyMjMzMl0KKworKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgYTE1OWI1M2ZhMDU5OTQ3Y2MyNTQ4ZTNiMGQ1YmRjZjdiOTYzMGJhOCkKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorQ1ZFOiBDVkUtMjAxNy0xNTY3MQorU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+CisKKy0tLQorIENoYW5nZUxvZyAgICB8IDYgKysrKysrCisgTkVXUyAgICAgICAgIHwgNCArKysrCisgcG9zaXgvZ2xvYi5jIHwgNCArKy0tCisgMyBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitJbmRleDogZ2l0L05FV1MKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9ORVdTCisrKysgZ2l0L05FV1MKK0BAIC0yMTEsNiArMjExLDEwIEBAIFNlY3VyaXR5IHJlbGF0ZWQgY2hhbmdlczoKKyAgIG9uIHRoZSBzdGFjayBvciB0aGUgaGVhcCwgZGVwZW5kaW5nIG9uIHRoZSBsZW5ndGggb2YgdGhlIHVzZXIgbmFtZSkuCisgICBSZXBvcnRlZCBieSBUaW0gUsO8aHNlbi4KKyAKKysgIFRoZSBnbG9iIGZ1bmN0aW9uLCB3aGVuIGludm9rZWQgd2l0aCBHTE9CX1RJTERFIGFuZCB3aXRob3V0CisrICBHTE9CX05PRVNDQVBFLCBjb3VsZCB3cml0ZSBwYXN0IHRoZSBlbmQgb2YgYSBidWZmZXIgd2hpbGUKKysgIHVuZXNjYXBpbmcgdXNlciBuYW1lcy4gIFJlcG9ydGVkIGJ5IFRpbSBSw7xoc2VuLgorKworIFRoZSBmb2xsb3dpbmcgYnVncyBhcmUgcmVzb2x2ZWQgd2l0aCB0aGlzIHJlbGVhc2U6CisgCisgICBbOTg0XSBuZXR3b3JrOiBSZXNwb25kIHRvIGNoYW5nZWQgcmVzb2x2LmNvbmYgaW4gZ2V0aG9zdGJ5bmFtZQorSW5kZXg6IGdpdC9wb3NpeC9nbG9iLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9wb3NpeC9nbG9iLmMKKysrKyBnaXQvcG9zaXgvZ2xvYi5jCitAQCAtODIzLDExICs4MjMsMTEgQEAgZ2xvYiAoY29uc3QgY2hhciAqcGF0dGVybiwgaW50IGZsYWdzLCBpbgorIAkJICBjaGFyICpwID0gbWVtcGNweSAobmV3cCwgZGlybmFtZSArIDEsCisgCQkJCSAgICAgdW5lc2NhcGUgLSBkaXJuYW1lIC0gMSk7CisgCQkgIGNoYXIgKnEgPSB1bmVzY2FwZTsKKy0JCSAgd2hpbGUgKCpxICE9ICdcMCcpCisrCQkgIHdoaWxlIChxICE9IGVuZF9uYW1lKQorIAkJICAgIHsKKyAJCSAgICAgIGlmICgqcSA9PSAnXFwnKQorIAkJCXsKKy0JCQkgIGlmIChxWzFdID09ICdcMCcpCisrCQkJICBpZiAocSArIDEgPT0gZW5kX25hbWUpCisgCQkJICAgIHsKKyAJCQkgICAgICAvKiAifmZvXFxvXFwiIHVuZXNjYXBlIHRvIHVzZXJfbmFtZSAiZm9vXFwiLAorIAkJCQkgYnV0ICJ+Zm9cXG9cXC8iIHVuZXNjYXBlIHRvIHVzZXJfbmFtZQorSW5kZXg6IGdpdC9DaGFuZ2VMb2cKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9DaGFuZ2VMb2cKKysrKyBnaXQvQ2hhbmdlTG9nCitAQCAtMSw1ICsxLDEwIEBACisrCisgMjAxNy0xMC0yMCAgUGF1bCBFZ2dlcnQgPGVnZ2VydEBjcy51Y2xhLmVkdT4KKyAKKysgICAgICAgW0JaICMyMjMzMl0KKysgICAgICAgKiBwb3NpeC9nbG9iLmMgKF9fZ2xvYik6IEZpeCBidWZmZXIgb3ZlcmZsb3cgZHVyaW5nIEdMT0JfVElMREUKKysgICAgICAgdW5lc2NhcGluZy4KKysKKyAgICAgICAgW0JaICMyMjMyMF0KKyAgICAgICAgQ1ZFLTIwMTctMTU2NzAKKyAgICAgICAgKiBwb3NpeC9nbG9iLmMgKF9fZ2xvYik6IEZpeCBvbmUtYnl0ZSBvdmVyZmxvdy4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy9DVkUtMjAxNy0xNjk5Ny5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy9DVkUtMjAxNy0xNjk5Ny5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zODczMWU0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjL0NWRS0yMDE3LTE2OTk3LnBhdGNoCkBAIC0wLDAgKzEsMTUwIEBACitGcm9tIDRlYmQwYzQxOTFjNjA3M2NjOGE3YzVmZGNmMWQxODJjNDcxOWJjYmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBdXJlbGllbiBKYXJubyA8YXVyZWxpZW5AYXVyZWwzMi5uZXQ+CitEYXRlOiBTYXQsIDMwIERlYyAyMDE3IDEwOjU0OjIzICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGVsZjogQ2hlY2sgZm9yIGVtcHR5IHRva2VucyBiZWZvcmUgZHluYW1pYyBzdHJpbmcgdG9rZW4KKyBleHBhbnNpb24gW0JaICMyMjYyNV0KKworVGhlIGZpbGxpbl9ycGF0aCBmdW5jdGlvbiBpbiBlbGYvZGwtbG9hZC5jIGxvb3BzIG92ZXIgZWFjaCBSUEFUSCBvcgorUlVOUEFUSCB0b2tlbnMgYW5kIGludGVycHJldHMgZW1wdHkgdG9rZW5zIGFzIHRoZSBjdXJyZW50IGRpcmVjdG9yeQorKCIuLyIpLiBJbiBwcmFjdGljZSB0aGUgY2hlY2sgZm9yIGVtcHR5IHRva2VuIGlzIGRvbmUgKmFmdGVyKiB0aGUKK2R5bmFtaWMgc3RyaW5nIHRva2VuIGV4cGFuc2lvbi4gVGhlIGV4cGFuc2lvbiBwcm9jZXNzIGNhbiByZXR1cm4gYW4KK2VtcHR5IHN0cmluZyBmb3IgdGhlICRPUklHSU4gdG9rZW4gaWYgX19saWJjX2VuYWJsZV9zZWN1cmUgaXMgc2V0CitvciBpZiB0aGUgcGF0aCBvZiB0aGUgYmluYXJ5IGNhbiBub3QgYmUgZGV0ZXJtaW5lZCAoL3Byb2Mgbm90IG1vdW50ZWQpLgorCitGaXggdGhhdCBieSBtb3ZpbmcgdGhlIGNoZWNrIGZvciBlbXB0eSB0b2tlbnMgYmVmb3JlIHRoZSBkeW5hbWljIHN0cmluZwordG9rZW4gZXhwYW5zaW9uLiBJbiBhZGRpdGlvbiwgY2hlY2sgZm9yIE5VTEwgcG9pbnRlciBvciBlbXB0eSBzdHJpbmdzCityZXR1cm4gYnkgZXhwYW5kX2R5bmFtaWNfc3RyaW5nX3Rva2VuLgorCitUaGUgYWJvdmUgY2hhbmdlcyBoaWdobGlnaHRlZCBhIGJ1ZyBpbiBkZWNvbXBvc2VfcnBhdGgsIGFuIGVtcHR5IGFycmF5CitpcyByZXByZXNlbnRlZCBieSB0aGUgZmlyc3QgZWxlbWVudCBiZWluZyBOVUxMIGF0IHRoZSBmaWxsaW5fcnBhdGgKK2xldmVsLCBidXQgYnkgdXNpbmcgYSAtMSBwb2ludGVyIGluIGRlY29tcG9zZV9ycGF0aCBhbmQgb3RoZXIgZnVuY3Rpb25zLgorCitDaGFuZ2Vsb2c6CisJW0JaICMyMjYyNV0KKwkqIGVsZi9kbC1sb2FkLmMgKGZpbGxpbl9ycGF0aCk6IENoZWNrIGZvciBlbXB0eSB0b2tlbnMgYmVmb3JlIGR5bmFtaWMKKwlzdHJpbmcgdG9rZW4gZXhwYW5zaW9uLiBDaGVjayBmb3IgTlVMTCBwb2ludGVyIG9yIGVtcHR5IHN0cmluZyBwb3NzaWJseQorCXJldHVybmVkIGJ5IGV4cGFuZF9keW5hbWljX3N0cmluZ190b2tlbi4KKwkoZGVjb21wb3NlX3JwYXRoKTogQ2hlY2sgZm9yIGVtcHR5IHBhdGggYWZ0ZXIgZHluYW1pYyBzdHJpbmcKKwl0b2tlbiBleHBhbnNpb24uCisoY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCAzZTNjOTA0ZGFlZjY5YjhiZjdkNWNjMDdmNzkzYzlmMDdjMzU1M2VmKQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitDVkU6IENWRS0yMDE3LTE2OTk3CitTaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KKworLS0tCisgQ2hhbmdlTG9nICAgICB8IDEwICsrKysrKysrKysKKyBORVdTICAgICAgICAgIHwgIDQgKysrKworIGVsZi9kbC1sb2FkLmMgfCA0OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCisgMyBmaWxlcyBjaGFuZ2VkLCA0NyBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKKworSW5kZXg6IGdpdC9ORVdTCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvTkVXUworKysrIGdpdC9ORVdTCitAQCAtMjE1LDYgKzIxNSwxMCBAQCBTZWN1cml0eSByZWxhdGVkIGNoYW5nZXM6CisgICBHTE9CX05PRVNDQVBFLCBjb3VsZCB3cml0ZSBwYXN0IHRoZSBlbmQgb2YgYSBidWZmZXIgd2hpbGUKKyAgIHVuZXNjYXBpbmcgdXNlciBuYW1lcy4gIFJlcG9ydGVkIGJ5IFRpbSBSw7xoc2VuLgorIAorKyAgQ1ZFLTIwMTctMTY5OTc6IEluY29ycmVjdCBoYW5kbGluZyBvZiBSUEFUSCBvciBSVU5QQVRIIGNvbnRhaW5pbmcgJE9SSUdJTgorKyAgZm9yIEFUX1NFQ1VSRSBvciBTVUlEIGJpbmFyaWVzIGNvdWxkIGJlIHVzZWQgdG8gbG9hZCBsaWJyYXJpZXMgZnJvbSB0aGUKKysgIGN1cnJlbnQgZGlyZWN0b3J5LgorKworIFRoZSBmb2xsb3dpbmcgYnVncyBhcmUgcmVzb2x2ZWQgd2l0aCB0aGlzIHJlbGVhc2U6CisgCisgICBbOTg0XSBuZXR3b3JrOiBSZXNwb25kIHRvIGNoYW5nZWQgcmVzb2x2LmNvbmYgaW4gZ2V0aG9zdGJ5bmFtZQorSW5kZXg6IGdpdC9lbGYvZGwtbG9hZC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvZWxmL2RsLWxvYWQuYworKysrIGdpdC9lbGYvZGwtbG9hZC5jCitAQCAtNDMzLDMyICs0MzMsNDEgQEAgZmlsbGluX3JwYXRoIChjaGFyICpycGF0aCwgc3RydWN0IHJfc2VhcgorIHsKKyAgIGNoYXIgKmNwOworICAgc2l6ZV90IG5lbGVtcyA9IDA7CistICBjaGFyICp0b19mcmVlOworIAorICAgd2hpbGUgKChjcCA9IF9fc3Ryc2VwICgmcnBhdGgsIHNlcCkpICE9IE5VTEwpCisgICAgIHsKKyAgICAgICBzdHJ1Y3Qgcl9zZWFyY2hfcGF0aF9lbGVtICpkaXJwOworKyAgICAgIGNoYXIgKnRvX2ZyZWUgPSBOVUxMOworKyAgICAgIHNpemVfdCBsZW4gPSAwOworIAorLSAgICAgIHRvX2ZyZWUgPSBjcCA9IGV4cGFuZF9keW5hbWljX3N0cmluZ190b2tlbiAobCwgY3AsIDEpOworKyAgICAgIC8qIGBzdHJzZXAnIGNhbiBwYXNzIGFuIGVtcHR5IHN0cmluZy4gICovCisrICAgICAgaWYgKCpjcCAhPSAnXDAnKQorKwl7CisrCSAgdG9fZnJlZSA9IGNwID0gZXhwYW5kX2R5bmFtaWNfc3RyaW5nX3Rva2VuIChsLCBjcCwgMSk7CisgCistICAgICAgc2l6ZV90IGxlbiA9IHN0cmxlbiAoY3ApOworKwkgIC8qIGV4cGFuZF9keW5hbWljX3N0cmluZ190b2tlbiBjYW4gcmV0dXJuIE5VTEwgaW4gY2FzZSBvZiBlbXB0eQorKwkgICAgIHBhdGggb3IgbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZS4gICovCisrCSAgaWYgKGNwID09IE5VTEwpCisrCSAgICBjb250aW51ZTsKKysKKysJICAvKiBDb21wdXRlIHRoZSBsZW5ndGggYWZ0ZXIgZHluYW1pYyBzdHJpbmcgdG9rZW4gZXhwYW5zaW9uIGFuZAorKwkgICAgIGlnbm9yZSBlbXB0eSBwYXRocy4gICovCisrCSAgbGVuID0gc3RybGVuIChjcCk7CisrCSAgaWYgKGxlbiA9PSAwKQorKwkgICAgeworKwkgICAgICBmcmVlICh0b19mcmVlKTsKKysJICAgICAgY29udGludWU7CisrCSAgICB9CisgCistICAgICAgLyogYHN0cnNlcCcgY2FuIHBhc3MgYW4gZW1wdHkgc3RyaW5nLiAgVGhpcyBoYXMgdG8gYmUKKy0JIGludGVycHJldGVkIGFzIGB1c2UgdGhlIGN1cnJlbnQgZGlyZWN0b3J5Jy4gKi8KKy0gICAgICBpZiAobGVuID09IDApCistCXsKKy0JICBzdGF0aWMgY29uc3QgY2hhciBjdXJ3ZFtdID0gIi4vIjsKKy0JICBjcCA9IChjaGFyICopIGN1cndkOworKwkgIC8qIFJlbW92ZSB0cmFpbGluZyBzbGFzaGVzIChleGNlcHQgZm9yICIvIikuICAqLworKwkgIHdoaWxlIChsZW4gPiAxICYmIGNwW2xlbiAtIDFdID09ICcvJykKKysJICAgIC0tbGVuOworKworKwkgIC8qIE5vdyBhZGQgb25lIGlmIHRoZXJlIGlzIG5vbmUgc28gZmFyLiAgKi8KKysJICBpZiAobGVuID4gMCAmJiBjcFtsZW4gLSAxXSAhPSAnLycpCisrCSAgICBjcFtsZW4rK10gPSAnLyc7CisgCX0KKyAKKy0gICAgICAvKiBSZW1vdmUgdHJhaWxpbmcgc2xhc2hlcyAoZXhjZXB0IGZvciAiLyIpLiAgKi8KKy0gICAgICB3aGlsZSAobGVuID4gMSAmJiBjcFtsZW4gLSAxXSA9PSAnLycpCistCS0tbGVuOworLQorLSAgICAgIC8qIE5vdyBhZGQgb25lIGlmIHRoZXJlIGlzIG5vbmUgc28gZmFyLiAgKi8KKy0gICAgICBpZiAobGVuID4gMCAmJiBjcFtsZW4gLSAxXSAhPSAnLycpCistCWNwW2xlbisrXSA9ICcvJzsKKy0KKyAgICAgICAvKiBNYWtlIHN1cmUgd2UgZG9uJ3QgdXNlIHVudHJ1c3RlZCBkaXJlY3RvcmllcyBpZiB3ZSBydW4gU1VJRC4gICovCisgICAgICAgaWYgKF9fZ2xpYmNfdW5saWtlbHkgKGNoZWNrX3RydXN0ZWQpICYmICFpc190cnVzdGVkX3BhdGggKGNwLCBsZW4pKQorIAl7CitAQCAtNjIxLDYgKzYzMCwxNCBAQCBkZWNvbXBvc2VfcnBhdGggKHN0cnVjdCByX3NlYXJjaF9wYXRoX3N0CisgICAgICBuZWNlc3NhcnkuICAqLworICAgZnJlZSAoY29weSk7CisgCisrICAvKiBUaGVyZSBpcyBubyBwYXRoIGFmdGVyIGV4cGFuc2lvbi4gICovCisrICBpZiAocmVzdWx0WzBdID09IE5VTEwpCisrICAgIHsKKysgICAgICBmcmVlIChyZXN1bHQpOworKyAgICAgIHNwcy0+ZGlycyA9IChzdHJ1Y3Qgcl9zZWFyY2hfcGF0aF9lbGVtICoqKSAtMTsKKysgICAgICByZXR1cm4gZmFsc2U7CisrICAgIH0KKysKKyAgIHNwcy0+ZGlycyA9IHJlc3VsdDsKKyAgIC8qIFRoZSBjYWxsZXIgd2lsbCBjaGFuZ2UgdGhpcyB2YWx1ZSBpZiB3ZSBoYXZlbid0IHVzZWQgYSByZWFsIG1hbGxvYy4gICovCisgICBzcHMtPm1hbGxvY2VkID0gMTsKK0luZGV4OiBnaXQvQ2hhbmdlTG9nCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvQ2hhbmdlTG9nCisrKysgZ2l0L0NoYW5nZUxvZworQEAgLTEsMyArMSwxMiBAQAorKzIwMTctMTItMzAgIEF1cmVsaWVuIEphcm5vICA8YXVyZWxpZW5AYXVyZWwzMi5uZXQ+CisrICAgICAgICAgICBEbWl0cnkgVi4gTGV2aW4gIDxsZHZAYWx0bGludXgub3JnPgorKworKyAgICAgICBbQlogIzIyNjI1XQorKyAgICAgICAqIGVsZi9kbC1sb2FkLmMgKGZpbGxpbl9ycGF0aCk6IENoZWNrIGZvciBlbXB0eSB0b2tlbnMgYmVmb3JlIGR5bmFtaWMKKysgICAgICAgc3RyaW5nIHRva2VuIGV4cGFuc2lvbi4gQ2hlY2sgZm9yIE5VTEwgcG9pbnRlciBvciBlbXB0eSBzdHJpbmcgcG9zc2libHkKKysgICAgICAgcmV0dXJuZWQgYnkgZXhwYW5kX2R5bmFtaWNfc3RyaW5nX3Rva2VuLgorKyAgICAgICAoZGVjb21wb3NlX3JwYXRoKTogQ2hlY2sgZm9yIGVtcHR5IHBhdGggYWZ0ZXIgZHluYW1pYyBzdHJpbmcKKysgICAgICAgdG9rZW4gZXhwYW5zaW9uLgorIAorIDIwMTctMTAtMjAgIFBhdWwgRWdnZXJ0IDxlZ2dlcnRAY3MudWNsYS5lZHU+CisgCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvQ1ZFLTIwMTctMTc0MjYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvQ1ZFLTIwMTctMTc0MjYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzdkMWNiOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy9DVkUtMjAxNy0xNzQyNi5wYXRjaApAQCAtMCwwICsxLDgwIEBACitGcm9tIGRmOGMyMTljYjk4N2NmZTg1YzU1MGVmYTY5M2ExMzgzYTExZTM4YWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBcmp1biBTaGFua2FyIDxhcmp1bkByZWRoYXQuY29tPgorRGF0ZTogVGh1LCAzMCBOb3YgMjAxNyAxMzozMTo0NSArMDEwMAorU3ViamVjdDogW1BBVENIXSBGaXggaW50ZWdlciBvdmVyZmxvdyBpbiBtYWxsb2Mgd2hlbiB0Y2FjaGUgaXMgZW5hYmxlZCBbQloKKyAjMjIzNzVdCisKK1doZW4gdGhlIHBlci10aHJlYWQgY2FjaGUgaXMgZW5hYmxlZCwgX19saWJjX21hbGxvYyB1c2VzIHJlcXVlc3Qyc2l6ZSAod2hpY2gKK2RvZXMgbm90IHBlcmZvcm0gYW4gb3ZlcmZsb3cgY2hlY2spIHRvIGNhbGN1bGF0ZSB0aGUgY2h1bmsgc2l6ZSBmcm9tIHRoZQorcmVxdWVzdGVkIGFsbG9jYXRpb24gc2l6ZS4gVGhpcyBsZWFkcyB0byBhbiBpbnRlZ2VyIG92ZXJmbG93IGNhdXNpbmcgbWFsbG9jCit0byBpbmNvcnJlY3RseSByZXR1cm4gdGhlIGxhc3Qgc3VjY2Vzc2Z1bGx5IGFsbG9jYXRlZCBibG9jayB3aGVuIGNhbGxlZCB3aXRoCithIHZlcnkgbGFyZ2Ugc2l6ZSBhcmd1bWVudCAoY2xvc2UgdG8gU0laRV9NQVgpLgorCitUaGlzIGNvbW1pdCB1c2VzIGNoZWNrZWRfcmVxdWVzdDJzaXplIGluc3RlYWQsIHJlbW92aW5nIHRoZSBvdmVyZmxvdy4KKworKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgMzQ2OTc2OTRlOGE5M2IzMjViMThmMjVmN2RjZGVkNTVkNmJhZWFmNikKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorQ1ZFOiBDVkUtMjAxNy0xNzQyNgorU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+CisKKy0tLQorIENoYW5nZUxvZyAgICAgICB8IDcgKysrKysrKworIE5FV1MgICAgICAgICAgICB8IDYgKysrKysrCisgbWFsbG9jL21hbGxvYy5jIHwgMyArKy0KKyAzIGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworSW5kZXg6IGdpdC9ORVdTCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvTkVXUworKysrIGdpdC9ORVdTCitAQCAtNCw2ICs0LDggQEAgU2VlIHRoZSBlbmQgZm9yIGNvcHlpbmcgY29uZGl0aW9ucy4KKyAKKyBQbGVhc2Ugc2VuZCBHTlUgQyBsaWJyYXJ5IGJ1ZyByZXBvcnRzIHZpYSA8aHR0cDovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhLz4KKyB1c2luZyBgZ2xpYmMnIGluIHRoZSAicHJvZHVjdCIgZmllbGQuCisrCisrWzIyMzc1XSBtYWxsb2MgcmV0dXJucyBwb2ludGVyIGZyb20gdGNhY2hlIGluc3RlYWQgb2YgTlVMTCAoQ1ZFLTIwMTctMTc0MjYpCisgDAorIFZlcnNpb24gMi4yNgorIAorQEAgLTIxNSw2ICsyMTcsMTEgQEAgU2VjdXJpdHkgcmVsYXRlZCBjaGFuZ2VzOgorICAgZm9yIEFUX1NFQ1VSRSBvciBTVUlEIGJpbmFyaWVzIGNvdWxkIGJlIHVzZWQgdG8gbG9hZCBsaWJyYXJpZXMgZnJvbSB0aGUKKyAgIGN1cnJlbnQgZGlyZWN0b3J5LgorIAorKyAgQ1ZFLTIwMTctMTc0MjY6IFRoZSBtYWxsb2MgZnVuY3Rpb24sIHdoZW4gY2FsbGVkIHdpdGggYW4gb2JqZWN0IHNpemUgbmVhcgorKyAgdGhlIHZhbHVlIFNJWkVfTUFYLCB3b3VsZCByZXR1cm4gYSBwb2ludGVyIHRvIGEgYnVmZmVyIHdoaWNoIGlzIHRvbyBzbWFsbCwKKysgIGluc3RlYWQgb2YgTlVMTC4gIFRoaXMgd2FzIGEgcmVncmVzc2lvbiBpbnRyb2R1Y2VkIHdpdGggdGhlIG5ldyBtYWxsb2MKKysgIHRocmVhZCBjYWNoZSBpbiBnbGliYyAyLjI2LiAgUmVwb3J0ZWQgYnkgSWFpbiBCdWNsYXcuCisrCisgVGhlIGZvbGxvd2luZyBidWdzIGFyZSByZXNvbHZlZCB3aXRoIHRoaXMgcmVsZWFzZToKKyAKKyAgIFs5ODRdIG5ldHdvcms6IFJlc3BvbmQgdG8gY2hhbmdlZCByZXNvbHYuY29uZiBpbiBnZXRob3N0YnluYW1lCitJbmRleDogZ2l0L21hbGxvYy9tYWxsb2MuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL21hbGxvYy9tYWxsb2MuYworKysrIGdpdC9tYWxsb2MvbWFsbG9jLmMKK0BAIC0zMDUwLDcgKzMwNTAsOCBAQCBfX2xpYmNfbWFsbG9jIChzaXplX3QgYnl0ZXMpCisgICAgIHJldHVybiAoKmhvb2spKGJ5dGVzLCBSRVRVUk5fQUREUkVTUyAoMCkpOworICNpZiBVU0VfVENBQ0hFCisgICAvKiBpbnRfZnJlZSBhbHNvIGNhbGxzIHJlcXVlc3Qyc2l6ZSwgYmUgY2FyZWZ1bCB0byBub3QgcGFkIHR3aWNlLiAgKi8KKy0gIHNpemVfdCB0Ynl0ZXMgPSByZXF1ZXN0MnNpemUgKGJ5dGVzKTsKKysgIHNpemVfdCB0Ynl0ZXM7CisrICBjaGVja2VkX3JlcXVlc3Qyc2l6ZSAoYnl0ZXMsIHRieXRlcyk7CisgICBzaXplX3QgdGNfaWR4ID0gY3NpemUydGlkeCAodGJ5dGVzKTsKKyAKKyAgIE1BWUJFX0lOSVRfVENBQ0hFICgpOworSW5kZXg6IGdpdC9DaGFuZ2VMb2cKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnaXQub3JpZy9DaGFuZ2VMb2cKKysrKyBnaXQvQ2hhbmdlTG9nCitAQCAtMSwzICsxLDEwIEBACisrMjAxNy0xMS0zMCAgQXJqdW4gU2hhbmthciAgPGFyanVuQHJlZGhhdC5jb20+CisrCisrICAgICAgIFtCWiAjMjIzNzVdCisrICAgICAgIENWRS0yMDE3LTE3NDI2CisrICAgICAgICogbWFsbG9jL21hbGxvYy5jIChfX2xpYmNfbWFsbG9jKTogVXNlIGNoZWNrZWRfcmVxdWVzdDJzaXplCisrICAgICAgIGluc3RlYWQgb2YgcmVxdWVzdDJzaXplLgorKworIDIwMTctMTItMzAgIEF1cmVsaWVuIEphcm5vICA8YXVyZWxpZW5AYXVyZWwzMi5uZXQ+CisgICAgICAgICAgICBEbWl0cnkgVi4gTGV2aW4gIDxsZHZAYWx0bGludXgub3JnPgorIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjXzIuMjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmNfMi4yNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGYxZWMwYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmNfMi4yNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE0MSArMCwwIEBACi1yZXF1aXJlIGdsaWJjLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFUzttZDU9ZTlhNTU4ZTI0M2IzNmQzMjA5ZjM4MGRlYjM5NGIyMTMgXAotICAgICAgZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgIGZpbGU6Ly9wb3NpeC9yeHNwZW5jZXIvQ09QWVJJR0hUO21kNT1kYzU0ODViYjM5NGExM2IyMzMyZWMxYzc4NWY1ZDgzYSBcCi0gICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgotCi1ERVBFTkRTICs9ICJncGVyZi1uYXRpdmUiCi0KLVNSQ1JFViA/PSAiZGIwMjQyZTMwMjM0MzY3NTdiYmM3YzQ4OGE3NzllNmUzMzQzZGIwNCIKLQotU1JDQlJBTkNIID89ICJyZWxlYXNlLyR7UFZ9L21hc3RlciIKLQotR0xJQkNfR0lUX1VSSSA/PSAiZ2l0Oi8vc291cmNld2FyZS5vcmcvZ2l0L2dsaWJjLmdpdCIKLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPlxkK1wuXGQrKFwuXGQrKSopIgotCi1TUkNfVVJJID0gIiR7R0xJQkNfR0lUX1VSSX07YnJhbmNoPSR7U1JDQlJBTkNIfTtuYW1lPWdsaWJjIFwKLSAgICAgICAgICAgZmlsZTovL2V0Yy9sZC5zby5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL2dlbmVyYXRlLXN1cHBvcnRlZC5tayBcCi0gICAgICAgICAgIFwKLSAgICAgICAgICAgJHtOQVRJVkVTREtGSVhFU30gXAotICAgICAgICAgICBmaWxlOi8vMDAwNS1mc2wtZTUwMC1lNTUwMC1lNjUwMC02MDNlLWZzcXJ0LWltcGxlbWVudGF0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDYtcmVhZGxpYi1BZGQtT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTLXRvLWtub3duLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA3LXBwYy1zcXJ0LUZpeC11bmRlZmluZWQtcmVmZXJlbmNlLXRvLV9fc3FydF9maW5pdGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwOC1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDktUXVvdGUtZnJvbS1idWctMTQ0My13aGljaC1leHBsYWlucy13aGF0LXRoZS1wYXRjaC1kby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEwLWVnbGliYy1ydW4tbGlibS1lcnItdGFiLnBsLXdpdGgtc3BlY2lmaWMtZGlycy1pbi1TLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTEtX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEyLU1ha2UtbGQtdmVyc2lvbi1vdXRwdXQtbWF0Y2hpbmctZ3Jvay1nb2xkLXMtb3V0cHV0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTMtc3lzZGVwcy1nbnUtY29uZmlndXJlLmFjLWhhbmRsZS1jb3JyZWN0bHktbGliY19jdl9yby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE0LUFkZC11bnVzZWQtYXR0cmlidXRlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTUteWVzLXdpdGhpbi10aGUtcGF0aC1zZXRzLXdyb25nLWNvbmZpZy12YXJpYWJsZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxNi10aW1lem9uZS1yZS13cml0dGVuLXR6c2VsZWN0LWFzLXBvc2l4LXNoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTctUmVtb3ZlLWJhc2gtZGVwZW5kZW5jeS1mb3ItbnNjZC1pbml0LXNjcmlwdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE4LWVnbGliYy1Dcm9zcy1idWlsZGluZy1hbmQtdGVzdGluZy1pbnN0cnVjdGlvbnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxOS1lZ2xpYmMtSGVscC1ib290c3RyYXAtY3Jvc3MtdG9vbGNoYWluLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjAtZWdsaWJjLWNoZXJyeS1waWNrZWQtZnJvbS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIxLWVnbGliYy1DbGVhci1jYWNoZS1saW5lcy1vbi1wcGM4eHgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMi1lZ2xpYmMtUmVzb2x2ZS1fX2Zwc2NyX3ZhbHVlcy1vbi1TSDQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMy1lZ2xpYmMtSW5zdGFsbC1QSUMtYXJjaGl2ZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNC1lZ2xpYmMtRm9yd2FyZC1wb3J0LWNyb3NzLWxvY2FsZS1nZW5lcmF0aW9uLXN1cHBvcnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNS1EZWZpbmUtRFVNTVlfTE9DQUxFX1QtaWYtbm90LWRlZmluZWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNi1lbGYtZGwtZGVwcy5jLU1ha2UtX2RsX2J1aWxkX2xvY2FsX3Njb3BlLWJyZWFkdGgtZmlyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjctbG9jYWxlLWZpeC1oYXJkLWNvZGVkLXJlZmVyZW5jZS10by1nY2MtRS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI4LVJld29yay1mbm8tb21pdC1mcmFtZS1wb2ludGVyLXN1cHBvcnQtb24taTM4Ni5wYXRjaCBcCi0iCi0KLU5BVElWRVNES0ZJWEVTID89ICIiCi1OQVRJVkVTREtGSVhFU19jbGFzcy1uYXRpdmVzZGsgPSAiXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1uYXRpdmVzZGstZ2xpYmMtTG9vay1mb3ItaG9zdC1zeXN0ZW0tbGQuc28uY2FjaGUtYXMtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItbmF0aXZlc2RrLWdsaWJjLUZpeC1idWZmZXItb3ZlcnJ1bi13aXRoLWEtcmVsb2NhdGVkLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLW5hdGl2ZXNkay1nbGliYy1SYWlzZS10aGUtc2l6ZS1vZi1hcnJheXMtY29udGFpbmluZy0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1uYXRpdmVzZGstZ2xpYmMtQWxsb3ctNjQtYml0LWF0b21pY3MtZm9yLXg4Ni5wYXRjaCBcCi0iCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi1CID0gIiR7V09SS0RJUn0vYnVpbGQtJHtUQVJHRVRfU1lTfSIKLQotUEFDS0FHRVNfRFlOQU1JQyA9ICIiCi0KLSMgdGhlIC1pc3lzdGVtIGluIGJpdGJha2UuY29uZiBzY3Jld3MgdXAgZ2xpYmMgZG9fc3RhZ2UKLUJVSUxEX0NQUEZMQUdTID0gIi1JJHtTVEFHSU5HX0lOQ0RJUl9OQVRJVkV9IgotVEFSR0VUX0NQUEZMQUdTID0gIi1JJHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtpbmNsdWRlZGlyfSIKLQotR0xJQkNfQlJPS0VOX0xPQ0FMRVMgPSAiIgotIwotIyBXZSB3aWxsIHNraXAgcGFyc2luZyBnbGliYyB3aGVuIHRhcmdldCBzeXN0ZW0gQyBsaWJyYXJ5IHNlbGVjdGlvbiBpcyBub3QgZ2xpYmMKLSMgdGhpcyBoZWxwcyBpbiBlYXNpbmcgb3V0IHBhcnNpbmcgZm9yIG5vbi1nbGliYyBzeXN0ZW0gbGlicmFyaWVzCi0jCi1DT01QQVRJQkxFX0hPU1RfbGliYy1tdXNsX2NsYXNzLXRhcmdldCA9ICJudWxsIgotQ09NUEFUSUJMRV9IT1NUX2xpYmMtdWNsaWJjX2NsYXNzLXRhcmdldCA9ICJudWxsIgotCi1FWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUta2VybmVsPSR7T0xERVNUX0tFUk5FTH0gXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1jdnMgLS1kaXNhYmxlLXByb2ZpbGUgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1kZWJ1ZyAtLXdpdGhvdXQtZ2QgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLWNsb2NhbGU9Z251IFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1hZGQtb25zIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtaGVhZGVycz0ke1NUQUdJTkdfSU5DRElSfSBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LXNlbGludXggXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLW9ic29sZXRlLXJwYyBcCi0gICAgICAgICAgICAgICAgJHtHTElCQ19FWFRSQV9PRUNPTkZ9IgotCi1FWFRSQV9PRUNPTkYgKz0gIiR7QGdldF9saWJjX2ZwdV9zZXR0aW5nKGJiLCBkKX0iCi1FWFRSQV9PRUNPTkYgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnbGliYy1pbmV0LWFubCcsICctLWVuYWJsZS1uc2NkJywgJy0tZGlzYWJsZS1uc2NkJywgZCl9IgotCi0KLWRvX3BhdGNoX2FwcGVuZCgpIHsKLSAgICBiYi5idWlsZC5leGVjX2Z1bmMoJ2RvX2ZpeF9yZWFkbGliX2MnLCBkKQotfQotCi1kb19maXhfcmVhZGxpYl9jICgpIHsKLQlzZWQgLWkgLWUgJ3MjT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTIyR7RUdMSUJDX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTfSMnICR7U30vZWxmL3JlYWRsaWIuYwotfQotCi1kb19jb25maWd1cmUgKCkgewotIyBvdmVycmlkZSB0aGlzIGZ1bmN0aW9uIHRvIGF2b2lkIHRoZSBhdXRvY29uZi9hdXRvbWFrZS9hY2xvY2FsL2F1dG9oZWFkZXIKLSMgY2FsbHMgZm9yIG5vdwotIyBkb24ndCBwYXNzIENQUEZMQUdTIGludG8gY29uZmlndXJlLCBzaW5jZSBpdCB1cHNldHMgdGhlIGtlcm5lbC1oZWFkZXJzCi0jIHZlcnNpb24gY2hlY2sgYW5kIGRvZXNuJ3QgcmVhbGx5IGhlbHAgd2l0aCBhbnl0aGluZwotICAgICAgICAoY2QgJHtTfSAmJiBnbnUtY29uZmlnaXplKSB8fCBkaWUgImZhaWx1cmUgaW4gcnVubmluZyBnbnUtY29uZmlnaXplIgotICAgICAgICBmaW5kICR7U30gLW5hbWUgImNvbmZpZ3VyZSIgfCB4YXJncyB0b3VjaAotICAgICAgICBDUFBGTEFHUz0iIiBvZV9ydW5jb25mCi19Ci0KLXJwY3N2YyA9ICJib290cGFyYW1fcHJvdC54IG5sbV9wcm90LnggcnN0YXQueCBcCi0JICB5cHBhc3N3ZC54IGtsbV9wcm90LnggcmV4Lnggc21faW50ZXIueCBtb3VudC54IFwKLQkgIHJ1c2Vycy54IHNwcmF5LnggbmZzX3Byb3QueCBycXVvdGEueCBrZXlfcHJvdC54IgotCi1kb19jb21waWxlICgpIHsKLQkjIC1XbCwtcnBhdGgtbGluayA8c3RhZ2luZz4vbGliIGluIExERkxBR1MgY2FuIGNhdXNlIGJyZWFrYWdlIGlmIGFub3RoZXIgZ2xpYmMgaXMgaW4gc3RhZ2luZwotCXVuc2V0IExERkxBR1MKLQliYXNlX2RvX2NvbXBpbGUKLQkoCi0JCWNkICR7U30vc3VucnBjL3JwY3N2YwotCQlmb3IgciBpbiAke3JwY3N2Y307IGRvCi0JCQloPWBlY2hvICRyfHNlZCAtZSdzLFwueCQsLmgsJ2AKLQkJCXJtIC1mICRoCi0JCQkke0J9L3N1bnJwYy9jcm9zcy1ycGNnZW4gLWggJHIgLW8gJGggfHwgYmJ3YXJuICIke1BOfTogdW5hYmxlIHRvIGdlbmVyYXRlIGhlYWRlciBmb3IgJHIiCi0JCWRvbmUKLQkpCi0JZWNobyAiQWRqdXN0IGxkZCBzY3JpcHQiCi0JaWYgWyAtbiAiJHtSVExETElTVH0iIF0KLQl0aGVuCi0JCXByZXZydGxkPWBjYXQgJHtCfS9lbGYvbGRkIHwgZ3JlcCAiXlJUTERMSVNUPSIgfCBzZWQgJ3MjXlJUTERMSVNUPSJcP1woW14iXSpcKSJcPyQjXDEjJ2AKLQkJaWYgWyAiJHtwcmV2cnRsZH0iICE9ICIke1JUTERMSVNUfSIgXQotCQl0aGVuCi0JCQlzZWQgLWkgJHtCfS9lbGYvbGRkIC1lICJzI15SVExETElTVD0uKlwkI1JUTERMSVNUPVwiJHtwcmV2cnRsZH0gJHtSVExETElTVH1cIiMiCi0JCWZpCi0JZmkKLQotfQotCi0jIFVzZSB0aGUgaG9zdCBsb2NhbGUgYXJjaGl2ZSB3aGVuIGJ1aWx0IGZvciBuYXRpdmVzZGsgc28gdGhhdCB3ZSBkb24ndCBuZWVkIHRvCi0jIHNoaXAgYSBjb21wbGV0ZSAoMTAwTUIpIGxvY2FsZSBzZXQuCi1kb19jb21waWxlX3ByZXBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgewotICAgIGVjaG8gImNvbXBsb2NhbGVkaXI9L3Vzci9saWIvbG9jYWxlIiA+PiAke1N9L2NvbmZpZ3Bhcm1zCi19Ci0KLXJlcXVpcmUgZ2xpYmMtcGFja2FnZS5pbmMKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmNfMi4yNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliY18yLjI2LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjMGViOTgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmNfMi4yNi5iYgpAQCAtMCwwICsxLDE1NCBAQAorcmVxdWlyZSBnbGliYy5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRVM7bWQ1PWU5YTU1OGUyNDNiMzZkMzIwOWYzODBkZWIzOTRiMjEzIFwKKyAgICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICBmaWxlOi8vcG9zaXgvcnhzcGVuY2VyL0NPUFlSSUdIVDttZDU9ZGM1NDg1YmIzOTRhMTNiMjMzMmVjMWM3ODVmNWQ4M2EgXAorICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKKworREVQRU5EUyArPSAiZ3BlcmYtbmF0aXZlIGJpc29uLW5hdGl2ZSIKKworU1JDUkVWID89ICIxYzlhNWMyNzBkOGI2NmYzMGRjZmFmMWNiMmQ2Y2YzOWQzZTE4MzY5IgorCitTUkNCUkFOQ0ggPz0gInJlbGVhc2UvJHtQVn0vbWFzdGVyIgorCitHTElCQ19HSVRfVVJJID89ICJnaXQ6Ly9zb3VyY2V3YXJlLm9yZy9naXQvZ2xpYmMuZ2l0IgorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+XGQrXC5cZCsoXC5cZCspKikiCisKK1NSQ19VUkkgPSAiJHtHTElCQ19HSVRfVVJJfTticmFuY2g9JHtTUkNCUkFOQ0h9O25hbWU9Z2xpYmMgXAorICAgICAgICAgICBmaWxlOi8vZXRjL2xkLnNvLmNvbmYgXAorICAgICAgICAgICBmaWxlOi8vZ2VuZXJhdGUtc3VwcG9ydGVkLm1rIFwKKyAgICAgICAgICAgXAorICAgICAgICAgICAke05BVElWRVNES0ZJWEVTfSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LWZzbC1lNTAwLWU1NTAwLWU2NTAwLTYwM2UtZnNxcnQtaW1wbGVtZW50YXRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNi1yZWFkbGliLUFkZC1PRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMtdG8ta25vd24tLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDctcHBjLXNxcnQtRml4LXVuZGVmaW5lZC1yZWZlcmVuY2UtdG8tX19zcXJ0X2Zpbml0ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA4LV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOS1RdW90ZS1mcm9tLWJ1Zy0xNDQzLXdoaWNoLWV4cGxhaW5zLXdoYXQtdGhlLXBhdGNoLWRvLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTAtZWdsaWJjLXJ1bi1saWJtLWVyci10YWIucGwtd2l0aC1zcGVjaWZpYy1kaXJzLWluLVMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMS1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTItc3lzZGVwcy1nbnUtY29uZmlndXJlLmFjLWhhbmRsZS1jb3JyZWN0bHktbGliY19jdl9yby5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEzLUFkZC11bnVzZWQtYXR0cmlidXRlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTQteWVzLXdpdGhpbi10aGUtcGF0aC1zZXRzLXdyb25nLWNvbmZpZy12YXJpYWJsZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxNS10aW1lem9uZS1yZS13cml0dGVuLXR6c2VsZWN0LWFzLXBvc2l4LXNoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTYtUmVtb3ZlLWJhc2gtZGVwZW5kZW5jeS1mb3ItbnNjZC1pbml0LXNjcmlwdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE3LWVnbGliYy1Dcm9zcy1idWlsZGluZy1hbmQtdGVzdGluZy1pbnN0cnVjdGlvbnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxOC1lZ2xpYmMtSGVscC1ib290c3RyYXAtY3Jvc3MtdG9vbGNoYWluLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTktZWdsaWJjLUNsZWFyLWNhY2hlLWxpbmVzLW9uLXBwYzh4eC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIwLWVnbGliYy1SZXNvbHZlLV9fZnBzY3JfdmFsdWVzLW9uLVNINC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIxLWVnbGliYy1JbnN0YWxsLVBJQy1hcmNoaXZlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIyLWVnbGliYy1Gb3J3YXJkLXBvcnQtY3Jvc3MtbG9jYWxlLWdlbmVyYXRpb24tc3VwcG9ydC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIzLURlZmluZS1EVU1NWV9MT0NBTEVfVC1pZi1ub3QtZGVmaW5lZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI0LWVsZi1kbC1kZXBzLmMtTWFrZS1fZGxfYnVpbGRfbG9jYWxfc2NvcGUtYnJlYWR0aC1maXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyNS1sb2NhbGUtZml4LWhhcmQtY29kZWQtcmVmZXJlbmNlLXRvLWdjYy1FLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjYtYXNzZXJ0LVN1cHByZXNzLXBlZGFudGljLXdhcm5pbmctY2F1c2VkLWJ5LXN0YXRlbWVudC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI3LWdsaWJjLXJlc2V0LWRsLWxvYWQtd3JpdGUtbG9jay1hZnRlci1mb3JraW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjgtQnVnLTQ1NzgtYWRkLWxkLnNvLWxvY2std2hpbGUtZm9yay5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNTY3MC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNTY3MS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI5LWFzc2VydC1TdXBwb3J0LXR5cGVzLXdpdGhvdXQtb3BlcmF0b3ItaW50LUJaLTIxOTcyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTE2OTk3LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTE3NDI2LnBhdGNoIFwKKyIKKworTkFUSVZFU0RLRklYRVMgPz0gIiIKK05BVElWRVNES0ZJWEVTX2NsYXNzLW5hdGl2ZXNkayA9ICJcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW5hdGl2ZXNkay1nbGliYy1Mb29rLWZvci1ob3N0LXN5c3RlbS1sZC5zby5jYWNoZS1hcy0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1uYXRpdmVzZGstZ2xpYmMtRml4LWJ1ZmZlci1vdmVycnVuLXdpdGgtYS1yZWxvY2F0ZWQtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtbmF0aXZlc2RrLWdsaWJjLVJhaXNlLXRoZS1zaXplLW9mLWFycmF5cy1jb250YWluaW5nLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LW5hdGl2ZXNkay1nbGliYy1BbGxvdy02NC1iaXQtYXRvbWljcy1mb3IteDg2LnBhdGNoIFwKKyIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKK0IgPSAiJHtXT1JLRElSfS9idWlsZC0ke1RBUkdFVF9TWVN9IgorCitQQUNLQUdFU19EWU5BTUlDID0gIiIKKworIyB0aGUgLWlzeXN0ZW0gaW4gYml0YmFrZS5jb25mIHNjcmV3cyB1cCBnbGliYyBkb19zdGFnZQorQlVJTERfQ1BQRkxBR1MgPSAiLUkke1NUQUdJTkdfSU5DRElSX05BVElWRX0iCitUQVJHRVRfQ1BQRkxBR1MgPSAiLUkke1NUQUdJTkdfRElSX1RBUkdFVH0ke2luY2x1ZGVkaXJ9IgorCitHTElCQ19CUk9LRU5fTE9DQUxFUyA9ICIiCisjCisjIFdlIHdpbGwgc2tpcCBwYXJzaW5nIGdsaWJjIHdoZW4gdGFyZ2V0IHN5c3RlbSBDIGxpYnJhcnkgc2VsZWN0aW9uIGlzIG5vdCBnbGliYworIyB0aGlzIGhlbHBzIGluIGVhc2luZyBvdXQgcGFyc2luZyBmb3Igbm9uLWdsaWJjIHN5c3RlbSBsaWJyYXJpZXMKKyMKK0NPTVBBVElCTEVfSE9TVF9saWJjLW11c2xfY2xhc3MtdGFyZ2V0ID0gIm51bGwiCisKK0VYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1rZXJuZWw9JHtPTERFU1RfS0VSTkVMfSBcCisgICAgICAgICAgICAgICAgLS13aXRob3V0LWN2cyAtLWRpc2FibGUtcHJvZmlsZSBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWRlYnVnIC0td2l0aG91dC1nZCBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtY2xvY2FsZT1nbnUgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLWFkZC1vbnM9bGliaWRuIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtaGVhZGVycz0ke1NUQUdJTkdfSU5DRElSfSBcCisgICAgICAgICAgICAgICAgLS13aXRob3V0LXNlbGludXggXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLW9ic29sZXRlLXJwYyBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtb2Jzb2xldGUtbnNsIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS10dW5hYmxlcyBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtYmluZC1ub3cgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLXN0YWNrLXByb3RlY3Rvcj1zdHJvbmcgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLXN0YWNrZ3VhcmQtcmFuZG9taXphdGlvbiBcCisgICAgICAgICAgICAgICAgJHtHTElCQ19FWFRSQV9PRUNPTkZ9IgorCitFWFRSQV9PRUNPTkYgKz0gIiR7QGdldF9saWJjX2ZwdV9zZXR0aW5nKGJiLCBkKX0iCitFWFRSQV9PRUNPTkYgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnbGliYy1pbmV0LWFubCcsICctLWVuYWJsZS1uc2NkJywgJy0tZGlzYWJsZS1uc2NkJywgZCl9IgorCisKK2RvX3BhdGNoX2FwcGVuZCgpIHsKKyAgICBiYi5idWlsZC5leGVjX2Z1bmMoJ2RvX2ZpeF9yZWFkbGliX2MnLCBkKQorfQorCitkb19maXhfcmVhZGxpYl9jICgpIHsKKwlzZWQgLWkgLWUgJ3MjT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTIyR7RUdMSUJDX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTfSMnICR7U30vZWxmL3JlYWRsaWIuYworfQorCitkb19jb25maWd1cmUgKCkgeworIyBvdmVycmlkZSB0aGlzIGZ1bmN0aW9uIHRvIGF2b2lkIHRoZSBhdXRvY29uZi9hdXRvbWFrZS9hY2xvY2FsL2F1dG9oZWFkZXIKKyMgY2FsbHMgZm9yIG5vdworIyBkb24ndCBwYXNzIENQUEZMQUdTIGludG8gY29uZmlndXJlLCBzaW5jZSBpdCB1cHNldHMgdGhlIGtlcm5lbC1oZWFkZXJzCisjIHZlcnNpb24gY2hlY2sgYW5kIGRvZXNuJ3QgcmVhbGx5IGhlbHAgd2l0aCBhbnl0aGluZworICAgICAgICAoY2QgJHtTfSAmJiBnbnUtY29uZmlnaXplKSB8fCBkaWUgImZhaWx1cmUgaW4gcnVubmluZyBnbnUtY29uZmlnaXplIgorICAgICAgICBmaW5kICR7U30gLW5hbWUgImNvbmZpZ3VyZSIgfCB4YXJncyB0b3VjaAorICAgICAgICAjICJwbHVyYWwuYyIgbWF5IG9yIG1heSBub3QgZ2V0IHJlZ2VuZXJhdGVkIGZyb20gInBsdXJhbC55IiBzbyB3ZQorICAgICAgICAjIHRvdWNoICJwbHVyYWwueSIgdG8gbWFrZSBzdXJlIGl0IGRvZXMuIChUaGlzIHNob3VsZCBub3QgYmUgbmVlZGVkCisgICAgICAgICMgZm9yIGdsaWJjIHZlcnNpb24gMi4yNispCisgICAgICAgIGZpbmQgJHtTfS9pbnRsIC1uYW1lICJwbHVyYWwueSIgfCB4YXJncyB0b3VjaAorICAgICAgICBDUFBGTEFHUz0iIiBvZV9ydW5jb25mCit9CisKK3JwY3N2YyA9ICJib290cGFyYW1fcHJvdC54IG5sbV9wcm90LnggcnN0YXQueCBcCisJICB5cHBhc3N3ZC54IGtsbV9wcm90LnggcmV4Lnggc21faW50ZXIueCBtb3VudC54IFwKKwkgIHJ1c2Vycy54IHNwcmF5LnggbmZzX3Byb3QueCBycXVvdGEueCBrZXlfcHJvdC54IgorCitkb19jb21waWxlICgpIHsKKwkjIC1XbCwtcnBhdGgtbGluayA8c3RhZ2luZz4vbGliIGluIExERkxBR1MgY2FuIGNhdXNlIGJyZWFrYWdlIGlmIGFub3RoZXIgZ2xpYmMgaXMgaW4gc3RhZ2luZworCXVuc2V0IExERkxBR1MKKwliYXNlX2RvX2NvbXBpbGUKKwkoCisJCWNkICR7U30vc3VucnBjL3JwY3N2YworCQlmb3IgciBpbiAke3JwY3N2Y307IGRvCisJCQloPWBlY2hvICRyfHNlZCAtZSdzLFwueCQsLmgsJ2AKKwkJCXJtIC1mICRoCisJCQkke0J9L3N1bnJwYy9jcm9zcy1ycGNnZW4gLWggJHIgLW8gJGggfHwgYmJ3YXJuICIke1BOfTogdW5hYmxlIHRvIGdlbmVyYXRlIGhlYWRlciBmb3IgJHIiCisJCWRvbmUKKwkpCisJZWNobyAiQWRqdXN0IGxkZCBzY3JpcHQiCisJaWYgWyAtbiAiJHtSVExETElTVH0iIF0KKwl0aGVuCisJCXByZXZydGxkPWBjYXQgJHtCfS9lbGYvbGRkIHwgZ3JlcCAiXlJUTERMSVNUPSIgfCBzZWQgJ3MjXlJUTERMSVNUPSJcP1woW14iXSpcKSJcPyQjXDEjJ2AKKwkJaWYgWyAiJHtwcmV2cnRsZH0iICE9ICIke1JUTERMSVNUfSIgXQorCQl0aGVuCisJCQlzZWQgLWkgJHtCfS9lbGYvbGRkIC1lICJzI15SVExETElTVD0uKlwkI1JUTERMSVNUPVwiJHtwcmV2cnRsZH0gJHtSVExETElTVH1cIiMiCisJCWZpCisJZmkKKworfQorCisjIFVzZSB0aGUgaG9zdCBsb2NhbGUgYXJjaGl2ZSB3aGVuIGJ1aWx0IGZvciBuYXRpdmVzZGsgc28gdGhhdCB3ZSBkb24ndCBuZWVkIHRvCisjIHNoaXAgYSBjb21wbGV0ZSAoMTAwTUIpIGxvY2FsZSBzZXQuCitkb19jb21waWxlX3ByZXBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgeworICAgIGVjaG8gImNvbXBsb2NhbGVkaXI9L3Vzci9saWIvbG9jYWxlIiA+PiAke1N9L2NvbmZpZ3Bhcm1zCit9CisKK3JlcXVpcmUgZ2xpYmMtcGFja2FnZS5pbmMKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaWZ1cGRvd24vZmlsZXMvZGVmbjItYy1tYW4tZG9uLXQtcmVseS1vbi1kcGtnLWFyY2hpdGVjdHVyZS10by1zZXQtYS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pZnVwZG93bi9maWxlcy9kZWZuMi1jLW1hbi1kb24tdC1yZWx5LW9uLWRwa2ctYXJjaGl0ZWN0dXJlLXRvLXNldC1hLnBhdGNoCmluZGV4IDhjNGQ5NTMuLmEyNGI4Y2QgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pZnVwZG93bi9maWxlcy9kZWZuMi1jLW1hbi1kb24tdC1yZWx5LW9uLWRwa2ctYXJjaGl0ZWN0dXJlLXRvLXNldC1hLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pZnVwZG93bi9maWxlcy9kZWZuMi1jLW1hbi1kb24tdC1yZWx5LW9uLWRwa2ctYXJjaGl0ZWN0dXJlLXRvLXNldC1hLnBhdGNoCkBAIC0xMiw2ICsxMiw3IEBACiBsaWtlIHRoZSBsb29wYmFjayBkZXZpY2Ugbm90IGJlaW5nIGNvbmZpZ3VyZWQvZW5hYmxlZC4KIAogU2lnbmVkLW9mZi1ieTogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+CitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIGRlZm4yYy5wbCAgIHwgNiArKystLS0KICBkZWZuMm1hbi5wbCB8IDYgKysrLS0tCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2J1aWxkLWFwcGxpYW5jZS1pbWFnZV8xNS4wLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2J1aWxkLWFwcGxpYW5jZS1pbWFnZV8xNS4wLjAuYmIKaW5kZXggMDQ1NzgxYy4uYmQ0NDFhZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2ltYWdlcy9idWlsZC1hcHBsaWFuY2UtaW1hZ2VfMTUuMC4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbWFnZXMvYnVpbGQtYXBwbGlhbmNlLWltYWdlXzE1LjAuMC5iYgpAQCAtMyw4ICszLDcgQEAKIEhPTUVQQUdFID0gImh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2N1bWVudGF0aW9uL2J1aWxkLWFwcGxpYW5jZSIKIAogTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPUkVCQVNFfS9MSUNFTlNFO21kNT00ZDkyY2QzNzNhYmRhMzkzN2MyYmM0N2ZiYzQ5ZDY5MCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly8ke0NPUkVCQVNFfS9tZXRhL0NPUFlJTkcuTUlUO21kNT0zZGE5Y2ZiY2I3ODhjODBhMDM4NDM2MWI0ZGUyMDQyMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09SRUJBU0V9L21ldGEvQ09QWUlORy5NSVQ7bWQ1PTNkYTljZmJjYjc4OGM4MGEwMzg0MzYxYjRkZTIwNDIwIgogCiBJTUFHRV9JTlNUQUxMID0gInBhY2thZ2Vncm91cC1jb3JlLWJvb3QgcGFja2FnZWdyb3VwLWNvcmUtc3NoLW9wZW5zc2ggcGFja2FnZWdyb3VwLXNlbGYtaG9zdGVkIFwKICAgICAgICAgICAgICAgICAga2VybmVsLWRldiBrZXJuZWwtZGV2c3JjIGNvbm5tYW4gY29ubm1hbi1wbHVnaW4tZXRoZXJuZXQgZGhjcC1jbGllbnQgXApAQCAtMTksMTIgKzE4LDEyIEBACiBBUFBFTkQgKz0gInJvb3Rmc3R5cGU9ZXh0NCBxdWlldCIKIAogREVQRU5EUyA9ICJ6aXAtbmF0aXZlIHB5dGhvbjMtcGlwLW5hdGl2ZSIKLUlNQUdFX0ZTVFlQRVMgPSAidm1kayIKK0lNQUdFX0ZTVFlQRVMgPSAid2ljLnZtZGsiCiAKIGluaGVyaXQgY29yZS1pbWFnZSBtb2R1bGUtYmFzZSBzZXR1cHRvb2xzMwogCi1TUkNSRVYgPz0gImI4NTkyNzJhZDQwNTMxODVkNDk4MGNhYzA1NDgxYjQzMGUwNTM0NWYiCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3Bva3k7YnJhbmNoPXB5cm8gXAorU1JDUkVWID89ICJhOTU4ODY0NmZjZWMxN2U1MzE5OWUxZWE3ZTdiOGRjY2YxNDA4MTdlIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9wb2t5O2JyYW5jaD1yb2NrbyBcCiAgICAgICAgICAgIGZpbGU6Ly9Zb2N0b19CdWlsZF9BcHBsaWFuY2Uudm14IFwKICAgICAgICAgICAgZmlsZTovL1lvY3RvX0J1aWxkX0FwcGxpYW5jZS52bXhmIFwKICAgICAgICAgICAgZmlsZTovL1JFQURNRV9WaXJ0dWFsQm94X0d1ZXN0X0FkZGl0aW9ucy50eHQgXApAQCAtMTAxLDcgKzEwMCwxMSBAQAogCWV4cG9ydCBTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSX05BVElWRX0KIAlleHBvcnQgSE9NRT0ke0lNQUdFX1JPT1RGU30vaG9tZS9idWlsZGVyCiAJbWtkaXIgLXAgJHtJTUFHRV9ST09URlN9L2hvbWUvYnVpbGRlci8uY2FjaGUvcGlwCi0JcGlwMyBpbnN0YWxsIC0tdXNlciAtSSAtVSAtdiAtciAke0lNQUdFX1JPT1RGU30vaG9tZS9idWlsZGVyL3Bva3kvYml0YmFrZS90b2FzdGVyLXJlcXVpcmVtZW50cy50eHQKKwlwaXAzX2luc3RhbGxfcGFyYW1zPSItLXVzZXIgLUkgLVUgLXYgLXIgJHtJTUFHRV9ST09URlN9L2hvbWUvYnVpbGRlci9wb2t5L2JpdGJha2UvdG9hc3Rlci1yZXF1aXJlbWVudHMudHh0IgorCWlmIFsgLW4gIiR7aHR0cF9wcm94eX0iIF07IHRoZW4KKwkgICBwaXAzX2luc3RhbGxfcGFyYW1zPSIke3BpcDNfaW5zdGFsbF9wYXJhbXN9IC0tcHJveHkgJHtodHRwX3Byb3h5fSIKKwlmaQorCXBpcDMgaW5zdGFsbCAke3BpcDNfaW5zdGFsbF9wYXJhbXN9CiAJY2hvd24gLVIgYnVpbGRlci5idWlsZGVyICR7SU1BR0VfUk9PVEZTfS9ob21lL2J1aWxkZXIvLmxvY2FsCiAJY2hvd24gLVIgYnVpbGRlci5idWlsZGVyICR7SU1BR0VfUk9PVEZTfS9ob21lL2J1aWxkZXIvLmNhY2hlCiB9CkBAIC0xMjAsNyArMTIzLDcgQEAKIAljZCAke1dPUktESVJ9CiAJbWtkaXIgLXAgWW9jdG9fQnVpbGRfQXBwbGlhbmNlCiAJY3AgKi52bXgqIFlvY3RvX0J1aWxkX0FwcGxpYW5jZQotCWxuIC1zZiAke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfS52bWRrIFlvY3RvX0J1aWxkX0FwcGxpYW5jZS9Zb2N0b19CdWlsZF9BcHBsaWFuY2Uudm1kaworCWxuIC1zZiAke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LndpYy52bWRrIFlvY3RvX0J1aWxkX0FwcGxpYW5jZS9Zb2N0b19CdWlsZF9BcHBsaWFuY2Uudm1kawogCXppcCAtciAke0lNR0RFUExPWURJUn0vWW9jdG9fQnVpbGRfQXBwbGlhbmNlLSR7REFURVRJTUV9LnppcCBZb2N0b19CdWlsZF9BcHBsaWFuY2UKIAlsbiAtc2YgWW9jdG9fQnVpbGRfQXBwbGlhbmNlLSR7REFURVRJTUV9LnppcCAke0lNR0RFUExPWURJUn0vWW9jdG9fQnVpbGRfQXBwbGlhbmNlLnppcAogfQpAQCAtMTMwLDQgKzEzMyw0IEBACiAgICAgYmIuYnVpbGQuZXhlY19mdW5jKCdjcmVhdGVfYnVuZGxlX2ZpbGVzJywgZCkKIH0KIAotYWRkdGFzayBidW5kbGVfZmlsZXMgYWZ0ZXIgZG9fdm1pbWcgYmVmb3JlIGRvX2ltYWdlX2NvbXBsZXRlCithZGR0YXNrIGJ1bmRsZV9maWxlcyBhZnRlciBkb19pbWFnZV93aWMgYmVmb3JlIGRvX2ltYWdlX2NvbXBsZXRlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2NvcmUtaW1hZ2UtbWluaW1hbC1pbml0cmFtZnMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2NvcmUtaW1hZ2UtbWluaW1hbC1pbml0cmFtZnMuYmIKaW5kZXggNTc5NGEyNS4uYzQ0NmU4NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2ltYWdlcy9jb3JlLWltYWdlLW1pbmltYWwtaW5pdHJhbWZzLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbWFnZXMvY29yZS1pbWFnZS1taW5pbWFsLWluaXRyYW1mcy5iYgpAQCAtOCw3ICs4LDcgQEAKICMgRG8gbm90IHBvbGx1dGUgdGhlIGluaXRyZCBpbWFnZSB3aXRoIHJvb3RmcyBmZWF0dXJlcwogSU1BR0VfRkVBVFVSRVMgPSAiIgogCi1leHBvcnQgSU1BR0VfQkFTRU5BTUUgPSAiY29yZS1pbWFnZS1taW5pbWFsLWluaXRyYW1mcyIKK2V4cG9ydCBJTUFHRV9CQVNFTkFNRSA9ICIke01MUFJFRklYfWNvcmUtaW1hZ2UtbWluaW1hbC1pbml0cmFtZnMiCiBJTUFHRV9MSU5HVUFTID0gIiIKIAogTElDRU5TRSA9ICJNSVQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2NvcmUtaW1hZ2UtdGlueS1pbml0cmFtZnMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2NvcmUtaW1hZ2UtdGlueS1pbml0cmFtZnMuYmIKaW5kZXggMTg0NzI3ZC4uMTY5OTVlNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2ltYWdlcy9jb3JlLWltYWdlLXRpbnktaW5pdHJhbWZzLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbWFnZXMvY29yZS1pbWFnZS10aW55LWluaXRyYW1mcy5iYgpAQCAtMSwxMCArMSw5IEBACiAjIFNpbXBsZSBpbml0cmFtZnMgaW1hZ2UgYXJ0aWZhY3QgZ2VuZXJhdGlvbiBmb3IgdGlueSBpbWFnZXMuCiBERVNDUklQVElPTiA9ICJUaW55IGltYWdlIGNhcGFibGUgb2YgYm9vdGluZyBhIGRldmljZS4gVGhlIGtlcm5lbCBpbmNsdWRlcyBcCiB0aGUgTWluaW1hbCBSQU0tYmFzZWQgSW5pdGlhbCBSb290IEZpbGVzeXN0ZW0gKGluaXRyYW1mcyksIHdoaWNoIGZpbmRzIHRoZSBcCi1maXJzdCAnaW5pdCcgcHJvZ3JhbSBtb3JlIGVmZmljaWVudGx5LiAgY29yZS1pbWFnZS10aW55LWluaXRyYW1mcyBkb2Vzbid0IFwKK2ZpcnN0ICdpbml0JyBwcm9ncmFtIG1vcmUgZWZmaWNpZW50bHkuIGNvcmUtaW1hZ2UtdGlueS1pbml0cmFtZnMgZG9lc24ndCBcCiBhY3R1YWxseSBnZW5lcmF0ZSBhbiBpbWFnZSBidXQgcmF0aGVyIGdlbmVyYXRlcyBib290IGFuZCByb290ZnMgYXJ0aWZhY3RzIFwKLWludG8gYSBjb21tb24gbG9jYXRpb24gdGhhdCBjYW4gc3Vic2VxdWVudGx5IGJlIHBpY2tlZCB1cCBieSBleHRlcm5hbCBpbWFnZSBcCi1nZW5lcmF0aW9uIHRvb2xzIHN1Y2ggYXMgd2ljLiIKK3RoYXQgY2FuIHN1YnNlcXVlbnRseSBiZSBwaWNrZWQgdXAgYnkgZXh0ZXJuYWwgaW1hZ2UgZ2VuZXJhdGlvbiB0b29scyBzdWNoIGFzIHdpYy4iCiAKIFBBQ0tBR0VfSU5TVEFMTCA9ICJpbml0cmFtZnMtbGl2ZS1ib290IHBhY2thZ2Vncm91cC1jb3JlLWJvb3QgZHJvcGJlYXIgJHtWSVJUVUFMLVJVTlRJTUVfYmFzZS11dGlsc30gdWRldiBiYXNlLXBhc3N3ZCAke1JPT1RGU19CT09UU1RSQVBfSU5TVEFMTH0iCiAKQEAgLTE3LDcgKzE2LDcgQEAKIExJQ0VOU0UgPSAiTUlUIgogCiAjIGRvbid0IGFjdHVhbGx5IGdlbmVyYXRlIGFuIGltYWdlLCBqdXN0IHRoZSBhcnRpZmFjdHMgbmVlZGVkIGZvciBvbmUKLUlNQUdFX0ZTVFlQRVMgPSAiJHtJTklUUkFNRlNfRlNUWVBFU30gd2ljIgorSU1BR0VfRlNUWVBFUyA9ICIke0lOSVRSQU1GU19GU1RZUEVTfSIKIAogaW5oZXJpdCBjb3JlLWltYWdlCiAKQEAgLTQwLDMgKzM5LDUgQEAKIH0KIAogSU1BR0VfUFJFUFJPQ0VTU19DT01NQU5EICs9ICJ0aW55aW5pdHJkOyIKKworUUJfS0VSTkVMX0NNRExJTkVfQVBQRU5EICs9ICJkZWJ1Z3NoZWxsPTMgaW5pdD0vYmluL2J1c3lib3ggc2ggaW5pdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2ZpbGVzL2luaXQtaW5zdGFsbC1lZmkuc2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9maWxlcy9pbml0LWluc3RhbGwtZWZpLnNoCmluZGV4IDVhZDNhNjAuLjcwNjQxOGYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2ZpbGVzL2luaXQtaW5zdGFsbC1lZmkuc2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvZmlsZXMvaW5pdC1pbnN0YWxsLWVmaS5zaApAQCAtMTg2LDYgKzE4NiwxMyBAQAogCiBwYXJ0ZWQgJHtkZXZpY2V9IHByaW50CiAKK2VjaG8gIldhaXRpbmcgZm9yIGRldmljZSBub2Rlcy4uLiIKK0M9MAord2hpbGUgWyAkQyAtbmUgMyBdICYmIFsgISAtZSAkYm9vdGZzICAtbyAhIC1lICRyb290ZnMgLW8gISAtZSAkc3dhcCBdOyBkbworICAgIEM9JCgoIEMgKyAxICkpCisgICAgc2xlZXAgMQorZG9uZQorCiBlY2hvICJGb3JtYXR0aW5nICRib290ZnMgdG8gdmZhdC4uLiIKIG1rZnMudmZhdCAkYm9vdGZzCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2ZpbGVzL2luaXQtaW5zdGFsbC5zaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2ZpbGVzL2luaXQtaW5zdGFsbC5zaAppbmRleCA1NzI2MTNlLi5kYWRlMDU5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9maWxlcy9pbml0LWluc3RhbGwuc2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvZmlsZXMvaW5pdC1pbnN0YWxsLnNoCkBAIC0xMzIsNyArMTMyLDcgQEAKIAogZGlza19zaXplPSQocGFydGVkICR7ZGV2aWNlfSB1bml0IG1iIHByaW50IHwgZ3JlcCAnXkRpc2sgLio6IC4qTUInIHwgY3V0IC1kIiAiIC1mIDMgfCBzZWQgLWUgInMvTUIvLyIpCiAKLWdydWJfdmVyc2lvbj0kKGdydWItaW5zdGFsbCAtdnxzZWQgJ3MvLiogXChbMC05XVwpLiovXDEvJykKK2dydWJfdmVyc2lvbj0kKGdydWItaW5zdGFsbCAtVnxzZWQgJ3MvLiogXChbMC05XVwpLiovXDEvJykKIAogaWYgWyAkZ3J1Yl92ZXJzaW9uIC1lcSAwIF0gOyB0aGVuCiAgICAgYmlvc19ib290X3NpemU9MApAQCAtMjExLDYgKzIxMSwxMyBAQAogCiBwYXJ0ZWQgJHtkZXZpY2V9IHByaW50CiAKK2VjaG8gIldhaXRpbmcgZm9yIGRldmljZSBub2Rlcy4uLiIKK0M9MAord2hpbGUgWyAkQyAtbmUgMyBdICYmIFsgISAtZSAkYm9vdGZzICAtbyAhIC1lICRyb290ZnMgLW8gISAtZSAkc3dhcCBdOyBkbworICAgIEM9JCgoIEMgKyAxICkpCisgICAgc2xlZXAgMQorZG9uZQorCiBlY2hvICJGb3JtYXR0aW5nICRib290ZnMgdG8gZXh0My4uLiIKIG1rZnMuZXh0MyAkYm9vdGZzCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2ZpbGVzL2luaXQtbGl2ZS5zaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2ZpbGVzL2luaXQtbGl2ZS5zaAppbmRleCA0NDFiNDFjLi40NmNhYjZjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9maWxlcy9pbml0LWxpdmUuc2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvZmlsZXMvaW5pdC1saXZlLnNoCkBAIC04NCw2ICs4NCwxMCBAQAogICAgICMgZGV2aWNlIG5vZGUgY3JlYXRpb24gZXZlbnRzIHdlcmUgaGFuZGxlZCwgdG8gYXZvaWQgdW5leHBlY3RlZCBiZWhhdmlvcgogICAgIGtpbGxhbGwgLTkgIiR7X1VERVZfREFFTU9OIyMqL30iIDI+L2Rldi9udWxsCiAKKyAgICAjIERvbid0IHJ1biBzeXN0ZW1kLXVwZGF0ZS1kb25lIG9uIHN5c3RlbWQtYmFzZWQgbGl2ZSBzeXN0ZW1zCisgICAgIyBiZWNhdXNlIGl0IHRyaWdnZXJzIGEgc2xvdyByZWJ1aWxkIG9mIGxkY29uZmlnIGNhY2hlcy4KKyAgICB0b3VjaCAke1JPT1RfTU9VTlR9L2V0Yy8udXBkYXRlZCAke1JPT1RfTU9VTlR9L3Zhci8udXBkYXRlZAorCiAgICAgIyBBbGxvdyBmb3IgaWRlbnRpZmljYXRpb24gb2YgdGhlIHJlYWwgcm9vdCBldmVuIGFmdGVyIGJvb3QKICAgICBta2RpciAtcCAgJHtST09UX01PVU5UfS9tZWRpYS9yZWFscm9vdAogICAgIG1vdW50IC1uIC0tbW92ZSAiL3J1bi9tZWRpYS8ke1JPT1RfRElTS30iICR7Uk9PVF9NT1VOVH0vbWVkaWEvcmVhbHJvb3QKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1mcmFtZXdvcmsvbWRldiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1mcmFtZXdvcmsvbWRldgppbmRleCBhNWRmMWQ3Li45ODE0ZDk3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtZnJhbWV3b3JrL21kZXYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWZyYW1ld29yay9tZGV2CkBAIC0xLDUgKzEsNSBAQAogIyEvYmluL3NoCi0jIENvcHlyaWdodCAoQykgMjAxMSBPLlMuIFN5c3RlbXMgU29mdHdhcmUgTFREQS4KKyMgQ29weXJpZ2h0IChDKSAyMDExLCAyMDE3IE8uUy4gU3lzdGVtcyBTb2Z0d2FyZSBMVERBLgogIyBMaWNlbnNlZCBvbiBNSVQKIAogbWRldl9lbmFibGVkKCkgewpAQCAtMjUsNiArMjUsNiBAQAogCiAJIyBsb2FkIG1vZHVsZXMgZm9yIGRldmljZXMKIAlmaW5kIC9zeXMgLW5hbWUgbW9kYWxpYXMgfCB3aGlsZSByZWFkIG07IGRvCi0JCWxvYWRfa2VybmVsX21vZHVsZSAkKGNhdCAkbSkKKwkJbG9hZF9rZXJuZWxfbW9kdWxlICQoY2F0ICIkbSIpCiAJZG9uZQogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWZyYW1ld29yay9zZXR1cC1saXZlIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWZyYW1ld29yay9zZXR1cC1saXZlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjNzlmNDEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtZnJhbWV3b3JrL3NldHVwLWxpdmUKQEAgLTAsMCArMSw2NCBAQAorIy9iaW4vc2gKKyMgQ29weXJpZ2h0IChDKSAyMDExIE8uUy4gU3lzdGVtcyBTb2Z0d2FyZSBMVERBLgorIyBMaWNlbnNlZCBvbiBNSVQKKworc2V0dXBfZW5hYmxlZCgpIHsKKwlyZXR1cm4gMAorfQorCitzZXR1cF9ydW4oKSB7CitST09UX0lNQUdFPSJyb290ZnMuaW1nIgorSVNPTElOVVg9IiIKK1JPT1RfRElTSz0iIgorc2hlbGx0aW1lb3V0PTMwCisKKwlpZiBbIC16ICIkYm9vdHBhcmFtX3Jvb3QiIC1vICIkYm9vdHBhcmFtX3Jvb3QiID0gIi9kZXYvcmFtMCIgXTsgdGhlbgorCQllY2hvICJXYWl0aW5nIGZvciByZW1vdmFibGUgbWVkaWEuLi4iCisJCUM9MAorCQl3aGlsZSB0cnVlCisJCWRvCisJCSAgZm9yIGkgaW4gYGxzIC9ydW4vbWVkaWEgMj4vZGV2L251bGxgOyBkbworCQkgICAgICBpZiBbIC1mIC9ydW4vbWVkaWEvJGkvJFJPT1RfSU1BR0UgXSA7IHRoZW4KKwkJCQlmb3VuZD0ieWVzIgorCQkJCVJPT1RfRElTSz0iJGkiCisJCQkJYnJlYWsKKwkJCSAgZWxpZiBbIC1mIC9ydW4vbWVkaWEvJGkvaXNvbGludXgvJFJPT1RfSU1BR0UgXTsgdGhlbgorCQkJCWZvdW5kPSJ5ZXMiCisJCQkJSVNPTElOVVg9Imlzb2xpbnV4IgorCQkJCVJPT1RfRElTSz0iJGkiCisJCQkJYnJlYWsKKwkJICAgICAgZmkKKwkJICBkb25lCisJCSAgaWYgWyAiJGZvdW5kIiA9ICJ5ZXMiIF07IHRoZW4KKwkJICAgICAgYnJlYWs7CisJCSAgZmkKKwkJICAjIGRvbid0IHdhaXQgZm9yIG1vcmUgdGhhbiAkc2hlbGx0aW1lb3V0IHNlY29uZHMsIGlmIGl0J3Mgc2V0CisJCSAgaWYgWyAtbiAiJHNoZWxsdGltZW91dCIgXTsgdGhlbgorCQkgICAgICBlY2hvIC1uICIgIiAkKCggJHNoZWxsdGltZW91dCAtICRDICkpCisJCSAgICAgIGlmIFsgJEMgLWdlICRzaGVsbHRpbWVvdXQgXTsgdGhlbgorCQkgICAgICAgICAgIGVjaG8gIi4uLiIKKwkJCSAgIGVjaG8gIk1vdW50ZWQgZmlsZXN5c3RlbXMiCisJCSAgICAgICAgICAgbW91bnQgfCBncmVwIG1lZGlhCisJCSAgICAgICAgICAgZWNobyAiQXZhaWxhYmxlIGJsb2NrIGRldmljZXMiCisJCSAgICAgICAgICAgY2F0IC9wcm9jL3BhcnRpdGlvbnMKKwkJICAgICAgICAgICBmYXRhbCAiQ2Fubm90IGZpbmQgJFJPT1RfSU1BR0UgZmlsZSBpbiAvcnVuL21lZGlhLyogLCBkcm9wcGluZyB0byBhIHNoZWxsICIKKwkJICAgICAgZmkKKwkJICAgICAgQz0kKCggQyArIDEgKSkKKwkJICBmaQorCQkgIHNsZWVwIDEKKwkJZG9uZQorCQkjIFRoZSBleGlzdGluZyByb290ZnMgbW9kdWxlIGhhcyBubyBzdXBwb3J0IGZvciByb290ZnMgaW1hZ2VzLiBBc3NpZ24gdGhlIHJvb3RmcyBpbWFnZS4KKwkJYm9vdHBhcmFtX3Jvb3Q9Ii9ydW4vbWVkaWEvJFJPT1RfRElTSy8kSVNPTElOVVgvJFJPT1RfSU1BR0UiCisJZmkKKworCWlmIFsgIiRib290cGFyYW1fTEFCRUwiICE9ICJib290IiAtYSAtZiAvaW5pdC5kLyRib290cGFyYW1fTEFCRUwuc2ggXSA7IHRoZW4KKwkJaWYgWyAtZiAvcnVuL21lZGlhLyRpLyRJU09MSU5VWC8kUk9PVF9JTUFHRSBdIDsgdGhlbgorCQkgICAgLi9pbml0LmQvJGJvb3RwYXJhbV9MQUJFTC5zaCAkaS8kSVNPTElOVVggJFJPT1RfSU1BR0UgJHZpZGVvX21vZGUgJHZnYV9tb2RlICRjb25zb2xlX3BhcmFtcworCQllbHNlCisJCSAgICBmYXRhbCAiQ291bGQgbm90IGZpbmQgJGJvb3RwYXJhbV9MQUJFTCBzY3JpcHQiCisJCWZpCisKKwkJIyBJZiB3ZSdyZSBnZXR0aW5nIGhlcmUsIHdlIGZhaWxlZC4uLgorCQlmYXRhbCAiVGFyZ2V0ICRib290cGFyYW1fTEFCRUwgZmFpbGVkIgorCWZpCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtZnJhbWV3b3JrXzEuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1mcmFtZXdvcmtfMS4wLmJiCmluZGV4IDY3YTFiMDQuLjJhZmMzN2UgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1mcmFtZXdvcmtfMS4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1mcmFtZXdvcmtfMS4wLmJiCkBAIC0zLDcgKzMsNyBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT1JFQkFTRX0vbWV0YS9DT1BZSU5HLk1JVDttZDU9M2RhOWNmYmNiNzg4YzgwYTAzODQzNjFiNGRlMjA0MjAiCiBSREVQRU5EU18ke1BOfSArPSAiJHtWSVJUVUFMLVJVTlRJTUVfYmFzZS11dGlsc30iCiAKLVBSID0gInIyIgorUFIgPSAicjQiCiAKIGluaGVyaXQgYWxsYXJjaAogCkBAIC0xMyw3ICsxMyw4IEBACiAgICAgICAgICAgIGZpbGU6Ly9tZGV2IFwKICAgICAgICAgICAgZmlsZTovL3VkZXYgXAogICAgICAgICAgICBmaWxlOi8vZTJmcyBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJ1ZyIKKyAgICAgICAgICAgZmlsZTovL2RlYnVnIFwKKyAgICAgICAgICAiCiAKIFMgPSAiJHtXT1JLRElSfSIKIApAQCAtNDgsNyArNDksOCBAQAogICAgICAgICAgICAgaW5pdHJhbWZzLW1vZHVsZS11ZGV2IFwKICAgICAgICAgICAgIGluaXRyYW1mcy1tb2R1bGUtZTJmcyBcCiAgICAgICAgICAgICBpbml0cmFtZnMtbW9kdWxlLXJvb3RmcyBcCi0gICAgICAgICAgICBpbml0cmFtZnMtbW9kdWxlLWRlYnVnIgorICAgICAgICAgICAgaW5pdHJhbWZzLW1vZHVsZS1kZWJ1ZyBcCisgICAgICAgICAgICIKIAogRklMRVNfJHtQTn0tYmFzZSA9ICIvaW5pdCAvaW5pdC5kLzk5LWZpbmlzaCAvZGV2IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtbGl2ZS1pbnN0YWxsLWVmaV8xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtbGl2ZS1pbnN0YWxsLWVmaV8xLjAuYmIKaW5kZXggMzJjMWZjZS4uMmE3Zjg0ZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWxpdmUtaW5zdGFsbC1lZmlfMS4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1saXZlLWluc3RhbGwtZWZpXzEuMC5iYgpAQCAtMjEsNCArMjEsNCBAQAogCiBGSUxFU18ke1BOfSA9ICIgL2luc3RhbGwtZWZpLnNoICIKIAotQ09NUEFUSUJMRV9IT1NUID0gIihpLjg2fHg4Nl82NCkuKi1saW51eCIKK0NPTVBBVElCTEVfSE9TVCA9ICIoaS44Ni4qfHg4Nl82NC4qfGFhcmNoNjQuKiktbGludXgiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtbGl2ZS1pbnN0YWxsXzEuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1saXZlLWluc3RhbGxfMS4wLmJiCmluZGV4IDg4YjNiMzAuLmE1NTNhMGQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1saXZlLWluc3RhbGxfMS4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1saXZlLWluc3RhbGxfMS4wLmJiCkBAIC0yMSw0ICsyMSw0IEBACiAKIEZJTEVTXyR7UE59ID0gIiAvaW5zdGFsbC5zaCAiCiAKLUNPTVBBVElCTEVfSE9TVCA9ICIoaS44Nnx4ODZfNjQpLiotbGludXgiCitDT01QQVRJQkxFX0hPU1QgPSAiKGkuODYuKnx4ODZfNjQuKnxhYXJjaDY0LiopLWxpbnV4IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLW1vZHVsZS1pbnN0YWxsLWVmaV8xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtbW9kdWxlLWluc3RhbGwtZWZpXzEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZTdmNzZmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLW1vZHVsZS1pbnN0YWxsLWVmaV8xLjAuYmIKQEAgLTAsMCArMSwxNyBAQAorU1VNTUFSWSA9ICJpbml0cmFtZnMtZnJhbWV3b3JrIG1vZHVsZSBmb3IgRUZJIGluc3RhbGxhdGlvbiBvcHRpb24iCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09SRUJBU0V9L21ldGEvQ09QWUlORy5NSVQ7bWQ1PTNkYTljZmJjYjc4OGM4MGEwMzg0MzYxYjRkZTIwNDIwIgorUkRFUEVORFNfJHtQTn0gPSAiaW5pdHJhbWZzLWZyYW1ld29yay1iYXNlIHBhcnRlZCBlMmZzcHJvZ3MtbWtlMmZzIGRvc2ZzdG9vbHMgdXRpbC1saW51eC1ibGtpZCIKKworUFIgPSAicjQiCisKK1NSQ19VUkkgPSAiZmlsZTovL2luaXQtaW5zdGFsbC1lZmkuc2giCisKK1MgPSAiJHtXT1JLRElSfSIKKworZG9faW5zdGFsbCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0vaW5pdC5kCisgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaW5pdC1pbnN0YWxsLWVmaS5zaCAke0R9L2luaXQuZC9pbnN0YWxsLWVmaS5zaAorfQorCitGSUxFU18ke1BOfSA9ICIvaW5pdC5kL2luc3RhbGwtZWZpLnNoIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLW1vZHVsZS1pbnN0YWxsXzEuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1tb2R1bGUtaW5zdGFsbF8xLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDJiNjlmMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1tb2R1bGUtaW5zdGFsbF8xLjAuYmIKQEAgLTAsMCArMSwyMiBAQAorU1VNTUFSWSA9ICJpbml0cmFtZnMtZnJhbWV3b3JrIG1vZHVsZSBmb3IgaW5zdGFsbGF0aW9uIG9wdGlvbiIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT1JFQkFTRX0vbWV0YS9DT1BZSU5HLk1JVDttZDU9M2RhOWNmYmNiNzg4YzgwYTAzODQzNjFiNGRlMjA0MjAiCitSREVQRU5EU18ke1BOfSA9ICJpbml0cmFtZnMtZnJhbWV3b3JrLWJhc2UgZ3J1YiBwYXJ0ZWQgZTJmc3Byb2dzLW1rZTJmcyB1dGlsLWxpbnV4LWJsa2lkIgorCisjIFRoZSBzYW1lIHJlc3RyaWN0aW9uIGFzIGdydWIKK0NPTVBBVElCTEVfSE9TVCA9ICcoeDg2XzY0Lip8aS44Ni4qfGFybS4qfGFhcmNoNjQuKiktKGxpbnV4Lip8ZnJlZWJzZC4qKScKK0NPTVBBVElCTEVfSE9TVF9hcm12N2EgPSAnbnVsbCcKK0NPTVBBVElCTEVfSE9TVF9hcm12N3ZlID0gJ251bGwnCisKK1BSID0gInIxIgorCitTUkNfVVJJID0gImZpbGU6Ly9pbml0LWluc3RhbGwuc2giCisKK1MgPSAiJHtXT1JLRElSfSIKKworZG9faW5zdGFsbCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0vaW5pdC5kCisgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaW5pdC1pbnN0YWxsLnNoICR7RH0vaW5pdC5kL2luc3RhbGwuc2gKK30KKworRklMRVNfJHtQTn0gPSAiL2luaXQuZC9pbnN0YWxsLnNoIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLW1vZHVsZS1zZXR1cC1saXZlXzEuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1tb2R1bGUtc2V0dXAtbGl2ZV8xLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQyZmU5ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1tb2R1bGUtc2V0dXAtbGl2ZV8xLjAuYmIKQEAgLTAsMCArMSwyMCBAQAorU1VNTUFSWSA9ICJpbml0cmFtZnMtZnJhbWV3b3JrIG1vZHVsZSBmb3IgbGl2ZSBib290aW5nIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPUkVCQVNFfS9tZXRhL0NPUFlJTkcuTUlUO21kNT0zZGE5Y2ZiY2I3ODhjODBhMDM4NDM2MWI0ZGUyMDQyMCIKK1JERVBFTkRTXyR7UE59ID0gImluaXRyYW1mcy1mcmFtZXdvcmstYmFzZSB1ZGV2LWV4dHJhY29uZiIKKworUFIgPSAicjQiCisKK2luaGVyaXQgYWxsYXJjaAorCitGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9pbml0cmFtZnMtZnJhbWV3b3JrOiIKK1NSQ19VUkkgPSAiZmlsZTovL3NldHVwLWxpdmUiCisKK1MgPSAiJHtXT1JLRElSfSIKKworZG9faW5zdGFsbCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0vaW5pdC5kCisgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vc2V0dXAtbGl2ZSAke0R9L2luaXQuZC84MC1zZXR1cC1saXZlCit9CisKK0ZJTEVTXyR7UE59ID0gIi9pbml0LmQvODAtc2V0dXAtbGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0c2NyaXB0cy9pbml0c2NyaXB0cy0xLjAvcG9wdWxhdGUtdm9sYXRpbGUuc2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHNjcmlwdHMvaW5pdHNjcmlwdHMtMS4wL3BvcHVsYXRlLXZvbGF0aWxlLnNoCmluZGV4IDIyYTcxZWMuLjM1MzE2ZWMgMTAwNzU1Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0c2NyaXB0cy9pbml0c2NyaXB0cy0xLjAvcG9wdWxhdGUtdm9sYXRpbGUuc2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRzY3JpcHRzL2luaXRzY3JpcHRzLTEuMC9wb3B1bGF0ZS12b2xhdGlsZS5zaApAQCAtMjUsOCArMjUsMTggQEAKIFsgIiR7VkVSQk9TRX0iICE9ICJubyIgXSAmJiBlY2hvICJQb3B1bGF0aW5nIHZvbGF0aWxlIEZpbGVzeXN0ZW1zLiIKIAogY3JlYXRlX2ZpbGUoKSB7CisJRVhFQz0iIgorCVsgLXogIiQyIiBdICYmIHsKKwkJRVhFQz0iCisJCXRvdWNoIFwiJDFcIjsKKwkJIgorCX0gfHwgeworCQlFWEVDPSIKKwkJY3AgXCIkMlwiIFwiJDFcIjsKKwkJIgorCX0KIAlFWEVDPSIKLQl0b3VjaCBcIiQxXCI7CisJJHtFWEVDfQogCWNob3duICR7VFVTRVJ9LiR7VEdST1VQfSAkMSB8fCBlY2hvIFwiRmFpbGVkIHRvIHNldCBvd25lciAtJHtUVVNFUn0tIGZvciAtJDEtLlwiID4vZGV2L3R0eTAgMj4mMTsKIAljaG1vZCAke1RNT0RFfSAkMSB8fCBlY2hvIFwiRmFpbGVkIHRvIHNldCBtb2RlIC0ke1RNT0RFfS0gZm9yIC0kMS0uXCIgPi9kZXYvdHR5MCAyPiYxICIKIApAQCAtMTg3LDcgKzE5Nyw5IEBACiAKIAkJY2FzZSAiJHtUVFlQRX0iIGluCiAJCQkiZiIpICBbICIke1ZFUkJPU0V9IiAhPSAibm8iIF0gJiYgZWNobyAiQ3JlYXRpbmcgZmlsZSAtJHtUTkFNRX0tLiIKLQkJCQljcmVhdGVfZmlsZSAiJHtUTkFNRX0iCisJCQkJVFNPVVJDRT0iJFRMVEFSR0VUIgorCQkJCVsgIiR7VFNPVVJDRX0iID0gIm5vbmUiIF0gJiYgVFNPVVJDRT0iIgorCQkJCWNyZWF0ZV9maWxlICIke1ROQU1FfSIgIiR7VFNPVVJDRX0iICYKIAkJCQk7OwogCQkJImQiKSAgWyAiJHtWRVJCT1NFfSIgIT0gIm5vIiBdICYmIGVjaG8gIkNyZWF0aW5nIGRpcmVjdG9yeSAtJHtUTkFNRX0tLiIKIAkJCQlta19kaXIgIiR7VE5BTUV9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRzY3JpcHRzL2luaXRzY3JpcHRzLTEuMC92b2xhdGlsZXMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHNjcmlwdHMvaW5pdHNjcmlwdHMtMS4wL3ZvbGF0aWxlcwppbmRleCBiYzE3YzQ1Li4yMDExMDY2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHNjcmlwdHMvaW5pdHNjcmlwdHMtMS4wL3ZvbGF0aWxlcworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHNjcmlwdHMvaW5pdHNjcmlwdHMtMS4wL3ZvbGF0aWxlcwpAQCAtMjcsNyArMjcsNiBAQAogZCByb290IHJvb3QgMDc1NSAvdmFyL3ZvbGF0aWxlL2xvZyBub25lCiBkIHJvb3Qgcm9vdCAxNzc3IC92YXIvdm9sYXRpbGUvdG1wIG5vbmUKIGwgcm9vdCByb290IDE3NzcgL3Zhci9sb2NrIC9ydW4vbG9jawotbCByb290IHJvb3QgMDc1NSAvdmFyL2xvZyAvdmFyL3ZvbGF0aWxlL2xvZwogbCByb290IHJvb3QgMDc1NSAvdmFyL3J1biAvcnVuCiBsIHJvb3Qgcm9vdCAxNzc3IC92YXIvdG1wIC92YXIvdm9sYXRpbGUvdG1wCiBsIHJvb3Qgcm9vdCAxNzc3IC90bXAgL3Zhci90bXAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0c2NyaXB0cy9pbml0c2NyaXB0c18xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHNjcmlwdHMvaW5pdHNjcmlwdHNfMS4wLmJiCmluZGV4IDJlNGY3ZTQuLjkxZWVhNGIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0c2NyaXB0cy9pbml0c2NyaXB0c18xLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRzY3JpcHRzL2luaXRzY3JpcHRzXzEuMC5iYgpAQCAtMSw0ICsxLDUgQEAKIFNVTU1BUlkgPSAiU3lzViBpbml0IHNjcmlwdHMiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vZmVkb3JhLXN5c3YvaW5pdHNjcmlwdHMiCiBERVNDUklQVElPTiA9ICJJbml0c2NyaXB0cyBwcm92aWRlIHRoZSBiYXNpYyBzeXN0ZW0gc3RhcnR1cCBpbml0aWFsaXphdGlvbiBzY3JpcHRzIGZvciB0aGUgc3lzdGVtLiAgVGhlc2Ugc2NyaXB0cyBpbmNsdWRlIGFjdGlvbnMgc3VjaCBhcyBmaWxlc3lzdGVtIG1vdW50aW5nLCBmc2NrLCBSVEMgbWFuaXB1bGF0aW9uIGFuZCBvdGhlciBhY3Rpb25zIHJvdXRpbmVseSBwZXJmb3JtZWQgYXQgc3lzdGVtIHN0YXJ0dXAuICBJbiBhZGRpdGlvbiwgdGhlIHNjcmlwdHMgYXJlIGFsc28gdXNlZCBkdXJpbmcgc3lzdGVtIHNodXRkb3duIHRvIHJldmVyc2UgdGhlIGFjdGlvbnMgcGVyZm9ybWVkIGF0IHN0YXJ0dXAuIgogU0VDVElPTiA9ICJiYXNlIgogTElDRU5TRSA9ICJHUEx2MiIKQEAgLTQyLDE5ICs0MywxOSBAQAogCiBLRVJORUxfVkVSU0lPTiA9ICIiCiAKLWluaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcwogREVQRU5EU19hcHBlbmQgPSAiIHVwZGF0ZS1yYy5kLW5hdGl2ZSIKIFBBQ0tBR0VfV1JJVEVfREVQU19hcHBlbmQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywnc3lzdGVtZC1zeXN0ZW1jdGwtbmF0aXZlJywnJyxkKX0iCiAKLVBBQ0tBR0VTID0rICIke1BOfS1mdW5jdGlvbnMiCi1SREVQRU5EU18ke1BOfSA9ICIke1BOfS1mdW5jdGlvbnMgXAotICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3NlbGludXgnLCdiYXNoJywnJyxkKX0gXAorUEFDS0FHRVMgPSsgIiR7UE59LWZ1bmN0aW9ucyAke1BOfS1zdXNoZWxsIgorUkRFUEVORFNfJHtQTn0gPSAiaW5pdGQtZnVuY3Rpb25zIFwKKyAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzZWxpbnV4JywnJHtQTn0tc3VzaGVsbCcsJycsZCl9IFwKIAkJICIKKyMgUmVjb21tZW5kIHBuLWZ1bmN0aW9ucyBzbyB0aGF0IGl0IHdpbGwgYmUgYSBwcmVmZXJyZWQgZGVmYXVsdCBwcm92aWRlciBmb3IgaW5pdGQtZnVuY3Rpb25zCitSUkVDT01NRU5EU18ke1BOfSA9ICIke1BOfS1mdW5jdGlvbnMiCitSUFJPVklERVNfJHtQTn0tZnVuY3Rpb25zID0gImluaXRkLWZ1bmN0aW9ucyIKK1JDT05GTElDVFNfJHtQTn0tZnVuY3Rpb25zID0gImxzYmluaXRzY3JpcHRzIgogRklMRVNfJHtQTn0tZnVuY3Rpb25zID0gIiR7c3lzY29uZmRpcn0vaW5pdC5kL2Z1bmN0aW9ucyoiCi0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZXyR7UE59LWZ1bmN0aW9ucyA9ICI5MCIKLUFMVEVSTkFUSVZFXyR7UE59LWZ1bmN0aW9ucyA9ICJmdW5jdGlvbnMiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbZnVuY3Rpb25zXSA9ICIke3N5c2NvbmZkaXJ9L2luaXQuZC9mdW5jdGlvbnMiCitGSUxFU18ke1BOfS1zdXNoZWxsID0gIiR7YmFzZV9zYmluZGlyfS9zdXNoZWxsIgogCiBIQUxUQVJHUyA/PSAiLWQgLWYiCiAKQEAgLTEwMiw2ICsxMDMsOSBAQAogCWluc3RhbGwgLW0gMDc1NSAgICAke1dPUktESVJ9L3JlYWQtb25seS1yb290ZnMtaG9vay5zaCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKIAlpbnN0YWxsIC1tIDA3NTUgICAgJHtXT1JLRElSfS9zYXZlLXJ0Yy5zaAkke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKIAlpbnN0YWxsIC1tIDA2NDQgICAgJHtXT1JLRElSfS92b2xhdGlsZXMJCSR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzAwX2NvcmUKKwlpZiBbICR7QCBvZS50eXBlcy5ib29sZWFuKCcke1ZPTEFUSUxFX0xPR19ESVJ9JykgfSA9IFRydWUgXTsgdGhlbgorCQllY2hvICJsIHJvb3Qgcm9vdCAwNzU1IC92YXIvbG9nIC92YXIvdm9sYXRpbGUvbG9nIiA+PiAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy8wMF9jb3JlCisJZmkKIAlpbnN0YWxsIC1tIDA3NTUgICAgJHtXT1JLRElSfS9kbWVzZy5zaAkJJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCiAJaW5zdGFsbCAtbSAwNjQ0ICAgICR7V09SS0RJUn0vbG9ncm90YXRlLWRtZXNnLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vCiAKQEAgLTEzNCw3ICsxMzgsNyBAQAogCXVwZGF0ZS1yYy5kIC1yICR7RH0gbW91bnRhbGwuc2ggc3RhcnQgMDMgUyAuCiAJdXBkYXRlLXJjLmQgLXIgJHtEfSBob3N0bmFtZS5zaCBzdGFydCAzOSBTIC4KIAl1cGRhdGUtcmMuZCAtciAke0R9IG1vdW50bmZzLnNoIHN0YXJ0IDE1IDIgMyA0IDUgLgotCXVwZGF0ZS1yYy5kIC1yICR7RH0gYm9vdG1pc2Muc2ggc3RhcnQgNTUgUyAuCisJdXBkYXRlLXJjLmQgLXIgJHtEfSBib290bWlzYy5zaCBzdGFydCAzNiBTIC4KIAl1cGRhdGUtcmMuZCAtciAke0R9IHN5c2ZzLnNoIHN0YXJ0IDAyIFMgLgogCXVwZGF0ZS1yYy5kIC1yICR7RH0gcG9wdWxhdGUtdm9sYXRpbGUuc2ggc3RhcnQgMzcgUyAuCiAJdXBkYXRlLXJjLmQgLXIgJHtEfSByZWFkLW9ubHktcm9vdGZzLWhvb2suc2ggc3RhcnQgMjkgUyAuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUva2JkL2tiZF8yLjAuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9rYmQva2JkXzIuMC40LmJiCmluZGV4IDY1MzI1YzAuLjQyM2I0N2EgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9rYmQva2JkXzIuMC40LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9rYmQva2JkXzIuMC40LmJiCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJLZXl0YWJsZSBmaWxlcyBhbmQga2V5Ym9hcmQgdXRpbGl0aWVzIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5rYmQtcHJvamVjdC5vcmcvIgogIyBldmVyeXRoaW5nIG1pbnVzIGNvbnNvbGUtZm9udHMgaXMgR1BMdjIrCiBMSUNFTlNFID0gIkdQTHYyKyIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE1ZmNjMzYxMjFkOTNlMWY2OWQ5NmEzMTMwNzhjOGI1IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYmNncm91cC9saWJjZ3JvdXBfMC40MS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJjZ3JvdXAvbGliY2dyb3VwXzAuNDEuYmIKaW5kZXggOTU5Nzk2My4uZTRiMTc4MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYmNncm91cC9saWJjZ3JvdXBfMC40MS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGliY2dyb3VwL2xpYmNncm91cF8wLjQxLmJiCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJMaW51eCBjb250cm9sIGdyb3VwIGFic3RyYWN0aW9uIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwOi8vbGliY2cuc291cmNlZm9yZ2UubmV0LyIKIERFU0NSSVBUSU9OID0gImxpYmNncm91cCBpcyBhIGxpYnJhcnkgdGhhdCBhYnN0cmFjdHMgdGhlIGNvbnRyb2wgZ3JvdXAgZmlsZSBzeXN0ZW0gXAogaW4gTGludXguIENvbnRyb2wgZ3JvdXBzIGFsbG93IHlvdSB0byBsaW1pdCwgYWNjb3VudCBhbmQgaXNvbGF0ZSByZXNvdXJjZSB1c2FnZSBcCiAoQ1BVLCBtZW1vcnksIGRpc2sgSS9PLCBldGMuKSBvZiBncm91cHMgb2YgcHJvY2Vzc2VzLiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwyLUNWRS0yMDE2LTQ2NTgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvbGlieG1sMi1DVkUtMjAxNi00NjU4LnBhdGNoCmluZGV4IDU0MTJlOGMuLmJiNTVlZWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwyLUNWRS0yMDE2LTQ2NTgucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2xpYnhtbDItQ1ZFLTIwMTYtNDY1OC5wYXRjaApAQCAtOCw3ICs4LDcgQEAKIEJ1dCB0aGV5IGRvbid0IG5lY2Vzc2FyaWx5IGhhdmUgYSBwaHlzaWNhbCByZXByZXNlbnRhdGlvbiBpbiBhCiBkb2N1bWVudCwgc28gc2ltcGx5IGRpc2FsbG93IHRoZW0gaW4gWFBvaW50ZXIgcmFuZ2VzLgogCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0ZWQgCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CiAgLSBbaHR0cHM6Ly9naXQuZ25vbWUub3JnL2Jyb3dzZS9saWJ4bWwyL2NvbW1pdC8/aWQ9YzFkMWY3MTIxMTk0MDM2NjA4YmY1NTVmMDhkMzA2MmEzNmZkMzQ0Yl0KICAtIFtodHRwczovL2dpdC5nbm9tZS5vcmcvYnJvd3NlL2xpYnhtbDIvY29tbWl0Lz9pZD0zZjhhOTEwMzZkMzM4ZTUxYzA1OWQ1NDM5N2E0MmQ2NDVmMDE5YzY1XQogQ1ZFOiBDVkUtMjAxNi00NjU4CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvbGlieG1sMi1maXhfTlVMTF9wb2ludGVyX2RlcmVmcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwyLWZpeF9OVUxMX3BvaW50ZXJfZGVyZWZzLnBhdGNoCmluZGV4IDgzNTUyY2EuLmM2MGUzMmYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwyLWZpeF9OVUxMX3BvaW50ZXJfZGVyZWZzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwyLWZpeF9OVUxMX3BvaW50ZXJfZGVyZWZzLnBhdGNoCkBAIC0yLDggKzIsNyBAQAogCiB4cG9pbnRlcjogRml4IG1vcmUgTlVMTCBwb2ludGVyIGRlcmVmcwogCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0ZWQgW2h0dHBzOi8vZ2l0Lmdub21lLm9yZy9icm93c2UvbGlieG1sMi9jb21taXQvP2lkPWU5MDVmMDgxMjNlNGE2ZTc3MzE1NDllNmYwOWRhZGZmNGNhYjY1YmRdCi1DVkU6IC0KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0Lmdub21lLm9yZy9icm93c2UvbGlieG1sMi9jb21taXQvP2lkPWU5MDVmMDgxMjNlNGE2ZTc3MzE1NDllNmYwOWRhZGZmNGNhYjY1YmRdCiBTaWduZWQtb2ZmLWJ5OiBBbmRyZWogVmFsZWsgPGFuZHJlai52YWxla0BzaWVtZW5zLmNvbT4KIFNpZ25lZC1vZmYtYnk6IFBhc2NhbCBCYWNoIDxwYXNjYWwuYmFjaEBzaWVtZW5zLmNvbT4KIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2xpYnhtbDItZml4X25vZGVfY29tcGFyaXNvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9saWJ4bWwyLWZpeF9ub2RlX2NvbXBhcmlzb24ucGF0Y2gKaW5kZXggMTE3MThiYi4uNjVmNmJlZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL2xpYnhtbDItZml4X25vZGVfY29tcGFyaXNvbi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvbGlieG1sMi1maXhfbm9kZV9jb21wYXJpc29uLnBhdGNoCkBAIC01LDEwICs1LDEwIEBACiAgLSBBZGQgc2FuaXR5IGNoZWNrIGZvciBlbXB0eSBzdGFjay4KICAtIEluY2x1ZGUgY29tcGFyYXRpb24gaW4gY2hhbmdlcyBmcm9tIHhtbFhQYXRoQ21wTm9kZXNFeHQgdG8geG1sWFBhdGhDbXBOb2RlcwogCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0ZWQKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKICAtIFtodHRwczovL2dpdC5nbm9tZS5vcmcvYnJvd3NlL2xpYnhtbDIvY29tbWl0Lz9pZD1jMWQxZjcxMjExOTQwMzY2MDhiZjU1NWYwOGQzMDYyYTM2ZmQzNDRiXQogIC0gW2h0dHBzOi8vZ2l0Lmdub21lLm9yZy9icm93c2UvbGlieG1sMi9jb21taXQvP2lkPWEwMDUxOTkzMzBiODZkYWRhMTlkMTYyY2FlMTVlZjliZGNiNmJhYThdCi1DVkU6IG5lY2Vzc2FyeSBjaGFuZ2VzIGZvciBmaXhpbmcgQ1ZFLTIwMTYtNTEzMQorQ1ZFOiBDVkUtMjAxNi01MTMxCiBTaWduZWQtb2ZmLWJ5OiBBbmRyZWogVmFsZWsgPGFuZHJlai52YWxla0BzaWVtZW5zLmNvbT4KIFNpZ25lZC1vZmYtYnk6IFBhc2NhbCBCYWNoIDxwYXNjYWwuYmFjaEBzaWVtZW5zLmNvbT4KIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL3J1bi1wdGVzdCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9ydW4tcHRlc3QKaW5kZXggNDczZDBiNi4uYzMxM2Q4MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL3J1bi1wdGVzdAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvcnVuLXB0ZXN0CkBAIC0xLDMgKzEsNCBAQAogIyEvYmluL3NoCiAKK2V4cG9ydCBMQ19BTEw9ZW5fVVMuVVRGLTgKIG1ha2UgLWsgcnVudGVzdHMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMl8yLjkuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMl8yLjkuNC5iYgppbmRleCAxMDc1MzliLi45YWRiMjljIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDJfMi45LjQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyXzIuOS40LmJiCkBAIC0xMSw3ICsxMSw3IEBACiAKIERFUEVORFMgPSAiemxpYiB2aXJ0dWFsL2xpYmljb252IgogCi1TUkNfVVJJID0gImZ0cDovL3htbHNvZnQub3JnL2xpYnhtbDIvbGlieG1sMi0ke1BWfS50YXIuZ3o7bmFtZT1saWJ0YXIgXAorU1JDX1VSSSA9ICJodHRwOi8vd3d3LnhtbHNvZnQub3JnL3NvdXJjZXMvbGlieG1sMi0ke1BWfS50YXIuZ3o7bmFtZT1saWJ0YXIgXAogICAgICAgICAgICBodHRwOi8vd3d3LnczLm9yZy9YTUwvVGVzdC94bWx0czIwMDgwODI3LnRhci5nejtuYW1lPXRlc3R0YXIgXAogICAgICAgICAgICBmaWxlOi8vbGlieG1sLTY0Yml0LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2Fuc2lkZWNsLnBhdGNoIFwKQEAgLTUzLDExICs1MywxMSBAQAogCiBSREVQRU5EU18ke1BOfS1weXRob24gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsICdweXRob24zLWNvcmUnLCAnJywgZCl9IgogCi1SREVQRU5EU18ke1BOfS1wdGVzdF9hcHBlbmRfbGliYy1nbGliYyA9ICIgZ2xpYmMtZ2NvbnYtZWJjZGljLXVzIGdsaWJjLWdjb252LWlibTExNDEiCitSREVQRU5EU18ke1BOfS1wdGVzdF9hcHBlbmRfbGliYy1nbGliYyA9ICIgZ2xpYmMtZ2NvbnYtZWJjZGljLXVzIGdsaWJjLWdjb252LWlibTExNDEgZ2xpYmMtZ2NvbnYtaXNvODg1OS01IgogCiBleHBvcnQgUFlUSE9OX1NJVEVfUEFDS0FHRVM9IiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgogCi0jIFdBUk5JTkc6IHpsaWIgaXMgcmVxdWlyZSBmb3IgUlBNIHVzZQorIyBXQVJOSU5HOiB6bGliIGlzIHJlcXVpcmVkIGZvciBSUE0gdXNlCiBFWFRSQV9PRUNPTkYgPSAiLS13aXRob3V0LWRlYnVnIC0td2l0aG91dC1sZWdhY3kgLS13aXRoLWNhdGFsb2cgLS13aXRob3V0LWRvY2Jvb2sgLS13aXRoLWMxNG4gLS13aXRob3V0LWx6bWEgLS13aXRoLWZleGNlcHRpb25zIgogRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICItLXdpdGhvdXQtbGVnYWN5IC0td2l0aG91dC1kb2Nib29rIC0td2l0aC1jMTRuIC0td2l0aG91dC1sem1hIC0td2l0aC16bGliIgogRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZXNkayA9ICItLXdpdGhvdXQtbGVnYWN5IC0td2l0aG91dC1kb2Nib29rIC0td2l0aC1jMTRuIC0td2l0aG91dC1sem1hIC0td2l0aC16bGliIgpAQCAtODksNiArODksMTcgQEAKIAkJZ3JlcCAtbHJaICcjIS91c3IvYmluL3B5dGhvbicgJHtEfSR7UFRFU1RfUEFUSH0vcHl0aG9uIHwKIAkJCXhhcmdzIC0wIHNlZCAtaSAtZSAnc3wvdXNyL2Jpbi9weXRob258JHtVU1JCSU5QQVRIfS8ke1BZVEhPTl9QTn18JwogCWZpCisJI1JlbW92ZSBidWlsZCBob3N0IHJlZmVyZW5jZXMgZnJvbSB2YXJpb3VzIE1ha2VmaWxlcworCWZpbmQgIiR7RH0ke1BURVNUX1BBVEh9IiAtbmFtZSBNYWtlZmlsZSAtdHlwZSBmIC1leGVjIFwKKwkgICAgc2VkIC1pIFwKKwkgICAgLWUgJ3MsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAorCSAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCisJICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCisJICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6ZycgXAorCSAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UfTo6ZycgXAorCSAgICAtZSAnczoke0JBU0VfV09SS0RJUn0vJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU306OmcnIFwKKwkgICAgLWUgJy9eUkVMREFURS9kJyBcCisJICAgIHt9ICsKIH0KIAogZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlICgpIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL2J1aWxkdG9vbHMtdGFyYmFsbC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL2J1aWxkdG9vbHMtdGFyYmFsbC5iYgppbmRleCBhYmRjN2ZlLi5iZTM3YzQ0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9idWlsZHRvb2xzLXRhcmJhbGwuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvYnVpbGR0b29scy10YXJiYWxsLmJiCkBAIC00Niw4ICs0Niw2IEBACiBpbmhlcml0IG5vcGFja2FnZXMKIAogZGVsdGFzayBpbnN0YWxsCi1kZWx0YXNrIHBhY2thZ2UKLWRlbHRhc2sgcGFja2FnZWRhdGEKIGRlbHRhc2sgcG9wdWxhdGVfc3lzcm9vdAogCiBkb19wb3B1bGF0ZV9zZGtbc3RhbXAtZXh0cmEtaW5mb10gPSAiJHtQQUNLQUdFX0FSQ0h9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvbWV0YS1nby10b29sY2hhaW4uYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9tZXRhLWdvLXRvb2xjaGFpbi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZGUzODVjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvbWV0YS1nby10b29sY2hhaW4uYmIKQEAgLTAsMCArMSwxMiBAQAorU1VNTUFSWSA9ICJNZXRhIHBhY2thZ2UgZm9yIGJ1aWxkaW5nIGEgaW5zdGFsbGFibGUgR28gdG9vbGNoYWluIgorTElDRU5TRSA9ICJNSVQiCisKK2luaGVyaXQgcG9wdWxhdGVfc2RrCisKK1RPT0xDSEFJTl9IT1NUX1RBU0tfYXBwZW5kID0gIiBcCisgICAgcGFja2FnZWdyb3VwLWdvLWNyb3NzLWNhbmFkaWFuLSR7TUFDSElORX0gXAorIgorCitUT09MQ0hBSU5fVEFSR0VUX1RBU0tfYXBwZW5kID0gIiBcCisgICAgJHtAbXVsdGlsaWJfcGtnX2V4dGVuZChkLCAncGFja2FnZWdyb3VwLWdvLXNkay10YXJnZXQnKX0gXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvcGFja2FnZS1pbmRleC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3BhY2thZ2UtaW5kZXguYmIKaW5kZXggZmUwMjJmZi4uYTQxMjNiNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvcGFja2FnZS1pbmRleC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9wYWNrYWdlLWluZGV4LmJiCkBAIC00LDE3ICs0LDE0IEBACiBJTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgogUEFDS0FHRVMgPSAiIgogCitpbmhlcml0IG5vcGFja2FnZXMKKwogZGVsdGFzayBkb19mZXRjaAogZGVsdGFzayBkb191bnBhY2sKIGRlbHRhc2sgZG9fcGF0Y2gKIGRlbHRhc2sgZG9fY29uZmlndXJlCiBkZWx0YXNrIGRvX2NvbXBpbGUKIGRlbHRhc2sgZG9faW5zdGFsbAotZGVsdGFzayBkb19wYWNrYWdlCi1kZWx0YXNrIGRvX3BhY2thZ2VkYXRhCi1kZWx0YXNrIGRvX3BhY2thZ2Vfd3JpdGVfaXBrCi1kZWx0YXNrIGRvX3BhY2thZ2Vfd3JpdGVfcnBtCi1kZWx0YXNrIGRvX3BhY2thZ2Vfd3JpdGVfZGViCiBkZWx0YXNrIGRvX3BvcHVsYXRlX3N5c3Jvb3QKIAogZG9fcGFja2FnZV9pbmRleFtub3N0YW1wXSA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvc2lnbmluZy1rZXlzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvc2lnbmluZy1rZXlzLmJiCmluZGV4IGFhYTAxZDAuLjJjMWNjMzggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3NpZ25pbmcta2V5cy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9zaWduaW5nLWtleXMuYmIKQEAgLTQ0LDI1ICs0NCwyNSBAQAogCiBkb19pbnN0YWxsICgpIHsKICAgICBpZiBbIC1mICIke0J9L3JwbS1rZXkiIF07IHRoZW4KLSAgICAgICAgaW5zdGFsbCAtRCAtbSAwNjQ0ICIke0J9L3JwbS1rZXkiICIke0R9JHtzeXNjb25mZGlyfS9wa2kvcnBtLWdwZy9SUE0tR1BHLUtFWS0ke0RJU1RST19WRVJTSU9OfSIKKyAgICAgICAgaW5zdGFsbCAtRCAtbSAwNjQ0ICIke0J9L3JwbS1rZXkiICIke0R9JHtzeXNjb25mZGlyfS9wa2kvcnBtLWdwZy9SUE0tR1BHLUtFWS0ke0RJU1RST30tJHtESVNUUk9fQ09ERU5BTUV9IgogICAgIGZpCiAgICAgaWYgWyAtZiAiJHtCfS9pcGsta2V5IiBdOyB0aGVuCi0gICAgICAgIGluc3RhbGwgLUQgLW0gMDY0NCAiJHtCfS9pcGsta2V5IiAiJHtEfSR7c3lzY29uZmRpcn0vcGtpL2lway1ncGcvSVBLLUdQRy1LRVktJHtESVNUUk9fVkVSU0lPTn0iCisgICAgICAgIGluc3RhbGwgLUQgLW0gMDY0NCAiJHtCfS9pcGsta2V5IiAiJHtEfSR7c3lzY29uZmRpcn0vcGtpL2lway1ncGcvSVBLLUdQRy1LRVktJHtESVNUUk99LSR7RElTVFJPX0NPREVOQU1FfSIKICAgICBmaQogICAgIGlmIFsgLWYgIiR7Qn0vcGYta2V5IiBdOyB0aGVuCi0gICAgICAgIGluc3RhbGwgLUQgLW0gMDY0NCAiJHtCfS9wZi1rZXkiICIke0R9JHtzeXNjb25mZGlyfS9wa2kvcGFja2FnZWZlZWQtZ3BnL1BBQ0tBR0VGRUVELUdQRy1LRVktJHtESVNUUk9fVkVSU0lPTn0iCisgICAgICAgIGluc3RhbGwgLUQgLW0gMDY0NCAiJHtCfS9wZi1rZXkiICIke0R9JHtzeXNjb25mZGlyfS9wa2kvcGFja2FnZWZlZWQtZ3BnL1BBQ0tBR0VGRUVELUdQRy1LRVktJHtESVNUUk99LSR7RElTVFJPX0NPREVOQU1FfSIKICAgICBmaQogfQogCiBkb19kZXBsb3kgKCkgewogICAgIGlmIFsgLWYgIiR7Qn0vcnBtLWtleSIgXTsgdGhlbgotICAgICAgICBpbnN0YWxsIC1EIC1tIDA2NDQgIiR7Qn0vcnBtLWtleSIgIiR7REVQTE9ZRElSfS9SUE0tR1BHLUtFWS0ke0RJU1RST19WRVJTSU9OfSIKKyAgICAgICAgaW5zdGFsbCAtRCAtbSAwNjQ0ICIke0J9L3JwbS1rZXkiICIke0RFUExPWURJUn0vUlBNLUdQRy1LRVktJHtESVNUUk99LSR7RElTVFJPX0NPREVOQU1FfSIKICAgICBmaQogICAgIGlmIFsgLWYgIiR7Qn0vaXBrLWtleSIgXTsgdGhlbgotICAgICAgICBpbnN0YWxsIC1EIC1tIDA2NDQgIiR7Qn0vaXBrLWtleSIgIiR7REVQTE9ZRElSfS9JUEstR1BHLUtFWS0ke0RJU1RST19WRVJTSU9OfSIKKyAgICAgICAgaW5zdGFsbCAtRCAtbSAwNjQ0ICIke0J9L2lway1rZXkiICIke0RFUExPWURJUn0vSVBLLUdQRy1LRVktJHtESVNUUk99LSR7RElTVFJPX0NPREVOQU1FfSIKICAgICBmaQogICAgIGlmIFsgLWYgIiR7Qn0vcGYta2V5IiBdOyB0aGVuCi0gICAgICAgIGluc3RhbGwgLUQgLW0gMDY0NCAiJHtCfS9wZi1rZXkiICIke0RFUExPWURJUn0vUEFDS0FHRUZFRUQtR1BHLUtFWS0ke0RJU1RST19WRVJTSU9OfSIKKyAgICAgICAgaW5zdGFsbCAtRCAtbSAwNjQ0ICIke0J9L3BmLWtleSIgIiR7REVQTE9ZRElSfS9QQUNLQUdFRkVFRC1HUEctS0VZLSR7RElTVFJPfS0ke0RJU1RST19DT0RFTkFNRX0iCiAgICAgZmkKIH0KIGRvX2RlcGxveVtzc3RhdGUtb3V0cHV0ZGlyc10gPSAiJHtERVBMT1lfRElSX1JQTX0iCkBAIC03MSwzICs3MSwxMSBAQAogIyBjbGVhciBzdGFtcC1leHRyYS1pbmZvIHNpbmNlIE1BQ0hJTkUgaXMgbm9ybWFsbHkgcHV0IHRoZXJlIGJ5IGRlcGxveS5iYmNsYXNzCiBkb19kZXBsb3lbc3RhbXAtZXh0cmEtaW5mb10gPSAiIgogYWRkdGFzayBkZXBsb3kgYWZ0ZXIgZG9fZ2V0X3B1YmxpY19rZXlzCisKKyMgRGVsZXRlIHVubmVjZXNzYXJ5IHRhc2tzLiBJbiBwYXJ0aWN1bGFyLCAiZG9fdW5wYWNrIiBfbXVzdF8gYmUgZGVsZXRlZCBiZWNhdXNlCisjIGl0IGNsZWFucyAke0J9IGFuZCB3aWxsIHdpcGUgYW55IGtleXMgZXhwb3J0ZWQgYnkgZG9fZ2V0X3B1YmxpY19rZXlzLgorZGVsdGFzayBkb19mZXRjaAorZGVsdGFzayBkb191bnBhY2sKK2RlbHRhc2sgZG9fcGF0Y2gKK2RlbHRhc2sgZG9fY29uZmlndXJlCitkZWx0YXNrIGRvX2NvbXBpbGUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3VuaW5hdGl2ZS10YXJiYWxsLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvdW5pbmF0aXZlLXRhcmJhbGwuYmIKaW5kZXggZjNmYzFlYi4uNWZhYmY3ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvdW5pbmF0aXZlLXRhcmJhbGwuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvdW5pbmF0aXZlLXRhcmJhbGwuYmIKQEAgLTM0LDggKzM0LDYgQEAKIGluaGVyaXQgbm9wYWNrYWdlcwogCiBkZWx0YXNrIGluc3RhbGwKLWRlbHRhc2sgcGFja2FnZQotZGVsdGFzayBwYWNrYWdlZGF0YQogZGVsdGFzayBwb3B1bGF0ZV9zeXNyb290CiAKIGRvX3BvcHVsYXRlX3Nka1tzdGFtcC1leHRyYS1pbmZvXSA9ICIke1BBQ0tBR0VfQVJDSH0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS93aWMtdG9vbHMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS93aWMtdG9vbHMuYmIKaW5kZXggY2Q0OTRlYy4uMDllYjQwOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvd2ljLXRvb2xzLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3dpYy10b29scy5iYgpAQCAtNSwxMiArNSwxNSBAQAogREVQRU5EUyA9ICJcCiAgICAgICAgICAgIHBhcnRlZC1uYXRpdmUgc3lzbGludXgtbmF0aXZlIGdwdGZkaXNrLW5hdGl2ZSBkb3Nmc3Rvb2xzLW5hdGl2ZSBcCiAgICAgICAgICAgIG10b29scy1uYXRpdmUgYm1hcC10b29scy1uYXRpdmUgZ3J1Yi1lZmktbmF0aXZlIGNkcnRvb2xzLW5hdGl2ZSBcCi0gICAgICAgICAgIGJ0cmZzLXRvb2xzLW5hdGl2ZSBzcXVhc2hmcy10b29scy1uYXRpdmUgXAorICAgICAgICAgICBidHJmcy10b29scy1uYXRpdmUgc3F1YXNoZnMtdG9vbHMtbmF0aXZlIHBzZXVkby1uYXRpdmUgXAorICAgICAgICAgICBlMmZzcHJvZ3MtbmF0aXZlIHV0aWwtbGludXgtbmF0aXZlIFwKICAgICAgICAgICAgIgogREVQRU5EU19hcHBlbmRfeDg2ID0gIiBzeXNsaW51eCBncnViLWVmaSBzeXN0ZW1kLWJvb3QiCiBERVBFTkRTX2FwcGVuZF94ODYtNjQgPSAiIHN5c2xpbnV4IGdydWItZWZpIHN5c3RlbWQtYm9vdCIKK0RFUEVORFNfYXBwZW5kX3g4Ni14MzIgPSAiIHN5c2xpbnV4IGdydWItZWZpIgogCiBJTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgorCiBpbmhlcml0IG5vcGFja2FnZXMKIAogIyBUaGUgc3lzcm9vdCBvZiB3aWMtdG9vbHMgaXMgbmVlZGVkIGZvciB3aWMsIGJ1dCBpZiBybV93b3JrIGlzIGVuYWJsZWQsIGl0IHdpbGwKQEAgLTE5LDE0ICsyMiw1IEBACiAKIHB5dGhvbiBkb19idWlsZF9zeXNyb290ICgpIHsKICAgICBiYi5idWlsZC5leGVjX2Z1bmMoImV4dGVuZF9yZWNpcGVfc3lzcm9vdCIsIGQpCi0KLSAgICAjIFdyaXRlIGVudmlyb25tZW50IHZhcmlhYmxlcyB1c2VkIGJ5IHdpYwotICAgICMgdG8gdG1wL3N5c3Jvb3RzLzxtYWNoaW5lPi9pbWdkYXRhL3dpY3Rvb2xzLmVudgotICAgIG91dGRpciA9IG9zLnBhdGguam9pbihkLmdldFZhcignU1RBR0lOR19ESVInKSwgZC5nZXRWYXIoJ01BQ0hJTkUnKSwgJ2ltZ2RhdGEnKQotICAgIGJiLnV0aWxzLm1rZGlyaGllcihvdXRkaXIpCi0gICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihvdXRkaXIsICJ3aWMtdG9vbHMuZW52IiksICd3JykgYXMgZW52ZjoKLSAgICAgICAgZm9yIHZhciBpbiAoJ1JFQ0lQRV9TWVNST09UX05BVElWRScsICdTVEFHSU5HX0RBVEFESVInLCAnU1RBR0lOR19MSUJESVInKToKLSAgICAgICAgICAgIGVudmYud3JpdGUoJyVzPSIlcyJcbicgJSAodmFyLCBkLmdldFZhcih2YXIpLnN0cmlwKCkpKQotCiB9CiBhZGR0YXNrIGRvX2J1aWxkX3N5c3Jvb3QgYWZ0ZXIgZG9fcHJlcGFyZV9yZWNpcGVfc3lzcm9vdCBiZWZvcmUgZG9fYnVpbGQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2wuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbC5pbmMKaW5kZXggNTZjOWQ3Zi4uOWFmMTE3MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbC5pbmMKQEAgLTI2LDMgKzI2LDggQEAKICMgRG9lc24ndCBjb21waWxlIGluIE1JUFMxNmUgbW9kZSBkdWUgdG8gdXNlIG9mIGhhbmQtd3JpdHRlbgogIyBhc3NlbWJseQogTUlQU19JTlNUUlVDVElPTl9TRVQgPSAibWlwcyIKKworIyB0aHVtYjEgaXMgdW5zdXBwb3J0ZWQKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2xfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbF9naXQuYmIKaW5kZXggYTg4YmM0ZC4uZGIyNmI0ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbF9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbF9naXQuYmIKQEAgLTMsOSArMyw5IEBACiAKIHJlcXVpcmUgbXVzbC5pbmMKIAotU1JDUkVWID0gIjU0ODA3ZDQ3YWNlY2FiNzc4NDk4Y2VkODhjZThmNjJiZmExNmUzNzkiCitTUkNSRVYgPSAiZWIwM2JkZTJmMjQ1ODI4NzRjYjcyYjU2Yzc4MTFiZjUxZGEwYzgxNyIKIAotUFYgPSAiMS4xLjE2K2dpdCR7U1JDUFZ9IgorUFYgPSAiMS4xLjE4K2dpdCR7U1JDUFZ9IgogCiAjIG1pcnJvciBpcyBhdCBnaXQ6Ly9naXRodWIuY29tL2tyYWovbXVzbC5naXQKIApAQCAtMjgsNiArMjgsMTQgQEAKIAogTERGTEFHUyArPSAiLVdsLC1zb25hbWUsbGliYy5zbyIKIAorIyBXaGVuIGNvbXBpbGluZyBmb3IgVGh1bWIgb3IgVGh1bWIyLCBmcmFtZSBwb2ludGVycyBfbXVzdF8gYmUgZGlzYWJsZWQgc2luY2UgdGhlCisjIFRodW1iIGZyYW1lIHBvaW50ZXIgaW4gcjcgY2xhc2hlcyB3aXRoIG11c2wncyB1c2Ugb2YgaW5saW5lIGFzbSB0byBtYWtlIHN5c2NhbGxzCisjICh3aGVyZSByNyBpcyB1c2VkIGZvciB0aGUgc3lzY2FsbCBOUikuIEluIG1vc3QgY2FzZXMsIGZyYW1lIHBvaW50ZXJzIHdpbGwgYmUKKyMgZGlzYWJsZWQgYXV0b21hdGljYWxseSBkdWUgdG8gdGhlIG9wdGltaXNhdGlvbiBsZXZlbCwgYnV0IGFwcGVuZCBhbiBleHBsaWNpdAorIyAtZm9taXQtZnJhbWUtcG9pbnRlciB0byBoYW5kbGUgY2FzZXMgd2hlcmUgb3B0aW1pc2F0aW9uIGlzIHNldCB0byAtTzAgb3IgZnJhbWUKKyMgcG9pbnRlcnMgaGF2ZSBiZWVuIGVuYWJsZWQgYnkgLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIgZWFybGllciBpbiBDRkxBR1MsIGV0Yy4KK0NGTEFHU19hcHBlbmRfYXJtID0gIiAke0BiYi51dGlscy5jb250YWlucygnVFVORV9DQ0FSR1MnLCAnLW10aHVtYicsICctZm9taXQtZnJhbWUtcG9pbnRlcicsICcnLCBkKX0iCisKIENPTkZJR1VSRU9QVFMgPSAiIFwKICAgICAtLXByZWZpeD0ke3ByZWZpeH0gXAogICAgIC0tZXhlYy1wcmVmaXg9JHtleGVjX3ByZWZpeH0gXApAQCAtNDksMTAgKzU3LDExIEBACiAJb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JyR7RH0nCiAKIAlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KKwlybSAtZiAke0R9JHtiaW5kaXJ9L2xkZAogCWxuciAke0R9JHtsaWJkaXJ9L2xpYmMuc28gJHtEfSR7YmluZGlyfS9sZGQKIAlmb3IgbCBpbiBjcnlwdCBkbCBtIHB0aHJlYWQgcmVzb2x2IHJ0IHV0aWwgeG5ldAogCWRvCi0JCWxuIC1zIGxpYmMuc28gJHtEfSR7bGliZGlyfS9saWIkbC5zbworCQlsbiAtc2YgbGliYy5zbyAke0R9JHtsaWJkaXJ9L2xpYiRsLnNvCiAJZG9uZQogfQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9maWxlcy8wMDAxLXRpYy1oYW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvZmlsZXMvMDAwMS10aWMtaGFuZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTk3MDU2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvZmlsZXMvMDAwMS10aWMtaGFuZy5wYXRjaApAQCAtMCwwICsxLDQzIEBACitGcm9tIGE5NTU5MGY2NzYyMDk4MzJmZTBiMjcyMjZlNmRlM2NiNTBlMmI5N2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDE2IEF1ZyAyMDE3IDE0OjMxOjUxICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSB0aWMgaGFuZworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCisKKyd0aWMnIG9mIHNvbWUgbGludXggZGlzdHJpYnV0aW9ucyAoZS5nLiBmZWRvcmEgMTEpIGhhbmcgaW4gYW4gaW5maW5pdGUKK2xvb3Agd2hlbiBwcm9jZXNzaW5nIHRoZSBvcmlnaW5hbCBmaWxlLgorCitTaWduZWQtb2ZmLWJ5OiBhbm9ueW1vdXMKKworUmViYXNlIHRvIDYuMCsyMDE3MDcxNQorU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgbWlzYy90ZXJtaW5mby5zcmMgfCAxMSArKysrKy0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9taXNjL3Rlcm1pbmZvLnNyYyBiL21pc2MvdGVybWluZm8uc3JjCitpbmRleCBlZTNmYWIzLi4xNzZkNTkzIDEwMDY0NAorLS0tIGEvbWlzYy90ZXJtaW5mby5zcmMKKysrKyBiL21pc2MvdGVybWluZm8uc3JjCitAQCAtNTE3NywxMiArNTE3NywxMSBAQCBrb25zb2xlLXhmM3h8S0RFIGNvbnNvbGUgd2luZG93IHdpdGgga2V5Ym9hcmQgZm9yIFhGcmVlODYgMy54IHh0ZXJtLAorICMgVGhlIHZhbHVlIGZvciBrYnMgcmVmbGVjdHMgbG9jYWwgY3VzdG9taXphdGlvbiByYXRoZXIgdGhhbiB0aGUgc2V0dGluZ3MgdXNlZAorICMgZm9yIFhGcmVlODYgeHRlcm0uCisga29uc29sZS14ZjR4fEtERSBjb25zb2xlIHdpbmRvdyB3aXRoIGtleWJvYXJkIGZvciBYRnJlZTg2IDQueCB4dGVybSwKKy0Ja2VuZD1cRU9GLCBraG9tZT1cRU9ILCB1c2U9a29uc29sZStwY2ZrZXlzLAorLQl1c2U9a29uc29sZS12dDEwMCwKKy0jIEtvbnNvbGUgZG9lcyBub3QgaW1wbGVtZW50IHNoaWZ0ZWQgY3Vyc29yLWtleXMuCista29uc29sZStwY2ZrZXlzfGtvbnNvbGUgc3Vic2V0IG9mIHh0ZXJtK3BjZmtleXMsCistCWtMRlRALCBrUklUQCwga2NidD1cRVtaLCBraW5kQCwga3JpQCwga0ROQCwga1VQQCwgdXNlPXh0ZXJtK3BjYzIsCistCXVzZT14dGVybStwY2YwLAorKwlrZW5kPVxFT0YsIGtmMT1cRU9QLCBrZjEzPVxFTzJQLCBrZjE0PVxFTzJRLCBrZjE1PVxFTzJSLAorKwlrZjE2PVxFTzJTLCBrZjE3PVxFWzE1OzJ+LCBrZjE4PVxFWzE3OzJ+LCBrZjE5PVxFWzE4OzJ+LAorKwlrZjI9XEVPUSwga2YyMD1cRVsxOTsyfiwga2YyMT1cRVsyMDsyfiwga2YyMj1cRVsyMTsyfiwKKysJa2YyMz1cRVsyMzsyfiwga2YyND1cRVsyNDsyfiwga2YzPVxFT1IsIGtmND1cRU9TLAorKwlraG9tZT1cRU9ILCB1c2U9a29uc29sZS12dDEwMCwKKyAjIEtERSdzICJ2dDEwMCIga2V5Ym9hcmQgaGFzIG5vIHJlbGF0aW9uc2hpcCB0byBhbnkgdGVybWluYWwgdGhhdCBERUMgbWFkZSwgYnV0CisgIyBpdCBpcyBzdGlsbCB1c2VmdWwgZm9yIGRlcml2aW5nIHRoZSBvdGhlciBlbnRyaWVzLgorIGtvbnNvbGUtdnQxMDB8S0RFIGNvbnNvbGUgd2luZG93IHdpdGggdnQxMDAgKHNpYykga2V5Ym9hcmQsCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvZmlsZXMvMDAwMi1jb25maWd1cmUtcmVwcm9kdWNpYmxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvZmlsZXMvMDAwMi1jb25maWd1cmUtcmVwcm9kdWNpYmxlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0N2NlNmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9maWxlcy8wMDAyLWNvbmZpZ3VyZS1yZXByb2R1Y2libGUucGF0Y2gKQEAgLTAsMCArMSwzNSBAQAorRnJvbSA5MzljOTk0ZjM3NTZjMmQ2ZDNjYWIyZTZhMDRkMDVmYTdjMmIxZDU2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAxNiBBdWcgMjAxNyAxNDo0NToyNyArMDgwMAorU3ViamVjdDogW1BBVENIIDIvMl0gY29uZmlndXJlOiByZXByb2R1Y2libGUKKworImNvbmZpZ3VyZSIgZW5mb3JjZXMgLVUgZm9yIGFyIGZsYWdzLCBicmVha2luZyBkZXRlcm1pbmlzdGljIGJ1aWxkcy4KK1RoZSBmbGFnIHdhcyBhZGRlZCB0byBmaXggc29tZSB2YWd1ZWx5IHNwZWNpZmllZCAicmVjZW50IFBPU0lYIGJpbnV0aWwKK2J1aWxkIHByb2JsZW1zIiBpbiAyMDE1LgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEp1cm8gQnlzdHJpY2t5IDxqdXJvLmJ5c3RyaWNreUBpbnRlbC5jb20+CisKK1JlYmFzZSB0byBSZWJhc2UgdG8gNi4wKzIwMTcwNzE1CisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGNvbmZpZ3VyZSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQoraW5kZXggN2Q3ZDJjMS4uZjQ0NDM1NCAxMDA3NTUKKy0tLSBhL2NvbmZpZ3VyZQorKysrIGIvY29uZmlndXJlCitAQCAtNDQ1OCw3ICs0NDU4LDcgQEAgaWYgdGVzdCAiJHtjZl9jdl9hcl9mbGFncytzZXR9IiA9IHNldDsgdGhlbgorIGVsc2UKKyAKKyAJY2ZfY3ZfYXJfZmxhZ3M9dW5rbm93bgorLQlmb3IgY2ZfYXJfZmxhZ3MgaW4gLWN1cnZVIC1jdXJ2IGN1cnYgLWNydiBjcnYgLWNxdiBjcXYgLXJ2IHJ2CisrCWZvciBjZl9hcl9mbGFncyBpbiAtY3VydiBjdXJ2IC1jcnYgY3J2IC1jcXYgY3F2IC1ydiBydgorIAlkbworIAorIAkJIyBjaGVjayBpZiAkQVJGTEFHUyBhbHJlYWR5IGNvbnRhaW5zIHRoaXMgY2hvaWNlCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvZmlsZXMvQ1ZFLTIwMTctMTM3MzItQ1ZFLTIwMTctMTM3MzQtQ1ZFLTIwMTctMTM3MzAtQ1ZFLTIwMTctMTM3MjktQ1ZFLTIwMTctMTM3MjgtQ1ZFLTIwMTctMTM3MzEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9maWxlcy9DVkUtMjAxNy0xMzczMi1DVkUtMjAxNy0xMzczNC1DVkUtMjAxNy0xMzczMC1DVkUtMjAxNy0xMzcyOS1DVkUtMjAxNy0xMzcyOC1DVkUtMjAxNy0xMzczMS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMTkzMzJjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvZmlsZXMvQ1ZFLTIwMTctMTM3MzItQ1ZFLTIwMTctMTM3MzQtQ1ZFLTIwMTctMTM3MzAtQ1ZFLTIwMTctMTM3MjktQ1ZFLTIwMTctMTM3MjgtQ1ZFLTIwMTctMTM3MzEucGF0Y2gKQEAgLTAsMCArMSw1NDEgQEAKK0Zyb20gNGJmNzJjYjhmMWQzYWE1ZjMzYzMxZWI4MTdhNWYwMzM4ZjRhYWY2ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE92aWRpdSBQYW5haXQgPG92aWRpdS5wYW5haXRAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMjAgU2VwIDIwMTcgMDU6MDI6MDAgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gSW1wb3J0IHVwc3RyZWFtIHBhdGNoIDIwMTcwODI2CisKKzIwMTcwODI2CisJKyBmaXhlcyBmb3IgIml0ZXJtMiIgKHJlcG9ydCBieSBMZW9uYXJkbyBCcm9uZGFuaSBTY2hlbmtlbCkgLVRECisJKyBjb3JyZWN0ZWQgYSB3YXJuaW5nIGZyb20gdGljIGFib3V0IGtleXMgd2hpY2ggYXJlIHRoZSBzYW1lLCB0byBza2lwCisJICBvdmVyIG1pc3NpbmcvY2FuY2VsbGVkIHZhbHVlcy4KKwkrIGFkZCBjaGVjayBpbiB0aWMgZm9yIHVubmVjZXNzYXJ5IHVzZSBvZiAiMiIgdG8gZGVub3RlIGEgc2hpZnRlZAorCSAgc3BlY2lhbCBrZXkuCisJKyBpbXByb3ZlIGNoZWNrcyBpbiB0cmltX3NncjAsIGNvbXBfcGFyc2UuYyBhbmQgcGFyc2VfZW50cnkuYywgZm9yCisJICBjYW5jZWxsZWQgc3RyaW5nIGNhcGFiaWxpdGllcy4KKwkrIGFkZCBjaGVjayBpbiBfbmNfcGFyc2VfZW50cnkoKSBmb3IgaW52YWxpZCBlbnRyeSBuYW1lLCBzZXR0aW5nIHRoZQorCSAgbmFtZSB0byAiaW52YWxpZCIgdG8gYXZvaWQgcHJvYmxlbXMgc3RvcmluZyBlbnRyaWVzLgorCSsgYWRkL2ltcHJvdmUgY2hlY2tzIGluIHRpYydzIHBhcnNlciB0byBhZGRyZXNzIGludmFsaWQgaW5wdXQKKwkgICsgYWRkIGEgY2hlY2sgaW4gY29tcF9zY2FuLmMgdG8gaGFuZGxlIHRoZSBzcGVjaWFsIGNhc2Ugd2hlcmUgYQorCSAgICBub250ZXh0IGZpbGUgZW5kaW5nIHdpdGggYSBOVUwgcmF0aGVyIHRoYW4gbmV3bGluZSBpcyBnaXZlbiB0byB0aWMKKwkgICAgYXMgaW5wdXQgKFJlZGhhdCAjMTQ4NDI3NCkuCisJICArIGFsbG93IGZvciBjYW5jZWxsZWQgY2FwYWJpbGl0aWVzIGluIF9uY19zYXZlX3N0ciAoUmVkaGF0ICMxNDg0Mjc2KS4KKwkgICsgYWRkIHZhbGlkaXR5IGNoZWNrcyBmb3IgInVzZT0iIHRhcmdldCBpbiBfbmNfcGFyc2VfZW50cnkgKFJlZGhhdAorCSAgICAjMTQ4NDI4NCkuCisJICArIGNoZWNrIGZvciBpbnZhbGlkIHN0cmluZ3MgaW4gcG9zdHByb2Nlc3NfdGVybWNhcCAoUmVkaGF0ICMxNDg0Mjg1KQorCSAgKyByZXNldCBzZWNvbmRhcnkgcG9pbnRlcnMgb24gRU9GIGluIG5leHRfY2hhcigpIChSZWRoYXQgIzE0ODQyODcpLgorCSAgKyBndWFyZCBfbmNfc2FmZV9zdHJjcHkoKSBhbmQgX25jX3NhZmVfc3RyY2F0KCkgYWdhaW5zdCBjYWxscyB1c2luZworCSAgICBjYW5jZWxsZWQgc3RyaW5ncyAoUmVkaGF0ICMxNDg0MjkxKS4KKwkrIGNvcnJlY3QgdHlwbyBpbiBjdXJzX21lbWxlYWtzLjN4IChTdmVuIEpvYWNoaW0pLgorCSsgaW1wcm92ZSB0ZXN0L2NvbmZpZ3VyZSBjaGVja3MgZm9yIHNvbWUgY3Vyc2VzIHZhcmlhbnRzIG5vdCBiYXNlZCBvbgorCSAgWC9PcGVuIEN1cnNlcy4KKwkrIGFkZCBvcHRpb25zIGZvciB0ZXN0L2NvbmZpZ3VyZSB0byBkaXNhYmxlIGNoZWNrcyBmb3IgZm9ybSwgbWVudSBhbmQKKwkgIHBhbmVsIGxpYnJhcmllcy4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorQ1ZFOiBDVkUtMjAxNy0xMzczMiwgQ1ZFLTIwMTctMTM3MzQsIENWRS0yMDE3LTEzNzMwLCBDVkUtMjAxNy0xMzcyOSwgQ1ZFLTIwMTctMTM3MjgsIENWRS0yMDE3LTEzNzMxCisgCisKK0F1dGhvcjogU3ZlbiBKb2FjaGltIDxzdmVuam9hY0BnbXguZGU+CitTaWduZWQtb2ZmLWJ5OiBPdmlkaXUgUGFuYWl0IDxvdmlkaXUucGFuYWl0QHdpbmRyaXZlci5jb20+CistLS0KKyBkaXN0Lm1rICAgICAgICAgICAgICAgICAgICAgfCAgNCArLQorIGluY2x1ZGUvbmN1cnNlc19kZWZzICAgICAgICB8ICA0ICstCisgbmN1cnNlcy90aW5mby9hbGxvY19lbnRyeS5jIHwgIDQgKy0KKyBuY3Vyc2VzL3RpbmZvL2NvbXBfcGFyc2UuYyAgfCAxMCArKy0tLQorIG5jdXJzZXMvdGluZm8vY29tcF9zY2FuLmMgICB8ICA2ICsrLQorIG5jdXJzZXMvdGluZm8vcGFyc2VfZW50cnkuYyB8IDkxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQorIG5jdXJzZXMvdGluZm8vc3RyaW5ncy5jICAgICB8ICA5ICsrKy0tCisgbmN1cnNlcy90aW5mby90cmltX3NncjAuYyAgIHwgIDQgKy0KKyBwcm9ncy90aWMuYyAgICAgICAgICAgICAgICAgfCA3NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCisgOSBmaWxlcyBjaGFuZ2VkLCAxNTcgaW5zZXJ0aW9ucygrKSwgNTAgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9kaXN0Lm1rIGIvZGlzdC5taworaW5kZXggOWFmMjY5OS4uMmM3MDQ3MiAxMDA2NDQKKy0tLSBhL2Rpc3QubWsKKysrKyBiL2Rpc3QubWsKK0BAIC0yNSw3ICsyNSw3IEBACisgIyB1c2Ugb3Igb3RoZXIgZGVhbGluZ3MgaW4gdGhpcyBTb2Z0d2FyZSB3aXRob3V0IHByaW9yIHdyaXR0ZW4gICAgICAgICAgICAgICAjCisgIyBhdXRob3JpemF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCistIyAkSWQ6IGRpc3QubWssdiAxLjExNzIgMjAxNy8wNy8xMyAwMDoxNToyNyB0b20gRXhwICQKKysjICRJZDogZGlzdC5tayx2IDEuMTE3OSAyMDE3LzA4LzIwIDE1OjMzOjQxIHRvbSBFeHAgJAorICMgTWFrZWZpbGUgZm9yIGNyZWF0aW5nIG5jdXJzZXMgZGlzdHJpYnV0aW9ucy4KKyAjCisgIyBUaGlzIG9ubHkgbmVlZHMgdG8gYmUgdXNlZCBkaXJlY3RseSBhcyBhIG1ha2VmaWxlIGJ5IGRldmVsb3BlcnMsIGJ1dAorQEAgLTM3LDcgKzM3LDcgQEAgU0hFTEwgPSAvYmluL3NoCisgIyBUaGVzZSBkZWZpbmUgdGhlIG1ham9yL21pbm9yL3BhdGNoIHZlcnNpb25zIG9mIG5jdXJzZXMuCisgTkNVUlNFU19NQUpPUiA9IDYKKyBOQ1VSU0VTX01JTk9SID0gMAorLU5DVVJTRVNfUEFUQ0ggPSAyMDE3MDcxNQorK05DVVJTRVNfUEFUQ0ggPSAyMDE3MDgyNgorIAorICMgV2UgZG9uJ3QgYXBwZW5kIHRoZSBwYXRjaCB0byB0aGUgdmVyc2lvbiwgc2luY2UgdGhpcyBvbmx5IGFwcGxpZXMgdG8gcmVsZWFzZXMKKyBWRVJTSU9OID0gJChOQ1VSU0VTX01BSk9SKS4kKE5DVVJTRVNfTUlOT1IpCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uY3Vyc2VzX2RlZnMgYi9pbmNsdWRlL25jdXJzZXNfZGVmcworaW5kZXggZTY2MTFiNy4uZDIzN2RiMSAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvbmN1cnNlc19kZWZzCisrKysgYi9pbmNsdWRlL25jdXJzZXNfZGVmcworQEAgLTEsNCArMSw0IEBACistIyAkSWQ6IG5jdXJzZXNfZGVmcyx2IDEuNzMgMjAxNy8wNi8yNCAxNDoyMDo1NyB0b20gRXhwICQKKysjICRJZDogbmN1cnNlc19kZWZzLHYgMS43NSAyMDE3LzA4LzIwIDE2OjUwOjA0IHRvbSBFeHAgJAorICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworICMgQ29weXJpZ2h0IChjKSAyMDAwLTIwMTYsMjAxNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgICAgIworICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworQEAgLTUwLDcgKzUwLDkgQEAgSEFWRV9CU0RfU1RSSU5HX0gKKyBIQVZFX0JUT1dDIAorIEhBVkVfQlVJTFRJTl9ICisgSEFWRV9DSEdBVAkxCisrSEFWRV9DT0xPUl9DT05URU5UCTEKKyBIQVZFX0NPTE9SX1NFVAkxCisrSEFWRV9DVVJTQ1IJMQorIEhBVkVfRElSRU5UX0gKKyBIQVZFX0VSUk5PCisgSEFWRV9GQ05UTF9ICitkaWZmIC0tZ2l0IGEvbmN1cnNlcy90aW5mby9hbGxvY19lbnRyeS5jIGIvbmN1cnNlcy90aW5mby9hbGxvY19lbnRyeS5jCitpbmRleCA1ZGUwOWYxLi4wOTM3NGQ2IDEwMDY0NAorLS0tIGEvbmN1cnNlcy90aW5mby9hbGxvY19lbnRyeS5jCisrKysgYi9uY3Vyc2VzL3RpbmZvL2FsbG9jX2VudHJ5LmMKK0BAIC00Nyw3ICs0Nyw3IEBACisgCisgI2luY2x1ZGUgPHRpYy5oPgorIAorLU1PRFVMRV9JRCgiJElkOiBhbGxvY19lbnRyeS5jLHYgMS42MCAyMDE3LzA2LzI3IDIzOjQ4OjU1IHRvbSBFeHAgJCIpCisrTU9EVUxFX0lEKCIkSWQ6IGFsbG9jX2VudHJ5LmMsdiAxLjYxIDIwMTcvMDgvMjUgMDk6MDk6MDggdG9tIEV4cCAkIikKKyAKKyAjZGVmaW5lIEFCU0VOVF9PRkZTRVQgICAgLTEKKyAjZGVmaW5lIENBTkNFTExFRF9PRkZTRVQgLTIKK0BAIC05OCw3ICs5OCw3IEBAIF9uY19zYXZlX3N0cihjb25zdCBjaGFyICpjb25zdCBzdHJpbmcpCisgICAgIHNpemVfdCBvbGRfbmV4dF9mcmVlID0gbmV4dF9mcmVlOworICAgICBzaXplX3QgbGVuOworIAorLSAgICBpZiAoc3RyaW5nID09IDApCisrICAgIGlmICghVkFMSURfU1RSSU5HKHN0cmluZykpCisgCXJldHVybiBfbmNfc2F2ZV9zdHIoIiIpOworICAgICBsZW4gPSBzdHJsZW4oc3RyaW5nKSArIDE7CisgCitkaWZmIC0tZ2l0IGEvbmN1cnNlcy90aW5mby9jb21wX3BhcnNlLmMgYi9uY3Vyc2VzL3RpbmZvL2NvbXBfcGFyc2UuYworaW5kZXggMzRlNjIxNi4uNTgwZDRkZiAxMDA2NDQKKy0tLSBhL25jdXJzZXMvdGluZm8vY29tcF9wYXJzZS5jCisrKysgYi9uY3Vyc2VzL3RpbmZvL2NvbXBfcGFyc2UuYworQEAgLTQ3LDcgKzQ3LDcgQEAKKyAKKyAjaW5jbHVkZSA8dGljLmg+CisgCistTU9EVUxFX0lEKCIkSWQ6IGNvbXBfcGFyc2UuYyx2IDEuOTYgMjAxNy8wNC8xNSAxNTozNjo1OCB0b20gRXhwICQiKQorK01PRFVMRV9JRCgiJElkOiBjb21wX3BhcnNlLmMsdiAxLjk5IDIwMTcvMDgvMjYgMTY6MTU6NTAgdG9tIEV4cCAkIikKKyAKKyBzdGF0aWMgdm9pZCBzYW5pdHlfY2hlY2syKFRFUk1UWVBFMiAqLCBib29sKTsKKyBOQ1VSU0VTX0lNUEVYUCB2b2lkIE5DVVJTRVNfQVBJKCpfbmNfY2hlY2tfdGVybXR5cGUyKSAoVEVSTVRZUEUyICosIGJvb2wpID0gc2FuaXR5X2NoZWNrMjsKK0BAIC01MTAsOSArNTEwLDkgQEAgc3RhdGljIHZvaWQKKyBmaXh1cF9hY3NjKFRFUk1UWVBFMiAqdHAsIGludCBsaXRlcmFsKQorIHsKKyAgICAgaWYgKCFsaXRlcmFsKSB7CistCWlmIChhY3NfY2hhcnMgPT0gMAorLQkgICAgJiYgZW50ZXJfYWx0X2NoYXJzZXRfbW9kZSAhPSAwCistCSAgICAmJiBleGl0X2FsdF9jaGFyc2V0X21vZGUgIT0gMCkKKysJaWYgKGFjc19jaGFycyA9PSBBQlNFTlRfU1RSSU5HCisrCSAgICAmJiBQUkVTRU5UKGVudGVyX2FsdF9jaGFyc2V0X21vZGUpCisrCSAgICAmJiBQUkVTRU5UKGV4aXRfYWx0X2NoYXJzZXRfbW9kZSkpCisgCSAgICBhY3NfY2hhcnMgPSBzdHJkdXAoVlRfQUNTQyk7CisgICAgIH0KKyB9CitAQCAtNTY4LDkgKzU2OCw3IEBAIHNhbml0eV9jaGVjazIoVEVSTVRZUEUyICp0cCwgYm9vbCBsaXRlcmFsKQorICAgICBQQUlSRUQoZW50ZXJfeG9uX21vZGUsIGV4aXRfeG9uX21vZGUpOworICAgICBQQUlSRUQoZW50ZXJfYW1fbW9kZSwgZXhpdF9hbV9tb2RlKTsKKyAgICAgQU5ETUlTU0lORyhsYWJlbF9vZmYsIGxhYmVsX29uKTsKKy0jaWZkZWYgcmVtb3ZlX2Nsb2NrCisgICAgIFBBSVJFRChkaXNwbGF5X2Nsb2NrLCByZW1vdmVfY2xvY2spOworLSNlbmRpZgorICAgICBBTkRNSVNTSU5HKHNldF9jb2xvcl9wYWlyLCBpbml0aWFsaXplX3BhaXIpOworIH0KKyAKK2RpZmYgLS1naXQgYS9uY3Vyc2VzL3RpbmZvL2NvbXBfc2Nhbi5jIGIvbmN1cnNlcy90aW5mby9jb21wX3NjYW4uYworaW5kZXggNDBkN2Y2YS4uYjIwNzI1NyAxMDA2NDQKKy0tLSBhL25jdXJzZXMvdGluZm8vY29tcF9zY2FuLmMKKysrKyBiL25jdXJzZXMvdGluZm8vY29tcF9zY2FuLmMKK0BAIC01MCw3ICs1MCw3IEBACisgI2luY2x1ZGUgPGN0eXBlLmg+CisgI2luY2x1ZGUgPHRpYy5oPgorIAorLU1PRFVMRV9JRCgiJElkOiBjb21wX3NjYW4uYyx2IDEuMTA2IDIwMTcvMDQvMjIgMTE6NDE6MTIgdG9tIEV4cCAkIikKKytNT0RVTEVfSUQoIiRJZDogY29tcF9zY2FuLmMsdiAxLjEwOCAyMDE3LzA4LzI1IDIyOjU3OjIxIHRvbSBFeHAgJCIpCisgCisgLyoKKyAgKiBNYXhpbXVtIGxlbmd0aCBvZiBzdHJpbmcgY2FwYWJpbGl0eSB3ZSdsbCBhY2NlcHQgYmVmb3JlIHJhaXNpbmcgYW4gZXJyb3IuCitAQCAtMTY4LDYgKzE2OCw4IEBAIG5leHRfY2hhcih2b2lkKQorIAlpZiAocmVzdWx0ICE9IDApIHsKKyAJICAgIEZyZWVBbmROdWxsKHJlc3VsdCk7CisgCSAgICBGcmVlQW5kTnVsbChwdXNobmFtZSk7CisrCSAgICBidWZwdHIgPSAwOworKwkgICAgYnVmc3RhcnQgPSAwOworIAkgICAgYWxsb2NhdGVkID0gMDsKKyAJfQorIAkvKgorQEAgLTIyMiw2ICsyMjQsOCBAQCBuZXh0X2NoYXIodm9pZCkKKyAJCX0KKyAJCWlmICgoYnVmcHRyID0gYnVmc3RhcnQpICE9IDApIHsKKyAJCSAgICB1c2VkID0gc3RybGVuKGJ1ZnB0cik7CisrCQkgICAgaWYgKHVzZWQgPT0gMCkKKysJCQlyZXR1cm4gKEVPRik7CisgCQkgICAgd2hpbGUgKGlzd2hpdGUoKmJ1ZnB0cikpIHsKKyAJCQlpZiAoKmJ1ZnB0ciA9PSAnXHQnKSB7CisgCQkJICAgIF9uY19jdXJyX2NvbCA9IChfbmNfY3Vycl9jb2wgfCA3KSArIDE7CitkaWZmIC0tZ2l0IGEvbmN1cnNlcy90aW5mby9wYXJzZV9lbnRyeS5jIGIvbmN1cnNlcy90aW5mby9wYXJzZV9lbnRyeS5jCitpbmRleCAzZmEyZjI1Li5iYmJmY2IyIDEwMDY0NAorLS0tIGEvbmN1cnNlcy90aW5mby9wYXJzZV9lbnRyeS5jCisrKysgYi9uY3Vyc2VzL3RpbmZvL3BhcnNlX2VudHJ5LmMKK0BAIC00Nyw3ICs0Nyw3IEBACisgI2luY2x1ZGUgPGN0eXBlLmg+CisgI2luY2x1ZGUgPHRpYy5oPgorIAorLU1PRFVMRV9JRCgiJElkOiBwYXJzZV9lbnRyeS5jLHYgMS44NiAyMDE3LzA2LzI4IDAwOjUzOjEyIHRvbSBFeHAgJCIpCisrTU9EVUxFX0lEKCIkSWQ6IHBhcnNlX2VudHJ5LmMsdiAxLjkxIDIwMTcvMDgvMjYgMTY6MTM6MzQgdG9tIEV4cCAkIikKKyAKKyAjaWZkZWYgTElOVAorIHN0YXRpYyBzaG9ydCBjb25zdCBwYXJhbWV0cml6ZWRbXSA9CitAQCAtMTgwLDYgKzE4MCwyMCBAQCBfbmNfZXh0ZW5kX25hbWVzKEVOVFJZICogZW50cnlwLCBjaGFyICpuYW1lLCBpbnQgdG9rZW5fdHlwZSkKKyB9CisgI2VuZGlmIC8qIE5DVVJTRVNfWE5BTUVTICovCisgCisrc3RhdGljIGJvb2wKKyt2YWxpZF9lbnRyeW5hbWUoY29uc3QgY2hhciAqbmFtZSkKKyt7CisrICAgIGJvb2wgcmVzdWx0ID0gVFJVRTsKKysgICAgaW50IGNoOworKyAgICB3aGlsZSAoKGNoID0gVUNoYXIoKm5hbWUrKykpICE9ICdcMCcpIHsKKysJaWYgKGNoIDw9ICcgJyB8fCBjaCA+ICd+JyB8fCBjaCA9PSAnLycpIHsKKysJICAgIHJlc3VsdCA9IEZBTFNFOworKwkgICAgYnJlYWs7CisrCX0KKysgICAgfQorKyAgICByZXR1cm4gcmVzdWx0OworK30KKysKKyAvKgorICAqCWludAorICAqCV9uY19wYXJzZV9lbnRyeShlbnRyeSwgbGl0ZXJhbCwgc2lsZW50KQorQEAgLTIxMSw2ICsyMjUsNyBAQCBfbmNfcGFyc2VfZW50cnkoRU5UUlkgKiBlbnRyeXAsIGludCBsaXRlcmFsLCBib29sIHNpbGVudCkKKyAgICAgaW50IHRva2VuX3R5cGU7CisgICAgIHN0cnVjdCBuYW1lX3RhYmxlX2VudHJ5IGNvbnN0ICplbnRyeV9wdHI7CisgICAgIGNoYXIgKnB0ciwgKmJhc2U7CisrICAgIGNvbnN0IGNoYXIgKm5hbWU7CisgICAgIGJvb2wgYmFkX3RjX3VzYWdlID0gRkFMU0U7CisgCisgICAgIHRva2VuX3R5cGUgPSBfbmNfZ2V0X3Rva2VuKHNpbGVudCk7CitAQCAtMjYxLDcgKzI3NiwxMiBAQCBfbmNfcGFyc2VfZW50cnkoRU5UUlkgKiBlbnRyeXAsIGludCBsaXRlcmFsLCBib29sIHNpbGVudCkKKyAgICAgICogcmVzdWx0cyBpbiB0aGUgdGVybWluYWwgdHlwZSBnZXR0aW5nIHByZW1hdHVyZWx5IHNldCB0byBjb3JyZXNwb25kCisgICAgICAqIHRvIHRoYXQgb2YgdGhlIG5leHQgZW50cnkuCisgICAgICAqLworLSAgICBfbmNfc2V0X3R5cGUoX25jX2ZpcnN0X25hbWUoZW50cnlwLT50dGVybS50ZXJtX25hbWVzKSk7CisrICAgIG5hbWUgPSBfbmNfZmlyc3RfbmFtZShlbnRyeXAtPnR0ZXJtLnRlcm1fbmFtZXMpOworKyAgICBpZiAoIXZhbGlkX2VudHJ5bmFtZShuYW1lKSkgeworKwlfbmNfd2FybmluZygiaW52YWxpZCBlbnRyeSBuYW1lIFwiJXNcIiIsIG5hbWUpOworKwluYW1lID0gImludmFsaWQiOworKyAgICB9CisrICAgIF9uY19zZXRfdHlwZShuYW1lKTsKKyAKKyAgICAgLyogY2hlY2sgZm9yIG92ZXJseS1sb25nIG5hbWVzIGFuZCBhbGlhc2VzICovCisgICAgIGZvciAoYmFzZSA9IGVudHJ5cC0+dHRlcm0udGVybV9uYW1lczsgKHB0ciA9IHN0cmNocihiYXNlLCAnfCcpKSAhPSAwOworQEAgLTI4MywxMyArMzAzLDI0IEBAIF9uY19wYXJzZV9lbnRyeShFTlRSWSAqIGVudHJ5cCwgaW50IGxpdGVyYWwsIGJvb2wgc2lsZW50KQorIAlib29sIGlzX3VzZSA9IChzdHJjbXAoX25jX2N1cnJfdG9rZW4udGtfbmFtZSwgInVzZSIpID09IDApOworIAlib29sIGlzX3RjID0gIWlzX3VzZSAmJiAoc3RyY21wKF9uY19jdXJyX3Rva2VuLnRrX25hbWUsICJ0YyIpID09IDApOworIAlpZiAoaXNfdXNlIHx8IGlzX3RjKSB7CisrCSAgICBpZiAoIVZBTElEX1NUUklORyhfbmNfY3Vycl90b2tlbi50a192YWxzdHJpbmcpCisrCQl8fCBfbmNfY3Vycl90b2tlbi50a192YWxzdHJpbmdbMF0gPT0gJ1wwJykgeworKwkJX25jX3dhcm5pbmcoIm1pc3NpbmcgbmFtZSBmb3IgdXNlLWNsYXVzZSIpOworKwkJY29udGludWU7CisrCSAgICB9IGVsc2UgaWYgKCF2YWxpZF9lbnRyeW5hbWUoX25jX2N1cnJfdG9rZW4udGtfdmFsc3RyaW5nKSkgeworKwkJX25jX3dhcm5pbmcoImludmFsaWQgbmFtZSBmb3IgdXNlLWNsYXVzZSBcIiVzXCIiLAorKwkJCSAgICBfbmNfY3Vycl90b2tlbi50a192YWxzdHJpbmcpOworKwkJY29udGludWU7CisrCSAgICB9IGVsc2UgaWYgKGVudHJ5cC0+bnVzZXMgPj0gTUFYX1VTRVMpIHsKKysJCV9uY193YXJuaW5nKCJ0b28gbWFueSB1c2UtY2xhdXNlcywgaWdub3JlZCBcIiVzXCIiLAorKwkJCSAgICBfbmNfY3Vycl90b2tlbi50a192YWxzdHJpbmcpOworKwkJY29udGludWU7CisrCSAgICB9CisgCSAgICBlbnRyeXAtPnVzZXNbZW50cnlwLT5udXNlc10ubmFtZSA9IF9uY19zYXZlX3N0cihfbmNfY3Vycl90b2tlbi50a192YWxzdHJpbmcpOworIAkgICAgZW50cnlwLT51c2VzW2VudHJ5cC0+bnVzZXNdLmxpbmUgPSBfbmNfY3Vycl9saW5lOworLQkgICAgaWYgKFZBTElEX1NUUklORyhlbnRyeXAtPnVzZXNbZW50cnlwLT5udXNlc10ubmFtZSkpIHsKKy0JCWVudHJ5cC0+bnVzZXMrKzsKKy0JCWlmIChlbnRyeXAtPm51c2VzID4gMSAmJiBpc190YykgeworLQkJICAgIEJBRF9UQ19VU0FHRQorLQkJfQorKwkgICAgZW50cnlwLT5udXNlcysrOworKwkgICAgaWYgKGVudHJ5cC0+bnVzZXMgPiAxICYmIGlzX3RjKSB7CisrCQlCQURfVENfVVNBR0UKKyAJICAgIH0KKyAJfSBlbHNlIHsKKyAJICAgIC8qIG5vcm1hbCB0b2tlbiBsb29rdXAgKi8KK0BAIC02NDEsMTMgKzY3Miw2IEBAIHN0YXRpYyBjb25zdCBjaGFyIENfQlNbXSA9ICJcYiI7Cisgc3RhdGljIGNvbnN0IGNoYXIgQ19IVFtdID0gIlx0IjsKKyAKKyAvKgorLSAqIE5vdGUgdGhhdCBXQU5URUQgYW5kIFBSRVNFTlQgYXJlIG5vdCBzaW1wbGUgaW52ZXJzZXMhICBJZiBhIGNhcGFiaWxpdHkKKy0gKiBoYXMgYmVlbiBleHBsaWNpdGx5IGNhbmNlbGxlZCwgaXQncyBub3QgY29uc2lkZXJlZCBXQU5URUQuCistICovCistI2RlZmluZSBXQU5URUQocykJKChzKSA9PSBBQlNFTlRfU1RSSU5HKQorLSNkZWZpbmUgUFJFU0VOVChzKQkoKChzKSAhPSBBQlNFTlRfU1RSSU5HKSAmJiAoKHMpICE9IENBTkNFTExFRF9TVFJJTkcpKQorLQorLS8qCisgICogVGhpcyBiaXQgb2YgbGVnZXJkZW1haW4gdHVybnMgYWxsIHRoZSB0ZXJtaW5mbyB2YXJpYWJsZSBuYW1lcyBpbnRvCisgICogcmVmZXJlbmNlcyB0byBsb2NhdGlvbnMgaW4gdGhlIGFycmF5cyBCb29sZWFucywgTnVtYmVycywgYW5kIFN0cmluZ3MgLS0tCisgICogcHJlY2lzZWx5IHdoYXQncyBuZWVkZWQuCitAQCAtNjcyLDEwICs2OTYsMTAgQEAgcG9zdHByb2Nlc3NfdGVybWNhcChURVJNVFlQRTIgKnRwLCBib29sIGhhc19iYXNlKQorIAorICAgICAvKiBpZiB0aGVyZSB3YXMgYSB0YyBlbnRyeSwgYXNzdW1lIHdlIHBpY2tlZCB1cCBkZWZhdWx0cyB2aWEgdGhhdCAqLworICAgICBpZiAoIWhhc19iYXNlKSB7CistCWlmIChXQU5URUQoaW5pdF8zc3RyaW5nKSAmJiB0ZXJtY2FwX2luaXQyKQorKwlpZiAoV0FOVEVEKGluaXRfM3N0cmluZykgJiYgUFJFU0VOVCh0ZXJtY2FwX2luaXQyKSkKKyAJICAgIGluaXRfM3N0cmluZyA9IF9uY19zYXZlX3N0cih0ZXJtY2FwX2luaXQyKTsKKyAKKy0JaWYgKFdBTlRFRChyZXNldF8yc3RyaW5nKSAmJiB0ZXJtY2FwX3Jlc2V0KQorKwlpZiAoV0FOVEVEKHJlc2V0XzJzdHJpbmcpICYmIFBSRVNFTlQodGVybWNhcF9yZXNldCkpCisgCSAgICByZXNldF8yc3RyaW5nID0gX25jX3NhdmVfc3RyKHRlcm1jYXBfcmVzZXQpOworIAorIAlpZiAoV0FOVEVEKGNhcnJpYWdlX3JldHVybikpIHsKK0BAIC03OTAsNyArODE0LDcgQEAgcG9zdHByb2Nlc3NfdGVybWNhcChURVJNVFlQRTIgKnRwLCBib29sIGhhc19iYXNlKQorIAlpZiAoaW5pdF90YWJzICE9IDggJiYgaW5pdF90YWJzICE9IEFCU0VOVF9OVU1FUklDKQorIAkgICAgX25jX3dhcm5pbmcoImhhcmR3YXJlIHRhYnMgd2l0aCBhIHdpZHRoIG90aGVyIHRoYW4gODogJWQiLCBpbml0X3RhYnMpOworIAllbHNlIHsKKy0JICAgIGlmICh0YWIgJiYgX25jX2NhcGNtcCh0YWIsIENfSFQpKQorKwkgICAgaWYgKFBSRVNFTlQodGFiKSAmJiBfbmNfY2FwY21wKHRhYiwgQ19IVCkpCisgCQlfbmNfd2FybmluZygiaGFyZHdhcmUgdGFicyB3aXRoIGEgbm9uLV5JIHRhYiBzdHJpbmcgJXMiLAorIAkJCSAgICBfbmNfdmlzYnVmKHRhYikpOworIAkgICAgZWxzZSB7CitAQCAtODY3LDE3ICs4OTEsMjIgQEAgcG9zdHByb2Nlc3NfdGVybWNhcChURVJNVFlQRTIgKnRwLCBib29sIGhhc19iYXNlKQorIAkgICAgICogVGhlIG1hZ2ljIG1vbWVudCAtLSBjb3B5IHRoZSBtYXBwZWQga2V5IHN0cmluZyBvdmVyLAorIAkgICAgICogc3RyaXBwaW5nIG91dCBwYWRkaW5nLgorIAkgICAgICovCistCSAgICBmb3IgKGRwID0gYnVmMiwgYnAgPSB0cC0+U3RyaW5nc1tmcm9tX3B0ci0+bnRlX2luZGV4XTsgKmJwOyBicCsrKSB7CistCQlpZiAoYnBbMF0gPT0gJyQnICYmIGJwWzFdID09ICc8JykgeworLQkJICAgIHdoaWxlICgqYnAgJiYgKmJwICE9ICc+JykgeworLQkJCSsrYnA7CistCQkgICAgfQorLQkJfSBlbHNlCistCQkgICAgKmRwKysgPSAqYnA7CistCSAgICB9CistCSAgICAqZHAgPSAnXDAnOworKwkgICAgYnAgPSB0cC0+U3RyaW5nc1tmcm9tX3B0ci0+bnRlX2luZGV4XTsKKysJICAgIGlmIChWQUxJRF9TVFJJTkcoYnApKSB7CisrCQlmb3IgKGRwID0gYnVmMjsgKmJwOyBicCsrKSB7CisrCQkgICAgaWYgKGJwWzBdID09ICckJyAmJiBicFsxXSA9PSAnPCcpIHsKKysJCQl3aGlsZSAoKmJwICYmICpicCAhPSAnPicpIHsKKysJCQkgICAgKyticDsKKysJCQl9CisrCQkgICAgfSBlbHNlCisrCQkJKmRwKysgPSAqYnA7CisrCQl9CisrCQkqZHAgPSAnXDAnOworIAorLQkgICAgdHAtPlN0cmluZ3NbdG9fcHRyLT5udGVfaW5kZXhdID0gX25jX3NhdmVfc3RyKGJ1ZjIpOworKwkJdHAtPlN0cmluZ3NbdG9fcHRyLT5udGVfaW5kZXhdID0gX25jX3NhdmVfc3RyKGJ1ZjIpOworKwkgICAgfSBlbHNlIHsKKysJCXRwLT5TdHJpbmdzW3RvX3B0ci0+bnRlX2luZGV4XSA9IGJwOworKwkgICAgfQorIAl9CisgCisgCS8qCitAQCAtODg2LDcgKzkxNSw3IEBAIHBvc3Rwcm9jZXNzX3Rlcm1jYXAoVEVSTVRZUEUyICp0cCwgYm9vbCBoYXNfYmFzZSkKKyAJICogZ290IG1hcHBlZCB0byBraWNoMSBhbmQgaW0gdG8ga0lDIHRvIGF2b2lkIGEgY29sbGlzaW9uLgorIAkgKiBJZiB0aGUgZGVzY3JpcHRpb24gaGFzIGltIGJ1dCBub3QgaWMsIGhhY2sga0lDIGJhY2sgdG8ga2ljaDEuCisgCSAqLworLQlpZiAoZm91bmRpbSAmJiBXQU5URUQoa2V5X2ljKSAmJiBrZXlfc2ljKSB7CisrCWlmIChmb3VuZGltICYmIFdBTlRFRChrZXlfaWMpICYmIFBSRVNFTlQoa2V5X3NpYykpIHsKKyAJICAgIGtleV9pYyA9IGtleV9zaWM7CisgCSAgICBrZXlfc2ljID0gQUJTRU5UX1NUUklORzsKKyAJfQorQEAgLTkzOCw5ICs5NjcsOSBAQCBwb3N0cHJvY2Vzc190ZXJtY2FwKFRFUk1UWVBFMiAqdHAsIGJvb2wgaGFzX2Jhc2UpCisgCSAgICBhY3NfY2hhcnMgPSBfbmNfc2F2ZV9zdHIoYnVmMik7CisgCSAgICBfbmNfd2FybmluZygiYWNzYyBzdHJpbmcgc3ludGhlc2l6ZWQgZnJvbSBYRU5JWCBjYXBhYmlsaXRpZXMiKTsKKyAJfQorLSAgICB9IGVsc2UgaWYgKGFjc19jaGFycyA9PSAwCistCSAgICAgICAmJiBlbnRlcl9hbHRfY2hhcnNldF9tb2RlICE9IDAKKy0JICAgICAgICYmIGV4aXRfYWx0X2NoYXJzZXRfbW9kZSAhPSAwKSB7CisrICAgIH0gZWxzZSBpZiAoYWNzX2NoYXJzID09IEFCU0VOVF9TVFJJTkcKKysJICAgICAgICYmIFBSRVNFTlQoZW50ZXJfYWx0X2NoYXJzZXRfbW9kZSkKKysJICAgICAgICYmIFBSRVNFTlQoZXhpdF9hbHRfY2hhcnNldF9tb2RlKSkgeworIAlhY3NfY2hhcnMgPSBfbmNfc2F2ZV9zdHIoVlRfQUNTQyk7CisgICAgIH0KKyB9CitkaWZmIC0tZ2l0IGEvbmN1cnNlcy90aW5mby9zdHJpbmdzLmMgYi9uY3Vyc2VzL3RpbmZvL3N0cmluZ3MuYworaW5kZXggMzkzZDhlNy4uMTBlYzZjOCAxMDA2NDQKKy0tLSBhL25jdXJzZXMvdGluZm8vc3RyaW5ncy5jCisrKysgYi9uY3Vyc2VzL3RpbmZvL3N0cmluZ3MuYworQEAgLTEsNSArMSw1IEBACisgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy0gKiBDb3B5cmlnaHQgKGMpIDIwMDAtMjAwNywyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgKgorKyAqIENvcHlyaWdodCAoYykgMjAwMC0yMDEyLDIwMTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuICAgICAgICAgICAgICAqCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSAgKgorICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgICAgICAgICAgICAqCitAQCAtMzUsOCArMzUsOSBAQAorICoqLworIAorICNpbmNsdWRlIDxjdXJzZXMucHJpdi5oPgorKyNpbmNsdWRlIDx0aWMuaD4KKyAKKy1NT0RVTEVfSUQoIiRJZDogc3RyaW5ncy5jLHYgMS44IDIwMTIvMDIvMjIgMjI6MzQ6MzEgdG9tIEV4cCAkIikKKytNT0RVTEVfSUQoIiRJZDogc3RyaW5ncy5jLHYgMS45IDIwMTcvMDgvMjYgMTM6MTY6MTEgdG9tIEV4cCAkIikKKyAKKyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAqIFVzZWZ1bCBzdHJpbmcgZnVuY3Rpb25zIChlc3BlY2lhbGx5IGZvciBtdmN1cikKK0BAIC0xMDUsNyArMTA2LDcgQEAgX25jX3N0cl9jb3B5KHN0cmluZ19kZXNjICogZHN0LCBzdHJpbmdfZGVzYyAqIHNyYykKKyBOQ1VSU0VTX0VYUE9SVChib29sKQorIF9uY19zYWZlX3N0cmNhdChzdHJpbmdfZGVzYyAqIGRzdCwgY29uc3QgY2hhciAqc3JjKQorIHsKKy0gICAgaWYgKHNyYyAhPSAwKSB7CisrICAgIGlmIChQUkVTRU5UKHNyYykpIHsKKyAJc2l6ZV90IGxlbiA9IHN0cmxlbihzcmMpOworIAorIAlpZiAobGVuIDwgZHN0LT5zX3NpemUpIHsKK0BAIC0xMjYsNyArMTI3LDcgQEAgX25jX3NhZmVfc3RyY2F0KHN0cmluZ19kZXNjICogZHN0LCBjb25zdCBjaGFyICpzcmMpCisgTkNVUlNFU19FWFBPUlQoYm9vbCkKKyBfbmNfc2FmZV9zdHJjcHkoc3RyaW5nX2Rlc2MgKiBkc3QsIGNvbnN0IGNoYXIgKnNyYykKKyB7CistICAgIGlmIChzcmMgIT0gMCkgeworKyAgICBpZiAoUFJFU0VOVChzcmMpKSB7CisgCXNpemVfdCBsZW4gPSBzdHJsZW4oc3JjKTsKKyAKKyAJaWYgKGxlbiA8IGRzdC0+c19zaXplKSB7CitkaWZmIC0tZ2l0IGEvbmN1cnNlcy90aW5mby90cmltX3NncjAuYyBiL25jdXJzZXMvdGluZm8vdHJpbV9zZ3IwLmMKK2luZGV4IDRjYmNiNjUuLjRkOTJkMTUgMTAwNjQ0CistLS0gYS9uY3Vyc2VzL3RpbmZvL3RyaW1fc2dyMC5jCisrKysgYi9uY3Vyc2VzL3RpbmZvL3RyaW1fc2dyMC5jCitAQCAtMzYsNyArMzYsNyBAQAorIAorICNpbmNsdWRlIDx0aWMuaD4KKyAKKy1NT0RVTEVfSUQoIiRJZDogdHJpbV9zZ3IwLmMsdiAxLjE2IDIwMTcvMDQvMDUgMjI6MzM6MDcgdG9tIEV4cCAkIikKKytNT0RVTEVfSUQoIiRJZDogdHJpbV9zZ3IwLmMsdiAxLjE3IDIwMTcvMDgvMjYgMTQ6NTQ6MTYgdG9tIEV4cCAkIikKKyAKKyAjdW5kZWYgQ1VSCisgI2RlZmluZSBDVVIgdHAtPgorQEAgLTI2Myw3ICsyNjMsNyBAQCBfbmNfdHJpbV9zZ3IwKFRFUk1UWVBFMiAqdHApCisgCSAgICAvKgorIAkgICAgICogSWYgcm1hY3MgaXMgYSBzdWJzdHJpbmcgb2Ygc2dyKDApLCByZW1vdmUgdGhhdCBjaHVuay4KKyAJICAgICAqLworLQkgICAgaWYgKGV4aXRfYWx0X2NoYXJzZXRfbW9kZSAhPSAwKSB7CisrCSAgICBpZiAoUFJFU0VOVChleGl0X2FsdF9jaGFyc2V0X21vZGUpKSB7CisgCQlUUihUUkFDRV9EQVRBQkFTRSwgKCJzY2FuIGZvciBybWFjcyAlcyIsIF9uY192aXNidWYoZXhpdF9hbHRfY2hhcnNldF9tb2RlKSkpOworIAkJaiA9IHN0cmxlbihvZmYpOworIAkJayA9IHN0cmxlbihleGl0X2FsdF9jaGFyc2V0X21vZGUpOworZGlmZiAtLWdpdCBhL3Byb2dzL3RpYy5jIGIvcHJvZ3MvdGljLmMKK2luZGV4IGM1ZDc4ZTUuLjZkZDQ2NzggMTAwNjQ0CistLS0gYS9wcm9ncy90aWMuYworKysrIGIvcHJvZ3MvdGljLmMKK0BAIC00OCw3ICs0OCw3IEBACisgI2luY2x1ZGUgPHBhcmFtZXRyaXplZC5oPgorICNpbmNsdWRlIDx0cmFuc2Zvcm0uaD4KKyAKKy1NT0RVTEVfSUQoIiRJZDogdGljLmMsdiAxLjIzMyAyMDE3LzA3LzE1IDE3OjQwOjE5IHRvbSBFeHAgJCIpCisrTU9EVUxFX0lEKCIkSWQ6IHRpYy5jLHYgMS4yNDMgMjAxNy8wOC8yNiAyMDo1Njo1NSB0b20gRXhwICQiKQorIAorICNkZWZpbmUgU1RESU5fTkFNRSAiPHN0ZGluPiIKKyAKK0BAIC02Miw2ICs2MiwxMCBAQCBzdGF0aWMgYm9vbCBzaG93c3VtbWFyeSA9IEZBTFNFOworIHN0YXRpYyBjaGFyICoqbmFtZWxzdCA9IDA7Cisgc3RhdGljIGNvbnN0IGNoYXIgKnRvX3JlbW92ZTsKKyAKKysjaWYgTkNVUlNFU19YTkFNRVMKKytzdGF0aWMgYm9vbCB1c2luZ19leHRlbnNpb25zID0gRkFMU0U7CisrI2VuZGlmCisrCisgc3RhdGljIHZvaWQgKCpzYXZlX2NoZWNrX3Rlcm10eXBlKSAoVEVSTVRZUEUyICosIGJvb2wpOworIHN0YXRpYyB2b2lkIGNoZWNrX3Rlcm10eXBlKFRFUk1UWVBFMiAqdHQsIGJvb2wpOworIAorQEAgLTg1MCw2ICs4NTQsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCisgCSAgICAvKiBGQUxMVEhSVSAqLworIAljYXNlICd4JzoKKyAJICAgIHVzZV9leHRlbmRlZF9uYW1lcyhUUlVFKTsKKysJICAgIHVzaW5nX2V4dGVuc2lvbnMgPSBUUlVFOworIAkgICAgYnJlYWs7CisgI2VuZGlmCisgCWRlZmF1bHQ6CitAQCAtMjQwNSwxMCArMjQxMCwxNyBAQCBjaGVja19jb25mbGljdChURVJNVFlQRTIgKnRwKQorIAkgICAgY29uc3QgY2hhciAqYSA9IGdpdmVuW2pdLnZhbHVlOworIAkgICAgYm9vbCBmaXJzdCA9IFRSVUU7CisgCisrCSAgICBpZiAoIVZBTElEX1NUUklORyhhKSkKKysJCWNvbnRpbnVlOworKworIAkgICAgZm9yIChrID0gaiArIDE7IGdpdmVuW2tdLmtleWNvZGU7IGsrKykgeworIAkJY29uc3QgY2hhciAqYiA9IGdpdmVuW2tdLnZhbHVlOworKworKwkJaWYgKCFWQUxJRF9TVFJJTkcoYikpCisrCQkgICAgY29udGludWU7CisgCQlpZiAoY2hlY2tba10pCisgCQkgICAgY29udGludWU7CisrCisgCQlpZiAoIV9uY19jYXBjbXAoYSwgYikpIHsKKyAJCSAgICBjaGVja1tqXSA9IDE7CisgCQkgICAgY2hlY2tba10gPSAxOworQEAgLTI0MzEsNiArMjQ0Myw2NyBAQCBjaGVja19jb25mbGljdChURVJNVFlQRTIgKnRwKQorIAkgICAgaWYgKCFmaXJzdCkKKyAJCWZwcmludGYoc3RkZXJyLCAiXG4iKTsKKyAJfQorKyNpZiBOQ1VSU0VTX1hOQU1FUworKwlpZiAodXNpbmdfZXh0ZW5zaW9ucykgeworKwkgICAgLyogKklOREVOVC1PRkYqICovCisrCSAgICBzdGF0aWMgc3RydWN0IHsKKysJCWNvbnN0IGNoYXIgKnhjdXJzZXM7CisrCQljb25zdCBjaGFyICpzaGlmdGVkOworKwkgICAgfSB0YWJsZVtdID0geworKwkJeyAia0RDIiwgIE5VTEwgfSwKKysJCXsgImtETiIsICAia2luZCIgfSwKKysJCXsgImtFTkQiLCBOVUxMIH0sCisrCQl7ICJrSE9NIiwgTlVMTCB9LAorKwkJeyAia0xGVCIsIE5VTEwgfSwKKysJCXsgImtOWFQiLCBOVUxMIH0sCisrCQl7ICJrUFJWIiwgTlVMTCB9LAorKwkJeyAia1JJVCIsIE5VTEwgfSwKKysJCXsgImtVUCIsICAia3JpIiB9LAorKwkJeyBOVUxMLCAgIE5VTEwgfSwKKysJICAgIH07CisrCSAgICAvKiAqSU5ERU5ULU9OKiAqLworKworKwkgICAgLyoKKysJICAgICAqIFNWcjQgY3Vyc2VzIGRlZmluZXMgdGhlICJ4Y3Vyc2VzIiBuYW1lcyBsaXN0ZWQgYWJvdmUgZXhjZXB0IGZvcgorKwkgICAgICogdGhlIHNwZWNpYWwgY2FzZXMgaW4gdGhlICJzaGlmdGVkIiBjb2x1bW4uICBXaGVuIHVzaW5nIHRoZXNlCisrCSAgICAgKiBuYW1lcyBmb3IgeHRlcm0ncyBleHRlbnNpb25zLCB0aGF0IHdhcyBjb25mdXNpbmcsIGFuZCByZXN1bHRlZAorKwkgICAgICogaW4gYWRkaW5nIGV4dGVuZGVkIGNhcGFiaWxpdGllcyB3aXRoICIyIiAoc2hpZnQpIHN1ZmZpeC4gIFRoaXMKKysJICAgICAqIGNoZWNrIHdhcm5zIGFib3V0IHVubmVjZXNzYXJ5IHVzZSBvZiBleHRlbnNpb25zIGZvciB0aGlzIHF1aXJrLgorKwkgICAgICovCisrCSAgICBmb3IgKGogPSAwOyBnaXZlbltqXS5rZXljb2RlOyArK2opIHsKKysJCWNvbnN0IGNoYXIgKmZpbmQgPSBnaXZlbltqXS5uYW1lOworKwkJaW50IHZhbHVlOworKwkJY2hhciBjaDsKKysKKysJCWlmICghVkFMSURfU1RSSU5HKGdpdmVuW2pdLnZhbHVlKSkKKysJCSAgICBjb250aW51ZTsKKysKKysJCWZvciAoayA9IDA7IHRhYmxlW2tdLnhjdXJzZXM7ICsraykgeworKwkJICAgIGNvbnN0IGNoYXIgKnRlc3QgPSB0YWJsZVtrXS54Y3Vyc2VzOworKwkJICAgIHNpemVfdCBzaXplID0gc3RybGVuKHRlc3QpOworKworKwkJICAgIGlmICghc3RybmNtcChmaW5kLCB0ZXN0LCBzaXplKSAmJiBzdHJjbXAoZmluZCwgdGVzdCkpIHsKKysJCQlzd2l0Y2ggKHNzY2FuZihmaW5kICsgc2l6ZSwgIiVkJWMiLCAmdmFsdWUsICZjaCkpIHsKKysJCQljYXNlIDE6CisrCQkJICAgIGlmICh2YWx1ZSA9PSAyKSB7CisrCQkJCV9uY193YXJuaW5nKCJleHBlY3RlZCAnJXMnIHJhdGhlciB0aGFuICclcyciLAorKwkJCQkJICAgICh0YWJsZVtrXS5zaGlmdGVkCisrCQkJCQkgICAgID8gdGFibGVba10uc2hpZnRlZAorKwkJCQkJICAgICA6IHRlc3QpLCBmaW5kKTsKKysJCQkgICAgfSBlbHNlIGlmICh2YWx1ZSA8IDIgfHwgdmFsdWUgPiAxNSkgeworKwkJCQlfbmNfd2FybmluZygiZXhwZWN0ZWQgbnVtZXJpYyAyLi4xNSAnJXMnIiwgZmluZCk7CisrCQkJICAgIH0KKysJCQkgICAgYnJlYWs7CisrCQkJZGVmYXVsdDoKKysJCQkgICAgX25jX3dhcm5pbmcoImV4cGVjdGVkIG51bWVyaWMgc3VmZml4IGZvciAnJXMnIiwgZmluZCk7CisrCQkJICAgIGJyZWFrOworKwkJCX0KKysJCQlicmVhazsKKysJCSAgICB9CisrCQl9CisrCSAgICB9CisrCX0KKysjZW5kaWYKKyAJZnJlZShnaXZlbik7CisgCWZyZWUoY2hlY2spOworICAgICB9CistLSAKKzIuMTAuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9maWxlcy9jb25maWd1cmUtcmVwcm9kdWNpYmxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvZmlsZXMvY29uZmlndXJlLXJlcHJvZHVjaWJsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTRhOGJkYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9maWxlcy9jb25maWd1cmUtcmVwcm9kdWNpYmxlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotImNvbmZpZ3VyZSIgZW5mb3JjZXMgLVUgZm9yIGFyIGZsYWdzLCBicmVha2luZyBkZXRlcm1pbmlzdGljIGJ1aWxkcy4KLVRoZSBmbGFnIHdhcyBhZGRlZCB0byBmaXggc29tZSB2YWd1ZWx5IHNwZWNpZmllZCAicmVjZW50IFBPU0lYIGJpbnV0aWwKLWJ1aWxkIHByb2JsZW1zIiBpbiAyMDE1LiAKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCi1pbmRleCA3ZjMxMjA4Li5hYTgwOTExIDEwMDc1NQotLS0tIGEvY29uZmlndXJlCi0rKysgYi9jb25maWd1cmUKLUBAIC00NDI4LDcgKzQ0MjgsNyBAQCBpZiB0ZXN0ICIke2NmX2N2X2FyX2ZsYWdzK3NldH0iID0gc2V0OyB0aGVuCi0gZWxzZQotIAotIAljZl9jdl9hcl9mbGFncz11bmtub3duCi0tCWZvciBjZl9hcl9mbGFncyBpbiAtY3VydlUgLWN1cnYgY3VydiAtY3J2IGNydiAtY3F2IGNxdiAtcnYgcnYKLSsJZm9yIGNmX2FyX2ZsYWdzIGluIC1jdXJ2IGN1cnYgLWNydiBjcnYgLWNxdiBjcXYgLXJ2IHJ2Ci0gCWRvCi0gCi0gCQkjIGNoZWNrIGlmICRBUkZMQUdTIGFscmVhZHkgY29udGFpbnMgdGhpcyBjaG9pY2UKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL2ZpbGVzL2ZpeC1jZmxhZ3MtbWFuZ2xlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvZmlsZXMvZml4LWNmbGFncy1tYW5nbGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5NDQ3YzUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvZmlsZXMvZml4LWNmbGFncy1tYW5nbGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1jb25maWd1cmUgaGFzIGEgcGllY2Ugb2YgbG9naWMgdG8gZGV0ZWN0IHVzZXJzICJhYnVzaW5nIiBDQyB0byBob2xkIGNvbXBpbGVyCi1mbGFncyAod2hpY2ggd2UgZG8pLiAgSXQgYWxzbyBoYXMgbG9naWMgdG8gImNvcnJlY3QiIHRoaXMgYnkgbW92aW5nIHRoZSBmbGFncwotZnJvbSBDQyB0byBDRkxBR1MsIGJ1dCB0aGUgc2VkIG9ubHkgaGFuZGxlcyBhIHNpbmdsZSBhcmd1bWVudCBpbiBDQy4KLQotUmVwbGFjZSB0aGUgc2VkIHdpdGggYXdrIHRvIGZpbHRlciBvdXQgYWxsIHdvcmRzIHRoYXQgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCi1pbmRleCA3ZjMxMjA4Li4xYTI5Y2ZjIDEwMDc1NQotLS0tIGEvY29uZmlndXJlCi0rKysgYi9jb25maWd1cmUKLUBAIC0yMTkxLDIgKzIxOTEsMiBAQCBlY2hvICIkYXNfbWU6IFdBUk5JTkc6IHlvdXIgZW52aXJvbm1lbnQgbWlzdXNlcyB0aGUgQ0MgdmFyaWFibGUgdG8gaG9sZCBDRkxBR1MvQwotLQljZl9mbGFncz1gZWNobyAiJENDIiB8IHNlZCAtZSAncy9eLipbIAldXCgtW14gCV1cKS9cMS8nYAotLQlDQz1gZWNobyAiJENDICIgfCBzZWQgLWUgJ3MvWyAJXS1bXiAJXS4qJC8vJyAtZSAncy9bIAldKiQvLydgCi0rCWNmX2ZsYWdzPWBlY2hvICIkQ0MiIHwgYXdrICAnQkVHSU57T1JTPSIgIjtSUz0iICJ9IC9eLS4rLyB7cHJpbnQgJDF9J2AKLSsJQ0M9YGVjaG8gIiRDQyAiIHwgYXdrICAnQkVHSU57T1JTPSIgIjtSUz0iICJ9IC9eW14tXS4rLyB7cHJpbnQgJDF9J2AKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL2ZpbGVzL3RpYy1oYW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvZmlsZXMvdGljLWhhbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiYTg5ZDIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvZmlsZXMvdGljLWhhbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0KLSd0aWMnIG9mIHNvbWUgbGludXggZGlzdHJpYnV0aW9ucyAoZS5nLiBmZWRvcmEgMTEpIGhhbmcgaW4gYW4gaW5maW5pdGUKLWxvb3Agd2hlbiBwcm9jZXNzaW5nIHRoZSBvcmlnaW5hbCBmaWxlLgotCi1JbmRleDogbmN1cnNlcy01LjcvbWlzYy90ZXJtaW5mby5zcmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBuY3Vyc2VzLTUuNy5vcmlnL21pc2MvdGVybWluZm8uc3JjCi0rKysgbmN1cnNlcy01LjcvbWlzYy90ZXJtaW5mby5zcmMKLUBAIC0zNzA2LDEyICszNzA2LDExIEBAIGtvbnNvbGUteGYzeHxLREUgY29uc29sZSB3aW5kb3cgd2l0aCBrZXkKLSAjIFRoZSB2YWx1ZSBmb3Iga2JzIHJlZmxlY3RzIGxvY2FsIGN1c3RvbWl6YXRpb24gcmF0aGVyIHRoYW4gdGhlIHNldHRpbmdzIHVzZWQKLSAjIGZvciBYRnJlZTg2IHh0ZXJtLgotIGtvbnNvbGUteGY0eHxLREUgY29uc29sZSB3aW5kb3cgd2l0aCBrZXlib2FyZCBmb3IgWEZyZWU4NiA0LnggeHRlcm0sCi0tCWtlbmQ9XEVPRiwga2hvbWU9XEVPSCwgdXNlPWtvbnNvbGUrcGNma2V5cywKLS0JdXNlPWtvbnNvbGUtdnQxMDAsCi0tIyBLb25zb2xlIGRvZXMgbm90IGltcGxlbWVudCBzaGlmdGVkIGN1cnNvci1rZXlzLgotLWtvbnNvbGUrcGNma2V5c3xrb25zb2xlIHN1YnNldCBvZiB4dGVybStwY2ZrZXlzLAotLQlrTEZUQCwga1JJVEAsIGtjYnQ9XEVbWiwga2luZEAsIGtyaUAsIGtETkAsIGtVUEAsIHVzZT14dGVybStwY2MyLAotLQl1c2U9eHRlcm0rcGNmMCwKLSsJa2VuZD1cRU9GLCBrZjE9XEVPUCwga2YxMz1cRU8yUCwga2YxND1cRU8yUSwga2YxNT1cRU8yUiwKLSsJa2YxNj1cRU8yUywga2YxNz1cRVsxNTsyfiwga2YxOD1cRVsxNzsyfiwga2YxOT1cRVsxODsyfiwKLSsJa2YyPVxFT1EsIGtmMjA9XEVbMTk7Mn4sIGtmMjE9XEVbMjA7Mn4sIGtmMjI9XEVbMjE7Mn4sCi0rCWtmMjM9XEVbMjM7Mn4sIGtmMjQ9XEVbMjQ7Mn4sIGtmMz1cRU9SLCBrZjQ9XEVPUywKLSsJa2hvbWU9XEVPSCwgdXNlPWtvbnNvbGUtdnQxMDAsCi0gIyBLREUncyAidnQxMDAiIGtleWJvYXJkIGhhcyBubyByZWxhdGlvbnNoaXAgdG8gYW55IHRlcm1pbmFsIHRoYXQgREVDIG1hZGUsIGJ1dAotICMgaXQgaXMgc3RpbGwgdXNlZnVsIGZvciBkZXJpdmluZyB0aGUgb3RoZXIgZW50cmllcy4KLSBrb25zb2xlLXZ0MTAwfEtERSBjb25zb2xlIHdpbmRvdyB3aXRoIHZ0MTAwIChzaWMpIGtleWJvYXJkLApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvbmN1cnNlc182LjArMjAxNjExMjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9uY3Vyc2VzXzYuMCsyMDE2MTEyNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWNlMzEwOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9uY3Vyc2VzXzYuMCsyMDE2MTEyNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLXJlcXVpcmUgbmN1cnNlcy5pbmMKLQotU1JDX1VSSSArPSAiZmlsZTovL3RpYy1oYW5nLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9maXgtY2ZsYWdzLW1hbmdsZS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vY29uZmlnLmNhY2hlIFwKLSAgICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUtcmVwcm9kdWNpYmxlLnBhdGNoIFwKLSIKLSMgY29tbWl0IGlkIGNvcnJlc3BvbmRzIHRvIHRoZSByZXZpc2lvbiBpbiBwYWNrYWdlIHZlcnNpb24KLVNSQ1JFViA9ICIzZGIwYmQxOWNiNTBlM2Q5YjRmMmNmMTViN2ExMDJmZTExMzAyMDY4IgotUyA9ICIke1dPUktESVJ9L2dpdCIKLUVYVFJBX09FQ09ORiArPSAiLS13aXRoLWFiaS12ZXJzaW9uPTUiCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKyhcK1xkKykqKSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL25jdXJzZXNfNi4wKzIwMTcwNzE1LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvbmN1cnNlc182LjArMjAxNzA3MTUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDFkYTVkMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL25jdXJzZXNfNi4wKzIwMTcwNzE1LmJiCkBAIC0wLDAgKzEsMTIgQEAKK3JlcXVpcmUgbmN1cnNlcy5pbmMKKworU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtdGljLWhhbmcucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDItY29uZmlndXJlLXJlcHJvZHVjaWJsZS5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vY29uZmlnLmNhY2hlIFwKKyAgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xMzczMi1DVkUtMjAxNy0xMzczNC1DVkUtMjAxNy0xMzczMC1DVkUtMjAxNy0xMzcyOS1DVkUtMjAxNy0xMzcyOC1DVkUtMjAxNy0xMzczMS5wYXRjaCBcCisiCisjIGNvbW1pdCBpZCBjb3JyZXNwb25kcyB0byB0aGUgcmV2aXNpb24gaW4gcGFja2FnZSB2ZXJzaW9uCitTUkNSRVYgPSAiNTI2ODFhNmExYTE4YjRkNmViMWE3MTY1MTJkMGRkODI3YmQ3MWM4NyIKK1MgPSAiJHtXT1JLRElSfS9naXQiCitFWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1hYmktdmVyc2lvbj01IgorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSsoXCtcZCspKikiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mLXNoZWxsLWltYWdlLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi1zaGVsbC1pbWFnZS5iYgppbmRleCAwMjk1NDdiLi4wZDJiOGJmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mLXNoZWxsLWltYWdlLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYtc2hlbGwtaW1hZ2UuYmIKQEAgLTEsMTAgKzEsMTMgQEAKIERFU0NSSVBUSU9OID0gImJvb3QgaW1hZ2Ugd2l0aCBVRUZJIHNoZWxsIGFuZCB0b29scyIKIAogIyBGb3IgdGhpcyBpbWFnZSByZWNpcGUsIG9ubHkgdGhlIHdpYyBmb3JtYXQgd2l0aCBhCi0jIHNpbmdsZSB2ZmF0IHBhcnRpdGlvbiBtYWtlcyBzZW5zZS4KKyMgc2luZ2xlIHZmYXQgcGFydGl0aW9uIG1ha2VzIHNlbnNlLiBCZWNhdXNlIHdlIGhhdmUgbm8KKyMgYm9vdCBsb2FkZXIgYW5kIG5vIHJvb3RmcyBwYXJ0aXRpb24sIG5vdCBhZGRpdGlvbmFsCisjIHRvb2xzIGFyZSBuZWVkZWQgZm9yIHRoaXMgLndrcyBmaWxlLgogSU1BR0VfRlNUWVBFU19mb3JjZXZhcmlhYmxlID0gJ3dpYycKLQogV0tTX0ZJTEUgPSAib3ZtZi9vdm1mLXNoZWxsLWltYWdlLndrcyIKK1dLU19GSUxFX0RFUEVORFMgPSAiIgorCiBpbmhlcml0IGltYWdlCiAKICMgV2Ugd2FudCBhIG1pbmltYWwgaW1hZ2Ugd2l0aCBqdXN0IG92bWYtc2hlbGwtZWZpIHVucGFja2VkIGluIGl0LiBXZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDAxLU1kZU1vZHVsZVBrZy1VZWZpSGlpTGliLUZpeC1pbmNvcnJlY3QtY29tcGFyaXNvbi1leHAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mLzAwMDEtTWRlTW9kdWxlUGtnLVVlZmlIaWlMaWItRml4LWluY29ycmVjdC1jb21wYXJpc29uLWV4cC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmNkN2E0Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mLzAwMDEtTWRlTW9kdWxlUGtnLVVlZmlIaWlMaWItRml4LWluY29ycmVjdC1jb21wYXJpc29uLWV4cC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLUZyb20gNzM2OTI3MTBkNTBkYTFmNDIxYjBlNmRkZmY3ODRjYTMxMzUzODliMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERhbmRhbiBCaSA8ZGFuZGFuLmJpQGludGVsLmNvbT4KLURhdGU6IFNhdCwgMSBBcHIgMjAxNyAxMDozMToxNCArMDgwMAotU3ViamVjdDogW1BBVENIXSBNZGVNb2R1bGVQa2cvVWVmaUhpaUxpYjpGaXggaW5jb3JyZWN0IGNvbXBhcmlzb24gZXhwcmVzc2lvbgotCi1GaXggdGhlIGluY29ycmVjdCBjb21wYXJpc29uIGJldHdlZW4gcG9pbnRlciBhbmQgY29uc3RhbnQgemVybyBjaGFyYWN0ZXIuCi0KLWh0dHBzOi8vYnVnemlsbGEudGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE2Ci0KLVYyOiBUaGUgcG9pbnRlciBTdHJpbmdQdHIgcG9pbnRzIHRvIGEgc3RyaW5nIHJldHVybmVkCi1ieSBFeHRyYWN0Q29uZmlnL0V4cG9ydENvbmZpZywgaWYgaXQgaXMgTlVMTCwgZnVuY3Rpb24KLUludGVybmFsSGlpSWZyVmFsdWVBY3Rpb24gd2lsbCByZXR1cm4gRkFMU0UuIFNvIGluCi1jdXJyZW50IHVzYWdlIG1vZGVsLCB0aGUgU3RyaW5nUHRyIGNhbiBub3QgYmUgTlVMTCBiZWZvcmUKLXVzaW5nIGl0LCBzbyB3ZSBjYW4gYWRkIEFTU0VSVCBoZXJlLgotCi1DYzogRXJpYyBEb25nIDxlcmljLmRvbmdAaW50ZWwuY29tPgotQ2M6IExpbWluZyBHYW8gPGxpbWluZy5nYW9AaW50ZWwuY29tPgotQ29udHJpYnV0ZWQtdW5kZXI6IFRpYW5vQ29yZSBDb250cmlidXRpb24gQWdyZWVtZW50IDEuMAotU2lnbmVkLW9mZi1ieTogRGFuZGFuIEJpIDxkYW5kYW4uYmlAaW50ZWwuY29tPgotUmV2aWV3ZWQtYnk6IEVyaWMgRG9uZyA8ZXJpYy5kb25nQGludGVsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi0gTWRlTW9kdWxlUGtnL0xpYnJhcnkvVWVmaUhpaUxpYi9IaWlMaWIuYyB8IDUgKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1JbmRleDogZ2l0L01kZU1vZHVsZVBrZy9MaWJyYXJ5L1VlZmlIaWlMaWIvSGlpTGliLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9NZGVNb2R1bGVQa2cvTGlicmFyeS9VZWZpSGlpTGliL0hpaUxpYi5jCi0rKysgZ2l0L01kZU1vZHVsZVBrZy9MaWJyYXJ5L1VlZmlIaWlMaWIvSGlpTGliLmMKLUBAIC0yMTgwLDYgKzIxODAsOCBAQCBJbnRlcm5hbEhpaUlmclZhbHVlQWN0aW9uICgKLSAgIH0NCi0gICANCi0gICBTdHJpbmdQdHIgPSBDb25maWdBbHRSZXNwOw0KLSsKLSsgIEFTU0VSVCAoU3RyaW5nUHRyICE9IE5VTEwpOw0KLSAgIA0KLSAgIHdoaWxlIChTdHJpbmdQdHIgIT0gTCdcMCcpIHsNCi0gICAgIC8vDQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDAxLWlhMzItRG9udC11c2UtcGllLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDAxLWlhMzItRG9udC11c2UtcGllLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViYjQxOGIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mLzAwMDEtaWEzMi1Eb250LXVzZS1waWUucGF0Y2gKQEAgLTAsMCArMSw0NiBAQAorRnJvbSBmNjVlOWNjMDI1Mjc4Mzg3YjQ5NGMyMzgzYzVkOWZmM2JlZDk4Njg3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgMTEgSnVuIDIwMTcgMDA6NDc6MjQgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gaWEzMjogRG9udCB1c2UgLXBpZQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIEJhc2VUb29scy9Db25mL3Rvb2xzX2RlZi50ZW1wbGF0ZSB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK0luZGV4OiBnaXQvQmFzZVRvb2xzL0NvbmYvdG9vbHNfZGVmLnRlbXBsYXRlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvQmFzZVRvb2xzL0NvbmYvdG9vbHNfZGVmLnRlbXBsYXRlCisrKysgZ2l0L0Jhc2VUb29scy9Db25mL3Rvb2xzX2RlZi50ZW1wbGF0ZQorQEAgLTQzMzYsNyArNDMzNiw3IEBAIFJFTEVBU0VfKl8qX09CSkNPUFlfQUREREVCVUdGTEFHICAgPQorIE5PT1BUXypfKl9PQkpDT1BZX0FERERFQlVHRkxBRyAgICAgPSAtLWFkZC1nbnUtZGVidWdsaW5rPSQoREVCVUdfRElSKS8kKE1PRFVMRV9OQU1FKS5kZWJ1Zw0KKyANCisgREVGSU5FIEdDQ19BTExfQ0NfRkxBR1MgICAgICAgICAgICA9IC1nIC1PcyAtZnNob3J0LXdjaGFyIC1mbm8tYnVpbHRpbiAtZm5vLXN0cmljdC1hbGlhc2luZyAtV2FsbCAtV2Vycm9yIC1Xbm8tYXJyYXktYm91bmRzIC1pbmNsdWRlIEF1dG9HZW4uaCAtZm5vLWNvbW1vbg0KKy1ERUZJTkUgR0NDX0lBMzJfQ0NfRkxBR1MgICAgICAgICAgID0gREVGKEdDQ19BTExfQ0NfRkxBR1MpIC1tMzIgLW1hbGlnbi1kb3VibGUgLWZyZW9yZGVyLWJsb2NrcyAtZnJlb3JkZXItYmxvY2tzLWFuZC1wYXJ0aXRpb24gLU8yIC1tbm8tc3RhY2stYXJnLXByb2JlDQorK0RFRklORSBHQ0NfSUEzMl9DQ19GTEFHUyAgICAgICAgICAgPSBERUYoR0NDX0FMTF9DQ19GTEFHUykgLW0zMiAtbWFsaWduLWRvdWJsZSAtZnJlb3JkZXItYmxvY2tzIC1mcmVvcmRlci1ibG9ja3MtYW5kLXBhcnRpdGlvbiAtTzIgLW1uby1zdGFjay1hcmctcHJvYmUgLWZuby1QSUUgLW5vLXBpZQ0KKyBERUZJTkUgR0NDX1g2NF9DQ19GTEFHUyAgICAgICAgICAgID0gREVGKEdDQ19BTExfQ0NfRkxBR1MpIC1tbm8tcmVkLXpvbmUgLVduby1hZGRyZXNzIC1tbm8tc3RhY2stYXJnLXByb2JlDQorIERFRklORSBHQ0NfSVBGX0NDX0ZMQUdTICAgICAgICAgICAgPSBERUYoR0NDX0FMTF9DQ19GTEFHUykgLW1pbmxpbmUtaW50LWRpdmlkZS1taW4tbGF0ZW5jeQ0KKyBERUZJTkUgR0NDX0FSTV9DQ19GTEFHUyAgICAgICAgICAgID0gREVGKEdDQ19BTExfQ0NfRkxBR1MpIC1tbGl0dGxlLWVuZGlhbiAtbWFiaT1hYXBjcyAtZm5vLXNob3J0LWVudW1zIC1mdW5zaWduZWQtY2hhciAtZmZ1bmN0aW9uLXNlY3Rpb25zIC1mZGF0YS1zZWN0aW9ucyAtZm9taXQtZnJhbWUtcG9pbnRlciAtV25vLWFkZHJlc3MgLW10aHVtYiAtbWZsb2F0LWFiaT1zb2Z0IC1mbm8tcGljIC1mbm8tcGllDQorQEAgLTQzNjksOSArNDM2OSw5IEBAIERFRklORSBHQ0NfQVJNX1JDX0ZMQUdTICAgICAgICAgICAgPSAtSQorIERFRklORSBHQ0NfQUFSQ0g2NF9SQ19GTEFHUyAgICAgICAgPSAtSSBiaW5hcnkgLU8gZWxmNjQtbGl0dGxlYWFyY2g2NCAtQiBhYXJjaDY0IC0tcmVuYW1lLXNlY3Rpb24gLmRhdGE9LmhpaQ0KKyANCisgREVGSU5FIEdDQzQ0X0FMTF9DQ19GTEFHUyAgICAgICAgICAgID0gLWcgLWZzaG9ydC13Y2hhciAtZm5vLWJ1aWx0aW4gLWZuby1zdHJpY3QtYWxpYXNpbmcgLVdhbGwgLVdlcnJvciAtV25vLWFycmF5LWJvdW5kcyAtZmZ1bmN0aW9uLXNlY3Rpb25zIC1mZGF0YS1zZWN0aW9ucyAtaW5jbHVkZSBBdXRvR2VuLmggLWZuby1jb21tb24gLURTVFJJTkdfQVJSQVlfTkFNRT0kKEJBU0VfTkFNRSlTdHJpbmdzDQorLURFRklORSBHQ0M0NF9JQTMyX0NDX0ZMQUdTICAgICAgICAgICA9IERFRihHQ0M0NF9BTExfQ0NfRkxBR1MpIC1tMzIgLW1hcmNoPWk1ODYgLW1hbGlnbi1kb3VibGUgLWZuby1zdGFjay1wcm90ZWN0b3IgLUQgRUZJMzIgLWZuby1hc3luY2hyb25vdXMtdW53aW5kLXRhYmxlcw0KKytERUZJTkUgR0NDNDRfSUEzMl9DQ19GTEFHUyAgICAgICAgICAgPSBERUYoR0NDNDRfQUxMX0NDX0ZMQUdTKSAtbTMyIC1tYXJjaD1pNTg2IC1tYWxpZ24tZG91YmxlIC1mbm8tc3RhY2stcHJvdGVjdG9yIC1EIEVGSTMyIC1mbm8tYXN5bmNocm9ub3VzLXVud2luZC10YWJsZXMgLWZuby1QSUUgLW5vLXBpZQ0KKyBERUZJTkUgR0NDNDRfWDY0X0NDX0ZMQUdTICAgICAgICAgICAgPSBERUYoR0NDNDRfQUxMX0NDX0ZMQUdTKSAtbTY0IC1mbm8tc3RhY2stcHJvdGVjdG9yICItREVGSUFQST1fX2F0dHJpYnV0ZV9fKChtc19hYmkpKSIgLW1hY2N1bXVsYXRlLW91dGdvaW5nLWFyZ3MgLW1uby1yZWQtem9uZSAtV25vLWFkZHJlc3MgLW1jbW9kZWw9c21hbGwgLWZwaWUgLWZuby1hc3luY2hyb25vdXMtdW53aW5kLXRhYmxlcw0KKy1ERUZJTkUgR0NDNDRfSUEzMl9YNjRfRExJTktfQ09NTU9OICAgPSAtbm9zdGRsaWIgLVdsLC1uLC1xLC0tZ2Mtc2VjdGlvbnMgLXogY29tbW9uLXBhZ2Utc2l6ZT0weDIwDQorK0RFRklORSBHQ0M0NF9JQTMyX1g2NF9ETElOS19DT01NT04gICA9IC1ub3N0ZGxpYiAtV2wsLW4sLXEsLS1nYy1zZWN0aW9ucyAteiBjb21tb24tcGFnZS1zaXplPTB4MjAgLW5vLXBpZQ0KKyBERUZJTkUgR0NDNDRfSUEzMl9YNjRfQVNMRExJTktfRkxBR1MgPSBERUYoR0NDNDRfSUEzMl9YNjRfRExJTktfQ09NTU9OKSAtV2wsLS1lbnRyeSxSZWZlcmVuY2VBY3BpVGFibGUgLXUgUmVmZXJlbmNlQWNwaVRhYmxlDQorIERFRklORSBHQ0M0NF9JQTMyX1g2NF9ETElOS19GTEFHUyAgICA9IERFRihHQ0M0NF9JQTMyX1g2NF9ETElOS19DT01NT04pIC1XbCwtLWVudHJ5LCQoSU1BR0VfRU5UUllfUE9JTlQpIC11ICQoSU1BR0VfRU5UUllfUE9JTlQpIC1XbCwtTWFwLCQoREVTVF9ESVJfREVCVUcpLyQoQkFTRV9OQU1FKS5tYXANCisgREVGSU5FIEdDQzQ0X0lBMzJfRExJTksyX0ZMQUdTICAgICAgID0gLVdsLC0tZGVmc3ltPVBFQ09GRl9IRUFERVJfU0laRT0weDIyMCBERUYoR0NDX0RMSU5LMl9GTEFHU19DT01NT04pDQorQEAgLTQ0NTEsNyArNDQ1MSw3IEBAIERFRklORSBHQ0M0OF9BQVJDSDY0X0FTTERMSU5LX0ZMQUdTICA9IEQKKyANCisgREVGSU5FIEdDQzQ5X0lBMzJfQ0NfRkxBR1MgICAgICAgICAgID0gREVGKEdDQzQ4X0lBMzJfQ0NfRkxBR1MpDQorIERFRklORSBHQ0M0OV9YNjRfQ0NfRkxBR1MgICAgICAgICAgICA9IERFRihHQ0M0OF9YNjRfQ0NfRkxBR1MpDQorLURFRklORSBHQ0M0OV9JQTMyX1g2NF9ETElOS19DT01NT04gICA9IC1ub3N0ZGxpYiAtV2wsLW4sLXEsLS1nYy1zZWN0aW9ucyAteiBjb21tb24tcGFnZS1zaXplPTB4NDANCisrREVGSU5FIEdDQzQ5X0lBMzJfWDY0X0RMSU5LX0NPTU1PTiAgID0gLW5vc3RkbGliIC1XbCwtbiwtcSwtLWdjLXNlY3Rpb25zIC16IGNvbW1vbi1wYWdlLXNpemU9MHg0MCAtbm8tcGllDQorIERFRklORSBHQ0M0OV9JQTMyX1g2NF9BU0xETElOS19GTEFHUyA9IERFRihHQ0M0OV9JQTMyX1g2NF9ETElOS19DT01NT04pIC1XbCwtLWVudHJ5LFJlZmVyZW5jZUFjcGlUYWJsZSAtdSBSZWZlcmVuY2VBY3BpVGFibGUNCisgREVGSU5FIEdDQzQ5X0lBMzJfWDY0X0RMSU5LX0ZMQUdTICAgID0gREVGKEdDQzQ5X0lBMzJfWDY0X0RMSU5LX0NPTU1PTikgLVdsLC0tZW50cnksJChJTUFHRV9FTlRSWV9QT0lOVCkgLXUgJChJTUFHRV9FTlRSWV9QT0lOVCkgLVdsLC1NYXAsJChERVNUX0RJUl9ERUJVRykvJChCQVNFX05BTUUpLm1hcA0KKyBERUZJTkUgR0NDNDlfSUEzMl9ETElOSzJfRkxBR1MgICAgICAgPSBERUYoR0NDNDhfSUEzMl9ETElOSzJfRkxBR1MpDQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDAyLW92bWYtdXBkYXRlLXBhdGgtdG8tbmF0aXZlLUJhc2VUb29scy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvMDAwMi1vdm1mLXVwZGF0ZS1wYXRoLXRvLW5hdGl2ZS1CYXNlVG9vbHMucGF0Y2gKaW5kZXggOTQwMjlhNS4uOTRhZTVkNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDAyLW92bWYtdXBkYXRlLXBhdGgtdG8tbmF0aXZlLUJhc2VUb29scy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mLzAwMDItb3ZtZi11cGRhdGUtcGF0aC10by1uYXRpdmUtQmFzZVRvb2xzLnBhdGNoCkBAIC0xMCw2ICsxMCw3IEBACiB3aXRoIHRoZSBhcHByb3ByaWF0ZSBsb2NhdGlvbiBiZWZvcmUgYnVpbGRpbmcuCiAKIFNpZ25lZC1vZmYtYnk6IFJpY2FyZG8gTmVyaSA8cmljYXJkby5uZXJpLWNhbGRlcm9uQGxpbnV4LmludGVsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgT3ZtZlBrZy9idWlsZC5zaCB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvMDAwMy1CYXNlVG9vbHMtbWFrZWZpbGUtYWRqdXN0LXRvLWJ1aWxkLWluLXVuZGVyLWJpdGJha2UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mLzAwMDMtQmFzZVRvb2xzLW1ha2VmaWxlLWFkanVzdC10by1idWlsZC1pbi11bmRlci1iaXRiYWtlLnBhdGNoCmluZGV4IDBmZGMyNzguLjY1YjVjMTYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvMDAwMy1CYXNlVG9vbHMtbWFrZWZpbGUtYWRqdXN0LXRvLWJ1aWxkLWluLXVuZGVyLWJpdGJha2UucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDAzLUJhc2VUb29scy1tYWtlZmlsZS1hZGp1c3QtdG8tYnVpbGQtaW4tdW5kZXItYml0YmFrZS5wYXRjaApAQCAtNywzMyArNywzMyBAQAogdXNpbmcgdGhlIGJpdGJha2UgbmF0aXZlIHN5c3Jvb3QgaW5jbHVkZSBhbmQgbGlicmFyeSBkaXJlY3Rvcmllcy4KIAogU2lnbmVkLW9mZi1ieTogUmljYXJkbyBOZXJpIDxyaWNhcmRvLm5lcmlAbGludXguaW50ZWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICBCYXNlVG9vbHMvU291cmNlL0MvTWFrZWZpbGVzL2hlYWRlci5tYWtlZmlsZSB8IDggKysrKy0tLS0KICAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9DL01ha2VmaWxlcy9oZWFkZXIubWFrZWZpbGUgYi9CYXNlVG9vbHMvU291cmNlL0MvTWFrZWZpbGVzL2hlYWRlci5tYWtlZmlsZQotaW5kZXggODIxZDExNC4uZmUwZjA4YiAxMDA2NDQKLS0tLSBhL0Jhc2VUb29scy9Tb3VyY2UvQy9NYWtlZmlsZXMvaGVhZGVyLm1ha2VmaWxlCi0rKysgYi9CYXNlVG9vbHMvU291cmNlL0MvTWFrZWZpbGVzL2hlYWRlci5tYWtlZmlsZQotQEAgLTQ0LDE0ICs0NCwxNCBAQCBBUkNIX0lOQ0xVREUgPSAtSSAkKE1BS0VST09UKS9JbmNsdWRlL0FBcmNoNjQvCitJbmRleDogZ2l0L0Jhc2VUb29scy9Tb3VyY2UvQy9NYWtlZmlsZXMvaGVhZGVyLm1ha2VmaWxlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvQmFzZVRvb2xzL1NvdXJjZS9DL01ha2VmaWxlcy9oZWFkZXIubWFrZWZpbGUKKysrKyBnaXQvQmFzZVRvb2xzL1NvdXJjZS9DL01ha2VmaWxlcy9oZWFkZXIubWFrZWZpbGUKK0BAIC00NCwxNSArNDQsMTUgQEAgQVJDSF9JTkNMVURFID0gLUkgJChNQUtFUk9PVCkvSW5jbHVkZS9BQQogIGVuZGlmDQogIA0KICBJTkNMVURFID0gJChUT09MX0lOQ0xVREUpIC1JICQoTUFLRVJPT1QpIC1JICQoTUFLRVJPT1QpL0luY2x1ZGUvQ29tbW9uIC1JICQoTUFLRVJPT1QpL0luY2x1ZGUvIC1JICQoTUFLRVJPT1QpL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZCAtSSAkKE1BS0VST09UKS9Db21tb24vIC1JIC4uIC1JIC4gJChBUkNIX0lOQ0xVREUpIA0KIC1CVUlMRF9DUFBGTEFHUyA9ICQoSU5DTFVERSkgLU8yDQotK0JVSUxEX0NQUEZMQUdTIDo9ICQoQlVJTERfQ1BQRkxBR1MpICQoSU5DTFVERSkgLU8yDQorK0JVSUxEX0NQUEZMQUdTICs9ICQoSU5DTFVERSkgLU8yDQogIGlmZXEgKCQoREFSV0lOKSxEYXJ3aW4pDQogICMgYXNzdW1lIGNsYW5nIG9yIGNsYW5nIGNvbXBhdGlibGUgZmxhZ3Mgb24gT1MgWA0KIC1CVUlMRF9DRkxBR1MgPSAtTUQgLWZzaG9ydC13Y2hhciAtZm5vLXN0cmljdC1hbGlhc2luZyAtV2FsbCAtV2Vycm9yIC1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMgLVduby1zZWxmLWFzc2lnbiAtV25vLXVudXNlZC1yZXN1bHQgLW5vc3RkbGliIC1jIC1nDQotK0JVSUxEX0NGTEFHUyA6PSAkKEJVSUxEX0NGTEFHUykgLU1EIC1mc2hvcnQtd2NoYXIgLWZuby1zdHJpY3QtYWxpYXNpbmcgLVdhbGwgLVdlcnJvciAtV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIC1Xbm8tc2VsZi1hc3NpZ24gLVduby11bnVzZWQtcmVzdWx0IC1ub3N0ZGxpYiAtYyAtZw0KKytCVUlMRF9DRkxBR1MgKz0gLU1EIC1mc2hvcnQtd2NoYXIgLWZuby1zdHJpY3QtYWxpYXNpbmcgLVdhbGwgLVdlcnJvciAtV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIC1Xbm8tc2VsZi1hc3NpZ24gLVduby11bnVzZWQtcmVzdWx0IC1ub3N0ZGxpYiAtYyAtZw0KICBlbHNlDQogLUJVSUxEX0NGTEFHUyA9IC1NRCAtZnNob3J0LXdjaGFyIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1XYWxsIC1XZXJyb3IgLVduby1kZXByZWNhdGVkLWRlY2xhcmF0aW9ucyAtV25vLXVudXNlZC1yZXN1bHQgLW5vc3RkbGliIC1jIC1nDQotK0JVSUxEX0NGTEFHUyA6PSAkKEJVSUxEX0NGTEFHUykgLU1EIC1mc2hvcnQtd2NoYXIgLWZuby1zdHJpY3QtYWxpYXNpbmcgLVdhbGwgLVdlcnJvciAtV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIC1Xbm8tdW51c2VkLXJlc3VsdCAtbm9zdGRsaWIgLWMgLWcNCisrQlVJTERfQ0ZMQUdTICs9IC1NRCAtZnNob3J0LXdjaGFyIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1XYWxsIC1XZXJyb3IgLVduby1kZXByZWNhdGVkLWRlY2xhcmF0aW9ucyAtV25vLXVudXNlZC1yZXN1bHQgLW5vc3RkbGliIC1jIC1nDQogIGVuZGlmDQogLUJVSUxEX0xGTEFHUyA9DQotK0JVSUxEX0xGTEFHUyA6PSAkKExERkxBR1MpDQotIEJVSUxEX0NYWEZMQUdTID0NCistQlVJTERfQ1hYRkxBR1MgPSAtV25vLXVudXNlZC1yZXN1bHQNCisrQlVJTERfTEZMQUdTID0gJChMREZMQUdTKQ0KKytCVUlMRF9DWFhGTEFHUyArPSAtV25vLXVudXNlZC1yZXN1bHQNCiAgDQogIGlmZXEgKCQoQVJDSCksIElBMzIpDQotLS0gCi0yLjkuMwotCisgIw0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvMDAwNC1vdm1mLWVuYWJsZS1sb25nLXBhdGgtZmlsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvMDAwNC1vdm1mLWVuYWJsZS1sb25nLXBhdGgtZmlsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTU0ZmJlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDA0LW92bWYtZW5hYmxlLWxvbmctcGF0aC1maWxlLnBhdGNoCkBAIC0wLDAgKzEsMTggQEAKK0Zyb20gMDMyZmM2YjFmNzY5MWJkNTM3ZmQyYTZiZDEzODIxZmNmM2M0NWU2NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+CitEYXRlOiBNb24sIDExIFNlcCAyMDE3IDAyOjIxOjU1IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIG92bWY6IGVuYWJsZSBsb25nIHBhdGggZmlsZQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+CistLS0KKyBCYXNlVG9vbHMvU291cmNlL0MvQ29tbW9uL0NvbW1vbkxpYi5oIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9DL0NvbW1vbi9Db21tb25MaWIuaCBiL0Jhc2VUb29scy9Tb3VyY2UvQy9Db21tb24vQ29tbW9uTGliLmgKK2luZGV4IDIwNDFiODllMmQuLjgxMTZhYTJlMzUgMTAwNjQ0CistLS0gYS9CYXNlVG9vbHMvU291cmNlL0MvQ29tbW9uL0NvbW1vbkxpYi5oCisrKysgYi9CYXNlVG9vbHMvU291cmNlL0MvQ29tbW9uL0NvbW1vbkxpYi5oCitAQCAtMjIgKzIyIEBAIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQuCistI2RlZmluZSBNQVhfTE9OR19GSUxFX1BBVEggNTAwDQorKyNkZWZpbmUgTUFYX0xPTkdfRklMRV9QQVRIIDEwMjMNCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mL25vLXN0YWNrLXByb3RlY3Rvci1hbGwtYXJjaHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mL25vLXN0YWNrLXByb3RlY3Rvci1hbGwtYXJjaHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTU5YjFjNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvbm8tc3RhY2stcHJvdGVjdG9yLWFsbC1hcmNocy5wYXRjaApAQCAtMCwwICsxLDIwIEBACitBdXRob3I6IFN0ZXZlIExhbmdhc2VrIDxzdGV2ZS5sYW5nYXNla0B1YnVudHUuY29tPgorRGVzY3JpcHRpb246IHBhc3MgLWZuby1zdGFjay1wcm90ZWN0b3IgdG8gYWxsIEdDQyB0b29sY2hhaW5zCisgVGhlIHVwc3RyZWFtIGJ1aWxkIHJ1bGVzIGluZXhwbGljYWJseSBwYXNzIC1mbm8tc3RhY2stcHJvdGVjdG9yIG9ubHkKKyB3aGVuIGJ1aWxkaW5nIGZvciBpMzg2IGFuZCBhbWQ2NC4gIEFkZCB0aGlzIGVzc2VudGlhbCBhcmd1bWVudCB0byB0aGUKKyBnZW5lcmljIHJ1bGVzIGZvciBnY2MgNC40IGFuZCBsYXRlci4KK0xhc3QtVXBkYXRlZDogMjAxNi0wNC0xMgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitJbmRleDogZ2l0L0Jhc2VUb29scy9Db25mL3Rvb2xzX2RlZi50ZW1wbGF0ZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL0Jhc2VUb29scy9Db25mL3Rvb2xzX2RlZi50ZW1wbGF0ZQorKysrIGdpdC9CYXNlVG9vbHMvQ29uZi90b29sc19kZWYudGVtcGxhdGUKK0BAIC00MzY4LDcgKzQzNjgsNyBAQCBERUZJTkUgR0NDX0lQRl9SQ19GTEFHUyAgICAgICAgICAgID0gLUkKKyBERUZJTkUgR0NDX0FSTV9SQ19GTEFHUyAgICAgICAgICAgID0gLUkgYmluYXJ5IC1PIGVsZjMyLWxpdHRsZWFybSAgICAgLUIgYXJtICAgICAtLXJlbmFtZS1zZWN0aW9uIC5kYXRhPS5oaWkNCisgREVGSU5FIEdDQ19BQVJDSDY0X1JDX0ZMQUdTICAgICAgICA9IC1JIGJpbmFyeSAtTyBlbGY2NC1saXR0bGVhYXJjaDY0IC1CIGFhcmNoNjQgLS1yZW5hbWUtc2VjdGlvbiAuZGF0YT0uaGlpDQorIA0KKy1ERUZJTkUgR0NDNDRfQUxMX0NDX0ZMQUdTICAgICAgICAgICAgPSAtZyAtZnNob3J0LXdjaGFyIC1mbm8tYnVpbHRpbiAtZm5vLXN0cmljdC1hbGlhc2luZyAtV2FsbCAtV2Vycm9yIC1Xbm8tYXJyYXktYm91bmRzIC1mZnVuY3Rpb24tc2VjdGlvbnMgLWZkYXRhLXNlY3Rpb25zIC1pbmNsdWRlIEF1dG9HZW4uaCAtZm5vLWNvbW1vbiAtRFNUUklOR19BUlJBWV9OQU1FPSQoQkFTRV9OQU1FKVN0cmluZ3MNCisrREVGSU5FIEdDQzQ0X0FMTF9DQ19GTEFHUyAgICAgICAgICAgID0gLWcgLWZzaG9ydC13Y2hhciAtZm5vLWJ1aWx0aW4gLWZuby1zdHJpY3QtYWxpYXNpbmcgLVdhbGwgLVdlcnJvciAtV25vLWFycmF5LWJvdW5kcyAtZmZ1bmN0aW9uLXNlY3Rpb25zIC1mZGF0YS1zZWN0aW9ucyAtZm5vLXN0YWNrLXByb3RlY3RvciAtaW5jbHVkZSBBdXRvR2VuLmggLWZuby1jb21tb24gLURTVFJJTkdfQVJSQVlfTkFNRT0kKEJBU0VfTkFNRSlTdHJpbmdzDQorIERFRklORSBHQ0M0NF9JQTMyX0NDX0ZMQUdTICAgICAgICAgICA9IERFRihHQ0M0NF9BTExfQ0NfRkxBR1MpIC1tMzIgLW1hcmNoPWk1ODYgLW1hbGlnbi1kb3VibGUgLWZuby1zdGFjay1wcm90ZWN0b3IgLUQgRUZJMzIgLWZuby1hc3luY2hyb25vdXMtdW53aW5kLXRhYmxlcyAtZm5vLVBJRSAtbm8tcGllDQorIERFRklORSBHQ0M0NF9YNjRfQ0NfRkxBR1MgICAgICAgICAgICA9IERFRihHQ0M0NF9BTExfQ0NfRkxBR1MpIC1tNjQgLWZuby1zdGFjay1wcm90ZWN0b3IgIi1ERUZJQVBJPV9fYXR0cmlidXRlX18oKG1zX2FiaSkpIiAtbWFjY3VtdWxhdGUtb3V0Z29pbmctYXJncyAtbW5vLXJlZC16b25lIC1Xbm8tYWRkcmVzcyAtbWNtb2RlbD1zbWFsbCAtZnBpZSAtZm5vLWFzeW5jaHJvbm91cy11bndpbmQtdGFibGVzDQorIERFRklORSBHQ0M0NF9JQTMyX1g2NF9ETElOS19DT01NT04gICA9IC1ub3N0ZGxpYiAtV2wsLW4sLXEsLS1nYy1zZWN0aW9ucyAteiBjb21tb24tcGFnZS1zaXplPTB4MjANCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWZfZ2l0LmJiCmluZGV4IDlkOTg4ZTkuLmZhMGQ2NjIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWZfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWZfZ2l0LmJiCkBAIC0xLDUgKzEsNyBAQAotREVTQ1JJUFRJT04gPSAiT1ZNRiAtIFVFRkkgZmlybXdhcmUgZm9yIFFlbXUgYW5kIEtWTSIKLUhPTUVQQUdFID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvYXBwcy9tZWRpYXdpa2kvdGlhbm9jb3JlL2luZGV4LnBocD90aXRsZT1PVk1GIgorU1VNTUFSWSA9ICJPVk1GIC0gVUVGSSBmaXJtd2FyZSBmb3IgUWVtdSBhbmQgS1ZNIgorREVTQ1JJUFRJT04gPSAiT1ZNRiBpcyBhbiBFREsgSUkgYmFzZWQgcHJvamVjdCB0byBlbmFibGUgVUVGSSBzdXBwb3J0IGZvciBcCitWaXJ0dWFsIE1hY2hpbmVzLiBPVk1GIGNvbnRhaW5zIHNhbXBsZSBVRUZJIGZpcm13YXJlIGZvciBRRU1VIGFuZCBLVk0iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vdGlhbm9jb3JlL3RpYW5vY29yZS5naXRodWIuaW8vd2lraS9PVk1GIgogTElDRU5TRSA9ICJCU0QiCiBMSUNFTlNFX2NsYXNzLXRhcmdldCA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzZWN1cmVib290JywgJ0JTRCAmIE9wZW5TU0wnLCAnQlNEJywgZCl9IgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vT3ZtZlBrZy9MaWNlbnNlLnR4dDttZDU9MzQzZGM4OGU4MmZmMzNkMDQyMDc0ZjYyMDUwYzM0OTYiCkBAIC0xMSwyMCArMTMsMjUgQEAKIFBBQ0tBR0VDT05GSUdbc2VjdXJlYm9vdF0gPSAiLCwsIgogCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vdGlhbm9jb3JlL2VkazIuZ2l0O2JyYW5jaD1tYXN0ZXIgXAorCWZpbGU6Ly8wMDAxLWlhMzItRG9udC11c2UtcGllLnBhdGNoIFwKIAlmaWxlOi8vMDAwMi1vdm1mLXVwZGF0ZS1wYXRoLXRvLW5hdGl2ZS1CYXNlVG9vbHMucGF0Y2ggXAogCWZpbGU6Ly8wMDAzLUJhc2VUb29scy1tYWtlZmlsZS1hZGp1c3QtdG8tYnVpbGQtaW4tdW5kZXItYml0YmFrZS5wYXRjaCBcCisJZmlsZTovLzAwMDQtb3ZtZi1lbmFibGUtbG9uZy1wYXRoLWZpbGUucGF0Y2ggXAogCWZpbGU6Ly9WZnJDb21waWxlLWluY3JlYXNlLXBhdGgtbGVuZ3RoLWxpbWl0LnBhdGNoIFwKLSAgICAgICAgZmlsZTovLzAwMDEtTWRlTW9kdWxlUGtnLVVlZmlIaWlMaWItRml4LWluY29ycmVjdC1jb21wYXJpc29uLWV4cC5wYXRjaCBcCisJZmlsZTovL25vLXN0YWNrLXByb3RlY3Rvci1hbGwtYXJjaHMucGF0Y2ggXAogICAgICAgICAiCitVUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKKworT1BFTlNTTF9SRUxFQVNFID0gIm9wZW5zc2wtMS4xLjBlIgogCiBTUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIFwKLQkke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzZWN1cmVib290JywgJ2h0dHA6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlL29wZW5zc2wtMS4wLjJqLnRhci5nejtuYW1lPW9wZW5zc2w7c3ViZGlyPSR7U30vQ3J5cHRvUGtnL0xpYnJhcnkvT3BlbnNzbExpYicsICcnLCBkKX0gXAorCSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3NlY3VyZWJvb3QnLCAnaHR0cDovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2UvJHtPUEVOU1NMX1JFTEVBU0V9LnRhci5nejtuYW1lPW9wZW5zc2w7c3ViZGlyPSR7U30vQ3J5cHRvUGtnL0xpYnJhcnkvT3BlbnNzbExpYicsICcnLCBkKX0gXAogCWZpbGU6Ly8wMDA3LU92bWZQa2ctRW5yb2xsRGVmYXVsdEtleXMtYXBwbGljYXRpb24tZm9yLWVucm9sbGluZy0ucGF0Y2ggXAogIgogCi1TUkNSRVY9IjQ1NzVhNjAyY2E2MDcyZWU5ZDA0MTUwYjM4YmZiMTQzY2JmZjg1ODgiCi1TUkNfVVJJW29wZW5zc2wubWQ1c3VtXSA9ICI5NjMyMjEzOGYwYjY5ZTYxYjcyMTJiYzUzZDVlOTEyYiIKLVNSQ19VUklbb3BlbnNzbC5zaGEyNTZzdW1dID0gImU3YWZmMjkyYmUyMWMyNTljNmFmMjY0NjljN2E5YjNiYTI2ZTlhYmFhZmZkMzI1ZTNkY2NjOTc4NTI1NmM0MzEiCitTUkNSRVY9ImVjNDkxMGNkMzMzNjU2NWZkYjYxZGFmZGQ5ZWM0YWU3YTYxNjBiYTMiCitTUkNfVVJJW29wZW5zc2wubWQ1c3VtXSA9ICI1MWM0MmQxNTIxMjJlNDc0NzU0YWVhOTZmNjY5MjhjNiIKK1NSQ19VUklbb3BlbnNzbC5zaGEyNTZzdW1dID0gIjU3YmU4NjE4OTc5ZDgwYzkxMDcyOGNmYzk5MzY5YmY5N2IyYTFhYmQ4ZjM2NmFiNmViZGVlODk3NWFkMzg3NGMiCiAKIGluaGVyaXQgZGVwbG95CiAKQEAgLTE0NCw3ICsxNTEsNyBAQAogCiBkb19jb21waWxlX2NsYXNzLXRhcmdldCgpIHsKICAgICBleHBvcnQgTEZMQUdTPSIke0xERkxBR1N9IgotICAgIFBBUkFMTEVMX0pPQlM9IiR7QCAnJHtQQVJBTExFTF9NQUtFfScucmVwbGFjZSgnLWonLCAnLW4nKX0iCisgICAgUEFSQUxMRUxfSk9CUz0iJHtAICcke1BBUkFMTEVMX01BS0V9Jy5yZXBsYWNlKCctaicsICctbiAnKX0iCiAgICAgT1ZNRl9BUkNIPSJYNjQiCiAgICAgaWYgWyAiJHtUQVJHRVRfQVJDSH0iICE9ICJ4ODZfNjQiIF0gOyB0aGVuCiAgICAgICAgIE9WTUZfQVJDSD0iSUEzMiIKQEAgLTE4NiwxMCArMTkzLDcgQEAKICAgICAgICAgIyBidWlsZGluZyB3aXRoIFNlY3VyZSBCb290IGVuYWJsZWQuCiAgICAgICAgIGJibm90ZSAiQnVpbGRpbmcgd2l0aCBTZWN1cmUgQm9vdC4iCiAgICAgICAgIHJtIC1yZiAke1N9L0J1aWxkL092bWYkT1ZNRl9ESVJfU1VGRklYCi0gICAgICAgIGlmICEgWyAtZiAke1N9L0NyeXB0b1BrZy9MaWJyYXJ5L09wZW5zc2xMaWIvb3BlbnNzbC0qL2VkazItcGF0Y2gtYXBwbGllZCBdOyB0aGVuCi0gICAgICAgICAgICAoIGNkICR7U30vQ3J5cHRvUGtnL0xpYnJhcnkvT3BlbnNzbExpYi9vcGVuc3NsLSogJiYgcGF0Y2ggLXAxIDwkKGVjaG8gLi4vRURLSUlfb3BlbnNzbC0qLnBhdGNoKSAmJiB0b3VjaCBlZGsyLXBhdGNoLWFwcGxpZWQgKQotICAgICAgICBmaQotICAgICAgICAoIGNkICR7U30vQ3J5cHRvUGtnL0xpYnJhcnkvT3BlbnNzbExpYi8gJiYgLi9JbnN0YWxsLnNoICkKKyAgICAgICAgbG4gLXNmICR7T1BFTlNTTF9SRUxFQVNFfSAke1N9L0NyeXB0b1BrZy9MaWJyYXJ5L09wZW5zc2xMaWIvb3BlbnNzbAogICAgICAgICAke1N9L092bWZQa2cvYnVpbGQuc2ggJFBBUkFMTEVMX0pPQlMgLWEgJE9WTUZfQVJDSCAtYiBSRUxFQVNFIC10ICR7RklYRURfR0NDVkVSfSAke09WTUZfU0VDVVJFX0JPT1RfRkxBR1N9CiAgICAgICAgIGxuICR7YnVpbGRfZGlyfS9GVi9PVk1GLmZkICR7V09SS0RJUn0vb3ZtZi9vdm1mLnNlY2Jvb3QuZmQKICAgICAgICAgbG4gJHtidWlsZF9kaXJ9L0ZWL09WTUZfQ09ERS5mZCAke1dPUktESVJ9L292bWYvb3ZtZi5zZWNib290LmNvZGUuZmQKQEAgLTI0MSwzICsyNDUsNCBAQAogYWRkdGFzayBkb19kZXBsb3kgYWZ0ZXIgZG9fY29tcGlsZSBiZWZvcmUgZG9fYnVpbGQKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCitUT09MQ0hBSU4gPSAiZ2NjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvbmF0aXZlc2RrLXBhY2thZ2Vncm91cC1zZGstaG9zdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL25hdGl2ZXNkay1wYWNrYWdlZ3JvdXAtc2RrLWhvc3QuYmIKaW5kZXggMmNhNjM5Mi4uYWVlNGEwMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvbmF0aXZlc2RrLXBhY2thZ2Vncm91cC1zZGstaG9zdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9uYXRpdmVzZGstcGFja2FnZWdyb3VwLXNkay1ob3N0LmJiCkBAIC00LDcgKzQsNiBAQAogCiBTVU1NQVJZID0gIkhvc3QgcGFja2FnZXMgZm9yIHRoZSBzdGFuZGFsb25lIFNESyBvciBleHRlcm5hbCB0b29sY2hhaW4iCiBQUiA9ICJyMTIiCi1MSUNFTlNFID0gIk1JVCIKIAogaW5oZXJpdCBwYWNrYWdlZ3JvdXAgbmF0aXZlc2RrCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1iYXNlLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWJhc2UuYmIKaW5kZXggMDA2OWUzZS4uZjllNmUyZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWJhc2UuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWJhc2UuYmIKQEAgLTIwNCw3ICsyMDQsNyBAQAogU1VNTUFSWV9wYWNrYWdlZ3JvdXAtYmFzZS1ibHVldG9vdGggPSAiQmx1ZXRvb3RoIHN1cHBvcnQiCiBSREVQRU5EU19wYWNrYWdlZ3JvdXAtYmFzZS1ibHVldG9vdGggPSAiXAogICAgICR7QkxVRVp9IFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnQ09NQklORURfRkVBVFVSRVMnLCAnYWxzYScsICdsaWJhc291bmQtbW9kdWxlLWJsdWV6JywgJycsZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnQ09NQklORURfRkVBVFVSRVMnLCAnYWxzYScsIGJiLnV0aWxzLmNvbnRhaW5zKCdCTFVFWicsICdibHVlejQnLCAnbGliYXNvdW5kLW1vZHVsZS1ibHVleicsICcnLCBkKSwgJycsZCl9IFwKICAgICAiCiAKIFJSRUNPTU1FTkRTX3BhY2thZ2Vncm91cC1iYXNlLWJsdWV0b290aCA9ICJcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1zZGsuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1zZGsuYmIKaW5kZXggN2Q2ZDQxNC4uYWYwY2UyMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtc2RrLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXNkay5iYgpAQCAtMzMsNyArMzMsNiBAQAogU0FOSVRJWkVSU19wb3dlcnBjNjQgPSAiIgogU0FOSVRJWkVSU19zcGFyYyA9ICIiCiBTQU5JVElaRVJTX2xpYmMtbXVzbCA9ICIiCi1TQU5JVElaRVJTX2xpYmMtdWNsaWJjID0gIiIKIAogUlJFQ09NTUVORFNfcGFja2FnZWdyb3VwLWNvcmUtc2RrID0gIlwKICAgICBsaWJnb21wIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXRvb2xzLXByb2ZpbGUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS10b29scy1wcm9maWxlLmJiCmluZGV4IDk0NmM5NDcuLmE4ZTQ3ZGEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXRvb2xzLXByb2ZpbGUuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtdG9vbHMtcHJvZmlsZS5iYgpAQCAtMzEsMjMgKzMxLDE1IEBACiBQRVJGID0gInBlcmYiCiBQRVJGX2xpYmMtbXVzbCA9ICIiCiAKLSMgc3lzdGVtdGFwIG5lZWRzIGVsZnV0aWxzIHdoaWNoIGlzIG5vdCBmdWxseSBidWlsZGFibGUgb24gdWNsaWJjCi0jIGhlbmNlIHdlIGV4Y2x1ZGUgaXQgZnJvbSB1Y2xpYmMgYmFzZWQgYnVpbGRzCisjIHN5c3RlbXRhcCBuZWVkcyBlbGZ1dGlscyB3aGljaCBpcyBub3QgZnVsbHkgYnVpbGRhYmxlIG9uIHNvbWUgYXJjaGVzL2xpYmNzCiBTWVNURU1UQVAgPSAic3lzdGVtdGFwIgotU1lTVEVNVEFQX2xpYmMtdWNsaWJjID0gIiIKIFNZU1RFTVRBUF9saWJjLW11c2wgPSAiIgogU1lTVEVNVEFQX21pcHNhcmNoID0gIiIKIFNZU1RFTVRBUF9uaW9zMiA9ICIiCiBTWVNURU1UQVBfYWFyY2g2NCA9ICIiCiAKLSMgbHR0bmctdXN0IHVzZXMgc2NoZWRfZ2V0Y3B1KCkgd2hpY2ggaXMgbm90IHRoZXJlIG9uIHVjbGliYwotIyBmb3Igc29tZSBvZiB0aGUgYXJjaGl0ZWN0dXJlcyBpdCBjYW4gYmUgcGF0Y2hlZCB0byBjYWxsIHRoZQotIyBzeXNjYWxsIGRpcmVjdGx5IGJ1dCBmb3IgeDg2XzY0IF9fTlJfZ2V0Y3B1IGlzIGEgdnN5c2NhbGwKLSMgd2hpY2ggbWVhbnMgd2UgY2FuIG5vdCB1c2Ugc3lzY2FsbCgpIHRvIGNhbGwgaXQuIFNvIHdlIGlnbm9yZQotIyBpdCBmb3IgeDg2XzY0L3VjbGliYwotCisjIGx0dG5nLXVzdCB1c2VzIHNjaGVkX2dldGNwdSgpIHdoaWNoIGlzIG5vdCB0aGVyZSBvbiBmb3Igc29tZSBwbGF0Zm9ybXMuCiBMVFROR1VTVCA9ICJsdHRuZy11c3QiCi1MVFROR1VTVF9saWJjLXVjbGliYyA9ICIiCiBMVFROR1VTVF9saWJjLW11c2wgPSAiIgogCiBMVFROR1RPT0xTID0gImx0dG5nLXRvb2xzIgpAQCAtNjAsMTMgKzUyLDEzIEBACiAjIHZhbGdyaW5kIGRvZXMgbm90IHdvcmsgb24gdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9ucy9hcmNoaXRlY3R1cmVzCiAKIFZBTEdSSU5EID0gInZhbGdyaW5kIgotVkFMR1JJTkRfbGliYy11Y2xpYmMgPSAiIgogVkFMR1JJTkRfbGliYy1tdXNsID0gIiIKIFZBTEdSSU5EX21pcHNhcmNoID0gIiIKIFZBTEdSSU5EX25pb3MyID0gIiIKIFZBTEdSSU5EX2FybXY0ID0gIiIKIFZBTEdSSU5EX2FybXY1ID0gIiIKIFZBTEdSSU5EX2FybXY2ID0gIiIKK1ZBTEdSSU5EX2FybWViID0gIiIKIFZBTEdSSU5EX2FhcmNoNjQgPSAiIgogVkFMR1JJTkRfbGludXgtZ251eDMyID0gIiIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWdvLWNyb3NzLWNhbmFkaWFuLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWdvLWNyb3NzLWNhbmFkaWFuLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkYWFjZTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtZ28tY3Jvc3MtY2FuYWRpYW4uYmIKQEAgLTAsMCArMSwxMiBAQAorU1VNTUFSWSA9ICJIb3N0IFNESyBwYWNrYWdlIGZvciBHbyBjcm9zcyBjYW5hZGlhbiB0b29sY2hhaW4iCitQTiA9ICJwYWNrYWdlZ3JvdXAtZ28tY3Jvc3MtY2FuYWRpYW4tJHtNQUNISU5FfSIKKworaW5oZXJpdCBjcm9zcy1jYW5hZGlhbiBwYWNrYWdlZ3JvdXAKKworUEFDS0FHRUdST1VQX0RJU0FCTEVfQ09NUExFTUVOVEFSWSA9ICIxIgorCitHTyA9ICJnby1jcm9zcy1jYW5hZGlhbi0ke1RSQU5TTEFURURfVEFSR0VUX0FSQ0h9IgorCitSREVQRU5EU18ke1BOfSA9ICIgXAorICAgICR7QGFsbF9tdWx0aWxpYl90dW5lX3ZhbHVlcyhkLCAnR08nKX0gXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWdvLXNkay10YXJnZXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtZ28tc2RrLXRhcmdldC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTE5MDc3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWdvLXNkay10YXJnZXQuYmIKQEAgLTAsMCArMSw4IEBACitTVU1NQVJZID0gIlRhcmdldCBwYWNrYWdlcyBmb3IgdGhlIEdvIFNESyIKKworaW5oZXJpdCBwYWNrYWdlZ3JvdXAgZ29hcmNoCisKK1JERVBFTkRTXyR7UE59ID0gIiBcCisgICAgZ28tcnVudGltZSBcCisgICAgZ28tcnVudGltZS1kZXYgXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLXNlbGYtaG9zdGVkLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLXNlbGYtaG9zdGVkLmJiCmluZGV4IGMxYmJkZmMuLmZmNDI4NjYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1zZWxmLWhvc3RlZC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtc2VsZi1ob3N0ZWQuYmIKQEAgLTQyLDcgKzQyLDYgQEAKICAgICBtYy1maXNoIFwKICAgICBtYy1oZWxwZXJzIFwKICAgICBtYy1oZWxwZXJzLXBlcmwgXAotICAgIG1jLWhlbHBlcnMtcHl0aG9uIFwKICAgICBwYXJ0ZWQgXAogICAgICR7UFNFVURPfSBcCiAgICAgc2NyZWVuIFwKQEAgLTE0MSwxNyArMTQwLDE5IEBACiAgICAgbmZzLXV0aWxzIFwKICAgICBuZnMtdXRpbHMtY2xpZW50IFwKICAgICBvcGVuc3NsIFwKKyAgICBvcGVuc3NoLXNjcCBcCiAgICAgb3BlbnNzaC1zZnRwLXNlcnZlciBcCisgICAgb3BlbnNzaC1zc2ggXAogICAgIG9wa2cgXAogICAgIG9wa2ctdXRpbHMgXAogICAgIHBhdGNoIFwKICAgICBwZXJsIFwKICAgICBwZXJsLWRldiBcCisgICAgcGVybC1taXNjIFwKICAgICBwZXJsLW1vZHVsZXMgXAogICAgIHBlcmwtcG9kIFwKICAgICBweXRob24gXAogICAgIHB5dGhvbi1tb2R1bGVzIFwKLSAgICBweXRob24tZ2l0IFwKICAgICBweXRob24zIFwKICAgICBweXRob24zLW1vZHVsZXMgXAogICAgIHB5dGhvbjMtZ2l0IFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wc3BsYXNoL2ZpbGVzL3BzcGxhc2gtaW5pdCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wc3BsYXNoL2ZpbGVzL3BzcGxhc2gtaW5pdAppbmRleCA2NmM4NWU5Li4wYmNlMWRlIDEwMDc1NQotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcHNwbGFzaC9maWxlcy9wc3BsYXNoLWluaXQKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BzcGxhc2gvZmlsZXMvcHNwbGFzaC1pbml0CkBAIC03LDYgKzcsMTIgQEAKICMgRGVmYXVsdC1TdG9wOgogIyMjIEVORCBJTklUIElORk8KIAoraWYgWyAhIC1lIC9kZXYvZmIwIF07IHRoZW4KKyAgICBlY2hvICJGcmFtZWJ1ZmZlciAvZGV2L2ZiMCBub3QgZGV0ZWN0ZWQiCisgICAgZWNobyAiQm9vdCBzcGxhc2hzY3JlZW4gZGlzYWJsZWQiCisgICAgZXhpdCAwOworZmkKKwogcmVhZCBDTURMSU5FIDwgL3Byb2MvY21kbGluZQogZm9yIHggaW4gJENNRExJTkU7IGRvCiAgICAgICAgIGNhc2UgJHggaW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wc3BsYXNoL3BzcGxhc2hfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BzcGxhc2gvcHNwbGFzaF9naXQuYmIKaW5kZXggNDQyOTdlMS4uM2I3ZjgxOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BzcGxhc2gvcHNwbGFzaF9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BzcGxhc2gvcHNwbGFzaF9naXQuYmIKQEAgLTUsMTMgKzUsMTQgQEAKIExJQ0VOU0UgPSAiR1BMdjIrIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vcHNwbGFzaC5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MTY7bWQ1PTg0MGZiMjM1NmIxMGE4NWJlZDc4ZGQwOWRjNzc0NWM2IgogCi1TUkNSRVYgPSAiODgzNDNhZDIzYzkwZmExZGQ4ZDc5YWMwZDc4NGE2OTFhYTBjNmQyYiIKK1NSQ1JFViA9ICIyMDE1ZjcwNzNlOThkZDk1NjJkYjA5MzZhMjU0YWY1ZWY1NjM1NmNmIgogUFYgPSAiMC4xK2dpdCR7U1JDUFZ9IgogUFIgPSAicjE1IgogCiBTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnLyR7QlBOfSBcCiAgICAgICAgICAgIGZpbGU6Ly9wc3BsYXNoLWluaXQgXAogICAgICAgICAgICAke1NQTEFTSF9JTUFHRVN9IgorVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCiAKIFNQTEFTSF9JTUFHRVMgPSAiZmlsZTovL3BzcGxhc2gtcG9reS1pbWcuaDtvdXRzdWZmaXg9ZGVmYXVsdCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3JlYWRsaW5lL3JlYWRsaW5lLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9yZWFkbGluZS9yZWFkbGluZS5pbmMKaW5kZXggMWEwYTE1NS4uZTk2NjUyMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3JlYWRsaW5lL3JlYWRsaW5lLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvcmVhZGxpbmUvcmVhZGxpbmUuaW5jCkBAIC00LDYgKzQsNyBAQAogYWRkaXRpb25hbCBmdW5jdGlvbnMgdG8gbWFpbnRhaW4gYSBsaXN0IG9mIHByZXZpb3VzbHktZW50ZXJlZCBjb21tYW5kIGxpbmVzLCB0byByZWNhbGwgYW5kIHBlcmhhcHMgcmVlZGl0IHRob3NlICAgXAogbGluZXMsIGFuZCBwZXJmb3JtIGNzaC1saWtlIGhpc3RvcnkgZXhwYW5zaW9uIG9uIHByZXZpb3VzIGNvbW1hbmRzLiIKIFNFQ1RJT04gPSAibGlicyIKK0hPTUVQQUdFID0gImh0dHBzOi8vY25zd3d3LmNucy5jd3J1LmVkdS9waHAvY2hldC9yZWFkbGluZS9ybHRvcC5odG1sIgogCiAjIEdQTHYyKyAoPCA2LjApLCBHUEx2MysgKD49IDYuMCkKIExJQ0VOU0UgPSAiR1BMdjMrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1ib290XzIzNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtYm9vdF8yMzQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2IxOGIyNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtYm9vdF8yMzQuYmIKQEAgLTAsMCArMSw0MyBAQAorcmVxdWlyZSBzeXN0ZW1kLmluYworRklMRVNFWFRSQVBBVEhTID0uICIke0ZJTEVfRElSTkFNRX0vc3lzdGVtZDoiCisKK0RFUEVORFMgPSAiaW50bHRvb2wtbmF0aXZlIGxpYmNhcCB1dGlsLWxpbnV4IGdudS1lZmkgZ3BlcmYtbmF0aXZlIgorCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwNy11c2UtbG5yLXdyYXBwZXItaW5zdGVhZC1vZi1sb29raW5nLWZvci1yZWxhdGl2ZS1vcHRpLnBhdGNoIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dAoraW5oZXJpdCBkZXBsb3kKKworRUZJX0NDID89ICIke0NDfSIKKyMgTWFuIHBhZ2VzIGFyZSBwYWNrYWdlZCB0aHJvdWdoIHRoZSBtYWluIHN5c3RlbWQgcmVjaXBlCitFWFRSQV9PRUNPTkYgPSAiIC0tZW5hYmxlLWdudWVmaSBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1lZmktaW5jbHVkZWRpcj0ke1NUQUdJTkdfSU5DRElSfSBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1lZmktbGRzZGlyPSR7U1RBR0lOR19MSUJESVJ9IFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLWVmaS1saWJkaXI9JHtTVEFHSU5HX0xJQkRJUn0gXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtbWFucGFnZXMgXAorICAgICAgICAgICAgICAgICBFRklfQ0M9JyR7RUZJX0NDfScgXAorICAgICAgICAgICAgICAgIgorCisjIEltcG9ydGVkIGZyb20gdGhlIG9sZCBndW1taWJvb3QgcmVjaXBlCitUVU5FX0NDQVJHU19yZW1vdmUgPSAiLW1mcG1hdGg9c3NlIgorQ09NUEFUSUJMRV9IT1NUID0gIih4ODZfNjQuKnxpLjg2LiopLWxpbnV4IgorQ09NUEFUSUJMRV9IT1NUX2xpbnV4LWdudXgzMiA9ICJudWxsIgorCitkb19jb21waWxlKCkgeworCVNZU1RFTURfQk9PVF9FRklfQVJDSD0iaWEzMiIKKwlpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAieDg2XzY0IiBdOyB0aGVuCisJCVNZU1RFTURfQk9PVF9FRklfQVJDSD0ieDY0IgorCWZpCisKKwlvZV9ydW5tYWtlIHN5c3RlbWQtYm9vdCR7U1lTVEVNRF9CT09UX0VGSV9BUkNIfS5lZmkKK30KKworZG9faW5zdGFsbCgpIHsKKwkjIEJ5cGFzcyBzeXN0ZW1kIGluc3RhbGxhdGlvbiB3aXRoIGEgTk9QCisJOgorfQorCitkb19kZXBsb3kgKCkgeworCWluc3RhbGwgJHtCfS9zeXN0ZW1kLWJvb3QqLmVmaSAke0RFUExPWURJUn0KK30KK2FkZHRhc2sgZGVwbG95IGJlZm9yZSBkb19idWlsZCBhZnRlciBkb19jb21waWxlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLWNvbXBhdC11bml0cy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtY29tcGF0LXVuaXRzLmJiCmluZGV4IGZlOWE1MjEuLmQyMjhhNTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtY29tcGF0LXVuaXRzLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtY29tcGF0LXVuaXRzLmJiCkBAIC0xLDUgKzEsNSBAQAogU1VNTUFSWSA9ICJFbmhhbmNlcyBzeXN0ZW1kIGNvbXBhdGlsaWJpdHkgd2l0aCBleGlzdGluZyBTeXNWaW5pdCBzY3JpcHRzIgotCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL3N5c3RlbWQiCiBMSUNFTlNFID0gIk1JVCIKIAogUFIgPSAicjI5IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1tYWNoaW5lLXVuaXRzXzEuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtbWFjaGluZS11bml0c18xLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDI3NTZmNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtbWFjaGluZS11bml0c18xLjAuYmIKQEAgLTAsMCArMSwxMyBAQAorU1VNTUFSWSA9ICJNYWNoaW5lIHNwZWNpZmljIHN5c3RlbWQgdW5pdHMiCisKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT01NT05fTElDRU5TRV9ESVJ9L01JVDttZDU9MDgzNWFkZTY5OGUwYmNmODUwNmVjZGEyZjdiNGYzMDIiCisKK1BBQ0tBR0VfQVJDSCA9ICIke01BQ0hJTkVfQVJDSH0iCisKK1BSID0gInIxOSIKKworaW5oZXJpdCBzeXN0ZW1kCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiIgorCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1zZXJpYWxnZXR0eS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtc2VyaWFsZ2V0dHkuYmIKaW5kZXggNzY4YjEzMC4uZDkzNDcxNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1zZXJpYWxnZXR0eS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLXNlcmlhbGdldHR5LmJiCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJTZXJpYWwgdGVybWluYWwgc3VwcG9ydCBmb3Igc3lzdGVtZCIKK0hPTUVQQUdFID0gImh0dHBzOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL3N5c3RlbWQvIgogTElDRU5TRSA9ICJHUEx2MisiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPUkVCQVNFfS9tZXRhL2ZpbGVzL2NvbW1vbi1saWNlbnNlcy9HUEwtMi4wO21kNT04MDFmODA5ODBkMTcxZGQ2NDI1NjEwODMzYTIyZGJlNiIKIApAQCAtMzgsOCArMzksNiBAQAogCWZpCiB9CiAKLVJERVBFTkRTXyR7UE59ID0gInN5c3RlbWQiCi0KICMgVGhpcyBpcyBhIG1hY2hpbmUgc3BlY2lmaWMgZmlsZQogRklMRVNfJHtQTn0gPSAiJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8qLnNlcnZpY2UgJHtzeXNjb25mZGlyfSIKIFBBQ0tBR0VfQVJDSCA9ICIke01BQ0hJTkVfQVJDSH0iCkBAIC00OSwzICs0OCw1IEBACiAgICAgaWYgbm90IGJiLnV0aWxzLmNvbnRhaW5zICgnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBUcnVlLCBGYWxzZSwgZCk6CiAgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCInc3lzdGVtZCcgbm90IGluIERJU1RST19GRUFUVVJFUyIpCiB9CisKK0FMTE9XX0VNUFRZXyR7UE59ID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLXN5c3RlbWN0bC9zeXN0ZW1jdGwgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLXN5c3RlbWN0bC9zeXN0ZW1jdGwKaW5kZXggZWZhZDE0Yy4uNmU1YTFiNyAxMDA3NTUKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1zeXN0ZW1jdGwvc3lzdGVtY3RsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtc3lzdGVtY3RsL3N5c3RlbWN0bApAQCAtMTA4LDcgKzEwOCw3IEBACiAKIAkjIElmIGFueSBuZXcgdW5pdCB0eXBlcyBhcmUgYWRkZWQgdG8gc3lzdGVtZCB0aGV5IHNob3VsZCBiZSBhZGRlZAogCSMgdG8gdGhpcyByZWd1bGFyIGV4cHJlc3Npb24uCi0JdW5pdF90eXBlc19yZT0nXC5cKHNlcnZpY2VcfHNvY2tldFx8ZGV2aWNlXHxtb3VudFx8YXV0b21vdW50XHxzd2FwXHx0YXJnZXRcfHBhdGhcfHRpbWVyXHxzbmFwc2hvdFwpXHMqJCcKKwl1bml0X3R5cGVzX3JlPSdcLlwoc2VydmljZVx8c29ja2V0XHxkZXZpY2VcfG1vdW50XHxhdXRvbW91bnRcfHN3YXBcfHRhcmdldFx8dGFyZ2V0XC53YW50c1x8cGF0aFx8dGltZXJcfHNuYXBzaG90XClccyokJwogCWlmIFsgIiRhY3Rpb24iID0gInByZXNldCIgXTsgdGhlbgogCQlhY3Rpb249YGVncmVwIC1zaCAgJHNlcnZpY2UgJFJPT1QvZXRjL3N5c3RlbWQvdXNlci1wcmVzZXQvKi5wcmVzZXQgfCBjdXQgLWYxIC1kJyAnYAogCQlpZiBbIC16ICIkYWN0aW9uIiBdOyB0aGVuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQuaW5jCmluZGV4IDI5ZTBiZTYuLmQ5OWQxNTAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQuaW5jCkBAIC0xNCwxMCArMTQsOCBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5HUEwyO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLkxHUEwyLjE7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgogCi1TUkNSRVYgPSAiYTFlMmVmN2VjOTEyOTAyZDgxNDJlN2NiNTgzMGNiZmI0N2RiYTg2YyIKK1NSQ1JFViA9ICJjMWVkYWI3YWQxZTdjY2M5YmU2OTNiZWRmZDQ2NGNkMWNiZmZiMzk1IgogCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vc3lzdGVtZC9zeXN0ZW1kLmdpdDtwcm90b2NvbD1naXQiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCi0KLUxERkxBR1NfYXBwZW5kX2xpYmMtdWNsaWJjID0gIiAtbHJ0IC1sc3NwX25vbnNoYXJlZCAtbHNzcCAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtRGVmaW5lLV9QQVRIX1dUTVBYLWFuZC1fUEFUSF9VVE1QWC1pZi1ub3QtZGVmaW5lZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1EZWZpbmUtX1BBVEhfV1RNUFgtYW5kLV9QQVRIX1VUTVBYLWlmLW5vdC1kZWZpbmVkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1NTk5ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtRGVmaW5lLV9QQVRIX1dUTVBYLWFuZC1fUEFUSF9VVE1QWC1pZi1ub3QtZGVmaW5lZC5wYXRjaApAQCAtMCwwICsxLDQzIEBACitGcm9tIDNjYTUzMjY0ODVjYjE5ZTc3NWFmNmRlNjE1YzE3YmU2NmU0NGU0NzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVHVlLCAyNCBPY3QgMjAxNyAyMzowODoyNCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBEZWZpbmUgX1BBVEhfV1RNUFggYW5kIF9QQVRIX1VUTVBYIGlmIG5vdCBkZWZpbmVkCisKK011c2wgbmVlZHMgdGhlc2UgZGVmaW5lcworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIHNyYy9zaGFyZWQvdXRtcC13dG1wLmMgfCA4ICsrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL3NoYXJlZC91dG1wLXd0bXAuYyBiL3NyYy9zaGFyZWQvdXRtcC13dG1wLmMKK2luZGV4IDk3NTBkY2Q4MS4uYmQ1NWQ3NGExIDEwMDY0NAorLS0tIGEvc3JjL3NoYXJlZC91dG1wLXd0bXAuYworKysrIGIvc3JjL3NoYXJlZC91dG1wLXd0bXAuYworQEAgLTI3LDYgKzI3LDcgQEAKKyAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyAjaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisrI2luY2x1ZGUgPHV0bXAuaD4KKyAjaW5jbHVkZSA8dXRtcHguaD4KKyAKKyAjaW5jbHVkZSAiYWxsb2MtdXRpbC5oIgorQEAgLTQxLDYgKzQyLDEzIEBACisgI2luY2x1ZGUgInV0aWwuaCIKKyAjaW5jbHVkZSAidXRtcC13dG1wLmgiCisgCisrI2lmIGRlZmluZWQgX1BBVEhfVVRNUCAmJiAhZGVmaW5lZCBfUEFUSF9VVE1QWAorKyMgZGVmaW5lIF9QQVRIX1VUTVBYIF9QQVRIX1VUTVAKKysjZW5kaWYKKysjaWYgZGVmaW5lZCBfUEFUSF9XVE1QICYmICFkZWZpbmVkIF9QQVRIX1dUTVBYCisrIyBkZWZpbmUgX1BBVEhfV1RNUFggX1BBVEhfV1RNUAorKyNlbmRpZgorKworIGludCB1dG1wX2dldF9ydW5sZXZlbChpbnQgKnJ1bmxldmVsLCBpbnQgKnByZXZpb3VzKSB7CisgICAgICAgICBzdHJ1Y3QgdXRtcHggKmZvdW5kLCBsb29rdXAgPSB7IC51dF90eXBlID0gUlVOX0xWTCB9OworICAgICAgICAgaW50IHI7CistLSAKKzIuMTQuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtVXNlLXVpbnRtYXhfdC1mb3ItaGFuZGxpbmctcmxpbV90LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLVVzZS11aW50bWF4X3QtZm9yLWhhbmRsaW5nLXJsaW1fdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzlkYzc4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLVVzZS11aW50bWF4X3QtZm9yLWhhbmRsaW5nLXJsaW1fdC5wYXRjaApAQCAtMCwwICsxLDg5IEBACitGcm9tIGIyZDQxNzFjNmU1MjFjZjFlNzAzMzFmYjc2OTIzNGQ2M2E0YTZkNDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyNyBPY3QgMjAxNyAxMzowMDo0MSAtMDcwMAorU3ViamVjdDogW1BBVENIXSBVc2UgdWludG1heF90IGZvciBoYW5kbGluZyBybGltX3QKKworUFJJdXszMiw2NH0gaXMgbm90IHJpZ2h0IGZvcm1hdCB0byByZXByZXNlbnQgcmxpbV90IHR5cGUKK3RoZXJlZm9yZSB1c2UgJWp1IGFuZCB0eXBlY2FzdCB0aGUgcmxpbV90IHZhcmlhYmxlcyB0bwordWludG1heF90LgorCitGaXhlcyBwb3J0YWJsaWxpdHkgZXJyb3JzIGxpa2UKKworZXhlY3V0ZS5jOjM0NDY6MzY6IGVycm9yOiBmb3JtYXQgJyVsdScgZXhwZWN0cyBhcmd1bWVudCBvZiB0eXBlICdsb25nIHVuc2lnbmVkIGludCcsIGJ1dCBhcmd1bWVudCA1IGhhcyB0eXBlICdybGltX3Qge2FrYSBsb25nIGxvbmcgdW5zaWduZWQgaW50fScgWy1XZXJyb3I9Zm9ybWF0PV0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoZiwgIiVzJXM6ICIgUkxJTV9GTVQgIlxuIiwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn4KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4LCBybGltaXRfdG9fc3RyaW5nKGkpLCBjLT5ybGltaXRbaV0tPnJsaW1fbWF4KTsKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vc3lzdGVtZC9zeXN0ZW1kL3B1bGwvNzE5OV0KKworIHNyYy9iYXNpYy9mb3JtYXQtdXRpbC5oIHwgOCAtLS0tLS0tLQorIHNyYy9iYXNpYy9ybGltaXQtdXRpbC5jIHwgOCArKysrLS0tLQorIHNyYy9jb3JlL2V4ZWN1dGUuYyAgICAgIHwgOCArKysrLS0tLQorIDMgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9mb3JtYXQtdXRpbC5oIGIvc3JjL2Jhc2ljL2Zvcm1hdC11dGlsLmgKK2luZGV4IGFlNDJhOGY4OS4uMTQ0MjQ5Y2Q2IDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL2Zvcm1hdC11dGlsLmgKKysrKyBiL3NyYy9iYXNpYy9mb3JtYXQtdXRpbC5oCitAQCAtNjAsMTQgKzYwLDYgQEAKKyAjICBkZWZpbmUgUFJJX1RJTUVYICJsaSIKKyAjZW5kaWYKKyAKKy0jaWYgU0laRU9GX1JMSU1fVCA9PSA4CistIyAgZGVmaW5lIFJMSU1fRk1UICIlIiBQUkl1NjQKKy0jZWxpZiBTSVpFT0ZfUkxJTV9UID09IDQKKy0jICBkZWZpbmUgUkxJTV9GTVQgIiUiIFBSSXUzMgorLSNlbHNlCistIyAgZXJyb3IgVW5rbm93biBybGltX3Qgc2l6ZQorLSNlbmRpZgorLQorICNpZiBTSVpFT0ZfREVWX1QgPT0gOAorICMgIGRlZmluZSBERVZfRk1UICIlIiBQUkl1NjQKKyAjZWxpZiBTSVpFT0ZfREVWX1QgPT0gNAorZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9ybGltaXQtdXRpbC5jIGIvc3JjL2Jhc2ljL3JsaW1pdC11dGlsLmMKK2luZGV4IGNhODM0ZGY2Mi4uNDFmY2ViYjc0IDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL3JsaW1pdC11dGlsLmMKKysrKyBiL3NyYy9iYXNpYy9ybGltaXQtdXRpbC5jCitAQCAtMjg0LDEzICsyODQsMTMgQEAgaW50IHJsaW1pdF9mb3JtYXQoY29uc3Qgc3RydWN0IHJsaW1pdCAqcmwsIGNoYXIgKipyZXQpIHsKKyAgICAgICAgIGlmIChybC0+cmxpbV9jdXIgPj0gUkxJTV9JTkZJTklUWSAmJiBybC0+cmxpbV9tYXggPj0gUkxJTV9JTkZJTklUWSkKKyAgICAgICAgICAgICAgICAgcyA9IHN0cmR1cCgiaW5maW5pdHkiKTsKKyAgICAgICAgIGVsc2UgaWYgKHJsLT5ybGltX2N1ciA+PSBSTElNX0lORklOSVRZKQorLSAgICAgICAgICAgICAgICAodm9pZCkgYXNwcmludGYoJnMsICJpbmZpbml0eToiIFJMSU1fRk1ULCBybC0+cmxpbV9tYXgpOworKyAgICAgICAgICAgICAgICAodm9pZCkgYXNwcmludGYoJnMsICJpbmZpbml0eTolanUiLCAodWludG1heF90KXJsLT5ybGltX21heCk7CisgICAgICAgICBlbHNlIGlmIChybC0+cmxpbV9tYXggPj0gUkxJTV9JTkZJTklUWSkKKy0gICAgICAgICAgICAgICAgKHZvaWQpIGFzcHJpbnRmKCZzLCBSTElNX0ZNVCAiOmluZmluaXR5IiwgcmwtPnJsaW1fY3VyKTsKKysgICAgICAgICAgICAgICAgKHZvaWQpIGFzcHJpbnRmKCZzLCAiJWp1OmluZmluaXR5IiwgKHVpbnRtYXhfdClybC0+cmxpbV9jdXIpOworICAgICAgICAgZWxzZSBpZiAocmwtPnJsaW1fY3VyID09IHJsLT5ybGltX21heCkKKy0gICAgICAgICAgICAgICAgKHZvaWQpIGFzcHJpbnRmKCZzLCBSTElNX0ZNVCwgcmwtPnJsaW1fY3VyKTsKKysgICAgICAgICAgICAgICAgKHZvaWQpIGFzcHJpbnRmKCZzLCAiJWp1IiwgKHVpbnRtYXhfdClybC0+cmxpbV9jdXIpOworICAgICAgICAgZWxzZQorLSAgICAgICAgICAgICAgICAodm9pZCkgYXNwcmludGYoJnMsIFJMSU1fRk1UICI6IiBSTElNX0ZNVCwgcmwtPnJsaW1fY3VyLCBybC0+cmxpbV9tYXgpOworKyAgICAgICAgICAgICAgICAodm9pZCkgYXNwcmludGYoJnMsICIlanU6JWp1IiwgKHVpbnRtYXhfdClybC0+cmxpbV9jdXIsICh1aW50bWF4X3QpcmwtPnJsaW1fbWF4KTsKKyAKKyAgICAgICAgIGlmICghcykKKyAgICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07CitkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvZXhlY3V0ZS5jIGIvc3JjL2NvcmUvZXhlY3V0ZS5jCitpbmRleCBkNzJlNWJmMDguLmQzODk0NjAwMiAxMDA2NDQKKy0tLSBhL3NyYy9jb3JlL2V4ZWN1dGUuYworKysrIGIvc3JjL2NvcmUvZXhlY3V0ZS5jCitAQCAtMzQ0MywxMCArMzQ0MywxMCBAQCB2b2lkIGV4ZWNfY29udGV4dF9kdW1wKEV4ZWNDb250ZXh0ICpjLCBGSUxFKiBmLCBjb25zdCBjaGFyICpwcmVmaXgpIHsKKyAKKyAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBSTElNX05MSU1JVFM7IGkrKykKKyAgICAgICAgICAgICAgICAgaWYgKGMtPnJsaW1pdFtpXSkgeworLSAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoZiwgIiVzJXM6ICIgUkxJTV9GTVQgIlxuIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCwgcmxpbWl0X3RvX3N0cmluZyhpKSwgYy0+cmxpbWl0W2ldLT5ybGltX21heCk7CistICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihmLCAiJXMlc1NvZnQ6ICIgUkxJTV9GTVQgIlxuIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCwgcmxpbWl0X3RvX3N0cmluZyhpKSwgYy0+cmxpbWl0W2ldLT5ybGltX2N1cik7CisrICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihmLCAiJXMlczogJWp1XG4iLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4LCBybGltaXRfdG9fc3RyaW5nKGkpLCAodWludG1heF90KWMtPnJsaW1pdFtpXS0+cmxpbV9tYXgpOworKyAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoZiwgIiVzJXNTb2Z0OiAlanVcbiIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXgsIHJsaW1pdF90b19zdHJpbmcoaSksICh1aW50bWF4X3QpYy0+cmxpbWl0W2ldLT5ybGltX2N1cik7CisgICAgICAgICAgICAgICAgIH0KKyAKKyAgICAgICAgIGlmIChjLT5pb3ByaW9fc2V0KSB7CistLSAKKzIuMTQuMworCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtYWRkLWZhbGxiYWNrLXBhcnNlX3ByaW50Zl9mb3JtYXQtaW1wbGVtZW50YXRpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtYWRkLWZhbGxiYWNrLXBhcnNlX3ByaW50Zl9mb3JtYXQtaW1wbGVtZW50YXRpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTJmNzQ1OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1hZGQtZmFsbGJhY2stcGFyc2VfcHJpbnRmX2Zvcm1hdC1pbXBsZW1lbnRhdGlvbi5wYXRjaApAQCAtMCwwICsxLDQzMyBAQAorRnJvbSAwOTMzY2E2MjUxODA4Zjg1NmI5MmIwY2U4ZGE4Njk2ZDVmZWJjMzMzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRW1pbCBSZW5uZXIgQmVydGhpbmcgPHN5c3RlbWRAZXNtaWwuZGs+CitEYXRlOiBNb24sIDIzIE9jdCAyMDE3IDEwOjQxOjM5IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMDEvMTJdIGFkZCBmYWxsYmFjayBwYXJzZV9wcmludGZfZm9ybWF0IGltcGxlbWVudGF0aW9uCisKK1NpZ25lZC1vZmYtYnk6IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBNYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgIHwgICA0ICsKKyBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgIHwgICAyICsKKyBzcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5jIHwgMjczICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBzcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5oIHwgIDU3ICsrKysrKysrKworIHNyYy9iYXNpYy9zdGRpby11dGlsLmggICAgICAgICAgfCAgIDIgKy0KKyBzcmMvam91cm5hbC9qb3VybmFsLXNlbmQuYyAgICAgIHwgICAyICstCisgNiBmaWxlcyBjaGFuZ2VkLCAzMzggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5oCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCitpbmRleCA2OTJkN2JiOTUuLjNjYzhmMzQ1MSAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmFtCisrKysgYi9NYWtlZmlsZS5hbQorQEAgLTk5Nyw2ICs5OTcsMTAgQEAgbGliYmFzaWNfbGFfU09VUkNFUyA9IFwKKyAJc3JjL2Jhc2ljL2pvdXJuYWwtaW1wb3J0ZXIuaCBcCisgCXNyYy9iYXNpYy9qb3VybmFsLWltcG9ydGVyLmMKKyAKKytpZiAhSEFWRV9QUklOVEZfSAorK2xpYmJhc2ljX2xhX1NPVVJDRVMgKz0gc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuYworK2VuZGlmCisrCisgbm9kaXN0X2xpYmJhc2ljX2xhX1NPVVJDRVMgPSBcCisgCXNyYy9iYXNpYy9lcnJuby1mcm9tLW5hbWUuaCBcCisgCXNyYy9iYXNpYy9lcnJuby10by1uYW1lLmggXAorZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggNjBlN2RmNWVlLi5lZmNkYzZjMTYgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTMwOCw4ICszMDgsMTAgQEAgQUNfQ0hFQ0tfSEVBREVSUyhbdWNoYXIuaF0sIFtdLCBbXSkKKyBBQ19DSEVDS19IRUFERVJTKFtzeXMvY2FwYWJpbGl0eS5oXSwgW10sIFtBQ19NU0dfRVJST1IoWyoqKiBQT1NJWCBjYXBzIGhlYWRlcnMgbm90IGZvdW5kXSldKQorIEFDX0NIRUNLX0hFQURFUlMoW2xpbnV4L2J0cmZzLmhdLCBbXSwgW10pCisgQUNfQ0hFQ0tfSEVBREVSUyhbbGludXgvbWVtZmQuaF0sIFtdLCBbXSkKKytBQ19DSEVDS19IRUFERVJTKFtwcmludGYuaF0sIFtdLCBbXSkKKyBBQ19DSEVDS19IRUFERVJTKFtsaW51eC92bV9zb2NrZXRzLmhdLCBbXSwgW10sIFsjaW5jbHVkZSA8c3lzL3NvY2tldC5oPl0pCisgCisrQU1fQ09ORElUSU9OQUwoSEFWRV9QUklOVEZfSCwgW3Rlc3QgIngkYWNfY3ZfaGVhZGVyX3ByaW50Zl9oIiA9IHh5ZXNdKQorICMgdW5jb25kaXRpb25hbGx5IHB1bGwtaW4gbGlicnQgd2l0aCBvbGQgZ2xpYmMgdmVyc2lvbnMKKyBBQ19TRUFSQ0hfTElCUyhbY2xvY2tfZ2V0dGltZV0sIFtydF0sIFtdLCBbXSkKKyAKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5jIGIvc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMC4uNDk0MzdlNTQ0CistLS0gL2Rldi9udWxsCisrKysgYi9zcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5jCitAQCAtMCwwICsxLDI3MyBAQAorKy8qLSotIE1vZGU6IEM7IGMtYmFzaWMtb2Zmc2V0OiA4OyBpbmRlbnQtdGFicy1tb2RlOiBuaWwgLSotKi8KKysKKysvKioqCisrICBUaGlzIGZpbGUgaXMgcGFydCBvZiBzeXN0ZW1kLgorKworKyAgQ29weXJpZ2h0IDIwMTQgRW1pbCBSZW5uZXIgQmVydGhpbmcgPHN5c3RlbWRAZXNtaWwuZGs+CisrCisrICBXaXRoIHBhcnRzIGZyb20gdGhlIG11c2wgQyBsaWJyYXJ5CisrICBDb3B5cmlnaHQgMjAwNS0yMDE0IFJpY2ggRmVsa2VyLCBldCBhbC4KKysKKysgIHN5c3RlbWQgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorKyAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgc3lzdGVtZCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKysgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUKKysgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgIGFsb25nIHdpdGggc3lzdGVtZDsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKyoqKi8KKysKKysjaW5jbHVkZSA8c3RkZGVmLmg+CisrI2luY2x1ZGUgPHN0cmluZy5oPgorKworKyNpbmNsdWRlICJwYXJzZS1wcmludGYtZm9ybWF0LmgiCisrCisrc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN1bWVfbm9uYXJnKGNvbnN0IGNoYXIgKmZtdCkKKyt7CisrICAgICAgICBkbyB7CisrICAgICAgICAgICAgICAgIGlmICgqZm10ID09ICdcMCcpCisrICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZtdDsKKysgICAgICAgIH0gd2hpbGUgKCpmbXQrKyAhPSAnJScpOworKyAgICAgICAgcmV0dXJuIGZtdDsKKyt9CisrCisrc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN1bWVfbnVtKGNvbnN0IGNoYXIgKmZtdCkKKyt7CisrICAgICAgICBmb3IgKDsqZm10ID49ICcwJyAmJiAqZm10IDw9ICc5JzsgZm10KyspCisrICAgICAgICAgICAgICAgIC8qIGRvIG5vdGhpbmcgKi87CisrICAgICAgICByZXR1cm4gZm10OworK30KKysKKytzdGF0aWMgY29uc3QgY2hhciAqY29uc3VtZV9hcmduKGNvbnN0IGNoYXIgKmZtdCwgc2l6ZV90ICphcmcpCisreworKyAgICAgICAgY29uc3QgY2hhciAqcCA9IGZtdDsKKysgICAgICAgIHNpemVfdCB2YWwgPSAwOworKworKyAgICAgICAgaWYgKCpwIDwgJzEnIHx8ICpwID4gJzknKQorKyAgICAgICAgICAgICAgICByZXR1cm4gZm10OworKyAgICAgICAgZG8geworKyAgICAgICAgICAgICAgICB2YWwgPSAxMCp2YWwgKyAoKnArKyAtICcwJyk7CisrICAgICAgICB9IHdoaWxlICgqcCA+PSAnMCcgJiYgKnAgPD0gJzknKTsKKysKKysgICAgICAgIGlmICgqcCAhPSAnJCcpCisrICAgICAgICAgICAgICAgIHJldHVybiBmbXQ7CisrICAgICAgICAqYXJnID0gdmFsOworKyAgICAgICAgcmV0dXJuIHArMTsKKyt9CisrCisrc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN1bWVfZmxhZ3MoY29uc3QgY2hhciAqZm10KQorK3sKKysgICAgICAgIHdoaWxlICgxKSB7CisrICAgICAgICAgICAgICAgIHN3aXRjaCAoKmZtdCkgeworKyAgICAgICAgICAgICAgICBjYXNlICcjJzoKKysgICAgICAgICAgICAgICAgY2FzZSAnMCc6CisrICAgICAgICAgICAgICAgIGNhc2UgJy0nOgorKyAgICAgICAgICAgICAgICBjYXNlICcgJzoKKysgICAgICAgICAgICAgICAgY2FzZSAnKyc6CisrICAgICAgICAgICAgICAgIGNhc2UgJ1wnJzoKKysgICAgICAgICAgICAgICAgY2FzZSAnSSc6CisrICAgICAgICAgICAgICAgICAgICAgICAgZm10Kys7CisrICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgcmV0dXJuIGZtdDsKKysgICAgICAgIH0KKyt9CisrCisrZW51bSBzdGF0ZSB7CisrICAgICAgICBCQVJFLAorKyAgICAgICAgTFBSRSwKKysgICAgICAgIExMUFJFLAorKyAgICAgICAgSFBSRSwKKysgICAgICAgIEhIUFJFLAorKyAgICAgICAgQklHTFBSRSwKKysgICAgICAgIFpUUFJFLAorKyAgICAgICAgSlBSRSwKKysgICAgICAgIFNUT1AKKyt9OworKworK2VudW0gdHlwZSB7CisrICAgICAgICBOT05FLAorKyAgICAgICAgUFRSLAorKyAgICAgICAgSU5ULAorKyAgICAgICAgVUlOVCwKKysgICAgICAgIFVMTE9ORywKKysgICAgICAgIExPTkcsCisrICAgICAgICBVTE9ORywKKysgICAgICAgIFNIT1JULAorKyAgICAgICAgVVNIT1JULAorKyAgICAgICAgQ0hBUiwKKysgICAgICAgIFVDSEFSLAorKyAgICAgICAgTExPTkcsCisrICAgICAgICBTSVpFVCwKKysgICAgICAgIElNQVgsCisrICAgICAgICBVTUFYLAorKyAgICAgICAgUERJRkYsCisrICAgICAgICBVSVBUUiwKKysgICAgICAgIERCTCwKKysgICAgICAgIExEQkwsCisrICAgICAgICBNQVhUWVBFCisrfTsKKysKKytzdGF0aWMgY29uc3Qgc2hvcnQgcGFfdHlwZXNbTUFYVFlQRV0gPSB7CisrICAgICAgICBbTk9ORV0gICA9IFBBX0lOVCwKKysgICAgICAgIFtQVFJdICAgID0gUEFfUE9JTlRFUiwKKysgICAgICAgIFtJTlRdICAgID0gUEFfSU5ULAorKyAgICAgICAgW1VJTlRdICAgPSBQQV9JTlQsCisrICAgICAgICBbVUxMT05HXSA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9OR19MT05HLAorKyAgICAgICAgW0xPTkddICAgPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkcsCisrICAgICAgICBbVUxPTkddICA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9ORywKKysgICAgICAgIFtTSE9SVF0gID0gUEFfSU5UIHwgUEFfRkxBR19TSE9SVCwKKysgICAgICAgIFtVU0hPUlRdID0gUEFfSU5UIHwgUEFfRkxBR19TSE9SVCwKKysgICAgICAgIFtDSEFSXSAgID0gUEFfQ0hBUiwKKysgICAgICAgIFtVQ0hBUl0gID0gUEFfQ0hBUiwKKysgICAgICAgIFtMTE9OR10gID0gUEFfSU5UIHwgUEFfRkxBR19MT05HX0xPTkcsCisrICAgICAgICBbU0laRVRdICA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9ORywKKysgICAgICAgIFtJTUFYXSAgID0gUEFfSU5UIHwgUEFfRkxBR19MT05HX0xPTkcsCisrICAgICAgICBbVU1BWF0gICA9IFBBX0lOVCB8IFBBX0ZMQUdfTE9OR19MT05HLAorKyAgICAgICAgW1BESUZGXSAgPSBQQV9JTlQgfCBQQV9GTEFHX0xPTkdfTE9ORywKKysgICAgICAgIFtVSVBUUl0gID0gUEFfSU5UIHwgUEFfRkxBR19MT05HLAorKyAgICAgICAgW0RCTF0gICAgPSBQQV9ET1VCTEUsCisrICAgICAgICBbTERCTF0gICA9IFBBX0RPVUJMRSB8IFBBX0ZMQUdfTE9OR19ET1VCTEUKKyt9OworKworKyNkZWZpbmUgUyh4KSBbKHgpLSdBJ10KKysjZGVmaW5lIEUoeCkgKFNUT1AgKyAoeCkpCisrCisrc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgc3RhdGVzW11bJ3onLSdBJysxXSA9IHsKKysgICAgICAgIHsgLyogMDogYmFyZSB0eXBlcyAqLworKyAgICAgICAgICAgICAgICBTKCdkJykgPSBFKElOVCksIFMoJ2knKSA9IEUoSU5UKSwKKysgICAgICAgICAgICAgICAgUygnbycpID0gRShVSU5UKSxTKCd1JykgPSBFKFVJTlQpLFMoJ3gnKSA9IEUoVUlOVCksIFMoJ1gnKSA9IEUoVUlOVCksCisrICAgICAgICAgICAgICAgIFMoJ2UnKSA9IEUoREJMKSwgUygnZicpID0gRShEQkwpLCBTKCdnJykgPSBFKERCTCksICBTKCdhJykgPSBFKERCTCksCisrICAgICAgICAgICAgICAgIFMoJ0UnKSA9IEUoREJMKSwgUygnRicpID0gRShEQkwpLCBTKCdHJykgPSBFKERCTCksICBTKCdBJykgPSBFKERCTCksCisrICAgICAgICAgICAgICAgIFMoJ2MnKSA9IEUoQ0hBUiksUygnQycpID0gRShJTlQpLAorKyAgICAgICAgICAgICAgICBTKCdzJykgPSBFKFBUUiksIFMoJ1MnKSA9IEUoUFRSKSwgUygncCcpID0gRShVSVBUUiksUygnbicpID0gRShQVFIpLAorKyAgICAgICAgICAgICAgICBTKCdtJykgPSBFKE5PTkUpLAorKyAgICAgICAgICAgICAgICBTKCdsJykgPSBMUFJFLCAgIFMoJ2gnKSA9IEhQUkUsIFMoJ0wnKSA9IEJJR0xQUkUsCisrICAgICAgICAgICAgICAgIFMoJ3onKSA9IFpUUFJFLCAgUygnaicpID0gSlBSRSwgUygndCcpID0gWlRQUkUKKysgICAgICAgIH0sIHsgLyogMTogbC1wcmVmaXhlZCAqLworKyAgICAgICAgICAgICAgICBTKCdkJykgPSBFKExPTkcpLCBTKCdpJykgPSBFKExPTkcpLAorKyAgICAgICAgICAgICAgICBTKCdvJykgPSBFKFVMT05HKSxTKCd1JykgPSBFKFVMT05HKSxTKCd4JykgPSBFKFVMT05HKSxTKCdYJykgPSBFKFVMT05HKSwKKysgICAgICAgICAgICAgICAgUygnZScpID0gRShEQkwpLCAgUygnZicpID0gRShEQkwpLCAgUygnZycpID0gRShEQkwpLCAgUygnYScpID0gRShEQkwpLAorKyAgICAgICAgICAgICAgICBTKCdFJykgPSBFKERCTCksICBTKCdGJykgPSBFKERCTCksICBTKCdHJykgPSBFKERCTCksICBTKCdBJykgPSBFKERCTCksCisrICAgICAgICAgICAgICAgIFMoJ2MnKSA9IEUoSU5UKSwgIFMoJ3MnKSA9IEUoUFRSKSwgIFMoJ24nKSA9IEUoUFRSKSwKKysgICAgICAgICAgICAgICAgUygnbCcpID0gTExQUkUKKysgICAgICAgIH0sIHsgLyogMjogbGwtcHJlZml4ZWQgKi8KKysgICAgICAgICAgICAgICAgUygnZCcpID0gRShMTE9ORyksIFMoJ2knKSA9IEUoTExPTkcpLAorKyAgICAgICAgICAgICAgICBTKCdvJykgPSBFKFVMTE9ORyksUygndScpID0gRShVTExPTkcpLAorKyAgICAgICAgICAgICAgICBTKCd4JykgPSBFKFVMTE9ORyksUygnWCcpID0gRShVTExPTkcpLAorKyAgICAgICAgICAgICAgICBTKCduJykgPSBFKFBUUikKKysgICAgICAgIH0sIHsgLyogMzogaC1wcmVmaXhlZCAqLworKyAgICAgICAgICAgICAgICBTKCdkJykgPSBFKFNIT1JUKSwgUygnaScpID0gRShTSE9SVCksCisrICAgICAgICAgICAgICAgIFMoJ28nKSA9IEUoVVNIT1JUKSxTKCd1JykgPSBFKFVTSE9SVCksCisrICAgICAgICAgICAgICAgIFMoJ3gnKSA9IEUoVVNIT1JUKSxTKCdYJykgPSBFKFVTSE9SVCksCisrICAgICAgICAgICAgICAgIFMoJ24nKSA9IEUoUFRSKSwKKysgICAgICAgICAgICAgICAgUygnaCcpID0gSEhQUkUKKysgICAgICAgIH0sIHsgLyogNDogaGgtcHJlZml4ZWQgKi8KKysgICAgICAgICAgICAgICAgUygnZCcpID0gRShDSEFSKSwgUygnaScpID0gRShDSEFSKSwKKysgICAgICAgICAgICAgICAgUygnbycpID0gRShVQ0hBUiksUygndScpID0gRShVQ0hBUiksCisrICAgICAgICAgICAgICAgIFMoJ3gnKSA9IEUoVUNIQVIpLFMoJ1gnKSA9IEUoVUNIQVIpLAorKyAgICAgICAgICAgICAgICBTKCduJykgPSBFKFBUUikKKysgICAgICAgIH0sIHsgLyogNTogTC1wcmVmaXhlZCAqLworKyAgICAgICAgICAgICAgICBTKCdlJykgPSBFKExEQkwpLFMoJ2YnKSA9IEUoTERCTCksUygnZycpID0gRShMREJMKSwgUygnYScpID0gRShMREJMKSwKKysgICAgICAgICAgICAgICAgUygnRScpID0gRShMREJMKSxTKCdGJykgPSBFKExEQkwpLFMoJ0cnKSA9IEUoTERCTCksIFMoJ0EnKSA9IEUoTERCTCksCisrICAgICAgICAgICAgICAgIFMoJ24nKSA9IEUoUFRSKQorKyAgICAgICAgfSwgeyAvKiA2OiB6LSBvciB0LXByZWZpeGVkIChhc3N1bWVkIHRvIGJlIHNhbWUgc2l6ZSkgKi8KKysgICAgICAgICAgICAgICAgUygnZCcpID0gRShQRElGRiksUygnaScpID0gRShQRElGRiksCisrICAgICAgICAgICAgICAgIFMoJ28nKSA9IEUoU0laRVQpLFMoJ3UnKSA9IEUoU0laRVQpLAorKyAgICAgICAgICAgICAgICBTKCd4JykgPSBFKFNJWkVUKSxTKCdYJykgPSBFKFNJWkVUKSwKKysgICAgICAgICAgICAgICAgUygnbicpID0gRShQVFIpCisrICAgICAgICB9LCB7IC8qIDc6IGotcHJlZml4ZWQgKi8KKysgICAgICAgICAgICAgICAgUygnZCcpID0gRShJTUFYKSwgUygnaScpID0gRShJTUFYKSwKKysgICAgICAgICAgICAgICAgUygnbycpID0gRShVTUFYKSwgUygndScpID0gRShVTUFYKSwKKysgICAgICAgICAgICAgICAgUygneCcpID0gRShVTUFYKSwgUygnWCcpID0gRShVTUFYKSwKKysgICAgICAgICAgICAgICAgUygnbicpID0gRShQVFIpCisrICAgICAgICB9CisrfTsKKysKKytzaXplX3QgcGFyc2VfcHJpbnRmX2Zvcm1hdChjb25zdCBjaGFyICpmbXQsIHNpemVfdCBuLCBpbnQgKnR5cGVzKQorK3sKKysgICAgICAgIHNpemVfdCBpID0gMDsKKysgICAgICAgIHNpemVfdCBsYXN0ID0gMDsKKysKKysgICAgICAgIG1lbXNldCh0eXBlcywgMCwgbik7CisrCisrICAgICAgICB3aGlsZSAoMSkgeworKyAgICAgICAgICAgICAgICBzaXplX3QgYXJnOworKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc3RhdGU7CisrCisrICAgICAgICAgICAgICAgIGZtdCA9IGNvbnN1bWVfbm9uYXJnKGZtdCk7CisrICAgICAgICAgICAgICAgIGlmICgqZm10ID09ICdcMCcpCisrICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgICAgIGlmICgqZm10ID09ICclJykgeworKyAgICAgICAgICAgICAgICAgICAgICAgIGZtdCsrOworKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgIGFyZyA9IDA7CisrICAgICAgICAgICAgICAgIGZtdCA9IGNvbnN1bWVfYXJnbihmbXQsICZhcmcpOworKyAgICAgICAgICAgICAgICAvKiBmbGFncyAqLworKyAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX2ZsYWdzKGZtdCk7CisrICAgICAgICAgICAgICAgIC8qIHdpZHRoICovCisrICAgICAgICAgICAgICAgIGlmICgqZm10ID09ICcqJykgeworKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB3YXJnID0gMDsKKysgICAgICAgICAgICAgICAgICAgICAgICBmbXQgPSBjb25zdW1lX2FyZ24oZm10KzEsICZ3YXJnKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2FyZyA9PSAwKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FyZyA9ICsraTsKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2FyZyA+IGxhc3QpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0ID0gd2FyZzsKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2FyZyA8PSBuICYmIHR5cGVzW3dhcmctMV0gPT0gTk9ORSkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzW3dhcmctMV0gPSBJTlQ7CisrICAgICAgICAgICAgICAgIH0gZWxzZQorKyAgICAgICAgICAgICAgICAgICAgICAgIGZtdCA9IGNvbnN1bWVfbnVtKGZtdCk7CisrICAgICAgICAgICAgICAgIC8qIHByZWNpc2lvbiAqLworKyAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnLicpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICBmbXQrKzsKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnKicpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBwYXJnID0gMDsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZtdCA9IGNvbnN1bWVfYXJnbihmbXQrMSwgJnBhcmcpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmcgPT0gMCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZyA9ICsraTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJnID4gbGFzdCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCA9IHBhcmc7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyZyA8PSBuICYmIHR5cGVzW3BhcmctMV0gPT0gTk9ORSkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXNbcGFyZy0xXSA9IElOVDsKKysgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCpmbXQgPT0gJy0nKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXQrKzsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZtdCA9IGNvbnN1bWVfbnVtKGZtdCk7CisrICAgICAgICAgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgIC8qIGxlbmd0aCBtb2RpZmllciBhbmQgY29udmVyc2lvbiBzcGVjaWZpZXIgKi8KKysgICAgICAgICAgICAgICAgc3RhdGUgPSBCQVJFOworKyAgICAgICAgICAgICAgICBkbyB7CisrICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjID0gKmZtdCsrOworKworKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjIDwgJ0EnIHx8IGMgPiAneicpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKysgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IHN0YXRlc1tzdGF0ZV1TKGMpOworKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZSA9PSAwKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisrICAgICAgICAgICAgICAgIH0gd2hpbGUgKHN0YXRlIDwgU1RPUCk7CisrCisrICAgICAgICAgICAgICAgIGlmIChzdGF0ZSA9PSBFKE5PTkUpKQorKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworKworKyAgICAgICAgICAgICAgICBpZiAoYXJnID09IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgYXJnID0gKytpOworKyAgICAgICAgICAgICAgICBpZiAoYXJnID4gbGFzdCkKKysgICAgICAgICAgICAgICAgICAgICAgICBsYXN0ID0gYXJnOworKyAgICAgICAgICAgICAgICBpZiAoYXJnIDw9IG4pCisrICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXNbYXJnLTFdID0gc3RhdGUgLSBTVE9QOworKyAgICAgICAgfQorKworKyAgICAgICAgaWYgKGxhc3QgPiBuKQorKyAgICAgICAgICAgICAgICBsYXN0ID0gbjsKKysgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsYXN0OyBpKyspCisrICAgICAgICAgICAgICAgIHR5cGVzW2ldID0gcGFfdHlwZXNbdHlwZXNbaV1dOworKworKyAgICAgICAgcmV0dXJuIGxhc3Q7CisrfQorZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmggYi9zcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwLi40MzcxMTc3YjAKKy0tLSAvZGV2L251bGwKKysrKyBiL3NyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmgKK0BAIC0wLDAgKzEsNTcgQEAKKysvKi0qLSBNb2RlOiBDOyBjLWJhc2ljLW9mZnNldDogODsgaW5kZW50LXRhYnMtbW9kZTogbmlsIC0qLSovCisrCisrLyoqKgorKyAgVGhpcyBmaWxlIGlzIHBhcnQgb2Ygc3lzdGVtZC4KKysKKysgIENvcHlyaWdodCAyMDE0IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgorKworKyAgV2l0aCBwYXJ0cyBmcm9tIHRoZSBHTlUgQyBMaWJyYXJ5CisrICBDb3B5cmlnaHQgMTk5MS0yMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgc3lzdGVtZCBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisrICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IKKysgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICBzeXN0ZW1kIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorKyAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVQorKyAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgYWxvbmcgd2l0aCBzeXN0ZW1kOyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrKioqLworKworKyNwcmFnbWEgb25jZQorKworKyNpbmNsdWRlICJjb25maWcuaCIKKysKKysjaWZkZWYgSEFWRV9QUklOVEZfSAorKyNpbmNsdWRlIDxwcmludGYuaD4KKysjZWxzZQorKworKyNpbmNsdWRlIDxzdGRkZWYuaD4KKysKKytlbnVtIHsJCQkJLyogQyB0eXBlOiAqLworKyAgUEFfSU5ULAkJCS8qIGludCAqLworKyAgUEFfQ0hBUiwJCQkvKiBpbnQsIGNhc3QgdG8gY2hhciAqLworKyAgUEFfV0NIQVIsCQkJLyogd2lkZSBjaGFyICovCisrICBQQV9TVFJJTkcsCQkJLyogY29uc3QgY2hhciAqLCBhICdcMCctdGVybWluYXRlZCBzdHJpbmcgKi8KKysgIFBBX1dTVFJJTkcsCQkJLyogY29uc3Qgd2NoYXJfdCAqLCB3aWRlIGNoYXJhY3RlciBzdHJpbmcgKi8KKysgIFBBX1BPSU5URVIsCQkJLyogdm9pZCAqICovCisrICBQQV9GTE9BVCwJCQkvKiBmbG9hdCAqLworKyAgUEFfRE9VQkxFLAkJCS8qIGRvdWJsZSAqLworKyAgUEFfTEFTVAorK307CisrCisrLyogRmxhZyBiaXRzIHRoYXQgY2FuIGJlIHNldCBpbiBhIHR5cGUgcmV0dXJuZWQgYnkgYHBhcnNlX3ByaW50Zl9mb3JtYXQnLiAgKi8KKysjZGVmaW5lCVBBX0ZMQUdfTUFTSwkJMHhmZjAwCisrI2RlZmluZQlQQV9GTEFHX0xPTkdfTE9ORwkoMSA8PCA4KQorKyNkZWZpbmUJUEFfRkxBR19MT05HX0RPVUJMRQlQQV9GTEFHX0xPTkdfTE9ORworKyNkZWZpbmUJUEFfRkxBR19MT05HCQkoMSA8PCA5KQorKyNkZWZpbmUJUEFfRkxBR19TSE9SVAkJKDEgPDwgMTApCisrI2RlZmluZQlQQV9GTEFHX1BUUgkJKDEgPDwgMTEpCisrCisrc2l6ZV90IHBhcnNlX3ByaW50Zl9mb3JtYXQoY29uc3QgY2hhciAqZm10LCBzaXplX3QgbiwgaW50ICp0eXBlcyk7CisrCisrI2VuZGlmIC8qIEhBVkVfUFJJTlRGX0ggKi8KK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvc3RkaW8tdXRpbC5oIGIvc3JjL2Jhc2ljL3N0ZGlvLXV0aWwuaAoraW5kZXggYmQxMTQ0YjRjLi5jOWM5NWViNTQgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvc3RkaW8tdXRpbC5oCisrKysgYi9zcmMvYmFzaWMvc3RkaW8tdXRpbC5oCitAQCAtMTksMTIgKzE5LDEyIEBACisgICBhbG9uZyB3aXRoIHN5c3RlbWQ7IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqKiovCisgCistI2luY2x1ZGUgPHByaW50Zi5oPgorICNpbmNsdWRlIDxzdGRhcmcuaD4KKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgCisgI2luY2x1ZGUgIm1hY3JvLmgiCisrI2luY2x1ZGUgInBhcnNlLXByaW50Zi1mb3JtYXQuaCIKKyAKKyAjZGVmaW5lIHhzcHJpbnRmKGJ1ZiwgZm10LCAuLi4pIFwKKyAgICAgICAgIGFzc2VydF9tZXNzYWdlX3NlKChzaXplX3QpIHNucHJpbnRmKGJ1ZiwgRUxFTUVOVFNPRihidWYpLCBmbXQsIF9fVkFfQVJHU19fKSA8IEVMRU1FTlRTT0YoYnVmKSwgInhzcHJpbnRmOiAiICNidWYgIltdIG11c3QgYmUgYmlnIGVub3VnaCIpCitkaWZmIC0tZ2l0IGEvc3JjL2pvdXJuYWwvam91cm5hbC1zZW5kLmMgYi9zcmMvam91cm5hbC9qb3VybmFsLXNlbmQuYworaW5kZXggNDQwZmJhNjdjLi4wMjM2YzQzYzQgMTAwNjQ0CistLS0gYS9zcmMvam91cm5hbC9qb3VybmFsLXNlbmQuYworKysrIGIvc3JjL2pvdXJuYWwvam91cm5hbC1zZW5kLmMKK0BAIC0xOSw3ICsxOSw2IEBACisgCisgI2luY2x1ZGUgPGVycm5vLmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CistI2luY2x1ZGUgPHByaW50Zi5oPgorICNpbmNsdWRlIDxzdGRkZWYuaD4KKyAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorICNpbmNsdWRlIDxzeXMvdW4uaD4KK0BAIC0zOCw2ICszNyw3IEBACisgI2luY2x1ZGUgInN0ZGlvLXV0aWwuaCIKKyAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKKyAjaW5jbHVkZSAidXRpbC5oIgorKyNpbmNsdWRlICJwYXJzZS1wcmludGYtZm9ybWF0LmgiCisgCisgI2RlZmluZSBTTkRCVUZfU0laRSAoOCoxMDI0KjEwMjQpCisgCistLSAKKzIuMTQuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtY29yZS1kZXZpY2UuYy1DaGFuZ2UtdGhlLWRlZmF1bHQtZGV2aWNlLXRpbWVvdXQtdG8tMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1jb3JlLWRldmljZS5jLUNoYW5nZS10aGUtZGVmYXVsdC1kZXZpY2UtdGltZW91dC10by0yLnBhdGNoCmluZGV4IGVlMmNkNmMuLjdmMWJjNDQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1jb3JlLWRldmljZS5jLUNoYW5nZS10aGUtZGVmYXVsdC1kZXZpY2UtdGltZW91dC10by0yLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1jb3JlLWRldmljZS5jLUNoYW5nZS10aGUtZGVmYXVsdC1kZXZpY2UtdGltZW91dC10by0yLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSBhNTQ0ZDZkMTVmNWM0MTgwODRmMzIyMzQ5YWFmZTM0MTEyOGQ1ZmNhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBmMWI1YTZmNzE3YmRhNmY4MGE2YjVlM2U0ZDUwYjQ1MGY2Y2M3YjA5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IE1vbiwgMTQgRGVjIDIwMTUgMDQ6MDk6MTkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwMS8xOV0gY29yZS9kZXZpY2UuYzogQ2hhbmdlIHRoZSBkZWZhdWx0IGRldmljZSB0aW1lb3V0IHRvIDI0MAorU3ViamVjdDogW1BBVENIIDE0LzE0XSBjb3JlL2RldmljZS5jOiBDaGFuZ2UgdGhlIGRlZmF1bHQgZGV2aWNlIHRpbWVvdXQgdG8gMjQwCiAgc2VjLgogTUlNRS1WZXJzaW9uOiAxLjAKIENvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApAQCAtMTEsMjMgKzExLDI0IEBACiAKIFNpZ25lZC1vZmYtYnk6IEFuw61iYWwgTGltw7NuIDxhbmliYWwubGltb25AbGludXguaW50ZWwuY29tPgogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKwogLS0tCiAgc3JjL2NvcmUvZGV2aWNlLmMgfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9zcmMvY29yZS9kZXZpY2UuYyBiL3NyYy9jb3JlL2RldmljZS5jCi1pbmRleCBjNTcyYTY3Li5mOTA3NzRlIDEwMDY0NAoraW5kZXggNzc2MDFjNTUyLi45OGJmNDliYTIgMTAwNjQ0CiAtLS0gYS9zcmMvY29yZS9kZXZpY2UuYwogKysrIGIvc3JjL2NvcmUvZGV2aWNlLmMKIEBAIC0xMTIsNyArMTEyLDcgQEAgc3RhdGljIHZvaWQgZGV2aWNlX2luaXQoVW5pdCAqdSkgewogICAgICAgICAgICogaW5kZWZpbml0ZWx5IGZvciBwbHVnZ2VkIGluIGRldmljZXMsIHNvbWV0aGluZyB3aGljaCBjYW5ub3QKICAgICAgICAgICAqIGhhcHBlbiBmb3IgdGhlIG90aGVyIHVuaXRzIHNpbmNlIHRoZWlyIG9wZXJhdGlvbnMgdGltZSBvdXQKICAgICAgICAgICAqIGFueXdheS4gKi8KLS0gICAgICAgIHUtPmpvYl90aW1lb3V0ID0gdS0+bWFuYWdlci0+ZGVmYXVsdF90aW1lb3V0X3N0YXJ0X3VzZWM7Ci0rICAgICAgICB1LT5qb2JfdGltZW91dCA9ICgyNDAgKiBVU0VDX1BFUl9TRUMpOworLSAgICAgICAgdS0+am9iX3J1bm5pbmdfdGltZW91dCA9IHUtPm1hbmFnZXItPmRlZmF1bHRfdGltZW91dF9zdGFydF91c2VjOworKyAgICAgICAgdS0+am9iX3J1bm5pbmdfdGltZW91dCA9ICgyNDAgKiBVU0VDX1BFUl9TRUMpOwogIAogICAgICAgICAgdS0+aWdub3JlX29uX2lzb2xhdGUgPSB0cnVlOwogIH0KIC0tIAotMi4xMC4yCisyLjEzLjIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLWNvcmUtZXZhbHVhdGUtcHJlc2V0cy1hZnRlci1nZW5lcmF0b3JzLWhhdmUtcnVuLTY1MjYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtY29yZS1ldmFsdWF0ZS1wcmVzZXRzLWFmdGVyLWdlbmVyYXRvcnMtaGF2ZS1ydW4tNjUyNi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZjEwMGU1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLWNvcmUtZXZhbHVhdGUtcHJlc2V0cy1hZnRlci1nZW5lcmF0b3JzLWhhdmUtcnVuLTY1MjYucGF0Y2gKQEAgLTAsMCArMSw2OSBAQAorRnJvbSAyOGRkNjZlY2ZjZTc0M2IxZWE5MDQ2YzdiYjUwMWUwZmNhZWZmNzI0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTHVjYSBCcnVubyA8bHVjYS5icnVub0Bjb3Jlb3MuY29tPgorRGF0ZTogU3VuLCA2IEF1ZyAyMDE3IDEzOjI0OjI0ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvcmU6IGV2YWx1YXRlIHByZXNldHMgYWZ0ZXIgZ2VuZXJhdG9ycyBoYXZlIHJ1biAoIzY1MjYpCisKK1RoaXMgY29tbWl0IG1vdmVzIHRoZSBmaXJzdC1ib290IHN5c3RlbSBwcmVzZXQtc2V0dGluZ3MgZXZhbHVhdGlvbiBvdXQKK29mIG1haW4gYW5kIGludG8gdGhlIG1hbmFnZXIgc3RhcnR1cCBsb2dpYyBpdHNlbGYuIE5vdGFibHksIGl0IHJldmVyc2VzCit0aGUgb3JkZXIgYmV0d2VlbiBnZW5lcmF0b3JzIGFuZCBwcmVzZXRzIGV2YWx1YXRpb24sIHNvIHRoYXQgYW55IGNoYW5nZXMKK3BlcmZvcm1lZCBieSBmaXJzdC1ib290IGdlbmVyYXRvcnMgYXJlIHRha2VuIGludG8gdGhlIGFjY291bnQgYnkgcHJlc2V0cworbG9naWMuCisKK0FmdGVyIHRoaXMgY2hhbmdlLCB1bml0cyBjcmVhdGVkIGJ5IGEgZ2VuZXJhdG9yIGNhbiBiZSBlbmFibGVkIGFzIHBhcnQKK29mIGEgcHJlc2V0LgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IENhdGFsaW4gRW5hY2hlIDxjYXRhbGluLmVuYWNoZUB3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL2NvcmUvbWFpbi5jICAgIHwgMTIgKystLS0tLS0tLS0tCisgc3JjL2NvcmUvbWFuYWdlci5jIHwgIDggKysrKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbWFpbi5jIGIvc3JjL2NvcmUvbWFpbi5jCitpbmRleCBkZmVkYzNkLi4xMWFjOWNmIDEwMDY0NAorLS0tIGEvc3JjL2NvcmUvbWFpbi5jCisrKysgYi9zcmMvY29yZS9tYWluLmMKK0BAIC0xODA5LDE4ICsxODA5LDEwIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKKyAgICAgICAgICAgICAgICAgaWYgKHByY3RsKFBSX1NFVF9DSElMRF9TVUJSRUFQRVIsIDEpIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfd2FybmluZ19lcnJubyhlcnJubywgIkZhaWxlZCB0byBtYWtlIHVzIGEgc3VicmVhcGVyOiAlbSIpOworIAorLSAgICAgICAgaWYgKGFyZ19zeXN0ZW0pIHsKKysgICAgICAgIGlmIChhcmdfc3lzdGVtKQorKyAgICAgICAgICAgICAgICAvKiBCdW1wIHVwIFJMSU1JVF9OT0ZJTEUgZm9yIHN5c3RlbWQgaXRzZWxmICovCisgICAgICAgICAgICAgICAgICh2b2lkKSBidW1wX3JsaW1pdF9ub2ZpbGUoJnNhdmVkX3JsaW1pdF9ub2ZpbGUpOworIAorLSAgICAgICAgICAgICAgICBpZiAoZW1wdHlfZXRjKSB7CistICAgICAgICAgICAgICAgICAgICAgICAgciA9IHVuaXRfZmlsZV9wcmVzZXRfYWxsKFVOSVRfRklMRV9TWVNURU0sIDAsIE5VTEwsIFVOSVRfRklMRV9QUkVTRVRfRU5BQkxFX09OTFksIE5VTEwsIDApOworLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyIDwgMCkKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19mdWxsX2Vycm5vKHIgPT0gLUVFWElTVCA/IExPR19OT1RJQ0UgOiBMT0dfV0FSTklORywgciwgIkZhaWxlZCB0byBwb3B1bGF0ZSAvZXRjIHdpdGggcHJlc2V0IHVuaXQgc2V0dGluZ3MsIGlnbm9yaW5nOiAlbSIpOworLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvKCJQb3B1bGF0ZWQgL2V0YyB3aXRoIHByZXNldCB1bml0IHNldHRpbmdzLiIpOworLSAgICAgICAgICAgICAgICB9CistICAgICAgICB9CistCisgICAgICAgICByID0gbWFuYWdlcl9uZXcoYXJnX3N5c3RlbSA/IFVOSVRfRklMRV9TWVNURU0gOiBVTklUX0ZJTEVfVVNFUiwgYXJnX2FjdGlvbiA9PSBBQ1RJT05fVEVTVCwgJm0pOworICAgICAgICAgaWYgKHIgPCAwKSB7CisgICAgICAgICAgICAgICAgIGxvZ19lbWVyZ2VuY3lfZXJybm8ociwgIkZhaWxlZCB0byBhbGxvY2F0ZSBtYW5hZ2VyIG9iamVjdDogJW0iKTsKK2RpZmYgLS1naXQgYS9zcmMvY29yZS9tYW5hZ2VyLmMgYi9zcmMvY29yZS9tYW5hZ2VyLmMKK2luZGV4IDFhYWRiNzAuLmZiNWUyYjUgMTAwNjQ0CistLS0gYS9zcmMvY29yZS9tYW5hZ2VyLmMKKysrKyBiL3NyYy9jb3JlL21hbmFnZXIuYworQEAgLTEzMjgsNiArMTMyOCwxNCBAQCBpbnQgbWFuYWdlcl9zdGFydHVwKE1hbmFnZXIgKm0sIEZJTEUgKnNlcmlhbGl6YXRpb24sIEZEU2V0ICpmZHMpIHsKKyAgICAgICAgIGlmIChyIDwgMCkKKyAgICAgICAgICAgICAgICAgcmV0dXJuIHI7CisgCisrICAgICAgICBpZiAobS0+Zmlyc3RfYm9vdCAmJiBtLT51bml0X2ZpbGVfc2NvcGUgPT0gVU5JVF9GSUxFX1NZU1RFTSkgeworKyAgICAgICAgICAgICAgICBxID0gdW5pdF9maWxlX3ByZXNldF9hbGwoVU5JVF9GSUxFX1NZU1RFTSwgMCwgTlVMTCwgVU5JVF9GSUxFX1BSRVNFVF9FTkFCTEVfT05MWSwgTlVMTCwgMCk7CisrICAgICAgICAgICAgICAgIGlmIChxIDwgMCkKKysgICAgICAgICAgICAgICAgICAgICAgICBsb2dfZnVsbF9lcnJubyhxID09IC1FRVhJU1QgPyBMT0dfTk9USUNFIDogTE9HX1dBUk5JTkcsIHEsICJGYWlsZWQgdG8gcG9wdWxhdGUgL2V0YyB3aXRoIHByZXNldCB1bml0IHNldHRpbmdzLCBpZ25vcmluZzogJW0iKTsKKysgICAgICAgICAgICAgICAgZWxzZQorKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvKCJQb3B1bGF0ZWQgL2V0YyB3aXRoIHByZXNldCB1bml0IHNldHRpbmdzLiIpOworKyAgICAgICAgfQorKworICAgICAgICAgbG9va3VwX3BhdGhzX3JlZHVjZSgmbS0+bG9va3VwX3BhdGhzKTsKKyAgICAgICAgIG1hbmFnZXJfYnVpbGRfdW5pdF9wYXRoX2NhY2hlKG0pOworIAorLS0gCisyLjEwLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLWNvcmUtbG9hZC1mcmFnbWVudC1yZWZ1c2UtdW5pdHMtd2l0aC1lcnJvcnMtaW4tY2VydGEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtY29yZS1sb2FkLWZyYWdtZW50LXJlZnVzZS11bml0cy13aXRoLWVycm9ycy1pbi1jZXJ0YS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODA5NDhiMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtY29yZS1sb2FkLWZyYWdtZW50LXJlZnVzZS11bml0cy13aXRoLWVycm9ycy1pbi1jZXJ0YS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyOSArMCwwIEBACi1JZiBhIHVzZXIgaXMgY3JlYXRlZCB3aXRoIGEgc3RyaWN0bHktc3BlYWtpbmcgaW52YWxpZCBuYW1lIHN1Y2ggYXMgJzBkYXknIGFuZCBhCi11bml0IGNyZWF0ZWQgdG8gcnVuIGFzIHRoYXQgdXNlciwgc3lzdGVtZCByZWplY3RzIHRoZSB1c2VybmFtZSBhbmQgcnVucyB0aGUgdW5pdAotYXMgcm9vdC4KLQotQ1ZFOiBDVkUtMjAxNy0xMDAwMDgyCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1Gcm9tIGQ4ZTEzMTBlMWVkN2I2ZjEyMmJjN2ViOGJhMDYxZmJkMDg4NzgzYzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/WmJpZ25pZXc9MjBKPUM0PTk5ZHJ6ZWpld3NraS1Tem1laz89IDx6YnlzemVrQGluLndhdy5wbD4KLURhdGU6IFRodSwgNiBKdWwgMjAxNyAxMzoyODoxOSAtMDQwMAotU3ViamVjdDogW1BBVENIXSBjb3JlL2xvYWQtZnJhZ21lbnQ6IHJlZnVzZSB1bml0cyB3aXRoIGVycm9ycyBpbiBjZXJ0YWluCi0gZGlyZWN0aXZlcwotCi1JZiBhbiBlcnJvciBpcyBlbmNvdW50ZXJlZCBpbiBhbnkgb2YgdGhlIEV4ZWMqIGxpbmVzLCBXb3JraW5nRGlyZWN0b3J5LAotU0VMaW51eENvbnRleHQsIEFwcGFybW9yUHJvZmlsZSwgU21hY2tQcm9jZXNzTGFiZWwsIFNlcnZpY2UgKGluIC5zb2NrZXQKLXVuaXRzKSwgVXNlciwgb3IgR3JvdXAsIHJlZnVzZSB0byBsb2FkIHRoZSB1bml0LiBJZiB0aGUgY29uZmlnIHN0YW56YQotaGFzIHN1cHBvcnQsIGlnbm9yZSB0aGUgZmFpbHVyZSBpZiAnLScgaXMgcHJlc2VudC4KLQotRm9yIHRob3NlIGNvbmZpZ3VyYXRpb24gZGlyZWN0aXZlcywgZXZlbiBpZiB3ZSBzdGFydGVkIHRoZSB1bml0LCBpdCdzCi1wcmV0dHkgbGlrZWx5IHRoYXQgaXQnbGwgZG8gc29tZXRoaW5nIHVuZXhwZWN0ZWQgKGxpa2Ugd3JpdGUgZmlsZXMKLWluIGEgd3JvbmcgcGxhY2UsIG9yIHdpdGggYSB3cm9uZyBjb250ZXh0LCBvciBydW4gd2l0aCB3cm9uZyBwZXJtaXNzaW9ucywKLWV0YykuIEl0IHNlZW1zIGJldHRlciB0byByZWZ1c2UgdG8gc3RhcnQgdGhlIHVuaXQgYW5kIGhhdmUgdGhlIGFkbWluCi1jbGVhbiB1cCB0aGUgY29uZmlndXJhdGlvbiB3aXRob3V0IGdpdmluZyB0aGUgc2VydmljZSBhIGNoYW5jZSB0byBtZXNzCi11cCBzdHVmZi4KLQotTm90ZSB0aGF0IGFsbCAic2VjdXJpdHkiIG9wdGlvbnMgdGhhdCByZXN0cmljdCB3aGF0IHRoZSB1bml0IGNhbiBkbwotKENhcGFiaWxpdGllcywgQW1iaWVudENhcGFiaWxpdGllcywgUmVzdHJpY3QqLCBTeXN0ZW1DYWxsRmlsdGVyLCBMaW1pdCosCi1Qcml2YXRlRGV2aWNlcywgUHJvdGVjdCosIGV0YykgYXJlIF9ub3RfIHRyZWF0ZWQgbGlrZSB0aGlzLiBTdWNoIG9wdGlvbnMgYXJlCi1vbmx5IHN1cHBsZW1lbnRhcnksIGFuZCBhcmUgbm90IGFsd2F5cyBhdmFpbGFibGUgZGVwZW5kaW5nIG9uIHRoZSBhcmNoaXRlY3R1cmUKLWFuZCBjb21waWxhdGlvbiBvcHRpb25zLCBzbyB1bml0IGF1dGhvcnMgaGF2ZSB0byBtYWtlIHN1cmUgdGhhdCB0aGUgc2VydmljZQotcnVucyBjb3JyZWN0bHkgd2l0aG91dCB0aGVtIGFueXdheS4KLQotRml4ZXMgIzYyMzcsICM2Mjc3LgotCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotLS0tCi0gc3JjL2NvcmUvbG9hZC1mcmFnbWVudC5jICB8IDEwNCArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCi0gc3JjL3Rlc3QvdGVzdC11bml0LWZpbGUuYyB8ICAxNCArKystLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA3MCBpbnNlcnRpb25zKCspLCA0OCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2xvYWQtZnJhZ21lbnQuYyBiL3NyYy9jb3JlL2xvYWQtZnJhZ21lbnQuYwotaW5kZXggY2JjODI2ODA5Li4yMDQ3OTc0ZjQgMTAwNjQ0Ci0tLS0gYS9zcmMvY29yZS9sb2FkLWZyYWdtZW50LmMKLSsrKyBiL3NyYy9jb3JlL2xvYWQtZnJhZ21lbnQuYwotQEAgLTYzMCwyMCArNjMwLDI4IEBAIGludCBjb25maWdfcGFyc2VfZXhlYygKLSAKLSAgICAgICAgICAgICAgICAgaWYgKGlzZW1wdHkoZikpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAvKiBGaXJzdCB3b3JkIGlzIGVpdGhlciAiLSIgb3IgIkAiIHdpdGggbm8gY29tbWFuZC4gKi8KLS0gICAgICAgICAgICAgICAgICAgICAgICBsb2dfc3ludGF4KHVuaXQsIExPR19FUlIsIGZpbGVuYW1lLCBsaW5lLCAwLCAiRW1wdHkgcGF0aCBpbiBjb21tYW5kIGxpbmUsIGlnbm9yaW5nOiBcIiVzXCIiLCBydmFsdWUpOwotLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19zeW50YXgodW5pdCwgTE9HX0VSUiwgZmlsZW5hbWUsIGxpbmUsIDAsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRW1wdHkgcGF0aCBpbiBjb21tYW5kIGxpbmUlczogXCIlc1wiIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZSA/ICIsIGlnbm9yaW5nIiA6ICIiLCBydmFsdWUpOwotKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpZ25vcmUgPyAwIDogLUVOT0VYRUM7Ci0gICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgaWYgKCFzdHJpbmdfaXNfc2FmZShmKSkgewotLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19zeW50YXgodW5pdCwgTE9HX0VSUiwgZmlsZW5hbWUsIGxpbmUsIDAsICJFeGVjdXRhYmxlIHBhdGggY29udGFpbnMgc3BlY2lhbCBjaGFyYWN0ZXJzLCBpZ25vcmluZzogJXMiLCBydmFsdWUpOwotLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19zeW50YXgodW5pdCwgTE9HX0VSUiwgZmlsZW5hbWUsIGxpbmUsIDAsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhlY3V0YWJsZSBwYXRoIGNvbnRhaW5zIHNwZWNpYWwgY2hhcmFjdGVycyVzOiAlcyIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmUgPyAiLCBpZ25vcmluZyIgOiAiIiwgcnZhbHVlKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWdub3JlID8gMCA6IC1FTk9FWEVDOwotICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIGlmICghcGF0aF9pc19hYnNvbHV0ZShmKSkgewotLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19zeW50YXgodW5pdCwgTE9HX0VSUiwgZmlsZW5hbWUsIGxpbmUsIDAsICJFeGVjdXRhYmxlIHBhdGggaXMgbm90IGFic29sdXRlLCBpZ25vcmluZzogJXMiLCBydmFsdWUpOwotLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19zeW50YXgodW5pdCwgTE9HX0VSUiwgZmlsZW5hbWUsIGxpbmUsIDAsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhlY3V0YWJsZSBwYXRoIGlzIG5vdCBhYnNvbHV0ZSVzOiAlcyIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmUgPyAiLCBpZ25vcmluZyIgOiAiIiwgcnZhbHVlKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWdub3JlID8gMCA6IC1FTk9FWEVDOwotICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIGlmIChlbmRzd2l0aChmLCAiLyIpKSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgbG9nX3N5bnRheCh1bml0LCBMT0dfRVJSLCBmaWxlbmFtZSwgbGluZSwgMCwgIkV4ZWN1dGFibGUgcGF0aCBzcGVjaWZpZXMgYSBkaXJlY3RvcnksIGlnbm9yaW5nOiAlcyIsIHJ2YWx1ZSk7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgbG9nX3N5bnRheCh1bml0LCBMT0dfRVJSLCBmaWxlbmFtZSwgbGluZSwgMCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeGVjdXRhYmxlIHBhdGggc3BlY2lmaWVzIGEgZGlyZWN0b3J5JXM6ICVzIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZSA/ICIsIGlnbm9yaW5nIiA6ICIiLCBydmFsdWUpOwotKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpZ25vcmUgPyAwIDogLUVOT0VYRUM7Ci0gICAgICAgICAgICAgICAgIH0KLSAKLSAgICAgICAgICAgICAgICAgaWYgKGYgPT0gZmlyc3R3b3JkKSB7Ci1AQCAtNjk5LDcgKzcwNyw3IEBAIGludCBjb25maWdfcGFyc2VfZXhlYygKLSAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA9PSAwKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAociA8IDApCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpZ25vcmUgPyAwIDogLUVOT0VYRUM7Ci0gCi0gICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFHUkVFRFlfUkVBTExPQyhuLCBuYnVmc2l6ZSwgbmxlbiArIDIpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvZ19vb20oKTsKLUBAIC03MDksOCArNzE3LDEwIEBAIGludCBjb25maWdfcGFyc2VfZXhlYygKLSAgICAgICAgICAgICAgICAgfQotIAotICAgICAgICAgICAgICAgICBpZiAoIW4gfHwgIW5bMF0pIHsKLS0gICAgICAgICAgICAgICAgICAgICAgICBsb2dfc3ludGF4KHVuaXQsIExPR19FUlIsIGZpbGVuYW1lLCBsaW5lLCAwLCAiRW1wdHkgZXhlY3V0YWJsZSBuYW1lIG9yIHplcm9ldGggYXJndW1lbnQsIGlnbm9yaW5nOiAlcyIsIHJ2YWx1ZSk7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgbG9nX3N5bnRheCh1bml0LCBMT0dfRVJSLCBmaWxlbmFtZSwgbGluZSwgMCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFbXB0eSBleGVjdXRhYmxlIG5hbWUgb3IgemVyb2V0aCBhcmd1bWVudCVzOiAlcyIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmUgPyAiLCBpZ25vcmluZyIgOiAiIiwgcnZhbHVlKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWdub3JlID8gMCA6IC1FTk9FWEVDOwotICAgICAgICAgICAgICAgICB9Ci0gCi0gICAgICAgICAgICAgICAgIG5jZSA9IG5ldzAoRXhlY0NvbW1hbmQsIDEpOwotQEAgLTEzMTUsOCArMTMyNSwxMCBAQCBpbnQgY29uZmlnX3BhcnNlX2V4ZWNfc2VsaW51eF9jb250ZXh0KAotIAotICAgICAgICAgciA9IHVuaXRfbmFtZV9wcmludGYodSwgcnZhbHVlLCAmayk7Ci0gICAgICAgICBpZiAociA8IDApIHsKLS0gICAgICAgICAgICAgICAgbG9nX3N5bnRheCh1bml0LCBMT0dfRVJSLCBmaWxlbmFtZSwgbGluZSwgciwgIkZhaWxlZCB0byByZXNvbHZlIHNwZWNpZmllcnMsIGlnbm9yaW5nOiAlbSIpOwotLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSsgICAgICAgICAgICAgICAgbG9nX3N5bnRheCh1bml0LCBMT0dfRVJSLCBmaWxlbmFtZSwgbGluZSwgciwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIHJlc29sdmUgc3BlY2lmaWVycyVzOiAlbSIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlID8gIiwgaWdub3JpbmciIDogIiIpOwotKyAgICAgICAgICAgICAgICByZXR1cm4gaWdub3JlID8gMCA6IC1FTk9FWEVDOwotICAgICAgICAgfQotIAotICAgICAgICAgZnJlZShjLT5zZWxpbnV4X2NvbnRleHQpOwotQEAgLTEzNjMsOCArMTM3NSwxMCBAQCBpbnQgY29uZmlnX3BhcnNlX2V4ZWNfYXBwYXJtb3JfcHJvZmlsZSgKLSAKLSAgICAgICAgIHIgPSB1bml0X25hbWVfcHJpbnRmKHUsIHJ2YWx1ZSwgJmspOwotICAgICAgICAgaWYgKHIgPCAwKSB7Ci0tICAgICAgICAgICAgICAgIGxvZ19zeW50YXgodW5pdCwgTE9HX0VSUiwgZmlsZW5hbWUsIGxpbmUsIHIsICJGYWlsZWQgdG8gcmVzb2x2ZSBzcGVjaWZpZXJzLCBpZ25vcmluZzogJW0iKTsKLS0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgICAgICAgICAgIGxvZ19zeW50YXgodW5pdCwgTE9HX0VSUiwgZmlsZW5hbWUsIGxpbmUsIHIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byByZXNvbHZlIHNwZWNpZmllcnMlczogJW0iLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZSA/ICIsIGlnbm9yaW5nIiA6ICIiKTsKLSsgICAgICAgICAgICAgICAgcmV0dXJuIGlnbm9yZSA/IDAgOiAtRU5PRVhFQzsKLSAgICAgICAgIH0KLSAKLSAgICAgICAgIGZyZWUoYy0+YXBwYXJtb3JfcHJvZmlsZSk7Ci1AQCAtMTQxMSw4ICsxNDI1LDEwIEBAIGludCBjb25maWdfcGFyc2VfZXhlY19zbWFja19wcm9jZXNzX2xhYmVsKAotIAotICAgICAgICAgciA9IHVuaXRfbmFtZV9wcmludGYodSwgcnZhbHVlLCAmayk7Ci0gICAgICAgICBpZiAociA8IDApIHsKLS0gICAgICAgICAgICAgICAgbG9nX3N5bnRheCh1bml0LCBMT0dfRVJSLCBmaWxlbmFtZSwgbGluZSwgciwgIkZhaWxlZCB0byByZXNvbHZlIHNwZWNpZmllcnMsIGlnbm9yaW5nOiAlbSIpOwotLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSsgICAgICAgICAgICAgICAgbG9nX3N5bnRheCh1bml0LCBMT0dfRVJSLCBmaWxlbmFtZSwgbGluZSwgciwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIHJlc29sdmUgc3BlY2lmaWVycyVzOiAlbSIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlID8gIiwgaWdub3JpbmciIDogIiIpOwotKyAgICAgICAgICAgICAgICByZXR1cm4gaWdub3JlID8gMCA6IC1FTk9FWEVDOwotICAgICAgICAgfQotIAotICAgICAgICAgZnJlZShjLT5zbWFja19wcm9jZXNzX2xhYmVsKTsKLUBAIC0xNjMwLDE5ICsxNjQ2LDE5IEBAIGludCBjb25maWdfcGFyc2Vfc29ja2V0X3NlcnZpY2UoCi0gCi0gICAgICAgICByID0gdW5pdF9uYW1lX3ByaW50ZihVTklUKHMpLCBydmFsdWUsICZwKTsKLSAgICAgICAgIGlmIChyIDwgMCkgewotLSAgICAgICAgICAgICAgICBsb2dfc3ludGF4KHVuaXQsIExPR19FUlIsIGZpbGVuYW1lLCBsaW5lLCByLCAiRmFpbGVkIHRvIHJlc29sdmUgc3BlY2lmaWVycywgaWdub3Jpbmc6ICVzIiwgcnZhbHVlKTsKLS0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgICAgICAgICAgIGxvZ19zeW50YXgodW5pdCwgTE9HX0VSUiwgZmlsZW5hbWUsIGxpbmUsIHIsICJGYWlsZWQgdG8gcmVzb2x2ZSBzcGVjaWZpZXJzOiAlcyIsIHJ2YWx1ZSk7Ci0rICAgICAgICAgICAgICAgIHJldHVybiAtRU5PRVhFQzsKLSAgICAgICAgIH0KLSAKLSAgICAgICAgIGlmICghZW5kc3dpdGgocCwgIi5zZXJ2aWNlIikpIHsKLS0gICAgICAgICAgICAgICAgbG9nX3N5bnRheCh1bml0LCBMT0dfRVJSLCBmaWxlbmFtZSwgbGluZSwgMCwgIlVuaXQgbXVzdCBiZSBvZiB0eXBlIHNlcnZpY2UsIGlnbm9yaW5nOiAlcyIsIHJ2YWx1ZSk7Ci0tICAgICAgICAgICAgICAgIHJldHVybiAwOwotKyAgICAgICAgICAgICAgICBsb2dfc3ludGF4KHVuaXQsIExPR19FUlIsIGZpbGVuYW1lLCBsaW5lLCAwLCAiVW5pdCBtdXN0IGJlIG9mIHR5cGUgc2VydmljZTogJXMiLCBydmFsdWUpOwotKyAgICAgICAgICAgICAgICByZXR1cm4gLUVOT0VYRUM7Ci0gICAgICAgICB9Ci0gCi0gICAgICAgICByID0gbWFuYWdlcl9sb2FkX3VuaXQoVU5JVChzKS0+bWFuYWdlciwgcCwgTlVMTCwgJmVycm9yLCAmeCk7Ci0gICAgICAgICBpZiAociA8IDApIHsKLS0gICAgICAgICAgICAgICAgbG9nX3N5bnRheCh1bml0LCBMT0dfRVJSLCBmaWxlbmFtZSwgbGluZSwgciwgIkZhaWxlZCB0byBsb2FkIHVuaXQgJXMsIGlnbm9yaW5nOiAlcyIsIHJ2YWx1ZSwgYnVzX2Vycm9yX21lc3NhZ2UoJmVycm9yLCByKSk7Ci0tICAgICAgICAgICAgICAgIHJldHVybiAwOwotKyAgICAgICAgICAgICAgICBsb2dfc3ludGF4KHVuaXQsIExPR19FUlIsIGZpbGVuYW1lLCBsaW5lLCByLCAiRmFpbGVkIHRvIGxvYWQgdW5pdCAlczogJXMiLCBydmFsdWUsIGJ1c19lcnJvcl9tZXNzYWdlKCZlcnJvciwgcikpOwotKyAgICAgICAgICAgICAgICByZXR1cm4gLUVOT0VYRUM7Ci0gICAgICAgICB9Ci0gCi0gICAgICAgICB1bml0X3JlZl9zZXQoJnMtPnNlcnZpY2UsIHgpOwotQEAgLTE4OTMsMTMgKzE5MDksMTMgQEAgaW50IGNvbmZpZ19wYXJzZV91c2VyX2dyb3VwKAotIAotICAgICAgICAgICAgICAgICByID0gdW5pdF9mdWxsX3ByaW50Zih1LCBydmFsdWUsICZrKTsKLSAgICAgICAgICAgICAgICAgaWYgKHIgPCAwKSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgbG9nX3N5bnRheCh1bml0LCBMT0dfRVJSLCBmaWxlbmFtZSwgbGluZSwgciwgIkZhaWxlZCB0byByZXNvbHZlIHVuaXQgc3BlY2lmaWVycyBpbiAlcywgaWdub3Jpbmc6ICVtIiwgcnZhbHVlKTsKLS0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSsgICAgICAgICAgICAgICAgICAgICAgICBsb2dfc3ludGF4KHVuaXQsIExPR19FUlIsIGZpbGVuYW1lLCBsaW5lLCByLCAiRmFpbGVkIHRvIHJlc29sdmUgdW5pdCBzcGVjaWZpZXJzIGluICVzOiAlbSIsIHJ2YWx1ZSk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9FWEVDOwotICAgICAgICAgICAgICAgICB9Ci0gCi0gICAgICAgICAgICAgICAgIGlmICghdmFsaWRfdXNlcl9ncm91cF9uYW1lX29yX2lkKGspKSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgbG9nX3N5bnRheCh1bml0LCBMT0dfRVJSLCBmaWxlbmFtZSwgbGluZSwgMCwgIkludmFsaWQgdXNlci9ncm91cCBuYW1lIG9yIG51bWVyaWMgSUQsIGlnbm9yaW5nOiAlcyIsIGspOwotLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19zeW50YXgodW5pdCwgTE9HX0VSUiwgZmlsZW5hbWUsIGxpbmUsIDAsICJJbnZhbGlkIHVzZXIvZ3JvdXAgbmFtZSBvciBudW1lcmljIElEOiAlcyIsIGspOwotKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRU5PRVhFQzsKLSAgICAgICAgICAgICAgICAgfQotIAotICAgICAgICAgICAgICAgICBuID0gazsKLUBAIC0xOTU3LDE5ICsxOTczLDE5IEBAIGludCBjb25maWdfcGFyc2VfdXNlcl9ncm91cF9zdHJ2KAotICAgICAgICAgICAgICAgICBpZiAociA9PSAtRU5PTUVNKQotICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2dfb29tKCk7Ci0gICAgICAgICAgICAgICAgIGlmIChyIDwgMCkgewotLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19zeW50YXgodW5pdCwgTE9HX0VSUiwgZmlsZW5hbWUsIGxpbmUsIHIsICJJbnZhbGlkIHN5bnRheCwgaWdub3Jpbmc6ICVzIiwgcnZhbHVlKTsKLS0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSsgICAgICAgICAgICAgICAgICAgICAgICBsb2dfc3ludGF4KHVuaXQsIExPR19FUlIsIGZpbGVuYW1lLCBsaW5lLCByLCAiSW52YWxpZCBzeW50YXg6ICVzIiwgcnZhbHVlKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT0VYRUM7Ci0gICAgICAgICAgICAgICAgIH0KLSAKLSAgICAgICAgICAgICAgICAgciA9IHVuaXRfZnVsbF9wcmludGYodSwgd29yZCwgJmspOwotICAgICAgICAgICAgICAgICBpZiAociA8IDApIHsKLS0gICAgICAgICAgICAgICAgICAgICAgICBsb2dfc3ludGF4KHVuaXQsIExPR19FUlIsIGZpbGVuYW1lLCBsaW5lLCByLCAiRmFpbGVkIHRvIHJlc29sdmUgdW5pdCBzcGVjaWZpZXJzIGluICVzLCBpZ25vcmluZzogJW0iLCB3b3JkKTsKLS0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSsgICAgICAgICAgICAgICAgICAgICAgICBsb2dfc3ludGF4KHVuaXQsIExPR19FUlIsIGZpbGVuYW1lLCBsaW5lLCByLCAiRmFpbGVkIHRvIHJlc29sdmUgdW5pdCBzcGVjaWZpZXJzIGluICVzOiAlbSIsIHdvcmQpOwotKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRU5PRVhFQzsKLSAgICAgICAgICAgICAgICAgfQotIAotICAgICAgICAgICAgICAgICBpZiAoIXZhbGlkX3VzZXJfZ3JvdXBfbmFtZV9vcl9pZChrKSkgewotLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19zeW50YXgodW5pdCwgTE9HX0VSUiwgZmlsZW5hbWUsIGxpbmUsIDAsICJJbnZhbGlkIHVzZXIvZ3JvdXAgbmFtZSBvciBudW1lcmljIElELCBpZ25vcmluZzogJXMiLCBrKTsKLS0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSsgICAgICAgICAgICAgICAgICAgICAgICBsb2dfc3ludGF4KHVuaXQsIExPR19FUlIsIGZpbGVuYW1lLCBsaW5lLCAwLCAiSW52YWxpZCB1c2VyL2dyb3VwIG5hbWUgb3IgbnVtZXJpYyBJRDogJXMiLCBrKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT0VYRUM7Ci0gICAgICAgICAgICAgICAgIH0KLSAKLSAgICAgICAgICAgICAgICAgciA9IHN0cnZfcHVzaCh1c2Vycywgayk7Ci1AQCAtMjEyOCwyNSArMjE0NCwyOCBAQCBpbnQgY29uZmlnX3BhcnNlX3dvcmtpbmdfZGlyZWN0b3J5KAotIAotICAgICAgICAgICAgICAgICByID0gdW5pdF9mdWxsX3ByaW50Zih1LCBydmFsdWUsICZrKTsKLSAgICAgICAgICAgICAgICAgaWYgKHIgPCAwKSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgbG9nX3N5bnRheCh1bml0LCBMT0dfRVJSLCBmaWxlbmFtZSwgbGluZSwgciwgIkZhaWxlZCB0byByZXNvbHZlIHVuaXQgc3BlY2lmaWVycyBpbiB3b3JraW5nIGRpcmVjdG9yeSBwYXRoICclcycsIGlnbm9yaW5nOiAlbSIsIHJ2YWx1ZSk7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgbG9nX3N5bnRheCh1bml0LCBMT0dfRVJSLCBmaWxlbmFtZSwgbGluZSwgciwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gcmVzb2x2ZSB1bml0IHNwZWNpZmllcnMgaW4gd29ya2luZyBkaXJlY3RvcnkgcGF0aCAnJXMnJXM6ICVtIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ2YWx1ZSwgbWlzc2luZ19vayA/ICIsIGlnbm9yaW5nIiA6ICIiKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWlzc2luZ19vayA/IDAgOiAtRU5PRVhFQzsKLSAgICAgICAgICAgICAgICAgfQotIAotICAgICAgICAgICAgICAgICBwYXRoX2tpbGxfc2xhc2hlcyhrKTsKLSAKLSAgICAgICAgICAgICAgICAgaWYgKCF1dGY4X2lzX3ZhbGlkKGspKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgbG9nX3N5bnRheF9pbnZhbGlkX3V0ZjgodW5pdCwgTE9HX0VSUiwgZmlsZW5hbWUsIGxpbmUsIHJ2YWx1ZSk7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1pc3Npbmdfb2sgPyAwIDogLUVOT0VYRUM7Ci0gICAgICAgICAgICAgICAgIH0KLSAKLSAgICAgICAgICAgICAgICAgaWYgKCFwYXRoX2lzX2Fic29sdXRlKGspKSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgbG9nX3N5bnRheCh1bml0LCBMT0dfRVJSLCBmaWxlbmFtZSwgbGluZSwgMCwgIldvcmtpbmcgZGlyZWN0b3J5IHBhdGggJyVzJyBpcyBub3QgYWJzb2x1dGUsIGlnbm9yaW5nLiIsIHJ2YWx1ZSk7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgbG9nX3N5bnRheCh1bml0LCBMT0dfRVJSLCBmaWxlbmFtZSwgbGluZSwgMCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXb3JraW5nIGRpcmVjdG9yeSBwYXRoICclcycgaXMgbm90IGFic29sdXRlJXMuIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ2YWx1ZSwgbWlzc2luZ19vayA/ICIsIGlnbm9yaW5nIiA6ICIiKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWlzc2luZ19vayA/IDAgOiAtRU5PRVhFQzsKLSAgICAgICAgICAgICAgICAgfQotIAotLSAgICAgICAgICAgICAgICBmcmVlX2FuZF9yZXBsYWNlKGMtPndvcmtpbmdfZGlyZWN0b3J5LCBrKTsKLS0KLSAgICAgICAgICAgICAgICAgYy0+d29ya2luZ19kaXJlY3RvcnlfaG9tZSA9IGZhbHNlOwotKyAgICAgICAgICAgICAgICBmcmVlX2FuZF9yZXBsYWNlKGMtPndvcmtpbmdfZGlyZWN0b3J5LCBrKTsKLSAgICAgICAgIH0KLSAKLSAgICAgICAgIGMtPndvcmtpbmdfZGlyZWN0b3J5X21pc3Npbmdfb2sgPSBtaXNzaW5nX29rOwotQEAgLTQyMjgsOCArNDI0NywxMSBAQCBpbnQgdW5pdF9sb2FkX2ZyYWdtZW50KFVuaXQgKnUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcjsKLSAKLSAgICAgICAgICAgICAgICAgciA9IGxvYWRfZnJvbV9wYXRoKHUsIGspOwotLSAgICAgICAgICAgICAgICBpZiAociA8IDApCi0rICAgICAgICAgICAgICAgIGlmIChyIDwgMCkgewotKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyID09IC1FTk9FWEVDKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nX3VuaXRfbm90aWNlKHUsICJVbml0IGNvbmZpZ3VyYXRpb24gaGFzIGZhdGFsIGVycm9yLCB1bml0IHdpbGwgbm90IGJlIHN0YXJ0ZWQuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHI7Ci0rICAgICAgICAgICAgICAgIH0KLSAKLSAgICAgICAgICAgICAgICAgaWYgKHUtPmxvYWRfc3RhdGUgPT0gVU5JVF9TVFVCKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgU0VUX0ZPUkVBQ0godCwgdS0+bmFtZXMsIGkpIHsKLWRpZmYgLS1naXQgYS9zcmMvdGVzdC90ZXN0LXVuaXQtZmlsZS5jIGIvc3JjL3Rlc3QvdGVzdC11bml0LWZpbGUuYwotaW5kZXggMTJmNDhiZjQzLi5mZDc5N2I1ODcgMTAwNjQ0Ci0tLS0gYS9zcmMvdGVzdC90ZXN0LXVuaXQtZmlsZS5jCi0rKysgYi9zcmMvdGVzdC90ZXN0LXVuaXQtZmlsZS5jCi1AQCAtMTQ2LDcgKzE0Niw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfY29uZmlnX3BhcnNlX2V4ZWModm9pZCkgewotICAgICAgICAgciA9IGNvbmZpZ19wYXJzZV9leGVjKE5VTEwsICJmYWtlIiwgNCwgInNlY3Rpb24iLCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJMVmFsdWUiLCAwLCAiL1JWYWx1ZS8gYXJndjAgcjEiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjLCB1KTsKLS0gICAgICAgIGFzc2VydF9zZShyID09IDApOwotKyAgICAgICAgYXNzZXJ0X3NlKHIgPT0gLUVOT0VYRUMpOwotICAgICAgICAgYXNzZXJ0X3NlKGMxLT5jb21tYW5kX25leHQgPT0gTlVMTCk7Ci0gCi0gICAgICAgICBsb2dfaW5mbygiLyogaG9ub3VyX2FyZ3YwICovIik7Ci1AQCAtMTYxLDcgKzE2MSw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfY29uZmlnX3BhcnNlX2V4ZWModm9pZCkgewotICAgICAgICAgciA9IGNvbmZpZ19wYXJzZV9leGVjKE5VTEwsICJmYWtlIiwgMywgInNlY3Rpb24iLCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJMVmFsdWUiLCAwLCAiQC9SVmFsdWUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjLCB1KTsKLS0gICAgICAgIGFzc2VydF9zZShyID09IDApOwotKyAgICAgICAgYXNzZXJ0X3NlKHIgPT0gLUVOT0VYRUMpOwotICAgICAgICAgYXNzZXJ0X3NlKGMxLT5jb21tYW5kX25leHQgPT0gTlVMTCk7Ci0gCi0gICAgICAgICBsb2dfaW5mbygiLyogbm8gY29tbWFuZCwgd2hpdGVzcGFjZSBvbmx5LCByZXNldCAqLyIpOwotQEAgLTIyMCw3ICsyMjAsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2NvbmZpZ19wYXJzZV9leGVjKHZvaWQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLUAvUlZhbHVlIGFyZ3YwIHIxIDsgOyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi9nb28vZ29vIGJvbyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmMsIHUpOwotLSAgICAgICAgYXNzZXJ0X3NlKHIgPj0gMCk7Ci0rICAgICAgICBhc3NlcnRfc2UociA9PSAtRU5PRVhFQyk7Ci0gICAgICAgICBjMSA9IGMxLT5jb21tYW5kX25leHQ7Ci0gICAgICAgICBjaGVja19leGVjY29tbWFuZChjMSwgIi9SVmFsdWUiLCAiYXJndjAiLCAicjEiLCBOVUxMLCB0cnVlKTsKLSAKLUBAIC0zNzQsNyArMzc0LDcgQEAgc3RhdGljIHZvaWQgdGVzdF9jb25maWdfcGFyc2VfZXhlYyh2b2lkKSB7Ci0gICAgICAgICAgICAgICAgIHIgPSBjb25maWdfcGFyc2VfZXhlYyhOVUxMLCAiZmFrZSIsIDQsICJzZWN0aW9uIiwgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJMVmFsdWUiLCAwLCBwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmMsIHUpOwotLSAgICAgICAgICAgICAgICBhc3NlcnRfc2UociA9PSAwKTsKLSsgICAgICAgICAgICAgICAgYXNzZXJ0X3NlKHIgPT0gLUVOT0VYRUMpOwotICAgICAgICAgICAgICAgICBhc3NlcnRfc2UoYzEtPmNvbW1hbmRfbmV4dCA9PSBOVUxMKTsKLSAgICAgICAgIH0KLSAKLUBAIC00MDEsMjEgKzQwMSwyMSBAQCBzdGF0aWMgdm9pZCB0ZXN0X2NvbmZpZ19wYXJzZV9leGVjKHZvaWQpIHsKLSAgICAgICAgIHIgPSBjb25maWdfcGFyc2VfZXhlYyhOVUxMLCAiZmFrZSIsIDQsICJzZWN0aW9uIiwgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTFZhbHVlIiwgMCwgIi9wYXRoXFwiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjLCB1KTsKLS0gICAgICAgIGFzc2VydF9zZShyID09IDApOwotKyAgICAgICAgYXNzZXJ0X3NlKHIgPT0gLUVOT0VYRUMpOwotICAgICAgICAgYXNzZXJ0X3NlKGMxLT5jb21tYW5kX25leHQgPT0gTlVMTCk7Ci0gCi0gICAgICAgICBsb2dfaW5mbygiLyogbWlzc2luZyBlbmRpbmcgJyAqLyIpOwotICAgICAgICAgciA9IGNvbmZpZ19wYXJzZV9leGVjKE5VTEwsICJmYWtlIiwgNCwgInNlY3Rpb24iLCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJMVmFsdWUiLCAwLCAiL3BhdGggJ2ZvbyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmMsIHUpOwotLSAgICAgICAgYXNzZXJ0X3NlKHIgPT0gMCk7Ci0rICAgICAgICBhc3NlcnRfc2UociA9PSAtRU5PRVhFQyk7Ci0gICAgICAgICBhc3NlcnRfc2UoYzEtPmNvbW1hbmRfbmV4dCA9PSBOVUxMKTsKLSAKLSAgICAgICAgIGxvZ19pbmZvKCIvKiBtaXNzaW5nIGVuZGluZyAnIHdpdGggdHJhaWxpbmcgYmFja3NsYXNoICovIik7Ci0gICAgICAgICByID0gY29uZmlnX3BhcnNlX2V4ZWMoTlVMTCwgImZha2UiLCA0LCAic2VjdGlvbiIsIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkxWYWx1ZSIsIDAsICIvcGF0aCAnZm9vXFwiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjLCB1KTsKLS0gICAgICAgIGFzc2VydF9zZShyID09IDApOwotKyAgICAgICAgYXNzZXJ0X3NlKHIgPT0gLUVOT0VYRUMpOwotICAgICAgICAgYXNzZXJ0X3NlKGMxLT5jb21tYW5kX25leHQgPT0gTlVMTCk7Ci0gCi0gICAgICAgICBsb2dfaW5mbygiLyogaW52YWxpZCBzcGFjZSBiZXR3ZWVuIG1vZGlmaWVycyAqLyIpOwotLS0gCi0yLjExLjAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1tYWluLXNraXAtbWFueS1pbml0aWFsaXphdGlvbi1zdGVwcy13aGVuLXJ1bm5pbmctaW4tLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLW1haW4tc2tpcC1tYW55LWluaXRpYWxpemF0aW9uLXN0ZXBzLXdoZW4tcnVubmluZy1pbi0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTAzM2IwNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1tYWluLXNraXAtbWFueS1pbml0aWFsaXphdGlvbi1zdGVwcy13aGVuLXJ1bm5pbmctaW4tLnBhdGNoCkBAIC0wLDAgKzEsMTYzIEBACitGcm9tIGRlYTM3NGU4OThhNzQ5YTA0NzRiNzJiMjAxNWNjYTkwMDliMTQzMmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBMZW5uYXJ0IFBvZXR0ZXJpbmcgPGxlbm5hcnRAcG9ldHRlcmluZy5uZXQ+CitEYXRlOiBXZWQsIDEzIFNlcCAyMDE3IDEwOjMxOjQwICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIG1haW46IHNraXAgbWFueSBpbml0aWFsaXphdGlvbiBzdGVwcyB3aGVuIHJ1bm5pbmcgaW4gLS10ZXN0CisgbW9kZQorCitNb3N0IGltcG9ydGFudGx5LCBkb24ndCBjb2xsZWN0IG9wZW4gc29ja2V0IGFjdGl2YXRpb24gZmRzIHdoZW4gaW4KKy0tdGVzdCBtb2RlLiBUaGlzIHNwZWNpZmljYWxseSBjcmVhdGVkIGEgcHJvYmxlbSBiZWNhdXNlIHdlIGludm9rZQorcGFnZXJfb3BlbigpIGJlZm9yZWhhbmQgKHdoaWNoIHRoZXNlIGRheXMgbWFrZXMgY29waWVzIG9mIHRoZSBvcmlnaW5hbAorc3Rkb3V0L3N0ZGVyciBpbiBvcmRlciB0byBiZSBhYmxlIHRvIHJlc3RvcmUgdGhlbSB3aGVuIHRoZSBwYWdlciBnb2VzCithd2F5KSBhbmQgd2UgbWlnaHQgbWlzdGFrZW5seSB0aGUgZmQgY29waWVzIGl0IGNyZWF0ZXMgYXMgc29ja2V0CithY3RpdmF0aW9uIGZkcy4KKworRml4ZXM6ICM2MzgzCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogQ2F0YWxpbiBFbmFjaGUgPGNhdGFsaW4uZW5hY2hlQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvY29yZS9tYWluLmMgfCAxMDggKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNTYgaW5zZXJ0aW9ucygrKSwgNTIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvY29yZS9tYWluLmMgYi9zcmMvY29yZS9tYWluLmMKK2luZGV4IDExYWM5Y2YuLmQxYTUzYTUgMTAwNjQ0CistLS0gYS9zcmMvY29yZS9tYWluLmMKKysrKyBiL3NyYy9jb3JlL21haW4uYworQEAgLTE2NzksMjAgKzE2NzksMjIgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkgeworICAgICAgICAgbG9nX2Nsb3NlKCk7CisgCisgICAgICAgICAvKiBSZW1lbWJlciBvcGVuIGZpbGUgZGVzY3JpcHRvcnMgZm9yIGxhdGVyIGRlc2VyaWFsaXphdGlvbiAqLworLSAgICAgICAgciA9IGZkc2V0X25ld19maWxsKCZmZHMpOworLSAgICAgICAgaWYgKHIgPCAwKSB7CistICAgICAgICAgICAgICAgIGxvZ19lbWVyZ2VuY3lfZXJybm8ociwgIkZhaWxlZCB0byBhbGxvY2F0ZSBmZCBzZXQ6ICVtIik7CistICAgICAgICAgICAgICAgIGVycm9yX21lc3NhZ2UgPSAiRmFpbGVkIHRvIGFsbG9jYXRlIGZkIHNldCI7CistICAgICAgICAgICAgICAgIGdvdG8gZmluaXNoOworLSAgICAgICAgfSBlbHNlCistICAgICAgICAgICAgICAgIGZkc2V0X2Nsb2V4ZWMoZmRzLCB0cnVlKTsKKysgICAgICAgIGlmIChhcmdfYWN0aW9uID09IEFDVElPTl9SVU4pIHsKKysgICAgICAgICAgICAgICAgciA9IGZkc2V0X25ld19maWxsKCZmZHMpOworKyAgICAgICAgICAgICAgICBpZiAociA8IDApIHsKKysgICAgICAgICAgICAgICAgICAgICAgICBsb2dfZW1lcmdlbmN5X2Vycm5vKHIsICJGYWlsZWQgdG8gYWxsb2NhdGUgZmQgc2V0OiAlbSIpOworKyAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX21lc3NhZ2UgPSAiRmFpbGVkIHRvIGFsbG9jYXRlIGZkIHNldCI7CisrICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmaW5pc2g7CisrICAgICAgICAgICAgICAgIH0gZWxzZQorKyAgICAgICAgICAgICAgICAgICAgICAgIGZkc2V0X2Nsb2V4ZWMoZmRzLCB0cnVlKTsKKyAKKy0gICAgICAgIGlmIChhcmdfc2VyaWFsaXphdGlvbikKKy0gICAgICAgICAgICAgICAgYXNzZXJ0X3NlKGZkc2V0X3JlbW92ZShmZHMsIGZpbGVubyhhcmdfc2VyaWFsaXphdGlvbikpID49IDApOworKyAgICAgICAgICAgICAgICBpZiAoYXJnX3NlcmlhbGl6YXRpb24pCisrICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X3NlKGZkc2V0X3JlbW92ZShmZHMsIGZpbGVubyhhcmdfc2VyaWFsaXphdGlvbikpID49IDApOworIAorLSAgICAgICAgaWYgKGFyZ19zeXN0ZW0pCistICAgICAgICAgICAgICAgIC8qIEJlY29tZSBhIHNlc3Npb24gbGVhZGVyIGlmIHdlIGFyZW4ndCBvbmUgeWV0LiAqLworLSAgICAgICAgICAgICAgICBzZXRzaWQoKTsKKysgICAgICAgICAgICAgICAgaWYgKGFyZ19zeXN0ZW0pCisrICAgICAgICAgICAgICAgICAgICAgICAgLyogQmVjb21lIGEgc2Vzc2lvbiBsZWFkZXIgaWYgd2UgYXJlbid0IG9uZSB5ZXQuICovCisrICAgICAgICAgICAgICAgICAgICAgICAgc2V0c2lkKCk7CisrICAgICAgICB9CisgCisgICAgICAgICAvKiBNb3ZlIG91dCBvZiB0aGUgd2F5LCBzbyB0aGF0IHdlIHdvbid0IGJsb2NrIHVubW91bnRzICovCisgICAgICAgICBhc3NlcnRfc2UoY2hkaXIoIi8iKSA9PSAwKTsKK0BAIC0xNzYyLDU2ICsxNzY0LDU4IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ19hY3Rpb24gPT0gQUNUSU9OX1RFU1QgPyAiIHRlc3QiIDogIiIsIGdldHVpZCgpLCB0KTsKKyAgICAgICAgIH0KKyAKKy0gICAgICAgIGlmIChhcmdfc3lzdGVtICYmICFza2lwX3NldHVwKSB7CistICAgICAgICAgICAgICAgIGlmIChhcmdfc2hvd19zdGF0dXMgPiAwKQorLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c193ZWxjb21lKCk7CisrICAgICAgICBpZiAoYXJnX2FjdGlvbiA9PSBBQ1RJT05fUlVOKSB7CisrICAgICAgICAgICAgICAgIGlmIChhcmdfc3lzdGVtICYmICFza2lwX3NldHVwKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFyZ19zaG93X3N0YXR1cyA+IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNfd2VsY29tZSgpOworIAorLSAgICAgICAgICAgICAgICBob3N0bmFtZV9zZXR1cCgpOworLSAgICAgICAgICAgICAgICBtYWNoaW5lX2lkX3NldHVwKE5VTEwsIGFyZ19tYWNoaW5lX2lkLCBOVUxMKTsKKy0gICAgICAgICAgICAgICAgbG9vcGJhY2tfc2V0dXAoKTsKKy0gICAgICAgICAgICAgICAgYnVtcF91bml4X21heF9kZ3JhbV9xbGVuKCk7CisrICAgICAgICAgICAgICAgICAgICAgICAgaG9zdG5hbWVfc2V0dXAoKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lX2lkX3NldHVwKE5VTEwsIGFyZ19tYWNoaW5lX2lkLCBOVUxMKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBsb29wYmFja19zZXR1cCgpOworKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1bXBfdW5peF9tYXhfZGdyYW1fcWxlbigpOworIAorLSAgICAgICAgICAgICAgICB0ZXN0X3VzcigpOworLSAgICAgICAgfQorKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfdXNyKCk7CisrICAgICAgICAgICAgICAgIH0KKyAKKy0gICAgICAgIGlmIChhcmdfc3lzdGVtICYmIGFyZ19ydW50aW1lX3dhdGNoZG9nID4gMCAmJiBhcmdfcnVudGltZV93YXRjaGRvZyAhPSBVU0VDX0lORklOSVRZKQorLSAgICAgICAgICAgICAgICB3YXRjaGRvZ19zZXRfdGltZW91dCgmYXJnX3J1bnRpbWVfd2F0Y2hkb2cpOworKyAgICAgICAgICAgICAgICBpZiAoYXJnX3N5c3RlbSAmJiBhcmdfcnVudGltZV93YXRjaGRvZyA+IDAgJiYgYXJnX3J1bnRpbWVfd2F0Y2hkb2cgIT0gVVNFQ19JTkZJTklUWSkKKysgICAgICAgICAgICAgICAgICAgICAgICB3YXRjaGRvZ19zZXRfdGltZW91dCgmYXJnX3J1bnRpbWVfd2F0Y2hkb2cpOworIAorLSAgICAgICAgaWYgKGFyZ190aW1lcl9zbGFja19uc2VjICE9IE5TRUNfSU5GSU5JVFkpCistICAgICAgICAgICAgICAgIGlmIChwcmN0bChQUl9TRVRfVElNRVJTTEFDSywgYXJnX3RpbWVyX3NsYWNrX25zZWMpIDwgMCkKKy0gICAgICAgICAgICAgICAgICAgICAgICBsb2dfZXJyb3JfZXJybm8oZXJybm8sICJGYWlsZWQgdG8gYWRqdXN0IHRpbWVyIHNsYWNrOiAlbSIpOworKyAgICAgICAgICAgICAgICBpZiAoYXJnX3RpbWVyX3NsYWNrX25zZWMgIT0gTlNFQ19JTkZJTklUWSkKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJjdGwoUFJfU0VUX1RJTUVSU0xBQ0ssIGFyZ190aW1lcl9zbGFja19uc2VjKSA8IDApCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfZXJyb3JfZXJybm8oZXJybm8sICJGYWlsZWQgdG8gYWRqdXN0IHRpbWVyIHNsYWNrOiAlbSIpOworIAorLSAgICAgICAgaWYgKGFyZ19zeXN0ZW0gJiYgIWNhcF90ZXN0X2FsbChhcmdfY2FwYWJpbGl0eV9ib3VuZGluZ19zZXQpKSB7CistICAgICAgICAgICAgICAgIHIgPSBjYXBhYmlsaXR5X2JvdW5kaW5nX3NldF9kcm9wX3VzZXJtb2RlKGFyZ19jYXBhYmlsaXR5X2JvdW5kaW5nX3NldCk7CistICAgICAgICAgICAgICAgIGlmIChyIDwgMCkgeworLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19lbWVyZ2VuY3lfZXJybm8ociwgIkZhaWxlZCB0byBkcm9wIGNhcGFiaWxpdHkgYm91bmRpbmcgc2V0IG9mIHVzZXJtb2RlIGhlbHBlcnM6ICVtIik7CistICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfbWVzc2FnZSA9ICJGYWlsZWQgdG8gZHJvcCBjYXBhYmlsaXR5IGJvdW5kaW5nIHNldCBvZiB1c2VybW9kZSBoZWxwZXJzIjsKKy0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZpbmlzaDsKKy0gICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgICByID0gY2FwYWJpbGl0eV9ib3VuZGluZ19zZXRfZHJvcChhcmdfY2FwYWJpbGl0eV9ib3VuZGluZ19zZXQsIHRydWUpOworLSAgICAgICAgICAgICAgICBpZiAociA8IDApIHsKKy0gICAgICAgICAgICAgICAgICAgICAgICBsb2dfZW1lcmdlbmN5X2Vycm5vKHIsICJGYWlsZWQgdG8gZHJvcCBjYXBhYmlsaXR5IGJvdW5kaW5nIHNldDogJW0iKTsKKy0gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9tZXNzYWdlID0gIkZhaWxlZCB0byBkcm9wIGNhcGFiaWxpdHkgYm91bmRpbmcgc2V0IjsKKy0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZpbmlzaDsKKysgICAgICAgICAgICAgICAgaWYgKGFyZ19zeXN0ZW0gJiYgIWNhcF90ZXN0X2FsbChhcmdfY2FwYWJpbGl0eV9ib3VuZGluZ19zZXQpKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgciA9IGNhcGFiaWxpdHlfYm91bmRpbmdfc2V0X2Ryb3BfdXNlcm1vZGUoYXJnX2NhcGFiaWxpdHlfYm91bmRpbmdfc2V0KTsKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA8IDApIHsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19lbWVyZ2VuY3lfZXJybm8ociwgIkZhaWxlZCB0byBkcm9wIGNhcGFiaWxpdHkgYm91bmRpbmcgc2V0IG9mIHVzZXJtb2RlIGhlbHBlcnM6ICVtIik7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9tZXNzYWdlID0gIkZhaWxlZCB0byBkcm9wIGNhcGFiaWxpdHkgYm91bmRpbmcgc2V0IG9mIHVzZXJtb2RlIGhlbHBlcnMiOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmaW5pc2g7CisrICAgICAgICAgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBjYXBhYmlsaXR5X2JvdW5kaW5nX3NldF9kcm9wKGFyZ19jYXBhYmlsaXR5X2JvdW5kaW5nX3NldCwgdHJ1ZSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPCAwKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfZW1lcmdlbmN5X2Vycm5vKHIsICJGYWlsZWQgdG8gZHJvcCBjYXBhYmlsaXR5IGJvdW5kaW5nIHNldDogJW0iKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX21lc3NhZ2UgPSAiRmFpbGVkIHRvIGRyb3AgY2FwYWJpbGl0eSBib3VuZGluZyBzZXQiOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmaW5pc2g7CisrICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICB9CistICAgICAgICB9CisgCistICAgICAgICBpZiAoYXJnX3N5c2NhbGxfYXJjaHMpIHsKKy0gICAgICAgICAgICAgICAgciA9IGVuZm9yY2Vfc3lzY2FsbF9hcmNocyhhcmdfc3lzY2FsbF9hcmNocyk7CistICAgICAgICAgICAgICAgIGlmIChyIDwgMCkgeworLSAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX21lc3NhZ2UgPSAiRmFpbGVkIHRvIHNldCBzeXNjYWxsIGFyY2hpdGVjdHVyZXMiOworLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmluaXNoOworKyAgICAgICAgICAgICAgICBpZiAoYXJnX3N5c2NhbGxfYXJjaHMpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICByID0gZW5mb3JjZV9zeXNjYWxsX2FyY2hzKGFyZ19zeXNjYWxsX2FyY2hzKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA8IDApIHsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX21lc3NhZ2UgPSAiRmFpbGVkIHRvIHNldCBzeXNjYWxsIGFyY2hpdGVjdHVyZXMiOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmaW5pc2g7CisrICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICB9CistICAgICAgICB9CisgCistICAgICAgICBpZiAoIWFyZ19zeXN0ZW0pCistICAgICAgICAgICAgICAgIC8qIEJlY29tZSByZWFwZXIgb2Ygb3VyIGNoaWxkcmVuICovCistICAgICAgICAgICAgICAgIGlmIChwcmN0bChQUl9TRVRfQ0hJTERfU1VCUkVBUEVSLCAxKSA8IDApCistICAgICAgICAgICAgICAgICAgICAgICAgbG9nX3dhcm5pbmdfZXJybm8oZXJybm8sICJGYWlsZWQgdG8gbWFrZSB1cyBhIHN1YnJlYXBlcjogJW0iKTsKKysgICAgICAgICAgICAgICAgaWYgKCFhcmdfc3lzdGVtKQorKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIEJlY29tZSByZWFwZXIgb2Ygb3VyIGNoaWxkcmVuICovCisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByY3RsKFBSX1NFVF9DSElMRF9TVUJSRUFQRVIsIDEpIDwgMCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ193YXJuaW5nX2Vycm5vKGVycm5vLCAiRmFpbGVkIHRvIG1ha2UgdXMgYSBzdWJyZWFwZXI6ICVtIik7CisgCistICAgICAgICBpZiAoYXJnX3N5c3RlbSkKKy0gICAgICAgICAgICAgICAgLyogQnVtcCB1cCBSTElNSVRfTk9GSUxFIGZvciBzeXN0ZW1kIGl0c2VsZiAqLworLSAgICAgICAgICAgICAgICAodm9pZCkgYnVtcF9ybGltaXRfbm9maWxlKCZzYXZlZF9ybGltaXRfbm9maWxlKTsKKysgICAgICAgICAgICAgICAgaWYgKGFyZ19zeXN0ZW0pCisrICAgICAgICAgICAgICAgICAgICAgICAgLyogQnVtcCB1cCBSTElNSVRfTk9GSUxFIGZvciBzeXN0ZW1kIGl0c2VsZiAqLworKyAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKSBidW1wX3JsaW1pdF9ub2ZpbGUoJnNhdmVkX3JsaW1pdF9ub2ZpbGUpOworKyAgICAgICAgfQorIAorICAgICAgICAgciA9IG1hbmFnZXJfbmV3KGFyZ19zeXN0ZW0gPyBVTklUX0ZJTEVfU1lTVEVNIDogVU5JVF9GSUxFX1VTRVIsIGFyZ19hY3Rpb24gPT0gQUNUSU9OX1RFU1QsICZtKTsKKyAgICAgICAgIGlmIChyIDwgMCkgeworLS0gCisyLjEwLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAyLXNyYy1iYXNpYy1taXNzaW5nLmgtY2hlY2stZm9yLW1pc3Npbmctc3RybmR1cGEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDItc3JjLWJhc2ljLW1pc3NpbmcuaC1jaGVjay1mb3ItbWlzc2luZy1zdHJuZHVwYS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NGMxMzZiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAyLXNyYy1iYXNpYy1taXNzaW5nLmgtY2hlY2stZm9yLW1pc3Npbmctc3RybmR1cGEucGF0Y2gKQEAgLTAsMCArMSwxMDQgQEAKK0Zyb20gNTg1YWJkODkxYTU2NDA5OTE1MzE0MzA0MTAxY2FjMjZiNDJjMDc2YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgorRGF0ZTogTW9uLCAyMyBPY3QgMjAxNyAxMDo0NTo0NiAtMDcwMAorU3ViamVjdDogW1BBVENIIDAyLzEyXSBzcmMvYmFzaWMvbWlzc2luZy5oOiBjaGVjayBmb3IgbWlzc2luZyBzdHJuZHVwYQorCitpbmNsdWRlIG1pc3NpbmcuaCAgZm9yIGRlZmluaXRpb24gb2Ygc3RybmR1cGEKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBjb25maWd1cmUuYWMgICAgICAgICAgIHwgIDEgKworIHNyYy9iYXNpYy9taXNzaW5nLmggICAgfCAxMSArKysrKysrKysrKworIHNyYy9iYXNpYy9ta2Rpci5jICAgICAgfCAgMSArCisgc3JjL2Jhc2ljL3BhcnNlLXV0aWwuYyB8ICAxICsKKyBzcmMvc2hhcmVkL3BhZ2VyLmMgICAgIHwgIDEgKworIHNyYy9zaGFyZWQvdWlkLXJhbmdlLmMgfCAgMSArCisgNiBmaWxlcyBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGVmY2RjNmMxNi4uY2QwMzVhOTcxIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0zMjksNiArMzI5LDcgQEAgQUNfQ0hFQ0tfREVDTFMoWworICAgICAgICAgcGl2b3Rfcm9vdCwKKyAgICAgICAgIG5hbWVfdG9faGFuZGxlX2F0LAorICAgICAgICAgc2V0bnMsCisrICAgICAgICBzdHJuZHVwYSwKKyAgICAgICAgIHJlbmFtZWF0MiwKKyAgICAgICAgIGtjbXAsCisgICAgICAgICBrZXljdGwsCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21pc3NpbmcuaCBiL3NyYy9iYXNpYy9taXNzaW5nLmgKK2luZGV4IDA0OTEyYmY1Mi4uODAwOTg4OGFkIDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL21pc3NpbmcuaAorKysrIGIvc3JjL2Jhc2ljL21pc3NpbmcuaAorQEAgLTExMDQsNiArMTEwNCwxNyBAQCB0eXBlZGVmIGludDMyX3Qga2V5X3NlcmlhbF90OworICNkZWZpbmUgS0VZQ1RMX0RFU0NSSUJFIDYKKyAjZW5kaWYKKyAKKysjaWYgIUhBVkVfREVDTF9TVFJORFVQQQorKyNkZWZpbmUgc3RybmR1cGEocywgbikgXAorKyAgKHsgXAorKyAgICBjb25zdCBjaGFyICpfX29sZCA9IChzKTsgXAorKyAgICBzaXplX3QgX19sZW4gPSBzdHJubGVuKF9fb2xkLCAobikpOyBcCisrICAgIGNoYXIgKl9fbmV3ID0gKGNoYXIgKilhbGxvY2EoX19sZW4gKyAxKTsgXAorKyAgICBfX25ld1tfX2xlbl0gPSAnXDAnOyBcCisrICAgIChjaGFyICopbWVtY3B5KF9fbmV3LCBfX29sZCwgX19sZW4pOyBcCisrICB9KQorKyNlbmRpZgorKworICNpZm5kZWYgS0VZQ1RMX1JFQUQKKyAjZGVmaW5lIEtFWUNUTF9SRUFEIDExCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21rZGlyLmMgYi9zcmMvYmFzaWMvbWtkaXIuYworaW5kZXggNmIxYTk4NDAyLi5kMTM4OGRmNDggMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvbWtkaXIuYworKysrIGIvc3JjL2Jhc2ljL21rZGlyLmMKK0BAIC0yOCw2ICsyOCw3IEBACisgI2luY2x1ZGUgInBhdGgtdXRpbC5oIgorICNpbmNsdWRlICJzdGF0LXV0aWwuaCIKKyAjaW5jbHVkZSAidXNlci11dGlsLmgiCisrI2luY2x1ZGUgIm1pc3NpbmcuaCIKKyAKKyBpbnQgbWtkaXJfc2FmZV9pbnRlcm5hbChjb25zdCBjaGFyICpwYXRoLCBtb2RlX3QgbW9kZSwgdWlkX3QgdWlkLCBnaWRfdCBnaWQsIG1rZGlyX2Z1bmNfdCBfbWtkaXIpIHsKKyAgICAgICAgIHN0cnVjdCBzdGF0IHN0OworZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9wYXJzZS11dGlsLmMgYi9zcmMvYmFzaWMvcGFyc2UtdXRpbC5jCitpbmRleCA0NTMyZjIyMmMuLjdhMzBhMGUwNiAxMDA2NDQKKy0tLSBhL3NyYy9iYXNpYy9wYXJzZS11dGlsLmMKKysrKyBiL3NyYy9iYXNpYy9wYXJzZS11dGlsLmMKK0BAIC0zMCw2ICszMCw3IEBACisgI2luY2x1ZGUgInBhcnNlLXV0aWwuaCIKKyAjaW5jbHVkZSAicHJvY2Vzcy11dGlsLmgiCisgI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCisrI2luY2x1ZGUgIm1pc3NpbmcuaCIKKyAKKyBpbnQgcGFyc2VfYm9vbGVhbihjb25zdCBjaGFyICp2KSB7CisgICAgICAgICBhc3NlcnQodik7CitkaWZmIC0tZ2l0IGEvc3JjL3NoYXJlZC9wYWdlci5jIGIvc3JjL3NoYXJlZC9wYWdlci5jCitpbmRleCA0ZDdiMDJjNjMuLjg1NGVmYzBjOSAxMDA2NDQKKy0tLSBhL3NyYy9zaGFyZWQvcGFnZXIuYworKysrIGIvc3JjL3NoYXJlZC9wYWdlci5jCitAQCAtMzgsNiArMzgsNyBAQAorICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgorICNpbmNsdWRlICJzdHJ2LmgiCisgI2luY2x1ZGUgInRlcm1pbmFsLXV0aWwuaCIKKysjaW5jbHVkZSAibWlzc2luZy5oIgorIAorIHN0YXRpYyBwaWRfdCBwYWdlcl9waWQgPSAwOworIAorZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvdWlkLXJhbmdlLmMgYi9zcmMvc2hhcmVkL3VpZC1yYW5nZS5jCitpbmRleCBiNmVjNDc0MzkuLjkxY2U5ZmI3ZiAxMDA2NDQKKy0tLSBhL3NyYy9zaGFyZWQvdWlkLXJhbmdlLmMKKysrKyBiL3NyYy9zaGFyZWQvdWlkLXJhbmdlLmMKK0BAIC0yNCw2ICsyNCw3IEBACisgI2luY2x1ZGUgIm1hY3JvLmgiCisgI2luY2x1ZGUgInVpZC1yYW5nZS5oIgorICNpbmNsdWRlICJ1c2VyLXV0aWwuaCIKKysjaW5jbHVkZSAibWlzc2luZy5oIgorIAorIHN0YXRpYyBib29sIHVpZF9yYW5nZV9pbnRlcnNlY3QoVWlkUmFuZ2UgKnJhbmdlLCB1aWRfdCBzdGFydCwgdWlkX3QgbnIpIHsKKyAgICAgICAgIGFzc2VydChyYW5nZSk7CistLSAKKzIuMTQuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDItdW5pdHMtUHJlZmVyLWdldHR5LXRvLWFnZXR0eS1pbi1jb25zb2xlLXNldHVwLXN5c3RlbS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMi11bml0cy1QcmVmZXItZ2V0dHktdG8tYWdldHR5LWluLWNvbnNvbGUtc2V0dXAtc3lzdGVtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NTFhMjhkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMi11bml0cy1QcmVmZXItZ2V0dHktdG8tYWdldHR5LWluLWNvbnNvbGUtc2V0dXAtc3lzdGVtLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotRnJvbSA4NzM2ZDliOWJiNDkyZjYwZThmM2ExYTdmYjVhMDViYTMyMDFkODZiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjAgRmViIDIwMTUgMDU6Mjk6MTUgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwMi8xOV0gdW5pdHM6IFByZWZlciBnZXR0eSB0byBhZ2V0dHkgaW4gY29uc29sZSBzZXR1cCBzeXN0ZW1kCi0gdW5pdHMKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBNYXhpbWUgUmlwYXJkIDxtYXhpbWUucmlwYXJkQGZyZWUtZWxlY3Ryb25zLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSB1bml0cy9nZXR0eUAuc2VydmljZS5tNCAgICAgICAgfCAyICstCi0gdW5pdHMvc2VyaWFsLWdldHR5QC5zZXJ2aWNlLm00IHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdW5pdHMvZ2V0dHlALnNlcnZpY2UubTQgYi91bml0cy9nZXR0eUAuc2VydmljZS5tNAotaW5kZXggNWI4MmMxMy4uZTcyOTQ2OSAxMDA2NDQKLS0tLSBhL3VuaXRzL2dldHR5QC5zZXJ2aWNlLm00Ci0rKysgYi91bml0cy9nZXR0eUAuc2VydmljZS5tNAotQEAgLTMzLDcgKzMzLDcgQEAgQ29uZGl0aW9uUGF0aEV4aXN0cz0vZGV2L3R0eTAKLSAKLSBbU2VydmljZV0KLSAjIHRoZSBWVCBpcyBjbGVhcmVkIGJ5IFRUWVZURGlzYWxsb2NhdGUKLS1FeGVjU3RhcnQ9LS9zYmluL2FnZXR0eSAtLW5vY2xlYXIgJUkgJFRFUk0KLStFeGVjU3RhcnQ9LS9zYmluL2dldHR5IC1MICVJICRURVJNCi0gVHlwZT1pZGxlCi0gUmVzdGFydD1hbHdheXMKLSBSZXN0YXJ0U2VjPTAKLWRpZmYgLS1naXQgYS91bml0cy9zZXJpYWwtZ2V0dHlALnNlcnZpY2UubTQgYi91bml0cy9zZXJpYWwtZ2V0dHlALnNlcnZpY2UubTQKLWluZGV4IDQ1MjJkMGQuLmU2ZDQ5OWQgMTAwNjQ0Ci0tLS0gYS91bml0cy9zZXJpYWwtZ2V0dHlALnNlcnZpY2UubTQKLSsrKyBiL3VuaXRzL3NlcmlhbC1nZXR0eUAuc2VydmljZS5tNAotQEAgLTIyLDcgKzIyLDcgQEAgQmVmb3JlPWdldHR5LnRhcmdldAotIElnbm9yZU9uSXNvbGF0ZT15ZXMKLSAKLSBbU2VydmljZV0KLS1FeGVjU3RhcnQ9LS9zYmluL2FnZXR0eSAtLWtlZXAtYmF1ZCAxMTUyMDAsMzg0MDAsOTYwMCAlSSAkVEVSTQotK0V4ZWNTdGFydD0tL3NiaW4vZ2V0dHkgLUwgMTE1MjAwICVJICRURVJNCi0gVHlwZT1pZGxlCi0gUmVzdGFydD1hbHdheXMKLSBVdG1wSWRlbnRpZmllcj0lSQotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAzLWRlZmluZS1leHAxMC1pZi1taXNzaW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAzLWRlZmluZS1leHAxMC1pZi1taXNzaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzN2M2YWM1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMy1kZWZpbmUtZXhwMTAtaWYtbWlzc2luZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLUZyb20gYjM4M2MyODZmNTgxODQ1NzUyMTZiMmJmNmYxODViYTJhZDY0ODk1NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDkgTm92IDIwMTYgMTk6MjU6NDUgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAwMy8xOV0gZGVmaW5lIGV4cDEwIGlmIG1pc3NpbmcKLQotSW5zcGlyZWQgYnk6IGh0dHA6Ly9wZXRlci5rb3JzZ2FhcmQuY29tL3BhdGNoZXMvYWxzYS11dGlscy9hbHNhbWl4ZXItZml4LWJ1aWxkLW9uLXVDbGliYy1leHAxMC5wYXRjaAotCi1leHAxMCBleHRlbnNpb24gaXMgbm90IHBhcnQgb2YgdUNsaWJjLCBzbyBjb21wdXRlIGl0LgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogU2FtdWVsIE1hcnRpbiA8cy5tYXJ0aW40OUBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3JjL2Jhc2ljL21pc3NpbmcuaCB8IDUgKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvYmFzaWMvbWlzc2luZy5oIGIvc3JjL2Jhc2ljL21pc3NpbmcuaAotaW5kZXggNGMwMTNiZS4uNGEzZmQ5YyAxMDA2NDQKLS0tLSBhL3NyYy9iYXNpYy9taXNzaW5nLmgKLSsrKyBiL3NyYy9iYXNpYy9taXNzaW5nLmgKLUBAIC0xMDc4LDQgKzEwNzgsOSBAQCB0eXBlZGVmIGludDMyX3Qga2V5X3NlcmlhbF90OwotIAotICNlbmRpZgotIAotKyNpZmRlZiBfX1VDTElCQ19fCi0rLyogMTBeeCA9IDEwXihsb2cgZV54KSA9IChlXngpXmxvZzEwID0gZV4oeCAqIGxvZyAxMCkgKi8KLSsjZGVmaW5lIGV4cDEwKHgpIChleHAoKHgpICogbG9nKDEwKSkpCi0rI2VuZGlmIC8qIF9fVUNMSUJDX18gKi8KLSsKLSAjaW5jbHVkZSAibWlzc2luZ19zeXNjYWxsLmgiCi0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDMtZG9uLXQtZmFpbC1pZi1HTE9CX0JSQUNFLWFuZC1HTE9CX0FMVERJUkZVTkMtaXMtbm90LS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMy1kb24tdC1mYWlsLWlmLUdMT0JfQlJBQ0UtYW5kLUdMT0JfQUxURElSRlVOQy1pcy1ub3QtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhMmQyYzgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDMtZG9uLXQtZmFpbC1pZi1HTE9CX0JSQUNFLWFuZC1HTE9CX0FMVERJUkZVTkMtaXMtbm90LS5wYXRjaApAQCAtMCwwICsxLDE1NyBAQAorRnJvbSA1YmJiYzJhMDhhM2I0MjgzZWMwNGFmMGU3N2UyNWZiMjA1YWE4YjgyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRW1pbCBSZW5uZXIgQmVydGhpbmcgPHN5c3RlbWRAZXNtaWwuZGs+CitEYXRlOiBNb24sIDIzIE9jdCAyMDE3IDEwOjUwOjE0IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMDMvMTJdIGRvbid0IGZhaWwgaWYgR0xPQl9CUkFDRSBhbmQgR0xPQl9BTFRESVJGVU5DIGlzIG5vdAorIGRlZmluZWQKKworSWYgdGhlIHN0YW5kYXJkIGxpYnJhcnkgZG9lc24ndCBwcm92aWRlIGJyYWNlCitleHBhbnNpb24gdXNlcnMganVzdCB3b24ndCBnZXQgaXQuCisKK0RvbnQgdXNlIEdOVSBHTE9CIGV4dGVudGlvbnMgb24gbm9uLWdsaWJjIHN5c3RlbXMKKworQ29uZGl0aW9uYWxpemUgdXNlIG9mIEdMT0JfQUxURElSRlVOQworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIHNyYy9iYXNpYy9nbG9iLXV0aWwuYyAgICAgfCAyMCArKysrKysrKysrKysrKysrKy0tLQorIHNyYy90ZXN0L3Rlc3QtZ2xvYi11dGlsLmMgfCAxNyArKysrKysrKysrKysrKystLQorIHNyYy90bXBmaWxlcy90bXBmaWxlcy5jICAgfCAgOCArKysrKysrKworIDMgZmlsZXMgY2hhbmdlZCwgNDAgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9nbG9iLXV0aWwuYyBiL3NyYy9iYXNpYy9nbG9iLXV0aWwuYworaW5kZXggZjYxMWM0MmU0Li5hZDZlMmJlOGQgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvZ2xvYi11dGlsLmMKKysrKyBiL3NyYy9iYXNpYy9nbG9iLXV0aWwuYworQEAgLTI3LDEzICsyNywxOCBAQAorICNpbmNsdWRlICJtYWNyby5oIgorICNpbmNsdWRlICJwYXRoLXV0aWwuaCIKKyAjaW5jbHVkZSAic3Rydi5oIgorKy8qIERvbid0IGZhaWwgaWYgdGhlIHN0YW5kYXJkIGxpYnJhcnkKKysgKiBkb2Vzbid0IHByb3ZpZGUgYnJhY2UgZXhwYW5zaW9uICovCisrI2lmbmRlZiBHTE9CX0JSQUNFCisrI2RlZmluZSBHTE9CX0JSQUNFIDAKKysjZW5kaWYKKyAKKyBpbnQgc2FmZV9nbG9iKGNvbnN0IGNoYXIgKnBhdGgsIGludCBmbGFncywgZ2xvYl90ICpwZ2xvYikgeworICAgICAgICAgaW50IGs7CisgCisrI2lmZGVmIEdMT0JfQUxURElSRlVOQworICAgICAgICAgLyogV2Ugd2FudCB0byBzZXQgR0xPQl9BTFRESVJGVU5DIG91cnNlbHZlcywgZG9uJ3QgYWxsb3cgaXQgdG8gYmUgc2V0LiAqLworICAgICAgICAgYXNzZXJ0KCEoZmxhZ3MgJiBHTE9CX0FMVERJUkZVTkMpKTsKKy0KKyAgICAgICAgIGlmICghcGdsb2ItPmdsX2Nsb3NlZGlyKQorICAgICAgICAgICAgICAgICBwZ2xvYi0+Z2xfY2xvc2VkaXIgPSAodm9pZCAoKikodm9pZCAqKSkgY2xvc2VkaXI7CisgICAgICAgICBpZiAoIXBnbG9iLT5nbF9yZWFkZGlyKQorQEAgLTQ0LDEwICs0OSwxMyBAQCBpbnQgc2FmZV9nbG9iKGNvbnN0IGNoYXIgKnBhdGgsIGludCBmbGFncywgZ2xvYl90ICpwZ2xvYikgeworICAgICAgICAgICAgICAgICBwZ2xvYi0+Z2xfbHN0YXQgPSBsc3RhdDsKKyAgICAgICAgIGlmICghcGdsb2ItPmdsX3N0YXQpCisgICAgICAgICAgICAgICAgIHBnbG9iLT5nbF9zdGF0ID0gc3RhdDsKKy0KKysjZW5kaWYKKyAgICAgICAgIGVycm5vID0gMDsKKysjaWZkZWYgR0xPQl9BTFRESVJGVU5DCisgICAgICAgICBrID0gZ2xvYihwYXRoLCBmbGFncyB8IEdMT0JfQUxURElSRlVOQywgTlVMTCwgcGdsb2IpOworLQorKyNlbHNlCisrICAgICAgICBrID0gZ2xvYihwYXRoLCBmbGFncywgTlVMTCwgcGdsb2IpOworKyNlbmRpZgorICAgICAgICAgaWYgKGsgPT0gR0xPQl9OT01BVENIKQorICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT0VOVDsKKyAgICAgICAgIGlmIChrID09IEdMT0JfTk9TUEFDRSkKK0BAIC02MCw2ICs2OCwxMiBAQCBpbnQgc2FmZV9nbG9iKGNvbnN0IGNoYXIgKnBhdGgsIGludCBmbGFncywgZ2xvYl90ICpwZ2xvYikgeworICAgICAgICAgcmV0dXJuIDA7CisgfQorIAorKy8qIERvbid0IGZhaWwgaWYgdGhlIHN0YW5kYXJkIGxpYnJhcnkKKysgKiBkb2Vzbid0IHByb3ZpZGUgYnJhY2UgZXhwYW5zaW9uICovCisrI2lmbmRlZiBHTE9CX0JSQUNFCisrI2RlZmluZSBHTE9CX0JSQUNFIDAKKysjZW5kaWYKKysKKyBpbnQgZ2xvYl9leGlzdHMoY29uc3QgY2hhciAqcGF0aCkgeworICAgICAgICAgX2NsZWFudXBfZ2xvYmZyZWVfIGdsb2JfdCBnID0ge307CisgICAgICAgICBpbnQgazsKK2RpZmYgLS1naXQgYS9zcmMvdGVzdC90ZXN0LWdsb2ItdXRpbC5jIGIvc3JjL3Rlc3QvdGVzdC1nbG9iLXV0aWwuYworaW5kZXggYWY4NjZlMDA0Li4zYWZhMDlhZGEgMTAwNjQ0CistLS0gYS9zcmMvdGVzdC90ZXN0LWdsb2ItdXRpbC5jCisrKysgYi9zcmMvdGVzdC90ZXN0LWdsb2ItdXRpbC5jCitAQCAtMjksNiArMjksMTEgQEAKKyAjaW5jbHVkZSAiZ2xvYi11dGlsLmgiCisgI2luY2x1ZGUgIm1hY3JvLmgiCisgI2luY2x1ZGUgInJtLXJmLmgiCisrLyogRG9uJ3QgZmFpbCBpZiB0aGUgc3RhbmRhcmQgbGlicmFyeQorKyAqIGRvZXNuJ3QgcHJvdmlkZSBicmFjZSBleHBhbnNpb24gKi8KKysjaWZuZGVmIEdMT0JfQlJBQ0UKKysjZGVmaW5lIEdMT0JfQlJBQ0UgMAorKyNlbmRpZgorIAorIHN0YXRpYyB2b2lkIHRlc3RfZ2xvYl9leGlzdHModm9pZCkgeworICAgICAgICAgY2hhciBuYW1lW10gPSAiL3RtcC90ZXN0LWdsb2JfZXhpc3RzLlhYWFhYWCI7CitAQCAtNTEsMjUgKzU2LDMzIEBAIHN0YXRpYyB2b2lkIHRlc3RfZ2xvYl9leGlzdHModm9pZCkgeworIHN0YXRpYyB2b2lkIHRlc3RfZ2xvYl9ub19kb3Qodm9pZCkgeworICAgICAgICAgY2hhciB0ZW1wbGF0ZVtdID0gIi90bXAvdGVzdC1nbG9iLXV0aWwuWFhYWFhYWCI7CisgICAgICAgICBjb25zdCBjaGFyICpmbjsKKy0KKyAgICAgICAgIF9jbGVhbnVwX2dsb2JmcmVlXyBnbG9iX3QgZyA9IHsKKysjaWZkZWYgR0xPQl9BTFRESVJGVU5DCisgICAgICAgICAgICAgICAgIC5nbF9jbG9zZWRpciA9ICh2b2lkICgqKSh2b2lkICopKSBjbG9zZWRpciwKKyAgICAgICAgICAgICAgICAgLmdsX3JlYWRkaXIgPSAoc3RydWN0IGRpcmVudCAqKCopKHZvaWQgKikpIHJlYWRkaXJfbm9fZG90LAorICAgICAgICAgICAgICAgICAuZ2xfb3BlbmRpciA9ICh2b2lkICooKikoY29uc3QgY2hhciAqKSkgb3BlbmRpciwKKyAgICAgICAgICAgICAgICAgLmdsX2xzdGF0ID0gbHN0YXQsCisgICAgICAgICAgICAgICAgIC5nbF9zdGF0ID0gc3RhdCwKKysjZW5kaWYKKyAgICAgICAgIH07CistCisgICAgICAgICBpbnQgcjsKKyAKKyAgICAgICAgIGFzc2VydF9zZShta2R0ZW1wKHRlbXBsYXRlKSk7CisgCisgICAgICAgICBmbiA9IHN0cmpvaW5hKHRlbXBsYXRlLCAiLyoiKTsKKysjaWZkZWYgR0xPQl9BTFRESVJGVU5DCisgICAgICAgICByID0gZ2xvYihmbiwgR0xPQl9OT1NPUlR8R0xPQl9CUkFDRXxHTE9CX0FMVERJUkZVTkMsIE5VTEwsICZnKTsKKysjZWxzZQorKyAgICAgICAgciA9IGdsb2IoZm4sIEdMT0JfTk9TT1JUfEdMT0JfQlJBQ0UsIE5VTEwsICZnKTsKKysjZW5kaWYKKyAgICAgICAgIGFzc2VydF9zZShyID09IEdMT0JfTk9NQVRDSCk7CisgCisgICAgICAgICBmbiA9IHN0cmpvaW5hKHRlbXBsYXRlLCAiLy4qIik7CisrI2lmZGVmIEdMT0JfQUxURElSRlVOQworICAgICAgICAgciA9IGdsb2IoZm4sIEdMT0JfTk9TT1JUfEdMT0JfQlJBQ0V8R0xPQl9BTFRESVJGVU5DLCBOVUxMLCAmZyk7CisrI2Vsc2UKKysgICAgICAgIHIgPSBnbG9iKGZuLCBHTE9CX05PU09SVHxHTE9CX0JSQUNFLCBOVUxMLCAmZyk7CisrI2VuZGlmCisgICAgICAgICBhc3NlcnRfc2UociA9PSBHTE9CX05PTUFUQ0gpOworIAorICAgICAgICAgKHZvaWQpIHJtX3JmKHRlbXBsYXRlLCBSRU1PVkVfUk9PVHxSRU1PVkVfUEhZU0lDQUwpOworZGlmZiAtLWdpdCBhL3NyYy90bXBmaWxlcy90bXBmaWxlcy5jIGIvc3JjL3RtcGZpbGVzL3RtcGZpbGVzLmMKK2luZGV4IDk0MTljOTllMi4uMDcwMjdhNzY1IDEwMDY0NAorLS0tIGEvc3JjL3RtcGZpbGVzL3RtcGZpbGVzLmMKKysrKyBiL3NyYy90bXBmaWxlcy90bXBmaWxlcy5jCitAQCAtNzEsNiArNzEsMTIgQEAKKyAjaW5jbHVkZSAidW1hc2stdXRpbC5oIgorICNpbmNsdWRlICJ1c2VyLXV0aWwuaCIKKyAjaW5jbHVkZSAidXRpbC5oIgorKy8qIERvbid0IGZhaWwgaWYgdGhlIHN0YW5kYXJkIGxpYnJhcnkKKysgKiBkb2Vzbid0IHByb3ZpZGUgYnJhY2UgZXhwYW5zaW9uICovCisrI2lmbmRlZiBHTE9CX0JSQUNFCisrI2RlZmluZSBHTE9CX0JSQUNFIDAKKysjZW5kaWYKKysKKyAKKyAvKiBUaGlzIHJlYWRzIGFsbCBmaWxlcyBsaXN0ZWQgaW4gL2V0Yy90bXBmaWxlcy5kLz8qLmNvbmYgYW5kIGNyZWF0ZXMKKyAgKiB0aGVtIGluIHRoZSBmaWxlIHN5c3RlbS4gVGhpcyBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIHRvIGNyZWF0ZQorQEAgLTEwOTIsNyArMTA5OCw5IEBAIHN0YXRpYyBpbnQgaXRlbV9kb19jaGlsZHJlbihJdGVtICppLCBjb25zdCBjaGFyICpwYXRoLCBhY3Rpb25fdCBhY3Rpb24pIHsKKyAKKyBzdGF0aWMgaW50IGdsb2JfaXRlbShJdGVtICppLCBhY3Rpb25fdCBhY3Rpb24sIGJvb2wgcmVjdXJzaXZlKSB7CisgICAgICAgICBfY2xlYW51cF9nbG9iZnJlZV8gZ2xvYl90IGcgPSB7CisrI2lmZGVmIEdMT0JfQUxURElSRlVOQworICAgICAgICAgICAgICAgICAuZ2xfb3BlbmRpciA9ICh2b2lkICooKikoY29uc3QgY2hhciAqKSkgb3BlbmRpcl9ub21vZCwKKysjZW5kaWYKKyAgICAgICAgIH07CisgICAgICAgICBpbnQgciA9IDAsIGs7CisgICAgICAgICBjaGFyICoqZm47CistLSAKKzIuMTQuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDQtc3JjLWJhc2ljLW1pc3NpbmcuaC1jaGVjay1mb3ItbWlzc2luZy1fX2NvbXBhcl9mbl90LS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNC1zcmMtYmFzaWMtbWlzc2luZy5oLWNoZWNrLWZvci1taXNzaW5nLV9fY29tcGFyX2ZuX3QtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiNWFlOTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDQtc3JjLWJhc2ljLW1pc3NpbmcuaC1jaGVjay1mb3ItbWlzc2luZy1fX2NvbXBhcl9mbl90LS5wYXRjaApAQCAtMCwwICsxLDQ3IEBACitGcm9tIGM4NTBiNjU0ZTcxNjc3ZTBkNjI5MmYxMzQ1MjA3YjliNWFjZmZjMzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBFbWlsIFJlbm5lciBCZXJ0aGluZyA8c3lzdGVtZEBlc21pbC5kaz4KK0RhdGU6IE1vbiwgMjMgT2N0IDIwMTcgMTE6MzE6MDMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAwNC8xMl0gc3JjL2Jhc2ljL21pc3NpbmcuaDogY2hlY2sgZm9yIG1pc3NpbmcgX19jb21wYXJfZm5fdAorIHR5cGVkZWYKKworaW5jbHVkZSBtaXNzaW5nLmggZm9yIG1pc3NpbmcgX19jb21wYXJfZm5fdAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIHNyYy9iYXNpYy9taXNzaW5nLmggfCA1ICsrKysrCisgc3JjL2Jhc2ljL3N0cmJ1Zi5jICB8IDEgKworIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvbWlzc2luZy5oIGIvc3JjL2Jhc2ljL21pc3NpbmcuaAoraW5kZXggODAwOTg4OGFkLi42NzFmMzQxYzYgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvbWlzc2luZy5oCisrKysgYi9zcmMvYmFzaWMvbWlzc2luZy5oCitAQCAtMTA2Myw2ICsxMDYzLDExIEBAIHN0cnVjdCBpbnB1dF9tYXNrIHsKKyAjZGVmaW5lIFJFTkFNRV9OT1JFUExBQ0UgKDEgPDwgMCkKKyAjZW5kaWYKKyAKKysjaWZuZGVmIF9fQ09NUEFSX0ZOX1QKKysjZGVmaW5lIF9fQ09NUEFSX0ZOX1QKKyt0eXBlZGVmIGludCAoKl9fY29tcGFyX2ZuX3QpKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKTsKKysjZW5kaWYKKysKKyAjaWZuZGVmIEtDTVBfRklMRQorICNkZWZpbmUgS0NNUF9GSUxFIDAKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvc3RyYnVmLmMgYi9zcmMvYmFzaWMvc3RyYnVmLmMKK2luZGV4IDAwYWFmOWU2Mi4uOWRjNGE1ODRhIDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL3N0cmJ1Zi5jCisrKysgYi9zcmMvYmFzaWMvc3RyYnVmLmMKK0BAIC0yMyw2ICsyMyw3IEBACisgCisgI2luY2x1ZGUgImFsbG9jLXV0aWwuaCIKKyAjaW5jbHVkZSAic3RyYnVmLmgiCisrI2luY2x1ZGUgIm1pc3NpbmcuaCIKKyAKKyAvKgorICAqIFN0cmJ1ZiBzdG9yZXMgZ2l2ZW4gc3RyaW5ncyBpbiBhIHNpbmdsZSBjb250aW51b3VzIGFsbG9jYXRlZCBtZW1vcnkKKy0tIAorMi4xNC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNi1JbmNsdWRlLW5ldGluZXQtaWZfZXRoZXIuaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNi1JbmNsdWRlLW5ldGluZXQtaWZfZXRoZXIuaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTg4N2VlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA2LUluY2x1ZGUtbmV0aW5ldC1pZl9ldGhlci5oLnBhdGNoCkBAIC0wLDAgKzEsODYgQEAKK0Zyb20gMjEwODBiNmE0MGQwYTRkZGQyZGI4ZjBmYTM3Njg2ZjZmYTg4NWQxYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDIzIE9jdCAyMDE3IDExOjM4OjMzIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMDYvMTJdIEluY2x1ZGUgbmV0aW5ldC9pZl9ldGhlci5oCisKK0ZpeGVzCisvbW50L2Evb2UvYnVpbGQvdG1wL3dvcmsvbWlwczMycjItYmVjLWxpbnV4LW11c2wvc3lzdGVtZC8xXzIzNC1yMC9yZWNpcGUtc3lzcm9vdC91c3IvaW5jbHVkZS9uZXRpbmV0L2lmX2V0aGVyLmg6MTAxOjg6IGVycm9yOiByZWRlZmluaXRpb24gb2YgJ3N0cnVjdCBldGhoZHInCisgc3RydWN0IGV0aGhkciB7CisgICAgICAgIF5+fn5+fgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIHNyYy9saWJzeXN0ZW1kL3NkLW5ldGxpbmsvbmV0bGluay10eXBlcy5jIHwgMSArCisgc3JjL25ldHdvcmsvbmV0ZGV2L3R1bnRhcC5jICAgICAgICAgICAgICAgfCAxICsKKyBzcmMvbmV0d29yay9uZXR3b3JrZC1icnZsYW4uYyAgICAgICAgICAgICB8IDEgKworIHNyYy91ZGV2L25ldC9ldGh0b29sLXV0aWwuYyAgICAgICAgICAgICAgIHwgMiArLQorIHNyYy91ZGV2L3VkZXYtYnVpbHRpbi1uZXRfc2V0dXBfbGluay5jICAgIHwgMiArLQorIDUgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2xpYnN5c3RlbWQvc2QtbmV0bGluay9uZXRsaW5rLXR5cGVzLmMgYi9zcmMvbGlic3lzdGVtZC9zZC1uZXRsaW5rL25ldGxpbmstdHlwZXMuYworaW5kZXggOTIzZjdkZDEwLi5iOTViMWU0YjIgMTAwNjQ0CistLS0gYS9zcmMvbGlic3lzdGVtZC9zZC1uZXRsaW5rL25ldGxpbmstdHlwZXMuYworKysrIGIvc3JjL2xpYnN5c3RlbWQvc2QtbmV0bGluay9uZXRsaW5rLXR5cGVzLmMKK0BAIC0xOSw2ICsxOSw3IEBACisgCisgI2luY2x1ZGUgPHN0ZGludC5oPgorICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisrI2luY2x1ZGUgPG5ldGluZXQvaWZfZXRoZXIuaD4KKyAjaW5jbHVkZSA8bGludXgvbmV0bGluay5oPgorICNpbmNsdWRlIDxsaW51eC9ydG5ldGxpbmsuaD4KKyAjaW5jbHVkZSA8bGludXgvY2FuL25ldGxpbmsuaD4KK2RpZmYgLS1naXQgYS9zcmMvbmV0d29yay9uZXRkZXYvdHVudGFwLmMgYi9zcmMvbmV0d29yay9uZXRkZXYvdHVudGFwLmMKK2luZGV4IDNkNjI4MDg4NC4uNDBlNThjMzhmIDEwMDY0NAorLS0tIGEvc3JjL25ldHdvcmsvbmV0ZGV2L3R1bnRhcC5jCisrKysgYi9zcmMvbmV0d29yay9uZXRkZXYvdHVudGFwLmMKK0BAIC0xOCw2ICsxOCw3IEBACisgKioqLworIAorICNpbmNsdWRlIDxmY250bC5oPgorKyNpbmNsdWRlIDxuZXRpbmV0L2lmX2V0aGVyLmg+CisgI2luY2x1ZGUgPGxpbnV4L2lmX3R1bi5oPgorICNpbmNsdWRlIDxuZXQvaWYuaD4KKyAjaW5jbHVkZSA8bmV0aW5ldC9pZl9ldGhlci5oPgorZGlmZiAtLWdpdCBhL3NyYy9uZXR3b3JrL25ldHdvcmtkLWJydmxhbi5jIGIvc3JjL25ldHdvcmsvbmV0d29ya2QtYnJ2bGFuLmMKK2luZGV4IGZhNWQzZWU3Zi4uZTA4Mjg5NjJhIDEwMDY0NAorLS0tIGEvc3JjL25ldHdvcmsvbmV0d29ya2QtYnJ2bGFuLmMKKysrKyBiL3NyYy9uZXR3b3JrL25ldHdvcmtkLWJydmxhbi5jCitAQCAtMTgsNiArMTgsNyBAQAorICoqKi8KKyAKKyAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorKyNpbmNsdWRlIDxuZXRpbmV0L2lmX2V0aGVyLmg+CisgI2luY2x1ZGUgPGxpbnV4L2lmX2JyaWRnZS5oPgorICNpbmNsdWRlIDxzdGRib29sLmg+CisgCitkaWZmIC0tZ2l0IGEvc3JjL3VkZXYvbmV0L2V0aHRvb2wtdXRpbC5jIGIvc3JjL3VkZXYvbmV0L2V0aHRvb2wtdXRpbC5jCitpbmRleCAyMDFmYzIzNDMuLjVmN2NjMmEwYSAxMDA2NDQKKy0tLSBhL3NyYy91ZGV2L25ldC9ldGh0b29sLXV0aWwuYworKysrIGIvc3JjL3VkZXYvbmV0L2V0aHRvb2wtdXRpbC5jCitAQCAtMTYsNyArMTYsNyBAQAorICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICBhbG9uZyB3aXRoIHN5c3RlbWQ7IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqKiovCistCisrI2luY2x1ZGUgPG5ldGluZXQvaWZfZXRoZXIuaD4KKyAjaW5jbHVkZSA8bmV0L2lmLmg+CisgI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorICNpbmNsdWRlIDxsaW51eC9ldGh0b29sLmg+CitkaWZmIC0tZ2l0IGEvc3JjL3VkZXYvdWRldi1idWlsdGluLW5ldF9zZXR1cF9saW5rLmMgYi9zcmMvdWRldi91ZGV2LWJ1aWx0aW4tbmV0X3NldHVwX2xpbmsuYworaW5kZXggOGU0Nzc3NTEzLi5kMDFmZmYyYTQgMTAwNjQ0CistLS0gYS9zcmMvdWRldi91ZGV2LWJ1aWx0aW4tbmV0X3NldHVwX2xpbmsuYworKysrIGIvc3JjL3VkZXYvdWRldi1idWlsdGluLW5ldF9zZXR1cF9saW5rLmMKK0BAIC0xNiw3ICsxNiw3IEBACisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgIGFsb25nIHdpdGggc3lzdGVtZDsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICoqKi8KKy0KKysjaW5jbHVkZSA8bmV0aW5ldC9pZl9ldGhlci5oPgorICNpbmNsdWRlICJhbGxvYy11dGlsLmgiCisgI2luY2x1ZGUgImxpbmstY29uZmlnLmgiCisgI2luY2x1ZGUgImxvZy5oIgorLS0gCisyLjE0LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA2LWNvbmZpZ3VyZS1DaGVjay1mb3ItYWRkaXRpb25hbC1mZWF0dXJlcy10aGF0LXVjbGliYy0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDYtY29uZmlndXJlLUNoZWNrLWZvci1hZGRpdGlvbmFsLWZlYXR1cmVzLXRoYXQtdWNsaWJjLS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDNhMGQzZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDYtY29uZmlndXJlLUNoZWNrLWZvci1hZGRpdGlvbmFsLWZlYXR1cmVzLXRoYXQtdWNsaWJjLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLUZyb20gODJkODM3Yjc2NjE4YTc3MzQ4NWI5NmUzOGI3YjkxMDgzYTc0MzdlOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDIwIEZlYiAyMDE1IDA1OjA1OjQ1ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDYvMTldIGNvbmZpZ3VyZTogQ2hlY2sgZm9yIGFkZGl0aW9uYWwgZmVhdHVyZXMgdGhhdCB1Y2xpYmMKLSBkb2VzbnQgc3VwcG9ydAotCi1UaGlzIGhlbHBzIGluIHN1cHBvcnRpbmcgdWNsaWJjIHdoaWNoIGRvZXMgbm90IGhhdmUgYWxsIGZlYXR1cmVzIHRoYXQKLWdsaWJjIG1pZ2h0IGhhdmUKLQotVXBzdHJlYW0tU3RhdHVzOiBEZW5pZWQgW25vIGRlc2lyZSBmb3IgdWNsaWJjIHN1cHBvcnRdCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCAxOCArKysrKysrKysrKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgMTggaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA3ZjZiM2I5Li43YzRiNWEyIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0xMTAsNiArMTEwLDI0IEBAIEFDX1BBVEhfUFJPRyhbVU1PVU5UX1BBVEhdLCBbdW1vdW50XSwgWy91c3IvYmluL3Vtb3VudF0sIFskUEFUSDovdXNyL3NiaW46L3NiaW5dCi0gCi0gQVNfSUYoWyEgbG4gLS1yZWxhdGl2ZSAtLWhlbHAgPiAvZGV2L251bGwgMj4mMV0sIFtBQ19NU0dfRVJST1IoWyoqKiBsbiBkb2Vzbid0IHN1cHBvcnQgLS1yZWxhdGl2ZSAqKipdKV0pCi0gCi0rIyBjaGVjayBmb3IgZmV3IGZ1bmN0aW9ucyBub3QgaW1wbGVtZW50ZWQgaW4gdUNsaWJjCi0rCi0rQUNfQ0hFQ0tfRlVOQ1NfT05DRShta29zdGVtcCBleGVjdnBlIHBvc2l4X2ZhbGxvY2F0ZSkKLSsKLSsjIGNoZWNrIGZvciAlbXMgZm9ybWF0IHN1cHBvcnQgLSBhc3N1bWUgYWx3YXlzIG5vIGlmIGNyb3NzIGNvbXBpbGluZwotKwotK0FDX01TR19DSEVDS0lORyhbd2hldGhlciAlbXMgZm9ybWF0IGlzIHN1cHBvcnRlZCBieSAqc2NhbmZdKQotKwotK0FDX0xJTktfSUZFTFNFKAotKwlbQUNfTEFOR19QUk9HUkFNKFsKLSsJICNpbmNsdWRlIDxzdGRpby5oPgotKwkgXSxbCi0rCSAgICBjaGFyICpidWYxLCAqYnVmMiwgKmJ1ZjMsIHN0cj0iMSAyLjMgYWJjZGUiIDsKLSsJICAgIGludCByYyA9IHNzY2FuZihzdHIsICIlbXMgJW1zICVtcyIsICZidWYxLCAmYnVmMiwgJmJ1ZjMpIDsKLSsJICAgIHJldHVybiAocmM9PTMpPzA6MTtdKV0sCi0rCVtBQ19ERUZJTkUoW0hBVkVfTVNGT1JNQVRdLCBbMV0sIFtEZWZpbmUgaWYgJW1zIGZvcm1hdCBpcyBzdXBwb3J0ZWQgYnkgKnNjYW5mLl0pXSwKLSsJW0FDX01TR19SRVNVTFQoW25vXSldKQotKwotIE00X0RFRklORVM9Ci0gCi0gQUNfQ0hFQ0tfVE9PTChPQkpDT1BZLCBvYmpjb3B5KQotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA3LWNoZWNrLWZvci1taXNzaW5nLWNhbm9uaWNhbGl6ZV9maWxlX25hbWUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDctY2hlY2stZm9yLW1pc3NpbmctY2Fub25pY2FsaXplX2ZpbGVfbmFtZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjM0YzU5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA3LWNoZWNrLWZvci1taXNzaW5nLWNhbm9uaWNhbGl6ZV9maWxlX25hbWUucGF0Y2gKQEAgLTAsMCArMSw2MyBAQAorRnJvbSAwNWRmZmU2NzkxOWZmYzcyYmU1YzAxN2JjNmNmODJmMTY0YjJlOGY5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRW1pbCBSZW5uZXIgQmVydGhpbmcgPHN5c3RlbWRAZXNtaWwuZGs+CitEYXRlOiBNb24sIDIzIE9jdCAyMDE3IDExOjQyOjAzIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMDcvMTJdIGNoZWNrIGZvciBtaXNzaW5nIGNhbm9uaWNhbGl6ZV9maWxlX25hbWUKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgfCAyICsrCisgc3JjL2Jhc2ljL21pc3NpbmcuaCAgICAgICAgIHwgMSArCisgc3JjL2Jhc2ljL21pc3Npbmdfc3lzY2FsbC5oIHwgNiArKysrKysKKyAzIGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBjZDAzNWE5NzEuLjM2NzQxOTBmYiAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMzMzLDYgKzMzMyw3IEBAIEFDX0NIRUNLX0RFQ0xTKFsKKyAgICAgICAgIHJlbmFtZWF0MiwKKyAgICAgICAgIGtjbXAsCisgICAgICAgICBrZXljdGwsCisrICAgICAgICBjYW5vbmljYWxpemVfZmlsZV9uYW1lLAorICAgICAgICAgTE9fRkxBR1NfUEFSVFNDQU4sCisgICAgICAgICBjb3B5X2ZpbGVfcmFuZ2UsCisgICAgICAgICBleHBsaWNpdF9iemVyb10sCitAQCAtMzQzLDYgKzM0NCw3IEBAIEFDX0NIRUNLX0RFQ0xTKFsKKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8c2NoZWQuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisrI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDxsaW51eC9sb29wLmg+CisgXV0pCisgCitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21pc3NpbmcuaCBiL3NyYy9iYXNpYy9taXNzaW5nLmgKK2luZGV4IDY3MWYzNDFjNi4uOGFlNDk2NGUxIDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL21pc3NpbmcuaAorKysrIGIvc3JjL2Jhc2ljL21pc3NpbmcuaAorQEAgLTEyNDYsMyArMTI0Niw0IEBAIHN0cnVjdCBldGh0b29sX2xpbmtfc2V0dGluZ3MgeworICNlbmRpZgorIAorICNpbmNsdWRlICJtaXNzaW5nX3N5c2NhbGwuaCIKKysKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvbWlzc2luZ19zeXNjYWxsLmggYi9zcmMvYmFzaWMvbWlzc2luZ19zeXNjYWxsLmgKK2luZGV4IDg5ODExNmM3Yi4uNGQ0NGVlNGZhIDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL21pc3Npbmdfc3lzY2FsbC5oCisrKysgYi9zcmMvYmFzaWMvbWlzc2luZ19zeXNjYWxsLmgKK0BAIC0yOCw2ICsyOCwxMiBAQCBzdGF0aWMgaW5saW5lIGludCBwaXZvdF9yb290KGNvbnN0IGNoYXIgKm5ld19yb290LCBjb25zdCBjaGFyICpwdXRfb2xkKSB7CisgfQorICNlbmRpZgorIAorKyNpZiAhSEFWRV9ERUNMX0NBTk9OSUNBTElaRV9GSUxFX05BTUUKKytzdGF0aWMgaW5saW5lIGNoYXIgKmNhbm9uaWNhbGl6ZV9maWxlX25hbWUoY29uc3QgY2hhciAqcGF0aCkgeworKyAgICAgICAgcmV0dXJuIHJlYWxwYXRoKHBhdGgsIE5VTEwpOworK30KKysjZW5kaWYKKysKKyAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLworIAorICNpZiAhSEFWRV9ERUNMX01FTUZEX0NSRUFURQorLS0gCisyLjE0LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA3LXVzZS1sbnItd3JhcHBlci1pbnN0ZWFkLW9mLWxvb2tpbmctZm9yLXJlbGF0aXZlLW9wdGkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDctdXNlLWxuci13cmFwcGVyLWluc3RlYWQtb2YtbG9va2luZy1mb3ItcmVsYXRpdmUtb3B0aS5wYXRjaAppbmRleCBmYWQ2OWE1Li5iYzkyZGI3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDctdXNlLWxuci13cmFwcGVyLWluc3RlYWQtb2YtbG9va2luZy1mb3ItcmVsYXRpdmUtb3B0aS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDctdXNlLWxuci13cmFwcGVyLWluc3RlYWQtb2YtbG9va2luZy1mb3ItcmVsYXRpdmUtb3B0aS5wYXRjaApAQCAtMTIsMTAgKzEyLDEwIEBACiAgY29uZmlndXJlLmFjIHwgMiAtLQogIDIgZmlsZXMgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDMgZGVsZXRpb25zKC0pCiAKLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCAyOWVkMWRkLi4wMmY0MDE3IDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuYW0KLSsrKyBiL01ha2VmaWxlLmFtCitJbmRleDogZ2l0L01ha2VmaWxlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvTWFrZWZpbGUuYW0KKysrKyBnaXQvTWFrZWZpbGUuYW0KIEBAIC0zMjAsNyArMzIwLDcgQEAgZGVmaW5lIGluc3RhbGwtcmVsYXRpdmUtYWxpYXNlcwogIAl3aGlsZSBbIC1uICIkJDEiIF07IGRvIFwKICAJCSQoTUtESVJfUCkgYGRpcm5hbWUgJChERVNURElSKSQkZGlyLyQkMmAgJiYgXApAQCAtMjUsMTkgKzI1LDE2IEBACiAgCQlzaGlmdCAyIHx8IGV4aXQgJCQ/OyBcCiAgCWRvbmUKICBlbmRlZgotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggN2M0YjVhMi4uYjEwYzk1MiAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMTA4LDggKzEwOCw2IEBAIEFDX1BBVEhfUFJPRyhbU1VMT0dJTl0sIFtzdWxvZ2luXSwgWy91c3Ivc2Jpbi9zdWxvZ2luXSwgWyRQQVRIOi91c3Ivc2Jpbjovc2Jpbl0pCitJbmRleDogZ2l0L2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL2NvbmZpZ3VyZS5hYworKysrIGdpdC9jb25maWd1cmUuYWMKK0BAIC0xMTAsOCArMTEwLDYgQEAgQUNfUEFUSF9QUk9HKFtTVUxPR0lOXSwgW3N1bG9naW5dLCBbL3VzcgogIEFDX1BBVEhfUFJPRyhbTU9VTlRfUEFUSF0sIFttb3VudF0sIFsvdXNyL2Jpbi9tb3VudF0sIFskUEFUSDovdXNyL3NiaW46L3NiaW5dKQogIEFDX1BBVEhfUFJPRyhbVU1PVU5UX1BBVEhdLCBbdW1vdW50XSwgWy91c3IvYmluL3Vtb3VudF0sIFskUEFUSDovdXNyL3NiaW46L3NiaW5dKQogIAogLUFTX0lGKFshIGxuIC0tcmVsYXRpdmUgLS1oZWxwID4gL2Rldi9udWxsIDI+JjFdLCBbQUNfTVNHX0VSUk9SKFsqKiogbG4gZG9lc24ndCBzdXBwb3J0IC0tcmVsYXRpdmUgKioqXSldKQogLQotICMgY2hlY2sgZm9yIGZldyBmdW5jdGlvbnMgbm90IGltcGxlbWVudGVkIGluIHVDbGliYworIE00X0RFRklORVM9CiAgCi0gQUNfQ0hFQ0tfRlVOQ1NfT05DRShta29zdGVtcCBleGVjdnBlIHBvc2l4X2ZhbGxvY2F0ZSkKLS0tIAotMi4xMC4yCi0KKyBBQ19DSEVDS19UT09MKE9CSkNPUFksIG9iamNvcHkpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDgtRG8tbm90LWVuYWJsZS1uc3MtdGVzdHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDgtRG8tbm90LWVuYWJsZS1uc3MtdGVzdHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjdhNGY4ZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwOC1Eby1ub3QtZW5hYmxlLW5zcy10ZXN0cy5wYXRjaApAQCAtMCwwICsxLDM1IEBACitGcm9tIDQ4ZTdjMGY1YjJmNWQ3NzdhMTZhYzU1ODRkYzRmNTBmMWRmYTgzMmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCAyMyBPY3QgMjAxNyAxMjoyNzo1MyAtMDcwMAorU3ViamVjdDogW1BBVENIIDA4LzEyXSBEbyBub3QgZW5hYmxlIG5zcyB0ZXN0cworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIE1ha2VmaWxlLmFtIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQoraW5kZXggM2NjOGYzNDUxLi5kZjIwYTlhMTEgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5hbQorKysrIGIvTWFrZWZpbGUuYW0KK0BAIC01MjkwLDYgKzUyOTAsNyBAQCBFWFRSQV9ESVNUICs9IFwKKyAJc3JjL3RpbWVzeW5jL3RpbWVzeW5jZC5jb25mLmluCisgCisgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKytpZiBFTkFCTEVfTlNTX1NZU1RFTUQKKyB0ZXN0X25zc19TT1VSQ0VTID0gXAorIAlzcmMvdGVzdC90ZXN0LW5zcy5jCisgCitAQCAtNTMwMiw3ICs1MzAzLDYgQEAgbWFudWFsX3Rlc3RzICs9IFwKKyAJdGVzdC1uc3MKKyAKKyAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLWlmIEVOQUJMRV9OU1NfU1lTVEVNRAorIGxpYm5zc19zeXN0ZW1kX2xhX1NPVVJDRVMgPSBcCisgCXNyYy9uc3Mtc3lzdGVtZC9uc3Mtc3lzdGVtZC5zeW0gXAorIAlzcmMvbnNzLXN5c3RlbWQvbnNzLXN5c3RlbWQuYworLS0gCisyLjE0LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA4LW5zcGF3bi1Vc2UtZXhlY3ZwZS1vbmx5LXdoZW4tbGliYy1zdXBwb3J0cy1pdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwOC1uc3Bhd24tVXNlLWV4ZWN2cGUtb25seS13aGVuLWxpYmMtc3VwcG9ydHMtaXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4NmI1YWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA4LW5zcGF3bi1Vc2UtZXhlY3ZwZS1vbmx5LXdoZW4tbGliYy1zdXBwb3J0cy1pdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLUZyb20gOTYwMjZhMzc2MzI2NGViNDFhMmMzZTM3NGYyMzJmNmU1NDMyODRhOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDkgTm92IDIwMTYgMTk6MzM6NDkgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAwOC8xOV0gbnNwYXduOiBVc2UgZXhlY3ZwZSBvbmx5IHdoZW4gbGliYyBzdXBwb3J0cyBpdAotCi1VcHN0cmVhbS1TdGF0dXM6IERlbmllZCBbbm8gZGVzaXJlIGZvciB1Y2xpYmMgc3VwcG9ydF0KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHNyYy9uc3Bhd24vbnNwYXduLmMgfCA3ICsrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvbnNwYXduL25zcGF3bi5jIGIvc3JjL25zcGF3bi9uc3Bhd24uYwotaW5kZXggOWI5YWU5MC4uMTliNDdjZCAxMDA2NDQKLS0tLSBhL3NyYy9uc3Bhd24vbnNwYXduLmMKLSsrKyBiL3NyYy9uc3Bhd24vbnNwYXduLmMKLUBAIC0xMjMsNiArMTIzLDggQEAgdHlwZWRlZiBlbnVtIExpbmtKb3VybmFsIHsKLSAgICAgICAgIExJTktfR1VFU1QKLSB9IExpbmtKb3VybmFsOwotIAotKyNpbmNsdWRlICJjb25maWcuaCIKLSsKLSBzdGF0aWMgY2hhciAqYXJnX2RpcmVjdG9yeSA9IE5VTEw7Ci0gc3RhdGljIGNoYXIgKmFyZ190ZW1wbGF0ZSA9IE5VTEw7Ci0gc3RhdGljIGNoYXIgKmFyZ19jaGRpciA9IE5VTEw7Ci1AQCAtMjg3MSw3ICsyODczLDEyIEBAIHN0YXRpYyBpbnQgaW5uZXJfY2hpbGQoCi0gICAgICAgICAgICAgICAgIGFbMF0gPSAoY2hhciopICIvc2Jpbi9pbml0IjsKLSAgICAgICAgICAgICAgICAgZXhlY3ZlKGFbMF0sIGEsIGVudl91c2UpOwotICAgICAgICAgfSBlbHNlIGlmICghc3Rydl9pc2VtcHR5KGFyZ19wYXJhbWV0ZXJzKSkKLSsjaWZkZWYgSEFWRV9FWEVDVlBFCi0gICAgICAgICAgICAgICAgIGV4ZWN2cGUoYXJnX3BhcmFtZXRlcnNbMF0sIGFyZ19wYXJhbWV0ZXJzLCBlbnZfdXNlKTsKLSsjZWxzZQotKyAgICAgICAgICAgICAgICBlbnZpcm9uID0gZW52X3VzZTsKLSsgICAgICAgICAgICAgICAgZXhlY3ZwKGFyZ19wYXJhbWV0ZXJzWzBdLCBhcmdfcGFyYW1ldGVycyk7Ci0rI2VuZGlmIC8qIEhBVkVfRVhFQ1ZQRSAqLwotICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgIGlmICghYXJnX2NoZGlyKQotICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElmIHdlIGNhbm5vdCBjaGFuZ2UgdGhlIGRpcmVjdG9yeSwgd2UnbGwgZW5kIHVwIGluIC8sIHRoYXQgaXMgZXhwZWN0ZWQuICovCi0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDktdGVzdC1oZXhkZWNvY3QuYy1JbmNsdWRlLW1pc3NpbmcuaC1mb3JtLXN0cm5kdXBhLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA5LXRlc3QtaGV4ZGVjb2N0LmMtSW5jbHVkZS1taXNzaW5nLmgtZm9ybS1zdHJuZHVwYS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzY5NGRjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA5LXRlc3QtaGV4ZGVjb2N0LmMtSW5jbHVkZS1taXNzaW5nLmgtZm9ybS1zdHJuZHVwYS5wYXRjaApAQCAtMCwwICsxLDI3IEBACitGcm9tIDc1ZjRlN2YxNjdkZTUzM2ExNjBlZTFhZjJhMDNmYmE0YzVhNWZmYzYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCAyMyBPY3QgMjAxNyAxMjozMzoyMiAtMDcwMAorU3ViamVjdDogW1BBVENIIDA5LzEyXSB0ZXN0LWhleGRlY29jdC5jOiBJbmNsdWRlIG1pc3NpbmcuaCBmb3JtIHN0cm5kdXBhCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgc3JjL3Rlc3QvdGVzdC1oZXhkZWNvY3QuYyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvdGVzdC1oZXhkZWNvY3QuYyBiL3NyYy90ZXN0L3Rlc3QtaGV4ZGVjb2N0LmMKK2luZGV4IGZjYWU0MjdlNy4uNWViNWUyZWQ3IDEwMDY0NAorLS0tIGEvc3JjL3Rlc3QvdGVzdC1oZXhkZWNvY3QuYworKysrIGIvc3JjL3Rlc3QvdGVzdC1oZXhkZWNvY3QuYworQEAgLTIxLDYgKzIxLDcgQEAKKyAjaW5jbHVkZSAiaGV4ZGVjb2N0LmgiCisgI2luY2x1ZGUgIm1hY3JvLmgiCisgI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCisrI2luY2x1ZGUgIm1pc3NpbmcuaCIKKyAKKyBzdGF0aWMgdm9pZCB0ZXN0X2hleGNoYXIodm9pZCkgeworICAgICAgICAgYXNzZXJ0X3NlKGhleGNoYXIoMHhhKSA9PSAnYScpOworLS0gCisyLjE0LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA5LXV0aWwtYnlwYXNzLXVuaW1wbGVtZW50ZWQtX1NDX1BIWVNfUEFHRVMtc3lzdGVtLWNvbmYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDktdXRpbC1ieXBhc3MtdW5pbXBsZW1lbnRlZC1fU0NfUEhZU19QQUdFUy1zeXN0ZW0tY29uZi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjE1MGJiMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDktdXRpbC1ieXBhc3MtdW5pbXBsZW1lbnRlZC1fU0NfUEhZU19QQUdFUy1zeXN0ZW0tY29uZi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLUZyb20gMDg1YzhiNmYyNTM3MjZhZDU0N2U3YmU4NGZmM2YyYjk5NzAxNDg4YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDkgTm92IDIwMTYgMTk6Mzg6MDcgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAwOS8xOV0gdXRpbDogYnlwYXNzIHVuaW1wbGVtZW50ZWQgX1NDX1BIWVNfUEFHRVMgc3lzdGVtCi0gY29uZmlndXJhdGlvbiBBUEkgb24gdWNsaWJjCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbdWNsaWJjLXNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3JjL2Jhc2ljL3V0aWwuYyB8IDE1ICsrKysrKysrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvYmFzaWMvdXRpbC5jIGIvc3JjL2Jhc2ljL3V0aWwuYwotaW5kZXggYzFiNWNhMS4uNGM2MmQ0MyAxMDA2NDQKLS0tLSBhL3NyYy9iYXNpYy91dGlsLmMKLSsrKyBiL3NyYy9iYXNpYy91dGlsLmMKLUBAIC03NDIsNiArNzQyLDIwIEBAIHVpbnQ2NF90IHBoeXNpY2FsX21lbW9yeSh2b2lkKSB7Ci0gICAgICAgICAgKiBJbiBvcmRlciB0byBzdXBwb3J0IGNvbnRhaW5lcnMgbmljZWx5IHRoYXQgaGF2ZSBhIGNvbmZpZ3VyZWQgbWVtb3J5IGxpbWl0IHdlJ2xsIHRha2UgdGhlIG1pbmltdW0gb2YgdGhlCi0gICAgICAgICAgKiBwaHlzaWNhbGx5IHJlcG9ydGVkIGFtb3VudCBvZiBtZW1vcnkgYW5kIHRoZSBsaW1pdCBjb25maWd1cmVkIGZvciB0aGUgcm9vdCBjZ3JvdXAsIGlmIHRoZXJlIGlzIGFueS4gKi8KLSAKLSsjaWZkZWYgX19VQ0xJQkNfXwotKyAgICAgICAgY2hhciBsaW5lWzEyOF07Ci0rICAgICAgICBGSUxFICpmID0gZm9wZW4oIi9wcm9jL21lbWluZm8iLCAiciIpOwotKyAgICAgICAgaWYgKGYgPT0gTlVMTCkKLSsgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgICB3aGlsZSAoIWZlb2YoZikgJiYgZmdldHMobGluZSwgc2l6ZW9mKGxpbmUpLTEsIGYpKSB7Ci0rICAgICAgICAgICAgICAgIGlmIChzc2NhbmYobGluZSwgIk1lbVRvdGFsOiAlbGkga0IiLCAmbWVtKSA9PSAxKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgbWVtICo9IDEwMjQ7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICAgICAgICAgIH0KLSsgICAgICAgIH0KLSsgICAgICAgIGZjbG9zZShmKTsKLSsgICAgICAgIHJldHVybiAodWludDY0X3QpIG1lbTsKLSsjZWxzZQotICAgICAgICAgc2MgPSBzeXNjb25mKF9TQ19QSFlTX1BBR0VTKTsKLSAgICAgICAgIGFzc2VydChzYyA+IDApOwotIAotQEAgLTc2Miw2ICs3NzYsNyBAQCB1aW50NjRfdCBwaHlzaWNhbF9tZW1vcnkodm9pZCkgewotICAgICAgICAgbGltICo9IHBzOwotIAotICAgICAgICAgcmV0dXJuIE1JTihtZW0sIGxpbSk7Ci0rI2VuZGlmCi0gfQotIAotIHVpbnQ2NF90IHBoeXNpY2FsX21lbW9yeV9zY2FsZSh1aW50NjRfdCB2LCB1aW50NjRfdCBtYXgpIHsKLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMC10ZXN0LXNpemVvZi5jLURpc2FibGUtdGVzdHMtZm9yLW1pc3NpbmctdHlwZWRlZnMtaW4tLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEwLXRlc3Qtc2l6ZW9mLmMtRGlzYWJsZS10ZXN0cy1mb3ItbWlzc2luZy10eXBlZGVmcy1pbi0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODA4YzgzYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMC10ZXN0LXNpemVvZi5jLURpc2FibGUtdGVzdHMtZm9yLW1pc3NpbmctdHlwZWRlZnMtaW4tLnBhdGNoCkBAIC0wLDAgKzEsNDkgQEAKK0Zyb20gNmU5ZDJiY2FhNmY4ODZiMjM4NGMxYzM1YTA0ZTRlYmMxNDhhZWE2OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDIzIE9jdCAyMDE3IDEyOjQwOjI1IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMTAvMTJdIHRlc3Qtc2l6ZW9mLmM6IERpc2FibGUgdGVzdHMgZm9yIG1pc3NpbmcgdHlwZWRlZnMgaW4KKyBtdXNsCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgc3JjL3Rlc3QvdGVzdC1zaXplb2YuYyB8IDUgKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvdGVzdC90ZXN0LXNpemVvZi5jIGIvc3JjL3Rlc3QvdGVzdC1zaXplb2YuYworaW5kZXggMjY5YWRmZDE4Li5iYTc4NTVkZmYgMTAwNjQ0CistLS0gYS9zcmMvdGVzdC90ZXN0LXNpemVvZi5jCisrKysgYi9zcmMvdGVzdC90ZXN0LXNpemVvZi5jCitAQCAtMTgsNyArMTgsNiBAQAorICoqKi8KKyAKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKy0KKyAjaW5jbHVkZSAidGltZS11dGlsLmgiCisgCisgLyogUHJpbnQgaW5mb3JtYXRpb24gYWJvdXQgdmFyaW91cyB0eXBlcy4gVXNlZnVsIHdoZW4gZGlhZ25vc2luZworQEAgLTQ4LDggKzQ3LDEwIEBAIGludCBtYWluKHZvaWQpIHsKKyAgICAgICAgIGluZm8odW5zaWduZWQpOworICAgICAgICAgaW5mbyhsb25nIHVuc2lnbmVkKTsKKyAgICAgICAgIGluZm8obG9uZyBsb25nIHVuc2lnbmVkKTsKKysjaWZkZWYgX19HTElCQ19fCisgICAgICAgICBpbmZvKF9fc3lzY2FsbF91bG9uZ190KTsKKyAgICAgICAgIGluZm8oX19zeXNjYWxsX3Nsb25nX3QpOworKyNlbmRpZgorIAorICAgICAgICAgaW5mbyhmbG9hdCk7CisgICAgICAgICBpbmZvKGRvdWJsZSk7CitAQCAtNTksNyArNjAsOSBAQCBpbnQgbWFpbih2b2lkKSB7CisgICAgICAgICBpbmZvKHNzaXplX3QpOworICAgICAgICAgaW5mbyh0aW1lX3QpOworICAgICAgICAgaW5mbyh1c2VjX3QpOworKyNpZmRlZiBfX0dMSUJDX18KKyAgICAgICAgIGluZm8oX190aW1lX3QpOworKyNlbmRpZgorIAorICAgICAgICAgaW5mbyhlbnVtIEVudW0pOworICAgICAgICAgaW5mbyhlbnVtIEJpZ0VudW0pOworLS0gCisyLjE0LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDExLWRvbi10LXVzZS1nbGliYy1zcGVjaWZpYy1xc29ydF9yLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDExLWRvbi10LXVzZS1nbGliYy1zcGVjaWZpYy1xc29ydF9yLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjZmU4MjkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTEtZG9uLXQtdXNlLWdsaWJjLXNwZWNpZmljLXFzb3J0X3IucGF0Y2gKQEAgLTAsMCArMSwxMDUgQEAKK0Zyb20gMmViNDVmNWEwYThiZmI4YmRjYTA4NDU4N2FkMjhlNTAwMWYzY2M0YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEVtaWwgUmVubmVyIEJlcnRoaW5nIDxzeXN0ZW1kQGVzbWlsLmRrPgorRGF0ZTogVGh1LCAxOCBTZXAgMjAxNCAxNToyNDo1NiArMDIwMAorU3ViamVjdDogW1BBVENIIDExLzEyXSBkb24ndCB1c2UgZ2xpYmMtc3BlY2lmaWMgcXNvcnRfcgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIHNyYy9od2RiL2h3ZGIuYyAgICAgICAgIHwgMTggKysrKysrKysrKystLS0tLS0tCisgc3JjL3VkZXYvdWRldmFkbS1od2RiLmMgfCAxNiArKysrKysrKysrLS0tLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9od2RiL2h3ZGIuYyBiL3NyYy9od2RiL2h3ZGIuYworaW5kZXggNzkzMzk4Y2E2Li42NjliMDA4MTggMTAwNjQ0CistLS0gYS9zcmMvaHdkYi9od2RiLmMKKysrKyBiL3NyYy9od2RiL2h3ZGIuYworQEAgLTE1MSwxMyArMTUxLDEyIEBAIHN0YXRpYyB2b2lkIHRyaWVfZnJlZShzdHJ1Y3QgdHJpZSAqdHJpZSkgeworIAorIERFRklORV9UUklWSUFMX0NMRUFOVVBfRlVOQyhzdHJ1Y3QgdHJpZSosIHRyaWVfZnJlZSk7CisgCistc3RhdGljIGludCB0cmllX3ZhbHVlc19jbXAoY29uc3Qgdm9pZCAqdjEsIGNvbnN0IHZvaWQgKnYyLCB2b2lkICphcmcpIHsKKytzdGF0aWMgc3RydWN0IHRyaWUgKnRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZTsKKytzdGF0aWMgaW50IHRyaWVfdmFsdWVzX2NtcChjb25zdCB2b2lkICp2MSwgY29uc3Qgdm9pZCAqdjIpIHsKKyAgICAgICAgIGNvbnN0IHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5ICp2YWwxID0gdjE7CisgICAgICAgICBjb25zdCBzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSAqdmFsMiA9IHYyOworLSAgICAgICAgc3RydWN0IHRyaWUgKnRyaWUgPSBhcmc7CistCistICAgICAgICByZXR1cm4gc3RyY21wKHRyaWUtPnN0cmluZ3MtPmJ1ZiArIHZhbDEtPmtleV9vZmYsCistICAgICAgICAgICAgICAgICAgICAgIHRyaWUtPnN0cmluZ3MtPmJ1ZiArIHZhbDItPmtleV9vZmYpOworKyAgICAgICAgcmV0dXJuIHN0cmNtcCh0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUtPnN0cmluZ3MtPmJ1ZiArIHZhbDEtPmtleV9vZmYsCisrICAgICAgICAgICAgICAgICAgICAgIHRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZS0+c3RyaW5ncy0+YnVmICsgdmFsMi0+a2V5X29mZik7CisgfQorIAorIHN0YXRpYyBpbnQgdHJpZV9ub2RlX2FkZF92YWx1ZShzdHJ1Y3QgdHJpZSAqdHJpZSwgc3RydWN0IHRyaWVfbm9kZSAqbm9kZSwKK0BAIC0xODIsNyArMTgxLDEwIEBAIHN0YXRpYyBpbnQgdHJpZV9ub2RlX2FkZF92YWx1ZShzdHJ1Y3QgdHJpZSAqdHJpZSwgc3RydWN0IHRyaWVfbm9kZSAqbm9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAudmFsdWVfb2ZmID0gdiwKKyAgICAgICAgICAgICAgICAgfTsKKyAKKy0gICAgICAgICAgICAgICAgdmFsID0geGJzZWFyY2hfcigmc2VhcmNoLCBub2RlLT52YWx1ZXMsIG5vZGUtPnZhbHVlc19jb3VudCwgc2l6ZW9mKHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5KSwgdHJpZV92YWx1ZXNfY21wLCB0cmllKTsKKysgICAgICAgICAgICAgICAgdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllID0gdHJpZTsKKysgICAgICAgICAgICAgICAgdmFsID0gYnNlYXJjaCgmc2VhcmNoLCBub2RlLT52YWx1ZXMsIG5vZGUtPnZhbHVlc19jb3VudCwgc2l6ZW9mKHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5KSwgdHJpZV92YWx1ZXNfY21wKTsKKysgICAgICAgICAgICAgICAgdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllID0gTlVMTDsKKysKKyAgICAgICAgICAgICAgICAgaWYgKHZhbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEF0IHRoaXMgcG9pbnQgd2UgaGF2ZSAyIGlkZW50aWNhbCBwcm9wZXJ0aWVzIG9uIHRoZSBzYW1lIG1hdGNoLXN0cmluZy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgKiBTaW5jZSB3ZSBwcm9jZXNzIGZpbGVzIGluIG9yZGVyLCB3ZSBqdXN0IHJlcGxhY2UgdGhlIHByZXZpb3VzIHZhbHVlLgorQEAgLTIwNyw3ICsyMDksOSBAQCBzdGF0aWMgaW50IHRyaWVfbm9kZV9hZGRfdmFsdWUoc3RydWN0IHRyaWUgKnRyaWUsIHN0cnVjdCB0cmllX25vZGUgKm5vZGUsCisgICAgICAgICBub2RlLT52YWx1ZXNbbm9kZS0+dmFsdWVzX2NvdW50XS5maWxlX3ByaW9yaXR5ID0gZmlsZV9wcmlvcml0eTsKKyAgICAgICAgIG5vZGUtPnZhbHVlc1tub2RlLT52YWx1ZXNfY291bnRdLmxpbmVfbnVtYmVyID0gbGluZV9udW1iZXI7CisgICAgICAgICBub2RlLT52YWx1ZXNfY291bnQrKzsKKy0gICAgICAgIHFzb3J0X3Iobm9kZS0+dmFsdWVzLCBub2RlLT52YWx1ZXNfY291bnQsIHNpemVvZihzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSksIHRyaWVfdmFsdWVzX2NtcCwgdHJpZSk7CisrICAgICAgICB0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUgPSB0cmllOworKyAgICAgICAgcXNvcnQobm9kZS0+dmFsdWVzLCBub2RlLT52YWx1ZXNfY291bnQsIHNpemVvZihzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSksIHRyaWVfdmFsdWVzX2NtcCk7CisrICAgICAgICB0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUgPSBOVUxMOworICAgICAgICAgcmV0dXJuIDA7CisgfQorIAorZGlmZiAtLWdpdCBhL3NyYy91ZGV2L3VkZXZhZG0taHdkYi5jIGIvc3JjL3VkZXYvdWRldmFkbS1od2RiLmMKK2luZGV4IDY5YjBiOTAyNS4uZmJkMjEzMzAwIDEwMDY0NAorLS0tIGEvc3JjL3VkZXYvdWRldmFkbS1od2RiLmMKKysrKyBiL3NyYy91ZGV2L3VkZXZhZG0taHdkYi5jCitAQCAtMTI4LDEzICsxMjgsMTMgQEAgc3RhdGljIHZvaWQgdHJpZV9ub2RlX2NsZWFudXAoc3RydWN0IHRyaWVfbm9kZSAqbm9kZSkgeworICAgICAgICAgZnJlZShub2RlKTsKKyB9CisgCistc3RhdGljIGludCB0cmllX3ZhbHVlc19jbXAoY29uc3Qgdm9pZCAqdjEsIGNvbnN0IHZvaWQgKnYyLCB2b2lkICphcmcpIHsKKytzdGF0aWMgc3RydWN0IHRyaWUgKnRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZTsKKytzdGF0aWMgaW50IHRyaWVfdmFsdWVzX2NtcChjb25zdCB2b2lkICp2MSwgY29uc3Qgdm9pZCAqdjIpIHsKKyAgICAgICAgIGNvbnN0IHN0cnVjdCB0cmllX3ZhbHVlX2VudHJ5ICp2YWwxID0gdjE7CisgICAgICAgICBjb25zdCBzdHJ1Y3QgdHJpZV92YWx1ZV9lbnRyeSAqdmFsMiA9IHYyOworLSAgICAgICAgc3RydWN0IHRyaWUgKnRyaWUgPSBhcmc7CisgCistICAgICAgICByZXR1cm4gc3RyY21wKHRyaWUtPnN0cmluZ3MtPmJ1ZiArIHZhbDEtPmtleV9vZmYsCistICAgICAgICAgICAgICAgICAgICAgIHRyaWUtPnN0cmluZ3MtPmJ1ZiArIHZhbDItPmtleV9vZmYpOworKyAgICAgICAgcmV0dXJuIHN0cmNtcCh0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUtPnN0cmluZ3MtPmJ1ZiArIHZhbDEtPmtleV9vZmYsCisrICAgICAgICAgICAgICAgICAgICAgIHRyaWVfbm9kZV9hZGRfdmFsdWVfdHJpZS0+c3RyaW5ncy0+YnVmICsgdmFsMi0+a2V5X29mZik7CisgfQorIAorIHN0YXRpYyBpbnQgdHJpZV9ub2RlX2FkZF92YWx1ZShzdHJ1Y3QgdHJpZSAqdHJpZSwgc3RydWN0IHRyaWVfbm9kZSAqbm9kZSwKK0BAIC0xNTUsNyArMTU1LDkgQEAgc3RhdGljIGludCB0cmllX25vZGVfYWRkX3ZhbHVlKHN0cnVjdCB0cmllICp0cmllLCBzdHJ1Y3QgdHJpZV9ub2RlICpub2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgIC52YWx1ZV9vZmYgPSB2LAorICAgICAgICAgICAgICAgICB9OworIAorLSAgICAgICAgICAgICAgICB2YWwgPSB4YnNlYXJjaF9yKCZzZWFyY2gsIG5vZGUtPnZhbHVlcywgbm9kZS0+dmFsdWVzX2NvdW50LCBzaXplb2Yoc3RydWN0IHRyaWVfdmFsdWVfZW50cnkpLCB0cmllX3ZhbHVlc19jbXAsIHRyaWUpOworKyAgICAgICAgICAgICAgICB0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUgPSB0cmllOworKyAgICAgICAgICAgICAgICB2YWwgPSBic2VhcmNoKCZzZWFyY2gsIG5vZGUtPnZhbHVlcywgbm9kZS0+dmFsdWVzX2NvdW50LCBzaXplb2Yoc3RydWN0IHRyaWVfdmFsdWVfZW50cnkpLCB0cmllX3ZhbHVlc19jbXApOworKyAgICAgICAgICAgICAgICB0cmllX25vZGVfYWRkX3ZhbHVlX3RyaWUgPSBOVUxMOworICAgICAgICAgICAgICAgICBpZiAodmFsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgLyogcmVwbGFjZSBleGlzdGluZyBlYXJsaWVyIGtleSB3aXRoIG5ldyB2YWx1ZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgIHZhbC0+dmFsdWVfb2ZmID0gdjsKK0BAIC0xNzIsNyArMTc0LDkgQEAgc3RhdGljIGludCB0cmllX25vZGVfYWRkX3ZhbHVlKHN0cnVjdCB0cmllICp0cmllLCBzdHJ1Y3QgdHJpZV9ub2RlICpub2RlLAorICAgICAgICAgbm9kZS0+dmFsdWVzW25vZGUtPnZhbHVlc19jb3VudF0ua2V5X29mZiA9IGs7CisgICAgICAgICBub2RlLT52YWx1ZXNbbm9kZS0+dmFsdWVzX2NvdW50XS52YWx1ZV9vZmYgPSB2OworICAgICAgICAgbm9kZS0+dmFsdWVzX2NvdW50Kys7CistICAgICAgICBxc29ydF9yKG5vZGUtPnZhbHVlcywgbm9kZS0+dmFsdWVzX2NvdW50LCBzaXplb2Yoc3RydWN0IHRyaWVfdmFsdWVfZW50cnkpLCB0cmllX3ZhbHVlc19jbXAsIHRyaWUpOworKyAgICAgICAgdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllID0gdHJpZTsKKysgICAgICAgIHFzb3J0KG5vZGUtPnZhbHVlcywgbm9kZS0+dmFsdWVzX2NvdW50LCBzaXplb2Yoc3RydWN0IHRyaWVfdmFsdWVfZW50cnkpLCB0cmllX3ZhbHVlc19jbXApOworKyAgICAgICAgdHJpZV9ub2RlX2FkZF92YWx1ZV90cmllID0gTlVMTDsKKyAgICAgICAgIHJldHVybiAwOworIH0KKyAKKy0tIAorMi4xNC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMi1kb24tdC1wYXNzLUFUX1NZTUxJTktfTk9GT0xMT1ctZmxhZy10by1mYWNjZXNzYXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTItZG9uLXQtcGFzcy1BVF9TWU1MSU5LX05PRk9MTE9XLWZsYWctdG8tZmFjY2Vzc2F0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhNmRiNjUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTItZG9uLXQtcGFzcy1BVF9TWU1MSU5LX05PRk9MTE9XLWZsYWctdG8tZmFjY2Vzc2F0LnBhdGNoCkBAIC0wLDAgKzEsOTkgQEAKK0Zyb20gOTYyMTYxOGM3MDFhMmQ1ZWIzZTI2ZjQwYzY4MzU0ZDRkZmI4Zjg3MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDEwIE9jdCAyMDE3IDE0OjMzOjMwIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMTIvMTJdIGRvbid0IHBhc3MgQVRfU1lNTElOS19OT0ZPTExPVyBmbGFnIHRvIGZhY2Nlc3NhdCgpCisKK0F2b2lkIHVzaW5nIEFUX1NZTUxJTktfTk9GT0xMT1cgZmxhZy4gSXQgZG9lc24ndCBzZWVtIGxpa2UgdGhlIHJpZ2h0Cit0aGluZyB0byBkbyBhbmQgaXQncyBub3QgcG9ydGFibGUgKG5vdCBzdXBwb3J0ZWQgYnkgbXVzbCkuIFNlZToKKworICBodHRwOi8vbGlzdHMubGFuZGxleS5uZXQvcGlwZXJtYWlsL3RveWJveC1sYW5kbGV5Lm5ldC8yMDE0LVNlcHRlbWJlci8wMDM2MTAuaHRtbAorICBodHRwOi8vd3d3Lm9wZW53YWxsLmNvbS9saXN0cy9tdXNsLzIwMTUvMDIvMDUvMgorCitOb3RlIHRoYXQgbGFjY2VzcygpIGlzIG5ldmVyIHBhc3NpbmcgQVRfRUFDQ0VTUyBzbyBhIGxvdCBvZiB0aGUKK2Rpc2N1c3Npb24gaW4gdGhlIGxpbmtzIGFib3ZlIGRvZXNuJ3QgYXBwbHkuIE5vdGUgYWxzbyB0aGF0CisoY3VycmVudGx5KSBhbGwgc3lzdGVtZCBjYWxsZXJzIG9mIGxhY2Nlc3MoKSBwYXNzIG1vZGUgYXMgRl9PSywgc28KK29ubHkgY2hlY2sgZm9yIGV4aXN0ZW5jZSBvZiBhIGZpbGUsIG5vdCBhY2Nlc3MgcGVybWlzc2lvbnMuCitUaGVyZWZvcmUsIGluIHRoaXMgY2FzZSwgdGhlIG9ubHkgZGlzdGljdGlvbiBiZXR3ZWVuIGZhY2Nlc3NhdCgpCit3aXRoIChmbGFnID09IDApIGFuZCAoZmxhZyA9PSBBVF9TWU1MSU5LX05PRk9MTE9XKSBpcyB0aGUgYmVoYXZpb3VyCitmb3IgYnJva2VuIHN5bWxpbmtzOyBsYWNjZXNzKCkgb24gYSBicm9rZW4gc3ltbGluayB3aWxsIHN1Y2NlZWQgd2l0aAorKGZsYWcgPT0gQVRfU1lNTElOS19OT0ZPTExPVykgYW5kIGZhaWwgKGZsYWcgPT0gMCkuCisKK1RoZSBsYWNjZXNzKCkgbWFjcm9zIHdhcyBhZGRlZCB0byBzeXN0ZW1kIHNvbWUgdGltZSBhZ28gYW5kIGl0J3Mgbm90CitjbGVhciBpZiBvciB3aHkgaXQgbmVlZHMgdG8gcmV0dXJuIHN1Y2Nlc3MgZm9yIGJyb2tlbiBzeW1saW5rcy4gTWF5YmUKK2p1c3QgaGlzdG9yaWNhbCBhbmQgbm90IGFjdHVhbGx5IG5lY2Vzc2FyeSBvciBkZXNpcmVkIGJlaGF2aW91cj8KKworU2lnbmVkLW9mZi1ieTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBzcmMvYmFzaWMvZnMtdXRpbC5oICAgICAgICAgIHwgMjIgKysrKysrKysrKysrKysrKysrKysrLQorIHNyYy9zaGFyZWQvYmFzZS1maWxlc3lzdGVtLmMgfCAgNiArKystLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDI0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvZnMtdXRpbC5oIGIvc3JjL2Jhc2ljL2ZzLXV0aWwuaAoraW5kZXggMDk0YWNmMTc5Li5jZGJjMGFlNzIgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvZnMtdXRpbC5oCisrKysgYi9zcmMvYmFzaWMvZnMtdXRpbC5oCitAQCAtNDgsNyArNDgsMjcgQEAgaW50IGZjaG1vZF91bWFzayhpbnQgZmQsIG1vZGVfdCBtb2RlKTsKKyAKKyBpbnQgZmRfd2Fybl9wZXJtaXNzaW9ucyhjb25zdCBjaGFyICpwYXRoLCBpbnQgZmQpOworIAorLSNkZWZpbmUgbGFjY2VzcyhwYXRoLCBtb2RlKSBmYWNjZXNzYXQoQVRfRkRDV0QsIChwYXRoKSwgKG1vZGUpLCBBVF9TWU1MSU5LX05PRk9MTE9XKQorKy8qCisrICAgQXZvaWQgdXNpbmcgQVRfU1lNTElOS19OT0ZPTExPVyBmbGFnLiBJdCBkb2Vzbid0IHNlZW0gbGlrZSB0aGUgcmlnaHQgdGhpbmcgdG8KKysgICBkbyBhbmQgaXQncyBub3QgcG9ydGFibGUgKG5vdCBzdXBwb3J0ZWQgYnkgbXVzbCkuIFNlZToKKysKKysgICAgIGh0dHA6Ly9saXN0cy5sYW5kbGV5Lm5ldC9waXBlcm1haWwvdG95Ym94LWxhbmRsZXkubmV0LzIwMTQtU2VwdGVtYmVyLzAwMzYxMC5odG1sCisrICAgICBodHRwOi8vd3d3Lm9wZW53YWxsLmNvbS9saXN0cy9tdXNsLzIwMTUvMDIvMDUvMgorKworKyAgIE5vdGUgdGhhdCBsYWNjZXNzKCkgaXMgbmV2ZXIgcGFzc2luZyBBVF9FQUNDRVNTIHNvIGEgbG90IG9mIHRoZSBkaXNjdXNzaW9uIGluCisrICAgdGhlIGxpbmtzIGFib3ZlIGRvZXNuJ3QgYXBwbHkuIE5vdGUgYWxzbyB0aGF0IChjdXJyZW50bHkpIGFsbCBzeXN0ZW1kIGNhbGxlcnMKKysgICBvZiBsYWNjZXNzKCkgcGFzcyBtb2RlIGFzIEZfT0ssIHNvIG9ubHkgY2hlY2sgZm9yIGV4aXN0ZW5jZSBvZiBhIGZpbGUsIG5vdAorKyAgIGFjY2VzcyBwZXJtaXNzaW9ucy4gVGhlcmVmb3JlLCBpbiB0aGlzIGNhc2UsIHRoZSBvbmx5IGRpc3RpY3Rpb24gYmV0d2VlbgorKyAgIGZhY2Nlc3NhdCgpIHdpdGggKGZsYWcgPT0gMCkgYW5kIChmbGFnID09IEFUX1NZTUxJTktfTk9GT0xMT1cpIGlzIHRoZQorKyAgIGJlaGF2aW91ciBmb3IgYnJva2VuIHN5bWxpbmtzOyBsYWNjZXNzKCkgb24gYSBicm9rZW4gc3ltbGluayB3aWxsIHN1Y2NlZWQKKysgICB3aXRoIChmbGFnID09IEFUX1NZTUxJTktfTk9GT0xMT1cpIGFuZCBmYWlsIChmbGFnID09IDApLgorKworKyAgIFRoZSBsYWNjZXNzKCkgbWFjcm9zIHdhcyBhZGRlZCB0byBzeXN0ZW1kIHNvbWUgdGltZSBhZ28gYW5kIGl0J3Mgbm90IGNsZWFyIGlmCisrICAgb3Igd2h5IGl0IG5lZWRzIHRvIHJldHVybiBzdWNjZXNzIGZvciBicm9rZW4gc3ltbGlua3MuIE1heWJlIGp1c3QgaGlzdG9yaWNhbAorKyAgIGFuZCBub3QgYWN0dWFsbHkgbmVjZXNzYXJ5IG9yIGRlc2lyZWQgYmVoYXZpb3VyPworKyovCisrCisrI2RlZmluZSBsYWNjZXNzKHBhdGgsIG1vZGUpIGZhY2Nlc3NhdChBVF9GRENXRCwgKHBhdGgpLCAobW9kZSksIDApCisgCisgaW50IHRvdWNoX2ZpbGUoY29uc3QgY2hhciAqcGF0aCwgYm9vbCBwYXJlbnRzLCB1c2VjX3Qgc3RhbXAsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkLCBtb2RlX3QgbW9kZSk7CisgaW50IHRvdWNoKGNvbnN0IGNoYXIgKnBhdGgpOworZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvYmFzZS1maWxlc3lzdGVtLmMgYi9zcmMvc2hhcmVkL2Jhc2UtZmlsZXN5c3RlbS5jCitpbmRleCA5MDNhMTg3ODYuLjJmNjA1MmVlNyAxMDA2NDQKKy0tLSBhL3NyYy9zaGFyZWQvYmFzZS1maWxlc3lzdGVtLmMKKysrKyBiL3NyYy9zaGFyZWQvYmFzZS1maWxlc3lzdGVtLmMKK0BAIC03MCw3ICs3MCw3IEBAIGludCBiYXNlX2ZpbGVzeXN0ZW1fY3JlYXRlKGNvbnN0IGNoYXIgKnJvb3QsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkKSB7CisgICAgICAgICAgICAgICAgIHJldHVybiBsb2dfZXJyb3JfZXJybm8oZXJybm8sICJGYWlsZWQgdG8gb3BlbiByb290IGZpbGUgc3lzdGVtOiAlbSIpOworIAorICAgICAgICAgZm9yIChpID0gMDsgaSA8IEVMRU1FTlRTT0YodGFibGUpOyBpICsrKSB7CistICAgICAgICAgICAgICAgIGlmIChmYWNjZXNzYXQoZmQsIHRhYmxlW2ldLmRpciwgRl9PSywgQVRfU1lNTElOS19OT0ZPTExPVykgPj0gMCkKKysgICAgICAgICAgICAgICAgaWYgKGZhY2Nlc3NhdChmZCwgdGFibGVbaV0uZGlyLCBGX09LLCAwKSA+PSAwKQorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworIAorICAgICAgICAgICAgICAgICBpZiAodGFibGVbaV0udGFyZ2V0KSB7CitAQCAtNzgsNyArNzgsNyBAQCBpbnQgYmFzZV9maWxlc3lzdGVtX2NyZWF0ZShjb25zdCBjaGFyICpyb290LCB1aWRfdCB1aWQsIGdpZF90IGdpZCkgeworIAorICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNoZWNrIGlmIG9uZSBvZiB0aGUgdGFyZ2V0cyBleGlzdHMgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICBOVUxTVFJfRk9SRUFDSChzLCB0YWJsZVtpXS50YXJnZXQpIHsKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmYWNjZXNzYXQoZmQsIHMsIEZfT0ssIEFUX1NZTUxJTktfTk9GT0xMT1cpIDwgMCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmYWNjZXNzYXQoZmQsIHMsIEZfT0ssIDApIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBjaGVjayBpZiBhIHNwZWNpZmljIGZpbGUgZXhpc3RzIGF0IHRoZSB0YXJnZXQgcGF0aCAqLworQEAgLTg5LDcgKzg5LDcgQEAgaW50IGJhc2VfZmlsZXN5c3RlbV9jcmVhdGUoY29uc3QgY2hhciAqcm9vdCwgdWlkX3QgdWlkLCBnaWRfdCBnaWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2dfb29tKCk7CisgCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmYWNjZXNzYXQoZmQsIHAsIEZfT0ssIEFUX1NZTUxJTktfTk9GT0xMT1cpIDwgMCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZhY2Nlc3NhdChmZCwgcCwgRl9PSywgMCkgPCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorIAorLS0gCisyLjE0LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEyLXJ1bGVzLXdoaXRlbGlzdC1oZC1kZXZpY2VzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEyLXJ1bGVzLXdoaXRlbGlzdC1oZC1kZXZpY2VzLnBhdGNoCmluZGV4IDg2NjZiZGMuLmViMzgwY2UgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMi1ydWxlcy13aGl0ZWxpc3QtaGQtZGV2aWNlcy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTItcnVsZXMtd2hpdGVsaXN0LWhkLWRldmljZXMucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDhjYzFhZTExZjU0ZGNjMzhlZTIxNjhiMGY5OTcwM2I4MzVkZDM5NDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGFiNWEyNzA0MDEzM2Y3Y2RmMDYyYWM4Y2ZlYjk0ZTA4MWQzNTY3YjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogV2VkLCA5IE5vdiAyMDE2IDE5OjQxOjEzIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMTIvMTldIHJ1bGVzOiB3aGl0ZWxpc3QgaGQqIGRldmljZXMKK1N1YmplY3Q6IFtQQVRDSCAwNy8xNF0gcnVsZXM6IHdoaXRlbGlzdCBoZCogZGV2aWNlcwogCiBxZW11IGJ5IGRlZmF1bHQgZW11bGF0ZXMgSURFIGFuZCB0aGUgbGludXgteW9jdG8ga2VybmVsKHMpIHVzZQogQ09ORklHX0lERSBpbnN0ZWFkIG9mIHRoZSBtb3JlIG1vZGVybiBsaWJzYXRhLCBzbyBkaXNrcyBhcHBlYXIgYXMKQEAgLTExLDIzICsxMSwyNCBAQAogCiBTaWduZWQtb2ZmLWJ5OiBQYXRyaWNrIE9obHkgPHBhdHJpY2sub2hseUBpbnRlbC5jb20+CiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCiAtLS0KICBydWxlcy82MC1wZXJzaXN0ZW50LXN0b3JhZ2UucnVsZXMgfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9ydWxlcy82MC1wZXJzaXN0ZW50LXN0b3JhZ2UucnVsZXMgYi9ydWxlcy82MC1wZXJzaXN0ZW50LXN0b3JhZ2UucnVsZXMKLWluZGV4IGMxM2QwNWMuLmIxNGZiZWQgMTAwNjQ0CitpbmRleCBkMjc0NWY2NWYuLjYzZjQ3MmJlOCAxMDA2NDQKIC0tLSBhL3J1bGVzLzYwLXBlcnNpc3RlbnQtc3RvcmFnZS5ydWxlcwogKysrIGIvcnVsZXMvNjAtcGVyc2lzdGVudC1zdG9yYWdlLnJ1bGVzCiBAQCAtNyw3ICs3LDcgQEAgQUNUSU9OPT0icmVtb3ZlIiwgR09UTz0icGVyc2lzdGVudF9zdG9yYWdlX2VuZCIKICBFTlZ7VURFVl9ESVNBQkxFX1BFUlNJU1RFTlRfU1RPUkFHRV9SVUxFU19GTEFHfT09IjEiLCBHT1RPPSJwZXJzaXN0ZW50X3N0b3JhZ2VfZW5kIgogIAogIFNVQlNZU1RFTSE9ImJsb2NrIiwgR09UTz0icGVyc2lzdGVudF9zdG9yYWdlX2VuZCIKLS1LRVJORUwhPSJsb29wKnxtbWNibGsqWzAtOV18bXNibGsqWzAtOV18bXNwYmxrKlswLTldfG52bWUqfHNkKnxzcip8dmQqfHh2ZCp8YmNhY2hlKnxjY2lzcyp8ZGFzZCp8dWJkKnxzY20qfHBtZW0qIiwgR09UTz0icGVyc2lzdGVudF9zdG9yYWdlX2VuZCIKLStLRVJORUwhPSJsb29wKnxtbWNibGsqWzAtOV18bXNibGsqWzAtOV18bXNwYmxrKlswLTldfG52bWUqfGhkKnxzZCp8c3IqfHZkKnx4dmQqfGJjYWNoZSp8Y2Npc3MqfGRhc2QqfHViZCp8c2NtKnxwbWVtKiIsIEdPVE89InBlcnNpc3RlbnRfc3RvcmFnZV9lbmQiCistS0VSTkVMIT0ibG9vcCp8bW1jYmxrKlswLTldfG1zYmxrKlswLTldfG1zcGJsaypbMC05XXxudm1lKnxzZCp8c3IqfHZkKnx4dmQqfGJjYWNoZSp8Y2Npc3MqfGRhc2QqfHViZCp8c2NtKnxwbWVtKnxuYmQqIiwgR09UTz0icGVyc2lzdGVudF9zdG9yYWdlX2VuZCIKKytLRVJORUwhPSJsb29wKnxtbWNibGsqWzAtOV18bXNibGsqWzAtOV18bXNwYmxrKlswLTldfG52bWUqfHNkKnxzcip8dmQqfHh2ZCp8YmNhY2hlKnxjY2lzcyp8ZGFzZCp8dWJkKnxzY20qfHBtZW0qfG5iZCp8aGQqIiwgR09UTz0icGVyc2lzdGVudF9zdG9yYWdlX2VuZCIKICAKICAjIGlnbm9yZSBwYXJ0aXRpb25zIHRoYXQgc3BhbiB0aGUgZW50aXJlIGRpc2sKICBURVNUPT0id2hvbGVfZGlzayIsIEdPVE89InBlcnNpc3RlbnRfc3RvcmFnZV9lbmQiCiAtLSAKLTIuMTAuMgorMi4xMy4yCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMy1NYWtlLXJvb3Qtcy1ob21lLWRpcmVjdG9yeS1jb25maWd1cmFibGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTMtTWFrZS1yb290LXMtaG9tZS1kaXJlY3RvcnktY29uZmlndXJhYmxlLnBhdGNoCmluZGV4IDJiMzMzMzcuLmFlZWJiZmIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMy1NYWtlLXJvb3Qtcy1ob21lLWRpcmVjdG9yeS1jb25maWd1cmFibGUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEzLU1ha2Utcm9vdC1zLWhvbWUtZGlyZWN0b3J5LWNvbmZpZ3VyYWJsZS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gNzllNjRhMDc4NDBlMGQ5N2Q2NmU0NjExMWYxYzA4NmJmODM5ODFiNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNDc5ZTFmNGFhMmI5ZjFjOTExYTRkMGRkMThlMjIyZDI0MWE5NzhlYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDkgTm92IDIwMTYgMjA6MzU6MzAgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAxMy8xOV0gTWFrZSByb290J3MgaG9tZSBkaXJlY3RvcnkgY29uZmlndXJhYmxlCitTdWJqZWN0OiBbUEFUQ0ggNDIvNDhdIE1ha2Ugcm9vdCdzIGhvbWUgZGlyZWN0b3J5IGNvbmZpZ3VyYWJsZQogCiBPcGVuRW1iZWRkZWQgaGFzIGEgY29uZmlndXJhYmxlIGhvbWUgZGlyZWN0b3J5IGZvciByb290LiBBbGxvdwogc3lzdGVtZCB0byBiZSBidWlsdCB1c2luZyBpdHMgaWRlYSBvZiB3aGF0IHJvb3QncyBob21lIGRpcmVjdG9yeQpAQCAtMTQsNiArMTQsNyBAQAogCiBTaWduZWQtb2ZmLWJ5OiBEYW4gTWNHcmVnb3IgPGRhbi5tY2dyZWdvckB1c2Fzay5jYT4KIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKIC0tLQogIE1ha2VmaWxlLmFtICAgICAgICAgICAgICAgIHwgMiArKwogIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgIHwgNyArKysrKysrCkBAIC0yNCwxOCArMjUsMTggQEAKICA2IGZpbGVzIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCA0MjBlMGUwLi4zMDEwYjAxIDEwMDY0NAoraW5kZXggMWJjZDkzMmMyLi5jMmI0YTk5ZDIgMTAwNjQ0CiAtLS0gYS9NYWtlZmlsZS5hbQogKysrIGIvTWFrZWZpbGUuYW0KLUBAIC0yMTMsNiArMjEzLDcgQEAgQU1fQ1BQRkxBR1MgPSBcCitAQCAtMjI2LDYgKzIyNiw3IEBAIEFNX0NQUEZMQUdTID0gXAogIAktRExJQkRJUj1cIiQobGliZGlyKVwiIFwKICAJLURST09UTElCRElSPVwiJChyb290bGliZGlyKVwiIFwKICAJLURST09UTElCRVhFQ0RJUj1cIiQocm9vdGxpYmV4ZWNkaXIpXCIgXAogKwktRFJPT1RIT01FRElSPVwiJChyb290aG9tZWRpcilcIiBcCi0gCS1EVEVTVF9ESVI9XCIkKGFic190b3Bfc3JjZGlyKS90ZXN0XCIgXAogIAktSSAkKHRvcF9zcmNkaXIpL3NyYyBcCiAgCS1JICQodG9wX2J1aWxkZGlyKS9zcmMvYmFzaWMgXAotQEAgLTYwNTcsNiArNjA1OCw3IEBAIHN1YnN0aXR1dGlvbnMgPSBcCisgCS1JICQodG9wX3NyY2Rpcikvc3JjL2Jhc2ljIFwKK0BAIC02MzU2LDYgKzYzNTcsNyBAQCBzdWJzdGl0dXRpb25zID0gXAogICAgICAgICAnfHJvb3RsaWJkaXI9JChyb290bGliZGlyKXwnIFwKICAgICAgICAgJ3xyb290bGliZXhlY2Rpcj0kKHJvb3RsaWJleGVjZGlyKXwnIFwKICAgICAgICAgJ3xyb290YmluZGlyPSQocm9vdGJpbmRpcil8JyBcCkBAIC00NCwxMCArNDUsMTAgQEAKICAgICAgICAgJ3xTWVNURU1DVEw9JChyb290YmluZGlyKS9zeXN0ZW1jdGx8JyBcCiAgICAgICAgICd8U1lTVEVNRF9OT1RJRlk9JChyb290YmluZGlyKS9zeXN0ZW1kLW5vdGlmeXwnIFwKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGIxMGM5NTIuLmRmYzBiZDMgMTAwNjQ0CitpbmRleCAwMzU0ZmZlNmEuLmI1M2NhMWYxYSAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMTUxMyw2ICsxNTEzLDExIEBAIEFDX0FSR19XSVRIKFtyb290bGliZGlyXSwKK0BAIC0xNjQxLDYgKzE2NDEsMTEgQEAgQUNfQVJHX1dJVEgoW3Jvb3RsaWJkaXJdLAogICAgICAgICAgW3dpdGhfcm9vdGxpYmRpcj0ke2xpYmRpcn1dKQogIEFYX05PUk1BTElaRV9QQVRIKFt3aXRoX3Jvb3RsaWJkaXJdKQogIApAQCAtNTcsMjkgKzU4LDI5IEBACiArICAgICAgICBbd2l0aF9yb290aG9tZWRpcj0vcm9vdF0pCiArCiAgQUNfQVJHX1dJVEgoW3BhbWxpYmRpcl0sCi0gICAgICAgICBBU19IRUxQX1NUUklORyhbLS13aXRoLXBhbWxpYmRpcj1ESVJdLCBbRGlyZWN0b3J5IGZvciBQQU0gbW9kdWxlc10pLAorICAgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1wYW1saWJkaXI9RElSXSwgW2RpcmVjdG9yeSBmb3IgUEFNIG1vZHVsZXNdKSwKICAgICAgICAgIFtdLAotQEAgLTE1OTgsNiArMTYwMyw3IEBAIEFDX1NVQlNUKFtwYW1saWJkaXJdLCBbJHdpdGhfcGFtbGliZGlyXSkKLSBBQ19TVUJTVChbcGFtY29uZmRpcl0sIFskd2l0aF9wYW1jb25mZGlyXSkKK0BAIC0xNzMzLDYgKzE3MzgsNyBAQCBBQ19TVUJTVChbcGFtY29uZmRpcl0sIFskd2l0aF9wYW1jb25mZGlyXSkKKyBBQ19TVUJTVChbcnBtbWFjcm9zZGlyXSwgWyR3aXRoX3JwbW1hY3Jvc2Rpcl0pCiAgQUNfU1VCU1QoW3Jvb3RwcmVmaXhdLCBbJHdpdGhfcm9vdHByZWZpeF0pCiAgQUNfU1VCU1QoW3Jvb3RsaWJkaXJdLCBbJHdpdGhfcm9vdGxpYmRpcl0pCiArQUNfU1VCU1QoW3Jvb3Rob21lZGlyXSwgWyR3aXRoX3Jvb3Rob21lZGlyXSkKICAKICBBQ19DT05GSUdfRklMRVMoWwogICAgICAgICAgTWFrZWZpbGUKLUBAIC0xNjg4LDYgKzE2OTQsNyBAQCBBQ19NU0dfUkVTVUxUKFsKK0BAIC0xODI5LDYgKzE4MzUsNyBAQCBBQ19NU0dfUkVTVUxUKFsKICAgICAgICAgIGluY2x1ZGVkaXI6ICAgICAgICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfQogICAgICAgICAgbGliIGRpcjogICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0KICAgICAgICAgIHJvb3RsaWIgZGlyOiAgICAgICAgICAgICAgICAgICAgICAgJHt3aXRoX3Jvb3RsaWJkaXJ9CiArICAgICAgICByb290IGhvbWUgZGlyOiAgICAgICAgICAgICAgICAgICAgICR7d2l0aF9yb290aG9tZWRpcn0KICAgICAgICAgIFN5c1YgaW5pdCBzY3JpcHRzOiAgICAgICAgICAgICAgICAgJHtTWVNURU1fU1lTVklOSVRfUEFUSH0KICAgICAgICAgIFN5c1YgcmM/LmQgZGlyZWN0b3JpZXM6ICAgICAgICAgICAgJHtTWVNURU1fU1lTVlJDTkRfUEFUSH0KLSAgICAgICAgIEJ1aWxkIFB5dGhvbjogICAgICAgICAgICAgICAgICAgICAgJHtQWVRIT059CisgICAgICAgICBidWlsZCBQeXRob246ICAgICAgICAgICAgICAgICAgICAgICR7UFlUSE9OfQogZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy91c2VyLXV0aWwuYyBiL3NyYy9iYXNpYy91c2VyLXV0aWwuYwotaW5kZXggOTM4NTMzZC4uM2Y5ZmRjNCAxMDA2NDQKK2luZGV4IGM2MTlkYWQ1Mi4uNjYyNjgyYWRmIDEwMDY0NAogLS0tIGEvc3JjL2Jhc2ljL3VzZXItdXRpbC5jCiArKysgYi9zcmMvYmFzaWMvdXNlci11dGlsLmMKLUBAIC0xMjcsNyArMTI3LDcgQEAgaW50IGdldF91c2VyX2NyZWRzKAorQEAgLTEyOSw3ICsxMjksNyBAQCBpbnQgZ2V0X3VzZXJfY3JlZHMoCiAgICAgICAgICAgICAgICAgICAgICAgICAgKmdpZCA9IDA7CiAgCiAgICAgICAgICAgICAgICAgIGlmIChob21lKQpAQCAtODgsNyArODksNyBAQAogIAogICAgICAgICAgICAgICAgICBpZiAoc2hlbGwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgKnNoZWxsID0gIi9iaW4vc2giOwotQEAgLTM4Nyw3ICszODcsNyBAQCBpbnQgZ2V0X2hvbWVfZGlyKGNoYXIgKipfaCkgeworQEAgLTM4OSw3ICszODksNyBAQCBpbnQgZ2V0X2hvbWVfZGlyKGNoYXIgKipfaCkgewogICAgICAgICAgLyogSGFyZGNvZGUgaG9tZSBkaXJlY3RvcnkgZm9yIHJvb3QgdG8gYXZvaWQgTlNTICovCiAgICAgICAgICB1ID0gZ2V0dWlkKCk7CiAgICAgICAgICBpZiAodSA9PSAwKSB7CkBAIC05OCwxMCArOTksMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKICAKIGRpZmYgLS1naXQgYS9zcmMvbnNwYXduL25zcGF3bi5jIGIvc3JjL25zcGF3bi9uc3Bhd24uYwotaW5kZXggMTliNDdjZC4uZTQyYmYxOSAxMDA2NDQKK2luZGV4IDhhNWZlZGQ0Yi4uN2IwMWVjMDc4IDEwMDY0NAogLS0tIGEvc3JjL25zcGF3bi9uc3Bhd24uYwogKysrIGIvc3JjL25zcGF3bi9uc3Bhd24uYwotQEAgLTI3OTgsNyArMjc5OCw3IEBAIHN0YXRpYyBpbnQgaW5uZXJfY2hpbGQoCitAQCAtMjI5MSw3ICsyMjkxLDcgQEAgc3RhdGljIGludCBpbm5lcl9jaGlsZCgKICAgICAgICAgIGlmIChlbnZwW25fZW52XSkKICAgICAgICAgICAgICAgICAgbl9lbnYrKzsKICAKQEAgLTExMCw4ICsxMTEsOCBAQAogICAgICAgICAgICAgIChhc3ByaW50ZigoY2hhcioqKShlbnZwICsgbl9lbnYrKyksICJVU0VSPSVzIiwgYXJnX3VzZXIgPyBhcmdfdXNlciA6ICJyb290IikgPCAwKSB8fAogICAgICAgICAgICAgIChhc3ByaW50ZigoY2hhcioqKShlbnZwICsgbl9lbnYrKyksICJMT0dOQU1FPSVzIiwgYXJnX3VzZXIgPyBhcmdfdXNlciA6ICJyb290IikgPCAwKSkKICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvZ19vb20oKTsKLUBAIC0yODgyLDcgKzI4ODIsNyBAQCBzdGF0aWMgaW50IGlubmVyX2NoaWxkKAotICAgICAgICAgZWxzZSB7CitAQCAtMjM3Myw3ICsyMzczLDcgQEAgc3RhdGljIGludCBpbm5lcl9jaGlsZCgKKyAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgIGlmICghYXJnX2NoZGlyKQogICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElmIHdlIGNhbm5vdCBjaGFuZ2UgdGhlIGRpcmVjdG9yeSwgd2UnbGwgZW5kIHVwIGluIC8sIHRoYXQgaXMgZXhwZWN0ZWQuICovCiAtICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQpIGNoZGlyKGhvbWUgPzogIi9yb290Iik7CkBAIC0xMjAsNyArMTIxLDcgQEAKICAgICAgICAgICAgICAgICAgZXhlY2xlKCIvYmluL2Jhc2giLCAiLWJhc2giLCBOVUxMLCBlbnZfdXNlKTsKICAgICAgICAgICAgICAgICAgZXhlY2xlKCIvYmluL3NoIiwgIi1zaCIsIE5VTEwsIGVudl91c2UpOwogZGlmZiAtLWdpdCBhL3VuaXRzL2VtZXJnZW5jeS5zZXJ2aWNlLmluIGIvdW5pdHMvZW1lcmdlbmN5LnNlcnZpY2UuaW4KLWluZGV4IGRhNjhlYjguLmUyNWY4NzkgMTAwNjQ0CitpbmRleCBlOWViMjM4YjkuLjMyNTg4ZTQ4YSAxMDA2NDQKIC0tLSBhL3VuaXRzL2VtZXJnZW5jeS5zZXJ2aWNlLmluCiArKysgYi91bml0cy9lbWVyZ2VuY3kuc2VydmljZS5pbgogQEAgLTE1LDggKzE1LDggQEAgQ29uZmxpY3RzPXN5c2xvZy5zb2NrZXQKQEAgLTEzMSwxMSArMTMyLDExIEBACiAtV29ya2luZ0RpcmVjdG9yeT0tL3Jvb3QKICtFbnZpcm9ubWVudD1IT01FPUByb290aG9tZWRpckAKICtXb3JraW5nRGlyZWN0b3J5PS1Acm9vdGhvbWVkaXJACi0gRXhlY1N0YXJ0UHJlPS0vYmluL3BseW1vdXRoIC0td2FpdCBxdWl0Ci0gRXhlY1N0YXJ0UHJlPS0vYmluL2VjaG8gLWUgJ1lvdSBhcmUgaW4gZW1lcmdlbmN5IG1vZGUuIEFmdGVyIGxvZ2dpbmcgaW4sIHR5cGUgImpvdXJuYWxjdGwgLXhiIiB0byB2aWV3XFxuc3lzdGVtIGxvZ3MsICJzeXN0ZW1jdGwgcmVib290IiB0byByZWJvb3QsICJzeXN0ZW1jdGwgZGVmYXVsdCIgb3IgXkQgdG9cXG50cnkgYWdhaW4gdG8gYm9vdCBpbnRvIGRlZmF1bHQgbW9kZS4nCi0gRXhlY1N0YXJ0PS0vYmluL3NoIC1jICJAU1VMT0dJTkA7IEBTWVNURU1DVExAIC0tam9iLW1vZGU9ZmFpbCAtLW5vLWJsb2NrIGRlZmF1bHQiCisgRXhlY1N0YXJ0PS1Acm9vdGxpYmV4ZWNkaXJAL3N5c3RlbWQtc3Vsb2dpbi1zaGVsbCBlbWVyZ2VuY3kKKyBUeXBlPWlkbGUKKyBTdGFuZGFyZElucHV0PXR0eS1mb3JjZQogZGlmZiAtLWdpdCBhL3VuaXRzL3Jlc2N1ZS5zZXJ2aWNlLmluIGIvdW5pdHMvcmVzY3VlLnNlcnZpY2UuaW4KLWluZGV4IDVmZWZmNjkuLmE4MzQzOWUgMTAwNjQ0CitpbmRleCA0YWI2NmY0ODUuLmJkOTg5OGYyYyAxMDA2NDQKIC0tLSBhL3VuaXRzL3Jlc2N1ZS5zZXJ2aWNlLmluCiArKysgYi91bml0cy9yZXNjdWUuc2VydmljZS5pbgogQEAgLTE0LDggKzE0LDggQEAgQWZ0ZXI9c3lzaW5pdC50YXJnZXQgcGx5bW91dGgtc3RhcnQuc2VydmljZQpAQCAtMTQ2LDkgKzE0Nyw5IEBACiAtV29ya2luZ0RpcmVjdG9yeT0tL3Jvb3QKICtFbnZpcm9ubWVudD1IT01FPUByb290aG9tZWRpckAKICtXb3JraW5nRGlyZWN0b3J5PS1Acm9vdGhvbWVkaXJACi0gRXhlY1N0YXJ0UHJlPS0vYmluL3BseW1vdXRoIC0td2FpdCBxdWl0Ci0gRXhlY1N0YXJ0UHJlPS0vYmluL2VjaG8gLWUgJ1lvdSBhcmUgaW4gcmVzY3VlIG1vZGUuIEFmdGVyIGxvZ2dpbmcgaW4sIHR5cGUgImpvdXJuYWxjdGwgLXhiIiB0byB2aWV3XFxuc3lzdGVtIGxvZ3MsICJzeXN0ZW1jdGwgcmVib290IiB0byByZWJvb3QsICJzeXN0ZW1jdGwgZGVmYXVsdCIgb3IgXkQgdG9cXG5ib290IGludG8gZGVmYXVsdCBtb2RlLicKLSBFeGVjU3RhcnQ9LS9iaW4vc2ggLWMgIkBTVUxPR0lOQDsgQFNZU1RFTUNUTEAgLS1qb2ItbW9kZT1mYWlsIC0tbm8tYmxvY2sgZGVmYXVsdCIKKyBFeGVjU3RhcnQ9LUByb290bGliZXhlY2RpckAvc3lzdGVtZC1zdWxvZ2luLXNoZWxsIHJlc2N1ZQorIFR5cGU9aWRsZQorIFN0YW5kYXJkSW5wdXQ9dHR5LWZvcmNlCiAtLSAKLTIuMTAuMgorMi4xMy4yCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMy1jb21wYXJpc29uX2ZuX3QtaXMtZ2xpYmMtc3BlY2lmaWMtdXNlLXJhdy1zaWduYXR1cmUtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEzLWNvbXBhcmlzb25fZm5fdC1pcy1nbGliYy1zcGVjaWZpYy11c2UtcmF3LXNpZ25hdHVyZS0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTIxOTk4MQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMy1jb21wYXJpc29uX2ZuX3QtaXMtZ2xpYmMtc3BlY2lmaWMtdXNlLXJhdy1zaWduYXR1cmUtLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gNGI2NzMzNTQ0YmViNjYyYTBmNzczMTAzMDJmYWUxZmI3Yjc2ZDE2NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDEyIFNlcCAyMDE1IDE4OjUzOjMxICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMTMvMTNdIGNvbXBhcmlzb25fZm5fdCBpcyBnbGliYyBzcGVjaWZpYywgdXNlIHJhdyBzaWduYXR1cmUgaW4KKyBmdW5jdGlvbiBwb2ludGVyCisKK21ha2UgaXQgd29yayB3aXRoIG11c2wgd2hlcmUgY29tcGFyaXNvbl9mbl90IGlzIG5vdCBwcm92aWRlZAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIHNyYy9iYXNpYy91dGlsLmggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvdXRpbC5oIGIvc3JjL2Jhc2ljL3V0aWwuaAoraW5kZXggYzdkYTZjMzliLi44N2Y2MmI4OTEgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvdXRpbC5oCisrKysgYi9zcmMvYmFzaWMvdXRpbC5oCitAQCAtOTgsNyArOTgsNyBAQCB2b2lkICp4YnNlYXJjaF9yKGNvbnN0IHZvaWQgKmtleSwgY29uc3Qgdm9pZCAqYmFzZSwgc2l6ZV90IG5tZW1iLCBzaXplX3Qgc2l6ZSwKKyAgKiBOb3JtYWwgcXNvcnQgcmVxdWlyZXMgYmFzZSB0byBiZSBub25udWxsLiBIZXJlIHdlcmUgcmVxdWlyZQorICAqIHRoYXQgb25seSBpZiBubWVtYiA+IDAuCisgICovCistc3RhdGljIGlubGluZSB2b2lkIHFzb3J0X3NhZmUodm9pZCAqYmFzZSwgc2l6ZV90IG5tZW1iLCBzaXplX3Qgc2l6ZSwgY29tcGFyaXNvbl9mbl90IGNvbXBhcikgeworK3N0YXRpYyBpbmxpbmUgdm9pZCBxc29ydF9zYWZlKHZvaWQgKmJhc2UsIHNpemVfdCBubWVtYiwgc2l6ZV90IHNpemUsIGludCAoKmNvbXBhcikoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopKSB7CisgICAgICAgICBpZiAobm1lbWIgPD0gMSkKKyAgICAgICAgICAgICAgICAgcmV0dXJuOworIAorLS0gCisyLjE0LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE1LVJldmVydC11ZGV2LXJlbW92ZS11c2Vyc3BhY2UtZmlybXdhcmUtbG9hZGluZy1zdXBwb3IucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTUtUmV2ZXJ0LXVkZXYtcmVtb3ZlLXVzZXJzcGFjZS1maXJtd2FyZS1sb2FkaW5nLXN1cHBvci5wYXRjaAppbmRleCBmMzFkMjExLi45NTg3MWJiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTUtUmV2ZXJ0LXVkZXYtcmVtb3ZlLXVzZXJzcGFjZS1maXJtd2FyZS1sb2FkaW5nLXN1cHBvci5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTUtUmV2ZXJ0LXVkZXYtcmVtb3ZlLXVzZXJzcGFjZS1maXJtd2FyZS1sb2FkaW5nLXN1cHBvci5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gNGQyOGQ5YTdkOGQ2OWZiNDI5OTU1ZDc3MGU1M2U3YTgxNjQwZGEyNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNzg4Mzk4NWEzYTc4Njc3ZTlhMWQ1ZDYxZmU3ZmE4YmFkZjM5ZjU2NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDkgTm92IDIwMTYgMjA6NDU6MjMgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAxNS8xOV0gUmV2ZXJ0ICJ1ZGV2OiByZW1vdmUgdXNlcnNwYWNlIGZpcm13YXJlIGxvYWRpbmcKK1N1YmplY3Q6IFtQQVRDSCAxMC8xNF0gUmV2ZXJ0ICJ1ZGV2OiByZW1vdmUgdXNlcnNwYWNlIGZpcm13YXJlIGxvYWRpbmcKICBzdXBwb3J0IgogCiBUaGlzIHJldmVydHMgY29tbWl0IGJlMmVhNzIzYjFkMDIzYjNkMzg1ZDNiNzkxZWU0NjA3Y2JmYjIwY2EuCkBAIC0xMSwyMyArMTEsMjQgQEAKIAogU2lnbmVkLW9mZi1ieTogSm9uYXRoYW4gTGl1IDxuZXQxNDdAZ21haWwuY29tPgogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKwogLS0tCiAgTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgfCAgMTIgKysrCi0gUkVBRE1FICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKy0KKyBSRUFETUUgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNCArLQogIFRPRE8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKICBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICB8ICAxOCArKysrKwogIHNyYy91ZGV2L3VkZXYtYnVpbHRpbi1maXJtd2FyZS5jIHwgMTU0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogIHNyYy91ZGV2L3VkZXYtYnVpbHRpbi5jICAgICAgICAgIHwgICAzICsKICBzcmMvdWRldi91ZGV2LmggICAgICAgICAgICAgICAgICB8ICAgNiArKwogIHNyYy91ZGV2L3VkZXZkLmMgICAgICAgICAgICAgICAgIHwgIDEzICsrKysKLSA4IGZpbGVzIGNoYW5nZWQsIDIxMCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorIDggZmlsZXMgY2hhbmdlZCwgMjA5IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy91ZGV2L3VkZXYtYnVpbHRpbi1maXJtd2FyZS5jCiAKIGRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCAzMDEwYjAxLi4yMjk0OTJhIDEwMDY0NAoraW5kZXggYzJiNGE5OWQyLi42OTJkN2JiOTUgMTAwNjQ0CiAtLS0gYS9NYWtlZmlsZS5hbQogKysrIGIvTWFrZWZpbGUuYW0KLUBAIC0zNzkxLDYgKzM3OTEsMTggQEAgbGlidWRldl9jb3JlX2xhX0xJQkFERCA9IFwKK0BAIC0zOTg1LDYgKzM5ODUsMTggQEAgbGlidWRldl9jb3JlX2xhX0xJQkFERCA9IFwKICAJJChCTEtJRF9MSUJTKSBcCiAgCSQoS01PRF9MSUJTKQogIApAQCAtNDcsMTcgKzQ4LDEwIEBACiAgbGlidWRldl9jb3JlX2xhX1NPVVJDRVMgKz0gXAogIAlzcmMvdWRldi91ZGV2LWJ1aWx0aW4ta21vZC5jCiBkaWZmIC0tZ2l0IGEvUkVBRE1FIGIvUkVBRE1FCi1pbmRleCA5ZjViYzkzLi5mNjBhZTExIDEwMDY0NAoraW5kZXggNjAzODhlZWJlLi5lMjE5NzYzOTMgMTAwNjQ0CiAtLS0gYS9SRUFETUUKICsrKyBiL1JFQURNRQotQEAgLTUwLDE0ICs1MCwxNCBAQCBSRVFVSVJFTUVOVFM6Ci0gICAgICAgICAgIENPTkZJR19QUk9DX0ZTCi0gICAgICAgICAgIENPTkZJR19GSEFORExFIChsaWJ1ZGV2LCBtb3VudCBhbmQgYmluZCBtb3VudCBoYW5kbGluZykKLSAKLS0gICAgICAgIHVkZXYgd2lsbCBmYWlsIHRvIHdvcmsgd2l0aCB0aGUgbGVnYWN5IHN5c2ZzIGxheW91dDoKLSsgICAgICAgIFVkZXYgd2lsbCBmYWlsIHRvIHdvcmsgd2l0aCB0aGUgbGVnYWN5IHN5c2ZzIGxheW91dDoKLSAgICAgICAgICAgQ09ORklHX1NZU0ZTX0RFUFJFQ0FURUQ9bgotIAorQEAgLTYxLDggKzYxLDggQEAgUkVRVUlSRU1FTlRTOgogICAgICAgICAgTGVnYWN5IGhvdHBsdWcgc2xvd3MgZG93biB0aGUgc3lzdGVtIGFuZCBjb25mdXNlcyB1ZGV2OgogICAgICAgICAgICBDT05GSUdfVUVWRU5UX0hFTFBFUl9QQVRIPSIiCiAgCkBAIC02OSwxMCArNjMsMTAgQEAKICAKICAgICAgICAgIFNvbWUgdWRldiBydWxlcyBhbmQgdmlydHVhbGl6YXRpb24gZGV0ZWN0aW9uIHJlbGllcyBvbiBpdDoKIGRpZmYgLS1naXQgYS9UT0RPIGIvVE9ETwotaW5kZXggYmFhYWM5NC4uMWFiMTY5MSAxMDA2NDQKK2luZGV4IDYxZWZhNWU5Zi4uNjdjY2FjMjI0IDEwMDY0NAogLS0tIGEvVE9ETwogKysrIGIvVE9ETwotQEAgLTY1OCw2ICs2NTgsNyBAQCBGZWF0dXJlczoKK0BAIC03NDAsNiArNzQwLDcgQEAgRmVhdHVyZXM6CiAgKiBpbml0aWFsaXplIHRoZSBob3N0bmFtZSBmcm9tIHRoZSBmcyBsYWJlbCBvZiAvLCBpZiAvZXRjL2hvc3RuYW1lIGRvZXMgbm90IGV4aXN0PwogIAogICogdWRldjoKQEAgLTgxLDExICs3NSwxMSBAQAogICAgLSBraWxsIHNjc2lfaWQKICAgIC0gYWRkIHRyaWdnZXIgLS1zdWJzeXN0ZW0tbWF0Y2g9dXNiL3VzYl9kZXZpY2UgZGV2aWNlCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBkZmMwYmQzLi4xZGUwMDY2IDEwMDY0NAoraW5kZXggYjUzY2ExZjFhLi4xMTUwY2E1MGUgMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTEzOTQsNiArMTM5NCwyMyBAQCBBTV9DT05ESVRJT05BTChIQVZFX01ZSE9TVE5BTUUsIFt0ZXN0ICIkaGF2ZV9teWhvc3RuYW1lIiA9ICJ5ZXMiXSkKLSBBQ19BUkdfRU5BQkxFKGh3ZGIsIFtBQ19IRUxQX1NUUklORyhbLS1kaXNhYmxlLWh3ZGJdLCBbZGlzYWJsZSBoYXJkd2FyZSBkYXRhYmFzZSBzdXBwb3J0XSldLAorQEAgLTE1MjIsNiArMTUyMiwyMyBAQCBBTV9DT05ESVRJT05BTChIQVZFX01ZSE9TVE5BTUUsIFt0ZXN0ICIkaGF2ZV9teWhvc3RuYW1lIiA9ICJ5ZXMiXSkKKyBBQ19BUkdfRU5BQkxFKGh3ZGIsIFtBU19IRUxQX1NUUklORyhbLS1kaXNhYmxlLWh3ZGJdLCBbZGlzYWJsZSBoYXJkd2FyZSBkYXRhYmFzZSBzdXBwb3J0XSldLAogICAgICAgICBlbmFibGVfaHdkYj0kZW5hYmxldmFsLCBlbmFibGVfaHdkYj15ZXMpCiAgQU1fQ09ORElUSU9OQUwoRU5BQkxFX0hXREIsIFt0ZXN0IHgkZW5hYmxlX2h3ZGIgPSB4eWVzXSkKICtBQ19BUkdfV0lUSChmaXJtd2FyZS1wYXRoLApAQCAtMTA4LDE3ICsxMDIsMTcgQEAKICAKICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIGhhdmVfbWFucGFnZXM9bm8KLUBAIC0xNjk4LDYgKzE3MTUsNyBAQCBBQ19NU0dfUkVTVUxUKFsKK0BAIC0xODM5LDYgKzE4NTYsNyBAQCBBQ19NU0dfUkVTVUxUKFsKICAgICAgICAgIFN5c1YgaW5pdCBzY3JpcHRzOiAgICAgICAgICAgICAgICAgJHtTWVNURU1fU1lTVklOSVRfUEFUSH0KICAgICAgICAgIFN5c1YgcmM/LmQgZGlyZWN0b3JpZXM6ICAgICAgICAgICAgJHtTWVNURU1fU1lTVlJDTkRfUEFUSH0KLSAgICAgICAgIEJ1aWxkIFB5dGhvbjogICAgICAgICAgICAgICAgICAgICAgJHtQWVRIT059CisgICAgICAgICBidWlsZCBQeXRob246ICAgICAgICAgICAgICAgICAgICAgICR7UFlUSE9OfQogKyAgICAgICAgZmlybXdhcmUgcGF0aDogICAgICAgICAgICAgICAgICAgICAke0ZJUk1XQVJFX1BBVEh9CiAgICAgICAgICBQQU0gbW9kdWxlcyBkaXI6ICAgICAgICAgICAgICAgICAgICR7d2l0aF9wYW1saWJkaXJ9CiAgICAgICAgICBQQU0gY29uZmlndXJhdGlvbiBkaXI6ICAgICAgICAgICAgICR7d2l0aF9wYW1jb25mZGlyfQotICAgICAgICAgRC1CdXMgcG9saWN5IGRpcjogICAgICAgICAgICAgICAgICAke3dpdGhfZGJ1c3BvbGljeWRpcn0KKyAgICAgICAgIFJQTSBtYWNyb3MgZGlyOiAgICAgICAgICAgICAgICAgICAgJHt3aXRoX3JwbW1hY3Jvc2Rpcn0KIGRpZmYgLS1naXQgYS9zcmMvdWRldi91ZGV2LWJ1aWx0aW4tZmlybXdhcmUuYyBiL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi1maXJtd2FyZS5jCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYmQ4YzJmYgoraW5kZXggMDAwMDAwMDAwLi5iZDhjMmZiOTYKIC0tLSAvZGV2L251bGwKICsrKyBiL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi1maXJtd2FyZS5jCiBAQCAtMCwwICsxLDE1NCBAQApAQCAtMjc3LDcgKzI3MSw3IEBACiArICAgICAgICAucnVuX29uY2UgPSB0cnVlLAogK307CiBkaWZmIC0tZ2l0IGEvc3JjL3VkZXYvdWRldi1idWlsdGluLmMgYi9zcmMvdWRldi91ZGV2LWJ1aWx0aW4uYwotaW5kZXggZTZiMzZmMS4uY2Q5OTQ3ZSAxMDA2NDQKK2luZGV4IGU2YjM2ZjEyNC4uY2Q5OTQ3ZTJhIDEwMDY0NAogLS0tIGEvc3JjL3VkZXYvdWRldi1idWlsdGluLmMKICsrKyBiL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi5jCiBAQCAtMzEsNiArMzEsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHVkZXZfYnVpbHRpbiAqYnVpbHRpbnNbXSA9IHsKQEAgLTI5MSwxMCArMjg1LDEwIEBACiAgICAgICAgICBbVURFVl9CVUlMVElOX0lOUFVUX0lEXSA9ICZ1ZGV2X2J1aWx0aW5faW5wdXRfaWQsCiAgICAgICAgICBbVURFVl9CVUlMVElOX0tFWUJPQVJEXSA9ICZ1ZGV2X2J1aWx0aW5fa2V5Ym9hcmQsCiBkaWZmIC0tZ2l0IGEvc3JjL3VkZXYvdWRldi5oIGIvc3JjL3VkZXYvdWRldi5oCi1pbmRleCA4NDMzZThkLi5kMzIzNjZkIDEwMDY0NAoraW5kZXggYzBjYjdlYWU4Li45ZjBmMWNmMTMgMTAwNjQ0CiAtLS0gYS9zcmMvdWRldi91ZGV2LmgKICsrKyBiL3NyYy91ZGV2L3VkZXYuaAotQEAgLTE0OCw2ICsxNDgsOSBAQCBlbnVtIHVkZXZfYnVpbHRpbl9jbWQgeworQEAgLTE1MCw2ICsxNTAsOSBAQCBlbnVtIHVkZXZfYnVpbHRpbl9jbWQgewogICAgICAgICAgVURFVl9CVUlMVElOX0JMS0lELAogICNlbmRpZgogICAgICAgICAgVURFVl9CVUlMVElOX0JUUkZTLApAQCAtMzA0LDcgKzI5OCw3IEBACiAgICAgICAgICBVREVWX0JVSUxUSU5fSFdEQiwKICAgICAgICAgIFVERVZfQlVJTFRJTl9JTlBVVF9JRCwKICAgICAgICAgIFVERVZfQlVJTFRJTl9LRVlCT0FSRCwKLUBAIC0xNzYsNiArMTc5LDkgQEAgc3RydWN0IHVkZXZfYnVpbHRpbiB7CitAQCAtMTc4LDYgKzE4MSw5IEBAIHN0cnVjdCB1ZGV2X2J1aWx0aW4gewogIGV4dGVybiBjb25zdCBzdHJ1Y3QgdWRldl9idWlsdGluIHVkZXZfYnVpbHRpbl9ibGtpZDsKICAjZW5kaWYKICBleHRlcm4gY29uc3Qgc3RydWN0IHVkZXZfYnVpbHRpbiB1ZGV2X2J1aWx0aW5fYnRyZnM7CkBAIC0zMTUsNyArMzA5LDcgQEAKICBleHRlcm4gY29uc3Qgc3RydWN0IHVkZXZfYnVpbHRpbiB1ZGV2X2J1aWx0aW5faW5wdXRfaWQ7CiAgZXh0ZXJuIGNvbnN0IHN0cnVjdCB1ZGV2X2J1aWx0aW4gdWRldl9idWlsdGluX2tleWJvYXJkOwogZGlmZiAtLWdpdCBhL3NyYy91ZGV2L3VkZXZkLmMgYi9zcmMvdWRldi91ZGV2ZC5jCi1pbmRleCBkMzM2ZWUwLi44MWU1ZGM1IDEwMDY0NAoraW5kZXggYWNiZGRkNDE4Li4yMDM0N2I0MDIgMTAwNjQ0CiAtLS0gYS9zcmMvdWRldi91ZGV2ZC5jCiArKysgYi9zcmMvdWRldi91ZGV2ZC5jCiBAQCAtMTI1LDYgKzEyNSw5IEBAIHN0cnVjdCBldmVudCB7CkBAIC0zNTMsNSArMzQ3LDUgQEAKICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LT5kZXZwYXRoW2NvbW1vbl0gPT0gJy8nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQtPmRlbGF5aW5nX3NlcW51bSA9IGxvb3BfZXZlbnQtPnNlcW51bTsKIC0tIAotMi4xMC4yCisyLjEzLjIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE2LW1ha2UtdGVzdC1kaXItY29uZmlndXJhYmxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE2LW1ha2UtdGVzdC1kaXItY29uZmlndXJhYmxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMGQxZGY1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNi1tYWtlLXRlc3QtZGlyLWNvbmZpZ3VyYWJsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLUZyb20gMjE4YmJjNTU1YTM3ZjkzNzNmYmI3ZjAzYzc0NGViNjUxMDlkMzQ3MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDkgTm92IDIwMTYgMjA6NDc6MzcgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAxNi8xOV0gbWFrZSB0ZXN0IGRpciBjb25maWd1cmFibGUKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLXRlc3QgbWF5YmUgYmUgcnVuIG9uIHRhcmdldCBpbiBjcm9zcy1jb21waWxlIGVudmlyb25tZW50LCBhbmQgdGVzdCBkaXIKLWlzIG5vdCB0aGUgY29tcGlsYXRpb24gZGlyLCBzbyBtYWtlIGl0IGNvbmZpZ3VyYWJsZQotCi1TaWduZWQtb2ZmLWJ5OiBSb3kgTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gTWFrZWZpbGUuYW0gIHwgMiArLQotIGNvbmZpZ3VyZS5hYyB8IDcgKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCAyMjk0OTJhLi5lOTk3ZDgyIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuYW0KLSsrKyBiL01ha2VmaWxlLmFtCi1AQCAtMjE0LDcgKzIxNCw3IEBAIEFNX0NQUEZMQUdTID0gXAotIAktRFJPT1RMSUJESVI9XCIkKHJvb3RsaWJkaXIpXCIgXAotIAktRFJPT1RMSUJFWEVDRElSPVwiJChyb290bGliZXhlY2RpcilcIiBcCi0gCS1EUk9PVEhPTUVESVI9XCIkKHJvb3Rob21lZGlyKVwiIFwKLS0JLURURVNUX0RJUj1cIiQoYWJzX3RvcF9zcmNkaXIpL3Rlc3RcIiBcCi0rCS1EVEVTVF9ESVI9XCIkKHRlc3RkaXIpL3Rlc3RcIiBcCi0gCS1JICQodG9wX3NyY2Rpcikvc3JjIFwKLSAJLUkgJCh0b3BfYnVpbGRkaXIpL3NyYy9iYXNpYyBcCi0gCS1JICQodG9wX3NyY2Rpcikvc3JjL2Jhc2ljIFwKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDFkZTAwNjYuLmIxMmUzMjAgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTE1MzUsNiArMTUzNSwxMSBAQCBBQ19BUkdfV0lUSChbcm9vdGhvbWVkaXJdLAotICAgICAgICAgW10sCi0gICAgICAgICBbd2l0aF9yb290aG9tZWRpcj0vcm9vdF0pCi0gCi0rQUNfQVJHX1dJVEgoW3Rlc3RkaXJdLAotKyAgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0td2l0aC10ZXN0ZGlyPURJUl0sIFt0ZXN0IGZpbGUgZGlyZWN0b3J5XSksCi0rICAgICAgICBbXSwKLSsgICAgICAgIFt3aXRoX3Rlc3RkaXI9JHthYnNfdG9wX3NyY2Rpcn1dKQotKwotIEFDX0FSR19XSVRIKFtwYW1saWJkaXJdLAotICAgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1wYW1saWJkaXI9RElSXSwgW0RpcmVjdG9yeSBmb3IgUEFNIG1vZHVsZXNdKSwKLSAgICAgICAgIFtdLAotQEAgLTE2MjEsNiArMTYyNiw3IEBAIEFDX1NVQlNUKFtwYW1jb25mZGlyXSwgWyR3aXRoX3BhbWNvbmZkaXJdKQotIEFDX1NVQlNUKFtyb290cHJlZml4XSwgWyR3aXRoX3Jvb3RwcmVmaXhdKQotIEFDX1NVQlNUKFtyb290bGliZGlyXSwgWyR3aXRoX3Jvb3RsaWJkaXJdKQotIEFDX1NVQlNUKFtyb290aG9tZWRpcl0sIFskd2l0aF9yb290aG9tZWRpcl0pCi0rQUNfU1VCU1QoW3Rlc3RkaXJdLCBbJHdpdGhfdGVzdGRpcl0pCi0gCi0gQUNfQ09ORklHX0ZJTEVTKFsKLSAgICAgICAgIE1ha2VmaWxlCi1AQCAtMTcxMiw2ICsxNzE4LDcgQEAgQUNfTVNHX1JFU1VMVChbCi0gICAgICAgICBsaWIgZGlyOiAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfQotICAgICAgICAgcm9vdGxpYiBkaXI6ICAgICAgICAgICAgICAgICAgICAgICAke3dpdGhfcm9vdGxpYmRpcn0KLSAgICAgICAgIHJvb3QgaG9tZSBkaXI6ICAgICAgICAgICAgICAgICAgICAgJHt3aXRoX3Jvb3Rob21lZGlyfQotKyAgICAgICAgdGVzdCBkaXI6ICAgICAgICAgICAgICAgICAgICAgICAgICAke3dpdGhfdGVzdGRpcn0KLSAgICAgICAgIFN5c1YgaW5pdCBzY3JpcHRzOiAgICAgICAgICAgICAgICAgJHtTWVNURU1fU1lTVklOSVRfUEFUSH0KLSAgICAgICAgIFN5c1YgcmM/LmQgZGlyZWN0b3JpZXM6ICAgICAgICAgICAgJHtTWVNURU1fU1lTVlJDTkRfUEFUSH0KLSAgICAgICAgIEJ1aWxkIFB5dGhvbjogICAgICAgICAgICAgICAgICAgICAgJHtQWVRIT059Ci0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTctcmVtb3ZlLWR1cGxpY2F0ZS1pbmNsdWRlLXVjaGFyLmgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTctcmVtb3ZlLWR1cGxpY2F0ZS1pbmNsdWRlLXVjaGFyLmgucGF0Y2gKaW5kZXggNzdkYmQ2ZS4uZDIwMDYzNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE3LXJlbW92ZS1kdXBsaWNhdGUtaW5jbHVkZS11Y2hhci5oLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNy1yZW1vdmUtZHVwbGljYXRlLWluY2x1ZGUtdWNoYXIuaC5wYXRjaApAQCAtNiw2ICs2LDcgQEAKIG1pc3NpbmcuaCBhbHJlYWR5IGluY2x1ZGVzIGl0CiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIHNyYy9iYXNpYy9lc2NhcGUuaCB8IDEgLQogIHNyYy9iYXNpYy91dGY4LmggICB8IDEgLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE4LWNoZWNrLWZvci11Y2hhci5oLWluLWNvbmZpZ3VyZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxOC1jaGVjay1mb3ItdWNoYXIuaC1pbi1jb25maWd1cmUucGF0Y2gKaW5kZXggNTgyNDAzMy4uMDY3YjczZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE4LWNoZWNrLWZvci11Y2hhci5oLWluLWNvbmZpZ3VyZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTgtY2hlY2stZm9yLXVjaGFyLmgtaW4tY29uZmlndXJlLnBhdGNoCkBAIC0xLDIxICsxLDIzIEBACi1Gcm9tIDdjYzBiMTlkMjQ0MDIzYzdiM2U1NTc3NjViMDNiNzk3MWUwNDdmMjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDEzNTU0NTcwOTJiMDJhMTVjNjQ2ZmMxYzcyZTY4YjY5NGE4NmRkOTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogTW9uLCAyMiBGZWIgMjAxNiAwNjowMjozOCArMDAwMAotU3ViamVjdDogW1BBVENIIDE4LzE5XSBjaGVjayBmb3IgdWNoYXIuaCBpbiBjb25maWd1cmUKK1N1YmplY3Q6IFtQQVRDSCAxMi8xNF0gY2hlY2sgZm9yIHVjaGFyLmggaW4gY29uZmlndXJlCiAKIFVzZSBpZmRlZiB0byBpbmNsdWRlIHVjaGFyLmgKIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCiAtLS0KICBjb25maWd1cmUuYWMgICAgICAgIHwgMSArCiAgc3JjL2Jhc2ljL21pc3NpbmcuaCB8IDIgKysKICAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBiMTJlMzIwLi40ZTZkZmRmIDEwMDY0NAoraW5kZXggMTE1MGNhNTBlLi42MGU3ZGY1ZWUgMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTI5OCw2ICsyOTgsNyBAQCBBTV9DT05ESVRJT05BTChbSEFWRV9QWVRIT05dLCBbdGVzdCAieCRoYXZlX3B5dGhvbiIgPSAieHllcyJdKQorQEAgLTMwNCw2ICszMDQsNyBAQCBBTV9DT05ESVRJT05BTChbSEFWRV9QWVRIT05dLCBbdGVzdCAieCRoYXZlX3B5dGhvbiIgPSAieHllcyJdKQogIAogICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgCkBAIC0yNCwxMiArMjYsMTIgQEAKICBBQ19DSEVDS19IRUFERVJTKFtsaW51eC9idHJmcy5oXSwgW10sIFtdKQogIEFDX0NIRUNLX0hFQURFUlMoW2xpbnV4L21lbWZkLmhdLCBbXSwgW10pCiBkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21pc3NpbmcuaCBiL3NyYy9iYXNpYy9taXNzaW5nLmgKLWluZGV4IDQ5MzY4NzMuLmNlNzk0MDQgMTAwNjQ0CitpbmRleCAyNWExMWYzNTEuLmQ2MzFiN2UzZSAxMDA2NDQKIC0tLSBhL3NyYy9iYXNpYy9taXNzaW5nLmgKICsrKyBiL3NyYy9iYXNpYy9taXNzaW5nLmgKLUBAIC0zNSw3ICszNSw5IEBACi0gI2luY2x1ZGUgPHN0ZGxpYi5oPgorQEAgLTM3LDcgKzM3LDkgQEAKICAjaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+CisgI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KICAjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KICsjaWZkZWYgSEFWRV9VQ0hBUl9ICiAgI2luY2x1ZGUgPHVjaGFyLmg+CkBAIC0zOCw1ICs0MCw1IEBACiAgCiAgI2lmZGVmIEhBVkVfQVVESVQKIC0tIAotMi4xMC4yCisyLjEzLjIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE5LXNvY2tldC11dGlsLWRvbi10LWZhaWwtaWYtbGliYy1kb2Vzbi10LXN1cHBvcnQtSUROLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE5LXNvY2tldC11dGlsLWRvbi10LWZhaWwtaWYtbGliYy1kb2Vzbi10LXN1cHBvcnQtSUROLnBhdGNoCmluZGV4IDY2YWE0Y2EuLmI2MDkyNzYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxOS1zb2NrZXQtdXRpbC1kb24tdC1mYWlsLWlmLWxpYmMtZG9lc24tdC1zdXBwb3J0LUlETi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTktc29ja2V0LXV0aWwtZG9uLXQtZmFpbC1pZi1saWJjLWRvZXNuLXQtc3VwcG9ydC1JRE4ucGF0Y2gKQEAgLTEsMTggKzEsMTkgQEAKLUZyb20gMjg5NTU0ZDg3ZTRmZDk2Y2FlMDhjMGZiNDQ5YmY0MWQ1NjQxY2QyNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYjdjNmJmZTJlYzVhZTQyNmU1ODZlMWQ2ZWNhZGI1MmE5NzEyOGEzZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDkgTm92IDIwMTYgMjA6NDk6NTMgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAxOS8xOV0gc29ja2V0LXV0aWw6IGRvbid0IGZhaWwgaWYgbGliYyBkb2Vzbid0IHN1cHBvcnQgSUROCitTdWJqZWN0OiBbUEFUQ0ggMTMvMTRdIHNvY2tldC11dGlsOiBkb24ndCBmYWlsIGlmIGxpYmMgZG9lc24ndCBzdXBwb3J0IElETgogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAogU2lnbmVkLW9mZi1ieTogRW1pbCBSZW5uZXIgQmVydGhpbmcgPHN5c3RlbWRAZXNtaWwuZGs+CiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCiAtLS0KICBzcmMvYmFzaWMvc29ja2V0LXV0aWwuYyB8IDkgKysrKysrKysrCiAgMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3NvY2tldC11dGlsLmMgYi9zcmMvYmFzaWMvc29ja2V0LXV0aWwuYwotaW5kZXggNGViZjEwNi4uNTNiOWExMiAxMDA2NDQKK2luZGV4IDAxNmU2NGFhMC4uZDQ2NTg4MjZlIDEwMDY0NAogLS0tIGEvc3JjL2Jhc2ljL3NvY2tldC11dGlsLmMKICsrKyBiL3NyYy9iYXNpYy9zb2NrZXQtdXRpbC5jCiBAQCAtNDcsNiArNDcsMTUgQEAKQEAgLTI5LDggKzMwLDggQEAKICsjZGVmaW5lIE5JX0lETl9VU0VfU1REM19BU0NJSV9SVUxFUyAwCiArI2VuZGlmCiAgCi0gaW50IHNvY2tldF9hZGRyZXNzX3BhcnNlKFNvY2tldEFkZHJlc3MgKmEsIGNvbnN0IGNoYXIgKnMpIHsKLSAgICAgICAgIGNoYXIgKmUsICpuOworICNpZmRlZiBFTkFCTEVfSUROCisgIyAgZGVmaW5lIElETl9GTEFHUyAoTklfSUROfE5JX0lETl9VU0VfU1REM19BU0NJSV9SVUxFUykKIC0tIAotMi4xMC4yCisyLjEzLjIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDIwLWJhY2stcG9ydC0yMzMtZG9uLXQtdXNlLXRoZS11bmlmaWVkLWhpZXJhcmNoeS1mb3ItdGhlLXN5c3RlbWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjAtYmFjay1wb3J0LTIzMy1kb24tdC11c2UtdGhlLXVuaWZpZWQtaGllcmFyY2h5LWZvci10aGUtc3lzdGVtZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWYyZDg2OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjAtYmFjay1wb3J0LTIzMy1kb24tdC11c2UtdGhlLXVuaWZpZWQtaGllcmFyY2h5LWZvci10aGUtc3lzdGVtZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLVRoaXMgaXMgYSBkaXJlY3QgYmFja3BvcnQgZnJvbSBzeXN0ZW1kLTIzMydzIHN0cmVhbSB0byBmaXggbHhjL2RvY2tlci4KLQotJSBseGMtc3RhcnQgLW4gY29udGFpbmVyIC1GCi1seGMtc3RhcnQ6IGNnZnNuZy5jOiBwYXJzZV9oaWVyYXJjaGllczogODI1IEZhaWxlZCB0byBmaW5kIGN1cnJlbnQgY2dyb3VwIGZvciBjb250cm9sbGVyICduYW1lPXN5c3RlbWQnCi1seGMtc3RhcnQ6IGNnZnNuZy5jOiBhbGxfY29udHJvbGxlcnNfZm91bmQ6IDQzMSBubyBzeXN0ZW1kIGNvbnRyb2xsZXIgbW91bnRwb2ludCBmb3VuZAotbHhjLXN0YXJ0OiBzdGFydC5jOiBseGNfc3Bhd246IDEwODIgZmFpbGVkIGluaXRpYWxpemluZyBjZ3JvdXAgc3VwcG9ydAotbHhjLXN0YXJ0OiBzdGFydC5jOiBfX2x4Y19zdGFydDogMTMzMiBmYWlsZWQgdG8gc3Bhd24gJ2NvbnRhaW5lcicKLWx4Yy1zdGFydDogbHhjX3N0YXJ0LmM6IG1haW46IDM0NCBUaGUgY29udGFpbmVyIGZhaWxlZCB0byBzdGFydC4KLWx4Yy1zdGFydDogbHhjX3N0YXJ0LmM6IG1haW46IDM0OCBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIGNhbiBiZSBvYnRhaW5lZCBieSBzZXR0aW5nIHRoZSAtLWxvZ2ZpbGUgYW5kIC0tbG9ncHJpb3JpdHkgb3B0aW9ucy4KLQotIyMgYmVnaW4gYmFja3BvcnQgIyMKLQotRnJvbSA4NDNkNWJhZjZhYWQ2YzUzZmMwMGVhOGQ5NWQ4MzIwOWE0ZjkyZGUxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFydGluIFBpdHQgPG1hcnRpbi5waXR0QHVidW50dS5jb20+Ci1EYXRlOiBUaHUsIDEwIE5vdiAyMDE2IDA1OjMzOjEzICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNvcmU6IGRvbid0IHVzZSB0aGUgdW5pZmllZCBoaWVyYXJjaHkgZm9yIHRoZSBzeXN0ZW1kIGNncm91cAotIHlldCAoIzQ2MjgpCi0KLVRvbyBtYW55IHRoaW5ncyBkb24ndCBnZXQgYWxvbmcgd2l0aCB0aGUgdW5pZmllZCBoaWVyYXJjaHkgeWV0OgotCi0gKiBodHRwczovL2dpdGh1Yi5jb20vb3BlbmNvbnRhaW5lcnMvcnVuYy9pc3N1ZXMvMTE3NQotICogaHR0cHM6Ly9naXRodWIuY29tL2RvY2tlci9kb2NrZXIvaXNzdWVzLzI4MTA5Ci0gKiBodHRwczovL2dpdGh1Yi5jb20vbHhjL2x4Yy9pc3N1ZXMvMTI4MAotCi1TbyByZXZlcnQgdGhlIGRlZmF1bHQgdG8gdGhlIGxlZ2FjeSBoaWVyYXJjaHkgZm9yIG5vdy4gRGV2ZWxvcGVycyBvZiB0aGUgYWJvdmUKLXNvZnR3YXJlIGNhbiBvcHQgaW50byB0aGUgdW5pZmllZCBoaWVyYXJjaHkgd2l0aAotInN5c3RlbWQubGVnYWN5X3N5c3RlbWRfY2dyb3VwX2NvbnRyb2xsZXI9MCIuCi0tLS0KLSBzcmMvYmFzaWMvY2dyb3VwLXV0aWwuYyB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvYmFzaWMvY2dyb3VwLXV0aWwuYyBiL3NyYy9iYXNpYy9jZ3JvdXAtdXRpbC5jCi1pbmRleCA1ZTczNzUzLi5kYzEzMDI1IDEwMDY0NAotLS0tIGEvc3JjL2Jhc2ljL2Nncm91cC11dGlsLmMKLSsrKyBiL3NyYy9iYXNpYy9jZ3JvdXAtdXRpbC5jCi1AQCAtMjQyMywxMCArMjQyMywxMCBAQCBib29sIGNnX2lzX3VuaWZpZWRfc3lzdGVtZF9jb250cm9sbGVyX3dhbnRlZCh2b2lkKSB7Ci0gCi0gICAgICAgICAgICAgICAgIHIgPSBnZXRfcHJvY19jbWRsaW5lX2tleSgic3lzdGVtZC5sZWdhY3lfc3lzdGVtZF9jZ3JvdXBfY29udHJvbGxlcj0iLCAmdmFsdWUpOwotICAgICAgICAgICAgICAgICBpZiAociA8IDApCi0tICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotIAotICAgICAgICAgICAgICAgICBpZiAociA9PSAwKQotLSAgICAgICAgICAgICAgICAgICAgICAgIHdhbnRlZCA9IHRydWU7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgd2FudGVkID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICB3YW50ZWQgPSBwYXJzZV9ib29sZWFuKHZhbHVlKSA8PSAwOwotICAgICAgICAgfQotLS0gCi0yLjEwLjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZF8yMzIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kXzIzMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjVmZTQ5Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kXzIzMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU5OSArMCwwIEBACi1yZXF1aXJlIHN5c3RlbWQuaW5jCi0KLVBST1ZJREVTID0gInVkZXYiCi0KLVBFID0gIjEiCi0KLURFUEVORFMgPSAia21vZCBpbnRsdG9vbC1uYXRpdmUgZ3BlcmYtbmF0aXZlIGFjbCByZWFkbGluZSBsaWJjYXAgbGliY2dyb3VwIHV0aWwtbGludXgiCi0KLVNFQ1RJT04gPSAiYmFzZS9zaGVsbCIKLQotaW5oZXJpdCB1c2VyYWRkIHBrZ2NvbmZpZyBhdXRvdG9vbHMgcGVybG5hdGl2ZSB1cGRhdGUtcmMuZCB1cGRhdGUtYWx0ZXJuYXRpdmVzIHFlbXUgc3lzdGVtZCBwdGVzdCBnZXR0ZXh0IGJhc2gtY29tcGxldGlvbiBtYW5wYWdlcwotCi1TUkNfVVJJICs9ICIgXAotICAgICAgICAgICBmaWxlOi8vdG91Y2hzY3JlZW4ucnVsZXMgXAotICAgICAgICAgICBmaWxlOi8vMDAtY3JlYXRlLXZvbGF0aWxlLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vaW5pdCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1kZWZpbmUtZXhwMTAtaWYtbWlzc2luZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LVVzZS1nZXRlbnYtd2hlbi1zZWN1cmUtdmVyc2lvbnMtYXJlLW5vdC1hdmFpbGFibGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNS1iaW5mbXQtRG9uLXQtaW5zdGFsbC1kZXBlbmRlbmN5LWxpbmtzLWF0LWluc3RhbGwtdGltLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDYtY29uZmlndXJlLUNoZWNrLWZvci1hZGRpdGlvbmFsLWZlYXR1cmVzLXRoYXQtdWNsaWJjLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA3LXVzZS1sbnItd3JhcHBlci1pbnN0ZWFkLW9mLWxvb2tpbmctZm9yLXJlbGF0aXZlLW9wdGkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwOC1uc3Bhd24tVXNlLWV4ZWN2cGUtb25seS13aGVuLWxpYmMtc3VwcG9ydHMtaXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwOS11dGlsLWJ5cGFzcy11bmltcGxlbWVudGVkLV9TQ19QSFlTX1BBR0VTLXN5c3RlbS1jb25mLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTAtaW1wbG1lbnQtc3lzdGVtZC1zeXN2LWluc3RhbGwtZm9yLU9FLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTEtbnNzLW15bWFjaGluZXMtQnVpbGQtY29uZGl0aW9uYWxseS13aGVuLUhBVkVfTVlIT1NUTi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEyLXJ1bGVzLXdoaXRlbGlzdC1oZC1kZXZpY2VzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTMtTWFrZS1yb290LXMtaG9tZS1kaXJlY3RvcnktY29uZmlndXJhYmxlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTQtUmV2ZXJ0LXJ1bGVzLXJlbW92ZS1maXJtd2FyZS1sb2FkaW5nLXJ1bGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTUtUmV2ZXJ0LXVkZXYtcmVtb3ZlLXVzZXJzcGFjZS1maXJtd2FyZS1sb2FkaW5nLXN1cHBvci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE2LW1ha2UtdGVzdC1kaXItY29uZmlndXJhYmxlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTctcmVtb3ZlLWR1cGxpY2F0ZS1pbmNsdWRlLXVjaGFyLmgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxOC1jaGVjay1mb3ItdWNoYXIuaC1pbi1jb25maWd1cmUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxOS1zb2NrZXQtdXRpbC1kb24tdC1mYWlsLWlmLWxpYmMtZG9lc24tdC1zdXBwb3J0LUlETi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIwLWJhY2stcG9ydC0yMzMtZG9uLXQtdXNlLXRoZS11bmlmaWVkLWhpZXJhcmNoeS1mb3ItdGhlLXN5c3RlbWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb3JlLWxvYWQtZnJhZ21lbnQtcmVmdXNlLXVuaXRzLXdpdGgtZXJyb3JzLWluLWNlcnRhLnBhdGNoIFwKLSIKLVNSQ19VUklfYXBwZW5kX2xpYmMtdWNsaWJjID0gIlwKLSAgICAgICAgICAgZmlsZTovLzAwMDItdW5pdHMtUHJlZmVyLWdldHR5LXRvLWFnZXR0eS1pbi1jb25zb2xlLXNldHVwLXN5c3RlbS5wYXRjaCBcCi0iCi1TUkNfVVJJX2FwcGVuZF9xZW11YWxsID0gIiBmaWxlOi8vMDAwMS1jb3JlLWRldmljZS5jLUNoYW5nZS10aGUtZGVmYXVsdC1kZXZpY2UtdGltZW91dC10by0yLnBhdGNoIgotCi1QQUNLQUdFQ09ORklHID8/PSAieHogXAotICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2VmaSBwYW0gc2VsaW51eCBsZGNvbmZpZycsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneGtiY29tbW9uJywgJycsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd3aWZpJywgJ3Jma2lsbCcsICcnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgIGJpbmZtdCBcCi0gICAgICAgICAgICAgICAgICAgcmFuZG9tc2VlZCBcCi0gICAgICAgICAgICAgICAgICAgbWFjaGluZWQgXAotICAgICAgICAgICAgICAgICAgIGJhY2tsaWdodCBcCi0gICAgICAgICAgICAgICAgICAgdmNvbnNvbGUgXAotICAgICAgICAgICAgICAgICAgIHF1b3RhY2hlY2sgXAotICAgICAgICAgICAgICAgICAgIGhvc3RuYW1lZCBcCi0gICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1RDTElCQycsICdnbGliYycsICdteWhvc3RuYW1lIHN5c3VzZXJzJywgJycsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgaGliZXJuYXRlIFwKLSAgICAgICAgICAgICAgICAgICB0aW1lZGF0ZWQgXAotICAgICAgICAgICAgICAgICAgIHRpbWVzeW5jZCBcCi0gICAgICAgICAgICAgICAgICAgbG9jYWxlZCBcCi0gICAgICAgICAgICAgICAgICAgaW1hIFwKLSAgICAgICAgICAgICAgICAgICBzbWFjayBcCi0gICAgICAgICAgICAgICAgICAgbG9naW5kIFwKLSAgICAgICAgICAgICAgICAgICBmaXJzdGJvb3QgXAotICAgICAgICAgICAgICAgICAgIHV0bXAgXAotICAgICAgICAgICAgICAgICAgIHBvbGtpdCBcCi0iCi1QQUNLQUdFQ09ORklHX3JlbW92ZV9saWJjLW11c2wgPSAic2VsaW51eCIKLVBBQ0tBR0VDT05GSUdfcmVtb3ZlX2xpYmMtbXVzbCA9ICJzbWFjayIKLQotIyBVc2UgdGhlIHVwc3RyZWFtIHN5c3RlbWQgc2VyaWFsLWdldHR5QC5zZXJ2aWNlIGFuZCByZWx5IG9uCi0jIHN5c3RlbWQtZ2V0dHktZ2VuZXJhdG9yIGluc3RlYWQgb2YgdXNpbmcgdGhlIE9FLWNvcmUgc3BlY2lmaWMKLSMgc3lzdGVtZC1zZXJpYWxnZXR0eS5iYiAtIG5vdCBlbmFibGVkIGJ5IGRlZmF1bHQuCi1QQUNLQUdFQ09ORklHW3NlcmlhbC1nZXR0eS1nZW5lcmF0b3JdID0gIiIKLQotUEFDS0FHRUNPTkZJR1tqb3VybmFsLXVwbG9hZF0gPSAiLS1lbmFibGUtbGliY3VybCwtLWRpc2FibGUtbGliY3VybCxjdXJsIgotIyBTaWduIHRoZSBqb3VybmFsIGZvciBhbnRpLXRhbXBlcmluZwotUEFDS0FHRUNPTkZJR1tnY3J5cHRdID0gIi0tZW5hYmxlLWdjcnlwdCwtLWRpc2FibGUtZ2NyeXB0LGxpYmdjcnlwdCIKLVBBQ0tBR0VDT05GSUdbY3J5cHRzZXR1cF0gPSAiLS1lbmFibGUtbGliY3J5cHRzZXR1cCwtLWRpc2FibGUtbGliY3J5cHRzZXR1cCxjcnlwdHNldHVwIgotUEFDS0FHRUNPTkZJR1ttaWNyb2h0dHBkXSA9ICItLWVuYWJsZS1taWNyb2h0dHBkLC0tZGlzYWJsZS1taWNyb2h0dHBkLGxpYm1pY3JvaHR0cGQiCi1QQUNLQUdFQ09ORklHW2VsZnV0aWxzXSA9ICItLWVuYWJsZS1lbGZ1dGlscywtLWRpc2FibGUtZWxmdXRpbHMsZWxmdXRpbHMiCi1QQUNLQUdFQ09ORklHW3Jlc29sdmVkXSA9ICItLWVuYWJsZS1yZXNvbHZlZCwtLWRpc2FibGUtcmVzb2x2ZWQiCi1QQUNLQUdFQ09ORklHW25ldHdvcmtkXSA9ICItLWVuYWJsZS1uZXR3b3JrZCwtLWRpc2FibGUtbmV0d29ya2QiCi1QQUNLQUdFQ09ORklHW21hY2hpbmVkXSA9ICItLWVuYWJsZS1tYWNoaW5lZCwtLWRpc2FibGUtbWFjaGluZWQiCi1QQUNLQUdFQ09ORklHW2JhY2tsaWdodF0gPSAiLS1lbmFibGUtYmFja2xpZ2h0LC0tZGlzYWJsZS1iYWNrbGlnaHQiCi1QQUNLQUdFQ09ORklHW3Zjb25zb2xlXSA9ICItLWVuYWJsZS12Y29uc29sZSwtLWRpc2FibGUtdmNvbnNvbGUsLCR7UE59LXZjb25zb2xlLXNldHVwIgotUEFDS0FHRUNPTkZJR1txdW90YWNoZWNrXSA9ICItLWVuYWJsZS1xdW90YWNoZWNrLC0tZGlzYWJsZS1xdW90YWNoZWNrIgotUEFDS0FHRUNPTkZJR1tob3N0bmFtZWRdID0gIi0tZW5hYmxlLWhvc3RuYW1lZCwtLWRpc2FibGUtaG9zdG5hbWVkIgotUEFDS0FHRUNPTkZJR1tteWhvc3RuYW1lXSA9ICItLWVuYWJsZS1teWhvc3RuYW1lLC0tZGlzYWJsZS1teWhvc3RuYW1lIgotUEFDS0FHRUNPTkZJR1tyZmtpbGxdID0gIi0tZW5hYmxlLXJma2lsbCwtLWRpc2FibGUtcmZraWxsIgotUEFDS0FHRUNPTkZJR1toaWJlcm5hdGVdID0gIi0tZW5hYmxlLWhpYmVybmF0ZSwtLWRpc2FibGUtaGliZXJuYXRlIgotUEFDS0FHRUNPTkZJR1t0aW1lZGF0ZWRdID0gIi0tZW5hYmxlLXRpbWVkYXRlZCwtLWRpc2FibGUtdGltZWRhdGVkIgotUEFDS0FHRUNPTkZJR1t0aW1lc3luY2RdID0gIi0tZW5hYmxlLXRpbWVzeW5jZCwtLWRpc2FibGUtdGltZXN5bmNkIgotUEFDS0FHRUNPTkZJR1tsb2NhbGVkXSA9ICItLWVuYWJsZS1sb2NhbGVkLC0tZGlzYWJsZS1sb2NhbGVkIgotUEFDS0FHRUNPTkZJR1tlZmldID0gIi0tZW5hYmxlLWVmaSwtLWRpc2FibGUtZWZpIgotUEFDS0FHRUNPTkZJR1tpbWFdID0gIi0tZW5hYmxlLWltYSwtLWRpc2FibGUtaW1hIgotUEFDS0FHRUNPTkZJR1tzbWFja10gPSAiLS1lbmFibGUtc21hY2ssLS1kaXNhYmxlLXNtYWNrIgotIyBsaWJzZWNjb21wIGlzIGZvdW5kIGluIG1ldGEtc2VjdXJpdHkKLVBBQ0tBR0VDT05GSUdbc2VjY29tcF0gPSAiLS1lbmFibGUtc2VjY29tcCwtLWRpc2FibGUtc2VjY29tcCxsaWJzZWNjb21wIgotUEFDS0FHRUNPTkZJR1tsb2dpbmRdID0gIi0tZW5hYmxlLWxvZ2luZCwtLWRpc2FibGUtbG9naW5kIgotUEFDS0FHRUNPTkZJR1tzeXN1c2Vyc10gPSAiLS1lbmFibGUtc3lzdXNlcnMsLS1kaXNhYmxlLXN5c3VzZXJzIgotUEFDS0FHRUNPTkZJR1tmaXJzdGJvb3RdID0gIi0tZW5hYmxlLWZpcnN0Ym9vdCwtLWRpc2FibGUtZmlyc3Rib290IgotUEFDS0FHRUNPTkZJR1tyYW5kb21zZWVkXSA9ICItLWVuYWJsZS1yYW5kb21zZWVkLC0tZGlzYWJsZS1yYW5kb21zZWVkIgotUEFDS0FHRUNPTkZJR1tiaW5mbXRdID0gIi0tZW5hYmxlLWJpbmZtdCwtLWRpc2FibGUtYmluZm10IgotUEFDS0FHRUNPTkZJR1t1dG1wXSA9ICItLWVuYWJsZS11dG1wLC0tZGlzYWJsZS11dG1wIgotUEFDS0FHRUNPTkZJR1twb2xraXRdID0gIi0tZW5hYmxlLXBvbGtpdCwtLWRpc2FibGUtcG9sa2l0IgotIyBpbXBvcnRkIHJlcXVpcmVzIGN1cmwveHovemxpYi9iemlwMi9nY3J5cHQKLVBBQ0tBR0VDT05GSUdbaW1wb3J0ZF0gPSAiLS1lbmFibGUtaW1wb3J0ZCwtLWRpc2FibGUtaW1wb3J0ZCIKLVBBQ0tBR0VDT05GSUdbbGliaWRuXSA9ICItLWVuYWJsZS1saWJpZG4sLS1kaXNhYmxlLWxpYmlkbixsaWJpZG4iCi1QQUNLQUdFQ09ORklHW2F1ZGl0XSA9ICItLWVuYWJsZS1hdWRpdCwtLWRpc2FibGUtYXVkaXQsYXVkaXQiCi1QQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLWVuYWJsZS1tYW5wYWdlcywtLWRpc2FibGUtbWFucGFnZXMsbGlieHNsdC1uYXRpdmUgeG1sdG8tbmF0aXZlIGRvY2Jvb2steG1sLWR0ZDQtbmF0aXZlIGRvY2Jvb2steHNsLXN0eWxlc2hlZXRzLW5hdGl2ZSIKLVBBQ0tBR0VDT05GSUdbcGFtXSA9ICItLWVuYWJsZS1wYW0sLS1kaXNhYmxlLXBhbSxsaWJwYW0iCi0jIFZlcmlmeSBrZXltYXBzIG9uIGxvY2FsZSBjaGFuZ2UKLVBBQ0tBR0VDT05GSUdbeGtiY29tbW9uXSA9ICItLWVuYWJsZS14a2Jjb21tb24sLS1kaXNhYmxlLXhrYmNvbW1vbixsaWJ4a2Jjb21tb24iCi0jIFVwZGF0ZSBOQVQgZmlyZXdhbGwgcnVsZXMKLVBBQ0tBR0VDT05GSUdbaXB0Y10gPSAiLS1lbmFibGUtbGliaXB0YywtLWRpc2FibGUtbGliaXB0YyxpcHRhYmxlcyIKLVBBQ0tBR0VDT05GSUdbbGRjb25maWddID0gIi0tZW5hYmxlLWxkY29uZmlnLC0tZGlzYWJsZS1sZGNvbmZpZywsIgotUEFDS0FHRUNPTkZJR1tzZWxpbnV4XSA9ICItLWVuYWJsZS1zZWxpbnV4LC0tZGlzYWJsZS1zZWxpbnV4LGxpYnNlbGludXgiCi1QQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICJhY19jdl9oZWFkZXJfdmFsZ3JpbmRfbWVtY2hlY2tfaD15ZXMgYWNfY3ZfaGVhZGVyX3ZhbGdyaW5kX3ZhbGdyaW5kX2g9eWVzICxhY19jdl9oZWFkZXJfdmFsZ3JpbmRfbWVtY2hlY2tfaD1ubyBhY19jdl9oZWFkZXJfdmFsZ3JpbmRfdmFsZ3JpbmRfaD1ubyAsdmFsZ3JpbmQiCi1QQUNLQUdFQ09ORklHW3FyZW5jb2RlXSA9ICItLWVuYWJsZS1xcmVuY29kZSwtLWRpc2FibGUtcXJlbmNvZGUscXJlbmNvZGUiCi1QQUNLQUdFQ09ORklHW2RidXNdID0gIi0tZW5hYmxlLWRidXMsLS1kaXNhYmxlLWRidXMsZGJ1cyIKLVBBQ0tBR0VDT05GSUdbY29yZWR1bXBdID0gIi0tZW5hYmxlLWNvcmVkdW1wLC0tZGlzYWJsZS1jb3JlZHVtcCIKLVBBQ0tBR0VDT05GSUdbYnppcDJdID0gIi0tZW5hYmxlLWJ6aXAyLC0tZGlzYWJsZS1iemlwMixiemlwMiIKLVBBQ0tBR0VDT05GSUdbbHo0XSA9ICItLWVuYWJsZS1sejQsLS1kaXNhYmxlLWx6NCxsejQiCi1QQUNLQUdFQ09ORklHW3h6XSA9ICItLWVuYWJsZS14eiwtLWRpc2FibGUteHoseHoiCi1QQUNLQUdFQ09ORklHW3psaWJdID0gIi0tZW5hYmxlLXpsaWIsLS1kaXNhYmxlLXpsaWIsemxpYiIKLQotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X3BhdGhfS0lMTD0ke2Jhc2VfYmluZGlyfS9raWxsIgotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X3BhdGhfS01PRD0ke2Jhc2VfYmluZGlyfS9rbW9kIgotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X3BhdGhfUVVPVEFDSEVDSz0ke3NiaW5kaXJ9L3F1b3RhY2hlY2siCi1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfcGF0aF9RVU9UQU9OPSR7c2JpbmRpcn0vcXVvdGFvbiIKLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9wYXRoX1NVTE9HSU49JHtiYXNlX3NiaW5kaXJ9L3N1bG9naW4iCi0KLSMgSGVscGVyIHZhcmlhYmxlcyB0byBjbGFyaWZ5IGxvY2F0aW9ucy4gIFRoaXMgbWlycm9ycyB0aGUgbG9naWMgaW4gc3lzdGVtZCdzCi0jIGJ1aWxkIHN5c3RlbS4KLXJvb3RwcmVmaXggPz0gIiR7YmFzZV9wcmVmaXh9Igotcm9vdGxpYmRpciA/PSAiJHtiYXNlX2xpYmRpcn0iCi1yb290bGliZXhlY2RpciA9ICIke3Jvb3RwcmVmaXh9L2xpYiIKLQotQ0FDSEVEX0NPTkZJR1VSRVZBUlNfY2xhc3MtdGFyZ2V0ID0gIlwKLSAgICAgICAgICAgICAgICAgICAgICAgICBhY19jdl9wYXRoX01PVU5UX1BBVEg9JHtiYXNlX2JpbmRpcn0vbW91bnQgXAotICAgICAgICAgICAgICAgICAgICAgICAgIGFjX2N2X3BhdGhfVU1PVU5UX1BBVEg9JHtiYXNlX2JpbmRpcn0vdW1vdW50IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICBhY19jdl9wYXRoX0tNT0Q9JHtiYXNlX2JpbmRpcn0va21vZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgYWNfY3ZfcGF0aF9LSUxMPSR7YmFzZV9iaW5kaXJ9L2tpbGwgXAotICAgICAgICAgICAgICAgICAgICAgICAgIGFjX2N2X3BhdGhfU1VMT0dJTj0ke2Jhc2Vfc2JpbmRpcn0vc3Vsb2dpbiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgYWNfY3ZfcGF0aF9LRVhFQz0ke3NiaW5kaXJ9L2tleGVjIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICBhY19jdl9wYXRoX1FVT1RBQ0hFQ0s9JHtzYmluZGlyfS9xdW90YWNoZWNrIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICBhY19jdl9wYXRoX1FVT1RBT049JHtzYmluZGlyfS9xdW90YW9uIFwKLQkJCSAiCi0KLUVYVFJBX09FQ09ORiA9ICIgLS13aXRoLXJvb3RwcmVmaXg9JHtyb290cHJlZml4fSBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1yb290bGliZGlyPSR7cm9vdGxpYmRpcn0gXAotICAgICAgICAgICAgICAgICAtLXdpdGgtcm9vdGhvbWVkaXI9JHtST09UX0hPTUV9IFwKLSAgICAgICAgICAgICAgICAgLS1lbmFibGUtc3BsaXQtdXNyIFwKLSAgICAgICAgICAgICAgICAgLS13aXRob3V0LXB5dGhvbiBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1zeXN2cmNuZC1wYXRoPSR7c3lzY29uZmRpcn0gXAotICAgICAgICAgICAgICAgICAtLXdpdGgtZmlybXdhcmUtcGF0aD0vbGliL2Zpcm13YXJlIFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLXRlc3RkaXI9JHtQVEVTVF9QQVRIfSBcCi0gICAgICAgICAgICAgICAiCi0jIHBlciB0aGUgc3lzdGVtZCBSRUFETUUsIGRlZmluZSBWQUxHUklORD0xIHRvIHJ1biB1bmRlciB2YWxncmluZAotQ0ZMQUdTIC49ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd2YWxncmluZCcsICcgLURWQUxHUklORD0xJywgJycsIGQpfSIKLQotIyBkaXNhYmxlIHByb2JsZW1hdGljIEdDQyA1LjIgb3B0aW1pemF0aW9ucyBbWU9DVE8gIzgyOTFdCi1GVUxMX09QVElNSVpBVElPTl9hcHBlbmRfYXJtID0gIiAtZm5vLXNjaGVkdWxlLWluc25zIC1mbm8tc2NoZWR1bGUtaW5zbnMyIgotCi0jIEF2b2lkIGxvZ2luIGZhaWx1cmUgb24gcWVtdW1pcHM2NCB3aGVuIHBhbSBpcyBlbmFibGVkCi1GVUxMX09QVElNSVpBVElPTl9hcHBlbmRfbWlwczY0ID0gIiAtZm5vLXRyZWUtc3dpdGNoLWNvbnZlcnNpb24gLWZuby10cmVlLXRhaWwtbWVyZ2UiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotCWV4cG9ydCBOTT0iJHtIT1NUX1BSRUZJWH1nY2Mtbm0iCi0JZXhwb3J0IEFSPSIke0hPU1RfUFJFRklYfWdjYy1hciIKLQlleHBvcnQgUkFOTElCPSIke0hPU1RfUFJFRklYfWdjYy1yYW5saWIiCi0JZXhwb3J0IEtNT0Q9IiR7YmFzZV9iaW5kaXJ9L2ttb2QiCi0JaWYgWyAtZCAke1N9L3VuaXRzLnByZV9zZWQgXSA7IHRoZW4KLQkJY3AgLXIgJHtTfS91bml0cy5wcmVfc2VkICR7U30vdW5pdHMKLQllbHNlCi0JCWNwIC1yICR7U30vdW5pdHMgJHtTfS91bml0cy5wcmVfc2VkCi0JZmkKLQlzZWQgLWkgLWUgJ3M6LURURVNUX0RJUj1cXFwiLipcXFwiOi1EVEVTVF9ESVI9XFxcIiR7UFRFU1RfUEFUSH0vdGVzdHMvdGVzdFxcXCI6JyAke1N9L01ha2VmaWxlLmFtCi0Jc2VkIC1pIC1lICdzOi1EQ0FUQUxPR19ESVI9XFxcIi4qXFxcIjotRENBVEFMT0dfRElSPVxcXCIke1BURVNUX1BBVEh9L3Rlc3RzL2NhdGFsb2dcXFwiOicgJHtTfS9NYWtlZmlsZS5hbQotfQotCi1kb19pbnN0YWxsKCkgewotCWF1dG90b29sc19kb19pbnN0YWxsCi0JaW5zdGFsbCAtZCAke0R9LyR7YmFzZV9zYmluZGlyfQotCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3NlcmlhbC1nZXR0eS1nZW5lcmF0b3InLCAnZmFsc2UnLCAndHJ1ZScsIGQpfTsgdGhlbgotCQkjIFByb3ZpZGVkIGJ5IGEgc2VwYXJhdGUgcmVjaXBlCi0JCXJtICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3NlcmlhbC1nZXR0eSogLWYKLQlmaQotCi0JIyBQcm92aWRlIHN1cHBvcnQgZm9yIGluaXRyYW1mcwotCVsgISAtZSAke0R9L2luaXQgXSAmJiBsbiAtcyAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQgJHtEfS9pbml0Ci0JWyAhIC1lICR7RH0vJHtiYXNlX3NiaW5kaXJ9L3VkZXZkIF0gJiYgbG4gLXMgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXVkZXZkICR7RH0vJHtiYXNlX3NiaW5kaXJ9L3VkZXZkCi0KLQkjIENyZWF0ZSBtYWNoaW5lLWlkCi0JIyAyMDoxMiA8IG1lemNhbGVybz4ga29lbjogeW91IGhhdmUgdGhyZWUgb3B0aW9uczogYSkgcnVuIHN5c3RlbWQtbWFjaGluZS1pZC1zZXR1cCBhdCBpbnN0YWxsIHRpbWUsIGIpIGhhdmUgLyByZWFkLW9ubHkgYW5kIGFuIGVtcHR5IGZpbGUgdGhlcmUgKGZvciBzdGF0ZWxlc3MpIGFuZCBjKSBib290IHdpdGggLyB3cml0YWJsZQotCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L21hY2hpbmUtaWQKLQotCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQvCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vKi5ydWxlcyAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQvCi0JaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZwotCWluc3RhbGwgLW0gMDY0NCAke0J9L3NyYy91ZGV2L3VkZXYucGMgJHtEfSR7bGliZGlyfS9wa2djb25maWcvCi0KLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS8wMC1jcmVhdGUtdm9sYXRpbGUuY29uZiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kLwotCi0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3Zpbml0JywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KLQkJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLQkJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc3lzdGVtZC11ZGV2ZAotCQlzZWQgLWkgcyVAVURFVkRAJSR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC11ZGV2ZCUgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3N5c3RlbWQtdWRldmQKLQlmaQotCi0JY2hvd24gcm9vdDpzeXN0ZW1kLWpvdXJuYWwgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L2xvZy9qb3VybmFsCi0KLQkjIERlbGV0ZSBqb3VybmFsIFJFQURNRSwgYXMgbG9nIGNhbiBiZSBzeW1saW5rZWQgaW5zaWRlIHZvbGF0aWxlLgotCXJtIC1mICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9sb2cvUkVBRE1FCi0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2dyYXBoaWNhbC50YXJnZXQud2FudHMKLQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL211bHRpLXVzZXIudGFyZ2V0LndhbnRzCi0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9wb3dlcm9mZi50YXJnZXQud2FudHMKLQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3JlYm9vdC50YXJnZXQud2FudHMKLQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3Jlc2N1ZS50YXJnZXQud2FudHMKLQotCSMgQ3JlYXRlIHN5bWxpbmtzIGZvciBzeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKLQlpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd1dG1wJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLQkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9ncmFwaGljYWwudGFyZ2V0LndhbnRzL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQotCQlsbiAtc2YgLi4vc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL211bHRpLXVzZXIudGFyZ2V0LndhbnRzL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQotCQlsbiAtc2YgLi4vc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3Bvd2Vyb2ZmLnRhcmdldC53YW50cy9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKLQkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9yZWJvb3QudGFyZ2V0LndhbnRzL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQotCQlsbiAtc2YgLi4vc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3Jlc2N1ZS50YXJnZXQud2FudHMvc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlCi0JZmkKLQotCSMgRW5hYmxlIGpvdXJuYWwgdG8gZm9yd2FyZCBtZXNzYWdlIHRvIHN5c2xvZyBkYWVtb24KLQlzZWQgLWkgLWUgJ3MvLipGb3J3YXJkVG9TeXNsb2cuKi9Gb3J3YXJkVG9TeXNsb2c9eWVzLycgJHtEfSR7c3lzY29uZmRpcn0vc3lzdGVtZC9qb3VybmFsZC5jb25mCi0JIyBTZXQgdGhlIG1heGltaXVtIHNpemUgb2YgcnVudGltZSBqb3VybmFsIHRvIDY0TSBhcyBkZWZhdWx0Ci0Jc2VkIC1pIC1lICdzLy4qUnVudGltZU1heFVzZS4qL1J1bnRpbWVNYXhVc2U9NjRNLycgJHtEfSR7c3lzY29uZmRpcn0vc3lzdGVtZC9qb3VybmFsZC5jb25mCi0KLQkjIHRoaXMgZmlsZSBpcyBuZWVkZWQgdG8gZXhpc3QgaWYgbmV0d29ya2QgaXMgZGlzYWJsZWQgYnV0IHRpbWVzeW5jZCBpcyBzdGlsbCBpbiB1c2Ugc2luY2UgdGltZXN5bmNkIGNoZWNrcyBpdAotCSMgZm9yIGV4aXN0ZW5jZSBlbHNlIGl0IGZhaWxzCi0JaWYgWyAtcyAke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvc3lzdGVtZC5jb25mIF07IHRoZW4KLQkJJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbmV0d29ya2QnLCAnOicsICdzZWQgLWkgLWUgIlwkYWQgL3J1bi9zeXN0ZW1kL25ldGlmL2xpbmtzIDA3NTUgcm9vdCByb290IC0iICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXN0ZW1kLmNvbmYnLCBkKX0KLQlmaQotCWlmICEgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncmVzb2x2ZWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotCQllY2hvICdMISAke3N5c2NvbmZkaXJ9L3Jlc29sdi5jb25mIC0gLSAtIC0gLi4vcnVuL3N5c3RlbWQvcmVzb2x2ZS9yZXNvbHYuY29uZicgPj4ke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvZXRjLmNvbmYKLQkJZWNobyAnZCAvcnVuL3N5c3RlbWQvcmVzb2x2ZSAwNzU1IHJvb3Qgcm9vdCAtJyA+PiR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXN0ZW1kLmNvbmYKLQkJZWNobyAnZiAvcnVuL3N5c3RlbWQvcmVzb2x2ZS9yZXNvbHYuY29uZiAwNjQ0IHJvb3Qgcm9vdCcgPj4ke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvc3lzdGVtZC5jb25mCi0JCWxuIC1zIC4uL3J1bi9zeXN0ZW1kL3Jlc29sdmUvcmVzb2x2LmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vcmVzb2x2LmNvbmYKLQllbHNlCi0JCXNlZCAtaSAtZSAicyVeTCEgL2V0Yy9yZXNvbHYuY29uZi4qJCVMISAvZXRjL3Jlc29sdi5jb25mIC0gLSAtIC0gLi4vcnVuL3N5c3RlbWQvcmVzb2x2ZS9yZXNvbHYuY29uZiVnIiAke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvZXRjLmNvbmYKLQlmaQotCWluc3RhbGwgLURtIDA3NTUgJHtTfS9zcmMvc3lzdGVtY3RsL3N5c3RlbWQtc3lzdi1pbnN0YWxsLlNLRUxFVE9OICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtZC1zeXN2LWluc3RhbGwKLX0KLQotZG9faW5zdGFsbF9wdGVzdCAoKSB7Ci0gICAgICAgIyBpbnN0YWxsIGRhdGEgZmlsZXMgbmVlZGVkIGZvciB0ZXN0cwotICAgICAgIGluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvdGVzdAotICAgICAgIGNwIC1yZkwgJHtTfS90ZXN0LyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvdGVzdAotICAgICAgICMgcHl0aG9uIGlzIGRpc2FibGVkIGZvciBzeXN0ZW1kLCB0aHVzIHJlbW92aW5nIHRoZXNlIHB5dGhvbiB0ZXN0aW5nIHNjcmlwdHMKLSAgICAgICBybSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy90ZXN0LyoucHkKLSAgICAgICBzZWQgLWkgJ3MvInRyZWUiLyJscyIvJyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy90ZXN0L3VkZXYtdGVzdC5wbAotCi0gICAgICAgaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9jYXRhbG9nCi0gICAgICAgaW5zdGFsbCAke1N9L2NhdGFsb2cvKiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9jYXRhbG9nLwotCi0gICAgICAgaW5zdGFsbCAtRCAke1N9L2J1aWxkLWF1eC90ZXN0LWRyaXZlciAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9idWlsZC1hdXgvdGVzdC1kcml2ZXIKLQotICAgICAgIGluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvcnVsZXMKLSAgICAgICBpbnN0YWxsICR7Qn0vcnVsZXMvKiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9ydWxlcy8KLQotICAgICAgICMgVGhpcyBkaXJlY3RvcnkgbmVlZHMgdG8gYmUgdGhlcmUgZm9yIHVkZXYtdGVzdC5wbCB0byB3b3JrLgotICAgICAgIGluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS91ZGV2L3J1bGVzLmQKLQotICAgICAgICMgaW5zdGFsbCBhY3R1YWwgdGVzdCBiaW5hcmllcwotICAgICAgIGluc3RhbGwgLW0gMDc1NSAke0J9L3Rlc3QtKiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8KLSAgICAgICBpbnN0YWxsIC1tIDA3NTUgJHtCfS8ubGlicy90ZXN0LSogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvCi0KLSAgICAgICBpbnN0YWxsICR7Qn0vTWFrZWZpbGUgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvCi19Ci0KLXB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpewotICAgIHN5c3RlbWRsaWJkaXIgPSBkLmdldFZhcigicm9vdGxpYmRpciIpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgc3lzdGVtZGxpYmRpciwgJ15saWIoLiopXC5zb1wuKicsICdsaWIlcycsICdTeXN0ZW1kICVzIGxpYnJhcnknLCBleHRyYV9kZXBlbmRzPScnLCBhbGxvd19saW5rcz1UcnVlKQotfQotUEFDS0FHRVNfRFlOQU1JQyArPSAiXmxpYih1ZGV2fHN5c3RlbWR8bnNzKS4qIgotCi1QQUNLQUdFUyA9KyAiXAotICAgICR7UE59LWd1aSBcCi0gICAgJHtQTn0tdmNvbnNvbGUtc2V0dXAgXAotICAgICR7UE59LWluaXRyYW1mcyBcCi0gICAgJHtQTn0tYW5hbHl6ZSBcCi0gICAgJHtQTn0ta2VybmVsLWluc3RhbGwgXAotICAgICR7UE59LXJwbS1tYWNyb3MgXAotICAgICR7UE59LWJpbmZtdCBcCi0gICAgJHtQTn0tcGFtIFwKLSAgICAke1BOfS16c2gtY29tcGxldGlvbiBcCi0gICAgJHtQTn0teG9yZy14aW5pdHJjIFwKLSAgICAke1BOfS1jb250YWluZXIgXAotICAgICR7UE59LWV4dHJhLXV0aWxzIFwKLSIKLQotU1VNTUFSWV8ke1BOfS1jb250YWluZXIgPSAiVG9vbHMgZm9yIGNvbnRhaW5lcnMgYW5kIFZNcyIKLURFU0NSSVBUSU9OXyR7UE59LWNvbnRhaW5lciA9ICJTeXN0ZW1kIHRvb2xzIHRvIHNwYXduIGFuZCBtYW5hZ2UgY29udGFpbmVycyBhbmQgdmlydHVhbCBtYWNoaW5lcy4iCi0KLVNZU1RFTURfUEFDS0FHRVMgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYmluZm10JywgJyR7UE59LWJpbmZtdCcsICcnLCBkKX0iCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0tYmluZm10ID0gInN5c3RlbWQtYmluZm10LnNlcnZpY2UiCi0KLVVTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0gJHtQTn0tZXh0cmEtdXRpbHMiCi1VU0VSQUREX1BBUkFNXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdtaWNyb2h0dHBkJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1qb3VybmFsLWdhdGV3YXk7JywgJycsIGQpfSIKLVVTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ21pY3JvaHR0cGQnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLWpvdXJuYWwtcmVtb3RlOycsICcnLCBkKX0iCi1VU0VSQUREX1BBUkFNXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdqb3VybmFsLXVwbG9hZCcsICctLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtam91cm5hbC11cGxvYWQ7JywgJycsIGQpfSIKLVVTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3RpbWVzeW5jZCcsICctLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtdGltZXN5bmM7JywgJycsIGQpfSIKLVVTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ25ldHdvcmtkJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1uZXR3b3JrOycsICcnLCBkKX0iCi1VU0VSQUREX1BBUkFNXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdjb3JlZHVtcCcsICctLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtY29yZWR1bXA7JywgJycsIGQpfSIKLVVTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3Jlc29sdmVkJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1yZXNvbHZlOycsICcnLCBkKX0iCi1HUk9VUEFERF9QQVJBTV8ke1BOfSA9ICItciBsb2NrOyAtciBzeXN0ZW1kLWpvdXJuYWwiCi1VU0VSQUREX1BBUkFNXyR7UE59LWV4dHJhLXV0aWxzICs9ICItLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtYnVzLXByb3h5OyIKLQotRklMRVNfJHtQTn0tYW5hbHl6ZSA9ICIke2JpbmRpcn0vc3lzdGVtZC1hbmFseXplIgotCi1GSUxFU18ke1BOfS1pbml0cmFtZnMgPSAiL2luaXQiCi1SREVQRU5EU18ke1BOfS1pbml0cmFtZnMgPSAiJHtQTn0iCi0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJnYXdrIG1ha2UgcGVybCBiYXNoIHh6IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICB0emRhdGEgdHpkYXRhLWFtZXJpY2FzIHR6ZGF0YS1hc2lhIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICB0emRhdGEtZXVyb3BlIHR6ZGF0YS1hZnJpY2EgdHpkYXRhLWFudGFyY3RpY2EgXAotICAgICAgICAgICAgICAgICAgICAgICAgIHR6ZGF0YS1hcmN0aWMgdHpkYXRhLWF0bGFudGljIHR6ZGF0YS1hdXN0cmFsaWEgXAotICAgICAgICAgICAgICAgICAgICAgICAgIHR6ZGF0YS1wYWNpZmljIHR6ZGF0YS1wb3NpeCIKLQotRklMRVNfJHtQTn0tcHRlc3QgKz0gIiR7bGliZGlyfS91ZGV2L3J1bGVzLmQiCi0KLUZJTEVTXyR7UE59LWd1aSA9ICIke2JpbmRpcn0vc3lzdGVtYWRtIgotCi1GSUxFU18ke1BOfS12Y29uc29sZS1zZXR1cCA9ICIke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtdmNvbnNvbGUtc2V0dXAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLXZjb25zb2xlLXNldHVwLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXNpbml0LnRhcmdldC53YW50cy9zeXN0ZW1kLXZjb25zb2xlLXNldHVwLnNlcnZpY2UiCi0KLVJERVBFTkRTXyR7UE59LWtlcm5lbC1pbnN0YWxsICs9ICJiYXNoIgotRklMRVNfJHtQTn0ta2VybmVsLWluc3RhbGwgPSAiJHtiaW5kaXJ9L2tlcm5lbC1pbnN0YWxsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0va2VybmVsLyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIva2VybmVsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgotRklMRVNfJHtQTn0tcnBtLW1hY3JvcyA9ICIke2V4ZWNfcHJlZml4fS9saWIvcnBtIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiCi0KLUZJTEVTXyR7UE59LXhvcmcteGluaXRyYyA9ICIke3N5c2NvbmZkaXJ9L1gxMS94aW5pdC94aW5pdHJjLmQvKiIKLQotRklMRVNfJHtQTn0tenNoLWNvbXBsZXRpb24gPSAiJHtkYXRhZGlyfS96c2gvc2l0ZS1mdW5jdGlvbnMiCi0KLUZJTEVTXyR7UE59LWJpbmZtdCA9ICIke3N5c2NvbmZkaXJ9L2JpbmZtdC5kLyBcCi0gICAgICAgICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL2JpbmZtdC5kIFwKLSAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtYmluZm10IFwKLSAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3Byb2Mtc3lzLWZzLWJpbmZtdF9taXNjLiogXAotICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1iaW5mbXQuc2VydmljZSIKLVJSRUNPTU1FTkRTXyR7UE59LWJpbmZtdCA9ICJrZXJuZWwtbW9kdWxlLWJpbmZtdC1taXNjIgotCi1SUkVDT01NRU5EU18ke1BOfS12Y29uc29sZS1zZXR1cCA9ICJrYmQga2JkLWNvbnNvbGVmb250cyBrYmQta2V5bWFwcyIKLQotRklMRVNfJHtQTn0tY29udGFpbmVyID0gIiR7c3lzY29uZmRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5pbXBvcnQxLmNvbmYgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5jb25mIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS9tYWNoaW5lY3RsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1uc3Bhd24gXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7bm9uYXJjaF9saWJkaXJ9L3N5c3RlbWQvaW1wb3J0LXB1YnJpbmcuZ3BnIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2J1c25hbWVzLnRhcmdldC53YW50cy9vcmcuZnJlZWRlc2t0b3AuaW1wb3J0MS5idXNuYW1lIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2J1c25hbWVzLnRhcmdldC53YW50cy9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuYnVzbmFtZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9sb2NhbC1mcy50YXJnZXQud2FudHMvdmFyLWxpYi1tYWNoaW5lcy5tb3VudCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9tYWNoaW5lLnNsaWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L21hY2hpbmVzLnRhcmdldCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9vcmcuZnJlZWRlc2t0b3AuaW1wb3J0MS5idXNuYW1lIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L29yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5idXNuYW1lIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3N5c3RlbWQtaW1wb3J0ZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3N5c3RlbWQtbWFjaGluZWQuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9kYnVzLW9yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3Zhci1saWItbWFjaGluZXMubW91bnQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1pbXBvcnQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1pbXBvcnRkIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtam91cm5hbC1nYXRld2F5ZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWpvdXJuYWwtcmVtb3RlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtam91cm5hbC11cGxvYWQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1tYWNoaW5lZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXB1bGwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL3N5c3RlbWQtbnNwYXduLmNvbmYgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc3lzdGVtZC1uc3Bhd25ALnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJuc3NfbXltYWNoaW5lcy5zby4yIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0tc2VydmljZXMvb3JnLmZyZWVkZXNrdG9wLmltcG9ydDEuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLXNlcnZpY2VzL29yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3BvbGtpdC0xL2FjdGlvbnMvb3JnLmZyZWVkZXNrdG9wLmltcG9ydDEucG9saWN5IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3BvbGtpdC0xL2FjdGlvbnMvb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLnBvbGljeSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAiCi0KLUZJTEVTXyR7UE59LWV4dHJhLXV0aWxzID0gIlwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L3N5c3RlbWQtZXNjYXBlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L3N5c3RlbWQtaW5oaWJpdCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1kZXRlY3QtdmlydCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1wYXRoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLXJ1biBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1jYXQgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtZGVsdGEgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtY2dscyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1jZ3RvcCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1zdGRpby1icmlkZ2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vc3lzdGVtZC1hc2stcGFzc3dvcmQgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vc3lzdGVtZC10dHktYXNrLXBhc3N3b3JkLWFnZW50IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1hc2stcGFzc3dvcmQtY29uc29sZS5wYXRoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1hc2stcGFzc3dvcmQtY29uc29sZS5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1hc2stcGFzc3dvcmQtd2FsbC5wYXRoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1hc2stcGFzc3dvcmQtd2FsbC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzaW5pdC50YXJnZXQud2FudHMvc3lzdGVtZC1hc2stcGFzc3dvcmQtY29uc29sZS5wYXRoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzaW5pdC50YXJnZXQud2FudHMvc3lzdGVtZC1hc2stcGFzc3dvcmQtd2FsbC5wYXRoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbXVsdGktdXNlci50YXJnZXQud2FudHMvc3lzdGVtZC1hc2stcGFzc3dvcmQtd2FsbC5wYXRoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1yZXNvbHZlLWhvc3QgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWFjLXBvd2VyIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1hY3RpdmF0ZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtYnVzLXByb3h5ZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYnVzLXByb3h5ZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1idXMtcHJveHlkLnNvY2tldCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtc29ja2V0LXByb3h5ZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtcmVwbHktcGFzc3dvcmQgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXNsZWVwIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtLXNsZWVwIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1oaWJlcm5hdGUuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtaHlicmlkLXNsZWVwLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLXN1c3BlbmQuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3NsZWVwLnRhcmdldCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtaW5pdGN0bCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtaW5pdGN0bC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1pbml0Y3RsLnNvY2tldCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3NvY2tldHMudGFyZ2V0LndhbnRzL3N5c3RlbWQtaW5pdGN0bC5zb2NrZXQgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW0tZ2VuZXJhdG9ycy9zeXN0ZW1kLWdwdC1hdXRvLWdlbmVyYXRvciBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtY2dyb3Vwcy1hZ2VudCBcCi0iCi0KLUNPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L21hY2hpbmUtaWQgXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzdGVtZC9jb3JlZHVtcC5jb25mIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c3RlbWQvam91cm5hbGQuY29uZiBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXN0ZW1kL2xvZ2luZC5jb25mIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c3RlbWQvc3lzdGVtLmNvbmYgXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzdGVtZC91c2VyLmNvbmYiCi0KLUZJTEVTXyR7UE59ID0gIiAke2Jhc2VfYmluZGlyfS8qIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zZXJ2aWNlcyBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLXNlcnZpY2VzIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3BvbGtpdC0xIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9LyR7QlBOfSBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9mYWN0b3J5IFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2RidXMtMS8gXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vbWFjaGluZS1pZCBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9tb2R1bGVzLWxvYWQuZC8gXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vcGFtLmQvIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c2N0bC5kLyBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXN0ZW1kLyBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS90bXBmaWxlcy5kLyBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS94ZGcvIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZC9SRUFETUUgXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vcmVzb2x2LmNvbmYgXAotICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvKiBcCi0gICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9LyogXAotICAgICAgICAgICAgICAgICR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5Lyouc28gXAotICAgICAgICAgICAgICAgIC9jZ3JvdXAgXAotICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kKiBcCi0gICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2J1c2N0bCBcCi0gICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2NvcmVkdW1wY3RsIFwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0vbG9jYWxlY3RsIFwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0vaG9zdG5hbWVjdGwgXAotICAgICAgICAgICAgICAgICR7YmluZGlyfS90aW1lZGF0ZWN0bCBcCi0gICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2Jvb3RjdGwgXAotICAgICAgICAgICAgICAgICR7YmluZGlyfS9rZXJuZWwtaW5zdGFsbCBcCi0gICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvKi5jb25mIFwKLSAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvc3lzdGVtZCBcCi0gICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL21vZHVsZXMtbG9hZC5kIFwKLSAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvc3lzY3RsLmQgXAotICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9zeXN1c2Vycy5kIFwKLSAgICAgICAgICAgICAgICAke2xvY2Fsc3RhdGVkaXJ9IFwKLSAgICAgICAgICAgICAgICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYvcnVsZXMuZC83MC11YWNjZXNzLnJ1bGVzIFwKLSAgICAgICAgICAgICAgICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYvcnVsZXMuZC83MS1zZWF0LnJ1bGVzIFwKLSAgICAgICAgICAgICAgICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYvcnVsZXMuZC83My1zZWF0LWxhdGUucnVsZXMgXAotICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kLzk5LXN5c3RlbWQucnVsZXMgXAotICAgICAgICAgICAgICAgIgotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5LyoubGEgJHtkYXRhZGlyfS9kYnVzLTEvaW50ZXJmYWNlcy8gJHtzeXNjb25mZGlyfS9ycG0vbWFjcm9zLnN5c3RlbWQiCi0KLVJERVBFTkRTXyR7UE59ICs9ICJrbW9kIGRidXMgdXRpbC1saW51eC1tb3VudCB1ZGV2ICg9ICR7RVhURU5EUEtHVn0pIgotUkRFUEVORFNfJHtQTn0gKz0gInZvbGF0aWxlLWJpbmRzIHVwZGF0ZS1yYy5kIgotCi1SUkVDT01NRU5EU18ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc2VyaWFsLWdldHR5LWdlbmVyYXRvcicsICcnLCAnc3lzdGVtZC1zZXJpYWxnZXR0eScsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgICAgc3lzdGVtZC1leHRyYS11dGlscyBcCi0gICAgICAgICAgICAgICAgICAgICAgc3lzdGVtZC1jb21wYXQtdW5pdHMgdWRldi1od2RiIFwKLSAgICAgICAgICAgICAgICAgICAgICB1dGlsLWxpbnV4LWFnZXR0eSAgdXRpbC1saW51eC1mc2NrIGUyZnNwcm9ncy1lMmZzY2sgXAotICAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtYXV0b2ZzNCBrZXJuZWwtbW9kdWxlLXVuaXgga2VybmVsLW1vZHVsZS1pcHY2IFwKLSAgICAgICAgICAgICAgICAgICAgICBvcy1yZWxlYXNlIFwKLSIKLQotSU5TQU5FX1NLSVBfJHtQTn0gKz0gImRldi1zbyBsaWJkaXIiCi1JTlNBTkVfU0tJUF8ke1BOfS1kYmcgKz0gImxpYmRpciIKLUlOU0FORV9TS0lQXyR7UE59LWRvYyArPSAiIGxpYmRpciIKLQotUEFDS0FHRVMgPSsgInVkZXYgdWRldi1od2RiIgotCi1SUFJPVklERVNfdWRldiA9ICJob3RwbHVnIgotCi1SREVQRU5EU191ZGV2LWh3ZGIgKz0gInVkZXYiCi0KLUZJTEVTX3VkZXYgKz0gIiR7YmFzZV9zYmluZGlyfS91ZGV2ZCBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtdWRldmQgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9hY2NlbGVyb21ldGVyIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvYXRhX2lkIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvY2Ryb21faWQgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9jb2xsZWN0IFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvZmluZGtleWJvYXJkcyBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2tleWJvYXJkLWZvcmNlLXJlbGVhc2Uuc2ggXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9rZXltYXAgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9tdGRfcHJvYmUgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9zY3NpX2lkIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvdjRsX2lkIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYva2V5bWFwcyBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3J1bGVzLmQvKi5ydWxlcyBcCi0gICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3VkZXYgXAotICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvc3lzdGVtZC11ZGV2ZCBcCi0gICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyp1ZGV2KiBcCi0gICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyoud2FudHMvKnVkZXYqIFwKLSAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L3VkZXZhZG0gXAotICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9iYXNoLWNvbXBsZXRpb24vY29tcGxldGlvbnMvdWRldmFkbSBcCi0gICAgICAgICAgICAgICIKLQotRklMRVNfdWRldi1od2RiID0gIiR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvaHdkYi5kIgotCi1JTklUU0NSSVBUX1BBQ0tBR0VTID0gInVkZXYiCi1JTklUU0NSSVBUX05BTUVfdWRldiA9ICJzeXN0ZW1kLXVkZXZkIgotSU5JVFNDUklQVF9QQVJBTVNfdWRldiA9ICJzdGFydCAwMyBTIC4iCi0KLXB5dGhvbiBfX2Fub255bW91cygpIHsKLSAgICBpZiBub3QgYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsIFRydWUsIEZhbHNlLCBkKToKLSAgICAgICAgZC5zZXRWYXIoIklOSElCSVRfVVBEQVRFUkNEX0JCQ0xBU1MiLCAiMSIpCi19Ci0KLSMgVE9ETzoKLSMgdS1hIGZvciBydW5sZXZlbCBhbmQgdGVsaW5pdAotCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJpbml0IGhhbHQgcmVib290IHNodXRkb3duIHBvd2Vyb2ZmIHJ1bmxldmVsIgotCi1BTFRFUk5BVElWRV9UQVJHRVRbaW5pdF0gPSAiJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2luaXRdID0gIiR7YmFzZV9zYmluZGlyfS9pbml0IgotQUxURVJOQVRJVkVfUFJJT1JJVFlbaW5pdF0gPz0gIjMwMCIKLQotQUxURVJOQVRJVkVfVEFSR0VUW2hhbHRdID0gIiR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtoYWx0XSA9ICIke2Jhc2Vfc2JpbmRpcn0vaGFsdCIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZW2hhbHRdID89ICIzMDAiCi0KLUFMVEVSTkFUSVZFX1RBUkdFVFtyZWJvb3RdID0gIiR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtyZWJvb3RdID0gIiR7YmFzZV9zYmluZGlyfS9yZWJvb3QiCi1BTFRFUk5BVElWRV9QUklPUklUWVtyZWJvb3RdID89ICIzMDAiCi0KLUFMVEVSTkFUSVZFX1RBUkdFVFtzaHV0ZG93bl0gPSAiJHtiYXNlX2JpbmRpcn0vc3lzdGVtY3RsIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3NodXRkb3duXSA9ICIke2Jhc2Vfc2JpbmRpcn0vc2h1dGRvd24iCi1BTFRFUk5BVElWRV9QUklPUklUWVtzaHV0ZG93bl0gPz0gIjMwMCIKLQotQUxURVJOQVRJVkVfVEFSR0VUW3Bvd2Vyb2ZmXSA9ICIke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbcG93ZXJvZmZdID0gIiR7YmFzZV9zYmluZGlyfS9wb3dlcm9mZiIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZW3Bvd2Vyb2ZmXSA/PSAiMzAwIgotCi1BTFRFUk5BVElWRV9UQVJHRVRbcnVubGV2ZWxdID0gIiR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtydW5sZXZlbF0gPSAiJHtiYXNlX3NiaW5kaXJ9L3J1bmxldmVsIgotQUxURVJOQVRJVkVfUFJJT1JJVFlbcnVubGV2ZWxdID89ICIzMDAiCi0KLXBrZ19wb3N0aW5zdF8ke1BOfSAoKSB7Ci0Jc2VkIC1lICcvXmhvc3RzOi9zL1xzKlw8bXlob3N0bmFtZVw+Ly8nIFwKLQkJLWUgJ3MvXCheaG9zdHM6LipcKVwoXDxmaWxlc1w+XClcKC4qXClcKFw8ZG5zXD5cKVwoLipcKS9cMVwyIG15aG9zdG5hbWUgXDNcNFw1LycgXAotCQktaSAkRCR7c3lzY29uZmRpcn0vbnNzd2l0Y2guY29uZgotfQotCi1wa2dfcHJlcm1fJHtQTn0gKCkgewotCXNlZCAtZSAnL15ob3N0czovcy9ccypcPG15aG9zdG5hbWVcPi8vJyBcCi0JCS1lICcvXmhvc3RzOi9zL1xzKm15aG9zdG5hbWUvLycgXAotCQktaSAkRCR7c3lzY29uZmRpcn0vbnNzd2l0Y2guY29uZgotfQotCi1QQUNLQUdFX1dSSVRFX0RFUFMgKz0gInFlbXUtbmF0aXZlIgotcGtnX3Bvc3RpbnN0X3VkZXYtaHdkYiAoKSB7Ci0JaWYgdGVzdCAtbiAiJEQiOyB0aGVuCi0JCSR7QHFlbXVfcnVuX2JpbmFyeShkLCAnJEQnLCAnJHtiYXNlX2JpbmRpcn0vdWRldmFkbScpfSBod2RiIC0tdXBkYXRlIFwKLQkJCS0tcm9vdCAkRAotCQljaG93biByb290OnJvb3QgJEQke3N5c2NvbmZkaXJ9L3VkZXYvaHdkYi5iaW4KLQllbHNlCi0JCXVkZXZhZG0gaHdkYiAtLXVwZGF0ZQotCWZpCi19Ci0KLXBrZ19wcmVybV91ZGV2LWh3ZGIgKCkgewotCXJtIC1mICREJHtzeXNjb25mZGlyfS91ZGV2L2h3ZGIuYmluCi19Ci0KLSMgQXMgdGhpcyByZWNpcGUgYnVpbGRzIHVkZXYsIHJlc3BlY3Qgc3lzdGVtZCBiZWluZyBpbiBESVNUUk9fRkVBVFVSRVMgc28KLSMgdGhhdCB3ZSBkb24ndCBidWlsZCBib3RoIHVkZXYgYW5kIHN5c3RlbWQgaW4gd29ybGQgYnVpbGRzLgotcHl0aG9uICgpIHsKLSAgICBpZiBub3QgYmIudXRpbHMuY29udGFpbnMgKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsIFRydWUsIEZhbHNlLCBkKToKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIidzeXN0ZW1kJyBub3QgaW4gRElTVFJPX0ZFQVRVUkVTIikKLQotICAgIGltcG9ydCByZQotICAgIGlmIHJlLm1hdGNoKCcuKm11c2wqJywgZC5nZXRWYXIoJ1RBUkdFVF9PUycpKSAhPSBOb25lOgotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiTm90IF95ZXRfIHN1cHBvcnRlZCBvbiBtdXNsIGJhc2VkIHRhcmdldHMiKQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZF8yMzQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kXzIzNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Y2UyN2JmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZF8yMzQuYmIKQEAgLTAsMCArMSw2NDEgQEAKK3JlcXVpcmUgc3lzdGVtZC5pbmMKKworUFJPVklERVMgPSAidWRldiIKKworUEUgPSAiMSIKKworREVQRU5EUyA9ICJrbW9kIGludGx0b29sLW5hdGl2ZSBncGVyZi1uYXRpdmUgYWNsIHJlYWRsaW5lIGxpYmNhcCBsaWJjZ3JvdXAgdXRpbC1saW51eCIKKworU0VDVElPTiA9ICJiYXNlL3NoZWxsIgorCitpbmhlcml0IHVzZXJhZGQgcGtnY29uZmlnIGF1dG90b29scyBwZXJsbmF0aXZlIHVwZGF0ZS1yYy5kIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgcWVtdSBzeXN0ZW1kIHB0ZXN0IGdldHRleHQgYmFzaC1jb21wbGV0aW9uIG1hbnBhZ2VzCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9zeXN0ZW1kL3N5c3RlbWQuZ2l0O3Byb3RvY29sPWdpdCBcCisgICAgICAgICAgIGZpbGU6Ly90b3VjaHNjcmVlbi5ydWxlcyBcCisgICAgICAgICAgIGZpbGU6Ly8wMC1jcmVhdGUtdm9sYXRpbGUuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly9pbml0IFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LVVzZS1nZXRlbnYtd2hlbi1zZWN1cmUtdmVyc2lvbnMtYXJlLW5vdC1hdmFpbGFibGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1iaW5mbXQtRG9uLXQtaW5zdGFsbC1kZXBlbmRlbmN5LWxpbmtzLWF0LWluc3RhbGwtdGltLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDctdXNlLWxuci13cmFwcGVyLWluc3RlYWQtb2YtbG9va2luZy1mb3ItcmVsYXRpdmUtb3B0aS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEwLWltcGxtZW50LXN5c3RlbWQtc3lzdi1pbnN0YWxsLWZvci1PRS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDExLW5zcy1teW1hY2hpbmVzLUJ1aWxkLWNvbmRpdGlvbmFsbHktd2hlbi1IQVZFX01ZSE9TVE4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMi1ydWxlcy13aGl0ZWxpc3QtaGQtZGV2aWNlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEzLU1ha2Utcm9vdC1zLWhvbWUtZGlyZWN0b3J5LWNvbmZpZ3VyYWJsZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE0LVJldmVydC1ydWxlcy1yZW1vdmUtZmlybXdhcmUtbG9hZGluZy1ydWxlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE1LVJldmVydC11ZGV2LXJlbW92ZS11c2Vyc3BhY2UtZmlybXdhcmUtbG9hZGluZy1zdXBwb3IucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxNy1yZW1vdmUtZHVwbGljYXRlLWluY2x1ZGUtdWNoYXIuaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE4LWNoZWNrLWZvci11Y2hhci5oLWluLWNvbmZpZ3VyZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE5LXNvY2tldC11dGlsLWRvbi10LWZhaWwtaWYtbGliYy1kb2Vzbi10LXN1cHBvcnQtSUROLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYWRkLWZhbGxiYWNrLXBhcnNlX3ByaW50Zl9mb3JtYXQtaW1wbGVtZW50YXRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1zcmMtYmFzaWMtbWlzc2luZy5oLWNoZWNrLWZvci1taXNzaW5nLXN0cm5kdXBhLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtZG9uLXQtZmFpbC1pZi1HTE9CX0JSQUNFLWFuZC1HTE9CX0FMVERJUkZVTkMtaXMtbm90LS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LXNyYy1iYXNpYy1taXNzaW5nLmgtY2hlY2stZm9yLW1pc3NpbmctX19jb21wYXJfZm5fdC0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNi1JbmNsdWRlLW5ldGluZXQtaWZfZXRoZXIuaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA3LWNoZWNrLWZvci1taXNzaW5nLWNhbm9uaWNhbGl6ZV9maWxlX25hbWUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOC1Eby1ub3QtZW5hYmxlLW5zcy10ZXN0cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA5LXRlc3QtaGV4ZGVjb2N0LmMtSW5jbHVkZS1taXNzaW5nLmgtZm9ybS1zdHJuZHVwYS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEwLXRlc3Qtc2l6ZW9mLmMtRGlzYWJsZS10ZXN0cy1mb3ItbWlzc2luZy10eXBlZGVmcy1pbi0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMS1kb24tdC11c2UtZ2xpYmMtc3BlY2lmaWMtcXNvcnRfci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEyLWRvbi10LXBhc3MtQVRfU1lNTElOS19OT0ZPTExPVy1mbGFnLXRvLWZhY2Nlc3NhdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEzLWNvbXBhcmlzb25fZm5fdC1pcy1nbGliYy1zcGVjaWZpYy11c2UtcmF3LXNpZ25hdHVyZS0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1EZWZpbmUtX1BBVEhfV1RNUFgtYW5kLV9QQVRIX1VUTVBYLWlmLW5vdC1kZWZpbmVkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLXVpbnRtYXhfdC1mb3ItaGFuZGxpbmctcmxpbV90LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29yZS1ldmFsdWF0ZS1wcmVzZXRzLWFmdGVyLWdlbmVyYXRvcnMtaGF2ZS1ydW4tNjUyNi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1haW4tc2tpcC1tYW55LWluaXRpYWxpemF0aW9uLXN0ZXBzLXdoZW4tcnVubmluZy1pbi0ucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJX2FwcGVuZF9xZW11YWxsID0gIiBmaWxlOi8vMDAwMS1jb3JlLWRldmljZS5jLUNoYW5nZS10aGUtZGVmYXVsdC1kZXZpY2UtdGltZW91dC10by0yLnBhdGNoIgorCitQQU1fUExVR0lOUyA9ICIgXAorICAgIHBhbS1wbHVnaW4tdW5peCBcCisgICAgcGFtLXBsdWdpbi1sb2dpbnVpZCBcCisgICAgcGFtLXBsdWdpbi1rZXlpbml0IFwKKyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnZWZpIGxkY29uZmlnIHBhbSBzZWxpbnV4IHVzcm1lcmdlJywgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3dpZmknLCAncmZraWxsJywgJycsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneGtiY29tbW9uJywgJycsIGQpfSBcCisgICAgYmFja2xpZ2h0IFwKKyAgICBiaW5mbXQgXAorICAgIGZpcnN0Ym9vdCBcCisgICAgaGliZXJuYXRlIFwKKyAgICBob3N0bmFtZWQgXAorICAgIGltYSBcCisgICAgbG9jYWxlZCBcCisgICAgbG9naW5kIFwKKyAgICBtYWNoaW5lZCBcCisgICAgbXlob3N0bmFtZSBcCisgICAgbmV0d29ya2QgXAorICAgIG5zcyBcCisgICAgcG9sa2l0IFwKKyAgICBxdW90YWNoZWNrIFwKKyAgICByYW5kb21zZWVkIFwKKyAgICByZXNvbHZlZCBcCisgICAgc21hY2sgXAorICAgIHN5c3VzZXJzIFwKKyAgICB0aW1lZGF0ZWQgXAorICAgIHRpbWVzeW5jZCBcCisgICAgdXRtcCBcCisgICAgdmNvbnNvbGUgXAorICAgIHh6IFwKKyIKKworUEFDS0FHRUNPTkZJR19yZW1vdmVfbGliYy1tdXNsID0gIiBcCisgICAgbG9jYWxlZCBcCisgICAgbXlob3N0bmFtZSBcCisgICAgbnNzIFwKKyAgICByZXNvbHZlZCBcCisgICAgc2VsaW51eCBcCisgICAgc21hY2sgXAorICAgIHN5c3VzZXJzIFwKKyAgICB1dG1wIFwKKyIKKworIyBVc2UgdGhlIHVwc3RyZWFtIHN5c3RlbWQgc2VyaWFsLWdldHR5QC5zZXJ2aWNlIGFuZCByZWx5IG9uCisjIHN5c3RlbWQtZ2V0dHktZ2VuZXJhdG9yIGluc3RlYWQgb2YgdXNpbmcgdGhlIE9FLWNvcmUgc3BlY2lmaWMKKyMgc3lzdGVtZC1zZXJpYWxnZXR0eS5iYiAtIG5vdCBlbmFibGVkIGJ5IGRlZmF1bHQuCitQQUNLQUdFQ09ORklHW3NlcmlhbC1nZXR0eS1nZW5lcmF0b3JdID0gIiIKKworUEFDS0FHRUNPTkZJR1thdWRpdF0gPSAiLS1lbmFibGUtYXVkaXQsLS1kaXNhYmxlLWF1ZGl0LGF1ZGl0IgorUEFDS0FHRUNPTkZJR1tiYWNrbGlnaHRdID0gIi0tZW5hYmxlLWJhY2tsaWdodCwtLWRpc2FibGUtYmFja2xpZ2h0IgorUEFDS0FHRUNPTkZJR1tiaW5mbXRdID0gIi0tZW5hYmxlLWJpbmZtdCwtLWRpc2FibGUtYmluZm10IgorUEFDS0FHRUNPTkZJR1tiemlwMl0gPSAiLS1lbmFibGUtYnppcDIsLS1kaXNhYmxlLWJ6aXAyLGJ6aXAyIgorUEFDS0FHRUNPTkZJR1tjb3JlZHVtcF0gPSAiLS1lbmFibGUtY29yZWR1bXAsLS1kaXNhYmxlLWNvcmVkdW1wIgorUEFDS0FHRUNPTkZJR1tjcnlwdHNldHVwXSA9ICItLWVuYWJsZS1saWJjcnlwdHNldHVwLC0tZGlzYWJsZS1saWJjcnlwdHNldHVwLGNyeXB0c2V0dXAiCitQQUNLQUdFQ09ORklHW2RidXNdID0gIi0tZW5hYmxlLWRidXMsLS1kaXNhYmxlLWRidXMsZGJ1cyIKK1BBQ0tBR0VDT05GSUdbZWZpXSA9ICItLWVuYWJsZS1lZmksLS1kaXNhYmxlLWVmaSIKK1BBQ0tBR0VDT05GSUdbZWxmdXRpbHNdID0gIi0tZW5hYmxlLWVsZnV0aWxzLC0tZGlzYWJsZS1lbGZ1dGlscyxlbGZ1dGlscyIKK1BBQ0tBR0VDT05GSUdbZmlyc3Rib290XSA9ICItLWVuYWJsZS1maXJzdGJvb3QsLS1kaXNhYmxlLWZpcnN0Ym9vdCIKKyMgU2lnbiB0aGUgam91cm5hbCBmb3IgYW50aS10YW1wZXJpbmcKK1BBQ0tBR0VDT05GSUdbZ2NyeXB0XSA9ICItLWVuYWJsZS1nY3J5cHQsLS1kaXNhYmxlLWdjcnlwdCxsaWJnY3J5cHQiCitQQUNLQUdFQ09ORklHW2hpYmVybmF0ZV0gPSAiLS1lbmFibGUtaGliZXJuYXRlLC0tZGlzYWJsZS1oaWJlcm5hdGUiCitQQUNLQUdFQ09ORklHW2hvc3RuYW1lZF0gPSAiLS1lbmFibGUtaG9zdG5hbWVkLC0tZGlzYWJsZS1ob3N0bmFtZWQiCitQQUNLQUdFQ09ORklHW2ltYV0gPSAiLS1lbmFibGUtaW1hLC0tZGlzYWJsZS1pbWEiCisjIGltcG9ydGQgcmVxdWlyZXMgY3VybC94ei96bGliL2J6aXAyL2djcnlwdAorUEFDS0FHRUNPTkZJR1tpbXBvcnRkXSA9ICItLWVuYWJsZS1pbXBvcnRkLC0tZGlzYWJsZS1pbXBvcnRkIgorIyBVcGRhdGUgTkFUIGZpcmV3YWxsIHJ1bGVzCitQQUNLQUdFQ09ORklHW2lwdGNdID0gIi0tZW5hYmxlLWxpYmlwdGMsLS1kaXNhYmxlLWxpYmlwdGMsaXB0YWJsZXMiCitQQUNLQUdFQ09ORklHW2pvdXJuYWwtdXBsb2FkXSA9ICItLWVuYWJsZS1saWJjdXJsLC0tZGlzYWJsZS1saWJjdXJsLGN1cmwiCitQQUNLQUdFQ09ORklHW2xkY29uZmlnXSA9ICItLWVuYWJsZS1sZGNvbmZpZywtLWRpc2FibGUtbGRjb25maWciCitQQUNLQUdFQ09ORklHW2xpYmlkbl0gPSAiLS1lbmFibGUtbGliaWRuLC0tZGlzYWJsZS1saWJpZG4sbGliaWRuIgorUEFDS0FHRUNPTkZJR1tsb2NhbGVkXSA9ICItLWVuYWJsZS1sb2NhbGVkLC0tZGlzYWJsZS1sb2NhbGVkIgorUEFDS0FHRUNPTkZJR1tsb2dpbmRdID0gIi0tZW5hYmxlLWxvZ2luZCwtLWRpc2FibGUtbG9naW5kIgorUEFDS0FHRUNPTkZJR1tsejRdID0gIi0tZW5hYmxlLWx6NCwtLWRpc2FibGUtbHo0LGx6NCIKK1BBQ0tBR0VDT05GSUdbbWFjaGluZWRdID0gIi0tZW5hYmxlLW1hY2hpbmVkLC0tZGlzYWJsZS1tYWNoaW5lZCIKK1BBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLW1hbnBhZ2VzLC0tZGlzYWJsZS1tYW5wYWdlcyxsaWJ4c2x0LW5hdGl2ZSB4bWx0by1uYXRpdmUgZG9jYm9vay14bWwtZHRkNC1uYXRpdmUgZG9jYm9vay14c2wtc3R5bGVzaGVldHMtbmF0aXZlIgorUEFDS0FHRUNPTkZJR1ttaWNyb2h0dHBkXSA9ICItLWVuYWJsZS1taWNyb2h0dHBkLC0tZGlzYWJsZS1taWNyb2h0dHBkLGxpYm1pY3JvaHR0cGQiCitQQUNLQUdFQ09ORklHW215aG9zdG5hbWVdID0gIi0tZW5hYmxlLW15aG9zdG5hbWUsLS1kaXNhYmxlLW15aG9zdG5hbWUiCitQQUNLQUdFQ09ORklHW25ldHdvcmtkXSA9ICItLWVuYWJsZS1uZXR3b3JrZCwtLWRpc2FibGUtbmV0d29ya2QiCitQQUNLQUdFQ09ORklHW25zc10gPSAiLS1lbmFibGUtbnNzLXN5c3RlbWQsLS1kaXNhYmxlLW5zcy1zeXN0ZW1kIgorUEFDS0FHRUNPTkZJR1twYW1dID0gIi0tZW5hYmxlLXBhbSwtLWRpc2FibGUtcGFtLGxpYnBhbSwke1BBTV9QTFVHSU5TfSIKK1BBQ0tBR0VDT05GSUdbcG9sa2l0XSA9ICItLWVuYWJsZS1wb2xraXQsLS1kaXNhYmxlLXBvbGtpdCIKK1BBQ0tBR0VDT05GSUdbcXJlbmNvZGVdID0gIi0tZW5hYmxlLXFyZW5jb2RlLC0tZGlzYWJsZS1xcmVuY29kZSxxcmVuY29kZSIKK1BBQ0tBR0VDT05GSUdbcXVvdGFjaGVja10gPSAiLS1lbmFibGUtcXVvdGFjaGVjaywtLWRpc2FibGUtcXVvdGFjaGVjayIKK1BBQ0tBR0VDT05GSUdbcmFuZG9tc2VlZF0gPSAiLS1lbmFibGUtcmFuZG9tc2VlZCwtLWRpc2FibGUtcmFuZG9tc2VlZCIKK1BBQ0tBR0VDT05GSUdbcmVzb2x2ZWRdID0gIi0tZW5hYmxlLXJlc29sdmVkLC0tZGlzYWJsZS1yZXNvbHZlZCIKK1BBQ0tBR0VDT05GSUdbcmZraWxsXSA9ICItLWVuYWJsZS1yZmtpbGwsLS1kaXNhYmxlLXJma2lsbCIKKyMgbGlic2VjY29tcCBpcyBmb3VuZCBpbiBtZXRhLXNlY3VyaXR5CitQQUNLQUdFQ09ORklHW3NlY2NvbXBdID0gIi0tZW5hYmxlLXNlY2NvbXAsLS1kaXNhYmxlLXNlY2NvbXAsbGlic2VjY29tcCIKK1BBQ0tBR0VDT05GSUdbc2VsaW51eF0gPSAiLS1lbmFibGUtc2VsaW51eCwtLWRpc2FibGUtc2VsaW51eCxsaWJzZWxpbnV4LGluaXRzY3JpcHRzLXN1c2hlbGwiCitQQUNLQUdFQ09ORklHW3NtYWNrXSA9ICItLWVuYWJsZS1zbWFjaywtLWRpc2FibGUtc21hY2siCitQQUNLQUdFQ09ORklHW3N5c3VzZXJzXSA9ICItLWVuYWJsZS1zeXN1c2VycywtLWRpc2FibGUtc3lzdXNlcnMiCitQQUNLQUdFQ09ORklHW3RpbWVkYXRlZF0gPSAiLS1lbmFibGUtdGltZWRhdGVkLC0tZGlzYWJsZS10aW1lZGF0ZWQiCitQQUNLQUdFQ09ORklHW3RpbWVzeW5jZF0gPSAiLS1lbmFibGUtdGltZXN5bmNkLC0tZGlzYWJsZS10aW1lc3luY2QiCitQQUNLQUdFQ09ORklHW3Vzcm1lcmdlXSA9ICItLWRpc2FibGUtc3BsaXQtdXNyLC0tZW5hYmxlLXNwbGl0LXVzciIKK1BBQ0tBR0VDT05GSUdbdXRtcF0gPSAiLS1lbmFibGUtdXRtcCwtLWRpc2FibGUtdXRtcCIKK1BBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gImFjX2N2X2hlYWRlcl92YWxncmluZF9tZW1jaGVja19oPXllcyBhY19jdl9oZWFkZXJfdmFsZ3JpbmRfdmFsZ3JpbmRfaD15ZXMsYWNfY3ZfaGVhZGVyX3ZhbGdyaW5kX21lbWNoZWNrX2g9bm8gYWNfY3ZfaGVhZGVyX3ZhbGdyaW5kX3ZhbGdyaW5kX2g9bm8sdmFsZ3JpbmQiCitQQUNLQUdFQ09ORklHW3Zjb25zb2xlXSA9ICItLWVuYWJsZS12Y29uc29sZSwtLWRpc2FibGUtdmNvbnNvbGUsLCR7UE59LXZjb25zb2xlLXNldHVwIgorIyBWZXJpZnkga2V5bWFwcyBvbiBsb2NhbGUgY2hhbmdlCitQQUNLQUdFQ09ORklHW3hrYmNvbW1vbl0gPSAiLS1lbmFibGUteGtiY29tbW9uLC0tZGlzYWJsZS14a2Jjb21tb24sbGlieGtiY29tbW9uIgorUEFDS0FHRUNPTkZJR1t4el0gPSAiLS1lbmFibGUteHosLS1kaXNhYmxlLXh6LHh6IgorUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLWVuYWJsZS16bGliLC0tZGlzYWJsZS16bGliLHpsaWIiCisKKyMgSGFyZGNvZGUgdGFyZ2V0IGJpbmFyeSBwYXRocyB0byBhdm9pZCBBQ19QUk9HX1BBVEggaW4gdGhlIHN5c3RlbWQKKyMgY29uZmlndXJlIHNjcmlwdCBkZXRlY3RpbmcgYW5kIHNldHRpbmcgcGF0aHMgZnJvbSBzeXNyb290IG9yIGhvc3QuCitDQUNIRURfQ09ORklHVVJFVkFSU19jbGFzcy10YXJnZXQgPSAiIFwKKyAgICBhY19jdl9wYXRoX0tFWEVDPSR7c2JpbmRpcn0va2V4ZWMgXAorICAgIGFjX2N2X3BhdGhfS0lMTD0ke2Jhc2VfYmluZGlyfS9raWxsIFwKKyAgICBhY19jdl9wYXRoX0tNT0Q9JHtiYXNlX2JpbmRpcn0va21vZCBcCisgICAgYWNfY3ZfcGF0aF9NT1VOVF9QQVRIPSR7YmFzZV9iaW5kaXJ9L21vdW50IFwKKyAgICBhY19jdl9wYXRoX1FVT1RBQ0hFQ0s9JHtzYmluZGlyfS9xdW90YWNoZWNrIFwKKyAgICBhY19jdl9wYXRoX1FVT1RBT049JHtzYmluZGlyfS9xdW90YW9uIFwKKyAgICBhY19jdl9wYXRoX1NVTE9HSU49JHtiYXNlX3NiaW5kaXJ9L3N1bG9naW4gXAorICAgIGFjX2N2X3BhdGhfVU1PVU5UX1BBVEg9JHtiYXNlX2JpbmRpcn0vdW1vdW50IFwKKyIKKworIyBIZWxwZXIgdmFyaWFibGVzIHRvIGNsYXJpZnkgbG9jYXRpb25zLiAgVGhpcyBtaXJyb3JzIHRoZSBsb2dpYyBpbiBzeXN0ZW1kJ3MKKyMgYnVpbGQgc3lzdGVtLgorcm9vdHByZWZpeCA/PSAiJHtyb290X3ByZWZpeH0iCityb290bGliZGlyID89ICIke2Jhc2VfbGliZGlyfSIKK3Jvb3RsaWJleGVjZGlyID0gIiR7cm9vdHByZWZpeH0vbGliIgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAtLXdpdGhvdXQtcHl0aG9uIFwKKyAgICAtLXdpdGgtcm9vdGhvbWVkaXI9JHtST09UX0hPTUV9IFwKKyAgICAtLXdpdGgtcm9vdGxpYmRpcj0ke3Jvb3RsaWJkaXJ9IFwKKyAgICAtLXdpdGgtcm9vdHByZWZpeD0ke3Jvb3RwcmVmaXh9IFwKKyAgICAtLXdpdGgtc3lzdnJjbmQtcGF0aD0ke3N5c2NvbmZkaXJ9IFwKKyAgICAtLXdpdGgtZmlybXdhcmUtcGF0aD0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlIFwKKyIKKworIyBwZXIgdGhlIHN5c3RlbWQgUkVBRE1FLCBkZWZpbmUgVkFMR1JJTkQ9MSB0byBydW4gdW5kZXIgdmFsZ3JpbmQKK0NGTEFHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndmFsZ3JpbmQnLCAnIC1EVkFMR1JJTkQ9MScsICcnLCBkKX0iCisKKyMgZGlzYWJsZSBwcm9ibGVtYXRpYyBHQ0MgNS4yIG9wdGltaXphdGlvbnMgW1lPQ1RPICM4MjkxXQorRlVMTF9PUFRJTUlaQVRJT05fYXBwZW5kX2FybSA9ICIgLWZuby1zY2hlZHVsZS1pbnNucyAtZm5vLXNjaGVkdWxlLWluc25zMiIKKworQ09NUElMRVJfTk0gPz0gIiR7SE9TVF9QUkVGSVh9Z2NjLW5tIgorQ09NUElMRVJfQVIgPz0gIiR7SE9TVF9QUkVGSVh9Z2NjLWFyIgorQ09NUElMRVJfUkFOTElCID89ICIke0hPU1RfUFJFRklYfWdjYy1yYW5saWIiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworCWV4cG9ydCBOTT0iJHtDT01QSUxFUl9OTX0iCisJZXhwb3J0IEFSPSIke0NPTVBJTEVSX0FSfSIKKwlleHBvcnQgUkFOTElCPSIke0NPTVBJTEVSX1JBTkxJQn0iCisJZXhwb3J0IEtNT0Q9IiR7YmFzZV9iaW5kaXJ9L2ttb2QiCisJaWYgWyAtZCAke1N9L3VuaXRzLnByZV9zZWQgXSA7IHRoZW4KKwkJY3AgLXIgJHtTfS91bml0cy5wcmVfc2VkICR7U30vdW5pdHMKKwllbHNlCisJCWNwIC1yICR7U30vdW5pdHMgJHtTfS91bml0cy5wcmVfc2VkCisJZmkKKwlzZWQgLWkgLWUgJ3M6LURURVNUX0RJUj1cXFwiLipcXFwiOi1EVEVTVF9ESVI9XFxcIiR7UFRFU1RfUEFUSH0vdGVzdHMvdGVzdFxcXCI6JyAke1N9L01ha2VmaWxlLmFtCisJc2VkIC1pIC1lICdzOi1EQ0FUQUxPR19ESVI9XFxcIi4qXFxcIjotRENBVEFMT0dfRElSPVxcXCIke1BURVNUX1BBVEh9L3Rlc3RzL2NhdGFsb2dcXFwiOicgJHtTfS9NYWtlZmlsZS5hbQorfQorCitkb19pbnN0YWxsKCkgeworCWF1dG90b29sc19kb19pbnN0YWxsCisJaW5zdGFsbCAtZCAke0R9LyR7YmFzZV9zYmluZGlyfQorCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3NlcmlhbC1nZXR0eS1nZW5lcmF0b3InLCAnZmFsc2UnLCAndHJ1ZScsIGQpfTsgdGhlbgorCQkjIFByb3ZpZGVkIGJ5IGEgc2VwYXJhdGUgcmVjaXBlCisJCXJtICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3NlcmlhbC1nZXR0eSogLWYKKwlmaQorCisJIyBQcm92aWRlIHN1cHBvcnQgZm9yIGluaXRyYW1mcworCVsgISAtZSAke0R9L2luaXQgXSAmJiBsbiAtcyAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQgJHtEfS9pbml0CisJWyAhIC1lICR7RH0vJHtiYXNlX3NiaW5kaXJ9L3VkZXZkIF0gJiYgbG4gLXMgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXVkZXZkICR7RH0vJHtiYXNlX3NiaW5kaXJ9L3VkZXZkCisKKwkjIENyZWF0ZSBtYWNoaW5lLWlkCisJIyAyMDoxMiA8IG1lemNhbGVybz4ga29lbjogeW91IGhhdmUgdGhyZWUgb3B0aW9uczogYSkgcnVuIHN5c3RlbWQtbWFjaGluZS1pZC1zZXR1cCBhdCBpbnN0YWxsIHRpbWUsIGIpIGhhdmUgLyByZWFkLW9ubHkgYW5kIGFuIGVtcHR5IGZpbGUgdGhlcmUgKGZvciBzdGF0ZWxlc3MpIGFuZCBjKSBib290IHdpdGggLyB3cml0YWJsZQorCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L21hY2hpbmUtaWQKKworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kLworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAorCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9LyoucnVsZXMgJHtEfSR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kLworCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9wa2djb25maWcKKwlpbnN0YWxsIC1tIDA2NDQgJHtCfS9zcmMvdWRldi91ZGV2LnBjICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnLworCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vMDAtY3JlYXRlLXZvbGF0aWxlLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC8KKworCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN2aW5pdCcsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCisJCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisJCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2luaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3N5c3RlbWQtdWRldmQKKwkJc2VkIC1pIHMlQFVERVZEQCUke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtdWRldmQlICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9zeXN0ZW1kLXVkZXZkCisJZmkKKworCWNob3duIHJvb3Q6c3lzdGVtZC1qb3VybmFsICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9sb2cvam91cm5hbAorCisJIyBEZWxldGUgam91cm5hbCBSRUFETUUsIGFzIGxvZyBjYW4gYmUgc3ltbGlua2VkIGluc2lkZSB2b2xhdGlsZS4KKwlybSAtZiAke0R9LyR7bG9jYWxzdGF0ZWRpcn0vbG9nL1JFQURNRQorCisJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9ncmFwaGljYWwudGFyZ2V0LndhbnRzCisJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9tdWx0aS11c2VyLnRhcmdldC53YW50cworCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcG93ZXJvZmYudGFyZ2V0LndhbnRzCisJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9yZWJvb3QudGFyZ2V0LndhbnRzCisJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9yZXNjdWUudGFyZ2V0LndhbnRzCisKKwkjIENyZWF0ZSBzeW1saW5rcyBmb3Igc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndXRtcCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisJCWxuIC1zZiAuLi9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vZ3JhcGhpY2FsLnRhcmdldC53YW50cy9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKKwkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9tdWx0aS11c2VyLnRhcmdldC53YW50cy9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKKwkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9wb3dlcm9mZi50YXJnZXQud2FudHMvc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlCisJCWxuIC1zZiAuLi9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcmVib290LnRhcmdldC53YW50cy9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKKwkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9yZXNjdWUudGFyZ2V0LndhbnRzL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQorCWZpCisKKwkjIEVuYWJsZSBqb3VybmFsIHRvIGZvcndhcmQgbWVzc2FnZSB0byBzeXNsb2cgZGFlbW9uCisJc2VkIC1pIC1lICdzLy4qRm9yd2FyZFRvU3lzbG9nLiovRm9yd2FyZFRvU3lzbG9nPXllcy8nICR7RH0ke3N5c2NvbmZkaXJ9L3N5c3RlbWQvam91cm5hbGQuY29uZgorCSMgU2V0IHRoZSBtYXhpbWl1bSBzaXplIG9mIHJ1bnRpbWUgam91cm5hbCB0byA2NE0gYXMgZGVmYXVsdAorCXNlZCAtaSAtZSAncy8uKlJ1bnRpbWVNYXhVc2UuKi9SdW50aW1lTWF4VXNlPTY0TS8nICR7RH0ke3N5c2NvbmZkaXJ9L3N5c3RlbWQvam91cm5hbGQuY29uZgorCisJIyB0aGlzIGZpbGUgaXMgbmVlZGVkIHRvIGV4aXN0IGlmIG5ldHdvcmtkIGlzIGRpc2FibGVkIGJ1dCB0aW1lc3luY2QgaXMgc3RpbGwgaW4gdXNlIHNpbmNlIHRpbWVzeW5jZCBjaGVja3MgaXQKKwkjIGZvciBleGlzdGVuY2UgZWxzZSBpdCBmYWlscworCWlmIFsgLXMgJHtEfSR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL3N5c3RlbWQuY29uZiBdOyB0aGVuCisJCSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ25ldHdvcmtkJywgJzonLCAnc2VkIC1pIC1lICJcJGFkIC9ydW4vc3lzdGVtZC9uZXRpZi9saW5rcyAwNzU1IHJvb3Qgcm9vdCAtIiAke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvc3lzdGVtZC5jb25mJywgZCl9CisJZmkKKwlpZiAhICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3Jlc29sdmVkJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKwkJZWNobyAnTCEgJHtzeXNjb25mZGlyfS9yZXNvbHYuY29uZiAtIC0gLSAtIC4uL3J1bi9zeXN0ZW1kL3Jlc29sdmUvcmVzb2x2LmNvbmYnID4+JHtEfSR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL2V0Yy5jb25mCisJCWVjaG8gJ2QgL3J1bi9zeXN0ZW1kL3Jlc29sdmUgMDc1NSByb290IHJvb3QgLScgPj4ke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvc3lzdGVtZC5jb25mCisJCWVjaG8gJ2YgL3J1bi9zeXN0ZW1kL3Jlc29sdmUvcmVzb2x2LmNvbmYgMDY0NCByb290IHJvb3QnID4+JHtEfSR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL3N5c3RlbWQuY29uZgorCQlsbiAtcyAuLi9ydW4vc3lzdGVtZC9yZXNvbHZlL3Jlc29sdi5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3Jlc29sdi1jb25mLnN5c3RlbWQKKwllbHNlCisJCXNlZCAtaSAtZSAicyVeTCEgL2V0Yy9yZXNvbHYuY29uZi4qJCVMISAvZXRjL3Jlc29sdi5jb25mIC0gLSAtIC0gLi4vcnVuL3N5c3RlbWQvcmVzb2x2ZS9yZXNvbHYuY29uZiVnIiAke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvZXRjLmNvbmYKKwkJbG4gLXMgLi4vcnVuL3N5c3RlbWQvcmVzb2x2ZS9yZXNvbHYuY29uZiAke0R9JHtzeXNjb25mZGlyfS9yZXNvbHYtY29uZi5zeXN0ZW1kCisJZmkKKwlpbnN0YWxsIC1EbSAwNzU1ICR7U30vc3JjL3N5c3RlbWN0bC9zeXN0ZW1kLXN5c3YtaW5zdGFsbC5TS0VMRVRPTiAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbWQtc3lzdi1pbnN0YWxsCisKKwkjIElmIHBvbGtpdCBpcyBzZXR1cCBmaXh1cCBwZXJtaXNzaW9ucyBhbmQgb3duZXJzaGlwCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncG9sa2l0JywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKwkJaWYgWyAtZCAke0R9JHtkYXRhZGlyfS9wb2xraXQtMS9ydWxlcy5kIF07IHRoZW4KKwkJCWNobW9kIDcwMCAke0R9JHtkYXRhZGlyfS9wb2xraXQtMS9ydWxlcy5kCisJCQljaG93biBwb2xraXRkOnJvb3QgJHtEfSR7ZGF0YWRpcn0vcG9sa2l0LTEvcnVsZXMuZAorCQlmaQorCWZpCit9CisKK2RvX2luc3RhbGxfcHRlc3QgKCkgeworCSMgaW5zdGFsbCBkYXRhIGZpbGVzIG5lZWRlZCBmb3IgdGVzdHMKKwlpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3Rlc3QKKwljcCAtcmZMICR7U30vdGVzdC8qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3Rlc3QKKwkjIHB5dGhvbiBpcyBkaXNhYmxlZCBmb3Igc3lzdGVtZCwgdGh1cyByZW1vdmluZyB0aGVzZSBweXRob24gdGVzdGluZyBzY3JpcHRzCisJcm0gJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvdGVzdC8qLnB5CisJc2VkIC1pICdzLyJ0cmVlIi8ibHMiLycgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvdGVzdC91ZGV2LXRlc3QucGwKKworCWluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvY2F0YWxvZworCWluc3RhbGwgJHtTfS9jYXRhbG9nLyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvY2F0YWxvZy8KKworCWluc3RhbGwgLUQgJHtTfS9idWlsZC1hdXgvdGVzdC1kcml2ZXIgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvYnVpbGQtYXV4L3Rlc3QtZHJpdmVyCisKKwlpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3J1bGVzCisJaW5zdGFsbCAke0J9L3J1bGVzLyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvcnVsZXMvCisKKwkjIFRoaXMgZGlyZWN0b3J5IG5lZWRzIHRvIGJlIHRoZXJlIGZvciB1ZGV2LXRlc3QucGwgdG8gd29yay4KKwlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vdWRldi9ydWxlcy5kCisKKwkjIGluc3RhbGwgYWN0dWFsIHRlc3QgYmluYXJpZXMKKwlpbnN0YWxsIC1tIDA3NTUgJHtCfS90ZXN0LSogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvCisJaW5zdGFsbCAtbSAwNzU1ICR7Qn0vLmxpYnMvdGVzdC0qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLworCisJaW5zdGFsbCAke0J9L01ha2VmaWxlICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLworfQorCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKXsKKyAgICBzeXN0ZW1kbGliZGlyID0gZC5nZXRWYXIoInJvb3RsaWJkaXIiKQorICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIHN5c3RlbWRsaWJkaXIsICdebGliKC4qKVwuc29cLionLCAnbGliJXMnLCAnU3lzdGVtZCAlcyBsaWJyYXJ5JywgZXh0cmFfZGVwZW5kcz0nJywgYWxsb3dfbGlua3M9VHJ1ZSkKK30KK1BBQ0tBR0VTX0RZTkFNSUMgKz0gIl5saWIodWRldnxzeXN0ZW1kfG5zcykuKiIKKworUEFDS0FHRVMgPSsgIlwKKyAgICAke1BOfS1ndWkgXAorICAgICR7UE59LXZjb25zb2xlLXNldHVwIFwKKyAgICAke1BOfS1pbml0cmFtZnMgXAorICAgICR7UE59LWFuYWx5emUgXAorICAgICR7UE59LWtlcm5lbC1pbnN0YWxsIFwKKyAgICAke1BOfS1ycG0tbWFjcm9zIFwKKyAgICAke1BOfS1iaW5mbXQgXAorICAgICR7UE59LXpzaC1jb21wbGV0aW9uIFwKKyAgICAke1BOfS14b3JnLXhpbml0cmMgXAorICAgICR7UE59LWNvbnRhaW5lciBcCisgICAgJHtQTn0tZXh0cmEtdXRpbHMgXAorIgorCitTVU1NQVJZXyR7UE59LWNvbnRhaW5lciA9ICJUb29scyBmb3IgY29udGFpbmVycyBhbmQgVk1zIgorREVTQ1JJUFRJT05fJHtQTn0tY29udGFpbmVyID0gIlN5c3RlbWQgdG9vbHMgdG8gc3Bhd24gYW5kIG1hbmFnZSBjb250YWluZXJzIGFuZCB2aXJ0dWFsIG1hY2hpbmVzLiIKKworU1lTVEVNRF9QQUNLQUdFUyA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdiaW5mbXQnLCAnJHtQTn0tYmluZm10JywgJycsIGQpfSIKK1NZU1RFTURfU0VSVklDRV8ke1BOfS1iaW5mbXQgPSAic3lzdGVtZC1iaW5mbXQuc2VydmljZSIKKworVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSAke1BOfS1leHRyYS11dGlscyIKK1VTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ21pY3JvaHR0cGQnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLWpvdXJuYWwtZ2F0ZXdheTsnLCAnJywgZCl9IgorVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbWljcm9odHRwZCcsICctLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtam91cm5hbC1yZW1vdGU7JywgJycsIGQpfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2pvdXJuYWwtdXBsb2FkJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1qb3VybmFsLXVwbG9hZDsnLCAnJywgZCl9IgorVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndGltZXN5bmNkJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC10aW1lc3luYzsnLCAnJywgZCl9IgorVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbmV0d29ya2QnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLW5ldHdvcms7JywgJycsIGQpfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2NvcmVkdW1wJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1jb3JlZHVtcDsnLCAnJywgZCl9IgorVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncmVzb2x2ZWQnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLXJlc29sdmU7JywgJycsIGQpfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3BvbGtpdCcsICctLXN5c3RlbSAtLW5vLWNyZWF0ZS1ob21lIC0tdXNlci1ncm91cCAtLWhvbWUtZGlyICR7c3lzY29uZmRpcn0vcG9sa2l0LTEgcG9sa2l0ZDsnLCAnJywgZCl9IgorR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAiLXIgbG9jazsgLXIgc3lzdGVtZC1qb3VybmFsIgorVVNFUkFERF9QQVJBTV8ke1BOfS1leHRyYS11dGlscyArPSAiLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLWJ1cy1wcm94eTsiCisKK0ZJTEVTXyR7UE59LWFuYWx5emUgPSAiJHtiaW5kaXJ9L3N5c3RlbWQtYW5hbHl6ZSIKKworRklMRVNfJHtQTn0taW5pdHJhbWZzID0gIi9pbml0IgorUkRFUEVORFNfJHtQTn0taW5pdHJhbWZzID0gIiR7UE59IgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiZ2F3ayBtYWtlIHBlcmwgYmFzaCB4eiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgdHpkYXRhIHR6ZGF0YS1hbWVyaWNhcyB0emRhdGEtYXNpYSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgdHpkYXRhLWV1cm9wZSB0emRhdGEtYWZyaWNhIHR6ZGF0YS1hbnRhcmN0aWNhIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0emRhdGEtYXJjdGljIHR6ZGF0YS1hdGxhbnRpYyB0emRhdGEtYXVzdHJhbGlhIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0emRhdGEtcGFjaWZpYyB0emRhdGEtcG9zaXgiCisKK0ZJTEVTXyR7UE59LXB0ZXN0ICs9ICIke2xpYmRpcn0vdWRldi9ydWxlcy5kIgorCitGSUxFU18ke1BOfS1ndWkgPSAiJHtiaW5kaXJ9L3N5c3RlbWFkbSIKKworRklMRVNfJHtQTn0tdmNvbnNvbGUtc2V0dXAgPSAiJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXZjb25zb2xlLXNldHVwIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC12Y29uc29sZS1zZXR1cC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzaW5pdC50YXJnZXQud2FudHMvc3lzdGVtZC12Y29uc29sZS1zZXR1cC5zZXJ2aWNlIgorCitSREVQRU5EU18ke1BOfS1rZXJuZWwtaW5zdGFsbCArPSAiYmFzaCIKK0ZJTEVTXyR7UE59LWtlcm5lbC1pbnN0YWxsID0gIiR7YmluZGlyfS9rZXJuZWwtaW5zdGFsbCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2tlcm5lbC8gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL2tlcm5lbCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKK0ZJTEVTXyR7UE59LXJwbS1tYWNyb3MgPSAiJHtleGVjX3ByZWZpeH0vbGliL3JwbSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIgorCitGSUxFU18ke1BOfS14b3JnLXhpbml0cmMgPSAiJHtzeXNjb25mZGlyfS9YMTEveGluaXQveGluaXRyYy5kLyoiCisKK0ZJTEVTXyR7UE59LXpzaC1jb21wbGV0aW9uID0gIiR7ZGF0YWRpcn0venNoL3NpdGUtZnVuY3Rpb25zIgorCitGSUxFU18ke1BOfS1iaW5mbXQgPSAiJHtzeXNjb25mZGlyfS9iaW5mbXQuZC8gXAorICAgICAgICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9iaW5mbXQuZCBcCisgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWJpbmZtdCBcCisgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy4qIFwKKyAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYmluZm10LnNlcnZpY2UiCitSUkVDT01NRU5EU18ke1BOfS1iaW5mbXQgPSAia2VybmVsLW1vZHVsZS1iaW5mbXQtbWlzYyIKKworUlJFQ09NTUVORFNfJHtQTn0tdmNvbnNvbGUtc2V0dXAgPSAia2JkIGtiZC1jb25zb2xlZm9udHMga2JkLWtleW1hcHMiCisKK0ZJTEVTXyR7UE59LWNvbnRhaW5lciA9ICIke3N5c2NvbmZkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AuaW1wb3J0MS5jb25mIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuY29uZiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vbWFjaGluZWN0bCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtbnNwYXduIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke25vbmFyY2hfbGliZGlyfS9zeXN0ZW1kL2ltcG9ydC1wdWJyaW5nLmdwZyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9idXNuYW1lcy50YXJnZXQud2FudHMvb3JnLmZyZWVkZXNrdG9wLmltcG9ydDEuYnVzbmFtZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9idXNuYW1lcy50YXJnZXQud2FudHMvb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLmJ1c25hbWUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbG9jYWwtZnMudGFyZ2V0LndhbnRzL3Zhci1saWItbWFjaGluZXMubW91bnQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbWFjaGluZS5zbGljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9tYWNoaW5lcy50YXJnZXQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vb3JnLmZyZWVkZXNrdG9wLmltcG9ydDEuYnVzbmFtZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuYnVzbmFtZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zeXN0ZW1kLWltcG9ydGQuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zeXN0ZW1kLW1hY2hpbmVkLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vZGJ1cy1vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS92YXItbGliLW1hY2hpbmVzLm1vdW50IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtaW1wb3J0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtaW1wb3J0ZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWpvdXJuYWwtZ2F0ZXdheWQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1qb3VybmFsLXJlbW90ZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWpvdXJuYWwtdXBsb2FkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtbWFjaGluZWQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1wdWxsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXN0ZW1kLW5zcGF3bi5jb25mIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3N5c3RlbWQtbnNwYXduQC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlibnNzX215bWFjaGluZXMuc28uMiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLXNlcnZpY2VzL29yZy5mcmVlZGVza3RvcC5pbXBvcnQxLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS1zZXJ2aWNlcy9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLmNvbmYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEvYWN0aW9ucy9vcmcuZnJlZWRlc2t0b3AuaW1wb3J0MS5wb2xpY3kgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEvYWN0aW9ucy9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEucG9saWN5IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICIKKworRklMRVNfJHtQTn0tZXh0cmEtdXRpbHMgPSAiXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vc3lzdGVtZC1lc2NhcGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vc3lzdGVtZC1pbmhpYml0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLWRldGVjdC12aXJ0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLXBhdGggXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtcnVuIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLWNhdCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1kZWx0YSBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1jZ2xzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLWNndG9wIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLXN0ZGlvLWJyaWRnZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS9zeXN0ZW1kLWFzay1wYXNzd29yZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS9zeXN0ZW1kLXR0eS1hc2stcGFzc3dvcmQtYWdlbnQgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWFzay1wYXNzd29yZC1jb25zb2xlLnBhdGggXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWFzay1wYXNzd29yZC1jb25zb2xlLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWFzay1wYXNzd29yZC13YWxsLnBhdGggXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWFzay1wYXNzd29yZC13YWxsLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXNpbml0LnRhcmdldC53YW50cy9zeXN0ZW1kLWFzay1wYXNzd29yZC1jb25zb2xlLnBhdGggXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXNpbml0LnRhcmdldC53YW50cy9zeXN0ZW1kLWFzay1wYXNzd29yZC13YWxsLnBhdGggXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9tdWx0aS11c2VyLnRhcmdldC53YW50cy9zeXN0ZW1kLWFzay1wYXNzd29yZC13YWxsLnBhdGggXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXJlc29sdmUtaG9zdCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtYWMtcG93ZXIgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWFjdGl2YXRlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1idXMtcHJveHlkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1idXMtcHJveHlkLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWJ1cy1wcm94eWQuc29ja2V0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1zb2NrZXQtcHJveHlkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1yZXBseS1wYXNzd29yZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtc2xlZXAgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW0tc2xlZXAgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWhpYmVybmF0ZS5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1oeWJyaWQtc2xlZXAuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtc3VzcGVuZC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc2xlZXAudGFyZ2V0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1pbml0Y3RsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1pbml0Y3RsLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWluaXRjdGwuc29ja2V0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc29ja2V0cy50YXJnZXQud2FudHMvc3lzdGVtZC1pbml0Y3RsLnNvY2tldCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbS1nZW5lcmF0b3JzL3N5c3RlbWQtZ3B0LWF1dG8tZ2VuZXJhdG9yIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1jZ3JvdXBzLWFnZW50IFwKKyIKKworQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vbWFjaGluZS1pZCBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXN0ZW1kL2NvcmVkdW1wLmNvbmYgXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzdGVtZC9qb3VybmFsZC5jb25mIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c3RlbWQvbG9naW5kLmNvbmYgXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzdGVtZC9zeXN0ZW0uY29uZiBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXN0ZW1kL3VzZXIuY29uZiIKKworRklMRVNfJHtQTn0gPSAiICR7YmFzZV9iaW5kaXJ9LyogXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3NlcnZpY2VzIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0tc2VydmljZXMgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtCUE59IFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2ZhY3RvcnkgXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vZGJ1cy0xLyBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9tYWNoaW5lLWlkIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L21vZHVsZXMtbG9hZC5kLyBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9wYW0uZC8gXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzY3RsLmQvIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c3RlbWQvIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3hkZy8gXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL1JFQURNRSBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9yZXNvbHYtY29uZi5zeXN0ZW1kIFwKKyAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kLyogXAorICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS8qIFwKKyAgICAgICAgICAgICAgICAke2Jhc2VfbGliZGlyfS9zZWN1cml0eS8qLnNvIFwKKyAgICAgICAgICAgICAgICAvY2dyb3VwIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZCogXAorICAgICAgICAgICAgICAgICR7YmluZGlyfS9idXNjdGwgXAorICAgICAgICAgICAgICAgICR7YmluZGlyfS9jb3JlZHVtcGN0bCBcCisgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2xvY2FsZWN0bCBcCisgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2hvc3RuYW1lY3RsIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vdGltZWRhdGVjdGwgXAorICAgICAgICAgICAgICAgICR7YmluZGlyfS9ib290Y3RsIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0va2VybmVsLWluc3RhbGwgXAorICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kLyouY29uZiBcCisgICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL3N5c3RlbWQgXAorICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9tb2R1bGVzLWxvYWQuZCBcCisgICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL3N5c2N0bC5kIFwKKyAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvc3lzdXNlcnMuZCBcCisgICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL2Vudmlyb25tZW50LmQgXAorICAgICAgICAgICAgICAgICR7bG9jYWxzdGF0ZWRpcn0gXAorICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kLzcwLXVhY2Nlc3MucnVsZXMgXAorICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kLzcxLXNlYXQucnVsZXMgXAorICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kLzczLXNlYXQtbGF0ZS5ydWxlcyBcCisgICAgICAgICAgICAgICAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2L3J1bGVzLmQvOTktc3lzdGVtZC5ydWxlcyBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLnRpbWVkYXRlMS5jb25mIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AubG9jYWxlMS5jb25mIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AubmV0d29yazEuY29uZiBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLnJlc29sdmUxLmNvbmYgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5zeXN0ZW1kMS5jb25mIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AuaG9zdG5hbWUxLmNvbmYgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5sb2dpbjEuY29uZiBcCisgICAgICAgICAgICAgICAiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtiYXNlX2xpYmRpcn0vc2VjdXJpdHkvKi5sYSAke2RhdGFkaXJ9L2RidXMtMS9pbnRlcmZhY2VzLyAke3N5c2NvbmZkaXJ9L3JwbS9tYWNyb3Muc3lzdGVtZCIKKworUkRFUEVORFNfJHtQTn0gKz0gImttb2QgZGJ1cyB1dGlsLWxpbnV4LW1vdW50IHVkZXYgKD0gJHtFWFRFTkRQS0dWfSkgdXRpbC1saW51eC1hZ2V0dHkiCitSREVQRU5EU18ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc2VyaWFsLWdldHR5LWdlbmVyYXRvcicsICcnLCAnc3lzdGVtZC1zZXJpYWxnZXR0eScsIGQpfSIKK1JERVBFTkRTXyR7UE59ICs9ICJ2b2xhdGlsZS1iaW5kcyB1cGRhdGUtcmMuZCIKKworUlJFQ09NTUVORFNfJHtQTn0gKz0gInN5c3RlbWQtZXh0cmEtdXRpbHMgXAorICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbWQtY29tcGF0LXVuaXRzIHVkZXYtaHdkYiBcCisgICAgICAgICAgICAgICAgICAgICAgdXRpbC1saW51eC1mc2NrIGUyZnNwcm9ncy1lMmZzY2sgXAorICAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtYXV0b2ZzNCBrZXJuZWwtbW9kdWxlLXVuaXgga2VybmVsLW1vZHVsZS1pcHY2IFwKKyAgICAgICAgICAgICAgICAgICAgICBvcy1yZWxlYXNlIFwKKyIKKworSU5TQU5FX1NLSVBfJHtQTn0gKz0gImRldi1zbyBsaWJkaXIiCitJTlNBTkVfU0tJUF8ke1BOfS1kYmcgKz0gImxpYmRpciIKK0lOU0FORV9TS0lQXyR7UE59LWRvYyArPSAiIGxpYmRpciIKKworUEFDS0FHRVMgPSsgInVkZXYgdWRldi1od2RiIgorCitSUFJPVklERVNfdWRldiA9ICJob3RwbHVnIgorCitSREVQRU5EU191ZGV2LWh3ZGIgKz0gInVkZXYiCisKK0ZJTEVTX3VkZXYgKz0gIiR7YmFzZV9zYmluZGlyfS91ZGV2ZCBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtdWRldmQgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9hY2NlbGVyb21ldGVyIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvYXRhX2lkIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvY2Ryb21faWQgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9jb2xsZWN0IFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvZmluZGtleWJvYXJkcyBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2tleWJvYXJkLWZvcmNlLXJlbGVhc2Uuc2ggXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9rZXltYXAgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9tdGRfcHJvYmUgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9zY3NpX2lkIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvdjRsX2lkIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYva2V5bWFwcyBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3J1bGVzLmQvKi5ydWxlcyBcCisgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3VkZXYgXAorICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvc3lzdGVtZC11ZGV2ZCBcCisgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyp1ZGV2KiBcCisgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyoud2FudHMvKnVkZXYqIFwKKyAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L3VkZXZhZG0gXAorICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9iYXNoLWNvbXBsZXRpb24vY29tcGxldGlvbnMvdWRldmFkbSBcCisgICAgICAgICAgICAgICIKKworRklMRVNfdWRldi1od2RiID0gIiR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvaHdkYi5kIgorCitJTklUU0NSSVBUX1BBQ0tBR0VTID0gInVkZXYiCitJTklUU0NSSVBUX05BTUVfdWRldiA9ICJzeXN0ZW1kLXVkZXZkIgorSU5JVFNDUklQVF9QQVJBTVNfdWRldiA9ICJzdGFydCAwMyBTIC4iCisKK3B5dGhvbiBfX2Fub255bW91cygpIHsKKyAgICBpZiBub3QgYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsIFRydWUsIEZhbHNlLCBkKToKKyAgICAgICAgZC5zZXRWYXIoIklOSElCSVRfVVBEQVRFUkNEX0JCQ0xBU1MiLCAiMSIpCit9CisKKyMgVE9ETzoKKyMgdS1hIGZvciBydW5sZXZlbCBhbmQgdGVsaW5pdAorCitBTFRFUk5BVElWRV8ke1BOfSA9ICJpbml0IGhhbHQgcmVib290IHNodXRkb3duIHBvd2Vyb2ZmIHJ1bmxldmVsIHJlc29sdi1jb25mIgorCitBTFRFUk5BVElWRV9UQVJHRVRbaW5pdF0gPSAiJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2luaXRdID0gIiR7YmFzZV9zYmluZGlyfS9pbml0IgorQUxURVJOQVRJVkVfUFJJT1JJVFlbaW5pdF0gPz0gIjMwMCIKKworQUxURVJOQVRJVkVfVEFSR0VUW2hhbHRdID0gIiR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtoYWx0XSA9ICIke2Jhc2Vfc2JpbmRpcn0vaGFsdCIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZW2hhbHRdID89ICIzMDAiCisKK0FMVEVSTkFUSVZFX1RBUkdFVFtyZWJvb3RdID0gIiR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtyZWJvb3RdID0gIiR7YmFzZV9zYmluZGlyfS9yZWJvb3QiCitBTFRFUk5BVElWRV9QUklPUklUWVtyZWJvb3RdID89ICIzMDAiCisKK0FMVEVSTkFUSVZFX1RBUkdFVFtzaHV0ZG93bl0gPSAiJHtiYXNlX2JpbmRpcn0vc3lzdGVtY3RsIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3NodXRkb3duXSA9ICIke2Jhc2Vfc2JpbmRpcn0vc2h1dGRvd24iCitBTFRFUk5BVElWRV9QUklPUklUWVtzaHV0ZG93bl0gPz0gIjMwMCIKKworQUxURVJOQVRJVkVfVEFSR0VUW3Bvd2Vyb2ZmXSA9ICIke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcG93ZXJvZmZdID0gIiR7YmFzZV9zYmluZGlyfS9wb3dlcm9mZiIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZW3Bvd2Vyb2ZmXSA/PSAiMzAwIgorCitBTFRFUk5BVElWRV9UQVJHRVRbcnVubGV2ZWxdID0gIiR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtydW5sZXZlbF0gPSAiJHtiYXNlX3NiaW5kaXJ9L3J1bmxldmVsIgorQUxURVJOQVRJVkVfUFJJT1JJVFlbcnVubGV2ZWxdID89ICIzMDAiCisKK0FMVEVSTkFUSVZFX1RBUkdFVFtyZXNvbHYtY29uZl0gPSAiJHtzeXNjb25mZGlyfS9yZXNvbHYtY29uZi5zeXN0ZW1kIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3Jlc29sdi1jb25mXSA9ICIke3N5c2NvbmZkaXJ9L3Jlc29sdi5jb25mIgorQUxURVJOQVRJVkVfUFJJT1JJVFlbcmVzb2x2LWNvbmZdID89ICI1MCIKKworcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKKwlzZWQgLWUgJy9eaG9zdHM6L3MvXHMqXDxteWhvc3RuYW1lXD4vLycgXAorCQktZSAncy9cKF5ob3N0czouKlwpXChcPGZpbGVzXD5cKVwoLipcKVwoXDxkbnNcPlwpXCguKlwpL1wxXDIgbXlob3N0bmFtZSBcM1w0XDUvJyBcCisJCS1pICREJHtzeXNjb25mZGlyfS9uc3N3aXRjaC5jb25mCit9CisKK3BrZ19wcmVybV8ke1BOfSAoKSB7CisJc2VkIC1lICcvXmhvc3RzOi9zL1xzKlw8bXlob3N0bmFtZVw+Ly8nIFwKKwkJLWUgJy9eaG9zdHM6L3MvXHMqbXlob3N0bmFtZS8vJyBcCisJCS1pICREJHtzeXNjb25mZGlyfS9uc3N3aXRjaC5jb25mCit9CisKK1BBQ0tBR0VfV1JJVEVfREVQUyArPSAicWVtdS1uYXRpdmUiCitwa2dfcG9zdGluc3RfdWRldi1od2RiICgpIHsKKwlpZiB0ZXN0IC1uICIkRCI7IHRoZW4KKwkJJHtAcWVtdV9ydW5fYmluYXJ5KGQsICckRCcsICcke2Jhc2VfYmluZGlyfS91ZGV2YWRtJyl9IGh3ZGIgLS11cGRhdGUgXAorCQkJLS1yb290ICRECisJCWNob3duIHJvb3Q6cm9vdCAkRCR7c3lzY29uZmRpcn0vdWRldi9od2RiLmJpbgorCWVsc2UKKwkJdWRldmFkbSBod2RiIC0tdXBkYXRlCisJZmkKK30KKworcGtnX3ByZXJtX3VkZXYtaHdkYiAoKSB7CisJcm0gLWYgJEQke3N5c2NvbmZkaXJ9L3VkZXYvaHdkYi5iaW4KK30KKworIyBBcyB0aGlzIHJlY2lwZSBidWlsZHMgdWRldiwgcmVzcGVjdCBzeXN0ZW1kIGJlaW5nIGluIERJU1RST19GRUFUVVJFUyBzbworIyB0aGF0IHdlIGRvbid0IGJ1aWxkIGJvdGggdWRldiBhbmQgc3lzdGVtZCBpbiB3b3JsZCBidWlsZHMuCitweXRob24gKCkgeworICAgIGlmIG5vdCBiYi51dGlscy5jb250YWlucyAoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgVHJ1ZSwgRmFsc2UsIGQpOgorICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiJ3N5c3RlbWQnIG5vdCBpbiBESVNUUk9fRkVBVFVSRVMiKQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0LWluaXR0YWIvc3RhcnRfZ2V0dHkgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXQtaW5pdHRhYi9zdGFydF9nZXR0eQppbmRleCBlM2QwNTJhLi5lMTVhZTM1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXQtaW5pdHRhYi9zdGFydF9nZXR0eQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXQtaW5pdHRhYi9zdGFydF9nZXR0eQpAQCAtMSw1ICsxLDQzIEBACiAjIS9iaW4vc2gKLWlmIFsgLWMgL2Rldi8kMiBdCi10aGVuIAotCS9zYmluL2dldHR5IC1MICQxICQyICQzCi1maQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUaGlzIHNjcmlwdCBpcyB1c2VkIHRvIGF1dG9tYXRpY2FsbHkgc2V0IHVwIHRoZSBzZXJpYWwgY29uc29sZShzKSBvbiBzdGFydHVwLgorIyBUaGUgdmFyaWFibGUgU0VSSUFMX0NPTlNPTEVTIGNhbiBiZSBzZXQgaW4gbWV0YS9jb25mL21hY2hpbmUvKi5jb25mLgorIyBTY3JpcHQgZW5oYW5jZW1lbnQgaGFzIGJlZW4gZG9uZSBiYXNlZCBvbiBCdWcgWU9DVE8gIzEwODQ0LgorIyBNb3N0IG9mIHRoZSBpbmZvcm1hdGlvbiBpcyByZXRyaWV2ZWQgZnJvbSAvcHJvYyB2aXJ0dWFsIGZpbGVzeXN0ZW0gY29udGFpbmluZworIyBhbGwgdGhlIHJ1bnRpbWUgc3lzdGVtIGluZm9ybWF0aW9uIChlZy4gc3lzdGVtIG1lbW9yeSwgZGV2aWNlIG1vdW50LCBldGMpLgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIEdldCBhY3RpdmUgc2VyaWFsIGZpbGVuYW1lLgorYWN0aXZlX3NlcmlhbD0kKGdyZXAgInNlcmlhbCIgL3Byb2MvdHR5L2RyaXZlcnMgfCBjdXQgLWQvIC1mMSB8IHNlZCAicy8gKiQvLyIpCisKKyMgUmVwaHJhc2UgaW5wdXQgcGFyYW1ldGVyIGZyb20gdHR5UyB0YXJnZXQgaW5kZXggKHR0eVMxLCB0dHlTMiwgdHR5QU1BMCwgZXRjKS4KK3J1bnRpbWVfdHR5PSQoZWNobyAkMiB8IGdyZXAgLW9oICdbMC05XScpCisKKyMgQmFja3VwICRJRlMuCitERUZBVUxUX0lGUz0kSUZTCisjIEN1c3RvbWl6ZSBJbnRlcm5hbCBGaWVsZCBTZXBhcmF0b3IuCitJRlM9IiQocHJpbnRmICdcblx0JykiCisKK2ZvciBsaW5lIGluICRhY3RpdmVfc2VyaWFsOyBkbworCSMgQ2hlY2sgd2UgaGF2ZSB0aGUgZmlsZSBjb250YWluaW5nIGN1cnJlbnQgYWN0aXZlIHNlcmlhbCB0YXJnZXQgaW5kZXguCisJaWYgWyAtZSAiL3Byb2MvdHR5L2RyaXZlci8kbGluZSIgXQorICAgICAgICB0aGVuCisJCSMgUmVtb3ZlIGFsbCB1bmtub3duIGVudHJpZXMgYW5kIGRpc2NhcmQgdGhlIGZpcnN0IGxpbmUgKGRlc2MpLgorCQlhY3RpdmV0dHk9JChncmVwIC12ICJ1bmtub3duIiAiL3Byb2MvdHR5L2RyaXZlci8kbGluZSIgXAorCQkJICAgIHwgdGFpbCAtbiArMiB8IGdyZXAgLW9oICJeXHMqXFMqWzAtOV0iKQorCQlmb3IgYWN0aXZlIGluICRhY3RpdmV0dHk7IGRvCisJCQkjIElmIGluZGV4ZXMgZG8gbWF0Y2ggdGhlbiBlbmFibGUgdGhlIHNlcmlhbCBjb25zb2xlLgorCQkJaWYgWyAkYWN0aXZlIC1lcSAkcnVudGltZV90dHkgXQorCQkJdGhlbgorCQkJCWlmIFsgLWMgL2Rldi8kMiBdCisJCQkJdGhlbgorCQkJCSAgICAvc2Jpbi9nZXR0eSAtTCAkMSAkMiAkMworCQkJCWZpCisJCQkJYnJlYWsKKwkJCWZpCisJCWRvbmUKKwlmaQorZG9uZQorCisjIFJlc3RvcmUgJElGUy4KK0lGUz0kREVGQVVMVF9JRlMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdF8yLjg4ZHNmLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0XzIuODhkc2YuYmIKaW5kZXggODg0ODU3YS4uMjJhMGVjZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0XzIuODhkc2YuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0XzIuODhkc2YuYmIKQEAgLTY4LDcgKzY4LDcgQEAKIEZJTEVTX3N5c3Zpbml0LXBpZG9mID0gIiR7YmFzZV9iaW5kaXJ9L3BpZG9mLnN5c3Zpbml0ICR7YmFzZV9zYmluZGlyfS9raWxsYWxsNSIKIEZJTEVTX3N5c3Zpbml0LXN1bG9naW4gPSAiJHtiYXNlX3NiaW5kaXJ9L3N1bG9naW4uc3lzdmluaXQiCiAKLVJERVBFTkRTXyR7UE59ICs9ICJzeXN2aW5pdC1waWRvZiBpbml0c2NyaXB0cy1mdW5jdGlvbnMiCitSREVQRU5EU18ke1BOfSArPSAic3lzdmluaXQtcGlkb2YgaW5pdGQtZnVuY3Rpb25zIgogCiBDRkxBR1NfcHJlcGVuZCA9ICItRF9HTlVfU09VUkNFICIKIGV4cG9ydCBMQ1JZUFQgPSAiLWxjcnlwdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91ZGV2L2V1ZGV2L2luaXQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWRldi9ldWRldi9pbml0CmluZGV4IDBhYjAyOGIuLjA0NTVhZGUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91ZGV2L2V1ZGV2L2luaXQKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VkZXYvZXVkZXYvaW5pdApAQCAtMTQsMjUgKzE0LDcgQEAKIFsgLWQgL3N5cy9jbGFzcyBdIHx8IGV4aXQgMQogWyAtciAvcHJvYy9tb3VudHMgXSB8fCBleGl0IDEKIFsgLXggQFVERVZEQCBdIHx8IGV4aXQgMQotU1lTQ09ORl9DQUNIRUQ9Ii9ldGMvdWRldi9jYWNoZS5kYXRhIgotU1lTQ09ORl9UTVA9Ii9kZXYvc2htL3VkZXYuY2FjaGUiCi1ERVZDQUNIRV9SRUdFTj0iL2Rldi9zaG0vdWRldi1yZWdlbiIgIyBjcmVhdGUgdG8gcmVxdWVzdCBjYWNoZSByZWdlbgogCi0jIEEgbGlzdCBvZiBmaWxlcyB3aGljaCBhcmUgdXNlZCBhcyBhIGNyaXRlcmlhIHRvIGp1ZGdlIHdoZXRoZXIgdGhlIHVkZXYgY2FjaGUgY291bGQgYmUgcmV1c2VkLgotQ01QX0ZJTEVfTElTVD0iL3Byb2MvdmVyc2lvbiAvcHJvYy9jbWRsaW5lIC9wcm9jL2RldmljZXMiCi1bIC1mIC9wcm9jL2F0YWdzIF0gJiYgQ01QX0ZJTEVfTElTVD0iJENNUF9GSUxFX0xJU1QgL3Byb2MvYXRhZ3MiCi0KLSMgTGlzdCBvZiBmaWxlcyB3aG9zZSBtZXRhZGF0YSAoc2l6ZS9tdGltZS9uYW1lKSB3aWxsIGJlIGluY2x1ZGVkIGluIGNhY2hlZAotIyBzeXN0ZW0gc3RhdGUuCi1NRVRBX0ZJTEVfTElTVD0ibGliL3VkZXYvcnVsZXMuZC8qIGV0Yy91ZGV2L3J1bGVzLmQvKiIKLQotIyBDb21tYW5kIHRvIGNvbXB1dGUgc3lzdGVtIGNvbmZpZ3VyYXRpb24uCi1zeXNjb25mX2NtZCAoKSB7Ci0JY2F0IC0tICRDTVBfRklMRV9MSVNUCi0Jc3RhdCAtYyAnJXMgJVkgJW4nIC0tICRNRVRBX0ZJTEVfTElTVCB8IGF3ayAtRi8gJ3twcmludCAkMSAiICIgJE5GO30nCi19Ci0KLVsgLWYgL2V0Yy9kZWZhdWx0L3VkZXYtY2FjaGUgXSAmJiAuIC9ldGMvZGVmYXVsdC91ZGV2LWNhY2hlCiBbIC1mIC9ldGMvdWRldi91ZGV2LmNvbmYgXSAmJiAuIC9ldGMvdWRldi91ZGV2LmNvbmYKIFsgLWYgL2V0Yy9kZWZhdWx0L3JjUyBdICYmIC4gL2V0Yy9kZWZhdWx0L3JjUwogCkBAIC02NiwzNyArNDgsNiBAQAogICAgICMgL3Zhci92b2xhdGlsZS90bXAgZGlyZWN0b3J5IHRvIGJlIGF2YWlsYWJsZS4KICAgICBta2RpciAtbSAxNzc3IC1wIC92YXIvdm9sYXRpbGUvdG1wCiAKLSAgICAjIENhY2hlIGhhbmRsaW5nLgotICAgIGlmIFsgIiRERVZDQUNIRSIgIT0gIiIgXTsgdGhlbgotICAgICAgICAgICAgaWYgWyAtZSAkREVWQ0FDSEUgXTsgdGhlbgotCQkgICAgc3lzY29uZl9jbWQgPiAiJFNZU0NPTkZfVE1QIgotCQkgICAgaWYgY21wICRTWVNDT05GX0NBQ0hFRCAkU1lTQ09ORl9UTVAgPi9kZXYvbnVsbDsgdGhlbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhciB4bWYgJERFVkNBQ0hFIC1DIC8gLW0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3RfZmlyc3RfYm9vdD0xCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyAiJFZFUkJPU0UiICE9ICJubyIgXSAmJiBlY2hvICJ1ZGV2OiB1c2luZyBjYWNoZSBmaWxlICRERVZDQUNIRSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIC1lICRTWVNDT05GX1RNUCBdICYmIHJtIC1mICIkU1lTQ09ORl9UTVAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyAtZSAiJERFVkNBQ0hFX1JFR0VOIiBdICYmIHJtIC1mICIkREVWQ0FDSEVfUkVHRU4iCi0gICAgICAgICAgICAgICAgICAgIGVsc2UKLQkJCSAgICAjIE91dHB1dCBkZXRhaWxlZCByZWFzb24gd2h5IHRoZSBjYWNoZWQgL2RldiBpcyBub3QgdXNlZAotCQkJICAgIGNhdCA8PEVPRgotdWRldjogTm90IHVzaW5nIHVkZXYgY2FjaGUgYmVjYXVzZSBvZiBjaGFuZ2VzIGRldGVjdGVkIGluIHRoZSBmb2xsb3dpbmcgZmlsZXM6Ci11ZGV2OiAgICAgJENNUF9GSUxFX0xJU1QKLXVkZXY6ICAgICAkTUVUQV9GSUxFX0xJU1QKLXVkZXY6IFRoZSB1ZGV2IGNhY2hlIHdpbGwgYmUgcmVnZW5lcmF0ZWQuIFRvIGlkZW50aWZ5IHRoZSBkZXRlY3RlZCBjaGFuZ2VzLAotdWRldjogY29tcGFyZSB0aGUgY2FjaGVkIHN5c2NvbmYgYXQgICAkU1lTQ09ORl9DQUNIRUQKLXVkZXY6IGFnYWluc3QgdGhlIGN1cnJlbnQgc3lzY29uZiBhdCAgJFNZU0NPTkZfVE1QCi1FT0YKLQkJCSAgICB0b3VjaCAiJERFVkNBQ0hFX1JFR0VOIgotICAgICAgICAgICAgICAgICAgICBmaQotCSAgICBlbHNlCi0JCSAgICBpZiBbICIkUk9PVEZTX1JFQURfT05MWSIgIT0gInllcyIgXTsgdGhlbgotCQkJICAgICMgSWYgcm9vdGZzIGlzIG5vdCByZWFkLW9ubHksIGl0J3MgcG9zc2libGUgdGhhdCBhIG5ldyB1ZGV2IGNhY2hlIHdvdWxkIGJlIGdlbmVyYXRlZDsKLQkJCSAgICAjIG90aGVyd2lzZSwgd2UgZG8gbm90IGJvdGhlciB0byByZWFkIGZpbGVzLgotCQkJICAgIHRvdWNoICIkREVWQ0FDSEVfUkVHRU4iCi0JCSAgICBmaQotICAgICAgICAgICAgZmkKLSAgICBmaQotCiAgICAgIyBtYWtlX2V4dHJhX25vZGVzCiAgICAga2lsbF91ZGV2ZCA+ICIvZGV2L251bGwiIDI+JjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VkZXYvZXVkZXYvdWRldi1jYWNoZSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91ZGV2L2V1ZGV2L3VkZXYtY2FjaGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjZmZmMWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VkZXYvZXVkZXYvdWRldi1jYWNoZQorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLSMhL2Jpbi9zaCAtZQotCi0jIyMgQkVHSU4gSU5JVCBJTkZPCi0jIFByb3ZpZGVzOiAgICAgICAgICB1ZGV2LWNhY2hlCi0jIFJlcXVpcmVkLVN0YXJ0OiAgICBtb3VudGFsbAotIyBSZXF1aXJlZC1TdG9wOgotIyBEZWZhdWx0LVN0YXJ0OiAgICAgUwotIyBEZWZhdWx0LVN0b3A6Ci0jIFNob3J0LURlc2NyaXB0aW9uOiBjYWNoZSAvZGV2IHRvIHNwZWVkdXAgdGhlIHVkZXYgbmV4dCBib290Ci0jIyMgRU5EIElOSVQgSU5GTwotCi1leHBvcnQgVFo9L2V0Yy9sb2NhbHRpbWUKLQotWyAtciAvcHJvYy9tb3VudHMgXSB8fCBleGl0IDEKLVsgLXggQFVERVZEQCBdIHx8IGV4aXQgMQotWyAtZCAvc3lzL2NsYXNzIF0gfHwgZXhpdCAxCi0KLVsgLWYgL2V0Yy9kZWZhdWx0L3JjUyBdICYmIC4gL2V0Yy9kZWZhdWx0L3JjUwotREVWQ0FDSEVfVE1QPSIvZGV2L3NobS91ZGV2LWNhY2hlLXRtcC50YXIiCi1TWVNDT05GX0NBQ0hFRD0iL2V0Yy91ZGV2L2NhY2hlLmRhdGEiCi1TWVNDT05GX1RNUD0iL2Rldi9zaG0vdWRldi5jYWNoZSIKLURFVkNBQ0hFX1JFR0VOPSIvZGV2L3NobS91ZGV2LXJlZ2VuIiAjIGNyZWF0ZSB0byByZXF1ZXN0IGNhY2hlIHJlZ2VuCi0KLSMgQSBsaXN0IG9mIGZpbGVzIHdoaWNoIGFyZSB1c2VkIGFzIGEgY3JpdGVyaWEgdG8ganVkZ2Ugd2hldGhlciB0aGUgdWRldiBjYWNoZSBjb3VsZCBiZSByZXVzZWQuCi1DTVBfRklMRV9MSVNUPSIvcHJvYy92ZXJzaW9uIC9wcm9jL2NtZGxpbmUgL3Byb2MvZGV2aWNlcyIKLVsgLWYgL3Byb2MvYXRhZ3MgXSAmJiBDTVBfRklMRV9MSVNUPSIkQ01QX0ZJTEVfTElTVCAvcHJvYy9hdGFncyIKLQotIyBMaXN0IG9mIGZpbGVzIHdob3NlIG1ldGFkYXRhIChzaXplL210aW1lL25hbWUpIHdpbGwgYmUgaW5jbHVkZWQgaW4gY2FjaGVkCi0jIHN5c3RlbSBzdGF0ZS4KLU1FVEFfRklMRV9MSVNUPSJsaWIvdWRldi9ydWxlcy5kLyogZXRjL3VkZXYvcnVsZXMuZC8qIgotCi0jIENvbW1hbmQgdG8gY29tcHV0ZSBzeXN0ZW0gY29uZmlndXJhdGlvbi4KLXN5c2NvbmZfY21kICgpIHsKLQljYXQgLS0gJENNUF9GSUxFX0xJU1QKLQlzdGF0IC1jICclcyAlWSAlbicgLS0gJE1FVEFfRklMRV9MSVNUIHwgYXdrIC1GLyAne3ByaW50ICQxICIgIiAkTkY7fScKLX0KLQotWyAtZiAvZXRjL2RlZmF1bHQvdWRldi1jYWNoZSBdICYmIC4gL2V0Yy9kZWZhdWx0L3VkZXYtY2FjaGUKLQotaWYgWyAiJFJPT1RGU19SRUFEX09OTFkiID0gInllcyIgXTsgdGhlbgotICAgIFsgIiRWRVJCT1NFIiAhPSAibm8iIF0gJiYgZWNobyAidWRldi1jYWNoZTogcmVhZC1vbmx5IHJvb3Rmcywgc2tpcCBnZW5lcmF0aW5nIHVkZXYtY2FjaGUiCi0gICAgZXhpdCAwCi1maQotCi1bICIkREVWQ0FDSEUiICE9ICIiIF0gfHwgZXhpdCAwCi1bICIke1ZFUkJPU0V9IiA9PSAibm8iIF0gfHwgZWNobyAtbiAidWRldi1jYWNoZTogY2hlY2tpbmcgZm9yICR7REVWQ0FDSEVfUkVHRU59Li4uICIKLWlmICEgWyAtZSAiJERFVkNBQ0hFX1JFR0VOIiBdOyB0aGVuCi0JWyAiJHtWRVJCT1NFfSIgPT0gIm5vIiBdIHx8IGVjaG8gIm5vdCBmb3VuZC4iCi0JZXhpdCAwCi1maQotWyAiJHtWRVJCT1NFfSIgPT0gIm5vIiBdIHx8IGVjaG8gImZvdW5kLiIKLWVjaG8gIlBvcHVsYXRpbmcgZGV2IGNhY2hlIgotCi1lcnJfY2xlYW51cCAoKSB7Ci0gICAgICAgIGVjaG8gInVkZXYtY2FjaGU6IHVwZGF0ZSBmYWlsZWQhIgotICAgICAgICB1ZGV2YWRtIGNvbnRyb2wgLS1zdGFydC1leGVjLXF1ZXVlCi0Jcm0gLWYgLS0gIiRTWVNDT05GX1RNUCIgIiRERVZDQUNIRV9UTVAiICIkREVWQ0FDSEUiICIkU1lTQ09ORl9DQUNIRUQiCi19Ci0KLSgKLQlzZXQgLWUKLQl0cmFwICdlcnJfY2xlYW51cCcgRVhJVAotCXVkZXZhZG0gY29udHJvbCAtLXN0b3AtZXhlYy1xdWV1ZQotCXN5c2NvbmZfY21kID4gIiRTWVNDT05GX1RNUCIKLQlmaW5kIC9kZXYgLXhkZXYgXCggLXR5cGUgYiAtbyAtdHlwZSBjIC1vIC10eXBlIGwgXCkgfCBjdXQgLWMgMi0gXAotCQl8IHhhcmdzIHRhciBjZiAiJHtERVZDQUNIRV9UTVB9IgotCWd6aXAgPCAiJHtERVZDQUNIRV9UTVB9IiA+ICIkREVWQ0FDSEUiCi0Jcm0gLWYgIiR7REVWQ0FDSEVfVE1QfSIKLQltdiAiJFNZU0NPTkZfVE1QIiAiJFNZU0NPTkZfQ0FDSEVEIgotCXVkZXZhZG0gY29udHJvbCAtLXN0YXJ0LWV4ZWMtcXVldWUKLQlybSAtZiAiJERFVkNBQ0hFX1JFR0VOIgotCXRyYXAgLSBFWElUCi0pICYKLQotZXhpdCAwCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWRldi9ldWRldi91ZGV2LWNhY2hlLmRlZmF1bHQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWRldi9ldWRldi91ZGV2LWNhY2hlLmRlZmF1bHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzYjczMjYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VkZXYvZXVkZXYvdWRldi1jYWNoZS5kZWZhdWx0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi0jIERlZmF1bHQgZm9yIC9ldGMvaW5pdC5kL3VkZXYKLQotIyBDb21tZW50IHRoaXMgb3V0IHRvIGRpc2FibGUgZGV2aWNlIGNhY2hlCi1ERVZDQUNIRT0iL2V0Yy91ZGV2LWNhY2hlLnRhci5neiIKLVBST0JFX1BMQVRGT1JNX0JVUz0ieWVzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VkZXYvZXVkZXZfMy4yLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWRldi9ldWRldl8zLjIuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmRmYjU0NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWRldi9ldWRldl8zLjIuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEwNiArMCwwIEBACi1TVU1NQVJZID0gImV1ZGV2IGlzIGEgZm9yayBvZiBzeXN0ZW1kJ3MgdWRldiIKLUhPTUVQQUdFID0gImh0dHBzOi8vd2lraS5nZW50b28ub3JnL3dpa2kvRXVkZXYiCi1MSUNFTlNFID0gIkdQTHYyLjArICYgTEdQTC0yLjErIgotTElDRU5TRV9saWJ1ZGV2ID0gIkxHUEwtMi4xKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgotCi1ERVBFTkRTID0gImdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBncGVyZi1uYXRpdmUga21vZCBsaWJ4c2x0LW5hdGl2ZSB1dGlsLWxpbnV4IgotCi1QUk9WSURFUyA9ICJ1ZGV2IgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9nZW50b28vJHtCUE59L2FyY2hpdmUvdiR7UFZ9LnRhci5nejtkb3dubG9hZGZpbGVuYW1lPSR7QlB9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE0LVJldmVydC1ydWxlcy1yZW1vdmUtZmlybXdhcmUtbG9hZGluZy1ydWxlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9SZXZlcnQtdWRldi1yZW1vdmUtdXNlcnNwYWNlLWZpcm13YXJlLWxvYWRpbmctc3VwcG9yLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RldmZzLXVkZXYucnVsZXMgXAotICAgICAgICAgICBmaWxlOi8vaW5pdCBcCi0gICAgICAgICAgIGZpbGU6Ly9saW5rcy5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL2xvY2FsLnJ1bGVzIFwKLSAgICAgICAgICAgZmlsZTovL3Blcm1pc3Npb25zLnJ1bGVzIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi5ydWxlcyBcCi0gICAgICAgICAgIGZpbGU6Ly91ZGV2LWNhY2hlIFwKLSAgICAgICAgICAgZmlsZTovL3VkZXYtY2FjaGUuZGVmYXVsdCBcCi0gICAgICAgICAgIGZpbGU6Ly91ZGV2LnJ1bGVzIFwKLSIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vZ2VudG9vL2V1ZGV2L3JlbGVhc2VzIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYTJhYWUxNmJjNDMyZWFjMGU3MWMxMjY3YzM4NGUyOTUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiODhmNTMwYzE1NDA3NTBlNmRhYTkxYjVlYWVlYmY4OGU3NjFlNmYwYzg2NTE1YzFjMjhlZWRmZDg3MWYwMjdjNiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgcWVtdSBwa2djb25maWcKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS1zYmluZGlyPSR7YmFzZV9zYmluZGlyfSBcCi0gICAgLS13aXRoLXJvb3RsaWJkaXI9JHtiYXNlX2xpYmRpcn0gXAotICAgIC0td2l0aC1yb290cHJlZml4PSBcCi0iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJod2RiIgotUEFDS0FHRUNPTkZJR1tod2RiXSA9ICItLWVuYWJsZS1od2RiLC0tZGlzYWJsZS1od2RiIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2luaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3VkZXYKLQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS91ZGV2LWNhY2hlICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC91ZGV2LWNhY2hlCi0Jc2VkIC1pIHMlQFVERVZEQCUke2Jhc2Vfc2JpbmRpcn0vdWRldmQlICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC91ZGV2Ci0Jc2VkIC1pIHMlQFVERVZEQCUke2Jhc2Vfc2JpbmRpcn0vdWRldmQlICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC91ZGV2LWNhY2hlCi0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKLQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS91ZGV2LWNhY2hlLmRlZmF1bHQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC91ZGV2LWNhY2hlCi0KLQl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS91ZGV2L2NhY2hlLmRhdGEKLQotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbG9jYWwucnVsZXMgJHtEfSR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kL2xvY2FsLnJ1bGVzCi0KLQkjIFVzZSBjbGFzc2ljIG5ldHdvcmsgaW50ZXJmYWNlIG5hbWluZyBzY2hlbWUKLQl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQvODAtbmV0LW5hbWUtc2xvdC5ydWxlcwotCi0JIyBoaWQyaGNpIGhhcyBtb3ZlZCB0byBibHVlejQuIHJlbW92ZWQgaW4gdWRldiBhcyBvZiB2ZXJzaW9uIDE2OQotCXJtIC1mICR7RH0ke2Jhc2VfbGliZGlyfS91ZGV2L2hpZDJoY2kKLX0KLQotSU5JVFNDUklQVF9QQUNLQUdFUyA9ICJldWRldiB1ZGV2LWNhY2hlIgotSU5JVFNDUklQVF9OQU1FX2V1ZGV2ID0gInVkZXYiCi1JTklUU0NSSVBUX1BBUkFNU19ldWRldiA9ICJzdGFydCAwNCBTIC4iCi1JTklUU0NSSVBUX05BTUVfdWRldi1jYWNoZSA9ICJ1ZGV2LWNhY2hlIgotSU5JVFNDUklQVF9QQVJBTVNfdWRldi1jYWNoZSA9ICJzdGFydCAzNiBTIC4iCi0KLVBBQ0tBR0VTID0rICJsaWJ1ZGV2IgotUEFDS0FHRVMgPSsgInVkZXYtY2FjaGUiCi1QQUNLQUdFUyA9KyAiZXVkZXYtaHdkYiIKLQotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJleGVjZGlyfSAke2Jhc2VfbGliZGlyfS91ZGV2ICR7YmluZGlyfS91ZGV2YWRtIgotRklMRVNfJHtQTn0tZGV2ID0gIiR7ZGF0YWRpcn0vcGtnY29uZmlnL3VkZXYucGMgXAotICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vbGlidWRldi5oICR7bGliZGlyfS9saWJ1ZGV2LnNvIFwKLSAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9L3VkZXYuaCAke2xpYmRpcn0vbGlidWRldi5sYSBcCi0gICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYnVkZXYuYSAke2xpYmRpcn0vcGtnY29uZmlnL2xpYnVkZXYucGMiCi1GSUxFU19saWJ1ZGV2ID0gIiR7YmFzZV9saWJkaXJ9L2xpYnVkZXYuc28uKiIKLUZJTEVTX3VkZXYtY2FjaGUgPSAiJHtzeXNjb25mZGlyfS9pbml0LmQvdWRldi1jYWNoZSAke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdWRldi1jYWNoZSIKLUZJTEVTX2V1ZGV2LWh3ZGIgPSAiJHtzeXNjb25mZGlyfS91ZGV2L2h3ZGIuZCIKLQotUkRFUEVORFNfZXVkZXYtaHdkYiArPSAiZXVkZXYiCi0KLVJSRUNPTU1FTkRTXyR7UE59ICs9ICJ1ZGV2LWNhY2hlIgotCi1SUFJPVklERVNfJHtQTn0gPSAiaG90cGx1ZyB1ZGV2IgotUlBST1ZJREVTX2V1ZGV2LWh3ZGIgKz0gInVkZXYtaHdkYiIKLQotcHl0aG9uICgpIHsKLSAgICBpZiBiYi51dGlscy5jb250YWlucyAoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgVHJ1ZSwgRmFsc2UsIGQpOgotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiJ3N5c3RlbWQnIGluIERJU1RST19GRUFUVVJFUyIpCi19Ci0KLVBBQ0tBR0VfV1JJVEVfREVQUyArPSAicWVtdS1uYXRpdmUiCi1wa2dfcG9zdGluc3RfZXVkZXYtaHdkYiAoKSB7Ci0gICAgaWYgdGVzdCAtbiAiJEQiOyB0aGVuCi0gICAgICAgICR7QHFlbXVfcnVuX2JpbmFyeShkLCAnJEQnLCAnJHtiaW5kaXJ9L3VkZXZhZG0nKX0gaHdkYiAtLXVwZGF0ZSAtLXJvb3QgJEQKLSAgICAgICAgY2hvd24gcm9vdDpyb290ICREJHtzeXNjb25mZGlyfS91ZGV2L2h3ZGIuYmluCi0gICAgZWxzZQotICAgICAgICB1ZGV2YWRtIGh3ZGIgLS11cGRhdGUKLSAgICBmaQotfQotCi1wa2dfcHJlcm1fZXVkZXYtaHdkYiAoKSB7Ci0gICAgICAgIHJtIC1mICREJHtzeXNjb25mZGlyfS91ZGV2L2h3ZGIuYmluCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWRldi9ldWRldl8zLjIuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91ZGV2L2V1ZGV2XzMuMi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyZmIyM2EKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWRldi9ldWRldl8zLjIuMi5iYgpAQCAtMCwwICsxLDk2IEBACitTVU1NQVJZID0gImV1ZGV2IGlzIGEgZm9yayBvZiBzeXN0ZW1kJ3MgdWRldiIKK0hPTUVQQUdFID0gImh0dHBzOi8vd2lraS5nZW50b28ub3JnL3dpa2kvRXVkZXYiCitMSUNFTlNFID0gIkdQTHYyLjArICYgTEdQTC0yLjErIgorTElDRU5TRV9saWJ1ZGV2ID0gIkxHUEwtMi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgorCitERVBFTkRTID0gImdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBncGVyZi1uYXRpdmUga21vZCBsaWJ4c2x0LW5hdGl2ZSB1dGlsLWxpbnV4IgorCitQUk9WSURFUyA9ICJ1ZGV2IgorCitTUkNfVVJJID0gImh0dHA6Ly9kZXYuZ2VudG9vLm9yZy9+Ymx1ZW5lc3MvJHtCUE59LyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE0LVJldmVydC1ydWxlcy1yZW1vdmUtZmlybXdhcmUtbG9hZGluZy1ydWxlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9SZXZlcnQtdWRldi1yZW1vdmUtdXNlcnNwYWNlLWZpcm13YXJlLWxvYWRpbmctc3VwcG9yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RldmZzLXVkZXYucnVsZXMgXAorICAgICAgICAgICBmaWxlOi8vaW5pdCBcCisgICAgICAgICAgIGZpbGU6Ly9saW5rcy5jb25mIFwKKyAgICAgICAgICAgZmlsZTovL2xvY2FsLnJ1bGVzIFwKKyAgICAgICAgICAgZmlsZTovL3Blcm1pc3Npb25zLnJ1bGVzIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi5ydWxlcyBcCisgICAgICAgICAgIGZpbGU6Ly91ZGV2LnJ1bGVzIFwKKyIKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vZ2VudG9vL2V1ZGV2L3JlbGVhc2VzIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNDFlMTliNzA0NjI2OTJmZWZkMDcyYTNmMzg4MThiNmUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2U0YzU2ZWMyZmMxODU0YWZkMGEzMWYzYWZmYTQ4ZjkyMmM2MmQ0MGVlMTJhMGMxYTRiNGYxNTJlZjViMGY2MyIKKworaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgcWVtdSBwa2djb25maWcKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS1zYmluZGlyPSR7YmFzZV9zYmluZGlyfSBcCisgICAgLS13aXRoLXJvb3RsaWJkaXI9JHtiYXNlX2xpYmRpcn0gXAorICAgIC0td2l0aC1yb290cHJlZml4PSBcCisiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJod2RiIgorUEFDS0FHRUNPTkZJR1tod2RiXSA9ICItLWVuYWJsZS1od2RiLC0tZGlzYWJsZS1od2RiIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAorCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2luaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3VkZXYKKwlzZWQgLWkgcyVAVURFVkRAJSR7YmFzZV9zYmluZGlyfS91ZGV2ZCUgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3VkZXYKKworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbG9jYWwucnVsZXMgJHtEfSR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kL2xvY2FsLnJ1bGVzCisKKwkjIFVzZSBjbGFzc2ljIG5ldHdvcmsgaW50ZXJmYWNlIG5hbWluZyBzY2hlbWUKKwl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQvODAtbmV0LW5hbWUtc2xvdC5ydWxlcworCisJIyBoaWQyaGNpIGhhcyBtb3ZlZCB0byBibHVlejQuIHJlbW92ZWQgaW4gdWRldiBhcyBvZiB2ZXJzaW9uIDE2OQorCXJtIC1mICR7RH0ke2Jhc2VfbGliZGlyfS91ZGV2L2hpZDJoY2kKK30KKworZG9faW5zdGFsbF9wcmVwZW5kX2NsYXNzLXRhcmdldCAoKSB7CisJIyBSZW1vdmUgcmVmZXJlbmNlcyB0byBidWlsZG1hY2hpbmUKKwlzZWQgLWkgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCisJCSR7Qn0vc3JjL3VkZXYva2V5Ym9hcmQta2V5cy1mcm9tLW5hbWUuaAorfQorCitJTklUU0NSSVBUX05BTUUgPSAidWRldiIKK0lOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDA0IFMgLiIKKworUEFDS0FHRVMgPSsgImxpYnVkZXYiCitQQUNLQUdFUyA9KyAiZXVkZXYtaHdkYiIKKworCitGSUxFU18ke1BOfSArPSAiJHtsaWJleGVjZGlyfSAke2Jhc2VfbGliZGlyfS91ZGV2ICR7YmluZGlyfS91ZGV2YWRtIgorRklMRVNfJHtQTn0tZGV2ID0gIiR7ZGF0YWRpcn0vcGtnY29uZmlnL3VkZXYucGMgXAorICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vbGlidWRldi5oICR7bGliZGlyfS9saWJ1ZGV2LnNvIFwKKyAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9L3VkZXYuaCAke2xpYmRpcn0vbGlidWRldi5sYSBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYnVkZXYuYSAke2xpYmRpcn0vcGtnY29uZmlnL2xpYnVkZXYucGMiCitGSUxFU19saWJ1ZGV2ID0gIiR7YmFzZV9saWJkaXJ9L2xpYnVkZXYuc28uKiIKK0ZJTEVTX2V1ZGV2LWh3ZGIgPSAiJHtzeXNjb25mZGlyfS91ZGV2L2h3ZGIuZCIKKworUkRFUEVORFNfZXVkZXYtaHdkYiArPSAiZXVkZXYiCisKK1JQUk9WSURFU18ke1BOfSA9ICJob3RwbHVnIHVkZXYiCitSUFJPVklERVNfZXVkZXYtaHdkYiArPSAidWRldi1od2RiIgorCitweXRob24gKCkgeworICAgIGlmIGJiLnV0aWxzLmNvbnRhaW5zICgnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBUcnVlLCBGYWxzZSwgZCk6CisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCInc3lzdGVtZCcgaW4gRElTVFJPX0ZFQVRVUkVTIikKK30KKworUEFDS0FHRV9XUklURV9ERVBTICs9ICJxZW11LW5hdGl2ZSIKK3BrZ19wb3N0aW5zdF9ldWRldi1od2RiICgpIHsKKyAgICBpZiB0ZXN0IC1uICIkRCI7IHRoZW4KKyAgICAgICAgJHtAcWVtdV9ydW5fYmluYXJ5KGQsICckRCcsICcke2JpbmRpcn0vdWRldmFkbScpfSBod2RiIC0tdXBkYXRlIC0tcm9vdCAkRAorICAgICAgICBjaG93biByb290OnJvb3QgJEQke3N5c2NvbmZkaXJ9L3VkZXYvaHdkYi5iaW4KKyAgICBlbHNlCisgICAgICAgIHVkZXZhZG0gaHdkYiAtLXVwZGF0ZQorICAgIGZpCit9CisKK3BrZ19wcmVybV9ldWRldi1od2RiICgpIHsKKyAgICAgICAgcm0gLWYgJEQke3N5c2NvbmZkaXJ9L3VkZXYvaHdkYi5iaW4KK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91ZGV2L3VkZXYtZXh0cmFjb25mXzEuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91ZGV2L3VkZXYtZXh0cmFjb25mXzEuMS5iYgppbmRleCBhZTEyNTUwLi40M2ExY2ZmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWRldi91ZGV2LWV4dHJhY29uZl8xLjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VkZXYvdWRldi1leHRyYWNvbmZfMS4xLmJiCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJFeHRyYSBtYWNoaW5lIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZmlsZXMiCitIT01FUEFHRSA9ICJodHRwczovL3dpa2kuZ2VudG9vLm9yZy93aWtpL0V1ZGV2IgogREVTQ1JJUFRJT04gPSAiRXh0cmEgbWFjaGluZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGZpbGVzIGZvciB1ZGV2LCBzcGVjaWZpY2FsbHkgYmxhY2tsaXN0IGluZm9ybWF0aW9uLiIKIExJQ0VOU0UgPSAiTUlUIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT1JFQkFTRX0vbWV0YS9DT1BZSU5HLk1JVDttZDU9M2RhOWNmYmNiNzg4YzgwYTAzODQzNjFiNGRlMjA0MjAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXBkYXRlLXJjLmQvdXBkYXRlLXJjLmRfMC43LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VwZGF0ZS1yYy5kL3VwZGF0ZS1yYy5kXzAuNy5iYgppbmRleCAzYjk2NWM1Li42ZmM2ZjZlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXBkYXRlLXJjLmQvdXBkYXRlLXJjLmRfMC43LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91cGRhdGUtcmMuZC91cGRhdGUtcmMuZF8wLjcuYmIKQEAgLTEsNCArMSw1IEBACiBTVU1NQVJZID0gIm1hbmFnZSBzeW1saW5rcyBpbiAvZXRjL3JjTi5kIgorSE9NRVBBR0UgPSAiaHR0cDovL2dpdGh1Yi5jb20vcGhpbGIvdXBkYXRlLXJjLmQvIgogREVTQ1JJUFRJT04gPSAidXBkYXRlLXJjLmQgaXMgYSB1dGlsaXR5IHRoYXQgYWxsb3dzIHRoZSBtYW5hZ2VtZW50IG9mIHN5bWxpbmtzIHRvIHRoZSBpbml0c2NyaXB0cyBpbiB0aGUgL2V0Yy9yY04uZCBkaXJlY3Rvcnkgc3RydWN0dXJlLiIKIFNFQ1RJT04gPSAiYmFzZSIKIApAQCAtMTUsNiArMTYsNyBAQAogICAgICAgICAgICBmaWxlOi8vY2hlY2staWYtc3ltbGlua3MtYXJlLXZhbGlkLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2ZpeC10by1oYW5kbGUtcHJpb3JpdHktbnVtYmVycy1jb3JyZWN0bHkucGF0Y2ggXAogICAgICAgICAgICIKK1VQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXguaW5jCmluZGV4IDYzMzAyYTkuLmYwZmZkMjUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXguaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXguaW5jCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJBIHN1aXRlIG9mIGJhc2ljIHN5c3RlbSBhZG1pbmlzdHJhdGlvbiB1dGlsaXRpZXMiCitIT01FUEFHRSA9ICJodHRwOi8vdXNlcndlYi5rZXJuZWwub3JnL35remFrL3V0aWwtbGludXgvIgogREVTQ1JJUFRJT04gPSAiVXRpbC1saW51eCBpbmNsdWRlcyBhIHN1aXRlIG9mIGJhc2ljIHN5c3RlbSBhZG1pbmlzdHJhdGlvbiB1dGlsaXRpZXMgXAogY29tbW9ubHkgZm91bmQgb24gbW9zdCBMaW51eCBzeXN0ZW1zLiAgU29tZSBvZiB0aGUgbW9yZSBpbXBvcnRhbnQgdXRpbGl0aWVzIGluY2x1ZGUgXAogZGlzayBwYXJ0aXRpb25pbmcsIGtlcm5lbCBtZXNzYWdlIG1hbmFnZW1lbnQsIGZpbGVzeXN0ZW0gY3JlYXRpb24sIGFuZCBzeXN0ZW0gbG9naW4uIgpAQCAtMzMsOSArMzQsMTAgQEAKICAgICAgICAgICAgICB1dGlsLWxpbnV4LWJsa2lkIHV0aWwtbGludXgtbWtmcyB1dGlsLWxpbnV4LW1jb29raWUgdXRpbC1saW51eC1yZXNldCBcCiAgICAgICAgICAgICAgdXRpbC1saW51eC1sc2JsayB1dGlsLWxpbnV4LW1rZnMuY3JhbWZzIHV0aWwtbGludXgtZnN0cmltIFwKICAgICAgICAgICAgICB1dGlsLWxpbnV4LXBhcnR4IHV0aWwtbGludXgtaHdjbG9jayB1dGlsLWxpbnV4LW1vdW50cG9pbnQgXAotICAgICAgICAgICAgIHV0aWwtbGludXgtZmluZGZzIHV0aWwtbGludXgtZ2V0b3B0IHV0aWwtbGludXgtc3Vsb2dpbiB1dGlsLWxpbnV4LXBybGltaXQiCisgICAgICAgICAgICAgdXRpbC1saW51eC1maW5kZnMgdXRpbC1saW51eC1nZXRvcHQgdXRpbC1saW51eC1zdWxvZ2luIHV0aWwtbGludXgtcHJsaW1pdCBcCisgICAgICAgICAgICAgdXRpbC1saW51eC1pb25pY2UgdXRpbC1saW51eC1zd2l0Y2gtcm9vdCIKIFBBQ0tBR0VTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweWxpYm1vdW50JywgJ3V0aWwtbGludXgtcHlsaWJtb3VudCcsICcnLCBkKX0iCi1QQUNLQUdFUyA9KyAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAndXRpbC1saW51eC1ydW51c2VyJywgJycsIGQpfSIKK1BBQ0tBR0VTID0rICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICd1dGlsLWxpbnV4LXJ1bnVzZXIgdXRpbC1saW51eC1zdScsICcnLCBkKX0iCiAKIFBBQ0tBR0VTX0RZTkFNSUMgPSAiXnV0aWwtbGludXgtbGliLioiCiAKQEAgLTkxLDYgKzkzLDkgQEAKIEZJTEVTX3V0aWwtbGludXgtZ2V0b3B0ID0gIiR7YmFzZV9iaW5kaXJ9L2dldG9wdC4ke0JQTn0iCiBGSUxFU191dGlsLWxpbnV4LXJ1bnVzZXIgPSAiJHtzYmluZGlyfS9ydW51c2VyIgogRklMRVNfdXRpbC1saW51eC1wcmxpbWl0ID0gIiR7YmluZGlyfS9wcmxpbWl0IgorRklMRVNfdXRpbC1saW51eC1pb25pY2UgPSAiJHtiaW5kaXJ9L2lvbmljZSIKK0ZJTEVTX3V0aWwtbGludXgtc3UgPSAiJHtiaW5kaXJ9L3N1LnV0aWwtbGludXggJHtzeXNjb25mZGlyfS9wYW0uZC9zdS1sIgorQ09ORkZJTEVTX3V0aWwtbGludXgtc3UgPSAiJHtzeXNjb25mZGlyfS9wYW0uZC9zdS1sIgogCiBGSUxFU191dGlsLWxpbnV4LXB5bGlibW91bnQgPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vbGlibW91bnQvcHlsaWJtb3VudC5zbyBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vbGlibW91bnQvX19pbml0X18uKiBcCkBAIC0xMDcsNiArMTEyLDggQEAKIEZJTEVTX3V0aWwtbGludXgtc3Vsb2dpbiA9ICIke2Jhc2Vfc2JpbmRpcn0vc3Vsb2dpbioiCiBGSUxFU191dGlsLWxpbnV4LW1vdW50cG9pbnQgPSAiJHtiYXNlX2JpbmRpcn0vbW91bnRwb2ludC4ke0JQTn0iCiAKK0ZJTEVTX3V0aWwtbGludXgtc3dpdGNoLXJvb3QgPSAiJHtiYXNlX3NiaW5kaXJ9L3N3aXRjaF9yb290LiR7QlBOfSIKKwogIyBVdGlsLWxpbnV4JyBibGtpZCByZXBsYWNlcyB0aGUgZTJmc3Byb2dzIG9uZQogRklMRVNfdXRpbC1saW51eC1ibGtpZCA9ICIke2Jhc2Vfc2JpbmRpcn0vYmxraWQqIgogUkNPTkZMSUNUU191dGlsLWxpbnV4LWJsa2lkID0gImUyZnNwcm9ncy1ibGtpZCIKQEAgLTExNiwxMSArMTIzLDEyIEBACiBSREVQRU5EU191dGlsLWxpbnV4LXJlc2V0ICs9ICJuY3Vyc2VzIgogCiBSREVQRU5EU191dGlsLWxpbnV4LXJ1bnVzZXIgKz0gImxpYnBhbSIKK1JERVBFTkRTX3V0aWwtbGludXgtc3UgKz0gImxpYnBhbSIKIAogUkRFUEVORFNfJHtQTn0gPSAidXRpbC1saW51eC11bW91bnQgdXRpbC1saW51eC1zd2Fwb25vZmYgdXRpbC1saW51eC1sb3NldHVwIHV0aWwtbGludXgtc3Vsb2dpbiB1dGlsLWxpbnV4LWxzYmxrIgotUkRFUEVORFNfJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ3V0aWwtbGludXgtcnVudXNlcicsICcnLCBkKX0iCitSREVQRU5EU18ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAndXRpbC1saW51eC1ydW51c2VyIHV0aWwtbGludXgtc3UnLCAnJywgZCl9IgogCi1SUkVDT01NRU5EU18ke1BOfSA9ICJ1dGlsLWxpbnV4LWZkaXNrIHV0aWwtbGludXgtY2ZkaXNrIHV0aWwtbGludXgtc2ZkaXNrIHV0aWwtbGludXgtbW91bnQgdXRpbC1saW51eC1yZWFkcHJvZmlsZSB1dGlsLWxpbnV4LW1rZnMgdXRpbC1saW51eC1tb3VudHBvaW50IHV0aWwtbGludXgtcHJsaW1pdCIKK1JSRUNPTU1FTkRTXyR7UE59ID0gInV0aWwtbGludXgtZmRpc2sgdXRpbC1saW51eC1jZmRpc2sgdXRpbC1saW51eC1zZmRpc2sgdXRpbC1saW51eC1tb3VudCB1dGlsLWxpbnV4LXJlYWRwcm9maWxlIHV0aWwtbGludXgtbWtmcyB1dGlsLWxpbnV4LW1vdW50cG9pbnQgdXRpbC1saW51eC1wcmxpbWl0IHV0aWwtbGludXgtaW9uaWNlIHV0aWwtbGludXgtc3dpdGNoLXJvb3QiCiAKIFJSRUNPTU1FTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCiBSUkVDT01NRU5EU18ke1BOfV9jbGFzcy1uYXRpdmVzZGsgPSAiIgpAQCAtMTgyLDYgKzE5MCwxMiBAQAogCQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9ydW51c2VyLnBhbWQgJHtEfSR7c3lzY29uZmRpcn0vcGFtLmQvcnVudXNlcgogCQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9ydW51c2VyLWwucGFtZCAke0R9JHtzeXNjb25mZGlyfS9wYW0uZC9ydW51c2VyLWwKIAlmaQorCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignUEFDS0FHRUNPTkZJRycsICdwYW0nLCBkKX0iIF07IHRoZW4KKwkJIyBSZXF1aXJlZCBmb3IgInN1IC0iIGFrYSAic3UgLS1sb2dpbiIgYmVjYXVzZQorCQkjIG90aGVyd2lzZSBpdCB1c2VzICJvdGhlciIsIHdoaWNoIGhhcyAiYXV0aCBwYW1fZGVueS5zbyIKKwkJIyBhbmQgdGh1cyBwcmV2ZW50cyB0aGUgb3BlcmF0aW9uLgorCQlsbiAtcyBzdSAke0R9JHtzeXNjb25mZGlyfS9wYW0uZC9zdS1sCisJZmkKIH0KIAogIyByZXNldCBhbmQgbm9sb2dpbiBjYXVzZXMgYSBjb25mbGljdCB3aXRoIG5jdXJzZXMtbmF0aXZlIGFuZCBzaGFkb3ctbmF0aXZlCkBAIC0yOTAsNyArMzA0LDcgQEAKIH0KIAogUkRFUEVORFNfJHtQTn0tYmFzaC1jb21wbGV0aW9uICs9ICJ1dGlsLWxpbnV4LWxzYmxrIgotUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiYmFzaCBncmVwIGNvcmV1dGlscyIKK1JERVBFTkRTXyR7UE59LXB0ZXN0ID0gImJhc2ggZ3JlcCBjb3JldXRpbHMgd2hpY2ggdXRpbC1saW51eC1ibGtpZCB1dGlsLWxpbnV4LWZzY2sgYnRyZnMtdG9vbHMiCiAKIGRvX2NvbXBpbGVfcHRlc3QoKSB7CiAgICAgb2VfcnVubWFrZSBidWlsZHRlc3QtVEVTVFMKQEAgLTI5OCwyMyArMzEyLDMwIEBACiAKIGRvX2luc3RhbGxfcHRlc3QoKSB7CiAgICAgbWtkaXIgLXAgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvdHMKLSAgICBmaW5kIC4gLW1heGRlcHRoIDEgLXR5cGUgZiAtcGVybSAtMTExIC1leGVjIGNwIHt9ICR7RH0ke1BURVNUX1BBVEh9IFw7Ci0gICAgY3AgJHtTfS90ZXN0cy9mdW5jdGlvbnMuc2ggJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvCi0gICAgY3AgJHtTfS90ZXN0cy9jb21tYW5kcy5zaCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8KLSAgICBjcCAke1N9L3Rlc3RzL3J1bi5zaCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8KLSAgICBjcCAtcFIgJHtTfS90ZXN0cy9leHBlY3RlZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9leHBlY3RlZAorICAgIGZpbmQgLiAtbmFtZSAndGVzdConIC1tYXhkZXB0aCAxIC10eXBlIGYgLXBlcm0gLTExMSAtZXhlYyBjcCB7fSAke0R9JHtQVEVTVF9QQVRIfSBcOworICAgIGZpbmQgLi8ubGlicyAtbmFtZSAnc2FtcGxlKicgLW1heGRlcHRoIDEgLXR5cGUgZiAtcGVybSAtMTExIC1leGVjIGNwIHt9ICR7RH0ke1BURVNUX1BBVEh9IFw7CisgICAgZmluZCAuLy5saWJzIC1uYW1lICd0ZXN0KicgLW1heGRlcHRoIDEgLXR5cGUgZiAtcGVybSAtMTExIC1leGVjIGNwIHt9ICR7RH0ke1BURVNUX1BBVEh9IFw7CiAKLSAgICBsaXN0PSJiaXRvcHMgYnVpbGQtc3lzIGNhbCBjb2wgY29scm0gY29sdW1uIGRtZXNnIGZzY2sgaGV4ZHVtcCBod2Nsb2NrIGlwY3MgaXNvc2l6ZSBsb2dpbiBsb29rIG1kNSBtaXNjIG1vcmUgbmFtZWkgcGF0aHMgc2NoZWR1dGlscyBzY3JpcHQgc3dhcG9uIHRhaWxmIgotICAgICMgVGhlIGZvbGxvd2luZyB0ZXN0cyBhcmUgbm90IGluc3RhbGxlZCAgeWV0OgotICAgICMgYmxraWQgc2NzaV9kZWJ1ZyBtb2R1bGUgZGVwZW5kZW50Ci0gICAgIyBjcmFtZnMgZ2NjIGRlcGVuZGVudAotICAgICMgZWplY3QgZ2NjIGRlcGVuZGVudAotICAgICMgZmRpc2sgc2NzaV9kZWJ1ZyBtb2R1bGUgYW5kIGdjYyBkZXBlbmRlbnQKLSAgICAjIGxzY3B1IGdjYyBkZXBlbmRhbnQKLSAgICAjIGxpYm1vdW50IHV1aWRnZW4gZGVwZW5kZW50Ci0gICAgIyBtb3VudCBnY2MgZGVwZW5kYW50Ci0gICAgIyBwYXJ0eCBibGtpZCBkZXBlbmRhbnQKLSAgICBmb3IgZCBpbiAkbGlzdDsgZG8KLSAgICAgICAgY3AgLXBSICR7U30vdGVzdHMvdHMvJGQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvdHMvCi0gICAgZG9uZQorICAgIGNwICR7U30vdGVzdHMvKi5zaCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8KKyAgICBjcCAtcFIgJHtTfS90ZXN0cy9leHBlY3RlZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9leHBlY3RlZAorICAgIGNwIC1wUiAke1N9L3Rlc3RzL3RzICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLworICAgIGNwICR7V09SS0RJUn0vYnVpbGQvY29uZmlnLmggJHtEfSR7UFRFU1RfUEFUSH0KKworICAgICMgVGhlIG9yaWdpbmFsIHBhdGhzIG9mIGV4ZWN1dGFibGVzIHRvIGJlIHRlc3RlZCBwb2ludCB0byBhIGxvY2FsIGZvbGRlciBjb250YWluaW5nCisgICAgIyB0aGUgZXhlY3V0YWJsZXMuIFdlIHdhbnQgdG8gdGVzdCB0aGUgaW5zdGFsbGVkIGV4ZWN1dGFibGVzLCBub3QgdGhlIGxvY2FsIGNvcGllcy4KKyAgICAjIFNvIHN0cmlwIHRoZSBwYXRocywgdGhlIGV4ZWN1dGFibGVzIHdpbGwgYmUgbG9jYXRlZCB2aWEgIndoaWNoIgorICAgIHNlZCAgLWkgXAorICAgICAgICAgLWUgJy9eVFNfQ01ELyBzfCR0b3BfYnVpbGRkaXIvfHxnJyBcCisgICAgICAgICAtZSAnL15UU19IRUxQRVIvIHN8JHRvcF9idWlsZGRpcnwke1BURVNUX1BBVEh9fGcnIFwKKyAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL2NvbW1hbmRzLnNoCisKKyAgICAjIENoYW5nZSAnaWYgWyAhIC14ICIkMSIgXScgdG8gJ2lmIFsgISAteCAiYHdoaWNoICQxIDI+L2Rldi9udWxsYCJdJworICAgIHNlZCAtaSAtZSBcCisgICAgICAgICcvXlx0aWZbWzpzcGFjZTpdXVxbW1s6c3BhY2U6XV0hW1s6c3BhY2U6XV0teFtbOnNwYWNlOl1dIiQxIi9zfCQxfGB3aGljaCAkMSAyPi9kZXYvbnVsbGB8ZycgXAorICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvZnVuY3Rpb25zLnNoCisKKyAgICAjICJraWxsIC1MIiBiZWhhdmVzIGRpZmZlcmVudGx5IHRoYW4gIi9iaW4va2lsbCAtTCIgc28gd2UgbmVlZCBhbiBhZGRpdGlvbmFsIGZpeAorICAgIHNlZCAtaSAtZSBcCisgICAgICAgICAnL15UU19DTURfS0lMTC8gc3xraWxsfC9iaW4va2lsbHxnJyBcCisgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9jb21tYW5kcy5zaAogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC9ub19nZXRyYW5kb20ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4L25vX2dldHJhbmRvbS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOWZhMWNhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC9ub19nZXRyYW5kb20ucGF0Y2gKQEAgLTAsMCArMSwyMSBAQAorZ2V0cmFuZG9tKCkgaXMgb25seSBhdmFpbGFibGUgaW4gZ2xpYmMgMi4yNSsgYW5kIHVuaW5hdGl2ZSBtYXkgcmVsb2NhdGUgCitiaW5hcmllcyBvbnRvIHN5c3RlbXMgdGhhdCBkb24ndCBoYXZlIHRoaXMgZnVuY3Rpb24uIEZvciBub3csIGZvcmNlIHRoZSAKK2NvZGUgdG8gdGhlIG9sZGVyIGNvZGVwYXRoIHVudGlsIHdlIGNhbiBjb21lIHVwIHdpdGggYSBiZXR0ZXIgc29sdXRpb24gCitmb3IgdGhpcyBraW5kIG9mIGlzc3VlLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKK1JQCisyMDE2LzgvMTUKKworSW5kZXg6IHV0aWwtbGludXgtMi4zMC9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSB1dGlsLWxpbnV4LTIuMzAub3JpZy9jb25maWd1cmUuYWMKKysrKyB1dGlsLWxpbnV4LTIuMzAvY29uZmlndXJlLmFjCitAQCAtMzk5LDcgKzM5OSw2IEBAIEFDX0NIRUNLX0ZVTkNTKFsgXAorIAlnZXRkdGFibGVzaXplIFwKKyAJZ2V0ZXhlY25hbWUgXAorIAlnZXRtbnRpbmZvIFwKKy0JZ2V0cmFuZG9tIFwKKyAJZ2V0cmxpbWl0IFwKKyAJZ2V0c2duYW0gXAorIAlpbm90aWZ5X2luaXQgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC91dWlkLXRlc3QtZXJyb3ItYXBpLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC91dWlkLXRlc3QtZXJyb3ItYXBpLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNmZkZTVkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXgvdXVpZC10ZXN0LWVycm9yLWFwaS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLVRoaXMgcGF0Y2ggYWRkcyBlcnJvcigpIEFQSSBpbXBsZW1lbnRhdGlvbiBmb3Igbm9uLWdsaWJjIHN5c3RlbSBDIGxpYnMKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi0tLS0KLSBtaXNjLXV0aWxzL3Rlc3RfdXVpZGQuYyB8IDYyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgNjEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbWlzYy11dGlscy90ZXN0X3V1aWRkLmMgYi9taXNjLXV0aWxzL3Rlc3RfdXVpZGQuYwotaW5kZXggMzZmM2IzZC4uN2Q1NzljZSAxMDA2NDQKLS0tLSBhL21pc2MtdXRpbHMvdGVzdF91dWlkZC5jCi0rKysgYi9taXNjLXV0aWxzL3Rlc3RfdXVpZGQuYwotQEAgLTIzLDcgKzIzLDYgQEAKLSAgKgotICAqCW1ha2UgdXVpZGQgdXVpZGdlbiBsb2NhbHN0YXRlZGlyPS92YXIKLSAgKi8KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSAjaW5jbHVkZSA8cHRocmVhZC5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLUBAIC0zOCw2ICszNywxNyBAQAotICNpbmNsdWRlICJ4YWxsb2MuaCIKLSAjaW5jbHVkZSAic3RydXRpbHMuaCIKLSAKLSsjaWZkZWYgX19HTElCQ19fCi0rI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2Vsc2UKLStleHRlcm4gdm9pZCAoKmVycm9yX3ByaW50X3Byb2duYW1lKSh2b2lkKTsKLStleHRlcm4gdW5zaWduZWQgaW50IGVycm9yX21lc3NhZ2VfY291bnQ7Ci0rZXh0ZXJuIGludCBlcnJvcl9vbmVfcGVyX2xpbmU7Ci0rCi0rdm9pZCBlcnJvcihpbnQsIGludCwgY29uc3QgY2hhciAqLCAuLi4pOwotK3ZvaWQgZXJyb3JfYXRfbGluZShpbnQsIGludCwgY29uc3QgY2hhciAqLCB1bnNpZ25lZCBpbnQsIGNvbnN0IGNoYXIgKiwgLi4uKTsKLSsjZW5kaWYKLSsKLSAjZGVmaW5lIExPRyhsZXZlbCxhcmdzKSBpZiAobG9nbGV2ID49IGxldmVsKSB7IGZwcmludGYgYXJnczsgfQotIAotIHNpemVfdCBucHJvY2Vzc2VzID0gNDsKLUBAIC0yNTYsNiArMjY2LDU2IEBAIHN0YXRpYyB2b2lkIG9iamVjdF9kdW1wKHNpemVfdCBpZHgsIG9iamVjdF90ICpvYmopCi0gCWZwcmludGYoc3RkZXJyLCAifVxuIik7Ci0gfQotIAotKyNpZm5kZWYgX19HTElCQ19fCi0rZXh0ZXJuIGNoYXIgKl9fcHJvZ25hbWU7Ci0rCi0rdm9pZCAoKmVycm9yX3ByaW50X3Byb2duYW1lKSh2b2lkKSA9IDA7Ci0rdW5zaWduZWQgaW50IGVycm9yX21lc3NhZ2VfY291bnQgPSAwOwotK2ludCBlcnJvcl9vbmVfcGVyX2xpbmUgPSAwOwotKwotK3N0YXRpYyB2b2lkIGVwcmludChpbnQgc3RhdHVzLCBpbnQgZSwgY29uc3QgY2hhciAqZmlsZSwgdW5zaWduZWQgaW50IGxpbmUsIGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCBhcCkKLSt7Ci0rCWlmIChmaWxlICYmIGVycm9yX29uZV9wZXJfbGluZSkgewotKwkJc3RhdGljIGNvbnN0IGNoYXIgKm9sZGZpbGU7Ci0rCQlzdGF0aWMgdW5zaWduZWQgaW50IG9sZGxpbmU7Ci0rCQlpZiAobGluZSA9PSBvbGRsaW5lICYmIHN0cmNtcChmaWxlLCBvbGRmaWxlKSA9PSAwKQotKwkJCXJldHVybjsKLSsJCW9sZGZpbGUgPSBmaWxlOwotKwkJb2xkbGluZSA9IGxpbmU7Ci0rCX0KLSsJaWYgKGVycm9yX3ByaW50X3Byb2duYW1lKQotKwkJZXJyb3JfcHJpbnRfcHJvZ25hbWUoKTsKLSsJZWxzZQotKwkJZnByaW50ZihzdGRlcnIsICIlczogIiwgX19wcm9nbmFtZSk7Ci0rCWlmIChmaWxlKQotKwkJZnByaW50ZihzdGRlcnIsICIlczoldTogIiwgZmlsZSwgbGluZSk7Ci0rCXZmcHJpbnRmKHN0ZGVyciwgZm10LCBhcCk7Ci0rCWlmIChlKQotKwkJZnByaW50ZihzdGRlcnIsICI6ICVzIiwgc3RyZXJyb3IoZSkpOwotKwlwdXRjKCdcbicsIHN0ZGVycik7Ci0rCWZmbHVzaChzdGRlcnIpOwotKwllcnJvcl9tZXNzYWdlX2NvdW50Kys7Ci0rCWlmIChzdGF0dXMpCi0rCQlleGl0KHN0YXR1cyk7Ci0rfQotKwotK3ZvaWQgZXJyb3IoaW50IHN0YXR1cywgaW50IGUsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQotK3sKLSsJdmFfbGlzdCBhcDsKLSsJdmFfc3RhcnQoYXAsZm10KTsKLSsJZXByaW50KHN0YXR1cywgZSwgMCwgMCwgZm10LCBhcCk7Ci0rCXZhX2VuZChhcCk7Ci0rfQotKwotK3ZvaWQgZXJyb3JfYXRfbGluZShpbnQgc3RhdHVzLCBpbnQgZSwgY29uc3QgY2hhciAqZmlsZSwgdW5zaWduZWQgaW50IGxpbmUsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQotK3sKLSsJdmFfbGlzdCBhcDsKLSsJdmFfc3RhcnQoYXAsZm10KTsKLSsJZXByaW50KHN0YXR1cywgZSwgZmlsZSwgbGluZSwgZm10LCBhcCk7Ci0rCXZhX2VuZChhcCk7Ci0rfQotKyNlbmRpZiAvKiBfX0dMSUJDX18gKi8KLSsKLSBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQotIHsKLSAJc2l6ZV90IGksIG5mYWlsZWQgPSAwLCBuaWdub3JlZCA9IDA7Ci0tLSAKLTIuOC4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXhfMi4yOS4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eF8yLjI5LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzOTViNDcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eF8yLjI5LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1NQUpPUl9WRVJTSU9OID0gIjIuMjkiCi1yZXF1aXJlIHV0aWwtbGludXguaW5jCi0KLSMgVG8gc3VwcG9ydCBvbGRlciBob3N0cywgd2UgbmVlZCB0byBwYXRjaCBhbmQvb3IgcmV2ZXJ0Ci0jIHNvbWUgdXBzdHJlYW0gY2hhbmdlcy4gIE9ubHkgZG8gdGhpcyBmb3IgbmF0aXZlIHBhY2thZ2VzLgotT0xESE9TVCA9ICIiCi1PTERIT1NUX2NsYXNzLW5hdGl2ZSA9ICJmaWxlOi8vdXRpbC1saW51eC1uYXRpdmUtcXNvcnQucGF0Y2giCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9jb25maWd1cmUtc2JpbmRpci5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcnVudXNlci5wYW1kIFwKLSAgICAgICAgICAgIGZpbGU6Ly9ydW51c2VyLWwucGFtZCBcCi0gICAgICAgICAgICAke09MREhPU1R9IFwKLSAgICAgICAgICAgIGZpbGU6Ly9wdGVzdC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgIGZpbGU6Ly9kaXNwbGF5X3Rlc3RuYW1lX2Zvcl9zdWJ0ZXN0LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9hdm9pZF9wYXJhbGxlbF90ZXN0cy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vdXVpZC10ZXN0LWVycm9yLWFwaS5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiMGNiYjZkMTZhYjljNTczNmU1NjQ5ZWYxMjY0YmVlNmUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGNlNDA2MDBiOTM0ZWMyZmVjZmE2YmZjNGVmZTY5ODJkMDUxYmE5NmMyODMyYjA1MjAxMzQ3YWVjNTgyZjU0ZiIKLQotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gInNjYW5mX2N2X2FsbG9jX21vZGlmaWVyPW1zIgotCi1FWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIiR7U0hBUkVEX0VYVFJBX09FQ09ORn0gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWRpc2FibGUtZmFsbG9jYXRlIFwKLQkJCSAgICAgLS1kaXNhYmxlLXVzZS10dHktZ3JvdXAgXAotIgotRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZXNkayA9ICIke1NIQVJFRF9FWFRSQV9PRUNPTkZ9IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWZhbGxvY2F0ZSBcCi0JCQkJLS1kaXNhYmxlLXVzZS10dHktZ3JvdXAgXAotIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eF8yLjMwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eF8yLjMwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5NDQ5ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4XzIuMzAuYmIKQEAgLTAsMCArMSwzMSBAQAorTUFKT1JfVkVSU0lPTiA9ICIyLjMwIgorcmVxdWlyZSB1dGlsLWxpbnV4LmluYworCisjIFRvIHN1cHBvcnQgb2xkZXIgaG9zdHMsIHdlIG5lZWQgdG8gcGF0Y2ggYW5kL29yIHJldmVydAorIyBzb21lIHVwc3RyZWFtIGNoYW5nZXMuICBPbmx5IGRvIHRoaXMgZm9yIG5hdGl2ZSBwYWNrYWdlcy4KK09MREhPU1QgPSAiIgorT0xESE9TVF9jbGFzcy1uYXRpdmUgPSAiZmlsZTovL3V0aWwtbGludXgtbmF0aXZlLXFzb3J0LnBhdGNoIgorCitTUkNfVVJJICs9ICJmaWxlOi8vY29uZmlndXJlLXNiaW5kaXIucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3J1bnVzZXIucGFtZCBcCisgICAgICAgICAgICBmaWxlOi8vcnVudXNlci1sLnBhbWQgXAorICAgICAgICAgICAgJHtPTERIT1NUfSBcCisgICAgICAgICAgICBmaWxlOi8vcHRlc3QucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgICBmaWxlOi8vZGlzcGxheV90ZXN0bmFtZV9mb3Jfc3VidGVzdC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vYXZvaWRfcGFyYWxsZWxfdGVzdHMucGF0Y2ggXAorIgorU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vbm9fZ2V0cmFuZG9tLnBhdGNoIgorU1JDX1VSSVttZDVzdW1dID0gImVhYTM0MjkxNTAyNjgwMjc5MDhhMWI4YWU2ZWU5YTYyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImMyMDhhNGZmNjkwNmNiN2Y1Nzk0MGFhNWJjM2E2ZWVkMTQ2ZTUwYTdjYzBhMDkyZjUyZWYyYWI2NTA1N2EwOGQiCisKK0NBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJzY2FuZl9jdl9hbGxvY19tb2RpZmllcj1tcyIKKworRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICIke1NIQVJFRF9FWFRSQV9PRUNPTkZ9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWZhbGxvY2F0ZSBcCisJCQkgICAgIC0tZGlzYWJsZS11c2UtdHR5LWdyb3VwIFwKKyIKK0VYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmVzZGsgPSAiJHtTSEFSRURfRVhUUkFfT0VDT05GfSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1mYWxsb2NhdGUgXAorCQkJCS0tZGlzYWJsZS11c2UtdHR5LWdyb3VwIFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtY29yZS96bGliL3psaWJfMS4yLjExLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3psaWIvemxpYl8xLjIuMTEuYmIKaW5kZXggYmEyMTZmNi4uNjQxMDUxOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3psaWIvemxpYl8xLjIuMTEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3psaWIvemxpYl8xLjIuMTEuYmIKQEAgLTQ1LDYgKzQ1LDExIEBACiAJaW5zdGFsbCAke0J9L21pbmlnemlwICAgJHtEfSR7UFRFU1RfUEFUSH0KIAlpbnN0YWxsICR7Qn0vZXhhbXBsZXNoICAke0R9JHtQVEVTVF9QQVRIfQogCWluc3RhbGwgJHtCfS9taW5pZ3ppcHNoICR7RH0ke1BURVNUX1BBVEh9CisKKwkjIFJlbW92ZSBidWlsZGhvc3QgcmVmZXJlbmNlcy4uLgorCXNlZCAtaSAtZSAicywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnIiBcCisJCS1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKKwkgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKIH0KIAogIyBNb3ZlIHpsaWIgc2hhcmVkIGxpYnJhcmllcyBmb3IgdGFyZ2V0IGJ1aWxkcyB0byAkYmFzZV9saWJkaXIgc28gdGhlIGxpYnJhcnkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC1uYXRpdmVfMS4yLjEyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0LW5hdGl2ZV8xLjIuMTIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlNjYwZGEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0LW5hdGl2ZV8xLjIuMTIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLXJlcXVpcmUgYXB0LW5hdGl2ZS5pbmMKLQotU1JDX1VSSSArPSAiZmlsZTovL25vY29uZmlndXJlLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9uby1jdXJsLnBhdGNoIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0LW5hdGl2ZV8xLjIuMjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQtbmF0aXZlXzEuMi4yNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YjE2YjUwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0LW5hdGl2ZV8xLjIuMjQuYmIKQEAgLTAsMCArMSw3IEBACityZXF1aXJlIGFwdC1uYXRpdmUuaW5jCisKK1NSQ19VUkkgKz0gImZpbGU6Ly9ub2NvbmZpZ3VyZS5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vbm8tY3VybC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vZ2NjXzQueF9hcHQtcGtnLWNvbnRyaWItc3RydXRsLmNjLUluY2x1ZGUtYXJyYXktaGVhZGVyLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9nY2NfNC54X1JldmVydC1hdm9pZC1jaGFuZ2luZy10aGUtZ2xvYmFsLUxDX1RJTUUtZm9yLVJlbGVhc2UucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2djY180LnhfUmV2ZXJ0LXVzZS1kZS1sb2NhbGVkLXN0ZC1wdXRfdGltZS1pbnN0ZWFkLXJvbGxpbmctby5wYXRjaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQuaW5jCmluZGV4IDMwMjYzNzAuLmYxY2RlMzAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0LmluYwpAQCAtMiw3ICsyLDcgQEAKIExJQ0VOU0UgPSAiR1BMdjIuMCsiCiBTRUNUSU9OID0gImJhc2UiCiAKLVNSQ19VUkkgPSAiaHR0cDovL3NuYXBzaG90LmRlYmlhbi5vcmcvYXJjaGl2ZS9kZWJpYW4vMjAxNjA1MjZUMTYyOTQzWi9wb29sL21haW4vYS8ke0JQTn0vJHtCUE59XyR7UFZ9LnRhci54eiBcCitTUkNfVVJJID0gImh0dHA6Ly9hcmNoaXZlLnVidW50dS5jb20vdWJ1bnR1L3Bvb2wvbWFpbi9hLyR7QlBOfS8ke0JQTn1fJHtQVn0udGFyLnh6IFwKICAgICAgICAgICAgZmlsZTovL3VzZS1ob3N0LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL21ha2VyYWNlLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL25vLW5scy1kcGtnLnBhdGNoIFwKQEAgLTE0LDkgKzE0LDkgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtZW52aXJvbm1lbnQubWFrLW11c2wtYmFzZWQtc3lzdGVtcy1jYW4tZ2VuZXJhdGUtc2hhci5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWFwdC0xLjIuMTItRml4LW11c2wtYnVpbGQucGF0Y2ggXAogICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiODBmNmYwZWYxMTBhNDVhN2U1YWY4YTlkMjMzZmIwZTciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTgyMGQyN2NiYTczNDc2ZGY0YWJjZmYyN2RhZGQxYjU4NDc0NzRiZmU4NWY3ZTkyMDJhOWEwNzUyNjk3M2VhNiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuR1BMO21kNT0wNjM2ZTczZmYwMjE1ZThkNjcyZGM0YzMyYzMxN2JiMyIKK1NSQ19VUklbbWQ1c3VtXSA9ICJjZThmOWFiMTFmNGZkMGEwOGVjNzNlYWZmZDc1YzhmMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmYTEzMTFhOWNlMDBlNzIzNzlhMGEzYmM2ZDI0MGJhMzBjMDk2OGNmYmJiMzQ3Mjg1OWU1MGI5OWUyNGU5NTk4IgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5HUEw7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgogCiAjIHRoZSBwYWNrYWdlIGlzIHRha2VuIGZyb20gc25hcHNob3RzLmRlYmlhbi5vcmc7IHRoYXQgc291cmNlIGlzIHN0YXRpYyBhbmQgZ29lcyBzdGFsZQogIyBzbyB3ZSBjaGVjayB0aGUgbGF0ZXN0IHVwc3RyZWFtIGZyb20gYSBkaXJlY3RvcnkgdGhhdCBkb2VzIGdldCB1cGRhdGVkCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQvMDAwMS1SZXZlcnQtYWx3YXlzLXJ1bi1kcGtnLWNvbmZpZ3VyZS1hLWF0LXRoZS1lbmQtb2Ytb3VyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0LzAwMDEtUmV2ZXJ0LWFsd2F5cy1ydW4tZHBrZy1jb25maWd1cmUtYS1hdC10aGUtZW5kLW9mLW91ci5wYXRjaAppbmRleCBiM2E4ODNiLi43MzRiYTAwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQvMDAwMS1SZXZlcnQtYWx3YXlzLXJ1bi1kcGtnLWNvbmZpZ3VyZS1hLWF0LXRoZS1lbmQtb2Ytb3VyLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC8wMDAxLVJldmVydC1hbHdheXMtcnVuLWRwa2ctY29uZmlndXJlLWEtYXQtdGhlLWVuZC1vZi1vdXIucGF0Y2gKQEAgLTIyLDEwICsyMiwxMCBAQAogIDMgZmlsZXMgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9hcHQtcGtnL2RlYi9kcGtncG0uY2MgYi9hcHQtcGtnL2RlYi9kcGtncG0uY2MKLWluZGV4IDgzNGNiMGUuLjg0ZGVkM2EgMTAwNjQ0CitpbmRleCA1MzNkOWIzNjcuLjZjZTgxYmJkOSAxMDA2NDQKIC0tLSBhL2FwdC1wa2cvZGViL2Rwa2dwbS5jYwogKysrIGIvYXB0LXBrZy9kZWIvZHBrZ3BtLmNjCi1AQCAtMTAzNywxMiArMTAzNyw2IEBAIHZvaWQgcGtnRFBrZ1BNOjpCdWlsZFBhY2thZ2VzUHJvZ3Jlc3NNYXAoKQorQEAgLTEwNDEsMTIgKzEwNDEsNiBAQCB2b2lkIHBrZ0RQa2dQTTo6QnVpbGRQYWNrYWdlc1Byb2dyZXNzTWFwKCkKICAJIFBhY2thZ2VzVG90YWwrKzsKICAgICAgICB9CiAgICAgfQpAQCAtMzgsNyArMzgsNyBAQAogIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKn19fSovCiAgYm9vbCBwa2dEUGtnUE06OkdvKGludCBTdGF0dXNGZCkKLUBAIC0xMjUwLDggKzEyNDQsOSBAQCBib29sIHBrZ0RQa2dQTTo6R28oQVBUOjpQcm9ncmVzczo6UGFja2FnZU1hbmFnZXIgKnByb2dyZXNzKQorQEAgLTEyNjgsOCArMTI2Miw5IEBAIGJvb2wgcGtnRFBrZ1BNOjpHbyhBUFQ6OlByb2dyZXNzOjpQYWNrYWdlTWFuYWdlciAqcHJvZ3Jlc3MpCiAgCiAgICAgLy8gc3VwcG9ydCBzdWJwcmVzc2luZyBvZiB0cmlnZ2VycyBwcm9jZXNzaW5nIGZvciBzcGVjaWFsCiAgICAgLy8gY2FzZXMgbGlrZSBkLWkgdGhhdCBydW5zIHRoZSB0cmlnZ2VycyBoYW5kbGluZyBtYW51YWxseQpAQCAtNTAsNyArNTAsNyBAQAogIAogICAgIC8vIGZvciB0aGUgcHJvZ3Jlc3MKIGRpZmYgLS1naXQgYS90ZXN0L2ludGVncmF0aW9uL3Rlc3QtYXB0LXByb2dyZXNzLWZkLWRlYjgyMiBiL3Rlc3QvaW50ZWdyYXRpb24vdGVzdC1hcHQtcHJvZ3Jlc3MtZmQtZGViODIyCi1pbmRleCA1OGZkNzMyLi4zMzU5NzYyIDEwMDc1NQoraW5kZXggYThkNTk2MDhkLi4wYzZhOWJiYmYgMTAwNzU1CiAtLS0gYS90ZXN0L2ludGVncmF0aW9uL3Rlc3QtYXB0LXByb2dyZXNzLWZkLWRlYjgyMgogKysrIGIvdGVzdC9pbnRlZ3JhdGlvbi90ZXN0LWFwdC1wcm9ncmVzcy1mZC1kZWI4MjIKIEBAIC0yNywzNiArMjcsMzYgQEAgTWVzc2FnZTogSW5zdGFsbGluZyB0ZXN0aW5nIChhbWQ2NCkKQEAgLTY5LDE5ICs2OSwxOSBAQAogIAogIFN0YXR1czogcHJvZ3Jlc3MKICBQYWNrYWdlOiB0ZXN0aW5nOmFtZDY0Ci0tUGVyY2VudDogNTAKLStQZXJjZW50OiA2MAorLVBlcmNlbnQ6IDUwLjAwMDAKKytQZXJjZW50OiA2MC4wMDAwCiAgTWVzc2FnZTogUHJlcGFyaW5nIHRvIGNvbmZpZ3VyZSB0ZXN0aW5nIChhbWQ2NCkKICAKICBTdGF0dXM6IHByb2dyZXNzCi0tUGVyY2VudDogNTAKLStQZXJjZW50OiA2MAorLVBlcmNlbnQ6IDUwLjAwMDAKKytQZXJjZW50OiA2MC4wMDAwCiAgTWVzc2FnZTogUnVubmluZyBkcGtnCiAgCiAgU3RhdHVzOiBwcm9ncmVzcwogIFBhY2thZ2U6IHRlc3Rpbmc6YW1kNjQKLS1QZXJjZW50OiA1MAotK1BlcmNlbnQ6IDYwCistUGVyY2VudDogNTAuMDAwMAorK1BlcmNlbnQ6IDYwLjAwMDAKICBNZXNzYWdlOiBDb25maWd1cmluZyB0ZXN0aW5nIChhbWQ2NCkKICAKICBTdGF0dXM6IHByb2dyZXNzCkBAIC05OCw3ICs5OCw3IEBACiAgCiAgU3RhdHVzOiBwcm9ncmVzcwogZGlmZiAtLWdpdCBhL3Rlc3QvaW50ZWdyYXRpb24vdGVzdC1uby1mZHMtbGVha2VkLXRvLW1haW50YWluZXItc2NyaXB0cyBiL3Rlc3QvaW50ZWdyYXRpb24vdGVzdC1uby1mZHMtbGVha2VkLXRvLW1haW50YWluZXItc2NyaXB0cwotaW5kZXggZDg2ZTYzOC4uZWY2ZDIzYiAxMDA3NTUKK2luZGV4IGQ4NmU2MzhjZC4uZWY2ZDIzYmUyIDEwMDc1NQogLS0tIGEvdGVzdC9pbnRlZ3JhdGlvbi90ZXN0LW5vLWZkcy1sZWFrZWQtdG8tbWFpbnRhaW5lci1zY3JpcHRzCiArKysgYi90ZXN0L2ludGVncmF0aW9uL3Rlc3Qtbm8tZmRzLWxlYWtlZC10by1tYWludGFpbmVyLXNjcmlwdHMKIEBAIC01OSw4ICs1OSw3IEBAIHN0YXJ0dXAgcGFja2FnZXMgY29uZmlndXJlCkBAIC0xMjIsNSArMTIyLDUgQEAKICBjaGVja3B1cmdlCiAgCiAtLSAKLTIuMS40CisyLjExLjAKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0LzAwMDEtYXB0LTEuMi4xMi1GaXgtbXVzbC1idWlsZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC8wMDAxLWFwdC0xLjIuMTItRml4LW11c2wtYnVpbGQucGF0Y2gKaW5kZXggMDRiMDQwNi4uZjdhYzE5YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0LzAwMDEtYXB0LTEuMi4xMi1GaXgtbXVzbC1idWlsZC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQvMDAwMS1hcHQtMS4yLjEyLUZpeC1tdXNsLWJ1aWxkLnBhdGNoCkBAIC0xMSw3ICsxMSw3IEBACiBhcHQtcGtnL2NvbnRyaWIvc3J2cmVjLmg6IEFkZCBleHBsaWNpdHkgaW5jbHVkZSBvZiBzeXMvdHlwZXMuaAogdG8gYXZvaWQgZXJyb3JzIGluIHR5cGVzIHVfaW50X1NJWkUuCiAKLVVwc3RyZWFtLXN0YXR1czogUGVuZGluZworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKIFNpZ25lZC1vZmYtYnk6IEFuw61iYWwgTGltw7NuIDxhbmliYWwubGltb25AbGludXguaW50ZWwuY29tPgogLS0tCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQvZ2NjXzQueF9SZXZlcnQtYXZvaWQtY2hhbmdpbmctdGhlLWdsb2JhbC1MQ19USU1FLWZvci1SZWxlYXNlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0L2djY180LnhfUmV2ZXJ0LWF2b2lkLWNoYW5naW5nLXRoZS1nbG9iYWwtTENfVElNRS1mb3ItUmVsZWFzZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MzhkZTIwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0L2djY180LnhfUmV2ZXJ0LWF2b2lkLWNoYW5naW5nLXRoZS1nbG9iYWwtTENfVElNRS1mb3ItUmVsZWFzZS5wYXRjaApAQCAtMCwwICsxLDgwIEBACitGcm9tIDdlZjJiMmRiYTBlMGJlZTQ1MGRhM2M4NDUwZWE3ODJhM2U3ZDY0MjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/QW49QzM9QURiYWw9MjBMaW09QzM9QjNuPz0gPGFuaWJhbC5saW1vbkBsaW51eC5pbnRlbC5jb20+CitEYXRlOiBUdWUsIDIyIEF1ZyAyMDE3IDExOjQ5OjAxIC0wNTAwCitTdWJqZWN0OiBbUEFUQ0ggMy8zXSBSZXZlcnQgImF2b2lkIGNoYW5naW5nIHRoZSBnbG9iYWwgTENfVElNRSBmb3IgUmVsZWFzZQorIHdyaXRpbmciCisKK1RoaXMgcmV2ZXJ0cyBjb21taXQgNzhlN2I2ODNjNjQ1ZTkwN2RiMTI2NTg0MDVhNGIyMDFhNjI0M2VhOC4KKworQWZ0ZXIgd2UgZHJvcCBkZWJpYW44IGFuZCBjZW50b3M3IHRoYXQgaGFzIGdjYyA8IDUgKHN0ZDo6cHV0X3RpbWUgbm90IGF2YWlsYWJsZSkgCit2ZXJzaW9ucyB0aGlzIHBhdGNoIGNhbiBiZSByZW1vdmUuCisKK1NpZ25lZC1vZmYtYnk6IEFuaWJhbCBMaW1vbiA8bGltb24uYW5pYmFsQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KKy0tLQorIGZ0cGFyY2hpdmUvd3JpdGVyLmNjIHwgMjkgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9mdHBhcmNoaXZlL3dyaXRlci5jYyBiL2Z0cGFyY2hpdmUvd3JpdGVyLmNjCitpbmRleCAyNTk2MzgyLi5lNDNhNjQzIDEwMDY0NAorLS0tIGEvZnRwYXJjaGl2ZS93cml0ZXIuY2MKKysrKyBiL2Z0cGFyY2hpdmUvd3JpdGVyLmNjCitAQCAtMzcsNyArMzcsNiBAQAorICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAjaW5jbHVkZSA8Y3RpbWU+CisgI2luY2x1ZGUgPGlvc3RyZWFtPgorLSNpbmNsdWRlIDxpb21hbmlwPgorICNpbmNsdWRlIDxzc3RyZWFtPgorICNpbmNsdWRlIDxtZW1vcnk+CisgI2luY2x1ZGUgPHV0aWxpdHk+CitAQCAtOTg0LDI5ICs5ODMsMzUgQEAgUmVsZWFzZVdyaXRlcjo6UmVsZWFzZVdyaXRlcihGaWxlRmQgKiBjb25zdCBHaXZlbk91dHB1dCwgc3RyaW5nIGNvbnN0ICYvKkRCKi8pIDoKKyAgICBBZGRQYXR0ZXJucyhfY29uZmlnLT5GaW5kVmVjdG9yKCJBUFQ6OkZUUEFyY2hpdmU6OlJlbGVhc2U6OlBhdHRlcm5zIikpOworIAorICAgIHRpbWVfdCBjb25zdCBub3cgPSB0aW1lKE5VTEwpOworLSAgIGF1dG8gY29uc3QgcG9zaXggPSBzdGQ6OmxvY2FsZSgiQy5VVEYtOCIpOworIAorLSAgIC8vIEZJWE1FOiB1c2UgVGltZVJGQzExMjMgaGVyZT8gQnV0IHRoYXQgdXNlcyBHTVQgdG8gc2F0aXNmeSBIVFRQLzEuMQorLSAgIHN0ZDo6b3N0cmluZ3N0cmVhbSBkYXRlc3RyOworLSAgIGRhdGVzdHIuaW1idWUocG9zaXgpOworLSAgIGRhdGVzdHIgPDwgc3RkOjpwdXRfdGltZShnbXRpbWUoJm5vdyksICIlYSwgJWQgJWIgJVkgJUg6JU06JVMgVVRDIik7CisrICAgc2V0bG9jYWxlKExDX1RJTUUsICJDIik7CisrCisrICAgY2hhciBkYXRlc3RyWzEyOF07CisrICAgaWYgKHN0cmZ0aW1lKGRhdGVzdHIsIHNpemVvZihkYXRlc3RyKSwgIiVhLCAlZCAlYiAlWSAlSDolTTolUyBVVEMiLAorKyAgICAgICAgICAgICAgICBnbXRpbWUoJm5vdykpID09IDApCisrICAgeworKyAgICAgIGRhdGVzdHJbMF0gPSAnXDAnOworKyAgIH0KKyAKKyAgICB0aW1lX3QgY29uc3QgdmFsaWR1bnRpbCA9IG5vdyArIF9jb25maWctPkZpbmRJKCJBUFQ6OkZUUEFyY2hpdmU6OlJlbGVhc2U6OlZhbGlkVGltZSIsIDApOworLSAgIHN0ZDo6b3N0cmluZ3N0cmVhbSB2YWxpZHN0cjsKKy0gICBpZiAodmFsaWR1bnRpbCAhPSBub3cpCisrICAgY2hhciB2YWxpZHN0clsxMjhdOworKyAgIGlmIChub3cgPT0gdmFsaWR1bnRpbCB8fAorKyAgICAgICBzdHJmdGltZSh2YWxpZHN0ciwgc2l6ZW9mKHZhbGlkc3RyKSwgIiVhLCAlZCAlYiAlWSAlSDolTTolUyBVVEMiLAorKyAgICAgICAgICAgICAgICBnbXRpbWUoJnZhbGlkdW50aWwpKSA9PSAwKQorICAgIHsKKy0gICAgICBkYXRlc3RyLmltYnVlKHBvc2l4KTsKKy0gICAgICB2YWxpZHN0ciA8PCBzdGQ6OnB1dF90aW1lKGdtdGltZSgmdmFsaWR1bnRpbCksICIlYSwgJWQgJWIgJVkgJUg6JU06JVMgVVRDIik7CisrICAgICAgdmFsaWRzdHJbMF0gPSAnXDAnOworICAgIH0KKyAKKysgICBzZXRsb2NhbGUoTENfVElNRSwgIiIpOworKworICAgIG1hcDxzdHJpbmcsc3RyaW5nPiBGaWVsZHM7CisgICAgRmllbGRzWyJPcmlnaW4iXSA9ICIiOworICAgIEZpZWxkc1siTGFiZWwiXSA9ICIiOworICAgIEZpZWxkc1siU3VpdGUiXSA9ICIiOworICAgIEZpZWxkc1siVmVyc2lvbiJdID0gIiI7CisgICAgRmllbGRzWyJDb2RlbmFtZSJdID0gIiI7CistICAgRmllbGRzWyJEYXRlIl0gPSBkYXRlc3RyLnN0cigpOworLSAgIEZpZWxkc1siVmFsaWQtVW50aWwiXSA9IHZhbGlkc3RyLnN0cigpOworKyAgIEZpZWxkc1siRGF0ZSJdID0gZGF0ZXN0cjsKKysgICBGaWVsZHNbIlZhbGlkLVVudGlsIl0gPSB2YWxpZHN0cjsKKyAgICBGaWVsZHNbIkFyY2hpdGVjdHVyZXMiXSA9ICIiOworICAgIEZpZWxkc1siQ29tcG9uZW50cyJdID0gIiI7CisgICAgRmllbGRzWyJEZXNjcmlwdGlvbiJdID0gIiI7CistLSAKKzIuMS40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC9nY2NfNC54X1JldmVydC11c2UtZGUtbG9jYWxlZC1zdGQtcHV0X3RpbWUtaW5zdGVhZC1yb2xsaW5nLW8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQvZ2NjXzQueF9SZXZlcnQtdXNlLWRlLWxvY2FsZWQtc3RkLXB1dF90aW1lLWluc3RlYWQtcm9sbGluZy1vLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4OGE2NmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHQvZ2NjXzQueF9SZXZlcnQtdXNlLWRlLWxvY2FsZWQtc3RkLXB1dF90aW1lLWluc3RlYWQtcm9sbGluZy1vLnBhdGNoCkBAIC0wLDAgKzEsNDYgQEAKK0Zyb20gYzcyZWY5YjZhZTgzYTBhMmZiYmVmZDVjMDUwMzM1ZjY1ZjBkMmJjOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9Bbj1DMz1BRGJhbD0yMExpbT1DMz1CM24/PSA8YW5pYmFsLmxpbW9uQGxpbnV4LmludGVsLmNvbT4KK0RhdGU6IFR1ZSwgMjIgQXVnIDIwMTcgMTE6NDg6NDYgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzNdIFJldmVydCAidXNlIGRlLWxvY2FsZWQgc3RkOjpwdXRfdGltZSBpbnN0ZWFkIHJvbGxpbmcgb3VyCisgb3duIgorCitUaGlzIHJldmVydHMgY29tbWl0IDRlZDJhMTdhYjQzMzRmMDE5YzAwNTEyYWE1NGExNjJmMGJmMDgzYzQuCisKK0FmdGVyIHdlIGRyb3AgZGViaWFuOCBhbmQgY2VudG9zNyB0aGF0IGhhcyBnY2MgPCA1IChzdGQ6OnB1dF90aW1lIG5vdCBhdmFpbGFibGUpIAordmVyc2lvbnMgdGhpcyBwYXRjaCBjYW4gYmUgcmVtb3ZlLgorCitTaWduZWQtb2ZmLWJ5OiBBbmliYWwgTGltb24gPGxpbW9uLmFuaWJhbEBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCistLS0KKyBhcHQtcGtnL2NvbnRyaWIvc3RydXRsLmNjIHwgMTQgKysrKysrKysrLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvYXB0LXBrZy9jb250cmliL3N0cnV0bC5jYyBiL2FwdC1wa2cvY29udHJpYi9zdHJ1dGwuY2MKK2luZGV4IGMyZmYwMWQuLmU5ZWYyYmUgMTAwNjQ0CistLS0gYS9hcHQtcGtnL2NvbnRyaWIvc3RydXRsLmNjCisrKysgYi9hcHQtcGtnL2NvbnRyaWIvc3RydXRsLmNjCitAQCAtNzYwLDExICs3NjAsMTUgQEAgc3RyaW5nIFRpbWVSRkMxMTIzKHRpbWVfdCBEYXRlKQorICAgIGlmIChnbXRpbWVfcigmRGF0ZSwgJkNvbnYpID09IE5VTEwpCisgICAgICAgcmV0dXJuICIiOworIAorLSAgIGF1dG8gY29uc3QgcG9zaXggPSBzdGQ6OmxvY2FsZTo6Y2xhc3NpYygpOworLSAgIHN0ZDo6b3N0cmluZ3N0cmVhbSBkYXRlc3RyOworLSAgIGRhdGVzdHIuaW1idWUocG9zaXgpOworLSAgIGRhdGVzdHIgPDwgc3RkOjpwdXRfdGltZSgmQ29udiwgIiVhLCAlZCAlYiAlWSAlSDolTTolUyBHTVQiKTsKKy0gICByZXR1cm4gZGF0ZXN0ci5zdHIoKTsKKysgICBjaGFyIEJ1ZlszMDBdOworKyAgIGNvbnN0IGNoYXIgKkRheVtdID0geyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQifTsKKysgICBjb25zdCBjaGFyICpNb250aFtdID0geyJKYW4iLCJGZWIiLCJNYXIiLCJBcHIiLCJNYXkiLCJKdW4iLCJKdWwiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJ9OworKworKyAgIHNucHJpbnRmKEJ1Ziwgc2l6ZW9mKEJ1ZiksICIlcywgJTAyaSAlcyAlaSAlMDJpOiUwMmk6JTAyaSBHTVQiLERheVtDb252LnRtX3dkYXldLAorKwkgICBDb252LnRtX21kYXksTW9udGhbQ29udi50bV9tb25dLENvbnYudG1feWVhcisxOTAwLENvbnYudG1faG91ciwKKysJICAgQ29udi50bV9taW4sQ29udi50bV9zZWMpOworKyAgIHJldHVybiBCdWY7CisgfQorIAkJCQkJCQkJCS8qfX19Ki8KKyAvLyBSZWFkTWVzc2FnZXMgLSBSZWFkIG1lc3NhZ2VzIGZyb20gdGhlIEZECQkJCS8qe3t7Ki8KKy0tIAorMi4xLjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0L2djY180LnhfYXB0LXBrZy1jb250cmliLXN0cnV0bC5jYy1JbmNsdWRlLWFycmF5LWhlYWRlci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC9nY2NfNC54X2FwdC1wa2ctY29udHJpYi1zdHJ1dGwuY2MtSW5jbHVkZS1hcnJheS1oZWFkZXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2IzMjU5MQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC9nY2NfNC54X2FwdC1wa2ctY29udHJpYi1zdHJ1dGwuY2MtSW5jbHVkZS1hcnJheS1oZWFkZXIucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSBmZjg1NjJmNzcyNGM0ZGI0YjgzNjM1YWY5ZTYyN2YzNDk1MjIyMzI3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5pYmFsIExpbW9uIDxsaW1vbi5hbmliYWxAZ21haWwuY29tPgorRGF0ZTogVHVlLCAyMiBBdWcgMjAxNyAwNDo0MTozMSAtMDUwMAorU3ViamVjdDogW1BBVENIIDEvM10gYXB0LXBrZy9jb250cmliL3N0cnV0bC5jYzogSW5jbHVkZSBhcnJheSBoZWFkZXIKKworSWYgR0NDIHZlcnNpb24gaXMgbGVzcyB0aGFuIDUgdGhlIGFycmF5IGhlYWRlciBuZWVkcyB0byBiZSBpbmNsdWRlZAordG8gc3VwcG9ydCBzdGQ6OmFycmF5LgorCitBZnRlciB3ZSBkcm9wIGRlYmlhbjggYW5kIGNlbnRvczcgdGhhdCBoYXMgZ2NjIDwgNSB2ZXJzaW9ucyB0aGlzIHBhdGNoCitjYW4gYmUgcmVtb3ZlLgorCitTaWduZWQtb2ZmLWJ5OiBBbmliYWwgTGltb24gPGxpbW9uLmFuaWJhbEBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCistLS0KKyBhcHQtcGtnL2NvbnRyaWIvc3RydXRsLmNjIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9hcHQtcGtnL2NvbnRyaWIvc3RydXRsLmNjIGIvYXB0LXBrZy9jb250cmliL3N0cnV0bC5jYworaW5kZXggNjBkMGNhOC4uYzJmZjAxZCAxMDA2NDQKKy0tLSBhL2FwdC1wa2cvY29udHJpYi9zdHJ1dGwuY2MKKysrKyBiL2FwdC1wa2cvY29udHJpYi9zdHJ1dGwuY2MKK0BAIC0yNyw2ICsyNyw3IEBACisgI2luY2x1ZGUgPHNzdHJlYW0+CisgI2luY2x1ZGUgPHN0cmluZz4KKyAjaW5jbHVkZSA8dmVjdG9yPgorKyNpbmNsdWRlIDxhcnJheT4KKyAKKyAjaW5jbHVkZSA8c3RkZGVmLmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorLS0gCisyLjEuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9hcHRfMS4yLjEyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0XzEuMi4yNC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0XzEuMi4xMi5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0XzEuMi4yNC5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvY29uZi1hcmNoaXZlL2F1dG9jb25mLWFyY2hpdmVfMjAxNi4wOS4xNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2NvbmYtYXJjaGl2ZS9hdXRvY29uZi1hcmNoaXZlXzIwMTYuMDkuMTYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTA0ZGMzOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2NvbmYtYXJjaGl2ZS9hdXRvY29uZi1hcmNoaXZlXzIwMTYuMDkuMTYuYmIKQEAgLTAsMCArMSwxNCBAQAorU1VNTUFSWSA9ICJhIGNvbGxlY3Rpb24gb2YgZnJlZWx5IHJlLXVzYWJsZSBBdXRvY29uZiBtYWNyb3MiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvYXV0b2NvbmYtYXJjaGl2ZS8iCitTRUNUSU9OID0gImRldmVsIgorTElDRU5TRSA9ICJHUEwtMy4wLXdpdGgtYXV0b2NvbmYtZXhjZXB0aW9uIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAorICAgIGZpbGU6Ly9DT1BZSU5HLkVYQ0VQVElPTjttZDU9ZmRlZjE2OGViZmYzYmMyZjEzNjY0YzM2NWE1ZmI1MTUiCisKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci54eiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJiZjE5ZDRjZGRjZTI2MGIzYzNlMWQ1MWQ0MjUwOTA3MSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlOGYyZWZkMjM1Zjg0MmJhZDJmNjkzOGJmNGE3MjI0MGE1ZTVmY2QyNDhlODQ0NDMzNWU2M2JlYjYwZmFiZDgyIgorCitpbmhlcml0IGF1dG90b29scworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9jb25mL2F1dG9jb25mLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2NvbmYvYXV0b2NvbmYuaW5jCmluZGV4IGYxYjJkZmMuLmVhNjJkZjggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2NvbmYvYXV0b2NvbmYuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2NvbmYvYXV0b2NvbmYuaW5jCkBAIC0xLDQgKzEsNCBAQAotU1VNTUFSWSA9ICJBIEdOVSB0b29sIHRoYXQgcHJvY3VkZSBzaGVsbCBzY3JpcHRzIHRvIGF1dG9tYXRpY2FsbHkgY29uZmlndXJlIHNvZnR3YXJlIgorU1VNTUFSWSA9ICJBIEdOVSB0b29sIHRoYXQgcHJvZHVjZSBzaGVsbCBzY3JpcHRzIHRvIGF1dG9tYXRpY2FsbHkgY29uZmlndXJlIHNvZnR3YXJlIgogREVTQ1JJUFRJT04gPSAiQXV0b2NvbmYgaXMgYW4gZXh0ZW5zaWJsZSBwYWNrYWdlIG9mIE00IG1hY3JvcyB0aGF0IHByb2R1Y2Ugc2hlbGwgc2NyaXB0cyB0byBhdXRvbWF0aWNhbGx5IFwgCiBjb25maWd1cmUgc29mdHdhcmUgc291cmNlIGNvZGUgcGFja2FnZXMuIEF1dG9jb25mIGNyZWF0ZXMgYSBjb25maWd1cmF0aW9uIHNjcmlwdCBmb3IgYSBwYWNrYWdlIGZyb20gYSB0ZW1wbGF0ZSBcCiBmaWxlIHRoYXQgbGlzdHMgdGhlIG9wZXJhdGluZyBzeXN0ZW0gZmVhdHVyZXMgdGhhdCB0aGUgcGFja2FnZSBjYW4gdXNlLCBpbiB0aGUgZm9ybSBvZiBNNCBtYWNybyBjYWxscy4iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9nZW4vYXV0b2dlbi1uYXRpdmVfNS4xOC4xMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2dlbi9hdXRvZ2VuLW5hdGl2ZV81LjE4LjEyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NTM0NzdjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2dlbi9hdXRvZ2VuLW5hdGl2ZV81LjE4LjEyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotU1VNTUFSWSA9ICJBdXRvbWF0ZWQgdGV4dCBhbmQgcHJvZ3JhbSBnZW5lcmF0aW9uIHRvb2wiCi1ERVNDUklQVElPTiA9ICJBdXRvR2VuIGlzIGEgdG9vbCBkZXNpZ25lZCB0byBzaW1wbGlmeSB0aGUgY3JlYXRpb24gYW5kXAotIG1haW50ZW5hbmNlIG9mIHByb2dyYW1zIHRoYXQgY29udGFpbiBsYXJnZSBhbW91bnRzIG9mIHJlcGV0aXRpb3VzIHRleHQuXAotIEl0IGlzIGVzcGVjaWFsbHkgdmFsdWFibGUgaW4gcHJvZ3JhbXMgdGhhdCBoYXZlIHNldmVyYWwgYmxvY2tzIG9mIHRleHRcCi0gdGhhdCBtdXN0IGJlIGtlcHQgc3luY2hyb25pemVkLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9hdXRvZ2VuLyIKLVNFQ1RJT04gPSAiZGV2ZWwiCi1MSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi0KLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9hdXRvZ2VuL3JlbCR7UFZ9L2F1dG9nZW4tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2luY3JlYXNlLXRpbWVvdXQtbGltaXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWstdHBsLWNvbmZpZy5zaC1mb3JjZS1leGl0LXZhbHVlLXRvLWJlLTAtaW4tc3VicHJvYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtc2NyaXB0LWVyci13aGVuLXByb2Nlc3NpbmctbGliZ3VpbGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWctbGlib3B0cy5tNC1yZWdlbmVyYXRlLWl0LWZyb20tY29uZmlnLWxpYm9wdHMuLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItYXV0b29wdHMtbWstdHBsLWNvbmZpZy5zaC1maXgtcGVybC1wYXRoLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjU1MWQxNWNjYmY1YjVmYzU2NThkYTM3NWQ1MDAzMzg5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjgwNWMyMDE4MmYzY2IwZWJmMTU3MWQzYjAxOTcyODUxYzU2ZmIzNDM0OGRmZGMzODc5OWZkMGVjM2IyYmFkYmUiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vZnRwLmdudS5vcmcvZ251L2F1dG9nZW4vIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAicmVsKD9QPHB2ZXI+XGQrKFwuXGQrKSspLyIKLQotREVQRU5EUyA9ICJndWlsZS1uYXRpdmUgbGlidG9vbC1uYXRpdmUgbGlieG1sMi1uYXRpdmUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gbmF0aXZlIHBrZ2NvbmZpZwotCi0jIGF1dG9nZW4tbmF0aXZlIGxpbmtzIGFnYWluc3QgbGliZ3VpbGUgd2hpY2ggbWF5IGhhdmUgYmVlbiByZWxvY2F0ZWQgd2l0aCBzc3RhdGUKLSMgdGhlc2UgZW52aXJvbm1lbnQgdmFyaWFibGVzIGVuc3VyZSB0aGVyZSBpc24ndCBhIHJlbG9jYXRpb24gaXNzdWUKLWV4cG9ydCBHVUlMRV9MT0FEX1BBVEggPSAiJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9ndWlsZS8yLjAiCi1leHBvcnQgR1VJTEVfTE9BRF9DT01QSUxFRF9QQVRIID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9ndWlsZS8yLjAvY2NhY2hlIgotCi1leHBvcnQgUE9TSVhfU0hFTEwgPSAiL3Vzci9iaW4vZW52IHNoIgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0JY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vYXV0b2dlbiBcCi0JCUdVSUxFX0xPQURfUEFUSD0ke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2d1aWxlLzIuMCBcCi0JCUdVSUxFX0xPQURfQ09NUElMRURfUEFUSD0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ3VpbGUvMi4wL2NjYWNoZQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvZ2VuL2F1dG9nZW4vMDAwMS1jb25maWctbGlib3B0cy5tNC1yZWdlbmVyYXRlLWl0LWZyb20tY29uZmlnLWxpYm9wdHMuLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvZ2VuL2F1dG9nZW4vMDAwMS1jb25maWctbGlib3B0cy5tNC1yZWdlbmVyYXRlLWl0LWZyb20tY29uZmlnLWxpYm9wdHMuLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMTQwMThlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2dlbi9hdXRvZ2VuLzAwMDEtY29uZmlnLWxpYm9wdHMubTQtcmVnZW5lcmF0ZS1pdC1mcm9tLWNvbmZpZy1saWJvcHRzLi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLUZyb20gNDUwNDBlN2QyNjgzMjllYmM0MGU2Y2IyMzdjNjRhNjYzN2NmYWI1YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotRGF0ZTogTW9uLCAxMyBNYXIgMjAxNyAyMDoyMjoxMCAtMDcwMAotU3ViamVjdDogW1BBVENIXSBjb25maWcvbGlib3B0cy5tNDogcmVnZW5lcmF0ZSBpdCBmcm9tIGNvbmZpZy9saWJvcHRzLmRlZgotCi1JdCB3YXMgb3V0IG9mIGRhdGUgY29tcGFyZWQgdG8gY29uZmlnL2xpYm9wdHMuZGVmLCBzbyByZWdlbmVyYXRlIGl0IHZpYQotImF1dG9nZW4gY29uZmlnL2xpYm9wdHMuZGVmIiBjb21tYW5kLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBjb25maWcvbGlib3B0cy5tNCB8IDMgKystCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlnL2xpYm9wdHMubTQgYi9jb25maWcvbGlib3B0cy5tNAotaW5kZXggYzdiYTRmMy4uNTFlNmEzOSAxMDA2NDQKLS0tLSBhL2NvbmZpZy9saWJvcHRzLm00Ci0rKysgYi9jb25maWcvbGlib3B0cy5tNAotQEAgLTIsNyArMiw3IEBAIGRubCAgLSotIGJ1ZmZlci1yZWFkLW9ubHk6IHQgLSotIHZpOiBzZXQgcm86Ci0gZG5sCi0gZG5sIERPIE5PVCBFRElUIFRISVMgRklMRSAgIChsaWJvcHRzLm00KQotIGRubAotLWRubCBJdCBoYXMgYmVlbiBBdXRvR2VuLWVkCi0rZG5sIEl0IGhhcyBiZWVuIEF1dG9HZW4tZWQgIE1hcmNoIDEzLCAyMDE3IGF0IDA4OjIxOjIxIFBNIGJ5IEF1dG9HZW4gNS4xOAotIGRubCBGcm9tIHRoZSBkZWZpbml0aW9ucyAgICBsaWJvcHRzLmRlZgotIGRubCBhbmQgdGhlIHRlbXBsYXRlIGZpbGUgICBjb25mdGVzdC50cGwKLSBkbmwKLUBAIC0xMTQsNiArMTE0LDcgQEAgQUNfREVGVU4oW0lOVk9LRV9MSUJPUFRTX01BQ1JPU19GSVJTVF0sWwotICAgQUNfUFJPR19TRUQKLSAgIFt3aGlsZSA6Ci0gICBkbwotKyAgICAgIHRlc3QgLXggIiRQT1NJWF9TSEVMTCIgJiYgYnJlYWsKLSAgICAgICBQT1NJWF9TSEVMTD1gd2hpY2ggYmFzaGAKLSAgICAgICB0ZXN0IC14ICIkUE9TSVhfU0hFTEwiICYmIGJyZWFrCi0gICAgICAgUE9TSVhfU0hFTEw9YHdoaWNoIGRhc2hgCi0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9nZW4vYXV0b2dlbi8wMDAyLWF1dG9vcHRzLW1rLXRwbC1jb25maWcuc2gtZml4LXBlcmwtcGF0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2dlbi9hdXRvZ2VuLzAwMDItYXV0b29wdHMtbWstdHBsLWNvbmZpZy5zaC1maXgtcGVybC1wYXRoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNWZlMTQzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2dlbi9hdXRvZ2VuLzAwMDItYXV0b29wdHMtbWstdHBsLWNvbmZpZy5zaC1maXgtcGVybC1wYXRoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotRnJvbSA5ZjY5ZjNmNWVmMjJiZjFiY2ZmYjBlNjUxZWZjMjYwODg5Y2ZhYTQ2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBNb24sIDEzIE1hciAyMDE3IDIwOjMzOjMwIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGF1dG9vcHRzL21rLXRwbC1jb25maWcuc2g6IGZpeCBwZXJsIHBhdGgKLQotVXNlICJ3aGljaCBwZXJsIiBhcyBzaGViYW5nIGRvZXNuJ3Qgd29yayB3aGVuIGl0IGlzIGxvbmdlciB0aGFuCi1CSU5QUk1fQlVGX1NJWkUgd2hpY2ggaXMgMTI4IHVzdWFsbHkuIFNvIHVzZSAiL3Vzci9iaW4vZW52IHBlcmwiIHRvCi1pbnN0ZWFkIG9mLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBhdXRvb3B0cy9tay10cGwtY29uZmlnLnNoIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvYXV0b29wdHMvbWstdHBsLWNvbmZpZy5zaCBiL2F1dG9vcHRzL21rLXRwbC1jb25maWcuc2gKLWluZGV4IDA5M2U4MDguLjhkZmM2ZGQgMTAwNzU1Ci0tLS0gYS9hdXRvb3B0cy9tay10cGwtY29uZmlnLnNoCi0rKysgYi9hdXRvb3B0cy9tay10cGwtY29uZmlnLnNoCi1AQCAtOTgsNyArOTgsNyBAQCBmaXhfc2NyaXB0cygpIHsKLSAgICAgICAgIHN0PWBzZWQgMXEgJGZgCi0gCi0gICAgICAgICBjYXNlICIkc3QiIGluCi0tICAgICAgICAqcGVybCApIGVjaG8gJyMhJyBgd2hpY2ggcGVybGAKLSsgICAgICAgICpwZXJsICkgZWNobyAnIyEvdXNyL2Jpbi9lbnYgcGVybCcKLSAgICAgICAgICAgICAgICAgIHNlZCAxZCAkZgotICAgICAgICAgICAgICAgICAgOzsKLSAKLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2dlbi9hdXRvZ2VuL2ZpeC1zY3JpcHQtZXJyLXdoZW4tcHJvY2Vzc2luZy1saWJndWlsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2dlbi9hdXRvZ2VuL2ZpeC1zY3JpcHQtZXJyLXdoZW4tcHJvY2Vzc2luZy1saWJndWlsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjk0YTM5NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9nZW4vYXV0b2dlbi9maXgtc2NyaXB0LWVyci13aGVuLXByb2Nlc3NpbmctbGliZ3VpbGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1hdXRvZ2VuLW5hdGl2ZTogZml4IHNjcmlwdCBlcnIgd2hlbiBwcm9jZXNzaW5nIGxpYmd1aWxlCi0KLWRvX2NvbmZpZ3VyZSBmb3IgYXV0b2dlbiB3aWxsIGZhaWwgaWYgcHJvamVjdCBkaXJlY3RvcnkgcGF0aAotY29udGFpbnMgJy1JJyBjaGFyYWN0ZXIsIHdoaWNoIGlzIGNhdXNlZCBieSB0aGUgdW5zdWl0YWJsZSBzZWQKLXNjcmlwdCB3aGVuIHByb2Nlc3NpbmcgbGliZ3VpbGUuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBaaGVuYm8gR2FvIDx6aGVuYm8uZ2FvQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+Ci0KLWRpZmYgLS1naXQgYS9jb25maWcvYWdfbWFjcm9zLm00IGIvY29uZmlnL2FnX21hY3Jvcy5tNAotaW5kZXggNTgxODZiNi4uNThlZDJhZCAxMDA2NDQKLS0tLSBhL2NvbmZpZy9hZ19tYWNyb3MubTQKLSsrKyBiL2NvbmZpZy9hZ19tYWNyb3MubTQKLUBAIC0zMiw3ICszMiw3IEBAIEFDX0RFRlVOKFtJTlZPS0VfQUdfTUFDUk9TX0xBU1RdLFsKLSAgIEdVSUxFX0ZMQUdTCi0gICBbYWdfZ3Y9YGdkaXI9XGBwa2ctY29uZmlnIC0tY2ZsYWdzLW9ubHktSSBcCi0gICBndWlsZS0ke0dVSUxFX0VGRkVDVElWRV9WRVJTSU9OfSB8IFwKLS0gIHNlZCAncy8tSSAqLy87cy8gKi1JLiovIC9nJ1xgCi0rICBzZWQgJ3MvICotSSAqXC8vIFwvL2cnXGAKLSAgIGZvciBkIGluICRnZGlyCi0gICBkbyAgdGVzdCAtZiAiJGQvbGliZ3VpbGUvdmVyc2lvbi5oIiAmJiBnZGlyPSRkICYmIGJyZWFrCi0gICBkb25lCi1kaWZmIC0tZ2l0IGEvY29uZmlnL21pc2MuZGVmIGIvY29uZmlnL21pc2MuZGVmCi1pbmRleCA0OTBkMzYxLi42ZTE4M2VmIDEwMDY0NAotLS0tIGEvY29uZmlnL21pc2MuZGVmCi0rKysgYi9jb25maWcvbWlzYy5kZWYKLUBAIC0zNDIsNyArMzQyLDcgQEAgZG8tYWx3YXlzID0gPDwtIF9FTkRfQUxXQVlTXwotIAlHVUlMRV9GTEFHUwotIAlbYWdfZ3Y9YGdkaXI9XGBwa2ctY29uZmlnIC0tY2ZsYWdzLW9ubHktSSBcCi0gCQkJZ3VpbGUtJHtHVUlMRV9FRkZFQ1RJVkVfVkVSU0lPTn0gfCBcCi0tCQkJc2VkICdzLy1JICovLztzLyAqLUkuKi8gL2cnXGAKLSsJCQlzZWQgJ3MvICotSSAqXC8vIFwvL2cnXGAKLSAJCXRlc3QgLXogIiRnZGlyIiAmJiBnZGlyPS91c3IvaW5jbHVkZQotIAkJZm9yIGQgaW4gJGdkaXIKLSAJCWRvICB0ZXN0IC1mICIkZC9saWJndWlsZS92ZXJzaW9uLmgiICYmIGdkaXI9JGQgJiYgYnJlYWsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2dlbi9hdXRvZ2VuL2luY3JlYXNlLXRpbWVvdXQtbGltaXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9nZW4vYXV0b2dlbi9pbmNyZWFzZS10aW1lb3V0LWxpbWl0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZWZkN2U1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2dlbi9hdXRvZ2VuL2luY3JlYXNlLXRpbWVvdXQtbGltaXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1TdWJqZWN0OiBbUEFUQ0hdIGF1dG9nZW46IGluY3JlYXNlIHRpbWVvdXQgbGltaXQgZm9yIHNoZWxsIGNvbW1hbmRzCi0KLU9uIHNvbWUgb3ZlcmxvYWRlZCBob3N0cywgc2hlbGwgY29tbWFuZHMgb2YgYXV0b2dlbiBtYXkgY2FuIG5vdAotZmluaXNoIGluIDUgc2Vjcy4gVGhpcyBoYXMgY2F1c2VkIG1hbnkgYnVpbGQgZmFpbHVyZXMsIHNvIGluY3JlYXNlCi10aGUgdGltZW91dCBsaW1pdCB0byBmaXggdGhpcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi1TaWduZWQtb2ZmLWJ5OiBYaW4gT3V5YW5nIDxYaW4uT3V5YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCAgICA2ICsrKy0tLQotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDU4YTg0OGIuLjE3MGRkOWUgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTE3OCw5ICsxNzgsOSBAQCB0aW1lX2RlbHRhPWBleHByICR7Y29uZmlnX2VuZF90aW1lfSAtICR7Y29uZmlnX3N0YXJ0X3RpbWV9IDI+L2Rldi9udWxsYAotIGlmIHRlc3QgLXogIiR7QUdfVElNRU9VVH0iCi0gdGhlbgotICAgaWYgdGVzdCAteiAiJHt0aW1lX2RlbHRhfSIKLS0gIHRoZW4gdGltZV9kZWx0YT0xMAotLSAgZWxpZiB0ZXN0ICR7dGltZV9kZWx0YX0gLWx0IDUKLS0gIHRoZW4gdGltZV9kZWx0YT01IDsgZmkKLSsgIHRoZW4gdGltZV9kZWx0YT02MAotKyAgZWxpZiB0ZXN0ICR7dGltZV9kZWx0YX0gLWx0IDMwCi0rICB0aGVuIHRpbWVfZGVsdGE9MzAgOyBmaQotIAotICAgQUdfVElNRU9VVD0ke3RpbWVfZGVsdGF9Ci0gZmkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2dlbi9hdXRvZ2VuL21rLXRwbC1jb25maWcuc2gtZm9yY2UtZXhpdC12YWx1ZS10by1iZS0wLWluLXN1YnByb2MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9nZW4vYXV0b2dlbi9tay10cGwtY29uZmlnLnNoLWZvcmNlLWV4aXQtdmFsdWUtdG8tYmUtMC1pbi1zdWJwcm9jLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTZkYTdiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2dlbi9hdXRvZ2VuL21rLXRwbC1jb25maWcuc2gtZm9yY2UtZXhpdC12YWx1ZS10by1iZS0wLWluLXN1YnByb2MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotbWstdHBsLWNvbmZpZy5zaDogZm9yY2UgZXhpdCB2YWx1ZSB0byBiZSAwIGluIHN1YnByb2Nlc3MKLQotVGhlIHJldHVybiB2YWx1ZSBvZiBzdGF0ZW1lbnQgbGlzdD1gPHN1YmNvbW1hbmRzPmAgaXMgdGhlIGV4aXQgdmFsdWUgb2YgdGhlCi1zdWJjb21tYW5kcy4gU28gaWYgdGhlIHN1YmNvbW1hbmRzIGZhaWxzLCB0aGUgY29tcGlsYXRpb24gZmFpbHMuIFRoaXMgaXMgb2J2aW91c2x5Ci1ub3QgaW50ZW5kZWQuIEluIHRoZSBub3JtYWwgY2FzZSwgd2UgZXhwZWN0IHRoZSBncmVwIGNvbW1hbmQgdG8gZmFpbCBhcyB0aGVyZSBzaG91bGQKLWJlIG5vICdub3JldHVybicgd29yZCBpbiB0aGUgbGliZ3VpbGUgZmlsZXMuCi0KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGF1dG9vcHRzL21rLXRwbC1jb25maWcuc2ggfCAgICAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9hdXRvb3B0cy9tay10cGwtY29uZmlnLnNoIGIvYXV0b29wdHMvbWstdHBsLWNvbmZpZy5zaAotaW5kZXggOTI2ZjVhYi4uNmI0YTBmYiAxMDA3NTUKLS0tLSBhL2F1dG9vcHRzL21rLXRwbC1jb25maWcuc2gKLSsrKyBiL2F1dG9vcHRzL21rLXRwbC1jb25maWcuc2gKLUBAIC0yMDIsNyArMjAyLDcgQEAgZml4X2d1aWxlKCkgewotIAotICAgICBsaXN0PWBzZXQgK2UgOyBleGVjIDI+L2Rldi9udWxsCi0gICAgICAgICBmaW5kICR7bGliZ3VpbGVkaXJ9L2xpYmd1aWxlKiAtdHlwZSBmIHwgXAotLSAgICAgICAgICAgIHhhcmdzIGdyZXAgLWwgLUUgJ1w8bm9yZXR1cm5cPidgCi0rICAgICAgICAgICAgeGFyZ3MgZ3JlcCAtbCAtRSAnXDxub3JldHVyblw+JyA7IGV4aXQgMGAKLSAKLSAgICAgdGVzdCAteiAiJGxpc3QiICYmIGV4aXQgMAotIAotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b21ha2UvYXV0b21ha2UvMDAwMS1hdXRvbWFrZS1BZGQtZGVmYXVsdC1saWJ0b29sX3RhZy10by1jcHBhc20ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9tYWtlL2F1dG9tYWtlLzAwMDEtYXV0b21ha2UtQWRkLWRlZmF1bHQtbGlidG9vbF90YWctdG8tY3BwYXNtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyMjFmMTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9tYWtlL2F1dG9tYWtlLzAwMDEtYXV0b21ha2UtQWRkLWRlZmF1bHQtbGlidG9vbF90YWctdG8tY3BwYXNtLnBhdGNoCkBAIC0wLDAgKzEsMjcgQEAKK0Zyb20gMjVhOGFjMzA0ODY3OThkMjNmNTE2NzIyZDczZWI2MjJlNjI2NGYyOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDI2IEp1bCAyMDE3IDExOjE5OjU2IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGF1dG9tYWtlOiBBZGQgZGVmYXVsdCBsaWJ0b29sX3RhZyB0byBjcHBhc20uCisKKyAgICAqIGJpbi9hdXRvbWFrZS5pbiAocmVnaXN0ZXJfbGFuZ3VhZ2UpOiBEZWZpbmUgZGVmYXVsdCBsaWJ0b29sIHRhZyB0byBiZSBDQworICAgIHNpbmNlIENQUEFTQ09NUElMRSBpcyB1c2luZyBDQyB0byBjYWxsIGFzc2VtYmxlcgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorCisgYmluL2F1dG9tYWtlLmluIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK0luZGV4OiBhdXRvbWFrZS0xLjE1LjEvYmluL2F1dG9tYWtlLmluCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYXV0b21ha2UtMS4xNS4xLm9yaWcvYmluL2F1dG9tYWtlLmluCisrKysgYXV0b21ha2UtMS4xNS4xL2Jpbi9hdXRvbWFrZS5pbgorQEAgLTgzMSw2ICs4MzEsNyBAQCByZWdpc3Rlcl9sYW5ndWFnZSAoJ25hbWUnID0+ICdjcHBhc20nLAorIAkJICAgJ2NvbXBpbGVyJyA9PiAnQ1BQQVNDT01QSUxFJywKKyAJCSAgICdjb21waWxlX2ZsYWcnID0+ICctYycsCisgCQkgICAnb3V0cHV0X2ZsYWcnID0+ICctbycsCisrCQkgICAnbGlidG9vbF90YWcnID0+ICdDQycsCisgCQkgICAnZXh0ZW5zaW9ucycgPT4gWycuUycsICcuc3gnXSk7CisgCisgIyBGb3J0cmFuIDc3CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9tYWtlL2F1dG9tYWtlLzAwMDEtYXV0b21ha2UtcG9ydC10by1QZXJsLTUuMjItYW5kLWxhdGVyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvbWFrZS9hdXRvbWFrZS8wMDAxLWF1dG9tYWtlLXBvcnQtdG8tUGVybC01LjIyLWFuZC1sYXRlci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGU2ODk1Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9tYWtlL2F1dG9tYWtlLzAwMDEtYXV0b21ha2UtcG9ydC10by1QZXJsLTUuMjItYW5kLWxhdGVyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotRnJvbSAxM2YwMGViNDQ5M2MyMTcyNjliNzY2MTQ3NTllNDUyZDgzMDI5NTVlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGF1bCBFZ2dlcnQgPGVnZ2VydEBjcy51Y2xhLmVkdT4KLURhdGU6IFRodSwgMzEgTWFyIDIwMTYgMTY6MzU6MjkgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gYXV0b21ha2U6IHBvcnQgdG8gUGVybCA1LjIyIGFuZCBsYXRlcgotCi1XaXRob3V0IHRoaXMgY2hhbmdlLCBQZXJsIDUuMjIgY29tcGxhaW5zICJVbmVzY2FwZWQgbGVmdCBicmFjZSBpbgotcmVnZXggaXMgZGVwcmVjYXRlZCIgYW5kIHRoaXMgaXMgcGxhbm5lZCB0byBiZWNvbWUgYSBoYXJkIGVycm9yIGluCi1QZXJsIDUuMjYuICBTZWU6Ci1odHRwOi8vc2VhcmNoLmNwYW4ub3JnL2Rpc3QvcGVybC01LjIyLjAvcG9kL3BlcmxkZWx0YS5wb2QjQV9saXRlcmFsXyUyMnslMjJfc2hvdWxkX25vd19iZV9lc2NhcGVkX2luX2FfcGF0dGVybgotKiBiaW4vYXV0b21ha2UuaW4gKHN1YnN0aXR1dGVfYWNfc3Vic3RfdmFyaWFibGVzKTogRXNjYXBlIGxlZnQgYnJhY2UuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgWzEzZjAwZWI0NDkzYzIxNzI2OWI3NjYxNDc1OWU0NTJkODMwMjk1NWVdCi0tLS0KLSBiaW4vYXV0b21ha2UuaW4gfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9iaW4vYXV0b21ha2UuaW4gYi9iaW4vYXV0b21ha2UuaW4KLWluZGV4IGEzYTBhYTMxOC4uMmM4ZjMxZTE0IDEwMDY0NAotLS0tIGEvYmluL2F1dG9tYWtlLmluCi0rKysgYi9iaW4vYXV0b21ha2UuaW4KLUBAIC0zODc4LDcgKzM4NzgsNyBAQCBzdWIgc3Vic3RpdHV0ZV9hY19zdWJzdF92YXJpYWJsZXNfd29ya2VyCi0gc3ViIHN1YnN0aXR1dGVfYWNfc3Vic3RfdmFyaWFibGVzCi0gewotICAgbXkgKCR0ZXh0KSA9IEBfOwotLSAgJHRleHQgPX4gcy9cJHsoW14gXHQ9Oit7fV0rKX0vc3Vic3RpdHV0ZV9hY19zdWJzdF92YXJpYWJsZXNfd29ya2VyICgkMSkvZ2U7Ci0rICAkdGV4dCA9fiBzL1wkW3tdKFteIFx0PTore31dKyl9L3N1YnN0aXR1dGVfYWNfc3Vic3RfdmFyaWFibGVzX3dvcmtlciAoJDEpL2dlOwotICAgcmV0dXJuICR0ZXh0OwotIH0KLSAKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b21ha2UvYXV0b21ha2VfMS4xNS4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvbWFrZS9hdXRvbWFrZV8xLjE1LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGY5YjYxNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b21ha2UvYXV0b21ha2VfMS4xNS4xLmJiCkBAIC0wLDAgKzEsNDMgQEAKK3JlcXVpcmUgYXV0b21ha2UuaW5jCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCitERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJhdXRvY29uZi1uYXRpdmUiCisKK05BTUVWRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKKworUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgICBhdXRvY29uZiBcCisgICAgcGVybCBcCisgICAgcGVybC1tb2R1bGUtYnl0ZXMgXAorICAgIHBlcmwtbW9kdWxlLWRhdGEtZHVtcGVyIFwKKyAgICBwZXJsLW1vZHVsZS1zdHJpY3QgXAorICAgIHBlcmwtbW9kdWxlLXRleHQtcGFyc2V3b3JkcyBcCisgICAgcGVybC1tb2R1bGUtdGhyZWFkLXF1ZXVlIFwKKyAgICBwZXJsLW1vZHVsZS10aHJlYWRzIFwKKyAgICBwZXJsLW1vZHVsZS12YXJzICIKKworUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gImF1dG9jb25mLW5hdGl2ZSBob3N0cGVybC1ydW50aW1lLW5hdGl2ZSIKK1JERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZXNkayA9ICJuYXRpdmVzZGstYXV0b2NvbmYiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly9weXRob24tbGliZGlyLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9idWlsZHRlc3QucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3BlcmZvcm1hbmNlLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9uZXdfcnRfcGF0aF9mb3JfdGVzdC1kcml2ZXIucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2F1dG9tYWtlLXJlcGxhY2Utdy1vcHRpb24taW4tc2hlYmFuZ3Mtd2l0aC1tb2Rlcm4tdXNlLXdhcm5pbmdzLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWF1dG9tYWtlLUFkZC1kZWZhdWx0LWxpYnRvb2xfdGFnLXRvLWNwcGFzbS5wYXRjaCBcCisgICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI5NWRmM2YyZDZlYjhmODFlNzBiOGNiNjNhOTNjODg1MyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5ODhlMzI1MjdhYmUwNTIzMDdkMjFjOGNhMDAwYWEyMzhiOTE0ZGYzNjNhNjE3ZTM4ZjRmYjg5ZjVhYmY2MjYwIgorCitQRVJMID0gIiR7VVNSQklOUEFUSH0vcGVybCIKK1BFUkxfY2xhc3MtbmF0aXZlID0gIiR7VVNSQklOUEFUSH0vZW52IHBlcmwiCitQRVJMX2NsYXNzLW5hdGl2ZXNkayA9ICIke1VTUkJJTlBBVEh9L2VudiBwZXJsIgorCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfcGF0aF9QRVJMPScke1BFUkx9JyIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0KK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvbWFrZS9hdXRvbWFrZV8xLjE1LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvbWFrZS9hdXRvbWFrZV8xLjE1LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MDJkZDYzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXV0b21ha2UvYXV0b21ha2VfMS4xNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLXJlcXVpcmUgYXV0b21ha2UuaW5jCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi1ERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJhdXRvY29uZi1uYXRpdmUiCi0KLU5BTUVWRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKLQotUkRFUEVORFNfJHtQTn0gKz0gIlwKLSAgICBhdXRvY29uZiBcCi0gICAgcGVybCBcCi0gICAgcGVybC1tb2R1bGUtYnl0ZXMgXAotICAgIHBlcmwtbW9kdWxlLWRhdGEtZHVtcGVyIFwKLSAgICBwZXJsLW1vZHVsZS1zdHJpY3QgXAotICAgIHBlcmwtbW9kdWxlLXRleHQtcGFyc2V3b3JkcyBcCi0gICAgcGVybC1tb2R1bGUtdGhyZWFkLXF1ZXVlIFwKLSAgICBwZXJsLW1vZHVsZS10aHJlYWRzIFwKLSAgICBwZXJsLW1vZHVsZS12YXJzICIKLQotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gImF1dG9jb25mLW5hdGl2ZSBob3N0cGVybC1ydW50aW1lLW5hdGl2ZSIKLVJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZXNkayA9ICJuYXRpdmVzZGstYXV0b2NvbmYiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9weXRob24tbGliZGlyLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9idWlsZHRlc3QucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3BlcmZvcm1hbmNlLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9uZXdfcnRfcGF0aF9mb3JfdGVzdC1kcml2ZXIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2F1dG9tYWtlLXJlcGxhY2Utdy1vcHRpb24taW4tc2hlYmFuZ3Mtd2l0aC1tb2Rlcm4tdXNlLXdhcm5pbmdzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWF1dG9tYWtlLXBvcnQtdG8tUGVybC01LjIyLWFuZC1sYXRlci5wYXRjaCBcCi0gICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3MTY5NDZhMTA1Y2EyMjhhYjU0NWZjMzdhNzBkZjNhMyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3OTQ2ZTk0NWE5NmUyODE1MmJhNWE2YmViMDYyNWNhNzE1YzZlMzJhYzU1ZjJlMzUzZWY1NGRlZjBjOGVkOTI0IgotCi1QRVJMID0gIiR7VVNSQklOUEFUSH0vcGVybCIKLVBFUkxfY2xhc3MtbmF0aXZlID0gIiR7VVNSQklOUEFUSH0vZW52IHBlcmwiCi1QRVJMX2NsYXNzLW5hdGl2ZXNkayA9ICIke1VTUkJJTlBBVEh9L2VudiBwZXJsIgotCi1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfcGF0aF9QRVJMPScke1BFUkx9JyIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0KLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy0yLjI4LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtMi4yOC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3ODRjNTIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy0yLjI4LmluYworKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLUxJQ19GSUxFU19DSEtTVU09IlwKLSAgICBmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTJcCi0gICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT05ZjYwNGQ4YTRmOGU3NGY0ZjUxNDA4NDVhMjFiNjY3NFwKLSAgICBmaWxlOi8vQ09QWUlORzM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0XAotICAgIGZpbGU6Ly9DT1BZSU5HMy5MSUI7bWQ1PTZhNmE4ZTAyMDgzOGIyMzQwNmM4MWIxOWMxZDQ2ZGY2XAotICAgIGZpbGU6Ly9nYXMvQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDRcCi0gICAgZmlsZTovL2luY2x1ZGUvQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTJcCi0gICAgZmlsZTovL2luY2x1ZGUvQ09QWUlORzM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0XAotICAgIGZpbGU6Ly9saWJpYmVydHkvQ09QWUlORy5MSUI7bWQ1PWE5MTY0NjdiOTEwNzZlNjMxZGQ4ZWRiNzQyNDc2OWM3XAotICAgIGZpbGU6Ly9iZmQvQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDRcCi0gICAgIgotCi1kZWYgYmludXRpbHNfYnJhbmNoX3ZlcnNpb24oZCk6Ci0gICAgcHZzcGxpdCA9IGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJykKLSAgICByZXR1cm4gcHZzcGxpdFswXSArICJfIiArIHB2c3BsaXRbMV0KLQotQklOVVBWID0gIiR7QGJpbnV0aWxzX2JyYW5jaF92ZXJzaW9uKGQpfSIKLQotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiYmludXRpbHMtKD9QPHB2ZXI+XGQrXyhcZF8/KSopIgotCi1TUkNSRVYgPSAiMzU0MTk5Yzc2OTJjMWJlZDUzYTJhMTVmMGU0ZDUzMTQ1N2U5NWYxNyIKLVNSQ19VUkkgPSAiXAotICAgICBnaXQ6Ly9zb3VyY2V3YXJlLm9yZy9naXQvYmludXRpbHMtZ2RiLmdpdDticmFuY2g9YmludXRpbHMtJHtCSU5VUFZ9LWJyYW5jaDtwcm90b2NvbD1naXQgXAotICAgICBmaWxlOi8vMDAwMy1ncHJvZi1hZGQtdWNsaWJjLXN1cHBvcnQtdG8tY29uZmlndXJlLnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMDQtUG9pbnQtc2NyaXB0cy1sb2NhdGlvbi10by1saWJkaXIucGF0Y2ggXAotICAgICBmaWxlOi8vMDAwNS1Pbmx5LWdlbmVyYXRlLWFuLVJQQVRILWVudHJ5LWlmLUxEX1JVTl9QQVRILWlzLW5vdC1lLnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMDYtRXhwbGljaXRseS1saW5rLXdpdGgtbGlibS1vbi11Y2xpYmMucGF0Y2ggXAotICAgICBmaWxlOi8vMDAwNy1Vc2UtbGlidG9vbC0yLjQucGF0Y2ggXAotICAgICBmaWxlOi8vMDAwOC1BZGQtdGhlLWFybXY1ZS1hcmNoaXRlY3R1cmUtdG8tYmludXRpbHMucGF0Y2ggXAotICAgICBmaWxlOi8vMDAwOS1kb24tdC1sZXQtdGhlLWRpc3Ryby1jb21waWxlci1wb2ludC10by10aGUtd3JvbmctaW5zLnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMTAtd2Fybi1mb3ItdXNlcy1vZi1zeXN0ZW0tZGlyZWN0b3JpZXMtd2hlbi1jcm9zcy1saW5raS5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDExLUZpeC1ycGF0aC1pbi1saWJ0b29sLXdoZW4tc3lzcm9vdC1pcy1lbmFibGVkLnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMTItQ2hhbmdlLWRlZmF1bHQtZW11bGF0aW9uLWZvci1taXBzNjQtbGludXgucGF0Y2ggXAotICAgICBmaWxlOi8vMDAxMy1BZGQtc3VwcG9ydC1mb3ItTmV0bG9naWMtWExQLnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMTQtZml4LXRoZS1pbmNvcnJlY3QtYXNzZW1ibGluZy1mb3ItcHBjLXdhaXQtbW5lbW9uaWMucGF0Y2ggXAotICAgICBmaWxlOi8vMDAxNS1zeW5jLXdpdGgtT0UtbGlidG9vbC1jaGFuZ2VzLnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMTYtRGV0ZWN0LTY0LWJpdC1NSVBTLXRhcmdldHMucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTctNjk2NS5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxNy02OTY2LnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMTctYmZkLUltcHJvdmUtbG9va3VwLW9mLWZpbGUtbGluZS1pbmZvcm1hdGlvbi1mb3ItZXJyby5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDE4LVBSLTIxNDA5LXNlZ2ZhdWx0LWluLV9iZmRfZHdhcmYyX2ZpbmRfbmVhcmVzdF9saW5lLnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE3LTY5NjkucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTctNjk2OV8yLnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE3LTcyMDkucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTctNzIxMC5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxNy03MjIzLnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE3LTc2MTQucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTctODM5My5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxNy04Mzk0LnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE3LTgzOTUucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTctODM5Nl84Mzk3LnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE3LTgzOTgucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTctODQyMS5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxNy05MDM4XzkwNDQucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTctOTAzOS5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxNy05MDQwXzkwNDIucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTctOTc0Mi5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxNy05NzQ0LnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE3LTk3NDUucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTctOTc0Ni5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxNy05NzQ3LnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE3LTk3NDgucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTctOTc0OS5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxNy05NzUwLnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE3LTk3NTEucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTctOTc1Mi5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxNy05NzUzLnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE3LTk3NTUucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTctOTc1Ni5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxNy05OTU0LnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE3LTk5NTVfMS5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxNy05OTU1XzIucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTctOTk1NV8zLnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE3LTk5NTVfNC5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxNy05OTU1XzUucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTctOTk1NV82LnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE3LTk5NTVfNy5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxNy05OTU1XzgucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTctOTk1NV85LnBhdGNoIFwKLSIKLVMgID0gIiR7V09SS0RJUn0vZ2l0IgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0gICAgICAgIHJtIC1yZiAke1N9L2dkYiAke1N9L2xpYmRlY251bWJlciAke1N9L3JlYWRsaW5lICR7U30vc2ltCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLTIuMjkuMS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLTIuMjkuMS5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDdhNzJlMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtMi4yOS4xLmluYwpAQCAtMCwwICsxLDQzIEBACitMSUNfRklMRVNfQ0hLU1VNPSJcCisgICAgZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyXAorICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9OWY2MDRkOGE0ZjhlNzRmNGY1MTQwODQ1YTIxYjY2NzRcCisgICAgZmlsZTovL0NPUFlJTkczO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNFwKKyAgICBmaWxlOi8vQ09QWUlORzMuTElCO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNlwKKyAgICBmaWxlOi8vZ2FzL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0XAorICAgIGZpbGU6Ly9pbmNsdWRlL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyXAorICAgIGZpbGU6Ly9pbmNsdWRlL0NPUFlJTkczO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNFwKKyAgICBmaWxlOi8vbGliaWJlcnR5L0NPUFlJTkcuTElCO21kNT1hOTE2NDY3YjkxMDc2ZTYzMWRkOGVkYjc0MjQ3NjljN1wKKyAgICBmaWxlOi8vYmZkL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0XAorICAgICIKKworZGVmIGJpbnV0aWxzX2JyYW5jaF92ZXJzaW9uKGQpOgorICAgIHB2c3BsaXQgPSBkLmdldFZhcignUFYnKS5zcGxpdCgnLicpCisgICAgcmV0dXJuIHB2c3BsaXRbMF0gKyAiXyIgKyBwdnNwbGl0WzFdCisKK0JJTlVQViA9ICIke0BiaW51dGlsc19icmFuY2hfdmVyc2lvbihkKX0iCisKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gImJpbnV0aWxzLSg/UDxwdmVyPlxkK18oXGRfPykqKSIKKworU1JDUkVWID89ICI5MDI3NmYxNTM3OWQzODA3NjFmYzQ5OWRhMmJhMjRjZmIzYzEyYTk0IgorQklOVVRJTFNfR0lUX1VSSSA/PSAiZ2l0Oi8vc291cmNld2FyZS5vcmcvZ2l0L2JpbnV0aWxzLWdkYi5naXQ7YnJhbmNoPWJpbnV0aWxzLSR7QklOVVBWfS1icmFuY2g7cHJvdG9jb2w9Z2l0IgorU1JDX1VSSSA9ICJcCisgICAgICR7QklOVVRJTFNfR0lUX1VSSX0gXAorICAgICBmaWxlOi8vMDAwMy1jb25maWd1cmUtd2lkZW4tdGhlLXJlZ2V4cC1mb3ItU0gtYXJjaGl0ZWN0dXJlcy5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDA0LVBvaW50LXNjcmlwdHMtbG9jYXRpb24tdG8tbGliZGlyLnBhdGNoIFwKKyAgICAgZmlsZTovLzAwMDUtT25seS1nZW5lcmF0ZS1hbi1SUEFUSC1lbnRyeS1pZi1MRF9SVU5fUEFUSC1pcy1ub3QtZS5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDA2LVVzZS1saWJ0b29sLTIuNC5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDA3LUFkZC10aGUtYXJtdjVlLWFyY2hpdGVjdHVyZS10by1iaW51dGlscy5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDA4LWRvbi10LWxldC10aGUtZGlzdHJvLWNvbXBpbGVyLXBvaW50LXRvLXRoZS13cm9uZy1pbnMucGF0Y2ggXAorICAgICBmaWxlOi8vMDAwOS13YXJuLWZvci11c2VzLW9mLXN5c3RlbS1kaXJlY3Rvcmllcy13aGVuLWNyb3NzLWxpbmtpLnBhdGNoIFwKKyAgICAgZmlsZTovLzAwMTAtRml4LXJwYXRoLWluLWxpYnRvb2wtd2hlbi1zeXNyb290LWlzLWVuYWJsZWQucGF0Y2ggXAorICAgICBmaWxlOi8vMDAxMS1DaGFuZ2UtZGVmYXVsdC1lbXVsYXRpb24tZm9yLW1pcHM2NC1saW51eC5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDEyLUFkZC1zdXBwb3J0LWZvci1OZXRsb2dpYy1YTFAucGF0Y2ggXAorICAgICBmaWxlOi8vMDAxMy1maXgtdGhlLWluY29ycmVjdC1hc3NlbWJsaW5nLWZvci1wcGMtd2FpdC1tbmVtb25pYy5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDE0LURldGVjdC02NC1iaXQtTUlQUy10YXJnZXRzLnBhdGNoIFwKKyAgICAgZmlsZTovLzAwMTUtc3luYy13aXRoLU9FLWxpYnRvb2wtY2hhbmdlcy5wYXRjaCBcCisiCitTICA9ICIke1dPUktESVJ9L2dpdCIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworICAgICAgICBybSAtcmYgJHtTfS9nZGIgJHtTfS9saWJkZWNudW1iZXIgJHtTfS9yZWFkbGluZSAke1N9L3NpbQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zcy1jYW5hZGlhbl8yLjI4LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zcy1jYW5hZGlhbl8yLjI5LjEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3MtY2FuYWRpYW5fMi4yOC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zcy1jYW5hZGlhbl8yLjI5LjEuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3NfMi4yOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3NfMi4yOS4xLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3NzXzIuMjguYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3NfMi4yOS4xLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3Nzc2RrXzIuMjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3Nzc2RrXzIuMjkuMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zc3Nka18yLjI4LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3Nzc2RrXzIuMjkuMS5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAxLWJpbnV0aWxzLWNyb3Nzc2RrLUdlbmVyYXRlLXJlbG9jYXRhYmxlLVNES3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDEtYmludXRpbHMtY3Jvc3NzZGstR2VuZXJhdGUtcmVsb2NhdGFibGUtU0RLcy5wYXRjaAppbmRleCA4ZmIxYjRlLi4wYjUxNWQ4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDEtYmludXRpbHMtY3Jvc3NzZGstR2VuZXJhdGUtcmVsb2NhdGFibGUtU0RLcy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDEtYmludXRpbHMtY3Jvc3NzZGstR2VuZXJhdGUtcmVsb2NhdGFibGUtU0RLcy5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gNjg5ZDAxMTY4OGI1ZmY5NDgxZDQzNjdiZWYzZGVhN2E3YjI4NjdmYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNThhYzlmOTVhM2Q4M2MyOWVmYWY3YTg5MDZmYjZhZWZlYThjOGU3OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6NTg6NTQgKzAwMDAKIFN1YmplY3Q6IFtQQVRDSCAwMS8xNV0gYmludXRpbHMtY3Jvc3NzZGs6IEdlbmVyYXRlIHJlbG9jYXRhYmxlIFNES3MKQEAgLTQzLDcgKzQzLDcgQEAKICBMRF9GTEFHPQogIERBVEFfQUxJR05NRU5UPSR7REFUQV9BTElHTk1FTlRffQogZGlmZiAtLWdpdCBhL2xkL3NjcmlwdHRlbXBsL2VsZi5zYyBiL2xkL3NjcmlwdHRlbXBsL2VsZi5zYwotaW5kZXggZTY1ZjlhM2NjZi4uZDk5ZDJjMWQyYSAxMDA2NDQKK2luZGV4IGQ5MTM4YmMwNTkuLmU0OGZhZWNhNDMgMTAwNjQ0CiAtLS0gYS9sZC9zY3JpcHR0ZW1wbC9lbGYuc2MKICsrKyBiL2xkL3NjcmlwdHRlbXBsL2VsZi5zYwogQEAgLTEzOCw4ICsxMzgsOCBAQCBpZiB0ZXN0IC16ICIkREFUQV9TRUdNRU5UX0FMSUdOIjsgdGhlbgpAQCAtNTgsNSArNTgsNSBAQAogIGlmIHRlc3QgLXogIiRQTFQiOyB0aGVuCiAgICBJUExUPSIuaXBsdCAgICAgICAgICR7UkVMT0NBVElORy0wfSA6IHsgKiguaXBsdCkgfSIKIC0tIAotMi4xMi4wCisyLjE0LjAKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAyLWJpbnV0aWxzLWNyb3NzLURvLW5vdC1nZW5lcmF0ZS1saW5rZXItc2NyaXB0LWRpcmVjdG8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDItYmludXRpbHMtY3Jvc3MtRG8tbm90LWdlbmVyYXRlLWxpbmtlci1zY3JpcHQtZGlyZWN0by5wYXRjaAppbmRleCAxNDI5OWZkLi4zNzAzMzNkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDItYmludXRpbHMtY3Jvc3MtRG8tbm90LWdlbmVyYXRlLWxpbmtlci1zY3JpcHQtZGlyZWN0by5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDItYmludXRpbHMtY3Jvc3MtRG8tbm90LWdlbmVyYXRlLWxpbmtlci1zY3JpcHQtZGlyZWN0by5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gN2M3ZGUxMDdiNGIwYTUwN2QyYWVjYTNlM2E4NmQwMWNiNGI1MTM2MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gOGY5MjljNjE2MjA4MzUxZDA5NzFkN2RmZDc1NzRkNDhkMzE0NDYwMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDYgTWFyIDIwMTcgMjM6Mzc6MDUgLTA4MDAKIFN1YmplY3Q6IFtQQVRDSCAwMi8xNV0gYmludXRpbHMtY3Jvc3M6IERvIG5vdCBnZW5lcmF0ZSBsaW5rZXIgc2NyaXB0CkBAIC01Nyw1ICs1Nyw1IEBACiAgICBsaWJzPSR7TkFUSVZFX0xJQl9ESVJTfQogICAgaWYgWyAieCR7TkFUSVZFfSIgPSAieHllcyIgXSA7IHRoZW4KIC0tIAotMi4xMi4wCisyLjE0LjAKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAzLWNvbmZpZ3VyZS13aWRlbi10aGUtcmVnZXhwLWZvci1TSC1hcmNoaXRlY3R1cmVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAzLWNvbmZpZ3VyZS13aWRlbi10aGUtcmVnZXhwLWZvci1TSC1hcmNoaXRlY3R1cmVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2YzA5Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDMtY29uZmlndXJlLXdpZGVuLXRoZS1yZWdleHAtZm9yLVNILWFyY2hpdGVjdHVyZXMucGF0Y2gKQEAgLTAsMCArMSw0NyBAQAorRnJvbSBlNWE4MDZhYWUwMmExMDI5MGM3MWRlYjcyZjYyOTRjOTgwNjgzNjhkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMTowNzozMyArMDAwMAorU3ViamVjdDogW1BBVENIIDAzLzE1XSBjb25maWd1cmU6IHdpZGVuIHRoZSByZWdleHAgZm9yIFNIIGFyY2hpdGVjdHVyZXMKKworZ3Byb2YgbmVlZHMgdG8ga25vdyBhYm91dCB1Y2xpYmMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBjb25maWd1cmUgICAgICAgfCAyICstCisgZ3Byb2YvY29uZmlndXJlIHwgNSArKysrKworIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKK2luZGV4IGJlOWRkODlkOWIuLmQ4YWYxNTVhYjUgMTAwNzU1CistLS0gYS9jb25maWd1cmUKKysrKyBiL2NvbmZpZ3VyZQorQEAgLTM4NDQsNyArMzg0NCw3IEBAIGNhc2UgIiR7dGFyZ2V0fSIgaW4KKyAgIG9yMWsqLSotKikKKyAgICAgbm9jb25maWdkaXJzPSIkbm9jb25maWdkaXJzIGdkYiIKKyAgICAgOzsKKy0gIHNoLSotKikKKysgIHNoKi0qLSogfCBzaDY0LSotKikKKyAgICAgY2FzZSAiJHt0YXJnZXR9IiBpbgorICAgICAgIHNoKi0qLWVsZikKKyAgICAgICAgICA7OworZGlmZiAtLWdpdCBhL2dwcm9mL2NvbmZpZ3VyZSBiL2dwcm9mL2NvbmZpZ3VyZQoraW5kZXggZTcxZmU4YjllNC4uNjc5ZTBkY2U3NyAxMDA3NTUKKy0tLSBhL2dwcm9mL2NvbmZpZ3VyZQorKysrIGIvZ3Byb2YvY29uZmlndXJlCitAQCAtNTg3NCw2ICs1ODc0LDExIEBAIGxpbnV4KiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSkKKyAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCisgICA7OworIAorK2xpbnV4LXVjbGliYyopCisrICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAorKyAgbHRfY3ZfZmlsZV9tYWdpY190ZXN0X2ZpbGU9YGVjaG8gL2xpYi9saWJ1Q2xpYmMtKi5zb2AKKysgIDs7CisrCisgbmV0YnNkKikKKyAgIGlmIGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgJEdSRVAgX19FTEZfXyA+IC9kZXYvbnVsbDsgdGhlbgorICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nbWF0Y2hfcGF0dGVybiAvbGliW14vXSsoXC5zb1wuWzAtOV0rXC5bMC05XSt8X3BpY1wuYSkkJworLS0gCisyLjE0LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAzLWdwcm9mLWFkZC11Y2xpYmMtc3VwcG9ydC10by1jb25maWd1cmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDMtZ3Byb2YtYWRkLXVjbGliYy1zdXBwb3J0LXRvLWNvbmZpZ3VyZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWRkYjQyYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDMtZ3Byb2YtYWRkLXVjbGliYy1zdXBwb3J0LXRvLWNvbmZpZ3VyZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUZyb20gNzg5M2QyYjI0ZDAzMDNiZGEzYTAwNDk4NDY0ODk2MTlmZmQxMzg3YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6MDc6MzMgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwMy8xNV0gZ3Byb2Y6IGFkZCB1Y2xpYmMgc3VwcG9ydCB0byBjb25maWd1cmUKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBncHJvZi9jb25maWd1cmUgfCA1ICsrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZ3Byb2YvY29uZmlndXJlIGIvZ3Byb2YvY29uZmlndXJlCi1pbmRleCA5ZTZiOGYzNTI1Li4zOGE0YzBiMGU1IDEwMDc1NQotLS0tIGEvZ3Byb2YvY29uZmlndXJlCi0rKysgYi9ncHJvZi9jb25maWd1cmUKLUBAIC01ODc0LDYgKzU4NzQsMTEgQEAgbGludXgqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQotICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKLSAgIDs7Ci0gCi0rbGludXgtdWNsaWJjKikKLSsgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCi0rICBsdF9jdl9maWxlX21hZ2ljX3Rlc3RfZmlsZT1gZWNobyAvbGliL2xpYnVDbGliYy0qLnNvYAotKyAgOzsKLSsKLSBuZXRic2QqKQotICAgaWYgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCAkR1JFUCBfX0VMRl9fID4gL2Rldi9udWxsOyB0aGVuCi0gICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdtYXRjaF9wYXR0ZXJuIC9saWJbXi9dKyhcLnNvXC5bMC05XStcLlswLTldK3xfcGljXC5hKSQnCi0tLSAKLTIuMTIuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDQtUG9pbnQtc2NyaXB0cy1sb2NhdGlvbi10by1saWJkaXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDQtUG9pbnQtc2NyaXB0cy1sb2NhdGlvbi10by1saWJkaXIucGF0Y2gKaW5kZXggYzZiOWRlNy4uMzhlZWUzMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA0LVBvaW50LXNjcmlwdHMtbG9jYXRpb24tdG8tbGliZGlyLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNC1Qb2ludC1zY3JpcHRzLWxvY2F0aW9uLXRvLWxpYmRpci5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gZTM0NjUwYzUwNTc0YThhMzlkNjk0NTY3ZWQ2MDdhNjMwMDZiNmY5OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMzYzNGVjMzU0N2JjMGY4YTVkMWI4YWQxNTM2NWUyZjgzNmNkYTY0MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6MDk6NTggKzAwMDAKIFN1YmplY3Q6IFtQQVRDSCAwNC8xNV0gUG9pbnQgc2NyaXB0cyBsb2NhdGlvbiB0byBsaWJkaXIKQEAgLTEyLDcgKzEyLDcgQEAKICAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2xkL01ha2VmaWxlLmFtIGIvbGQvTWFrZWZpbGUuYW0KLWluZGV4IDE1YmVhYTcwMjEuLmJiZjljNjcxZDggMTAwNjQ0CitpbmRleCA2MjUzNDdmZjYyLi5kNTMzNGQyNjgxIDEwMDY0NAogLS0tIGEvbGQvTWFrZWZpbGUuYW0KICsrKyBiL2xkL01ha2VmaWxlLmFtCiBAQCAtNTcsNyArNTcsNyBAQCBlbmRpZgpAQCAtMjUsMTAgKzI1LDEwIEBACiAgRU1VTCA9IEBFTVVMQAogIEVNVUxBVElPTl9PRklMRVMgPSBARU1VTEFUSU9OX09GSUxFU0AKIGRpZmYgLS1naXQgYS9sZC9NYWtlZmlsZS5pbiBiL2xkL01ha2VmaWxlLmluCi1pbmRleCAwNDJiNjkwZWQ2Li4zN2U3YjI1ZTlhIDEwMDY0NAoraW5kZXggYmEyNTE3NzdiMC4uYTJjZjIyODJiNSAxMDA2NDQKIC0tLSBhL2xkL01ha2VmaWxlLmluCiArKysgYi9sZC9NYWtlZmlsZS5pbgotQEAgLTQ1Miw3ICs0NTIsNyBAQCBBTV9DRkxBR1MgPSAkKFdBUk5fQ0ZMQUdTKSAkKEVMRl9DTEZBR1MpCitAQCAtNDQ2LDcgKzQ0Niw3IEBAIEFNX0NGTEFHUyA9ICQoV0FSTl9DRkxBR1MpICQoRUxGX0NMRkFHUykKICAjIFdlIHB1dCB0aGUgc2NyaXB0cyBpbiB0aGUgZGlyZWN0b3J5ICQoc2NyaXB0ZGlyKS9sZHNjcmlwdHMuCiAgIyBXZSBjYW4ndCBwdXQgdGhlIHNjcmlwdHMgaW4gJChkYXRhZGlyKSBiZWNhdXNlIHRoZSBTRUFSQ0hfRElSCiAgIyBkaXJlY3RpdmVzIG5lZWQgdG8gYmUgZGlmZmVyZW50IGZvciBuYXRpdmUgYW5kIGNyb3NzIGxpbmtlcnMuCkBAIC0zOCw1ICszOCw1IEBACiAgQkZERElSID0gJChCQVNFRElSKS9iZmQKICBJTkNESVIgPSAkKEJBU0VESVIpL2luY2x1ZGUKIC0tIAotMi4xMi4wCisyLjE0LjAKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA1LU9ubHktZ2VuZXJhdGUtYW4tUlBBVEgtZW50cnktaWYtTERfUlVOX1BBVEgtaXMtbm90LWUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDUtT25seS1nZW5lcmF0ZS1hbi1SUEFUSC1lbnRyeS1pZi1MRF9SVU5fUEFUSC1pcy1ub3QtZS5wYXRjaAppbmRleCA3MjZmNzAyLi41OTE1MGEyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDUtT25seS1nZW5lcmF0ZS1hbi1SUEFUSC1lbnRyeS1pZi1MRF9SVU5fUEFUSC1pcy1ub3QtZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDUtT25seS1nZW5lcmF0ZS1hbi1SUEFUSC1lbnRyeS1pZi1MRF9SVU5fUEFUSC1pcy1ub3QtZS5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gNDIyOTJmNTUzM2JjYTkwNGYyMzBhOGUwM2NlZWUxZjg0ZWYwYzRlYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gOWQzN2M4ZjY4YzA3ZGE2MzE4NmNiOTkzZjEyMjFmNmMxMWVjYTQyMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6Mjc6MTcgKzAwMDAKIFN1YmplY3Q6IFtQQVRDSCAwNS8xNV0gT25seSBnZW5lcmF0ZSBhbiBSUEFUSCBlbnRyeSBpZiBMRF9SVU5fUEFUSCBpcyBub3QKQEAgLTE1LDE5ICsxNSwxOSBAQAogIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL2xkL2VtdWx0ZW1wbC9lbGYzMi5lbSBiL2xkL2VtdWx0ZW1wbC9lbGYzMi5lbQotaW5kZXggODRhZGFlZjZkZi4uYWI4Yzc0MjU3ZSAxMDA2NDQKK2luZGV4IDlhYzE4NDAzMTYuLjlkYzRjMTQ5YmMgMTAwNjQ0CiAtLS0gYS9sZC9lbXVsdGVtcGwvZWxmMzIuZW0KICsrKyBiL2xkL2VtdWx0ZW1wbC9lbGYzMi5lbQotQEAgLTE0MTEsNiArMTQxMSw4IEBAIGZyYWdtZW50IDw8RU9GCitAQCAtMTQ2Myw2ICsxNDYzLDggQEAgZnJhZ21lbnQgPDxFT0YKICAJICAgICAgJiYgY29tbWFuZF9saW5lLnJwYXRoID09IE5VTEwpCiAgCSAgICB7Ci0gCSAgICAgIGxpYl9wYXRoID0gKGNvbnN0IGNoYXIgKikgZ2V0ZW52ICgiTERfUlVOX1BBVEgiKTsKLSsJICAgICAgaWYgKChsaWJfcGF0aCkgJiYgKHN0cmxlbiAobGliX3BhdGgpID09IDApKQotKwkJICBsaWJfcGF0aCA9IE5VTEw7Ci0gCSAgICAgIGlmIChnbGQke0VNVUxBVElPTl9OQU1FfV9zZWFyY2hfbmVlZGVkIChsaWJfcGF0aCwgJm4sCi0gCQkJCQkJICAgICAgZm9yY2UpKQorIAkgICAgICBwYXRoID0gKGNvbnN0IGNoYXIgKikgZ2V0ZW52ICgiTERfUlVOX1BBVEgiKTsKKysJICAgICAgaWYgKChwYXRoKSAmJiAoc3RybGVuIChwYXRoKSA9PSAwKSkKKysJCSAgcGF0aCA9IE5VTEw7CisgCSAgICAgIGlmIChwYXRoCisgCQkgICYmIGdsZCR7RU1VTEFUSU9OX05BTUV9X3NlYXJjaF9uZWVkZWQgKHBhdGgsICZuLCBmb3JjZSkpCiAgCQlicmVhazsKLUBAIC0xNjkyLDYgKzE2OTQsOCBAQCBnbGQke0VNVUxBVElPTl9OQU1FfV9iZWZvcmVfYWxsb2NhdGlvbiAodm9pZCkKK0BAIC0xNzQwLDYgKzE3NDIsOCBAQCBnbGQke0VNVUxBVElPTl9OQU1FfV9iZWZvcmVfYWxsb2NhdGlvbiAodm9pZCkKICAgIHJwYXRoID0gY29tbWFuZF9saW5lLnJwYXRoOwogICAgaWYgKHJwYXRoID09IE5VTEwpCiAgICAgIHJwYXRoID0gKGNvbnN0IGNoYXIgKikgZ2V0ZW52ICgiTERfUlVOX1BBVEgiKTsKQEAgLTM3LDUgKzM3LDUgQEAKICAgIGZvciAoYWJmZCA9IGxpbmtfaW5mby5pbnB1dF9iZmRzOyBhYmZkOyBhYmZkID0gYWJmZC0+bGluay5uZXh0KQogICAgICBpZiAoYmZkX2dldF9mbGF2b3VyIChhYmZkKSA9PSBiZmRfdGFyZ2V0X2VsZl9mbGF2b3VyKQogLS0gCi0yLjEyLjAKKzIuMTQuMAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDYtRXhwbGljaXRseS1saW5rLXdpdGgtbGlibS1vbi11Y2xpYmMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDYtRXhwbGljaXRseS1saW5rLXdpdGgtbGlibS1vbi11Y2xpYmMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3NzBjYTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA2LUV4cGxpY2l0bHktbGluay13aXRoLWxpYm0tb24tdWNsaWJjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotRnJvbSA2YTQ2YmYxNTFkN2U1M2RmOGI1ZTc2NDVhMmQyNDE5Njc2ODgzNjhhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMTozMjo0OSArMDAwMAotU3ViamVjdDogW1BBVENIIDA2LzE1XSBFeHBsaWNpdGx5IGxpbmsgd2l0aCBsaWJtIG9uIHVjbGliYwotCi1EZXNjcmlwdGlvbjoKLQotV2UgZG8gbm90IG5lZWQgdG8gaGF2ZSB0aGUgbGlidG9vbCBwYXRjaCBhbnltb3JlIGZvciBiaW51dGlscyBhZnRlcgotbGlidG9vbCBoYXMgYmVlbiB1cGRhdGVkIHVwc3RyZWFtIGl0IGluY2x1ZGUgc3VwcG9ydCBmb3IgaXQuIEhvd2V2ZXIKLWZvciBidWlsZGluZyBnYXMgbmF0aXZlbHkgb24gdWNsaWJjIHN5c3RlbXMgd2UgaGF2ZSB0byBsaW5rIGl0IHdpdGgKLS1sbSBzbyB0aGF0IGl0IHBpY2tzIHVwIG1pc3Npbmcgc3ltYm9scy4KLQotL2xvY2FsL2J1aWxkX2FyZWEvQlVJTEQvYXJtX3Y1dF9sZV91Y2xpYmMvYmludXRpbHMtMi4xNy41MC9vYmpkaXIvbGliaWJlcnR5L3BpYy9saWJpYmVydHkuYShmbG9hdGZvcm1hdC5vKToKLUluIGZ1bmN0aW9uIGBmbG9hdGZvcm1hdF9mcm9tX2RvdWJsZSc6Ci1mbG9hdGZvcm1hdC5jOigudGV4dCsweDFlYyk6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGZyZXhwJwotZmxvYXRmb3JtYXQuYzooLnRleHQrMHgyZjgpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBsZGV4cCcKLS9sb2NhbC9idWlsZF9hcmVhL0JVSUxEL2FybV92NXRfbGVfdWNsaWJjL2JpbnV0aWxzLTIuMTcuNTAvb2JqZGlyL2xpYmliZXJ0eS9waWMvbGliaWJlcnR5LmEoZmxvYXRmb3JtYXQubyk6Ci1JbiBmdW5jdGlvbiBgZmxvYXRmb3JtYXRfdG9fZG91YmxlJzoKLWZsb2F0Zm9ybWF0LmM6KC50ZXh0KzB4MzhhKTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgbGRleHAnCi1mbG9hdGZvcm1hdC5jOigudGV4dCsweDNkMik6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGxkZXhwJwotZmxvYXRmb3JtYXQuYzooLnRleHQrMHg0M2UpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBsZGV4cCcKLWZsb2F0Zm9ybWF0LmM6KC50ZXh0KzB4NGUyKTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgbGRleHAnCi1jb2xsZWN0MjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1cwotbWFrZVs0XTogKioqIFthcy1uZXddIEVycm9yIDEKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnYXMvY29uZmlndXJlLnRndCB8IDYgKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZ2FzL2NvbmZpZ3VyZS50Z3QgYi9nYXMvY29uZmlndXJlLnRndAotaW5kZXggNzExZDUzN2U5NS4uN2NkMmRjMTc2YSAxMDA2NDQKLS0tLSBhL2dhcy9jb25maWd1cmUudGd0Ci0rKysgYi9nYXMvY29uZmlndXJlLnRndAotQEAgLTQ5NCw2ICs0OTQsMTIgQEAgY2FzZSAke2dlbmVyaWNfdGFyZ2V0fSBpbgotICAgKi0qLW5ldHdhcmUpCQkJCWZtdD1lbGYgZW09bmV0d2FyZSA7OwotIGVzYWMKLSAKLStjYXNlICR7Z2VuZXJpY190YXJnZXR9IGluCi0rICBhcm0tKi0qdWNsaWJjKikKLSsgICAgbmVlZF9saWJtPXllcwotKyAgICA7OwotK2VzYWMKLSsKLSBjYXNlICR7Y3B1X3R5cGV9IGluCi0gICBhYXJjaDY0IHwgYWxwaGEgfCBhcm0gfCBpMzg2IHwgaWE2NCB8IG1pY3JvYmxhemUgfCBtaXBzIHwgbnMzMmsgfCBvcjFrIHwgb3Ixa25kIHwgcGRwMTEgfCBwcGMgfCByaXNjdiB8IHNwYXJjIHwgejgwIHwgejhrKQotICAgICBiZmRfZ2FzPXllcwotLS0gCi0yLjEyLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA2LVVzZS1saWJ0b29sLTIuNC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNi1Vc2UtbGlidG9vbC0yLjQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTg3ZWZlNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNi1Vc2UtbGlidG9vbC0yLjQucGF0Y2gKQEAgLTAsMCArMSwyMTE1NyBAQAorRnJvbSA3MWM3MzRiYjM3NTQzMTkwMjlkY2ZjODk4Y2VkYmFkZTQyMjc0ZGNiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgMTQgRmViIDIwMTYgMTc6MDQ6MDcgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAwNi8xNV0gVXNlIGxpYnRvb2wgMi40CisKK2dldCBsaWJ0b29sIHN5c3Jvb3Qgc3VwcG9ydAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGJmZC9jb25maWd1cmUgICAgICAgIHwgMTMxOCArKysrKysrKysrKysrKysrKy0tLS0tLQorIGJmZC9jb25maWd1cmUuYWMgICAgIHwgICAgMiArLQorIGJpbnV0aWxzL2NvbmZpZ3VyZSAgIHwgMTMxNiArKysrKysrKysrKysrKysrKy0tLS0tLQorIGNvbmZpZ3VyZSAgICAgICAgICAgIHwgICAgMiArLQorIGdhcy9jb25maWd1cmUgICAgICAgIHwgMTMxNCArKysrKysrKysrKysrKysrKy0tLS0tLQorIGdwcm9mL2NvbmZpZ3VyZSAgICAgIHwgMTMyMSArKysrKysrKysrKysrKysrKy0tLS0tLQorIGxkL2NvbmZpZ3VyZSAgICAgICAgIHwgMTY5MSArKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQorIGxpYnRvb2wubTQgICAgICAgICAgIHwgMTA4MCArKysrKysrKysrKysrLS0tLS0tCisgbHRtYWluLnNoICAgICAgICAgICAgfCAyOTI1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCisgbHRvcHRpb25zLm00ICAgICAgICAgfCAgICAyICstCisgbHR2ZXJzaW9uLm00ICAgICAgICAgfCAgIDEyICstCisgbHR+b2Jzb2xldGUubTQgICAgICAgfCAgICAyICstCisgb3Bjb2Rlcy9jb25maWd1cmUgICAgfCAxMzE4ICsrKysrKysrKysrKysrKysrLS0tLS0tCisgb3Bjb2Rlcy9jb25maWd1cmUuYWMgfCAgICAyICstCisgemxpYi9jb25maWd1cmUgICAgICAgfCAxMzE2ICsrKysrKysrKysrKysrKysrLS0tLS0tCisgMTUgZmlsZXMgY2hhbmdlZCwgOTkyNyBpbnNlcnRpb25zKCspLCAzNjk0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvYmZkL2NvbmZpZ3VyZSBiL2JmZC9jb25maWd1cmUKK2luZGV4IDQ4Mjc2NTk0ZWQuLjNlY2U4OTQzZjMgMTAwNzU1CistLS0gYS9iZmQvY29uZmlndXJlCisrKysgYi9iZmQvY29uZmlndXJlCitAQCAtNjcyLDYgKzY3Miw5IEBAIE9UT09MCisgTElQTworIE5NRURJVAorIERTWU1VVElMCisrTUFOSUZFU1RfVE9PTAorK2FjX2N0X0FSCisrRExMVE9PTAorIE9CSkRVTVAKKyBMTl9TCisgTk0KK0BAIC03ODUsNiArNzg4LDcgQEAgZW5hYmxlX3N0YXRpYworIHdpdGhfcGljCisgZW5hYmxlX2Zhc3RfaW5zdGFsbAorIHdpdGhfZ251X2xkCisrd2l0aF9saWJ0b29sX3N5c3Jvb3QKKyBlbmFibGVfbGlidG9vbF9sb2NrCisgZW5hYmxlX3BsdWdpbnMKKyBlbmFibGVfbGFyZ2VmaWxlCitAQCAtMTQ2MSw2ICsxNDY1LDggQEAgT3B0aW9uYWwgUGFja2FnZXM6CisgICAtLXdpdGgtcGljICAgICAgICAgICAgICB0cnkgdG8gdXNlIG9ubHkgUElDL25vbi1QSUMgb2JqZWN0cyBbZGVmYXVsdD11c2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdGhdCisgICAtLXdpdGgtZ251LWxkICAgICAgICAgICBhc3N1bWUgdGhlIEMgY29tcGlsZXIgdXNlcyBHTlUgbGQgW2RlZmF1bHQ9bm9dCisrICAtLXdpdGgtbGlidG9vbC1zeXNyb290PURJUiBTZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMgd2l0aGluIERJUgorKyAgICAgICAgICAgICAgICAgICAgICAgIChvciB0aGUgY29tcGlsZXIncyBzeXNyb290IGlmIG5vdCBzcGVjaWZpZWQpLgorICAgLS13aXRoLW1tYXAgICAgICAgICAgICAgdHJ5IHVzaW5nIG1tYXAgZm9yIEJGRCBpbnB1dCBmaWxlcyBpZiBhdmFpbGFibGUKKyAgIC0td2l0aC1zZXBhcmF0ZS1kZWJ1Zy1kaXI9RElSCisgICAgICAgICAgICAgICAgICAgICAgICAgICBMb29rIGZvciBnbG9iYWwgc2VwYXJhdGUgZGVidWcgaW5mbyBpbiBESVIKK0BAIC01MzkzLDggKzUzOTksOCBAQCBlc2FjCisgCisgCisgCistbWFjcm9fdmVyc2lvbj0nMi4yLjdhJworLW1hY3JvX3JldmlzaW9uPScxLjMxMzQnCisrbWFjcm9fdmVyc2lvbj0nMi40JworK21hY3JvX3JldmlzaW9uPScxLjMyOTMnCisgCisgCisgCitAQCAtNTQzNCw3ICs1NDQwLDcgQEAgRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncy4uLiAiID4mNjsgfQorICMgVGVzdCBwcmludCBmaXJzdCwgYmVjYXVzZSBpdCB3aWxsIGJlIGEgYnVpbHRpbiBpZiBwcmVzZW50LgorLWlmIHRlc3QgIlhgcHJpbnQgLXIgLS0gLW4gMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCisraWYgdGVzdCAiWGAoIHByaW50IC1yIC0tIC1uICkgMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCisgICAgdGVzdCAiWGBwcmludCAtciAtLSAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KKyAgIEVDSE89J3ByaW50IC1yIC0tJworIGVsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCitAQCAtNjEyMCw4ICs2MTI2LDggQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgc29tZSBYU0kgY29uc3RydWN0cy4uLiAiID4mNjsKKyAjIFRyeSBzb21lIFhTSSBmZWF0dXJlcworIHhzaV9zaGVsbD1ubworICggX2x0X2R1bW15PSJhL2IvYyIKKy0gIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCistICAgICAgPSBjLGEvYiwsIFwKKysgIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCR7X2x0X2R1bW15Iz8/fSIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCisrICAgICAgPSBjLGEvYixiL2MsIFwKKyAgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAorICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAorICAgJiYgeHNpX3NoZWxsPXllcworQEAgLTYxNzAsNiArNjE3Niw4MCBAQCBlc2FjCisgCisgCisgCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3ZfdG9faG9zdF9maWxlX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhc2UgJGhvc3QgaW4KKysgICotKi1taW5ndyogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysgICAgICAgIDs7CisrICAgICAgKi0qLWN5Z3dpbiogKQorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyCisrICAgICAgICA7OworKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworKyAgKi0qLWN5Z3dpbiogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KKysgICAgICAgIDs7CisrICAgICAgKi0qLWN5Z3dpbiogKQorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrICAgICAgICA7OworKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworKyAgKiApICMgdW5oYW5kbGVkIGhvc3RzIChhbmQgIm5vcm1hbCIgbmF0aXZlIGJ1aWxkcykKKysgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrICAgIDs7CisrZXNhYworKworK2ZpCisrCisrdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjY7IH0KKysKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICAjYXNzdW1lIG9yZGluYXJ5IGNyb3NzIHRvb2xzLCBvciBuYXRpdmUgYnVpbGQuCisrbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrY2FzZSAkaG9zdCBpbgorKyAgKi0qLW1pbmd3KiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworK2VzYWMKKysKKytmaQorKworK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY2OyB9CisrCisrCisrCisrCisrCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzLi4uICIgPiY2OyB9CisgaWYgdGVzdCAiJHtsdF9jdl9sZF9yZWxvYWRfZmxhZytzZXR9IiA9IHNldDsgdGhlbiA6CitAQCAtNjE4Niw2ICs2MjY2LDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCisgZXNhYworIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKKyBjYXNlICRob3N0X29zIGluCisrICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisrICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgorKyAgICAgIHJlbG9hZF9jbWRzPWZhbHNlCisrICAgIGZpCisrICAgIDs7CisgICBkYXJ3aW4qKQorICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICAgIHJlbG9hZF9jbWRzPSckTFRDQyAkTFRDRkxBR1MgLW5vc3RkbGliICR7d2x9LXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKK0BAIC02MzU0LDcgKzY0MzksOCBAQCBtaW5ndyogfCBwdzMyKikKKyAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgXng4NiBhcmNoaXZlIGltcG9ydHxeeDg2IERMTCcKKyAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9J2Z1bmNfd2luMzJfbGliaWQnCisgICBlbHNlCistICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/JworKyAgICAjIEtlZXAgdGhpcyBwYXR0ZXJuIGluIHN5bmMgd2l0aCB0aGUgb25lIGluIGZ1bmNfd2luMzJfbGliaWQuCisrICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IChwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScKKyAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJworICAgZmkKKyAgIDs7CitAQCAtNjUwOCw2ICs2NTk0LDIxIEBAIGVzYWMKKyBmaQorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNQorICRhc19lY2hvICIkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNjsgfQorKworK2ZpbGVfbWFnaWNfZ2xvYj0KKyt3YW50X25vY2FzZWdsb2I9bm8KKytpZiB0ZXN0ICIkYnVpbGQiID0gIiRob3N0IjsgdGhlbgorKyAgY2FzZSAkaG9zdF9vcyBpbgorKyAgbWluZ3cqIHwgcHczMiopCisrICAgIGlmICggc2hvcHQgfCBncmVwIG5vY2FzZWdsb2IgKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKysgICAgICB3YW50X25vY2FzZWdsb2I9eWVzCisrICAgIGVsc2UKKysgICAgICBmaWxlX21hZ2ljX2dsb2I9YGVjaG8gYUFiQmNDZERlRWZGZ0doSGlJakprS2xMbU1uTm9PcFBxUXJSc1N0VHVVdlZ3V3hYeVl6WiB8ICRTRUQgLWUgInMvXCguLlwpL3NcL1tcMV1cL1tcMV1cL2c7L2ciYAorKyAgICBmaQorKyAgICA7OworKyAgZXNhYworK2ZpCisrCisgZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCisgZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCisgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCitAQCAtNjUyMSwxMSArNjYyMiwxNjQgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCisgCisgCisgCisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisgCisgCisgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKy1zZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1hcjsgYWNfd29yZD0kMgorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2w7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHthY19jdl9wcm9nX0RMTFRPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfRExMVE9PTD0iJERMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19ETExUT09MPSIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK0RMTFRPT0w9JGFjX2N2X3Byb2dfRExMVE9PTAorK2lmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRETExUT09MIiA+JjUKKyskYXNfZWNobyAiJERMTFRPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKworK2ZpCisraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfRExMVE9PTCI7IHRoZW4KKysgIGFjX2N0X0RMTFRPT0w9JERMTFRPT0wKKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15IGRsbHRvb2w7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iJGFjX2N0X0RMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSJkbGx0b29sIgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKythY19jdF9ETExUT09MPSRhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wKKytpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfRExMVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRhY19jdF9ETExUT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysgIGlmIHRlc3QgIngkYWNfY3RfRExMVE9PTCIgPSB4OyB0aGVuCisrICAgIERMTFRPT0w9ImZhbHNlIgorKyAgZWxzZQorKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCisreWVzOikKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorK2FjX3Rvb2xfd2FybmVkPXllcyA7OworK2VzYWMKKysgICAgRExMVE9PTD0kYWNfY3RfRExMVE9PTAorKyAgZmkKKytlbHNlCisrICBETExUT09MPSIkYWNfY3ZfcHJvZ19ETExUT09MIgorK2ZpCisrCisrdGVzdCAteiAiJERMTFRPT0wiICYmIERMTFRPT0w9ZGxsdG9vbAorKworKworKworKworKworKworKworKworKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcyIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcy4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0ndW5rbm93bicKKysKKytjYXNlICRob3N0X29zIGluCisrY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorKyAgIyB0d28gZGlmZmVyZW50IHNoZWxsIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGx0bWFpbi5zaAorKyAgIyBkZWNpZGUgd2hpY2ggdG8gdXNlIGJhc2VkIG9uIGNhcGFiaWxpdGllcyBvZiAkRExMVE9PTAorKyAgY2FzZSBgJERMTFRPT0wgLS1oZWxwIDI+JjFgIGluCisrICAqLS1pZGVudGlmeS1zdHJpY3QqKQorKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIKKysgICAgOzsKKysgICopCisrICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjaworKyAgICA7OworKyAgZXNhYworKyAgOzsKKysqKQorKyAgIyBmYWxsYmFjazogYXNzdW1lIGxpbmtsaWIgSVMgc2hhcmVkbGliCisrICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0iJEVDSE8iCisrICA7OworK2VzYWMKKysKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNQorKyRhc19lY2hvICIkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNjsgfQorK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAorK3Rlc3QgLXogIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgJiYgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JEVDSE8KKysKKysKKysKKysKKysKKysKKysKKytpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisrICBmb3IgYWNfcHJvZyBpbiBhcgorKyAgZG8KKysgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorIGlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19BUitzZXR9IiA9IHNldDsgdGhlbiA6CitAQCAtNjU0MSw3ICs2Nzk1LDcgQEAgZG8KKyAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorLSAgICBhY19jdl9wcm9nX0FSPSIke2FjX3Rvb2xfcHJlZml4fWFyIgorKyAgICBhY19jdl9wcm9nX0FSPSIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIKKyAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgIGJyZWFrIDIKKyAgIGZpCitAQCAtNjU2MSwxMSArNjgxNSwxNSBAQCAkYXNfZWNobyAibm8iID4mNjsgfQorIGZpCisgCisgCisrICAgIHRlc3QgLW4gIiRBUiIgJiYgYnJlYWsKKysgIGRvbmUKKyBmaQorLWlmIHRlc3QgLXogIiRhY19jdl9wcm9nX0FSIjsgdGhlbgorK2lmIHRlc3QgLXogIiRBUiI7IHRoZW4KKyAgIGFjX2N0X0FSPSRBUgorLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJhciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCistc2V0IGR1bW15IGFyOyBhY193b3JkPSQyCisrICBmb3IgYWNfcHJvZyBpbiBhcgorK2RvCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisgaWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0FSK3NldH0iID0gc2V0OyB0aGVuIDoKK0BAIC02NTgxLDcgKzY4MzksNyBAQCBkbworICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCistICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9ImFyIgorKyAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSIkYWNfcHJvZyIKKyAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgIGJyZWFrIDIKKyAgIGZpCitAQCAtNjYwMCw2ICs2ODU4LDEwIEBAIGVsc2UKKyAkYXNfZWNobyAibm8iID4mNjsgfQorIGZpCisgCisrCisrICB0ZXN0IC1uICIkYWNfY3RfQVIiICYmIGJyZWFrCisrZG9uZQorKworICAgaWYgdGVzdCAieCRhY19jdF9BUiIgPSB4OyB0aGVuCisgICAgIEFSPSJmYWxzZSIKKyAgIGVsc2UKK0BAIC02NjExLDE2ICs2ODczLDcyIEBAIGFjX3Rvb2xfd2FybmVkPXllcyA7OworIGVzYWMKKyAgICAgQVI9JGFjX2N0X0FSCisgICBmaQorLWVsc2UKKy0gIEFSPSIkYWNfY3ZfcHJvZ19BUiIKKyBmaQorIAorLXRlc3QgLXogIiRBUiIgJiYgQVI9YXIKKy10ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQorKzogJHtBUj1hcn0KKys6ICR7QVJfRkxBR1M9Y3J1fQorKworKworKworKworKworKworKworKworKworKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0Li4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtsdF9jdl9hcl9hdF9maWxlK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfYXJfYXRfZmlsZT1ubworKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysvKiBlbmQgY29uZmRlZnMuaC4gICovCisrCisraW50CisrbWFpbiAoKQorK3sKKyAKKysgIDsKKysgIHJldHVybiAwOworK30KKytfQUNFT0YKKytpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisrICBlY2hvIGNvbmZ0ZXN0LiRhY19vYmpleHQgPiBjb25mdGVzdC5sc3QKKysgICAgICBsdF9hcl90cnk9JyRBUiAkQVJfRkxBR1MgbGliY29uZnRlc3QuYSBAY29uZnRlc3QubHN0ID4mNScKKysgICAgICB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQorKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQorKyAgYWNfc3RhdHVzPSQ/CisrICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKysgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KKysgICAgICBpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtZXEgMDsgdGhlbgorKwkjIEVuc3VyZSB0aGUgYXJjaGl2ZXIgZmFpbHMgdXBvbiBib2d1cyBmaWxlIG5hbWVzLgorKwlybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGxpYmNvbmZ0ZXN0LmEKKysJeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKKysgIChldmFsICRsdF9hcl90cnkpIDI+JjUKKysgIGFjX3N0YXR1cz0kPworKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisrICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9CisrCWlmIHRlc3QgIiRhY19zdGF0dXMiIC1uZSAwOyB0aGVuCisrICAgICAgICAgIGx0X2N2X2FyX2F0X2ZpbGU9QAorKyAgICAgICAgZmkKKysgICAgICBmaQorKyAgICAgIHJtIC1mIGNvbmZ0ZXN0LiogbGliY29uZnRlc3QuYQorIAorK2ZpCisrcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisgCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2FyX2F0X2ZpbGUiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfYXJfYXRfZmlsZSIgPiY2OyB9CisgCisraWYgdGVzdCAieCRsdF9jdl9hcl9hdF9maWxlIiA9IHhubzsgdGhlbgorKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPQorK2Vsc2UKKysgIGFyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfY3ZfYXJfYXRfZmlsZQorK2ZpCisgCisgCisgCitAQCAtNjk2Miw4ICs3MjgwLDggQEAgZXNhYworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCisgCisgIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gc3ltYm9sIG5hbWUgYW5kIHN5bWJvbCBhZGRyZXNzCistbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKy1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKytsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorIAorICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgorIG9wdF9jcj0KK0BAIC02OTk5LDYgKzczMTcsNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCisgICBlbHNlCisgICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbCSBdXCgkc3ltY29kZSRzeW1jb2RlKlwpWwkgXVsJIF0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCisgICBmaQorKyAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0iJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgfCBzZWQgJy8gX19nbnVfbHRvL2QnIgorIAorICAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgcGlwZSB3b3JrcyBjb3JyZWN0bHkuCisgICBwaXBlX3dvcmtzPW5vCitAQCAtNzA0MCw2ICs3MzU5LDE4IEBAIF9MVF9FT0YKKyAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgorIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKyAJICBjYXQgPDxfTFRfRU9GID4gY29uZnRlc3QuJGFjX2V4dAorKy8qIEtlZXAgdGhpcyBjb2RlIGluIHN5bmMgYmV0d2VlbiBsaWJ0b29sLm00LCBsdG1haW4sIGx0X3N5c3RlbS5oLCBhbmQgdGVzdHMuICAqLworKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCisrLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZSBydW50aW1lCisrICAgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uIG9uIHBzZXVkby1yZWxvY3MuICAqLworKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCisrI2VsaWYgZGVmaW5lZChfX29zZl9fKQorKy8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEuICAqLworKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCisrI2Vsc2UKKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVCBjb25zdAorKyNlbmRpZgorKworICNpZmRlZiBfX2NwbHVzcGx1cworIGV4dGVybiAiQyIgeworICNlbmRpZgorQEAgLTcwNTEsNyArNzM4Miw3IEBAIF9MVF9FT0YKKyAJICBjYXQgPDxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKKyAKKyAvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCistY29uc3Qgc3RydWN0IHsKKytMVF9ETFNZTV9DT05TVCBzdHJ1Y3QgeworICAgY29uc3QgY2hhciAqbmFtZTsKKyAgIHZvaWQgICAgICAgKmFkZHJlc3M7CisgfQorQEAgLTcwNzcsOCArNzQwOCw4IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7CisgX0xUX0VPRgorIAkgICMgTm93IHRyeSBsaW5raW5nIHRoZSB0d28gZmlsZXMuCisgCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0CistCSAgbHRfc2F2ZV9MSUJTPSIkTElCUyIKKy0JICBsdF9zYXZlX0NGTEFHUz0iJENGTEFHUyIKKysJICBsdF9nbG9ic3ltX3NhdmVfTElCUz0kTElCUworKwkgIGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1M9JENGTEFHUworIAkgIExJQlM9ImNvbmZ0c3RtLiRhY19vYmpleHQiCisgCSAgQ0ZMQUdTPSIkQ0ZMQUdTJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIgorIAkgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19saW5rXCIiOyB9ID4mNQorQEAgLTcwODgsOCArNzQxOSw4IEBAIF9MVF9FT0YKKyAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgorIAkgICAgcGlwZV93b3Jrcz15ZXMKKyAJICBmaQorLQkgIExJQlM9IiRsdF9zYXZlX0xJQlMiCistCSAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCisrCSAgTElCUz0kbHRfZ2xvYnN5bV9zYXZlX0xJQlMKKysJICBDRkxBR1M9JGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1MKKyAJZWxzZQorIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mNQorIAlmaQorQEAgLTcxMjYsNiArNzQ1NywxNiBAQCBlbHNlCisgJGFzX2VjaG8gIm9rIiA+JjY7IH0KKyBmaQorIAorKyMgUmVzcG9uc2UgZmlsZSBzdXBwb3J0LgorK2lmIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIk1TIGR1bXBiaW4iOyB0aGVuCisrICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKKytlbGlmICROTSAtLWhlbHAgMj4vZGV2L251bGwgfCBncmVwICdbQF1GSUxFJyA+L2Rldi9udWxsOyB0aGVuCisrICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKKytmaQorKworKworKworKworIAorIAorIAorQEAgLTcxNDIsNiArNzQ4Myw0NSBAQCBmaQorIAorIAorIAorKworKworKworKworKworKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN5c3Jvb3QiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzeXNyb290Li4uICIgPiY2OyB9CisrCisrIyBDaGVjayB3aGV0aGVyIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Qgd2FzIGdpdmVuLgorK2lmIHRlc3QgIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgd2l0aHZhbD0kd2l0aF9saWJ0b29sX3N5c3Jvb3Q7CisrZWxzZQorKyAgd2l0aF9saWJ0b29sX3N5c3Jvb3Q9bm8KKytmaQorKworKworK2x0X3N5c3Jvb3Q9CisrY2FzZSAke3dpdGhfbGlidG9vbF9zeXNyb290fSBpbiAjKAorKyB5ZXMpCisrICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKysgICAgIGx0X3N5c3Jvb3Q9YCRDQyAtLXByaW50LXN5c3Jvb3QgMj4vZGV2L251bGxgCisrICAgZmkKKysgICA7OyAjKAorKyAvKikKKysgICBsdF9zeXNyb290PWBlY2hvICIkd2l0aF9saWJ0b29sX3N5c3Jvb3QiIHwgc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKKysgICA7OyAjKAorKyBub3wnJykKKysgICA7OyAjKAorKyAqKQorKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY1CisrJGFzX2VjaG8gIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjY7IH0KKysgICBhc19mbl9lcnJvciAiVGhlIHN5c3Jvb3QgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLiIgIiRMSU5FTk8iIDUKKysgICA7OworK2VzYWMKKysKKysgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7bHRfc3lzcm9vdDotbm99IiA+JjUKKyskYXNfZWNobyAiJHtsdF9zeXNyb290Oi1ub30iID4mNjsgfQorIAorIAorIAorQEAgLTczNTMsNiArNzczMywxMjMgQEAgZXNhYworIAorIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgorIAorK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1tdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9bXQ7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHthY19jdl9wcm9nX01BTklGRVNUX1RPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJE1BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIke2FjX3Rvb2xfcHJlZml4fW10IgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKytNQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wKKytpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTUFOSUZFU1RfVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRNQU5JRkVTVF9UT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysKKytmaQorK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdF9NQU5JRkVTVF9UT09MPSRNQU5JRkVTVF9UT09MCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgbXQ7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0iJGFjX2N0X01BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSJtdCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrYWNfY3RfTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MCisraWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNQorKyRhc19lY2hvICIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrICBpZiB0ZXN0ICJ4JGFjX2N0X01BTklGRVNUX1RPT0wiID0geDsgdGhlbgorKyAgICBNQU5JRkVTVF9UT09MPSI6IgorKyAgZWxzZQorKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCisreWVzOikKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorK2FjX3Rvb2xfd2FybmVkPXllcyA7OworK2VzYWMKKysgICAgTUFOSUZFU1RfVE9PTD0kYWNfY3RfTUFOSUZFU1RfVE9PTAorKyAgZmkKKytlbHNlCisrICBNQU5JRkVTVF9UT09MPSIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIgorK2ZpCisrCisrdGVzdCAteiAiJE1BTklGRVNUX1RPT0wiICYmIE1BTklGRVNUX1RPT0w9bXQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9bm8KKysgIGVjaG8gIiRhc19tZTokTElORU5POiAkTUFOSUZFU1RfVE9PTCAnLT8nIiA+JjUKKysgICRNQU5JRkVTVF9UT09MICctPycgMj5jb25mdGVzdC5lcnIgPiBjb25mdGVzdC5vdXQKKysgIGNhdCBjb25mdGVzdC5lcnIgPiY1CisrICBpZiAkR1JFUCAnTWFuaWZlc3QgVG9vbCcgY29uZnRlc3Qub3V0ID4gL2Rldi9udWxsOyB0aGVuCisrICAgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD15ZXMKKysgIGZpCisrICBybSAtZiBjb25mdGVzdCoKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY2OyB9CisraWYgdGVzdCAieCRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiICE9IHh5ZXM7IHRoZW4KKysgIE1BTklGRVNUX1RPT0w9OgorK2ZpCisrCisrCisrCisrCisrCisgCisgICBjYXNlICRob3N0X29zIGluCisgICAgIHJoYXBzb2R5KiB8IGRhcndpbiopCitAQCAtNzkxNiw2ICs4NDEzLDggQEAgX0xUX0VPRgorICAgICAgICRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMgMj4mNQorICAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JjUKKyAgICAgICAkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyAyPiY1CisrICAgICAgZWNobyAiJFJBTkxJQiBsaWJjb25mdGVzdC5hIiA+JjUKKysgICAgICAkUkFOTElCIGxpYmNvbmZ0ZXN0LmEgMj4mNQorICAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgorIGludCBtYWluKCkgeyByZXR1cm4gMDt9CisgX0xUX0VPRgorQEAgLTgwODAsNyArODU3OSw4IEBAIGZpCisgTElCVE9PTF9ERVBTPSIkbHRtYWluIgorIAorICMgQWx3YXlzIHVzZSBvdXIgb3duIGxpYnRvb2wuCistTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpL2xpYnRvb2wnCisrTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpJworK0xJQlRPT0w9IiRMSUJUT09MLyR7aG9zdF9hbGlhc30tbGlidG9vbCIKKyAKKyAKKyAKK0BAIC04MTY5LDcgKzg2NjksNyBAQCBhaXgzKikKKyBlc2FjCisgCisgIyBHbG9iYWwgdmFyaWFibGVzOgorLW9maWxlPWxpYnRvb2wKKytvZmlsZT0ke2hvc3RfYWxpYXN9LWxpYnRvb2wKKyBjYW5fYnVpbGRfc2hhcmVkPXllcworIAorICMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAorQEAgLTg0NjcsOCArODk2Nyw2IEBAIGZpCisgbHRfcHJvZ19jb21waWxlcl9waWM9CisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9CisgCisteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1CistJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAKKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgIGx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCitAQCAtODYzNCw2ICs5MTMyLDEyIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgCWx0X3Byb2dfY29tcGlsZXJfcGljPSctLXNoYXJlZCcKKyAJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy0tc3RhdGljJworIAk7OworKyAgICAgIG5hZ2ZvciopCisrCSMgTkFHIEZvcnRyYW4gY29tcGlsZXIKKysJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLC1XbCwsJworKwlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLVBJQycKKysJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJworKwk7OworICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKKyAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCisgCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCitAQCAtODY5Niw3ICs5MjAwLDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCisgICAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJworICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCistICAgICAgZjc3KiB8IGY5MCogfCBmOTUqKQorKyAgICAgIGY3NyogfCBmOTAqIHwgZjk1KiB8IHN1bmY3NyogfCBzdW5mOTAqIHwgc3VuZjk1KikKKyAJbHRfcHJvZ19jb21waWxlcl93bD0nLVFvcHRpb24gbGQgJzs7CisgICAgICAgKikKKyAJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCc7OworQEAgLTg3NTMsMTMgKzkyNTcsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgorICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0iJGx0X3Byb2dfY29tcGlsZXJfcGljIC1EUElDIgorICAgICA7OworIGVzYWMKKy17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKKy0kYXNfZWNobyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KKy0KKy0KKy0KKy0KKyAKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWMrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfcHJvZ19jb21waWxlcl9waWMKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQorK2x0X3Byb2dfY29tcGlsZXJfcGljPSRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYworIAorICMKKyAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCitAQCAtODgyMCw2ICs5MzI4LDExIEBAIGZpCisgCisgCisgCisrCisrCisrCisrCisrCisgIworICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KKyAjCitAQCAtOTE3MCw3ICs5NjgzLDggQEAgX0xUX0VPRgorICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisgICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPW5vCisgICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKy0gICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS87cy9eLipbIF1fX25tX19cKFteIF0qXClbIF1bXiBdKi9cMSBEQVRBLzsvXklbIF0vZDsvXltBSVRXXVsgXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgICAgIGV4Y2x1ZGVfZXhwc3ltcz0nW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJworIAorICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCitAQCAtOTI2OSwxMiArOTc4MywxMiBAQCBfTFRfRU9GCisgCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCisgCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KKyAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPSctcnBhdGggJGxpYmRpcicKKy0JICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKKysJICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCisgCSAgaWYgdGVzdCAieCRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciID0geHllczsgdGhlbgorIAkgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorIAkgICAgICBlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKy0JICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisrCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKKyAJICBmaQorIAkgIDs7CisgCWVzYWMKK0BAIC05Mjg4LDggKzk4MDIsOCBAQCBfTFRfRU9GCisgCWFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKKyAJd2xhcmM9CisgICAgICAgZWxzZQorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBmaQorICAgICAgIDs7CisgCitAQCAtOTMwNyw4ICs5ODIxLDggQEAgX0xUX0VPRgorIAorIF9MVF9FT0YKKyAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZWxzZQorIAlsZF9zaGxpYnM9bm8KKyAgICAgICBmaQorQEAgLTkzNTQsOCArOTg2OCw4IEBAIF9MVF9FT0YKKyAKKyAgICAgKikKKyAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGVsc2UKKyAJbGRfc2hsaWJzPW5vCisgICAgICAgZmkKK0BAIC05NDg1LDcgKzk5OTksMTMgQEAgX0xUX0VPRgorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nLWJlcm9rJworICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCisgICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCistICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKKytlbHNlCisrICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoXytzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgCisgaW50CitAQCAtOTQ5OCwyMiArMTAwMTgsMjkgQEAgbWFpbiAoKQorIF9BQ0VPRgorIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAKKy1sdF9haXhfbGlicGF0aF9zZWQ9JworLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CistCS9eMC8geworLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCistCSAgICBwCistCX0KKy0gICAgfScKKy1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgorLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistZmkKKysgIGx0X2FpeF9saWJwYXRoX3NlZD0nCisrICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworKwkgIC9eMC8geworKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLworKwkgICAgICBwCisrCSAgfQorKyAgICAgIH0nCisrICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICBmaQorIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCisrICBmaQorKworK2ZpCisrCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCisrZmkKKyAKKyAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgorQEAgLTk1MjUsNyArMTAwNTIsMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCWVsc2UKKyAJICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgorIAkgIyBlbXB0eSBleGVjdXRhYmxlLgorLQkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKwkgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgorKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCisrZWxzZQorKyAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aF8rc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworIAorIGludAorQEAgLTk1MzgsMjIgKzEwMDcxLDI5IEBAIG1haW4gKCkKKyBfQUNFT0YKKyBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgCistbHRfYWl4X2xpYnBhdGhfc2VkPScKKy0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworLQkvXjAvIHsKKy0JICAgIHMvXjAgICpcKC4qXCkkL1wxLworLQkgICAgcAorLQl9CistICAgIH0nCistYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KKy0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLWZpCisrICBsdF9haXhfbGlicGF0aF9zZWQ9JworKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKysJICAvXjAvIHsKKysJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KKysJICAgICAgcAorKwkgIH0KKysgICAgICB9JworKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgZmkKKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgorKyAgZmkKKysKKytmaQorKworKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXworK2ZpCisgCisgCSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCitAQCAtOTU5OCwyMCArMTAxMzgsNjMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KKyAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCisgICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKy0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworLSAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCistICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKy0gICAgICBsaWJleHQ9bGliCistICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCistICAgICAgc2hyZXh0X2NtZHM9Ii5kbGwiCistICAgICAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCistICAgICAgIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KKy0gICAgICBvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJworLSAgICAgICMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCistICAgICAgb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJworLSAgICAgIGZpeF9zcmNmaWxlX3BhdGg9J2BjeWdwYXRoIC13ICIkc3JjZmlsZSJgJworLSAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisrICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKysgICAgICBjbCopCisrCSMgTmF0aXZlIE1TVkMKKysJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKysJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKysJYWx3YXlzX2V4cG9ydF9zeW1ib2xzPXllcworKwlmaWxlX2xpc3Rfc3BlYz0nQCcKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKysJbGliZXh0PWxpYgorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKysJc2hyZXh0X2NtZHM9Ii5kbGwiCisrCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKysJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKysJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisrCSAgZWxzZQorKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICBmaX4KKysJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+CisrCSAgbGlua25hbWVzPScKKysJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgorKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgKT0ndHJ1ZScKKysJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysJZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEsREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKwkjIERvbid0IHVzZSByYW5saWIKKysJb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDY0NCAkb2xkbGliJworKwlwb3N0bGlua19jbWRzPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+CisrCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KKysJICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCisrCSAgICAqLmV4ZXwqLkVYRSkgOzsKKysJICAgICopCisrCSAgICAgIGx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKKysJICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKKysJICAgICAgOzsKKysJICBlc2FjfgorKwkgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCisrCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOworKwkgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7CisrCSAgZmknCisrCTs7CisrICAgICAgKikKKysJIyBBc3N1bWUgTVNWQyB3cmFwcGVyCisrCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCisrCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisrCWxpYmV4dD1saWIKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisrCXNocmV4dF9jbWRzPSIuZGxsIgorKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisrCWFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCisrCSMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCisrCW9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCisrCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCisrCW9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKKysJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysJOzsKKysgICAgICBlc2FjCisgICAgICAgOzsKKyAKKyAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKK0BAIC05NjcyLDcgKzEwMjU1LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCisgICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KKyAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQorLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJworICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKKyAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCitAQCAtOTY4MCw3ICsxMDI2Myw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICBocHV4OSopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgICBmaQorQEAgLTk2OTYsNyArMTAyNzksNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgaHB1eDEwKikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJworICAgICAgIGZpCitAQCAtOTcyMCwxMCArMTAzMDMsMTAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAlpYTY0KikKKy0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCSopCistCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJZXNhYworICAgICAgIGVsc2UKK0BAIC05ODAyLDIzICsxMDM4NSwzNiBAQCBmaQorIAorICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAkjIFRyeSB0byB1c2UgdGhlIC1leHBvcnRlZF9zeW1ib2wgbGQgb3B0aW9uLCBpZiBpdCBkb2VzIG5vdAorIAkjIHdvcmssIGFzc3VtZSB0aGF0IC1leHBvcnRzX2ZpbGUgZG9lcyBub3Qgd29yayBlaXRoZXIgYW5kCisgCSMgaW1wbGljaXRseSBleHBvcnQgYWxsIHN5bWJvbHMuCistICAgICAgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorLSAgICAgICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgorLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKwkjIFRoaXMgc2hvdWxkIGJlIHRoZSBzYW1lIGZvciBhbGwgbGFuZ3VhZ2VzLCBzbyBubyBwZXItdGFnIGNhY2hlIHZhcmlhYmxlLgorKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKysJICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgorKwkgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworLWludCBmb28odm9pZCkge30KKytpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9CisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorLSAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworLQorKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9eWVzCisrZWxzZQorKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9bm8KKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLSAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKKysgICAgICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjY7IH0KKysJaWYgdGVzdCAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA9IHllczsgdGhlbgorKyAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlmaQorICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCitAQCAtOTkwMyw3ICsxMDQ5OSw3IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKyAgICAgICBlbHNlCisgCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJworQEAgLTk5MjIsOSArMTA1MTgsOSBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgICBub191bmRlZmluZWRfZmxhZz0nIC16IGRlZnMnCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAJd2xhcmM9JyR7d2x9JworLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgorLQkgICRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisrCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisgICAgICAgZWxzZQorIAljYXNlIGAkQ0MgLVYgMj4mMWAgaW4KKyAJKiJDb21waWxlcnMgNS4wIiopCitAQCAtMTA1MDAsOCArMTEwOTYsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICBuZWVkX3ZlcnNpb249bm8KKyAgIG5lZWRfbGliX3ByZWZpeD1ubworIAorLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCistICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQorKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgorKyAgeWVzLCopCisrICAgICMgZ2NjCisgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCisgICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKyAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CitAQCAtMTA1MzQsMTMgKzExMTMxLDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisgICAgICAgOzsKKyAgICAgZXNhYworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworKyAgICA7OworKworKyAgKixjbCopCisrICAgICMgTmF0aXZlIE1TVkMKKysgICAgbGlibmFtZV9zcGVjPSckbmFtZScKKysgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0uZGxsLmxpYicKKysKKysgICAgY2FzZSAkYnVpbGRfb3MgaW4KKysgICAgbWluZ3cqKQorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0KKysgICAgICBsdF9zYXZlX2lmcz0kSUZTCisrICAgICAgSUZTPSc7JworKyAgICAgIGZvciBsdF9wYXRoIGluICRMSUIKKysgICAgICBkbworKyAgICAgICAgSUZTPSRsdF9zYXZlX2lmcworKyAgICAgICAgIyBMZXQgRE9TIHZhcmlhYmxlIGV4cGFuc2lvbiBwcmludCB0aGUgc2hvcnQgOC4zIHN0eWxlIGZpbGUgbmFtZS4KKysgICAgICAgIGx0X3BhdGg9YGNkICIkbHRfcGF0aCIgMj4vZGV2L251bGwgJiYgY21kIC8vQyAiZm9yICVpIGluICgiLiIpIGRvIEBlY2hvICV+c2kiYAorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjICRsdF9wYXRoIgorKyAgICAgIGRvbmUKKysgICAgICBJRlM9JGx0X3NhdmVfaWZzCisrICAgICAgIyBDb252ZXJ0IHRvIE1TWVMgc3R5bGUuCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBzZWQgLWUgJ3N8XFxcXHwvfGcnIC1lICdzfCBcXChbYS16QS1aXVxcKTp8IC9cXDF8ZycgLWUgJ3N8XiB8fCdgCisrICAgICAgOzsKKysgICAgY3lnd2luKikKKysgICAgICAjIENvbnZlcnQgdG8gdW5peCBmb3JtLCB0aGVuIHRvIGRvcyBmb3JtLCB0aGVuIGJhY2sgdG8gdW5peCBmb3JtCisrICAgICAgIyBidXQgdGhpcyB0aW1lIGRvcyBzdHlsZSAobm8gc3BhY2VzISkgc28gdGhhdCB0aGUgdW5peCBmb3JtIGxvb2tzCisrICAgICAgIyBsaWtlIC9jeWdkcml2ZS9jL1BST0dSQX4xOi9jeWdkci4uLgorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkTElCImAKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tZG9zICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiAyPi9kZXYvbnVsbGAKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorKyAgICAgIDs7CisrICAgICopCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkTElCIgorKyAgICAgIGlmICRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbDsgdGhlbgorKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCisrICAgICAgZWxzZQorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorKyAgICAgIGZpCisrICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCisrICAgICAgIyBjb21tb24uIChlLmcuICJQcm9ncmFtIEZpbGVzIiAtPiAiUFJPR1JBfjEiKQorKyAgICAgIDs7CisrICAgIGVzYWMKKysKKysgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcworKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KKysgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgorKyAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KKysgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KKysgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCisrICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisrICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KKysgICAgICAgJFJNIFwkZGxwYXRoJworKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKKyAgICAgOzsKKyAKKyAgICopCisrICAgICMgQXNzdW1lIE1TVkMgd3JhcHBlcgorICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKyAgICAgOzsKKyAgIGVzYWMKKy0gIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisgICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KKyAgIHNobGlicGF0aF92YXI9UEFUSAorICAgOzsKK0BAIC0xMDYzMiw3ICsxMTI4Nyw3IEBAIGhhaWt1KikKKyAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAorICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L2Jlb3Mvc3lzdGVtL2xpYicKKysgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9zeXN0ZW0vbGliJworICAgaGFyZGNvZGVfaW50b19saWJzPXllcworICAgOzsKKyAKK0BAIC0xMTQ3MiwxMCArMTIxMjcsMTAgQEAgZWxzZQorIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKKyAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCisgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCistdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKytpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisgI2VuZGlmCisgCistdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9CisraW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9CisgaW50IG1haW4gKCkKKyB7CisgICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKK0BAIC0xMTU3OCwxMCArMTIyMzMsMTAgQEAgZWxzZQorIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKKyAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCisgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCistdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKytpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisgI2VuZGlmCisgCistdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9CisraW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9CisgaW50IG1haW4gKCkKKyB7CisgICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKK0BAIC0xNDE3Miw3ICsxNDgyNyw3IEBAIFNIQVJFRF9MREZMQUdTPQorIGlmIHRlc3QgIiRlbmFibGVfc2hhcmVkIiA9ICJ5ZXMiOyB0aGVuCisgICB4PWBzZWQgLW4gLWUgJ3MvXlsgCV0qUElDRkxBR1sgCV0qPVsgCV0qLy9wJyA8IC4uL2xpYmliZXJ0eS9NYWtlZmlsZSB8IHNlZCAtbiAnJHAnYAorICAgaWYgdGVzdCAtbiAiJHgiOyB0aGVuCistICAgIFNIQVJFRF9MSUJBREQ9Ii1MYHB3ZGAvLi4vbGliaWJlcnR5L3BpYyAtbGliZXJ0eSIKKysgICAgU0hBUkVEX0xJQkFERD0iYHB3ZGAvLi4vbGliaWJlcnR5L3BpYy9saWJpYmVydHkuYSIKKyAgIGZpCisgCisgIyBNb3JlIGhhY2tzIHRvIGJ1aWxkIERMTHMgb24gV2luZG93cy4KK0BAIC0xNjg3OSwxMyArMTc1MzQsMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Vuc2V0PSdgJEVDSE8gIiRsdF91bnNldCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfU1AyTkw9J2AkRUNITyAiJGx0X1NQMk5MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9OTDJTUD0nYCRFQ0hPICIkbHRfTkwyU1AiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHJlbG9hZF9mbGFnPSdgJEVDSE8gIiRyZWxvYWRfZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgcmVsb2FkX2NtZHM9J2AkRUNITyAiJHJlbG9hZF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBPQkpEVU1QPSdgJEVDSE8gIiRPQkpEVU1QIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0nYCRFQ0hPICIkZGVwbGlic19jaGVja19tZXRob2QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGZpbGVfbWFnaWNfY21kPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrZmlsZV9tYWdpY19nbG9iPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2dsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK3dhbnRfbm9jYXNlZ2xvYj0nYCRFQ0hPICIkd2FudF9ub2Nhc2VnbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytETExUT09MPSdgJEVDSE8gIiRETExUT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0nYCRFQ0hPICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIEFSPSdgJEVDSE8gIiRBUiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgQVJfRkxBR1M9J2AkRUNITyAiJEFSX0ZMQUdTIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKythcmNoaXZlcl9saXN0X3NwZWM9J2AkRUNITyAiJGFyY2hpdmVyX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgU1RSSVA9J2AkRUNITyAiJFNUUklQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBSQU5MSUI9J2AkRUNITyAiJFJBTkxJQiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2AkRUNITyAiJG9sZF9wb3N0aW5zdGFsbF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xNjkwMCwxNCArMTc1NjIsMTcgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgfCAkU0VEICIkZGUKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbm1fZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJG5tX2ZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9zeXNyb290PSdgJEVDSE8gIiRsdF9zeXNyb290IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBvYmpkaXI9J2AkRUNITyAiJG9iamRpciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTUFHSUNfQ01EPSdgJEVDSE8gIiRNQUdJQ19DTUQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCistbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9waWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9zdGF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vPSdgJEVDSE8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbmVlZF9sb2Nrcz0nYCRFQ0hPICIkbmVlZF9sb2NrcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrTUFOSUZFU1RfVE9PTD0nYCRFQ0hPICIkTUFOSUZFU1RfVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgRFNZTVVUSUw9J2AkRUNITyAiJERTWU1VVElMIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBOTUVESVQ9J2AkRUNITyAiJE5NRURJVCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTElQTz0nYCRFQ0hPICIkTElQTyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTY5NDAsMTIgKzE3NjA1LDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xCisgaGFyZGNvZGVfYXV0b21hdGljPSdgJEVDSE8gIiRoYXJkY29kZV9hdXRvbWF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGluaGVyaXRfcnBhdGg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGxpbmtfYWxsX2RlcGxpYnM9J2AkRUNITyAiJGxpbmtfYWxsX2RlcGxpYnMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworLWZpeF9zcmNmaWxlX3BhdGg9J2AkRUNITyAiJGZpeF9zcmNmaWxlX3BhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGFsd2F5c19leHBvcnRfc3ltYm9scz0nYCRFQ0hPICIkYWx3YXlzX2V4cG9ydF9zeW1ib2xzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBleHBvcnRfc3ltYm9sc19jbWRzPSdgJEVDSE8gIiRleHBvcnRfc3ltYm9sc19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBleGNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGV4Y2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgaW5jbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHByZWxpbmtfY21kcz0nYCRFQ0hPICIkcHJlbGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytwb3N0bGlua19jbWRzPSdgJEVDSE8gIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBmaWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSdgJEVDSE8gIiR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbmVlZF9saWJfcHJlZml4PSdgJEVDSE8gIiRuZWVkX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTE3MDAwLDggKzE3NjY1LDEzIEBAIHJlbG9hZF9mbGFnIFwKKyBPQkpEVU1QIFwKKyBkZXBsaWJzX2NoZWNrX21ldGhvZCBcCisgZmlsZV9tYWdpY19jbWQgXAorK2ZpbGVfbWFnaWNfZ2xvYiBcCisrd2FudF9ub2Nhc2VnbG9iIFwKKytETExUT09MIFwKKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCBcCisgQVIgXAorIEFSX0ZMQUdTIFwKKythcmNoaXZlcl9saXN0X3NwZWMgXAorIFNUUklQIFwKKyBSQU5MSUIgXAorIENDIFwKK0BAIC0xNzAxMSwxMiArMTc2ODEsMTQgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wgXAorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIFwKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IFwKKytubV9maWxlX2xpc3Rfc3BlYyBcCisgbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcgXAorLWx0X3Byb2dfY29tcGlsZXJfd2wgXAorIGx0X3Byb2dfY29tcGlsZXJfcGljIFwKKytsdF9wcm9nX2NvbXBpbGVyX3dsIFwKKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyBcCisgbHRfY3ZfcHJvZ19jb21waWxlcl9jX28gXAorIG5lZWRfbG9ja3MgXAorK01BTklGRVNUX1RPT0wgXAorIERTWU1VVElMIFwKKyBOTUVESVQgXAorIExJUE8gXAorQEAgLTE3MDMyLDcgKzE3NzA0LDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWcgXAorIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgXAorIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQgXAorIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IgXAorLWZpeF9zcmNmaWxlX3BhdGggXAorIGV4Y2x1ZGVfZXhwc3ltcyBcCisgaW5jbHVkZV9leHBzeW1zIFwKKyBmaWxlX2xpc3Rfc3BlYyBcCitAQCAtMTcwNjgsNiArMTc3MzksNyBAQCBtb2R1bGVfY21kcyBcCisgbW9kdWxlX2V4cHN5bV9jbWRzIFwKKyBleHBvcnRfc3ltYm9sc19jbWRzIFwKKyBwcmVsaW5rX2NtZHMgXAorK3Bvc3RsaW5rX2NtZHMgXAorIHBvc3RpbnN0YWxsX2NtZHMgXAorIHBvc3R1bmluc3RhbGxfY21kcyBcCisgZmluaXNoX2NtZHMgXAorQEAgLTE3ODQ3LDcgKzE4NTE5LDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAorICMgTk9URTogQ2hhbmdlcyBtYWRlIHRvIHRoaXMgZmlsZSB3aWxsIGJlIGxvc3Q6IGxvb2sgYXQgbHRtYWluLnNoLgorICMKKyAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAorLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisrIyAgICAgICAgICAgICAgICAgSW5jLgorICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2CisgIworICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KK0BAIC0xNzk1MCwxOSArMTg2MjMsNDIgQEAgU1AyTkw9JGx0X2x0X1NQMk5MCisgIyB0dXJuIG5ld2xpbmVzIGludG8gc3BhY2VzLgorIE5MMlNQPSRsdF9sdF9OTDJTUAorIAorKyMgY29udmVydCBcJGJ1aWxkIGZpbGUgbmFtZXMgdG8gXCRob3N0IGZvcm1hdC4KKyt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCisrCisrIyBjb252ZXJ0IFwkYnVpbGQgZmlsZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4KKyt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCisrCisgIyBBbiBvYmplY3Qgc3ltYm9sIGR1bXBlci4KKyBPQkpEVU1QPSRsdF9PQkpEVU1QCisgCisgIyBNZXRob2QgdG8gY2hlY2sgd2hldGhlciBkZXBlbmRlbnQgbGlicmFyaWVzIGFyZSBzaGFyZWQgb2JqZWN0cy4KKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfZGVwbGlic19jaGVja19tZXRob2QKKyAKKy0jIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPT0gImZpbGVfbWFnaWMiLgorKyMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KKyBmaWxlX21hZ2ljX2NtZD0kbHRfZmlsZV9tYWdpY19jbWQKKyAKKysjIEhvdyB0byBmaW5kIHBvdGVudGlhbCBmaWxlcyB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorK2ZpbGVfbWFnaWNfZ2xvYj0kbHRfZmlsZV9tYWdpY19nbG9iCisrCisrIyBGaW5kIHBvdGVudGlhbCBmaWxlcyB1c2luZyBub2Nhc2VnbG9iIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCisrd2FudF9ub2Nhc2VnbG9iPSRsdF93YW50X25vY2FzZWdsb2IKKysKKysjIERMTCBjcmVhdGlvbiBwcm9ncmFtLgorK0RMTFRPT0w9JGx0X0RMTFRPT0wKKysKKysjIENvbW1hbmQgdG8gYXNzb2NpYXRlIHNoYXJlZCBhbmQgbGluayBsaWJyYXJpZXMuCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisrCisgIyBUaGUgYXJjaGl2ZXIuCisgQVI9JGx0X0FSCisrCisrIyBGbGFncyB0byBjcmVhdGUgYW4gYXJjaGl2ZS4KKyBBUl9GTEFHUz0kbHRfQVJfRkxBR1MKKyAKKysjIEhvdyB0byBmZWVkIGEgZmlsZSBsaXN0aW5nIHRvIHRoZSBhcmNoaXZlci4KKythcmNoaXZlcl9saXN0X3NwZWM9JGx0X2FyY2hpdmVyX2xpc3Rfc3BlYworKworICMgQSBzeW1ib2wgc3RyaXBwaW5nIHByb2dyYW0uCisgU1RSSVA9JGx0X1NUUklQCisgCitAQCAtMTc5OTIsNiArMTg2ODgsMTIgQEAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKKyAjIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkLgorIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeAorIAorKyMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzIGZvciBcJE5NLgorK25tX2ZpbGVfbGlzdF9zcGVjPSRsdF9ubV9maWxlX2xpc3Rfc3BlYworKworKyMgVGhlIHJvb3Qgd2hlcmUgdG8gc2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzLGFuZCBpbiB3aGljaCBvdXIgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQuCisrbHRfc3lzcm9vdD0kbHRfc3lzcm9vdAorKworICMgVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRlbXBvcmFyeSBsaWJ0b29sIGZpbGVzLgorIG9iamRpcj0kb2JqZGlyCisgCitAQCAtMTgwMDEsNiArMTg3MDMsOSBAQCBNQUdJQ19DTUQ9JE1BR0lDX0NNRAorICMgTXVzdCB3ZSBsb2NrIGZpbGVzIHdoZW4gZG9pbmcgY29tcGlsYXRpb24/CisgbmVlZF9sb2Nrcz0kbHRfbmVlZF9sb2NrcworIAorKyMgTWFuaWZlc3QgdG9vbC4KKytNQU5JRkVTVF9UT09MPSRsdF9NQU5JRkVTVF9UT09MCisrCisgIyBUb29sIHRvIG1hbmlwdWxhdGUgYXJjaGl2ZWQgRFdBUkYgZGVidWcgc3ltYm9sIGZpbGVzIG9uIE1hYyBPUyBYLgorIERTWU1VVElMPSRsdF9EU1lNVVRJTAorIAorQEAgLTE4MTE1LDEyICsxODgyMCwxMiBAQCB3aXRoX2djYz0kR0NDCisgIyBDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgorIG5vX2J1aWx0aW5fZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcKKyAKKy0jIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCistd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKKy0KKyAjIEFkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0cy4KKyBwaWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9waWMKKyAKKysjIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCisrd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKKysKKyAjIENvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBkeW5hbWljIGxpbmtpbmcuCisgbGlua19zdGF0aWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9zdGF0aWMKKyAKK0BAIC0xODIwNyw5ICsxODkxMiw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGgKKyAjIFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KKyBsaW5rX2FsbF9kZXBsaWJzPSRsaW5rX2FsbF9kZXBsaWJzCisgCistIyBGaXggdGhlIHNoZWxsIHZhcmlhYmxlIFwkc3JjZmlsZSBmb3IgdGhlIGNvbXBpbGVyLgorLWZpeF9zcmNmaWxlX3BhdGg9JGx0X2ZpeF9zcmNmaWxlX3BhdGgKKy0KKyAjIFNldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4KKyBhbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3ltYm9scworIAorQEAgLTE4MjI1LDYgKzE4OTI3LDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKKyAjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzLgorIHByZWxpbmtfY21kcz0kbHRfcHJlbGlua19jbWRzCisgCisrIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGZpbmlzaGluZyBsaW5raW5nIHByb2dyYW1zLgorK3Bvc3RsaW5rX2NtZHM9JGx0X3Bvc3RsaW5rX2NtZHMKKysKKyAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcy4KKyBmaWxlX2xpc3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWMKKyAKK0BAIC0xODI1NywyMTAgKzE4OTYyLDE2OSBAQCBsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKKyAgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KKyAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCisgICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPworLSAgc2VkICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlL3EnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKy0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKy0KKy0gIGNhc2UgJHhzaV9zaGVsbCBpbgorLSAgeWVzKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKy0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy1mdW5jX2Rpcm5hbWUgKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKy0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworLSAgZXNhYworLX0KKy0KKy0jIGZ1bmNfYmFzZW5hbWUgZmlsZQorLWZ1bmNfYmFzZW5hbWUgKCkKKy17CistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCistfQorLQorLSMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIHBlcmZvcm0gZnVuY19iYXNlbmFtZSBhbmQgZnVuY19kaXJuYW1lIGluIGEgc2luZ2xlIGZ1bmN0aW9uCistIyBjYWxsOgorLSMgICBkaXJuYW1lOiAgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksCistIyAgICAgICAgICAgICBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsIG90aGVyd2lzZSBzZXQgcmVzdWx0CistIyAgICAgICAgICAgICB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfZGlybmFtZV9yZXN1bHQiCistIyAgIGJhc2VuYW1lOiBDb21wdXRlIGZpbGVuYW1lIG9mIEZJTEUuCistIyAgICAgICAgICAgICB2YWx1ZSByZXR1bmVkIGluICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCistIyBJbXBsZW1lbnRhdGlvbiBtdXN0IGJlIGtlcHQgc3luY2hyb25pemVkIHdpdGggZnVuY19kaXJuYW1lCistIyBhbmQgZnVuY19iYXNlbmFtZS4gRm9yIGVmZmljaWVuY3ksIHdlIGRvIG5vdCBkZWxlZ2F0ZSB0bworLSMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgorLWZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKy0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworLSAgZXNhYworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgorLX0KKy0KKy0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQorLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCistIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKy0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKy0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCistZnVuY19zdHJpcG5hbWUgKCkKKy17CistICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCistICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In0KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9CistfQorLQorLSMgZnVuY19vcHRfc3BsaXQKKy1mdW5jX29wdF9zcGxpdCAoKQorLXsKKy0gIGZ1bmNfb3B0X3NwbGl0X29wdD0kezElJT0qfQorLSAgZnVuY19vcHRfc3BsaXRfYXJnPSR7MSMqPX0KKy19CistCistIyBmdW5jX2xvMm8gb2JqZWN0CistZnVuY19sbzJvICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7CistICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OworLSAgZXNhYworLX0KKy0KKy0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQorLWZ1bmNfeGZvcm0gKCkKKy17CistICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvCistfQorLQorLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KKy1mdW5jX2FyaXRoICgpCisteworLSAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpCistfQorLQorLSMgZnVuY19sZW4gc3RyaW5nCistIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgorLWZ1bmNfbGVuICgpCisteworLSAgZnVuY19sZW5fcmVzdWx0PSR7IzF9CistfQorLQorLV9MVF9FT0YKKy0gICAgOzsKKy0gICopICMgQm91cm5lIGNvbXBhdGlibGUgZnVuY3Rpb25zLgorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKy0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy1mdW5jX2Rpcm5hbWUgKCkKKy17CistICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgorLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGRpcm5hbWUiYAorLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKKy0gIGVsc2UKKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgorLSAgZmkKKy19CistCistIyBmdW5jX2Jhc2VuYW1lIGZpbGUKKy1mdW5jX2Jhc2VuYW1lICgpCisteworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRiYXNlbmFtZSJgCistfQorLQorLQorLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCistIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKy0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KKy0jIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCistZnVuY19zdHJpcG5hbWUgKCkKKy17CistICBjYXNlICR7Mn0gaW4KKy0gICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKKy0gICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OworLSAgZXNhYworLX0KKy0KKy0jIHNlZCBzY3JpcHRzOgorLW15X3NlZF9sb25nX29wdD0nMXMvXlwoLVtePV0qXCk9LiovXDEvO3EnCistbXlfc2VkX2xvbmdfYXJnPScxcy9eLVtePV0qPS8vJworLQorLSMgZnVuY19vcHRfc3BsaXQKKy1mdW5jX29wdF9zcGxpdCAoKQorLXsKKy0gIGZ1bmNfb3B0X3NwbGl0X29wdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX29wdCJgCistICBmdW5jX29wdF9zcGxpdF9hcmc9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19hcmciYAorLX0KKy0KKy0jIGZ1bmNfbG8ybyBvYmplY3QKKy1mdW5jX2xvMm8gKCkKKy17CistICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbG8ybyJgCistfQorLQorLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCistZnVuY194Zm9ybSAoKQorLXsKKy0gIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICdzL1wuW14uXSokLy5sby8nYAorLX0KKy0KKy0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCistZnVuY19hcml0aCAoKQorLXsKKy0gIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIkQCJgCistfQorLQorLSMgZnVuY19sZW4gc3RyaW5nCistIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgorLWZ1bmNfbGVuICgpCisteworLSAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkMSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAorLX0KKy0KKy1fTFRfRU9GCistZXNhYworLQorLWNhc2UgJGx0X3NoZWxsX2FwcGVuZCBpbgorLSAgeWVzKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCistIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCistZnVuY19hcHBlbmQgKCkKKy17CistICBldmFsICIkMSs9XCQyIgorLX0KKy1fTFRfRU9GCistICAgIDs7CistICAqKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCistIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCistZnVuY19hcHBlbmQgKCkKKy17CistICBldmFsICIkMT1cJCQxXCQyIgorLX0KKy0KKy1fTFRfRU9GCistICAgIDs7CistICBlc2FjCistCistCistICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCistICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCistCistICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CisrICBzZWQgJyRxJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCisrICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorKworKyAgaWYgdGVzdCB4IiR4c2lfc2hlbGwiID0geHllczsgdGhlbgorKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZSAvY1wKKytmdW5jX2Rpcm5hbWUgKClcCisre1wKKytcICAgIGNhc2UgJHsxfSBpblwKKytcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCisrXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCisrXCAgICBlc2FjXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19iYXNlbmFtZSAvY1wKKytmdW5jX2Jhc2VuYW1lICgpXAorK3tcCisrXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgL2NcCisrZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKVwKKyt7XAorK1wgICAgY2FzZSAkezF9IGluXAorK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKKytcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKKytcICAgIGVzYWNcCisrXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zdHJpcG5hbWUgKCkkLywvXn0gIyBmdW5jX3N0cmlwbmFtZSAvY1wKKytmdW5jX3N0cmlwbmFtZSAoKVwKKyt7XAorK1wgICAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZVwKKytcICAgICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC5cCisrXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfVwKKytcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9XAorK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3RyaXBuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zcGxpdF9sb25nX29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfbG9uZ19vcHQgL2NcCisrZnVuY19zcGxpdF9sb25nX29wdCAoKVwKKyt7XAorK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPSR7MSUlPSp9XAorK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9JHsxIyo9fVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9sb25nX29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfc2hvcnRfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9zaG9ydF9vcHQgL2NcCisrZnVuY19zcGxpdF9zaG9ydF9vcHQgKClcCisre1wKKytcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz0kezEjPz99XAorK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT0kezElIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmcifVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9zaG9ydF9vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2xvMm8gKCkkLywvXn0gIyBmdW5jX2xvMm8gL2NcCisrZnVuY19sbzJvICgpXAorK3tcCisrXCAgICBjYXNlICR7MX0gaW5cCisrXCAgICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7XAorK1wgICAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOztcCisrXCAgICBlc2FjXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xvMm8gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3hmb3JtICgpJC8sL159ICMgZnVuY194Zm9ybSAvY1wKKytmdW5jX3hmb3JtICgpXAorK3tcCisrICAgIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG9cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfeGZvcm0gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2FyaXRoICgpJC8sL159ICMgZnVuY19hcml0aCAvY1wKKytmdW5jX2FyaXRoICgpXAorK3tcCisrICAgIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcml0aCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfbGVuICgpJC8sL159ICMgZnVuY19sZW4gL2NcCisrZnVuY19sZW4gKClcCisre1wKKysgICAgZnVuY19sZW5fcmVzdWx0PSR7IzF9XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xlbiBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworK2ZpCisrCisraWYgdGVzdCB4IiRsdF9zaGVsbF9hcHBlbmQiID0geHllczsgdGhlbgorKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kICgpJC8sL159ICMgZnVuY19hcHBlbmQgL2NcCisrZnVuY19hcHBlbmQgKClcCisre1wKKysgICAgZXZhbCAiJHsxfSs9XFwkezJ9IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2FwcGVuZF9xdW90ZWQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZF9xdW90ZWQgL2NcCisrZnVuY19hcHBlbmRfcXVvdGVkICgpXAorK3tcCisrXCAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IlwKKytcICAgIGV2YWwgIiR7MX0rPVxcXFwgXFwkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZF9xdW90ZWQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCB3aGVyZSBwb3NzaWJsZSBieSBkaXJlY3QgdXNlIG9mICcrPScKKysgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDErPSIlZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAorKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKytlbHNlCisrICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgZXZlbiB3aGVuICcrPScgaXMgbm90IGF2YWlsYWJsZQorKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMT0iJFwxJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKysgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKysgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrZmkKKysKKytpZiB0ZXN0IHgiJF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWwiID0geCI6IjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjI7fQorK2ZpCisrCisrCisrICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAorICAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQorICAgY2htb2QgK3ggIiRvZmlsZSIKKyAKK2RpZmYgLS1naXQgYS9iZmQvY29uZmlndXJlLmFjIGIvYmZkL2NvbmZpZ3VyZS5hYworaW5kZXggOGZkMDNhN2VhOC4uODgxNmMzMjg2YyAxMDA2NDQKKy0tLSBhL2JmZC9jb25maWd1cmUuYWMKKysrKyBiL2JmZC9jb25maWd1cmUuYWMKK0BAIC0yNTQsNyArMjU0LDcgQEAgY2hhbmdlcXVvdGUoLClkbmwKKyAgIHg9YHNlZCAtbiAtZSAncy9eWyAJXSpQSUNGTEFHWyAJXSo9WyAJXSovL3AnIDwgLi4vbGliaWJlcnR5L01ha2VmaWxlIHwgc2VkIC1uICckcCdgCisgY2hhbmdlcXVvdGUoWyxdKWRubAorICAgaWYgdGVzdCAtbiAiJHgiOyB0aGVuCistICAgIFNIQVJFRF9MSUJBREQ9Ii1MYHB3ZGAvLi4vbGliaWJlcnR5L3BpYyAtbGliZXJ0eSIKKysgICAgU0hBUkVEX0xJQkFERD0iYHB3ZGAvLi4vbGliaWJlcnR5L3BpYy9saWJpYmVydHkuYSIKKyAgIGZpCisgCisgIyBNb3JlIGhhY2tzIHRvIGJ1aWxkIERMTHMgb24gV2luZG93cy4KK2RpZmYgLS1naXQgYS9iaW51dGlscy9jb25maWd1cmUgYi9iaW51dGlscy9jb25maWd1cmUKK2luZGV4IDIyZTFiMTczNmUuLjMyMWI2MzUzNWIgMTAwNzU1CistLS0gYS9iaW51dGlscy9jb25maWd1cmUKKysrKyBiL2JpbnV0aWxzL2NvbmZpZ3VyZQorQEAgLTY1OSw4ICs2NTksMTEgQEAgT1RPT0wKKyBMSVBPCisgTk1FRElUCisgRFNZTVVUSUwKKytNQU5JRkVTVF9UT09MCisgUkFOTElCCisrYWNfY3RfQVIKKyBBUgorK0RMTFRPT0wKKyBPQkpEVU1QCisgTE5fUworIE5NCitAQCAtNzcyLDYgKzc3NSw3IEBAIGVuYWJsZV9zdGF0aWMKKyB3aXRoX3BpYworIGVuYWJsZV9mYXN0X2luc3RhbGwKKyB3aXRoX2dudV9sZAorK3dpdGhfbGlidG9vbF9zeXNyb290CisgZW5hYmxlX2xpYnRvb2xfbG9jaworIGVuYWJsZV9wbHVnaW5zCisgZW5hYmxlX2xhcmdlZmlsZQorQEAgLTE0NDQsNiArMTQ0OCw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgorICAgLS13aXRoLXBpYyAgICAgICAgICAgICAgdHJ5IHRvIHVzZSBvbmx5IFBJQy9ub24tUElDIG9iamVjdHMgW2RlZmF1bHQ9dXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBib3RoXQorICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIFtkZWZhdWx0PW5vXQorKyAgLS13aXRoLWxpYnRvb2wtc3lzcm9vdD1ESVIgU2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzIHdpdGhpbiBESVIKKysgICAgICAgICAgICAgICAgICAgICAgICAob3IgdGhlIGNvbXBpbGVyJ3Mgc3lzcm9vdCBpZiBub3Qgc3BlY2lmaWVkKS4KKyAgIC0td2l0aC1zeXN0ZW0temxpYiAgICAgIHVzZSBpbnN0YWxsZWQgbGliegorICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIGRlZmF1bHQ9bm8KKyAgIC0td2l0aC1saWJpY29udi1wcmVmaXhbPURJUl0gIHNlYXJjaCBmb3IgbGliaWNvbnYgaW4gRElSL2luY2x1ZGUgYW5kIERJUi9saWIKK0BAIC01MTYwLDggKzUxNjYsOCBAQCBlc2FjCisgCisgCisgCistbWFjcm9fdmVyc2lvbj0nMi4yLjdhJworLW1hY3JvX3JldmlzaW9uPScxLjMxMzQnCisrbWFjcm9fdmVyc2lvbj0nMi40JworK21hY3JvX3JldmlzaW9uPScxLjMyOTMnCisgCisgCisgCitAQCAtNTIwMSw3ICs1MjA3LDcgQEAgRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncy4uLiAiID4mNjsgfQorICMgVGVzdCBwcmludCBmaXJzdCwgYmVjYXVzZSBpdCB3aWxsIGJlIGEgYnVpbHRpbiBpZiBwcmVzZW50LgorLWlmIHRlc3QgIlhgcHJpbnQgLXIgLS0gLW4gMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCisraWYgdGVzdCAiWGAoIHByaW50IC1yIC0tIC1uICkgMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCisgICAgdGVzdCAiWGBwcmludCAtciAtLSAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KKyAgIEVDSE89J3ByaW50IC1yIC0tJworIGVsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCitAQCAtNTg4Nyw4ICs1ODkzLDggQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgc29tZSBYU0kgY29uc3RydWN0cy4uLiAiID4mNjsKKyAjIFRyeSBzb21lIFhTSSBmZWF0dXJlcworIHhzaV9zaGVsbD1ubworICggX2x0X2R1bW15PSJhL2IvYyIKKy0gIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCistICAgICAgPSBjLGEvYiwsIFwKKysgIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCR7X2x0X2R1bW15Iz8/fSIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCisrICAgICAgPSBjLGEvYixiL2MsIFwKKyAgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAorICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAorICAgJiYgeHNpX3NoZWxsPXllcworQEAgLTU5MzcsNiArNTk0Myw4MCBAQCBlc2FjCisgCisgCisgCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3ZfdG9faG9zdF9maWxlX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhc2UgJGhvc3QgaW4KKysgICotKi1taW5ndyogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysgICAgICAgIDs7CisrICAgICAgKi0qLWN5Z3dpbiogKQorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyCisrICAgICAgICA7OworKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworKyAgKi0qLWN5Z3dpbiogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KKysgICAgICAgIDs7CisrICAgICAgKi0qLWN5Z3dpbiogKQorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrICAgICAgICA7OworKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworKyAgKiApICMgdW5oYW5kbGVkIGhvc3RzIChhbmQgIm5vcm1hbCIgbmF0aXZlIGJ1aWxkcykKKysgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrICAgIDs7CisrZXNhYworKworK2ZpCisrCisrdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjY7IH0KKysKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICAjYXNzdW1lIG9yZGluYXJ5IGNyb3NzIHRvb2xzLCBvciBuYXRpdmUgYnVpbGQuCisrbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrY2FzZSAkaG9zdCBpbgorKyAgKi0qLW1pbmd3KiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworK2VzYWMKKysKKytmaQorKworK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY2OyB9CisrCisrCisrCisrCisrCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzLi4uICIgPiY2OyB9CisgaWYgdGVzdCAiJHtsdF9jdl9sZF9yZWxvYWRfZmxhZytzZXR9IiA9IHNldDsgdGhlbiA6CitAQCAtNTk1Myw2ICs2MDMzLDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCisgZXNhYworIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKKyBjYXNlICRob3N0X29zIGluCisrICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisrICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgorKyAgICAgIHJlbG9hZF9jbWRzPWZhbHNlCisrICAgIGZpCisrICAgIDs7CisgICBkYXJ3aW4qKQorICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICAgIHJlbG9hZF9jbWRzPSckTFRDQyAkTFRDRkxBR1MgLW5vc3RkbGliICR7d2x9LXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKK0BAIC02MTIxLDcgKzYyMDYsOCBAQCBtaW5ndyogfCBwdzMyKikKKyAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgXng4NiBhcmNoaXZlIGltcG9ydHxeeDg2IERMTCcKKyAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9J2Z1bmNfd2luMzJfbGliaWQnCisgICBlbHNlCistICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/JworKyAgICAjIEtlZXAgdGhpcyBwYXR0ZXJuIGluIHN5bmMgd2l0aCB0aGUgb25lIGluIGZ1bmNfd2luMzJfbGliaWQuCisrICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IChwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScKKyAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJworICAgZmkKKyAgIDs7CitAQCAtNjI3NSw2ICs2MzYxLDIxIEBAIGVzYWMKKyBmaQorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNQorICRhc19lY2hvICIkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNjsgfQorKworK2ZpbGVfbWFnaWNfZ2xvYj0KKyt3YW50X25vY2FzZWdsb2I9bm8KKytpZiB0ZXN0ICIkYnVpbGQiID0gIiRob3N0IjsgdGhlbgorKyAgY2FzZSAkaG9zdF9vcyBpbgorKyAgbWluZ3cqIHwgcHczMiopCisrICAgIGlmICggc2hvcHQgfCBncmVwIG5vY2FzZWdsb2IgKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKysgICAgICB3YW50X25vY2FzZWdsb2I9eWVzCisrICAgIGVsc2UKKysgICAgICBmaWxlX21hZ2ljX2dsb2I9YGVjaG8gYUFiQmNDZERlRWZGZ0doSGlJakprS2xMbU1uTm9PcFBxUXJSc1N0VHVVdlZ3V3hYeVl6WiB8ICRTRUQgLWUgInMvXCguLlwpL3NcL1tcMV1cL1tcMV1cL2c7L2ciYAorKyAgICBmaQorKyAgICA7OworKyAgZXNhYworK2ZpCisrCisgZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCisgZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCisgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCitAQCAtNjI5MCw5ICs2MzkxLDE2MiBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KKyAKKyAKKyAKKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKytpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2FjX2N2X3Byb2dfRExMVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19ETExUT09MPSIkRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorKyAgICBhY19jdl9wcm9nX0RMTFRPT0w9IiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrRExMVE9PTD0kYWNfY3ZfcHJvZ19ETExUT09MCisraWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJERMTFRPT0wiID4mNQorKyRhc19lY2hvICIkRExMVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrCisrZmkKKytpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19ETExUT09MIjsgdGhlbgorKyAgYWNfY3RfRExMVE9PTD0kRExMVE9PTAorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJkbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgZGxsdG9vbDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfRExMVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSIkYWNfY3RfRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorKyAgICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9ImRsbHRvb2wiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK2FjX2N0X0RMTFRPT0w9JGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTAorK2lmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9ETExUT09MIiA+JjUKKyskYXNfZWNobyAiJGFjX2N0X0RMTFRPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKyAgaWYgdGVzdCAieCRhY19jdF9ETExUT09MIiA9IHg7IHRoZW4KKysgICAgRExMVE9PTD0iZmFsc2UiCisrICBlbHNlCisrICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KKyt5ZXM6KQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CisrYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisrZXNhYworKyAgICBETExUT09MPSRhY19jdF9ETExUT09MCisrICBmaQorK2Vsc2UKKysgIERMTFRPT0w9IiRhY19jdl9wcm9nX0RMTFRPT0wiCisrZmkKKysKKyt0ZXN0IC16ICIkRExMVE9PTCIgJiYgRExMVE9PTD1kbGx0b29sCisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJworKworK2Nhc2UgJGhvc3Rfb3MgaW4KKytjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisrICAjIHR3byBkaWZmZXJlbnQgc2hlbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gbHRtYWluLnNoCisrICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCisrICBjYXNlIGAkRExMVE9PTCAtLWhlbHAgMj4mMWAgaW4KKysgICotLWlkZW50aWZ5LXN0cmljdCopCisrICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgorKyAgICA7OworKyAgKikKKysgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrCisrICAgIDs7CisrICBlc2FjCisrICA7OworKyopCisrICAjIGZhbGxiYWNrOiBhc3N1bWUgbGlua2xpYiBJUyBzaGFyZWRsaWIKKysgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSIkRUNITyIKKysgIDs7CisrZXNhYworKworK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY2OyB9Cisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisrdGVzdCAteiAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiAmJiBzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kRUNITworKworKworKworKworKworKworKworIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKy0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1hciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCistc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDIKKysgIGZvciBhY19wcm9nIGluIGFyCisrICBkbworKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisgaWYgdGVzdCAiJHthY19jdl9wcm9nX0FSK3NldH0iID0gc2V0OyB0aGVuIDoKK0BAIC02MzA4LDcgKzY1NjIsNyBAQCBkbworICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCistICAgIGFjX2N2X3Byb2dfQVI9IiR7YWNfdG9vbF9wcmVmaXh9YXIiCisrICAgIGFjX2N2X3Byb2dfQVI9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgorICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICAgYnJlYWsgMgorICAgZmkKK0BAIC02MzI4LDExICs2NTgyLDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9CisgZmkKKyAKKyAKKysgICAgdGVzdCAtbiAiJEFSIiAmJiBicmVhaworKyAgZG9uZQorIGZpCistaWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQVIiOyB0aGVuCisraWYgdGVzdCAteiAiJEFSIjsgdGhlbgorICAgYWNfY3RfQVI9JEFSCistICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKy1zZXQgZHVtbXkgYXI7IGFjX3dvcmQ9JDIKKysgIGZvciBhY19wcm9nIGluIGFyCisrZG8KKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKyBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfQVIrc2V0fSIgPSBzZXQ7IHRoZW4gOgorQEAgLTYzNDgsNyArNjYwNiw3IEBAIGRvCisgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKy0gICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iYXIiCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9IiRhY19wcm9nIgorICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICAgYnJlYWsgMgorICAgZmkKK0BAIC02MzY3LDYgKzY2MjUsMTAgQEAgZWxzZQorICRhc19lY2hvICJubyIgPiY2OyB9CisgZmkKKyAKKysKKysgIHRlc3QgLW4gIiRhY19jdF9BUiIgJiYgYnJlYWsKKytkb25lCisrCisgICBpZiB0ZXN0ICJ4JGFjX2N0X0FSIiA9IHg7IHRoZW4KKyAgICAgQVI9ImZhbHNlIgorICAgZWxzZQorQEAgLTYzNzgsMTIgKzY2NDAsMTAgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisgZXNhYworICAgICBBUj0kYWNfY3RfQVIKKyAgIGZpCistZWxzZQorLSAgQVI9IiRhY19jdl9wcm9nX0FSIgorIGZpCisgCistdGVzdCAteiAiJEFSIiAmJiBBUj1hcgorLXRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1CisrOiAke0FSPWFyfQorKzogJHtBUl9GTEFHUz1jcnV9CisgCisgCisgCitAQCAtNjM5NSw2ICs2NjU1LDY0IEBAIHRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1CisgCisgCisgCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2x0X2N2X2FyX2F0X2ZpbGUrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9hcl9hdF9maWxlPW5vCisrICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKysKKytpbnQKKyttYWluICgpCisreworKworKyAgOworKyAgcmV0dXJuIDA7CisrfQorK19BQ0VPRgorK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKysgIGVjaG8gY29uZnRlc3QuJGFjX29iamV4dCA+IGNvbmZ0ZXN0LmxzdAorKyAgICAgIGx0X2FyX3RyeT0nJEFSICRBUl9GTEFHUyBsaWJjb25mdGVzdC5hIEBjb25mdGVzdC5sc3QgPiY1JworKyAgICAgIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1CisrICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1CisrICBhY19zdGF0dXM9JD8KKysgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQorKyAgICAgIGlmIHRlc3QgIiRhY19zdGF0dXMiIC1lcSAwOyB0aGVuCisrCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCisrCXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgbGliY29uZnRlc3QuYQorKwl7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQorKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQorKyAgYWNfc3RhdHVzPSQ/CisrICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKysgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KKysJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KKysgICAgICAgICAgbHRfY3ZfYXJfYXRfZmlsZT1ACisrICAgICAgICBmaQorKyAgICAgIGZpCisrICAgICAgcm0gLWYgY29uZnRlc3QuKiBsaWJjb25mdGVzdC5hCisrCisrZmkKKytybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKysKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfYXJfYXRfZmlsZSIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9hcl9hdF9maWxlIiA+JjY7IH0KKysKKytpZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCisrICBhcmNoaXZlcl9saXN0X3NwZWM9CisrZWxzZQorKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCisrZmkKKysKKysKKysKKysKKysKKysKKysKKyBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9c3RyaXAiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorIHNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fXN0cmlwOyBhY193b3JkPSQyCitAQCAtNjcyOSw4ICs3MDQ3LDggQEAgZXNhYworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCisgCisgIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gc3ltYm9sIG5hbWUgYW5kIHN5bWJvbCBhZGRyZXNzCistbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKy1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKytsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorIAorICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgorIG9wdF9jcj0KK0BAIC02NzY2LDYgKzcwODQsNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCisgICBlbHNlCisgICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbCSBdXCgkc3ltY29kZSRzeW1jb2RlKlwpWwkgXVsJIF0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCisgICBmaQorKyAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0iJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgfCBzZWQgJy8gX19nbnVfbHRvL2QnIgorIAorICAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgcGlwZSB3b3JrcyBjb3JyZWN0bHkuCisgICBwaXBlX3dvcmtzPW5vCitAQCAtNjgwNyw2ICs3MTI2LDE4IEBAIF9MVF9FT0YKKyAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgorIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKyAJICBjYXQgPDxfTFRfRU9GID4gY29uZnRlc3QuJGFjX2V4dAorKy8qIEtlZXAgdGhpcyBjb2RlIGluIHN5bmMgYmV0d2VlbiBsaWJ0b29sLm00LCBsdG1haW4sIGx0X3N5c3RlbS5oLCBhbmQgdGVzdHMuICAqLworKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCisrLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZSBydW50aW1lCisrICAgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uIG9uIHBzZXVkby1yZWxvY3MuICAqLworKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCisrI2VsaWYgZGVmaW5lZChfX29zZl9fKQorKy8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEuICAqLworKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCisrI2Vsc2UKKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVCBjb25zdAorKyNlbmRpZgorKworICNpZmRlZiBfX2NwbHVzcGx1cworIGV4dGVybiAiQyIgeworICNlbmRpZgorQEAgLTY4MTgsNyArNzE0OSw3IEBAIF9MVF9FT0YKKyAJICBjYXQgPDxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKKyAKKyAvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCistY29uc3Qgc3RydWN0IHsKKytMVF9ETFNZTV9DT05TVCBzdHJ1Y3QgeworICAgY29uc3QgY2hhciAqbmFtZTsKKyAgIHZvaWQgICAgICAgKmFkZHJlc3M7CisgfQorQEAgLTY4NDQsOCArNzE3NSw4IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7CisgX0xUX0VPRgorIAkgICMgTm93IHRyeSBsaW5raW5nIHRoZSB0d28gZmlsZXMuCisgCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0CistCSAgbHRfc2F2ZV9MSUJTPSIkTElCUyIKKy0JICBsdF9zYXZlX0NGTEFHUz0iJENGTEFHUyIKKysJICBsdF9nbG9ic3ltX3NhdmVfTElCUz0kTElCUworKwkgIGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1M9JENGTEFHUworIAkgIExJQlM9ImNvbmZ0c3RtLiRhY19vYmpleHQiCisgCSAgQ0ZMQUdTPSIkQ0ZMQUdTJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIgorIAkgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19saW5rXCIiOyB9ID4mNQorQEAgLTY4NTUsOCArNzE4Niw4IEBAIF9MVF9FT0YKKyAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgorIAkgICAgcGlwZV93b3Jrcz15ZXMKKyAJICBmaQorLQkgIExJQlM9IiRsdF9zYXZlX0xJQlMiCistCSAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCisrCSAgTElCUz0kbHRfZ2xvYnN5bV9zYXZlX0xJQlMKKysJICBDRkxBR1M9JGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1MKKyAJZWxzZQorIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mNQorIAlmaQorQEAgLTY4OTMsNiArNzIyNCwyMSBAQCBlbHNlCisgJGFzX2VjaG8gIm9rIiA+JjY7IH0KKyBmaQorIAorKyMgUmVzcG9uc2UgZmlsZSBzdXBwb3J0LgorK2lmIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIk1TIGR1bXBiaW4iOyB0aGVuCisrICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKKytlbGlmICROTSAtLWhlbHAgMj4vZGV2L251bGwgfCBncmVwICdbQF1GSUxFJyA+L2Rldi9udWxsOyB0aGVuCisrICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKKytmaQorKworKworKworKworKworKworKworKworKworIAorIAorIAorQEAgLTY5MDgsNiArNzI1NCw0MCBAQCBmaQorIAorIAorIAorKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN5c3Jvb3QiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzeXNyb290Li4uICIgPiY2OyB9CisrCisrIyBDaGVjayB3aGV0aGVyIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Qgd2FzIGdpdmVuLgorK2lmIHRlc3QgIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgd2l0aHZhbD0kd2l0aF9saWJ0b29sX3N5c3Jvb3Q7CisrZWxzZQorKyAgd2l0aF9saWJ0b29sX3N5c3Jvb3Q9bm8KKytmaQorKworKworK2x0X3N5c3Jvb3Q9CisrY2FzZSAke3dpdGhfbGlidG9vbF9zeXNyb290fSBpbiAjKAorKyB5ZXMpCisrICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKysgICAgIGx0X3N5c3Jvb3Q9YCRDQyAtLXByaW50LXN5c3Jvb3QgMj4vZGV2L251bGxgCisrICAgZmkKKysgICA7OyAjKAorKyAvKikKKysgICBsdF9zeXNyb290PWBlY2hvICIkd2l0aF9saWJ0b29sX3N5c3Jvb3QiIHwgc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKKysgICA7OyAjKAorKyBub3wnJykKKysgICA7OyAjKAorKyAqKQorKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY1CisrJGFzX2VjaG8gIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjY7IH0KKysgICBhc19mbl9lcnJvciAiVGhlIHN5c3Jvb3QgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLiIgIiRMSU5FTk8iIDUKKysgICA7OworK2VzYWMKKysKKysgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7bHRfc3lzcm9vdDotbm99IiA+JjUKKyskYXNfZWNobyAiJHtsdF9zeXNyb290Oi1ub30iID4mNjsgfQorIAorIAorIAorQEAgLTcxMjAsNiArNzUwMCwxMjMgQEAgZXNhYworIAorIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgorIAorK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1tdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9bXQ7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHthY19jdl9wcm9nX01BTklGRVNUX1RPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJE1BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIke2FjX3Rvb2xfcHJlZml4fW10IgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKytNQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wKKytpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTUFOSUZFU1RfVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRNQU5JRkVTVF9UT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysKKytmaQorK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdF9NQU5JRkVTVF9UT09MPSRNQU5JRkVTVF9UT09MCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgbXQ7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0iJGFjX2N0X01BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSJtdCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrYWNfY3RfTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MCisraWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNQorKyRhc19lY2hvICIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrICBpZiB0ZXN0ICJ4JGFjX2N0X01BTklGRVNUX1RPT0wiID0geDsgdGhlbgorKyAgICBNQU5JRkVTVF9UT09MPSI6IgorKyAgZWxzZQorKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCisreWVzOikKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorK2FjX3Rvb2xfd2FybmVkPXllcyA7OworK2VzYWMKKysgICAgTUFOSUZFU1RfVE9PTD0kYWNfY3RfTUFOSUZFU1RfVE9PTAorKyAgZmkKKytlbHNlCisrICBNQU5JRkVTVF9UT09MPSIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIgorK2ZpCisrCisrdGVzdCAteiAiJE1BTklGRVNUX1RPT0wiICYmIE1BTklGRVNUX1RPT0w9bXQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9bm8KKysgIGVjaG8gIiRhc19tZTokTElORU5POiAkTUFOSUZFU1RfVE9PTCAnLT8nIiA+JjUKKysgICRNQU5JRkVTVF9UT09MICctPycgMj5jb25mdGVzdC5lcnIgPiBjb25mdGVzdC5vdXQKKysgIGNhdCBjb25mdGVzdC5lcnIgPiY1CisrICBpZiAkR1JFUCAnTWFuaWZlc3QgVG9vbCcgY29uZnRlc3Qub3V0ID4gL2Rldi9udWxsOyB0aGVuCisrICAgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD15ZXMKKysgIGZpCisrICBybSAtZiBjb25mdGVzdCoKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY2OyB9CisraWYgdGVzdCAieCRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiICE9IHh5ZXM7IHRoZW4KKysgIE1BTklGRVNUX1RPT0w9OgorK2ZpCisrCisrCisrCisrCisrCisgCisgICBjYXNlICRob3N0X29zIGluCisgICAgIHJoYXBzb2R5KiB8IGRhcndpbiopCitAQCAtNzY4Myw2ICs4MTgwLDggQEAgX0xUX0VPRgorICAgICAgICRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMgMj4mNQorICAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JjUKKyAgICAgICAkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyAyPiY1CisrICAgICAgZWNobyAiJFJBTkxJQiBsaWJjb25mdGVzdC5hIiA+JjUKKysgICAgICAkUkFOTElCIGxpYmNvbmZ0ZXN0LmEgMj4mNQorICAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgorIGludCBtYWluKCkgeyByZXR1cm4gMDt9CisgX0xUX0VPRgorQEAgLTc4NzgsNyArODM3Nyw4IEBAIGZpCisgTElCVE9PTF9ERVBTPSIkbHRtYWluIgorIAorICMgQWx3YXlzIHVzZSBvdXIgb3duIGxpYnRvb2wuCistTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpL2xpYnRvb2wnCisrTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpJworK0xJQlRPT0w9IiRMSUJUT09MLyR7aG9zdF9hbGlhc30tbGlidG9vbCIKKyAKKyAKKyAKK0BAIC03OTY3LDcgKzg0NjcsNyBAQCBhaXgzKikKKyBlc2FjCisgCisgIyBHbG9iYWwgdmFyaWFibGVzOgorLW9maWxlPWxpYnRvb2wKKytvZmlsZT0ke2hvc3RfYWxpYXN9LWxpYnRvb2wKKyBjYW5fYnVpbGRfc2hhcmVkPXllcworIAorICMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAorQEAgLTgyNjUsOCArODc2NSw2IEBAIGZpCisgbHRfcHJvZ19jb21waWxlcl9waWM9CisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9CisgCisteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1CistJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAKKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgIGx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCitAQCAtODQzMiw2ICs4OTMwLDEyIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgCWx0X3Byb2dfY29tcGlsZXJfcGljPSctLXNoYXJlZCcKKyAJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy0tc3RhdGljJworIAk7OworKyAgICAgIG5hZ2ZvciopCisrCSMgTkFHIEZvcnRyYW4gY29tcGlsZXIKKysJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLC1XbCwsJworKwlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLVBJQycKKysJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJworKwk7OworICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKKyAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCisgCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCitAQCAtODQ5NCw3ICs4OTk4LDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCisgICAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJworICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCistICAgICAgZjc3KiB8IGY5MCogfCBmOTUqKQorKyAgICAgIGY3NyogfCBmOTAqIHwgZjk1KiB8IHN1bmY3NyogfCBzdW5mOTAqIHwgc3VuZjk1KikKKyAJbHRfcHJvZ19jb21waWxlcl93bD0nLVFvcHRpb24gbGQgJzs7CisgICAgICAgKikKKyAJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCc7OworQEAgLTg1NTEsMTMgKzkwNTUsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgorICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0iJGx0X3Byb2dfY29tcGlsZXJfcGljIC1EUElDIgorICAgICA7OworIGVzYWMKKy17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKKy0kYXNfZWNobyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KKy0KKy0KKy0KKy0KKyAKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWMrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfcHJvZ19jb21waWxlcl9waWMKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQorK2x0X3Byb2dfY29tcGlsZXJfcGljPSRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYworIAorICMKKyAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCitAQCAtODYxOCw2ICs5MTI2LDExIEBAIGZpCisgCisgCisgCisrCisrCisrCisrCisrCisgIworICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KKyAjCitAQCAtODk2OCw3ICs5NDgxLDggQEAgX0xUX0VPRgorICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisgICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPW5vCisgICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKy0gICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS87cy9eLipbIF1fX25tX19cKFteIF0qXClbIF1bXiBdKi9cMSBEQVRBLzsvXklbIF0vZDsvXltBSVRXXVsgXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgICAgIGV4Y2x1ZGVfZXhwc3ltcz0nW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJworIAorICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCitAQCAtOTA2NywxMiArOTU4MSwxMiBAQCBfTFRfRU9GCisgCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCisgCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KKyAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPSctcnBhdGggJGxpYmRpcicKKy0JICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKKysJICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCisgCSAgaWYgdGVzdCAieCRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciID0geHllczsgdGhlbgorIAkgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorIAkgICAgICBlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKy0JICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisrCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKKyAJICBmaQorIAkgIDs7CisgCWVzYWMKK0BAIC05MDg2LDggKzk2MDAsOCBAQCBfTFRfRU9GCisgCWFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKKyAJd2xhcmM9CisgICAgICAgZWxzZQorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBmaQorICAgICAgIDs7CisgCitAQCAtOTEwNSw4ICs5NjE5LDggQEAgX0xUX0VPRgorIAorIF9MVF9FT0YKKyAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZWxzZQorIAlsZF9zaGxpYnM9bm8KKyAgICAgICBmaQorQEAgLTkxNTIsOCArOTY2Niw4IEBAIF9MVF9FT0YKKyAKKyAgICAgKikKKyAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGVsc2UKKyAJbGRfc2hsaWJzPW5vCisgICAgICAgZmkKK0BAIC05MjgzLDcgKzk3OTcsMTMgQEAgX0xUX0VPRgorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nLWJlcm9rJworICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCisgICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCistICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKKytlbHNlCisrICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoXytzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgCisgaW50CitAQCAtOTI5NiwyMiArOTgxNiwyOSBAQCBtYWluICgpCisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorIAorLWx0X2FpeF9saWJwYXRoX3NlZD0nCistICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKy0JL14wLyB7CistCSAgICBzL14wICAqXCguKlwpJC9cMS8KKy0JICAgIHAKKy0JfQorLSAgICB9JworLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCistICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy1maQorKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKKysgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisrCSAgL14wLyB7CisrCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCisrCSAgICAgIHAKKysJICB9CisrICAgICAgfScKKysgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgIGZpCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKKysgIGZpCisrCisrZmkKKysKKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KKytmaQorIAorICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCitAQCAtOTMyMyw3ICs5ODUwLDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAllbHNlCisgCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KKyAJICMgZW1wdHkgZXhlY3V0YWJsZS4KKy0JIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysJIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAorK2Vsc2UKKysgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGhfK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAKKyBpbnQKK0BAIC05MzM2LDIyICs5ODY5LDI5IEBAIG1haW4gKCkKKyBfQUNFT0YKKyBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgCistbHRfYWl4X2xpYnBhdGhfc2VkPScKKy0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworLQkvXjAvIHsKKy0JICAgIHMvXjAgICpcKC4qXCkkL1wxLworLQkgICAgcAorLQl9CistICAgIH0nCistYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KKy0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLWZpCisrICBsdF9haXhfbGlicGF0aF9zZWQ9JworKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKysJICAvXjAvIHsKKysJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KKysJICAgICAgcAorKwkgIH0KKysgICAgICB9JworKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgZmkKKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgorKyAgZmkKKysKKytmaQorKworKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXworK2ZpCisgCisgCSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCitAQCAtOTM5NiwyMCArOTkzNiw2MyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAgICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgorICAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKKyAgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgorLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCistICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKy0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorLSAgICAgIGxpYmV4dD1saWIKKy0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKy0gICAgICBzaHJleHRfY21kcz0iLmRsbCIKKy0gICAgICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCistICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKKy0gICAgICAjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgorLSAgICAgIG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCistICAgICAgIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KKy0gICAgICBvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCistICAgICAgZml4X3NyY2ZpbGVfcGF0aD0nYGN5Z3BhdGggLXcgIiRzcmNmaWxlImAnCistICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorKyAgICAgIGNsKikKKysJIyBOYXRpdmUgTVNWQworKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorKwlhbHdheXNfZXhwb3J0X3N5bWJvbHM9eWVzCisrCWZpbGVfbGlzdF9zcGVjPSdAJworKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorKwlsaWJleHQ9bGliCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorKwlzaHJleHRfY21kcz0iLmRsbCIKKysJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgorKwkgICAgc2VkIC1uIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgLWUgJzFcXFwhcCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICBlbHNlCisrCSAgICBzZWQgLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworKwkgIGZpfgorKwkgICRDQyAtbyAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgIkAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5leHAiIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn4KKysJICBsaW5rbmFtZXM9JworKwkjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCisrCSMgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCApPSd0cnVlJworKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworKwlleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSxEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrCSMgRG9uJ3QgdXNlIHJhbmxpYgorKwlvbGRfcG9zdGluc3RhbGxfY21kcz0nY2htb2QgNjQ0ICRvbGRsaWInCisrCXBvc3RsaW5rX2NtZHM9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KKysJICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgorKwkgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KKysJICAgICouZXhlfCouRVhFKSA7OworKwkgICAgKikKKysJICAgICAgbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgorKwkgICAgICBsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgorKwkgICAgICA7OworKwkgIGVzYWN+CisrCSAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KKysJICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7CisrCSAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKKysJICBmaScKKysJOzsKKysgICAgICAqKQorKwkjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKKysJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKysJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKysJbGliZXh0PWxpYgorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKysJc2hyZXh0X2NtZHM9Ii5kbGwiCisrCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKysJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKKysJIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KKysJb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKKysJIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KKysJb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJworKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworKwk7OworKyAgICAgIGVzYWMKKyAgICAgICA7OworIAorICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQorQEAgLTk0NzAsNyArMTAwNTMsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgorICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCistICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCisgICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcworICAgICAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9bm8KK0BAIC05NDc4LDcgKzEwMDYxLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCisgICAgIGhwdXg5KikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisrCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICAgZWxzZQorIAlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRMRCAtYiArYiAkaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgIGZpCitAQCAtOTQ5NCw3ICsxMDA3Nyw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICBocHV4MTAqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICAgZWxzZQorIAlhcmNoaXZlX2NtZHM9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCisgICAgICAgZmkKK0BAIC05NTE4LDEwICsxMDEwMSwxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCWlhNjQqKQorLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJKikKKy0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAllc2FjCisgICAgICAgZWxzZQorQEAgLTk2MDAsMjMgKzEwMTgzLDM2IEBAIGZpCisgCisgICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCSMgVHJ5IHRvIHVzZSB0aGUgLWV4cG9ydGVkX3N5bWJvbCBsZCBvcHRpb24sIGlmIGl0IGRvZXMgbm90CisgCSMgd29yaywgYXNzdW1lIHRoYXQgLWV4cG9ydHNfZmlsZSBkb2VzIG5vdCB3b3JrIGVpdGhlciBhbmQKKyAJIyBpbXBsaWNpdGx5IGV4cG9ydCBhbGwgc3ltYm9scy4KKy0gICAgICAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCistICAgICAgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCistICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCisrCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorKwkgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCisrCSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCistaW50IGZvbyh2b2lkKSB7fQorK2ludCBmb28gKHZvaWQpIHsgcmV0dXJuIDA7IH0KKyBfQUNFT0YKKyBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CistICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCistCisrICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD15ZXMKKytlbHNlCisrICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD1ubworIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorKyAgICAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNjsgfQorKwlpZiB0ZXN0ICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID0geWVzOyB0aGVuCisrICAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWZpCisgICAgICAgZWxzZQorIAlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKK0BAIC05NzAxLDcgKzEwMjk3LDcgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIG9zZjQqIHwgb3NmNSopCSMgYXMgb3NmMyogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZworICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworICAgICAgIGVsc2UKKyAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCitAQCAtOTcyMCw5ICsxMDMxNiw5IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICAgIG5vX3VuZGVmaW5lZF9mbGFnPScgLXogZGVmcycKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorIAl3bGFyYz0nJHt3bH0nCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+CistCSAgJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKysJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKyAgICAgICBlbHNlCisgCWNhc2UgYCRDQyAtViAyPiYxYCBpbgorIAkqIkNvbXBpbGVycyA1LjAiKikKK0BAIC0xMDI5OCw4ICsxMDg5NCw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgIG5lZWRfdmVyc2lvbj1ubworICAgbmVlZF9saWJfcHJlZml4PW5vCisgCistICBjYXNlICRHQ0MsJGhvc3Rfb3MgaW4KKy0gIHllcyxjeWd3aW4qIHwgeWVzLG1pbmd3KiB8IHllcyxwdzMyKiB8IHllcyxjZWdjYyopCisrICBjYXNlICRHQ0MsJGNjX2Jhc2VuYW1lIGluCisrICB5ZXMsKikKKysgICAgIyBnY2MKKyAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKKyAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcworICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KK0BAIC0xMDMzMiwxMyArMTA5MjksNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKKyAgICAgICA7OworICAgICBlc2FjCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisrICAgIDs7CisrCisrICAqLGNsKikKKysgICAgIyBOYXRpdmUgTVNWQworKyAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJworKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisrICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJworKworKyAgICBjYXNlICRidWlsZF9vcyBpbgorKyAgICBtaW5ndyopCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQorKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKKysgICAgICBJRlM9JzsnCisrICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgorKyAgICAgIGRvCisrICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCisrICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgorKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCisrICAgICAgZG9uZQorKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKKysgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFthLXpBLVpdXFwpOnwgL1xcMXxnJyAtZSAnc3xeIHx8J2AKKysgICAgICA7OworKyAgICBjeWd3aW4qKQorKyAgICAgICMgQ29udmVydCB0byB1bml4IGZvcm0sIHRoZW4gdG8gZG9zIGZvcm0sIHRoZW4gYmFjayB0byB1bml4IGZvcm0KKysgICAgICAjIGJ1dCB0aGlzIHRpbWUgZG9zIHN0eWxlIChubyBzcGFjZXMhKSBzbyB0aGF0IHRoZSB1bml4IGZvcm0gbG9va3MKKysgICAgICAjIGxpa2UgL2N5Z2RyaXZlL2MvUFJPR1JBfjE6L2N5Z2RyLi4uCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRMSUIiYAorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS1kb3MgIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIDI+L2Rldi9udWxsYAorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisrICAgICAgOzsKKysgICAgKikKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCisrICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsOyB0aGVuCisrICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRILgorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKKysgICAgICBlbHNlCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisrICAgICAgZmkKKysgICAgICAjIEZJWE1FOiBmaW5kIHRoZSBzaG9ydCBuYW1lIG9yIHRoZSBwYXRoIGNvbXBvbmVudHMsIGFzIHNwYWNlcyBhcmUKKysgICAgICAjIGNvbW1vbi4gKGUuZy4gIlByb2dyYW0gRmlsZXMiIC0+ICJQUk9HUkF+MSIpCisrICAgICAgOzsKKysgICAgZXNhYworKworKyAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCisrICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgorKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisrICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgorKyAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgorKyAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZScKKysgICAgcG9zdHVuaW5zdGFsbF9jbWRzPSdkbGRsbD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGZpbGU7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKysgICAgICBkbHBhdGg9JGRpci9cJGRsZGxsfgorKyAgICAgICAkUk0gXCRkbHBhdGgnCisrICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxpbmsuZXhlJworICAgICA7OworIAorICAgKikKKysgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCisgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworICAgICA7OworICAgZXNhYworLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKyAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgorICAgc2hsaWJwYXRoX3Zhcj1QQVRICisgICA7OworQEAgLTEwNDMwLDcgKzExMDg1LDcgQEAgaGFpa3UqKQorICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICisgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCistICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3QvYmVvcy9zeXN0ZW0vbGliJworKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L3N5c3RlbS9saWInCisgICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCisgICA7OworIAorQEAgLTExMjcwLDEwICsxMTkyNSwxMCBAQCBlbHNlCisgLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAorICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KKyAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKKy12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKyAjZW5kaWYKKyAKKy12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KKytpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KKyBpbnQgbWFpbiAoKQorIHsKKyAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOworQEAgLTExMzc2LDEwICsxMjAzMSwxMCBAQCBlbHNlCisgLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAorICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KKyAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKKy12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKyAjZW5kaWYKKyAKKy12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KKytpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KKyBpbnQgbWFpbiAoKQorIHsKKyAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOworQEAgLTE1NDQ2LDEzICsxNjEwMSwyMCBAQCBleGVleHQ9J2AkRUNITyAiJGV4ZWV4dCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfdW5zZXQ9J2AkRUNITyAiJGx0X3Vuc2V0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9TUDJOTD0nYCRFQ0hPICIkbHRfU1AyTkwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X05MMlNQPSdgJEVDSE8gIiRsdF9OTDJTUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfY3ZfdG9faG9zdF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgcmVsb2FkX2ZsYWc9J2AkRUNITyAiJHJlbG9hZF9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyByZWxvYWRfY21kcz0nYCRFQ0hPICIkcmVsb2FkX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIE9CSkRVTVA9J2AkRUNITyAiJE9CSkRVTVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSdgJEVDSE8gIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZmlsZV9tYWdpY19jbWQ9J2AkRUNITyAiJGZpbGVfbWFnaWNfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytmaWxlX21hZ2ljX2dsb2I9J2AkRUNITyAiJGZpbGVfbWFnaWNfZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrd2FudF9ub2Nhc2VnbG9iPSdgJEVDSE8gIiR3YW50X25vY2FzZWdsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK0RMTFRPT0w9J2AkRUNITyAiJERMTFRPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSdgJEVDSE8gIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgQVI9J2AkRUNITyAiJEFSIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBBUl9GTEFHUz0nYCRFQ0hPICIkQVJfRkxBR1MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2FyY2hpdmVyX2xpc3Rfc3BlYz0nYCRFQ0hPICIkYXJjaGl2ZXJfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBTVFJJUD0nYCRFQ0hPICIkU1RSSVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIFJBTkxJQj0nYCRFQ0hPICIkUkFOTElCIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBvbGRfcG9zdGluc3RhbGxfY21kcz0nYCRFQ0hPICIkb2xkX3Bvc3RpbnN0YWxsX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTE1NDY3LDE0ICsxNjEyOSwxNyBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRTRUQgIiRkZQorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytubV9maWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkbm1fZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X3N5c3Jvb3Q9J2AkRUNITyAiJGx0X3N5c3Jvb3QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG9iamRpcj0nYCRFQ0hPICIkb2JqZGlyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBNQUdJQ19DTUQ9J2AkRUNITyAiJE1BR0lDX0NNRCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWc9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKy1sdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9waWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfY3ZfcHJvZ19jb21waWxlcl9jX289J2AkRUNITyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBuZWVkX2xvY2tzPSdgJEVDSE8gIiRuZWVkX2xvY2tzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytNQU5JRkVTVF9UT09MPSdgJEVDSE8gIiRNQU5JRkVTVF9UT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBEU1lNVVRJTD0nYCRFQ0hPICIkRFNZTVVUSUwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIE5NRURJVD0nYCRFQ0hPICIkTk1FRElUIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBMSVBPPSdgJEVDSE8gIiRMSVBPIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xNTUwNywxMiArMTYxNzIsMTIgQEAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj0nYCRFQ0hPICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3EKKyBoYXJkY29kZV9hdXRvbWF0aWM9J2AkRUNITyAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgaW5oZXJpdF9ycGF0aD0nYCRFQ0hPICIkaW5oZXJpdF9ycGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbGlua19hbGxfZGVwbGlicz0nYCRFQ0hPICIkbGlua19hbGxfZGVwbGlicyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCistZml4X3NyY2ZpbGVfcGF0aD0nYCRFQ0hPICIkZml4X3NyY2ZpbGVfcGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSdgJEVDSE8gIiRhbHdheXNfZXhwb3J0X3N5bWJvbHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGV4cG9ydF9zeW1ib2xzX2NtZHM9J2AkRUNITyAiJGV4cG9ydF9zeW1ib2xzX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGV4Y2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkZXhjbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBpbmNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgcHJlbGlua19jbWRzPSdgJEVDSE8gIiRwcmVsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK3Bvc3RsaW5rX2NtZHM9J2AkRUNITyAiJHBvc3RsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRmaWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbms9J2AkRUNITyAiJHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBuZWVkX2xpYl9wcmVmaXg9J2AkRUNITyAiJG5lZWRfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTU1NjcsOCArMTYyMzIsMTMgQEAgcmVsb2FkX2ZsYWcgXAorIE9CSkRVTVAgXAorIGRlcGxpYnNfY2hlY2tfbWV0aG9kIFwKKyBmaWxlX21hZ2ljX2NtZCBcCisrZmlsZV9tYWdpY19nbG9iIFwKKyt3YW50X25vY2FzZWdsb2IgXAorK0RMTFRPT0wgXAorK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIFwKKyBBUiBcCisgQVJfRkxBR1MgXAorK2FyY2hpdmVyX2xpc3Rfc3BlYyBcCisgU1RSSVAgXAorIFJBTkxJQiBcCisgQ0MgXAorQEAgLTE1NTc4LDEyICsxNjI0OCwxNCBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFwKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCBcCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MgXAorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXggXAorK25tX2ZpbGVfbGlzdF9zcGVjIFwKKyBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyBcCistbHRfcHJvZ19jb21waWxlcl93bCBcCisgbHRfcHJvZ19jb21waWxlcl9waWMgXAorK2x0X3Byb2dfY29tcGlsZXJfd2wgXAorIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIFwKKyBsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyBcCisgbmVlZF9sb2NrcyBcCisrTUFOSUZFU1RfVE9PTCBcCisgRFNZTVVUSUwgXAorIE5NRURJVCBcCisgTElQTyBcCitAQCAtMTU1OTksNyArMTYyNzEsNiBAQCBub191bmRlZmluZWRfZmxhZyBcCisgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBcCisgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCBcCisgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciBcCistZml4X3NyY2ZpbGVfcGF0aCBcCisgZXhjbHVkZV9leHBzeW1zIFwKKyBpbmNsdWRlX2V4cHN5bXMgXAorIGZpbGVfbGlzdF9zcGVjIFwKK0BAIC0xNTYzNSw2ICsxNjMwNiw3IEBAIG1vZHVsZV9jbWRzIFwKKyBtb2R1bGVfZXhwc3ltX2NtZHMgXAorIGV4cG9ydF9zeW1ib2xzX2NtZHMgXAorIHByZWxpbmtfY21kcyBcCisrcG9zdGxpbmtfY21kcyBcCisgcG9zdGluc3RhbGxfY21kcyBcCisgcG9zdHVuaW5zdGFsbF9jbWRzIFwKKyBmaW5pc2hfY21kcyBcCitAQCAtMTYzOTIsNyArMTcwNjQsOCBAQCAkYXNfZWNobyBYIiRmaWxlIiB8CisgIyBOT1RFOiBDaGFuZ2VzIG1hZGUgdG8gdGhpcyBmaWxlIHdpbGwgYmUgbG9zdDogbG9vayBhdCBsdG1haW4uc2guCisgIworICMgICBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsCistIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysjICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKysjICAgICAgICAgICAgICAgICBJbmMuCisgIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKKyAjCisgIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sLgorQEAgLTE2NDk1LDE5ICsxNzE2OCw0MiBAQCBTUDJOTD0kbHRfbHRfU1AyTkwKKyAjIHR1cm4gbmV3bGluZXMgaW50byBzcGFjZXMuCisgTkwyU1A9JGx0X2x0X05MMlNQCisgCisrIyBjb252ZXJ0IFwkYnVpbGQgZmlsZSBuYW1lcyB0byBcJGhvc3QgZm9ybWF0LgorK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKKysKKysjIGNvbnZlcnQgXCRidWlsZCBmaWxlcyB0byB0b29sY2hhaW4gZm9ybWF0LgorK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKKysKKyAjIEFuIG9iamVjdCBzeW1ib2wgZHVtcGVyLgorIE9CSkRVTVA9JGx0X09CSkRVTVAKKyAKKyAjIE1ldGhvZCB0byBjaGVjayB3aGV0aGVyIGRlcGVuZGVudCBsaWJyYXJpZXMgYXJlIHNoYXJlZCBvYmplY3RzLgorIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9kZXBsaWJzX2NoZWNrX21ldGhvZAorIAorLSMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9PSAiZmlsZV9tYWdpYyIuCisrIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorIGZpbGVfbWFnaWNfY21kPSRsdF9maWxlX21hZ2ljX2NtZAorIAorKyMgSG93IHRvIGZpbmQgcG90ZW50aWFsIGZpbGVzIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCisrZmlsZV9tYWdpY19nbG9iPSRsdF9maWxlX21hZ2ljX2dsb2IKKysKKysjIEZpbmQgcG90ZW50aWFsIGZpbGVzIHVzaW5nIG5vY2FzZWdsb2Igd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KKyt3YW50X25vY2FzZWdsb2I9JGx0X3dhbnRfbm9jYXNlZ2xvYgorKworKyMgRExMIGNyZWF0aW9uIHByb2dyYW0uCisrRExMVE9PTD0kbHRfRExMVE9PTAorKworKyMgQ29tbWFuZCB0byBhc3NvY2lhdGUgc2hhcmVkIGFuZCBsaW5rIGxpYnJhcmllcy4KKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKKysKKyAjIFRoZSBhcmNoaXZlci4KKyBBUj0kbHRfQVIKKysKKysjIEZsYWdzIHRvIGNyZWF0ZSBhbiBhcmNoaXZlLgorIEFSX0ZMQUdTPSRsdF9BUl9GTEFHUworIAorKyMgSG93IHRvIGZlZWQgYSBmaWxlIGxpc3RpbmcgdG8gdGhlIGFyY2hpdmVyLgorK2FyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfYXJjaGl2ZXJfbGlzdF9zcGVjCisrCisgIyBBIHN5bWJvbCBzdHJpcHBpbmcgcHJvZ3JhbS4KKyBTVFJJUD0kbHRfU1RSSVAKKyAKK0BAIC0xNjUzNyw2ICsxNzIzMywxMiBAQCBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcworICMgVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBDIG5hbWUgYWRkcmVzcyBwYWlyIHdoZW4gbGliIHByZWZpeCBpcyBuZWVkZWQuCisgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4CisgCisrIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMgZm9yIFwkTk0uCisrbm1fZmlsZV9saXN0X3NwZWM9JGx0X25tX2ZpbGVfbGlzdF9zcGVjCisrCisrIyBUaGUgcm9vdCB3aGVyZSB0byBzZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMsYW5kIGluIHdoaWNoIG91ciBsaWJyYXJpZXMgc2hvdWxkIGJlIGluc3RhbGxlZC4KKytsdF9zeXNyb290PSRsdF9zeXNyb290CisrCisgIyBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgdGVtcG9yYXJ5IGxpYnRvb2wgZmlsZXMuCisgb2JqZGlyPSRvYmpkaXIKKyAKK0BAIC0xNjU0Niw2ICsxNzI0OCw5IEBAIE1BR0lDX0NNRD0kTUFHSUNfQ01ECisgIyBNdXN0IHdlIGxvY2sgZmlsZXMgd2hlbiBkb2luZyBjb21waWxhdGlvbj8KKyBuZWVkX2xvY2tzPSRsdF9uZWVkX2xvY2tzCisgCisrIyBNYW5pZmVzdCB0b29sLgorK01BTklGRVNUX1RPT0w9JGx0X01BTklGRVNUX1RPT0wKKysKKyAjIFRvb2wgdG8gbWFuaXB1bGF0ZSBhcmNoaXZlZCBEV0FSRiBkZWJ1ZyBzeW1ib2wgZmlsZXMgb24gTWFjIE9TIFguCisgRFNZTVVUSUw9JGx0X0RTWU1VVElMCisgCitAQCAtMTY2NjAsMTIgKzE3MzY1LDEyIEBAIHdpdGhfZ2NjPSRHQ0MKKyAjIENvbXBpbGVyIGZsYWcgdG8gdHVybiBvZmYgYnVpbHRpbiBmdW5jdGlvbnMuCisgbm9fYnVpbHRpbl9mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZworIAorLSMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KKy13bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAorLQorICMgQWRkaXRpb25hbCBjb21waWxlciBmbGFncyBmb3IgYnVpbGRpbmcgbGlicmFyeSBvYmplY3RzLgorIHBpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3BpYworIAorKyMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KKyt3bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAorKworICMgQ29tcGlsZXIgZmxhZyB0byBwcmV2ZW50IGR5bmFtaWMgbGlua2luZy4KKyBsaW5rX3N0YXRpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3N0YXRpYworIAorQEAgLTE2NzUyLDkgKzE3NDU3LDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aAorICMgV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzLgorIGxpbmtfYWxsX2RlcGxpYnM9JGxpbmtfYWxsX2RlcGxpYnMKKyAKKy0jIEZpeCB0aGUgc2hlbGwgdmFyaWFibGUgXCRzcmNmaWxlIGZvciB0aGUgY29tcGlsZXIuCistZml4X3NyY2ZpbGVfcGF0aD0kbHRfZml4X3NyY2ZpbGVfcGF0aAorLQorICMgU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkLgorIGFsd2F5c19leHBvcnRfc3ltYm9scz0kYWx3YXlzX2V4cG9ydF9zeW1ib2xzCisgCitAQCAtMTY3NzAsNiArMTc0NzIsOSBAQCBpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltcworICMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXMuCisgcHJlbGlua19jbWRzPSRsdF9wcmVsaW5rX2NtZHMKKyAKKysjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgZmluaXNoaW5nIGxpbmtpbmcgcHJvZ3JhbXMuCisrcG9zdGxpbmtfY21kcz0kbHRfcG9zdGxpbmtfY21kcworKworICMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzLgorIGZpbGVfbGlzdF9zcGVjPSRsdF9maWxlX2xpc3Rfc3BlYworIAorQEAgLTE2ODAyLDIxMCArMTc1MDcsMTY5IEBAIGx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgorICAgIyBpZiBmaW5kcyBtaXhlZCBDUi9MRiBhbmQgTEYtb25seSBsaW5lcy4gIFNpbmNlIHNlZCBvcGVyYXRlcyBpbgorICAgIyB0ZXh0IG1vZGUsIGl0IHByb3Blcmx5IGNvbnZlcnRzIGxpbmVzIHRvIENSL0xGLiAgVGhpcyBiYXNoIHByb2JsZW0KKyAgICMgaXMgcmVwb3J0ZWRseSBmaXhlZCwgYnV0IHdoeSBub3QgcnVuIG9uIG9sZCB2ZXJzaW9ucyB0b28/CistICBzZWQgJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorLQorLSAgY2FzZSAkeHNpX3NoZWxsIGluCistICB5ZXMpCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAorLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLWZ1bmNfZGlybmFtZSAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OworLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7CistICBlc2FjCistfQorLQorLSMgZnVuY19iYXNlbmFtZSBmaWxlCistZnVuY19iYXNlbmFtZSAoKQorLXsKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKKy19CistCistIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KKy0jIGNhbGw6CistIyAgIGRpcm5hbWU6ICBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwKKy0jICAgICAgICAgICAgIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwgb3RoZXJ3aXNlIHNldCByZXN1bHQKKy0jICAgICAgICAgICAgIHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy0jICAgICAgICAgICAgIHZhbHVlIHJldHVybmVkIGluICIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKKy0jICAgYmFzZW5hbWU6IENvbXB1dGUgZmlsZW5hbWUgb2YgRklMRS4KKy0jICAgICAgICAgICAgIHZhbHVlIHJldHVuZWQgaW4gIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKy0jIEltcGxlbWVudGF0aW9uIG11c3QgYmUga2VwdCBzeW5jaHJvbml6ZWQgd2l0aCBmdW5jX2Rpcm5hbWUKKy0jIGFuZCBmdW5jX2Jhc2VuYW1lLiBGb3IgZWZmaWNpZW5jeSwgd2UgZG8gbm90IGRlbGVnYXRlIHRvCistIyB0aG9zZSBmdW5jdGlvbnMgYnV0IGluc3RlYWQgZHVwbGljYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGhlcmUuCistZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OworLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7CistICBlc2FjCistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCistfQorLQorLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCistIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKy0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KKy1mdW5jX3N0cmlwbmFtZSAoKQorLXsKKy0gICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKKy0gICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC4KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9CistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In0KKy19CistCistIyBmdW5jX29wdF9zcGxpdAorLWZ1bmNfb3B0X3NwbGl0ICgpCisteworLSAgZnVuY19vcHRfc3BsaXRfb3B0PSR7MSUlPSp9CistICBmdW5jX29wdF9zcGxpdF9hcmc9JHsxIyo9fQorLX0KKy0KKy0jIGZ1bmNfbG8ybyBvYmplY3QKKy1mdW5jX2xvMm8gKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKKy0gICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7CistICBlc2FjCistfQorLQorLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCistZnVuY194Zm9ybSAoKQorLXsKKy0gIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG8KKy19CistCistIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgorLWZ1bmNfYXJpdGggKCkKKy17CistICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSkKKy19CistCistIyBmdW5jX2xlbiBzdHJpbmcKKy0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCistZnVuY19sZW4gKCkKKy17CistICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX0KKy19CistCistX0xUX0VPRgorLSAgICA7OworLSAgKikgIyBCb3VybmUgY29tcGF0aWJsZSBmdW5jdGlvbnMuCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAorLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLWZ1bmNfZGlybmFtZSAoKQorLXsKKy0gICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCistICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkZGlybmFtZSJgCistICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgorLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgorLSAgZWxzZQorLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCistICBmaQorLX0KKy0KKy0jIGZ1bmNfYmFzZW5hbWUgZmlsZQorLWZ1bmNfYmFzZW5hbWUgKCkKKy17CistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGJhc2VuYW1lImAKKy19CistCistCistIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKKy0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgorLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCistIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCistIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgorLSMgZnVuY19zdHJpcF9zdWZmaXggcHJlZml4IG5hbWUKKy1mdW5jX3N0cmlwbmFtZSAoKQorLXsKKy0gIGNhc2UgJHsyfSBpbgorLSAgICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OworLSAgICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7CistICBlc2FjCistfQorLQorLSMgc2VkIHNjcmlwdHM6CistbXlfc2VkX2xvbmdfb3B0PScxcy9eXCgtW149XSpcKT0uKi9cMS87cScKKy1teV9zZWRfbG9uZ19hcmc9JzFzL14tW149XSo9Ly8nCistCistIyBmdW5jX29wdF9zcGxpdAorLWZ1bmNfb3B0X3NwbGl0ICgpCisteworLSAgZnVuY19vcHRfc3BsaXRfb3B0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfb3B0ImAKKy0gIGZ1bmNfb3B0X3NwbGl0X2FyZz1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX2FyZyJgCistfQorLQorLSMgZnVuY19sbzJvIG9iamVjdAorLWZ1bmNfbG8ybyAoKQorLXsKKy0gIGZ1bmNfbG8yb19yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRsbzJvImAKKy19CistCistIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKKy1mdW5jX3hmb3JtICgpCisteworLSAgZnVuY194Zm9ybV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgJ3MvXC5bXi5dKiQvLmxvLydgCistfQorLQorLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KKy1mdW5jX2FyaXRoICgpCisteworLSAgZnVuY19hcml0aF9yZXN1bHQ9YGV4cHIgIiRAImAKKy19CistCistIyBmdW5jX2xlbiBzdHJpbmcKKy0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCistZnVuY19sZW4gKCkKKy17CistICBmdW5jX2xlbl9yZXN1bHQ9YGV4cHIgIiQxIiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCistfQorLQorLV9MVF9FT0YKKy1lc2FjCistCistY2FzZSAkbHRfc2hlbGxfYXBwZW5kIGluCistICB5ZXMpCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKKy0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KKy1mdW5jX2FwcGVuZCAoKQorLXsKKy0gIGV2YWwgIiQxKz1cJDIiCistfQorLV9MVF9FT0YKKy0gICAgOzsKKy0gICopCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKKy0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KKy1mdW5jX2FwcGVuZCAoKQorLXsKKy0gIGV2YWwgIiQxPVwkJDFcJDIiCistfQorLQorLV9MVF9FT0YKKy0gICAgOzsKKy0gIGVzYWMKKy0KKy0KKy0gIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKy0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKy0KKy0gIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKKysgIHNlZCAnJHEnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKysgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCisrCisrICBpZiB0ZXN0IHgiJHhzaV9zaGVsbCIgPSB4eWVzOyB0aGVuCisrICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lIC9jXAorK2Z1bmNfZGlybmFtZSAoKVwKKyt7XAorK1wgICAgY2FzZSAkezF9IGluXAorK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKKytcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKKytcICAgIGVzYWNcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Jhc2VuYW1lIC9jXAorK2Z1bmNfYmFzZW5hbWUgKClcCisre1wKKytcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAvY1wKKytmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpXAorK3tcCisrXCAgICBjYXNlICR7MX0gaW5cCisrXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAorK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAorK1wgICAgZXNhY1wKKytcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3N0cmlwbmFtZSAoKSQvLC9efSAjIGZ1bmNfc3RyaXBuYW1lIC9jXAorK2Z1bmNfc3RyaXBuYW1lICgpXAorK3tcCisrXCAgICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlXAorK1wgICAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LlwKKytcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9XAorK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In1cCisrXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zdHJpcG5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3NwbGl0X2xvbmdfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9sb25nX29wdCAvY1wKKytmdW5jX3NwbGl0X2xvbmdfb3B0ICgpXAorK3tcCisrXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWU9JHsxJSU9Kn1cCisrXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZz0kezEjKj19XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X2xvbmdfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zcGxpdF9zaG9ydF9vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X3Nob3J0X29wdCAvY1wKKytmdW5jX3NwbGl0X3Nob3J0X29wdCAoKVwKKyt7XAorK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnPSR7MSM/P31cCisrXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lPSR7MSUiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyJ9XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X3Nob3J0X29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfbG8ybyAoKSQvLC9efSAjIGZ1bmNfbG8ybyAvY1wKKytmdW5jX2xvMm8gKClcCisre1wKKytcICAgIGNhc2UgJHsxfSBpblwKKytcICAgICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOztcCisrXCAgICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7O1wKKytcICAgIGVzYWNcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbG8ybyBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfeGZvcm0gKCkkLywvXn0gIyBmdW5jX3hmb3JtIC9jXAorK2Z1bmNfeGZvcm0gKClcCisre1wKKysgICAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sb1wKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY194Zm9ybSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfYXJpdGggKCkkLywvXn0gIyBmdW5jX2FyaXRoIC9jXAorK2Z1bmNfYXJpdGggKClcCisre1wKKysgICAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FyaXRoIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19sZW4gKCkkLywvXn0gIyBmdW5jX2xlbiAvY1wKKytmdW5jX2xlbiAoKVwKKyt7XAorKyAgICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbGVuIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrZmkKKysKKytpZiB0ZXN0IHgiJGx0X3NoZWxsX2FwcGVuZCIgPSB4eWVzOyB0aGVuCisrICBzZWQgLWUgJy9eZnVuY19hcHBlbmQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZCAvY1wKKytmdW5jX2FwcGVuZCAoKVwKKyt7XAorKyAgICBldmFsICIkezF9Kz1cXCR7Mn0iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kX3F1b3RlZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kX3F1b3RlZCAvY1wKKytmdW5jX2FwcGVuZF9xdW90ZWQgKClcCisre1wKKytcICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR7Mn0iXAorK1wgICAgZXZhbCAiJHsxfSs9XFxcXCBcXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kX3F1b3RlZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIHdoZXJlIHBvc3NpYmxlIGJ5IGRpcmVjdCB1c2Ugb2YgJys9JworKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMSs9IiVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCisrICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorK2Vsc2UKKysgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCBldmVuIHdoZW4gJys9JyBpcyBub3QgYXZhaWxhYmxlCisrICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxPSIkXDElZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAorKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKytmaQorKworK2lmIHRlc3QgeCIkX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbCIgPSB4IjoiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mNQorKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mMjt9CisrZmkKKysKKysKKysgICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CisgICAgIChybSAtZiAiJG9maWxlIiAmJiBjcCAiJGNmZ2ZpbGUiICIkb2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZSIpCisgICBjaG1vZCAreCAiJG9maWxlIgorIAorZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQoraW5kZXggZDhhZjE1NWFiNS4uMDA1ZWQ4MjdhYiAxMDA3NTUKKy0tLSBhL2NvbmZpZ3VyZQorKysrIGIvY29uZmlndXJlCitAQCAtMzg0NCw3ICszODQ0LDcgQEAgY2FzZSAiJHt0YXJnZXR9IiBpbgorICAgb3IxayotKi0qKQorICAgICBub2NvbmZpZ2RpcnM9IiRub2NvbmZpZ2RpcnMgZ2RiIgorICAgICA7OworLSAgc2gqLSotKiB8IHNoNjQtKi0qKQorKyAgc2gtKi0qIHwgc2g2NC0qLSopCisgICAgIGNhc2UgIiR7dGFyZ2V0fSIgaW4KKyAgICAgICBzaCotKi1lbGYpCisgICAgICAgICAgOzsKK2RpZmYgLS1naXQgYS9nYXMvY29uZmlndXJlIGIvZ2FzL2NvbmZpZ3VyZQoraW5kZXggOTNhZmIyMGM4Zi4uODFkZDRjYmQ5NyAxMDA3NTUKKy0tLSBhL2dhcy9jb25maWd1cmUKKysrKyBiL2dhcy9jb25maWd1cmUKK0BAIC02NTAsOCArNjUwLDExIEBAIE9UT09MCisgTElQTworIE5NRURJVAorIERTWU1VVElMCisrTUFOSUZFU1RfVE9PTAorIFJBTkxJQgorK2FjX2N0X0FSCisgQVIKKytETExUT09MCisgT0JKRFVNUAorIExOX1MKKyBOTQorQEAgLTc2Myw2ICs3NjYsNyBAQCBlbmFibGVfc3RhdGljCisgd2l0aF9waWMKKyBlbmFibGVfZmFzdF9pbnN0YWxsCisgd2l0aF9nbnVfbGQKKyt3aXRoX2xpYnRvb2xfc3lzcm9vdAorIGVuYWJsZV9saWJ0b29sX2xvY2sKKyBlbmFibGVfcGx1Z2lucworIGVuYWJsZV9sYXJnZWZpbGUKK0BAIC00OTIxLDggKzQ5MjUsOCBAQCBlc2FjCisgCisgCisgCistbWFjcm9fdmVyc2lvbj0nMi4yLjdhJworLW1hY3JvX3JldmlzaW9uPScxLjMxMzQnCisrbWFjcm9fdmVyc2lvbj0nMi40JworK21hY3JvX3JldmlzaW9uPScxLjMyOTMnCisgCisgCisgCitAQCAtNDk2Miw3ICs0OTY2LDcgQEAgRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncy4uLiAiID4mNjsgfQorICMgVGVzdCBwcmludCBmaXJzdCwgYmVjYXVzZSBpdCB3aWxsIGJlIGEgYnVpbHRpbiBpZiBwcmVzZW50LgorLWlmIHRlc3QgIlhgcHJpbnQgLXIgLS0gLW4gMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCisraWYgdGVzdCAiWGAoIHByaW50IC1yIC0tIC1uICkgMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCisgICAgdGVzdCAiWGBwcmludCAtciAtLSAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KKyAgIEVDSE89J3ByaW50IC1yIC0tJworIGVsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCitAQCAtNTY0OCw4ICs1NjUyLDggQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgc29tZSBYU0kgY29uc3RydWN0cy4uLiAiID4mNjsKKyAjIFRyeSBzb21lIFhTSSBmZWF0dXJlcworIHhzaV9zaGVsbD1ubworICggX2x0X2R1bW15PSJhL2IvYyIKKy0gIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCistICAgICAgPSBjLGEvYiwsIFwKKysgIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCR7X2x0X2R1bW15Iz8/fSIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCisrICAgICAgPSBjLGEvYixiL2MsIFwKKyAgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAorICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAorICAgJiYgeHNpX3NoZWxsPXllcworQEAgLTU2OTgsNiArNTcwMiw4MCBAQCBlc2FjCisgCisgCisgCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3ZfdG9faG9zdF9maWxlX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhc2UgJGhvc3QgaW4KKysgICotKi1taW5ndyogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysgICAgICAgIDs7CisrICAgICAgKi0qLWN5Z3dpbiogKQorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyCisrICAgICAgICA7OworKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworKyAgKi0qLWN5Z3dpbiogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KKysgICAgICAgIDs7CisrICAgICAgKi0qLWN5Z3dpbiogKQorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrICAgICAgICA7OworKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworKyAgKiApICMgdW5oYW5kbGVkIGhvc3RzIChhbmQgIm5vcm1hbCIgbmF0aXZlIGJ1aWxkcykKKysgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrICAgIDs7CisrZXNhYworKworK2ZpCisrCisrdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjY7IH0KKysKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICAjYXNzdW1lIG9yZGluYXJ5IGNyb3NzIHRvb2xzLCBvciBuYXRpdmUgYnVpbGQuCisrbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrY2FzZSAkaG9zdCBpbgorKyAgKi0qLW1pbmd3KiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworK2VzYWMKKysKKytmaQorKworK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY2OyB9CisrCisrCisrCisrCisrCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzLi4uICIgPiY2OyB9CisgaWYgdGVzdCAiJHtsdF9jdl9sZF9yZWxvYWRfZmxhZytzZXR9IiA9IHNldDsgdGhlbiA6CitAQCAtNTcxNCw2ICs1NzkyLDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCisgZXNhYworIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKKyBjYXNlICRob3N0X29zIGluCisrICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisrICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgorKyAgICAgIHJlbG9hZF9jbWRzPWZhbHNlCisrICAgIGZpCisrICAgIDs7CisgICBkYXJ3aW4qKQorICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICAgIHJlbG9hZF9jbWRzPSckTFRDQyAkTFRDRkxBR1MgLW5vc3RkbGliICR7d2x9LXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKK0BAIC01ODgyLDcgKzU5NjUsOCBAQCBtaW5ndyogfCBwdzMyKikKKyAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgXng4NiBhcmNoaXZlIGltcG9ydHxeeDg2IERMTCcKKyAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9J2Z1bmNfd2luMzJfbGliaWQnCisgICBlbHNlCistICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/JworKyAgICAjIEtlZXAgdGhpcyBwYXR0ZXJuIGluIHN5bmMgd2l0aCB0aGUgb25lIGluIGZ1bmNfd2luMzJfbGliaWQuCisrICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IChwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScKKyAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJworICAgZmkKKyAgIDs7CitAQCAtNjAzNiw2ICs2MTIwLDIxIEBAIGVzYWMKKyBmaQorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNQorICRhc19lY2hvICIkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNjsgfQorKworK2ZpbGVfbWFnaWNfZ2xvYj0KKyt3YW50X25vY2FzZWdsb2I9bm8KKytpZiB0ZXN0ICIkYnVpbGQiID0gIiRob3N0IjsgdGhlbgorKyAgY2FzZSAkaG9zdF9vcyBpbgorKyAgbWluZ3cqIHwgcHczMiopCisrICAgIGlmICggc2hvcHQgfCBncmVwIG5vY2FzZWdsb2IgKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKysgICAgICB3YW50X25vY2FzZWdsb2I9eWVzCisrICAgIGVsc2UKKysgICAgICBmaWxlX21hZ2ljX2dsb2I9YGVjaG8gYUFiQmNDZERlRWZGZ0doSGlJakprS2xMbU1uTm9PcFBxUXJSc1N0VHVVdlZ3V3hYeVl6WiB8ICRTRUQgLWUgInMvXCguLlwpL3NcL1tcMV1cL1tcMV1cL2c7L2ciYAorKyAgICBmaQorKyAgICA7OworKyAgZXNhYworK2ZpCisrCisgZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCisgZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCisgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCitAQCAtNjA1MSw5ICs2MTUwLDE2MiBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KKyAKKyAKKyAKKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKytpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2FjX2N2X3Byb2dfRExMVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19ETExUT09MPSIkRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorKyAgICBhY19jdl9wcm9nX0RMTFRPT0w9IiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrRExMVE9PTD0kYWNfY3ZfcHJvZ19ETExUT09MCisraWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJERMTFRPT0wiID4mNQorKyRhc19lY2hvICIkRExMVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrCisrZmkKKytpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19ETExUT09MIjsgdGhlbgorKyAgYWNfY3RfRExMVE9PTD0kRExMVE9PTAorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJkbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgZGxsdG9vbDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfRExMVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSIkYWNfY3RfRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorKyAgICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9ImRsbHRvb2wiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK2FjX2N0X0RMTFRPT0w9JGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTAorK2lmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9ETExUT09MIiA+JjUKKyskYXNfZWNobyAiJGFjX2N0X0RMTFRPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKyAgaWYgdGVzdCAieCRhY19jdF9ETExUT09MIiA9IHg7IHRoZW4KKysgICAgRExMVE9PTD0iZmFsc2UiCisrICBlbHNlCisrICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KKyt5ZXM6KQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CisrYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisrZXNhYworKyAgICBETExUT09MPSRhY19jdF9ETExUT09MCisrICBmaQorK2Vsc2UKKysgIERMTFRPT0w9IiRhY19jdl9wcm9nX0RMTFRPT0wiCisrZmkKKysKKyt0ZXN0IC16ICIkRExMVE9PTCIgJiYgRExMVE9PTD1kbGx0b29sCisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJworKworK2Nhc2UgJGhvc3Rfb3MgaW4KKytjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisrICAjIHR3byBkaWZmZXJlbnQgc2hlbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gbHRtYWluLnNoCisrICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCisrICBjYXNlIGAkRExMVE9PTCAtLWhlbHAgMj4mMWAgaW4KKysgICotLWlkZW50aWZ5LXN0cmljdCopCisrICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgorKyAgICA7OworKyAgKikKKysgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrCisrICAgIDs7CisrICBlc2FjCisrICA7OworKyopCisrICAjIGZhbGxiYWNrOiBhc3N1bWUgbGlua2xpYiBJUyBzaGFyZWRsaWIKKysgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSIkRUNITyIKKysgIDs7CisrZXNhYworKworK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY2OyB9Cisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisrdGVzdCAteiAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiAmJiBzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kRUNITworKworKworKworKworKworKworKworIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKy0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1hciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCistc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDIKKysgIGZvciBhY19wcm9nIGluIGFyCisrICBkbworKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisgaWYgdGVzdCAiJHthY19jdl9wcm9nX0FSK3NldH0iID0gc2V0OyB0aGVuIDoKK0BAIC02MDY5LDcgKzYzMjEsNyBAQCBkbworICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCistICAgIGFjX2N2X3Byb2dfQVI9IiR7YWNfdG9vbF9wcmVmaXh9YXIiCisrICAgIGFjX2N2X3Byb2dfQVI9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgorICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICAgYnJlYWsgMgorICAgZmkKK0BAIC02MDg5LDExICs2MzQxLDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9CisgZmkKKyAKKyAKKysgICAgdGVzdCAtbiAiJEFSIiAmJiBicmVhaworKyAgZG9uZQorIGZpCistaWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQVIiOyB0aGVuCisraWYgdGVzdCAteiAiJEFSIjsgdGhlbgorICAgYWNfY3RfQVI9JEFSCistICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKy1zZXQgZHVtbXkgYXI7IGFjX3dvcmQ9JDIKKysgIGZvciBhY19wcm9nIGluIGFyCisrZG8KKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKyBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfQVIrc2V0fSIgPSBzZXQ7IHRoZW4gOgorQEAgLTYxMDksNyArNjM2NSw3IEBAIGRvCisgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKy0gICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iYXIiCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9IiRhY19wcm9nIgorICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICAgYnJlYWsgMgorICAgZmkKK0BAIC02MTI4LDYgKzYzODQsMTAgQEAgZWxzZQorICRhc19lY2hvICJubyIgPiY2OyB9CisgZmkKKyAKKysKKysgIHRlc3QgLW4gIiRhY19jdF9BUiIgJiYgYnJlYWsKKytkb25lCisrCisgICBpZiB0ZXN0ICJ4JGFjX2N0X0FSIiA9IHg7IHRoZW4KKyAgICAgQVI9ImZhbHNlIgorICAgZWxzZQorQEAgLTYxMzksMTIgKzYzOTksMTAgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisgZXNhYworICAgICBBUj0kYWNfY3RfQVIKKyAgIGZpCistZWxzZQorLSAgQVI9IiRhY19jdl9wcm9nX0FSIgorIGZpCisgCistdGVzdCAteiAiJEFSIiAmJiBBUj1hcgorLXRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1CisrOiAke0FSPWFyfQorKzogJHtBUl9GTEFHUz1jcnV9CisgCisgCisgCitAQCAtNjE1Niw2ICs2NDE0LDY0IEBAIHRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1CisgCisgCisgCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2x0X2N2X2FyX2F0X2ZpbGUrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9hcl9hdF9maWxlPW5vCisrICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKysKKytpbnQKKyttYWluICgpCisreworKworKyAgOworKyAgcmV0dXJuIDA7CisrfQorK19BQ0VPRgorK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKysgIGVjaG8gY29uZnRlc3QuJGFjX29iamV4dCA+IGNvbmZ0ZXN0LmxzdAorKyAgICAgIGx0X2FyX3RyeT0nJEFSICRBUl9GTEFHUyBsaWJjb25mdGVzdC5hIEBjb25mdGVzdC5sc3QgPiY1JworKyAgICAgIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1CisrICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1CisrICBhY19zdGF0dXM9JD8KKysgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQorKyAgICAgIGlmIHRlc3QgIiRhY19zdGF0dXMiIC1lcSAwOyB0aGVuCisrCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCisrCXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgbGliY29uZnRlc3QuYQorKwl7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQorKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQorKyAgYWNfc3RhdHVzPSQ/CisrICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKysgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KKysJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KKysgICAgICAgICAgbHRfY3ZfYXJfYXRfZmlsZT1ACisrICAgICAgICBmaQorKyAgICAgIGZpCisrICAgICAgcm0gLWYgY29uZnRlc3QuKiBsaWJjb25mdGVzdC5hCisrCisrZmkKKytybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKysKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfYXJfYXRfZmlsZSIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9hcl9hdF9maWxlIiA+JjY7IH0KKysKKytpZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCisrICBhcmNoaXZlcl9saXN0X3NwZWM9CisrZWxzZQorKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCisrZmkKKysKKysKKysKKysKKysKKysKKysKKyBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9c3RyaXAiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorIHNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fXN0cmlwOyBhY193b3JkPSQyCitAQCAtNjQ5MCw4ICs2ODA2LDggQEAgZXNhYworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCisgCisgIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gc3ltYm9sIG5hbWUgYW5kIHN5bWJvbCBhZGRyZXNzCistbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKy1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKytsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorIAorICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgorIG9wdF9jcj0KK0BAIC02NTI3LDYgKzY4NDMsNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCisgICBlbHNlCisgICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbCSBdXCgkc3ltY29kZSRzeW1jb2RlKlwpWwkgXVsJIF0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCisgICBmaQorKyAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0iJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgfCBzZWQgJy8gX19nbnVfbHRvL2QnIgorIAorICAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgcGlwZSB3b3JrcyBjb3JyZWN0bHkuCisgICBwaXBlX3dvcmtzPW5vCitAQCAtNjU2OCw2ICs2ODg1LDE4IEBAIF9MVF9FT0YKKyAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgorIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKyAJICBjYXQgPDxfTFRfRU9GID4gY29uZnRlc3QuJGFjX2V4dAorKy8qIEtlZXAgdGhpcyBjb2RlIGluIHN5bmMgYmV0d2VlbiBsaWJ0b29sLm00LCBsdG1haW4sIGx0X3N5c3RlbS5oLCBhbmQgdGVzdHMuICAqLworKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCisrLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZSBydW50aW1lCisrICAgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uIG9uIHBzZXVkby1yZWxvY3MuICAqLworKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCisrI2VsaWYgZGVmaW5lZChfX29zZl9fKQorKy8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEuICAqLworKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCisrI2Vsc2UKKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVCBjb25zdAorKyNlbmRpZgorKworICNpZmRlZiBfX2NwbHVzcGx1cworIGV4dGVybiAiQyIgeworICNlbmRpZgorQEAgLTY1NzksNyArNjkwOCw3IEBAIF9MVF9FT0YKKyAJICBjYXQgPDxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKKyAKKyAvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCistY29uc3Qgc3RydWN0IHsKKytMVF9ETFNZTV9DT05TVCBzdHJ1Y3QgeworICAgY29uc3QgY2hhciAqbmFtZTsKKyAgIHZvaWQgICAgICAgKmFkZHJlc3M7CisgfQorQEAgLTY2MDUsOCArNjkzNCw4IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7CisgX0xUX0VPRgorIAkgICMgTm93IHRyeSBsaW5raW5nIHRoZSB0d28gZmlsZXMuCisgCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0CistCSAgbHRfc2F2ZV9MSUJTPSIkTElCUyIKKy0JICBsdF9zYXZlX0NGTEFHUz0iJENGTEFHUyIKKysJICBsdF9nbG9ic3ltX3NhdmVfTElCUz0kTElCUworKwkgIGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1M9JENGTEFHUworIAkgIExJQlM9ImNvbmZ0c3RtLiRhY19vYmpleHQiCisgCSAgQ0ZMQUdTPSIkQ0ZMQUdTJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIgorIAkgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19saW5rXCIiOyB9ID4mNQorQEAgLTY2MTYsOCArNjk0NSw4IEBAIF9MVF9FT0YKKyAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgorIAkgICAgcGlwZV93b3Jrcz15ZXMKKyAJICBmaQorLQkgIExJQlM9IiRsdF9zYXZlX0xJQlMiCistCSAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCisrCSAgTElCUz0kbHRfZ2xvYnN5bV9zYXZlX0xJQlMKKysJICBDRkxBR1M9JGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1MKKyAJZWxzZQorIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mNQorIAlmaQorQEAgLTY2NTQsNiArNjk4MywyMSBAQCBlbHNlCisgJGFzX2VjaG8gIm9rIiA+JjY7IH0KKyBmaQorIAorKyMgUmVzcG9uc2UgZmlsZSBzdXBwb3J0LgorK2lmIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIk1TIGR1bXBiaW4iOyB0aGVuCisrICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKKytlbGlmICROTSAtLWhlbHAgMj4vZGV2L251bGwgfCBncmVwICdbQF1GSUxFJyA+L2Rldi9udWxsOyB0aGVuCisrICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKKytmaQorKworKworKworKworKworKworKworKworKworIAorIAorIAorQEAgLTY2NjksNiArNzAxMyw0MCBAQCBmaQorIAorIAorIAorKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN5c3Jvb3QiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzeXNyb290Li4uICIgPiY2OyB9CisrCisrIyBDaGVjayB3aGV0aGVyIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Qgd2FzIGdpdmVuLgorK2lmIHRlc3QgIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgd2l0aHZhbD0kd2l0aF9saWJ0b29sX3N5c3Jvb3Q7CisrZWxzZQorKyAgd2l0aF9saWJ0b29sX3N5c3Jvb3Q9bm8KKytmaQorKworKworK2x0X3N5c3Jvb3Q9CisrY2FzZSAke3dpdGhfbGlidG9vbF9zeXNyb290fSBpbiAjKAorKyB5ZXMpCisrICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKysgICAgIGx0X3N5c3Jvb3Q9YCRDQyAtLXByaW50LXN5c3Jvb3QgMj4vZGV2L251bGxgCisrICAgZmkKKysgICA7OyAjKAorKyAvKikKKysgICBsdF9zeXNyb290PWBlY2hvICIkd2l0aF9saWJ0b29sX3N5c3Jvb3QiIHwgc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKKysgICA7OyAjKAorKyBub3wnJykKKysgICA7OyAjKAorKyAqKQorKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY1CisrJGFzX2VjaG8gIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjY7IH0KKysgICBhc19mbl9lcnJvciAiVGhlIHN5c3Jvb3QgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLiIgIiRMSU5FTk8iIDUKKysgICA7OworK2VzYWMKKysKKysgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7bHRfc3lzcm9vdDotbm99IiA+JjUKKyskYXNfZWNobyAiJHtsdF9zeXNyb290Oi1ub30iID4mNjsgfQorIAorIAorIAorQEAgLTY4ODEsNiArNzI1OSwxMjMgQEAgZXNhYworIAorIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgorIAorK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1tdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9bXQ7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHthY19jdl9wcm9nX01BTklGRVNUX1RPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJE1BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIke2FjX3Rvb2xfcHJlZml4fW10IgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKytNQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wKKytpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTUFOSUZFU1RfVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRNQU5JRkVTVF9UT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysKKytmaQorK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdF9NQU5JRkVTVF9UT09MPSRNQU5JRkVTVF9UT09MCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgbXQ7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0iJGFjX2N0X01BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSJtdCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrYWNfY3RfTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MCisraWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNQorKyRhc19lY2hvICIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrICBpZiB0ZXN0ICJ4JGFjX2N0X01BTklGRVNUX1RPT0wiID0geDsgdGhlbgorKyAgICBNQU5JRkVTVF9UT09MPSI6IgorKyAgZWxzZQorKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCisreWVzOikKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorK2FjX3Rvb2xfd2FybmVkPXllcyA7OworK2VzYWMKKysgICAgTUFOSUZFU1RfVE9PTD0kYWNfY3RfTUFOSUZFU1RfVE9PTAorKyAgZmkKKytlbHNlCisrICBNQU5JRkVTVF9UT09MPSIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIgorK2ZpCisrCisrdGVzdCAteiAiJE1BTklGRVNUX1RPT0wiICYmIE1BTklGRVNUX1RPT0w9bXQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9bm8KKysgIGVjaG8gIiRhc19tZTokTElORU5POiAkTUFOSUZFU1RfVE9PTCAnLT8nIiA+JjUKKysgICRNQU5JRkVTVF9UT09MICctPycgMj5jb25mdGVzdC5lcnIgPiBjb25mdGVzdC5vdXQKKysgIGNhdCBjb25mdGVzdC5lcnIgPiY1CisrICBpZiAkR1JFUCAnTWFuaWZlc3QgVG9vbCcgY29uZnRlc3Qub3V0ID4gL2Rldi9udWxsOyB0aGVuCisrICAgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD15ZXMKKysgIGZpCisrICBybSAtZiBjb25mdGVzdCoKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY2OyB9CisraWYgdGVzdCAieCRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiICE9IHh5ZXM7IHRoZW4KKysgIE1BTklGRVNUX1RPT0w9OgorK2ZpCisrCisrCisrCisrCisrCisgCisgICBjYXNlICRob3N0X29zIGluCisgICAgIHJoYXBzb2R5KiB8IGRhcndpbiopCitAQCAtNzQ0NCw2ICs3OTM5LDggQEAgX0xUX0VPRgorICAgICAgICRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMgMj4mNQorICAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JjUKKyAgICAgICAkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyAyPiY1CisrICAgICAgZWNobyAiJFJBTkxJQiBsaWJjb25mdGVzdC5hIiA+JjUKKysgICAgICAkUkFOTElCIGxpYmNvbmZ0ZXN0LmEgMj4mNQorICAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgorIGludCBtYWluKCkgeyByZXR1cm4gMDt9CisgX0xUX0VPRgorQEAgLTc2MzksNyArODEzNiw4IEBAIGZpCisgTElCVE9PTF9ERVBTPSIkbHRtYWluIgorIAorICMgQWx3YXlzIHVzZSBvdXIgb3duIGxpYnRvb2wuCistTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpL2xpYnRvb2wnCisrTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpJworK0xJQlRPT0w9IiRMSUJUT09MLyR7aG9zdF9hbGlhc30tbGlidG9vbCIKKyAKKyAKKyAKK0BAIC03NzI4LDcgKzgyMjYsNyBAQCBhaXgzKikKKyBlc2FjCisgCisgIyBHbG9iYWwgdmFyaWFibGVzOgorLW9maWxlPWxpYnRvb2wKKytvZmlsZT0ke2hvc3RfYWxpYXN9LWxpYnRvb2wKKyBjYW5fYnVpbGRfc2hhcmVkPXllcworIAorICMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAorQEAgLTgwMjYsOCArODUyNCw2IEBAIGZpCisgbHRfcHJvZ19jb21waWxlcl9waWM9CisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9CisgCisteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1CistJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAKKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgIGx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCitAQCAtODE5Myw2ICs4Njg5LDEyIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgCWx0X3Byb2dfY29tcGlsZXJfcGljPSctLXNoYXJlZCcKKyAJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy0tc3RhdGljJworIAk7OworKyAgICAgIG5hZ2ZvciopCisrCSMgTkFHIEZvcnRyYW4gY29tcGlsZXIKKysJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLC1XbCwsJworKwlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLVBJQycKKysJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJworKwk7OworICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKKyAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCisgCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCitAQCAtODI1NSw3ICs4NzU3LDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCisgICAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJworICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCistICAgICAgZjc3KiB8IGY5MCogfCBmOTUqKQorKyAgICAgIGY3NyogfCBmOTAqIHwgZjk1KiB8IHN1bmY3NyogfCBzdW5mOTAqIHwgc3VuZjk1KikKKyAJbHRfcHJvZ19jb21waWxlcl93bD0nLVFvcHRpb24gbGQgJzs7CisgICAgICAgKikKKyAJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCc7OworQEAgLTgzMTIsMTMgKzg4MTQsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgorICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0iJGx0X3Byb2dfY29tcGlsZXJfcGljIC1EUElDIgorICAgICA7OworIGVzYWMKKy17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKKy0kYXNfZWNobyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KKy0KKy0KKy0KKy0KKyAKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWMrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfcHJvZ19jb21waWxlcl9waWMKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQorK2x0X3Byb2dfY29tcGlsZXJfcGljPSRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYworIAorICMKKyAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCitAQCAtODM3OSw2ICs4ODg1LDExIEBAIGZpCisgCisgCisgCisrCisrCisrCisrCisrCisgIworICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KKyAjCitAQCAtODcyOSw3ICs5MjQwLDggQEAgX0xUX0VPRgorICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisgICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPW5vCisgICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKy0gICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS87cy9eLipbIF1fX25tX19cKFteIF0qXClbIF1bXiBdKi9cMSBEQVRBLzsvXklbIF0vZDsvXltBSVRXXVsgXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgICAgIGV4Y2x1ZGVfZXhwc3ltcz0nW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJworIAorICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCitAQCAtODgyOCwxMiArOTM0MCwxMiBAQCBfTFRfRU9GCisgCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCisgCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KKyAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPSctcnBhdGggJGxpYmRpcicKKy0JICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKKysJICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCisgCSAgaWYgdGVzdCAieCRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciID0geHllczsgdGhlbgorIAkgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorIAkgICAgICBlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKy0JICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisrCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKKyAJICBmaQorIAkgIDs7CisgCWVzYWMKK0BAIC04ODQ3LDggKzkzNTksOCBAQCBfTFRfRU9GCisgCWFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKKyAJd2xhcmM9CisgICAgICAgZWxzZQorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBmaQorICAgICAgIDs7CisgCitAQCAtODg2Niw4ICs5Mzc4LDggQEAgX0xUX0VPRgorIAorIF9MVF9FT0YKKyAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZWxzZQorIAlsZF9zaGxpYnM9bm8KKyAgICAgICBmaQorQEAgLTg5MTMsOCArOTQyNSw4IEBAIF9MVF9FT0YKKyAKKyAgICAgKikKKyAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGVsc2UKKyAJbGRfc2hsaWJzPW5vCisgICAgICAgZmkKK0BAIC05MDQ0LDcgKzk1NTYsMTMgQEAgX0xUX0VPRgorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nLWJlcm9rJworICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCisgICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCistICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKKytlbHNlCisrICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoXytzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgCisgaW50CitAQCAtOTA1NywyMiArOTU3NSwyOSBAQCBtYWluICgpCisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorIAorLWx0X2FpeF9saWJwYXRoX3NlZD0nCistICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKy0JL14wLyB7CistCSAgICBzL14wICAqXCguKlwpJC9cMS8KKy0JICAgIHAKKy0JfQorLSAgICB9JworLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCistICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy1maQorKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKKysgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisrCSAgL14wLyB7CisrCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCisrCSAgICAgIHAKKysJICB9CisrICAgICAgfScKKysgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgIGZpCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKKysgIGZpCisrCisrZmkKKysKKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KKytmaQorIAorICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCitAQCAtOTA4NCw3ICs5NjA5LDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAllbHNlCisgCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KKyAJICMgZW1wdHkgZXhlY3V0YWJsZS4KKy0JIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysJIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAorK2Vsc2UKKysgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGhfK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAKKyBpbnQKK0BAIC05MDk3LDIyICs5NjI4LDI5IEBAIG1haW4gKCkKKyBfQUNFT0YKKyBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgCistbHRfYWl4X2xpYnBhdGhfc2VkPScKKy0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworLQkvXjAvIHsKKy0JICAgIHMvXjAgICpcKC4qXCkkL1wxLworLQkgICAgcAorLQl9CistICAgIH0nCistYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KKy0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLWZpCisrICBsdF9haXhfbGlicGF0aF9zZWQ9JworKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKysJICAvXjAvIHsKKysJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KKysJICAgICAgcAorKwkgIH0KKysgICAgICB9JworKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgZmkKKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgorKyAgZmkKKysKKytmaQorKworKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXworK2ZpCisgCisgCSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCitAQCAtOTE1NywyMCArOTY5NSw2MyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAgICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgorICAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKKyAgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgorLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCistICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKy0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorLSAgICAgIGxpYmV4dD1saWIKKy0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKy0gICAgICBzaHJleHRfY21kcz0iLmRsbCIKKy0gICAgICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCistICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKKy0gICAgICAjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgorLSAgICAgIG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCistICAgICAgIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KKy0gICAgICBvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCistICAgICAgZml4X3NyY2ZpbGVfcGF0aD0nYGN5Z3BhdGggLXcgIiRzcmNmaWxlImAnCistICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorKyAgICAgIGNsKikKKysJIyBOYXRpdmUgTVNWQworKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorKwlhbHdheXNfZXhwb3J0X3N5bWJvbHM9eWVzCisrCWZpbGVfbGlzdF9zcGVjPSdAJworKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorKwlsaWJleHQ9bGliCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorKwlzaHJleHRfY21kcz0iLmRsbCIKKysJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgorKwkgICAgc2VkIC1uIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgLWUgJzFcXFwhcCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICBlbHNlCisrCSAgICBzZWQgLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworKwkgIGZpfgorKwkgICRDQyAtbyAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgIkAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5leHAiIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn4KKysJICBsaW5rbmFtZXM9JworKwkjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCisrCSMgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCApPSd0cnVlJworKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworKwlleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSxEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrCSMgRG9uJ3QgdXNlIHJhbmxpYgorKwlvbGRfcG9zdGluc3RhbGxfY21kcz0nY2htb2QgNjQ0ICRvbGRsaWInCisrCXBvc3RsaW5rX2NtZHM9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KKysJICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgorKwkgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KKysJICAgICouZXhlfCouRVhFKSA7OworKwkgICAgKikKKysJICAgICAgbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgorKwkgICAgICBsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgorKwkgICAgICA7OworKwkgIGVzYWN+CisrCSAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KKysJICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7CisrCSAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKKysJICBmaScKKysJOzsKKysgICAgICAqKQorKwkjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKKysJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKysJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKysJbGliZXh0PWxpYgorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKysJc2hyZXh0X2NtZHM9Ii5kbGwiCisrCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKysJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKKysJIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KKysJb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKKysJIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KKysJb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJworKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworKwk7OworKyAgICAgIGVzYWMKKyAgICAgICA7OworIAorICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQorQEAgLTkyMzEsNyArOTgxMiw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICAjIEZyZWVCU0QgMyBhbmQgZ3JlYXRlciB1c2VzIGdjYyAtc2hhcmVkIHRvIGRvIHNoYXJlZCBsaWJyYXJpZXMuCisgICAgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKKy0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKyAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKKyAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCisgICAgICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj1ubworQEAgLTkyMzksNyArOTgyMCw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICBocHV4OSopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgICBmaQorQEAgLTkyNTUsNyArOTgzNiw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICBocHV4MTAqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICAgZWxzZQorIAlhcmNoaXZlX2NtZHM9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCisgICAgICAgZmkKK0BAIC05Mjc5LDEwICs5ODYwLDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJaWE2NCopCistCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAkqKQorLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCWVzYWMKKyAgICAgICBlbHNlCitAQCAtOTM2MSwyMyArOTk0MiwzNiBAQCBmaQorIAorICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAkjIFRyeSB0byB1c2UgdGhlIC1leHBvcnRlZF9zeW1ib2wgbGQgb3B0aW9uLCBpZiBpdCBkb2VzIG5vdAorIAkjIHdvcmssIGFzc3VtZSB0aGF0IC1leHBvcnRzX2ZpbGUgZG9lcyBub3Qgd29yayBlaXRoZXIgYW5kCisgCSMgaW1wbGljaXRseSBleHBvcnQgYWxsIHN5bWJvbHMuCistICAgICAgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorLSAgICAgICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgorLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKwkjIFRoaXMgc2hvdWxkIGJlIHRoZSBzYW1lIGZvciBhbGwgbGFuZ3VhZ2VzLCBzbyBubyBwZXItdGFnIGNhY2hlIHZhcmlhYmxlLgorKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKysJICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgorKwkgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworLWludCBmb28odm9pZCkge30KKytpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9CisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorLSAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworLQorKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9eWVzCisrZWxzZQorKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9bm8KKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLSAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKKysgICAgICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjY7IH0KKysJaWYgdGVzdCAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA9IHllczsgdGhlbgorKyAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlmaQorICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCitAQCAtOTQ2Miw3ICsxMDA1Niw3IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKyAgICAgICBlbHNlCisgCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJworQEAgLTk0ODEsOSArMTAwNzUsOSBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgICBub191bmRlZmluZWRfZmxhZz0nIC16IGRlZnMnCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAJd2xhcmM9JyR7d2x9JworLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgorLQkgICRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisrCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisgICAgICAgZWxzZQorIAljYXNlIGAkQ0MgLVYgMj4mMWAgaW4KKyAJKiJDb21waWxlcnMgNS4wIiopCitAQCAtMTAwNTksOCArMTA2NTMsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICBuZWVkX3ZlcnNpb249bm8KKyAgIG5lZWRfbGliX3ByZWZpeD1ubworIAorLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCistICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQorKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgorKyAgeWVzLCopCisrICAgICMgZ2NjCisgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCisgICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKyAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CitAQCAtMTAwOTMsMTMgKzEwNjg4LDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisgICAgICAgOzsKKyAgICAgZXNhYworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworKyAgICA7OworKworKyAgKixjbCopCisrICAgICMgTmF0aXZlIE1TVkMKKysgICAgbGlibmFtZV9zcGVjPSckbmFtZScKKysgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0uZGxsLmxpYicKKysKKysgICAgY2FzZSAkYnVpbGRfb3MgaW4KKysgICAgbWluZ3cqKQorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0KKysgICAgICBsdF9zYXZlX2lmcz0kSUZTCisrICAgICAgSUZTPSc7JworKyAgICAgIGZvciBsdF9wYXRoIGluICRMSUIKKysgICAgICBkbworKyAgICAgICAgSUZTPSRsdF9zYXZlX2lmcworKyAgICAgICAgIyBMZXQgRE9TIHZhcmlhYmxlIGV4cGFuc2lvbiBwcmludCB0aGUgc2hvcnQgOC4zIHN0eWxlIGZpbGUgbmFtZS4KKysgICAgICAgIGx0X3BhdGg9YGNkICIkbHRfcGF0aCIgMj4vZGV2L251bGwgJiYgY21kIC8vQyAiZm9yICVpIGluICgiLiIpIGRvIEBlY2hvICV+c2kiYAorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjICRsdF9wYXRoIgorKyAgICAgIGRvbmUKKysgICAgICBJRlM9JGx0X3NhdmVfaWZzCisrICAgICAgIyBDb252ZXJ0IHRvIE1TWVMgc3R5bGUuCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBzZWQgLWUgJ3N8XFxcXHwvfGcnIC1lICdzfCBcXChbYS16QS1aXVxcKTp8IC9cXDF8ZycgLWUgJ3N8XiB8fCdgCisrICAgICAgOzsKKysgICAgY3lnd2luKikKKysgICAgICAjIENvbnZlcnQgdG8gdW5peCBmb3JtLCB0aGVuIHRvIGRvcyBmb3JtLCB0aGVuIGJhY2sgdG8gdW5peCBmb3JtCisrICAgICAgIyBidXQgdGhpcyB0aW1lIGRvcyBzdHlsZSAobm8gc3BhY2VzISkgc28gdGhhdCB0aGUgdW5peCBmb3JtIGxvb2tzCisrICAgICAgIyBsaWtlIC9jeWdkcml2ZS9jL1BST0dSQX4xOi9jeWdkci4uLgorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkTElCImAKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tZG9zICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiAyPi9kZXYvbnVsbGAKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorKyAgICAgIDs7CisrICAgICopCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkTElCIgorKyAgICAgIGlmICRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbDsgdGhlbgorKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCisrICAgICAgZWxzZQorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorKyAgICAgIGZpCisrICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCisrICAgICAgIyBjb21tb24uIChlLmcuICJQcm9ncmFtIEZpbGVzIiAtPiAiUFJPR1JBfjEiKQorKyAgICAgIDs7CisrICAgIGVzYWMKKysKKysgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcworKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KKysgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgorKyAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KKysgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KKysgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCisrICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisrICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KKysgICAgICAgJFJNIFwkZGxwYXRoJworKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKKyAgICAgOzsKKyAKKyAgICopCisrICAgICMgQXNzdW1lIE1TVkMgd3JhcHBlcgorICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKyAgICAgOzsKKyAgIGVzYWMKKy0gIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisgICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KKyAgIHNobGlicGF0aF92YXI9UEFUSAorICAgOzsKK0BAIC0xMDE5MSw3ICsxMDg0NCw3IEBAIGhhaWt1KikKKyAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAorICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L2Jlb3Mvc3lzdGVtL2xpYicKKysgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9zeXN0ZW0vbGliJworICAgaGFyZGNvZGVfaW50b19saWJzPXllcworICAgOzsKKyAKK0BAIC0xMTAzMSwxMCArMTE2ODQsMTAgQEAgZWxzZQorIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKKyAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCisgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCistdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKytpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisgI2VuZGlmCisgCistdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9CisraW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9CisgaW50IG1haW4gKCkKKyB7CisgICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKK0BAIC0xMTEzNywxMCArMTE3OTAsMTAgQEAgZWxzZQorIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKKyAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCisgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCistdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKytpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisgI2VuZGlmCisgCistdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9CisraW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9CisgaW50IG1haW4gKCkKKyB7CisgICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKK0BAIC0xNTQzNiwxMyArMTYwODksMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Vuc2V0PSdgJEVDSE8gIiRsdF91bnNldCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfU1AyTkw9J2AkRUNITyAiJGx0X1NQMk5MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9OTDJTUD0nYCRFQ0hPICIkbHRfTkwyU1AiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHJlbG9hZF9mbGFnPSdgJEVDSE8gIiRyZWxvYWRfZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgcmVsb2FkX2NtZHM9J2AkRUNITyAiJHJlbG9hZF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBPQkpEVU1QPSdgJEVDSE8gIiRPQkpEVU1QIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0nYCRFQ0hPICIkZGVwbGlic19jaGVja19tZXRob2QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGZpbGVfbWFnaWNfY21kPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrZmlsZV9tYWdpY19nbG9iPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2dsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK3dhbnRfbm9jYXNlZ2xvYj0nYCRFQ0hPICIkd2FudF9ub2Nhc2VnbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytETExUT09MPSdgJEVDSE8gIiRETExUT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0nYCRFQ0hPICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIEFSPSdgJEVDSE8gIiRBUiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgQVJfRkxBR1M9J2AkRUNITyAiJEFSX0ZMQUdTIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKythcmNoaXZlcl9saXN0X3NwZWM9J2AkRUNITyAiJGFyY2hpdmVyX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgU1RSSVA9J2AkRUNITyAiJFNUUklQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBSQU5MSUI9J2AkRUNITyAiJFJBTkxJQiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2AkRUNITyAiJG9sZF9wb3N0aW5zdGFsbF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xNTQ1NywxNCArMTYxMTcsMTcgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgfCAkU0VEICIkZGUKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbm1fZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJG5tX2ZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9zeXNyb290PSdgJEVDSE8gIiRsdF9zeXNyb290IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBvYmpkaXI9J2AkRUNITyAiJG9iamRpciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTUFHSUNfQ01EPSdgJEVDSE8gIiRNQUdJQ19DTUQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCistbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9waWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9zdGF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vPSdgJEVDSE8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbmVlZF9sb2Nrcz0nYCRFQ0hPICIkbmVlZF9sb2NrcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrTUFOSUZFU1RfVE9PTD0nYCRFQ0hPICIkTUFOSUZFU1RfVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgRFNZTVVUSUw9J2AkRUNITyAiJERTWU1VVElMIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBOTUVESVQ9J2AkRUNITyAiJE5NRURJVCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTElQTz0nYCRFQ0hPICIkTElQTyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTU0OTcsMTIgKzE2MTYwLDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xCisgaGFyZGNvZGVfYXV0b21hdGljPSdgJEVDSE8gIiRoYXJkY29kZV9hdXRvbWF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGluaGVyaXRfcnBhdGg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGxpbmtfYWxsX2RlcGxpYnM9J2AkRUNITyAiJGxpbmtfYWxsX2RlcGxpYnMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworLWZpeF9zcmNmaWxlX3BhdGg9J2AkRUNITyAiJGZpeF9zcmNmaWxlX3BhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGFsd2F5c19leHBvcnRfc3ltYm9scz0nYCRFQ0hPICIkYWx3YXlzX2V4cG9ydF9zeW1ib2xzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBleHBvcnRfc3ltYm9sc19jbWRzPSdgJEVDSE8gIiRleHBvcnRfc3ltYm9sc19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBleGNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGV4Y2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgaW5jbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHByZWxpbmtfY21kcz0nYCRFQ0hPICIkcHJlbGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytwb3N0bGlua19jbWRzPSdgJEVDSE8gIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBmaWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSdgJEVDSE8gIiR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbmVlZF9saWJfcHJlZml4PSdgJEVDSE8gIiRuZWVkX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTE1NTU3LDggKzE2MjIwLDEzIEBAIHJlbG9hZF9mbGFnIFwKKyBPQkpEVU1QIFwKKyBkZXBsaWJzX2NoZWNrX21ldGhvZCBcCisgZmlsZV9tYWdpY19jbWQgXAorK2ZpbGVfbWFnaWNfZ2xvYiBcCisrd2FudF9ub2Nhc2VnbG9iIFwKKytETExUT09MIFwKKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCBcCisgQVIgXAorIEFSX0ZMQUdTIFwKKythcmNoaXZlcl9saXN0X3NwZWMgXAorIFNUUklQIFwKKyBSQU5MSUIgXAorIENDIFwKK0BAIC0xNTU2OCwxMiArMTYyMzYsMTQgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wgXAorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIFwKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IFwKKytubV9maWxlX2xpc3Rfc3BlYyBcCisgbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcgXAorLWx0X3Byb2dfY29tcGlsZXJfd2wgXAorIGx0X3Byb2dfY29tcGlsZXJfcGljIFwKKytsdF9wcm9nX2NvbXBpbGVyX3dsIFwKKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyBcCisgbHRfY3ZfcHJvZ19jb21waWxlcl9jX28gXAorIG5lZWRfbG9ja3MgXAorK01BTklGRVNUX1RPT0wgXAorIERTWU1VVElMIFwKKyBOTUVESVQgXAorIExJUE8gXAorQEAgLTE1NTg5LDcgKzE2MjU5LDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWcgXAorIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgXAorIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQgXAorIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IgXAorLWZpeF9zcmNmaWxlX3BhdGggXAorIGV4Y2x1ZGVfZXhwc3ltcyBcCisgaW5jbHVkZV9leHBzeW1zIFwKKyBmaWxlX2xpc3Rfc3BlYyBcCitAQCAtMTU2MjUsNiArMTYyOTQsNyBAQCBtb2R1bGVfY21kcyBcCisgbW9kdWxlX2V4cHN5bV9jbWRzIFwKKyBleHBvcnRfc3ltYm9sc19jbWRzIFwKKyBwcmVsaW5rX2NtZHMgXAorK3Bvc3RsaW5rX2NtZHMgXAorIHBvc3RpbnN0YWxsX2NtZHMgXAorIHBvc3R1bmluc3RhbGxfY21kcyBcCisgZmluaXNoX2NtZHMgXAorQEAgLTE2Mzg5LDcgKzE3MDU5LDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAorICMgTk9URTogQ2hhbmdlcyBtYWRlIHRvIHRoaXMgZmlsZSB3aWxsIGJlIGxvc3Q6IGxvb2sgYXQgbHRtYWluLnNoLgorICMKKyAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAorLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisrIyAgICAgICAgICAgICAgICAgSW5jLgorICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2CisgIworICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KK0BAIC0xNjQ5MiwxOSArMTcxNjMsNDIgQEAgU1AyTkw9JGx0X2x0X1NQMk5MCisgIyB0dXJuIG5ld2xpbmVzIGludG8gc3BhY2VzLgorIE5MMlNQPSRsdF9sdF9OTDJTUAorIAorKyMgY29udmVydCBcJGJ1aWxkIGZpbGUgbmFtZXMgdG8gXCRob3N0IGZvcm1hdC4KKyt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCisrCisrIyBjb252ZXJ0IFwkYnVpbGQgZmlsZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4KKyt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCisrCisgIyBBbiBvYmplY3Qgc3ltYm9sIGR1bXBlci4KKyBPQkpEVU1QPSRsdF9PQkpEVU1QCisgCisgIyBNZXRob2QgdG8gY2hlY2sgd2hldGhlciBkZXBlbmRlbnQgbGlicmFyaWVzIGFyZSBzaGFyZWQgb2JqZWN0cy4KKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfZGVwbGlic19jaGVja19tZXRob2QKKyAKKy0jIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPT0gImZpbGVfbWFnaWMiLgorKyMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KKyBmaWxlX21hZ2ljX2NtZD0kbHRfZmlsZV9tYWdpY19jbWQKKyAKKysjIEhvdyB0byBmaW5kIHBvdGVudGlhbCBmaWxlcyB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorK2ZpbGVfbWFnaWNfZ2xvYj0kbHRfZmlsZV9tYWdpY19nbG9iCisrCisrIyBGaW5kIHBvdGVudGlhbCBmaWxlcyB1c2luZyBub2Nhc2VnbG9iIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCisrd2FudF9ub2Nhc2VnbG9iPSRsdF93YW50X25vY2FzZWdsb2IKKysKKysjIERMTCBjcmVhdGlvbiBwcm9ncmFtLgorK0RMTFRPT0w9JGx0X0RMTFRPT0wKKysKKysjIENvbW1hbmQgdG8gYXNzb2NpYXRlIHNoYXJlZCBhbmQgbGluayBsaWJyYXJpZXMuCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisrCisgIyBUaGUgYXJjaGl2ZXIuCisgQVI9JGx0X0FSCisrCisrIyBGbGFncyB0byBjcmVhdGUgYW4gYXJjaGl2ZS4KKyBBUl9GTEFHUz0kbHRfQVJfRkxBR1MKKyAKKysjIEhvdyB0byBmZWVkIGEgZmlsZSBsaXN0aW5nIHRvIHRoZSBhcmNoaXZlci4KKythcmNoaXZlcl9saXN0X3NwZWM9JGx0X2FyY2hpdmVyX2xpc3Rfc3BlYworKworICMgQSBzeW1ib2wgc3RyaXBwaW5nIHByb2dyYW0uCisgU1RSSVA9JGx0X1NUUklQCisgCitAQCAtMTY1MzQsNiArMTcyMjgsMTIgQEAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKKyAjIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkLgorIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeAorIAorKyMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzIGZvciBcJE5NLgorK25tX2ZpbGVfbGlzdF9zcGVjPSRsdF9ubV9maWxlX2xpc3Rfc3BlYworKworKyMgVGhlIHJvb3Qgd2hlcmUgdG8gc2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzLGFuZCBpbiB3aGljaCBvdXIgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQuCisrbHRfc3lzcm9vdD0kbHRfc3lzcm9vdAorKworICMgVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRlbXBvcmFyeSBsaWJ0b29sIGZpbGVzLgorIG9iamRpcj0kb2JqZGlyCisgCitAQCAtMTY1NDMsNiArMTcyNDMsOSBAQCBNQUdJQ19DTUQ9JE1BR0lDX0NNRAorICMgTXVzdCB3ZSBsb2NrIGZpbGVzIHdoZW4gZG9pbmcgY29tcGlsYXRpb24/CisgbmVlZF9sb2Nrcz0kbHRfbmVlZF9sb2NrcworIAorKyMgTWFuaWZlc3QgdG9vbC4KKytNQU5JRkVTVF9UT09MPSRsdF9NQU5JRkVTVF9UT09MCisrCisgIyBUb29sIHRvIG1hbmlwdWxhdGUgYXJjaGl2ZWQgRFdBUkYgZGVidWcgc3ltYm9sIGZpbGVzIG9uIE1hYyBPUyBYLgorIERTWU1VVElMPSRsdF9EU1lNVVRJTAorIAorQEAgLTE2NjU3LDEyICsxNzM2MCwxMiBAQCB3aXRoX2djYz0kR0NDCisgIyBDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgorIG5vX2J1aWx0aW5fZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcKKyAKKy0jIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCistd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKKy0KKyAjIEFkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0cy4KKyBwaWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9waWMKKyAKKysjIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCisrd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKKysKKyAjIENvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBkeW5hbWljIGxpbmtpbmcuCisgbGlua19zdGF0aWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9zdGF0aWMKKyAKK0BAIC0xNjc0OSw5ICsxNzQ1Miw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGgKKyAjIFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KKyBsaW5rX2FsbF9kZXBsaWJzPSRsaW5rX2FsbF9kZXBsaWJzCisgCistIyBGaXggdGhlIHNoZWxsIHZhcmlhYmxlIFwkc3JjZmlsZSBmb3IgdGhlIGNvbXBpbGVyLgorLWZpeF9zcmNmaWxlX3BhdGg9JGx0X2ZpeF9zcmNmaWxlX3BhdGgKKy0KKyAjIFNldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4KKyBhbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3ltYm9scworIAorQEAgLTE2NzY3LDYgKzE3NDY3LDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKKyAjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzLgorIHByZWxpbmtfY21kcz0kbHRfcHJlbGlua19jbWRzCisgCisrIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGZpbmlzaGluZyBsaW5raW5nIHByb2dyYW1zLgorK3Bvc3RsaW5rX2NtZHM9JGx0X3Bvc3RsaW5rX2NtZHMKKysKKyAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcy4KKyBmaWxlX2xpc3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWMKKyAKK0BAIC0xNjc5OSwyMTAgKzE3NTAyLDE2OSBAQCBsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKKyAgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KKyAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCisgICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPworLSAgc2VkICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlL3EnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKy0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKy0KKy0gIGNhc2UgJHhzaV9zaGVsbCBpbgorLSAgeWVzKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKy0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy1mdW5jX2Rpcm5hbWUgKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKy0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworLSAgZXNhYworLX0KKy0KKy0jIGZ1bmNfYmFzZW5hbWUgZmlsZQorLWZ1bmNfYmFzZW5hbWUgKCkKKy17CistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCistfQorLQorLSMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIHBlcmZvcm0gZnVuY19iYXNlbmFtZSBhbmQgZnVuY19kaXJuYW1lIGluIGEgc2luZ2xlIGZ1bmN0aW9uCistIyBjYWxsOgorLSMgICBkaXJuYW1lOiAgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksCistIyAgICAgICAgICAgICBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsIG90aGVyd2lzZSBzZXQgcmVzdWx0CistIyAgICAgICAgICAgICB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfZGlybmFtZV9yZXN1bHQiCistIyAgIGJhc2VuYW1lOiBDb21wdXRlIGZpbGVuYW1lIG9mIEZJTEUuCistIyAgICAgICAgICAgICB2YWx1ZSByZXR1bmVkIGluICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCistIyBJbXBsZW1lbnRhdGlvbiBtdXN0IGJlIGtlcHQgc3luY2hyb25pemVkIHdpdGggZnVuY19kaXJuYW1lCistIyBhbmQgZnVuY19iYXNlbmFtZS4gRm9yIGVmZmljaWVuY3ksIHdlIGRvIG5vdCBkZWxlZ2F0ZSB0bworLSMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgorLWZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKy0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworLSAgZXNhYworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgorLX0KKy0KKy0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQorLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCistIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKy0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKy0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCistZnVuY19zdHJpcG5hbWUgKCkKKy17CistICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCistICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In0KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9CistfQorLQorLSMgZnVuY19vcHRfc3BsaXQKKy1mdW5jX29wdF9zcGxpdCAoKQorLXsKKy0gIGZ1bmNfb3B0X3NwbGl0X29wdD0kezElJT0qfQorLSAgZnVuY19vcHRfc3BsaXRfYXJnPSR7MSMqPX0KKy19CistCistIyBmdW5jX2xvMm8gb2JqZWN0CistZnVuY19sbzJvICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7CistICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OworLSAgZXNhYworLX0KKy0KKy0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQorLWZ1bmNfeGZvcm0gKCkKKy17CistICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvCistfQorLQorLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KKy1mdW5jX2FyaXRoICgpCisteworLSAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpCistfQorLQorLSMgZnVuY19sZW4gc3RyaW5nCistIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgorLWZ1bmNfbGVuICgpCisteworLSAgZnVuY19sZW5fcmVzdWx0PSR7IzF9CistfQorLQorLV9MVF9FT0YKKy0gICAgOzsKKy0gICopICMgQm91cm5lIGNvbXBhdGlibGUgZnVuY3Rpb25zLgorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKy0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy1mdW5jX2Rpcm5hbWUgKCkKKy17CistICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgorLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGRpcm5hbWUiYAorLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKKy0gIGVsc2UKKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgorLSAgZmkKKy19CistCistIyBmdW5jX2Jhc2VuYW1lIGZpbGUKKy1mdW5jX2Jhc2VuYW1lICgpCisteworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRiYXNlbmFtZSJgCistfQorLQorLQorLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCistIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKy0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KKy0jIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCistZnVuY19zdHJpcG5hbWUgKCkKKy17CistICBjYXNlICR7Mn0gaW4KKy0gICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKKy0gICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OworLSAgZXNhYworLX0KKy0KKy0jIHNlZCBzY3JpcHRzOgorLW15X3NlZF9sb25nX29wdD0nMXMvXlwoLVtePV0qXCk9LiovXDEvO3EnCistbXlfc2VkX2xvbmdfYXJnPScxcy9eLVtePV0qPS8vJworLQorLSMgZnVuY19vcHRfc3BsaXQKKy1mdW5jX29wdF9zcGxpdCAoKQorLXsKKy0gIGZ1bmNfb3B0X3NwbGl0X29wdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX29wdCJgCistICBmdW5jX29wdF9zcGxpdF9hcmc9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19hcmciYAorLX0KKy0KKy0jIGZ1bmNfbG8ybyBvYmplY3QKKy1mdW5jX2xvMm8gKCkKKy17CistICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbG8ybyJgCistfQorLQorLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCistZnVuY194Zm9ybSAoKQorLXsKKy0gIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICdzL1wuW14uXSokLy5sby8nYAorLX0KKy0KKy0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCistZnVuY19hcml0aCAoKQorLXsKKy0gIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIkQCJgCistfQorLQorLSMgZnVuY19sZW4gc3RyaW5nCistIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgorLWZ1bmNfbGVuICgpCisteworLSAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkMSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAorLX0KKy0KKy1fTFRfRU9GCistZXNhYworLQorLWNhc2UgJGx0X3NoZWxsX2FwcGVuZCBpbgorLSAgeWVzKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCistIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCistZnVuY19hcHBlbmQgKCkKKy17CistICBldmFsICIkMSs9XCQyIgorLX0KKy1fTFRfRU9GCistICAgIDs7CistICAqKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCistIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCistZnVuY19hcHBlbmQgKCkKKy17CistICBldmFsICIkMT1cJCQxXCQyIgorLX0KKy0KKy1fTFRfRU9GCistICAgIDs7CistICBlc2FjCistCistCistICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCistICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCistCistICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CisrICBzZWQgJyRxJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCisrICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorKworKyAgaWYgdGVzdCB4IiR4c2lfc2hlbGwiID0geHllczsgdGhlbgorKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZSAvY1wKKytmdW5jX2Rpcm5hbWUgKClcCisre1wKKytcICAgIGNhc2UgJHsxfSBpblwKKytcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCisrXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCisrXCAgICBlc2FjXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19iYXNlbmFtZSAvY1wKKytmdW5jX2Jhc2VuYW1lICgpXAorK3tcCisrXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgL2NcCisrZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKVwKKyt7XAorK1wgICAgY2FzZSAkezF9IGluXAorK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKKytcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKKytcICAgIGVzYWNcCisrXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zdHJpcG5hbWUgKCkkLywvXn0gIyBmdW5jX3N0cmlwbmFtZSAvY1wKKytmdW5jX3N0cmlwbmFtZSAoKVwKKyt7XAorK1wgICAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZVwKKytcICAgICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC5cCisrXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfVwKKytcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9XAorK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3RyaXBuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zcGxpdF9sb25nX29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfbG9uZ19vcHQgL2NcCisrZnVuY19zcGxpdF9sb25nX29wdCAoKVwKKyt7XAorK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPSR7MSUlPSp9XAorK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9JHsxIyo9fVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9sb25nX29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfc2hvcnRfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9zaG9ydF9vcHQgL2NcCisrZnVuY19zcGxpdF9zaG9ydF9vcHQgKClcCisre1wKKytcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz0kezEjPz99XAorK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT0kezElIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmcifVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9zaG9ydF9vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2xvMm8gKCkkLywvXn0gIyBmdW5jX2xvMm8gL2NcCisrZnVuY19sbzJvICgpXAorK3tcCisrXCAgICBjYXNlICR7MX0gaW5cCisrXCAgICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7XAorK1wgICAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOztcCisrXCAgICBlc2FjXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xvMm8gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3hmb3JtICgpJC8sL159ICMgZnVuY194Zm9ybSAvY1wKKytmdW5jX3hmb3JtICgpXAorK3tcCisrICAgIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG9cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfeGZvcm0gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2FyaXRoICgpJC8sL159ICMgZnVuY19hcml0aCAvY1wKKytmdW5jX2FyaXRoICgpXAorK3tcCisrICAgIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcml0aCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfbGVuICgpJC8sL159ICMgZnVuY19sZW4gL2NcCisrZnVuY19sZW4gKClcCisre1wKKysgICAgZnVuY19sZW5fcmVzdWx0PSR7IzF9XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xlbiBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworK2ZpCisrCisraWYgdGVzdCB4IiRsdF9zaGVsbF9hcHBlbmQiID0geHllczsgdGhlbgorKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kICgpJC8sL159ICMgZnVuY19hcHBlbmQgL2NcCisrZnVuY19hcHBlbmQgKClcCisre1wKKysgICAgZXZhbCAiJHsxfSs9XFwkezJ9IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2FwcGVuZF9xdW90ZWQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZF9xdW90ZWQgL2NcCisrZnVuY19hcHBlbmRfcXVvdGVkICgpXAorK3tcCisrXCAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IlwKKytcICAgIGV2YWwgIiR7MX0rPVxcXFwgXFwkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZF9xdW90ZWQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCB3aGVyZSBwb3NzaWJsZSBieSBkaXJlY3QgdXNlIG9mICcrPScKKysgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDErPSIlZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAorKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKytlbHNlCisrICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgZXZlbiB3aGVuICcrPScgaXMgbm90IGF2YWlsYWJsZQorKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMT0iJFwxJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKysgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKysgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrZmkKKysKKytpZiB0ZXN0IHgiJF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWwiID0geCI6IjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjI7fQorK2ZpCisrCisrCisrICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAorICAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQorICAgY2htb2QgK3ggIiRvZmlsZSIKKyAKK2RpZmYgLS1naXQgYS9ncHJvZi9jb25maWd1cmUgYi9ncHJvZi9jb25maWd1cmUKK2luZGV4IDY3OWUwZGNlNzcuLmFjNGMwMTZhNjMgMTAwNzU1CistLS0gYS9ncHJvZi9jb25maWd1cmUKKysrKyBiL2dwcm9mL2NvbmZpZ3VyZQorQEAgLTYzMSw4ICs2MzEsMTEgQEAgT1RPT0wKKyBMSVBPCisgTk1FRElUCisgRFNZTVVUSUwKKytNQU5JRkVTVF9UT09MCisgUkFOTElCCisrYWNfY3RfQVIKKyBBUgorK0RMTFRPT0wKKyBPQkpEVU1QCisgTE5fUworIE5NCitAQCAtNzQ0LDYgKzc0Nyw3IEBAIGVuYWJsZV9zdGF0aWMKKyB3aXRoX3BpYworIGVuYWJsZV9mYXN0X2luc3RhbGwKKyB3aXRoX2dudV9sZAorK3dpdGhfbGlidG9vbF9zeXNyb290CisgZW5hYmxlX2xpYnRvb2xfbG9jaworIGVuYWJsZV9wbHVnaW5zCisgZW5hYmxlX2xhcmdlZmlsZQorQEAgLTE0MDIsNiArMTQwNiw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgorICAgLS13aXRoLXBpYyAgICAgICAgICAgICAgdHJ5IHRvIHVzZSBvbmx5IFBJQy9ub24tUElDIG9iamVjdHMgW2RlZmF1bHQ9dXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBib3RoXQorICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIFtkZWZhdWx0PW5vXQorKyAgLS13aXRoLWxpYnRvb2wtc3lzcm9vdD1ESVIgU2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzIHdpdGhpbiBESVIKKysgICAgICAgICAgICAgICAgICAgICAgICAob3IgdGhlIGNvbXBpbGVyJ3Mgc3lzcm9vdCBpZiBub3Qgc3BlY2lmaWVkKS4KKyAKKyBTb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoKKyAgIENDICAgICAgICAgIEMgY29tcGlsZXIgY29tbWFuZAorQEAgLTQ4MzYsOCArNDg0Miw4IEBAIGVzYWMKKyAKKyAKKyAKKy1tYWNyb192ZXJzaW9uPScyLjIuN2EnCistbWFjcm9fcmV2aXNpb249JzEuMzEzNCcKKyttYWNyb192ZXJzaW9uPScyLjQnCisrbWFjcm9fcmV2aXNpb249JzEuMzI5MycKKyAKKyAKKyAKK0BAIC00ODc3LDcgKzQ4ODMsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITworIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzLi4uICIgPiY2OyB9CisgIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCistaWYgdGVzdCAiWGBwcmludCAtciAtLSAtbiAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKKytpZiB0ZXN0ICJYYCggcHJpbnQgLXIgLS0gLW4gKSAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKKyAgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgorICAgRUNITz0ncHJpbnQgLXIgLS0nCisgZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KK0BAIC01NTYzLDggKzU1NjksOCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBzb21lIFhTSSBjb25zdHJ1Y3RzLi4uICIgPiY2OworICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCisgeHNpX3NoZWxsPW5vCisgKCBfbHRfZHVtbXk9ImEvYi9jIgorLSAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sIiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKKy0gICAgICA9IGMsYS9iLCwgXAorKyAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sJHtfbHRfZHVtbXkjPz99IiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKKysgICAgICA9IGMsYS9iLGIvYywgXAorICAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCisgICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCisgICAmJiB4c2lfc2hlbGw9eWVzCitAQCAtNTYxMyw2ICs1NjE5LDgwIEBAIGVzYWMKKyAKKyAKKyAKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0Li4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtsdF9jdl90b19ob3N0X2ZpbGVfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgY2FzZSAkaG9zdCBpbgorKyAgKi0qLW1pbmd3KiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgICAqLSotY3lnd2luKiApCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIKKysgICAgICAgIDs7CisrICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyCisrICAgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisrICAqLSotY3lnd2luKiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbgorKyAgICAgICAgOzsKKysgICAgICAqLSotY3lnd2luKiApCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKysgICAgICAgIDs7CisrICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luCisrICAgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisrICAqICkgIyB1bmhhbmRsZWQgaG9zdHMgKGFuZCAibm9ybWFsIiBuYXRpdmUgYnVpbGRzKQorKyAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKysgICAgOzsKKytlc2FjCisrCisrZmkKKysKKyt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNjsgfQorKworKworKworKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3ZfdG9fdG9vbF9maWxlX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgICNhc3N1bWUgb3JkaW5hcnkgY3Jvc3MgdG9vbHMsIG9yIG5hdGl2ZSBidWlsZC4KKytsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKytjYXNlICRob3N0IGluCisrICAqLSotbWluZ3cqICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrICAgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisrZXNhYworKworK2ZpCisrCisrdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjY7IH0KKysKKysKKysKKysKKysKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMuLi4gIiA+JjY7IH0KKyBpZiB0ZXN0ICIke2x0X2N2X2xkX3JlbG9hZF9mbGFnK3NldH0iID0gc2V0OyB0aGVuIDoKK0BAIC01NjI5LDYgKzU3MDksMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KKyBlc2FjCisgcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJworIGNhc2UgJGhvc3Rfb3MgaW4KKysgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKysgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCisrICAgICAgcmVsb2FkX2NtZHM9ZmFsc2UKKysgICAgZmkKKysgICAgOzsKKyAgIGRhcndpbiopCisgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJworQEAgLTU3OTcsNyArNTg4Miw4IEBAIG1pbmd3KiB8IHB3MzIqKQorICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJworICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKKyAgIGVsc2UKKy0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCisrICAgICMgS2VlcCB0aGlzIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gZnVuY193aW4zMl9saWJpZC4KKysgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJworICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCisgICBmaQorICAgOzsKK0BAIC01ODc0LDExICs1OTYwLDYgQEAgbGludXgqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQorICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKKyAgIDs7CisgCistbGludXgtdWNsaWJjKikKKy0gIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCistICBsdF9jdl9maWxlX21hZ2ljX3Rlc3RfZmlsZT1gZWNobyAvbGliL2xpYnVDbGliYy0qLnNvYAorLSAgOzsKKy0KKyBuZXRic2QqKQorICAgaWYgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCAkR1JFUCBfX0VMRl9fID4gL2Rldi9udWxsOyB0aGVuCisgICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdtYXRjaF9wYXR0ZXJuIC9saWJbXi9dKyhcLnNvXC5bMC05XStcLlswLTldK3xfcGljXC5hKSQnCitAQCAtNTk1Niw2ICs2MDM3LDIxIEBAIGVzYWMKKyBmaQorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNQorICRhc19lY2hvICIkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNjsgfQorKworK2ZpbGVfbWFnaWNfZ2xvYj0KKyt3YW50X25vY2FzZWdsb2I9bm8KKytpZiB0ZXN0ICIkYnVpbGQiID0gIiRob3N0IjsgdGhlbgorKyAgY2FzZSAkaG9zdF9vcyBpbgorKyAgbWluZ3cqIHwgcHczMiopCisrICAgIGlmICggc2hvcHQgfCBncmVwIG5vY2FzZWdsb2IgKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKysgICAgICB3YW50X25vY2FzZWdsb2I9eWVzCisrICAgIGVsc2UKKysgICAgICBmaWxlX21hZ2ljX2dsb2I9YGVjaG8gYUFiQmNDZERlRWZGZ0doSGlJakprS2xMbU1uTm9PcFBxUXJSc1N0VHVVdlZ3V3hYeVl6WiB8ICRTRUQgLWUgInMvXCguLlwpL3NcL1tcMV1cL1tcMV1cL2c7L2ciYAorKyAgICBmaQorKyAgICA7OworKyAgZXNhYworK2ZpCisrCisgZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCisgZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCisgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCitAQCAtNTk3MSw5ICs2MDY3LDE2MiBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KKyAKKyAKKyAKKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKytpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2FjX2N2X3Byb2dfRExMVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19ETExUT09MPSIkRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorKyAgICBhY19jdl9wcm9nX0RMTFRPT0w9IiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrRExMVE9PTD0kYWNfY3ZfcHJvZ19ETExUT09MCisraWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJERMTFRPT0wiID4mNQorKyRhc19lY2hvICIkRExMVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrCisrZmkKKytpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19ETExUT09MIjsgdGhlbgorKyAgYWNfY3RfRExMVE9PTD0kRExMVE9PTAorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJkbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgZGxsdG9vbDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfRExMVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSIkYWNfY3RfRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorKyAgICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9ImRsbHRvb2wiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK2FjX2N0X0RMTFRPT0w9JGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTAorK2lmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9ETExUT09MIiA+JjUKKyskYXNfZWNobyAiJGFjX2N0X0RMTFRPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKyAgaWYgdGVzdCAieCRhY19jdF9ETExUT09MIiA9IHg7IHRoZW4KKysgICAgRExMVE9PTD0iZmFsc2UiCisrICBlbHNlCisrICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KKyt5ZXM6KQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CisrYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisrZXNhYworKyAgICBETExUT09MPSRhY19jdF9ETExUT09MCisrICBmaQorK2Vsc2UKKysgIERMTFRPT0w9IiRhY19jdl9wcm9nX0RMTFRPT0wiCisrZmkKKysKKyt0ZXN0IC16ICIkRExMVE9PTCIgJiYgRExMVE9PTD1kbGx0b29sCisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJworKworK2Nhc2UgJGhvc3Rfb3MgaW4KKytjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisrICAjIHR3byBkaWZmZXJlbnQgc2hlbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gbHRtYWluLnNoCisrICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCisrICBjYXNlIGAkRExMVE9PTCAtLWhlbHAgMj4mMWAgaW4KKysgICotLWlkZW50aWZ5LXN0cmljdCopCisrICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgorKyAgICA7OworKyAgKikKKysgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrCisrICAgIDs7CisrICBlc2FjCisrICA7OworKyopCisrICAjIGZhbGxiYWNrOiBhc3N1bWUgbGlua2xpYiBJUyBzaGFyZWRsaWIKKysgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSIkRUNITyIKKysgIDs7CisrZXNhYworKworK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY2OyB9Cisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisrdGVzdCAteiAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiAmJiBzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kRUNITworKworKworKworKworKworKworKworIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKy0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1hciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCistc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDIKKysgIGZvciBhY19wcm9nIGluIGFyCisrICBkbworKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisgaWYgdGVzdCAiJHthY19jdl9wcm9nX0FSK3NldH0iID0gc2V0OyB0aGVuIDoKK0BAIC01OTg5LDcgKzYyMzgsNyBAQCBkbworICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCistICAgIGFjX2N2X3Byb2dfQVI9IiR7YWNfdG9vbF9wcmVmaXh9YXIiCisrICAgIGFjX2N2X3Byb2dfQVI9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgorICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICAgYnJlYWsgMgorICAgZmkKK0BAIC02MDA5LDExICs2MjU4LDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9CisgZmkKKyAKKyAKKysgICAgdGVzdCAtbiAiJEFSIiAmJiBicmVhaworKyAgZG9uZQorIGZpCistaWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQVIiOyB0aGVuCisraWYgdGVzdCAteiAiJEFSIjsgdGhlbgorICAgYWNfY3RfQVI9JEFSCistICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKy1zZXQgZHVtbXkgYXI7IGFjX3dvcmQ9JDIKKysgIGZvciBhY19wcm9nIGluIGFyCisrZG8KKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKyBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfQVIrc2V0fSIgPSBzZXQ7IHRoZW4gOgorQEAgLTYwMjksNyArNjI4Miw3IEBAIGRvCisgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKy0gICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iYXIiCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9IiRhY19wcm9nIgorICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICAgYnJlYWsgMgorICAgZmkKK0BAIC02MDQ4LDYgKzYzMDEsMTAgQEAgZWxzZQorICRhc19lY2hvICJubyIgPiY2OyB9CisgZmkKKyAKKysKKysgIHRlc3QgLW4gIiRhY19jdF9BUiIgJiYgYnJlYWsKKytkb25lCisrCisgICBpZiB0ZXN0ICJ4JGFjX2N0X0FSIiA9IHg7IHRoZW4KKyAgICAgQVI9ImZhbHNlIgorICAgZWxzZQorQEAgLTYwNTksMTIgKzYzMTYsMTAgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisgZXNhYworICAgICBBUj0kYWNfY3RfQVIKKyAgIGZpCistZWxzZQorLSAgQVI9IiRhY19jdl9wcm9nX0FSIgorIGZpCisgCistdGVzdCAteiAiJEFSIiAmJiBBUj1hcgorLXRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1CisrOiAke0FSPWFyfQorKzogJHtBUl9GTEFHUz1jcnV9CisgCisgCisgCitAQCAtNjA3Niw2ICs2MzMxLDY0IEBAIHRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1CisgCisgCisgCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2x0X2N2X2FyX2F0X2ZpbGUrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9hcl9hdF9maWxlPW5vCisrICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKysKKytpbnQKKyttYWluICgpCisreworKworKyAgOworKyAgcmV0dXJuIDA7CisrfQorK19BQ0VPRgorK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKysgIGVjaG8gY29uZnRlc3QuJGFjX29iamV4dCA+IGNvbmZ0ZXN0LmxzdAorKyAgICAgIGx0X2FyX3RyeT0nJEFSICRBUl9GTEFHUyBsaWJjb25mdGVzdC5hIEBjb25mdGVzdC5sc3QgPiY1JworKyAgICAgIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1CisrICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1CisrICBhY19zdGF0dXM9JD8KKysgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQorKyAgICAgIGlmIHRlc3QgIiRhY19zdGF0dXMiIC1lcSAwOyB0aGVuCisrCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCisrCXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgbGliY29uZnRlc3QuYQorKwl7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQorKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQorKyAgYWNfc3RhdHVzPSQ/CisrICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKysgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KKysJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KKysgICAgICAgICAgbHRfY3ZfYXJfYXRfZmlsZT1ACisrICAgICAgICBmaQorKyAgICAgIGZpCisrICAgICAgcm0gLWYgY29uZnRlc3QuKiBsaWJjb25mdGVzdC5hCisrCisrZmkKKytybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKysKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfYXJfYXRfZmlsZSIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9hcl9hdF9maWxlIiA+JjY7IH0KKysKKytpZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCisrICBhcmNoaXZlcl9saXN0X3NwZWM9CisrZWxzZQorKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCisrZmkKKysKKysKKysKKysKKysKKysKKysKKyBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9c3RyaXAiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorIHNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fXN0cmlwOyBhY193b3JkPSQyCitAQCAtNjQxMCw4ICs2NzIzLDggQEAgZXNhYworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCisgCisgIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gc3ltYm9sIG5hbWUgYW5kIHN5bWJvbCBhZGRyZXNzCistbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKy1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKytsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorIAorICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgorIG9wdF9jcj0KK0BAIC02NDQ3LDYgKzY3NjAsNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCisgICBlbHNlCisgICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbCSBdXCgkc3ltY29kZSRzeW1jb2RlKlwpWwkgXVsJIF0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCisgICBmaQorKyAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0iJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgfCBzZWQgJy8gX19nbnVfbHRvL2QnIgorIAorICAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgcGlwZSB3b3JrcyBjb3JyZWN0bHkuCisgICBwaXBlX3dvcmtzPW5vCitAQCAtNjQ4OCw2ICs2ODAyLDE4IEBAIF9MVF9FT0YKKyAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgorIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKyAJICBjYXQgPDxfTFRfRU9GID4gY29uZnRlc3QuJGFjX2V4dAorKy8qIEtlZXAgdGhpcyBjb2RlIGluIHN5bmMgYmV0d2VlbiBsaWJ0b29sLm00LCBsdG1haW4sIGx0X3N5c3RlbS5oLCBhbmQgdGVzdHMuICAqLworKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCisrLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZSBydW50aW1lCisrICAgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uIG9uIHBzZXVkby1yZWxvY3MuICAqLworKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCisrI2VsaWYgZGVmaW5lZChfX29zZl9fKQorKy8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEuICAqLworKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCisrI2Vsc2UKKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVCBjb25zdAorKyNlbmRpZgorKworICNpZmRlZiBfX2NwbHVzcGx1cworIGV4dGVybiAiQyIgeworICNlbmRpZgorQEAgLTY0OTksNyArNjgyNSw3IEBAIF9MVF9FT0YKKyAJICBjYXQgPDxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKKyAKKyAvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCistY29uc3Qgc3RydWN0IHsKKytMVF9ETFNZTV9DT05TVCBzdHJ1Y3QgeworICAgY29uc3QgY2hhciAqbmFtZTsKKyAgIHZvaWQgICAgICAgKmFkZHJlc3M7CisgfQorQEAgLTY1MjUsOCArNjg1MSw4IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7CisgX0xUX0VPRgorIAkgICMgTm93IHRyeSBsaW5raW5nIHRoZSB0d28gZmlsZXMuCisgCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0CistCSAgbHRfc2F2ZV9MSUJTPSIkTElCUyIKKy0JICBsdF9zYXZlX0NGTEFHUz0iJENGTEFHUyIKKysJICBsdF9nbG9ic3ltX3NhdmVfTElCUz0kTElCUworKwkgIGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1M9JENGTEFHUworIAkgIExJQlM9ImNvbmZ0c3RtLiRhY19vYmpleHQiCisgCSAgQ0ZMQUdTPSIkQ0ZMQUdTJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIgorIAkgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19saW5rXCIiOyB9ID4mNQorQEAgLTY1MzYsOCArNjg2Miw4IEBAIF9MVF9FT0YKKyAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgorIAkgICAgcGlwZV93b3Jrcz15ZXMKKyAJICBmaQorLQkgIExJQlM9IiRsdF9zYXZlX0xJQlMiCistCSAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCisrCSAgTElCUz0kbHRfZ2xvYnN5bV9zYXZlX0xJQlMKKysJICBDRkxBR1M9JGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1MKKyAJZWxzZQorIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mNQorIAlmaQorQEAgLTY1NzQsNiArNjkwMCwxOCBAQCBlbHNlCisgJGFzX2VjaG8gIm9rIiA+JjY7IH0KKyBmaQorIAorKyMgUmVzcG9uc2UgZmlsZSBzdXBwb3J0LgorK2lmIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIk1TIGR1bXBiaW4iOyB0aGVuCisrICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKKytlbGlmICROTSAtLWhlbHAgMj4vZGV2L251bGwgfCBncmVwICdbQF1GSUxFJyA+L2Rldi9udWxsOyB0aGVuCisrICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKKytmaQorKworKworKworKworKworKworIAorIAorIAorQEAgLTY1OTAsNiArNjkyOCw0MyBAQCBmaQorIAorIAorIAorKworKworKworKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN5c3Jvb3QiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzeXNyb290Li4uICIgPiY2OyB9CisrCisrIyBDaGVjayB3aGV0aGVyIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Qgd2FzIGdpdmVuLgorK2lmIHRlc3QgIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgd2l0aHZhbD0kd2l0aF9saWJ0b29sX3N5c3Jvb3Q7CisrZWxzZQorKyAgd2l0aF9saWJ0b29sX3N5c3Jvb3Q9bm8KKytmaQorKworKworK2x0X3N5c3Jvb3Q9CisrY2FzZSAke3dpdGhfbGlidG9vbF9zeXNyb290fSBpbiAjKAorKyB5ZXMpCisrICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKysgICAgIGx0X3N5c3Jvb3Q9YCRDQyAtLXByaW50LXN5c3Jvb3QgMj4vZGV2L251bGxgCisrICAgZmkKKysgICA7OyAjKAorKyAvKikKKysgICBsdF9zeXNyb290PWBlY2hvICIkd2l0aF9saWJ0b29sX3N5c3Jvb3QiIHwgc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKKysgICA7OyAjKAorKyBub3wnJykKKysgICA7OyAjKAorKyAqKQorKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY1CisrJGFzX2VjaG8gIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjY7IH0KKysgICBhc19mbl9lcnJvciAiVGhlIHN5c3Jvb3QgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLiIgIiRMSU5FTk8iIDUKKysgICA7OworK2VzYWMKKysKKysgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7bHRfc3lzcm9vdDotbm99IiA+JjUKKyskYXNfZWNobyAiJHtsdF9zeXNyb290Oi1ub30iID4mNjsgfQorIAorIAorIAorQEAgLTY4MDEsNiArNzE3NiwxMjMgQEAgZXNhYworIAorIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgorIAorK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1tdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9bXQ7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHthY19jdl9wcm9nX01BTklGRVNUX1RPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJE1BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIke2FjX3Rvb2xfcHJlZml4fW10IgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKytNQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wKKytpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTUFOSUZFU1RfVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRNQU5JRkVTVF9UT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysKKytmaQorK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdF9NQU5JRkVTVF9UT09MPSRNQU5JRkVTVF9UT09MCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgbXQ7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0iJGFjX2N0X01BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSJtdCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrYWNfY3RfTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MCisraWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNQorKyRhc19lY2hvICIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrICBpZiB0ZXN0ICJ4JGFjX2N0X01BTklGRVNUX1RPT0wiID0geDsgdGhlbgorKyAgICBNQU5JRkVTVF9UT09MPSI6IgorKyAgZWxzZQorKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCisreWVzOikKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorK2FjX3Rvb2xfd2FybmVkPXllcyA7OworK2VzYWMKKysgICAgTUFOSUZFU1RfVE9PTD0kYWNfY3RfTUFOSUZFU1RfVE9PTAorKyAgZmkKKytlbHNlCisrICBNQU5JRkVTVF9UT09MPSIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIgorK2ZpCisrCisrdGVzdCAteiAiJE1BTklGRVNUX1RPT0wiICYmIE1BTklGRVNUX1RPT0w9bXQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9bm8KKysgIGVjaG8gIiRhc19tZTokTElORU5POiAkTUFOSUZFU1RfVE9PTCAnLT8nIiA+JjUKKysgICRNQU5JRkVTVF9UT09MICctPycgMj5jb25mdGVzdC5lcnIgPiBjb25mdGVzdC5vdXQKKysgIGNhdCBjb25mdGVzdC5lcnIgPiY1CisrICBpZiAkR1JFUCAnTWFuaWZlc3QgVG9vbCcgY29uZnRlc3Qub3V0ID4gL2Rldi9udWxsOyB0aGVuCisrICAgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD15ZXMKKysgIGZpCisrICBybSAtZiBjb25mdGVzdCoKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY2OyB9CisraWYgdGVzdCAieCRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiICE9IHh5ZXM7IHRoZW4KKysgIE1BTklGRVNUX1RPT0w9OgorK2ZpCisrCisrCisrCisrCisrCisgCisgICBjYXNlICRob3N0X29zIGluCisgICAgIHJoYXBzb2R5KiB8IGRhcndpbiopCitAQCAtNzM2NCw2ICs3ODU2LDggQEAgX0xUX0VPRgorICAgICAgICRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMgMj4mNQorICAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JjUKKyAgICAgICAkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyAyPiY1CisrICAgICAgZWNobyAiJFJBTkxJQiBsaWJjb25mdGVzdC5hIiA+JjUKKysgICAgICAkUkFOTElCIGxpYmNvbmZ0ZXN0LmEgMj4mNQorICAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgorIGludCBtYWluKCkgeyByZXR1cm4gMDt9CisgX0xUX0VPRgorQEAgLTc1NTksNyArODA1Myw4IEBAIGZpCisgTElCVE9PTF9ERVBTPSIkbHRtYWluIgorIAorICMgQWx3YXlzIHVzZSBvdXIgb3duIGxpYnRvb2wuCistTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpL2xpYnRvb2wnCisrTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpJworK0xJQlRPT0w9IiRMSUJUT09MLyR7aG9zdF9hbGlhc30tbGlidG9vbCIKKyAKKyAKKyAKK0BAIC03NjQ4LDcgKzgxNDMsNyBAQCBhaXgzKikKKyBlc2FjCisgCisgIyBHbG9iYWwgdmFyaWFibGVzOgorLW9maWxlPWxpYnRvb2wKKytvZmlsZT0ke2hvc3RfYWxpYXN9LWxpYnRvb2wKKyBjYW5fYnVpbGRfc2hhcmVkPXllcworIAorICMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAorQEAgLTc5NDYsOCArODQ0MSw2IEBAIGZpCisgbHRfcHJvZ19jb21waWxlcl9waWM9CisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9CisgCisteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1CistJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAKKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgIGx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCitAQCAtODExMyw2ICs4NjA2LDEyIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgCWx0X3Byb2dfY29tcGlsZXJfcGljPSctLXNoYXJlZCcKKyAJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy0tc3RhdGljJworIAk7OworKyAgICAgIG5hZ2ZvciopCisrCSMgTkFHIEZvcnRyYW4gY29tcGlsZXIKKysJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLC1XbCwsJworKwlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLVBJQycKKysJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJworKwk7OworICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKKyAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCisgCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCitAQCAtODE3NSw3ICs4Njc0LDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCisgICAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJworICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCistICAgICAgZjc3KiB8IGY5MCogfCBmOTUqKQorKyAgICAgIGY3NyogfCBmOTAqIHwgZjk1KiB8IHN1bmY3NyogfCBzdW5mOTAqIHwgc3VuZjk1KikKKyAJbHRfcHJvZ19jb21waWxlcl93bD0nLVFvcHRpb24gbGQgJzs7CisgICAgICAgKikKKyAJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCc7OworQEAgLTgyMzIsMTMgKzg3MzEsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgorICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0iJGx0X3Byb2dfY29tcGlsZXJfcGljIC1EUElDIgorICAgICA7OworIGVzYWMKKy17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKKy0kYXNfZWNobyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KKy0KKy0KKy0KKy0KKyAKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWMrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfcHJvZ19jb21waWxlcl9waWMKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQorK2x0X3Byb2dfY29tcGlsZXJfcGljPSRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYworIAorICMKKyAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCitAQCAtODI5OSw2ICs4ODAyLDExIEBAIGZpCisgCisgCisgCisrCisrCisrCisrCisrCisgIworICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KKyAjCitAQCAtODY0OSw3ICs5MTU3LDggQEAgX0xUX0VPRgorICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisgICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPW5vCisgICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKy0gICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS87cy9eLipbIF1fX25tX19cKFteIF0qXClbIF1bXiBdKi9cMSBEQVRBLzsvXklbIF0vZDsvXltBSVRXXVsgXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgICAgIGV4Y2x1ZGVfZXhwc3ltcz0nW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJworIAorICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCitAQCAtODc0OCwxMiArOTI1NywxMiBAQCBfTFRfRU9GCisgCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCisgCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KKyAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPSctcnBhdGggJGxpYmRpcicKKy0JICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKKysJICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCisgCSAgaWYgdGVzdCAieCRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciID0geHllczsgdGhlbgorIAkgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorIAkgICAgICBlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKy0JICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisrCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKKyAJICBmaQorIAkgIDs7CisgCWVzYWMKK0BAIC04NzY3LDggKzkyNzYsOCBAQCBfTFRfRU9GCisgCWFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKKyAJd2xhcmM9CisgICAgICAgZWxzZQorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBmaQorICAgICAgIDs7CisgCitAQCAtODc4Niw4ICs5Mjk1LDggQEAgX0xUX0VPRgorIAorIF9MVF9FT0YKKyAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZWxzZQorIAlsZF9zaGxpYnM9bm8KKyAgICAgICBmaQorQEAgLTg4MzMsOCArOTM0Miw4IEBAIF9MVF9FT0YKKyAKKyAgICAgKikKKyAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGVsc2UKKyAJbGRfc2hsaWJzPW5vCisgICAgICAgZmkKK0BAIC04OTY0LDcgKzk0NzMsMTMgQEAgX0xUX0VPRgorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nLWJlcm9rJworICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCisgICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCistICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKKytlbHNlCisrICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoXytzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgCisgaW50CitAQCAtODk3NywyMiArOTQ5MiwyOSBAQCBtYWluICgpCisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorIAorLWx0X2FpeF9saWJwYXRoX3NlZD0nCistICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKy0JL14wLyB7CistCSAgICBzL14wICAqXCguKlwpJC9cMS8KKy0JICAgIHAKKy0JfQorLSAgICB9JworLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCistICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy1maQorKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKKysgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisrCSAgL14wLyB7CisrCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCisrCSAgICAgIHAKKysJICB9CisrICAgICAgfScKKysgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgIGZpCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKKysgIGZpCisrCisrZmkKKysKKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KKytmaQorIAorICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCitAQCAtOTAwNCw3ICs5NTI2LDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAllbHNlCisgCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KKyAJICMgZW1wdHkgZXhlY3V0YWJsZS4KKy0JIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysJIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAorK2Vsc2UKKysgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGhfK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAKKyBpbnQKK0BAIC05MDE3LDIyICs5NTQ1LDI5IEBAIG1haW4gKCkKKyBfQUNFT0YKKyBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgCistbHRfYWl4X2xpYnBhdGhfc2VkPScKKy0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworLQkvXjAvIHsKKy0JICAgIHMvXjAgICpcKC4qXCkkL1wxLworLQkgICAgcAorLQl9CistICAgIH0nCistYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KKy0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLWZpCisrICBsdF9haXhfbGlicGF0aF9zZWQ9JworKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKysJICAvXjAvIHsKKysJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KKysJICAgICAgcAorKwkgIH0KKysgICAgICB9JworKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgZmkKKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgorKyAgZmkKKysKKytmaQorKworKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXworK2ZpCisgCisgCSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCitAQCAtOTA3NywyMCArOTYxMiw2MyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAgICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgorICAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKKyAgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgorLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCistICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKy0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorLSAgICAgIGxpYmV4dD1saWIKKy0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKy0gICAgICBzaHJleHRfY21kcz0iLmRsbCIKKy0gICAgICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCistICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKKy0gICAgICAjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgorLSAgICAgIG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCistICAgICAgIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KKy0gICAgICBvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCistICAgICAgZml4X3NyY2ZpbGVfcGF0aD0nYGN5Z3BhdGggLXcgIiRzcmNmaWxlImAnCistICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorKyAgICAgIGNsKikKKysJIyBOYXRpdmUgTVNWQworKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorKwlhbHdheXNfZXhwb3J0X3N5bWJvbHM9eWVzCisrCWZpbGVfbGlzdF9zcGVjPSdAJworKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorKwlsaWJleHQ9bGliCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorKwlzaHJleHRfY21kcz0iLmRsbCIKKysJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgorKwkgICAgc2VkIC1uIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgLWUgJzFcXFwhcCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICBlbHNlCisrCSAgICBzZWQgLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworKwkgIGZpfgorKwkgICRDQyAtbyAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgIkAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5leHAiIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn4KKysJICBsaW5rbmFtZXM9JworKwkjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCisrCSMgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCApPSd0cnVlJworKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworKwlleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSxEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrCSMgRG9uJ3QgdXNlIHJhbmxpYgorKwlvbGRfcG9zdGluc3RhbGxfY21kcz0nY2htb2QgNjQ0ICRvbGRsaWInCisrCXBvc3RsaW5rX2NtZHM9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KKysJICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgorKwkgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KKysJICAgICouZXhlfCouRVhFKSA7OworKwkgICAgKikKKysJICAgICAgbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgorKwkgICAgICBsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgorKwkgICAgICA7OworKwkgIGVzYWN+CisrCSAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KKysJICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7CisrCSAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKKysJICBmaScKKysJOzsKKysgICAgICAqKQorKwkjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKKysJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKysJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKysJbGliZXh0PWxpYgorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKysJc2hyZXh0X2NtZHM9Ii5kbGwiCisrCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKysJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKKysJIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KKysJb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKKysJIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KKysJb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJworKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworKwk7OworKyAgICAgIGVzYWMKKyAgICAgICA7OworIAorICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQorQEAgLTkxNTEsNyArOTcyOSw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICAjIEZyZWVCU0QgMyBhbmQgZ3JlYXRlciB1c2VzIGdjYyAtc2hhcmVkIHRvIGRvIHNoYXJlZCBsaWJyYXJpZXMuCisgICAgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKKy0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKyAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKKyAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCisgICAgICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj1ubworQEAgLTkxNTksNyArOTczNyw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICBocHV4OSopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgICBmaQorQEAgLTkxNzUsNyArOTc1Myw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICBocHV4MTAqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICAgZWxzZQorIAlhcmNoaXZlX2NtZHM9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCisgICAgICAgZmkKK0BAIC05MTk5LDEwICs5Nzc3LDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJaWE2NCopCistCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAkqKQorLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCWVzYWMKKyAgICAgICBlbHNlCitAQCAtOTI4MSwyMyArOTg1OSwzNiBAQCBmaQorIAorICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAkjIFRyeSB0byB1c2UgdGhlIC1leHBvcnRlZF9zeW1ib2wgbGQgb3B0aW9uLCBpZiBpdCBkb2VzIG5vdAorIAkjIHdvcmssIGFzc3VtZSB0aGF0IC1leHBvcnRzX2ZpbGUgZG9lcyBub3Qgd29yayBlaXRoZXIgYW5kCisgCSMgaW1wbGljaXRseSBleHBvcnQgYWxsIHN5bWJvbHMuCistICAgICAgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorLSAgICAgICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgorLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKwkjIFRoaXMgc2hvdWxkIGJlIHRoZSBzYW1lIGZvciBhbGwgbGFuZ3VhZ2VzLCBzbyBubyBwZXItdGFnIGNhY2hlIHZhcmlhYmxlLgorKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKysJICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgorKwkgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworLWludCBmb28odm9pZCkge30KKytpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9CisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorLSAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworLQorKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9eWVzCisrZWxzZQorKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9bm8KKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLSAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKKysgICAgICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjY7IH0KKysJaWYgdGVzdCAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA9IHllczsgdGhlbgorKyAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlmaQorICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCitAQCAtOTM4Miw3ICs5OTczLDcgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIG9zZjQqIHwgb3NmNSopCSMgYXMgb3NmMyogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZworICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworICAgICAgIGVsc2UKKyAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCitAQCAtOTQwMSw5ICs5OTkyLDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyAteiBkZWZzJworICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgCXdsYXJjPScke3dsfScKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KKy0JICAkQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworKwkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworICAgICAgIGVsc2UKKyAJY2FzZSBgJENDIC1WIDI+JjFgIGluCisgCSoiQ29tcGlsZXJzIDUuMCIqKQorQEAgLTk5NzksOCArMTA1NzAsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICBuZWVkX3ZlcnNpb249bm8KKyAgIG5lZWRfbGliX3ByZWZpeD1ubworIAorLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCistICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQorKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgorKyAgeWVzLCopCisrICAgICMgZ2NjCisgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCisgICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKyAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CitAQCAtMTAwMTMsMTMgKzEwNjA1LDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisgICAgICAgOzsKKyAgICAgZXNhYworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworKyAgICA7OworKworKyAgKixjbCopCisrICAgICMgTmF0aXZlIE1TVkMKKysgICAgbGlibmFtZV9zcGVjPSckbmFtZScKKysgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0uZGxsLmxpYicKKysKKysgICAgY2FzZSAkYnVpbGRfb3MgaW4KKysgICAgbWluZ3cqKQorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0KKysgICAgICBsdF9zYXZlX2lmcz0kSUZTCisrICAgICAgSUZTPSc7JworKyAgICAgIGZvciBsdF9wYXRoIGluICRMSUIKKysgICAgICBkbworKyAgICAgICAgSUZTPSRsdF9zYXZlX2lmcworKyAgICAgICAgIyBMZXQgRE9TIHZhcmlhYmxlIGV4cGFuc2lvbiBwcmludCB0aGUgc2hvcnQgOC4zIHN0eWxlIGZpbGUgbmFtZS4KKysgICAgICAgIGx0X3BhdGg9YGNkICIkbHRfcGF0aCIgMj4vZGV2L251bGwgJiYgY21kIC8vQyAiZm9yICVpIGluICgiLiIpIGRvIEBlY2hvICV+c2kiYAorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjICRsdF9wYXRoIgorKyAgICAgIGRvbmUKKysgICAgICBJRlM9JGx0X3NhdmVfaWZzCisrICAgICAgIyBDb252ZXJ0IHRvIE1TWVMgc3R5bGUuCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBzZWQgLWUgJ3N8XFxcXHwvfGcnIC1lICdzfCBcXChbYS16QS1aXVxcKTp8IC9cXDF8ZycgLWUgJ3N8XiB8fCdgCisrICAgICAgOzsKKysgICAgY3lnd2luKikKKysgICAgICAjIENvbnZlcnQgdG8gdW5peCBmb3JtLCB0aGVuIHRvIGRvcyBmb3JtLCB0aGVuIGJhY2sgdG8gdW5peCBmb3JtCisrICAgICAgIyBidXQgdGhpcyB0aW1lIGRvcyBzdHlsZSAobm8gc3BhY2VzISkgc28gdGhhdCB0aGUgdW5peCBmb3JtIGxvb2tzCisrICAgICAgIyBsaWtlIC9jeWdkcml2ZS9jL1BST0dSQX4xOi9jeWdkci4uLgorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkTElCImAKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tZG9zICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiAyPi9kZXYvbnVsbGAKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorKyAgICAgIDs7CisrICAgICopCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkTElCIgorKyAgICAgIGlmICRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbDsgdGhlbgorKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCisrICAgICAgZWxzZQorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorKyAgICAgIGZpCisrICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCisrICAgICAgIyBjb21tb24uIChlLmcuICJQcm9ncmFtIEZpbGVzIiAtPiAiUFJPR1JBfjEiKQorKyAgICAgIDs7CisrICAgIGVzYWMKKysKKysgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcworKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KKysgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgorKyAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KKysgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KKysgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCisrICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisrICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KKysgICAgICAgJFJNIFwkZGxwYXRoJworKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKKyAgICAgOzsKKyAKKyAgICopCisrICAgICMgQXNzdW1lIE1TVkMgd3JhcHBlcgorICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKyAgICAgOzsKKyAgIGVzYWMKKy0gIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisgICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KKyAgIHNobGlicGF0aF92YXI9UEFUSAorICAgOzsKK0BAIC0xMDExMSw3ICsxMDc2MSw3IEBAIGhhaWt1KikKKyAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAorICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L2Jlb3Mvc3lzdGVtL2xpYicKKysgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9zeXN0ZW0vbGliJworICAgaGFyZGNvZGVfaW50b19saWJzPXllcworICAgOzsKKyAKK0BAIC0xMDk1MSwxMCArMTE2MDEsMTAgQEAgZWxzZQorIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKKyAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCisgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCistdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKytpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisgI2VuZGlmCisgCistdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9CisraW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9CisgaW50IG1haW4gKCkKKyB7CisgICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKK0BAIC0xMTA1NywxMCArMTE3MDcsMTAgQEAgZWxzZQorIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKKyAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCisgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCistdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKytpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisgI2VuZGlmCisgCistdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9CisraW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9CisgaW50IG1haW4gKCkKKyB7CisgICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKK0BAIC0xMzAwNSwxMyArMTM2NTUsMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Vuc2V0PSdgJEVDSE8gIiRsdF91bnNldCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfU1AyTkw9J2AkRUNITyAiJGx0X1NQMk5MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9OTDJTUD0nYCRFQ0hPICIkbHRfTkwyU1AiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHJlbG9hZF9mbGFnPSdgJEVDSE8gIiRyZWxvYWRfZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgcmVsb2FkX2NtZHM9J2AkRUNITyAiJHJlbG9hZF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBPQkpEVU1QPSdgJEVDSE8gIiRPQkpEVU1QIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0nYCRFQ0hPICIkZGVwbGlic19jaGVja19tZXRob2QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGZpbGVfbWFnaWNfY21kPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrZmlsZV9tYWdpY19nbG9iPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2dsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK3dhbnRfbm9jYXNlZ2xvYj0nYCRFQ0hPICIkd2FudF9ub2Nhc2VnbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytETExUT09MPSdgJEVDSE8gIiRETExUT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0nYCRFQ0hPICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIEFSPSdgJEVDSE8gIiRBUiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgQVJfRkxBR1M9J2AkRUNITyAiJEFSX0ZMQUdTIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKythcmNoaXZlcl9saXN0X3NwZWM9J2AkRUNITyAiJGFyY2hpdmVyX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgU1RSSVA9J2AkRUNITyAiJFNUUklQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBSQU5MSUI9J2AkRUNITyAiJFJBTkxJQiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2AkRUNITyAiJG9sZF9wb3N0aW5zdGFsbF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xMzAyNiwxNCArMTM2ODMsMTcgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgfCAkU0VEICIkZGUKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbm1fZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJG5tX2ZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9zeXNyb290PSdgJEVDSE8gIiRsdF9zeXNyb290IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBvYmpkaXI9J2AkRUNITyAiJG9iamRpciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTUFHSUNfQ01EPSdgJEVDSE8gIiRNQUdJQ19DTUQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCistbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9waWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9zdGF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vPSdgJEVDSE8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbmVlZF9sb2Nrcz0nYCRFQ0hPICIkbmVlZF9sb2NrcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrTUFOSUZFU1RfVE9PTD0nYCRFQ0hPICIkTUFOSUZFU1RfVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgRFNZTVVUSUw9J2AkRUNITyAiJERTWU1VVElMIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBOTUVESVQ9J2AkRUNITyAiJE5NRURJVCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTElQTz0nYCRFQ0hPICIkTElQTyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTMwNjYsMTIgKzEzNzI2LDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xCisgaGFyZGNvZGVfYXV0b21hdGljPSdgJEVDSE8gIiRoYXJkY29kZV9hdXRvbWF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGluaGVyaXRfcnBhdGg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGxpbmtfYWxsX2RlcGxpYnM9J2AkRUNITyAiJGxpbmtfYWxsX2RlcGxpYnMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworLWZpeF9zcmNmaWxlX3BhdGg9J2AkRUNITyAiJGZpeF9zcmNmaWxlX3BhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGFsd2F5c19leHBvcnRfc3ltYm9scz0nYCRFQ0hPICIkYWx3YXlzX2V4cG9ydF9zeW1ib2xzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBleHBvcnRfc3ltYm9sc19jbWRzPSdgJEVDSE8gIiRleHBvcnRfc3ltYm9sc19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBleGNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGV4Y2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgaW5jbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHByZWxpbmtfY21kcz0nYCRFQ0hPICIkcHJlbGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytwb3N0bGlua19jbWRzPSdgJEVDSE8gIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBmaWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSdgJEVDSE8gIiR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbmVlZF9saWJfcHJlZml4PSdgJEVDSE8gIiRuZWVkX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTEzMTI2LDggKzEzNzg2LDEzIEBAIHJlbG9hZF9mbGFnIFwKKyBPQkpEVU1QIFwKKyBkZXBsaWJzX2NoZWNrX21ldGhvZCBcCisgZmlsZV9tYWdpY19jbWQgXAorK2ZpbGVfbWFnaWNfZ2xvYiBcCisrd2FudF9ub2Nhc2VnbG9iIFwKKytETExUT09MIFwKKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCBcCisgQVIgXAorIEFSX0ZMQUdTIFwKKythcmNoaXZlcl9saXN0X3NwZWMgXAorIFNUUklQIFwKKyBSQU5MSUIgXAorIENDIFwKK0BAIC0xMzEzNywxMiArMTM4MDIsMTQgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wgXAorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIFwKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IFwKKytubV9maWxlX2xpc3Rfc3BlYyBcCisgbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcgXAorLWx0X3Byb2dfY29tcGlsZXJfd2wgXAorIGx0X3Byb2dfY29tcGlsZXJfcGljIFwKKytsdF9wcm9nX2NvbXBpbGVyX3dsIFwKKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyBcCisgbHRfY3ZfcHJvZ19jb21waWxlcl9jX28gXAorIG5lZWRfbG9ja3MgXAorK01BTklGRVNUX1RPT0wgXAorIERTWU1VVElMIFwKKyBOTUVESVQgXAorIExJUE8gXAorQEAgLTEzMTU4LDcgKzEzODI1LDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWcgXAorIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgXAorIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQgXAorIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IgXAorLWZpeF9zcmNmaWxlX3BhdGggXAorIGV4Y2x1ZGVfZXhwc3ltcyBcCisgaW5jbHVkZV9leHBzeW1zIFwKKyBmaWxlX2xpc3Rfc3BlYyBcCitAQCAtMTMxOTQsNiArMTM4NjAsNyBAQCBtb2R1bGVfY21kcyBcCisgbW9kdWxlX2V4cHN5bV9jbWRzIFwKKyBleHBvcnRfc3ltYm9sc19jbWRzIFwKKyBwcmVsaW5rX2NtZHMgXAorK3Bvc3RsaW5rX2NtZHMgXAorIHBvc3RpbnN0YWxsX2NtZHMgXAorIHBvc3R1bmluc3RhbGxfY21kcyBcCisgZmluaXNoX2NtZHMgXAorQEAgLTEzOTUwLDcgKzE0NjE3LDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAorICMgTk9URTogQ2hhbmdlcyBtYWRlIHRvIHRoaXMgZmlsZSB3aWxsIGJlIGxvc3Q6IGxvb2sgYXQgbHRtYWluLnNoLgorICMKKyAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAorLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisrIyAgICAgICAgICAgICAgICAgSW5jLgorICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2CisgIworICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KK0BAIC0xNDA1MywxOSArMTQ3MjEsNDIgQEAgU1AyTkw9JGx0X2x0X1NQMk5MCisgIyB0dXJuIG5ld2xpbmVzIGludG8gc3BhY2VzLgorIE5MMlNQPSRsdF9sdF9OTDJTUAorIAorKyMgY29udmVydCBcJGJ1aWxkIGZpbGUgbmFtZXMgdG8gXCRob3N0IGZvcm1hdC4KKyt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCisrCisrIyBjb252ZXJ0IFwkYnVpbGQgZmlsZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4KKyt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCisrCisgIyBBbiBvYmplY3Qgc3ltYm9sIGR1bXBlci4KKyBPQkpEVU1QPSRsdF9PQkpEVU1QCisgCisgIyBNZXRob2QgdG8gY2hlY2sgd2hldGhlciBkZXBlbmRlbnQgbGlicmFyaWVzIGFyZSBzaGFyZWQgb2JqZWN0cy4KKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfZGVwbGlic19jaGVja19tZXRob2QKKyAKKy0jIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPT0gImZpbGVfbWFnaWMiLgorKyMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KKyBmaWxlX21hZ2ljX2NtZD0kbHRfZmlsZV9tYWdpY19jbWQKKyAKKysjIEhvdyB0byBmaW5kIHBvdGVudGlhbCBmaWxlcyB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorK2ZpbGVfbWFnaWNfZ2xvYj0kbHRfZmlsZV9tYWdpY19nbG9iCisrCisrIyBGaW5kIHBvdGVudGlhbCBmaWxlcyB1c2luZyBub2Nhc2VnbG9iIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCisrd2FudF9ub2Nhc2VnbG9iPSRsdF93YW50X25vY2FzZWdsb2IKKysKKysjIERMTCBjcmVhdGlvbiBwcm9ncmFtLgorK0RMTFRPT0w9JGx0X0RMTFRPT0wKKysKKysjIENvbW1hbmQgdG8gYXNzb2NpYXRlIHNoYXJlZCBhbmQgbGluayBsaWJyYXJpZXMuCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisrCisgIyBUaGUgYXJjaGl2ZXIuCisgQVI9JGx0X0FSCisrCisrIyBGbGFncyB0byBjcmVhdGUgYW4gYXJjaGl2ZS4KKyBBUl9GTEFHUz0kbHRfQVJfRkxBR1MKKyAKKysjIEhvdyB0byBmZWVkIGEgZmlsZSBsaXN0aW5nIHRvIHRoZSBhcmNoaXZlci4KKythcmNoaXZlcl9saXN0X3NwZWM9JGx0X2FyY2hpdmVyX2xpc3Rfc3BlYworKworICMgQSBzeW1ib2wgc3RyaXBwaW5nIHByb2dyYW0uCisgU1RSSVA9JGx0X1NUUklQCisgCitAQCAtMTQwOTUsNiArMTQ3ODYsMTIgQEAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKKyAjIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkLgorIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeAorIAorKyMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzIGZvciBcJE5NLgorK25tX2ZpbGVfbGlzdF9zcGVjPSRsdF9ubV9maWxlX2xpc3Rfc3BlYworKworKyMgVGhlIHJvb3Qgd2hlcmUgdG8gc2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzLGFuZCBpbiB3aGljaCBvdXIgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQuCisrbHRfc3lzcm9vdD0kbHRfc3lzcm9vdAorKworICMgVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRlbXBvcmFyeSBsaWJ0b29sIGZpbGVzLgorIG9iamRpcj0kb2JqZGlyCisgCitAQCAtMTQxMDQsNiArMTQ4MDEsOSBAQCBNQUdJQ19DTUQ9JE1BR0lDX0NNRAorICMgTXVzdCB3ZSBsb2NrIGZpbGVzIHdoZW4gZG9pbmcgY29tcGlsYXRpb24/CisgbmVlZF9sb2Nrcz0kbHRfbmVlZF9sb2NrcworIAorKyMgTWFuaWZlc3QgdG9vbC4KKytNQU5JRkVTVF9UT09MPSRsdF9NQU5JRkVTVF9UT09MCisrCisgIyBUb29sIHRvIG1hbmlwdWxhdGUgYXJjaGl2ZWQgRFdBUkYgZGVidWcgc3ltYm9sIGZpbGVzIG9uIE1hYyBPUyBYLgorIERTWU1VVElMPSRsdF9EU1lNVVRJTAorIAorQEAgLTE0MjE4LDEyICsxNDkxOCwxMiBAQCB3aXRoX2djYz0kR0NDCisgIyBDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgorIG5vX2J1aWx0aW5fZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcKKyAKKy0jIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCistd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKKy0KKyAjIEFkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0cy4KKyBwaWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9waWMKKyAKKysjIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCisrd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKKysKKyAjIENvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBkeW5hbWljIGxpbmtpbmcuCisgbGlua19zdGF0aWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9zdGF0aWMKKyAKK0BAIC0xNDMxMCw5ICsxNTAxMCw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGgKKyAjIFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KKyBsaW5rX2FsbF9kZXBsaWJzPSRsaW5rX2FsbF9kZXBsaWJzCisgCistIyBGaXggdGhlIHNoZWxsIHZhcmlhYmxlIFwkc3JjZmlsZSBmb3IgdGhlIGNvbXBpbGVyLgorLWZpeF9zcmNmaWxlX3BhdGg9JGx0X2ZpeF9zcmNmaWxlX3BhdGgKKy0KKyAjIFNldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4KKyBhbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3ltYm9scworIAorQEAgLTE0MzI4LDYgKzE1MDI1LDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKKyAjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzLgorIHByZWxpbmtfY21kcz0kbHRfcHJlbGlua19jbWRzCisgCisrIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGZpbmlzaGluZyBsaW5raW5nIHByb2dyYW1zLgorK3Bvc3RsaW5rX2NtZHM9JGx0X3Bvc3RsaW5rX2NtZHMKKysKKyAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcy4KKyBmaWxlX2xpc3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWMKKyAKK0BAIC0xNDM2MCwyMTAgKzE1MDYwLDE2OSBAQCBsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKKyAgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KKyAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCisgICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPworLSAgc2VkICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlL3EnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKy0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKy0KKy0gIGNhc2UgJHhzaV9zaGVsbCBpbgorLSAgeWVzKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKy0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy1mdW5jX2Rpcm5hbWUgKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKy0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworLSAgZXNhYworLX0KKy0KKy0jIGZ1bmNfYmFzZW5hbWUgZmlsZQorLWZ1bmNfYmFzZW5hbWUgKCkKKy17CistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCistfQorLQorLSMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIHBlcmZvcm0gZnVuY19iYXNlbmFtZSBhbmQgZnVuY19kaXJuYW1lIGluIGEgc2luZ2xlIGZ1bmN0aW9uCistIyBjYWxsOgorLSMgICBkaXJuYW1lOiAgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksCistIyAgICAgICAgICAgICBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsIG90aGVyd2lzZSBzZXQgcmVzdWx0CistIyAgICAgICAgICAgICB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfZGlybmFtZV9yZXN1bHQiCistIyAgIGJhc2VuYW1lOiBDb21wdXRlIGZpbGVuYW1lIG9mIEZJTEUuCistIyAgICAgICAgICAgICB2YWx1ZSByZXR1bmVkIGluICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCistIyBJbXBsZW1lbnRhdGlvbiBtdXN0IGJlIGtlcHQgc3luY2hyb25pemVkIHdpdGggZnVuY19kaXJuYW1lCistIyBhbmQgZnVuY19iYXNlbmFtZS4gRm9yIGVmZmljaWVuY3ksIHdlIGRvIG5vdCBkZWxlZ2F0ZSB0bworLSMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgorLWZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKy0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworLSAgZXNhYworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgorLX0KKy0KKy0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQorLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCistIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKy0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKy0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCistZnVuY19zdHJpcG5hbWUgKCkKKy17CistICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCistICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In0KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9CistfQorLQorLSMgZnVuY19vcHRfc3BsaXQKKy1mdW5jX29wdF9zcGxpdCAoKQorLXsKKy0gIGZ1bmNfb3B0X3NwbGl0X29wdD0kezElJT0qfQorLSAgZnVuY19vcHRfc3BsaXRfYXJnPSR7MSMqPX0KKy19CistCistIyBmdW5jX2xvMm8gb2JqZWN0CistZnVuY19sbzJvICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7CistICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OworLSAgZXNhYworLX0KKy0KKy0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQorLWZ1bmNfeGZvcm0gKCkKKy17CistICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvCistfQorLQorLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KKy1mdW5jX2FyaXRoICgpCisteworLSAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpCistfQorLQorLSMgZnVuY19sZW4gc3RyaW5nCistIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgorLWZ1bmNfbGVuICgpCisteworLSAgZnVuY19sZW5fcmVzdWx0PSR7IzF9CistfQorLQorLV9MVF9FT0YKKy0gICAgOzsKKy0gICopICMgQm91cm5lIGNvbXBhdGlibGUgZnVuY3Rpb25zLgorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKy0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy1mdW5jX2Rpcm5hbWUgKCkKKy17CistICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgorLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGRpcm5hbWUiYAorLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKKy0gIGVsc2UKKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgorLSAgZmkKKy19CistCistIyBmdW5jX2Jhc2VuYW1lIGZpbGUKKy1mdW5jX2Jhc2VuYW1lICgpCisteworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRiYXNlbmFtZSJgCistfQorLQorLQorLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCistIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKy0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KKy0jIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCistZnVuY19zdHJpcG5hbWUgKCkKKy17CistICBjYXNlICR7Mn0gaW4KKy0gICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKKy0gICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OworLSAgZXNhYworLX0KKy0KKy0jIHNlZCBzY3JpcHRzOgorLW15X3NlZF9sb25nX29wdD0nMXMvXlwoLVtePV0qXCk9LiovXDEvO3EnCistbXlfc2VkX2xvbmdfYXJnPScxcy9eLVtePV0qPS8vJworLQorLSMgZnVuY19vcHRfc3BsaXQKKy1mdW5jX29wdF9zcGxpdCAoKQorLXsKKy0gIGZ1bmNfb3B0X3NwbGl0X29wdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX29wdCJgCistICBmdW5jX29wdF9zcGxpdF9hcmc9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19hcmciYAorLX0KKy0KKy0jIGZ1bmNfbG8ybyBvYmplY3QKKy1mdW5jX2xvMm8gKCkKKy17CistICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbG8ybyJgCistfQorLQorLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCistZnVuY194Zm9ybSAoKQorLXsKKy0gIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICdzL1wuW14uXSokLy5sby8nYAorLX0KKy0KKy0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCistZnVuY19hcml0aCAoKQorLXsKKy0gIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIkQCJgCistfQorLQorLSMgZnVuY19sZW4gc3RyaW5nCistIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgorLWZ1bmNfbGVuICgpCisteworLSAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkMSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAorLX0KKy0KKy1fTFRfRU9GCistZXNhYworLQorLWNhc2UgJGx0X3NoZWxsX2FwcGVuZCBpbgorLSAgeWVzKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCistIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCistZnVuY19hcHBlbmQgKCkKKy17CistICBldmFsICIkMSs9XCQyIgorLX0KKy1fTFRfRU9GCistICAgIDs7CistICAqKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCistIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCistZnVuY19hcHBlbmQgKCkKKy17CistICBldmFsICIkMT1cJCQxXCQyIgorLX0KKy0KKy1fTFRfRU9GCistICAgIDs7CistICBlc2FjCistCistCistICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCistICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCistCistICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CisrICBzZWQgJyRxJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCisrICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorKworKyAgaWYgdGVzdCB4IiR4c2lfc2hlbGwiID0geHllczsgdGhlbgorKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZSAvY1wKKytmdW5jX2Rpcm5hbWUgKClcCisre1wKKytcICAgIGNhc2UgJHsxfSBpblwKKytcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCisrXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCisrXCAgICBlc2FjXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19iYXNlbmFtZSAvY1wKKytmdW5jX2Jhc2VuYW1lICgpXAorK3tcCisrXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgL2NcCisrZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKVwKKyt7XAorK1wgICAgY2FzZSAkezF9IGluXAorK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKKytcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKKytcICAgIGVzYWNcCisrXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zdHJpcG5hbWUgKCkkLywvXn0gIyBmdW5jX3N0cmlwbmFtZSAvY1wKKytmdW5jX3N0cmlwbmFtZSAoKVwKKyt7XAorK1wgICAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZVwKKytcICAgICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC5cCisrXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfVwKKytcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9XAorK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3RyaXBuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zcGxpdF9sb25nX29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfbG9uZ19vcHQgL2NcCisrZnVuY19zcGxpdF9sb25nX29wdCAoKVwKKyt7XAorK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPSR7MSUlPSp9XAorK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9JHsxIyo9fVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9sb25nX29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfc2hvcnRfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9zaG9ydF9vcHQgL2NcCisrZnVuY19zcGxpdF9zaG9ydF9vcHQgKClcCisre1wKKytcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz0kezEjPz99XAorK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT0kezElIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmcifVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9zaG9ydF9vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2xvMm8gKCkkLywvXn0gIyBmdW5jX2xvMm8gL2NcCisrZnVuY19sbzJvICgpXAorK3tcCisrXCAgICBjYXNlICR7MX0gaW5cCisrXCAgICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7XAorK1wgICAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOztcCisrXCAgICBlc2FjXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xvMm8gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3hmb3JtICgpJC8sL159ICMgZnVuY194Zm9ybSAvY1wKKytmdW5jX3hmb3JtICgpXAorK3tcCisrICAgIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG9cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfeGZvcm0gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2FyaXRoICgpJC8sL159ICMgZnVuY19hcml0aCAvY1wKKytmdW5jX2FyaXRoICgpXAorK3tcCisrICAgIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcml0aCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfbGVuICgpJC8sL159ICMgZnVuY19sZW4gL2NcCisrZnVuY19sZW4gKClcCisre1wKKysgICAgZnVuY19sZW5fcmVzdWx0PSR7IzF9XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xlbiBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworK2ZpCisrCisraWYgdGVzdCB4IiRsdF9zaGVsbF9hcHBlbmQiID0geHllczsgdGhlbgorKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kICgpJC8sL159ICMgZnVuY19hcHBlbmQgL2NcCisrZnVuY19hcHBlbmQgKClcCisre1wKKysgICAgZXZhbCAiJHsxfSs9XFwkezJ9IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2FwcGVuZF9xdW90ZWQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZF9xdW90ZWQgL2NcCisrZnVuY19hcHBlbmRfcXVvdGVkICgpXAorK3tcCisrXCAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IlwKKytcICAgIGV2YWwgIiR7MX0rPVxcXFwgXFwkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZF9xdW90ZWQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCB3aGVyZSBwb3NzaWJsZSBieSBkaXJlY3QgdXNlIG9mICcrPScKKysgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDErPSIlZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAorKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKytlbHNlCisrICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgZXZlbiB3aGVuICcrPScgaXMgbm90IGF2YWlsYWJsZQorKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMT0iJFwxJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKysgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKysgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrZmkKKysKKytpZiB0ZXN0IHgiJF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWwiID0geCI6IjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjI7fQorK2ZpCisrCisrCisrICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAorICAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQorICAgY2htb2QgK3ggIiRvZmlsZSIKKyAKK2RpZmYgLS1naXQgYS9sZC9jb25maWd1cmUgYi9sZC9jb25maWd1cmUKK2luZGV4IGQ3ZjY2ZjhjZGMuLjRlNzE1MTFiZDEgMTAwNzU1CistLS0gYS9sZC9jb25maWd1cmUKKysrKyBiL2xkL2NvbmZpZ3VyZQorQEAgLTY1NSw4ICs2NTUsMTEgQEAgT1RPT0wKKyBMSVBPCisgTk1FRElUCisgRFNZTVVUSUwKKytNQU5JRkVTVF9UT09MCisgUkFOTElCCisrYWNfY3RfQVIKKyBBUgorK0RMTFRPT0wKKyBPQkpEVU1QCisgTE5fUworIE5NCitAQCAtNzc4LDYgKzc4MSw3IEBAIGVuYWJsZV9zdGF0aWMKKyB3aXRoX3BpYworIGVuYWJsZV9mYXN0X2luc3RhbGwKKyB3aXRoX2dudV9sZAorK3dpdGhfbGlidG9vbF9zeXNyb290CisgZW5hYmxlX2xpYnRvb2xfbG9jaworIGVuYWJsZV9wbHVnaW5zCisgZW5hYmxlX2xhcmdlZmlsZQorQEAgLTE0NjQsNiArMTQ2OCw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgorICAgLS13aXRoLXBpYyAgICAgICAgICAgICAgdHJ5IHRvIHVzZSBvbmx5IFBJQy9ub24tUElDIG9iamVjdHMgW2RlZmF1bHQ9dXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBib3RoXQorICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIFtkZWZhdWx0PW5vXQorKyAgLS13aXRoLWxpYnRvb2wtc3lzcm9vdD1ESVIgU2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzIHdpdGhpbiBESVIKKysgICAgICAgICAgICAgICAgICAgICAgICAob3IgdGhlIGNvbXBpbGVyJ3Mgc3lzcm9vdCBpZiBub3Qgc3BlY2lmaWVkKS4KKyAgIC0td2l0aC1saWItcGF0aD1kaXIxOmRpcjIuLi4gIHNldCBkZWZhdWx0IExJQl9QQVRICisgICAtLXdpdGgtc3lzcm9vdD1ESVIgU2VhcmNoIGZvciB1c3IvbGliIGV0IGFsIHdpdGhpbiBESVIuCisgCitAQCAtNTY1OCw4ICs1NjY0LDggQEAgZXNhYworIAorIAorIAorLW1hY3JvX3ZlcnNpb249JzIuMi43YScKKy1tYWNyb19yZXZpc2lvbj0nMS4zMTM0JworK21hY3JvX3ZlcnNpb249JzIuNCcKKyttYWNyb19yZXZpc2lvbj0nMS4zMjkzJworIAorIAorIAorQEAgLTU2OTksNyArNTcwNSw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncyIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MuLi4gIiA+JjY7IH0KKyAjIFRlc3QgcHJpbnQgZmlyc3QsIGJlY2F1c2UgaXQgd2lsbCBiZSBhIGJ1aWx0aW4gaWYgcHJlc2VudC4KKy1pZiB0ZXN0ICJYYHByaW50IC1yIC0tIC1uIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAorK2lmIHRlc3QgIlhgKCBwcmludCAtciAtLSAtbiApIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAorICAgIHRlc3QgIlhgcHJpbnQgLXIgLS0gJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCisgICBFQ0hPPSdwcmludCAtciAtLScKKyBlbGlmIHRlc3QgIlhgcHJpbnRmICVzICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgorQEAgLTYzODUsOCArNjM5MSw4IEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIHNoZWxsIHVuZGVyc3RhbmRzIHNvbWUgWFNJIGNvbnN0cnVjdHMuLi4gIiA+JjY7CisgIyBUcnkgc29tZSBYU0kgZmVhdHVyZXMKKyB4c2lfc2hlbGw9bm8KKyAoIF9sdF9kdW1teT0iYS9iL2MiCistICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwiJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAorLSAgICAgID0gYyxhL2IsLCBcCisrICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwke19sdF9kdW1teSM/P30iJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAorKyAgICAgID0gYyxhL2IsYi9jLCBcCisgICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKKyAgICAgJiYgdGVzdCAiJHsjX2x0X2R1bW15fSIgLWVxIDUnICkgPi9kZXYvbnVsbCAyPiYxIFwKKyAgICYmIHhzaV9zaGVsbD15ZXMKK0BAIC02NDM1LDYgKzY0NDEsODAgQEAgZXNhYworIAorIAorIAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXNlICRob3N0IGluCisrICAqLSotbWluZ3cqICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrICAgICAgICA7OworKyAgICAgICotKi1jeWd3aW4qICkKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4CisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b193MzIKKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKysgICotKi1jeWd3aW4qICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luCisrICAgICAgICA7OworKyAgICAgICotKi1jeWd3aW4qICkKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorKyAgICAgICAgOzsKKysgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4CisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4KKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKysgICogKSAjIHVuaGFuZGxlZCBob3N0cyAoYW5kICJub3JtYWwiIG5hdGl2ZSBidWlsZHMpCisrICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorKyAgICA7OworK2VzYWMKKysKKytmaQorKworK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY2OyB9CisrCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0Li4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtsdF9jdl90b190b29sX2ZpbGVfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgI2Fzc3VtZSBvcmRpbmFyeSBjcm9zcyB0b29scywgb3IgbmF0aXZlIGJ1aWxkLgorK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorK2Nhc2UgJGhvc3QgaW4KKysgICotKi1taW5ndyogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKytlc2FjCisrCisrZmkKKysKKyt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNjsgfQorKworKworKworKworKworIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcyIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcy4uLiAiID4mNjsgfQorIGlmIHRlc3QgIiR7bHRfY3ZfbGRfcmVsb2FkX2ZsYWcrc2V0fSIgPSBzZXQ7IHRoZW4gOgorQEAgLTY0NTEsNiArNjUzMSwxMSBAQCBjYXNlICRyZWxvYWRfZmxhZyBpbgorIGVzYWMKKyByZWxvYWRfY21kcz0nJExEJHJlbG9hZF9mbGFnIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCisgY2FzZSAkaG9zdF9vcyBpbgorKyAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorKyAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KKysgICAgICByZWxvYWRfY21kcz1mYWxzZQorKyAgICBmaQorKyAgICA7OworICAgZGFyd2luKikKKyAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAke3dsfS1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCitAQCAtNjYxOSw3ICs2NzA0LDggQEAgbWluZ3cqIHwgcHczMiopCisgICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIF54ODYgYXJjaGl2ZSBpbXBvcnR8Xng4NiBETEwnCisgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJworICAgZWxzZQorLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCBwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpPycKKysgICAgIyBLZWVwIHRoaXMgcGF0dGVybiBpbiBzeW5jIHdpdGggdGhlIG9uZSBpbiBmdW5jX3dpbjMyX2xpYmlkLgorKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCAocGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT98cGUtYXJtLXdpbmNlfHBlLXg4Ni02NCknCisgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckT0JKRFVNUCAtZicKKyAgIGZpCisgICA7OworQEAgLTY3NzMsNiArNjg1OSwyMSBAQCBlc2FjCisgZmkKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjUKKyAkYXNfZWNobyAiJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjY7IH0KKysKKytmaWxlX21hZ2ljX2dsb2I9Cisrd2FudF9ub2Nhc2VnbG9iPW5vCisraWYgdGVzdCAiJGJ1aWxkIiA9ICIkaG9zdCI7IHRoZW4KKysgIGNhc2UgJGhvc3Rfb3MgaW4KKysgIG1pbmd3KiB8IHB3MzIqKQorKyAgICBpZiAoIHNob3B0IHwgZ3JlcCBub2Nhc2VnbG9iICkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisrICAgICAgd2FudF9ub2Nhc2VnbG9iPXllcworKyAgICBlbHNlCisrICAgICAgZmlsZV9tYWdpY19nbG9iPWBlY2hvIGFBYkJjQ2REZUVmRmdHaEhpSWpKa0tsTG1Nbk5vT3BQcVFyUnNTdFR1VXZWd1d4WHlZelogfCAkU0VEIC1lICJzL1woLi5cKS9zXC9bXDFdXC9bXDFdXC9nOy9nImAKKysgICAgZmkKKysgICAgOzsKKysgIGVzYWMKKytmaQorKworIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAorIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAorIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgorQEAgLTY3ODgsOSArNjg4OSwxNjIgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCisgCisgCisgCisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2w7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHthY19jdl9wcm9nX0RMTFRPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfRExMVE9PTD0iJERMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19ETExUT09MPSIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK0RMTFRPT0w9JGFjX2N2X3Byb2dfRExMVE9PTAorK2lmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRETExUT09MIiA+JjUKKyskYXNfZWNobyAiJERMTFRPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKworK2ZpCisraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfRExMVE9PTCI7IHRoZW4KKysgIGFjX2N0X0RMTFRPT0w9JERMTFRPT0wKKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15IGRsbHRvb2w7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iJGFjX2N0X0RMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSJkbGx0b29sIgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKythY19jdF9ETExUT09MPSRhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wKKytpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfRExMVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRhY19jdF9ETExUT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysgIGlmIHRlc3QgIngkYWNfY3RfRExMVE9PTCIgPSB4OyB0aGVuCisrICAgIERMTFRPT0w9ImZhbHNlIgorKyAgZWxzZQorKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCisreWVzOikKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorK2FjX3Rvb2xfd2FybmVkPXllcyA7OworK2VzYWMKKysgICAgRExMVE9PTD0kYWNfY3RfRExMVE9PTAorKyAgZmkKKytlbHNlCisrICBETExUT09MPSIkYWNfY3ZfcHJvZ19ETExUT09MIgorK2ZpCisrCisrdGVzdCAteiAiJERMTFRPT0wiICYmIERMTFRPT0w9ZGxsdG9vbAorKworKworKworKworKworKworKworKworKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcyIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcy4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0ndW5rbm93bicKKysKKytjYXNlICRob3N0X29zIGluCisrY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorKyAgIyB0d28gZGlmZmVyZW50IHNoZWxsIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGx0bWFpbi5zaAorKyAgIyBkZWNpZGUgd2hpY2ggdG8gdXNlIGJhc2VkIG9uIGNhcGFiaWxpdGllcyBvZiAkRExMVE9PTAorKyAgY2FzZSBgJERMTFRPT0wgLS1oZWxwIDI+JjFgIGluCisrICAqLS1pZGVudGlmeS1zdHJpY3QqKQorKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIKKysgICAgOzsKKysgICopCisrICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjaworKyAgICA7OworKyAgZXNhYworKyAgOzsKKysqKQorKyAgIyBmYWxsYmFjazogYXNzdW1lIGxpbmtsaWIgSVMgc2hhcmVkbGliCisrICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0iJEVDSE8iCisrICA7OworK2VzYWMKKysKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNQorKyRhc19lY2hvICIkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNjsgfQorK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAorK3Rlc3QgLXogIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgJiYgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JEVDSE8KKysKKysKKysKKysKKysKKysKKysKKyBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCistICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9YXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWFyOyBhY193b3JkPSQyCisrICBmb3IgYWNfcHJvZyBpbiBhcgorKyAgZG8KKysgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorIGlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19BUitzZXR9IiA9IHNldDsgdGhlbiA6CitAQCAtNjgwNiw3ICs3MDYwLDcgQEAgZG8KKyAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorLSAgICBhY19jdl9wcm9nX0FSPSIke2FjX3Rvb2xfcHJlZml4fWFyIgorKyAgICBhY19jdl9wcm9nX0FSPSIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIKKyAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgIGJyZWFrIDIKKyAgIGZpCitAQCAtNjgyNiwxMSArNzA4MCwxNSBAQCAkYXNfZWNobyAibm8iID4mNjsgfQorIGZpCisgCisgCisrICAgIHRlc3QgLW4gIiRBUiIgJiYgYnJlYWsKKysgIGRvbmUKKyBmaQorLWlmIHRlc3QgLXogIiRhY19jdl9wcm9nX0FSIjsgdGhlbgorK2lmIHRlc3QgLXogIiRBUiI7IHRoZW4KKyAgIGFjX2N0X0FSPSRBUgorLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJhciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCistc2V0IGR1bW15IGFyOyBhY193b3JkPSQyCisrICBmb3IgYWNfcHJvZyBpbiBhcgorK2RvCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisgaWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0FSK3NldH0iID0gc2V0OyB0aGVuIDoKK0BAIC02ODQ2LDcgKzcxMDQsNyBAQCBkbworICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCistICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9ImFyIgorKyAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSIkYWNfcHJvZyIKKyAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgIGJyZWFrIDIKKyAgIGZpCitAQCAtNjg2NSw2ICs3MTIzLDEwIEBAIGVsc2UKKyAkYXNfZWNobyAibm8iID4mNjsgfQorIGZpCisgCisrCisrICB0ZXN0IC1uICIkYWNfY3RfQVIiICYmIGJyZWFrCisrZG9uZQorKworICAgaWYgdGVzdCAieCRhY19jdF9BUiIgPSB4OyB0aGVuCisgICAgIEFSPSJmYWxzZSIKKyAgIGVsc2UKK0BAIC02ODc2LDEyICs3MTM4LDEyIEBAIGFjX3Rvb2xfd2FybmVkPXllcyA7OworIGVzYWMKKyAgICAgQVI9JGFjX2N0X0FSCisgICBmaQorLWVsc2UKKy0gIEFSPSIkYWNfY3ZfcHJvZ19BUiIKKyBmaQorIAorLXRlc3QgLXogIiRBUiIgJiYgQVI9YXIKKy10ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQorKzogJHtBUj1hcn0KKys6ICR7QVJfRkxBR1M9Y3J1fQorKworKworIAorIAorIAorQEAgLTY4OTEsNiArNzE1Myw2MiBAQCB0ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQorIAorIAorIAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0Li4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtsdF9jdl9hcl9hdF9maWxlK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfYXJfYXRfZmlsZT1ubworKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysvKiBlbmQgY29uZmRlZnMuaC4gICovCisrCisraW50CisrbWFpbiAoKQorK3sKKysKKysgIDsKKysgIHJldHVybiAwOworK30KKytfQUNFT0YKKytpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisrICBlY2hvIGNvbmZ0ZXN0LiRhY19vYmpleHQgPiBjb25mdGVzdC5sc3QKKysgICAgICBsdF9hcl90cnk9JyRBUiAkQVJfRkxBR1MgbGliY29uZnRlc3QuYSBAY29uZnRlc3QubHN0ID4mNScKKysgICAgICB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQorKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQorKyAgYWNfc3RhdHVzPSQ/CisrICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKysgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KKysgICAgICBpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtZXEgMDsgdGhlbgorKwkjIEVuc3VyZSB0aGUgYXJjaGl2ZXIgZmFpbHMgdXBvbiBib2d1cyBmaWxlIG5hbWVzLgorKwlybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGxpYmNvbmZ0ZXN0LmEKKysJeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKKysgIChldmFsICRsdF9hcl90cnkpIDI+JjUKKysgIGFjX3N0YXR1cz0kPworKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisrICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9CisrCWlmIHRlc3QgIiRhY19zdGF0dXMiIC1uZSAwOyB0aGVuCisrICAgICAgICAgIGx0X2N2X2FyX2F0X2ZpbGU9QAorKyAgICAgICAgZmkKKysgICAgICBmaQorKyAgICAgIHJtIC1mIGNvbmZ0ZXN0LiogbGliY29uZnRlc3QuYQorKworK2ZpCisrcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisrCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2FyX2F0X2ZpbGUiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfYXJfYXRfZmlsZSIgPiY2OyB9CisrCisraWYgdGVzdCAieCRsdF9jdl9hcl9hdF9maWxlIiA9IHhubzsgdGhlbgorKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPQorK2Vsc2UKKysgIGFyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfY3ZfYXJfYXRfZmlsZQorK2ZpCisrCisrCisrCisrCisrCisgCisgCisgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorQEAgLTcyMjcsOCArNzU0NSw4IEBAIGVzYWMKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgorIAorICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcworLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCistbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisrbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKytsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKyAKKyAjIEhhbmRsZSBDUkxGIGluIG1pbmd3IHRvb2wgY2hhaW4KKyBvcHRfY3I9CitAQCAtNzI2NCw2ICs3NTgyLDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbworICAgZWxzZQorICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qWwkgXVwoJHN5bWNvZGUkc3ltY29kZSpcKVsJIF1bCSBdKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgorICAgZmkKKysgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9IiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIHwgc2VkICcvIF9fZ251X2x0by9kJyIKKyAKKyAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgorICAgcGlwZV93b3Jrcz1ubworQEAgLTczMDUsNiArNzYyNCwxOCBAQCBfTFRfRU9GCisgICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKyAJaWYgJEdSRVAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCisgCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKKysvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KKysjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQorKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQorKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVAorKyNlbGlmIGRlZmluZWQoX19vc2ZfXykKKysvKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhLiAgKi8KKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVAorKyNlbHNlCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QgY29uc3QKKysjZW5kaWYKKysKKyAjaWZkZWYgX19jcGx1c3BsdXMKKyBleHRlcm4gIkMiIHsKKyAjZW5kaWYKK0BAIC03MzE2LDcgKzc2NDcsNyBAQCBfTFRfRU9GCisgCSAgY2F0IDw8X0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0CisgCisgLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLworLWNvbnN0IHN0cnVjdCB7CisrTFRfRExTWU1fQ09OU1Qgc3RydWN0IHsKKyAgIGNvbnN0IGNoYXIgKm5hbWU7CisgICB2b2lkICAgICAgICphZGRyZXNzOworIH0KK0BAIC03MzQyLDggKzc2NzMsOCBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgeworIF9MVF9FT0YKKyAJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgorIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dAorLQkgIGx0X3NhdmVfTElCUz0iJExJQlMiCistCSAgbHRfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisrCSAgbHRfZ2xvYnN5bV9zYXZlX0xJQlM9JExJQlMKKysJICBsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKKyAJICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgorIAkgIENGTEFHUz0iJENGTEFHUyRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIKKyAJICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfbGlua1wiIjsgfSA+JjUKK0BAIC03MzUzLDggKzc2ODQsOCBAQCBfTFRfRU9GCisgICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KKyAJICAgIHBpcGVfd29ya3M9eWVzCisgCSAgZmkKKy0JICBMSUJTPSIkbHRfc2F2ZV9MSUJTIgorLQkgIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgorKwkgIExJQlM9JGx0X2dsb2JzeW1fc2F2ZV9MSUJTCisrCSAgQ0ZMQUdTPSRsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTCisgCWVsc2UKKyAJICBlY2hvICJjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJG5saXN0IiA+JjUKKyAJZmkKK0BAIC03MzkxLDYgKzc3MjIsMTkgQEAgZWxzZQorICRhc19lY2hvICJvayIgPiY2OyB9CisgZmkKKyAKKysjIFJlc3BvbnNlIGZpbGUgc3VwcG9ydC4KKytpZiB0ZXN0ICIkbHRfY3Zfbm1faW50ZXJmYWNlIiA9ICJNUyBkdW1wYmluIjsgdGhlbgorKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCisrZWxpZiAkTk0gLS1oZWxwIDI+L2Rldi9udWxsIHwgZ3JlcCAnW0BdRklMRScgPi9kZXYvbnVsbDsgdGhlbgorKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCisrZmkKKysKKysKKysKKysKKysKKysKKysKKyAKKyAKKyAKK0BAIC03NDA0LDYgKzc3NDgsNDIgQEAgZmkKKyAKKyAKKyAKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzeXNyb290IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3Igc3lzcm9vdC4uLiAiID4mNjsgfQorKworKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbGlidG9vbC1zeXNyb290IHdhcyBnaXZlbi4KKytpZiB0ZXN0ICIke3dpdGhfbGlidG9vbF9zeXNyb290K3NldH0iID0gc2V0OyB0aGVuIDoKKysgIHdpdGh2YWw9JHdpdGhfbGlidG9vbF9zeXNyb290OworK2Vsc2UKKysgIHdpdGhfbGlidG9vbF9zeXNyb290PW5vCisrZmkKKysKKysKKytsdF9zeXNyb290PQorK2Nhc2UgJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0gaW4gIygKKysgeWVzKQorKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisrICAgICBsdF9zeXNyb290PWAkQ0MgLS1wcmludC1zeXNyb290IDI+L2Rldi9udWxsYAorKyAgIGZpCisrICAgOzsgIygKKysgLyopCisrICAgbHRfc3lzcm9vdD1gZWNobyAiJHdpdGhfbGlidG9vbF9zeXNyb290IiB8IHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCisrICAgOzsgIygKKysgbm98JycpCisrICAgOzsgIygKKysgKikKKysgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNQorKyRhc19lY2hvICIke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY2OyB9CisrICAgYXNfZm5fZXJyb3IgIlRoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC4iICIkTElORU5PIiA1CisrICAgOzsKKytlc2FjCisrCisrIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke2x0X3N5c3Jvb3Q6LW5vfSIgPiY1CisrJGFzX2VjaG8gIiR7bHRfc3lzcm9vdDotbm99IiA+JjY7IH0KKyAKKyAKKyAKK0BAIC03NjE4LDYgKzc5OTgsMTIzIEBAIGVzYWMKKyAKKyBuZWVkX2xvY2tzPSIkZW5hYmxlX2xpYnRvb2xfbG9jayIKKyAKKytpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9bXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW10OyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiRNQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICAgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJHthY190b29sX3ByZWZpeH1tdCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MCisraWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE1BTklGRVNUX1RPT0wiID4mNQorKyRhc19lY2hvICIkTUFOSUZFU1RfVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrCisrZmkKKytpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgYWNfY3RfTUFOSUZFU1RfVE9PTD0kTUFOSUZFU1RfVE9PTAorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJtdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15IG10OyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9IiRhY19jdF9NQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0ibXQiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK2FjX2N0X01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTAorK2lmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjUKKyskYXNfZWNobyAiJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKyAgaWYgdGVzdCAieCRhY19jdF9NQU5JRkVTVF9UT09MIiA9IHg7IHRoZW4KKysgICAgTUFOSUZFU1RfVE9PTD0iOiIKKysgIGVsc2UKKysgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgorK3llczopCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KKythY190b29sX3dhcm5lZD15ZXMgOzsKKytlc2FjCisrICAgIE1BTklGRVNUX1RPT0w9JGFjX2N0X01BTklGRVNUX1RPT0wKKysgIGZpCisrZWxzZQorKyAgTUFOSUZFU1RfVE9PTD0iJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCIKKytmaQorKworK3Rlc3QgLXogIiRNQU5JRkVTVF9UT09MIiAmJiBNQU5JRkVTVF9UT09MPW10CisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3ZfcGF0aF9tYWluZmVzdF90b29sK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPW5vCisrICBlY2hvICIkYXNfbWU6JExJTkVOTzogJE1BTklGRVNUX1RPT0wgJy0/JyIgPiY1CisrICAkTUFOSUZFU1RfVE9PTCAnLT8nIDI+Y29uZnRlc3QuZXJyID4gY29uZnRlc3Qub3V0CisrICBjYXQgY29uZnRlc3QuZXJyID4mNQorKyAgaWYgJEdSRVAgJ01hbmlmZXN0IFRvb2wnIGNvbmZ0ZXN0Lm91dCA+IC9kZXYvbnVsbDsgdGhlbgorKyAgICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9eWVzCisrICBmaQorKyAgcm0gLWYgY29uZnRlc3QqCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNjsgfQorK2lmIHRlc3QgIngkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiAhPSB4eWVzOyB0aGVuCisrICBNQU5JRkVTVF9UT09MPToKKytmaQorKworKworKworKworKworIAorICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICByaGFwc29keSogfCBkYXJ3aW4qKQorQEAgLTgxODEsNiArODY3OCw4IEBAIF9MVF9FT0YKKyAgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JjUKKyAgICAgICBlY2hvICIkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyIgPiY1CisgICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mNQorKyAgICAgIGVjaG8gIiRSQU5MSUIgbGliY29uZnRlc3QuYSIgPiY1CisrICAgICAgJFJBTkxJQiBsaWJjb25mdGVzdC5hIDI+JjUKKyAgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKKyBpbnQgbWFpbigpIHsgcmV0dXJuIDA7fQorIF9MVF9FT0YKK0BAIC04MjQ5LDYgKzg3NDgsMTYgQEAgZG9uZQorIAorIAorIAorK2Z1bmNfc3RyaXBuYW1lX2NuZiAoKQorK3sKKysgIGNhc2UgJHsyfSBpbgorKyAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKKysgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKKysgIGVzYWMKKyt9ICMgZnVuY19zdHJpcG5hbWVfY25mCisrCisrCisrCisgCisgCisgIyBTZXQgb3B0aW9ucworQEAgLTgzNzcsNyArODg4Niw4IEBAIGZpCisgTElCVE9PTF9ERVBTPSIkbHRtYWluIgorIAorICMgQWx3YXlzIHVzZSBvdXIgb3duIGxpYnRvb2wuCistTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpL2xpYnRvb2wnCisrTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpJworK0xJQlRPT0w9IiRMSUJUT09MLyR7aG9zdF9hbGlhc30tbGlidG9vbCIKKyAKKyAKKyAKK0BAIC04NDY2LDcgKzg5NzYsNyBAQCBhaXgzKikKKyBlc2FjCisgCisgIyBHbG9iYWwgdmFyaWFibGVzOgorLW9maWxlPWxpYnRvb2wKKytvZmlsZT0ke2hvc3RfYWxpYXN9LWxpYnRvb2wKKyBjYW5fYnVpbGRfc2hhcmVkPXllcworIAorICMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAorQEAgLTg3NjQsOCArOTI3NCw2IEBAIGZpCisgbHRfcHJvZ19jb21waWxlcl9waWM9CisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9CisgCisteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1CistJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAKKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgIGx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCitAQCAtODkzMSw2ICs5NDM5LDEyIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgCWx0X3Byb2dfY29tcGlsZXJfcGljPSctLXNoYXJlZCcKKyAJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy0tc3RhdGljJworIAk7OworKyAgICAgIG5hZ2ZvciopCisrCSMgTkFHIEZvcnRyYW4gY29tcGlsZXIKKysJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLC1XbCwsJworKwlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLVBJQycKKysJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJworKwk7OworICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKKyAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCisgCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCitAQCAtODk5Myw3ICs5NTA3LDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCisgICAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJworICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCistICAgICAgZjc3KiB8IGY5MCogfCBmOTUqKQorKyAgICAgIGY3NyogfCBmOTAqIHwgZjk1KiB8IHN1bmY3NyogfCBzdW5mOTAqIHwgc3VuZjk1KikKKyAJbHRfcHJvZ19jb21waWxlcl93bD0nLVFvcHRpb24gbGQgJzs7CisgICAgICAgKikKKyAJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCc7OworQEAgLTkwNTAsMTMgKzk1NjQsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgorICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0iJGx0X3Byb2dfY29tcGlsZXJfcGljIC1EUElDIgorICAgICA7OworIGVzYWMKKy17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKKy0kYXNfZWNobyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KKy0KKy0KKy0KKy0KKyAKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWMrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfcHJvZ19jb21waWxlcl9waWMKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQorK2x0X3Byb2dfY29tcGlsZXJfcGljPSRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYworIAorICMKKyAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCitAQCAtOTExNyw2ICs5NjM1LDExIEBAIGZpCisgCisgCisgCisrCisrCisrCisrCisrCisgIworICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KKyAjCitAQCAtOTQ2Nyw3ICs5OTkwLDggQEAgX0xUX0VPRgorICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisgICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPW5vCisgICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKy0gICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS87cy9eLipbIF1fX25tX19cKFteIF0qXClbIF1bXiBdKi9cMSBEQVRBLzsvXklbIF0vZDsvXltBSVRXXVsgXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgICAgIGV4Y2x1ZGVfZXhwc3ltcz0nW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJworIAorICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCitAQCAtOTU2NiwxMiArMTAwOTAsMTIgQEAgX0xUX0VPRgorIAkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSctLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgLS1uby13aG9sZS1hcmNoaXZlJworIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9CisgCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZD0nLXJwYXRoICRsaWJkaXInCistCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCisrCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJworIAkgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KKyAJICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisgCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAJICAgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CistCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworKwkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisgCSAgZmkKKyAJICA7OworIAllc2FjCitAQCAtOTU4NSw4ICsxMDEwOSw4IEBAIF9MVF9FT0YKKyAJYXJjaGl2ZV9jbWRzPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJworIAl3bGFyYz0KKyAgICAgICBlbHNlCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGZpCisgICAgICAgOzsKKyAKK0BAIC05NjA0LDggKzEwMTI4LDggQEAgX0xUX0VPRgorIAorIF9MVF9FT0YKKyAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZWxzZQorIAlsZF9zaGxpYnM9bm8KKyAgICAgICBmaQorQEAgLTk2NTEsOCArMTAxNzUsOCBAQCBfTFRfRU9GCisgCisgICAgICopCisgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBlbHNlCisgCWxkX3NobGlicz1ubworICAgICAgIGZpCitAQCAtOTc4Miw3ICsxMDMwNiwxMyBAQCBfTFRfRU9GCisgCWFsbG93X3VuZGVmaW5lZF9mbGFnPSctYmVyb2snCisgICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KKyAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KKy0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysgICAgICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAorK2Vsc2UKKysgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGhfK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAKKyBpbnQKK0BAIC05Nzk1LDIyICsxMDMyNSwyOSBAQCBtYWluICgpCisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorIAorLWx0X2FpeF9saWJwYXRoX3NlZD0nCistICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKy0JL14wLyB7CistCSAgICBzL14wICAqXCguKlwpJC9cMS8KKy0JICAgIHAKKy0JfQorLSAgICB9JworLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCistICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy1maQorKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKKysgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisrCSAgL14wLyB7CisrCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCisrCSAgICAgIHAKKysJICB9CisrICAgICAgfScKKysgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgIGZpCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKKysgIGZpCisrCisrZmkKKysKKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KKytmaQorIAorICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCitAQCAtOTgyMiw3ICsxMDM1OSwxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAJZWxzZQorIAkgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCisgCSAjIGVtcHR5IGV4ZWN1dGFibGUuCistCSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrCSBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKKytlbHNlCisrICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoXytzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgCisgaW50CitAQCAtOTgzNSwyMiArMTAzNzgsMjkgQEAgbWFpbiAoKQorIF9BQ0VPRgorIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAKKy1sdF9haXhfbGlicGF0aF9zZWQ9JworLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CistCS9eMC8geworLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCistCSAgICBwCistCX0KKy0gICAgfScKKy1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgorLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistZmkKKysgIGx0X2FpeF9saWJwYXRoX3NlZD0nCisrICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworKwkgIC9eMC8geworKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLworKwkgICAgICBwCisrCSAgfQorKyAgICAgIH0nCisrICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICBmaQorIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCisrICBmaQorKworK2ZpCisrCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCisrZmkKKyAKKyAJIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgCSAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKK0BAIC05ODk0LDIxICsxMDQ0NCw2NCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAgICAgICAjIFdoZW4gbm90IHVzaW5nIGdjYywgd2UgY3VycmVudGx5IGFzc3VtZSB0aGF0IHdlIGFyZSB1c2luZworICAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCisgICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcworLSAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCistICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKy0gICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCistICAgICAgbGliZXh0PWxpYgorLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorLSAgICAgIHNocmV4dF9jbWRzPSIuZGxsIgorLSAgICAgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKy0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JworLSAgICAgICMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCistICAgICAgb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKKy0gICAgICAjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgorLSAgICAgIG9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKKy0gICAgICBmaXhfc3JjZmlsZV9wYXRoPSdgY3lncGF0aCAtdyAiJHNyY2ZpbGUiYCcKKy0gICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworKyAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCisrICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKysgICAgICBjbCopCisrCSMgTmF0aXZlIE1TVkMKKysJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKysJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKysJYWx3YXlzX2V4cG9ydF9zeW1ib2xzPXllcworKwlmaWxlX2xpc3Rfc3BlYz0nQCcKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKysJbGliZXh0PWxpYgorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKysJc2hyZXh0X2NtZHM9Ii5kbGwiCisrCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKysJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKysJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisrCSAgZWxzZQorKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICBmaX4KKysJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+CisrCSAgbGlua25hbWVzPScKKysJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgorKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgKT0ndHJ1ZScKKysJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysJZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEsREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKwkjIERvbid0IHVzZSByYW5saWIKKysJb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDY0NCAkb2xkbGliJworKwlwb3N0bGlua19jbWRzPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+CisrCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KKysJICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCisrCSAgICAqLmV4ZXwqLkVYRSkgOzsKKysJICAgICopCisrCSAgICAgIGx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKKysJICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKKysJICAgICAgOzsKKysJICBlc2FjfgorKwkgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCisrCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOworKwkgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7CisrCSAgZmknCisrCTs7CisrICAgICAgKikKKysJIyBBc3N1bWUgTVNWQyB3cmFwcGVyCisrCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCisrCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisrCWxpYmV4dD1saWIKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisrCXNocmV4dF9jbWRzPSIuZGxsIgorKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisrCWFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCisrCSMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCisrCW9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCisrCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCisrCW9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKKysJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysJOzsKKysgICAgICBlc2FjCisgICAgICAgOzsKKyAKKyAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKK0BAIC05OTY5LDcgKzEwNTYyLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCisgICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KKyAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQorLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJworICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKKyAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCitAQCAtOTk3Nyw3ICsxMDU3MCw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICBocHV4OSopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgICBmaQorQEAgLTk5OTMsNyArMTA1ODYsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgaHB1eDEwKikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJworICAgICAgIGZpCitAQCAtMTAwMTcsMTAgKzEwNjEwLDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJaWE2NCopCistCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAkqKQorLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCWVzYWMKKyAgICAgICBlbHNlCitAQCAtMTAwOTksMjMgKzEwNjkyLDM2IEBAIGZpCisgCisgICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCSMgVHJ5IHRvIHVzZSB0aGUgLWV4cG9ydGVkX3N5bWJvbCBsZCBvcHRpb24sIGlmIGl0IGRvZXMgbm90CisgCSMgd29yaywgYXNzdW1lIHRoYXQgLWV4cG9ydHNfZmlsZSBkb2VzIG5vdCB3b3JrIGVpdGhlciBhbmQKKyAJIyBpbXBsaWNpdGx5IGV4cG9ydCBhbGwgc3ltYm9scy4KKy0gICAgICAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCistICAgICAgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCistICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCisrCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorKwkgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCisrCSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCistaW50IGZvbyh2b2lkKSB7fQorK2ludCBmb28gKHZvaWQpIHsgcmV0dXJuIDA7IH0KKyBfQUNFT0YKKyBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CistICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCistCisrICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD15ZXMKKytlbHNlCisrICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD1ubworIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorKyAgICAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNjsgfQorKwlpZiB0ZXN0ICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID0geWVzOyB0aGVuCisrICAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWZpCisgICAgICAgZWxzZQorIAlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKK0BAIC0xMDIwMCw3ICsxMDgwNiw3IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKyAgICAgICBlbHNlCisgCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJworQEAgLTEwMjE5LDkgKzEwODI1LDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyAteiBkZWZzJworICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgCXdsYXJjPScke3dsfScKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KKy0JICAkQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworKwkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworICAgICAgIGVsc2UKKyAJY2FzZSBgJENDIC1WIDI+JjFgIGluCisgCSoiQ29tcGlsZXJzIDUuMCIqKQorQEAgLTEwNzk3LDggKzExNDAzLDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgbmVlZF92ZXJzaW9uPW5vCisgICBuZWVkX2xpYl9wcmVmaXg9bm8KKyAKKy0gIGNhc2UgJEdDQywkaG9zdF9vcyBpbgorLSAgeWVzLGN5Z3dpbiogfCB5ZXMsbWluZ3cqIHwgeWVzLHB3MzIqIHwgeWVzLGNlZ2NjKikKKysgIGNhc2UgJEdDQywkY2NfYmFzZW5hbWUgaW4KKysgIHllcywqKQorKyAgICAjIGdjYworICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJworICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCisgICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgorQEAgLTEwODMxLDEzICsxMTQzOCw3MSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworICAgICAgIDs7CisgICAgIGVzYWMKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKysgICAgOzsKKysKKysgICosY2wqKQorKyAgICAjIE5hdGl2ZSBNU1ZDCisrICAgIGxpYm5hbWVfc3BlYz0nJG5hbWUnCisrICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKKysgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9LmRsbC5saWInCisrCisrICAgIGNhc2UgJGJ1aWxkX29zIGluCisrICAgIG1pbmd3KikKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9CisrICAgICAgbHRfc2F2ZV9pZnM9JElGUworKyAgICAgIElGUz0nOycKKysgICAgICBmb3IgbHRfcGF0aCBpbiAkTElCCisrICAgICAgZG8KKysgICAgICAgIElGUz0kbHRfc2F2ZV9pZnMKKysgICAgICAgICMgTGV0IERPUyB2YXJpYWJsZSBleHBhbnNpb24gcHJpbnQgdGhlIHNob3J0IDguMyBzdHlsZSBmaWxlIG5hbWUuCisrICAgICAgICBsdF9wYXRoPWBjZCAiJGx0X3BhdGgiIDI+L2Rldi9udWxsICYmIGNtZCAvL0MgImZvciAlaSBpbiAoIi4iKSBkbyBAZWNobyAlfnNpImAKKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAkbHRfcGF0aCIKKysgICAgICBkb25lCisrICAgICAgSUZTPSRsdF9zYXZlX2lmcworKyAgICAgICMgQ29udmVydCB0byBNU1lTIHN0eWxlLgorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgc2VkIC1lICdzfFxcXFx8L3xnJyAtZSAnc3wgXFwoW2EtekEtWl1cXCk6fCAvXFwxfGcnIC1lICdzfF4gfHwnYAorKyAgICAgIDs7CisrICAgIGN5Z3dpbiopCisrICAgICAgIyBDb252ZXJ0IHRvIHVuaXggZm9ybSwgdGhlbiB0byBkb3MgZm9ybSwgdGhlbiBiYWNrIHRvIHVuaXggZm9ybQorKyAgICAgICMgYnV0IHRoaXMgdGltZSBkb3Mgc3R5bGUgKG5vIHNwYWNlcyEpIHNvIHRoYXQgdGhlIHVuaXggZm9ybSBsb29rcworKyAgICAgICMgbGlrZSAvY3lnZHJpdmUvYy9QUk9HUkF+MTovY3lnZHIuLi4KKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJExJQiJgCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLWRvcyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgMj4vZGV2L251bGxgCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKysgICAgICA7OworKyAgICAqKQorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJExJQiIKKysgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkR1JFUCAnO1tjLXpDLVpdOi8nID4vZGV2L251bGw7IHRoZW4KKysgICAgICAgICMgSXQgaXMgbW9zdCBwcm9iYWJseSBhIFdpbmRvd3MgZm9ybWF0IFBBVEguCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAorKyAgICAgIGVsc2UKKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKysgICAgICBmaQorKyAgICAgICMgRklYTUU6IGZpbmQgdGhlIHNob3J0IG5hbWUgb3IgdGhlIHBhdGggY29tcG9uZW50cywgYXMgc3BhY2VzIGFyZQorKyAgICAgICMgY29tbW9uLiAoZS5nLiAiUHJvZ3JhbSBGaWxlcyIgLT4gIlBST0dSQX4xIikKKysgICAgICA7OworKyAgICBlc2FjCisrCisrICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKysgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CisrICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJHtiYXNlX2ZpbGV9J1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKysgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+CisrICAgICAgdGVzdCAtZCBcJGRsZGlyIHx8IG1rZGlyIC1wIFwkZGxkaXJ+CisrICAgICAgJGluc3RhbGxfcHJvZyAkZGlyLyRkbG5hbWUgXCRkbGRpci8kZGxuYW1lJworKyAgICBwb3N0dW5pbnN0YWxsX2NtZHM9J2RsZGxsPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZmlsZTsgZWNobyBcJGRsbmFtZSdcJydgfgorKyAgICAgIGRscGF0aD0kZGlyL1wkZGxkbGx+CisrICAgICAgICRSTSBcJGRscGF0aCcKKysgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGluay5leGUnCisgICAgIDs7CisgCisgICAqKQorKyAgICAjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKKyAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fSAkbGlibmFtZS5saWInCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisgICAgIDs7CisgICBlc2FjCistICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCisgICBzaGxpYnBhdGhfdmFyPVBBVEgKKyAgIDs7CitAQCAtMTA5MjksNyArMTE1OTQsNyBAQCBoYWlrdSopCisgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKKyAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKy0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9iZW9zL3N5c3RlbS9saWInCisrICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKKyAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKKyAgIDs7CisgCitAQCAtMTE3NjksMTAgKzEyNDM0LDEwIEBAIGVsc2UKKyAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCisgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLworICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQorLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisraW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworICNlbmRpZgorIAorLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQorK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQorIGludCBtYWluICgpCisgeworICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7CitAQCAtMTE4NzUsMTAgKzEyNTQwLDEwIEBAIGVsc2UKKyAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCisgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLworICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQorLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisraW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworICNlbmRpZgorIAorLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQorK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQorIGludCBtYWluICgpCisgeworICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7CitAQCAtMTIyNzAsNiArMTI5MzUsNyBAQCAkUk0gLXIgY29uZnRlc3QqCisgCisgICAjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgorICAgbHRfc2F2ZV9DQz0kQ0MKKysgIGx0X3NhdmVfQ0ZMQUdTPSRDRkxBR1MKKyAgIGx0X3NhdmVfTEQ9JExECisgICBsdF9zYXZlX0dDQz0kR0NDCisgICBHQ0M9JEdYWAorQEAgLTEyMjg3LDYgKzEyOTUzLDcgQEAgJFJNIC1yIGNvbmZ0ZXN0KgorICAgZmkKKyAgIHRlc3QgLXogIiR7TERDWFgrc2V0fSIgfHwgTEQ9JExEQ1hYCisgICBDQz0ke0NYWC0iYysrIn0KKysgIENGTEFHUz0kQ1hYRkxBR1MKKyAgIGNvbXBpbGVyPSRDQworICAgY29tcGlsZXJfQ1hYPSRDQworICAgZm9yIGNjX3RlbXAgaW4gJGNvbXBpbGVyIiI7IGRvCitAQCAtMTI1NjksNyArMTMyMzYsMTMgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGNvbXBpbGVyIGxpbmtlciAoJExEKSBzdXBwb3J0cyBzaGFyZWQgbGlicmFyaWUKKyAgICAgICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWdfQ1hYPSctYmVyb2snCisgICAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbiBlbXB0eQorICAgICAgICAgICAjIGV4ZWN1dGFibGUuCistICAgICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysgICAgICAgICAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgorKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCisrZWxzZQorKyAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aF9fQ1hYK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAKKyBpbnQKK0BAIC0xMjU4MiwyMiArMTMyNTUsMjkgQEAgbWFpbiAoKQorIF9BQ0VPRgorIGlmIGFjX2ZuX2N4eF90cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorIAorLWx0X2FpeF9saWJwYXRoX3NlZD0nCistICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKy0JL14wLyB7CistCSAgICBzL14wICAqXCguKlwpJC9cMS8KKy0JICAgIHAKKy0JfQorLSAgICB9JworLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCistICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy1maQorKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKKysgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisrCSAgL14wLyB7CisrCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCisrCSAgICAgIHAKKysJICB9CisrICAgICAgfScKKysgIGx0X2N2X2FpeF9saWJwYXRoX19DWFg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWCI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgIGZpCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF9fQ1hYIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF9fQ1hYPSIvdXNyL2xpYjovbGliIgorKyAgZmkKKysKKytmaQorKworKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoX19DWFgKKytmaQorIAorICAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAKK0BAIC0xMjYxMCw3ICsxMzI5MCwxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAgICAgICAgICAgZWxzZQorIAkgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCisgCSAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCistCSAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrCSAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKKytlbHNlCisrICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoX19DWFgrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworIAorIGludAorQEAgLTEyNjIzLDIyICsxMzMwOSwyOSBAQCBtYWluICgpCisgX0FDRU9GCisgaWYgYWNfZm5fY3h4X3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgCistbHRfYWl4X2xpYnBhdGhfc2VkPScKKy0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworLQkvXjAvIHsKKy0JICAgIHMvXjAgICpcKC4qXCkkL1wxLworLQkgICAgcAorLQl9CistICAgIH0nCistYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KKy0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLWZpCisrICBsdF9haXhfbGlicGF0aF9zZWQ9JworKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKysJICAvXjAvIHsKKysJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KKysJICAgICAgcAorKwkgIH0KKysgICAgICB9JworKyAgbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF9fQ1hYIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF9fQ1hYPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgZmkKKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoX19DWFgiOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoX19DWFg9Ii91c3IvbGliOi9saWIiCisrICBmaQorKworK2ZpCisrCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWAorK2ZpCisgCisgCSAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAJICAgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCitAQCAtMTI2ODEsMjkgKzEzMzc0LDc1IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorICAgICAgICAgOzsKKyAKKyAgICAgICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCistICAgICAgICAjIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgQ1hYKSBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywKKy0gICAgICAgICMgYXMgdGhlcmUgaXMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCistICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nLUwkbGliZGlyJworLSAgICAgICAgZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjX0NYWD0nJHt3bH0tLWV4cG9ydC1hbGwtc3ltYm9scycKKy0gICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnX0NYWD11bnN1cHBvcnRlZAorLSAgICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzX0NYWD1ubworLSAgICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lc19DWFg9eWVzCistCistICAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCistICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKKy0gICAgICAgICAgIyBJZiB0aGUgZXhwb3J0LXN5bWJvbHMgZmlsZSBhbHJlYWR5IGlzIGEgLmRlZiBmaWxlICgxc3QgbGluZQorLSAgICAgICAgICAjIGlzIEVYUE9SVFMpLCB1c2UgaXQgYXMgaXM7IG90aGVyd2lzZSwgcHJlcGVuZC4uLgorLSAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKy0JICAgIGNwICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKy0gICAgICAgICAgZWxzZQorLQkgICAgZWNobyBFWFBPUlRTID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CistCSAgICBjYXQgJGV4cG9ydF9zeW1ib2xzID4+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworLSAgICAgICAgICBmaX4KKy0gICAgICAgICAgJENDIC1zaGFyZWQgLW5vc3RkbGliICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworLSAgICAgICAgZWxzZQorLSAgICAgICAgICBsZF9zaGxpYnNfQ1hYPW5vCistICAgICAgICBmaQorLSAgICAgICAgOzsKKysJY2FzZSAkR1hYLCRjY19iYXNlbmFtZSBpbgorKwksY2wqIHwgbm8sY2wqKQorKwkgICMgTmF0aXZlIE1TVkMKKysJICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCisrCSAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKysJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nICcKKysJICBhbGxvd191bmRlZmluZWRfZmxhZ19DWFg9dW5zdXBwb3J0ZWQKKysJICBhbHdheXNfZXhwb3J0X3N5bWJvbHNfQ1hYPXllcworKwkgIGZpbGVfbGlzdF9zcGVjX0NYWD0nQCcKKysJICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorKwkgIGxpYmV4dD1saWIKKysJICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKysJICBzaHJleHRfY21kcz0iLmRsbCIKKysJICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisrCSAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCisrCSAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCisrCSAgICAgICRTRUQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworKwkgICAgZWxzZQorKwkgICAgICAkU0VEIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICAgIGZpfgorKwkgICAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgorKwkgICAgbGlua25hbWVzPScKKysJICAjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCisrCSAgIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsIENYWCk9J3RydWUnCisrCSAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lc19DWFg9eWVzCisrCSAgIyBEb24ndCB1c2UgcmFubGliCisrCSAgb2xkX3Bvc3RpbnN0YWxsX2NtZHNfQ1hYPSdjaG1vZCA2NDQgJG9sZGxpYicKKysJICBwb3N0bGlua19jbWRzX0NYWD0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgorKwkgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KKysJICAgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KKysJICAgICAgKi5leGV8Ki5FWEUpIDs7CisrCSAgICAgICopCisrCQlsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCisrCQlsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgorKwkJOzsKKysJICAgIGVzYWN+CisrCSAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJGx0X291dHB1dGZpbGUifgorKwkgICAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KKysJICAgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKKysJICAgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7CisrCSAgICBmaScKKysJICA7OworKwkqKQorKwkgICMgZysrCisrCSAgIyBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsIENYWCkgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsCisrCSAgIyBhcyB0aGVyZSBpcyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKysJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nLUwkbGliZGlyJworKwkgIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY19DWFg9JyR7d2x9LS1leHBvcnQtYWxsLXN5bWJvbHMnCisrCSAgYWxsb3dfdW5kZWZpbmVkX2ZsYWdfQ1hYPXVuc3VwcG9ydGVkCisrCSAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzX0NYWD1ubworKwkgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXNfQ1hYPXllcworKworKwkgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KKysJICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKKysJICAgICMgSWYgdGhlIGV4cG9ydC1zeW1ib2xzIGZpbGUgYWxyZWFkeSBpcyBhIC5kZWYgZmlsZSAoMXN0IGxpbmUKKysJICAgICMgaXMgRVhQT1JUUyksIHVzZSBpdCBhcyBpczsgb3RoZXJ3aXNlLCBwcmVwZW5kLi4uCisrCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKysJICAgICAgY3AgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworKwkgICAgZWxzZQorKwkgICAgICBlY2hvIEVYUE9SVFMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKysJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyA+PiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKysJICAgIGZpfgorKwkgICAgJENDIC1zaGFyZWQgLW5vc3RkbGliICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworKwkgIGVsc2UKKysJICAgIGxkX3NobGlic19DWFg9bm8KKysJICBmaQorKwkgIDs7CisrCWVzYWMKKysJOzsKKyAgICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQorIAorIAorQEAgLTEyODA5LDcgKzEzNTQ4LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgKikKKyAgICAgICAgICAgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgorLSAgICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisrICAgICAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHBpY19mbGFnICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0CisgICAgICAgICAgICAgICBsZF9zaGxpYnNfQ1hYPW5vCitAQCAtMTI4ODAsMTAgKzEzNjE5LDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAkgICAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgICAgICAgICAgIDs7CisgCSAgICAgICAgICBpYTY0KikKKy0JICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworKwkgICAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworIAkgICAgICAgICAgICA7OworIAkgICAgICAgICAgKikKKy0JICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCisrCSAgICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKKyAJICAgICAgICAgICAgOzsKKyAJICAgICAgICBlc2FjCisgCSAgICAgIGZpCitAQCAtMTI5MjQsOSArMTM2NjMsOSBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAgICAgICAgICAgKikKKyAJICAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCisgCSAgICAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorLQkgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKysJICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAkgICAgICBlbHNlCistCSAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAtbyAkbGliJworKwkgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgIC1vICRsaWInCisgCSAgICAgIGZpCisgCSAgICBmaQorIAkgICAgbGlua19hbGxfZGVwbGlic19DWFg9eWVzCitAQCAtMTI5OTYsMjAgKzEzNzM1LDIwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAkgICAgICBwcmVsaW5rX2NtZHNfQ1hYPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgorIAkJcm0gLXJmICR0cGxkaXJ+CisgCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRvYmpzICRsaWJvYmpzICRjb21waWxlX2RlcGxpYnN+CistCQljb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgJE5MMlNQYCInCisrCQljb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGAiJworIAkgICAgICBvbGRfYXJjaGl2ZV9jbWRzX0NYWD0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KKyAJCXJtIC1yZiAkdHBsZGlyfgorIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkb2xkb2JqcyRvbGRfZGVwbGlic34KKy0JCSRBUiAkQVJfRkxBR1MgJG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGB+CisrCQkkQVIgJEFSX0ZMQUdTICRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYH4KKyAJCSRSQU5MSUIgJG9sZGxpYicKKyAJICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KKyAJCXJtIC1yZiAkdHBsZGlyfgorIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJGNvbnZlbmllbmNlICRwb3N0ZGVwX29iamVjdHN+CistCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAtbyAkbGliJworKwkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIC1vICRsaWInCisgCSAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgorIAkJcm0gLXJmICR0cGxkaXJ+CisgCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkY29udmVuaWVuY2UgJHBvc3RkZXBfb2JqZWN0c34KKy0JCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgCSAgICAgIDs7CisgCSAgICAqKSAjIFZlcnNpb24gNiBhbmQgYWJvdmUgdXNlIHdlYWsgc3ltYm9scworIAkgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgLW8gJGxpYicKK0BAIC0xMzIwNCw3ICsxMzk0Myw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAkgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliICR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAkJICA7OworIAkgICAgICAgICopCistCSAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKysJICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJCSAgOzsKKyAJICAgICAgZXNhYworIAorQEAgLTEzMjUwLDcgKzEzOTg5LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCisgICAgICAgc29sYXJpcyopCisgICAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorLSAgICAgICAgICBDQyopCisrICAgICAgICAgIENDKiB8IHN1bkNDKikKKyAJICAgICMgU3VuIEMrKyA0LjIsIDUueCBhbmQgQ2VudGVybGluZSBDKysKKyAgICAgICAgICAgICBhcmNoaXZlX2NtZHNfbmVlZF9sY19DWFg9eWVzCisgCSAgICBub191bmRlZmluZWRfZmxhZ19DWFg9JyAtemRlZnMnCitAQCAtMTMyOTEsOSArMTQwMzAsOSBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAJICAgIGlmIHRlc3QgIiRHWFgiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorIAkgICAgICBub191bmRlZmluZWRfZmxhZ19DWFg9JyAke3dsfS16ICR7d2x9ZGVmcycKKyAJICAgICAgaWYgJENDIC0tdmVyc2lvbiB8ICRHUkVQIC12ICdeMlwuNycgPiAvZGV2L251bGw7IHRoZW4KKy0JICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJExERkxBR1MgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWggJHdsJHNvbmFtZSAtbyAkbGliJworKwkgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJExERkxBR1MgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWggJHdsJHNvbmFtZSAtbyAkbGliJworIAkgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+CistCQkgICRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAke3dsfS1NICR3bCRsaWIuZXhwIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKysJCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAke3dsfS1NICR3bCRsaWIuZXhwIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKyAKKyAJICAgICAgICAjIENvbW1hbmRzIHRvIG1ha2UgY29tcGlsZXIgcHJvZHVjZSB2ZXJib3NlIG91dHB1dCB0aGF0IGxpc3RzCisgCSAgICAgICAgIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCitAQCAtMTM0MjgsNiArMTQxNjcsMTMgQEAgcHJpdmF0ZToKKyB9OworIF9MVF9FT0YKKyAKKysKKytfbHRfbGliZGVwc19zYXZlX0NGTEFHUz0kQ0ZMQUdTCisrY2FzZSAiJENDICRDRkxBR1MgIiBpbiAjKAorKypcIC1mbHRvKlwgKikgQ0ZMQUdTPSIkQ0ZMQUdTIC1mbm8tbHRvIiA7OworKypcIC1md2hvcHIqXCAqKSBDRkxBR1M9IiRDRkxBR1MgLWZuby13aG9wciIgOzsKKytlc2FjCisrCisgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2NvbXBpbGVcIiI7IH0gPiY1CisgICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQorICAgYWNfc3RhdHVzPSQ/CitAQCAtMTM0NDEsNyArMTQxODcsNyBAQCBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfY29tcGlsZVwiIjsgfSA+JjUKKyAgIHByZV90ZXN0X29iamVjdF9kZXBzX2RvbmU9bm8KKyAKKyAgIGZvciBwIGluIGBldmFsICIkb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQiYDsgZG8KKy0gICAgY2FzZSAkcCBpbgorKyAgICBjYXNlICR7cHJldn0ke3B9IGluCisgCisgICAgIC1MKiB8IC1SKiB8IC1sKikKKyAgICAgICAgIyBTb21lIGNvbXBpbGVycyBwbGFjZSBzcGFjZSBiZXR3ZWVuICIte0wsUn0iIGFuZCB0aGUgcGF0aC4KK0BAIC0xMzQ1MCwxMyArMTQxOTYsMjIgQEAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2NvbXBpbGVcIiI7IH0gPiY1CisgICAgICAgICAgIHRlc3QgJHAgPSAiLVIiOyB0aGVuCisgCSBwcmV2PSRwCisgCSBjb250aW51ZQorLSAgICAgICBlbHNlCistCSBwcmV2PQorICAgICAgICBmaQorIAorKyAgICAgICAjIEV4cGFuZCB0aGUgc3lzcm9vdCB0byBlYXNlIGV4dHJhY3RpbmcgdGhlIGRpcmVjdG9yaWVzIGxhdGVyLgorKyAgICAgICBpZiB0ZXN0IC16ICIkcHJldiI7IHRoZW4KKysgICAgICAgICBjYXNlICRwIGluCisrICAgICAgICAgLUwqKSBmdW5jX3N0cmlwbmFtZV9jbmYgJy1MJyAnJyAiJHAiOyBwcmV2PS1MOyBwPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKKysgICAgICAgICAtUiopIGZ1bmNfc3RyaXBuYW1lX2NuZiAnLVInICcnICIkcCI7IHByZXY9LVI7IHA9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OworKyAgICAgICAgIC1sKikgZnVuY19zdHJpcG5hbWVfY25mICctbCcgJycgIiRwIjsgcHJldj0tbDsgcD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7CisrICAgICAgICAgZXNhYworKyAgICAgICBmaQorKyAgICAgICBjYXNlICRwIGluCisrICAgICAgID0qKSBmdW5jX3N0cmlwbmFtZV9jbmYgJz0nICcnICIkcCI7IHA9JGx0X3N5c3Jvb3QkZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7CisrICAgICAgIGVzYWMKKyAgICAgICAgaWYgdGVzdCAiJHByZV90ZXN0X29iamVjdF9kZXBzX2RvbmUiID0gbm87IHRoZW4KKy0JIGNhc2UgJHAgaW4KKy0JIC1MKiB8IC1SKikKKysJIGNhc2UgJHtwcmV2fSBpbgorKwkgLUwgfCAtUikKKyAJICAgIyBJbnRlcm5hbCBjb21waWxlciBsaWJyYXJ5IHBhdGhzIHNob3VsZCBjb21lIGFmdGVyIHRob3NlCisgCSAgICMgcHJvdmlkZWQgdGhlIHVzZXIuICBUaGUgcG9zdGRlcHMgYWxyZWFkeSBjb21lIGFmdGVyIHRoZQorIAkgICAjIHVzZXIgc3VwcGxpZWQgbGlicyBzbyB0aGVyZSBpcyBubyBuZWVkIHRvIHByb2Nlc3MgdGhlbS4KK0BAIC0xMzQ3Niw4ICsxNDIzMSwxMCBAQCBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfY29tcGlsZVwiIjsgfSA+JjUKKyAJICAgcG9zdGRlcHNfQ1hYPSIke3Bvc3RkZXBzX0NYWH0gJHtwcmV2fSR7cH0iCisgCSBmaQorICAgICAgICBmaQorKyAgICAgICBwcmV2PQorICAgICAgICA7OworIAorKyAgICAqLmx0by4kb2JqZXh0KSA7OyAjIElnbm9yZSBHQ0MgTFRPIG9iamVjdHMKKyAgICAgKi4kb2JqZXh0KQorICAgICAgICAjIFRoaXMgYXNzdW1lcyB0aGF0IHRoZSB0ZXN0IG9iamVjdCBmaWxlIG9ubHkgc2hvd3MgdXAKKyAgICAgICAgIyBvbmNlIGluIHRoZSBjb21waWxlciBvdXRwdXQuCitAQCAtMTM1MTMsNiArMTQyNzAsNyBAQCBlbHNlCisgZmkKKyAKKyAkUk0gLWYgY29uZmVzdC4kb2JqZXh0CisrQ0ZMQUdTPSRfbHRfbGliZGVwc19zYXZlX0NGTEFHUworIAorICMgUE9SVE1FOiBvdmVycmlkZSBhYm92ZSB0ZXN0IG9uIHN5c3RlbXMgd2hlcmUgaXQgaXMgYnJva2VuCisgY2FzZSAkaG9zdF9vcyBpbgorQEAgLTEzNTQ4LDcgKzE0MzA2LDcgQEAgbGludXgqKQorIAorIHNvbGFyaXMqKQorICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKy0gIENDKikKKysgIENDKiB8IHN1bkNDKikKKyAgICAgIyBUaGUgbW9yZSBzdGFuZGFyZHMtY29uZm9ybWluZyBzdGxwb3J0NCBsaWJyYXJ5IGlzCisgICAgICMgaW5jb21wYXRpYmxlIHdpdGggdGhlIENzdGQgbGlicmFyeS4gQXZvaWQgc3BlY2lmeWluZworICAgICAjIGl0IGlmIGl0J3MgaW4gQ1hYRkxBR1MuIElnbm9yZSBsaWJDcnVuIGFzCitAQCAtMTM2MTMsOCArMTQzNzEsNiBAQCBmaQorIGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWD0KKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY19DWFg9CisgCisteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1CistJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAKKyAgICMgQysrIHNwZWNpZmljIGNhc2VzIGZvciBwaWMsIHN0YXRpYywgd2wsIGV0Yy4KKyAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCitAQCAtMTM3MTksNiArMTQ0NzUsMTEgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAJICA7OworIAllc2FjCisgCTs7CisrICAgICAgbWluZ3cqIHwgY3lnd2luKiB8IG9zMiogfCBwdzMyKiB8IGNlZ2NjKikKKysJIyBUaGlzIGhhY2sgaXMgc28gdGhhdCB0aGUgc291cmNlIGZpbGUgY2FuIHRlbGwgd2hldGhlciBpdCBpcyBiZWluZworKwkjIGJ1aWx0IGZvciBpbmNsdXNpb24gaW4gYSBkbGwgKGFuZCBzaG91bGQgZXhwb3J0IHN5bWJvbHMgZm9yIGV4YW1wbGUpLgorKwlsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFg9Jy1ERExMX0VYUE9SVCcKKysJOzsKKyAgICAgICBkZ3V4KikKKyAJY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAJICBlYysrKikKK0BAIC0xMzg3MSw3ICsxNDYzMiw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgCTs7CisgICAgICAgc29sYXJpcyopCisgCWNhc2UgJGNjX2Jhc2VuYW1lIGluCistCSAgQ0MqKQorKwkgIENDKiB8IHN1bkNDKikKKyAJICAgICMgU3VuIEMrKyA0LjIsIDUueCBhbmQgQ2VudGVybGluZSBDKysKKyAJICAgIGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWD0nLUtQSUMnCisgCSAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY19DWFg9Jy1Cc3RhdGljJworQEAgLTEzOTM2LDEwICsxNDY5NywxNyBAQCBjYXNlICRob3N0X29zIGluCisgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWD0iJGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWCAtRFBJQyIKKyAgICAgOzsKKyBlc2FjCisteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFgiID4mNQorLSRhc19lY2hvICIkbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYIiA+JjY7IH0KKy0KKyAKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWNfQ1hYK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfcHJvZ19jb21waWxlcl9waWNfQ1hYPSRsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFgKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcHJvZ19jb21waWxlcl9waWNfQ1hYIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljX0NYWCIgPiY2OyB9CisrbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYPSRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpY19DWFgKKyAKKyAjCisgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgorQEAgLTEzOTk3LDYgKzE0NzY1LDggQEAgZmkKKyAKKyAKKyAKKysKKysKKyAjCisgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgorICMKK0BAIC0xNDE3NCw2ICsxNDk0NCw3IEBAIGZpCisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGNvbXBpbGVyIGxpbmtlciAoJExEKSBzdXBwb3J0cyBzaGFyZWQgbGlicmFyaWVzLi4uICIgPiY2OyB9CisgCisgICBleHBvcnRfc3ltYm9sc19jbWRzX0NYWD0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEICdcJydzLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgZXhjbHVkZV9leHBzeW1zX0NYWD0nX0dMT0JBTF9PRkZTRVRfVEFCTEVffF9HTE9CQUxfX0ZbSURdXy4qJworICAgY2FzZSAkaG9zdF9vcyBpbgorICAgYWl4WzQtOV0qKQorICAgICAjIElmIHdlJ3JlIHVzaW5nIEdOVSBubSwgdGhlbiB3ZSBkb24ndCB3YW50IHRoZSAiLUMiIG9wdGlvbi4KK0BAIC0xNDE4OCwxNSArMTQ5NTksMjAgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGNvbXBpbGVyIGxpbmtlciAoJExEKSBzdXBwb3J0cyBzaGFyZWQgbGlicmFyaWUKKyAgICAgOzsKKyAgIHB3MzIqKQorICAgICBleHBvcnRfc3ltYm9sc19jbWRzX0NYWD0iJGx0ZGxsX2NtZHMiCistICA7OworKyAgICA7OworICAgY3lnd2luKiB8IG1pbmd3KiB8IGNlZ2NjKikKKy0gICAgZXhwb3J0X3N5bWJvbHNfY21kc19DWFg9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvOy9eLipbIF1fX25tX18vcy9eLipbIF1fX25tX19cKFteIF0qXClbIF1bXiBdKi9cMSBEQVRBLzsvXklbIF0vZDsvXltBSVRXXVsgXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworLSAgOzsKKysgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKysgICAgY2wqKSA7OworKyAgICAqKQorKyAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHNfQ1hYPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLztzL14uKlsgXV9fbm1fX1woW14gXSpcKVsgXVteIF0qL1wxIERBVEEvOy9eSVsgXS9kOy9eW0FJVFddWyBdL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrICAgICAgZXhjbHVkZV9leHBzeW1zX0NYWD0nW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJworKyAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKyAgICopCisgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHNfQ1hYPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgJ1wnJ3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCistICA7OworKyAgICA7OworICAgZXNhYworLSAgZXhjbHVkZV9leHBzeW1zX0NYWD0nX0dMT0JBTF9PRkZTRVRfVEFCTEVffF9HTE9CQUxfX0ZbSURdXy4qJworIAorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbGRfc2hsaWJzX0NYWCIgPiY1CisgJGFzX2VjaG8gIiRsZF9zaGxpYnNfQ1hYIiA+JjY7IH0KK0BAIC0xNDQ1OSw4ICsxNTIzNSw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgIG5lZWRfdmVyc2lvbj1ubworICAgbmVlZF9saWJfcHJlZml4PW5vCisgCistICBjYXNlICRHQ0MsJGhvc3Rfb3MgaW4KKy0gIHllcyxjeWd3aW4qIHwgeWVzLG1pbmd3KiB8IHllcyxwdzMyKiB8IHllcyxjZWdjYyopCisrICBjYXNlICRHQ0MsJGNjX2Jhc2VuYW1lIGluCisrICB5ZXMsKikKKysgICAgIyBnY2MKKyAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKKyAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcworICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KK0BAIC0xNDQ5MiwxMyArMTUyNjksNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKKyAgICAgICA7OworICAgICBlc2FjCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisrICAgIDs7CisrCisrICAqLGNsKikKKysgICAgIyBOYXRpdmUgTVNWQworKyAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJworKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisrICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJworKworKyAgICBjYXNlICRidWlsZF9vcyBpbgorKyAgICBtaW5ndyopCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQorKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKKysgICAgICBJRlM9JzsnCisrICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgorKyAgICAgIGRvCisrICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCisrICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgorKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCisrICAgICAgZG9uZQorKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKKysgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFthLXpBLVpdXFwpOnwgL1xcMXxnJyAtZSAnc3xeIHx8J2AKKysgICAgICA7OworKyAgICBjeWd3aW4qKQorKyAgICAgICMgQ29udmVydCB0byB1bml4IGZvcm0sIHRoZW4gdG8gZG9zIGZvcm0sIHRoZW4gYmFjayB0byB1bml4IGZvcm0KKysgICAgICAjIGJ1dCB0aGlzIHRpbWUgZG9zIHN0eWxlIChubyBzcGFjZXMhKSBzbyB0aGF0IHRoZSB1bml4IGZvcm0gbG9va3MKKysgICAgICAjIGxpa2UgL2N5Z2RyaXZlL2MvUFJPR1JBfjE6L2N5Z2RyLi4uCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRMSUIiYAorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS1kb3MgIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIDI+L2Rldi9udWxsYAorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisrICAgICAgOzsKKysgICAgKikKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCisrICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsOyB0aGVuCisrICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRILgorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKKysgICAgICBlbHNlCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisrICAgICAgZmkKKysgICAgICAjIEZJWE1FOiBmaW5kIHRoZSBzaG9ydCBuYW1lIG9yIHRoZSBwYXRoIGNvbXBvbmVudHMsIGFzIHNwYWNlcyBhcmUKKysgICAgICAjIGNvbW1vbi4gKGUuZy4gIlByb2dyYW0gRmlsZXMiIC0+ICJQUk9HUkF+MSIpCisrICAgICAgOzsKKysgICAgZXNhYworKworKyAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCisrICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgorKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisrICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgorKyAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgorKyAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZScKKysgICAgcG9zdHVuaW5zdGFsbF9jbWRzPSdkbGRsbD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGZpbGU7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKysgICAgICBkbHBhdGg9JGRpci9cJGRsZGxsfgorKyAgICAgICAkUk0gXCRkbHBhdGgnCisrICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxpbmsuZXhlJworICAgICA7OworIAorICAgKikKKysgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCisgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworICAgICA7OworICAgZXNhYworLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKyAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgorICAgc2hsaWJwYXRoX3Zhcj1QQVRICisgICA7OworQEAgLTE0NTg5LDcgKzE1NDI0LDcgQEAgaGFpa3UqKQorICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICisgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCistICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3QvYmVvcy9zeXN0ZW0vbGliJworKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L3N5c3RlbS9saWInCisgICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCisgICA7OworIAorQEAgLTE1MDQ4LDYgKzE1ODgzLDcgQEAgZmkKKyAgIGZpICMgdGVzdCAtbiAiJGNvbXBpbGVyIgorIAorICAgQ0M9JGx0X3NhdmVfQ0MKKysgIENGTEFHUz0kbHRfc2F2ZV9DRkxBR1MKKyAgIExEQ1hYPSRMRAorICAgTEQ9JGx0X3NhdmVfTEQKKyAgIEdDQz0kbHRfc2F2ZV9HQ0MKK0BAIC0xODA4MywxMyArMTg5MTksMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Vuc2V0PSdgJEVDSE8gIiRsdF91bnNldCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfU1AyTkw9J2AkRUNITyAiJGx0X1NQMk5MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9OTDJTUD0nYCRFQ0hPICIkbHRfTkwyU1AiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHJlbG9hZF9mbGFnPSdgJEVDSE8gIiRyZWxvYWRfZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgcmVsb2FkX2NtZHM9J2AkRUNITyAiJHJlbG9hZF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBPQkpEVU1QPSdgJEVDSE8gIiRPQkpEVU1QIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0nYCRFQ0hPICIkZGVwbGlic19jaGVja19tZXRob2QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGZpbGVfbWFnaWNfY21kPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrZmlsZV9tYWdpY19nbG9iPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2dsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK3dhbnRfbm9jYXNlZ2xvYj0nYCRFQ0hPICIkd2FudF9ub2Nhc2VnbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytETExUT09MPSdgJEVDSE8gIiRETExUT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0nYCRFQ0hPICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIEFSPSdgJEVDSE8gIiRBUiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgQVJfRkxBR1M9J2AkRUNITyAiJEFSX0ZMQUdTIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKythcmNoaXZlcl9saXN0X3NwZWM9J2AkRUNITyAiJGFyY2hpdmVyX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgU1RSSVA9J2AkRUNITyAiJFNUUklQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBSQU5MSUI9J2AkRUNITyAiJFJBTkxJQiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2AkRUNITyAiJG9sZF9wb3N0aW5zdGFsbF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xODEwNCwxNCArMTg5NDcsMTcgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgfCAkU0VEICIkZGUKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbm1fZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJG5tX2ZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9zeXNyb290PSdgJEVDSE8gIiRsdF9zeXNyb290IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBvYmpkaXI9J2AkRUNITyAiJG9iamRpciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTUFHSUNfQ01EPSdgJEVDSE8gIiRNQUdJQ19DTUQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCistbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9waWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9zdGF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vPSdgJEVDSE8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbmVlZF9sb2Nrcz0nYCRFQ0hPICIkbmVlZF9sb2NrcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrTUFOSUZFU1RfVE9PTD0nYCRFQ0hPICIkTUFOSUZFU1RfVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgRFNZTVVUSUw9J2AkRUNITyAiJERTWU1VVElMIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBOTUVESVQ9J2AkRUNITyAiJE5NRURJVCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTElQTz0nYCRFQ0hPICIkTElQTyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTgxNDQsMTIgKzE4OTkwLDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xCisgaGFyZGNvZGVfYXV0b21hdGljPSdgJEVDSE8gIiRoYXJkY29kZV9hdXRvbWF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGluaGVyaXRfcnBhdGg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGxpbmtfYWxsX2RlcGxpYnM9J2AkRUNITyAiJGxpbmtfYWxsX2RlcGxpYnMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworLWZpeF9zcmNmaWxlX3BhdGg9J2AkRUNITyAiJGZpeF9zcmNmaWxlX3BhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGFsd2F5c19leHBvcnRfc3ltYm9scz0nYCRFQ0hPICIkYWx3YXlzX2V4cG9ydF9zeW1ib2xzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBleHBvcnRfc3ltYm9sc19jbWRzPSdgJEVDSE8gIiRleHBvcnRfc3ltYm9sc19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBleGNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGV4Y2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgaW5jbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHByZWxpbmtfY21kcz0nYCRFQ0hPICIkcHJlbGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytwb3N0bGlua19jbWRzPSdgJEVDSE8gIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBmaWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSdgJEVDSE8gIiR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbmVlZF9saWJfcHJlZml4PSdgJEVDSE8gIiRuZWVkX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTE4MTg4LDggKzE5MDM0LDggQEAgb2xkX2FyY2hpdmVfY21kc19DWFg9J2AkRUNITyAiJG9sZF9hcmNoaXZlX2NtZHNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGUKKyBjb21waWxlcl9DWFg9J2AkRUNITyAiJGNvbXBpbGVyX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgR0NDX0NYWD0nYCRFQ0hPICIkR0NDX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWdfQ1hYPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZ19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworLWx0X3Byb2dfY29tcGlsZXJfd2xfQ1hYPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X3Byb2dfY29tcGlsZXJfd2xfQ1hYPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWNfQ1hYPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vX0NYWD0nYCRFQ0hPICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX29fQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBhcmNoaXZlX2NtZHNfbmVlZF9sY19DWFg9J2AkRUNITyAiJGFyY2hpdmVfY21kc19uZWVkX2xjX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTgyMTYsMTIgKzE5MDYyLDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXJfQ1hYPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyX0NYWCIgfCAkU0VEICIkZGVsYXlfCisgaGFyZGNvZGVfYXV0b21hdGljX0NYWD0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgaW5oZXJpdF9ycGF0aF9DWFg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGhfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsaW5rX2FsbF9kZXBsaWJzX0NYWD0nYCRFQ0hPICIkbGlua19hbGxfZGVwbGlic19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworLWZpeF9zcmNmaWxlX3BhdGhfQ1hYPSdgJEVDSE8gIiRmaXhfc3JjZmlsZV9wYXRoX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgYWx3YXlzX2V4cG9ydF9zeW1ib2xzX0NYWD0nYCRFQ0hPICIkYWx3YXlzX2V4cG9ydF9zeW1ib2xzX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZXhwb3J0X3N5bWJvbHNfY21kc19DWFg9J2AkRUNITyAiJGV4cG9ydF9zeW1ib2xzX2NtZHNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBleGNsdWRlX2V4cHN5bXNfQ1hYPSdgJEVDSE8gIiRleGNsdWRlX2V4cHN5bXNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBpbmNsdWRlX2V4cHN5bXNfQ1hYPSdgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBwcmVsaW5rX2NtZHNfQ1hYPSdgJEVDSE8gIiRwcmVsaW5rX2NtZHNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytwb3N0bGlua19jbWRzX0NYWD0nYCRFQ0hPICIkcG9zdGxpbmtfY21kc19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGZpbGVfbGlzdF9zcGVjX0NYWD0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBoYXJkY29kZV9hY3Rpb25fQ1hYPSdgJEVDSE8gIiRoYXJkY29kZV9hY3Rpb25fQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBjb21waWxlcl9saWJfc2VhcmNoX2RpcnNfQ1hYPSdgJEVDSE8gIiRjb21waWxlcl9saWJfc2VhcmNoX2RpcnNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xODI1OSw4ICsxOTEwNSwxMyBAQCByZWxvYWRfZmxhZyBcCisgT0JKRFVNUCBcCisgZGVwbGlic19jaGVja19tZXRob2QgXAorIGZpbGVfbWFnaWNfY21kIFwKKytmaWxlX21hZ2ljX2dsb2IgXAorK3dhbnRfbm9jYXNlZ2xvYiBcCisrRExMVE9PTCBcCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQgXAorIEFSIFwKKyBBUl9GTEFHUyBcCisrYXJjaGl2ZXJfbGlzdF9zcGVjIFwKKyBTVFJJUCBcCisgUkFOTElCIFwKKyBDQyBcCitAQCAtMTgyNzAsMTIgKzE5MTIxLDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIFwKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyBcCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCBcCisrbm1fZmlsZV9saXN0X3NwZWMgXAorIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIFwKKy1sdF9wcm9nX2NvbXBpbGVyX3dsIFwKKyBsdF9wcm9nX2NvbXBpbGVyX3BpYyBcCisrbHRfcHJvZ19jb21waWxlcl93bCBcCisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWMgXAorIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIFwKKyBuZWVkX2xvY2tzIFwKKytNQU5JRkVTVF9UT09MIFwKKyBEU1lNVVRJTCBcCisgTk1FRElUIFwKKyBMSVBPIFwKK0BAIC0xODI5MSw3ICsxOTE0NCw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKKyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIFwKKyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIFwKKyBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIFwKKy1maXhfc3JjZmlsZV9wYXRoIFwKKyBleGNsdWRlX2V4cHN5bXMgXAorIGluY2x1ZGVfZXhwc3ltcyBcCisgZmlsZV9saXN0X3NwZWMgXAorQEAgLTE4MzEzLDggKzE5MTY1LDggQEAgTERfQ1hYIFwKKyByZWxvYWRfZmxhZ19DWFggXAorIGNvbXBpbGVyX0NYWCBcCisgbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWdfQ1hYIFwKKy1sdF9wcm9nX2NvbXBpbGVyX3dsX0NYWCBcCisgbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYIFwKKytsdF9wcm9nX2NvbXBpbGVyX3dsX0NYWCBcCisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWNfQ1hYIFwKKyBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfb19DWFggXAorIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY19DWFggXAorQEAgLTE4MzI2LDcgKzE5MTc4LDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWdfQ1hYIFwKKyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWCBcCisgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZF9DWFggXAorIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3JfQ1hYIFwKKy1maXhfc3JjZmlsZV9wYXRoX0NYWCBcCisgZXhjbHVkZV9leHBzeW1zX0NYWCBcCisgaW5jbHVkZV9leHBzeW1zX0NYWCBcCisgZmlsZV9saXN0X3NwZWNfQ1hYIFwKK0BAIC0xODM2MCw2ICsxOTIxMSw3IEBAIG1vZHVsZV9jbWRzIFwKKyBtb2R1bGVfZXhwc3ltX2NtZHMgXAorIGV4cG9ydF9zeW1ib2xzX2NtZHMgXAorIHByZWxpbmtfY21kcyBcCisrcG9zdGxpbmtfY21kcyBcCisgcG9zdGluc3RhbGxfY21kcyBcCisgcG9zdHVuaW5zdGFsbF9jbWRzIFwKKyBmaW5pc2hfY21kcyBcCitAQCAtMTgzNzQsNyArMTkyMjYsOCBAQCBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWCBcCisgbW9kdWxlX2NtZHNfQ1hYIFwKKyBtb2R1bGVfZXhwc3ltX2NtZHNfQ1hYIFwKKyBleHBvcnRfc3ltYm9sc19jbWRzX0NYWCBcCistcHJlbGlua19jbWRzX0NYWDsgZG8KKytwcmVsaW5rX2NtZHNfQ1hYIFwKKytwb3N0bGlua19jbWRzX0NYWDsgZG8KKyAgICAgY2FzZSBcYGV2YWwgXFxcXFwkRUNITyBcXFxcIiJcXFxcXCRcJHZhciJcXFxcIlxgIGluCisgICAgICpbXFxcXFxcXGBcXCJcXFwkXSopCisgICAgICAgZXZhbCAibHRfXCR2YXI9XFxcXFxcIlxcXGBcXFwkRUNITyBcXCJcXFwkXCR2YXJcXCIgfCBcXFwkU0VEIC1lIFxcIlxcXCRkb3VibGVfcXVvdGVfc3Vic3RcXCIgLWUgXFwiXFxcJHNlZF9xdW90ZV9zdWJzdFxcIiAtZSBcXCJcXFwkZGVsYXlfdmFyaWFibGVfc3Vic3RcXCJcXFxgXFxcXFxcIiIKK0BAIC0xOTE2Nyw3ICsyMDAyMCw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKKyAjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KKyAjCisgIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKKy0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorKyMgICAgICAgICAgICAgICAgIEluYy4KKyAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgorICMKKyAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCitAQCAtMTkyNzAsMTkgKzIwMTI0LDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAorICMgdHVybiBuZXdsaW5lcyBpbnRvIHNwYWNlcy4KKyBOTDJTUD0kbHRfbHRfTkwyU1AKKyAKKysjIGNvbnZlcnQgXCRidWlsZCBmaWxlIG5hbWVzIHRvIFwkaG9zdCBmb3JtYXQuCisrdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAorKworKyMgY29udmVydCBcJGJ1aWxkIGZpbGVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuCisrdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAorKworICMgQW4gb2JqZWN0IHN5bWJvbCBkdW1wZXIuCisgT0JKRFVNUD0kbHRfT0JKRFVNUAorIAorICMgTWV0aG9kIHRvIGNoZWNrIHdoZXRoZXIgZGVwZW5kZW50IGxpYnJhcmllcyBhcmUgc2hhcmVkIG9iamVjdHMuCisgZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2RlcGxpYnNfY2hlY2tfbWV0aG9kCisgCistIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID09ICJmaWxlX21hZ2ljIi4KKysjIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCisgZmlsZV9tYWdpY19jbWQ9JGx0X2ZpbGVfbWFnaWNfY21kCisgCisrIyBIb3cgdG8gZmluZCBwb3RlbnRpYWwgZmlsZXMgd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KKytmaWxlX21hZ2ljX2dsb2I9JGx0X2ZpbGVfbWFnaWNfZ2xvYgorKworKyMgRmluZCBwb3RlbnRpYWwgZmlsZXMgdXNpbmcgbm9jYXNlZ2xvYiB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorK3dhbnRfbm9jYXNlZ2xvYj0kbHRfd2FudF9ub2Nhc2VnbG9iCisrCisrIyBETEwgY3JlYXRpb24gcHJvZ3JhbS4KKytETExUT09MPSRsdF9ETExUT09MCisrCisrIyBDb21tYW5kIHRvIGFzc29jaWF0ZSBzaGFyZWQgYW5kIGxpbmsgbGlicmFyaWVzLgorK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAorKworICMgVGhlIGFyY2hpdmVyLgorIEFSPSRsdF9BUgorKworKyMgRmxhZ3MgdG8gY3JlYXRlIGFuIGFyY2hpdmUuCisgQVJfRkxBR1M9JGx0X0FSX0ZMQUdTCisgCisrIyBIb3cgdG8gZmVlZCBhIGZpbGUgbGlzdGluZyB0byB0aGUgYXJjaGl2ZXIuCisrYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9hcmNoaXZlcl9saXN0X3NwZWMKKysKKyAjIEEgc3ltYm9sIHN0cmlwcGluZyBwcm9ncmFtLgorIFNUUklQPSRsdF9TVFJJUAorIAorQEAgLTE5MzEyLDYgKzIwMTg5LDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzCisgIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZC4KKyBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgKKyAKKysjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcyBmb3IgXCROTS4KKytubV9maWxlX2xpc3Rfc3BlYz0kbHRfbm1fZmlsZV9saXN0X3NwZWMKKysKKysjIFRoZSByb290IHdoZXJlIHRvIHNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyxhbmQgaW4gd2hpY2ggb3VyIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkLgorK2x0X3N5c3Jvb3Q9JGx0X3N5c3Jvb3QKKysKKyAjIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0ZW1wb3JhcnkgbGlidG9vbCBmaWxlcy4KKyBvYmpkaXI9JG9iamRpcgorIAorQEAgLTE5MzIxLDYgKzIwMjA0LDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKKyAjIE11c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uPworIG5lZWRfbG9ja3M9JGx0X25lZWRfbG9ja3MKKyAKKysjIE1hbmlmZXN0IHRvb2wuCisrTUFOSUZFU1RfVE9PTD0kbHRfTUFOSUZFU1RfVE9PTAorKworICMgVG9vbCB0byBtYW5pcHVsYXRlIGFyY2hpdmVkIERXQVJGIGRlYnVnIHN5bWJvbCBmaWxlcyBvbiBNYWMgT1MgWC4KKyBEU1lNVVRJTD0kbHRfRFNZTVVUSUwKKyAKK0BAIC0xOTQzNSwxMiArMjAzMjEsMTIgQEAgd2l0aF9nY2M9JEdDQworICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KKyBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnCisgCistIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgorLXdsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCistCisgIyBBZGRpdGlvbmFsIGNvbXBpbGVyIGZsYWdzIGZvciBidWlsZGluZyBsaWJyYXJ5IG9iamVjdHMuCisgcGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfcGljCisgCisrIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgorK3dsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCisrCisgIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgorIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljCisgCitAQCAtMTk1MjcsOSArMjA0MTMsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCisgIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCisgbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlicworIAorLSMgRml4IHRoZSBzaGVsbCB2YXJpYWJsZSBcJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlci4KKy1maXhfc3JjZmlsZV9wYXRoPSRsdF9maXhfc3JjZmlsZV9wYXRoCistCisgIyBTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWQuCisgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSRhbHdheXNfZXhwb3J0X3N5bWJvbHMKKyAKK0BAIC0xOTU0NSw2ICsyMDQyOCw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCisgIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KKyBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kcworIAorKyMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBmaW5pc2hpbmcgbGlua2luZyBwcm9ncmFtcy4KKytwb3N0bGlua19jbWRzPSRsdF9wb3N0bGlua19jbWRzCisrCisgIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCisgZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjCisgCitAQCAtMTk1OTEsMjEwICsyMDQ3NywxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCisgICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCisgICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQorICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KKy0gIHNlZCAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS9xJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCistICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCistCistICBjYXNlICR4c2lfc2hlbGwgaW4KKy0gIHllcykKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCistIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistZnVuY19kaXJuYW1lICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7CistICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKKy0gIGVzYWMKKy19CistCistIyBmdW5jX2Jhc2VuYW1lIGZpbGUKKy1mdW5jX2Jhc2VuYW1lICgpCisteworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgorLX0KKy0KKy0jIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgorLSMgY2FsbDoKKy0jICAgZGlybmFtZTogIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LAorLSMgICAgICAgICAgICAgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LCBvdGhlcndpc2Ugc2V0IHJlc3VsdAorLSMgICAgICAgICAgICAgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLSMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgorLSMgICBiYXNlbmFtZTogQ29tcHV0ZSBmaWxlbmFtZSBvZiBGSUxFLgorLSMgICAgICAgICAgICAgdmFsdWUgcmV0dW5lZCBpbiAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorLSMgSW1wbGVtZW50YXRpb24gbXVzdCBiZSBrZXB0IHN5bmNocm9uaXplZCB3aXRoIGZ1bmNfZGlybmFtZQorLSMgYW5kIGZ1bmNfYmFzZW5hbWUuIEZvciBlZmZpY2llbmN5LCB3ZSBkbyBub3QgZGVsZWdhdGUgdG8KKy0jIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KKy1mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7CistICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKKy0gIGVzYWMKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKKy19CistCistIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKKy0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgorLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCistIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCistIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgorLWZ1bmNfc3RyaXBuYW1lICgpCisteworLSAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQorLSAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9CistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifQorLX0KKy0KKy0jIGZ1bmNfb3B0X3NwbGl0CistZnVuY19vcHRfc3BsaXQgKCkKKy17CistICBmdW5jX29wdF9zcGxpdF9vcHQ9JHsxJSU9Kn0KKy0gIGZ1bmNfb3B0X3NwbGl0X2FyZz0kezEjKj19CistfQorLQorLSMgZnVuY19sbzJvIG9iamVjdAorLWZ1bmNfbG8ybyAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OworLSAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKKy0gIGVzYWMKKy19CistCistIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKKy1mdW5jX3hmb3JtICgpCisteworLSAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sbworLX0KKy0KKy0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCistZnVuY19hcml0aCAoKQorLXsKKy0gIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKQorLX0KKy0KKy0jIGZ1bmNfbGVuIHN0cmluZworLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KKy1mdW5jX2xlbiAoKQorLXsKKy0gIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfQorLX0KKy0KKy1fTFRfRU9GCistICAgIDs7CistICAqKSAjIEJvdXJuZSBjb21wYXRpYmxlIGZ1bmN0aW9ucy4KKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCistIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistZnVuY19kaXJuYW1lICgpCisteworLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KKy0gIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRkaXJuYW1lImAKKy0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCistICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCistICBlbHNlCistICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKKy0gIGZpCistfQorLQorLSMgZnVuY19iYXNlbmFtZSBmaWxlCistZnVuY19iYXNlbmFtZSAoKQorLXsKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkYmFzZW5hbWUiYAorLX0KKy0KKy0KKy0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQorLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCistIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKy0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKy0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCistIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQorLWZ1bmNfc3RyaXBuYW1lICgpCisteworLSAgY2FzZSAkezJ9IGluCistICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7CistICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKKy0gIGVzYWMKKy19CistCistIyBzZWQgc2NyaXB0czoKKy1teV9zZWRfbG9uZ19vcHQ9JzFzL15cKC1bXj1dKlwpPS4qL1wxLztxJworLW15X3NlZF9sb25nX2FyZz0nMXMvXi1bXj1dKj0vLycKKy0KKy0jIGZ1bmNfb3B0X3NwbGl0CistZnVuY19vcHRfc3BsaXQgKCkKKy17CistICBmdW5jX29wdF9zcGxpdF9vcHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19vcHQiYAorLSAgZnVuY19vcHRfc3BsaXRfYXJnPWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKKy19CistCistIyBmdW5jX2xvMm8gb2JqZWN0CistZnVuY19sbzJvICgpCisteworLSAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGxvMm8iYAorLX0KKy0KKy0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQorLWZ1bmNfeGZvcm0gKCkKKy17CistICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAncy9cLlteLl0qJC8ubG8vJ2AKKy19CistCistIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgorLWZ1bmNfYXJpdGggKCkKKy17CistICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJEAiYAorLX0KKy0KKy0jIGZ1bmNfbGVuIHN0cmluZworLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KKy1mdW5jX2xlbiAoKQorLXsKKy0gIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJDEiIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKKy19CistCistX0xUX0VPRgorLWVzYWMKKy0KKy1jYXNlICRsdF9zaGVsbF9hcHBlbmQgaW4KKy0gIHllcykKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQorLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgorLWZ1bmNfYXBwZW5kICgpCisteworLSAgZXZhbCAiJDErPVwkMiIKKy19CistX0xUX0VPRgorLSAgICA7OworLSAgKikKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQorLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgorLWZ1bmNfYXBwZW5kICgpCisteworLSAgZXZhbCAiJDE9XCQkMVwkMiIKKy19CistCistX0xUX0VPRgorLSAgICA7OworLSAgZXNhYworLQorLQorLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorLQorLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAorKyAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorKyAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKysKKysgIGlmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KKysgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWUgL2NcCisrZnVuY19kaXJuYW1lICgpXAorK3tcCisrXCAgICBjYXNlICR7MX0gaW5cCisrXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAorK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAorK1wgICAgZXNhY1wKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfYmFzZW5hbWUgL2NcCisrZnVuY19iYXNlbmFtZSAoKVwKKyt7XAorK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIC9jXAorK2Z1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKClcCisre1wKKytcICAgIGNhc2UgJHsxfSBpblwKKytcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCisrXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCisrXCAgICBlc2FjXAorK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3RyaXBuYW1lICgpJC8sL159ICMgZnVuY19zdHJpcG5hbWUgL2NcCisrZnVuY19zdHJpcG5hbWUgKClcCisre1wKKytcICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmVcCisrXCAgICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuXAorK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M31cCisrXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifVwKKytcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3N0cmlwbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfbG9uZ19vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X2xvbmdfb3B0IC9jXAorK2Z1bmNfc3BsaXRfbG9uZ19vcHQgKClcCisre1wKKytcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT0kezElJT0qfVwKKytcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPSR7MSMqPX1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfbG9uZ19vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3NwbGl0X3Nob3J0X29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IC9jXAorK2Z1bmNfc3BsaXRfc2hvcnRfb3B0ICgpXAorK3tcCisrXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9JHsxIz8/fVwKKytcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9JHsxJSIkZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIn1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19sbzJvICgpJC8sL159ICMgZnVuY19sbzJvIC9jXAorK2Z1bmNfbG8ybyAoKVwKKyt7XAorK1wgICAgY2FzZSAkezF9IGluXAorK1wgICAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7O1wKKytcICAgICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7XAorK1wgICAgZXNhY1wKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sbzJvIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY194Zm9ybSAoKSQvLC9efSAjIGZ1bmNfeGZvcm0gL2NcCisrZnVuY194Zm9ybSAoKVwKKyt7XAorKyAgICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3hmb3JtIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19hcml0aCAoKSQvLC9efSAjIGZ1bmNfYXJpdGggL2NcCisrZnVuY19hcml0aCAoKVwKKyt7XAorKyAgICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSlcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXJpdGggaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2xlbiAoKSQvLC9efSAjIGZ1bmNfbGVuIC9jXAorK2Z1bmNfbGVuICgpXAorK3tcCisrICAgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sZW4gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKytmaQorKworK2lmIHRlc3QgeCIkbHRfc2hlbGxfYXBwZW5kIiA9IHh5ZXM7IHRoZW4KKysgIHNlZCAtZSAnL15mdW5jX2FwcGVuZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kIC9jXAorK2Z1bmNfYXBwZW5kICgpXAorK3tcCisrICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19hcHBlbmRfcXVvdGVkICgpJC8sL159ICMgZnVuY19hcHBlbmRfcXVvdGVkIC9jXAorK2Z1bmNfYXBwZW5kX3F1b3RlZCAoKVwKKyt7XAorK1wgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSJcCisrXCAgICBldmFsICIkezF9Kz1cXFxcIFxcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmRfcXVvdGVkIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgd2hlcmUgcG9zc2libGUgYnkgZGlyZWN0IHVzZSBvZiAnKz0nCisrICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxKz0iJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKysgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKysgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrZWxzZQorKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIGV2ZW4gd2hlbiAnKz0nIGlzIG5vdCBhdmFpbGFibGUKKysgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDE9IiRcMSVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCisrICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorK2ZpCisrCisraWYgdGVzdCB4IiRfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsIiA9IHgiOiI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiYyO30KKytmaQorKworKworKyAgIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKKyAgICAgKHJtIC1mICIkb2ZpbGUiICYmIGNwICIkY2ZnZmlsZSIgIiRvZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlIikKKyAgIGNobW9kICt4ICIkb2ZpbGUiCisgCitAQCAtMTk4MjIsMTIgKzIwNjY3LDEyIEBAIHdpdGhfZ2NjPSRHQ0NfQ1hYCisgIyBDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgorIG5vX2J1aWx0aW5fZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWdfQ1hYCisgCistIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgorLXdsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsX0NYWAorLQorICMgQWRkaXRpb25hbCBjb21waWxlciBmbGFncyBmb3IgYnVpbGRpbmcgbGlicmFyeSBvYmplY3RzLgorIHBpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3BpY19DWFgKKyAKKysjIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCisrd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2xfQ1hYCisrCisgIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgorIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljX0NYWAorIAorQEAgLTE5OTE0LDkgKzIwNzU5LDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aF9DWFgKKyAjIFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KKyBsaW5rX2FsbF9kZXBsaWJzPSRsaW5rX2FsbF9kZXBsaWJzX0NYWAorIAorLSMgRml4IHRoZSBzaGVsbCB2YXJpYWJsZSBcJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlci4KKy1maXhfc3JjZmlsZV9wYXRoPSRsdF9maXhfc3JjZmlsZV9wYXRoX0NYWAorLQorICMgU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkLgorIGFsd2F5c19leHBvcnRfc3ltYm9scz0kYWx3YXlzX2V4cG9ydF9zeW1ib2xzX0NYWAorIAorQEAgLTE5OTMyLDYgKzIwNzc0LDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXNfQ1hYCisgIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KKyBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kc19DWFgKKyAKKysjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgZmluaXNoaW5nIGxpbmtpbmcgcHJvZ3JhbXMuCisrcG9zdGxpbmtfY21kcz0kbHRfcG9zdGxpbmtfY21kc19DWFgKKysKKyAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcy4KKyBmaWxlX2xpc3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWNfQ1hYCisgCitkaWZmIC0tZ2l0IGEvbGlidG9vbC5tNCBiL2xpYnRvb2wubTQKK2luZGV4IDI0ZDEzZjM0NDAuLmU0NWZkYzY5OTggMTAwNjQ0CistLS0gYS9saWJ0b29sLm00CisrKysgYi9saWJ0b29sLm00CitAQCAtMSw3ICsxLDggQEAKKyAjIGxpYnRvb2wubTQgLSBDb25maWd1cmUgbGlidG9vbCBmb3IgdGhlIGhvc3Qgc3lzdGVtLiAtKi1BdXRvY29uZi0qLQorICMKKyAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAorLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisrIyAgICAgICAgICAgICAgICAgSW5jLgorICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2CisgIworICMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gZ2l2ZXMKK0BAIC0xMCw3ICsxMSw4IEBACisgCisgbTRfZGVmaW5lKFtfTFRfQ09QWUlOR10sIFtkbmwKKyAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAorLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisrIyAgICAgICAgICAgICAgICAgSW5jLgorICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2CisgIworICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KK0BAIC0zNyw3ICszOSw3IEBAIG00X2RlZmluZShbX0xUX0NPUFlJTkddLCBbZG5sCisgIyA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyBdKQorIAorLSMgc2VyaWFsIDU2IExUX0lOSVQKKysjIHNlcmlhbCA1NyBMVF9JTklUCisgCisgCisgIyBMVF9QUkVSRVEoVkVSU0lPTikKK0BAIC05Miw3ICs5NCw4IEBAIF9MVF9TRVRfT1BUSU9OUyhbJDBdLCBbJDFdKQorIExJQlRPT0xfREVQUz0iJGx0bWFpbiIKKyAKKyAjIEFsd2F5cyB1c2Ugb3VyIG93biBsaWJ0b29sLgorLUxJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKS9saWJ0b29sJworK0xJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKScKKytMSUJUT09MPSIkTElCVE9PTC8ke2hvc3RfYWxpYXN9LWxpYnRvb2wiCisgQUNfU1VCU1QoTElCVE9PTClkbmwKKyAKKyBfTFRfU0VUVVAKK0BAIC0xNjYsMTAgKzE2OSwxMyBAQCBfTFRfREVDTChbXSwgW2V4ZWV4dF0sIFswXSwgW0V4ZWN1dGFibGUgZmlsZSBzdWZmaXggKG5vcm1hbGx5ICIiKV0pZG5sCisgZG5sCisgbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pZG5sCisgbTRfcmVxdWlyZShbX0xUX0NIRUNLX1NIRUxMX0ZFQVRVUkVTXSlkbmwKKyttNF9yZXF1aXJlKFtfTFRfUEFUSF9DT05WRVJTSU9OX0ZVTkNUSU9OU10pZG5sCisgbTRfcmVxdWlyZShbX0xUX0NNRF9SRUxPQURdKWRubAorIG00X3JlcXVpcmUoW19MVF9DSEVDS19NQUdJQ19NRVRIT0RdKWRubAorK200X3JlcXVpcmUoW19MVF9DSEVDS19TSEFSRURMSUJfRlJPTV9MSU5LTElCXSlkbmwKKyBtNF9yZXF1aXJlKFtfTFRfQ01EX09MRF9BUkNISVZFXSlkbmwKKyBtNF9yZXF1aXJlKFtfTFRfQ01EX0dMT0JBTF9TWU1CT0xTXSlkbmwKKyttNF9yZXF1aXJlKFtfTFRfV0lUSF9TWVNST09UXSlkbmwKKyAKKyBfTFRfQ09ORklHX0xJQlRPT0xfSU5JVChbCisgIyBTZWUgaWYgd2UgYXJlIHJ1bm5pbmcgb24genNoLCBhbmQgc2V0IHRoZSBvcHRpb25zIHdoaWNoIGFsbG93IG91cgorQEAgLTE5OSw3ICsyMDUsNyBAQCBhaXgzKikKKyBlc2FjCisgCisgIyBHbG9iYWwgdmFyaWFibGVzOgorLW9maWxlPWxpYnRvb2wKKytvZmlsZT0ke2hvc3RfYWxpYXN9LWxpYnRvb2wKKyBjYW5fYnVpbGRfc2hhcmVkPXllcworIAorICMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAorQEAgLTYzMiw3ICs2MzgsNyBAQCBtNF9pZnNldChbQUNfUEFDS0FHRV9OQU1FXSwgW0FDX1BBQ0tBR0VfTkFNRSBdKWNvbmZpZy5sdFtdZG5sCisgbTRfaWZzZXQoW0FDX1BBQ0tBR0VfVkVSU0lPTl0sIFsgQUNfUEFDS0FHRV9WRVJTSU9OXSkKKyBjb25maWd1cmVkIGJ5ICRbMF0sIGdlbmVyYXRlZCBieSBtNF9QQUNLQUdFX1NUUklORy4KKyAKKy1Db3B5cmlnaHQgKEMpIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIFRoaXMgY29uZmlnLmx0IHNjcmlwdCBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgaXQuIgorIAorQEAgLTc0NiwxNSArNzUyLDEyIEBAIF9MVF9FT0YKKyAgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KKyAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCisgICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPworLSAgc2VkICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlL3EnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKy0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKysgIHNlZCAnJHEnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKysgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCisgCistICBfTFRfUFJPR19YU0lfU0hFTExGTlMKKysgIF9MVF9QUk9HX1JFUExBQ0VfU0hFTExGTlMKKyAKKy0gIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKy0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKy0KKy0gIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKKysgICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CisgICAgIChybSAtZiAiJG9maWxlIiAmJiBjcCAiJGNmZ2ZpbGUiICIkb2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZSIpCisgICBjaG1vZCAreCAiJG9maWxlIgorIF0sCitAQCAtOTgwLDYgKzk4Myw4IEBAIF9MVF9FT0YKKyAgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JkFTX01FU1NBR0VfTE9HX0ZECisgICAgICAgZWNobyAiJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8iID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgICAgICAkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyAyPiZBU19NRVNTQUdFX0xPR19GRAorKyAgICAgIGVjaG8gIiRSQU5MSUIgbGliY29uZnRlc3QuYSIgPiZBU19NRVNTQUdFX0xPR19GRAorKyAgICAgICRSQU5MSUIgbGliY29uZnRlc3QuYSAyPiZBU19NRVNTQUdFX0xPR19GRAorICAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgorIGludCBtYWluKCkgeyByZXR1cm4gMDt9CisgX0xUX0VPRgorQEAgLTEwNjksMzAgKzEwNzQsNDEgQEAgbTRfZGVmdW4oW19MVF9EQVJXSU5fTElOS0VSX0ZFQVRVUkVTXSwKKyAgIGZpCisgXSkKKyAKKy0jIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCistIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKyMgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgoW1RBR05BTUVdKQorKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICMgTGlua3MgYSBtaW5pbWFsIHByb2dyYW0gYW5kIGNoZWNrcyB0aGUgZXhlY3V0YWJsZQorICMgZm9yIHRoZSBzeXN0ZW0gZGVmYXVsdCBoYXJkY29kZWQgbGlicmFyeSBwYXRoLiBJbiBtb3N0IGNhc2VzLAorICMgdGhpcyBpcyAvdXNyL2xpYjovbGliLCBidXQgd2hlbiB0aGUgTVBJIGNvbXBpbGVycyBhcmUgdXNlZAorICMgdGhlIGxvY2F0aW9uIG9mIHRoZSBjb21tdW5pY2F0aW9uIGFuZCBNUEkgbGlicyBhcmUgaW5jbHVkZWQgdG9vLgorICMgSWYgd2UgZG9uJ3QgZmluZCBhbnl0aGluZywgdXNlIHRoZSBkZWZhdWx0IGxpYnJhcnkgcGF0aCBhY2NvcmRpbmcKKyAjIHRvIHRoZSBhaXggbGQgbWFudWFsLgorKyMgU3RvcmUgdGhlIHJlc3VsdHMgZnJvbSB0aGUgZGlmZmVyZW50IGNvbXBpbGVycyBmb3IgZWFjaCBUQUdOQU1FLgorKyMgQWxsb3cgdG8gb3ZlcnJpZGUgdGhlbSBmb3IgYWxsIHRhZ3MgdGhyb3VnaCBsdF9jdl9haXhfbGlicGF0aC4KKyBtNF9kZWZ1bihbX0xUX1NZU19NT0RVTEVfUEFUSF9BSVhdLAorIFttNF9yZXF1aXJlKFtfTFRfREVDTF9TRURdKWRubAorLUFDX0xJTktfSUZFTFNFKEFDX0xBTkdfUFJPR1JBTSxbCistbHRfYWl4X2xpYnBhdGhfc2VkPScKKy0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworLQkvXjAvIHsKKy0JICAgIHMvXjAgICpcKC4qXCkkL1wxLworLQkgICAgcAorLQl9CistICAgIH0nCistYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KKy0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLWZpXSxbXSkKKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKytpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKKytlbHNlCisrICBBQ19DQUNIRV9WQUwoW19MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pXSwKKysgIFtBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNXSxbCisrICBsdF9haXhfbGlicGF0aF9zZWQ9J1sKKysgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisrCSAgL14wLyB7CisrCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCisrCSAgICAgIHAKKysJICB9CisrICAgICAgfV0nCisrICBfTFRfVEFHVkFSKFtsdF9jdl9haXhfbGlicGF0aF9dLCBbJDFdKT1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKysgIGlmIHRlc3QgLXogIiRfTFRfVEFHVkFSKFtsdF9jdl9haXhfbGlicGF0aF9dLCBbJDFdKSI7IHRoZW4KKysgICAgX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSk9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICBmaV0sW10pCisrICBpZiB0ZXN0IC16ICIkX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSkiOyB0aGVuCisrICAgIF9MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pPSIvdXNyL2xpYjovbGliIgorKyAgZmkKKysgIF0pCisrICBhaXhfbGlicGF0aD0kX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSkKKytmaQorIF0pIyBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWAorIAorIAorQEAgLTExMTcsNyArMTEzMyw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCisgCisgQUNfTVNHX0NIRUNLSU5HKFtob3cgdG8gcHJpbnQgc3RyaW5nc10pCisgIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCistaWYgdGVzdCAiWGBwcmludCAtciAtLSAtbiAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKKytpZiB0ZXN0ICJYYCggcHJpbnQgLXIgLS0gLW4gKSAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKKyAgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgorICAgRUNITz0ncHJpbnQgLXIgLS0nCisgZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KK0BAIC0xMTYxLDYgKzExNzcsMzkgQEAgX0xUX0RFQ0woW10sIFtFQ0hPXSwgWzFdLCBbQW4gZWNobyBwcm9ncmFtIHRoYXQgcHJvdGVjdHMgYmFja3NsYXNoZXNdKQorIF0pIyBfTFRfUFJPR19FQ0hPX0JBQ0tTTEFTSAorIAorIAorKyMgX0xUX1dJVEhfU1lTUk9PVAorKyMgLS0tLS0tLS0tLS0tLS0tLQorK0FDX0RFRlVOKFtfTFRfV0lUSF9TWVNST09UXSwKKytbQUNfTVNHX0NIRUNLSU5HKFtmb3Igc3lzcm9vdF0pCisrQUNfQVJHX1dJVEgoW2xpYnRvb2wtc3lzcm9vdF0sCisrWyAgLS13aXRoLWxpYnRvb2wtc3lzcm9vdFs9RElSXSBTZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMgd2l0aGluIERJUgorKyAgICAgICAgICAgICAgICAgICAgICAgIChvciB0aGUgY29tcGlsZXIncyBzeXNyb290IGlmIG5vdCBzcGVjaWZpZWQpLl0sCisrW10sIFt3aXRoX2xpYnRvb2xfc3lzcm9vdD1ub10pCisrCisrZG5sIGx0X3N5c3Jvb3Qgd2lsbCBhbHdheXMgYmUgcGFzc2VkIHVucXVvdGVkLiAgV2UgcXVvdGUgaXQgaGVyZQorK2RubCBpbiBjYXNlIHRoZSB1c2VyIHBhc3NlZCBhIGRpcmVjdG9yeSBuYW1lLgorK2x0X3N5c3Jvb3Q9CisrY2FzZSAke3dpdGhfbGlidG9vbF9zeXNyb290fSBpbiAjKAorKyB5ZXMpCisrICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKysgICAgIGx0X3N5c3Jvb3Q9YCRDQyAtLXByaW50LXN5c3Jvb3QgMj4vZGV2L251bGxgCisrICAgZmkKKysgICA7OyAjKAorKyAvKikKKysgICBsdF9zeXNyb290PWBlY2hvICIkd2l0aF9saWJ0b29sX3N5c3Jvb3QiIHwgc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKKysgICA7OyAjKAorKyBub3wnJykKKysgICA7OyAjKAorKyAqKQorKyAgIEFDX01TR19SRVNVTFQoWyR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9XSkKKysgICBBQ19NU0dfRVJST1IoW1RoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC5dKQorKyAgIDs7CisrZXNhYworKworKyBBQ19NU0dfUkVTVUxUKFske2x0X3N5c3Jvb3Q6LW5vfV0pCisrX0xUX0RFQ0woW10sIFtsdF9zeXNyb290XSwgWzBdLCBbVGhlIHJvb3Qgd2hlcmUgdG8gc2VhcmNoIGZvciBdZG5sCisrW2RlcGVuZGVudCBsaWJyYXJpZXMsIGFuZCBpbiB3aGljaCBvdXIgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQuXSldKQorKworICMgX0xUX0VOQUJMRV9MT0NLCisgIyAtLS0tLS0tLS0tLS0tLS0KKyBtNF9kZWZ1bihbX0xUX0VOQUJMRV9MT0NLXSwKK0BAIC0xMzIwLDE0ICsxMzY5LDQ3IEBAIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgorIF0pIyBfTFRfRU5BQkxFX0xPQ0sKKyAKKyAKKysjIF9MVF9QUk9HX0FSCisrIyAtLS0tLS0tLS0tLQorK200X2RlZnVuKFtfTFRfUFJPR19BUl0sCisrW0FDX0NIRUNLX1RPT0xTKEFSLCBbYXJdLCBmYWxzZSkKKys6ICR7QVI9YXJ9CisrOiAke0FSX0ZMQUdTPWNydX0KKytfTFRfREVDTChbXSwgW0FSXSwgWzFdLCBbVGhlIGFyY2hpdmVyXSkKKytfTFRfREVDTChbXSwgW0FSX0ZMQUdTXSwgWzFdLCBbRmxhZ3MgdG8gY3JlYXRlIGFuIGFyY2hpdmVdKQorKworK0FDX0NBQ0hFX0NIRUNLKFtmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydF0sIFtsdF9jdl9hcl9hdF9maWxlXSwKKysgIFtsdF9jdl9hcl9hdF9maWxlPW5vCisrICAgQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTV0sCisrICAgICBbZWNobyBjb25mdGVzdC4kYWNfb2JqZXh0ID4gY29uZnRlc3QubHN0CisrICAgICAgbHRfYXJfdHJ5PSckQVIgJEFSX0ZMQUdTIGxpYmNvbmZ0ZXN0LmEgQGNvbmZ0ZXN0LmxzdCA+JkFTX01FU1NBR0VfTE9HX0ZEJworKyAgICAgIEFDX1RSWV9FVkFMKFtsdF9hcl90cnldKQorKyAgICAgIGlmIHRlc3QgIiRhY19zdGF0dXMiIC1lcSAwOyB0aGVuCisrCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCisrCXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgbGliY29uZnRlc3QuYQorKwlBQ19UUllfRVZBTChbbHRfYXJfdHJ5XSkKKysJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KKysgICAgICAgICAgbHRfY3ZfYXJfYXRfZmlsZT1ACisrICAgICAgICBmaQorKyAgICAgIGZpCisrICAgICAgcm0gLWYgY29uZnRlc3QuKiBsaWJjb25mdGVzdC5hCisrICAgICBdKQorKyAgXSkKKysKKytpZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCisrICBhcmNoaXZlcl9saXN0X3NwZWM9CisrZWxzZQorKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCisrZmkKKytfTFRfREVDTChbXSwgW2FyY2hpdmVyX2xpc3Rfc3BlY10sIFsxXSwKKysgIFtIb3cgdG8gZmVlZCBhIGZpbGUgbGlzdGluZyB0byB0aGUgYXJjaGl2ZXJdKQorK10pIyBfTFRfUFJPR19BUgorKworKworICMgX0xUX0NNRF9PTERfQVJDSElWRQorICMgLS0tLS0tLS0tLS0tLS0tLS0tLQorIG00X2RlZnVuKFtfTFRfQ01EX09MRF9BUkNISVZFXSwKKy1bQUNfQ0hFQ0tfVE9PTChBUiwgYXIsIGZhbHNlKQorLXRlc3QgLXogIiRBUiIgJiYgQVI9YXIKKy10ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQorLV9MVF9ERUNMKFtdLCBbQVJdLCBbMV0sIFtUaGUgYXJjaGl2ZXJdKQorLV9MVF9ERUNMKFtdLCBbQVJfRkxBR1NdLCBbMV0pCisrW19MVF9QUk9HX0FSCisgCisgQUNfQ0hFQ0tfVE9PTChTVFJJUCwgc3RyaXAsIDopCisgdGVzdCAteiAiJFNUUklQIiAmJiBTVFJJUD06CitAQCAtMTYyMyw3ICsxNzA1LDcgQEAgZWxzZQorICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgorICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KKyAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCistWyNsaW5lIF9fb2xpbmVfXyAiY29uZmlndXJlIgorK1sjbGluZSAkTElORU5PICJjb25maWd1cmUiCisgI2luY2x1ZGUgImNvbmZkZWZzLmgiCisgCisgI2lmIEhBVkVfRExGQ05fSAorQEAgLTE2NjcsMTAgKzE3NDksMTAgQEAgZWxzZQorIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKKyAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCisgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCistdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKytpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisgI2VuZGlmCisgCistdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9CisraW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9CisgaW50IG1haW4gKCkKKyB7CisgICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKK0BAIC0yMjEwLDggKzIyOTIsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICBuZWVkX3ZlcnNpb249bm8KKyAgIG5lZWRfbGliX3ByZWZpeD1ubworIAorLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCistICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQorKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgorKyAgeWVzLCopCisrICAgICMgZ2NjCisgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCisgICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKyAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CitAQCAtMjI0NCwxMyArMjMyNyw3MSBAQCBtNF9pZihbJDFdLCBbXSxbCisgICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bWy5dXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisgICAgICAgOzsKKyAgICAgZXNhYworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworKyAgICA7OworKworKyAgKixjbCopCisrICAgICMgTmF0aXZlIE1TVkMKKysgICAgbGlibmFtZV9zcGVjPSckbmFtZScKKysgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bWy5dXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisrICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJworKworKyAgICBjYXNlICRidWlsZF9vcyBpbgorKyAgICBtaW5ndyopCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQorKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKKysgICAgICBJRlM9JzsnCisrICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgorKyAgICAgIGRvCisrICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCisrICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgorKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCisrICAgICAgZG9uZQorKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKKysgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFtbYS16QS1aXV1cXCk6fCAvXFwxfGcnIC1lICdzfF4gfHwnYAorKyAgICAgIDs7CisrICAgIGN5Z3dpbiopCisrICAgICAgIyBDb252ZXJ0IHRvIHVuaXggZm9ybSwgdGhlbiB0byBkb3MgZm9ybSwgdGhlbiBiYWNrIHRvIHVuaXggZm9ybQorKyAgICAgICMgYnV0IHRoaXMgdGltZSBkb3Mgc3R5bGUgKG5vIHNwYWNlcyEpIHNvIHRoYXQgdGhlIHVuaXggZm9ybSBsb29rcworKyAgICAgICMgbGlrZSAvY3lnZHJpdmUvYy9QUk9HUkF+MTovY3lnZHIuLi4KKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJExJQiJgCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLWRvcyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgMj4vZGV2L251bGxgCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKysgICAgICA7OworKyAgICAqKQorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJExJQiIKKysgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBbJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsXTsgdGhlbgorKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCisrICAgICAgZWxzZQorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorKyAgICAgIGZpCisrICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCisrICAgICAgIyBjb21tb24uIChlLmcuICJQcm9ncmFtIEZpbGVzIiAtPiAiUFJPR1JBfjEiKQorKyAgICAgIDs7CisrICAgIGVzYWMKKysKKysgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcworKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KKysgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgorKyAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KKysgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KKysgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCisrICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisrICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KKysgICAgICAgJFJNIFwkZGxwYXRoJworKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKKyAgICAgOzsKKyAKKyAgICopCisrICAgICMgQXNzdW1lIE1TVkMgd3JhcHBlcgorICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bWy5dXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworICAgICA7OworICAgZXNhYworLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKyAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgorICAgc2hsaWJwYXRoX3Zhcj1QQVRICisgICA7OworQEAgLTIzNDIsNyArMjQ4Myw3IEBAIGhhaWt1KikKKyAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAorICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L2Jlb3Mvc3lzdGVtL2xpYicKKysgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9zeXN0ZW0vbGliJworICAgaGFyZGNvZGVfaW50b19saWJzPXllcworICAgOzsKKyAKK0BAIC0yOTUwLDYgKzMwOTEsMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KKyBlc2FjCisgcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJworIGNhc2UgJGhvc3Rfb3MgaW4KKysgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKysgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCisrICAgICAgcmVsb2FkX2NtZHM9ZmFsc2UKKysgICAgZmkKKysgICAgOzsKKyAgIGRhcndpbiopCisgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJworQEAgLTMwMTYsNyArMzE2Miw4IEBAIG1pbmd3KiB8IHB3MzIqKQorICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJworICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKKyAgIGVsc2UKKy0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCisrICAgICMgS2VlcCB0aGlzIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gZnVuY193aW4zMl9saWJpZC4KKysgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJworICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCisgICBmaQorICAgOzsKK0BAIC0zMTY3LDYgKzMzMTQsMjEgQEAgdHBmKikKKyAgIDs7CisgZXNhYworIF0pCisrCisrZmlsZV9tYWdpY19nbG9iPQorK3dhbnRfbm9jYXNlZ2xvYj1ubworK2lmIHRlc3QgIiRidWlsZCIgPSAiJGhvc3QiOyB0aGVuCisrICBjYXNlICRob3N0X29zIGluCisrICBtaW5ndyogfCBwdzMyKikKKysgICAgaWYgKCBzaG9wdCB8IGdyZXAgbm9jYXNlZ2xvYiApID4vZGV2L251bGwgMj4mMTsgdGhlbgorKyAgICAgIHdhbnRfbm9jYXNlZ2xvYj15ZXMKKysgICAgZWxzZQorKyAgICAgIGZpbGVfbWFnaWNfZ2xvYj1gZWNobyBhQWJCY0NkRGVFZkZnR2hIaUlqSmtLbExtTW5Ob09wUHFRclJzU3RUdVV2VndXeFh5WXpaIHwgJFNFRCAtZSAicy9cKC4uXCkvc1wvW1tcMV1dXC9bW1wxXV1cL2c7L2ciYAorKyAgICBmaQorKyAgICA7OworKyAgZXNhYworK2ZpCisrCisgZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCisgZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCisgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCitAQCAtMzE3NCw3ICszMzM2LDExIEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgorIF9MVF9ERUNMKFtdLCBbZGVwbGlic19jaGVja19tZXRob2RdLCBbMV0sCisgICAgIFtNZXRob2QgdG8gY2hlY2sgd2hldGhlciBkZXBlbmRlbnQgbGlicmFyaWVzIGFyZSBzaGFyZWQgb2JqZWN0c10pCisgX0xUX0RFQ0woW10sIFtmaWxlX21hZ2ljX2NtZF0sIFsxXSwKKy0gICAgW0NvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPT0gImZpbGVfbWFnaWMiXSkKKysgICAgW0NvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyJdKQorK19MVF9ERUNMKFtdLCBbZmlsZV9tYWdpY19nbG9iXSwgWzFdLAorKyAgICBbSG93IHRvIGZpbmQgcG90ZW50aWFsIGZpbGVzIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyJdKQorK19MVF9ERUNMKFtdLCBbd2FudF9ub2Nhc2VnbG9iXSwgWzFdLAorKyAgICBbRmluZCBwb3RlbnRpYWwgZmlsZXMgdXNpbmcgbm9jYXNlZ2xvYiB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiXSkKKyBdKSMgX0xUX0NIRUNLX01BR0lDX01FVEhPRAorIAorIAorQEAgLTMyNzcsNiArMzQ0Myw2NyBAQCBkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CisgZG5sIEFDX0RFRlVOKFtBTV9QUk9HX05NXSwgW10pCisgZG5sIEFDX0RFRlVOKFtBQ19QUk9HX05NXSwgW10pCisgCisrIyBfTFRfQ0hFQ0tfU0hBUkVETElCX0ZST01fTElOS0xJQgorKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKysjIGhvdyB0byBkZXRlcm1pbmUgdGhlIG5hbWUgb2YgdGhlIHNoYXJlZCBsaWJyYXJ5CisrIyBhc3NvY2lhdGVkIHdpdGggYSBzcGVjaWZpYyBsaW5rIGxpYnJhcnkuCisrIyAgLS0gUE9SVE1FIGZpbGwgaW4gd2l0aCB0aGUgZHluYW1pYyBsaWJyYXJ5IGNoYXJhY3RlcmlzdGljcworK200X2RlZnVuKFtfTFRfQ0hFQ0tfU0hBUkVETElCX0ZST01fTElOS0xJQl0sCisrW200X3JlcXVpcmUoW19MVF9ERUNMX0VHUkVQXSkKKyttNF9yZXF1aXJlKFtfTFRfREVDTF9PQkpEVU1QXSkKKyttNF9yZXF1aXJlKFtfTFRfREVDTF9ETExUT09MXSkKKytBQ19DQUNIRV9DSEVDSyhbaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllc10sCisrbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQsCisrW2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJworKworK2Nhc2UgJGhvc3Rfb3MgaW4KKytjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisrICAjIHR3byBkaWZmZXJlbnQgc2hlbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gbHRtYWluLnNoCisrICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCisrICBjYXNlIGAkRExMVE9PTCAtLWhlbHAgMj4mMWAgaW4KKysgICotLWlkZW50aWZ5LXN0cmljdCopCisrICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgorKyAgICA7OworKyAgKikKKysgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrCisrICAgIDs7CisrICBlc2FjCisrICA7OworKyopCisrICAjIGZhbGxiYWNrOiBhc3N1bWUgbGlua2xpYiBJUyBzaGFyZWRsaWIKKysgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSIkRUNITyIKKysgIDs7CisrZXNhYworK10pCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisrdGVzdCAteiAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiAmJiBzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kRUNITworKworK19MVF9ERUNMKFtdLCBbc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWRdLCBbMV0sCisrICAgIFtDb21tYW5kIHRvIGFzc29jaWF0ZSBzaGFyZWQgYW5kIGxpbmsgbGlicmFyaWVzXSkKKytdKSMgX0xUX0NIRUNLX1NIQVJFRExJQl9GUk9NX0xJTktMSUIKKysKKysKKysjIF9MVF9QQVRIX01BTklGRVNUX1RPT0wKKysjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKysjIGxvY2F0ZSB0aGUgbWFuaWZlc3QgdG9vbAorK200X2RlZnVuKFtfTFRfUEFUSF9NQU5JRkVTVF9UT09MXSwKKytbQUNfQ0hFQ0tfVE9PTChNQU5JRkVTVF9UT09MLCBtdCwgOikKKyt0ZXN0IC16ICIkTUFOSUZFU1RfVE9PTCIgJiYgTUFOSUZFU1RfVE9PTD1tdAorK0FDX0NBQ0hFX0NIRUNLKFtpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2xdLCBbbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sXSwKKysgIFtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9bm8KKysgIGVjaG8gIiRhc19tZTokTElORU5POiAkTUFOSUZFU1RfVE9PTCAnLT8nIiA+JkFTX01FU1NBR0VfTE9HX0ZECisrICAkTUFOSUZFU1RfVE9PTCAnLT8nIDI+Y29uZnRlc3QuZXJyID4gY29uZnRlc3Qub3V0CisrICBjYXQgY29uZnRlc3QuZXJyID4mQVNfTUVTU0FHRV9MT0dfRkQKKysgIGlmICRHUkVQICdNYW5pZmVzdCBUb29sJyBjb25mdGVzdC5vdXQgPiAvZGV2L251bGw7IHRoZW4KKysgICAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPXllcworKyAgZmkKKysgIHJtIC1mIGNvbmZ0ZXN0Kl0pCisraWYgdGVzdCAieCRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiICE9IHh5ZXM7IHRoZW4KKysgIE1BTklGRVNUX1RPT0w9OgorK2ZpCisrX0xUX0RFQ0woW10sIFtNQU5JRkVTVF9UT09MXSwgWzFdLCBbTWFuaWZlc3QgdG9vbF0pZG5sCisrXSkjIF9MVF9QQVRIX01BTklGRVNUX1RPT0wKKysKKyAKKyAjIExUX0xJQl9NCisgIyAtLS0tLS0tLQorQEAgLTM0MDMsOCArMzYzMCw4IEBAIGVzYWMKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgorIAorICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcworLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbW14gXV0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKFtbXiBdXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCistbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW1teIF1dKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbW14gXV0qXCkgXChsaWJbW14gXV0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbW14gXV0qXCkgXChbW14gXV0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbW14gXV0qXClbWyBdXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwoW1teIF1dKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKytsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbW14gXV0qXClbWyBdXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwobGliW1teIF1dKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwoW1teIF1dKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKyAKKyAjIEhhbmRsZSBDUkxGIGluIG1pbmd3IHRvb2wgY2hhaW4KKyBvcHRfY3I9CitAQCAtMzQ0MCw2ICszNjY3LDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbworICAgZWxzZQorICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qW1sJIF1dXCgkc3ltY29kZSRzeW1jb2RlKlwpW1sJIF1dW1sJIF1dKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgorICAgZmkKKysgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9IiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIHwgc2VkICcvIF9fZ251X2x0by9kJyIKKyAKKyAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgorICAgcGlwZV93b3Jrcz1ubworQEAgLTM0NzMsNiArMzcwMSwxOCBAQCBfTFRfRU9GCisgICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKyAJaWYgJEdSRVAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCisgCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKKysvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KKysjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQorKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQorKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KKysjIGRlZmluZSBMVEAmdEBfRExTWU1fQ09OU1QKKysjZWxpZiBkZWZpbmVkKF9fb3NmX18pCisrLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCisrIyBkZWZpbmUgTFRAJnRAX0RMU1lNX0NPTlNUCisrI2Vsc2UKKysjIGRlZmluZSBMVEAmdEBfRExTWU1fQ09OU1QgY29uc3QKKysjZW5kaWYKKysKKyAjaWZkZWYgX19jcGx1c3BsdXMKKyBleHRlcm4gIkMiIHsKKyAjZW5kaWYKK0BAIC0zNDg0LDcgKzM3MjQsNyBAQCBfTFRfRU9GCisgCSAgY2F0IDw8X0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0CisgCisgLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLworLWNvbnN0IHN0cnVjdCB7CisrTFRAJnRAX0RMU1lNX0NPTlNUIHN0cnVjdCB7CisgICBjb25zdCBjaGFyICpuYW1lOworICAgdm9pZCAgICAgICAqYWRkcmVzczsKKyB9CitAQCAtMzUxMCwxNSArMzc1MCwxNSBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgeworIF9MVF9FT0YKKyAJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgorIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dAorLQkgIGx0X3NhdmVfTElCUz0iJExJQlMiCistCSAgbHRfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisrCSAgbHRfZ2xvYnN5bV9zYXZlX0xJQlM9JExJQlMKKysJICBsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKKyAJICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgorIAkgIENGTEFHUz0iJENGTEFHUyRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnLCAkMSkiCisgCSAgaWYgQUNfVFJZX0VWQUwoYWNfbGluaykgJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgorIAkgICAgcGlwZV93b3Jrcz15ZXMKKyAJICBmaQorLQkgIExJQlM9IiRsdF9zYXZlX0xJQlMiCistCSAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCisrCSAgTElCUz0kbHRfZ2xvYnN5bV9zYXZlX0xJQlMKKysJICBDRkxBR1M9JGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1MKKyAJZWxzZQorIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAJZmkKK0BAIC0zNTUxLDYgKzM3OTEsMTMgQEAgZWxzZQorICAgQUNfTVNHX1JFU1VMVChvaykKKyBmaQorIAorKyMgUmVzcG9uc2UgZmlsZSBzdXBwb3J0LgorK2lmIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIk1TIGR1bXBiaW4iOyB0aGVuCisrICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKKytlbGlmICROTSAtLWhlbHAgMj4vZGV2L251bGwgfCBncmVwICdbW0BdXUZJTEUnID4vZGV2L251bGw7IHRoZW4KKysgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJworK2ZpCisrCisgX0xUX0RFQ0woW2dsb2JhbF9zeW1ib2xfcGlwZV0sIFtsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlXSwgWzFdLAorICAgICBbVGFrZSB0aGUgb3V0cHV0IG9mIG5tIGFuZCBwcm9kdWNlIGEgbGlzdGluZyBvZiByYXcgc3ltYm9scyBhbmQgQyBuYW1lc10pCisgX0xUX0RFQ0woW2dsb2JhbF9zeW1ib2xfdG9fY2RlY2xdLCBbbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2xdLCBbMV0sCitAQCAtMzU2MSw2ICszODA4LDggQEAgX0xUX0RFQ0woW2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NdLAorIF9MVF9ERUNMKFtnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXhdLAorICAgICBbbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeF0sIFsxXSwKKyAgICAgW1RyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkXSkKKytfTFRfREVDTChbXSwgW25tX2ZpbGVfbGlzdF9zcGVjXSwgWzFdLAorKyAgICBbU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzIGZvciAkTk1dKQorIF0pICMgX0xUX0NNRF9HTE9CQUxfU1lNQk9MUworIAorIAorQEAgLTM1NzIsNyArMzgyMSw2IEBAIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPQorIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0KKyBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9CisgCistQUNfTVNHX0NIRUNLSU5HKFtmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQ10pCisgbTRfaWYoWyQxXSwgW0NYWF0sIFsKKyAgICMgQysrIHNwZWNpZmljIGNhc2VzIGZvciBwaWMsIHN0YXRpYywgd2wsIGV0Yy4KKyAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCitAQCAtMzY3OCw2ICszOTI2LDEyIEBAIG00X2lmKFskMV0sIFtDWFhdLCBbCisgCSAgOzsKKyAJZXNhYworIAk7OworKyAgICAgIG1pbmd3KiB8IGN5Z3dpbiogfCBvczIqIHwgcHczMiogfCBjZWdjYyopCisrCSMgVGhpcyBoYWNrIGlzIHNvIHRoYXQgdGhlIHNvdXJjZSBmaWxlIGNhbiB0ZWxsIHdoZXRoZXIgaXQgaXMgYmVpbmcKKysJIyBidWlsdCBmb3IgaW5jbHVzaW9uIGluIGEgZGxsIChhbmQgc2hvdWxkIGV4cG9ydCBzeW1ib2xzIGZvciBleGFtcGxlKS4KKysJbTRfaWYoWyQxXSwgW0dDSl0sIFtdLAorKwkgIFtfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1ERExMX0VYUE9SVCddKQorKwk7OworICAgICAgIGRndXgqKQorIAljYXNlICRjY19iYXNlbmFtZSBpbgorIAkgIGVjKysqKQorQEAgLTM4MzAsNyArNDA4NCw3IEBAIG00X2lmKFskMV0sIFtDWFhdLCBbCisgCTs7CisgICAgICAgc29sYXJpcyopCisgCWNhc2UgJGNjX2Jhc2VuYW1lIGluCistCSAgQ0MqKQorKwkgIENDKiB8IHN1bkNDKikKKyAJICAgICMgU3VuIEMrKyA0LjIsIDUueCBhbmQgQ2VudGVybGluZSBDKysKKyAJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCisgCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworQEAgLTQwNTMsNiArNDMwNywxMiBAQCBtNF9pZihbJDFdLCBbQ1hYXSwgWworIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy0tc2hhcmVkJworIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy0tc3RhdGljJworIAk7OworKyAgICAgIG5hZ2ZvciopCisrCSMgTkFHIEZvcnRyYW4gY29tcGlsZXIKKysJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwtV2wsLCcKKysJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctUElDJworKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworKwk7OworICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKKyAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCisgCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCitAQCAtNDExNSw3ICs0Mzc1LDcgQEAgbTRfaWYoWyQxXSwgW0NYWF0sIFsKKyAgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LUElDJworICAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCisgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKy0gICAgICBmNzcqIHwgZjkwKiB8IGY5NSopCisrICAgICAgZjc3KiB8IGY5MCogfCBmOTUqIHwgc3VuZjc3KiB8IHN1bmY5MCogfCBzdW5mOTUqKQorIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVFvcHRpb24gbGQgJzs7CisgICAgICAgKikKKyAJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnOzsKK0BAIC00MTcyLDkgKzQ0MzIsMTEgQEAgY2FzZSAkaG9zdF9vcyBpbgorICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9IiRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSlAJnRAbTRfaWYoWyQxXSxbXSxbIC1EUElDXSxbbTRfaWYoWyQxXSxbQ1hYXSxbIC1EUElDXSxbXSldKSIKKyAgICAgOzsKKyBlc2FjCistQUNfTVNHX1JFU1VMVChbJF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKV0pCistX0xUX1RBR0RFQ0woW3dsXSwgW2x0X3Byb2dfY29tcGlsZXJfd2xdLCBbMV0sCistCVtIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyXSkKKysKKytBQ19DQUNIRV9DSEVDSyhbZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUNdLAorKyAgW19MVF9UQUdWQVIobHRfY3ZfcHJvZ19jb21waWxlcl9waWMsICQxKV0sCisrICBbX0xUX1RBR1ZBUihsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSldKQorK19MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0kX0xUX1RBR1ZBUihsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYywgJDEpCisgCisgIworICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KK0BAIC00MTkzLDYgKzQ0NTUsOCBAQCBmaQorIF9MVF9UQUdERUNMKFtwaWNfZmxhZ10sIFtsdF9wcm9nX2NvbXBpbGVyX3BpY10sIFsxXSwKKyAJW0FkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0c10pCisgCisrX0xUX1RBR0RFQ0woW3dsXSwgW2x0X3Byb2dfY29tcGlsZXJfd2xdLCBbMV0sCisrCVtIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyXSkKKyAjCisgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgorICMKK0BAIC00MjEzLDYgKzQ0NzcsNyBAQCBfTFRfVEFHREVDTChbbGlua19zdGF0aWNfZmxhZ10sIFtsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY10sIFsxXSwKKyBtNF9kZWZ1bihbX0xUX0xJTktFUl9TSExJQlNdLAorIFtBQ19SRVFVSVJFKFtMVF9QQVRIX0xEXSlkbmwKKyBBQ19SRVFVSVJFKFtMVF9QQVRIX05NXSlkbmwKKyttNF9yZXF1aXJlKFtfTFRfUEFUSF9NQU5JRkVTVF9UT09MXSlkbmwKKyBtNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSlkbmwKKyBtNF9yZXF1aXJlKFtfTFRfREVDTF9FR1JFUF0pZG5sCisgbTRfcmVxdWlyZShbX0xUX0RFQ0xfU0VEXSlkbmwKK0BAIC00MjIxLDYgKzQ0ODYsNyBAQCBtNF9yZXF1aXJlKFtfTFRfVEFHX0NPTVBJTEVSXSlkbmwKKyBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdGhlICRjb21waWxlciBsaW5rZXIgKCRMRCkgc3VwcG9ydHMgc2hhcmVkIGxpYnJhcmllc10pCisgbTRfaWYoWyQxXSwgW0NYWF0sIFsKKyAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgJ1wnJ3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrICBfTFRfVEFHVkFSKGV4Y2x1ZGVfZXhwc3ltcywgJDEpPVsnX0dMT0JBTF9PRkZTRVRfVEFCTEVffF9HTE9CQUxfX0ZbSURdXy4qJ10KKyAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgIGFpeFtbNC05XV0qKQorICAgICAjIElmIHdlJ3JlIHVzaW5nIEdOVSBubSwgdGhlbiB3ZSBkb24ndCB3YW50IHRoZSAiLUMiIG9wdGlvbi4KK0BAIC00MjM1LDE1ICs0NTAxLDIwIEBAIG00X2lmKFskMV0sIFtDWFhdLCBbCisgICAgIDs7CisgICBwdzMyKikKKyAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9IiRsdGRsbF9jbWRzIgorLSAgOzsKKysgICAgOzsKKyAgIGN5Z3dpbiogfCBtaW5ndyogfCBjZWdjYyopCistICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW1tCQ0RHUlNdXVtbIF1dL3MvLipbWyBdXVwoW1teIF1dKlwpL1wxIERBVEEvOy9eLipbWyBdXV9fbm1fXy9zL14uKltbIF1dX19ubV9fXChbW14gXV0qXClbWyBdXVtbXiBdXSovXDEgREFUQS87L15JW1sgXV0vZDsvXltbQUlUV11dW1sgXV0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKy0gIDs7CisrICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisrICAgIGNsKikgOzsKKysgICAgKikKKysgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltbQkNER1JTXV1bWyBdXS9zLy4qW1sgXV1cKFtbXiBdXSpcKS9cMSBEQVRBLztzL14uKltbIF1dX19ubV9fXChbW14gXV0qXClbWyBdXVtbXiBdXSovXDEgREFUQS87L15JW1sgXV0vZDsvXltbQUlUV11dW1sgXV0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysgICAgICBfTFRfVEFHVkFSKGV4Y2x1ZGVfZXhwc3ltcywgJDEpPVsnW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJ10KKysgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisgICAqKQorICAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEICdcJydzLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworLSAgOzsKKysgICAgOzsKKyAgIGVzYWMKKy0gIF9MVF9UQUdWQVIoZXhjbHVkZV9leHBzeW1zLCAkMSk9WydfR0xPQkFMX09GRlNFVF9UQUJMRV98X0dMT0JBTF9fRltJRF1fLionXQorIF0sIFsKKyAgIHJ1bnBhdGhfdmFyPQorICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPQorQEAgLTQ0MTEsNyArNDY4Miw4IEBAIF9MVF9FT0YKKyAgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKKyAgICAgICBfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPW5vCisgICAgICAgX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCistICAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bW0JDREdSU11dW1sgXV0vcy8uKltbIF1dXChbW14gXV0qXCkvXDEgREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bW0FJVFddXVtbIF1dL3MvLipbWyBdXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW1tCQ0RHUlNdXVtbIF1dL3MvLipbWyBdXVwoW1teIF1dKlwpL1wxIERBVEEvO3MvXi4qW1sgXV1fX25tX19cKFtbXiBdXSpcKVtbIF1dW1teIF1dKi9cMSBEQVRBLzsvXklbWyBdXS9kOy9eW1tBSVRXXV1bWyBdXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgICAgIF9MVF9UQUdWQVIoZXhjbHVkZV9leHBzeW1zLCAkMSk9WydbX10rR0xPQkFMX09GRlNFVF9UQUJMRV98W19dK0dMT0JBTF9fW0ZJRF1fLip8W19dK2hlYWRfW0EtWmEtejAtOV9dK19kbGx8W0EtWmEtejAtOV9dK19kbGxfaW5hbWUnXQorIAorICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworQEAgLTQ1MTAsMTIgKzQ3ODIsMTIgQEAgX0xUX0VPRgorIAkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKKyAJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0KKyAJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQsICQxKT0nLXJwYXRoICRsaWJkaXInCistCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJworKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCisgCSAgaWYgdGVzdCAieCRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciID0geHllczsgdGhlbgorIAkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisgCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAJICAgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CistCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworKwkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisgCSAgZmkKKyAJICA7OworIAllc2FjCitAQCAtNDUyOSw4ICs0ODAxLDggQEAgX0xUX0VPRgorIAlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJworIAl3bGFyYz0KKyAgICAgICBlbHNlCistCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBmaQorICAgICAgIDs7CisgCitAQCAtNDU0OCw4ICs0ODIwLDggQEAgX0xUX0VPRgorIAorIF9MVF9FT0YKKyAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKy0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGVsc2UKKyAJX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworICAgICAgIGZpCitAQCAtNDU5NSw4ICs0ODY3LDggQEAgX0xUX0VPRgorIAorICAgICAqKQorICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKy0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGVsc2UKKyAJX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworICAgICAgIGZpCitAQCAtNDcyNiw3ICs0OTk4LDcgQEAgX0xUX0VPRgorIAlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9Jy1iZXJvaycKKyAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgorICAgICAgICAgIyBlbXB0eSBleGVjdXRhYmxlLgorLSAgICAgICAgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgKKysgICAgICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYKFskMV0pCisgICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgorICAgICAgIGVsc2UKK0BAIC00NzM3LDcgKzUwMDksNyBAQCBfTFRfRU9GCisgCWVsc2UKKyAJICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgorIAkgIyBlbXB0eSBleGVjdXRhYmxlLgorLQkgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgKKysJIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYKFskMV0pCisgCSBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAorIAkgICMgLWJlcm9rIHdpbGwgbGluayB3aXRob3V0IGVycm9yLCBidXQgbWF5IHByb2R1Y2UgYSBicm9rZW4gbGlicmFyeS4KK0BAIC00NzgxLDIwICs1MDUzLDYzIEBAIF9MVF9FT0YKKyAgICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgorICAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKKyAgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgorLSAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScgJworLSAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAorLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCistICAgICAgbGliZXh0PWxpYgorLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorLSAgICAgIHNocmV4dF9jbWRzPSIuZGxsIgorLSAgICAgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKy0gICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKKy0gICAgICAjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgorLSAgICAgIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgJDEpPSd0cnVlJworLSAgICAgICMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCistICAgICAgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKKy0gICAgICBfTFRfVEFHVkFSKGZpeF9zcmNmaWxlX3BhdGgsICQxKT0nYGN5Z3BhdGggLXcgIiRzcmNmaWxlImAnCistICAgICAgX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCisrICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKysgICAgICBjbCopCisrCSMgTmF0aXZlIE1TVkMKKysJX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyAnCisrCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAorKwlfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPXllcworKwlfTFRfVEFHVkFSKGZpbGVfbGlzdF9zcGVjLCAkMSk9J0AnCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisrCWxpYmV4dD1saWIKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisrCXNocmV4dF9jbWRzPSIuZGxsIgorKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisrCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JworKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKysJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisrCSAgZWxzZQorKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICBmaX4KKysJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+CisrCSAgbGlua25hbWVzPScKKysJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgorKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgJDEpPSd0cnVlJworKwlfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKKysJX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bW0JDREdSU11dW1sgXV0vcy8uKltbIF1dXChbW14gXV0qXCkvXDEsREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bW0FJVFddXVtbIF1dL3MvLipbWyBdXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKwkjIERvbid0IHVzZSByYW5saWIKKysJX0xUX1RBR1ZBUihvbGRfcG9zdGluc3RhbGxfY21kcywgJDEpPSdjaG1vZCA2NDQgJG9sZGxpYicKKysJX0xUX1RBR1ZBUihwb3N0bGlua19jbWRzLCAkMSk9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KKysJICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgorKwkgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KKysJICAgICouZXhlfCouRVhFKSA7OworKwkgICAgKikKKysJICAgICAgbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgorKwkgICAgICBsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgorKwkgICAgICA7OworKwkgIGVzYWN+CisrCSAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KKysJICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7CisrCSAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKKysJICBmaScKKysJOzsKKysgICAgICAqKQorKwkjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKKysJX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyAnCisrCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorKwlsaWJleHQ9bGliCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorKwlzaHJleHRfY21kcz0iLmRsbCIKKysJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKKysJIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KKysJX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCAkMSk9J3RydWUnCisrCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCisrCV9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCisrCV9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcworKwk7OworKyAgICAgIGVzYWMKKyAgICAgICA7OworIAorICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQorQEAgLTQ4MjgsNyArNTE0Myw3IEBAIF9MVF9FT0YKKyAKKyAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgorICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCistICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctUiRsaWJkaXInCisgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKKyAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubworQEAgLTQ4MzYsNyArNTE1MSw3IEBAIF9MVF9FT0YKKyAKKyAgICAgaHB1eDkqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCistCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisrCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgIGVsc2UKKyAJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICAgZmkKK0BAIC00ODUyLDcgKzUxNjcsNyBAQCBfTFRfRU9GCisgCisgICAgIGhwdXgxMCopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCistCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgIGVsc2UKKyAJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKKyAgICAgICBmaQorQEAgLTQ4NzYsMTAgKzUxOTEsMTAgQEAgX0xUX0VPRgorIAkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCWlhNjQqKQorLQkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAkqKQorLQkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJZXNhYworICAgICAgIGVsc2UKK0BAIC00OTI2LDE2ICs1MjQxLDMxIEBAIF9MVF9FT0YKKyAKKyAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKysJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAkjIFRyeSB0byB1c2UgdGhlIC1leHBvcnRlZF9zeW1ib2wgbGQgb3B0aW9uLCBpZiBpdCBkb2VzIG5vdAorIAkjIHdvcmssIGFzc3VtZSB0aGF0IC1leHBvcnRzX2ZpbGUgZG9lcyBub3Qgd29yayBlaXRoZXIgYW5kCisgCSMgaW1wbGljaXRseSBleHBvcnQgYWxsIHN5bWJvbHMuCistICAgICAgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorLSAgICAgICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgorLSAgICAgICAgQUNfTElOS19JRkVMU0UoaW50IGZvbyh2b2lkKSB7fSwKKy0gICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKy0gICAgICAgICkKKy0gICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCisrCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCisrCUFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sXSwKKysJICBbbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2xdLAorKwkgIFtzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorKwkgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCisrCSAgIEFDX0xJTktfSUZFTFNFKAorKwkgICAgIFtBQ19MQU5HX1NPVVJDRSgKKysJICAgICAgICBbQUNfTEFOR19DQVNFKFtDXSwgW1tpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9XV0sCisrCQkJICAgICAgW0MrK10sIFtbaW50IGZvbyAodm9pZCkgeyByZXR1cm4gMDsgfV1dLAorKwkJCSAgICAgIFtGb3J0cmFuIDc3XSwgW1sKKysgICAgICBzdWJyb3V0aW5lIGZvbworKyAgICAgIGVuZF1dLAorKwkJCSAgICAgIFtGb3J0cmFuXSwgW1sKKysgICAgICBzdWJyb3V0aW5lIGZvbworKyAgICAgIGVuZF1dKV0pXSwKKysJICAgICAgW2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPXllc10sCisrCSAgICAgIFtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD1ub10pCisrICAgICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIl0pCisrCWlmIHRlc3QgIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPSB5ZXM7IHRoZW4KKysgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWZpCisgICAgICAgZWxzZQorIAlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJworQEAgLTUwMjAsNyArNTM1MCw3IEBAIF9MVF9FT0YKKyAgICAgb3NmNCogfCBvc2Y1KikJIyBhcyBvc2YzKiB3aXRoIHRoZSBhZGRpdGlvbiBvZiAtbXN5bSBmbGFnCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKKy0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAlfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworICAgICAgIGVsc2UKKyAJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJworQEAgLTUwMzksOSArNTM2OSw5IEBAIF9MVF9FT0YKKyAgICAgICBfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAteiBkZWZzJworICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgCXdsYXJjPScke3dsfScKKy0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KKy0JICAkQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworKwkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworICAgICAgIGVsc2UKKyAJY2FzZSBgJENDIC1WIDI+JjFgIGluCisgCSoiQ29tcGlsZXJzIDUuMCIqKQorQEAgLTUzMTMsOCArNTY0Myw2IEBAIF9MVF9UQUdERUNMKFtdLCBbaW5oZXJpdF9ycGF0aF0sIFswXSwKKyAgICAgdG8gcnVudGltZSBwYXRoIGxpc3RdKQorIF9MVF9UQUdERUNMKFtdLCBbbGlua19hbGxfZGVwbGlic10sIFswXSwKKyAgICAgW1doZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllc10pCistX0xUX1RBR0RFQ0woW10sIFtmaXhfc3JjZmlsZV9wYXRoXSwgWzFdLAorLSAgICBbRml4IHRoZSBzaGVsbCB2YXJpYWJsZSAkc3JjZmlsZSBmb3IgdGhlIGNvbXBpbGVyXSkKKyBfTFRfVEFHREVDTChbXSwgW2Fsd2F5c19leHBvcnRfc3ltYm9sc10sIFswXSwKKyAgICAgW1NldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZF0pCisgX0xUX1RBR0RFQ0woW10sIFtleHBvcnRfc3ltYm9sc19jbWRzXSwgWzJdLAorQEAgLTUzMjUsNiArNTY1Myw4IEBAIF9MVF9UQUdERUNMKFtdLCBbaW5jbHVkZV9leHBzeW1zXSwgWzFdLAorICAgICBbU3ltYm9scyB0aGF0IG11c3QgYWx3YXlzIGJlIGV4cG9ydGVkXSkKKyBfTFRfVEFHREVDTChbXSwgW3ByZWxpbmtfY21kc10sIFsyXSwKKyAgICAgW0NvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzXSkKKytfTFRfVEFHREVDTChbXSwgW3Bvc3RsaW5rX2NtZHNdLCBbMl0sCisrICAgIFtDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGZpbmlzaGluZyBsaW5raW5nIHByb2dyYW1zXSkKKyBfTFRfVEFHREVDTChbXSwgW2ZpbGVfbGlzdF9zcGVjXSwgWzFdLAorICAgICBbU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzXSkKKyBkbmwgRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKK0BAIC01NDI2LDYgKzU3NTYsNyBAQCBDQz0iJGx0X3NhdmVfQ0MiCisgbTRfZGVmdW4oW19MVF9MQU5HX0NYWF9DT05GSUddLAorIFttNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSlkbmwKKyBtNF9yZXF1aXJlKFtfTFRfREVDTF9FR1JFUF0pZG5sCisrbTRfcmVxdWlyZShbX0xUX1BBVEhfTUFOSUZFU1RfVE9PTF0pZG5sCisgaWYgdGVzdCAtbiAiJENYWCIgJiYgKCB0ZXN0ICJYJENYWCIgIT0gIlhubyIgJiYKKyAgICAgKCAodGVzdCAiWCRDWFgiID0gIlhnKysiICYmIGBnKysgLXYgPi9kZXYvbnVsbCAyPiYxYCApIHx8CisgICAgICh0ZXN0ICJYJENYWCIgIT0gIlhnKysiKSkpIDsgdGhlbgorQEAgLTU0ODcsNiArNTgxOCw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCisgCisgICAjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgorICAgbHRfc2F2ZV9DQz0kQ0MKKysgIGx0X3NhdmVfQ0ZMQUdTPSRDRkxBR1MKKyAgIGx0X3NhdmVfTEQ9JExECisgICBsdF9zYXZlX0dDQz0kR0NDCisgICBHQ0M9JEdYWAorQEAgLTU1MDQsNiArNTgzNiw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCisgICBmaQorICAgdGVzdCAteiAiJHtMRENYWCtzZXR9IiB8fCBMRD0kTERDWFgKKyAgIENDPSR7Q1hYLSJjKysifQorKyAgQ0ZMQUdTPSRDWFhGTEFHUworICAgY29tcGlsZXI9JENDCisgICBfTFRfVEFHVkFSKGNvbXBpbGVyLCAkMSk9JENDCisgICBfTFRfQ0NfQkFTRU5BTUUoWyRjb21waWxlcl0pCitAQCAtNTY2Nyw3ICs2MDAwLDcgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KKyAgICAgICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSctYmVyb2snCisgICAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbiBlbXB0eQorICAgICAgICAgICAjIGV4ZWN1dGFibGUuCistICAgICAgICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCisrICAgICAgICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYKFskMV0pCisgICAgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorIAorICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKK0BAIC01Njc5LDcgKzYwMTIsNyBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgorICAgICAgICAgICBlbHNlCisgCSAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KKyAJICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KKy0JICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCisrCSAgICBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWChbJDFdKQorIAkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgCSAgICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAorIAkgICAgIyAtYmVyb2sgd2lsbCBsaW5rIHdpdGhvdXQgZXJyb3IsIGJ1dCBtYXkgcHJvZHVjZSBhIGJyb2tlbiBsaWJyYXJ5LgorQEAgLTU3MjEsMjkgKzYwNTQsNzUgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KKyAgICAgICAgIDs7CisgCisgICAgICAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorLSAgICAgICAgIyBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKSBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywKKy0gICAgICAgICMgYXMgdGhlcmUgaXMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCistICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLUwkbGliZGlyJworLSAgICAgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tLWV4cG9ydC1hbGwtc3ltYm9scycKKy0gICAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAorLSAgICAgICAgX0xUX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKT1ubworLSAgICAgICAgX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCistCistICAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCistICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKKy0gICAgICAgICAgIyBJZiB0aGUgZXhwb3J0LXN5bWJvbHMgZmlsZSBhbHJlYWR5IGlzIGEgLmRlZiBmaWxlICgxc3QgbGluZQorLSAgICAgICAgICAjIGlzIEVYUE9SVFMpLCB1c2UgaXQgYXMgaXM7IG90aGVyd2lzZSwgcHJlcGVuZC4uLgorLSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKy0JICAgIGNwICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKy0gICAgICAgICAgZWxzZQorLQkgICAgZWNobyBFWFBPUlRTID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CistCSAgICBjYXQgJGV4cG9ydF9zeW1ib2xzID4+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworLSAgICAgICAgICBmaX4KKy0gICAgICAgICAgJENDIC1zaGFyZWQgLW5vc3RkbGliICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworLSAgICAgICAgZWxzZQorLSAgICAgICAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCistICAgICAgICBmaQorLSAgICAgICAgOzsKKysJY2FzZSAkR1hYLCRjY19iYXNlbmFtZSBpbgorKwksY2wqIHwgbm8sY2wqKQorKwkgICMgTmF0aXZlIE1TVkMKKysJICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCisrCSAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKysJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nICcKKysJICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKKysJICBfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPXllcworKwkgIF9MVF9UQUdWQVIoZmlsZV9saXN0X3NwZWMsICQxKT0nQCcKKysJICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorKwkgIGxpYmV4dD1saWIKKysJICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKysJICBzaHJleHRfY21kcz0iLmRsbCIKKysJICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisrCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCisrCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCisrCSAgICAgICRTRUQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworKwkgICAgZWxzZQorKwkgICAgICAkU0VEIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICAgIGZpfgorKwkgICAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgorKwkgICAgbGlua25hbWVzPScKKysJICAjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCisrCSAgIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICQxKT0ndHJ1ZScKKysJICBfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKKysJICAjIERvbid0IHVzZSByYW5saWIKKysJICBfTFRfVEFHVkFSKG9sZF9wb3N0aW5zdGFsbF9jbWRzLCAkMSk9J2NobW9kIDY0NCAkb2xkbGliJworKwkgIF9MVF9UQUdWQVIocG9zdGxpbmtfY21kcywgJDEpPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+CisrCSAgICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgorKwkgICAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgorKwkgICAgICAqLmV4ZXwqLkVYRSkgOzsKKysJICAgICAgKikKKysJCWx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKKysJCWx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCisrCQk7OworKwkgICAgZXNhY34KKysJICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkbHRfb3V0cHV0ZmlsZSJ+CisrCSAgICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgorKwkgICAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOworKwkgICAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKKysJICAgIGZpJworKwkgIDs7CisrCSopCisrCSAgIyBnKysKKysJICAjIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLAorKwkgICMgYXMgdGhlcmUgaXMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCisrCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1MJGxpYmRpcicKKysJICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tZXhwb3J0LWFsbC1zeW1ib2xzJworKwkgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAorKwkgIF9MVF9UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9bm8KKysJICBfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKKysKKysJICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCisrCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCisrCSAgICAjIElmIHRoZSBleHBvcnQtc3ltYm9scyBmaWxlIGFscmVhZHkgaXMgYSAuZGVmIGZpbGUgKDFzdCBsaW5lCisrCSAgICAjIGlzIEVYUE9SVFMpLCB1c2UgaXQgYXMgaXM7IG90aGVyd2lzZSwgcHJlcGVuZC4uLgorKwkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCisrCSAgICAgIGNwICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKysJICAgIGVsc2UKKysJICAgICAgZWNobyBFWFBPUlRTID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CisrCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgPj4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CisrCSAgICBmaX4KKysJICAgICRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKKysJICBlbHNlCisrCSAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisrCSAgZmkKKysJICA7OworKwllc2FjCisrCTs7CisgICAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKKyAgICAgICAgIF9MVF9EQVJXSU5fTElOS0VSX0ZFQVRVUkVTKCQxKQorIAk7OworQEAgLTU4MTgsNyArNjE5Nyw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCisgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgKikKKyAgICAgICAgICAgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgorLSAgICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisrICAgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHBpY19mbGFnICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0CisgICAgICAgICAgICAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCitAQCAtNTg4OSwxMCArNjI2OCwxMCBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgorIAkgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgICAgICAgICAgIDs7CisgCSAgICAgICAgICBpYTY0KikKKy0JICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworKwkgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworIAkgICAgICAgICAgICA7OworIAkgICAgICAgICAgKikKKy0JICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCisrCSAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKKyAJICAgICAgICAgICAgOzsKKyAJICAgICAgICBlc2FjCisgCSAgICAgIGZpCitAQCAtNTkzMyw5ICs2MzEyLDkgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KKyAgICAgICAgICAgKikKKyAJICAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCisgCSAgICAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorLQkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKysJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAkgICAgICBlbHNlCistCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAtbyAkbGliJworKwkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgIC1vICRsaWInCisgCSAgICAgIGZpCisgCSAgICBmaQorIAkgICAgX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9eWVzCitAQCAtNjAwNSwyMCArNjM4NCwyMCBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgorIAkgICAgICBfTFRfVEFHVkFSKHByZWxpbmtfY21kcywgJDEpPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgorIAkJcm0gLXJmICR0cGxkaXJ+CisgCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRvYmpzICRsaWJvYmpzICRjb21waWxlX2RlcGxpYnN+CistCQljb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgJE5MMlNQYCInCisrCQljb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGAiJworIAkgICAgICBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KKyAJCXJtIC1yZiAkdHBsZGlyfgorIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkb2xkb2JqcyRvbGRfZGVwbGlic34KKy0JCSRBUiAkQVJfRkxBR1MgJG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGB+CisrCQkkQVIgJEFSX0ZMQUdTICRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYH4KKyAJCSRSQU5MSUIgJG9sZGxpYicKKyAJICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KKyAJCXJtIC1yZiAkdHBsZGlyfgorIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJGNvbnZlbmllbmNlICRwb3N0ZGVwX29iamVjdHN+CistCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAtbyAkbGliJworKwkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIC1vICRsaWInCisgCSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgorIAkJcm0gLXJmICR0cGxkaXJ+CisgCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkY29udmVuaWVuY2UgJHBvc3RkZXBfb2JqZWN0c34KKy0JCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgCSAgICAgIDs7CisgCSAgICAqKSAjIFZlcnNpb24gNiBhbmQgYWJvdmUgdXNlIHdlYWsgc3ltYm9scworIAkgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgLW8gJGxpYicKK0BAIC02MjEzLDcgKzY1OTIsNyBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgorIAkgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAkJICA7OworIAkgICAgICAgICopCistCSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKysJICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJCSAgOzsKKyAJICAgICAgZXNhYworIAorQEAgLTYyNTksNyArNjYzOCw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCisgCisgICAgICAgc29sYXJpcyopCisgICAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorLSAgICAgICAgICBDQyopCisrICAgICAgICAgIENDKiB8IHN1bkNDKikKKyAJICAgICMgU3VuIEMrKyA0LjIsIDUueCBhbmQgQ2VudGVybGluZSBDKysKKyAgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCQxKT15ZXMKKyAJICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nIC16ZGVmcycKK0BAIC02MzAwLDkgKzY2NzksOSBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgorIAkgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCisgCSAgICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LXogJHt3bH1kZWZzJworIAkgICAgICBpZiAkQ0MgLS12ZXJzaW9uIHwgJEdSRVAgLXYgJ14yXC43JyA+IC9kZXYvbnVsbDsgdGhlbgorLQkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkTERGTEFHUyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCAkd2wkc29uYW1lIC1vICRsaWInCisrCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAkTERGTEFHUyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCAkd2wkc29uYW1lIC1vICRsaWInCisgCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KKy0JCSAgJENDIC1zaGFyZWQgLW5vc3RkbGliICR7d2x9LU0gJHdsJGxpYi5leHAgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworKwkJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICR7d2x9LU0gJHdsJGxpYi5leHAgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworIAorIAkgICAgICAgICMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKKyAJICAgICAgICAjIHdoYXQgImhpZGRlbiIgbGlicmFyaWVzLCBvYmplY3QgZmlsZXMgYW5kIGZsYWdzIGFyZSB1c2VkIHdoZW4KK0BAIC02NDMxLDYgKzY4MTAsNyBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgorICAgZmkgIyB0ZXN0IC1uICIkY29tcGlsZXIiCisgCisgICBDQz0kbHRfc2F2ZV9DQworKyAgQ0ZMQUdTPSRsdF9zYXZlX0NGTEFHUworICAgTERDWFg9JExECisgICBMRD0kbHRfc2F2ZV9MRAorICAgR0NDPSRsdF9zYXZlX0dDQworQEAgLTY0NDUsNiArNjgyNSwyOSBAQCBBQ19MQU5HX1BPUAorIF0pIyBfTFRfTEFOR19DWFhfQ09ORklHCisgCisgCisrIyBfTFRfRlVOQ19TVFJJUE5BTUVfQ05GCisrIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisrIyBmdW5jX3N0cmlwbmFtZV9jbmYgcHJlZml4IHN1ZmZpeCBuYW1lCisrIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKysjIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorKyMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworKyMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KKysjCisrIyBUaGlzIGZ1bmN0aW9uIGlzIGlkZW50aWNhbCB0byB0aGUgKG5vbi1YU0kpIHZlcnNpb24gb2YgZnVuY19zdHJpcG5hbWUsCisrIyBleGNlcHQgdGhpcyBvbmUgY2FuIGJlIHVzZWQgYnkgbTQgY29kZSB0aGF0IG1heSBiZSBleGVjdXRlZCBieSBjb25maWd1cmUsCisrIyByYXRoZXIgdGhhbiB0aGUgbGlidG9vbCBzY3JpcHQuCisrbTRfZGVmdW4oW19MVF9GVU5DX1NUUklQTkFNRV9DTkZdLFtkbmwKKytBQ19SRVFVSVJFKFtfTFRfREVDTF9TRURdKQorK0FDX1JFUVVJUkUoW19MVF9QUk9HX0VDSE9fQkFDS1NMQVNIXSkKKytmdW5jX3N0cmlwbmFtZV9jbmYgKCkKKyt7CisrICBjYXNlICR7Mn0gaW4KKysgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7CisrICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7CisrICBlc2FjCisrfSAjIGZ1bmNfc3RyaXBuYW1lX2NuZgorK10pIyBfTFRfRlVOQ19TVFJJUE5BTUVfQ05GCisrCisgIyBfTFRfU1lTX0hJRERFTl9MSUJERVBTKFtUQUdOQU1FXSkKKyAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICMgRmlndXJlIG91dCAiaGlkZGVuIiBsaWJyYXJ5IGRlcGVuZGVuY2llcyBmcm9tIHZlcmJvc2UKK0BAIC02NDUzLDYgKzY4NTYsNyBAQCBBQ19MQU5HX1BPUAorICMgb2JqZWN0cywgbGlicmFyaWVzIGFuZCBsaWJyYXJ5IGZsYWdzLgorIG00X2RlZnVuKFtfTFRfU1lTX0hJRERFTl9MSUJERVBTXSwKKyBbbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pZG5sCisrQUNfUkVRVUlSRShbX0xUX0ZVTkNfU1RSSVBOQU1FX0NORl0pZG5sCisgIyBEZXBlbmRlbmNpZXMgdG8gcGxhY2UgYmVmb3JlIGFuZCBhZnRlciB0aGUgb2JqZWN0IGJlaW5nIGxpbmtlZDoKKyBfTFRfVEFHVkFSKHByZWRlcF9vYmplY3RzLCAkMSk9CisgX0xUX1RBR1ZBUihwb3N0ZGVwX29iamVjdHMsICQxKT0KK0BAIC02NTAzLDYgKzY5MDcsMTMgQEAgcHVibGljIGNsYXNzIGZvbyB7CisgfTsKKyBfTFRfRU9GCisgXSkKKysKKytfbHRfbGliZGVwc19zYXZlX0NGTEFHUz0kQ0ZMQUdTCisrY2FzZSAiJENDICRDRkxBR1MgIiBpbiAjKAorKypcIC1mbHRvKlwgKikgQ0ZMQUdTPSIkQ0ZMQUdTIC1mbm8tbHRvIiA7OworKypcIC1md2hvcHIqXCAqKSBDRkxBR1M9IiRDRkxBR1MgLWZuby13aG9wciIgOzsKKytlc2FjCisrCisgZG5sIFBhcnNlIHRoZSBjb21waWxlciBvdXRwdXQgYW5kIGV4dHJhY3QgdGhlIG5lY2Vzc2FyeQorIGRubCBvYmplY3RzLCBsaWJyYXJpZXMgYW5kIGxpYnJhcnkgZmxhZ3MuCisgaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSk7IHRoZW4KK0BAIC02NTE0LDcgKzY5MjUsNyBAQCBpZiBBQ19UUllfRVZBTChhY19jb21waWxlKTsgdGhlbgorICAgcHJlX3Rlc3Rfb2JqZWN0X2RlcHNfZG9uZT1ubworIAorICAgZm9yIHAgaW4gYGV2YWwgIiRvdXRwdXRfdmVyYm9zZV9saW5rX2NtZCJgOyBkbworLSAgICBjYXNlICRwIGluCisrICAgIGNhc2UgJHtwcmV2fSR7cH0gaW4KKyAKKyAgICAgLUwqIHwgLVIqIHwgLWwqKQorICAgICAgICAjIFNvbWUgY29tcGlsZXJzIHBsYWNlIHNwYWNlIGJldHdlZW4gIi17TCxSfSIgYW5kIHRoZSBwYXRoLgorQEAgLTY1MjMsMTMgKzY5MzQsMjIgQEAgaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSk7IHRoZW4KKyAgICAgICAgICAgdGVzdCAkcCA9ICItUiI7IHRoZW4KKyAJIHByZXY9JHAKKyAJIGNvbnRpbnVlCistICAgICAgIGVsc2UKKy0JIHByZXY9CisgICAgICAgIGZpCisgCisrICAgICAgICMgRXhwYW5kIHRoZSBzeXNyb290IHRvIGVhc2UgZXh0cmFjdGluZyB0aGUgZGlyZWN0b3JpZXMgbGF0ZXIuCisrICAgICAgIGlmIHRlc3QgLXogIiRwcmV2IjsgdGhlbgorKyAgICAgICAgIGNhc2UgJHAgaW4KKysgICAgICAgICAtTCopIGZ1bmNfc3RyaXBuYW1lX2NuZiAnLUwnICcnICIkcCI7IHByZXY9LUw7IHA9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OworKyAgICAgICAgIC1SKikgZnVuY19zdHJpcG5hbWVfY25mICctUicgJycgIiRwIjsgcHJldj0tUjsgcD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7CisrICAgICAgICAgLWwqKSBmdW5jX3N0cmlwbmFtZV9jbmYgJy1sJyAnJyAiJHAiOyBwcmV2PS1sOyBwPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKKysgICAgICAgICBlc2FjCisrICAgICAgIGZpCisrICAgICAgIGNhc2UgJHAgaW4KKysgICAgICAgPSopIGZ1bmNfc3RyaXBuYW1lX2NuZiAnPScgJycgIiRwIjsgcD0kbHRfc3lzcm9vdCRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKKysgICAgICAgZXNhYworICAgICAgICBpZiB0ZXN0ICIkcHJlX3Rlc3Rfb2JqZWN0X2RlcHNfZG9uZSIgPSBubzsgdGhlbgorLQkgY2FzZSAkcCBpbgorLQkgLUwqIHwgLVIqKQorKwkgY2FzZSAke3ByZXZ9IGluCisrCSAtTCB8IC1SKQorIAkgICAjIEludGVybmFsIGNvbXBpbGVyIGxpYnJhcnkgcGF0aHMgc2hvdWxkIGNvbWUgYWZ0ZXIgdGhvc2UKKyAJICAgIyBwcm92aWRlZCB0aGUgdXNlci4gIFRoZSBwb3N0ZGVwcyBhbHJlYWR5IGNvbWUgYWZ0ZXIgdGhlCisgCSAgICMgdXNlciBzdXBwbGllZCBsaWJzIHNvIHRoZXJlIGlzIG5vIG5lZWQgdG8gcHJvY2VzcyB0aGVtLgorQEAgLTY1NDksOCArNjk2OSwxMCBAQCBpZiBBQ19UUllfRVZBTChhY19jb21waWxlKTsgdGhlbgorIAkgICBfTFRfVEFHVkFSKHBvc3RkZXBzLCAkMSk9IiR7X0xUX1RBR1ZBUihwb3N0ZGVwcywgJDEpfSAke3ByZXZ9JHtwfSIKKyAJIGZpCisgICAgICAgIGZpCisrICAgICAgIHByZXY9CisgICAgICAgIDs7CisgCisrICAgICoubHRvLiRvYmpleHQpIDs7ICMgSWdub3JlIEdDQyBMVE8gb2JqZWN0cworICAgICAqLiRvYmpleHQpCisgICAgICAgICMgVGhpcyBhc3N1bWVzIHRoYXQgdGhlIHRlc3Qgb2JqZWN0IGZpbGUgb25seSBzaG93cyB1cAorICAgICAgICAjIG9uY2UgaW4gdGhlIGNvbXBpbGVyIG91dHB1dC4KK0BAIC02NTg2LDYgKzcwMDgsNyBAQCBlbHNlCisgZmkKKyAKKyAkUk0gLWYgY29uZmVzdC4kb2JqZXh0CisrQ0ZMQUdTPSRfbHRfbGliZGVwc19zYXZlX0NGTEFHUworIAorICMgUE9SVE1FOiBvdmVycmlkZSBhYm92ZSB0ZXN0IG9uIHN5c3RlbXMgd2hlcmUgaXQgaXMgYnJva2VuCisgbTRfaWYoWyQxXSwgW0NYWF0sCitAQCAtNjYyMiw3ICs3MDQ1LDcgQEAgbGludXgqKQorIAorIHNvbGFyaXMqKQorICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKy0gIENDKikKKysgIENDKiB8IHN1bkNDKikKKyAgICAgIyBUaGUgbW9yZSBzdGFuZGFyZHMtY29uZm9ybWluZyBzdGxwb3J0NCBsaWJyYXJ5IGlzCisgICAgICMgaW5jb21wYXRpYmxlIHdpdGggdGhlIENzdGQgbGlicmFyeS4gQXZvaWQgc3BlY2lmeWluZworICAgICAjIGl0IGlmIGl0J3MgaW4gQ1hYRkxBR1MuIElnbm9yZSBsaWJDcnVuIGFzCitAQCAtNjczNSw3ICs3MTU4LDkgQEAgaWYgdGVzdCAiJF9sdF9kaXNhYmxlX0Y3NyIgIT0geWVzOyB0aGVuCisgICAjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgorICAgbHRfc2F2ZV9DQz0iJENDIgorICAgbHRfc2F2ZV9HQ0M9JEdDQworKyAgbHRfc2F2ZV9DRkxBR1M9JENGTEFHUworICAgQ0M9JHtGNzctImY3NyJ9CisrICBDRkxBR1M9JEZGTEFHUworICAgY29tcGlsZXI9JENDCisgICBfTFRfVEFHVkFSKGNvbXBpbGVyLCAkMSk9JENDCisgICBfTFRfQ0NfQkFTRU5BTUUoWyRjb21waWxlcl0pCitAQCAtNjc4OSw2ICs3MjE0LDcgQEAgaWYgdGVzdCAiJF9sdF9kaXNhYmxlX0Y3NyIgIT0geWVzOyB0aGVuCisgCisgICBHQ0M9JGx0X3NhdmVfR0NDCisgICBDQz0iJGx0X3NhdmVfQ0MiCisrICBDRkxBR1M9IiRsdF9zYXZlX0NGTEFHUyIKKyBmaSAjIHRlc3QgIiRfbHRfZGlzYWJsZV9GNzciICE9IHllcworIAorIEFDX0xBTkdfUE9QCitAQCAtNjg2NSw3ICs3MjkxLDkgQEAgaWYgdGVzdCAiJF9sdF9kaXNhYmxlX0ZDIiAhPSB5ZXM7IHRoZW4KKyAgICMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCisgICBsdF9zYXZlX0NDPSIkQ0MiCisgICBsdF9zYXZlX0dDQz0kR0NDCisrICBsdF9zYXZlX0NGTEFHUz0kQ0ZMQUdTCisgICBDQz0ke0ZDLSJmOTUifQorKyAgQ0ZMQUdTPSRGQ0ZMQUdTCisgICBjb21waWxlcj0kQ0MKKyAgIEdDQz0kYWNfY3ZfZmNfY29tcGlsZXJfZ251CisgCitAQCAtNjkyMSw3ICs3MzQ5LDggQEAgaWYgdGVzdCAiJF9sdF9kaXNhYmxlX0ZDIiAhPSB5ZXM7IHRoZW4KKyAgIGZpICMgdGVzdCAtbiAiJGNvbXBpbGVyIgorIAorICAgR0NDPSRsdF9zYXZlX0dDQworLSAgQ0M9IiRsdF9zYXZlX0NDIgorKyAgQ0M9JGx0X3NhdmVfQ0MKKysgIENGTEFHUz0kbHRfc2F2ZV9DRkxBR1MKKyBmaSAjIHRlc3QgIiRfbHRfZGlzYWJsZV9GQyIgIT0geWVzCisgCisgQUNfTEFOR19QT1AKK0BAIC02OTU4LDEwICs3Mzg3LDEyIEBAIF9MVF9DT01QSUxFUl9CT0lMRVJQTEFURQorIF9MVF9MSU5LRVJfQk9JTEVSUExBVEUKKyAKKyAjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgorLWx0X3NhdmVfQ0M9IiRDQyIKKytsdF9zYXZlX0NDPSRDQworK2x0X3NhdmVfQ0ZMQUdTPSRDRkxBR1MKKyBsdF9zYXZlX0dDQz0kR0NDCisgR0NDPXllcworIENDPSR7R0NKLSJnY2oifQorK0NGTEFHUz0kR0NKRkxBR1MKKyBjb21waWxlcj0kQ0MKKyBfTFRfVEFHVkFSKGNvbXBpbGVyLCAkMSk9JENDCisgX0xUX1RBR1ZBUihMRCwgJDEpPSIkTEQiCitAQCAtNjk5Miw3ICs3NDIzLDggQEAgZmkKKyBBQ19MQU5HX1JFU1RPUkUKKyAKKyBHQ0M9JGx0X3NhdmVfR0NDCistQ0M9IiRsdF9zYXZlX0NDIgorK0NDPSRsdF9zYXZlX0NDCisrQ0ZMQUdTPSRsdF9zYXZlX0NGTEFHUworIF0pIyBfTFRfTEFOR19HQ0pfQ09ORklHCisgCisgCitAQCAtNzAyNyw5ICs3NDU5LDExIEBAIF9MVF9MSU5LRVJfQk9JTEVSUExBVEUKKyAKKyAjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgorIGx0X3NhdmVfQ0M9IiRDQyIKKytsdF9zYXZlX0NGTEFHUz0kQ0ZMQUdTCisgbHRfc2F2ZV9HQ0M9JEdDQworIEdDQz0KKyBDQz0ke1JDLSJ3aW5kcmVzIn0KKytDRkxBR1M9CisgY29tcGlsZXI9JENDCisgX0xUX1RBR1ZBUihjb21waWxlciwgJDEpPSRDQworIF9MVF9DQ19CQVNFTkFNRShbJGNvbXBpbGVyXSkKK0BAIC03MDQyLDcgKzc0NzYsOCBAQCBmaQorIAorIEdDQz0kbHRfc2F2ZV9HQ0MKKyBBQ19MQU5HX1JFU1RPUkUKKy1DQz0iJGx0X3NhdmVfQ0MiCisrQ0M9JGx0X3NhdmVfQ0MKKytDRkxBR1M9JGx0X3NhdmVfQ0ZMQUdTCisgXSkjIF9MVF9MQU5HX1JDX0NPTkZJRworIAorIAorQEAgLTcxMDEsNiArNzUzNiwxNSBAQCBfTFRfREVDTChbXSwgW09CSkRVTVBdLCBbMV0sIFtBbiBvYmplY3Qgc3ltYm9sIGR1bXBlcl0pCisgQUNfU1VCU1QoW09CSkRVTVBdKQorIF0pCisgCisrIyBfTFRfREVDTF9ETExUT09MCisrIyAtLS0tLS0tLS0tLS0tLS0tCisrIyBFbnN1cmUgRExMVE9PTCB2YXJpYWJsZSBpcyBzZXQuCisrbTRfZGVmdW4oW19MVF9ERUNMX0RMTFRPT0xdLAorK1tBQ19DSEVDS19UT09MKERMTFRPT0wsIGRsbHRvb2wsIGZhbHNlKQorK3Rlc3QgLXogIiRETExUT09MIiAmJiBETExUT09MPWRsbHRvb2wKKytfTFRfREVDTChbXSwgW0RMTFRPT0xdLCBbMV0sIFtETEwgY3JlYXRpb24gcHJvZ3JhbV0pCisrQUNfU1VCU1QoW0RMTFRPT0xdKQorK10pCisgCisgIyBfTFRfREVDTF9TRUQKKyAjIC0tLS0tLS0tLS0tLQorQEAgLTcxOTQsOCArNzYzOCw4IEBAIG00X2RlZnVuKFtfTFRfQ0hFQ0tfU0hFTExfRkVBVFVSRVNdLAorICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCisgeHNpX3NoZWxsPW5vCisgKCBfbHRfZHVtbXk9ImEvYi9jIgorLSAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sIiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKKy0gICAgICA9IGMsYS9iLCwgXAorKyAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sJHtfbHRfZHVtbXkjPz99IiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKKysgICAgICA9IGMsYS9iLGIvYywgXAorICAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCisgICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCisgICAmJiB4c2lfc2hlbGw9eWVzCitAQCAtNzIzNCwyMDYgKzc2NzgsMTYyIEBAIF9MVF9ERUNMKFtOTDJTUF0sIFtsdF9OTDJTUF0sIFsxXSwgW3R1cm4gbmV3bGluZXMgaW50byBzcGFjZXNdKWRubAorIF0pIyBfTFRfQ0hFQ0tfU0hFTExfRkVBVFVSRVMKKyAKKyAKKy0jIF9MVF9QUk9HX1hTSV9TSEVMTEZOUworLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistIyBCb3VybmUgYW5kIFhTSSBjb21wYXRpYmxlIHZhcmlhbnRzIG9mIHNvbWUgdXNlZnVsIHNoZWxsIGZ1bmN0aW9ucy4KKy1tNF9kZWZ1bihbX0xUX1BST0dfWFNJX1NIRUxMRk5TXSwKKy1bY2FzZSAkeHNpX3NoZWxsIGluCistICB5ZXMpCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAorLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLWZ1bmNfZGlybmFtZSAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OworLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7CistICBlc2FjCistfQorLQorLSMgZnVuY19iYXNlbmFtZSBmaWxlCistZnVuY19iYXNlbmFtZSAoKQorLXsKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKKy19CistCistIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KKy0jIGNhbGw6CistIyAgIGRpcm5hbWU6ICBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwKKy0jICAgICAgICAgICAgIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwgb3RoZXJ3aXNlIHNldCByZXN1bHQKKy0jICAgICAgICAgICAgIHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy0jICAgICAgICAgICAgIHZhbHVlIHJldHVybmVkIGluICIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKKy0jICAgYmFzZW5hbWU6IENvbXB1dGUgZmlsZW5hbWUgb2YgRklMRS4KKy0jICAgICAgICAgICAgIHZhbHVlIHJldHVuZWQgaW4gIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKy0jIEltcGxlbWVudGF0aW9uIG11c3QgYmUga2VwdCBzeW5jaHJvbml6ZWQgd2l0aCBmdW5jX2Rpcm5hbWUKKy0jIGFuZCBmdW5jX2Jhc2VuYW1lLiBGb3IgZWZmaWNpZW5jeSwgd2UgZG8gbm90IGRlbGVnYXRlIHRvCistIyB0aG9zZSBmdW5jdGlvbnMgYnV0IGluc3RlYWQgZHVwbGljYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGhlcmUuCistZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OworLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7CistICBlc2FjCistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCistfQorLQorLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCistIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKy0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KKy1mdW5jX3N0cmlwbmFtZSAoKQorLXsKKy0gICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKKy0gICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC4KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9CistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In0KKy19CistCistIyBmdW5jX29wdF9zcGxpdAorLWZ1bmNfb3B0X3NwbGl0ICgpCisteworLSAgZnVuY19vcHRfc3BsaXRfb3B0PSR7MSUlPSp9CistICBmdW5jX29wdF9zcGxpdF9hcmc9JHsxIyo9fQorLX0KKy0KKy0jIGZ1bmNfbG8ybyBvYmplY3QKKy1mdW5jX2xvMm8gKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKKy0gICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7CistICBlc2FjCistfQorLQorLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCistZnVuY194Zm9ybSAoKQorLXsKKy0gIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG8KKy19CistCistIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgorLWZ1bmNfYXJpdGggKCkKKy17CistICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJFsqXSApKQorLX0KKy0KKy0jIGZ1bmNfbGVuIHN0cmluZworLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KKy1mdW5jX2xlbiAoKQorLXsKKy0gIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfQorLX0KKysjIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UgKEZVTkNOQU1FLCBSRVBMQUNFTUVOVC1CT0RZKQorKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisrIyBJbiBgJGNmZ2ZpbGUnLCBsb29rIGZvciBmdW5jdGlvbiBGVU5DTkFNRSBkZWxpbWl0ZWQgYnkgYF5GVU5DTkFNRSAoKSQnIGFuZAorKyMgJ159IEZVTkNOQU1FICcsIGFuZCByZXBsYWNlIGl0cyBib2R5IHdpdGggUkVQTEFDRU1FTlQtQk9EWS4KKyttNF9kZWZ1bihbX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRV0sCisrW2RubCB7Cisrc2VkIC1lICcvXiQxICgpJC8sL159ICMgJDEgL2NcCisrJDEgKClcCisre1wKKyttNF9icGF0c3Vic3RzKFskMl0sIFskXSwgW1xcXSwgW15cKFsJIF1cKV0sIFtcXFwxXSkKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgJDEgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKytdKQorIAorLV9MVF9FT0YKKy0gICAgOzsKKy0gICopICMgQm91cm5lIGNvbXBhdGlibGUgZnVuY3Rpb25zLgorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorIAorLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKy0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy1mdW5jX2Rpcm5hbWUgKCkKKy17CistICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgorLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGRpcm5hbWUiYAorLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKKy0gIGVsc2UKKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgorLSAgZmkKKy19CisrIyBfTFRfUFJPR19SRVBMQUNFX1NIRUxMRk5TCisrIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisrIyBSZXBsYWNlIGV4aXN0aW5nIHBvcnRhYmxlIGltcGxlbWVudGF0aW9ucyBvZiBzZXZlcmFsIHNoZWxsIGZ1bmN0aW9ucyB3aXRoCisrIyBlcXVpdmFsZW50IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9ucyB3aGVyZSB0aG9zZSBmZWF0dXJlcyBhcmUgYXZhaWxhYmxlLi4KKyttNF9kZWZ1bihbX0xUX1BST0dfUkVQTEFDRV9TSEVMTEZOU10sCisrW2lmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KKysgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfZGlybmFtZV0sIFtkbmwKKysgICAgY2FzZSAkezF9IGluCisrICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKysgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7CisrICAgIGVzYWNdKQorKworKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19iYXNlbmFtZV0sIFtkbmwKKysgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99Il0pCisrCisrICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lXSwgW2RubAorKyAgICBjYXNlICR7MX0gaW4KKysgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OworKyAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKKysgICAgZXNhYworKyAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXSkKKyAKKy0jIGZ1bmNfYmFzZW5hbWUgZmlsZQorLWZ1bmNfYmFzZW5hbWUgKCkKKy17CistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGJhc2VuYW1lImAKKy19CisrICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX3N0cmlwbmFtZV0sIFtkbmwKKysgICAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQorKyAgICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCisrICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9CisrICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9CisrICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9XSkKKyAKKy1kbmwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZQorLWRubCBBIHBvcnRhYmxlIHZlcnNpb24gb2YgdGhpcyBmdW5jdGlvbiBpcyBhbHJlYWR5IGRlZmluZWQgaW4gZ2VuZXJhbC5tNHNoCistZG5sIHNvIHRoZXJlIGlzIG5vIG5lZWQgZm9yIGl0IGhlcmUuCisrICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX3NwbGl0X2xvbmdfb3B0XSwgW2RubAorKyAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWU9JHsxJSU9Kn0KKysgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9JHsxIyo9fV0pCisgCistIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKKy0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgorLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCistIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCistIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgorLSMgZnVuY19zdHJpcF9zdWZmaXggcHJlZml4IG5hbWUKKy1mdW5jX3N0cmlwbmFtZSAoKQorLXsKKy0gIGNhc2UgJHsyfSBpbgorLSAgICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OworLSAgICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7CistICBlc2FjCistfQorKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19zcGxpdF9zaG9ydF9vcHRdLCBbZG5sCisrICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz0kezEjPz99CisrICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9JHsxJSIkZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIn1dKQorIAorLSMgc2VkIHNjcmlwdHM6CistbXlfc2VkX2xvbmdfb3B0PScxcy9eXCgtW1tePV1dKlwpPS4qL1wxLztxJworLW15X3NlZF9sb25nX2FyZz0nMXMvXi1bW149XV0qPS8vJworKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19sbzJvXSwgW2RubAorKyAgICBjYXNlICR7MX0gaW4KKysgICAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OworKyAgICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OworKyAgICBlc2FjXSkKKyAKKy0jIGZ1bmNfb3B0X3NwbGl0CistZnVuY19vcHRfc3BsaXQgKCkKKy17CistICBmdW5jX29wdF9zcGxpdF9vcHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19vcHQiYAorLSAgZnVuY19vcHRfc3BsaXRfYXJnPWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKKy19CisrICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX3hmb3JtXSwgWyAgICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvXSkKKyAKKy0jIGZ1bmNfbG8ybyBvYmplY3QKKy1mdW5jX2xvMm8gKCkKKy17CistICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbG8ybyJgCistfQorKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19hcml0aF0sIFsgICAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICRbKl0gKSldKQorIAorLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCistZnVuY194Zm9ybSAoKQorLXsKKy0gIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICdzL1wuW1teLl1dKiQvLmxvLydgCistfQorKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19sZW5dLCBbICAgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfV0pCisrZmkKKyAKKy0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCistZnVuY19hcml0aCAoKQorLXsKKy0gIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIkW0BdImAKKy19CisraWYgdGVzdCB4IiRsdF9zaGVsbF9hcHBlbmQiID0geHllczsgdGhlbgorKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19hcHBlbmRdLCBbICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJdKQorIAorLSMgZnVuY19sZW4gc3RyaW5nCistIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgorLWZ1bmNfbGVuICgpCisteworLSAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkWzFdIiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCistfQorKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19hcHBlbmRfcXVvdGVkXSwgW2RubAorKyAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IgorK2RubCBtNCBleHBhbnNpb24gdHVybnMgXFxcXCBpbnRvIFxcLCBhbmQgdGhlbiB0aGUgc2hlbGwgZXZhbCB0dXJucyB0aGF0IGludG8gXAorKyAgICBldmFsICIkezF9Kz1cXFxcIFxcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0Il0pCisgCistX0xUX0VPRgorLWVzYWMKKysgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCB3aGVyZSBwb3NzaWJsZSBieSBkaXJlY3QgdXNlIG9mICcrPScKKysgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFtbYS16QS1aX11dXHsxLFx9XCkgIiVcMSs9IiVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCisrICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorK2Vsc2UKKysgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCBldmVuIHdoZW4gJys9JyBpcyBub3QgYXZhaWxhYmxlCisrICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbW2EtekEtWl9dXVx7MSxcfVwpICIlXDE9IiRcMSVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCisrICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorK2ZpCisgCistY2FzZSAkbHRfc2hlbGxfYXBwZW5kIGluCistICB5ZXMpCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCisraWYgdGVzdCB4IiRfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsIiA9IHgiOiI7IHRoZW4KKysgIEFDX01TR19XQVJOKFtVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlXSkKKytmaQorK10pCisgCistIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKKy0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KKy1mdW5jX2FwcGVuZCAoKQorLXsKKy0gIGV2YWwgIiRbMV0rPVwkWzJdIgorLX0KKy1fTFRfRU9GCisrIyBfTFRfUEFUSF9DT05WRVJTSU9OX0ZVTkNUSU9OUworKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKysjIERldGVybWluZSB3aGljaCBmaWxlIG5hbWUgY29udmVyc2lvbiBmdW5jdGlvbnMgc2hvdWxkIGJlIHVzZWQgYnkKKysjIGZ1bmNfdG9faG9zdF9maWxlIChhbmQsIGltcGxpY2l0bHksIGJ5IGZ1bmNfdG9faG9zdF9wYXRoKS4gIFRoZXNlIGFyZSBuZWVkZWQKKysjIGZvciBjZXJ0YWluIGNyb3NzLWNvbXBpbGUgY29uZmlndXJhdGlvbnMgYW5kIG5hdGl2ZSBtaW5ndy4KKyttNF9kZWZ1bihbX0xUX1BBVEhfQ09OVkVSU0lPTl9GVU5DVElPTlNdLAorK1tBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pZG5sCisrQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0JVSUxEXSlkbmwKKytBQ19NU0dfQ0hFQ0tJTkcoW2hvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdF0pCisrQUNfQ0FDSEVfVkFMKGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQsCisrW2Nhc2UgJGhvc3QgaW4KKysgICotKi1taW5ndyogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysgICAgICAgIDs7CisrICAgICAgKi0qLWN5Z3dpbiogKQorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyCisrICAgICAgICA7OworKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgorKyAgICAgICAgOzsKKysgICAgZXNhYworICAgICA7OworLSAgKikKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQorLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgorLWZ1bmNfYXBwZW5kICgpCisteworLSAgZXZhbCAiJFsxXT1cJCRbMV1cJFsyXSIKKy19CistCistX0xUX0VPRgorKyAgKi0qLWN5Z3dpbiogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KKysgICAgICAgIDs7CisrICAgICAgKi0qLWN5Z3dpbiogKQorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrICAgICAgICA7OworKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgorKyAgICAgICAgOzsKKysgICAgZXNhYworICAgICA7OworLSAgZXNhYworKyAgKiApICMgdW5oYW5kbGVkIGhvc3RzIChhbmQgIm5vcm1hbCIgbmF0aXZlIGJ1aWxkcykKKysgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrICAgIDs7CisrZXNhYworK10pCisrdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAorK0FDX01TR19SRVNVTFQoWyRsdF9jdl90b19ob3N0X2ZpbGVfY21kXSkKKytfTFRfREVDTChbdG9faG9zdF9maWxlX2NtZF0sIFtsdF9jdl90b19ob3N0X2ZpbGVfY21kXSwKKysgICAgICAgICBbMF0sIFtjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdF0pZG5sCisrCisrQUNfTVNHX0NIRUNLSU5HKFtob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0XSkKKytBQ19DQUNIRV9WQUwobHRfY3ZfdG9fdG9vbF9maWxlX2NtZCwKKytbI2Fzc3VtZSBvcmRpbmFyeSBjcm9zcyB0b29scywgb3IgbmF0aXZlIGJ1aWxkLgorK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorK2Nhc2UgJGhvc3QgaW4KKysgICotKi1taW5ndyogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKytlc2FjCisgXSkKKyt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCisrQUNfTVNHX1JFU1VMVChbJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWRdKQorK19MVF9ERUNMKFt0b190b29sX2ZpbGVfY21kXSwgW2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWRdLAorKyAgICAgICAgIFswXSwgW2NvbnZlcnQgJGJ1aWxkIGZpbGVzIHRvIHRvb2xjaGFpbiBmb3JtYXRdKWRubAorK10pIyBfTFRfUEFUSF9DT05WRVJTSU9OX0ZVTkNUSU9OUworZGlmZiAtLWdpdCBhL2x0bWFpbi5zaCBiL2x0bWFpbi5zaAoraW5kZXggOTUwM2VjODVkNy4uNzBlODU2ZTA2NSAxMDA2NDQKKy0tLSBhL2x0bWFpbi5zaAorKysrIGIvbHRtYWluLnNoCitAQCAtMSwxMCArMSw5IEBACistIyBHZW5lcmF0ZWQgZnJvbSBsdG1haW4ubTRzaC4KKyAKKy0jIGxpYnRvb2wgKEdOVSBsaWJ0b29sIDEuMzEzNCAyMDA5LTExLTI5KSAyLjIuN2EKKysjIGxpYnRvb2wgKEdOVSBsaWJ0b29sKSAyLjQKKyAjIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQgPGdvcmRAZ251LmFpLm1pdC5lZHU+LCAxOTk2CisgCisgIyBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsCistIyAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyMgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAjIFRoaXMgaXMgZnJlZSBzb2Z0d2FyZTsgc2VlIHRoZSBzb3VyY2UgZm9yIGNvcHlpbmcgY29uZGl0aW9ucy4gIFRoZXJlIGlzIE5PCisgIyB3YXJyYW50eTsgbm90IGV2ZW4gZm9yIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4KKyAKK0BAIC0zOCw3ICszNyw2IEBACisgIyAgIC1uLCAtLWRyeS1ydW4gICAgICAgICAgICBkaXNwbGF5IGNvbW1hbmRzIHdpdGhvdXQgbW9kaWZ5aW5nIGFueSBmaWxlcworICMgICAgICAgLS1mZWF0dXJlcyAgICAgICAgICAgZGlzcGxheSBiYXNpYyBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGFuZCBleGl0CisgIyAgICAgICAtLW1vZGU9TU9ERSAgICAgICAgICB1c2Ugb3BlcmF0aW9uIG1vZGUgTU9ERQorLSMgICAgICAgLS1uby1maW5pc2ggICAgICAgICAgbGV0IGluc3RhbGwgbW9kZSBhdm9pZCBmaW5pc2ggY29tbWFuZHMKKyAjICAgICAgIC0tcHJlc2VydmUtZHVwLWRlcHMgIGRvbid0IHJlbW92ZSBkdXBsaWNhdGUgZGVwZW5kZW5jeSBsaWJyYXJpZXMKKyAjICAgICAgIC0tcXVpZXQsIC0tc2lsZW50ICAgIGRvbid0IHByaW50IGluZm9ybWF0aW9uYWwgbWVzc2FnZXMKKyAjICAgICAgIC0tbm8tcXVpZXQsIC0tbm8tc2lsZW50CitAQCAtNzEsMTcgKzY5LDE5IEBACisgIyAgICAgICAgIGNvbXBpbGVyOgkJJExUQ0MKKyAjICAgICAgICAgY29tcGlsZXIgZmxhZ3M6CQkkTFRDRkxBR1MKKyAjICAgICAgICAgbGlua2VyOgkJJExEIChnbnU/ICR3aXRoX2dudV9sZCkKKy0jICAgICAgICAgJHByb2duYW1lOgkoR05VIGxpYnRvb2wgMS4zMTM0IDIwMDktMTEtMjkpIDIuMi43YQorKyMgICAgICAgICAkcHJvZ25hbWU6CShHTlUgbGlidG9vbCkgMi40CisgIyAgICAgICAgIGF1dG9tYWtlOgkkYXV0b21ha2VfdmVyc2lvbgorICMgICAgICAgICBhdXRvY29uZjoJJGF1dG9jb25mX3ZlcnNpb24KKyAjCisgIyBSZXBvcnQgYnVncyB0byA8YnVnLWxpYnRvb2xAZ251Lm9yZz4uCisrIyBHTlUgbGlidG9vbCBob21lIHBhZ2U6IDxodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGlidG9vbC8+LgorKyMgR2VuZXJhbCBoZWxwIHVzaW5nIEdOVSBzb2Z0d2FyZTogPGh0dHA6Ly93d3cuZ251Lm9yZy9nZXRoZWxwLz4uCisgCisgUFJPR1JBTT1saWJ0b29sCisgUEFDS0FHRT1saWJ0b29sCistVkVSU0lPTj0yLjIuN2EKKy1USU1FU1RBTVA9IiAxLjMxMzQgMjAwOS0xMS0yOSIKKy1wYWNrYWdlX3JldmlzaW9uPTEuMzEzNAorK1ZFUlNJT049Mi40CisrVElNRVNUQU1QPSIiCisrcGFja2FnZV9yZXZpc2lvbj0xLjMyOTMKKyAKKyAjIEJlIEJvdXJuZSBjb21wYXRpYmxlCisgaWYgdGVzdCAtbiAiJHtaU0hfVkVSU0lPTitzZXR9IiAmJiAoZW11bGF0ZSBzaCkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCitAQCAtMTA2LDkgKzEwNiw2IEBAIF9MVEVDSE9fRU9GJworIH0KKyAKKyAjIE5MUyBudWlzYW5jZXM6IFdlIHNhdmUgdGhlIG9sZCB2YWx1ZXMgdG8gcmVzdG9yZSBkdXJpbmcgZXhlY3V0ZSBtb2RlLgorLSMgT25seSBzZXQgTEFORyBhbmQgTENfQUxMIHRvIEMgaWYgYWxyZWFkeSBzZXQuCistIyBUaGVzZSBtdXN0IG5vdCBiZSBzZXQgdW5jb25kaXRpb25hbGx5IGJlY2F1c2Ugbm90IGFsbCBzeXN0ZW1zIHVuZGVyc3RhbmQKKy0jIGUuZy4gTEFORz1DIChub3RhYmx5IFNDTykuCisgbHRfdXNlcl9sb2NhbGU9CisgbHRfc2FmZV9sb2NhbGU9CisgZm9yIGx0X3ZhciBpbiBMQU5HIExBTkdVQUdFIExDX0FMTCBMQ19DVFlQRSBMQ19DT0xMQVRFIExDX01FU1NBR0VTCitAQCAtMTIxLDE1ICsxMTgsMTMgQEAgZG8KKyAJICBsdF9zYWZlX2xvY2FsZT1cIiRsdF92YXI9QzsgXCRsdF9zYWZlX2xvY2FsZVwiCisgCWZpIgorIGRvbmUKKytMQ19BTEw9QworK0xBTkdVQUdFPUMKKytleHBvcnQgTEFOR1VBR0UgTENfQUxMCisgCisgJGx0X3Vuc2V0IENEUEFUSAorIAorIAorLQorLQorLQorLQorLQorICMgV29yayBhcm91bmQgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBpc3N1ZSBvbiBJUklYIDYuNS4gT24gSVJJWCA2LjQrLCBzaAorICMgaXMga3NoIGJ1dCB3aGVuIHRoZSBzaGVsbCBpcyBpbnZva2VkIGFzICJzaCIgYW5kIHRoZSBjdXJyZW50IHZhbHVlIG9mCisgIyB0aGUgX1hQRyBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBub3QgZXF1YWwgdG8gMSAob25lKSwgdGhlIHNwZWNpYWwKK0BAIC0xNDAsNyArMTM1LDcgQEAgcHJvZ3BhdGg9IiQwIgorIAorIAorIDogJHtDUD0iY3AgLWYifQorLTogJHtFQ0hPPSRhc19lY2hvfQorK3Rlc3QgIiR7RUNITytzZXR9IiA9IHNldCB8fCBFQ0hPPSR7YXNfZWNoby0ncHJpbnRmICVzXG4nfQorIDogJHtFR1JFUD0iL2Jpbi9ncmVwIC1FIn0KKyA6ICR7RkdSRVA9Ii9iaW4vZ3JlcCAtRiJ9CisgOiAke0dSRVA9Ii9iaW4vZ3JlcCJ9CitAQCAtMTQ5LDcgKzE0NCw3IEBAIHByb2dwYXRoPSIkMCIKKyA6ICR7TUtESVI9Im1rZGlyIn0KKyA6ICR7TVY9Im12IC1mIn0KKyA6ICR7Uk09InJtIC1mIn0KKy06ICR7U0VEPSIvbW91bnQvZW5kb3Ivd2lsZGVuaHUvbG9jYWwteDg2XzY0L2Jpbi9zZWQifQorKzogJHtTRUQ9Ii9iaW4vc2VkIn0KKyA6ICR7U0hFTEw9IiR7Q09ORklHX1NIRUxMLS9iaW4vc2h9In0KKyA6ICR7WHNlZD0iJFNFRCAtZSAxcy9eWC8vIn0KKyAKK0BAIC0xNjksNiArMTY0LDI3IEBAIElGUz0iIAkkbHRfbmwiCisgZGlybmFtZT0icywvW14vXSokLCwiCisgYmFzZW5hbWU9InMsXi4qLywsIgorIAorKyMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorKyMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKysjIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKytmdW5jX2Rpcm5hbWUgKCkKKyt7CisrICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRkaXJuYW1lImAKKysgICAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KKysgICAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgorKyAgICBlbHNlCisrICAgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgorKyAgICBmaQorK30gIyBmdW5jX2Rpcm5hbWUgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisrCisrCisrIyBmdW5jX2Jhc2VuYW1lIGZpbGUKKytmdW5jX2Jhc2VuYW1lICgpCisreworKyAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGJhc2VuYW1lImAKKyt9ICMgZnVuY19iYXNlbmFtZSBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKysKKysKKyAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CisgIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgorICMgY2FsbDoKK0BAIC0xODMsMTcgKzE5OSwzMSBAQCBiYXNlbmFtZT0icyxeLiovLCwiCisgIyB0aG9zZSBmdW5jdGlvbnMgYnV0IGluc3RlYWQgZHVwbGljYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGhlcmUuCisgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQorIHsKKy0gICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCistICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEIC1lICIkZGlybmFtZSJgCistICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgorLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgorLSAgZWxzZQorLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCistICBmaQorLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgLWUgIiRiYXNlbmFtZSJgCistfQorKyAgICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgorKyAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEIC1lICIkZGlybmFtZSJgCisrICAgIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCisrICAgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKKysgICAgZWxzZQorKyAgICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKKysgICAgZmkKKysgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgLWUgIiRiYXNlbmFtZSJgCisrfSAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisrCisrCisrIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKKysjIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgorKyMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCisrIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCisrIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgorKyMgZnVuY19zdHJpcF9zdWZmaXggcHJlZml4IG5hbWUKKytmdW5jX3N0cmlwbmFtZSAoKQorK3sKKysgICAgY2FzZSAkezJ9IGluCisrICAgICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKKysgICAgICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7CisrICAgIGVzYWMKKyt9ICMgZnVuY19zdHJpcG5hbWUgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisgCistIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUuCisgCisgIyBUaGVzZSBTRUQgc2NyaXB0cyBwcmVzdXBwb3NlIGFuIGFic29sdXRlIHBhdGggd2l0aCBhIHRyYWlsaW5nIHNsYXNoLgorIHBhdGhjYXI9J3MsXi9cKFteL10qXCkuKiQsXDEsJworQEAgLTM3Niw2ICs0MDYsMTUgQEAgc2VkX3F1b3RlX3N1YnN0PSdzL1woW2AiJFxcXVwpL1xcXDEvZycKKyAjIFNhbWUgYXMgYWJvdmUsIGJ1dCBkbyBub3QgcXVvdGUgdmFyaWFibGUgcmVmZXJlbmNlcy4KKyBkb3VibGVfcXVvdGVfc3Vic3Q9J3MvXChbImBcXF1cKS9cXFwxL2cnCisgCisrIyBTZWQgc3Vic3RpdHV0aW9uIHRoYXQgdHVybnMgYSBzdHJpbmcgaW50byBhIHJlZ2V4IG1hdGNoaW5nIGZvciB0aGUKKysjIHN0cmluZyBsaXRlcmFsbHkuCisrc2VkX21ha2VfbGl0ZXJhbF9yZWdleD0ncyxbXS5bXiRcXCpcL10sXFwmLGcnCisrCisrIyBTZWQgc3Vic3RpdHV0aW9uIHRoYXQgY29udmVydHMgYSB3MzIgZmlsZSBuYW1lIG9yIHBhdGgKKysjIHdoaWNoIGNvbnRhaW5zIGZvcndhcmQgc2xhc2hlcywgaW50byBvbmUgdGhhdCBjb250YWlucworKyMgKGVzY2FwZWQpIGJhY2tzbGFzaGVzLiAgQSB2ZXJ5IG5haXZlIGltcGxlbWVudGF0aW9uLgorK2x0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnk9J3N8XFxcXCp8XFx8ZztzfC98XFx8ZztzfFxcfFxcXFx8ZycKKysKKyAjIFJlLWBcJyBwYXJhbWV0ZXIgZXhwYW5zaW9ucyBpbiBvdXRwdXQgb2YgZG91YmxlX3F1b3RlX3N1YnN0IHRoYXQgd2VyZQorICMgYFwnLWVkIGluIGlucHV0IHRvIHRoZSBzYW1lLiAgSWYgYW4gb2RkIG51bWJlciBvZiBgXCcgcHJlY2VkZWQgYSAnJCcKKyAjIGluIGlucHV0IHRvIGRvdWJsZV9xdW90ZV9zdWJzdCwgdGhhdCAnJCcgd2FzIHByb3RlY3RlZCBmcm9tIGV4cGFuc2lvbi4KK0BAIC00MDQsNyArNDQzLDcgQEAgb3B0X3dhcm5pbmc9OgorICMgbmFtZSBpZiBpdCBoYXMgYmVlbiBzZXQgeWV0LgorIGZ1bmNfZWNobyAoKQorIHsKKy0gICAgJEVDSE8gIiRwcm9nbmFtZSR7bW9kZSs6IH0kbW9kZTogJCoiCisrICAgICRFQ0hPICIkcHJvZ25hbWU6ICR7b3B0X21vZGUrJG9wdF9tb2RlOiB9JCoiCisgfQorIAorICMgZnVuY192ZXJib3NlIGFyZy4uLgorQEAgLTQzMCwxNCArNDY5LDE0IEBAIGZ1bmNfZWNob19hbGwgKCkKKyAjIEVjaG8gcHJvZ3JhbSBuYW1lIHByZWZpeGVkIG1lc3NhZ2UgdG8gc3RhbmRhcmQgZXJyb3IuCisgZnVuY19lcnJvciAoKQorIHsKKy0gICAgJEVDSE8gIiRwcm9nbmFtZSR7bW9kZSs6IH0kbW9kZTogIiR7MSsiJEAifSAxPiYyCisrICAgICRFQ0hPICIkcHJvZ25hbWU6ICR7b3B0X21vZGUrJG9wdF9tb2RlOiB9IiR7MSsiJEAifSAxPiYyCisgfQorIAorICMgZnVuY193YXJuaW5nIGFyZy4uLgorICMgRWNobyBwcm9ncmFtIG5hbWUgcHJlZml4ZWQgd2FybmluZyBtZXNzYWdlIHRvIHN0YW5kYXJkIGVycm9yLgorIGZ1bmNfd2FybmluZyAoKQorIHsKKy0gICAgJG9wdF93YXJuaW5nICYmICRFQ0hPICIkcHJvZ25hbWUke21vZGUrOiB9JG1vZGU6IHdhcm5pbmc6ICIkezErIiRAIn0gMT4mMgorKyAgICAkb3B0X3dhcm5pbmcgJiYgJEVDSE8gIiRwcm9nbmFtZTogJHtvcHRfbW9kZSskb3B0X21vZGU6IH13YXJuaW5nOiAiJHsxKyIkQCJ9IDE+JjIKKyAKKyAgICAgIyBiYXNoIGJ1ZyBhZ2FpbjoKKyAgICAgOgorQEAgLTY1NiwxOSArNjk1LDM1IEBAIGZ1bmNfc2hvd19ldmFsX2xvY2FsZSAoKQorICAgICBmaQorIH0KKyAKKy0KKy0KKysjIGZ1bmNfdHJfc2gKKysjIFR1cm4gJDEgaW50byBhIHN0cmluZyBzdWl0YWJsZSBmb3IgYSBzaGVsbCB2YXJpYWJsZSBuYW1lLgorKyMgUmVzdWx0IGlzIHN0b3JlZCBpbiAkZnVuY190cl9zaF9yZXN1bHQuICBBbGwgY2hhcmFjdGVycworKyMgbm90IGluIHRoZSBzZXQgYS16QS1aMC05XyBhcmUgcmVwbGFjZWQgd2l0aCAnXycuIEZ1cnRoZXIsCisrIyBpZiAkMSBiZWdpbnMgd2l0aCBhIGRpZ2l0LCBhICdfJyBpcyBwcmVwZW5kZWQgYXMgd2VsbC4KKytmdW5jX3RyX3NoICgpCisreworKyAgY2FzZSAkMSBpbgorKyAgWzAtOV0qIHwgKlshYS16QS1aMC05X10qKQorKyAgICBmdW5jX3RyX3NoX3Jlc3VsdD1gJEVDSE8gIiQxIiB8ICRTRUQgJ3MvXlwoWzAtOV1cKS9fXDEvOyBzL1teYS16QS1aMC05X10vXy9nJ2AKKysgICAgOzsKKysgICogKQorKyAgICBmdW5jX3RyX3NoX3Jlc3VsdD0kMQorKyAgICA7OworKyAgZXNhYworK30KKyAKKyAKKyAjIGZ1bmNfdmVyc2lvbgorICMgRWNobyB2ZXJzaW9uIG1lc3NhZ2UgdG8gc3RhbmRhcmQgb3V0cHV0IGFuZCBleGl0LgorIGZ1bmNfdmVyc2lvbiAoKQorIHsKKysgICAgJG9wdF9kZWJ1ZworKworICAgICAkU0VEIC1uICcvKEMpLyFiIGdvCisgCTptb3JlCisgCS9cLi8heworIAkgIE4KKy0JICBzL1xuIyAvLworKwkgIHMvXG4jIC8gLworIAkgIGIgbW9yZQorIAl9CisgCTpnbworQEAgLTY4NSw3ICs3NDAsOSBAQCBmdW5jX3ZlcnNpb24gKCkKKyAjIEVjaG8gc2hvcnQgaGVscCBtZXNzYWdlIHRvIHN0YW5kYXJkIG91dHB1dCBhbmQgZXhpdC4KKyBmdW5jX3VzYWdlICgpCisgeworLSAgICAkU0VEIC1uICcvXiMgVXNhZ2U6LywvXiMgICotaC8geworKyAgICAkb3B0X2RlYnVnCisrCisrICAgICRTRUQgLW4gJy9eIyBVc2FnZTovLC9eIyAgKi4qLS1oZWxwLyB7CisgICAgICAgICBzL14jIC8vCisgCXMvXiMgKiQvLworIAlzL1wkcHJvZ25hbWUvJyRwcm9nbmFtZScvCitAQCAtNzAxLDcgKzc1OCwxMCBAQCBmdW5jX3VzYWdlICgpCisgIyB1bmxlc3MgJ25vZXhpdCcgaXMgcGFzc2VkIGFzIGFyZ3VtZW50LgorIGZ1bmNfaGVscCAoKQorIHsKKysgICAgJG9wdF9kZWJ1ZworKworICAgICAkU0VEIC1uICcvXiMgVXNhZ2U6LywvIyBSZXBvcnQgYnVncyB0by8geworKwk6cHJpbnQKKyAgICAgICAgIHMvXiMgLy8KKyAJcy9eIyAqJC8vCisgCXMqXCRwcm9nbmFtZSonJHByb2duYW1lJyoKK0BAIC03MTQsNyArNzc0LDExIEBAIGZ1bmNfaGVscCAoKQorIAlzL1wkYXV0b21ha2VfdmVyc2lvbi8nImAoYXV0b21ha2UgLS12ZXJzaW9uKSAyPi9kZXYvbnVsbCB8JFNFRCAxcWAiJy8KKyAJcy9cJGF1dG9jb25mX3ZlcnNpb24vJyJgKGF1dG9jb25mIC0tdmVyc2lvbikgMj4vZGV2L251bGwgfCRTRUQgMXFgIicvCisgCXAKKy0gICAgIH0nIDwgIiRwcm9ncGF0aCIKKysJZAorKyAgICAgfQorKyAgICAgL14jIC4qIGhvbWUgcGFnZTovYiBwcmludAorKyAgICAgL14jIEdlbmVyYWwgaGVscCB1c2luZy9iIHByaW50CisrICAgICAnIDwgIiRwcm9ncGF0aCIKKyAgICAgcmV0PSQ/CisgICAgIGlmIHRlc3QgLXogIiQxIjsgdGhlbgorICAgICAgIGV4aXQgJHJldAorQEAgLTcyNiwxMiArNzkwLDM5IEBAIGZ1bmNfaGVscCAoKQorICMgZXhpdF9jbWQuCisgZnVuY19taXNzaW5nX2FyZyAoKQorIHsKKy0gICAgZnVuY19lcnJvciAibWlzc2luZyBhcmd1bWVudCBmb3IgJDEiCisrICAgICRvcHRfZGVidWcKKysKKysgICAgZnVuY19lcnJvciAibWlzc2luZyBhcmd1bWVudCBmb3IgJDEuIgorICAgICBleGl0X2NtZD1leGl0CisgfQorIAorLWV4aXRfY21kPToKKyAKKysjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IHNob3J0b3B0CisrIyBTZXQgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZSBhbmQgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIHNoZWxsCisrIyB2YXJpYWJsZXMgYWZ0ZXIgc3BsaXR0aW5nIFNIT1JUT1BUIGFmdGVyIHRoZSAybmQgY2hhcmFjdGVyLgorK2Z1bmNfc3BsaXRfc2hvcnRfb3B0ICgpCisreworKyAgICBteV9zZWRfc2hvcnRfb3B0PScxcy9eXCguLlwpLiokL1wxLztxJworKyAgICBteV9zZWRfc2hvcnRfcmVzdD0nMXMvXi4uXCguKlwpJC9cMS87cScKKysKKysgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT1gJEVDSE8gIiQxIiB8ICRTRUQgIiRteV9zZWRfc2hvcnRfb3B0ImAKKysgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnPWAkRUNITyAiJDEiIHwgJFNFRCAiJG15X3NlZF9zaG9ydF9yZXN0ImAKKyt9ICMgZnVuY19zcGxpdF9zaG9ydF9vcHQgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisrCisrCisrIyBmdW5jX3NwbGl0X2xvbmdfb3B0IGxvbmdvcHQKKysjIFNldCBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWUgYW5kIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnIHNoZWxsCisrIyB2YXJpYWJsZXMgYWZ0ZXIgc3BsaXR0aW5nIExPTkdPUFQgYXQgdGhlIGA9JyBzaWduLgorK2Z1bmNfc3BsaXRfbG9uZ19vcHQgKCkKKyt7CisrICAgIG15X3NlZF9sb25nX29wdD0nMXMvXlwoLS1bXj1dKlwpPS4qL1wxLztxJworKyAgICBteV9zZWRfbG9uZ19hcmc9JzFzL14tLVtePV0qPS8vJworKworKyAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWU9YCRFQ0hPICIkMSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfb3B0ImAKKysgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9YCRFQ0hPICIkMSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKKyt9ICMgZnVuY19zcGxpdF9sb25nX29wdCBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKysKKytleGl0X2NtZD06CisgCisgCisgCitAQCAtNzQxLDI2ICs4MzIsNjQgQEAgbWFnaWM9IiUlJU1BR0lDIHZhcmlhYmxlJSUlIgorIG1hZ2ljX2V4ZT0iJSUlTUFHSUMgRVhFIHZhcmlhYmxlJSUlIgorIAorICMgR2xvYmFsIHZhcmlhYmxlcy4KKy0jICRtb2RlIGlzIHVuc2V0Cisgbm9ub3B0PQorLWV4ZWN1dGVfZGxmaWxlcz0KKyBwcmVzZXJ2ZV9hcmdzPQorIGxvMm89InMvXFwubG9cJC8uJHtvYmpleHR9LyIKKyBvMmxvPSJzL1xcLiR7b2JqZXh0fVwkLy5sby8iCisgZXh0cmFjdGVkX2FyY2hpdmVzPQorIGV4dHJhY3RlZF9zZXJpYWw9MAorIAorLW9wdF9kcnlfcnVuPWZhbHNlCistb3B0X2ZpbmlzaD06Cistb3B0X2R1cGxpY2F0ZV9kZXBzPWZhbHNlCistb3B0X3NpbGVudD1mYWxzZQorLW9wdF9kZWJ1Zz06CistCisgIyBJZiB0aGlzIHZhcmlhYmxlIGlzIHNldCBpbiBhbnkgb2YgdGhlIGFjdGlvbnMsIHRoZSBjb21tYW5kIGluIGl0CisgIyB3aWxsIGJlIGV4ZWNlZCBhdCB0aGUgZW5kLiAgVGhpcyBwcmV2ZW50cyBoZXJlLWRvY3VtZW50cyBmcm9tIGJlaW5nCisgIyBsZWZ0IG92ZXIgYnkgc2hlbGxzLgorIGV4ZWNfY21kPQorIAorKyMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCisrIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCisrZnVuY19hcHBlbmQgKCkKKyt7CisrICAgIGV2YWwgIiR7MX09XCQkezF9XCR7Mn0iCisrfSAjIGZ1bmNfYXBwZW5kIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorKworKyMgZnVuY19hcHBlbmRfcXVvdGVkIHZhciB2YWx1ZQorKyMgUXVvdGUgVkFMVUUgYW5kIGFwcGVuZCB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUiwgc2VwYXJhdGVkCisrIyBieSBhIHNwYWNlLgorK2Z1bmNfYXBwZW5kX3F1b3RlZCAoKQorK3sKKysgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSIKKysgICAgZXZhbCAiJHsxfT1cJCR7MX1cXCBcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorK30gIyBmdW5jX2FwcGVuZF9xdW90ZWQgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisrCisrCisrIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgorK2Z1bmNfYXJpdGggKCkKKyt7CisrICAgIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIke0B9ImAKKyt9ICMgZnVuY19hcml0aCBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKysKKysKKysjIGZ1bmNfbGVuIHN0cmluZworKyMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KKytmdW5jX2xlbiAoKQorK3sKKysgICAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkezF9IiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCisrfSAjIGZ1bmNfbGVuIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorKworKworKyMgZnVuY19sbzJvIG9iamVjdAorK2Z1bmNfbG8ybyAoKQorK3sKKysgICAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGxvMm8iYAorK30gIyBmdW5jX2xvMm8gbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisrCisrCisrIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKKytmdW5jX3hmb3JtICgpCisreworKyAgICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAncy9cLlteLl0qJC8ubG8vJ2AKKyt9ICMgZnVuY194Zm9ybSBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKysKKysKKyAjIGZ1bmNfZmF0YWxfY29uZmlndXJhdGlvbiBhcmcuLi4KKyAjIEVjaG8gcHJvZ3JhbSBuYW1lIHByZWZpeGVkIG1lc3NhZ2UgdG8gc3RhbmRhcmQgZXJyb3IsIGZvbGxvd2VkIGJ5CisgIyBhIGNvbmZpZ3VyYXRpb24gZmFpbHVyZSBoaW50LCBhbmQgZXhpdC4KK0BAIC04NTAsMTMwICs5NzksMjA0IEBAIGZ1bmNfZW5hYmxlX3RhZyAoKQorICAgZXNhYworIH0KKyAKKy0jIFBhcnNlIG9wdGlvbnMgb25jZSwgdGhvcm91Z2hseS4gIFRoaXMgY29tZXMgYXMgc29vbiBhcyBwb3NzaWJsZSBpbgorLSMgdGhlIHNjcmlwdCB0byBtYWtlIHRoaW5ncyBsaWtlIGBsaWJ0b29sIC0tdmVyc2lvbicgaGFwcGVuIHF1aWNrbHkuCisrIyBmdW5jX2NoZWNrX3ZlcnNpb25fbWF0Y2gKKysjIEVuc3VyZSB0aGF0IHdlIGFyZSB1c2luZyBtNCBtYWNyb3MsIGFuZCBsaWJ0b29sIHNjcmlwdCBmcm9tIHRoZSBzYW1lCisrIyByZWxlYXNlIG9mIGxpYnRvb2wuCisrZnVuY19jaGVja192ZXJzaW9uX21hdGNoICgpCisgeworKyAgaWYgdGVzdCAiJHBhY2thZ2VfcmV2aXNpb24iICE9ICIkbWFjcm9fcmV2aXNpb24iOyB0aGVuCisrICAgIGlmIHRlc3QgIiRWRVJTSU9OIiAhPSAiJG1hY3JvX3ZlcnNpb24iOyB0aGVuCisrICAgICAgaWYgdGVzdCAteiAiJG1hY3JvX3ZlcnNpb24iOyB0aGVuCisrICAgICAgICBjYXQgPiYyIDw8X0xUX0VPRgorKyRwcm9nbmFtZTogVmVyc2lvbiBtaXNtYXRjaCBlcnJvci4gIFRoaXMgaXMgJFBBQ0tBR0UgJFZFUlNJT04sIGJ1dCB0aGUKKyskcHJvZ25hbWU6IGRlZmluaXRpb24gb2YgdGhpcyBMVF9JTklUIGNvbWVzIGZyb20gYW4gb2xkZXIgcmVsZWFzZS4KKyskcHJvZ25hbWU6IFlvdSBzaG91bGQgcmVjcmVhdGUgYWNsb2NhbC5tNCB3aXRoIG1hY3JvcyBmcm9tICRQQUNLQUdFICRWRVJTSU9OCisrJHByb2duYW1lOiBhbmQgcnVuIGF1dG9jb25mIGFnYWluLgorK19MVF9FT0YKKysgICAgICBlbHNlCisrICAgICAgICBjYXQgPiYyIDw8X0xUX0VPRgorKyRwcm9nbmFtZTogVmVyc2lvbiBtaXNtYXRjaCBlcnJvci4gIFRoaXMgaXMgJFBBQ0tBR0UgJFZFUlNJT04sIGJ1dCB0aGUKKyskcHJvZ25hbWU6IGRlZmluaXRpb24gb2YgdGhpcyBMVF9JTklUIGNvbWVzIGZyb20gJFBBQ0tBR0UgJG1hY3JvX3ZlcnNpb24uCisrJHByb2duYW1lOiBZb3Ugc2hvdWxkIHJlY3JlYXRlIGFjbG9jYWwubTQgd2l0aCBtYWNyb3MgZnJvbSAkUEFDS0FHRSAkVkVSU0lPTgorKyRwcm9nbmFtZTogYW5kIHJ1biBhdXRvY29uZiBhZ2Fpbi4KKytfTFRfRU9GCisrICAgICAgZmkKKysgICAgZWxzZQorKyAgICAgIGNhdCA+JjIgPDxfTFRfRU9GCisrJHByb2duYW1lOiBWZXJzaW9uIG1pc21hdGNoIGVycm9yLiAgVGhpcyBpcyAkUEFDS0FHRSAkVkVSU0lPTiwgcmV2aXNpb24gJHBhY2thZ2VfcmV2aXNpb24sCisrJHByb2duYW1lOiBidXQgdGhlIGRlZmluaXRpb24gb2YgdGhpcyBMVF9JTklUIGNvbWVzIGZyb20gcmV2aXNpb24gJG1hY3JvX3JldmlzaW9uLgorKyRwcm9nbmFtZTogWW91IHNob3VsZCByZWNyZWF0ZSBhY2xvY2FsLm00IHdpdGggbWFjcm9zIGZyb20gcmV2aXNpb24gJHBhY2thZ2VfcmV2aXNpb24KKyskcHJvZ25hbWU6IG9mICRQQUNLQUdFICRWRVJTSU9OIGFuZCBydW4gYXV0b2NvbmYgYWdhaW4uCisrX0xUX0VPRgorKyAgICBmaQorIAorLSAgIyBTaG9ydGhhbmQgZm9yIC0tbW9kZT1mb28sIG9ubHkgdmFsaWQgYXMgdGhlIGZpcnN0IGFyZ3VtZW50CistICBjYXNlICQxIGluCistICBjbGVhbnxjbGVhfGNsZXxjbCkKKy0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgY2xlYW4gJHsxKyIkQCJ9OyBzaGlmdAorLSAgICA7OworLSAgY29tcGlsZXxjb21waWx8Y29tcGl8Y29tcHxjb218Y298YykKKy0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgY29tcGlsZSAkezErIiRAIn07IHNoaWZ0CistICAgIDs7CistICBleGVjdXRlfGV4ZWN1dHxleGVjdXxleGVjfGV4ZXxleHxlKQorLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBleGVjdXRlICR7MSsiJEAifTsgc2hpZnQKKy0gICAgOzsKKy0gIGZpbmlzaHxmaW5pc3xmaW5pfGZpbnxmaXxmKQorLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBmaW5pc2ggJHsxKyIkQCJ9OyBzaGlmdAorLSAgICA7OworLSAgaW5zdGFsbHxpbnN0YWx8aW5zdGF8aW5zdHxpbnN8aW58aSkKKy0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgaW5zdGFsbCAkezErIiRAIn07IHNoaWZ0CistICAgIDs7CistICBsaW5rfGxpbnxsaXxsKQorLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBsaW5rICR7MSsiJEAifTsgc2hpZnQKKy0gICAgOzsKKy0gIHVuaW5zdGFsbHx1bmluc3RhbHx1bmluc3RhfHVuaW5zdHx1bmluc3x1bmlufHVuaXx1bnx1KQorLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSB1bmluc3RhbGwgJHsxKyIkQCJ9OyBzaGlmdAorLSAgICA7OworLSAgZXNhYworKyAgICBleGl0ICRFWElUX01JU01BVENICisrICBmaQorK30KKysKKysKKysjIFNob3J0aGFuZCBmb3IgLS1tb2RlPWZvbywgb25seSB2YWxpZCBhcyB0aGUgZmlyc3QgYXJndW1lbnQKKytjYXNlICQxIGluCisrY2xlYW58Y2xlYXxjbGV8Y2wpCisrICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBjbGVhbiAkezErIiRAIn07IHNoaWZ0CisrICA7OworK2NvbXBpbGV8Y29tcGlsfGNvbXBpfGNvbXB8Y29tfGNvfGMpCisrICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBjb21waWxlICR7MSsiJEAifTsgc2hpZnQKKysgIDs7CisrZXhlY3V0ZXxleGVjdXR8ZXhlY3V8ZXhlY3xleGV8ZXh8ZSkKKysgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGV4ZWN1dGUgJHsxKyIkQCJ9OyBzaGlmdAorKyAgOzsKKytmaW5pc2h8ZmluaXN8ZmluaXxmaW58Zml8ZikKKysgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGZpbmlzaCAkezErIiRAIn07IHNoaWZ0CisrICA7OworK2luc3RhbGx8aW5zdGFsfGluc3RhfGluc3R8aW5zfGlufGkpCisrICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBpbnN0YWxsICR7MSsiJEAifTsgc2hpZnQKKysgIDs7CisrbGlua3xsaW58bGl8bCkKKysgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGxpbmsgJHsxKyIkQCJ9OyBzaGlmdAorKyAgOzsKKyt1bmluc3RhbGx8dW5pbnN0YWx8dW5pbnN0YXx1bmluc3R8dW5pbnN8dW5pbnx1bml8dW58dSkKKysgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIHVuaW5zdGFsbCAkezErIiRAIn07IHNoaWZ0CisrICA7OworK2VzYWMKKyAKKy0gICMgUGFyc2Ugbm9uLW1vZGUgc3BlY2lmaWMgYXJndW1lbnRzOgorLSAgd2hpbGUgdGVzdCAiJCMiIC1ndCAwOyBkbworKworKworKyMgT3B0aW9uIGRlZmF1bHRzOgorK29wdF9kZWJ1Zz06Cisrb3B0X2RyeV9ydW49ZmFsc2UKKytvcHRfY29uZmlnPWZhbHNlCisrb3B0X3ByZXNlcnZlX2R1cF9kZXBzPWZhbHNlCisrb3B0X2ZlYXR1cmVzPWZhbHNlCisrb3B0X2ZpbmlzaD1mYWxzZQorK29wdF9oZWxwPWZhbHNlCisrb3B0X2hlbHBfYWxsPWZhbHNlCisrb3B0X3NpbGVudD06Cisrb3B0X3ZlcmJvc2U9OgorK29wdF9zaWxlbnQ9ZmFsc2UKKytvcHRfdmVyYm9zZT1mYWxzZQorKworKworKyMgUGFyc2Ugb3B0aW9ucyBvbmNlLCB0aG9yb3VnaGx5LiAgVGhpcyBjb21lcyBhcyBzb29uIGFzIHBvc3NpYmxlIGluIHRoZQorKyMgc2NyaXB0IHRvIG1ha2UgdGhpbmdzIGxpa2UgYC0tdmVyc2lvbicgaGFwcGVuIGFzIHF1aWNrbHkgYXMgd2UgY2FuLgorK3sKKysgICMgdGhpcyBqdXN0IGVhc2VzIGV4aXQgaGFuZGxpbmcKKysgIHdoaWxlIHRlc3QgJCMgLWd0IDA7IGRvCisgICAgIG9wdD0iJDEiCisgICAgIHNoaWZ0CistCisgICAgIGNhc2UgJG9wdCBpbgorLSAgICAgIC0tY29uZmlnKQkJZnVuY19jb25maWcJCQkJCTs7CistCistICAgICAgLS1kZWJ1ZykJCXByZXNlcnZlX2FyZ3M9IiRwcmVzZXJ2ZV9hcmdzICRvcHQiCisrICAgICAgLS1kZWJ1Z3wteCkJb3B0X2RlYnVnPSdzZXQgLXgnCisgCQkJZnVuY19lY2hvICJlbmFibGluZyBzaGVsbCB0cmFjZSBtb2RlIgorLQkJCW9wdF9kZWJ1Zz0nc2V0IC14JworIAkJCSRvcHRfZGVidWcKKyAJCQk7OworLQorLSAgICAgIC1kbG9wZW4pCQl0ZXN0ICIkIyIgLWVxIDAgJiYgZnVuY19taXNzaW5nX2FyZyAiJG9wdCIgJiYgYnJlYWsKKy0JCQlleGVjdXRlX2RsZmlsZXM9IiRleGVjdXRlX2RsZmlsZXMgJDEiCistCQkJc2hpZnQKKysgICAgICAtLWRyeS1ydW58LS1kcnlydW58LW4pCisrCQkJb3B0X2RyeV9ydW49OgorIAkJCTs7CistCistICAgICAgLS1kcnktcnVuIHwgLW4pCW9wdF9kcnlfcnVuPToJCQkJCTs7CistICAgICAgLS1mZWF0dXJlcykgICAgICAgZnVuY19mZWF0dXJlcwkJCQkJOzsKKy0gICAgICAtLWZpbmlzaCkJCW1vZGU9ImZpbmlzaCIJCQkJCTs7CistICAgICAgLS1uby1maW5pc2gpCW9wdF9maW5pc2g9ZmFsc2UJCQkJOzsKKy0KKy0gICAgICAtLW1vZGUpCQl0ZXN0ICIkIyIgLWVxIDAgJiYgZnVuY19taXNzaW5nX2FyZyAiJG9wdCIgJiYgYnJlYWsKKy0JCQljYXNlICQxIGluCistCQkJICAjIFZhbGlkIG1vZGUgYXJndW1lbnRzOgorLQkJCSAgY2xlYW4pCTs7CistCQkJICBjb21waWxlKQk7OworLQkJCSAgZXhlY3V0ZSkJOzsKKy0JCQkgIGZpbmlzaCkJOzsKKy0JCQkgIGluc3RhbGwpCTs7CistCQkJICBsaW5rKQkJOzsKKy0JCQkgIHJlbGluaykJOzsKKy0JCQkgIHVuaW5zdGFsbCkJOzsKKy0KKy0JCQkgICMgQ2F0Y2ggYW55dGhpbmcgZWxzZSBhcyBhbiBlcnJvcgorLQkJCSAgKikgZnVuY19lcnJvciAiaW52YWxpZCBhcmd1bWVudCBmb3IgJG9wdCIKKy0JCQkgICAgIGV4aXRfY21kPWV4aXQKKy0JCQkgICAgIGJyZWFrCistCQkJICAgICA7OworLQkJICAgICAgICBlc2FjCistCistCQkJbW9kZT0iJDEiCisrICAgICAgLS1jb25maWcpCisrCQkJb3B0X2NvbmZpZz06CisrZnVuY19jb25maWcKKysJCQk7OworKyAgICAgIC0tZGxvcGVufC1kbG9wZW4pCisrCQkJb3B0YXJnPSIkMSIKKysJCQlvcHRfZGxvcGVuPSIke29wdF9kbG9wZW4rJG9wdF9kbG9wZW4KKyt9JG9wdGFyZyIKKyAJCQlzaGlmdAorIAkJCTs7CistCisgICAgICAgLS1wcmVzZXJ2ZS1kdXAtZGVwcykKKy0JCQlvcHRfZHVwbGljYXRlX2RlcHM9OgkJCQk7OworLQorLSAgICAgIC0tcXVpZXR8LS1zaWxlbnQpCXByZXNlcnZlX2FyZ3M9IiRwcmVzZXJ2ZV9hcmdzICRvcHQiCistCQkJb3B0X3NpbGVudD06CistCQkJb3B0X3ZlcmJvc2U9ZmFsc2UKKysJCQlvcHRfcHJlc2VydmVfZHVwX2RlcHM9OgorIAkJCTs7CistCistICAgICAgLS1uby1xdWlldHwtLW5vLXNpbGVudCkKKy0JCQlwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAkb3B0IgorLQkJCW9wdF9zaWxlbnQ9ZmFsc2UKKysgICAgICAtLWZlYXR1cmVzKQorKwkJCW9wdF9mZWF0dXJlcz06CisrZnVuY19mZWF0dXJlcworIAkJCTs7CistCistICAgICAgLS12ZXJib3NlfCAtdikJcHJlc2VydmVfYXJncz0iJHByZXNlcnZlX2FyZ3MgJG9wdCIKKysgICAgICAtLWZpbmlzaCkKKysJCQlvcHRfZmluaXNoPToKKytzZXQgZHVtbXkgLS1tb2RlIGZpbmlzaCAkezErIiRAIn07IHNoaWZ0CisrCQkJOzsKKysgICAgICAtLWhlbHApCisrCQkJb3B0X2hlbHA9OgorKwkJCTs7CisrICAgICAgLS1oZWxwLWFsbCkKKysJCQlvcHRfaGVscF9hbGw9OgorK29wdF9oZWxwPSc6IGhlbHAtYWxsJworKwkJCTs7CisrICAgICAgLS1tb2RlKQorKwkJCXRlc3QgJCMgPSAwICYmIGZ1bmNfbWlzc2luZ19hcmcgJG9wdCAmJiBicmVhaworKwkJCW9wdGFyZz0iJDEiCisrCQkJb3B0X21vZGU9IiRvcHRhcmciCisrY2FzZSAkb3B0YXJnIGluCisrICAjIFZhbGlkIG1vZGUgYXJndW1lbnRzOgorKyAgY2xlYW58Y29tcGlsZXxleGVjdXRlfGZpbmlzaHxpbnN0YWxsfGxpbmt8cmVsaW5rfHVuaW5zdGFsbCkgOzsKKysKKysgICMgQ2F0Y2ggYW55dGhpbmcgZWxzZSBhcyBhbiBlcnJvcgorKyAgKikgZnVuY19lcnJvciAiaW52YWxpZCBhcmd1bWVudCBmb3IgJG9wdCIKKysgICAgIGV4aXRfY21kPWV4aXQKKysgICAgIGJyZWFrCisrICAgICA7OworK2VzYWMKKysJCQlzaGlmdAorKwkJCTs7CisrICAgICAgLS1uby1zaWxlbnR8LS1uby1xdWlldCkKKyAJCQlvcHRfc2lsZW50PWZhbHNlCistCQkJb3B0X3ZlcmJvc2U9OgorK2Z1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAkb3B0IgorIAkJCTs7CistCistICAgICAgLS1uby12ZXJib3NlKQlwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAkb3B0IgorKyAgICAgIC0tbm8tdmVyYm9zZSkKKyAJCQlvcHRfdmVyYm9zZT1mYWxzZQorK2Z1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAkb3B0IgorIAkJCTs7CistCistICAgICAgLS10YWcpCQl0ZXN0ICIkIyIgLWVxIDAgJiYgZnVuY19taXNzaW5nX2FyZyAiJG9wdCIgJiYgYnJlYWsKKy0JCQlwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAkb3B0ICQxIgorLQkJCWZ1bmNfZW5hYmxlX3RhZyAiJDEiCSMgdGFnbmFtZSBpcyBzZXQgaGVyZQorKyAgICAgIC0tc2lsZW50fC0tcXVpZXQpCisrCQkJb3B0X3NpbGVudD06CisrZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiICRvcHQiCisrICAgICAgICBvcHRfdmVyYm9zZT1mYWxzZQorKwkJCTs7CisrICAgICAgLS12ZXJib3NlfC12KQorKwkJCW9wdF92ZXJib3NlPToKKytmdW5jX2FwcGVuZCBwcmVzZXJ2ZV9hcmdzICIgJG9wdCIKKytvcHRfc2lsZW50PWZhbHNlCisrCQkJOzsKKysgICAgICAtLXRhZykKKysJCQl0ZXN0ICQjID0gMCAmJiBmdW5jX21pc3NpbmdfYXJnICRvcHQgJiYgYnJlYWsKKysJCQlvcHRhcmc9IiQxIgorKwkJCW9wdF90YWc9IiRvcHRhcmciCisrZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiICRvcHQgJG9wdGFyZyIKKytmdW5jX2VuYWJsZV90YWcgIiRvcHRhcmciCisgCQkJc2hpZnQKKyAJCQk7OworIAorKyAgICAgIC1cP3wtaCkJCWZ1bmNfdXNhZ2UJCQkJOzsKKysgICAgICAtLWhlbHApCQlmdW5jX2hlbHAJCQkJOzsKKysgICAgICAtLXZlcnNpb24pCWZ1bmNfdmVyc2lvbgkJCQk7OworKworICAgICAgICMgU2VwYXJhdGUgb3B0YXJncyB0byBsb25nIG9wdGlvbnM6CistICAgICAgLWRsb3Blbj0qfC0tbW9kZT0qfC0tdGFnPSopCistCQkJZnVuY19vcHRfc3BsaXQgIiRvcHQiCistCQkJc2V0IGR1bW15ICIkZnVuY19vcHRfc3BsaXRfb3B0IiAiJGZ1bmNfb3B0X3NwbGl0X2FyZyIgJHsxKyIkQCJ9CisrICAgICAgLS0qPSopCisrCQkJZnVuY19zcGxpdF9sb25nX29wdCAiJG9wdCIKKysJCQlzZXQgZHVtbXkgIiRmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWUiICIkZnVuY19zcGxpdF9sb25nX29wdF9hcmciICR7MSsiJEAifQorIAkJCXNoaWZ0CisgCQkJOzsKKyAKKy0gICAgICAtXD98LWgpCQlmdW5jX3VzYWdlCQkJCQk7OworLSAgICAgIC0taGVscCkJCW9wdF9oZWxwPToJCQkJCTs7CistICAgICAgLS1oZWxwLWFsbCkJb3B0X2hlbHA9JzogaGVscC1hbGwnCQkJCTs7CistICAgICAgLS12ZXJzaW9uKQlmdW5jX3ZlcnNpb24JCQkJCTs7CistCistICAgICAgLSopCQlmdW5jX2ZhdGFsX2hlbHAgInVucmVjb2duaXplZCBvcHRpb24gXGAkb3B0JyIJOzsKKy0KKy0gICAgICAqKQkJbm9ub3B0PSIkb3B0IgorLQkJCWJyZWFrCisrICAgICAgIyBTZXBhcmF0ZSBub24tYXJndW1lbnQgc2hvcnQgb3B0aW9uczoKKysgICAgICAtXD8qfC1oKnwtbip8LXYqKQorKwkJCWZ1bmNfc3BsaXRfc2hvcnRfb3B0ICIkb3B0IgorKwkJCXNldCBkdW1teSAiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWUiICItJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyIgJHsxKyIkQCJ9CisrCQkJc2hpZnQKKyAJCQk7OworKworKyAgICAgIC0tKQkJYnJlYWsJCQkJCTs7CisrICAgICAgLSopCQlmdW5jX2ZhdGFsX2hlbHAgInVucmVjb2duaXplZCBvcHRpb24gXGAkb3B0JyIgOzsKKysgICAgICAqKQkJc2V0IGR1bW15ICIkb3B0IiAkezErIiRAIn07CXNoaWZ0OyBicmVhayAgOzsKKyAgICAgZXNhYworICAgZG9uZQorIAorKyAgIyBWYWxpZGF0ZSBvcHRpb25zOgorKworKyAgIyBzYXZlIGZpcnN0IG5vbi1vcHRpb24gYXJndW1lbnQKKysgIGlmIHRlc3QgIiQjIiAtZ3QgMDsgdGhlbgorKyAgICBub25vcHQ9IiRvcHQiCisrICAgIHNoaWZ0CisrICBmaQorKworKyAgIyBwcmVzZXJ2ZSAtLWRlYnVnCisrICB0ZXN0ICIkb3B0X2RlYnVnIiA9IDogfHwgZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiIC0tZGVidWciCisgCisgICBjYXNlICRob3N0IGluCisgICAgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpwdzMyKiB8ICpjZWdjYyogfCAqc29sYXJpczIqICkKK0BAIC05ODEsODIgKzExODQsNDQgQEAgZnVuY19lbmFibGVfdGFnICgpCisgICAgICAgb3B0X2R1cGxpY2F0ZV9jb21waWxlcl9nZW5lcmF0ZWRfZGVwcz06CisgICAgICAgOzsKKyAgICAgKikKKy0gICAgICBvcHRfZHVwbGljYXRlX2NvbXBpbGVyX2dlbmVyYXRlZF9kZXBzPSRvcHRfZHVwbGljYXRlX2RlcHMKKysgICAgICBvcHRfZHVwbGljYXRlX2NvbXBpbGVyX2dlbmVyYXRlZF9kZXBzPSRvcHRfcHJlc2VydmVfZHVwX2RlcHMKKyAgICAgICA7OworICAgZXNhYworIAorLSAgIyBIYXZpbmcgd2FybmVkIGFib3V0IGFsbCBtaXMtc3BlY2lmaWVkIG9wdGlvbnMsIGJhaWwgb3V0IGlmCistICAjIGFueXRoaW5nIHdhcyB3cm9uZy4KKy0gICRleGl0X2NtZCAkRVhJVF9GQUlMVVJFCistfQorKyAgJG9wdF9oZWxwIHx8IHsKKysgICAgIyBTYW5pdHkgY2hlY2tzIGZpcnN0OgorKyAgICBmdW5jX2NoZWNrX3ZlcnNpb25fbWF0Y2gKKyAKKy0jIGZ1bmNfY2hlY2tfdmVyc2lvbl9tYXRjaAorLSMgRW5zdXJlIHRoYXQgd2UgYXJlIHVzaW5nIG00IG1hY3JvcywgYW5kIGxpYnRvb2wgc2NyaXB0IGZyb20gdGhlIHNhbWUKKy0jIHJlbGVhc2Ugb2YgbGlidG9vbC4KKy1mdW5jX2NoZWNrX3ZlcnNpb25fbWF0Y2ggKCkKKy17CistICBpZiB0ZXN0ICIkcGFja2FnZV9yZXZpc2lvbiIgIT0gIiRtYWNyb19yZXZpc2lvbiI7IHRoZW4KKy0gICAgaWYgdGVzdCAiJFZFUlNJT04iICE9ICIkbWFjcm9fdmVyc2lvbiI7IHRoZW4KKy0gICAgICBpZiB0ZXN0IC16ICIkbWFjcm9fdmVyc2lvbiI7IHRoZW4KKy0gICAgICAgIGNhdCA+JjIgPDxfTFRfRU9GCistJHByb2duYW1lOiBWZXJzaW9uIG1pc21hdGNoIGVycm9yLiAgVGhpcyBpcyAkUEFDS0FHRSAkVkVSU0lPTiwgYnV0IHRoZQorLSRwcm9nbmFtZTogZGVmaW5pdGlvbiBvZiB0aGlzIExUX0lOSVQgY29tZXMgZnJvbSBhbiBvbGRlciByZWxlYXNlLgorLSRwcm9nbmFtZTogWW91IHNob3VsZCByZWNyZWF0ZSBhY2xvY2FsLm00IHdpdGggbWFjcm9zIGZyb20gJFBBQ0tBR0UgJFZFUlNJT04KKy0kcHJvZ25hbWU6IGFuZCBydW4gYXV0b2NvbmYgYWdhaW4uCistX0xUX0VPRgorLSAgICAgIGVsc2UKKy0gICAgICAgIGNhdCA+JjIgPDxfTFRfRU9GCistJHByb2duYW1lOiBWZXJzaW9uIG1pc21hdGNoIGVycm9yLiAgVGhpcyBpcyAkUEFDS0FHRSAkVkVSU0lPTiwgYnV0IHRoZQorLSRwcm9nbmFtZTogZGVmaW5pdGlvbiBvZiB0aGlzIExUX0lOSVQgY29tZXMgZnJvbSAkUEFDS0FHRSAkbWFjcm9fdmVyc2lvbi4KKy0kcHJvZ25hbWU6IFlvdSBzaG91bGQgcmVjcmVhdGUgYWNsb2NhbC5tNCB3aXRoIG1hY3JvcyBmcm9tICRQQUNLQUdFICRWRVJTSU9OCistJHByb2duYW1lOiBhbmQgcnVuIGF1dG9jb25mIGFnYWluLgorLV9MVF9FT0YKKy0gICAgICBmaQorLSAgICBlbHNlCistICAgICAgY2F0ID4mMiA8PF9MVF9FT0YKKy0kcHJvZ25hbWU6IFZlcnNpb24gbWlzbWF0Y2ggZXJyb3IuICBUaGlzIGlzICRQQUNLQUdFICRWRVJTSU9OLCByZXZpc2lvbiAkcGFja2FnZV9yZXZpc2lvbiwKKy0kcHJvZ25hbWU6IGJ1dCB0aGUgZGVmaW5pdGlvbiBvZiB0aGlzIExUX0lOSVQgY29tZXMgZnJvbSByZXZpc2lvbiAkbWFjcm9fcmV2aXNpb24uCistJHByb2duYW1lOiBZb3Ugc2hvdWxkIHJlY3JlYXRlIGFjbG9jYWwubTQgd2l0aCBtYWNyb3MgZnJvbSByZXZpc2lvbiAkcGFja2FnZV9yZXZpc2lvbgorLSRwcm9nbmFtZTogb2YgJFBBQ0tBR0UgJFZFUlNJT04gYW5kIHJ1biBhdXRvY29uZiBhZ2Fpbi4KKy1fTFRfRU9GCisrICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IHllcyAmJiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiICE9IHllczsgdGhlbgorKyAgICAgIGZ1bmNfZmF0YWxfY29uZmlndXJhdGlvbiAibm90IGNvbmZpZ3VyZWQgdG8gYnVpbGQgYW55IGtpbmQgb2YgbGlicmFyeSIKKyAgICAgZmkKKyAKKy0gICAgZXhpdCAkRVhJVF9NSVNNQVRDSAorLSAgZmkKKy19CistCisrICAgICMgRGFyd2luIHN1Y2tzCisrICAgIGV2YWwgc3RkX3NocmV4dD1cIiRzaHJleHRfY21kc1wiCisgCistIyMgLS0tLS0tLS0tLS0gIyMKKy0jIyAgICBNYWluLiAgICAjIworLSMjIC0tLS0tLS0tLS0tICMjCistCistJG9wdF9oZWxwIHx8IHsKKy0gICMgU2FuaXR5IGNoZWNrcyBmaXJzdDoKKy0gIGZ1bmNfY2hlY2tfdmVyc2lvbl9tYXRjaAorLQorLSAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0geWVzICYmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgIT0geWVzOyB0aGVuCistICAgIGZ1bmNfZmF0YWxfY29uZmlndXJhdGlvbiAibm90IGNvbmZpZ3VyZWQgdG8gYnVpbGQgYW55IGtpbmQgb2YgbGlicmFyeSIKKy0gIGZpCisrICAgICMgT25seSBleGVjdXRlIG1vZGUgaXMgYWxsb3dlZCB0byBoYXZlIC1kbG9wZW4gZmxhZ3MuCisrICAgIGlmIHRlc3QgLW4gIiRvcHRfZGxvcGVuIiAmJiB0ZXN0ICIkb3B0X21vZGUiICE9IGV4ZWN1dGU7IHRoZW4KKysgICAgICBmdW5jX2Vycm9yICJ1bnJlY29nbml6ZWQgb3B0aW9uIFxgLWRsb3BlbiciCisrICAgICAgJEVDSE8gIiRoZWxwIiAxPiYyCisrICAgICAgZXhpdCAkRVhJVF9GQUlMVVJFCisrICAgIGZpCisgCistICB0ZXN0IC16ICIkbW9kZSIgJiYgZnVuY19mYXRhbF9lcnJvciAiZXJyb3I6IHlvdSBtdXN0IHNwZWNpZnkgYSBNT0RFLiIKKysgICAgIyBDaGFuZ2UgdGhlIGhlbHAgbWVzc2FnZSB0byBhIG1vZGUtc3BlY2lmaWMgb25lLgorKyAgICBnZW5lcmljX2hlbHA9IiRoZWxwIgorKyAgICBoZWxwPSJUcnkgXGAkcHJvZ25hbWUgLS1oZWxwIC0tbW9kZT0kb3B0X21vZGUnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIKKysgIH0KKyAKKyAKKy0gICMgRGFyd2luIHN1Y2tzCistICBldmFsICJzdGRfc2hyZXh0PVwiJHNocmV4dF9jbWRzXCIiCisrICAjIEJhaWwgaWYgdGhlIG9wdGlvbnMgd2VyZSBzY3Jld2VkCisrICAkZXhpdF9jbWQgJEVYSVRfRkFJTFVSRQorK30KKyAKKyAKKy0gICMgT25seSBleGVjdXRlIG1vZGUgaXMgYWxsb3dlZCB0byBoYXZlIC1kbG9wZW4gZmxhZ3MuCistICBpZiB0ZXN0IC1uICIkZXhlY3V0ZV9kbGZpbGVzIiAmJiB0ZXN0ICIkbW9kZSIgIT0gZXhlY3V0ZTsgdGhlbgorLSAgICBmdW5jX2Vycm9yICJ1bnJlY29nbml6ZWQgb3B0aW9uIFxgLWRsb3BlbiciCistICAgICRFQ0hPICIkaGVscCIgMT4mMgorLSAgICBleGl0ICRFWElUX0ZBSUxVUkUKKy0gIGZpCisgCistICAjIENoYW5nZSB0aGUgaGVscCBtZXNzYWdlIHRvIGEgbW9kZS1zcGVjaWZpYyBvbmUuCistICBnZW5lcmljX2hlbHA9IiRoZWxwIgorLSAgaGVscD0iVHJ5IFxgJHByb2duYW1lIC0taGVscCAtLW1vZGU9JG1vZGUnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIKKy19CisgCisrIyMgLS0tLS0tLS0tLS0gIyMKKysjIyAgICBNYWluLiAgICAjIworKyMjIC0tLS0tLS0tLS0tICMjCisgCisgIyBmdW5jX2xhbGliX3AgZmlsZQorICMgVHJ1ZSBpZmYgRklMRSBpcyBhIGxpYnRvb2wgYC5sYScgbGlicmFyeSBvciBgLmxvJyBvYmplY3QgZmlsZS4KK0BAIC0xMTIxLDEyICsxMjg2LDkgQEAgZnVuY19sdHdyYXBwZXJfZXhlY3V0YWJsZV9wICgpCisgIyB0ZW1wb3JhcnkgbHR3cmFwcGVyX3NjcmlwdC4KKyBmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lICgpCisgeworLSAgICBmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdD0iIgorLSAgICBpZiBmdW5jX2x0d3JhcHBlcl9leGVjdXRhYmxlX3AgIiQxIjsgdGhlbgorLQlmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICIkMSIgIiIgIi4iCistCWZ1bmNfc3RyaXBuYW1lICcnICcuZXhlJyAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorLQlmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQvJG9iamRpci8ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdH1fbHRzaHdyYXBwZXIiCistICAgIGZpCisrICAgIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgIiQxIiAiIiAiLiIKKysgICAgZnVuY19zdHJpcG5hbWUgJycgJy5leGUnICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCisrICAgIGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdC8kb2JqZGlyLyR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0fV9sdHNod3JhcHBlciIKKyB9CisgCisgIyBmdW5jX2x0d3JhcHBlcl9wIGZpbGUKK0BAIC0xMTQ5LDcgKzEzMTEsNyBAQCBmdW5jX2V4ZWN1dGVfY21kcyAoKQorICAgICBzYXZlX2lmcz0kSUZTOyBJRlM9J34nCisgICAgIGZvciBjbWQgaW4gJDE7IGRvCisgICAgICAgSUZTPSRzYXZlX2lmcworLSAgICAgIGV2YWwgImNtZD1cIiRjbWRcIiIKKysgICAgICBldmFsIGNtZD1cIiRjbWRcIgorICAgICAgIGZ1bmNfc2hvd19ldmFsICIkY21kIiAiJHsyLTp9IgorICAgICBkb25lCisgICAgIElGUz0kc2F2ZV9pZnMKK0BAIC0xMTcyLDYgKzEzMzQsMzcgQEAgZnVuY19zb3VyY2UgKCkKKyB9CisgCisgCisrIyBmdW5jX3Jlc29sdmVfc3lzcm9vdCBQQVRICisrIyBSZXBsYWNlIGEgbGVhZGluZyA9IGluIFBBVEggd2l0aCBhIHN5c3Jvb3QuICBTdG9yZSB0aGUgcmVzdWx0IGludG8KKysjIGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAorK2Z1bmNfcmVzb2x2ZV9zeXNyb290ICgpCisreworKyAgZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0PSQxCisrICBjYXNlICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQgaW4KKysgID0qKQorKyAgICBmdW5jX3N0cmlwbmFtZSAnPScgJycgIiRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCisrICAgIGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdD0kbHRfc3lzcm9vdCRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKysgICAgOzsKKysgIGVzYWMKKyt9CisrCisrIyBmdW5jX3JlcGxhY2Vfc3lzcm9vdCBQQVRICisrIyBJZiBQQVRIIGJlZ2lucyB3aXRoIHRoZSBzeXNyb290LCByZXBsYWNlIGl0IHdpdGggPSBhbmQKKysjIHN0b3JlIHRoZSByZXN1bHQgaW50byBmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQuCisrZnVuY19yZXBsYWNlX3N5c3Jvb3QgKCkKKyt7CisrICBjYXNlICIkbHRfc3lzcm9vdDokMSIgaW4KKysgID8qOiIkbHRfc3lzcm9vdCIqKQorKyAgICBmdW5jX3N0cmlwbmFtZSAiJGx0X3N5c3Jvb3QiICcnICIkMSIKKysgICAgZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0PSI9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKysgICAgOzsKKysgICopCisrICAgICMgSW5jbHVkaW5nIG5vIHN5c3Jvb3QuCisrICAgIGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdD0kMQorKyAgICA7OworKyAgZXNhYworK30KKysKKyAjIGZ1bmNfaW5mZXJfdGFnIGFyZworICMgSW5mZXIgdGFnZ2VkIGNvbmZpZ3VyYXRpb24gdG8gdXNlIGlmIGFueSBhcmUgYXZhaWxhYmxlIGFuZAorICMgaWYgb25lIHdhc24ndCBjaG9zZW4gdmlhIHRoZSAiLS10YWciIGNvbW1hbmQgbGluZSBvcHRpb24uCitAQCAtMTE4NCw4ICsxMzc3LDcgQEAgZnVuY19pbmZlcl90YWcgKCkKKyAgICAgaWYgdGVzdCAtbiAiJGF2YWlsYWJsZV90YWdzIiAmJiB0ZXN0IC16ICIkdGFnbmFtZSI7IHRoZW4KKyAgICAgICBDQ19xdW90ZWQ9CisgICAgICAgZm9yIGFyZyBpbiAkQ0M7IGRvCistICAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgorLQlDQ19xdW90ZWQ9IiRDQ19xdW90ZWQgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorKwlmdW5jX2FwcGVuZF9xdW90ZWQgQ0NfcXVvdGVkICIkYXJnIgorICAgICAgIGRvbmUKKyAgICAgICBDQ19leHBhbmRlZD1gZnVuY19lY2hvX2FsbCAkQ0NgCisgICAgICAgQ0NfcXVvdGVkX2V4cGFuZGVkPWBmdW5jX2VjaG9fYWxsICRDQ19xdW90ZWRgCitAQCAtMTIwNCw4ICsxMzk2LDcgQEAgZnVuY19pbmZlcl90YWcgKCkKKyAJICAgIENDX3F1b3RlZD0KKyAJICAgIGZvciBhcmcgaW4gJENDOyBkbworIAkgICAgICAjIERvdWJsZS1xdW90ZSBhcmdzIGNvbnRhaW5pbmcgb3RoZXIgc2hlbGwgbWV0YWNoYXJhY3RlcnMuCistCSAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCistCSAgICAgIENDX3F1b3RlZD0iJENDX3F1b3RlZCAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisrCSAgICAgIGZ1bmNfYXBwZW5kX3F1b3RlZCBDQ19xdW90ZWQgIiRhcmciCisgCSAgICBkb25lCisgCSAgICBDQ19leHBhbmRlZD1gZnVuY19lY2hvX2FsbCAkQ0NgCisgCSAgICBDQ19xdW90ZWRfZXhwYW5kZWQ9YGZ1bmNfZWNob19hbGwgJENDX3F1b3RlZGAKK0BAIC0xMjc0LDYgKzE0NjUsNDg2IEBAIEVPRgorICAgICB9CisgfQorIAorKworKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisrIyBGSUxFIE5BTUUgQU5EIFBBVEggQ09OVkVSU0lPTiBIRUxQRVIgRlVOQ1RJT05TICMKKysjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworKworKyMgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMiBBUkcKKysjIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IGZpbGUgbmFtZSBjb252ZXJzaW9uIGZ1bmN0aW9ucyB3aGVuICRidWlsZCBpcyAqbml4LAorKyMgYW5kICRob3N0IGlzIG1pbmd3LCBjeWd3aW4sIG9yIHNvbWUgb3RoZXIgdzMyIGVudmlyb25tZW50LiBSZWxpZXMgb24gYQorKyMgY29ycmVjdGx5IGNvbmZpZ3VyZWQgd2luZSBlbnZpcm9ubWVudCBhdmFpbGFibGUsIHdpdGggdGhlIHdpbmVwYXRoIHByb2dyYW0KKysjIGluICRidWlsZCdzICRQQVRILgorKyMKKysjIEFSRyBpcyB0aGUgJGJ1aWxkIGZpbGUgbmFtZSB0byBiZSBjb252ZXJ0ZWQgdG8gdzMyIGZvcm1hdC4KKysjIFJlc3VsdCBpcyBhdmFpbGFibGUgaW4gJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0LCBhbmQgd2lsbAorKyMgYmUgZW1wdHkgb24gZXJyb3IgKG9yIHdoZW4gQVJHIGlzIGVtcHR5KQorK2Z1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzIgKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdD0iJDEiCisrICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKysgICAgIyBVbmZvcnR1bmF0ZWx5LCB3aW5lcGF0aCBkb2VzIG5vdCBleGl0IHdpdGggYSBub24temVybyBlcnJvciBjb2RlLCBzbyB3ZQorKyAgICAjIGFyZSBmb3JjZWQgdG8gY2hlY2sgdGhlIGNvbnRlbnRzIG9mIHN0ZG91dC4gT24gdGhlIG90aGVyIGhhbmQsIGlmIHRoZQorKyAgICAjIGNvbW1hbmQgaXMgbm90IGZvdW5kLCB0aGUgc2hlbGwgd2lsbCBzZXQgYW4gZXhpdCBjb2RlIG9mIDEyNyBhbmQgcHJpbnQKKysgICAgIyAqYW4gZXJyb3IgbWVzc2FnZSogdG8gc3Rkb3V0LiBTbyB3ZSBtdXN0IGNoZWNrIGZvciBib3RoIGVycm9yIGNvZGUgb2YKKysgICAgIyB6ZXJvIEFORCBub24tZW1wdHkgc3Rkb3V0LCB3aGljaCBleHBsYWlucyB0aGUgb2RkIGNvbnN0cnVjdGlvbjoKKysgICAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl90bXA9YHdpbmVwYXRoIC13ICIkMSIgMj4vZGV2L251bGxgCisrICAgIGlmIHRlc3QgIiQ/IiAtZXEgMCAmJiB0ZXN0IC1uICIke2Z1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfdG1wfSI7IHRoZW4KKysgICAgICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdD1gJEVDSE8gIiRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3RtcCIgfAorKyAgICAgICAgJFNFRCAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAorKyAgICBlbHNlCisrICAgICAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQ9CisrICAgIGZpCisrICBmaQorK30KKysjIGVuZDogZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMgorKworKworKyMgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMiBBUkcKKysjIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IHBhdGggY29udmVyc2lvbiBmdW5jdGlvbnMgd2hlbiAkYnVpbGQgaXMgKm5peCwgYW5kCisrIyAkaG9zdCBpcyBtaW5ndywgY3lnd2luLCBvciBzb21lIG90aGVyIHczMiBlbnZpcm9ubWVudC4gUmVsaWVzIG9uIGEgY29ycmVjdGx5CisrIyBjb25maWd1cmVkIHdpbmUgZW52aXJvbm1lbnQgYXZhaWxhYmxlLCB3aXRoIHRoZSB3aW5lcGF0aCBwcm9ncmFtIGluICRidWlsZCdzCisrIyAkUEFUSC4gQXNzdW1lcyBBUkcgaGFzIG5vIGxlYWRpbmcgb3IgdHJhaWxpbmcgcGF0aCBzZXBhcmF0b3IgY2hhcmFjdGVycy4KKysjCisrIyBBUkcgaXMgcGF0aCB0byBiZSBjb252ZXJ0ZWQgZnJvbSAkYnVpbGQgZm9ybWF0IHRvIHdpbjMyLgorKyMgUmVzdWx0IGlzIGF2YWlsYWJsZSBpbiAkZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQuCisrIyBVbmNvbnZlcnRpYmxlIGZpbGUgKGRpcmVjdG9yeSkgbmFtZXMgaW4gQVJHIGFyZSBza2lwcGVkOyBpZiBubyBkaXJlY3RvcnkgbmFtZXMKKysjIGFyZSBjb252ZXJ0aWJsZSwgdGhlbiB0aGUgcmVzdWx0IG1heSBiZSBlbXB0eS4KKytmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgIyB1bmZvcnR1bmF0ZWx5LCB3aW5lcGF0aCBkb2Vzbid0IGNvbnZlcnQgcGF0aHMsIG9ubHkgZmlsZSBuYW1lcworKyAgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQ9IiIKKysgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorKyAgICBvbGRJRlM9JElGUworKyAgICBJRlM9OgorKyAgICBmb3IgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9mIGluICQxOyBkbworKyAgICAgIElGUz0kb2xkSUZTCisrICAgICAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMiAiJGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfZiIKKysgICAgICBpZiB0ZXN0IC1uICIkZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQiIDsgdGhlbgorKyAgICAgICAgaWYgdGVzdCAteiAiJGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0IjsgdGhlbgorKyAgICAgICAgICBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdD0iJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0IgorKyAgICAgICAgZWxzZQorKyAgICAgICAgICBmdW5jX2FwcGVuZCBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdCAiOyRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCIKKysgICAgICAgIGZpCisrICAgICAgZmkKKysgICAgZG9uZQorKyAgICBJRlM9JG9sZElGUworKyAgZmkKKyt9CisrIyBlbmQ6IGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzIKKysKKysKKysjIGZ1bmNfY3lncGF0aCBBUkdTLi4uCisrIyBXcmFwcGVyIGFyb3VuZCBjYWxsaW5nIHRoZSBjeWdwYXRoIHByb2dyYW0gdmlhIExUX0NZR1BBVEguIFRoaXMgaXMgdXNlZCB3aGVuCisrIyB3aGVuICgxKSAkYnVpbGQgaXMgKm5peCBhbmQgQ3lnd2luIGlzIGhvc3RlZCB2aWEgYSB3aW5lIGVudmlyb25tZW50OyBvciAoMikKKysjICRidWlsZCBpcyBNU1lTIGFuZCAkaG9zdCBpcyBDeWd3aW4sIG9yICgzKSAkYnVpbGQgaXMgQ3lnd2luLiBJbiBjYXNlICgxKSBvcgorKyMgKDIpLCByZXR1cm5zIHRoZSBDeWd3aW4gZmlsZSBuYW1lIG9yIHBhdGggaW4gZnVuY19jeWdwYXRoX3Jlc3VsdCAoaW5wdXQKKysjIGZpbGUgbmFtZSBvciBwYXRoIGlzIGFzc3VtZWQgdG8gYmUgaW4gdzMyIGZvcm1hdCwgYXMgcHJldmlvdXNseSBjb252ZXJ0ZWQKKysjIGZyb20gJGJ1aWxkJ3MgKm5peCBvciBNU1lTIGZvcm1hdCkuIEluIGNhc2UgKDMpLCByZXR1cm5zIHRoZSB3MzIgZmlsZSBuYW1lCisrIyBvciBwYXRoIGluIGZ1bmNfY3lncGF0aF9yZXN1bHQgKGlucHV0IGZpbGUgbmFtZSBvciBwYXRoIGlzIGFzc3VtZWQgdG8gYmUgaW4KKysjIEN5Z3dpbiBmb3JtYXQpLiBSZXR1cm5zIGFuIGVtcHR5IHN0cmluZyBvbiBlcnJvci4KKysjCisrIyBBUkdTIGFyZSBwYXNzZWQgdG8gY3lncGF0aCwgd2l0aCB0aGUgbGFzdCBvbmUgYmVpbmcgdGhlIGZpbGUgbmFtZSBvciBwYXRoIHRvCisrIyBiZSBjb252ZXJ0ZWQuCisrIworKyMgU3BlY2lmeSB0aGUgYWJzb2x1dGUgKm5peCAob3IgdzMyKSBuYW1lIHRvIGN5Z3BhdGggaW4gdGhlIExUX0NZR1BBVEgKKysjIGVudmlyb25tZW50IHZhcmlhYmxlOyBkbyBub3QgcHV0IGl0IGluICRQQVRILgorK2Z1bmNfY3lncGF0aCAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGlmIHRlc3QgLW4gIiRMVF9DWUdQQVRIIiAmJiB0ZXN0IC1mICIkTFRfQ1lHUEFUSCI7IHRoZW4KKysgICAgZnVuY19jeWdwYXRoX3Jlc3VsdD1gJExUX0NZR1BBVEggIiRAIiAyPi9kZXYvbnVsbGAKKysgICAgaWYgdGVzdCAiJD8iIC1uZSAwOyB0aGVuCisrICAgICAgIyBvbiBmYWlsdXJlLCBlbnN1cmUgcmVzdWx0IGlzIGVtcHR5CisrICAgICAgZnVuY19jeWdwYXRoX3Jlc3VsdD0KKysgICAgZmkKKysgIGVsc2UKKysgICAgZnVuY19jeWdwYXRoX3Jlc3VsdD0KKysgICAgZnVuY19lcnJvciAiTFRfQ1lHUEFUSCBpcyBlbXB0eSBvciBzcGVjaWZpZXMgbm9uLWV4aXN0ZW50IGZpbGU6IFxgJExUX0NZR1BBVEgnIgorKyAgZmkKKyt9CisrI2VuZDogZnVuY19jeWdwYXRoCisrCisrCisrIyBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiBBUkcKKysjIENvbnZlcnQgZmlsZSBuYW1lIG9yIHBhdGggQVJHIGZyb20gTVNZUyBmb3JtYXQgdG8gdzMyIGZvcm1hdC4gIFJldHVybgorKyMgcmVzdWx0IGluIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdC4KKytmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiAoKQorK3sKKysgICRvcHRfZGVidWcKKysgICMgYXdrd2FyZDogY21kIGFwcGVuZHMgc3BhY2VzIHRvIHJlc3VsdAorKyAgZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzJfcmVzdWx0PWAoIGNtZCAvL2MgZWNobyAiJDEiICkgMj4vZGV2L251bGwgfAorKyAgICAkU0VEIC1lICdzL1sgXSokLy8nIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCisrfQorKyNlbmQ6IGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyCisrCisrCisrIyBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayBBUkcxIEFSRzIKKysjIFZlcmlmeSB0aGF0IEFSRzEgKGEgZmlsZSBuYW1lIGluICRidWlsZCBmb3JtYXQpIHdhcyBjb252ZXJ0ZWQgdG8gJGhvc3QKKysjIGZvcm1hdCBpbiBBUkcyLiBPdGhlcndpc2UsIGVtaXQgYW4gZXJyb3IgbWVzc2FnZSwgYnV0IGNvbnRpbnVlIChyZXNldHRpbmcKKysjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCB0byBBUkcxKS4KKytmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGlmIHRlc3QgLXogIiQyIiAmJiB0ZXN0IC1uICIkMSIgOyB0aGVuCisrICAgIGZ1bmNfZXJyb3IgIkNvdWxkIG5vdCBkZXRlcm1pbmUgaG9zdCBmaWxlIG5hbWUgY29ycmVzcG9uZGluZyB0byIKKysgICAgZnVuY19lcnJvciAiICBcYCQxJyIKKysgICAgZnVuY19lcnJvciAiQ29udGludWluZywgYnV0IHVuaW5zdGFsbGVkIGV4ZWN1dGFibGVzIG1heSBub3Qgd29yay4iCisrICAgICMgRmFsbGJhY2s6CisrICAgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCisrICBmaQorK30KKysjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjaworKworKworKyMgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgRlJPTV9QQVRIU0VQIFRPX1BBVEhTRVAgRlJPTV9QQVRIIFRPX1BBVEgKKysjIFZlcmlmeSB0aGF0IEZST01fUEFUSCAoYSBwYXRoIGluICRidWlsZCBmb3JtYXQpIHdhcyBjb252ZXJ0ZWQgdG8gJGhvc3QKKysjIGZvcm1hdCBpbiBUT19QQVRILiBPdGhlcndpc2UsIGVtaXQgYW4gZXJyb3IgbWVzc2FnZSwgYnV0IGNvbnRpbnVlLCByZXNldHRpbmcKKysjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCB0byBhIHNpbXBsaXN0aWMgZmFsbGJhY2sgdmFsdWUgKHNlZSBiZWxvdykuCisrZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBpZiB0ZXN0IC16ICIkNCIgJiYgdGVzdCAtbiAiJDMiOyB0aGVuCisrICAgIGZ1bmNfZXJyb3IgIkNvdWxkIG5vdCBkZXRlcm1pbmUgdGhlIGhvc3QgcGF0aCBjb3JyZXNwb25kaW5nIHRvIgorKyAgICBmdW5jX2Vycm9yICIgIFxgJDMnIgorKyAgICBmdW5jX2Vycm9yICJDb250aW51aW5nLCBidXQgdW5pbnN0YWxsZWQgZXhlY3V0YWJsZXMgbWF5IG5vdCB3b3JrLiIKKysgICAgIyBGYWxsYmFjay4gIFRoaXMgaXMgYSBkZWxpYmVyYXRlbHkgc2ltcGxpc3RpYyAiY29udmVyc2lvbiIgYW5kCisrICAgICMgc2hvdWxkIG5vdCBiZSAiaW1wcm92ZWQiLiAgU2VlIGxpYnRvb2wuaW5mby4KKysgICAgaWYgdGVzdCAieCQxIiAhPSAieCQyIjsgdGhlbgorKyAgICAgIGx0X3JlcGxhY2VfcGF0aHNlcF9jaGFycz0ic3wkMXwkMnxnIgorKyAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD1gZWNobyAiJDMiIHwKKysgICAgICAgICRTRUQgLWUgIiRsdF9yZXBsYWNlX3BhdGhzZXBfY2hhcnMiYAorKyAgICBlbHNlCisrICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMyIKKysgICAgZmkKKysgIGZpCisrfQorKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrCisrCisrCisrIyBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgRlJPTlRQQVQgQkFDS1BBVCBSRVBMIE9SSUcKKysjIE1vZGlmaWVzIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCBieSBwcmVwZW5kaW5nIFJFUEwgaWYgT1JJRyBtYXRjaGVzIEZST05UUEFUCisrIyBhbmQgYXBwZW5kaW5nIFJFUEwgaWYgT1JJRyBtYXRjaGVzIEJBQ0tQQVQuCisrZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgY2FzZSAkNCBpbgorKyAgJDEgKSBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQzJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKKysgICAgOzsKKysgIGVzYWMKKysgIGNhc2UgJDQgaW4KKysgICQyICkgZnVuY19hcHBlbmQgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0ICIkMyIKKysgICAgOzsKKysgIGVzYWMKKyt9CisrIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwCisrCisrCisrIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKysjICRidWlsZCB0byAkaG9zdCBGSUxFIE5BTUUgQ09OVkVSU0lPTiBGVU5DVElPTlMgIworKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisrIyBpbnZva2VkIHZpYSBgJHRvX2hvc3RfZmlsZV9jbWQgQVJHJworKyMKKysjIEluIGVhY2ggY2FzZSwgQVJHIGlzIHRoZSBwYXRoIHRvIGJlIGNvbnZlcnRlZCBmcm9tICRidWlsZCB0byAkaG9zdCBmb3JtYXQuCisrIyBSZXN1bHQgd2lsbCBiZSBhdmFpbGFibGUgaW4gJGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KKysKKysKKysjIGZ1bmNfdG9faG9zdF9maWxlIEFSRworKyMgQ29udmVydHMgdGhlIGZpbGUgbmFtZSBBUkcgZnJvbSAkYnVpbGQgZm9ybWF0IHRvICRob3N0IGZvcm1hdC4gUmV0dXJuIHJlc3VsdAorKyMgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorK2Z1bmNfdG9faG9zdF9maWxlICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgJHRvX2hvc3RfZmlsZV9jbWQgIiQxIgorK30KKysjIGVuZCBmdW5jX3RvX2hvc3RfZmlsZQorKworKworKyMgZnVuY190b190b29sX2ZpbGUgQVJHIExBWlkKKysjIGNvbnZlcnRzIHRoZSBmaWxlIG5hbWUgQVJHIGZyb20gJGJ1aWxkIGZvcm1hdCB0byB0b29sY2hhaW4gZm9ybWF0LiBSZXR1cm4KKysjIHJlc3VsdCBpbiBmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQuICBJZiB0aGUgY29udmVyc2lvbiBpbiB1c2UgaXMgbGlzdGVkCisrIyBpbiAodGhlIGNvbW1hIHNlcGFyYXRlZCkgTEFaWSwgbm8gY29udmVyc2lvbiB0YWtlcyBwbGFjZS4KKytmdW5jX3RvX3Rvb2xfZmlsZSAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGNhc2UgLCQyLCBpbgorKyAgICAqLCIkdG9fdG9vbF9maWxlX2NtZCIsKikKKysgICAgICBmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQ9JDEKKysgICAgICA7OworKyAgICAqKQorKyAgICAgICR0b190b29sX2ZpbGVfY21kICIkMSIKKysgICAgICBmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQ9JGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdAorKyAgICAgIDs7CisrICBlc2FjCisrfQorKyMgZW5kIGZ1bmNfdG9fdG9vbF9maWxlCisrCisrCisrIyBmdW5jX2NvbnZlcnRfZmlsZV9ub29wIEFSRworKyMgQ29weSBBUkcgdG8gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorK2Z1bmNfY29udmVydF9maWxlX25vb3AgKCkKKyt7CisrICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgorK30KKysjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrCisrCisrIyBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMiBBUkcKKysjIENvbnZlcnQgZmlsZSBuYW1lIEFSRyBmcm9tIChtaW5ndykgTVNZUyB0byAobWluZ3cpIHczMiBmb3JtYXQ7IGF1dG9tYXRpYworKyMgY29udmVyc2lvbiB0byB3MzIgaXMgbm90IGF2YWlsYWJsZSBpbnNpZGUgdGhlIGN3cmFwcGVyLiAgUmV0dXJucyByZXN1bHQgaW4KKysjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KKytmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMiAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCisrICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKysgICAgZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIgIiQxIgorKyAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiRmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMl9yZXN1bHQiCisrICBmaQorKyAgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgIiQxIiAiJGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCIKKyt9CisrIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysKKysKKysjIGZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIgQVJHCisrIyBDb252ZXJ0IGZpbGUgbmFtZSBBUkcgZnJvbSBDeWd3aW4gdG8gdzMyIGZvcm1hdC4gIFJldHVybnMgcmVzdWx0IGluCisrIyBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCisrZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMiAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCisrICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKysgICAgIyBiZWNhdXNlICRidWlsZCBpcyBjeWd3aW4sIHdlIGNhbGwgInRoZSIgY3lncGF0aCBpbiAkUEFUSDsgbm8gbmVlZCB0byB1c2UKKysgICAgIyBMVF9DWUdQQVRIIGluIHRoaXMgY2FzZS4KKysgICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PWBjeWdwYXRoIC1tICIkMSJgCisrICBmaQorKyAgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgIiQxIiAiJGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCIKKyt9CisrIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgorKworKworKyMgZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMiBBUkcKKysjIENvbnZlcnQgZmlsZSBuYW1lIEFSRyBmcm9tICpuaXggdG8gdzMyIGZvcm1hdC4gIFJlcXVpcmVzIGEgd2luZSBlbnZpcm9ubWVudAorKyMgYW5kIGEgd29ya2luZyB3aW5lcGF0aC4gUmV0dXJucyByZXN1bHQgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorK2Z1bmNfY29udmVydF9maWxlX25peF90b193MzIgKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgorKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisrICAgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzIgIiQxIgorKyAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCIKKysgIGZpCisrICBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayAiJDEiICIkZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IgorK30KKysjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyCisrCisrCisrIyBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbiBBUkcKKysjIENvbnZlcnQgZmlsZSBuYW1lIEFSRyBmcm9tIE1TWVMgdG8gQ3lnd2luIGZvcm1hdC4gIFJlcXVpcmVzIExUX0NZR1BBVEggc2V0LgorKyMgUmV0dXJucyByZXN1bHQgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorK2Z1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKKysgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorKyAgICBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiAiJDEiCisrICAgIGZ1bmNfY3lncGF0aCAtdSAiJGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdCIKKysgICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkZnVuY19jeWdwYXRoX3Jlc3VsdCIKKysgIGZpCisrICBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayAiJDEiICIkZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IgorK30KKysjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbgorKworKworKyMgZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbiBBUkcKKysjIENvbnZlcnQgZmlsZSBuYW1lIEFSRyBmcm9tICpuaXggdG8gQ3lnd2luIGZvcm1hdC4gIFJlcXVpcmVzIEN5Z3dpbiBpbnN0YWxsZWQKKysjIGluIGEgd2luZSBlbnZpcm9ubWVudCwgd29ya2luZyB3aW5lcGF0aCwgYW5kIExUX0NZR1BBVEggc2V0LiAgUmV0dXJucyByZXN1bHQKKysjIGluIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KKytmdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKKysgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorKyAgICAjIGNvbnZlcnQgZnJvbSAqbml4IHRvIHczMiwgdGhlbiB1c2UgY3lncGF0aCB0byBjb252ZXJ0IGZyb20gdzMyIHRvIGN5Z3dpbi4KKysgICAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMiAiJDEiCisrICAgIGZ1bmNfY3lncGF0aCAtdSAiJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0IgorKyAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiRmdW5jX2N5Z3BhdGhfcmVzdWx0IgorKyAgZmkKKysgIGZ1bmNfY29udmVydF9maWxlX2NoZWNrICIkMSIgIiRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQiCisrfQorKyMgZW5kIGZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4KKysKKysKKysjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKysjICRidWlsZCB0byAkaG9zdCBQQVRIIENPTlZFUlNJT04gRlVOQ1RJT05TICMKKysjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKysjIGludm9rZWQgdmlhIGAkdG9faG9zdF9wYXRoX2NtZCBBUkcnCisrIworKyMgSW4gZWFjaCBjYXNlLCBBUkcgaXMgdGhlIHBhdGggdG8gYmUgY29udmVydGVkIGZyb20gJGJ1aWxkIHRvICRob3N0IGZvcm1hdC4KKysjIFRoZSByZXN1bHQgd2lsbCBiZSBhdmFpbGFibGUgaW4gJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdC4KKysjCisrIyBQYXRoIHNlcGFyYXRvcnMgYXJlIGFsc28gY29udmVydGVkIGZyb20gJGJ1aWxkIGZvcm1hdCB0byAkaG9zdCBmb3JtYXQuICBJZgorKyMgQVJHIGJlZ2lucyBvciBlbmRzIHdpdGggYSBwYXRoIHNlcGFyYXRvciBjaGFyYWN0ZXIsIGl0IGlzIHByZXNlcnZlZCAoYnV0CisrIyBjb252ZXJ0ZWQgdG8gJGhvc3QgZm9ybWF0KSBvbiBvdXRwdXQuCisrIworKyMgQWxsIHBhdGggY29udmVyc2lvbiBmdW5jdGlvbnMgYXJlIG5hbWVkIHVzaW5nIHRoZSBmb2xsb3dpbmcgY29udmVudGlvbjoKKysjICAgZmlsZSBuYW1lIGNvbnZlcnNpb24gZnVuY3Rpb24gICAgOiBmdW5jX2NvbnZlcnRfZmlsZV9YX3RvX1kgKCkKKysjICAgcGF0aCBjb252ZXJzaW9uIGZ1bmN0aW9uICAgICAgICAgOiBmdW5jX2NvbnZlcnRfcGF0aF9YX3RvX1kgKCkKKysjIHdoZXJlLCBmb3IgYW55IGdpdmVuICRidWlsZC8kaG9zdCBjb21iaW5hdGlvbiB0aGUgJ1hfdG9fWScgdmFsdWUgaXMgdGhlCisrIyBzYW1lLiAgSWYgY29udmVyc2lvbiBmdW5jdGlvbnMgYXJlIGFkZGVkIGZvciBuZXcgJGJ1aWxkLyRob3N0IGNvbWJpbmF0aW9ucywKKysjIHRoZSB0d28gbmV3IGZ1bmN0aW9ucyBtdXN0IGZvbGxvdyB0aGlzIHBhdHRlcm4sIG9yIGZ1bmNfaW5pdF90b19ob3N0X3BhdGhfY21kCisrIyB3aWxsIGJyZWFrLgorKworKworKyMgZnVuY19pbml0X3RvX2hvc3RfcGF0aF9jbWQKKysjIEVuc3VyZXMgdGhhdCBmdW5jdGlvbiAicG9pbnRlciIgdmFyaWFibGUgJHRvX2hvc3RfcGF0aF9jbWQgaXMgc2V0IHRvIHRoZQorKyMgYXBwcm9wcmlhdGUgdmFsdWUsIGJhc2VkIG9uIHRoZSB2YWx1ZSBvZiAkdG9faG9zdF9maWxlX2NtZC4KKyt0b19ob3N0X3BhdGhfY21kPQorK2Z1bmNfaW5pdF90b19ob3N0X3BhdGhfY21kICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgaWYgdGVzdCAteiAiJHRvX2hvc3RfcGF0aF9jbWQiOyB0aGVuCisrICAgIGZ1bmNfc3RyaXBuYW1lICdmdW5jX2NvbnZlcnRfZmlsZV8nICcnICIkdG9faG9zdF9maWxlX2NtZCIKKysgICAgdG9faG9zdF9wYXRoX2NtZD0iZnVuY19jb252ZXJ0X3BhdGhfJHtmdW5jX3N0cmlwbmFtZV9yZXN1bHR9IgorKyAgZmkKKyt9CisrCisrCisrIyBmdW5jX3RvX2hvc3RfcGF0aCBBUkcKKysjIENvbnZlcnRzIHRoZSBwYXRoIEFSRyBmcm9tICRidWlsZCBmb3JtYXQgdG8gJGhvc3QgZm9ybWF0LiBSZXR1cm4gcmVzdWx0CisrIyBpbiBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQuCisrZnVuY190b19ob3N0X3BhdGggKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBmdW5jX2luaXRfdG9faG9zdF9wYXRoX2NtZAorKyAgJHRvX2hvc3RfcGF0aF9jbWQgIiQxIgorK30KKysjIGVuZCBmdW5jX3RvX2hvc3RfcGF0aAorKworKworKyMgZnVuY19jb252ZXJ0X3BhdGhfbm9vcCBBUkcKKysjIENvcHkgQVJHIHRvIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdC4KKytmdW5jX2NvbnZlcnRfcGF0aF9ub29wICgpCisreworKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKKyt9CisrIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfbm9vcAorKworKworKyMgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b193MzIgQVJHCisrIyBDb252ZXJ0IHBhdGggQVJHIGZyb20gKG1pbmd3KSBNU1lTIHRvIChtaW5ndykgdzMyIGZvcm1hdDsgYXV0b21hdGljCisrIyBjb252ZXJzaW9uIHRvIHczMiBpcyBub3QgYXZhaWxhYmxlIGluc2lkZSB0aGUgY3dyYXBwZXIuICBSZXR1cm5zIHJlc3VsdCBpbgorKyMgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0LgorK2Z1bmNfY29udmVydF9wYXRoX21zeXNfdG9fdzMyICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKKysgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorKyAgICAjIFJlbW92ZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBwYXRoIHNlcGFyYXRvciBjaGFyYWN0ZXJzIGZyb20gQVJHLiAgTVNZUworKyAgICAjIGJlaGF2aW9yIGlzIGluY29uc2lzdGVudCBoZXJlOyBjeWdwYXRoIHR1cm5zIHRoZW0gaW50byAnLjsnIGFuZCAnOy4nOworKyAgICAjIGFuZCB3aW5lcGF0aCBpZ25vcmVzIHRoZW0gY29tcGxldGVseS4KKysgICAgZnVuY19zdHJpcG5hbWUgOiA6ICIkMSIKKysgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisrICAgIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIKKysgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzJfcmVzdWx0IgorKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayA6ICI7IiBcCisrICAgICAgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKKysgICAgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwICI6KiIgIio6IiAiOyIgIiQxIgorKyAgZmkKKyt9CisrIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b193MzIKKysKKysKKysjIGZ1bmNfY29udmVydF9wYXRoX2N5Z3dpbl90b193MzIgQVJHCisrIyBDb252ZXJ0IHBhdGggQVJHIGZyb20gQ3lnd2luIHRvIHczMiBmb3JtYXQuICBSZXR1cm5zIHJlc3VsdCBpbgorKyMgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorK2Z1bmNfY29udmVydF9wYXRoX2N5Z3dpbl90b193MzIgKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgorKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisrICAgICMgU2VlIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fdzMyOgorKyAgICBmdW5jX3N0cmlwbmFtZSA6IDogIiQxIgorKyAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKysgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PWBjeWdwYXRoIC1tIC1wICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSJgCisrICAgIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrIDogIjsiIFwKKysgICAgICAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgorKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgIjoqIiAiKjoiICI7IiAiJDEiCisrICBmaQorK30KKysjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9jeWd3aW5fdG9fdzMyCisrCisrCisrIyBmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fdzMyIEFSRworKyMgQ29udmVydCBwYXRoIEFSRyBmcm9tICpuaXggdG8gdzMyIGZvcm1hdC4gIFJlcXVpcmVzIGEgd2luZSBlbnZpcm9ubWVudCBhbmQKKysjIGEgd29ya2luZyB3aW5lcGF0aC4gIFJldHVybnMgcmVzdWx0IGluIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KKytmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fdzMyICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKKysgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorKyAgICAjIFNlZSBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX3czMjoKKysgICAgZnVuY19zdHJpcG5hbWUgOiA6ICIkMSIKKysgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisrICAgIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzIgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIgorKyAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiRmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdCIKKysgICAgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgOiAiOyIgXAorKyAgICAgICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCisrICAgIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCAiOioiICIqOiIgIjsiICIkMSIKKysgIGZpCisrfQorKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX25peF90b193MzIKKysKKysKKysjIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fY3lnd2luIEFSRworKyMgQ29udmVydCBwYXRoIEFSRyBmcm9tIE1TWVMgdG8gQ3lnd2luIGZvcm1hdC4gIFJlcXVpcmVzIExUX0NZR1BBVEggc2V0LgorKyMgUmV0dXJucyByZXN1bHQgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorK2Z1bmNfY29udmVydF9wYXRoX21zeXNfdG9fY3lnd2luICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKKysgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorKyAgICAjIFNlZSBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX3czMjoKKysgICAgZnVuY19zdHJpcG5hbWUgOiA6ICIkMSIKKysgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisrICAgIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIKKysgICAgZnVuY19jeWdwYXRoIC11IC1wICIkZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzJfcmVzdWx0IgorKyAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiRmdW5jX2N5Z3BhdGhfcmVzdWx0IgorKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayA6IDogXAorKyAgICAgICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCisrICAgIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCAiOioiICIqOiIgOiAiJDEiCisrICBmaQorK30KKysjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX2N5Z3dpbgorKworKworKyMgZnVuY19jb252ZXJ0X3BhdGhfbml4X3RvX2N5Z3dpbiBBUkcKKysjIENvbnZlcnQgcGF0aCBBUkcgZnJvbSAqbml4IHRvIEN5Z3dpbiBmb3JtYXQuICBSZXF1aXJlcyBDeWd3aW4gaW5zdGFsbGVkIGluIGEKKysjIGEgd2luZSBlbnZpcm9ubWVudCwgd29ya2luZyB3aW5lcGF0aCwgYW5kIExUX0NZR1BBVEggc2V0LiAgUmV0dXJucyByZXN1bHQgaW4KKysjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KKytmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fY3lnd2luICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKKysgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorKyAgICAjIFJlbW92ZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBwYXRoIHNlcGFyYXRvciBjaGFyYWN0ZXJzIGZyb20KKysgICAgIyBBUkcuIG1zeXMgYmVoYXZpb3IgaXMgaW5jb25zaXN0ZW50IGhlcmUsIGN5Z3BhdGggdHVybnMgdGhlbQorKyAgICAjIGludG8gJy47JyBhbmQgJzsuJywgYW5kIHdpbmVwYXRoIGlnbm9yZXMgdGhlbSBjb21wbGV0ZWx5LgorKyAgICBmdW5jX3N0cmlwbmFtZSA6IDogIiQxIgorKyAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKysgICAgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMiAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiCisrICAgIGZ1bmNfY3lncGF0aCAtdSAtcCAiJGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0IgorKyAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiRmdW5jX2N5Z3BhdGhfcmVzdWx0IgorKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayA6IDogXAorKyAgICAgICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCisrICAgIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCAiOioiICIqOiIgOiAiJDEiCisrICBmaQorK30KKysjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fY3lnd2luCisrCisrCisgIyBmdW5jX21vZGVfY29tcGlsZSBhcmcuLi4KKyBmdW5jX21vZGVfY29tcGlsZSAoKQorIHsKK0BAIC0xMzE0LDEyICsxOTg1LDEyIEBAIGZ1bmNfbW9kZV9jb21waWxlICgpCisgCSAgOzsKKyAKKyAJLXBpZSB8IC1mcGllIHwgLWZQSUUpCistICAgICAgICAgIHBpZV9mbGFnPSIkcGllX2ZsYWcgJGFyZyIKKysgICAgICAgICAgZnVuY19hcHBlbmQgcGllX2ZsYWcgIiAkYXJnIgorIAkgIGNvbnRpbnVlCisgCSAgOzsKKyAKKyAJLXNoYXJlZCB8IC1zdGF0aWMgfCAtcHJlZmVyLXBpYyB8IC1wcmVmZXItbm9uLXBpYykKKy0JICBsYXRlcj0iJGxhdGVyICRhcmciCisrCSAgZnVuY19hcHBlbmQgbGF0ZXIgIiAkYXJnIgorIAkgIGNvbnRpbnVlCisgCSAgOzsKKyAKK0BAIC0xMzQwLDE1ICsyMDExLDE0IEBAIGZ1bmNfbW9kZV9jb21waWxlICgpCisgCSAgc2F2ZV9pZnM9IiRJRlMiOyBJRlM9JywnCisgCSAgZm9yIGFyZyBpbiAkYXJnczsgZG8KKyAJICAgIElGUz0iJHNhdmVfaWZzIgorLQkgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKKy0JICAgIGxhc3Rhcmc9IiRsYXN0YXJnICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKysJICAgIGZ1bmNfYXBwZW5kX3F1b3RlZCBsYXN0YXJnICIkYXJnIgorIAkgIGRvbmUKKyAJICBJRlM9IiRzYXZlX2lmcyIKKyAJICBmdW5jX3N0cmlwbmFtZSAnICcgJycgIiRsYXN0YXJnIgorIAkgIGxhc3Rhcmc9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorIAorIAkgICMgQWRkIHRoZSBhcmd1bWVudHMgdG8gYmFzZV9jb21waWxlLgorLQkgIGJhc2VfY29tcGlsZT0iJGJhc2VfY29tcGlsZSAkbGFzdGFyZyIKKysJICBmdW5jX2FwcGVuZCBiYXNlX2NvbXBpbGUgIiAkbGFzdGFyZyIKKyAJICBjb250aW51ZQorIAkgIDs7CisgCitAQCAtMTM2NCw4ICsyMDM0LDcgQEAgZnVuY19tb2RlX2NvbXBpbGUgKCkKKyAgICAgICBlc2FjICAgICMgIGNhc2UgJGFyZ19tb2RlCisgCisgICAgICAgIyBBZXN0aGV0aWNhbGx5IHF1b3RlIHRoZSBwcmV2aW91cyBhcmd1bWVudC4KKy0gICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkbGFzdGFyZyIKKy0gICAgICBiYXNlX2NvbXBpbGU9IiRiYXNlX2NvbXBpbGUgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorKyAgICAgIGZ1bmNfYXBwZW5kX3F1b3RlZCBiYXNlX2NvbXBpbGUgIiRsYXN0YXJnIgorICAgICBkb25lICMgZm9yIGFyZworIAorICAgICBjYXNlICRhcmdfbW9kZSBpbgorQEAgLTE0OTYsMTcgKzIxNjUsMTYgQEAgY29tcGlsZXIuIgorIAkkb3B0X2RyeV9ydW4gfHwgJFJNICRyZW1vdmVsaXN0CisgCWV4aXQgJEVYSVRfRkFJTFVSRQorICAgICAgIGZpCistICAgICAgcmVtb3ZlbGlzdD0iJHJlbW92ZWxpc3QgJG91dHB1dF9vYmoiCisrICAgICAgZnVuY19hcHBlbmQgcmVtb3ZlbGlzdCAiICRvdXRwdXRfb2JqIgorICAgICAgICRFQ0hPICIkc3JjZmlsZSIgPiAiJGxvY2tmaWxlIgorICAgICBmaQorIAorICAgICAkb3B0X2RyeV9ydW4gfHwgJFJNICRyZW1vdmVsaXN0CistICAgIHJlbW92ZWxpc3Q9IiRyZW1vdmVsaXN0ICRsb2NrZmlsZSIKKysgICAgZnVuY19hcHBlbmQgcmVtb3ZlbGlzdCAiICRsb2NrZmlsZSIKKyAgICAgdHJhcCAnJG9wdF9kcnlfcnVuIHx8ICRSTSAkcmVtb3ZlbGlzdDsgZXhpdCAkRVhJVF9GQUlMVVJFJyAxIDIgMTUKKyAKKy0gICAgaWYgdGVzdCAtbiAiJGZpeF9zcmNmaWxlX3BhdGgiOyB0aGVuCistICAgICAgZXZhbCAic3JjZmlsZT1cIiRmaXhfc3JjZmlsZV9wYXRoXCIiCistICAgIGZpCisrICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkc3JjZmlsZSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysgICAgc3JjZmlsZT0kZnVuY190b190b29sX2ZpbGVfcmVzdWx0CisgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRzcmNmaWxlIgorICAgICBxc3JjZmlsZT0kZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQKKyAKK0BAIC0xNTI2LDcgKzIxOTQsNyBAQCBjb21waWxlci4iCisgCisgICAgICAgaWYgdGVzdCAteiAiJG91dHB1dF9vYmoiOyB0aGVuCisgCSMgUGxhY2UgUElDIG9iamVjdHMgaW4gJG9iamRpcgorLQljb21tYW5kPSIkY29tbWFuZCAtbyAkbG9iaiIKKysJZnVuY19hcHBlbmQgY29tbWFuZCAiIC1vICRsb2JqIgorICAgICAgIGZpCisgCisgICAgICAgZnVuY19zaG93X2V2YWxfbG9jYWxlICIkY29tbWFuZCIJXAorQEAgLTE1NzMsMTEgKzIyNDEsMTEgQEAgY29tcGlsZXIuIgorIAljb21tYW5kPSIkYmFzZV9jb21waWxlICRxc3JjZmlsZSAkcGljX2ZsYWciCisgICAgICAgZmkKKyAgICAgICBpZiB0ZXN0ICIkY29tcGlsZXJfY19vIiA9IHllczsgdGhlbgorLQljb21tYW5kPSIkY29tbWFuZCAtbyAkb2JqIgorKwlmdW5jX2FwcGVuZCBjb21tYW5kICIgLW8gJG9iaiIKKyAgICAgICBmaQorIAorICAgICAgICMgU3VwcHJlc3MgY29tcGlsZXIgb3V0cHV0IGlmIHdlIGFscmVhZHkgZGlkIGEgUElDIGNvbXBpbGF0aW9uLgorLSAgICAgIGNvbW1hbmQ9IiRjb21tYW5kJHN1cHByZXNzX291dHB1dCIKKysgICAgICBmdW5jX2FwcGVuZCBjb21tYW5kICIkc3VwcHJlc3Nfb3V0cHV0IgorICAgICAgIGZ1bmNfc2hvd19ldmFsX2xvY2FsZSAiJGNvbW1hbmQiIFwKKyAgICAgICAgICckb3B0X2RyeV9ydW4gfHwgJFJNICRyZW1vdmVsaXN0OyBleGl0ICRFWElUX0ZBSUxVUkUnCisgCitAQCAtMTYyMiwxMyArMjI5MCwxMyBAQCBjb21waWxlci4iCisgfQorIAorICRvcHRfaGVscCB8fCB7CistICB0ZXN0ICIkbW9kZSIgPSBjb21waWxlICYmIGZ1bmNfbW9kZV9jb21waWxlICR7MSsiJEAifQorKyAgdGVzdCAiJG9wdF9tb2RlIiA9IGNvbXBpbGUgJiYgZnVuY19tb2RlX2NvbXBpbGUgJHsxKyIkQCJ9CisgfQorIAorIGZ1bmNfbW9kZV9oZWxwICgpCisgeworICAgICAjIFdlIG5lZWQgdG8gZGlzcGxheSBoZWxwIGZvciBlYWNoIG9mIHRoZSBtb2Rlcy4KKy0gICAgY2FzZSAkbW9kZSBpbgorKyAgICBjYXNlICRvcHRfbW9kZSBpbgorICAgICAgICIiKQorICAgICAgICAgIyBHZW5lcmljIGhlbHAgaXMgZXh0cmFjdGVkIGZyb20gdGhlIHVzYWdlIGNvbW1lbnRzCisgICAgICAgICAjIGF0IHRoZSBzdGFydCBvZiB0aGlzIGZpbGUuCitAQCAtMTY1OSw4ICsyMzI3LDggQEAgVGhpcyBtb2RlIGFjY2VwdHMgdGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIG9wdGlvbnM6CisgCisgICAtbyBPVVRQVVQtRklMRSAgICBzZXQgdGhlIG91dHB1dCBmaWxlIG5hbWUgdG8gT1VUUFVULUZJTEUKKyAgIC1uby1zdXBwcmVzcyAgICAgIGRvIG5vdCBzdXBwcmVzcyBjb21waWxlciBvdXRwdXQgZm9yIG11bHRpcGxlIHBhc3NlcworLSAgLXByZWZlci1waWMgICAgICAgdHJ5IHRvIGJ1aWxkaW5nIFBJQyBvYmplY3RzIG9ubHkKKy0gIC1wcmVmZXItbm9uLXBpYyAgIHRyeSB0byBidWlsZGluZyBub24tUElDIG9iamVjdHMgb25seQorKyAgLXByZWZlci1waWMgICAgICAgdHJ5IHRvIGJ1aWxkIFBJQyBvYmplY3RzIG9ubHkKKysgIC1wcmVmZXItbm9uLXBpYyAgIHRyeSB0byBidWlsZCBub24tUElDIG9iamVjdHMgb25seQorICAgLXNoYXJlZCAgICAgICAgICAgZG8gbm90IGJ1aWxkIGEgXGAubycgZmlsZSBzdWl0YWJsZSBmb3Igc3RhdGljIGxpbmtpbmcKKyAgIC1zdGF0aWMgICAgICAgICAgIG9ubHkgYnVpbGQgYSBcYC5vJyBmaWxlIHN1aXRhYmxlIGZvciBzdGF0aWMgbGlua2luZworICAgLVdjLEZMQUcgICAgICAgICAgcGFzcyBGTEFHIGRpcmVjdGx5IHRvIHRoZSBjb21waWxlcgorQEAgLTE4MDQsNyArMjQ3Miw3IEBAIE90aGVyd2lzZSwgb25seSBGSUxFIGl0c2VsZiBpcyBkZWxldGVkIHVzaW5nIFJNLiIKKyAgICAgICAgIDs7CisgCisgICAgICAgKikKKy0gICAgICAgIGZ1bmNfZmF0YWxfaGVscCAiaW52YWxpZCBvcGVyYXRpb24gbW9kZSBcYCRtb2RlJyIKKysgICAgICAgIGZ1bmNfZmF0YWxfaGVscCAiaW52YWxpZCBvcGVyYXRpb24gbW9kZSBcYCRvcHRfbW9kZSciCisgICAgICAgICA7OworICAgICBlc2FjCisgCitAQCAtMTgxOSwxMyArMjQ4NywxMyBAQCBpZiAkb3B0X2hlbHA7IHRoZW4KKyAgIGVsc2UKKyAgICAgeworICAgICAgIGZ1bmNfaGVscCBub2V4aXQKKy0gICAgICBmb3IgbW9kZSBpbiBjb21waWxlIGxpbmsgZXhlY3V0ZSBpbnN0YWxsIGZpbmlzaCB1bmluc3RhbGwgY2xlYW47IGRvCisrICAgICAgZm9yIG9wdF9tb2RlIGluIGNvbXBpbGUgbGluayBleGVjdXRlIGluc3RhbGwgZmluaXNoIHVuaW5zdGFsbCBjbGVhbjsgZG8KKyAJZnVuY19tb2RlX2hlbHAKKyAgICAgICBkb25lCisgICAgIH0gfCBzZWQgLW4gJzFwOyAyLCRzL15Vc2FnZTovICBvcjogL3AnCisgICAgIHsKKyAgICAgICBmdW5jX2hlbHAgbm9leGl0CistICAgICAgZm9yIG1vZGUgaW4gY29tcGlsZSBsaW5rIGV4ZWN1dGUgaW5zdGFsbCBmaW5pc2ggdW5pbnN0YWxsIGNsZWFuOyBkbworKyAgICAgIGZvciBvcHRfbW9kZSBpbiBjb21waWxlIGxpbmsgZXhlY3V0ZSBpbnN0YWxsIGZpbmlzaCB1bmluc3RhbGwgY2xlYW47IGRvCisgCWVjaG8KKyAJZnVuY19tb2RlX2hlbHAKKyAgICAgICBkb25lCitAQCAtMTg1NCwxMyArMjUyMiwxNiBAQCBmdW5jX21vZGVfZXhlY3V0ZSAoKQorICAgICAgIGZ1bmNfZmF0YWxfaGVscCAieW91IG11c3Qgc3BlY2lmeSBhIENPTU1BTkQiCisgCisgICAgICMgSGFuZGxlIC1kbG9wZW4gZmxhZ3MgaW1tZWRpYXRlbHkuCistICAgIGZvciBmaWxlIGluICRleGVjdXRlX2RsZmlsZXM7IGRvCisrICAgIGZvciBmaWxlIGluICRvcHRfZGxvcGVuOyBkbworICAgICAgIHRlc3QgLWYgIiRmaWxlIiBcCisgCXx8IGZ1bmNfZmF0YWxfaGVscCAiXGAkZmlsZScgaXMgbm90IGEgZmlsZSIKKyAKKyAgICAgICBkaXI9CisgICAgICAgY2FzZSAkZmlsZSBpbgorICAgICAgICoubGEpCisrCWZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZmlsZSIKKysJZmlsZT0kZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0CisrCisgCSMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhpcyByZWFsbHkgaXMgYSBsaWJ0b29sIGFyY2hpdmUuCisgCWZ1bmNfbGFsaWJfdW5zYWZlX3AgIiRmaWxlIiBcCisgCSAgfHwgZnVuY19mYXRhbF9oZWxwICJcYCRsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKK0BAIC0xODgyLDcgKzI1NTMsNyBAQCBmdW5jX21vZGVfZXhlY3V0ZSAoKQorIAlkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgorIAorIAlpZiB0ZXN0IC1mICIkZGlyLyRvYmpkaXIvJGRsbmFtZSI7IHRoZW4KKy0JICBkaXI9IiRkaXIvJG9iamRpciIKKysJICBmdW5jX2FwcGVuZCBkaXIgIi8kb2JqZGlyIgorIAllbHNlCisgCSAgaWYgdGVzdCAhIC1mICIkZGlyLyRkbG5hbWUiOyB0aGVuCisgCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgZmluZCBcYCRkbG5hbWUnIGluIFxgJGRpcicgb3IgXGAkZGlyLyRvYmpkaXInIgorQEAgLTE5MDcsMTAgKzI1NzgsMTAgQEAgZnVuY19tb2RlX2V4ZWN1dGUgKCkKKyAgICAgICB0ZXN0IC1uICIkYWJzZGlyIiAmJiBkaXI9IiRhYnNkaXIiCisgCisgICAgICAgIyBOb3cgYWRkIHRoZSBkaXJlY3RvcnkgdG8gc2hsaWJwYXRoX3Zhci4KKy0gICAgICBpZiBldmFsIHRlc3QgLXogXCJcJCRzaGxpYnBhdGhfdmFyXCI7IHRoZW4KKy0JZXZhbCAkc2hsaWJwYXRoX3Zhcj1cJGRpcgorKyAgICAgIGlmIGV2YWwgInRlc3QgLXogXCJcJCRzaGxpYnBhdGhfdmFyXCIiOyB0aGVuCisrCWV2YWwgIiRzaGxpYnBhdGhfdmFyPVwiXCRkaXJcIiIKKyAgICAgICBlbHNlCistCWV2YWwgJHNobGlicGF0aF92YXI9XCRkaXI6XCQkc2hsaWJwYXRoX3ZhcgorKwlldmFsICIkc2hsaWJwYXRoX3Zhcj1cIlwkZGlyOlwkJHNobGlicGF0aF92YXJcIiIKKyAgICAgICBmaQorICAgICBkb25lCisgCitAQCAtMTkzOSw4ICsyNjEwLDcgQEAgZnVuY19tb2RlX2V4ZWN1dGUgKCkKKyAJOzsKKyAgICAgICBlc2FjCisgICAgICAgIyBRdW90ZSBhcmd1bWVudHMgKHRvIHByZXNlcnZlIHNoZWxsIG1ldGFjaGFyYWN0ZXJzKS4KKy0gICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkZmlsZSIKKy0gICAgICBhcmdzPSIkYXJncyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisrICAgICAgZnVuY19hcHBlbmRfcXVvdGVkIGFyZ3MgIiRmaWxlIgorICAgICBkb25lCisgCisgICAgIGlmIHRlc3QgIlgkb3B0X2RyeV9ydW4iID0gWGZhbHNlOyB0aGVuCitAQCAtMTk3MiwyMiArMjY0Miw1OSBAQCBmdW5jX21vZGVfZXhlY3V0ZSAoKQorICAgICBmaQorIH0KKyAKKy10ZXN0ICIkbW9kZSIgPSBleGVjdXRlICYmIGZ1bmNfbW9kZV9leGVjdXRlICR7MSsiJEAifQorK3Rlc3QgIiRvcHRfbW9kZSIgPSBleGVjdXRlICYmIGZ1bmNfbW9kZV9leGVjdXRlICR7MSsiJEAifQorIAorIAorICMgZnVuY19tb2RlX2ZpbmlzaCBhcmcuLi4KKyBmdW5jX21vZGVfZmluaXNoICgpCisgeworICAgICAkb3B0X2RlYnVnCistICAgIGxpYmRpcnM9IiRub25vcHQiCisrICAgIGxpYnM9CisrICAgIGxpYmRpcnM9CisgICAgIGFkbWluY21kcz0KKyAKKy0gICAgaWYgdGVzdCAtbiAiJGZpbmlzaF9jbWRzJGZpbmlzaF9ldmFsIiAmJiB0ZXN0IC1uICIkbGliZGlycyI7IHRoZW4KKy0gICAgICBmb3IgZGlyCistICAgICAgZG8KKy0JbGliZGlycz0iJGxpYmRpcnMgJGRpciIKKy0gICAgICBkb25lCisrICAgIGZvciBvcHQgaW4gIiRub25vcHQiICR7MSsiJEAifQorKyAgICBkbworKyAgICAgIGlmIHRlc3QgLWQgIiRvcHQiOyB0aGVuCisrCWZ1bmNfYXBwZW5kIGxpYmRpcnMgIiAkb3B0IgorIAorKyAgICAgIGVsaWYgdGVzdCAtZiAiJG9wdCI7IHRoZW4KKysJaWYgZnVuY19sYWxpYl91bnNhZmVfcCAiJG9wdCI7IHRoZW4KKysJICBmdW5jX2FwcGVuZCBsaWJzICIgJG9wdCIKKysJZWxzZQorKwkgIGZ1bmNfd2FybmluZyAiXGAkb3B0JyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCisrCWZpCisrCisrICAgICAgZWxzZQorKwlmdW5jX2ZhdGFsX2Vycm9yICJpbnZhbGlkIGFyZ3VtZW50IFxgJG9wdCciCisrICAgICAgZmkKKysgICAgZG9uZQorKworKyAgICBpZiB0ZXN0IC1uICIkbGlicyI7IHRoZW4KKysgICAgICBpZiB0ZXN0IC1uICIkbHRfc3lzcm9vdCI7IHRoZW4KKysgICAgICAgIHN5c3Jvb3RfcmVnZXg9YCRFQ0hPICIkbHRfc3lzcm9vdCIgfCAkU0VEICIkc2VkX21ha2VfbGl0ZXJhbF9yZWdleCJgCisrICAgICAgICBzeXNyb290X2NtZD0icy9cKFsgJ11cKSRzeXNyb290X3JlZ2V4L1wxL2c7IgorKyAgICAgIGVsc2UKKysgICAgICAgIHN5c3Jvb3RfY21kPQorKyAgICAgIGZpCisrCisrICAgICAgIyBSZW1vdmUgc3lzcm9vdCByZWZlcmVuY2VzCisrICAgICAgaWYgJG9wdF9kcnlfcnVuOyB0aGVuCisrICAgICAgICBmb3IgbGliIGluICRsaWJzOyBkbworKyAgICAgICAgICBlY2hvICJyZW1vdmluZyByZWZlcmVuY2VzIHRvICRsdF9zeXNyb290IGFuZCBcYD0nIHByZWZpeGVzIGZyb20gJGxpYiIKKysgICAgICAgIGRvbmUKKysgICAgICBlbHNlCisrICAgICAgICB0bXBkaXI9YGZ1bmNfbWt0ZW1wZGlyYAorKyAgICAgICAgZm9yIGxpYiBpbiAkbGliczsgZG8KKysJICBzZWQgLWUgIiR7c3lzcm9vdF9jbWR9IHMvXChbICddLVtMUl1cKT0vXDEvZzsgcy9cKFsgJ11cKT0vXDEvZyIgJGxpYiBcCisrCSAgICA+ICR0bXBkaXIvdG1wLWxhCisrCSAgbXYgLWYgJHRtcGRpci90bXAtbGEgJGxpYgorKwlkb25lCisrICAgICAgICAke1JNfXIgIiR0bXBkaXIiCisrICAgICAgZmkKKysgICAgZmkKKysKKysgICAgaWYgdGVzdCAtbiAiJGZpbmlzaF9jbWRzJGZpbmlzaF9ldmFsIiAmJiB0ZXN0IC1uICIkbGliZGlycyI7IHRoZW4KKyAgICAgICBmb3IgbGliZGlyIGluICRsaWJkaXJzOyBkbworIAlpZiB0ZXN0IC1uICIkZmluaXNoX2NtZHMiOyB0aGVuCisgCSAgIyBEbyBlYWNoIGNvbW1hbmQgaW4gdGhlIGZpbmlzaCBjb21tYW5kcy4KK0BAIC0xOTk3LDcgKzI3MDQsNyBAQCBmdW5jX21vZGVfZmluaXNoICgpCisgCWlmIHRlc3QgLW4gIiRmaW5pc2hfZXZhbCI7IHRoZW4KKyAJICAjIERvIHRoZSBzaW5nbGUgZmluaXNoX2V2YWwuCisgCSAgZXZhbCBjbWRzPVwiJGZpbmlzaF9ldmFsXCIKKy0JICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAiJGNtZHMiIHx8IGFkbWluY21kcz0iJGFkbWluY21kcworKwkgICRvcHRfZHJ5X3J1biB8fCBldmFsICIkY21kcyIgfHwgZnVuY19hcHBlbmQgYWRtaW5jbWRzICIKKyAgICAgICAgJGNtZHMiCisgCWZpCisgICAgICAgZG9uZQorQEAgLTIwMDYsNTMgKzI3MTMsNTUgQEAgZnVuY19tb2RlX2ZpbmlzaCAoKQorICAgICAjIEV4aXQgaGVyZSBpZiB0aGV5IHdhbnRlZCBzaWxlbnQgbW9kZS4KKyAgICAgJG9wdF9zaWxlbnQgJiYgZXhpdCAkRVhJVF9TVUNDRVNTCisgCistICAgIGVjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCistICAgIGVjaG8gIkxpYnJhcmllcyBoYXZlIGJlZW4gaW5zdGFsbGVkIGluOiIKKy0gICAgZm9yIGxpYmRpciBpbiAkbGliZGlyczsgZG8KKy0gICAgICAkRUNITyAiICAgJGxpYmRpciIKKy0gICAgZG9uZQorLSAgICBlY2hvCistICAgIGVjaG8gIklmIHlvdSBldmVyIGhhcHBlbiB0byB3YW50IHRvIGxpbmsgYWdhaW5zdCBpbnN0YWxsZWQgbGlicmFyaWVzIgorLSAgICBlY2hvICJpbiBhIGdpdmVuIGRpcmVjdG9yeSwgTElCRElSLCB5b3UgbXVzdCBlaXRoZXIgdXNlIGxpYnRvb2wsIGFuZCIKKy0gICAgZWNobyAic3BlY2lmeSB0aGUgZnVsbCBwYXRobmFtZSBvZiB0aGUgbGlicmFyeSwgb3IgdXNlIHRoZSBcYC1MTElCRElSJyIKKy0gICAgZWNobyAiZmxhZyBkdXJpbmcgbGlua2luZyBhbmQgZG8gYXQgbGVhc3Qgb25lIG9mIHRoZSBmb2xsb3dpbmc6IgorLSAgICBpZiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciI7IHRoZW4KKy0gICAgICBlY2hvICIgICAtIGFkZCBMSUJESVIgdG8gdGhlIFxgJHNobGlicGF0aF92YXInIGVudmlyb25tZW50IHZhcmlhYmxlIgorLSAgICAgIGVjaG8gIiAgICAgZHVyaW5nIGV4ZWN1dGlvbiIKKy0gICAgZmkKKy0gICAgaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgorLSAgICAgIGVjaG8gIiAgIC0gYWRkIExJQkRJUiB0byB0aGUgXGAkcnVucGF0aF92YXInIGVudmlyb25tZW50IHZhcmlhYmxlIgorLSAgICAgIGVjaG8gIiAgICAgZHVyaW5nIGxpbmtpbmciCistICAgIGZpCistICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIjsgdGhlbgorLSAgICAgIGxpYmRpcj1MSUJESVIKKy0gICAgICBldmFsICJmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIiIKKysgICAgaWYgdGVzdCAtbiAiJGZpbmlzaF9jbWRzJGZpbmlzaF9ldmFsIiAmJiB0ZXN0IC1uICIkbGliZGlycyI7IHRoZW4KKysgICAgICBlY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIgorKyAgICAgIGVjaG8gIkxpYnJhcmllcyBoYXZlIGJlZW4gaW5zdGFsbGVkIGluOiIKKysgICAgICBmb3IgbGliZGlyIGluICRsaWJkaXJzOyBkbworKwkkRUNITyAiICAgJGxpYmRpciIKKysgICAgICBkb25lCisrICAgICAgZWNobworKyAgICAgIGVjaG8gIklmIHlvdSBldmVyIGhhcHBlbiB0byB3YW50IHRvIGxpbmsgYWdhaW5zdCBpbnN0YWxsZWQgbGlicmFyaWVzIgorKyAgICAgIGVjaG8gImluIGEgZ2l2ZW4gZGlyZWN0b3J5LCBMSUJESVIsIHlvdSBtdXN0IGVpdGhlciB1c2UgbGlidG9vbCwgYW5kIgorKyAgICAgIGVjaG8gInNwZWNpZnkgdGhlIGZ1bGwgcGF0aG5hbWUgb2YgdGhlIGxpYnJhcnksIG9yIHVzZSB0aGUgXGAtTExJQkRJUiciCisrICAgICAgZWNobyAiZmxhZyBkdXJpbmcgbGlua2luZyBhbmQgZG8gYXQgbGVhc3Qgb25lIG9mIHRoZSBmb2xsb3dpbmc6IgorKyAgICAgIGlmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIjsgdGhlbgorKwllY2hvICIgICAtIGFkZCBMSUJESVIgdG8gdGhlIFxgJHNobGlicGF0aF92YXInIGVudmlyb25tZW50IHZhcmlhYmxlIgorKwllY2hvICIgICAgIGR1cmluZyBleGVjdXRpb24iCisrICAgICAgZmkKKysgICAgICBpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCisrCWVjaG8gIiAgIC0gYWRkIExJQkRJUiB0byB0aGUgXGAkcnVucGF0aF92YXInIGVudmlyb25tZW50IHZhcmlhYmxlIgorKwllY2hvICIgICAgIGR1cmluZyBsaW5raW5nIgorKyAgICAgIGZpCisrICAgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiOyB0aGVuCisrCWxpYmRpcj1MSUJESVIKKysJZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgorIAorLSAgICAgICRFQ0hPICIgICAtIHVzZSB0aGUgXGAkZmxhZycgbGlua2VyIGZsYWciCistICAgIGZpCistICAgIGlmIHRlc3QgLW4gIiRhZG1pbmNtZHMiOyB0aGVuCistICAgICAgJEVDSE8gIiAgIC0gaGF2ZSB5b3VyIHN5c3RlbSBhZG1pbmlzdHJhdG9yIHJ1biB0aGVzZSBjb21tYW5kczokYWRtaW5jbWRzIgorLSAgICBmaQorLSAgICBpZiB0ZXN0IC1mIC9ldGMvbGQuc28uY29uZjsgdGhlbgorLSAgICAgIGVjaG8gIiAgIC0gaGF2ZSB5b3VyIHN5c3RlbSBhZG1pbmlzdHJhdG9yIGFkZCBMSUJESVIgdG8gXGAvZXRjL2xkLnNvLmNvbmYnIgorLSAgICBmaQorLSAgICBlY2hvCisrCSRFQ0hPICIgICAtIHVzZSB0aGUgXGAkZmxhZycgbGlua2VyIGZsYWciCisrICAgICAgZmkKKysgICAgICBpZiB0ZXN0IC1uICIkYWRtaW5jbWRzIjsgdGhlbgorKwkkRUNITyAiICAgLSBoYXZlIHlvdXIgc3lzdGVtIGFkbWluaXN0cmF0b3IgcnVuIHRoZXNlIGNvbW1hbmRzOiRhZG1pbmNtZHMiCisrICAgICAgZmkKKysgICAgICBpZiB0ZXN0IC1mIC9ldGMvbGQuc28uY29uZjsgdGhlbgorKwllY2hvICIgICAtIGhhdmUgeW91ciBzeXN0ZW0gYWRtaW5pc3RyYXRvciBhZGQgTElCRElSIHRvIFxgL2V0Yy9sZC5zby5jb25mJyIKKysgICAgICBmaQorKyAgICAgIGVjaG8KKyAKKy0gICAgZWNobyAiU2VlIGFueSBvcGVyYXRpbmcgc3lzdGVtIGRvY3VtZW50YXRpb24gYWJvdXQgc2hhcmVkIGxpYnJhcmllcyBmb3IiCistICAgIGNhc2UgJGhvc3QgaW4KKy0gICAgICBzb2xhcmlzMi5bNjc4OV18c29sYXJpczIuMVswLTldKQorLSAgICAgICAgZWNobyAibW9yZSBpbmZvcm1hdGlvbiwgc3VjaCBhcyB0aGUgbGQoMSksIGNybGUoMSkgYW5kIGxkLnNvKDgpIG1hbnVhbCIKKy0JZWNobyAicGFnZXMuIgorLQk7OworLSAgICAgICopCistICAgICAgICBlY2hvICJtb3JlIGluZm9ybWF0aW9uLCBzdWNoIGFzIHRoZSBsZCgxKSBhbmQgbGQuc28oOCkgbWFudWFsIHBhZ2VzLiIKKy0gICAgICAgIDs7CistICAgIGVzYWMKKy0gICAgZWNobyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKKysgICAgICBlY2hvICJTZWUgYW55IG9wZXJhdGluZyBzeXN0ZW0gZG9jdW1lbnRhdGlvbiBhYm91dCBzaGFyZWQgbGlicmFyaWVzIGZvciIKKysgICAgICBjYXNlICRob3N0IGluCisrCXNvbGFyaXMyLls2Nzg5XXxzb2xhcmlzMi4xWzAtOV0pCisrCSAgZWNobyAibW9yZSBpbmZvcm1hdGlvbiwgc3VjaCBhcyB0aGUgbGQoMSksIGNybGUoMSkgYW5kIGxkLnNvKDgpIG1hbnVhbCIKKysJICBlY2hvICJwYWdlcy4iCisrCSAgOzsKKysJKikKKysJICBlY2hvICJtb3JlIGluZm9ybWF0aW9uLCBzdWNoIGFzIHRoZSBsZCgxKSBhbmQgbGQuc28oOCkgbWFudWFsIHBhZ2VzLiIKKysJICA7OworKyAgICAgIGVzYWMKKysgICAgICBlY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIgorKyAgICBmaQorICAgICBleGl0ICRFWElUX1NVQ0NFU1MKKyB9CisgCistdGVzdCAiJG1vZGUiID0gZmluaXNoICYmIGZ1bmNfbW9kZV9maW5pc2ggJHsxKyIkQCJ9CisrdGVzdCAiJG9wdF9tb2RlIiA9IGZpbmlzaCAmJiBmdW5jX21vZGVfZmluaXNoICR7MSsiJEAifQorIAorIAorICMgZnVuY19tb2RlX2luc3RhbGwgYXJnLi4uCitAQCAtMjA3Nyw3ICsyNzg2LDcgQEAgZnVuY19tb2RlX2luc3RhbGwgKCkKKyAgICAgIyBUaGUgcmVhbCBmaXJzdCBhcmd1bWVudCBzaG91bGQgYmUgdGhlIG5hbWUgb2YgdGhlIGluc3RhbGxhdGlvbiBwcm9ncmFtLgorICAgICAjIEFlc3RoZXRpY2FsbHkgcXVvdGUgaXQuCisgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCistICAgIGluc3RhbGxfcHJvZz0iJGluc3RhbGxfcHJvZyRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKysgICAgZnVuY19hcHBlbmQgaW5zdGFsbF9wcm9nICIkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisgICAgIGluc3RhbGxfc2hhcmVkX3Byb2c9JGluc3RhbGxfcHJvZworICAgICBjYXNlICIgJGluc3RhbGxfcHJvZyAiIGluCisgICAgICAgKltcXFwgL11jcFwgKikgaW5zdGFsbF9jcD06IDs7CitAQCAtMjA5Nyw3ICsyODA2LDcgQEAgZnVuY19tb2RlX2luc3RhbGwgKCkKKyAgICAgZG8KKyAgICAgICBhcmcyPQorICAgICAgIGlmIHRlc3QgLW4gIiRkZXN0IjsgdGhlbgorLQlmaWxlcz0iJGZpbGVzICRkZXN0IgorKwlmdW5jX2FwcGVuZCBmaWxlcyAiICRkZXN0IgorIAlkZXN0PSRhcmcKKyAJY29udGludWUKKyAgICAgICBmaQorQEAgLTIxMzUsMTEgKzI4NDQsMTEgQEAgZnVuY19tb2RlX2luc3RhbGwgKCkKKyAKKyAgICAgICAjIEFlc3RoZXRpY2FsbHkgcXVvdGUgdGhlIGFyZ3VtZW50LgorICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCistICAgICAgaW5zdGFsbF9wcm9nPSIkaW5zdGFsbF9wcm9nICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKysgICAgICBmdW5jX2FwcGVuZCBpbnN0YWxsX3Byb2cgIiAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisgICAgICAgaWYgdGVzdCAtbiAiJGFyZzIiOyB0aGVuCisgCWZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmcyIgorICAgICAgIGZpCistICAgICAgaW5zdGFsbF9zaGFyZWRfcHJvZz0iJGluc3RhbGxfc2hhcmVkX3Byb2cgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorKyAgICAgIGZ1bmNfYXBwZW5kIGluc3RhbGxfc2hhcmVkX3Byb2cgIiAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisgICAgIGRvbmUKKyAKKyAgICAgdGVzdCAteiAiJGluc3RhbGxfcHJvZyIgJiYgXAorQEAgLTIxNTEsNyArMjg2MCw3IEBAIGZ1bmNfbW9kZV9pbnN0YWxsICgpCisgICAgIGlmIHRlc3QgLW4gIiRpbnN0YWxsX292ZXJyaWRlX21vZGUiICYmICRub19tb2RlOyB0aGVuCisgICAgICAgaWYgJGluc3RhbGxfY3A7IHRoZW4gOjsgZWxzZQorIAlmdW5jX3F1b3RlX2Zvcl9ldmFsICIkaW5zdGFsbF9vdmVycmlkZV9tb2RlIgorLQlpbnN0YWxsX3NoYXJlZF9wcm9nPSIkaW5zdGFsbF9zaGFyZWRfcHJvZyAtbSAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisrCWZ1bmNfYXBwZW5kIGluc3RhbGxfc2hhcmVkX3Byb2cgIiAtbSAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisgICAgICAgZmkKKyAgICAgZmkKKyAKK0BAIC0yMjA5LDEwICsyOTE4LDEzIEBAIGZ1bmNfbW9kZV9pbnN0YWxsICgpCisgICAgICAgY2FzZSAkZmlsZSBpbgorICAgICAgICouJGxpYmV4dCkKKyAJIyBEbyB0aGUgc3RhdGljIGxpYnJhcmllcyBsYXRlci4KKy0Jc3RhdGljbGlicz0iJHN0YXRpY2xpYnMgJGZpbGUiCisrCWZ1bmNfYXBwZW5kIHN0YXRpY2xpYnMgIiAkZmlsZSIKKyAJOzsKKyAKKyAgICAgICAqLmxhKQorKwlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZpbGUiCisrCWZpbGU9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAorKworIAkjIENoZWNrIHRvIHNlZSB0aGF0IHRoaXMgcmVhbGx5IGlzIGEgbGlidG9vbCBhcmNoaXZlLgorIAlmdW5jX2xhbGliX3Vuc2FmZV9wICIkZmlsZSIgXAorIAkgIHx8IGZ1bmNfZmF0YWxfaGVscCAiXGAkZmlsZScgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgorQEAgLTIyMjYsMjMgKzI5MzgsMzAgQEAgZnVuY19tb2RlX2luc3RhbGwgKCkKKyAJaWYgdGVzdCAiWCRkZXN0ZGlyIiA9ICJYJGxpYmRpciI7IHRoZW4KKyAJICBjYXNlICIkY3VycmVudF9saWJkaXJzICIgaW4KKyAJICAqIiAkbGliZGlyICIqKSA7OworLQkgICopIGN1cnJlbnRfbGliZGlycz0iJGN1cnJlbnRfbGliZGlycyAkbGliZGlyIiA7OworKwkgICopIGZ1bmNfYXBwZW5kIGN1cnJlbnRfbGliZGlycyAiICRsaWJkaXIiIDs7CisgCSAgZXNhYworIAllbHNlCisgCSAgIyBOb3RlIHRoZSBsaWJkaXIgYXMgYSBmdXR1cmUgbGliZGlyLgorIAkgIGNhc2UgIiRmdXR1cmVfbGliZGlycyAiIGluCisgCSAgKiIgJGxpYmRpciAiKikgOzsKKy0JICAqKSBmdXR1cmVfbGliZGlycz0iJGZ1dHVyZV9saWJkaXJzICRsaWJkaXIiIDs7CisrCSAgKikgZnVuY19hcHBlbmQgZnV0dXJlX2xpYmRpcnMgIiAkbGliZGlyIiA7OworIAkgIGVzYWMKKyAJZmkKKyAKKyAJZnVuY19kaXJuYW1lICIkZmlsZSIgIi8iICIiCisgCWRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCistCWRpcj0iJGRpciRvYmpkaXIiCisrCWZ1bmNfYXBwZW5kIGRpciAiJG9iamRpciIKKyAKKyAJaWYgdGVzdCAtbiAiJHJlbGlua19jb21tYW5kIjsgdGhlbgorKyAgICAgICMgU3RyaXAgYW55IHRyYWlsaW5nIHNsYXNoIGZyb20gdGhlIGRlc3RpbmF0aW9uLgorKyAgICAgIGZ1bmNfc3RyaXBuYW1lICcnICcvJyAiJGxpYmRpciIKKysgICAgICBkZXN0bGliZGlyPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKysKKysgICAgICBmdW5jX3N0cmlwbmFtZSAnJyAnLycgIiRkZXN0ZGlyIgorKyAgICAgIHNfZGVzdGRpcj0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisrCisgCSAgIyBEZXRlcm1pbmUgdGhlIHByZWZpeCB0aGUgdXNlciBoYXMgYXBwbGllZCB0byBvdXIgZnV0dXJlIGRpci4KKy0JICBpbnN0X3ByZWZpeF9kaXI9YCRFQ0hPICIkZGVzdGRpciIgfCAkU0VEIC1lICJzJSRsaWJkaXJcJCUlImAKKysJICBpbnN0X3ByZWZpeF9kaXI9YCRFQ0hPICJYJHNfZGVzdGRpciIgfCAkWHNlZCAtZSAicyUkZGVzdGxpYmRpclwkJSUiYAorIAorIAkgICMgRG9uJ3QgYWxsb3cgdGhlIHVzZXIgdG8gcGxhY2UgdXMgb3V0c2lkZSBvZiBvdXIgZXhwZWN0ZWQKKyAJICAjIGxvY2F0aW9uIGIvYyB0aGlzIHByZXZlbnRzIGZpbmRpbmcgZGVwZW5kZW50IGxpYnJhcmllcyB0aGF0CitAQCAtMjMxNSw3ICszMDM0LDcgQEAgZnVuY19tb2RlX2luc3RhbGwgKCkKKyAJZnVuY19zaG93X2V2YWwgIiRpbnN0YWxsX3Byb2cgJGluc3RuYW1lICRkZXN0ZGlyLyRuYW1lIiAnZXhpdCAkPycKKyAKKyAJIyBNYXliZSBpbnN0YWxsIHRoZSBzdGF0aWMgbGlicmFyeSwgdG9vLgorLQl0ZXN0IC1uICIkb2xkX2xpYnJhcnkiICYmIHN0YXRpY2xpYnM9IiRzdGF0aWNsaWJzICRkaXIvJG9sZF9saWJyYXJ5IgorKwl0ZXN0IC1uICIkb2xkX2xpYnJhcnkiICYmIGZ1bmNfYXBwZW5kIHN0YXRpY2xpYnMgIiAkZGlyLyRvbGRfbGlicmFyeSIKKyAJOzsKKyAKKyAgICAgICAqLmxvKQorQEAgLTI1MDMsNyArMzIyMiw3IEBAIGZ1bmNfbW9kZV9pbnN0YWxsICgpCisgICAgIHRlc3QgLW4gIiRmdXR1cmVfbGliZGlycyIgJiYgXAorICAgICAgIGZ1bmNfd2FybmluZyAicmVtZW1iZXIgdG8gcnVuIFxgJHByb2duYW1lIC0tZmluaXNoJGZ1dHVyZV9saWJkaXJzJyIKKyAKKy0gICAgaWYgdGVzdCAtbiAiJGN1cnJlbnRfbGliZGlycyIgJiYgJG9wdF9maW5pc2g7IHRoZW4KKysgICAgaWYgdGVzdCAtbiAiJGN1cnJlbnRfbGliZGlycyI7IHRoZW4KKyAgICAgICAjIE1heWJlIGp1c3QgZG8gYSBkcnkgcnVuLgorICAgICAgICRvcHRfZHJ5X3J1biAmJiBjdXJyZW50X2xpYmRpcnM9IiAtbiRjdXJyZW50X2xpYmRpcnMiCisgICAgICAgZXhlY19jbWQ9JyRTSEVMTCAkcHJvZ3BhdGggJHByZXNlcnZlX2FyZ3MgLS1maW5pc2gkY3VycmVudF9saWJkaXJzJworQEAgLTI1MTIsNyArMzIzMSw3IEBAIGZ1bmNfbW9kZV9pbnN0YWxsICgpCisgICAgIGZpCisgfQorIAorLXRlc3QgIiRtb2RlIiA9IGluc3RhbGwgJiYgZnVuY19tb2RlX2luc3RhbGwgJHsxKyIkQCJ9CisrdGVzdCAiJG9wdF9tb2RlIiA9IGluc3RhbGwgJiYgZnVuY19tb2RlX2luc3RhbGwgJHsxKyIkQCJ9CisgCisgCisgIyBmdW5jX2dlbmVyYXRlX2Rsc3ltcyBvdXRwdXRuYW1lIG9yaWdpbmF0b3IgcGljX3AKK0BAIC0yNTU5LDYgKzMyNzgsMTggQEAgZXh0ZXJuIFwiQ1wiIHsKKyAjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgXCItV3N0cmljdC1wcm90b3R5cGVzXCIKKyAjZW5kaWYKKyAKKysvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KKysjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQorKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQorKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVAorKyNlbGlmIGRlZmluZWQoX19vc2ZfXykKKysvKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhLiAgKi8KKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVAorKyNlbHNlCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QgY29uc3QKKysjZW5kaWYKKysKKyAvKiBFeHRlcm5hbCBzeW1ib2wgZGVjbGFyYXRpb25zIGZvciB0aGUgY29tcGlsZXIuICovXAorICIKKyAKK0BAIC0yNTcwLDIxICszMzAxLDIyIEBAIGV4dGVybiBcIkNcIiB7CisgCSAgIyBBZGQgb3VyIG93biBwcm9ncmFtIG9iamVjdHMgdG8gdGhlIHN5bWJvbCBsaXN0LgorIAkgIHByb2dmaWxlcz1gJEVDSE8gIiRvYmpzJG9sZF9kZXBsaWJzIiB8ICRTUDJOTCB8ICRTRUQgIiRsbzJvIiB8ICROTDJTUGAKKyAJICBmb3IgcHJvZ2ZpbGUgaW4gJHByb2dmaWxlczsgZG8KKy0JICAgIGZ1bmNfdmVyYm9zZSAiZXh0cmFjdGluZyBnbG9iYWwgQyBzeW1ib2xzIGZyb20gXGAkcHJvZ2ZpbGUnIgorLQkgICAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgIiROTSAkcHJvZ2ZpbGUgfCAkZ2xvYmFsX3N5bWJvbF9waXBlID4+ICckbmxpc3QnIgorKwkgICAgZnVuY190b190b29sX2ZpbGUgIiRwcm9nZmlsZSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysJICAgIGZ1bmNfdmVyYm9zZSAiZXh0cmFjdGluZyBnbG9iYWwgQyBzeW1ib2xzIGZyb20gXGAkZnVuY190b190b29sX2ZpbGVfcmVzdWx0JyIKKysJICAgICRvcHRfZHJ5X3J1biB8fCBldmFsICIkTk0gJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgPj4gJyRubGlzdCciCisgCSAgZG9uZQorIAorIAkgIGlmIHRlc3QgLW4gIiRleGNsdWRlX2V4cHN5bXMiOyB0aGVuCisgCSAgICAkb3B0X2RyeV9ydW4gfHwgeworLQkgICAgICAkRUdSRVAgLXYgIiAoJGV4Y2x1ZGVfZXhwc3ltcykkIiAiJG5saXN0IiA+ICIkbmxpc3QiVAorLQkgICAgICAkTVYgIiRubGlzdCJUICIkbmxpc3QiCisrCSAgICAgIGV2YWwgJyRFR1JFUCAtdiAiICgkZXhjbHVkZV9leHBzeW1zKSQiICIkbmxpc3QiID4gIiRubGlzdCJUJworKwkgICAgICBldmFsICckTVYgIiRubGlzdCJUICIkbmxpc3QiJworIAkgICAgfQorIAkgIGZpCisgCisgCSAgaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzX3JlZ2V4IjsgdGhlbgorIAkgICAgJG9wdF9kcnlfcnVuIHx8IHsKKy0JICAgICAgJEVHUkVQIC1lICIkZXhwb3J0X3N5bWJvbHNfcmVnZXgiICIkbmxpc3QiID4gIiRubGlzdCJUCistCSAgICAgICRNViAiJG5saXN0IlQgIiRubGlzdCIKKysJICAgICAgZXZhbCAnJEVHUkVQIC1lICIkZXhwb3J0X3N5bWJvbHNfcmVnZXgiICIkbmxpc3QiID4gIiRubGlzdCJUJworKwkgICAgICBldmFsICckTVYgIiRubGlzdCJUICIkbmxpc3QiJworIAkgICAgfQorIAkgIGZpCisgCitAQCAtMjU5MywyMyArMzMyNSwyMyBAQCBleHRlcm4gXCJDXCIgeworIAkgICAgZXhwb3J0X3N5bWJvbHM9IiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmV4cCIKKyAJICAgICRvcHRfZHJ5X3J1biB8fCB7CisgCSAgICAgICRSTSAkZXhwb3J0X3N5bWJvbHMKKy0JICAgICAgJHtTRUR9IC1uIC1lICcvXjogQFBST0dSQU1AICQvZCcgLWUgJ3MvXi4qIFwoLipcKSQvXDEvcCcgPCAiJG5saXN0IiA+ICIkZXhwb3J0X3N5bWJvbHMiCisrCSAgICAgIGV2YWwgIiR7U0VEfSAtbiAtZSAnL146IEBQUk9HUkFNQCAkL2QnIC1lICdzL14uKiBcKC4qXCkkL1wxL3AnICInPCAiJG5saXN0IiA+ICIkZXhwb3J0X3N5bWJvbHMiJworIAkgICAgICBjYXNlICRob3N0IGluCisgCSAgICAgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpjZWdjYyogKQorLSAgICAgICAgICAgICAgICBlY2hvIEVYUE9SVFMgPiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIgorLSAgICAgICAgICAgICAgICBjYXQgIiRleHBvcnRfc3ltYm9scyIgPj4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiIKKysgICAgICAgICAgICAgICAgZXZhbCAiZWNobyBFWFBPUlRTICInPiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIicKKysgICAgICAgICAgICAgICAgZXZhbCAnY2F0ICIkZXhwb3J0X3N5bWJvbHMiID4+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5kZWYiJworIAkgICAgICAgIDs7CisgCSAgICAgIGVzYWMKKyAJICAgIH0KKyAJICBlbHNlCisgCSAgICAkb3B0X2RyeV9ydW4gfHwgeworLQkgICAgICAke1NFRH0gLWUgJ3MvXChbXS5bKl4kXVwpL1xcXDEvZycgLWUgJ3MvXi8gLycgLWUgJ3MvJC8kLycgPCAiJGV4cG9ydF9zeW1ib2xzIiA+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5leHAiCistCSAgICAgICRHUkVQIC1mICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5leHAiIDwgIiRubGlzdCIgPiAiJG5saXN0IlQKKy0JICAgICAgJE1WICIkbmxpc3QiVCAiJG5saXN0IgorKwkgICAgICBldmFsICIke1NFRH0gLWUgJ3MvXChbXS5bKl4kXVwpL1xcXFxcMS9nJyAtZSAncy9eLyAvJyAtZSAncy8kLyQvJyInIDwgIiRleHBvcnRfc3ltYm9scyIgPiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZXhwIicKKysJICAgICAgZXZhbCAnJEdSRVAgLWYgIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmV4cCIgPCAiJG5saXN0IiA+ICIkbmxpc3QiVCcKKysJICAgICAgZXZhbCAnJE1WICIkbmxpc3QiVCAiJG5saXN0IicKKyAJICAgICAgY2FzZSAkaG9zdCBpbgorIAkgICAgICAgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpjZWdjYyogKQorLQkgICAgICAgICAgZWNobyBFWFBPUlRTID4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiIKKy0JICAgICAgICAgIGNhdCAiJG5saXN0IiA+PiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIgorKwkgICAgICAgICAgZXZhbCAiZWNobyBFWFBPUlRTICInPiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIicKKysJICAgICAgICAgIGV2YWwgJ2NhdCAiJG5saXN0IiA+PiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIicKKyAJICAgICAgICAgIDs7CisgCSAgICAgIGVzYWMKKyAJICAgIH0KK0BAIC0yNjIwLDEwICszMzUyLDUyIEBAIGV4dGVybiBcIkNcIiB7CisgCSAgZnVuY192ZXJib3NlICJleHRyYWN0aW5nIGdsb2JhbCBDIHN5bWJvbHMgZnJvbSBcYCRkbHByZWZpbGUnIgorIAkgIGZ1bmNfYmFzZW5hbWUgIiRkbHByZWZpbGUiCisgCSAgbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorLQkgICRvcHRfZHJ5X3J1biB8fCB7CistCSAgICAkRUNITyAiOiAkbmFtZSAiID4+ICIkbmxpc3QiCistCSAgICBldmFsICIkTk0gJGRscHJlZmlsZSAyPi9kZXYvbnVsbCB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgPj4gJyRubGlzdCciCistCSAgfQorKyAgICAgICAgICBjYXNlICRob3N0IGluCisrCSAgICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqICkKKysJICAgICAgIyBpZiBhbiBpbXBvcnQgbGlicmFyeSwgd2UgbmVlZCB0byBvYnRhaW4gZGxuYW1lCisrCSAgICAgIGlmIGZ1bmNfd2luMzJfaW1wb3J0X2xpYl9wICIkZGxwcmVmaWxlIjsgdGhlbgorKwkgICAgICAgIGZ1bmNfdHJfc2ggIiRkbHByZWZpbGUiCisrCSAgICAgICAgZXZhbCAiY3Vycl9sYWZpbGU9XCRsaWJmaWxlXyRmdW5jX3RyX3NoX3Jlc3VsdCIKKysJICAgICAgICBkbHByZWZpbGVfZGxiYXNlbmFtZT0iIgorKwkgICAgICAgIGlmIHRlc3QgLW4gIiRjdXJyX2xhZmlsZSIgJiYgZnVuY19sYWxpYl9wICIkY3Vycl9sYWZpbGUiOyB0aGVuCisrCSAgICAgICAgICAjIFVzZSBzdWJzaGVsbCwgdG8gYXZvaWQgY2xvYmJlcmluZyBjdXJyZW50IHZhcmlhYmxlIHZhbHVlcworKwkgICAgICAgICAgZGxwcmVmaWxlX2RsbmFtZT1gc291cmNlICIkY3Vycl9sYWZpbGUiICYmIGVjaG8gIiRkbG5hbWUiYAorKwkgICAgICAgICAgaWYgdGVzdCAtbiAiJGRscHJlZmlsZV9kbG5hbWUiIDsgdGhlbgorKwkgICAgICAgICAgICBmdW5jX2Jhc2VuYW1lICIkZGxwcmVmaWxlX2RsbmFtZSIKKysJICAgICAgICAgICAgZGxwcmVmaWxlX2RsYmFzZW5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKysJICAgICAgICAgIGVsc2UKKysJICAgICAgICAgICAgIyBubyBsYWZpbGUuIHVzZXIgZXhwbGljaXRseSByZXF1ZXN0ZWQgLWRscHJlb3BlbiA8aW1wb3J0IGxpYnJhcnk+LgorKwkgICAgICAgICAgICAkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQgIiRkbHByZWZpbGUiCisrCSAgICAgICAgICAgIGRscHJlZmlsZV9kbGJhc2VuYW1lPSRzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdAorKwkgICAgICAgICAgZmkKKysJICAgICAgICBmaQorKwkgICAgICAgICRvcHRfZHJ5X3J1biB8fCB7CisrCSAgICAgICAgICBpZiB0ZXN0IC1uICIkZGxwcmVmaWxlX2RsYmFzZW5hbWUiIDsgdGhlbgorKwkgICAgICAgICAgICBldmFsICckRUNITyAiOiAkZGxwcmVmaWxlX2RsYmFzZW5hbWUiID4+ICIkbmxpc3QiJworKwkgICAgICAgICAgZWxzZQorKwkgICAgICAgICAgICBmdW5jX3dhcm5pbmcgIkNvdWxkIG5vdCBjb21wdXRlIERMTCBuYW1lIGZyb20gJG5hbWUiCisrCSAgICAgICAgICAgIGV2YWwgJyRFQ0hPICI6ICRuYW1lICIgPj4gIiRubGlzdCInCisrCSAgICAgICAgICBmaQorKwkgICAgICAgICAgZnVuY190b190b29sX2ZpbGUgIiRkbHByZWZpbGUiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrCSAgICAgICAgICBldmFsICIkTk0gXCIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0XCIgMj4vZGV2L251bGwgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwKKysJICAgICAgICAgICAgJFNFRCAtZSAnL0kgX19pbXAvZCcgLWUgJ3MvSSBfX25tXy9EIC87cy9fbm1fXy8vJyA+PiAnJG5saXN0JyIKKysJICAgICAgICB9CisrCSAgICAgIGVsc2UgIyBub3QgYW4gaW1wb3J0IGxpYgorKwkgICAgICAgICRvcHRfZHJ5X3J1biB8fCB7CisrCSAgICAgICAgICBldmFsICckRUNITyAiOiAkbmFtZSAiID4+ICIkbmxpc3QiJworKwkgICAgICAgICAgZnVuY190b190b29sX2ZpbGUgIiRkbHByZWZpbGUiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrCSAgICAgICAgICBldmFsICIkTk0gXCIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0XCIgMj4vZGV2L251bGwgfCAkZ2xvYmFsX3N5bWJvbF9waXBlID4+ICckbmxpc3QnIgorKwkgICAgICAgIH0KKysJICAgICAgZmkKKysJICAgIDs7CisrCSAgICAqKQorKwkgICAgICAkb3B0X2RyeV9ydW4gfHwgeworKwkgICAgICAgIGV2YWwgJyRFQ0hPICI6ICRuYW1lICIgPj4gIiRubGlzdCInCisrCSAgICAgICAgZnVuY190b190b29sX2ZpbGUgIiRkbHByZWZpbGUiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrCSAgICAgICAgZXZhbCAiJE5NIFwiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdFwiIDI+L2Rldi9udWxsIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSA+PiAnJG5saXN0JyIKKysJICAgICAgfQorKwkgICAgOzsKKysgICAgICAgICAgZXNhYworIAlkb25lCisgCisgCSRvcHRfZHJ5X3J1biB8fCB7CitAQCAtMjY2MSwyNiArMzQzNSw5IEBAIHR5cGVkZWYgc3RydWN0IHsKKyAgIGNvbnN0IGNoYXIgKm5hbWU7CisgICB2b2lkICphZGRyZXNzOworIH0gbHRfZGxzeW1saXN0OworLSIKKy0JICBjYXNlICRob3N0IGluCistCSAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKmNlZ2NjKiApCistCSAgICBlY2hvID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIiAiXAorLS8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UKKy0gICBydW50aW1lIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbgorLSAgIG9uIHBzZXVkby1yZWxvY3MuICAqLyIKKy0JICAgIGx0X2Rsc3ltX2NvbnN0PSA7OworLQkgICpvc2Y1KikKKy0JICAgIGVjaG8gPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiICJcCistLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YSAqLyIKKy0JICAgIGx0X2Rsc3ltX2NvbnN0PSA7OworLQkgICopCistCSAgICBsdF9kbHN5bV9jb25zdD1jb25zdCA7OworLQkgIGVzYWMKKy0KKy0JICBlY2hvID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIiAiXAorLWV4dGVybiAkbHRfZGxzeW1fY29uc3QgbHRfZGxzeW1saXN0CisrZXh0ZXJuIExUX0RMU1lNX0NPTlNUIGx0X2Rsc3ltbGlzdAorIGx0XyR7bXlfcHJlZml4fV9MVFhfcHJlbG9hZGVkX3N5bWJvbHNbXTsKKy0kbHRfZGxzeW1fY29uc3QgbHRfZGxzeW1saXN0CisrTFRfRExTWU1fQ09OU1QgbHRfZGxzeW1saXN0CisgbHRfJHtteV9wcmVmaXh9X0xUWF9wcmVsb2FkZWRfc3ltYm9sc1tdID0KKyB7XAorICAgeyBcIiRteV9vcmlnaW5hdG9yXCIsICh2b2lkICopIDAgfSwiCitAQCAtMjczNiw3ICszNDkzLDcgQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKKyAJZm9yIGFyZyBpbiAkTFRDRkxBR1M7IGRvCisgCSAgY2FzZSAkYXJnIGluCisgCSAgLXBpZSB8IC1mcGllIHwgLWZQSUUpIDs7CistCSAgKikgc3ltdGFiX2NmbGFncz0iJHN5bXRhYl9jZmxhZ3MgJGFyZyIgOzsKKysJICAqKSBmdW5jX2FwcGVuZCBzeW10YWJfY2ZsYWdzICIgJGFyZyIgOzsKKyAJICBlc2FjCisgCWRvbmUKKyAKK0BAIC0yNzk2LDkgKzM1NTMsMTEgQEAgZnVuY193aW4zMl9saWJpZCAoKQorICAgICB3aW4zMl9saWJpZF90eXBlPSJ4ODYgYXJjaGl2ZSBpbXBvcnQiCisgICAgIDs7CisgICAqYXJcIGFyY2hpdmUqKSAjIGNvdWxkIGJlIGFuIGltcG9ydCwgb3Igc3RhdGljCistICAgIGlmICRPQkpEVU1QIC1mICIkMSIgfCAkU0VEIC1lICcxMHEnIDI+L2Rldi9udWxsIHwKKy0gICAgICAgJEVHUkVQICdmaWxlIGZvcm1hdCAocGUtaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJyA+L2Rldi9udWxsOyB0aGVuCistICAgICAgd2luMzJfbm1yZXM9YCROTSAtZiBwb3NpeCAtQSAiJDEiIHwKKysgICAgIyBLZWVwIHRoZSBlZ3JlcCBwYXR0ZXJuIGluIHN5bmMgd2l0aCB0aGUgb25lIGluIF9MVF9DSEVDS19NQUdJQ19NRVRIT0QuCisrICAgIGlmIGV2YWwgJE9CSkRVTVAgLWYgJDEgfCAkU0VEIC1lICcxMHEnIDI+L2Rldi9udWxsIHwKKysgICAgICAgJEVHUkVQICdmaWxlIGZvcm1hdCAocGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT98cGUtYXJtLXdpbmNlfHBlLXg4Ni02NCknID4vZGV2L251bGw7IHRoZW4KKysgICAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJDEiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrICAgICAgd2luMzJfbm1yZXM9YGV2YWwgJE5NIC1mIHBvc2l4IC1BIFwiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdFwiIHwKKyAJJFNFRCAtbiAtZSAnCisgCSAgICAxLDEwMHsKKyAJCS8gSSAveworQEAgLTI4MjcsNiArMzU4NiwxMzEgQEAgZnVuY193aW4zMl9saWJpZCAoKQorICAgJEVDSE8gIiR3aW4zMl9saWJpZF90eXBlIgorIH0KKyAKKysjIGZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYiBBUkcKKysjCisrIyBQbGF0Zm9ybS1zcGVjaWZpYyBmdW5jdGlvbiB0byBleHRyYWN0IHRoZQorKyMgbmFtZSBvZiB0aGUgRExMIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkCisrIyBpbXBvcnQgbGlicmFyeSBBUkcuCisrIyBJbnZva2VkIGJ5IGV2YWwnaW5nIHRoZSBsaWJ0b29sIHZhcmlhYmxlCisrIyAgICAkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKKysjIFJlc3VsdCBpcyBhdmFpbGFibGUgaW4gdGhlIHZhcmlhYmxlCisrIyAgICAkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQKKytmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIgKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdD1gJERMTFRPT0wgLS1pZGVudGlmeS1zdHJpY3QgLS1pZGVudGlmeSAiJDEiYAorK30KKysKKysjIGZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFja19jb3JlIFNFQ1RJT05fTkFNRSBMSUJOQU1FcworKyMKKysjIFRoZSBpcyB0aGUgY29yZSBvZiBhIGZhbGxiYWNrIGltcGxlbWVudGF0aW9uIG9mIGEKKysjIHBsYXRmb3JtLXNwZWNpZmljIGZ1bmN0aW9uIHRvIGV4dHJhY3QgdGhlIG5hbWUgb2YgdGhlCisrIyBETEwgYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQgaW1wb3J0IGxpYnJhcnkgTElCTkFNRS4KKysjCisrIyBTRUNUSU9OX05BTUUgaXMgZWl0aGVyIC5pZGF0YSQ2IG9yIC5pZGF0YSQ3LCBkZXBlbmRpbmcKKysjIG9uIHRoZSBwbGF0Zm9ybSBhbmQgY29tcGlsZXIgdGhhdCBjcmVhdGVkIHRoZSBpbXBsaWIuCisrIworKyMgRWNob3MgdGhlIG5hbWUgb2YgdGhlIERMTCBhc3NvY2lhdGVkIHdpdGggdGhlCisrIyBzcGVjaWZpZWQgaW1wb3J0IGxpYnJhcnkuCisrZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrX2NvcmUgKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBtYXRjaF9saXRlcmFsPWAkRUNITyAiJDEiIHwgJFNFRCAiJHNlZF9tYWtlX2xpdGVyYWxfcmVnZXgiYAorKyAgJE9CSkRVTVAgLXMgLS1zZWN0aW9uICIkMSIgIiQyIiAyPi9kZXYvbnVsbCB8CisrICAgICRTRUQgJy9eQ29udGVudHMgb2Ygc2VjdGlvbiAnIiRtYXRjaF9saXRlcmFsIic6L3sKKysgICAgICAjIFBsYWNlIG1hcmtlciBhdCBiZWdpbm5pbmcgb2YgYXJjaGl2ZSBtZW1iZXIgZGxsbmFtZSBzZWN0aW9uCisrICAgICAgcy8uKi89PT09TUFSSz09PT0vCisrICAgICAgcAorKyAgICAgIGQKKysgICAgfQorKyAgICAjIFRoZXNlIGxpbmVzIGNhbiBzb21ldGltZXMgYmUgbG9uZ2VyIHRoYW4gNDMgY2hhcmFjdGVycywgYnV0CisrICAgICMgYXJlIGFsd2F5cyB1bmludGVyZXN0aW5nCisrICAgIC86WwkgXSpmaWxlIGZvcm1hdCBwZVtpXVx7LDFcfS0vZAorKyAgICAvXkluIGFyY2hpdmUgW146XSo6L2QKKysgICAgIyBFbnN1cmUgbWFya2VyIGlzIHByaW50ZWQKKysgICAgL149PT09TUFSSz09PT0vcAorKyAgICAjIFJlbW92ZSBhbGwgbGluZXMgd2l0aCBsZXNzIHRoYW4gNDMgY2hhcmFjdGVycworKyAgICAvXi5cezQzXH0vIWQKKysgICAgIyBGcm9tIHJlbWFpbmluZyBsaW5lcywgcmVtb3ZlIGZpcnN0IDQzIGNoYXJhY3RlcnMKKysgICAgcy9eLlx7NDNcfS8vJyB8CisrICAgICRTRUQgLW4gJworKyAgICAgICMgSm9pbiBtYXJrZXIgYW5kIGFsbCBsaW5lcyB1bnRpbCBuZXh0IG1hcmtlciBpbnRvIGEgc2luZ2xlIGxpbmUKKysgICAgICAvXj09PT1NQVJLPT09PS8gYiBwYXJhCisrICAgICAgSAorKyAgICAgICQgYiBwYXJhCisrICAgICAgYgorKyAgICAgIDpwYXJhCisrICAgICAgeAorKyAgICAgIHMvXG4vL2cKKysgICAgICAjIFJlbW92ZSB0aGUgbWFya2VyCisrICAgICAgcy9ePT09PU1BUks9PT09Ly8KKysgICAgICAjIFJlbW92ZSB0cmFpbGluZyBkb3RzIGFuZCB3aGl0ZXNwYWNlCisrICAgICAgcy9bXC4gXHRdKiQvLworKyAgICAgICMgUHJpbnQKKysgICAgICAvLi9wJyB8CisrICAgICMgd2Ugbm93IGhhdmUgYSBsaXN0LCBvbmUgZW50cnkgcGVyIGxpbmUsIG9mIHRoZSBzdHJpbmdpZmllZAorKyAgICAjIGNvbnRlbnRzIG9mIHRoZSBhcHByb3ByaWF0ZSBzZWN0aW9uIG9mIGFsbCBtZW1iZXJzIG9mIHRoZQorKyAgICAjIGFyY2hpdmUgd2hpY2ggcG9zc2VzcyB0aGF0IHNlY3Rpb24uIEhldXJpc3RpYzogZWxpbWluYXRlCisrICAgICMgYWxsIHRob3NlIHdoaWNoIGhhdmUgYSBmaXJzdCBvciBzZWNvbmQgY2hhcmFjdGVyIHRoYXQgaXMKKysgICAgIyBhICcuJyAodGhhdCBpcywgb2JqZHVtcCdzIHJlcHJlc2VudGF0aW9uIG9mIGFuIHVucHJpbnRhYmxlCisrICAgICMgY2hhcmFjdGVyLikgVGhpcyBzaG91bGQgd29yayBmb3IgYWxsIGFyY2hpdmVzIHdpdGggbGVzcyB0aGFuCisrICAgICMgMHgzMDJmIGV4cG9ydHMgLS0gYnV0IHdpbGwgZmFpbCBmb3IgRExMcyB3aG9zZSBuYW1lIGFjdHVhbGx5CisrICAgICMgYmVnaW5zIHdpdGggYSBsaXRlcmFsICcuJyBvciBhIHNpbmdsZSBjaGFyYWN0ZXIgZm9sbG93ZWQgYnkKKysgICAgIyBhICcuJy4KKysgICAgIworKyAgICAjIE9mIHRob3NlIHRoYXQgcmVtYWluLCBwcmludCB0aGUgZmlyc3Qgb25lLgorKyAgICAkU0VEIC1lICcvXlwuL2Q7L14uXC4vZDtxJworK30KKysKKysjIGZ1bmNfY3lnbWluZ19nbnVfaW1wbGliX3AgQVJHCisrIyBUaGlzIHByZWRpY2F0ZSByZXR1cm5zIHdpdGggemVybyBzdGF0dXMgKFRSVUUpIGlmCisrIyBBUkcgaXMgYSBHTlUvYmludXRpbHMtc3R5bGUgaW1wb3J0IGxpYnJhcnkuIFJldHVybnMKKysjIHdpdGggbm9uemVybyBzdGF0dXMgKEZBTFNFKSBvdGhlcndpc2UuCisrZnVuY19jeWdtaW5nX2dudV9pbXBsaWJfcCAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGZ1bmNfdG9fdG9vbF9maWxlICIkMSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysgIGZ1bmNfY3lnbWluZ19nbnVfaW1wbGliX3RtcD1gJE5NICIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiB8IGV2YWwgIiRnbG9iYWxfc3ltYm9sX3BpcGUiIHwgJEVHUkVQICcgKF9oZWFkX1tBLVphLXowLTlfXStfW2FkXWwqfFtBLVphLXowLTlfXStfW2FkXWwqX2luYW1lKSQnYAorKyAgdGVzdCAtbiAiJGZ1bmNfY3lnbWluZ19nbnVfaW1wbGliX3RtcCIKKyt9CisrCisrIyBmdW5jX2N5Z21pbmdfbXNfaW1wbGliX3AgQVJHCisrIyBUaGlzIHByZWRpY2F0ZSByZXR1cm5zIHdpdGggemVybyBzdGF0dXMgKFRSVUUpIGlmCisrIyBBUkcgaXMgYW4gTVMtc3R5bGUgaW1wb3J0IGxpYnJhcnkuIFJldHVybnMKKysjIHdpdGggbm9uemVybyBzdGF0dXMgKEZBTFNFKSBvdGhlcndpc2UuCisrZnVuY19jeWdtaW5nX21zX2ltcGxpYl9wICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgZnVuY190b190b29sX2ZpbGUgIiQxIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKyAgZnVuY19jeWdtaW5nX21zX2ltcGxpYl90bXA9YCROTSAiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIgfCBldmFsICIkZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRHUkVQICdfTlVMTF9JTVBPUlRfREVTQ1JJUFRPUidgCisrICB0ZXN0IC1uICIkZnVuY19jeWdtaW5nX21zX2ltcGxpYl90bXAiCisrfQorKworKyMgZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrIEFSRworKyMgUGxhdGZvcm0tc3BlY2lmaWMgZnVuY3Rpb24gdG8gZXh0cmFjdCB0aGUKKysjIG5hbWUgb2YgdGhlIERMTCBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZAorKyMgaW1wb3J0IGxpYnJhcnkgQVJHLgorKyMKKysjIFRoaXMgZmFsbGJhY2sgaW1wbGVtZW50YXRpb24gaXMgZm9yIHVzZSB3aGVuICRETExUT09MCisrIyBkb2VzIG5vdCBzdXBwb3J0IHRoZSAtLWlkZW50aWZ5LXN0cmljdCBvcHRpb24uCisrIyBJbnZva2VkIGJ5IGV2YWwnaW5nIHRoZSBsaWJ0b29sIHZhcmlhYmxlCisrIyAgICAkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKKysjIFJlc3VsdCBpcyBhdmFpbGFibGUgaW4gdGhlIHZhcmlhYmxlCisrIyAgICAkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQKKytmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sgKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBpZiBmdW5jX2N5Z21pbmdfZ251X2ltcGxpYl9wICIkMSIgOyB0aGVuCisrICAgICMgYmludXRpbHMgaW1wb3J0IGxpYnJhcnkKKysgICAgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQ9YGZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFja19jb3JlICcuaWRhdGEkNycgIiQxImAKKysgIGVsaWYgZnVuY19jeWdtaW5nX21zX2ltcGxpYl9wICIkMSIgOyB0aGVuCisrICAgICMgbXMtZ2VuZXJhdGVkIGltcG9ydCBsaWJyYXJ5CisrICAgIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfcmVzdWx0PWBmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2tfY29yZSAnLmlkYXRhJDYnICIkMSJgCisrICBlbHNlCisrICAgICMgdW5rbm93bgorKyAgICBzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdD0iIgorKyAgZmkKKyt9CisgCisgCisgIyBmdW5jX2V4dHJhY3RfYW5fYXJjaGl2ZSBkaXIgb2xkbGliCitAQCAtMjkxNyw3ICszODAxLDcgQEAgZnVuY19leHRyYWN0X2FyY2hpdmVzICgpCisgCSAgICBkYXJ3aW5fZmlsZT0KKyAJICAgIGRhcndpbl9maWxlcz0KKyAJICAgIGZvciBkYXJ3aW5fZmlsZSBpbiAkZGFyd2luX2ZpbGVsaXN0OyBkbworLQkgICAgICBkYXJ3aW5fZmlsZXM9YGZpbmQgdW5mYXQtJCQgLW5hbWUgJGRhcndpbl9maWxlIC1wcmludCB8ICROTDJTUGAKKysJICAgICAgZGFyd2luX2ZpbGVzPWBmaW5kIHVuZmF0LSQkIC1uYW1lICRkYXJ3aW5fZmlsZSAtcHJpbnQgfCBzb3J0IHwgJE5MMlNQYAorIAkgICAgICAkTElQTyAtY3JlYXRlIC1vdXRwdXQgIiRkYXJ3aW5fZmlsZSIgJGRhcndpbl9maWxlcworIAkgICAgZG9uZSAjICRkYXJ3aW5fZmlsZWxpc3QKKyAJICAgICRSTSAtcmYgdW5mYXQtJCQKK0BAIC0yOTMyLDcgKzM4MTYsNyBAQCBmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgKCkKKyAgICAgICAgIGZ1bmNfZXh0cmFjdF9hbl9hcmNoaXZlICIkbXlfeGRpciIgIiRteV94YWJzIgorIAk7OworICAgICAgIGVzYWMKKy0gICAgICBteV9vbGRvYmpzPSIkbXlfb2xkb2JqcyAiYGZpbmQgJG15X3hkaXIgLW5hbWUgXCouJG9iamV4dCAtcHJpbnQgLW8gLW5hbWUgXCoubG8gLXByaW50IHwgJE5MMlNQYAorKyAgICAgIG15X29sZG9ianM9IiRteV9vbGRvYmpzICJgZmluZCAkbXlfeGRpciAtbmFtZSBcKi4kb2JqZXh0IC1wcmludCAtbyAtbmFtZSBcKi5sbyAtcHJpbnQgfCBzb3J0IHwgJE5MMlNQYAorICAgICBkb25lCisgCisgICAgIGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQ9IiRteV9vbGRvYmpzIgorQEAgLTMwMTQsNyArMzg5OCwxMTAgQEAgZnVuY19mYWxsYmFja19lY2hvICgpCisgX0xURUNIT19FT0YnCisgfQorICAgICBFQ0hPPVwiJHFFQ0hPXCIKKy0gIGZpXAorKyAgZmkKKysKKysjIFZlcnkgYmFzaWMgb3B0aW9uIHBhcnNpbmcuIFRoZXNlIG9wdGlvbnMgYXJlIChhKSBzcGVjaWZpYyB0bworKyMgdGhlIGxpYnRvb2wgd3JhcHBlciwgKGIpIGFyZSBpZGVudGljYWwgYmV0d2VlbiB0aGUgd3JhcHBlcgorKyMgL3NjcmlwdC8gYW5kIHRoZSB3cmFwcGVyIC9leGVjdXRhYmxlLyB3aGljaCBpcyB1c2VkIG9ubHkgb24KKysjIHdpbmRvd3MgcGxhdGZvcm1zLCBhbmQgKGMpIGFsbCBiZWdpbiB3aXRoIHRoZSBzdHJpbmcgIi0tbHQtIgorKyMgKGFwcGxpY2F0aW9uIHByb2dyYW1zIGFyZSB1bmxpa2VseSB0byBoYXZlIG9wdGlvbnMgd2hpY2ggbWF0Y2gKKysjIHRoaXMgcGF0dGVybikuCisrIworKyMgVGhlcmUgYXJlIG9ubHkgdHdvIHN1cHBvcnRlZCBvcHRpb25zOiAtLWx0LWRlYnVnIGFuZAorKyMgLS1sdC1kdW1wLXNjcmlwdC4gVGhlcmUgaXMsIGRlbGliZXJhdGVseSwgbm8gLS1sdC1oZWxwLgorKyMKKysjIFRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGlzIHBhcnNpbmcgZnVuY3Rpb24gc2hvdWxkIGJlIHRoZQorKyMgc2NyaXB0J3MgJDAgdmFsdWUsIGZvbGxvd2VkIGJ5ICIkQCIuCisrbHRfb3B0aW9uX2RlYnVnPQorK2Z1bmNfcGFyc2VfbHRfb3B0aW9ucyAoKQorK3sKKysgIGx0X3NjcmlwdF9hcmcwPVwkMAorKyAgc2hpZnQKKysgIGZvciBsdF9vcHQKKysgIGRvCisrICAgIGNhc2UgXCJcJGx0X29wdFwiIGluCisrICAgIC0tbHQtZGVidWcpIGx0X29wdGlvbl9kZWJ1Zz0xIDs7CisrICAgIC0tbHQtZHVtcC1zY3JpcHQpCisrICAgICAgICBsdF9kdW1wX0Q9XGBcJEVDSE8gXCJYXCRsdF9zY3JpcHRfYXJnMFwiIHwgJFNFRCAtZSAncy9eWC8vJyAtZSAncyUvW14vXSokJSUnXGAKKysgICAgICAgIHRlc3QgXCJYXCRsdF9kdW1wX0RcIiA9IFwiWFwkbHRfc2NyaXB0X2FyZzBcIiAmJiBsdF9kdW1wX0Q9LgorKyAgICAgICAgbHRfZHVtcF9GPVxgXCRFQ0hPIFwiWFwkbHRfc2NyaXB0X2FyZzBcIiB8ICRTRUQgLWUgJ3MvXlgvLycgLWUgJ3MlXi4qLyUlJ1xgCisrICAgICAgICBjYXQgXCJcJGx0X2R1bXBfRC9cJGx0X2R1bXBfRlwiCisrICAgICAgICBleGl0IDAKKysgICAgICA7OworKyAgICAtLWx0LSopCisrICAgICAgICBcJEVDSE8gXCJVbnJlY29nbml6ZWQgLS1sdC0gb3B0aW9uOiAnXCRsdF9vcHQnXCIgMT4mMgorKyAgICAgICAgZXhpdCAxCisrICAgICAgOzsKKysgICAgZXNhYworKyAgZG9uZQorKworKyAgIyBQcmludCB0aGUgZGVidWcgYmFubmVyIGltbWVkaWF0ZWx5OgorKyAgaWYgdGVzdCAtbiBcIlwkbHRfb3B0aW9uX2RlYnVnXCI7IHRoZW4KKysgICAgZWNobyBcIiR7b3V0cHV0bmFtZX06JHtvdXRwdXR9Olwke0xJTkVOT306IGxpYnRvb2wgd3JhcHBlciAoR05VICRQQUNLQUdFJFRJTUVTVEFNUCkgJFZFUlNJT05cIiAxPiYyCisrICBmaQorK30KKysKKysjIFVzZWQgd2hlbiAtLWx0LWRlYnVnLiBQcmludHMgaXRzIGFyZ3VtZW50cyB0byBzdGRvdXQKKysjIChyZWRpcmVjdGlvbiBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGNhbGxlcikKKytmdW5jX2x0X2R1bXBfYXJncyAoKQorK3sKKysgIGx0X2R1bXBfYXJnc19OPTE7CisrICBmb3IgbHRfYXJnCisrICBkbworKyAgICBcJEVDSE8gXCIke291dHB1dG5hbWV9OiR7b3V0cHV0fTpcJHtMSU5FTk99OiBuZXdhcmd2W1wkbHRfZHVtcF9hcmdzX05dOiBcJGx0X2FyZ1wiCisrICAgIGx0X2R1bXBfYXJnc19OPVxgZXhwciBcJGx0X2R1bXBfYXJnc19OICsgMVxgCisrICBkb25lCisrfQorKworKyMgQ29yZSBmdW5jdGlvbiBmb3IgbGF1bmNoaW5nIHRoZSB0YXJnZXQgYXBwbGljYXRpb24KKytmdW5jX2V4ZWNfcHJvZ3JhbV9jb3JlICgpCisreworKyIKKysgIGNhc2UgJGhvc3QgaW4KKysgICMgQmFja3NsYXNoZXMgc2VwYXJhdGUgZGlyZWN0b3JpZXMgb24gcGxhaW4gd2luZG93cworKyAgKi0qLW1pbmd3IHwgKi0qLW9zMiogfCAqLWNlZ2NjKikKKysgICAgJEVDSE8gIlwKKysgICAgICBpZiB0ZXN0IC1uIFwiXCRsdF9vcHRpb25fZGVidWdcIjsgdGhlbgorKyAgICAgICAgXCRFQ0hPIFwiJHtvdXRwdXRuYW1lfToke291dHB1dH06XCR7TElORU5PfTogbmV3YXJndlswXTogXCRwcm9nZGlyXFxcXFwkcHJvZ3JhbVwiIDE+JjIKKysgICAgICAgIGZ1bmNfbHRfZHVtcF9hcmdzIFwkezErXCJcJEBcIn0gMT4mMgorKyAgICAgIGZpCisrICAgICAgZXhlYyBcIlwkcHJvZ2RpclxcXFxcJHByb2dyYW1cIiBcJHsxK1wiXCRAXCJ9CisrIgorKyAgICA7OworKworKyAgKikKKysgICAgJEVDSE8gIlwKKysgICAgICBpZiB0ZXN0IC1uIFwiXCRsdF9vcHRpb25fZGVidWdcIjsgdGhlbgorKyAgICAgICAgXCRFQ0hPIFwiJHtvdXRwdXRuYW1lfToke291dHB1dH06XCR7TElORU5PfTogbmV3YXJndlswXTogXCRwcm9nZGlyL1wkcHJvZ3JhbVwiIDE+JjIKKysgICAgICAgIGZ1bmNfbHRfZHVtcF9hcmdzIFwkezErXCJcJEBcIn0gMT4mMgorKyAgICAgIGZpCisrICAgICAgZXhlYyBcIlwkcHJvZ2Rpci9cJHByb2dyYW1cIiBcJHsxK1wiXCRAXCJ9CisrIgorKyAgICA7OworKyAgZXNhYworKyAgJEVDSE8gIlwKKysgICAgICBcJEVDSE8gXCJcJDA6IGNhbm5vdCBleGVjIFwkcHJvZ3JhbSBcJCpcIiAxPiYyCisrICAgICAgZXhpdCAxCisrfQorKworKyMgQSBmdW5jdGlvbiB0byBlbmNhcHN1bGF0ZSBsYXVuY2hpbmcgdGhlIHRhcmdldCBhcHBsaWNhdGlvbgorKyMgU3RyaXBzIG9wdGlvbnMgaW4gdGhlIC0tbHQtKiBuYW1lc3BhY2UgZnJvbSBcJEAgYW5kCisrIyBsYXVuY2hlcyB0YXJnZXQgYXBwbGljYXRpb24gd2l0aCB0aGUgcmVtYWluaW5nIGFyZ3VtZW50cy4KKytmdW5jX2V4ZWNfcHJvZ3JhbSAoKQorK3sKKysgIGZvciBsdF93cl9hcmcKKysgIGRvCisrICAgIGNhc2UgXCRsdF93cl9hcmcgaW4KKysgICAgLS1sdC0qKSA7OworKyAgICAqKSBzZXQgeCBcIlwkQFwiIFwiXCRsdF93cl9hcmdcIjsgc2hpZnQ7OworKyAgICBlc2FjCisrICAgIHNoaWZ0CisrICBkb25lCisrICBmdW5jX2V4ZWNfcHJvZ3JhbV9jb3JlIFwkezErXCJcJEBcIn0KKyt9CisrCisrICAjIFBhcnNlIG9wdGlvbnMKKysgIGZ1bmNfcGFyc2VfbHRfb3B0aW9ucyBcIlwkMFwiIFwkezErXCJcJEBcIn0KKyAKKyAgICMgRmluZCB0aGUgZGlyZWN0b3J5IHRoYXQgdGhpcyBzY3JpcHQgbGl2ZXMgaW4uCisgICB0aGlzZGlyPVxgXCRFQ0hPIFwiXCRmaWxlXCIgfCAkU0VEICdzJS9bXi9dKiQlJSdcYAorQEAgLTMwNzgsNyArNDA2NSw3IEBAIF9MVEVDSE9fRU9GJworIAorICAgICAjIHJlbGluayBleGVjdXRhYmxlIGlmIG5lY2Vzc2FyeQorICAgICBpZiB0ZXN0IC1uIFwiXCRyZWxpbmtfY29tbWFuZFwiOyB0aGVuCistICAgICAgaWYgcmVsaW5rX2NvbW1hbmRfb3V0cHV0PVxgZXZhbCBcIlwkcmVsaW5rX2NvbW1hbmRcIiAyPiYxXGA7IHRoZW4gOgorKyAgICAgIGlmIHJlbGlua19jb21tYW5kX291dHB1dD1cYGV2YWwgXCRyZWxpbmtfY29tbWFuZCAyPiYxXGA7IHRoZW4gOgorICAgICAgIGVsc2UKKyAJJEVDSE8gXCJcJHJlbGlua19jb21tYW5kX291dHB1dFwiID4mMgorIAkkUk0gXCJcJHByb2dkaXIvXCRmaWxlXCIKK0BAIC0zMTAyLDYgKzQwODksMTggQEAgX0xURUNIT19FT0YnCisgCisgICBpZiB0ZXN0IC1mIFwiXCRwcm9nZGlyL1wkcHJvZ3JhbVwiOyB0aGVuIgorIAorKwkjIGZpeHVwIHRoZSBkbGwgc2VhcmNocGF0aCBpZiB3ZSBuZWVkIHRvLgorKwkjCisrCSMgRml4IHRoZSBETEwgc2VhcmNocGF0aCBpZiB3ZSBuZWVkIHRvLiAgRG8gdGhpcyBiZWZvcmUgcHJlcGVuZGluZworKwkjIHRvIHNobGlicGF0aCwgYmVjYXVzZSBvbiBXaW5kb3dzLCBib3RoIGFyZSBQQVRIIGFuZCB1bmluc3RhbGxlZAorKwkjIGxpYnJhcmllcyBtdXN0IGNvbWUgZmlyc3QuCisrCWlmIHRlc3QgLW4gIiRkbGxzZWFyY2hwYXRoIjsgdGhlbgorKwkgICRFQ0hPICJcCisrICAgICMgQWRkIHRoZSBkbGwgc2VhcmNoIHBhdGggY29tcG9uZW50cyB0byB0aGUgZXhlY3V0YWJsZSBQQVRICisrICAgIFBBVEg9JGRsbHNlYXJjaHBhdGg6XCRQQVRICisrIgorKwlmaQorKworIAkjIEV4cG9ydCBvdXIgc2hsaWJwYXRoX3ZhciBpZiB3ZSBoYXZlIG9uZS4KKyAJaWYgdGVzdCAiJHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aCIgPSB5ZXMgJiYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiICYmIHRlc3QgLW4gIiR0ZW1wX3JwYXRoIjsgdGhlbgorIAkgICRFQ0hPICJcCitAQCAtMzExNiwzNSArNDExNSwxMCBAQCBfTFRFQ0hPX0VPRicKKyAiCisgCWZpCisgCistCSMgZml4dXAgdGhlIGRsbCBzZWFyY2hwYXRoIGlmIHdlIG5lZWQgdG8uCistCWlmIHRlc3QgLW4gIiRkbGxzZWFyY2hwYXRoIjsgdGhlbgorLQkgICRFQ0hPICJcCistICAgICMgQWRkIHRoZSBkbGwgc2VhcmNoIHBhdGggY29tcG9uZW50cyB0byB0aGUgZXhlY3V0YWJsZSBQQVRICistICAgIFBBVEg9JGRsbHNlYXJjaHBhdGg6XCRQQVRICistIgorLQlmaQorLQorIAkkRUNITyAiXAorICAgICBpZiB0ZXN0IFwiXCRsaWJ0b29sX2V4ZWN1dGVfbWFnaWNcIiAhPSBcIiRtYWdpY1wiOyB0aGVuCisgICAgICAgIyBSdW4gdGhlIGFjdHVhbCBwcm9ncmFtIHdpdGggb3VyIGFyZ3VtZW50cy4KKy0iCistCWNhc2UgJGhvc3QgaW4KKy0JIyBCYWNrc2xhc2hlcyBzZXBhcmF0ZSBkaXJlY3RvcmllcyBvbiBwbGFpbiB3aW5kb3dzCistCSotKi1taW5ndyB8ICotKi1vczIqIHwgKi1jZWdjYyopCistCSAgJEVDSE8gIlwKKy0gICAgICBleGVjIFwiXCRwcm9nZGlyXFxcXFwkcHJvZ3JhbVwiIFwkezErXCJcJEBcIn0KKy0iCistCSAgOzsKKy0KKy0JKikKKy0JICAkRUNITyAiXAorLSAgICAgIGV4ZWMgXCJcJHByb2dkaXIvXCRwcm9ncmFtXCIgXCR7MStcIlwkQFwifQorLSIKKy0JICA7OworLQllc2FjCistCSRFQ0hPICJcCistICAgICAgXCRFQ0hPIFwiXCQwOiBjYW5ub3QgZXhlYyBcJHByb2dyYW0gXCQqXCIgMT4mMgorLSAgICAgIGV4aXQgMQorKyAgICAgIGZ1bmNfZXhlY19wcm9ncmFtIFwkezErXCJcJEBcIn0KKyAgICAgZmkKKyAgIGVsc2UKKyAgICAgIyBUaGUgcHJvZ3JhbSBkb2Vzbid0IGV4aXN0LgorQEAgLTMxNTgsMTY2ICs0MTMyLDYgQEAgZmlcCisgfQorIAorIAorLSMgZnVuY190b19ob3N0X3BhdGggYXJnCistIworLSMgQ29udmVydCBwYXRocyB0byBob3N0IGZvcm1hdCB3aGVuIHVzZWQgd2l0aCBidWlsZCB0b29scy4KKy0jIEludGVuZGVkIGZvciB1c2Ugd2l0aCAibmF0aXZlIiBtaW5ndyAod2hlcmUgbGlidG9vbCBpdHNlbGYKKy0jIGlzIHJ1bm5pbmcgdW5kZXIgdGhlIG1zeXMgc2hlbGwpLCBvciBpbiB0aGUgZm9sbG93aW5nIGNyb3NzLQorLSMgYnVpbGQgZW52aXJvbm1lbnRzOgorLSMgICAgJGJ1aWxkICAgICAgICAgICRob3N0CistIyAgICBtaW5ndyAobXN5cykgICAgbWluZ3cgIFtlLmcuIG5hdGl2ZV0KKy0jICAgIGN5Z3dpbiAgICAgICAgICBtaW5ndworLSMgICAgKm5peCArIHdpbmUgICAgIG1pbmd3CistIyB3aGVyZSB3aW5lIGlzIGVxdWlwcGVkIHdpdGggdGhlIGB3aW5lcGF0aCcgZXhlY3V0YWJsZS4KKy0jIEluIHRoZSBuYXRpdmUgbWluZ3cgY2FzZSwgdGhlIChtc3lzKSBzaGVsbCBhdXRvbWF0aWNhbGx5CistIyBjb252ZXJ0cyBwYXRocyBmb3IgYW55IG5vbi1tc3lzIGFwcGxpY2F0aW9ucyBpdCBsYXVuY2hlcywKKy0jIGJ1dCB0aGF0IGZhY2lsaXR5IGlzbid0IGF2YWlsYWJsZSBmcm9tIGluc2lkZSB0aGUgY3dyYXBwZXIuCistIyBTaW1pbGFyIGFjY29tbW9kYXRpb25zIGFyZSBuZWNlc3NhcnkgZm9yICRob3N0IG1pbmd3IGFuZAorLSMgJGJ1aWxkIGN5Z3dpbi4gIENhbGxpbmcgdGhpcyBmdW5jdGlvbiBkb2VzIG5vIGhhcm0gZm9yIG90aGVyCistIyAkaG9zdC8kYnVpbGQgY29tYmluYXRpb25zIG5vdCBsaXN0ZWQgYWJvdmUuCistIworLSMgQVJHIGlzIHRoZSBwYXRoIChvbiAkYnVpbGQpIHRoYXQgc2hvdWxkIGJlIGNvbnZlcnRlZCB0bworLSMgdGhlIHByb3BlciByZXByZXNlbnRhdGlvbiBmb3IgJGhvc3QuIFRoZSByZXN1bHQgaXMgc3RvcmVkCistIyBpbiAkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0LgorLWZ1bmNfdG9faG9zdF9wYXRoICgpCisteworLSAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKKy0gIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorLSAgICBjYXNlICRob3N0IGluCistICAgICAgKm1pbmd3KiApCistICAgICAgICBsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5PSdzfFxcXFwqfFxcfGc7c3wvfFxcfGc7c3xcXHxcXFxcfGcnCistICAgICAgICBjYXNlICRidWlsZCBpbgorLSAgICAgICAgICAqbWluZ3cqICkgIyBhY3R1YWxseSwgbXN5cworLSAgICAgICAgICAgICMgYXdrd2FyZDogY21kIGFwcGVuZHMgc3BhY2VzIHRvIHJlc3VsdAorLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD1gKCBjbWQgLy9jIGVjaG8gIiQxIiApIDI+L2Rldi9udWxsIHwKKy0gICAgICAgICAgICAgICRTRUQgLWUgJ3MvWyBdKiQvLycgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKKy0gICAgICAgICAgICA7OworLSAgICAgICAgICAqY3lnd2luKiApCistICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PWBjeWdwYXRoIC13ICIkMSIgfAorLQkgICAgICAkU0VEIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCistICAgICAgICAgICAgOzsKKy0gICAgICAgICAgKiApCistICAgICAgICAgICAgIyBVbmZvcnR1bmF0ZWx5LCB3aW5lcGF0aCBkb2VzIG5vdCBleGl0IHdpdGggYSBub24temVybworLSAgICAgICAgICAgICMgZXJyb3IgY29kZSwgc28gd2UgYXJlIGZvcmNlZCB0byBjaGVjayB0aGUgY29udGVudHMgb2YKKy0gICAgICAgICAgICAjIHN0ZG91dC4gT24gdGhlIG90aGVyIGhhbmQsIGlmIHRoZSBjb21tYW5kIGlzIG5vdAorLSAgICAgICAgICAgICMgZm91bmQsIHRoZSBzaGVsbCB3aWxsIHNldCBhbiBleGl0IGNvZGUgb2YgMTI3IGFuZCBwcmludAorLSAgICAgICAgICAgICMgKmFuIGVycm9yIG1lc3NhZ2UqIHRvIHN0ZG91dC4gU28gd2UgbXVzdCBjaGVjayBmb3IgYm90aAorLSAgICAgICAgICAgICMgZXJyb3IgY29kZSBvZiB6ZXJvIEFORCBub24tZW1wdHkgc3Rkb3V0LCB3aGljaCBleHBsYWlucworLSAgICAgICAgICAgICMgdGhlIG9kZCBjb25zdHJ1Y3Rpb246CistICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT1gd2luZXBhdGggLXcgIiQxIiAyPi9kZXYvbnVsbGAKKy0gICAgICAgICAgICBpZiB0ZXN0ICIkPyIgLWVxIDAgJiYgdGVzdCAtbiAiJHtmdW5jX3RvX2hvc3RfcGF0aF90bXAxfSI7IHRoZW4KKy0gICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD1gJEVDSE8gIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiB8CistICAgICAgICAgICAgICAgICRTRUQgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKKy0gICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgICAjIEFsbG93IHdhcm5pbmcgYmVsb3cuCistICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9CistICAgICAgICAgICAgZmkKKy0gICAgICAgICAgICA7OworLSAgICAgICAgZXNhYworLSAgICAgICAgaWYgdGVzdCAteiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIgOyB0aGVuCistICAgICAgICAgIGZ1bmNfZXJyb3IgIkNvdWxkIG5vdCBkZXRlcm1pbmUgaG9zdCBwYXRoIGNvcnJlc3BvbmRpbmcgdG8iCistICAgICAgICAgIGZ1bmNfZXJyb3IgIiAgXGAkMSciCistICAgICAgICAgIGZ1bmNfZXJyb3IgIkNvbnRpbnVpbmcsIGJ1dCB1bmluc3RhbGxlZCBleGVjdXRhYmxlcyBtYXkgbm90IHdvcmsuIgorLSAgICAgICAgICAjIEZhbGxiYWNrOgorLSAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgorLSAgICAgICAgZmkKKy0gICAgICAgIDs7CistICAgIGVzYWMKKy0gIGZpCistfQorLSMgZW5kOiBmdW5jX3RvX2hvc3RfcGF0aAorLQorLSMgZnVuY190b19ob3N0X3BhdGhsaXN0IGFyZworLSMKKy0jIENvbnZlcnQgcGF0aGxpc3RzIHRvIGhvc3QgZm9ybWF0IHdoZW4gdXNlZCB3aXRoIGJ1aWxkIHRvb2xzLgorLSMgU2VlIGZ1bmNfdG9faG9zdF9wYXRoKCksIGFib3ZlLiBUaGlzIGZ1bmN0aW9uIHN1cHBvcnRzIHRoZQorLSMgZm9sbG93aW5nICRidWlsZC8kaG9zdCBjb21iaW5hdGlvbnMgKGJ1dCBkb2VzIG5vIGhhcm0gZm9yCistIyBjb21iaW5hdGlvbnMgbm90IGxpc3RlZCBoZXJlKToKKy0jICAgICRidWlsZCAgICAgICAgICAkaG9zdAorLSMgICAgbWluZ3cgKG1zeXMpICAgIG1pbmd3ICBbZS5nLiBuYXRpdmVdCistIyAgICBjeWd3aW4gICAgICAgICAgbWluZ3cKKy0jICAgICpuaXggKyB3aW5lICAgICBtaW5ndworLSMKKy0jIFBhdGggc2VwYXJhdG9ycyBhcmUgYWxzbyBjb252ZXJ0ZWQgZnJvbSAkYnVpbGQgZm9ybWF0IHRvCistIyAkaG9zdCBmb3JtYXQuIElmIEFSRyBiZWdpbnMgb3IgZW5kcyB3aXRoIGEgcGF0aCBzZXBhcmF0b3IKKy0jIGNoYXJhY3RlciwgaXQgaXMgcHJlc2VydmVkIChidXQgY29udmVydGVkIHRvICRob3N0IGZvcm1hdCkKKy0jIG9uIG91dHB1dC4KKy0jCistIyBBUkcgaXMgYSBwYXRobGlzdCAob24gJGJ1aWxkKSB0aGF0IHNob3VsZCBiZSBjb252ZXJ0ZWQgdG8KKy0jIHRoZSBwcm9wZXIgcmVwcmVzZW50YXRpb24gb24gJGhvc3QuIFRoZSByZXN1bHQgaXMgc3RvcmVkCistIyBpbiAkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdC4KKy1mdW5jX3RvX2hvc3RfcGF0aGxpc3QgKCkKKy17CistICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PSIkMSIKKy0gIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorLSAgICBjYXNlICRob3N0IGluCistICAgICAgKm1pbmd3KiApCistICAgICAgICBsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5PSdzfFxcXFwqfFxcfGc7c3wvfFxcfGc7c3xcXHxcXFxcfGcnCistICAgICAgICAjIFJlbW92ZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBwYXRoIHNlcGFyYXRvciBjaGFyYWN0ZXJzIGZyb20KKy0gICAgICAgICMgQVJHLiBtc3lzIGJlaGF2aW9yIGlzIGluY29uc2lzdGVudCBoZXJlLCBjeWdwYXRoIHR1cm5zIHRoZW0KKy0gICAgICAgICMgaW50byAnLjsnIGFuZCAnOy4nLCBhbmQgd2luZXBhdGggaWdub3JlcyB0aGVtIGNvbXBsZXRlbHkuCistCWZ1bmNfc3RyaXBuYW1lIDogOiAiJDEiCistICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CistICAgICAgICBjYXNlICRidWlsZCBpbgorLSAgICAgICAgICAqbWluZ3cqICkgIyBBY3R1YWxseSwgbXN5cy4KKy0gICAgICAgICAgICAjIEF3a3dhcmQ6IGNtZCBhcHBlbmRzIHNwYWNlcyB0byByZXN1bHQuCistICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD1gCistCSAgICAgICggY21kIC8vYyBlY2hvICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDEiICkgMj4vZGV2L251bGwgfAorLQkgICAgICAkU0VEIC1lICdzL1sgXSokLy8nIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCistICAgICAgICAgICAgOzsKKy0gICAgICAgICAgKmN5Z3dpbiogKQorLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9YGN5Z3BhdGggLXcgLXAgIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMSIgfAorLSAgICAgICAgICAgICAgJFNFRCAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAorLSAgICAgICAgICAgIDs7CistICAgICAgICAgICogKQorLSAgICAgICAgICAgICMgdW5mb3J0dW5hdGVseSwgd2luZXBhdGggZG9lc24ndCBjb252ZXJ0IHBhdGhsaXN0cworLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9IiIKKy0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3Rfb2xkSUZTPSRJRlMKKy0gICAgICAgICAgICBJRlM9OgorLSAgICAgICAgICAgIGZvciBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfZiBpbiAkZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDEgOyBkbworLSAgICAgICAgICAgICAgSUZTPSRmdW5jX3RvX2hvc3RfcGF0aGxpc3Rfb2xkSUZTCistICAgICAgICAgICAgICBpZiB0ZXN0IC1uICIkZnVuY190b19ob3N0X3BhdGhsaXN0X2YiIDsgdGhlbgorLSAgICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aCAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9mIgorLSAgICAgICAgICAgICAgICBpZiB0ZXN0IC1uICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IiA7IHRoZW4KKy0gICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdCIgOyB0aGVuCistICAgICAgICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PSIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgorLSAgICAgICAgICAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICAgICAgICAgIGZ1bmNfYXBwZW5kIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQgIjskZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgorLSAgICAgICAgICAgICAgICAgIGZpCistICAgICAgICAgICAgICAgIGZpCistICAgICAgICAgICAgICBmaQorLSAgICAgICAgICAgIGRvbmUKKy0gICAgICAgICAgICBJRlM9JGZ1bmNfdG9faG9zdF9wYXRobGlzdF9vbGRJRlMKKy0gICAgICAgICAgICA7OworLSAgICAgICAgZXNhYworLSAgICAgICAgaWYgdGVzdCAteiAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQiOyB0aGVuCistICAgICAgICAgIGZ1bmNfZXJyb3IgIkNvdWxkIG5vdCBkZXRlcm1pbmUgdGhlIGhvc3QgcGF0aChzKSBjb3JyZXNwb25kaW5nIHRvIgorLSAgICAgICAgICBmdW5jX2Vycm9yICIgIFxgJDEnIgorLSAgICAgICAgICBmdW5jX2Vycm9yICJDb250aW51aW5nLCBidXQgdW5pbnN0YWxsZWQgZXhlY3V0YWJsZXMgbWF5IG5vdCB3b3JrLiIKKy0gICAgICAgICAgIyBGYWxsYmFjay4gVGhpcyBtYXkgYnJlYWsgaWYgJDEgY29udGFpbnMgRE9TLXN0eWxlIGRyaXZlCistICAgICAgICAgICMgc3BlY2lmaWNhdGlvbnMuIFRoZSBmaXggaXMgbm90IHRvIGNvbXBsaWNhdGUgdGhlIGV4cHJlc3Npb24KKy0gICAgICAgICAgIyBiZWxvdywgYnV0IGZvciB0aGUgdXNlciB0byBwcm92aWRlIGEgd29ya2luZyB3aW5lIGluc3RhbGxhdGlvbgorLSAgICAgICAgICAjIHdpdGggd2luZXBhdGggc28gdGhhdCBwYXRoIHRyYW5zbGF0aW9uIGluIHRoZSBjcm9zcy10by1taW5ndworLSAgICAgICAgICAjIGNhc2Ugd29ya3MgcHJvcGVybHkuCistICAgICAgICAgIGx0X3JlcGxhY2VfcGF0aHNlcF9uaXhfdG9fZG9zPSJzfDp8O3xnIgorLSAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PWBlY2hvICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDEiIHxcCistICAgICAgICAgICAgJFNFRCAtZSAiJGx0X3JlcGxhY2VfcGF0aHNlcF9uaXhfdG9fZG9zImAKKy0gICAgICAgIGZpCistICAgICAgICAjIE5vdywgYWRkIHRoZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBwYXRoIHNlcGFyYXRvcnMgYmFjaworLSAgICAgICAgY2FzZSAiJDEiIGluCistICAgICAgICAgIDoqICkgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD0iOyRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0IgorLSAgICAgICAgICAgIDs7CistICAgICAgICBlc2FjCistICAgICAgICBjYXNlICIkMSIgaW4KKy0gICAgICAgICAgKjogKSBmdW5jX2FwcGVuZCBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0ICI7IgorLSAgICAgICAgICAgIDs7CistICAgICAgICBlc2FjCistICAgICAgICA7OworLSAgICBlc2FjCistICBmaQorLX0KKy0jIGVuZDogZnVuY190b19ob3N0X3BhdGhsaXN0CistCisgIyBmdW5jX2VtaXRfY3dyYXBwZXJleGVfc3JjCisgIyBlbWl0IHRoZSBzb3VyY2UgY29kZSBmb3IgYSB3cmFwcGVyIGV4ZWN1dGFibGUgb24gc3Rkb3V0CisgIyBNdXN0IE9OTFkgYmUgY2FsbGVkIGZyb20gd2l0aGluIGZ1bmNfbW9kZV9saW5rIGJlY2F1c2UKK0BAIC0zMzM0LDEwICs0MTQ4LDYgQEAgZnVuY19lbWl0X2N3cmFwcGVyZXhlX3NyYyAoKQorIAorICAgIFRoaXMgd3JhcHBlciBleGVjdXRhYmxlIHNob3VsZCBuZXZlciBiZSBtb3ZlZCBvdXQgb2YgdGhlIGJ1aWxkIGRpcmVjdG9yeS4KKyAgICBJZiBpdCBpcywgaXQgd2lsbCBub3Qgb3BlcmF0ZSBjb3JyZWN0bHkuCistCistICAgQ3VycmVudGx5LCBpdCBzaW1wbHkgZXhlY3MgdGhlIHdyYXBwZXIgKnNjcmlwdCogIiRTSEVMTCAkb3V0cHV0IiwKKy0gICBidXQgY291bGQgZXZlbnR1YWxseSBhYnNvcmIgYWxsIG9mIHRoZSBzY3JpcHRzIGZ1bmN0aW9uYWxpdHkgYW5kCistICAgZXhlYyAkb2JqZGlyLyRvdXRwdXRuYW1lIGRpcmVjdGx5LgorICovCisgRU9GCisgCSAgICBjYXQgPDwiRU9GIgorQEAgLTM0NjIsMjIgKzQyNzIsMTMgQEAgaW50IHNldGVudiAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGludCk7CisgICBpZiAoc3RhbGUpIHsgZnJlZSAoKHZvaWQgKikgc3RhbGUpOyBzdGFsZSA9IDA7IH0gXAorIH0gd2hpbGUgKDApCisgCistI3VuZGVmIExUV1JBUFBFUl9ERUJVR1BSSU5URgorLSNpZiBkZWZpbmVkIExUX0RFQlVHV1JBUFBFUgorLSMgZGVmaW5lIExUV1JBUFBFUl9ERUJVR1BSSU5URihhcmdzKSBsdHdyYXBwZXJfZGVidWdwcmludGYgYXJncworLXN0YXRpYyB2b2lkCistbHR3cmFwcGVyX2RlYnVncHJpbnRmIChjb25zdCBjaGFyICpmbXQsIC4uLikKKy17CistICAgIHZhX2xpc3QgYXJnczsKKy0gICAgdmFfc3RhcnQgKGFyZ3MsIGZtdCk7CistICAgICh2b2lkKSB2ZnByaW50ZiAoc3RkZXJyLCBmbXQsIGFyZ3MpOworLSAgICB2YV9lbmQgKGFyZ3MpOworLX0KKysjaWYgZGVmaW5lZChMVF9ERUJVR1dSQVBQRVIpCisrc3RhdGljIGludCBsdF9kZWJ1ZyA9IDE7CisgI2Vsc2UKKy0jIGRlZmluZSBMVFdSQVBQRVJfREVCVUdQUklOVEYoYXJncykKKytzdGF0aWMgaW50IGx0X2RlYnVnID0gMDsKKyAjZW5kaWYKKyAKKy1jb25zdCBjaGFyICpwcm9ncmFtX25hbWUgPSBOVUxMOworK2NvbnN0IGNoYXIgKnByb2dyYW1fbmFtZSA9ICJsaWJ0b29sLXdyYXBwZXIiOyAvKiBpbiBjYXNlIHhzdHJkdXAgZmFpbHMgKi8KKyAKKyB2b2lkICp4bWFsbG9jIChzaXplX3QgbnVtKTsKKyBjaGFyICp4c3RyZHVwIChjb25zdCBjaGFyICpzdHJpbmcpOworQEAgLTM0ODcsNyArNDI4OCwxMCBAQCBjaGFyICpjaGFzZV9zeW1saW5rcyAoY29uc3QgY2hhciAqcGF0aHNwZWMpOworIGludCBtYWtlX2V4ZWN1dGFibGUgKGNvbnN0IGNoYXIgKnBhdGgpOworIGludCBjaGVja19leGVjdXRhYmxlIChjb25zdCBjaGFyICpwYXRoKTsKKyBjaGFyICpzdHJlbmR6YXAgKGNoYXIgKnN0ciwgY29uc3QgY2hhciAqcGF0KTsKKy12b2lkIGx0X2ZhdGFsIChjb25zdCBjaGFyICptZXNzYWdlLCAuLi4pOworK3ZvaWQgbHRfZGVidWdwcmludGYgKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyICpmbXQsIC4uLik7Cisrdm9pZCBsdF9mYXRhbCAoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UsIC4uLik7Cisrc3RhdGljIGNvbnN0IGNoYXIgKm5vbm51bGwgKGNvbnN0IGNoYXIgKnMpOworK3N0YXRpYyBjb25zdCBjaGFyICpub25lbXB0eSAoY29uc3QgY2hhciAqcyk7Cisgdm9pZCBsdF9zZXRlbnYgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKTsKKyBjaGFyICpsdF9leHRlbmRfc3RyIChjb25zdCBjaGFyICpvcmlnX3ZhbHVlLCBjb25zdCBjaGFyICphZGQsIGludCB0b19lbmQpOworIHZvaWQgbHRfdXBkYXRlX2V4ZV9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSk7CitAQCAtMzQ5NywxNCArNDMwMSwxNCBAQCB2b2lkIGx0X2R1bXBfc2NyaXB0IChGSUxFICpmKTsKKyBFT0YKKyAKKyAJICAgIGNhdCA8PEVPRgorLWNvbnN0IGNoYXIgKiBNQUdJQ19FWEUgPSAiJG1hZ2ljX2V4ZSI7Cisrdm9sYXRpbGUgY29uc3QgY2hhciAqIE1BR0lDX0VYRSA9ICIkbWFnaWNfZXhlIjsKKyBjb25zdCBjaGFyICogTElCX1BBVEhfVkFSTkFNRSA9ICIkc2hsaWJwYXRoX3ZhciI7CisgRU9GCisgCisgCSAgICBpZiB0ZXN0ICIkc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoIiA9IHllcyAmJiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciIgJiYgdGVzdCAtbiAiJHRlbXBfcnBhdGgiOyB0aGVuCistICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3QgIiR0ZW1wX3JwYXRoIgorKyAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGggIiR0ZW1wX3JwYXRoIgorIAkgICAgICBjYXQgPDxFT0YKKy1jb25zdCBjaGFyICogTElCX1BBVEhfVkFMVUUgICA9ICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdCI7CisrY29uc3QgY2hhciAqIExJQl9QQVRIX1ZBTFVFICAgPSAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCI7CisgRU9GCisgCSAgICBlbHNlCisgCSAgICAgIGNhdCA8PCJFT0YiCitAQCAtMzUxMywxMCArNDMxNywxMCBAQCBFT0YKKyAJICAgIGZpCisgCisgCSAgICBpZiB0ZXN0IC1uICIkZGxsc2VhcmNocGF0aCI7IHRoZW4KKy0gICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdCAiJGRsbHNlYXJjaHBhdGg6IgorKyAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGggIiRkbGxzZWFyY2hwYXRoOiIKKyAJICAgICAgY2F0IDw8RU9GCisgY29uc3QgY2hhciAqIEVYRV9QQVRIX1ZBUk5BTUUgPSAiUEFUSCI7CistY29uc3QgY2hhciAqIEVYRV9QQVRIX1ZBTFVFICAgPSAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQiOworK2NvbnN0IGNoYXIgKiBFWEVfUEFUSF9WQUxVRSAgID0gIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiOworIEVPRgorIAkgICAgZWxzZQorIAkgICAgICBjYXQgPDwiRU9GIgorQEAgLTM1MzksMTIgKzQzNDMsMTAgQEAgRU9GCisgCSAgICBjYXQgPDwiRU9GIgorIAorICNkZWZpbmUgTFRXUkFQUEVSX09QVElPTl9QUkVGSVggICAgICAgICAiLS1sdC0iCistI2RlZmluZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWF9MRU5HVEggIDUKKyAKKy1zdGF0aWMgY29uc3Qgc2l6ZV90IG9wdF9wcmVmaXhfbGVuICAgICAgICAgPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWF9MRU5HVEg7Cisgc3RhdGljIGNvbnN0IGNoYXIgKmx0d3JhcHBlcl9vcHRpb25fcHJlZml4ID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVg7CistCisgc3RhdGljIGNvbnN0IGNoYXIgKmR1bXBzY3JpcHRfb3B0ICAgICAgID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVggImR1bXAtc2NyaXB0IjsKKytzdGF0aWMgY29uc3QgY2hhciAqZGVidWdfb3B0ICAgICAgICAgICAgPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWCAiZGVidWciOworIAorIGludAorIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCitAQCAtMzU2MSwxMCArNDM2MywxMyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQorICAgaW50IGk7CisgCisgICBwcm9ncmFtX25hbWUgPSAoY2hhciAqKSB4c3RyZHVwIChiYXNlX25hbWUgKGFyZ3ZbMF0pKTsKKy0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgYXJndlswXSAgICAgIDogJXNcbiIsIGFyZ3ZbMF0pKTsKKy0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgcHJvZ3JhbV9uYW1lIDogJXNcbiIsIHByb2dyYW1fbmFtZSkpOworKyAgbmV3YXJneiA9IFhNQUxMT0MgKGNoYXIgKiwgYXJnYyArIDEpOworIAorLSAgLyogdmVyeSBzaW1wbGUgYXJnIHBhcnNpbmc7IGRvbid0IHdhbnQgdG8gcmVseSBvbiBnZXRvcHQgKi8KKysgIC8qIHZlcnkgc2ltcGxlIGFyZyBwYXJzaW5nOyBkb24ndCB3YW50IHRvIHJlbHkgb24gZ2V0b3B0CisrICAgKiBhbHNvLCBjb3B5IGFsbCBub24gY3dyYXBwZXIgb3B0aW9ucyB0byBuZXdhcmd6LCBleGNlcHQKKysgICAqIGFyZ3pbMF0sIHdoaWNoIGlzIGhhbmRsZWQgZGlmZmVyZW50bHkKKysgICAqLworKyAgbmV3YXJnYz0wOworICAgZm9yIChpID0gMTsgaSA8IGFyZ2M7IGkrKykKKyAgICAgeworICAgICAgIGlmIChzdHJjbXAgKGFyZ3ZbaV0sIGR1bXBzY3JpcHRfb3B0KSA9PSAwKQorQEAgLTM1ODEsMjEgKzQzODYsNTQgQEAgRU9GCisgCSAgbHRfZHVtcF9zY3JpcHQgKHN0ZG91dCk7CisgCSAgcmV0dXJuIDA7CisgCX0KKysgICAgICBpZiAoc3RyY21wIChhcmd2W2ldLCBkZWJ1Z19vcHQpID09IDApCisrCXsKKysgICAgICAgICAgbHRfZGVidWcgPSAxOworKyAgICAgICAgICBjb250aW51ZTsKKysJfQorKyAgICAgIGlmIChzdHJjbXAgKGFyZ3ZbaV0sIGx0d3JhcHBlcl9vcHRpb25fcHJlZml4KSA9PSAwKQorKyAgICAgICAgeworKyAgICAgICAgICAvKiBob3dldmVyLCBpZiB0aGVyZSBpcyBhbiBvcHRpb24gaW4gdGhlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYCisrICAgICAgICAgICAgIG5hbWVzcGFjZSwgYnV0IGl0IGlzIG5vdCBvbmUgb2YgdGhlIG9uZXMgd2Uga25vdyBhYm91dCBhbmQKKysgICAgICAgICAgICAgaGF2ZSBhbHJlYWR5IGRlYWx0IHdpdGgsIGFib3ZlIChpbmx1ZGluZyBkdW1wLXNjcmlwdCksIHRoZW4KKysgICAgICAgICAgICAgcmVwb3J0IGFuIGVycm9yLiBPdGhlcndpc2UsIHRhcmdldHMgbWlnaHQgYmVnaW4gdG8gYmVsaWV2ZQorKyAgICAgICAgICAgICB0aGV5IGFyZSBhbGxvd2VkIHRvIHVzZSBvcHRpb25zIGluIHRoZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWAorKyAgICAgICAgICAgICBuYW1lc3BhY2UuIFRoZSBmaXJzdCB0aW1lIGFueSB1c2VyIGNvbXBsYWlucyBhYm91dCB0aGlzLCB3ZSdsbAorKyAgICAgICAgICAgICBuZWVkIHRvIG1ha2UgTFRXUkFQUEVSX09QVElPTl9QUkVGSVggYSBjb25maWd1cmUtdGltZSBvcHRpb24KKysgICAgICAgICAgICAgb3IgYSBjb25maWd1cmUuYWMtc2V0dGFibGUgdmFsdWUuCisrICAgICAgICAgICAqLworKyAgICAgICAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLAorKwkJICAgICJ1bnJlY29nbml6ZWQgJXMgb3B0aW9uOiAnJXMnIiwKKysgICAgICAgICAgICAgICAgICAgIGx0d3JhcHBlcl9vcHRpb25fcHJlZml4LCBhcmd2W2ldKTsKKysgICAgICAgIH0KKysgICAgICAvKiBvdGhlcndpc2UgLi4uICovCisrICAgICAgbmV3YXJnelsrK25ld2FyZ2NdID0geHN0cmR1cCAoYXJndltpXSk7CisgICAgIH0KKysgIG5ld2FyZ3pbKytuZXdhcmdjXSA9IE5VTEw7CisrCisrRU9GCisrCSAgICBjYXQgPDxFT0YKKysgIC8qIFRoZSBHTlUgYmFubmVyIG11c3QgYmUgdGhlIGZpcnN0IG5vbi1lcnJvciBkZWJ1ZyBtZXNzYWdlICovCisrICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAibGlidG9vbCB3cmFwcGVyIChHTlUgJFBBQ0tBR0UkVElNRVNUQU1QKSAkVkVSU0lPTlxuIik7CisrRU9GCisrCSAgICBjYXQgPDwiRU9GIgorKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihtYWluKSBhcmd2WzBdOiAlc1xuIiwgYXJndlswXSk7CisrICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKG1haW4pIHByb2dyYW1fbmFtZTogJXNcbiIsIHByb2dyYW1fbmFtZSk7CisgCistICBuZXdhcmd6ID0gWE1BTExPQyAoY2hhciAqLCBhcmdjICsgMSk7CisgICB0bXBfcGF0aHNwZWMgPSBmaW5kX2V4ZWN1dGFibGUgKGFyZ3ZbMF0pOworICAgaWYgKHRtcF9wYXRoc3BlYyA9PSBOVUxMKQorLSAgICBsdF9mYXRhbCAoIkNvdWxkbid0IGZpbmQgJXMiLCBhcmd2WzBdKTsKKy0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgZm91bmQgZXhlIChiZWZvcmUgc3ltbGluayBjaGFzZSkgYXQgOiAlc1xuIiwKKy0JCQkgIHRtcF9wYXRoc3BlYykpOworKyAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLCAiY291bGRuJ3QgZmluZCAlcyIsIGFyZ3ZbMF0pOworKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKKysgICAgICAgICAgICAgICAgICAiKG1haW4pIGZvdW5kIGV4ZSAoYmVmb3JlIHN5bWxpbmsgY2hhc2UpIGF0OiAlc1xuIiwKKysJCSAgdG1wX3BhdGhzcGVjKTsKKyAKKyAgIGFjdHVhbF9jd3JhcHBlcl9wYXRoID0gY2hhc2Vfc3ltbGlua3MgKHRtcF9wYXRoc3BlYyk7CistICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIGZvdW5kIGV4ZSAoYWZ0ZXIgc3ltbGluayBjaGFzZSkgYXQgOiAlc1xuIiwKKy0JCQkgIGFjdHVhbF9jd3JhcHBlcl9wYXRoKSk7CisrICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAorKyAgICAgICAgICAgICAgICAgICIobWFpbikgZm91bmQgZXhlIChhZnRlciBzeW1saW5rIGNoYXNlKSBhdDogJXNcbiIsCisrCQkgIGFjdHVhbF9jd3JhcHBlcl9wYXRoKTsKKyAgIFhGUkVFICh0bXBfcGF0aHNwZWMpOworIAorLSAgYWN0dWFsX2N3cmFwcGVyX25hbWUgPSB4c3RyZHVwKCBiYXNlX25hbWUgKGFjdHVhbF9jd3JhcHBlcl9wYXRoKSk7CisrICBhY3R1YWxfY3dyYXBwZXJfbmFtZSA9IHhzdHJkdXAgKGJhc2VfbmFtZSAoYWN0dWFsX2N3cmFwcGVyX3BhdGgpKTsKKyAgIHN0cmVuZHphcCAoYWN0dWFsX2N3cmFwcGVyX3BhdGgsIGFjdHVhbF9jd3JhcHBlcl9uYW1lKTsKKyAKKyAgIC8qIHdyYXBwZXIgbmFtZSB0cmFuc2Zvcm1zICovCitAQCAtMzYxMyw4ICs0NDUxLDkgQEAgRU9GCisgICB0YXJnZXRfbmFtZSA9IHRtcF9wYXRoc3BlYzsKKyAgIHRtcF9wYXRoc3BlYyA9IDA7CisgCistICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIGxpYnRvb2wgdGFyZ2V0IG5hbWU6ICVzXG4iLAorLQkJCSAgdGFyZ2V0X25hbWUpKTsKKysgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCisrCQkgICIobWFpbikgbGlidG9vbCB0YXJnZXQgbmFtZTogJXNcbiIsCisrCQkgIHRhcmdldF9uYW1lKTsKKyBFT0YKKyAKKyAJICAgIGNhdCA8PEVPRgorQEAgLTM2NjQsMzUgKzQ1MDMsMTkgQEAgRU9GCisgCisgICBsdF9zZXRlbnYgKCJCSU5fU0giLCAieHBnNCIpOyAvKiBmb3IgVHJ1NjQgKi8KKyAgIGx0X3NldGVudiAoIkRVQUxDQVNFIiwgIjEiKTsgIC8qIGZvciBNU0sgc2ggKi8KKy0gIGx0X3VwZGF0ZV9saWJfcGF0aCAoTElCX1BBVEhfVkFSTkFNRSwgTElCX1BBVEhfVkFMVUUpOworKyAgLyogVXBkYXRlIHRoZSBETEwgc2VhcmNocGF0aC4gIEVYRV9QQVRIX1ZBTFVFICgkZGxsc2VhcmNocGF0aCkgbXVzdAorKyAgICAgYmUgcHJlcGVuZGVkIGJlZm9yZSAodGhhdCBpcywgYXBwZWFyIGFmdGVyKSBMSUJfUEFUSF9WQUxVRSAoJHRlbXBfcnBhdGgpCisrICAgICBiZWNhdXNlIG9uIFdpbmRvd3MsIGJvdGggKl9WQVJOQU1FcyBhcmUgUEFUSCBidXQgdW5pbnN0YWxsZWQKKysgICAgIGxpYnJhcmllcyBtdXN0IGNvbWUgZmlyc3QuICovCisgICBsdF91cGRhdGVfZXhlX3BhdGggKEVYRV9QQVRIX1ZBUk5BTUUsIEVYRV9QQVRIX1ZBTFVFKTsKKysgIGx0X3VwZGF0ZV9saWJfcGF0aCAoTElCX1BBVEhfVkFSTkFNRSwgTElCX1BBVEhfVkFMVUUpOworIAorLSAgbmV3YXJnYz0wOworLSAgZm9yIChpID0gMTsgaSA8IGFyZ2M7IGkrKykKKy0gICAgeworLSAgICAgIGlmIChzdHJuY21wIChhcmd2W2ldLCBsdHdyYXBwZXJfb3B0aW9uX3ByZWZpeCwgb3B0X3ByZWZpeF9sZW4pID09IDApCistICAgICAgICB7CistICAgICAgICAgIC8qIGhvd2V2ZXIsIGlmIHRoZXJlIGlzIGFuIG9wdGlvbiBpbiB0aGUgTFRXUkFQUEVSX09QVElPTl9QUkVGSVgKKy0gICAgICAgICAgICAgbmFtZXNwYWNlLCBidXQgaXQgaXMgbm90IG9uZSBvZiB0aGUgb25lcyB3ZSBrbm93IGFib3V0IGFuZAorLSAgICAgICAgICAgICBoYXZlIGFscmVhZHkgZGVhbHQgd2l0aCwgYWJvdmUgKGlubHVkaW5nIGR1bXAtc2NyaXB0KSwgdGhlbgorLSAgICAgICAgICAgICByZXBvcnQgYW4gZXJyb3IuIE90aGVyd2lzZSwgdGFyZ2V0cyBtaWdodCBiZWdpbiB0byBiZWxpZXZlCistICAgICAgICAgICAgIHRoZXkgYXJlIGFsbG93ZWQgdG8gdXNlIG9wdGlvbnMgaW4gdGhlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYCistICAgICAgICAgICAgIG5hbWVzcGFjZS4gVGhlIGZpcnN0IHRpbWUgYW55IHVzZXIgY29tcGxhaW5zIGFib3V0IHRoaXMsIHdlJ2xsCistICAgICAgICAgICAgIG5lZWQgdG8gbWFrZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWCBhIGNvbmZpZ3VyZS10aW1lIG9wdGlvbgorLSAgICAgICAgICAgICBvciBhIGNvbmZpZ3VyZS5hYy1zZXR0YWJsZSB2YWx1ZS4KKy0gICAgICAgICAgICovCistICAgICAgICAgIGx0X2ZhdGFsICgiVW5yZWNvZ25pemVkIG9wdGlvbiBpbiAlcyBuYW1lc3BhY2U6ICclcyciLAorLSAgICAgICAgICAgICAgICAgICAgbHR3cmFwcGVyX29wdGlvbl9wcmVmaXgsIGFyZ3ZbaV0pOworLSAgICAgICAgfQorLSAgICAgIC8qIG90aGVyd2lzZSAuLi4gKi8KKy0gICAgICBuZXdhcmd6WysrbmV3YXJnY10gPSB4c3RyZHVwIChhcmd2W2ldKTsKKy0gICAgfQorLSAgbmV3YXJnelsrK25ld2FyZ2NdID0gTlVMTDsKKy0KKy0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAgICAgKCgiKG1haW4pIGx0X2FyZ3ZfemVybyA6ICVzXG4iLCAobHRfYXJndl96ZXJvID8gbHRfYXJndl96ZXJvIDogIjxOVUxMPiIpKSk7CisrICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKG1haW4pIGx0X2FyZ3ZfemVybzogJXNcbiIsCisrCQkgIG5vbm51bGwgKGx0X2FyZ3ZfemVybykpOworICAgZm9yIChpID0gMDsgaSA8IG5ld2FyZ2M7IGkrKykKKyAgICAgeworLSAgICAgIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgbmV3YXJnelslZF0gICA6ICVzXG4iLCBpLCAobmV3YXJneltpXSA/IG5ld2FyZ3pbaV0gOiAiPE5VTEw+IikpKTsKKysgICAgICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKG1haW4pIG5ld2FyZ3pbJWRdOiAlc1xuIiwKKysJCSAgICAgIGksIG5vbm51bGwgKG5ld2FyZ3pbaV0pKTsKKyAgICAgfQorIAorIEVPRgorQEAgLTM3MDYsNyArNDUyOSw5IEBAIEVPRgorICAgaWYgKHJ2YWwgPT0gLTEpCisgICAgIHsKKyAgICAgICAvKiBmYWlsZWQgdG8gc3RhcnQgcHJvY2VzcyAqLworLSAgICAgIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgZmFpbGVkIHRvIGxhdW5jaCB0YXJnZXQgXCIlc1wiOiBlcnJubyA9ICVkXG4iLCBsdF9hcmd2X3plcm8sIGVycm5vKSk7CisrICAgICAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKKysJCSAgICAgICIobWFpbikgZmFpbGVkIHRvIGxhdW5jaCB0YXJnZXQgXCIlc1wiOiAlc1xuIiwKKysJCSAgICAgIGx0X2FyZ3ZfemVybywgbm9ubnVsbCAoc3RyZXJyb3IgKGVycm5vKSkpOworICAgICAgIHJldHVybiAxMjc7CisgICAgIH0KKyAgIHJldHVybiBydmFsOworQEAgLTM3MjgsNyArNDU1Myw3IEBAIHhtYWxsb2MgKHNpemVfdCBudW0pCisgeworICAgdm9pZCAqcCA9ICh2b2lkICopIG1hbGxvYyAobnVtKTsKKyAgIGlmICghcCkKKy0gICAgbHRfZmF0YWwgKCJNZW1vcnkgZXhoYXVzdGVkIik7CisrICAgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sICJtZW1vcnkgZXhoYXVzdGVkIik7CisgCisgICByZXR1cm4gcDsKKyB9CitAQCAtMzc2Miw4ICs0NTg3LDggQEAgY2hlY2tfZXhlY3V0YWJsZSAoY29uc3QgY2hhciAqcGF0aCkKKyB7CisgICBzdHJ1Y3Qgc3RhdCBzdDsKKyAKKy0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIoY2hlY2tfZXhlY3V0YWJsZSkgIDogJXNcbiIsCistCQkJICBwYXRoID8gKCpwYXRoID8gcGF0aCA6ICJFTVBUWSEiKSA6ICJOVUxMISIpKTsKKysgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICIoY2hlY2tfZXhlY3V0YWJsZSk6ICVzXG4iLAorKyAgICAgICAgICAgICAgICAgIG5vbmVtcHR5IChwYXRoKSk7CisgICBpZiAoKCFwYXRoKSB8fCAoISpwYXRoKSkKKyAgICAgcmV0dXJuIDA7CisgCitAQCAtMzc4MCw4ICs0NjA1LDggQEAgbWFrZV9leGVjdXRhYmxlIChjb25zdCBjaGFyICpwYXRoKQorICAgaW50IHJ2YWwgPSAwOworICAgc3RydWN0IHN0YXQgc3Q7CisgCistICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1ha2VfZXhlY3V0YWJsZSkgICA6ICVzXG4iLAorLQkJCSAgcGF0aCA/ICgqcGF0aCA/IHBhdGggOiAiRU1QVFkhIikgOiAiTlVMTCEiKSk7CisrICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKG1ha2VfZXhlY3V0YWJsZSk6ICVzXG4iLAorKyAgICAgICAgICAgICAgICAgIG5vbmVtcHR5IChwYXRoKSk7CisgICBpZiAoKCFwYXRoKSB8fCAoISpwYXRoKSkKKyAgICAgcmV0dXJuIDA7CisgCitAQCAtMzgwNyw4ICs0NjMyLDggQEAgZmluZF9leGVjdXRhYmxlIChjb25zdCBjaGFyICp3cmFwcGVyKQorICAgaW50IHRtcF9sZW47CisgICBjaGFyICpjb25jYXRfbmFtZTsKKyAKKy0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIoZmluZF9leGVjdXRhYmxlKSAgIDogJXNcbiIsCistCQkJICB3cmFwcGVyID8gKCp3cmFwcGVyID8gd3JhcHBlciA6ICJFTVBUWSEiKSA6ICJOVUxMISIpKTsKKysgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICIoZmluZF9leGVjdXRhYmxlKTogJXNcbiIsCisrICAgICAgICAgICAgICAgICAgbm9uZW1wdHkgKHdyYXBwZXIpKTsKKyAKKyAgIGlmICgod3JhcHBlciA9PSBOVUxMKSB8fCAoKndyYXBwZXIgPT0gJ1wwJykpCisgICAgIHJldHVybiBOVUxMOworQEAgLTM4NjEsNyArNDY4Niw4IEBAIGZpbmRfZXhlY3V0YWJsZSAoY29uc3QgY2hhciAqd3JhcHBlcikKKyAJCXsKKyAJCSAgLyogZW1wdHkgcGF0aDogY3VycmVudCBkaXJlY3RvcnkgKi8KKyAJCSAgaWYgKGdldGN3ZCAodG1wLCBMVF9QQVRITUFYKSA9PSBOVUxMKQorLQkJICAgIGx0X2ZhdGFsICgiZ2V0Y3dkIGZhaWxlZCIpOworKwkJICAgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sICJnZXRjd2QgZmFpbGVkOiAlcyIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9ubnVsbCAoc3RyZXJyb3IgKGVycm5vKSkpOworIAkJICB0bXBfbGVuID0gc3RybGVuICh0bXApOworIAkJICBjb25jYXRfbmFtZSA9CisgCQkgICAgWE1BTExPQyAoY2hhciwgdG1wX2xlbiArIDEgKyBzdHJsZW4gKHdyYXBwZXIpICsgMSk7CitAQCAtMzg4Niw3ICs0NzEyLDggQEAgZmluZF9leGVjdXRhYmxlIChjb25zdCBjaGFyICp3cmFwcGVyKQorICAgICB9CisgICAvKiBSZWxhdGl2ZSBwYXRoIHwgbm90IGZvdW5kIGluIHBhdGg6IHByZXBlbmQgY3dkICovCisgICBpZiAoZ2V0Y3dkICh0bXAsIExUX1BBVEhNQVgpID09IE5VTEwpCistICAgIGx0X2ZhdGFsICgiZ2V0Y3dkIGZhaWxlZCIpOworKyAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLCAiZ2V0Y3dkIGZhaWxlZDogJXMiLAorKyAgICAgICAgICAgICAgbm9ubnVsbCAoc3RyZXJyb3IgKGVycm5vKSkpOworICAgdG1wX2xlbiA9IHN0cmxlbiAodG1wKTsKKyAgIGNvbmNhdF9uYW1lID0gWE1BTExPQyAoY2hhciwgdG1wX2xlbiArIDEgKyBzdHJsZW4gKHdyYXBwZXIpICsgMSk7CisgICBtZW1jcHkgKGNvbmNhdF9uYW1lLCB0bXAsIHRtcF9sZW4pOworQEAgLTM5MTIsOCArNDczOSw5IEBAIGNoYXNlX3N5bWxpbmtzIChjb25zdCBjaGFyICpwYXRoc3BlYykKKyAgIGludCBoYXNfc3ltbGlua3MgPSAwOworICAgd2hpbGUgKHN0cmxlbiAodG1wX3BhdGhzcGVjKSAmJiAhaGFzX3N5bWxpbmtzKQorICAgICB7CistICAgICAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoImNoZWNraW5nIHBhdGggY29tcG9uZW50IGZvciBzeW1saW5rczogJXNcbiIsCistCQkJICAgICAgdG1wX3BhdGhzcGVjKSk7CisrICAgICAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKKysJCSAgICAgICJjaGVja2luZyBwYXRoIGNvbXBvbmVudCBmb3Igc3ltbGlua3M6ICVzXG4iLAorKwkJICAgICAgdG1wX3BhdGhzcGVjKTsKKyAgICAgICBpZiAobHN0YXQgKHRtcF9wYXRoc3BlYywgJnMpID09IDApCisgCXsKKyAJICBpZiAoU19JU0xOSyAocy5zdF9tb2RlKSAhPSAwKQorQEAgLTM5MzUsOCArNDc2Myw5IEBAIGNoYXNlX3N5bWxpbmtzIChjb25zdCBjaGFyICpwYXRoc3BlYykKKyAJfQorICAgICAgIGVsc2UKKyAJeworLQkgIGNoYXIgKmVycnN0ciA9IHN0cmVycm9yIChlcnJubyk7CistCSAgbHRfZmF0YWwgKCJFcnJvciBhY2Nlc3NpbmcgZmlsZSAlcyAoJXMpIiwgdG1wX3BhdGhzcGVjLCBlcnJzdHIpOworKwkgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sCisrCQkgICAgImVycm9yIGFjY2Vzc2luZyBmaWxlIFwiJXNcIjogJXMiLAorKwkJICAgIHRtcF9wYXRoc3BlYywgbm9ubnVsbCAoc3RyZXJyb3IgKGVycm5vKSkpOworIAl9CisgICAgIH0KKyAgIFhGUkVFICh0bXBfcGF0aHNwZWMpOworQEAgLTM5NDksNyArNDc3OCw4IEBAIGNoYXNlX3N5bWxpbmtzIChjb25zdCBjaGFyICpwYXRoc3BlYykKKyAgIHRtcF9wYXRoc3BlYyA9IHJlYWxwYXRoIChwYXRoc3BlYywgYnVmKTsKKyAgIGlmICh0bXBfcGF0aHNwZWMgPT0gMCkKKyAgICAgeworLSAgICAgIGx0X2ZhdGFsICgiQ291bGQgbm90IGZvbGxvdyBzeW1saW5rcyBmb3IgJXMiLCBwYXRoc3BlYyk7CisrICAgICAgbHRfZmF0YWwgKF9fRklMRV9fLCBfX0xJTkVfXywKKysJCSJjb3VsZCBub3QgZm9sbG93IHN5bWxpbmtzIGZvciAlcyIsIHBhdGhzcGVjKTsKKyAgICAgfQorICAgcmV0dXJuIHhzdHJkdXAgKHRtcF9wYXRoc3BlYyk7CisgI2VuZGlmCitAQCAtMzk3NSwxMSArNDgwNSwyNSBAQCBzdHJlbmR6YXAgKGNoYXIgKnN0ciwgY29uc3QgY2hhciAqcGF0KQorICAgcmV0dXJuIHN0cjsKKyB9CisgCisrdm9pZAorK2x0X2RlYnVncHJpbnRmIChjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciAqZm10LCAuLi4pCisreworKyAgdmFfbGlzdCBhcmdzOworKyAgaWYgKGx0X2RlYnVnKQorKyAgICB7CisrICAgICAgKHZvaWQpIGZwcmludGYgKHN0ZGVyciwgIiVzOiVzOiVkOiAiLCBwcm9ncmFtX25hbWUsIGZpbGUsIGxpbmUpOworKyAgICAgIHZhX3N0YXJ0IChhcmdzLCBmbXQpOworKyAgICAgICh2b2lkKSB2ZnByaW50ZiAoc3RkZXJyLCBmbXQsIGFyZ3MpOworKyAgICAgIHZhX2VuZCAoYXJncyk7CisrICAgIH0KKyt9CisrCisgc3RhdGljIHZvaWQKKy1sdF9lcnJvcl9jb3JlIChpbnQgZXhpdF9zdGF0dXMsIGNvbnN0IGNoYXIgKm1vZGUsCisrbHRfZXJyb3JfY29yZSAoaW50IGV4aXRfc3RhdHVzLCBjb25zdCBjaGFyICpmaWxlLAorKwkgICAgICAgaW50IGxpbmUsIGNvbnN0IGNoYXIgKm1vZGUsCisgCSAgICAgICBjb25zdCBjaGFyICptZXNzYWdlLCB2YV9saXN0IGFwKQorIHsKKy0gIGZwcmludGYgKHN0ZGVyciwgIiVzOiAlczogIiwgcHJvZ3JhbV9uYW1lLCBtb2RlKTsKKysgIGZwcmludGYgKHN0ZGVyciwgIiVzOiVzOiVkOiAlczogIiwgcHJvZ3JhbV9uYW1lLCBmaWxlLCBsaW5lLCBtb2RlKTsKKyAgIHZmcHJpbnRmIChzdGRlcnIsIG1lc3NhZ2UsIGFwKTsKKyAgIGZwcmludGYgKHN0ZGVyciwgIi5cbiIpOworIAorQEAgLTM5ODgsMjAgKzQ4MzIsMzIgQEAgbHRfZXJyb3JfY29yZSAoaW50IGV4aXRfc3RhdHVzLCBjb25zdCBjaGFyICptb2RlLAorIH0KKyAKKyB2b2lkCistbHRfZmF0YWwgKGNvbnN0IGNoYXIgKm1lc3NhZ2UsIC4uLikKKytsdF9mYXRhbCAoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UsIC4uLikKKyB7CisgICB2YV9saXN0IGFwOworICAgdmFfc3RhcnQgKGFwLCBtZXNzYWdlKTsKKy0gIGx0X2Vycm9yX2NvcmUgKEVYSVRfRkFJTFVSRSwgIkZBVEFMIiwgbWVzc2FnZSwgYXApOworKyAgbHRfZXJyb3JfY29yZSAoRVhJVF9GQUlMVVJFLCBmaWxlLCBsaW5lLCAiRkFUQUwiLCBtZXNzYWdlLCBhcCk7CisgICB2YV9lbmQgKGFwKTsKKyB9CisgCisrc3RhdGljIGNvbnN0IGNoYXIgKgorK25vbm51bGwgKGNvbnN0IGNoYXIgKnMpCisreworKyAgcmV0dXJuIHMgPyBzIDogIihudWxsKSI7CisrfQorKworK3N0YXRpYyBjb25zdCBjaGFyICoKKytub25lbXB0eSAoY29uc3QgY2hhciAqcykKKyt7CisrICByZXR1cm4gKHMgJiYgISpzKSA/ICIoZW1wdHkpIiA6IG5vbm51bGwgKHMpOworK30KKysKKyB2b2lkCisgbHRfc2V0ZW52IChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKKyB7CistICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKGx0X3NldGVudikgc2V0dGluZyAnJXMnIHRvICclcydcbiIsCistICAgICAgICAgICAgICAgICAgICAgICAgICAobmFtZSA/IG5hbWUgOiAiPE5VTEw+IiksCistICAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWUgPyB2YWx1ZSA6ICI8TlVMTD4iKSkpOworKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKKysJCSAgIihsdF9zZXRlbnYpIHNldHRpbmcgJyVzJyB0byAnJXMnXG4iLAorKyAgICAgICAgICAgICAgICAgIG5vbm51bGwgKG5hbWUpLCBub25udWxsICh2YWx1ZSkpOworICAgeworICNpZmRlZiBIQVZFX1NFVEVOVgorICAgICAvKiBhbHdheXMgbWFrZSBhIGNvcHksIGZvciBjb25zaXN0ZW5jeSB3aXRoICFIQVZFX1NFVEVOViAqLworQEAgLTQwNDksOSArNDkwNSw5IEBAIGx0X2V4dGVuZF9zdHIgKGNvbnN0IGNoYXIgKm9yaWdfdmFsdWUsIGNvbnN0IGNoYXIgKmFkZCwgaW50IHRvX2VuZCkKKyB2b2lkCisgbHRfdXBkYXRlX2V4ZV9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKKyB7CistICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKGx0X3VwZGF0ZV9leGVfcGF0aCkgbW9kaWZ5aW5nICclcycgYnkgcHJlcGVuZGluZyAnJXMnXG4iLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgKG5hbWUgPyBuYW1lIDogIjxOVUxMPiIpLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlID8gdmFsdWUgOiAiPE5VTEw+IikpKTsKKysgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCisrCQkgICIobHRfdXBkYXRlX2V4ZV9wYXRoKSBtb2RpZnlpbmcgJyVzJyBieSBwcmVwZW5kaW5nICclcydcbiIsCisrICAgICAgICAgICAgICAgICAgbm9ubnVsbCAobmFtZSksIG5vbm51bGwgKHZhbHVlKSk7CisgCisgICBpZiAobmFtZSAmJiAqbmFtZSAmJiB2YWx1ZSAmJiAqdmFsdWUpCisgICAgIHsKK0BAIC00MDcwLDkgKzQ5MjYsOSBAQCBsdF91cGRhdGVfZXhlX3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKQorIHZvaWQKKyBsdF91cGRhdGVfbGliX3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKQorIHsKKy0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobHRfdXBkYXRlX2xpYl9wYXRoKSBtb2RpZnlpbmcgJyVzJyBieSBwcmVwZW5kaW5nICclcydcbiIsCistICAgICAgICAgICAgICAgICAgICAgICAgICAobmFtZSA/IG5hbWUgOiAiPE5VTEw+IiksCistICAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWUgPyB2YWx1ZSA6ICI8TlVMTD4iKSkpOworKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKKysJCSAgIihsdF91cGRhdGVfbGliX3BhdGgpIG1vZGlmeWluZyAnJXMnIGJ5IHByZXBlbmRpbmcgJyVzJ1xuIiwKKysgICAgICAgICAgICAgICAgICBub25udWxsIChuYW1lKSwgbm9ubnVsbCAodmFsdWUpKTsKKyAKKyAgIGlmIChuYW1lICYmICpuYW1lICYmIHZhbHVlICYmICp2YWx1ZSkKKyAgICAgeworQEAgLTQyMjIsNyArNTA3OCw3IEBAIEVPRgorIGZ1bmNfd2luMzJfaW1wb3J0X2xpYl9wICgpCisgeworICAgICAkb3B0X2RlYnVnCistICAgIGNhc2UgYGV2YWwgIiRmaWxlX21hZ2ljX2NtZCBcIlwkMVwiIDI+L2Rldi9udWxsIiB8ICRTRUQgLWUgMTBxYCBpbgorKyAgICBjYXNlIGBldmFsICRmaWxlX21hZ2ljX2NtZCBcIlwkMVwiIDI+L2Rldi9udWxsIHwgJFNFRCAtZSAxMHFgIGluCisgICAgICppbXBvcnQqKSA6IDs7CisgICAgICopIGZhbHNlIDs7CisgICAgIGVzYWMKK0BAIC00NDAxLDkgKzUyNTcsOSBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgOzsKKyAJICAqKQorIAkgICAgaWYgdGVzdCAiJHByZXYiID0gZGxmaWxlczsgdGhlbgorLQkgICAgICBkbGZpbGVzPSIkZGxmaWxlcyAkYXJnIgorKwkgICAgICBmdW5jX2FwcGVuZCBkbGZpbGVzICIgJGFyZyIKKyAJICAgIGVsc2UKKy0JICAgICAgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJGFyZyIKKysJICAgICAgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRhcmciCisgCSAgICBmaQorIAkgICAgcHJldj0KKyAJICAgIGNvbnRpbnVlCitAQCAtNDQyNyw3ICs1MjgzLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgICotKi1kYXJ3aW4qKQorIAkgICAgICBjYXNlICIkZGVwbGlicyAiIGluCisgCQkqIiAkcWFyZy5sdGZyYW1ld29yayAiKikgOzsKKy0JCSopIGRlcGxpYnM9IiRkZXBsaWJzICRxYXJnLmx0ZnJhbWV3b3JrIiAjIHRoaXMgaXMgZml4ZWQgbGF0ZXIKKysJCSopIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkcWFyZy5sdGZyYW1ld29yayIgIyB0aGlzIGlzIGZpeGVkIGxhdGVyCisgCQkgICA7OworIAkgICAgICBlc2FjCisgCSAgICAgIDs7CitAQCAtNDQ0Niw3ICs1MzAyLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgIG1vcmVhcmdzPQorIAkgICAgZm9yIGZpbCBpbiBgY2F0ICIkc2F2ZV9hcmciYAorIAkgICAgZG8KKy0jCSAgICAgIG1vcmVhcmdzPSIkbW9yZWFyZ3MgJGZpbCIKKysjCSAgICAgIGZ1bmNfYXBwZW5kIG1vcmVhcmdzICIgJGZpbCIKKyAJICAgICAgYXJnPSRmaWwKKyAJICAgICAgIyBBIGxpYnRvb2wtY29udHJvbGxlZCBvYmplY3QuCisgCitAQCAtNDQ3NSw3ICs1MzMxLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAKKyAJCSAgaWYgdGVzdCAiJHByZXYiID0gZGxmaWxlczsgdGhlbgorIAkJICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0geWVzICYmIHRlc3QgIiRkbG9wZW5fc3VwcG9ydCIgPSB5ZXM7IHRoZW4KKy0JCSAgICAgIGRsZmlsZXM9IiRkbGZpbGVzICRwaWNfb2JqZWN0IgorKwkJICAgICAgZnVuY19hcHBlbmQgZGxmaWxlcyAiICRwaWNfb2JqZWN0IgorIAkJICAgICAgcHJldj0KKyAJCSAgICAgIGNvbnRpbnVlCisgCQkgICAgZWxzZQorQEAgLTQ0ODcsNyArNTM0Myw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCQkgICMgQ0hFQ0sgTUU6ICBJIHRoaW5rIEkgYnVzdGVkIHRoaXMuICAtT3NzYW1hCisgCQkgIGlmIHRlc3QgIiRwcmV2IiA9IGRscHJlZmlsZXM7IHRoZW4KKyAJCSAgICAjIFByZWxvYWQgdGhlIG9sZC1zdHlsZSBvYmplY3QuCistCQkgICAgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJHBpY19vYmplY3QiCisrCQkgICAgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRwaWNfb2JqZWN0IgorIAkJICAgIHByZXY9CisgCQkgIGZpCisgCitAQCAtNDU1NywxMiArNTQxMywxMiBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgIGlmIHRlc3QgIiRwcmV2IiA9IHJwYXRoOyB0aGVuCisgCSAgICBjYXNlICIkcnBhdGggIiBpbgorIAkgICAgKiIgJGFyZyAiKikgOzsKKy0JICAgICopIHJwYXRoPSIkcnBhdGggJGFyZyIgOzsKKysJICAgICopIGZ1bmNfYXBwZW5kIHJwYXRoICIgJGFyZyIgOzsKKyAJICAgIGVzYWMKKyAJICBlbHNlCisgCSAgICBjYXNlICIkeHJwYXRoICIgaW4KKyAJICAgICoiICRhcmcgIiopIDs7CistCSAgICAqKSB4cnBhdGg9IiR4cnBhdGggJGFyZyIgOzsKKysJICAgICopIGZ1bmNfYXBwZW5kIHhycGF0aCAiICRhcmciIDs7CisgCSAgICBlc2FjCisgCSAgZmkKKyAJICBwcmV2PQorQEAgLTQ1NzQsMjggKzU0MzAsMjggQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICBjb250aW51ZQorIAkgIDs7CisgCXdlYWspCistCSAgd2Vha19saWJzPSIkd2Vha19saWJzICRhcmciCisrCSAgZnVuY19hcHBlbmQgd2Vha19saWJzICIgJGFyZyIKKyAJICBwcmV2PQorIAkgIGNvbnRpbnVlCisgCSAgOzsKKyAJeGNjbGlua2VyKQorLQkgIGxpbmtlcl9mbGFncz0iJGxpbmtlcl9mbGFncyAkcWFyZyIKKy0JICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRxYXJnIgorKwkgIGZ1bmNfYXBwZW5kIGxpbmtlcl9mbGFncyAiICRxYXJnIgorKwkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJHFhcmciCisgCSAgcHJldj0KKyAJICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkcWFyZyIKKyAJICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJHFhcmciCisgCSAgY29udGludWUKKyAJICA7OworIAl4Y29tcGlsZXIpCistCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkcWFyZyIKKysJICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRxYXJnIgorIAkgIHByZXY9CisgCSAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJHFhcmciCisgCSAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRxYXJnIgorIAkgIGNvbnRpbnVlCisgCSAgOzsKKyAJeGxpbmtlcikKKy0JICBsaW5rZXJfZmxhZ3M9IiRsaW5rZXJfZmxhZ3MgJHFhcmciCistCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkd2wkcWFyZyIKKysJICBmdW5jX2FwcGVuZCBsaW5rZXJfZmxhZ3MgIiAkcWFyZyIKKysJICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICR3bCRxYXJnIgorIAkgIHByZXY9CisgCSAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJHdsJHFhcmciCisgCSAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICR3bCRxYXJnIgorQEAgLTQ2ODYsMTUgKzU1NDIsMTYgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJOzsKKyAKKyAgICAgICAtTCopCistCWZ1bmNfc3RyaXBuYW1lICctTCcgJycgIiRhcmciCistCWRpcj0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CistCWlmIHRlc3QgLXogIiRkaXIiOyB0aGVuCisrCWZ1bmNfc3RyaXBuYW1lICItTCIgJycgIiRhcmciCisrCWlmIHRlc3QgLXogIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiOyB0aGVuCisgCSAgaWYgdGVzdCAiJCMiIC1ndCAwOyB0aGVuCisgCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJyZXF1aXJlIG5vIHNwYWNlIGJldHdlZW4gXGAtTCcgYW5kIFxgJDEnIgorIAkgIGVsc2UKKyAJICAgIGZ1bmNfZmF0YWxfZXJyb3IgIm5lZWQgcGF0aCBmb3IgXGAtTCcgb3B0aW9uIgorIAkgIGZpCisgCWZpCisrCWZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorKwlkaXI9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAorIAkjIFdlIG5lZWQgYW4gYWJzb2x1dGUgcGF0aC4KKyAJY2FzZSAkZGlyIGluCisgCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgOzsKK0BAIC00NzA2LDEwICs1NTYzLDE2IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgOzsKKyAJZXNhYworIAljYXNlICIkZGVwbGlicyAiIGluCistCSoiIC1MJGRpciAiKikgOzsKKysJKiIgLUwkZGlyICIqIHwgKiIgJGFyZyAiKikKKysJICAjIFdpbGwgb25seSBoYXBwZW4gZm9yIGFic29sdXRlIG9yIHN5c3Jvb3QgYXJndW1lbnRzCisrCSAgOzsKKyAJKikKKy0JICBkZXBsaWJzPSIkZGVwbGlicyAtTCRkaXIiCistCSAgbGliX3NlYXJjaF9wYXRoPSIkbGliX3NlYXJjaF9wYXRoICRkaXIiCisrCSAgIyBQcmVzZXJ2ZSBzeXNyb290LCBidXQgbmV2ZXIgaW5jbHVkZSByZWxhdGl2ZSBkaXJlY3RvcmllcworKwkgIGNhc2UgJGRpciBpbgorKwkgICAgW1xcL10qIHwgW0EtWmEtel06W1xcL10qIHwgPSopIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkYXJnIiA7OworKwkgICAgKikgZnVuY19hcHBlbmQgZGVwbGlicyAiIC1MJGRpciIgOzsKKysJICBlc2FjCisrCSAgZnVuY19hcHBlbmQgbGliX3NlYXJjaF9wYXRoICIgJGRpciIKKyAJICA7OworIAllc2FjCisgCWNhc2UgJGhvc3QgaW4KK0BAIC00NzE4LDEyICs1NTgxLDEyIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgY2FzZSA6JGRsbHNlYXJjaHBhdGg6IGluCisgCSAgKiI6JGRpcjoiKikgOzsKKyAJICA6OikgZGxsc2VhcmNocGF0aD0kZGlyOzsKKy0JICAqKSBkbGxzZWFyY2hwYXRoPSIkZGxsc2VhcmNocGF0aDokZGlyIjs7CisrCSAgKikgZnVuY19hcHBlbmQgZGxsc2VhcmNocGF0aCAiOiRkaXIiOzsKKyAJICBlc2FjCisgCSAgY2FzZSA6JGRsbHNlYXJjaHBhdGg6IGluCisgCSAgKiI6JHRlc3RiaW5kaXI6IiopIDs7CisgCSAgOjopIGRsbHNlYXJjaHBhdGg9JHRlc3RiaW5kaXI7OworLQkgICopIGRsbHNlYXJjaHBhdGg9IiRkbGxzZWFyY2hwYXRoOiR0ZXN0YmluZGlyIjs7CisrCSAgKikgZnVuY19hcHBlbmQgZGxsc2VhcmNocGF0aCAiOiR0ZXN0YmluZGlyIjs7CisgCSAgZXNhYworIAkgIDs7CisgCWVzYWMKK0BAIC00NzQ3LDcgKzU2MTAsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgOzsKKyAJICAqLSotcmhhcHNvZHkqIHwgKi0qLWRhcndpbjEuWzAxMl0pCisgCSAgICAjIFJoYXBzb2R5IEMgYW5kIG1hdGggbGlicmFyaWVzIGFyZSBpbiB0aGUgU3lzdGVtIGZyYW1ld29yaworLQkgICAgZGVwbGlicz0iJGRlcGxpYnMgU3lzdGVtLmx0ZnJhbWV3b3JrIgorKwkgICAgZnVuY19hcHBlbmQgZGVwbGlicyAiIFN5c3RlbS5sdGZyYW1ld29yayIKKyAJICAgIGNvbnRpbnVlCisgCSAgICA7OworIAkgICotKi1zY28zLjJ2NSogfCAqLSotc2NvNXY2KikKK0BAIC00NzU4LDkgKzU2MjEsNiBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgIyBDb21waWxlciBpbnNlcnRzIGxpYmMgaW4gdGhlIGNvcnJlY3QgcGxhY2UgZm9yIHRocmVhZHMgdG8gd29yaworIAkgICAgdGVzdCAiWCRhcmciID0gIlgtbGMiICYmIGNvbnRpbnVlCisgCSAgICA7OworLQkgICotKi1saW51eCopCistCSAgICB0ZXN0ICJYJGFyZyIgPSAiWC1sYyIgJiYgY29udGludWUKKy0JICAgIDs7CisgCSAgZXNhYworIAllbGlmIHRlc3QgIlgkYXJnIiA9ICJYLWxjX3IiOyB0aGVuCisgCSBjYXNlICRob3N0IGluCitAQCAtNDc3MCw3ICs1NjMwLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgOzsKKyAJIGVzYWMKKyAJZmkKKy0JZGVwbGlicz0iJGRlcGxpYnMgJGFyZyIKKysJZnVuY19hcHBlbmQgZGVwbGlicyAiICRhcmciCisgCWNvbnRpbnVlCisgCTs7CisgCitAQCAtNDc4Miw4ICs1NjQyLDggQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAgICAgICAjIFRydTY0IFVOSVggdXNlcyAtbW9kZWwgW2FyZ10gdG8gZGV0ZXJtaW5lIHRoZSBsYXlvdXQgb2YgQysrCisgICAgICAgIyBjbGFzc2VzLCBuYW1lIG1hbmdsaW5nLCBhbmQgZXhjZXB0aW9uIGhhbmRsaW5nLgorICAgICAgICMgRGFyd2luIHVzZXMgdGhlIC1hcmNoIGZsYWcgdG8gZGV0ZXJtaW5lIG91dHB1dCBhcmNoaXRlY3R1cmUuCistICAgICAgLW1vZGVsfC1hcmNofC1pc3lzcm9vdCkKKy0JY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkYXJnIgorKyAgICAgIC1tb2RlbHwtYXJjaHwtaXN5c3Jvb3R8LS1zeXNyb290KQorKwlmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRhcmciCisgCWZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRhcmciCisgCWZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkYXJnIgorIAlwcmV2PXhjb21waWxlcgorQEAgLTQ3OTEsMTIgKzU2NTEsMTIgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJOzsKKyAKKyAgICAgICAtbXR8LW10aHJlYWRzfC1rdGhyZWFkfC1LdGhyZWFkfC1wdGhyZWFkfC1wdGhyZWFkc3wtLXRocmVhZC1zYWZlfC10aHJlYWRzKQorLQljb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRhcmciCisrCWZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJGFyZyIKKyAJZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJGFyZyIKKyAJZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRhcmciCisgCWNhc2UgIiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiIGluCisgCSAgICAqIiAkYXJnICIqKSA7OworLQkgICAgKiApIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzPSIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgJGFyZyIgOzsKKysJICAgICogKSBmdW5jX2FwcGVuZCBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiICRhcmciIDs7CisgCWVzYWMKKyAJY29udGludWUKKyAJOzsKK0BAIC00ODYzLDEzICs1NzIzLDE3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSMgV2UgbmVlZCBhbiBhYnNvbHV0ZSBwYXRoLgorIAljYXNlICRkaXIgaW4KKyAJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSA7OworKwk9KikKKysJICBmdW5jX3N0cmlwbmFtZSAnPScgJycgIiRkaXIiCisrCSAgZGlyPSRsdF9zeXNyb290JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorKwkgIDs7CisgCSopCisgCSAgZnVuY19mYXRhbF9lcnJvciAib25seSBhYnNvbHV0ZSBydW4tcGF0aHMgYXJlIGFsbG93ZWQiCisgCSAgOzsKKyAJZXNhYworIAljYXNlICIkeHJwYXRoICIgaW4KKyAJKiIgJGRpciAiKikgOzsKKy0JKikgeHJwYXRoPSIkeHJwYXRoICRkaXIiIDs7CisrCSopIGZ1bmNfYXBwZW5kIHhycGF0aCAiICRkaXIiIDs7CisgCWVzYWMKKyAJY29udGludWUKKyAJOzsKK0BAIC00OTIyLDggKzU3ODYsOCBAQCBmdW5jX21vZGVfbGluayAoKQorIAlmb3IgZmxhZyBpbiAkYXJnczsgZG8KKyAJICBJRlM9IiRzYXZlX2lmcyIKKyAgICAgICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGZsYWciCistCSAgYXJnPSIkYXJnICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKy0JICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKysJICBmdW5jX2FwcGVuZCBhcmcgIiAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisrCSAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisgCWRvbmUKKyAJSUZTPSIkc2F2ZV9pZnMiCisgCWZ1bmNfc3RyaXBuYW1lICcgJyAnJyAiJGFyZyIKK0BAIC00OTM4LDkgKzU4MDIsOSBAQCBmdW5jX21vZGVfbGluayAoKQorIAlmb3IgZmxhZyBpbiAkYXJnczsgZG8KKyAJICBJRlM9IiRzYXZlX2lmcyIKKyAgICAgICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGZsYWciCistCSAgYXJnPSIkYXJnICR3bCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKy0JICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICR3bCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKy0JICBsaW5rZXJfZmxhZ3M9IiRsaW5rZXJfZmxhZ3MgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorKwkgIGZ1bmNfYXBwZW5kIGFyZyAiICR3bCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKysJICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICR3bCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKysJICBmdW5jX2FwcGVuZCBsaW5rZXJfZmxhZ3MgIiAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisgCWRvbmUKKyAJSUZTPSIkc2F2ZV9pZnMiCisgCWZ1bmNfc3RyaXBuYW1lICcgJyAnJyAiJGFyZyIKK0BAIC00OTY4LDI0ICs1ODMyLDI3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCWFyZz0iJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorIAk7OworIAorLSAgICAgICMgLTY0LCAtbWlwc1swLTldIGVuYWJsZSA2NC1iaXQgbW9kZSBvbiB0aGUgU0dJIGNvbXBpbGVyCistICAgICAgIyAtclswLTldWzAtOV0qIHNwZWNpZmllcyB0aGUgcHJvY2Vzc29yIG9uIHRoZSBTR0kgY29tcGlsZXIKKy0gICAgICAjIC14YXJjaD0qLCAteHRhcmdldD0qIGVuYWJsZSA2NC1iaXQgbW9kZSBvbiB0aGUgU3VuIGNvbXBpbGVyCistICAgICAgIyArREEqLCArREQqIGVuYWJsZSA2NC1iaXQgbW9kZSBvbiB0aGUgSFAgY29tcGlsZXIKKy0gICAgICAjIC1xKiBwYXNzIHRocm91Z2ggY29tcGlsZXIgYXJncyBmb3IgdGhlIElCTSBjb21waWxlcgorLSAgICAgICMgLW0qLCAtdFs0NV0qLCAtdHhzY2FsZSogcGFzcyB0aHJvdWdoIGFyY2hpdGVjdHVyZS1zcGVjaWZpYworLSAgICAgICMgY29tcGlsZXIgYXJncyBmb3IgR0NDCistICAgICAgIyAtRi9wYXRoIGdpdmVzIHBhdGggdG8gdW5pbnN0YWxsZWQgZnJhbWV3b3JrcywgZ2NjIG9uIGRhcndpbgorLSAgICAgICMgLXAsIC1wZywgLS1jb3ZlcmFnZSwgLWZwcm9maWxlLSogcGFzcyB0aHJvdWdoIHByb2ZpbGluZyBmbGFnIGZvciBHQ0MKKy0gICAgICAjIEBmaWxlIEdDQyByZXNwb25zZSBmaWxlcworLSAgICAgICMgLXRwPSogUG9ydGxhbmQgcGdjYyB0YXJnZXQgcHJvY2Vzc29yIHNlbGVjdGlvbgorKyAgICAgICMgRmxhZ3MgdG8gYmUgcGFzc2VkIHRocm91Z2ggdW5jaGFuZ2VkLCB3aXRoIHJhdGlvbmFsZToKKysgICAgICAjIC02NCwgLW1pcHNbMC05XSAgICAgIGVuYWJsZSA2NC1iaXQgbW9kZSBmb3IgdGhlIFNHSSBjb21waWxlcgorKyAgICAgICMgLXJbMC05XVswLTldKiAgICAgICAgc3BlY2lmeSBwcm9jZXNzb3IgZm9yIHRoZSBTR0kgY29tcGlsZXIKKysgICAgICAjIC14YXJjaD0qLCAteHRhcmdldD0qIGVuYWJsZSA2NC1iaXQgbW9kZSBmb3IgdGhlIFN1biBjb21waWxlcgorKyAgICAgICMgK0RBKiwgK0REKiAgICAgICAgICAgZW5hYmxlIDY0LWJpdCBtb2RlIGZvciB0aGUgSFAgY29tcGlsZXIKKysgICAgICAjIC1xKiAgICAgICAgICAgICAgICAgIGNvbXBpbGVyIGFyZ3MgZm9yIHRoZSBJQk0gY29tcGlsZXIKKysgICAgICAjIC1tKiwgLXRbNDVdKiwgLXR4c2NhbGUqIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBmbGFncyBmb3IgR0NDCisrICAgICAgIyAtRi9wYXRoICAgICAgICAgICAgICBwYXRoIHRvIHVuaW5zdGFsbGVkIGZyYW1ld29ya3MsIGdjYyBvbiBkYXJ3aW4KKysgICAgICAjIC1wLCAtcGcsIC0tY292ZXJhZ2UsIC1mcHJvZmlsZS0qICBwcm9maWxpbmcgZmxhZ3MgZm9yIEdDQworKyAgICAgICMgQGZpbGUgICAgICAgICAgICAgICAgR0NDIHJlc3BvbnNlIGZpbGVzCisrICAgICAgIyAtdHA9KiAgICAgICAgICAgICAgICBQb3J0bGFuZCBwZ2NjIHRhcmdldCBwcm9jZXNzb3Igc2VsZWN0aW9uCisrICAgICAgIyAtLXN5c3Jvb3Q9KiAgICAgICAgICBmb3Igc3lzcm9vdCBzdXBwb3J0CisrICAgICAgIyAtTyosIC1mbHRvKiwgLWZ3aG9wciosIC1mdXNlLWxpbmtlci1wbHVnaW4gR0NDIGxpbmstdGltZSBvcHRpbWl6YXRpb24KKyAgICAgICAtNjR8LW1pcHNbMC05XXwtclswLTldWzAtOV0qfC14YXJjaD0qfC14dGFyZ2V0PSp8K0RBKnwrREQqfC1xKnwtbSp8IFwKKy0gICAgICAtdFs0NV0qfC10eHNjYWxlKnwtcHwtcGd8LS1jb3ZlcmFnZXwtZnByb2ZpbGUtKnwtRip8QCp8LXRwPSopCisrICAgICAgLXRbNDVdKnwtdHhzY2FsZSp8LXB8LXBnfC0tY292ZXJhZ2V8LWZwcm9maWxlLSp8LUYqfEAqfC10cD0qfC0tc3lzcm9vdD0qfCBcCisrICAgICAgLU8qfC1mbHRvKnwtZndob3ByKnwtZnVzZS1saW5rZXItcGx1Z2luKQorICAgICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKKyAJYXJnPSIkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisgICAgICAgICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkYXJnIgorICAgICAgICAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRhcmciCistICAgICAgICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRhcmciCisrICAgICAgICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRhcmciCisgICAgICAgICBjb250aW51ZQorICAgICAgICAgOzsKKyAKK0BAIC00OTk3LDcgKzU4NjQsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAorICAgICAgICouJG9iamV4dCkKKyAJIyBBIHN0YW5kYXJkIG9iamVjdC4KKy0Jb2Jqcz0iJG9ianMgJGFyZyIKKysJZnVuY19hcHBlbmQgb2JqcyAiICRhcmciCisgCTs7CisgCisgICAgICAgKi5sbykKK0BAIC01MDI4LDcgKzU4OTUsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAorIAkgICAgaWYgdGVzdCAiJHByZXYiID0gZGxmaWxlczsgdGhlbgorIAkgICAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IHllcyAmJiB0ZXN0ICIkZGxvcGVuX3N1cHBvcnQiID0geWVzOyB0aGVuCistCQlkbGZpbGVzPSIkZGxmaWxlcyAkcGljX29iamVjdCIKKysJCWZ1bmNfYXBwZW5kIGRsZmlsZXMgIiAkcGljX29iamVjdCIKKyAJCXByZXY9CisgCQljb250aW51ZQorIAkgICAgICBlbHNlCitAQCAtNTA0MCw3ICs1OTA3LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgICMgQ0hFQ0sgTUU6ICBJIHRoaW5rIEkgYnVzdGVkIHRoaXMuICAtT3NzYW1hCisgCSAgICBpZiB0ZXN0ICIkcHJldiIgPSBkbHByZWZpbGVzOyB0aGVuCisgCSAgICAgICMgUHJlbG9hZCB0aGUgb2xkLXN0eWxlIG9iamVjdC4KKy0JICAgICAgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJHBpY19vYmplY3QiCisrCSAgICAgIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkcGljX29iamVjdCIKKyAJICAgICAgcHJldj0KKyAJICAgIGZpCisgCitAQCAtNTA4NSwyNCArNTk1MiwyNSBAQCBmdW5jX21vZGVfbGluayAoKQorIAorICAgICAgICouJGxpYmV4dCkKKyAJIyBBbiBhcmNoaXZlLgorLQlkZXBsaWJzPSIkZGVwbGlicyAkYXJnIgorLQlvbGRfZGVwbGlicz0iJG9sZF9kZXBsaWJzICRhcmciCisrCWZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkYXJnIgorKwlmdW5jX2FwcGVuZCBvbGRfZGVwbGlicyAiICRhcmciCisgCWNvbnRpbnVlCisgCTs7CisgCisgICAgICAgKi5sYSkKKyAJIyBBIGxpYnRvb2wtY29udHJvbGxlZCBsaWJyYXJ5LgorIAorKwlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGFyZyIKKyAJaWYgdGVzdCAiJHByZXYiID0gZGxmaWxlczsgdGhlbgorIAkgICMgVGhpcyBsaWJyYXJ5IHdhcyBzcGVjaWZpZWQgd2l0aCAtZGxvcGVuLgorLQkgIGRsZmlsZXM9IiRkbGZpbGVzICRhcmciCisrCSAgZnVuY19hcHBlbmQgZGxmaWxlcyAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCisgCSAgcHJldj0KKyAJZWxpZiB0ZXN0ICIkcHJldiIgPSBkbHByZWZpbGVzOyB0aGVuCisgCSAgIyBUaGUgbGlicmFyeSB3YXMgc3BlY2lmaWVkIHdpdGggLWRscHJlb3Blbi4KKy0JICBkbHByZWZpbGVzPSIkZGxwcmVmaWxlcyAkYXJnIgorKwkgIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgorIAkgIHByZXY9CisgCWVsc2UKKy0JICBkZXBsaWJzPSIkZGVwbGlicyAkYXJnIgorKwkgIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgorIAlmaQorIAljb250aW51ZQorIAk7OworQEAgLTUxMjcsNyArNTk5NSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgICAgICAgZnVuY19mYXRhbF9oZWxwICJ0aGUgXGAkcHJldmFyZycgb3B0aW9uIHJlcXVpcmVzIGFuIGFyZ3VtZW50IgorIAorICAgICBpZiB0ZXN0ICIkZXhwb3J0X2R5bmFtaWMiID0geWVzICYmIHRlc3QgLW4gIiRleHBvcnRfZHluYW1pY19mbGFnX3NwZWMiOyB0aGVuCistICAgICAgZXZhbCAiYXJnPVwiJGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY1wiIgorKyAgICAgIGV2YWwgYXJnPVwiJGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY1wiCisgICAgICAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJGFyZyIKKyAgICAgICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJGFyZyIKKyAgICAgZmkKK0BAIC01MTQ0LDExICs2MDEyLDEzIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgICAgIGVsc2UKKyAgICAgICBzaGxpYl9zZWFyY2hfcGF0aD0KKyAgICAgZmkKKy0gICAgZXZhbCAic3lzX2xpYl9zZWFyY2hfcGF0aD1cIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWNcIiIKKy0gICAgZXZhbCAic3lzX2xpYl9kbHNlYXJjaF9wYXRoPVwiJHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjXCIiCisrICAgIGV2YWwgc3lzX2xpYl9zZWFyY2hfcGF0aD1cIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWNcIgorKyAgICBldmFsIHN5c19saWJfZGxzZWFyY2hfcGF0aD1cIiRzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlY1wiCisgCisgICAgIGZ1bmNfZGlybmFtZSAiJG91dHB1dCIgIi8iICIiCisgICAgIG91dHB1dF9vYmpkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JG9iamRpciIKKysgICAgZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXRfb2JqZGlyLyIKKysgICAgdG9vbF9vdXRwdXRfb2JqZGlyPSRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQKKyAgICAgIyBDcmVhdGUgdGhlIG9iamVjdCBkaXJlY3RvcnkuCisgICAgIGZ1bmNfbWtkaXJfcCAiJG91dHB1dF9vYmpkaXIiCisgCitAQCAtNTE2OSwxMiArNjAzOSwxMiBAQCBmdW5jX21vZGVfbGluayAoKQorICAgICAjIEZpbmQgYWxsIGludGVyZGVwZW5kZW50IGRlcGxpYnMgYnkgc2VhcmNoaW5nIGZvciBsaWJyYXJpZXMKKyAgICAgIyB0aGF0IGFyZSBsaW5rZWQgbW9yZSB0aGFuIG9uY2UgKGUuZy4gLWxhIC1sYiAtbGEpCisgICAgIGZvciBkZXBsaWIgaW4gJGRlcGxpYnM7IGRvCistICAgICAgaWYgJG9wdF9kdXBsaWNhdGVfZGVwcyA7IHRoZW4KKysgICAgICBpZiAkb3B0X3ByZXNlcnZlX2R1cF9kZXBzIDsgdGhlbgorIAljYXNlICIkbGlicyAiIGluCistCSoiICRkZXBsaWIgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJGRlcGxpYiIgOzsKKysJKiIgJGRlcGxpYiAiKikgZnVuY19hcHBlbmQgc3BlY2lhbGRlcGxpYnMgIiAkZGVwbGliIiA7OworIAllc2FjCisgICAgICAgZmkKKy0gICAgICBsaWJzPSIkbGlicyAkZGVwbGliIgorKyAgICAgIGZ1bmNfYXBwZW5kIGxpYnMgIiAkZGVwbGliIgorICAgICBkb25lCisgCisgICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBsaWI7IHRoZW4KK0BAIC01MTg3LDkgKzYwNTcsOSBAQCBmdW5jX21vZGVfbGluayAoKQorICAgICAgIGlmICRvcHRfZHVwbGljYXRlX2NvbXBpbGVyX2dlbmVyYXRlZF9kZXBzOyB0aGVuCisgCWZvciBwcmVfcG9zdF9kZXAgaW4gJHByZWRlcHMgJHBvc3RkZXBzOyBkbworIAkgIGNhc2UgIiRwcmVfcG9zdF9kZXBzICIgaW4KKy0JICAqIiAkcHJlX3Bvc3RfZGVwICIqKSBzcGVjaWFsZGVwbGlicz0iJHNwZWNpYWxkZXBsaWJzICRwcmVfcG9zdF9kZXBzIiA7OworKwkgICoiICRwcmVfcG9zdF9kZXAgIiopIGZ1bmNfYXBwZW5kIHNwZWNpYWxkZXBsaWJzICIgJHByZV9wb3N0X2RlcHMiIDs7CisgCSAgZXNhYworLQkgIHByZV9wb3N0X2RlcHM9IiRwcmVfcG9zdF9kZXBzICRwcmVfcG9zdF9kZXAiCisrCSAgZnVuY19hcHBlbmQgcHJlX3Bvc3RfZGVwcyAiICRwcmVfcG9zdF9kZXAiCisgCWRvbmUKKyAgICAgICBmaQorICAgICAgIHByZV9wb3N0X2RlcHM9CitAQCAtNTI1Niw4ICs2MTI2LDkgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJZm9yIGxpYiBpbiAkZGxwcmVmaWxlczsgZG8KKyAJICAjIElnbm9yZSBub24tbGlidG9vbC1saWJzCisgCSAgZGVwZW5kZW5jeV9saWJzPQorKwkgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkbGliIgorIAkgIGNhc2UgJGxpYiBpbgorLQkgICoubGEpCWZ1bmNfc291cmNlICIkbGliIiA7OworKwkgICoubGEpCWZ1bmNfc291cmNlICIkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IiA7OworIAkgIGVzYWMKKyAKKyAJICAjIENvbGxlY3QgcHJlb3BlbmVkIGxpYnRvb2wgZGVwbGlicywgZXhjZXB0IGFueSB0aGlzIGxpYnJhcnkKK0BAIC01MjY3LDcgKzYxMzgsNyBAQCBmdW5jX21vZGVfbGluayAoKQorICAgICAgICAgICAgIGRlcGxpYl9iYXNlPSRmdW5jX2Jhc2VuYW1lX3Jlc3VsdAorIAkgICAgY2FzZSAiICR3ZWFrX2xpYnMgIiBpbgorIAkgICAgKiIgJGRlcGxpYl9iYXNlICIqKSA7OworLQkgICAgKikgZGVwbGlicz0iJGRlcGxpYnMgJGRlcGxpYiIgOzsKKysJICAgICopIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkZGVwbGliIiA7OworIAkgICAgZXNhYworIAkgIGRvbmUKKyAJZG9uZQorQEAgLTUyODgsMTEgKzYxNTksMTEgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgIGNvbXBpbGVfZGVwbGlicz0iJGRlcGxpYiAkY29tcGlsZV9kZXBsaWJzIgorIAkgICAgZmluYWxpemVfZGVwbGlicz0iJGRlcGxpYiAkZmluYWxpemVfZGVwbGlicyIKKyAJICBlbHNlCistCSAgICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWIiCisrCSAgICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRkZXBsaWIiCisgCSAgICBpZiB0ZXN0ICIkbGlua21vZGUiID0gbGliIDsgdGhlbgorIAkJY2FzZSAiJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgaW4KKyAJCSAgICAqIiAkZGVwbGliICIqKSA7OworLQkJICAgICogKSBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz0iJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICRkZXBsaWIiIDs7CisrCQkgICAgKiApIGZ1bmNfYXBwZW5kIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgJGRlcGxpYiIgOzsKKyAJCWVzYWMKKyAJICAgIGZpCisgCSAgZmkKK0BAIC01Mzc3LDcgKzYyNDgsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IGxpYiA7IHRoZW4KKyAJCWNhc2UgIiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiIGluCisgCQkgICAgKiIgJGRlcGxpYiAiKikgOzsKKy0JCSAgICAqICkgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3M9IiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAkZGVwbGliIiA7OworKwkJICAgICogKSBmdW5jX2FwcGVuZCBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiICRkZXBsaWIiIDs7CisgCQllc2FjCisgCSAgICBmaQorIAkgIGZpCitAQCAtNTM5MCw3ICs2MjYxLDggQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgIHRlc3QgIiRwYXNzIiA9IGNvbnYgJiYgY29udGludWUKKyAJICAgIG5ld2RlcGVuZGVuY3lfbGlicz0iJGRlcGxpYiAkbmV3ZGVwZW5kZW5jeV9saWJzIgorIAkgICAgZnVuY19zdHJpcG5hbWUgJy1MJyAnJyAiJGRlcGxpYiIKKy0JICAgIG5ld2xpYl9zZWFyY2hfcGF0aD0iJG5ld2xpYl9zZWFyY2hfcGF0aCAkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorKwkgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisrCSAgICBmdW5jX2FwcGVuZCBuZXdsaWJfc2VhcmNoX3BhdGggIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgorIAkgICAgOzsKKyAJICBwcm9nKQorIAkgICAgaWYgdGVzdCAiJHBhc3MiID0gY29udjsgdGhlbgorQEAgLTU0MDQsNyArNjI3Niw4IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICAgIGZpbmFsaXplX2RlcGxpYnM9IiRkZXBsaWIgJGZpbmFsaXplX2RlcGxpYnMiCisgCSAgICBmaQorIAkgICAgZnVuY19zdHJpcG5hbWUgJy1MJyAnJyAiJGRlcGxpYiIKKy0JICAgIG5ld2xpYl9zZWFyY2hfcGF0aD0iJG5ld2xpYl9zZWFyY2hfcGF0aCAkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorKwkgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisrCSAgICBmdW5jX2FwcGVuZCBuZXdsaWJfc2VhcmNoX3BhdGggIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgorIAkgICAgOzsKKyAJICAqKQorIAkgICAgZnVuY193YXJuaW5nICJcYC1MJyBpcyBpZ25vcmVkIGZvciBhcmNoaXZlcy9vYmplY3RzIgorQEAgLTU0MTUsMTcgKzYyODgsMjEgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJLVIqKQorIAkgIGlmIHRlc3QgIiRwYXNzIiA9IGxpbms7IHRoZW4KKyAJICAgIGZ1bmNfc3RyaXBuYW1lICctUicgJycgIiRkZXBsaWIiCistCSAgICBkaXI9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorKwkgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisrCSAgICBkaXI9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAorIAkgICAgIyBNYWtlIHN1cmUgdGhlIHhycGF0aCBjb250YWlucyBvbmx5IHVuaXF1ZSBkaXJlY3Rvcmllcy4KKyAJICAgIGNhc2UgIiR4cnBhdGggIiBpbgorIAkgICAgKiIgJGRpciAiKikgOzsKKy0JICAgICopIHhycGF0aD0iJHhycGF0aCAkZGlyIiA7OworKwkgICAgKikgZnVuY19hcHBlbmQgeHJwYXRoICIgJGRpciIgOzsKKyAJICAgIGVzYWMKKyAJICBmaQorIAkgIGRlcGxpYnM9IiRkZXBsaWIgJGRlcGxpYnMiCisgCSAgY29udGludWUKKyAJICA7OworLQkqLmxhKSBsaWI9IiRkZXBsaWIiIDs7CisrCSoubGEpCisrCSAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRkZXBsaWIiCisrCSAgbGliPSRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKKysJICA7OworIAkqLiRsaWJleHQpCisgCSAgaWYgdGVzdCAiJHBhc3MiID0gY29udjsgdGhlbgorIAkgICAgZGVwbGlicz0iJGRlcGxpYiAkZGVwbGlicyIKK0BAIC01NDg4LDExICs2MzY1LDExIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICBpZiB0ZXN0ICIkcGFzcyIgPSBkbHByZW9wZW4gfHwgdGVzdCAiJGRsb3Blbl9zdXBwb3J0IiAhPSB5ZXMgfHwgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSBubzsgdGhlbgorIAkgICAgICAjIElmIHRoZXJlIGlzIG5vIGRsb3BlbiBzdXBwb3J0IG9yIHdlJ3JlIGxpbmtpbmcgc3RhdGljYWxseSwKKyAJICAgICAgIyB3ZSBuZWVkIHRvIHByZWxvYWQuCistCSAgICAgIG5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRkZXBsaWIiCisrCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkZGVwbGliIgorIAkgICAgICBjb21waWxlX2RlcGxpYnM9IiRkZXBsaWIgJGNvbXBpbGVfZGVwbGlicyIKKyAJICAgICAgZmluYWxpemVfZGVwbGlicz0iJGRlcGxpYiAkZmluYWxpemVfZGVwbGlicyIKKyAJICAgIGVsc2UKKy0JICAgICAgbmV3ZGxmaWxlcz0iJG5ld2RsZmlsZXMgJGRlcGxpYiIKKysJICAgICAgZnVuY19hcHBlbmQgbmV3ZGxmaWxlcyAiICRkZXBsaWIiCisgCSAgICBmaQorIAkgIGZpCisgCSAgY29udGludWUKK0BAIC01NTM4LDcgKzY0MTUsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgIGZvciB0bXBfaW5oZXJpdGVkX2xpbmtlcl9mbGFnIGluICR0bXBfaW5oZXJpdGVkX2xpbmtlcl9mbGFnczsgZG8KKyAJICAgIGNhc2UgIiAkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiBpbgorIAkgICAgICAqIiAkdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZyAiKikgOzsKKy0JICAgICAgKikgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3M9IiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAkdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZyI7OworKwkgICAgICAqKSBmdW5jX2FwcGVuZCBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiICR0bXBfaW5oZXJpdGVkX2xpbmtlcl9mbGFnIjs7CisgCSAgICBlc2FjCisgCSAgZG9uZQorIAlmaQorQEAgLTU1NDYsOCArNjQyMyw4IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCWlmIHRlc3QgIiRsaW5rbW9kZSwkcGFzcyIgPSAibGliLGxpbmsiIHx8CisgCSAgIHRlc3QgIiRsaW5rbW9kZSwkcGFzcyIgPSAicHJvZyxzY2FuIiB8fAorIAkgICB7IHRlc3QgIiRsaW5rbW9kZSIgIT0gcHJvZyAmJiB0ZXN0ICIkbGlua21vZGUiICE9IGxpYjsgfTsgdGhlbgorLQkgIHRlc3QgLW4gIiRkbG9wZW4iICYmIGRsZmlsZXM9IiRkbGZpbGVzICRkbG9wZW4iCistCSAgdGVzdCAtbiAiJGRscHJlb3BlbiIgJiYgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJGRscHJlb3BlbiIKKysJICB0ZXN0IC1uICIkZGxvcGVuIiAmJiBmdW5jX2FwcGVuZCBkbGZpbGVzICIgJGRsb3BlbiIKKysJICB0ZXN0IC1uICIkZGxwcmVvcGVuIiAmJiBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJGRscHJlb3BlbiIKKyAJZmkKKyAKKyAJaWYgdGVzdCAiJHBhc3MiID0gY29udjsgdGhlbgorQEAgLTU1NTgsMjAgKzY0MzUsMjAgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgICAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGZpbmQgbmFtZSBvZiBsaW5rIGxpYnJhcnkgZm9yIFxgJGxpYiciCisgCSAgICBmaQorIAkgICAgIyBJdCBpcyBhIGxpYnRvb2wgY29udmVuaWVuY2UgbGlicmFyeSwgc28gYWRkIGluIGl0cyBvYmplY3RzLgorLQkgICAgY29udmVuaWVuY2U9IiRjb252ZW5pZW5jZSAkbGFkaXIvJG9iamRpci8kb2xkX2xpYnJhcnkiCistCSAgICBvbGRfY29udmVuaWVuY2U9IiRvbGRfY29udmVuaWVuY2UgJGxhZGlyLyRvYmpkaXIvJG9sZF9saWJyYXJ5IgorKwkgICAgZnVuY19hcHBlbmQgY29udmVuaWVuY2UgIiAkbGFkaXIvJG9iamRpci8kb2xkX2xpYnJhcnkiCisrCSAgICBmdW5jX2FwcGVuZCBvbGRfY29udmVuaWVuY2UgIiAkbGFkaXIvJG9iamRpci8kb2xkX2xpYnJhcnkiCisgCSAgZWxpZiB0ZXN0ICIkbGlua21vZGUiICE9IHByb2cgJiYgdGVzdCAiJGxpbmttb2RlIiAhPSBsaWI7IHRoZW4KKyAJICAgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJGxpYicgaXMgbm90IGEgY29udmVuaWVuY2UgbGlicmFyeSIKKyAJICBmaQorIAkgIHRtcF9saWJzPQorIAkgIGZvciBkZXBsaWIgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KKyAJICAgIGRlcGxpYnM9IiRkZXBsaWIgJGRlcGxpYnMiCistCSAgICBpZiAkb3B0X2R1cGxpY2F0ZV9kZXBzIDsgdGhlbgorKwkgICAgaWYgJG9wdF9wcmVzZXJ2ZV9kdXBfZGVwcyA7IHRoZW4KKyAJICAgICAgY2FzZSAiJHRtcF9saWJzICIgaW4KKy0JICAgICAgKiIgJGRlcGxpYiAiKikgc3BlY2lhbGRlcGxpYnM9IiRzcGVjaWFsZGVwbGlicyAkZGVwbGliIiA7OworKwkgICAgICAqIiAkZGVwbGliICIqKSBmdW5jX2FwcGVuZCBzcGVjaWFsZGVwbGlicyAiICRkZXBsaWIiIDs7CisgCSAgICAgIGVzYWMKKyAJICAgIGZpCistCSAgICB0bXBfbGlicz0iJHRtcF9saWJzICRkZXBsaWIiCisrCSAgICBmdW5jX2FwcGVuZCB0bXBfbGlicyAiICRkZXBsaWIiCisgCSAgZG9uZQorIAkgIGNvbnRpbnVlCisgCWZpICMgJHBhc3MgPSBjb252CitAQCAtNTU3OSw5ICs2NDU2LDE1IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCisgCSMgR2V0IHRoZSBuYW1lIG9mIHRoZSBsaWJyYXJ5IHdlIGxpbmsgYWdhaW5zdC4KKyAJbGlua2xpYj0KKy0JZm9yIGwgaW4gJG9sZF9saWJyYXJ5ICRsaWJyYXJ5X25hbWVzOyBkbworLQkgIGxpbmtsaWI9IiRsIgorLQlkb25lCisrCWlmIHRlc3QgLW4gIiRvbGRfbGlicmFyeSIgJiYKKysJICAgeyB0ZXN0ICIkcHJlZmVyX3N0YXRpY19saWJzIiA9IHllcyB8fAorKwkgICAgIHRlc3QgIiRwcmVmZXJfc3RhdGljX2xpYnMsJGluc3RhbGxlZCIgPSAiYnVpbHQsbm8iOyB9OyB0aGVuCisrCSAgbGlua2xpYj0kb2xkX2xpYnJhcnkKKysJZWxzZQorKwkgIGZvciBsIGluICRvbGRfbGlicmFyeSAkbGlicmFyeV9uYW1lczsgZG8KKysJICAgIGxpbmtsaWI9IiRsIgorKwkgIGRvbmUKKysJZmkKKyAJaWYgdGVzdCAteiAiJGxpbmtsaWIiOyB0aGVuCisgCSAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGZpbmQgbmFtZSBvZiBsaW5rIGxpYnJhcnkgZm9yIFxgJGxpYiciCisgCWZpCitAQCAtNTU5OCw5ICs2NDgxLDkgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgICMgc3RhdGljYWxseSwgd2UgbmVlZCB0byBwcmVsb2FkLiAgV2UgYWxzbyBuZWVkIHRvIHByZWxvYWQgYW55CisgCSAgICAjIGRlcGVuZGVudCBsaWJyYXJpZXMgc28gbGlibHRkbCdzIGRlcGxpYiBwcmVsb2FkZXIgZG9lc24ndAorIAkgICAgIyBib21iIG91dCBpbiB0aGUgbG9hZCBkZXBsaWJzIHBoYXNlLgorLQkgICAgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJGxpYiAkZGVwZW5kZW5jeV9saWJzIgorKwkgICAgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRsaWIgJGRlcGVuZGVuY3lfbGlicyIKKyAJICBlbHNlCistCSAgICBuZXdkbGZpbGVzPSIkbmV3ZGxmaWxlcyAkbGliIgorKwkgICAgZnVuY19hcHBlbmQgbmV3ZGxmaWxlcyAiICRsaWIiCisgCSAgZmkKKyAJICBjb250aW51ZQorIAlmaSAjICRwYXNzID0gZGxvcGVuCitAQCAtNTYyMiwxNCArNjUwNSwxNCBAQCBmdW5jX21vZGVfbGluayAoKQorIAorIAkjIEZpbmQgdGhlIHJlbGV2YW50IG9iamVjdCBkaXJlY3RvcnkgYW5kIGxpYnJhcnkgbmFtZS4KKyAJaWYgdGVzdCAiWCRpbnN0YWxsZWQiID0gWHllczsgdGhlbgorLQkgIGlmIHRlc3QgISAtZiAiJGxpYmRpci8kbGlua2xpYiIgJiYgdGVzdCAtZiAiJGFic19sYWRpci8kbGlua2xpYiI7IHRoZW4KKysJICBpZiB0ZXN0ICEgLWYgIiRsdF9zeXNyb290JGxpYmRpci8kbGlua2xpYiIgJiYgdGVzdCAtZiAiJGFic19sYWRpci8kbGlua2xpYiI7IHRoZW4KKyAJICAgIGZ1bmNfd2FybmluZyAibGlicmFyeSBcYCRsaWInIHdhcyBtb3ZlZC4iCisgCSAgICBkaXI9IiRsYWRpciIKKyAJICAgIGFic2Rpcj0iJGFic19sYWRpciIKKyAJICAgIGxpYmRpcj0iJGFic19sYWRpciIKKyAJICBlbHNlCistCSAgICBkaXI9IiRsaWJkaXIiCistCSAgICBhYnNkaXI9IiRsaWJkaXIiCisrCSAgICBkaXI9IiRsdF9zeXNyb290JGxpYmRpciIKKysJICAgIGFic2Rpcj0iJGx0X3N5c3Jvb3QkbGliZGlyIgorIAkgIGZpCisgCSAgdGVzdCAiWCRoYXJkY29kZV9hdXRvbWF0aWMiID0gWHllcyAmJiBhdm9pZHRlbXBycGF0aD15ZXMKKyAJZWxzZQorQEAgLTU2MzcsMTIgKzY1MjAsMTIgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgIGRpcj0iJGxhZGlyIgorIAkgICAgYWJzZGlyPSIkYWJzX2xhZGlyIgorIAkgICAgIyBSZW1vdmUgdGhpcyBzZWFyY2ggcGF0aCBsYXRlcgorLQkgICAgbm90aW5zdF9wYXRoPSIkbm90aW5zdF9wYXRoICRhYnNfbGFkaXIiCisrCSAgICBmdW5jX2FwcGVuZCBub3RpbnN0X3BhdGggIiAkYWJzX2xhZGlyIgorIAkgIGVsc2UKKyAJICAgIGRpcj0iJGxhZGlyLyRvYmpkaXIiCisgCSAgICBhYnNkaXI9IiRhYnNfbGFkaXIvJG9iamRpciIKKyAJICAgICMgUmVtb3ZlIHRoaXMgc2VhcmNoIHBhdGggbGF0ZXIKKy0JICAgIG5vdGluc3RfcGF0aD0iJG5vdGluc3RfcGF0aCAkYWJzX2xhZGlyIgorKwkgICAgZnVuY19hcHBlbmQgbm90aW5zdF9wYXRoICIgJGFic19sYWRpciIKKyAJICBmaQorIAlmaSAjICRpbnN0YWxsZWQgPSB5ZXMKKyAJZnVuY19zdHJpcG5hbWUgJ2xpYicgJy5sYScgIiRsYW5hbWUiCitAQCAtNTY1MywyMCArNjUzNiw0NiBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgIGlmIHRlc3QgLXogIiRsaWJkaXIiICYmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nOyB0aGVuCisgCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJvbmx5IGxpYnJhcmllcyBtYXkgLWRscHJlb3BlbiBhIGNvbnZlbmllbmNlIGxpYnJhcnk6IFxgJGxpYiciCisgCSAgZmkKKy0JICAjIFByZWZlciB1c2luZyBhIHN0YXRpYyBsaWJyYXJ5IChzbyB0aGF0IG5vIHNpbGx5IF9EWU5BTUlDIHN5bWJvbHMKKy0JICAjIGFyZSByZXF1aXJlZCB0byBsaW5rKS4KKy0JICBpZiB0ZXN0IC1uICIkb2xkX2xpYnJhcnkiOyB0aGVuCistCSAgICBuZXdkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyAkZGlyLyRvbGRfbGlicmFyeSIKKy0JICAgICMgS2VlcCBhIGxpc3Qgb2YgcHJlb3BlbmVkIGNvbnZlbmllbmNlIGxpYnJhcmllcyB0byBjaGVjaworLQkgICAgIyB0aGF0IHRoZXkgYXJlIGJlaW5nIHVzZWQgY29ycmVjdGx5IGluIHRoZSBsaW5rIHBhc3MuCistCSAgICB0ZXN0IC16ICIkbGliZGlyIiAmJiBcCistCQlkbHByZWNvbnZlbmllbmNlbGlicz0iJGRscHJlY29udmVuaWVuY2VsaWJzICRkaXIvJG9sZF9saWJyYXJ5IgorLQkgICMgT3RoZXJ3aXNlLCB1c2UgdGhlIGRsbmFtZSwgc28gdGhhdCBsdF9kbG9wZW4gZmluZHMgaXQuCistCSAgZWxpZiB0ZXN0IC1uICIkZGxuYW1lIjsgdGhlbgorLQkgICAgbmV3ZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMgJGRpci8kZGxuYW1lIgorLQkgIGVsc2UKKy0JICAgIG5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRkaXIvJGxpbmtsaWIiCistCSAgZmkKKysJICBjYXNlICIkaG9zdCIgaW4KKysJICAgICMgc3BlY2lhbCBoYW5kbGluZyBmb3IgcGxhdGZvcm1zIHdpdGggUEUtRExMcy4KKysJICAgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpjZWdjYyogKQorKwkgICAgICAjIExpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgbGluayBhZ2FpbnN0IHNoYXJlZCBsaWJyYXJ5IGlmIGJvdGgKKysJICAgICAgIyBzdGF0aWMgYW5kIHNoYXJlZCBhcmUgcHJlc2VudC4gIFRoZXJlZm9yZSwgZW5zdXJlIHdlIGV4dHJhY3QKKysJICAgICAgIyBzeW1ib2xzIGZyb20gdGhlIGltcG9ydCBsaWJyYXJ5IGlmIGEgc2hhcmVkIGxpYnJhcnkgaXMgcHJlc2VudAorKwkgICAgICAjIChvdGhlcndpc2UsIHRoZSBkbG9wZW4gbW9kdWxlIG5hbWUgd2lsbCBiZSBpbmNvcnJlY3QpLiAgV2UgZG8KKysJICAgICAgIyB0aGlzIGJ5IHB1dHRpbmcgdGhlIGltcG9ydCBsaWJyYXJ5IG5hbWUgaW50byAkbmV3ZGxwcmVmaWxlcy4KKysJICAgICAgIyBXZSByZWNvdmVyIHRoZSBkbG9wZW4gbW9kdWxlIG5hbWUgYnkgJ3NhdmluZycgdGhlIGxhIGZpbGUKKysJICAgICAgIyBuYW1lIGluIGEgc3BlY2lhbCBwdXJwb3NlIHZhcmlhYmxlLCBhbmQgKGxhdGVyKSBleHRyYWN0aW5nIHRoZQorKwkgICAgICAjIGRsbmFtZSBmcm9tIHRoZSBsYSBmaWxlLgorKwkgICAgICBpZiB0ZXN0IC1uICIkZGxuYW1lIjsgdGhlbgorKwkgICAgICAgIGZ1bmNfdHJfc2ggIiRkaXIvJGxpbmtsaWIiCisrCSAgICAgICAgZXZhbCAibGliZmlsZV8kZnVuY190cl9zaF9yZXN1bHQ9XCRhYnNfbGFkaXIvXCRsYW5hbWUiCisrCSAgICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRkaXIvJGxpbmtsaWIiCisrCSAgICAgIGVsc2UKKysJICAgICAgICBmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJGRpci8kb2xkX2xpYnJhcnkiCisrCSAgICAgICAgIyBLZWVwIGEgbGlzdCBvZiBwcmVvcGVuZWQgY29udmVuaWVuY2UgbGlicmFyaWVzIHRvIGNoZWNrCisrCSAgICAgICAgIyB0aGF0IHRoZXkgYXJlIGJlaW5nIHVzZWQgY29ycmVjdGx5IGluIHRoZSBsaW5rIHBhc3MuCisrCSAgICAgICAgdGVzdCAteiAiJGxpYmRpciIgJiYgXAorKwkgICAgICAgICAgZnVuY19hcHBlbmQgZGxwcmVjb252ZW5pZW5jZWxpYnMgIiAkZGlyLyRvbGRfbGlicmFyeSIKKysJICAgICAgZmkKKysJICAgIDs7CisrCSAgICAqICkKKysJICAgICAgIyBQcmVmZXIgdXNpbmcgYSBzdGF0aWMgbGlicmFyeSAoc28gdGhhdCBubyBzaWxseSBfRFlOQU1JQyBzeW1ib2xzCisrCSAgICAgICMgYXJlIHJlcXVpcmVkIHRvIGxpbmspLgorKwkgICAgICBpZiB0ZXN0IC1uICIkb2xkX2xpYnJhcnkiOyB0aGVuCisrCSAgICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRkaXIvJG9sZF9saWJyYXJ5IgorKwkgICAgICAgICMgS2VlcCBhIGxpc3Qgb2YgcHJlb3BlbmVkIGNvbnZlbmllbmNlIGxpYnJhcmllcyB0byBjaGVjaworKwkgICAgICAgICMgdGhhdCB0aGV5IGFyZSBiZWluZyB1c2VkIGNvcnJlY3RseSBpbiB0aGUgbGluayBwYXNzLgorKwkgICAgICAgIHRlc3QgLXogIiRsaWJkaXIiICYmIFwKKysJICAgICAgICAgIGZ1bmNfYXBwZW5kIGRscHJlY29udmVuaWVuY2VsaWJzICIgJGRpci8kb2xkX2xpYnJhcnkiCisrCSAgICAgICMgT3RoZXJ3aXNlLCB1c2UgdGhlIGRsbmFtZSwgc28gdGhhdCBsdF9kbG9wZW4gZmluZHMgaXQuCisrCSAgICAgIGVsaWYgdGVzdCAtbiAiJGRsbmFtZSI7IHRoZW4KKysJICAgICAgICBmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJGRpci8kZGxuYW1lIgorKwkgICAgICBlbHNlCisrCSAgICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRkaXIvJGxpbmtsaWIiCisrCSAgICAgIGZpCisrCSAgICA7OworKwkgIGVzYWMKKyAJZmkgIyAkcGFzcyA9IGRscHJlb3BlbgorIAorIAlpZiB0ZXN0IC16ICIkbGliZGlyIjsgdGhlbgorQEAgLTU2ODQsNyArNjU5Myw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCisgCisgCWlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nICYmIHRlc3QgIiRwYXNzIiAhPSBsaW5rOyB0aGVuCistCSAgbmV3bGliX3NlYXJjaF9wYXRoPSIkbmV3bGliX3NlYXJjaF9wYXRoICRsYWRpciIKKysJICBmdW5jX2FwcGVuZCBuZXdsaWJfc2VhcmNoX3BhdGggIiAkbGFkaXIiCisgCSAgZGVwbGlicz0iJGxpYiAkZGVwbGlicyIKKyAKKyAJICBsaW5rYWxsZGVwbGlicz1ubworQEAgLTU2OTcsNyArNjYwNiw4IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgZm9yIGRlcGxpYiBpbiAkZGVwZW5kZW5jeV9saWJzOyBkbworIAkgICAgY2FzZSAkZGVwbGliIGluCisgCSAgICAtTCopIGZ1bmNfc3RyaXBuYW1lICctTCcgJycgIiRkZXBsaWIiCistCSAgICAgICAgIG5ld2xpYl9zZWFyY2hfcGF0aD0iJG5ld2xpYl9zZWFyY2hfcGF0aCAkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorKwkgICAgICAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKysJICAgICAgICAgZnVuY19hcHBlbmQgbmV3bGliX3NlYXJjaF9wYXRoICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKKyAJCSA7OworIAkgICAgZXNhYworIAkgICAgIyBOZWVkIHRvIGxpbmsgYWdhaW5zdCBhbGwgZGVwZW5kZW5jeV9saWJzPworQEAgLTU3MDgsMTIgKzY2MTgsMTIgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgICAgIyBvci9hbmQgbGluayBhZ2FpbnN0IHN0YXRpYyBsaWJyYXJpZXMKKyAJICAgICAgbmV3ZGVwZW5kZW5jeV9saWJzPSIkZGVwbGliICRuZXdkZXBlbmRlbmN5X2xpYnMiCisgCSAgICBmaQorLQkgICAgaWYgJG9wdF9kdXBsaWNhdGVfZGVwcyA7IHRoZW4KKysJICAgIGlmICRvcHRfcHJlc2VydmVfZHVwX2RlcHMgOyB0aGVuCisgCSAgICAgIGNhc2UgIiR0bXBfbGlicyAiIGluCistCSAgICAgICoiICRkZXBsaWIgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJGRlcGxpYiIgOzsKKysJICAgICAgKiIgJGRlcGxpYiAiKikgZnVuY19hcHBlbmQgc3BlY2lhbGRlcGxpYnMgIiAkZGVwbGliIiA7OworIAkgICAgICBlc2FjCisgCSAgICBmaQorLQkgICAgdG1wX2xpYnM9IiR0bXBfbGlicyAkZGVwbGliIgorKwkgICAgZnVuY19hcHBlbmQgdG1wX2xpYnMgIiAkZGVwbGliIgorIAkgIGRvbmUgIyBmb3IgZGVwbGliCisgCSAgY29udGludWUKKyAJZmkgIyAkbGlua21vZGUgPSBwcm9nLi4uCitAQCAtNTcyOCw3ICs2NjM4LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgICAgIyBNYWtlIHN1cmUgdGhlIHJwYXRoIGNvbnRhaW5zIG9ubHkgdW5pcXVlIGRpcmVjdG9yaWVzLgorIAkgICAgICBjYXNlICIkdGVtcF9ycGF0aDoiIGluCisgCSAgICAgICoiJGFic2RpcjoiKikgOzsKKy0JICAgICAgKikgdGVtcF9ycGF0aD0iJHRlbXBfcnBhdGgkYWJzZGlyOiIgOzsKKysJICAgICAgKikgZnVuY19hcHBlbmQgdGVtcF9ycGF0aCAiJGFic2RpcjoiIDs7CisgCSAgICAgIGVzYWMKKyAJICAgIGZpCisgCitAQCAtNTc0MCw3ICs2NjUwLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgICopCisgCSAgICAgIGNhc2UgIiRjb21waWxlX3JwYXRoICIgaW4KKyAJICAgICAgKiIgJGFic2RpciAiKikgOzsKKy0JICAgICAgKikgY29tcGlsZV9ycGF0aD0iJGNvbXBpbGVfcnBhdGggJGFic2RpciIKKysJICAgICAgKikgZnVuY19hcHBlbmQgY29tcGlsZV9ycGF0aCAiICRhYnNkaXIiIDs7CisgCSAgICAgIGVzYWMKKyAJICAgICAgOzsKKyAJICAgIGVzYWMKK0BAIC01NzQ5LDcgKzY2NTksNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgKikKKyAJICAgICAgY2FzZSAiJGZpbmFsaXplX3JwYXRoICIgaW4KKyAJICAgICAgKiIgJGxpYmRpciAiKikgOzsKKy0JICAgICAgKikgZmluYWxpemVfcnBhdGg9IiRmaW5hbGl6ZV9ycGF0aCAkbGliZGlyIgorKwkgICAgICAqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9ycGF0aCAiICRsaWJkaXIiIDs7CisgCSAgICAgIGVzYWMKKyAJICAgICAgOzsKKyAJICAgIGVzYWMKK0BAIC01Nzc0LDEyICs2Njg0LDEyIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgY2FzZSAkaG9zdCBpbgorIAkgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpjZWdjYyopCisgCSAgICAgICMgTm8gcG9pbnQgaW4gcmVsaW5raW5nIERMTHMgYmVjYXVzZSBwYXRocyBhcmUgbm90IGVuY29kZWQKKy0JICAgICAgbm90aW5zdF9kZXBsaWJzPSIkbm90aW5zdF9kZXBsaWJzICRsaWIiCisrCSAgICAgIGZ1bmNfYXBwZW5kIG5vdGluc3RfZGVwbGlicyAiICRsaWIiCisgCSAgICAgIG5lZWRfcmVsaW5rPW5vCisgCSAgICA7OworIAkgICopCisgCSAgICBpZiB0ZXN0ICIkaW5zdGFsbGVkIiA9IG5vOyB0aGVuCistCSAgICAgIG5vdGluc3RfZGVwbGlicz0iJG5vdGluc3RfZGVwbGlicyAkbGliIgorKwkgICAgICBmdW5jX2FwcGVuZCBub3RpbnN0X2RlcGxpYnMgIiAkbGliIgorIAkgICAgICBuZWVkX3JlbGluaz15ZXMKKyAJICAgIGZpCisgCSAgICA7OworQEAgLTU4MTQsNyArNjcyNCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICAqKQorIAkgICAgICBjYXNlICIkY29tcGlsZV9ycGF0aCAiIGluCisgCSAgICAgICoiICRhYnNkaXIgIiopIDs7CistCSAgICAgICopIGNvbXBpbGVfcnBhdGg9IiRjb21waWxlX3JwYXRoICRhYnNkaXIiCisrCSAgICAgICopIGZ1bmNfYXBwZW5kIGNvbXBpbGVfcnBhdGggIiAkYWJzZGlyIiA7OworIAkgICAgICBlc2FjCisgCSAgICAgIDs7CisgCSAgICBlc2FjCitAQCAtNTgyMyw3ICs2NzMzLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgICopCisgCSAgICAgIGNhc2UgIiRmaW5hbGl6ZV9ycGF0aCAiIGluCisgCSAgICAgICoiICRsaWJkaXIgIiopIDs7CistCSAgICAgICopIGZpbmFsaXplX3JwYXRoPSIkZmluYWxpemVfcnBhdGggJGxpYmRpciIKKysJICAgICAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfcnBhdGggIiAkbGliZGlyIiA7OworIAkgICAgICBlc2FjCisgCSAgICAgIDs7CisgCSAgICBlc2FjCitAQCAtNTgzNSw3ICs2NzQ1LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgIHNoaWZ0CisgCSAgICByZWFsbmFtZT0iJDEiCisgCSAgICBzaGlmdAorLQkgICAgZXZhbCAibGlibmFtZT1cIiRsaWJuYW1lX3NwZWNcIiIKKysJICAgIGxpYm5hbWU9YGV2YWwgIlxcJEVDSE8gXCIkbGlibmFtZV9zcGVjXCIiYAorIAkgICAgIyB1c2UgZGxuYW1lIGlmIHdlIGdvdCBpdC4gaXQncyBwZXJmZWN0bHkgZ29vZCwgbm8/CisgCSAgICBpZiB0ZXN0IC1uICIkZGxuYW1lIjsgdGhlbgorIAkgICAgICBzb25hbWU9IiRkbG5hbWUiCitAQCAtNTg0OCw3ICs2NzU4LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJCXZlcnN1ZmZpeD0iLSRtYWpvciIKKyAJCTs7CisgCSAgICAgIGVzYWMKKy0JICAgICAgZXZhbCAic29uYW1lPVwiJHNvbmFtZV9zcGVjXCIiCisrCSAgICAgIGV2YWwgc29uYW1lPVwiJHNvbmFtZV9zcGVjXCIKKyAJICAgIGVsc2UKKyAJICAgICAgc29uYW1lPSIkcmVhbG5hbWUiCisgCSAgICBmaQorQEAgLTU4NzcsNyArNjc4Nyw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICBsaW5rbGliPSRuZXdsaWIKKyAJICBmaSAjIHRlc3QgLW4gIiRvbGRfYXJjaGl2ZV9mcm9tX2V4cHN5bXNfY21kcyIKKyAKKy0JICBpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZyB8fCB0ZXN0ICIkbW9kZSIgIT0gcmVsaW5rOyB0aGVuCisrCSAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2cgfHwgdGVzdCAiJG9wdF9tb2RlIiAhPSByZWxpbms7IHRoZW4KKyAJICAgIGFkZF9zaGxpYnBhdGg9CisgCSAgICBhZGRfZGlyPQorIAkgICAgYWRkPQorQEAgLTU5MzMsNyArNjg0Myw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCQlpZiB0ZXN0IC1uICIkaW5zdF9wcmVmaXhfZGlyIjsgdGhlbgorIAkJICBjYXNlICRsaWJkaXIgaW4KKyAJCSAgICBbXFwvXSopCistCQkgICAgICBhZGRfZGlyPSIkYWRkX2RpciAtTCRpbnN0X3ByZWZpeF9kaXIkbGliZGlyIgorKwkJICAgICAgZnVuY19hcHBlbmQgYWRkX2RpciAiIC1MJGluc3RfcHJlZml4X2RpciRsaWJkaXIiCisgCQkgICAgICA7OworIAkJICBlc2FjCisgCQlmaQorQEAgLTU5NTUsNyArNjg2NSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICBpZiB0ZXN0IC1uICIkYWRkX3NobGlicGF0aCI7IHRoZW4KKyAJICAgICAgY2FzZSA6JGNvbXBpbGVfc2hsaWJwYXRoOiBpbgorIAkgICAgICAqIjokYWRkX3NobGlicGF0aDoiKikgOzsKKy0JICAgICAgKikgY29tcGlsZV9zaGxpYnBhdGg9IiRjb21waWxlX3NobGlicGF0aCRhZGRfc2hsaWJwYXRoOiIgOzsKKysJICAgICAgKikgZnVuY19hcHBlbmQgY29tcGlsZV9zaGxpYnBhdGggIiRhZGRfc2hsaWJwYXRoOiIgOzsKKyAJICAgICAgZXNhYworIAkgICAgZmkKKyAJICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nOyB0aGVuCitAQCAtNTk2OSwxMyArNjg3OSwxMyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkJIHRlc3QgIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiA9IHllczsgdGhlbgorIAkJY2FzZSA6JGZpbmFsaXplX3NobGlicGF0aDogaW4KKyAJCSoiOiRsaWJkaXI6IiopIDs7CistCQkqKSBmaW5hbGl6ZV9zaGxpYnBhdGg9IiRmaW5hbGl6ZV9zaGxpYnBhdGgkbGliZGlyOiIgOzsKKysJCSopIGZ1bmNfYXBwZW5kIGZpbmFsaXplX3NobGlicGF0aCAiJGxpYmRpcjoiIDs7CisgCQllc2FjCisgCSAgICAgIGZpCisgCSAgICBmaQorIAkgIGZpCisgCistCSAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2cgfHwgdGVzdCAiJG1vZGUiID0gcmVsaW5rOyB0aGVuCisrCSAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2cgfHwgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgdGhlbgorIAkgICAgYWRkX3NobGlicGF0aD0KKyAJICAgIGFkZF9kaXI9CisgCSAgICBhZGQ9CitAQCAtNTk4OSw3ICs2ODk5LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgIGVsaWYgdGVzdCAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiID0geWVzOyB0aGVuCisgCSAgICAgIGNhc2UgOiRmaW5hbGl6ZV9zaGxpYnBhdGg6IGluCisgCSAgICAgICoiOiRsaWJkaXI6IiopIDs7CistCSAgICAgICopIGZpbmFsaXplX3NobGlicGF0aD0iJGZpbmFsaXplX3NobGlicGF0aCRsaWJkaXI6IiA7OworKwkgICAgICAqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9zaGxpYnBhdGggIiRsaWJkaXI6IiA7OworIAkgICAgICBlc2FjCisgCSAgICAgIGFkZD0iLWwkbmFtZSIKKyAJICAgIGVsaWYgdGVzdCAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgPSB5ZXM7IHRoZW4KK0BAIC02MDAxLDEyICs2OTExLDEyIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICAgIGZpCisgCSAgICBlbHNlCisgCSAgICAgICMgV2UgY2Fubm90IHNlZW0gdG8gaGFyZGNvZGUgaXQsIGd1ZXNzIHdlJ2xsIGZha2UgaXQuCistCSAgICAgIGFkZF9kaXI9Ii1MJGxpYmRpciIKKysJICAgICAgYWRkX2Rpcj0iLUwkbHRfc3lzcm9vdCRsaWJkaXIiCisgCSAgICAgICMgVHJ5IGxvb2tpbmcgZmlyc3QgaW4gdGhlIGxvY2F0aW9uIHdlJ3JlIGJlaW5nIGluc3RhbGxlZCB0by4KKyAJICAgICAgaWYgdGVzdCAtbiAiJGluc3RfcHJlZml4X2RpciI7IHRoZW4KKyAJCWNhc2UgJGxpYmRpciBpbgorIAkJICBbXFwvXSopCistCQkgICAgYWRkX2Rpcj0iJGFkZF9kaXIgLUwkaW5zdF9wcmVmaXhfZGlyJGxpYmRpciIKKysJCSAgICBmdW5jX2FwcGVuZCBhZGRfZGlyICIgLUwkaW5zdF9wcmVmaXhfZGlyJGxpYmRpciIKKyAJCSAgICA7OworIAkJZXNhYworIAkgICAgICBmaQorQEAgLTYwODMsMjcgKzY5OTMsMzMgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgICAgICAgICB0ZW1wX3hycGF0aD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisgCQkgICBjYXNlICIgJHhycGF0aCAiIGluCisgCQkgICAqIiAkdGVtcF94cnBhdGggIiopIDs7CistCQkgICAqKSB4cnBhdGg9IiR4cnBhdGggJHRlbXBfeHJwYXRoIjs7CisrCQkgICAqKSBmdW5jX2FwcGVuZCB4cnBhdGggIiAkdGVtcF94cnBhdGgiOzsKKyAJCSAgIGVzYWM7OworLQkgICAgICAqKSB0ZW1wX2RlcGxpYnM9IiR0ZW1wX2RlcGxpYnMgJGxpYmRpciI7OworKwkgICAgICAqKSBmdW5jX2FwcGVuZCB0ZW1wX2RlcGxpYnMgIiAkbGliZGlyIjs7CisgCSAgICAgIGVzYWMKKyAJICAgIGRvbmUKKyAJICAgIGRlcGVuZGVuY3lfbGlicz0iJHRlbXBfZGVwbGlicyIKKyAJICBmaQorIAorLQkgIG5ld2xpYl9zZWFyY2hfcGF0aD0iJG5ld2xpYl9zZWFyY2hfcGF0aCAkYWJzZGlyIgorKwkgIGZ1bmNfYXBwZW5kIG5ld2xpYl9zZWFyY2hfcGF0aCAiICRhYnNkaXIiCisgCSAgIyBMaW5rIGFnYWluc3QgdGhpcyBsaWJyYXJ5CisgCSAgdGVzdCAiJGxpbmtfc3RhdGljIiA9IG5vICYmIG5ld2RlcGVuZGVuY3lfbGlicz0iJGFic19sYWRpci8kbGFuYW1lICRuZXdkZXBlbmRlbmN5X2xpYnMiCisgCSAgIyAuLi4gYW5kIGl0cyBkZXBlbmRlbmN5X2xpYnMKKyAJICB0bXBfbGlicz0KKyAJICBmb3IgZGVwbGliIGluICRkZXBlbmRlbmN5X2xpYnM7IGRvCisgCSAgICBuZXdkZXBlbmRlbmN5X2xpYnM9IiRkZXBsaWIgJG5ld2RlcGVuZGVuY3lfbGlicyIKKy0JICAgIGlmICRvcHRfZHVwbGljYXRlX2RlcHMgOyB0aGVuCisrCSAgICBjYXNlICRkZXBsaWIgaW4KKysgICAgICAgICAgICAgIC1MKikgZnVuY19zdHJpcG5hbWUgJy1MJyAnJyAiJGRlcGxpYiIKKysgICAgICAgICAgICAgICAgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiOzsKKysgICAgICAgICAgICAgICopIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZGVwbGliIiA7OworKyAgICAgICAgICAgIGVzYWMKKysJICAgIGlmICRvcHRfcHJlc2VydmVfZHVwX2RlcHMgOyB0aGVuCisgCSAgICAgIGNhc2UgIiR0bXBfbGlicyAiIGluCistCSAgICAgICoiICRkZXBsaWIgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJGRlcGxpYiIgOzsKKysJICAgICAgKiIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCAiKikKKysgICAgICAgICAgICAgICAgZnVuY19hcHBlbmQgc3BlY2lhbGRlcGxpYnMgIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IiA7OworIAkgICAgICBlc2FjCisgCSAgICBmaQorLQkgICAgdG1wX2xpYnM9IiR0bXBfbGlicyAkZGVwbGliIgorKwkgICAgZnVuY19hcHBlbmQgdG1wX2xpYnMgIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgorIAkgIGRvbmUKKyAKKyAJICBpZiB0ZXN0ICIkbGlua19hbGxfZGVwbGlicyIgIT0gbm87IHRoZW4KK0BAIC02MTEzLDggKzcwMjksMTAgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgICAgY2FzZSAkZGVwbGliIGluCisgCSAgICAgIC1MKikgcGF0aD0iJGRlcGxpYiIgOzsKKyAJICAgICAgKi5sYSkKKysJICAgICAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGRlcGxpYiIKKysJICAgICAgICBkZXBsaWI9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAorIAkgICAgICAgIGZ1bmNfZGlybmFtZSAiJGRlcGxpYiIgIiIgIi4iCistCQlkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgorKwkJZGlyPSRmdW5jX2Rpcm5hbWVfcmVzdWx0CisgCQkjIFdlIG5lZWQgYW4gYWJzb2x1dGUgcGF0aC4KKyAJCWNhc2UgJGRpciBpbgorIAkJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSBhYnNkaXI9IiRkaXIiIDs7CitAQCAtNjEzMCw3ICs3MDQ4LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJCWNhc2UgJGhvc3QgaW4KKyAJCSotKi1kYXJ3aW4qKQorIAkJICBkZXBkZXBsPQorLQkJICBkZXBsaWJyYXJ5X25hbWVzPWAke1NFRH0gLW4gLWUgJ3MvXmxpYnJhcnlfbmFtZXM9XCguKlwpJC9cMS9wJyAkZGVwbGliYAorKwkJICBldmFsIGRlcGxpYnJhcnlfbmFtZXM9YCR7U0VEfSAtbiAtZSAncy9ebGlicmFyeV9uYW1lcz1cKC4qXCkkL1wxL3AnICRkZXBsaWJgCisgCQkgIGlmIHRlc3QgLW4gIiRkZXBsaWJyYXJ5X25hbWVzIiA7IHRoZW4KKyAJCSAgICBmb3IgdG1wIGluICRkZXBsaWJyYXJ5X25hbWVzIDsgZG8KKyAJCSAgICAgIGRlcGRlcGw9JHRtcAorQEAgLTYxNDEsOCArNzA1OSw4IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRkYXJ3aW5faW5zdGFsbF9uYW1lIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgZGFyd2luX2luc3RhbGxfbmFtZT1gJHtPVE9PTDY0fSAtTCAkZGVwZGVwbCAgfCBhd2sgJ3tpZiAoTlIgPT0gMikge3ByaW50ICQxO2V4aXR9fSdgCisgICAgICAgICAgICAgICAgICAgICAgIGZpCistCQkgICAgICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWR5bGliX2ZpbGUgJHt3bH0ke2Rhcndpbl9pbnN0YWxsX25hbWV9OiR7ZGVwZGVwbH0iCistCQkgICAgICBsaW5rZXJfZmxhZ3M9IiRsaW5rZXJfZmxhZ3MgLWR5bGliX2ZpbGUgJHtkYXJ3aW5faW5zdGFsbF9uYW1lfToke2RlcGRlcGx9IgorKwkJICAgICAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAke3dsfS1keWxpYl9maWxlICR7d2x9JHtkYXJ3aW5faW5zdGFsbF9uYW1lfToke2RlcGRlcGx9IgorKwkJICAgICAgZnVuY19hcHBlbmQgbGlua2VyX2ZsYWdzICIgLWR5bGliX2ZpbGUgJHtkYXJ3aW5faW5zdGFsbF9uYW1lfToke2RlcGRlcGx9IgorIAkJICAgICAgcGF0aD0KKyAJCSAgICBmaQorIAkJICBmaQorQEAgLTYxNTIsNyArNzA3MCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCQkgIDs7CisgCQllc2FjCisgCQllbHNlCistCQkgIGxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkZGVwbGliYAorKwkJICBldmFsIGxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkZGVwbGliYAorIAkJICB0ZXN0IC16ICIkbGliZGlyIiAmJiBcCisgCQkgICAgZnVuY19mYXRhbF9lcnJvciAiXGAkZGVwbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCisgCQkgIHRlc3QgIiRhYnNkaXIiICE9ICIkbGliZGlyIiAmJiBcCitAQCAtNjE5Miw3ICs3MTEwLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICBmb3IgZGlyIGluICRuZXdsaWJfc2VhcmNoX3BhdGg7IGRvCisgCSAgICBjYXNlICIkbGliX3NlYXJjaF9wYXRoICIgaW4KKyAJICAgICoiICRkaXIgIiopIDs7CistCSAgICAqKSBsaWJfc2VhcmNoX3BhdGg9IiRsaWJfc2VhcmNoX3BhdGggJGRpciIgOzsKKysJICAgICopIGZ1bmNfYXBwZW5kIGxpYl9zZWFyY2hfcGF0aCAiICRkaXIiIDs7CisgCSAgICBlc2FjCisgCSAgZG9uZQorIAkgIG5ld2xpYl9zZWFyY2hfcGF0aD0KK0BAIC02MjA1LDcgKzcxMjMsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAlmaQorIAlmb3IgdmFyIGluICR2YXJzIGRlcGVuZGVuY3lfbGliczsgZG8KKyAJICAjIEFkZCBsaWJyYXJpZXMgdG8gJHZhciBpbiByZXZlcnNlIG9yZGVyCistCSAgZXZhbCB0bXBfbGlicz1cJCR2YXIKKysJICBldmFsIHRtcF9saWJzPVwiXCQkdmFyXCIKKyAJICBuZXdfbGlicz0KKyAJICBmb3IgZGVwbGliIGluICR0bXBfbGliczsgZG8KKyAJICAgICMgRklYTUU6IFBlZGFudGljYWxseSwgdGhpcyBpcyB0aGUgcmlnaHQgdGhpbmcgdG8gZG8sIHNvCitAQCAtNjI1MCwxMyArNzE2OCwxMyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgLUwqKQorIAkgICAgICBjYXNlICIgJHRtcF9saWJzICIgaW4KKyAJICAgICAgKiIgJGRlcGxpYiAiKikgOzsKKy0JICAgICAgKikgdG1wX2xpYnM9IiR0bXBfbGlicyAkZGVwbGliIiA7OworKwkgICAgICAqKSBmdW5jX2FwcGVuZCB0bXBfbGlicyAiICRkZXBsaWIiIDs7CisgCSAgICAgIGVzYWMKKyAJICAgICAgOzsKKy0JICAgICopIHRtcF9saWJzPSIkdG1wX2xpYnMgJGRlcGxpYiIgOzsKKysJICAgICopIGZ1bmNfYXBwZW5kIHRtcF9saWJzICIgJGRlcGxpYiIgOzsKKyAJICAgIGVzYWMKKyAJICBkb25lCistCSAgZXZhbCAkdmFyPVwkdG1wX2xpYnMKKysJICBldmFsICR2YXI9XCIkdG1wX2xpYnNcIgorIAlkb25lICMgZm9yIHZhcgorICAgICAgIGZpCisgICAgICAgIyBMYXN0IHN0ZXA6IHJlbW92ZSBydW50aW1lIGxpYnMgZnJvbSBkZXBlbmRlbmN5X2xpYnMKK0BAIC02MjY5LDcgKzcxODcsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgIDs7CisgCWVzYWMKKyAJaWYgdGVzdCAtbiAiJGkiIDsgdGhlbgorLQkgIHRtcF9saWJzPSIkdG1wX2xpYnMgJGkiCisrCSAgZnVuY19hcHBlbmQgdG1wX2xpYnMgIiAkaSIKKyAJZmkKKyAgICAgICBkb25lCisgICAgICAgZGVwZW5kZW5jeV9saWJzPSR0bXBfbGlicworQEAgLTYzMTAsNyArNzIyOCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgICAgICAgIyBOb3cgc2V0IHRoZSB2YXJpYWJsZXMgZm9yIGJ1aWxkaW5nIG9sZCBsaWJyYXJpZXMuCisgICAgICAgYnVpbGRfbGlidG9vbF9saWJzPW5vCisgICAgICAgb2xkbGlicz0iJG91dHB1dCIKKy0gICAgICBvYmpzPSIkb2JqcyRvbGRfZGVwbGlicyIKKysgICAgICBmdW5jX2FwcGVuZCBvYmpzICIkb2xkX2RlcGxpYnMiCisgICAgICAgOzsKKyAKKyAgICAgbGliKQorQEAgLTYzMTksOCArNzIzNyw4IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgICAgICAgbGliKikKKyAJZnVuY19zdHJpcG5hbWUgJ2xpYicgJy5sYScgIiRvdXRwdXRuYW1lIgorIAluYW1lPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKy0JZXZhbCAic2hhcmVkX2V4dD1cIiRzaHJleHRfY21kc1wiIgorLQlldmFsICJsaWJuYW1lPVwiJGxpYm5hbWVfc3BlY1wiIgorKwlldmFsIHNoYXJlZF9leHQ9XCIkc2hyZXh0X2NtZHNcIgorKwlldmFsIGxpYm5hbWU9XCIkbGlibmFtZV9zcGVjXCIKKyAJOzsKKyAgICAgICAqKQorIAl0ZXN0ICIkbW9kdWxlIiA9IG5vICYmIFwKK0BAIC02MzMwLDggKzcyNDgsOCBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICMgQWRkIHRoZSAibGliIiBwcmVmaXggZm9yIG1vZHVsZXMgaWYgcmVxdWlyZWQKKyAJICBmdW5jX3N0cmlwbmFtZSAnJyAnLmxhJyAiJG91dHB1dG5hbWUiCisgCSAgbmFtZT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CistCSAgZXZhbCAic2hhcmVkX2V4dD1cIiRzaHJleHRfY21kc1wiIgorLQkgIGV2YWwgImxpYm5hbWU9XCIkbGlibmFtZV9zcGVjXCIiCisrCSAgZXZhbCBzaGFyZWRfZXh0PVwiJHNocmV4dF9jbWRzXCIKKysJICBldmFsIGxpYm5hbWU9XCIkbGlibmFtZV9zcGVjXCIKKyAJZWxzZQorIAkgIGZ1bmNfc3RyaXBuYW1lICcnICcubGEnICIkb3V0cHV0bmFtZSIKKyAJICBsaWJuYW1lPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKK0BAIC02MzQ2LDcgKzcyNjQsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgIGVjaG8KKyAJICAkRUNITyAiKioqIFdhcm5pbmc6IExpbmtpbmcgdGhlIHNoYXJlZCBsaWJyYXJ5ICRvdXRwdXQgYWdhaW5zdCB0aGUgbm9uLWxpYnRvb2wiCisgCSAgJEVDSE8gIioqKiBvYmplY3RzICRvYmpzIGlzIG5vdCBwb3J0YWJsZSEiCistCSAgbGlib2Jqcz0iJGxpYm9ianMgJG9ianMiCisrCSAgZnVuY19hcHBlbmQgbGlib2JqcyAiICRvYmpzIgorIAlmaQorICAgICAgIGZpCisgCitAQCAtNjU0NCw3ICs3NDYyLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICBkb25lCisgCisgCSAgIyBNYWtlIGV4ZWN1dGFibGVzIGRlcGVuZCBvbiBvdXIgY3VycmVudCB2ZXJzaW9uLgorLQkgIHZlcnN0cmluZz0iJHZlcnN0cmluZzoke2N1cnJlbnR9LjAiCisrCSAgZnVuY19hcHBlbmQgdmVyc3RyaW5nICI6JHtjdXJyZW50fS4wIgorIAkgIDs7CisgCisgCXFueCkKK0BAIC02NjEyLDEwICs3NTMwLDEwIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgICAgICAgZmkKKyAKKyAgICAgICBmdW5jX2dlbmVyYXRlX2Rsc3ltcyAiJGxpYm5hbWUiICIkbGlibmFtZSIgInllcyIKKy0gICAgICBsaWJvYmpzPSIkbGlib2JqcyAkc3ltZmlsZW9iaiIKKysgICAgICBmdW5jX2FwcGVuZCBsaWJvYmpzICIgJHN5bWZpbGVvYmoiCisgICAgICAgdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KKyAKKy0gICAgICBpZiB0ZXN0ICIkbW9kZSIgIT0gcmVsaW5rOyB0aGVuCisrICAgICAgaWYgdGVzdCAiJG9wdF9tb2RlIiAhPSByZWxpbms7IHRoZW4KKyAJIyBSZW1vdmUgb3VyIG91dHB1dHMsIGJ1dCBkb24ndCByZW1vdmUgb2JqZWN0IGZpbGVzIHNpbmNlIHRoZXkKKyAJIyBtYXkgaGF2ZSBiZWVuIGNyZWF0ZWQgd2hlbiBjb21waWxpbmcgUElDIG9iamVjdHMuCisgCXJlbW92ZWxpc3Q9CitAQCAtNjYzMSw3ICs3NTQ5LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJCSAgIGNvbnRpbnVlCisgCQkgZmkKKyAJICAgICAgIGZpCistCSAgICAgICByZW1vdmVsaXN0PSIkcmVtb3ZlbGlzdCAkcCIKKysJICAgICAgIGZ1bmNfYXBwZW5kIHJlbW92ZWxpc3QgIiAkcCIKKyAJICAgICAgIDs7CisgCSAgICAqKSA7OworIAkgIGVzYWMKK0BAIC02NjQyLDcgKzc1NjAsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAorICAgICAgICMgTm93IHNldCB0aGUgdmFyaWFibGVzIGZvciBidWlsZGluZyBvbGQgbGlicmFyaWVzLgorICAgICAgIGlmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSB5ZXMgJiYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0gY29udmVuaWVuY2UgOyB0aGVuCistCW9sZGxpYnM9IiRvbGRsaWJzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLiRsaWJleHQiCisrCWZ1bmNfYXBwZW5kIG9sZGxpYnMgIiAkb3V0cHV0X29iamRpci8kbGlibmFtZS4kbGliZXh0IgorIAorIAkjIFRyYW5zZm9ybSAubG8gZmlsZXMgdG8gLm8gZmlsZXMuCisgCW9sZG9ianM9IiRvYmpzICJgJEVDSE8gIiRsaWJvYmpzIiB8ICRTUDJOTCB8ICRTRUQgIi9cLiR7bGliZXh0fSQvZDsgJGxvMm8iIHwgJE5MMlNQYAorQEAgLTY2NTksMTAgKzc1NzcsMTEgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJIyBJZiB0aGUgdXNlciBzcGVjaWZpZWQgYW55IHJwYXRoIGZsYWdzLCB0aGVuIGFkZCB0aGVtLgorIAl0ZW1wX3hycGF0aD0KKyAJZm9yIGxpYmRpciBpbiAkeHJwYXRoOyBkbworLQkgIHRlbXBfeHJwYXRoPSIkdGVtcF94cnBhdGggLVIkbGliZGlyIgorKwkgIGZ1bmNfcmVwbGFjZV9zeXNyb290ICIkbGliZGlyIgorKwkgIGZ1bmNfYXBwZW5kIHRlbXBfeHJwYXRoICIgLVIkZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0IgorIAkgIGNhc2UgIiRmaW5hbGl6ZV9ycGF0aCAiIGluCisgCSAgKiIgJGxpYmRpciAiKikgOzsKKy0JICAqKSBmaW5hbGl6ZV9ycGF0aD0iJGZpbmFsaXplX3JwYXRoICRsaWJkaXIiIDs7CisrCSAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfcnBhdGggIiAkbGliZGlyIiA7OworIAkgIGVzYWMKKyAJZG9uZQorIAlpZiB0ZXN0ICIkaGFyZGNvZGVfaW50b19saWJzIiAhPSB5ZXMgfHwgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiA9IHllczsgdGhlbgorQEAgLTY2NzYsNyArNzU5NSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgICAgICAgZm9yIGxpYiBpbiAkb2xkX2RsZmlsZXM7IGRvCisgCWNhc2UgIiAkZGxwcmVmaWxlcyAkZGxmaWxlcyAiIGluCisgCSoiICRsaWIgIiopIDs7CistCSopIGRsZmlsZXM9IiRkbGZpbGVzICRsaWIiIDs7CisrCSopIGZ1bmNfYXBwZW5kIGRsZmlsZXMgIiAkbGliIiA7OworIAllc2FjCisgICAgICAgZG9uZQorIAorQEAgLTY2ODYsNyArNzYwNSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgICAgICAgZm9yIGxpYiBpbiAkb2xkX2RscHJlZmlsZXM7IGRvCisgCWNhc2UgIiRkbHByZWZpbGVzICIgaW4KKyAJKiIgJGxpYiAiKikgOzsKKy0JKikgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJGxpYiIgOzsKKysJKikgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRsaWIiIDs7CisgCWVzYWMKKyAgICAgICBkb25lCisgCitAQCAtNjY5OCw3ICs3NjE3LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgIDs7CisgCSAgKi0qLXJoYXBzb2R5KiB8ICotKi1kYXJ3aW4xLlswMTJdKQorIAkgICAgIyBSaGFwc29keSBDIGxpYnJhcnkgaXMgaW4gdGhlIFN5c3RlbSBmcmFtZXdvcmsKKy0JICAgIGRlcGxpYnM9IiRkZXBsaWJzIFN5c3RlbS5sdGZyYW1ld29yayIKKysJICAgIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiBTeXN0ZW0ubHRmcmFtZXdvcmsiCisgCSAgICA7OworIAkgICotKi1uZXRic2QqKQorIAkgICAgIyBEb24ndCBsaW5rIHdpdGggbGliYyB1bnRpbCB0aGUgYS5vdXQgbGQuc28gaXMgZml4ZWQuCitAQCAtNjcxNSw3ICs3NjM0LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAqKQorIAkgICAgIyBBZGQgbGliYyB0byBkZXBsaWJzIG9uIGFsbCBvdGhlciBzeXN0ZW1zIGlmIG5lY2Vzc2FyeS4KKyAJICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX25lZWRfbGMiID0gInllcyI7IHRoZW4KKy0JICAgICAgZGVwbGlicz0iJGRlcGxpYnMgLWxjIgorKwkgICAgICBmdW5jX2FwcGVuZCBkZXBsaWJzICIgLWxjIgorIAkgICAgZmkKKyAJICAgIDs7CisgCSAgZXNhYworQEAgLTY3NjQsMTggKzc2ODMsMTggQEAgRU9GCisgCQlpZiB0ZXN0ICJYJGFsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lcyIgPSAiWHllcyIgOyB0aGVuCisgCQkgIGNhc2UgIiAkcHJlZGVwcyAkcG9zdGRlcHMgIiBpbgorIAkJICAqIiAkaSAiKikKKy0JCSAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKKysJCSAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGkiCisgCQkgICAgaT0iIgorIAkJICAgIDs7CisgCQkgIGVzYWMKKyAJCWZpCisgCQlpZiB0ZXN0IC1uICIkaSIgOyB0aGVuCistCQkgIGV2YWwgImxpYm5hbWU9XCIkbGlibmFtZV9zcGVjXCIiCistCQkgIGV2YWwgImRlcGxpYl9tYXRjaGVzPVwiJGxpYnJhcnlfbmFtZXNfc3BlY1wiIgorKwkJICBsaWJuYW1lPWBldmFsICJcXCRFQ0hPIFwiJGxpYm5hbWVfc3BlY1wiImAKKysJCSAgZGVwbGliX21hdGNoZXM9YGV2YWwgIlxcJEVDSE8gXCIkbGlicmFyeV9uYW1lc19zcGVjXCIiYAorIAkJICBzZXQgZHVtbXkgJGRlcGxpYl9tYXRjaGVzOyBzaGlmdAorIAkJICBkZXBsaWJfbWF0Y2g9JDEKKyAJCSAgaWYgdGVzdCBgZXhwciAiJGxkZF9vdXRwdXQiIDogIi4qJGRlcGxpYl9tYXRjaCJgIC1uZSAwIDsgdGhlbgorLQkJICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgorKwkJICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkaSIKKyAJCSAgZWxzZQorIAkJICAgIGRyb3BwZWRkZXBzPXllcworIAkJICAgIGVjaG8KK0BAIC02Nzg5LDcgKzc3MDgsNyBAQCBFT0YKKyAJCWZpCisgCQk7OworIAkgICAgICAqKQorLQkJbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGkiCisrCQlmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGkiCisgCQk7OworIAkgICAgICBlc2FjCisgCSAgICBkb25lCitAQCAtNjgwNywxOCArNzcyNiwxOCBAQCBFT0YKKyAJCSAgaWYgdGVzdCAiWCRhbGxvd19saWJ0b29sX2xpYnNfd2l0aF9zdGF0aWNfcnVudGltZXMiID0gIlh5ZXMiIDsgdGhlbgorIAkJICAgIGNhc2UgIiAkcHJlZGVwcyAkcG9zdGRlcHMgIiBpbgorIAkJICAgICoiICRpICIqKQorLQkJICAgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGkiCisrCQkgICAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGkiCisgCQkgICAgICBpPSIiCisgCQkgICAgICA7OworIAkJICAgIGVzYWMKKyAJCSAgZmkKKyAJCSAgaWYgdGVzdCAtbiAiJGkiIDsgdGhlbgorLQkJICAgIGV2YWwgImxpYm5hbWU9XCIkbGlibmFtZV9zcGVjXCIiCistCQkgICAgZXZhbCAiZGVwbGliX21hdGNoZXM9XCIkbGlicmFyeV9uYW1lc19zcGVjXCIiCisrCQkgICAgbGlibmFtZT1gZXZhbCAiXFwkRUNITyBcIiRsaWJuYW1lX3NwZWNcIiJgCisrCQkgICAgZGVwbGliX21hdGNoZXM9YGV2YWwgIlxcJEVDSE8gXCIkbGlicmFyeV9uYW1lc19zcGVjXCIiYAorIAkJICAgIHNldCBkdW1teSAkZGVwbGliX21hdGNoZXM7IHNoaWZ0CisgCQkgICAgZGVwbGliX21hdGNoPSQxCisgCQkgICAgaWYgdGVzdCBgZXhwciAiJGxkZF9vdXRwdXQiIDogIi4qJGRlcGxpYl9tYXRjaCJgIC1uZSAwIDsgdGhlbgorLQkJICAgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGkiCisrCQkgICAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGkiCisgCQkgICAgZWxzZQorIAkJICAgICAgZHJvcHBlZGRlcHM9eWVzCisgCQkgICAgICBlY2hvCitAQCAtNjg0MCw3ICs3NzU5LDcgQEAgRU9GCisgCQlmaQorIAkJOzsKKyAJICAgICAgKikKKy0JCW5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgorKwkJZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRpIgorIAkJOzsKKyAJICAgICAgZXNhYworIAkgICAgZG9uZQorQEAgLTY4NTcsMTUgKzc3NzYsMjcgQEAgRU9GCisgCSAgICAgIGlmIHRlc3QgIlgkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIiA9ICJYeWVzIiA7IHRoZW4KKyAJCWNhc2UgIiAkcHJlZGVwcyAkcG9zdGRlcHMgIiBpbgorIAkJKiIgJGFfZGVwbGliICIqKQorLQkJICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIiCisrCQkgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkYV9kZXBsaWIiCisgCQkgIGFfZGVwbGliPSIiCisgCQkgIDs7CisgCQllc2FjCisgCSAgICAgIGZpCisgCSAgICAgIGlmIHRlc3QgLW4gIiRhX2RlcGxpYiIgOyB0aGVuCistCQlldmFsICJsaWJuYW1lPVwiJGxpYm5hbWVfc3BlY1wiIgorKwkJbGlibmFtZT1gZXZhbCAiXFwkRUNITyBcIiRsaWJuYW1lX3NwZWNcIiJgCisrCQlpZiB0ZXN0IC1uICIkZmlsZV9tYWdpY19nbG9iIjsgdGhlbgorKwkJICBsaWJuYW1lZ2xvYj1gZnVuY19lY2hvX2FsbCAiJGxpYm5hbWUiIHwgJFNFRCAtZSAkZmlsZV9tYWdpY19nbG9iYAorKwkJZWxzZQorKwkJICBsaWJuYW1lZ2xvYj0kbGlibmFtZQorKwkJZmkKKysJCXRlc3QgIiR3YW50X25vY2FzZWdsb2IiID0geWVzICYmIG5vY2FzZWdsb2I9YHNob3B0IC1wIG5vY2FzZWdsb2JgCisgCQlmb3IgaSBpbiAkbGliX3NlYXJjaF9wYXRoICRzeXNfbGliX3NlYXJjaF9wYXRoICRzaGxpYl9zZWFyY2hfcGF0aDsgZG8KKy0JCSAgcG90ZW50aWFsX2xpYnM9YGxzICRpLyRsaWJuYW1lWy4tXSogMj4vZGV2L251bGxgCisrCQkgIGlmIHRlc3QgIiR3YW50X25vY2FzZWdsb2IiID0geWVzOyB0aGVuCisrCQkgICAgc2hvcHQgLXMgbm9jYXNlZ2xvYgorKwkJICAgIHBvdGVudGlhbF9saWJzPWBscyAkaS8kbGlibmFtZWdsb2JbLi1dKiAyPi9kZXYvbnVsbGAKKysJCSAgICAkbm9jYXNlZ2xvYgorKwkJICBlbHNlCisrCQkgICAgcG90ZW50aWFsX2xpYnM9YGxzICRpLyRsaWJuYW1lZ2xvYlsuLV0qIDI+L2Rldi9udWxsYAorKwkJICBmaQorIAkJICBmb3IgcG90ZW50X2xpYiBpbiAkcG90ZW50aWFsX2xpYnM7IGRvCisgCQkgICAgICAjIEZvbGxvdyBzb2Z0IGxpbmtzLgorIAkJICAgICAgaWYgbHMgLWxMZCAiJHBvdGVudF9saWIiIDI+L2Rldi9udWxsIHwKK0BAIC02ODg1LDEwICs3ODE2LDEwIEBAIEVPRgorIAkJCSopIHBvdGxpYj1gJEVDSE8gIiRwb3RsaWIiIHwgJFNFRCAncyxbXi9dKiQsLCdgIiRwb3RsaWJsaW5rIjs7CisgCQkJZXNhYworIAkJICAgICAgZG9uZQorLQkJICAgICAgaWYgZXZhbCAiJGZpbGVfbWFnaWNfY21kIFwiXCRwb3RsaWJcIiIgMj4vZGV2L251bGwgfAorKwkJICAgICAgaWYgZXZhbCAkZmlsZV9tYWdpY19jbWQgXCJcJHBvdGxpYlwiIDI+L2Rldi9udWxsIHwKKyAJCQkgJFNFRCAtZSAxMHEgfAorIAkJCSAkRUdSRVAgIiRmaWxlX21hZ2ljX3JlZ2V4IiA+IC9kZXYvbnVsbDsgdGhlbgorLQkJCW5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKKysJCQlmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGFfZGVwbGliIgorIAkJCWFfZGVwbGliPSIiCisgCQkJYnJlYWsgMgorIAkJICAgICAgZmkKK0BAIC02OTEzLDcgKzc4NDQsNyBAQCBFT0YKKyAJICAgICAgOzsKKyAJICAgICopCisgCSAgICAgICMgQWRkIGEgLUwgYXJndW1lbnQuCistCSAgICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKKysJICAgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRhX2RlcGxpYiIKKyAJICAgICAgOzsKKyAJICAgIGVzYWMKKyAJICBkb25lICMgR29uZSB0aHJvdWdoIGFsbCBkZXBsaWJzLgorQEAgLTY5MjksMjAgKzc4NjAsMjAgQEAgRU9GCisgCSAgICAgIGlmIHRlc3QgIlgkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIiA9ICJYeWVzIiA7IHRoZW4KKyAJCWNhc2UgIiAkcHJlZGVwcyAkcG9zdGRlcHMgIiBpbgorIAkJKiIgJGFfZGVwbGliICIqKQorLQkJICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIiCisrCQkgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkYV9kZXBsaWIiCisgCQkgIGFfZGVwbGliPSIiCisgCQkgIDs7CisgCQllc2FjCisgCSAgICAgIGZpCisgCSAgICAgIGlmIHRlc3QgLW4gIiRhX2RlcGxpYiIgOyB0aGVuCistCQlldmFsICJsaWJuYW1lPVwiJGxpYm5hbWVfc3BlY1wiIgorKwkJbGlibmFtZT1gZXZhbCAiXFwkRUNITyBcIiRsaWJuYW1lX3NwZWNcIiJgCisgCQlmb3IgaSBpbiAkbGliX3NlYXJjaF9wYXRoICRzeXNfbGliX3NlYXJjaF9wYXRoICRzaGxpYl9zZWFyY2hfcGF0aDsgZG8KKyAJCSAgcG90ZW50aWFsX2xpYnM9YGxzICRpLyRsaWJuYW1lWy4tXSogMj4vZGV2L251bGxgCisgCQkgIGZvciBwb3RlbnRfbGliIGluICRwb3RlbnRpYWxfbGliczsgZG8KKyAJCSAgICBwb3RsaWI9IiRwb3RlbnRfbGliIiAjIHNlZSBzeW1saW5rLWNoZWNrIGFib3ZlIGluIGZpbGVfbWFnaWMgdGVzdAorIAkJICAgIGlmIGV2YWwgIlwkRUNITyBcIiRwb3RlbnRfbGliXCIiIDI+L2Rldi9udWxsIHwgJFNFRCAxMHEgfCBcCisgCQkgICAgICAgJEVHUkVQICIkbWF0Y2hfcGF0dGVybl9yZWdleCIgPiAvZGV2L251bGw7IHRoZW4KKy0JCSAgICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKKysJCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkYV9kZXBsaWIiCisgCQkgICAgICBhX2RlcGxpYj0iIgorIAkJICAgICAgYnJlYWsgMgorIAkJICAgIGZpCitAQCAtNjk2Nyw3ICs3ODk4LDcgQEAgRU9GCisgCSAgICAgIDs7CisgCSAgICAqKQorIAkgICAgICAjIEFkZCBhIC1MIGFyZ3VtZW50LgorLQkgICAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIiCisrCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkYV9kZXBsaWIiCisgCSAgICAgIDs7CisgCSAgICBlc2FjCisgCSAgZG9uZSAjIEdvbmUgdGhyb3VnaCBhbGwgZGVwbGlicy4KK0BAIC03MDcxLDcgKzgwMDIsNyBAQCBFT0YKKyAJKikKKyAJICBjYXNlICIgJGRlcGxpYnMgIiBpbgorIAkgICoiIC1MJHBhdGgvJG9iamRpciAiKikKKy0JICAgIG5ld19saWJzPSIkbmV3X2xpYnMgLUwkcGF0aC8kb2JqZGlyIiA7OworKwkgICAgZnVuY19hcHBlbmQgbmV3X2xpYnMgIiAtTCRwYXRoLyRvYmpkaXIiIDs7CisgCSAgZXNhYworIAkgIDs7CisgCWVzYWMKK0BAIC03MDgxLDEwICs4MDEyLDEwIEBAIEVPRgorIAktTCopCisgCSAgY2FzZSAiICRuZXdfbGlicyAiIGluCisgCSAgKiIgJGRlcGxpYiAiKikgOzsKKy0JICAqKSBuZXdfbGlicz0iJG5ld19saWJzICRkZXBsaWIiIDs7CisrCSAgKikgZnVuY19hcHBlbmQgbmV3X2xpYnMgIiAkZGVwbGliIiA7OworIAkgIGVzYWMKKyAJICA7OworLQkqKSBuZXdfbGlicz0iJG5ld19saWJzICRkZXBsaWIiIDs7CisrCSopIGZ1bmNfYXBwZW5kIG5ld19saWJzICIgJGRlcGxpYiIgOzsKKyAJZXNhYworICAgICAgIGRvbmUKKyAgICAgICBkZXBsaWJzPSIkbmV3X2xpYnMiCitAQCAtNzEwMSwxMCArODAzMiwxMiBAQCBFT0YKKyAJICBoYXJkY29kZV9saWJkaXJzPQorIAkgIGRlcF9ycGF0aD0KKyAJICBycGF0aD0iJGZpbmFsaXplX3JwYXRoIgorLQkgIHRlc3QgIiRtb2RlIiAhPSByZWxpbmsgJiYgcnBhdGg9IiRjb21waWxlX3JwYXRoJHJwYXRoIgorKwkgIHRlc3QgIiRvcHRfbW9kZSIgIT0gcmVsaW5rICYmIHJwYXRoPSIkY29tcGlsZV9ycGF0aCRycGF0aCIKKyAJICBmb3IgbGliZGlyIGluICRycGF0aDsgZG8KKyAJICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIjsgdGhlbgorIAkgICAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciI7IHRoZW4KKysJCWZ1bmNfcmVwbGFjZV9zeXNyb290ICIkbGliZGlyIgorKwkJbGliZGlyPSRmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQKKyAJCWlmIHRlc3QgLXogIiRoYXJkY29kZV9saWJkaXJzIjsgdGhlbgorIAkJICBoYXJkY29kZV9saWJkaXJzPSIkbGliZGlyIgorIAkJZWxzZQorQEAgLTcxMTMsMTggKzgwNDYsMTggQEAgRU9GCisgCQkgICoiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiKikKKyAJCSAgICA7OworIAkJICAqKQorLQkJICAgIGhhcmRjb2RlX2xpYmRpcnM9IiRoYXJkY29kZV9saWJkaXJzJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgorKwkJICAgIGZ1bmNfYXBwZW5kIGhhcmRjb2RlX2xpYmRpcnMgIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciIKKyAJCSAgICA7OworIAkJICBlc2FjCisgCQlmaQorIAkgICAgICBlbHNlCistCQlldmFsICJmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIiIKKy0JCWRlcF9ycGF0aD0iJGRlcF9ycGF0aCAkZmxhZyIKKysJCWV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKKysJCWZ1bmNfYXBwZW5kIGRlcF9ycGF0aCAiICRmbGFnIgorIAkgICAgICBmaQorIAkgICAgZWxpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCisgCSAgICAgIGNhc2UgIiRwZXJtX3JwYXRoICIgaW4KKyAJICAgICAgKiIgJGxpYmRpciAiKikgOzsKKy0JICAgICAgKikgcGVybV9ycGF0aD0iJHBlcm1fcnBhdGggJGxpYmRpciIgOzsKKysJICAgICAgKikgZnVuY19hcHBlZCBwZXJtX3JwYXRoICIgJGxpYmRpciIgOzsKKyAJICAgICAgZXNhYworIAkgICAgZmkKKyAJICBkb25lCitAQCAtNzEzMyw0MCArODA2NiwzOCBAQCBFT0YKKyAJICAgICB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlycyI7IHRoZW4KKyAJICAgIGxpYmRpcj0iJGhhcmRjb2RlX2xpYmRpcnMiCisgCSAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCI7IHRoZW4KKy0JICAgICAgZXZhbCAiZGVwX3JwYXRoPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGRcIiIKKysJICAgICAgZXZhbCBkZXBfcnBhdGg9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZFwiCisgCSAgICBlbHNlCistCSAgICAgIGV2YWwgImRlcF9ycGF0aD1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIiCisrCSAgICAgIGV2YWwgZGVwX3JwYXRoPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgorIAkgICAgZmkKKyAJICBmaQorIAkgIGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciIgJiYgdGVzdCAtbiAiJHBlcm1fcnBhdGgiOyB0aGVuCisgCSAgICAjIFdlIHNob3VsZCBzZXQgdGhlIHJ1bnBhdGhfdmFyLgorIAkgICAgcnBhdGg9CisgCSAgICBmb3IgZGlyIGluICRwZXJtX3JwYXRoOyBkbworLQkgICAgICBycGF0aD0iJHJwYXRoJGRpcjoiCisrCSAgICAgIGZ1bmNfYXBwZW5kIHJwYXRoICIkZGlyOiIKKyAJICAgIGRvbmUKKy0JICAgIGV2YWwgJHJ1bnBhdGhfdmFyPVwkcnBhdGhcJCRydW5wYXRoX3ZhcgorLQkgICAgZXhwb3J0ICRydW5wYXRoX3ZhcgorKwkgICAgZXZhbCAiJHJ1bnBhdGhfdmFyPSckcnBhdGhcJCRydW5wYXRoX3Zhcic7IGV4cG9ydCAkcnVucGF0aF92YXIiCisgCSAgZmkKKyAJICB0ZXN0IC1uICIkZGVwX3JwYXRoIiAmJiBkZXBsaWJzPSIkZGVwX3JwYXRoICRkZXBsaWJzIgorIAlmaQorIAorIAlzaGxpYnBhdGg9IiRmaW5hbGl6ZV9zaGxpYnBhdGgiCistCXRlc3QgIiRtb2RlIiAhPSByZWxpbmsgJiYgc2hsaWJwYXRoPSIkY29tcGlsZV9zaGxpYnBhdGgkc2hsaWJwYXRoIgorKwl0ZXN0ICIkb3B0X21vZGUiICE9IHJlbGluayAmJiBzaGxpYnBhdGg9IiRjb21waWxlX3NobGlicGF0aCRzaGxpYnBhdGgiCisgCWlmIHRlc3QgLW4gIiRzaGxpYnBhdGgiOyB0aGVuCistCSAgZXZhbCAkc2hsaWJwYXRoX3Zhcj1cJHNobGlicGF0aFwkJHNobGlicGF0aF92YXIKKy0JICBleHBvcnQgJHNobGlicGF0aF92YXIKKysJICBldmFsICIkc2hsaWJwYXRoX3Zhcj0nJHNobGlicGF0aFwkJHNobGlicGF0aF92YXInOyBleHBvcnQgJHNobGlicGF0aF92YXIiCisgCWZpCisgCisgCSMgR2V0IHRoZSByZWFsIGFuZCBsaW5rIG5hbWVzIG9mIHRoZSBsaWJyYXJ5LgorLQlldmFsICJzaGFyZWRfZXh0PVwiJHNocmV4dF9jbWRzXCIiCistCWV2YWwgImxpYnJhcnlfbmFtZXM9XCIkbGlicmFyeV9uYW1lc19zcGVjXCIiCisrCWV2YWwgc2hhcmVkX2V4dD1cIiRzaHJleHRfY21kc1wiCisrCWV2YWwgbGlicmFyeV9uYW1lcz1cIiRsaWJyYXJ5X25hbWVzX3NwZWNcIgorIAlzZXQgZHVtbXkgJGxpYnJhcnlfbmFtZXMKKyAJc2hpZnQKKyAJcmVhbG5hbWU9IiQxIgorIAlzaGlmdAorIAorIAlpZiB0ZXN0IC1uICIkc29uYW1lX3NwZWMiOyB0aGVuCistCSAgZXZhbCAic29uYW1lPVwiJHNvbmFtZV9zcGVjXCIiCisrCSAgZXZhbCBzb25hbWU9XCIkc29uYW1lX3NwZWNcIgorIAllbHNlCisgCSAgc29uYW1lPSIkcmVhbG5hbWUiCisgCWZpCitAQCAtNzE3OCw3ICs4MTA5LDcgQEAgRU9GCisgCWxpbmtuYW1lcz0KKyAJZm9yIGxpbmsKKyAJZG8KKy0JICBsaW5rbmFtZXM9IiRsaW5rbmFtZXMgJGxpbmsiCisrCSAgZnVuY19hcHBlbmQgbGlua25hbWVzICIgJGxpbmsiCisgCWRvbmUKKyAKKyAJIyBVc2Ugc3RhbmRhcmQgb2JqZWN0cyBpZiB0aGV5IGFyZSBwaWMKK0BAIC03MTg5LDcgKzgxMjAsNyBAQCBFT0YKKyAJaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzIiAmJiB0ZXN0IC1uICIkaW5jbHVkZV9leHBzeW1zIjsgdGhlbgorIAkgICRvcHRfZHJ5X3J1biB8fCBjcCAiJGV4cG9ydF9zeW1ib2xzIiAiJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudWV4cCIKKyAJICBleHBvcnRfc3ltYm9scz0iJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudWV4cCIKKy0JICBkZWxmaWxlcz0iJGRlbGZpbGVzICRleHBvcnRfc3ltYm9scyIKKysJICBmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRleHBvcnRfc3ltYm9scyIKKyAJZmkKKyAKKyAJb3JpZ19leHBvcnRfc3ltYm9scz0KK0BAIC03MjIwLDEzICs4MTUxLDQ1IEBAIEVPRgorIAkgICAgJG9wdF9kcnlfcnVuIHx8ICRSTSAkZXhwb3J0X3N5bWJvbHMKKyAJICAgIGNtZHM9JGV4cG9ydF9zeW1ib2xzX2NtZHMKKyAJICAgIHNhdmVfaWZzPSIkSUZTIjsgSUZTPSd+JworLQkgICAgZm9yIGNtZCBpbiAkY21kczsgZG8KKysJICAgIGZvciBjbWQxIGluICRjbWRzOyBkbworIAkgICAgICBJRlM9IiRzYXZlX2lmcyIKKy0JICAgICAgZXZhbCAiY21kPVwiJGNtZFwiIgorLQkgICAgICBmdW5jX2xlbiAiICRjbWQiCistCSAgICAgIGxlbj0kZnVuY19sZW5fcmVzdWx0CistCSAgICAgIGlmIHRlc3QgIiRsZW4iIC1sdCAiJG1heF9jbWRfbGVuIiB8fCB0ZXN0ICIkbWF4X2NtZF9sZW4iIC1sZSAtMTsgdGhlbgorKwkgICAgICAjIFRha2UgdGhlIG5vcm1hbCBicmFuY2ggaWYgdGhlIG5tX2ZpbGVfbGlzdF9zcGVjIGJyYW5jaAorKwkgICAgICAjIGRvZXNuJ3Qgd29yayBvciBpZiB0b29sIGNvbnZlcnNpb24gaXMgbm90IG5lZWRlZC4KKysJICAgICAgY2FzZSAkbm1fZmlsZV9saXN0X3NwZWN+JHRvX3Rvb2xfZmlsZV9jbWQgaW4KKysJCSp+ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcCB8ICp+ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIgfCB+KikKKysJCSAgdHJ5X25vcm1hbF9icmFuY2g9eWVzCisrCQkgIGV2YWwgY21kPVwiJGNtZDFcIgorKwkJICBmdW5jX2xlbiAiICRjbWQiCisrCQkgIGxlbj0kZnVuY19sZW5fcmVzdWx0CisrCQkgIDs7CisrCQkqKQorKwkJICB0cnlfbm9ybWFsX2JyYW5jaD1ubworKwkJICA7OworKwkgICAgICBlc2FjCisrCSAgICAgIGlmIHRlc3QgIiR0cnlfbm9ybWFsX2JyYW5jaCIgPSB5ZXMgXAorKwkJICYmIHsgdGVzdCAiJGxlbiIgLWx0ICIkbWF4X2NtZF9sZW4iIFwKKysJCSAgICAgIHx8IHRlc3QgIiRtYXhfY21kX2xlbiIgLWxlIC0xOyB9CisrCSAgICAgIHRoZW4KKysJCWZ1bmNfc2hvd19ldmFsICIkY21kIiAnZXhpdCAkPycKKysJCXNraXBwZWRfZXhwb3J0PWZhbHNlCisrCSAgICAgIGVsaWYgdGVzdCAtbiAiJG5tX2ZpbGVfbGlzdF9zcGVjIjsgdGhlbgorKwkJZnVuY19iYXNlbmFtZSAiJG91dHB1dCIKKysJCW91dHB1dF9sYT0kZnVuY19iYXNlbmFtZV9yZXN1bHQKKysJCXNhdmVfbGlib2Jqcz0kbGlib2JqcworKwkJc2F2ZV9vdXRwdXQ9JG91dHB1dAorKwkJb3V0cHV0PSR7b3V0cHV0X29iamRpcn0vJHtvdXRwdXRfbGF9Lm5tCisrCQlmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dCIKKysJCWxpYm9ianM9JG5tX2ZpbGVfbGlzdF9zcGVjJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdAorKwkJZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkb3V0cHV0IgorKwkJZnVuY192ZXJib3NlICJjcmVhdGluZyAkTk0gaW5wdXQgZmlsZSBsaXN0OiAkb3V0cHV0IgorKwkJZm9yIG9iaiBpbiAkc2F2ZV9saWJvYmpzOyBkbworKwkJICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG9iaiIKKysJCSAgJEVDSE8gIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiCisrCQlkb25lID4gIiRvdXRwdXQiCisrCQlldmFsIGNtZD1cIiRjbWQxXCIKKyAJCWZ1bmNfc2hvd19ldmFsICIkY21kIiAnZXhpdCAkPycKKysJCW91dHB1dD0kc2F2ZV9vdXRwdXQKKysJCWxpYm9ianM9JHNhdmVfbGlib2JqcworIAkJc2tpcHBlZF9leHBvcnQ9ZmFsc2UKKyAJICAgICAgZWxzZQorIAkJIyBUaGUgY29tbWFuZCBsaW5lIGlzIHRvbyBsb25nIHRvIGV4ZWN1dGUgaW4gb25lIHN0ZXAuCitAQCAtNzI0OCw3ICs4MjExLDcgQEAgRU9GCisgCWlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgJiYgdGVzdCAtbiAiJGluY2x1ZGVfZXhwc3ltcyI7IHRoZW4KKyAJICB0bXBfZXhwb3J0X3N5bWJvbHM9IiRleHBvcnRfc3ltYm9scyIKKyAJICB0ZXN0IC1uICIkb3JpZ19leHBvcnRfc3ltYm9scyIgJiYgdG1wX2V4cG9ydF9zeW1ib2xzPSIkb3JpZ19leHBvcnRfc3ltYm9scyIKKy0JICAkb3B0X2RyeV9ydW4gfHwgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNQMk5MID4+ICIkdG1wX2V4cG9ydF9zeW1ib2xzIgorKwkgICRvcHRfZHJ5X3J1biB8fCBldmFsICckRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU1AyTkwgPj4gIiR0bXBfZXhwb3J0X3N5bWJvbHMiJworIAlmaQorIAorIAlpZiB0ZXN0ICJYJHNraXBwZWRfZXhwb3J0IiAhPSAiWDoiICYmIHRlc3QgLW4gIiRvcmlnX2V4cG9ydF9zeW1ib2xzIjsgdGhlbgorQEAgLTcyNjAsNyArODIyMyw3IEBAIEVPRgorIAkgICMgZ2xvYmFsIHZhcmlhYmxlcy4gam9pbigxKSB3b3VsZCBiZSBuaWNlIGhlcmUsIGJ1dCB1bmZvcnR1bmF0ZWx5CisgCSAgIyBpc24ndCBhIGJsZXNzZWQgdG9vbC4KKyAJICAkb3B0X2RyeV9ydW4gfHwgJFNFRCAtZSAnL1sgLF1EQVRBLyFkO3MsXCguKlwpXChbIFwsXS4qXCksc3xeXDEkfFwxXDJ8LCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIKKy0JICBkZWxmaWxlcz0iJGRlbGZpbGVzICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIiCisrCSAgZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIgorIAkgIGV4cG9ydF9zeW1ib2xzPSRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZgorIAkgICRvcHRfZHJ5X3J1biB8fCAkU0VEIC1mICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlciA8ICRvcmlnX2V4cG9ydF9zeW1ib2xzID4gJGV4cG9ydF9zeW1ib2xzCisgCWZpCitAQCAtNzI3MCw3ICs4MjMzLDcgQEAgRU9GCisgCSAgY2FzZSAiICRjb252ZW5pZW5jZSAiIGluCisgCSAgKiIgJHRlc3RfZGVwbGliICIqKSA7OworIAkgICopCistCSAgICB0bXBfZGVwbGlicz0iJHRtcF9kZXBsaWJzICR0ZXN0X2RlcGxpYiIKKysJICAgIGZ1bmNfYXBwZW5kIHRtcF9kZXBsaWJzICIgJHRlc3RfZGVwbGliIgorIAkgICAgOzsKKyAJICBlc2FjCisgCWRvbmUKK0BAIC03Mjg2LDQzICs4MjQ5LDQzIEBAIEVPRgorIAkgIGZpCisgCSAgaWYgdGVzdCAtbiAiJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjIjsgdGhlbgorIAkgICAgc2F2ZV9saWJvYmpzPSRsaWJvYmpzCistCSAgICBldmFsICJsaWJvYmpzPVwiXCRsaWJvYmpzICR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY1wiIgorKwkgICAgZXZhbCBsaWJvYmpzPVwiXCRsaWJvYmpzICR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY1wiCisgCSAgICB0ZXN0ICJYJGxpYm9ianMiID0gIlggIiAmJiBsaWJvYmpzPQorIAkgIGVsc2UKKyAJICAgIGdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgiCistCSAgICBnZW5lcmF0ZWQ9IiRnZW5lcmF0ZWQgJGdlbnRvcCIKKysJICAgIGZ1bmNfYXBwZW5kIGdlbmVyYXRlZCAiICRnZW50b3AiCisgCisgCSAgICBmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgJGdlbnRvcCAkY29udmVuaWVuY2UKKy0JICAgIGxpYm9ianM9IiRsaWJvYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgorKwkgICAgZnVuY19hcHBlbmQgbGlib2JqcyAiICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgorIAkgICAgdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KKyAJICBmaQorIAlmaQorIAorIAlpZiB0ZXN0ICIkdGhyZWFkX3NhZmUiID0geWVzICYmIHRlc3QgLW4gIiR0aHJlYWRfc2FmZV9mbGFnX3NwZWMiOyB0aGVuCistCSAgZXZhbCAiZmxhZz1cIiR0aHJlYWRfc2FmZV9mbGFnX3NwZWNcIiIKKy0JICBsaW5rZXJfZmxhZ3M9IiRsaW5rZXJfZmxhZ3MgJGZsYWciCisrCSAgZXZhbCBmbGFnPVwiJHRocmVhZF9zYWZlX2ZsYWdfc3BlY1wiCisrCSAgZnVuY19hcHBlbmQgbGlua2VyX2ZsYWdzICIgJGZsYWciCisgCWZpCisgCisgCSMgTWFrZSBhIGJhY2t1cCBvZiB0aGUgdW5pbnN0YWxsZWQgbGlicmFyeSB3aGVuIHJlbGlua2luZworLQlpZiB0ZXN0ICIkbW9kZSIgPSByZWxpbms7IHRoZW4KKy0JICAkb3B0X2RyeV9ydW4gfHwgKGNkICRvdXRwdXRfb2JqZGlyICYmICRSTSAke3JlYWxuYW1lfVUgJiYgJE1WICRyZWFsbmFtZSAke3JlYWxuYW1lfVUpIHx8IGV4aXQgJD8KKysJaWYgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgdGhlbgorKwkgICRvcHRfZHJ5X3J1biB8fCBldmFsICcoY2QgJG91dHB1dF9vYmpkaXIgJiYgJFJNICR7cmVhbG5hbWV9VSAmJiAkTVYgJHJlYWxuYW1lICR7cmVhbG5hbWV9VSknIHx8IGV4aXQgJD8KKyAJZmkKKyAKKyAJIyBEbyBlYWNoIG9mIHRoZSBhcmNoaXZlIGNvbW1hbmRzLgorIAlpZiB0ZXN0ICIkbW9kdWxlIiA9IHllcyAmJiB0ZXN0IC1uICIkbW9kdWxlX2NtZHMiIDsgdGhlbgorIAkgIGlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgJiYgdGVzdCAtbiAiJG1vZHVsZV9leHBzeW1fY21kcyI7IHRoZW4KKy0JICAgIGV2YWwgInRlc3RfY21kcz1cIiRtb2R1bGVfZXhwc3ltX2NtZHNcIiIKKysJICAgIGV2YWwgdGVzdF9jbWRzPVwiJG1vZHVsZV9leHBzeW1fY21kc1wiCisgCSAgICBjbWRzPSRtb2R1bGVfZXhwc3ltX2NtZHMKKyAJICBlbHNlCistCSAgICBldmFsICJ0ZXN0X2NtZHM9XCIkbW9kdWxlX2NtZHNcIiIKKysJICAgIGV2YWwgdGVzdF9jbWRzPVwiJG1vZHVsZV9jbWRzXCIKKyAJICAgIGNtZHM9JG1vZHVsZV9jbWRzCisgCSAgZmkKKyAJZWxzZQorIAkgIGlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgJiYgdGVzdCAtbiAiJGFyY2hpdmVfZXhwc3ltX2NtZHMiOyB0aGVuCistCSAgICBldmFsICJ0ZXN0X2NtZHM9XCIkYXJjaGl2ZV9leHBzeW1fY21kc1wiIgorKwkgICAgZXZhbCB0ZXN0X2NtZHM9XCIkYXJjaGl2ZV9leHBzeW1fY21kc1wiCisgCSAgICBjbWRzPSRhcmNoaXZlX2V4cHN5bV9jbWRzCisgCSAgZWxzZQorLQkgICAgZXZhbCAidGVzdF9jbWRzPVwiJGFyY2hpdmVfY21kc1wiIgorKwkgICAgZXZhbCB0ZXN0X2NtZHM9XCIkYXJjaGl2ZV9jbWRzXCIKKyAJICAgIGNtZHM9JGFyY2hpdmVfY21kcworIAkgIGZpCisgCWZpCitAQCAtNzM2NiwxMCArODMyOSwxMyBAQCBFT0YKKyAJICAgIGVjaG8gJ0lOUFVUICgnID4gJG91dHB1dAorIAkgICAgZm9yIG9iaiBpbiAkc2F2ZV9saWJvYmpzCisgCSAgICBkbworLQkgICAgICAkRUNITyAiJG9iaiIgPj4gJG91dHB1dAorKwkgICAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG9iaiIKKysJICAgICAgJEVDSE8gIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiID4+ICRvdXRwdXQKKyAJICAgIGRvbmUKKyAJICAgIGVjaG8gJyknID4+ICRvdXRwdXQKKy0JICAgIGRlbGZpbGVzPSIkZGVsZmlsZXMgJG91dHB1dCIKKysJICAgIGZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJG91dHB1dCIKKysJICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0IgorKwkgICAgb3V0cHV0PSRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQKKyAJICBlbGlmIHRlc3QgLW4gIiRzYXZlX2xpYm9ianMiICYmIHRlc3QgIlgkc2tpcHBlZF9leHBvcnQiICE9ICJYOiIgJiYgdGVzdCAiWCRmaWxlX2xpc3Rfc3BlYyIgIT0gWDsgdGhlbgorIAkgICAgb3V0cHV0PSR7b3V0cHV0X29iamRpcn0vJHtvdXRwdXRfbGF9LmxuaworIAkgICAgZnVuY192ZXJib3NlICJjcmVhdGluZyBsaW5rZXIgaW5wdXQgZmlsZSBsaXN0OiAkb3V0cHV0IgorQEAgLTczODMsMTUgKzgzNDksMTcgQEAgRU9GCisgCSAgICBmaQorIAkgICAgZm9yIG9iagorIAkgICAgZG8KKy0JICAgICAgJEVDSE8gIiRvYmoiID4+ICRvdXRwdXQKKysJICAgICAgZnVuY190b190b29sX2ZpbGUgIiRvYmoiCisrCSAgICAgICRFQ0hPICIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiA+PiAkb3V0cHV0CisgCSAgICBkb25lCistCSAgICBkZWxmaWxlcz0iJGRlbGZpbGVzICRvdXRwdXQiCistCSAgICBvdXRwdXQ9JGZpcnN0b2JqXCIkZmlsZV9saXN0X3NwZWMkb3V0cHV0XCIKKysJICAgIGZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJG91dHB1dCIKKysJICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0IgorKwkgICAgb3V0cHV0PSRmaXJzdG9ialwiJGZpbGVfbGlzdF9zcGVjJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdFwiCisgCSAgZWxzZQorIAkgICAgaWYgdGVzdCAtbiAiJHNhdmVfbGlib2JqcyI7IHRoZW4KKyAJICAgICAgZnVuY192ZXJib3NlICJjcmVhdGluZyByZWxvYWRhYmxlIG9iamVjdCBmaWxlcy4uLiIKKyAJICAgICAgb3V0cHV0PSRvdXRwdXRfb2JqZGlyLyRvdXRwdXRfbGEtJHtrfS4kb2JqZXh0CistCSAgICAgIGV2YWwgInRlc3RfY21kcz1cIiRyZWxvYWRfY21kc1wiIgorKwkgICAgICBldmFsIHRlc3RfY21kcz1cIiRyZWxvYWRfY21kc1wiCisgCSAgICAgIGZ1bmNfbGVuICIgJHRlc3RfY21kcyIKKyAJICAgICAgbGVuMD0kZnVuY19sZW5fcmVzdWx0CisgCSAgICAgIGxlbj0kbGVuMAorQEAgLTc0MTEsMTIgKzgzNzksMTIgQEAgRU9GCisgCQkgIGlmIHRlc3QgIiRrIiAtZXEgMSA7IHRoZW4KKyAJCSAgICAjIFRoZSBmaXJzdCBmaWxlIGRvZXNuJ3QgaGF2ZSBhIHByZXZpb3VzIGNvbW1hbmQgdG8gYWRkLgorIAkJICAgIHJlbG9hZF9vYmpzPSRvYmpsaXN0CistCQkgICAgZXZhbCAiY29uY2F0X2NtZHM9XCIkcmVsb2FkX2NtZHNcIiIKKysJCSAgICBldmFsIGNvbmNhdF9jbWRzPVwiJHJlbG9hZF9jbWRzXCIKKyAJCSAgZWxzZQorIAkJICAgICMgQWxsIHN1YnNlcXVlbnQgcmVsb2FkYWJsZSBvYmplY3QgZmlsZXMgd2lsbCBsaW5rIGluCisgCQkgICAgIyB0aGUgbGFzdCBvbmUgY3JlYXRlZC4KKyAJCSAgICByZWxvYWRfb2Jqcz0iJG9iamxpc3QgJGxhc3Rfcm9iaiIKKy0JCSAgICBldmFsICJjb25jYXRfY21kcz1cIlwkY29uY2F0X2NtZHN+JHJlbG9hZF9jbWRzflwkUk0gJGxhc3Rfcm9ialwiIgorKwkJICAgIGV2YWwgY29uY2F0X2NtZHM9XCJcJGNvbmNhdF9jbWRzfiRyZWxvYWRfY21kc35cJFJNICRsYXN0X3JvYmpcIgorIAkJICBmaQorIAkJICBsYXN0X3JvYmo9JG91dHB1dF9vYmpkaXIvJG91dHB1dF9sYS0ke2t9LiRvYmpleHQKKyAJCSAgZnVuY19hcml0aCAkayArIDEKK0BAIC03NDMzLDExICs4NDAxLDExIEBAIEVPRgorIAkgICAgICAjIGZpbGVzIHdpbGwgbGluayBpbiB0aGUgbGFzdCBvbmUgY3JlYXRlZC4KKyAJICAgICAgdGVzdCAteiAiJGNvbmNhdF9jbWRzIiB8fCBjb25jYXRfY21kcz0kY29uY2F0X2NtZHN+CisgCSAgICAgIHJlbG9hZF9vYmpzPSIkb2JqbGlzdCAkbGFzdF9yb2JqIgorLQkgICAgICBldmFsICJjb25jYXRfY21kcz1cIlwke2NvbmNhdF9jbWRzfSRyZWxvYWRfY21kc1wiIgorKwkgICAgICBldmFsIGNvbmNhdF9jbWRzPVwiXCR7Y29uY2F0X2NtZHN9JHJlbG9hZF9jbWRzXCIKKyAJICAgICAgaWYgdGVzdCAtbiAiJGxhc3Rfcm9iaiI7IHRoZW4KKy0JICAgICAgICBldmFsICJjb25jYXRfY21kcz1cIlwke2NvbmNhdF9jbWRzfX5cJFJNICRsYXN0X3JvYmpcIiIKKysJICAgICAgICBldmFsIGNvbmNhdF9jbWRzPVwiXCR7Y29uY2F0X2NtZHN9flwkUk0gJGxhc3Rfcm9ialwiCisgCSAgICAgIGZpCistCSAgICAgIGRlbGZpbGVzPSIkZGVsZmlsZXMgJG91dHB1dCIKKysJICAgICAgZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkb3V0cHV0IgorIAorIAkgICAgZWxzZQorIAkgICAgICBvdXRwdXQ9CitAQCAtNzQ1MCw5ICs4NDE4LDkgQEAgRU9GCisgCSAgICAgIGxpYm9ianM9JG91dHB1dAorIAkgICAgICAjIEFwcGVuZCB0aGUgY29tbWFuZCB0byBjcmVhdGUgdGhlIGV4cG9ydCBmaWxlLgorIAkgICAgICB0ZXN0IC16ICIkY29uY2F0X2NtZHMiIHx8IGNvbmNhdF9jbWRzPSRjb25jYXRfY21kc34KKy0JICAgICAgZXZhbCAiY29uY2F0X2NtZHM9XCJcJGNvbmNhdF9jbWRzJGV4cG9ydF9zeW1ib2xzX2NtZHNcIiIKKysJICAgICAgZXZhbCBjb25jYXRfY21kcz1cIlwkY29uY2F0X2NtZHMkZXhwb3J0X3N5bWJvbHNfY21kc1wiCisgCSAgICAgIGlmIHRlc3QgLW4gIiRsYXN0X3JvYmoiOyB0aGVuCistCQlldmFsICJjb25jYXRfY21kcz1cIlwkY29uY2F0X2NtZHN+XCRSTSAkbGFzdF9yb2JqXCIiCisrCQlldmFsIGNvbmNhdF9jbWRzPVwiXCRjb25jYXRfY21kc35cJFJNICRsYXN0X3JvYmpcIgorIAkgICAgICBmaQorIAkgICAgZmkKKyAKK0BAIC03NDcxLDcgKzg0MzksNyBAQCBFT0YKKyAJCWx0X2V4aXQ9JD8KKyAKKyAJCSMgUmVzdG9yZSB0aGUgdW5pbnN0YWxsZWQgbGlicmFyeSBhbmQgZXhpdAorLQkJaWYgdGVzdCAiJG1vZGUiID0gcmVsaW5rOyB0aGVuCisrCQlpZiB0ZXN0ICIkb3B0X21vZGUiID0gcmVsaW5rOyB0aGVuCisgCQkgICggY2QgIiRvdXRwdXRfb2JqZGlyIiAmJiBcCisgCQkgICAgJFJNICIke3JlYWxuYW1lfVQiICYmIFwKKyAJCSAgICAkTVYgIiR7cmVhbG5hbWV9VSIgIiRyZWFsbmFtZSIgKQorQEAgLTc0OTIsNyArODQ2MCw3IEBAIEVPRgorIAkgICAgaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzIiAmJiB0ZXN0IC1uICIkaW5jbHVkZV9leHBzeW1zIjsgdGhlbgorIAkgICAgICB0bXBfZXhwb3J0X3N5bWJvbHM9IiRleHBvcnRfc3ltYm9scyIKKyAJICAgICAgdGVzdCAtbiAiJG9yaWdfZXhwb3J0X3N5bWJvbHMiICYmIHRtcF9leHBvcnRfc3ltYm9scz0iJG9yaWdfZXhwb3J0X3N5bWJvbHMiCistCSAgICAgICRvcHRfZHJ5X3J1biB8fCAkRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU1AyTkwgPj4gIiR0bXBfZXhwb3J0X3N5bWJvbHMiCisrCSAgICAgICRvcHRfZHJ5X3J1biB8fCBldmFsICckRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU1AyTkwgPj4gIiR0bXBfZXhwb3J0X3N5bWJvbHMiJworIAkgICAgZmkKKyAKKyAJICAgIGlmIHRlc3QgLW4gIiRvcmlnX2V4cG9ydF9zeW1ib2xzIjsgdGhlbgorQEAgLTc1MDQsNyArODQ3Miw3IEBAIEVPRgorIAkgICAgICAjIGdsb2JhbCB2YXJpYWJsZXMuIGpvaW4oMSkgd291bGQgYmUgbmljZSBoZXJlLCBidXQgdW5mb3J0dW5hdGVseQorIAkgICAgICAjIGlzbid0IGEgYmxlc3NlZCB0b29sLgorIAkgICAgICAkb3B0X2RyeV9ydW4gfHwgJFNFRCAtZSAnL1sgLF1EQVRBLyFkO3MsXCguKlwpXChbIFwsXS4qXCksc3xeXDEkfFwxXDJ8LCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIKKy0JICAgICAgZGVsZmlsZXM9IiRkZWxmaWxlcyAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIgorKwkgICAgICBmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIiCisgCSAgICAgIGV4cG9ydF9zeW1ib2xzPSRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZgorIAkgICAgICAkb3B0X2RyeV9ydW4gfHwgJFNFRCAtZiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIgPCAkb3JpZ19leHBvcnRfc3ltYm9scyA+ICRleHBvcnRfc3ltYm9scworIAkgICAgZmkKK0BAIC03NTE1LDcgKzg0ODMsNyBAQCBFT0YKKyAJICBvdXRwdXQ9JHNhdmVfb3V0cHV0CisgCisgCSAgaWYgdGVzdCAtbiAiJGNvbnZlbmllbmNlIiAmJiB0ZXN0IC1uICIkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMiOyB0aGVuCistCSAgICBldmFsICJsaWJvYmpzPVwiXCRsaWJvYmpzICR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY1wiIgorKwkgICAgZXZhbCBsaWJvYmpzPVwiXCRsaWJvYmpzICR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY1wiCisgCSAgICB0ZXN0ICJYJGxpYm9ianMiID0gIlggIiAmJiBsaWJvYmpzPQorIAkgIGZpCisgCSAgIyBFeHBhbmQgdGhlIGxpYnJhcnkgbGlua2luZyBjb21tYW5kcyBhZ2FpbiB0byByZXNldCB0aGUKK0BAIC03NTM5LDIzICs4NTA3LDIzIEBAIEVPRgorIAorIAlpZiB0ZXN0IC1uICIkZGVsZmlsZXMiOyB0aGVuCisgCSAgIyBBcHBlbmQgdGhlIGNvbW1hbmQgdG8gcmVtb3ZlIHRlbXBvcmFyeSBmaWxlcyB0byAkY21kcy4KKy0JICBldmFsICJjbWRzPVwiXCRjbWRzflwkUk0gJGRlbGZpbGVzXCIiCisrCSAgZXZhbCBjbWRzPVwiXCRjbWRzflwkUk0gJGRlbGZpbGVzXCIKKyAJZmkKKyAKKyAJIyBBZGQgYW55IG9iamVjdHMgZnJvbSBwcmVsb2FkZWQgY29udmVuaWVuY2UgbGlicmFyaWVzCisgCWlmIHRlc3QgLW4gIiRkbHByZWZpbGVzIjsgdGhlbgorIAkgIGdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgiCistCSAgZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCisrCSAgZnVuY19hcHBlbmQgZ2VuZXJhdGVkICIgJGdlbnRvcCIKKyAKKyAJICBmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgJGdlbnRvcCAkZGxwcmVmaWxlcworLQkgIGxpYm9ianM9IiRsaWJvYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgorKwkgIGZ1bmNfYXBwZW5kIGxpYm9ianMgIiAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKKyAJICB0ZXN0ICJYJGxpYm9ianMiID0gIlggIiAmJiBsaWJvYmpzPQorIAlmaQorIAorIAlzYXZlX2lmcz0iJElGUyI7IElGUz0nficKKyAJZm9yIGNtZCBpbiAkY21kczsgZG8KKyAJICBJRlM9IiRzYXZlX2lmcyIKKy0JICBldmFsICJjbWQ9XCIkY21kXCIiCisrCSAgZXZhbCBjbWQ9XCIkY21kXCIKKyAJICAkb3B0X3NpbGVudCB8fCB7CisgCSAgICBmdW5jX3F1b3RlX2Zvcl9leHBhbmQgIiRjbWQiCisgCSAgICBldmFsICJmdW5jX2VjaG8gJGZ1bmNfcXVvdGVfZm9yX2V4cGFuZF9yZXN1bHQiCitAQCAtNzU2NCw3ICs4NTMyLDcgQEAgRU9GCisgCSAgICBsdF9leGl0PSQ/CisgCisgCSAgICAjIFJlc3RvcmUgdGhlIHVuaW5zdGFsbGVkIGxpYnJhcnkgYW5kIGV4aXQKKy0JICAgIGlmIHRlc3QgIiRtb2RlIiA9IHJlbGluazsgdGhlbgorKwkgICAgaWYgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgdGhlbgorIAkgICAgICAoIGNkICIkb3V0cHV0X29iamRpciIgJiYgXAorIAkgICAgICAgICRSTSAiJHtyZWFsbmFtZX1UIiAmJiBcCisgCQkkTVYgIiR7cmVhbG5hbWV9VSIgIiRyZWFsbmFtZSIgKQorQEAgLTc1NzYsOCArODU0NCw4IEBAIEVPRgorIAlJRlM9IiRzYXZlX2lmcyIKKyAKKyAJIyBSZXN0b3JlIHRoZSB1bmluc3RhbGxlZCBsaWJyYXJ5IGFuZCBleGl0CistCWlmIHRlc3QgIiRtb2RlIiA9IHJlbGluazsgdGhlbgorLQkgICRvcHRfZHJ5X3J1biB8fCAoY2QgJG91dHB1dF9vYmpkaXIgJiYgJFJNICR7cmVhbG5hbWV9VCAmJiAkTVYgJHJlYWxuYW1lICR7cmVhbG5hbWV9VCAmJiAkTVYgJHtyZWFsbmFtZX1VICRyZWFsbmFtZSkgfHwgZXhpdCAkPworKwlpZiB0ZXN0ICIkb3B0X21vZGUiID0gcmVsaW5rOyB0aGVuCisrCSAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgJyhjZCAkb3V0cHV0X29iamRpciAmJiAkUk0gJHtyZWFsbmFtZX1UICYmICRNViAkcmVhbG5hbWUgJHtyZWFsbmFtZX1UICYmICRNViAke3JlYWxuYW1lfVUgJHJlYWxuYW1lKScgfHwgZXhpdCAkPworIAorIAkgIGlmIHRlc3QgLW4gIiRjb252ZW5pZW5jZSI7IHRoZW4KKyAJICAgIGlmIHRlc3QgLXogIiR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYyI7IHRoZW4KK0BAIC03NjU2LDE3ICs4NjI0LDIwIEBAIEVPRgorIAorICAgICAgIGlmIHRlc3QgLW4gIiRjb252ZW5pZW5jZSI7IHRoZW4KKyAJaWYgdGVzdCAtbiAiJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjIjsgdGhlbgorLQkgIGV2YWwgInRtcF93aG9sZV9hcmNoaXZlX2ZsYWdzPVwiJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjXCIiCisrCSAgZXZhbCB0bXBfd2hvbGVfYXJjaGl2ZV9mbGFncz1cIiR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY1wiCisgCSAgcmVsb2FkX2NvbnZfb2Jqcz0kcmVsb2FkX29ianNcIGAkRUNITyAiJHRtcF93aG9sZV9hcmNoaXZlX2ZsYWdzIiB8ICRTRUQgJ3N8LHwgfGcnYAorIAllbHNlCisgCSAgZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke29ian14IgorLQkgIGdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgorKwkgIGZ1bmNfYXBwZW5kIGdlbmVyYXRlZCAiICRnZW50b3AiCisgCisgCSAgZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGNvbnZlbmllbmNlCisgCSAgcmVsb2FkX2NvbnZfb2Jqcz0iJHJlbG9hZF9vYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgorIAlmaQorICAgICAgIGZpCisgCisrICAgICAgIyBJZiB3ZSdyZSBub3QgYnVpbGRpbmcgc2hhcmVkLCB3ZSBuZWVkIHRvIHVzZSBub25fcGljX29ianMKKysgICAgICB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiAhPSB5ZXMgJiYgbGlib2Jqcz0iJG5vbl9waWNfb2JqZWN0cyIKKysKKyAgICAgICAjIENyZWF0ZSB0aGUgb2xkLXN0eWxlIG9iamVjdC4KKyAgICAgICByZWxvYWRfb2Jqcz0iJG9ianMkb2xkX2RlcGxpYnMgImAkRUNITyAiJGxpYm9ianMiIHwgJFNQMk5MIHwgJFNFRCAiL1wuJHtsaWJleHR9JC9kOyAvXC5saWIkL2Q7ICRsbzJvIiB8ICROTDJTUGAiICRyZWxvYWRfY29udl9vYmpzIiAjIyMgdGVzdHN1aXRlOiBza2lwIG5lc3RlZCBxdW90aW5nIHRlc3QKKyAKK0BAIC03NjkwLDcgKzg2NjEsNyBAQCBFT0YKKyAJIyBDcmVhdGUgYW4gaW52YWxpZCBsaWJ0b29sIG9iamVjdCBpZiBubyBQSUMsIHNvIHRoYXQgd2UgZG9uJ3QKKyAJIyBhY2NpZGVudGFsbHkgbGluayBpdCBpbnRvIGEgcHJvZ3JhbS4KKyAJIyAkc2hvdyAiZWNobyB0aW1lc3RhbXAgPiAkbGlib2JqIgorLQkjICRvcHRfZHJ5X3J1biB8fCBlY2hvIHRpbWVzdGFtcCA+ICRsaWJvYmogfHwgZXhpdCAkPworKwkjICRvcHRfZHJ5X3J1biB8fCBldmFsICJlY2hvIHRpbWVzdGFtcCA+ICRsaWJvYmoiIHx8IGV4aXQgJD8KKyAJZXhpdCAkRVhJVF9TVUNDRVNTCisgICAgICAgZmkKKyAKK0BAIC03NzQwLDggKzg3MTEsOCBAQCBFT0YKKyAJaWYgdGVzdCAiJHRhZ25hbWUiID0gQ1hYIDsgdGhlbgorIAkgIGNhc2UgJHtNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQtMTAuMH0gaW4KKyAJICAgIDEwLlswMTIzXSkKKy0JICAgICAgY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kICR7d2x9LWJpbmRfYXRfbG9hZCIKKy0JICAgICAgZmluYWxpemVfY29tbWFuZD0iJGZpbmFsaXplX2NvbW1hbmQgJHt3bH0tYmluZF9hdF9sb2FkIgorKwkgICAgICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAke3dsfS1iaW5kX2F0X2xvYWQiCisrCSAgICAgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAke3dsfS1iaW5kX2F0X2xvYWQiCisgCSAgICA7OworIAkgIGVzYWMKKyAJZmkKK0BAIC03NzYxLDcgKzg3MzIsNyBAQCBFT0YKKyAJKikKKyAJICBjYXNlICIgJGNvbXBpbGVfZGVwbGlicyAiIGluCisgCSAgKiIgLUwkcGF0aC8kb2JqZGlyICIqKQorLQkgICAgbmV3X2xpYnM9IiRuZXdfbGlicyAtTCRwYXRoLyRvYmpkaXIiIDs7CisrCSAgICBmdW5jX2FwcGVuZCBuZXdfbGlicyAiIC1MJHBhdGgvJG9iamRpciIgOzsKKyAJICBlc2FjCisgCSAgOzsKKyAJZXNhYworQEAgLTc3NzEsMTcgKzg3NDIsMTcgQEAgRU9GCisgCS1MKikKKyAJICBjYXNlICIgJG5ld19saWJzICIgaW4KKyAJICAqIiAkZGVwbGliICIqKSA7OworLQkgICopIG5ld19saWJzPSIkbmV3X2xpYnMgJGRlcGxpYiIgOzsKKysJICAqKSBmdW5jX2FwcGVuZCBuZXdfbGlicyAiICRkZXBsaWIiIDs7CisgCSAgZXNhYworIAkgIDs7CistCSopIG5ld19saWJzPSIkbmV3X2xpYnMgJGRlcGxpYiIgOzsKKysJKikgZnVuY19hcHBlbmQgbmV3X2xpYnMgIiAkZGVwbGliIiA7OworIAllc2FjCisgICAgICAgZG9uZQorICAgICAgIGNvbXBpbGVfZGVwbGlicz0iJG5ld19saWJzIgorIAorIAorLSAgICAgIGNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCAkY29tcGlsZV9kZXBsaWJzIgorLSAgICAgIGZpbmFsaXplX2NvbW1hbmQ9IiRmaW5hbGl6ZV9jb21tYW5kICRmaW5hbGl6ZV9kZXBsaWJzIgorKyAgICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRjb21waWxlX2RlcGxpYnMiCisrICAgICAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRmaW5hbGl6ZV9kZXBsaWJzIgorIAorICAgICAgIGlmIHRlc3QgLW4gIiRycGF0aCR4cnBhdGgiOyB0aGVuCisgCSMgSWYgdGhlIHVzZXIgc3BlY2lmaWVkIGFueSBycGF0aCBmbGFncywgdGhlbiBhZGQgdGhlbS4KK0BAIC03Nzg5LDcgKzg3NjAsNyBAQCBFT0YKKyAJICAjIFRoaXMgaXMgdGhlIG1hZ2ljIHRvIHVzZSAtcnBhdGguCisgCSAgY2FzZSAiJGZpbmFsaXplX3JwYXRoICIgaW4KKyAJICAqIiAkbGliZGlyICIqKSA7OworLQkgICopIGZpbmFsaXplX3JwYXRoPSIkZmluYWxpemVfcnBhdGggJGxpYmRpciIgOzsKKysJICAqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9ycGF0aCAiICRsaWJkaXIiIDs7CisgCSAgZXNhYworIAlkb25lCisgICAgICAgZmkKK0BAIC03ODA4LDE4ICs4Nzc5LDE4IEBAIEVPRgorIAkgICAgICAqIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIiopCisgCQk7OworIAkgICAgICAqKQorLQkJaGFyZGNvZGVfbGliZGlycz0iJGhhcmRjb2RlX2xpYmRpcnMkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIiCisrCQlmdW5jX2FwcGVuZCBoYXJkY29kZV9saWJkaXJzICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIiCisgCQk7OworIAkgICAgICBlc2FjCisgCSAgICBmaQorIAkgIGVsc2UKKy0JICAgIGV2YWwgImZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiIgorLQkgICAgcnBhdGg9IiRycGF0aCAkZmxhZyIKKysJICAgIGV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKKysJICAgIGZ1bmNfYXBwZW5kIHJwYXRoICIgJGZsYWciCisgCSAgZmkKKyAJZWxpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCisgCSAgY2FzZSAiJHBlcm1fcnBhdGggIiBpbgorIAkgICoiICRsaWJkaXIgIiopIDs7CistCSAgKikgcGVybV9ycGF0aD0iJHBlcm1fcnBhdGggJGxpYmRpciIgOzsKKysJICAqKSBmdW5jX2FwcGVuZCBwZXJtX3JwYXRoICIgJGxpYmRpciIgOzsKKyAJICBlc2FjCisgCWZpCisgCWNhc2UgJGhvc3QgaW4KK0BAIC03ODI4LDEyICs4Nzk5LDEyIEBAIEVPRgorIAkgIGNhc2UgOiRkbGxzZWFyY2hwYXRoOiBpbgorIAkgICoiOiRsaWJkaXI6IiopIDs7CisgCSAgOjopIGRsbHNlYXJjaHBhdGg9JGxpYmRpcjs7CistCSAgKikgZGxsc2VhcmNocGF0aD0iJGRsbHNlYXJjaHBhdGg6JGxpYmRpciI7OworKwkgICopIGZ1bmNfYXBwZW5kIGRsbHNlYXJjaHBhdGggIjokbGliZGlyIjs7CisgCSAgZXNhYworIAkgIGNhc2UgOiRkbGxzZWFyY2hwYXRoOiBpbgorIAkgICoiOiR0ZXN0YmluZGlyOiIqKSA7OworIAkgIDo6KSBkbGxzZWFyY2hwYXRoPSR0ZXN0YmluZGlyOzsKKy0JICAqKSBkbGxzZWFyY2hwYXRoPSIkZGxsc2VhcmNocGF0aDokdGVzdGJpbmRpciI7OworKwkgICopIGZ1bmNfYXBwZW5kIGRsbHNlYXJjaHBhdGggIjokdGVzdGJpbmRpciI7OworIAkgIGVzYWMKKyAJICA7OworIAllc2FjCitAQCAtNzg0Miw3ICs4ODEzLDcgQEAgRU9GCisgICAgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiICYmCisgCSB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlycyI7IHRoZW4KKyAJbGliZGlyPSIkaGFyZGNvZGVfbGliZGlycyIKKy0JZXZhbCAicnBhdGg9XCIgJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIiIKKysJZXZhbCBycGF0aD1cIiAkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCisgICAgICAgZmkKKyAgICAgICBjb21waWxlX3JwYXRoPSIkcnBhdGgiCisgCitAQCAtNzg1OSwxOCArODgzMCwxOCBAQCBFT0YKKyAJICAgICAgKiIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciIqKQorIAkJOzsKKyAJICAgICAgKikKKy0JCWhhcmRjb2RlX2xpYmRpcnM9IiRoYXJkY29kZV9saWJkaXJzJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgorKwkJZnVuY19hcHBlbmQgaGFyZGNvZGVfbGliZGlycyAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgorIAkJOzsKKyAJICAgICAgZXNhYworIAkgICAgZmkKKyAJICBlbHNlCistCSAgICBldmFsICJmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIiIKKy0JICAgIHJwYXRoPSIkcnBhdGggJGZsYWciCisrCSAgICBldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCisrCSAgICBmdW5jX2FwcGVuZCBycGF0aCAiICRmbGFnIgorIAkgIGZpCisgCWVsaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgorIAkgIGNhc2UgIiRmaW5hbGl6ZV9wZXJtX3JwYXRoICIgaW4KKyAJICAqIiAkbGliZGlyICIqKSA7OworLQkgICopIGZpbmFsaXplX3Blcm1fcnBhdGg9IiRmaW5hbGl6ZV9wZXJtX3JwYXRoICRsaWJkaXIiIDs7CisrCSAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfcGVybV9ycGF0aCAiICRsaWJkaXIiIDs7CisgCSAgZXNhYworIAlmaQorICAgICAgIGRvbmUKK0BAIC03ODc4LDcgKzg4NDksNyBAQCBFT0YKKyAgICAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciIgJiYKKyAJIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJzIjsgdGhlbgorIAlsaWJkaXI9IiRoYXJkY29kZV9saWJkaXJzIgorLQlldmFsICJycGF0aD1cIiAkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiIgorKwlldmFsIHJwYXRoPVwiICRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKKyAgICAgICBmaQorICAgICAgIGZpbmFsaXplX3JwYXRoPSIkcnBhdGgiCisgCitAQCAtNzkyMSw2ICs4ODkyLDEyIEBAIEVPRgorIAlleGl0X3N0YXR1cz0wCisgCWZ1bmNfc2hvd19ldmFsICIkbGlua19jb21tYW5kIiAnZXhpdF9zdGF0dXM9JD8nCisgCisrCWlmIHRlc3QgLW4gIiRwb3N0bGlua19jbWRzIjsgdGhlbgorKwkgIGZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0IgorKwkgIHBvc3RsaW5rX2NtZHM9YGZ1bmNfZWNob19hbGwgIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgLWUgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0IiclZycgLWUgJ3MlQFRPT0xfT1VUUFVUQCUnIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiJyVnJ2AKKysJICBmdW5jX2V4ZWN1dGVfY21kcyAiJHBvc3RsaW5rX2NtZHMiICdleGl0ICQ/JworKwlmaQorKworIAkjIERlbGV0ZSB0aGUgZ2VuZXJhdGVkIGZpbGVzLgorIAlpZiB0ZXN0IC1mICIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9Uy4ke29iamV4dH0iOyB0aGVuCisgCSAgZnVuY19zaG93X2V2YWwgJyRSTSAiJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfVMuJHtvYmpleHR9IicKK0BAIC03OTQzLDcgKzg5MjAsNyBAQCBFT0YKKyAJICAjIFdlIHNob3VsZCBzZXQgdGhlIHJ1bnBhdGhfdmFyLgorIAkgIHJwYXRoPQorIAkgIGZvciBkaXIgaW4gJHBlcm1fcnBhdGg7IGRvCistCSAgICBycGF0aD0iJHJwYXRoJGRpcjoiCisrCSAgICBmdW5jX2FwcGVuZCBycGF0aCAiJGRpcjoiCisgCSAgZG9uZQorIAkgIGNvbXBpbGVfdmFyPSIkcnVucGF0aF92YXI9XCIkcnBhdGhcJCRydW5wYXRoX3ZhclwiICIKKyAJZmkKK0BAIC03OTUxLDcgKzg5MjgsNyBAQCBFT0YKKyAJICAjIFdlIHNob3VsZCBzZXQgdGhlIHJ1bnBhdGhfdmFyLgorIAkgIHJwYXRoPQorIAkgIGZvciBkaXIgaW4gJGZpbmFsaXplX3Blcm1fcnBhdGg7IGRvCistCSAgICBycGF0aD0iJHJwYXRoJGRpcjoiCisrCSAgICBmdW5jX2FwcGVuZCBycGF0aCAiJGRpcjoiCisgCSAgZG9uZQorIAkgIGZpbmFsaXplX3Zhcj0iJHJ1bnBhdGhfdmFyPVwiJHJwYXRoXCQkcnVucGF0aF92YXJcIiAiCisgCWZpCitAQCAtNzk2Niw2ICs4OTQzLDEzIEBAIEVPRgorIAkkb3B0X2RyeV9ydW4gfHwgJFJNICRvdXRwdXQKKyAJIyBMaW5rIHRoZSBleGVjdXRhYmxlIGFuZCBleGl0CisgCWZ1bmNfc2hvd19ldmFsICIkbGlua19jb21tYW5kIiAnZXhpdCAkPycKKysKKysJaWYgdGVzdCAtbiAiJHBvc3RsaW5rX2NtZHMiOyB0aGVuCisrCSAgZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXQiCisrCSAgcG9zdGxpbmtfY21kcz1gZnVuY19lY2hvX2FsbCAiJHBvc3RsaW5rX2NtZHMiIHwgJFNFRCAtZSAncyVAT1VUUFVUQCUnIiRvdXRwdXQiJyVnJyAtZSAncyVAVE9PTF9PVVRQVVRAJSciJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCInJWcnYAorKwkgIGZ1bmNfZXhlY3V0ZV9jbWRzICIkcG9zdGxpbmtfY21kcyIgJ2V4aXQgJD8nCisrCWZpCisrCisgCWV4aXQgJEVYSVRfU1VDQ0VTUworICAgICAgIGZpCisgCitAQCAtNzk5OSw2ICs4OTgzLDEyIEBAIEVPRgorIAorICAgICAgIGZ1bmNfc2hvd19ldmFsICIkbGlua19jb21tYW5kIiAnZXhpdCAkPycKKyAKKysgICAgICBpZiB0ZXN0IC1uICIkcG9zdGxpbmtfY21kcyI7IHRoZW4KKysJZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lIgorKwlwb3N0bGlua19jbWRzPWBmdW5jX2VjaG9fYWxsICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEIC1lICdzJUBPVVRQVVRAJSciJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUiJyVnJyAtZSAncyVAVE9PTF9PVVRQVVRAJSciJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCInJWcnYAorKwlmdW5jX2V4ZWN1dGVfY21kcyAiJHBvc3RsaW5rX2NtZHMiICdleGl0ICQ/JworKyAgICAgIGZpCisrCisgICAgICAgIyBOb3cgY3JlYXRlIHRoZSB3cmFwcGVyIHNjcmlwdC4KKyAgICAgICBmdW5jX3ZlcmJvc2UgImNyZWF0aW5nICRvdXRwdXQiCisgCitAQCAtODA5Niw3ICs5MDg2LDcgQEAgRU9GCisgCWVsc2UKKyAJICBvbGRvYmpzPSIkb2xkX2RlcGxpYnMgJG5vbl9waWNfb2JqZWN0cyIKKyAJICBpZiB0ZXN0ICIkcHJlbG9hZCIgPSB5ZXMgJiYgdGVzdCAtZiAiJHN5bWZpbGVvYmoiOyB0aGVuCistCSAgICBvbGRvYmpzPSIkb2xkb2JqcyAkc3ltZmlsZW9iaiIKKysJICAgIGZ1bmNfYXBwZW5kIG9sZG9ianMgIiAkc3ltZmlsZW9iaiIKKyAJICBmaQorIAlmaQorIAlhZGRsaWJzPSIkb2xkX2NvbnZlbmllbmNlIgorQEAgLTgxMDQsMTAgKzkwOTQsMTAgQEAgRU9GCisgCisgICAgICAgaWYgdGVzdCAtbiAiJGFkZGxpYnMiOyB0aGVuCisgCWdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgiCistCWdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgorKwlmdW5jX2FwcGVuZCBnZW5lcmF0ZWQgIiAkZ2VudG9wIgorIAorIAlmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgJGdlbnRvcCAkYWRkbGlicworLQlvbGRvYmpzPSIkb2xkb2JqcyAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKKysJZnVuY19hcHBlbmQgb2xkb2JqcyAiICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgorICAgICAgIGZpCisgCisgICAgICAgIyBEbyBlYWNoIGNvbW1hbmQgaW4gdGhlIGFyY2hpdmUgY29tbWFuZHMuCitAQCAtODExOCwxMCArOTEwOCwxMCBAQCBFT0YKKyAJIyBBZGQgYW55IG9iamVjdHMgZnJvbSBwcmVsb2FkZWQgY29udmVuaWVuY2UgbGlicmFyaWVzCisgCWlmIHRlc3QgLW4gIiRkbHByZWZpbGVzIjsgdGhlbgorIAkgIGdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgiCistCSAgZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCisrCSAgZnVuY19hcHBlbmQgZ2VuZXJhdGVkICIgJGdlbnRvcCIKKyAKKyAJICBmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgJGdlbnRvcCAkZGxwcmVmaWxlcworLQkgIG9sZG9ianM9IiRvbGRvYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgorKwkgIGZ1bmNfYXBwZW5kIG9sZG9ianMgIiAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKKyAJZmkKKyAKKyAJIyBQT1NJWCBkZW1hbmRzIG5vIHBhdGhzIHRvIGJlIGVuY29kZWQgaW4gYXJjaGl2ZXMuICBXZSBoYXZlCitAQCAtODEzOSw3ICs5MTI5LDcgQEAgRU9GCisgCWVsc2UKKyAJICBlY2hvICJjb3B5aW5nIHNlbGVjdGVkIG9iamVjdCBmaWxlcyB0byBhdm9pZCBiYXNlbmFtZSBjb25mbGljdHMuLi4iCisgCSAgZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9eCIKKy0JICBnZW5lcmF0ZWQ9IiRnZW5lcmF0ZWQgJGdlbnRvcCIKKysJICBmdW5jX2FwcGVuZCBnZW5lcmF0ZWQgIiAkZ2VudG9wIgorIAkgIGZ1bmNfbWtkaXJfcCAiJGdlbnRvcCIKKyAJICBzYXZlX29sZG9ianM9JG9sZG9ianMKKyAJICBvbGRvYmpzPQorQEAgLTgxNjMsMTggKzkxNTMsMjggQEAgRU9GCisgCQllc2FjCisgCSAgICAgIGRvbmUKKyAJICAgICAgZnVuY19zaG93X2V2YWwgImxuICRvYmogJGdlbnRvcC8kbmV3b2JqIHx8IGNwICRvYmogJGdlbnRvcC8kbmV3b2JqIgorLQkgICAgICBvbGRvYmpzPSIkb2xkb2JqcyAkZ2VudG9wLyRuZXdvYmoiCisrCSAgICAgIGZ1bmNfYXBwZW5kIG9sZG9ianMgIiAkZ2VudG9wLyRuZXdvYmoiCisgCSAgICAgIDs7CistCSAgICAqKSBvbGRvYmpzPSIkb2xkb2JqcyAkb2JqIiA7OworKwkgICAgKikgZnVuY19hcHBlbmQgb2xkb2JqcyAiICRvYmoiIDs7CisgCSAgICBlc2FjCisgCSAgZG9uZQorIAlmaQorLQlldmFsICJjbWRzPVwiJG9sZF9hcmNoaXZlX2NtZHNcIiIKKysJZXZhbCBjbWRzPVwiJG9sZF9hcmNoaXZlX2NtZHNcIgorIAorIAlmdW5jX2xlbiAiICRjbWRzIgorIAlsZW49JGZ1bmNfbGVuX3Jlc3VsdAorIAlpZiB0ZXN0ICIkbGVuIiAtbHQgIiRtYXhfY21kX2xlbiIgfHwgdGVzdCAiJG1heF9jbWRfbGVuIiAtbGUgLTE7IHRoZW4KKyAJICBjbWRzPSRvbGRfYXJjaGl2ZV9jbWRzCisrCWVsaWYgdGVzdCAtbiAiJGFyY2hpdmVyX2xpc3Rfc3BlYyI7IHRoZW4KKysJICBmdW5jX3ZlcmJvc2UgInVzaW5nIGNvbW1hbmQgZmlsZSBhcmNoaXZlIGxpbmtpbmcuLi4iCisrCSAgZm9yIG9iaiBpbiAkb2xkb2JqcworKwkgIGRvCisrCSAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG9iaiIKKysJICAgICRFQ0hPICIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IgorKwkgIGRvbmUgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5saWJjbWQKKysJICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUubGliY21kIgorKwkgIG9sZG9ianM9IiAkYXJjaGl2ZXJfbGlzdF9zcGVjJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIKKysJICBjbWRzPSRvbGRfYXJjaGl2ZV9jbWRzCisgCWVsc2UKKyAJICAjIHRoZSBjb21tYW5kIGxpbmUgaXMgdG9vIGxvbmcgdG8gbGluayBpbiBvbmUgc3RlcCwgbGluayBpbiBwYXJ0cworIAkgIGZ1bmNfdmVyYm9zZSAidXNpbmcgcGllY2V3aXNlIGFyY2hpdmUgbGlua2luZy4uLiIKK0BAIC04MTg5LDcgKzkxODksNyBAQCBFT0YKKyAJICBkbworIAkgICAgbGFzdF9vbGRvYmo9JG9iagorIAkgIGRvbmUKKy0JICBldmFsICJ0ZXN0X2NtZHM9XCIkb2xkX2FyY2hpdmVfY21kc1wiIgorKwkgIGV2YWwgdGVzdF9jbWRzPVwiJG9sZF9hcmNoaXZlX2NtZHNcIgorIAkgIGZ1bmNfbGVuICIgJHRlc3RfY21kcyIKKyAJICBsZW4wPSRmdW5jX2xlbl9yZXN1bHQKKyAJICBsZW49JGxlbjAKK0BAIC04MjA4LDcgKzkyMDgsNyBAQCBFT0YKKyAJCVJBTkxJQj0kc2F2ZV9SQU5MSUIKKyAJICAgICAgZmkKKyAJICAgICAgdGVzdCAteiAiJGNvbmNhdF9jbWRzIiB8fCBjb25jYXRfY21kcz0kY29uY2F0X2NtZHN+CistCSAgICAgIGV2YWwgImNvbmNhdF9jbWRzPVwiXCR7Y29uY2F0X2NtZHN9JG9sZF9hcmNoaXZlX2NtZHNcIiIKKysJICAgICAgZXZhbCBjb25jYXRfY21kcz1cIlwke2NvbmNhdF9jbWRzfSRvbGRfYXJjaGl2ZV9jbWRzXCIKKyAJICAgICAgb2JqbGlzdD0KKyAJICAgICAgbGVuPSRsZW4wCisgCSAgICBmaQorQEAgLTgyMTYsOSArOTIxNiw5IEBAIEVPRgorIAkgIFJBTkxJQj0kc2F2ZV9SQU5MSUIKKyAJICBvbGRvYmpzPSRvYmpsaXN0CisgCSAgaWYgdGVzdCAiWCRvbGRvYmpzIiA9ICJYIiA7IHRoZW4KKy0JICAgIGV2YWwgImNtZHM9XCJcJGNvbmNhdF9jbWRzXCIiCisrCSAgICBldmFsIGNtZHM9XCJcJGNvbmNhdF9jbWRzXCIKKyAJICBlbHNlCistCSAgICBldmFsICJjbWRzPVwiXCRjb25jYXRfY21kc35cJG9sZF9hcmNoaXZlX2NtZHNcIiIKKysJICAgIGV2YWwgY21kcz1cIlwkY29uY2F0X2NtZHN+XCRvbGRfYXJjaGl2ZV9jbWRzXCIKKyAJICBmaQorIAlmaQorICAgICAgIGZpCitAQCAtODI2OCwxMiArOTI2OCwyMyBAQCBFT0YKKyAJICAgICAgKi5sYSkKKyAJCWZ1bmNfYmFzZW5hbWUgIiRkZXBsaWIiCisgCQluYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCistCQlsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGRlcGxpYmAKKysJCWZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZGVwbGliIgorKwkJZXZhbCBsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdGAKKyAJCXRlc3QgLXogIiRsaWJkaXIiICYmIFwKKyAJCSAgZnVuY19mYXRhbF9lcnJvciAiXGAkZGVwbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCistCQluZXdkZXBlbmRlbmN5X2xpYnM9IiRuZXdkZXBlbmRlbmN5X2xpYnMgJGxpYmRpci8kbmFtZSIKKysJCWZ1bmNfYXBwZW5kIG5ld2RlcGVuZGVuY3lfbGlicyAiICR7bHRfc3lzcm9vdDorPX0kbGliZGlyLyRuYW1lIgorKwkJOzsKKysJICAgICAgLUwqKQorKwkJZnVuY19zdHJpcG5hbWUgLUwgJycgIiRkZXBsaWIiCisrCQlmdW5jX3JlcGxhY2Vfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKysJCWZ1bmNfYXBwZW5kIG5ld2RlcGVuZGVuY3lfbGlicyAiIC1MJGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdCIKKyAJCTs7CistCSAgICAgICopIG5ld2RlcGVuZGVuY3lfbGlicz0iJG5ld2RlcGVuZGVuY3lfbGlicyAkZGVwbGliIiA7OworKwkgICAgICAtUiopCisrCQlmdW5jX3N0cmlwbmFtZSAtUiAnJyAiJGRlcGxpYiIKKysJCWZ1bmNfcmVwbGFjZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorKwkJZnVuY19hcHBlbmQgbmV3ZGVwZW5kZW5jeV9saWJzICIgLVIkZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0IgorKwkJOzsKKysJICAgICAgKikgZnVuY19hcHBlbmQgbmV3ZGVwZW5kZW5jeV9saWJzICIgJGRlcGxpYiIgOzsKKyAJICAgICAgZXNhYworIAkgICAgZG9uZQorIAkgICAgZGVwZW5kZW5jeV9saWJzPSIkbmV3ZGVwZW5kZW5jeV9saWJzIgorQEAgLTgyODQsMTIgKzkyOTUsMTQgQEAgRU9GCisgCSAgICAgICoubGEpCisgCSAgICAgICAgZnVuY19iYXNlbmFtZSAiJGxpYiIKKyAJCW5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKy0JCWxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkbGliYAorKwkJZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRsaWIiCisrCQlldmFsIGxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0YAorKworIAkJdGVzdCAteiAiJGxpYmRpciIgJiYgXAorIAkJICBmdW5jX2ZhdGFsX2Vycm9yICJcYCRsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKKy0JCW5ld2RsZmlsZXM9IiRuZXdkbGZpbGVzICRsaWJkaXIvJG5hbWUiCisrCQlmdW5jX2FwcGVuZCBuZXdkbGZpbGVzICIgJHtsdF9zeXNyb290Ois9fSRsaWJkaXIvJG5hbWUiCisgCQk7OworLQkgICAgICAqKSBuZXdkbGZpbGVzPSIkbmV3ZGxmaWxlcyAkbGliIiA7OworKwkgICAgICAqKSBmdW5jX2FwcGVuZCBuZXdkbGZpbGVzICIgJGxpYiIgOzsKKyAJICAgICAgZXNhYworIAkgICAgZG9uZQorIAkgICAgZGxmaWxlcz0iJG5ld2RsZmlsZXMiCitAQCAtODMwMywxMCArOTMxNiwxMSBAQCBFT0YKKyAJCSMgdGhlIGxpYnJhcnk6CisgCQlmdW5jX2Jhc2VuYW1lICIkbGliIgorIAkJbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorLQkJbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRsaWJgCisrCQlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGxpYiIKKysJCWV2YWwgbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHRgCisgCQl0ZXN0IC16ICIkbGliZGlyIiAmJiBcCisgCQkgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgorLQkJbmV3ZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMgJGxpYmRpci8kbmFtZSIKKysJCWZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAke2x0X3N5c3Jvb3Q6Kz19JGxpYmRpci8kbmFtZSIKKyAJCTs7CisgCSAgICAgIGVzYWMKKyAJICAgIGRvbmUKK0BAIC04MzE4LDcgKzkzMzIsNyBAQCBFT0YKKyAJCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgYWJzPSIkbGliIiA7OworIAkJKikgYWJzPWBwd2RgIi8kbGliIiA7OworIAkgICAgICBlc2FjCistCSAgICAgIG5ld2RsZmlsZXM9IiRuZXdkbGZpbGVzICRhYnMiCisrCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RsZmlsZXMgIiAkYWJzIgorIAkgICAgZG9uZQorIAkgICAgZGxmaWxlcz0iJG5ld2RsZmlsZXMiCisgCSAgICBuZXdkbHByZWZpbGVzPQorQEAgLTgzMjcsNyArOTM0MSw3IEBAIEVPRgorIAkJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSBhYnM9IiRsaWIiIDs7CisgCQkqKSBhYnM9YHB3ZGAiLyRsaWIiIDs7CisgCSAgICAgIGVzYWMKKy0JICAgICAgbmV3ZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMgJGFicyIKKysJICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRhYnMiCisgCSAgICBkb25lCisgCSAgICBkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyIKKyAJICBmaQorQEAgLTg0MTIsNyArOTQyNiw3IEBAIHJlbGlua19jb21tYW5kPVwiJHJlbGlua19jb21tYW5kXCIiCisgICAgIGV4aXQgJEVYSVRfU1VDQ0VTUworIH0KKyAKKy17IHRlc3QgIiRtb2RlIiA9IGxpbmsgfHwgdGVzdCAiJG1vZGUiID0gcmVsaW5rOyB9ICYmCisreyB0ZXN0ICIkb3B0X21vZGUiID0gbGluayB8fCB0ZXN0ICIkb3B0X21vZGUiID0gcmVsaW5rOyB9ICYmCisgICAgIGZ1bmNfbW9kZV9saW5rICR7MSsiJEAifQorIAorIAorQEAgLTg0MzIsOSArOTQ0Niw5IEBAIGZ1bmNfbW9kZV91bmluc3RhbGwgKCkKKyAgICAgZm9yIGFyZworICAgICBkbworICAgICAgIGNhc2UgJGFyZyBpbgorLSAgICAgIC1mKSBSTT0iJFJNICRhcmciOyBybWZvcmNlPXllcyA7OworLSAgICAgIC0qKSBSTT0iJFJNICRhcmciIDs7CistICAgICAgKikgZmlsZXM9IiRmaWxlcyAkYXJnIiA7OworKyAgICAgIC1mKSBmdW5jX2FwcGVuZCBSTSAiICRhcmciOyBybWZvcmNlPXllcyA7OworKyAgICAgIC0qKSBmdW5jX2FwcGVuZCBSTSAiICRhcmciIDs7CisrICAgICAgKikgZnVuY19hcHBlbmQgZmlsZXMgIiAkYXJnIiA7OworICAgICAgIGVzYWMKKyAgICAgZG9uZQorIAorQEAgLTg0NDMsMjQgKzk0NTcsMjMgQEAgZnVuY19tb2RlX3VuaW5zdGFsbCAoKQorIAorICAgICBybWRpcnM9CisgCistICAgIG9yaWdvYmpkaXI9IiRvYmpkaXIiCisgICAgIGZvciBmaWxlIGluICRmaWxlczsgZG8KKyAgICAgICBmdW5jX2Rpcm5hbWUgIiRmaWxlIiAiIiAiLiIKKyAgICAgICBkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgorICAgICAgIGlmIHRlc3QgIlgkZGlyIiA9IFguOyB0aGVuCistCW9iamRpcj0iJG9yaWdvYmpkaXIiCisrCW9kaXI9IiRvYmpkaXIiCisgICAgICAgZWxzZQorLQlvYmpkaXI9IiRkaXIvJG9yaWdvYmpkaXIiCisrCW9kaXI9IiRkaXIvJG9iamRpciIKKyAgICAgICBmaQorICAgICAgIGZ1bmNfYmFzZW5hbWUgIiRmaWxlIgorICAgICAgIG5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKy0gICAgICB0ZXN0ICIkbW9kZSIgPSB1bmluc3RhbGwgJiYgb2JqZGlyPSIkZGlyIgorKyAgICAgIHRlc3QgIiRvcHRfbW9kZSIgPSB1bmluc3RhbGwgJiYgb2Rpcj0iJGRpciIKKyAKKy0gICAgICAjIFJlbWVtYmVyIG9iamRpciBmb3IgcmVtb3ZhbCBsYXRlciwgYmVpbmcgY2FyZWZ1bCB0byBhdm9pZCBkdXBsaWNhdGVzCistICAgICAgaWYgdGVzdCAiJG1vZGUiID0gY2xlYW47IHRoZW4KKysgICAgICAjIFJlbWVtYmVyIG9kaXIgZm9yIHJlbW92YWwgbGF0ZXIsIGJlaW5nIGNhcmVmdWwgdG8gYXZvaWQgZHVwbGljYXRlcworKyAgICAgIGlmIHRlc3QgIiRvcHRfbW9kZSIgPSBjbGVhbjsgdGhlbgorIAljYXNlICIgJHJtZGlycyAiIGluCistCSAgKiIgJG9iamRpciAiKikgOzsKKy0JICAqKSBybWRpcnM9IiRybWRpcnMgJG9iamRpciIgOzsKKysJICAqIiAkb2RpciAiKikgOzsKKysJICAqKSBmdW5jX2FwcGVuZCBybWRpcnMgIiAkb2RpciIgOzsKKyAJZXNhYworICAgICAgIGZpCisgCitAQCAtODQ4NiwxOCArOTQ5OSwxNyBAQCBmdW5jX21vZGVfdW5pbnN0YWxsICgpCisgCisgCSAgIyBEZWxldGUgdGhlIGxpYnRvb2wgbGlicmFyaWVzIGFuZCBzeW1saW5rcy4KKyAJICBmb3IgbiBpbiAkbGlicmFyeV9uYW1lczsgZG8KKy0JICAgIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvJG4iCisrCSAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvJG4iCisgCSAgZG9uZQorLQkgIHRlc3QgLW4gIiRvbGRfbGlicmFyeSIgJiYgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci8kb2xkX2xpYnJhcnkiCisrCSAgdGVzdCAtbiAiJG9sZF9saWJyYXJ5IiAmJiBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvJG9sZF9saWJyYXJ5IgorIAorLQkgIGNhc2UgIiRtb2RlIiBpbgorKwkgIGNhc2UgIiRvcHRfbW9kZSIgaW4KKyAJICBjbGVhbikKKy0JICAgIGNhc2UgIiAgJGxpYnJhcnlfbmFtZXMgIiBpbgorLQkgICAgIyAiICAiIGluIHRoZSBiZWdpbm5pbmcgY2F0Y2hlcyBlbXB0eSAkZGxuYW1lCisrCSAgICBjYXNlICIgJGxpYnJhcnlfbmFtZXMgIiBpbgorIAkgICAgKiIgJGRsbmFtZSAiKikgOzsKKy0JICAgICopIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvJGRsbmFtZSIgOzsKKysJICAgICopIHRlc3QgLW4gIiRkbG5hbWUiICYmIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci8kZGxuYW1lIiA7OworIAkgICAgZXNhYworLQkgICAgdGVzdCAtbiAiJGxpYmRpciIgJiYgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci8kbmFtZSAkb2JqZGlyLyR7bmFtZX1pIgorKwkgICAgdGVzdCAtbiAiJGxpYmRpciIgJiYgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRuYW1lICRvZGlyLyR7bmFtZX1pIgorIAkgICAgOzsKKyAJICB1bmluc3RhbGwpCisgCSAgICBpZiB0ZXN0IC1uICIkbGlicmFyeV9uYW1lcyI7IHRoZW4KK0BAIC04NTI1LDE5ICs5NTM3LDE5IEBAIGZ1bmNfbW9kZV91bmluc3RhbGwgKCkKKyAJICAjIEFkZCBQSUMgb2JqZWN0IHRvIHRoZSBsaXN0IG9mIGZpbGVzIHRvIHJlbW92ZS4KKyAJICBpZiB0ZXN0IC1uICIkcGljX29iamVjdCIgJiYKKyAJICAgICB0ZXN0ICIkcGljX29iamVjdCIgIT0gbm9uZTsgdGhlbgorLQkgICAgcm1maWxlcz0iJHJtZmlsZXMgJGRpci8kcGljX29iamVjdCIKKysJICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkZGlyLyRwaWNfb2JqZWN0IgorIAkgIGZpCisgCisgCSAgIyBBZGQgbm9uLVBJQyBvYmplY3QgdG8gdGhlIGxpc3Qgb2YgZmlsZXMgdG8gcmVtb3ZlLgorIAkgIGlmIHRlc3QgLW4gIiRub25fcGljX29iamVjdCIgJiYKKyAJICAgICB0ZXN0ICIkbm9uX3BpY19vYmplY3QiICE9IG5vbmU7IHRoZW4KKy0JICAgIHJtZmlsZXM9IiRybWZpbGVzICRkaXIvJG5vbl9waWNfb2JqZWN0IgorKwkgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRkaXIvJG5vbl9waWNfb2JqZWN0IgorIAkgIGZpCisgCWZpCisgCTs7CisgCisgICAgICAgKikKKy0JaWYgdGVzdCAiJG1vZGUiID0gY2xlYW4gOyB0aGVuCisrCWlmIHRlc3QgIiRvcHRfbW9kZSIgPSBjbGVhbiA7IHRoZW4KKyAJICBub2V4ZW5hbWU9JG5hbWUKKyAJICBjYXNlICRmaWxlIGluCisgCSAgKi5leGUpCitAQCAtODU0Nyw3ICs5NTU5LDcgQEAgZnVuY19tb2RlX3VuaW5zdGFsbCAoKQorIAkgICAgbm9leGVuYW1lPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKyAJICAgICMgJGZpbGUgd2l0aCAuZXhlIGhhcyBhbHJlYWR5IGJlZW4gYWRkZWQgdG8gcm1maWxlcywKKyAJICAgICMgYWRkICRmaWxlIHdpdGhvdXQgLmV4ZQorLQkgICAgcm1maWxlcz0iJHJtZmlsZXMgJGZpbGUiCisrCSAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJGZpbGUiCisgCSAgICA7OworIAkgIGVzYWMKKyAJICAjIERvIGEgdGVzdCB0byBzZWUgaWYgdGhpcyBpcyBhIGxpYnRvb2wgcHJvZ3JhbS4KK0BAIC04NTU2LDcgKzk1NjgsNyBAQCBmdW5jX21vZGVfdW5pbnN0YWxsICgpCisgCSAgICAgIGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWUgIiRmaWxlIgorIAkgICAgICByZWxpbmtfY29tbWFuZD0KKyAJICAgICAgZnVuY19zb3VyY2UgJGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0CistCSAgICAgIHJtZmlsZXM9IiRybWZpbGVzICRmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdCIKKysJICAgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdCIKKyAJICAgIGVsc2UKKyAJICAgICAgcmVsaW5rX2NvbW1hbmQ9CisgCSAgICAgIGZ1bmNfc291cmNlICRkaXIvJG5vZXhlbmFtZQorQEAgLTg1NjQsMTIgKzk1NzYsMTIgQEAgZnVuY19tb2RlX3VuaW5zdGFsbCAoKQorIAorIAkgICAgIyBub3RlICRuYW1lIHN0aWxsIGNvbnRhaW5zIC5leGUgaWYgaXQgd2FzIGluICRmaWxlIG9yaWdpbmFsbHkKKyAJICAgICMgYXMgZG9lcyB0aGUgdmVyc2lvbiBvZiAkZmlsZSB0aGF0IHdhcyBhZGRlZCBpbnRvICRybWZpbGVzCistCSAgICBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyLyRuYW1lICRvYmpkaXIvJHtuYW1lfVMuJHtvYmpleHR9IgorKwkgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRuYW1lICRvZGlyLyR7bmFtZX1TLiR7b2JqZXh0fSIKKyAJICAgIGlmIHRlc3QgIiRmYXN0X2luc3RhbGwiID0geWVzICYmIHRlc3QgLW4gIiRyZWxpbmtfY29tbWFuZCI7IHRoZW4KKy0JICAgICAgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci9sdC0kbmFtZSIKKysJICAgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyL2x0LSRuYW1lIgorIAkgICAgZmkKKyAJICAgIGlmIHRlc3QgIlgkbm9leGVuYW1lIiAhPSAiWCRuYW1lIiA7IHRoZW4KKy0JICAgICAgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci9sdC0ke25vZXhlbmFtZX0uYyIKKysJICAgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyL2x0LSR7bm9leGVuYW1lfS5jIgorIAkgICAgZmkKKyAJICBmaQorIAlmaQorQEAgLTg1NzcsNyArOTU4OSw2IEBAIGZ1bmNfbW9kZV91bmluc3RhbGwgKCkKKyAgICAgICBlc2FjCisgICAgICAgZnVuY19zaG93X2V2YWwgIiRSTSAkcm1maWxlcyIgJ2V4aXRfc3RhdHVzPTEnCisgICAgIGRvbmUKKy0gICAgb2JqZGlyPSIkb3JpZ29iamRpciIKKyAKKyAgICAgIyBUcnkgdG8gcmVtb3ZlIHRoZSAke29iamRpcn1zIGluIHRoZSBkaXJlY3RvcmllcyB3aGVyZSB3ZSBkZWxldGVkIGZpbGVzCisgICAgIGZvciBkaXIgaW4gJHJtZGlyczsgZG8KK0BAIC04NTg5LDE2ICs5NjAwLDE2IEBAIGZ1bmNfbW9kZV91bmluc3RhbGwgKCkKKyAgICAgZXhpdCAkZXhpdF9zdGF0dXMKKyB9CisgCisteyB0ZXN0ICIkbW9kZSIgPSB1bmluc3RhbGwgfHwgdGVzdCAiJG1vZGUiID0gY2xlYW47IH0gJiYKKyt7IHRlc3QgIiRvcHRfbW9kZSIgPSB1bmluc3RhbGwgfHwgdGVzdCAiJG9wdF9tb2RlIiA9IGNsZWFuOyB9ICYmCisgICAgIGZ1bmNfbW9kZV91bmluc3RhbGwgJHsxKyIkQCJ9CisgCistdGVzdCAteiAiJG1vZGUiICYmIHsKKyt0ZXN0IC16ICIkb3B0X21vZGUiICYmIHsKKyAgIGhlbHA9IiRnZW5lcmljX2hlbHAiCisgICBmdW5jX2ZhdGFsX2hlbHAgInlvdSBtdXN0IHNwZWNpZnkgYSBNT0RFIgorIH0KKyAKKyB0ZXN0IC16ICIkZXhlY19jbWQiICYmIFwKKy0gIGZ1bmNfZmF0YWxfaGVscCAiaW52YWxpZCBvcGVyYXRpb24gbW9kZSBcYCRtb2RlJyIKKysgIGZ1bmNfZmF0YWxfaGVscCAiaW52YWxpZCBvcGVyYXRpb24gbW9kZSBcYCRvcHRfbW9kZSciCisgCisgaWYgdGVzdCAtbiAiJGV4ZWNfY21kIjsgdGhlbgorICAgZXZhbCBleGVjICIkZXhlY19jbWQiCitkaWZmIC0tZ2l0IGEvbHRvcHRpb25zLm00IGIvbHRvcHRpb25zLm00CitpbmRleCA1ZWYxMmNlZDJhLi4xN2NmZDUxYzBiIDEwMDY0NAorLS0tIGEvbHRvcHRpb25zLm00CisrKysgYi9sdG9wdGlvbnMubTQKK0BAIC04LDcgKzgsNyBAQAorICMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwgd2l0aCBvciB3aXRob3V0CisgIyBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKyAKKy0jIHNlcmlhbCA2IGx0b3B0aW9ucy5tNAorKyMgc2VyaWFsIDcgbHRvcHRpb25zLm00CisgCisgIyBUaGlzIGlzIHRvIGhlbHAgYWNsb2NhbCBmaW5kIHRoZXNlIG1hY3JvcywgYXMgaXQgY2FuJ3Qgc2VlIG00X2RlZmluZS4KKyBBQ19ERUZVTihbTFRPUFRJT05TX1ZFUlNJT05dLCBbbTRfaWYoWzFdKV0pCitkaWZmIC0tZ2l0IGEvbHR2ZXJzaW9uLm00IGIvbHR2ZXJzaW9uLm00CitpbmRleCBiZjg3Zjc3MTMyLi45YzdiNWQ0MTE4IDEwMDY0NAorLS0tIGEvbHR2ZXJzaW9uLm00CisrKysgYi9sdHZlcnNpb24ubTQKK0BAIC03LDE3ICs3LDE3IEBACisgIyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LCB3aXRoIG9yIHdpdGhvdXQKKyAjIG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorIAorLSMgR2VuZXJhdGVkIGZyb20gbHR2ZXJzaW9uLmluLgorKyMgQGNvbmZpZ3VyZV9pbnB1dEAKKyAKKy0jIHNlcmlhbCAzMTM0IGx0dmVyc2lvbi5tNAorKyMgc2VyaWFsIDMyOTMgbHR2ZXJzaW9uLm00CisgIyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbAorIAorLW00X2RlZmluZShbTFRfUEFDS0FHRV9WRVJTSU9OXSwgWzIuMi43YV0pCistbTRfZGVmaW5lKFtMVF9QQUNLQUdFX1JFVklTSU9OXSwgWzEuMzEzNF0pCisrbTRfZGVmaW5lKFtMVF9QQUNLQUdFX1ZFUlNJT05dLCBbMi40XSkKKyttNF9kZWZpbmUoW0xUX1BBQ0tBR0VfUkVWSVNJT05dLCBbMS4zMjkzXSkKKyAKKyBBQ19ERUZVTihbTFRWRVJTSU9OX1ZFUlNJT05dLAorLVttYWNyb192ZXJzaW9uPScyLjIuN2EnCistbWFjcm9fcmV2aXNpb249JzEuMzEzNCcKKytbbWFjcm9fdmVyc2lvbj0nMi40JworK21hY3JvX3JldmlzaW9uPScxLjMyOTMnCisgX0xUX0RFQ0woLCBtYWNyb192ZXJzaW9uLCAwLCBbV2hpY2ggcmVsZWFzZSBvZiBsaWJ0b29sLm00IHdhcyB1c2VkP10pCisgX0xUX0RFQ0woLCBtYWNyb19yZXZpc2lvbiwgMCkKKyBdKQorZGlmZiAtLWdpdCBhL2x0fm9ic29sZXRlLm00IGIvbHR+b2Jzb2xldGUubTQKK2luZGV4IGJmOTJiNWUwNzkuLmM1NzNkYTkwYzUgMTAwNjQ0CistLS0gYS9sdH5vYnNvbGV0ZS5tNAorKysrIGIvbHR+b2Jzb2xldGUubTQKK0BAIC03LDcgKzcsNyBAQAorICMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwgd2l0aCBvciB3aXRob3V0CisgIyBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKyAKKy0jIHNlcmlhbCA0IGx0fm9ic29sZXRlLm00CisrIyBzZXJpYWwgNSBsdH5vYnNvbGV0ZS5tNAorIAorICMgVGhlc2UgZXhpc3QgZW50aXJlbHkgdG8gZm9vbCBhY2xvY2FsIHdoZW4gYm9vdHN0cmFwcGluZyBsaWJ0b29sLgorICMKK2RpZmYgLS1naXQgYS9vcGNvZGVzL2NvbmZpZ3VyZSBiL29wY29kZXMvY29uZmlndXJlCitpbmRleCAxNzUzMGY1NGI5Li43OWIzOTYxMWMyIDEwMDc1NQorLS0tIGEvb3Bjb2Rlcy9jb25maWd1cmUKKysrKyBiL29wY29kZXMvY29uZmlndXJlCitAQCAtNjUwLDYgKzY1MCw5IEBAIE9UT09MCisgTElQTworIE5NRURJVAorIERTWU1VVElMCisrTUFOSUZFU1RfVE9PTAorK2FjX2N0X0FSCisrRExMVE9PTAorIE9CSkRVTVAKKyBMTl9TCisgTk0KK0BAIC03NjMsNiArNzY2LDcgQEAgZW5hYmxlX3N0YXRpYworIHdpdGhfcGljCisgZW5hYmxlX2Zhc3RfaW5zdGFsbAorIHdpdGhfZ251X2xkCisrd2l0aF9saWJ0b29sX3N5c3Jvb3QKKyBlbmFibGVfbGlidG9vbF9sb2NrCisgZW5hYmxlX3RhcmdldHMKKyBlbmFibGVfd2Vycm9yCitAQCAtMTQyMyw2ICsxNDI3LDggQEAgT3B0aW9uYWwgUGFja2FnZXM6CisgICAtLXdpdGgtcGljICAgICAgICAgICAgICB0cnkgdG8gdXNlIG9ubHkgUElDL25vbi1QSUMgb2JqZWN0cyBbZGVmYXVsdD11c2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdGhdCisgICAtLXdpdGgtZ251LWxkICAgICAgICAgICBhc3N1bWUgdGhlIEMgY29tcGlsZXIgdXNlcyBHTlUgbGQgW2RlZmF1bHQ9bm9dCisrICAtLXdpdGgtbGlidG9vbC1zeXNyb290PURJUiBTZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMgd2l0aGluIERJUgorKyAgICAgICAgICAgICAgICAgICAgICAgIChvciB0aGUgY29tcGlsZXIncyBzeXNyb290IGlmIG5vdCBzcGVjaWZpZWQpLgorIAorIFNvbWUgaW5mbHVlbnRpYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzOgorICAgQ0MgICAgICAgICAgQyBjb21waWxlciBjb21tYW5kCitAQCAtNTExNSw4ICs1MTIxLDggQEAgZXNhYworIAorIAorIAorLW1hY3JvX3ZlcnNpb249JzIuMi43YScKKy1tYWNyb19yZXZpc2lvbj0nMS4zMTM0JworK21hY3JvX3ZlcnNpb249JzIuNCcKKyttYWNyb19yZXZpc2lvbj0nMS4zMjkzJworIAorIAorIAorQEAgLTUxNTYsNyArNTE2Miw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncyIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MuLi4gIiA+JjY7IH0KKyAjIFRlc3QgcHJpbnQgZmlyc3QsIGJlY2F1c2UgaXQgd2lsbCBiZSBhIGJ1aWx0aW4gaWYgcHJlc2VudC4KKy1pZiB0ZXN0ICJYYHByaW50IC1yIC0tIC1uIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAorK2lmIHRlc3QgIlhgKCBwcmludCAtciAtLSAtbiApIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAorICAgIHRlc3QgIlhgcHJpbnQgLXIgLS0gJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCisgICBFQ0hPPSdwcmludCAtciAtLScKKyBlbGlmIHRlc3QgIlhgcHJpbnRmICVzICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgorQEAgLTU4NDIsOCArNTg0OCw4IEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIHNoZWxsIHVuZGVyc3RhbmRzIHNvbWUgWFNJIGNvbnN0cnVjdHMuLi4gIiA+JjY7CisgIyBUcnkgc29tZSBYU0kgZmVhdHVyZXMKKyB4c2lfc2hlbGw9bm8KKyAoIF9sdF9kdW1teT0iYS9iL2MiCistICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwiJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAorLSAgICAgID0gYyxhL2IsLCBcCisrICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwke19sdF9kdW1teSM/P30iJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAorKyAgICAgID0gYyxhL2IsYi9jLCBcCisgICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKKyAgICAgJiYgdGVzdCAiJHsjX2x0X2R1bW15fSIgLWVxIDUnICkgPi9kZXYvbnVsbCAyPiYxIFwKKyAgICYmIHhzaV9zaGVsbD15ZXMKK0BAIC01ODkyLDYgKzU4OTgsODAgQEAgZXNhYworIAorIAorIAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXNlICRob3N0IGluCisrICAqLSotbWluZ3cqICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrICAgICAgICA7OworKyAgICAgICotKi1jeWd3aW4qICkKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4CisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b193MzIKKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKysgICotKi1jeWd3aW4qICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luCisrICAgICAgICA7OworKyAgICAgICotKi1jeWd3aW4qICkKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorKyAgICAgICAgOzsKKysgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4CisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4KKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKysgICogKSAjIHVuaGFuZGxlZCBob3N0cyAoYW5kICJub3JtYWwiIG5hdGl2ZSBidWlsZHMpCisrICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorKyAgICA7OworK2VzYWMKKysKKytmaQorKworK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY2OyB9CisrCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0Li4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtsdF9jdl90b190b29sX2ZpbGVfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgI2Fzc3VtZSBvcmRpbmFyeSBjcm9zcyB0b29scywgb3IgbmF0aXZlIGJ1aWxkLgorK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorK2Nhc2UgJGhvc3QgaW4KKysgICotKi1taW5ndyogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKytlc2FjCisrCisrZmkKKysKKyt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNjsgfQorKworKworKworKworKworIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcyIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcy4uLiAiID4mNjsgfQorIGlmIHRlc3QgIiR7bHRfY3ZfbGRfcmVsb2FkX2ZsYWcrc2V0fSIgPSBzZXQ7IHRoZW4gOgorQEAgLTU5MDgsNiArNTk4OCwxMSBAQCBjYXNlICRyZWxvYWRfZmxhZyBpbgorIGVzYWMKKyByZWxvYWRfY21kcz0nJExEJHJlbG9hZF9mbGFnIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCisgY2FzZSAkaG9zdF9vcyBpbgorKyAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorKyAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KKysgICAgICByZWxvYWRfY21kcz1mYWxzZQorKyAgICBmaQorKyAgICA7OworICAgZGFyd2luKikKKyAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAke3dsfS1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCitAQCAtNjA3Niw3ICs2MTYxLDggQEAgbWluZ3cqIHwgcHczMiopCisgICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIF54ODYgYXJjaGl2ZSBpbXBvcnR8Xng4NiBETEwnCisgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJworICAgZWxzZQorLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCBwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpPycKKysgICAgIyBLZWVwIHRoaXMgcGF0dGVybiBpbiBzeW5jIHdpdGggdGhlIG9uZSBpbiBmdW5jX3dpbjMyX2xpYmlkLgorKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCAocGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT98cGUtYXJtLXdpbmNlfHBlLXg4Ni02NCknCisgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckT0JKRFVNUCAtZicKKyAgIGZpCisgICA7OworQEAgLTYyMzAsNiArNjMxNiwyMSBAQCBlc2FjCisgZmkKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjUKKyAkYXNfZWNobyAiJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjY7IH0KKysKKytmaWxlX21hZ2ljX2dsb2I9Cisrd2FudF9ub2Nhc2VnbG9iPW5vCisraWYgdGVzdCAiJGJ1aWxkIiA9ICIkaG9zdCI7IHRoZW4KKysgIGNhc2UgJGhvc3Rfb3MgaW4KKysgIG1pbmd3KiB8IHB3MzIqKQorKyAgICBpZiAoIHNob3B0IHwgZ3JlcCBub2Nhc2VnbG9iICkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisrICAgICAgd2FudF9ub2Nhc2VnbG9iPXllcworKyAgICBlbHNlCisrICAgICAgZmlsZV9tYWdpY19nbG9iPWBlY2hvIGFBYkJjQ2REZUVmRmdHaEhpSWpKa0tsTG1Nbk5vT3BQcVFyUnNTdFR1VXZWd1d4WHlZelogfCAkU0VEIC1lICJzL1woLi5cKS9zXC9bXDFdXC9bXDFdXC9nOy9nImAKKysgICAgZmkKKysgICAgOzsKKysgIGVzYWMKKytmaQorKworIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAorIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAorIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgorQEAgLTYyNDMsMTEgKzYzNDQsMTY0IEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgorIAorIAorIAorKworKworKworKworKworKworKworKworKworKworIAorIAorIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKy0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1hciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCistc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDIKKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1kbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1kbGx0b29sOyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19ETExUT09MK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX0RMTFRPT0w9IiRETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICAgIGFjX2N2X3Byb2dfRExMVE9PTD0iJHthY190b29sX3ByZWZpeH1kbGx0b29sIgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKytETExUT09MPSRhY19jdl9wcm9nX0RMTFRPT0wKKytpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkRExMVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRETExUT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysKKytmaQorK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX0RMTFRPT0wiOyB0aGVuCisrICBhY19jdF9ETExUT09MPSRETExUT09MCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSBkbGx0b29sOyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9ETExUT09MK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9IiRhY19jdF9ETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iZGxsdG9vbCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrYWNfY3RfRExMVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MCisraWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X0RMTFRPT0wiID4mNQorKyRhc19lY2hvICIkYWNfY3RfRExMVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrICBpZiB0ZXN0ICJ4JGFjX2N0X0RMTFRPT0wiID0geDsgdGhlbgorKyAgICBETExUT09MPSJmYWxzZSIKKysgIGVsc2UKKysgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgorK3llczopCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KKythY190b29sX3dhcm5lZD15ZXMgOzsKKytlc2FjCisrICAgIERMTFRPT0w9JGFjX2N0X0RMTFRPT0wKKysgIGZpCisrZWxzZQorKyAgRExMVE9PTD0iJGFjX2N2X3Byb2dfRExMVE9PTCIKKytmaQorKworK3Rlc3QgLXogIiRETExUT09MIiAmJiBETExUT09MPWRsbHRvb2wKKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J3Vua25vd24nCisrCisrY2FzZSAkaG9zdF9vcyBpbgorK2N5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKysgICMgdHdvIGRpZmZlcmVudCBzaGVsbCBmdW5jdGlvbnMgZGVmaW5lZCBpbiBsdG1haW4uc2gKKysgICMgZGVjaWRlIHdoaWNoIHRvIHVzZSBiYXNlZCBvbiBjYXBhYmlsaXRpZXMgb2YgJERMTFRPT0wKKysgIGNhc2UgYCRETExUT09MIC0taGVscCAyPiYxYCBpbgorKyAgKi0taWRlbnRpZnktc3RyaWN0KikKKysgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliCisrICAgIDs7CisrICAqKQorKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sKKysgICAgOzsKKysgIGVzYWMKKysgIDs7CisrKikKKysgICMgZmFsbGJhY2s6IGFzc3VtZSBsaW5rbGliIElTIHNoYXJlZGxpYgorKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9IiRFQ0hPIgorKyAgOzsKKytlc2FjCisrCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjY7IH0KKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKKyt0ZXN0IC16ICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiICYmIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRFQ0hPCisrCisrCisrCisrCisrCisrCisrCisraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorKyAgZm9yIGFjX3Byb2cgaW4gYXIKKysgIGRvCisrICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKyBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfQVIrc2V0fSIgPSBzZXQ7IHRoZW4gOgorQEAgLTYyNjMsNyArNjUxNyw3IEBAIGRvCisgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKy0gICAgYWNfY3ZfcHJvZ19BUj0iJHthY190b29sX3ByZWZpeH1hciIKKysgICAgYWNfY3ZfcHJvZ19BUj0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCisgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgICBicmVhayAyCisgICBmaQorQEAgLTYyODMsMTEgKzY1MzcsMTUgQEAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KKyBmaQorIAorIAorKyAgICB0ZXN0IC1uICIkQVIiICYmIGJyZWFrCisrICBkb25lCisgZmkKKy1pZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19BUiI7IHRoZW4KKytpZiB0ZXN0IC16ICIkQVIiOyB0aGVuCisgICBhY19jdF9BUj0kQVIKKy0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiYXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorLXNldCBkdW1teSBhcjsgYWNfd29yZD0kMgorKyAgZm9yIGFjX3Byb2cgaW4gYXIKKytkbworKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorIGlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9BUitzZXR9IiA9IHNldDsgdGhlbiA6CitAQCAtNjMwMyw3ICs2NTYxLDcgQEAgZG8KKyAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorLSAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSJhciIKKysgICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iJGFjX3Byb2ciCisgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgICBicmVhayAyCisgICBmaQorQEAgLTYzMjIsNiArNjU4MCwxMCBAQCBlbHNlCisgJGFzX2VjaG8gIm5vIiA+JjY7IH0KKyBmaQorIAorKworKyAgdGVzdCAtbiAiJGFjX2N0X0FSIiAmJiBicmVhaworK2RvbmUKKysKKyAgIGlmIHRlc3QgIngkYWNfY3RfQVIiID0geDsgdGhlbgorICAgICBBUj0iZmFsc2UiCisgICBlbHNlCitAQCAtNjMzMywxNiArNjU5NSw3MiBAQCBhY190b29sX3dhcm5lZD15ZXMgOzsKKyBlc2FjCisgICAgIEFSPSRhY19jdF9BUgorICAgZmkKKy1lbHNlCistICBBUj0iJGFjX2N2X3Byb2dfQVIiCisgZmkKKyAKKy10ZXN0IC16ICIkQVIiICYmIEFSPWFyCistdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKKys6ICR7QVI9YXJ9CisrOiAke0FSX0ZMQUdTPWNydX0KKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3ZfYXJfYXRfZmlsZStzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X2FyX2F0X2ZpbGU9bm8KKysgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrLyogZW5kIGNvbmZkZWZzLmguICAqLworKworK2ludAorK21haW4gKCkKKyt7CisgCisrICA7CisrICByZXR1cm4gMDsKKyt9CisrX0FDRU9GCisraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorKyAgZWNobyBjb25mdGVzdC4kYWNfb2JqZXh0ID4gY29uZnRlc3QubHN0CisrICAgICAgbHRfYXJfdHJ5PSckQVIgJEFSX0ZMQUdTIGxpYmNvbmZ0ZXN0LmEgQGNvbmZ0ZXN0LmxzdCA+JjUnCisrICAgICAgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKKysgIChldmFsICRsdF9hcl90cnkpIDI+JjUKKysgIGFjX3N0YXR1cz0kPworKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisrICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9CisrICAgICAgaWYgdGVzdCAiJGFjX3N0YXR1cyIgLWVxIDA7IHRoZW4KKysJIyBFbnN1cmUgdGhlIGFyY2hpdmVyIGZhaWxzIHVwb24gYm9ndXMgZmlsZSBuYW1lcy4KKysJcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBsaWJjb25mdGVzdC5hCisrCXsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1CisrICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1CisrICBhY19zdGF0dXM9JD8KKysgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQorKwlpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtbmUgMDsgdGhlbgorKyAgICAgICAgICBsdF9jdl9hcl9hdF9maWxlPUAKKysgICAgICAgIGZpCisrICAgICAgZmkKKysgICAgICBybSAtZiBjb25mdGVzdC4qIGxpYmNvbmZ0ZXN0LmEKKyAKKytmaQorK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorIAorK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9hcl9hdF9maWxlIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X2FyX2F0X2ZpbGUiID4mNjsgfQorIAorK2lmIHRlc3QgIngkbHRfY3ZfYXJfYXRfZmlsZSIgPSB4bm87IHRoZW4KKysgIGFyY2hpdmVyX2xpc3Rfc3BlYz0KKytlbHNlCisrICBhcmNoaXZlcl9saXN0X3NwZWM9JGx0X2N2X2FyX2F0X2ZpbGUKKytmaQorIAorIAorIAorQEAgLTY2ODQsOCArNzAwMiw4IEBAIGVzYWMKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgorIAorICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcworLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCistbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisrbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKytsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKyAKKyAjIEhhbmRsZSBDUkxGIGluIG1pbmd3IHRvb2wgY2hhaW4KKyBvcHRfY3I9CitAQCAtNjcyMSw2ICs3MDM5LDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbworICAgZWxzZQorICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qWwkgXVwoJHN5bWNvZGUkc3ltY29kZSpcKVsJIF1bCSBdKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgorICAgZmkKKysgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9IiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIHwgc2VkICcvIF9fZ251X2x0by9kJyIKKyAKKyAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgorICAgcGlwZV93b3Jrcz1ubworQEAgLTY3NjIsNiArNzA4MSwxOCBAQCBfTFRfRU9GCisgICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKyAJaWYgJEdSRVAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCisgCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKKysvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KKysjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQorKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQorKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVAorKyNlbGlmIGRlZmluZWQoX19vc2ZfXykKKysvKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhLiAgKi8KKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVAorKyNlbHNlCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QgY29uc3QKKysjZW5kaWYKKysKKyAjaWZkZWYgX19jcGx1c3BsdXMKKyBleHRlcm4gIkMiIHsKKyAjZW5kaWYKK0BAIC02NzczLDcgKzcxMDQsNyBAQCBfTFRfRU9GCisgCSAgY2F0IDw8X0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0CisgCisgLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLworLWNvbnN0IHN0cnVjdCB7CisrTFRfRExTWU1fQ09OU1Qgc3RydWN0IHsKKyAgIGNvbnN0IGNoYXIgKm5hbWU7CisgICB2b2lkICAgICAgICphZGRyZXNzOworIH0KK0BAIC02Nzk5LDggKzcxMzAsOCBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgeworIF9MVF9FT0YKKyAJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgorIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dAorLQkgIGx0X3NhdmVfTElCUz0iJExJQlMiCistCSAgbHRfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisrCSAgbHRfZ2xvYnN5bV9zYXZlX0xJQlM9JExJQlMKKysJICBsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKKyAJICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgorIAkgIENGTEFHUz0iJENGTEFHUyRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIKKyAJICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfbGlua1wiIjsgfSA+JjUKK0BAIC02ODEwLDggKzcxNDEsOCBAQCBfTFRfRU9GCisgICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KKyAJICAgIHBpcGVfd29ya3M9eWVzCisgCSAgZmkKKy0JICBMSUJTPSIkbHRfc2F2ZV9MSUJTIgorLQkgIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgorKwkgIExJQlM9JGx0X2dsb2JzeW1fc2F2ZV9MSUJTCisrCSAgQ0ZMQUdTPSRsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTCisgCWVsc2UKKyAJICBlY2hvICJjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJG5saXN0IiA+JjUKKyAJZmkKK0BAIC02ODQ4LDYgKzcxNzksMTYgQEAgZWxzZQorICRhc19lY2hvICJvayIgPiY2OyB9CisgZmkKKyAKKysjIFJlc3BvbnNlIGZpbGUgc3VwcG9ydC4KKytpZiB0ZXN0ICIkbHRfY3Zfbm1faW50ZXJmYWNlIiA9ICJNUyBkdW1wYmluIjsgdGhlbgorKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCisrZWxpZiAkTk0gLS1oZWxwIDI+L2Rldi9udWxsIHwgZ3JlcCAnW0BdRklMRScgPi9kZXYvbnVsbDsgdGhlbgorKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCisrZmkKKysKKysKKysKKysKKyAKKyAKKyAKK0BAIC02ODY0LDYgKzcyMDUsNDUgQEAgZmkKKyAKKyAKKyAKKysKKysKKysKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzeXNyb290IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3Igc3lzcm9vdC4uLiAiID4mNjsgfQorKworKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbGlidG9vbC1zeXNyb290IHdhcyBnaXZlbi4KKytpZiB0ZXN0ICIke3dpdGhfbGlidG9vbF9zeXNyb290K3NldH0iID0gc2V0OyB0aGVuIDoKKysgIHdpdGh2YWw9JHdpdGhfbGlidG9vbF9zeXNyb290OworK2Vsc2UKKysgIHdpdGhfbGlidG9vbF9zeXNyb290PW5vCisrZmkKKysKKysKKytsdF9zeXNyb290PQorK2Nhc2UgJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0gaW4gIygKKysgeWVzKQorKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisrICAgICBsdF9zeXNyb290PWAkQ0MgLS1wcmludC1zeXNyb290IDI+L2Rldi9udWxsYAorKyAgIGZpCisrICAgOzsgIygKKysgLyopCisrICAgbHRfc3lzcm9vdD1gZWNobyAiJHdpdGhfbGlidG9vbF9zeXNyb290IiB8IHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCisrICAgOzsgIygKKysgbm98JycpCisrICAgOzsgIygKKysgKikKKysgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNQorKyRhc19lY2hvICIke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY2OyB9CisrICAgYXNfZm5fZXJyb3IgIlRoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC4iICIkTElORU5PIiA1CisrICAgOzsKKytlc2FjCisrCisrIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke2x0X3N5c3Jvb3Q6LW5vfSIgPiY1CisrJGFzX2VjaG8gIiR7bHRfc3lzcm9vdDotbm99IiA+JjY7IH0KKyAKKyAKKyAKK0BAIC03MDc1LDYgKzc0NTUsMTIzIEBAIGVzYWMKKyAKKyBuZWVkX2xvY2tzPSIkZW5hYmxlX2xpYnRvb2xfbG9jayIKKyAKKytpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9bXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW10OyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiRNQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICAgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJHthY190b29sX3ByZWZpeH1tdCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MCisraWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE1BTklGRVNUX1RPT0wiID4mNQorKyRhc19lY2hvICIkTUFOSUZFU1RfVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrCisrZmkKKytpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgYWNfY3RfTUFOSUZFU1RfVE9PTD0kTUFOSUZFU1RfVE9PTAorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJtdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15IG10OyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9IiRhY19jdF9NQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0ibXQiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK2FjX2N0X01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTAorK2lmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjUKKyskYXNfZWNobyAiJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKyAgaWYgdGVzdCAieCRhY19jdF9NQU5JRkVTVF9UT09MIiA9IHg7IHRoZW4KKysgICAgTUFOSUZFU1RfVE9PTD0iOiIKKysgIGVsc2UKKysgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgorK3llczopCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KKythY190b29sX3dhcm5lZD15ZXMgOzsKKytlc2FjCisrICAgIE1BTklGRVNUX1RPT0w9JGFjX2N0X01BTklGRVNUX1RPT0wKKysgIGZpCisrZWxzZQorKyAgTUFOSUZFU1RfVE9PTD0iJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCIKKytmaQorKworK3Rlc3QgLXogIiRNQU5JRkVTVF9UT09MIiAmJiBNQU5JRkVTVF9UT09MPW10CisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3ZfcGF0aF9tYWluZmVzdF90b29sK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPW5vCisrICBlY2hvICIkYXNfbWU6JExJTkVOTzogJE1BTklGRVNUX1RPT0wgJy0/JyIgPiY1CisrICAkTUFOSUZFU1RfVE9PTCAnLT8nIDI+Y29uZnRlc3QuZXJyID4gY29uZnRlc3Qub3V0CisrICBjYXQgY29uZnRlc3QuZXJyID4mNQorKyAgaWYgJEdSRVAgJ01hbmlmZXN0IFRvb2wnIGNvbmZ0ZXN0Lm91dCA+IC9kZXYvbnVsbDsgdGhlbgorKyAgICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9eWVzCisrICBmaQorKyAgcm0gLWYgY29uZnRlc3QqCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNjsgfQorK2lmIHRlc3QgIngkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiAhPSB4eWVzOyB0aGVuCisrICBNQU5JRkVTVF9UT09MPToKKytmaQorKworKworKworKworKworIAorICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICByaGFwc29keSogfCBkYXJ3aW4qKQorQEAgLTc2MzgsNiArODEzNSw4IEBAIF9MVF9FT0YKKyAgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JjUKKyAgICAgICBlY2hvICIkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyIgPiY1CisgICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mNQorKyAgICAgIGVjaG8gIiRSQU5MSUIgbGliY29uZnRlc3QuYSIgPiY1CisrICAgICAgJFJBTkxJQiBsaWJjb25mdGVzdC5hIDI+JjUKKyAgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKKyBpbnQgbWFpbigpIHsgcmV0dXJuIDA7fQorIF9MVF9FT0YKK0BAIC03ODAzLDcgKzgzMDIsOCBAQCBmaQorIExJQlRPT0xfREVQUz0iJGx0bWFpbiIKKyAKKyAjIEFsd2F5cyB1c2Ugb3VyIG93biBsaWJ0b29sLgorLUxJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKS9saWJ0b29sJworK0xJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKScKKytMSUJUT09MPSIkTElCVE9PTC8ke2hvc3RfYWxpYXN9LWxpYnRvb2wiCisgCisgCisgCitAQCAtNzg5Miw3ICs4MzkyLDcgQEAgYWl4MyopCisgZXNhYworIAorICMgR2xvYmFsIHZhcmlhYmxlczoKKy1vZmlsZT1saWJ0b29sCisrb2ZpbGU9JHtob3N0X2FsaWFzfS1saWJ0b29sCisgY2FuX2J1aWxkX3NoYXJlZD15ZXMKKyAKKyAjIEFsbCBrbm93biBsaW5rZXJzIHJlcXVpcmUgYSBgLmEnIGFyY2hpdmUgZm9yIHN0YXRpYyBsaW5raW5nIChleGNlcHQgTVNWQywKK0BAIC04MTkwLDggKzg2OTAsNiBAQCBmaQorIGx0X3Byb2dfY29tcGlsZXJfcGljPQorIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPQorIAorLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQorLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgCisgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJworQEAgLTgzNTcsNiArODg1NSwxMiBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorIAlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLS1zaGFyZWQnCisgCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctLXN0YXRpYycKKyAJOzsKKysgICAgICBuYWdmb3IqKQorKwkjIE5BRyBGb3J0cmFuIGNvbXBpbGVyCisrCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwtV2wsLCcKKysJbHRfcHJvZ19jb21waWxlcl9waWM9Jy1QSUMnCisrCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKKysJOzsKKyAgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCisgICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIGNvbXBpbGVycyAoKm5vdCogdGhlIFBlbnRpdW0gZ2NjIGNvbXBpbGVyLAorIAkjIHdoaWNoIGxvb2tzIHRvIGJlIGEgZGVhZCBwcm9qZWN0KQorQEAgLTg0MTksNyArODkyMyw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1LUElDJworICAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKKyAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorLSAgICAgIGY3NyogfCBmOTAqIHwgZjk1KikKKysgICAgICBmNzcqIHwgZjkwKiB8IGY5NSogfCBzdW5mNzcqIHwgc3VuZjkwKiB8IHN1bmY5NSopCisgCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1Rb3B0aW9uIGxkICc7OworICAgICAgICopCisgCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnOzsKK0BAIC04NDc2LDEzICs4OTgwLDE3IEBAIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9IiRsdF9wcm9nX2NvbXBpbGVyX3BpYyAtRFBJQyIKKyAgICAgOzsKKyBlc2FjCisteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1CistJGFzX2VjaG8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9CistCistCistCistCisgCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2x0X2N2X3Byb2dfY29tcGlsZXJfcGljK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfcHJvZ19jb21waWxlcl9waWM9JGx0X3Byb2dfY29tcGlsZXJfcGljCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KKytsdF9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfY3ZfcHJvZ19jb21waWxlcl9waWMKKyAKKyAjCisgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgorQEAgLTg1NDMsNiArOTA1MSwxMSBAQCBmaQorIAorIAorIAorKworKworKworKworKworICMKKyAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCisgIworQEAgLTg4OTMsNyArOTQwNiw4IEBAIF9MVF9FT0YKKyAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorICAgICAgIGFsd2F5c19leHBvcnRfc3ltYm9scz1ubworICAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCistICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvO3MvXi4qWyBdX19ubV9fXChbXiBdKlwpWyBdW14gXSovXDEgREFUQS87L15JWyBdL2Q7L15bQUlUV11bIF0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysgICAgICBleGNsdWRlX2V4cHN5bXM9J1tfXStHTE9CQUxfT0ZGU0VUX1RBQkxFX3xbX10rR0xPQkFMX19bRklEXV8uKnxbX10raGVhZF9bQS1aYS16MC05X10rX2RsbHxbQS1aYS16MC05X10rX2RsbF9pbmFtZScKKyAKKyAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCisgICAgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworQEAgLTg5OTIsMTIgKzk1MDYsMTIgQEAgX0xUX0VPRgorIAkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSctLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgLS1uby13aG9sZS1hcmNoaXZlJworIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9CisgCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZD0nLXJwYXRoICRsaWJkaXInCistCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCisrCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJworIAkgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KKyAJICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisgCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAJICAgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CistCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworKwkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisgCSAgZmkKKyAJICA7OworIAllc2FjCitAQCAtOTAxMSw4ICs5NTI1LDggQEAgX0xUX0VPRgorIAlhcmNoaXZlX2NtZHM9JyRMRCAtQnNoYXJlYWJsZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1vICRsaWInCisgCXdsYXJjPQorICAgICAgIGVsc2UKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZmkKKyAgICAgICA7OworIAorQEAgLTkwMzAsOCArOTU0NCw4IEBAIF9MVF9FT0YKKyAKKyBfTFRfRU9GCisgICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGVsc2UKKyAJbGRfc2hsaWJzPW5vCisgICAgICAgZmkKK0BAIC05MDc3LDggKzk1OTEsOCBAQCBfTFRfRU9GCisgCisgICAgICopCisgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBlbHNlCisgCWxkX3NobGlicz1ubworICAgICAgIGZpCitAQCAtOTIwOCw3ICs5NzIyLDEzIEBAIF9MVF9FT0YKKyAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9Jy1iZXJvaycKKyAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgorICAgICAgICAgIyBlbXB0eSBleGVjdXRhYmxlLgorLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKyAgICAgICAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgorKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCisrZWxzZQorKyAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aF8rc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworIAorIGludAorQEAgLTkyMjEsMjIgKzk3NDEsMjkgQEAgbWFpbiAoKQorIF9BQ0VPRgorIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAKKy1sdF9haXhfbGlicGF0aF9zZWQ9JworLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CistCS9eMC8geworLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCistCSAgICBwCistCX0KKy0gICAgfScKKy1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgorLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistZmkKKysgIGx0X2FpeF9saWJwYXRoX3NlZD0nCisrICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworKwkgIC9eMC8geworKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLworKwkgICAgICBwCisrCSAgfQorKyAgICAgIH0nCisrICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICBmaQorIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCisrICBmaQorKworK2ZpCisrCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCisrZmkKKyAKKyAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgorQEAgLTkyNDgsNyArOTc3NSwxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAJZWxzZQorIAkgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCisgCSAjIGVtcHR5IGV4ZWN1dGFibGUuCistCSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrCSBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKKytlbHNlCisrICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoXytzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgCisgaW50CitAQCAtOTI2MSwyMiArOTc5NCwyOSBAQCBtYWluICgpCisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorIAorLWx0X2FpeF9saWJwYXRoX3NlZD0nCistICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKy0JL14wLyB7CistCSAgICBzL14wICAqXCguKlwpJC9cMS8KKy0JICAgIHAKKy0JfQorLSAgICB9JworLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCistICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy1maQorKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKKysgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisrCSAgL14wLyB7CisrCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCisrCSAgICAgIHAKKysJICB9CisrICAgICAgfScKKysgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgIGZpCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKKysgIGZpCisrCisrZmkKKysKKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KKytmaQorIAorIAkgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAorQEAgLTkzMjEsMjAgKzk4NjEsNjMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KKyAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCisgICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKy0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworLSAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCistICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKy0gICAgICBsaWJleHQ9bGliCistICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCistICAgICAgc2hyZXh0X2NtZHM9Ii5kbGwiCistICAgICAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCistICAgICAgIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KKy0gICAgICBvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJworLSAgICAgICMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCistICAgICAgb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJworLSAgICAgIGZpeF9zcmNmaWxlX3BhdGg9J2BjeWdwYXRoIC13ICIkc3JjZmlsZSJgJworLSAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisrICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKysgICAgICBjbCopCisrCSMgTmF0aXZlIE1TVkMKKysJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKysJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKysJYWx3YXlzX2V4cG9ydF9zeW1ib2xzPXllcworKwlmaWxlX2xpc3Rfc3BlYz0nQCcKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKysJbGliZXh0PWxpYgorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKysJc2hyZXh0X2NtZHM9Ii5kbGwiCisrCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKysJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKysJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisrCSAgZWxzZQorKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICBmaX4KKysJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+CisrCSAgbGlua25hbWVzPScKKysJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgorKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgKT0ndHJ1ZScKKysJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysJZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEsREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKwkjIERvbid0IHVzZSByYW5saWIKKysJb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDY0NCAkb2xkbGliJworKwlwb3N0bGlua19jbWRzPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+CisrCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KKysJICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCisrCSAgICAqLmV4ZXwqLkVYRSkgOzsKKysJICAgICopCisrCSAgICAgIGx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKKysJICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKKysJICAgICAgOzsKKysJICBlc2FjfgorKwkgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCisrCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOworKwkgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7CisrCSAgZmknCisrCTs7CisrICAgICAgKikKKysJIyBBc3N1bWUgTVNWQyB3cmFwcGVyCisrCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCisrCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisrCWxpYmV4dD1saWIKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisrCXNocmV4dF9jbWRzPSIuZGxsIgorKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisrCWFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCisrCSMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCisrCW9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCisrCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCisrCW9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKKysJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysJOzsKKysgICAgICBlc2FjCisgICAgICAgOzsKKyAKKyAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKK0BAIC05Mzk1LDcgKzk5NzgsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgorICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCistICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCisgICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcworICAgICAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9bm8KK0BAIC05NDAzLDcgKzk5ODYsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgaHB1eDkqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgICBlbHNlCisgCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICAgZmkKK0BAIC05NDE5LDcgKzEwMDAyLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCisgICAgIGhwdXgxMCopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgICBlbHNlCisgCWFyY2hpdmVfY21kcz0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKKyAgICAgICBmaQorQEAgLTk0NDMsMTAgKzEwMDI2LDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJaWE2NCopCistCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAkqKQorLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCWVzYWMKKyAgICAgICBlbHNlCitAQCAtOTUyNSwyMyArMTAxMDgsMzYgQEAgZmkKKyAKKyAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJIyBUcnkgdG8gdXNlIHRoZSAtZXhwb3J0ZWRfc3ltYm9sIGxkIG9wdGlvbiwgaWYgaXQgZG9lcyBub3QKKyAJIyB3b3JrLCBhc3N1bWUgdGhhdCAtZXhwb3J0c19maWxlIGRvZXMgbm90IHdvcmsgZWl0aGVyIGFuZAorIAkjIGltcGxpY2l0bHkgZXhwb3J0IGFsbCBzeW1ib2xzLgorLSAgICAgICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKy0gICAgICAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKKy0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysJIyBUaGlzIHNob3VsZCBiZSB0aGUgc2FtZSBmb3IgYWxsIGxhbmd1YWdlcywgc28gbm8gcGVyLXRhZyBjYWNoZSB2YXJpYWJsZS4KKysJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCisrCSAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKKysJICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy1pbnQgZm9vKHZvaWQpIHt9CisraW50IGZvbyAodm9pZCkgeyByZXR1cm4gMDsgfQorIF9BQ0VPRgorIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKy0gIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKy0KKysgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPXllcworK2Vsc2UKKysgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPW5vCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy0gICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCisrICAgICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY2OyB9CisrCWlmIHRlc3QgIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPSB5ZXM7IHRoZW4KKysgICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJZmkKKyAgICAgICBlbHNlCisgCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJworQEAgLTk2MjYsNyArMTAyMjIsNyBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgb3NmNCogfCBvc2Y1KikJIyBhcyBvc2YzKiB3aXRoIHRoZSBhZGRpdGlvbiBvZiAtbXN5bSBmbGFnCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJworLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisgICAgICAgZWxzZQorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKK0BAIC05NjQ1LDkgKzEwMjQxLDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyAteiBkZWZzJworICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgCXdsYXJjPScke3dsfScKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KKy0JICAkQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworKwkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworICAgICAgIGVsc2UKKyAJY2FzZSBgJENDIC1WIDI+JjFgIGluCisgCSoiQ29tcGlsZXJzIDUuMCIqKQorQEAgLTEwMjIzLDggKzEwODE5LDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgbmVlZF92ZXJzaW9uPW5vCisgICBuZWVkX2xpYl9wcmVmaXg9bm8KKyAKKy0gIGNhc2UgJEdDQywkaG9zdF9vcyBpbgorLSAgeWVzLGN5Z3dpbiogfCB5ZXMsbWluZ3cqIHwgeWVzLHB3MzIqIHwgeWVzLGNlZ2NjKikKKysgIGNhc2UgJEdDQywkY2NfYmFzZW5hbWUgaW4KKysgIHllcywqKQorKyAgICAjIGdjYworICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJworICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCisgICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgorQEAgLTEwMjU3LDEzICsxMDg1NCw3MSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworICAgICAgIDs7CisgICAgIGVzYWMKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKysgICAgOzsKKysKKysgICosY2wqKQorKyAgICAjIE5hdGl2ZSBNU1ZDCisrICAgIGxpYm5hbWVfc3BlYz0nJG5hbWUnCisrICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKKysgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9LmRsbC5saWInCisrCisrICAgIGNhc2UgJGJ1aWxkX29zIGluCisrICAgIG1pbmd3KikKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9CisrICAgICAgbHRfc2F2ZV9pZnM9JElGUworKyAgICAgIElGUz0nOycKKysgICAgICBmb3IgbHRfcGF0aCBpbiAkTElCCisrICAgICAgZG8KKysgICAgICAgIElGUz0kbHRfc2F2ZV9pZnMKKysgICAgICAgICMgTGV0IERPUyB2YXJpYWJsZSBleHBhbnNpb24gcHJpbnQgdGhlIHNob3J0IDguMyBzdHlsZSBmaWxlIG5hbWUuCisrICAgICAgICBsdF9wYXRoPWBjZCAiJGx0X3BhdGgiIDI+L2Rldi9udWxsICYmIGNtZCAvL0MgImZvciAlaSBpbiAoIi4iKSBkbyBAZWNobyAlfnNpImAKKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAkbHRfcGF0aCIKKysgICAgICBkb25lCisrICAgICAgSUZTPSRsdF9zYXZlX2lmcworKyAgICAgICMgQ29udmVydCB0byBNU1lTIHN0eWxlLgorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgc2VkIC1lICdzfFxcXFx8L3xnJyAtZSAnc3wgXFwoW2EtekEtWl1cXCk6fCAvXFwxfGcnIC1lICdzfF4gfHwnYAorKyAgICAgIDs7CisrICAgIGN5Z3dpbiopCisrICAgICAgIyBDb252ZXJ0IHRvIHVuaXggZm9ybSwgdGhlbiB0byBkb3MgZm9ybSwgdGhlbiBiYWNrIHRvIHVuaXggZm9ybQorKyAgICAgICMgYnV0IHRoaXMgdGltZSBkb3Mgc3R5bGUgKG5vIHNwYWNlcyEpIHNvIHRoYXQgdGhlIHVuaXggZm9ybSBsb29rcworKyAgICAgICMgbGlrZSAvY3lnZHJpdmUvYy9QUk9HUkF+MTovY3lnZHIuLi4KKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJExJQiJgCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLWRvcyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgMj4vZGV2L251bGxgCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKysgICAgICA7OworKyAgICAqKQorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJExJQiIKKysgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkR1JFUCAnO1tjLXpDLVpdOi8nID4vZGV2L251bGw7IHRoZW4KKysgICAgICAgICMgSXQgaXMgbW9zdCBwcm9iYWJseSBhIFdpbmRvd3MgZm9ybWF0IFBBVEguCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAorKyAgICAgIGVsc2UKKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKysgICAgICBmaQorKyAgICAgICMgRklYTUU6IGZpbmQgdGhlIHNob3J0IG5hbWUgb3IgdGhlIHBhdGggY29tcG9uZW50cywgYXMgc3BhY2VzIGFyZQorKyAgICAgICMgY29tbW9uLiAoZS5nLiAiUHJvZ3JhbSBGaWxlcyIgLT4gIlBST0dSQX4xIikKKysgICAgICA7OworKyAgICBlc2FjCisrCisrICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKysgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CisrICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJHtiYXNlX2ZpbGV9J1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKysgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+CisrICAgICAgdGVzdCAtZCBcJGRsZGlyIHx8IG1rZGlyIC1wIFwkZGxkaXJ+CisrICAgICAgJGluc3RhbGxfcHJvZyAkZGlyLyRkbG5hbWUgXCRkbGRpci8kZGxuYW1lJworKyAgICBwb3N0dW5pbnN0YWxsX2NtZHM9J2RsZGxsPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZmlsZTsgZWNobyBcJGRsbmFtZSdcJydgfgorKyAgICAgIGRscGF0aD0kZGlyL1wkZGxkbGx+CisrICAgICAgICRSTSBcJGRscGF0aCcKKysgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGluay5leGUnCisgICAgIDs7CisgCisgICAqKQorKyAgICAjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKKyAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fSAkbGlibmFtZS5saWInCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisgICAgIDs7CisgICBlc2FjCistICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCisgICBzaGxpYnBhdGhfdmFyPVBBVEgKKyAgIDs7CitAQCAtMTAzNTUsNyArMTEwMTAsNyBAQCBoYWlrdSopCisgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKKyAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKy0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9iZW9zL3N5c3RlbS9saWInCisrICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKKyAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKKyAgIDs7CisgCitAQCAtMTExOTUsMTAgKzExODUwLDEwIEBAIGVsc2UKKyAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCisgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLworICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQorLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisraW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworICNlbmRpZgorIAorLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQorK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQorIGludCBtYWluICgpCisgeworICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7CitAQCAtMTEzMDEsMTAgKzExOTU2LDEwIEBAIGVsc2UKKyAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCisgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLworICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQorLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisraW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworICNlbmRpZgorIAorLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQorK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQorIGludCBtYWluICgpCisgeworICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7CitAQCAtMTI1NDMsNyArMTMxOTgsNyBAQCBpZiB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSAieWVzIjsgdGhlbgorICMgc2luY2UgbGliYmZkIG1heSBub3QgcHVsbCBpbiB0aGUgZW50aXJldHkgb2YgbGliaWJlcnR5LgorICAgeD1gc2VkIC1uIC1lICdzL15bIAldKlBJQ0ZMQUdbIAldKj1bIAldKi8vcCcgPCAuLi9saWJpYmVydHkvTWFrZWZpbGUgfCBzZWQgLW4gJyRwJ2AKKyAgIGlmIHRlc3QgLW4gIiR4IjsgdGhlbgorLSAgICBTSEFSRURfTElCQUREPSItTGBwd2RgLy4uL2xpYmliZXJ0eS9waWMgLWxpYmVydHkiCisrICAgIFNIQVJFRF9MSUJBREQ9ImBwd2RgLy4uL2xpYmliZXJ0eS9waWMvbGliaWJlcnR5LmEiCisgICBmaQorIAorICAgY2FzZSAiJHtob3N0fSIgaW4KK0BAIC0xMzUyMCwxMyArMTQxNzUsMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Vuc2V0PSdgJEVDSE8gIiRsdF91bnNldCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfU1AyTkw9J2AkRUNITyAiJGx0X1NQMk5MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9OTDJTUD0nYCRFQ0hPICIkbHRfTkwyU1AiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHJlbG9hZF9mbGFnPSdgJEVDSE8gIiRyZWxvYWRfZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgcmVsb2FkX2NtZHM9J2AkRUNITyAiJHJlbG9hZF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBPQkpEVU1QPSdgJEVDSE8gIiRPQkpEVU1QIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0nYCRFQ0hPICIkZGVwbGlic19jaGVja19tZXRob2QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGZpbGVfbWFnaWNfY21kPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrZmlsZV9tYWdpY19nbG9iPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2dsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK3dhbnRfbm9jYXNlZ2xvYj0nYCRFQ0hPICIkd2FudF9ub2Nhc2VnbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytETExUT09MPSdgJEVDSE8gIiRETExUT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0nYCRFQ0hPICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIEFSPSdgJEVDSE8gIiRBUiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgQVJfRkxBR1M9J2AkRUNITyAiJEFSX0ZMQUdTIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKythcmNoaXZlcl9saXN0X3NwZWM9J2AkRUNITyAiJGFyY2hpdmVyX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgU1RSSVA9J2AkRUNITyAiJFNUUklQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBSQU5MSUI9J2AkRUNITyAiJFJBTkxJQiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2AkRUNITyAiJG9sZF9wb3N0aW5zdGFsbF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xMzU0MSwxNCArMTQyMDMsMTcgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgfCAkU0VEICIkZGUKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbm1fZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJG5tX2ZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9zeXNyb290PSdgJEVDSE8gIiRsdF9zeXNyb290IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBvYmpkaXI9J2AkRUNITyAiJG9iamRpciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTUFHSUNfQ01EPSdgJEVDSE8gIiRNQUdJQ19DTUQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCistbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9waWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9zdGF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vPSdgJEVDSE8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbmVlZF9sb2Nrcz0nYCRFQ0hPICIkbmVlZF9sb2NrcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrTUFOSUZFU1RfVE9PTD0nYCRFQ0hPICIkTUFOSUZFU1RfVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgRFNZTVVUSUw9J2AkRUNITyAiJERTWU1VVElMIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBOTUVESVQ9J2AkRUNITyAiJE5NRURJVCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTElQTz0nYCRFQ0hPICIkTElQTyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTM1ODEsMTIgKzE0MjQ2LDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xCisgaGFyZGNvZGVfYXV0b21hdGljPSdgJEVDSE8gIiRoYXJkY29kZV9hdXRvbWF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGluaGVyaXRfcnBhdGg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGxpbmtfYWxsX2RlcGxpYnM9J2AkRUNITyAiJGxpbmtfYWxsX2RlcGxpYnMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworLWZpeF9zcmNmaWxlX3BhdGg9J2AkRUNITyAiJGZpeF9zcmNmaWxlX3BhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGFsd2F5c19leHBvcnRfc3ltYm9scz0nYCRFQ0hPICIkYWx3YXlzX2V4cG9ydF9zeW1ib2xzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBleHBvcnRfc3ltYm9sc19jbWRzPSdgJEVDSE8gIiRleHBvcnRfc3ltYm9sc19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBleGNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGV4Y2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgaW5jbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHByZWxpbmtfY21kcz0nYCRFQ0hPICIkcHJlbGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytwb3N0bGlua19jbWRzPSdgJEVDSE8gIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBmaWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSdgJEVDSE8gIiR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbmVlZF9saWJfcHJlZml4PSdgJEVDSE8gIiRuZWVkX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTEzNjQxLDggKzE0MzA2LDEzIEBAIHJlbG9hZF9mbGFnIFwKKyBPQkpEVU1QIFwKKyBkZXBsaWJzX2NoZWNrX21ldGhvZCBcCisgZmlsZV9tYWdpY19jbWQgXAorK2ZpbGVfbWFnaWNfZ2xvYiBcCisrd2FudF9ub2Nhc2VnbG9iIFwKKytETExUT09MIFwKKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCBcCisgQVIgXAorIEFSX0ZMQUdTIFwKKythcmNoaXZlcl9saXN0X3NwZWMgXAorIFNUUklQIFwKKyBSQU5MSUIgXAorIENDIFwKK0BAIC0xMzY1MiwxMiArMTQzMjIsMTQgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wgXAorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIFwKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IFwKKytubV9maWxlX2xpc3Rfc3BlYyBcCisgbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcgXAorLWx0X3Byb2dfY29tcGlsZXJfd2wgXAorIGx0X3Byb2dfY29tcGlsZXJfcGljIFwKKytsdF9wcm9nX2NvbXBpbGVyX3dsIFwKKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyBcCisgbHRfY3ZfcHJvZ19jb21waWxlcl9jX28gXAorIG5lZWRfbG9ja3MgXAorK01BTklGRVNUX1RPT0wgXAorIERTWU1VVElMIFwKKyBOTUVESVQgXAorIExJUE8gXAorQEAgLTEzNjczLDcgKzE0MzQ1LDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWcgXAorIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgXAorIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQgXAorIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IgXAorLWZpeF9zcmNmaWxlX3BhdGggXAorIGV4Y2x1ZGVfZXhwc3ltcyBcCisgaW5jbHVkZV9leHBzeW1zIFwKKyBmaWxlX2xpc3Rfc3BlYyBcCitAQCAtMTM3MDksNiArMTQzODAsNyBAQCBtb2R1bGVfY21kcyBcCisgbW9kdWxlX2V4cHN5bV9jbWRzIFwKKyBleHBvcnRfc3ltYm9sc19jbWRzIFwKKyBwcmVsaW5rX2NtZHMgXAorK3Bvc3RsaW5rX2NtZHMgXAorIHBvc3RpbnN0YWxsX2NtZHMgXAorIHBvc3R1bmluc3RhbGxfY21kcyBcCisgZmluaXNoX2NtZHMgXAorQEAgLTE0NDY1LDcgKzE1MTM3LDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAorICMgTk9URTogQ2hhbmdlcyBtYWRlIHRvIHRoaXMgZmlsZSB3aWxsIGJlIGxvc3Q6IGxvb2sgYXQgbHRtYWluLnNoLgorICMKKyAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAorLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisrIyAgICAgICAgICAgICAgICAgSW5jLgorICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2CisgIworICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KK0BAIC0xNDU2OCwxOSArMTUyNDEsNDIgQEAgU1AyTkw9JGx0X2x0X1NQMk5MCisgIyB0dXJuIG5ld2xpbmVzIGludG8gc3BhY2VzLgorIE5MMlNQPSRsdF9sdF9OTDJTUAorIAorKyMgY29udmVydCBcJGJ1aWxkIGZpbGUgbmFtZXMgdG8gXCRob3N0IGZvcm1hdC4KKyt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCisrCisrIyBjb252ZXJ0IFwkYnVpbGQgZmlsZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4KKyt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCisrCisgIyBBbiBvYmplY3Qgc3ltYm9sIGR1bXBlci4KKyBPQkpEVU1QPSRsdF9PQkpEVU1QCisgCisgIyBNZXRob2QgdG8gY2hlY2sgd2hldGhlciBkZXBlbmRlbnQgbGlicmFyaWVzIGFyZSBzaGFyZWQgb2JqZWN0cy4KKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfZGVwbGlic19jaGVja19tZXRob2QKKyAKKy0jIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPT0gImZpbGVfbWFnaWMiLgorKyMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KKyBmaWxlX21hZ2ljX2NtZD0kbHRfZmlsZV9tYWdpY19jbWQKKyAKKysjIEhvdyB0byBmaW5kIHBvdGVudGlhbCBmaWxlcyB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorK2ZpbGVfbWFnaWNfZ2xvYj0kbHRfZmlsZV9tYWdpY19nbG9iCisrCisrIyBGaW5kIHBvdGVudGlhbCBmaWxlcyB1c2luZyBub2Nhc2VnbG9iIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCisrd2FudF9ub2Nhc2VnbG9iPSRsdF93YW50X25vY2FzZWdsb2IKKysKKysjIERMTCBjcmVhdGlvbiBwcm9ncmFtLgorK0RMTFRPT0w9JGx0X0RMTFRPT0wKKysKKysjIENvbW1hbmQgdG8gYXNzb2NpYXRlIHNoYXJlZCBhbmQgbGluayBsaWJyYXJpZXMuCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisrCisgIyBUaGUgYXJjaGl2ZXIuCisgQVI9JGx0X0FSCisrCisrIyBGbGFncyB0byBjcmVhdGUgYW4gYXJjaGl2ZS4KKyBBUl9GTEFHUz0kbHRfQVJfRkxBR1MKKyAKKysjIEhvdyB0byBmZWVkIGEgZmlsZSBsaXN0aW5nIHRvIHRoZSBhcmNoaXZlci4KKythcmNoaXZlcl9saXN0X3NwZWM9JGx0X2FyY2hpdmVyX2xpc3Rfc3BlYworKworICMgQSBzeW1ib2wgc3RyaXBwaW5nIHByb2dyYW0uCisgU1RSSVA9JGx0X1NUUklQCisgCitAQCAtMTQ2MTAsNiArMTUzMDYsMTIgQEAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKKyAjIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkLgorIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeAorIAorKyMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzIGZvciBcJE5NLgorK25tX2ZpbGVfbGlzdF9zcGVjPSRsdF9ubV9maWxlX2xpc3Rfc3BlYworKworKyMgVGhlIHJvb3Qgd2hlcmUgdG8gc2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzLGFuZCBpbiB3aGljaCBvdXIgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQuCisrbHRfc3lzcm9vdD0kbHRfc3lzcm9vdAorKworICMgVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRlbXBvcmFyeSBsaWJ0b29sIGZpbGVzLgorIG9iamRpcj0kb2JqZGlyCisgCitAQCAtMTQ2MTksNiArMTUzMjEsOSBAQCBNQUdJQ19DTUQ9JE1BR0lDX0NNRAorICMgTXVzdCB3ZSBsb2NrIGZpbGVzIHdoZW4gZG9pbmcgY29tcGlsYXRpb24/CisgbmVlZF9sb2Nrcz0kbHRfbmVlZF9sb2NrcworIAorKyMgTWFuaWZlc3QgdG9vbC4KKytNQU5JRkVTVF9UT09MPSRsdF9NQU5JRkVTVF9UT09MCisrCisgIyBUb29sIHRvIG1hbmlwdWxhdGUgYXJjaGl2ZWQgRFdBUkYgZGVidWcgc3ltYm9sIGZpbGVzIG9uIE1hYyBPUyBYLgorIERTWU1VVElMPSRsdF9EU1lNVVRJTAorIAorQEAgLTE0NzMzLDEyICsxNTQzOCwxMiBAQCB3aXRoX2djYz0kR0NDCisgIyBDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgorIG5vX2J1aWx0aW5fZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcKKyAKKy0jIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCistd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKKy0KKyAjIEFkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0cy4KKyBwaWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9waWMKKyAKKysjIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCisrd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKKysKKyAjIENvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBkeW5hbWljIGxpbmtpbmcuCisgbGlua19zdGF0aWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9zdGF0aWMKKyAKK0BAIC0xNDgyNSw5ICsxNTUzMCw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGgKKyAjIFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KKyBsaW5rX2FsbF9kZXBsaWJzPSRsaW5rX2FsbF9kZXBsaWJzCisgCistIyBGaXggdGhlIHNoZWxsIHZhcmlhYmxlIFwkc3JjZmlsZSBmb3IgdGhlIGNvbXBpbGVyLgorLWZpeF9zcmNmaWxlX3BhdGg9JGx0X2ZpeF9zcmNmaWxlX3BhdGgKKy0KKyAjIFNldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4KKyBhbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3ltYm9scworIAorQEAgLTE0ODQzLDYgKzE1NTQ1LDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKKyAjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzLgorIHByZWxpbmtfY21kcz0kbHRfcHJlbGlua19jbWRzCisgCisrIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGZpbmlzaGluZyBsaW5raW5nIHByb2dyYW1zLgorK3Bvc3RsaW5rX2NtZHM9JGx0X3Bvc3RsaW5rX2NtZHMKKysKKyAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcy4KKyBmaWxlX2xpc3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWMKKyAKK0BAIC0xNDg3NSwyMTAgKzE1NTgwLDE2OSBAQCBsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKKyAgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KKyAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCisgICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPworLSAgc2VkICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlL3EnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKy0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKy0KKy0gIGNhc2UgJHhzaV9zaGVsbCBpbgorLSAgeWVzKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKy0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy1mdW5jX2Rpcm5hbWUgKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKy0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworLSAgZXNhYworLX0KKy0KKy0jIGZ1bmNfYmFzZW5hbWUgZmlsZQorLWZ1bmNfYmFzZW5hbWUgKCkKKy17CistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCistfQorLQorLSMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIHBlcmZvcm0gZnVuY19iYXNlbmFtZSBhbmQgZnVuY19kaXJuYW1lIGluIGEgc2luZ2xlIGZ1bmN0aW9uCistIyBjYWxsOgorLSMgICBkaXJuYW1lOiAgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksCistIyAgICAgICAgICAgICBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsIG90aGVyd2lzZSBzZXQgcmVzdWx0CistIyAgICAgICAgICAgICB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfZGlybmFtZV9yZXN1bHQiCistIyAgIGJhc2VuYW1lOiBDb21wdXRlIGZpbGVuYW1lIG9mIEZJTEUuCistIyAgICAgICAgICAgICB2YWx1ZSByZXR1bmVkIGluICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCistIyBJbXBsZW1lbnRhdGlvbiBtdXN0IGJlIGtlcHQgc3luY2hyb25pemVkIHdpdGggZnVuY19kaXJuYW1lCistIyBhbmQgZnVuY19iYXNlbmFtZS4gRm9yIGVmZmljaWVuY3ksIHdlIGRvIG5vdCBkZWxlZ2F0ZSB0bworLSMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgorLWZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKy0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworLSAgZXNhYworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgorLX0KKy0KKy0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQorLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCistIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKy0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKy0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCistZnVuY19zdHJpcG5hbWUgKCkKKy17CistICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCistICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In0KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9CistfQorLQorLSMgZnVuY19vcHRfc3BsaXQKKy1mdW5jX29wdF9zcGxpdCAoKQorLXsKKy0gIGZ1bmNfb3B0X3NwbGl0X29wdD0kezElJT0qfQorLSAgZnVuY19vcHRfc3BsaXRfYXJnPSR7MSMqPX0KKy19CistCistIyBmdW5jX2xvMm8gb2JqZWN0CistZnVuY19sbzJvICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7CistICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OworLSAgZXNhYworLX0KKy0KKy0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQorLWZ1bmNfeGZvcm0gKCkKKy17CistICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvCistfQorLQorLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KKy1mdW5jX2FyaXRoICgpCisteworLSAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpCistfQorLQorLSMgZnVuY19sZW4gc3RyaW5nCistIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgorLWZ1bmNfbGVuICgpCisteworLSAgZnVuY19sZW5fcmVzdWx0PSR7IzF9CistfQorLQorLV9MVF9FT0YKKy0gICAgOzsKKy0gICopICMgQm91cm5lIGNvbXBhdGlibGUgZnVuY3Rpb25zLgorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKy0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy1mdW5jX2Rpcm5hbWUgKCkKKy17CistICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgorLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGRpcm5hbWUiYAorLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKKy0gIGVsc2UKKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgorLSAgZmkKKy19CistCistIyBmdW5jX2Jhc2VuYW1lIGZpbGUKKy1mdW5jX2Jhc2VuYW1lICgpCisteworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRiYXNlbmFtZSJgCistfQorLQorLQorLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCistIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKy0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KKy0jIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCistZnVuY19zdHJpcG5hbWUgKCkKKy17CistICBjYXNlICR7Mn0gaW4KKy0gICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKKy0gICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OworLSAgZXNhYworLX0KKy0KKy0jIHNlZCBzY3JpcHRzOgorLW15X3NlZF9sb25nX29wdD0nMXMvXlwoLVtePV0qXCk9LiovXDEvO3EnCistbXlfc2VkX2xvbmdfYXJnPScxcy9eLVtePV0qPS8vJworLQorLSMgZnVuY19vcHRfc3BsaXQKKy1mdW5jX29wdF9zcGxpdCAoKQorLXsKKy0gIGZ1bmNfb3B0X3NwbGl0X29wdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX29wdCJgCistICBmdW5jX29wdF9zcGxpdF9hcmc9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19hcmciYAorLX0KKy0KKy0jIGZ1bmNfbG8ybyBvYmplY3QKKy1mdW5jX2xvMm8gKCkKKy17CistICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbG8ybyJgCistfQorLQorLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCistZnVuY194Zm9ybSAoKQorLXsKKy0gIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICdzL1wuW14uXSokLy5sby8nYAorLX0KKy0KKy0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCistZnVuY19hcml0aCAoKQorLXsKKy0gIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIkQCJgCistfQorLQorLSMgZnVuY19sZW4gc3RyaW5nCistIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgorLWZ1bmNfbGVuICgpCisteworLSAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkMSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAorLX0KKy0KKy1fTFRfRU9GCistZXNhYworLQorLWNhc2UgJGx0X3NoZWxsX2FwcGVuZCBpbgorLSAgeWVzKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCistIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCistZnVuY19hcHBlbmQgKCkKKy17CistICBldmFsICIkMSs9XCQyIgorLX0KKy1fTFRfRU9GCistICAgIDs7CistICAqKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCistIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCistZnVuY19hcHBlbmQgKCkKKy17CistICBldmFsICIkMT1cJCQxXCQyIgorLX0KKy0KKy1fTFRfRU9GCistICAgIDs7CistICBlc2FjCistCistCistICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCistICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCistCistICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CisrICBzZWQgJyRxJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCisrICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorKworKyAgaWYgdGVzdCB4IiR4c2lfc2hlbGwiID0geHllczsgdGhlbgorKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZSAvY1wKKytmdW5jX2Rpcm5hbWUgKClcCisre1wKKytcICAgIGNhc2UgJHsxfSBpblwKKytcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCisrXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCisrXCAgICBlc2FjXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19iYXNlbmFtZSAvY1wKKytmdW5jX2Jhc2VuYW1lICgpXAorK3tcCisrXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgL2NcCisrZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKVwKKyt7XAorK1wgICAgY2FzZSAkezF9IGluXAorK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKKytcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKKytcICAgIGVzYWNcCisrXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zdHJpcG5hbWUgKCkkLywvXn0gIyBmdW5jX3N0cmlwbmFtZSAvY1wKKytmdW5jX3N0cmlwbmFtZSAoKVwKKyt7XAorK1wgICAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZVwKKytcICAgICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC5cCisrXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfVwKKytcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9XAorK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3RyaXBuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zcGxpdF9sb25nX29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfbG9uZ19vcHQgL2NcCisrZnVuY19zcGxpdF9sb25nX29wdCAoKVwKKyt7XAorK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPSR7MSUlPSp9XAorK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9JHsxIyo9fVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9sb25nX29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfc2hvcnRfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9zaG9ydF9vcHQgL2NcCisrZnVuY19zcGxpdF9zaG9ydF9vcHQgKClcCisre1wKKytcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz0kezEjPz99XAorK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT0kezElIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmcifVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9zaG9ydF9vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2xvMm8gKCkkLywvXn0gIyBmdW5jX2xvMm8gL2NcCisrZnVuY19sbzJvICgpXAorK3tcCisrXCAgICBjYXNlICR7MX0gaW5cCisrXCAgICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7XAorK1wgICAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOztcCisrXCAgICBlc2FjXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xvMm8gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3hmb3JtICgpJC8sL159ICMgZnVuY194Zm9ybSAvY1wKKytmdW5jX3hmb3JtICgpXAorK3tcCisrICAgIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG9cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfeGZvcm0gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2FyaXRoICgpJC8sL159ICMgZnVuY19hcml0aCAvY1wKKytmdW5jX2FyaXRoICgpXAorK3tcCisrICAgIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcml0aCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfbGVuICgpJC8sL159ICMgZnVuY19sZW4gL2NcCisrZnVuY19sZW4gKClcCisre1wKKysgICAgZnVuY19sZW5fcmVzdWx0PSR7IzF9XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xlbiBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworK2ZpCisrCisraWYgdGVzdCB4IiRsdF9zaGVsbF9hcHBlbmQiID0geHllczsgdGhlbgorKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kICgpJC8sL159ICMgZnVuY19hcHBlbmQgL2NcCisrZnVuY19hcHBlbmQgKClcCisre1wKKysgICAgZXZhbCAiJHsxfSs9XFwkezJ9IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2FwcGVuZF9xdW90ZWQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZF9xdW90ZWQgL2NcCisrZnVuY19hcHBlbmRfcXVvdGVkICgpXAorK3tcCisrXCAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IlwKKytcICAgIGV2YWwgIiR7MX0rPVxcXFwgXFwkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZF9xdW90ZWQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCB3aGVyZSBwb3NzaWJsZSBieSBkaXJlY3QgdXNlIG9mICcrPScKKysgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDErPSIlZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAorKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKytlbHNlCisrICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgZXZlbiB3aGVuICcrPScgaXMgbm90IGF2YWlsYWJsZQorKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMT0iJFwxJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKysgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKysgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrZmkKKysKKytpZiB0ZXN0IHgiJF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWwiID0geCI6IjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjI7fQorK2ZpCisrCisrCisrICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAorICAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQorICAgY2htb2QgK3ggIiRvZmlsZSIKKyAKK2RpZmYgLS1naXQgYS9vcGNvZGVzL2NvbmZpZ3VyZS5hYyBiL29wY29kZXMvY29uZmlndXJlLmFjCitpbmRleCBhOWZiZmQ2MWYxLi5jNDM3ODBmNjRkIDEwMDY0NAorLS0tIGEvb3Bjb2Rlcy9jb25maWd1cmUuYWMKKysrKyBiL29wY29kZXMvY29uZmlndXJlLmFjCitAQCAtMTY3LDcgKzE2Nyw3IEBAIGNoYW5nZXF1b3RlKCwpZG5sCisgICB4PWBzZWQgLW4gLWUgJ3MvXlsgCV0qUElDRkxBR1sgCV0qPVsgCV0qLy9wJyA8IC4uL2xpYmliZXJ0eS9NYWtlZmlsZSB8IHNlZCAtbiAnJHAnYAorIGNoYW5nZXF1b3RlKFssXSlkbmwKKyAgIGlmIHRlc3QgLW4gIiR4IjsgdGhlbgorLSAgICBTSEFSRURfTElCQUREPSItTGBwd2RgLy4uL2xpYmliZXJ0eS9waWMgLWxpYmVydHkiCisrICAgIFNIQVJFRF9MSUJBREQ9ImBwd2RgLy4uL2xpYmliZXJ0eS9waWMvbGliaWJlcnR5LmEiCisgICBmaQorIAorICAgY2FzZSAiJHtob3N0fSIgaW4KK2RpZmYgLS1naXQgYS96bGliL2NvbmZpZ3VyZSBiL3psaWIvY29uZmlndXJlCitpbmRleCBkYzJkOWVkMzgzLi5lZDlhNDkyZjVjIDEwMDc1NQorLS0tIGEvemxpYi9jb25maWd1cmUKKysrKyBiL3psaWIvY29uZmlndXJlCitAQCAtNjE0LDggKzYxNCwxMSBAQCBPVE9PTAorIExJUE8KKyBOTUVESVQKKyBEU1lNVVRJTAorK01BTklGRVNUX1RPT0wKKyBSQU5MSUIKKythY19jdF9BUgorIEFSCisrRExMVE9PTAorIE9CSkRVTVAKKyBMTl9TCisgTk0KK0BAIC03MzcsNiArNzQwLDcgQEAgZW5hYmxlX3N0YXRpYworIHdpdGhfcGljCisgZW5hYmxlX2Zhc3RfaW5zdGFsbAorIHdpdGhfZ251X2xkCisrd2l0aF9saWJ0b29sX3N5c3Jvb3QKKyBlbmFibGVfbGlidG9vbF9sb2NrCisgZW5hYmxlX2hvc3Rfc2hhcmVkCisgJworQEAgLTEzODUsNiArMTM4OSw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgorICAgLS13aXRoLXBpYyAgICAgICAgICAgICAgdHJ5IHRvIHVzZSBvbmx5IFBJQy9ub24tUElDIG9iamVjdHMgW2RlZmF1bHQ9dXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBib3RoXQorICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIFtkZWZhdWx0PW5vXQorKyAgLS13aXRoLWxpYnRvb2wtc3lzcm9vdD1ESVIgU2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzIHdpdGhpbiBESVIKKysgICAgICAgICAgICAgICAgICAgICAgICAob3IgdGhlIGNvbXBpbGVyJ3Mgc3lzcm9vdCBpZiBub3Qgc3BlY2lmaWVkKS4KKyAKKyBTb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoKKyAgIENDICAgICAgICAgIEMgY29tcGlsZXIgY29tbWFuZAorQEAgLTM5MTAsOCArMzkxNiw4IEBAIGVzYWMKKyAKKyAKKyAKKy1tYWNyb192ZXJzaW9uPScyLjIuN2EnCistbWFjcm9fcmV2aXNpb249JzEuMzEzNCcKKyttYWNyb192ZXJzaW9uPScyLjQnCisrbWFjcm9fcmV2aXNpb249JzEuMzI5MycKKyAKKyAKKyAKK0BAIC0zOTUxLDcgKzM5NTcsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITworIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzLi4uICIgPiY2OyB9CisgIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCistaWYgdGVzdCAiWGBwcmludCAtciAtLSAtbiAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKKytpZiB0ZXN0ICJYYCggcHJpbnQgLXIgLS0gLW4gKSAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKKyAgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgorICAgRUNITz0ncHJpbnQgLXIgLS0nCisgZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KK0BAIC00NzY3LDggKzQ3NzMsOCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBzb21lIFhTSSBjb25zdHJ1Y3RzLi4uICIgPiY2OworICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCisgeHNpX3NoZWxsPW5vCisgKCBfbHRfZHVtbXk9ImEvYi9jIgorLSAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sIiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKKy0gICAgICA9IGMsYS9iLCwgXAorKyAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sJHtfbHRfZHVtbXkjPz99IiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKKysgICAgICA9IGMsYS9iLGIvYywgXAorICAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCisgICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCisgICAmJiB4c2lfc2hlbGw9eWVzCitAQCAtNDgxNyw2ICs0ODIzLDgwIEBAIGVzYWMKKyAKKyAKKyAKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0Li4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtsdF9jdl90b19ob3N0X2ZpbGVfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgY2FzZSAkaG9zdCBpbgorKyAgKi0qLW1pbmd3KiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgICAqLSotY3lnd2luKiApCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIKKysgICAgICAgIDs7CisrICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyCisrICAgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisrICAqLSotY3lnd2luKiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbgorKyAgICAgICAgOzsKKysgICAgICAqLSotY3lnd2luKiApCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKysgICAgICAgIDs7CisrICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luCisrICAgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisrICAqICkgIyB1bmhhbmRsZWQgaG9zdHMgKGFuZCAibm9ybWFsIiBuYXRpdmUgYnVpbGRzKQorKyAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKysgICAgOzsKKytlc2FjCisrCisrZmkKKysKKyt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNjsgfQorKworKworKworKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4uLiAiID4mNjsgfQorK2lmIHRlc3QgIiR7bHRfY3ZfdG9fdG9vbF9maWxlX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgICNhc3N1bWUgb3JkaW5hcnkgY3Jvc3MgdG9vbHMsIG9yIG5hdGl2ZSBidWlsZC4KKytsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKytjYXNlICRob3N0IGluCisrICAqLSotbWluZ3cqICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrICAgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisrZXNhYworKworK2ZpCisrCisrdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjY7IH0KKysKKysKKysKKysKKysKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMuLi4gIiA+JjY7IH0KKyBpZiB0ZXN0ICIke2x0X2N2X2xkX3JlbG9hZF9mbGFnK3NldH0iID0gc2V0OyB0aGVuIDoKK0BAIC00ODMzLDYgKzQ5MTMsMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KKyBlc2FjCisgcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJworIGNhc2UgJGhvc3Rfb3MgaW4KKysgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKysgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCisrICAgICAgcmVsb2FkX2NtZHM9ZmFsc2UKKysgICAgZmkKKysgICAgOzsKKyAgIGRhcndpbiopCisgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJworQEAgLTUwMDEsNyArNTA4Niw4IEBAIG1pbmd3KiB8IHB3MzIqKQorICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJworICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKKyAgIGVsc2UKKy0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCisrICAgICMgS2VlcCB0aGlzIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gZnVuY193aW4zMl9saWJpZC4KKysgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJworICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCisgICBmaQorICAgOzsKK0BAIC01MTU1LDYgKzUyNDEsMjEgQEAgZXNhYworIGZpCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY1CisgJGFzX2VjaG8gIiRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY2OyB9CisrCisrZmlsZV9tYWdpY19nbG9iPQorK3dhbnRfbm9jYXNlZ2xvYj1ubworK2lmIHRlc3QgIiRidWlsZCIgPSAiJGhvc3QiOyB0aGVuCisrICBjYXNlICRob3N0X29zIGluCisrICBtaW5ndyogfCBwdzMyKikKKysgICAgaWYgKCBzaG9wdCB8IGdyZXAgbm9jYXNlZ2xvYiApID4vZGV2L251bGwgMj4mMTsgdGhlbgorKyAgICAgIHdhbnRfbm9jYXNlZ2xvYj15ZXMKKysgICAgZWxzZQorKyAgICAgIGZpbGVfbWFnaWNfZ2xvYj1gZWNobyBhQWJCY0NkRGVFZkZnR2hIaUlqSmtLbExtTW5Ob09wUHFRclJzU3RUdVV2VndXeFh5WXpaIHwgJFNFRCAtZSAicy9cKC4uXCkvc1wvW1wxXVwvW1wxXVwvZzsvZyJgCisrICAgIGZpCisrICAgIDs7CisrICBlc2FjCisrZmkKKysKKyBmaWxlX21hZ2ljX2NtZD0kbHRfY3ZfZmlsZV9tYWdpY19jbWQKKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QKKyB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KK0BAIC01MTY4LDExICs1MjY5LDE2NSBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KKyAKKyAKKyAKKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKyAKKyAKKyBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCistICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9YXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWFyOyBhY193b3JkPSQyCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2FjX2N2X3Byb2dfRExMVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19ETExUT09MPSIkRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorKyAgICBhY19jdl9wcm9nX0RMTFRPT0w9IiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrRExMVE9PTD0kYWNfY3ZfcHJvZ19ETExUT09MCisraWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJERMTFRPT0wiID4mNQorKyRhc19lY2hvICIkRExMVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrCisrZmkKKytpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19ETExUT09MIjsgdGhlbgorKyAgYWNfY3RfRExMVE9PTD0kRExMVE9PTAorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJkbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgZGxsdG9vbDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfRExMVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSIkYWNfY3RfRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorKyAgICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9ImRsbHRvb2wiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK2FjX2N0X0RMTFRPT0w9JGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTAorK2lmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9ETExUT09MIiA+JjUKKyskYXNfZWNobyAiJGFjX2N0X0RMTFRPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKyAgaWYgdGVzdCAieCRhY19jdF9ETExUT09MIiA9IHg7IHRoZW4KKysgICAgRExMVE9PTD0iZmFsc2UiCisrICBlbHNlCisrICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KKyt5ZXM6KQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CisrYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisrZXNhYworKyAgICBETExUT09MPSRhY19jdF9ETExUT09MCisrICBmaQorK2Vsc2UKKysgIERMTFRPT0w9IiRhY19jdl9wcm9nX0RMTFRPT0wiCisrZmkKKysKKyt0ZXN0IC16ICIkRExMVE9PTCIgJiYgRExMVE9PTD1kbGx0b29sCisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJworKworK2Nhc2UgJGhvc3Rfb3MgaW4KKytjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisrICAjIHR3byBkaWZmZXJlbnQgc2hlbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gbHRtYWluLnNoCisrICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCisrICBjYXNlIGAkRExMVE9PTCAtLWhlbHAgMj4mMWAgaW4KKysgICotLWlkZW50aWZ5LXN0cmljdCopCisrICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgorKyAgICA7OworKyAgKikKKysgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrCisrICAgIDs7CisrICBlc2FjCisrICA7OworKyopCisrICAjIGZhbGxiYWNrOiBhc3N1bWUgbGlua2xpYiBJUyBzaGFyZWRsaWIKKysgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSIkRUNITyIKKysgIDs7CisrZXNhYworKworK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY2OyB9Cisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisrdGVzdCAteiAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiAmJiBzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kRUNITworKworKworKworKworKworKworKworKworK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKysgIGZvciBhY19wcm9nIGluIGFyCisrICBkbworKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisgaWYgdGVzdCAiJHthY19jdl9wcm9nX0FSK3NldH0iID0gc2V0OyB0aGVuIDoKK0BAIC01MTg4LDcgKzU0NDMsNyBAQCBkbworICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCistICAgIGFjX2N2X3Byb2dfQVI9IiR7YWNfdG9vbF9wcmVmaXh9YXIiCisrICAgIGFjX2N2X3Byb2dfQVI9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgorICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICAgYnJlYWsgMgorICAgZmkKK0BAIC01MjA4LDExICs1NDYzLDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9CisgZmkKKyAKKyAKKysgICAgdGVzdCAtbiAiJEFSIiAmJiBicmVhaworKyAgZG9uZQorIGZpCistaWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQVIiOyB0aGVuCisraWYgdGVzdCAteiAiJEFSIjsgdGhlbgorICAgYWNfY3RfQVI9JEFSCistICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKy1zZXQgZHVtbXkgYXI7IGFjX3dvcmQ9JDIKKysgIGZvciBhY19wcm9nIGluIGFyCisrZG8KKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKyBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfQVIrc2V0fSIgPSBzZXQ7IHRoZW4gOgorQEAgLTUyMjgsNyArNTQ4Nyw3IEBAIGRvCisgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKy0gICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iYXIiCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9IiRhY19wcm9nIgorICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICAgYnJlYWsgMgorICAgZmkKK0BAIC01MjQ3LDYgKzU1MDYsMTAgQEAgZWxzZQorICRhc19lY2hvICJubyIgPiY2OyB9CisgZmkKKyAKKysKKysgIHRlc3QgLW4gIiRhY19jdF9BUiIgJiYgYnJlYWsKKytkb25lCisrCisgICBpZiB0ZXN0ICJ4JGFjX2N0X0FSIiA9IHg7IHRoZW4KKyAgICAgQVI9ImZhbHNlIgorICAgZWxzZQorQEAgLTUyNTgsMTYgKzU1MjEsNzIgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisgZXNhYworICAgICBBUj0kYWNfY3RfQVIKKyAgIGZpCistZWxzZQorLSAgQVI9IiRhY19jdl9wcm9nX0FSIgorIGZpCisgCistdGVzdCAteiAiJEFSIiAmJiBBUj1hcgorLXRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1CisrOiAke0FSPWFyfQorKzogJHtBUl9GTEFHUz1jcnV9CisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2x0X2N2X2FyX2F0X2ZpbGUrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9hcl9hdF9maWxlPW5vCisrICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKysKKytpbnQKKyttYWluICgpCisreworIAorKyAgOworKyAgcmV0dXJuIDA7CisrfQorK19BQ0VPRgorK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKysgIGVjaG8gY29uZnRlc3QuJGFjX29iamV4dCA+IGNvbmZ0ZXN0LmxzdAorKyAgICAgIGx0X2FyX3RyeT0nJEFSICRBUl9GTEFHUyBsaWJjb25mdGVzdC5hIEBjb25mdGVzdC5sc3QgPiY1JworKyAgICAgIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1CisrICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1CisrICBhY19zdGF0dXM9JD8KKysgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQorKyAgICAgIGlmIHRlc3QgIiRhY19zdGF0dXMiIC1lcSAwOyB0aGVuCisrCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCisrCXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgbGliY29uZnRlc3QuYQorKwl7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQorKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQorKyAgYWNfc3RhdHVzPSQ/CisrICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKysgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KKysJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KKysgICAgICAgICAgbHRfY3ZfYXJfYXRfZmlsZT1ACisrICAgICAgICBmaQorKyAgICAgIGZpCisrICAgICAgcm0gLWYgY29uZnRlc3QuKiBsaWJjb25mdGVzdC5hCisgCisrZmkKKytybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfYXJfYXRfZmlsZSIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9hcl9hdF9maWxlIiA+JjY7IH0KKyAKKytpZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCisrICBhcmNoaXZlcl9saXN0X3NwZWM9CisrZWxzZQorKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCisrZmkKKyAKKyAKKyAKK0BAIC01NjA5LDggKzU5MjgsOCBAQCBlc2FjCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiAtZSAncy9eVCAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDEoKTsvcCcgLWUgJ3MvXiRzeW1jb2RlKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJyIKKyAKKyAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKKy1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisrbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisgCisgIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCisgb3B0X2NyPQorQEAgLTU2NDYsNiArNTk2NSw3IEBAIGZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KKyAgIGVsc2UKKyAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0ic2VkIC1uIC1lICdzL14uKlsJIF1cKCRzeW1jb2RlJHN5bWNvZGUqXClbCSBdWwkgXSokYWNfc3ltcHJmeCRzeW1wYXQkb3B0X2NyJC8kc3lteGZybS9wJyIKKyAgIGZpCisrICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSB8IHNlZCAnLyBfX2dudV9sdG8vZCciCisgCisgICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBwaXBlIHdvcmtzIGNvcnJlY3RseS4KKyAgIHBpcGVfd29ya3M9bm8KK0BAIC01Njg3LDYgKzYwMDcsMTggQEAgX0xUX0VPRgorICAgICAgIGlmICRHUkVQICcgbm1fdGVzdF92YXIkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCisgCWlmICRHUkVQICcgbm1fdGVzdF9mdW5jJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgorIAkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0CisrLyogS2VlcCB0aGlzIGNvZGUgaW4gc3luYyBiZXR3ZWVuIGxpYnRvb2wubTQsIGx0bWFpbiwgbHRfc3lzdGVtLmgsIGFuZCB0ZXN0cy4gICovCisrI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKKysvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKKysgICByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24gb24gcHNldWRvLXJlbG9jcy4gICovCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKKysjZWxpZiBkZWZpbmVkKF9fb3NmX18pCisrLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKKysjZWxzZQorKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUIGNvbnN0CisrI2VuZGlmCisrCisgI2lmZGVmIF9fY3BsdXNwbHVzCisgZXh0ZXJuICJDIiB7CisgI2VuZGlmCitAQCAtNTY5OCw3ICs2MDMwLDcgQEAgX0xUX0VPRgorIAkgIGNhdCA8PF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAorIAorIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KKy1jb25zdCBzdHJ1Y3QgeworK0xUX0RMU1lNX0NPTlNUIHN0cnVjdCB7CisgICBjb25zdCBjaGFyICpuYW1lOworICAgdm9pZCAgICAgICAqYWRkcmVzczsKKyB9CitAQCAtNTcyNCw4ICs2MDU2LDggQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKKyBfTFRfRU9GCisgCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KKyAJICBtdiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKKy0JICBsdF9zYXZlX0xJQlM9IiRMSUJTIgorLQkgIGx0X3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorKwkgIGx0X2dsb2JzeW1fc2F2ZV9MSUJTPSRMSUJTCisrCSAgbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUz0kQ0ZMQUdTCisgCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKKyAJICBDRkxBR1M9IiRDRkxBR1MkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciCisgCSAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2xpbmtcIiI7IH0gPiY1CitAQCAtNTczNSw4ICs2MDY3LDggQEAgX0xUX0VPRgorICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCisgCSAgICBwaXBlX3dvcmtzPXllcworIAkgIGZpCistCSAgTElCUz0iJGx0X3NhdmVfTElCUyIKKy0JICBDRkxBR1M9IiRsdF9zYXZlX0NGTEFHUyIKKysJICBMSUJTPSRsdF9nbG9ic3ltX3NhdmVfTElCUworKwkgIENGTEFHUz0kbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUworIAllbHNlCisgCSAgZWNobyAiY2Fubm90IGZpbmQgbm1fdGVzdF9mdW5jIGluICRubGlzdCIgPiY1CisgCWZpCitAQCAtNTc3Myw2ICs2MTA1LDE5IEBAIGVsc2UKKyAkYXNfZWNobyAib2siID4mNjsgfQorIGZpCisgCisrIyBSZXNwb25zZSBmaWxlIHN1cHBvcnQuCisraWYgdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiTVMgZHVtcGJpbiI7IHRoZW4KKysgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJworK2VsaWYgJE5NIC0taGVscCAyPi9kZXYvbnVsbCB8IGdyZXAgJ1tAXUZJTEUnID4vZGV2L251bGw7IHRoZW4KKysgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJworK2ZpCisrCisrCisrCisrCisrCisrCisrCisgCisgCisgCitAQCAtNTc5MCw2ICs2MTM1LDQxIEBAIGZpCisgCisgCisgCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3lzcm9vdCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN5c3Jvb3QuLi4gIiA+JjY7IH0KKysKKysjIENoZWNrIHdoZXRoZXIgLS13aXRoLWxpYnRvb2wtc3lzcm9vdCB3YXMgZ2l2ZW4uCisraWYgdGVzdCAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICB3aXRodmFsPSR3aXRoX2xpYnRvb2xfc3lzcm9vdDsKKytlbHNlCisrICB3aXRoX2xpYnRvb2xfc3lzcm9vdD1ubworK2ZpCisrCisrCisrbHRfc3lzcm9vdD0KKytjYXNlICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IGluICMoCisrIHllcykKKysgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorKyAgICAgbHRfc3lzcm9vdD1gJENDIC0tcHJpbnQtc3lzcm9vdCAyPi9kZXYvbnVsbGAKKysgICBmaQorKyAgIDs7ICMoCisrIC8qKQorKyAgIGx0X3N5c3Jvb3Q9YGVjaG8gIiR3aXRoX2xpYnRvb2xfc3lzcm9vdCIgfCBzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAorKyAgIDs7ICMoCisrIG5vfCcnKQorKyAgIDs7ICMoCisrICopCisrICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjUKKyskYXNfZWNobyAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNjsgfQorKyAgIGFzX2ZuX2Vycm9yICJUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguIiAiJExJTkVOTyIgNQorKyAgIDs7CisrZXNhYworKworKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHtsdF9zeXNyb290Oi1ub30iID4mNQorKyRhc19lY2hvICIke2x0X3N5c3Jvb3Q6LW5vfSIgPiY2OyB9CisgCisgCisgCitAQCAtNjAwNCw2ICs2Mzg0LDEyMyBAQCBlc2FjCisgCisgbmVlZF9sb2Nrcz0iJGVuYWJsZV9saWJ0b29sX2xvY2siCisgCisraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fW10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1tdDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2FjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIkTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorKyAgICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiR7YWNfdG9vbF9wcmVmaXh9bXQiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTAorK2lmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRNQU5JRkVTVF9UT09MIiA+JjUKKyskYXNfZWNobyAiJE1BTklGRVNUX1RPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKworK2ZpCisraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIGFjX2N0X01BTklGRVNUX1RPT0w9JE1BTklGRVNUX1RPT0wKKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAibXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSBtdDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorKyAgICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9Im10IgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKythY19jdF9NQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wKKytpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysgIGlmIHRlc3QgIngkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPSB4OyB0aGVuCisrICAgIE1BTklGRVNUX1RPT0w9IjoiCisrICBlbHNlCisrICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KKyt5ZXM6KQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CisrYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisrZXNhYworKyAgICBNQU5JRkVTVF9UT09MPSRhY19jdF9NQU5JRkVTVF9UT09MCisrICBmaQorK2Vsc2UKKysgIE1BTklGRVNUX1RPT0w9IiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiCisrZmkKKysKKyt0ZXN0IC16ICIkTUFOSUZFU1RfVE9PTCIgJiYgTUFOSUZFU1RfVE9PTD1tdAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wuLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD1ubworKyAgZWNobyAiJGFzX21lOiRMSU5FTk86ICRNQU5JRkVTVF9UT09MICctPyciID4mNQorKyAgJE1BTklGRVNUX1RPT0wgJy0/JyAyPmNvbmZ0ZXN0LmVyciA+IGNvbmZ0ZXN0Lm91dAorKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKKysgIGlmICRHUkVQICdNYW5pZmVzdCBUb29sJyBjb25mdGVzdC5vdXQgPiAvZGV2L251bGw7IHRoZW4KKysgICAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPXllcworKyAgZmkKKysgIHJtIC1mIGNvbmZ0ZXN0KgorK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjY7IH0KKytpZiB0ZXN0ICJ4JGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgIT0geHllczsgdGhlbgorKyAgTUFOSUZFU1RfVE9PTD06CisrZmkKKysKKysKKysKKysKKysKKyAKKyAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgcmhhcHNvZHkqIHwgZGFyd2luKikKK0BAIC02NTcwLDYgKzcwNjcsOCBAQCBfTFRfRU9GCisgICAgICAgJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyAyPiY1CisgICAgICAgZWNobyAiJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8iID4mNQorICAgICAgICRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIDI+JjUKKysgICAgICBlY2hvICIkUkFOTElCIGxpYmNvbmZ0ZXN0LmEiID4mNQorKyAgICAgICRSQU5MSUIgbGliY29uZnRlc3QuYSAyPiY1CisgICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCisgaW50IG1haW4oKSB7IHJldHVybiAwO30KKyBfTFRfRU9GCitAQCAtNzAzMyw3ICs3NTMyLDggQEAgZmkKKyBMSUJUT09MX0RFUFM9IiRsdG1haW4iCisgCisgIyBBbHdheXMgdXNlIG91ciBvd24gbGlidG9vbC4KKy1MSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpcikvbGlidG9vbCcKKytMSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpciknCisrTElCVE9PTD0iJExJQlRPT0wvJHtob3N0X2FsaWFzfS1saWJ0b29sIgorIAorIAorIAorQEAgLTcxMjIsNyArNzYyMiw3IEBAIGFpeDMqKQorIGVzYWMKKyAKKyAjIEdsb2JhbCB2YXJpYWJsZXM6Cistb2ZpbGU9bGlidG9vbAorK29maWxlPSR7aG9zdF9hbGlhc30tbGlidG9vbAorIGNhbl9idWlsZF9zaGFyZWQ9eWVzCisgCisgIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgYC5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCitAQCAtNzQyMCw4ICs3OTIwLDYgQEAgZmkKKyBsdF9wcm9nX2NvbXBpbGVyX3BpYz0KKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0KKyAKKy17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKKy0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorIAorICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKK0BAIC03NTg3LDYgKzgwODUsMTIgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAJbHRfcHJvZ19jb21waWxlcl9waWM9Jy0tc2hhcmVkJworIAlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLS1zdGF0aWMnCisgCTs7CisrICAgICAgbmFnZm9yKikKKysJIyBOQUcgRm9ydHJhbiBjb21waWxlcgorKwlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsLVdsLCwnCisrCWx0X3Byb2dfY29tcGlsZXJfcGljPSctUElDJworKwlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCisrCTs7CisgICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQorICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBjb21waWxlcnMgKCpub3QqIHRoZSBQZW50aXVtIGdjYyBjb21waWxlciwKKyAJIyB3aGljaCBsb29rcyB0byBiZSBhIGRlYWQgcHJvamVjdCkKK0BAIC03NjQ5LDcgKzgxNTMsNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorICAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctS1BJQycKKyAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCisgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKy0gICAgICBmNzcqIHwgZjkwKiB8IGY5NSopCisrICAgICAgZjc3KiB8IGY5MCogfCBmOTUqIHwgc3VuZjc3KiB8IHN1bmY5MCogfCBzdW5mOTUqKQorIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctUW9wdGlvbiBsZCAnOzsKKyAgICAgICAqKQorIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJzs7CitAQCAtNzcwNiwxMyArODIxMCwxNyBAQCBjYXNlICRob3N0X29zIGluCisgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSIkbHRfcHJvZ19jb21waWxlcl9waWMgLURQSUMiCisgICAgIDs7CisgZXNhYworLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNQorLSRhc19lY2hvICIkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQorLQorLQorLQorLQorIAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYytzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X3Byb2dfY29tcGlsZXJfcGljPSRsdF9wcm9nX2NvbXBpbGVyX3BpYworK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9CisrbHRfcHJvZ19jb21waWxlcl9waWM9JGx0X2N2X3Byb2dfY29tcGlsZXJfcGljCisgCisgIworICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KK0BAIC03NzczLDYgKzgyODEsMTEgQEAgZmkKKyAKKyAKKyAKKysKKysKKysKKysKKysKKyAjCisgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgorICMKK0BAIC04MTIzLDcgKzg2MzYsOCBAQCBfTFRfRU9GCisgICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKyAgICAgICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9bm8KKyAgICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworLSAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysgICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLztzL14uKlsgXV9fbm1fX1woW14gXSpcKVsgXVteIF0qL1wxIERBVEEvOy9eSVsgXS9kOy9eW0FJVFddWyBdL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrICAgICAgZXhjbHVkZV9leHBzeW1zPSdbX10rR0xPQkFMX09GRlNFVF9UQUJMRV98W19dK0dMT0JBTF9fW0ZJRF1fLip8W19dK2hlYWRfW0EtWmEtejAtOV9dK19kbGx8W0EtWmEtejAtOV9dK19kbGxfaW5hbWUnCisgCisgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgorICAgICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKK0BAIC04MjIyLDEyICs4NzM2LDEyIEBAIF9MVF9FT0YKKyAJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKKyAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQorIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9Jy1ycGF0aCAkbGliZGlyJworLQkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJworKwkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKKyAJICBpZiB0ZXN0ICJ4JHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZyIgPSB4eWVzOyB0aGVuCisgCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorIAkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzIHwgc2VkIC1lICJzL1woLipcKS9cMTsvIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisgCSAgICAgIGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorLQkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKKysJICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworIAkgIGZpCisgCSAgOzsKKyAJZXNhYworQEAgLTgyNDEsOCArODc1NSw4IEBAIF9MVF9FT0YKKyAJYXJjaGl2ZV9jbWRzPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJworIAl3bGFyYz0KKyAgICAgICBlbHNlCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGZpCisgICAgICAgOzsKKyAKK0BAIC04MjYwLDggKzg3NzQsOCBAQCBfTFRfRU9GCisgCisgX0xUX0VPRgorICAgICAgIGVsaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBlbHNlCisgCWxkX3NobGlicz1ubworICAgICAgIGZpCitAQCAtODMwNyw4ICs4ODIxLDggQEAgX0xUX0VPRgorIAorICAgICAqKQorICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZWxzZQorIAlsZF9zaGxpYnM9bm8KKyAgICAgICBmaQorQEAgLTg0MzgsNyArODk1MiwxMyBAQCBfTFRfRU9GCisgCWFsbG93X3VuZGVmaW5lZF9mbGFnPSctYmVyb2snCisgICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KKyAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KKy0gICAgICAgIGlmIHRlc3QgeCRnY2Nfbm9fbGluayA9IHh5ZXM7IHRoZW4KKysgICAgICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAorK2Vsc2UKKysgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGhfK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCB4JGdjY19ub19saW5rID0geHllczsgdGhlbgorICAgYXNfZm5fZXJyb3IgIkxpbmsgdGVzdHMgYXJlIG5vdCBhbGxvd2VkIGFmdGVyIEdDQ19OT19FWEVDVVRBQkxFUy4iICIkTElORU5PIiA1CisgZmkKKyBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CitAQCAtODQ1NCwyMiArODk3NCwyOSBAQCBtYWluICgpCisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorIAorLWx0X2FpeF9saWJwYXRoX3NlZD0nCistICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKy0JL14wLyB7CistCSAgICBzL14wICAqXCguKlwpJC9cMS8KKy0JICAgIHAKKy0JfQorLSAgICB9JworLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCistICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy1maQorKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKKysgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisrCSAgL14wLyB7CisrCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCisrCSAgICAgIHAKKysJICB9CisrICAgICAgfScKKysgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgIGZpCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKKysgIGZpCisrCisrZmkKKysKKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KKytmaQorIAorICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCitAQCAtODQ4MSw3ICs5MDA4LDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAllbHNlCisgCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KKyAJICMgZW1wdHkgZXhlY3V0YWJsZS4KKy0JIGlmIHRlc3QgeCRnY2Nfbm9fbGluayA9IHh5ZXM7IHRoZW4KKysJIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAorK2Vsc2UKKysgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGhfK3NldH0iID0gc2V0OyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCB4JGdjY19ub19saW5rID0geHllczsgdGhlbgorICAgYXNfZm5fZXJyb3IgIkxpbmsgdGVzdHMgYXJlIG5vdCBhbGxvd2VkIGFmdGVyIEdDQ19OT19FWEVDVVRBQkxFUy4iICIkTElORU5PIiA1CisgZmkKKyBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CitAQCAtODQ5NywyMiArOTAzMCwyOSBAQCBtYWluICgpCisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorIAorLWx0X2FpeF9saWJwYXRoX3NlZD0nCistICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKy0JL14wLyB7CistCSAgICBzL14wICAqXCguKlwpJC9cMS8KKy0JICAgIHAKKy0JfQorLSAgICB9JworLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCistICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy1maQorKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKKysgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisrCSAgL14wLyB7CisrCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCisrCSAgICAgIHAKKysJICB9CisrICAgICAgfScKKysgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgIGZpCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKKysgIGZpCisrCisrZmkKKysKKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KKytmaQorIAorIAkgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAorQEAgLTg1NTcsMjAgKzkwOTcsNjMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KKyAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCisgICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKy0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworLSAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCistICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKy0gICAgICBsaWJleHQ9bGliCistICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCistICAgICAgc2hyZXh0X2NtZHM9Ii5kbGwiCistICAgICAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCistICAgICAgIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KKy0gICAgICBvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJworLSAgICAgICMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCistICAgICAgb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJworLSAgICAgIGZpeF9zcmNmaWxlX3BhdGg9J2BjeWdwYXRoIC13ICIkc3JjZmlsZSJgJworLSAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisrICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKysgICAgICBjbCopCisrCSMgTmF0aXZlIE1TVkMKKysJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKysJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKysJYWx3YXlzX2V4cG9ydF9zeW1ib2xzPXllcworKwlmaWxlX2xpc3Rfc3BlYz0nQCcKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKysJbGliZXh0PWxpYgorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKysJc2hyZXh0X2NtZHM9Ii5kbGwiCisrCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKysJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKysJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisrCSAgZWxzZQorKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICBmaX4KKysJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+CisrCSAgbGlua25hbWVzPScKKysJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgorKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgKT0ndHJ1ZScKKysJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysJZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEsREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKwkjIERvbid0IHVzZSByYW5saWIKKysJb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDY0NCAkb2xkbGliJworKwlwb3N0bGlua19jbWRzPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+CisrCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KKysJICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCisrCSAgICAqLmV4ZXwqLkVYRSkgOzsKKysJICAgICopCisrCSAgICAgIGx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKKysJICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKKysJICAgICAgOzsKKysJICBlc2FjfgorKwkgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCisrCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOworKwkgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7CisrCSAgZmknCisrCTs7CisrICAgICAgKikKKysJIyBBc3N1bWUgTVNWQyB3cmFwcGVyCisrCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCisrCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisrCWxpYmV4dD1saWIKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisrCXNocmV4dF9jbWRzPSIuZGxsIgorKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisrCWFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCisrCSMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCisrCW9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCisrCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCisrCW9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKKysJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysJOzsKKysgICAgICBlc2FjCisgICAgICAgOzsKKyAKKyAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKK0BAIC04NjMxLDcgKzkyMTQsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgorICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCistICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCisgICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcworICAgICAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9bm8KK0BAIC04NjM5LDcgKzkyMjIsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgaHB1eDkqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgICBlbHNlCisgCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICAgZmkKK0BAIC04NjU1LDcgKzkyMzgsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgaHB1eDEwKikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJworICAgICAgIGZpCitAQCAtODY3OSwxMCArOTI2MiwxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCWlhNjQqKQorLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJKikKKy0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAllc2FjCisgICAgICAgZWxzZQorQEAgLTg3NjEsMjYgKzkzNDQsMzkgQEAgZmkKKyAKKyAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJIyBUcnkgdG8gdXNlIHRoZSAtZXhwb3J0ZWRfc3ltYm9sIGxkIG9wdGlvbiwgaWYgaXQgZG9lcyBub3QKKyAJIyB3b3JrLCBhc3N1bWUgdGhhdCAtZXhwb3J0c19maWxlIGRvZXMgbm90IHdvcmsgZWl0aGVyIGFuZAorIAkjIGltcGxpY2l0bHkgZXhwb3J0IGFsbCBzeW1ib2xzLgorLSAgICAgICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKy0gICAgICAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKKy0gICAgICAgIGlmIHRlc3QgeCRnY2Nfbm9fbGluayA9IHh5ZXM7IHRoZW4KKysJIyBUaGlzIHNob3VsZCBiZSB0aGUgc2FtZSBmb3IgYWxsIGxhbmd1YWdlcywgc28gbm8gcGVyLXRhZyBjYWNoZSB2YXJpYWJsZS4KKysJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sLi4uICIgPiY2OyB9CisraWYgdGVzdCAiJHtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCisrCSAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKKysJICAgaWYgdGVzdCB4JGdjY19ub19saW5rID0geHllczsgdGhlbgorICAgYXNfZm5fZXJyb3IgIkxpbmsgdGVzdHMgYXJlIG5vdCBhbGxvd2VkIGFmdGVyIEdDQ19OT19FWEVDVVRBQkxFUy4iICIkTElORU5PIiA1CisgZmkKKyBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworLWludCBmb28odm9pZCkge30KKytpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9CisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorLSAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworLQorKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9eWVzCisrZWxzZQorKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9bm8KKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLSAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKKysgICAgICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjY7IH0KKysJaWYgdGVzdCAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA9IHllczsgdGhlbgorKyAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlmaQorICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCitAQCAtODg2NSw3ICs5NDYxLDcgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIG9zZjQqIHwgb3NmNSopCSMgYXMgb3NmMyogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZworICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworICAgICAgIGVsc2UKKyAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCitAQCAtODg4NCw5ICs5NDgwLDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyAteiBkZWZzJworICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgCXdsYXJjPScke3dsfScKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KKy0JICAkQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworKwkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworICAgICAgIGVsc2UKKyAJY2FzZSBgJENDIC1WIDI+JjFgIGluCisgCSoiQ29tcGlsZXJzIDUuMCIqKQorQEAgLTk0NjIsOCArMTAwNTgsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICBuZWVkX3ZlcnNpb249bm8KKyAgIG5lZWRfbGliX3ByZWZpeD1ubworIAorLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCistICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQorKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgorKyAgeWVzLCopCisrICAgICMgZ2NjCisgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCisgICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKyAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CitAQCAtOTQ5NiwxMyArMTAwOTMsNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKKyAgICAgICA7OworICAgICBlc2FjCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisrICAgIDs7CisrCisrICAqLGNsKikKKysgICAgIyBOYXRpdmUgTVNWQworKyAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJworKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisrICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJworKworKyAgICBjYXNlICRidWlsZF9vcyBpbgorKyAgICBtaW5ndyopCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQorKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKKysgICAgICBJRlM9JzsnCisrICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgorKyAgICAgIGRvCisrICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCisrICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgorKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCisrICAgICAgZG9uZQorKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKKysgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFthLXpBLVpdXFwpOnwgL1xcMXxnJyAtZSAnc3xeIHx8J2AKKysgICAgICA7OworKyAgICBjeWd3aW4qKQorKyAgICAgICMgQ29udmVydCB0byB1bml4IGZvcm0sIHRoZW4gdG8gZG9zIGZvcm0sIHRoZW4gYmFjayB0byB1bml4IGZvcm0KKysgICAgICAjIGJ1dCB0aGlzIHRpbWUgZG9zIHN0eWxlIChubyBzcGFjZXMhKSBzbyB0aGF0IHRoZSB1bml4IGZvcm0gbG9va3MKKysgICAgICAjIGxpa2UgL2N5Z2RyaXZlL2MvUFJPR1JBfjE6L2N5Z2RyLi4uCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRMSUIiYAorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS1kb3MgIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIDI+L2Rldi9udWxsYAorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisrICAgICAgOzsKKysgICAgKikKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCisrICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsOyB0aGVuCisrICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRILgorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKKysgICAgICBlbHNlCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisrICAgICAgZmkKKysgICAgICAjIEZJWE1FOiBmaW5kIHRoZSBzaG9ydCBuYW1lIG9yIHRoZSBwYXRoIGNvbXBvbmVudHMsIGFzIHNwYWNlcyBhcmUKKysgICAgICAjIGNvbW1vbi4gKGUuZy4gIlByb2dyYW0gRmlsZXMiIC0+ICJQUk9HUkF+MSIpCisrICAgICAgOzsKKysgICAgZXNhYworKworKyAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCisrICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgorKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisrICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgorKyAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgorKyAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZScKKysgICAgcG9zdHVuaW5zdGFsbF9jbWRzPSdkbGRsbD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGZpbGU7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKysgICAgICBkbHBhdGg9JGRpci9cJGRsZGxsfgorKyAgICAgICAkUk0gXCRkbHBhdGgnCisrICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxpbmsuZXhlJworICAgICA7OworIAorICAgKikKKysgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCisgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworICAgICA7OworICAgZXNhYworLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKyAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgorICAgc2hsaWJwYXRoX3Zhcj1QQVRICisgICA7OworQEAgLTk1OTQsNyArMTAyNDksNyBAQCBoYWlrdSopCisgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKKyAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKy0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9iZW9zL3N5c3RlbS9saWInCisrICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKKyAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKKyAgIDs7CisgCitAQCAtMTA0NTIsMTAgKzExMTA3LDEwIEBAIGVsc2UKKyAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCisgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLworICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQorLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisraW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworICNlbmRpZgorIAorLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQorK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQorIGludCBtYWluICgpCisgeworICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7CitAQCAtMTA1NTgsMTAgKzExMjEzLDEwIEBAIGVsc2UKKyAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCisgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLworICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQorLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisraW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworICNlbmRpZgorIAorLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQorK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQorIGludCBtYWluICgpCisgeworICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7CitAQCAtMTE5OTIsMTMgKzEyNjQ3LDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF91bnNldD0nYCRFQ0hPICIkbHRfdW5zZXQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X1NQMk5MPSdgJEVDSE8gIiRsdF9TUDJOTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfTkwyU1A9J2AkRUNITyAiJGx0X05MMlNQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9jdl90b19ob3N0X2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9jdl90b190b29sX2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyByZWxvYWRfZmxhZz0nYCRFQ0hPICIkcmVsb2FkX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHJlbG9hZF9jbWRzPSdgJEVDSE8gIiRyZWxvYWRfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgT0JKRFVNUD0nYCRFQ0hPICIkT0JKRFVNUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZGVwbGlic19jaGVja19tZXRob2Q9J2AkRUNITyAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBmaWxlX21hZ2ljX2NtZD0nYCRFQ0hPICIkZmlsZV9tYWdpY19jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2ZpbGVfbWFnaWNfZ2xvYj0nYCRFQ0hPICIkZmlsZV9tYWdpY19nbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyt3YW50X25vY2FzZWdsb2I9J2AkRUNITyAiJHdhbnRfbm9jYXNlZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrRExMVE9PTD0nYCRFQ0hPICIkRExMVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J2AkRUNITyAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBBUj0nYCRFQ0hPICIkQVIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIEFSX0ZMQUdTPSdgJEVDSE8gIiRBUl9GTEFHUyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrYXJjaGl2ZXJfbGlzdF9zcGVjPSdgJEVDSE8gIiRhcmNoaXZlcl9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIFNUUklQPSdgJEVDSE8gIiRTVFJJUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgUkFOTElCPSdgJEVDSE8gIiRSQU5MSUIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRvbGRfcG9zdGluc3RhbGxfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTIwMTMsMTQgKzEyNjc1LDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIHwgJFNFRCAiJGRlCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK25tX2ZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRubV9maWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfc3lzcm9vdD0nYCRFQ0hPICIkbHRfc3lzcm9vdCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgb2JqZGlyPSdgJEVDSE8gIiRvYmpkaXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIE1BR0lDX0NNRD0nYCRFQ0hPICIkTUFHSUNfQ01EIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworLWx0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfcGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbz0nYCRFQ0hPICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX28iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG5lZWRfbG9ja3M9J2AkRUNITyAiJG5lZWRfbG9ja3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK01BTklGRVNUX1RPT0w9J2AkRUNITyAiJE1BTklGRVNUX1RPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIERTWU1VVElMPSdgJEVDSE8gIiREU1lNVVRJTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTk1FRElUPSdgJEVDSE8gIiROTUVESVQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIExJUE89J2AkRUNITyAiJExJUE8iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTEyMDUzLDEyICsxMjcxOCwxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcQorIGhhcmRjb2RlX2F1dG9tYXRpYz0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBpbmhlcml0X3JwYXRoPSdgJEVDSE8gIiRpbmhlcml0X3JwYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsaW5rX2FsbF9kZXBsaWJzPSdgJEVDSE8gIiRsaW5rX2FsbF9kZXBsaWJzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKy1maXhfc3JjZmlsZV9wYXRoPSdgJEVDSE8gIiRmaXhfc3JjZmlsZV9wYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBhbHdheXNfZXhwb3J0X3N5bWJvbHM9J2AkRUNITyAiJGFsd2F5c19leHBvcnRfc3ltYm9scyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZXhwb3J0X3N5bWJvbHNfY21kcz0nYCRFQ0hPICIkZXhwb3J0X3N5bWJvbHNfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZXhjbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRleGNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGluY2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBwcmVsaW5rX2NtZHM9J2AkRUNITyAiJHByZWxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrcG9zdGxpbmtfY21kcz0nYCRFQ0hPICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0nYCRFQ0hPICIkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG5lZWRfbGliX3ByZWZpeD0nYCRFQ0hPICIkbmVlZF9saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xMjExMyw4ICsxMjc3OCwxMyBAQCByZWxvYWRfZmxhZyBcCisgT0JKRFVNUCBcCisgZGVwbGlic19jaGVja19tZXRob2QgXAorIGZpbGVfbWFnaWNfY21kIFwKKytmaWxlX21hZ2ljX2dsb2IgXAorK3dhbnRfbm9jYXNlZ2xvYiBcCisrRExMVE9PTCBcCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQgXAorIEFSIFwKKyBBUl9GTEFHUyBcCisrYXJjaGl2ZXJfbGlzdF9zcGVjIFwKKyBTVFJJUCBcCisgUkFOTElCIFwKKyBDQyBcCitAQCAtMTIxMjQsMTIgKzEyNzk0LDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIFwKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyBcCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCBcCisrbm1fZmlsZV9saXN0X3NwZWMgXAorIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIFwKKy1sdF9wcm9nX2NvbXBpbGVyX3dsIFwKKyBsdF9wcm9nX2NvbXBpbGVyX3BpYyBcCisrbHRfcHJvZ19jb21waWxlcl93bCBcCisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWMgXAorIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIFwKKyBuZWVkX2xvY2tzIFwKKytNQU5JRkVTVF9UT09MIFwKKyBEU1lNVVRJTCBcCisgTk1FRElUIFwKKyBMSVBPIFwKK0BAIC0xMjE0NSw3ICsxMjgxNyw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKKyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIFwKKyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIFwKKyBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIFwKKy1maXhfc3JjZmlsZV9wYXRoIFwKKyBleGNsdWRlX2V4cHN5bXMgXAorIGluY2x1ZGVfZXhwc3ltcyBcCisgZmlsZV9saXN0X3NwZWMgXAorQEAgLTEyMTgxLDYgKzEyODUyLDcgQEAgbW9kdWxlX2NtZHMgXAorIG1vZHVsZV9leHBzeW1fY21kcyBcCisgZXhwb3J0X3N5bWJvbHNfY21kcyBcCisgcHJlbGlua19jbWRzIFwKKytwb3N0bGlua19jbWRzIFwKKyBwb3N0aW5zdGFsbF9jbWRzIFwKKyBwb3N0dW5pbnN0YWxsX2NtZHMgXAorIGZpbmlzaF9jbWRzIFwKK0BAIC0xMjc3MCw3ICsxMzQ0Miw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKKyAjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KKyAjCisgIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKKy0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorKyMgICAgICAgICAgICAgICAgIEluYy4KKyAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgorICMKKyAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCitAQCAtMTI4NzMsMTkgKzEzNTQ2LDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAorICMgdHVybiBuZXdsaW5lcyBpbnRvIHNwYWNlcy4KKyBOTDJTUD0kbHRfbHRfTkwyU1AKKyAKKysjIGNvbnZlcnQgXCRidWlsZCBmaWxlIG5hbWVzIHRvIFwkaG9zdCBmb3JtYXQuCisrdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAorKworKyMgY29udmVydCBcJGJ1aWxkIGZpbGVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuCisrdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAorKworICMgQW4gb2JqZWN0IHN5bWJvbCBkdW1wZXIuCisgT0JKRFVNUD0kbHRfT0JKRFVNUAorIAorICMgTWV0aG9kIHRvIGNoZWNrIHdoZXRoZXIgZGVwZW5kZW50IGxpYnJhcmllcyBhcmUgc2hhcmVkIG9iamVjdHMuCisgZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2RlcGxpYnNfY2hlY2tfbWV0aG9kCisgCistIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID09ICJmaWxlX21hZ2ljIi4KKysjIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCisgZmlsZV9tYWdpY19jbWQ9JGx0X2ZpbGVfbWFnaWNfY21kCisgCisrIyBIb3cgdG8gZmluZCBwb3RlbnRpYWwgZmlsZXMgd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KKytmaWxlX21hZ2ljX2dsb2I9JGx0X2ZpbGVfbWFnaWNfZ2xvYgorKworKyMgRmluZCBwb3RlbnRpYWwgZmlsZXMgdXNpbmcgbm9jYXNlZ2xvYiB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorK3dhbnRfbm9jYXNlZ2xvYj0kbHRfd2FudF9ub2Nhc2VnbG9iCisrCisrIyBETEwgY3JlYXRpb24gcHJvZ3JhbS4KKytETExUT09MPSRsdF9ETExUT09MCisrCisrIyBDb21tYW5kIHRvIGFzc29jaWF0ZSBzaGFyZWQgYW5kIGxpbmsgbGlicmFyaWVzLgorK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAorKworICMgVGhlIGFyY2hpdmVyLgorIEFSPSRsdF9BUgorKworKyMgRmxhZ3MgdG8gY3JlYXRlIGFuIGFyY2hpdmUuCisgQVJfRkxBR1M9JGx0X0FSX0ZMQUdTCisgCisrIyBIb3cgdG8gZmVlZCBhIGZpbGUgbGlzdGluZyB0byB0aGUgYXJjaGl2ZXIuCisrYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9hcmNoaXZlcl9saXN0X3NwZWMKKysKKyAjIEEgc3ltYm9sIHN0cmlwcGluZyBwcm9ncmFtLgorIFNUUklQPSRsdF9TVFJJUAorIAorQEAgLTEyOTE1LDYgKzEzNjExLDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzCisgIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZC4KKyBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgKKyAKKysjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcyBmb3IgXCROTS4KKytubV9maWxlX2xpc3Rfc3BlYz0kbHRfbm1fZmlsZV9saXN0X3NwZWMKKysKKysjIFRoZSByb290IHdoZXJlIHRvIHNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyxhbmQgaW4gd2hpY2ggb3VyIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkLgorK2x0X3N5c3Jvb3Q9JGx0X3N5c3Jvb3QKKysKKyAjIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0ZW1wb3JhcnkgbGlidG9vbCBmaWxlcy4KKyBvYmpkaXI9JG9iamRpcgorIAorQEAgLTEyOTI0LDYgKzEzNjI2LDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKKyAjIE11c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uPworIG5lZWRfbG9ja3M9JGx0X25lZWRfbG9ja3MKKyAKKysjIE1hbmlmZXN0IHRvb2wuCisrTUFOSUZFU1RfVE9PTD0kbHRfTUFOSUZFU1RfVE9PTAorKworICMgVG9vbCB0byBtYW5pcHVsYXRlIGFyY2hpdmVkIERXQVJGIGRlYnVnIHN5bWJvbCBmaWxlcyBvbiBNYWMgT1MgWC4KKyBEU1lNVVRJTD0kbHRfRFNZTVVUSUwKKyAKK0BAIC0xMzAzOCwxMiArMTM3NDMsMTIgQEAgd2l0aF9nY2M9JEdDQworICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KKyBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnCisgCistIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgorLXdsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCistCisgIyBBZGRpdGlvbmFsIGNvbXBpbGVyIGZsYWdzIGZvciBidWlsZGluZyBsaWJyYXJ5IG9iamVjdHMuCisgcGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfcGljCisgCisrIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgorK3dsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCisrCisgIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgorIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljCisgCitAQCAtMTMxMzAsOSArMTM4MzUsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCisgIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCisgbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlicworIAorLSMgRml4IHRoZSBzaGVsbCB2YXJpYWJsZSBcJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlci4KKy1maXhfc3JjZmlsZV9wYXRoPSRsdF9maXhfc3JjZmlsZV9wYXRoCistCisgIyBTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWQuCisgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSRhbHdheXNfZXhwb3J0X3N5bWJvbHMKKyAKK0BAIC0xMzE0OCw2ICsxMzg1MCw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCisgIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KKyBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kcworIAorKyMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBmaW5pc2hpbmcgbGlua2luZyBwcm9ncmFtcy4KKytwb3N0bGlua19jbWRzPSRsdF9wb3N0bGlua19jbWRzCisrCisgIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCisgZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjCisgCitAQCAtMTMxODAsMjEwICsxMzg4NSwxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCisgICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCisgICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQorICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KKy0gIHNlZCAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS9xJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCistICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCistCistICBjYXNlICR4c2lfc2hlbGwgaW4KKy0gIHllcykKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCistIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistZnVuY19kaXJuYW1lICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7CistICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKKy0gIGVzYWMKKy19CistCistIyBmdW5jX2Jhc2VuYW1lIGZpbGUKKy1mdW5jX2Jhc2VuYW1lICgpCisteworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgorLX0KKy0KKy0jIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgorLSMgY2FsbDoKKy0jICAgZGlybmFtZTogIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LAorLSMgICAgICAgICAgICAgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LCBvdGhlcndpc2Ugc2V0IHJlc3VsdAorLSMgICAgICAgICAgICAgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLSMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgorLSMgICBiYXNlbmFtZTogQ29tcHV0ZSBmaWxlbmFtZSBvZiBGSUxFLgorLSMgICAgICAgICAgICAgdmFsdWUgcmV0dW5lZCBpbiAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorLSMgSW1wbGVtZW50YXRpb24gbXVzdCBiZSBrZXB0IHN5bmNocm9uaXplZCB3aXRoIGZ1bmNfZGlybmFtZQorLSMgYW5kIGZ1bmNfYmFzZW5hbWUuIEZvciBlZmZpY2llbmN5LCB3ZSBkbyBub3QgZGVsZWdhdGUgdG8KKy0jIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KKy1mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7CistICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKKy0gIGVzYWMKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKKy19CistCistIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKKy0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgorLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCistIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCistIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgorLWZ1bmNfc3RyaXBuYW1lICgpCisteworLSAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQorLSAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9CistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifQorLX0KKy0KKy0jIGZ1bmNfb3B0X3NwbGl0CistZnVuY19vcHRfc3BsaXQgKCkKKy17CistICBmdW5jX29wdF9zcGxpdF9vcHQ9JHsxJSU9Kn0KKy0gIGZ1bmNfb3B0X3NwbGl0X2FyZz0kezEjKj19CistfQorLQorLSMgZnVuY19sbzJvIG9iamVjdAorLWZ1bmNfbG8ybyAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OworLSAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKKy0gIGVzYWMKKy19CistCistIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKKy1mdW5jX3hmb3JtICgpCisteworLSAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sbworLX0KKy0KKy0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCistZnVuY19hcml0aCAoKQorLXsKKy0gIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKQorLX0KKy0KKy0jIGZ1bmNfbGVuIHN0cmluZworLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KKy1mdW5jX2xlbiAoKQorLXsKKy0gIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfQorLX0KKy0KKy1fTFRfRU9GCistICAgIDs7CistICAqKSAjIEJvdXJuZSBjb21wYXRpYmxlIGZ1bmN0aW9ucy4KKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCistIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistZnVuY19kaXJuYW1lICgpCisteworLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KKy0gIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRkaXJuYW1lImAKKy0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCistICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCistICBlbHNlCistICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKKy0gIGZpCistfQorLQorLSMgZnVuY19iYXNlbmFtZSBmaWxlCistZnVuY19iYXNlbmFtZSAoKQorLXsKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkYmFzZW5hbWUiYAorLX0KKy0KKy0KKy0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQorLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCistIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKy0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKy0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCistIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQorLWZ1bmNfc3RyaXBuYW1lICgpCisteworLSAgY2FzZSAkezJ9IGluCistICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7CistICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKKy0gIGVzYWMKKy19CistCistIyBzZWQgc2NyaXB0czoKKy1teV9zZWRfbG9uZ19vcHQ9JzFzL15cKC1bXj1dKlwpPS4qL1wxLztxJworLW15X3NlZF9sb25nX2FyZz0nMXMvXi1bXj1dKj0vLycKKy0KKy0jIGZ1bmNfb3B0X3NwbGl0CistZnVuY19vcHRfc3BsaXQgKCkKKy17CistICBmdW5jX29wdF9zcGxpdF9vcHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19vcHQiYAorLSAgZnVuY19vcHRfc3BsaXRfYXJnPWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKKy19CistCistIyBmdW5jX2xvMm8gb2JqZWN0CistZnVuY19sbzJvICgpCisteworLSAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGxvMm8iYAorLX0KKy0KKy0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQorLWZ1bmNfeGZvcm0gKCkKKy17CistICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAncy9cLlteLl0qJC8ubG8vJ2AKKy19CistCistIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgorLWZ1bmNfYXJpdGggKCkKKy17CistICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJEAiYAorLX0KKy0KKy0jIGZ1bmNfbGVuIHN0cmluZworLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KKy1mdW5jX2xlbiAoKQorLXsKKy0gIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJDEiIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKKy19CistCistX0xUX0VPRgorLWVzYWMKKy0KKy1jYXNlICRsdF9zaGVsbF9hcHBlbmQgaW4KKy0gIHllcykKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQorLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgorLWZ1bmNfYXBwZW5kICgpCisteworLSAgZXZhbCAiJDErPVwkMiIKKy19CistX0xUX0VPRgorLSAgICA7OworLSAgKikKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQorLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgorLWZ1bmNfYXBwZW5kICgpCisteworLSAgZXZhbCAiJDE9XCQkMVwkMiIKKy19CistCistX0xUX0VPRgorLSAgICA7OworLSAgZXNhYworLQorLQorLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorLQorLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAorKyAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorKyAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKysKKysgIGlmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KKysgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWUgL2NcCisrZnVuY19kaXJuYW1lICgpXAorK3tcCisrXCAgICBjYXNlICR7MX0gaW5cCisrXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAorK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAorK1wgICAgZXNhY1wKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfYmFzZW5hbWUgL2NcCisrZnVuY19iYXNlbmFtZSAoKVwKKyt7XAorK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIC9jXAorK2Z1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKClcCisre1wKKytcICAgIGNhc2UgJHsxfSBpblwKKytcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCisrXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCisrXCAgICBlc2FjXAorK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3RyaXBuYW1lICgpJC8sL159ICMgZnVuY19zdHJpcG5hbWUgL2NcCisrZnVuY19zdHJpcG5hbWUgKClcCisre1wKKytcICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmVcCisrXCAgICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuXAorK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M31cCisrXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifVwKKytcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3N0cmlwbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfbG9uZ19vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X2xvbmdfb3B0IC9jXAorK2Z1bmNfc3BsaXRfbG9uZ19vcHQgKClcCisre1wKKytcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT0kezElJT0qfVwKKytcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPSR7MSMqPX1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfbG9uZ19vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3NwbGl0X3Nob3J0X29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IC9jXAorK2Z1bmNfc3BsaXRfc2hvcnRfb3B0ICgpXAorK3tcCisrXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9JHsxIz8/fVwKKytcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9JHsxJSIkZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIn1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19sbzJvICgpJC8sL159ICMgZnVuY19sbzJvIC9jXAorK2Z1bmNfbG8ybyAoKVwKKyt7XAorK1wgICAgY2FzZSAkezF9IGluXAorK1wgICAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7O1wKKytcICAgICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7XAorK1wgICAgZXNhY1wKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sbzJvIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY194Zm9ybSAoKSQvLC9efSAjIGZ1bmNfeGZvcm0gL2NcCisrZnVuY194Zm9ybSAoKVwKKyt7XAorKyAgICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3hmb3JtIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19hcml0aCAoKSQvLC9efSAjIGZ1bmNfYXJpdGggL2NcCisrZnVuY19hcml0aCAoKVwKKyt7XAorKyAgICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSlcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXJpdGggaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2xlbiAoKSQvLC9efSAjIGZ1bmNfbGVuIC9jXAorK2Z1bmNfbGVuICgpXAorK3tcCisrICAgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sZW4gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKytmaQorKworK2lmIHRlc3QgeCIkbHRfc2hlbGxfYXBwZW5kIiA9IHh5ZXM7IHRoZW4KKysgIHNlZCAtZSAnL15mdW5jX2FwcGVuZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kIC9jXAorK2Z1bmNfYXBwZW5kICgpXAorK3tcCisrICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19hcHBlbmRfcXVvdGVkICgpJC8sL159ICMgZnVuY19hcHBlbmRfcXVvdGVkIC9jXAorK2Z1bmNfYXBwZW5kX3F1b3RlZCAoKVwKKyt7XAorK1wgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSJcCisrXCAgICBldmFsICIkezF9Kz1cXFxcIFxcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmRfcXVvdGVkIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgd2hlcmUgcG9zc2libGUgYnkgZGlyZWN0IHVzZSBvZiAnKz0nCisrICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxKz0iJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKysgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKysgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrZWxzZQorKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIGV2ZW4gd2hlbiAnKz0nIGlzIG5vdCBhdmFpbGFibGUKKysgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDE9IiRcMSVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCisrICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorK2ZpCisrCisraWYgdGVzdCB4IiRfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsIiA9IHgiOiI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiYyO30KKytmaQorKworKworKyAgIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKKyAgICAgKHJtIC1mICIkb2ZpbGUiICYmIGNwICIkY2ZnZmlsZSIgIiRvZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlIikKKyAgIGNobW9kICt4ICIkb2ZpbGUiCisgCistLSAKKzIuMTQuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDctQWRkLXRoZS1hcm12NWUtYXJjaGl0ZWN0dXJlLXRvLWJpbnV0aWxzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA3LUFkZC10aGUtYXJtdjVlLWFyY2hpdGVjdHVyZS10by1iaW51dGlscy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODAxOTYwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA3LUFkZC10aGUtYXJtdjVlLWFyY2hpdGVjdHVyZS10by1iaW51dGlscy5wYXRjaApAQCAtMCwwICsxLDM1IEBACitGcm9tIDJiODdhYWQxNzQxYmM0ODFkZDA5ODJmMTAwYWQ1ZWE3ZjkzN2JiNjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAxOjM3OjEwICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMDcvMTVdIEFkZCB0aGUgYXJtdjVlIGFyY2hpdGVjdHVyZSB0byBiaW51dGlscworCitCaW51dGlscyBoYXMgYSBjb21tZW50IHRoYXQgaW5kaWNhdGVzIGl0IGlzIHN1cHBvc2VkIHRvIG1hdGNoIGdjYyBmb3IKK2FsbCBvZiB0aGUgc3VwcG9ydCAiLW1hcmNoPSIgc2V0dGluZ3MsIGJ1dCBpdCB3YXMgbGFja2luZyB0aGUgYXJtdjVlIHNldHRpbmcuCitUaGlzIHdhcyBhIHNpbXBsZSB3YXkgdG8gYWRkIGl0LCBhcyB0aHVtYiBpbnN0cnVjdGlvbnMgc2hvdWxkbid0IGJlIGdlbmVyYXRlZAorYnkgdGhlIGNvbXBpbGVyIGFueXdheS4KKworVXBzdHJlYW0tU3RhdHVzOiBEZW5pZWQKK1Vwc3RyZWFtIG1haW50YWluZXIgaW5kaWNhdGVkIHRoYXQgd2Ugc2hvdWxkIG5vdCBiZSB1c2luZyBhcm12NWUsIGV2ZW4KK3Rob3VnaCBpdCBpcyBhIGxlZ2FsIGFyY2hpY3R1cmUgZGVmaW5lZCBieSBvdXIgZ2NjLgorCitTaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZ2FzL2NvbmZpZy90Yy1hcm0uYyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvZ2FzL2NvbmZpZy90Yy1hcm0uYyBiL2dhcy9jb25maWcvdGMtYXJtLmMKK2luZGV4IGE4ODVlZmU0ZmMuLjczNWVhYTc0NDcgMTAwNjQ0CistLS0gYS9nYXMvY29uZmlnL3RjLWFybS5jCisrKysgYi9nYXMvY29uZmlnL3RjLWFybS5jCitAQCAtMjU5OTAsNiArMjU5OTAsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGFybV9hcmNoX29wdGlvbl90YWJsZSBhcm1fYXJjaHNbXSA9CisgICBBUk1fQVJDSF9PUFQgKCJhcm12NHQiLAlBUk1fQVJDSF9WNFQsCSBGUFVfQVJDSF9GUEEpLAorICAgQVJNX0FSQ0hfT1BUICgiYXJtdjR0eG0iLAlBUk1fQVJDSF9WNFR4TSwJIEZQVV9BUkNIX0ZQQSksCisgICBBUk1fQVJDSF9PUFQgKCJhcm12NSIsCUFSTV9BUkNIX1Y1LAkgRlBVX0FSQ0hfVkZQKSwKKysgIEFSTV9BUkNIX09QVCAoImFybXY1ZSIsCUFSTV9BUkNIX1Y1VEUsCSBGUFVfQVJDSF9WRlApLAorICAgQVJNX0FSQ0hfT1BUICgiYXJtdjV0IiwJQVJNX0FSQ0hfVjVULAkgRlBVX0FSQ0hfVkZQKSwKKyAgIEFSTV9BUkNIX09QVCAoImFybXY1dHhtIiwJQVJNX0FSQ0hfVjVUeE0sCSBGUFVfQVJDSF9WRlApLAorICAgQVJNX0FSQ0hfT1BUICgiYXJtdjV0ZSIsCUFSTV9BUkNIX1Y1VEUsCSBGUFVfQVJDSF9WRlApLAorLS0gCisyLjE0LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA3LVVzZS1saWJ0b29sLTIuNC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNy1Vc2UtbGlidG9vbC0yLjQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiN2Y3NTMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA3LVVzZS1saWJ0b29sLTIuNC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIxMTM3ICswLDAgQEAKLUZyb20gOWEzNjUxZTEyMDI2MWM3MjA5MDY4OWFkNzcwYWQwNDhiMGJhZjUwNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDYgTWFyIDIwMTcgMjM6Mjg6MzMgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAwNy8xNV0gVXNlIGxpYnRvb2wgMi40Ci0KLWdldCBsaWJ0b29sIHN5c3Jvb3Qgc3VwcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgWyBPRSBjb25maWd1cmF0aW9uIFNwZWNpZmljXQotCi0gYmZkL2NvbmZpZ3VyZSAgICAgICAgfCAxMzE4ICsrKysrKysrKysrKysrKysrLS0tLS0tCi0gYmZkL2NvbmZpZ3VyZS5hYyAgICAgfCAgICAyICstCi0gYmludXRpbHMvY29uZmlndXJlICAgfCAxMzE2ICsrKysrKysrKysrKysrKysrLS0tLS0tCi0gZ2FzL2NvbmZpZ3VyZSAgICAgICAgfCAxMzE0ICsrKysrKysrKysrKysrKysrLS0tLS0tCi0gZ3Byb2YvY29uZmlndXJlICAgICAgfCAxMzIxICsrKysrKysrKysrKysrKysrLS0tLS0tCi0gbGQvY29uZmlndXJlICAgICAgICAgfCAxNjkxICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tCi0gbGlidG9vbC5tNCAgICAgICAgICAgfCAxMDgwICsrKysrKysrKysrKystLS0tLS0KLSBsdG1haW4uc2ggICAgICAgICAgICB8IDI5MjUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KLSBsdG9wdGlvbnMubTQgICAgICAgICB8ICAgIDIgKy0KLSBsdHZlcnNpb24ubTQgICAgICAgICB8ICAgMTIgKy0KLSBsdH5vYnNvbGV0ZS5tNCAgICAgICB8ICAgIDIgKy0KLSBvcGNvZGVzL2NvbmZpZ3VyZSAgICB8IDEzMTggKysrKysrKysrKysrKysrKystLS0tLS0KLSBvcGNvZGVzL2NvbmZpZ3VyZS5hYyB8ICAgIDIgKy0KLSB6bGliL2NvbmZpZ3VyZSAgICAgICB8IDEzMTYgKysrKysrKysrKysrKysrKystLS0tLS0KLSAxNCBmaWxlcyBjaGFuZ2VkLCA5OTI2IGluc2VydGlvbnMoKyksIDM2OTMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9iZmQvY29uZmlndXJlIGIvYmZkL2NvbmZpZ3VyZQotaW5kZXggZjMwYmZhYmVmMy4uZmExYTU0NWU5ZCAxMDA3NTUKLS0tLSBhL2JmZC9jb25maWd1cmUKLSsrKyBiL2JmZC9jb25maWd1cmUKLUBAIC02NzIsNiArNjcyLDkgQEAgT1RPT0wKLSBMSVBPCi0gTk1FRElUCi0gRFNZTVVUSUwKLStNQU5JRkVTVF9UT09MCi0rYWNfY3RfQVIKLStETExUT09MCi0gT0JKRFVNUAotIExOX1MKLSBOTQotQEAgLTc4NSw2ICs3ODgsNyBAQCBlbmFibGVfc3RhdGljCi0gd2l0aF9waWMKLSBlbmFibGVfZmFzdF9pbnN0YWxsCi0gd2l0aF9nbnVfbGQKLSt3aXRoX2xpYnRvb2xfc3lzcm9vdAotIGVuYWJsZV9saWJ0b29sX2xvY2sKLSBlbmFibGVfcGx1Z2lucwotIGVuYWJsZV9sYXJnZWZpbGUKLUBAIC0xNDYxLDYgKzE0NjUsOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKLSAgIC0td2l0aC1waWMgICAgICAgICAgICAgIHRyeSB0byB1c2Ugb25seSBQSUMvbm9uLVBJQyBvYmplY3RzIFtkZWZhdWx0PXVzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90aF0KLSAgIC0td2l0aC1nbnUtbGQgICAgICAgICAgIGFzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBbZGVmYXVsdD1ub10KLSsgIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9RElSIFNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyB3aXRoaW4gRElSCi0rICAgICAgICAgICAgICAgICAgICAgICAgKG9yIHRoZSBjb21waWxlcidzIHN5c3Jvb3QgaWYgbm90IHNwZWNpZmllZCkuCi0gICAtLXdpdGgtbW1hcCAgICAgICAgICAgICB0cnkgdXNpbmcgbW1hcCBmb3IgQkZEIGlucHV0IGZpbGVzIGlmIGF2YWlsYWJsZQotICAgLS13aXRoLXNlcGFyYXRlLWRlYnVnLWRpcj1ESVIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIExvb2sgZm9yIGdsb2JhbCBzZXBhcmF0ZSBkZWJ1ZyBpbmZvIGluIERJUgotQEAgLTUzOTMsOCArNTM5OSw4IEBAIGVzYWMKLSAKLSAKLSAKLS1tYWNyb192ZXJzaW9uPScyLjIuN2EnCi0tbWFjcm9fcmV2aXNpb249JzEuMzEzNCcKLSttYWNyb192ZXJzaW9uPScyLjQnCi0rbWFjcm9fcmV2aXNpb249JzEuMzI5MycKLSAKLSAKLSAKLUBAIC01NDM0LDcgKzU0NDAsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITwotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzLi4uICIgPiY2OyB9Ci0gIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCi0taWYgdGVzdCAiWGBwcmludCAtciAtLSAtbiAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKLStpZiB0ZXN0ICJYYCggcHJpbnQgLXIgLS0gLW4gKSAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKLSAgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgotICAgRUNITz0ncHJpbnQgLXIgLS0nCi0gZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KLUBAIC02MTIwLDggKzYxMjYsOCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBzb21lIFhTSSBjb25zdHJ1Y3RzLi4uICIgPiY2OwotICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCi0geHNpX3NoZWxsPW5vCi0gKCBfbHRfZHVtbXk9ImEvYi9jIgotLSAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sIiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKLS0gICAgICA9IGMsYS9iLCwgXAotKyAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sJHtfbHRfZHVtbXkjPz99IiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKLSsgICAgICA9IGMsYS9iLGIvYywgXAotICAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCi0gICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCi0gICAmJiB4c2lfc2hlbGw9eWVzCi1AQCAtNjE3MCw2ICs2MTc2LDgwIEBAIGVzYWMKLSAKLSAKLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0Li4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl90b19ob3N0X2ZpbGVfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2FzZSAkaG9zdCBpbgotKyAgKi0qLW1pbmd3KiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgICAqLSotY3lnd2luKiApCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIKLSsgICAgICAgIDs7Ci0rICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rICAqLSotY3lnd2luKiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbgotKyAgICAgICAgOzsKLSsgICAgICAqLSotY3lnd2luKiApCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLSsgICAgICAgIDs7Ci0rICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rICAqICkgIyB1bmhhbmRsZWQgaG9zdHMgKGFuZCAibm9ybWFsIiBuYXRpdmUgYnVpbGRzKQotKyAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLSsgICAgOzsKLStlc2FjCi0rCi0rZmkKLSsKLSt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNjsgfQotKwotKwotKwotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfdG9fdG9vbF9maWxlX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgICNhc3N1bWUgb3JkaW5hcnkgY3Jvc3MgdG9vbHMsIG9yIG5hdGl2ZSBidWlsZC4KLStsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLStjYXNlICRob3N0IGluCi0rICAqLSotbWluZ3cqICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rZXNhYwotKwotK2ZpCi0rCi0rdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjY7IH0KLSsKLSsKLSsKLSsKLSsKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMuLi4gIiA+JjY7IH0KLSBpZiB0ZXN0ICIke2x0X2N2X2xkX3JlbG9hZF9mbGFnK3NldH0iID0gc2V0OyB0aGVuIDoKLUBAIC02MTg2LDYgKzYyNjYsMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KLSBlc2FjCi0gcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotIGNhc2UgJGhvc3Rfb3MgaW4KLSsgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSsgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCi0rICAgICAgcmVsb2FkX2NtZHM9ZmFsc2UKLSsgICAgZmkKLSsgICAgOzsKLSAgIGRhcndpbiopCi0gICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotQEAgLTYzNTQsNyArNjQzOSw4IEBAIG1pbmd3KiB8IHB3MzIqKQotICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJwotICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKLSAgIGVsc2UKLS0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCi0rICAgICMgS2VlcCB0aGlzIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gZnVuY193aW4zMl9saWJpZC4KLSsgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJwotICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCi0gICBmaQotICAgOzsKLUBAIC02NTA4LDYgKzY1OTQsMjEgQEAgZXNhYwotIGZpCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY1Ci0gJGFzX2VjaG8gIiRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY2OyB9Ci0rCi0rZmlsZV9tYWdpY19nbG9iPQotK3dhbnRfbm9jYXNlZ2xvYj1ubwotK2lmIHRlc3QgIiRidWlsZCIgPSAiJGhvc3QiOyB0aGVuCi0rICBjYXNlICRob3N0X29zIGluCi0rICBtaW5ndyogfCBwdzMyKikKLSsgICAgaWYgKCBzaG9wdCB8IGdyZXAgbm9jYXNlZ2xvYiApID4vZGV2L251bGwgMj4mMTsgdGhlbgotKyAgICAgIHdhbnRfbm9jYXNlZ2xvYj15ZXMKLSsgICAgZWxzZQotKyAgICAgIGZpbGVfbWFnaWNfZ2xvYj1gZWNobyBhQWJCY0NkRGVFZkZnR2hIaUlqSmtLbExtTW5Ob09wUHFRclJzU3RUdVV2VndXeFh5WXpaIHwgJFNFRCAtZSAicy9cKC4uXCkvc1wvW1wxXVwvW1wxXVwvZzsvZyJgCi0rICAgIGZpCi0rICAgIDs7Ci0rICBlc2FjCi0rZmkKLSsKLSBmaWxlX21hZ2ljX2NtZD0kbHRfY3ZfZmlsZV9tYWdpY19jbWQKLSBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QKLSB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KLUBAIC02NTIzLDkgKzY2MjQsMTYyIEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgotIAotIAotIAotKwotKwotKwotKwotKwotKwotKwotKwotKwotKwotIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLS0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1hciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0tc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDIKLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1kbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1kbGx0b29sOyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19ETExUT09MK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX0RMTFRPT0w9IiRETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfRExMVE9PTD0iJHthY190b29sX3ByZWZpeH1kbGx0b29sIgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLStETExUT09MPSRhY19jdl9wcm9nX0RMTFRPT0wKLStpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkRExMVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRETExUT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsKLStmaQotK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX0RMTFRPT0wiOyB0aGVuCi0rICBhY19jdF9ETExUT09MPSRETExUT09MCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSBkbGx0b29sOyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9ETExUT09MK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9IiRhY19jdF9ETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iZGxsdG9vbCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rYWNfY3RfRExMVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MCi0raWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X0RMTFRPT0wiID4mNQotKyRhc19lY2hvICIkYWNfY3RfRExMVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rICBpZiB0ZXN0ICJ4JGFjX2N0X0RMTFRPT0wiID0geDsgdGhlbgotKyAgICBETExUT09MPSJmYWxzZSIKLSsgIGVsc2UKLSsgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgotK3llczopCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KLSthY190b29sX3dhcm5lZD15ZXMgOzsKLStlc2FjCi0rICAgIERMTFRPT0w9JGFjX2N0X0RMTFRPT0wKLSsgIGZpCi0rZWxzZQotKyAgRExMVE9PTD0iJGFjX2N2X3Byb2dfRExMVE9PTCIKLStmaQotKwotK3Rlc3QgLXogIiRETExUT09MIiAmJiBETExUT09MPWRsbHRvb2wKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J3Vua25vd24nCi0rCi0rY2FzZSAkaG9zdF9vcyBpbgotK2N5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSsgICMgdHdvIGRpZmZlcmVudCBzaGVsbCBmdW5jdGlvbnMgZGVmaW5lZCBpbiBsdG1haW4uc2gKLSsgICMgZGVjaWRlIHdoaWNoIHRvIHVzZSBiYXNlZCBvbiBjYXBhYmlsaXRpZXMgb2YgJERMTFRPT0wKLSsgIGNhc2UgYCRETExUT09MIC0taGVscCAyPiYxYCBpbgotKyAgKi0taWRlbnRpZnktc3RyaWN0KikKLSsgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliCi0rICAgIDs7Ci0rICAqKQotKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sKLSsgICAgOzsKLSsgIGVzYWMKLSsgIDs7Ci0rKikKLSsgICMgZmFsbGJhY2s6IGFzc3VtZSBsaW5rbGliIElTIHNoYXJlZGxpYgotKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9IiRFQ0hPIgotKyAgOzsKLStlc2FjCi0rCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjY7IH0KLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKLSt0ZXN0IC16ICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiICYmIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRFQ0hPCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0raWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotKyAgZm9yIGFjX3Byb2cgaW4gYXIKLSsgIGRvCi0rICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLSBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfQVIrc2V0fSIgPSBzZXQ7IHRoZW4gOgotQEAgLTY1NDEsNyArNjc5NSw3IEBAIGRvCi0gICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLS0gICAgYWNfY3ZfcHJvZ19BUj0iJHthY190b29sX3ByZWZpeH1hciIKLSsgICAgYWNfY3ZfcHJvZ19BUj0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCi0gICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotICAgICBicmVhayAyCi0gICBmaQotQEAgLTY1NjEsMTEgKzY4MTUsMTUgQEAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KLSBmaQotIAotIAotKyAgICB0ZXN0IC1uICIkQVIiICYmIGJyZWFrCi0rICBkb25lCi0gZmkKLS1pZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19BUiI7IHRoZW4KLStpZiB0ZXN0IC16ICIkQVIiOyB0aGVuCi0gICBhY19jdF9BUj0kQVIKLS0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiYXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotLXNldCBkdW1teSBhcjsgYWNfd29yZD0kMgotKyAgZm9yIGFjX3Byb2cgaW4gYXIKLStkbwotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotIGlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9BUitzZXR9IiA9IHNldDsgdGhlbiA6Ci1AQCAtNjU4MSw3ICs2ODM5LDcgQEAgZG8KLSAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotLSAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSJhciIKLSsgICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iJGFjX3Byb2ciCi0gICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotICAgICBicmVhayAyCi0gICBmaQotQEAgLTY2MDAsNiArNjg1OCwxMCBAQCBlbHNlCi0gJGFzX2VjaG8gIm5vIiA+JjY7IH0KLSBmaQotIAotKwotKyAgdGVzdCAtbiAiJGFjX2N0X0FSIiAmJiBicmVhawotK2RvbmUKLSsKLSAgIGlmIHRlc3QgIngkYWNfY3RfQVIiID0geDsgdGhlbgotICAgICBBUj0iZmFsc2UiCi0gICBlbHNlCi1AQCAtNjYxMSwxNiArNjg3Myw3MiBAQCBhY190b29sX3dhcm5lZD15ZXMgOzsKLSBlc2FjCi0gICAgIEFSPSRhY19jdF9BUgotICAgZmkKLS1lbHNlCi0tICBBUj0iJGFjX2N2X3Byb2dfQVIiCi0gZmkKLSAKLS10ZXN0IC16ICIkQVIiICYmIEFSPWFyCi0tdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKLSs6ICR7QVI9YXJ9Ci0rOiAke0FSX0ZMQUdTPWNydX0KLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfYXJfYXRfZmlsZStzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X2FyX2F0X2ZpbGU9bm8KLSsgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rLyogZW5kIGNvbmZkZWZzLmguICAqLwotKwotK2ludAotK21haW4gKCkKLSt7Ci0gCi0rICA7Ci0rICByZXR1cm4gMDsKLSt9Ci0rX0FDRU9GCi0raWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotKyAgZWNobyBjb25mdGVzdC4kYWNfb2JqZXh0ID4gY29uZnRlc3QubHN0Ci0rICAgICAgbHRfYXJfdHJ5PSckQVIgJEFSX0ZMQUdTIGxpYmNvbmZ0ZXN0LmEgQGNvbmZ0ZXN0LmxzdCA+JjUnCi0rICAgICAgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKLSsgIChldmFsICRsdF9hcl90cnkpIDI+JjUKLSsgIGFjX3N0YXR1cz0kPwotKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0rICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9Ci0rICAgICAgaWYgdGVzdCAiJGFjX3N0YXR1cyIgLWVxIDA7IHRoZW4KLSsJIyBFbnN1cmUgdGhlIGFyY2hpdmVyIGZhaWxzIHVwb24gYm9ndXMgZmlsZSBuYW1lcy4KLSsJcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBsaWJjb25mdGVzdC5hCi0rCXsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1Ci0rICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1Ci0rICBhY19zdGF0dXM9JD8KLSsgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQotKwlpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtbmUgMDsgdGhlbgotKyAgICAgICAgICBsdF9jdl9hcl9hdF9maWxlPUAKLSsgICAgICAgIGZpCi0rICAgICAgZmkKLSsgICAgICBybSAtZiBjb25mdGVzdC4qIGxpYmNvbmZ0ZXN0LmEKLSAKLStmaQotK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotIAotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9hcl9hdF9maWxlIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X2FyX2F0X2ZpbGUiID4mNjsgfQotIAotK2lmIHRlc3QgIngkbHRfY3ZfYXJfYXRfZmlsZSIgPSB4bm87IHRoZW4KLSsgIGFyY2hpdmVyX2xpc3Rfc3BlYz0KLStlbHNlCi0rICBhcmNoaXZlcl9saXN0X3NwZWM9JGx0X2N2X2FyX2F0X2ZpbGUKLStmaQotIAotIAotIAotQEAgLTY5NjIsOCArNzI4MCw4IEBAIGVzYWMKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgotIAotICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcwotLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0tbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0rbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLStsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLSAKLSAjIEhhbmRsZSBDUkxGIGluIG1pbmd3IHRvb2wgY2hhaW4KLSBvcHRfY3I9Ci1AQCAtNjk5OSw2ICs3MzE3LDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbwotICAgZWxzZQotICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qWwkgXVwoJHN5bWNvZGUkc3ltY29kZSpcKVsJIF1bCSBdKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgotICAgZmkKLSsgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9IiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIHwgc2VkICcvIF9fZ251X2x0by9kJyIKLSAKLSAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgotICAgcGlwZV93b3Jrcz1ubwotQEAgLTcwNDAsNiArNzM1OSwxOCBAQCBfTFRfRU9GCi0gICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KLSAJaWYgJEdSRVAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCi0gCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKLSsvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KLSsjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQotKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQotKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVAotKyNlbGlmIGRlZmluZWQoX19vc2ZfXykKLSsvKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhLiAgKi8KLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVAotKyNlbHNlCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QgY29uc3QKLSsjZW5kaWYKLSsKLSAjaWZkZWYgX19jcGx1c3BsdXMKLSBleHRlcm4gIkMiIHsKLSAjZW5kaWYKLUBAIC03MDUxLDcgKzczODIsNyBAQCBfTFRfRU9GCi0gCSAgY2F0IDw8X0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0Ci0gCi0gLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLwotLWNvbnN0IHN0cnVjdCB7Ci0rTFRfRExTWU1fQ09OU1Qgc3RydWN0IHsKLSAgIGNvbnN0IGNoYXIgKm5hbWU7Ci0gICB2b2lkICAgICAgICphZGRyZXNzOwotIH0KLUBAIC03MDc3LDggKzc0MDgsOCBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgewotIF9MVF9FT0YKLSAJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgotIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dAotLQkgIGx0X3NhdmVfTElCUz0iJExJQlMiCi0tCSAgbHRfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCi0rCSAgbHRfZ2xvYnN5bV9zYXZlX0xJQlM9JExJQlMKLSsJICBsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKLSAJICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgotIAkgIENGTEFHUz0iJENGTEFHUyRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIKLSAJICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfbGlua1wiIjsgfSA+JjUKLUBAIC03MDg4LDggKzc0MTksOCBAQCBfTFRfRU9GCi0gICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KLSAJICAgIHBpcGVfd29ya3M9eWVzCi0gCSAgZmkKLS0JICBMSUJTPSIkbHRfc2F2ZV9MSUJTIgotLQkgIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgotKwkgIExJQlM9JGx0X2dsb2JzeW1fc2F2ZV9MSUJTCi0rCSAgQ0ZMQUdTPSRsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTCi0gCWVsc2UKLSAJICBlY2hvICJjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJG5saXN0IiA+JjUKLSAJZmkKLUBAIC03MTI2LDYgKzc0NTcsMTYgQEAgZWxzZQotICRhc19lY2hvICJvayIgPiY2OyB9Ci0gZmkKLSAKLSsjIFJlc3BvbnNlIGZpbGUgc3VwcG9ydC4KLStpZiB0ZXN0ICIkbHRfY3Zfbm1faW50ZXJmYWNlIiA9ICJNUyBkdW1wYmluIjsgdGhlbgotKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCi0rZWxpZiAkTk0gLS1oZWxwIDI+L2Rldi9udWxsIHwgZ3JlcCAnW0BdRklMRScgPi9kZXYvbnVsbDsgdGhlbgotKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCi0rZmkKLSsKLSsKLSsKLSsKLSAKLSAKLSAKLUBAIC03MTQ3LDYgKzc0ODgsNDUgQEAgZmkKLSAKLSAKLSAKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzeXNyb290IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3Igc3lzcm9vdC4uLiAiID4mNjsgfQotKwotKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbGlidG9vbC1zeXNyb290IHdhcyBnaXZlbi4KLStpZiB0ZXN0ICIke3dpdGhfbGlidG9vbF9zeXNyb290K3NldH0iID0gc2V0OyB0aGVuIDoKLSsgIHdpdGh2YWw9JHdpdGhfbGlidG9vbF9zeXNyb290OwotK2Vsc2UKLSsgIHdpdGhfbGlidG9vbF9zeXNyb290PW5vCi0rZmkKLSsKLSsKLStsdF9zeXNyb290PQotK2Nhc2UgJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0gaW4gIygKLSsgeWVzKQotKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0rICAgICBsdF9zeXNyb290PWAkQ0MgLS1wcmludC1zeXNyb290IDI+L2Rldi9udWxsYAotKyAgIGZpCi0rICAgOzsgIygKLSsgLyopCi0rICAgbHRfc3lzcm9vdD1gZWNobyAiJHdpdGhfbGlidG9vbF9zeXNyb290IiB8IHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCi0rICAgOzsgIygKLSsgbm98JycpCi0rICAgOzsgIygKLSsgKikKLSsgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNQotKyRhc19lY2hvICIke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY2OyB9Ci0rICAgYXNfZm5fZXJyb3IgIlRoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC4iICIkTElORU5PIiA1Ci0rICAgOzsKLStlc2FjCi0rCi0rIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke2x0X3N5c3Jvb3Q6LW5vfSIgPiY1Ci0rJGFzX2VjaG8gIiR7bHRfc3lzcm9vdDotbm99IiA+JjY7IH0KLSsKLSsKLSsKLSsKLSsKLSAjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtbGlidG9vbC1sb2NrIHdhcyBnaXZlbi4KLSBpZiB0ZXN0ICIke2VuYWJsZV9saWJ0b29sX2xvY2src2V0fSIgPSBzZXQ7IHRoZW4gOgotICAgZW5hYmxldmFsPSRlbmFibGVfbGlidG9vbF9sb2NrOwotQEAgLTczNTMsNiArNzczMywxMjMgQEAgZXNhYwotIAotIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgotIAotK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1tdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9bXQ7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX01BTklGRVNUX1RPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJE1BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIke2FjX3Rvb2xfcHJlZml4fW10IgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLStNQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wKLStpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTUFOSUZFU1RfVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRNQU5JRkVTVF9UT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsKLStmaQotK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiOyB0aGVuCi0rICBhY19jdF9NQU5JRkVTVF9UT09MPSRNQU5JRkVTVF9UT09MCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgbXQ7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0iJGFjX2N0X01BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSJtdCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rYWNfY3RfTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MCi0raWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNQotKyRhc19lY2hvICIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rICBpZiB0ZXN0ICJ4JGFjX2N0X01BTklGRVNUX1RPT0wiID0geDsgdGhlbgotKyAgICBNQU5JRkVTVF9UT09MPSI6IgotKyAgZWxzZQotKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCi0reWVzOikKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQotK2FjX3Rvb2xfd2FybmVkPXllcyA7OwotK2VzYWMKLSsgICAgTUFOSUZFU1RfVE9PTD0kYWNfY3RfTUFOSUZFU1RfVE9PTAotKyAgZmkKLStlbHNlCi0rICBNQU5JRkVTVF9UT09MPSIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIgotK2ZpCi0rCi0rdGVzdCAteiAiJE1BTklGRVNUX1RPT0wiICYmIE1BTklGRVNUX1RPT0w9bXQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9bm8KLSsgIGVjaG8gIiRhc19tZTokTElORU5POiAkTUFOSUZFU1RfVE9PTCAnLT8nIiA+JjUKLSsgICRNQU5JRkVTVF9UT09MICctPycgMj5jb25mdGVzdC5lcnIgPiBjb25mdGVzdC5vdXQKLSsgIGNhdCBjb25mdGVzdC5lcnIgPiY1Ci0rICBpZiAkR1JFUCAnTWFuaWZlc3QgVG9vbCcgY29uZnRlc3Qub3V0ID4gL2Rldi9udWxsOyB0aGVuCi0rICAgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD15ZXMKLSsgIGZpCi0rICBybSAtZiBjb25mdGVzdCoKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY2OyB9Ci0raWYgdGVzdCAieCRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiICE9IHh5ZXM7IHRoZW4KLSsgIE1BTklGRVNUX1RPT0w9OgotK2ZpCi0rCi0rCi0rCi0rCi0rCi0gCi0gICBjYXNlICRob3N0X29zIGluCi0gICAgIHJoYXBzb2R5KiB8IGRhcndpbiopCi1AQCAtNzkxNiw2ICs4NDEzLDggQEAgX0xUX0VPRgotICAgICAgICRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMgMj4mNQotICAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JjUKLSAgICAgICAkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyAyPiY1Ci0rICAgICAgZWNobyAiJFJBTkxJQiBsaWJjb25mdGVzdC5hIiA+JjUKLSsgICAgICAkUkFOTElCIGxpYmNvbmZ0ZXN0LmEgMj4mNQotICAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgotIGludCBtYWluKCkgeyByZXR1cm4gMDt9Ci0gX0xUX0VPRgotQEAgLTgwODAsNyArODU3OSw4IEBAIGZpCi0gTElCVE9PTF9ERVBTPSIkbHRtYWluIgotIAotICMgQWx3YXlzIHVzZSBvdXIgb3duIGxpYnRvb2wuCi0tTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpL2xpYnRvb2wnCi0rTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpJwotK0xJQlRPT0w9IiRMSUJUT09MLyR7aG9zdF9hbGlhc30tbGlidG9vbCIKLSAKLSAKLSAKLUBAIC04MTY5LDcgKzg2NjksNyBAQCBhaXgzKikKLSBlc2FjCi0gCi0gIyBHbG9iYWwgdmFyaWFibGVzOgotLW9maWxlPWxpYnRvb2wKLStvZmlsZT0ke2hvc3RfYWxpYXN9LWxpYnRvb2wKLSBjYW5fYnVpbGRfc2hhcmVkPXllcwotIAotICMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAotQEAgLTg0NjcsOCArODk2Nyw2IEBAIGZpCi0gbHRfcHJvZ19jb21waWxlcl9waWM9Ci0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Ci0gCi0teyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1Ci0tJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAKLSAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgIGx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCi1AQCAtODYzNCw2ICs5MTMyLDEyIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gCWx0X3Byb2dfY29tcGlsZXJfcGljPSctLXNoYXJlZCcKLSAJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy0tc3RhdGljJwotIAk7OwotKyAgICAgIG5hZ2ZvciopCi0rCSMgTkFHIEZvcnRyYW4gY29tcGlsZXIKLSsJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLC1XbCwsJwotKwlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLVBJQycKLSsJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJwotKwk7OwotICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKLSAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCi0gCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCi1AQCAtODY5Niw3ICs5MjAwLDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCi0gICAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJwotICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0tICAgICAgZjc3KiB8IGY5MCogfCBmOTUqKQotKyAgICAgIGY3NyogfCBmOTAqIHwgZjk1KiB8IHN1bmY3NyogfCBzdW5mOTAqIHwgc3VuZjk1KikKLSAJbHRfcHJvZ19jb21waWxlcl93bD0nLVFvcHRpb24gbGQgJzs7Ci0gICAgICAgKikKLSAJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCc7OwotQEAgLTg3NTMsMTMgKzkyNTcsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgotICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0iJGx0X3Byb2dfY29tcGlsZXJfcGljIC1EUElDIgotICAgICA7OwotIGVzYWMKLS17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKLS0kYXNfZWNobyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KLS0KLS0KLS0KLS0KLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWMrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfcHJvZ19jb21waWxlcl9waWMKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQotK2x0X3Byb2dfY29tcGlsZXJfcGljPSRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYwotIAotICMKLSAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCi1AQCAtODgyMCw2ICs5MzI4LDExIEBAIGZpCi0gCi0gCi0gCi0rCi0rCi0rCi0rCi0rCi0gIwotICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLSAjCi1AQCAtOTE3MCw3ICs5NjgzLDggQEAgX0xUX0VPRgotICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0gICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPW5vCi0gICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLS0gICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS87cy9eLipbIF1fX25tX19cKFteIF0qXClbIF1bXiBdKi9cMSBEQVRBLzsvXklbIF0vZDsvXltBSVRXXVsgXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKyAgICAgIGV4Y2x1ZGVfZXhwc3ltcz0nW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJwotIAotICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi1AQCAtOTI2OSwxMiArOTc4MywxMiBAQCBfTFRfRU9GCi0gCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCi0gCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KLSAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPSctcnBhdGggJGxpYmRpcicKLS0JICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKLSsJICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCi0gCSAgaWYgdGVzdCAieCRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciID0geHllczsgdGhlbgotIAkgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLSAJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotIAkgICAgICBlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLS0JICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCi0rCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKLSAJICBmaQotIAkgIDs7Ci0gCWVzYWMKLUBAIC05Mjg4LDggKzk4MDIsOCBAQCBfTFRfRU9GCi0gCWFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKLSAJd2xhcmM9Ci0gICAgICAgZWxzZQotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBmaQotICAgICAgIDs7Ci0gCi1AQCAtOTMwNyw4ICs5ODIxLDggQEAgX0xUX0VPRgotIAotIF9MVF9FT0YKLSAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZWxzZQotIAlsZF9zaGxpYnM9bm8KLSAgICAgICBmaQotQEAgLTkzNTQsOCArOTg2OCw4IEBAIF9MVF9FT0YKLSAKLSAgICAgKikKLSAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGVsc2UKLSAJbGRfc2hsaWJzPW5vCi0gICAgICAgZmkKLUBAIC05NDg1LDcgKzk5OTksMTMgQEAgX0xUX0VPRgotIAlhbGxvd191bmRlZmluZWRfZmxhZz0nLWJlcm9rJwotICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCi0gICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCi0tICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKLStlbHNlCi0rICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoXytzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gCi0gaW50Ci1AQCAtOTQ5OCwyMiArMTAwMTgsMjkgQEAgbWFpbiAoKQotIF9BQ0VPRgotIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSAKLS1sdF9haXhfbGlicGF0aF9zZWQ9JwotLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0tCS9eMC8gewotLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCi0tCSAgICBwCi0tCX0KLS0gICAgfScKLS1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tZmkKLSsgIGx0X2FpeF9saWJwYXRoX3NlZD0nCi0rICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotKwkgIC9eMC8gewotKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLwotKwkgICAgICBwCi0rCSAgfQotKyAgICAgIH0nCi0rICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICBmaQotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCi0rICBmaQotKwotK2ZpCi0rCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCi0rZmkKLSAKLSAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgotQEAgLTk1MjUsNyArMTAwNTIsMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCWVsc2UKLSAJICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgotIAkgIyBlbXB0eSBleGVjdXRhYmxlLgotLQkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKwkgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCi0rZWxzZQotKyAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aF8rc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotIAotIGludAotQEAgLTk1MzgsMjIgKzEwMDcxLDI5IEBAIG1haW4gKCkKLSBfQUNFT0YKLSBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0gCi0tbHRfYWl4X2xpYnBhdGhfc2VkPScKLS0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotLQkvXjAvIHsKLS0JICAgIHMvXjAgICpcKC4qXCkkL1wxLwotLQkgICAgcAotLQl9Ci0tICAgIH0nCi0tYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLS0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLWZpCi0rICBsdF9haXhfbGlicGF0aF9zZWQ9JwotKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLSsJICAvXjAvIHsKLSsJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KLSsJICAgICAgcAotKwkgIH0KLSsgICAgICB9JwotKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgZmkKLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgotKyAgZmkKLSsKLStmaQotKwotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXwotK2ZpCi0gCi0gCSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgotIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCi1AQCAtOTU5OCwyMCArMTAxMzgsNjMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KLSAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCi0gICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KLS0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotLSAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0tICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLS0gICAgICBsaWJleHQ9bGliCi0tICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0tICAgICAgc2hyZXh0X2NtZHM9Ii5kbGwiCi0tICAgICAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCi0tICAgICAgIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KLS0gICAgICBvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJwotLSAgICAgICMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCi0tICAgICAgb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJwotLSAgICAgIGZpeF9zcmNmaWxlX3BhdGg9J2BjeWdwYXRoIC13ICIkc3JjZmlsZSJgJwotLSAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSsgICAgICBjbCopCi0rCSMgTmF0aXZlIE1TVkMKLSsJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLSsJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSsJYWx3YXlzX2V4cG9ydF9zeW1ib2xzPXllcwotKwlmaWxlX2xpc3Rfc3BlYz0nQCcKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLSsJbGliZXh0PWxpYgotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLSsJc2hyZXh0X2NtZHM9Ii5kbGwiCi0rCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KLSsJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgZWxzZQotKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLSsJICBmaX4KLSsJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+Ci0rCSAgbGlua25hbWVzPScKLSsJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgotKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgKT0ndHJ1ZScKLSsJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsJZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEsREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKwkjIERvbid0IHVzZSByYW5saWIKLSsJb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDY0NCAkb2xkbGliJwotKwlwb3N0bGlua19jbWRzPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+Ci0rCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KLSsJICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCi0rCSAgICAqLmV4ZXwqLkVYRSkgOzsKLSsJICAgICopCi0rCSAgICAgIGx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKLSsJICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKLSsJICAgICAgOzsKLSsJICBlc2FjfgotKwkgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCi0rCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOwotKwkgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7Ci0rCSAgZmknCi0rCTs7Ci0rICAgICAgKikKLSsJIyBBc3N1bWUgTVNWQyB3cmFwcGVyCi0rCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0rCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0rCWxpYmV4dD1saWIKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0rCXNocmV4dF9jbWRzPSIuZGxsIgotKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0rCWFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCi0rCSMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCi0rCW9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCi0rCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCi0rCW9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKLSsJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsJOzsKLSsgICAgICBlc2FjCi0gICAgICAgOzsKLSAKLSAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKLUBAIC05NjcyLDcgKzEwMjU1LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KLSAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQotLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJwotICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCi1AQCAtOTY4MCw3ICsxMDI2Myw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAotICAgICBocHV4OSopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSAgICAgICBmaQotQEAgLTk2OTYsNyArMTAyNzksNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgaHB1eDEwKikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwotICAgICAgIGZpCi1AQCAtOTcyMCwxMCArMTAzMDMsMTAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAlpYTY0KikKLS0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCSopCi0tCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJZXNhYwotICAgICAgIGVsc2UKLUBAIC05ODAyLDIzICsxMDM4NSwzNiBAQCBmaQotIAotICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAkjIFRyeSB0byB1c2UgdGhlIC1leHBvcnRlZF9zeW1ib2wgbGQgb3B0aW9uLCBpZiBpdCBkb2VzIG5vdAotIAkjIHdvcmssIGFzc3VtZSB0aGF0IC1leHBvcnRzX2ZpbGUgZG9lcyBub3Qgd29yayBlaXRoZXIgYW5kCi0gCSMgaW1wbGljaXRseSBleHBvcnQgYWxsIHN5bWJvbHMuCi0tICAgICAgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgotLSAgICAgICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgotLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKwkjIFRoaXMgc2hvdWxkIGJlIHRoZSBzYW1lIGZvciBhbGwgbGFuZ3VhZ2VzLCBzbyBubyBwZXItdGFnIGNhY2hlIHZhcmlhYmxlLgotKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKLSsJICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgotKwkgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotLWludCBmb28odm9pZCkge30KLStpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9Ci0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotLSAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotLQotKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9eWVzCi0rZWxzZQotKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9bm8KLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLSAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKLSsgICAgICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjY7IH0KLSsJaWYgdGVzdCAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA9IHllczsgdGhlbgotKyAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlmaQotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi1AQCAtOTkwMyw3ICsxMDQ5OSw3IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotIAlhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKLSAgICAgICBlbHNlCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJwotQEAgLTk5MjIsOSArMTA1MTgsOSBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgICBub191bmRlZmluZWRfZmxhZz0nIC16IGRlZnMnCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAJd2xhcmM9JyR7d2x9JwotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgotLQkgICRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCi0rCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCi0gICAgICAgZWxzZQotIAljYXNlIGAkQ0MgLVYgMj4mMWAgaW4KLSAJKiJDb21waWxlcnMgNS4wIiopCi1AQCAtMTA1MDAsOCArMTEwOTYsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICBuZWVkX3ZlcnNpb249bm8KLSAgIG5lZWRfbGliX3ByZWZpeD1ubwotIAotLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCi0tICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQotKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgotKyAgeWVzLCopCi0rICAgICMgZ2NjCi0gICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCi0gICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKLSAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci1AQCAtMTA1MzQsMTMgKzExMTMxLDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0gICAgICAgOzsKLSAgICAgZXNhYwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotKyAgICA7OwotKwotKyAgKixjbCopCi0rICAgICMgTmF0aXZlIE1TVkMKLSsgICAgbGlibmFtZV9zcGVjPSckbmFtZScKLSsgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwotKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0uZGxsLmxpYicKLSsKLSsgICAgY2FzZSAkYnVpbGRfb3MgaW4KLSsgICAgbWluZ3cqKQotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0KLSsgICAgICBsdF9zYXZlX2lmcz0kSUZTCi0rICAgICAgSUZTPSc7JwotKyAgICAgIGZvciBsdF9wYXRoIGluICRMSUIKLSsgICAgICBkbwotKyAgICAgICAgSUZTPSRsdF9zYXZlX2lmcwotKyAgICAgICAgIyBMZXQgRE9TIHZhcmlhYmxlIGV4cGFuc2lvbiBwcmludCB0aGUgc2hvcnQgOC4zIHN0eWxlIGZpbGUgbmFtZS4KLSsgICAgICAgIGx0X3BhdGg9YGNkICIkbHRfcGF0aCIgMj4vZGV2L251bGwgJiYgY21kIC8vQyAiZm9yICVpIGluICgiLiIpIGRvIEBlY2hvICV+c2kiYAotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjICRsdF9wYXRoIgotKyAgICAgIGRvbmUKLSsgICAgICBJRlM9JGx0X3NhdmVfaWZzCi0rICAgICAgIyBDb252ZXJ0IHRvIE1TWVMgc3R5bGUuCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBzZWQgLWUgJ3N8XFxcXHwvfGcnIC1lICdzfCBcXChbYS16QS1aXVxcKTp8IC9cXDF8ZycgLWUgJ3N8XiB8fCdgCi0rICAgICAgOzsKLSsgICAgY3lnd2luKikKLSsgICAgICAjIENvbnZlcnQgdG8gdW5peCBmb3JtLCB0aGVuIHRvIGRvcyBmb3JtLCB0aGVuIGJhY2sgdG8gdW5peCBmb3JtCi0rICAgICAgIyBidXQgdGhpcyB0aW1lIGRvcyBzdHlsZSAobm8gc3BhY2VzISkgc28gdGhhdCB0aGUgdW5peCBmb3JtIGxvb2tzCi0rICAgICAgIyBsaWtlIC9jeWdkcml2ZS9jL1BST0dSQX4xOi9jeWdkci4uLgotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkTElCImAKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tZG9zICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiAyPi9kZXYvbnVsbGAKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotKyAgICAgIDs7Ci0rICAgICopCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkTElCIgotKyAgICAgIGlmICRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbDsgdGhlbgotKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCi0rICAgICAgZWxzZQotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotKyAgICAgIGZpCi0rICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCi0rICAgICAgIyBjb21tb24uIChlLmcuICJQcm9ncmFtIEZpbGVzIiAtPiAiUFJPR1JBfjEiKQotKyAgICAgIDs7Ci0rICAgIGVzYWMKLSsKLSsgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwotKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLSsgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgotKyAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KLSsgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KLSsgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCi0rICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+Ci0rICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KLSsgICAgICAgJFJNIFwkZGxwYXRoJwotKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKLSAgICAgOzsKLSAKLSAgICopCi0rICAgICMgQXNzdW1lIE1TVkMgd3JhcHBlcgotICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSAgICAgOzsKLSAgIGVzYWMKLS0gIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0gICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KLSAgIHNobGlicGF0aF92YXI9UEFUSAotICAgOzsKLUBAIC0xMDYzMiw3ICsxMTI4Nyw3IEBAIGhhaWt1KikKLSAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCi0gICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAotICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwotLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L2Jlb3Mvc3lzdGVtL2xpYicKLSsgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9zeXN0ZW0vbGliJwotICAgaGFyZGNvZGVfaW50b19saWJzPXllcwotICAgOzsKLSAKLUBAIC0xMTQ3MiwxMCArMTIxMjcsMTAgQEAgZWxzZQotIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKLSAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCi0gI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCi0tdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLStpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0gI2VuZGlmCi0gCi0tdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9Ci0raW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9Ci0gaW50IG1haW4gKCkKLSB7Ci0gICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKLUBAIC0xMTU3OCwxMCArMTIyMzMsMTAgQEAgZWxzZQotIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKLSAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCi0gI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCi0tdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLStpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0gI2VuZGlmCi0gCi0tdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9Ci0raW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9Ci0gaW50IG1haW4gKCkKLSB7Ci0gICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKLUBAIC0xNDEyMiw3ICsxNDc3Nyw3IEBAIFNIQVJFRF9MREZMQUdTPQotIGlmIHRlc3QgIiRlbmFibGVfc2hhcmVkIiA9ICJ5ZXMiOyB0aGVuCi0gICB4PWBzZWQgLW4gLWUgJ3MvXlsgCV0qUElDRkxBR1sgCV0qPVsgCV0qLy9wJyA8IC4uL2xpYmliZXJ0eS9NYWtlZmlsZSB8IHNlZCAtbiAnJHAnYAotICAgaWYgdGVzdCAtbiAiJHgiOyB0aGVuCi0tICAgIFNIQVJFRF9MSUJBREQ9Ii1MYHB3ZGAvLi4vbGliaWJlcnR5L3BpYyAtbGliZXJ0eSIKLSsgICAgU0hBUkVEX0xJQkFERD0iYHB3ZGAvLi4vbGliaWJlcnR5L3BpYy9saWJpYmVydHkuYSIKLSAgIGZpCi0gCi0gIyBNb3JlIGhhY2tzIHRvIGJ1aWxkIERMTHMgb24gV2luZG93cy4KLUBAIC0xNjgyNiwxMyArMTc0ODEsMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Vuc2V0PSdgJEVDSE8gIiRsdF91bnNldCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfU1AyTkw9J2AkRUNITyAiJGx0X1NQMk5MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9OTDJTUD0nYCRFQ0hPICIkbHRfTkwyU1AiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHJlbG9hZF9mbGFnPSdgJEVDSE8gIiRyZWxvYWRfZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gcmVsb2FkX2NtZHM9J2AkRUNITyAiJHJlbG9hZF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBPQkpEVU1QPSdgJEVDSE8gIiRPQkpEVU1QIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBkZXBsaWJzX2NoZWNrX21ldGhvZD0nYCRFQ0hPICIkZGVwbGlic19jaGVja19tZXRob2QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGZpbGVfbWFnaWNfY21kPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rZmlsZV9tYWdpY19nbG9iPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2dsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK3dhbnRfbm9jYXNlZ2xvYj0nYCRFQ0hPICIkd2FudF9ub2Nhc2VnbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStETExUT09MPSdgJEVDSE8gIiRETExUT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0nYCRFQ0hPICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIEFSPSdgJEVDSE8gIiRBUiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gQVJfRkxBR1M9J2AkRUNITyAiJEFSX0ZMQUdTIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSthcmNoaXZlcl9saXN0X3NwZWM9J2AkRUNITyAiJGFyY2hpdmVyX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gU1RSSVA9J2AkRUNITyAiJFNUUklQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBSQU5MSUI9J2AkRUNITyAiJFJBTkxJQiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2AkRUNITyAiJG9sZF9wb3N0aW5zdGFsbF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xNjg0NywxNCArMTc1MDksMTcgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgfCAkU0VEICIkZGUKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbm1fZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJG5tX2ZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9zeXNyb290PSdgJEVDSE8gIiRsdF9zeXNyb290IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBvYmpkaXI9J2AkRUNITyAiJG9iamRpciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTUFHSUNfQ01EPSdgJEVDSE8gIiRNQUdJQ19DTUQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0tbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9waWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9zdGF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vPSdgJEVDSE8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbmVlZF9sb2Nrcz0nYCRFQ0hPICIkbmVlZF9sb2NrcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rTUFOSUZFU1RfVE9PTD0nYCRFQ0hPICIkTUFOSUZFU1RfVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gRFNZTVVUSUw9J2AkRUNITyAiJERTWU1VVElMIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBOTUVESVQ9J2AkRUNITyAiJE5NRURJVCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTElQTz0nYCRFQ0hPICIkTElQTyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTY4ODcsMTIgKzE3NTUyLDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xCi0gaGFyZGNvZGVfYXV0b21hdGljPSdgJEVDSE8gIiRoYXJkY29kZV9hdXRvbWF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGluaGVyaXRfcnBhdGg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGxpbmtfYWxsX2RlcGxpYnM9J2AkRUNITyAiJGxpbmtfYWxsX2RlcGxpYnMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotLWZpeF9zcmNmaWxlX3BhdGg9J2AkRUNITyAiJGZpeF9zcmNmaWxlX3BhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGFsd2F5c19leHBvcnRfc3ltYm9scz0nYCRFQ0hPICIkYWx3YXlzX2V4cG9ydF9zeW1ib2xzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBleHBvcnRfc3ltYm9sc19jbWRzPSdgJEVDSE8gIiRleHBvcnRfc3ltYm9sc19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBleGNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGV4Y2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gaW5jbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHByZWxpbmtfY21kcz0nYCRFQ0hPICIkcHJlbGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStwb3N0bGlua19jbWRzPSdgJEVDSE8gIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBmaWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSdgJEVDSE8gIiR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbmVlZF9saWJfcHJlZml4PSdgJEVDSE8gIiRuZWVkX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTE2OTQ3LDggKzE3NjEyLDEzIEBAIHJlbG9hZF9mbGFnIFwKLSBPQkpEVU1QIFwKLSBkZXBsaWJzX2NoZWNrX21ldGhvZCBcCi0gZmlsZV9tYWdpY19jbWQgXAotK2ZpbGVfbWFnaWNfZ2xvYiBcCi0rd2FudF9ub2Nhc2VnbG9iIFwKLStETExUT09MIFwKLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCBcCi0gQVIgXAotIEFSX0ZMQUdTIFwKLSthcmNoaXZlcl9saXN0X3NwZWMgXAotIFNUUklQIFwKLSBSQU5MSUIgXAotIENDIFwKLUBAIC0xNjk1OCwxMiArMTc2MjgsMTQgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wgXAotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIFwKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IFwKLStubV9maWxlX2xpc3Rfc3BlYyBcCi0gbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcgXAotLWx0X3Byb2dfY29tcGlsZXJfd2wgXAotIGx0X3Byb2dfY29tcGlsZXJfcGljIFwKLStsdF9wcm9nX2NvbXBpbGVyX3dsIFwKLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyBcCi0gbHRfY3ZfcHJvZ19jb21waWxlcl9jX28gXAotIG5lZWRfbG9ja3MgXAotK01BTklGRVNUX1RPT0wgXAotIERTWU1VVElMIFwKLSBOTUVESVQgXAotIExJUE8gXAotQEAgLTE2OTc5LDcgKzE3NjUxLDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWcgXAotIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgXAotIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQgXAotIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IgXAotLWZpeF9zcmNmaWxlX3BhdGggXAotIGV4Y2x1ZGVfZXhwc3ltcyBcCi0gaW5jbHVkZV9leHBzeW1zIFwKLSBmaWxlX2xpc3Rfc3BlYyBcCi1AQCAtMTcwMTUsNiArMTc2ODYsNyBAQCBtb2R1bGVfY21kcyBcCi0gbW9kdWxlX2V4cHN5bV9jbWRzIFwKLSBleHBvcnRfc3ltYm9sc19jbWRzIFwKLSBwcmVsaW5rX2NtZHMgXAotK3Bvc3RsaW5rX2NtZHMgXAotIHBvc3RpbnN0YWxsX2NtZHMgXAotIHBvc3R1bmluc3RhbGxfY21kcyBcCi0gZmluaXNoX2NtZHMgXAotQEAgLTE3Nzk0LDcgKzE4NDY2LDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAotICMgTk9URTogQ2hhbmdlcyBtYWRlIHRvIHRoaXMgZmlsZSB3aWxsIGJlIGxvc3Q6IGxvb2sgYXQgbHRtYWluLnNoLgotICMKLSAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAotLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0rIyAgICAgICAgICAgICAgICAgSW5jLgotICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2Ci0gIwotICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KLUBAIC0xNzg5NywxOSArMTg1NzAsNDIgQEAgU1AyTkw9JGx0X2x0X1NQMk5MCi0gIyB0dXJuIG5ld2xpbmVzIGludG8gc3BhY2VzLgotIE5MMlNQPSRsdF9sdF9OTDJTUAotIAotKyMgY29udmVydCBcJGJ1aWxkIGZpbGUgbmFtZXMgdG8gXCRob3N0IGZvcm1hdC4KLSt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCi0rCi0rIyBjb252ZXJ0IFwkYnVpbGQgZmlsZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4KLSt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCi0rCi0gIyBBbiBvYmplY3Qgc3ltYm9sIGR1bXBlci4KLSBPQkpEVU1QPSRsdF9PQkpEVU1QCi0gCi0gIyBNZXRob2QgdG8gY2hlY2sgd2hldGhlciBkZXBlbmRlbnQgbGlicmFyaWVzIGFyZSBzaGFyZWQgb2JqZWN0cy4KLSBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfZGVwbGlic19jaGVja19tZXRob2QKLSAKLS0jIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPT0gImZpbGVfbWFnaWMiLgotKyMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KLSBmaWxlX21hZ2ljX2NtZD0kbHRfZmlsZV9tYWdpY19jbWQKLSAKLSsjIEhvdyB0byBmaW5kIHBvdGVudGlhbCBmaWxlcyB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgotK2ZpbGVfbWFnaWNfZ2xvYj0kbHRfZmlsZV9tYWdpY19nbG9iCi0rCi0rIyBGaW5kIHBvdGVudGlhbCBmaWxlcyB1c2luZyBub2Nhc2VnbG9iIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCi0rd2FudF9ub2Nhc2VnbG9iPSRsdF93YW50X25vY2FzZWdsb2IKLSsKLSsjIERMTCBjcmVhdGlvbiBwcm9ncmFtLgotK0RMTFRPT0w9JGx0X0RMTFRPT0wKLSsKLSsjIENvbW1hbmQgdG8gYXNzb2NpYXRlIHNoYXJlZCBhbmQgbGluayBsaWJyYXJpZXMuCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCi0rCi0gIyBUaGUgYXJjaGl2ZXIuCi0gQVI9JGx0X0FSCi0rCi0rIyBGbGFncyB0byBjcmVhdGUgYW4gYXJjaGl2ZS4KLSBBUl9GTEFHUz0kbHRfQVJfRkxBR1MKLSAKLSsjIEhvdyB0byBmZWVkIGEgZmlsZSBsaXN0aW5nIHRvIHRoZSBhcmNoaXZlci4KLSthcmNoaXZlcl9saXN0X3NwZWM9JGx0X2FyY2hpdmVyX2xpc3Rfc3BlYwotKwotICMgQSBzeW1ib2wgc3RyaXBwaW5nIHByb2dyYW0uCi0gU1RSSVA9JGx0X1NUUklQCi0gCi1AQCAtMTc5MzksNiArMTg2MzUsMTIgQEAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKLSAjIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkLgotIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeAotIAotKyMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzIGZvciBcJE5NLgotK25tX2ZpbGVfbGlzdF9zcGVjPSRsdF9ubV9maWxlX2xpc3Rfc3BlYwotKwotKyMgVGhlIHJvb3Qgd2hlcmUgdG8gc2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzLGFuZCBpbiB3aGljaCBvdXIgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQuCi0rbHRfc3lzcm9vdD0kbHRfc3lzcm9vdAotKwotICMgVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRlbXBvcmFyeSBsaWJ0b29sIGZpbGVzLgotIG9iamRpcj0kb2JqZGlyCi0gCi1AQCAtMTc5NDgsNiArMTg2NTAsOSBAQCBNQUdJQ19DTUQ9JE1BR0lDX0NNRAotICMgTXVzdCB3ZSBsb2NrIGZpbGVzIHdoZW4gZG9pbmcgY29tcGlsYXRpb24/Ci0gbmVlZF9sb2Nrcz0kbHRfbmVlZF9sb2NrcwotIAotKyMgTWFuaWZlc3QgdG9vbC4KLStNQU5JRkVTVF9UT09MPSRsdF9NQU5JRkVTVF9UT09MCi0rCi0gIyBUb29sIHRvIG1hbmlwdWxhdGUgYXJjaGl2ZWQgRFdBUkYgZGVidWcgc3ltYm9sIGZpbGVzIG9uIE1hYyBPUyBYLgotIERTWU1VVElMPSRsdF9EU1lNVVRJTAotIAotQEAgLTE4MDYyLDEyICsxODc2NywxMiBAQCB3aXRoX2djYz0kR0NDCi0gIyBDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgotIG5vX2J1aWx0aW5fZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcKLSAKLS0jIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCi0td2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKLS0KLSAjIEFkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0cy4KLSBwaWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9waWMKLSAKLSsjIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCi0rd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKLSsKLSAjIENvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBkeW5hbWljIGxpbmtpbmcuCi0gbGlua19zdGF0aWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9zdGF0aWMKLSAKLUBAIC0xODE1NCw5ICsxODg1OSw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGgKLSAjIFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KLSBsaW5rX2FsbF9kZXBsaWJzPSRsaW5rX2FsbF9kZXBsaWJzCi0gCi0tIyBGaXggdGhlIHNoZWxsIHZhcmlhYmxlIFwkc3JjZmlsZSBmb3IgdGhlIGNvbXBpbGVyLgotLWZpeF9zcmNmaWxlX3BhdGg9JGx0X2ZpeF9zcmNmaWxlX3BhdGgKLS0KLSAjIFNldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4KLSBhbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3ltYm9scwotIAotQEAgLTE4MTcyLDYgKzE4ODc0LDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKLSAjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzLgotIHByZWxpbmtfY21kcz0kbHRfcHJlbGlua19jbWRzCi0gCi0rIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGZpbmlzaGluZyBsaW5raW5nIHByb2dyYW1zLgotK3Bvc3RsaW5rX2NtZHM9JGx0X3Bvc3RsaW5rX2NtZHMKLSsKLSAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcy4KLSBmaWxlX2xpc3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWMKLSAKLUBAIC0xODIwNCwyMTAgKzE4OTA5LDE2OSBAQCBsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKLSAgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KLSAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCi0gICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPwotLSAgc2VkICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlL3EnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLS0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLS0KLS0gIGNhc2UgJHhzaV9zaGVsbCBpbgotLSAgeWVzKQotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKLS0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS1mdW5jX2Rpcm5hbWUgKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKLS0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OwotLSAgZXNhYwotLX0KLS0KLS0jIGZ1bmNfYmFzZW5hbWUgZmlsZQotLWZ1bmNfYmFzZW5hbWUgKCkKLS17Ci0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCi0tfQotLQotLSMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIHBlcmZvcm0gZnVuY19iYXNlbmFtZSBhbmQgZnVuY19kaXJuYW1lIGluIGEgc2luZ2xlIGZ1bmN0aW9uCi0tIyBjYWxsOgotLSMgICBkaXJuYW1lOiAgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksCi0tIyAgICAgICAgICAgICBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsIG90aGVyd2lzZSBzZXQgcmVzdWx0Ci0tIyAgICAgICAgICAgICB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfZGlybmFtZV9yZXN1bHQiCi0tIyAgIGJhc2VuYW1lOiBDb21wdXRlIGZpbGVuYW1lIG9mIEZJTEUuCi0tIyAgICAgICAgICAgICB2YWx1ZSByZXR1bmVkIGluICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0tIyBJbXBsZW1lbnRhdGlvbiBtdXN0IGJlIGtlcHQgc3luY2hyb25pemVkIHdpdGggZnVuY19kaXJuYW1lCi0tIyBhbmQgZnVuY19iYXNlbmFtZS4gRm9yIGVmZmljaWVuY3ksIHdlIGRvIG5vdCBkZWxlZ2F0ZSB0bwotLSMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgotLWZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKLS0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OwotLSAgZXNhYwotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgotLX0KLS0KLS0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQotLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0tIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKLS0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKLS0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi0tZnVuY19zdHJpcG5hbWUgKCkKLS17Ci0tICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCi0tICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCi0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In0KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9Ci0tfQotLQotLSMgZnVuY19vcHRfc3BsaXQKLS1mdW5jX29wdF9zcGxpdCAoKQotLXsKLS0gIGZ1bmNfb3B0X3NwbGl0X29wdD0kezElJT0qfQotLSAgZnVuY19vcHRfc3BsaXRfYXJnPSR7MSMqPX0KLS19Ci0tCi0tIyBmdW5jX2xvMm8gb2JqZWN0Ci0tZnVuY19sbzJvICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7Ci0tICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OwotLSAgZXNhYwotLX0KLS0KLS0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQotLWZ1bmNfeGZvcm0gKCkKLS17Ci0tICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvCi0tfQotLQotLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KLS1mdW5jX2FyaXRoICgpCi0tewotLSAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpCi0tfQotLQotLSMgZnVuY19sZW4gc3RyaW5nCi0tIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgotLWZ1bmNfbGVuICgpCi0tewotLSAgZnVuY19sZW5fcmVzdWx0PSR7IzF9Ci0tfQotLQotLV9MVF9FT0YKLS0gICAgOzsKLS0gICopICMgQm91cm5lIGNvbXBhdGlibGUgZnVuY3Rpb25zLgotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKLS0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS1mdW5jX2Rpcm5hbWUgKCkKLS17Ci0tICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgotLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGRpcm5hbWUiYAotLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KLS0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKLS0gIGVsc2UKLS0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgotLSAgZmkKLS19Ci0tCi0tIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLS1mdW5jX2Jhc2VuYW1lICgpCi0tewotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRiYXNlbmFtZSJgCi0tfQotLQotLQotLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCi0tIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KLS0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZwotLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KLS0jIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCi0tZnVuY19zdHJpcG5hbWUgKCkKLS17Ci0tICBjYXNlICR7Mn0gaW4KLS0gICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKLS0gICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OwotLSAgZXNhYwotLX0KLS0KLS0jIHNlZCBzY3JpcHRzOgotLW15X3NlZF9sb25nX29wdD0nMXMvXlwoLVtePV0qXCk9LiovXDEvO3EnCi0tbXlfc2VkX2xvbmdfYXJnPScxcy9eLVtePV0qPS8vJwotLQotLSMgZnVuY19vcHRfc3BsaXQKLS1mdW5jX29wdF9zcGxpdCAoKQotLXsKLS0gIGZ1bmNfb3B0X3NwbGl0X29wdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX29wdCJgCi0tICBmdW5jX29wdF9zcGxpdF9hcmc9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19hcmciYAotLX0KLS0KLS0jIGZ1bmNfbG8ybyBvYmplY3QKLS1mdW5jX2xvMm8gKCkKLS17Ci0tICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbG8ybyJgCi0tfQotLQotLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCi0tZnVuY194Zm9ybSAoKQotLXsKLS0gIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICdzL1wuW14uXSokLy5sby8nYAotLX0KLS0KLS0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCi0tZnVuY19hcml0aCAoKQotLXsKLS0gIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIkQCJgCi0tfQotLQotLSMgZnVuY19sZW4gc3RyaW5nCi0tIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgotLWZ1bmNfbGVuICgpCi0tewotLSAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkMSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAotLX0KLS0KLS1fTFRfRU9GCi0tZXNhYwotLQotLWNhc2UgJGx0X3NoZWxsX2FwcGVuZCBpbgotLSAgeWVzKQotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCi0tIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCi0tZnVuY19hcHBlbmQgKCkKLS17Ci0tICBldmFsICIkMSs9XCQyIgotLX0KLS1fTFRfRU9GCi0tICAgIDs7Ci0tICAqKQotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCi0tIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCi0tZnVuY19hcHBlbmQgKCkKLS17Ci0tICBldmFsICIkMT1cJCQxXCQyIgotLX0KLS0KLS1fTFRfRU9GCi0tICAgIDs7Ci0tICBlc2FjCi0tCi0tCi0tICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0tICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0tCi0tICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8Ci0rICBzZWQgJyRxJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0rICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotKwotKyAgaWYgdGVzdCB4IiR4c2lfc2hlbGwiID0geHllczsgdGhlbgotKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZSAvY1wKLStmdW5jX2Rpcm5hbWUgKClcCi0re1wKLStcICAgIGNhc2UgJHsxfSBpblwKLStcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCi0rXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCi0rXCAgICBlc2FjXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19iYXNlbmFtZSAvY1wKLStmdW5jX2Jhc2VuYW1lICgpXAotK3tcCi0rXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgL2NcCi0rZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKVwKLSt7XAotK1wgICAgY2FzZSAkezF9IGluXAotK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKLStcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKLStcICAgIGVzYWNcCi0rXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19zdHJpcG5hbWUgKCkkLywvXn0gIyBmdW5jX3N0cmlwbmFtZSAvY1wKLStmdW5jX3N0cmlwbmFtZSAoKVwKLSt7XAotK1wgICAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZVwKLStcICAgICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC5cCi0rXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfVwKLStcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9XAotK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3RyaXBuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19zcGxpdF9sb25nX29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfbG9uZ19vcHQgL2NcCi0rZnVuY19zcGxpdF9sb25nX29wdCAoKVwKLSt7XAotK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPSR7MSUlPSp9XAotK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9JHsxIyo9fVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9sb25nX29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfc2hvcnRfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9zaG9ydF9vcHQgL2NcCi0rZnVuY19zcGxpdF9zaG9ydF9vcHQgKClcCi0re1wKLStcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz0kezEjPz99XAotK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT0kezElIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmcifVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9zaG9ydF9vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2xvMm8gKCkkLywvXn0gIyBmdW5jX2xvMm8gL2NcCi0rZnVuY19sbzJvICgpXAotK3tcCi0rXCAgICBjYXNlICR7MX0gaW5cCi0rXCAgICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7XAotK1wgICAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOztcCi0rXCAgICBlc2FjXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xvMm8gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3hmb3JtICgpJC8sL159ICMgZnVuY194Zm9ybSAvY1wKLStmdW5jX3hmb3JtICgpXAotK3tcCi0rICAgIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG9cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfeGZvcm0gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2FyaXRoICgpJC8sL159ICMgZnVuY19hcml0aCAvY1wKLStmdW5jX2FyaXRoICgpXAotK3tcCi0rICAgIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcml0aCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfbGVuICgpJC8sL159ICMgZnVuY19sZW4gL2NcCi0rZnVuY19sZW4gKClcCi0re1wKLSsgICAgZnVuY19sZW5fcmVzdWx0PSR7IzF9XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xlbiBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotK2ZpCi0rCi0raWYgdGVzdCB4IiRsdF9zaGVsbF9hcHBlbmQiID0geHllczsgdGhlbgotKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kICgpJC8sL159ICMgZnVuY19hcHBlbmQgL2NcCi0rZnVuY19hcHBlbmQgKClcCi0re1wKLSsgICAgZXZhbCAiJHsxfSs9XFwkezJ9IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2FwcGVuZF9xdW90ZWQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZF9xdW90ZWQgL2NcCi0rZnVuY19hcHBlbmRfcXVvdGVkICgpXAotK3tcCi0rXCAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IlwKLStcICAgIGV2YWwgIiR7MX0rPVxcXFwgXFwkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZF9xdW90ZWQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCB3aGVyZSBwb3NzaWJsZSBieSBkaXJlY3QgdXNlIG9mICcrPScKLSsgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDErPSIlZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAotKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLStlbHNlCi0rICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgZXZlbiB3aGVuICcrPScgaXMgbm90IGF2YWlsYWJsZQotKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMT0iJFwxJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKLSsgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSsgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rZmkKLSsKLStpZiB0ZXN0IHgiJF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWwiID0geCI6IjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjI7fQotK2ZpCi0rCi0rCi0rICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAotICAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQotICAgY2htb2QgK3ggIiRvZmlsZSIKLSAKLWRpZmYgLS1naXQgYS9iZmQvY29uZmlndXJlLmFjIGIvYmZkL2NvbmZpZ3VyZS5hYwotaW5kZXggOWExODNjMTYyOC4uM2Q4ZWEwNzgzNiAxMDA2NDQKLS0tLSBhL2JmZC9jb25maWd1cmUuYWMKLSsrKyBiL2JmZC9jb25maWd1cmUuYWMKLUBAIC0yNTMsNyArMjUzLDcgQEAgY2hhbmdlcXVvdGUoLClkbmwKLSAgIHg9YHNlZCAtbiAtZSAncy9eWyAJXSpQSUNGTEFHWyAJXSo9WyAJXSovL3AnIDwgLi4vbGliaWJlcnR5L01ha2VmaWxlIHwgc2VkIC1uICckcCdgCi0gY2hhbmdlcXVvdGUoWyxdKWRubAotICAgaWYgdGVzdCAtbiAiJHgiOyB0aGVuCi0tICAgIFNIQVJFRF9MSUJBREQ9Ii1MYHB3ZGAvLi4vbGliaWJlcnR5L3BpYyAtbGliZXJ0eSIKLSsgICAgU0hBUkVEX0xJQkFERD0iYHB3ZGAvLi4vbGliaWJlcnR5L3BpYy9saWJpYmVydHkuYSIKLSAgIGZpCi0gCi0gIyBNb3JlIGhhY2tzIHRvIGJ1aWxkIERMTHMgb24gV2luZG93cy4KLWRpZmYgLS1naXQgYS9iaW51dGlscy9jb25maWd1cmUgYi9iaW51dGlscy9jb25maWd1cmUKLWluZGV4IDgyMTE5ZWZlNzIuLjRhOTg5MThjZTEgMTAwNzU1Ci0tLS0gYS9iaW51dGlscy9jb25maWd1cmUKLSsrKyBiL2JpbnV0aWxzL2NvbmZpZ3VyZQotQEAgLTY1OSw4ICs2NTksMTEgQEAgT1RPT0wKLSBMSVBPCi0gTk1FRElUCi0gRFNZTVVUSUwKLStNQU5JRkVTVF9UT09MCi0gUkFOTElCCi0rYWNfY3RfQVIKLSBBUgotK0RMTFRPT0wKLSBPQkpEVU1QCi0gTE5fUwotIE5NCi1AQCAtNzcyLDYgKzc3NSw3IEBAIGVuYWJsZV9zdGF0aWMKLSB3aXRoX3BpYwotIGVuYWJsZV9mYXN0X2luc3RhbGwKLSB3aXRoX2dudV9sZAotK3dpdGhfbGlidG9vbF9zeXNyb290Ci0gZW5hYmxlX2xpYnRvb2xfbG9jawotIGVuYWJsZV9wbHVnaW5zCi0gZW5hYmxlX2xhcmdlZmlsZQotQEAgLTE0NDQsNiArMTQ0OCw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgotICAgLS13aXRoLXBpYyAgICAgICAgICAgICAgdHJ5IHRvIHVzZSBvbmx5IFBJQy9ub24tUElDIG9iamVjdHMgW2RlZmF1bHQ9dXNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBib3RoXQotICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIFtkZWZhdWx0PW5vXQotKyAgLS13aXRoLWxpYnRvb2wtc3lzcm9vdD1ESVIgU2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzIHdpdGhpbiBESVIKLSsgICAgICAgICAgICAgICAgICAgICAgICAob3IgdGhlIGNvbXBpbGVyJ3Mgc3lzcm9vdCBpZiBub3Qgc3BlY2lmaWVkKS4KLSAgIC0td2l0aC1zeXN0ZW0temxpYiAgICAgIHVzZSBpbnN0YWxsZWQgbGliegotICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIGRlZmF1bHQ9bm8KLSAgIC0td2l0aC1saWJpY29udi1wcmVmaXhbPURJUl0gIHNlYXJjaCBmb3IgbGliaWNvbnYgaW4gRElSL2luY2x1ZGUgYW5kIERJUi9saWIKLUBAIC01MTYwLDggKzUxNjYsOCBAQCBlc2FjCi0gCi0gCi0gCi0tbWFjcm9fdmVyc2lvbj0nMi4yLjdhJwotLW1hY3JvX3JldmlzaW9uPScxLjMxMzQnCi0rbWFjcm9fdmVyc2lvbj0nMi40JwotK21hY3JvX3JldmlzaW9uPScxLjMyOTMnCi0gCi0gCi0gCi1AQCAtNTIwMSw3ICs1MjA3LDcgQEAgRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncy4uLiAiID4mNjsgfQotICMgVGVzdCBwcmludCBmaXJzdCwgYmVjYXVzZSBpdCB3aWxsIGJlIGEgYnVpbHRpbiBpZiBwcmVzZW50LgotLWlmIHRlc3QgIlhgcHJpbnQgLXIgLS0gLW4gMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCi0raWYgdGVzdCAiWGAoIHByaW50IC1yIC0tIC1uICkgMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCi0gICAgdGVzdCAiWGBwcmludCAtciAtLSAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KLSAgIEVDSE89J3ByaW50IC1yIC0tJwotIGVsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCi1AQCAtNTg4Nyw4ICs1ODkzLDggQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgc29tZSBYU0kgY29uc3RydWN0cy4uLiAiID4mNjsKLSAjIFRyeSBzb21lIFhTSSBmZWF0dXJlcwotIHhzaV9zaGVsbD1ubwotICggX2x0X2R1bW15PSJhL2IvYyIKLS0gIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCi0tICAgICAgPSBjLGEvYiwsIFwKLSsgIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCR7X2x0X2R1bW15Iz8/fSIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCi0rICAgICAgPSBjLGEvYixiL2MsIFwKLSAgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAotICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAotICAgJiYgeHNpX3NoZWxsPXllcwotQEAgLTU5MzcsNiArNTk0Myw4MCBAQCBlc2FjCi0gCi0gCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfdG9faG9zdF9maWxlX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhc2UgJGhvc3QgaW4KLSsgICotKi1taW5ndyogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsgICAgICAgIDs7Ci0rICAgICAgKi0qLWN5Z3dpbiogKQotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyCi0rICAgICAgICA7OwotKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotKyAgKi0qLWN5Z3dpbiogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KLSsgICAgICAgIDs7Ci0rICAgICAgKi0qLWN5Z3dpbiogKQotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rICAgICAgICA7OwotKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotKyAgKiApICMgdW5oYW5kbGVkIGhvc3RzIChhbmQgIm5vcm1hbCIgbmF0aXZlIGJ1aWxkcykKLSsgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rICAgIDs7Ci0rZXNhYwotKwotK2ZpCi0rCi0rdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjY7IH0KLSsKLSsKLSsKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICAjYXNzdW1lIG9yZGluYXJ5IGNyb3NzIHRvb2xzLCBvciBuYXRpdmUgYnVpbGQuCi0rbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rY2FzZSAkaG9zdCBpbgotKyAgKi0qLW1pbmd3KiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotK2VzYWMKLSsKLStmaQotKwotK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY2OyB9Ci0rCi0rCi0rCi0rCi0rCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzLi4uICIgPiY2OyB9Ci0gaWYgdGVzdCAiJHtsdF9jdl9sZF9yZWxvYWRfZmxhZytzZXR9IiA9IHNldDsgdGhlbiA6Ci1AQCAtNTk1Myw2ICs2MDMzLDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCi0gZXNhYwotIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKLSBjYXNlICRob3N0X29zIGluCi0rICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0rICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgotKyAgICAgIHJlbG9hZF9jbWRzPWZhbHNlCi0rICAgIGZpCi0rICAgIDs7Ci0gICBkYXJ3aW4qKQotICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotICAgICAgIHJlbG9hZF9jbWRzPSckTFRDQyAkTFRDRkxBR1MgLW5vc3RkbGliICR7d2x9LXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKLUBAIC02MTIxLDcgKzYyMDYsOCBAQCBtaW5ndyogfCBwdzMyKikKLSAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgXng4NiBhcmNoaXZlIGltcG9ydHxeeDg2IERMTCcKLSAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9J2Z1bmNfd2luMzJfbGliaWQnCi0gICBlbHNlCi0tICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/JwotKyAgICAjIEtlZXAgdGhpcyBwYXR0ZXJuIGluIHN5bmMgd2l0aCB0aGUgb25lIGluIGZ1bmNfd2luMzJfbGliaWQuCi0rICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IChwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScKLSAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJwotICAgZmkKLSAgIDs7Ci1AQCAtNjI3NSw2ICs2MzYxLDIxIEBAIGVzYWMKLSBmaQotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNQotICRhc19lY2hvICIkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNjsgfQotKwotK2ZpbGVfbWFnaWNfZ2xvYj0KLSt3YW50X25vY2FzZWdsb2I9bm8KLStpZiB0ZXN0ICIkYnVpbGQiID0gIiRob3N0IjsgdGhlbgotKyAgY2FzZSAkaG9zdF9vcyBpbgotKyAgbWluZ3cqIHwgcHczMiopCi0rICAgIGlmICggc2hvcHQgfCBncmVwIG5vY2FzZWdsb2IgKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLSsgICAgICB3YW50X25vY2FzZWdsb2I9eWVzCi0rICAgIGVsc2UKLSsgICAgICBmaWxlX21hZ2ljX2dsb2I9YGVjaG8gYUFiQmNDZERlRWZGZ0doSGlJakprS2xMbU1uTm9PcFBxUXJSc1N0VHVVdlZ3V3hYeVl6WiB8ICRTRUQgLWUgInMvXCguLlwpL3NcL1tcMV1cL1tcMV1cL2c7L2ciYAotKyAgICBmaQotKyAgICA7OwotKyAgZXNhYwotK2ZpCi0rCi0gZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCi0gZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCi0gdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCi1AQCAtNjI5MCw5ICs2MzkxLDE2MiBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KLSAKLSAKLSAKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLStpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfRExMVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19ETExUT09MPSIkRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotKyAgICBhY19jdl9wcm9nX0RMTFRPT0w9IiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rRExMVE9PTD0kYWNfY3ZfcHJvZ19ETExUT09MCi0raWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJERMTFRPT0wiID4mNQotKyRhc19lY2hvICIkRExMVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rCi0rZmkKLStpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19ETExUT09MIjsgdGhlbgotKyAgYWNfY3RfRExMVE9PTD0kRExMVE9PTAotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJkbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgZGxsdG9vbDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfRExMVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSIkYWNfY3RfRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotKyAgICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9ImRsbHRvb2wiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK2FjX2N0X0RMTFRPT0w9JGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTAotK2lmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9ETExUT09MIiA+JjUKLSskYXNfZWNobyAiJGFjX2N0X0RMTFRPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKyAgaWYgdGVzdCAieCRhY19jdF9ETExUT09MIiA9IHg7IHRoZW4KLSsgICAgRExMVE9PTD0iZmFsc2UiCi0rICBlbHNlCi0rICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KLSt5ZXM6KQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9Ci0rYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0rZXNhYwotKyAgICBETExUT09MPSRhY19jdF9ETExUT09MCi0rICBmaQotK2Vsc2UKLSsgIERMTFRPT0w9IiRhY19jdl9wcm9nX0RMTFRPT0wiCi0rZmkKLSsKLSt0ZXN0IC16ICIkRExMVE9PTCIgJiYgRExMVE9PTD1kbGx0b29sCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJwotKwotK2Nhc2UgJGhvc3Rfb3MgaW4KLStjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0rICAjIHR3byBkaWZmZXJlbnQgc2hlbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gbHRtYWluLnNoCi0rICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCi0rICBjYXNlIGAkRExMVE9PTCAtLWhlbHAgMj4mMWAgaW4KLSsgICotLWlkZW50aWZ5LXN0cmljdCopCi0rICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgotKyAgICA7OwotKyAgKikKLSsgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrCi0rICAgIDs7Ci0rICBlc2FjCi0rICA7OwotKyopCi0rICAjIGZhbGxiYWNrOiBhc3N1bWUgbGlua2xpYiBJUyBzaGFyZWRsaWIKLSsgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSIkRUNITyIKLSsgIDs7Ci0rZXNhYwotKwotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY2OyB9Ci0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCi0rdGVzdCAteiAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiAmJiBzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kRUNITwotKwotKwotKwotKwotKwotKwotKwotIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLS0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1hciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0tc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDIKLSsgIGZvciBhY19wcm9nIGluIGFyCi0rICBkbwotKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0gaWYgdGVzdCAiJHthY19jdl9wcm9nX0FSK3NldH0iID0gc2V0OyB0aGVuIDoKLUBAIC02MzA4LDcgKzY1NjIsNyBAQCBkbwotICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0tICAgIGFjX2N2X3Byb2dfQVI9IiR7YWNfdG9vbF9wcmVmaXh9YXIiCi0rICAgIGFjX2N2X3Byb2dfQVI9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgotICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICAgYnJlYWsgMgotICAgZmkKLUBAIC02MzI4LDExICs2NTgyLDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9Ci0gZmkKLSAKLSAKLSsgICAgdGVzdCAtbiAiJEFSIiAmJiBicmVhawotKyAgZG9uZQotIGZpCi0taWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQVIiOyB0aGVuCi0raWYgdGVzdCAteiAiJEFSIjsgdGhlbgotICAgYWNfY3RfQVI9JEFSCi0tICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLS1zZXQgZHVtbXkgYXI7IGFjX3dvcmQ9JDIKLSsgIGZvciBhY19wcm9nIGluIGFyCi0rZG8KLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLSBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfQVIrc2V0fSIgPSBzZXQ7IHRoZW4gOgotQEAgLTYzNDgsNyArNjYwNiw3IEBAIGRvCi0gICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLS0gICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iYXIiCi0rICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9IiRhY19wcm9nIgotICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICAgYnJlYWsgMgotICAgZmkKLUBAIC02MzY3LDYgKzY2MjUsMTAgQEAgZWxzZQotICRhc19lY2hvICJubyIgPiY2OyB9Ci0gZmkKLSAKLSsKLSsgIHRlc3QgLW4gIiRhY19jdF9BUiIgJiYgYnJlYWsKLStkb25lCi0rCi0gICBpZiB0ZXN0ICJ4JGFjX2N0X0FSIiA9IHg7IHRoZW4KLSAgICAgQVI9ImZhbHNlIgotICAgZWxzZQotQEAgLTYzNzgsMTIgKzY2NDAsMTAgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0gZXNhYwotICAgICBBUj0kYWNfY3RfQVIKLSAgIGZpCi0tZWxzZQotLSAgQVI9IiRhY19jdl9wcm9nX0FSIgotIGZpCi0gCi0tdGVzdCAteiAiJEFSIiAmJiBBUj1hcgotLXRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1Ci0rOiAke0FSPWFyfQotKzogJHtBUl9GTEFHUz1jcnV9Ci0gCi0gCi0gCi1AQCAtNjM5NSw2ICs2NjU1LDY0IEBAIHRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1Ci0gCi0gCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X2FyX2F0X2ZpbGUrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9hcl9hdF9maWxlPW5vCi0rICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSsKLStpbnQKLSttYWluICgpCi0rewotKwotKyAgOwotKyAgcmV0dXJuIDA7Ci0rfQotK19BQ0VPRgotK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKLSsgIGVjaG8gY29uZnRlc3QuJGFjX29iamV4dCA+IGNvbmZ0ZXN0LmxzdAotKyAgICAgIGx0X2FyX3RyeT0nJEFSICRBUl9GTEFHUyBsaWJjb25mdGVzdC5hIEBjb25mdGVzdC5sc3QgPiY1JwotKyAgICAgIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1Ci0rICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1Ci0rICBhY19zdGF0dXM9JD8KLSsgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQotKyAgICAgIGlmIHRlc3QgIiRhY19zdGF0dXMiIC1lcSAwOyB0aGVuCi0rCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCi0rCXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgbGliY29uZnRlc3QuYQotKwl7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQotKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQotKyAgYWNfc3RhdHVzPSQ/Ci0rICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSsgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KLSsJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KLSsgICAgICAgICAgbHRfY3ZfYXJfYXRfZmlsZT1ACi0rICAgICAgICBmaQotKyAgICAgIGZpCi0rICAgICAgcm0gLWYgY29uZnRlc3QuKiBsaWJjb25mdGVzdC5hCi0rCi0rZmkKLStybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSsKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfYXJfYXRfZmlsZSIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9hcl9hdF9maWxlIiA+JjY7IH0KLSsKLStpZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCi0rICBhcmNoaXZlcl9saXN0X3NwZWM9Ci0rZWxzZQotKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCi0rZmkKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0gICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9c3RyaXAiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotIHNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fXN0cmlwOyBhY193b3JkPSQyCi1AQCAtNjcyOSw4ICs3MDQ3LDggQEAgZXNhYwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCi0gCi0gIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gc3ltYm9sIG5hbWUgYW5kIHN5bWJvbCBhZGRyZXNzCi0tbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLS1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLStsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotIAotICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgotIG9wdF9jcj0KLUBAIC02NzY2LDYgKzcwODQsNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCi0gICBlbHNlCi0gICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbCSBdXCgkc3ltY29kZSRzeW1jb2RlKlwpWwkgXVsJIF0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCi0gICBmaQotKyAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0iJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgfCBzZWQgJy8gX19nbnVfbHRvL2QnIgotIAotICAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgcGlwZSB3b3JrcyBjb3JyZWN0bHkuCi0gICBwaXBlX3dvcmtzPW5vCi1AQCAtNjgwNyw2ICs3MTI2LDE4IEBAIF9MVF9FT0YKLSAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgotIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KLSAJICBjYXQgPDxfTFRfRU9GID4gY29uZnRlc3QuJGFjX2V4dAotKy8qIEtlZXAgdGhpcyBjb2RlIGluIHN5bmMgYmV0d2VlbiBsaWJ0b29sLm00LCBsdG1haW4sIGx0X3N5c3RlbS5oLCBhbmQgdGVzdHMuICAqLwotKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCi0rLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZSBydW50aW1lCi0rICAgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uIG9uIHBzZXVkby1yZWxvY3MuICAqLwotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCi0rI2VsaWYgZGVmaW5lZChfX29zZl9fKQotKy8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEuICAqLwotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCi0rI2Vsc2UKLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVCBjb25zdAotKyNlbmRpZgotKwotICNpZmRlZiBfX2NwbHVzcGx1cwotIGV4dGVybiAiQyIgewotICNlbmRpZgotQEAgLTY4MTgsNyArNzE0OSw3IEBAIF9MVF9FT0YKLSAJICBjYXQgPDxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKLSAKLSAvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCi0tY29uc3Qgc3RydWN0IHsKLStMVF9ETFNZTV9DT05TVCBzdHJ1Y3QgewotICAgY29uc3QgY2hhciAqbmFtZTsKLSAgIHZvaWQgICAgICAgKmFkZHJlc3M7Ci0gfQotQEAgLTY4NDQsOCArNzE3NSw4IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7Ci0gX0xUX0VPRgotIAkgICMgTm93IHRyeSBsaW5raW5nIHRoZSB0d28gZmlsZXMuCi0gCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0Ci0tCSAgbHRfc2F2ZV9MSUJTPSIkTElCUyIKLS0JICBsdF9zYXZlX0NGTEFHUz0iJENGTEFHUyIKLSsJICBsdF9nbG9ic3ltX3NhdmVfTElCUz0kTElCUwotKwkgIGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1M9JENGTEFHUwotIAkgIExJQlM9ImNvbmZ0c3RtLiRhY19vYmpleHQiCi0gCSAgQ0ZMQUdTPSIkQ0ZMQUdTJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIgotIAkgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19saW5rXCIiOyB9ID4mNQotQEAgLTY4NTUsOCArNzE4Niw4IEBAIF9MVF9FT0YKLSAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotIAkgICAgcGlwZV93b3Jrcz15ZXMKLSAJICBmaQotLQkgIExJQlM9IiRsdF9zYXZlX0xJQlMiCi0tCSAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCi0rCSAgTElCUz0kbHRfZ2xvYnN5bV9zYXZlX0xJQlMKLSsJICBDRkxBR1M9JGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1MKLSAJZWxzZQotIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mNQotIAlmaQotQEAgLTY4OTMsNiArNzIyNCwyMSBAQCBlbHNlCi0gJGFzX2VjaG8gIm9rIiA+JjY7IH0KLSBmaQotIAotKyMgUmVzcG9uc2UgZmlsZSBzdXBwb3J0LgotK2lmIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIk1TIGR1bXBiaW4iOyB0aGVuCi0rICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKLStlbGlmICROTSAtLWhlbHAgMj4vZGV2L251bGwgfCBncmVwICdbQF1GSUxFJyA+L2Rldi9udWxsOyB0aGVuCi0rICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKLStmaQotKwotKwotKwotKwotKwotKwotKwotKwotKwotIAotIAotIAotQEAgLTY5MTAsNiArNzI1Niw0MCBAQCBmaQotIAotIAotIAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN5c3Jvb3QiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzeXNyb290Li4uICIgPiY2OyB9Ci0rCi0rIyBDaGVjayB3aGV0aGVyIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Qgd2FzIGdpdmVuLgotK2lmIHRlc3QgIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgd2l0aHZhbD0kd2l0aF9saWJ0b29sX3N5c3Jvb3Q7Ci0rZWxzZQotKyAgd2l0aF9saWJ0b29sX3N5c3Jvb3Q9bm8KLStmaQotKwotKwotK2x0X3N5c3Jvb3Q9Ci0rY2FzZSAke3dpdGhfbGlidG9vbF9zeXNyb290fSBpbiAjKAotKyB5ZXMpCi0rICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSsgICAgIGx0X3N5c3Jvb3Q9YCRDQyAtLXByaW50LXN5c3Jvb3QgMj4vZGV2L251bGxgCi0rICAgZmkKLSsgICA7OyAjKAotKyAvKikKLSsgICBsdF9zeXNyb290PWBlY2hvICIkd2l0aF9saWJ0b29sX3N5c3Jvb3QiIHwgc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLSsgICA7OyAjKAotKyBub3wnJykKLSsgICA7OyAjKAotKyAqKQotKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY1Ci0rJGFzX2VjaG8gIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjY7IH0KLSsgICBhc19mbl9lcnJvciAiVGhlIHN5c3Jvb3QgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLiIgIiRMSU5FTk8iIDUKLSsgICA7OwotK2VzYWMKLSsKLSsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7bHRfc3lzcm9vdDotbm99IiA+JjUKLSskYXNfZWNobyAiJHtsdF9zeXNyb290Oi1ub30iID4mNjsgfQotKwotKwotIAotIAotIAotQEAgLTcxMjAsNiArNzUwMCwxMjMgQEAgZXNhYwotIAotIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgotIAotK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1tdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9bXQ7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX01BTklGRVNUX1RPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJE1BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIke2FjX3Rvb2xfcHJlZml4fW10IgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLStNQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wKLStpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTUFOSUZFU1RfVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRNQU5JRkVTVF9UT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsKLStmaQotK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiOyB0aGVuCi0rICBhY19jdF9NQU5JRkVTVF9UT09MPSRNQU5JRkVTVF9UT09MCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgbXQ7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0iJGFjX2N0X01BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSJtdCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rYWNfY3RfTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MCi0raWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNQotKyRhc19lY2hvICIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rICBpZiB0ZXN0ICJ4JGFjX2N0X01BTklGRVNUX1RPT0wiID0geDsgdGhlbgotKyAgICBNQU5JRkVTVF9UT09MPSI6IgotKyAgZWxzZQotKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCi0reWVzOikKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQotK2FjX3Rvb2xfd2FybmVkPXllcyA7OwotK2VzYWMKLSsgICAgTUFOSUZFU1RfVE9PTD0kYWNfY3RfTUFOSUZFU1RfVE9PTAotKyAgZmkKLStlbHNlCi0rICBNQU5JRkVTVF9UT09MPSIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIgotK2ZpCi0rCi0rdGVzdCAteiAiJE1BTklGRVNUX1RPT0wiICYmIE1BTklGRVNUX1RPT0w9bXQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9bm8KLSsgIGVjaG8gIiRhc19tZTokTElORU5POiAkTUFOSUZFU1RfVE9PTCAnLT8nIiA+JjUKLSsgICRNQU5JRkVTVF9UT09MICctPycgMj5jb25mdGVzdC5lcnIgPiBjb25mdGVzdC5vdXQKLSsgIGNhdCBjb25mdGVzdC5lcnIgPiY1Ci0rICBpZiAkR1JFUCAnTWFuaWZlc3QgVG9vbCcgY29uZnRlc3Qub3V0ID4gL2Rldi9udWxsOyB0aGVuCi0rICAgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD15ZXMKLSsgIGZpCi0rICBybSAtZiBjb25mdGVzdCoKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY2OyB9Ci0raWYgdGVzdCAieCRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiICE9IHh5ZXM7IHRoZW4KLSsgIE1BTklGRVNUX1RPT0w9OgotK2ZpCi0rCi0rCi0rCi0rCi0rCi0gCi0gICBjYXNlICRob3N0X29zIGluCi0gICAgIHJoYXBzb2R5KiB8IGRhcndpbiopCi1AQCAtNzY4Myw2ICs4MTgwLDggQEAgX0xUX0VPRgotICAgICAgICRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMgMj4mNQotICAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JjUKLSAgICAgICAkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyAyPiY1Ci0rICAgICAgZWNobyAiJFJBTkxJQiBsaWJjb25mdGVzdC5hIiA+JjUKLSsgICAgICAkUkFOTElCIGxpYmNvbmZ0ZXN0LmEgMj4mNQotICAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgotIGludCBtYWluKCkgeyByZXR1cm4gMDt9Ci0gX0xUX0VPRgotQEAgLTc4NzgsNyArODM3Nyw4IEBAIGZpCi0gTElCVE9PTF9ERVBTPSIkbHRtYWluIgotIAotICMgQWx3YXlzIHVzZSBvdXIgb3duIGxpYnRvb2wuCi0tTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpL2xpYnRvb2wnCi0rTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpJwotK0xJQlRPT0w9IiRMSUJUT09MLyR7aG9zdF9hbGlhc30tbGlidG9vbCIKLSAKLSAKLSAKLUBAIC03OTY3LDcgKzg0NjcsNyBAQCBhaXgzKikKLSBlc2FjCi0gCi0gIyBHbG9iYWwgdmFyaWFibGVzOgotLW9maWxlPWxpYnRvb2wKLStvZmlsZT0ke2hvc3RfYWxpYXN9LWxpYnRvb2wKLSBjYW5fYnVpbGRfc2hhcmVkPXllcwotIAotICMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAotQEAgLTgyNjUsOCArODc2NSw2IEBAIGZpCi0gbHRfcHJvZ19jb21waWxlcl9waWM9Ci0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Ci0gCi0teyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1Ci0tJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAKLSAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgIGx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCi1AQCAtODQzMiw2ICs4OTMwLDEyIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gCWx0X3Byb2dfY29tcGlsZXJfcGljPSctLXNoYXJlZCcKLSAJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy0tc3RhdGljJwotIAk7OwotKyAgICAgIG5hZ2ZvciopCi0rCSMgTkFHIEZvcnRyYW4gY29tcGlsZXIKLSsJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLC1XbCwsJwotKwlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLVBJQycKLSsJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJwotKwk7OwotICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKLSAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCi0gCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCi1AQCAtODQ5NCw3ICs4OTk4LDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCi0gICAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJwotICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0tICAgICAgZjc3KiB8IGY5MCogfCBmOTUqKQotKyAgICAgIGY3NyogfCBmOTAqIHwgZjk1KiB8IHN1bmY3NyogfCBzdW5mOTAqIHwgc3VuZjk1KikKLSAJbHRfcHJvZ19jb21waWxlcl93bD0nLVFvcHRpb24gbGQgJzs7Ci0gICAgICAgKikKLSAJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCc7OwotQEAgLTg1NTEsMTMgKzkwNTUsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgotICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0iJGx0X3Byb2dfY29tcGlsZXJfcGljIC1EUElDIgotICAgICA7OwotIGVzYWMKLS17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKLS0kYXNfZWNobyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KLS0KLS0KLS0KLS0KLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWMrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfcHJvZ19jb21waWxlcl9waWMKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQotK2x0X3Byb2dfY29tcGlsZXJfcGljPSRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYwotIAotICMKLSAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCi1AQCAtODYxOCw2ICs5MTI2LDExIEBAIGZpCi0gCi0gCi0gCi0rCi0rCi0rCi0rCi0rCi0gIwotICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLSAjCi1AQCAtODk2OCw3ICs5NDgxLDggQEAgX0xUX0VPRgotICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0gICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPW5vCi0gICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLS0gICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS87cy9eLipbIF1fX25tX19cKFteIF0qXClbIF1bXiBdKi9cMSBEQVRBLzsvXklbIF0vZDsvXltBSVRXXVsgXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKyAgICAgIGV4Y2x1ZGVfZXhwc3ltcz0nW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJwotIAotICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi1AQCAtOTA2NywxMiArOTU4MSwxMiBAQCBfTFRfRU9GCi0gCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCi0gCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KLSAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPSctcnBhdGggJGxpYmRpcicKLS0JICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKLSsJICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCi0gCSAgaWYgdGVzdCAieCRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciID0geHllczsgdGhlbgotIAkgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLSAJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotIAkgICAgICBlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLS0JICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCi0rCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKLSAJICBmaQotIAkgIDs7Ci0gCWVzYWMKLUBAIC05MDg2LDggKzk2MDAsOCBAQCBfTFRfRU9GCi0gCWFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKLSAJd2xhcmM9Ci0gICAgICAgZWxzZQotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBmaQotICAgICAgIDs7Ci0gCi1AQCAtOTEwNSw4ICs5NjE5LDggQEAgX0xUX0VPRgotIAotIF9MVF9FT0YKLSAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZWxzZQotIAlsZF9zaGxpYnM9bm8KLSAgICAgICBmaQotQEAgLTkxNTIsOCArOTY2Niw4IEBAIF9MVF9FT0YKLSAKLSAgICAgKikKLSAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGVsc2UKLSAJbGRfc2hsaWJzPW5vCi0gICAgICAgZmkKLUBAIC05MjgzLDcgKzk3OTcsMTMgQEAgX0xUX0VPRgotIAlhbGxvd191bmRlZmluZWRfZmxhZz0nLWJlcm9rJwotICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCi0gICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCi0tICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKLStlbHNlCi0rICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoXytzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gCi0gaW50Ci1AQCAtOTI5NiwyMiArOTgxNiwyOSBAQCBtYWluICgpCi0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotIAotLWx0X2FpeF9saWJwYXRoX3NlZD0nCi0tICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLS0JL14wLyB7Ci0tCSAgICBzL14wICAqXCguKlwpJC9cMS8KLS0JICAgIHAKLS0JfQotLSAgICB9JwotLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0tICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS1maQotKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKLSsgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0rCSAgL14wLyB7Ci0rCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCi0rCSAgICAgIHAKLSsJICB9Ci0rICAgICAgfScKLSsgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgIGZpCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKLSsgIGZpCi0rCi0rZmkKLSsKLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KLStmaQotIAotICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCi1AQCAtOTMyMyw3ICs5ODUwLDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAllbHNlCi0gCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KLSAJICMgZW1wdHkgZXhlY3V0YWJsZS4KLS0JIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsJIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAotK2Vsc2UKLSsgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGhfK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAKLSBpbnQKLUBAIC05MzM2LDIyICs5ODY5LDI5IEBAIG1haW4gKCkKLSBfQUNFT0YKLSBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0gCi0tbHRfYWl4X2xpYnBhdGhfc2VkPScKLS0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotLQkvXjAvIHsKLS0JICAgIHMvXjAgICpcKC4qXCkkL1wxLwotLQkgICAgcAotLQl9Ci0tICAgIH0nCi0tYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLS0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLWZpCi0rICBsdF9haXhfbGlicGF0aF9zZWQ9JwotKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLSsJICAvXjAvIHsKLSsJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KLSsJICAgICAgcAotKwkgIH0KLSsgICAgICB9JwotKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgZmkKLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgotKyAgZmkKLSsKLStmaQotKwotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXwotK2ZpCi0gCi0gCSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgotIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCi1AQCAtOTM5NiwyMCArOTkzNiw2MyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAgICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgotICAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKLSAgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgotLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0tICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLS0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotLSAgICAgIGxpYmV4dD1saWIKLS0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLS0gICAgICBzaHJleHRfY21kcz0iLmRsbCIKLS0gICAgICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0tICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKLS0gICAgICAjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgotLSAgICAgIG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCi0tICAgICAgIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KLS0gICAgICBvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCi0tICAgICAgZml4X3NyY2ZpbGVfcGF0aD0nYGN5Z3BhdGggLXcgIiRzcmNmaWxlImAnCi0tICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotKyAgICAgIGNsKikKLSsJIyBOYXRpdmUgTVNWQwotKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotKwlhbHdheXNfZXhwb3J0X3N5bWJvbHM9eWVzCi0rCWZpbGVfbGlzdF9zcGVjPSdAJwotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotKwlsaWJleHQ9bGliCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotKwlzaHJleHRfY21kcz0iLmRsbCIKLSsJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgotKwkgICAgc2VkIC1uIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgLWUgJzFcXFwhcCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLSsJICBlbHNlCi0rCSAgICBzZWQgLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOwotKwkgIGZpfgotKwkgICRDQyAtbyAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgIkAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5leHAiIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn4KLSsJICBsaW5rbmFtZXM9JwotKwkjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCi0rCSMgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCApPSd0cnVlJwotKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotKwlleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSxEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rCSMgRG9uJ3QgdXNlIHJhbmxpYgotKwlvbGRfcG9zdGluc3RhbGxfY21kcz0nY2htb2QgNjQ0ICRvbGRsaWInCi0rCXBvc3RsaW5rX2NtZHM9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KLSsJICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgotKwkgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KLSsJICAgICouZXhlfCouRVhFKSA7OwotKwkgICAgKikKLSsJICAgICAgbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgotKwkgICAgICBsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgotKwkgICAgICA7OwotKwkgIGVzYWN+Ci0rCSAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KLSsJICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7Ci0rCSAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKLSsJICBmaScKLSsJOzsKLSsgICAgICAqKQotKwkjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKLSsJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLSsJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLSsJbGliZXh0PWxpYgotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLSsJc2hyZXh0X2NtZHM9Ii5kbGwiCi0rCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKLSsJIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KLSsJb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKLSsJIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KLSsJb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJwotKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotKwk7OwotKyAgICAgIGVzYWMKLSAgICAgICA7OwotIAotICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQotQEAgLTk0NzAsNyArMTAwNTMsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgotICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCi0tICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCi0gICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotICAgICAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9bm8KLUBAIC05NDc4LDcgKzEwMDYxLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgIGhwdXg5KikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0gICAgICAgZWxzZQotIAlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRMRCAtYiArYiAkaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotICAgICAgIGZpCi1AQCAtOTQ5NCw3ICsxMDA3Nyw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAotICAgICBocHV4MTAqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gICAgICAgZWxzZQotIAlhcmNoaXZlX2NtZHM9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCi0gICAgICAgZmkKLUBAIC05NTE4LDEwICsxMDEwMSwxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCWlhNjQqKQotLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJKikKLS0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAllc2FjCi0gICAgICAgZWxzZQotQEAgLTk2MDAsMjMgKzEwMTgzLDM2IEBAIGZpCi0gCi0gICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCSMgVHJ5IHRvIHVzZSB0aGUgLWV4cG9ydGVkX3N5bWJvbCBsZCBvcHRpb24sIGlmIGl0IGRvZXMgbm90Ci0gCSMgd29yaywgYXNzdW1lIHRoYXQgLWV4cG9ydHNfZmlsZSBkb2VzIG5vdCB3b3JrIGVpdGhlciBhbmQKLSAJIyBpbXBsaWNpdGx5IGV4cG9ydCBhbGwgc3ltYm9scy4KLS0gICAgICAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCi0tICAgICAgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCi0tICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCi0rCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgotKwkgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCi0rCSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0taW50IGZvbyh2b2lkKSB7fQotK2ludCBmb28gKHZvaWQpIHsgcmV0dXJuIDA7IH0KLSBfQUNFT0YKLSBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0tICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0tCi0rICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD15ZXMKLStlbHNlCi0rICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD1ubwotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0tICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgotKyAgICAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNjsgfQotKwlpZiB0ZXN0ICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID0geWVzOyB0aGVuCi0rICAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWZpCi0gICAgICAgZWxzZQotIAlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLUBAIC05NzAxLDcgKzEwMjk3LDcgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIG9zZjQqIHwgb3NmNSopCSMgYXMgb3NmMyogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZwotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwotICAgICAgIGVsc2UKLSAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCi1AQCAtOTcyMCw5ICsxMDMxNiw5IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICAgIG5vX3VuZGVmaW5lZF9mbGFnPScgLXogZGVmcycKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotIAl3bGFyYz0nJHt3bH0nCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+Ci0tCSAgJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKLSsJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKLSAgICAgICBlbHNlCi0gCWNhc2UgYCRDQyAtViAyPiYxYCBpbgotIAkqIkNvbXBpbGVycyA1LjAiKikKLUBAIC0xMDI5OCw4ICsxMDg5NCw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgIG5lZWRfdmVyc2lvbj1ubwotICAgbmVlZF9saWJfcHJlZml4PW5vCi0gCi0tICBjYXNlICRHQ0MsJGhvc3Rfb3MgaW4KLS0gIHllcyxjeWd3aW4qIHwgeWVzLG1pbmd3KiB8IHllcyxwdzMyKiB8IHllcyxjZWdjYyopCi0rICBjYXNlICRHQ0MsJGNjX2Jhc2VuYW1lIGluCi0rICB5ZXMsKikKLSsgICAgIyBnY2MKLSAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKLSAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwotICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLUBAIC0xMDMzMiwxMyArMTA5MjksNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSAgICAgICA7OwotICAgICBlc2FjCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0rICAgIDs7Ci0rCi0rICAqLGNsKikKLSsgICAgIyBOYXRpdmUgTVNWQwotKyAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJwotKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0rICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJwotKwotKyAgICBjYXNlICRidWlsZF9vcyBpbgotKyAgICBtaW5ndyopCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQotKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKLSsgICAgICBJRlM9JzsnCi0rICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgotKyAgICAgIGRvCi0rICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCi0rICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgotKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCi0rICAgICAgZG9uZQotKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKLSsgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFthLXpBLVpdXFwpOnwgL1xcMXxnJyAtZSAnc3xeIHx8J2AKLSsgICAgICA7OwotKyAgICBjeWd3aW4qKQotKyAgICAgICMgQ29udmVydCB0byB1bml4IGZvcm0sIHRoZW4gdG8gZG9zIGZvcm0sIHRoZW4gYmFjayB0byB1bml4IGZvcm0KLSsgICAgICAjIGJ1dCB0aGlzIHRpbWUgZG9zIHN0eWxlIChubyBzcGFjZXMhKSBzbyB0aGF0IHRoZSB1bml4IGZvcm0gbG9va3MKLSsgICAgICAjIGxpa2UgL2N5Z2RyaXZlL2MvUFJPR1JBfjE6L2N5Z2RyLi4uCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRMSUIiYAotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS1kb3MgIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIDI+L2Rldi9udWxsYAotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0rICAgICAgOzsKLSsgICAgKikKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCi0rICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsOyB0aGVuCi0rICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRILgotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKLSsgICAgICBlbHNlCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0rICAgICAgZmkKLSsgICAgICAjIEZJWE1FOiBmaW5kIHRoZSBzaG9ydCBuYW1lIG9yIHRoZSBwYXRoIGNvbXBvbmVudHMsIGFzIHNwYWNlcyBhcmUKLSsgICAgICAjIGNvbW1vbi4gKGUuZy4gIlByb2dyYW0gRmlsZXMiIC0+ICJQUk9HUkF+MSIpCi0rICAgICAgOzsKLSsgICAgZXNhYwotKwotKyAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCi0rICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+Ci0rICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgotKyAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgotKyAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZScKLSsgICAgcG9zdHVuaW5zdGFsbF9jbWRzPSdkbGRsbD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGZpbGU7IGVjaG8gXCRkbG5hbWUnXCcnYH4KLSsgICAgICBkbHBhdGg9JGRpci9cJGRsZGxsfgotKyAgICAgICAkUk0gXCRkbHBhdGgnCi0rICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxpbmsuZXhlJwotICAgICA7OwotIAotICAgKikKLSsgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCi0gICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotICAgICA7OwotICAgZXNhYwotLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgotICAgc2hsaWJwYXRoX3Zhcj1QQVRICi0gICA7OwotQEAgLTEwNDMwLDcgKzExMDg1LDcgQEAgaGFpa3UqKQotICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKLSAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICi0gICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0tICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3QvYmVvcy9zeXN0ZW0vbGliJwotKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L3N5c3RlbS9saWInCi0gICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCi0gICA7OwotIAotQEAgLTExMjcwLDEwICsxMTkyNSwxMCBAQCBlbHNlCi0gLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAotICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KLSAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKLS12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLSAjZW5kaWYKLSAKLS12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KLStpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KLSBpbnQgbWFpbiAoKQotIHsKLSAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwotQEAgLTExMzc2LDEwICsxMjAzMSwxMCBAQCBlbHNlCi0gLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAotICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KLSAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKLS12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLSAjZW5kaWYKLSAKLS12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KLStpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KLSBpbnQgbWFpbiAoKQotIHsKLSAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwotQEAgLTE1NDM2LDEzICsxNjA5MSwyMCBAQCBleGVleHQ9J2AkRUNITyAiJGV4ZWV4dCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfdW5zZXQ9J2AkRUNITyAiJGx0X3Vuc2V0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9TUDJOTD0nYCRFQ0hPICIkbHRfU1AyTkwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X05MMlNQPSdgJEVDSE8gIiRsdF9OTDJTUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfY3ZfdG9faG9zdF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gcmVsb2FkX2ZsYWc9J2AkRUNITyAiJHJlbG9hZF9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSByZWxvYWRfY21kcz0nYCRFQ0hPICIkcmVsb2FkX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIE9CSkRVTVA9J2AkRUNITyAiJE9CSkRVTVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSdgJEVDSE8gIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZmlsZV9tYWdpY19jbWQ9J2AkRUNITyAiJGZpbGVfbWFnaWNfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStmaWxlX21hZ2ljX2dsb2I9J2AkRUNITyAiJGZpbGVfbWFnaWNfZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rd2FudF9ub2Nhc2VnbG9iPSdgJEVDSE8gIiR3YW50X25vY2FzZWdsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK0RMTFRPT0w9J2AkRUNITyAiJERMTFRPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSdgJEVDSE8gIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gQVI9J2AkRUNITyAiJEFSIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBBUl9GTEFHUz0nYCRFQ0hPICIkQVJfRkxBR1MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2FyY2hpdmVyX2xpc3Rfc3BlYz0nYCRFQ0hPICIkYXJjaGl2ZXJfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBTVFJJUD0nYCRFQ0hPICIkU1RSSVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIFJBTkxJQj0nYCRFQ0hPICIkUkFOTElCIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBvbGRfcG9zdGluc3RhbGxfY21kcz0nYCRFQ0hPICIkb2xkX3Bvc3RpbnN0YWxsX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTE1NDU3LDE0ICsxNjExOSwxNyBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRTRUQgIiRkZQotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStubV9maWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkbm1fZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X3N5c3Jvb3Q9J2AkRUNITyAiJGx0X3N5c3Jvb3QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG9iamRpcj0nYCRFQ0hPICIkb2JqZGlyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBNQUdJQ19DTUQ9J2AkRUNITyAiJE1BR0lDX0NNRCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWc9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLS1sdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9waWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfY3ZfcHJvZ19jb21waWxlcl9jX289J2AkRUNITyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBuZWVkX2xvY2tzPSdgJEVDSE8gIiRuZWVkX2xvY2tzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStNQU5JRkVTVF9UT09MPSdgJEVDSE8gIiRNQU5JRkVTVF9UT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBEU1lNVVRJTD0nYCRFQ0hPICIkRFNZTVVUSUwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIE5NRURJVD0nYCRFQ0hPICIkTk1FRElUIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBMSVBPPSdgJEVDSE8gIiRMSVBPIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xNTQ5NywxMiArMTYxNjIsMTIgQEAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj0nYCRFQ0hPICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3EKLSBoYXJkY29kZV9hdXRvbWF0aWM9J2AkRUNITyAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gaW5oZXJpdF9ycGF0aD0nYCRFQ0hPICIkaW5oZXJpdF9ycGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbGlua19hbGxfZGVwbGlicz0nYCRFQ0hPICIkbGlua19hbGxfZGVwbGlicyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0tZml4X3NyY2ZpbGVfcGF0aD0nYCRFQ0hPICIkZml4X3NyY2ZpbGVfcGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSdgJEVDSE8gIiRhbHdheXNfZXhwb3J0X3N5bWJvbHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGV4cG9ydF9zeW1ib2xzX2NtZHM9J2AkRUNITyAiJGV4cG9ydF9zeW1ib2xzX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGV4Y2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkZXhjbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBpbmNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gcHJlbGlua19jbWRzPSdgJEVDSE8gIiRwcmVsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK3Bvc3RsaW5rX2NtZHM9J2AkRUNITyAiJHBvc3RsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRmaWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbms9J2AkRUNITyAiJHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBuZWVkX2xpYl9wcmVmaXg9J2AkRUNITyAiJG5lZWRfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTU1NTcsOCArMTYyMjIsMTMgQEAgcmVsb2FkX2ZsYWcgXAotIE9CSkRVTVAgXAotIGRlcGxpYnNfY2hlY2tfbWV0aG9kIFwKLSBmaWxlX21hZ2ljX2NtZCBcCi0rZmlsZV9tYWdpY19nbG9iIFwKLSt3YW50X25vY2FzZWdsb2IgXAotK0RMTFRPT0wgXAotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIFwKLSBBUiBcCi0gQVJfRkxBR1MgXAotK2FyY2hpdmVyX2xpc3Rfc3BlYyBcCi0gU1RSSVAgXAotIFJBTkxJQiBcCi0gQ0MgXAotQEAgLTE1NTY4LDEyICsxNjIzOCwxNCBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFwKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCBcCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MgXAotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXggXAotK25tX2ZpbGVfbGlzdF9zcGVjIFwKLSBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyBcCi0tbHRfcHJvZ19jb21waWxlcl93bCBcCi0gbHRfcHJvZ19jb21waWxlcl9waWMgXAotK2x0X3Byb2dfY29tcGlsZXJfd2wgXAotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIFwKLSBsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyBcCi0gbmVlZF9sb2NrcyBcCi0rTUFOSUZFU1RfVE9PTCBcCi0gRFNZTVVUSUwgXAotIE5NRURJVCBcCi0gTElQTyBcCi1AQCAtMTU1ODksNyArMTYyNjEsNiBAQCBub191bmRlZmluZWRfZmxhZyBcCi0gaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBcCi0gaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCBcCi0gaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciBcCi0tZml4X3NyY2ZpbGVfcGF0aCBcCi0gZXhjbHVkZV9leHBzeW1zIFwKLSBpbmNsdWRlX2V4cHN5bXMgXAotIGZpbGVfbGlzdF9zcGVjIFwKLUBAIC0xNTYyNSw2ICsxNjI5Niw3IEBAIG1vZHVsZV9jbWRzIFwKLSBtb2R1bGVfZXhwc3ltX2NtZHMgXAotIGV4cG9ydF9zeW1ib2xzX2NtZHMgXAotIHByZWxpbmtfY21kcyBcCi0rcG9zdGxpbmtfY21kcyBcCi0gcG9zdGluc3RhbGxfY21kcyBcCi0gcG9zdHVuaW5zdGFsbF9jbWRzIFwKLSBmaW5pc2hfY21kcyBcCi1AQCAtMTYzODIsNyArMTcwNTQsOCBAQCAkYXNfZWNobyBYIiRmaWxlIiB8Ci0gIyBOT1RFOiBDaGFuZ2VzIG1hZGUgdG8gdGhpcyBmaWxlIHdpbGwgYmUgbG9zdDogbG9vayBhdCBsdG1haW4uc2guCi0gIwotICMgICBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsCi0tIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsjICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSsjICAgICAgICAgICAgICAgICBJbmMuCi0gIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKLSAjCi0gIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sLgotQEAgLTE2NDg1LDE5ICsxNzE1OCw0MiBAQCBTUDJOTD0kbHRfbHRfU1AyTkwKLSAjIHR1cm4gbmV3bGluZXMgaW50byBzcGFjZXMuCi0gTkwyU1A9JGx0X2x0X05MMlNQCi0gCi0rIyBjb252ZXJ0IFwkYnVpbGQgZmlsZSBuYW1lcyB0byBcJGhvc3QgZm9ybWF0LgotK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKLSsKLSsjIGNvbnZlcnQgXCRidWlsZCBmaWxlcyB0byB0b29sY2hhaW4gZm9ybWF0LgotK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKLSsKLSAjIEFuIG9iamVjdCBzeW1ib2wgZHVtcGVyLgotIE9CSkRVTVA9JGx0X09CSkRVTVAKLSAKLSAjIE1ldGhvZCB0byBjaGVjayB3aGV0aGVyIGRlcGVuZGVudCBsaWJyYXJpZXMgYXJlIHNoYXJlZCBvYmplY3RzLgotIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9kZXBsaWJzX2NoZWNrX21ldGhvZAotIAotLSMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9PSAiZmlsZV9tYWdpYyIuCi0rIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgotIGZpbGVfbWFnaWNfY21kPSRsdF9maWxlX21hZ2ljX2NtZAotIAotKyMgSG93IHRvIGZpbmQgcG90ZW50aWFsIGZpbGVzIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCi0rZmlsZV9tYWdpY19nbG9iPSRsdF9maWxlX21hZ2ljX2dsb2IKLSsKLSsjIEZpbmQgcG90ZW50aWFsIGZpbGVzIHVzaW5nIG5vY2FzZWdsb2Igd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KLSt3YW50X25vY2FzZWdsb2I9JGx0X3dhbnRfbm9jYXNlZ2xvYgotKwotKyMgRExMIGNyZWF0aW9uIHByb2dyYW0uCi0rRExMVE9PTD0kbHRfRExMVE9PTAotKwotKyMgQ29tbWFuZCB0byBhc3NvY2lhdGUgc2hhcmVkIGFuZCBsaW5rIGxpYnJhcmllcy4KLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKLSsKLSAjIFRoZSBhcmNoaXZlci4KLSBBUj0kbHRfQVIKLSsKLSsjIEZsYWdzIHRvIGNyZWF0ZSBhbiBhcmNoaXZlLgotIEFSX0ZMQUdTPSRsdF9BUl9GTEFHUwotIAotKyMgSG93IHRvIGZlZWQgYSBmaWxlIGxpc3RpbmcgdG8gdGhlIGFyY2hpdmVyLgotK2FyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfYXJjaGl2ZXJfbGlzdF9zcGVjCi0rCi0gIyBBIHN5bWJvbCBzdHJpcHBpbmcgcHJvZ3JhbS4KLSBTVFJJUD0kbHRfU1RSSVAKLSAKLUBAIC0xNjUyNyw2ICsxNzIyMywxMiBAQCBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcwotICMgVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBDIG5hbWUgYWRkcmVzcyBwYWlyIHdoZW4gbGliIHByZWZpeCBpcyBuZWVkZWQuCi0gZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4Ci0gCi0rIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMgZm9yIFwkTk0uCi0rbm1fZmlsZV9saXN0X3NwZWM9JGx0X25tX2ZpbGVfbGlzdF9zcGVjCi0rCi0rIyBUaGUgcm9vdCB3aGVyZSB0byBzZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMsYW5kIGluIHdoaWNoIG91ciBsaWJyYXJpZXMgc2hvdWxkIGJlIGluc3RhbGxlZC4KLStsdF9zeXNyb290PSRsdF9zeXNyb290Ci0rCi0gIyBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgdGVtcG9yYXJ5IGxpYnRvb2wgZmlsZXMuCi0gb2JqZGlyPSRvYmpkaXIKLSAKLUBAIC0xNjUzNiw2ICsxNzIzOCw5IEBAIE1BR0lDX0NNRD0kTUFHSUNfQ01ECi0gIyBNdXN0IHdlIGxvY2sgZmlsZXMgd2hlbiBkb2luZyBjb21waWxhdGlvbj8KLSBuZWVkX2xvY2tzPSRsdF9uZWVkX2xvY2tzCi0gCi0rIyBNYW5pZmVzdCB0b29sLgotK01BTklGRVNUX1RPT0w9JGx0X01BTklGRVNUX1RPT0wKLSsKLSAjIFRvb2wgdG8gbWFuaXB1bGF0ZSBhcmNoaXZlZCBEV0FSRiBkZWJ1ZyBzeW1ib2wgZmlsZXMgb24gTWFjIE9TIFguCi0gRFNZTVVUSUw9JGx0X0RTWU1VVElMCi0gCi1AQCAtMTY2NTAsMTIgKzE3MzU1LDEyIEBAIHdpdGhfZ2NjPSRHQ0MKLSAjIENvbXBpbGVyIGZsYWcgdG8gdHVybiBvZmYgYnVpbHRpbiBmdW5jdGlvbnMuCi0gbm9fYnVpbHRpbl9mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZwotIAotLSMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KLS13bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAotLQotICMgQWRkaXRpb25hbCBjb21waWxlciBmbGFncyBmb3IgYnVpbGRpbmcgbGlicmFyeSBvYmplY3RzLgotIHBpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3BpYwotIAotKyMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KLSt3bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAotKwotICMgQ29tcGlsZXIgZmxhZyB0byBwcmV2ZW50IGR5bmFtaWMgbGlua2luZy4KLSBsaW5rX3N0YXRpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3N0YXRpYwotIAotQEAgLTE2NzQyLDkgKzE3NDQ3LDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aAotICMgV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzLgotIGxpbmtfYWxsX2RlcGxpYnM9JGxpbmtfYWxsX2RlcGxpYnMKLSAKLS0jIEZpeCB0aGUgc2hlbGwgdmFyaWFibGUgXCRzcmNmaWxlIGZvciB0aGUgY29tcGlsZXIuCi0tZml4X3NyY2ZpbGVfcGF0aD0kbHRfZml4X3NyY2ZpbGVfcGF0aAotLQotICMgU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkLgotIGFsd2F5c19leHBvcnRfc3ltYm9scz0kYWx3YXlzX2V4cG9ydF9zeW1ib2xzCi0gCi1AQCAtMTY3NjAsNiArMTc0NjIsOSBAQCBpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltcwotICMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXMuCi0gcHJlbGlua19jbWRzPSRsdF9wcmVsaW5rX2NtZHMKLSAKLSsjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgZmluaXNoaW5nIGxpbmtpbmcgcHJvZ3JhbXMuCi0rcG9zdGxpbmtfY21kcz0kbHRfcG9zdGxpbmtfY21kcwotKwotICMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzLgotIGZpbGVfbGlzdF9zcGVjPSRsdF9maWxlX2xpc3Rfc3BlYwotIAotQEAgLTE2NzkyLDIxMCArMTc0OTcsMTY5IEBAIGx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgotICAgIyBpZiBmaW5kcyBtaXhlZCBDUi9MRiBhbmQgTEYtb25seSBsaW5lcy4gIFNpbmNlIHNlZCBvcGVyYXRlcyBpbgotICAgIyB0ZXh0IG1vZGUsIGl0IHByb3Blcmx5IGNvbnZlcnRzIGxpbmVzIHRvIENSL0xGLiAgVGhpcyBiYXNoIHByb2JsZW0KLSAgICMgaXMgcmVwb3J0ZWRseSBmaXhlZCwgYnV0IHdoeSBub3QgcnVuIG9uIG9sZCB2ZXJzaW9ucyB0b28/Ci0tICBzZWQgJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotLQotLSAgY2FzZSAkeHNpX3NoZWxsIGluCi0tICB5ZXMpCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLWZ1bmNfZGlybmFtZSAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0tICBlc2FjCi0tfQotLQotLSMgZnVuY19iYXNlbmFtZSBmaWxlCi0tZnVuY19iYXNlbmFtZSAoKQotLXsKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKLS19Ci0tCi0tIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KLS0jIGNhbGw6Ci0tIyAgIGRpcm5hbWU6ICBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwKLS0jICAgICAgICAgICAgIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwgb3RoZXJ3aXNlIHNldCByZXN1bHQKLS0jICAgICAgICAgICAgIHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS0jICAgICAgICAgICAgIHZhbHVlIHJldHVybmVkIGluICIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKLS0jICAgYmFzZW5hbWU6IENvbXB1dGUgZmlsZW5hbWUgb2YgRklMRS4KLS0jICAgICAgICAgICAgIHZhbHVlIHJldHVuZWQgaW4gIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLS0jIEltcGxlbWVudGF0aW9uIG11c3QgYmUga2VwdCBzeW5jaHJvbml6ZWQgd2l0aCBmdW5jX2Rpcm5hbWUKLS0jIGFuZCBmdW5jX2Jhc2VuYW1lLiBGb3IgZWZmaWNpZW5jeSwgd2UgZG8gbm90IGRlbGVnYXRlIHRvCi0tIyB0aG9zZSBmdW5jdGlvbnMgYnV0IGluc3RlYWQgZHVwbGljYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGhlcmUuCi0tZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0tICBlc2FjCi0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCi0tfQotLQotLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCi0tIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KLS0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZwotLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KLS1mdW5jX3N0cmlwbmFtZSAoKQotLXsKLS0gICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKLS0gICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC4KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9Ci0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In0KLS19Ci0tCi0tIyBmdW5jX29wdF9zcGxpdAotLWZ1bmNfb3B0X3NwbGl0ICgpCi0tewotLSAgZnVuY19vcHRfc3BsaXRfb3B0PSR7MSUlPSp9Ci0tICBmdW5jX29wdF9zcGxpdF9hcmc9JHsxIyo9fQotLX0KLS0KLS0jIGZ1bmNfbG8ybyBvYmplY3QKLS1mdW5jX2xvMm8gKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKLS0gICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7Ci0tICBlc2FjCi0tfQotLQotLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCi0tZnVuY194Zm9ybSAoKQotLXsKLS0gIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG8KLS19Ci0tCi0tIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotLWZ1bmNfYXJpdGggKCkKLS17Ci0tICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSkKLS19Ci0tCi0tIyBmdW5jX2xlbiBzdHJpbmcKLS0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi0tZnVuY19sZW4gKCkKLS17Ci0tICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX0KLS19Ci0tCi0tX0xUX0VPRgotLSAgICA7OwotLSAgKikgIyBCb3VybmUgY29tcGF0aWJsZSBmdW5jdGlvbnMuCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLWZ1bmNfZGlybmFtZSAoKQotLXsKLS0gICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCi0tICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkZGlybmFtZSJgCi0tICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgotLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgotLSAgZWxzZQotLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCi0tICBmaQotLX0KLS0KLS0jIGZ1bmNfYmFzZW5hbWUgZmlsZQotLWZ1bmNfYmFzZW5hbWUgKCkKLS17Ci0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGJhc2VuYW1lImAKLS19Ci0tCi0tCi0tIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLS0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0tIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0tIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotLSMgZnVuY19zdHJpcF9zdWZmaXggcHJlZml4IG5hbWUKLS1mdW5jX3N0cmlwbmFtZSAoKQotLXsKLS0gIGNhc2UgJHsyfSBpbgotLSAgICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OwotLSAgICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7Ci0tICBlc2FjCi0tfQotLQotLSMgc2VkIHNjcmlwdHM6Ci0tbXlfc2VkX2xvbmdfb3B0PScxcy9eXCgtW149XSpcKT0uKi9cMS87cScKLS1teV9zZWRfbG9uZ19hcmc9JzFzL14tW149XSo9Ly8nCi0tCi0tIyBmdW5jX29wdF9zcGxpdAotLWZ1bmNfb3B0X3NwbGl0ICgpCi0tewotLSAgZnVuY19vcHRfc3BsaXRfb3B0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfb3B0ImAKLS0gIGZ1bmNfb3B0X3NwbGl0X2FyZz1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX2FyZyJgCi0tfQotLQotLSMgZnVuY19sbzJvIG9iamVjdAotLWZ1bmNfbG8ybyAoKQotLXsKLS0gIGZ1bmNfbG8yb19yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRsbzJvImAKLS19Ci0tCi0tIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLS1mdW5jX3hmb3JtICgpCi0tewotLSAgZnVuY194Zm9ybV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgJ3MvXC5bXi5dKiQvLmxvLydgCi0tfQotLQotLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KLS1mdW5jX2FyaXRoICgpCi0tewotLSAgZnVuY19hcml0aF9yZXN1bHQ9YGV4cHIgIiRAImAKLS19Ci0tCi0tIyBmdW5jX2xlbiBzdHJpbmcKLS0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi0tZnVuY19sZW4gKCkKLS17Ci0tICBmdW5jX2xlbl9yZXN1bHQ9YGV4cHIgIiQxIiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCi0tfQotLQotLV9MVF9FT0YKLS1lc2FjCi0tCi0tY2FzZSAkbHRfc2hlbGxfYXBwZW5kIGluCi0tICB5ZXMpCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKLS0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KLS1mdW5jX2FwcGVuZCAoKQotLXsKLS0gIGV2YWwgIiQxKz1cJDIiCi0tfQotLV9MVF9FT0YKLS0gICAgOzsKLS0gICopCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKLS0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KLS1mdW5jX2FwcGVuZCAoKQotLXsKLS0gIGV2YWwgIiQxPVwkJDFcJDIiCi0tfQotLQotLV9MVF9FT0YKLS0gICAgOzsKLS0gIGVzYWMKLS0KLS0KLS0gIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLS0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLS0KLS0gIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKLSsgIHNlZCAnJHEnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLSsgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0rCi0rICBpZiB0ZXN0IHgiJHhzaV9zaGVsbCIgPSB4eWVzOyB0aGVuCi0rICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lIC9jXAotK2Z1bmNfZGlybmFtZSAoKVwKLSt7XAotK1wgICAgY2FzZSAkezF9IGluXAotK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKLStcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKLStcICAgIGVzYWNcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Jhc2VuYW1lIC9jXAotK2Z1bmNfYmFzZW5hbWUgKClcCi0re1wKLStcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAvY1wKLStmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpXAotK3tcCi0rXCAgICBjYXNlICR7MX0gaW5cCi0rXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAotK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAotK1wgICAgZXNhY1wKLStcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3N0cmlwbmFtZSAoKSQvLC9efSAjIGZ1bmNfc3RyaXBuYW1lIC9jXAotK2Z1bmNfc3RyaXBuYW1lICgpXAotK3tcCi0rXCAgICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlXAotK1wgICAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LlwKLStcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9XAotK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In1cCi0rXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zdHJpcG5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3NwbGl0X2xvbmdfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9sb25nX29wdCAvY1wKLStmdW5jX3NwbGl0X2xvbmdfb3B0ICgpXAotK3tcCi0rXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWU9JHsxJSU9Kn1cCi0rXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZz0kezEjKj19XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X2xvbmdfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19zcGxpdF9zaG9ydF9vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X3Nob3J0X29wdCAvY1wKLStmdW5jX3NwbGl0X3Nob3J0X29wdCAoKVwKLSt7XAotK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnPSR7MSM/P31cCi0rXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lPSR7MSUiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyJ9XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X3Nob3J0X29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfbG8ybyAoKSQvLC9efSAjIGZ1bmNfbG8ybyAvY1wKLStmdW5jX2xvMm8gKClcCi0re1wKLStcICAgIGNhc2UgJHsxfSBpblwKLStcICAgICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOztcCi0rXCAgICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7O1wKLStcICAgIGVzYWNcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbG8ybyBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfeGZvcm0gKCkkLywvXn0gIyBmdW5jX3hmb3JtIC9jXAotK2Z1bmNfeGZvcm0gKClcCi0re1wKLSsgICAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sb1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY194Zm9ybSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfYXJpdGggKCkkLywvXn0gIyBmdW5jX2FyaXRoIC9jXAotK2Z1bmNfYXJpdGggKClcCi0re1wKLSsgICAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FyaXRoIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19sZW4gKCkkLywvXn0gIyBmdW5jX2xlbiAvY1wKLStmdW5jX2xlbiAoKVwKLSt7XAotKyAgICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbGVuIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rZmkKLSsKLStpZiB0ZXN0IHgiJGx0X3NoZWxsX2FwcGVuZCIgPSB4eWVzOyB0aGVuCi0rICBzZWQgLWUgJy9eZnVuY19hcHBlbmQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZCAvY1wKLStmdW5jX2FwcGVuZCAoKVwKLSt7XAotKyAgICBldmFsICIkezF9Kz1cXCR7Mn0iXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kX3F1b3RlZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kX3F1b3RlZCAvY1wKLStmdW5jX2FwcGVuZF9xdW90ZWQgKClcCi0re1wKLStcICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR7Mn0iXAotK1wgICAgZXZhbCAiJHsxfSs9XFxcXCBcXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kX3F1b3RlZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIHdoZXJlIHBvc3NpYmxlIGJ5IGRpcmVjdCB1c2Ugb2YgJys9JwotKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMSs9IiVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCi0rICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotK2Vsc2UKLSsgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCBldmVuIHdoZW4gJys9JyBpcyBub3QgYXZhaWxhYmxlCi0rICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxPSIkXDElZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAotKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLStmaQotKwotK2lmIHRlc3QgeCIkX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbCIgPSB4IjoiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mMjt9Ci0rZmkKLSsKLSsKLSsgICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8Ci0gICAgIChybSAtZiAiJG9maWxlIiAmJiBjcCAiJGNmZ2ZpbGUiICIkb2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZSIpCi0gICBjaG1vZCAreCAiJG9maWxlIgotIAotZGlmZiAtLWdpdCBhL2dhcy9jb25maWd1cmUgYi9nYXMvY29uZmlndXJlCi1pbmRleCBlNTc0Y2I4NTE0Li5hMzZmMWFlMTYxIDEwMDc1NQotLS0tIGEvZ2FzL2NvbmZpZ3VyZQotKysrIGIvZ2FzL2NvbmZpZ3VyZQotQEAgLTY1MCw4ICs2NTAsMTEgQEAgT1RPT0wKLSBMSVBPCi0gTk1FRElUCi0gRFNZTVVUSUwKLStNQU5JRkVTVF9UT09MCi0gUkFOTElCCi0rYWNfY3RfQVIKLSBBUgotK0RMTFRPT0wKLSBPQkpEVU1QCi0gTE5fUwotIE5NCi1AQCAtNzYzLDYgKzc2Niw3IEBAIGVuYWJsZV9zdGF0aWMKLSB3aXRoX3BpYwotIGVuYWJsZV9mYXN0X2luc3RhbGwKLSB3aXRoX2dudV9sZAotK3dpdGhfbGlidG9vbF9zeXNyb290Ci0gZW5hYmxlX2xpYnRvb2xfbG9jawotIGVuYWJsZV9wbHVnaW5zCi0gZW5hYmxlX2xhcmdlZmlsZQotQEAgLTQ5MjEsOCArNDkyNSw4IEBAIGVzYWMKLSAKLSAKLSAKLS1tYWNyb192ZXJzaW9uPScyLjIuN2EnCi0tbWFjcm9fcmV2aXNpb249JzEuMzEzNCcKLSttYWNyb192ZXJzaW9uPScyLjQnCi0rbWFjcm9fcmV2aXNpb249JzEuMzI5MycKLSAKLSAKLSAKLUBAIC00OTYyLDcgKzQ5NjYsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITwotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzLi4uICIgPiY2OyB9Ci0gIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCi0taWYgdGVzdCAiWGBwcmludCAtciAtLSAtbiAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKLStpZiB0ZXN0ICJYYCggcHJpbnQgLXIgLS0gLW4gKSAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKLSAgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgotICAgRUNITz0ncHJpbnQgLXIgLS0nCi0gZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KLUBAIC01NjQ4LDggKzU2NTIsOCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBzb21lIFhTSSBjb25zdHJ1Y3RzLi4uICIgPiY2OwotICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCi0geHNpX3NoZWxsPW5vCi0gKCBfbHRfZHVtbXk9ImEvYi9jIgotLSAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sIiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKLS0gICAgICA9IGMsYS9iLCwgXAotKyAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sJHtfbHRfZHVtbXkjPz99IiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKLSsgICAgICA9IGMsYS9iLGIvYywgXAotICAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCi0gICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCi0gICAmJiB4c2lfc2hlbGw9eWVzCi1AQCAtNTY5OCw2ICs1NzAyLDgwIEBAIGVzYWMKLSAKLSAKLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0Li4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl90b19ob3N0X2ZpbGVfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2FzZSAkaG9zdCBpbgotKyAgKi0qLW1pbmd3KiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgICAqLSotY3lnd2luKiApCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIKLSsgICAgICAgIDs7Ci0rICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rICAqLSotY3lnd2luKiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbgotKyAgICAgICAgOzsKLSsgICAgICAqLSotY3lnd2luKiApCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLSsgICAgICAgIDs7Ci0rICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rICAqICkgIyB1bmhhbmRsZWQgaG9zdHMgKGFuZCAibm9ybWFsIiBuYXRpdmUgYnVpbGRzKQotKyAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLSsgICAgOzsKLStlc2FjCi0rCi0rZmkKLSsKLSt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNjsgfQotKwotKwotKwotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfdG9fdG9vbF9maWxlX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgICNhc3N1bWUgb3JkaW5hcnkgY3Jvc3MgdG9vbHMsIG9yIG5hdGl2ZSBidWlsZC4KLStsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLStjYXNlICRob3N0IGluCi0rICAqLSotbWluZ3cqICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rZXNhYwotKwotK2ZpCi0rCi0rdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjY7IH0KLSsKLSsKLSsKLSsKLSsKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMuLi4gIiA+JjY7IH0KLSBpZiB0ZXN0ICIke2x0X2N2X2xkX3JlbG9hZF9mbGFnK3NldH0iID0gc2V0OyB0aGVuIDoKLUBAIC01NzE0LDYgKzU3OTIsMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KLSBlc2FjCi0gcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotIGNhc2UgJGhvc3Rfb3MgaW4KLSsgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSsgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCi0rICAgICAgcmVsb2FkX2NtZHM9ZmFsc2UKLSsgICAgZmkKLSsgICAgOzsKLSAgIGRhcndpbiopCi0gICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotQEAgLTU4ODIsNyArNTk2NSw4IEBAIG1pbmd3KiB8IHB3MzIqKQotICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJwotICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKLSAgIGVsc2UKLS0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCi0rICAgICMgS2VlcCB0aGlzIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gZnVuY193aW4zMl9saWJpZC4KLSsgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJwotICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCi0gICBmaQotICAgOzsKLUBAIC02MDM2LDYgKzYxMjAsMjEgQEAgZXNhYwotIGZpCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY1Ci0gJGFzX2VjaG8gIiRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY2OyB9Ci0rCi0rZmlsZV9tYWdpY19nbG9iPQotK3dhbnRfbm9jYXNlZ2xvYj1ubwotK2lmIHRlc3QgIiRidWlsZCIgPSAiJGhvc3QiOyB0aGVuCi0rICBjYXNlICRob3N0X29zIGluCi0rICBtaW5ndyogfCBwdzMyKikKLSsgICAgaWYgKCBzaG9wdCB8IGdyZXAgbm9jYXNlZ2xvYiApID4vZGV2L251bGwgMj4mMTsgdGhlbgotKyAgICAgIHdhbnRfbm9jYXNlZ2xvYj15ZXMKLSsgICAgZWxzZQotKyAgICAgIGZpbGVfbWFnaWNfZ2xvYj1gZWNobyBhQWJCY0NkRGVFZkZnR2hIaUlqSmtLbExtTW5Ob09wUHFRclJzU3RUdVV2VndXeFh5WXpaIHwgJFNFRCAtZSAicy9cKC4uXCkvc1wvW1wxXVwvW1wxXVwvZzsvZyJgCi0rICAgIGZpCi0rICAgIDs7Ci0rICBlc2FjCi0rZmkKLSsKLSBmaWxlX21hZ2ljX2NtZD0kbHRfY3ZfZmlsZV9tYWdpY19jbWQKLSBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QKLSB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KLUBAIC02MDUxLDkgKzYxNTAsMTYyIEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgotIAotIAotIAotKwotKwotKwotKwotKwotKwotKwotKwotKwotKwotK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1kbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1kbGx0b29sOyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19ETExUT09MK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX0RMTFRPT0w9IiRETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfRExMVE9PTD0iJHthY190b29sX3ByZWZpeH1kbGx0b29sIgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLStETExUT09MPSRhY19jdl9wcm9nX0RMTFRPT0wKLStpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkRExMVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRETExUT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsKLStmaQotK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX0RMTFRPT0wiOyB0aGVuCi0rICBhY19jdF9ETExUT09MPSRETExUT09MCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSBkbGx0b29sOyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9ETExUT09MK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9IiRhY19jdF9ETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iZGxsdG9vbCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rYWNfY3RfRExMVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MCi0raWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X0RMTFRPT0wiID4mNQotKyRhc19lY2hvICIkYWNfY3RfRExMVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rICBpZiB0ZXN0ICJ4JGFjX2N0X0RMTFRPT0wiID0geDsgdGhlbgotKyAgICBETExUT09MPSJmYWxzZSIKLSsgIGVsc2UKLSsgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgotK3llczopCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KLSthY190b29sX3dhcm5lZD15ZXMgOzsKLStlc2FjCi0rICAgIERMTFRPT0w9JGFjX2N0X0RMTFRPT0wKLSsgIGZpCi0rZWxzZQotKyAgRExMVE9PTD0iJGFjX2N2X3Byb2dfRExMVE9PTCIKLStmaQotKwotK3Rlc3QgLXogIiRETExUT09MIiAmJiBETExUT09MPWRsbHRvb2wKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J3Vua25vd24nCi0rCi0rY2FzZSAkaG9zdF9vcyBpbgotK2N5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSsgICMgdHdvIGRpZmZlcmVudCBzaGVsbCBmdW5jdGlvbnMgZGVmaW5lZCBpbiBsdG1haW4uc2gKLSsgICMgZGVjaWRlIHdoaWNoIHRvIHVzZSBiYXNlZCBvbiBjYXBhYmlsaXRpZXMgb2YgJERMTFRPT0wKLSsgIGNhc2UgYCRETExUT09MIC0taGVscCAyPiYxYCBpbgotKyAgKi0taWRlbnRpZnktc3RyaWN0KikKLSsgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliCi0rICAgIDs7Ci0rICAqKQotKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sKLSsgICAgOzsKLSsgIGVzYWMKLSsgIDs7Ci0rKikKLSsgICMgZmFsbGJhY2s6IGFzc3VtZSBsaW5rbGliIElTIHNoYXJlZGxpYgotKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9IiRFQ0hPIgotKyAgOzsKLStlc2FjCi0rCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjY7IH0KLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKLSt0ZXN0IC16ICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiICYmIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRFQ0hPCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0gaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLS1zZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1hcjsgYWNfd29yZD0kMgotKyAgZm9yIGFjX3Byb2cgaW4gYXIKLSsgIGRvCi0rICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLSBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfQVIrc2V0fSIgPSBzZXQ7IHRoZW4gOgotQEAgLTYwNjksNyArNjMyMSw3IEBAIGRvCi0gICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLS0gICAgYWNfY3ZfcHJvZ19BUj0iJHthY190b29sX3ByZWZpeH1hciIKLSsgICAgYWNfY3ZfcHJvZ19BUj0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCi0gICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotICAgICBicmVhayAyCi0gICBmaQotQEAgLTYwODksMTEgKzYzNDEsMTUgQEAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KLSBmaQotIAotIAotKyAgICB0ZXN0IC1uICIkQVIiICYmIGJyZWFrCi0rICBkb25lCi0gZmkKLS1pZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19BUiI7IHRoZW4KLStpZiB0ZXN0IC16ICIkQVIiOyB0aGVuCi0gICBhY19jdF9BUj0kQVIKLS0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiYXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotLXNldCBkdW1teSBhcjsgYWNfd29yZD0kMgotKyAgZm9yIGFjX3Byb2cgaW4gYXIKLStkbwotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotIGlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9BUitzZXR9IiA9IHNldDsgdGhlbiA6Ci1AQCAtNjEwOSw3ICs2MzY1LDcgQEAgZG8KLSAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotLSAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSJhciIKLSsgICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iJGFjX3Byb2ciCi0gICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotICAgICBicmVhayAyCi0gICBmaQotQEAgLTYxMjgsNiArNjM4NCwxMCBAQCBlbHNlCi0gJGFzX2VjaG8gIm5vIiA+JjY7IH0KLSBmaQotIAotKwotKyAgdGVzdCAtbiAiJGFjX2N0X0FSIiAmJiBicmVhawotK2RvbmUKLSsKLSAgIGlmIHRlc3QgIngkYWNfY3RfQVIiID0geDsgdGhlbgotICAgICBBUj0iZmFsc2UiCi0gICBlbHNlCi1AQCAtNjEzOSwxMiArNjM5OSwxMCBAQCBhY190b29sX3dhcm5lZD15ZXMgOzsKLSBlc2FjCi0gICAgIEFSPSRhY19jdF9BUgotICAgZmkKLS1lbHNlCi0tICBBUj0iJGFjX2N2X3Byb2dfQVIiCi0gZmkKLSAKLS10ZXN0IC16ICIkQVIiICYmIEFSPWFyCi0tdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKLSs6ICR7QVI9YXJ9Ci0rOiAke0FSX0ZMQUdTPWNydX0KLSAKLSAKLSAKLUBAIC02MTU2LDYgKzY0MTQsNjQgQEAgdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKLSAKLSAKLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfYXJfYXRfZmlsZStzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X2FyX2F0X2ZpbGU9bm8KLSsgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rLyogZW5kIGNvbmZkZWZzLmguICAqLwotKwotK2ludAotK21haW4gKCkKLSt7Ci0rCi0rICA7Ci0rICByZXR1cm4gMDsKLSt9Ci0rX0FDRU9GCi0raWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotKyAgZWNobyBjb25mdGVzdC4kYWNfb2JqZXh0ID4gY29uZnRlc3QubHN0Ci0rICAgICAgbHRfYXJfdHJ5PSckQVIgJEFSX0ZMQUdTIGxpYmNvbmZ0ZXN0LmEgQGNvbmZ0ZXN0LmxzdCA+JjUnCi0rICAgICAgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKLSsgIChldmFsICRsdF9hcl90cnkpIDI+JjUKLSsgIGFjX3N0YXR1cz0kPwotKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0rICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9Ci0rICAgICAgaWYgdGVzdCAiJGFjX3N0YXR1cyIgLWVxIDA7IHRoZW4KLSsJIyBFbnN1cmUgdGhlIGFyY2hpdmVyIGZhaWxzIHVwb24gYm9ndXMgZmlsZSBuYW1lcy4KLSsJcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBsaWJjb25mdGVzdC5hCi0rCXsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1Ci0rICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1Ci0rICBhY19zdGF0dXM9JD8KLSsgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQotKwlpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtbmUgMDsgdGhlbgotKyAgICAgICAgICBsdF9jdl9hcl9hdF9maWxlPUAKLSsgICAgICAgIGZpCi0rICAgICAgZmkKLSsgICAgICBybSAtZiBjb25mdGVzdC4qIGxpYmNvbmZ0ZXN0LmEKLSsKLStmaQotK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotKwotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9hcl9hdF9maWxlIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X2FyX2F0X2ZpbGUiID4mNjsgfQotKwotK2lmIHRlc3QgIngkbHRfY3ZfYXJfYXRfZmlsZSIgPSB4bm87IHRoZW4KLSsgIGFyY2hpdmVyX2xpc3Rfc3BlYz0KLStlbHNlCi0rICBhcmNoaXZlcl9saXN0X3NwZWM9JGx0X2N2X2FyX2F0X2ZpbGUKLStmaQotKwotKwotKwotKwotKwotKwotKwotIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1zdHJpcCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0gc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9c3RyaXA7IGFjX3dvcmQ9JDIKLUBAIC02NDkwLDggKzY4MDYsOCBAQCBlc2FjCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiAtZSAncy9eVCAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDEoKTsvcCcgLWUgJ3MvXiRzeW1jb2RlKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJyIKLSAKLSAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKLS1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0rbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0gCi0gIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCi0gb3B0X2NyPQotQEAgLTY1MjcsNiArNjg0Myw3IEBAIGZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KLSAgIGVsc2UKLSAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0ic2VkIC1uIC1lICdzL14uKlsJIF1cKCRzeW1jb2RlJHN5bWNvZGUqXClbCSBdWwkgXSokYWNfc3ltcHJmeCRzeW1wYXQkb3B0X2NyJC8kc3lteGZybS9wJyIKLSAgIGZpCi0rICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSB8IHNlZCAnLyBfX2dudV9sdG8vZCciCi0gCi0gICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBwaXBlIHdvcmtzIGNvcnJlY3RseS4KLSAgIHBpcGVfd29ya3M9bm8KLUBAIC02NTY4LDYgKzY4ODUsMTggQEAgX0xUX0VPRgotICAgICAgIGlmICRHUkVQICcgbm1fdGVzdF92YXIkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCi0gCWlmICRHUkVQICcgbm1fdGVzdF9mdW5jJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgotIAkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0Ci0rLyogS2VlcCB0aGlzIGNvZGUgaW4gc3luYyBiZXR3ZWVuIGxpYnRvb2wubTQsIGx0bWFpbiwgbHRfc3lzdGVtLmgsIGFuZCB0ZXN0cy4gICovCi0rI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKLSsvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKLSsgICByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24gb24gcHNldWRvLXJlbG9jcy4gICovCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKLSsjZWxpZiBkZWZpbmVkKF9fb3NmX18pCi0rLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKLSsjZWxzZQotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUIGNvbnN0Ci0rI2VuZGlmCi0rCi0gI2lmZGVmIF9fY3BsdXNwbHVzCi0gZXh0ZXJuICJDIiB7Ci0gI2VuZGlmCi1AQCAtNjU3OSw3ICs2OTA4LDcgQEAgX0xUX0VPRgotIAkgIGNhdCA8PF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAotIAotIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KLS1jb25zdCBzdHJ1Y3QgewotK0xUX0RMU1lNX0NPTlNUIHN0cnVjdCB7Ci0gICBjb25zdCBjaGFyICpuYW1lOwotICAgdm9pZCAgICAgICAqYWRkcmVzczsKLSB9Ci1AQCAtNjYwNSw4ICs2OTM0LDggQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKLSBfTFRfRU9GCi0gCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KLSAJICBtdiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKLS0JICBsdF9zYXZlX0xJQlM9IiRMSUJTIgotLQkgIGx0X3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgotKwkgIGx0X2dsb2JzeW1fc2F2ZV9MSUJTPSRMSUJTCi0rCSAgbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUz0kQ0ZMQUdTCi0gCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKLSAJICBDRkxBR1M9IiRDRkxBR1MkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciCi0gCSAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2xpbmtcIiI7IH0gPiY1Ci1AQCAtNjYxNiw4ICs2OTQ1LDggQEAgX0xUX0VPRgotICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCi0gCSAgICBwaXBlX3dvcmtzPXllcwotIAkgIGZpCi0tCSAgTElCUz0iJGx0X3NhdmVfTElCUyIKLS0JICBDRkxBR1M9IiRsdF9zYXZlX0NGTEFHUyIKLSsJICBMSUJTPSRsdF9nbG9ic3ltX3NhdmVfTElCUwotKwkgIENGTEFHUz0kbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUwotIAllbHNlCi0gCSAgZWNobyAiY2Fubm90IGZpbmQgbm1fdGVzdF9mdW5jIGluICRubGlzdCIgPiY1Ci0gCWZpCi1AQCAtNjY1NCw2ICs2OTgzLDIxIEBAIGVsc2UKLSAkYXNfZWNobyAib2siID4mNjsgfQotIGZpCi0gCi0rIyBSZXNwb25zZSBmaWxlIHN1cHBvcnQuCi0raWYgdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiTVMgZHVtcGJpbiI7IHRoZW4KLSsgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJwotK2VsaWYgJE5NIC0taGVscCAyPi9kZXYvbnVsbCB8IGdyZXAgJ1tAXUZJTEUnID4vZGV2L251bGw7IHRoZW4KLSsgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJwotK2ZpCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0gCi0gCi0gCi1AQCAtNjY3MSw2ICs3MDE1LDQwIEBAIGZpCi0gCi0gCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3lzcm9vdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN5c3Jvb3QuLi4gIiA+JjY7IH0KLSsKLSsjIENoZWNrIHdoZXRoZXIgLS13aXRoLWxpYnRvb2wtc3lzcm9vdCB3YXMgZ2l2ZW4uCi0raWYgdGVzdCAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICB3aXRodmFsPSR3aXRoX2xpYnRvb2xfc3lzcm9vdDsKLStlbHNlCi0rICB3aXRoX2xpYnRvb2xfc3lzcm9vdD1ubwotK2ZpCi0rCi0rCi0rbHRfc3lzcm9vdD0KLStjYXNlICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IGluICMoCi0rIHllcykKLSsgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotKyAgICAgbHRfc3lzcm9vdD1gJENDIC0tcHJpbnQtc3lzcm9vdCAyPi9kZXYvbnVsbGAKLSsgICBmaQotKyAgIDs7ICMoCi0rIC8qKQotKyAgIGx0X3N5c3Jvb3Q9YGVjaG8gIiR3aXRoX2xpYnRvb2xfc3lzcm9vdCIgfCBzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAotKyAgIDs7ICMoCi0rIG5vfCcnKQotKyAgIDs7ICMoCi0rICopCi0rICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjUKLSskYXNfZWNobyAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNjsgfQotKyAgIGFzX2ZuX2Vycm9yICJUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguIiAiJExJTkVOTyIgNQotKyAgIDs7Ci0rZXNhYwotKwotKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHtsdF9zeXNyb290Oi1ub30iID4mNQotKyRhc19lY2hvICIke2x0X3N5c3Jvb3Q6LW5vfSIgPiY2OyB9Ci0rCi0rCi0gCi0gCi0gCi1AQCAtNjg4MSw2ICs3MjU5LDEyMyBAQCBlc2FjCi0gCi0gbmVlZF9sb2Nrcz0iJGVuYWJsZV9saWJ0b29sX2xvY2siCi0gCi0raWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fW10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1tdDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIkTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotKyAgICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiR7YWNfdG9vbF9wcmVmaXh9bXQiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTAotK2lmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRNQU5JRkVTVF9UT09MIiA+JjUKLSskYXNfZWNobyAiJE1BTklGRVNUX1RPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKwotK2ZpCi0raWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIGFjX2N0X01BTklGRVNUX1RPT0w9JE1BTklGRVNUX1RPT0wKLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAibXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSBtdDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotKyAgICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9Im10IgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLSthY19jdF9NQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wKLStpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsgIGlmIHRlc3QgIngkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPSB4OyB0aGVuCi0rICAgIE1BTklGRVNUX1RPT0w9IjoiCi0rICBlbHNlCi0rICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KLSt5ZXM6KQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9Ci0rYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0rZXNhYwotKyAgICBNQU5JRkVTVF9UT09MPSRhY19jdF9NQU5JRkVTVF9UT09MCi0rICBmaQotK2Vsc2UKLSsgIE1BTklGRVNUX1RPT0w9IiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiCi0rZmkKLSsKLSt0ZXN0IC16ICIkTUFOSUZFU1RfVE9PTCIgJiYgTUFOSUZFU1RfVE9PTD1tdAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD1ubwotKyAgZWNobyAiJGFzX21lOiRMSU5FTk86ICRNQU5JRkVTVF9UT09MICctPyciID4mNQotKyAgJE1BTklGRVNUX1RPT0wgJy0/JyAyPmNvbmZ0ZXN0LmVyciA+IGNvbmZ0ZXN0Lm91dAotKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKLSsgIGlmICRHUkVQICdNYW5pZmVzdCBUb29sJyBjb25mdGVzdC5vdXQgPiAvZGV2L251bGw7IHRoZW4KLSsgICAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPXllcwotKyAgZmkKLSsgIHJtIC1mIGNvbmZ0ZXN0KgotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjY7IH0KLStpZiB0ZXN0ICJ4JGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgIT0geHllczsgdGhlbgotKyAgTUFOSUZFU1RfVE9PTD06Ci0rZmkKLSsKLSsKLSsKLSsKLSsKLSAKLSAgIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICAgcmhhcHNvZHkqIHwgZGFyd2luKikKLUBAIC03NDQ0LDYgKzc5MzksOCBAQCBfTFRfRU9GCi0gICAgICAgJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyAyPiY1Ci0gICAgICAgZWNobyAiJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8iID4mNQotICAgICAgICRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIDI+JjUKLSsgICAgICBlY2hvICIkUkFOTElCIGxpYmNvbmZ0ZXN0LmEiID4mNQotKyAgICAgICRSQU5MSUIgbGliY29uZnRlc3QuYSAyPiY1Ci0gICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCi0gaW50IG1haW4oKSB7IHJldHVybiAwO30KLSBfTFRfRU9GCi1AQCAtNzYzOSw3ICs4MTM2LDggQEAgZmkKLSBMSUJUT09MX0RFUFM9IiRsdG1haW4iCi0gCi0gIyBBbHdheXMgdXNlIG91ciBvd24gbGlidG9vbC4KLS1MSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpcikvbGlidG9vbCcKLStMSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpciknCi0rTElCVE9PTD0iJExJQlRPT0wvJHtob3N0X2FsaWFzfS1saWJ0b29sIgotIAotIAotIAotQEAgLTc3MjgsNyArODIyNiw3IEBAIGFpeDMqKQotIGVzYWMKLSAKLSAjIEdsb2JhbCB2YXJpYWJsZXM6Ci0tb2ZpbGU9bGlidG9vbAotK29maWxlPSR7aG9zdF9hbGlhc30tbGlidG9vbAotIGNhbl9idWlsZF9zaGFyZWQ9eWVzCi0gCi0gIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgYC5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCi1AQCAtODAyNiw4ICs4NTI0LDYgQEAgZmkKLSBsdF9wcm9nX2NvbXBpbGVyX3BpYz0KLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0KLSAKLS17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKLS0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotIAotICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAgICAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKLUBAIC04MTkzLDYgKzg2ODksMTIgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAJbHRfcHJvZ19jb21waWxlcl9waWM9Jy0tc2hhcmVkJwotIAlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLS1zdGF0aWMnCi0gCTs7Ci0rICAgICAgbmFnZm9yKikKLSsJIyBOQUcgRm9ydHJhbiBjb21waWxlcgotKwlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsLVdsLCwnCi0rCWx0X3Byb2dfY29tcGlsZXJfcGljPSctUElDJwotKwlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCi0rCTs7Ci0gICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQotICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBjb21waWxlcnMgKCpub3QqIHRoZSBQZW50aXVtIGdjYyBjb21waWxlciwKLSAJIyB3aGljaCBsb29rcyB0byBiZSBhIGRlYWQgcHJvamVjdCkKLUBAIC04MjU1LDcgKzg3NTcsNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotICAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctS1BJQycKLSAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCi0gICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLS0gICAgICBmNzcqIHwgZjkwKiB8IGY5NSopCi0rICAgICAgZjc3KiB8IGY5MCogfCBmOTUqIHwgc3VuZjc3KiB8IHN1bmY5MCogfCBzdW5mOTUqKQotIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctUW9wdGlvbiBsZCAnOzsKLSAgICAgICAqKQotIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJzs7Ci1AQCAtODMxMiwxMyArODgxNCwxNyBAQCBjYXNlICRob3N0X29zIGluCi0gICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSIkbHRfcHJvZ19jb21waWxlcl9waWMgLURQSUMiCi0gICAgIDs7Ci0gZXNhYwotLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNQotLSRhc19lY2hvICIkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQotLQotLQotLQotLQotIAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYytzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3Byb2dfY29tcGlsZXJfcGljPSRsdF9wcm9nX2NvbXBpbGVyX3BpYwotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9Ci0rbHRfcHJvZ19jb21waWxlcl9waWM9JGx0X2N2X3Byb2dfY29tcGlsZXJfcGljCi0gCi0gIwotICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLUBAIC04Mzc5LDYgKzg4ODUsMTEgQEAgZmkKLSAKLSAKLSAKLSsKLSsKLSsKLSsKLSsKLSAjCi0gIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgotICMKLUBAIC04NzI5LDcgKzkyNDAsOCBAQCBfTFRfRU9GCi0gICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSAgICAgICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9bm8KLSAgICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotLSAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsgICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLztzL14uKlsgXV9fbm1fX1woW14gXSpcKVsgXVteIF0qL1wxIERBVEEvOy9eSVsgXS9kOy9eW0FJVFddWyBdL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rICAgICAgZXhjbHVkZV9leHBzeW1zPSdbX10rR0xPQkFMX09GRlNFVF9UQUJMRV98W19dK0dMT0JBTF9fW0ZJRF1fLip8W19dK2hlYWRfW0EtWmEtejAtOV9dK19kbGx8W0EtWmEtejAtOV9dK19kbGxfaW5hbWUnCi0gCi0gICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgotICAgICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLUBAIC04ODI4LDEyICs5MzQwLDEyIEBAIF9MVF9FT0YKLSAJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKLSAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQotIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9Jy1ycGF0aCAkbGliZGlyJwotLQkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJwotKwkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKLSAJICBpZiB0ZXN0ICJ4JHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZyIgPSB4eWVzOyB0aGVuCi0gCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotIAkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzIHwgc2VkIC1lICJzL1woLipcKS9cMTsvIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0gCSAgICAgIGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotLQkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKLSsJICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJwotIAkgIGZpCi0gCSAgOzsKLSAJZXNhYwotQEAgLTg4NDcsOCArOTM1OSw4IEBAIF9MVF9FT0YKLSAJYXJjaGl2ZV9jbWRzPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJwotIAl3bGFyYz0KLSAgICAgICBlbHNlCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGZpCi0gICAgICAgOzsKLSAKLUBAIC04ODY2LDggKzkzNzgsOCBAQCBfTFRfRU9GCi0gCi0gX0xUX0VPRgotICAgICAgIGVsaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBlbHNlCi0gCWxkX3NobGlicz1ubwotICAgICAgIGZpCi1AQCAtODkxMyw4ICs5NDI1LDggQEAgX0xUX0VPRgotIAotICAgICAqKQotICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZWxzZQotIAlsZF9zaGxpYnM9bm8KLSAgICAgICBmaQotQEAgLTkwNDQsNyArOTU1NiwxMyBAQCBfTFRfRU9GCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPSctYmVyb2snCi0gICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KLSAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KLS0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsgICAgICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAotK2Vsc2UKLSsgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGhfK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAKLSBpbnQKLUBAIC05MDU3LDIyICs5NTc1LDI5IEBAIG1haW4gKCkKLSBfQUNFT0YKLSBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0gCi0tbHRfYWl4X2xpYnBhdGhfc2VkPScKLS0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotLQkvXjAvIHsKLS0JICAgIHMvXjAgICpcKC4qXCkkL1wxLwotLQkgICAgcAotLQl9Ci0tICAgIH0nCi0tYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLS0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLWZpCi0rICBsdF9haXhfbGlicGF0aF9zZWQ9JwotKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLSsJICAvXjAvIHsKLSsJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KLSsJICAgICAgcAotKwkgIH0KLSsgICAgICB9JwotKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgZmkKLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgotKyAgZmkKLSsKLStmaQotKwotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXwotK2ZpCi0gCi0gICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgotICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKLUBAIC05MDg0LDcgKzk2MDksMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCWVsc2UKLSAJICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgotIAkgIyBlbXB0eSBleGVjdXRhYmxlLgotLQkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKwkgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCi0rZWxzZQotKyAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aF8rc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotIAotIGludAotQEAgLTkwOTcsMjIgKzk2MjgsMjkgQEAgbWFpbiAoKQotIF9BQ0VPRgotIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSAKLS1sdF9haXhfbGlicGF0aF9zZWQ9JwotLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0tCS9eMC8gewotLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCi0tCSAgICBwCi0tCX0KLS0gICAgfScKLS1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tZmkKLSsgIGx0X2FpeF9saWJwYXRoX3NlZD0nCi0rICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotKwkgIC9eMC8gewotKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLwotKwkgICAgICBwCi0rCSAgfQotKyAgICAgIH0nCi0rICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICBmaQotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCi0rICBmaQotKwotK2ZpCi0rCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCi0rZmkKLSAKLSAJIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gCSAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKLUBAIC05MTU3LDIwICs5Njk1LDYzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotICAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCi0gICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcwotICAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0tICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLS0gICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0tICAgICAgbGliZXh0PWxpYgotLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotLSAgICAgIHNocmV4dF9jbWRzPSIuZGxsIgotLSAgICAgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLS0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JwotLSAgICAgICMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCi0tICAgICAgb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKLS0gICAgICAjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgotLSAgICAgIG9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKLS0gICAgICBmaXhfc3JjZmlsZV9wYXRoPSdgY3lncGF0aCAtdyAiJHNyY2ZpbGUiYCcKLS0gICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotKyAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0rICAgICAgY2wqKQotKwkjIE5hdGl2ZSBNU1ZDCi0rCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0rCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0rCWFsd2F5c19leHBvcnRfc3ltYm9scz15ZXMKLSsJZmlsZV9saXN0X3NwZWM9J0AnCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0rCWxpYmV4dD1saWIKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0rCXNocmV4dF9jbWRzPSIuZGxsIgotKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0rCWFyY2hpdmVfY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCi0rCSAgICBzZWQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOwotKwkgIGVsc2UKLSsJICAgIHNlZCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgZml+Ci0rCSAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgotKwkgIGxpbmtuYW1lcz0nCi0rCSMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KLSsJIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICk9J3RydWUnCi0rCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rCWV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxLERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsJIyBEb24ndCB1c2UgcmFubGliCi0rCW9sZF9wb3N0aW5zdGFsbF9jbWRzPSdjaG1vZCA2NDQgJG9sZGxpYicKLSsJcG9zdGxpbmtfY21kcz0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgotKwkgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+Ci0rCSAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgotKwkgICAgKi5leGV8Ki5FWEUpIDs7Ci0rCSAgICAqKQotKwkgICAgICBsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCi0rCSAgICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCi0rCSAgICAgIDs7Ci0rCSAgZXNhY34KLSsJICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgotKwkgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKLSsJICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOwotKwkgIGZpJwotKwk7OwotKyAgICAgICopCi0rCSMgQXNzdW1lIE1TVkMgd3JhcHBlcgotKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotKwlsaWJleHQ9bGliCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotKwlzaHJleHRfY21kcz0iLmRsbCIKLSsJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JwotKwkjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgotKwlvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJwotKwkjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgotKwlvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCi0rCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rCTs7Ci0rICAgICAgZXNhYwotICAgICAgIDs7Ci0gCi0gICAgIGRhcndpbiogfCByaGFwc29keSopCi1AQCAtOTIzMSw3ICs5ODEyLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KLSAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQotLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJwotICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCi1AQCAtOTIzOSw3ICs5ODIwLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgIGhwdXg5KikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0gICAgICAgZWxzZQotIAlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRMRCAtYiArYiAkaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotICAgICAgIGZpCi1AQCAtOTI1NSw3ICs5ODM2LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgIGhwdXgxMCopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAgICAgICBlbHNlCi0gCWFyY2hpdmVfY21kcz0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKLSAgICAgICBmaQotQEAgLTkyNzksMTAgKzk4NjAsMTAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAlpYTY0KikKLS0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCSopCi0tCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJZXNhYwotICAgICAgIGVsc2UKLUBAIC05MzYxLDIzICs5OTQyLDM2IEBAIGZpCi0gCi0gICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCSMgVHJ5IHRvIHVzZSB0aGUgLWV4cG9ydGVkX3N5bWJvbCBsZCBvcHRpb24sIGlmIGl0IGRvZXMgbm90Ci0gCSMgd29yaywgYXNzdW1lIHRoYXQgLWV4cG9ydHNfZmlsZSBkb2VzIG5vdCB3b3JrIGVpdGhlciBhbmQKLSAJIyBpbXBsaWNpdGx5IGV4cG9ydCBhbGwgc3ltYm9scy4KLS0gICAgICAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCi0tICAgICAgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCi0tICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCi0rCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgotKwkgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCi0rCSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0taW50IGZvbyh2b2lkKSB7fQotK2ludCBmb28gKHZvaWQpIHsgcmV0dXJuIDA7IH0KLSBfQUNFT0YKLSBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0tICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0tCi0rICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD15ZXMKLStlbHNlCi0rICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD1ubwotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0tICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgotKyAgICAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNjsgfQotKwlpZiB0ZXN0ICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID0geWVzOyB0aGVuCi0rICAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWZpCi0gICAgICAgZWxzZQotIAlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLUBAIC05NDYyLDcgKzEwMDU2LDcgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIG9zZjQqIHwgb3NmNSopCSMgYXMgb3NmMyogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZwotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwotICAgICAgIGVsc2UKLSAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCi1AQCAtOTQ4MSw5ICsxMDA3NSw5IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICAgIG5vX3VuZGVmaW5lZF9mbGFnPScgLXogZGVmcycKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotIAl3bGFyYz0nJHt3bH0nCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+Ci0tCSAgJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKLSsJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKLSAgICAgICBlbHNlCi0gCWNhc2UgYCRDQyAtViAyPiYxYCBpbgotIAkqIkNvbXBpbGVycyA1LjAiKikKLUBAIC0xMDA1OSw4ICsxMDY1Myw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgIG5lZWRfdmVyc2lvbj1ubwotICAgbmVlZF9saWJfcHJlZml4PW5vCi0gCi0tICBjYXNlICRHQ0MsJGhvc3Rfb3MgaW4KLS0gIHllcyxjeWd3aW4qIHwgeWVzLG1pbmd3KiB8IHllcyxwdzMyKiB8IHllcyxjZWdjYyopCi0rICBjYXNlICRHQ0MsJGNjX2Jhc2VuYW1lIGluCi0rICB5ZXMsKikKLSsgICAgIyBnY2MKLSAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKLSAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwotICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLUBAIC0xMDA5MywxMyArMTA2ODgsNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSAgICAgICA7OwotICAgICBlc2FjCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0rICAgIDs7Ci0rCi0rICAqLGNsKikKLSsgICAgIyBOYXRpdmUgTVNWQwotKyAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJwotKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0rICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJwotKwotKyAgICBjYXNlICRidWlsZF9vcyBpbgotKyAgICBtaW5ndyopCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQotKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKLSsgICAgICBJRlM9JzsnCi0rICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgotKyAgICAgIGRvCi0rICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCi0rICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgotKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCi0rICAgICAgZG9uZQotKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKLSsgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFthLXpBLVpdXFwpOnwgL1xcMXxnJyAtZSAnc3xeIHx8J2AKLSsgICAgICA7OwotKyAgICBjeWd3aW4qKQotKyAgICAgICMgQ29udmVydCB0byB1bml4IGZvcm0sIHRoZW4gdG8gZG9zIGZvcm0sIHRoZW4gYmFjayB0byB1bml4IGZvcm0KLSsgICAgICAjIGJ1dCB0aGlzIHRpbWUgZG9zIHN0eWxlIChubyBzcGFjZXMhKSBzbyB0aGF0IHRoZSB1bml4IGZvcm0gbG9va3MKLSsgICAgICAjIGxpa2UgL2N5Z2RyaXZlL2MvUFJPR1JBfjE6L2N5Z2RyLi4uCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRMSUIiYAotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS1kb3MgIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIDI+L2Rldi9udWxsYAotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0rICAgICAgOzsKLSsgICAgKikKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCi0rICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsOyB0aGVuCi0rICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRILgotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKLSsgICAgICBlbHNlCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0rICAgICAgZmkKLSsgICAgICAjIEZJWE1FOiBmaW5kIHRoZSBzaG9ydCBuYW1lIG9yIHRoZSBwYXRoIGNvbXBvbmVudHMsIGFzIHNwYWNlcyBhcmUKLSsgICAgICAjIGNvbW1vbi4gKGUuZy4gIlByb2dyYW0gRmlsZXMiIC0+ICJQUk9HUkF+MSIpCi0rICAgICAgOzsKLSsgICAgZXNhYwotKwotKyAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCi0rICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+Ci0rICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgotKyAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgotKyAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZScKLSsgICAgcG9zdHVuaW5zdGFsbF9jbWRzPSdkbGRsbD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGZpbGU7IGVjaG8gXCRkbG5hbWUnXCcnYH4KLSsgICAgICBkbHBhdGg9JGRpci9cJGRsZGxsfgotKyAgICAgICAkUk0gXCRkbHBhdGgnCi0rICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxpbmsuZXhlJwotICAgICA7OwotIAotICAgKikKLSsgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCi0gICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotICAgICA7OwotICAgZXNhYwotLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgotICAgc2hsaWJwYXRoX3Zhcj1QQVRICi0gICA7OwotQEAgLTEwMTkxLDcgKzEwODQ0LDcgQEAgaGFpa3UqKQotICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKLSAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICi0gICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0tICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3QvYmVvcy9zeXN0ZW0vbGliJwotKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L3N5c3RlbS9saWInCi0gICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCi0gICA7OwotIAotQEAgLTExMDMxLDEwICsxMTY4NCwxMCBAQCBlbHNlCi0gLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAotICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KLSAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKLS12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLSAjZW5kaWYKLSAKLS12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KLStpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KLSBpbnQgbWFpbiAoKQotIHsKLSAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwotQEAgLTExMTM3LDEwICsxMTc5MCwxMCBAQCBlbHNlCi0gLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAotICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KLSAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKLS12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLSAjZW5kaWYKLSAKLS12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KLStpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KLSBpbnQgbWFpbiAoKQotIHsKLSAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwotQEAgLTE1NDI1LDEzICsxNjA3OCwyMCBAQCBleGVleHQ9J2AkRUNITyAiJGV4ZWV4dCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfdW5zZXQ9J2AkRUNITyAiJGx0X3Vuc2V0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9TUDJOTD0nYCRFQ0hPICIkbHRfU1AyTkwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X05MMlNQPSdgJEVDSE8gIiRsdF9OTDJTUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfY3ZfdG9faG9zdF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gcmVsb2FkX2ZsYWc9J2AkRUNITyAiJHJlbG9hZF9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSByZWxvYWRfY21kcz0nYCRFQ0hPICIkcmVsb2FkX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIE9CSkRVTVA9J2AkRUNITyAiJE9CSkRVTVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSdgJEVDSE8gIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZmlsZV9tYWdpY19jbWQ9J2AkRUNITyAiJGZpbGVfbWFnaWNfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStmaWxlX21hZ2ljX2dsb2I9J2AkRUNITyAiJGZpbGVfbWFnaWNfZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rd2FudF9ub2Nhc2VnbG9iPSdgJEVDSE8gIiR3YW50X25vY2FzZWdsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK0RMTFRPT0w9J2AkRUNITyAiJERMTFRPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSdgJEVDSE8gIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gQVI9J2AkRUNITyAiJEFSIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBBUl9GTEFHUz0nYCRFQ0hPICIkQVJfRkxBR1MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2FyY2hpdmVyX2xpc3Rfc3BlYz0nYCRFQ0hPICIkYXJjaGl2ZXJfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBTVFJJUD0nYCRFQ0hPICIkU1RSSVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIFJBTkxJQj0nYCRFQ0hPICIkUkFOTElCIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBvbGRfcG9zdGluc3RhbGxfY21kcz0nYCRFQ0hPICIkb2xkX3Bvc3RpbnN0YWxsX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTE1NDQ2LDE0ICsxNjEwNiwxNyBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRTRUQgIiRkZQotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStubV9maWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkbm1fZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X3N5c3Jvb3Q9J2AkRUNITyAiJGx0X3N5c3Jvb3QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG9iamRpcj0nYCRFQ0hPICIkb2JqZGlyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBNQUdJQ19DTUQ9J2AkRUNITyAiJE1BR0lDX0NNRCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWc9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLS1sdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9waWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfY3ZfcHJvZ19jb21waWxlcl9jX289J2AkRUNITyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBuZWVkX2xvY2tzPSdgJEVDSE8gIiRuZWVkX2xvY2tzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStNQU5JRkVTVF9UT09MPSdgJEVDSE8gIiRNQU5JRkVTVF9UT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBEU1lNVVRJTD0nYCRFQ0hPICIkRFNZTVVUSUwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIE5NRURJVD0nYCRFQ0hPICIkTk1FRElUIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBMSVBPPSdgJEVDSE8gIiRMSVBPIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xNTQ4NiwxMiArMTYxNDksMTIgQEAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj0nYCRFQ0hPICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3EKLSBoYXJkY29kZV9hdXRvbWF0aWM9J2AkRUNITyAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gaW5oZXJpdF9ycGF0aD0nYCRFQ0hPICIkaW5oZXJpdF9ycGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbGlua19hbGxfZGVwbGlicz0nYCRFQ0hPICIkbGlua19hbGxfZGVwbGlicyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0tZml4X3NyY2ZpbGVfcGF0aD0nYCRFQ0hPICIkZml4X3NyY2ZpbGVfcGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSdgJEVDSE8gIiRhbHdheXNfZXhwb3J0X3N5bWJvbHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGV4cG9ydF9zeW1ib2xzX2NtZHM9J2AkRUNITyAiJGV4cG9ydF9zeW1ib2xzX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGV4Y2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkZXhjbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBpbmNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gcHJlbGlua19jbWRzPSdgJEVDSE8gIiRwcmVsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK3Bvc3RsaW5rX2NtZHM9J2AkRUNITyAiJHBvc3RsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRmaWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbms9J2AkRUNITyAiJHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBuZWVkX2xpYl9wcmVmaXg9J2AkRUNITyAiJG5lZWRfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTU1NDYsOCArMTYyMDksMTMgQEAgcmVsb2FkX2ZsYWcgXAotIE9CSkRVTVAgXAotIGRlcGxpYnNfY2hlY2tfbWV0aG9kIFwKLSBmaWxlX21hZ2ljX2NtZCBcCi0rZmlsZV9tYWdpY19nbG9iIFwKLSt3YW50X25vY2FzZWdsb2IgXAotK0RMTFRPT0wgXAotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIFwKLSBBUiBcCi0gQVJfRkxBR1MgXAotK2FyY2hpdmVyX2xpc3Rfc3BlYyBcCi0gU1RSSVAgXAotIFJBTkxJQiBcCi0gQ0MgXAotQEAgLTE1NTU3LDEyICsxNjIyNSwxNCBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFwKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCBcCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MgXAotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXggXAotK25tX2ZpbGVfbGlzdF9zcGVjIFwKLSBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyBcCi0tbHRfcHJvZ19jb21waWxlcl93bCBcCi0gbHRfcHJvZ19jb21waWxlcl9waWMgXAotK2x0X3Byb2dfY29tcGlsZXJfd2wgXAotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIFwKLSBsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyBcCi0gbmVlZF9sb2NrcyBcCi0rTUFOSUZFU1RfVE9PTCBcCi0gRFNZTVVUSUwgXAotIE5NRURJVCBcCi0gTElQTyBcCi1AQCAtMTU1NzgsNyArMTYyNDgsNiBAQCBub191bmRlZmluZWRfZmxhZyBcCi0gaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBcCi0gaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCBcCi0gaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciBcCi0tZml4X3NyY2ZpbGVfcGF0aCBcCi0gZXhjbHVkZV9leHBzeW1zIFwKLSBpbmNsdWRlX2V4cHN5bXMgXAotIGZpbGVfbGlzdF9zcGVjIFwKLUBAIC0xNTYxNCw2ICsxNjI4Myw3IEBAIG1vZHVsZV9jbWRzIFwKLSBtb2R1bGVfZXhwc3ltX2NtZHMgXAotIGV4cG9ydF9zeW1ib2xzX2NtZHMgXAotIHByZWxpbmtfY21kcyBcCi0rcG9zdGxpbmtfY21kcyBcCi0gcG9zdGluc3RhbGxfY21kcyBcCi0gcG9zdHVuaW5zdGFsbF9jbWRzIFwKLSBmaW5pc2hfY21kcyBcCi1AQCAtMTYzNzgsNyArMTcwNDgsOCBAQCAkYXNfZWNobyBYIiRmaWxlIiB8Ci0gIyBOT1RFOiBDaGFuZ2VzIG1hZGUgdG8gdGhpcyBmaWxlIHdpbGwgYmUgbG9zdDogbG9vayBhdCBsdG1haW4uc2guCi0gIwotICMgICBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsCi0tIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsjICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSsjICAgICAgICAgICAgICAgICBJbmMuCi0gIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKLSAjCi0gIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sLgotQEAgLTE2NDgxLDE5ICsxNzE1Miw0MiBAQCBTUDJOTD0kbHRfbHRfU1AyTkwKLSAjIHR1cm4gbmV3bGluZXMgaW50byBzcGFjZXMuCi0gTkwyU1A9JGx0X2x0X05MMlNQCi0gCi0rIyBjb252ZXJ0IFwkYnVpbGQgZmlsZSBuYW1lcyB0byBcJGhvc3QgZm9ybWF0LgotK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKLSsKLSsjIGNvbnZlcnQgXCRidWlsZCBmaWxlcyB0byB0b29sY2hhaW4gZm9ybWF0LgotK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKLSsKLSAjIEFuIG9iamVjdCBzeW1ib2wgZHVtcGVyLgotIE9CSkRVTVA9JGx0X09CSkRVTVAKLSAKLSAjIE1ldGhvZCB0byBjaGVjayB3aGV0aGVyIGRlcGVuZGVudCBsaWJyYXJpZXMgYXJlIHNoYXJlZCBvYmplY3RzLgotIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9kZXBsaWJzX2NoZWNrX21ldGhvZAotIAotLSMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9PSAiZmlsZV9tYWdpYyIuCi0rIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgotIGZpbGVfbWFnaWNfY21kPSRsdF9maWxlX21hZ2ljX2NtZAotIAotKyMgSG93IHRvIGZpbmQgcG90ZW50aWFsIGZpbGVzIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCi0rZmlsZV9tYWdpY19nbG9iPSRsdF9maWxlX21hZ2ljX2dsb2IKLSsKLSsjIEZpbmQgcG90ZW50aWFsIGZpbGVzIHVzaW5nIG5vY2FzZWdsb2Igd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KLSt3YW50X25vY2FzZWdsb2I9JGx0X3dhbnRfbm9jYXNlZ2xvYgotKwotKyMgRExMIGNyZWF0aW9uIHByb2dyYW0uCi0rRExMVE9PTD0kbHRfRExMVE9PTAotKwotKyMgQ29tbWFuZCB0byBhc3NvY2lhdGUgc2hhcmVkIGFuZCBsaW5rIGxpYnJhcmllcy4KLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKLSsKLSAjIFRoZSBhcmNoaXZlci4KLSBBUj0kbHRfQVIKLSsKLSsjIEZsYWdzIHRvIGNyZWF0ZSBhbiBhcmNoaXZlLgotIEFSX0ZMQUdTPSRsdF9BUl9GTEFHUwotIAotKyMgSG93IHRvIGZlZWQgYSBmaWxlIGxpc3RpbmcgdG8gdGhlIGFyY2hpdmVyLgotK2FyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfYXJjaGl2ZXJfbGlzdF9zcGVjCi0rCi0gIyBBIHN5bWJvbCBzdHJpcHBpbmcgcHJvZ3JhbS4KLSBTVFJJUD0kbHRfU1RSSVAKLSAKLUBAIC0xNjUyMyw2ICsxNzIxNywxMiBAQCBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcwotICMgVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBDIG5hbWUgYWRkcmVzcyBwYWlyIHdoZW4gbGliIHByZWZpeCBpcyBuZWVkZWQuCi0gZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4Ci0gCi0rIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMgZm9yIFwkTk0uCi0rbm1fZmlsZV9saXN0X3NwZWM9JGx0X25tX2ZpbGVfbGlzdF9zcGVjCi0rCi0rIyBUaGUgcm9vdCB3aGVyZSB0byBzZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMsYW5kIGluIHdoaWNoIG91ciBsaWJyYXJpZXMgc2hvdWxkIGJlIGluc3RhbGxlZC4KLStsdF9zeXNyb290PSRsdF9zeXNyb290Ci0rCi0gIyBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgdGVtcG9yYXJ5IGxpYnRvb2wgZmlsZXMuCi0gb2JqZGlyPSRvYmpkaXIKLSAKLUBAIC0xNjUzMiw2ICsxNzIzMiw5IEBAIE1BR0lDX0NNRD0kTUFHSUNfQ01ECi0gIyBNdXN0IHdlIGxvY2sgZmlsZXMgd2hlbiBkb2luZyBjb21waWxhdGlvbj8KLSBuZWVkX2xvY2tzPSRsdF9uZWVkX2xvY2tzCi0gCi0rIyBNYW5pZmVzdCB0b29sLgotK01BTklGRVNUX1RPT0w9JGx0X01BTklGRVNUX1RPT0wKLSsKLSAjIFRvb2wgdG8gbWFuaXB1bGF0ZSBhcmNoaXZlZCBEV0FSRiBkZWJ1ZyBzeW1ib2wgZmlsZXMgb24gTWFjIE9TIFguCi0gRFNZTVVUSUw9JGx0X0RTWU1VVElMCi0gCi1AQCAtMTY2NDYsMTIgKzE3MzQ5LDEyIEBAIHdpdGhfZ2NjPSRHQ0MKLSAjIENvbXBpbGVyIGZsYWcgdG8gdHVybiBvZmYgYnVpbHRpbiBmdW5jdGlvbnMuCi0gbm9fYnVpbHRpbl9mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZwotIAotLSMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KLS13bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAotLQotICMgQWRkaXRpb25hbCBjb21waWxlciBmbGFncyBmb3IgYnVpbGRpbmcgbGlicmFyeSBvYmplY3RzLgotIHBpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3BpYwotIAotKyMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KLSt3bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAotKwotICMgQ29tcGlsZXIgZmxhZyB0byBwcmV2ZW50IGR5bmFtaWMgbGlua2luZy4KLSBsaW5rX3N0YXRpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3N0YXRpYwotIAotQEAgLTE2NzM4LDkgKzE3NDQxLDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aAotICMgV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzLgotIGxpbmtfYWxsX2RlcGxpYnM9JGxpbmtfYWxsX2RlcGxpYnMKLSAKLS0jIEZpeCB0aGUgc2hlbGwgdmFyaWFibGUgXCRzcmNmaWxlIGZvciB0aGUgY29tcGlsZXIuCi0tZml4X3NyY2ZpbGVfcGF0aD0kbHRfZml4X3NyY2ZpbGVfcGF0aAotLQotICMgU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkLgotIGFsd2F5c19leHBvcnRfc3ltYm9scz0kYWx3YXlzX2V4cG9ydF9zeW1ib2xzCi0gCi1AQCAtMTY3NTYsNiArMTc0NTYsOSBAQCBpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltcwotICMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXMuCi0gcHJlbGlua19jbWRzPSRsdF9wcmVsaW5rX2NtZHMKLSAKLSsjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgZmluaXNoaW5nIGxpbmtpbmcgcHJvZ3JhbXMuCi0rcG9zdGxpbmtfY21kcz0kbHRfcG9zdGxpbmtfY21kcwotKwotICMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzLgotIGZpbGVfbGlzdF9zcGVjPSRsdF9maWxlX2xpc3Rfc3BlYwotIAotQEAgLTE2Nzg4LDIxMCArMTc0OTEsMTY5IEBAIGx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgotICAgIyBpZiBmaW5kcyBtaXhlZCBDUi9MRiBhbmQgTEYtb25seSBsaW5lcy4gIFNpbmNlIHNlZCBvcGVyYXRlcyBpbgotICAgIyB0ZXh0IG1vZGUsIGl0IHByb3Blcmx5IGNvbnZlcnRzIGxpbmVzIHRvIENSL0xGLiAgVGhpcyBiYXNoIHByb2JsZW0KLSAgICMgaXMgcmVwb3J0ZWRseSBmaXhlZCwgYnV0IHdoeSBub3QgcnVuIG9uIG9sZCB2ZXJzaW9ucyB0b28/Ci0tICBzZWQgJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotLQotLSAgY2FzZSAkeHNpX3NoZWxsIGluCi0tICB5ZXMpCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLWZ1bmNfZGlybmFtZSAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0tICBlc2FjCi0tfQotLQotLSMgZnVuY19iYXNlbmFtZSBmaWxlCi0tZnVuY19iYXNlbmFtZSAoKQotLXsKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKLS19Ci0tCi0tIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KLS0jIGNhbGw6Ci0tIyAgIGRpcm5hbWU6ICBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwKLS0jICAgICAgICAgICAgIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwgb3RoZXJ3aXNlIHNldCByZXN1bHQKLS0jICAgICAgICAgICAgIHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS0jICAgICAgICAgICAgIHZhbHVlIHJldHVybmVkIGluICIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKLS0jICAgYmFzZW5hbWU6IENvbXB1dGUgZmlsZW5hbWUgb2YgRklMRS4KLS0jICAgICAgICAgICAgIHZhbHVlIHJldHVuZWQgaW4gIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLS0jIEltcGxlbWVudGF0aW9uIG11c3QgYmUga2VwdCBzeW5jaHJvbml6ZWQgd2l0aCBmdW5jX2Rpcm5hbWUKLS0jIGFuZCBmdW5jX2Jhc2VuYW1lLiBGb3IgZWZmaWNpZW5jeSwgd2UgZG8gbm90IGRlbGVnYXRlIHRvCi0tIyB0aG9zZSBmdW5jdGlvbnMgYnV0IGluc3RlYWQgZHVwbGljYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGhlcmUuCi0tZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0tICBlc2FjCi0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCi0tfQotLQotLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCi0tIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KLS0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZwotLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KLS1mdW5jX3N0cmlwbmFtZSAoKQotLXsKLS0gICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKLS0gICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC4KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9Ci0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In0KLS19Ci0tCi0tIyBmdW5jX29wdF9zcGxpdAotLWZ1bmNfb3B0X3NwbGl0ICgpCi0tewotLSAgZnVuY19vcHRfc3BsaXRfb3B0PSR7MSUlPSp9Ci0tICBmdW5jX29wdF9zcGxpdF9hcmc9JHsxIyo9fQotLX0KLS0KLS0jIGZ1bmNfbG8ybyBvYmplY3QKLS1mdW5jX2xvMm8gKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKLS0gICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7Ci0tICBlc2FjCi0tfQotLQotLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCi0tZnVuY194Zm9ybSAoKQotLXsKLS0gIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG8KLS19Ci0tCi0tIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotLWZ1bmNfYXJpdGggKCkKLS17Ci0tICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSkKLS19Ci0tCi0tIyBmdW5jX2xlbiBzdHJpbmcKLS0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi0tZnVuY19sZW4gKCkKLS17Ci0tICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX0KLS19Ci0tCi0tX0xUX0VPRgotLSAgICA7OwotLSAgKikgIyBCb3VybmUgY29tcGF0aWJsZSBmdW5jdGlvbnMuCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLWZ1bmNfZGlybmFtZSAoKQotLXsKLS0gICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCi0tICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkZGlybmFtZSJgCi0tICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgotLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgotLSAgZWxzZQotLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCi0tICBmaQotLX0KLS0KLS0jIGZ1bmNfYmFzZW5hbWUgZmlsZQotLWZ1bmNfYmFzZW5hbWUgKCkKLS17Ci0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGJhc2VuYW1lImAKLS19Ci0tCi0tCi0tIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLS0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0tIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0tIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotLSMgZnVuY19zdHJpcF9zdWZmaXggcHJlZml4IG5hbWUKLS1mdW5jX3N0cmlwbmFtZSAoKQotLXsKLS0gIGNhc2UgJHsyfSBpbgotLSAgICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OwotLSAgICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7Ci0tICBlc2FjCi0tfQotLQotLSMgc2VkIHNjcmlwdHM6Ci0tbXlfc2VkX2xvbmdfb3B0PScxcy9eXCgtW149XSpcKT0uKi9cMS87cScKLS1teV9zZWRfbG9uZ19hcmc9JzFzL14tW149XSo9Ly8nCi0tCi0tIyBmdW5jX29wdF9zcGxpdAotLWZ1bmNfb3B0X3NwbGl0ICgpCi0tewotLSAgZnVuY19vcHRfc3BsaXRfb3B0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfb3B0ImAKLS0gIGZ1bmNfb3B0X3NwbGl0X2FyZz1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX2FyZyJgCi0tfQotLQotLSMgZnVuY19sbzJvIG9iamVjdAotLWZ1bmNfbG8ybyAoKQotLXsKLS0gIGZ1bmNfbG8yb19yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRsbzJvImAKLS19Ci0tCi0tIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLS1mdW5jX3hmb3JtICgpCi0tewotLSAgZnVuY194Zm9ybV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgJ3MvXC5bXi5dKiQvLmxvLydgCi0tfQotLQotLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KLS1mdW5jX2FyaXRoICgpCi0tewotLSAgZnVuY19hcml0aF9yZXN1bHQ9YGV4cHIgIiRAImAKLS19Ci0tCi0tIyBmdW5jX2xlbiBzdHJpbmcKLS0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi0tZnVuY19sZW4gKCkKLS17Ci0tICBmdW5jX2xlbl9yZXN1bHQ9YGV4cHIgIiQxIiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCi0tfQotLQotLV9MVF9FT0YKLS1lc2FjCi0tCi0tY2FzZSAkbHRfc2hlbGxfYXBwZW5kIGluCi0tICB5ZXMpCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKLS0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KLS1mdW5jX2FwcGVuZCAoKQotLXsKLS0gIGV2YWwgIiQxKz1cJDIiCi0tfQotLV9MVF9FT0YKLS0gICAgOzsKLS0gICopCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKLS0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KLS1mdW5jX2FwcGVuZCAoKQotLXsKLS0gIGV2YWwgIiQxPVwkJDFcJDIiCi0tfQotLQotLV9MVF9FT0YKLS0gICAgOzsKLS0gIGVzYWMKLS0KLS0KLS0gIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLS0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLS0KLS0gIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKLSsgIHNlZCAnJHEnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLSsgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0rCi0rICBpZiB0ZXN0IHgiJHhzaV9zaGVsbCIgPSB4eWVzOyB0aGVuCi0rICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lIC9jXAotK2Z1bmNfZGlybmFtZSAoKVwKLSt7XAotK1wgICAgY2FzZSAkezF9IGluXAotK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKLStcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKLStcICAgIGVzYWNcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Jhc2VuYW1lIC9jXAotK2Z1bmNfYmFzZW5hbWUgKClcCi0re1wKLStcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAvY1wKLStmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpXAotK3tcCi0rXCAgICBjYXNlICR7MX0gaW5cCi0rXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAotK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAotK1wgICAgZXNhY1wKLStcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3N0cmlwbmFtZSAoKSQvLC9efSAjIGZ1bmNfc3RyaXBuYW1lIC9jXAotK2Z1bmNfc3RyaXBuYW1lICgpXAotK3tcCi0rXCAgICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlXAotK1wgICAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LlwKLStcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9XAotK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In1cCi0rXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zdHJpcG5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3NwbGl0X2xvbmdfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9sb25nX29wdCAvY1wKLStmdW5jX3NwbGl0X2xvbmdfb3B0ICgpXAotK3tcCi0rXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWU9JHsxJSU9Kn1cCi0rXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZz0kezEjKj19XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X2xvbmdfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19zcGxpdF9zaG9ydF9vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X3Nob3J0X29wdCAvY1wKLStmdW5jX3NwbGl0X3Nob3J0X29wdCAoKVwKLSt7XAotK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnPSR7MSM/P31cCi0rXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lPSR7MSUiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyJ9XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X3Nob3J0X29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfbG8ybyAoKSQvLC9efSAjIGZ1bmNfbG8ybyAvY1wKLStmdW5jX2xvMm8gKClcCi0re1wKLStcICAgIGNhc2UgJHsxfSBpblwKLStcICAgICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOztcCi0rXCAgICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7O1wKLStcICAgIGVzYWNcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbG8ybyBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfeGZvcm0gKCkkLywvXn0gIyBmdW5jX3hmb3JtIC9jXAotK2Z1bmNfeGZvcm0gKClcCi0re1wKLSsgICAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sb1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY194Zm9ybSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfYXJpdGggKCkkLywvXn0gIyBmdW5jX2FyaXRoIC9jXAotK2Z1bmNfYXJpdGggKClcCi0re1wKLSsgICAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FyaXRoIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19sZW4gKCkkLywvXn0gIyBmdW5jX2xlbiAvY1wKLStmdW5jX2xlbiAoKVwKLSt7XAotKyAgICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbGVuIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rZmkKLSsKLStpZiB0ZXN0IHgiJGx0X3NoZWxsX2FwcGVuZCIgPSB4eWVzOyB0aGVuCi0rICBzZWQgLWUgJy9eZnVuY19hcHBlbmQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZCAvY1wKLStmdW5jX2FwcGVuZCAoKVwKLSt7XAotKyAgICBldmFsICIkezF9Kz1cXCR7Mn0iXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kX3F1b3RlZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kX3F1b3RlZCAvY1wKLStmdW5jX2FwcGVuZF9xdW90ZWQgKClcCi0re1wKLStcICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR7Mn0iXAotK1wgICAgZXZhbCAiJHsxfSs9XFxcXCBcXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kX3F1b3RlZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIHdoZXJlIHBvc3NpYmxlIGJ5IGRpcmVjdCB1c2Ugb2YgJys9JwotKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMSs9IiVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCi0rICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotK2Vsc2UKLSsgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCBldmVuIHdoZW4gJys9JyBpcyBub3QgYXZhaWxhYmxlCi0rICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxPSIkXDElZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAotKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLStmaQotKwotK2lmIHRlc3QgeCIkX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbCIgPSB4IjoiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mMjt9Ci0rZmkKLSsKLSsKLSsgICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8Ci0gICAgIChybSAtZiAiJG9maWxlIiAmJiBjcCAiJGNmZ2ZpbGUiICIkb2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZSIpCi0gICBjaG1vZCAreCAiJG9maWxlIgotIAotZGlmZiAtLWdpdCBhL2dwcm9mL2NvbmZpZ3VyZSBiL2dwcm9mL2NvbmZpZ3VyZQotaW5kZXggMzhhNGMwYjBlNS4uMzhkMWY2OTljNyAxMDA3NTUKLS0tLSBhL2dwcm9mL2NvbmZpZ3VyZQotKysrIGIvZ3Byb2YvY29uZmlndXJlCi1AQCAtNjMxLDggKzYzMSwxMSBAQCBPVE9PTAotIExJUE8KLSBOTUVESVQKLSBEU1lNVVRJTAotK01BTklGRVNUX1RPT0wKLSBSQU5MSUIKLSthY19jdF9BUgotIEFSCi0rRExMVE9PTAotIE9CSkRVTVAKLSBMTl9TCi0gTk0KLUBAIC03NDQsNiArNzQ3LDcgQEAgZW5hYmxlX3N0YXRpYwotIHdpdGhfcGljCi0gZW5hYmxlX2Zhc3RfaW5zdGFsbAotIHdpdGhfZ251X2xkCi0rd2l0aF9saWJ0b29sX3N5c3Jvb3QKLSBlbmFibGVfbGlidG9vbF9sb2NrCi0gZW5hYmxlX3BsdWdpbnMKLSBlbmFibGVfbGFyZ2VmaWxlCi1AQCAtMTQwMiw2ICsxNDA2LDggQEAgT3B0aW9uYWwgUGFja2FnZXM6Ci0gICAtLXdpdGgtcGljICAgICAgICAgICAgICB0cnkgdG8gdXNlIG9ubHkgUElDL25vbi1QSUMgb2JqZWN0cyBbZGVmYXVsdD11c2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdGhdCi0gICAtLXdpdGgtZ251LWxkICAgICAgICAgICBhc3N1bWUgdGhlIEMgY29tcGlsZXIgdXNlcyBHTlUgbGQgW2RlZmF1bHQ9bm9dCi0rICAtLXdpdGgtbGlidG9vbC1zeXNyb290PURJUiBTZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMgd2l0aGluIERJUgotKyAgICAgICAgICAgICAgICAgICAgICAgIChvciB0aGUgY29tcGlsZXIncyBzeXNyb290IGlmIG5vdCBzcGVjaWZpZWQpLgotIAotIFNvbWUgaW5mbHVlbnRpYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzOgotICAgQ0MgICAgICAgICAgQyBjb21waWxlciBjb21tYW5kCi1AQCAtNDgzNiw4ICs0ODQyLDggQEAgZXNhYwotIAotIAotIAotLW1hY3JvX3ZlcnNpb249JzIuMi43YScKLS1tYWNyb19yZXZpc2lvbj0nMS4zMTM0JwotK21hY3JvX3ZlcnNpb249JzIuNCcKLSttYWNyb19yZXZpc2lvbj0nMS4zMjkzJwotIAotIAotIAotQEAgLTQ4NzcsNyArNDg4Myw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncyIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MuLi4gIiA+JjY7IH0KLSAjIFRlc3QgcHJpbnQgZmlyc3QsIGJlY2F1c2UgaXQgd2lsbCBiZSBhIGJ1aWx0aW4gaWYgcHJlc2VudC4KLS1pZiB0ZXN0ICJYYHByaW50IC1yIC0tIC1uIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAotK2lmIHRlc3QgIlhgKCBwcmludCAtciAtLSAtbiApIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAotICAgIHRlc3QgIlhgcHJpbnQgLXIgLS0gJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCi0gICBFQ0hPPSdwcmludCAtciAtLScKLSBlbGlmIHRlc3QgIlhgcHJpbnRmICVzICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgotQEAgLTU1NjMsOCArNTU2OSw4IEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIHNoZWxsIHVuZGVyc3RhbmRzIHNvbWUgWFNJIGNvbnN0cnVjdHMuLi4gIiA+JjY7Ci0gIyBUcnkgc29tZSBYU0kgZmVhdHVyZXMKLSB4c2lfc2hlbGw9bm8KLSAoIF9sdF9kdW1teT0iYS9iL2MiCi0tICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwiJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAotLSAgICAgID0gYyxhL2IsLCBcCi0rICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwke19sdF9kdW1teSM/P30iJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAotKyAgICAgID0gYyxhL2IsYi9jLCBcCi0gICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKLSAgICAgJiYgdGVzdCAiJHsjX2x0X2R1bW15fSIgLWVxIDUnICkgPi9kZXYvbnVsbCAyPiYxIFwKLSAgICYmIHhzaV9zaGVsbD15ZXMKLUBAIC01NjEzLDYgKzU2MTksODAgQEAgZXNhYwotIAotIAotIAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBjYXNlICRob3N0IGluCi0rICAqLSotbWluZ3cqICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICAgICotKi1jeWd3aW4qICkKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4Ci0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b193MzIKLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLSsgICotKi1jeWd3aW4qICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luCi0rICAgICAgICA7OwotKyAgICAgICotKi1jeWd3aW4qICkKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotKyAgICAgICAgOzsKLSsgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4Ci0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4KLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLSsgICogKSAjIHVuaGFuZGxlZCBob3N0cyAoYW5kICJub3JtYWwiIG5hdGl2ZSBidWlsZHMpCi0rICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotKyAgICA7OwotK2VzYWMKLSsKLStmaQotKwotK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY2OyB9Ci0rCi0rCi0rCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0Li4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl90b190b29sX2ZpbGVfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgI2Fzc3VtZSBvcmRpbmFyeSBjcm9zcyB0b29scywgb3IgbmF0aXZlIGJ1aWxkLgotK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotK2Nhc2UgJGhvc3QgaW4KLSsgICotKi1taW5ndyogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLStlc2FjCi0rCi0rZmkKLSsKLSt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNjsgfQotKwotKwotKwotKwotKwotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcyIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcy4uLiAiID4mNjsgfQotIGlmIHRlc3QgIiR7bHRfY3ZfbGRfcmVsb2FkX2ZsYWcrc2V0fSIgPSBzZXQ7IHRoZW4gOgotQEAgLTU2MjksNiArNTcwOSwxMSBAQCBjYXNlICRyZWxvYWRfZmxhZyBpbgotIGVzYWMKLSByZWxvYWRfY21kcz0nJExEJHJlbG9hZF9mbGFnIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCi0gY2FzZSAkaG9zdF9vcyBpbgotKyAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotKyAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KLSsgICAgICByZWxvYWRfY21kcz1mYWxzZQotKyAgICBmaQotKyAgICA7OwotICAgZGFyd2luKikKLSAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAgICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAke3dsfS1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCi1AQCAtNTc5Nyw3ICs1ODgyLDggQEAgbWluZ3cqIHwgcHczMiopCi0gICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIF54ODYgYXJjaGl2ZSBpbXBvcnR8Xng4NiBETEwnCi0gICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJwotICAgZWxzZQotLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCBwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpPycKLSsgICAgIyBLZWVwIHRoaXMgcGF0dGVybiBpbiBzeW5jIHdpdGggdGhlIG9uZSBpbiBmdW5jX3dpbjMyX2xpYmlkLgotKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCAocGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT98cGUtYXJtLXdpbmNlfHBlLXg4Ni02NCknCi0gICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckT0JKRFVNUCAtZicKLSAgIGZpCi0gICA7OwotQEAgLTU4NzQsMTEgKzU5NjAsNiBAQCBsaW51eCogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUpCi0gICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAotICAgOzsKLSAKLS1saW51eC11Y2xpYmMqKQotLSAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKLS0gIGx0X2N2X2ZpbGVfbWFnaWNfdGVzdF9maWxlPWBlY2hvIC9saWIvbGlidUNsaWJjLSouc29gCi0tICA7OwotLQotIG5ldGJzZCopCi0gICBpZiBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8ICRHUkVQIF9fRUxGX18gPiAvZGV2L251bGw7IHRoZW4KLSAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J21hdGNoX3BhdHRlcm4gL2xpYlteL10rKFwuc29cLlswLTldK1wuWzAtOV0rfF9waWNcLmEpJCcKLUBAIC01OTU2LDYgKzYwMzcsMjEgQEAgZXNhYwotIGZpCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY1Ci0gJGFzX2VjaG8gIiRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY2OyB9Ci0rCi0rZmlsZV9tYWdpY19nbG9iPQotK3dhbnRfbm9jYXNlZ2xvYj1ubwotK2lmIHRlc3QgIiRidWlsZCIgPSAiJGhvc3QiOyB0aGVuCi0rICBjYXNlICRob3N0X29zIGluCi0rICBtaW5ndyogfCBwdzMyKikKLSsgICAgaWYgKCBzaG9wdCB8IGdyZXAgbm9jYXNlZ2xvYiApID4vZGV2L251bGwgMj4mMTsgdGhlbgotKyAgICAgIHdhbnRfbm9jYXNlZ2xvYj15ZXMKLSsgICAgZWxzZQotKyAgICAgIGZpbGVfbWFnaWNfZ2xvYj1gZWNobyBhQWJCY0NkRGVFZkZnR2hIaUlqSmtLbExtTW5Ob09wUHFRclJzU3RUdVV2VndXeFh5WXpaIHwgJFNFRCAtZSAicy9cKC4uXCkvc1wvW1wxXVwvW1wxXVwvZzsvZyJgCi0rICAgIGZpCi0rICAgIDs7Ci0rICBlc2FjCi0rZmkKLSsKLSBmaWxlX21hZ2ljX2NtZD0kbHRfY3ZfZmlsZV9tYWdpY19jbWQKLSBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QKLSB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KLUBAIC01OTcxLDkgKzYwNjcsMTYyIEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgotIAotIAotIAotKwotKwotKwotKwotKwotKwotKwotKwotKwotKwotK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1kbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1kbGx0b29sOyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19ETExUT09MK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX0RMTFRPT0w9IiRETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfRExMVE9PTD0iJHthY190b29sX3ByZWZpeH1kbGx0b29sIgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLStETExUT09MPSRhY19jdl9wcm9nX0RMTFRPT0wKLStpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkRExMVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRETExUT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsKLStmaQotK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX0RMTFRPT0wiOyB0aGVuCi0rICBhY19jdF9ETExUT09MPSRETExUT09MCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSBkbGx0b29sOyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9ETExUT09MK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9IiRhY19jdF9ETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iZGxsdG9vbCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rYWNfY3RfRExMVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MCi0raWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X0RMTFRPT0wiID4mNQotKyRhc19lY2hvICIkYWNfY3RfRExMVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rICBpZiB0ZXN0ICJ4JGFjX2N0X0RMTFRPT0wiID0geDsgdGhlbgotKyAgICBETExUT09MPSJmYWxzZSIKLSsgIGVsc2UKLSsgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgotK3llczopCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KLSthY190b29sX3dhcm5lZD15ZXMgOzsKLStlc2FjCi0rICAgIERMTFRPT0w9JGFjX2N0X0RMTFRPT0wKLSsgIGZpCi0rZWxzZQotKyAgRExMVE9PTD0iJGFjX2N2X3Byb2dfRExMVE9PTCIKLStmaQotKwotK3Rlc3QgLXogIiRETExUT09MIiAmJiBETExUT09MPWRsbHRvb2wKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J3Vua25vd24nCi0rCi0rY2FzZSAkaG9zdF9vcyBpbgotK2N5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSsgICMgdHdvIGRpZmZlcmVudCBzaGVsbCBmdW5jdGlvbnMgZGVmaW5lZCBpbiBsdG1haW4uc2gKLSsgICMgZGVjaWRlIHdoaWNoIHRvIHVzZSBiYXNlZCBvbiBjYXBhYmlsaXRpZXMgb2YgJERMTFRPT0wKLSsgIGNhc2UgYCRETExUT09MIC0taGVscCAyPiYxYCBpbgotKyAgKi0taWRlbnRpZnktc3RyaWN0KikKLSsgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliCi0rICAgIDs7Ci0rICAqKQotKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sKLSsgICAgOzsKLSsgIGVzYWMKLSsgIDs7Ci0rKikKLSsgICMgZmFsbGJhY2s6IGFzc3VtZSBsaW5rbGliIElTIHNoYXJlZGxpYgotKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9IiRFQ0hPIgotKyAgOzsKLStlc2FjCi0rCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjY7IH0KLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKLSt0ZXN0IC16ICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiICYmIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRFQ0hPCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0gaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLS1zZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1hcjsgYWNfd29yZD0kMgotKyAgZm9yIGFjX3Byb2cgaW4gYXIKLSsgIGRvCi0rICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLSBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfQVIrc2V0fSIgPSBzZXQ7IHRoZW4gOgotQEAgLTU5ODksNyArNjIzOCw3IEBAIGRvCi0gICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLS0gICAgYWNfY3ZfcHJvZ19BUj0iJHthY190b29sX3ByZWZpeH1hciIKLSsgICAgYWNfY3ZfcHJvZ19BUj0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCi0gICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotICAgICBicmVhayAyCi0gICBmaQotQEAgLTYwMDksMTEgKzYyNTgsMTUgQEAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KLSBmaQotIAotIAotKyAgICB0ZXN0IC1uICIkQVIiICYmIGJyZWFrCi0rICBkb25lCi0gZmkKLS1pZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19BUiI7IHRoZW4KLStpZiB0ZXN0IC16ICIkQVIiOyB0aGVuCi0gICBhY19jdF9BUj0kQVIKLS0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiYXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotLXNldCBkdW1teSBhcjsgYWNfd29yZD0kMgotKyAgZm9yIGFjX3Byb2cgaW4gYXIKLStkbwotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotIGlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9BUitzZXR9IiA9IHNldDsgdGhlbiA6Ci1AQCAtNjAyOSw3ICs2MjgyLDcgQEAgZG8KLSAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotLSAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSJhciIKLSsgICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iJGFjX3Byb2ciCi0gICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotICAgICBicmVhayAyCi0gICBmaQotQEAgLTYwNDgsNiArNjMwMSwxMCBAQCBlbHNlCi0gJGFzX2VjaG8gIm5vIiA+JjY7IH0KLSBmaQotIAotKwotKyAgdGVzdCAtbiAiJGFjX2N0X0FSIiAmJiBicmVhawotK2RvbmUKLSsKLSAgIGlmIHRlc3QgIngkYWNfY3RfQVIiID0geDsgdGhlbgotICAgICBBUj0iZmFsc2UiCi0gICBlbHNlCi1AQCAtNjA1OSwxMiArNjMxNiwxMCBAQCBhY190b29sX3dhcm5lZD15ZXMgOzsKLSBlc2FjCi0gICAgIEFSPSRhY19jdF9BUgotICAgZmkKLS1lbHNlCi0tICBBUj0iJGFjX2N2X3Byb2dfQVIiCi0gZmkKLSAKLS10ZXN0IC16ICIkQVIiICYmIEFSPWFyCi0tdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKLSs6ICR7QVI9YXJ9Ci0rOiAke0FSX0ZMQUdTPWNydX0KLSAKLSAKLSAKLUBAIC02MDc2LDYgKzYzMzEsNjQgQEAgdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKLSAKLSAKLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfYXJfYXRfZmlsZStzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X2FyX2F0X2ZpbGU9bm8KLSsgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rLyogZW5kIGNvbmZkZWZzLmguICAqLwotKwotK2ludAotK21haW4gKCkKLSt7Ci0rCi0rICA7Ci0rICByZXR1cm4gMDsKLSt9Ci0rX0FDRU9GCi0raWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotKyAgZWNobyBjb25mdGVzdC4kYWNfb2JqZXh0ID4gY29uZnRlc3QubHN0Ci0rICAgICAgbHRfYXJfdHJ5PSckQVIgJEFSX0ZMQUdTIGxpYmNvbmZ0ZXN0LmEgQGNvbmZ0ZXN0LmxzdCA+JjUnCi0rICAgICAgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKLSsgIChldmFsICRsdF9hcl90cnkpIDI+JjUKLSsgIGFjX3N0YXR1cz0kPwotKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0rICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9Ci0rICAgICAgaWYgdGVzdCAiJGFjX3N0YXR1cyIgLWVxIDA7IHRoZW4KLSsJIyBFbnN1cmUgdGhlIGFyY2hpdmVyIGZhaWxzIHVwb24gYm9ndXMgZmlsZSBuYW1lcy4KLSsJcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBsaWJjb25mdGVzdC5hCi0rCXsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1Ci0rICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1Ci0rICBhY19zdGF0dXM9JD8KLSsgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQotKwlpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtbmUgMDsgdGhlbgotKyAgICAgICAgICBsdF9jdl9hcl9hdF9maWxlPUAKLSsgICAgICAgIGZpCi0rICAgICAgZmkKLSsgICAgICBybSAtZiBjb25mdGVzdC4qIGxpYmNvbmZ0ZXN0LmEKLSsKLStmaQotK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotKwotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9hcl9hdF9maWxlIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X2FyX2F0X2ZpbGUiID4mNjsgfQotKwotK2lmIHRlc3QgIngkbHRfY3ZfYXJfYXRfZmlsZSIgPSB4bm87IHRoZW4KLSsgIGFyY2hpdmVyX2xpc3Rfc3BlYz0KLStlbHNlCi0rICBhcmNoaXZlcl9saXN0X3NwZWM9JGx0X2N2X2FyX2F0X2ZpbGUKLStmaQotKwotKwotKwotKwotKwotKwotKwotIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1zdHJpcCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0gc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9c3RyaXA7IGFjX3dvcmQ9JDIKLUBAIC02NDEwLDggKzY3MjMsOCBAQCBlc2FjCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiAtZSAncy9eVCAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDEoKTsvcCcgLWUgJ3MvXiRzeW1jb2RlKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJyIKLSAKLSAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKLS1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0rbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0gCi0gIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCi0gb3B0X2NyPQotQEAgLTY0NDcsNiArNjc2MCw3IEBAIGZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KLSAgIGVsc2UKLSAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0ic2VkIC1uIC1lICdzL14uKlsJIF1cKCRzeW1jb2RlJHN5bWNvZGUqXClbCSBdWwkgXSokYWNfc3ltcHJmeCRzeW1wYXQkb3B0X2NyJC8kc3lteGZybS9wJyIKLSAgIGZpCi0rICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSB8IHNlZCAnLyBfX2dudV9sdG8vZCciCi0gCi0gICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBwaXBlIHdvcmtzIGNvcnJlY3RseS4KLSAgIHBpcGVfd29ya3M9bm8KLUBAIC02NDg4LDYgKzY4MDIsMTggQEAgX0xUX0VPRgotICAgICAgIGlmICRHUkVQICcgbm1fdGVzdF92YXIkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCi0gCWlmICRHUkVQICcgbm1fdGVzdF9mdW5jJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgotIAkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0Ci0rLyogS2VlcCB0aGlzIGNvZGUgaW4gc3luYyBiZXR3ZWVuIGxpYnRvb2wubTQsIGx0bWFpbiwgbHRfc3lzdGVtLmgsIGFuZCB0ZXN0cy4gICovCi0rI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKLSsvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKLSsgICByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24gb24gcHNldWRvLXJlbG9jcy4gICovCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKLSsjZWxpZiBkZWZpbmVkKF9fb3NmX18pCi0rLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKLSsjZWxzZQotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUIGNvbnN0Ci0rI2VuZGlmCi0rCi0gI2lmZGVmIF9fY3BsdXNwbHVzCi0gZXh0ZXJuICJDIiB7Ci0gI2VuZGlmCi1AQCAtNjQ5OSw3ICs2ODI1LDcgQEAgX0xUX0VPRgotIAkgIGNhdCA8PF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAotIAotIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KLS1jb25zdCBzdHJ1Y3QgewotK0xUX0RMU1lNX0NPTlNUIHN0cnVjdCB7Ci0gICBjb25zdCBjaGFyICpuYW1lOwotICAgdm9pZCAgICAgICAqYWRkcmVzczsKLSB9Ci1AQCAtNjUyNSw4ICs2ODUxLDggQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKLSBfTFRfRU9GCi0gCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KLSAJICBtdiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKLS0JICBsdF9zYXZlX0xJQlM9IiRMSUJTIgotLQkgIGx0X3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgotKwkgIGx0X2dsb2JzeW1fc2F2ZV9MSUJTPSRMSUJTCi0rCSAgbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUz0kQ0ZMQUdTCi0gCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKLSAJICBDRkxBR1M9IiRDRkxBR1MkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciCi0gCSAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2xpbmtcIiI7IH0gPiY1Ci1AQCAtNjUzNiw4ICs2ODYyLDggQEAgX0xUX0VPRgotICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCi0gCSAgICBwaXBlX3dvcmtzPXllcwotIAkgIGZpCi0tCSAgTElCUz0iJGx0X3NhdmVfTElCUyIKLS0JICBDRkxBR1M9IiRsdF9zYXZlX0NGTEFHUyIKLSsJICBMSUJTPSRsdF9nbG9ic3ltX3NhdmVfTElCUwotKwkgIENGTEFHUz0kbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUwotIAllbHNlCi0gCSAgZWNobyAiY2Fubm90IGZpbmQgbm1fdGVzdF9mdW5jIGluICRubGlzdCIgPiY1Ci0gCWZpCi1AQCAtNjU3NCw2ICs2OTAwLDE4IEBAIGVsc2UKLSAkYXNfZWNobyAib2siID4mNjsgfQotIGZpCi0gCi0rIyBSZXNwb25zZSBmaWxlIHN1cHBvcnQuCi0raWYgdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiTVMgZHVtcGJpbiI7IHRoZW4KLSsgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJwotK2VsaWYgJE5NIC0taGVscCAyPi9kZXYvbnVsbCB8IGdyZXAgJ1tAXUZJTEUnID4vZGV2L251bGw7IHRoZW4KLSsgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJwotK2ZpCi0rCi0rCi0rCi0rCi0rCi0rCi0gCi0gCi0gCi1AQCAtNjU5NSw2ICs2OTMzLDQzIEBAIGZpCi0gCi0gCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3lzcm9vdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN5c3Jvb3QuLi4gIiA+JjY7IH0KLSsKLSsjIENoZWNrIHdoZXRoZXIgLS13aXRoLWxpYnRvb2wtc3lzcm9vdCB3YXMgZ2l2ZW4uCi0raWYgdGVzdCAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICB3aXRodmFsPSR3aXRoX2xpYnRvb2xfc3lzcm9vdDsKLStlbHNlCi0rICB3aXRoX2xpYnRvb2xfc3lzcm9vdD1ubwotK2ZpCi0rCi0rCi0rbHRfc3lzcm9vdD0KLStjYXNlICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IGluICMoCi0rIHllcykKLSsgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotKyAgICAgbHRfc3lzcm9vdD1gJENDIC0tcHJpbnQtc3lzcm9vdCAyPi9kZXYvbnVsbGAKLSsgICBmaQotKyAgIDs7ICMoCi0rIC8qKQotKyAgIGx0X3N5c3Jvb3Q9YGVjaG8gIiR3aXRoX2xpYnRvb2xfc3lzcm9vdCIgfCBzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAotKyAgIDs7ICMoCi0rIG5vfCcnKQotKyAgIDs7ICMoCi0rICopCi0rICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjUKLSskYXNfZWNobyAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNjsgfQotKyAgIGFzX2ZuX2Vycm9yICJUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguIiAiJExJTkVOTyIgNQotKyAgIDs7Ci0rZXNhYwotKwotKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHtsdF9zeXNyb290Oi1ub30iID4mNQotKyRhc19lY2hvICIke2x0X3N5c3Jvb3Q6LW5vfSIgPiY2OyB9Ci0rCi0rCi0rCi0rCi0rCi0gIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWxpYnRvb2wtbG9jayB3YXMgZ2l2ZW4uCi0gaWYgdGVzdCAiJHtlbmFibGVfbGlidG9vbF9sb2NrK3NldH0iID0gc2V0OyB0aGVuIDoKLSAgIGVuYWJsZXZhbD0kZW5hYmxlX2xpYnRvb2xfbG9jazsKLUBAIC02ODAxLDYgKzcxNzYsMTIzIEBAIGVzYWMKLSAKLSBuZWVkX2xvY2tzPSIkZW5hYmxlX2xpYnRvb2xfbG9jayIKLSAKLStpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9bXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW10OyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiRNQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJHthY190b29sX3ByZWZpeH1tdCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MCi0raWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE1BTklGRVNUX1RPT0wiID4mNQotKyRhc19lY2hvICIkTUFOSUZFU1RfVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rCi0rZmkKLStpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3RfTUFOSUZFU1RfVE9PTD0kTUFOSUZFU1RfVE9PTAotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJtdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15IG10OyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9IiRhY19jdF9NQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0ibXQiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK2FjX2N0X01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTAotK2lmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjUKLSskYXNfZWNobyAiJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKyAgaWYgdGVzdCAieCRhY19jdF9NQU5JRkVTVF9UT09MIiA9IHg7IHRoZW4KLSsgICAgTUFOSUZFU1RfVE9PTD0iOiIKLSsgIGVsc2UKLSsgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgotK3llczopCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KLSthY190b29sX3dhcm5lZD15ZXMgOzsKLStlc2FjCi0rICAgIE1BTklGRVNUX1RPT0w9JGFjX2N0X01BTklGRVNUX1RPT0wKLSsgIGZpCi0rZWxzZQotKyAgTUFOSUZFU1RfVE9PTD0iJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCIKLStmaQotKwotK3Rlc3QgLXogIiRNQU5JRkVTVF9UT09MIiAmJiBNQU5JRkVTVF9UT09MPW10Ci0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfcGF0aF9tYWluZmVzdF90b29sK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPW5vCi0rICBlY2hvICIkYXNfbWU6JExJTkVOTzogJE1BTklGRVNUX1RPT0wgJy0/JyIgPiY1Ci0rICAkTUFOSUZFU1RfVE9PTCAnLT8nIDI+Y29uZnRlc3QuZXJyID4gY29uZnRlc3Qub3V0Ci0rICBjYXQgY29uZnRlc3QuZXJyID4mNQotKyAgaWYgJEdSRVAgJ01hbmlmZXN0IFRvb2wnIGNvbmZ0ZXN0Lm91dCA+IC9kZXYvbnVsbDsgdGhlbgotKyAgICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9eWVzCi0rICBmaQotKyAgcm0gLWYgY29uZnRlc3QqCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNjsgfQotK2lmIHRlc3QgIngkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiAhPSB4eWVzOyB0aGVuCi0rICBNQU5JRkVTVF9UT09MPToKLStmaQotKwotKwotKwotKwotKwotIAotICAgY2FzZSAkaG9zdF9vcyBpbgotICAgICByaGFwc29keSogfCBkYXJ3aW4qKQotQEAgLTczNjQsNiArNzg1Niw4IEBAIF9MVF9FT0YKLSAgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JjUKLSAgICAgICBlY2hvICIkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyIgPiY1Ci0gICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mNQotKyAgICAgIGVjaG8gIiRSQU5MSUIgbGliY29uZnRlc3QuYSIgPiY1Ci0rICAgICAgJFJBTkxJQiBsaWJjb25mdGVzdC5hIDI+JjUKLSAgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKLSBpbnQgbWFpbigpIHsgcmV0dXJuIDA7fQotIF9MVF9FT0YKLUBAIC03NTU5LDcgKzgwNTMsOCBAQCBmaQotIExJQlRPT0xfREVQUz0iJGx0bWFpbiIKLSAKLSAjIEFsd2F5cyB1c2Ugb3VyIG93biBsaWJ0b29sLgotLUxJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKS9saWJ0b29sJwotK0xJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKScKLStMSUJUT09MPSIkTElCVE9PTC8ke2hvc3RfYWxpYXN9LWxpYnRvb2wiCi0gCi0gCi0gCi1AQCAtNzY0OCw3ICs4MTQzLDcgQEAgYWl4MyopCi0gZXNhYwotIAotICMgR2xvYmFsIHZhcmlhYmxlczoKLS1vZmlsZT1saWJ0b29sCi0rb2ZpbGU9JHtob3N0X2FsaWFzfS1saWJ0b29sCi0gY2FuX2J1aWxkX3NoYXJlZD15ZXMKLSAKLSAjIEFsbCBrbm93biBsaW5rZXJzIHJlcXVpcmUgYSBgLmEnIGFyY2hpdmUgZm9yIHN0YXRpYyBsaW5raW5nIChleGNlcHQgTVNWQywKLUBAIC03OTQ2LDggKzg0NDEsNiBAQCBmaQotIGx0X3Byb2dfY29tcGlsZXJfcGljPQotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPQotIAotLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQotLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gCi0gICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotICAgICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJwotQEAgLTgxMTMsNiArODYwNiwxMiBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotIAlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLS1zaGFyZWQnCi0gCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctLXN0YXRpYycKLSAJOzsKLSsgICAgICBuYWdmb3IqKQotKwkjIE5BRyBGb3J0cmFuIGNvbXBpbGVyCi0rCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwtV2wsLCcKLSsJbHRfcHJvZ19jb21waWxlcl9waWM9Jy1QSUMnCi0rCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKLSsJOzsKLSAgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCi0gICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIGNvbXBpbGVycyAoKm5vdCogdGhlIFBlbnRpdW0gZ2NjIGNvbXBpbGVyLAotIAkjIHdoaWNoIGxvb2tzIHRvIGJlIGEgZGVhZCBwcm9qZWN0KQotQEAgLTgxNzUsNyArODY3NCw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1LUElDJwotICAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKLSAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotLSAgICAgIGY3NyogfCBmOTAqIHwgZjk1KikKLSsgICAgICBmNzcqIHwgZjkwKiB8IGY5NSogfCBzdW5mNzcqIHwgc3VuZjkwKiB8IHN1bmY5NSopCi0gCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1Rb3B0aW9uIGxkICc7OwotICAgICAgICopCi0gCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnOzsKLUBAIC04MjMyLDEzICs4NzMxLDE3IEBAIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9IiRsdF9wcm9nX2NvbXBpbGVyX3BpYyAtRFBJQyIKLSAgICAgOzsKLSBlc2FjCi0teyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1Ci0tJGFzX2VjaG8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9Ci0tCi0tCi0tCi0tCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3Byb2dfY29tcGlsZXJfcGljK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3ZfcHJvZ19jb21waWxlcl9waWM9JGx0X3Byb2dfY29tcGlsZXJfcGljCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KLStsdF9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfY3ZfcHJvZ19jb21waWxlcl9waWMKLSAKLSAjCi0gIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgotQEAgLTgyOTksNiArODgwMiwxMSBAQCBmaQotIAotIAotIAotKwotKwotKwotKwotKwotICMKLSAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCi0gIwotQEAgLTg2NDksNyArOTE1Nyw4IEBAIF9MVF9FT0YKLSAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotICAgICAgIGFsd2F5c19leHBvcnRfc3ltYm9scz1ubwotICAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0tICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKyAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvO3MvXi4qWyBdX19ubV9fXChbXiBdKlwpWyBdW14gXSovXDEgREFUQS87L15JWyBdL2Q7L15bQUlUV11bIF0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsgICAgICBleGNsdWRlX2V4cHN5bXM9J1tfXStHTE9CQUxfT0ZGU0VUX1RBQkxFX3xbX10rR0xPQkFMX19bRklEXV8uKnxbX10raGVhZF9bQS1aYS16MC05X10rX2RsbHxbQS1aYS16MC05X10rX2RsbF9pbmFtZScKLSAKLSAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCi0gICAgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotQEAgLTg3NDgsMTIgKzkyNTcsMTIgQEAgX0xUX0VPRgotIAkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSctLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgLS1uby13aG9sZS1hcmNoaXZlJwotIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Ci0gCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZD0nLXJwYXRoICRsaWJkaXInCi0tCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCi0rCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJwotIAkgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KLSAJICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0gCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLSAJICAgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0tCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJwotKwkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCi0gCSAgZmkKLSAJICA7OwotIAllc2FjCi1AQCAtODc2Nyw4ICs5Mjc2LDggQEAgX0xUX0VPRgotIAlhcmNoaXZlX2NtZHM9JyRMRCAtQnNoYXJlYWJsZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1vICRsaWInCi0gCXdsYXJjPQotICAgICAgIGVsc2UKLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZmkKLSAgICAgICA7OwotIAotQEAgLTg3ODYsOCArOTI5NSw4IEBAIF9MVF9FT0YKLSAKLSBfTFRfRU9GCi0gICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGVsc2UKLSAJbGRfc2hsaWJzPW5vCi0gICAgICAgZmkKLUBAIC04ODMzLDggKzkzNDIsOCBAQCBfTFRfRU9GCi0gCi0gICAgICopCi0gICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBlbHNlCi0gCWxkX3NobGlicz1ubwotICAgICAgIGZpCi1AQCAtODk2NCw3ICs5NDczLDEzIEBAIF9MVF9FT0YKLSAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9Jy1iZXJvaycKLSAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgotICAgICAgICAgIyBlbXB0eSBleGVjdXRhYmxlLgotLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKyAgICAgICAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCi0rZWxzZQotKyAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aF8rc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotIAotIGludAotQEAgLTg5NzcsMjIgKzk0OTIsMjkgQEAgbWFpbiAoKQotIF9BQ0VPRgotIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSAKLS1sdF9haXhfbGlicGF0aF9zZWQ9JwotLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0tCS9eMC8gewotLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCi0tCSAgICBwCi0tCX0KLS0gICAgfScKLS1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tZmkKLSsgIGx0X2FpeF9saWJwYXRoX3NlZD0nCi0rICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotKwkgIC9eMC8gewotKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLwotKwkgICAgICBwCi0rCSAgfQotKyAgICAgIH0nCi0rICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICBmaQotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCi0rICBmaQotKwotK2ZpCi0rCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCi0rZmkKLSAKLSAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgotQEAgLTkwMDQsNyArOTUyNiwxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAJZWxzZQotIAkgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCi0gCSAjIGVtcHR5IGV4ZWN1dGFibGUuCi0tCSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rCSBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKLStlbHNlCi0rICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoXytzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gCi0gaW50Ci1AQCAtOTAxNywyMiArOTU0NSwyOSBAQCBtYWluICgpCi0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotIAotLWx0X2FpeF9saWJwYXRoX3NlZD0nCi0tICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLS0JL14wLyB7Ci0tCSAgICBzL14wICAqXCguKlwpJC9cMS8KLS0JICAgIHAKLS0JfQotLSAgICB9JwotLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0tICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS1maQotKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKLSsgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0rCSAgL14wLyB7Ci0rCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCi0rCSAgICAgIHAKLSsJICB9Ci0rICAgICAgfScKLSsgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgIGZpCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKLSsgIGZpCi0rCi0rZmkKLSsKLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KLStmaQotIAotIAkgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAotQEAgLTkwNzcsMjAgKzk2MTIsNjMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KLSAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCi0gICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KLS0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotLSAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0tICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLS0gICAgICBsaWJleHQ9bGliCi0tICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0tICAgICAgc2hyZXh0X2NtZHM9Ii5kbGwiCi0tICAgICAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCi0tICAgICAgIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KLS0gICAgICBvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJwotLSAgICAgICMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCi0tICAgICAgb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJwotLSAgICAgIGZpeF9zcmNmaWxlX3BhdGg9J2BjeWdwYXRoIC13ICIkc3JjZmlsZSJgJwotLSAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSsgICAgICBjbCopCi0rCSMgTmF0aXZlIE1TVkMKLSsJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLSsJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSsJYWx3YXlzX2V4cG9ydF9zeW1ib2xzPXllcwotKwlmaWxlX2xpc3Rfc3BlYz0nQCcKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLSsJbGliZXh0PWxpYgotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLSsJc2hyZXh0X2NtZHM9Ii5kbGwiCi0rCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KLSsJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgZWxzZQotKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLSsJICBmaX4KLSsJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+Ci0rCSAgbGlua25hbWVzPScKLSsJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgotKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgKT0ndHJ1ZScKLSsJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsJZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEsREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKwkjIERvbid0IHVzZSByYW5saWIKLSsJb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDY0NCAkb2xkbGliJwotKwlwb3N0bGlua19jbWRzPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+Ci0rCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KLSsJICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCi0rCSAgICAqLmV4ZXwqLkVYRSkgOzsKLSsJICAgICopCi0rCSAgICAgIGx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKLSsJICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKLSsJICAgICAgOzsKLSsJICBlc2FjfgotKwkgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCi0rCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOwotKwkgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7Ci0rCSAgZmknCi0rCTs7Ci0rICAgICAgKikKLSsJIyBBc3N1bWUgTVNWQyB3cmFwcGVyCi0rCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0rCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0rCWxpYmV4dD1saWIKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0rCXNocmV4dF9jbWRzPSIuZGxsIgotKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0rCWFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCi0rCSMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCi0rCW9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCi0rCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCi0rCW9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKLSsJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsJOzsKLSsgICAgICBlc2FjCi0gICAgICAgOzsKLSAKLSAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKLUBAIC05MTUxLDcgKzk3MjksNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgotICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCi0tICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCi0gICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotICAgICAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9bm8KLUBAIC05MTU5LDcgKzk3MzcsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgaHB1eDkqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSAgICAgICBlbHNlCi0gCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0gICAgICAgZmkKLUBAIC05MTc1LDcgKzk3NTMsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgaHB1eDEwKikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwotICAgICAgIGZpCi1AQCAtOTE5OSwxMCArOTc3NywxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCWlhNjQqKQotLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJKikKLS0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAllc2FjCi0gICAgICAgZWxzZQotQEAgLTkyODEsMjMgKzk4NTksMzYgQEAgZmkKLSAKLSAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJIyBUcnkgdG8gdXNlIHRoZSAtZXhwb3J0ZWRfc3ltYm9sIGxkIG9wdGlvbiwgaWYgaXQgZG9lcyBub3QKLSAJIyB3b3JrLCBhc3N1bWUgdGhhdCAtZXhwb3J0c19maWxlIGRvZXMgbm90IHdvcmsgZWl0aGVyIGFuZAotIAkjIGltcGxpY2l0bHkgZXhwb3J0IGFsbCBzeW1ib2xzLgotLSAgICAgICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKLS0gICAgICAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKLS0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsJIyBUaGlzIHNob3VsZCBiZSB0aGUgc2FtZSBmb3IgYWxsIGxhbmd1YWdlcywgc28gbm8gcGVyLXRhZyBjYWNoZSB2YXJpYWJsZS4KLSsJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCi0rCSAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKLSsJICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLS1pbnQgZm9vKHZvaWQpIHt9Ci0raW50IGZvbyAodm9pZCkgeyByZXR1cm4gMDsgfQotIF9BQ0VPRgotIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLS0gIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLS0KLSsgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPXllcwotK2Vsc2UKLSsgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPW5vCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS0gICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCi0rICAgICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY2OyB9Ci0rCWlmIHRlc3QgIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPSB5ZXM7IHRoZW4KLSsgICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJZmkKLSAgICAgICBlbHNlCi0gCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotQEAgLTkzODIsNyArOTk3Myw3IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotIAlhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKLSAgICAgICBlbHNlCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJwotQEAgLTk0MDEsOSArOTk5Miw5IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICAgIG5vX3VuZGVmaW5lZF9mbGFnPScgLXogZGVmcycKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotIAl3bGFyYz0nJHt3bH0nCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+Ci0tCSAgJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKLSsJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKLSAgICAgICBlbHNlCi0gCWNhc2UgYCRDQyAtViAyPiYxYCBpbgotIAkqIkNvbXBpbGVycyA1LjAiKikKLUBAIC05OTc5LDggKzEwNTcwLDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgbmVlZF92ZXJzaW9uPW5vCi0gICBuZWVkX2xpYl9wcmVmaXg9bm8KLSAKLS0gIGNhc2UgJEdDQywkaG9zdF9vcyBpbgotLSAgeWVzLGN5Z3dpbiogfCB5ZXMsbWluZ3cqIHwgeWVzLHB3MzIqIHwgeWVzLGNlZ2NjKikKLSsgIGNhc2UgJEdDQywkY2NfYmFzZW5hbWUgaW4KLSsgIHllcywqKQotKyAgICAjIGdjYwotICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJwotICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCi0gICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotQEAgLTEwMDEzLDEzICsxMDYwNSw3MSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwotICAgICAgIDs7Ci0gICAgIGVzYWMKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSsgICAgOzsKLSsKLSsgICosY2wqKQotKyAgICAjIE5hdGl2ZSBNU1ZDCi0rICAgIGxpYm5hbWVfc3BlYz0nJG5hbWUnCi0rICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSsgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9LmRsbC5saWInCi0rCi0rICAgIGNhc2UgJGJ1aWxkX29zIGluCi0rICAgIG1pbmd3KikKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ci0rICAgICAgbHRfc2F2ZV9pZnM9JElGUwotKyAgICAgIElGUz0nOycKLSsgICAgICBmb3IgbHRfcGF0aCBpbiAkTElCCi0rICAgICAgZG8KLSsgICAgICAgIElGUz0kbHRfc2F2ZV9pZnMKLSsgICAgICAgICMgTGV0IERPUyB2YXJpYWJsZSBleHBhbnNpb24gcHJpbnQgdGhlIHNob3J0IDguMyBzdHlsZSBmaWxlIG5hbWUuCi0rICAgICAgICBsdF9wYXRoPWBjZCAiJGx0X3BhdGgiIDI+L2Rldi9udWxsICYmIGNtZCAvL0MgImZvciAlaSBpbiAoIi4iKSBkbyBAZWNobyAlfnNpImAKLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAkbHRfcGF0aCIKLSsgICAgICBkb25lCi0rICAgICAgSUZTPSRsdF9zYXZlX2lmcwotKyAgICAgICMgQ29udmVydCB0byBNU1lTIHN0eWxlLgotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgc2VkIC1lICdzfFxcXFx8L3xnJyAtZSAnc3wgXFwoW2EtekEtWl1cXCk6fCAvXFwxfGcnIC1lICdzfF4gfHwnYAotKyAgICAgIDs7Ci0rICAgIGN5Z3dpbiopCi0rICAgICAgIyBDb252ZXJ0IHRvIHVuaXggZm9ybSwgdGhlbiB0byBkb3MgZm9ybSwgdGhlbiBiYWNrIHRvIHVuaXggZm9ybQotKyAgICAgICMgYnV0IHRoaXMgdGltZSBkb3Mgc3R5bGUgKG5vIHNwYWNlcyEpIHNvIHRoYXQgdGhlIHVuaXggZm9ybSBsb29rcwotKyAgICAgICMgbGlrZSAvY3lnZHJpdmUvYy9QUk9HUkF+MTovY3lnZHIuLi4KLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJExJQiJgCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLWRvcyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgMj4vZGV2L251bGxgCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKLSsgICAgICA7OwotKyAgICAqKQotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJExJQiIKLSsgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkR1JFUCAnO1tjLXpDLVpdOi8nID4vZGV2L251bGw7IHRoZW4KLSsgICAgICAgICMgSXQgaXMgbW9zdCBwcm9iYWJseSBhIFdpbmRvd3MgZm9ybWF0IFBBVEguCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAotKyAgICAgIGVsc2UKLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKLSsgICAgICBmaQotKyAgICAgICMgRklYTUU6IGZpbmQgdGhlIHNob3J0IG5hbWUgb3IgdGhlIHBhdGggY29tcG9uZW50cywgYXMgc3BhY2VzIGFyZQotKyAgICAgICMgY29tbW9uLiAoZS5nLiAiUHJvZ3JhbSBGaWxlcyIgLT4gIlBST0dSQX4xIikKLSsgICAgICA7OwotKyAgICBlc2FjCi0rCi0rICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKLSsgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci0rICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJHtiYXNlX2ZpbGV9J1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KLSsgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+Ci0rICAgICAgdGVzdCAtZCBcJGRsZGlyIHx8IG1rZGlyIC1wIFwkZGxkaXJ+Ci0rICAgICAgJGluc3RhbGxfcHJvZyAkZGlyLyRkbG5hbWUgXCRkbGRpci8kZGxuYW1lJwotKyAgICBwb3N0dW5pbnN0YWxsX2NtZHM9J2RsZGxsPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZmlsZTsgZWNobyBcJGRsbmFtZSdcJydgfgotKyAgICAgIGRscGF0aD0kZGlyL1wkZGxkbGx+Ci0rICAgICAgICRSTSBcJGRscGF0aCcKLSsgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGluay5leGUnCi0gICAgIDs7Ci0gCi0gICAqKQotKyAgICAjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKLSAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fSAkbGlibmFtZS5saWInCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0gICAgIDs7Ci0gICBlc2FjCi0tICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCi0gICBzaGxpYnBhdGhfdmFyPVBBVEgKLSAgIDs7Ci1AQCAtMTAxMTEsNyArMTA3NjEsNyBAQCBoYWlrdSopCi0gICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwotICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKLSAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLS0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9iZW9zL3N5c3RlbS9saWInCi0rICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKLSAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKLSAgIDs7Ci0gCi1AQCAtMTA5NTEsMTAgKzExNjAxLDEwIEBAIGVsc2UKLSAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCi0gICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLwotICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQotLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0raW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotICNlbmRpZgotIAotLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQotK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQotIGludCBtYWluICgpCi0gewotICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTEwNTcsMTAgKzExNzA3LDEwIEBAIGVsc2UKLSAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCi0gICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLwotICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQotLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0raW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotICNlbmRpZgotIAotLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQotK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQotIGludCBtYWluICgpCi0gewotICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTMwMDUsMTMgKzEzNjU1LDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF91bnNldD0nYCRFQ0hPICIkbHRfdW5zZXQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X1NQMk5MPSdgJEVDSE8gIiRsdF9TUDJOTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfTkwyU1A9J2AkRUNITyAiJGx0X05MMlNQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9jdl90b19ob3N0X2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9jdl90b190b29sX2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSByZWxvYWRfZmxhZz0nYCRFQ0hPICIkcmVsb2FkX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHJlbG9hZF9jbWRzPSdgJEVDSE8gIiRyZWxvYWRfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gT0JKRFVNUD0nYCRFQ0hPICIkT0JKRFVNUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZGVwbGlic19jaGVja19tZXRob2Q9J2AkRUNITyAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBmaWxlX21hZ2ljX2NtZD0nYCRFQ0hPICIkZmlsZV9tYWdpY19jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2ZpbGVfbWFnaWNfZ2xvYj0nYCRFQ0hPICIkZmlsZV9tYWdpY19nbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSt3YW50X25vY2FzZWdsb2I9J2AkRUNITyAiJHdhbnRfbm9jYXNlZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rRExMVE9PTD0nYCRFQ0hPICIkRExMVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J2AkRUNITyAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBBUj0nYCRFQ0hPICIkQVIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIEFSX0ZMQUdTPSdgJEVDSE8gIiRBUl9GTEFHUyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rYXJjaGl2ZXJfbGlzdF9zcGVjPSdgJEVDSE8gIiRhcmNoaXZlcl9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIFNUUklQPSdgJEVDSE8gIiRTVFJJUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gUkFOTElCPSdgJEVDSE8gIiRSQU5MSUIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRvbGRfcG9zdGluc3RhbGxfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTMwMjYsMTQgKzEzNjgzLDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIHwgJFNFRCAiJGRlCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK25tX2ZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRubV9maWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfc3lzcm9vdD0nYCRFQ0hPICIkbHRfc3lzcm9vdCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gb2JqZGlyPSdgJEVDSE8gIiRvYmpkaXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIE1BR0lDX0NNRD0nYCRFQ0hPICIkTUFHSUNfQ01EIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotLWx0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfcGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbz0nYCRFQ0hPICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX28iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG5lZWRfbG9ja3M9J2AkRUNITyAiJG5lZWRfbG9ja3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK01BTklGRVNUX1RPT0w9J2AkRUNITyAiJE1BTklGRVNUX1RPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIERTWU1VVElMPSdgJEVDSE8gIiREU1lNVVRJTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTk1FRElUPSdgJEVDSE8gIiROTUVESVQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIExJUE89J2AkRUNITyAiJExJUE8iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTEzMDY2LDEyICsxMzcyNiwxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcQotIGhhcmRjb2RlX2F1dG9tYXRpYz0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBpbmhlcml0X3JwYXRoPSdgJEVDSE8gIiRpbmhlcml0X3JwYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsaW5rX2FsbF9kZXBsaWJzPSdgJEVDSE8gIiRsaW5rX2FsbF9kZXBsaWJzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLS1maXhfc3JjZmlsZV9wYXRoPSdgJEVDSE8gIiRmaXhfc3JjZmlsZV9wYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBhbHdheXNfZXhwb3J0X3N5bWJvbHM9J2AkRUNITyAiJGFsd2F5c19leHBvcnRfc3ltYm9scyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZXhwb3J0X3N5bWJvbHNfY21kcz0nYCRFQ0hPICIkZXhwb3J0X3N5bWJvbHNfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZXhjbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRleGNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGluY2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBwcmVsaW5rX2NtZHM9J2AkRUNITyAiJHByZWxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rcG9zdGxpbmtfY21kcz0nYCRFQ0hPICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0nYCRFQ0hPICIkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG5lZWRfbGliX3ByZWZpeD0nYCRFQ0hPICIkbmVlZF9saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xMzEyNiw4ICsxMzc4NiwxMyBAQCByZWxvYWRfZmxhZyBcCi0gT0JKRFVNUCBcCi0gZGVwbGlic19jaGVja19tZXRob2QgXAotIGZpbGVfbWFnaWNfY21kIFwKLStmaWxlX21hZ2ljX2dsb2IgXAotK3dhbnRfbm9jYXNlZ2xvYiBcCi0rRExMVE9PTCBcCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQgXAotIEFSIFwKLSBBUl9GTEFHUyBcCi0rYXJjaGl2ZXJfbGlzdF9zcGVjIFwKLSBTVFJJUCBcCi0gUkFOTElCIFwKLSBDQyBcCi1AQCAtMTMxMzcsMTIgKzEzODAyLDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIFwKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyBcCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCBcCi0rbm1fZmlsZV9saXN0X3NwZWMgXAotIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIFwKLS1sdF9wcm9nX2NvbXBpbGVyX3dsIFwKLSBsdF9wcm9nX2NvbXBpbGVyX3BpYyBcCi0rbHRfcHJvZ19jb21waWxlcl93bCBcCi0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWMgXAotIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIFwKLSBuZWVkX2xvY2tzIFwKLStNQU5JRkVTVF9UT09MIFwKLSBEU1lNVVRJTCBcCi0gTk1FRElUIFwKLSBMSVBPIFwKLUBAIC0xMzE1OCw3ICsxMzgyNSw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKLSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIFwKLSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIFwKLSBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIFwKLS1maXhfc3JjZmlsZV9wYXRoIFwKLSBleGNsdWRlX2V4cHN5bXMgXAotIGluY2x1ZGVfZXhwc3ltcyBcCi0gZmlsZV9saXN0X3NwZWMgXAotQEAgLTEzMTk0LDYgKzEzODYwLDcgQEAgbW9kdWxlX2NtZHMgXAotIG1vZHVsZV9leHBzeW1fY21kcyBcCi0gZXhwb3J0X3N5bWJvbHNfY21kcyBcCi0gcHJlbGlua19jbWRzIFwKLStwb3N0bGlua19jbWRzIFwKLSBwb3N0aW5zdGFsbF9jbWRzIFwKLSBwb3N0dW5pbnN0YWxsX2NtZHMgXAotIGZpbmlzaF9jbWRzIFwKLUBAIC0xMzk1MCw3ICsxNDYxNyw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKLSAjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KLSAjCi0gIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKLS0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotKyMgICAgICAgICAgICAgICAgIEluYy4KLSAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgotICMKLSAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCi1AQCAtMTQwNTMsMTkgKzE0NzIxLDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAotICMgdHVybiBuZXdsaW5lcyBpbnRvIHNwYWNlcy4KLSBOTDJTUD0kbHRfbHRfTkwyU1AKLSAKLSsjIGNvbnZlcnQgXCRidWlsZCBmaWxlIG5hbWVzIHRvIFwkaG9zdCBmb3JtYXQuCi0rdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAotKwotKyMgY29udmVydCBcJGJ1aWxkIGZpbGVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuCi0rdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAotKwotICMgQW4gb2JqZWN0IHN5bWJvbCBkdW1wZXIuCi0gT0JKRFVNUD0kbHRfT0JKRFVNUAotIAotICMgTWV0aG9kIHRvIGNoZWNrIHdoZXRoZXIgZGVwZW5kZW50IGxpYnJhcmllcyBhcmUgc2hhcmVkIG9iamVjdHMuCi0gZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2RlcGxpYnNfY2hlY2tfbWV0aG9kCi0gCi0tIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID09ICJmaWxlX21hZ2ljIi4KLSsjIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCi0gZmlsZV9tYWdpY19jbWQ9JGx0X2ZpbGVfbWFnaWNfY21kCi0gCi0rIyBIb3cgdG8gZmluZCBwb3RlbnRpYWwgZmlsZXMgd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KLStmaWxlX21hZ2ljX2dsb2I9JGx0X2ZpbGVfbWFnaWNfZ2xvYgotKwotKyMgRmluZCBwb3RlbnRpYWwgZmlsZXMgdXNpbmcgbm9jYXNlZ2xvYiB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgotK3dhbnRfbm9jYXNlZ2xvYj0kbHRfd2FudF9ub2Nhc2VnbG9iCi0rCi0rIyBETEwgY3JlYXRpb24gcHJvZ3JhbS4KLStETExUT09MPSRsdF9ETExUT09MCi0rCi0rIyBDb21tYW5kIHRvIGFzc29jaWF0ZSBzaGFyZWQgYW5kIGxpbmsgbGlicmFyaWVzLgotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAotKwotICMgVGhlIGFyY2hpdmVyLgotIEFSPSRsdF9BUgotKwotKyMgRmxhZ3MgdG8gY3JlYXRlIGFuIGFyY2hpdmUuCi0gQVJfRkxBR1M9JGx0X0FSX0ZMQUdTCi0gCi0rIyBIb3cgdG8gZmVlZCBhIGZpbGUgbGlzdGluZyB0byB0aGUgYXJjaGl2ZXIuCi0rYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9hcmNoaXZlcl9saXN0X3NwZWMKLSsKLSAjIEEgc3ltYm9sIHN0cmlwcGluZyBwcm9ncmFtLgotIFNUUklQPSRsdF9TVFJJUAotIAotQEAgLTE0MDk1LDYgKzE0Nzg2LDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzCi0gIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZC4KLSBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgKLSAKLSsjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcyBmb3IgXCROTS4KLStubV9maWxlX2xpc3Rfc3BlYz0kbHRfbm1fZmlsZV9saXN0X3NwZWMKLSsKLSsjIFRoZSByb290IHdoZXJlIHRvIHNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyxhbmQgaW4gd2hpY2ggb3VyIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkLgotK2x0X3N5c3Jvb3Q9JGx0X3N5c3Jvb3QKLSsKLSAjIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0ZW1wb3JhcnkgbGlidG9vbCBmaWxlcy4KLSBvYmpkaXI9JG9iamRpcgotIAotQEAgLTE0MTA0LDYgKzE0ODAxLDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKLSAjIE11c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uPwotIG5lZWRfbG9ja3M9JGx0X25lZWRfbG9ja3MKLSAKLSsjIE1hbmlmZXN0IHRvb2wuCi0rTUFOSUZFU1RfVE9PTD0kbHRfTUFOSUZFU1RfVE9PTAotKwotICMgVG9vbCB0byBtYW5pcHVsYXRlIGFyY2hpdmVkIERXQVJGIGRlYnVnIHN5bWJvbCBmaWxlcyBvbiBNYWMgT1MgWC4KLSBEU1lNVVRJTD0kbHRfRFNZTVVUSUwKLSAKLUBAIC0xNDIxOCwxMiArMTQ5MTgsMTIgQEAgd2l0aF9nY2M9JEdDQwotICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KLSBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnCi0gCi0tIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgotLXdsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCi0tCi0gIyBBZGRpdGlvbmFsIGNvbXBpbGVyIGZsYWdzIGZvciBidWlsZGluZyBsaWJyYXJ5IG9iamVjdHMuCi0gcGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfcGljCi0gCi0rIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgotK3dsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCi0rCi0gIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgotIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljCi0gCi1AQCAtMTQzMTAsOSArMTUwMTAsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCi0gIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCi0gbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlicwotIAotLSMgRml4IHRoZSBzaGVsbCB2YXJpYWJsZSBcJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlci4KLS1maXhfc3JjZmlsZV9wYXRoPSRsdF9maXhfc3JjZmlsZV9wYXRoCi0tCi0gIyBTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWQuCi0gYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSRhbHdheXNfZXhwb3J0X3N5bWJvbHMKLSAKLUBAIC0xNDMyOCw2ICsxNTAyNSw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCi0gIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KLSBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kcwotIAotKyMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBmaW5pc2hpbmcgbGlua2luZyBwcm9ncmFtcy4KLStwb3N0bGlua19jbWRzPSRsdF9wb3N0bGlua19jbWRzCi0rCi0gIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCi0gZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjCi0gCi1AQCAtMTQzNjAsMjEwICsxNTA2MCwxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCi0gICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCi0gICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQotICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KLS0gIHNlZCAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS9xJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0tICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0tCi0tICBjYXNlICR4c2lfc2hlbGwgaW4KLS0gIHllcykKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0tIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tZnVuY19kaXJuYW1lICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0tICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLS1mdW5jX2Jhc2VuYW1lICgpCi0tewotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgotLX0KLS0KLS0jIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgotLSMgY2FsbDoKLS0jICAgZGlybmFtZTogIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LAotLSMgICAgICAgICAgICAgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LCBvdGhlcndpc2Ugc2V0IHJlc3VsdAotLSMgICAgICAgICAgICAgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLSMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgotLSMgICBiYXNlbmFtZTogQ29tcHV0ZSBmaWxlbmFtZSBvZiBGSUxFLgotLSMgICAgICAgICAgICAgdmFsdWUgcmV0dW5lZCBpbiAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotLSMgSW1wbGVtZW50YXRpb24gbXVzdCBiZSBrZXB0IHN5bmNocm9uaXplZCB3aXRoIGZ1bmNfZGlybmFtZQotLSMgYW5kIGZ1bmNfYmFzZW5hbWUuIEZvciBlZmZpY2llbmN5LCB3ZSBkbyBub3QgZGVsZWdhdGUgdG8KLS0jIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KLS1mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0tICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLS0gIGVzYWMKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKLS19Ci0tCi0tIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLS0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0tIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0tIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotLWZ1bmNfc3RyaXBuYW1lICgpCi0tewotLSAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQotLSAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9Ci0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifQotLX0KLS0KLS0jIGZ1bmNfb3B0X3NwbGl0Ci0tZnVuY19vcHRfc3BsaXQgKCkKLS17Ci0tICBmdW5jX29wdF9zcGxpdF9vcHQ9JHsxJSU9Kn0KLS0gIGZ1bmNfb3B0X3NwbGl0X2FyZz0kezEjKj19Ci0tfQotLQotLSMgZnVuY19sbzJvIG9iamVjdAotLWZ1bmNfbG8ybyAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OwotLSAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLS1mdW5jX3hmb3JtICgpCi0tewotLSAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sbwotLX0KLS0KLS0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCi0tZnVuY19hcml0aCAoKQotLXsKLS0gIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKQotLX0KLS0KLS0jIGZ1bmNfbGVuIHN0cmluZwotLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLS1mdW5jX2xlbiAoKQotLXsKLS0gIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfQotLX0KLS0KLS1fTFRfRU9GCi0tICAgIDs7Ci0tICAqKSAjIEJvdXJuZSBjb21wYXRpYmxlIGZ1bmN0aW9ucy4KLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0tIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tZnVuY19kaXJuYW1lICgpCi0tewotLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KLS0gIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRkaXJuYW1lImAKLS0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCi0tICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCi0tICBlbHNlCi0tICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKLS0gIGZpCi0tfQotLQotLSMgZnVuY19iYXNlbmFtZSBmaWxlCi0tZnVuY19iYXNlbmFtZSAoKQotLXsKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkYmFzZW5hbWUiYAotLX0KLS0KLS0KLS0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQotLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0tIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKLS0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKLS0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi0tIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQotLWZ1bmNfc3RyaXBuYW1lICgpCi0tewotLSAgY2FzZSAkezJ9IGluCi0tICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7Ci0tICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBzZWQgc2NyaXB0czoKLS1teV9zZWRfbG9uZ19vcHQ9JzFzL15cKC1bXj1dKlwpPS4qL1wxLztxJwotLW15X3NlZF9sb25nX2FyZz0nMXMvXi1bXj1dKj0vLycKLS0KLS0jIGZ1bmNfb3B0X3NwbGl0Ci0tZnVuY19vcHRfc3BsaXQgKCkKLS17Ci0tICBmdW5jX29wdF9zcGxpdF9vcHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19vcHQiYAotLSAgZnVuY19vcHRfc3BsaXRfYXJnPWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKLS19Ci0tCi0tIyBmdW5jX2xvMm8gb2JqZWN0Ci0tZnVuY19sbzJvICgpCi0tewotLSAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGxvMm8iYAotLX0KLS0KLS0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQotLWZ1bmNfeGZvcm0gKCkKLS17Ci0tICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAncy9cLlteLl0qJC8ubG8vJ2AKLS19Ci0tCi0tIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotLWZ1bmNfYXJpdGggKCkKLS17Ci0tICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJEAiYAotLX0KLS0KLS0jIGZ1bmNfbGVuIHN0cmluZwotLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLS1mdW5jX2xlbiAoKQotLXsKLS0gIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJDEiIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKLS19Ci0tCi0tX0xUX0VPRgotLWVzYWMKLS0KLS1jYXNlICRsdF9zaGVsbF9hcHBlbmQgaW4KLS0gIHllcykKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotLWZ1bmNfYXBwZW5kICgpCi0tewotLSAgZXZhbCAiJDErPVwkMiIKLS19Ci0tX0xUX0VPRgotLSAgICA7OwotLSAgKikKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotLWZ1bmNfYXBwZW5kICgpCi0tewotLSAgZXZhbCAiJDE9XCQkMVwkMiIKLS19Ci0tCi0tX0xUX0VPRgotLSAgICA7OwotLSAgZXNhYwotLQotLQotLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotLQotLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAotKyAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotKyAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLSsKLSsgIGlmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KLSsgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWUgL2NcCi0rZnVuY19kaXJuYW1lICgpXAotK3tcCi0rXCAgICBjYXNlICR7MX0gaW5cCi0rXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAotK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAotK1wgICAgZXNhY1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfYmFzZW5hbWUgL2NcCi0rZnVuY19iYXNlbmFtZSAoKVwKLSt7XAotK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIC9jXAotK2Z1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKClcCi0re1wKLStcICAgIGNhc2UgJHsxfSBpblwKLStcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCi0rXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCi0rXCAgICBlc2FjXAotK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3RyaXBuYW1lICgpJC8sL159ICMgZnVuY19zdHJpcG5hbWUgL2NcCi0rZnVuY19zdHJpcG5hbWUgKClcCi0re1wKLStcICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmVcCi0rXCAgICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuXAotK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M31cCi0rXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifVwKLStcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3N0cmlwbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfbG9uZ19vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X2xvbmdfb3B0IC9jXAotK2Z1bmNfc3BsaXRfbG9uZ19vcHQgKClcCi0re1wKLStcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT0kezElJT0qfVwKLStcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPSR7MSMqPX1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfbG9uZ19vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3NwbGl0X3Nob3J0X29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IC9jXAotK2Z1bmNfc3BsaXRfc2hvcnRfb3B0ICgpXAotK3tcCi0rXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9JHsxIz8/fVwKLStcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9JHsxJSIkZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIn1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19sbzJvICgpJC8sL159ICMgZnVuY19sbzJvIC9jXAotK2Z1bmNfbG8ybyAoKVwKLSt7XAotK1wgICAgY2FzZSAkezF9IGluXAotK1wgICAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7O1wKLStcICAgICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7XAotK1wgICAgZXNhY1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sbzJvIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY194Zm9ybSAoKSQvLC9efSAjIGZ1bmNfeGZvcm0gL2NcCi0rZnVuY194Zm9ybSAoKVwKLSt7XAotKyAgICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3hmb3JtIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19hcml0aCAoKSQvLC9efSAjIGZ1bmNfYXJpdGggL2NcCi0rZnVuY19hcml0aCAoKVwKLSt7XAotKyAgICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSlcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXJpdGggaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2xlbiAoKSQvLC9efSAjIGZ1bmNfbGVuIC9jXAotK2Z1bmNfbGVuICgpXAotK3tcCi0rICAgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sZW4gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLStmaQotKwotK2lmIHRlc3QgeCIkbHRfc2hlbGxfYXBwZW5kIiA9IHh5ZXM7IHRoZW4KLSsgIHNlZCAtZSAnL15mdW5jX2FwcGVuZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kIC9jXAotK2Z1bmNfYXBwZW5kICgpXAotK3tcCi0rICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19hcHBlbmRfcXVvdGVkICgpJC8sL159ICMgZnVuY19hcHBlbmRfcXVvdGVkIC9jXAotK2Z1bmNfYXBwZW5kX3F1b3RlZCAoKVwKLSt7XAotK1wgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSJcCi0rXCAgICBldmFsICIkezF9Kz1cXFxcIFxcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmRfcXVvdGVkIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgd2hlcmUgcG9zc2libGUgYnkgZGlyZWN0IHVzZSBvZiAnKz0nCi0rICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxKz0iJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKLSsgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSsgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rZWxzZQotKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIGV2ZW4gd2hlbiAnKz0nIGlzIG5vdCBhdmFpbGFibGUKLSsgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDE9IiRcMSVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCi0rICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotK2ZpCi0rCi0raWYgdGVzdCB4IiRfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsIiA9IHgiOiI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiYyO30KLStmaQotKwotKwotKyAgIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKLSAgICAgKHJtIC1mICIkb2ZpbGUiICYmIGNwICIkY2ZnZmlsZSIgIiRvZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlIikKLSAgIGNobW9kICt4ICIkb2ZpbGUiCi0gCi1kaWZmIC0tZ2l0IGEvbGQvY29uZmlndXJlIGIvbGQvY29uZmlndXJlCi1pbmRleCBhMTZjNmRiMDU5Li40Mjc3Yjc0YmFkIDEwMDc1NQotLS0tIGEvbGQvY29uZmlndXJlCi0rKysgYi9sZC9jb25maWd1cmUKLUBAIC02NTksOCArNjU5LDExIEBAIE9UT09MCi0gTElQTwotIE5NRURJVAotIERTWU1VVElMCi0rTUFOSUZFU1RfVE9PTAotIFJBTkxJQgotK2FjX2N0X0FSCi0gQVIKLStETExUT09MCi0gT0JKRFVNUAotIExOX1MKLSBOTQotQEAgLTc4Miw2ICs3ODUsNyBAQCBlbmFibGVfc3RhdGljCi0gd2l0aF9waWMKLSBlbmFibGVfZmFzdF9pbnN0YWxsCi0gd2l0aF9nbnVfbGQKLSt3aXRoX2xpYnRvb2xfc3lzcm9vdAotIGVuYWJsZV9saWJ0b29sX2xvY2sKLSBlbmFibGVfcGx1Z2lucwotIGVuYWJsZV9sYXJnZWZpbGUKLUBAIC0xNDYzLDYgKzE0NjcsOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKLSAgIC0td2l0aC1waWMgICAgICAgICAgICAgIHRyeSB0byB1c2Ugb25seSBQSUMvbm9uLVBJQyBvYmplY3RzIFtkZWZhdWx0PXVzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90aF0KLSAgIC0td2l0aC1nbnUtbGQgICAgICAgICAgIGFzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBbZGVmYXVsdD1ub10KLSsgIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9RElSIFNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyB3aXRoaW4gRElSCi0rICAgICAgICAgICAgICAgICAgICAgICAgKG9yIHRoZSBjb21waWxlcidzIHN5c3Jvb3QgaWYgbm90IHNwZWNpZmllZCkuCi0gICAtLXdpdGgtbGliLXBhdGg9ZGlyMTpkaXIyLi4uICBzZXQgZGVmYXVsdCBMSUJfUEFUSAotICAgLS13aXRoLXN5c3Jvb3Q9RElSIFNlYXJjaCBmb3IgdXNyL2xpYiBldCBhbCB3aXRoaW4gRElSLgotIAotQEAgLTU2NTcsOCArNTY2Myw4IEBAIGVzYWMKLSAKLSAKLSAKLS1tYWNyb192ZXJzaW9uPScyLjIuN2EnCi0tbWFjcm9fcmV2aXNpb249JzEuMzEzNCcKLSttYWNyb192ZXJzaW9uPScyLjQnCi0rbWFjcm9fcmV2aXNpb249JzEuMzI5MycKLSAKLSAKLSAKLUBAIC01Njk4LDcgKzU3MDQsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITwotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzLi4uICIgPiY2OyB9Ci0gIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCi0taWYgdGVzdCAiWGBwcmludCAtciAtLSAtbiAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKLStpZiB0ZXN0ICJYYCggcHJpbnQgLXIgLS0gLW4gKSAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKLSAgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgotICAgRUNITz0ncHJpbnQgLXIgLS0nCi0gZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KLUBAIC02Mzg0LDggKzYzOTAsOCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBzb21lIFhTSSBjb25zdHJ1Y3RzLi4uICIgPiY2OwotICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCi0geHNpX3NoZWxsPW5vCi0gKCBfbHRfZHVtbXk9ImEvYi9jIgotLSAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sIiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKLS0gICAgICA9IGMsYS9iLCwgXAotKyAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sJHtfbHRfZHVtbXkjPz99IiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKLSsgICAgICA9IGMsYS9iLGIvYywgXAotICAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCi0gICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCi0gICAmJiB4c2lfc2hlbGw9eWVzCi1AQCAtNjQzNCw2ICs2NDQwLDgwIEBAIGVzYWMKLSAKLSAKLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0Li4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl90b19ob3N0X2ZpbGVfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2FzZSAkaG9zdCBpbgotKyAgKi0qLW1pbmd3KiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgICAqLSotY3lnd2luKiApCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIKLSsgICAgICAgIDs7Ci0rICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rICAqLSotY3lnd2luKiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbgotKyAgICAgICAgOzsKLSsgICAgICAqLSotY3lnd2luKiApCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLSsgICAgICAgIDs7Ci0rICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rICAqICkgIyB1bmhhbmRsZWQgaG9zdHMgKGFuZCAibm9ybWFsIiBuYXRpdmUgYnVpbGRzKQotKyAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLSsgICAgOzsKLStlc2FjCi0rCi0rZmkKLSsKLSt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNjsgfQotKwotKwotKwotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfdG9fdG9vbF9maWxlX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgICNhc3N1bWUgb3JkaW5hcnkgY3Jvc3MgdG9vbHMsIG9yIG5hdGl2ZSBidWlsZC4KLStsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLStjYXNlICRob3N0IGluCi0rICAqLSotbWluZ3cqICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rZXNhYwotKwotK2ZpCi0rCi0rdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjY7IH0KLSsKLSsKLSsKLSsKLSsKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMuLi4gIiA+JjY7IH0KLSBpZiB0ZXN0ICIke2x0X2N2X2xkX3JlbG9hZF9mbGFnK3NldH0iID0gc2V0OyB0aGVuIDoKLUBAIC02NDUwLDYgKzY1MzAsMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KLSBlc2FjCi0gcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotIGNhc2UgJGhvc3Rfb3MgaW4KLSsgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSsgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCi0rICAgICAgcmVsb2FkX2NtZHM9ZmFsc2UKLSsgICAgZmkKLSsgICAgOzsKLSAgIGRhcndpbiopCi0gICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotQEAgLTY2MTgsNyArNjcwMyw4IEBAIG1pbmd3KiB8IHB3MzIqKQotICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJwotICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKLSAgIGVsc2UKLS0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCi0rICAgICMgS2VlcCB0aGlzIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gZnVuY193aW4zMl9saWJpZC4KLSsgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJwotICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCi0gICBmaQotICAgOzsKLUBAIC02NzcyLDYgKzY4NTgsMjEgQEAgZXNhYwotIGZpCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY1Ci0gJGFzX2VjaG8gIiRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY2OyB9Ci0rCi0rZmlsZV9tYWdpY19nbG9iPQotK3dhbnRfbm9jYXNlZ2xvYj1ubwotK2lmIHRlc3QgIiRidWlsZCIgPSAiJGhvc3QiOyB0aGVuCi0rICBjYXNlICRob3N0X29zIGluCi0rICBtaW5ndyogfCBwdzMyKikKLSsgICAgaWYgKCBzaG9wdCB8IGdyZXAgbm9jYXNlZ2xvYiApID4vZGV2L251bGwgMj4mMTsgdGhlbgotKyAgICAgIHdhbnRfbm9jYXNlZ2xvYj15ZXMKLSsgICAgZWxzZQotKyAgICAgIGZpbGVfbWFnaWNfZ2xvYj1gZWNobyBhQWJCY0NkRGVFZkZnR2hIaUlqSmtLbExtTW5Ob09wUHFRclJzU3RUdVV2VndXeFh5WXpaIHwgJFNFRCAtZSAicy9cKC4uXCkvc1wvW1wxXVwvW1wxXVwvZzsvZyJgCi0rICAgIGZpCi0rICAgIDs7Ci0rICBlc2FjCi0rZmkKLSsKLSBmaWxlX21hZ2ljX2NtZD0kbHRfY3ZfZmlsZV9tYWdpY19jbWQKLSBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QKLSB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KLUBAIC02Nzg3LDkgKzY4ODgsMTYyIEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgotIAotIAotIAotKwotKwotKwotKwotKwotKwotKwotKwotKwotKwotK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1kbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1kbGx0b29sOyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19ETExUT09MK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX0RMTFRPT0w9IiRETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfRExMVE9PTD0iJHthY190b29sX3ByZWZpeH1kbGx0b29sIgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLStETExUT09MPSRhY19jdl9wcm9nX0RMTFRPT0wKLStpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkRExMVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRETExUT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsKLStmaQotK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX0RMTFRPT0wiOyB0aGVuCi0rICBhY19jdF9ETExUT09MPSRETExUT09MCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSBkbGx0b29sOyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9ETExUT09MK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9IiRhY19jdF9ETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iZGxsdG9vbCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rYWNfY3RfRExMVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MCi0raWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X0RMTFRPT0wiID4mNQotKyRhc19lY2hvICIkYWNfY3RfRExMVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rICBpZiB0ZXN0ICJ4JGFjX2N0X0RMTFRPT0wiID0geDsgdGhlbgotKyAgICBETExUT09MPSJmYWxzZSIKLSsgIGVsc2UKLSsgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgotK3llczopCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KLSthY190b29sX3dhcm5lZD15ZXMgOzsKLStlc2FjCi0rICAgIERMTFRPT0w9JGFjX2N0X0RMTFRPT0wKLSsgIGZpCi0rZWxzZQotKyAgRExMVE9PTD0iJGFjX2N2X3Byb2dfRExMVE9PTCIKLStmaQotKwotK3Rlc3QgLXogIiRETExUT09MIiAmJiBETExUT09MPWRsbHRvb2wKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J3Vua25vd24nCi0rCi0rY2FzZSAkaG9zdF9vcyBpbgotK2N5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSsgICMgdHdvIGRpZmZlcmVudCBzaGVsbCBmdW5jdGlvbnMgZGVmaW5lZCBpbiBsdG1haW4uc2gKLSsgICMgZGVjaWRlIHdoaWNoIHRvIHVzZSBiYXNlZCBvbiBjYXBhYmlsaXRpZXMgb2YgJERMTFRPT0wKLSsgIGNhc2UgYCRETExUT09MIC0taGVscCAyPiYxYCBpbgotKyAgKi0taWRlbnRpZnktc3RyaWN0KikKLSsgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliCi0rICAgIDs7Ci0rICAqKQotKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sKLSsgICAgOzsKLSsgIGVzYWMKLSsgIDs7Ci0rKikKLSsgICMgZmFsbGJhY2s6IGFzc3VtZSBsaW5rbGliIElTIHNoYXJlZGxpYgotKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9IiRFQ0hPIgotKyAgOzsKLStlc2FjCi0rCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjY7IH0KLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKLSt0ZXN0IC16ICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiICYmIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRFQ0hPCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0gaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLS1zZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1hcjsgYWNfd29yZD0kMgotKyAgZm9yIGFjX3Byb2cgaW4gYXIKLSsgIGRvCi0rICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLSBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfQVIrc2V0fSIgPSBzZXQ7IHRoZW4gOgotQEAgLTY4MDUsNyArNzA1OSw3IEBAIGRvCi0gICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLS0gICAgYWNfY3ZfcHJvZ19BUj0iJHthY190b29sX3ByZWZpeH1hciIKLSsgICAgYWNfY3ZfcHJvZ19BUj0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCi0gICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotICAgICBicmVhayAyCi0gICBmaQotQEAgLTY4MjUsMTEgKzcwNzksMTUgQEAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KLSBmaQotIAotIAotKyAgICB0ZXN0IC1uICIkQVIiICYmIGJyZWFrCi0rICBkb25lCi0gZmkKLS1pZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19BUiI7IHRoZW4KLStpZiB0ZXN0IC16ICIkQVIiOyB0aGVuCi0gICBhY19jdF9BUj0kQVIKLS0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiYXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotLXNldCBkdW1teSBhcjsgYWNfd29yZD0kMgotKyAgZm9yIGFjX3Byb2cgaW4gYXIKLStkbwotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotIGlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9BUitzZXR9IiA9IHNldDsgdGhlbiA6Ci1AQCAtNjg0NSw3ICs3MTAzLDcgQEAgZG8KLSAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotLSAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSJhciIKLSsgICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iJGFjX3Byb2ciCi0gICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotICAgICBicmVhayAyCi0gICBmaQotQEAgLTY4NjQsNiArNzEyMiwxMCBAQCBlbHNlCi0gJGFzX2VjaG8gIm5vIiA+JjY7IH0KLSBmaQotIAotKwotKyAgdGVzdCAtbiAiJGFjX2N0X0FSIiAmJiBicmVhawotK2RvbmUKLSsKLSAgIGlmIHRlc3QgIngkYWNfY3RfQVIiID0geDsgdGhlbgotICAgICBBUj0iZmFsc2UiCi0gICBlbHNlCi1AQCAtNjg3NSwxMiArNzEzNywxMiBAQCBhY190b29sX3dhcm5lZD15ZXMgOzsKLSBlc2FjCi0gICAgIEFSPSRhY19jdF9BUgotICAgZmkKLS1lbHNlCi0tICBBUj0iJGFjX2N2X3Byb2dfQVIiCi0gZmkKLSAKLS10ZXN0IC16ICIkQVIiICYmIEFSPWFyCi0tdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKLSs6ICR7QVI9YXJ9Ci0rOiAke0FSX0ZMQUdTPWNydX0KLSsKLSsKLSAKLSAKLSAKLUBAIC02ODkwLDYgKzcxNTIsNjIgQEAgdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKLSAKLSAKLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfYXJfYXRfZmlsZStzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X2FyX2F0X2ZpbGU9bm8KLSsgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rLyogZW5kIGNvbmZkZWZzLmguICAqLwotKwotK2ludAotK21haW4gKCkKLSt7Ci0rCi0rICA7Ci0rICByZXR1cm4gMDsKLSt9Ci0rX0FDRU9GCi0raWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotKyAgZWNobyBjb25mdGVzdC4kYWNfb2JqZXh0ID4gY29uZnRlc3QubHN0Ci0rICAgICAgbHRfYXJfdHJ5PSckQVIgJEFSX0ZMQUdTIGxpYmNvbmZ0ZXN0LmEgQGNvbmZ0ZXN0LmxzdCA+JjUnCi0rICAgICAgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKLSsgIChldmFsICRsdF9hcl90cnkpIDI+JjUKLSsgIGFjX3N0YXR1cz0kPwotKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0rICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9Ci0rICAgICAgaWYgdGVzdCAiJGFjX3N0YXR1cyIgLWVxIDA7IHRoZW4KLSsJIyBFbnN1cmUgdGhlIGFyY2hpdmVyIGZhaWxzIHVwb24gYm9ndXMgZmlsZSBuYW1lcy4KLSsJcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBsaWJjb25mdGVzdC5hCi0rCXsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1Ci0rICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1Ci0rICBhY19zdGF0dXM9JD8KLSsgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQotKwlpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtbmUgMDsgdGhlbgotKyAgICAgICAgICBsdF9jdl9hcl9hdF9maWxlPUAKLSsgICAgICAgIGZpCi0rICAgICAgZmkKLSsgICAgICBybSAtZiBjb25mdGVzdC4qIGxpYmNvbmZ0ZXN0LmEKLSsKLStmaQotK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotKwotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9hcl9hdF9maWxlIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X2FyX2F0X2ZpbGUiID4mNjsgfQotKwotK2lmIHRlc3QgIngkbHRfY3ZfYXJfYXRfZmlsZSIgPSB4bm87IHRoZW4KLSsgIGFyY2hpdmVyX2xpc3Rfc3BlYz0KLStlbHNlCi0rICBhcmNoaXZlcl9saXN0X3NwZWM9JGx0X2N2X2FyX2F0X2ZpbGUKLStmaQotKwotKwotKwotKwotKwotIAotIAotIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLUBAIC03MjI2LDggKzc1NDQsOCBAQCBlc2FjCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiAtZSAncy9eVCAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDEoKTsvcCcgLWUgJ3MvXiRzeW1jb2RlKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJyIKLSAKLSAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKLS1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0rbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0gCi0gIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCi0gb3B0X2NyPQotQEAgLTcyNjMsNiArNzU4MSw3IEBAIGZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KLSAgIGVsc2UKLSAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0ic2VkIC1uIC1lICdzL14uKlsJIF1cKCRzeW1jb2RlJHN5bWNvZGUqXClbCSBdWwkgXSokYWNfc3ltcHJmeCRzeW1wYXQkb3B0X2NyJC8kc3lteGZybS9wJyIKLSAgIGZpCi0rICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSB8IHNlZCAnLyBfX2dudV9sdG8vZCciCi0gCi0gICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBwaXBlIHdvcmtzIGNvcnJlY3RseS4KLSAgIHBpcGVfd29ya3M9bm8KLUBAIC03MzA0LDYgKzc2MjMsMTggQEAgX0xUX0VPRgotICAgICAgIGlmICRHUkVQICcgbm1fdGVzdF92YXIkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCi0gCWlmICRHUkVQICcgbm1fdGVzdF9mdW5jJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgotIAkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0Ci0rLyogS2VlcCB0aGlzIGNvZGUgaW4gc3luYyBiZXR3ZWVuIGxpYnRvb2wubTQsIGx0bWFpbiwgbHRfc3lzdGVtLmgsIGFuZCB0ZXN0cy4gICovCi0rI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKLSsvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKLSsgICByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24gb24gcHNldWRvLXJlbG9jcy4gICovCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKLSsjZWxpZiBkZWZpbmVkKF9fb3NmX18pCi0rLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKLSsjZWxzZQotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUIGNvbnN0Ci0rI2VuZGlmCi0rCi0gI2lmZGVmIF9fY3BsdXNwbHVzCi0gZXh0ZXJuICJDIiB7Ci0gI2VuZGlmCi1AQCAtNzMxNSw3ICs3NjQ2LDcgQEAgX0xUX0VPRgotIAkgIGNhdCA8PF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAotIAotIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KLS1jb25zdCBzdHJ1Y3QgewotK0xUX0RMU1lNX0NPTlNUIHN0cnVjdCB7Ci0gICBjb25zdCBjaGFyICpuYW1lOwotICAgdm9pZCAgICAgICAqYWRkcmVzczsKLSB9Ci1AQCAtNzM0MSw4ICs3NjcyLDggQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKLSBfTFRfRU9GCi0gCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KLSAJICBtdiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKLS0JICBsdF9zYXZlX0xJQlM9IiRMSUJTIgotLQkgIGx0X3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgotKwkgIGx0X2dsb2JzeW1fc2F2ZV9MSUJTPSRMSUJTCi0rCSAgbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUz0kQ0ZMQUdTCi0gCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKLSAJICBDRkxBR1M9IiRDRkxBR1MkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciCi0gCSAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2xpbmtcIiI7IH0gPiY1Ci1AQCAtNzM1Miw4ICs3NjgzLDggQEAgX0xUX0VPRgotICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCi0gCSAgICBwaXBlX3dvcmtzPXllcwotIAkgIGZpCi0tCSAgTElCUz0iJGx0X3NhdmVfTElCUyIKLS0JICBDRkxBR1M9IiRsdF9zYXZlX0NGTEFHUyIKLSsJICBMSUJTPSRsdF9nbG9ic3ltX3NhdmVfTElCUwotKwkgIENGTEFHUz0kbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUwotIAllbHNlCi0gCSAgZWNobyAiY2Fubm90IGZpbmQgbm1fdGVzdF9mdW5jIGluICRubGlzdCIgPiY1Ci0gCWZpCi1AQCAtNzM5MCw2ICs3NzIxLDE5IEBAIGVsc2UKLSAkYXNfZWNobyAib2siID4mNjsgfQotIGZpCi0gCi0rIyBSZXNwb25zZSBmaWxlIHN1cHBvcnQuCi0raWYgdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiTVMgZHVtcGJpbiI7IHRoZW4KLSsgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJwotK2VsaWYgJE5NIC0taGVscCAyPi9kZXYvbnVsbCB8IGdyZXAgJ1tAXUZJTEUnID4vZGV2L251bGw7IHRoZW4KLSsgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJwotK2ZpCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0gCi0gCi0gCi1AQCAtNzQxMCw2ICs3NzU0LDQyIEBAIGZpCi0gCi0gCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3lzcm9vdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN5c3Jvb3QuLi4gIiA+JjY7IH0KLSsKLSsjIENoZWNrIHdoZXRoZXIgLS13aXRoLWxpYnRvb2wtc3lzcm9vdCB3YXMgZ2l2ZW4uCi0raWYgdGVzdCAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICB3aXRodmFsPSR3aXRoX2xpYnRvb2xfc3lzcm9vdDsKLStlbHNlCi0rICB3aXRoX2xpYnRvb2xfc3lzcm9vdD1ubwotK2ZpCi0rCi0rCi0rbHRfc3lzcm9vdD0KLStjYXNlICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IGluICMoCi0rIHllcykKLSsgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotKyAgICAgbHRfc3lzcm9vdD1gJENDIC0tcHJpbnQtc3lzcm9vdCAyPi9kZXYvbnVsbGAKLSsgICBmaQotKyAgIDs7ICMoCi0rIC8qKQotKyAgIGx0X3N5c3Jvb3Q9YGVjaG8gIiR3aXRoX2xpYnRvb2xfc3lzcm9vdCIgfCBzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAotKyAgIDs7ICMoCi0rIG5vfCcnKQotKyAgIDs7ICMoCi0rICopCi0rICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjUKLSskYXNfZWNobyAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNjsgfQotKyAgIGFzX2ZuX2Vycm9yICJUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguIiAiJExJTkVOTyIgNQotKyAgIDs7Ci0rZXNhYwotKwotKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHtsdF9zeXNyb290Oi1ub30iID4mNQotKyRhc19lY2hvICIke2x0X3N5c3Jvb3Q6LW5vfSIgPiY2OyB9Ci0rCi0rCi0rCi0rCi0gCi0gIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWxpYnRvb2wtbG9jayB3YXMgZ2l2ZW4uCi0gaWYgdGVzdCAiJHtlbmFibGVfbGlidG9vbF9sb2NrK3NldH0iID0gc2V0OyB0aGVuIDoKLUBAIC03NjE3LDYgKzc5OTcsMTIzIEBAIGVzYWMKLSAKLSBuZWVkX2xvY2tzPSIkZW5hYmxlX2xpYnRvb2xfbG9jayIKLSAKLStpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9bXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW10OyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiRNQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJHthY190b29sX3ByZWZpeH1tdCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MCi0raWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE1BTklGRVNUX1RPT0wiID4mNQotKyRhc19lY2hvICIkTUFOSUZFU1RfVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rCi0rZmkKLStpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3RfTUFOSUZFU1RfVE9PTD0kTUFOSUZFU1RfVE9PTAotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJtdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15IG10OyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9IiRhY19jdF9NQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0ibXQiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK2FjX2N0X01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTAotK2lmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjUKLSskYXNfZWNobyAiJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKyAgaWYgdGVzdCAieCRhY19jdF9NQU5JRkVTVF9UT09MIiA9IHg7IHRoZW4KLSsgICAgTUFOSUZFU1RfVE9PTD0iOiIKLSsgIGVsc2UKLSsgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgotK3llczopCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KLSthY190b29sX3dhcm5lZD15ZXMgOzsKLStlc2FjCi0rICAgIE1BTklGRVNUX1RPT0w9JGFjX2N0X01BTklGRVNUX1RPT0wKLSsgIGZpCi0rZWxzZQotKyAgTUFOSUZFU1RfVE9PTD0iJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCIKLStmaQotKwotK3Rlc3QgLXogIiRNQU5JRkVTVF9UT09MIiAmJiBNQU5JRkVTVF9UT09MPW10Ci0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfcGF0aF9tYWluZmVzdF90b29sK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPW5vCi0rICBlY2hvICIkYXNfbWU6JExJTkVOTzogJE1BTklGRVNUX1RPT0wgJy0/JyIgPiY1Ci0rICAkTUFOSUZFU1RfVE9PTCAnLT8nIDI+Y29uZnRlc3QuZXJyID4gY29uZnRlc3Qub3V0Ci0rICBjYXQgY29uZnRlc3QuZXJyID4mNQotKyAgaWYgJEdSRVAgJ01hbmlmZXN0IFRvb2wnIGNvbmZ0ZXN0Lm91dCA+IC9kZXYvbnVsbDsgdGhlbgotKyAgICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9eWVzCi0rICBmaQotKyAgcm0gLWYgY29uZnRlc3QqCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNjsgfQotK2lmIHRlc3QgIngkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiAhPSB4eWVzOyB0aGVuCi0rICBNQU5JRkVTVF9UT09MPToKLStmaQotKwotKwotKwotKwotKwotIAotICAgY2FzZSAkaG9zdF9vcyBpbgotICAgICByaGFwc29keSogfCBkYXJ3aW4qKQotQEAgLTgxODAsNiArODY3Nyw4IEBAIF9MVF9FT0YKLSAgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JjUKLSAgICAgICBlY2hvICIkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyIgPiY1Ci0gICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mNQotKyAgICAgIGVjaG8gIiRSQU5MSUIgbGliY29uZnRlc3QuYSIgPiY1Ci0rICAgICAgJFJBTkxJQiBsaWJjb25mdGVzdC5hIDI+JjUKLSAgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKLSBpbnQgbWFpbigpIHsgcmV0dXJuIDA7fQotIF9MVF9FT0YKLUBAIC04MjQ4LDYgKzg3NDcsMTYgQEAgZG9uZQotIAotIAotIAotK2Z1bmNfc3RyaXBuYW1lX2NuZiAoKQotK3sKLSsgIGNhc2UgJHsyfSBpbgotKyAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKLSsgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKLSsgIGVzYWMKLSt9ICMgZnVuY19zdHJpcG5hbWVfY25mCi0rCi0rCi0rCi0gCi0gCi0gIyBTZXQgb3B0aW9ucwotQEAgLTgzNzYsNyArODg4NSw4IEBAIGZpCi0gTElCVE9PTF9ERVBTPSIkbHRtYWluIgotIAotICMgQWx3YXlzIHVzZSBvdXIgb3duIGxpYnRvb2wuCi0tTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpL2xpYnRvb2wnCi0rTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpJwotK0xJQlRPT0w9IiRMSUJUT09MLyR7aG9zdF9hbGlhc30tbGlidG9vbCIKLSAKLSAKLSAKLUBAIC04NDY1LDcgKzg5NzUsNyBAQCBhaXgzKikKLSBlc2FjCi0gCi0gIyBHbG9iYWwgdmFyaWFibGVzOgotLW9maWxlPWxpYnRvb2wKLStvZmlsZT0ke2hvc3RfYWxpYXN9LWxpYnRvb2wKLSBjYW5fYnVpbGRfc2hhcmVkPXllcwotIAotICMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAotQEAgLTg3NjMsOCArOTI3Myw2IEBAIGZpCi0gbHRfcHJvZ19jb21waWxlcl9waWM9Ci0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Ci0gCi0teyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1Ci0tJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAKLSAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgIGx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCi1AQCAtODkzMCw2ICs5NDM4LDEyIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gCWx0X3Byb2dfY29tcGlsZXJfcGljPSctLXNoYXJlZCcKLSAJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy0tc3RhdGljJwotIAk7OwotKyAgICAgIG5hZ2ZvciopCi0rCSMgTkFHIEZvcnRyYW4gY29tcGlsZXIKLSsJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLC1XbCwsJwotKwlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLVBJQycKLSsJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJwotKwk7OwotICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKLSAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCi0gCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCi1AQCAtODk5Miw3ICs5NTA2LDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCi0gICAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJwotICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0tICAgICAgZjc3KiB8IGY5MCogfCBmOTUqKQotKyAgICAgIGY3NyogfCBmOTAqIHwgZjk1KiB8IHN1bmY3NyogfCBzdW5mOTAqIHwgc3VuZjk1KikKLSAJbHRfcHJvZ19jb21waWxlcl93bD0nLVFvcHRpb24gbGQgJzs7Ci0gICAgICAgKikKLSAJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCc7OwotQEAgLTkwNDksMTMgKzk1NjMsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgotICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0iJGx0X3Byb2dfY29tcGlsZXJfcGljIC1EUElDIgotICAgICA7OwotIGVzYWMKLS17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKLS0kYXNfZWNobyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KLS0KLS0KLS0KLS0KLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWMrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfcHJvZ19jb21waWxlcl9waWMKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQotK2x0X3Byb2dfY29tcGlsZXJfcGljPSRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYwotIAotICMKLSAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCi1AQCAtOTExNiw2ICs5NjM0LDExIEBAIGZpCi0gCi0gCi0gCi0rCi0rCi0rCi0rCi0rCi0gIwotICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLSAjCi1AQCAtOTQ2Niw3ICs5OTg5LDggQEAgX0xUX0VPRgotICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0gICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPW5vCi0gICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLS0gICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS87cy9eLipbIF1fX25tX19cKFteIF0qXClbIF1bXiBdKi9cMSBEQVRBLzsvXklbIF0vZDsvXltBSVRXXVsgXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKyAgICAgIGV4Y2x1ZGVfZXhwc3ltcz0nW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJwotIAotICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi1AQCAtOTU2NSwxMiArMTAwODksMTIgQEAgX0xUX0VPRgotIAkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSctLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgLS1uby13aG9sZS1hcmNoaXZlJwotIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Ci0gCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZD0nLXJwYXRoICRsaWJkaXInCi0tCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCi0rCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJwotIAkgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KLSAJICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0gCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLSAJICAgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0tCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJwotKwkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCi0gCSAgZmkKLSAJICA7OwotIAllc2FjCi1AQCAtOTU4NCw4ICsxMDEwOCw4IEBAIF9MVF9FT0YKLSAJYXJjaGl2ZV9jbWRzPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJwotIAl3bGFyYz0KLSAgICAgICBlbHNlCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGZpCi0gICAgICAgOzsKLSAKLUBAIC05NjAzLDggKzEwMTI3LDggQEAgX0xUX0VPRgotIAotIF9MVF9FT0YKLSAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZWxzZQotIAlsZF9zaGxpYnM9bm8KLSAgICAgICBmaQotQEAgLTk2NTAsOCArMTAxNzQsOCBAQCBfTFRfRU9GCi0gCi0gICAgICopCi0gICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBlbHNlCi0gCWxkX3NobGlicz1ubwotICAgICAgIGZpCi1AQCAtOTc4MSw3ICsxMDMwNSwxMyBAQCBfTFRfRU9GCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPSctYmVyb2snCi0gICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KLSAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KLS0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsgICAgICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAotK2Vsc2UKLSsgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGhfK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAKLSBpbnQKLUBAIC05Nzk0LDIyICsxMDMyNCwyOSBAQCBtYWluICgpCi0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotIAotLWx0X2FpeF9saWJwYXRoX3NlZD0nCi0tICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLS0JL14wLyB7Ci0tCSAgICBzL14wICAqXCguKlwpJC9cMS8KLS0JICAgIHAKLS0JfQotLSAgICB9JwotLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0tICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS1maQotKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKLSsgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0rCSAgL14wLyB7Ci0rCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCi0rCSAgICAgIHAKLSsJICB9Ci0rICAgICAgfScKLSsgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgIGZpCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKLSsgIGZpCi0rCi0rZmkKLSsKLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KLStmaQotIAotICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCi1AQCAtOTgyMSw3ICsxMDM1OCwxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAJZWxzZQotIAkgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCi0gCSAjIGVtcHR5IGV4ZWN1dGFibGUuCi0tCSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rCSBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKLStlbHNlCi0rICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoXytzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gCi0gaW50Ci1AQCAtOTgzNCwyMiArMTAzNzcsMjkgQEAgbWFpbiAoKQotIF9BQ0VPRgotIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSAKLS1sdF9haXhfbGlicGF0aF9zZWQ9JwotLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0tCS9eMC8gewotLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCi0tCSAgICBwCi0tCX0KLS0gICAgfScKLS1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tZmkKLSsgIGx0X2FpeF9saWJwYXRoX3NlZD0nCi0rICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotKwkgIC9eMC8gewotKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLwotKwkgICAgICBwCi0rCSAgfQotKyAgICAgIH0nCi0rICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICBmaQotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCi0rICBmaQotKwotK2ZpCi0rCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCi0rZmkKLSAKLSAJIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gCSAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKLUBAIC05ODkzLDIxICsxMDQ0Myw2NCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAgICAgICAjIFdoZW4gbm90IHVzaW5nIGdjYywgd2UgY3VycmVudGx5IGFzc3VtZSB0aGF0IHdlIGFyZSB1c2luZwotICAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCi0gICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcwotLSAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0tICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLS0gICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0tICAgICAgbGliZXh0PWxpYgotLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotLSAgICAgIHNocmV4dF9jbWRzPSIuZGxsIgotLSAgICAgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLS0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JwotLSAgICAgICMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCi0tICAgICAgb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKLS0gICAgICAjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgotLSAgICAgIG9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKLS0gICAgICBmaXhfc3JjZmlsZV9wYXRoPSdgY3lncGF0aCAtdyAiJHNyY2ZpbGUiYCcKLS0gICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotKyAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0rICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSsgICAgICBjbCopCi0rCSMgTmF0aXZlIE1TVkMKLSsJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLSsJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSsJYWx3YXlzX2V4cG9ydF9zeW1ib2xzPXllcwotKwlmaWxlX2xpc3Rfc3BlYz0nQCcKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLSsJbGliZXh0PWxpYgotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLSsJc2hyZXh0X2NtZHM9Ii5kbGwiCi0rCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KLSsJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgZWxzZQotKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLSsJICBmaX4KLSsJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+Ci0rCSAgbGlua25hbWVzPScKLSsJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgotKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgKT0ndHJ1ZScKLSsJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsJZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEsREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKwkjIERvbid0IHVzZSByYW5saWIKLSsJb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDY0NCAkb2xkbGliJwotKwlwb3N0bGlua19jbWRzPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+Ci0rCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KLSsJICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCi0rCSAgICAqLmV4ZXwqLkVYRSkgOzsKLSsJICAgICopCi0rCSAgICAgIGx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKLSsJICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKLSsJICAgICAgOzsKLSsJICBlc2FjfgotKwkgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCi0rCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOwotKwkgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7Ci0rCSAgZmknCi0rCTs7Ci0rICAgICAgKikKLSsJIyBBc3N1bWUgTVNWQyB3cmFwcGVyCi0rCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0rCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0rCWxpYmV4dD1saWIKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0rCXNocmV4dF9jbWRzPSIuZGxsIgotKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0rCWFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCi0rCSMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCi0rCW9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCi0rCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCi0rCW9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKLSsJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsJOzsKLSsgICAgICBlc2FjCi0gICAgICAgOzsKLSAKLSAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKLUBAIC05OTY4LDcgKzEwNTYxLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KLSAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQotLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJwotICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCi1AQCAtOTk3Niw3ICsxMDU2OSw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAotICAgICBocHV4OSopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSAgICAgICBmaQotQEAgLTk5OTIsNyArMTA1ODUsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgaHB1eDEwKikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwotICAgICAgIGZpCi1AQCAtMTAwMTYsMTAgKzEwNjA5LDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJaWE2NCopCi0tCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAkqKQotLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCWVzYWMKLSAgICAgICBlbHNlCi1AQCAtMTAwOTgsMjMgKzEwNjkxLDM2IEBAIGZpCi0gCi0gICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCSMgVHJ5IHRvIHVzZSB0aGUgLWV4cG9ydGVkX3N5bWJvbCBsZCBvcHRpb24sIGlmIGl0IGRvZXMgbm90Ci0gCSMgd29yaywgYXNzdW1lIHRoYXQgLWV4cG9ydHNfZmlsZSBkb2VzIG5vdCB3b3JrIGVpdGhlciBhbmQKLSAJIyBpbXBsaWNpdGx5IGV4cG9ydCBhbGwgc3ltYm9scy4KLS0gICAgICAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCi0tICAgICAgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCi0tICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCi0rCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgotKwkgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCi0rCSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0taW50IGZvbyh2b2lkKSB7fQotK2ludCBmb28gKHZvaWQpIHsgcmV0dXJuIDA7IH0KLSBfQUNFT0YKLSBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0tICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0tCi0rICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD15ZXMKLStlbHNlCi0rICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD1ubwotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0tICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgotKyAgICAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNjsgfQotKwlpZiB0ZXN0ICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID0geWVzOyB0aGVuCi0rICAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWZpCi0gICAgICAgZWxzZQotIAlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLUBAIC0xMDE5OSw3ICsxMDgwNSw3IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotIAlhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKLSAgICAgICBlbHNlCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJwotQEAgLTEwMjE4LDkgKzEwODI0LDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyAteiBkZWZzJwotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gCXdsYXJjPScke3dsfScKLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KLS0JICAkQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwotKwkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwotICAgICAgIGVsc2UKLSAJY2FzZSBgJENDIC1WIDI+JjFgIGluCi0gCSoiQ29tcGlsZXJzIDUuMCIqKQotQEAgLTEwNzk2LDggKzExNDAyLDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgbmVlZF92ZXJzaW9uPW5vCi0gICBuZWVkX2xpYl9wcmVmaXg9bm8KLSAKLS0gIGNhc2UgJEdDQywkaG9zdF9vcyBpbgotLSAgeWVzLGN5Z3dpbiogfCB5ZXMsbWluZ3cqIHwgeWVzLHB3MzIqIHwgeWVzLGNlZ2NjKikKLSsgIGNhc2UgJEdDQywkY2NfYmFzZW5hbWUgaW4KLSsgIHllcywqKQotKyAgICAjIGdjYwotICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJwotICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCi0gICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotQEAgLTEwODMwLDEzICsxMTQzNyw3MSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwotICAgICAgIDs7Ci0gICAgIGVzYWMKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSsgICAgOzsKLSsKLSsgICosY2wqKQotKyAgICAjIE5hdGl2ZSBNU1ZDCi0rICAgIGxpYm5hbWVfc3BlYz0nJG5hbWUnCi0rICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSsgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9LmRsbC5saWInCi0rCi0rICAgIGNhc2UgJGJ1aWxkX29zIGluCi0rICAgIG1pbmd3KikKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ci0rICAgICAgbHRfc2F2ZV9pZnM9JElGUwotKyAgICAgIElGUz0nOycKLSsgICAgICBmb3IgbHRfcGF0aCBpbiAkTElCCi0rICAgICAgZG8KLSsgICAgICAgIElGUz0kbHRfc2F2ZV9pZnMKLSsgICAgICAgICMgTGV0IERPUyB2YXJpYWJsZSBleHBhbnNpb24gcHJpbnQgdGhlIHNob3J0IDguMyBzdHlsZSBmaWxlIG5hbWUuCi0rICAgICAgICBsdF9wYXRoPWBjZCAiJGx0X3BhdGgiIDI+L2Rldi9udWxsICYmIGNtZCAvL0MgImZvciAlaSBpbiAoIi4iKSBkbyBAZWNobyAlfnNpImAKLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAkbHRfcGF0aCIKLSsgICAgICBkb25lCi0rICAgICAgSUZTPSRsdF9zYXZlX2lmcwotKyAgICAgICMgQ29udmVydCB0byBNU1lTIHN0eWxlLgotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgc2VkIC1lICdzfFxcXFx8L3xnJyAtZSAnc3wgXFwoW2EtekEtWl1cXCk6fCAvXFwxfGcnIC1lICdzfF4gfHwnYAotKyAgICAgIDs7Ci0rICAgIGN5Z3dpbiopCi0rICAgICAgIyBDb252ZXJ0IHRvIHVuaXggZm9ybSwgdGhlbiB0byBkb3MgZm9ybSwgdGhlbiBiYWNrIHRvIHVuaXggZm9ybQotKyAgICAgICMgYnV0IHRoaXMgdGltZSBkb3Mgc3R5bGUgKG5vIHNwYWNlcyEpIHNvIHRoYXQgdGhlIHVuaXggZm9ybSBsb29rcwotKyAgICAgICMgbGlrZSAvY3lnZHJpdmUvYy9QUk9HUkF+MTovY3lnZHIuLi4KLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJExJQiJgCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLWRvcyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgMj4vZGV2L251bGxgCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKLSsgICAgICA7OwotKyAgICAqKQotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJExJQiIKLSsgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkR1JFUCAnO1tjLXpDLVpdOi8nID4vZGV2L251bGw7IHRoZW4KLSsgICAgICAgICMgSXQgaXMgbW9zdCBwcm9iYWJseSBhIFdpbmRvd3MgZm9ybWF0IFBBVEguCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAotKyAgICAgIGVsc2UKLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKLSsgICAgICBmaQotKyAgICAgICMgRklYTUU6IGZpbmQgdGhlIHNob3J0IG5hbWUgb3IgdGhlIHBhdGggY29tcG9uZW50cywgYXMgc3BhY2VzIGFyZQotKyAgICAgICMgY29tbW9uLiAoZS5nLiAiUHJvZ3JhbSBGaWxlcyIgLT4gIlBST0dSQX4xIikKLSsgICAgICA7OwotKyAgICBlc2FjCi0rCi0rICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKLSsgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci0rICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJHtiYXNlX2ZpbGV9J1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KLSsgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+Ci0rICAgICAgdGVzdCAtZCBcJGRsZGlyIHx8IG1rZGlyIC1wIFwkZGxkaXJ+Ci0rICAgICAgJGluc3RhbGxfcHJvZyAkZGlyLyRkbG5hbWUgXCRkbGRpci8kZGxuYW1lJwotKyAgICBwb3N0dW5pbnN0YWxsX2NtZHM9J2RsZGxsPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZmlsZTsgZWNobyBcJGRsbmFtZSdcJydgfgotKyAgICAgIGRscGF0aD0kZGlyL1wkZGxkbGx+Ci0rICAgICAgICRSTSBcJGRscGF0aCcKLSsgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGluay5leGUnCi0gICAgIDs7Ci0gCi0gICAqKQotKyAgICAjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKLSAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fSAkbGlibmFtZS5saWInCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0gICAgIDs7Ci0gICBlc2FjCi0tICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCi0gICBzaGxpYnBhdGhfdmFyPVBBVEgKLSAgIDs7Ci1AQCAtMTA5MjgsNyArMTE1OTMsNyBAQCBoYWlrdSopCi0gICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwotICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKLSAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLS0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9iZW9zL3N5c3RlbS9saWInCi0rICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKLSAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKLSAgIDs7Ci0gCi1AQCAtMTE3NjgsMTAgKzEyNDMzLDEwIEBAIGVsc2UKLSAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCi0gICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLwotICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQotLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0raW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotICNlbmRpZgotIAotLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQotK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQotIGludCBtYWluICgpCi0gewotICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTE4NzQsMTAgKzEyNTM5LDEwIEBAIGVsc2UKLSAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCi0gICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLwotICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQotLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0raW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotICNlbmRpZgotIAotLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQotK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQotIGludCBtYWluICgpCi0gewotICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTIyNjksNiArMTI5MzQsNyBAQCAkUk0gLXIgY29uZnRlc3QqCi0gCi0gICAjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgotICAgbHRfc2F2ZV9DQz0kQ0MKLSsgIGx0X3NhdmVfQ0ZMQUdTPSRDRkxBR1MKLSAgIGx0X3NhdmVfTEQ9JExECi0gICBsdF9zYXZlX0dDQz0kR0NDCi0gICBHQ0M9JEdYWAotQEAgLTEyMjg2LDYgKzEyOTUyLDcgQEAgJFJNIC1yIGNvbmZ0ZXN0KgotICAgZmkKLSAgIHRlc3QgLXogIiR7TERDWFgrc2V0fSIgfHwgTEQ9JExEQ1hYCi0gICBDQz0ke0NYWC0iYysrIn0KLSsgIENGTEFHUz0kQ1hYRkxBR1MKLSAgIGNvbXBpbGVyPSRDQwotICAgY29tcGlsZXJfQ1hYPSRDQwotICAgZm9yIGNjX3RlbXAgaW4gJGNvbXBpbGVyIiI7IGRvCi1AQCAtMTI1NjgsNyArMTMyMzUsMTMgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGNvbXBpbGVyIGxpbmtlciAoJExEKSBzdXBwb3J0cyBzaGFyZWQgbGlicmFyaWUKLSAgICAgICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWdfQ1hYPSctYmVyb2snCi0gICAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbiBlbXB0eQotICAgICAgICAgICAjIGV4ZWN1dGFibGUuCi0tICAgICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsgICAgICAgICAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCi0rZWxzZQotKyAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aF9fQ1hYK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAKLSBpbnQKLUBAIC0xMjU4MSwyMiArMTMyNTQsMjkgQEAgbWFpbiAoKQotIF9BQ0VPRgotIGlmIGFjX2ZuX2N4eF90cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotIAotLWx0X2FpeF9saWJwYXRoX3NlZD0nCi0tICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLS0JL14wLyB7Ci0tCSAgICBzL14wICAqXCguKlwpJC9cMS8KLS0JICAgIHAKLS0JfQotLSAgICB9JwotLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0tICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS1maQotKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKLSsgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0rCSAgL14wLyB7Ci0rCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCi0rCSAgICAgIHAKLSsJICB9Ci0rICAgICAgfScKLSsgIGx0X2N2X2FpeF9saWJwYXRoX19DWFg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWCI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgIGZpCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF9fQ1hYIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF9fQ1hYPSIvdXNyL2xpYjovbGliIgotKyAgZmkKLSsKLStmaQotKwotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoX19DWFgKLStmaQotIAotICAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAKLUBAIC0xMjYwOSw3ICsxMzI4OSwxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAgICAgICAgICAgZWxzZQotIAkgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCi0gCSAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCi0tCSAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rCSAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKLStlbHNlCi0rICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoX19DWFgrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotIAotIGludAotQEAgLTEyNjIyLDIyICsxMzMwOCwyOSBAQCBtYWluICgpCi0gX0FDRU9GCi0gaWYgYWNfZm5fY3h4X3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0gCi0tbHRfYWl4X2xpYnBhdGhfc2VkPScKLS0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotLQkvXjAvIHsKLS0JICAgIHMvXjAgICpcKC4qXCkkL1wxLwotLQkgICAgcAotLQl9Ci0tICAgIH0nCi0tYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLS0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLWZpCi0rICBsdF9haXhfbGlicGF0aF9zZWQ9JwotKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLSsJICAvXjAvIHsKLSsJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KLSsJICAgICAgcAotKwkgIH0KLSsgICAgICB9JwotKyAgbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF9fQ1hYIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF9fQ1hYPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgZmkKLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoX19DWFgiOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoX19DWFg9Ii91c3IvbGliOi9saWIiCi0rICBmaQotKwotK2ZpCi0rCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWAotK2ZpCi0gCi0gCSAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAJICAgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCi1AQCAtMTI2ODAsMjkgKzEzMzczLDc1IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotICAgICAgICAgOzsKLSAKLSAgICAgICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0tICAgICAgICAjIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgQ1hYKSBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywKLS0gICAgICAgICMgYXMgdGhlcmUgaXMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0tICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nLUwkbGliZGlyJwotLSAgICAgICAgZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjX0NYWD0nJHt3bH0tLWV4cG9ydC1hbGwtc3ltYm9scycKLS0gICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnX0NYWD11bnN1cHBvcnRlZAotLSAgICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzX0NYWD1ubwotLSAgICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lc19DWFg9eWVzCi0tCi0tICAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCi0tICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLS0gICAgICAgICAgIyBJZiB0aGUgZXhwb3J0LXN5bWJvbHMgZmlsZSBhbHJlYWR5IGlzIGEgLmRlZiBmaWxlICgxc3QgbGluZQotLSAgICAgICAgICAjIGlzIEVYUE9SVFMpLCB1c2UgaXQgYXMgaXM7IG90aGVyd2lzZSwgcHJlcGVuZC4uLgotLSAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KLS0JICAgIGNwICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLS0gICAgICAgICAgZWxzZQotLQkgICAgZWNobyBFWFBPUlRTID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7Ci0tCSAgICBjYXQgJGV4cG9ydF9zeW1ib2xzID4+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOwotLSAgICAgICAgICBmaX4KLS0gICAgICAgICAgJENDIC1zaGFyZWQgLW5vc3RkbGliICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotLSAgICAgICAgZWxzZQotLSAgICAgICAgICBsZF9zaGxpYnNfQ1hYPW5vCi0tICAgICAgICBmaQotLSAgICAgICAgOzsKLSsJY2FzZSAkR1hYLCRjY19iYXNlbmFtZSBpbgotKwksY2wqIHwgbm8sY2wqKQotKwkgICMgTmF0aXZlIE1TVkMKLSsJICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCi0rCSAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KLSsJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nICcKLSsJICBhbGxvd191bmRlZmluZWRfZmxhZ19DWFg9dW5zdXBwb3J0ZWQKLSsJICBhbHdheXNfZXhwb3J0X3N5bWJvbHNfQ1hYPXllcwotKwkgIGZpbGVfbGlzdF9zcGVjX0NYWD0nQCcKLSsJICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotKwkgIGxpYmV4dD1saWIKLSsJICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLSsJICBzaHJleHRfY21kcz0iLmRsbCIKLSsJICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0rCSAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCi0rCSAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCi0rCSAgICAgICRTRUQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOwotKwkgICAgZWxzZQotKwkgICAgICAkU0VEIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLSsJICAgIGZpfgotKwkgICAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgotKwkgICAgbGlua25hbWVzPScKLSsJICAjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCi0rCSAgIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsIENYWCk9J3RydWUnCi0rCSAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lc19DWFg9eWVzCi0rCSAgIyBEb24ndCB1c2UgcmFubGliCi0rCSAgb2xkX3Bvc3RpbnN0YWxsX2NtZHNfQ1hYPSdjaG1vZCA2NDQgJG9sZGxpYicKLSsJICBwb3N0bGlua19jbWRzX0NYWD0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgotKwkgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KLSsJICAgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KLSsJICAgICAgKi5leGV8Ki5FWEUpIDs7Ci0rCSAgICAgICopCi0rCQlsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCi0rCQlsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgotKwkJOzsKLSsJICAgIGVzYWN+Ci0rCSAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJGx0X291dHB1dGZpbGUifgotKwkgICAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KLSsJICAgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKLSsJICAgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7Ci0rCSAgICBmaScKLSsJICA7OwotKwkqKQotKwkgICMgZysrCi0rCSAgIyBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsIENYWCkgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsCi0rCSAgIyBhcyB0aGVyZSBpcyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KLSsJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nLUwkbGliZGlyJwotKwkgIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY19DWFg9JyR7d2x9LS1leHBvcnQtYWxsLXN5bWJvbHMnCi0rCSAgYWxsb3dfdW5kZWZpbmVkX2ZsYWdfQ1hYPXVuc3VwcG9ydGVkCi0rCSAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzX0NYWD1ubwotKwkgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXNfQ1hYPXllcwotKwotKwkgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KLSsJICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLSsJICAgICMgSWYgdGhlIGV4cG9ydC1zeW1ib2xzIGZpbGUgYWxyZWFkeSBpcyBhIC5kZWYgZmlsZSAoMXN0IGxpbmUKLSsJICAgICMgaXMgRVhQT1JUUyksIHVzZSBpdCBhcyBpczsgb3RoZXJ3aXNlLCBwcmVwZW5kLi4uCi0rCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KLSsJICAgICAgY3AgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOwotKwkgICAgZWxzZQotKwkgICAgICBlY2hvIEVYUE9SVFMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLSsJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyA+PiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLSsJICAgIGZpfgotKwkgICAgJENDIC1zaGFyZWQgLW5vc3RkbGliICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotKwkgIGVsc2UKLSsJICAgIGxkX3NobGlic19DWFg9bm8KLSsJICBmaQotKwkgIDs7Ci0rCWVzYWMKLSsJOzsKLSAgICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQotIAotIAotQEAgLTEyODA4LDcgKzEzNTQ3LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gICAgICAgICAgICAgOzsKLSAgICAgICAgICAgKikKLSAgICAgICAgICAgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgotLSAgICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0rICAgICAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHBpY19mbGFnICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0gICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0Ci0gICAgICAgICAgICAgICBsZF9zaGxpYnNfQ1hYPW5vCi1AQCAtMTI4NzksMTAgKzEzNjE4LDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAkgICAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgICAgICAgICAgIDs7Ci0gCSAgICAgICAgICBpYTY0KikKLS0JICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJwotKwkgICAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgICAgICAgICAgICA7OwotIAkgICAgICAgICAgKikKLS0JICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKLSAJICAgICAgICAgICAgOzsKLSAJICAgICAgICBlc2FjCi0gCSAgICAgIGZpCi1AQCAtMTI5MjMsOSArMTM2NjIsOSBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAgICAgICAgICAgKikKLSAJICAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCi0gCSAgICAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgotLQkgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSsJICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAkgICAgICBlbHNlCi0tCSAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAtbyAkbGliJwotKwkgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgIC1vICRsaWInCi0gCSAgICAgIGZpCi0gCSAgICBmaQotIAkgICAgbGlua19hbGxfZGVwbGlic19DWFg9eWVzCi1AQCAtMTI5OTUsMjAgKzEzNzM0LDIwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAkgICAgICBwcmVsaW5rX2NtZHNfQ1hYPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgotIAkJcm0gLXJmICR0cGxkaXJ+Ci0gCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRvYmpzICRsaWJvYmpzICRjb21waWxlX2RlcGxpYnN+Ci0tCQljb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgJE5MMlNQYCInCi0rCQljb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGAiJwotIAkgICAgICBvbGRfYXJjaGl2ZV9jbWRzX0NYWD0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KLSAJCXJtIC1yZiAkdHBsZGlyfgotIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkb2xkb2JqcyRvbGRfZGVwbGlic34KLS0JCSRBUiAkQVJfRkxBR1MgJG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGB+Ci0rCQkkQVIgJEFSX0ZMQUdTICRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYH4KLSAJCSRSQU5MSUIgJG9sZGxpYicKLSAJICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KLSAJCXJtIC1yZiAkdHBsZGlyfgotIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJGNvbnZlbmllbmNlICRwb3N0ZGVwX29iamVjdHN+Ci0tCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAtbyAkbGliJwotKwkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIC1vICRsaWInCi0gCSAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgotIAkJcm0gLXJmICR0cGxkaXJ+Ci0gCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkY29udmVuaWVuY2UgJHBvc3RkZXBfb2JqZWN0c34KLS0JCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gCSAgICAgIDs7Ci0gCSAgICAqKSAjIFZlcnNpb24gNiBhbmQgYWJvdmUgdXNlIHdlYWsgc3ltYm9scwotIAkgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgLW8gJGxpYicKLUBAIC0xMzIwMyw3ICsxMzk0Miw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAkgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliICR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAkJICA7OwotIAkgICAgICAgICopCi0tCSAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSsJICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJCSAgOzsKLSAJICAgICAgZXNhYwotIAotQEAgLTEzMjQ5LDcgKzEzOTg4LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgICAgc29sYXJpcyopCi0gICAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotLSAgICAgICAgICBDQyopCi0rICAgICAgICAgIENDKiB8IHN1bkNDKikKLSAJICAgICMgU3VuIEMrKyA0LjIsIDUueCBhbmQgQ2VudGVybGluZSBDKysKLSAgICAgICAgICAgICBhcmNoaXZlX2NtZHNfbmVlZF9sY19DWFg9eWVzCi0gCSAgICBub191bmRlZmluZWRfZmxhZ19DWFg9JyAtemRlZnMnCi1AQCAtMTMyOTAsOSArMTQwMjksOSBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAJICAgIGlmIHRlc3QgIiRHWFgiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgotIAkgICAgICBub191bmRlZmluZWRfZmxhZ19DWFg9JyAke3dsfS16ICR7d2x9ZGVmcycKLSAJICAgICAgaWYgJENDIC0tdmVyc2lvbiB8ICRHUkVQIC12ICdeMlwuNycgPiAvZGV2L251bGw7IHRoZW4KLS0JICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJExERkxBR1MgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWggJHdsJHNvbmFtZSAtbyAkbGliJwotKwkgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJExERkxBR1MgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWggJHdsJHNvbmFtZSAtbyAkbGliJwotIAkgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+Ci0tCQkgICRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAke3dsfS1NICR3bCRsaWIuZXhwIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKLSsJCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAke3dsfS1NICR3bCRsaWIuZXhwIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKLSAKLSAJICAgICAgICAjIENvbW1hbmRzIHRvIG1ha2UgY29tcGlsZXIgcHJvZHVjZSB2ZXJib3NlIG91dHB1dCB0aGF0IGxpc3RzCi0gCSAgICAgICAgIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCi1AQCAtMTM0MjcsNiArMTQxNjYsMTMgQEAgcHJpdmF0ZToKLSB9OwotIF9MVF9FT0YKLSAKLSsKLStfbHRfbGliZGVwc19zYXZlX0NGTEFHUz0kQ0ZMQUdTCi0rY2FzZSAiJENDICRDRkxBR1MgIiBpbiAjKAotKypcIC1mbHRvKlwgKikgQ0ZMQUdTPSIkQ0ZMQUdTIC1mbm8tbHRvIiA7OwotKypcIC1md2hvcHIqXCAqKSBDRkxBR1M9IiRDRkxBR1MgLWZuby13aG9wciIgOzsKLStlc2FjCi0rCi0gaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2NvbXBpbGVcIiI7IH0gPiY1Ci0gICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQotICAgYWNfc3RhdHVzPSQ/Ci1AQCAtMTM0NDAsNyArMTQxODYsNyBAQCBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfY29tcGlsZVwiIjsgfSA+JjUKLSAgIHByZV90ZXN0X29iamVjdF9kZXBzX2RvbmU9bm8KLSAKLSAgIGZvciBwIGluIGBldmFsICIkb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQiYDsgZG8KLS0gICAgY2FzZSAkcCBpbgotKyAgICBjYXNlICR7cHJldn0ke3B9IGluCi0gCi0gICAgIC1MKiB8IC1SKiB8IC1sKikKLSAgICAgICAgIyBTb21lIGNvbXBpbGVycyBwbGFjZSBzcGFjZSBiZXR3ZWVuICIte0wsUn0iIGFuZCB0aGUgcGF0aC4KLUBAIC0xMzQ0OSwxMyArMTQxOTUsMjIgQEAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2NvbXBpbGVcIiI7IH0gPiY1Ci0gICAgICAgICAgIHRlc3QgJHAgPSAiLVIiOyB0aGVuCi0gCSBwcmV2PSRwCi0gCSBjb250aW51ZQotLSAgICAgICBlbHNlCi0tCSBwcmV2PQotICAgICAgICBmaQotIAotKyAgICAgICAjIEV4cGFuZCB0aGUgc3lzcm9vdCB0byBlYXNlIGV4dHJhY3RpbmcgdGhlIGRpcmVjdG9yaWVzIGxhdGVyLgotKyAgICAgICBpZiB0ZXN0IC16ICIkcHJldiI7IHRoZW4KLSsgICAgICAgICBjYXNlICRwIGluCi0rICAgICAgICAgLUwqKSBmdW5jX3N0cmlwbmFtZV9jbmYgJy1MJyAnJyAiJHAiOyBwcmV2PS1MOyBwPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKLSsgICAgICAgICAtUiopIGZ1bmNfc3RyaXBuYW1lX2NuZiAnLVInICcnICIkcCI7IHByZXY9LVI7IHA9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OwotKyAgICAgICAgIC1sKikgZnVuY19zdHJpcG5hbWVfY25mICctbCcgJycgIiRwIjsgcHJldj0tbDsgcD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7Ci0rICAgICAgICAgZXNhYwotKyAgICAgICBmaQotKyAgICAgICBjYXNlICRwIGluCi0rICAgICAgID0qKSBmdW5jX3N0cmlwbmFtZV9jbmYgJz0nICcnICIkcCI7IHA9JGx0X3N5c3Jvb3QkZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7Ci0rICAgICAgIGVzYWMKLSAgICAgICAgaWYgdGVzdCAiJHByZV90ZXN0X29iamVjdF9kZXBzX2RvbmUiID0gbm87IHRoZW4KLS0JIGNhc2UgJHAgaW4KLS0JIC1MKiB8IC1SKikKLSsJIGNhc2UgJHtwcmV2fSBpbgotKwkgLUwgfCAtUikKLSAJICAgIyBJbnRlcm5hbCBjb21waWxlciBsaWJyYXJ5IHBhdGhzIHNob3VsZCBjb21lIGFmdGVyIHRob3NlCi0gCSAgICMgcHJvdmlkZWQgdGhlIHVzZXIuICBUaGUgcG9zdGRlcHMgYWxyZWFkeSBjb21lIGFmdGVyIHRoZQotIAkgICAjIHVzZXIgc3VwcGxpZWQgbGlicyBzbyB0aGVyZSBpcyBubyBuZWVkIHRvIHByb2Nlc3MgdGhlbS4KLUBAIC0xMzQ3NSw4ICsxNDIzMCwxMCBAQCBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfY29tcGlsZVwiIjsgfSA+JjUKLSAJICAgcG9zdGRlcHNfQ1hYPSIke3Bvc3RkZXBzX0NYWH0gJHtwcmV2fSR7cH0iCi0gCSBmaQotICAgICAgICBmaQotKyAgICAgICBwcmV2PQotICAgICAgICA7OwotIAotKyAgICAqLmx0by4kb2JqZXh0KSA7OyAjIElnbm9yZSBHQ0MgTFRPIG9iamVjdHMKLSAgICAgKi4kb2JqZXh0KQotICAgICAgICAjIFRoaXMgYXNzdW1lcyB0aGF0IHRoZSB0ZXN0IG9iamVjdCBmaWxlIG9ubHkgc2hvd3MgdXAKLSAgICAgICAgIyBvbmNlIGluIHRoZSBjb21waWxlciBvdXRwdXQuCi1AQCAtMTM1MTIsNiArMTQyNjksNyBAQCBlbHNlCi0gZmkKLSAKLSAkUk0gLWYgY29uZmVzdC4kb2JqZXh0Ci0rQ0ZMQUdTPSRfbHRfbGliZGVwc19zYXZlX0NGTEFHUwotIAotICMgUE9SVE1FOiBvdmVycmlkZSBhYm92ZSB0ZXN0IG9uIHN5c3RlbXMgd2hlcmUgaXQgaXMgYnJva2VuCi0gY2FzZSAkaG9zdF9vcyBpbgotQEAgLTEzNTQ3LDcgKzE0MzA1LDcgQEAgbGludXgqKQotIAotIHNvbGFyaXMqKQotICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLS0gIENDKikKLSsgIENDKiB8IHN1bkNDKikKLSAgICAgIyBUaGUgbW9yZSBzdGFuZGFyZHMtY29uZm9ybWluZyBzdGxwb3J0NCBsaWJyYXJ5IGlzCi0gICAgICMgaW5jb21wYXRpYmxlIHdpdGggdGhlIENzdGQgbGlicmFyeS4gQXZvaWQgc3BlY2lmeWluZwotICAgICAjIGl0IGlmIGl0J3MgaW4gQ1hYRkxBR1MuIElnbm9yZSBsaWJDcnVuIGFzCi1AQCAtMTM2MTIsOCArMTQzNzAsNiBAQCBmaQotIGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWD0KLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY19DWFg9Ci0gCi0teyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1Ci0tJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAKLSAgICMgQysrIHNwZWNpZmljIGNhc2VzIGZvciBwaWMsIHN0YXRpYywgd2wsIGV0Yy4KLSAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCi1AQCAtMTM3MTgsNiArMTQ0NzQsMTEgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAJICA7OwotIAllc2FjCi0gCTs7Ci0rICAgICAgbWluZ3cqIHwgY3lnd2luKiB8IG9zMiogfCBwdzMyKiB8IGNlZ2NjKikKLSsJIyBUaGlzIGhhY2sgaXMgc28gdGhhdCB0aGUgc291cmNlIGZpbGUgY2FuIHRlbGwgd2hldGhlciBpdCBpcyBiZWluZwotKwkjIGJ1aWx0IGZvciBpbmNsdXNpb24gaW4gYSBkbGwgKGFuZCBzaG91bGQgZXhwb3J0IHN5bWJvbHMgZm9yIGV4YW1wbGUpLgotKwlsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFg9Jy1ERExMX0VYUE9SVCcKLSsJOzsKLSAgICAgICBkZ3V4KikKLSAJY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAJICBlYysrKikKLUBAIC0xMzg3MCw3ICsxNDYzMSw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gCTs7Ci0gICAgICAgc29sYXJpcyopCi0gCWNhc2UgJGNjX2Jhc2VuYW1lIGluCi0tCSAgQ0MqKQotKwkgIENDKiB8IHN1bkNDKikKLSAJICAgICMgU3VuIEMrKyA0LjIsIDUueCBhbmQgQ2VudGVybGluZSBDKysKLSAJICAgIGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWD0nLUtQSUMnCi0gCSAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY19DWFg9Jy1Cc3RhdGljJwotQEAgLTEzOTM1LDEwICsxNDY5NiwxNyBAQCBjYXNlICRob3N0X29zIGluCi0gICAgIGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWD0iJGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWCAtRFBJQyIKLSAgICAgOzsKLSBlc2FjCi0teyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFgiID4mNQotLSRhc19lY2hvICIkbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYIiA+JjY7IH0KLS0KLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWNfQ1hYK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3ZfcHJvZ19jb21waWxlcl9waWNfQ1hYPSRsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFgKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcHJvZ19jb21waWxlcl9waWNfQ1hYIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljX0NYWCIgPiY2OyB9Ci0rbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYPSRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpY19DWFgKLSAKLSAjCi0gIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgotQEAgLTEzOTk2LDYgKzE0NzY0LDggQEAgZmkKLSAKLSAKLSAKLSsKLSsKLSAjCi0gIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgotICMKLUBAIC0xNDE3Myw2ICsxNDk0Myw3IEBAIGZpCi0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGNvbXBpbGVyIGxpbmtlciAoJExEKSBzdXBwb3J0cyBzaGFyZWQgbGlicmFyaWVzLi4uICIgPiY2OyB9Ci0gCi0gICBleHBvcnRfc3ltYm9sc19jbWRzX0NYWD0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEICdcJydzLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKyAgZXhjbHVkZV9leHBzeW1zX0NYWD0nX0dMT0JBTF9PRkZTRVRfVEFCTEVffF9HTE9CQUxfX0ZbSURdXy4qJwotICAgY2FzZSAkaG9zdF9vcyBpbgotICAgYWl4WzQtOV0qKQotICAgICAjIElmIHdlJ3JlIHVzaW5nIEdOVSBubSwgdGhlbiB3ZSBkb24ndCB3YW50IHRoZSAiLUMiIG9wdGlvbi4KLUBAIC0xNDE4NywxNSArMTQ5NTgsMjAgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGNvbXBpbGVyIGxpbmtlciAoJExEKSBzdXBwb3J0cyBzaGFyZWQgbGlicmFyaWUKLSAgICAgOzsKLSAgIHB3MzIqKQotICAgICBleHBvcnRfc3ltYm9sc19jbWRzX0NYWD0iJGx0ZGxsX2NtZHMiCi0tICA7OwotKyAgICA7OwotICAgY3lnd2luKiB8IG1pbmd3KiB8IGNlZ2NjKikKLS0gICAgZXhwb3J0X3N5bWJvbHNfY21kc19DWFg9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvOy9eLipbIF1fX25tX18vcy9eLipbIF1fX25tX19cKFteIF0qXClbIF1bXiBdKi9cMSBEQVRBLzsvXklbIF0vZDsvXltBSVRXXVsgXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotLSAgOzsKLSsgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSsgICAgY2wqKSA7OwotKyAgICAqKQotKyAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHNfQ1hYPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLztzL14uKlsgXV9fbm1fX1woW14gXSpcKVsgXVteIF0qL1wxIERBVEEvOy9eSVsgXS9kOy9eW0FJVFddWyBdL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rICAgICAgZXhjbHVkZV9leHBzeW1zX0NYWD0nW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJwotKyAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLSAgICopCi0gICAgIGV4cG9ydF9zeW1ib2xzX2NtZHNfQ1hYPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgJ1wnJ3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0tICA7OwotKyAgICA7OwotICAgZXNhYwotLSAgZXhjbHVkZV9leHBzeW1zX0NYWD0nX0dMT0JBTF9PRkZTRVRfVEFCTEVffF9HTE9CQUxfX0ZbSURdXy4qJwotIAotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbGRfc2hsaWJzX0NYWCIgPiY1Ci0gJGFzX2VjaG8gIiRsZF9zaGxpYnNfQ1hYIiA+JjY7IH0KLUBAIC0xNDQ1OCw4ICsxNTIzNCw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgIG5lZWRfdmVyc2lvbj1ubwotICAgbmVlZF9saWJfcHJlZml4PW5vCi0gCi0tICBjYXNlICRHQ0MsJGhvc3Rfb3MgaW4KLS0gIHllcyxjeWd3aW4qIHwgeWVzLG1pbmd3KiB8IHllcyxwdzMyKiB8IHllcyxjZWdjYyopCi0rICBjYXNlICRHQ0MsJGNjX2Jhc2VuYW1lIGluCi0rICB5ZXMsKikKLSsgICAgIyBnY2MKLSAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKLSAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwotICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLUBAIC0xNDQ5MSwxMyArMTUyNjgsNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSAgICAgICA7OwotICAgICBlc2FjCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0rICAgIDs7Ci0rCi0rICAqLGNsKikKLSsgICAgIyBOYXRpdmUgTVNWQwotKyAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJwotKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0rICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJwotKwotKyAgICBjYXNlICRidWlsZF9vcyBpbgotKyAgICBtaW5ndyopCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQotKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKLSsgICAgICBJRlM9JzsnCi0rICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgotKyAgICAgIGRvCi0rICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCi0rICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgotKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCi0rICAgICAgZG9uZQotKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKLSsgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFthLXpBLVpdXFwpOnwgL1xcMXxnJyAtZSAnc3xeIHx8J2AKLSsgICAgICA7OwotKyAgICBjeWd3aW4qKQotKyAgICAgICMgQ29udmVydCB0byB1bml4IGZvcm0sIHRoZW4gdG8gZG9zIGZvcm0sIHRoZW4gYmFjayB0byB1bml4IGZvcm0KLSsgICAgICAjIGJ1dCB0aGlzIHRpbWUgZG9zIHN0eWxlIChubyBzcGFjZXMhKSBzbyB0aGF0IHRoZSB1bml4IGZvcm0gbG9va3MKLSsgICAgICAjIGxpa2UgL2N5Z2RyaXZlL2MvUFJPR1JBfjE6L2N5Z2RyLi4uCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRMSUIiYAotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS1kb3MgIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIDI+L2Rldi9udWxsYAotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0rICAgICAgOzsKLSsgICAgKikKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCi0rICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsOyB0aGVuCi0rICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRILgotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKLSsgICAgICBlbHNlCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0rICAgICAgZmkKLSsgICAgICAjIEZJWE1FOiBmaW5kIHRoZSBzaG9ydCBuYW1lIG9yIHRoZSBwYXRoIGNvbXBvbmVudHMsIGFzIHNwYWNlcyBhcmUKLSsgICAgICAjIGNvbW1vbi4gKGUuZy4gIlByb2dyYW0gRmlsZXMiIC0+ICJQUk9HUkF+MSIpCi0rICAgICAgOzsKLSsgICAgZXNhYwotKwotKyAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCi0rICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+Ci0rICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgotKyAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgotKyAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZScKLSsgICAgcG9zdHVuaW5zdGFsbF9jbWRzPSdkbGRsbD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGZpbGU7IGVjaG8gXCRkbG5hbWUnXCcnYH4KLSsgICAgICBkbHBhdGg9JGRpci9cJGRsZGxsfgotKyAgICAgICAkUk0gXCRkbHBhdGgnCi0rICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxpbmsuZXhlJwotICAgICA7OwotIAotICAgKikKLSsgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCi0gICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotICAgICA7OwotICAgZXNhYwotLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgotICAgc2hsaWJwYXRoX3Zhcj1QQVRICi0gICA7OwotQEAgLTE0NTg4LDcgKzE1NDIzLDcgQEAgaGFpa3UqKQotICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKLSAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICi0gICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0tICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3QvYmVvcy9zeXN0ZW0vbGliJwotKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L3N5c3RlbS9saWInCi0gICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCi0gICA7OwotIAotQEAgLTE1MDQ3LDYgKzE1ODgyLDcgQEAgZmkKLSAgIGZpICMgdGVzdCAtbiAiJGNvbXBpbGVyIgotIAotICAgQ0M9JGx0X3NhdmVfQ0MKLSsgIENGTEFHUz0kbHRfc2F2ZV9DRkxBR1MKLSAgIExEQ1hYPSRMRAotICAgTEQ9JGx0X3NhdmVfTEQKLSAgIEdDQz0kbHRfc2F2ZV9HQ0MKLUBAIC0xODAyNiwxMyArMTg4NjIsMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Vuc2V0PSdgJEVDSE8gIiRsdF91bnNldCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfU1AyTkw9J2AkRUNITyAiJGx0X1NQMk5MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9OTDJTUD0nYCRFQ0hPICIkbHRfTkwyU1AiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHJlbG9hZF9mbGFnPSdgJEVDSE8gIiRyZWxvYWRfZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gcmVsb2FkX2NtZHM9J2AkRUNITyAiJHJlbG9hZF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBPQkpEVU1QPSdgJEVDSE8gIiRPQkpEVU1QIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBkZXBsaWJzX2NoZWNrX21ldGhvZD0nYCRFQ0hPICIkZGVwbGlic19jaGVja19tZXRob2QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGZpbGVfbWFnaWNfY21kPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rZmlsZV9tYWdpY19nbG9iPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2dsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK3dhbnRfbm9jYXNlZ2xvYj0nYCRFQ0hPICIkd2FudF9ub2Nhc2VnbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStETExUT09MPSdgJEVDSE8gIiRETExUT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0nYCRFQ0hPICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIEFSPSdgJEVDSE8gIiRBUiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gQVJfRkxBR1M9J2AkRUNITyAiJEFSX0ZMQUdTIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSthcmNoaXZlcl9saXN0X3NwZWM9J2AkRUNITyAiJGFyY2hpdmVyX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gU1RSSVA9J2AkRUNITyAiJFNUUklQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBSQU5MSUI9J2AkRUNITyAiJFJBTkxJQiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2AkRUNITyAiJG9sZF9wb3N0aW5zdGFsbF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xODA0NywxNCArMTg4OTAsMTcgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgfCAkU0VEICIkZGUKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbm1fZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJG5tX2ZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9zeXNyb290PSdgJEVDSE8gIiRsdF9zeXNyb290IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBvYmpkaXI9J2AkRUNITyAiJG9iamRpciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTUFHSUNfQ01EPSdgJEVDSE8gIiRNQUdJQ19DTUQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0tbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9waWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9zdGF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vPSdgJEVDSE8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbmVlZF9sb2Nrcz0nYCRFQ0hPICIkbmVlZF9sb2NrcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rTUFOSUZFU1RfVE9PTD0nYCRFQ0hPICIkTUFOSUZFU1RfVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gRFNZTVVUSUw9J2AkRUNITyAiJERTWU1VVElMIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBOTUVESVQ9J2AkRUNITyAiJE5NRURJVCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTElQTz0nYCRFQ0hPICIkTElQTyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTgwODcsMTIgKzE4OTMzLDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xCi0gaGFyZGNvZGVfYXV0b21hdGljPSdgJEVDSE8gIiRoYXJkY29kZV9hdXRvbWF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGluaGVyaXRfcnBhdGg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGxpbmtfYWxsX2RlcGxpYnM9J2AkRUNITyAiJGxpbmtfYWxsX2RlcGxpYnMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotLWZpeF9zcmNmaWxlX3BhdGg9J2AkRUNITyAiJGZpeF9zcmNmaWxlX3BhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGFsd2F5c19leHBvcnRfc3ltYm9scz0nYCRFQ0hPICIkYWx3YXlzX2V4cG9ydF9zeW1ib2xzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBleHBvcnRfc3ltYm9sc19jbWRzPSdgJEVDSE8gIiRleHBvcnRfc3ltYm9sc19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBleGNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGV4Y2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gaW5jbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHByZWxpbmtfY21kcz0nYCRFQ0hPICIkcHJlbGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStwb3N0bGlua19jbWRzPSdgJEVDSE8gIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBmaWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSdgJEVDSE8gIiR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbmVlZF9saWJfcHJlZml4PSdgJEVDSE8gIiRuZWVkX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTE4MTMxLDggKzE4OTc3LDggQEAgb2xkX2FyY2hpdmVfY21kc19DWFg9J2AkRUNITyAiJG9sZF9hcmNoaXZlX2NtZHNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGUKLSBjb21waWxlcl9DWFg9J2AkRUNITyAiJGNvbXBpbGVyX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gR0NDX0NYWD0nYCRFQ0hPICIkR0NDX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWdfQ1hYPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZ19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotLWx0X3Byb2dfY29tcGlsZXJfd2xfQ1hYPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X3Byb2dfY29tcGlsZXJfd2xfQ1hYPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWNfQ1hYPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vX0NYWD0nYCRFQ0hPICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX29fQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBhcmNoaXZlX2NtZHNfbmVlZF9sY19DWFg9J2AkRUNITyAiJGFyY2hpdmVfY21kc19uZWVkX2xjX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTgxNTksMTIgKzE5MDA1LDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXJfQ1hYPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyX0NYWCIgfCAkU0VEICIkZGVsYXlfCi0gaGFyZGNvZGVfYXV0b21hdGljX0NYWD0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gaW5oZXJpdF9ycGF0aF9DWFg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGhfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsaW5rX2FsbF9kZXBsaWJzX0NYWD0nYCRFQ0hPICIkbGlua19hbGxfZGVwbGlic19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotLWZpeF9zcmNmaWxlX3BhdGhfQ1hYPSdgJEVDSE8gIiRmaXhfc3JjZmlsZV9wYXRoX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gYWx3YXlzX2V4cG9ydF9zeW1ib2xzX0NYWD0nYCRFQ0hPICIkYWx3YXlzX2V4cG9ydF9zeW1ib2xzX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZXhwb3J0X3N5bWJvbHNfY21kc19DWFg9J2AkRUNITyAiJGV4cG9ydF9zeW1ib2xzX2NtZHNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBleGNsdWRlX2V4cHN5bXNfQ1hYPSdgJEVDSE8gIiRleGNsdWRlX2V4cHN5bXNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBpbmNsdWRlX2V4cHN5bXNfQ1hYPSdgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBwcmVsaW5rX2NtZHNfQ1hYPSdgJEVDSE8gIiRwcmVsaW5rX2NtZHNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStwb3N0bGlua19jbWRzX0NYWD0nYCRFQ0hPICIkcG9zdGxpbmtfY21kc19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGZpbGVfbGlzdF9zcGVjX0NYWD0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBoYXJkY29kZV9hY3Rpb25fQ1hYPSdgJEVDSE8gIiRoYXJkY29kZV9hY3Rpb25fQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBjb21waWxlcl9saWJfc2VhcmNoX2RpcnNfQ1hYPSdgJEVDSE8gIiRjb21waWxlcl9saWJfc2VhcmNoX2RpcnNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xODIwMiw4ICsxOTA0OCwxMyBAQCByZWxvYWRfZmxhZyBcCi0gT0JKRFVNUCBcCi0gZGVwbGlic19jaGVja19tZXRob2QgXAotIGZpbGVfbWFnaWNfY21kIFwKLStmaWxlX21hZ2ljX2dsb2IgXAotK3dhbnRfbm9jYXNlZ2xvYiBcCi0rRExMVE9PTCBcCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQgXAotIEFSIFwKLSBBUl9GTEFHUyBcCi0rYXJjaGl2ZXJfbGlzdF9zcGVjIFwKLSBTVFJJUCBcCi0gUkFOTElCIFwKLSBDQyBcCi1AQCAtMTgyMTMsMTIgKzE5MDY0LDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIFwKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyBcCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCBcCi0rbm1fZmlsZV9saXN0X3NwZWMgXAotIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIFwKLS1sdF9wcm9nX2NvbXBpbGVyX3dsIFwKLSBsdF9wcm9nX2NvbXBpbGVyX3BpYyBcCi0rbHRfcHJvZ19jb21waWxlcl93bCBcCi0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWMgXAotIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIFwKLSBuZWVkX2xvY2tzIFwKLStNQU5JRkVTVF9UT09MIFwKLSBEU1lNVVRJTCBcCi0gTk1FRElUIFwKLSBMSVBPIFwKLUBAIC0xODIzNCw3ICsxOTA4Nyw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKLSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIFwKLSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIFwKLSBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIFwKLS1maXhfc3JjZmlsZV9wYXRoIFwKLSBleGNsdWRlX2V4cHN5bXMgXAotIGluY2x1ZGVfZXhwc3ltcyBcCi0gZmlsZV9saXN0X3NwZWMgXAotQEAgLTE4MjU2LDggKzE5MTA4LDggQEAgTERfQ1hYIFwKLSByZWxvYWRfZmxhZ19DWFggXAotIGNvbXBpbGVyX0NYWCBcCi0gbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWdfQ1hYIFwKLS1sdF9wcm9nX2NvbXBpbGVyX3dsX0NYWCBcCi0gbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYIFwKLStsdF9wcm9nX2NvbXBpbGVyX3dsX0NYWCBcCi0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWNfQ1hYIFwKLSBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfb19DWFggXAotIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY19DWFggXAotQEAgLTE4MjY5LDcgKzE5MTIxLDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWdfQ1hYIFwKLSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWCBcCi0gaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZF9DWFggXAotIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3JfQ1hYIFwKLS1maXhfc3JjZmlsZV9wYXRoX0NYWCBcCi0gZXhjbHVkZV9leHBzeW1zX0NYWCBcCi0gaW5jbHVkZV9leHBzeW1zX0NYWCBcCi0gZmlsZV9saXN0X3NwZWNfQ1hYIFwKLUBAIC0xODMwMyw2ICsxOTE1NCw3IEBAIG1vZHVsZV9jbWRzIFwKLSBtb2R1bGVfZXhwc3ltX2NtZHMgXAotIGV4cG9ydF9zeW1ib2xzX2NtZHMgXAotIHByZWxpbmtfY21kcyBcCi0rcG9zdGxpbmtfY21kcyBcCi0gcG9zdGluc3RhbGxfY21kcyBcCi0gcG9zdHVuaW5zdGFsbF9jbWRzIFwKLSBmaW5pc2hfY21kcyBcCi1AQCAtMTgzMTcsNyArMTkxNjksOCBAQCBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWCBcCi0gbW9kdWxlX2NtZHNfQ1hYIFwKLSBtb2R1bGVfZXhwc3ltX2NtZHNfQ1hYIFwKLSBleHBvcnRfc3ltYm9sc19jbWRzX0NYWCBcCi0tcHJlbGlua19jbWRzX0NYWDsgZG8KLStwcmVsaW5rX2NtZHNfQ1hYIFwKLStwb3N0bGlua19jbWRzX0NYWDsgZG8KLSAgICAgY2FzZSBcYGV2YWwgXFxcXFwkRUNITyBcXFxcIiJcXFxcXCRcJHZhciJcXFxcIlxgIGluCi0gICAgICpbXFxcXFxcXGBcXCJcXFwkXSopCi0gICAgICAgZXZhbCAibHRfXCR2YXI9XFxcXFxcIlxcXGBcXFwkRUNITyBcXCJcXFwkXCR2YXJcXCIgfCBcXFwkU0VEIC1lIFxcIlxcXCRkb3VibGVfcXVvdGVfc3Vic3RcXCIgLWUgXFwiXFxcJHNlZF9xdW90ZV9zdWJzdFxcIiAtZSBcXCJcXFwkZGVsYXlfdmFyaWFibGVfc3Vic3RcXCJcXFxgXFxcXFxcIiIKLUBAIC0xOTExMCw3ICsxOTk2Myw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKLSAjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KLSAjCi0gIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKLS0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotKyMgICAgICAgICAgICAgICAgIEluYy4KLSAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgotICMKLSAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCi1AQCAtMTkyMTMsMTkgKzIwMDY3LDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAotICMgdHVybiBuZXdsaW5lcyBpbnRvIHNwYWNlcy4KLSBOTDJTUD0kbHRfbHRfTkwyU1AKLSAKLSsjIGNvbnZlcnQgXCRidWlsZCBmaWxlIG5hbWVzIHRvIFwkaG9zdCBmb3JtYXQuCi0rdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAotKwotKyMgY29udmVydCBcJGJ1aWxkIGZpbGVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuCi0rdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAotKwotICMgQW4gb2JqZWN0IHN5bWJvbCBkdW1wZXIuCi0gT0JKRFVNUD0kbHRfT0JKRFVNUAotIAotICMgTWV0aG9kIHRvIGNoZWNrIHdoZXRoZXIgZGVwZW5kZW50IGxpYnJhcmllcyBhcmUgc2hhcmVkIG9iamVjdHMuCi0gZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2RlcGxpYnNfY2hlY2tfbWV0aG9kCi0gCi0tIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID09ICJmaWxlX21hZ2ljIi4KLSsjIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCi0gZmlsZV9tYWdpY19jbWQ9JGx0X2ZpbGVfbWFnaWNfY21kCi0gCi0rIyBIb3cgdG8gZmluZCBwb3RlbnRpYWwgZmlsZXMgd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KLStmaWxlX21hZ2ljX2dsb2I9JGx0X2ZpbGVfbWFnaWNfZ2xvYgotKwotKyMgRmluZCBwb3RlbnRpYWwgZmlsZXMgdXNpbmcgbm9jYXNlZ2xvYiB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgotK3dhbnRfbm9jYXNlZ2xvYj0kbHRfd2FudF9ub2Nhc2VnbG9iCi0rCi0rIyBETEwgY3JlYXRpb24gcHJvZ3JhbS4KLStETExUT09MPSRsdF9ETExUT09MCi0rCi0rIyBDb21tYW5kIHRvIGFzc29jaWF0ZSBzaGFyZWQgYW5kIGxpbmsgbGlicmFyaWVzLgotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAotKwotICMgVGhlIGFyY2hpdmVyLgotIEFSPSRsdF9BUgotKwotKyMgRmxhZ3MgdG8gY3JlYXRlIGFuIGFyY2hpdmUuCi0gQVJfRkxBR1M9JGx0X0FSX0ZMQUdTCi0gCi0rIyBIb3cgdG8gZmVlZCBhIGZpbGUgbGlzdGluZyB0byB0aGUgYXJjaGl2ZXIuCi0rYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9hcmNoaXZlcl9saXN0X3NwZWMKLSsKLSAjIEEgc3ltYm9sIHN0cmlwcGluZyBwcm9ncmFtLgotIFNUUklQPSRsdF9TVFJJUAotIAotQEAgLTE5MjU1LDYgKzIwMTMyLDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzCi0gIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZC4KLSBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgKLSAKLSsjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcyBmb3IgXCROTS4KLStubV9maWxlX2xpc3Rfc3BlYz0kbHRfbm1fZmlsZV9saXN0X3NwZWMKLSsKLSsjIFRoZSByb290IHdoZXJlIHRvIHNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyxhbmQgaW4gd2hpY2ggb3VyIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkLgotK2x0X3N5c3Jvb3Q9JGx0X3N5c3Jvb3QKLSsKLSAjIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0ZW1wb3JhcnkgbGlidG9vbCBmaWxlcy4KLSBvYmpkaXI9JG9iamRpcgotIAotQEAgLTE5MjY0LDYgKzIwMTQ3LDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKLSAjIE11c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uPwotIG5lZWRfbG9ja3M9JGx0X25lZWRfbG9ja3MKLSAKLSsjIE1hbmlmZXN0IHRvb2wuCi0rTUFOSUZFU1RfVE9PTD0kbHRfTUFOSUZFU1RfVE9PTAotKwotICMgVG9vbCB0byBtYW5pcHVsYXRlIGFyY2hpdmVkIERXQVJGIGRlYnVnIHN5bWJvbCBmaWxlcyBvbiBNYWMgT1MgWC4KLSBEU1lNVVRJTD0kbHRfRFNZTVVUSUwKLSAKLUBAIC0xOTM3OCwxMiArMjAyNjQsMTIgQEAgd2l0aF9nY2M9JEdDQwotICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KLSBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnCi0gCi0tIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgotLXdsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCi0tCi0gIyBBZGRpdGlvbmFsIGNvbXBpbGVyIGZsYWdzIGZvciBidWlsZGluZyBsaWJyYXJ5IG9iamVjdHMuCi0gcGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfcGljCi0gCi0rIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgotK3dsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCi0rCi0gIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgotIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljCi0gCi1AQCAtMTk0NzAsOSArMjAzNTYsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCi0gIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCi0gbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlicwotIAotLSMgRml4IHRoZSBzaGVsbCB2YXJpYWJsZSBcJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlci4KLS1maXhfc3JjZmlsZV9wYXRoPSRsdF9maXhfc3JjZmlsZV9wYXRoCi0tCi0gIyBTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWQuCi0gYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSRhbHdheXNfZXhwb3J0X3N5bWJvbHMKLSAKLUBAIC0xOTQ4OCw2ICsyMDM3MSw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCi0gIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KLSBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kcwotIAotKyMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBmaW5pc2hpbmcgbGlua2luZyBwcm9ncmFtcy4KLStwb3N0bGlua19jbWRzPSRsdF9wb3N0bGlua19jbWRzCi0rCi0gIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCi0gZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjCi0gCi1AQCAtMTk1MzQsMjEwICsyMDQyMCwxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCi0gICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCi0gICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQotICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KLS0gIHNlZCAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS9xJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0tICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0tCi0tICBjYXNlICR4c2lfc2hlbGwgaW4KLS0gIHllcykKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0tIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tZnVuY19kaXJuYW1lICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0tICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLS1mdW5jX2Jhc2VuYW1lICgpCi0tewotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgotLX0KLS0KLS0jIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgotLSMgY2FsbDoKLS0jICAgZGlybmFtZTogIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LAotLSMgICAgICAgICAgICAgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LCBvdGhlcndpc2Ugc2V0IHJlc3VsdAotLSMgICAgICAgICAgICAgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLSMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgotLSMgICBiYXNlbmFtZTogQ29tcHV0ZSBmaWxlbmFtZSBvZiBGSUxFLgotLSMgICAgICAgICAgICAgdmFsdWUgcmV0dW5lZCBpbiAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotLSMgSW1wbGVtZW50YXRpb24gbXVzdCBiZSBrZXB0IHN5bmNocm9uaXplZCB3aXRoIGZ1bmNfZGlybmFtZQotLSMgYW5kIGZ1bmNfYmFzZW5hbWUuIEZvciBlZmZpY2llbmN5LCB3ZSBkbyBub3QgZGVsZWdhdGUgdG8KLS0jIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KLS1mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0tICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLS0gIGVzYWMKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKLS19Ci0tCi0tIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLS0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0tIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0tIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotLWZ1bmNfc3RyaXBuYW1lICgpCi0tewotLSAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQotLSAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9Ci0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifQotLX0KLS0KLS0jIGZ1bmNfb3B0X3NwbGl0Ci0tZnVuY19vcHRfc3BsaXQgKCkKLS17Ci0tICBmdW5jX29wdF9zcGxpdF9vcHQ9JHsxJSU9Kn0KLS0gIGZ1bmNfb3B0X3NwbGl0X2FyZz0kezEjKj19Ci0tfQotLQotLSMgZnVuY19sbzJvIG9iamVjdAotLWZ1bmNfbG8ybyAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OwotLSAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLS1mdW5jX3hmb3JtICgpCi0tewotLSAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sbwotLX0KLS0KLS0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCi0tZnVuY19hcml0aCAoKQotLXsKLS0gIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKQotLX0KLS0KLS0jIGZ1bmNfbGVuIHN0cmluZwotLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLS1mdW5jX2xlbiAoKQotLXsKLS0gIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfQotLX0KLS0KLS1fTFRfRU9GCi0tICAgIDs7Ci0tICAqKSAjIEJvdXJuZSBjb21wYXRpYmxlIGZ1bmN0aW9ucy4KLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0tIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tZnVuY19kaXJuYW1lICgpCi0tewotLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KLS0gIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRkaXJuYW1lImAKLS0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCi0tICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCi0tICBlbHNlCi0tICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKLS0gIGZpCi0tfQotLQotLSMgZnVuY19iYXNlbmFtZSBmaWxlCi0tZnVuY19iYXNlbmFtZSAoKQotLXsKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkYmFzZW5hbWUiYAotLX0KLS0KLS0KLS0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQotLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0tIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKLS0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKLS0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi0tIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQotLWZ1bmNfc3RyaXBuYW1lICgpCi0tewotLSAgY2FzZSAkezJ9IGluCi0tICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7Ci0tICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBzZWQgc2NyaXB0czoKLS1teV9zZWRfbG9uZ19vcHQ9JzFzL15cKC1bXj1dKlwpPS4qL1wxLztxJwotLW15X3NlZF9sb25nX2FyZz0nMXMvXi1bXj1dKj0vLycKLS0KLS0jIGZ1bmNfb3B0X3NwbGl0Ci0tZnVuY19vcHRfc3BsaXQgKCkKLS17Ci0tICBmdW5jX29wdF9zcGxpdF9vcHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19vcHQiYAotLSAgZnVuY19vcHRfc3BsaXRfYXJnPWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKLS19Ci0tCi0tIyBmdW5jX2xvMm8gb2JqZWN0Ci0tZnVuY19sbzJvICgpCi0tewotLSAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGxvMm8iYAotLX0KLS0KLS0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQotLWZ1bmNfeGZvcm0gKCkKLS17Ci0tICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAncy9cLlteLl0qJC8ubG8vJ2AKLS19Ci0tCi0tIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotLWZ1bmNfYXJpdGggKCkKLS17Ci0tICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJEAiYAotLX0KLS0KLS0jIGZ1bmNfbGVuIHN0cmluZwotLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLS1mdW5jX2xlbiAoKQotLXsKLS0gIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJDEiIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKLS19Ci0tCi0tX0xUX0VPRgotLWVzYWMKLS0KLS1jYXNlICRsdF9zaGVsbF9hcHBlbmQgaW4KLS0gIHllcykKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotLWZ1bmNfYXBwZW5kICgpCi0tewotLSAgZXZhbCAiJDErPVwkMiIKLS19Ci0tX0xUX0VPRgotLSAgICA7OwotLSAgKikKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotLWZ1bmNfYXBwZW5kICgpCi0tewotLSAgZXZhbCAiJDE9XCQkMVwkMiIKLS19Ci0tCi0tX0xUX0VPRgotLSAgICA7OwotLSAgZXNhYwotLQotLQotLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotLQotLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAotKyAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotKyAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLSsKLSsgIGlmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KLSsgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWUgL2NcCi0rZnVuY19kaXJuYW1lICgpXAotK3tcCi0rXCAgICBjYXNlICR7MX0gaW5cCi0rXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAotK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAotK1wgICAgZXNhY1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfYmFzZW5hbWUgL2NcCi0rZnVuY19iYXNlbmFtZSAoKVwKLSt7XAotK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIC9jXAotK2Z1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKClcCi0re1wKLStcICAgIGNhc2UgJHsxfSBpblwKLStcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCi0rXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCi0rXCAgICBlc2FjXAotK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3RyaXBuYW1lICgpJC8sL159ICMgZnVuY19zdHJpcG5hbWUgL2NcCi0rZnVuY19zdHJpcG5hbWUgKClcCi0re1wKLStcICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmVcCi0rXCAgICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuXAotK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M31cCi0rXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifVwKLStcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3N0cmlwbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfbG9uZ19vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X2xvbmdfb3B0IC9jXAotK2Z1bmNfc3BsaXRfbG9uZ19vcHQgKClcCi0re1wKLStcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT0kezElJT0qfVwKLStcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPSR7MSMqPX1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfbG9uZ19vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3NwbGl0X3Nob3J0X29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IC9jXAotK2Z1bmNfc3BsaXRfc2hvcnRfb3B0ICgpXAotK3tcCi0rXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9JHsxIz8/fVwKLStcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9JHsxJSIkZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIn1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19sbzJvICgpJC8sL159ICMgZnVuY19sbzJvIC9jXAotK2Z1bmNfbG8ybyAoKVwKLSt7XAotK1wgICAgY2FzZSAkezF9IGluXAotK1wgICAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7O1wKLStcICAgICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7XAotK1wgICAgZXNhY1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sbzJvIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY194Zm9ybSAoKSQvLC9efSAjIGZ1bmNfeGZvcm0gL2NcCi0rZnVuY194Zm9ybSAoKVwKLSt7XAotKyAgICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3hmb3JtIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19hcml0aCAoKSQvLC9efSAjIGZ1bmNfYXJpdGggL2NcCi0rZnVuY19hcml0aCAoKVwKLSt7XAotKyAgICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSlcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXJpdGggaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2xlbiAoKSQvLC9efSAjIGZ1bmNfbGVuIC9jXAotK2Z1bmNfbGVuICgpXAotK3tcCi0rICAgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sZW4gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLStmaQotKwotK2lmIHRlc3QgeCIkbHRfc2hlbGxfYXBwZW5kIiA9IHh5ZXM7IHRoZW4KLSsgIHNlZCAtZSAnL15mdW5jX2FwcGVuZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kIC9jXAotK2Z1bmNfYXBwZW5kICgpXAotK3tcCi0rICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19hcHBlbmRfcXVvdGVkICgpJC8sL159ICMgZnVuY19hcHBlbmRfcXVvdGVkIC9jXAotK2Z1bmNfYXBwZW5kX3F1b3RlZCAoKVwKLSt7XAotK1wgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSJcCi0rXCAgICBldmFsICIkezF9Kz1cXFxcIFxcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmRfcXVvdGVkIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgd2hlcmUgcG9zc2libGUgYnkgZGlyZWN0IHVzZSBvZiAnKz0nCi0rICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxKz0iJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKLSsgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSsgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rZWxzZQotKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIGV2ZW4gd2hlbiAnKz0nIGlzIG5vdCBhdmFpbGFibGUKLSsgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDE9IiRcMSVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCi0rICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotK2ZpCi0rCi0raWYgdGVzdCB4IiRfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsIiA9IHgiOiI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiYyO30KLStmaQotKwotKwotKyAgIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKLSAgICAgKHJtIC1mICIkb2ZpbGUiICYmIGNwICIkY2ZnZmlsZSIgIiRvZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlIikKLSAgIGNobW9kICt4ICIkb2ZpbGUiCi0gCi1AQCAtMTk3NjUsMTIgKzIwNjEwLDEyIEBAIHdpdGhfZ2NjPSRHQ0NfQ1hYCi0gIyBDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgotIG5vX2J1aWx0aW5fZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWdfQ1hYCi0gCi0tIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgotLXdsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsX0NYWAotLQotICMgQWRkaXRpb25hbCBjb21waWxlciBmbGFncyBmb3IgYnVpbGRpbmcgbGlicmFyeSBvYmplY3RzLgotIHBpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3BpY19DWFgKLSAKLSsjIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCi0rd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2xfQ1hYCi0rCi0gIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgotIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljX0NYWAotIAotQEAgLTE5ODU3LDkgKzIwNzAyLDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aF9DWFgKLSAjIFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KLSBsaW5rX2FsbF9kZXBsaWJzPSRsaW5rX2FsbF9kZXBsaWJzX0NYWAotIAotLSMgRml4IHRoZSBzaGVsbCB2YXJpYWJsZSBcJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlci4KLS1maXhfc3JjZmlsZV9wYXRoPSRsdF9maXhfc3JjZmlsZV9wYXRoX0NYWAotLQotICMgU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkLgotIGFsd2F5c19leHBvcnRfc3ltYm9scz0kYWx3YXlzX2V4cG9ydF9zeW1ib2xzX0NYWAotIAotQEAgLTE5ODc1LDYgKzIwNzE3LDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXNfQ1hYCi0gIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KLSBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kc19DWFgKLSAKLSsjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgZmluaXNoaW5nIGxpbmtpbmcgcHJvZ3JhbXMuCi0rcG9zdGxpbmtfY21kcz0kbHRfcG9zdGxpbmtfY21kc19DWFgKLSsKLSAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcy4KLSBmaWxlX2xpc3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWNfQ1hYCi0gCi1kaWZmIC0tZ2l0IGEvbGlidG9vbC5tNCBiL2xpYnRvb2wubTQKLWluZGV4IDI0ZDEzZjM0NDAuLmU0NWZkYzY5OTggMTAwNjQ0Ci0tLS0gYS9saWJ0b29sLm00Ci0rKysgYi9saWJ0b29sLm00Ci1AQCAtMSw3ICsxLDggQEAKLSAjIGxpYnRvb2wubTQgLSBDb25maWd1cmUgbGlidG9vbCBmb3IgdGhlIGhvc3Qgc3lzdGVtLiAtKi1BdXRvY29uZi0qLQotICMKLSAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAotLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0rIyAgICAgICAgICAgICAgICAgSW5jLgotICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2Ci0gIwotICMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gZ2l2ZXMKLUBAIC0xMCw3ICsxMSw4IEBACi0gCi0gbTRfZGVmaW5lKFtfTFRfQ09QWUlOR10sIFtkbmwKLSAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAotLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0rIyAgICAgICAgICAgICAgICAgSW5jLgotICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2Ci0gIwotICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KLUBAIC0zNyw3ICszOSw3IEBAIG00X2RlZmluZShbX0xUX0NPUFlJTkddLCBbZG5sCi0gIyA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSBdKQotIAotLSMgc2VyaWFsIDU2IExUX0lOSVQKLSsjIHNlcmlhbCA1NyBMVF9JTklUCi0gCi0gCi0gIyBMVF9QUkVSRVEoVkVSU0lPTikKLUBAIC05Miw3ICs5NCw4IEBAIF9MVF9TRVRfT1BUSU9OUyhbJDBdLCBbJDFdKQotIExJQlRPT0xfREVQUz0iJGx0bWFpbiIKLSAKLSAjIEFsd2F5cyB1c2Ugb3VyIG93biBsaWJ0b29sLgotLUxJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKS9saWJ0b29sJwotK0xJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKScKLStMSUJUT09MPSIkTElCVE9PTC8ke2hvc3RfYWxpYXN9LWxpYnRvb2wiCi0gQUNfU1VCU1QoTElCVE9PTClkbmwKLSAKLSBfTFRfU0VUVVAKLUBAIC0xNjYsMTAgKzE2OSwxMyBAQCBfTFRfREVDTChbXSwgW2V4ZWV4dF0sIFswXSwgW0V4ZWN1dGFibGUgZmlsZSBzdWZmaXggKG5vcm1hbGx5ICIiKV0pZG5sCi0gZG5sCi0gbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pZG5sCi0gbTRfcmVxdWlyZShbX0xUX0NIRUNLX1NIRUxMX0ZFQVRVUkVTXSlkbmwKLSttNF9yZXF1aXJlKFtfTFRfUEFUSF9DT05WRVJTSU9OX0ZVTkNUSU9OU10pZG5sCi0gbTRfcmVxdWlyZShbX0xUX0NNRF9SRUxPQURdKWRubAotIG00X3JlcXVpcmUoW19MVF9DSEVDS19NQUdJQ19NRVRIT0RdKWRubAotK200X3JlcXVpcmUoW19MVF9DSEVDS19TSEFSRURMSUJfRlJPTV9MSU5LTElCXSlkbmwKLSBtNF9yZXF1aXJlKFtfTFRfQ01EX09MRF9BUkNISVZFXSlkbmwKLSBtNF9yZXF1aXJlKFtfTFRfQ01EX0dMT0JBTF9TWU1CT0xTXSlkbmwKLSttNF9yZXF1aXJlKFtfTFRfV0lUSF9TWVNST09UXSlkbmwKLSAKLSBfTFRfQ09ORklHX0xJQlRPT0xfSU5JVChbCi0gIyBTZWUgaWYgd2UgYXJlIHJ1bm5pbmcgb24genNoLCBhbmQgc2V0IHRoZSBvcHRpb25zIHdoaWNoIGFsbG93IG91cgotQEAgLTE5OSw3ICsyMDUsNyBAQCBhaXgzKikKLSBlc2FjCi0gCi0gIyBHbG9iYWwgdmFyaWFibGVzOgotLW9maWxlPWxpYnRvb2wKLStvZmlsZT0ke2hvc3RfYWxpYXN9LWxpYnRvb2wKLSBjYW5fYnVpbGRfc2hhcmVkPXllcwotIAotICMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAotQEAgLTYzMiw3ICs2MzgsNyBAQCBtNF9pZnNldChbQUNfUEFDS0FHRV9OQU1FXSwgW0FDX1BBQ0tBR0VfTkFNRSBdKWNvbmZpZy5sdFtdZG5sCi0gbTRfaWZzZXQoW0FDX1BBQ0tBR0VfVkVSU0lPTl0sIFsgQUNfUEFDS0FHRV9WRVJTSU9OXSkKLSBjb25maWd1cmVkIGJ5ICRbMF0sIGdlbmVyYXRlZCBieSBtNF9QQUNLQUdFX1NUUklORy4KLSAKLS1Db3B5cmlnaHQgKEMpIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIFRoaXMgY29uZmlnLmx0IHNjcmlwdCBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCi0gZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgaXQuIgotIAotQEAgLTc0NiwxNSArNzUyLDEyIEBAIF9MVF9FT0YKLSAgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KLSAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCi0gICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPwotLSAgc2VkICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlL3EnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLS0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLSsgIHNlZCAnJHEnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLSsgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0gCi0tICBfTFRfUFJPR19YU0lfU0hFTExGTlMKLSsgIF9MVF9QUk9HX1JFUExBQ0VfU0hFTExGTlMKLSAKLS0gIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLS0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLS0KLS0gIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKLSsgICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8Ci0gICAgIChybSAtZiAiJG9maWxlIiAmJiBjcCAiJGNmZ2ZpbGUiICIkb2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZSIpCi0gICBjaG1vZCAreCAiJG9maWxlIgotIF0sCi1AQCAtOTgwLDYgKzk4Myw4IEBAIF9MVF9FT0YKLSAgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JkFTX01FU1NBR0VfTE9HX0ZECi0gICAgICAgZWNobyAiJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8iID4mQVNfTUVTU0FHRV9MT0dfRkQKLSAgICAgICAkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyAyPiZBU19NRVNTQUdFX0xPR19GRAotKyAgICAgIGVjaG8gIiRSQU5MSUIgbGliY29uZnRlc3QuYSIgPiZBU19NRVNTQUdFX0xPR19GRAotKyAgICAgICRSQU5MSUIgbGliY29uZnRlc3QuYSAyPiZBU19NRVNTQUdFX0xPR19GRAotICAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgotIGludCBtYWluKCkgeyByZXR1cm4gMDt9Ci0gX0xUX0VPRgotQEAgLTEwNjksMzAgKzEwNzQsNDEgQEAgbTRfZGVmdW4oW19MVF9EQVJXSU5fTElOS0VSX0ZFQVRVUkVTXSwKLSAgIGZpCi0gXSkKLSAKLS0jIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKyMgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgoW1RBR05BTUVdKQotKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICMgTGlua3MgYSBtaW5pbWFsIHByb2dyYW0gYW5kIGNoZWNrcyB0aGUgZXhlY3V0YWJsZQotICMgZm9yIHRoZSBzeXN0ZW0gZGVmYXVsdCBoYXJkY29kZWQgbGlicmFyeSBwYXRoLiBJbiBtb3N0IGNhc2VzLAotICMgdGhpcyBpcyAvdXNyL2xpYjovbGliLCBidXQgd2hlbiB0aGUgTVBJIGNvbXBpbGVycyBhcmUgdXNlZAotICMgdGhlIGxvY2F0aW9uIG9mIHRoZSBjb21tdW5pY2F0aW9uIGFuZCBNUEkgbGlicyBhcmUgaW5jbHVkZWQgdG9vLgotICMgSWYgd2UgZG9uJ3QgZmluZCBhbnl0aGluZywgdXNlIHRoZSBkZWZhdWx0IGxpYnJhcnkgcGF0aCBhY2NvcmRpbmcKLSAjIHRvIHRoZSBhaXggbGQgbWFudWFsLgotKyMgU3RvcmUgdGhlIHJlc3VsdHMgZnJvbSB0aGUgZGlmZmVyZW50IGNvbXBpbGVycyBmb3IgZWFjaCBUQUdOQU1FLgotKyMgQWxsb3cgdG8gb3ZlcnJpZGUgdGhlbSBmb3IgYWxsIHRhZ3MgdGhyb3VnaCBsdF9jdl9haXhfbGlicGF0aC4KLSBtNF9kZWZ1bihbX0xUX1NZU19NT0RVTEVfUEFUSF9BSVhdLAotIFttNF9yZXF1aXJlKFtfTFRfREVDTF9TRURdKWRubAotLUFDX0xJTktfSUZFTFNFKEFDX0xBTkdfUFJPR1JBTSxbCi0tbHRfYWl4X2xpYnBhdGhfc2VkPScKLS0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotLQkvXjAvIHsKLS0JICAgIHMvXjAgICpcKC4qXCkkL1wxLwotLQkgICAgcAotLQl9Ci0tICAgIH0nCi0tYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLS0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLWZpXSxbXSkKLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLStpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKLStlbHNlCi0rICBBQ19DQUNIRV9WQUwoW19MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pXSwKLSsgIFtBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNXSxbCi0rICBsdF9haXhfbGlicGF0aF9zZWQ9J1sKLSsgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0rCSAgL14wLyB7Ci0rCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCi0rCSAgICAgIHAKLSsJICB9Ci0rICAgICAgfV0nCi0rICBfTFRfVEFHVkFSKFtsdF9jdl9haXhfbGlicGF0aF9dLCBbJDFdKT1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLSsgIGlmIHRlc3QgLXogIiRfTFRfVEFHVkFSKFtsdF9jdl9haXhfbGlicGF0aF9dLCBbJDFdKSI7IHRoZW4KLSsgICAgX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSk9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICBmaV0sW10pCi0rICBpZiB0ZXN0IC16ICIkX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSkiOyB0aGVuCi0rICAgIF9MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pPSIvdXNyL2xpYjovbGliIgotKyAgZmkKLSsgIF0pCi0rICBhaXhfbGlicGF0aD0kX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSkKLStmaQotIF0pIyBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWAotIAotIAotQEAgLTExMTcsNyArMTEzMyw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCi0gCi0gQUNfTVNHX0NIRUNLSU5HKFtob3cgdG8gcHJpbnQgc3RyaW5nc10pCi0gIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCi0taWYgdGVzdCAiWGBwcmludCAtciAtLSAtbiAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKLStpZiB0ZXN0ICJYYCggcHJpbnQgLXIgLS0gLW4gKSAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKLSAgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgotICAgRUNITz0ncHJpbnQgLXIgLS0nCi0gZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KLUBAIC0xMTYxLDYgKzExNzcsMzkgQEAgX0xUX0RFQ0woW10sIFtFQ0hPXSwgWzFdLCBbQW4gZWNobyBwcm9ncmFtIHRoYXQgcHJvdGVjdHMgYmFja3NsYXNoZXNdKQotIF0pIyBfTFRfUFJPR19FQ0hPX0JBQ0tTTEFTSAotIAotIAotKyMgX0xUX1dJVEhfU1lTUk9PVAotKyMgLS0tLS0tLS0tLS0tLS0tLQotK0FDX0RFRlVOKFtfTFRfV0lUSF9TWVNST09UXSwKLStbQUNfTVNHX0NIRUNLSU5HKFtmb3Igc3lzcm9vdF0pCi0rQUNfQVJHX1dJVEgoW2xpYnRvb2wtc3lzcm9vdF0sCi0rWyAgLS13aXRoLWxpYnRvb2wtc3lzcm9vdFs9RElSXSBTZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMgd2l0aGluIERJUgotKyAgICAgICAgICAgICAgICAgICAgICAgIChvciB0aGUgY29tcGlsZXIncyBzeXNyb290IGlmIG5vdCBzcGVjaWZpZWQpLl0sCi0rW10sIFt3aXRoX2xpYnRvb2xfc3lzcm9vdD1ub10pCi0rCi0rZG5sIGx0X3N5c3Jvb3Qgd2lsbCBhbHdheXMgYmUgcGFzc2VkIHVucXVvdGVkLiAgV2UgcXVvdGUgaXQgaGVyZQotK2RubCBpbiBjYXNlIHRoZSB1c2VyIHBhc3NlZCBhIGRpcmVjdG9yeSBuYW1lLgotK2x0X3N5c3Jvb3Q9Ci0rY2FzZSAke3dpdGhfbGlidG9vbF9zeXNyb290fSBpbiAjKAotKyB5ZXMpCi0rICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSsgICAgIGx0X3N5c3Jvb3Q9YCRDQyAtLXByaW50LXN5c3Jvb3QgMj4vZGV2L251bGxgCi0rICAgZmkKLSsgICA7OyAjKAotKyAvKikKLSsgICBsdF9zeXNyb290PWBlY2hvICIkd2l0aF9saWJ0b29sX3N5c3Jvb3QiIHwgc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLSsgICA7OyAjKAotKyBub3wnJykKLSsgICA7OyAjKAotKyAqKQotKyAgIEFDX01TR19SRVNVTFQoWyR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9XSkKLSsgICBBQ19NU0dfRVJST1IoW1RoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC5dKQotKyAgIDs7Ci0rZXNhYwotKwotKyBBQ19NU0dfUkVTVUxUKFske2x0X3N5c3Jvb3Q6LW5vfV0pCi0rX0xUX0RFQ0woW10sIFtsdF9zeXNyb290XSwgWzBdLCBbVGhlIHJvb3Qgd2hlcmUgdG8gc2VhcmNoIGZvciBdZG5sCi0rW2RlcGVuZGVudCBsaWJyYXJpZXMsIGFuZCBpbiB3aGljaCBvdXIgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQuXSldKQotKwotICMgX0xUX0VOQUJMRV9MT0NLCi0gIyAtLS0tLS0tLS0tLS0tLS0KLSBtNF9kZWZ1bihbX0xUX0VOQUJMRV9MT0NLXSwKLUBAIC0xMzIwLDE0ICsxMzY5LDQ3IEBAIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgotIF0pIyBfTFRfRU5BQkxFX0xPQ0sKLSAKLSAKLSsjIF9MVF9QUk9HX0FSCi0rIyAtLS0tLS0tLS0tLQotK200X2RlZnVuKFtfTFRfUFJPR19BUl0sCi0rW0FDX0NIRUNLX1RPT0xTKEFSLCBbYXJdLCBmYWxzZSkKLSs6ICR7QVI9YXJ9Ci0rOiAke0FSX0ZMQUdTPWNydX0KLStfTFRfREVDTChbXSwgW0FSXSwgWzFdLCBbVGhlIGFyY2hpdmVyXSkKLStfTFRfREVDTChbXSwgW0FSX0ZMQUdTXSwgWzFdLCBbRmxhZ3MgdG8gY3JlYXRlIGFuIGFyY2hpdmVdKQotKwotK0FDX0NBQ0hFX0NIRUNLKFtmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydF0sIFtsdF9jdl9hcl9hdF9maWxlXSwKLSsgIFtsdF9jdl9hcl9hdF9maWxlPW5vCi0rICAgQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTV0sCi0rICAgICBbZWNobyBjb25mdGVzdC4kYWNfb2JqZXh0ID4gY29uZnRlc3QubHN0Ci0rICAgICAgbHRfYXJfdHJ5PSckQVIgJEFSX0ZMQUdTIGxpYmNvbmZ0ZXN0LmEgQGNvbmZ0ZXN0LmxzdCA+JkFTX01FU1NBR0VfTE9HX0ZEJwotKyAgICAgIEFDX1RSWV9FVkFMKFtsdF9hcl90cnldKQotKyAgICAgIGlmIHRlc3QgIiRhY19zdGF0dXMiIC1lcSAwOyB0aGVuCi0rCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCi0rCXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgbGliY29uZnRlc3QuYQotKwlBQ19UUllfRVZBTChbbHRfYXJfdHJ5XSkKLSsJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KLSsgICAgICAgICAgbHRfY3ZfYXJfYXRfZmlsZT1ACi0rICAgICAgICBmaQotKyAgICAgIGZpCi0rICAgICAgcm0gLWYgY29uZnRlc3QuKiBsaWJjb25mdGVzdC5hCi0rICAgICBdKQotKyAgXSkKLSsKLStpZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCi0rICBhcmNoaXZlcl9saXN0X3NwZWM9Ci0rZWxzZQotKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCi0rZmkKLStfTFRfREVDTChbXSwgW2FyY2hpdmVyX2xpc3Rfc3BlY10sIFsxXSwKLSsgIFtIb3cgdG8gZmVlZCBhIGZpbGUgbGlzdGluZyB0byB0aGUgYXJjaGl2ZXJdKQotK10pIyBfTFRfUFJPR19BUgotKwotKwotICMgX0xUX0NNRF9PTERfQVJDSElWRQotICMgLS0tLS0tLS0tLS0tLS0tLS0tLQotIG00X2RlZnVuKFtfTFRfQ01EX09MRF9BUkNISVZFXSwKLS1bQUNfQ0hFQ0tfVE9PTChBUiwgYXIsIGZhbHNlKQotLXRlc3QgLXogIiRBUiIgJiYgQVI9YXIKLS10ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQotLV9MVF9ERUNMKFtdLCBbQVJdLCBbMV0sIFtUaGUgYXJjaGl2ZXJdKQotLV9MVF9ERUNMKFtdLCBbQVJfRkxBR1NdLCBbMV0pCi0rW19MVF9QUk9HX0FSCi0gCi0gQUNfQ0hFQ0tfVE9PTChTVFJJUCwgc3RyaXAsIDopCi0gdGVzdCAteiAiJFNUUklQIiAmJiBTVFJJUD06Ci1AQCAtMTYyMyw3ICsxNzA1LDcgQEAgZWxzZQotICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgotICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KLSAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCi0tWyNsaW5lIF9fb2xpbmVfXyAiY29uZmlndXJlIgotK1sjbGluZSAkTElORU5PICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gCi0gI2lmIEhBVkVfRExGQ05fSAotQEAgLTE2NjcsMTAgKzE3NDksMTAgQEAgZWxzZQotIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKLSAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCi0gI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCi0tdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLStpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0gI2VuZGlmCi0gCi0tdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9Ci0raW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9Ci0gaW50IG1haW4gKCkKLSB7Ci0gICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKLUBAIC0yMjEwLDggKzIyOTIsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICBuZWVkX3ZlcnNpb249bm8KLSAgIG5lZWRfbGliX3ByZWZpeD1ubwotIAotLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCi0tICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQotKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgotKyAgeWVzLCopCi0rICAgICMgZ2NjCi0gICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCi0gICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKLSAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci1AQCAtMjI0NCwxMyArMjMyNyw3MSBAQCBtNF9pZihbJDFdLCBbXSxbCi0gICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bWy5dXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0gICAgICAgOzsKLSAgICAgZXNhYwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotKyAgICA7OwotKwotKyAgKixjbCopCi0rICAgICMgTmF0aXZlIE1TVkMKLSsgICAgbGlibmFtZV9zcGVjPSckbmFtZScKLSsgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bWy5dXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0rICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJwotKwotKyAgICBjYXNlICRidWlsZF9vcyBpbgotKyAgICBtaW5ndyopCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQotKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKLSsgICAgICBJRlM9JzsnCi0rICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgotKyAgICAgIGRvCi0rICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCi0rICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgotKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCi0rICAgICAgZG9uZQotKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKLSsgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFtbYS16QS1aXV1cXCk6fCAvXFwxfGcnIC1lICdzfF4gfHwnYAotKyAgICAgIDs7Ci0rICAgIGN5Z3dpbiopCi0rICAgICAgIyBDb252ZXJ0IHRvIHVuaXggZm9ybSwgdGhlbiB0byBkb3MgZm9ybSwgdGhlbiBiYWNrIHRvIHVuaXggZm9ybQotKyAgICAgICMgYnV0IHRoaXMgdGltZSBkb3Mgc3R5bGUgKG5vIHNwYWNlcyEpIHNvIHRoYXQgdGhlIHVuaXggZm9ybSBsb29rcwotKyAgICAgICMgbGlrZSAvY3lnZHJpdmUvYy9QUk9HUkF+MTovY3lnZHIuLi4KLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJExJQiJgCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLWRvcyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgMj4vZGV2L251bGxgCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKLSsgICAgICA7OwotKyAgICAqKQotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJExJQiIKLSsgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBbJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsXTsgdGhlbgotKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCi0rICAgICAgZWxzZQotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotKyAgICAgIGZpCi0rICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCi0rICAgICAgIyBjb21tb24uIChlLmcuICJQcm9ncmFtIEZpbGVzIiAtPiAiUFJPR1JBfjEiKQotKyAgICAgIDs7Ci0rICAgIGVzYWMKLSsKLSsgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwotKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLSsgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgotKyAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KLSsgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KLSsgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCi0rICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+Ci0rICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KLSsgICAgICAgJFJNIFwkZGxwYXRoJwotKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKLSAgICAgOzsKLSAKLSAgICopCi0rICAgICMgQXNzdW1lIE1TVkMgd3JhcHBlcgotICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bWy5dXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotICAgICA7OwotICAgZXNhYwotLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgotICAgc2hsaWJwYXRoX3Zhcj1QQVRICi0gICA7OwotQEAgLTIzNDIsNyArMjQ4Myw3IEBAIGhhaWt1KikKLSAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCi0gICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAotICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwotLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L2Jlb3Mvc3lzdGVtL2xpYicKLSsgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9zeXN0ZW0vbGliJwotICAgaGFyZGNvZGVfaW50b19saWJzPXllcwotICAgOzsKLSAKLUBAIC0yOTUwLDYgKzMwOTEsMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KLSBlc2FjCi0gcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotIGNhc2UgJGhvc3Rfb3MgaW4KLSsgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSsgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCi0rICAgICAgcmVsb2FkX2NtZHM9ZmFsc2UKLSsgICAgZmkKLSsgICAgOzsKLSAgIGRhcndpbiopCi0gICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotQEAgLTMwMTYsNyArMzE2Miw4IEBAIG1pbmd3KiB8IHB3MzIqKQotICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJwotICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKLSAgIGVsc2UKLS0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCi0rICAgICMgS2VlcCB0aGlzIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gZnVuY193aW4zMl9saWJpZC4KLSsgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJwotICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCi0gICBmaQotICAgOzsKLUBAIC0zMTY3LDYgKzMzMTQsMjEgQEAgdHBmKikKLSAgIDs7Ci0gZXNhYwotIF0pCi0rCi0rZmlsZV9tYWdpY19nbG9iPQotK3dhbnRfbm9jYXNlZ2xvYj1ubwotK2lmIHRlc3QgIiRidWlsZCIgPSAiJGhvc3QiOyB0aGVuCi0rICBjYXNlICRob3N0X29zIGluCi0rICBtaW5ndyogfCBwdzMyKikKLSsgICAgaWYgKCBzaG9wdCB8IGdyZXAgbm9jYXNlZ2xvYiApID4vZGV2L251bGwgMj4mMTsgdGhlbgotKyAgICAgIHdhbnRfbm9jYXNlZ2xvYj15ZXMKLSsgICAgZWxzZQotKyAgICAgIGZpbGVfbWFnaWNfZ2xvYj1gZWNobyBhQWJCY0NkRGVFZkZnR2hIaUlqSmtLbExtTW5Ob09wUHFRclJzU3RUdVV2VndXeFh5WXpaIHwgJFNFRCAtZSAicy9cKC4uXCkvc1wvW1tcMV1dXC9bW1wxXV1cL2c7L2ciYAotKyAgICBmaQotKyAgICA7OwotKyAgZXNhYwotK2ZpCi0rCi0gZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCi0gZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCi0gdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCi1AQCAtMzE3NCw3ICszMzM2LDExIEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgotIF9MVF9ERUNMKFtdLCBbZGVwbGlic19jaGVja19tZXRob2RdLCBbMV0sCi0gICAgIFtNZXRob2QgdG8gY2hlY2sgd2hldGhlciBkZXBlbmRlbnQgbGlicmFyaWVzIGFyZSBzaGFyZWQgb2JqZWN0c10pCi0gX0xUX0RFQ0woW10sIFtmaWxlX21hZ2ljX2NtZF0sIFsxXSwKLS0gICAgW0NvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPT0gImZpbGVfbWFnaWMiXSkKLSsgICAgW0NvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyJdKQotK19MVF9ERUNMKFtdLCBbZmlsZV9tYWdpY19nbG9iXSwgWzFdLAotKyAgICBbSG93IHRvIGZpbmQgcG90ZW50aWFsIGZpbGVzIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyJdKQotK19MVF9ERUNMKFtdLCBbd2FudF9ub2Nhc2VnbG9iXSwgWzFdLAotKyAgICBbRmluZCBwb3RlbnRpYWwgZmlsZXMgdXNpbmcgbm9jYXNlZ2xvYiB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiXSkKLSBdKSMgX0xUX0NIRUNLX01BR0lDX01FVEhPRAotIAotIAotQEAgLTMyNzcsNiArMzQ0Myw2NyBAQCBkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6Ci0gZG5sIEFDX0RFRlVOKFtBTV9QUk9HX05NXSwgW10pCi0gZG5sIEFDX0RFRlVOKFtBQ19QUk9HX05NXSwgW10pCi0gCi0rIyBfTFRfQ0hFQ0tfU0hBUkVETElCX0ZST01fTElOS0xJQgotKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSsjIGhvdyB0byBkZXRlcm1pbmUgdGhlIG5hbWUgb2YgdGhlIHNoYXJlZCBsaWJyYXJ5Ci0rIyBhc3NvY2lhdGVkIHdpdGggYSBzcGVjaWZpYyBsaW5rIGxpYnJhcnkuCi0rIyAgLS0gUE9SVE1FIGZpbGwgaW4gd2l0aCB0aGUgZHluYW1pYyBsaWJyYXJ5IGNoYXJhY3RlcmlzdGljcwotK200X2RlZnVuKFtfTFRfQ0hFQ0tfU0hBUkVETElCX0ZST01fTElOS0xJQl0sCi0rW200X3JlcXVpcmUoW19MVF9ERUNMX0VHUkVQXSkKLSttNF9yZXF1aXJlKFtfTFRfREVDTF9PQkpEVU1QXSkKLSttNF9yZXF1aXJlKFtfTFRfREVDTF9ETExUT09MXSkKLStBQ19DQUNIRV9DSEVDSyhbaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllc10sCi0rbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQsCi0rW2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJwotKwotK2Nhc2UgJGhvc3Rfb3MgaW4KLStjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0rICAjIHR3byBkaWZmZXJlbnQgc2hlbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gbHRtYWluLnNoCi0rICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCi0rICBjYXNlIGAkRExMVE9PTCAtLWhlbHAgMj4mMWAgaW4KLSsgICotLWlkZW50aWZ5LXN0cmljdCopCi0rICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgotKyAgICA7OwotKyAgKikKLSsgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrCi0rICAgIDs7Ci0rICBlc2FjCi0rICA7OwotKyopCi0rICAjIGZhbGxiYWNrOiBhc3N1bWUgbGlua2xpYiBJUyBzaGFyZWRsaWIKLSsgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSIkRUNITyIKLSsgIDs7Ci0rZXNhYwotK10pCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCi0rdGVzdCAteiAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiAmJiBzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kRUNITwotKwotK19MVF9ERUNMKFtdLCBbc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWRdLCBbMV0sCi0rICAgIFtDb21tYW5kIHRvIGFzc29jaWF0ZSBzaGFyZWQgYW5kIGxpbmsgbGlicmFyaWVzXSkKLStdKSMgX0xUX0NIRUNLX1NIQVJFRExJQl9GUk9NX0xJTktMSUIKLSsKLSsKLSsjIF9MVF9QQVRIX01BTklGRVNUX1RPT0wKLSsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSsjIGxvY2F0ZSB0aGUgbWFuaWZlc3QgdG9vbAotK200X2RlZnVuKFtfTFRfUEFUSF9NQU5JRkVTVF9UT09MXSwKLStbQUNfQ0hFQ0tfVE9PTChNQU5JRkVTVF9UT09MLCBtdCwgOikKLSt0ZXN0IC16ICIkTUFOSUZFU1RfVE9PTCIgJiYgTUFOSUZFU1RfVE9PTD1tdAotK0FDX0NBQ0hFX0NIRUNLKFtpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2xdLCBbbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sXSwKLSsgIFtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9bm8KLSsgIGVjaG8gIiRhc19tZTokTElORU5POiAkTUFOSUZFU1RfVE9PTCAnLT8nIiA+JkFTX01FU1NBR0VfTE9HX0ZECi0rICAkTUFOSUZFU1RfVE9PTCAnLT8nIDI+Y29uZnRlc3QuZXJyID4gY29uZnRlc3Qub3V0Ci0rICBjYXQgY29uZnRlc3QuZXJyID4mQVNfTUVTU0FHRV9MT0dfRkQKLSsgIGlmICRHUkVQICdNYW5pZmVzdCBUb29sJyBjb25mdGVzdC5vdXQgPiAvZGV2L251bGw7IHRoZW4KLSsgICAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPXllcwotKyAgZmkKLSsgIHJtIC1mIGNvbmZ0ZXN0Kl0pCi0raWYgdGVzdCAieCRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiICE9IHh5ZXM7IHRoZW4KLSsgIE1BTklGRVNUX1RPT0w9OgotK2ZpCi0rX0xUX0RFQ0woW10sIFtNQU5JRkVTVF9UT09MXSwgWzFdLCBbTWFuaWZlc3QgdG9vbF0pZG5sCi0rXSkjIF9MVF9QQVRIX01BTklGRVNUX1RPT0wKLSsKLSAKLSAjIExUX0xJQl9NCi0gIyAtLS0tLS0tLQotQEAgLTM0MDMsOCArMzYzMCw4IEBAIGVzYWMKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgotIAotICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcwotLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbW14gXV0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKFtbXiBdXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0tbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW1teIF1dKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbW14gXV0qXCkgXChsaWJbW14gXV0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbW14gXV0qXCkgXChbW14gXV0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbW14gXV0qXClbWyBdXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwoW1teIF1dKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLStsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbW14gXV0qXClbWyBdXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwobGliW1teIF1dKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwoW1teIF1dKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLSAKLSAjIEhhbmRsZSBDUkxGIGluIG1pbmd3IHRvb2wgY2hhaW4KLSBvcHRfY3I9Ci1AQCAtMzQ0MCw2ICszNjY3LDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbwotICAgZWxzZQotICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qW1sJIF1dXCgkc3ltY29kZSRzeW1jb2RlKlwpW1sJIF1dW1sJIF1dKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgotICAgZmkKLSsgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9IiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIHwgc2VkICcvIF9fZ251X2x0by9kJyIKLSAKLSAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgotICAgcGlwZV93b3Jrcz1ubwotQEAgLTM0NzMsNiArMzcwMSwxOCBAQCBfTFRfRU9GCi0gICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KLSAJaWYgJEdSRVAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCi0gCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKLSsvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KLSsjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQotKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQotKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KLSsjIGRlZmluZSBMVEAmdEBfRExTWU1fQ09OU1QKLSsjZWxpZiBkZWZpbmVkKF9fb3NmX18pCi0rLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCi0rIyBkZWZpbmUgTFRAJnRAX0RMU1lNX0NPTlNUCi0rI2Vsc2UKLSsjIGRlZmluZSBMVEAmdEBfRExTWU1fQ09OU1QgY29uc3QKLSsjZW5kaWYKLSsKLSAjaWZkZWYgX19jcGx1c3BsdXMKLSBleHRlcm4gIkMiIHsKLSAjZW5kaWYKLUBAIC0zNDg0LDcgKzM3MjQsNyBAQCBfTFRfRU9GCi0gCSAgY2F0IDw8X0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0Ci0gCi0gLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLwotLWNvbnN0IHN0cnVjdCB7Ci0rTFRAJnRAX0RMU1lNX0NPTlNUIHN0cnVjdCB7Ci0gICBjb25zdCBjaGFyICpuYW1lOwotICAgdm9pZCAgICAgICAqYWRkcmVzczsKLSB9Ci1AQCAtMzUxMCwxNSArMzc1MCwxNSBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgewotIF9MVF9FT0YKLSAJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgotIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dAotLQkgIGx0X3NhdmVfTElCUz0iJExJQlMiCi0tCSAgbHRfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCi0rCSAgbHRfZ2xvYnN5bV9zYXZlX0xJQlM9JExJQlMKLSsJICBsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKLSAJICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgotIAkgIENGTEFHUz0iJENGTEFHUyRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnLCAkMSkiCi0gCSAgaWYgQUNfVFJZX0VWQUwoYWNfbGluaykgJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotIAkgICAgcGlwZV93b3Jrcz15ZXMKLSAJICBmaQotLQkgIExJQlM9IiRsdF9zYXZlX0xJQlMiCi0tCSAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCi0rCSAgTElCUz0kbHRfZ2xvYnN5bV9zYXZlX0xJQlMKLSsJICBDRkxBR1M9JGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1MKLSAJZWxzZQotIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mQVNfTUVTU0FHRV9MT0dfRkQKLSAJZmkKLUBAIC0zNTUxLDYgKzM3OTEsMTMgQEAgZWxzZQotICAgQUNfTVNHX1JFU1VMVChvaykKLSBmaQotIAotKyMgUmVzcG9uc2UgZmlsZSBzdXBwb3J0LgotK2lmIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIk1TIGR1bXBiaW4iOyB0aGVuCi0rICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKLStlbGlmICROTSAtLWhlbHAgMj4vZGV2L251bGwgfCBncmVwICdbW0BdXUZJTEUnID4vZGV2L251bGw7IHRoZW4KLSsgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJwotK2ZpCi0rCi0gX0xUX0RFQ0woW2dsb2JhbF9zeW1ib2xfcGlwZV0sIFtsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlXSwgWzFdLAotICAgICBbVGFrZSB0aGUgb3V0cHV0IG9mIG5tIGFuZCBwcm9kdWNlIGEgbGlzdGluZyBvZiByYXcgc3ltYm9scyBhbmQgQyBuYW1lc10pCi0gX0xUX0RFQ0woW2dsb2JhbF9zeW1ib2xfdG9fY2RlY2xdLCBbbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2xdLCBbMV0sCi1AQCAtMzU2MSw2ICszODA4LDggQEAgX0xUX0RFQ0woW2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NdLAotIF9MVF9ERUNMKFtnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXhdLAotICAgICBbbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeF0sIFsxXSwKLSAgICAgW1RyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkXSkKLStfTFRfREVDTChbXSwgW25tX2ZpbGVfbGlzdF9zcGVjXSwgWzFdLAotKyAgICBbU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzIGZvciAkTk1dKQotIF0pICMgX0xUX0NNRF9HTE9CQUxfU1lNQk9MUwotIAotIAotQEAgLTM1NzIsNyArMzgyMSw2IEBAIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPQotIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0KLSBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Ci0gCi0tQUNfTVNHX0NIRUNLSU5HKFtmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQ10pCi0gbTRfaWYoWyQxXSwgW0NYWF0sIFsKLSAgICMgQysrIHNwZWNpZmljIGNhc2VzIGZvciBwaWMsIHN0YXRpYywgd2wsIGV0Yy4KLSAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCi1AQCAtMzY3OCw2ICszOTI2LDEyIEBAIG00X2lmKFskMV0sIFtDWFhdLCBbCi0gCSAgOzsKLSAJZXNhYwotIAk7OwotKyAgICAgIG1pbmd3KiB8IGN5Z3dpbiogfCBvczIqIHwgcHczMiogfCBjZWdjYyopCi0rCSMgVGhpcyBoYWNrIGlzIHNvIHRoYXQgdGhlIHNvdXJjZSBmaWxlIGNhbiB0ZWxsIHdoZXRoZXIgaXQgaXMgYmVpbmcKLSsJIyBidWlsdCBmb3IgaW5jbHVzaW9uIGluIGEgZGxsIChhbmQgc2hvdWxkIGV4cG9ydCBzeW1ib2xzIGZvciBleGFtcGxlKS4KLSsJbTRfaWYoWyQxXSwgW0dDSl0sIFtdLAotKwkgIFtfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1ERExMX0VYUE9SVCddKQotKwk7OwotICAgICAgIGRndXgqKQotIAljYXNlICRjY19iYXNlbmFtZSBpbgotIAkgIGVjKysqKQotQEAgLTM4MzAsNyArNDA4NCw3IEBAIG00X2lmKFskMV0sIFtDWFhdLCBbCi0gCTs7Ci0gICAgICAgc29sYXJpcyopCi0gCWNhc2UgJGNjX2Jhc2VuYW1lIGluCi0tCSAgQ0MqKQotKwkgIENDKiB8IHN1bkNDKikKLSAJICAgICMgU3VuIEMrKyA0LjIsIDUueCBhbmQgQ2VudGVybGluZSBDKysKLSAJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCi0gCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJwotQEAgLTQwNTMsNiArNDMwNywxMiBAQCBtNF9pZihbJDFdLCBbQ1hYXSwgWwotIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy0tc2hhcmVkJwotIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy0tc3RhdGljJwotIAk7OwotKyAgICAgIG5hZ2ZvciopCi0rCSMgTkFHIEZvcnRyYW4gY29tcGlsZXIKLSsJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwtV2wsLCcKLSsJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctUElDJwotKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJwotKwk7OwotICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKLSAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCi0gCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCi1AQCAtNDExNSw3ICs0Mzc1LDcgQEAgbTRfaWYoWyQxXSwgW0NYWF0sIFsKLSAgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LUElDJwotICAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCi0gICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLS0gICAgICBmNzcqIHwgZjkwKiB8IGY5NSopCi0rICAgICAgZjc3KiB8IGY5MCogfCBmOTUqIHwgc3VuZjc3KiB8IHN1bmY5MCogfCBzdW5mOTUqKQotIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVFvcHRpb24gbGQgJzs7Ci0gICAgICAgKikKLSAJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnOzsKLUBAIC00MTcyLDkgKzQ0MzIsMTEgQEAgY2FzZSAkaG9zdF9vcyBpbgotICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9IiRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSlAJnRAbTRfaWYoWyQxXSxbXSxbIC1EUElDXSxbbTRfaWYoWyQxXSxbQ1hYXSxbIC1EUElDXSxbXSldKSIKLSAgICAgOzsKLSBlc2FjCi0tQUNfTVNHX1JFU1VMVChbJF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKV0pCi0tX0xUX1RBR0RFQ0woW3dsXSwgW2x0X3Byb2dfY29tcGlsZXJfd2xdLCBbMV0sCi0tCVtIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyXSkKLSsKLStBQ19DQUNIRV9DSEVDSyhbZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUNdLAotKyAgW19MVF9UQUdWQVIobHRfY3ZfcHJvZ19jb21waWxlcl9waWMsICQxKV0sCi0rICBbX0xUX1RBR1ZBUihsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSldKQotK19MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0kX0xUX1RBR1ZBUihsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYywgJDEpCi0gCi0gIwotICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLUBAIC00MTkzLDYgKzQ0NTUsOCBAQCBmaQotIF9MVF9UQUdERUNMKFtwaWNfZmxhZ10sIFtsdF9wcm9nX2NvbXBpbGVyX3BpY10sIFsxXSwKLSAJW0FkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0c10pCi0gCi0rX0xUX1RBR0RFQ0woW3dsXSwgW2x0X3Byb2dfY29tcGlsZXJfd2xdLCBbMV0sCi0rCVtIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyXSkKLSAjCi0gIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgotICMKLUBAIC00MjEzLDYgKzQ0NzcsNyBAQCBfTFRfVEFHREVDTChbbGlua19zdGF0aWNfZmxhZ10sIFtsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY10sIFsxXSwKLSBtNF9kZWZ1bihbX0xUX0xJTktFUl9TSExJQlNdLAotIFtBQ19SRVFVSVJFKFtMVF9QQVRIX0xEXSlkbmwKLSBBQ19SRVFVSVJFKFtMVF9QQVRIX05NXSlkbmwKLSttNF9yZXF1aXJlKFtfTFRfUEFUSF9NQU5JRkVTVF9UT09MXSlkbmwKLSBtNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSlkbmwKLSBtNF9yZXF1aXJlKFtfTFRfREVDTF9FR1JFUF0pZG5sCi0gbTRfcmVxdWlyZShbX0xUX0RFQ0xfU0VEXSlkbmwKLUBAIC00MjIxLDYgKzQ0ODYsNyBAQCBtNF9yZXF1aXJlKFtfTFRfVEFHX0NPTVBJTEVSXSlkbmwKLSBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdGhlICRjb21waWxlciBsaW5rZXIgKCRMRCkgc3VwcG9ydHMgc2hhcmVkIGxpYnJhcmllc10pCi0gbTRfaWYoWyQxXSwgW0NYWF0sIFsKLSAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgJ1wnJ3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rICBfTFRfVEFHVkFSKGV4Y2x1ZGVfZXhwc3ltcywgJDEpPVsnX0dMT0JBTF9PRkZTRVRfVEFCTEVffF9HTE9CQUxfX0ZbSURdXy4qJ10KLSAgIGNhc2UgJGhvc3Rfb3MgaW4KLSAgIGFpeFtbNC05XV0qKQotICAgICAjIElmIHdlJ3JlIHVzaW5nIEdOVSBubSwgdGhlbiB3ZSBkb24ndCB3YW50IHRoZSAiLUMiIG9wdGlvbi4KLUBAIC00MjM1LDE1ICs0NTAxLDIwIEBAIG00X2lmKFskMV0sIFtDWFhdLCBbCi0gICAgIDs7Ci0gICBwdzMyKikKLSAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9IiRsdGRsbF9jbWRzIgotLSAgOzsKLSsgICAgOzsKLSAgIGN5Z3dpbiogfCBtaW5ndyogfCBjZWdjYyopCi0tICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW1tCQ0RHUlNdXVtbIF1dL3MvLipbWyBdXVwoW1teIF1dKlwpL1wxIERBVEEvOy9eLipbWyBdXV9fbm1fXy9zL14uKltbIF1dX19ubV9fXChbW14gXV0qXClbWyBdXVtbXiBdXSovXDEgREFUQS87L15JW1sgXV0vZDsvXltbQUlUV11dW1sgXV0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLS0gIDs7Ci0rICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0rICAgIGNsKikgOzsKLSsgICAgKikKLSsgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltbQkNER1JTXV1bWyBdXS9zLy4qW1sgXV1cKFtbXiBdXSpcKS9cMSBEQVRBLztzL14uKltbIF1dX19ubV9fXChbW14gXV0qXClbWyBdXVtbXiBdXSovXDEgREFUQS87L15JW1sgXV0vZDsvXltbQUlUV11dW1sgXV0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsgICAgICBfTFRfVEFHVkFSKGV4Y2x1ZGVfZXhwc3ltcywgJDEpPVsnW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJ10KLSsgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0gICAqKQotICAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEICdcJydzLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotLSAgOzsKLSsgICAgOzsKLSAgIGVzYWMKLS0gIF9MVF9UQUdWQVIoZXhjbHVkZV9leHBzeW1zLCAkMSk9WydfR0xPQkFMX09GRlNFVF9UQUJMRV98X0dMT0JBTF9fRltJRF1fLionXQotIF0sIFsKLSAgIHJ1bnBhdGhfdmFyPQotICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPQotQEAgLTQ0MTEsNyArNDY4Miw4IEBAIF9MVF9FT0YKLSAgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKLSAgICAgICBfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPW5vCi0gICAgICAgX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCi0tICAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bW0JDREdSU11dW1sgXV0vcy8uKltbIF1dXChbW14gXV0qXCkvXDEgREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bW0FJVFddXVtbIF1dL3MvLipbWyBdXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKyAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW1tCQ0RHUlNdXVtbIF1dL3MvLipbWyBdXVwoW1teIF1dKlwpL1wxIERBVEEvO3MvXi4qW1sgXV1fX25tX19cKFtbXiBdXSpcKVtbIF1dW1teIF1dKi9cMSBEQVRBLzsvXklbWyBdXS9kOy9eW1tBSVRXXV1bWyBdXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKyAgICAgIF9MVF9UQUdWQVIoZXhjbHVkZV9leHBzeW1zLCAkMSk9WydbX10rR0xPQkFMX09GRlNFVF9UQUJMRV98W19dK0dMT0JBTF9fW0ZJRF1fLip8W19dK2hlYWRfW0EtWmEtejAtOV9dK19kbGx8W0EtWmEtejAtOV9dK19kbGxfaW5hbWUnXQotIAotICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotQEAgLTQ1MTAsMTIgKzQ3ODIsMTIgQEAgX0xUX0VPRgotIAkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKLSAJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0KLSAJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQsICQxKT0nLXJwYXRoICRsaWJkaXInCi0tCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJwotKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCi0gCSAgaWYgdGVzdCAieCRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciID0geHllczsgdGhlbgotIAkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0gCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLSAJICAgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0tCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJwotKwkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCi0gCSAgZmkKLSAJICA7OwotIAllc2FjCi1AQCAtNDUyOSw4ICs0ODAxLDggQEAgX0xUX0VPRgotIAlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJwotIAl3bGFyYz0KLSAgICAgICBlbHNlCi0tCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBmaQotICAgICAgIDs7Ci0gCi1AQCAtNDU0OCw4ICs0ODIwLDggQEAgX0xUX0VPRgotIAotIF9MVF9FT0YKLSAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLS0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGVsc2UKLSAJX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotICAgICAgIGZpCi1AQCAtNDU5NSw4ICs0ODY3LDggQEAgX0xUX0VPRgotIAotICAgICAqKQotICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLS0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGVsc2UKLSAJX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotICAgICAgIGZpCi1AQCAtNDcyNiw3ICs0OTk4LDcgQEAgX0xUX0VPRgotIAlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9Jy1iZXJvaycKLSAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgotICAgICAgICAgIyBlbXB0eSBleGVjdXRhYmxlLgotLSAgICAgICAgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgKLSsgICAgICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYKFskMV0pCi0gICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgotICAgICAgIGVsc2UKLUBAIC00NzM3LDcgKzUwMDksNyBAQCBfTFRfRU9GCi0gCWVsc2UKLSAJICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgotIAkgIyBlbXB0eSBleGVjdXRhYmxlLgotLQkgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgKLSsJIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYKFskMV0pCi0gCSBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAotIAkgICMgLWJlcm9rIHdpbGwgbGluayB3aXRob3V0IGVycm9yLCBidXQgbWF5IHByb2R1Y2UgYSBicm9rZW4gbGlicmFyeS4KLUBAIC00NzgxLDIwICs1MDUzLDYzIEBAIF9MVF9FT0YKLSAgICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgotICAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKLSAgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgotLSAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScgJwotLSAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAotLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0tICAgICAgbGliZXh0PWxpYgotLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotLSAgICAgIHNocmV4dF9jbWRzPSIuZGxsIgotLSAgICAgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLS0gICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKLS0gICAgICAjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgotLSAgICAgIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgJDEpPSd0cnVlJwotLSAgICAgICMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCi0tICAgICAgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKLS0gICAgICBfTFRfVEFHVkFSKGZpeF9zcmNmaWxlX3BhdGgsICQxKT0nYGN5Z3BhdGggLXcgIiRzcmNmaWxlImAnCi0tICAgICAgX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCi0rICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSsgICAgICBjbCopCi0rCSMgTmF0aXZlIE1TVkMKLSsJX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyAnCi0rCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAotKwlfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPXllcwotKwlfTFRfVEFHVkFSKGZpbGVfbGlzdF9zcGVjLCAkMSk9J0AnCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0rCWxpYmV4dD1saWIKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0rCXNocmV4dF9jbWRzPSIuZGxsIgotKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0rCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JwotKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KLSsJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgZWxzZQotKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLSsJICBmaX4KLSsJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+Ci0rCSAgbGlua25hbWVzPScKLSsJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgotKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgJDEpPSd0cnVlJwotKwlfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKLSsJX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bW0JDREdSU11dW1sgXV0vcy8uKltbIF1dXChbW14gXV0qXCkvXDEsREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bW0FJVFddXVtbIF1dL3MvLipbWyBdXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKwkjIERvbid0IHVzZSByYW5saWIKLSsJX0xUX1RBR1ZBUihvbGRfcG9zdGluc3RhbGxfY21kcywgJDEpPSdjaG1vZCA2NDQgJG9sZGxpYicKLSsJX0xUX1RBR1ZBUihwb3N0bGlua19jbWRzLCAkMSk9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KLSsJICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgotKwkgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KLSsJICAgICouZXhlfCouRVhFKSA7OwotKwkgICAgKikKLSsJICAgICAgbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgotKwkgICAgICBsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgotKwkgICAgICA7OwotKwkgIGVzYWN+Ci0rCSAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KLSsJICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7Ci0rCSAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKLSsJICBmaScKLSsJOzsKLSsgICAgICAqKQotKwkjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKLSsJX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyAnCi0rCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotKwlsaWJleHQ9bGliCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotKwlzaHJleHRfY21kcz0iLmRsbCIKLSsJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKLSsJIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KLSsJX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCAkMSk9J3RydWUnCi0rCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCi0rCV9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCi0rCV9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcwotKwk7OwotKyAgICAgIGVzYWMKLSAgICAgICA7OwotIAotICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQotQEAgLTQ4MjgsNyArNTE0Myw3IEBAIF9MVF9FT0YKLSAKLSAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgotICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCi0tICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctUiRsaWJkaXInCi0gICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKLSAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubwotQEAgLTQ4MzYsNyArNTE1MSw3IEBAIF9MVF9FT0YKLSAKLSAgICAgaHB1eDkqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0tCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0rCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotICAgICAgIGVsc2UKLSAJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0gICAgICAgZmkKLUBAIC00ODUyLDcgKzUxNjcsNyBAQCBfTFRfRU9GCi0gCi0gICAgIGhwdXgxMCopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0tCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotICAgICAgIGVsc2UKLSAJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKLSAgICAgICBmaQotQEAgLTQ4NzYsMTAgKzUxOTEsMTAgQEAgX0xUX0VPRgotIAkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCWlhNjQqKQotLQkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAkqKQotLQkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJZXNhYwotICAgICAgIGVsc2UKLUBAIC00OTI2LDE2ICs1MjQxLDMxIEBAIF9MVF9FT0YKLSAKLSAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSsJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAkjIFRyeSB0byB1c2UgdGhlIC1leHBvcnRlZF9zeW1ib2wgbGQgb3B0aW9uLCBpZiBpdCBkb2VzIG5vdAotIAkjIHdvcmssIGFzc3VtZSB0aGF0IC1leHBvcnRzX2ZpbGUgZG9lcyBub3Qgd29yayBlaXRoZXIgYW5kCi0gCSMgaW1wbGljaXRseSBleHBvcnQgYWxsIHN5bWJvbHMuCi0tICAgICAgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgotLSAgICAgICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgotLSAgICAgICAgQUNfTElOS19JRkVMU0UoaW50IGZvbyh2b2lkKSB7fSwKLS0gICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLS0gICAgICAgICkKLS0gICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCi0rCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCi0rCUFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sXSwKLSsJICBbbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2xdLAotKwkgIFtzYXZlX0xERkxBR1M9IiRMREZMQUdTIgotKwkgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCi0rCSAgIEFDX0xJTktfSUZFTFNFKAotKwkgICAgIFtBQ19MQU5HX1NPVVJDRSgKLSsJICAgICAgICBbQUNfTEFOR19DQVNFKFtDXSwgW1tpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9XV0sCi0rCQkJICAgICAgW0MrK10sIFtbaW50IGZvbyAodm9pZCkgeyByZXR1cm4gMDsgfV1dLAotKwkJCSAgICAgIFtGb3J0cmFuIDc3XSwgW1sKLSsgICAgICBzdWJyb3V0aW5lIGZvbwotKyAgICAgIGVuZF1dLAotKwkJCSAgICAgIFtGb3J0cmFuXSwgW1sKLSsgICAgICBzdWJyb3V0aW5lIGZvbwotKyAgICAgIGVuZF1dKV0pXSwKLSsJICAgICAgW2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPXllc10sCi0rCSAgICAgIFtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD1ub10pCi0rICAgICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIl0pCi0rCWlmIHRlc3QgIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPSB5ZXM7IHRoZW4KLSsgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWZpCi0gICAgICAgZWxzZQotIAlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotQEAgLTUwMjAsNyArNTM1MCw3IEBAIF9MVF9FT0YKLSAgICAgb3NmNCogfCBvc2Y1KikJIyBhcyBvc2YzKiB3aXRoIHRoZSBhZGRpdGlvbiBvZiAtbXN5bSBmbGFnCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKLS0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAlfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwotICAgICAgIGVsc2UKLSAJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJwotQEAgLTUwMzksOSArNTM2OSw5IEBAIF9MVF9FT0YKLSAgICAgICBfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAteiBkZWZzJwotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gCXdsYXJjPScke3dsfScKLS0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KLS0JICAkQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwotKwkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwotICAgICAgIGVsc2UKLSAJY2FzZSBgJENDIC1WIDI+JjFgIGluCi0gCSoiQ29tcGlsZXJzIDUuMCIqKQotQEAgLTUzMTMsOCArNTY0Myw2IEBAIF9MVF9UQUdERUNMKFtdLCBbaW5oZXJpdF9ycGF0aF0sIFswXSwKLSAgICAgdG8gcnVudGltZSBwYXRoIGxpc3RdKQotIF9MVF9UQUdERUNMKFtdLCBbbGlua19hbGxfZGVwbGlic10sIFswXSwKLSAgICAgW1doZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllc10pCi0tX0xUX1RBR0RFQ0woW10sIFtmaXhfc3JjZmlsZV9wYXRoXSwgWzFdLAotLSAgICBbRml4IHRoZSBzaGVsbCB2YXJpYWJsZSAkc3JjZmlsZSBmb3IgdGhlIGNvbXBpbGVyXSkKLSBfTFRfVEFHREVDTChbXSwgW2Fsd2F5c19leHBvcnRfc3ltYm9sc10sIFswXSwKLSAgICAgW1NldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZF0pCi0gX0xUX1RBR0RFQ0woW10sIFtleHBvcnRfc3ltYm9sc19jbWRzXSwgWzJdLAotQEAgLTUzMjUsNiArNTY1Myw4IEBAIF9MVF9UQUdERUNMKFtdLCBbaW5jbHVkZV9leHBzeW1zXSwgWzFdLAotICAgICBbU3ltYm9scyB0aGF0IG11c3QgYWx3YXlzIGJlIGV4cG9ydGVkXSkKLSBfTFRfVEFHREVDTChbXSwgW3ByZWxpbmtfY21kc10sIFsyXSwKLSAgICAgW0NvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzXSkKLStfTFRfVEFHREVDTChbXSwgW3Bvc3RsaW5rX2NtZHNdLCBbMl0sCi0rICAgIFtDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGZpbmlzaGluZyBsaW5raW5nIHByb2dyYW1zXSkKLSBfTFRfVEFHREVDTChbXSwgW2ZpbGVfbGlzdF9zcGVjXSwgWzFdLAotICAgICBbU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzXSkKLSBkbmwgRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKLUBAIC01NDI2LDYgKzU3NTYsNyBAQCBDQz0iJGx0X3NhdmVfQ0MiCi0gbTRfZGVmdW4oW19MVF9MQU5HX0NYWF9DT05GSUddLAotIFttNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSlkbmwKLSBtNF9yZXF1aXJlKFtfTFRfREVDTF9FR1JFUF0pZG5sCi0rbTRfcmVxdWlyZShbX0xUX1BBVEhfTUFOSUZFU1RfVE9PTF0pZG5sCi0gaWYgdGVzdCAtbiAiJENYWCIgJiYgKCB0ZXN0ICJYJENYWCIgIT0gIlhubyIgJiYKLSAgICAgKCAodGVzdCAiWCRDWFgiID0gIlhnKysiICYmIGBnKysgLXYgPi9kZXYvbnVsbCAyPiYxYCApIHx8Ci0gICAgICh0ZXN0ICJYJENYWCIgIT0gIlhnKysiKSkpIDsgdGhlbgotQEAgLTU0ODcsNiArNTgxOCw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCi0gCi0gICAjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgotICAgbHRfc2F2ZV9DQz0kQ0MKLSsgIGx0X3NhdmVfQ0ZMQUdTPSRDRkxBR1MKLSAgIGx0X3NhdmVfTEQ9JExECi0gICBsdF9zYXZlX0dDQz0kR0NDCi0gICBHQ0M9JEdYWAotQEAgLTU1MDQsNiArNTgzNiw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCi0gICBmaQotICAgdGVzdCAteiAiJHtMRENYWCtzZXR9IiB8fCBMRD0kTERDWFgKLSAgIENDPSR7Q1hYLSJjKysifQotKyAgQ0ZMQUdTPSRDWFhGTEFHUwotICAgY29tcGlsZXI9JENDCi0gICBfTFRfVEFHVkFSKGNvbXBpbGVyLCAkMSk9JENDCi0gICBfTFRfQ0NfQkFTRU5BTUUoWyRjb21waWxlcl0pCi1AQCAtNTY2Nyw3ICs2MDAwLDcgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KLSAgICAgICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSctYmVyb2snCi0gICAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbiBlbXB0eQotICAgICAgICAgICAjIGV4ZWN1dGFibGUuCi0tICAgICAgICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCi0rICAgICAgICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYKFskMV0pCi0gICAgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgotIAotICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKLUBAIC01Njc5LDcgKzYwMTIsNyBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgotICAgICAgICAgICBlbHNlCi0gCSAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KLSAJICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KLS0JICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCi0rCSAgICBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWChbJDFdKQotIAkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gCSAgICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAotIAkgICAgIyAtYmVyb2sgd2lsbCBsaW5rIHdpdGhvdXQgZXJyb3IsIGJ1dCBtYXkgcHJvZHVjZSBhIGJyb2tlbiBsaWJyYXJ5LgotQEAgLTU3MjEsMjkgKzYwNTQsNzUgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KLSAgICAgICAgIDs7Ci0gCi0gICAgICAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotLSAgICAgICAgIyBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKSBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywKLS0gICAgICAgICMgYXMgdGhlcmUgaXMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0tICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLUwkbGliZGlyJwotLSAgICAgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tLWV4cG9ydC1hbGwtc3ltYm9scycKLS0gICAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAotLSAgICAgICAgX0xUX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKT1ubwotLSAgICAgICAgX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCi0tCi0tICAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCi0tICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLS0gICAgICAgICAgIyBJZiB0aGUgZXhwb3J0LXN5bWJvbHMgZmlsZSBhbHJlYWR5IGlzIGEgLmRlZiBmaWxlICgxc3QgbGluZQotLSAgICAgICAgICAjIGlzIEVYUE9SVFMpLCB1c2UgaXQgYXMgaXM7IG90aGVyd2lzZSwgcHJlcGVuZC4uLgotLSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KLS0JICAgIGNwICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLS0gICAgICAgICAgZWxzZQotLQkgICAgZWNobyBFWFBPUlRTID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7Ci0tCSAgICBjYXQgJGV4cG9ydF9zeW1ib2xzID4+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOwotLSAgICAgICAgICBmaX4KLS0gICAgICAgICAgJENDIC1zaGFyZWQgLW5vc3RkbGliICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotLSAgICAgICAgZWxzZQotLSAgICAgICAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCi0tICAgICAgICBmaQotLSAgICAgICAgOzsKLSsJY2FzZSAkR1hYLCRjY19iYXNlbmFtZSBpbgotKwksY2wqIHwgbm8sY2wqKQotKwkgICMgTmF0aXZlIE1TVkMKLSsJICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCi0rCSAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KLSsJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nICcKLSsJICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKLSsJICBfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPXllcwotKwkgIF9MVF9UQUdWQVIoZmlsZV9saXN0X3NwZWMsICQxKT0nQCcKLSsJICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotKwkgIGxpYmV4dD1saWIKLSsJICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLSsJICBzaHJleHRfY21kcz0iLmRsbCIKLSsJICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0rCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCi0rCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCi0rCSAgICAgICRTRUQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOwotKwkgICAgZWxzZQotKwkgICAgICAkU0VEIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLSsJICAgIGZpfgotKwkgICAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgotKwkgICAgbGlua25hbWVzPScKLSsJICAjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCi0rCSAgIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICQxKT0ndHJ1ZScKLSsJICBfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKLSsJICAjIERvbid0IHVzZSByYW5saWIKLSsJICBfTFRfVEFHVkFSKG9sZF9wb3N0aW5zdGFsbF9jbWRzLCAkMSk9J2NobW9kIDY0NCAkb2xkbGliJwotKwkgIF9MVF9UQUdWQVIocG9zdGxpbmtfY21kcywgJDEpPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+Ci0rCSAgICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgotKwkgICAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgotKwkgICAgICAqLmV4ZXwqLkVYRSkgOzsKLSsJICAgICAgKikKLSsJCWx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKLSsJCWx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCi0rCQk7OwotKwkgICAgZXNhY34KLSsJICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkbHRfb3V0cHV0ZmlsZSJ+Ci0rCSAgICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgotKwkgICAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOwotKwkgICAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKLSsJICAgIGZpJwotKwkgIDs7Ci0rCSopCi0rCSAgIyBnKysKLSsJICAjIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLAotKwkgICMgYXMgdGhlcmUgaXMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0rCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1MJGxpYmRpcicKLSsJICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tZXhwb3J0LWFsbC1zeW1ib2xzJwotKwkgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAotKwkgIF9MVF9UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9bm8KLSsJICBfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKLSsKLSsJICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCi0rCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi0rCSAgICAjIElmIHRoZSBleHBvcnQtc3ltYm9scyBmaWxlIGFscmVhZHkgaXMgYSAuZGVmIGZpbGUgKDFzdCBsaW5lCi0rCSAgICAjIGlzIEVYUE9SVFMpLCB1c2UgaXQgYXMgaXM7IG90aGVyd2lzZSwgcHJlcGVuZC4uLgotKwkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCi0rCSAgICAgIGNwICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLSsJICAgIGVsc2UKLSsJICAgICAgZWNobyBFWFBPUlRTID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7Ci0rCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgPj4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7Ci0rCSAgICBmaX4KLSsJICAgICRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLSsJICBlbHNlCi0rCSAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCi0rCSAgZmkKLSsJICA7OwotKwllc2FjCi0rCTs7Ci0gICAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKLSAgICAgICAgIF9MVF9EQVJXSU5fTElOS0VSX0ZFQVRVUkVTKCQxKQotIAk7OwotQEAgLTU4MTgsNyArNjE5Nyw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCi0gICAgICAgICAgICAgOzsKLSAgICAgICAgICAgKikKLSAgICAgICAgICAgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgotLSAgICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0rICAgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHBpY19mbGFnICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0gICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0Ci0gICAgICAgICAgICAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCi1AQCAtNTg4OSwxMCArNjI2OCwxMCBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgotIAkgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgICAgICAgICAgIDs7Ci0gCSAgICAgICAgICBpYTY0KikKLS0JICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJwotKwkgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgICAgICAgICAgICA7OwotIAkgICAgICAgICAgKikKLS0JICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKLSAJICAgICAgICAgICAgOzsKLSAJICAgICAgICBlc2FjCi0gCSAgICAgIGZpCi1AQCAtNTkzMyw5ICs2MzEyLDkgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KLSAgICAgICAgICAgKikKLSAJICAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCi0gCSAgICAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgotLQkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSsJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAkgICAgICBlbHNlCi0tCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAtbyAkbGliJwotKwkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgIC1vICRsaWInCi0gCSAgICAgIGZpCi0gCSAgICBmaQotIAkgICAgX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9eWVzCi1AQCAtNjAwNSwyMCArNjM4NCwyMCBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgotIAkgICAgICBfTFRfVEFHVkFSKHByZWxpbmtfY21kcywgJDEpPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgotIAkJcm0gLXJmICR0cGxkaXJ+Ci0gCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRvYmpzICRsaWJvYmpzICRjb21waWxlX2RlcGxpYnN+Ci0tCQljb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgJE5MMlNQYCInCi0rCQljb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGAiJwotIAkgICAgICBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KLSAJCXJtIC1yZiAkdHBsZGlyfgotIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkb2xkb2JqcyRvbGRfZGVwbGlic34KLS0JCSRBUiAkQVJfRkxBR1MgJG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGB+Ci0rCQkkQVIgJEFSX0ZMQUdTICRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYH4KLSAJCSRSQU5MSUIgJG9sZGxpYicKLSAJICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KLSAJCXJtIC1yZiAkdHBsZGlyfgotIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJGNvbnZlbmllbmNlICRwb3N0ZGVwX29iamVjdHN+Ci0tCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAtbyAkbGliJwotKwkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIC1vICRsaWInCi0gCSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgotIAkJcm0gLXJmICR0cGxkaXJ+Ci0gCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkY29udmVuaWVuY2UgJHBvc3RkZXBfb2JqZWN0c34KLS0JCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gCSAgICAgIDs7Ci0gCSAgICAqKSAjIFZlcnNpb24gNiBhbmQgYWJvdmUgdXNlIHdlYWsgc3ltYm9scwotIAkgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgLW8gJGxpYicKLUBAIC02MjEzLDcgKzY1OTIsNyBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgotIAkgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAkJICA7OwotIAkgICAgICAgICopCi0tCSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSsJICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJCSAgOzsKLSAJICAgICAgZXNhYwotIAotQEAgLTYyNTksNyArNjYzOCw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCi0gCi0gICAgICAgc29sYXJpcyopCi0gICAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotLSAgICAgICAgICBDQyopCi0rICAgICAgICAgIENDKiB8IHN1bkNDKikKLSAJICAgICMgU3VuIEMrKyA0LjIsIDUueCBhbmQgQ2VudGVybGluZSBDKysKLSAgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCQxKT15ZXMKLSAJICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nIC16ZGVmcycKLUBAIC02MzAwLDkgKzY2NzksOSBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgotIAkgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0gCSAgICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LXogJHt3bH1kZWZzJwotIAkgICAgICBpZiAkQ0MgLS12ZXJzaW9uIHwgJEdSRVAgLXYgJ14yXC43JyA+IC9kZXYvbnVsbDsgdGhlbgotLQkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkTERGTEFHUyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCAkd2wkc29uYW1lIC1vICRsaWInCi0rCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAkTERGTEFHUyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCAkd2wkc29uYW1lIC1vICRsaWInCi0gCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KLS0JCSAgJENDIC1zaGFyZWQgLW5vc3RkbGliICR7d2x9LU0gJHdsJGxpYi5leHAgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwotKwkJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICR7d2x9LU0gJHdsJGxpYi5leHAgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwotIAotIAkgICAgICAgICMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKLSAJICAgICAgICAjIHdoYXQgImhpZGRlbiIgbGlicmFyaWVzLCBvYmplY3QgZmlsZXMgYW5kIGZsYWdzIGFyZSB1c2VkIHdoZW4KLUBAIC02NDMxLDYgKzY4MTAsNyBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgotICAgZmkgIyB0ZXN0IC1uICIkY29tcGlsZXIiCi0gCi0gICBDQz0kbHRfc2F2ZV9DQwotKyAgQ0ZMQUdTPSRsdF9zYXZlX0NGTEFHUwotICAgTERDWFg9JExECi0gICBMRD0kbHRfc2F2ZV9MRAotICAgR0NDPSRsdF9zYXZlX0dDQwotQEAgLTY0NDUsNiArNjgyNSwyOSBAQCBBQ19MQU5HX1BPUAotIF0pIyBfTFRfTEFOR19DWFhfQ09ORklHCi0gCi0gCi0rIyBfTFRfRlVOQ19TVFJJUE5BTUVfQ05GCi0rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0rIyBmdW5jX3N0cmlwbmFtZV9jbmYgcHJlZml4IHN1ZmZpeCBuYW1lCi0rIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KLSsjIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotKyMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZwotKyMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KLSsjCi0rIyBUaGlzIGZ1bmN0aW9uIGlzIGlkZW50aWNhbCB0byB0aGUgKG5vbi1YU0kpIHZlcnNpb24gb2YgZnVuY19zdHJpcG5hbWUsCi0rIyBleGNlcHQgdGhpcyBvbmUgY2FuIGJlIHVzZWQgYnkgbTQgY29kZSB0aGF0IG1heSBiZSBleGVjdXRlZCBieSBjb25maWd1cmUsCi0rIyByYXRoZXIgdGhhbiB0aGUgbGlidG9vbCBzY3JpcHQuCi0rbTRfZGVmdW4oW19MVF9GVU5DX1NUUklQTkFNRV9DTkZdLFtkbmwKLStBQ19SRVFVSVJFKFtfTFRfREVDTF9TRURdKQotK0FDX1JFUVVJUkUoW19MVF9QUk9HX0VDSE9fQkFDS1NMQVNIXSkKLStmdW5jX3N0cmlwbmFtZV9jbmYgKCkKLSt7Ci0rICBjYXNlICR7Mn0gaW4KLSsgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7Ci0rICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7Ci0rICBlc2FjCi0rfSAjIGZ1bmNfc3RyaXBuYW1lX2NuZgotK10pIyBfTFRfRlVOQ19TVFJJUE5BTUVfQ05GCi0rCi0gIyBfTFRfU1lTX0hJRERFTl9MSUJERVBTKFtUQUdOQU1FXSkKLSAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICMgRmlndXJlIG91dCAiaGlkZGVuIiBsaWJyYXJ5IGRlcGVuZGVuY2llcyBmcm9tIHZlcmJvc2UKLUBAIC02NDUzLDYgKzY4NTYsNyBAQCBBQ19MQU5HX1BPUAotICMgb2JqZWN0cywgbGlicmFyaWVzIGFuZCBsaWJyYXJ5IGZsYWdzLgotIG00X2RlZnVuKFtfTFRfU1lTX0hJRERFTl9MSUJERVBTXSwKLSBbbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pZG5sCi0rQUNfUkVRVUlSRShbX0xUX0ZVTkNfU1RSSVBOQU1FX0NORl0pZG5sCi0gIyBEZXBlbmRlbmNpZXMgdG8gcGxhY2UgYmVmb3JlIGFuZCBhZnRlciB0aGUgb2JqZWN0IGJlaW5nIGxpbmtlZDoKLSBfTFRfVEFHVkFSKHByZWRlcF9vYmplY3RzLCAkMSk9Ci0gX0xUX1RBR1ZBUihwb3N0ZGVwX29iamVjdHMsICQxKT0KLUBAIC02NTAzLDYgKzY5MDcsMTMgQEAgcHVibGljIGNsYXNzIGZvbyB7Ci0gfTsKLSBfTFRfRU9GCi0gXSkKLSsKLStfbHRfbGliZGVwc19zYXZlX0NGTEFHUz0kQ0ZMQUdTCi0rY2FzZSAiJENDICRDRkxBR1MgIiBpbiAjKAotKypcIC1mbHRvKlwgKikgQ0ZMQUdTPSIkQ0ZMQUdTIC1mbm8tbHRvIiA7OwotKypcIC1md2hvcHIqXCAqKSBDRkxBR1M9IiRDRkxBR1MgLWZuby13aG9wciIgOzsKLStlc2FjCi0rCi0gZG5sIFBhcnNlIHRoZSBjb21waWxlciBvdXRwdXQgYW5kIGV4dHJhY3QgdGhlIG5lY2Vzc2FyeQotIGRubCBvYmplY3RzLCBsaWJyYXJpZXMgYW5kIGxpYnJhcnkgZmxhZ3MuCi0gaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSk7IHRoZW4KLUBAIC02NTE0LDcgKzY5MjUsNyBAQCBpZiBBQ19UUllfRVZBTChhY19jb21waWxlKTsgdGhlbgotICAgcHJlX3Rlc3Rfb2JqZWN0X2RlcHNfZG9uZT1ubwotIAotICAgZm9yIHAgaW4gYGV2YWwgIiRvdXRwdXRfdmVyYm9zZV9saW5rX2NtZCJgOyBkbwotLSAgICBjYXNlICRwIGluCi0rICAgIGNhc2UgJHtwcmV2fSR7cH0gaW4KLSAKLSAgICAgLUwqIHwgLVIqIHwgLWwqKQotICAgICAgICAjIFNvbWUgY29tcGlsZXJzIHBsYWNlIHNwYWNlIGJldHdlZW4gIi17TCxSfSIgYW5kIHRoZSBwYXRoLgotQEAgLTY1MjMsMTMgKzY5MzQsMjIgQEAgaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSk7IHRoZW4KLSAgICAgICAgICAgdGVzdCAkcCA9ICItUiI7IHRoZW4KLSAJIHByZXY9JHAKLSAJIGNvbnRpbnVlCi0tICAgICAgIGVsc2UKLS0JIHByZXY9Ci0gICAgICAgIGZpCi0gCi0rICAgICAgICMgRXhwYW5kIHRoZSBzeXNyb290IHRvIGVhc2UgZXh0cmFjdGluZyB0aGUgZGlyZWN0b3JpZXMgbGF0ZXIuCi0rICAgICAgIGlmIHRlc3QgLXogIiRwcmV2IjsgdGhlbgotKyAgICAgICAgIGNhc2UgJHAgaW4KLSsgICAgICAgICAtTCopIGZ1bmNfc3RyaXBuYW1lX2NuZiAnLUwnICcnICIkcCI7IHByZXY9LUw7IHA9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OwotKyAgICAgICAgIC1SKikgZnVuY19zdHJpcG5hbWVfY25mICctUicgJycgIiRwIjsgcHJldj0tUjsgcD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7Ci0rICAgICAgICAgLWwqKSBmdW5jX3N0cmlwbmFtZV9jbmYgJy1sJyAnJyAiJHAiOyBwcmV2PS1sOyBwPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKLSsgICAgICAgICBlc2FjCi0rICAgICAgIGZpCi0rICAgICAgIGNhc2UgJHAgaW4KLSsgICAgICAgPSopIGZ1bmNfc3RyaXBuYW1lX2NuZiAnPScgJycgIiRwIjsgcD0kbHRfc3lzcm9vdCRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKLSsgICAgICAgZXNhYwotICAgICAgICBpZiB0ZXN0ICIkcHJlX3Rlc3Rfb2JqZWN0X2RlcHNfZG9uZSIgPSBubzsgdGhlbgotLQkgY2FzZSAkcCBpbgotLQkgLUwqIHwgLVIqKQotKwkgY2FzZSAke3ByZXZ9IGluCi0rCSAtTCB8IC1SKQotIAkgICAjIEludGVybmFsIGNvbXBpbGVyIGxpYnJhcnkgcGF0aHMgc2hvdWxkIGNvbWUgYWZ0ZXIgdGhvc2UKLSAJICAgIyBwcm92aWRlZCB0aGUgdXNlci4gIFRoZSBwb3N0ZGVwcyBhbHJlYWR5IGNvbWUgYWZ0ZXIgdGhlCi0gCSAgICMgdXNlciBzdXBwbGllZCBsaWJzIHNvIHRoZXJlIGlzIG5vIG5lZWQgdG8gcHJvY2VzcyB0aGVtLgotQEAgLTY1NDksOCArNjk2OSwxMCBAQCBpZiBBQ19UUllfRVZBTChhY19jb21waWxlKTsgdGhlbgotIAkgICBfTFRfVEFHVkFSKHBvc3RkZXBzLCAkMSk9IiR7X0xUX1RBR1ZBUihwb3N0ZGVwcywgJDEpfSAke3ByZXZ9JHtwfSIKLSAJIGZpCi0gICAgICAgIGZpCi0rICAgICAgIHByZXY9Ci0gICAgICAgIDs7Ci0gCi0rICAgICoubHRvLiRvYmpleHQpIDs7ICMgSWdub3JlIEdDQyBMVE8gb2JqZWN0cwotICAgICAqLiRvYmpleHQpCi0gICAgICAgICMgVGhpcyBhc3N1bWVzIHRoYXQgdGhlIHRlc3Qgb2JqZWN0IGZpbGUgb25seSBzaG93cyB1cAotICAgICAgICAjIG9uY2UgaW4gdGhlIGNvbXBpbGVyIG91dHB1dC4KLUBAIC02NTg2LDYgKzcwMDgsNyBAQCBlbHNlCi0gZmkKLSAKLSAkUk0gLWYgY29uZmVzdC4kb2JqZXh0Ci0rQ0ZMQUdTPSRfbHRfbGliZGVwc19zYXZlX0NGTEFHUwotIAotICMgUE9SVE1FOiBvdmVycmlkZSBhYm92ZSB0ZXN0IG9uIHN5c3RlbXMgd2hlcmUgaXQgaXMgYnJva2VuCi0gbTRfaWYoWyQxXSwgW0NYWF0sCi1AQCAtNjYyMiw3ICs3MDQ1LDcgQEAgbGludXgqKQotIAotIHNvbGFyaXMqKQotICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLS0gIENDKikKLSsgIENDKiB8IHN1bkNDKikKLSAgICAgIyBUaGUgbW9yZSBzdGFuZGFyZHMtY29uZm9ybWluZyBzdGxwb3J0NCBsaWJyYXJ5IGlzCi0gICAgICMgaW5jb21wYXRpYmxlIHdpdGggdGhlIENzdGQgbGlicmFyeS4gQXZvaWQgc3BlY2lmeWluZwotICAgICAjIGl0IGlmIGl0J3MgaW4gQ1hYRkxBR1MuIElnbm9yZSBsaWJDcnVuIGFzCi1AQCAtNjczNSw3ICs3MTU4LDkgQEAgaWYgdGVzdCAiJF9sdF9kaXNhYmxlX0Y3NyIgIT0geWVzOyB0aGVuCi0gICAjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgotICAgbHRfc2F2ZV9DQz0iJENDIgotICAgbHRfc2F2ZV9HQ0M9JEdDQwotKyAgbHRfc2F2ZV9DRkxBR1M9JENGTEFHUwotICAgQ0M9JHtGNzctImY3NyJ9Ci0rICBDRkxBR1M9JEZGTEFHUwotICAgY29tcGlsZXI9JENDCi0gICBfTFRfVEFHVkFSKGNvbXBpbGVyLCAkMSk9JENDCi0gICBfTFRfQ0NfQkFTRU5BTUUoWyRjb21waWxlcl0pCi1AQCAtNjc4OSw2ICs3MjE0LDcgQEAgaWYgdGVzdCAiJF9sdF9kaXNhYmxlX0Y3NyIgIT0geWVzOyB0aGVuCi0gCi0gICBHQ0M9JGx0X3NhdmVfR0NDCi0gICBDQz0iJGx0X3NhdmVfQ0MiCi0rICBDRkxBR1M9IiRsdF9zYXZlX0NGTEFHUyIKLSBmaSAjIHRlc3QgIiRfbHRfZGlzYWJsZV9GNzciICE9IHllcwotIAotIEFDX0xBTkdfUE9QCi1AQCAtNjg2NSw3ICs3MjkxLDkgQEAgaWYgdGVzdCAiJF9sdF9kaXNhYmxlX0ZDIiAhPSB5ZXM7IHRoZW4KLSAgICMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCi0gICBsdF9zYXZlX0NDPSIkQ0MiCi0gICBsdF9zYXZlX0dDQz0kR0NDCi0rICBsdF9zYXZlX0NGTEFHUz0kQ0ZMQUdTCi0gICBDQz0ke0ZDLSJmOTUifQotKyAgQ0ZMQUdTPSRGQ0ZMQUdTCi0gICBjb21waWxlcj0kQ0MKLSAgIEdDQz0kYWNfY3ZfZmNfY29tcGlsZXJfZ251Ci0gCi1AQCAtNjkyMSw3ICs3MzQ5LDggQEAgaWYgdGVzdCAiJF9sdF9kaXNhYmxlX0ZDIiAhPSB5ZXM7IHRoZW4KLSAgIGZpICMgdGVzdCAtbiAiJGNvbXBpbGVyIgotIAotICAgR0NDPSRsdF9zYXZlX0dDQwotLSAgQ0M9IiRsdF9zYXZlX0NDIgotKyAgQ0M9JGx0X3NhdmVfQ0MKLSsgIENGTEFHUz0kbHRfc2F2ZV9DRkxBR1MKLSBmaSAjIHRlc3QgIiRfbHRfZGlzYWJsZV9GQyIgIT0geWVzCi0gCi0gQUNfTEFOR19QT1AKLUBAIC02OTU4LDEwICs3Mzg3LDEyIEBAIF9MVF9DT01QSUxFUl9CT0lMRVJQTEFURQotIF9MVF9MSU5LRVJfQk9JTEVSUExBVEUKLSAKLSAjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgotLWx0X3NhdmVfQ0M9IiRDQyIKLStsdF9zYXZlX0NDPSRDQwotK2x0X3NhdmVfQ0ZMQUdTPSRDRkxBR1MKLSBsdF9zYXZlX0dDQz0kR0NDCi0gR0NDPXllcwotIENDPSR7R0NKLSJnY2oifQotK0NGTEFHUz0kR0NKRkxBR1MKLSBjb21waWxlcj0kQ0MKLSBfTFRfVEFHVkFSKGNvbXBpbGVyLCAkMSk9JENDCi0gX0xUX1RBR1ZBUihMRCwgJDEpPSIkTEQiCi1AQCAtNjk5Miw3ICs3NDIzLDggQEAgZmkKLSBBQ19MQU5HX1JFU1RPUkUKLSAKLSBHQ0M9JGx0X3NhdmVfR0NDCi0tQ0M9IiRsdF9zYXZlX0NDIgotK0NDPSRsdF9zYXZlX0NDCi0rQ0ZMQUdTPSRsdF9zYXZlX0NGTEFHUwotIF0pIyBfTFRfTEFOR19HQ0pfQ09ORklHCi0gCi0gCi1AQCAtNzAyNyw5ICs3NDU5LDExIEBAIF9MVF9MSU5LRVJfQk9JTEVSUExBVEUKLSAKLSAjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgotIGx0X3NhdmVfQ0M9IiRDQyIKLStsdF9zYXZlX0NGTEFHUz0kQ0ZMQUdTCi0gbHRfc2F2ZV9HQ0M9JEdDQwotIEdDQz0KLSBDQz0ke1JDLSJ3aW5kcmVzIn0KLStDRkxBR1M9Ci0gY29tcGlsZXI9JENDCi0gX0xUX1RBR1ZBUihjb21waWxlciwgJDEpPSRDQwotIF9MVF9DQ19CQVNFTkFNRShbJGNvbXBpbGVyXSkKLUBAIC03MDQyLDcgKzc0NzYsOCBAQCBmaQotIAotIEdDQz0kbHRfc2F2ZV9HQ0MKLSBBQ19MQU5HX1JFU1RPUkUKLS1DQz0iJGx0X3NhdmVfQ0MiCi0rQ0M9JGx0X3NhdmVfQ0MKLStDRkxBR1M9JGx0X3NhdmVfQ0ZMQUdTCi0gXSkjIF9MVF9MQU5HX1JDX0NPTkZJRwotIAotIAotQEAgLTcxMDEsNiArNzUzNiwxNSBAQCBfTFRfREVDTChbXSwgW09CSkRVTVBdLCBbMV0sIFtBbiBvYmplY3Qgc3ltYm9sIGR1bXBlcl0pCi0gQUNfU1VCU1QoW09CSkRVTVBdKQotIF0pCi0gCi0rIyBfTFRfREVDTF9ETExUT09MCi0rIyAtLS0tLS0tLS0tLS0tLS0tCi0rIyBFbnN1cmUgRExMVE9PTCB2YXJpYWJsZSBpcyBzZXQuCi0rbTRfZGVmdW4oW19MVF9ERUNMX0RMTFRPT0xdLAotK1tBQ19DSEVDS19UT09MKERMTFRPT0wsIGRsbHRvb2wsIGZhbHNlKQotK3Rlc3QgLXogIiRETExUT09MIiAmJiBETExUT09MPWRsbHRvb2wKLStfTFRfREVDTChbXSwgW0RMTFRPT0xdLCBbMV0sIFtETEwgY3JlYXRpb24gcHJvZ3JhbV0pCi0rQUNfU1VCU1QoW0RMTFRPT0xdKQotK10pCi0gCi0gIyBfTFRfREVDTF9TRUQKLSAjIC0tLS0tLS0tLS0tLQotQEAgLTcxOTQsOCArNzYzOCw4IEBAIG00X2RlZnVuKFtfTFRfQ0hFQ0tfU0hFTExfRkVBVFVSRVNdLAotICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCi0geHNpX3NoZWxsPW5vCi0gKCBfbHRfZHVtbXk9ImEvYi9jIgotLSAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sIiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKLS0gICAgICA9IGMsYS9iLCwgXAotKyAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sJHtfbHRfZHVtbXkjPz99IiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKLSsgICAgICA9IGMsYS9iLGIvYywgXAotICAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCi0gICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCi0gICAmJiB4c2lfc2hlbGw9eWVzCi1AQCAtNzIzNCwyMDYgKzc2NzgsMTYyIEBAIF9MVF9ERUNMKFtOTDJTUF0sIFtsdF9OTDJTUF0sIFsxXSwgW3R1cm4gbmV3bGluZXMgaW50byBzcGFjZXNdKWRubAotIF0pIyBfTFRfQ0hFQ0tfU0hFTExfRkVBVFVSRVMKLSAKLSAKLS0jIF9MVF9QUk9HX1hTSV9TSEVMTEZOUwotLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tIyBCb3VybmUgYW5kIFhTSSBjb21wYXRpYmxlIHZhcmlhbnRzIG9mIHNvbWUgdXNlZnVsIHNoZWxsIGZ1bmN0aW9ucy4KLS1tNF9kZWZ1bihbX0xUX1BST0dfWFNJX1NIRUxMRk5TXSwKLS1bY2FzZSAkeHNpX3NoZWxsIGluCi0tICB5ZXMpCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLWZ1bmNfZGlybmFtZSAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0tICBlc2FjCi0tfQotLQotLSMgZnVuY19iYXNlbmFtZSBmaWxlCi0tZnVuY19iYXNlbmFtZSAoKQotLXsKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKLS19Ci0tCi0tIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KLS0jIGNhbGw6Ci0tIyAgIGRpcm5hbWU6ICBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwKLS0jICAgICAgICAgICAgIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwgb3RoZXJ3aXNlIHNldCByZXN1bHQKLS0jICAgICAgICAgICAgIHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS0jICAgICAgICAgICAgIHZhbHVlIHJldHVybmVkIGluICIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKLS0jICAgYmFzZW5hbWU6IENvbXB1dGUgZmlsZW5hbWUgb2YgRklMRS4KLS0jICAgICAgICAgICAgIHZhbHVlIHJldHVuZWQgaW4gIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLS0jIEltcGxlbWVudGF0aW9uIG11c3QgYmUga2VwdCBzeW5jaHJvbml6ZWQgd2l0aCBmdW5jX2Rpcm5hbWUKLS0jIGFuZCBmdW5jX2Jhc2VuYW1lLiBGb3IgZWZmaWNpZW5jeSwgd2UgZG8gbm90IGRlbGVnYXRlIHRvCi0tIyB0aG9zZSBmdW5jdGlvbnMgYnV0IGluc3RlYWQgZHVwbGljYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGhlcmUuCi0tZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0tICBlc2FjCi0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCi0tfQotLQotLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCi0tIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KLS0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZwotLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KLS1mdW5jX3N0cmlwbmFtZSAoKQotLXsKLS0gICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKLS0gICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC4KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9Ci0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In0KLS19Ci0tCi0tIyBmdW5jX29wdF9zcGxpdAotLWZ1bmNfb3B0X3NwbGl0ICgpCi0tewotLSAgZnVuY19vcHRfc3BsaXRfb3B0PSR7MSUlPSp9Ci0tICBmdW5jX29wdF9zcGxpdF9hcmc9JHsxIyo9fQotLX0KLS0KLS0jIGZ1bmNfbG8ybyBvYmplY3QKLS1mdW5jX2xvMm8gKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKLS0gICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7Ci0tICBlc2FjCi0tfQotLQotLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCi0tZnVuY194Zm9ybSAoKQotLXsKLS0gIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG8KLS19Ci0tCi0tIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotLWZ1bmNfYXJpdGggKCkKLS17Ci0tICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJFsqXSApKQotLX0KLS0KLS0jIGZ1bmNfbGVuIHN0cmluZwotLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLS1mdW5jX2xlbiAoKQotLXsKLS0gIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfQotLX0KLSsjIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UgKEZVTkNOQU1FLCBSRVBMQUNFTUVOVC1CT0RZKQotKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0rIyBJbiBgJGNmZ2ZpbGUnLCBsb29rIGZvciBmdW5jdGlvbiBGVU5DTkFNRSBkZWxpbWl0ZWQgYnkgYF5GVU5DTkFNRSAoKSQnIGFuZAotKyMgJ159IEZVTkNOQU1FICcsIGFuZCByZXBsYWNlIGl0cyBib2R5IHdpdGggUkVQTEFDRU1FTlQtQk9EWS4KLSttNF9kZWZ1bihbX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRV0sCi0rW2RubCB7Ci0rc2VkIC1lICcvXiQxICgpJC8sL159ICMgJDEgL2NcCi0rJDEgKClcCi0re1wKLSttNF9icGF0c3Vic3RzKFskMl0sIFskXSwgW1xcXSwgW15cKFsJIF1cKV0sIFtcXFwxXSkKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgJDEgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLStdKQotIAotLV9MVF9FT0YKLS0gICAgOzsKLS0gICopICMgQm91cm5lIGNvbXBhdGlibGUgZnVuY3Rpb25zLgotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotIAotLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKLS0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS1mdW5jX2Rpcm5hbWUgKCkKLS17Ci0tICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgotLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGRpcm5hbWUiYAotLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KLS0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKLS0gIGVsc2UKLS0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgotLSAgZmkKLS19Ci0rIyBfTFRfUFJPR19SRVBMQUNFX1NIRUxMRk5TCi0rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0rIyBSZXBsYWNlIGV4aXN0aW5nIHBvcnRhYmxlIGltcGxlbWVudGF0aW9ucyBvZiBzZXZlcmFsIHNoZWxsIGZ1bmN0aW9ucyB3aXRoCi0rIyBlcXVpdmFsZW50IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9ucyB3aGVyZSB0aG9zZSBmZWF0dXJlcyBhcmUgYXZhaWxhYmxlLi4KLSttNF9kZWZ1bihbX0xUX1BST0dfUkVQTEFDRV9TSEVMTEZOU10sCi0rW2lmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KLSsgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfZGlybmFtZV0sIFtkbmwKLSsgICAgY2FzZSAkezF9IGluCi0rICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKLSsgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0rICAgIGVzYWNdKQotKwotKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19iYXNlbmFtZV0sIFtkbmwKLSsgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99Il0pCi0rCi0rICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lXSwgW2RubAotKyAgICBjYXNlICR7MX0gaW4KLSsgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotKyAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLSsgICAgZXNhYwotKyAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXSkKLSAKLS0jIGZ1bmNfYmFzZW5hbWUgZmlsZQotLWZ1bmNfYmFzZW5hbWUgKCkKLS17Ci0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGJhc2VuYW1lImAKLS19Ci0rICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX3N0cmlwbmFtZV0sIFtkbmwKLSsgICAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQotKyAgICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCi0rICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9Ci0rICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9Ci0rICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9XSkKLSAKLS1kbmwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZQotLWRubCBBIHBvcnRhYmxlIHZlcnNpb24gb2YgdGhpcyBmdW5jdGlvbiBpcyBhbHJlYWR5IGRlZmluZWQgaW4gZ2VuZXJhbC5tNHNoCi0tZG5sIHNvIHRoZXJlIGlzIG5vIG5lZWQgZm9yIGl0IGhlcmUuCi0rICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX3NwbGl0X2xvbmdfb3B0XSwgW2RubAotKyAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWU9JHsxJSU9Kn0KLSsgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9JHsxIyo9fV0pCi0gCi0tIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLS0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0tIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0tIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotLSMgZnVuY19zdHJpcF9zdWZmaXggcHJlZml4IG5hbWUKLS1mdW5jX3N0cmlwbmFtZSAoKQotLXsKLS0gIGNhc2UgJHsyfSBpbgotLSAgICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OwotLSAgICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7Ci0tICBlc2FjCi0tfQotKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19zcGxpdF9zaG9ydF9vcHRdLCBbZG5sCi0rICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz0kezEjPz99Ci0rICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9JHsxJSIkZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIn1dKQotIAotLSMgc2VkIHNjcmlwdHM6Ci0tbXlfc2VkX2xvbmdfb3B0PScxcy9eXCgtW1tePV1dKlwpPS4qL1wxLztxJwotLW15X3NlZF9sb25nX2FyZz0nMXMvXi1bW149XV0qPS8vJwotKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19sbzJvXSwgW2RubAotKyAgICBjYXNlICR7MX0gaW4KLSsgICAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OwotKyAgICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OwotKyAgICBlc2FjXSkKLSAKLS0jIGZ1bmNfb3B0X3NwbGl0Ci0tZnVuY19vcHRfc3BsaXQgKCkKLS17Ci0tICBmdW5jX29wdF9zcGxpdF9vcHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19vcHQiYAotLSAgZnVuY19vcHRfc3BsaXRfYXJnPWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKLS19Ci0rICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX3hmb3JtXSwgWyAgICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvXSkKLSAKLS0jIGZ1bmNfbG8ybyBvYmplY3QKLS1mdW5jX2xvMm8gKCkKLS17Ci0tICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbG8ybyJgCi0tfQotKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19hcml0aF0sIFsgICAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICRbKl0gKSldKQotIAotLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCi0tZnVuY194Zm9ybSAoKQotLXsKLS0gIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICdzL1wuW1teLl1dKiQvLmxvLydgCi0tfQotKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19sZW5dLCBbICAgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfV0pCi0rZmkKLSAKLS0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCi0tZnVuY19hcml0aCAoKQotLXsKLS0gIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIkW0BdImAKLS19Ci0raWYgdGVzdCB4IiRsdF9zaGVsbF9hcHBlbmQiID0geHllczsgdGhlbgotKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19hcHBlbmRdLCBbICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJdKQotIAotLSMgZnVuY19sZW4gc3RyaW5nCi0tIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgotLWZ1bmNfbGVuICgpCi0tewotLSAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkWzFdIiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCi0tfQotKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19hcHBlbmRfcXVvdGVkXSwgW2RubAotKyAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IgotK2RubCBtNCBleHBhbnNpb24gdHVybnMgXFxcXCBpbnRvIFxcLCBhbmQgdGhlbiB0aGUgc2hlbGwgZXZhbCB0dXJucyB0aGF0IGludG8gXAotKyAgICBldmFsICIkezF9Kz1cXFxcIFxcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0Il0pCi0gCi0tX0xUX0VPRgotLWVzYWMKLSsgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCB3aGVyZSBwb3NzaWJsZSBieSBkaXJlY3QgdXNlIG9mICcrPScKLSsgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFtbYS16QS1aX11dXHsxLFx9XCkgIiVcMSs9IiVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCi0rICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotK2Vsc2UKLSsgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCBldmVuIHdoZW4gJys9JyBpcyBub3QgYXZhaWxhYmxlCi0rICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbW2EtekEtWl9dXVx7MSxcfVwpICIlXDE9IiRcMSVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCi0rICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotK2ZpCi0gCi0tY2FzZSAkbHRfc2hlbGxfYXBwZW5kIGluCi0tICB5ZXMpCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0raWYgdGVzdCB4IiRfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsIiA9IHgiOiI7IHRoZW4KLSsgIEFDX01TR19XQVJOKFtVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlXSkKLStmaQotK10pCi0gCi0tIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKLS0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KLS1mdW5jX2FwcGVuZCAoKQotLXsKLS0gIGV2YWwgIiRbMV0rPVwkWzJdIgotLX0KLS1fTFRfRU9GCi0rIyBfTFRfUEFUSF9DT05WRVJTSU9OX0ZVTkNUSU9OUwotKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSsjIERldGVybWluZSB3aGljaCBmaWxlIG5hbWUgY29udmVyc2lvbiBmdW5jdGlvbnMgc2hvdWxkIGJlIHVzZWQgYnkKLSsjIGZ1bmNfdG9faG9zdF9maWxlIChhbmQsIGltcGxpY2l0bHksIGJ5IGZ1bmNfdG9faG9zdF9wYXRoKS4gIFRoZXNlIGFyZSBuZWVkZWQKLSsjIGZvciBjZXJ0YWluIGNyb3NzLWNvbXBpbGUgY29uZmlndXJhdGlvbnMgYW5kIG5hdGl2ZSBtaW5ndy4KLSttNF9kZWZ1bihbX0xUX1BBVEhfQ09OVkVSU0lPTl9GVU5DVElPTlNdLAotK1tBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pZG5sCi0rQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0JVSUxEXSlkbmwKLStBQ19NU0dfQ0hFQ0tJTkcoW2hvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdF0pCi0rQUNfQ0FDSEVfVkFMKGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQsCi0rW2Nhc2UgJGhvc3QgaW4KLSsgICotKi1taW5ndyogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsgICAgICAgIDs7Ci0rICAgICAgKi0qLWN5Z3dpbiogKQotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyCi0rICAgICAgICA7OwotKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotICAgICA7OwotLSAgKikKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotLWZ1bmNfYXBwZW5kICgpCi0tewotLSAgZXZhbCAiJFsxXT1cJCRbMV1cJFsyXSIKLS19Ci0tCi0tX0xUX0VPRgotKyAgKi0qLWN5Z3dpbiogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KLSsgICAgICAgIDs7Ci0rICAgICAgKi0qLWN5Z3dpbiogKQotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rICAgICAgICA7OwotKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotICAgICA7OwotLSAgZXNhYwotKyAgKiApICMgdW5oYW5kbGVkIGhvc3RzIChhbmQgIm5vcm1hbCIgbmF0aXZlIGJ1aWxkcykKLSsgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rICAgIDs7Ci0rZXNhYwotK10pCi0rdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAotK0FDX01TR19SRVNVTFQoWyRsdF9jdl90b19ob3N0X2ZpbGVfY21kXSkKLStfTFRfREVDTChbdG9faG9zdF9maWxlX2NtZF0sIFtsdF9jdl90b19ob3N0X2ZpbGVfY21kXSwKLSsgICAgICAgICBbMF0sIFtjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdF0pZG5sCi0rCi0rQUNfTVNHX0NIRUNLSU5HKFtob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0XSkKLStBQ19DQUNIRV9WQUwobHRfY3ZfdG9fdG9vbF9maWxlX2NtZCwKLStbI2Fzc3VtZSBvcmRpbmFyeSBjcm9zcyB0b29scywgb3IgbmF0aXZlIGJ1aWxkLgotK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotK2Nhc2UgJGhvc3QgaW4KLSsgICotKi1taW5ndyogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLStlc2FjCi0gXSkKLSt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCi0rQUNfTVNHX1JFU1VMVChbJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWRdKQotK19MVF9ERUNMKFt0b190b29sX2ZpbGVfY21kXSwgW2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWRdLAotKyAgICAgICAgIFswXSwgW2NvbnZlcnQgJGJ1aWxkIGZpbGVzIHRvIHRvb2xjaGFpbiBmb3JtYXRdKWRubAotK10pIyBfTFRfUEFUSF9DT05WRVJTSU9OX0ZVTkNUSU9OUwotZGlmZiAtLWdpdCBhL2x0bWFpbi5zaCBiL2x0bWFpbi5zaAotaW5kZXggOTUwM2VjODVkNy4uNzBlODU2ZTA2NSAxMDA2NDQKLS0tLSBhL2x0bWFpbi5zaAotKysrIGIvbHRtYWluLnNoCi1AQCAtMSwxMCArMSw5IEBACi0tIyBHZW5lcmF0ZWQgZnJvbSBsdG1haW4ubTRzaC4KLSAKLS0jIGxpYnRvb2wgKEdOVSBsaWJ0b29sIDEuMzEzNCAyMDA5LTExLTI5KSAyLjIuN2EKLSsjIGxpYnRvb2wgKEdOVSBsaWJ0b29sKSAyLjQKLSAjIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQgPGdvcmRAZ251LmFpLm1pdC5lZHU+LCAxOTk2Ci0gCi0gIyBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsCi0tIyAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyMgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAjIFRoaXMgaXMgZnJlZSBzb2Z0d2FyZTsgc2VlIHRoZSBzb3VyY2UgZm9yIGNvcHlpbmcgY29uZGl0aW9ucy4gIFRoZXJlIGlzIE5PCi0gIyB3YXJyYW50eTsgbm90IGV2ZW4gZm9yIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4KLSAKLUBAIC0zOCw3ICszNyw2IEBACi0gIyAgIC1uLCAtLWRyeS1ydW4gICAgICAgICAgICBkaXNwbGF5IGNvbW1hbmRzIHdpdGhvdXQgbW9kaWZ5aW5nIGFueSBmaWxlcwotICMgICAgICAgLS1mZWF0dXJlcyAgICAgICAgICAgZGlzcGxheSBiYXNpYyBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGFuZCBleGl0Ci0gIyAgICAgICAtLW1vZGU9TU9ERSAgICAgICAgICB1c2Ugb3BlcmF0aW9uIG1vZGUgTU9ERQotLSMgICAgICAgLS1uby1maW5pc2ggICAgICAgICAgbGV0IGluc3RhbGwgbW9kZSBhdm9pZCBmaW5pc2ggY29tbWFuZHMKLSAjICAgICAgIC0tcHJlc2VydmUtZHVwLWRlcHMgIGRvbid0IHJlbW92ZSBkdXBsaWNhdGUgZGVwZW5kZW5jeSBsaWJyYXJpZXMKLSAjICAgICAgIC0tcXVpZXQsIC0tc2lsZW50ICAgIGRvbid0IHByaW50IGluZm9ybWF0aW9uYWwgbWVzc2FnZXMKLSAjICAgICAgIC0tbm8tcXVpZXQsIC0tbm8tc2lsZW50Ci1AQCAtNzEsMTcgKzY5LDE5IEBACi0gIyAgICAgICAgIGNvbXBpbGVyOgkJJExUQ0MKLSAjICAgICAgICAgY29tcGlsZXIgZmxhZ3M6CQkkTFRDRkxBR1MKLSAjICAgICAgICAgbGlua2VyOgkJJExEIChnbnU/ICR3aXRoX2dudV9sZCkKLS0jICAgICAgICAgJHByb2duYW1lOgkoR05VIGxpYnRvb2wgMS4zMTM0IDIwMDktMTEtMjkpIDIuMi43YQotKyMgICAgICAgICAkcHJvZ25hbWU6CShHTlUgbGlidG9vbCkgMi40Ci0gIyAgICAgICAgIGF1dG9tYWtlOgkkYXV0b21ha2VfdmVyc2lvbgotICMgICAgICAgICBhdXRvY29uZjoJJGF1dG9jb25mX3ZlcnNpb24KLSAjCi0gIyBSZXBvcnQgYnVncyB0byA8YnVnLWxpYnRvb2xAZ251Lm9yZz4uCi0rIyBHTlUgbGlidG9vbCBob21lIHBhZ2U6IDxodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGlidG9vbC8+LgotKyMgR2VuZXJhbCBoZWxwIHVzaW5nIEdOVSBzb2Z0d2FyZTogPGh0dHA6Ly93d3cuZ251Lm9yZy9nZXRoZWxwLz4uCi0gCi0gUFJPR1JBTT1saWJ0b29sCi0gUEFDS0FHRT1saWJ0b29sCi0tVkVSU0lPTj0yLjIuN2EKLS1USU1FU1RBTVA9IiAxLjMxMzQgMjAwOS0xMS0yOSIKLS1wYWNrYWdlX3JldmlzaW9uPTEuMzEzNAotK1ZFUlNJT049Mi40Ci0rVElNRVNUQU1QPSIiCi0rcGFja2FnZV9yZXZpc2lvbj0xLjMyOTMKLSAKLSAjIEJlIEJvdXJuZSBjb21wYXRpYmxlCi0gaWYgdGVzdCAtbiAiJHtaU0hfVkVSU0lPTitzZXR9IiAmJiAoZW11bGF0ZSBzaCkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi1AQCAtMTA2LDkgKzEwNiw2IEBAIF9MVEVDSE9fRU9GJwotIH0KLSAKLSAjIE5MUyBudWlzYW5jZXM6IFdlIHNhdmUgdGhlIG9sZCB2YWx1ZXMgdG8gcmVzdG9yZSBkdXJpbmcgZXhlY3V0ZSBtb2RlLgotLSMgT25seSBzZXQgTEFORyBhbmQgTENfQUxMIHRvIEMgaWYgYWxyZWFkeSBzZXQuCi0tIyBUaGVzZSBtdXN0IG5vdCBiZSBzZXQgdW5jb25kaXRpb25hbGx5IGJlY2F1c2Ugbm90IGFsbCBzeXN0ZW1zIHVuZGVyc3RhbmQKLS0jIGUuZy4gTEFORz1DIChub3RhYmx5IFNDTykuCi0gbHRfdXNlcl9sb2NhbGU9Ci0gbHRfc2FmZV9sb2NhbGU9Ci0gZm9yIGx0X3ZhciBpbiBMQU5HIExBTkdVQUdFIExDX0FMTCBMQ19DVFlQRSBMQ19DT0xMQVRFIExDX01FU1NBR0VTCi1AQCAtMTIxLDE1ICsxMTgsMTMgQEAgZG8KLSAJICBsdF9zYWZlX2xvY2FsZT1cIiRsdF92YXI9QzsgXCRsdF9zYWZlX2xvY2FsZVwiCi0gCWZpIgotIGRvbmUKLStMQ19BTEw9QwotK0xBTkdVQUdFPUMKLStleHBvcnQgTEFOR1VBR0UgTENfQUxMCi0gCi0gJGx0X3Vuc2V0IENEUEFUSAotIAotIAotLQotLQotLQotLQotLQotICMgV29yayBhcm91bmQgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBpc3N1ZSBvbiBJUklYIDYuNS4gT24gSVJJWCA2LjQrLCBzaAotICMgaXMga3NoIGJ1dCB3aGVuIHRoZSBzaGVsbCBpcyBpbnZva2VkIGFzICJzaCIgYW5kIHRoZSBjdXJyZW50IHZhbHVlIG9mCi0gIyB0aGUgX1hQRyBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBub3QgZXF1YWwgdG8gMSAob25lKSwgdGhlIHNwZWNpYWwKLUBAIC0xNDAsNyArMTM1LDcgQEAgcHJvZ3BhdGg9IiQwIgotIAotIAotIDogJHtDUD0iY3AgLWYifQotLTogJHtFQ0hPPSRhc19lY2hvfQotK3Rlc3QgIiR7RUNITytzZXR9IiA9IHNldCB8fCBFQ0hPPSR7YXNfZWNoby0ncHJpbnRmICVzXG4nfQotIDogJHtFR1JFUD0iL2Jpbi9ncmVwIC1FIn0KLSA6ICR7RkdSRVA9Ii9iaW4vZ3JlcCAtRiJ9Ci0gOiAke0dSRVA9Ii9iaW4vZ3JlcCJ9Ci1AQCAtMTQ5LDcgKzE0NCw3IEBAIHByb2dwYXRoPSIkMCIKLSA6ICR7TUtESVI9Im1rZGlyIn0KLSA6ICR7TVY9Im12IC1mIn0KLSA6ICR7Uk09InJtIC1mIn0KLS06ICR7U0VEPSIvbW91bnQvZW5kb3Ivd2lsZGVuaHUvbG9jYWwteDg2XzY0L2Jpbi9zZWQifQotKzogJHtTRUQ9Ii9iaW4vc2VkIn0KLSA6ICR7U0hFTEw9IiR7Q09ORklHX1NIRUxMLS9iaW4vc2h9In0KLSA6ICR7WHNlZD0iJFNFRCAtZSAxcy9eWC8vIn0KLSAKLUBAIC0xNjksNiArMTY0LDI3IEBAIElGUz0iIAkkbHRfbmwiCi0gZGlybmFtZT0icywvW14vXSokLCwiCi0gYmFzZW5hbWU9InMsXi4qLywsIgotIAotKyMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotKyMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKLSsjIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLStmdW5jX2Rpcm5hbWUgKCkKLSt7Ci0rICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRkaXJuYW1lImAKLSsgICAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KLSsgICAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgotKyAgICBlbHNlCi0rICAgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgotKyAgICBmaQotK30gIyBmdW5jX2Rpcm5hbWUgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCi0rCi0rCi0rIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLStmdW5jX2Jhc2VuYW1lICgpCi0rewotKyAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGJhc2VuYW1lImAKLSt9ICMgZnVuY19iYXNlbmFtZSBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KLSsKLSsKLSAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0gIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgotICMgY2FsbDoKLUBAIC0xODMsMTcgKzE5OSwzMSBAQCBiYXNlbmFtZT0icyxeLiovLCwiCi0gIyB0aG9zZSBmdW5jdGlvbnMgYnV0IGluc3RlYWQgZHVwbGljYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGhlcmUuCi0gZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQotIHsKLS0gICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCi0tICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEIC1lICIkZGlybmFtZSJgCi0tICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgotLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgotLSAgZWxzZQotLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCi0tICBmaQotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgLWUgIiRiYXNlbmFtZSJgCi0tfQotKyAgICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgotKyAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEIC1lICIkZGlybmFtZSJgCi0rICAgIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCi0rICAgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKLSsgICAgZWxzZQotKyAgICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKLSsgICAgZmkKLSsgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgLWUgIiRiYXNlbmFtZSJgCi0rfSAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCi0rCi0rCi0rIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLSsjIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotKyMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0rIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0rIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotKyMgZnVuY19zdHJpcF9zdWZmaXggcHJlZml4IG5hbWUKLStmdW5jX3N0cmlwbmFtZSAoKQotK3sKLSsgICAgY2FzZSAkezJ9IGluCi0rICAgICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKLSsgICAgICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7Ci0rICAgIGVzYWMKLSt9ICMgZnVuY19zdHJpcG5hbWUgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCi0gCi0tIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUuCi0gCi0gIyBUaGVzZSBTRUQgc2NyaXB0cyBwcmVzdXBwb3NlIGFuIGFic29sdXRlIHBhdGggd2l0aCBhIHRyYWlsaW5nIHNsYXNoLgotIHBhdGhjYXI9J3MsXi9cKFteL10qXCkuKiQsXDEsJwotQEAgLTM3Niw2ICs0MDYsMTUgQEAgc2VkX3F1b3RlX3N1YnN0PSdzL1woW2AiJFxcXVwpL1xcXDEvZycKLSAjIFNhbWUgYXMgYWJvdmUsIGJ1dCBkbyBub3QgcXVvdGUgdmFyaWFibGUgcmVmZXJlbmNlcy4KLSBkb3VibGVfcXVvdGVfc3Vic3Q9J3MvXChbImBcXF1cKS9cXFwxL2cnCi0gCi0rIyBTZWQgc3Vic3RpdHV0aW9uIHRoYXQgdHVybnMgYSBzdHJpbmcgaW50byBhIHJlZ2V4IG1hdGNoaW5nIGZvciB0aGUKLSsjIHN0cmluZyBsaXRlcmFsbHkuCi0rc2VkX21ha2VfbGl0ZXJhbF9yZWdleD0ncyxbXS5bXiRcXCpcL10sXFwmLGcnCi0rCi0rIyBTZWQgc3Vic3RpdHV0aW9uIHRoYXQgY29udmVydHMgYSB3MzIgZmlsZSBuYW1lIG9yIHBhdGgKLSsjIHdoaWNoIGNvbnRhaW5zIGZvcndhcmQgc2xhc2hlcywgaW50byBvbmUgdGhhdCBjb250YWlucwotKyMgKGVzY2FwZWQpIGJhY2tzbGFzaGVzLiAgQSB2ZXJ5IG5haXZlIGltcGxlbWVudGF0aW9uLgotK2x0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnk9J3N8XFxcXCp8XFx8ZztzfC98XFx8ZztzfFxcfFxcXFx8ZycKLSsKLSAjIFJlLWBcJyBwYXJhbWV0ZXIgZXhwYW5zaW9ucyBpbiBvdXRwdXQgb2YgZG91YmxlX3F1b3RlX3N1YnN0IHRoYXQgd2VyZQotICMgYFwnLWVkIGluIGlucHV0IHRvIHRoZSBzYW1lLiAgSWYgYW4gb2RkIG51bWJlciBvZiBgXCcgcHJlY2VkZWQgYSAnJCcKLSAjIGluIGlucHV0IHRvIGRvdWJsZV9xdW90ZV9zdWJzdCwgdGhhdCAnJCcgd2FzIHByb3RlY3RlZCBmcm9tIGV4cGFuc2lvbi4KLUBAIC00MDQsNyArNDQzLDcgQEAgb3B0X3dhcm5pbmc9OgotICMgbmFtZSBpZiBpdCBoYXMgYmVlbiBzZXQgeWV0LgotIGZ1bmNfZWNobyAoKQotIHsKLS0gICAgJEVDSE8gIiRwcm9nbmFtZSR7bW9kZSs6IH0kbW9kZTogJCoiCi0rICAgICRFQ0hPICIkcHJvZ25hbWU6ICR7b3B0X21vZGUrJG9wdF9tb2RlOiB9JCoiCi0gfQotIAotICMgZnVuY192ZXJib3NlIGFyZy4uLgotQEAgLTQzMCwxNCArNDY5LDE0IEBAIGZ1bmNfZWNob19hbGwgKCkKLSAjIEVjaG8gcHJvZ3JhbSBuYW1lIHByZWZpeGVkIG1lc3NhZ2UgdG8gc3RhbmRhcmQgZXJyb3IuCi0gZnVuY19lcnJvciAoKQotIHsKLS0gICAgJEVDSE8gIiRwcm9nbmFtZSR7bW9kZSs6IH0kbW9kZTogIiR7MSsiJEAifSAxPiYyCi0rICAgICRFQ0hPICIkcHJvZ25hbWU6ICR7b3B0X21vZGUrJG9wdF9tb2RlOiB9IiR7MSsiJEAifSAxPiYyCi0gfQotIAotICMgZnVuY193YXJuaW5nIGFyZy4uLgotICMgRWNobyBwcm9ncmFtIG5hbWUgcHJlZml4ZWQgd2FybmluZyBtZXNzYWdlIHRvIHN0YW5kYXJkIGVycm9yLgotIGZ1bmNfd2FybmluZyAoKQotIHsKLS0gICAgJG9wdF93YXJuaW5nICYmICRFQ0hPICIkcHJvZ25hbWUke21vZGUrOiB9JG1vZGU6IHdhcm5pbmc6ICIkezErIiRAIn0gMT4mMgotKyAgICAkb3B0X3dhcm5pbmcgJiYgJEVDSE8gIiRwcm9nbmFtZTogJHtvcHRfbW9kZSskb3B0X21vZGU6IH13YXJuaW5nOiAiJHsxKyIkQCJ9IDE+JjIKLSAKLSAgICAgIyBiYXNoIGJ1ZyBhZ2FpbjoKLSAgICAgOgotQEAgLTY1NiwxOSArNjk1LDM1IEBAIGZ1bmNfc2hvd19ldmFsX2xvY2FsZSAoKQotICAgICBmaQotIH0KLSAKLS0KLS0KLSsjIGZ1bmNfdHJfc2gKLSsjIFR1cm4gJDEgaW50byBhIHN0cmluZyBzdWl0YWJsZSBmb3IgYSBzaGVsbCB2YXJpYWJsZSBuYW1lLgotKyMgUmVzdWx0IGlzIHN0b3JlZCBpbiAkZnVuY190cl9zaF9yZXN1bHQuICBBbGwgY2hhcmFjdGVycwotKyMgbm90IGluIHRoZSBzZXQgYS16QS1aMC05XyBhcmUgcmVwbGFjZWQgd2l0aCAnXycuIEZ1cnRoZXIsCi0rIyBpZiAkMSBiZWdpbnMgd2l0aCBhIGRpZ2l0LCBhICdfJyBpcyBwcmVwZW5kZWQgYXMgd2VsbC4KLStmdW5jX3RyX3NoICgpCi0rewotKyAgY2FzZSAkMSBpbgotKyAgWzAtOV0qIHwgKlshYS16QS1aMC05X10qKQotKyAgICBmdW5jX3RyX3NoX3Jlc3VsdD1gJEVDSE8gIiQxIiB8ICRTRUQgJ3MvXlwoWzAtOV1cKS9fXDEvOyBzL1teYS16QS1aMC05X10vXy9nJ2AKLSsgICAgOzsKLSsgICogKQotKyAgICBmdW5jX3RyX3NoX3Jlc3VsdD0kMQotKyAgICA7OwotKyAgZXNhYwotK30KLSAKLSAKLSAjIGZ1bmNfdmVyc2lvbgotICMgRWNobyB2ZXJzaW9uIG1lc3NhZ2UgdG8gc3RhbmRhcmQgb3V0cHV0IGFuZCBleGl0LgotIGZ1bmNfdmVyc2lvbiAoKQotIHsKLSsgICAgJG9wdF9kZWJ1ZwotKwotICAgICAkU0VEIC1uICcvKEMpLyFiIGdvCi0gCTptb3JlCi0gCS9cLi8hewotIAkgIE4KLS0JICBzL1xuIyAvLwotKwkgIHMvXG4jIC8gLwotIAkgIGIgbW9yZQotIAl9Ci0gCTpnbwotQEAgLTY4NSw3ICs3NDAsOSBAQCBmdW5jX3ZlcnNpb24gKCkKLSAjIEVjaG8gc2hvcnQgaGVscCBtZXNzYWdlIHRvIHN0YW5kYXJkIG91dHB1dCBhbmQgZXhpdC4KLSBmdW5jX3VzYWdlICgpCi0gewotLSAgICAkU0VEIC1uICcvXiMgVXNhZ2U6LywvXiMgICotaC8gewotKyAgICAkb3B0X2RlYnVnCi0rCi0rICAgICRTRUQgLW4gJy9eIyBVc2FnZTovLC9eIyAgKi4qLS1oZWxwLyB7Ci0gICAgICAgICBzL14jIC8vCi0gCXMvXiMgKiQvLwotIAlzL1wkcHJvZ25hbWUvJyRwcm9nbmFtZScvCi1AQCAtNzAxLDcgKzc1OCwxMCBAQCBmdW5jX3VzYWdlICgpCi0gIyB1bmxlc3MgJ25vZXhpdCcgaXMgcGFzc2VkIGFzIGFyZ3VtZW50LgotIGZ1bmNfaGVscCAoKQotIHsKLSsgICAgJG9wdF9kZWJ1ZwotKwotICAgICAkU0VEIC1uICcvXiMgVXNhZ2U6LywvIyBSZXBvcnQgYnVncyB0by8gewotKwk6cHJpbnQKLSAgICAgICAgIHMvXiMgLy8KLSAJcy9eIyAqJC8vCi0gCXMqXCRwcm9nbmFtZSonJHByb2duYW1lJyoKLUBAIC03MTQsNyArNzc0LDExIEBAIGZ1bmNfaGVscCAoKQotIAlzL1wkYXV0b21ha2VfdmVyc2lvbi8nImAoYXV0b21ha2UgLS12ZXJzaW9uKSAyPi9kZXYvbnVsbCB8JFNFRCAxcWAiJy8KLSAJcy9cJGF1dG9jb25mX3ZlcnNpb24vJyJgKGF1dG9jb25mIC0tdmVyc2lvbikgMj4vZGV2L251bGwgfCRTRUQgMXFgIicvCi0gCXAKLS0gICAgIH0nIDwgIiRwcm9ncGF0aCIKLSsJZAotKyAgICAgfQotKyAgICAgL14jIC4qIGhvbWUgcGFnZTovYiBwcmludAotKyAgICAgL14jIEdlbmVyYWwgaGVscCB1c2luZy9iIHByaW50Ci0rICAgICAnIDwgIiRwcm9ncGF0aCIKLSAgICAgcmV0PSQ/Ci0gICAgIGlmIHRlc3QgLXogIiQxIjsgdGhlbgotICAgICAgIGV4aXQgJHJldAotQEAgLTcyNiwxMiArNzkwLDM5IEBAIGZ1bmNfaGVscCAoKQotICMgZXhpdF9jbWQuCi0gZnVuY19taXNzaW5nX2FyZyAoKQotIHsKLS0gICAgZnVuY19lcnJvciAibWlzc2luZyBhcmd1bWVudCBmb3IgJDEiCi0rICAgICRvcHRfZGVidWcKLSsKLSsgICAgZnVuY19lcnJvciAibWlzc2luZyBhcmd1bWVudCBmb3IgJDEuIgotICAgICBleGl0X2NtZD1leGl0Ci0gfQotIAotLWV4aXRfY21kPToKLSAKLSsjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IHNob3J0b3B0Ci0rIyBTZXQgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZSBhbmQgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIHNoZWxsCi0rIyB2YXJpYWJsZXMgYWZ0ZXIgc3BsaXR0aW5nIFNIT1JUT1BUIGFmdGVyIHRoZSAybmQgY2hhcmFjdGVyLgotK2Z1bmNfc3BsaXRfc2hvcnRfb3B0ICgpCi0rewotKyAgICBteV9zZWRfc2hvcnRfb3B0PScxcy9eXCguLlwpLiokL1wxLztxJwotKyAgICBteV9zZWRfc2hvcnRfcmVzdD0nMXMvXi4uXCguKlwpJC9cMS87cScKLSsKLSsgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT1gJEVDSE8gIiQxIiB8ICRTRUQgIiRteV9zZWRfc2hvcnRfb3B0ImAKLSsgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnPWAkRUNITyAiJDEiIHwgJFNFRCAiJG15X3NlZF9zaG9ydF9yZXN0ImAKLSt9ICMgZnVuY19zcGxpdF9zaG9ydF9vcHQgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCi0rCi0rCi0rIyBmdW5jX3NwbGl0X2xvbmdfb3B0IGxvbmdvcHQKLSsjIFNldCBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWUgYW5kIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnIHNoZWxsCi0rIyB2YXJpYWJsZXMgYWZ0ZXIgc3BsaXR0aW5nIExPTkdPUFQgYXQgdGhlIGA9JyBzaWduLgotK2Z1bmNfc3BsaXRfbG9uZ19vcHQgKCkKLSt7Ci0rICAgIG15X3NlZF9sb25nX29wdD0nMXMvXlwoLS1bXj1dKlwpPS4qL1wxLztxJwotKyAgICBteV9zZWRfbG9uZ19hcmc9JzFzL14tLVtePV0qPS8vJwotKwotKyAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWU9YCRFQ0hPICIkMSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfb3B0ImAKLSsgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9YCRFQ0hPICIkMSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKLSt9ICMgZnVuY19zcGxpdF9sb25nX29wdCBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KLSsKLStleGl0X2NtZD06Ci0gCi0gCi0gCi1AQCAtNzQxLDI2ICs4MzIsNjQgQEAgbWFnaWM9IiUlJU1BR0lDIHZhcmlhYmxlJSUlIgotIG1hZ2ljX2V4ZT0iJSUlTUFHSUMgRVhFIHZhcmlhYmxlJSUlIgotIAotICMgR2xvYmFsIHZhcmlhYmxlcy4KLS0jICRtb2RlIGlzIHVuc2V0Ci0gbm9ub3B0PQotLWV4ZWN1dGVfZGxmaWxlcz0KLSBwcmVzZXJ2ZV9hcmdzPQotIGxvMm89InMvXFwubG9cJC8uJHtvYmpleHR9LyIKLSBvMmxvPSJzL1xcLiR7b2JqZXh0fVwkLy5sby8iCi0gZXh0cmFjdGVkX2FyY2hpdmVzPQotIGV4dHJhY3RlZF9zZXJpYWw9MAotIAotLW9wdF9kcnlfcnVuPWZhbHNlCi0tb3B0X2ZpbmlzaD06Ci0tb3B0X2R1cGxpY2F0ZV9kZXBzPWZhbHNlCi0tb3B0X3NpbGVudD1mYWxzZQotLW9wdF9kZWJ1Zz06Ci0tCi0gIyBJZiB0aGlzIHZhcmlhYmxlIGlzIHNldCBpbiBhbnkgb2YgdGhlIGFjdGlvbnMsIHRoZSBjb21tYW5kIGluIGl0Ci0gIyB3aWxsIGJlIGV4ZWNlZCBhdCB0aGUgZW5kLiAgVGhpcyBwcmV2ZW50cyBoZXJlLWRvY3VtZW50cyBmcm9tIGJlaW5nCi0gIyBsZWZ0IG92ZXIgYnkgc2hlbGxzLgotIGV4ZWNfY21kPQotIAotKyMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCi0rIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCi0rZnVuY19hcHBlbmQgKCkKLSt7Ci0rICAgIGV2YWwgIiR7MX09XCQkezF9XCR7Mn0iCi0rfSAjIGZ1bmNfYXBwZW5kIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgotKwotKyMgZnVuY19hcHBlbmRfcXVvdGVkIHZhciB2YWx1ZQotKyMgUXVvdGUgVkFMVUUgYW5kIGFwcGVuZCB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUiwgc2VwYXJhdGVkCi0rIyBieSBhIHNwYWNlLgotK2Z1bmNfYXBwZW5kX3F1b3RlZCAoKQotK3sKLSsgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSIKLSsgICAgZXZhbCAiJHsxfT1cJCR7MX1cXCBcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotK30gIyBmdW5jX2FwcGVuZF9xdW90ZWQgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCi0rCi0rCi0rIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotK2Z1bmNfYXJpdGggKCkKLSt7Ci0rICAgIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIke0B9ImAKLSt9ICMgZnVuY19hcml0aCBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KLSsKLSsKLSsjIGZ1bmNfbGVuIHN0cmluZwotKyMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLStmdW5jX2xlbiAoKQotK3sKLSsgICAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkezF9IiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCi0rfSAjIGZ1bmNfbGVuIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgotKwotKwotKyMgZnVuY19sbzJvIG9iamVjdAotK2Z1bmNfbG8ybyAoKQotK3sKLSsgICAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGxvMm8iYAotK30gIyBmdW5jX2xvMm8gbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCi0rCi0rCi0rIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLStmdW5jX3hmb3JtICgpCi0rewotKyAgICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAncy9cLlteLl0qJC8ubG8vJ2AKLSt9ICMgZnVuY194Zm9ybSBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KLSsKLSsKLSAjIGZ1bmNfZmF0YWxfY29uZmlndXJhdGlvbiBhcmcuLi4KLSAjIEVjaG8gcHJvZ3JhbSBuYW1lIHByZWZpeGVkIG1lc3NhZ2UgdG8gc3RhbmRhcmQgZXJyb3IsIGZvbGxvd2VkIGJ5Ci0gIyBhIGNvbmZpZ3VyYXRpb24gZmFpbHVyZSBoaW50LCBhbmQgZXhpdC4KLUBAIC04NTAsMTMwICs5NzksMjA0IEBAIGZ1bmNfZW5hYmxlX3RhZyAoKQotICAgZXNhYwotIH0KLSAKLS0jIFBhcnNlIG9wdGlvbnMgb25jZSwgdGhvcm91Z2hseS4gIFRoaXMgY29tZXMgYXMgc29vbiBhcyBwb3NzaWJsZSBpbgotLSMgdGhlIHNjcmlwdCB0byBtYWtlIHRoaW5ncyBsaWtlIGBsaWJ0b29sIC0tdmVyc2lvbicgaGFwcGVuIHF1aWNrbHkuCi0rIyBmdW5jX2NoZWNrX3ZlcnNpb25fbWF0Y2gKLSsjIEVuc3VyZSB0aGF0IHdlIGFyZSB1c2luZyBtNCBtYWNyb3MsIGFuZCBsaWJ0b29sIHNjcmlwdCBmcm9tIHRoZSBzYW1lCi0rIyByZWxlYXNlIG9mIGxpYnRvb2wuCi0rZnVuY19jaGVja192ZXJzaW9uX21hdGNoICgpCi0gewotKyAgaWYgdGVzdCAiJHBhY2thZ2VfcmV2aXNpb24iICE9ICIkbWFjcm9fcmV2aXNpb24iOyB0aGVuCi0rICAgIGlmIHRlc3QgIiRWRVJTSU9OIiAhPSAiJG1hY3JvX3ZlcnNpb24iOyB0aGVuCi0rICAgICAgaWYgdGVzdCAteiAiJG1hY3JvX3ZlcnNpb24iOyB0aGVuCi0rICAgICAgICBjYXQgPiYyIDw8X0xUX0VPRgotKyRwcm9nbmFtZTogVmVyc2lvbiBtaXNtYXRjaCBlcnJvci4gIFRoaXMgaXMgJFBBQ0tBR0UgJFZFUlNJT04sIGJ1dCB0aGUKLSskcHJvZ25hbWU6IGRlZmluaXRpb24gb2YgdGhpcyBMVF9JTklUIGNvbWVzIGZyb20gYW4gb2xkZXIgcmVsZWFzZS4KLSskcHJvZ25hbWU6IFlvdSBzaG91bGQgcmVjcmVhdGUgYWNsb2NhbC5tNCB3aXRoIG1hY3JvcyBmcm9tICRQQUNLQUdFICRWRVJTSU9OCi0rJHByb2duYW1lOiBhbmQgcnVuIGF1dG9jb25mIGFnYWluLgotK19MVF9FT0YKLSsgICAgICBlbHNlCi0rICAgICAgICBjYXQgPiYyIDw8X0xUX0VPRgotKyRwcm9nbmFtZTogVmVyc2lvbiBtaXNtYXRjaCBlcnJvci4gIFRoaXMgaXMgJFBBQ0tBR0UgJFZFUlNJT04sIGJ1dCB0aGUKLSskcHJvZ25hbWU6IGRlZmluaXRpb24gb2YgdGhpcyBMVF9JTklUIGNvbWVzIGZyb20gJFBBQ0tBR0UgJG1hY3JvX3ZlcnNpb24uCi0rJHByb2duYW1lOiBZb3Ugc2hvdWxkIHJlY3JlYXRlIGFjbG9jYWwubTQgd2l0aCBtYWNyb3MgZnJvbSAkUEFDS0FHRSAkVkVSU0lPTgotKyRwcm9nbmFtZTogYW5kIHJ1biBhdXRvY29uZiBhZ2Fpbi4KLStfTFRfRU9GCi0rICAgICAgZmkKLSsgICAgZWxzZQotKyAgICAgIGNhdCA+JjIgPDxfTFRfRU9GCi0rJHByb2duYW1lOiBWZXJzaW9uIG1pc21hdGNoIGVycm9yLiAgVGhpcyBpcyAkUEFDS0FHRSAkVkVSU0lPTiwgcmV2aXNpb24gJHBhY2thZ2VfcmV2aXNpb24sCi0rJHByb2duYW1lOiBidXQgdGhlIGRlZmluaXRpb24gb2YgdGhpcyBMVF9JTklUIGNvbWVzIGZyb20gcmV2aXNpb24gJG1hY3JvX3JldmlzaW9uLgotKyRwcm9nbmFtZTogWW91IHNob3VsZCByZWNyZWF0ZSBhY2xvY2FsLm00IHdpdGggbWFjcm9zIGZyb20gcmV2aXNpb24gJHBhY2thZ2VfcmV2aXNpb24KLSskcHJvZ25hbWU6IG9mICRQQUNLQUdFICRWRVJTSU9OIGFuZCBydW4gYXV0b2NvbmYgYWdhaW4uCi0rX0xUX0VPRgotKyAgICBmaQotIAotLSAgIyBTaG9ydGhhbmQgZm9yIC0tbW9kZT1mb28sIG9ubHkgdmFsaWQgYXMgdGhlIGZpcnN0IGFyZ3VtZW50Ci0tICBjYXNlICQxIGluCi0tICBjbGVhbnxjbGVhfGNsZXxjbCkKLS0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgY2xlYW4gJHsxKyIkQCJ9OyBzaGlmdAotLSAgICA7OwotLSAgY29tcGlsZXxjb21waWx8Y29tcGl8Y29tcHxjb218Y298YykKLS0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgY29tcGlsZSAkezErIiRAIn07IHNoaWZ0Ci0tICAgIDs7Ci0tICBleGVjdXRlfGV4ZWN1dHxleGVjdXxleGVjfGV4ZXxleHxlKQotLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBleGVjdXRlICR7MSsiJEAifTsgc2hpZnQKLS0gICAgOzsKLS0gIGZpbmlzaHxmaW5pc3xmaW5pfGZpbnxmaXxmKQotLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBmaW5pc2ggJHsxKyIkQCJ9OyBzaGlmdAotLSAgICA7OwotLSAgaW5zdGFsbHxpbnN0YWx8aW5zdGF8aW5zdHxpbnN8aW58aSkKLS0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgaW5zdGFsbCAkezErIiRAIn07IHNoaWZ0Ci0tICAgIDs7Ci0tICBsaW5rfGxpbnxsaXxsKQotLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBsaW5rICR7MSsiJEAifTsgc2hpZnQKLS0gICAgOzsKLS0gIHVuaW5zdGFsbHx1bmluc3RhbHx1bmluc3RhfHVuaW5zdHx1bmluc3x1bmlufHVuaXx1bnx1KQotLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSB1bmluc3RhbGwgJHsxKyIkQCJ9OyBzaGlmdAotLSAgICA7OwotLSAgZXNhYwotKyAgICBleGl0ICRFWElUX01JU01BVENICi0rICBmaQotK30KLSsKLSsKLSsjIFNob3J0aGFuZCBmb3IgLS1tb2RlPWZvbywgb25seSB2YWxpZCBhcyB0aGUgZmlyc3QgYXJndW1lbnQKLStjYXNlICQxIGluCi0rY2xlYW58Y2xlYXxjbGV8Y2wpCi0rICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBjbGVhbiAkezErIiRAIn07IHNoaWZ0Ci0rICA7OwotK2NvbXBpbGV8Y29tcGlsfGNvbXBpfGNvbXB8Y29tfGNvfGMpCi0rICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBjb21waWxlICR7MSsiJEAifTsgc2hpZnQKLSsgIDs7Ci0rZXhlY3V0ZXxleGVjdXR8ZXhlY3V8ZXhlY3xleGV8ZXh8ZSkKLSsgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGV4ZWN1dGUgJHsxKyIkQCJ9OyBzaGlmdAotKyAgOzsKLStmaW5pc2h8ZmluaXN8ZmluaXxmaW58Zml8ZikKLSsgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGZpbmlzaCAkezErIiRAIn07IHNoaWZ0Ci0rICA7OwotK2luc3RhbGx8aW5zdGFsfGluc3RhfGluc3R8aW5zfGlufGkpCi0rICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBpbnN0YWxsICR7MSsiJEAifTsgc2hpZnQKLSsgIDs7Ci0rbGlua3xsaW58bGl8bCkKLSsgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGxpbmsgJHsxKyIkQCJ9OyBzaGlmdAotKyAgOzsKLSt1bmluc3RhbGx8dW5pbnN0YWx8dW5pbnN0YXx1bmluc3R8dW5pbnN8dW5pbnx1bml8dW58dSkKLSsgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIHVuaW5zdGFsbCAkezErIiRAIn07IHNoaWZ0Ci0rICA7OwotK2VzYWMKLSAKLS0gICMgUGFyc2Ugbm9uLW1vZGUgc3BlY2lmaWMgYXJndW1lbnRzOgotLSAgd2hpbGUgdGVzdCAiJCMiIC1ndCAwOyBkbwotKwotKwotKyMgT3B0aW9uIGRlZmF1bHRzOgotK29wdF9kZWJ1Zz06Ci0rb3B0X2RyeV9ydW49ZmFsc2UKLStvcHRfY29uZmlnPWZhbHNlCi0rb3B0X3ByZXNlcnZlX2R1cF9kZXBzPWZhbHNlCi0rb3B0X2ZlYXR1cmVzPWZhbHNlCi0rb3B0X2ZpbmlzaD1mYWxzZQotK29wdF9oZWxwPWZhbHNlCi0rb3B0X2hlbHBfYWxsPWZhbHNlCi0rb3B0X3NpbGVudD06Ci0rb3B0X3ZlcmJvc2U9OgotK29wdF9zaWxlbnQ9ZmFsc2UKLStvcHRfdmVyYm9zZT1mYWxzZQotKwotKwotKyMgUGFyc2Ugb3B0aW9ucyBvbmNlLCB0aG9yb3VnaGx5LiAgVGhpcyBjb21lcyBhcyBzb29uIGFzIHBvc3NpYmxlIGluIHRoZQotKyMgc2NyaXB0IHRvIG1ha2UgdGhpbmdzIGxpa2UgYC0tdmVyc2lvbicgaGFwcGVuIGFzIHF1aWNrbHkgYXMgd2UgY2FuLgotK3sKLSsgICMgdGhpcyBqdXN0IGVhc2VzIGV4aXQgaGFuZGxpbmcKLSsgIHdoaWxlIHRlc3QgJCMgLWd0IDA7IGRvCi0gICAgIG9wdD0iJDEiCi0gICAgIHNoaWZ0Ci0tCi0gICAgIGNhc2UgJG9wdCBpbgotLSAgICAgIC0tY29uZmlnKQkJZnVuY19jb25maWcJCQkJCTs7Ci0tCi0tICAgICAgLS1kZWJ1ZykJCXByZXNlcnZlX2FyZ3M9IiRwcmVzZXJ2ZV9hcmdzICRvcHQiCi0rICAgICAgLS1kZWJ1Z3wteCkJb3B0X2RlYnVnPSdzZXQgLXgnCi0gCQkJZnVuY19lY2hvICJlbmFibGluZyBzaGVsbCB0cmFjZSBtb2RlIgotLQkJCW9wdF9kZWJ1Zz0nc2V0IC14JwotIAkJCSRvcHRfZGVidWcKLSAJCQk7OwotLQotLSAgICAgIC1kbG9wZW4pCQl0ZXN0ICIkIyIgLWVxIDAgJiYgZnVuY19taXNzaW5nX2FyZyAiJG9wdCIgJiYgYnJlYWsKLS0JCQlleGVjdXRlX2RsZmlsZXM9IiRleGVjdXRlX2RsZmlsZXMgJDEiCi0tCQkJc2hpZnQKLSsgICAgICAtLWRyeS1ydW58LS1kcnlydW58LW4pCi0rCQkJb3B0X2RyeV9ydW49OgotIAkJCTs7Ci0tCi0tICAgICAgLS1kcnktcnVuIHwgLW4pCW9wdF9kcnlfcnVuPToJCQkJCTs7Ci0tICAgICAgLS1mZWF0dXJlcykgICAgICAgZnVuY19mZWF0dXJlcwkJCQkJOzsKLS0gICAgICAtLWZpbmlzaCkJCW1vZGU9ImZpbmlzaCIJCQkJCTs7Ci0tICAgICAgLS1uby1maW5pc2gpCW9wdF9maW5pc2g9ZmFsc2UJCQkJOzsKLS0KLS0gICAgICAtLW1vZGUpCQl0ZXN0ICIkIyIgLWVxIDAgJiYgZnVuY19taXNzaW5nX2FyZyAiJG9wdCIgJiYgYnJlYWsKLS0JCQljYXNlICQxIGluCi0tCQkJICAjIFZhbGlkIG1vZGUgYXJndW1lbnRzOgotLQkJCSAgY2xlYW4pCTs7Ci0tCQkJICBjb21waWxlKQk7OwotLQkJCSAgZXhlY3V0ZSkJOzsKLS0JCQkgIGZpbmlzaCkJOzsKLS0JCQkgIGluc3RhbGwpCTs7Ci0tCQkJICBsaW5rKQkJOzsKLS0JCQkgIHJlbGluaykJOzsKLS0JCQkgIHVuaW5zdGFsbCkJOzsKLS0KLS0JCQkgICMgQ2F0Y2ggYW55dGhpbmcgZWxzZSBhcyBhbiBlcnJvcgotLQkJCSAgKikgZnVuY19lcnJvciAiaW52YWxpZCBhcmd1bWVudCBmb3IgJG9wdCIKLS0JCQkgICAgIGV4aXRfY21kPWV4aXQKLS0JCQkgICAgIGJyZWFrCi0tCQkJICAgICA7OwotLQkJICAgICAgICBlc2FjCi0tCi0tCQkJbW9kZT0iJDEiCi0rICAgICAgLS1jb25maWcpCi0rCQkJb3B0X2NvbmZpZz06Ci0rZnVuY19jb25maWcKLSsJCQk7OwotKyAgICAgIC0tZGxvcGVufC1kbG9wZW4pCi0rCQkJb3B0YXJnPSIkMSIKLSsJCQlvcHRfZGxvcGVuPSIke29wdF9kbG9wZW4rJG9wdF9kbG9wZW4KLSt9JG9wdGFyZyIKLSAJCQlzaGlmdAotIAkJCTs7Ci0tCi0gICAgICAgLS1wcmVzZXJ2ZS1kdXAtZGVwcykKLS0JCQlvcHRfZHVwbGljYXRlX2RlcHM9OgkJCQk7OwotLQotLSAgICAgIC0tcXVpZXR8LS1zaWxlbnQpCXByZXNlcnZlX2FyZ3M9IiRwcmVzZXJ2ZV9hcmdzICRvcHQiCi0tCQkJb3B0X3NpbGVudD06Ci0tCQkJb3B0X3ZlcmJvc2U9ZmFsc2UKLSsJCQlvcHRfcHJlc2VydmVfZHVwX2RlcHM9OgotIAkJCTs7Ci0tCi0tICAgICAgLS1uby1xdWlldHwtLW5vLXNpbGVudCkKLS0JCQlwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAkb3B0IgotLQkJCW9wdF9zaWxlbnQ9ZmFsc2UKLSsgICAgICAtLWZlYXR1cmVzKQotKwkJCW9wdF9mZWF0dXJlcz06Ci0rZnVuY19mZWF0dXJlcwotIAkJCTs7Ci0tCi0tICAgICAgLS12ZXJib3NlfCAtdikJcHJlc2VydmVfYXJncz0iJHByZXNlcnZlX2FyZ3MgJG9wdCIKLSsgICAgICAtLWZpbmlzaCkKLSsJCQlvcHRfZmluaXNoPToKLStzZXQgZHVtbXkgLS1tb2RlIGZpbmlzaCAkezErIiRAIn07IHNoaWZ0Ci0rCQkJOzsKLSsgICAgICAtLWhlbHApCi0rCQkJb3B0X2hlbHA9OgotKwkJCTs7Ci0rICAgICAgLS1oZWxwLWFsbCkKLSsJCQlvcHRfaGVscF9hbGw9OgotK29wdF9oZWxwPSc6IGhlbHAtYWxsJwotKwkJCTs7Ci0rICAgICAgLS1tb2RlKQotKwkJCXRlc3QgJCMgPSAwICYmIGZ1bmNfbWlzc2luZ19hcmcgJG9wdCAmJiBicmVhawotKwkJCW9wdGFyZz0iJDEiCi0rCQkJb3B0X21vZGU9IiRvcHRhcmciCi0rY2FzZSAkb3B0YXJnIGluCi0rICAjIFZhbGlkIG1vZGUgYXJndW1lbnRzOgotKyAgY2xlYW58Y29tcGlsZXxleGVjdXRlfGZpbmlzaHxpbnN0YWxsfGxpbmt8cmVsaW5rfHVuaW5zdGFsbCkgOzsKLSsKLSsgICMgQ2F0Y2ggYW55dGhpbmcgZWxzZSBhcyBhbiBlcnJvcgotKyAgKikgZnVuY19lcnJvciAiaW52YWxpZCBhcmd1bWVudCBmb3IgJG9wdCIKLSsgICAgIGV4aXRfY21kPWV4aXQKLSsgICAgIGJyZWFrCi0rICAgICA7OwotK2VzYWMKLSsJCQlzaGlmdAotKwkJCTs7Ci0rICAgICAgLS1uby1zaWxlbnR8LS1uby1xdWlldCkKLSAJCQlvcHRfc2lsZW50PWZhbHNlCi0tCQkJb3B0X3ZlcmJvc2U9OgotK2Z1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAkb3B0IgotIAkJCTs7Ci0tCi0tICAgICAgLS1uby12ZXJib3NlKQlwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAkb3B0IgotKyAgICAgIC0tbm8tdmVyYm9zZSkKLSAJCQlvcHRfdmVyYm9zZT1mYWxzZQotK2Z1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAkb3B0IgotIAkJCTs7Ci0tCi0tICAgICAgLS10YWcpCQl0ZXN0ICIkIyIgLWVxIDAgJiYgZnVuY19taXNzaW5nX2FyZyAiJG9wdCIgJiYgYnJlYWsKLS0JCQlwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAkb3B0ICQxIgotLQkJCWZ1bmNfZW5hYmxlX3RhZyAiJDEiCSMgdGFnbmFtZSBpcyBzZXQgaGVyZQotKyAgICAgIC0tc2lsZW50fC0tcXVpZXQpCi0rCQkJb3B0X3NpbGVudD06Ci0rZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiICRvcHQiCi0rICAgICAgICBvcHRfdmVyYm9zZT1mYWxzZQotKwkJCTs7Ci0rICAgICAgLS12ZXJib3NlfC12KQotKwkJCW9wdF92ZXJib3NlPToKLStmdW5jX2FwcGVuZCBwcmVzZXJ2ZV9hcmdzICIgJG9wdCIKLStvcHRfc2lsZW50PWZhbHNlCi0rCQkJOzsKLSsgICAgICAtLXRhZykKLSsJCQl0ZXN0ICQjID0gMCAmJiBmdW5jX21pc3NpbmdfYXJnICRvcHQgJiYgYnJlYWsKLSsJCQlvcHRhcmc9IiQxIgotKwkJCW9wdF90YWc9IiRvcHRhcmciCi0rZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiICRvcHQgJG9wdGFyZyIKLStmdW5jX2VuYWJsZV90YWcgIiRvcHRhcmciCi0gCQkJc2hpZnQKLSAJCQk7OwotIAotKyAgICAgIC1cP3wtaCkJCWZ1bmNfdXNhZ2UJCQkJOzsKLSsgICAgICAtLWhlbHApCQlmdW5jX2hlbHAJCQkJOzsKLSsgICAgICAtLXZlcnNpb24pCWZ1bmNfdmVyc2lvbgkJCQk7OwotKwotICAgICAgICMgU2VwYXJhdGUgb3B0YXJncyB0byBsb25nIG9wdGlvbnM6Ci0tICAgICAgLWRsb3Blbj0qfC0tbW9kZT0qfC0tdGFnPSopCi0tCQkJZnVuY19vcHRfc3BsaXQgIiRvcHQiCi0tCQkJc2V0IGR1bW15ICIkZnVuY19vcHRfc3BsaXRfb3B0IiAiJGZ1bmNfb3B0X3NwbGl0X2FyZyIgJHsxKyIkQCJ9Ci0rICAgICAgLS0qPSopCi0rCQkJZnVuY19zcGxpdF9sb25nX29wdCAiJG9wdCIKLSsJCQlzZXQgZHVtbXkgIiRmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWUiICIkZnVuY19zcGxpdF9sb25nX29wdF9hcmciICR7MSsiJEAifQotIAkJCXNoaWZ0Ci0gCQkJOzsKLSAKLS0gICAgICAtXD98LWgpCQlmdW5jX3VzYWdlCQkJCQk7OwotLSAgICAgIC0taGVscCkJCW9wdF9oZWxwPToJCQkJCTs7Ci0tICAgICAgLS1oZWxwLWFsbCkJb3B0X2hlbHA9JzogaGVscC1hbGwnCQkJCTs7Ci0tICAgICAgLS12ZXJzaW9uKQlmdW5jX3ZlcnNpb24JCQkJCTs7Ci0tCi0tICAgICAgLSopCQlmdW5jX2ZhdGFsX2hlbHAgInVucmVjb2duaXplZCBvcHRpb24gXGAkb3B0JyIJOzsKLS0KLS0gICAgICAqKQkJbm9ub3B0PSIkb3B0IgotLQkJCWJyZWFrCi0rICAgICAgIyBTZXBhcmF0ZSBub24tYXJndW1lbnQgc2hvcnQgb3B0aW9uczoKLSsgICAgICAtXD8qfC1oKnwtbip8LXYqKQotKwkJCWZ1bmNfc3BsaXRfc2hvcnRfb3B0ICIkb3B0IgotKwkJCXNldCBkdW1teSAiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWUiICItJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyIgJHsxKyIkQCJ9Ci0rCQkJc2hpZnQKLSAJCQk7OwotKwotKyAgICAgIC0tKQkJYnJlYWsJCQkJCTs7Ci0rICAgICAgLSopCQlmdW5jX2ZhdGFsX2hlbHAgInVucmVjb2duaXplZCBvcHRpb24gXGAkb3B0JyIgOzsKLSsgICAgICAqKQkJc2V0IGR1bW15ICIkb3B0IiAkezErIiRAIn07CXNoaWZ0OyBicmVhayAgOzsKLSAgICAgZXNhYwotICAgZG9uZQotIAotKyAgIyBWYWxpZGF0ZSBvcHRpb25zOgotKwotKyAgIyBzYXZlIGZpcnN0IG5vbi1vcHRpb24gYXJndW1lbnQKLSsgIGlmIHRlc3QgIiQjIiAtZ3QgMDsgdGhlbgotKyAgICBub25vcHQ9IiRvcHQiCi0rICAgIHNoaWZ0Ci0rICBmaQotKwotKyAgIyBwcmVzZXJ2ZSAtLWRlYnVnCi0rICB0ZXN0ICIkb3B0X2RlYnVnIiA9IDogfHwgZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiIC0tZGVidWciCi0gCi0gICBjYXNlICRob3N0IGluCi0gICAgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpwdzMyKiB8ICpjZWdjYyogfCAqc29sYXJpczIqICkKLUBAIC05ODEsODIgKzExODQsNDQgQEAgZnVuY19lbmFibGVfdGFnICgpCi0gICAgICAgb3B0X2R1cGxpY2F0ZV9jb21waWxlcl9nZW5lcmF0ZWRfZGVwcz06Ci0gICAgICAgOzsKLSAgICAgKikKLS0gICAgICBvcHRfZHVwbGljYXRlX2NvbXBpbGVyX2dlbmVyYXRlZF9kZXBzPSRvcHRfZHVwbGljYXRlX2RlcHMKLSsgICAgICBvcHRfZHVwbGljYXRlX2NvbXBpbGVyX2dlbmVyYXRlZF9kZXBzPSRvcHRfcHJlc2VydmVfZHVwX2RlcHMKLSAgICAgICA7OwotICAgZXNhYwotIAotLSAgIyBIYXZpbmcgd2FybmVkIGFib3V0IGFsbCBtaXMtc3BlY2lmaWVkIG9wdGlvbnMsIGJhaWwgb3V0IGlmCi0tICAjIGFueXRoaW5nIHdhcyB3cm9uZy4KLS0gICRleGl0X2NtZCAkRVhJVF9GQUlMVVJFCi0tfQotKyAgJG9wdF9oZWxwIHx8IHsKLSsgICAgIyBTYW5pdHkgY2hlY2tzIGZpcnN0OgotKyAgICBmdW5jX2NoZWNrX3ZlcnNpb25fbWF0Y2gKLSAKLS0jIGZ1bmNfY2hlY2tfdmVyc2lvbl9tYXRjaAotLSMgRW5zdXJlIHRoYXQgd2UgYXJlIHVzaW5nIG00IG1hY3JvcywgYW5kIGxpYnRvb2wgc2NyaXB0IGZyb20gdGhlIHNhbWUKLS0jIHJlbGVhc2Ugb2YgbGlidG9vbC4KLS1mdW5jX2NoZWNrX3ZlcnNpb25fbWF0Y2ggKCkKLS17Ci0tICBpZiB0ZXN0ICIkcGFja2FnZV9yZXZpc2lvbiIgIT0gIiRtYWNyb19yZXZpc2lvbiI7IHRoZW4KLS0gICAgaWYgdGVzdCAiJFZFUlNJT04iICE9ICIkbWFjcm9fdmVyc2lvbiI7IHRoZW4KLS0gICAgICBpZiB0ZXN0IC16ICIkbWFjcm9fdmVyc2lvbiI7IHRoZW4KLS0gICAgICAgIGNhdCA+JjIgPDxfTFRfRU9GCi0tJHByb2duYW1lOiBWZXJzaW9uIG1pc21hdGNoIGVycm9yLiAgVGhpcyBpcyAkUEFDS0FHRSAkVkVSU0lPTiwgYnV0IHRoZQotLSRwcm9nbmFtZTogZGVmaW5pdGlvbiBvZiB0aGlzIExUX0lOSVQgY29tZXMgZnJvbSBhbiBvbGRlciByZWxlYXNlLgotLSRwcm9nbmFtZTogWW91IHNob3VsZCByZWNyZWF0ZSBhY2xvY2FsLm00IHdpdGggbWFjcm9zIGZyb20gJFBBQ0tBR0UgJFZFUlNJT04KLS0kcHJvZ25hbWU6IGFuZCBydW4gYXV0b2NvbmYgYWdhaW4uCi0tX0xUX0VPRgotLSAgICAgIGVsc2UKLS0gICAgICAgIGNhdCA+JjIgPDxfTFRfRU9GCi0tJHByb2duYW1lOiBWZXJzaW9uIG1pc21hdGNoIGVycm9yLiAgVGhpcyBpcyAkUEFDS0FHRSAkVkVSU0lPTiwgYnV0IHRoZQotLSRwcm9nbmFtZTogZGVmaW5pdGlvbiBvZiB0aGlzIExUX0lOSVQgY29tZXMgZnJvbSAkUEFDS0FHRSAkbWFjcm9fdmVyc2lvbi4KLS0kcHJvZ25hbWU6IFlvdSBzaG91bGQgcmVjcmVhdGUgYWNsb2NhbC5tNCB3aXRoIG1hY3JvcyBmcm9tICRQQUNLQUdFICRWRVJTSU9OCi0tJHByb2duYW1lOiBhbmQgcnVuIGF1dG9jb25mIGFnYWluLgotLV9MVF9FT0YKLS0gICAgICBmaQotLSAgICBlbHNlCi0tICAgICAgY2F0ID4mMiA8PF9MVF9FT0YKLS0kcHJvZ25hbWU6IFZlcnNpb24gbWlzbWF0Y2ggZXJyb3IuICBUaGlzIGlzICRQQUNLQUdFICRWRVJTSU9OLCByZXZpc2lvbiAkcGFja2FnZV9yZXZpc2lvbiwKLS0kcHJvZ25hbWU6IGJ1dCB0aGUgZGVmaW5pdGlvbiBvZiB0aGlzIExUX0lOSVQgY29tZXMgZnJvbSByZXZpc2lvbiAkbWFjcm9fcmV2aXNpb24uCi0tJHByb2duYW1lOiBZb3Ugc2hvdWxkIHJlY3JlYXRlIGFjbG9jYWwubTQgd2l0aCBtYWNyb3MgZnJvbSByZXZpc2lvbiAkcGFja2FnZV9yZXZpc2lvbgotLSRwcm9nbmFtZTogb2YgJFBBQ0tBR0UgJFZFUlNJT04gYW5kIHJ1biBhdXRvY29uZiBhZ2Fpbi4KLS1fTFRfRU9GCi0rICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IHllcyAmJiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiICE9IHllczsgdGhlbgotKyAgICAgIGZ1bmNfZmF0YWxfY29uZmlndXJhdGlvbiAibm90IGNvbmZpZ3VyZWQgdG8gYnVpbGQgYW55IGtpbmQgb2YgbGlicmFyeSIKLSAgICAgZmkKLSAKLS0gICAgZXhpdCAkRVhJVF9NSVNNQVRDSAotLSAgZmkKLS19Ci0tCi0rICAgICMgRGFyd2luIHN1Y2tzCi0rICAgIGV2YWwgc3RkX3NocmV4dD1cIiRzaHJleHRfY21kc1wiCi0gCi0tIyMgLS0tLS0tLS0tLS0gIyMKLS0jIyAgICBNYWluLiAgICAjIwotLSMjIC0tLS0tLS0tLS0tICMjCi0tCi0tJG9wdF9oZWxwIHx8IHsKLS0gICMgU2FuaXR5IGNoZWNrcyBmaXJzdDoKLS0gIGZ1bmNfY2hlY2tfdmVyc2lvbl9tYXRjaAotLQotLSAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0geWVzICYmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgIT0geWVzOyB0aGVuCi0tICAgIGZ1bmNfZmF0YWxfY29uZmlndXJhdGlvbiAibm90IGNvbmZpZ3VyZWQgdG8gYnVpbGQgYW55IGtpbmQgb2YgbGlicmFyeSIKLS0gIGZpCi0rICAgICMgT25seSBleGVjdXRlIG1vZGUgaXMgYWxsb3dlZCB0byBoYXZlIC1kbG9wZW4gZmxhZ3MuCi0rICAgIGlmIHRlc3QgLW4gIiRvcHRfZGxvcGVuIiAmJiB0ZXN0ICIkb3B0X21vZGUiICE9IGV4ZWN1dGU7IHRoZW4KLSsgICAgICBmdW5jX2Vycm9yICJ1bnJlY29nbml6ZWQgb3B0aW9uIFxgLWRsb3BlbiciCi0rICAgICAgJEVDSE8gIiRoZWxwIiAxPiYyCi0rICAgICAgZXhpdCAkRVhJVF9GQUlMVVJFCi0rICAgIGZpCi0gCi0tICB0ZXN0IC16ICIkbW9kZSIgJiYgZnVuY19mYXRhbF9lcnJvciAiZXJyb3I6IHlvdSBtdXN0IHNwZWNpZnkgYSBNT0RFLiIKLSsgICAgIyBDaGFuZ2UgdGhlIGhlbHAgbWVzc2FnZSB0byBhIG1vZGUtc3BlY2lmaWMgb25lLgotKyAgICBnZW5lcmljX2hlbHA9IiRoZWxwIgotKyAgICBoZWxwPSJUcnkgXGAkcHJvZ25hbWUgLS1oZWxwIC0tbW9kZT0kb3B0X21vZGUnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIKLSsgIH0KLSAKLSAKLS0gICMgRGFyd2luIHN1Y2tzCi0tICBldmFsICJzdGRfc2hyZXh0PVwiJHNocmV4dF9jbWRzXCIiCi0rICAjIEJhaWwgaWYgdGhlIG9wdGlvbnMgd2VyZSBzY3Jld2VkCi0rICAkZXhpdF9jbWQgJEVYSVRfRkFJTFVSRQotK30KLSAKLSAKLS0gICMgT25seSBleGVjdXRlIG1vZGUgaXMgYWxsb3dlZCB0byBoYXZlIC1kbG9wZW4gZmxhZ3MuCi0tICBpZiB0ZXN0IC1uICIkZXhlY3V0ZV9kbGZpbGVzIiAmJiB0ZXN0ICIkbW9kZSIgIT0gZXhlY3V0ZTsgdGhlbgotLSAgICBmdW5jX2Vycm9yICJ1bnJlY29nbml6ZWQgb3B0aW9uIFxgLWRsb3BlbiciCi0tICAgICRFQ0hPICIkaGVscCIgMT4mMgotLSAgICBleGl0ICRFWElUX0ZBSUxVUkUKLS0gIGZpCi0gCi0tICAjIENoYW5nZSB0aGUgaGVscCBtZXNzYWdlIHRvIGEgbW9kZS1zcGVjaWZpYyBvbmUuCi0tICBnZW5lcmljX2hlbHA9IiRoZWxwIgotLSAgaGVscD0iVHJ5IFxgJHByb2duYW1lIC0taGVscCAtLW1vZGU9JG1vZGUnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIKLS19Ci0gCi0rIyMgLS0tLS0tLS0tLS0gIyMKLSsjIyAgICBNYWluLiAgICAjIwotKyMjIC0tLS0tLS0tLS0tICMjCi0gCi0gIyBmdW5jX2xhbGliX3AgZmlsZQotICMgVHJ1ZSBpZmYgRklMRSBpcyBhIGxpYnRvb2wgYC5sYScgbGlicmFyeSBvciBgLmxvJyBvYmplY3QgZmlsZS4KLUBAIC0xMTIxLDEyICsxMjg2LDkgQEAgZnVuY19sdHdyYXBwZXJfZXhlY3V0YWJsZV9wICgpCi0gIyB0ZW1wb3JhcnkgbHR3cmFwcGVyX3NjcmlwdC4KLSBmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lICgpCi0gewotLSAgICBmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdD0iIgotLSAgICBpZiBmdW5jX2x0d3JhcHBlcl9leGVjdXRhYmxlX3AgIiQxIjsgdGhlbgotLQlmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICIkMSIgIiIgIi4iCi0tCWZ1bmNfc3RyaXBuYW1lICcnICcuZXhlJyAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotLQlmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQvJG9iamRpci8ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdH1fbHRzaHdyYXBwZXIiCi0tICAgIGZpCi0rICAgIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgIiQxIiAiIiAiLiIKLSsgICAgZnVuY19zdHJpcG5hbWUgJycgJy5leGUnICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0rICAgIGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdC8kb2JqZGlyLyR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0fV9sdHNod3JhcHBlciIKLSB9Ci0gCi0gIyBmdW5jX2x0d3JhcHBlcl9wIGZpbGUKLUBAIC0xMTQ5LDcgKzEzMTEsNyBAQCBmdW5jX2V4ZWN1dGVfY21kcyAoKQotICAgICBzYXZlX2lmcz0kSUZTOyBJRlM9J34nCi0gICAgIGZvciBjbWQgaW4gJDE7IGRvCi0gICAgICAgSUZTPSRzYXZlX2lmcwotLSAgICAgIGV2YWwgImNtZD1cIiRjbWRcIiIKLSsgICAgICBldmFsIGNtZD1cIiRjbWRcIgotICAgICAgIGZ1bmNfc2hvd19ldmFsICIkY21kIiAiJHsyLTp9IgotICAgICBkb25lCi0gICAgIElGUz0kc2F2ZV9pZnMKLUBAIC0xMTcyLDYgKzEzMzQsMzcgQEAgZnVuY19zb3VyY2UgKCkKLSB9Ci0gCi0gCi0rIyBmdW5jX3Jlc29sdmVfc3lzcm9vdCBQQVRICi0rIyBSZXBsYWNlIGEgbGVhZGluZyA9IGluIFBBVEggd2l0aCBhIHN5c3Jvb3QuICBTdG9yZSB0aGUgcmVzdWx0IGludG8KLSsjIGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAotK2Z1bmNfcmVzb2x2ZV9zeXNyb290ICgpCi0rewotKyAgZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0PSQxCi0rICBjYXNlICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQgaW4KLSsgID0qKQotKyAgICBmdW5jX3N0cmlwbmFtZSAnPScgJycgIiRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCi0rICAgIGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdD0kbHRfc3lzcm9vdCRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLSsgICAgOzsKLSsgIGVzYWMKLSt9Ci0rCi0rIyBmdW5jX3JlcGxhY2Vfc3lzcm9vdCBQQVRICi0rIyBJZiBQQVRIIGJlZ2lucyB3aXRoIHRoZSBzeXNyb290LCByZXBsYWNlIGl0IHdpdGggPSBhbmQKLSsjIHN0b3JlIHRoZSByZXN1bHQgaW50byBmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQuCi0rZnVuY19yZXBsYWNlX3N5c3Jvb3QgKCkKLSt7Ci0rICBjYXNlICIkbHRfc3lzcm9vdDokMSIgaW4KLSsgID8qOiIkbHRfc3lzcm9vdCIqKQotKyAgICBmdW5jX3N0cmlwbmFtZSAiJGx0X3N5c3Jvb3QiICcnICIkMSIKLSsgICAgZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0PSI9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKLSsgICAgOzsKLSsgICopCi0rICAgICMgSW5jbHVkaW5nIG5vIHN5c3Jvb3QuCi0rICAgIGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdD0kMQotKyAgICA7OwotKyAgZXNhYwotK30KLSsKLSAjIGZ1bmNfaW5mZXJfdGFnIGFyZwotICMgSW5mZXIgdGFnZ2VkIGNvbmZpZ3VyYXRpb24gdG8gdXNlIGlmIGFueSBhcmUgYXZhaWxhYmxlIGFuZAotICMgaWYgb25lIHdhc24ndCBjaG9zZW4gdmlhIHRoZSAiLS10YWciIGNvbW1hbmQgbGluZSBvcHRpb24uCi1AQCAtMTE4NCw4ICsxMzc3LDcgQEAgZnVuY19pbmZlcl90YWcgKCkKLSAgICAgaWYgdGVzdCAtbiAiJGF2YWlsYWJsZV90YWdzIiAmJiB0ZXN0IC16ICIkdGFnbmFtZSI7IHRoZW4KLSAgICAgICBDQ19xdW90ZWQ9Ci0gICAgICAgZm9yIGFyZyBpbiAkQ0M7IGRvCi0tICAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgotLQlDQ19xdW90ZWQ9IiRDQ19xdW90ZWQgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotKwlmdW5jX2FwcGVuZF9xdW90ZWQgQ0NfcXVvdGVkICIkYXJnIgotICAgICAgIGRvbmUKLSAgICAgICBDQ19leHBhbmRlZD1gZnVuY19lY2hvX2FsbCAkQ0NgCi0gICAgICAgQ0NfcXVvdGVkX2V4cGFuZGVkPWBmdW5jX2VjaG9fYWxsICRDQ19xdW90ZWRgCi1AQCAtMTIwNCw4ICsxMzk2LDcgQEAgZnVuY19pbmZlcl90YWcgKCkKLSAJICAgIENDX3F1b3RlZD0KLSAJICAgIGZvciBhcmcgaW4gJENDOyBkbwotIAkgICAgICAjIERvdWJsZS1xdW90ZSBhcmdzIGNvbnRhaW5pbmcgb3RoZXIgc2hlbGwgbWV0YWNoYXJhY3RlcnMuCi0tCSAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCi0tCSAgICAgIENDX3F1b3RlZD0iJENDX3F1b3RlZCAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0rCSAgICAgIGZ1bmNfYXBwZW5kX3F1b3RlZCBDQ19xdW90ZWQgIiRhcmciCi0gCSAgICBkb25lCi0gCSAgICBDQ19leHBhbmRlZD1gZnVuY19lY2hvX2FsbCAkQ0NgCi0gCSAgICBDQ19xdW90ZWRfZXhwYW5kZWQ9YGZ1bmNfZWNob19hbGwgJENDX3F1b3RlZGAKLUBAIC0xMjc0LDYgKzE0NjUsNDg2IEBAIEVPRgotICAgICB9Ci0gfQotIAotKwotKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0rIyBGSUxFIE5BTUUgQU5EIFBBVEggQ09OVkVSU0lPTiBIRUxQRVIgRlVOQ1RJT05TICMKLSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotKwotKyMgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMiBBUkcKLSsjIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IGZpbGUgbmFtZSBjb252ZXJzaW9uIGZ1bmN0aW9ucyB3aGVuICRidWlsZCBpcyAqbml4LAotKyMgYW5kICRob3N0IGlzIG1pbmd3LCBjeWd3aW4sIG9yIHNvbWUgb3RoZXIgdzMyIGVudmlyb25tZW50LiBSZWxpZXMgb24gYQotKyMgY29ycmVjdGx5IGNvbmZpZ3VyZWQgd2luZSBlbnZpcm9ubWVudCBhdmFpbGFibGUsIHdpdGggdGhlIHdpbmVwYXRoIHByb2dyYW0KLSsjIGluICRidWlsZCdzICRQQVRILgotKyMKLSsjIEFSRyBpcyB0aGUgJGJ1aWxkIGZpbGUgbmFtZSB0byBiZSBjb252ZXJ0ZWQgdG8gdzMyIGZvcm1hdC4KLSsjIFJlc3VsdCBpcyBhdmFpbGFibGUgaW4gJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0LCBhbmQgd2lsbAotKyMgYmUgZW1wdHkgb24gZXJyb3IgKG9yIHdoZW4gQVJHIGlzIGVtcHR5KQotK2Z1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzIgKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdD0iJDEiCi0rICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KLSsgICAgIyBVbmZvcnR1bmF0ZWx5LCB3aW5lcGF0aCBkb2VzIG5vdCBleGl0IHdpdGggYSBub24temVybyBlcnJvciBjb2RlLCBzbyB3ZQotKyAgICAjIGFyZSBmb3JjZWQgdG8gY2hlY2sgdGhlIGNvbnRlbnRzIG9mIHN0ZG91dC4gT24gdGhlIG90aGVyIGhhbmQsIGlmIHRoZQotKyAgICAjIGNvbW1hbmQgaXMgbm90IGZvdW5kLCB0aGUgc2hlbGwgd2lsbCBzZXQgYW4gZXhpdCBjb2RlIG9mIDEyNyBhbmQgcHJpbnQKLSsgICAgIyAqYW4gZXJyb3IgbWVzc2FnZSogdG8gc3Rkb3V0LiBTbyB3ZSBtdXN0IGNoZWNrIGZvciBib3RoIGVycm9yIGNvZGUgb2YKLSsgICAgIyB6ZXJvIEFORCBub24tZW1wdHkgc3Rkb3V0LCB3aGljaCBleHBsYWlucyB0aGUgb2RkIGNvbnN0cnVjdGlvbjoKLSsgICAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl90bXA9YHdpbmVwYXRoIC13ICIkMSIgMj4vZGV2L251bGxgCi0rICAgIGlmIHRlc3QgIiQ/IiAtZXEgMCAmJiB0ZXN0IC1uICIke2Z1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfdG1wfSI7IHRoZW4KLSsgICAgICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdD1gJEVDSE8gIiRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3RtcCIgfAotKyAgICAgICAgJFNFRCAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAotKyAgICBlbHNlCi0rICAgICAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQ9Ci0rICAgIGZpCi0rICBmaQotK30KLSsjIGVuZDogZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMgotKwotKwotKyMgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMiBBUkcKLSsjIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IHBhdGggY29udmVyc2lvbiBmdW5jdGlvbnMgd2hlbiAkYnVpbGQgaXMgKm5peCwgYW5kCi0rIyAkaG9zdCBpcyBtaW5ndywgY3lnd2luLCBvciBzb21lIG90aGVyIHczMiBlbnZpcm9ubWVudC4gUmVsaWVzIG9uIGEgY29ycmVjdGx5Ci0rIyBjb25maWd1cmVkIHdpbmUgZW52aXJvbm1lbnQgYXZhaWxhYmxlLCB3aXRoIHRoZSB3aW5lcGF0aCBwcm9ncmFtIGluICRidWlsZCdzCi0rIyAkUEFUSC4gQXNzdW1lcyBBUkcgaGFzIG5vIGxlYWRpbmcgb3IgdHJhaWxpbmcgcGF0aCBzZXBhcmF0b3IgY2hhcmFjdGVycy4KLSsjCi0rIyBBUkcgaXMgcGF0aCB0byBiZSBjb252ZXJ0ZWQgZnJvbSAkYnVpbGQgZm9ybWF0IHRvIHdpbjMyLgotKyMgUmVzdWx0IGlzIGF2YWlsYWJsZSBpbiAkZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQuCi0rIyBVbmNvbnZlcnRpYmxlIGZpbGUgKGRpcmVjdG9yeSkgbmFtZXMgaW4gQVJHIGFyZSBza2lwcGVkOyBpZiBubyBkaXJlY3RvcnkgbmFtZXMKLSsjIGFyZSBjb252ZXJ0aWJsZSwgdGhlbiB0aGUgcmVzdWx0IG1heSBiZSBlbXB0eS4KLStmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgIyB1bmZvcnR1bmF0ZWx5LCB3aW5lcGF0aCBkb2Vzbid0IGNvbnZlcnQgcGF0aHMsIG9ubHkgZmlsZSBuYW1lcwotKyAgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQ9IiIKLSsgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgotKyAgICBvbGRJRlM9JElGUwotKyAgICBJRlM9OgotKyAgICBmb3IgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9mIGluICQxOyBkbwotKyAgICAgIElGUz0kb2xkSUZTCi0rICAgICAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMiAiJGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfZiIKLSsgICAgICBpZiB0ZXN0IC1uICIkZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQiIDsgdGhlbgotKyAgICAgICAgaWYgdGVzdCAteiAiJGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0IjsgdGhlbgotKyAgICAgICAgICBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdD0iJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0IgotKyAgICAgICAgZWxzZQotKyAgICAgICAgICBmdW5jX2FwcGVuZCBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdCAiOyRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCIKLSsgICAgICAgIGZpCi0rICAgICAgZmkKLSsgICAgZG9uZQotKyAgICBJRlM9JG9sZElGUwotKyAgZmkKLSt9Ci0rIyBlbmQ6IGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzIKLSsKLSsKLSsjIGZ1bmNfY3lncGF0aCBBUkdTLi4uCi0rIyBXcmFwcGVyIGFyb3VuZCBjYWxsaW5nIHRoZSBjeWdwYXRoIHByb2dyYW0gdmlhIExUX0NZR1BBVEguIFRoaXMgaXMgdXNlZCB3aGVuCi0rIyB3aGVuICgxKSAkYnVpbGQgaXMgKm5peCBhbmQgQ3lnd2luIGlzIGhvc3RlZCB2aWEgYSB3aW5lIGVudmlyb25tZW50OyBvciAoMikKLSsjICRidWlsZCBpcyBNU1lTIGFuZCAkaG9zdCBpcyBDeWd3aW4sIG9yICgzKSAkYnVpbGQgaXMgQ3lnd2luLiBJbiBjYXNlICgxKSBvcgotKyMgKDIpLCByZXR1cm5zIHRoZSBDeWd3aW4gZmlsZSBuYW1lIG9yIHBhdGggaW4gZnVuY19jeWdwYXRoX3Jlc3VsdCAoaW5wdXQKLSsjIGZpbGUgbmFtZSBvciBwYXRoIGlzIGFzc3VtZWQgdG8gYmUgaW4gdzMyIGZvcm1hdCwgYXMgcHJldmlvdXNseSBjb252ZXJ0ZWQKLSsjIGZyb20gJGJ1aWxkJ3MgKm5peCBvciBNU1lTIGZvcm1hdCkuIEluIGNhc2UgKDMpLCByZXR1cm5zIHRoZSB3MzIgZmlsZSBuYW1lCi0rIyBvciBwYXRoIGluIGZ1bmNfY3lncGF0aF9yZXN1bHQgKGlucHV0IGZpbGUgbmFtZSBvciBwYXRoIGlzIGFzc3VtZWQgdG8gYmUgaW4KLSsjIEN5Z3dpbiBmb3JtYXQpLiBSZXR1cm5zIGFuIGVtcHR5IHN0cmluZyBvbiBlcnJvci4KLSsjCi0rIyBBUkdTIGFyZSBwYXNzZWQgdG8gY3lncGF0aCwgd2l0aCB0aGUgbGFzdCBvbmUgYmVpbmcgdGhlIGZpbGUgbmFtZSBvciBwYXRoIHRvCi0rIyBiZSBjb252ZXJ0ZWQuCi0rIwotKyMgU3BlY2lmeSB0aGUgYWJzb2x1dGUgKm5peCAob3IgdzMyKSBuYW1lIHRvIGN5Z3BhdGggaW4gdGhlIExUX0NZR1BBVEgKLSsjIGVudmlyb25tZW50IHZhcmlhYmxlOyBkbyBub3QgcHV0IGl0IGluICRQQVRILgotK2Z1bmNfY3lncGF0aCAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIGlmIHRlc3QgLW4gIiRMVF9DWUdQQVRIIiAmJiB0ZXN0IC1mICIkTFRfQ1lHUEFUSCI7IHRoZW4KLSsgICAgZnVuY19jeWdwYXRoX3Jlc3VsdD1gJExUX0NZR1BBVEggIiRAIiAyPi9kZXYvbnVsbGAKLSsgICAgaWYgdGVzdCAiJD8iIC1uZSAwOyB0aGVuCi0rICAgICAgIyBvbiBmYWlsdXJlLCBlbnN1cmUgcmVzdWx0IGlzIGVtcHR5Ci0rICAgICAgZnVuY19jeWdwYXRoX3Jlc3VsdD0KLSsgICAgZmkKLSsgIGVsc2UKLSsgICAgZnVuY19jeWdwYXRoX3Jlc3VsdD0KLSsgICAgZnVuY19lcnJvciAiTFRfQ1lHUEFUSCBpcyBlbXB0eSBvciBzcGVjaWZpZXMgbm9uLWV4aXN0ZW50IGZpbGU6IFxgJExUX0NZR1BBVEgnIgotKyAgZmkKLSt9Ci0rI2VuZDogZnVuY19jeWdwYXRoCi0rCi0rCi0rIyBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiBBUkcKLSsjIENvbnZlcnQgZmlsZSBuYW1lIG9yIHBhdGggQVJHIGZyb20gTVNZUyBmb3JtYXQgdG8gdzMyIGZvcm1hdC4gIFJldHVybgotKyMgcmVzdWx0IGluIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdC4KLStmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgICMgYXdrd2FyZDogY21kIGFwcGVuZHMgc3BhY2VzIHRvIHJlc3VsdAotKyAgZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzJfcmVzdWx0PWAoIGNtZCAvL2MgZWNobyAiJDEiICkgMj4vZGV2L251bGwgfAotKyAgICAkU0VEIC1lICdzL1sgXSokLy8nIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCi0rfQotKyNlbmQ6IGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyCi0rCi0rCi0rIyBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayBBUkcxIEFSRzIKLSsjIFZlcmlmeSB0aGF0IEFSRzEgKGEgZmlsZSBuYW1lIGluICRidWlsZCBmb3JtYXQpIHdhcyBjb252ZXJ0ZWQgdG8gJGhvc3QKLSsjIGZvcm1hdCBpbiBBUkcyLiBPdGhlcndpc2UsIGVtaXQgYW4gZXJyb3IgbWVzc2FnZSwgYnV0IGNvbnRpbnVlIChyZXNldHRpbmcKLSsjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCB0byBBUkcxKS4KLStmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIGlmIHRlc3QgLXogIiQyIiAmJiB0ZXN0IC1uICIkMSIgOyB0aGVuCi0rICAgIGZ1bmNfZXJyb3IgIkNvdWxkIG5vdCBkZXRlcm1pbmUgaG9zdCBmaWxlIG5hbWUgY29ycmVzcG9uZGluZyB0byIKLSsgICAgZnVuY19lcnJvciAiICBcYCQxJyIKLSsgICAgZnVuY19lcnJvciAiQ29udGludWluZywgYnV0IHVuaW5zdGFsbGVkIGV4ZWN1dGFibGVzIG1heSBub3Qgd29yay4iCi0rICAgICMgRmFsbGJhY2s6Ci0rICAgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCi0rICBmaQotK30KLSsjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjawotKwotKwotKyMgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgRlJPTV9QQVRIU0VQIFRPX1BBVEhTRVAgRlJPTV9QQVRIIFRPX1BBVEgKLSsjIFZlcmlmeSB0aGF0IEZST01fUEFUSCAoYSBwYXRoIGluICRidWlsZCBmb3JtYXQpIHdhcyBjb252ZXJ0ZWQgdG8gJGhvc3QKLSsjIGZvcm1hdCBpbiBUT19QQVRILiBPdGhlcndpc2UsIGVtaXQgYW4gZXJyb3IgbWVzc2FnZSwgYnV0IGNvbnRpbnVlLCByZXNldHRpbmcKLSsjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCB0byBhIHNpbXBsaXN0aWMgZmFsbGJhY2sgdmFsdWUgKHNlZSBiZWxvdykuCi0rZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBpZiB0ZXN0IC16ICIkNCIgJiYgdGVzdCAtbiAiJDMiOyB0aGVuCi0rICAgIGZ1bmNfZXJyb3IgIkNvdWxkIG5vdCBkZXRlcm1pbmUgdGhlIGhvc3QgcGF0aCBjb3JyZXNwb25kaW5nIHRvIgotKyAgICBmdW5jX2Vycm9yICIgIFxgJDMnIgotKyAgICBmdW5jX2Vycm9yICJDb250aW51aW5nLCBidXQgdW5pbnN0YWxsZWQgZXhlY3V0YWJsZXMgbWF5IG5vdCB3b3JrLiIKLSsgICAgIyBGYWxsYmFjay4gIFRoaXMgaXMgYSBkZWxpYmVyYXRlbHkgc2ltcGxpc3RpYyAiY29udmVyc2lvbiIgYW5kCi0rICAgICMgc2hvdWxkIG5vdCBiZSAiaW1wcm92ZWQiLiAgU2VlIGxpYnRvb2wuaW5mby4KLSsgICAgaWYgdGVzdCAieCQxIiAhPSAieCQyIjsgdGhlbgotKyAgICAgIGx0X3JlcGxhY2VfcGF0aHNlcF9jaGFycz0ic3wkMXwkMnxnIgotKyAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD1gZWNobyAiJDMiIHwKLSsgICAgICAgICRTRUQgLWUgIiRsdF9yZXBsYWNlX3BhdGhzZXBfY2hhcnMiYAotKyAgICBlbHNlCi0rICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMyIKLSsgICAgZmkKLSsgIGZpCi0rfQotKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrCi0rCi0rCi0rIyBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgRlJPTlRQQVQgQkFDS1BBVCBSRVBMIE9SSUcKLSsjIE1vZGlmaWVzIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCBieSBwcmVwZW5kaW5nIFJFUEwgaWYgT1JJRyBtYXRjaGVzIEZST05UUEFUCi0rIyBhbmQgYXBwZW5kaW5nIFJFUEwgaWYgT1JJRyBtYXRjaGVzIEJBQ0tQQVQuCi0rZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgY2FzZSAkNCBpbgotKyAgJDEgKSBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQzJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKLSsgICAgOzsKLSsgIGVzYWMKLSsgIGNhc2UgJDQgaW4KLSsgICQyICkgZnVuY19hcHBlbmQgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0ICIkMyIKLSsgICAgOzsKLSsgIGVzYWMKLSt9Ci0rIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwCi0rCi0rCi0rIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSsjICRidWlsZCB0byAkaG9zdCBGSUxFIE5BTUUgQ09OVkVSU0lPTiBGVU5DVElPTlMgIwotKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0rIyBpbnZva2VkIHZpYSBgJHRvX2hvc3RfZmlsZV9jbWQgQVJHJwotKyMKLSsjIEluIGVhY2ggY2FzZSwgQVJHIGlzIHRoZSBwYXRoIHRvIGJlIGNvbnZlcnRlZCBmcm9tICRidWlsZCB0byAkaG9zdCBmb3JtYXQuCi0rIyBSZXN1bHQgd2lsbCBiZSBhdmFpbGFibGUgaW4gJGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KLSsKLSsKLSsjIGZ1bmNfdG9faG9zdF9maWxlIEFSRwotKyMgQ29udmVydHMgdGhlIGZpbGUgbmFtZSBBUkcgZnJvbSAkYnVpbGQgZm9ybWF0IHRvICRob3N0IGZvcm1hdC4gUmV0dXJuIHJlc3VsdAotKyMgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgotK2Z1bmNfdG9faG9zdF9maWxlICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgJHRvX2hvc3RfZmlsZV9jbWQgIiQxIgotK30KLSsjIGVuZCBmdW5jX3RvX2hvc3RfZmlsZQotKwotKwotKyMgZnVuY190b190b29sX2ZpbGUgQVJHIExBWlkKLSsjIGNvbnZlcnRzIHRoZSBmaWxlIG5hbWUgQVJHIGZyb20gJGJ1aWxkIGZvcm1hdCB0byB0b29sY2hhaW4gZm9ybWF0LiBSZXR1cm4KLSsjIHJlc3VsdCBpbiBmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQuICBJZiB0aGUgY29udmVyc2lvbiBpbiB1c2UgaXMgbGlzdGVkCi0rIyBpbiAodGhlIGNvbW1hIHNlcGFyYXRlZCkgTEFaWSwgbm8gY29udmVyc2lvbiB0YWtlcyBwbGFjZS4KLStmdW5jX3RvX3Rvb2xfZmlsZSAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIGNhc2UgLCQyLCBpbgotKyAgICAqLCIkdG9fdG9vbF9maWxlX2NtZCIsKikKLSsgICAgICBmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQ9JDEKLSsgICAgICA7OwotKyAgICAqKQotKyAgICAgICR0b190b29sX2ZpbGVfY21kICIkMSIKLSsgICAgICBmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQ9JGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdAotKyAgICAgIDs7Ci0rICBlc2FjCi0rfQotKyMgZW5kIGZ1bmNfdG9fdG9vbF9maWxlCi0rCi0rCi0rIyBmdW5jX2NvbnZlcnRfZmlsZV9ub29wIEFSRwotKyMgQ29weSBBUkcgdG8gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgotK2Z1bmNfY29udmVydF9maWxlX25vb3AgKCkKLSt7Ci0rICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgotK30KLSsjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rCi0rCi0rIyBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMiBBUkcKLSsjIENvbnZlcnQgZmlsZSBuYW1lIEFSRyBmcm9tIChtaW5ndykgTVNZUyB0byAobWluZ3cpIHczMiBmb3JtYXQ7IGF1dG9tYXRpYwotKyMgY29udmVyc2lvbiB0byB3MzIgaXMgbm90IGF2YWlsYWJsZSBpbnNpZGUgdGhlIGN3cmFwcGVyLiAgUmV0dXJucyByZXN1bHQgaW4KLSsjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KLStmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMiAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCi0rICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KLSsgICAgZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIgIiQxIgotKyAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiRmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMl9yZXN1bHQiCi0rICBmaQotKyAgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgIiQxIiAiJGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCIKLSt9Ci0rIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsKLSsKLSsjIGZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIgQVJHCi0rIyBDb252ZXJ0IGZpbGUgbmFtZSBBUkcgZnJvbSBDeWd3aW4gdG8gdzMyIGZvcm1hdC4gIFJldHVybnMgcmVzdWx0IGluCi0rIyBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCi0rZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMiAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCi0rICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KLSsgICAgIyBiZWNhdXNlICRidWlsZCBpcyBjeWd3aW4sIHdlIGNhbGwgInRoZSIgY3lncGF0aCBpbiAkUEFUSDsgbm8gbmVlZCB0byB1c2UKLSsgICAgIyBMVF9DWUdQQVRIIGluIHRoaXMgY2FzZS4KLSsgICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PWBjeWdwYXRoIC1tICIkMSJgCi0rICBmaQotKyAgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgIiQxIiAiJGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCIKLSt9Ci0rIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgotKwotKwotKyMgZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMiBBUkcKLSsjIENvbnZlcnQgZmlsZSBuYW1lIEFSRyBmcm9tICpuaXggdG8gdzMyIGZvcm1hdC4gIFJlcXVpcmVzIGEgd2luZSBlbnZpcm9ubWVudAotKyMgYW5kIGEgd29ya2luZyB3aW5lcGF0aC4gUmV0dXJucyByZXN1bHQgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgotK2Z1bmNfY29udmVydF9maWxlX25peF90b193MzIgKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgotKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCi0rICAgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzIgIiQxIgotKyAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCIKLSsgIGZpCi0rICBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayAiJDEiICIkZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IgotK30KLSsjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyCi0rCi0rCi0rIyBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbiBBUkcKLSsjIENvbnZlcnQgZmlsZSBuYW1lIEFSRyBmcm9tIE1TWVMgdG8gQ3lnd2luIGZvcm1hdC4gIFJlcXVpcmVzIExUX0NZR1BBVEggc2V0LgotKyMgUmV0dXJucyByZXN1bHQgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgotK2Z1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKLSsgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgotKyAgICBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiAiJDEiCi0rICAgIGZ1bmNfY3lncGF0aCAtdSAiJGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdCIKLSsgICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkZnVuY19jeWdwYXRoX3Jlc3VsdCIKLSsgIGZpCi0rICBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayAiJDEiICIkZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IgotK30KLSsjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbgotKwotKwotKyMgZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbiBBUkcKLSsjIENvbnZlcnQgZmlsZSBuYW1lIEFSRyBmcm9tICpuaXggdG8gQ3lnd2luIGZvcm1hdC4gIFJlcXVpcmVzIEN5Z3dpbiBpbnN0YWxsZWQKLSsjIGluIGEgd2luZSBlbnZpcm9ubWVudCwgd29ya2luZyB3aW5lcGF0aCwgYW5kIExUX0NZR1BBVEggc2V0LiAgUmV0dXJucyByZXN1bHQKLSsjIGluIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KLStmdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKLSsgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgotKyAgICAjIGNvbnZlcnQgZnJvbSAqbml4IHRvIHczMiwgdGhlbiB1c2UgY3lncGF0aCB0byBjb252ZXJ0IGZyb20gdzMyIHRvIGN5Z3dpbi4KLSsgICAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMiAiJDEiCi0rICAgIGZ1bmNfY3lncGF0aCAtdSAiJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0IgotKyAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiRmdW5jX2N5Z3BhdGhfcmVzdWx0IgotKyAgZmkKLSsgIGZ1bmNfY29udmVydF9maWxlX2NoZWNrICIkMSIgIiRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQiCi0rfQotKyMgZW5kIGZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4KLSsKLSsKLSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSsjICRidWlsZCB0byAkaG9zdCBQQVRIIENPTlZFUlNJT04gRlVOQ1RJT05TICMKLSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSsjIGludm9rZWQgdmlhIGAkdG9faG9zdF9wYXRoX2NtZCBBUkcnCi0rIwotKyMgSW4gZWFjaCBjYXNlLCBBUkcgaXMgdGhlIHBhdGggdG8gYmUgY29udmVydGVkIGZyb20gJGJ1aWxkIHRvICRob3N0IGZvcm1hdC4KLSsjIFRoZSByZXN1bHQgd2lsbCBiZSBhdmFpbGFibGUgaW4gJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdC4KLSsjCi0rIyBQYXRoIHNlcGFyYXRvcnMgYXJlIGFsc28gY29udmVydGVkIGZyb20gJGJ1aWxkIGZvcm1hdCB0byAkaG9zdCBmb3JtYXQuICBJZgotKyMgQVJHIGJlZ2lucyBvciBlbmRzIHdpdGggYSBwYXRoIHNlcGFyYXRvciBjaGFyYWN0ZXIsIGl0IGlzIHByZXNlcnZlZCAoYnV0Ci0rIyBjb252ZXJ0ZWQgdG8gJGhvc3QgZm9ybWF0KSBvbiBvdXRwdXQuCi0rIwotKyMgQWxsIHBhdGggY29udmVyc2lvbiBmdW5jdGlvbnMgYXJlIG5hbWVkIHVzaW5nIHRoZSBmb2xsb3dpbmcgY29udmVudGlvbjoKLSsjICAgZmlsZSBuYW1lIGNvbnZlcnNpb24gZnVuY3Rpb24gICAgOiBmdW5jX2NvbnZlcnRfZmlsZV9YX3RvX1kgKCkKLSsjICAgcGF0aCBjb252ZXJzaW9uIGZ1bmN0aW9uICAgICAgICAgOiBmdW5jX2NvbnZlcnRfcGF0aF9YX3RvX1kgKCkKLSsjIHdoZXJlLCBmb3IgYW55IGdpdmVuICRidWlsZC8kaG9zdCBjb21iaW5hdGlvbiB0aGUgJ1hfdG9fWScgdmFsdWUgaXMgdGhlCi0rIyBzYW1lLiAgSWYgY29udmVyc2lvbiBmdW5jdGlvbnMgYXJlIGFkZGVkIGZvciBuZXcgJGJ1aWxkLyRob3N0IGNvbWJpbmF0aW9ucywKLSsjIHRoZSB0d28gbmV3IGZ1bmN0aW9ucyBtdXN0IGZvbGxvdyB0aGlzIHBhdHRlcm4sIG9yIGZ1bmNfaW5pdF90b19ob3N0X3BhdGhfY21kCi0rIyB3aWxsIGJyZWFrLgotKwotKwotKyMgZnVuY19pbml0X3RvX2hvc3RfcGF0aF9jbWQKLSsjIEVuc3VyZXMgdGhhdCBmdW5jdGlvbiAicG9pbnRlciIgdmFyaWFibGUgJHRvX2hvc3RfcGF0aF9jbWQgaXMgc2V0IHRvIHRoZQotKyMgYXBwcm9wcmlhdGUgdmFsdWUsIGJhc2VkIG9uIHRoZSB2YWx1ZSBvZiAkdG9faG9zdF9maWxlX2NtZC4KLSt0b19ob3N0X3BhdGhfY21kPQotK2Z1bmNfaW5pdF90b19ob3N0X3BhdGhfY21kICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgaWYgdGVzdCAteiAiJHRvX2hvc3RfcGF0aF9jbWQiOyB0aGVuCi0rICAgIGZ1bmNfc3RyaXBuYW1lICdmdW5jX2NvbnZlcnRfZmlsZV8nICcnICIkdG9faG9zdF9maWxlX2NtZCIKLSsgICAgdG9faG9zdF9wYXRoX2NtZD0iZnVuY19jb252ZXJ0X3BhdGhfJHtmdW5jX3N0cmlwbmFtZV9yZXN1bHR9IgotKyAgZmkKLSt9Ci0rCi0rCi0rIyBmdW5jX3RvX2hvc3RfcGF0aCBBUkcKLSsjIENvbnZlcnRzIHRoZSBwYXRoIEFSRyBmcm9tICRidWlsZCBmb3JtYXQgdG8gJGhvc3QgZm9ybWF0LiBSZXR1cm4gcmVzdWx0Ci0rIyBpbiBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQuCi0rZnVuY190b19ob3N0X3BhdGggKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBmdW5jX2luaXRfdG9faG9zdF9wYXRoX2NtZAotKyAgJHRvX2hvc3RfcGF0aF9jbWQgIiQxIgotK30KLSsjIGVuZCBmdW5jX3RvX2hvc3RfcGF0aAotKwotKwotKyMgZnVuY19jb252ZXJ0X3BhdGhfbm9vcCBBUkcKLSsjIENvcHkgQVJHIHRvIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdC4KLStmdW5jX2NvbnZlcnRfcGF0aF9ub29wICgpCi0rewotKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKLSt9Ci0rIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfbm9vcAotKwotKwotKyMgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b193MzIgQVJHCi0rIyBDb252ZXJ0IHBhdGggQVJHIGZyb20gKG1pbmd3KSBNU1lTIHRvIChtaW5ndykgdzMyIGZvcm1hdDsgYXV0b21hdGljCi0rIyBjb252ZXJzaW9uIHRvIHczMiBpcyBub3QgYXZhaWxhYmxlIGluc2lkZSB0aGUgY3dyYXBwZXIuICBSZXR1cm5zIHJlc3VsdCBpbgotKyMgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0LgotK2Z1bmNfY29udmVydF9wYXRoX21zeXNfdG9fdzMyICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKLSsgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgotKyAgICAjIFJlbW92ZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBwYXRoIHNlcGFyYXRvciBjaGFyYWN0ZXJzIGZyb20gQVJHLiAgTVNZUwotKyAgICAjIGJlaGF2aW9yIGlzIGluY29uc2lzdGVudCBoZXJlOyBjeWdwYXRoIHR1cm5zIHRoZW0gaW50byAnLjsnIGFuZCAnOy4nOwotKyAgICAjIGFuZCB3aW5lcGF0aCBpZ25vcmVzIHRoZW0gY29tcGxldGVseS4KLSsgICAgZnVuY19zdHJpcG5hbWUgOiA6ICIkMSIKLSsgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0rICAgIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIKLSsgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzJfcmVzdWx0IgotKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayA6ICI7IiBcCi0rICAgICAgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKLSsgICAgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwICI6KiIgIio6IiAiOyIgIiQxIgotKyAgZmkKLSt9Ci0rIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b193MzIKLSsKLSsKLSsjIGZ1bmNfY29udmVydF9wYXRoX2N5Z3dpbl90b193MzIgQVJHCi0rIyBDb252ZXJ0IHBhdGggQVJHIGZyb20gQ3lnd2luIHRvIHczMiBmb3JtYXQuICBSZXR1cm5zIHJlc3VsdCBpbgotKyMgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgotK2Z1bmNfY29udmVydF9wYXRoX2N5Z3dpbl90b193MzIgKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgotKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCi0rICAgICMgU2VlIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fdzMyOgotKyAgICBmdW5jX3N0cmlwbmFtZSA6IDogIiQxIgotKyAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLSsgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PWBjeWdwYXRoIC1tIC1wICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSJgCi0rICAgIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrIDogIjsiIFwKLSsgICAgICAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgotKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgIjoqIiAiKjoiICI7IiAiJDEiCi0rICBmaQotK30KLSsjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9jeWd3aW5fdG9fdzMyCi0rCi0rCi0rIyBmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fdzMyIEFSRwotKyMgQ29udmVydCBwYXRoIEFSRyBmcm9tICpuaXggdG8gdzMyIGZvcm1hdC4gIFJlcXVpcmVzIGEgd2luZSBlbnZpcm9ubWVudCBhbmQKLSsjIGEgd29ya2luZyB3aW5lcGF0aC4gIFJldHVybnMgcmVzdWx0IGluIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KLStmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fdzMyICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKLSsgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgotKyAgICAjIFNlZSBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX3czMjoKLSsgICAgZnVuY19zdHJpcG5hbWUgOiA6ICIkMSIKLSsgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0rICAgIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzIgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIgotKyAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiRmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdCIKLSsgICAgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgOiAiOyIgXAotKyAgICAgICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCi0rICAgIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCAiOioiICIqOiIgIjsiICIkMSIKLSsgIGZpCi0rfQotKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX25peF90b193MzIKLSsKLSsKLSsjIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fY3lnd2luIEFSRwotKyMgQ29udmVydCBwYXRoIEFSRyBmcm9tIE1TWVMgdG8gQ3lnd2luIGZvcm1hdC4gIFJlcXVpcmVzIExUX0NZR1BBVEggc2V0LgotKyMgUmV0dXJucyByZXN1bHQgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgotK2Z1bmNfY29udmVydF9wYXRoX21zeXNfdG9fY3lnd2luICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKLSsgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgotKyAgICAjIFNlZSBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX3czMjoKLSsgICAgZnVuY19zdHJpcG5hbWUgOiA6ICIkMSIKLSsgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0rICAgIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIKLSsgICAgZnVuY19jeWdwYXRoIC11IC1wICIkZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzJfcmVzdWx0IgotKyAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiRmdW5jX2N5Z3BhdGhfcmVzdWx0IgotKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayA6IDogXAotKyAgICAgICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCi0rICAgIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCAiOioiICIqOiIgOiAiJDEiCi0rICBmaQotK30KLSsjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX2N5Z3dpbgotKwotKwotKyMgZnVuY19jb252ZXJ0X3BhdGhfbml4X3RvX2N5Z3dpbiBBUkcKLSsjIENvbnZlcnQgcGF0aCBBUkcgZnJvbSAqbml4IHRvIEN5Z3dpbiBmb3JtYXQuICBSZXF1aXJlcyBDeWd3aW4gaW5zdGFsbGVkIGluIGEKLSsjIGEgd2luZSBlbnZpcm9ubWVudCwgd29ya2luZyB3aW5lcGF0aCwgYW5kIExUX0NZR1BBVEggc2V0LiAgUmV0dXJucyByZXN1bHQgaW4KLSsjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KLStmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fY3lnd2luICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKLSsgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgotKyAgICAjIFJlbW92ZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBwYXRoIHNlcGFyYXRvciBjaGFyYWN0ZXJzIGZyb20KLSsgICAgIyBBUkcuIG1zeXMgYmVoYXZpb3IgaXMgaW5jb25zaXN0ZW50IGhlcmUsIGN5Z3BhdGggdHVybnMgdGhlbQotKyAgICAjIGludG8gJy47JyBhbmQgJzsuJywgYW5kIHdpbmVwYXRoIGlnbm9yZXMgdGhlbSBjb21wbGV0ZWx5LgotKyAgICBmdW5jX3N0cmlwbmFtZSA6IDogIiQxIgotKyAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLSsgICAgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMiAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiCi0rICAgIGZ1bmNfY3lncGF0aCAtdSAtcCAiJGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0IgotKyAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiRmdW5jX2N5Z3BhdGhfcmVzdWx0IgotKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayA6IDogXAotKyAgICAgICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCi0rICAgIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCAiOioiICIqOiIgOiAiJDEiCi0rICBmaQotK30KLSsjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fY3lnd2luCi0rCi0rCi0gIyBmdW5jX21vZGVfY29tcGlsZSBhcmcuLi4KLSBmdW5jX21vZGVfY29tcGlsZSAoKQotIHsKLUBAIC0xMzE0LDEyICsxOTg1LDEyIEBAIGZ1bmNfbW9kZV9jb21waWxlICgpCi0gCSAgOzsKLSAKLSAJLXBpZSB8IC1mcGllIHwgLWZQSUUpCi0tICAgICAgICAgIHBpZV9mbGFnPSIkcGllX2ZsYWcgJGFyZyIKLSsgICAgICAgICAgZnVuY19hcHBlbmQgcGllX2ZsYWcgIiAkYXJnIgotIAkgIGNvbnRpbnVlCi0gCSAgOzsKLSAKLSAJLXNoYXJlZCB8IC1zdGF0aWMgfCAtcHJlZmVyLXBpYyB8IC1wcmVmZXItbm9uLXBpYykKLS0JICBsYXRlcj0iJGxhdGVyICRhcmciCi0rCSAgZnVuY19hcHBlbmQgbGF0ZXIgIiAkYXJnIgotIAkgIGNvbnRpbnVlCi0gCSAgOzsKLSAKLUBAIC0xMzQwLDE1ICsyMDExLDE0IEBAIGZ1bmNfbW9kZV9jb21waWxlICgpCi0gCSAgc2F2ZV9pZnM9IiRJRlMiOyBJRlM9JywnCi0gCSAgZm9yIGFyZyBpbiAkYXJnczsgZG8KLSAJICAgIElGUz0iJHNhdmVfaWZzIgotLQkgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKLS0JICAgIGxhc3Rhcmc9IiRsYXN0YXJnICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSsJICAgIGZ1bmNfYXBwZW5kX3F1b3RlZCBsYXN0YXJnICIkYXJnIgotIAkgIGRvbmUKLSAJICBJRlM9IiRzYXZlX2lmcyIKLSAJICBmdW5jX3N0cmlwbmFtZSAnICcgJycgIiRsYXN0YXJnIgotIAkgIGxhc3Rhcmc9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAotIAotIAkgICMgQWRkIHRoZSBhcmd1bWVudHMgdG8gYmFzZV9jb21waWxlLgotLQkgIGJhc2VfY29tcGlsZT0iJGJhc2VfY29tcGlsZSAkbGFzdGFyZyIKLSsJICBmdW5jX2FwcGVuZCBiYXNlX2NvbXBpbGUgIiAkbGFzdGFyZyIKLSAJICBjb250aW51ZQotIAkgIDs7Ci0gCi1AQCAtMTM2NCw4ICsyMDM0LDcgQEAgZnVuY19tb2RlX2NvbXBpbGUgKCkKLSAgICAgICBlc2FjICAgICMgIGNhc2UgJGFyZ19tb2RlCi0gCi0gICAgICAgIyBBZXN0aGV0aWNhbGx5IHF1b3RlIHRoZSBwcmV2aW91cyBhcmd1bWVudC4KLS0gICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkbGFzdGFyZyIKLS0gICAgICBiYXNlX2NvbXBpbGU9IiRiYXNlX2NvbXBpbGUgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotKyAgICAgIGZ1bmNfYXBwZW5kX3F1b3RlZCBiYXNlX2NvbXBpbGUgIiRsYXN0YXJnIgotICAgICBkb25lICMgZm9yIGFyZwotIAotICAgICBjYXNlICRhcmdfbW9kZSBpbgotQEAgLTE0OTYsMTcgKzIxNjUsMTYgQEAgY29tcGlsZXIuIgotIAkkb3B0X2RyeV9ydW4gfHwgJFJNICRyZW1vdmVsaXN0Ci0gCWV4aXQgJEVYSVRfRkFJTFVSRQotICAgICAgIGZpCi0tICAgICAgcmVtb3ZlbGlzdD0iJHJlbW92ZWxpc3QgJG91dHB1dF9vYmoiCi0rICAgICAgZnVuY19hcHBlbmQgcmVtb3ZlbGlzdCAiICRvdXRwdXRfb2JqIgotICAgICAgICRFQ0hPICIkc3JjZmlsZSIgPiAiJGxvY2tmaWxlIgotICAgICBmaQotIAotICAgICAkb3B0X2RyeV9ydW4gfHwgJFJNICRyZW1vdmVsaXN0Ci0tICAgIHJlbW92ZWxpc3Q9IiRyZW1vdmVsaXN0ICRsb2NrZmlsZSIKLSsgICAgZnVuY19hcHBlbmQgcmVtb3ZlbGlzdCAiICRsb2NrZmlsZSIKLSAgICAgdHJhcCAnJG9wdF9kcnlfcnVuIHx8ICRSTSAkcmVtb3ZlbGlzdDsgZXhpdCAkRVhJVF9GQUlMVVJFJyAxIDIgMTUKLSAKLS0gICAgaWYgdGVzdCAtbiAiJGZpeF9zcmNmaWxlX3BhdGgiOyB0aGVuCi0tICAgICAgZXZhbCAic3JjZmlsZT1cIiRmaXhfc3JjZmlsZV9wYXRoXCIiCi0tICAgIGZpCi0rICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkc3JjZmlsZSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsgICAgc3JjZmlsZT0kZnVuY190b190b29sX2ZpbGVfcmVzdWx0Ci0gICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRzcmNmaWxlIgotICAgICBxc3JjZmlsZT0kZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQKLSAKLUBAIC0xNTI2LDcgKzIxOTQsNyBAQCBjb21waWxlci4iCi0gCi0gICAgICAgaWYgdGVzdCAteiAiJG91dHB1dF9vYmoiOyB0aGVuCi0gCSMgUGxhY2UgUElDIG9iamVjdHMgaW4gJG9iamRpcgotLQljb21tYW5kPSIkY29tbWFuZCAtbyAkbG9iaiIKLSsJZnVuY19hcHBlbmQgY29tbWFuZCAiIC1vICRsb2JqIgotICAgICAgIGZpCi0gCi0gICAgICAgZnVuY19zaG93X2V2YWxfbG9jYWxlICIkY29tbWFuZCIJXAotQEAgLTE1NzMsMTEgKzIyNDEsMTEgQEAgY29tcGlsZXIuIgotIAljb21tYW5kPSIkYmFzZV9jb21waWxlICRxc3JjZmlsZSAkcGljX2ZsYWciCi0gICAgICAgZmkKLSAgICAgICBpZiB0ZXN0ICIkY29tcGlsZXJfY19vIiA9IHllczsgdGhlbgotLQljb21tYW5kPSIkY29tbWFuZCAtbyAkb2JqIgotKwlmdW5jX2FwcGVuZCBjb21tYW5kICIgLW8gJG9iaiIKLSAgICAgICBmaQotIAotICAgICAgICMgU3VwcHJlc3MgY29tcGlsZXIgb3V0cHV0IGlmIHdlIGFscmVhZHkgZGlkIGEgUElDIGNvbXBpbGF0aW9uLgotLSAgICAgIGNvbW1hbmQ9IiRjb21tYW5kJHN1cHByZXNzX291dHB1dCIKLSsgICAgICBmdW5jX2FwcGVuZCBjb21tYW5kICIkc3VwcHJlc3Nfb3V0cHV0IgotICAgICAgIGZ1bmNfc2hvd19ldmFsX2xvY2FsZSAiJGNvbW1hbmQiIFwKLSAgICAgICAgICckb3B0X2RyeV9ydW4gfHwgJFJNICRyZW1vdmVsaXN0OyBleGl0ICRFWElUX0ZBSUxVUkUnCi0gCi1AQCAtMTYyMiwxMyArMjI5MCwxMyBAQCBjb21waWxlci4iCi0gfQotIAotICRvcHRfaGVscCB8fCB7Ci0tICB0ZXN0ICIkbW9kZSIgPSBjb21waWxlICYmIGZ1bmNfbW9kZV9jb21waWxlICR7MSsiJEAifQotKyAgdGVzdCAiJG9wdF9tb2RlIiA9IGNvbXBpbGUgJiYgZnVuY19tb2RlX2NvbXBpbGUgJHsxKyIkQCJ9Ci0gfQotIAotIGZ1bmNfbW9kZV9oZWxwICgpCi0gewotICAgICAjIFdlIG5lZWQgdG8gZGlzcGxheSBoZWxwIGZvciBlYWNoIG9mIHRoZSBtb2Rlcy4KLS0gICAgY2FzZSAkbW9kZSBpbgotKyAgICBjYXNlICRvcHRfbW9kZSBpbgotICAgICAgICIiKQotICAgICAgICAgIyBHZW5lcmljIGhlbHAgaXMgZXh0cmFjdGVkIGZyb20gdGhlIHVzYWdlIGNvbW1lbnRzCi0gICAgICAgICAjIGF0IHRoZSBzdGFydCBvZiB0aGlzIGZpbGUuCi1AQCAtMTY1OSw4ICsyMzI3LDggQEAgVGhpcyBtb2RlIGFjY2VwdHMgdGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIG9wdGlvbnM6Ci0gCi0gICAtbyBPVVRQVVQtRklMRSAgICBzZXQgdGhlIG91dHB1dCBmaWxlIG5hbWUgdG8gT1VUUFVULUZJTEUKLSAgIC1uby1zdXBwcmVzcyAgICAgIGRvIG5vdCBzdXBwcmVzcyBjb21waWxlciBvdXRwdXQgZm9yIG11bHRpcGxlIHBhc3NlcwotLSAgLXByZWZlci1waWMgICAgICAgdHJ5IHRvIGJ1aWxkaW5nIFBJQyBvYmplY3RzIG9ubHkKLS0gIC1wcmVmZXItbm9uLXBpYyAgIHRyeSB0byBidWlsZGluZyBub24tUElDIG9iamVjdHMgb25seQotKyAgLXByZWZlci1waWMgICAgICAgdHJ5IHRvIGJ1aWxkIFBJQyBvYmplY3RzIG9ubHkKLSsgIC1wcmVmZXItbm9uLXBpYyAgIHRyeSB0byBidWlsZCBub24tUElDIG9iamVjdHMgb25seQotICAgLXNoYXJlZCAgICAgICAgICAgZG8gbm90IGJ1aWxkIGEgXGAubycgZmlsZSBzdWl0YWJsZSBmb3Igc3RhdGljIGxpbmtpbmcKLSAgIC1zdGF0aWMgICAgICAgICAgIG9ubHkgYnVpbGQgYSBcYC5vJyBmaWxlIHN1aXRhYmxlIGZvciBzdGF0aWMgbGlua2luZwotICAgLVdjLEZMQUcgICAgICAgICAgcGFzcyBGTEFHIGRpcmVjdGx5IHRvIHRoZSBjb21waWxlcgotQEAgLTE4MDQsNyArMjQ3Miw3IEBAIE90aGVyd2lzZSwgb25seSBGSUxFIGl0c2VsZiBpcyBkZWxldGVkIHVzaW5nIFJNLiIKLSAgICAgICAgIDs7Ci0gCi0gICAgICAgKikKLS0gICAgICAgIGZ1bmNfZmF0YWxfaGVscCAiaW52YWxpZCBvcGVyYXRpb24gbW9kZSBcYCRtb2RlJyIKLSsgICAgICAgIGZ1bmNfZmF0YWxfaGVscCAiaW52YWxpZCBvcGVyYXRpb24gbW9kZSBcYCRvcHRfbW9kZSciCi0gICAgICAgICA7OwotICAgICBlc2FjCi0gCi1AQCAtMTgxOSwxMyArMjQ4NywxMyBAQCBpZiAkb3B0X2hlbHA7IHRoZW4KLSAgIGVsc2UKLSAgICAgewotICAgICAgIGZ1bmNfaGVscCBub2V4aXQKLS0gICAgICBmb3IgbW9kZSBpbiBjb21waWxlIGxpbmsgZXhlY3V0ZSBpbnN0YWxsIGZpbmlzaCB1bmluc3RhbGwgY2xlYW47IGRvCi0rICAgICAgZm9yIG9wdF9tb2RlIGluIGNvbXBpbGUgbGluayBleGVjdXRlIGluc3RhbGwgZmluaXNoIHVuaW5zdGFsbCBjbGVhbjsgZG8KLSAJZnVuY19tb2RlX2hlbHAKLSAgICAgICBkb25lCi0gICAgIH0gfCBzZWQgLW4gJzFwOyAyLCRzL15Vc2FnZTovICBvcjogL3AnCi0gICAgIHsKLSAgICAgICBmdW5jX2hlbHAgbm9leGl0Ci0tICAgICAgZm9yIG1vZGUgaW4gY29tcGlsZSBsaW5rIGV4ZWN1dGUgaW5zdGFsbCBmaW5pc2ggdW5pbnN0YWxsIGNsZWFuOyBkbwotKyAgICAgIGZvciBvcHRfbW9kZSBpbiBjb21waWxlIGxpbmsgZXhlY3V0ZSBpbnN0YWxsIGZpbmlzaCB1bmluc3RhbGwgY2xlYW47IGRvCi0gCWVjaG8KLSAJZnVuY19tb2RlX2hlbHAKLSAgICAgICBkb25lCi1AQCAtMTg1NCwxMyArMjUyMiwxNiBAQCBmdW5jX21vZGVfZXhlY3V0ZSAoKQotICAgICAgIGZ1bmNfZmF0YWxfaGVscCAieW91IG11c3Qgc3BlY2lmeSBhIENPTU1BTkQiCi0gCi0gICAgICMgSGFuZGxlIC1kbG9wZW4gZmxhZ3MgaW1tZWRpYXRlbHkuCi0tICAgIGZvciBmaWxlIGluICRleGVjdXRlX2RsZmlsZXM7IGRvCi0rICAgIGZvciBmaWxlIGluICRvcHRfZGxvcGVuOyBkbwotICAgICAgIHRlc3QgLWYgIiRmaWxlIiBcCi0gCXx8IGZ1bmNfZmF0YWxfaGVscCAiXGAkZmlsZScgaXMgbm90IGEgZmlsZSIKLSAKLSAgICAgICBkaXI9Ci0gICAgICAgY2FzZSAkZmlsZSBpbgotICAgICAgICoubGEpCi0rCWZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZmlsZSIKLSsJZmlsZT0kZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0Ci0rCi0gCSMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhpcyByZWFsbHkgaXMgYSBsaWJ0b29sIGFyY2hpdmUuCi0gCWZ1bmNfbGFsaWJfdW5zYWZlX3AgIiRmaWxlIiBcCi0gCSAgfHwgZnVuY19mYXRhbF9oZWxwICJcYCRsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKLUBAIC0xODgyLDcgKzI1NTMsNyBAQCBmdW5jX21vZGVfZXhlY3V0ZSAoKQotIAlkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgotIAotIAlpZiB0ZXN0IC1mICIkZGlyLyRvYmpkaXIvJGRsbmFtZSI7IHRoZW4KLS0JICBkaXI9IiRkaXIvJG9iamRpciIKLSsJICBmdW5jX2FwcGVuZCBkaXIgIi8kb2JqZGlyIgotIAllbHNlCi0gCSAgaWYgdGVzdCAhIC1mICIkZGlyLyRkbG5hbWUiOyB0aGVuCi0gCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgZmluZCBcYCRkbG5hbWUnIGluIFxgJGRpcicgb3IgXGAkZGlyLyRvYmpkaXInIgotQEAgLTE5MDcsMTAgKzI1NzgsMTAgQEAgZnVuY19tb2RlX2V4ZWN1dGUgKCkKLSAgICAgICB0ZXN0IC1uICIkYWJzZGlyIiAmJiBkaXI9IiRhYnNkaXIiCi0gCi0gICAgICAgIyBOb3cgYWRkIHRoZSBkaXJlY3RvcnkgdG8gc2hsaWJwYXRoX3Zhci4KLS0gICAgICBpZiBldmFsIHRlc3QgLXogXCJcJCRzaGxpYnBhdGhfdmFyXCI7IHRoZW4KLS0JZXZhbCAkc2hsaWJwYXRoX3Zhcj1cJGRpcgotKyAgICAgIGlmIGV2YWwgInRlc3QgLXogXCJcJCRzaGxpYnBhdGhfdmFyXCIiOyB0aGVuCi0rCWV2YWwgIiRzaGxpYnBhdGhfdmFyPVwiXCRkaXJcIiIKLSAgICAgICBlbHNlCi0tCWV2YWwgJHNobGlicGF0aF92YXI9XCRkaXI6XCQkc2hsaWJwYXRoX3ZhcgotKwlldmFsICIkc2hsaWJwYXRoX3Zhcj1cIlwkZGlyOlwkJHNobGlicGF0aF92YXJcIiIKLSAgICAgICBmaQotICAgICBkb25lCi0gCi1AQCAtMTkzOSw4ICsyNjEwLDcgQEAgZnVuY19tb2RlX2V4ZWN1dGUgKCkKLSAJOzsKLSAgICAgICBlc2FjCi0gICAgICAgIyBRdW90ZSBhcmd1bWVudHMgKHRvIHByZXNlcnZlIHNoZWxsIG1ldGFjaGFyYWN0ZXJzKS4KLS0gICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkZmlsZSIKLS0gICAgICBhcmdzPSIkYXJncyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0rICAgICAgZnVuY19hcHBlbmRfcXVvdGVkIGFyZ3MgIiRmaWxlIgotICAgICBkb25lCi0gCi0gICAgIGlmIHRlc3QgIlgkb3B0X2RyeV9ydW4iID0gWGZhbHNlOyB0aGVuCi1AQCAtMTk3MiwyMiArMjY0Miw1OSBAQCBmdW5jX21vZGVfZXhlY3V0ZSAoKQotICAgICBmaQotIH0KLSAKLS10ZXN0ICIkbW9kZSIgPSBleGVjdXRlICYmIGZ1bmNfbW9kZV9leGVjdXRlICR7MSsiJEAifQotK3Rlc3QgIiRvcHRfbW9kZSIgPSBleGVjdXRlICYmIGZ1bmNfbW9kZV9leGVjdXRlICR7MSsiJEAifQotIAotIAotICMgZnVuY19tb2RlX2ZpbmlzaCBhcmcuLi4KLSBmdW5jX21vZGVfZmluaXNoICgpCi0gewotICAgICAkb3B0X2RlYnVnCi0tICAgIGxpYmRpcnM9IiRub25vcHQiCi0rICAgIGxpYnM9Ci0rICAgIGxpYmRpcnM9Ci0gICAgIGFkbWluY21kcz0KLSAKLS0gICAgaWYgdGVzdCAtbiAiJGZpbmlzaF9jbWRzJGZpbmlzaF9ldmFsIiAmJiB0ZXN0IC1uICIkbGliZGlycyI7IHRoZW4KLS0gICAgICBmb3IgZGlyCi0tICAgICAgZG8KLS0JbGliZGlycz0iJGxpYmRpcnMgJGRpciIKLS0gICAgICBkb25lCi0rICAgIGZvciBvcHQgaW4gIiRub25vcHQiICR7MSsiJEAifQotKyAgICBkbwotKyAgICAgIGlmIHRlc3QgLWQgIiRvcHQiOyB0aGVuCi0rCWZ1bmNfYXBwZW5kIGxpYmRpcnMgIiAkb3B0IgotIAotKyAgICAgIGVsaWYgdGVzdCAtZiAiJG9wdCI7IHRoZW4KLSsJaWYgZnVuY19sYWxpYl91bnNhZmVfcCAiJG9wdCI7IHRoZW4KLSsJICBmdW5jX2FwcGVuZCBsaWJzICIgJG9wdCIKLSsJZWxzZQotKwkgIGZ1bmNfd2FybmluZyAiXGAkb3B0JyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCi0rCWZpCi0rCi0rICAgICAgZWxzZQotKwlmdW5jX2ZhdGFsX2Vycm9yICJpbnZhbGlkIGFyZ3VtZW50IFxgJG9wdCciCi0rICAgICAgZmkKLSsgICAgZG9uZQotKwotKyAgICBpZiB0ZXN0IC1uICIkbGlicyI7IHRoZW4KLSsgICAgICBpZiB0ZXN0IC1uICIkbHRfc3lzcm9vdCI7IHRoZW4KLSsgICAgICAgIHN5c3Jvb3RfcmVnZXg9YCRFQ0hPICIkbHRfc3lzcm9vdCIgfCAkU0VEICIkc2VkX21ha2VfbGl0ZXJhbF9yZWdleCJgCi0rICAgICAgICBzeXNyb290X2NtZD0icy9cKFsgJ11cKSRzeXNyb290X3JlZ2V4L1wxL2c7IgotKyAgICAgIGVsc2UKLSsgICAgICAgIHN5c3Jvb3RfY21kPQotKyAgICAgIGZpCi0rCi0rICAgICAgIyBSZW1vdmUgc3lzcm9vdCByZWZlcmVuY2VzCi0rICAgICAgaWYgJG9wdF9kcnlfcnVuOyB0aGVuCi0rICAgICAgICBmb3IgbGliIGluICRsaWJzOyBkbwotKyAgICAgICAgICBlY2hvICJyZW1vdmluZyByZWZlcmVuY2VzIHRvICRsdF9zeXNyb290IGFuZCBcYD0nIHByZWZpeGVzIGZyb20gJGxpYiIKLSsgICAgICAgIGRvbmUKLSsgICAgICBlbHNlCi0rICAgICAgICB0bXBkaXI9YGZ1bmNfbWt0ZW1wZGlyYAotKyAgICAgICAgZm9yIGxpYiBpbiAkbGliczsgZG8KLSsJICBzZWQgLWUgIiR7c3lzcm9vdF9jbWR9IHMvXChbICddLVtMUl1cKT0vXDEvZzsgcy9cKFsgJ11cKT0vXDEvZyIgJGxpYiBcCi0rCSAgICA+ICR0bXBkaXIvdG1wLWxhCi0rCSAgbXYgLWYgJHRtcGRpci90bXAtbGEgJGxpYgotKwlkb25lCi0rICAgICAgICAke1JNfXIgIiR0bXBkaXIiCi0rICAgICAgZmkKLSsgICAgZmkKLSsKLSsgICAgaWYgdGVzdCAtbiAiJGZpbmlzaF9jbWRzJGZpbmlzaF9ldmFsIiAmJiB0ZXN0IC1uICIkbGliZGlycyI7IHRoZW4KLSAgICAgICBmb3IgbGliZGlyIGluICRsaWJkaXJzOyBkbwotIAlpZiB0ZXN0IC1uICIkZmluaXNoX2NtZHMiOyB0aGVuCi0gCSAgIyBEbyBlYWNoIGNvbW1hbmQgaW4gdGhlIGZpbmlzaCBjb21tYW5kcy4KLUBAIC0xOTk3LDcgKzI3MDQsNyBAQCBmdW5jX21vZGVfZmluaXNoICgpCi0gCWlmIHRlc3QgLW4gIiRmaW5pc2hfZXZhbCI7IHRoZW4KLSAJICAjIERvIHRoZSBzaW5nbGUgZmluaXNoX2V2YWwuCi0gCSAgZXZhbCBjbWRzPVwiJGZpbmlzaF9ldmFsXCIKLS0JICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAiJGNtZHMiIHx8IGFkbWluY21kcz0iJGFkbWluY21kcwotKwkgICRvcHRfZHJ5X3J1biB8fCBldmFsICIkY21kcyIgfHwgZnVuY19hcHBlbmQgYWRtaW5jbWRzICIKLSAgICAgICAgJGNtZHMiCi0gCWZpCi0gICAgICAgZG9uZQotQEAgLTIwMDYsNTMgKzI3MTMsNTUgQEAgZnVuY19tb2RlX2ZpbmlzaCAoKQotICAgICAjIEV4aXQgaGVyZSBpZiB0aGV5IHdhbnRlZCBzaWxlbnQgbW9kZS4KLSAgICAgJG9wdF9zaWxlbnQgJiYgZXhpdCAkRVhJVF9TVUNDRVNTCi0gCi0tICAgIGVjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCi0tICAgIGVjaG8gIkxpYnJhcmllcyBoYXZlIGJlZW4gaW5zdGFsbGVkIGluOiIKLS0gICAgZm9yIGxpYmRpciBpbiAkbGliZGlyczsgZG8KLS0gICAgICAkRUNITyAiICAgJGxpYmRpciIKLS0gICAgZG9uZQotLSAgICBlY2hvCi0tICAgIGVjaG8gIklmIHlvdSBldmVyIGhhcHBlbiB0byB3YW50IHRvIGxpbmsgYWdhaW5zdCBpbnN0YWxsZWQgbGlicmFyaWVzIgotLSAgICBlY2hvICJpbiBhIGdpdmVuIGRpcmVjdG9yeSwgTElCRElSLCB5b3UgbXVzdCBlaXRoZXIgdXNlIGxpYnRvb2wsIGFuZCIKLS0gICAgZWNobyAic3BlY2lmeSB0aGUgZnVsbCBwYXRobmFtZSBvZiB0aGUgbGlicmFyeSwgb3IgdXNlIHRoZSBcYC1MTElCRElSJyIKLS0gICAgZWNobyAiZmxhZyBkdXJpbmcgbGlua2luZyBhbmQgZG8gYXQgbGVhc3Qgb25lIG9mIHRoZSBmb2xsb3dpbmc6IgotLSAgICBpZiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciI7IHRoZW4KLS0gICAgICBlY2hvICIgICAtIGFkZCBMSUJESVIgdG8gdGhlIFxgJHNobGlicGF0aF92YXInIGVudmlyb25tZW50IHZhcmlhYmxlIgotLSAgICAgIGVjaG8gIiAgICAgZHVyaW5nIGV4ZWN1dGlvbiIKLS0gICAgZmkKLS0gICAgaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgotLSAgICAgIGVjaG8gIiAgIC0gYWRkIExJQkRJUiB0byB0aGUgXGAkcnVucGF0aF92YXInIGVudmlyb25tZW50IHZhcmlhYmxlIgotLSAgICAgIGVjaG8gIiAgICAgZHVyaW5nIGxpbmtpbmciCi0tICAgIGZpCi0tICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIjsgdGhlbgotLSAgICAgIGxpYmRpcj1MSUJESVIKLS0gICAgICBldmFsICJmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIiIKLSsgICAgaWYgdGVzdCAtbiAiJGZpbmlzaF9jbWRzJGZpbmlzaF9ldmFsIiAmJiB0ZXN0IC1uICIkbGliZGlycyI7IHRoZW4KLSsgICAgICBlY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIgotKyAgICAgIGVjaG8gIkxpYnJhcmllcyBoYXZlIGJlZW4gaW5zdGFsbGVkIGluOiIKLSsgICAgICBmb3IgbGliZGlyIGluICRsaWJkaXJzOyBkbwotKwkkRUNITyAiICAgJGxpYmRpciIKLSsgICAgICBkb25lCi0rICAgICAgZWNobwotKyAgICAgIGVjaG8gIklmIHlvdSBldmVyIGhhcHBlbiB0byB3YW50IHRvIGxpbmsgYWdhaW5zdCBpbnN0YWxsZWQgbGlicmFyaWVzIgotKyAgICAgIGVjaG8gImluIGEgZ2l2ZW4gZGlyZWN0b3J5LCBMSUJESVIsIHlvdSBtdXN0IGVpdGhlciB1c2UgbGlidG9vbCwgYW5kIgotKyAgICAgIGVjaG8gInNwZWNpZnkgdGhlIGZ1bGwgcGF0aG5hbWUgb2YgdGhlIGxpYnJhcnksIG9yIHVzZSB0aGUgXGAtTExJQkRJUiciCi0rICAgICAgZWNobyAiZmxhZyBkdXJpbmcgbGlua2luZyBhbmQgZG8gYXQgbGVhc3Qgb25lIG9mIHRoZSBmb2xsb3dpbmc6IgotKyAgICAgIGlmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIjsgdGhlbgotKwllY2hvICIgICAtIGFkZCBMSUJESVIgdG8gdGhlIFxgJHNobGlicGF0aF92YXInIGVudmlyb25tZW50IHZhcmlhYmxlIgotKwllY2hvICIgICAgIGR1cmluZyBleGVjdXRpb24iCi0rICAgICAgZmkKLSsgICAgICBpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCi0rCWVjaG8gIiAgIC0gYWRkIExJQkRJUiB0byB0aGUgXGAkcnVucGF0aF92YXInIGVudmlyb25tZW50IHZhcmlhYmxlIgotKwllY2hvICIgICAgIGR1cmluZyBsaW5raW5nIgotKyAgICAgIGZpCi0rICAgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiOyB0aGVuCi0rCWxpYmRpcj1MSUJESVIKLSsJZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgotIAotLSAgICAgICRFQ0hPICIgICAtIHVzZSB0aGUgXGAkZmxhZycgbGlua2VyIGZsYWciCi0tICAgIGZpCi0tICAgIGlmIHRlc3QgLW4gIiRhZG1pbmNtZHMiOyB0aGVuCi0tICAgICAgJEVDSE8gIiAgIC0gaGF2ZSB5b3VyIHN5c3RlbSBhZG1pbmlzdHJhdG9yIHJ1biB0aGVzZSBjb21tYW5kczokYWRtaW5jbWRzIgotLSAgICBmaQotLSAgICBpZiB0ZXN0IC1mIC9ldGMvbGQuc28uY29uZjsgdGhlbgotLSAgICAgIGVjaG8gIiAgIC0gaGF2ZSB5b3VyIHN5c3RlbSBhZG1pbmlzdHJhdG9yIGFkZCBMSUJESVIgdG8gXGAvZXRjL2xkLnNvLmNvbmYnIgotLSAgICBmaQotLSAgICBlY2hvCi0rCSRFQ0hPICIgICAtIHVzZSB0aGUgXGAkZmxhZycgbGlua2VyIGZsYWciCi0rICAgICAgZmkKLSsgICAgICBpZiB0ZXN0IC1uICIkYWRtaW5jbWRzIjsgdGhlbgotKwkkRUNITyAiICAgLSBoYXZlIHlvdXIgc3lzdGVtIGFkbWluaXN0cmF0b3IgcnVuIHRoZXNlIGNvbW1hbmRzOiRhZG1pbmNtZHMiCi0rICAgICAgZmkKLSsgICAgICBpZiB0ZXN0IC1mIC9ldGMvbGQuc28uY29uZjsgdGhlbgotKwllY2hvICIgICAtIGhhdmUgeW91ciBzeXN0ZW0gYWRtaW5pc3RyYXRvciBhZGQgTElCRElSIHRvIFxgL2V0Yy9sZC5zby5jb25mJyIKLSsgICAgICBmaQotKyAgICAgIGVjaG8KLSAKLS0gICAgZWNobyAiU2VlIGFueSBvcGVyYXRpbmcgc3lzdGVtIGRvY3VtZW50YXRpb24gYWJvdXQgc2hhcmVkIGxpYnJhcmllcyBmb3IiCi0tICAgIGNhc2UgJGhvc3QgaW4KLS0gICAgICBzb2xhcmlzMi5bNjc4OV18c29sYXJpczIuMVswLTldKQotLSAgICAgICAgZWNobyAibW9yZSBpbmZvcm1hdGlvbiwgc3VjaCBhcyB0aGUgbGQoMSksIGNybGUoMSkgYW5kIGxkLnNvKDgpIG1hbnVhbCIKLS0JZWNobyAicGFnZXMuIgotLQk7OwotLSAgICAgICopCi0tICAgICAgICBlY2hvICJtb3JlIGluZm9ybWF0aW9uLCBzdWNoIGFzIHRoZSBsZCgxKSBhbmQgbGQuc28oOCkgbWFudWFsIHBhZ2VzLiIKLS0gICAgICAgIDs7Ci0tICAgIGVzYWMKLS0gICAgZWNobyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKLSsgICAgICBlY2hvICJTZWUgYW55IG9wZXJhdGluZyBzeXN0ZW0gZG9jdW1lbnRhdGlvbiBhYm91dCBzaGFyZWQgbGlicmFyaWVzIGZvciIKLSsgICAgICBjYXNlICRob3N0IGluCi0rCXNvbGFyaXMyLls2Nzg5XXxzb2xhcmlzMi4xWzAtOV0pCi0rCSAgZWNobyAibW9yZSBpbmZvcm1hdGlvbiwgc3VjaCBhcyB0aGUgbGQoMSksIGNybGUoMSkgYW5kIGxkLnNvKDgpIG1hbnVhbCIKLSsJICBlY2hvICJwYWdlcy4iCi0rCSAgOzsKLSsJKikKLSsJICBlY2hvICJtb3JlIGluZm9ybWF0aW9uLCBzdWNoIGFzIHRoZSBsZCgxKSBhbmQgbGQuc28oOCkgbWFudWFsIHBhZ2VzLiIKLSsJICA7OwotKyAgICAgIGVzYWMKLSsgICAgICBlY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIgotKyAgICBmaQotICAgICBleGl0ICRFWElUX1NVQ0NFU1MKLSB9Ci0gCi0tdGVzdCAiJG1vZGUiID0gZmluaXNoICYmIGZ1bmNfbW9kZV9maW5pc2ggJHsxKyIkQCJ9Ci0rdGVzdCAiJG9wdF9tb2RlIiA9IGZpbmlzaCAmJiBmdW5jX21vZGVfZmluaXNoICR7MSsiJEAifQotIAotIAotICMgZnVuY19tb2RlX2luc3RhbGwgYXJnLi4uCi1AQCAtMjA3Nyw3ICsyNzg2LDcgQEAgZnVuY19tb2RlX2luc3RhbGwgKCkKLSAgICAgIyBUaGUgcmVhbCBmaXJzdCBhcmd1bWVudCBzaG91bGQgYmUgdGhlIG5hbWUgb2YgdGhlIGluc3RhbGxhdGlvbiBwcm9ncmFtLgotICAgICAjIEFlc3RoZXRpY2FsbHkgcXVvdGUgaXQuCi0gICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCi0tICAgIGluc3RhbGxfcHJvZz0iJGluc3RhbGxfcHJvZyRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSsgICAgZnVuY19hcHBlbmQgaW5zdGFsbF9wcm9nICIkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0gICAgIGluc3RhbGxfc2hhcmVkX3Byb2c9JGluc3RhbGxfcHJvZwotICAgICBjYXNlICIgJGluc3RhbGxfcHJvZyAiIGluCi0gICAgICAgKltcXFwgL11jcFwgKikgaW5zdGFsbF9jcD06IDs7Ci1AQCAtMjA5Nyw3ICsyODA2LDcgQEAgZnVuY19tb2RlX2luc3RhbGwgKCkKLSAgICAgZG8KLSAgICAgICBhcmcyPQotICAgICAgIGlmIHRlc3QgLW4gIiRkZXN0IjsgdGhlbgotLQlmaWxlcz0iJGZpbGVzICRkZXN0IgotKwlmdW5jX2FwcGVuZCBmaWxlcyAiICRkZXN0IgotIAlkZXN0PSRhcmcKLSAJY29udGludWUKLSAgICAgICBmaQotQEAgLTIxMzUsMTEgKzI4NDQsMTEgQEAgZnVuY19tb2RlX2luc3RhbGwgKCkKLSAKLSAgICAgICAjIEFlc3RoZXRpY2FsbHkgcXVvdGUgdGhlIGFyZ3VtZW50LgotICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCi0tICAgICAgaW5zdGFsbF9wcm9nPSIkaW5zdGFsbF9wcm9nICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSsgICAgICBmdW5jX2FwcGVuZCBpbnN0YWxsX3Byb2cgIiAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0gICAgICAgaWYgdGVzdCAtbiAiJGFyZzIiOyB0aGVuCi0gCWZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmcyIgotICAgICAgIGZpCi0tICAgICAgaW5zdGFsbF9zaGFyZWRfcHJvZz0iJGluc3RhbGxfc2hhcmVkX3Byb2cgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotKyAgICAgIGZ1bmNfYXBwZW5kIGluc3RhbGxfc2hhcmVkX3Byb2cgIiAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0gICAgIGRvbmUKLSAKLSAgICAgdGVzdCAteiAiJGluc3RhbGxfcHJvZyIgJiYgXAotQEAgLTIxNTEsNyArMjg2MCw3IEBAIGZ1bmNfbW9kZV9pbnN0YWxsICgpCi0gICAgIGlmIHRlc3QgLW4gIiRpbnN0YWxsX292ZXJyaWRlX21vZGUiICYmICRub19tb2RlOyB0aGVuCi0gICAgICAgaWYgJGluc3RhbGxfY3A7IHRoZW4gOjsgZWxzZQotIAlmdW5jX3F1b3RlX2Zvcl9ldmFsICIkaW5zdGFsbF9vdmVycmlkZV9tb2RlIgotLQlpbnN0YWxsX3NoYXJlZF9wcm9nPSIkaW5zdGFsbF9zaGFyZWRfcHJvZyAtbSAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0rCWZ1bmNfYXBwZW5kIGluc3RhbGxfc2hhcmVkX3Byb2cgIiAtbSAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0gICAgICAgZmkKLSAgICAgZmkKLSAKLUBAIC0yMjA5LDEwICsyOTE4LDEzIEBAIGZ1bmNfbW9kZV9pbnN0YWxsICgpCi0gICAgICAgY2FzZSAkZmlsZSBpbgotICAgICAgICouJGxpYmV4dCkKLSAJIyBEbyB0aGUgc3RhdGljIGxpYnJhcmllcyBsYXRlci4KLS0Jc3RhdGljbGlicz0iJHN0YXRpY2xpYnMgJGZpbGUiCi0rCWZ1bmNfYXBwZW5kIHN0YXRpY2xpYnMgIiAkZmlsZSIKLSAJOzsKLSAKLSAgICAgICAqLmxhKQotKwlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZpbGUiCi0rCWZpbGU9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAotKwotIAkjIENoZWNrIHRvIHNlZSB0aGF0IHRoaXMgcmVhbGx5IGlzIGEgbGlidG9vbCBhcmNoaXZlLgotIAlmdW5jX2xhbGliX3Vuc2FmZV9wICIkZmlsZSIgXAotIAkgIHx8IGZ1bmNfZmF0YWxfaGVscCAiXGAkZmlsZScgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgotQEAgLTIyMjYsMjMgKzI5MzgsMzAgQEAgZnVuY19tb2RlX2luc3RhbGwgKCkKLSAJaWYgdGVzdCAiWCRkZXN0ZGlyIiA9ICJYJGxpYmRpciI7IHRoZW4KLSAJICBjYXNlICIkY3VycmVudF9saWJkaXJzICIgaW4KLSAJICAqIiAkbGliZGlyICIqKSA7OwotLQkgICopIGN1cnJlbnRfbGliZGlycz0iJGN1cnJlbnRfbGliZGlycyAkbGliZGlyIiA7OwotKwkgICopIGZ1bmNfYXBwZW5kIGN1cnJlbnRfbGliZGlycyAiICRsaWJkaXIiIDs7Ci0gCSAgZXNhYwotIAllbHNlCi0gCSAgIyBOb3RlIHRoZSBsaWJkaXIgYXMgYSBmdXR1cmUgbGliZGlyLgotIAkgIGNhc2UgIiRmdXR1cmVfbGliZGlycyAiIGluCi0gCSAgKiIgJGxpYmRpciAiKikgOzsKLS0JICAqKSBmdXR1cmVfbGliZGlycz0iJGZ1dHVyZV9saWJkaXJzICRsaWJkaXIiIDs7Ci0rCSAgKikgZnVuY19hcHBlbmQgZnV0dXJlX2xpYmRpcnMgIiAkbGliZGlyIiA7OwotIAkgIGVzYWMKLSAJZmkKLSAKLSAJZnVuY19kaXJuYW1lICIkZmlsZSIgIi8iICIiCi0gCWRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCi0tCWRpcj0iJGRpciRvYmpkaXIiCi0rCWZ1bmNfYXBwZW5kIGRpciAiJG9iamRpciIKLSAKLSAJaWYgdGVzdCAtbiAiJHJlbGlua19jb21tYW5kIjsgdGhlbgotKyAgICAgICMgU3RyaXAgYW55IHRyYWlsaW5nIHNsYXNoIGZyb20gdGhlIGRlc3RpbmF0aW9uLgotKyAgICAgIGZ1bmNfc3RyaXBuYW1lICcnICcvJyAiJGxpYmRpciIKLSsgICAgICBkZXN0bGliZGlyPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLSsKLSsgICAgICBmdW5jX3N0cmlwbmFtZSAnJyAnLycgIiRkZXN0ZGlyIgotKyAgICAgIHNfZGVzdGRpcj0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0rCi0gCSAgIyBEZXRlcm1pbmUgdGhlIHByZWZpeCB0aGUgdXNlciBoYXMgYXBwbGllZCB0byBvdXIgZnV0dXJlIGRpci4KLS0JICBpbnN0X3ByZWZpeF9kaXI9YCRFQ0hPICIkZGVzdGRpciIgfCAkU0VEIC1lICJzJSRsaWJkaXJcJCUlImAKLSsJICBpbnN0X3ByZWZpeF9kaXI9YCRFQ0hPICJYJHNfZGVzdGRpciIgfCAkWHNlZCAtZSAicyUkZGVzdGxpYmRpclwkJSUiYAotIAotIAkgICMgRG9uJ3QgYWxsb3cgdGhlIHVzZXIgdG8gcGxhY2UgdXMgb3V0c2lkZSBvZiBvdXIgZXhwZWN0ZWQKLSAJICAjIGxvY2F0aW9uIGIvYyB0aGlzIHByZXZlbnRzIGZpbmRpbmcgZGVwZW5kZW50IGxpYnJhcmllcyB0aGF0Ci1AQCAtMjMxNSw3ICszMDM0LDcgQEAgZnVuY19tb2RlX2luc3RhbGwgKCkKLSAJZnVuY19zaG93X2V2YWwgIiRpbnN0YWxsX3Byb2cgJGluc3RuYW1lICRkZXN0ZGlyLyRuYW1lIiAnZXhpdCAkPycKLSAKLSAJIyBNYXliZSBpbnN0YWxsIHRoZSBzdGF0aWMgbGlicmFyeSwgdG9vLgotLQl0ZXN0IC1uICIkb2xkX2xpYnJhcnkiICYmIHN0YXRpY2xpYnM9IiRzdGF0aWNsaWJzICRkaXIvJG9sZF9saWJyYXJ5IgotKwl0ZXN0IC1uICIkb2xkX2xpYnJhcnkiICYmIGZ1bmNfYXBwZW5kIHN0YXRpY2xpYnMgIiAkZGlyLyRvbGRfbGlicmFyeSIKLSAJOzsKLSAKLSAgICAgICAqLmxvKQotQEAgLTI1MDMsNyArMzIyMiw3IEBAIGZ1bmNfbW9kZV9pbnN0YWxsICgpCi0gICAgIHRlc3QgLW4gIiRmdXR1cmVfbGliZGlycyIgJiYgXAotICAgICAgIGZ1bmNfd2FybmluZyAicmVtZW1iZXIgdG8gcnVuIFxgJHByb2duYW1lIC0tZmluaXNoJGZ1dHVyZV9saWJkaXJzJyIKLSAKLS0gICAgaWYgdGVzdCAtbiAiJGN1cnJlbnRfbGliZGlycyIgJiYgJG9wdF9maW5pc2g7IHRoZW4KLSsgICAgaWYgdGVzdCAtbiAiJGN1cnJlbnRfbGliZGlycyI7IHRoZW4KLSAgICAgICAjIE1heWJlIGp1c3QgZG8gYSBkcnkgcnVuLgotICAgICAgICRvcHRfZHJ5X3J1biAmJiBjdXJyZW50X2xpYmRpcnM9IiAtbiRjdXJyZW50X2xpYmRpcnMiCi0gICAgICAgZXhlY19jbWQ9JyRTSEVMTCAkcHJvZ3BhdGggJHByZXNlcnZlX2FyZ3MgLS1maW5pc2gkY3VycmVudF9saWJkaXJzJwotQEAgLTI1MTIsNyArMzIzMSw3IEBAIGZ1bmNfbW9kZV9pbnN0YWxsICgpCi0gICAgIGZpCi0gfQotIAotLXRlc3QgIiRtb2RlIiA9IGluc3RhbGwgJiYgZnVuY19tb2RlX2luc3RhbGwgJHsxKyIkQCJ9Ci0rdGVzdCAiJG9wdF9tb2RlIiA9IGluc3RhbGwgJiYgZnVuY19tb2RlX2luc3RhbGwgJHsxKyIkQCJ9Ci0gCi0gCi0gIyBmdW5jX2dlbmVyYXRlX2Rsc3ltcyBvdXRwdXRuYW1lIG9yaWdpbmF0b3IgcGljX3AKLUBAIC0yNTU5LDYgKzMyNzgsMTggQEAgZXh0ZXJuIFwiQ1wiIHsKLSAjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgXCItV3N0cmljdC1wcm90b3R5cGVzXCIKLSAjZW5kaWYKLSAKLSsvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KLSsjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQotKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQotKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVAotKyNlbGlmIGRlZmluZWQoX19vc2ZfXykKLSsvKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhLiAgKi8KLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVAotKyNlbHNlCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QgY29uc3QKLSsjZW5kaWYKLSsKLSAvKiBFeHRlcm5hbCBzeW1ib2wgZGVjbGFyYXRpb25zIGZvciB0aGUgY29tcGlsZXIuICovXAotICIKLSAKLUBAIC0yNTcwLDIxICszMzAxLDIyIEBAIGV4dGVybiBcIkNcIiB7Ci0gCSAgIyBBZGQgb3VyIG93biBwcm9ncmFtIG9iamVjdHMgdG8gdGhlIHN5bWJvbCBsaXN0LgotIAkgIHByb2dmaWxlcz1gJEVDSE8gIiRvYmpzJG9sZF9kZXBsaWJzIiB8ICRTUDJOTCB8ICRTRUQgIiRsbzJvIiB8ICROTDJTUGAKLSAJICBmb3IgcHJvZ2ZpbGUgaW4gJHByb2dmaWxlczsgZG8KLS0JICAgIGZ1bmNfdmVyYm9zZSAiZXh0cmFjdGluZyBnbG9iYWwgQyBzeW1ib2xzIGZyb20gXGAkcHJvZ2ZpbGUnIgotLQkgICAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgIiROTSAkcHJvZ2ZpbGUgfCAkZ2xvYmFsX3N5bWJvbF9waXBlID4+ICckbmxpc3QnIgotKwkgICAgZnVuY190b190b29sX2ZpbGUgIiRwcm9nZmlsZSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsJICAgIGZ1bmNfdmVyYm9zZSAiZXh0cmFjdGluZyBnbG9iYWwgQyBzeW1ib2xzIGZyb20gXGAkZnVuY190b190b29sX2ZpbGVfcmVzdWx0JyIKLSsJICAgICRvcHRfZHJ5X3J1biB8fCBldmFsICIkTk0gJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgPj4gJyRubGlzdCciCi0gCSAgZG9uZQotIAotIAkgIGlmIHRlc3QgLW4gIiRleGNsdWRlX2V4cHN5bXMiOyB0aGVuCi0gCSAgICAkb3B0X2RyeV9ydW4gfHwgewotLQkgICAgICAkRUdSRVAgLXYgIiAoJGV4Y2x1ZGVfZXhwc3ltcykkIiAiJG5saXN0IiA+ICIkbmxpc3QiVAotLQkgICAgICAkTVYgIiRubGlzdCJUICIkbmxpc3QiCi0rCSAgICAgIGV2YWwgJyRFR1JFUCAtdiAiICgkZXhjbHVkZV9leHBzeW1zKSQiICIkbmxpc3QiID4gIiRubGlzdCJUJwotKwkgICAgICBldmFsICckTVYgIiRubGlzdCJUICIkbmxpc3QiJwotIAkgICAgfQotIAkgIGZpCi0gCi0gCSAgaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzX3JlZ2V4IjsgdGhlbgotIAkgICAgJG9wdF9kcnlfcnVuIHx8IHsKLS0JICAgICAgJEVHUkVQIC1lICIkZXhwb3J0X3N5bWJvbHNfcmVnZXgiICIkbmxpc3QiID4gIiRubGlzdCJUCi0tCSAgICAgICRNViAiJG5saXN0IlQgIiRubGlzdCIKLSsJICAgICAgZXZhbCAnJEVHUkVQIC1lICIkZXhwb3J0X3N5bWJvbHNfcmVnZXgiICIkbmxpc3QiID4gIiRubGlzdCJUJwotKwkgICAgICBldmFsICckTVYgIiRubGlzdCJUICIkbmxpc3QiJwotIAkgICAgfQotIAkgIGZpCi0gCi1AQCAtMjU5MywyMyArMzMyNSwyMyBAQCBleHRlcm4gXCJDXCIgewotIAkgICAgZXhwb3J0X3N5bWJvbHM9IiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmV4cCIKLSAJICAgICRvcHRfZHJ5X3J1biB8fCB7Ci0gCSAgICAgICRSTSAkZXhwb3J0X3N5bWJvbHMKLS0JICAgICAgJHtTRUR9IC1uIC1lICcvXjogQFBST0dSQU1AICQvZCcgLWUgJ3MvXi4qIFwoLipcKSQvXDEvcCcgPCAiJG5saXN0IiA+ICIkZXhwb3J0X3N5bWJvbHMiCi0rCSAgICAgIGV2YWwgIiR7U0VEfSAtbiAtZSAnL146IEBQUk9HUkFNQCAkL2QnIC1lICdzL14uKiBcKC4qXCkkL1wxL3AnICInPCAiJG5saXN0IiA+ICIkZXhwb3J0X3N5bWJvbHMiJwotIAkgICAgICBjYXNlICRob3N0IGluCi0gCSAgICAgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpjZWdjYyogKQotLSAgICAgICAgICAgICAgICBlY2hvIEVYUE9SVFMgPiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIgotLSAgICAgICAgICAgICAgICBjYXQgIiRleHBvcnRfc3ltYm9scyIgPj4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiIKLSsgICAgICAgICAgICAgICAgZXZhbCAiZWNobyBFWFBPUlRTICInPiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIicKLSsgICAgICAgICAgICAgICAgZXZhbCAnY2F0ICIkZXhwb3J0X3N5bWJvbHMiID4+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5kZWYiJwotIAkgICAgICAgIDs7Ci0gCSAgICAgIGVzYWMKLSAJICAgIH0KLSAJICBlbHNlCi0gCSAgICAkb3B0X2RyeV9ydW4gfHwgewotLQkgICAgICAke1NFRH0gLWUgJ3MvXChbXS5bKl4kXVwpL1xcXDEvZycgLWUgJ3MvXi8gLycgLWUgJ3MvJC8kLycgPCAiJGV4cG9ydF9zeW1ib2xzIiA+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5leHAiCi0tCSAgICAgICRHUkVQIC1mICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5leHAiIDwgIiRubGlzdCIgPiAiJG5saXN0IlQKLS0JICAgICAgJE1WICIkbmxpc3QiVCAiJG5saXN0IgotKwkgICAgICBldmFsICIke1NFRH0gLWUgJ3MvXChbXS5bKl4kXVwpL1xcXFxcMS9nJyAtZSAncy9eLyAvJyAtZSAncy8kLyQvJyInIDwgIiRleHBvcnRfc3ltYm9scyIgPiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZXhwIicKLSsJICAgICAgZXZhbCAnJEdSRVAgLWYgIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmV4cCIgPCAiJG5saXN0IiA+ICIkbmxpc3QiVCcKLSsJICAgICAgZXZhbCAnJE1WICIkbmxpc3QiVCAiJG5saXN0IicKLSAJICAgICAgY2FzZSAkaG9zdCBpbgotIAkgICAgICAgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpjZWdjYyogKQotLQkgICAgICAgICAgZWNobyBFWFBPUlRTID4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiIKLS0JICAgICAgICAgIGNhdCAiJG5saXN0IiA+PiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIgotKwkgICAgICAgICAgZXZhbCAiZWNobyBFWFBPUlRTICInPiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIicKLSsJICAgICAgICAgIGV2YWwgJ2NhdCAiJG5saXN0IiA+PiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIicKLSAJICAgICAgICAgIDs7Ci0gCSAgICAgIGVzYWMKLSAJICAgIH0KLUBAIC0yNjIwLDEwICszMzUyLDUyIEBAIGV4dGVybiBcIkNcIiB7Ci0gCSAgZnVuY192ZXJib3NlICJleHRyYWN0aW5nIGdsb2JhbCBDIHN5bWJvbHMgZnJvbSBcYCRkbHByZWZpbGUnIgotIAkgIGZ1bmNfYmFzZW5hbWUgIiRkbHByZWZpbGUiCi0gCSAgbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotLQkgICRvcHRfZHJ5X3J1biB8fCB7Ci0tCSAgICAkRUNITyAiOiAkbmFtZSAiID4+ICIkbmxpc3QiCi0tCSAgICBldmFsICIkTk0gJGRscHJlZmlsZSAyPi9kZXYvbnVsbCB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgPj4gJyRubGlzdCciCi0tCSAgfQotKyAgICAgICAgICBjYXNlICRob3N0IGluCi0rCSAgICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqICkKLSsJICAgICAgIyBpZiBhbiBpbXBvcnQgbGlicmFyeSwgd2UgbmVlZCB0byBvYnRhaW4gZGxuYW1lCi0rCSAgICAgIGlmIGZ1bmNfd2luMzJfaW1wb3J0X2xpYl9wICIkZGxwcmVmaWxlIjsgdGhlbgotKwkgICAgICAgIGZ1bmNfdHJfc2ggIiRkbHByZWZpbGUiCi0rCSAgICAgICAgZXZhbCAiY3Vycl9sYWZpbGU9XCRsaWJmaWxlXyRmdW5jX3RyX3NoX3Jlc3VsdCIKLSsJICAgICAgICBkbHByZWZpbGVfZGxiYXNlbmFtZT0iIgotKwkgICAgICAgIGlmIHRlc3QgLW4gIiRjdXJyX2xhZmlsZSIgJiYgZnVuY19sYWxpYl9wICIkY3Vycl9sYWZpbGUiOyB0aGVuCi0rCSAgICAgICAgICAjIFVzZSBzdWJzaGVsbCwgdG8gYXZvaWQgY2xvYmJlcmluZyBjdXJyZW50IHZhcmlhYmxlIHZhbHVlcwotKwkgICAgICAgICAgZGxwcmVmaWxlX2RsbmFtZT1gc291cmNlICIkY3Vycl9sYWZpbGUiICYmIGVjaG8gIiRkbG5hbWUiYAotKwkgICAgICAgICAgaWYgdGVzdCAtbiAiJGRscHJlZmlsZV9kbG5hbWUiIDsgdGhlbgotKwkgICAgICAgICAgICBmdW5jX2Jhc2VuYW1lICIkZGxwcmVmaWxlX2RsbmFtZSIKLSsJICAgICAgICAgICAgZGxwcmVmaWxlX2RsYmFzZW5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLSsJICAgICAgICAgIGVsc2UKLSsJICAgICAgICAgICAgIyBubyBsYWZpbGUuIHVzZXIgZXhwbGljaXRseSByZXF1ZXN0ZWQgLWRscHJlb3BlbiA8aW1wb3J0IGxpYnJhcnk+LgotKwkgICAgICAgICAgICAkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQgIiRkbHByZWZpbGUiCi0rCSAgICAgICAgICAgIGRscHJlZmlsZV9kbGJhc2VuYW1lPSRzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdAotKwkgICAgICAgICAgZmkKLSsJICAgICAgICBmaQotKwkgICAgICAgICRvcHRfZHJ5X3J1biB8fCB7Ci0rCSAgICAgICAgICBpZiB0ZXN0IC1uICIkZGxwcmVmaWxlX2RsYmFzZW5hbWUiIDsgdGhlbgotKwkgICAgICAgICAgICBldmFsICckRUNITyAiOiAkZGxwcmVmaWxlX2RsYmFzZW5hbWUiID4+ICIkbmxpc3QiJwotKwkgICAgICAgICAgZWxzZQotKwkgICAgICAgICAgICBmdW5jX3dhcm5pbmcgIkNvdWxkIG5vdCBjb21wdXRlIERMTCBuYW1lIGZyb20gJG5hbWUiCi0rCSAgICAgICAgICAgIGV2YWwgJyRFQ0hPICI6ICRuYW1lICIgPj4gIiRubGlzdCInCi0rCSAgICAgICAgICBmaQotKwkgICAgICAgICAgZnVuY190b190b29sX2ZpbGUgIiRkbHByZWZpbGUiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rCSAgICAgICAgICBldmFsICIkTk0gXCIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0XCIgMj4vZGV2L251bGwgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwKLSsJICAgICAgICAgICAgJFNFRCAtZSAnL0kgX19pbXAvZCcgLWUgJ3MvSSBfX25tXy9EIC87cy9fbm1fXy8vJyA+PiAnJG5saXN0JyIKLSsJICAgICAgICB9Ci0rCSAgICAgIGVsc2UgIyBub3QgYW4gaW1wb3J0IGxpYgotKwkgICAgICAgICRvcHRfZHJ5X3J1biB8fCB7Ci0rCSAgICAgICAgICBldmFsICckRUNITyAiOiAkbmFtZSAiID4+ICIkbmxpc3QiJwotKwkgICAgICAgICAgZnVuY190b190b29sX2ZpbGUgIiRkbHByZWZpbGUiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rCSAgICAgICAgICBldmFsICIkTk0gXCIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0XCIgMj4vZGV2L251bGwgfCAkZ2xvYmFsX3N5bWJvbF9waXBlID4+ICckbmxpc3QnIgotKwkgICAgICAgIH0KLSsJICAgICAgZmkKLSsJICAgIDs7Ci0rCSAgICAqKQotKwkgICAgICAkb3B0X2RyeV9ydW4gfHwgewotKwkgICAgICAgIGV2YWwgJyRFQ0hPICI6ICRuYW1lICIgPj4gIiRubGlzdCInCi0rCSAgICAgICAgZnVuY190b190b29sX2ZpbGUgIiRkbHByZWZpbGUiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rCSAgICAgICAgZXZhbCAiJE5NIFwiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdFwiIDI+L2Rldi9udWxsIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSA+PiAnJG5saXN0JyIKLSsJICAgICAgfQotKwkgICAgOzsKLSsgICAgICAgICAgZXNhYwotIAlkb25lCi0gCi0gCSRvcHRfZHJ5X3J1biB8fCB7Ci1AQCAtMjY2MSwyNiArMzQzNSw5IEBAIHR5cGVkZWYgc3RydWN0IHsKLSAgIGNvbnN0IGNoYXIgKm5hbWU7Ci0gICB2b2lkICphZGRyZXNzOwotIH0gbHRfZGxzeW1saXN0OwotLSIKLS0JICBjYXNlICRob3N0IGluCi0tCSAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKmNlZ2NjKiApCi0tCSAgICBlY2hvID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIiAiXAotLS8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UKLS0gICBydW50aW1lIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbgotLSAgIG9uIHBzZXVkby1yZWxvY3MuICAqLyIKLS0JICAgIGx0X2Rsc3ltX2NvbnN0PSA7OwotLQkgICpvc2Y1KikKLS0JICAgIGVjaG8gPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiICJcCi0tLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YSAqLyIKLS0JICAgIGx0X2Rsc3ltX2NvbnN0PSA7OwotLQkgICopCi0tCSAgICBsdF9kbHN5bV9jb25zdD1jb25zdCA7OwotLQkgIGVzYWMKLS0KLS0JICBlY2hvID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIiAiXAotLWV4dGVybiAkbHRfZGxzeW1fY29uc3QgbHRfZGxzeW1saXN0Ci0rZXh0ZXJuIExUX0RMU1lNX0NPTlNUIGx0X2Rsc3ltbGlzdAotIGx0XyR7bXlfcHJlZml4fV9MVFhfcHJlbG9hZGVkX3N5bWJvbHNbXTsKLS0kbHRfZGxzeW1fY29uc3QgbHRfZGxzeW1saXN0Ci0rTFRfRExTWU1fQ09OU1QgbHRfZGxzeW1saXN0Ci0gbHRfJHtteV9wcmVmaXh9X0xUWF9wcmVsb2FkZWRfc3ltYm9sc1tdID0KLSB7XAotICAgeyBcIiRteV9vcmlnaW5hdG9yXCIsICh2b2lkICopIDAgfSwiCi1AQCAtMjczNiw3ICszNDkzLDcgQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKLSAJZm9yIGFyZyBpbiAkTFRDRkxBR1M7IGRvCi0gCSAgY2FzZSAkYXJnIGluCi0gCSAgLXBpZSB8IC1mcGllIHwgLWZQSUUpIDs7Ci0tCSAgKikgc3ltdGFiX2NmbGFncz0iJHN5bXRhYl9jZmxhZ3MgJGFyZyIgOzsKLSsJICAqKSBmdW5jX2FwcGVuZCBzeW10YWJfY2ZsYWdzICIgJGFyZyIgOzsKLSAJICBlc2FjCi0gCWRvbmUKLSAKLUBAIC0yNzk2LDkgKzM1NTMsMTEgQEAgZnVuY193aW4zMl9saWJpZCAoKQotICAgICB3aW4zMl9saWJpZF90eXBlPSJ4ODYgYXJjaGl2ZSBpbXBvcnQiCi0gICAgIDs7Ci0gICAqYXJcIGFyY2hpdmUqKSAjIGNvdWxkIGJlIGFuIGltcG9ydCwgb3Igc3RhdGljCi0tICAgIGlmICRPQkpEVU1QIC1mICIkMSIgfCAkU0VEIC1lICcxMHEnIDI+L2Rldi9udWxsIHwKLS0gICAgICAgJEVHUkVQICdmaWxlIGZvcm1hdCAocGUtaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJyA+L2Rldi9udWxsOyB0aGVuCi0tICAgICAgd2luMzJfbm1yZXM9YCROTSAtZiBwb3NpeCAtQSAiJDEiIHwKLSsgICAgIyBLZWVwIHRoZSBlZ3JlcCBwYXR0ZXJuIGluIHN5bmMgd2l0aCB0aGUgb25lIGluIF9MVF9DSEVDS19NQUdJQ19NRVRIT0QuCi0rICAgIGlmIGV2YWwgJE9CSkRVTVAgLWYgJDEgfCAkU0VEIC1lICcxMHEnIDI+L2Rldi9udWxsIHwKLSsgICAgICAgJEVHUkVQICdmaWxlIGZvcm1hdCAocGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT98cGUtYXJtLXdpbmNlfHBlLXg4Ni02NCknID4vZGV2L251bGw7IHRoZW4KLSsgICAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJDEiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rICAgICAgd2luMzJfbm1yZXM9YGV2YWwgJE5NIC1mIHBvc2l4IC1BIFwiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdFwiIHwKLSAJJFNFRCAtbiAtZSAnCi0gCSAgICAxLDEwMHsKLSAJCS8gSSAvewotQEAgLTI4MjcsNiArMzU4NiwxMzEgQEAgZnVuY193aW4zMl9saWJpZCAoKQotICAgJEVDSE8gIiR3aW4zMl9saWJpZF90eXBlIgotIH0KLSAKLSsjIGZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYiBBUkcKLSsjCi0rIyBQbGF0Zm9ybS1zcGVjaWZpYyBmdW5jdGlvbiB0byBleHRyYWN0IHRoZQotKyMgbmFtZSBvZiB0aGUgRExMIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkCi0rIyBpbXBvcnQgbGlicmFyeSBBUkcuCi0rIyBJbnZva2VkIGJ5IGV2YWwnaW5nIHRoZSBsaWJ0b29sIHZhcmlhYmxlCi0rIyAgICAkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKLSsjIFJlc3VsdCBpcyBhdmFpbGFibGUgaW4gdGhlIHZhcmlhYmxlCi0rIyAgICAkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQKLStmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIgKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdD1gJERMTFRPT0wgLS1pZGVudGlmeS1zdHJpY3QgLS1pZGVudGlmeSAiJDEiYAotK30KLSsKLSsjIGZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFja19jb3JlIFNFQ1RJT05fTkFNRSBMSUJOQU1FcwotKyMKLSsjIFRoZSBpcyB0aGUgY29yZSBvZiBhIGZhbGxiYWNrIGltcGxlbWVudGF0aW9uIG9mIGEKLSsjIHBsYXRmb3JtLXNwZWNpZmljIGZ1bmN0aW9uIHRvIGV4dHJhY3QgdGhlIG5hbWUgb2YgdGhlCi0rIyBETEwgYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQgaW1wb3J0IGxpYnJhcnkgTElCTkFNRS4KLSsjCi0rIyBTRUNUSU9OX05BTUUgaXMgZWl0aGVyIC5pZGF0YSQ2IG9yIC5pZGF0YSQ3LCBkZXBlbmRpbmcKLSsjIG9uIHRoZSBwbGF0Zm9ybSBhbmQgY29tcGlsZXIgdGhhdCBjcmVhdGVkIHRoZSBpbXBsaWIuCi0rIwotKyMgRWNob3MgdGhlIG5hbWUgb2YgdGhlIERMTCBhc3NvY2lhdGVkIHdpdGggdGhlCi0rIyBzcGVjaWZpZWQgaW1wb3J0IGxpYnJhcnkuCi0rZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrX2NvcmUgKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBtYXRjaF9saXRlcmFsPWAkRUNITyAiJDEiIHwgJFNFRCAiJHNlZF9tYWtlX2xpdGVyYWxfcmVnZXgiYAotKyAgJE9CSkRVTVAgLXMgLS1zZWN0aW9uICIkMSIgIiQyIiAyPi9kZXYvbnVsbCB8Ci0rICAgICRTRUQgJy9eQ29udGVudHMgb2Ygc2VjdGlvbiAnIiRtYXRjaF9saXRlcmFsIic6L3sKLSsgICAgICAjIFBsYWNlIG1hcmtlciBhdCBiZWdpbm5pbmcgb2YgYXJjaGl2ZSBtZW1iZXIgZGxsbmFtZSBzZWN0aW9uCi0rICAgICAgcy8uKi89PT09TUFSSz09PT0vCi0rICAgICAgcAotKyAgICAgIGQKLSsgICAgfQotKyAgICAjIFRoZXNlIGxpbmVzIGNhbiBzb21ldGltZXMgYmUgbG9uZ2VyIHRoYW4gNDMgY2hhcmFjdGVycywgYnV0Ci0rICAgICMgYXJlIGFsd2F5cyB1bmludGVyZXN0aW5nCi0rICAgIC86WwkgXSpmaWxlIGZvcm1hdCBwZVtpXVx7LDFcfS0vZAotKyAgICAvXkluIGFyY2hpdmUgW146XSo6L2QKLSsgICAgIyBFbnN1cmUgbWFya2VyIGlzIHByaW50ZWQKLSsgICAgL149PT09TUFSSz09PT0vcAotKyAgICAjIFJlbW92ZSBhbGwgbGluZXMgd2l0aCBsZXNzIHRoYW4gNDMgY2hhcmFjdGVycwotKyAgICAvXi5cezQzXH0vIWQKLSsgICAgIyBGcm9tIHJlbWFpbmluZyBsaW5lcywgcmVtb3ZlIGZpcnN0IDQzIGNoYXJhY3RlcnMKLSsgICAgcy9eLlx7NDNcfS8vJyB8Ci0rICAgICRTRUQgLW4gJwotKyAgICAgICMgSm9pbiBtYXJrZXIgYW5kIGFsbCBsaW5lcyB1bnRpbCBuZXh0IG1hcmtlciBpbnRvIGEgc2luZ2xlIGxpbmUKLSsgICAgICAvXj09PT1NQVJLPT09PS8gYiBwYXJhCi0rICAgICAgSAotKyAgICAgICQgYiBwYXJhCi0rICAgICAgYgotKyAgICAgIDpwYXJhCi0rICAgICAgeAotKyAgICAgIHMvXG4vL2cKLSsgICAgICAjIFJlbW92ZSB0aGUgbWFya2VyCi0rICAgICAgcy9ePT09PU1BUks9PT09Ly8KLSsgICAgICAjIFJlbW92ZSB0cmFpbGluZyBkb3RzIGFuZCB3aGl0ZXNwYWNlCi0rICAgICAgcy9bXC4gXHRdKiQvLwotKyAgICAgICMgUHJpbnQKLSsgICAgICAvLi9wJyB8Ci0rICAgICMgd2Ugbm93IGhhdmUgYSBsaXN0LCBvbmUgZW50cnkgcGVyIGxpbmUsIG9mIHRoZSBzdHJpbmdpZmllZAotKyAgICAjIGNvbnRlbnRzIG9mIHRoZSBhcHByb3ByaWF0ZSBzZWN0aW9uIG9mIGFsbCBtZW1iZXJzIG9mIHRoZQotKyAgICAjIGFyY2hpdmUgd2hpY2ggcG9zc2VzcyB0aGF0IHNlY3Rpb24uIEhldXJpc3RpYzogZWxpbWluYXRlCi0rICAgICMgYWxsIHRob3NlIHdoaWNoIGhhdmUgYSBmaXJzdCBvciBzZWNvbmQgY2hhcmFjdGVyIHRoYXQgaXMKLSsgICAgIyBhICcuJyAodGhhdCBpcywgb2JqZHVtcCdzIHJlcHJlc2VudGF0aW9uIG9mIGFuIHVucHJpbnRhYmxlCi0rICAgICMgY2hhcmFjdGVyLikgVGhpcyBzaG91bGQgd29yayBmb3IgYWxsIGFyY2hpdmVzIHdpdGggbGVzcyB0aGFuCi0rICAgICMgMHgzMDJmIGV4cG9ydHMgLS0gYnV0IHdpbGwgZmFpbCBmb3IgRExMcyB3aG9zZSBuYW1lIGFjdHVhbGx5Ci0rICAgICMgYmVnaW5zIHdpdGggYSBsaXRlcmFsICcuJyBvciBhIHNpbmdsZSBjaGFyYWN0ZXIgZm9sbG93ZWQgYnkKLSsgICAgIyBhICcuJy4KLSsgICAgIwotKyAgICAjIE9mIHRob3NlIHRoYXQgcmVtYWluLCBwcmludCB0aGUgZmlyc3Qgb25lLgotKyAgICAkU0VEIC1lICcvXlwuL2Q7L14uXC4vZDtxJwotK30KLSsKLSsjIGZ1bmNfY3lnbWluZ19nbnVfaW1wbGliX3AgQVJHCi0rIyBUaGlzIHByZWRpY2F0ZSByZXR1cm5zIHdpdGggemVybyBzdGF0dXMgKFRSVUUpIGlmCi0rIyBBUkcgaXMgYSBHTlUvYmludXRpbHMtc3R5bGUgaW1wb3J0IGxpYnJhcnkuIFJldHVybnMKLSsjIHdpdGggbm9uemVybyBzdGF0dXMgKEZBTFNFKSBvdGhlcndpc2UuCi0rZnVuY19jeWdtaW5nX2dudV9pbXBsaWJfcCAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIGZ1bmNfdG9fdG9vbF9maWxlICIkMSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsgIGZ1bmNfY3lnbWluZ19nbnVfaW1wbGliX3RtcD1gJE5NICIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiB8IGV2YWwgIiRnbG9iYWxfc3ltYm9sX3BpcGUiIHwgJEVHUkVQICcgKF9oZWFkX1tBLVphLXowLTlfXStfW2FkXWwqfFtBLVphLXowLTlfXStfW2FkXWwqX2luYW1lKSQnYAotKyAgdGVzdCAtbiAiJGZ1bmNfY3lnbWluZ19nbnVfaW1wbGliX3RtcCIKLSt9Ci0rCi0rIyBmdW5jX2N5Z21pbmdfbXNfaW1wbGliX3AgQVJHCi0rIyBUaGlzIHByZWRpY2F0ZSByZXR1cm5zIHdpdGggemVybyBzdGF0dXMgKFRSVUUpIGlmCi0rIyBBUkcgaXMgYW4gTVMtc3R5bGUgaW1wb3J0IGxpYnJhcnkuIFJldHVybnMKLSsjIHdpdGggbm9uemVybyBzdGF0dXMgKEZBTFNFKSBvdGhlcndpc2UuCi0rZnVuY19jeWdtaW5nX21zX2ltcGxpYl9wICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgZnVuY190b190b29sX2ZpbGUgIiQxIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKyAgZnVuY19jeWdtaW5nX21zX2ltcGxpYl90bXA9YCROTSAiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIgfCBldmFsICIkZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRHUkVQICdfTlVMTF9JTVBPUlRfREVTQ1JJUFRPUidgCi0rICB0ZXN0IC1uICIkZnVuY19jeWdtaW5nX21zX2ltcGxpYl90bXAiCi0rfQotKwotKyMgZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrIEFSRwotKyMgUGxhdGZvcm0tc3BlY2lmaWMgZnVuY3Rpb24gdG8gZXh0cmFjdCB0aGUKLSsjIG5hbWUgb2YgdGhlIERMTCBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZAotKyMgaW1wb3J0IGxpYnJhcnkgQVJHLgotKyMKLSsjIFRoaXMgZmFsbGJhY2sgaW1wbGVtZW50YXRpb24gaXMgZm9yIHVzZSB3aGVuICRETExUT09MCi0rIyBkb2VzIG5vdCBzdXBwb3J0IHRoZSAtLWlkZW50aWZ5LXN0cmljdCBvcHRpb24uCi0rIyBJbnZva2VkIGJ5IGV2YWwnaW5nIHRoZSBsaWJ0b29sIHZhcmlhYmxlCi0rIyAgICAkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKLSsjIFJlc3VsdCBpcyBhdmFpbGFibGUgaW4gdGhlIHZhcmlhYmxlCi0rIyAgICAkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQKLStmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sgKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBpZiBmdW5jX2N5Z21pbmdfZ251X2ltcGxpYl9wICIkMSIgOyB0aGVuCi0rICAgICMgYmludXRpbHMgaW1wb3J0IGxpYnJhcnkKLSsgICAgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQ9YGZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFja19jb3JlICcuaWRhdGEkNycgIiQxImAKLSsgIGVsaWYgZnVuY19jeWdtaW5nX21zX2ltcGxpYl9wICIkMSIgOyB0aGVuCi0rICAgICMgbXMtZ2VuZXJhdGVkIGltcG9ydCBsaWJyYXJ5Ci0rICAgIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfcmVzdWx0PWBmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2tfY29yZSAnLmlkYXRhJDYnICIkMSJgCi0rICBlbHNlCi0rICAgICMgdW5rbm93bgotKyAgICBzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdD0iIgotKyAgZmkKLSt9Ci0gCi0gCi0gIyBmdW5jX2V4dHJhY3RfYW5fYXJjaGl2ZSBkaXIgb2xkbGliCi1AQCAtMjkxNyw3ICszODAxLDcgQEAgZnVuY19leHRyYWN0X2FyY2hpdmVzICgpCi0gCSAgICBkYXJ3aW5fZmlsZT0KLSAJICAgIGRhcndpbl9maWxlcz0KLSAJICAgIGZvciBkYXJ3aW5fZmlsZSBpbiAkZGFyd2luX2ZpbGVsaXN0OyBkbwotLQkgICAgICBkYXJ3aW5fZmlsZXM9YGZpbmQgdW5mYXQtJCQgLW5hbWUgJGRhcndpbl9maWxlIC1wcmludCB8ICROTDJTUGAKLSsJICAgICAgZGFyd2luX2ZpbGVzPWBmaW5kIHVuZmF0LSQkIC1uYW1lICRkYXJ3aW5fZmlsZSAtcHJpbnQgfCBzb3J0IHwgJE5MMlNQYAotIAkgICAgICAkTElQTyAtY3JlYXRlIC1vdXRwdXQgIiRkYXJ3aW5fZmlsZSIgJGRhcndpbl9maWxlcwotIAkgICAgZG9uZSAjICRkYXJ3aW5fZmlsZWxpc3QKLSAJICAgICRSTSAtcmYgdW5mYXQtJCQKLUBAIC0yOTMyLDcgKzM4MTYsNyBAQCBmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgKCkKLSAgICAgICAgIGZ1bmNfZXh0cmFjdF9hbl9hcmNoaXZlICIkbXlfeGRpciIgIiRteV94YWJzIgotIAk7OwotICAgICAgIGVzYWMKLS0gICAgICBteV9vbGRvYmpzPSIkbXlfb2xkb2JqcyAiYGZpbmQgJG15X3hkaXIgLW5hbWUgXCouJG9iamV4dCAtcHJpbnQgLW8gLW5hbWUgXCoubG8gLXByaW50IHwgJE5MMlNQYAotKyAgICAgIG15X29sZG9ianM9IiRteV9vbGRvYmpzICJgZmluZCAkbXlfeGRpciAtbmFtZSBcKi4kb2JqZXh0IC1wcmludCAtbyAtbmFtZSBcKi5sbyAtcHJpbnQgfCBzb3J0IHwgJE5MMlNQYAotICAgICBkb25lCi0gCi0gICAgIGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQ9IiRteV9vbGRvYmpzIgotQEAgLTMwMTQsNyArMzg5OCwxMTAgQEAgZnVuY19mYWxsYmFja19lY2hvICgpCi0gX0xURUNIT19FT0YnCi0gfQotICAgICBFQ0hPPVwiJHFFQ0hPXCIKLS0gIGZpXAotKyAgZmkKLSsKLSsjIFZlcnkgYmFzaWMgb3B0aW9uIHBhcnNpbmcuIFRoZXNlIG9wdGlvbnMgYXJlIChhKSBzcGVjaWZpYyB0bwotKyMgdGhlIGxpYnRvb2wgd3JhcHBlciwgKGIpIGFyZSBpZGVudGljYWwgYmV0d2VlbiB0aGUgd3JhcHBlcgotKyMgL3NjcmlwdC8gYW5kIHRoZSB3cmFwcGVyIC9leGVjdXRhYmxlLyB3aGljaCBpcyB1c2VkIG9ubHkgb24KLSsjIHdpbmRvd3MgcGxhdGZvcm1zLCBhbmQgKGMpIGFsbCBiZWdpbiB3aXRoIHRoZSBzdHJpbmcgIi0tbHQtIgotKyMgKGFwcGxpY2F0aW9uIHByb2dyYW1zIGFyZSB1bmxpa2VseSB0byBoYXZlIG9wdGlvbnMgd2hpY2ggbWF0Y2gKLSsjIHRoaXMgcGF0dGVybikuCi0rIwotKyMgVGhlcmUgYXJlIG9ubHkgdHdvIHN1cHBvcnRlZCBvcHRpb25zOiAtLWx0LWRlYnVnIGFuZAotKyMgLS1sdC1kdW1wLXNjcmlwdC4gVGhlcmUgaXMsIGRlbGliZXJhdGVseSwgbm8gLS1sdC1oZWxwLgotKyMKLSsjIFRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGlzIHBhcnNpbmcgZnVuY3Rpb24gc2hvdWxkIGJlIHRoZQotKyMgc2NyaXB0J3MgJDAgdmFsdWUsIGZvbGxvd2VkIGJ5ICIkQCIuCi0rbHRfb3B0aW9uX2RlYnVnPQotK2Z1bmNfcGFyc2VfbHRfb3B0aW9ucyAoKQotK3sKLSsgIGx0X3NjcmlwdF9hcmcwPVwkMAotKyAgc2hpZnQKLSsgIGZvciBsdF9vcHQKLSsgIGRvCi0rICAgIGNhc2UgXCJcJGx0X29wdFwiIGluCi0rICAgIC0tbHQtZGVidWcpIGx0X29wdGlvbl9kZWJ1Zz0xIDs7Ci0rICAgIC0tbHQtZHVtcC1zY3JpcHQpCi0rICAgICAgICBsdF9kdW1wX0Q9XGBcJEVDSE8gXCJYXCRsdF9zY3JpcHRfYXJnMFwiIHwgJFNFRCAtZSAncy9eWC8vJyAtZSAncyUvW14vXSokJSUnXGAKLSsgICAgICAgIHRlc3QgXCJYXCRsdF9kdW1wX0RcIiA9IFwiWFwkbHRfc2NyaXB0X2FyZzBcIiAmJiBsdF9kdW1wX0Q9LgotKyAgICAgICAgbHRfZHVtcF9GPVxgXCRFQ0hPIFwiWFwkbHRfc2NyaXB0X2FyZzBcIiB8ICRTRUQgLWUgJ3MvXlgvLycgLWUgJ3MlXi4qLyUlJ1xgCi0rICAgICAgICBjYXQgXCJcJGx0X2R1bXBfRC9cJGx0X2R1bXBfRlwiCi0rICAgICAgICBleGl0IDAKLSsgICAgICA7OwotKyAgICAtLWx0LSopCi0rICAgICAgICBcJEVDSE8gXCJVbnJlY29nbml6ZWQgLS1sdC0gb3B0aW9uOiAnXCRsdF9vcHQnXCIgMT4mMgotKyAgICAgICAgZXhpdCAxCi0rICAgICAgOzsKLSsgICAgZXNhYwotKyAgZG9uZQotKwotKyAgIyBQcmludCB0aGUgZGVidWcgYmFubmVyIGltbWVkaWF0ZWx5OgotKyAgaWYgdGVzdCAtbiBcIlwkbHRfb3B0aW9uX2RlYnVnXCI7IHRoZW4KLSsgICAgZWNobyBcIiR7b3V0cHV0bmFtZX06JHtvdXRwdXR9Olwke0xJTkVOT306IGxpYnRvb2wgd3JhcHBlciAoR05VICRQQUNLQUdFJFRJTUVTVEFNUCkgJFZFUlNJT05cIiAxPiYyCi0rICBmaQotK30KLSsKLSsjIFVzZWQgd2hlbiAtLWx0LWRlYnVnLiBQcmludHMgaXRzIGFyZ3VtZW50cyB0byBzdGRvdXQKLSsjIChyZWRpcmVjdGlvbiBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGNhbGxlcikKLStmdW5jX2x0X2R1bXBfYXJncyAoKQotK3sKLSsgIGx0X2R1bXBfYXJnc19OPTE7Ci0rICBmb3IgbHRfYXJnCi0rICBkbwotKyAgICBcJEVDSE8gXCIke291dHB1dG5hbWV9OiR7b3V0cHV0fTpcJHtMSU5FTk99OiBuZXdhcmd2W1wkbHRfZHVtcF9hcmdzX05dOiBcJGx0X2FyZ1wiCi0rICAgIGx0X2R1bXBfYXJnc19OPVxgZXhwciBcJGx0X2R1bXBfYXJnc19OICsgMVxgCi0rICBkb25lCi0rfQotKwotKyMgQ29yZSBmdW5jdGlvbiBmb3IgbGF1bmNoaW5nIHRoZSB0YXJnZXQgYXBwbGljYXRpb24KLStmdW5jX2V4ZWNfcHJvZ3JhbV9jb3JlICgpCi0rewotKyIKLSsgIGNhc2UgJGhvc3QgaW4KLSsgICMgQmFja3NsYXNoZXMgc2VwYXJhdGUgZGlyZWN0b3JpZXMgb24gcGxhaW4gd2luZG93cwotKyAgKi0qLW1pbmd3IHwgKi0qLW9zMiogfCAqLWNlZ2NjKikKLSsgICAgJEVDSE8gIlwKLSsgICAgICBpZiB0ZXN0IC1uIFwiXCRsdF9vcHRpb25fZGVidWdcIjsgdGhlbgotKyAgICAgICAgXCRFQ0hPIFwiJHtvdXRwdXRuYW1lfToke291dHB1dH06XCR7TElORU5PfTogbmV3YXJndlswXTogXCRwcm9nZGlyXFxcXFwkcHJvZ3JhbVwiIDE+JjIKLSsgICAgICAgIGZ1bmNfbHRfZHVtcF9hcmdzIFwkezErXCJcJEBcIn0gMT4mMgotKyAgICAgIGZpCi0rICAgICAgZXhlYyBcIlwkcHJvZ2RpclxcXFxcJHByb2dyYW1cIiBcJHsxK1wiXCRAXCJ9Ci0rIgotKyAgICA7OwotKwotKyAgKikKLSsgICAgJEVDSE8gIlwKLSsgICAgICBpZiB0ZXN0IC1uIFwiXCRsdF9vcHRpb25fZGVidWdcIjsgdGhlbgotKyAgICAgICAgXCRFQ0hPIFwiJHtvdXRwdXRuYW1lfToke291dHB1dH06XCR7TElORU5PfTogbmV3YXJndlswXTogXCRwcm9nZGlyL1wkcHJvZ3JhbVwiIDE+JjIKLSsgICAgICAgIGZ1bmNfbHRfZHVtcF9hcmdzIFwkezErXCJcJEBcIn0gMT4mMgotKyAgICAgIGZpCi0rICAgICAgZXhlYyBcIlwkcHJvZ2Rpci9cJHByb2dyYW1cIiBcJHsxK1wiXCRAXCJ9Ci0rIgotKyAgICA7OwotKyAgZXNhYwotKyAgJEVDSE8gIlwKLSsgICAgICBcJEVDSE8gXCJcJDA6IGNhbm5vdCBleGVjIFwkcHJvZ3JhbSBcJCpcIiAxPiYyCi0rICAgICAgZXhpdCAxCi0rfQotKwotKyMgQSBmdW5jdGlvbiB0byBlbmNhcHN1bGF0ZSBsYXVuY2hpbmcgdGhlIHRhcmdldCBhcHBsaWNhdGlvbgotKyMgU3RyaXBzIG9wdGlvbnMgaW4gdGhlIC0tbHQtKiBuYW1lc3BhY2UgZnJvbSBcJEAgYW5kCi0rIyBsYXVuY2hlcyB0YXJnZXQgYXBwbGljYXRpb24gd2l0aCB0aGUgcmVtYWluaW5nIGFyZ3VtZW50cy4KLStmdW5jX2V4ZWNfcHJvZ3JhbSAoKQotK3sKLSsgIGZvciBsdF93cl9hcmcKLSsgIGRvCi0rICAgIGNhc2UgXCRsdF93cl9hcmcgaW4KLSsgICAgLS1sdC0qKSA7OwotKyAgICAqKSBzZXQgeCBcIlwkQFwiIFwiXCRsdF93cl9hcmdcIjsgc2hpZnQ7OwotKyAgICBlc2FjCi0rICAgIHNoaWZ0Ci0rICBkb25lCi0rICBmdW5jX2V4ZWNfcHJvZ3JhbV9jb3JlIFwkezErXCJcJEBcIn0KLSt9Ci0rCi0rICAjIFBhcnNlIG9wdGlvbnMKLSsgIGZ1bmNfcGFyc2VfbHRfb3B0aW9ucyBcIlwkMFwiIFwkezErXCJcJEBcIn0KLSAKLSAgICMgRmluZCB0aGUgZGlyZWN0b3J5IHRoYXQgdGhpcyBzY3JpcHQgbGl2ZXMgaW4uCi0gICB0aGlzZGlyPVxgXCRFQ0hPIFwiXCRmaWxlXCIgfCAkU0VEICdzJS9bXi9dKiQlJSdcYAotQEAgLTMwNzgsNyArNDA2NSw3IEBAIF9MVEVDSE9fRU9GJwotIAotICAgICAjIHJlbGluayBleGVjdXRhYmxlIGlmIG5lY2Vzc2FyeQotICAgICBpZiB0ZXN0IC1uIFwiXCRyZWxpbmtfY29tbWFuZFwiOyB0aGVuCi0tICAgICAgaWYgcmVsaW5rX2NvbW1hbmRfb3V0cHV0PVxgZXZhbCBcIlwkcmVsaW5rX2NvbW1hbmRcIiAyPiYxXGA7IHRoZW4gOgotKyAgICAgIGlmIHJlbGlua19jb21tYW5kX291dHB1dD1cYGV2YWwgXCRyZWxpbmtfY29tbWFuZCAyPiYxXGA7IHRoZW4gOgotICAgICAgIGVsc2UKLSAJJEVDSE8gXCJcJHJlbGlua19jb21tYW5kX291dHB1dFwiID4mMgotIAkkUk0gXCJcJHByb2dkaXIvXCRmaWxlXCIKLUBAIC0zMTAyLDYgKzQwODksMTggQEAgX0xURUNIT19FT0YnCi0gCi0gICBpZiB0ZXN0IC1mIFwiXCRwcm9nZGlyL1wkcHJvZ3JhbVwiOyB0aGVuIgotIAotKwkjIGZpeHVwIHRoZSBkbGwgc2VhcmNocGF0aCBpZiB3ZSBuZWVkIHRvLgotKwkjCi0rCSMgRml4IHRoZSBETEwgc2VhcmNocGF0aCBpZiB3ZSBuZWVkIHRvLiAgRG8gdGhpcyBiZWZvcmUgcHJlcGVuZGluZwotKwkjIHRvIHNobGlicGF0aCwgYmVjYXVzZSBvbiBXaW5kb3dzLCBib3RoIGFyZSBQQVRIIGFuZCB1bmluc3RhbGxlZAotKwkjIGxpYnJhcmllcyBtdXN0IGNvbWUgZmlyc3QuCi0rCWlmIHRlc3QgLW4gIiRkbGxzZWFyY2hwYXRoIjsgdGhlbgotKwkgICRFQ0hPICJcCi0rICAgICMgQWRkIHRoZSBkbGwgc2VhcmNoIHBhdGggY29tcG9uZW50cyB0byB0aGUgZXhlY3V0YWJsZSBQQVRICi0rICAgIFBBVEg9JGRsbHNlYXJjaHBhdGg6XCRQQVRICi0rIgotKwlmaQotKwotIAkjIEV4cG9ydCBvdXIgc2hsaWJwYXRoX3ZhciBpZiB3ZSBoYXZlIG9uZS4KLSAJaWYgdGVzdCAiJHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aCIgPSB5ZXMgJiYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiICYmIHRlc3QgLW4gIiR0ZW1wX3JwYXRoIjsgdGhlbgotIAkgICRFQ0hPICJcCi1AQCAtMzExNiwzNSArNDExNSwxMCBAQCBfTFRFQ0hPX0VPRicKLSAiCi0gCWZpCi0gCi0tCSMgZml4dXAgdGhlIGRsbCBzZWFyY2hwYXRoIGlmIHdlIG5lZWQgdG8uCi0tCWlmIHRlc3QgLW4gIiRkbGxzZWFyY2hwYXRoIjsgdGhlbgotLQkgICRFQ0hPICJcCi0tICAgICMgQWRkIHRoZSBkbGwgc2VhcmNoIHBhdGggY29tcG9uZW50cyB0byB0aGUgZXhlY3V0YWJsZSBQQVRICi0tICAgIFBBVEg9JGRsbHNlYXJjaHBhdGg6XCRQQVRICi0tIgotLQlmaQotLQotIAkkRUNITyAiXAotICAgICBpZiB0ZXN0IFwiXCRsaWJ0b29sX2V4ZWN1dGVfbWFnaWNcIiAhPSBcIiRtYWdpY1wiOyB0aGVuCi0gICAgICAgIyBSdW4gdGhlIGFjdHVhbCBwcm9ncmFtIHdpdGggb3VyIGFyZ3VtZW50cy4KLS0iCi0tCWNhc2UgJGhvc3QgaW4KLS0JIyBCYWNrc2xhc2hlcyBzZXBhcmF0ZSBkaXJlY3RvcmllcyBvbiBwbGFpbiB3aW5kb3dzCi0tCSotKi1taW5ndyB8ICotKi1vczIqIHwgKi1jZWdjYyopCi0tCSAgJEVDSE8gIlwKLS0gICAgICBleGVjIFwiXCRwcm9nZGlyXFxcXFwkcHJvZ3JhbVwiIFwkezErXCJcJEBcIn0KLS0iCi0tCSAgOzsKLS0KLS0JKikKLS0JICAkRUNITyAiXAotLSAgICAgIGV4ZWMgXCJcJHByb2dkaXIvXCRwcm9ncmFtXCIgXCR7MStcIlwkQFwifQotLSIKLS0JICA7OwotLQllc2FjCi0tCSRFQ0hPICJcCi0tICAgICAgXCRFQ0hPIFwiXCQwOiBjYW5ub3QgZXhlYyBcJHByb2dyYW0gXCQqXCIgMT4mMgotLSAgICAgIGV4aXQgMQotKyAgICAgIGZ1bmNfZXhlY19wcm9ncmFtIFwkezErXCJcJEBcIn0KLSAgICAgZmkKLSAgIGVsc2UKLSAgICAgIyBUaGUgcHJvZ3JhbSBkb2Vzbid0IGV4aXN0LgotQEAgLTMxNTgsMTY2ICs0MTMyLDYgQEAgZmlcCi0gfQotIAotIAotLSMgZnVuY190b19ob3N0X3BhdGggYXJnCi0tIwotLSMgQ29udmVydCBwYXRocyB0byBob3N0IGZvcm1hdCB3aGVuIHVzZWQgd2l0aCBidWlsZCB0b29scy4KLS0jIEludGVuZGVkIGZvciB1c2Ugd2l0aCAibmF0aXZlIiBtaW5ndyAod2hlcmUgbGlidG9vbCBpdHNlbGYKLS0jIGlzIHJ1bm5pbmcgdW5kZXIgdGhlIG1zeXMgc2hlbGwpLCBvciBpbiB0aGUgZm9sbG93aW5nIGNyb3NzLQotLSMgYnVpbGQgZW52aXJvbm1lbnRzOgotLSMgICAgJGJ1aWxkICAgICAgICAgICRob3N0Ci0tIyAgICBtaW5ndyAobXN5cykgICAgbWluZ3cgIFtlLmcuIG5hdGl2ZV0KLS0jICAgIGN5Z3dpbiAgICAgICAgICBtaW5ndwotLSMgICAgKm5peCArIHdpbmUgICAgIG1pbmd3Ci0tIyB3aGVyZSB3aW5lIGlzIGVxdWlwcGVkIHdpdGggdGhlIGB3aW5lcGF0aCcgZXhlY3V0YWJsZS4KLS0jIEluIHRoZSBuYXRpdmUgbWluZ3cgY2FzZSwgdGhlIChtc3lzKSBzaGVsbCBhdXRvbWF0aWNhbGx5Ci0tIyBjb252ZXJ0cyBwYXRocyBmb3IgYW55IG5vbi1tc3lzIGFwcGxpY2F0aW9ucyBpdCBsYXVuY2hlcywKLS0jIGJ1dCB0aGF0IGZhY2lsaXR5IGlzbid0IGF2YWlsYWJsZSBmcm9tIGluc2lkZSB0aGUgY3dyYXBwZXIuCi0tIyBTaW1pbGFyIGFjY29tbW9kYXRpb25zIGFyZSBuZWNlc3NhcnkgZm9yICRob3N0IG1pbmd3IGFuZAotLSMgJGJ1aWxkIGN5Z3dpbi4gIENhbGxpbmcgdGhpcyBmdW5jdGlvbiBkb2VzIG5vIGhhcm0gZm9yIG90aGVyCi0tIyAkaG9zdC8kYnVpbGQgY29tYmluYXRpb25zIG5vdCBsaXN0ZWQgYWJvdmUuCi0tIwotLSMgQVJHIGlzIHRoZSBwYXRoIChvbiAkYnVpbGQpIHRoYXQgc2hvdWxkIGJlIGNvbnZlcnRlZCB0bwotLSMgdGhlIHByb3BlciByZXByZXNlbnRhdGlvbiBmb3IgJGhvc3QuIFRoZSByZXN1bHQgaXMgc3RvcmVkCi0tIyBpbiAkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0LgotLWZ1bmNfdG9faG9zdF9wYXRoICgpCi0tewotLSAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKLS0gIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgotLSAgICBjYXNlICRob3N0IGluCi0tICAgICAgKm1pbmd3KiApCi0tICAgICAgICBsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5PSdzfFxcXFwqfFxcfGc7c3wvfFxcfGc7c3xcXHxcXFxcfGcnCi0tICAgICAgICBjYXNlICRidWlsZCBpbgotLSAgICAgICAgICAqbWluZ3cqICkgIyBhY3R1YWxseSwgbXN5cwotLSAgICAgICAgICAgICMgYXdrd2FyZDogY21kIGFwcGVuZHMgc3BhY2VzIHRvIHJlc3VsdAotLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD1gKCBjbWQgLy9jIGVjaG8gIiQxIiApIDI+L2Rldi9udWxsIHwKLS0gICAgICAgICAgICAgICRTRUQgLWUgJ3MvWyBdKiQvLycgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKLS0gICAgICAgICAgICA7OwotLSAgICAgICAgICAqY3lnd2luKiApCi0tICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PWBjeWdwYXRoIC13ICIkMSIgfAotLQkgICAgICAkU0VEIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCi0tICAgICAgICAgICAgOzsKLS0gICAgICAgICAgKiApCi0tICAgICAgICAgICAgIyBVbmZvcnR1bmF0ZWx5LCB3aW5lcGF0aCBkb2VzIG5vdCBleGl0IHdpdGggYSBub24temVybwotLSAgICAgICAgICAgICMgZXJyb3IgY29kZSwgc28gd2UgYXJlIGZvcmNlZCB0byBjaGVjayB0aGUgY29udGVudHMgb2YKLS0gICAgICAgICAgICAjIHN0ZG91dC4gT24gdGhlIG90aGVyIGhhbmQsIGlmIHRoZSBjb21tYW5kIGlzIG5vdAotLSAgICAgICAgICAgICMgZm91bmQsIHRoZSBzaGVsbCB3aWxsIHNldCBhbiBleGl0IGNvZGUgb2YgMTI3IGFuZCBwcmludAotLSAgICAgICAgICAgICMgKmFuIGVycm9yIG1lc3NhZ2UqIHRvIHN0ZG91dC4gU28gd2UgbXVzdCBjaGVjayBmb3IgYm90aAotLSAgICAgICAgICAgICMgZXJyb3IgY29kZSBvZiB6ZXJvIEFORCBub24tZW1wdHkgc3Rkb3V0LCB3aGljaCBleHBsYWlucwotLSAgICAgICAgICAgICMgdGhlIG9kZCBjb25zdHJ1Y3Rpb246Ci0tICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT1gd2luZXBhdGggLXcgIiQxIiAyPi9kZXYvbnVsbGAKLS0gICAgICAgICAgICBpZiB0ZXN0ICIkPyIgLWVxIDAgJiYgdGVzdCAtbiAiJHtmdW5jX3RvX2hvc3RfcGF0aF90bXAxfSI7IHRoZW4KLS0gICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD1gJEVDSE8gIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiB8Ci0tICAgICAgICAgICAgICAgICRTRUQgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKLS0gICAgICAgICAgICBlbHNlCi0tICAgICAgICAgICAgICAjIEFsbG93IHdhcm5pbmcgYmVsb3cuCi0tICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9Ci0tICAgICAgICAgICAgZmkKLS0gICAgICAgICAgICA7OwotLSAgICAgICAgZXNhYwotLSAgICAgICAgaWYgdGVzdCAteiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIgOyB0aGVuCi0tICAgICAgICAgIGZ1bmNfZXJyb3IgIkNvdWxkIG5vdCBkZXRlcm1pbmUgaG9zdCBwYXRoIGNvcnJlc3BvbmRpbmcgdG8iCi0tICAgICAgICAgIGZ1bmNfZXJyb3IgIiAgXGAkMSciCi0tICAgICAgICAgIGZ1bmNfZXJyb3IgIkNvbnRpbnVpbmcsIGJ1dCB1bmluc3RhbGxlZCBleGVjdXRhYmxlcyBtYXkgbm90IHdvcmsuIgotLSAgICAgICAgICAjIEZhbGxiYWNrOgotLSAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgotLSAgICAgICAgZmkKLS0gICAgICAgIDs7Ci0tICAgIGVzYWMKLS0gIGZpCi0tfQotLSMgZW5kOiBmdW5jX3RvX2hvc3RfcGF0aAotLQotLSMgZnVuY190b19ob3N0X3BhdGhsaXN0IGFyZwotLSMKLS0jIENvbnZlcnQgcGF0aGxpc3RzIHRvIGhvc3QgZm9ybWF0IHdoZW4gdXNlZCB3aXRoIGJ1aWxkIHRvb2xzLgotLSMgU2VlIGZ1bmNfdG9faG9zdF9wYXRoKCksIGFib3ZlLiBUaGlzIGZ1bmN0aW9uIHN1cHBvcnRzIHRoZQotLSMgZm9sbG93aW5nICRidWlsZC8kaG9zdCBjb21iaW5hdGlvbnMgKGJ1dCBkb2VzIG5vIGhhcm0gZm9yCi0tIyBjb21iaW5hdGlvbnMgbm90IGxpc3RlZCBoZXJlKToKLS0jICAgICRidWlsZCAgICAgICAgICAkaG9zdAotLSMgICAgbWluZ3cgKG1zeXMpICAgIG1pbmd3ICBbZS5nLiBuYXRpdmVdCi0tIyAgICBjeWd3aW4gICAgICAgICAgbWluZ3cKLS0jICAgICpuaXggKyB3aW5lICAgICBtaW5ndwotLSMKLS0jIFBhdGggc2VwYXJhdG9ycyBhcmUgYWxzbyBjb252ZXJ0ZWQgZnJvbSAkYnVpbGQgZm9ybWF0IHRvCi0tIyAkaG9zdCBmb3JtYXQuIElmIEFSRyBiZWdpbnMgb3IgZW5kcyB3aXRoIGEgcGF0aCBzZXBhcmF0b3IKLS0jIGNoYXJhY3RlciwgaXQgaXMgcHJlc2VydmVkIChidXQgY29udmVydGVkIHRvICRob3N0IGZvcm1hdCkKLS0jIG9uIG91dHB1dC4KLS0jCi0tIyBBUkcgaXMgYSBwYXRobGlzdCAob24gJGJ1aWxkKSB0aGF0IHNob3VsZCBiZSBjb252ZXJ0ZWQgdG8KLS0jIHRoZSBwcm9wZXIgcmVwcmVzZW50YXRpb24gb24gJGhvc3QuIFRoZSByZXN1bHQgaXMgc3RvcmVkCi0tIyBpbiAkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdC4KLS1mdW5jX3RvX2hvc3RfcGF0aGxpc3QgKCkKLS17Ci0tICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PSIkMSIKLS0gIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgotLSAgICBjYXNlICRob3N0IGluCi0tICAgICAgKm1pbmd3KiApCi0tICAgICAgICBsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5PSdzfFxcXFwqfFxcfGc7c3wvfFxcfGc7c3xcXHxcXFxcfGcnCi0tICAgICAgICAjIFJlbW92ZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBwYXRoIHNlcGFyYXRvciBjaGFyYWN0ZXJzIGZyb20KLS0gICAgICAgICMgQVJHLiBtc3lzIGJlaGF2aW9yIGlzIGluY29uc2lzdGVudCBoZXJlLCBjeWdwYXRoIHR1cm5zIHRoZW0KLS0gICAgICAgICMgaW50byAnLjsnIGFuZCAnOy4nLCBhbmQgd2luZXBhdGggaWdub3JlcyB0aGVtIGNvbXBsZXRlbHkuCi0tCWZ1bmNfc3RyaXBuYW1lIDogOiAiJDEiCi0tICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0tICAgICAgICBjYXNlICRidWlsZCBpbgotLSAgICAgICAgICAqbWluZ3cqICkgIyBBY3R1YWxseSwgbXN5cy4KLS0gICAgICAgICAgICAjIEF3a3dhcmQ6IGNtZCBhcHBlbmRzIHNwYWNlcyB0byByZXN1bHQuCi0tICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD1gCi0tCSAgICAgICggY21kIC8vYyBlY2hvICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDEiICkgMj4vZGV2L251bGwgfAotLQkgICAgICAkU0VEIC1lICdzL1sgXSokLy8nIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCi0tICAgICAgICAgICAgOzsKLS0gICAgICAgICAgKmN5Z3dpbiogKQotLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9YGN5Z3BhdGggLXcgLXAgIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMSIgfAotLSAgICAgICAgICAgICAgJFNFRCAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAotLSAgICAgICAgICAgIDs7Ci0tICAgICAgICAgICogKQotLSAgICAgICAgICAgICMgdW5mb3J0dW5hdGVseSwgd2luZXBhdGggZG9lc24ndCBjb252ZXJ0IHBhdGhsaXN0cwotLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9IiIKLS0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3Rfb2xkSUZTPSRJRlMKLS0gICAgICAgICAgICBJRlM9OgotLSAgICAgICAgICAgIGZvciBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfZiBpbiAkZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDEgOyBkbwotLSAgICAgICAgICAgICAgSUZTPSRmdW5jX3RvX2hvc3RfcGF0aGxpc3Rfb2xkSUZTCi0tICAgICAgICAgICAgICBpZiB0ZXN0IC1uICIkZnVuY190b19ob3N0X3BhdGhsaXN0X2YiIDsgdGhlbgotLSAgICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aCAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9mIgotLSAgICAgICAgICAgICAgICBpZiB0ZXN0IC1uICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IiA7IHRoZW4KLS0gICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdCIgOyB0aGVuCi0tICAgICAgICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PSIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgotLSAgICAgICAgICAgICAgICAgIGVsc2UKLS0gICAgICAgICAgICAgICAgICAgIGZ1bmNfYXBwZW5kIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQgIjskZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgotLSAgICAgICAgICAgICAgICAgIGZpCi0tICAgICAgICAgICAgICAgIGZpCi0tICAgICAgICAgICAgICBmaQotLSAgICAgICAgICAgIGRvbmUKLS0gICAgICAgICAgICBJRlM9JGZ1bmNfdG9faG9zdF9wYXRobGlzdF9vbGRJRlMKLS0gICAgICAgICAgICA7OwotLSAgICAgICAgZXNhYwotLSAgICAgICAgaWYgdGVzdCAteiAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQiOyB0aGVuCi0tICAgICAgICAgIGZ1bmNfZXJyb3IgIkNvdWxkIG5vdCBkZXRlcm1pbmUgdGhlIGhvc3QgcGF0aChzKSBjb3JyZXNwb25kaW5nIHRvIgotLSAgICAgICAgICBmdW5jX2Vycm9yICIgIFxgJDEnIgotLSAgICAgICAgICBmdW5jX2Vycm9yICJDb250aW51aW5nLCBidXQgdW5pbnN0YWxsZWQgZXhlY3V0YWJsZXMgbWF5IG5vdCB3b3JrLiIKLS0gICAgICAgICAgIyBGYWxsYmFjay4gVGhpcyBtYXkgYnJlYWsgaWYgJDEgY29udGFpbnMgRE9TLXN0eWxlIGRyaXZlCi0tICAgICAgICAgICMgc3BlY2lmaWNhdGlvbnMuIFRoZSBmaXggaXMgbm90IHRvIGNvbXBsaWNhdGUgdGhlIGV4cHJlc3Npb24KLS0gICAgICAgICAgIyBiZWxvdywgYnV0IGZvciB0aGUgdXNlciB0byBwcm92aWRlIGEgd29ya2luZyB3aW5lIGluc3RhbGxhdGlvbgotLSAgICAgICAgICAjIHdpdGggd2luZXBhdGggc28gdGhhdCBwYXRoIHRyYW5zbGF0aW9uIGluIHRoZSBjcm9zcy10by1taW5ndwotLSAgICAgICAgICAjIGNhc2Ugd29ya3MgcHJvcGVybHkuCi0tICAgICAgICAgIGx0X3JlcGxhY2VfcGF0aHNlcF9uaXhfdG9fZG9zPSJzfDp8O3xnIgotLSAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PWBlY2hvICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDEiIHxcCi0tICAgICAgICAgICAgJFNFRCAtZSAiJGx0X3JlcGxhY2VfcGF0aHNlcF9uaXhfdG9fZG9zImAKLS0gICAgICAgIGZpCi0tICAgICAgICAjIE5vdywgYWRkIHRoZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBwYXRoIHNlcGFyYXRvcnMgYmFjawotLSAgICAgICAgY2FzZSAiJDEiIGluCi0tICAgICAgICAgIDoqICkgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD0iOyRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0IgotLSAgICAgICAgICAgIDs7Ci0tICAgICAgICBlc2FjCi0tICAgICAgICBjYXNlICIkMSIgaW4KLS0gICAgICAgICAgKjogKSBmdW5jX2FwcGVuZCBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0ICI7IgotLSAgICAgICAgICAgIDs7Ci0tICAgICAgICBlc2FjCi0tICAgICAgICA7OwotLSAgICBlc2FjCi0tICBmaQotLX0KLS0jIGVuZDogZnVuY190b19ob3N0X3BhdGhsaXN0Ci0tCi0gIyBmdW5jX2VtaXRfY3dyYXBwZXJleGVfc3JjCi0gIyBlbWl0IHRoZSBzb3VyY2UgY29kZSBmb3IgYSB3cmFwcGVyIGV4ZWN1dGFibGUgb24gc3Rkb3V0Ci0gIyBNdXN0IE9OTFkgYmUgY2FsbGVkIGZyb20gd2l0aGluIGZ1bmNfbW9kZV9saW5rIGJlY2F1c2UKLUBAIC0zMzM0LDEwICs0MTQ4LDYgQEAgZnVuY19lbWl0X2N3cmFwcGVyZXhlX3NyYyAoKQotIAotICAgIFRoaXMgd3JhcHBlciBleGVjdXRhYmxlIHNob3VsZCBuZXZlciBiZSBtb3ZlZCBvdXQgb2YgdGhlIGJ1aWxkIGRpcmVjdG9yeS4KLSAgICBJZiBpdCBpcywgaXQgd2lsbCBub3Qgb3BlcmF0ZSBjb3JyZWN0bHkuCi0tCi0tICAgQ3VycmVudGx5LCBpdCBzaW1wbHkgZXhlY3MgdGhlIHdyYXBwZXIgKnNjcmlwdCogIiRTSEVMTCAkb3V0cHV0IiwKLS0gICBidXQgY291bGQgZXZlbnR1YWxseSBhYnNvcmIgYWxsIG9mIHRoZSBzY3JpcHRzIGZ1bmN0aW9uYWxpdHkgYW5kCi0tICAgZXhlYyAkb2JqZGlyLyRvdXRwdXRuYW1lIGRpcmVjdGx5LgotICovCi0gRU9GCi0gCSAgICBjYXQgPDwiRU9GIgotQEAgLTM0NjIsMjIgKzQyNzIsMTMgQEAgaW50IHNldGVudiAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGludCk7Ci0gICBpZiAoc3RhbGUpIHsgZnJlZSAoKHZvaWQgKikgc3RhbGUpOyBzdGFsZSA9IDA7IH0gXAotIH0gd2hpbGUgKDApCi0gCi0tI3VuZGVmIExUV1JBUFBFUl9ERUJVR1BSSU5URgotLSNpZiBkZWZpbmVkIExUX0RFQlVHV1JBUFBFUgotLSMgZGVmaW5lIExUV1JBUFBFUl9ERUJVR1BSSU5URihhcmdzKSBsdHdyYXBwZXJfZGVidWdwcmludGYgYXJncwotLXN0YXRpYyB2b2lkCi0tbHR3cmFwcGVyX2RlYnVncHJpbnRmIChjb25zdCBjaGFyICpmbXQsIC4uLikKLS17Ci0tICAgIHZhX2xpc3QgYXJnczsKLS0gICAgdmFfc3RhcnQgKGFyZ3MsIGZtdCk7Ci0tICAgICh2b2lkKSB2ZnByaW50ZiAoc3RkZXJyLCBmbXQsIGFyZ3MpOwotLSAgICB2YV9lbmQgKGFyZ3MpOwotLX0KLSsjaWYgZGVmaW5lZChMVF9ERUJVR1dSQVBQRVIpCi0rc3RhdGljIGludCBsdF9kZWJ1ZyA9IDE7Ci0gI2Vsc2UKLS0jIGRlZmluZSBMVFdSQVBQRVJfREVCVUdQUklOVEYoYXJncykKLStzdGF0aWMgaW50IGx0X2RlYnVnID0gMDsKLSAjZW5kaWYKLSAKLS1jb25zdCBjaGFyICpwcm9ncmFtX25hbWUgPSBOVUxMOwotK2NvbnN0IGNoYXIgKnByb2dyYW1fbmFtZSA9ICJsaWJ0b29sLXdyYXBwZXIiOyAvKiBpbiBjYXNlIHhzdHJkdXAgZmFpbHMgKi8KLSAKLSB2b2lkICp4bWFsbG9jIChzaXplX3QgbnVtKTsKLSBjaGFyICp4c3RyZHVwIChjb25zdCBjaGFyICpzdHJpbmcpOwotQEAgLTM0ODcsNyArNDI4OCwxMCBAQCBjaGFyICpjaGFzZV9zeW1saW5rcyAoY29uc3QgY2hhciAqcGF0aHNwZWMpOwotIGludCBtYWtlX2V4ZWN1dGFibGUgKGNvbnN0IGNoYXIgKnBhdGgpOwotIGludCBjaGVja19leGVjdXRhYmxlIChjb25zdCBjaGFyICpwYXRoKTsKLSBjaGFyICpzdHJlbmR6YXAgKGNoYXIgKnN0ciwgY29uc3QgY2hhciAqcGF0KTsKLS12b2lkIGx0X2ZhdGFsIChjb25zdCBjaGFyICptZXNzYWdlLCAuLi4pOwotK3ZvaWQgbHRfZGVidWdwcmludGYgKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyICpmbXQsIC4uLik7Ci0rdm9pZCBsdF9mYXRhbCAoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UsIC4uLik7Ci0rc3RhdGljIGNvbnN0IGNoYXIgKm5vbm51bGwgKGNvbnN0IGNoYXIgKnMpOwotK3N0YXRpYyBjb25zdCBjaGFyICpub25lbXB0eSAoY29uc3QgY2hhciAqcyk7Ci0gdm9pZCBsdF9zZXRlbnYgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKTsKLSBjaGFyICpsdF9leHRlbmRfc3RyIChjb25zdCBjaGFyICpvcmlnX3ZhbHVlLCBjb25zdCBjaGFyICphZGQsIGludCB0b19lbmQpOwotIHZvaWQgbHRfdXBkYXRlX2V4ZV9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSk7Ci1AQCAtMzQ5NywxNCArNDMwMSwxNCBAQCB2b2lkIGx0X2R1bXBfc2NyaXB0IChGSUxFICpmKTsKLSBFT0YKLSAKLSAJICAgIGNhdCA8PEVPRgotLWNvbnN0IGNoYXIgKiBNQUdJQ19FWEUgPSAiJG1hZ2ljX2V4ZSI7Ci0rdm9sYXRpbGUgY29uc3QgY2hhciAqIE1BR0lDX0VYRSA9ICIkbWFnaWNfZXhlIjsKLSBjb25zdCBjaGFyICogTElCX1BBVEhfVkFSTkFNRSA9ICIkc2hsaWJwYXRoX3ZhciI7Ci0gRU9GCi0gCi0gCSAgICBpZiB0ZXN0ICIkc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoIiA9IHllcyAmJiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciIgJiYgdGVzdCAtbiAiJHRlbXBfcnBhdGgiOyB0aGVuCi0tICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3QgIiR0ZW1wX3JwYXRoIgotKyAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGggIiR0ZW1wX3JwYXRoIgotIAkgICAgICBjYXQgPDxFT0YKLS1jb25zdCBjaGFyICogTElCX1BBVEhfVkFMVUUgICA9ICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdCI7Ci0rY29uc3QgY2hhciAqIExJQl9QQVRIX1ZBTFVFICAgPSAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCI7Ci0gRU9GCi0gCSAgICBlbHNlCi0gCSAgICAgIGNhdCA8PCJFT0YiCi1AQCAtMzUxMywxMCArNDMxNywxMCBAQCBFT0YKLSAJICAgIGZpCi0gCi0gCSAgICBpZiB0ZXN0IC1uICIkZGxsc2VhcmNocGF0aCI7IHRoZW4KLS0gICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdCAiJGRsbHNlYXJjaHBhdGg6IgotKyAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGggIiRkbGxzZWFyY2hwYXRoOiIKLSAJICAgICAgY2F0IDw8RU9GCi0gY29uc3QgY2hhciAqIEVYRV9QQVRIX1ZBUk5BTUUgPSAiUEFUSCI7Ci0tY29uc3QgY2hhciAqIEVYRV9QQVRIX1ZBTFVFICAgPSAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQiOwotK2NvbnN0IGNoYXIgKiBFWEVfUEFUSF9WQUxVRSAgID0gIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiOwotIEVPRgotIAkgICAgZWxzZQotIAkgICAgICBjYXQgPDwiRU9GIgotQEAgLTM1MzksMTIgKzQzNDMsMTAgQEAgRU9GCi0gCSAgICBjYXQgPDwiRU9GIgotIAotICNkZWZpbmUgTFRXUkFQUEVSX09QVElPTl9QUkVGSVggICAgICAgICAiLS1sdC0iCi0tI2RlZmluZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWF9MRU5HVEggIDUKLSAKLS1zdGF0aWMgY29uc3Qgc2l6ZV90IG9wdF9wcmVmaXhfbGVuICAgICAgICAgPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWF9MRU5HVEg7Ci0gc3RhdGljIGNvbnN0IGNoYXIgKmx0d3JhcHBlcl9vcHRpb25fcHJlZml4ID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVg7Ci0tCi0gc3RhdGljIGNvbnN0IGNoYXIgKmR1bXBzY3JpcHRfb3B0ICAgICAgID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVggImR1bXAtc2NyaXB0IjsKLStzdGF0aWMgY29uc3QgY2hhciAqZGVidWdfb3B0ICAgICAgICAgICAgPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWCAiZGVidWciOwotIAotIGludAotIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCi1AQCAtMzU2MSwxMCArNDM2MywxMyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQotICAgaW50IGk7Ci0gCi0gICBwcm9ncmFtX25hbWUgPSAoY2hhciAqKSB4c3RyZHVwIChiYXNlX25hbWUgKGFyZ3ZbMF0pKTsKLS0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgYXJndlswXSAgICAgIDogJXNcbiIsIGFyZ3ZbMF0pKTsKLS0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgcHJvZ3JhbV9uYW1lIDogJXNcbiIsIHByb2dyYW1fbmFtZSkpOwotKyAgbmV3YXJneiA9IFhNQUxMT0MgKGNoYXIgKiwgYXJnYyArIDEpOwotIAotLSAgLyogdmVyeSBzaW1wbGUgYXJnIHBhcnNpbmc7IGRvbid0IHdhbnQgdG8gcmVseSBvbiBnZXRvcHQgKi8KLSsgIC8qIHZlcnkgc2ltcGxlIGFyZyBwYXJzaW5nOyBkb24ndCB3YW50IHRvIHJlbHkgb24gZ2V0b3B0Ci0rICAgKiBhbHNvLCBjb3B5IGFsbCBub24gY3dyYXBwZXIgb3B0aW9ucyB0byBuZXdhcmd6LCBleGNlcHQKLSsgICAqIGFyZ3pbMF0sIHdoaWNoIGlzIGhhbmRsZWQgZGlmZmVyZW50bHkKLSsgICAqLwotKyAgbmV3YXJnYz0wOwotICAgZm9yIChpID0gMTsgaSA8IGFyZ2M7IGkrKykKLSAgICAgewotICAgICAgIGlmIChzdHJjbXAgKGFyZ3ZbaV0sIGR1bXBzY3JpcHRfb3B0KSA9PSAwKQotQEAgLTM1ODEsMjEgKzQzODYsNTQgQEAgRU9GCi0gCSAgbHRfZHVtcF9zY3JpcHQgKHN0ZG91dCk7Ci0gCSAgcmV0dXJuIDA7Ci0gCX0KLSsgICAgICBpZiAoc3RyY21wIChhcmd2W2ldLCBkZWJ1Z19vcHQpID09IDApCi0rCXsKLSsgICAgICAgICAgbHRfZGVidWcgPSAxOwotKyAgICAgICAgICBjb250aW51ZTsKLSsJfQotKyAgICAgIGlmIChzdHJjbXAgKGFyZ3ZbaV0sIGx0d3JhcHBlcl9vcHRpb25fcHJlZml4KSA9PSAwKQotKyAgICAgICAgewotKyAgICAgICAgICAvKiBob3dldmVyLCBpZiB0aGVyZSBpcyBhbiBvcHRpb24gaW4gdGhlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYCi0rICAgICAgICAgICAgIG5hbWVzcGFjZSwgYnV0IGl0IGlzIG5vdCBvbmUgb2YgdGhlIG9uZXMgd2Uga25vdyBhYm91dCBhbmQKLSsgICAgICAgICAgICAgaGF2ZSBhbHJlYWR5IGRlYWx0IHdpdGgsIGFib3ZlIChpbmx1ZGluZyBkdW1wLXNjcmlwdCksIHRoZW4KLSsgICAgICAgICAgICAgcmVwb3J0IGFuIGVycm9yLiBPdGhlcndpc2UsIHRhcmdldHMgbWlnaHQgYmVnaW4gdG8gYmVsaWV2ZQotKyAgICAgICAgICAgICB0aGV5IGFyZSBhbGxvd2VkIHRvIHVzZSBvcHRpb25zIGluIHRoZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWAotKyAgICAgICAgICAgICBuYW1lc3BhY2UuIFRoZSBmaXJzdCB0aW1lIGFueSB1c2VyIGNvbXBsYWlucyBhYm91dCB0aGlzLCB3ZSdsbAotKyAgICAgICAgICAgICBuZWVkIHRvIG1ha2UgTFRXUkFQUEVSX09QVElPTl9QUkVGSVggYSBjb25maWd1cmUtdGltZSBvcHRpb24KLSsgICAgICAgICAgICAgb3IgYSBjb25maWd1cmUuYWMtc2V0dGFibGUgdmFsdWUuCi0rICAgICAgICAgICAqLwotKyAgICAgICAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLAotKwkJICAgICJ1bnJlY29nbml6ZWQgJXMgb3B0aW9uOiAnJXMnIiwKLSsgICAgICAgICAgICAgICAgICAgIGx0d3JhcHBlcl9vcHRpb25fcHJlZml4LCBhcmd2W2ldKTsKLSsgICAgICAgIH0KLSsgICAgICAvKiBvdGhlcndpc2UgLi4uICovCi0rICAgICAgbmV3YXJnelsrK25ld2FyZ2NdID0geHN0cmR1cCAoYXJndltpXSk7Ci0gICAgIH0KLSsgIG5ld2FyZ3pbKytuZXdhcmdjXSA9IE5VTEw7Ci0rCi0rRU9GCi0rCSAgICBjYXQgPDxFT0YKLSsgIC8qIFRoZSBHTlUgYmFubmVyIG11c3QgYmUgdGhlIGZpcnN0IG5vbi1lcnJvciBkZWJ1ZyBtZXNzYWdlICovCi0rICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAibGlidG9vbCB3cmFwcGVyIChHTlUgJFBBQ0tBR0UkVElNRVNUQU1QKSAkVkVSU0lPTlxuIik7Ci0rRU9GCi0rCSAgICBjYXQgPDwiRU9GIgotKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihtYWluKSBhcmd2WzBdOiAlc1xuIiwgYXJndlswXSk7Ci0rICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKG1haW4pIHByb2dyYW1fbmFtZTogJXNcbiIsIHByb2dyYW1fbmFtZSk7Ci0gCi0tICBuZXdhcmd6ID0gWE1BTExPQyAoY2hhciAqLCBhcmdjICsgMSk7Ci0gICB0bXBfcGF0aHNwZWMgPSBmaW5kX2V4ZWN1dGFibGUgKGFyZ3ZbMF0pOwotICAgaWYgKHRtcF9wYXRoc3BlYyA9PSBOVUxMKQotLSAgICBsdF9mYXRhbCAoIkNvdWxkbid0IGZpbmQgJXMiLCBhcmd2WzBdKTsKLS0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgZm91bmQgZXhlIChiZWZvcmUgc3ltbGluayBjaGFzZSkgYXQgOiAlc1xuIiwKLS0JCQkgIHRtcF9wYXRoc3BlYykpOwotKyAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLCAiY291bGRuJ3QgZmluZCAlcyIsIGFyZ3ZbMF0pOwotKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKLSsgICAgICAgICAgICAgICAgICAiKG1haW4pIGZvdW5kIGV4ZSAoYmVmb3JlIHN5bWxpbmsgY2hhc2UpIGF0OiAlc1xuIiwKLSsJCSAgdG1wX3BhdGhzcGVjKTsKLSAKLSAgIGFjdHVhbF9jd3JhcHBlcl9wYXRoID0gY2hhc2Vfc3ltbGlua3MgKHRtcF9wYXRoc3BlYyk7Ci0tICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIGZvdW5kIGV4ZSAoYWZ0ZXIgc3ltbGluayBjaGFzZSkgYXQgOiAlc1xuIiwKLS0JCQkgIGFjdHVhbF9jd3JhcHBlcl9wYXRoKSk7Ci0rICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAotKyAgICAgICAgICAgICAgICAgICIobWFpbikgZm91bmQgZXhlIChhZnRlciBzeW1saW5rIGNoYXNlKSBhdDogJXNcbiIsCi0rCQkgIGFjdHVhbF9jd3JhcHBlcl9wYXRoKTsKLSAgIFhGUkVFICh0bXBfcGF0aHNwZWMpOwotIAotLSAgYWN0dWFsX2N3cmFwcGVyX25hbWUgPSB4c3RyZHVwKCBiYXNlX25hbWUgKGFjdHVhbF9jd3JhcHBlcl9wYXRoKSk7Ci0rICBhY3R1YWxfY3dyYXBwZXJfbmFtZSA9IHhzdHJkdXAgKGJhc2VfbmFtZSAoYWN0dWFsX2N3cmFwcGVyX3BhdGgpKTsKLSAgIHN0cmVuZHphcCAoYWN0dWFsX2N3cmFwcGVyX3BhdGgsIGFjdHVhbF9jd3JhcHBlcl9uYW1lKTsKLSAKLSAgIC8qIHdyYXBwZXIgbmFtZSB0cmFuc2Zvcm1zICovCi1AQCAtMzYxMyw4ICs0NDUxLDkgQEAgRU9GCi0gICB0YXJnZXRfbmFtZSA9IHRtcF9wYXRoc3BlYzsKLSAgIHRtcF9wYXRoc3BlYyA9IDA7Ci0gCi0tICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIGxpYnRvb2wgdGFyZ2V0IG5hbWU6ICVzXG4iLAotLQkJCSAgdGFyZ2V0X25hbWUpKTsKLSsgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCi0rCQkgICIobWFpbikgbGlidG9vbCB0YXJnZXQgbmFtZTogJXNcbiIsCi0rCQkgIHRhcmdldF9uYW1lKTsKLSBFT0YKLSAKLSAJICAgIGNhdCA8PEVPRgotQEAgLTM2NjQsMzUgKzQ1MDMsMTkgQEAgRU9GCi0gCi0gICBsdF9zZXRlbnYgKCJCSU5fU0giLCAieHBnNCIpOyAvKiBmb3IgVHJ1NjQgKi8KLSAgIGx0X3NldGVudiAoIkRVQUxDQVNFIiwgIjEiKTsgIC8qIGZvciBNU0sgc2ggKi8KLS0gIGx0X3VwZGF0ZV9saWJfcGF0aCAoTElCX1BBVEhfVkFSTkFNRSwgTElCX1BBVEhfVkFMVUUpOwotKyAgLyogVXBkYXRlIHRoZSBETEwgc2VhcmNocGF0aC4gIEVYRV9QQVRIX1ZBTFVFICgkZGxsc2VhcmNocGF0aCkgbXVzdAotKyAgICAgYmUgcHJlcGVuZGVkIGJlZm9yZSAodGhhdCBpcywgYXBwZWFyIGFmdGVyKSBMSUJfUEFUSF9WQUxVRSAoJHRlbXBfcnBhdGgpCi0rICAgICBiZWNhdXNlIG9uIFdpbmRvd3MsIGJvdGggKl9WQVJOQU1FcyBhcmUgUEFUSCBidXQgdW5pbnN0YWxsZWQKLSsgICAgIGxpYnJhcmllcyBtdXN0IGNvbWUgZmlyc3QuICovCi0gICBsdF91cGRhdGVfZXhlX3BhdGggKEVYRV9QQVRIX1ZBUk5BTUUsIEVYRV9QQVRIX1ZBTFVFKTsKLSsgIGx0X3VwZGF0ZV9saWJfcGF0aCAoTElCX1BBVEhfVkFSTkFNRSwgTElCX1BBVEhfVkFMVUUpOwotIAotLSAgbmV3YXJnYz0wOwotLSAgZm9yIChpID0gMTsgaSA8IGFyZ2M7IGkrKykKLS0gICAgewotLSAgICAgIGlmIChzdHJuY21wIChhcmd2W2ldLCBsdHdyYXBwZXJfb3B0aW9uX3ByZWZpeCwgb3B0X3ByZWZpeF9sZW4pID09IDApCi0tICAgICAgICB7Ci0tICAgICAgICAgIC8qIGhvd2V2ZXIsIGlmIHRoZXJlIGlzIGFuIG9wdGlvbiBpbiB0aGUgTFRXUkFQUEVSX09QVElPTl9QUkVGSVgKLS0gICAgICAgICAgICAgbmFtZXNwYWNlLCBidXQgaXQgaXMgbm90IG9uZSBvZiB0aGUgb25lcyB3ZSBrbm93IGFib3V0IGFuZAotLSAgICAgICAgICAgICBoYXZlIGFscmVhZHkgZGVhbHQgd2l0aCwgYWJvdmUgKGlubHVkaW5nIGR1bXAtc2NyaXB0KSwgdGhlbgotLSAgICAgICAgICAgICByZXBvcnQgYW4gZXJyb3IuIE90aGVyd2lzZSwgdGFyZ2V0cyBtaWdodCBiZWdpbiB0byBiZWxpZXZlCi0tICAgICAgICAgICAgIHRoZXkgYXJlIGFsbG93ZWQgdG8gdXNlIG9wdGlvbnMgaW4gdGhlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYCi0tICAgICAgICAgICAgIG5hbWVzcGFjZS4gVGhlIGZpcnN0IHRpbWUgYW55IHVzZXIgY29tcGxhaW5zIGFib3V0IHRoaXMsIHdlJ2xsCi0tICAgICAgICAgICAgIG5lZWQgdG8gbWFrZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWCBhIGNvbmZpZ3VyZS10aW1lIG9wdGlvbgotLSAgICAgICAgICAgICBvciBhIGNvbmZpZ3VyZS5hYy1zZXR0YWJsZSB2YWx1ZS4KLS0gICAgICAgICAgICovCi0tICAgICAgICAgIGx0X2ZhdGFsICgiVW5yZWNvZ25pemVkIG9wdGlvbiBpbiAlcyBuYW1lc3BhY2U6ICclcyciLAotLSAgICAgICAgICAgICAgICAgICAgbHR3cmFwcGVyX29wdGlvbl9wcmVmaXgsIGFyZ3ZbaV0pOwotLSAgICAgICAgfQotLSAgICAgIC8qIG90aGVyd2lzZSAuLi4gKi8KLS0gICAgICBuZXdhcmd6WysrbmV3YXJnY10gPSB4c3RyZHVwIChhcmd2W2ldKTsKLS0gICAgfQotLSAgbmV3YXJnelsrK25ld2FyZ2NdID0gTlVMTDsKLS0KLS0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAgICAgKCgiKG1haW4pIGx0X2FyZ3ZfemVybyA6ICVzXG4iLCAobHRfYXJndl96ZXJvID8gbHRfYXJndl96ZXJvIDogIjxOVUxMPiIpKSk7Ci0rICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKG1haW4pIGx0X2FyZ3ZfemVybzogJXNcbiIsCi0rCQkgIG5vbm51bGwgKGx0X2FyZ3ZfemVybykpOwotICAgZm9yIChpID0gMDsgaSA8IG5ld2FyZ2M7IGkrKykKLSAgICAgewotLSAgICAgIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgbmV3YXJnelslZF0gICA6ICVzXG4iLCBpLCAobmV3YXJneltpXSA/IG5ld2FyZ3pbaV0gOiAiPE5VTEw+IikpKTsKLSsgICAgICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKG1haW4pIG5ld2FyZ3pbJWRdOiAlc1xuIiwKLSsJCSAgICAgIGksIG5vbm51bGwgKG5ld2FyZ3pbaV0pKTsKLSAgICAgfQotIAotIEVPRgotQEAgLTM3MDYsNyArNDUyOSw5IEBAIEVPRgotICAgaWYgKHJ2YWwgPT0gLTEpCi0gICAgIHsKLSAgICAgICAvKiBmYWlsZWQgdG8gc3RhcnQgcHJvY2VzcyAqLwotLSAgICAgIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgZmFpbGVkIHRvIGxhdW5jaCB0YXJnZXQgXCIlc1wiOiBlcnJubyA9ICVkXG4iLCBsdF9hcmd2X3plcm8sIGVycm5vKSk7Ci0rICAgICAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKLSsJCSAgICAgICIobWFpbikgZmFpbGVkIHRvIGxhdW5jaCB0YXJnZXQgXCIlc1wiOiAlc1xuIiwKLSsJCSAgICAgIGx0X2FyZ3ZfemVybywgbm9ubnVsbCAoc3RyZXJyb3IgKGVycm5vKSkpOwotICAgICAgIHJldHVybiAxMjc7Ci0gICAgIH0KLSAgIHJldHVybiBydmFsOwotQEAgLTM3MjgsNyArNDU1Myw3IEBAIHhtYWxsb2MgKHNpemVfdCBudW0pCi0gewotICAgdm9pZCAqcCA9ICh2b2lkICopIG1hbGxvYyAobnVtKTsKLSAgIGlmICghcCkKLS0gICAgbHRfZmF0YWwgKCJNZW1vcnkgZXhoYXVzdGVkIik7Ci0rICAgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sICJtZW1vcnkgZXhoYXVzdGVkIik7Ci0gCi0gICByZXR1cm4gcDsKLSB9Ci1AQCAtMzc2Miw4ICs0NTg3LDggQEAgY2hlY2tfZXhlY3V0YWJsZSAoY29uc3QgY2hhciAqcGF0aCkKLSB7Ci0gICBzdHJ1Y3Qgc3RhdCBzdDsKLSAKLS0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIoY2hlY2tfZXhlY3V0YWJsZSkgIDogJXNcbiIsCi0tCQkJICBwYXRoID8gKCpwYXRoID8gcGF0aCA6ICJFTVBUWSEiKSA6ICJOVUxMISIpKTsKLSsgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICIoY2hlY2tfZXhlY3V0YWJsZSk6ICVzXG4iLAotKyAgICAgICAgICAgICAgICAgIG5vbmVtcHR5IChwYXRoKSk7Ci0gICBpZiAoKCFwYXRoKSB8fCAoISpwYXRoKSkKLSAgICAgcmV0dXJuIDA7Ci0gCi1AQCAtMzc4MCw4ICs0NjA1LDggQEAgbWFrZV9leGVjdXRhYmxlIChjb25zdCBjaGFyICpwYXRoKQotICAgaW50IHJ2YWwgPSAwOwotICAgc3RydWN0IHN0YXQgc3Q7Ci0gCi0tICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1ha2VfZXhlY3V0YWJsZSkgICA6ICVzXG4iLAotLQkJCSAgcGF0aCA/ICgqcGF0aCA/IHBhdGggOiAiRU1QVFkhIikgOiAiTlVMTCEiKSk7Ci0rICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKG1ha2VfZXhlY3V0YWJsZSk6ICVzXG4iLAotKyAgICAgICAgICAgICAgICAgIG5vbmVtcHR5IChwYXRoKSk7Ci0gICBpZiAoKCFwYXRoKSB8fCAoISpwYXRoKSkKLSAgICAgcmV0dXJuIDA7Ci0gCi1AQCAtMzgwNyw4ICs0NjMyLDggQEAgZmluZF9leGVjdXRhYmxlIChjb25zdCBjaGFyICp3cmFwcGVyKQotICAgaW50IHRtcF9sZW47Ci0gICBjaGFyICpjb25jYXRfbmFtZTsKLSAKLS0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIoZmluZF9leGVjdXRhYmxlKSAgIDogJXNcbiIsCi0tCQkJICB3cmFwcGVyID8gKCp3cmFwcGVyID8gd3JhcHBlciA6ICJFTVBUWSEiKSA6ICJOVUxMISIpKTsKLSsgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICIoZmluZF9leGVjdXRhYmxlKTogJXNcbiIsCi0rICAgICAgICAgICAgICAgICAgbm9uZW1wdHkgKHdyYXBwZXIpKTsKLSAKLSAgIGlmICgod3JhcHBlciA9PSBOVUxMKSB8fCAoKndyYXBwZXIgPT0gJ1wwJykpCi0gICAgIHJldHVybiBOVUxMOwotQEAgLTM4NjEsNyArNDY4Niw4IEBAIGZpbmRfZXhlY3V0YWJsZSAoY29uc3QgY2hhciAqd3JhcHBlcikKLSAJCXsKLSAJCSAgLyogZW1wdHkgcGF0aDogY3VycmVudCBkaXJlY3RvcnkgKi8KLSAJCSAgaWYgKGdldGN3ZCAodG1wLCBMVF9QQVRITUFYKSA9PSBOVUxMKQotLQkJICAgIGx0X2ZhdGFsICgiZ2V0Y3dkIGZhaWxlZCIpOwotKwkJICAgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sICJnZXRjd2QgZmFpbGVkOiAlcyIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9ubnVsbCAoc3RyZXJyb3IgKGVycm5vKSkpOwotIAkJICB0bXBfbGVuID0gc3RybGVuICh0bXApOwotIAkJICBjb25jYXRfbmFtZSA9Ci0gCQkgICAgWE1BTExPQyAoY2hhciwgdG1wX2xlbiArIDEgKyBzdHJsZW4gKHdyYXBwZXIpICsgMSk7Ci1AQCAtMzg4Niw3ICs0NzEyLDggQEAgZmluZF9leGVjdXRhYmxlIChjb25zdCBjaGFyICp3cmFwcGVyKQotICAgICB9Ci0gICAvKiBSZWxhdGl2ZSBwYXRoIHwgbm90IGZvdW5kIGluIHBhdGg6IHByZXBlbmQgY3dkICovCi0gICBpZiAoZ2V0Y3dkICh0bXAsIExUX1BBVEhNQVgpID09IE5VTEwpCi0tICAgIGx0X2ZhdGFsICgiZ2V0Y3dkIGZhaWxlZCIpOwotKyAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLCAiZ2V0Y3dkIGZhaWxlZDogJXMiLAotKyAgICAgICAgICAgICAgbm9ubnVsbCAoc3RyZXJyb3IgKGVycm5vKSkpOwotICAgdG1wX2xlbiA9IHN0cmxlbiAodG1wKTsKLSAgIGNvbmNhdF9uYW1lID0gWE1BTExPQyAoY2hhciwgdG1wX2xlbiArIDEgKyBzdHJsZW4gKHdyYXBwZXIpICsgMSk7Ci0gICBtZW1jcHkgKGNvbmNhdF9uYW1lLCB0bXAsIHRtcF9sZW4pOwotQEAgLTM5MTIsOCArNDczOSw5IEBAIGNoYXNlX3N5bWxpbmtzIChjb25zdCBjaGFyICpwYXRoc3BlYykKLSAgIGludCBoYXNfc3ltbGlua3MgPSAwOwotICAgd2hpbGUgKHN0cmxlbiAodG1wX3BhdGhzcGVjKSAmJiAhaGFzX3N5bWxpbmtzKQotICAgICB7Ci0tICAgICAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoImNoZWNraW5nIHBhdGggY29tcG9uZW50IGZvciBzeW1saW5rczogJXNcbiIsCi0tCQkJICAgICAgdG1wX3BhdGhzcGVjKSk7Ci0rICAgICAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKLSsJCSAgICAgICJjaGVja2luZyBwYXRoIGNvbXBvbmVudCBmb3Igc3ltbGlua3M6ICVzXG4iLAotKwkJICAgICAgdG1wX3BhdGhzcGVjKTsKLSAgICAgICBpZiAobHN0YXQgKHRtcF9wYXRoc3BlYywgJnMpID09IDApCi0gCXsKLSAJICBpZiAoU19JU0xOSyAocy5zdF9tb2RlKSAhPSAwKQotQEAgLTM5MzUsOCArNDc2Myw5IEBAIGNoYXNlX3N5bWxpbmtzIChjb25zdCBjaGFyICpwYXRoc3BlYykKLSAJfQotICAgICAgIGVsc2UKLSAJewotLQkgIGNoYXIgKmVycnN0ciA9IHN0cmVycm9yIChlcnJubyk7Ci0tCSAgbHRfZmF0YWwgKCJFcnJvciBhY2Nlc3NpbmcgZmlsZSAlcyAoJXMpIiwgdG1wX3BhdGhzcGVjLCBlcnJzdHIpOwotKwkgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sCi0rCQkgICAgImVycm9yIGFjY2Vzc2luZyBmaWxlIFwiJXNcIjogJXMiLAotKwkJICAgIHRtcF9wYXRoc3BlYywgbm9ubnVsbCAoc3RyZXJyb3IgKGVycm5vKSkpOwotIAl9Ci0gICAgIH0KLSAgIFhGUkVFICh0bXBfcGF0aHNwZWMpOwotQEAgLTM5NDksNyArNDc3OCw4IEBAIGNoYXNlX3N5bWxpbmtzIChjb25zdCBjaGFyICpwYXRoc3BlYykKLSAgIHRtcF9wYXRoc3BlYyA9IHJlYWxwYXRoIChwYXRoc3BlYywgYnVmKTsKLSAgIGlmICh0bXBfcGF0aHNwZWMgPT0gMCkKLSAgICAgewotLSAgICAgIGx0X2ZhdGFsICgiQ291bGQgbm90IGZvbGxvdyBzeW1saW5rcyBmb3IgJXMiLCBwYXRoc3BlYyk7Ci0rICAgICAgbHRfZmF0YWwgKF9fRklMRV9fLCBfX0xJTkVfXywKLSsJCSJjb3VsZCBub3QgZm9sbG93IHN5bWxpbmtzIGZvciAlcyIsIHBhdGhzcGVjKTsKLSAgICAgfQotICAgcmV0dXJuIHhzdHJkdXAgKHRtcF9wYXRoc3BlYyk7Ci0gI2VuZGlmCi1AQCAtMzk3NSwxMSArNDgwNSwyNSBAQCBzdHJlbmR6YXAgKGNoYXIgKnN0ciwgY29uc3QgY2hhciAqcGF0KQotICAgcmV0dXJuIHN0cjsKLSB9Ci0gCi0rdm9pZAotK2x0X2RlYnVncHJpbnRmIChjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciAqZm10LCAuLi4pCi0rewotKyAgdmFfbGlzdCBhcmdzOwotKyAgaWYgKGx0X2RlYnVnKQotKyAgICB7Ci0rICAgICAgKHZvaWQpIGZwcmludGYgKHN0ZGVyciwgIiVzOiVzOiVkOiAiLCBwcm9ncmFtX25hbWUsIGZpbGUsIGxpbmUpOwotKyAgICAgIHZhX3N0YXJ0IChhcmdzLCBmbXQpOwotKyAgICAgICh2b2lkKSB2ZnByaW50ZiAoc3RkZXJyLCBmbXQsIGFyZ3MpOwotKyAgICAgIHZhX2VuZCAoYXJncyk7Ci0rICAgIH0KLSt9Ci0rCi0gc3RhdGljIHZvaWQKLS1sdF9lcnJvcl9jb3JlIChpbnQgZXhpdF9zdGF0dXMsIGNvbnN0IGNoYXIgKm1vZGUsCi0rbHRfZXJyb3JfY29yZSAoaW50IGV4aXRfc3RhdHVzLCBjb25zdCBjaGFyICpmaWxlLAotKwkgICAgICAgaW50IGxpbmUsIGNvbnN0IGNoYXIgKm1vZGUsCi0gCSAgICAgICBjb25zdCBjaGFyICptZXNzYWdlLCB2YV9saXN0IGFwKQotIHsKLS0gIGZwcmludGYgKHN0ZGVyciwgIiVzOiAlczogIiwgcHJvZ3JhbV9uYW1lLCBtb2RlKTsKLSsgIGZwcmludGYgKHN0ZGVyciwgIiVzOiVzOiVkOiAlczogIiwgcHJvZ3JhbV9uYW1lLCBmaWxlLCBsaW5lLCBtb2RlKTsKLSAgIHZmcHJpbnRmIChzdGRlcnIsIG1lc3NhZ2UsIGFwKTsKLSAgIGZwcmludGYgKHN0ZGVyciwgIi5cbiIpOwotIAotQEAgLTM5ODgsMjAgKzQ4MzIsMzIgQEAgbHRfZXJyb3JfY29yZSAoaW50IGV4aXRfc3RhdHVzLCBjb25zdCBjaGFyICptb2RlLAotIH0KLSAKLSB2b2lkCi0tbHRfZmF0YWwgKGNvbnN0IGNoYXIgKm1lc3NhZ2UsIC4uLikKLStsdF9mYXRhbCAoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UsIC4uLikKLSB7Ci0gICB2YV9saXN0IGFwOwotICAgdmFfc3RhcnQgKGFwLCBtZXNzYWdlKTsKLS0gIGx0X2Vycm9yX2NvcmUgKEVYSVRfRkFJTFVSRSwgIkZBVEFMIiwgbWVzc2FnZSwgYXApOwotKyAgbHRfZXJyb3JfY29yZSAoRVhJVF9GQUlMVVJFLCBmaWxlLCBsaW5lLCAiRkFUQUwiLCBtZXNzYWdlLCBhcCk7Ci0gICB2YV9lbmQgKGFwKTsKLSB9Ci0gCi0rc3RhdGljIGNvbnN0IGNoYXIgKgotK25vbm51bGwgKGNvbnN0IGNoYXIgKnMpCi0rewotKyAgcmV0dXJuIHMgPyBzIDogIihudWxsKSI7Ci0rfQotKwotK3N0YXRpYyBjb25zdCBjaGFyICoKLStub25lbXB0eSAoY29uc3QgY2hhciAqcykKLSt7Ci0rICByZXR1cm4gKHMgJiYgISpzKSA/ICIoZW1wdHkpIiA6IG5vbm51bGwgKHMpOwotK30KLSsKLSB2b2lkCi0gbHRfc2V0ZW52IChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKLSB7Ci0tICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKGx0X3NldGVudikgc2V0dGluZyAnJXMnIHRvICclcydcbiIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAobmFtZSA/IG5hbWUgOiAiPE5VTEw+IiksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWUgPyB2YWx1ZSA6ICI8TlVMTD4iKSkpOwotKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKLSsJCSAgIihsdF9zZXRlbnYpIHNldHRpbmcgJyVzJyB0byAnJXMnXG4iLAotKyAgICAgICAgICAgICAgICAgIG5vbm51bGwgKG5hbWUpLCBub25udWxsICh2YWx1ZSkpOwotICAgewotICNpZmRlZiBIQVZFX1NFVEVOVgotICAgICAvKiBhbHdheXMgbWFrZSBhIGNvcHksIGZvciBjb25zaXN0ZW5jeSB3aXRoICFIQVZFX1NFVEVOViAqLwotQEAgLTQwNDksOSArNDkwNSw5IEBAIGx0X2V4dGVuZF9zdHIgKGNvbnN0IGNoYXIgKm9yaWdfdmFsdWUsIGNvbnN0IGNoYXIgKmFkZCwgaW50IHRvX2VuZCkKLSB2b2lkCi0gbHRfdXBkYXRlX2V4ZV9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKLSB7Ci0tICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKGx0X3VwZGF0ZV9leGVfcGF0aCkgbW9kaWZ5aW5nICclcycgYnkgcHJlcGVuZGluZyAnJXMnXG4iLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgKG5hbWUgPyBuYW1lIDogIjxOVUxMPiIpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlID8gdmFsdWUgOiAiPE5VTEw+IikpKTsKLSsgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCi0rCQkgICIobHRfdXBkYXRlX2V4ZV9wYXRoKSBtb2RpZnlpbmcgJyVzJyBieSBwcmVwZW5kaW5nICclcydcbiIsCi0rICAgICAgICAgICAgICAgICAgbm9ubnVsbCAobmFtZSksIG5vbm51bGwgKHZhbHVlKSk7Ci0gCi0gICBpZiAobmFtZSAmJiAqbmFtZSAmJiB2YWx1ZSAmJiAqdmFsdWUpCi0gICAgIHsKLUBAIC00MDcwLDkgKzQ5MjYsOSBAQCBsdF91cGRhdGVfZXhlX3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKQotIHZvaWQKLSBsdF91cGRhdGVfbGliX3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKQotIHsKLS0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobHRfdXBkYXRlX2xpYl9wYXRoKSBtb2RpZnlpbmcgJyVzJyBieSBwcmVwZW5kaW5nICclcydcbiIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAobmFtZSA/IG5hbWUgOiAiPE5VTEw+IiksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWUgPyB2YWx1ZSA6ICI8TlVMTD4iKSkpOwotKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKLSsJCSAgIihsdF91cGRhdGVfbGliX3BhdGgpIG1vZGlmeWluZyAnJXMnIGJ5IHByZXBlbmRpbmcgJyVzJ1xuIiwKLSsgICAgICAgICAgICAgICAgICBub25udWxsIChuYW1lKSwgbm9ubnVsbCAodmFsdWUpKTsKLSAKLSAgIGlmIChuYW1lICYmICpuYW1lICYmIHZhbHVlICYmICp2YWx1ZSkKLSAgICAgewotQEAgLTQyMjIsNyArNTA3OCw3IEBAIEVPRgotIGZ1bmNfd2luMzJfaW1wb3J0X2xpYl9wICgpCi0gewotICAgICAkb3B0X2RlYnVnCi0tICAgIGNhc2UgYGV2YWwgIiRmaWxlX21hZ2ljX2NtZCBcIlwkMVwiIDI+L2Rldi9udWxsIiB8ICRTRUQgLWUgMTBxYCBpbgotKyAgICBjYXNlIGBldmFsICRmaWxlX21hZ2ljX2NtZCBcIlwkMVwiIDI+L2Rldi9udWxsIHwgJFNFRCAtZSAxMHFgIGluCi0gICAgICppbXBvcnQqKSA6IDs7Ci0gICAgICopIGZhbHNlIDs7Ci0gICAgIGVzYWMKLUBAIC00NDAxLDkgKzUyNTcsOSBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgOzsKLSAJICAqKQotIAkgICAgaWYgdGVzdCAiJHByZXYiID0gZGxmaWxlczsgdGhlbgotLQkgICAgICBkbGZpbGVzPSIkZGxmaWxlcyAkYXJnIgotKwkgICAgICBmdW5jX2FwcGVuZCBkbGZpbGVzICIgJGFyZyIKLSAJICAgIGVsc2UKLS0JICAgICAgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJGFyZyIKLSsJICAgICAgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRhcmciCi0gCSAgICBmaQotIAkgICAgcHJldj0KLSAJICAgIGNvbnRpbnVlCi1AQCAtNDQyNyw3ICs1MjgzLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgICotKi1kYXJ3aW4qKQotIAkgICAgICBjYXNlICIkZGVwbGlicyAiIGluCi0gCQkqIiAkcWFyZy5sdGZyYW1ld29yayAiKikgOzsKLS0JCSopIGRlcGxpYnM9IiRkZXBsaWJzICRxYXJnLmx0ZnJhbWV3b3JrIiAjIHRoaXMgaXMgZml4ZWQgbGF0ZXIKLSsJCSopIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkcWFyZy5sdGZyYW1ld29yayIgIyB0aGlzIGlzIGZpeGVkIGxhdGVyCi0gCQkgICA7OwotIAkgICAgICBlc2FjCi0gCSAgICAgIDs7Ci1AQCAtNDQ0Niw3ICs1MzAyLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgIG1vcmVhcmdzPQotIAkgICAgZm9yIGZpbCBpbiBgY2F0ICIkc2F2ZV9hcmciYAotIAkgICAgZG8KLS0jCSAgICAgIG1vcmVhcmdzPSIkbW9yZWFyZ3MgJGZpbCIKLSsjCSAgICAgIGZ1bmNfYXBwZW5kIG1vcmVhcmdzICIgJGZpbCIKLSAJICAgICAgYXJnPSRmaWwKLSAJICAgICAgIyBBIGxpYnRvb2wtY29udHJvbGxlZCBvYmplY3QuCi0gCi1AQCAtNDQ3NSw3ICs1MzMxLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAKLSAJCSAgaWYgdGVzdCAiJHByZXYiID0gZGxmaWxlczsgdGhlbgotIAkJICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0geWVzICYmIHRlc3QgIiRkbG9wZW5fc3VwcG9ydCIgPSB5ZXM7IHRoZW4KLS0JCSAgICAgIGRsZmlsZXM9IiRkbGZpbGVzICRwaWNfb2JqZWN0IgotKwkJICAgICAgZnVuY19hcHBlbmQgZGxmaWxlcyAiICRwaWNfb2JqZWN0IgotIAkJICAgICAgcHJldj0KLSAJCSAgICAgIGNvbnRpbnVlCi0gCQkgICAgZWxzZQotQEAgLTQ0ODcsNyArNTM0Myw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCQkgICMgQ0hFQ0sgTUU6ICBJIHRoaW5rIEkgYnVzdGVkIHRoaXMuICAtT3NzYW1hCi0gCQkgIGlmIHRlc3QgIiRwcmV2IiA9IGRscHJlZmlsZXM7IHRoZW4KLSAJCSAgICAjIFByZWxvYWQgdGhlIG9sZC1zdHlsZSBvYmplY3QuCi0tCQkgICAgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJHBpY19vYmplY3QiCi0rCQkgICAgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRwaWNfb2JqZWN0IgotIAkJICAgIHByZXY9Ci0gCQkgIGZpCi0gCi1AQCAtNDU1NywxMiArNTQxMywxMiBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgIGlmIHRlc3QgIiRwcmV2IiA9IHJwYXRoOyB0aGVuCi0gCSAgICBjYXNlICIkcnBhdGggIiBpbgotIAkgICAgKiIgJGFyZyAiKikgOzsKLS0JICAgICopIHJwYXRoPSIkcnBhdGggJGFyZyIgOzsKLSsJICAgICopIGZ1bmNfYXBwZW5kIHJwYXRoICIgJGFyZyIgOzsKLSAJICAgIGVzYWMKLSAJICBlbHNlCi0gCSAgICBjYXNlICIkeHJwYXRoICIgaW4KLSAJICAgICoiICRhcmcgIiopIDs7Ci0tCSAgICAqKSB4cnBhdGg9IiR4cnBhdGggJGFyZyIgOzsKLSsJICAgICopIGZ1bmNfYXBwZW5kIHhycGF0aCAiICRhcmciIDs7Ci0gCSAgICBlc2FjCi0gCSAgZmkKLSAJICBwcmV2PQotQEAgLTQ1NzQsMjggKzU0MzAsMjggQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICBjb250aW51ZQotIAkgIDs7Ci0gCXdlYWspCi0tCSAgd2Vha19saWJzPSIkd2Vha19saWJzICRhcmciCi0rCSAgZnVuY19hcHBlbmQgd2Vha19saWJzICIgJGFyZyIKLSAJICBwcmV2PQotIAkgIGNvbnRpbnVlCi0gCSAgOzsKLSAJeGNjbGlua2VyKQotLQkgIGxpbmtlcl9mbGFncz0iJGxpbmtlcl9mbGFncyAkcWFyZyIKLS0JICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRxYXJnIgotKwkgIGZ1bmNfYXBwZW5kIGxpbmtlcl9mbGFncyAiICRxYXJnIgotKwkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJHFhcmciCi0gCSAgcHJldj0KLSAJICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkcWFyZyIKLSAJICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJHFhcmciCi0gCSAgY29udGludWUKLSAJICA7OwotIAl4Y29tcGlsZXIpCi0tCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkcWFyZyIKLSsJICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRxYXJnIgotIAkgIHByZXY9Ci0gCSAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJHFhcmciCi0gCSAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRxYXJnIgotIAkgIGNvbnRpbnVlCi0gCSAgOzsKLSAJeGxpbmtlcikKLS0JICBsaW5rZXJfZmxhZ3M9IiRsaW5rZXJfZmxhZ3MgJHFhcmciCi0tCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkd2wkcWFyZyIKLSsJICBmdW5jX2FwcGVuZCBsaW5rZXJfZmxhZ3MgIiAkcWFyZyIKLSsJICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICR3bCRxYXJnIgotIAkgIHByZXY9Ci0gCSAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJHdsJHFhcmciCi0gCSAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICR3bCRxYXJnIgotQEAgLTQ2ODYsMTUgKzU1NDIsMTYgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJOzsKLSAKLSAgICAgICAtTCopCi0tCWZ1bmNfc3RyaXBuYW1lICctTCcgJycgIiRhcmciCi0tCWRpcj0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0tCWlmIHRlc3QgLXogIiRkaXIiOyB0aGVuCi0rCWZ1bmNfc3RyaXBuYW1lICItTCIgJycgIiRhcmciCi0rCWlmIHRlc3QgLXogIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiOyB0aGVuCi0gCSAgaWYgdGVzdCAiJCMiIC1ndCAwOyB0aGVuCi0gCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJyZXF1aXJlIG5vIHNwYWNlIGJldHdlZW4gXGAtTCcgYW5kIFxgJDEnIgotIAkgIGVsc2UKLSAJICAgIGZ1bmNfZmF0YWxfZXJyb3IgIm5lZWQgcGF0aCBmb3IgXGAtTCcgb3B0aW9uIgotIAkgIGZpCi0gCWZpCi0rCWZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgotKwlkaXI9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAotIAkjIFdlIG5lZWQgYW4gYWJzb2x1dGUgcGF0aC4KLSAJY2FzZSAkZGlyIGluCi0gCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgOzsKLUBAIC00NzA2LDEwICs1NTYzLDE2IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgOzsKLSAJZXNhYwotIAljYXNlICIkZGVwbGlicyAiIGluCi0tCSoiIC1MJGRpciAiKikgOzsKLSsJKiIgLUwkZGlyICIqIHwgKiIgJGFyZyAiKikKLSsJICAjIFdpbGwgb25seSBoYXBwZW4gZm9yIGFic29sdXRlIG9yIHN5c3Jvb3QgYXJndW1lbnRzCi0rCSAgOzsKLSAJKikKLS0JICBkZXBsaWJzPSIkZGVwbGlicyAtTCRkaXIiCi0tCSAgbGliX3NlYXJjaF9wYXRoPSIkbGliX3NlYXJjaF9wYXRoICRkaXIiCi0rCSAgIyBQcmVzZXJ2ZSBzeXNyb290LCBidXQgbmV2ZXIgaW5jbHVkZSByZWxhdGl2ZSBkaXJlY3RvcmllcwotKwkgIGNhc2UgJGRpciBpbgotKwkgICAgW1xcL10qIHwgW0EtWmEtel06W1xcL10qIHwgPSopIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkYXJnIiA7OwotKwkgICAgKikgZnVuY19hcHBlbmQgZGVwbGlicyAiIC1MJGRpciIgOzsKLSsJICBlc2FjCi0rCSAgZnVuY19hcHBlbmQgbGliX3NlYXJjaF9wYXRoICIgJGRpciIKLSAJICA7OwotIAllc2FjCi0gCWNhc2UgJGhvc3QgaW4KLUBAIC00NzE4LDEyICs1NTgxLDEyIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgY2FzZSA6JGRsbHNlYXJjaHBhdGg6IGluCi0gCSAgKiI6JGRpcjoiKikgOzsKLSAJICA6OikgZGxsc2VhcmNocGF0aD0kZGlyOzsKLS0JICAqKSBkbGxzZWFyY2hwYXRoPSIkZGxsc2VhcmNocGF0aDokZGlyIjs7Ci0rCSAgKikgZnVuY19hcHBlbmQgZGxsc2VhcmNocGF0aCAiOiRkaXIiOzsKLSAJICBlc2FjCi0gCSAgY2FzZSA6JGRsbHNlYXJjaHBhdGg6IGluCi0gCSAgKiI6JHRlc3RiaW5kaXI6IiopIDs7Ci0gCSAgOjopIGRsbHNlYXJjaHBhdGg9JHRlc3RiaW5kaXI7OwotLQkgICopIGRsbHNlYXJjaHBhdGg9IiRkbGxzZWFyY2hwYXRoOiR0ZXN0YmluZGlyIjs7Ci0rCSAgKikgZnVuY19hcHBlbmQgZGxsc2VhcmNocGF0aCAiOiR0ZXN0YmluZGlyIjs7Ci0gCSAgZXNhYwotIAkgIDs7Ci0gCWVzYWMKLUBAIC00NzQ3LDcgKzU2MTAsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgOzsKLSAJICAqLSotcmhhcHNvZHkqIHwgKi0qLWRhcndpbjEuWzAxMl0pCi0gCSAgICAjIFJoYXBzb2R5IEMgYW5kIG1hdGggbGlicmFyaWVzIGFyZSBpbiB0aGUgU3lzdGVtIGZyYW1ld29yawotLQkgICAgZGVwbGlicz0iJGRlcGxpYnMgU3lzdGVtLmx0ZnJhbWV3b3JrIgotKwkgICAgZnVuY19hcHBlbmQgZGVwbGlicyAiIFN5c3RlbS5sdGZyYW1ld29yayIKLSAJICAgIGNvbnRpbnVlCi0gCSAgICA7OwotIAkgICotKi1zY28zLjJ2NSogfCAqLSotc2NvNXY2KikKLUBAIC00NzU4LDkgKzU2MjEsNiBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgIyBDb21waWxlciBpbnNlcnRzIGxpYmMgaW4gdGhlIGNvcnJlY3QgcGxhY2UgZm9yIHRocmVhZHMgdG8gd29yawotIAkgICAgdGVzdCAiWCRhcmciID0gIlgtbGMiICYmIGNvbnRpbnVlCi0gCSAgICA7OwotLQkgICotKi1saW51eCopCi0tCSAgICB0ZXN0ICJYJGFyZyIgPSAiWC1sYyIgJiYgY29udGludWUKLS0JICAgIDs7Ci0gCSAgZXNhYwotIAllbGlmIHRlc3QgIlgkYXJnIiA9ICJYLWxjX3IiOyB0aGVuCi0gCSBjYXNlICRob3N0IGluCi1AQCAtNDc3MCw3ICs1NjMwLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgOzsKLSAJIGVzYWMKLSAJZmkKLS0JZGVwbGlicz0iJGRlcGxpYnMgJGFyZyIKLSsJZnVuY19hcHBlbmQgZGVwbGlicyAiICRhcmciCi0gCWNvbnRpbnVlCi0gCTs7Ci0gCi1AQCAtNDc4Miw4ICs1NjQyLDggQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAgICAgICAjIFRydTY0IFVOSVggdXNlcyAtbW9kZWwgW2FyZ10gdG8gZGV0ZXJtaW5lIHRoZSBsYXlvdXQgb2YgQysrCi0gICAgICAgIyBjbGFzc2VzLCBuYW1lIG1hbmdsaW5nLCBhbmQgZXhjZXB0aW9uIGhhbmRsaW5nLgotICAgICAgICMgRGFyd2luIHVzZXMgdGhlIC1hcmNoIGZsYWcgdG8gZGV0ZXJtaW5lIG91dHB1dCBhcmNoaXRlY3R1cmUuCi0tICAgICAgLW1vZGVsfC1hcmNofC1pc3lzcm9vdCkKLS0JY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkYXJnIgotKyAgICAgIC1tb2RlbHwtYXJjaHwtaXN5c3Jvb3R8LS1zeXNyb290KQotKwlmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRhcmciCi0gCWZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRhcmciCi0gCWZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkYXJnIgotIAlwcmV2PXhjb21waWxlcgotQEAgLTQ3OTEsMTIgKzU2NTEsMTIgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJOzsKLSAKLSAgICAgICAtbXR8LW10aHJlYWRzfC1rdGhyZWFkfC1LdGhyZWFkfC1wdGhyZWFkfC1wdGhyZWFkc3wtLXRocmVhZC1zYWZlfC10aHJlYWRzKQotLQljb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRhcmciCi0rCWZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJGFyZyIKLSAJZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJGFyZyIKLSAJZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRhcmciCi0gCWNhc2UgIiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiIGluCi0gCSAgICAqIiAkYXJnICIqKSA7OwotLQkgICAgKiApIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzPSIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgJGFyZyIgOzsKLSsJICAgICogKSBmdW5jX2FwcGVuZCBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiICRhcmciIDs7Ci0gCWVzYWMKLSAJY29udGludWUKLSAJOzsKLUBAIC00ODYzLDEzICs1NzIzLDE3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSMgV2UgbmVlZCBhbiBhYnNvbHV0ZSBwYXRoLgotIAljYXNlICRkaXIgaW4KLSAJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSA7OwotKwk9KikKLSsJICBmdW5jX3N0cmlwbmFtZSAnPScgJycgIiRkaXIiCi0rCSAgZGlyPSRsdF9zeXNyb290JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAotKwkgIDs7Ci0gCSopCi0gCSAgZnVuY19mYXRhbF9lcnJvciAib25seSBhYnNvbHV0ZSBydW4tcGF0aHMgYXJlIGFsbG93ZWQiCi0gCSAgOzsKLSAJZXNhYwotIAljYXNlICIkeHJwYXRoICIgaW4KLSAJKiIgJGRpciAiKikgOzsKLS0JKikgeHJwYXRoPSIkeHJwYXRoICRkaXIiIDs7Ci0rCSopIGZ1bmNfYXBwZW5kIHhycGF0aCAiICRkaXIiIDs7Ci0gCWVzYWMKLSAJY29udGludWUKLSAJOzsKLUBAIC00OTIyLDggKzU3ODYsOCBAQCBmdW5jX21vZGVfbGluayAoKQotIAlmb3IgZmxhZyBpbiAkYXJnczsgZG8KLSAJICBJRlM9IiRzYXZlX2lmcyIKLSAgICAgICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGZsYWciCi0tCSAgYXJnPSIkYXJnICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLS0JICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSsJICBmdW5jX2FwcGVuZCBhcmcgIiAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0rCSAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0gCWRvbmUKLSAJSUZTPSIkc2F2ZV9pZnMiCi0gCWZ1bmNfc3RyaXBuYW1lICcgJyAnJyAiJGFyZyIKLUBAIC00OTM4LDkgKzU4MDIsOSBAQCBmdW5jX21vZGVfbGluayAoKQotIAlmb3IgZmxhZyBpbiAkYXJnczsgZG8KLSAJICBJRlM9IiRzYXZlX2lmcyIKLSAgICAgICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGZsYWciCi0tCSAgYXJnPSIkYXJnICR3bCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLS0JICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICR3bCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLS0JICBsaW5rZXJfZmxhZ3M9IiRsaW5rZXJfZmxhZ3MgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotKwkgIGZ1bmNfYXBwZW5kIGFyZyAiICR3bCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSsJICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICR3bCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSsJICBmdW5jX2FwcGVuZCBsaW5rZXJfZmxhZ3MgIiAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0gCWRvbmUKLSAJSUZTPSIkc2F2ZV9pZnMiCi0gCWZ1bmNfc3RyaXBuYW1lICcgJyAnJyAiJGFyZyIKLUBAIC00OTY4LDI0ICs1ODMyLDI3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCWFyZz0iJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotIAk7OwotIAotLSAgICAgICMgLTY0LCAtbWlwc1swLTldIGVuYWJsZSA2NC1iaXQgbW9kZSBvbiB0aGUgU0dJIGNvbXBpbGVyCi0tICAgICAgIyAtclswLTldWzAtOV0qIHNwZWNpZmllcyB0aGUgcHJvY2Vzc29yIG9uIHRoZSBTR0kgY29tcGlsZXIKLS0gICAgICAjIC14YXJjaD0qLCAteHRhcmdldD0qIGVuYWJsZSA2NC1iaXQgbW9kZSBvbiB0aGUgU3VuIGNvbXBpbGVyCi0tICAgICAgIyArREEqLCArREQqIGVuYWJsZSA2NC1iaXQgbW9kZSBvbiB0aGUgSFAgY29tcGlsZXIKLS0gICAgICAjIC1xKiBwYXNzIHRocm91Z2ggY29tcGlsZXIgYXJncyBmb3IgdGhlIElCTSBjb21waWxlcgotLSAgICAgICMgLW0qLCAtdFs0NV0qLCAtdHhzY2FsZSogcGFzcyB0aHJvdWdoIGFyY2hpdGVjdHVyZS1zcGVjaWZpYwotLSAgICAgICMgY29tcGlsZXIgYXJncyBmb3IgR0NDCi0tICAgICAgIyAtRi9wYXRoIGdpdmVzIHBhdGggdG8gdW5pbnN0YWxsZWQgZnJhbWV3b3JrcywgZ2NjIG9uIGRhcndpbgotLSAgICAgICMgLXAsIC1wZywgLS1jb3ZlcmFnZSwgLWZwcm9maWxlLSogcGFzcyB0aHJvdWdoIHByb2ZpbGluZyBmbGFnIGZvciBHQ0MKLS0gICAgICAjIEBmaWxlIEdDQyByZXNwb25zZSBmaWxlcwotLSAgICAgICMgLXRwPSogUG9ydGxhbmQgcGdjYyB0YXJnZXQgcHJvY2Vzc29yIHNlbGVjdGlvbgotKyAgICAgICMgRmxhZ3MgdG8gYmUgcGFzc2VkIHRocm91Z2ggdW5jaGFuZ2VkLCB3aXRoIHJhdGlvbmFsZToKLSsgICAgICAjIC02NCwgLW1pcHNbMC05XSAgICAgIGVuYWJsZSA2NC1iaXQgbW9kZSBmb3IgdGhlIFNHSSBjb21waWxlcgotKyAgICAgICMgLXJbMC05XVswLTldKiAgICAgICAgc3BlY2lmeSBwcm9jZXNzb3IgZm9yIHRoZSBTR0kgY29tcGlsZXIKLSsgICAgICAjIC14YXJjaD0qLCAteHRhcmdldD0qIGVuYWJsZSA2NC1iaXQgbW9kZSBmb3IgdGhlIFN1biBjb21waWxlcgotKyAgICAgICMgK0RBKiwgK0REKiAgICAgICAgICAgZW5hYmxlIDY0LWJpdCBtb2RlIGZvciB0aGUgSFAgY29tcGlsZXIKLSsgICAgICAjIC1xKiAgICAgICAgICAgICAgICAgIGNvbXBpbGVyIGFyZ3MgZm9yIHRoZSBJQk0gY29tcGlsZXIKLSsgICAgICAjIC1tKiwgLXRbNDVdKiwgLXR4c2NhbGUqIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBmbGFncyBmb3IgR0NDCi0rICAgICAgIyAtRi9wYXRoICAgICAgICAgICAgICBwYXRoIHRvIHVuaW5zdGFsbGVkIGZyYW1ld29ya3MsIGdjYyBvbiBkYXJ3aW4KLSsgICAgICAjIC1wLCAtcGcsIC0tY292ZXJhZ2UsIC1mcHJvZmlsZS0qICBwcm9maWxpbmcgZmxhZ3MgZm9yIEdDQwotKyAgICAgICMgQGZpbGUgICAgICAgICAgICAgICAgR0NDIHJlc3BvbnNlIGZpbGVzCi0rICAgICAgIyAtdHA9KiAgICAgICAgICAgICAgICBQb3J0bGFuZCBwZ2NjIHRhcmdldCBwcm9jZXNzb3Igc2VsZWN0aW9uCi0rICAgICAgIyAtLXN5c3Jvb3Q9KiAgICAgICAgICBmb3Igc3lzcm9vdCBzdXBwb3J0Ci0rICAgICAgIyAtTyosIC1mbHRvKiwgLWZ3aG9wciosIC1mdXNlLWxpbmtlci1wbHVnaW4gR0NDIGxpbmstdGltZSBvcHRpbWl6YXRpb24KLSAgICAgICAtNjR8LW1pcHNbMC05XXwtclswLTldWzAtOV0qfC14YXJjaD0qfC14dGFyZ2V0PSp8K0RBKnwrREQqfC1xKnwtbSp8IFwKLS0gICAgICAtdFs0NV0qfC10eHNjYWxlKnwtcHwtcGd8LS1jb3ZlcmFnZXwtZnByb2ZpbGUtKnwtRip8QCp8LXRwPSopCi0rICAgICAgLXRbNDVdKnwtdHhzY2FsZSp8LXB8LXBnfC0tY292ZXJhZ2V8LWZwcm9maWxlLSp8LUYqfEAqfC10cD0qfC0tc3lzcm9vdD0qfCBcCi0rICAgICAgLU8qfC1mbHRvKnwtZndob3ByKnwtZnVzZS1saW5rZXItcGx1Z2luKQotICAgICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKLSAJYXJnPSIkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0gICAgICAgICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkYXJnIgotICAgICAgICAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRhcmciCi0tICAgICAgICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRhcmciCi0rICAgICAgICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRhcmciCi0gICAgICAgICBjb250aW51ZQotICAgICAgICAgOzsKLSAKLUBAIC00OTk3LDcgKzU4NjQsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAotICAgICAgICouJG9iamV4dCkKLSAJIyBBIHN0YW5kYXJkIG9iamVjdC4KLS0Jb2Jqcz0iJG9ianMgJGFyZyIKLSsJZnVuY19hcHBlbmQgb2JqcyAiICRhcmciCi0gCTs7Ci0gCi0gICAgICAgKi5sbykKLUBAIC01MDI4LDcgKzU4OTUsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAotIAkgICAgaWYgdGVzdCAiJHByZXYiID0gZGxmaWxlczsgdGhlbgotIAkgICAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IHllcyAmJiB0ZXN0ICIkZGxvcGVuX3N1cHBvcnQiID0geWVzOyB0aGVuCi0tCQlkbGZpbGVzPSIkZGxmaWxlcyAkcGljX29iamVjdCIKLSsJCWZ1bmNfYXBwZW5kIGRsZmlsZXMgIiAkcGljX29iamVjdCIKLSAJCXByZXY9Ci0gCQljb250aW51ZQotIAkgICAgICBlbHNlCi1AQCAtNTA0MCw3ICs1OTA3LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgICMgQ0hFQ0sgTUU6ICBJIHRoaW5rIEkgYnVzdGVkIHRoaXMuICAtT3NzYW1hCi0gCSAgICBpZiB0ZXN0ICIkcHJldiIgPSBkbHByZWZpbGVzOyB0aGVuCi0gCSAgICAgICMgUHJlbG9hZCB0aGUgb2xkLXN0eWxlIG9iamVjdC4KLS0JICAgICAgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJHBpY19vYmplY3QiCi0rCSAgICAgIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkcGljX29iamVjdCIKLSAJICAgICAgcHJldj0KLSAJICAgIGZpCi0gCi1AQCAtNTA4NSwyNCArNTk1MiwyNSBAQCBmdW5jX21vZGVfbGluayAoKQotIAotICAgICAgICouJGxpYmV4dCkKLSAJIyBBbiBhcmNoaXZlLgotLQlkZXBsaWJzPSIkZGVwbGlicyAkYXJnIgotLQlvbGRfZGVwbGlicz0iJG9sZF9kZXBsaWJzICRhcmciCi0rCWZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkYXJnIgotKwlmdW5jX2FwcGVuZCBvbGRfZGVwbGlicyAiICRhcmciCi0gCWNvbnRpbnVlCi0gCTs7Ci0gCi0gICAgICAgKi5sYSkKLSAJIyBBIGxpYnRvb2wtY29udHJvbGxlZCBsaWJyYXJ5LgotIAotKwlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGFyZyIKLSAJaWYgdGVzdCAiJHByZXYiID0gZGxmaWxlczsgdGhlbgotIAkgICMgVGhpcyBsaWJyYXJ5IHdhcyBzcGVjaWZpZWQgd2l0aCAtZGxvcGVuLgotLQkgIGRsZmlsZXM9IiRkbGZpbGVzICRhcmciCi0rCSAgZnVuY19hcHBlbmQgZGxmaWxlcyAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCi0gCSAgcHJldj0KLSAJZWxpZiB0ZXN0ICIkcHJldiIgPSBkbHByZWZpbGVzOyB0aGVuCi0gCSAgIyBUaGUgbGlicmFyeSB3YXMgc3BlY2lmaWVkIHdpdGggLWRscHJlb3Blbi4KLS0JICBkbHByZWZpbGVzPSIkZGxwcmVmaWxlcyAkYXJnIgotKwkgIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgotIAkgIHByZXY9Ci0gCWVsc2UKLS0JICBkZXBsaWJzPSIkZGVwbGlicyAkYXJnIgotKwkgIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgotIAlmaQotIAljb250aW51ZQotIAk7OwotQEAgLTUxMjcsNyArNTk5NSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gICAgICAgZnVuY19mYXRhbF9oZWxwICJ0aGUgXGAkcHJldmFyZycgb3B0aW9uIHJlcXVpcmVzIGFuIGFyZ3VtZW50IgotIAotICAgICBpZiB0ZXN0ICIkZXhwb3J0X2R5bmFtaWMiID0geWVzICYmIHRlc3QgLW4gIiRleHBvcnRfZHluYW1pY19mbGFnX3NwZWMiOyB0aGVuCi0tICAgICAgZXZhbCAiYXJnPVwiJGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY1wiIgotKyAgICAgIGV2YWwgYXJnPVwiJGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY1wiCi0gICAgICAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJGFyZyIKLSAgICAgICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJGFyZyIKLSAgICAgZmkKLUBAIC01MTQ0LDExICs2MDEyLDEzIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gICAgIGVsc2UKLSAgICAgICBzaGxpYl9zZWFyY2hfcGF0aD0KLSAgICAgZmkKLS0gICAgZXZhbCAic3lzX2xpYl9zZWFyY2hfcGF0aD1cIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWNcIiIKLS0gICAgZXZhbCAic3lzX2xpYl9kbHNlYXJjaF9wYXRoPVwiJHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjXCIiCi0rICAgIGV2YWwgc3lzX2xpYl9zZWFyY2hfcGF0aD1cIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWNcIgotKyAgICBldmFsIHN5c19saWJfZGxzZWFyY2hfcGF0aD1cIiRzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlY1wiCi0gCi0gICAgIGZ1bmNfZGlybmFtZSAiJG91dHB1dCIgIi8iICIiCi0gICAgIG91dHB1dF9vYmpkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JG9iamRpciIKLSsgICAgZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXRfb2JqZGlyLyIKLSsgICAgdG9vbF9vdXRwdXRfb2JqZGlyPSRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQKLSAgICAgIyBDcmVhdGUgdGhlIG9iamVjdCBkaXJlY3RvcnkuCi0gICAgIGZ1bmNfbWtkaXJfcCAiJG91dHB1dF9vYmpkaXIiCi0gCi1AQCAtNTE2OSwxMiArNjAzOSwxMiBAQCBmdW5jX21vZGVfbGluayAoKQotICAgICAjIEZpbmQgYWxsIGludGVyZGVwZW5kZW50IGRlcGxpYnMgYnkgc2VhcmNoaW5nIGZvciBsaWJyYXJpZXMKLSAgICAgIyB0aGF0IGFyZSBsaW5rZWQgbW9yZSB0aGFuIG9uY2UgKGUuZy4gLWxhIC1sYiAtbGEpCi0gICAgIGZvciBkZXBsaWIgaW4gJGRlcGxpYnM7IGRvCi0tICAgICAgaWYgJG9wdF9kdXBsaWNhdGVfZGVwcyA7IHRoZW4KLSsgICAgICBpZiAkb3B0X3ByZXNlcnZlX2R1cF9kZXBzIDsgdGhlbgotIAljYXNlICIkbGlicyAiIGluCi0tCSoiICRkZXBsaWIgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJGRlcGxpYiIgOzsKLSsJKiIgJGRlcGxpYiAiKikgZnVuY19hcHBlbmQgc3BlY2lhbGRlcGxpYnMgIiAkZGVwbGliIiA7OwotIAllc2FjCi0gICAgICAgZmkKLS0gICAgICBsaWJzPSIkbGlicyAkZGVwbGliIgotKyAgICAgIGZ1bmNfYXBwZW5kIGxpYnMgIiAkZGVwbGliIgotICAgICBkb25lCi0gCi0gICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBsaWI7IHRoZW4KLUBAIC01MTg3LDkgKzYwNTcsOSBAQCBmdW5jX21vZGVfbGluayAoKQotICAgICAgIGlmICRvcHRfZHVwbGljYXRlX2NvbXBpbGVyX2dlbmVyYXRlZF9kZXBzOyB0aGVuCi0gCWZvciBwcmVfcG9zdF9kZXAgaW4gJHByZWRlcHMgJHBvc3RkZXBzOyBkbwotIAkgIGNhc2UgIiRwcmVfcG9zdF9kZXBzICIgaW4KLS0JICAqIiAkcHJlX3Bvc3RfZGVwICIqKSBzcGVjaWFsZGVwbGlicz0iJHNwZWNpYWxkZXBsaWJzICRwcmVfcG9zdF9kZXBzIiA7OwotKwkgICoiICRwcmVfcG9zdF9kZXAgIiopIGZ1bmNfYXBwZW5kIHNwZWNpYWxkZXBsaWJzICIgJHByZV9wb3N0X2RlcHMiIDs7Ci0gCSAgZXNhYwotLQkgIHByZV9wb3N0X2RlcHM9IiRwcmVfcG9zdF9kZXBzICRwcmVfcG9zdF9kZXAiCi0rCSAgZnVuY19hcHBlbmQgcHJlX3Bvc3RfZGVwcyAiICRwcmVfcG9zdF9kZXAiCi0gCWRvbmUKLSAgICAgICBmaQotICAgICAgIHByZV9wb3N0X2RlcHM9Ci1AQCAtNTI1Niw4ICs2MTI2LDkgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJZm9yIGxpYiBpbiAkZGxwcmVmaWxlczsgZG8KLSAJICAjIElnbm9yZSBub24tbGlidG9vbC1saWJzCi0gCSAgZGVwZW5kZW5jeV9saWJzPQotKwkgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkbGliIgotIAkgIGNhc2UgJGxpYiBpbgotLQkgICoubGEpCWZ1bmNfc291cmNlICIkbGliIiA7OwotKwkgICoubGEpCWZ1bmNfc291cmNlICIkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IiA7OwotIAkgIGVzYWMKLSAKLSAJICAjIENvbGxlY3QgcHJlb3BlbmVkIGxpYnRvb2wgZGVwbGlicywgZXhjZXB0IGFueSB0aGlzIGxpYnJhcnkKLUBAIC01MjY3LDcgKzYxMzgsNyBAQCBmdW5jX21vZGVfbGluayAoKQotICAgICAgICAgICAgIGRlcGxpYl9iYXNlPSRmdW5jX2Jhc2VuYW1lX3Jlc3VsdAotIAkgICAgY2FzZSAiICR3ZWFrX2xpYnMgIiBpbgotIAkgICAgKiIgJGRlcGxpYl9iYXNlICIqKSA7OwotLQkgICAgKikgZGVwbGlicz0iJGRlcGxpYnMgJGRlcGxpYiIgOzsKLSsJICAgICopIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkZGVwbGliIiA7OwotIAkgICAgZXNhYwotIAkgIGRvbmUKLSAJZG9uZQotQEAgLTUyODgsMTEgKzYxNTksMTEgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgIGNvbXBpbGVfZGVwbGlicz0iJGRlcGxpYiAkY29tcGlsZV9kZXBsaWJzIgotIAkgICAgZmluYWxpemVfZGVwbGlicz0iJGRlcGxpYiAkZmluYWxpemVfZGVwbGlicyIKLSAJICBlbHNlCi0tCSAgICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWIiCi0rCSAgICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRkZXBsaWIiCi0gCSAgICBpZiB0ZXN0ICIkbGlua21vZGUiID0gbGliIDsgdGhlbgotIAkJY2FzZSAiJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgaW4KLSAJCSAgICAqIiAkZGVwbGliICIqKSA7OwotLQkJICAgICogKSBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz0iJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICRkZXBsaWIiIDs7Ci0rCQkgICAgKiApIGZ1bmNfYXBwZW5kIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgJGRlcGxpYiIgOzsKLSAJCWVzYWMKLSAJICAgIGZpCi0gCSAgZmkKLUBAIC01Mzc3LDcgKzYyNDgsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IGxpYiA7IHRoZW4KLSAJCWNhc2UgIiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiIGluCi0gCQkgICAgKiIgJGRlcGxpYiAiKikgOzsKLS0JCSAgICAqICkgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3M9IiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAkZGVwbGliIiA7OwotKwkJICAgICogKSBmdW5jX2FwcGVuZCBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiICRkZXBsaWIiIDs7Ci0gCQllc2FjCi0gCSAgICBmaQotIAkgIGZpCi1AQCAtNTM5MCw3ICs2MjYxLDggQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgIHRlc3QgIiRwYXNzIiA9IGNvbnYgJiYgY29udGludWUKLSAJICAgIG5ld2RlcGVuZGVuY3lfbGlicz0iJGRlcGxpYiAkbmV3ZGVwZW5kZW5jeV9saWJzIgotIAkgICAgZnVuY19zdHJpcG5hbWUgJy1MJyAnJyAiJGRlcGxpYiIKLS0JICAgIG5ld2xpYl9zZWFyY2hfcGF0aD0iJG5ld2xpYl9zZWFyY2hfcGF0aCAkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgotKwkgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCi0rCSAgICBmdW5jX2FwcGVuZCBuZXdsaWJfc2VhcmNoX3BhdGggIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgotIAkgICAgOzsKLSAJICBwcm9nKQotIAkgICAgaWYgdGVzdCAiJHBhc3MiID0gY29udjsgdGhlbgotQEAgLTU0MDQsNyArNjI3Niw4IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICAgIGZpbmFsaXplX2RlcGxpYnM9IiRkZXBsaWIgJGZpbmFsaXplX2RlcGxpYnMiCi0gCSAgICBmaQotIAkgICAgZnVuY19zdHJpcG5hbWUgJy1MJyAnJyAiJGRlcGxpYiIKLS0JICAgIG5ld2xpYl9zZWFyY2hfcGF0aD0iJG5ld2xpYl9zZWFyY2hfcGF0aCAkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgotKwkgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCi0rCSAgICBmdW5jX2FwcGVuZCBuZXdsaWJfc2VhcmNoX3BhdGggIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgotIAkgICAgOzsKLSAJICAqKQotIAkgICAgZnVuY193YXJuaW5nICJcYC1MJyBpcyBpZ25vcmVkIGZvciBhcmNoaXZlcy9vYmplY3RzIgotQEAgLTU0MTUsMTcgKzYyODgsMjEgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJLVIqKQotIAkgIGlmIHRlc3QgIiRwYXNzIiA9IGxpbms7IHRoZW4KLSAJICAgIGZ1bmNfc3RyaXBuYW1lICctUicgJycgIiRkZXBsaWIiCi0tCSAgICBkaXI9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAotKwkgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCi0rCSAgICBkaXI9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAotIAkgICAgIyBNYWtlIHN1cmUgdGhlIHhycGF0aCBjb250YWlucyBvbmx5IHVuaXF1ZSBkaXJlY3Rvcmllcy4KLSAJICAgIGNhc2UgIiR4cnBhdGggIiBpbgotIAkgICAgKiIgJGRpciAiKikgOzsKLS0JICAgICopIHhycGF0aD0iJHhycGF0aCAkZGlyIiA7OwotKwkgICAgKikgZnVuY19hcHBlbmQgeHJwYXRoICIgJGRpciIgOzsKLSAJICAgIGVzYWMKLSAJICBmaQotIAkgIGRlcGxpYnM9IiRkZXBsaWIgJGRlcGxpYnMiCi0gCSAgY29udGludWUKLSAJICA7OwotLQkqLmxhKSBsaWI9IiRkZXBsaWIiIDs7Ci0rCSoubGEpCi0rCSAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRkZXBsaWIiCi0rCSAgbGliPSRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKLSsJICA7OwotIAkqLiRsaWJleHQpCi0gCSAgaWYgdGVzdCAiJHBhc3MiID0gY29udjsgdGhlbgotIAkgICAgZGVwbGlicz0iJGRlcGxpYiAkZGVwbGlicyIKLUBAIC01NDg4LDExICs2MzY1LDExIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICBpZiB0ZXN0ICIkcGFzcyIgPSBkbHByZW9wZW4gfHwgdGVzdCAiJGRsb3Blbl9zdXBwb3J0IiAhPSB5ZXMgfHwgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSBubzsgdGhlbgotIAkgICAgICAjIElmIHRoZXJlIGlzIG5vIGRsb3BlbiBzdXBwb3J0IG9yIHdlJ3JlIGxpbmtpbmcgc3RhdGljYWxseSwKLSAJICAgICAgIyB3ZSBuZWVkIHRvIHByZWxvYWQuCi0tCSAgICAgIG5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRkZXBsaWIiCi0rCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkZGVwbGliIgotIAkgICAgICBjb21waWxlX2RlcGxpYnM9IiRkZXBsaWIgJGNvbXBpbGVfZGVwbGlicyIKLSAJICAgICAgZmluYWxpemVfZGVwbGlicz0iJGRlcGxpYiAkZmluYWxpemVfZGVwbGlicyIKLSAJICAgIGVsc2UKLS0JICAgICAgbmV3ZGxmaWxlcz0iJG5ld2RsZmlsZXMgJGRlcGxpYiIKLSsJICAgICAgZnVuY19hcHBlbmQgbmV3ZGxmaWxlcyAiICRkZXBsaWIiCi0gCSAgICBmaQotIAkgIGZpCi0gCSAgY29udGludWUKLUBAIC01NTM4LDcgKzY0MTUsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgIGZvciB0bXBfaW5oZXJpdGVkX2xpbmtlcl9mbGFnIGluICR0bXBfaW5oZXJpdGVkX2xpbmtlcl9mbGFnczsgZG8KLSAJICAgIGNhc2UgIiAkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiBpbgotIAkgICAgICAqIiAkdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZyAiKikgOzsKLS0JICAgICAgKikgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3M9IiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAkdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZyI7OwotKwkgICAgICAqKSBmdW5jX2FwcGVuZCBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiICR0bXBfaW5oZXJpdGVkX2xpbmtlcl9mbGFnIjs7Ci0gCSAgICBlc2FjCi0gCSAgZG9uZQotIAlmaQotQEAgLTU1NDYsOCArNjQyMyw4IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCWlmIHRlc3QgIiRsaW5rbW9kZSwkcGFzcyIgPSAibGliLGxpbmsiIHx8Ci0gCSAgIHRlc3QgIiRsaW5rbW9kZSwkcGFzcyIgPSAicHJvZyxzY2FuIiB8fAotIAkgICB7IHRlc3QgIiRsaW5rbW9kZSIgIT0gcHJvZyAmJiB0ZXN0ICIkbGlua21vZGUiICE9IGxpYjsgfTsgdGhlbgotLQkgIHRlc3QgLW4gIiRkbG9wZW4iICYmIGRsZmlsZXM9IiRkbGZpbGVzICRkbG9wZW4iCi0tCSAgdGVzdCAtbiAiJGRscHJlb3BlbiIgJiYgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJGRscHJlb3BlbiIKLSsJICB0ZXN0IC1uICIkZGxvcGVuIiAmJiBmdW5jX2FwcGVuZCBkbGZpbGVzICIgJGRsb3BlbiIKLSsJICB0ZXN0IC1uICIkZGxwcmVvcGVuIiAmJiBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJGRscHJlb3BlbiIKLSAJZmkKLSAKLSAJaWYgdGVzdCAiJHBhc3MiID0gY29udjsgdGhlbgotQEAgLTU1NTgsMjAgKzY0MzUsMjAgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgICAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGZpbmQgbmFtZSBvZiBsaW5rIGxpYnJhcnkgZm9yIFxgJGxpYiciCi0gCSAgICBmaQotIAkgICAgIyBJdCBpcyBhIGxpYnRvb2wgY29udmVuaWVuY2UgbGlicmFyeSwgc28gYWRkIGluIGl0cyBvYmplY3RzLgotLQkgICAgY29udmVuaWVuY2U9IiRjb252ZW5pZW5jZSAkbGFkaXIvJG9iamRpci8kb2xkX2xpYnJhcnkiCi0tCSAgICBvbGRfY29udmVuaWVuY2U9IiRvbGRfY29udmVuaWVuY2UgJGxhZGlyLyRvYmpkaXIvJG9sZF9saWJyYXJ5IgotKwkgICAgZnVuY19hcHBlbmQgY29udmVuaWVuY2UgIiAkbGFkaXIvJG9iamRpci8kb2xkX2xpYnJhcnkiCi0rCSAgICBmdW5jX2FwcGVuZCBvbGRfY29udmVuaWVuY2UgIiAkbGFkaXIvJG9iamRpci8kb2xkX2xpYnJhcnkiCi0gCSAgZWxpZiB0ZXN0ICIkbGlua21vZGUiICE9IHByb2cgJiYgdGVzdCAiJGxpbmttb2RlIiAhPSBsaWI7IHRoZW4KLSAJICAgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJGxpYicgaXMgbm90IGEgY29udmVuaWVuY2UgbGlicmFyeSIKLSAJICBmaQotIAkgIHRtcF9saWJzPQotIAkgIGZvciBkZXBsaWIgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KLSAJICAgIGRlcGxpYnM9IiRkZXBsaWIgJGRlcGxpYnMiCi0tCSAgICBpZiAkb3B0X2R1cGxpY2F0ZV9kZXBzIDsgdGhlbgotKwkgICAgaWYgJG9wdF9wcmVzZXJ2ZV9kdXBfZGVwcyA7IHRoZW4KLSAJICAgICAgY2FzZSAiJHRtcF9saWJzICIgaW4KLS0JICAgICAgKiIgJGRlcGxpYiAiKikgc3BlY2lhbGRlcGxpYnM9IiRzcGVjaWFsZGVwbGlicyAkZGVwbGliIiA7OwotKwkgICAgICAqIiAkZGVwbGliICIqKSBmdW5jX2FwcGVuZCBzcGVjaWFsZGVwbGlicyAiICRkZXBsaWIiIDs7Ci0gCSAgICAgIGVzYWMKLSAJICAgIGZpCi0tCSAgICB0bXBfbGlicz0iJHRtcF9saWJzICRkZXBsaWIiCi0rCSAgICBmdW5jX2FwcGVuZCB0bXBfbGlicyAiICRkZXBsaWIiCi0gCSAgZG9uZQotIAkgIGNvbnRpbnVlCi0gCWZpICMgJHBhc3MgPSBjb252Ci1AQCAtNTU3OSw5ICs2NDU2LDE1IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCi0gCSMgR2V0IHRoZSBuYW1lIG9mIHRoZSBsaWJyYXJ5IHdlIGxpbmsgYWdhaW5zdC4KLSAJbGlua2xpYj0KLS0JZm9yIGwgaW4gJG9sZF9saWJyYXJ5ICRsaWJyYXJ5X25hbWVzOyBkbwotLQkgIGxpbmtsaWI9IiRsIgotLQlkb25lCi0rCWlmIHRlc3QgLW4gIiRvbGRfbGlicmFyeSIgJiYKLSsJICAgeyB0ZXN0ICIkcHJlZmVyX3N0YXRpY19saWJzIiA9IHllcyB8fAotKwkgICAgIHRlc3QgIiRwcmVmZXJfc3RhdGljX2xpYnMsJGluc3RhbGxlZCIgPSAiYnVpbHQsbm8iOyB9OyB0aGVuCi0rCSAgbGlua2xpYj0kb2xkX2xpYnJhcnkKLSsJZWxzZQotKwkgIGZvciBsIGluICRvbGRfbGlicmFyeSAkbGlicmFyeV9uYW1lczsgZG8KLSsJICAgIGxpbmtsaWI9IiRsIgotKwkgIGRvbmUKLSsJZmkKLSAJaWYgdGVzdCAteiAiJGxpbmtsaWIiOyB0aGVuCi0gCSAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGZpbmQgbmFtZSBvZiBsaW5rIGxpYnJhcnkgZm9yIFxgJGxpYiciCi0gCWZpCi1AQCAtNTU5OCw5ICs2NDgxLDkgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgICMgc3RhdGljYWxseSwgd2UgbmVlZCB0byBwcmVsb2FkLiAgV2UgYWxzbyBuZWVkIHRvIHByZWxvYWQgYW55Ci0gCSAgICAjIGRlcGVuZGVudCBsaWJyYXJpZXMgc28gbGlibHRkbCdzIGRlcGxpYiBwcmVsb2FkZXIgZG9lc24ndAotIAkgICAgIyBib21iIG91dCBpbiB0aGUgbG9hZCBkZXBsaWJzIHBoYXNlLgotLQkgICAgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJGxpYiAkZGVwZW5kZW5jeV9saWJzIgotKwkgICAgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRsaWIgJGRlcGVuZGVuY3lfbGlicyIKLSAJICBlbHNlCi0tCSAgICBuZXdkbGZpbGVzPSIkbmV3ZGxmaWxlcyAkbGliIgotKwkgICAgZnVuY19hcHBlbmQgbmV3ZGxmaWxlcyAiICRsaWIiCi0gCSAgZmkKLSAJICBjb250aW51ZQotIAlmaSAjICRwYXNzID0gZGxvcGVuCi1AQCAtNTYyMiwxNCArNjUwNSwxNCBAQCBmdW5jX21vZGVfbGluayAoKQotIAotIAkjIEZpbmQgdGhlIHJlbGV2YW50IG9iamVjdCBkaXJlY3RvcnkgYW5kIGxpYnJhcnkgbmFtZS4KLSAJaWYgdGVzdCAiWCRpbnN0YWxsZWQiID0gWHllczsgdGhlbgotLQkgIGlmIHRlc3QgISAtZiAiJGxpYmRpci8kbGlua2xpYiIgJiYgdGVzdCAtZiAiJGFic19sYWRpci8kbGlua2xpYiI7IHRoZW4KLSsJICBpZiB0ZXN0ICEgLWYgIiRsdF9zeXNyb290JGxpYmRpci8kbGlua2xpYiIgJiYgdGVzdCAtZiAiJGFic19sYWRpci8kbGlua2xpYiI7IHRoZW4KLSAJICAgIGZ1bmNfd2FybmluZyAibGlicmFyeSBcYCRsaWInIHdhcyBtb3ZlZC4iCi0gCSAgICBkaXI9IiRsYWRpciIKLSAJICAgIGFic2Rpcj0iJGFic19sYWRpciIKLSAJICAgIGxpYmRpcj0iJGFic19sYWRpciIKLSAJICBlbHNlCi0tCSAgICBkaXI9IiRsaWJkaXIiCi0tCSAgICBhYnNkaXI9IiRsaWJkaXIiCi0rCSAgICBkaXI9IiRsdF9zeXNyb290JGxpYmRpciIKLSsJICAgIGFic2Rpcj0iJGx0X3N5c3Jvb3QkbGliZGlyIgotIAkgIGZpCi0gCSAgdGVzdCAiWCRoYXJkY29kZV9hdXRvbWF0aWMiID0gWHllcyAmJiBhdm9pZHRlbXBycGF0aD15ZXMKLSAJZWxzZQotQEAgLTU2MzcsMTIgKzY1MjAsMTIgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgIGRpcj0iJGxhZGlyIgotIAkgICAgYWJzZGlyPSIkYWJzX2xhZGlyIgotIAkgICAgIyBSZW1vdmUgdGhpcyBzZWFyY2ggcGF0aCBsYXRlcgotLQkgICAgbm90aW5zdF9wYXRoPSIkbm90aW5zdF9wYXRoICRhYnNfbGFkaXIiCi0rCSAgICBmdW5jX2FwcGVuZCBub3RpbnN0X3BhdGggIiAkYWJzX2xhZGlyIgotIAkgIGVsc2UKLSAJICAgIGRpcj0iJGxhZGlyLyRvYmpkaXIiCi0gCSAgICBhYnNkaXI9IiRhYnNfbGFkaXIvJG9iamRpciIKLSAJICAgICMgUmVtb3ZlIHRoaXMgc2VhcmNoIHBhdGggbGF0ZXIKLS0JICAgIG5vdGluc3RfcGF0aD0iJG5vdGluc3RfcGF0aCAkYWJzX2xhZGlyIgotKwkgICAgZnVuY19hcHBlbmQgbm90aW5zdF9wYXRoICIgJGFic19sYWRpciIKLSAJICBmaQotIAlmaSAjICRpbnN0YWxsZWQgPSB5ZXMKLSAJZnVuY19zdHJpcG5hbWUgJ2xpYicgJy5sYScgIiRsYW5hbWUiCi1AQCAtNTY1MywyMCArNjUzNiw0NiBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgIGlmIHRlc3QgLXogIiRsaWJkaXIiICYmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nOyB0aGVuCi0gCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJvbmx5IGxpYnJhcmllcyBtYXkgLWRscHJlb3BlbiBhIGNvbnZlbmllbmNlIGxpYnJhcnk6IFxgJGxpYiciCi0gCSAgZmkKLS0JICAjIFByZWZlciB1c2luZyBhIHN0YXRpYyBsaWJyYXJ5IChzbyB0aGF0IG5vIHNpbGx5IF9EWU5BTUlDIHN5bWJvbHMKLS0JICAjIGFyZSByZXF1aXJlZCB0byBsaW5rKS4KLS0JICBpZiB0ZXN0IC1uICIkb2xkX2xpYnJhcnkiOyB0aGVuCi0tCSAgICBuZXdkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyAkZGlyLyRvbGRfbGlicmFyeSIKLS0JICAgICMgS2VlcCBhIGxpc3Qgb2YgcHJlb3BlbmVkIGNvbnZlbmllbmNlIGxpYnJhcmllcyB0byBjaGVjawotLQkgICAgIyB0aGF0IHRoZXkgYXJlIGJlaW5nIHVzZWQgY29ycmVjdGx5IGluIHRoZSBsaW5rIHBhc3MuCi0tCSAgICB0ZXN0IC16ICIkbGliZGlyIiAmJiBcCi0tCQlkbHByZWNvbnZlbmllbmNlbGlicz0iJGRscHJlY29udmVuaWVuY2VsaWJzICRkaXIvJG9sZF9saWJyYXJ5IgotLQkgICMgT3RoZXJ3aXNlLCB1c2UgdGhlIGRsbmFtZSwgc28gdGhhdCBsdF9kbG9wZW4gZmluZHMgaXQuCi0tCSAgZWxpZiB0ZXN0IC1uICIkZGxuYW1lIjsgdGhlbgotLQkgICAgbmV3ZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMgJGRpci8kZGxuYW1lIgotLQkgIGVsc2UKLS0JICAgIG5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRkaXIvJGxpbmtsaWIiCi0tCSAgZmkKLSsJICBjYXNlICIkaG9zdCIgaW4KLSsJICAgICMgc3BlY2lhbCBoYW5kbGluZyBmb3IgcGxhdGZvcm1zIHdpdGggUEUtRExMcy4KLSsJICAgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpjZWdjYyogKQotKwkgICAgICAjIExpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgbGluayBhZ2FpbnN0IHNoYXJlZCBsaWJyYXJ5IGlmIGJvdGgKLSsJICAgICAgIyBzdGF0aWMgYW5kIHNoYXJlZCBhcmUgcHJlc2VudC4gIFRoZXJlZm9yZSwgZW5zdXJlIHdlIGV4dHJhY3QKLSsJICAgICAgIyBzeW1ib2xzIGZyb20gdGhlIGltcG9ydCBsaWJyYXJ5IGlmIGEgc2hhcmVkIGxpYnJhcnkgaXMgcHJlc2VudAotKwkgICAgICAjIChvdGhlcndpc2UsIHRoZSBkbG9wZW4gbW9kdWxlIG5hbWUgd2lsbCBiZSBpbmNvcnJlY3QpLiAgV2UgZG8KLSsJICAgICAgIyB0aGlzIGJ5IHB1dHRpbmcgdGhlIGltcG9ydCBsaWJyYXJ5IG5hbWUgaW50byAkbmV3ZGxwcmVmaWxlcy4KLSsJICAgICAgIyBXZSByZWNvdmVyIHRoZSBkbG9wZW4gbW9kdWxlIG5hbWUgYnkgJ3NhdmluZycgdGhlIGxhIGZpbGUKLSsJICAgICAgIyBuYW1lIGluIGEgc3BlY2lhbCBwdXJwb3NlIHZhcmlhYmxlLCBhbmQgKGxhdGVyKSBleHRyYWN0aW5nIHRoZQotKwkgICAgICAjIGRsbmFtZSBmcm9tIHRoZSBsYSBmaWxlLgotKwkgICAgICBpZiB0ZXN0IC1uICIkZGxuYW1lIjsgdGhlbgotKwkgICAgICAgIGZ1bmNfdHJfc2ggIiRkaXIvJGxpbmtsaWIiCi0rCSAgICAgICAgZXZhbCAibGliZmlsZV8kZnVuY190cl9zaF9yZXN1bHQ9XCRhYnNfbGFkaXIvXCRsYW5hbWUiCi0rCSAgICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRkaXIvJGxpbmtsaWIiCi0rCSAgICAgIGVsc2UKLSsJICAgICAgICBmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJGRpci8kb2xkX2xpYnJhcnkiCi0rCSAgICAgICAgIyBLZWVwIGEgbGlzdCBvZiBwcmVvcGVuZWQgY29udmVuaWVuY2UgbGlicmFyaWVzIHRvIGNoZWNrCi0rCSAgICAgICAgIyB0aGF0IHRoZXkgYXJlIGJlaW5nIHVzZWQgY29ycmVjdGx5IGluIHRoZSBsaW5rIHBhc3MuCi0rCSAgICAgICAgdGVzdCAteiAiJGxpYmRpciIgJiYgXAotKwkgICAgICAgICAgZnVuY19hcHBlbmQgZGxwcmVjb252ZW5pZW5jZWxpYnMgIiAkZGlyLyRvbGRfbGlicmFyeSIKLSsJICAgICAgZmkKLSsJICAgIDs7Ci0rCSAgICAqICkKLSsJICAgICAgIyBQcmVmZXIgdXNpbmcgYSBzdGF0aWMgbGlicmFyeSAoc28gdGhhdCBubyBzaWxseSBfRFlOQU1JQyBzeW1ib2xzCi0rCSAgICAgICMgYXJlIHJlcXVpcmVkIHRvIGxpbmspLgotKwkgICAgICBpZiB0ZXN0IC1uICIkb2xkX2xpYnJhcnkiOyB0aGVuCi0rCSAgICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRkaXIvJG9sZF9saWJyYXJ5IgotKwkgICAgICAgICMgS2VlcCBhIGxpc3Qgb2YgcHJlb3BlbmVkIGNvbnZlbmllbmNlIGxpYnJhcmllcyB0byBjaGVjawotKwkgICAgICAgICMgdGhhdCB0aGV5IGFyZSBiZWluZyB1c2VkIGNvcnJlY3RseSBpbiB0aGUgbGluayBwYXNzLgotKwkgICAgICAgIHRlc3QgLXogIiRsaWJkaXIiICYmIFwKLSsJICAgICAgICAgIGZ1bmNfYXBwZW5kIGRscHJlY29udmVuaWVuY2VsaWJzICIgJGRpci8kb2xkX2xpYnJhcnkiCi0rCSAgICAgICMgT3RoZXJ3aXNlLCB1c2UgdGhlIGRsbmFtZSwgc28gdGhhdCBsdF9kbG9wZW4gZmluZHMgaXQuCi0rCSAgICAgIGVsaWYgdGVzdCAtbiAiJGRsbmFtZSI7IHRoZW4KLSsJICAgICAgICBmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJGRpci8kZGxuYW1lIgotKwkgICAgICBlbHNlCi0rCSAgICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRkaXIvJGxpbmtsaWIiCi0rCSAgICAgIGZpCi0rCSAgICA7OwotKwkgIGVzYWMKLSAJZmkgIyAkcGFzcyA9IGRscHJlb3BlbgotIAotIAlpZiB0ZXN0IC16ICIkbGliZGlyIjsgdGhlbgotQEAgLTU2ODQsNyArNjU5Myw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCi0gCi0gCWlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nICYmIHRlc3QgIiRwYXNzIiAhPSBsaW5rOyB0aGVuCi0tCSAgbmV3bGliX3NlYXJjaF9wYXRoPSIkbmV3bGliX3NlYXJjaF9wYXRoICRsYWRpciIKLSsJICBmdW5jX2FwcGVuZCBuZXdsaWJfc2VhcmNoX3BhdGggIiAkbGFkaXIiCi0gCSAgZGVwbGlicz0iJGxpYiAkZGVwbGlicyIKLSAKLSAJICBsaW5rYWxsZGVwbGlicz1ubwotQEAgLTU2OTcsNyArNjYwNiw4IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgZm9yIGRlcGxpYiBpbiAkZGVwZW5kZW5jeV9saWJzOyBkbwotIAkgICAgY2FzZSAkZGVwbGliIGluCi0gCSAgICAtTCopIGZ1bmNfc3RyaXBuYW1lICctTCcgJycgIiRkZXBsaWIiCi0tCSAgICAgICAgIG5ld2xpYl9zZWFyY2hfcGF0aD0iJG5ld2xpYl9zZWFyY2hfcGF0aCAkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgotKwkgICAgICAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKLSsJICAgICAgICAgZnVuY19hcHBlbmQgbmV3bGliX3NlYXJjaF9wYXRoICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKLSAJCSA7OwotIAkgICAgZXNhYwotIAkgICAgIyBOZWVkIHRvIGxpbmsgYWdhaW5zdCBhbGwgZGVwZW5kZW5jeV9saWJzPwotQEAgLTU3MDgsMTIgKzY2MTgsMTIgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgICAgIyBvci9hbmQgbGluayBhZ2FpbnN0IHN0YXRpYyBsaWJyYXJpZXMKLSAJICAgICAgbmV3ZGVwZW5kZW5jeV9saWJzPSIkZGVwbGliICRuZXdkZXBlbmRlbmN5X2xpYnMiCi0gCSAgICBmaQotLQkgICAgaWYgJG9wdF9kdXBsaWNhdGVfZGVwcyA7IHRoZW4KLSsJICAgIGlmICRvcHRfcHJlc2VydmVfZHVwX2RlcHMgOyB0aGVuCi0gCSAgICAgIGNhc2UgIiR0bXBfbGlicyAiIGluCi0tCSAgICAgICoiICRkZXBsaWIgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJGRlcGxpYiIgOzsKLSsJICAgICAgKiIgJGRlcGxpYiAiKikgZnVuY19hcHBlbmQgc3BlY2lhbGRlcGxpYnMgIiAkZGVwbGliIiA7OwotIAkgICAgICBlc2FjCi0gCSAgICBmaQotLQkgICAgdG1wX2xpYnM9IiR0bXBfbGlicyAkZGVwbGliIgotKwkgICAgZnVuY19hcHBlbmQgdG1wX2xpYnMgIiAkZGVwbGliIgotIAkgIGRvbmUgIyBmb3IgZGVwbGliCi0gCSAgY29udGludWUKLSAJZmkgIyAkbGlua21vZGUgPSBwcm9nLi4uCi1AQCAtNTcyOCw3ICs2NjM4LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgICAgIyBNYWtlIHN1cmUgdGhlIHJwYXRoIGNvbnRhaW5zIG9ubHkgdW5pcXVlIGRpcmVjdG9yaWVzLgotIAkgICAgICBjYXNlICIkdGVtcF9ycGF0aDoiIGluCi0gCSAgICAgICoiJGFic2RpcjoiKikgOzsKLS0JICAgICAgKikgdGVtcF9ycGF0aD0iJHRlbXBfcnBhdGgkYWJzZGlyOiIgOzsKLSsJICAgICAgKikgZnVuY19hcHBlbmQgdGVtcF9ycGF0aCAiJGFic2RpcjoiIDs7Ci0gCSAgICAgIGVzYWMKLSAJICAgIGZpCi0gCi1AQCAtNTc0MCw3ICs2NjUwLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgICopCi0gCSAgICAgIGNhc2UgIiRjb21waWxlX3JwYXRoICIgaW4KLSAJICAgICAgKiIgJGFic2RpciAiKikgOzsKLS0JICAgICAgKikgY29tcGlsZV9ycGF0aD0iJGNvbXBpbGVfcnBhdGggJGFic2RpciIKLSsJICAgICAgKikgZnVuY19hcHBlbmQgY29tcGlsZV9ycGF0aCAiICRhYnNkaXIiIDs7Ci0gCSAgICAgIGVzYWMKLSAJICAgICAgOzsKLSAJICAgIGVzYWMKLUBAIC01NzQ5LDcgKzY2NTksNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgKikKLSAJICAgICAgY2FzZSAiJGZpbmFsaXplX3JwYXRoICIgaW4KLSAJICAgICAgKiIgJGxpYmRpciAiKikgOzsKLS0JICAgICAgKikgZmluYWxpemVfcnBhdGg9IiRmaW5hbGl6ZV9ycGF0aCAkbGliZGlyIgotKwkgICAgICAqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9ycGF0aCAiICRsaWJkaXIiIDs7Ci0gCSAgICAgIGVzYWMKLSAJICAgICAgOzsKLSAJICAgIGVzYWMKLUBAIC01Nzc0LDEyICs2Njg0LDEyIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgY2FzZSAkaG9zdCBpbgotIAkgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpjZWdjYyopCi0gCSAgICAgICMgTm8gcG9pbnQgaW4gcmVsaW5raW5nIERMTHMgYmVjYXVzZSBwYXRocyBhcmUgbm90IGVuY29kZWQKLS0JICAgICAgbm90aW5zdF9kZXBsaWJzPSIkbm90aW5zdF9kZXBsaWJzICRsaWIiCi0rCSAgICAgIGZ1bmNfYXBwZW5kIG5vdGluc3RfZGVwbGlicyAiICRsaWIiCi0gCSAgICAgIG5lZWRfcmVsaW5rPW5vCi0gCSAgICA7OwotIAkgICopCi0gCSAgICBpZiB0ZXN0ICIkaW5zdGFsbGVkIiA9IG5vOyB0aGVuCi0tCSAgICAgIG5vdGluc3RfZGVwbGlicz0iJG5vdGluc3RfZGVwbGlicyAkbGliIgotKwkgICAgICBmdW5jX2FwcGVuZCBub3RpbnN0X2RlcGxpYnMgIiAkbGliIgotIAkgICAgICBuZWVkX3JlbGluaz15ZXMKLSAJICAgIGZpCi0gCSAgICA7OwotQEAgLTU4MTQsNyArNjcyNCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICAqKQotIAkgICAgICBjYXNlICIkY29tcGlsZV9ycGF0aCAiIGluCi0gCSAgICAgICoiICRhYnNkaXIgIiopIDs7Ci0tCSAgICAgICopIGNvbXBpbGVfcnBhdGg9IiRjb21waWxlX3JwYXRoICRhYnNkaXIiCi0rCSAgICAgICopIGZ1bmNfYXBwZW5kIGNvbXBpbGVfcnBhdGggIiAkYWJzZGlyIiA7OwotIAkgICAgICBlc2FjCi0gCSAgICAgIDs7Ci0gCSAgICBlc2FjCi1AQCAtNTgyMyw3ICs2NzMzLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgICopCi0gCSAgICAgIGNhc2UgIiRmaW5hbGl6ZV9ycGF0aCAiIGluCi0gCSAgICAgICoiICRsaWJkaXIgIiopIDs7Ci0tCSAgICAgICopIGZpbmFsaXplX3JwYXRoPSIkZmluYWxpemVfcnBhdGggJGxpYmRpciIKLSsJICAgICAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfcnBhdGggIiAkbGliZGlyIiA7OwotIAkgICAgICBlc2FjCi0gCSAgICAgIDs7Ci0gCSAgICBlc2FjCi1AQCAtNTgzNSw3ICs2NzQ1LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgIHNoaWZ0Ci0gCSAgICByZWFsbmFtZT0iJDEiCi0gCSAgICBzaGlmdAotLQkgICAgZXZhbCAibGlibmFtZT1cIiRsaWJuYW1lX3NwZWNcIiIKLSsJICAgIGxpYm5hbWU9YGV2YWwgIlxcJEVDSE8gXCIkbGlibmFtZV9zcGVjXCIiYAotIAkgICAgIyB1c2UgZGxuYW1lIGlmIHdlIGdvdCBpdC4gaXQncyBwZXJmZWN0bHkgZ29vZCwgbm8/Ci0gCSAgICBpZiB0ZXN0IC1uICIkZGxuYW1lIjsgdGhlbgotIAkgICAgICBzb25hbWU9IiRkbG5hbWUiCi1AQCAtNTg0OCw3ICs2NzU4LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJCXZlcnN1ZmZpeD0iLSRtYWpvciIKLSAJCTs7Ci0gCSAgICAgIGVzYWMKLS0JICAgICAgZXZhbCAic29uYW1lPVwiJHNvbmFtZV9zcGVjXCIiCi0rCSAgICAgIGV2YWwgc29uYW1lPVwiJHNvbmFtZV9zcGVjXCIKLSAJICAgIGVsc2UKLSAJICAgICAgc29uYW1lPSIkcmVhbG5hbWUiCi0gCSAgICBmaQotQEAgLTU4NzcsNyArNjc4Nyw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICBsaW5rbGliPSRuZXdsaWIKLSAJICBmaSAjIHRlc3QgLW4gIiRvbGRfYXJjaGl2ZV9mcm9tX2V4cHN5bXNfY21kcyIKLSAKLS0JICBpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZyB8fCB0ZXN0ICIkbW9kZSIgIT0gcmVsaW5rOyB0aGVuCi0rCSAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2cgfHwgdGVzdCAiJG9wdF9tb2RlIiAhPSByZWxpbms7IHRoZW4KLSAJICAgIGFkZF9zaGxpYnBhdGg9Ci0gCSAgICBhZGRfZGlyPQotIAkgICAgYWRkPQotQEAgLTU5MzMsNyArNjg0Myw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCQlpZiB0ZXN0IC1uICIkaW5zdF9wcmVmaXhfZGlyIjsgdGhlbgotIAkJICBjYXNlICRsaWJkaXIgaW4KLSAJCSAgICBbXFwvXSopCi0tCQkgICAgICBhZGRfZGlyPSIkYWRkX2RpciAtTCRpbnN0X3ByZWZpeF9kaXIkbGliZGlyIgotKwkJICAgICAgZnVuY19hcHBlbmQgYWRkX2RpciAiIC1MJGluc3RfcHJlZml4X2RpciRsaWJkaXIiCi0gCQkgICAgICA7OwotIAkJICBlc2FjCi0gCQlmaQotQEAgLTU5NTUsNyArNjg2NSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICBpZiB0ZXN0IC1uICIkYWRkX3NobGlicGF0aCI7IHRoZW4KLSAJICAgICAgY2FzZSA6JGNvbXBpbGVfc2hsaWJwYXRoOiBpbgotIAkgICAgICAqIjokYWRkX3NobGlicGF0aDoiKikgOzsKLS0JICAgICAgKikgY29tcGlsZV9zaGxpYnBhdGg9IiRjb21waWxlX3NobGlicGF0aCRhZGRfc2hsaWJwYXRoOiIgOzsKLSsJICAgICAgKikgZnVuY19hcHBlbmQgY29tcGlsZV9zaGxpYnBhdGggIiRhZGRfc2hsaWJwYXRoOiIgOzsKLSAJICAgICAgZXNhYwotIAkgICAgZmkKLSAJICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nOyB0aGVuCi1AQCAtNTk2OSwxMyArNjg3OSwxMyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkJIHRlc3QgIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiA9IHllczsgdGhlbgotIAkJY2FzZSA6JGZpbmFsaXplX3NobGlicGF0aDogaW4KLSAJCSoiOiRsaWJkaXI6IiopIDs7Ci0tCQkqKSBmaW5hbGl6ZV9zaGxpYnBhdGg9IiRmaW5hbGl6ZV9zaGxpYnBhdGgkbGliZGlyOiIgOzsKLSsJCSopIGZ1bmNfYXBwZW5kIGZpbmFsaXplX3NobGlicGF0aCAiJGxpYmRpcjoiIDs7Ci0gCQllc2FjCi0gCSAgICAgIGZpCi0gCSAgICBmaQotIAkgIGZpCi0gCi0tCSAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2cgfHwgdGVzdCAiJG1vZGUiID0gcmVsaW5rOyB0aGVuCi0rCSAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2cgfHwgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgdGhlbgotIAkgICAgYWRkX3NobGlicGF0aD0KLSAJICAgIGFkZF9kaXI9Ci0gCSAgICBhZGQ9Ci1AQCAtNTk4OSw3ICs2ODk5LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgIGVsaWYgdGVzdCAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiID0geWVzOyB0aGVuCi0gCSAgICAgIGNhc2UgOiRmaW5hbGl6ZV9zaGxpYnBhdGg6IGluCi0gCSAgICAgICoiOiRsaWJkaXI6IiopIDs7Ci0tCSAgICAgICopIGZpbmFsaXplX3NobGlicGF0aD0iJGZpbmFsaXplX3NobGlicGF0aCRsaWJkaXI6IiA7OwotKwkgICAgICAqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9zaGxpYnBhdGggIiRsaWJkaXI6IiA7OwotIAkgICAgICBlc2FjCi0gCSAgICAgIGFkZD0iLWwkbmFtZSIKLSAJICAgIGVsaWYgdGVzdCAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgPSB5ZXM7IHRoZW4KLUBAIC02MDAxLDEyICs2OTExLDEyIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICAgIGZpCi0gCSAgICBlbHNlCi0gCSAgICAgICMgV2UgY2Fubm90IHNlZW0gdG8gaGFyZGNvZGUgaXQsIGd1ZXNzIHdlJ2xsIGZha2UgaXQuCi0tCSAgICAgIGFkZF9kaXI9Ii1MJGxpYmRpciIKLSsJICAgICAgYWRkX2Rpcj0iLUwkbHRfc3lzcm9vdCRsaWJkaXIiCi0gCSAgICAgICMgVHJ5IGxvb2tpbmcgZmlyc3QgaW4gdGhlIGxvY2F0aW9uIHdlJ3JlIGJlaW5nIGluc3RhbGxlZCB0by4KLSAJICAgICAgaWYgdGVzdCAtbiAiJGluc3RfcHJlZml4X2RpciI7IHRoZW4KLSAJCWNhc2UgJGxpYmRpciBpbgotIAkJICBbXFwvXSopCi0tCQkgICAgYWRkX2Rpcj0iJGFkZF9kaXIgLUwkaW5zdF9wcmVmaXhfZGlyJGxpYmRpciIKLSsJCSAgICBmdW5jX2FwcGVuZCBhZGRfZGlyICIgLUwkaW5zdF9wcmVmaXhfZGlyJGxpYmRpciIKLSAJCSAgICA7OwotIAkJZXNhYwotIAkgICAgICBmaQotQEAgLTYwODMsMjcgKzY5OTMsMzMgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgICAgICAgICB0ZW1wX3hycGF0aD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0gCQkgICBjYXNlICIgJHhycGF0aCAiIGluCi0gCQkgICAqIiAkdGVtcF94cnBhdGggIiopIDs7Ci0tCQkgICAqKSB4cnBhdGg9IiR4cnBhdGggJHRlbXBfeHJwYXRoIjs7Ci0rCQkgICAqKSBmdW5jX2FwcGVuZCB4cnBhdGggIiAkdGVtcF94cnBhdGgiOzsKLSAJCSAgIGVzYWM7OwotLQkgICAgICAqKSB0ZW1wX2RlcGxpYnM9IiR0ZW1wX2RlcGxpYnMgJGxpYmRpciI7OwotKwkgICAgICAqKSBmdW5jX2FwcGVuZCB0ZW1wX2RlcGxpYnMgIiAkbGliZGlyIjs7Ci0gCSAgICAgIGVzYWMKLSAJICAgIGRvbmUKLSAJICAgIGRlcGVuZGVuY3lfbGlicz0iJHRlbXBfZGVwbGlicyIKLSAJICBmaQotIAotLQkgIG5ld2xpYl9zZWFyY2hfcGF0aD0iJG5ld2xpYl9zZWFyY2hfcGF0aCAkYWJzZGlyIgotKwkgIGZ1bmNfYXBwZW5kIG5ld2xpYl9zZWFyY2hfcGF0aCAiICRhYnNkaXIiCi0gCSAgIyBMaW5rIGFnYWluc3QgdGhpcyBsaWJyYXJ5Ci0gCSAgdGVzdCAiJGxpbmtfc3RhdGljIiA9IG5vICYmIG5ld2RlcGVuZGVuY3lfbGlicz0iJGFic19sYWRpci8kbGFuYW1lICRuZXdkZXBlbmRlbmN5X2xpYnMiCi0gCSAgIyAuLi4gYW5kIGl0cyBkZXBlbmRlbmN5X2xpYnMKLSAJICB0bXBfbGlicz0KLSAJICBmb3IgZGVwbGliIGluICRkZXBlbmRlbmN5X2xpYnM7IGRvCi0gCSAgICBuZXdkZXBlbmRlbmN5X2xpYnM9IiRkZXBsaWIgJG5ld2RlcGVuZGVuY3lfbGlicyIKLS0JICAgIGlmICRvcHRfZHVwbGljYXRlX2RlcHMgOyB0aGVuCi0rCSAgICBjYXNlICRkZXBsaWIgaW4KLSsgICAgICAgICAgICAgIC1MKikgZnVuY19zdHJpcG5hbWUgJy1MJyAnJyAiJGRlcGxpYiIKLSsgICAgICAgICAgICAgICAgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiOzsKLSsgICAgICAgICAgICAgICopIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZGVwbGliIiA7OwotKyAgICAgICAgICAgIGVzYWMKLSsJICAgIGlmICRvcHRfcHJlc2VydmVfZHVwX2RlcHMgOyB0aGVuCi0gCSAgICAgIGNhc2UgIiR0bXBfbGlicyAiIGluCi0tCSAgICAgICoiICRkZXBsaWIgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJGRlcGxpYiIgOzsKLSsJICAgICAgKiIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCAiKikKLSsgICAgICAgICAgICAgICAgZnVuY19hcHBlbmQgc3BlY2lhbGRlcGxpYnMgIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IiA7OwotIAkgICAgICBlc2FjCi0gCSAgICBmaQotLQkgICAgdG1wX2xpYnM9IiR0bXBfbGlicyAkZGVwbGliIgotKwkgICAgZnVuY19hcHBlbmQgdG1wX2xpYnMgIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgotIAkgIGRvbmUKLSAKLSAJICBpZiB0ZXN0ICIkbGlua19hbGxfZGVwbGlicyIgIT0gbm87IHRoZW4KLUBAIC02MTEzLDggKzcwMjksMTAgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgICAgY2FzZSAkZGVwbGliIGluCi0gCSAgICAgIC1MKikgcGF0aD0iJGRlcGxpYiIgOzsKLSAJICAgICAgKi5sYSkKLSsJICAgICAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGRlcGxpYiIKLSsJICAgICAgICBkZXBsaWI9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAotIAkgICAgICAgIGZ1bmNfZGlybmFtZSAiJGRlcGxpYiIgIiIgIi4iCi0tCQlkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgotKwkJZGlyPSRmdW5jX2Rpcm5hbWVfcmVzdWx0Ci0gCQkjIFdlIG5lZWQgYW4gYWJzb2x1dGUgcGF0aC4KLSAJCWNhc2UgJGRpciBpbgotIAkJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSBhYnNkaXI9IiRkaXIiIDs7Ci1AQCAtNjEzMCw3ICs3MDQ4LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJCWNhc2UgJGhvc3QgaW4KLSAJCSotKi1kYXJ3aW4qKQotIAkJICBkZXBkZXBsPQotLQkJICBkZXBsaWJyYXJ5X25hbWVzPWAke1NFRH0gLW4gLWUgJ3MvXmxpYnJhcnlfbmFtZXM9XCguKlwpJC9cMS9wJyAkZGVwbGliYAotKwkJICBldmFsIGRlcGxpYnJhcnlfbmFtZXM9YCR7U0VEfSAtbiAtZSAncy9ebGlicmFyeV9uYW1lcz1cKC4qXCkkL1wxL3AnICRkZXBsaWJgCi0gCQkgIGlmIHRlc3QgLW4gIiRkZXBsaWJyYXJ5X25hbWVzIiA7IHRoZW4KLSAJCSAgICBmb3IgdG1wIGluICRkZXBsaWJyYXJ5X25hbWVzIDsgZG8KLSAJCSAgICAgIGRlcGRlcGw9JHRtcAotQEAgLTYxNDEsOCArNzA1OSw4IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRkYXJ3aW5faW5zdGFsbF9uYW1lIjsgdGhlbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgZGFyd2luX2luc3RhbGxfbmFtZT1gJHtPVE9PTDY0fSAtTCAkZGVwZGVwbCAgfCBhd2sgJ3tpZiAoTlIgPT0gMikge3ByaW50ICQxO2V4aXR9fSdgCi0gICAgICAgICAgICAgICAgICAgICAgIGZpCi0tCQkgICAgICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWR5bGliX2ZpbGUgJHt3bH0ke2Rhcndpbl9pbnN0YWxsX25hbWV9OiR7ZGVwZGVwbH0iCi0tCQkgICAgICBsaW5rZXJfZmxhZ3M9IiRsaW5rZXJfZmxhZ3MgLWR5bGliX2ZpbGUgJHtkYXJ3aW5faW5zdGFsbF9uYW1lfToke2RlcGRlcGx9IgotKwkJICAgICAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAke3dsfS1keWxpYl9maWxlICR7d2x9JHtkYXJ3aW5faW5zdGFsbF9uYW1lfToke2RlcGRlcGx9IgotKwkJICAgICAgZnVuY19hcHBlbmQgbGlua2VyX2ZsYWdzICIgLWR5bGliX2ZpbGUgJHtkYXJ3aW5faW5zdGFsbF9uYW1lfToke2RlcGRlcGx9IgotIAkJICAgICAgcGF0aD0KLSAJCSAgICBmaQotIAkJICBmaQotQEAgLTYxNTIsNyArNzA3MCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCQkgIDs7Ci0gCQllc2FjCi0gCQllbHNlCi0tCQkgIGxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkZGVwbGliYAotKwkJICBldmFsIGxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkZGVwbGliYAotIAkJICB0ZXN0IC16ICIkbGliZGlyIiAmJiBcCi0gCQkgICAgZnVuY19mYXRhbF9lcnJvciAiXGAkZGVwbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCi0gCQkgIHRlc3QgIiRhYnNkaXIiICE9ICIkbGliZGlyIiAmJiBcCi1AQCAtNjE5Miw3ICs3MTEwLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICBmb3IgZGlyIGluICRuZXdsaWJfc2VhcmNoX3BhdGg7IGRvCi0gCSAgICBjYXNlICIkbGliX3NlYXJjaF9wYXRoICIgaW4KLSAJICAgICoiICRkaXIgIiopIDs7Ci0tCSAgICAqKSBsaWJfc2VhcmNoX3BhdGg9IiRsaWJfc2VhcmNoX3BhdGggJGRpciIgOzsKLSsJICAgICopIGZ1bmNfYXBwZW5kIGxpYl9zZWFyY2hfcGF0aCAiICRkaXIiIDs7Ci0gCSAgICBlc2FjCi0gCSAgZG9uZQotIAkgIG5ld2xpYl9zZWFyY2hfcGF0aD0KLUBAIC02MjA1LDcgKzcxMjMsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAlmaQotIAlmb3IgdmFyIGluICR2YXJzIGRlcGVuZGVuY3lfbGliczsgZG8KLSAJICAjIEFkZCBsaWJyYXJpZXMgdG8gJHZhciBpbiByZXZlcnNlIG9yZGVyCi0tCSAgZXZhbCB0bXBfbGlicz1cJCR2YXIKLSsJICBldmFsIHRtcF9saWJzPVwiXCQkdmFyXCIKLSAJICBuZXdfbGlicz0KLSAJICBmb3IgZGVwbGliIGluICR0bXBfbGliczsgZG8KLSAJICAgICMgRklYTUU6IFBlZGFudGljYWxseSwgdGhpcyBpcyB0aGUgcmlnaHQgdGhpbmcgdG8gZG8sIHNvCi1AQCAtNjI1MCwxMyArNzE2OCwxMyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgLUwqKQotIAkgICAgICBjYXNlICIgJHRtcF9saWJzICIgaW4KLSAJICAgICAgKiIgJGRlcGxpYiAiKikgOzsKLS0JICAgICAgKikgdG1wX2xpYnM9IiR0bXBfbGlicyAkZGVwbGliIiA7OwotKwkgICAgICAqKSBmdW5jX2FwcGVuZCB0bXBfbGlicyAiICRkZXBsaWIiIDs7Ci0gCSAgICAgIGVzYWMKLSAJICAgICAgOzsKLS0JICAgICopIHRtcF9saWJzPSIkdG1wX2xpYnMgJGRlcGxpYiIgOzsKLSsJICAgICopIGZ1bmNfYXBwZW5kIHRtcF9saWJzICIgJGRlcGxpYiIgOzsKLSAJICAgIGVzYWMKLSAJICBkb25lCi0tCSAgZXZhbCAkdmFyPVwkdG1wX2xpYnMKLSsJICBldmFsICR2YXI9XCIkdG1wX2xpYnNcIgotIAlkb25lICMgZm9yIHZhcgotICAgICAgIGZpCi0gICAgICAgIyBMYXN0IHN0ZXA6IHJlbW92ZSBydW50aW1lIGxpYnMgZnJvbSBkZXBlbmRlbmN5X2xpYnMKLUBAIC02MjY5LDcgKzcxODcsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgIDs7Ci0gCWVzYWMKLSAJaWYgdGVzdCAtbiAiJGkiIDsgdGhlbgotLQkgIHRtcF9saWJzPSIkdG1wX2xpYnMgJGkiCi0rCSAgZnVuY19hcHBlbmQgdG1wX2xpYnMgIiAkaSIKLSAJZmkKLSAgICAgICBkb25lCi0gICAgICAgZGVwZW5kZW5jeV9saWJzPSR0bXBfbGlicwotQEAgLTYzMTAsNyArNzIyOCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gICAgICAgIyBOb3cgc2V0IHRoZSB2YXJpYWJsZXMgZm9yIGJ1aWxkaW5nIG9sZCBsaWJyYXJpZXMuCi0gICAgICAgYnVpbGRfbGlidG9vbF9saWJzPW5vCi0gICAgICAgb2xkbGlicz0iJG91dHB1dCIKLS0gICAgICBvYmpzPSIkb2JqcyRvbGRfZGVwbGlicyIKLSsgICAgICBmdW5jX2FwcGVuZCBvYmpzICIkb2xkX2RlcGxpYnMiCi0gICAgICAgOzsKLSAKLSAgICAgbGliKQotQEAgLTYzMTksOCArNzIzNyw4IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gICAgICAgbGliKikKLSAJZnVuY19zdHJpcG5hbWUgJ2xpYicgJy5sYScgIiRvdXRwdXRuYW1lIgotIAluYW1lPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLS0JZXZhbCAic2hhcmVkX2V4dD1cIiRzaHJleHRfY21kc1wiIgotLQlldmFsICJsaWJuYW1lPVwiJGxpYm5hbWVfc3BlY1wiIgotKwlldmFsIHNoYXJlZF9leHQ9XCIkc2hyZXh0X2NtZHNcIgotKwlldmFsIGxpYm5hbWU9XCIkbGlibmFtZV9zcGVjXCIKLSAJOzsKLSAgICAgICAqKQotIAl0ZXN0ICIkbW9kdWxlIiA9IG5vICYmIFwKLUBAIC02MzMwLDggKzcyNDgsOCBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICMgQWRkIHRoZSAibGliIiBwcmVmaXggZm9yIG1vZHVsZXMgaWYgcmVxdWlyZWQKLSAJICBmdW5jX3N0cmlwbmFtZSAnJyAnLmxhJyAiJG91dHB1dG5hbWUiCi0gCSAgbmFtZT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0tCSAgZXZhbCAic2hhcmVkX2V4dD1cIiRzaHJleHRfY21kc1wiIgotLQkgIGV2YWwgImxpYm5hbWU9XCIkbGlibmFtZV9zcGVjXCIiCi0rCSAgZXZhbCBzaGFyZWRfZXh0PVwiJHNocmV4dF9jbWRzXCIKLSsJICBldmFsIGxpYm5hbWU9XCIkbGlibmFtZV9zcGVjXCIKLSAJZWxzZQotIAkgIGZ1bmNfc3RyaXBuYW1lICcnICcubGEnICIkb3V0cHV0bmFtZSIKLSAJICBsaWJuYW1lPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLUBAIC02MzQ2LDcgKzcyNjQsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgIGVjaG8KLSAJICAkRUNITyAiKioqIFdhcm5pbmc6IExpbmtpbmcgdGhlIHNoYXJlZCBsaWJyYXJ5ICRvdXRwdXQgYWdhaW5zdCB0aGUgbm9uLWxpYnRvb2wiCi0gCSAgJEVDSE8gIioqKiBvYmplY3RzICRvYmpzIGlzIG5vdCBwb3J0YWJsZSEiCi0tCSAgbGlib2Jqcz0iJGxpYm9ianMgJG9ianMiCi0rCSAgZnVuY19hcHBlbmQgbGlib2JqcyAiICRvYmpzIgotIAlmaQotICAgICAgIGZpCi0gCi1AQCAtNjU0NCw3ICs3NDYyLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICBkb25lCi0gCi0gCSAgIyBNYWtlIGV4ZWN1dGFibGVzIGRlcGVuZCBvbiBvdXIgY3VycmVudCB2ZXJzaW9uLgotLQkgIHZlcnN0cmluZz0iJHZlcnN0cmluZzoke2N1cnJlbnR9LjAiCi0rCSAgZnVuY19hcHBlbmQgdmVyc3RyaW5nICI6JHtjdXJyZW50fS4wIgotIAkgIDs7Ci0gCi0gCXFueCkKLUBAIC02NjEyLDEwICs3NTMwLDEwIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gICAgICAgZmkKLSAKLSAgICAgICBmdW5jX2dlbmVyYXRlX2Rsc3ltcyAiJGxpYm5hbWUiICIkbGlibmFtZSIgInllcyIKLS0gICAgICBsaWJvYmpzPSIkbGlib2JqcyAkc3ltZmlsZW9iaiIKLSsgICAgICBmdW5jX2FwcGVuZCBsaWJvYmpzICIgJHN5bWZpbGVvYmoiCi0gICAgICAgdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KLSAKLS0gICAgICBpZiB0ZXN0ICIkbW9kZSIgIT0gcmVsaW5rOyB0aGVuCi0rICAgICAgaWYgdGVzdCAiJG9wdF9tb2RlIiAhPSByZWxpbms7IHRoZW4KLSAJIyBSZW1vdmUgb3VyIG91dHB1dHMsIGJ1dCBkb24ndCByZW1vdmUgb2JqZWN0IGZpbGVzIHNpbmNlIHRoZXkKLSAJIyBtYXkgaGF2ZSBiZWVuIGNyZWF0ZWQgd2hlbiBjb21waWxpbmcgUElDIG9iamVjdHMuCi0gCXJlbW92ZWxpc3Q9Ci1AQCAtNjYzMSw3ICs3NTQ5LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJCSAgIGNvbnRpbnVlCi0gCQkgZmkKLSAJICAgICAgIGZpCi0tCSAgICAgICByZW1vdmVsaXN0PSIkcmVtb3ZlbGlzdCAkcCIKLSsJICAgICAgIGZ1bmNfYXBwZW5kIHJlbW92ZWxpc3QgIiAkcCIKLSAJICAgICAgIDs7Ci0gCSAgICAqKSA7OwotIAkgIGVzYWMKLUBAIC02NjQyLDcgKzc1NjAsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAotICAgICAgICMgTm93IHNldCB0aGUgdmFyaWFibGVzIGZvciBidWlsZGluZyBvbGQgbGlicmFyaWVzLgotICAgICAgIGlmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSB5ZXMgJiYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0gY29udmVuaWVuY2UgOyB0aGVuCi0tCW9sZGxpYnM9IiRvbGRsaWJzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLiRsaWJleHQiCi0rCWZ1bmNfYXBwZW5kIG9sZGxpYnMgIiAkb3V0cHV0X29iamRpci8kbGlibmFtZS4kbGliZXh0IgotIAotIAkjIFRyYW5zZm9ybSAubG8gZmlsZXMgdG8gLm8gZmlsZXMuCi0gCW9sZG9ianM9IiRvYmpzICJgJEVDSE8gIiRsaWJvYmpzIiB8ICRTUDJOTCB8ICRTRUQgIi9cLiR7bGliZXh0fSQvZDsgJGxvMm8iIHwgJE5MMlNQYAotQEAgLTY2NTksMTAgKzc1NzcsMTEgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJIyBJZiB0aGUgdXNlciBzcGVjaWZpZWQgYW55IHJwYXRoIGZsYWdzLCB0aGVuIGFkZCB0aGVtLgotIAl0ZW1wX3hycGF0aD0KLSAJZm9yIGxpYmRpciBpbiAkeHJwYXRoOyBkbwotLQkgIHRlbXBfeHJwYXRoPSIkdGVtcF94cnBhdGggLVIkbGliZGlyIgotKwkgIGZ1bmNfcmVwbGFjZV9zeXNyb290ICIkbGliZGlyIgotKwkgIGZ1bmNfYXBwZW5kIHRlbXBfeHJwYXRoICIgLVIkZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0IgotIAkgIGNhc2UgIiRmaW5hbGl6ZV9ycGF0aCAiIGluCi0gCSAgKiIgJGxpYmRpciAiKikgOzsKLS0JICAqKSBmaW5hbGl6ZV9ycGF0aD0iJGZpbmFsaXplX3JwYXRoICRsaWJkaXIiIDs7Ci0rCSAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfcnBhdGggIiAkbGliZGlyIiA7OwotIAkgIGVzYWMKLSAJZG9uZQotIAlpZiB0ZXN0ICIkaGFyZGNvZGVfaW50b19saWJzIiAhPSB5ZXMgfHwgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiA9IHllczsgdGhlbgotQEAgLTY2NzYsNyArNzU5NSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gICAgICAgZm9yIGxpYiBpbiAkb2xkX2RsZmlsZXM7IGRvCi0gCWNhc2UgIiAkZGxwcmVmaWxlcyAkZGxmaWxlcyAiIGluCi0gCSoiICRsaWIgIiopIDs7Ci0tCSopIGRsZmlsZXM9IiRkbGZpbGVzICRsaWIiIDs7Ci0rCSopIGZ1bmNfYXBwZW5kIGRsZmlsZXMgIiAkbGliIiA7OwotIAllc2FjCi0gICAgICAgZG9uZQotIAotQEAgLTY2ODYsNyArNzYwNSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gICAgICAgZm9yIGxpYiBpbiAkb2xkX2RscHJlZmlsZXM7IGRvCi0gCWNhc2UgIiRkbHByZWZpbGVzICIgaW4KLSAJKiIgJGxpYiAiKikgOzsKLS0JKikgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJGxpYiIgOzsKLSsJKikgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRsaWIiIDs7Ci0gCWVzYWMKLSAgICAgICBkb25lCi0gCi1AQCAtNjY5OCw3ICs3NjE3LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgIDs7Ci0gCSAgKi0qLXJoYXBzb2R5KiB8ICotKi1kYXJ3aW4xLlswMTJdKQotIAkgICAgIyBSaGFwc29keSBDIGxpYnJhcnkgaXMgaW4gdGhlIFN5c3RlbSBmcmFtZXdvcmsKLS0JICAgIGRlcGxpYnM9IiRkZXBsaWJzIFN5c3RlbS5sdGZyYW1ld29yayIKLSsJICAgIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiBTeXN0ZW0ubHRmcmFtZXdvcmsiCi0gCSAgICA7OwotIAkgICotKi1uZXRic2QqKQotIAkgICAgIyBEb24ndCBsaW5rIHdpdGggbGliYyB1bnRpbCB0aGUgYS5vdXQgbGQuc28gaXMgZml4ZWQuCi1AQCAtNjcxNSw3ICs3NjM0LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAqKQotIAkgICAgIyBBZGQgbGliYyB0byBkZXBsaWJzIG9uIGFsbCBvdGhlciBzeXN0ZW1zIGlmIG5lY2Vzc2FyeS4KLSAJICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX25lZWRfbGMiID0gInllcyI7IHRoZW4KLS0JICAgICAgZGVwbGlicz0iJGRlcGxpYnMgLWxjIgotKwkgICAgICBmdW5jX2FwcGVuZCBkZXBsaWJzICIgLWxjIgotIAkgICAgZmkKLSAJICAgIDs7Ci0gCSAgZXNhYwotQEAgLTY3NjQsMTggKzc2ODMsMTggQEAgRU9GCi0gCQlpZiB0ZXN0ICJYJGFsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lcyIgPSAiWHllcyIgOyB0aGVuCi0gCQkgIGNhc2UgIiAkcHJlZGVwcyAkcG9zdGRlcHMgIiBpbgotIAkJICAqIiAkaSAiKikKLS0JCSAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKLSsJCSAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGkiCi0gCQkgICAgaT0iIgotIAkJICAgIDs7Ci0gCQkgIGVzYWMKLSAJCWZpCi0gCQlpZiB0ZXN0IC1uICIkaSIgOyB0aGVuCi0tCQkgIGV2YWwgImxpYm5hbWU9XCIkbGlibmFtZV9zcGVjXCIiCi0tCQkgIGV2YWwgImRlcGxpYl9tYXRjaGVzPVwiJGxpYnJhcnlfbmFtZXNfc3BlY1wiIgotKwkJICBsaWJuYW1lPWBldmFsICJcXCRFQ0hPIFwiJGxpYm5hbWVfc3BlY1wiImAKLSsJCSAgZGVwbGliX21hdGNoZXM9YGV2YWwgIlxcJEVDSE8gXCIkbGlicmFyeV9uYW1lc19zcGVjXCIiYAotIAkJICBzZXQgZHVtbXkgJGRlcGxpYl9tYXRjaGVzOyBzaGlmdAotIAkJICBkZXBsaWJfbWF0Y2g9JDEKLSAJCSAgaWYgdGVzdCBgZXhwciAiJGxkZF9vdXRwdXQiIDogIi4qJGRlcGxpYl9tYXRjaCJgIC1uZSAwIDsgdGhlbgotLQkJICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgotKwkJICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkaSIKLSAJCSAgZWxzZQotIAkJICAgIGRyb3BwZWRkZXBzPXllcwotIAkJICAgIGVjaG8KLUBAIC02Nzg5LDcgKzc3MDgsNyBAQCBFT0YKLSAJCWZpCi0gCQk7OwotIAkgICAgICAqKQotLQkJbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGkiCi0rCQlmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGkiCi0gCQk7OwotIAkgICAgICBlc2FjCi0gCSAgICBkb25lCi1AQCAtNjgwNywxOCArNzcyNiwxOCBAQCBFT0YKLSAJCSAgaWYgdGVzdCAiWCRhbGxvd19saWJ0b29sX2xpYnNfd2l0aF9zdGF0aWNfcnVudGltZXMiID0gIlh5ZXMiIDsgdGhlbgotIAkJICAgIGNhc2UgIiAkcHJlZGVwcyAkcG9zdGRlcHMgIiBpbgotIAkJICAgICoiICRpICIqKQotLQkJICAgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGkiCi0rCQkgICAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGkiCi0gCQkgICAgICBpPSIiCi0gCQkgICAgICA7OwotIAkJICAgIGVzYWMKLSAJCSAgZmkKLSAJCSAgaWYgdGVzdCAtbiAiJGkiIDsgdGhlbgotLQkJICAgIGV2YWwgImxpYm5hbWU9XCIkbGlibmFtZV9zcGVjXCIiCi0tCQkgICAgZXZhbCAiZGVwbGliX21hdGNoZXM9XCIkbGlicmFyeV9uYW1lc19zcGVjXCIiCi0rCQkgICAgbGlibmFtZT1gZXZhbCAiXFwkRUNITyBcIiRsaWJuYW1lX3NwZWNcIiJgCi0rCQkgICAgZGVwbGliX21hdGNoZXM9YGV2YWwgIlxcJEVDSE8gXCIkbGlicmFyeV9uYW1lc19zcGVjXCIiYAotIAkJICAgIHNldCBkdW1teSAkZGVwbGliX21hdGNoZXM7IHNoaWZ0Ci0gCQkgICAgZGVwbGliX21hdGNoPSQxCi0gCQkgICAgaWYgdGVzdCBgZXhwciAiJGxkZF9vdXRwdXQiIDogIi4qJGRlcGxpYl9tYXRjaCJgIC1uZSAwIDsgdGhlbgotLQkJICAgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGkiCi0rCQkgICAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGkiCi0gCQkgICAgZWxzZQotIAkJICAgICAgZHJvcHBlZGRlcHM9eWVzCi0gCQkgICAgICBlY2hvCi1AQCAtNjg0MCw3ICs3NzU5LDcgQEAgRU9GCi0gCQlmaQotIAkJOzsKLSAJICAgICAgKikKLS0JCW5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgotKwkJZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRpIgotIAkJOzsKLSAJICAgICAgZXNhYwotIAkgICAgZG9uZQotQEAgLTY4NTcsMTUgKzc3NzYsMjcgQEAgRU9GCi0gCSAgICAgIGlmIHRlc3QgIlgkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIiA9ICJYeWVzIiA7IHRoZW4KLSAJCWNhc2UgIiAkcHJlZGVwcyAkcG9zdGRlcHMgIiBpbgotIAkJKiIgJGFfZGVwbGliICIqKQotLQkJICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIiCi0rCQkgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkYV9kZXBsaWIiCi0gCQkgIGFfZGVwbGliPSIiCi0gCQkgIDs7Ci0gCQllc2FjCi0gCSAgICAgIGZpCi0gCSAgICAgIGlmIHRlc3QgLW4gIiRhX2RlcGxpYiIgOyB0aGVuCi0tCQlldmFsICJsaWJuYW1lPVwiJGxpYm5hbWVfc3BlY1wiIgotKwkJbGlibmFtZT1gZXZhbCAiXFwkRUNITyBcIiRsaWJuYW1lX3NwZWNcIiJgCi0rCQlpZiB0ZXN0IC1uICIkZmlsZV9tYWdpY19nbG9iIjsgdGhlbgotKwkJICBsaWJuYW1lZ2xvYj1gZnVuY19lY2hvX2FsbCAiJGxpYm5hbWUiIHwgJFNFRCAtZSAkZmlsZV9tYWdpY19nbG9iYAotKwkJZWxzZQotKwkJICBsaWJuYW1lZ2xvYj0kbGlibmFtZQotKwkJZmkKLSsJCXRlc3QgIiR3YW50X25vY2FzZWdsb2IiID0geWVzICYmIG5vY2FzZWdsb2I9YHNob3B0IC1wIG5vY2FzZWdsb2JgCi0gCQlmb3IgaSBpbiAkbGliX3NlYXJjaF9wYXRoICRzeXNfbGliX3NlYXJjaF9wYXRoICRzaGxpYl9zZWFyY2hfcGF0aDsgZG8KLS0JCSAgcG90ZW50aWFsX2xpYnM9YGxzICRpLyRsaWJuYW1lWy4tXSogMj4vZGV2L251bGxgCi0rCQkgIGlmIHRlc3QgIiR3YW50X25vY2FzZWdsb2IiID0geWVzOyB0aGVuCi0rCQkgICAgc2hvcHQgLXMgbm9jYXNlZ2xvYgotKwkJICAgIHBvdGVudGlhbF9saWJzPWBscyAkaS8kbGlibmFtZWdsb2JbLi1dKiAyPi9kZXYvbnVsbGAKLSsJCSAgICAkbm9jYXNlZ2xvYgotKwkJICBlbHNlCi0rCQkgICAgcG90ZW50aWFsX2xpYnM9YGxzICRpLyRsaWJuYW1lZ2xvYlsuLV0qIDI+L2Rldi9udWxsYAotKwkJICBmaQotIAkJICBmb3IgcG90ZW50X2xpYiBpbiAkcG90ZW50aWFsX2xpYnM7IGRvCi0gCQkgICAgICAjIEZvbGxvdyBzb2Z0IGxpbmtzLgotIAkJICAgICAgaWYgbHMgLWxMZCAiJHBvdGVudF9saWIiIDI+L2Rldi9udWxsIHwKLUBAIC02ODg1LDEwICs3ODE2LDEwIEBAIEVPRgotIAkJCSopIHBvdGxpYj1gJEVDSE8gIiRwb3RsaWIiIHwgJFNFRCAncyxbXi9dKiQsLCdgIiRwb3RsaWJsaW5rIjs7Ci0gCQkJZXNhYwotIAkJICAgICAgZG9uZQotLQkJICAgICAgaWYgZXZhbCAiJGZpbGVfbWFnaWNfY21kIFwiXCRwb3RsaWJcIiIgMj4vZGV2L251bGwgfAotKwkJICAgICAgaWYgZXZhbCAkZmlsZV9tYWdpY19jbWQgXCJcJHBvdGxpYlwiIDI+L2Rldi9udWxsIHwKLSAJCQkgJFNFRCAtZSAxMHEgfAotIAkJCSAkRUdSRVAgIiRmaWxlX21hZ2ljX3JlZ2V4IiA+IC9kZXYvbnVsbDsgdGhlbgotLQkJCW5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKLSsJCQlmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGFfZGVwbGliIgotIAkJCWFfZGVwbGliPSIiCi0gCQkJYnJlYWsgMgotIAkJICAgICAgZmkKLUBAIC02OTEzLDcgKzc4NDQsNyBAQCBFT0YKLSAJICAgICAgOzsKLSAJICAgICopCi0gCSAgICAgICMgQWRkIGEgLUwgYXJndW1lbnQuCi0tCSAgICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKLSsJICAgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRhX2RlcGxpYiIKLSAJICAgICAgOzsKLSAJICAgIGVzYWMKLSAJICBkb25lICMgR29uZSB0aHJvdWdoIGFsbCBkZXBsaWJzLgotQEAgLTY5MjksMjAgKzc4NjAsMjAgQEAgRU9GCi0gCSAgICAgIGlmIHRlc3QgIlgkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIiA9ICJYeWVzIiA7IHRoZW4KLSAJCWNhc2UgIiAkcHJlZGVwcyAkcG9zdGRlcHMgIiBpbgotIAkJKiIgJGFfZGVwbGliICIqKQotLQkJICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIiCi0rCQkgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkYV9kZXBsaWIiCi0gCQkgIGFfZGVwbGliPSIiCi0gCQkgIDs7Ci0gCQllc2FjCi0gCSAgICAgIGZpCi0gCSAgICAgIGlmIHRlc3QgLW4gIiRhX2RlcGxpYiIgOyB0aGVuCi0tCQlldmFsICJsaWJuYW1lPVwiJGxpYm5hbWVfc3BlY1wiIgotKwkJbGlibmFtZT1gZXZhbCAiXFwkRUNITyBcIiRsaWJuYW1lX3NwZWNcIiJgCi0gCQlmb3IgaSBpbiAkbGliX3NlYXJjaF9wYXRoICRzeXNfbGliX3NlYXJjaF9wYXRoICRzaGxpYl9zZWFyY2hfcGF0aDsgZG8KLSAJCSAgcG90ZW50aWFsX2xpYnM9YGxzICRpLyRsaWJuYW1lWy4tXSogMj4vZGV2L251bGxgCi0gCQkgIGZvciBwb3RlbnRfbGliIGluICRwb3RlbnRpYWxfbGliczsgZG8KLSAJCSAgICBwb3RsaWI9IiRwb3RlbnRfbGliIiAjIHNlZSBzeW1saW5rLWNoZWNrIGFib3ZlIGluIGZpbGVfbWFnaWMgdGVzdAotIAkJICAgIGlmIGV2YWwgIlwkRUNITyBcIiRwb3RlbnRfbGliXCIiIDI+L2Rldi9udWxsIHwgJFNFRCAxMHEgfCBcCi0gCQkgICAgICAgJEVHUkVQICIkbWF0Y2hfcGF0dGVybl9yZWdleCIgPiAvZGV2L251bGw7IHRoZW4KLS0JCSAgICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKLSsJCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkYV9kZXBsaWIiCi0gCQkgICAgICBhX2RlcGxpYj0iIgotIAkJICAgICAgYnJlYWsgMgotIAkJICAgIGZpCi1AQCAtNjk2Nyw3ICs3ODk4LDcgQEAgRU9GCi0gCSAgICAgIDs7Ci0gCSAgICAqKQotIAkgICAgICAjIEFkZCBhIC1MIGFyZ3VtZW50LgotLQkgICAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIiCi0rCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkYV9kZXBsaWIiCi0gCSAgICAgIDs7Ci0gCSAgICBlc2FjCi0gCSAgZG9uZSAjIEdvbmUgdGhyb3VnaCBhbGwgZGVwbGlicy4KLUBAIC03MDcxLDcgKzgwMDIsNyBAQCBFT0YKLSAJKikKLSAJICBjYXNlICIgJGRlcGxpYnMgIiBpbgotIAkgICoiIC1MJHBhdGgvJG9iamRpciAiKikKLS0JICAgIG5ld19saWJzPSIkbmV3X2xpYnMgLUwkcGF0aC8kb2JqZGlyIiA7OwotKwkgICAgZnVuY19hcHBlbmQgbmV3X2xpYnMgIiAtTCRwYXRoLyRvYmpkaXIiIDs7Ci0gCSAgZXNhYwotIAkgIDs7Ci0gCWVzYWMKLUBAIC03MDgxLDEwICs4MDEyLDEwIEBAIEVPRgotIAktTCopCi0gCSAgY2FzZSAiICRuZXdfbGlicyAiIGluCi0gCSAgKiIgJGRlcGxpYiAiKikgOzsKLS0JICAqKSBuZXdfbGlicz0iJG5ld19saWJzICRkZXBsaWIiIDs7Ci0rCSAgKikgZnVuY19hcHBlbmQgbmV3X2xpYnMgIiAkZGVwbGliIiA7OwotIAkgIGVzYWMKLSAJICA7OwotLQkqKSBuZXdfbGlicz0iJG5ld19saWJzICRkZXBsaWIiIDs7Ci0rCSopIGZ1bmNfYXBwZW5kIG5ld19saWJzICIgJGRlcGxpYiIgOzsKLSAJZXNhYwotICAgICAgIGRvbmUKLSAgICAgICBkZXBsaWJzPSIkbmV3X2xpYnMiCi1AQCAtNzEwMSwxMCArODAzMiwxMiBAQCBFT0YKLSAJICBoYXJkY29kZV9saWJkaXJzPQotIAkgIGRlcF9ycGF0aD0KLSAJICBycGF0aD0iJGZpbmFsaXplX3JwYXRoIgotLQkgIHRlc3QgIiRtb2RlIiAhPSByZWxpbmsgJiYgcnBhdGg9IiRjb21waWxlX3JwYXRoJHJwYXRoIgotKwkgIHRlc3QgIiRvcHRfbW9kZSIgIT0gcmVsaW5rICYmIHJwYXRoPSIkY29tcGlsZV9ycGF0aCRycGF0aCIKLSAJICBmb3IgbGliZGlyIGluICRycGF0aDsgZG8KLSAJICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIjsgdGhlbgotIAkgICAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciI7IHRoZW4KLSsJCWZ1bmNfcmVwbGFjZV9zeXNyb290ICIkbGliZGlyIgotKwkJbGliZGlyPSRmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQKLSAJCWlmIHRlc3QgLXogIiRoYXJkY29kZV9saWJkaXJzIjsgdGhlbgotIAkJICBoYXJkY29kZV9saWJkaXJzPSIkbGliZGlyIgotIAkJZWxzZQotQEAgLTcxMTMsMTggKzgwNDYsMTggQEAgRU9GCi0gCQkgICoiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiKikKLSAJCSAgICA7OwotIAkJICAqKQotLQkJICAgIGhhcmRjb2RlX2xpYmRpcnM9IiRoYXJkY29kZV9saWJkaXJzJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgotKwkJICAgIGZ1bmNfYXBwZW5kIGhhcmRjb2RlX2xpYmRpcnMgIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciIKLSAJCSAgICA7OwotIAkJICBlc2FjCi0gCQlmaQotIAkgICAgICBlbHNlCi0tCQlldmFsICJmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIiIKLS0JCWRlcF9ycGF0aD0iJGRlcF9ycGF0aCAkZmxhZyIKLSsJCWV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKLSsJCWZ1bmNfYXBwZW5kIGRlcF9ycGF0aCAiICRmbGFnIgotIAkgICAgICBmaQotIAkgICAgZWxpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCi0gCSAgICAgIGNhc2UgIiRwZXJtX3JwYXRoICIgaW4KLSAJICAgICAgKiIgJGxpYmRpciAiKikgOzsKLS0JICAgICAgKikgcGVybV9ycGF0aD0iJHBlcm1fcnBhdGggJGxpYmRpciIgOzsKLSsJICAgICAgKikgZnVuY19hcHBlZCBwZXJtX3JwYXRoICIgJGxpYmRpciIgOzsKLSAJICAgICAgZXNhYwotIAkgICAgZmkKLSAJICBkb25lCi1AQCAtNzEzMyw0MCArODA2NiwzOCBAQCBFT0YKLSAJICAgICB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlycyI7IHRoZW4KLSAJICAgIGxpYmRpcj0iJGhhcmRjb2RlX2xpYmRpcnMiCi0gCSAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCI7IHRoZW4KLS0JICAgICAgZXZhbCAiZGVwX3JwYXRoPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGRcIiIKLSsJICAgICAgZXZhbCBkZXBfcnBhdGg9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZFwiCi0gCSAgICBlbHNlCi0tCSAgICAgIGV2YWwgImRlcF9ycGF0aD1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIiCi0rCSAgICAgIGV2YWwgZGVwX3JwYXRoPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgotIAkgICAgZmkKLSAJICBmaQotIAkgIGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciIgJiYgdGVzdCAtbiAiJHBlcm1fcnBhdGgiOyB0aGVuCi0gCSAgICAjIFdlIHNob3VsZCBzZXQgdGhlIHJ1bnBhdGhfdmFyLgotIAkgICAgcnBhdGg9Ci0gCSAgICBmb3IgZGlyIGluICRwZXJtX3JwYXRoOyBkbwotLQkgICAgICBycGF0aD0iJHJwYXRoJGRpcjoiCi0rCSAgICAgIGZ1bmNfYXBwZW5kIHJwYXRoICIkZGlyOiIKLSAJICAgIGRvbmUKLS0JICAgIGV2YWwgJHJ1bnBhdGhfdmFyPVwkcnBhdGhcJCRydW5wYXRoX3ZhcgotLQkgICAgZXhwb3J0ICRydW5wYXRoX3ZhcgotKwkgICAgZXZhbCAiJHJ1bnBhdGhfdmFyPSckcnBhdGhcJCRydW5wYXRoX3Zhcic7IGV4cG9ydCAkcnVucGF0aF92YXIiCi0gCSAgZmkKLSAJICB0ZXN0IC1uICIkZGVwX3JwYXRoIiAmJiBkZXBsaWJzPSIkZGVwX3JwYXRoICRkZXBsaWJzIgotIAlmaQotIAotIAlzaGxpYnBhdGg9IiRmaW5hbGl6ZV9zaGxpYnBhdGgiCi0tCXRlc3QgIiRtb2RlIiAhPSByZWxpbmsgJiYgc2hsaWJwYXRoPSIkY29tcGlsZV9zaGxpYnBhdGgkc2hsaWJwYXRoIgotKwl0ZXN0ICIkb3B0X21vZGUiICE9IHJlbGluayAmJiBzaGxpYnBhdGg9IiRjb21waWxlX3NobGlicGF0aCRzaGxpYnBhdGgiCi0gCWlmIHRlc3QgLW4gIiRzaGxpYnBhdGgiOyB0aGVuCi0tCSAgZXZhbCAkc2hsaWJwYXRoX3Zhcj1cJHNobGlicGF0aFwkJHNobGlicGF0aF92YXIKLS0JICBleHBvcnQgJHNobGlicGF0aF92YXIKLSsJICBldmFsICIkc2hsaWJwYXRoX3Zhcj0nJHNobGlicGF0aFwkJHNobGlicGF0aF92YXInOyBleHBvcnQgJHNobGlicGF0aF92YXIiCi0gCWZpCi0gCi0gCSMgR2V0IHRoZSByZWFsIGFuZCBsaW5rIG5hbWVzIG9mIHRoZSBsaWJyYXJ5LgotLQlldmFsICJzaGFyZWRfZXh0PVwiJHNocmV4dF9jbWRzXCIiCi0tCWV2YWwgImxpYnJhcnlfbmFtZXM9XCIkbGlicmFyeV9uYW1lc19zcGVjXCIiCi0rCWV2YWwgc2hhcmVkX2V4dD1cIiRzaHJleHRfY21kc1wiCi0rCWV2YWwgbGlicmFyeV9uYW1lcz1cIiRsaWJyYXJ5X25hbWVzX3NwZWNcIgotIAlzZXQgZHVtbXkgJGxpYnJhcnlfbmFtZXMKLSAJc2hpZnQKLSAJcmVhbG5hbWU9IiQxIgotIAlzaGlmdAotIAotIAlpZiB0ZXN0IC1uICIkc29uYW1lX3NwZWMiOyB0aGVuCi0tCSAgZXZhbCAic29uYW1lPVwiJHNvbmFtZV9zcGVjXCIiCi0rCSAgZXZhbCBzb25hbWU9XCIkc29uYW1lX3NwZWNcIgotIAllbHNlCi0gCSAgc29uYW1lPSIkcmVhbG5hbWUiCi0gCWZpCi1AQCAtNzE3OCw3ICs4MTA5LDcgQEAgRU9GCi0gCWxpbmtuYW1lcz0KLSAJZm9yIGxpbmsKLSAJZG8KLS0JICBsaW5rbmFtZXM9IiRsaW5rbmFtZXMgJGxpbmsiCi0rCSAgZnVuY19hcHBlbmQgbGlua25hbWVzICIgJGxpbmsiCi0gCWRvbmUKLSAKLSAJIyBVc2Ugc3RhbmRhcmQgb2JqZWN0cyBpZiB0aGV5IGFyZSBwaWMKLUBAIC03MTg5LDcgKzgxMjAsNyBAQCBFT0YKLSAJaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzIiAmJiB0ZXN0IC1uICIkaW5jbHVkZV9leHBzeW1zIjsgdGhlbgotIAkgICRvcHRfZHJ5X3J1biB8fCBjcCAiJGV4cG9ydF9zeW1ib2xzIiAiJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudWV4cCIKLSAJICBleHBvcnRfc3ltYm9scz0iJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudWV4cCIKLS0JICBkZWxmaWxlcz0iJGRlbGZpbGVzICRleHBvcnRfc3ltYm9scyIKLSsJICBmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRleHBvcnRfc3ltYm9scyIKLSAJZmkKLSAKLSAJb3JpZ19leHBvcnRfc3ltYm9scz0KLUBAIC03MjIwLDEzICs4MTUxLDQ1IEBAIEVPRgotIAkgICAgJG9wdF9kcnlfcnVuIHx8ICRSTSAkZXhwb3J0X3N5bWJvbHMKLSAJICAgIGNtZHM9JGV4cG9ydF9zeW1ib2xzX2NtZHMKLSAJICAgIHNhdmVfaWZzPSIkSUZTIjsgSUZTPSd+JwotLQkgICAgZm9yIGNtZCBpbiAkY21kczsgZG8KLSsJICAgIGZvciBjbWQxIGluICRjbWRzOyBkbwotIAkgICAgICBJRlM9IiRzYXZlX2lmcyIKLS0JICAgICAgZXZhbCAiY21kPVwiJGNtZFwiIgotLQkgICAgICBmdW5jX2xlbiAiICRjbWQiCi0tCSAgICAgIGxlbj0kZnVuY19sZW5fcmVzdWx0Ci0tCSAgICAgIGlmIHRlc3QgIiRsZW4iIC1sdCAiJG1heF9jbWRfbGVuIiB8fCB0ZXN0ICIkbWF4X2NtZF9sZW4iIC1sZSAtMTsgdGhlbgotKwkgICAgICAjIFRha2UgdGhlIG5vcm1hbCBicmFuY2ggaWYgdGhlIG5tX2ZpbGVfbGlzdF9zcGVjIGJyYW5jaAotKwkgICAgICAjIGRvZXNuJ3Qgd29yayBvciBpZiB0b29sIGNvbnZlcnNpb24gaXMgbm90IG5lZWRlZC4KLSsJICAgICAgY2FzZSAkbm1fZmlsZV9saXN0X3NwZWN+JHRvX3Rvb2xfZmlsZV9jbWQgaW4KLSsJCSp+ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcCB8ICp+ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIgfCB+KikKLSsJCSAgdHJ5X25vcm1hbF9icmFuY2g9eWVzCi0rCQkgIGV2YWwgY21kPVwiJGNtZDFcIgotKwkJICBmdW5jX2xlbiAiICRjbWQiCi0rCQkgIGxlbj0kZnVuY19sZW5fcmVzdWx0Ci0rCQkgIDs7Ci0rCQkqKQotKwkJICB0cnlfbm9ybWFsX2JyYW5jaD1ubwotKwkJICA7OwotKwkgICAgICBlc2FjCi0rCSAgICAgIGlmIHRlc3QgIiR0cnlfbm9ybWFsX2JyYW5jaCIgPSB5ZXMgXAotKwkJICYmIHsgdGVzdCAiJGxlbiIgLWx0ICIkbWF4X2NtZF9sZW4iIFwKLSsJCSAgICAgIHx8IHRlc3QgIiRtYXhfY21kX2xlbiIgLWxlIC0xOyB9Ci0rCSAgICAgIHRoZW4KLSsJCWZ1bmNfc2hvd19ldmFsICIkY21kIiAnZXhpdCAkPycKLSsJCXNraXBwZWRfZXhwb3J0PWZhbHNlCi0rCSAgICAgIGVsaWYgdGVzdCAtbiAiJG5tX2ZpbGVfbGlzdF9zcGVjIjsgdGhlbgotKwkJZnVuY19iYXNlbmFtZSAiJG91dHB1dCIKLSsJCW91dHB1dF9sYT0kZnVuY19iYXNlbmFtZV9yZXN1bHQKLSsJCXNhdmVfbGlib2Jqcz0kbGlib2JqcwotKwkJc2F2ZV9vdXRwdXQ9JG91dHB1dAotKwkJb3V0cHV0PSR7b3V0cHV0X29iamRpcn0vJHtvdXRwdXRfbGF9Lm5tCi0rCQlmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dCIKLSsJCWxpYm9ianM9JG5tX2ZpbGVfbGlzdF9zcGVjJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdAotKwkJZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkb3V0cHV0IgotKwkJZnVuY192ZXJib3NlICJjcmVhdGluZyAkTk0gaW5wdXQgZmlsZSBsaXN0OiAkb3V0cHV0IgotKwkJZm9yIG9iaiBpbiAkc2F2ZV9saWJvYmpzOyBkbwotKwkJICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG9iaiIKLSsJCSAgJEVDSE8gIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiCi0rCQlkb25lID4gIiRvdXRwdXQiCi0rCQlldmFsIGNtZD1cIiRjbWQxXCIKLSAJCWZ1bmNfc2hvd19ldmFsICIkY21kIiAnZXhpdCAkPycKLSsJCW91dHB1dD0kc2F2ZV9vdXRwdXQKLSsJCWxpYm9ianM9JHNhdmVfbGlib2JqcwotIAkJc2tpcHBlZF9leHBvcnQ9ZmFsc2UKLSAJICAgICAgZWxzZQotIAkJIyBUaGUgY29tbWFuZCBsaW5lIGlzIHRvbyBsb25nIHRvIGV4ZWN1dGUgaW4gb25lIHN0ZXAuCi1AQCAtNzI0OCw3ICs4MjExLDcgQEAgRU9GCi0gCWlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgJiYgdGVzdCAtbiAiJGluY2x1ZGVfZXhwc3ltcyI7IHRoZW4KLSAJICB0bXBfZXhwb3J0X3N5bWJvbHM9IiRleHBvcnRfc3ltYm9scyIKLSAJICB0ZXN0IC1uICIkb3JpZ19leHBvcnRfc3ltYm9scyIgJiYgdG1wX2V4cG9ydF9zeW1ib2xzPSIkb3JpZ19leHBvcnRfc3ltYm9scyIKLS0JICAkb3B0X2RyeV9ydW4gfHwgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNQMk5MID4+ICIkdG1wX2V4cG9ydF9zeW1ib2xzIgotKwkgICRvcHRfZHJ5X3J1biB8fCBldmFsICckRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU1AyTkwgPj4gIiR0bXBfZXhwb3J0X3N5bWJvbHMiJwotIAlmaQotIAotIAlpZiB0ZXN0ICJYJHNraXBwZWRfZXhwb3J0IiAhPSAiWDoiICYmIHRlc3QgLW4gIiRvcmlnX2V4cG9ydF9zeW1ib2xzIjsgdGhlbgotQEAgLTcyNjAsNyArODIyMyw3IEBAIEVPRgotIAkgICMgZ2xvYmFsIHZhcmlhYmxlcy4gam9pbigxKSB3b3VsZCBiZSBuaWNlIGhlcmUsIGJ1dCB1bmZvcnR1bmF0ZWx5Ci0gCSAgIyBpc24ndCBhIGJsZXNzZWQgdG9vbC4KLSAJICAkb3B0X2RyeV9ydW4gfHwgJFNFRCAtZSAnL1sgLF1EQVRBLyFkO3MsXCguKlwpXChbIFwsXS4qXCksc3xeXDEkfFwxXDJ8LCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIKLS0JICBkZWxmaWxlcz0iJGRlbGZpbGVzICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIiCi0rCSAgZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIgotIAkgIGV4cG9ydF9zeW1ib2xzPSRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZgotIAkgICRvcHRfZHJ5X3J1biB8fCAkU0VEIC1mICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlciA8ICRvcmlnX2V4cG9ydF9zeW1ib2xzID4gJGV4cG9ydF9zeW1ib2xzCi0gCWZpCi1AQCAtNzI3MCw3ICs4MjMzLDcgQEAgRU9GCi0gCSAgY2FzZSAiICRjb252ZW5pZW5jZSAiIGluCi0gCSAgKiIgJHRlc3RfZGVwbGliICIqKSA7OwotIAkgICopCi0tCSAgICB0bXBfZGVwbGlicz0iJHRtcF9kZXBsaWJzICR0ZXN0X2RlcGxpYiIKLSsJICAgIGZ1bmNfYXBwZW5kIHRtcF9kZXBsaWJzICIgJHRlc3RfZGVwbGliIgotIAkgICAgOzsKLSAJICBlc2FjCi0gCWRvbmUKLUBAIC03Mjg2LDQzICs4MjQ5LDQzIEBAIEVPRgotIAkgIGZpCi0gCSAgaWYgdGVzdCAtbiAiJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjIjsgdGhlbgotIAkgICAgc2F2ZV9saWJvYmpzPSRsaWJvYmpzCi0tCSAgICBldmFsICJsaWJvYmpzPVwiXCRsaWJvYmpzICR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY1wiIgotKwkgICAgZXZhbCBsaWJvYmpzPVwiXCRsaWJvYmpzICR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY1wiCi0gCSAgICB0ZXN0ICJYJGxpYm9ianMiID0gIlggIiAmJiBsaWJvYmpzPQotIAkgIGVsc2UKLSAJICAgIGdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgiCi0tCSAgICBnZW5lcmF0ZWQ9IiRnZW5lcmF0ZWQgJGdlbnRvcCIKLSsJICAgIGZ1bmNfYXBwZW5kIGdlbmVyYXRlZCAiICRnZW50b3AiCi0gCi0gCSAgICBmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgJGdlbnRvcCAkY29udmVuaWVuY2UKLS0JICAgIGxpYm9ianM9IiRsaWJvYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgotKwkgICAgZnVuY19hcHBlbmQgbGlib2JqcyAiICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgotIAkgICAgdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KLSAJICBmaQotIAlmaQotIAotIAlpZiB0ZXN0ICIkdGhyZWFkX3NhZmUiID0geWVzICYmIHRlc3QgLW4gIiR0aHJlYWRfc2FmZV9mbGFnX3NwZWMiOyB0aGVuCi0tCSAgZXZhbCAiZmxhZz1cIiR0aHJlYWRfc2FmZV9mbGFnX3NwZWNcIiIKLS0JICBsaW5rZXJfZmxhZ3M9IiRsaW5rZXJfZmxhZ3MgJGZsYWciCi0rCSAgZXZhbCBmbGFnPVwiJHRocmVhZF9zYWZlX2ZsYWdfc3BlY1wiCi0rCSAgZnVuY19hcHBlbmQgbGlua2VyX2ZsYWdzICIgJGZsYWciCi0gCWZpCi0gCi0gCSMgTWFrZSBhIGJhY2t1cCBvZiB0aGUgdW5pbnN0YWxsZWQgbGlicmFyeSB3aGVuIHJlbGlua2luZwotLQlpZiB0ZXN0ICIkbW9kZSIgPSByZWxpbms7IHRoZW4KLS0JICAkb3B0X2RyeV9ydW4gfHwgKGNkICRvdXRwdXRfb2JqZGlyICYmICRSTSAke3JlYWxuYW1lfVUgJiYgJE1WICRyZWFsbmFtZSAke3JlYWxuYW1lfVUpIHx8IGV4aXQgJD8KLSsJaWYgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgdGhlbgotKwkgICRvcHRfZHJ5X3J1biB8fCBldmFsICcoY2QgJG91dHB1dF9vYmpkaXIgJiYgJFJNICR7cmVhbG5hbWV9VSAmJiAkTVYgJHJlYWxuYW1lICR7cmVhbG5hbWV9VSknIHx8IGV4aXQgJD8KLSAJZmkKLSAKLSAJIyBEbyBlYWNoIG9mIHRoZSBhcmNoaXZlIGNvbW1hbmRzLgotIAlpZiB0ZXN0ICIkbW9kdWxlIiA9IHllcyAmJiB0ZXN0IC1uICIkbW9kdWxlX2NtZHMiIDsgdGhlbgotIAkgIGlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgJiYgdGVzdCAtbiAiJG1vZHVsZV9leHBzeW1fY21kcyI7IHRoZW4KLS0JICAgIGV2YWwgInRlc3RfY21kcz1cIiRtb2R1bGVfZXhwc3ltX2NtZHNcIiIKLSsJICAgIGV2YWwgdGVzdF9jbWRzPVwiJG1vZHVsZV9leHBzeW1fY21kc1wiCi0gCSAgICBjbWRzPSRtb2R1bGVfZXhwc3ltX2NtZHMKLSAJICBlbHNlCi0tCSAgICBldmFsICJ0ZXN0X2NtZHM9XCIkbW9kdWxlX2NtZHNcIiIKLSsJICAgIGV2YWwgdGVzdF9jbWRzPVwiJG1vZHVsZV9jbWRzXCIKLSAJICAgIGNtZHM9JG1vZHVsZV9jbWRzCi0gCSAgZmkKLSAJZWxzZQotIAkgIGlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgJiYgdGVzdCAtbiAiJGFyY2hpdmVfZXhwc3ltX2NtZHMiOyB0aGVuCi0tCSAgICBldmFsICJ0ZXN0X2NtZHM9XCIkYXJjaGl2ZV9leHBzeW1fY21kc1wiIgotKwkgICAgZXZhbCB0ZXN0X2NtZHM9XCIkYXJjaGl2ZV9leHBzeW1fY21kc1wiCi0gCSAgICBjbWRzPSRhcmNoaXZlX2V4cHN5bV9jbWRzCi0gCSAgZWxzZQotLQkgICAgZXZhbCAidGVzdF9jbWRzPVwiJGFyY2hpdmVfY21kc1wiIgotKwkgICAgZXZhbCB0ZXN0X2NtZHM9XCIkYXJjaGl2ZV9jbWRzXCIKLSAJICAgIGNtZHM9JGFyY2hpdmVfY21kcwotIAkgIGZpCi0gCWZpCi1AQCAtNzM2NiwxMCArODMyOSwxMyBAQCBFT0YKLSAJICAgIGVjaG8gJ0lOUFVUICgnID4gJG91dHB1dAotIAkgICAgZm9yIG9iaiBpbiAkc2F2ZV9saWJvYmpzCi0gCSAgICBkbwotLQkgICAgICAkRUNITyAiJG9iaiIgPj4gJG91dHB1dAotKwkgICAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG9iaiIKLSsJICAgICAgJEVDSE8gIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiID4+ICRvdXRwdXQKLSAJICAgIGRvbmUKLSAJICAgIGVjaG8gJyknID4+ICRvdXRwdXQKLS0JICAgIGRlbGZpbGVzPSIkZGVsZmlsZXMgJG91dHB1dCIKLSsJICAgIGZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJG91dHB1dCIKLSsJICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0IgotKwkgICAgb3V0cHV0PSRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQKLSAJICBlbGlmIHRlc3QgLW4gIiRzYXZlX2xpYm9ianMiICYmIHRlc3QgIlgkc2tpcHBlZF9leHBvcnQiICE9ICJYOiIgJiYgdGVzdCAiWCRmaWxlX2xpc3Rfc3BlYyIgIT0gWDsgdGhlbgotIAkgICAgb3V0cHV0PSR7b3V0cHV0X29iamRpcn0vJHtvdXRwdXRfbGF9LmxuawotIAkgICAgZnVuY192ZXJib3NlICJjcmVhdGluZyBsaW5rZXIgaW5wdXQgZmlsZSBsaXN0OiAkb3V0cHV0IgotQEAgLTczODMsMTUgKzgzNDksMTcgQEAgRU9GCi0gCSAgICBmaQotIAkgICAgZm9yIG9iagotIAkgICAgZG8KLS0JICAgICAgJEVDSE8gIiRvYmoiID4+ICRvdXRwdXQKLSsJICAgICAgZnVuY190b190b29sX2ZpbGUgIiRvYmoiCi0rCSAgICAgICRFQ0hPICIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiA+PiAkb3V0cHV0Ci0gCSAgICBkb25lCi0tCSAgICBkZWxmaWxlcz0iJGRlbGZpbGVzICRvdXRwdXQiCi0tCSAgICBvdXRwdXQ9JGZpcnN0b2JqXCIkZmlsZV9saXN0X3NwZWMkb3V0cHV0XCIKLSsJICAgIGZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJG91dHB1dCIKLSsJICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0IgotKwkgICAgb3V0cHV0PSRmaXJzdG9ialwiJGZpbGVfbGlzdF9zcGVjJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdFwiCi0gCSAgZWxzZQotIAkgICAgaWYgdGVzdCAtbiAiJHNhdmVfbGlib2JqcyI7IHRoZW4KLSAJICAgICAgZnVuY192ZXJib3NlICJjcmVhdGluZyByZWxvYWRhYmxlIG9iamVjdCBmaWxlcy4uLiIKLSAJICAgICAgb3V0cHV0PSRvdXRwdXRfb2JqZGlyLyRvdXRwdXRfbGEtJHtrfS4kb2JqZXh0Ci0tCSAgICAgIGV2YWwgInRlc3RfY21kcz1cIiRyZWxvYWRfY21kc1wiIgotKwkgICAgICBldmFsIHRlc3RfY21kcz1cIiRyZWxvYWRfY21kc1wiCi0gCSAgICAgIGZ1bmNfbGVuICIgJHRlc3RfY21kcyIKLSAJICAgICAgbGVuMD0kZnVuY19sZW5fcmVzdWx0Ci0gCSAgICAgIGxlbj0kbGVuMAotQEAgLTc0MTEsMTIgKzgzNzksMTIgQEAgRU9GCi0gCQkgIGlmIHRlc3QgIiRrIiAtZXEgMSA7IHRoZW4KLSAJCSAgICAjIFRoZSBmaXJzdCBmaWxlIGRvZXNuJ3QgaGF2ZSBhIHByZXZpb3VzIGNvbW1hbmQgdG8gYWRkLgotIAkJICAgIHJlbG9hZF9vYmpzPSRvYmpsaXN0Ci0tCQkgICAgZXZhbCAiY29uY2F0X2NtZHM9XCIkcmVsb2FkX2NtZHNcIiIKLSsJCSAgICBldmFsIGNvbmNhdF9jbWRzPVwiJHJlbG9hZF9jbWRzXCIKLSAJCSAgZWxzZQotIAkJICAgICMgQWxsIHN1YnNlcXVlbnQgcmVsb2FkYWJsZSBvYmplY3QgZmlsZXMgd2lsbCBsaW5rIGluCi0gCQkgICAgIyB0aGUgbGFzdCBvbmUgY3JlYXRlZC4KLSAJCSAgICByZWxvYWRfb2Jqcz0iJG9iamxpc3QgJGxhc3Rfcm9iaiIKLS0JCSAgICBldmFsICJjb25jYXRfY21kcz1cIlwkY29uY2F0X2NtZHN+JHJlbG9hZF9jbWRzflwkUk0gJGxhc3Rfcm9ialwiIgotKwkJICAgIGV2YWwgY29uY2F0X2NtZHM9XCJcJGNvbmNhdF9jbWRzfiRyZWxvYWRfY21kc35cJFJNICRsYXN0X3JvYmpcIgotIAkJICBmaQotIAkJICBsYXN0X3JvYmo9JG91dHB1dF9vYmpkaXIvJG91dHB1dF9sYS0ke2t9LiRvYmpleHQKLSAJCSAgZnVuY19hcml0aCAkayArIDEKLUBAIC03NDMzLDExICs4NDAxLDExIEBAIEVPRgotIAkgICAgICAjIGZpbGVzIHdpbGwgbGluayBpbiB0aGUgbGFzdCBvbmUgY3JlYXRlZC4KLSAJICAgICAgdGVzdCAteiAiJGNvbmNhdF9jbWRzIiB8fCBjb25jYXRfY21kcz0kY29uY2F0X2NtZHN+Ci0gCSAgICAgIHJlbG9hZF9vYmpzPSIkb2JqbGlzdCAkbGFzdF9yb2JqIgotLQkgICAgICBldmFsICJjb25jYXRfY21kcz1cIlwke2NvbmNhdF9jbWRzfSRyZWxvYWRfY21kc1wiIgotKwkgICAgICBldmFsIGNvbmNhdF9jbWRzPVwiXCR7Y29uY2F0X2NtZHN9JHJlbG9hZF9jbWRzXCIKLSAJICAgICAgaWYgdGVzdCAtbiAiJGxhc3Rfcm9iaiI7IHRoZW4KLS0JICAgICAgICBldmFsICJjb25jYXRfY21kcz1cIlwke2NvbmNhdF9jbWRzfX5cJFJNICRsYXN0X3JvYmpcIiIKLSsJICAgICAgICBldmFsIGNvbmNhdF9jbWRzPVwiXCR7Y29uY2F0X2NtZHN9flwkUk0gJGxhc3Rfcm9ialwiCi0gCSAgICAgIGZpCi0tCSAgICAgIGRlbGZpbGVzPSIkZGVsZmlsZXMgJG91dHB1dCIKLSsJICAgICAgZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkb3V0cHV0IgotIAotIAkgICAgZWxzZQotIAkgICAgICBvdXRwdXQ9Ci1AQCAtNzQ1MCw5ICs4NDE4LDkgQEAgRU9GCi0gCSAgICAgIGxpYm9ianM9JG91dHB1dAotIAkgICAgICAjIEFwcGVuZCB0aGUgY29tbWFuZCB0byBjcmVhdGUgdGhlIGV4cG9ydCBmaWxlLgotIAkgICAgICB0ZXN0IC16ICIkY29uY2F0X2NtZHMiIHx8IGNvbmNhdF9jbWRzPSRjb25jYXRfY21kc34KLS0JICAgICAgZXZhbCAiY29uY2F0X2NtZHM9XCJcJGNvbmNhdF9jbWRzJGV4cG9ydF9zeW1ib2xzX2NtZHNcIiIKLSsJICAgICAgZXZhbCBjb25jYXRfY21kcz1cIlwkY29uY2F0X2NtZHMkZXhwb3J0X3N5bWJvbHNfY21kc1wiCi0gCSAgICAgIGlmIHRlc3QgLW4gIiRsYXN0X3JvYmoiOyB0aGVuCi0tCQlldmFsICJjb25jYXRfY21kcz1cIlwkY29uY2F0X2NtZHN+XCRSTSAkbGFzdF9yb2JqXCIiCi0rCQlldmFsIGNvbmNhdF9jbWRzPVwiXCRjb25jYXRfY21kc35cJFJNICRsYXN0X3JvYmpcIgotIAkgICAgICBmaQotIAkgICAgZmkKLSAKLUBAIC03NDcxLDcgKzg0MzksNyBAQCBFT0YKLSAJCWx0X2V4aXQ9JD8KLSAKLSAJCSMgUmVzdG9yZSB0aGUgdW5pbnN0YWxsZWQgbGlicmFyeSBhbmQgZXhpdAotLQkJaWYgdGVzdCAiJG1vZGUiID0gcmVsaW5rOyB0aGVuCi0rCQlpZiB0ZXN0ICIkb3B0X21vZGUiID0gcmVsaW5rOyB0aGVuCi0gCQkgICggY2QgIiRvdXRwdXRfb2JqZGlyIiAmJiBcCi0gCQkgICAgJFJNICIke3JlYWxuYW1lfVQiICYmIFwKLSAJCSAgICAkTVYgIiR7cmVhbG5hbWV9VSIgIiRyZWFsbmFtZSIgKQotQEAgLTc0OTIsNyArODQ2MCw3IEBAIEVPRgotIAkgICAgaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzIiAmJiB0ZXN0IC1uICIkaW5jbHVkZV9leHBzeW1zIjsgdGhlbgotIAkgICAgICB0bXBfZXhwb3J0X3N5bWJvbHM9IiRleHBvcnRfc3ltYm9scyIKLSAJICAgICAgdGVzdCAtbiAiJG9yaWdfZXhwb3J0X3N5bWJvbHMiICYmIHRtcF9leHBvcnRfc3ltYm9scz0iJG9yaWdfZXhwb3J0X3N5bWJvbHMiCi0tCSAgICAgICRvcHRfZHJ5X3J1biB8fCAkRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU1AyTkwgPj4gIiR0bXBfZXhwb3J0X3N5bWJvbHMiCi0rCSAgICAgICRvcHRfZHJ5X3J1biB8fCBldmFsICckRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU1AyTkwgPj4gIiR0bXBfZXhwb3J0X3N5bWJvbHMiJwotIAkgICAgZmkKLSAKLSAJICAgIGlmIHRlc3QgLW4gIiRvcmlnX2V4cG9ydF9zeW1ib2xzIjsgdGhlbgotQEAgLTc1MDQsNyArODQ3Miw3IEBAIEVPRgotIAkgICAgICAjIGdsb2JhbCB2YXJpYWJsZXMuIGpvaW4oMSkgd291bGQgYmUgbmljZSBoZXJlLCBidXQgdW5mb3J0dW5hdGVseQotIAkgICAgICAjIGlzbid0IGEgYmxlc3NlZCB0b29sLgotIAkgICAgICAkb3B0X2RyeV9ydW4gfHwgJFNFRCAtZSAnL1sgLF1EQVRBLyFkO3MsXCguKlwpXChbIFwsXS4qXCksc3xeXDEkfFwxXDJ8LCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIKLS0JICAgICAgZGVsZmlsZXM9IiRkZWxmaWxlcyAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIgotKwkgICAgICBmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIiCi0gCSAgICAgIGV4cG9ydF9zeW1ib2xzPSRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZgotIAkgICAgICAkb3B0X2RyeV9ydW4gfHwgJFNFRCAtZiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIgPCAkb3JpZ19leHBvcnRfc3ltYm9scyA+ICRleHBvcnRfc3ltYm9scwotIAkgICAgZmkKLUBAIC03NTE1LDcgKzg0ODMsNyBAQCBFT0YKLSAJICBvdXRwdXQ9JHNhdmVfb3V0cHV0Ci0gCi0gCSAgaWYgdGVzdCAtbiAiJGNvbnZlbmllbmNlIiAmJiB0ZXN0IC1uICIkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMiOyB0aGVuCi0tCSAgICBldmFsICJsaWJvYmpzPVwiXCRsaWJvYmpzICR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY1wiIgotKwkgICAgZXZhbCBsaWJvYmpzPVwiXCRsaWJvYmpzICR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY1wiCi0gCSAgICB0ZXN0ICJYJGxpYm9ianMiID0gIlggIiAmJiBsaWJvYmpzPQotIAkgIGZpCi0gCSAgIyBFeHBhbmQgdGhlIGxpYnJhcnkgbGlua2luZyBjb21tYW5kcyBhZ2FpbiB0byByZXNldCB0aGUKLUBAIC03NTM5LDIzICs4NTA3LDIzIEBAIEVPRgotIAotIAlpZiB0ZXN0IC1uICIkZGVsZmlsZXMiOyB0aGVuCi0gCSAgIyBBcHBlbmQgdGhlIGNvbW1hbmQgdG8gcmVtb3ZlIHRlbXBvcmFyeSBmaWxlcyB0byAkY21kcy4KLS0JICBldmFsICJjbWRzPVwiXCRjbWRzflwkUk0gJGRlbGZpbGVzXCIiCi0rCSAgZXZhbCBjbWRzPVwiXCRjbWRzflwkUk0gJGRlbGZpbGVzXCIKLSAJZmkKLSAKLSAJIyBBZGQgYW55IG9iamVjdHMgZnJvbSBwcmVsb2FkZWQgY29udmVuaWVuY2UgbGlicmFyaWVzCi0gCWlmIHRlc3QgLW4gIiRkbHByZWZpbGVzIjsgdGhlbgotIAkgIGdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgiCi0tCSAgZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCi0rCSAgZnVuY19hcHBlbmQgZ2VuZXJhdGVkICIgJGdlbnRvcCIKLSAKLSAJICBmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgJGdlbnRvcCAkZGxwcmVmaWxlcwotLQkgIGxpYm9ianM9IiRsaWJvYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgotKwkgIGZ1bmNfYXBwZW5kIGxpYm9ianMgIiAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKLSAJICB0ZXN0ICJYJGxpYm9ianMiID0gIlggIiAmJiBsaWJvYmpzPQotIAlmaQotIAotIAlzYXZlX2lmcz0iJElGUyI7IElGUz0nficKLSAJZm9yIGNtZCBpbiAkY21kczsgZG8KLSAJICBJRlM9IiRzYXZlX2lmcyIKLS0JICBldmFsICJjbWQ9XCIkY21kXCIiCi0rCSAgZXZhbCBjbWQ9XCIkY21kXCIKLSAJICAkb3B0X3NpbGVudCB8fCB7Ci0gCSAgICBmdW5jX3F1b3RlX2Zvcl9leHBhbmQgIiRjbWQiCi0gCSAgICBldmFsICJmdW5jX2VjaG8gJGZ1bmNfcXVvdGVfZm9yX2V4cGFuZF9yZXN1bHQiCi1AQCAtNzU2NCw3ICs4NTMyLDcgQEAgRU9GCi0gCSAgICBsdF9leGl0PSQ/Ci0gCi0gCSAgICAjIFJlc3RvcmUgdGhlIHVuaW5zdGFsbGVkIGxpYnJhcnkgYW5kIGV4aXQKLS0JICAgIGlmIHRlc3QgIiRtb2RlIiA9IHJlbGluazsgdGhlbgotKwkgICAgaWYgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgdGhlbgotIAkgICAgICAoIGNkICIkb3V0cHV0X29iamRpciIgJiYgXAotIAkgICAgICAgICRSTSAiJHtyZWFsbmFtZX1UIiAmJiBcCi0gCQkkTVYgIiR7cmVhbG5hbWV9VSIgIiRyZWFsbmFtZSIgKQotQEAgLTc1NzYsOCArODU0NCw4IEBAIEVPRgotIAlJRlM9IiRzYXZlX2lmcyIKLSAKLSAJIyBSZXN0b3JlIHRoZSB1bmluc3RhbGxlZCBsaWJyYXJ5IGFuZCBleGl0Ci0tCWlmIHRlc3QgIiRtb2RlIiA9IHJlbGluazsgdGhlbgotLQkgICRvcHRfZHJ5X3J1biB8fCAoY2QgJG91dHB1dF9vYmpkaXIgJiYgJFJNICR7cmVhbG5hbWV9VCAmJiAkTVYgJHJlYWxuYW1lICR7cmVhbG5hbWV9VCAmJiAkTVYgJHtyZWFsbmFtZX1VICRyZWFsbmFtZSkgfHwgZXhpdCAkPwotKwlpZiB0ZXN0ICIkb3B0X21vZGUiID0gcmVsaW5rOyB0aGVuCi0rCSAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgJyhjZCAkb3V0cHV0X29iamRpciAmJiAkUk0gJHtyZWFsbmFtZX1UICYmICRNViAkcmVhbG5hbWUgJHtyZWFsbmFtZX1UICYmICRNViAke3JlYWxuYW1lfVUgJHJlYWxuYW1lKScgfHwgZXhpdCAkPwotIAotIAkgIGlmIHRlc3QgLW4gIiRjb252ZW5pZW5jZSI7IHRoZW4KLSAJICAgIGlmIHRlc3QgLXogIiR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYyI7IHRoZW4KLUBAIC03NjU2LDE3ICs4NjI0LDIwIEBAIEVPRgotIAotICAgICAgIGlmIHRlc3QgLW4gIiRjb252ZW5pZW5jZSI7IHRoZW4KLSAJaWYgdGVzdCAtbiAiJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjIjsgdGhlbgotLQkgIGV2YWwgInRtcF93aG9sZV9hcmNoaXZlX2ZsYWdzPVwiJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjXCIiCi0rCSAgZXZhbCB0bXBfd2hvbGVfYXJjaGl2ZV9mbGFncz1cIiR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY1wiCi0gCSAgcmVsb2FkX2NvbnZfb2Jqcz0kcmVsb2FkX29ianNcIGAkRUNITyAiJHRtcF93aG9sZV9hcmNoaXZlX2ZsYWdzIiB8ICRTRUQgJ3N8LHwgfGcnYAotIAllbHNlCi0gCSAgZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke29ian14IgotLQkgIGdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgotKwkgIGZ1bmNfYXBwZW5kIGdlbmVyYXRlZCAiICRnZW50b3AiCi0gCi0gCSAgZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGNvbnZlbmllbmNlCi0gCSAgcmVsb2FkX2NvbnZfb2Jqcz0iJHJlbG9hZF9vYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgotIAlmaQotICAgICAgIGZpCi0gCi0rICAgICAgIyBJZiB3ZSdyZSBub3QgYnVpbGRpbmcgc2hhcmVkLCB3ZSBuZWVkIHRvIHVzZSBub25fcGljX29ianMKLSsgICAgICB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiAhPSB5ZXMgJiYgbGlib2Jqcz0iJG5vbl9waWNfb2JqZWN0cyIKLSsKLSAgICAgICAjIENyZWF0ZSB0aGUgb2xkLXN0eWxlIG9iamVjdC4KLSAgICAgICByZWxvYWRfb2Jqcz0iJG9ianMkb2xkX2RlcGxpYnMgImAkRUNITyAiJGxpYm9ianMiIHwgJFNQMk5MIHwgJFNFRCAiL1wuJHtsaWJleHR9JC9kOyAvXC5saWIkL2Q7ICRsbzJvIiB8ICROTDJTUGAiICRyZWxvYWRfY29udl9vYmpzIiAjIyMgdGVzdHN1aXRlOiBza2lwIG5lc3RlZCBxdW90aW5nIHRlc3QKLSAKLUBAIC03NjkwLDcgKzg2NjEsNyBAQCBFT0YKLSAJIyBDcmVhdGUgYW4gaW52YWxpZCBsaWJ0b29sIG9iamVjdCBpZiBubyBQSUMsIHNvIHRoYXQgd2UgZG9uJ3QKLSAJIyBhY2NpZGVudGFsbHkgbGluayBpdCBpbnRvIGEgcHJvZ3JhbS4KLSAJIyAkc2hvdyAiZWNobyB0aW1lc3RhbXAgPiAkbGlib2JqIgotLQkjICRvcHRfZHJ5X3J1biB8fCBlY2hvIHRpbWVzdGFtcCA+ICRsaWJvYmogfHwgZXhpdCAkPwotKwkjICRvcHRfZHJ5X3J1biB8fCBldmFsICJlY2hvIHRpbWVzdGFtcCA+ICRsaWJvYmoiIHx8IGV4aXQgJD8KLSAJZXhpdCAkRVhJVF9TVUNDRVNTCi0gICAgICAgZmkKLSAKLUBAIC03NzQwLDggKzg3MTEsOCBAQCBFT0YKLSAJaWYgdGVzdCAiJHRhZ25hbWUiID0gQ1hYIDsgdGhlbgotIAkgIGNhc2UgJHtNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQtMTAuMH0gaW4KLSAJICAgIDEwLlswMTIzXSkKLS0JICAgICAgY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kICR7d2x9LWJpbmRfYXRfbG9hZCIKLS0JICAgICAgZmluYWxpemVfY29tbWFuZD0iJGZpbmFsaXplX2NvbW1hbmQgJHt3bH0tYmluZF9hdF9sb2FkIgotKwkgICAgICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAke3dsfS1iaW5kX2F0X2xvYWQiCi0rCSAgICAgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAke3dsfS1iaW5kX2F0X2xvYWQiCi0gCSAgICA7OwotIAkgIGVzYWMKLSAJZmkKLUBAIC03NzYxLDcgKzg3MzIsNyBAQCBFT0YKLSAJKikKLSAJICBjYXNlICIgJGNvbXBpbGVfZGVwbGlicyAiIGluCi0gCSAgKiIgLUwkcGF0aC8kb2JqZGlyICIqKQotLQkgICAgbmV3X2xpYnM9IiRuZXdfbGlicyAtTCRwYXRoLyRvYmpkaXIiIDs7Ci0rCSAgICBmdW5jX2FwcGVuZCBuZXdfbGlicyAiIC1MJHBhdGgvJG9iamRpciIgOzsKLSAJICBlc2FjCi0gCSAgOzsKLSAJZXNhYwotQEAgLTc3NzEsMTcgKzg3NDIsMTcgQEAgRU9GCi0gCS1MKikKLSAJICBjYXNlICIgJG5ld19saWJzICIgaW4KLSAJICAqIiAkZGVwbGliICIqKSA7OwotLQkgICopIG5ld19saWJzPSIkbmV3X2xpYnMgJGRlcGxpYiIgOzsKLSsJICAqKSBmdW5jX2FwcGVuZCBuZXdfbGlicyAiICRkZXBsaWIiIDs7Ci0gCSAgZXNhYwotIAkgIDs7Ci0tCSopIG5ld19saWJzPSIkbmV3X2xpYnMgJGRlcGxpYiIgOzsKLSsJKikgZnVuY19hcHBlbmQgbmV3X2xpYnMgIiAkZGVwbGliIiA7OwotIAllc2FjCi0gICAgICAgZG9uZQotICAgICAgIGNvbXBpbGVfZGVwbGlicz0iJG5ld19saWJzIgotIAotIAotLSAgICAgIGNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCAkY29tcGlsZV9kZXBsaWJzIgotLSAgICAgIGZpbmFsaXplX2NvbW1hbmQ9IiRmaW5hbGl6ZV9jb21tYW5kICRmaW5hbGl6ZV9kZXBsaWJzIgotKyAgICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRjb21waWxlX2RlcGxpYnMiCi0rICAgICAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRmaW5hbGl6ZV9kZXBsaWJzIgotIAotICAgICAgIGlmIHRlc3QgLW4gIiRycGF0aCR4cnBhdGgiOyB0aGVuCi0gCSMgSWYgdGhlIHVzZXIgc3BlY2lmaWVkIGFueSBycGF0aCBmbGFncywgdGhlbiBhZGQgdGhlbS4KLUBAIC03Nzg5LDcgKzg3NjAsNyBAQCBFT0YKLSAJICAjIFRoaXMgaXMgdGhlIG1hZ2ljIHRvIHVzZSAtcnBhdGguCi0gCSAgY2FzZSAiJGZpbmFsaXplX3JwYXRoICIgaW4KLSAJICAqIiAkbGliZGlyICIqKSA7OwotLQkgICopIGZpbmFsaXplX3JwYXRoPSIkZmluYWxpemVfcnBhdGggJGxpYmRpciIgOzsKLSsJICAqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9ycGF0aCAiICRsaWJkaXIiIDs7Ci0gCSAgZXNhYwotIAlkb25lCi0gICAgICAgZmkKLUBAIC03ODA4LDE4ICs4Nzc5LDE4IEBAIEVPRgotIAkgICAgICAqIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIiopCi0gCQk7OwotIAkgICAgICAqKQotLQkJaGFyZGNvZGVfbGliZGlycz0iJGhhcmRjb2RlX2xpYmRpcnMkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIiCi0rCQlmdW5jX2FwcGVuZCBoYXJkY29kZV9saWJkaXJzICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIiCi0gCQk7OwotIAkgICAgICBlc2FjCi0gCSAgICBmaQotIAkgIGVsc2UKLS0JICAgIGV2YWwgImZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiIgotLQkgICAgcnBhdGg9IiRycGF0aCAkZmxhZyIKLSsJICAgIGV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKLSsJICAgIGZ1bmNfYXBwZW5kIHJwYXRoICIgJGZsYWciCi0gCSAgZmkKLSAJZWxpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCi0gCSAgY2FzZSAiJHBlcm1fcnBhdGggIiBpbgotIAkgICoiICRsaWJkaXIgIiopIDs7Ci0tCSAgKikgcGVybV9ycGF0aD0iJHBlcm1fcnBhdGggJGxpYmRpciIgOzsKLSsJICAqKSBmdW5jX2FwcGVuZCBwZXJtX3JwYXRoICIgJGxpYmRpciIgOzsKLSAJICBlc2FjCi0gCWZpCi0gCWNhc2UgJGhvc3QgaW4KLUBAIC03ODI4LDEyICs4Nzk5LDEyIEBAIEVPRgotIAkgIGNhc2UgOiRkbGxzZWFyY2hwYXRoOiBpbgotIAkgICoiOiRsaWJkaXI6IiopIDs7Ci0gCSAgOjopIGRsbHNlYXJjaHBhdGg9JGxpYmRpcjs7Ci0tCSAgKikgZGxsc2VhcmNocGF0aD0iJGRsbHNlYXJjaHBhdGg6JGxpYmRpciI7OwotKwkgICopIGZ1bmNfYXBwZW5kIGRsbHNlYXJjaHBhdGggIjokbGliZGlyIjs7Ci0gCSAgZXNhYwotIAkgIGNhc2UgOiRkbGxzZWFyY2hwYXRoOiBpbgotIAkgICoiOiR0ZXN0YmluZGlyOiIqKSA7OwotIAkgIDo6KSBkbGxzZWFyY2hwYXRoPSR0ZXN0YmluZGlyOzsKLS0JICAqKSBkbGxzZWFyY2hwYXRoPSIkZGxsc2VhcmNocGF0aDokdGVzdGJpbmRpciI7OwotKwkgICopIGZ1bmNfYXBwZW5kIGRsbHNlYXJjaHBhdGggIjokdGVzdGJpbmRpciI7OwotIAkgIGVzYWMKLSAJICA7OwotIAllc2FjCi1AQCAtNzg0Miw3ICs4ODEzLDcgQEAgRU9GCi0gICAgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiICYmCi0gCSB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlycyI7IHRoZW4KLSAJbGliZGlyPSIkaGFyZGNvZGVfbGliZGlycyIKLS0JZXZhbCAicnBhdGg9XCIgJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIiIKLSsJZXZhbCBycGF0aD1cIiAkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCi0gICAgICAgZmkKLSAgICAgICBjb21waWxlX3JwYXRoPSIkcnBhdGgiCi0gCi1AQCAtNzg1OSwxOCArODgzMCwxOCBAQCBFT0YKLSAJICAgICAgKiIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciIqKQotIAkJOzsKLSAJICAgICAgKikKLS0JCWhhcmRjb2RlX2xpYmRpcnM9IiRoYXJkY29kZV9saWJkaXJzJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgotKwkJZnVuY19hcHBlbmQgaGFyZGNvZGVfbGliZGlycyAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgotIAkJOzsKLSAJICAgICAgZXNhYwotIAkgICAgZmkKLSAJICBlbHNlCi0tCSAgICBldmFsICJmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIiIKLS0JICAgIHJwYXRoPSIkcnBhdGggJGZsYWciCi0rCSAgICBldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCi0rCSAgICBmdW5jX2FwcGVuZCBycGF0aCAiICRmbGFnIgotIAkgIGZpCi0gCWVsaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgotIAkgIGNhc2UgIiRmaW5hbGl6ZV9wZXJtX3JwYXRoICIgaW4KLSAJICAqIiAkbGliZGlyICIqKSA7OwotLQkgICopIGZpbmFsaXplX3Blcm1fcnBhdGg9IiRmaW5hbGl6ZV9wZXJtX3JwYXRoICRsaWJkaXIiIDs7Ci0rCSAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfcGVybV9ycGF0aCAiICRsaWJkaXIiIDs7Ci0gCSAgZXNhYwotIAlmaQotICAgICAgIGRvbmUKLUBAIC03ODc4LDcgKzg4NDksNyBAQCBFT0YKLSAgICAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciIgJiYKLSAJIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJzIjsgdGhlbgotIAlsaWJkaXI9IiRoYXJkY29kZV9saWJkaXJzIgotLQlldmFsICJycGF0aD1cIiAkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiIgotKwlldmFsIHJwYXRoPVwiICRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKLSAgICAgICBmaQotICAgICAgIGZpbmFsaXplX3JwYXRoPSIkcnBhdGgiCi0gCi1AQCAtNzkyMSw2ICs4ODkyLDEyIEBAIEVPRgotIAlleGl0X3N0YXR1cz0wCi0gCWZ1bmNfc2hvd19ldmFsICIkbGlua19jb21tYW5kIiAnZXhpdF9zdGF0dXM9JD8nCi0gCi0rCWlmIHRlc3QgLW4gIiRwb3N0bGlua19jbWRzIjsgdGhlbgotKwkgIGZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0IgotKwkgIHBvc3RsaW5rX2NtZHM9YGZ1bmNfZWNob19hbGwgIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgLWUgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0IiclZycgLWUgJ3MlQFRPT0xfT1VUUFVUQCUnIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiJyVnJ2AKLSsJICBmdW5jX2V4ZWN1dGVfY21kcyAiJHBvc3RsaW5rX2NtZHMiICdleGl0ICQ/JwotKwlmaQotKwotIAkjIERlbGV0ZSB0aGUgZ2VuZXJhdGVkIGZpbGVzLgotIAlpZiB0ZXN0IC1mICIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9Uy4ke29iamV4dH0iOyB0aGVuCi0gCSAgZnVuY19zaG93X2V2YWwgJyRSTSAiJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfVMuJHtvYmpleHR9IicKLUBAIC03OTQzLDcgKzg5MjAsNyBAQCBFT0YKLSAJICAjIFdlIHNob3VsZCBzZXQgdGhlIHJ1bnBhdGhfdmFyLgotIAkgIHJwYXRoPQotIAkgIGZvciBkaXIgaW4gJHBlcm1fcnBhdGg7IGRvCi0tCSAgICBycGF0aD0iJHJwYXRoJGRpcjoiCi0rCSAgICBmdW5jX2FwcGVuZCBycGF0aCAiJGRpcjoiCi0gCSAgZG9uZQotIAkgIGNvbXBpbGVfdmFyPSIkcnVucGF0aF92YXI9XCIkcnBhdGhcJCRydW5wYXRoX3ZhclwiICIKLSAJZmkKLUBAIC03OTUxLDcgKzg5MjgsNyBAQCBFT0YKLSAJICAjIFdlIHNob3VsZCBzZXQgdGhlIHJ1bnBhdGhfdmFyLgotIAkgIHJwYXRoPQotIAkgIGZvciBkaXIgaW4gJGZpbmFsaXplX3Blcm1fcnBhdGg7IGRvCi0tCSAgICBycGF0aD0iJHJwYXRoJGRpcjoiCi0rCSAgICBmdW5jX2FwcGVuZCBycGF0aCAiJGRpcjoiCi0gCSAgZG9uZQotIAkgIGZpbmFsaXplX3Zhcj0iJHJ1bnBhdGhfdmFyPVwiJHJwYXRoXCQkcnVucGF0aF92YXJcIiAiCi0gCWZpCi1AQCAtNzk2Niw2ICs4OTQzLDEzIEBAIEVPRgotIAkkb3B0X2RyeV9ydW4gfHwgJFJNICRvdXRwdXQKLSAJIyBMaW5rIHRoZSBleGVjdXRhYmxlIGFuZCBleGl0Ci0gCWZ1bmNfc2hvd19ldmFsICIkbGlua19jb21tYW5kIiAnZXhpdCAkPycKLSsKLSsJaWYgdGVzdCAtbiAiJHBvc3RsaW5rX2NtZHMiOyB0aGVuCi0rCSAgZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXQiCi0rCSAgcG9zdGxpbmtfY21kcz1gZnVuY19lY2hvX2FsbCAiJHBvc3RsaW5rX2NtZHMiIHwgJFNFRCAtZSAncyVAT1VUUFVUQCUnIiRvdXRwdXQiJyVnJyAtZSAncyVAVE9PTF9PVVRQVVRAJSciJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCInJWcnYAotKwkgIGZ1bmNfZXhlY3V0ZV9jbWRzICIkcG9zdGxpbmtfY21kcyIgJ2V4aXQgJD8nCi0rCWZpCi0rCi0gCWV4aXQgJEVYSVRfU1VDQ0VTUwotICAgICAgIGZpCi0gCi1AQCAtNzk5OSw2ICs4OTgzLDEyIEBAIEVPRgotIAotICAgICAgIGZ1bmNfc2hvd19ldmFsICIkbGlua19jb21tYW5kIiAnZXhpdCAkPycKLSAKLSsgICAgICBpZiB0ZXN0IC1uICIkcG9zdGxpbmtfY21kcyI7IHRoZW4KLSsJZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lIgotKwlwb3N0bGlua19jbWRzPWBmdW5jX2VjaG9fYWxsICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEIC1lICdzJUBPVVRQVVRAJSciJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUiJyVnJyAtZSAncyVAVE9PTF9PVVRQVVRAJSciJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCInJWcnYAotKwlmdW5jX2V4ZWN1dGVfY21kcyAiJHBvc3RsaW5rX2NtZHMiICdleGl0ICQ/JwotKyAgICAgIGZpCi0rCi0gICAgICAgIyBOb3cgY3JlYXRlIHRoZSB3cmFwcGVyIHNjcmlwdC4KLSAgICAgICBmdW5jX3ZlcmJvc2UgImNyZWF0aW5nICRvdXRwdXQiCi0gCi1AQCAtODA5Niw3ICs5MDg2LDcgQEAgRU9GCi0gCWVsc2UKLSAJICBvbGRvYmpzPSIkb2xkX2RlcGxpYnMgJG5vbl9waWNfb2JqZWN0cyIKLSAJICBpZiB0ZXN0ICIkcHJlbG9hZCIgPSB5ZXMgJiYgdGVzdCAtZiAiJHN5bWZpbGVvYmoiOyB0aGVuCi0tCSAgICBvbGRvYmpzPSIkb2xkb2JqcyAkc3ltZmlsZW9iaiIKLSsJICAgIGZ1bmNfYXBwZW5kIG9sZG9ianMgIiAkc3ltZmlsZW9iaiIKLSAJICBmaQotIAlmaQotIAlhZGRsaWJzPSIkb2xkX2NvbnZlbmllbmNlIgotQEAgLTgxMDQsMTAgKzkwOTQsMTAgQEAgRU9GCi0gCi0gICAgICAgaWYgdGVzdCAtbiAiJGFkZGxpYnMiOyB0aGVuCi0gCWdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgiCi0tCWdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgotKwlmdW5jX2FwcGVuZCBnZW5lcmF0ZWQgIiAkZ2VudG9wIgotIAotIAlmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgJGdlbnRvcCAkYWRkbGlicwotLQlvbGRvYmpzPSIkb2xkb2JqcyAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKLSsJZnVuY19hcHBlbmQgb2xkb2JqcyAiICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgotICAgICAgIGZpCi0gCi0gICAgICAgIyBEbyBlYWNoIGNvbW1hbmQgaW4gdGhlIGFyY2hpdmUgY29tbWFuZHMuCi1AQCAtODExOCwxMCArOTEwOCwxMCBAQCBFT0YKLSAJIyBBZGQgYW55IG9iamVjdHMgZnJvbSBwcmVsb2FkZWQgY29udmVuaWVuY2UgbGlicmFyaWVzCi0gCWlmIHRlc3QgLW4gIiRkbHByZWZpbGVzIjsgdGhlbgotIAkgIGdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgiCi0tCSAgZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCi0rCSAgZnVuY19hcHBlbmQgZ2VuZXJhdGVkICIgJGdlbnRvcCIKLSAKLSAJICBmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgJGdlbnRvcCAkZGxwcmVmaWxlcwotLQkgIG9sZG9ianM9IiRvbGRvYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgotKwkgIGZ1bmNfYXBwZW5kIG9sZG9ianMgIiAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKLSAJZmkKLSAKLSAJIyBQT1NJWCBkZW1hbmRzIG5vIHBhdGhzIHRvIGJlIGVuY29kZWQgaW4gYXJjaGl2ZXMuICBXZSBoYXZlCi1AQCAtODEzOSw3ICs5MTI5LDcgQEAgRU9GCi0gCWVsc2UKLSAJICBlY2hvICJjb3B5aW5nIHNlbGVjdGVkIG9iamVjdCBmaWxlcyB0byBhdm9pZCBiYXNlbmFtZSBjb25mbGljdHMuLi4iCi0gCSAgZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9eCIKLS0JICBnZW5lcmF0ZWQ9IiRnZW5lcmF0ZWQgJGdlbnRvcCIKLSsJICBmdW5jX2FwcGVuZCBnZW5lcmF0ZWQgIiAkZ2VudG9wIgotIAkgIGZ1bmNfbWtkaXJfcCAiJGdlbnRvcCIKLSAJICBzYXZlX29sZG9ianM9JG9sZG9ianMKLSAJICBvbGRvYmpzPQotQEAgLTgxNjMsMTggKzkxNTMsMjggQEAgRU9GCi0gCQllc2FjCi0gCSAgICAgIGRvbmUKLSAJICAgICAgZnVuY19zaG93X2V2YWwgImxuICRvYmogJGdlbnRvcC8kbmV3b2JqIHx8IGNwICRvYmogJGdlbnRvcC8kbmV3b2JqIgotLQkgICAgICBvbGRvYmpzPSIkb2xkb2JqcyAkZ2VudG9wLyRuZXdvYmoiCi0rCSAgICAgIGZ1bmNfYXBwZW5kIG9sZG9ianMgIiAkZ2VudG9wLyRuZXdvYmoiCi0gCSAgICAgIDs7Ci0tCSAgICAqKSBvbGRvYmpzPSIkb2xkb2JqcyAkb2JqIiA7OwotKwkgICAgKikgZnVuY19hcHBlbmQgb2xkb2JqcyAiICRvYmoiIDs7Ci0gCSAgICBlc2FjCi0gCSAgZG9uZQotIAlmaQotLQlldmFsICJjbWRzPVwiJG9sZF9hcmNoaXZlX2NtZHNcIiIKLSsJZXZhbCBjbWRzPVwiJG9sZF9hcmNoaXZlX2NtZHNcIgotIAotIAlmdW5jX2xlbiAiICRjbWRzIgotIAlsZW49JGZ1bmNfbGVuX3Jlc3VsdAotIAlpZiB0ZXN0ICIkbGVuIiAtbHQgIiRtYXhfY21kX2xlbiIgfHwgdGVzdCAiJG1heF9jbWRfbGVuIiAtbGUgLTE7IHRoZW4KLSAJICBjbWRzPSRvbGRfYXJjaGl2ZV9jbWRzCi0rCWVsaWYgdGVzdCAtbiAiJGFyY2hpdmVyX2xpc3Rfc3BlYyI7IHRoZW4KLSsJICBmdW5jX3ZlcmJvc2UgInVzaW5nIGNvbW1hbmQgZmlsZSBhcmNoaXZlIGxpbmtpbmcuLi4iCi0rCSAgZm9yIG9iaiBpbiAkb2xkb2JqcwotKwkgIGRvCi0rCSAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG9iaiIKLSsJICAgICRFQ0hPICIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IgotKwkgIGRvbmUgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5saWJjbWQKLSsJICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUubGliY21kIgotKwkgIG9sZG9ianM9IiAkYXJjaGl2ZXJfbGlzdF9zcGVjJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIKLSsJICBjbWRzPSRvbGRfYXJjaGl2ZV9jbWRzCi0gCWVsc2UKLSAJICAjIHRoZSBjb21tYW5kIGxpbmUgaXMgdG9vIGxvbmcgdG8gbGluayBpbiBvbmUgc3RlcCwgbGluayBpbiBwYXJ0cwotIAkgIGZ1bmNfdmVyYm9zZSAidXNpbmcgcGllY2V3aXNlIGFyY2hpdmUgbGlua2luZy4uLiIKLUBAIC04MTg5LDcgKzkxODksNyBAQCBFT0YKLSAJICBkbwotIAkgICAgbGFzdF9vbGRvYmo9JG9iagotIAkgIGRvbmUKLS0JICBldmFsICJ0ZXN0X2NtZHM9XCIkb2xkX2FyY2hpdmVfY21kc1wiIgotKwkgIGV2YWwgdGVzdF9jbWRzPVwiJG9sZF9hcmNoaXZlX2NtZHNcIgotIAkgIGZ1bmNfbGVuICIgJHRlc3RfY21kcyIKLSAJICBsZW4wPSRmdW5jX2xlbl9yZXN1bHQKLSAJICBsZW49JGxlbjAKLUBAIC04MjA4LDcgKzkyMDgsNyBAQCBFT0YKLSAJCVJBTkxJQj0kc2F2ZV9SQU5MSUIKLSAJICAgICAgZmkKLSAJICAgICAgdGVzdCAteiAiJGNvbmNhdF9jbWRzIiB8fCBjb25jYXRfY21kcz0kY29uY2F0X2NtZHN+Ci0tCSAgICAgIGV2YWwgImNvbmNhdF9jbWRzPVwiXCR7Y29uY2F0X2NtZHN9JG9sZF9hcmNoaXZlX2NtZHNcIiIKLSsJICAgICAgZXZhbCBjb25jYXRfY21kcz1cIlwke2NvbmNhdF9jbWRzfSRvbGRfYXJjaGl2ZV9jbWRzXCIKLSAJICAgICAgb2JqbGlzdD0KLSAJICAgICAgbGVuPSRsZW4wCi0gCSAgICBmaQotQEAgLTgyMTYsOSArOTIxNiw5IEBAIEVPRgotIAkgIFJBTkxJQj0kc2F2ZV9SQU5MSUIKLSAJICBvbGRvYmpzPSRvYmpsaXN0Ci0gCSAgaWYgdGVzdCAiWCRvbGRvYmpzIiA9ICJYIiA7IHRoZW4KLS0JICAgIGV2YWwgImNtZHM9XCJcJGNvbmNhdF9jbWRzXCIiCi0rCSAgICBldmFsIGNtZHM9XCJcJGNvbmNhdF9jbWRzXCIKLSAJICBlbHNlCi0tCSAgICBldmFsICJjbWRzPVwiXCRjb25jYXRfY21kc35cJG9sZF9hcmNoaXZlX2NtZHNcIiIKLSsJICAgIGV2YWwgY21kcz1cIlwkY29uY2F0X2NtZHN+XCRvbGRfYXJjaGl2ZV9jbWRzXCIKLSAJICBmaQotIAlmaQotICAgICAgIGZpCi1AQCAtODI2OCwxMiArOTI2OCwyMyBAQCBFT0YKLSAJICAgICAgKi5sYSkKLSAJCWZ1bmNfYmFzZW5hbWUgIiRkZXBsaWIiCi0gCQluYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0tCQlsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGRlcGxpYmAKLSsJCWZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZGVwbGliIgotKwkJZXZhbCBsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdGAKLSAJCXRlc3QgLXogIiRsaWJkaXIiICYmIFwKLSAJCSAgZnVuY19mYXRhbF9lcnJvciAiXGAkZGVwbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCi0tCQluZXdkZXBlbmRlbmN5X2xpYnM9IiRuZXdkZXBlbmRlbmN5X2xpYnMgJGxpYmRpci8kbmFtZSIKLSsJCWZ1bmNfYXBwZW5kIG5ld2RlcGVuZGVuY3lfbGlicyAiICR7bHRfc3lzcm9vdDorPX0kbGliZGlyLyRuYW1lIgotKwkJOzsKLSsJICAgICAgLUwqKQotKwkJZnVuY19zdHJpcG5hbWUgLUwgJycgIiRkZXBsaWIiCi0rCQlmdW5jX3JlcGxhY2Vfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKLSsJCWZ1bmNfYXBwZW5kIG5ld2RlcGVuZGVuY3lfbGlicyAiIC1MJGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdCIKLSAJCTs7Ci0tCSAgICAgICopIG5ld2RlcGVuZGVuY3lfbGlicz0iJG5ld2RlcGVuZGVuY3lfbGlicyAkZGVwbGliIiA7OwotKwkgICAgICAtUiopCi0rCQlmdW5jX3N0cmlwbmFtZSAtUiAnJyAiJGRlcGxpYiIKLSsJCWZ1bmNfcmVwbGFjZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgotKwkJZnVuY19hcHBlbmQgbmV3ZGVwZW5kZW5jeV9saWJzICIgLVIkZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0IgotKwkJOzsKLSsJICAgICAgKikgZnVuY19hcHBlbmQgbmV3ZGVwZW5kZW5jeV9saWJzICIgJGRlcGxpYiIgOzsKLSAJICAgICAgZXNhYwotIAkgICAgZG9uZQotIAkgICAgZGVwZW5kZW5jeV9saWJzPSIkbmV3ZGVwZW5kZW5jeV9saWJzIgotQEAgLTgyODQsMTIgKzkyOTUsMTQgQEAgRU9GCi0gCSAgICAgICoubGEpCi0gCSAgICAgICAgZnVuY19iYXNlbmFtZSAiJGxpYiIKLSAJCW5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLS0JCWxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkbGliYAotKwkJZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRsaWIiCi0rCQlldmFsIGxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0YAotKwotIAkJdGVzdCAteiAiJGxpYmRpciIgJiYgXAotIAkJICBmdW5jX2ZhdGFsX2Vycm9yICJcYCRsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKLS0JCW5ld2RsZmlsZXM9IiRuZXdkbGZpbGVzICRsaWJkaXIvJG5hbWUiCi0rCQlmdW5jX2FwcGVuZCBuZXdkbGZpbGVzICIgJHtsdF9zeXNyb290Ois9fSRsaWJkaXIvJG5hbWUiCi0gCQk7OwotLQkgICAgICAqKSBuZXdkbGZpbGVzPSIkbmV3ZGxmaWxlcyAkbGliIiA7OwotKwkgICAgICAqKSBmdW5jX2FwcGVuZCBuZXdkbGZpbGVzICIgJGxpYiIgOzsKLSAJICAgICAgZXNhYwotIAkgICAgZG9uZQotIAkgICAgZGxmaWxlcz0iJG5ld2RsZmlsZXMiCi1AQCAtODMwMywxMCArOTMxNiwxMSBAQCBFT0YKLSAJCSMgdGhlIGxpYnJhcnk6Ci0gCQlmdW5jX2Jhc2VuYW1lICIkbGliIgotIAkJbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotLQkJbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRsaWJgCi0rCQlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGxpYiIKLSsJCWV2YWwgbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHRgCi0gCQl0ZXN0IC16ICIkbGliZGlyIiAmJiBcCi0gCQkgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgotLQkJbmV3ZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMgJGxpYmRpci8kbmFtZSIKLSsJCWZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAke2x0X3N5c3Jvb3Q6Kz19JGxpYmRpci8kbmFtZSIKLSAJCTs7Ci0gCSAgICAgIGVzYWMKLSAJICAgIGRvbmUKLUBAIC04MzE4LDcgKzkzMzIsNyBAQCBFT0YKLSAJCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgYWJzPSIkbGliIiA7OwotIAkJKikgYWJzPWBwd2RgIi8kbGliIiA7OwotIAkgICAgICBlc2FjCi0tCSAgICAgIG5ld2RsZmlsZXM9IiRuZXdkbGZpbGVzICRhYnMiCi0rCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RsZmlsZXMgIiAkYWJzIgotIAkgICAgZG9uZQotIAkgICAgZGxmaWxlcz0iJG5ld2RsZmlsZXMiCi0gCSAgICBuZXdkbHByZWZpbGVzPQotQEAgLTgzMjcsNyArOTM0MSw3IEBAIEVPRgotIAkJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSBhYnM9IiRsaWIiIDs7Ci0gCQkqKSBhYnM9YHB3ZGAiLyRsaWIiIDs7Ci0gCSAgICAgIGVzYWMKLS0JICAgICAgbmV3ZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMgJGFicyIKLSsJICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRhYnMiCi0gCSAgICBkb25lCi0gCSAgICBkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyIKLSAJICBmaQotQEAgLTg0MTIsNyArOTQyNiw3IEBAIHJlbGlua19jb21tYW5kPVwiJHJlbGlua19jb21tYW5kXCIiCi0gICAgIGV4aXQgJEVYSVRfU1VDQ0VTUwotIH0KLSAKLS17IHRlc3QgIiRtb2RlIiA9IGxpbmsgfHwgdGVzdCAiJG1vZGUiID0gcmVsaW5rOyB9ICYmCi0reyB0ZXN0ICIkb3B0X21vZGUiID0gbGluayB8fCB0ZXN0ICIkb3B0X21vZGUiID0gcmVsaW5rOyB9ICYmCi0gICAgIGZ1bmNfbW9kZV9saW5rICR7MSsiJEAifQotIAotIAotQEAgLTg0MzIsOSArOTQ0Niw5IEBAIGZ1bmNfbW9kZV91bmluc3RhbGwgKCkKLSAgICAgZm9yIGFyZwotICAgICBkbwotICAgICAgIGNhc2UgJGFyZyBpbgotLSAgICAgIC1mKSBSTT0iJFJNICRhcmciOyBybWZvcmNlPXllcyA7OwotLSAgICAgIC0qKSBSTT0iJFJNICRhcmciIDs7Ci0tICAgICAgKikgZmlsZXM9IiRmaWxlcyAkYXJnIiA7OwotKyAgICAgIC1mKSBmdW5jX2FwcGVuZCBSTSAiICRhcmciOyBybWZvcmNlPXllcyA7OwotKyAgICAgIC0qKSBmdW5jX2FwcGVuZCBSTSAiICRhcmciIDs7Ci0rICAgICAgKikgZnVuY19hcHBlbmQgZmlsZXMgIiAkYXJnIiA7OwotICAgICAgIGVzYWMKLSAgICAgZG9uZQotIAotQEAgLTg0NDMsMjQgKzk0NTcsMjMgQEAgZnVuY19tb2RlX3VuaW5zdGFsbCAoKQotIAotICAgICBybWRpcnM9Ci0gCi0tICAgIG9yaWdvYmpkaXI9IiRvYmpkaXIiCi0gICAgIGZvciBmaWxlIGluICRmaWxlczsgZG8KLSAgICAgICBmdW5jX2Rpcm5hbWUgIiRmaWxlIiAiIiAiLiIKLSAgICAgICBkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgotICAgICAgIGlmIHRlc3QgIlgkZGlyIiA9IFguOyB0aGVuCi0tCW9iamRpcj0iJG9yaWdvYmpkaXIiCi0rCW9kaXI9IiRvYmpkaXIiCi0gICAgICAgZWxzZQotLQlvYmpkaXI9IiRkaXIvJG9yaWdvYmpkaXIiCi0rCW9kaXI9IiRkaXIvJG9iamRpciIKLSAgICAgICBmaQotICAgICAgIGZ1bmNfYmFzZW5hbWUgIiRmaWxlIgotICAgICAgIG5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLS0gICAgICB0ZXN0ICIkbW9kZSIgPSB1bmluc3RhbGwgJiYgb2JqZGlyPSIkZGlyIgotKyAgICAgIHRlc3QgIiRvcHRfbW9kZSIgPSB1bmluc3RhbGwgJiYgb2Rpcj0iJGRpciIKLSAKLS0gICAgICAjIFJlbWVtYmVyIG9iamRpciBmb3IgcmVtb3ZhbCBsYXRlciwgYmVpbmcgY2FyZWZ1bCB0byBhdm9pZCBkdXBsaWNhdGVzCi0tICAgICAgaWYgdGVzdCAiJG1vZGUiID0gY2xlYW47IHRoZW4KLSsgICAgICAjIFJlbWVtYmVyIG9kaXIgZm9yIHJlbW92YWwgbGF0ZXIsIGJlaW5nIGNhcmVmdWwgdG8gYXZvaWQgZHVwbGljYXRlcwotKyAgICAgIGlmIHRlc3QgIiRvcHRfbW9kZSIgPSBjbGVhbjsgdGhlbgotIAljYXNlICIgJHJtZGlycyAiIGluCi0tCSAgKiIgJG9iamRpciAiKikgOzsKLS0JICAqKSBybWRpcnM9IiRybWRpcnMgJG9iamRpciIgOzsKLSsJICAqIiAkb2RpciAiKikgOzsKLSsJICAqKSBmdW5jX2FwcGVuZCBybWRpcnMgIiAkb2RpciIgOzsKLSAJZXNhYwotICAgICAgIGZpCi0gCi1AQCAtODQ4NiwxOCArOTQ5OSwxNyBAQCBmdW5jX21vZGVfdW5pbnN0YWxsICgpCi0gCi0gCSAgIyBEZWxldGUgdGhlIGxpYnRvb2wgbGlicmFyaWVzIGFuZCBzeW1saW5rcy4KLSAJICBmb3IgbiBpbiAkbGlicmFyeV9uYW1lczsgZG8KLS0JICAgIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvJG4iCi0rCSAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvJG4iCi0gCSAgZG9uZQotLQkgIHRlc3QgLW4gIiRvbGRfbGlicmFyeSIgJiYgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci8kb2xkX2xpYnJhcnkiCi0rCSAgdGVzdCAtbiAiJG9sZF9saWJyYXJ5IiAmJiBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvJG9sZF9saWJyYXJ5IgotIAotLQkgIGNhc2UgIiRtb2RlIiBpbgotKwkgIGNhc2UgIiRvcHRfbW9kZSIgaW4KLSAJICBjbGVhbikKLS0JICAgIGNhc2UgIiAgJGxpYnJhcnlfbmFtZXMgIiBpbgotLQkgICAgIyAiICAiIGluIHRoZSBiZWdpbm5pbmcgY2F0Y2hlcyBlbXB0eSAkZGxuYW1lCi0rCSAgICBjYXNlICIgJGxpYnJhcnlfbmFtZXMgIiBpbgotIAkgICAgKiIgJGRsbmFtZSAiKikgOzsKLS0JICAgICopIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvJGRsbmFtZSIgOzsKLSsJICAgICopIHRlc3QgLW4gIiRkbG5hbWUiICYmIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci8kZGxuYW1lIiA7OwotIAkgICAgZXNhYwotLQkgICAgdGVzdCAtbiAiJGxpYmRpciIgJiYgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci8kbmFtZSAkb2JqZGlyLyR7bmFtZX1pIgotKwkgICAgdGVzdCAtbiAiJGxpYmRpciIgJiYgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRuYW1lICRvZGlyLyR7bmFtZX1pIgotIAkgICAgOzsKLSAJICB1bmluc3RhbGwpCi0gCSAgICBpZiB0ZXN0IC1uICIkbGlicmFyeV9uYW1lcyI7IHRoZW4KLUBAIC04NTI1LDE5ICs5NTM3LDE5IEBAIGZ1bmNfbW9kZV91bmluc3RhbGwgKCkKLSAJICAjIEFkZCBQSUMgb2JqZWN0IHRvIHRoZSBsaXN0IG9mIGZpbGVzIHRvIHJlbW92ZS4KLSAJICBpZiB0ZXN0IC1uICIkcGljX29iamVjdCIgJiYKLSAJICAgICB0ZXN0ICIkcGljX29iamVjdCIgIT0gbm9uZTsgdGhlbgotLQkgICAgcm1maWxlcz0iJHJtZmlsZXMgJGRpci8kcGljX29iamVjdCIKLSsJICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkZGlyLyRwaWNfb2JqZWN0IgotIAkgIGZpCi0gCi0gCSAgIyBBZGQgbm9uLVBJQyBvYmplY3QgdG8gdGhlIGxpc3Qgb2YgZmlsZXMgdG8gcmVtb3ZlLgotIAkgIGlmIHRlc3QgLW4gIiRub25fcGljX29iamVjdCIgJiYKLSAJICAgICB0ZXN0ICIkbm9uX3BpY19vYmplY3QiICE9IG5vbmU7IHRoZW4KLS0JICAgIHJtZmlsZXM9IiRybWZpbGVzICRkaXIvJG5vbl9waWNfb2JqZWN0IgotKwkgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRkaXIvJG5vbl9waWNfb2JqZWN0IgotIAkgIGZpCi0gCWZpCi0gCTs7Ci0gCi0gICAgICAgKikKLS0JaWYgdGVzdCAiJG1vZGUiID0gY2xlYW4gOyB0aGVuCi0rCWlmIHRlc3QgIiRvcHRfbW9kZSIgPSBjbGVhbiA7IHRoZW4KLSAJICBub2V4ZW5hbWU9JG5hbWUKLSAJICBjYXNlICRmaWxlIGluCi0gCSAgKi5leGUpCi1AQCAtODU0Nyw3ICs5NTU5LDcgQEAgZnVuY19tb2RlX3VuaW5zdGFsbCAoKQotIAkgICAgbm9leGVuYW1lPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLSAJICAgICMgJGZpbGUgd2l0aCAuZXhlIGhhcyBhbHJlYWR5IGJlZW4gYWRkZWQgdG8gcm1maWxlcywKLSAJICAgICMgYWRkICRmaWxlIHdpdGhvdXQgLmV4ZQotLQkgICAgcm1maWxlcz0iJHJtZmlsZXMgJGZpbGUiCi0rCSAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJGZpbGUiCi0gCSAgICA7OwotIAkgIGVzYWMKLSAJICAjIERvIGEgdGVzdCB0byBzZWUgaWYgdGhpcyBpcyBhIGxpYnRvb2wgcHJvZ3JhbS4KLUBAIC04NTU2LDcgKzk1NjgsNyBAQCBmdW5jX21vZGVfdW5pbnN0YWxsICgpCi0gCSAgICAgIGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWUgIiRmaWxlIgotIAkgICAgICByZWxpbmtfY29tbWFuZD0KLSAJICAgICAgZnVuY19zb3VyY2UgJGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0Ci0tCSAgICAgIHJtZmlsZXM9IiRybWZpbGVzICRmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdCIKLSsJICAgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdCIKLSAJICAgIGVsc2UKLSAJICAgICAgcmVsaW5rX2NvbW1hbmQ9Ci0gCSAgICAgIGZ1bmNfc291cmNlICRkaXIvJG5vZXhlbmFtZQotQEAgLTg1NjQsMTIgKzk1NzYsMTIgQEAgZnVuY19tb2RlX3VuaW5zdGFsbCAoKQotIAotIAkgICAgIyBub3RlICRuYW1lIHN0aWxsIGNvbnRhaW5zIC5leGUgaWYgaXQgd2FzIGluICRmaWxlIG9yaWdpbmFsbHkKLSAJICAgICMgYXMgZG9lcyB0aGUgdmVyc2lvbiBvZiAkZmlsZSB0aGF0IHdhcyBhZGRlZCBpbnRvICRybWZpbGVzCi0tCSAgICBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyLyRuYW1lICRvYmpkaXIvJHtuYW1lfVMuJHtvYmpleHR9IgotKwkgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRuYW1lICRvZGlyLyR7bmFtZX1TLiR7b2JqZXh0fSIKLSAJICAgIGlmIHRlc3QgIiRmYXN0X2luc3RhbGwiID0geWVzICYmIHRlc3QgLW4gIiRyZWxpbmtfY29tbWFuZCI7IHRoZW4KLS0JICAgICAgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci9sdC0kbmFtZSIKLSsJICAgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyL2x0LSRuYW1lIgotIAkgICAgZmkKLSAJICAgIGlmIHRlc3QgIlgkbm9leGVuYW1lIiAhPSAiWCRuYW1lIiA7IHRoZW4KLS0JICAgICAgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci9sdC0ke25vZXhlbmFtZX0uYyIKLSsJICAgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyL2x0LSR7bm9leGVuYW1lfS5jIgotIAkgICAgZmkKLSAJICBmaQotIAlmaQotQEAgLTg1NzcsNyArOTU4OSw2IEBAIGZ1bmNfbW9kZV91bmluc3RhbGwgKCkKLSAgICAgICBlc2FjCi0gICAgICAgZnVuY19zaG93X2V2YWwgIiRSTSAkcm1maWxlcyIgJ2V4aXRfc3RhdHVzPTEnCi0gICAgIGRvbmUKLS0gICAgb2JqZGlyPSIkb3JpZ29iamRpciIKLSAKLSAgICAgIyBUcnkgdG8gcmVtb3ZlIHRoZSAke29iamRpcn1zIGluIHRoZSBkaXJlY3RvcmllcyB3aGVyZSB3ZSBkZWxldGVkIGZpbGVzCi0gICAgIGZvciBkaXIgaW4gJHJtZGlyczsgZG8KLUBAIC04NTg5LDE2ICs5NjAwLDE2IEBAIGZ1bmNfbW9kZV91bmluc3RhbGwgKCkKLSAgICAgZXhpdCAkZXhpdF9zdGF0dXMKLSB9Ci0gCi0teyB0ZXN0ICIkbW9kZSIgPSB1bmluc3RhbGwgfHwgdGVzdCAiJG1vZGUiID0gY2xlYW47IH0gJiYKLSt7IHRlc3QgIiRvcHRfbW9kZSIgPSB1bmluc3RhbGwgfHwgdGVzdCAiJG9wdF9tb2RlIiA9IGNsZWFuOyB9ICYmCi0gICAgIGZ1bmNfbW9kZV91bmluc3RhbGwgJHsxKyIkQCJ9Ci0gCi0tdGVzdCAteiAiJG1vZGUiICYmIHsKLSt0ZXN0IC16ICIkb3B0X21vZGUiICYmIHsKLSAgIGhlbHA9IiRnZW5lcmljX2hlbHAiCi0gICBmdW5jX2ZhdGFsX2hlbHAgInlvdSBtdXN0IHNwZWNpZnkgYSBNT0RFIgotIH0KLSAKLSB0ZXN0IC16ICIkZXhlY19jbWQiICYmIFwKLS0gIGZ1bmNfZmF0YWxfaGVscCAiaW52YWxpZCBvcGVyYXRpb24gbW9kZSBcYCRtb2RlJyIKLSsgIGZ1bmNfZmF0YWxfaGVscCAiaW52YWxpZCBvcGVyYXRpb24gbW9kZSBcYCRvcHRfbW9kZSciCi0gCi0gaWYgdGVzdCAtbiAiJGV4ZWNfY21kIjsgdGhlbgotICAgZXZhbCBleGVjICIkZXhlY19jbWQiCi1kaWZmIC0tZ2l0IGEvbHRvcHRpb25zLm00IGIvbHRvcHRpb25zLm00Ci1pbmRleCA1ZWYxMmNlZDJhLi4xN2NmZDUxYzBiIDEwMDY0NAotLS0tIGEvbHRvcHRpb25zLm00Ci0rKysgYi9sdG9wdGlvbnMubTQKLUBAIC04LDcgKzgsNyBAQAotICMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwgd2l0aCBvciB3aXRob3V0Ci0gIyBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KLSAKLS0jIHNlcmlhbCA2IGx0b3B0aW9ucy5tNAotKyMgc2VyaWFsIDcgbHRvcHRpb25zLm00Ci0gCi0gIyBUaGlzIGlzIHRvIGhlbHAgYWNsb2NhbCBmaW5kIHRoZXNlIG1hY3JvcywgYXMgaXQgY2FuJ3Qgc2VlIG00X2RlZmluZS4KLSBBQ19ERUZVTihbTFRPUFRJT05TX1ZFUlNJT05dLCBbbTRfaWYoWzFdKV0pCi1kaWZmIC0tZ2l0IGEvbHR2ZXJzaW9uLm00IGIvbHR2ZXJzaW9uLm00Ci1pbmRleCBiZjg3Zjc3MTMyLi45YzdiNWQ0MTE4IDEwMDY0NAotLS0tIGEvbHR2ZXJzaW9uLm00Ci0rKysgYi9sdHZlcnNpb24ubTQKLUBAIC03LDE3ICs3LDE3IEBACi0gIyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LCB3aXRoIG9yIHdpdGhvdXQKLSAjIG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgotIAotLSMgR2VuZXJhdGVkIGZyb20gbHR2ZXJzaW9uLmluLgotKyMgQGNvbmZpZ3VyZV9pbnB1dEAKLSAKLS0jIHNlcmlhbCAzMTM0IGx0dmVyc2lvbi5tNAotKyMgc2VyaWFsIDMyOTMgbHR2ZXJzaW9uLm00Ci0gIyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbAotIAotLW00X2RlZmluZShbTFRfUEFDS0FHRV9WRVJTSU9OXSwgWzIuMi43YV0pCi0tbTRfZGVmaW5lKFtMVF9QQUNLQUdFX1JFVklTSU9OXSwgWzEuMzEzNF0pCi0rbTRfZGVmaW5lKFtMVF9QQUNLQUdFX1ZFUlNJT05dLCBbMi40XSkKLSttNF9kZWZpbmUoW0xUX1BBQ0tBR0VfUkVWSVNJT05dLCBbMS4zMjkzXSkKLSAKLSBBQ19ERUZVTihbTFRWRVJTSU9OX1ZFUlNJT05dLAotLVttYWNyb192ZXJzaW9uPScyLjIuN2EnCi0tbWFjcm9fcmV2aXNpb249JzEuMzEzNCcKLStbbWFjcm9fdmVyc2lvbj0nMi40JwotK21hY3JvX3JldmlzaW9uPScxLjMyOTMnCi0gX0xUX0RFQ0woLCBtYWNyb192ZXJzaW9uLCAwLCBbV2hpY2ggcmVsZWFzZSBvZiBsaWJ0b29sLm00IHdhcyB1c2VkP10pCi0gX0xUX0RFQ0woLCBtYWNyb19yZXZpc2lvbiwgMCkKLSBdKQotZGlmZiAtLWdpdCBhL2x0fm9ic29sZXRlLm00IGIvbHR+b2Jzb2xldGUubTQKLWluZGV4IGJmOTJiNWUwNzkuLmM1NzNkYTkwYzUgMTAwNjQ0Ci0tLS0gYS9sdH5vYnNvbGV0ZS5tNAotKysrIGIvbHR+b2Jzb2xldGUubTQKLUBAIC03LDcgKzcsNyBAQAotICMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwgd2l0aCBvciB3aXRob3V0Ci0gIyBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KLSAKLS0jIHNlcmlhbCA0IGx0fm9ic29sZXRlLm00Ci0rIyBzZXJpYWwgNSBsdH5vYnNvbGV0ZS5tNAotIAotICMgVGhlc2UgZXhpc3QgZW50aXJlbHkgdG8gZm9vbCBhY2xvY2FsIHdoZW4gYm9vdHN0cmFwcGluZyBsaWJ0b29sLgotICMKLWRpZmYgLS1naXQgYS9vcGNvZGVzL2NvbmZpZ3VyZSBiL29wY29kZXMvY29uZmlndXJlCi1pbmRleCAwYjM1MmE0NTRkLi43ZWFlYTdkYjczIDEwMDc1NQotLS0tIGEvb3Bjb2Rlcy9jb25maWd1cmUKLSsrKyBiL29wY29kZXMvY29uZmlndXJlCi1AQCAtNjUwLDYgKzY1MCw5IEBAIE9UT09MCi0gTElQTwotIE5NRURJVAotIERTWU1VVElMCi0rTUFOSUZFU1RfVE9PTAotK2FjX2N0X0FSCi0rRExMVE9PTAotIE9CSkRVTVAKLSBMTl9TCi0gTk0KLUBAIC03NjMsNiArNzY2LDcgQEAgZW5hYmxlX3N0YXRpYwotIHdpdGhfcGljCi0gZW5hYmxlX2Zhc3RfaW5zdGFsbAotIHdpdGhfZ251X2xkCi0rd2l0aF9saWJ0b29sX3N5c3Jvb3QKLSBlbmFibGVfbGlidG9vbF9sb2NrCi0gZW5hYmxlX3RhcmdldHMKLSBlbmFibGVfd2Vycm9yCi1AQCAtMTQyMyw2ICsxNDI3LDggQEAgT3B0aW9uYWwgUGFja2FnZXM6Ci0gICAtLXdpdGgtcGljICAgICAgICAgICAgICB0cnkgdG8gdXNlIG9ubHkgUElDL25vbi1QSUMgb2JqZWN0cyBbZGVmYXVsdD11c2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdGhdCi0gICAtLXdpdGgtZ251LWxkICAgICAgICAgICBhc3N1bWUgdGhlIEMgY29tcGlsZXIgdXNlcyBHTlUgbGQgW2RlZmF1bHQ9bm9dCi0rICAtLXdpdGgtbGlidG9vbC1zeXNyb290PURJUiBTZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMgd2l0aGluIERJUgotKyAgICAgICAgICAgICAgICAgICAgICAgIChvciB0aGUgY29tcGlsZXIncyBzeXNyb290IGlmIG5vdCBzcGVjaWZpZWQpLgotIAotIFNvbWUgaW5mbHVlbnRpYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzOgotICAgQ0MgICAgICAgICAgQyBjb21waWxlciBjb21tYW5kCi1AQCAtNTExNSw4ICs1MTIxLDggQEAgZXNhYwotIAotIAotIAotLW1hY3JvX3ZlcnNpb249JzIuMi43YScKLS1tYWNyb19yZXZpc2lvbj0nMS4zMTM0JwotK21hY3JvX3ZlcnNpb249JzIuNCcKLSttYWNyb19yZXZpc2lvbj0nMS4zMjkzJwotIAotIAotIAotQEAgLTUxNTYsNyArNTE2Miw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncyIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MuLi4gIiA+JjY7IH0KLSAjIFRlc3QgcHJpbnQgZmlyc3QsIGJlY2F1c2UgaXQgd2lsbCBiZSBhIGJ1aWx0aW4gaWYgcHJlc2VudC4KLS1pZiB0ZXN0ICJYYHByaW50IC1yIC0tIC1uIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAotK2lmIHRlc3QgIlhgKCBwcmludCAtciAtLSAtbiApIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAotICAgIHRlc3QgIlhgcHJpbnQgLXIgLS0gJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCi0gICBFQ0hPPSdwcmludCAtciAtLScKLSBlbGlmIHRlc3QgIlhgcHJpbnRmICVzICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgotQEAgLTU4NDIsOCArNTg0OCw4IEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIHNoZWxsIHVuZGVyc3RhbmRzIHNvbWUgWFNJIGNvbnN0cnVjdHMuLi4gIiA+JjY7Ci0gIyBUcnkgc29tZSBYU0kgZmVhdHVyZXMKLSB4c2lfc2hlbGw9bm8KLSAoIF9sdF9kdW1teT0iYS9iL2MiCi0tICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwiJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAotLSAgICAgID0gYyxhL2IsLCBcCi0rICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwke19sdF9kdW1teSM/P30iJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAotKyAgICAgID0gYyxhL2IsYi9jLCBcCi0gICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKLSAgICAgJiYgdGVzdCAiJHsjX2x0X2R1bW15fSIgLWVxIDUnICkgPi9kZXYvbnVsbCAyPiYxIFwKLSAgICYmIHhzaV9zaGVsbD15ZXMKLUBAIC01ODkyLDYgKzU4OTgsODAgQEAgZXNhYwotIAotIAotIAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBjYXNlICRob3N0IGluCi0rICAqLSotbWluZ3cqICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICAgICotKi1jeWd3aW4qICkKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4Ci0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b193MzIKLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLSsgICotKi1jeWd3aW4qICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luCi0rICAgICAgICA7OwotKyAgICAgICotKi1jeWd3aW4qICkKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotKyAgICAgICAgOzsKLSsgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4Ci0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4KLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLSsgICogKSAjIHVuaGFuZGxlZCBob3N0cyAoYW5kICJub3JtYWwiIG5hdGl2ZSBidWlsZHMpCi0rICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotKyAgICA7OwotK2VzYWMKLSsKLStmaQotKwotK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY2OyB9Ci0rCi0rCi0rCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0Li4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl90b190b29sX2ZpbGVfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgI2Fzc3VtZSBvcmRpbmFyeSBjcm9zcyB0b29scywgb3IgbmF0aXZlIGJ1aWxkLgotK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotK2Nhc2UgJGhvc3QgaW4KLSsgICotKi1taW5ndyogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLStlc2FjCi0rCi0rZmkKLSsKLSt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNjsgfQotKwotKwotKwotKwotKwotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcyIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcy4uLiAiID4mNjsgfQotIGlmIHRlc3QgIiR7bHRfY3ZfbGRfcmVsb2FkX2ZsYWcrc2V0fSIgPSBzZXQ7IHRoZW4gOgotQEAgLTU5MDgsNiArNTk4OCwxMSBAQCBjYXNlICRyZWxvYWRfZmxhZyBpbgotIGVzYWMKLSByZWxvYWRfY21kcz0nJExEJHJlbG9hZF9mbGFnIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCi0gY2FzZSAkaG9zdF9vcyBpbgotKyAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotKyAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KLSsgICAgICByZWxvYWRfY21kcz1mYWxzZQotKyAgICBmaQotKyAgICA7OwotICAgZGFyd2luKikKLSAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAgICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAke3dsfS1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCi1AQCAtNjA3Niw3ICs2MTYxLDggQEAgbWluZ3cqIHwgcHczMiopCi0gICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIF54ODYgYXJjaGl2ZSBpbXBvcnR8Xng4NiBETEwnCi0gICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJwotICAgZWxzZQotLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCBwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpPycKLSsgICAgIyBLZWVwIHRoaXMgcGF0dGVybiBpbiBzeW5jIHdpdGggdGhlIG9uZSBpbiBmdW5jX3dpbjMyX2xpYmlkLgotKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCAocGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT98cGUtYXJtLXdpbmNlfHBlLXg4Ni02NCknCi0gICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckT0JKRFVNUCAtZicKLSAgIGZpCi0gICA7OwotQEAgLTYyMzAsNiArNjMxNiwyMSBAQCBlc2FjCi0gZmkKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjUKLSAkYXNfZWNobyAiJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjY7IH0KLSsKLStmaWxlX21hZ2ljX2dsb2I9Ci0rd2FudF9ub2Nhc2VnbG9iPW5vCi0raWYgdGVzdCAiJGJ1aWxkIiA9ICIkaG9zdCI7IHRoZW4KLSsgIGNhc2UgJGhvc3Rfb3MgaW4KLSsgIG1pbmd3KiB8IHB3MzIqKQotKyAgICBpZiAoIHNob3B0IHwgZ3JlcCBub2Nhc2VnbG9iICkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0rICAgICAgd2FudF9ub2Nhc2VnbG9iPXllcwotKyAgICBlbHNlCi0rICAgICAgZmlsZV9tYWdpY19nbG9iPWBlY2hvIGFBYkJjQ2REZUVmRmdHaEhpSWpKa0tsTG1Nbk5vT3BQcVFyUnNTdFR1VXZWd1d4WHlZelogfCAkU0VEIC1lICJzL1woLi5cKS9zXC9bXDFdXC9bXDFdXC9nOy9nImAKLSsgICAgZmkKLSsgICAgOzsKLSsgIGVzYWMKLStmaQotKwotIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAotIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAotIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgotQEAgLTYyNDUsOSArNjM0NiwxNjIgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCi0gCi0gCi0gCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0gaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLS1zZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1hcjsgYWNfd29yZD0kMgotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2w7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX0RMTFRPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfRExMVE9PTD0iJERMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19ETExUT09MPSIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK0RMTFRPT0w9JGFjX2N2X3Byb2dfRExMVE9PTAotK2lmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRETExUT09MIiA+JjUKLSskYXNfZWNobyAiJERMTFRPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKwotK2ZpCi0raWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfRExMVE9PTCI7IHRoZW4KLSsgIGFjX2N0X0RMTFRPT0w9JERMTFRPT0wKLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15IGRsbHRvb2w7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iJGFjX2N0X0RMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSJkbGx0b29sIgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLSthY19jdF9ETExUT09MPSRhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wKLStpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfRExMVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRhY19jdF9ETExUT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsgIGlmIHRlc3QgIngkYWNfY3RfRExMVE9PTCIgPSB4OyB0aGVuCi0rICAgIERMTFRPT0w9ImZhbHNlIgotKyAgZWxzZQotKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCi0reWVzOikKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQotK2FjX3Rvb2xfd2FybmVkPXllcyA7OwotK2VzYWMKLSsgICAgRExMVE9PTD0kYWNfY3RfRExMVE9PTAotKyAgZmkKLStlbHNlCi0rICBETExUT09MPSIkYWNfY3ZfcHJvZ19ETExUT09MIgotK2ZpCi0rCi0rdGVzdCAteiAiJERMTFRPT0wiICYmIERMTFRPT0w9ZGxsdG9vbAotKwotKwotKwotKwotKwotKwotKwotKwotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcyIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcy4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0ndW5rbm93bicKLSsKLStjYXNlICRob3N0X29zIGluCi0rY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotKyAgIyB0d28gZGlmZmVyZW50IHNoZWxsIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGx0bWFpbi5zaAotKyAgIyBkZWNpZGUgd2hpY2ggdG8gdXNlIGJhc2VkIG9uIGNhcGFiaWxpdGllcyBvZiAkRExMVE9PTAotKyAgY2FzZSBgJERMTFRPT0wgLS1oZWxwIDI+JjFgIGluCi0rICAqLS1pZGVudGlmeS1zdHJpY3QqKQotKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIKLSsgICAgOzsKLSsgICopCi0rICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjawotKyAgICA7OwotKyAgZXNhYwotKyAgOzsKLSsqKQotKyAgIyBmYWxsYmFjazogYXNzdW1lIGxpbmtsaWIgSVMgc2hhcmVkbGliCi0rICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0iJEVDSE8iCi0rICA7OwotK2VzYWMKLSsKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNQotKyRhc19lY2hvICIkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNjsgfQotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAotK3Rlc3QgLXogIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgJiYgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JEVDSE8KLSsKLSsKLSsKLSsKLSsKLSsKLSsKLStpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0rICBmb3IgYWNfcHJvZyBpbiBhcgotKyAgZG8KLSsgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotIGlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19BUitzZXR9IiA9IHNldDsgdGhlbiA6Ci1AQCAtNjI2Myw3ICs2NTE3LDcgQEAgZG8KLSAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotLSAgICBhY19jdl9wcm9nX0FSPSIke2FjX3Rvb2xfcHJlZml4fWFyIgotKyAgICBhY19jdl9wcm9nX0FSPSIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIKLSAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0gICAgIGJyZWFrIDIKLSAgIGZpCi1AQCAtNjI4MywxMSArNjUzNywxNSBAQCAkYXNfZWNobyAibm8iID4mNjsgfQotIGZpCi0gCi0gCi0rICAgIHRlc3QgLW4gIiRBUiIgJiYgYnJlYWsKLSsgIGRvbmUKLSBmaQotLWlmIHRlc3QgLXogIiRhY19jdl9wcm9nX0FSIjsgdGhlbgotK2lmIHRlc3QgLXogIiRBUiI7IHRoZW4KLSAgIGFjX2N0X0FSPSRBUgotLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJhciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0tc2V0IGR1bW15IGFyOyBhY193b3JkPSQyCi0rICBmb3IgYWNfcHJvZyBpbiBhcgotK2RvCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0gaWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0FSK3NldH0iID0gc2V0OyB0aGVuIDoKLUBAIC02MzAzLDcgKzY1NjEsNyBAQCBkbwotICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0tICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9ImFyIgotKyAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSIkYWNfcHJvZyIKLSAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0gICAgIGJyZWFrIDIKLSAgIGZpCi1AQCAtNjMyMiw2ICs2NTgwLDEwIEBAIGVsc2UKLSAkYXNfZWNobyAibm8iID4mNjsgfQotIGZpCi0gCi0rCi0rICB0ZXN0IC1uICIkYWNfY3RfQVIiICYmIGJyZWFrCi0rZG9uZQotKwotICAgaWYgdGVzdCAieCRhY19jdF9BUiIgPSB4OyB0aGVuCi0gICAgIEFSPSJmYWxzZSIKLSAgIGVsc2UKLUBAIC02MzMzLDE2ICs2NTk1LDcyIEBAIGFjX3Rvb2xfd2FybmVkPXllcyA7OwotIGVzYWMKLSAgICAgQVI9JGFjX2N0X0FSCi0gICBmaQotLWVsc2UKLS0gIEFSPSIkYWNfY3ZfcHJvZ19BUiIKLSBmaQotIAotLXRlc3QgLXogIiRBUiIgJiYgQVI9YXIKLS10ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQotKzogJHtBUj1hcn0KLSs6ICR7QVJfRkxBR1M9Y3J1fQotKwotKwotKwotKwotKwotKwotKwotKwotKwotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0Li4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9hcl9hdF9maWxlK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3ZfYXJfYXRfZmlsZT1ubwotKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsvKiBlbmQgY29uZmRlZnMuaC4gICovCi0rCi0raW50Ci0rbWFpbiAoKQotK3sKLSAKLSsgIDsKLSsgIHJldHVybiAwOwotK30KLStfQUNFT0YKLStpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0rICBlY2hvIGNvbmZ0ZXN0LiRhY19vYmpleHQgPiBjb25mdGVzdC5sc3QKLSsgICAgICBsdF9hcl90cnk9JyRBUiAkQVJfRkxBR1MgbGliY29uZnRlc3QuYSBAY29uZnRlc3QubHN0ID4mNScKLSsgICAgICB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQotKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQotKyAgYWNfc3RhdHVzPSQ/Ci0rICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSsgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KLSsgICAgICBpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtZXEgMDsgdGhlbgotKwkjIEVuc3VyZSB0aGUgYXJjaGl2ZXIgZmFpbHMgdXBvbiBib2d1cyBmaWxlIG5hbWVzLgotKwlybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGxpYmNvbmZ0ZXN0LmEKLSsJeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKLSsgIChldmFsICRsdF9hcl90cnkpIDI+JjUKLSsgIGFjX3N0YXR1cz0kPwotKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0rICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9Ci0rCWlmIHRlc3QgIiRhY19zdGF0dXMiIC1uZSAwOyB0aGVuCi0rICAgICAgICAgIGx0X2N2X2FyX2F0X2ZpbGU9QAotKyAgICAgICAgZmkKLSsgICAgICBmaQotKyAgICAgIHJtIC1mIGNvbmZ0ZXN0LiogbGliY29uZnRlc3QuYQotIAotK2ZpCi0rcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0gCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2FyX2F0X2ZpbGUiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfYXJfYXRfZmlsZSIgPiY2OyB9Ci0gCi0raWYgdGVzdCAieCRsdF9jdl9hcl9hdF9maWxlIiA9IHhubzsgdGhlbgotKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPQotK2Vsc2UKLSsgIGFyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfY3ZfYXJfYXRfZmlsZQotK2ZpCi0gCi0gCi0gCi1AQCAtNjY4NCw4ICs3MDAyLDggQEAgZXNhYwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCi0gCi0gIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gc3ltYm9sIG5hbWUgYW5kIHN5bWJvbCBhZGRyZXNzCi0tbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLS1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLStsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotIAotICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgotIG9wdF9jcj0KLUBAIC02NzIxLDYgKzcwMzksNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCi0gICBlbHNlCi0gICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbCSBdXCgkc3ltY29kZSRzeW1jb2RlKlwpWwkgXVsJIF0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCi0gICBmaQotKyAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0iJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgfCBzZWQgJy8gX19nbnVfbHRvL2QnIgotIAotICAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgcGlwZSB3b3JrcyBjb3JyZWN0bHkuCi0gICBwaXBlX3dvcmtzPW5vCi1AQCAtNjc2Miw2ICs3MDgxLDE4IEBAIF9MVF9FT0YKLSAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgotIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KLSAJICBjYXQgPDxfTFRfRU9GID4gY29uZnRlc3QuJGFjX2V4dAotKy8qIEtlZXAgdGhpcyBjb2RlIGluIHN5bmMgYmV0d2VlbiBsaWJ0b29sLm00LCBsdG1haW4sIGx0X3N5c3RlbS5oLCBhbmQgdGVzdHMuICAqLwotKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCi0rLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZSBydW50aW1lCi0rICAgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uIG9uIHBzZXVkby1yZWxvY3MuICAqLwotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCi0rI2VsaWYgZGVmaW5lZChfX29zZl9fKQotKy8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEuICAqLwotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCi0rI2Vsc2UKLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVCBjb25zdAotKyNlbmRpZgotKwotICNpZmRlZiBfX2NwbHVzcGx1cwotIGV4dGVybiAiQyIgewotICNlbmRpZgotQEAgLTY3NzMsNyArNzEwNCw3IEBAIF9MVF9FT0YKLSAJICBjYXQgPDxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKLSAKLSAvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCi0tY29uc3Qgc3RydWN0IHsKLStMVF9ETFNZTV9DT05TVCBzdHJ1Y3QgewotICAgY29uc3QgY2hhciAqbmFtZTsKLSAgIHZvaWQgICAgICAgKmFkZHJlc3M7Ci0gfQotQEAgLTY3OTksOCArNzEzMCw4IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7Ci0gX0xUX0VPRgotIAkgICMgTm93IHRyeSBsaW5raW5nIHRoZSB0d28gZmlsZXMuCi0gCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0Ci0tCSAgbHRfc2F2ZV9MSUJTPSIkTElCUyIKLS0JICBsdF9zYXZlX0NGTEFHUz0iJENGTEFHUyIKLSsJICBsdF9nbG9ic3ltX3NhdmVfTElCUz0kTElCUwotKwkgIGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1M9JENGTEFHUwotIAkgIExJQlM9ImNvbmZ0c3RtLiRhY19vYmpleHQiCi0gCSAgQ0ZMQUdTPSIkQ0ZMQUdTJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIgotIAkgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19saW5rXCIiOyB9ID4mNQotQEAgLTY4MTAsOCArNzE0MSw4IEBAIF9MVF9FT0YKLSAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotIAkgICAgcGlwZV93b3Jrcz15ZXMKLSAJICBmaQotLQkgIExJQlM9IiRsdF9zYXZlX0xJQlMiCi0tCSAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCi0rCSAgTElCUz0kbHRfZ2xvYnN5bV9zYXZlX0xJQlMKLSsJICBDRkxBR1M9JGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1MKLSAJZWxzZQotIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mNQotIAlmaQotQEAgLTY4NDgsNiArNzE3OSwxNiBAQCBlbHNlCi0gJGFzX2VjaG8gIm9rIiA+JjY7IH0KLSBmaQotIAotKyMgUmVzcG9uc2UgZmlsZSBzdXBwb3J0LgotK2lmIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIk1TIGR1bXBiaW4iOyB0aGVuCi0rICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKLStlbGlmICROTSAtLWhlbHAgMj4vZGV2L251bGwgfCBncmVwICdbQF1GSUxFJyA+L2Rldi9udWxsOyB0aGVuCi0rICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKLStmaQotKwotKwotKwotKwotIAotIAotIAotQEAgLTY4NjksNiArNzIxMCw0NSBAQCBmaQotIAotIAotIAotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN5c3Jvb3QiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzeXNyb290Li4uICIgPiY2OyB9Ci0rCi0rIyBDaGVjayB3aGV0aGVyIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Qgd2FzIGdpdmVuLgotK2lmIHRlc3QgIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgd2l0aHZhbD0kd2l0aF9saWJ0b29sX3N5c3Jvb3Q7Ci0rZWxzZQotKyAgd2l0aF9saWJ0b29sX3N5c3Jvb3Q9bm8KLStmaQotKwotKwotK2x0X3N5c3Jvb3Q9Ci0rY2FzZSAke3dpdGhfbGlidG9vbF9zeXNyb290fSBpbiAjKAotKyB5ZXMpCi0rICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSsgICAgIGx0X3N5c3Jvb3Q9YCRDQyAtLXByaW50LXN5c3Jvb3QgMj4vZGV2L251bGxgCi0rICAgZmkKLSsgICA7OyAjKAotKyAvKikKLSsgICBsdF9zeXNyb290PWBlY2hvICIkd2l0aF9saWJ0b29sX3N5c3Jvb3QiIHwgc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLSsgICA7OyAjKAotKyBub3wnJykKLSsgICA7OyAjKAotKyAqKQotKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY1Ci0rJGFzX2VjaG8gIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjY7IH0KLSsgICBhc19mbl9lcnJvciAiVGhlIHN5c3Jvb3QgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLiIgIiRMSU5FTk8iIDUKLSsgICA7OwotK2VzYWMKLSsKLSsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7bHRfc3lzcm9vdDotbm99IiA+JjUKLSskYXNfZWNobyAiJHtsdF9zeXNyb290Oi1ub30iID4mNjsgfQotKwotKwotKwotKwotKwotICMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1saWJ0b29sLWxvY2sgd2FzIGdpdmVuLgotIGlmIHRlc3QgIiR7ZW5hYmxlX2xpYnRvb2xfbG9jaytzZXR9IiA9IHNldDsgdGhlbiA6Ci0gICBlbmFibGV2YWw9JGVuYWJsZV9saWJ0b29sX2xvY2s7Ci1AQCAtNzA3NSw2ICs3NDU1LDEyMyBAQCBlc2FjCi0gCi0gbmVlZF9sb2Nrcz0iJGVuYWJsZV9saWJ0b29sX2xvY2siCi0gCi0raWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fW10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1tdDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIkTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotKyAgICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiR7YWNfdG9vbF9wcmVmaXh9bXQiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTAotK2lmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRNQU5JRkVTVF9UT09MIiA+JjUKLSskYXNfZWNobyAiJE1BTklGRVNUX1RPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKwotK2ZpCi0raWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIGFjX2N0X01BTklGRVNUX1RPT0w9JE1BTklGRVNUX1RPT0wKLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAibXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSBtdDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotKyAgICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9Im10IgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLSthY19jdF9NQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wKLStpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsgIGlmIHRlc3QgIngkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPSB4OyB0aGVuCi0rICAgIE1BTklGRVNUX1RPT0w9IjoiCi0rICBlbHNlCi0rICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KLSt5ZXM6KQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9Ci0rYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0rZXNhYwotKyAgICBNQU5JRkVTVF9UT09MPSRhY19jdF9NQU5JRkVTVF9UT09MCi0rICBmaQotK2Vsc2UKLSsgIE1BTklGRVNUX1RPT0w9IiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiCi0rZmkKLSsKLSt0ZXN0IC16ICIkTUFOSUZFU1RfVE9PTCIgJiYgTUFOSUZFU1RfVE9PTD1tdAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD1ubwotKyAgZWNobyAiJGFzX21lOiRMSU5FTk86ICRNQU5JRkVTVF9UT09MICctPyciID4mNQotKyAgJE1BTklGRVNUX1RPT0wgJy0/JyAyPmNvbmZ0ZXN0LmVyciA+IGNvbmZ0ZXN0Lm91dAotKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKLSsgIGlmICRHUkVQICdNYW5pZmVzdCBUb29sJyBjb25mdGVzdC5vdXQgPiAvZGV2L251bGw7IHRoZW4KLSsgICAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPXllcwotKyAgZmkKLSsgIHJtIC1mIGNvbmZ0ZXN0KgotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjY7IH0KLStpZiB0ZXN0ICJ4JGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgIT0geHllczsgdGhlbgotKyAgTUFOSUZFU1RfVE9PTD06Ci0rZmkKLSsKLSsKLSsKLSsKLSsKLSAKLSAgIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICAgcmhhcHNvZHkqIHwgZGFyd2luKikKLUBAIC03NjM4LDYgKzgxMzUsOCBAQCBfTFRfRU9GCi0gICAgICAgJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyAyPiY1Ci0gICAgICAgZWNobyAiJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8iID4mNQotICAgICAgICRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIDI+JjUKLSsgICAgICBlY2hvICIkUkFOTElCIGxpYmNvbmZ0ZXN0LmEiID4mNQotKyAgICAgICRSQU5MSUIgbGliY29uZnRlc3QuYSAyPiY1Ci0gICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCi0gaW50IG1haW4oKSB7IHJldHVybiAwO30KLSBfTFRfRU9GCi1AQCAtNzgwMyw3ICs4MzAyLDggQEAgZmkKLSBMSUJUT09MX0RFUFM9IiRsdG1haW4iCi0gCi0gIyBBbHdheXMgdXNlIG91ciBvd24gbGlidG9vbC4KLS1MSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpcikvbGlidG9vbCcKLStMSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpciknCi0rTElCVE9PTD0iJExJQlRPT0wvJHtob3N0X2FsaWFzfS1saWJ0b29sIgotIAotIAotIAotQEAgLTc4OTIsNyArODM5Miw3IEBAIGFpeDMqKQotIGVzYWMKLSAKLSAjIEdsb2JhbCB2YXJpYWJsZXM6Ci0tb2ZpbGU9bGlidG9vbAotK29maWxlPSR7aG9zdF9hbGlhc30tbGlidG9vbAotIGNhbl9idWlsZF9zaGFyZWQ9eWVzCi0gCi0gIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgYC5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCi1AQCAtODE5MCw4ICs4NjkwLDYgQEAgZmkKLSBsdF9wcm9nX2NvbXBpbGVyX3BpYz0KLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0KLSAKLS17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKLS0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotIAotICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAgICAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKLUBAIC04MzU3LDYgKzg4NTUsMTIgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAJbHRfcHJvZ19jb21waWxlcl9waWM9Jy0tc2hhcmVkJwotIAlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLS1zdGF0aWMnCi0gCTs7Ci0rICAgICAgbmFnZm9yKikKLSsJIyBOQUcgRm9ydHJhbiBjb21waWxlcgotKwlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsLVdsLCwnCi0rCWx0X3Byb2dfY29tcGlsZXJfcGljPSctUElDJwotKwlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCi0rCTs7Ci0gICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQotICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBjb21waWxlcnMgKCpub3QqIHRoZSBQZW50aXVtIGdjYyBjb21waWxlciwKLSAJIyB3aGljaCBsb29rcyB0byBiZSBhIGRlYWQgcHJvamVjdCkKLUBAIC04NDE5LDcgKzg5MjMsNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotICAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctS1BJQycKLSAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCi0gICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLS0gICAgICBmNzcqIHwgZjkwKiB8IGY5NSopCi0rICAgICAgZjc3KiB8IGY5MCogfCBmOTUqIHwgc3VuZjc3KiB8IHN1bmY5MCogfCBzdW5mOTUqKQotIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctUW9wdGlvbiBsZCAnOzsKLSAgICAgICAqKQotIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJzs7Ci1AQCAtODQ3NiwxMyArODk4MCwxNyBAQCBjYXNlICRob3N0X29zIGluCi0gICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSIkbHRfcHJvZ19jb21waWxlcl9waWMgLURQSUMiCi0gICAgIDs7Ci0gZXNhYwotLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNQotLSRhc19lY2hvICIkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQotLQotLQotLQotLQotIAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYytzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3Byb2dfY29tcGlsZXJfcGljPSRsdF9wcm9nX2NvbXBpbGVyX3BpYwotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9Ci0rbHRfcHJvZ19jb21waWxlcl9waWM9JGx0X2N2X3Byb2dfY29tcGlsZXJfcGljCi0gCi0gIwotICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLUBAIC04NTQzLDYgKzkwNTEsMTEgQEAgZmkKLSAKLSAKLSAKLSsKLSsKLSsKLSsKLSsKLSAjCi0gIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgotICMKLUBAIC04ODkzLDcgKzk0MDYsOCBAQCBfTFRfRU9GCi0gICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSAgICAgICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9bm8KLSAgICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotLSAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsgICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLztzL14uKlsgXV9fbm1fX1woW14gXSpcKVsgXVteIF0qL1wxIERBVEEvOy9eSVsgXS9kOy9eW0FJVFddWyBdL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rICAgICAgZXhjbHVkZV9leHBzeW1zPSdbX10rR0xPQkFMX09GRlNFVF9UQUJMRV98W19dK0dMT0JBTF9fW0ZJRF1fLip8W19dK2hlYWRfW0EtWmEtejAtOV9dK19kbGx8W0EtWmEtejAtOV9dK19kbGxfaW5hbWUnCi0gCi0gICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgotICAgICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLUBAIC04OTkyLDEyICs5NTA2LDEyIEBAIF9MVF9FT0YKLSAJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKLSAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQotIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9Jy1ycGF0aCAkbGliZGlyJwotLQkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJwotKwkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKLSAJICBpZiB0ZXN0ICJ4JHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZyIgPSB4eWVzOyB0aGVuCi0gCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotIAkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzIHwgc2VkIC1lICJzL1woLipcKS9cMTsvIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0gCSAgICAgIGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotLQkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKLSsJICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJwotIAkgIGZpCi0gCSAgOzsKLSAJZXNhYwotQEAgLTkwMTEsOCArOTUyNSw4IEBAIF9MVF9FT0YKLSAJYXJjaGl2ZV9jbWRzPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJwotIAl3bGFyYz0KLSAgICAgICBlbHNlCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGZpCi0gICAgICAgOzsKLSAKLUBAIC05MDMwLDggKzk1NDQsOCBAQCBfTFRfRU9GCi0gCi0gX0xUX0VPRgotICAgICAgIGVsaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBlbHNlCi0gCWxkX3NobGlicz1ubwotICAgICAgIGZpCi1AQCAtOTA3Nyw4ICs5NTkxLDggQEAgX0xUX0VPRgotIAotICAgICAqKQotICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZWxzZQotIAlsZF9zaGxpYnM9bm8KLSAgICAgICBmaQotQEAgLTkyMDgsNyArOTcyMiwxMyBAQCBfTFRfRU9GCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPSctYmVyb2snCi0gICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KLSAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KLS0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsgICAgICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAotK2Vsc2UKLSsgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGhfK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAKLSBpbnQKLUBAIC05MjIxLDIyICs5NzQxLDI5IEBAIG1haW4gKCkKLSBfQUNFT0YKLSBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0gCi0tbHRfYWl4X2xpYnBhdGhfc2VkPScKLS0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotLQkvXjAvIHsKLS0JICAgIHMvXjAgICpcKC4qXCkkL1wxLwotLQkgICAgcAotLQl9Ci0tICAgIH0nCi0tYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLS0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLWZpCi0rICBsdF9haXhfbGlicGF0aF9zZWQ9JwotKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLSsJICAvXjAvIHsKLSsJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KLSsJICAgICAgcAotKwkgIH0KLSsgICAgICB9JwotKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgZmkKLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgotKyAgZmkKLSsKLStmaQotKwotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXwotK2ZpCi0gCi0gICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgotICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKLUBAIC05MjQ4LDcgKzk3NzUsMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCWVsc2UKLSAJICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgotIAkgIyBlbXB0eSBleGVjdXRhYmxlLgotLQkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKwkgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCi0rZWxzZQotKyAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aF8rc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotIAotIGludAotQEAgLTkyNjEsMjIgKzk3OTQsMjkgQEAgbWFpbiAoKQotIF9BQ0VPRgotIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSAKLS1sdF9haXhfbGlicGF0aF9zZWQ9JwotLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0tCS9eMC8gewotLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCi0tCSAgICBwCi0tCX0KLS0gICAgfScKLS1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tZmkKLSsgIGx0X2FpeF9saWJwYXRoX3NlZD0nCi0rICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotKwkgIC9eMC8gewotKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLwotKwkgICAgICBwCi0rCSAgfQotKyAgICAgIH0nCi0rICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICBmaQotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCi0rICBmaQotKwotK2ZpCi0rCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCi0rZmkKLSAKLSAJIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gCSAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKLUBAIC05MzIxLDIwICs5ODYxLDYzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotICAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCi0gICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcwotICAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0tICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLS0gICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0tICAgICAgbGliZXh0PWxpYgotLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotLSAgICAgIHNocmV4dF9jbWRzPSIuZGxsIgotLSAgICAgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLS0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JwotLSAgICAgICMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCi0tICAgICAgb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKLS0gICAgICAjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgotLSAgICAgIG9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKLS0gICAgICBmaXhfc3JjZmlsZV9wYXRoPSdgY3lncGF0aCAtdyAiJHNyY2ZpbGUiYCcKLS0gICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotKyAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0rICAgICAgY2wqKQotKwkjIE5hdGl2ZSBNU1ZDCi0rCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0rCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0rCWFsd2F5c19leHBvcnRfc3ltYm9scz15ZXMKLSsJZmlsZV9saXN0X3NwZWM9J0AnCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0rCWxpYmV4dD1saWIKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0rCXNocmV4dF9jbWRzPSIuZGxsIgotKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0rCWFyY2hpdmVfY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCi0rCSAgICBzZWQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOwotKwkgIGVsc2UKLSsJICAgIHNlZCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgZml+Ci0rCSAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgotKwkgIGxpbmtuYW1lcz0nCi0rCSMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KLSsJIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICk9J3RydWUnCi0rCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rCWV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxLERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsJIyBEb24ndCB1c2UgcmFubGliCi0rCW9sZF9wb3N0aW5zdGFsbF9jbWRzPSdjaG1vZCA2NDQgJG9sZGxpYicKLSsJcG9zdGxpbmtfY21kcz0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgotKwkgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+Ci0rCSAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgotKwkgICAgKi5leGV8Ki5FWEUpIDs7Ci0rCSAgICAqKQotKwkgICAgICBsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCi0rCSAgICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCi0rCSAgICAgIDs7Ci0rCSAgZXNhY34KLSsJICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgotKwkgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKLSsJICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOwotKwkgIGZpJwotKwk7OwotKyAgICAgICopCi0rCSMgQXNzdW1lIE1TVkMgd3JhcHBlcgotKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotKwlsaWJleHQ9bGliCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotKwlzaHJleHRfY21kcz0iLmRsbCIKLSsJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JwotKwkjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgotKwlvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJwotKwkjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgotKwlvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCi0rCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rCTs7Ci0rICAgICAgZXNhYwotICAgICAgIDs7Ci0gCi0gICAgIGRhcndpbiogfCByaGFwc29keSopCi1AQCAtOTM5NSw3ICs5OTc4LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KLSAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQotLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJwotICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCi1AQCAtOTQwMyw3ICs5OTg2LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgIGhwdXg5KikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0gICAgICAgZWxzZQotIAlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRMRCAtYiArYiAkaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotICAgICAgIGZpCi1AQCAtOTQxOSw3ICsxMDAwMiw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAotICAgICBocHV4MTAqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gICAgICAgZWxzZQotIAlhcmNoaXZlX2NtZHM9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCi0gICAgICAgZmkKLUBAIC05NDQzLDEwICsxMDAyNiwxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCWlhNjQqKQotLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJKikKLS0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAllc2FjCi0gICAgICAgZWxzZQotQEAgLTk1MjUsMjMgKzEwMTA4LDM2IEBAIGZpCi0gCi0gICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCSMgVHJ5IHRvIHVzZSB0aGUgLWV4cG9ydGVkX3N5bWJvbCBsZCBvcHRpb24sIGlmIGl0IGRvZXMgbm90Ci0gCSMgd29yaywgYXNzdW1lIHRoYXQgLWV4cG9ydHNfZmlsZSBkb2VzIG5vdCB3b3JrIGVpdGhlciBhbmQKLSAJIyBpbXBsaWNpdGx5IGV4cG9ydCBhbGwgc3ltYm9scy4KLS0gICAgICAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCi0tICAgICAgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCi0tICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCi0rCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgotKwkgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCi0rCSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0taW50IGZvbyh2b2lkKSB7fQotK2ludCBmb28gKHZvaWQpIHsgcmV0dXJuIDA7IH0KLSBfQUNFT0YKLSBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0tICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0tCi0rICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD15ZXMKLStlbHNlCi0rICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD1ubwotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0tICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgotKyAgICAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNjsgfQotKwlpZiB0ZXN0ICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID0geWVzOyB0aGVuCi0rICAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWZpCi0gICAgICAgZWxzZQotIAlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLUBAIC05NjI2LDcgKzEwMjIyLDcgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIG9zZjQqIHwgb3NmNSopCSMgYXMgb3NmMyogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZwotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwotICAgICAgIGVsc2UKLSAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCi1AQCAtOTY0NSw5ICsxMDI0MSw5IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICAgIG5vX3VuZGVmaW5lZF9mbGFnPScgLXogZGVmcycKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotIAl3bGFyYz0nJHt3bH0nCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+Ci0tCSAgJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKLSsJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKLSAgICAgICBlbHNlCi0gCWNhc2UgYCRDQyAtViAyPiYxYCBpbgotIAkqIkNvbXBpbGVycyA1LjAiKikKLUBAIC0xMDIyMyw4ICsxMDgxOSw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgIG5lZWRfdmVyc2lvbj1ubwotICAgbmVlZF9saWJfcHJlZml4PW5vCi0gCi0tICBjYXNlICRHQ0MsJGhvc3Rfb3MgaW4KLS0gIHllcyxjeWd3aW4qIHwgeWVzLG1pbmd3KiB8IHllcyxwdzMyKiB8IHllcyxjZWdjYyopCi0rICBjYXNlICRHQ0MsJGNjX2Jhc2VuYW1lIGluCi0rICB5ZXMsKikKLSsgICAgIyBnY2MKLSAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKLSAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwotICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLUBAIC0xMDI1NywxMyArMTA4NTQsNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSAgICAgICA7OwotICAgICBlc2FjCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0rICAgIDs7Ci0rCi0rICAqLGNsKikKLSsgICAgIyBOYXRpdmUgTVNWQwotKyAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJwotKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0rICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJwotKwotKyAgICBjYXNlICRidWlsZF9vcyBpbgotKyAgICBtaW5ndyopCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQotKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKLSsgICAgICBJRlM9JzsnCi0rICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgotKyAgICAgIGRvCi0rICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCi0rICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgotKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCi0rICAgICAgZG9uZQotKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKLSsgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFthLXpBLVpdXFwpOnwgL1xcMXxnJyAtZSAnc3xeIHx8J2AKLSsgICAgICA7OwotKyAgICBjeWd3aW4qKQotKyAgICAgICMgQ29udmVydCB0byB1bml4IGZvcm0sIHRoZW4gdG8gZG9zIGZvcm0sIHRoZW4gYmFjayB0byB1bml4IGZvcm0KLSsgICAgICAjIGJ1dCB0aGlzIHRpbWUgZG9zIHN0eWxlIChubyBzcGFjZXMhKSBzbyB0aGF0IHRoZSB1bml4IGZvcm0gbG9va3MKLSsgICAgICAjIGxpa2UgL2N5Z2RyaXZlL2MvUFJPR1JBfjE6L2N5Z2RyLi4uCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRMSUIiYAotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS1kb3MgIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIDI+L2Rldi9udWxsYAotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0rICAgICAgOzsKLSsgICAgKikKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCi0rICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsOyB0aGVuCi0rICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRILgotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKLSsgICAgICBlbHNlCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0rICAgICAgZmkKLSsgICAgICAjIEZJWE1FOiBmaW5kIHRoZSBzaG9ydCBuYW1lIG9yIHRoZSBwYXRoIGNvbXBvbmVudHMsIGFzIHNwYWNlcyBhcmUKLSsgICAgICAjIGNvbW1vbi4gKGUuZy4gIlByb2dyYW0gRmlsZXMiIC0+ICJQUk9HUkF+MSIpCi0rICAgICAgOzsKLSsgICAgZXNhYwotKwotKyAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCi0rICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+Ci0rICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgotKyAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgotKyAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZScKLSsgICAgcG9zdHVuaW5zdGFsbF9jbWRzPSdkbGRsbD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGZpbGU7IGVjaG8gXCRkbG5hbWUnXCcnYH4KLSsgICAgICBkbHBhdGg9JGRpci9cJGRsZGxsfgotKyAgICAgICAkUk0gXCRkbHBhdGgnCi0rICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxpbmsuZXhlJwotICAgICA7OwotIAotICAgKikKLSsgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCi0gICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotICAgICA7OwotICAgZXNhYwotLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgotICAgc2hsaWJwYXRoX3Zhcj1QQVRICi0gICA7OwotQEAgLTEwMzU1LDcgKzExMDEwLDcgQEAgaGFpa3UqKQotICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKLSAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICi0gICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0tICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3QvYmVvcy9zeXN0ZW0vbGliJwotKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L3N5c3RlbS9saWInCi0gICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCi0gICA7OwotIAotQEAgLTExMTk1LDEwICsxMTg1MCwxMCBAQCBlbHNlCi0gLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAotICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KLSAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKLS12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLSAjZW5kaWYKLSAKLS12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KLStpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KLSBpbnQgbWFpbiAoKQotIHsKLSAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwotQEAgLTExMzAxLDEwICsxMTk1NiwxMCBAQCBlbHNlCi0gLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAotICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KLSAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKLS12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLSAjZW5kaWYKLSAKLS12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KLStpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KLSBpbnQgbWFpbiAoKQotIHsKLSAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwotQEAgLTEyNTQzLDcgKzEzMTk4LDcgQEAgaWYgdGVzdCAiJGVuYWJsZV9zaGFyZWQiID0gInllcyI7IHRoZW4KLSAjIHNpbmNlIGxpYmJmZCBtYXkgbm90IHB1bGwgaW4gdGhlIGVudGlyZXR5IG9mIGxpYmliZXJ0eS4KLSAgIHg9YHNlZCAtbiAtZSAncy9eWyAJXSpQSUNGTEFHWyAJXSo9WyAJXSovL3AnIDwgLi4vbGliaWJlcnR5L01ha2VmaWxlIHwgc2VkIC1uICckcCdgCi0gICBpZiB0ZXN0IC1uICIkeCI7IHRoZW4KLS0gICAgU0hBUkVEX0xJQkFERD0iLUxgcHdkYC8uLi9saWJpYmVydHkvcGljIC1saWJlcnR5IgotKyAgICBTSEFSRURfTElCQUREPSJgcHdkYC8uLi9saWJpYmVydHkvcGljL2xpYmliZXJ0eS5hIgotICAgZmkKLSAKLSAgIGNhc2UgIiR7aG9zdH0iIGluCi1AQCAtMTM1MTgsMTMgKzE0MTczLDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF91bnNldD0nYCRFQ0hPICIkbHRfdW5zZXQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X1NQMk5MPSdgJEVDSE8gIiRsdF9TUDJOTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfTkwyU1A9J2AkRUNITyAiJGx0X05MMlNQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9jdl90b19ob3N0X2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9jdl90b190b29sX2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSByZWxvYWRfZmxhZz0nYCRFQ0hPICIkcmVsb2FkX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHJlbG9hZF9jbWRzPSdgJEVDSE8gIiRyZWxvYWRfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gT0JKRFVNUD0nYCRFQ0hPICIkT0JKRFVNUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZGVwbGlic19jaGVja19tZXRob2Q9J2AkRUNITyAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBmaWxlX21hZ2ljX2NtZD0nYCRFQ0hPICIkZmlsZV9tYWdpY19jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2ZpbGVfbWFnaWNfZ2xvYj0nYCRFQ0hPICIkZmlsZV9tYWdpY19nbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSt3YW50X25vY2FzZWdsb2I9J2AkRUNITyAiJHdhbnRfbm9jYXNlZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rRExMVE9PTD0nYCRFQ0hPICIkRExMVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J2AkRUNITyAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBBUj0nYCRFQ0hPICIkQVIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIEFSX0ZMQUdTPSdgJEVDSE8gIiRBUl9GTEFHUyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rYXJjaGl2ZXJfbGlzdF9zcGVjPSdgJEVDSE8gIiRhcmNoaXZlcl9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIFNUUklQPSdgJEVDSE8gIiRTVFJJUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gUkFOTElCPSdgJEVDSE8gIiRSQU5MSUIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRvbGRfcG9zdGluc3RhbGxfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTM1MzksMTQgKzE0MjAxLDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIHwgJFNFRCAiJGRlCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK25tX2ZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRubV9maWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfc3lzcm9vdD0nYCRFQ0hPICIkbHRfc3lzcm9vdCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gb2JqZGlyPSdgJEVDSE8gIiRvYmpkaXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIE1BR0lDX0NNRD0nYCRFQ0hPICIkTUFHSUNfQ01EIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotLWx0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfcGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbz0nYCRFQ0hPICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX28iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG5lZWRfbG9ja3M9J2AkRUNITyAiJG5lZWRfbG9ja3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK01BTklGRVNUX1RPT0w9J2AkRUNITyAiJE1BTklGRVNUX1RPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIERTWU1VVElMPSdgJEVDSE8gIiREU1lNVVRJTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTk1FRElUPSdgJEVDSE8gIiROTUVESVQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIExJUE89J2AkRUNITyAiJExJUE8iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTEzNTc5LDEyICsxNDI0NCwxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcQotIGhhcmRjb2RlX2F1dG9tYXRpYz0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBpbmhlcml0X3JwYXRoPSdgJEVDSE8gIiRpbmhlcml0X3JwYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsaW5rX2FsbF9kZXBsaWJzPSdgJEVDSE8gIiRsaW5rX2FsbF9kZXBsaWJzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLS1maXhfc3JjZmlsZV9wYXRoPSdgJEVDSE8gIiRmaXhfc3JjZmlsZV9wYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBhbHdheXNfZXhwb3J0X3N5bWJvbHM9J2AkRUNITyAiJGFsd2F5c19leHBvcnRfc3ltYm9scyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZXhwb3J0X3N5bWJvbHNfY21kcz0nYCRFQ0hPICIkZXhwb3J0X3N5bWJvbHNfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZXhjbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRleGNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGluY2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBwcmVsaW5rX2NtZHM9J2AkRUNITyAiJHByZWxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rcG9zdGxpbmtfY21kcz0nYCRFQ0hPICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0nYCRFQ0hPICIkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG5lZWRfbGliX3ByZWZpeD0nYCRFQ0hPICIkbmVlZF9saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xMzYzOSw4ICsxNDMwNCwxMyBAQCByZWxvYWRfZmxhZyBcCi0gT0JKRFVNUCBcCi0gZGVwbGlic19jaGVja19tZXRob2QgXAotIGZpbGVfbWFnaWNfY21kIFwKLStmaWxlX21hZ2ljX2dsb2IgXAotK3dhbnRfbm9jYXNlZ2xvYiBcCi0rRExMVE9PTCBcCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQgXAotIEFSIFwKLSBBUl9GTEFHUyBcCi0rYXJjaGl2ZXJfbGlzdF9zcGVjIFwKLSBTVFJJUCBcCi0gUkFOTElCIFwKLSBDQyBcCi1AQCAtMTM2NTAsMTIgKzE0MzIwLDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIFwKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyBcCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCBcCi0rbm1fZmlsZV9saXN0X3NwZWMgXAotIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIFwKLS1sdF9wcm9nX2NvbXBpbGVyX3dsIFwKLSBsdF9wcm9nX2NvbXBpbGVyX3BpYyBcCi0rbHRfcHJvZ19jb21waWxlcl93bCBcCi0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWMgXAotIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIFwKLSBuZWVkX2xvY2tzIFwKLStNQU5JRkVTVF9UT09MIFwKLSBEU1lNVVRJTCBcCi0gTk1FRElUIFwKLSBMSVBPIFwKLUBAIC0xMzY3MSw3ICsxNDM0Myw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKLSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIFwKLSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIFwKLSBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIFwKLS1maXhfc3JjZmlsZV9wYXRoIFwKLSBleGNsdWRlX2V4cHN5bXMgXAotIGluY2x1ZGVfZXhwc3ltcyBcCi0gZmlsZV9saXN0X3NwZWMgXAotQEAgLTEzNzA3LDYgKzE0Mzc4LDcgQEAgbW9kdWxlX2NtZHMgXAotIG1vZHVsZV9leHBzeW1fY21kcyBcCi0gZXhwb3J0X3N5bWJvbHNfY21kcyBcCi0gcHJlbGlua19jbWRzIFwKLStwb3N0bGlua19jbWRzIFwKLSBwb3N0aW5zdGFsbF9jbWRzIFwKLSBwb3N0dW5pbnN0YWxsX2NtZHMgXAotIGZpbmlzaF9jbWRzIFwKLUBAIC0xNDQ2Myw3ICsxNTEzNSw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKLSAjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KLSAjCi0gIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKLS0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotKyMgICAgICAgICAgICAgICAgIEluYy4KLSAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgotICMKLSAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCi1AQCAtMTQ1NjYsMTkgKzE1MjM5LDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAotICMgdHVybiBuZXdsaW5lcyBpbnRvIHNwYWNlcy4KLSBOTDJTUD0kbHRfbHRfTkwyU1AKLSAKLSsjIGNvbnZlcnQgXCRidWlsZCBmaWxlIG5hbWVzIHRvIFwkaG9zdCBmb3JtYXQuCi0rdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAotKwotKyMgY29udmVydCBcJGJ1aWxkIGZpbGVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuCi0rdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAotKwotICMgQW4gb2JqZWN0IHN5bWJvbCBkdW1wZXIuCi0gT0JKRFVNUD0kbHRfT0JKRFVNUAotIAotICMgTWV0aG9kIHRvIGNoZWNrIHdoZXRoZXIgZGVwZW5kZW50IGxpYnJhcmllcyBhcmUgc2hhcmVkIG9iamVjdHMuCi0gZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2RlcGxpYnNfY2hlY2tfbWV0aG9kCi0gCi0tIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID09ICJmaWxlX21hZ2ljIi4KLSsjIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCi0gZmlsZV9tYWdpY19jbWQ9JGx0X2ZpbGVfbWFnaWNfY21kCi0gCi0rIyBIb3cgdG8gZmluZCBwb3RlbnRpYWwgZmlsZXMgd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KLStmaWxlX21hZ2ljX2dsb2I9JGx0X2ZpbGVfbWFnaWNfZ2xvYgotKwotKyMgRmluZCBwb3RlbnRpYWwgZmlsZXMgdXNpbmcgbm9jYXNlZ2xvYiB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgotK3dhbnRfbm9jYXNlZ2xvYj0kbHRfd2FudF9ub2Nhc2VnbG9iCi0rCi0rIyBETEwgY3JlYXRpb24gcHJvZ3JhbS4KLStETExUT09MPSRsdF9ETExUT09MCi0rCi0rIyBDb21tYW5kIHRvIGFzc29jaWF0ZSBzaGFyZWQgYW5kIGxpbmsgbGlicmFyaWVzLgotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAotKwotICMgVGhlIGFyY2hpdmVyLgotIEFSPSRsdF9BUgotKwotKyMgRmxhZ3MgdG8gY3JlYXRlIGFuIGFyY2hpdmUuCi0gQVJfRkxBR1M9JGx0X0FSX0ZMQUdTCi0gCi0rIyBIb3cgdG8gZmVlZCBhIGZpbGUgbGlzdGluZyB0byB0aGUgYXJjaGl2ZXIuCi0rYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9hcmNoaXZlcl9saXN0X3NwZWMKLSsKLSAjIEEgc3ltYm9sIHN0cmlwcGluZyBwcm9ncmFtLgotIFNUUklQPSRsdF9TVFJJUAotIAotQEAgLTE0NjA4LDYgKzE1MzA0LDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzCi0gIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZC4KLSBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgKLSAKLSsjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcyBmb3IgXCROTS4KLStubV9maWxlX2xpc3Rfc3BlYz0kbHRfbm1fZmlsZV9saXN0X3NwZWMKLSsKLSsjIFRoZSByb290IHdoZXJlIHRvIHNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyxhbmQgaW4gd2hpY2ggb3VyIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkLgotK2x0X3N5c3Jvb3Q9JGx0X3N5c3Jvb3QKLSsKLSAjIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0ZW1wb3JhcnkgbGlidG9vbCBmaWxlcy4KLSBvYmpkaXI9JG9iamRpcgotIAotQEAgLTE0NjE3LDYgKzE1MzE5LDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKLSAjIE11c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uPwotIG5lZWRfbG9ja3M9JGx0X25lZWRfbG9ja3MKLSAKLSsjIE1hbmlmZXN0IHRvb2wuCi0rTUFOSUZFU1RfVE9PTD0kbHRfTUFOSUZFU1RfVE9PTAotKwotICMgVG9vbCB0byBtYW5pcHVsYXRlIGFyY2hpdmVkIERXQVJGIGRlYnVnIHN5bWJvbCBmaWxlcyBvbiBNYWMgT1MgWC4KLSBEU1lNVVRJTD0kbHRfRFNZTVVUSUwKLSAKLUBAIC0xNDczMSwxMiArMTU0MzYsMTIgQEAgd2l0aF9nY2M9JEdDQwotICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KLSBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnCi0gCi0tIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgotLXdsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCi0tCi0gIyBBZGRpdGlvbmFsIGNvbXBpbGVyIGZsYWdzIGZvciBidWlsZGluZyBsaWJyYXJ5IG9iamVjdHMuCi0gcGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfcGljCi0gCi0rIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgotK3dsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCi0rCi0gIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgotIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljCi0gCi1AQCAtMTQ4MjMsOSArMTU1MjgsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCi0gIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCi0gbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlicwotIAotLSMgRml4IHRoZSBzaGVsbCB2YXJpYWJsZSBcJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlci4KLS1maXhfc3JjZmlsZV9wYXRoPSRsdF9maXhfc3JjZmlsZV9wYXRoCi0tCi0gIyBTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWQuCi0gYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSRhbHdheXNfZXhwb3J0X3N5bWJvbHMKLSAKLUBAIC0xNDg0MSw2ICsxNTU0Myw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCi0gIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KLSBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kcwotIAotKyMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBmaW5pc2hpbmcgbGlua2luZyBwcm9ncmFtcy4KLStwb3N0bGlua19jbWRzPSRsdF9wb3N0bGlua19jbWRzCi0rCi0gIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCi0gZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjCi0gCi1AQCAtMTQ4NzMsMjEwICsxNTU3OCwxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCi0gICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCi0gICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQotICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KLS0gIHNlZCAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS9xJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0tICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0tCi0tICBjYXNlICR4c2lfc2hlbGwgaW4KLS0gIHllcykKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0tIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tZnVuY19kaXJuYW1lICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0tICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLS1mdW5jX2Jhc2VuYW1lICgpCi0tewotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgotLX0KLS0KLS0jIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgotLSMgY2FsbDoKLS0jICAgZGlybmFtZTogIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LAotLSMgICAgICAgICAgICAgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LCBvdGhlcndpc2Ugc2V0IHJlc3VsdAotLSMgICAgICAgICAgICAgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLSMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgotLSMgICBiYXNlbmFtZTogQ29tcHV0ZSBmaWxlbmFtZSBvZiBGSUxFLgotLSMgICAgICAgICAgICAgdmFsdWUgcmV0dW5lZCBpbiAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotLSMgSW1wbGVtZW50YXRpb24gbXVzdCBiZSBrZXB0IHN5bmNocm9uaXplZCB3aXRoIGZ1bmNfZGlybmFtZQotLSMgYW5kIGZ1bmNfYmFzZW5hbWUuIEZvciBlZmZpY2llbmN5LCB3ZSBkbyBub3QgZGVsZWdhdGUgdG8KLS0jIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KLS1mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0tICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLS0gIGVzYWMKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKLS19Ci0tCi0tIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLS0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0tIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0tIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotLWZ1bmNfc3RyaXBuYW1lICgpCi0tewotLSAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQotLSAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9Ci0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifQotLX0KLS0KLS0jIGZ1bmNfb3B0X3NwbGl0Ci0tZnVuY19vcHRfc3BsaXQgKCkKLS17Ci0tICBmdW5jX29wdF9zcGxpdF9vcHQ9JHsxJSU9Kn0KLS0gIGZ1bmNfb3B0X3NwbGl0X2FyZz0kezEjKj19Ci0tfQotLQotLSMgZnVuY19sbzJvIG9iamVjdAotLWZ1bmNfbG8ybyAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OwotLSAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLS1mdW5jX3hmb3JtICgpCi0tewotLSAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sbwotLX0KLS0KLS0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCi0tZnVuY19hcml0aCAoKQotLXsKLS0gIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKQotLX0KLS0KLS0jIGZ1bmNfbGVuIHN0cmluZwotLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLS1mdW5jX2xlbiAoKQotLXsKLS0gIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfQotLX0KLS0KLS1fTFRfRU9GCi0tICAgIDs7Ci0tICAqKSAjIEJvdXJuZSBjb21wYXRpYmxlIGZ1bmN0aW9ucy4KLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0tIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tZnVuY19kaXJuYW1lICgpCi0tewotLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KLS0gIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRkaXJuYW1lImAKLS0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCi0tICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCi0tICBlbHNlCi0tICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKLS0gIGZpCi0tfQotLQotLSMgZnVuY19iYXNlbmFtZSBmaWxlCi0tZnVuY19iYXNlbmFtZSAoKQotLXsKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkYmFzZW5hbWUiYAotLX0KLS0KLS0KLS0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQotLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0tIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKLS0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKLS0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi0tIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQotLWZ1bmNfc3RyaXBuYW1lICgpCi0tewotLSAgY2FzZSAkezJ9IGluCi0tICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7Ci0tICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBzZWQgc2NyaXB0czoKLS1teV9zZWRfbG9uZ19vcHQ9JzFzL15cKC1bXj1dKlwpPS4qL1wxLztxJwotLW15X3NlZF9sb25nX2FyZz0nMXMvXi1bXj1dKj0vLycKLS0KLS0jIGZ1bmNfb3B0X3NwbGl0Ci0tZnVuY19vcHRfc3BsaXQgKCkKLS17Ci0tICBmdW5jX29wdF9zcGxpdF9vcHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19vcHQiYAotLSAgZnVuY19vcHRfc3BsaXRfYXJnPWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKLS19Ci0tCi0tIyBmdW5jX2xvMm8gb2JqZWN0Ci0tZnVuY19sbzJvICgpCi0tewotLSAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGxvMm8iYAotLX0KLS0KLS0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQotLWZ1bmNfeGZvcm0gKCkKLS17Ci0tICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAncy9cLlteLl0qJC8ubG8vJ2AKLS19Ci0tCi0tIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotLWZ1bmNfYXJpdGggKCkKLS17Ci0tICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJEAiYAotLX0KLS0KLS0jIGZ1bmNfbGVuIHN0cmluZwotLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLS1mdW5jX2xlbiAoKQotLXsKLS0gIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJDEiIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKLS19Ci0tCi0tX0xUX0VPRgotLWVzYWMKLS0KLS1jYXNlICRsdF9zaGVsbF9hcHBlbmQgaW4KLS0gIHllcykKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotLWZ1bmNfYXBwZW5kICgpCi0tewotLSAgZXZhbCAiJDErPVwkMiIKLS19Ci0tX0xUX0VPRgotLSAgICA7OwotLSAgKikKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotLWZ1bmNfYXBwZW5kICgpCi0tewotLSAgZXZhbCAiJDE9XCQkMVwkMiIKLS19Ci0tCi0tX0xUX0VPRgotLSAgICA7OwotLSAgZXNhYwotLQotLQotLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotLQotLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAotKyAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotKyAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLSsKLSsgIGlmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KLSsgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWUgL2NcCi0rZnVuY19kaXJuYW1lICgpXAotK3tcCi0rXCAgICBjYXNlICR7MX0gaW5cCi0rXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAotK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAotK1wgICAgZXNhY1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfYmFzZW5hbWUgL2NcCi0rZnVuY19iYXNlbmFtZSAoKVwKLSt7XAotK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIC9jXAotK2Z1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKClcCi0re1wKLStcICAgIGNhc2UgJHsxfSBpblwKLStcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCi0rXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCi0rXCAgICBlc2FjXAotK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3RyaXBuYW1lICgpJC8sL159ICMgZnVuY19zdHJpcG5hbWUgL2NcCi0rZnVuY19zdHJpcG5hbWUgKClcCi0re1wKLStcICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmVcCi0rXCAgICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuXAotK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M31cCi0rXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifVwKLStcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3N0cmlwbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfbG9uZ19vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X2xvbmdfb3B0IC9jXAotK2Z1bmNfc3BsaXRfbG9uZ19vcHQgKClcCi0re1wKLStcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT0kezElJT0qfVwKLStcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPSR7MSMqPX1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfbG9uZ19vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3NwbGl0X3Nob3J0X29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IC9jXAotK2Z1bmNfc3BsaXRfc2hvcnRfb3B0ICgpXAotK3tcCi0rXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9JHsxIz8/fVwKLStcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9JHsxJSIkZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIn1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19sbzJvICgpJC8sL159ICMgZnVuY19sbzJvIC9jXAotK2Z1bmNfbG8ybyAoKVwKLSt7XAotK1wgICAgY2FzZSAkezF9IGluXAotK1wgICAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7O1wKLStcICAgICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7XAotK1wgICAgZXNhY1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sbzJvIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY194Zm9ybSAoKSQvLC9efSAjIGZ1bmNfeGZvcm0gL2NcCi0rZnVuY194Zm9ybSAoKVwKLSt7XAotKyAgICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3hmb3JtIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19hcml0aCAoKSQvLC9efSAjIGZ1bmNfYXJpdGggL2NcCi0rZnVuY19hcml0aCAoKVwKLSt7XAotKyAgICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSlcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXJpdGggaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2xlbiAoKSQvLC9efSAjIGZ1bmNfbGVuIC9jXAotK2Z1bmNfbGVuICgpXAotK3tcCi0rICAgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sZW4gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLStmaQotKwotK2lmIHRlc3QgeCIkbHRfc2hlbGxfYXBwZW5kIiA9IHh5ZXM7IHRoZW4KLSsgIHNlZCAtZSAnL15mdW5jX2FwcGVuZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kIC9jXAotK2Z1bmNfYXBwZW5kICgpXAotK3tcCi0rICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19hcHBlbmRfcXVvdGVkICgpJC8sL159ICMgZnVuY19hcHBlbmRfcXVvdGVkIC9jXAotK2Z1bmNfYXBwZW5kX3F1b3RlZCAoKVwKLSt7XAotK1wgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSJcCi0rXCAgICBldmFsICIkezF9Kz1cXFxcIFxcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmRfcXVvdGVkIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgd2hlcmUgcG9zc2libGUgYnkgZGlyZWN0IHVzZSBvZiAnKz0nCi0rICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxKz0iJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKLSsgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSsgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rZWxzZQotKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIGV2ZW4gd2hlbiAnKz0nIGlzIG5vdCBhdmFpbGFibGUKLSsgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDE9IiRcMSVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCi0rICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotK2ZpCi0rCi0raWYgdGVzdCB4IiRfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsIiA9IHgiOiI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiYyO30KLStmaQotKwotKwotKyAgIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKLSAgICAgKHJtIC1mICIkb2ZpbGUiICYmIGNwICIkY2ZnZmlsZSIgIiRvZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlIikKLSAgIGNobW9kICt4ICIkb2ZpbGUiCi0gCi1kaWZmIC0tZ2l0IGEvb3Bjb2Rlcy9jb25maWd1cmUuYWMgYi9vcGNvZGVzL2NvbmZpZ3VyZS5hYwotaW5kZXggYjlmNWViOGE0Zi4uYTMxYjY2YTJmMCAxMDA2NDQKLS0tLSBhL29wY29kZXMvY29uZmlndXJlLmFjCi0rKysgYi9vcGNvZGVzL2NvbmZpZ3VyZS5hYwotQEAgLTE2Nyw3ICsxNjcsNyBAQCBjaGFuZ2VxdW90ZSgsKWRubAotICAgeD1gc2VkIC1uIC1lICdzL15bIAldKlBJQ0ZMQUdbIAldKj1bIAldKi8vcCcgPCAuLi9saWJpYmVydHkvTWFrZWZpbGUgfCBzZWQgLW4gJyRwJ2AKLSBjaGFuZ2VxdW90ZShbLF0pZG5sCi0gICBpZiB0ZXN0IC1uICIkeCI7IHRoZW4KLS0gICAgU0hBUkVEX0xJQkFERD0iLUxgcHdkYC8uLi9saWJpYmVydHkvcGljIC1saWJlcnR5IgotKyAgICBTSEFSRURfTElCQUREPSJgcHdkYC8uLi9saWJpYmVydHkvcGljL2xpYmliZXJ0eS5hIgotICAgZmkKLSAKLSAgIGNhc2UgIiR7aG9zdH0iIGluCi1kaWZmIC0tZ2l0IGEvemxpYi9jb25maWd1cmUgYi96bGliL2NvbmZpZ3VyZQotaW5kZXggYmVkOWUzZWEyYi4uY2FlZjBiNjc0ZSAxMDA3NTUKLS0tLSBhL3psaWIvY29uZmlndXJlCi0rKysgYi96bGliL2NvbmZpZ3VyZQotQEAgLTYxNCw4ICs2MTQsMTEgQEAgT1RPT0wKLSBMSVBPCi0gTk1FRElUCi0gRFNZTVVUSUwKLStNQU5JRkVTVF9UT09MCi0gUkFOTElCCi0rYWNfY3RfQVIKLSBBUgotK0RMTFRPT0wKLSBPQkpEVU1QCi0gTE5fUwotIE5NCi1AQCAtNzM3LDYgKzc0MCw3IEBAIGVuYWJsZV9zdGF0aWMKLSB3aXRoX3BpYwotIGVuYWJsZV9mYXN0X2luc3RhbGwKLSB3aXRoX2dudV9sZAotK3dpdGhfbGlidG9vbF9zeXNyb290Ci0gZW5hYmxlX2xpYnRvb2xfbG9jawotIGVuYWJsZV9ob3N0X3NoYXJlZAotICcKLUBAIC0xMzg1LDYgKzEzODksOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKLSAgIC0td2l0aC1waWMgICAgICAgICAgICAgIHRyeSB0byB1c2Ugb25seSBQSUMvbm9uLVBJQyBvYmplY3RzIFtkZWZhdWx0PXVzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90aF0KLSAgIC0td2l0aC1nbnUtbGQgICAgICAgICAgIGFzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBbZGVmYXVsdD1ub10KLSsgIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9RElSIFNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyB3aXRoaW4gRElSCi0rICAgICAgICAgICAgICAgICAgICAgICAgKG9yIHRoZSBjb21waWxlcidzIHN5c3Jvb3QgaWYgbm90IHNwZWNpZmllZCkuCi0gCi0gU29tZSBpbmZsdWVudGlhbCBlbnZpcm9ubWVudCB2YXJpYWJsZXM6Ci0gICBDQyAgICAgICAgICBDIGNvbXBpbGVyIGNvbW1hbmQKLUBAIC0zOTEwLDggKzM5MTYsOCBAQCBlc2FjCi0gCi0gCi0gCi0tbWFjcm9fdmVyc2lvbj0nMi4yLjdhJwotLW1hY3JvX3JldmlzaW9uPScxLjMxMzQnCi0rbWFjcm9fdmVyc2lvbj0nMi40JwotK21hY3JvX3JldmlzaW9uPScxLjMyOTMnCi0gCi0gCi0gCi1AQCAtMzk1MSw3ICszOTU3LDcgQEAgRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncy4uLiAiID4mNjsgfQotICMgVGVzdCBwcmludCBmaXJzdCwgYmVjYXVzZSBpdCB3aWxsIGJlIGEgYnVpbHRpbiBpZiBwcmVzZW50LgotLWlmIHRlc3QgIlhgcHJpbnQgLXIgLS0gLW4gMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCi0raWYgdGVzdCAiWGAoIHByaW50IC1yIC0tIC1uICkgMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCi0gICAgdGVzdCAiWGBwcmludCAtciAtLSAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KLSAgIEVDSE89J3ByaW50IC1yIC0tJwotIGVsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCi1AQCAtNDc2Nyw4ICs0NzczLDggQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgc29tZSBYU0kgY29uc3RydWN0cy4uLiAiID4mNjsKLSAjIFRyeSBzb21lIFhTSSBmZWF0dXJlcwotIHhzaV9zaGVsbD1ubwotICggX2x0X2R1bW15PSJhL2IvYyIKLS0gIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCi0tICAgICAgPSBjLGEvYiwsIFwKLSsgIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCR7X2x0X2R1bW15Iz8/fSIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCi0rICAgICAgPSBjLGEvYixiL2MsIFwKLSAgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAotICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAotICAgJiYgeHNpX3NoZWxsPXllcwotQEAgLTQ4MTcsNiArNDgyMyw4MCBAQCBlc2FjCi0gCi0gCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfdG9faG9zdF9maWxlX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhc2UgJGhvc3QgaW4KLSsgICotKi1taW5ndyogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsgICAgICAgIDs7Ci0rICAgICAgKi0qLWN5Z3dpbiogKQotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyCi0rICAgICAgICA7OwotKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotKyAgKi0qLWN5Z3dpbiogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KLSsgICAgICAgIDs7Ci0rICAgICAgKi0qLWN5Z3dpbiogKQotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rICAgICAgICA7OwotKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotKyAgKiApICMgdW5oYW5kbGVkIGhvc3RzIChhbmQgIm5vcm1hbCIgbmF0aXZlIGJ1aWxkcykKLSsgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rICAgIDs7Ci0rZXNhYwotKwotK2ZpCi0rCi0rdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjY7IH0KLSsKLSsKLSsKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICAjYXNzdW1lIG9yZGluYXJ5IGNyb3NzIHRvb2xzLCBvciBuYXRpdmUgYnVpbGQuCi0rbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rY2FzZSAkaG9zdCBpbgotKyAgKi0qLW1pbmd3KiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotK2VzYWMKLSsKLStmaQotKwotK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY2OyB9Ci0rCi0rCi0rCi0rCi0rCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzLi4uICIgPiY2OyB9Ci0gaWYgdGVzdCAiJHtsdF9jdl9sZF9yZWxvYWRfZmxhZytzZXR9IiA9IHNldDsgdGhlbiA6Ci1AQCAtNDgzMyw2ICs0OTEzLDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCi0gZXNhYwotIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKLSBjYXNlICRob3N0X29zIGluCi0rICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0rICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgotKyAgICAgIHJlbG9hZF9jbWRzPWZhbHNlCi0rICAgIGZpCi0rICAgIDs7Ci0gICBkYXJ3aW4qKQotICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotICAgICAgIHJlbG9hZF9jbWRzPSckTFRDQyAkTFRDRkxBR1MgLW5vc3RkbGliICR7d2x9LXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKLUBAIC01MDAxLDcgKzUwODYsOCBAQCBtaW5ndyogfCBwdzMyKikKLSAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgXng4NiBhcmNoaXZlIGltcG9ydHxeeDg2IERMTCcKLSAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9J2Z1bmNfd2luMzJfbGliaWQnCi0gICBlbHNlCi0tICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/JwotKyAgICAjIEtlZXAgdGhpcyBwYXR0ZXJuIGluIHN5bmMgd2l0aCB0aGUgb25lIGluIGZ1bmNfd2luMzJfbGliaWQuCi0rICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IChwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScKLSAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJwotICAgZmkKLSAgIDs7Ci1AQCAtNTE1NSw2ICs1MjQxLDIxIEBAIGVzYWMKLSBmaQotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNQotICRhc19lY2hvICIkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNjsgfQotKwotK2ZpbGVfbWFnaWNfZ2xvYj0KLSt3YW50X25vY2FzZWdsb2I9bm8KLStpZiB0ZXN0ICIkYnVpbGQiID0gIiRob3N0IjsgdGhlbgotKyAgY2FzZSAkaG9zdF9vcyBpbgotKyAgbWluZ3cqIHwgcHczMiopCi0rICAgIGlmICggc2hvcHQgfCBncmVwIG5vY2FzZWdsb2IgKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLSsgICAgICB3YW50X25vY2FzZWdsb2I9eWVzCi0rICAgIGVsc2UKLSsgICAgICBmaWxlX21hZ2ljX2dsb2I9YGVjaG8gYUFiQmNDZERlRWZGZ0doSGlJakprS2xMbU1uTm9PcFBxUXJSc1N0VHVVdlZ3V3hYeVl6WiB8ICRTRUQgLWUgInMvXCguLlwpL3NcL1tcMV1cL1tcMV1cL2c7L2ciYAotKyAgICBmaQotKyAgICA7OwotKyAgZXNhYwotK2ZpCi0rCi0gZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCi0gZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCi0gdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCi1AQCAtNTE3MCw5ICs1MjcxLDE2MyBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KLSAKLSAKLSAKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0tICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9YXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWFyOyBhY193b3JkPSQyCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfRExMVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19ETExUT09MPSIkRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotKyAgICBhY19jdl9wcm9nX0RMTFRPT0w9IiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rRExMVE9PTD0kYWNfY3ZfcHJvZ19ETExUT09MCi0raWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJERMTFRPT0wiID4mNQotKyRhc19lY2hvICIkRExMVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rCi0rZmkKLStpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19ETExUT09MIjsgdGhlbgotKyAgYWNfY3RfRExMVE9PTD0kRExMVE9PTAotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJkbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgZGxsdG9vbDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfRExMVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSIkYWNfY3RfRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotKyAgICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9ImRsbHRvb2wiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK2FjX2N0X0RMTFRPT0w9JGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTAotK2lmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9ETExUT09MIiA+JjUKLSskYXNfZWNobyAiJGFjX2N0X0RMTFRPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKyAgaWYgdGVzdCAieCRhY19jdF9ETExUT09MIiA9IHg7IHRoZW4KLSsgICAgRExMVE9PTD0iZmFsc2UiCi0rICBlbHNlCi0rICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KLSt5ZXM6KQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9Ci0rYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0rZXNhYwotKyAgICBETExUT09MPSRhY19jdF9ETExUT09MCi0rICBmaQotK2Vsc2UKLSsgIERMTFRPT0w9IiRhY19jdl9wcm9nX0RMTFRPT0wiCi0rZmkKLSsKLSt0ZXN0IC16ICIkRExMVE9PTCIgJiYgRExMVE9PTD1kbGx0b29sCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJwotKwotK2Nhc2UgJGhvc3Rfb3MgaW4KLStjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0rICAjIHR3byBkaWZmZXJlbnQgc2hlbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gbHRtYWluLnNoCi0rICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCi0rICBjYXNlIGAkRExMVE9PTCAtLWhlbHAgMj4mMWAgaW4KLSsgICotLWlkZW50aWZ5LXN0cmljdCopCi0rICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgotKyAgICA7OwotKyAgKikKLSsgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrCi0rICAgIDs7Ci0rICBlc2FjCi0rICA7OwotKyopCi0rICAjIGZhbGxiYWNrOiBhc3N1bWUgbGlua2xpYiBJUyBzaGFyZWRsaWIKLSsgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSIkRUNITyIKLSsgIDs7Ci0rZXNhYwotKwotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY2OyB9Ci0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCi0rdGVzdCAteiAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiAmJiBzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kRUNITwotKwotKwotKwotKwotKwotKwotKwotKwotK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSsgIGZvciBhY19wcm9nIGluIGFyCi0rICBkbwotKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0gaWYgdGVzdCAiJHthY19jdl9wcm9nX0FSK3NldH0iID0gc2V0OyB0aGVuIDoKLUBAIC01MTg4LDcgKzU0NDMsNyBAQCBkbwotICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0tICAgIGFjX2N2X3Byb2dfQVI9IiR7YWNfdG9vbF9wcmVmaXh9YXIiCi0rICAgIGFjX2N2X3Byb2dfQVI9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgotICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICAgYnJlYWsgMgotICAgZmkKLUBAIC01MjA4LDExICs1NDYzLDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9Ci0gZmkKLSAKLSAKLSsgICAgdGVzdCAtbiAiJEFSIiAmJiBicmVhawotKyAgZG9uZQotIGZpCi0taWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQVIiOyB0aGVuCi0raWYgdGVzdCAteiAiJEFSIjsgdGhlbgotICAgYWNfY3RfQVI9JEFSCi0tICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLS1zZXQgZHVtbXkgYXI7IGFjX3dvcmQ9JDIKLSsgIGZvciBhY19wcm9nIGluIGFyCi0rZG8KLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLSBpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfQVIrc2V0fSIgPSBzZXQ7IHRoZW4gOgotQEAgLTUyMjgsNyArNTQ4Nyw3IEBAIGRvCi0gICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLS0gICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iYXIiCi0rICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9IiRhY19wcm9nIgotICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICAgYnJlYWsgMgotICAgZmkKLUBAIC01MjQ3LDYgKzU1MDYsMTAgQEAgZWxzZQotICRhc19lY2hvICJubyIgPiY2OyB9Ci0gZmkKLSAKLSsKLSsgIHRlc3QgLW4gIiRhY19jdF9BUiIgJiYgYnJlYWsKLStkb25lCi0rCi0gICBpZiB0ZXN0ICJ4JGFjX2N0X0FSIiA9IHg7IHRoZW4KLSAgICAgQVI9ImZhbHNlIgotICAgZWxzZQotQEAgLTUyNTgsMTYgKzU1MjEsNzIgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0gZXNhYwotICAgICBBUj0kYWNfY3RfQVIKLSAgIGZpCi0tZWxzZQotLSAgQVI9IiRhY19jdl9wcm9nX0FSIgotIGZpCi0gCi0tdGVzdCAteiAiJEFSIiAmJiBBUj1hcgotLXRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1Ci0rOiAke0FSPWFyfQotKzogJHtBUl9GTEFHUz1jcnV9Ci0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X2FyX2F0X2ZpbGUrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9hcl9hdF9maWxlPW5vCi0rICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSsKLStpbnQKLSttYWluICgpCi0rewotIAotKyAgOwotKyAgcmV0dXJuIDA7Ci0rfQotK19BQ0VPRgotK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKLSsgIGVjaG8gY29uZnRlc3QuJGFjX29iamV4dCA+IGNvbmZ0ZXN0LmxzdAotKyAgICAgIGx0X2FyX3RyeT0nJEFSICRBUl9GTEFHUyBsaWJjb25mdGVzdC5hIEBjb25mdGVzdC5sc3QgPiY1JwotKyAgICAgIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1Ci0rICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1Ci0rICBhY19zdGF0dXM9JD8KLSsgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQotKyAgICAgIGlmIHRlc3QgIiRhY19zdGF0dXMiIC1lcSAwOyB0aGVuCi0rCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCi0rCXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgbGliY29uZnRlc3QuYQotKwl7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQotKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQotKyAgYWNfc3RhdHVzPSQ/Ci0rICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSsgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KLSsJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KLSsgICAgICAgICAgbHRfY3ZfYXJfYXRfZmlsZT1ACi0rICAgICAgICBmaQotKyAgICAgIGZpCi0rICAgICAgcm0gLWYgY29uZnRlc3QuKiBsaWJjb25mdGVzdC5hCi0gCi0rZmkKLStybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSAKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfYXJfYXRfZmlsZSIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9hcl9hdF9maWxlIiA+JjY7IH0KLSAKLStpZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCi0rICBhcmNoaXZlcl9saXN0X3NwZWM9Ci0rZWxzZQotKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCi0rZmkKLSAKLSAKLSAKLUBAIC01NjA5LDggKzU5MjgsOCBAQCBlc2FjCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiAtZSAncy9eVCAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDEoKTsvcCcgLWUgJ3MvXiRzeW1jb2RlKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJyIKLSAKLSAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKLS1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0rbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0gCi0gIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCi0gb3B0X2NyPQotQEAgLTU2NDYsNiArNTk2NSw3IEBAIGZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KLSAgIGVsc2UKLSAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0ic2VkIC1uIC1lICdzL14uKlsJIF1cKCRzeW1jb2RlJHN5bWNvZGUqXClbCSBdWwkgXSokYWNfc3ltcHJmeCRzeW1wYXQkb3B0X2NyJC8kc3lteGZybS9wJyIKLSAgIGZpCi0rICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSB8IHNlZCAnLyBfX2dudV9sdG8vZCciCi0gCi0gICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBwaXBlIHdvcmtzIGNvcnJlY3RseS4KLSAgIHBpcGVfd29ya3M9bm8KLUBAIC01Njg3LDYgKzYwMDcsMTggQEAgX0xUX0VPRgotICAgICAgIGlmICRHUkVQICcgbm1fdGVzdF92YXIkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCi0gCWlmICRHUkVQICcgbm1fdGVzdF9mdW5jJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgotIAkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0Ci0rLyogS2VlcCB0aGlzIGNvZGUgaW4gc3luYyBiZXR3ZWVuIGxpYnRvb2wubTQsIGx0bWFpbiwgbHRfc3lzdGVtLmgsIGFuZCB0ZXN0cy4gICovCi0rI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKLSsvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKLSsgICByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24gb24gcHNldWRvLXJlbG9jcy4gICovCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKLSsjZWxpZiBkZWZpbmVkKF9fb3NmX18pCi0rLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKLSsjZWxzZQotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUIGNvbnN0Ci0rI2VuZGlmCi0rCi0gI2lmZGVmIF9fY3BsdXNwbHVzCi0gZXh0ZXJuICJDIiB7Ci0gI2VuZGlmCi1AQCAtNTY5OCw3ICs2MDMwLDcgQEAgX0xUX0VPRgotIAkgIGNhdCA8PF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAotIAotIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KLS1jb25zdCBzdHJ1Y3QgewotK0xUX0RMU1lNX0NPTlNUIHN0cnVjdCB7Ci0gICBjb25zdCBjaGFyICpuYW1lOwotICAgdm9pZCAgICAgICAqYWRkcmVzczsKLSB9Ci1AQCAtNTcyNCw4ICs2MDU2LDggQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKLSBfTFRfRU9GCi0gCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KLSAJICBtdiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKLS0JICBsdF9zYXZlX0xJQlM9IiRMSUJTIgotLQkgIGx0X3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgotKwkgIGx0X2dsb2JzeW1fc2F2ZV9MSUJTPSRMSUJTCi0rCSAgbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUz0kQ0ZMQUdTCi0gCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKLSAJICBDRkxBR1M9IiRDRkxBR1MkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciCi0gCSAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2xpbmtcIiI7IH0gPiY1Ci1AQCAtNTczNSw4ICs2MDY3LDggQEAgX0xUX0VPRgotICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCi0gCSAgICBwaXBlX3dvcmtzPXllcwotIAkgIGZpCi0tCSAgTElCUz0iJGx0X3NhdmVfTElCUyIKLS0JICBDRkxBR1M9IiRsdF9zYXZlX0NGTEFHUyIKLSsJICBMSUJTPSRsdF9nbG9ic3ltX3NhdmVfTElCUwotKwkgIENGTEFHUz0kbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUwotIAllbHNlCi0gCSAgZWNobyAiY2Fubm90IGZpbmQgbm1fdGVzdF9mdW5jIGluICRubGlzdCIgPiY1Ci0gCWZpCi1AQCAtNTc3Myw2ICs2MTA1LDE5IEBAIGVsc2UKLSAkYXNfZWNobyAib2siID4mNjsgfQotIGZpCi0gCi0rIyBSZXNwb25zZSBmaWxlIHN1cHBvcnQuCi0raWYgdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiTVMgZHVtcGJpbiI7IHRoZW4KLSsgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJwotK2VsaWYgJE5NIC0taGVscCAyPi9kZXYvbnVsbCB8IGdyZXAgJ1tAXUZJTEUnID4vZGV2L251bGw7IHRoZW4KLSsgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJwotK2ZpCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0gCi0gCi0gCi1AQCAtNTc5Myw2ICs2MTM4LDQxIEBAIGZpCi0gCi0gCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3lzcm9vdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN5c3Jvb3QuLi4gIiA+JjY7IH0KLSsKLSsjIENoZWNrIHdoZXRoZXIgLS13aXRoLWxpYnRvb2wtc3lzcm9vdCB3YXMgZ2l2ZW4uCi0raWYgdGVzdCAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICB3aXRodmFsPSR3aXRoX2xpYnRvb2xfc3lzcm9vdDsKLStlbHNlCi0rICB3aXRoX2xpYnRvb2xfc3lzcm9vdD1ubwotK2ZpCi0rCi0rCi0rbHRfc3lzcm9vdD0KLStjYXNlICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IGluICMoCi0rIHllcykKLSsgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotKyAgICAgbHRfc3lzcm9vdD1gJENDIC0tcHJpbnQtc3lzcm9vdCAyPi9kZXYvbnVsbGAKLSsgICBmaQotKyAgIDs7ICMoCi0rIC8qKQotKyAgIGx0X3N5c3Jvb3Q9YGVjaG8gIiR3aXRoX2xpYnRvb2xfc3lzcm9vdCIgfCBzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAotKyAgIDs7ICMoCi0rIG5vfCcnKQotKyAgIDs7ICMoCi0rICopCi0rICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjUKLSskYXNfZWNobyAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNjsgfQotKyAgIGFzX2ZuX2Vycm9yICJUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguIiAiJExJTkVOTyIgNQotKyAgIDs7Ci0rZXNhYwotKwotKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHtsdF9zeXNyb290Oi1ub30iID4mNQotKyRhc19lY2hvICIke2x0X3N5c3Jvb3Q6LW5vfSIgPiY2OyB9Ci0rCi0rCi0rCi0gCi0gCi0gIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWxpYnRvb2wtbG9jayB3YXMgZ2l2ZW4uCi1AQCAtNjAwNCw2ICs2Mzg0LDEyMyBAQCBlc2FjCi0gCi0gbmVlZF9sb2Nrcz0iJGVuYWJsZV9saWJ0b29sX2xvY2siCi0gCi0raWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fW10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1tdDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIkTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotKyAgICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiR7YWNfdG9vbF9wcmVmaXh9bXQiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTAotK2lmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRNQU5JRkVTVF9UT09MIiA+JjUKLSskYXNfZWNobyAiJE1BTklGRVNUX1RPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKwotK2ZpCi0raWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIGFjX2N0X01BTklGRVNUX1RPT0w9JE1BTklGRVNUX1RPT0wKLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAibXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSBtdDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotKyAgICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9Im10IgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLSthY19jdF9NQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wKLStpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsgIGlmIHRlc3QgIngkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPSB4OyB0aGVuCi0rICAgIE1BTklGRVNUX1RPT0w9IjoiCi0rICBlbHNlCi0rICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KLSt5ZXM6KQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9Ci0rYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0rZXNhYwotKyAgICBNQU5JRkVTVF9UT09MPSRhY19jdF9NQU5JRkVTVF9UT09MCi0rICBmaQotK2Vsc2UKLSsgIE1BTklGRVNUX1RPT0w9IiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiCi0rZmkKLSsKLSt0ZXN0IC16ICIkTUFOSUZFU1RfVE9PTCIgJiYgTUFOSUZFU1RfVE9PTD1tdAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD1ubwotKyAgZWNobyAiJGFzX21lOiRMSU5FTk86ICRNQU5JRkVTVF9UT09MICctPyciID4mNQotKyAgJE1BTklGRVNUX1RPT0wgJy0/JyAyPmNvbmZ0ZXN0LmVyciA+IGNvbmZ0ZXN0Lm91dAotKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKLSsgIGlmICRHUkVQICdNYW5pZmVzdCBUb29sJyBjb25mdGVzdC5vdXQgPiAvZGV2L251bGw7IHRoZW4KLSsgICAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPXllcwotKyAgZmkKLSsgIHJtIC1mIGNvbmZ0ZXN0KgotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjY7IH0KLStpZiB0ZXN0ICJ4JGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgIT0geHllczsgdGhlbgotKyAgTUFOSUZFU1RfVE9PTD06Ci0rZmkKLSsKLSsKLSsKLSsKLSsKLSAKLSAgIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICAgcmhhcHNvZHkqIHwgZGFyd2luKikKLUBAIC02NTcwLDYgKzcwNjcsOCBAQCBfTFRfRU9GCi0gICAgICAgJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyAyPiY1Ci0gICAgICAgZWNobyAiJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8iID4mNQotICAgICAgICRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIDI+JjUKLSsgICAgICBlY2hvICIkUkFOTElCIGxpYmNvbmZ0ZXN0LmEiID4mNQotKyAgICAgICRSQU5MSUIgbGliY29uZnRlc3QuYSAyPiY1Ci0gICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCi0gaW50IG1haW4oKSB7IHJldHVybiAwO30KLSBfTFRfRU9GCi1AQCAtNzAzMyw3ICs3NTMyLDggQEAgZmkKLSBMSUJUT09MX0RFUFM9IiRsdG1haW4iCi0gCi0gIyBBbHdheXMgdXNlIG91ciBvd24gbGlidG9vbC4KLS1MSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpcikvbGlidG9vbCcKLStMSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpciknCi0rTElCVE9PTD0iJExJQlRPT0wvJHtob3N0X2FsaWFzfS1saWJ0b29sIgotIAotIAotIAotQEAgLTcxMjIsNyArNzYyMiw3IEBAIGFpeDMqKQotIGVzYWMKLSAKLSAjIEdsb2JhbCB2YXJpYWJsZXM6Ci0tb2ZpbGU9bGlidG9vbAotK29maWxlPSR7aG9zdF9hbGlhc30tbGlidG9vbAotIGNhbl9idWlsZF9zaGFyZWQ9eWVzCi0gCi0gIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgYC5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCi1AQCAtNzQyMCw4ICs3OTIwLDYgQEAgZmkKLSBsdF9wcm9nX2NvbXBpbGVyX3BpYz0KLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0KLSAKLS17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKLS0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotIAotICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAgICAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKLUBAIC03NTg3LDYgKzgwODUsMTIgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAJbHRfcHJvZ19jb21waWxlcl9waWM9Jy0tc2hhcmVkJwotIAlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLS1zdGF0aWMnCi0gCTs7Ci0rICAgICAgbmFnZm9yKikKLSsJIyBOQUcgRm9ydHJhbiBjb21waWxlcgotKwlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsLVdsLCwnCi0rCWx0X3Byb2dfY29tcGlsZXJfcGljPSctUElDJwotKwlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCi0rCTs7Ci0gICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQotICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBjb21waWxlcnMgKCpub3QqIHRoZSBQZW50aXVtIGdjYyBjb21waWxlciwKLSAJIyB3aGljaCBsb29rcyB0byBiZSBhIGRlYWQgcHJvamVjdCkKLUBAIC03NjQ5LDcgKzgxNTMsNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotICAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctS1BJQycKLSAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCi0gICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLS0gICAgICBmNzcqIHwgZjkwKiB8IGY5NSopCi0rICAgICAgZjc3KiB8IGY5MCogfCBmOTUqIHwgc3VuZjc3KiB8IHN1bmY5MCogfCBzdW5mOTUqKQotIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctUW9wdGlvbiBsZCAnOzsKLSAgICAgICAqKQotIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJzs7Ci1AQCAtNzcwNiwxMyArODIxMCwxNyBAQCBjYXNlICRob3N0X29zIGluCi0gICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSIkbHRfcHJvZ19jb21waWxlcl9waWMgLURQSUMiCi0gICAgIDs7Ci0gZXNhYwotLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNQotLSRhc19lY2hvICIkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQotLQotLQotLQotLQotIAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYytzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3Byb2dfY29tcGlsZXJfcGljPSRsdF9wcm9nX2NvbXBpbGVyX3BpYwotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9Ci0rbHRfcHJvZ19jb21waWxlcl9waWM9JGx0X2N2X3Byb2dfY29tcGlsZXJfcGljCi0gCi0gIwotICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLUBAIC03NzczLDYgKzgyODEsMTEgQEAgZmkKLSAKLSAKLSAKLSsKLSsKLSsKLSsKLSsKLSAjCi0gIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgotICMKLUBAIC04MTIzLDcgKzg2MzYsOCBAQCBfTFRfRU9GCi0gICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSAgICAgICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9bm8KLSAgICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotLSAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsgICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLztzL14uKlsgXV9fbm1fX1woW14gXSpcKVsgXVteIF0qL1wxIERBVEEvOy9eSVsgXS9kOy9eW0FJVFddWyBdL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rICAgICAgZXhjbHVkZV9leHBzeW1zPSdbX10rR0xPQkFMX09GRlNFVF9UQUJMRV98W19dK0dMT0JBTF9fW0ZJRF1fLip8W19dK2hlYWRfW0EtWmEtejAtOV9dK19kbGx8W0EtWmEtejAtOV9dK19kbGxfaW5hbWUnCi0gCi0gICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgotICAgICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLUBAIC04MjIyLDEyICs4NzM2LDEyIEBAIF9MVF9FT0YKLSAJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKLSAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQotIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9Jy1ycGF0aCAkbGliZGlyJwotLQkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJwotKwkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKLSAJICBpZiB0ZXN0ICJ4JHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZyIgPSB4eWVzOyB0aGVuCi0gCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotIAkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzIHwgc2VkIC1lICJzL1woLipcKS9cMTsvIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0gCSAgICAgIGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotLQkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKLSsJICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJwotIAkgIGZpCi0gCSAgOzsKLSAJZXNhYwotQEAgLTgyNDEsOCArODc1NSw4IEBAIF9MVF9FT0YKLSAJYXJjaGl2ZV9jbWRzPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJwotIAl3bGFyYz0KLSAgICAgICBlbHNlCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGZpCi0gICAgICAgOzsKLSAKLUBAIC04MjYwLDggKzg3NzQsOCBAQCBfTFRfRU9GCi0gCi0gX0xUX0VPRgotICAgICAgIGVsaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBlbHNlCi0gCWxkX3NobGlicz1ubwotICAgICAgIGZpCi1AQCAtODMwNyw4ICs4ODIxLDggQEAgX0xUX0VPRgotIAotICAgICAqKQotICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZWxzZQotIAlsZF9zaGxpYnM9bm8KLSAgICAgICBmaQotQEAgLTg0MzgsNyArODk1MiwxMyBAQCBfTFRfRU9GCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPSctYmVyb2snCi0gICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KLSAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KLS0gICAgICAgIGlmIHRlc3QgeCRnY2Nfbm9fbGluayA9IHh5ZXM7IHRoZW4KLSsgICAgICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAotK2Vsc2UKLSsgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGhfK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCB4JGdjY19ub19saW5rID0geHllczsgdGhlbgotICAgYXNfZm5fZXJyb3IgIkxpbmsgdGVzdHMgYXJlIG5vdCBhbGxvd2VkIGFmdGVyIEdDQ19OT19FWEVDVVRBQkxFUy4iICIkTElORU5PIiA1Ci0gZmkKLSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci1AQCAtODQ1NCwyMiArODk3NCwyOSBAQCBtYWluICgpCi0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotIAotLWx0X2FpeF9saWJwYXRoX3NlZD0nCi0tICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLS0JL14wLyB7Ci0tCSAgICBzL14wICAqXCguKlwpJC9cMS8KLS0JICAgIHAKLS0JfQotLSAgICB9JwotLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0tICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS1maQotKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKLSsgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0rCSAgL14wLyB7Ci0rCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCi0rCSAgICAgIHAKLSsJICB9Ci0rICAgICAgfScKLSsgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgIGZpCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKLSsgIGZpCi0rCi0rZmkKLSsKLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KLStmaQotIAotICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCi1AQCAtODQ4MSw3ICs5MDA4LDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAllbHNlCi0gCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KLSAJICMgZW1wdHkgZXhlY3V0YWJsZS4KLS0JIGlmIHRlc3QgeCRnY2Nfbm9fbGluayA9IHh5ZXM7IHRoZW4KLSsJIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAotK2Vsc2UKLSsgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGhfK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCB4JGdjY19ub19saW5rID0geHllczsgdGhlbgotICAgYXNfZm5fZXJyb3IgIkxpbmsgdGVzdHMgYXJlIG5vdCBhbGxvd2VkIGFmdGVyIEdDQ19OT19FWEVDVVRBQkxFUy4iICIkTElORU5PIiA1Ci0gZmkKLSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci1AQCAtODQ5NywyMiArOTAzMCwyOSBAQCBtYWluICgpCi0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotIAotLWx0X2FpeF9saWJwYXRoX3NlZD0nCi0tICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLS0JL14wLyB7Ci0tCSAgICBzL14wICAqXCguKlwpJC9cMS8KLS0JICAgIHAKLS0JfQotLSAgICB9JwotLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0tICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS1maQotKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKLSsgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0rCSAgL14wLyB7Ci0rCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCi0rCSAgICAgIHAKLSsJICB9Ci0rICAgICAgfScKLSsgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgIGZpCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKLSsgIGZpCi0rCi0rZmkKLSsKLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KLStmaQotIAotIAkgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAotQEAgLTg1NTcsMjAgKzkwOTcsNjMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KLSAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCi0gICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KLS0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotLSAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0tICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLS0gICAgICBsaWJleHQ9bGliCi0tICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0tICAgICAgc2hyZXh0X2NtZHM9Ii5kbGwiCi0tICAgICAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCi0tICAgICAgIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KLS0gICAgICBvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJwotLSAgICAgICMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCi0tICAgICAgb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJwotLSAgICAgIGZpeF9zcmNmaWxlX3BhdGg9J2BjeWdwYXRoIC13ICIkc3JjZmlsZSJgJwotLSAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSsgICAgICBjbCopCi0rCSMgTmF0aXZlIE1TVkMKLSsJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLSsJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSsJYWx3YXlzX2V4cG9ydF9zeW1ib2xzPXllcwotKwlmaWxlX2xpc3Rfc3BlYz0nQCcKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLSsJbGliZXh0PWxpYgotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLSsJc2hyZXh0X2NtZHM9Ii5kbGwiCi0rCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KLSsJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgZWxzZQotKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLSsJICBmaX4KLSsJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+Ci0rCSAgbGlua25hbWVzPScKLSsJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgotKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgKT0ndHJ1ZScKLSsJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsJZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEsREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKwkjIERvbid0IHVzZSByYW5saWIKLSsJb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDY0NCAkb2xkbGliJwotKwlwb3N0bGlua19jbWRzPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+Ci0rCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KLSsJICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCi0rCSAgICAqLmV4ZXwqLkVYRSkgOzsKLSsJICAgICopCi0rCSAgICAgIGx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKLSsJICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKLSsJICAgICAgOzsKLSsJICBlc2FjfgotKwkgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCi0rCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOwotKwkgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7Ci0rCSAgZmknCi0rCTs7Ci0rICAgICAgKikKLSsJIyBBc3N1bWUgTVNWQyB3cmFwcGVyCi0rCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0rCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0rCWxpYmV4dD1saWIKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0rCXNocmV4dF9jbWRzPSIuZGxsIgotKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0rCWFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCi0rCSMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCi0rCW9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCi0rCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCi0rCW9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKLSsJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsJOzsKLSsgICAgICBlc2FjCi0gICAgICAgOzsKLSAKLSAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKLUBAIC04NjMxLDcgKzkyMTQsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgotICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCi0tICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCi0gICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotICAgICAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9bm8KLUBAIC04NjM5LDcgKzkyMjIsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgaHB1eDkqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSAgICAgICBlbHNlCi0gCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0gICAgICAgZmkKLUBAIC04NjU1LDcgKzkyMzgsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgaHB1eDEwKikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwotICAgICAgIGZpCi1AQCAtODY3OSwxMCArOTI2MiwxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCWlhNjQqKQotLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJKikKLS0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAllc2FjCi0gICAgICAgZWxzZQotQEAgLTg3NjEsMjYgKzkzNDQsMzkgQEAgZmkKLSAKLSAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJIyBUcnkgdG8gdXNlIHRoZSAtZXhwb3J0ZWRfc3ltYm9sIGxkIG9wdGlvbiwgaWYgaXQgZG9lcyBub3QKLSAJIyB3b3JrLCBhc3N1bWUgdGhhdCAtZXhwb3J0c19maWxlIGRvZXMgbm90IHdvcmsgZWl0aGVyIGFuZAotIAkjIGltcGxpY2l0bHkgZXhwb3J0IGFsbCBzeW1ib2xzLgotLSAgICAgICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKLS0gICAgICAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKLS0gICAgICAgIGlmIHRlc3QgeCRnY2Nfbm9fbGluayA9IHh5ZXM7IHRoZW4KLSsJIyBUaGlzIHNob3VsZCBiZSB0aGUgc2FtZSBmb3IgYWxsIGxhbmd1YWdlcywgc28gbm8gcGVyLXRhZyBjYWNoZSB2YXJpYWJsZS4KLSsJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCi0rCSAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKLSsJICAgaWYgdGVzdCB4JGdjY19ub19saW5rID0geHllczsgdGhlbgotICAgYXNfZm5fZXJyb3IgIkxpbmsgdGVzdHMgYXJlIG5vdCBhbGxvd2VkIGFmdGVyIEdDQ19OT19FWEVDVVRBQkxFUy4iICIkTElORU5PIiA1Ci0gZmkKLSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotLWludCBmb28odm9pZCkge30KLStpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9Ci0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotLSAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotLQotKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9eWVzCi0rZWxzZQotKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9bm8KLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLSAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKLSsgICAgICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjY7IH0KLSsJaWYgdGVzdCAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA9IHllczsgdGhlbgotKyAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlmaQotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi1AQCAtODg2NSw3ICs5NDYxLDcgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIG9zZjQqIHwgb3NmNSopCSMgYXMgb3NmMyogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZwotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwotICAgICAgIGVsc2UKLSAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCi1AQCAtODg4NCw5ICs5NDgwLDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyAteiBkZWZzJwotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gCXdsYXJjPScke3dsfScKLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KLS0JICAkQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwotKwkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwotICAgICAgIGVsc2UKLSAJY2FzZSBgJENDIC1WIDI+JjFgIGluCi0gCSoiQ29tcGlsZXJzIDUuMCIqKQotQEAgLTk0NjIsOCArMTAwNTgsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICBuZWVkX3ZlcnNpb249bm8KLSAgIG5lZWRfbGliX3ByZWZpeD1ubwotIAotLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCi0tICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQotKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgotKyAgeWVzLCopCi0rICAgICMgZ2NjCi0gICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCi0gICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKLSAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci1AQCAtOTQ5NiwxMyArMTAwOTMsNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSAgICAgICA7OwotICAgICBlc2FjCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0rICAgIDs7Ci0rCi0rICAqLGNsKikKLSsgICAgIyBOYXRpdmUgTVNWQwotKyAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJwotKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0rICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJwotKwotKyAgICBjYXNlICRidWlsZF9vcyBpbgotKyAgICBtaW5ndyopCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQotKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKLSsgICAgICBJRlM9JzsnCi0rICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgotKyAgICAgIGRvCi0rICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCi0rICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgotKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCi0rICAgICAgZG9uZQotKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKLSsgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFthLXpBLVpdXFwpOnwgL1xcMXxnJyAtZSAnc3xeIHx8J2AKLSsgICAgICA7OwotKyAgICBjeWd3aW4qKQotKyAgICAgICMgQ29udmVydCB0byB1bml4IGZvcm0sIHRoZW4gdG8gZG9zIGZvcm0sIHRoZW4gYmFjayB0byB1bml4IGZvcm0KLSsgICAgICAjIGJ1dCB0aGlzIHRpbWUgZG9zIHN0eWxlIChubyBzcGFjZXMhKSBzbyB0aGF0IHRoZSB1bml4IGZvcm0gbG9va3MKLSsgICAgICAjIGxpa2UgL2N5Z2RyaXZlL2MvUFJPR1JBfjE6L2N5Z2RyLi4uCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRMSUIiYAotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS1kb3MgIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIDI+L2Rldi9udWxsYAotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0rICAgICAgOzsKLSsgICAgKikKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCi0rICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsOyB0aGVuCi0rICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRILgotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKLSsgICAgICBlbHNlCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0rICAgICAgZmkKLSsgICAgICAjIEZJWE1FOiBmaW5kIHRoZSBzaG9ydCBuYW1lIG9yIHRoZSBwYXRoIGNvbXBvbmVudHMsIGFzIHNwYWNlcyBhcmUKLSsgICAgICAjIGNvbW1vbi4gKGUuZy4gIlByb2dyYW0gRmlsZXMiIC0+ICJQUk9HUkF+MSIpCi0rICAgICAgOzsKLSsgICAgZXNhYwotKwotKyAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCi0rICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+Ci0rICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgotKyAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgotKyAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZScKLSsgICAgcG9zdHVuaW5zdGFsbF9jbWRzPSdkbGRsbD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGZpbGU7IGVjaG8gXCRkbG5hbWUnXCcnYH4KLSsgICAgICBkbHBhdGg9JGRpci9cJGRsZGxsfgotKyAgICAgICAkUk0gXCRkbHBhdGgnCi0rICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxpbmsuZXhlJwotICAgICA7OwotIAotICAgKikKLSsgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCi0gICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotICAgICA7OwotICAgZXNhYwotLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgotICAgc2hsaWJwYXRoX3Zhcj1QQVRICi0gICA7OwotQEAgLTk1OTQsNyArMTAyNDksNyBAQCBoYWlrdSopCi0gICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwotICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKLSAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLS0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9iZW9zL3N5c3RlbS9saWInCi0rICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKLSAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKLSAgIDs7Ci0gCi1AQCAtMTA0NTIsMTAgKzExMTA3LDEwIEBAIGVsc2UKLSAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCi0gICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLwotICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQotLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0raW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotICNlbmRpZgotIAotLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQotK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQotIGludCBtYWluICgpCi0gewotICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTA1NTgsMTAgKzExMjEzLDEwIEBAIGVsc2UKLSAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCi0gICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLwotICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQotLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0raW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotICNlbmRpZgotIAotLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQotK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQotIGludCBtYWluICgpCi0gewotICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTE5OTIsMTMgKzEyNjQ3LDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF91bnNldD0nYCRFQ0hPICIkbHRfdW5zZXQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X1NQMk5MPSdgJEVDSE8gIiRsdF9TUDJOTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfTkwyU1A9J2AkRUNITyAiJGx0X05MMlNQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9jdl90b19ob3N0X2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9jdl90b190b29sX2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSByZWxvYWRfZmxhZz0nYCRFQ0hPICIkcmVsb2FkX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHJlbG9hZF9jbWRzPSdgJEVDSE8gIiRyZWxvYWRfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gT0JKRFVNUD0nYCRFQ0hPICIkT0JKRFVNUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZGVwbGlic19jaGVja19tZXRob2Q9J2AkRUNITyAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBmaWxlX21hZ2ljX2NtZD0nYCRFQ0hPICIkZmlsZV9tYWdpY19jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2ZpbGVfbWFnaWNfZ2xvYj0nYCRFQ0hPICIkZmlsZV9tYWdpY19nbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSt3YW50X25vY2FzZWdsb2I9J2AkRUNITyAiJHdhbnRfbm9jYXNlZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rRExMVE9PTD0nYCRFQ0hPICIkRExMVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J2AkRUNITyAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBBUj0nYCRFQ0hPICIkQVIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIEFSX0ZMQUdTPSdgJEVDSE8gIiRBUl9GTEFHUyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rYXJjaGl2ZXJfbGlzdF9zcGVjPSdgJEVDSE8gIiRhcmNoaXZlcl9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIFNUUklQPSdgJEVDSE8gIiRTVFJJUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gUkFOTElCPSdgJEVDSE8gIiRSQU5MSUIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRvbGRfcG9zdGluc3RhbGxfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTIwMTMsMTQgKzEyNjc1LDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIHwgJFNFRCAiJGRlCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK25tX2ZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRubV9maWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfc3lzcm9vdD0nYCRFQ0hPICIkbHRfc3lzcm9vdCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gb2JqZGlyPSdgJEVDSE8gIiRvYmpkaXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIE1BR0lDX0NNRD0nYCRFQ0hPICIkTUFHSUNfQ01EIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotLWx0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfcGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbz0nYCRFQ0hPICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX28iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG5lZWRfbG9ja3M9J2AkRUNITyAiJG5lZWRfbG9ja3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK01BTklGRVNUX1RPT0w9J2AkRUNITyAiJE1BTklGRVNUX1RPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIERTWU1VVElMPSdgJEVDSE8gIiREU1lNVVRJTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTk1FRElUPSdgJEVDSE8gIiROTUVESVQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIExJUE89J2AkRUNITyAiJExJUE8iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTEyMDUzLDEyICsxMjcxOCwxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcQotIGhhcmRjb2RlX2F1dG9tYXRpYz0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBpbmhlcml0X3JwYXRoPSdgJEVDSE8gIiRpbmhlcml0X3JwYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsaW5rX2FsbF9kZXBsaWJzPSdgJEVDSE8gIiRsaW5rX2FsbF9kZXBsaWJzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLS1maXhfc3JjZmlsZV9wYXRoPSdgJEVDSE8gIiRmaXhfc3JjZmlsZV9wYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBhbHdheXNfZXhwb3J0X3N5bWJvbHM9J2AkRUNITyAiJGFsd2F5c19leHBvcnRfc3ltYm9scyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZXhwb3J0X3N5bWJvbHNfY21kcz0nYCRFQ0hPICIkZXhwb3J0X3N5bWJvbHNfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZXhjbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRleGNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGluY2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBwcmVsaW5rX2NtZHM9J2AkRUNITyAiJHByZWxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rcG9zdGxpbmtfY21kcz0nYCRFQ0hPICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0nYCRFQ0hPICIkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG5lZWRfbGliX3ByZWZpeD0nYCRFQ0hPICIkbmVlZF9saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xMjExMyw4ICsxMjc3OCwxMyBAQCByZWxvYWRfZmxhZyBcCi0gT0JKRFVNUCBcCi0gZGVwbGlic19jaGVja19tZXRob2QgXAotIGZpbGVfbWFnaWNfY21kIFwKLStmaWxlX21hZ2ljX2dsb2IgXAotK3dhbnRfbm9jYXNlZ2xvYiBcCi0rRExMVE9PTCBcCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQgXAotIEFSIFwKLSBBUl9GTEFHUyBcCi0rYXJjaGl2ZXJfbGlzdF9zcGVjIFwKLSBTVFJJUCBcCi0gUkFOTElCIFwKLSBDQyBcCi1AQCAtMTIxMjQsMTIgKzEyNzk0LDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIFwKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyBcCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCBcCi0rbm1fZmlsZV9saXN0X3NwZWMgXAotIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIFwKLS1sdF9wcm9nX2NvbXBpbGVyX3dsIFwKLSBsdF9wcm9nX2NvbXBpbGVyX3BpYyBcCi0rbHRfcHJvZ19jb21waWxlcl93bCBcCi0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWMgXAotIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIFwKLSBuZWVkX2xvY2tzIFwKLStNQU5JRkVTVF9UT09MIFwKLSBEU1lNVVRJTCBcCi0gTk1FRElUIFwKLSBMSVBPIFwKLUBAIC0xMjE0NSw3ICsxMjgxNyw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKLSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIFwKLSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIFwKLSBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIFwKLS1maXhfc3JjZmlsZV9wYXRoIFwKLSBleGNsdWRlX2V4cHN5bXMgXAotIGluY2x1ZGVfZXhwc3ltcyBcCi0gZmlsZV9saXN0X3NwZWMgXAotQEAgLTEyMTgxLDYgKzEyODUyLDcgQEAgbW9kdWxlX2NtZHMgXAotIG1vZHVsZV9leHBzeW1fY21kcyBcCi0gZXhwb3J0X3N5bWJvbHNfY21kcyBcCi0gcHJlbGlua19jbWRzIFwKLStwb3N0bGlua19jbWRzIFwKLSBwb3N0aW5zdGFsbF9jbWRzIFwKLSBwb3N0dW5pbnN0YWxsX2NtZHMgXAotIGZpbmlzaF9jbWRzIFwKLUBAIC0xMjc3MCw3ICsxMzQ0Miw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKLSAjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KLSAjCi0gIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKLS0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotKyMgICAgICAgICAgICAgICAgIEluYy4KLSAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgotICMKLSAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCi1AQCAtMTI4NzMsMTkgKzEzNTQ2LDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAotICMgdHVybiBuZXdsaW5lcyBpbnRvIHNwYWNlcy4KLSBOTDJTUD0kbHRfbHRfTkwyU1AKLSAKLSsjIGNvbnZlcnQgXCRidWlsZCBmaWxlIG5hbWVzIHRvIFwkaG9zdCBmb3JtYXQuCi0rdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAotKwotKyMgY29udmVydCBcJGJ1aWxkIGZpbGVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuCi0rdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAotKwotICMgQW4gb2JqZWN0IHN5bWJvbCBkdW1wZXIuCi0gT0JKRFVNUD0kbHRfT0JKRFVNUAotIAotICMgTWV0aG9kIHRvIGNoZWNrIHdoZXRoZXIgZGVwZW5kZW50IGxpYnJhcmllcyBhcmUgc2hhcmVkIG9iamVjdHMuCi0gZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2RlcGxpYnNfY2hlY2tfbWV0aG9kCi0gCi0tIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID09ICJmaWxlX21hZ2ljIi4KLSsjIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCi0gZmlsZV9tYWdpY19jbWQ9JGx0X2ZpbGVfbWFnaWNfY21kCi0gCi0rIyBIb3cgdG8gZmluZCBwb3RlbnRpYWwgZmlsZXMgd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KLStmaWxlX21hZ2ljX2dsb2I9JGx0X2ZpbGVfbWFnaWNfZ2xvYgotKwotKyMgRmluZCBwb3RlbnRpYWwgZmlsZXMgdXNpbmcgbm9jYXNlZ2xvYiB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgotK3dhbnRfbm9jYXNlZ2xvYj0kbHRfd2FudF9ub2Nhc2VnbG9iCi0rCi0rIyBETEwgY3JlYXRpb24gcHJvZ3JhbS4KLStETExUT09MPSRsdF9ETExUT09MCi0rCi0rIyBDb21tYW5kIHRvIGFzc29jaWF0ZSBzaGFyZWQgYW5kIGxpbmsgbGlicmFyaWVzLgotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAotKwotICMgVGhlIGFyY2hpdmVyLgotIEFSPSRsdF9BUgotKwotKyMgRmxhZ3MgdG8gY3JlYXRlIGFuIGFyY2hpdmUuCi0gQVJfRkxBR1M9JGx0X0FSX0ZMQUdTCi0gCi0rIyBIb3cgdG8gZmVlZCBhIGZpbGUgbGlzdGluZyB0byB0aGUgYXJjaGl2ZXIuCi0rYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9hcmNoaXZlcl9saXN0X3NwZWMKLSsKLSAjIEEgc3ltYm9sIHN0cmlwcGluZyBwcm9ncmFtLgotIFNUUklQPSRsdF9TVFJJUAotIAotQEAgLTEyOTE1LDYgKzEzNjExLDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzCi0gIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZC4KLSBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgKLSAKLSsjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcyBmb3IgXCROTS4KLStubV9maWxlX2xpc3Rfc3BlYz0kbHRfbm1fZmlsZV9saXN0X3NwZWMKLSsKLSsjIFRoZSByb290IHdoZXJlIHRvIHNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyxhbmQgaW4gd2hpY2ggb3VyIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkLgotK2x0X3N5c3Jvb3Q9JGx0X3N5c3Jvb3QKLSsKLSAjIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0ZW1wb3JhcnkgbGlidG9vbCBmaWxlcy4KLSBvYmpkaXI9JG9iamRpcgotIAotQEAgLTEyOTI0LDYgKzEzNjI2LDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKLSAjIE11c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uPwotIG5lZWRfbG9ja3M9JGx0X25lZWRfbG9ja3MKLSAKLSsjIE1hbmlmZXN0IHRvb2wuCi0rTUFOSUZFU1RfVE9PTD0kbHRfTUFOSUZFU1RfVE9PTAotKwotICMgVG9vbCB0byBtYW5pcHVsYXRlIGFyY2hpdmVkIERXQVJGIGRlYnVnIHN5bWJvbCBmaWxlcyBvbiBNYWMgT1MgWC4KLSBEU1lNVVRJTD0kbHRfRFNZTVVUSUwKLSAKLUBAIC0xMzAzOCwxMiArMTM3NDMsMTIgQEAgd2l0aF9nY2M9JEdDQwotICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KLSBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnCi0gCi0tIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgotLXdsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCi0tCi0gIyBBZGRpdGlvbmFsIGNvbXBpbGVyIGZsYWdzIGZvciBidWlsZGluZyBsaWJyYXJ5IG9iamVjdHMuCi0gcGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfcGljCi0gCi0rIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgotK3dsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCi0rCi0gIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgotIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljCi0gCi1AQCAtMTMxMzAsOSArMTM4MzUsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCi0gIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCi0gbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlicwotIAotLSMgRml4IHRoZSBzaGVsbCB2YXJpYWJsZSBcJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlci4KLS1maXhfc3JjZmlsZV9wYXRoPSRsdF9maXhfc3JjZmlsZV9wYXRoCi0tCi0gIyBTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWQuCi0gYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSRhbHdheXNfZXhwb3J0X3N5bWJvbHMKLSAKLUBAIC0xMzE0OCw2ICsxMzg1MCw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCi0gIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KLSBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kcwotIAotKyMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBmaW5pc2hpbmcgbGlua2luZyBwcm9ncmFtcy4KLStwb3N0bGlua19jbWRzPSRsdF9wb3N0bGlua19jbWRzCi0rCi0gIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCi0gZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjCi0gCi1AQCAtMTMxODAsMjEwICsxMzg4NSwxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCi0gICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCi0gICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQotICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KLS0gIHNlZCAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS9xJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0tICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0tCi0tICBjYXNlICR4c2lfc2hlbGwgaW4KLS0gIHllcykKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0tIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tZnVuY19kaXJuYW1lICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0tICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLS1mdW5jX2Jhc2VuYW1lICgpCi0tewotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgotLX0KLS0KLS0jIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgotLSMgY2FsbDoKLS0jICAgZGlybmFtZTogIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LAotLSMgICAgICAgICAgICAgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LCBvdGhlcndpc2Ugc2V0IHJlc3VsdAotLSMgICAgICAgICAgICAgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLSMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgotLSMgICBiYXNlbmFtZTogQ29tcHV0ZSBmaWxlbmFtZSBvZiBGSUxFLgotLSMgICAgICAgICAgICAgdmFsdWUgcmV0dW5lZCBpbiAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotLSMgSW1wbGVtZW50YXRpb24gbXVzdCBiZSBrZXB0IHN5bmNocm9uaXplZCB3aXRoIGZ1bmNfZGlybmFtZQotLSMgYW5kIGZ1bmNfYmFzZW5hbWUuIEZvciBlZmZpY2llbmN5LCB3ZSBkbyBub3QgZGVsZWdhdGUgdG8KLS0jIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KLS1mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0tICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLS0gIGVzYWMKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKLS19Ci0tCi0tIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLS0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0tIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0tIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotLWZ1bmNfc3RyaXBuYW1lICgpCi0tewotLSAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQotLSAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9Ci0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifQotLX0KLS0KLS0jIGZ1bmNfb3B0X3NwbGl0Ci0tZnVuY19vcHRfc3BsaXQgKCkKLS17Ci0tICBmdW5jX29wdF9zcGxpdF9vcHQ9JHsxJSU9Kn0KLS0gIGZ1bmNfb3B0X3NwbGl0X2FyZz0kezEjKj19Ci0tfQotLQotLSMgZnVuY19sbzJvIG9iamVjdAotLWZ1bmNfbG8ybyAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OwotLSAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLS1mdW5jX3hmb3JtICgpCi0tewotLSAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sbwotLX0KLS0KLS0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCi0tZnVuY19hcml0aCAoKQotLXsKLS0gIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKQotLX0KLS0KLS0jIGZ1bmNfbGVuIHN0cmluZwotLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLS1mdW5jX2xlbiAoKQotLXsKLS0gIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfQotLX0KLS0KLS1fTFRfRU9GCi0tICAgIDs7Ci0tICAqKSAjIEJvdXJuZSBjb21wYXRpYmxlIGZ1bmN0aW9ucy4KLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0tIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tZnVuY19kaXJuYW1lICgpCi0tewotLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KLS0gIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRkaXJuYW1lImAKLS0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCi0tICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCi0tICBlbHNlCi0tICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKLS0gIGZpCi0tfQotLQotLSMgZnVuY19iYXNlbmFtZSBmaWxlCi0tZnVuY19iYXNlbmFtZSAoKQotLXsKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkYmFzZW5hbWUiYAotLX0KLS0KLS0KLS0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQotLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0tIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKLS0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKLS0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi0tIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQotLWZ1bmNfc3RyaXBuYW1lICgpCi0tewotLSAgY2FzZSAkezJ9IGluCi0tICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7Ci0tICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBzZWQgc2NyaXB0czoKLS1teV9zZWRfbG9uZ19vcHQ9JzFzL15cKC1bXj1dKlwpPS4qL1wxLztxJwotLW15X3NlZF9sb25nX2FyZz0nMXMvXi1bXj1dKj0vLycKLS0KLS0jIGZ1bmNfb3B0X3NwbGl0Ci0tZnVuY19vcHRfc3BsaXQgKCkKLS17Ci0tICBmdW5jX29wdF9zcGxpdF9vcHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19vcHQiYAotLSAgZnVuY19vcHRfc3BsaXRfYXJnPWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKLS19Ci0tCi0tIyBmdW5jX2xvMm8gb2JqZWN0Ci0tZnVuY19sbzJvICgpCi0tewotLSAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGxvMm8iYAotLX0KLS0KLS0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQotLWZ1bmNfeGZvcm0gKCkKLS17Ci0tICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAncy9cLlteLl0qJC8ubG8vJ2AKLS19Ci0tCi0tIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotLWZ1bmNfYXJpdGggKCkKLS17Ci0tICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJEAiYAotLX0KLS0KLS0jIGZ1bmNfbGVuIHN0cmluZwotLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLS1mdW5jX2xlbiAoKQotLXsKLS0gIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJDEiIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKLS19Ci0tCi0tX0xUX0VPRgotLWVzYWMKLS0KLS1jYXNlICRsdF9zaGVsbF9hcHBlbmQgaW4KLS0gIHllcykKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotLWZ1bmNfYXBwZW5kICgpCi0tewotLSAgZXZhbCAiJDErPVwkMiIKLS19Ci0tX0xUX0VPRgotLSAgICA7OwotLSAgKikKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotLWZ1bmNfYXBwZW5kICgpCi0tewotLSAgZXZhbCAiJDE9XCQkMVwkMiIKLS19Ci0tCi0tX0xUX0VPRgotLSAgICA7OwotLSAgZXNhYwotLQotLQotLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotLQotLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAotKyAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotKyAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLSsKLSsgIGlmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KLSsgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWUgL2NcCi0rZnVuY19kaXJuYW1lICgpXAotK3tcCi0rXCAgICBjYXNlICR7MX0gaW5cCi0rXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAotK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAotK1wgICAgZXNhY1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfYmFzZW5hbWUgL2NcCi0rZnVuY19iYXNlbmFtZSAoKVwKLSt7XAotK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIC9jXAotK2Z1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKClcCi0re1wKLStcICAgIGNhc2UgJHsxfSBpblwKLStcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCi0rXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCi0rXCAgICBlc2FjXAotK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3RyaXBuYW1lICgpJC8sL159ICMgZnVuY19zdHJpcG5hbWUgL2NcCi0rZnVuY19zdHJpcG5hbWUgKClcCi0re1wKLStcICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmVcCi0rXCAgICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuXAotK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M31cCi0rXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifVwKLStcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3N0cmlwbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfbG9uZ19vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X2xvbmdfb3B0IC9jXAotK2Z1bmNfc3BsaXRfbG9uZ19vcHQgKClcCi0re1wKLStcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT0kezElJT0qfVwKLStcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPSR7MSMqPX1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfbG9uZ19vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3NwbGl0X3Nob3J0X29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IC9jXAotK2Z1bmNfc3BsaXRfc2hvcnRfb3B0ICgpXAotK3tcCi0rXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9JHsxIz8/fVwKLStcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9JHsxJSIkZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIn1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19sbzJvICgpJC8sL159ICMgZnVuY19sbzJvIC9jXAotK2Z1bmNfbG8ybyAoKVwKLSt7XAotK1wgICAgY2FzZSAkezF9IGluXAotK1wgICAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7O1wKLStcICAgICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7XAotK1wgICAgZXNhY1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sbzJvIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY194Zm9ybSAoKSQvLC9efSAjIGZ1bmNfeGZvcm0gL2NcCi0rZnVuY194Zm9ybSAoKVwKLSt7XAotKyAgICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3hmb3JtIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19hcml0aCAoKSQvLC9efSAjIGZ1bmNfYXJpdGggL2NcCi0rZnVuY19hcml0aCAoKVwKLSt7XAotKyAgICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSlcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXJpdGggaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2xlbiAoKSQvLC9efSAjIGZ1bmNfbGVuIC9jXAotK2Z1bmNfbGVuICgpXAotK3tcCi0rICAgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sZW4gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLStmaQotKwotK2lmIHRlc3QgeCIkbHRfc2hlbGxfYXBwZW5kIiA9IHh5ZXM7IHRoZW4KLSsgIHNlZCAtZSAnL15mdW5jX2FwcGVuZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kIC9jXAotK2Z1bmNfYXBwZW5kICgpXAotK3tcCi0rICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19hcHBlbmRfcXVvdGVkICgpJC8sL159ICMgZnVuY19hcHBlbmRfcXVvdGVkIC9jXAotK2Z1bmNfYXBwZW5kX3F1b3RlZCAoKVwKLSt7XAotK1wgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSJcCi0rXCAgICBldmFsICIkezF9Kz1cXFxcIFxcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmRfcXVvdGVkIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgd2hlcmUgcG9zc2libGUgYnkgZGlyZWN0IHVzZSBvZiAnKz0nCi0rICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxKz0iJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKLSsgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSsgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rZWxzZQotKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIGV2ZW4gd2hlbiAnKz0nIGlzIG5vdCBhdmFpbGFibGUKLSsgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDE9IiRcMSVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCi0rICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotK2ZpCi0rCi0raWYgdGVzdCB4IiRfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsIiA9IHgiOiI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiYyO30KLStmaQotKwotKwotKyAgIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKLSAgICAgKHJtIC1mICIkb2ZpbGUiICYmIGNwICIkY2ZnZmlsZSIgIiRvZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlIikKLSAgIGNobW9kICt4ICIkb2ZpbGUiCi0gCi0tLSAKLTIuMTIuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDgtQWRkLXRoZS1hcm12NWUtYXJjaGl0ZWN0dXJlLXRvLWJpbnV0aWxzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA4LUFkZC10aGUtYXJtdjVlLWFyY2hpdGVjdHVyZS10by1iaW51dGlscy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDQ5MjI1YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDgtQWRkLXRoZS1hcm12NWUtYXJjaGl0ZWN0dXJlLXRvLWJpbnV0aWxzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotRnJvbSA5YzMxM2U4YTE1YTdlN2M1YzBmMjkwNmUzMjE4ZWQyMTE1NjNhYzJhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMTozNzoxMCArMDAwMAotU3ViamVjdDogW1BBVENIIDA4LzE1XSBBZGQgdGhlIGFybXY1ZSBhcmNoaXRlY3R1cmUgdG8gYmludXRpbHMKLQotQmludXRpbHMgaGFzIGEgY29tbWVudCB0aGF0IGluZGljYXRlcyBpdCBpcyBzdXBwb3NlZCB0byBtYXRjaCBnY2MgZm9yCi1hbGwgb2YgdGhlIHN1cHBvcnQgIi1tYXJjaD0iIHNldHRpbmdzLCBidXQgaXQgd2FzIGxhY2tpbmcgdGhlIGFybXY1ZSBzZXR0aW5nLgotVGhpcyB3YXMgYSBzaW1wbGUgd2F5IHRvIGFkZCBpdCwgYXMgdGh1bWIgaW5zdHJ1Y3Rpb25zIHNob3VsZG4ndCBiZSBnZW5lcmF0ZWQKLWJ5IHRoZSBjb21waWxlciBhbnl3YXkuCi0KLVVwc3RyZWFtLVN0YXR1czogRGVuaWVkCi1VcHN0cmVhbSBtYWludGFpbmVyIGluZGljYXRlZCB0aGF0IHdlIHNob3VsZCBub3QgYmUgdXNpbmcgYXJtdjVlLCBldmVuCi10aG91Z2ggaXQgaXMgYSBsZWdhbCBhcmNoaWN0dXJlIGRlZmluZWQgYnkgb3VyIGdjYy4KLQotU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGdhcy9jb25maWcvdGMtYXJtLmMgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL2dhcy9jb25maWcvdGMtYXJtLmMgYi9nYXMvY29uZmlnL3RjLWFybS5jCi1pbmRleCA2MGJkYTUxMDcwLi5lYjZkMGFmZDZlIDEwMDY0NAotLS0tIGEvZ2FzL2NvbmZpZy90Yy1hcm0uYwotKysrIGIvZ2FzL2NvbmZpZy90Yy1hcm0uYwotQEAgLTI1NjMzLDYgKzI1NjMzLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhcm1fYXJjaF9vcHRpb25fdGFibGUgYXJtX2FyY2hzW10gPQotICAgQVJNX0FSQ0hfT1BUICgiYXJtdjR0IiwJQVJNX0FSQ0hfVjRULAkgRlBVX0FSQ0hfRlBBKSwKLSAgIEFSTV9BUkNIX09QVCAoImFybXY0dHhtIiwJQVJNX0FSQ0hfVjRUeE0sCSBGUFVfQVJDSF9GUEEpLAotICAgQVJNX0FSQ0hfT1BUICgiYXJtdjUiLAlBUk1fQVJDSF9WNSwJIEZQVV9BUkNIX1ZGUCksCi0rICBBUk1fQVJDSF9PUFQgKCJhcm12NWUiLAlBUk1fQVJDSF9WNVRFLAkgRlBVX0FSQ0hfVkZQKSwKLSAgIEFSTV9BUkNIX09QVCAoImFybXY1dCIsCUFSTV9BUkNIX1Y1VCwJIEZQVV9BUkNIX1ZGUCksCi0gICBBUk1fQVJDSF9PUFQgKCJhcm12NXR4bSIsCUFSTV9BUkNIX1Y1VHhNLAkgRlBVX0FSQ0hfVkZQKSwKLSAgIEFSTV9BUkNIX09QVCAoImFybXY1dGUiLAlBUk1fQVJDSF9WNVRFLAkgRlBVX0FSQ0hfVkZQKSwKLS0tIAotMi4xMi4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwOC1kb24tdC1sZXQtdGhlLWRpc3Ryby1jb21waWxlci1wb2ludC10by10aGUtd3JvbmctaW5zLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA4LWRvbi10LWxldC10aGUtZGlzdHJvLWNvbXBpbGVyLXBvaW50LXRvLXRoZS13cm9uZy1pbnMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzBhMjJiNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwOC1kb24tdC1sZXQtdGhlLWRpc3Ryby1jb21waWxlci1wb2ludC10by10aGUtd3JvbmctaW5zLnBhdGNoCkBAIC0wLDAgKzEsMzUgQEAKK0Zyb20gMzMxNDQzYTg3YTMxZWM1MDRlNTY1MmZjMDk5ZDkxMjlhOWE0ZGViOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6Mzk6MDEgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAwOC8xNV0gZG9uJ3QgbGV0IHRoZSBkaXN0cm8gY29tcGlsZXIgcG9pbnQgdG8gdGhlIHdyb25nCisgaW5zdGFsbGF0aW9uIGxvY2F0aW9uCisKK1RoYW5rcyB0byBSUCBmb3IgaGVscGluZyBmaW5kIHRoZSBzb3VyY2UgY29kZSBjYXVzaW5nIHRoZSBpc3N1ZS4KKworMjAxMC8wOC8xMworTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGxpYmliZXJ0eS9NYWtlZmlsZS5pbiB8IDMgKystCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbGliaWJlcnR5L01ha2VmaWxlLmluIGIvbGliaWJlcnR5L01ha2VmaWxlLmluCitpbmRleCAyNWNmYTI5YWQ1Li5jZTY3YTcxMGUzIDEwMDY0NAorLS0tIGEvbGliaWJlcnR5L01ha2VmaWxlLmluCisrKysgYi9saWJpYmVydHkvTWFrZWZpbGUuaW4KK0BAIC0zNjQsNyArMzY0LDggQEAgaW5zdGFsbC1zdHJpcDogaW5zdGFsbAorICMgbXVsdGlsaWItc3BlY2lmaWMgZmxhZ3MsIGl0J3Mgb3ZlcnJpZGRlbiBieSBGTEFHU19UT19QQVNTIGZyb20gdGhlCisgIyBkZWZhdWx0IG11bHRpbGliLCBzbyB3ZSBoYXZlIHRvIHRha2UgQ0ZMQUdTIGludG8gYWNjb3VudCBhcyB3ZWxsLAorICMgc2luY2UgaXQgd2lsbCBiZSBwYXNzZWQgdGhlIG11bHRpbGliIGZsYWdzLgorLU1VTFRJT1NESVIgPSBgJChDQykgJChDRkxBR1MpIC1wcmludC1tdWx0aS1vcy1kaXJlY3RvcnlgCisrI01VTFRJT1NESVIgPSBgJChDQykgJChDRkxBR1MpIC1wcmludC1tdWx0aS1vcy1kaXJlY3RvcnlgCisrTVVMVElPU0RJUiA9ICIiCisgaW5zdGFsbF90b19saWJkaXI6IGFsbAorIAlpZiB0ZXN0IC1uICIke3RhcmdldF9oZWFkZXJfZGlyfSI7IHRoZW4gXAorIAkJJHtta2luc3RhbGxkaXJzfSAkKERFU1RESVIpJChsaWJkaXIpLyQoTVVMVElPU0RJUik7IFwKKy0tIAorMi4xNC4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwOS1kb24tdC1sZXQtdGhlLWRpc3Ryby1jb21waWxlci1wb2ludC10by10aGUtd3JvbmctaW5zLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA5LWRvbi10LWxldC10aGUtZGlzdHJvLWNvbXBpbGVyLXBvaW50LXRvLXRoZS13cm9uZy1pbnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjNDA1OTMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA5LWRvbi10LWxldC10aGUtZGlzdHJvLWNvbXBpbGVyLXBvaW50LXRvLXRoZS13cm9uZy1pbnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1Gcm9tIDJiZTliNDRhNGEzMDhlM2VhNDJhMDI3YzRjMzIxMTE3MGYxMGM5YzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAxOjM5OjAxICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDkvMTVdIGRvbid0IGxldCB0aGUgZGlzdHJvIGNvbXBpbGVyIHBvaW50IHRvIHRoZSB3cm9uZwotIGluc3RhbGxhdGlvbiBsb2NhdGlvbgotCi1UaGFua3MgdG8gUlAgZm9yIGhlbHBpbmcgZmluZCB0aGUgc291cmNlIGNvZGUgY2F1c2luZyB0aGUgaXNzdWUuCi0KLTIwMTAvMDgvMTMKLU5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBsaWJpYmVydHkvTWFrZWZpbGUuaW4gfCAzICsrLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2xpYmliZXJ0eS9NYWtlZmlsZS5pbiBiL2xpYmliZXJ0eS9NYWtlZmlsZS5pbgotaW5kZXggMGZmOWU0NWU0NS4uNDJjMzI2NDJiMiAxMDA2NDQKLS0tLSBhL2xpYmliZXJ0eS9NYWtlZmlsZS5pbgotKysrIGIvbGliaWJlcnR5L01ha2VmaWxlLmluCi1AQCAtMzY2LDcgKzM2Niw4IEBAIGluc3RhbGwtc3RyaXA6IGluc3RhbGwKLSAjIG11bHRpbGliLXNwZWNpZmljIGZsYWdzLCBpdCdzIG92ZXJyaWRkZW4gYnkgRkxBR1NfVE9fUEFTUyBmcm9tIHRoZQotICMgZGVmYXVsdCBtdWx0aWxpYiwgc28gd2UgaGF2ZSB0byB0YWtlIENGTEFHUyBpbnRvIGFjY291bnQgYXMgd2VsbCwKLSAjIHNpbmNlIGl0IHdpbGwgYmUgcGFzc2VkIHRoZSBtdWx0aWxpYiBmbGFncy4KLS1NVUxUSU9TRElSID0gYCQoQ0MpICQoQ0ZMQUdTKSAtcHJpbnQtbXVsdGktb3MtZGlyZWN0b3J5YAotKyNNVUxUSU9TRElSID0gYCQoQ0MpICQoQ0ZMQUdTKSAtcHJpbnQtbXVsdGktb3MtZGlyZWN0b3J5YAotK01VTFRJT1NESVIgPSAiIgotIGluc3RhbGxfdG9fbGliZGlyOiBhbGwKLSAJaWYgdGVzdCAtbiAiJHt0YXJnZXRfaGVhZGVyX2Rpcn0iOyB0aGVuIFwKLSAJCSR7bWtpbnN0YWxsZGlyc30gJChERVNURElSKSQobGliZGlyKS8kKE1VTFRJT1NESVIpOyBcCi0tLSAKLTIuMTIuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDktd2Fybi1mb3ItdXNlcy1vZi1zeXN0ZW0tZGlyZWN0b3JpZXMtd2hlbi1jcm9zcy1saW5raS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwOS13YXJuLWZvci11c2VzLW9mLXN5c3RlbS1kaXJlY3Rvcmllcy13aGVuLWNyb3NzLWxpbmtpLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwZTI1NzgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDktd2Fybi1mb3ItdXNlcy1vZi1zeXN0ZW0tZGlyZWN0b3JpZXMtd2hlbi1jcm9zcy1saW5raS5wYXRjaApAQCAtMCwwICsxLDI3MyBAQAorRnJvbSAwYTRhZmRjZjA3MDBlZmQ0NTk2MzU2OGUyZDAwNDkxMjdjZGY0NDM0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMTUgSmFuIDIwMTYgMDY6MzE6MDkgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAwOS8xNV0gd2FybiBmb3IgdXNlcyBvZiBzeXN0ZW0gZGlyZWN0b3JpZXMgd2hlbiBjcm9zcyBsaW5raW5nCisKKzIwMDgtMDctMDIgIEpvc2VwaCBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgorCisgICAgbGQvCisgICAgKiBsZC5oIChhcmdzX3R5cGUpOiBBZGQgZXJyb3JfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcy4KKyAgICAqIGxkLnRleGluZm8gKC0tZXJyb3ItcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcyk6IERvY3VtZW50LgorICAgICogbGRmaWxlLmMgKGxkZmlsZV9hZGRfbGlicmFyeV9wYXRoKTogQ2hlY2sKKyAgICBjb21tYW5kX2xpbmUuZXJyb3JfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcy4KKyAgICAqIGxkbWFpbi5jIChtYWluKTogSW5pdGlhbGl6ZQorICAgIGNvbW1hbmRfbGluZS5lcnJvcl9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzLgorICAgICogbGV4c3VwLmMgKGVudW0gb3B0aW9uX3ZhbHVlcyk6IEFkZAorICAgIE9QVElPTl9FUlJPUl9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTLgorICAgIChsZF9vcHRpb25zKTogQWRkIC0tZXJyb3ItcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy4KKyAgICAocGFyc2VfYXJncyk6IEhhbmRsZSBuZXcgb3B0aW9uLgorCisyMDA3LTA2LTEzICBKb3NlcGggTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KKworICAgIGxkLworICAgICogY29uZmlnLmluOiBSZWdlbmVyYXRlLgorICAgICogbGQuaCAoYXJnc190eXBlKTogQWRkIHBvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMuCisgICAgKiBsZC50ZXhpbmZvICgtLW5vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMpOiBEb2N1bWVudC4KKyAgICAqIGxkZmlsZS5jIChsZGZpbGVfYWRkX2xpYnJhcnlfcGF0aCk6IENoZWNrCisgICAgY29tbWFuZF9saW5lLnBvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMuCisgICAgKiBsZG1haW4uYyAobWFpbik6IEluaXRpYWxpemUKKyAgICBjb21tYW5kX2xpbmUucG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcy4KKyAgICAqIGxleHN1cC5jIChlbnVtIG9wdGlvbl92YWx1ZXMpOiBBZGQKKyAgICBPUFRJT05fTk9fUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUy4KKyAgICAobGRfb3B0aW9ucyk6IEFkZCAtLW5vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMuCisgICAgKHBhcnNlX2FyZ3MpOiBIYW5kbGUgbmV3IG9wdGlvbi4KKworMjAwNy0wNC0yMCAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CisKKyAgICBNZXJnZSBmcm9tIFNvdXJjZXJ5IEcrKyBiaW51dGlscyAyLjE3OgorCisgICAgMjAwNy0wMy0yMCAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CisgICAgQmFzZWQgb24gcGF0Y2ggYnkgTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPi4KKyAgICBsZC8KKyAgICAqIGNvbmZpZ3VyZS5pbiAoLS1lbmFibGUtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcyk6IE5ldyBvcHRpb24uCisgICAgKiBjb25maWd1cmUsIGNvbmZpZy5pbjogUmVnZW5lcmF0ZS4KKyAgICAqIGxkZmlsZS5jIChsZGZpbGVfYWRkX2xpYnJhcnlfcGF0aCk6IElmCisgICAgRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMgZGVmaW5lZCwgd2FybiBmb3IgdXNlIG9mIC9saWIsCisgICAgL3Vzci9saWIsIC91c3IvbG9jYWwvbGliIG9yIC91c3IvWDExUjYvbGliLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbGQvY29uZmlnLmluICAgIHwgIDMgKysrCisgbGQvY29uZmlndXJlICAgIHwgMTYgKysrKysrKysrKysrKysrKworIGxkL2NvbmZpZ3VyZS5hYyB8IDEwICsrKysrKysrKysKKyBsZC9sZC5oICAgICAgICAgfCAgOCArKysrKysrKworIGxkL2xkLnRleGluZm8gICB8IDEyICsrKysrKysrKysrKworIGxkL2xkZmlsZS5jICAgICB8IDE3ICsrKysrKysrKysrKysrKysrCisgbGQvbGRsZXguaCAgICAgIHwgIDIgKysKKyBsZC9sZG1haW4uYyAgICAgfCAgMiArKworIGxkL2xleHN1cC5jICAgICB8IDE2ICsrKysrKysrKysrKysrKysKKyA5IGZpbGVzIGNoYW5nZWQsIDg2IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2xkL2NvbmZpZy5pbiBiL2xkL2NvbmZpZy5pbgoraW5kZXggYTg0Njc0M2RhNi4uZGYzY2Q1ZmI2MCAxMDA2NDQKKy0tLSBhL2xkL2NvbmZpZy5pbgorKysrIGIvbGQvY29uZmlnLmluCitAQCAtMjcsNiArMjcsOSBAQAorICAgIGxhbmd1YWdlIGlzIHJlcXVlc3RlZC4gKi8KKyAjdW5kZWYgRU5BQkxFX05MUworIAorKy8qIERlZmluZSB0byB3YXJuIGZvciB1c2Ugb2YgbmF0aXZlIHN5c3RlbSBsaWJyYXJ5IGRpcmVjdG9yaWVzICovCisrI3VuZGVmIEVOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTCisrCisgLyogQWRkaXRpb25hbCBleHRlbnNpb24gYSBzaGFyZWQgb2JqZWN0IG1pZ2h0IGhhdmUuICovCisgI3VuZGVmIEVYVFJBX1NITElCX0VYVEVOU0lPTgorIAorZGlmZiAtLWdpdCBhL2xkL2NvbmZpZ3VyZSBiL2xkL2NvbmZpZ3VyZQoraW5kZXggNGU3MTUxMWJkMS4uNzFjNmFkMWZkMSAxMDA3NTUKKy0tLSBhL2xkL2NvbmZpZ3VyZQorKysrIGIvbGQvY29uZmlndXJlCitAQCAtNzg5LDYgKzc4OSw3IEBAIHdpdGhfbGliX3BhdGgKKyBlbmFibGVfdGFyZ2V0cworIGVuYWJsZV82NF9iaXRfYmZkCisgd2l0aF9zeXNyb290CisrZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMKKyBlbmFibGVfZ29sZAorIGVuYWJsZV9nb3QKKyBlbmFibGVfY29tcHJlc3NlZF9kZWJ1Z19zZWN0aW9ucworQEAgLTE0NDgsNiArMTQ0OSw4IEBAIE9wdGlvbmFsIEZlYXR1cmVzOgorICAgLS1kaXNhYmxlLWxhcmdlZmlsZSAgICAgb21pdCBzdXBwb3J0IGZvciBsYXJnZSBmaWxlcworICAgLS1lbmFibGUtdGFyZ2V0cyAgICAgICAgYWx0ZXJuYXRpdmUgdGFyZ2V0IGNvbmZpZ3VyYXRpb25zCisgICAtLWVuYWJsZS02NC1iaXQtYmZkICAgICA2NC1iaXQgc3VwcG9ydCAob24gaG9zdHMgd2l0aCBuYXJyb3dlciB3b3JkIHNpemVzKQorKyAgLS1lbmFibGUtcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcworKyAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybiBmb3IgdXNlIG9mIG5hdGl2ZSBzeXN0ZW0gbGlicmFyeSBkaXJlY3RvcmllcworICAgLS1lbmFibGUtZ29sZFs9QVJHXSAgICAgYnVpbGQgZ29sZCBbQVJHPXtkZWZhdWx0LHllcyxub31dCisgICAtLWVuYWJsZS1nb3Q9PHR5cGU+ICAgICBHT1QgaGFuZGxpbmcgc2NoZW1lICh0YXJnZXQsIHNpbmdsZSwgbmVnYXRpdmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aWdvdCkKK0BAIC0xNjMxNSw2ICsxNjMxOCwxOSBAQCBmaQorIAorIAorIAorKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzIHdhcyBnaXZlbi4KKytpZiB0ZXN0ICIke2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzK3NldH0iID0gc2V0OyB0aGVuIDoKKysgIGVuYWJsZXZhbD0kZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXM7CisrZWxzZQorKyAgZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXM9bm8KKytmaQorKworK2lmIHRlc3QgIngke2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzfSIgPSAieHllcyI7IHRoZW4KKysKKyskYXNfZWNobyAiI2RlZmluZSBFTkFCTEVfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUyAxIiA+PmNvbmZkZWZzLmgKKysKKytmaQorKworICMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1nb2xkIHdhcyBnaXZlbi4KKyBpZiB0ZXN0ICIke2VuYWJsZV9nb2xkK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgIGVuYWJsZXZhbD0kZW5hYmxlX2dvbGQ7IGNhc2UgIiR7ZW5hYmxldmFsfSIgaW4KK2RpZmYgLS1naXQgYS9sZC9jb25maWd1cmUuYWMgYi9sZC9jb25maWd1cmUuYWMKK2luZGV4IDAwMDgwZjg1ZmQuLjNhYTk4ZTM3ZmIgMTAwNjQ0CistLS0gYS9sZC9jb25maWd1cmUuYWMKKysrKyBiL2xkL2NvbmZpZ3VyZS5hYworQEAgLTk1LDYgKzk1LDE2IEBAIEFDX1NVQlNUKHVzZV9zeXNyb290KQorIEFDX1NVQlNUKFRBUkdFVF9TWVNURU1fUk9PVCkKKyBBQ19TVUJTVChUQVJHRVRfU1lTVEVNX1JPT1RfREVGSU5FKQorIAorK0FDX0FSR19FTkFCTEUoW3BvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXNdLAorKyAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzXSwKKysgICAgICAgICAgICAgICAgW3dhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGxpYnJhcnkgZGlyZWN0b3JpZXNdKSwsCisrICAgICAgICAgW2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzPW5vXSkKKytpZiB0ZXN0ICJ4JHtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllc30iID0gInh5ZXMiOyB0aGVuCisrICBBQ19ERUZJTkUoW0VOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTXSwKKysgICAgICAgWzFdLAorKyAgICAgICBbRGVmaW5lIHRvIHdhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGxpYnJhcnkgZGlyZWN0b3JpZXNdKQorK2ZpCisrCisgZG5sIFVzZSAtLWVuYWJsZS1nb2xkIHRvIGRlY2lkZSBpZiB0aGlzIGxpbmtlciBzaG91bGQgYmUgdGhlIGRlZmF1bHQuCisgZG5sICJpbnN0YWxsX2FzX2RlZmF1bHQiIGlzIHNldCB0byBmYWxzZSBpZiBnb2xkIGlzIHRoZSBkZWZhdWx0IGxpbmtlci4KKyBkbmwgImluc3RhbGxlZF9saW5rZXIiIGlzIHRoZSBpbnN0YWxsZWQgQkZEIGxpbmtlciBuYW1lLgorZGlmZiAtLWdpdCBhL2xkL2xkLmggYi9sZC9sZC5oCitpbmRleCBjNmZhMTI0N2YwLi4wMWMzNzM0OThmIDEwMDY0NAorLS0tIGEvbGQvbGQuaAorKysrIGIvbGQvbGQuaAorQEAgLTE3NCw2ICsxNzQsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QKKyAgICAgIGluIHRoZSBsaW5rZXIgc2NyaXB0LiAgKi8KKyAgIGJmZF9ib29sZWFuIGZvcmNlX2dyb3VwX2FsbG9jYXRpb247CisgCisrICAvKiBJZiBUUlVFICh0aGUgZGVmYXVsdCkgd2FybiBmb3IgdXNlcyBvZiBzeXN0ZW0gZGlyZWN0b3JpZXMgd2hlbgorKyAgICAgY3Jvc3MgbGlua2luZy4gICovCisrICBiZmRfYm9vbGVhbiBwb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzOworKworKyAgLyogSWYgVFJVRSAoZGVmYXVsdCBGQUxTRSkgZ2l2ZSBhbiBlcnJvciBmb3IgdXNlcyBvZiBzeXN0ZW0KKysgICAgIGRpcmVjdG9yaWVzIHdoZW4gY3Jvc3MgbGlua2luZyBpbnN0ZWFkIG9mIGEgd2FybmluZy4gICovCisrICBiZmRfYm9vbGVhbiBlcnJvcl9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzOworKworICAgLyogQmlnIG9yIGxpdHRsZSBlbmRpYW4gYXMgc2V0IG9uIGNvbW1hbmQgbGluZS4gICovCisgICBlbnVtIGVuZGlhbl9lbnVtIGVuZGlhbjsKKyAKK2RpZmYgLS1naXQgYS9sZC9sZC50ZXhpbmZvIGIvbGQvbGQudGV4aW5mbworaW5kZXggZWJlN2U3YjdiZC4uMzNhYTJjNjJmYSAxMDA2NDQKKy0tLSBhL2xkL2xkLnRleGluZm8KKysrKyBiL2xkL2xkLnRleGluZm8KK0BAIC0yNDgwLDYgKzI0ODAsMTggQEAgc3RyaW5nIGlkZW50aWZ5aW5nIHRoZSBvcmlnaW5hbCBsaW5rZWQgZmlsZSBkb2VzIG5vdCBjaGFuZ2UuCisgCisgUGFzc2luZyBAY29kZXtub25lfSBmb3IgQHZhcntzdHlsZX0gZGlzYWJsZXMgdGhlIHNldHRpbmcgZnJvbSBhbnkKKyBAY29kZXstLWJ1aWxkLWlkfSBvcHRpb25zIGVhcmxpZXIgb24gdGhlIGNvbW1hbmQgbGluZS4KKysKKytAa2luZGV4IC0tbm8tcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcworK0BpdGVtIC0tbm8tcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcworK0RvIG5vdCB3YXJuIGZvciBAb3B0aW9uey1MfSBvcHRpb25zIHVzaW5nIHN5c3RlbSBkaXJlY3RvcmllcyBzdWNoIGFzCisrQGZpbGV7L3Vzci9saWJ9IHdoZW4gY3Jvc3MgbGlua2luZy4gIFRoaXMgb3B0aW9uIGlzIGludGVuZGVkIGZvciB1c2UKKytpbiBjaHJvb3QgZW52aXJvbm1lbnRzIHdoZW4gc3VjaCBkaXJlY3RvcmllcyBjb250YWluIHRoZSBjb3JyZWN0CisrbGlicmFyaWVzIGZvciB0aGUgdGFyZ2V0IHN5c3RlbSByYXRoZXIgdGhhbiB0aGUgaG9zdC4KKysKKytAa2luZGV4IC0tZXJyb3ItcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcworK0BpdGVtIC0tZXJyb3ItcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcworK0dpdmUgYW4gZXJyb3IgaW5zdGVhZCBvZiBhIHdhcm5pbmcgZm9yIEBvcHRpb257LUx9IG9wdGlvbnMgdXNpbmcKKytzeXN0ZW0gZGlyZWN0b3JpZXMgd2hlbiBjcm9zcyBsaW5raW5nLgorIEBlbmQgdGFibGUKKyAKKyBAYyBtYW4gZW5kCitkaWZmIC0tZ2l0IGEvbGQvbGRmaWxlLmMgYi9sZC9sZGZpbGUuYworaW5kZXggM2IzN2EwYTNlMi4uNWM4NWIwMTg0OSAxMDA2NDQKKy0tLSBhL2xkL2xkZmlsZS5jCisrKysgYi9sZC9sZGZpbGUuYworQEAgLTExNiw2ICsxMTYsMjMgQEAgbGRmaWxlX2FkZF9saWJyYXJ5X3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIGJmZF9ib29sZWFuIGNtZGxpbmUpCisgICAgIG5ld19kaXJzLT5uYW1lID0gY29uY2F0IChsZF9zeXNyb290LCBuYW1lICsgc3RybGVuICgiJFNZU1JPT1QiKSwgKGNvbnN0IGNoYXIgKikgTlVMTCk7CisgICBlbHNlCisgICAgIG5ld19kaXJzLT5uYW1lID0geHN0cmR1cCAobmFtZSk7CisrCisrI2lmZGVmIEVOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTCisrICBpZiAoY29tbWFuZF9saW5lLnBvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMKKysgICYmICgoIXN0cm5jbXAgKG5hbWUsICIvbGliIiwgNCkpCisrICAgICAgfHwgKCFzdHJuY21wIChuYW1lLCAiL3Vzci9saWIiLCA4KSkKKysgICAgICB8fCAoIXN0cm5jbXAgKG5hbWUsICIvdXNyL2xvY2FsL2xpYiIsIDE0KSkKKysgICAgICB8fCAoIXN0cm5jbXAgKG5hbWUsICIvdXNyL1gxMVI2L2xpYiIsIDE0KSkpKQorKyAgIHsKKysgICAgIGlmIChjb21tYW5kX2xpbmUuZXJyb3JfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcykKKysgICAgICAgZWluZm8gKF8oIiVYJVA6IGVycm9yOiBsaWJyYXJ5IHNlYXJjaCBwYXRoIFwiJXNcIiBpcyB1bnNhZmUgZm9yICIKKysgICAgICAgICAgICAiY3Jvc3MtY29tcGlsYXRpb25cbiIpLCBuYW1lKTsKKysgICAgIGVsc2UKKysgICAgICAgZWluZm8gKF8oIiVQOiB3YXJuaW5nOiBsaWJyYXJ5IHNlYXJjaCBwYXRoIFwiJXNcIiBpcyB1bnNhZmUgZm9yICIKKysgICAgICAgICAgICAiY3Jvc3MtY29tcGlsYXRpb25cbiIpLCBuYW1lKTsKKysgICB9CisrI2VuZGlmCisrCisgfQorIAorIC8qIFRyeSB0byBvcGVuIGEgQkZEIGZvciBhIGxhbmdfaW5wdXRfc3RhdGVtZW50LiAgKi8KK2RpZmYgLS1naXQgYS9sZC9sZGxleC5oIGIvbGQvbGRsZXguaAoraW5kZXggNWFhN2Y2YmMzZS4uY2I2NTVlMDM5OSAxMDA2NDQKKy0tLSBhL2xkL2xkbGV4LmgKKysrKyBiL2xkL2xkbGV4LmgKK0BAIC0xNDcsNiArMTQ3LDggQEAgZW51bSBvcHRpb25fdmFsdWVzCisgICBPUFRJT05fUkVRVUlSRV9ERUZJTkVEX1NZTUJPTCwKKyAgIE9QVElPTl9PUlBIQU5fSEFORExJTkcsCisgICBPUFRJT05fRk9SQ0VfR1JPVVBfQUxMT0NBVElPTiwKKysgIE9QVElPTl9OT19QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTLAorKyAgT1BUSU9OX0VSUk9SX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMsCisgfTsKKyAKKyAvKiBUaGUgaW5pdGlhbCBwYXJzZXIgc3RhdGVzLiAgKi8KK2RpZmYgLS1naXQgYS9sZC9sZG1haW4uYyBiL2xkL2xkbWFpbi5jCitpbmRleCAyYjA5ZjIwNDEzLi44OWUyYTNhODA1IDEwMDY0NAorLS0tIGEvbGQvbGRtYWluLmMKKysrKyBiL2xkL2xkbWFpbi5jCitAQCAtMjYxLDYgKzI2MSw4IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAgIGNvbW1hbmRfbGluZS53YXJuX21pc21hdGNoID0gVFJVRTsKKyAgIGNvbW1hbmRfbGluZS53YXJuX3NlYXJjaF9taXNtYXRjaCA9IFRSVUU7CisgICBjb21tYW5kX2xpbmUuY2hlY2tfc2VjdGlvbl9hZGRyZXNzZXMgPSAtMTsKKysgIGNvbW1hbmRfbGluZS5wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzID0gVFJVRTsKKysgIGNvbW1hbmRfbGluZS5lcnJvcl9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzID0gRkFMU0U7CisgCisgICAvKiBXZSBpbml0aWFsaXplIERFTUFOR0xJTkcgYmFzZWQgb24gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlCisgICAgICBDT0xMRUNUX05PX0RFTUFOR0xFLiAgVGhlIGdjYyBjb2xsZWN0MiBwcm9ncmFtIHdpbGwgZGVtYW5nbGUgdGhlCitkaWZmIC0tZ2l0IGEvbGQvbGV4c3VwLmMgYi9sZC9sZXhzdXAuYworaW5kZXggZWZmYTI3N2IxNi4uZTQ5Mjk2MDdlOSAxMDA2NDQKKy0tLSBhL2xkL2xleHN1cC5jCisrKysgYi9sZC9sZXhzdXAuYworQEAgLTUzOCw2ICs1MzgsMTQgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBsZF9vcHRpb24gbGRfb3B0aW9uc1tdID0KKyAgIHsgeyJvcnBoYW4taGFuZGxpbmciLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgT1BUSU9OX09SUEhBTl9IQU5ETElOR30sCisgICAgICdcMCcsIE5fKCI9TU9ERSIpLCBOXygiQ29udHJvbCBob3cgb3JwaGFuIHNlY3Rpb25zIGFyZSBoYW5kbGVkLiIpLAorICAgICBUV09fREFTSEVTIH0sCisrICB7IHsibm8tcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcyIsIG5vX2FyZ3VtZW50LCBOVUxMLAorKyAgICAgT1BUSU9OX05PX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVN9LAorKyAgICAnXDAnLCBOVUxMLCBOXygiRG8gbm90IHdhcm4gZm9yIC1MIG9wdGlvbnMgdXNpbmcgc3lzdGVtIGRpcmVjdG9yaWVzIiksCisrICAgIFRXT19EQVNIRVMgfSwKKysgIHsgeyJlcnJvci1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzIiwgbm9fYXJndW1lbnQsIE5VTEwsCisrICAgICsgICAgIE9QVElPTl9FUlJPUl9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTfSwKKysgICAgJ1wwJywgTlVMTCwgTl8oIkdpdmUgYW4gZXJyb3IgZm9yIC1MIG9wdGlvbnMgdXNpbmcgc3lzdGVtIGRpcmVjdG9yaWVzIiksCisrICAgIFRXT19EQVNIRVMgfSwKKyB9OworIAorICNkZWZpbmUgT1BUSU9OX0NPVU5UIEFSUkFZX1NJWkUgKGxkX29wdGlvbnMpCitAQCAtMTU2OCw2ICsxNTc2LDE0IEBAIHBhcnNlX2FyZ3MgKHVuc2lnbmVkIGFyZ2MsIGNoYXIgKiphcmd2KQorIAkgICAgZWluZm8gKF8oIiVQJUY6IGludmFsaWQgYXJndW1lbnQgdG8gb3B0aW9uIgorIAkJICAgICAiIFwiLS1vcnBoYW4taGFuZGxpbmdcIlxuIikpOworIAkgIGJyZWFrOworKworKwljYXNlIE9QVElPTl9OT19QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTOgorKwkgIGNvbW1hbmRfbGluZS5wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzID0gRkFMU0U7CisrCSAgYnJlYWs7CisrCisrCWNhc2UgT1BUSU9OX0VSUk9SX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVM6CisrCSAgY29tbWFuZF9saW5lLmVycm9yX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMgPSBUUlVFOworKwkgIGJyZWFrOworIAl9CisgICAgIH0KKyAKKy0tIAorMi4xNC4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMC1GaXgtcnBhdGgtaW4tbGlidG9vbC13aGVuLXN5c3Jvb3QtaXMtZW5hYmxlZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMC1GaXgtcnBhdGgtaW4tbGlidG9vbC13aGVuLXN5c3Jvb3QtaXMtZW5hYmxlZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OTYyNDJlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEwLUZpeC1ycGF0aC1pbi1saWJ0b29sLXdoZW4tc3lzcm9vdC1pcy1lbmFibGVkLnBhdGNoCkBAIC0wLDAgKzEsNTIgQEAKK0Zyb20gODhmYWMwOGYxYzQ3MmM2MTJmMzgxY2JiOTQwODc1NmYyZjU4YjRmZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6NDI6MzggKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAxMC8xNV0gRml4IHJwYXRoIGluIGxpYnRvb2wgd2hlbiBzeXNyb290IGlzIGVuYWJsZWQKKworRW5hYmxpbmcgc3lzcm9vdCBzdXBwb3J0IGluIGxpYnRvb2wgZXhwb3NlZCBhIGJ1ZyB3aGVyZSB0aGUgZmluYWwKK2xpYnJhcnkgaGFkIGFuIFJQQVRIIGVuY29kZWQgaW50byBpdCB3aGljaCBzdGlsbCBwb2ludGVkIHRvIHRoZQorc3lzcm9vdC4gVGhpcyB3b3JrcyBhcm91bmQgdGhlIGlzc3VlIHVudGlsIGl0IGdldHMgc29ydGVkIG91dAordXBzdHJlYW0uCisKK0ZpeCBzdWdnZXN0ZWQgYnkgUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGx0bWFpbi5zaCB8IDEwICsrKysrKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbHRtYWluLnNoIGIvbHRtYWluLnNoCitpbmRleCA3MGU4NTZlMDY1Li4xMWVlNjg0Y2NjIDEwMDY0NAorLS0tIGEvbHRtYWluLnNoCisrKysgYi9sdG1haW4uc2gKK0BAIC04MDM1LDkgKzgwMzUsMTEgQEAgRU9GCisgCSAgdGVzdCAiJG9wdF9tb2RlIiAhPSByZWxpbmsgJiYgcnBhdGg9IiRjb21waWxlX3JwYXRoJHJwYXRoIgorIAkgIGZvciBsaWJkaXIgaW4gJHJwYXRoOyBkbworIAkgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiOyB0aGVuCisrCQkgIGZ1bmNfcmVwbGFjZV9zeXNyb290ICIkbGliZGlyIgorKwkJICBsaWJkaXI9JGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdAorKwkJICBmdW5jX3N0cmlwbmFtZSAnPScgJycgIiRsaWJkaXIiCisrCQkgIGxpYmRpcj0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisgCSAgICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIjsgdGhlbgorLQkJZnVuY19yZXBsYWNlX3N5c3Jvb3QgIiRsaWJkaXIiCistCQlsaWJkaXI9JGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdAorIAkJaWYgdGVzdCAteiAiJGhhcmRjb2RlX2xpYmRpcnMiOyB0aGVuCisgCQkgIGhhcmRjb2RlX2xpYmRpcnM9IiRsaWJkaXIiCisgCQllbHNlCitAQCAtODc3MCw2ICs4NzcyLDEwIEBAIEVPRgorICAgICAgIGhhcmRjb2RlX2xpYmRpcnM9CisgICAgICAgZm9yIGxpYmRpciBpbiAkY29tcGlsZV9ycGF0aCAkZmluYWxpemVfcnBhdGg7IGRvCisgCWlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIjsgdGhlbgorKwkgIGZ1bmNfcmVwbGFjZV9zeXNyb290ICIkbGliZGlyIgorKwkgIGxpYmRpcj0kZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0CisrCSAgZnVuY19zdHJpcG5hbWUgJz0nICcnICIkbGliZGlyIgorKwkgIGxpYmRpcj0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisgCSAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiOyB0aGVuCisgCSAgICBpZiB0ZXN0IC16ICIkaGFyZGNvZGVfbGliZGlycyI7IHRoZW4KKyAJICAgICAgaGFyZGNvZGVfbGliZGlycz0iJGxpYmRpciIKKy0tIAorMi4xNC4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMC13YXJuLWZvci11c2VzLW9mLXN5c3RlbS1kaXJlY3Rvcmllcy13aGVuLWNyb3NzLWxpbmtpLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEwLXdhcm4tZm9yLXVzZXMtb2Ytc3lzdGVtLWRpcmVjdG9yaWVzLXdoZW4tY3Jvc3MtbGlua2kucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3NzRhZDYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEwLXdhcm4tZm9yLXVzZXMtb2Ytc3lzdGVtLWRpcmVjdG9yaWVzLXdoZW4tY3Jvc3MtbGlua2kucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNzMgKzAsMCBAQAotRnJvbSBiMWFiMTdhYmU0MTI4Njg0ZjE5Nzc1NDQ4NTQ1MTc2ZmIyYTVlMjdlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMTUgSmFuIDIwMTYgMDY6MzE6MDkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxMC8xNV0gd2FybiBmb3IgdXNlcyBvZiBzeXN0ZW0gZGlyZWN0b3JpZXMgd2hlbiBjcm9zcyBsaW5raW5nCi0KLTIwMDgtMDctMDIgIEpvc2VwaCBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgotCi0gICAgbGQvCi0gICAgKiBsZC5oIChhcmdzX3R5cGUpOiBBZGQgZXJyb3JfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcy4KLSAgICAqIGxkLnRleGluZm8gKC0tZXJyb3ItcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcyk6IERvY3VtZW50LgotICAgICogbGRmaWxlLmMgKGxkZmlsZV9hZGRfbGlicmFyeV9wYXRoKTogQ2hlY2sKLSAgICBjb21tYW5kX2xpbmUuZXJyb3JfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcy4KLSAgICAqIGxkbWFpbi5jIChtYWluKTogSW5pdGlhbGl6ZQotICAgIGNvbW1hbmRfbGluZS5lcnJvcl9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzLgotICAgICogbGV4c3VwLmMgKGVudW0gb3B0aW9uX3ZhbHVlcyk6IEFkZAotICAgIE9QVElPTl9FUlJPUl9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTLgotICAgIChsZF9vcHRpb25zKTogQWRkIC0tZXJyb3ItcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy4KLSAgICAocGFyc2VfYXJncyk6IEhhbmRsZSBuZXcgb3B0aW9uLgotCi0yMDA3LTA2LTEzICBKb3NlcGggTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KLQotICAgIGxkLwotICAgICogY29uZmlnLmluOiBSZWdlbmVyYXRlLgotICAgICogbGQuaCAoYXJnc190eXBlKTogQWRkIHBvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMuCi0gICAgKiBsZC50ZXhpbmZvICgtLW5vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMpOiBEb2N1bWVudC4KLSAgICAqIGxkZmlsZS5jIChsZGZpbGVfYWRkX2xpYnJhcnlfcGF0aCk6IENoZWNrCi0gICAgY29tbWFuZF9saW5lLnBvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMuCi0gICAgKiBsZG1haW4uYyAobWFpbik6IEluaXRpYWxpemUKLSAgICBjb21tYW5kX2xpbmUucG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcy4KLSAgICAqIGxleHN1cC5jIChlbnVtIG9wdGlvbl92YWx1ZXMpOiBBZGQKLSAgICBPUFRJT05fTk9fUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUy4KLSAgICAobGRfb3B0aW9ucyk6IEFkZCAtLW5vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMuCi0gICAgKHBhcnNlX2FyZ3MpOiBIYW5kbGUgbmV3IG9wdGlvbi4KLQotMjAwNy0wNC0yMCAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+Ci0KLSAgICBNZXJnZSBmcm9tIFNvdXJjZXJ5IEcrKyBiaW51dGlscyAyLjE3OgotCi0gICAgMjAwNy0wMy0yMCAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+Ci0gICAgQmFzZWQgb24gcGF0Y2ggYnkgTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPi4KLSAgICBsZC8KLSAgICAqIGNvbmZpZ3VyZS5pbiAoLS1lbmFibGUtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcyk6IE5ldyBvcHRpb24uCi0gICAgKiBjb25maWd1cmUsIGNvbmZpZy5pbjogUmVnZW5lcmF0ZS4KLSAgICAqIGxkZmlsZS5jIChsZGZpbGVfYWRkX2xpYnJhcnlfcGF0aCk6IElmCi0gICAgRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMgZGVmaW5lZCwgd2FybiBmb3IgdXNlIG9mIC9saWIsCi0gICAgL3Vzci9saWIsIC91c3IvbG9jYWwvbGliIG9yIC91c3IvWDExUjYvbGliLgotCi1TaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0gbGQvY29uZmlnLmluICAgIHwgIDMgKysrCi0gbGQvY29uZmlndXJlICAgIHwgMTYgKysrKysrKysrKysrKysrKwotIGxkL2NvbmZpZ3VyZS5hYyB8IDEwICsrKysrKysrKysKLSBsZC9sZC5oICAgICAgICAgfCAgOCArKysrKysrKwotIGxkL2xkLnRleGluZm8gICB8IDEyICsrKysrKysrKysrKwotIGxkL2xkZmlsZS5jICAgICB8IDE3ICsrKysrKysrKysrKysrKysrCi0gbGQvbGRsZXguaCAgICAgIHwgIDIgKysKLSBsZC9sZG1haW4uYyAgICAgfCAgMiArKwotIGxkL2xleHN1cC5jICAgICB8IDE2ICsrKysrKysrKysrKysrKysKLSA5IGZpbGVzIGNoYW5nZWQsIDg2IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2xkL2NvbmZpZy5pbiBiL2xkL2NvbmZpZy5pbgotaW5kZXggMmM2ZDY5OGI2Yy4uZDNjYjdlODgyZCAxMDA2NDQKLS0tLSBhL2xkL2NvbmZpZy5pbgotKysrIGIvbGQvY29uZmlnLmluCi1AQCAtMTcsNiArMTcsOSBAQAotICAgIGxhbmd1YWdlIGlzIHJlcXVlc3RlZC4gKi8KLSAjdW5kZWYgRU5BQkxFX05MUwotIAotKy8qIERlZmluZSB0byB3YXJuIGZvciB1c2Ugb2YgbmF0aXZlIHN5c3RlbSBsaWJyYXJ5IGRpcmVjdG9yaWVzICovCi0rI3VuZGVmIEVOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTCi0rCi0gLyogQWRkaXRpb25hbCBleHRlbnNpb24gYSBzaGFyZWQgb2JqZWN0IG1pZ2h0IGhhdmUuICovCi0gI3VuZGVmIEVYVFJBX1NITElCX0VYVEVOU0lPTgotIAotZGlmZiAtLWdpdCBhL2xkL2NvbmZpZ3VyZSBiL2xkL2NvbmZpZ3VyZQotaW5kZXggNDI3N2I3NGJhZC4uNjMxMDk2NDRiNiAxMDA3NTUKLS0tLSBhL2xkL2NvbmZpZ3VyZQotKysrIGIvbGQvY29uZmlndXJlCi1AQCAtNzkzLDYgKzc5Myw3IEBAIHdpdGhfbGliX3BhdGgKLSBlbmFibGVfdGFyZ2V0cwotIGVuYWJsZV82NF9iaXRfYmZkCi0gd2l0aF9zeXNyb290Ci0rZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMKLSBlbmFibGVfZ29sZAotIGVuYWJsZV9nb3QKLSBlbmFibGVfY29tcHJlc3NlZF9kZWJ1Z19zZWN0aW9ucwotQEAgLTE0NTAsNiArMTQ1MSw4IEBAIE9wdGlvbmFsIEZlYXR1cmVzOgotICAgLS1kaXNhYmxlLWxhcmdlZmlsZSAgICAgb21pdCBzdXBwb3J0IGZvciBsYXJnZSBmaWxlcwotICAgLS1lbmFibGUtdGFyZ2V0cyAgICAgICAgYWx0ZXJuYXRpdmUgdGFyZ2V0IGNvbmZpZ3VyYXRpb25zCi0gICAtLWVuYWJsZS02NC1iaXQtYmZkICAgICA2NC1iaXQgc3VwcG9ydCAob24gaG9zdHMgd2l0aCBuYXJyb3dlciB3b3JkIHNpemVzKQotKyAgLS1lbmFibGUtcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybiBmb3IgdXNlIG9mIG5hdGl2ZSBzeXN0ZW0gbGlicmFyeSBkaXJlY3RvcmllcwotICAgLS1lbmFibGUtZ29sZFs9QVJHXSAgICAgYnVpbGQgZ29sZCBbQVJHPXtkZWZhdWx0LHllcyxub31dCi0gICAtLWVuYWJsZS1nb3Q9PHR5cGU+ICAgICBHT1QgaGFuZGxpbmcgc2NoZW1lICh0YXJnZXQsIHNpbmdsZSwgbmVnYXRpdmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aWdvdCkKLUBAIC0xNjMxNCw2ICsxNjMxNywxOSBAQCBmaQotIAotIAotIAotKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzIHdhcyBnaXZlbi4KLStpZiB0ZXN0ICIke2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgIGVuYWJsZXZhbD0kZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXM7Ci0rZWxzZQotKyAgZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXM9bm8KLStmaQotKwotK2lmIHRlc3QgIngke2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzfSIgPSAieHllcyI7IHRoZW4KLSsKLSskYXNfZWNobyAiI2RlZmluZSBFTkFCTEVfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUyAxIiA+PmNvbmZkZWZzLmgKLSsKLStmaQotKwotICMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1nb2xkIHdhcyBnaXZlbi4KLSBpZiB0ZXN0ICIke2VuYWJsZV9nb2xkK3NldH0iID0gc2V0OyB0aGVuIDoKLSAgIGVuYWJsZXZhbD0kZW5hYmxlX2dvbGQ7IGNhc2UgIiR7ZW5hYmxldmFsfSIgaW4KLWRpZmYgLS1naXQgYS9sZC9jb25maWd1cmUuYWMgYi9sZC9jb25maWd1cmUuYWMKLWluZGV4IDM2YTlmNTA4M2EuLjQ3ZjFkMzNmYTUgMTAwNjQ0Ci0tLS0gYS9sZC9jb25maWd1cmUuYWMKLSsrKyBiL2xkL2NvbmZpZ3VyZS5hYwotQEAgLTk1LDYgKzk1LDE2IEBAIEFDX1NVQlNUKHVzZV9zeXNyb290KQotIEFDX1NVQlNUKFRBUkdFVF9TWVNURU1fUk9PVCkKLSBBQ19TVUJTVChUQVJHRVRfU1lTVEVNX1JPT1RfREVGSU5FKQotIAotK0FDX0FSR19FTkFCTEUoW3BvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXNdLAotKyAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzXSwKLSsgICAgICAgICAgICAgICAgW3dhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGxpYnJhcnkgZGlyZWN0b3JpZXNdKSwsCi0rICAgICAgICAgW2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzPW5vXSkKLStpZiB0ZXN0ICJ4JHtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllc30iID0gInh5ZXMiOyB0aGVuCi0rICBBQ19ERUZJTkUoW0VOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTXSwKLSsgICAgICAgWzFdLAotKyAgICAgICBbRGVmaW5lIHRvIHdhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGxpYnJhcnkgZGlyZWN0b3JpZXNdKQotK2ZpCi0rCi0gZG5sIFVzZSAtLWVuYWJsZS1nb2xkIHRvIGRlY2lkZSBpZiB0aGlzIGxpbmtlciBzaG91bGQgYmUgdGhlIGRlZmF1bHQuCi0gZG5sICJpbnN0YWxsX2FzX2RlZmF1bHQiIGlzIHNldCB0byBmYWxzZSBpZiBnb2xkIGlzIHRoZSBkZWZhdWx0IGxpbmtlci4KLSBkbmwgImluc3RhbGxlZF9saW5rZXIiIGlzIHRoZSBpbnN0YWxsZWQgQkZEIGxpbmtlciBuYW1lLgotZGlmZiAtLWdpdCBhL2xkL2xkLmggYi9sZC9sZC5oCi1pbmRleCAxMDRiYjhlMjM3Li43NGM5MTRiZGQ1IDEwMDY0NAotLS0tIGEvbGQvbGQuaAotKysrIGIvbGQvbGQuaAotQEAgLTE3Miw2ICsxNzIsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QKLSAgIC8qIElmIHNldCwgZGlzcGxheSB0aGUgdGFyZ2V0IG1lbW9yeSB1c2FnZSAocGVyIG1lbW9yeSByZWdpb24pLiAgKi8KLSAgIGJmZF9ib29sZWFuIHByaW50X21lbW9yeV91c2FnZTsKLSAKLSsgIC8qIElmIFRSVUUgKHRoZSBkZWZhdWx0KSB3YXJuIGZvciB1c2VzIG9mIHN5c3RlbSBkaXJlY3RvcmllcyB3aGVuCi0rICAgICBjcm9zcyBsaW5raW5nLiAgKi8KLSsgIGJmZF9ib29sZWFuIHBvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXM7Ci0rCi0rICAvKiBJZiBUUlVFIChkZWZhdWx0IEZBTFNFKSBnaXZlIGFuIGVycm9yIGZvciB1c2VzIG9mIHN5c3RlbQotKyAgICAgZGlyZWN0b3JpZXMgd2hlbiBjcm9zcyBsaW5raW5nIGluc3RlYWQgb2YgYSB3YXJuaW5nLiAgKi8KLSsgIGJmZF9ib29sZWFuIGVycm9yX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXM7Ci0rCi0gICAvKiBCaWcgb3IgbGl0dGxlIGVuZGlhbiBhcyBzZXQgb24gY29tbWFuZCBsaW5lLiAgKi8KLSAgIGVudW0gZW5kaWFuX2VudW0gZW5kaWFuOwotIAotZGlmZiAtLWdpdCBhL2xkL2xkLnRleGluZm8gYi9sZC9sZC50ZXhpbmZvCi1pbmRleCBkMzkzYWNkZDk0Li5iYTk5NWIxZTNhIDEwMDY0NAotLS0tIGEvbGQvbGQudGV4aW5mbwotKysrIGIvbGQvbGQudGV4aW5mbwotQEAgLTI0MDMsNiArMjQwMywxOCBAQCBzdHJpbmcgaWRlbnRpZnlpbmcgdGhlIG9yaWdpbmFsIGxpbmtlZCBmaWxlIGRvZXMgbm90IGNoYW5nZS4KLSAKLSBQYXNzaW5nIEBjb2Rle25vbmV9IGZvciBAdmFye3N0eWxlfSBkaXNhYmxlcyB0aGUgc2V0dGluZyBmcm9tIGFueQotIEBjb2Rley0tYnVpbGQtaWR9IG9wdGlvbnMgZWFybGllciBvbiB0aGUgY29tbWFuZCBsaW5lLgotKwotK0BraW5kZXggLS1uby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCi0rQGl0ZW0gLS1uby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCi0rRG8gbm90IHdhcm4gZm9yIEBvcHRpb257LUx9IG9wdGlvbnMgdXNpbmcgc3lzdGVtIGRpcmVjdG9yaWVzIHN1Y2ggYXMKLStAZmlsZXsvdXNyL2xpYn0gd2hlbiBjcm9zcyBsaW5raW5nLiAgVGhpcyBvcHRpb24gaXMgaW50ZW5kZWQgZm9yIHVzZQotK2luIGNocm9vdCBlbnZpcm9ubWVudHMgd2hlbiBzdWNoIGRpcmVjdG9yaWVzIGNvbnRhaW4gdGhlIGNvcnJlY3QKLStsaWJyYXJpZXMgZm9yIHRoZSB0YXJnZXQgc3lzdGVtIHJhdGhlciB0aGFuIHRoZSBob3N0LgotKwotK0BraW5kZXggLS1lcnJvci1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCi0rQGl0ZW0gLS1lcnJvci1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCi0rR2l2ZSBhbiBlcnJvciBpbnN0ZWFkIG9mIGEgd2FybmluZyBmb3IgQG9wdGlvbnstTH0gb3B0aW9ucyB1c2luZwotK3N5c3RlbSBkaXJlY3RvcmllcyB3aGVuIGNyb3NzIGxpbmtpbmcuCi0gQGVuZCB0YWJsZQotIAotIEBjIG1hbiBlbmQKLWRpZmYgLS1naXQgYS9sZC9sZGZpbGUuYyBiL2xkL2xkZmlsZS5jCi1pbmRleCAwOTQzYmIyZGZhLi45NTg3NGM3NWRlIDEwMDY0NAotLS0tIGEvbGQvbGRmaWxlLmMKLSsrKyBiL2xkL2xkZmlsZS5jCi1AQCAtMTE0LDYgKzExNCwyMyBAQCBsZGZpbGVfYWRkX2xpYnJhcnlfcGF0aCAoY29uc3QgY2hhciAqbmFtZSwgYmZkX2Jvb2xlYW4gY21kbGluZSkKLSAgICAgbmV3X2RpcnMtPm5hbWUgPSBjb25jYXQgKGxkX3N5c3Jvb3QsIG5hbWUgKyAxLCAoY29uc3QgY2hhciAqKSBOVUxMKTsKLSAgIGVsc2UKLSAgICAgbmV3X2RpcnMtPm5hbWUgPSB4c3RyZHVwIChuYW1lKTsKLSsKLSsjaWZkZWYgRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMKLSsgIGlmIChjb21tYW5kX2xpbmUucG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcwotKyAgJiYgKCghc3RybmNtcCAobmFtZSwgIi9saWIiLCA0KSkKLSsgICAgICB8fCAoIXN0cm5jbXAgKG5hbWUsICIvdXNyL2xpYiIsIDgpKQotKyAgICAgIHx8ICghc3RybmNtcCAobmFtZSwgIi91c3IvbG9jYWwvbGliIiwgMTQpKQotKyAgICAgIHx8ICghc3RybmNtcCAobmFtZSwgIi91c3IvWDExUjYvbGliIiwgMTQpKSkpCi0rICAgewotKyAgICAgaWYgKGNvbW1hbmRfbGluZS5lcnJvcl9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzKQotKyAgICAgICBlaW5mbyAoXygiJVglUDogZXJyb3I6IGxpYnJhcnkgc2VhcmNoIHBhdGggXCIlc1wiIGlzIHVuc2FmZSBmb3IgIgotKyAgICAgICAgICAgICJjcm9zcy1jb21waWxhdGlvblxuIiksIG5hbWUpOwotKyAgICAgZWxzZQotKyAgICAgICBlaW5mbyAoXygiJVA6IHdhcm5pbmc6IGxpYnJhcnkgc2VhcmNoIHBhdGggXCIlc1wiIGlzIHVuc2FmZSBmb3IgIgotKyAgICAgICAgICAgICJjcm9zcy1jb21waWxhdGlvblxuIiksIG5hbWUpOwotKyAgIH0KLSsjZW5kaWYKLSsKLSB9Ci0gCi0gLyogVHJ5IHRvIG9wZW4gYSBCRkQgZm9yIGEgbGFuZ19pbnB1dF9zdGF0ZW1lbnQuICAqLwotZGlmZiAtLWdpdCBhL2xkL2xkbGV4LmggYi9sZC9sZGxleC5oCi1pbmRleCAzZWNhYzJiYzg2Li4zNDExN2Y0M2E1IDEwMDY0NAotLS0tIGEvbGQvbGRsZXguaAotKysrIGIvbGQvbGRsZXguaAotQEAgLTE0Niw2ICsxNDYsOCBAQCBlbnVtIG9wdGlvbl92YWx1ZXMKLSAgIE9QVElPTl9QUklOVF9NRU1PUllfVVNBR0UsCi0gICBPUFRJT05fUkVRVUlSRV9ERUZJTkVEX1NZTUJPTCwKLSAgIE9QVElPTl9PUlBIQU5fSEFORExJTkcsCi0rICBPUFRJT05fTk9fUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUywKLSsgIE9QVElPTl9FUlJPUl9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTLAotIH07Ci0gCi0gLyogVGhlIGluaXRpYWwgcGFyc2VyIHN0YXRlcy4gICovCi1kaWZmIC0tZ2l0IGEvbGQvbGRtYWluLmMgYi9sZC9sZG1haW4uYwotaW5kZXggMWU0OGIxYTJkYi4uMjFmMjdiYWNmMSAxMDA2NDQKLS0tLSBhL2xkL2xkbWFpbi5jCi0rKysgYi9sZC9sZG1haW4uYwotQEAgLTI3MCw2ICsyNzAsOCBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gICBjb21tYW5kX2xpbmUud2Fybl9taXNtYXRjaCA9IFRSVUU7Ci0gICBjb21tYW5kX2xpbmUud2Fybl9zZWFyY2hfbWlzbWF0Y2ggPSBUUlVFOwotICAgY29tbWFuZF9saW5lLmNoZWNrX3NlY3Rpb25fYWRkcmVzc2VzID0gLTE7Ci0rICBjb21tYW5kX2xpbmUucG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcyA9IFRSVUU7Ci0rICBjb21tYW5kX2xpbmUuZXJyb3JfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcyA9IEZBTFNFOwotIAotICAgLyogV2UgaW5pdGlhbGl6ZSBERU1BTkdMSU5HIGJhc2VkIG9uIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZQotICAgICAgQ09MTEVDVF9OT19ERU1BTkdMRS4gIFRoZSBnY2MgY29sbGVjdDIgcHJvZ3JhbSB3aWxsIGRlbWFuZ2xlIHRoZQotZGlmZiAtLWdpdCBhL2xkL2xleHN1cC5jIGIvbGQvbGV4c3VwLmMKLWluZGV4IDBiN2Q0OTc2YWMuLmRlZGMwN2ExNDMgMTAwNjQ0Ci0tLS0gYS9sZC9sZXhzdXAuYwotKysrIGIvbGQvbGV4c3VwLmMKLUBAIC01MzUsNiArNTM1LDE0IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbGRfb3B0aW9uIGxkX29wdGlvbnNbXSA9Ci0gICB7IHsib3JwaGFuLWhhbmRsaW5nIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsIE9QVElPTl9PUlBIQU5fSEFORExJTkd9LAotICAgICAnXDAnLCBOXygiPU1PREUiKSwgTl8oIkNvbnRyb2wgaG93IG9ycGhhbiBzZWN0aW9ucyBhcmUgaGFuZGxlZC4iKSwKLSAgICAgVFdPX0RBU0hFUyB9LAotKyAgeyB7Im5vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMiLCBub19hcmd1bWVudCwgTlVMTCwKLSsgICAgIE9QVElPTl9OT19QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTfSwKLSsgICAgJ1wwJywgTlVMTCwgTl8oIkRvIG5vdCB3YXJuIGZvciAtTCBvcHRpb25zIHVzaW5nIHN5c3RlbSBkaXJlY3RvcmllcyIpLAotKyAgICBUV09fREFTSEVTIH0sCi0rICB7IHsiZXJyb3ItcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcyIsIG5vX2FyZ3VtZW50LCBOVUxMLAotKyAgICArICAgICBPUFRJT05fRVJST1JfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFU30sCi0rICAgICdcMCcsIE5VTEwsIE5fKCJHaXZlIGFuIGVycm9yIGZvciAtTCBvcHRpb25zIHVzaW5nIHN5c3RlbSBkaXJlY3RvcmllcyIpLAotKyAgICBUV09fREFTSEVTIH0sCi0gfTsKLSAKLSAjZGVmaW5lIE9QVElPTl9DT1VOVCBBUlJBWV9TSVpFIChsZF9vcHRpb25zKQotQEAgLTE1NjIsNiArMTU3MCwxNCBAQCBwYXJzZV9hcmdzICh1bnNpZ25lZCBhcmdjLCBjaGFyICoqYXJndikKLSAJICAgIGVpbmZvIChfKCIlUCVGOiBpbnZhbGlkIGFyZ3VtZW50IHRvIG9wdGlvbiIKLSAJCSAgICAgIiBcIi0tb3JwaGFuLWhhbmRsaW5nXCJcbiIpKTsKLSAJICBicmVhazsKLSsKLSsJY2FzZSBPUFRJT05fTk9fUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUzoKLSsJICBjb21tYW5kX2xpbmUucG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcyA9IEZBTFNFOwotKwkgIGJyZWFrOwotKwotKwljYXNlIE9QVElPTl9FUlJPUl9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTOgotKwkgIGNvbW1hbmRfbGluZS5lcnJvcl9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzID0gVFJVRTsKLSsJICBicmVhazsKLSAJfQotICAgICB9Ci0gCi0tLSAKLTIuMTIuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTEtQ2hhbmdlLWRlZmF1bHQtZW11bGF0aW9uLWZvci1taXBzNjQtbGludXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTEtQ2hhbmdlLWRlZmF1bHQtZW11bGF0aW9uLWZvci1taXBzNjQtbGludXgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWM4N2EyZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMS1DaGFuZ2UtZGVmYXVsdC1lbXVsYXRpb24tZm9yLW1pcHM2NC1saW51eC5wYXRjaApAQCAtMCwwICsxLDU5IEBACitGcm9tIDQ5NzY2MGJkYmViNjc4ODc4NjU1M2E1ZDczMzEwNWY3Zjg5OGRjNjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAxOjQ0OjE0ICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMTEvMTVdIENoYW5nZSBkZWZhdWx0IGVtdWxhdGlvbiBmb3IgbWlwczY0Ki0qLWxpbnV4CisKK3dlIGNoYW5nZSB0aGUgZGVmYXVsdCBlbXVsYXRpb25zIHRvIGJlIE42NCBpbnN0ZWFkIG9mIE4zMgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgWyBPRSBjb25maWd1cmF0aW9uIFNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgYmZkL2NvbmZpZy5iZmQgICB8IDggKysrKy0tLS0KKyBsZC9jb25maWd1cmUudGd0IHwgOCArKysrLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvYmZkL2NvbmZpZy5iZmQgYi9iZmQvY29uZmlnLmJmZAoraW5kZXggZGMyNGFhYmFkNS4uNDUxMTAyNGYyMiAxMDA2NDQKKy0tLSBhL2JmZC9jb25maWcuYmZkCisrKysgYi9iZmQvY29uZmlnLmJmZAorQEAgLTExODYsMTIgKzExODYsMTIgQEAgY2FzZSAiJHt0YXJnfSIgaW4KKyAgICAgdGFyZ19zZWx2ZWNzPSJtaXBzX2VsZjMyX2xlX3ZlYyBtaXBzX2VsZjY0X2JlX3ZlYyBtaXBzX2VsZjY0X2xlX3ZlYyBtaXBzX2Vjb2ZmX2JlX3ZlYyBtaXBzX2Vjb2ZmX2xlX3ZlYyIKKyAgICAgOzsKKyAgIG1pcHM2NCplbC0qLWxpbnV4KikKKy0gICAgdGFyZ19kZWZ2ZWM9bWlwc19lbGYzMl9udHJhZF9sZV92ZWMKKy0gICAgdGFyZ19zZWx2ZWNzPSJtaXBzX2VsZjMyX250cmFkX2JlX3ZlYyBtaXBzX2VsZjMyX3RyYWRfbGVfdmVjIG1pcHNfZWxmMzJfdHJhZF9iZV92ZWMgbWlwc19lbGY2NF90cmFkX2xlX3ZlYyBtaXBzX2VsZjY0X3RyYWRfYmVfdmVjIgorKyAgICB0YXJnX2RlZnZlYz1taXBzX2VsZjY0X3RyYWRfbGVfdmVjCisrICAgIHRhcmdfc2VsdmVjcz0ibWlwc19lbGYzMl9udHJhZF9iZV92ZWMgbWlwc19lbGYzMl9udHJhZF9sZV92ZWMgbWlwc19lbGYzMl90cmFkX2xlX3ZlYyBtaXBzX2VsZjMyX3RyYWRfYmVfdmVjIG1pcHNfZWxmNjRfdHJhZF9iZV92ZWMiCisgICAgIDs7CisgICBtaXBzNjQqLSotbGludXgqKQorLSAgICB0YXJnX2RlZnZlYz1taXBzX2VsZjMyX250cmFkX2JlX3ZlYworLSAgICB0YXJnX3NlbHZlY3M9Im1pcHNfZWxmMzJfbnRyYWRfbGVfdmVjIG1pcHNfZWxmMzJfdHJhZF9iZV92ZWMgbWlwc19lbGYzMl90cmFkX2xlX3ZlYyBtaXBzX2VsZjY0X3RyYWRfYmVfdmVjIG1pcHNfZWxmNjRfdHJhZF9sZV92ZWMiCisrICAgIHRhcmdfZGVmdmVjPW1pcHNfZWxmNjRfdHJhZF9iZV92ZWMKKysgICAgdGFyZ19zZWx2ZWNzPSJtaXBzX2VsZjMyX250cmFkX2JlX3ZlYyBtaXBzX2VsZjMyX250cmFkX2JlX3ZlYyBtaXBzX2VsZjMyX3RyYWRfYmVfdmVjIG1pcHNfZWxmMzJfdHJhZF9sZV92ZWMgbWlwc19lbGY2NF90cmFkX2xlX3ZlYyIKKyAgICAgOzsKKyAgIG1pcHMqZWwtKi1saW51eCopCisgICAgIHRhcmdfZGVmdmVjPW1pcHNfZWxmMzJfdHJhZF9sZV92ZWMKK2RpZmYgLS1naXQgYS9sZC9jb25maWd1cmUudGd0IGIvbGQvY29uZmlndXJlLnRndAoraW5kZXggNDdjNzE5Y2QwNS4uZmU3YjkyMzhiMiAxMDA2NDQKKy0tLSBhL2xkL2NvbmZpZ3VyZS50Z3QKKysrKyBiL2xkL2NvbmZpZ3VyZS50Z3QKK0BAIC01MzAsMTEgKzUzMCwxMSBAQCBtaXBzKmVsLSotdnh3b3JrcyopCXRhcmdfZW11bD1lbGYzMmVsbWlwdnh3b3JrcworIG1pcHMqLSotdnh3b3JrcyopCXRhcmdfZW11bD1lbGYzMmVibWlwdnh3b3JrcworIAkJICAgICAgICB0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmVsbWlwdnh3b3JrcyIgOzsKKyBtaXBzKi0qLXdpbmRpc3MpCXRhcmdfZW11bD1lbGYzMm1pcHN3aW5kaXNzIDs7CistbWlwczY0KmVsLSotbGludXgtKikJdGFyZ19lbXVsPWVsZjMybHRzbWlwbjMyCistCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJidHNtaXBuMzIgZWxmMzJsdHNtaXAgZWxmMzJidHNtaXAgZWxmNjRsdHNtaXAgZWxmNjRidHNtaXAiCisrbWlwczY0KmVsLSotbGludXgtKikJdGFyZ19lbXVsPWVsZjY0bHRzbWlwCisrCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJidHNtaXBuMzIgZWxmMzJsdHNtaXBuMzIgZWxmMzJsdHNtaXAgZWxmMzJidHNtaXAgZWxmNjRidHNtaXAiCisgCQkJdGFyZ19leHRyYV9saWJwYXRoPSR0YXJnX2V4dHJhX2VtdWxzIDs7CistbWlwczY0Ki0qLWxpbnV4LSopCXRhcmdfZW11bD1lbGYzMmJ0c21pcG4zMgorLQkJCXRhcmdfZXh0cmFfZW11bHM9ImVsZjMybHRzbWlwbjMyIGVsZjMyYnRzbWlwIGVsZjMybHRzbWlwIGVsZjY0YnRzbWlwIGVsZjY0bHRzbWlwIgorK21pcHM2NCotKi1saW51eC0qKQl0YXJnX2VtdWw9ZWxmNjRidHNtaXAKKysJCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmJ0c21pcG4zMiBlbGYzMmx0c21pcG4zMiBlbGYzMmJ0c21pcCBlbGYzMmx0c21pcCBlbGY2NGx0c21pcCIKKyAJCQl0YXJnX2V4dHJhX2xpYnBhdGg9JHRhcmdfZXh0cmFfZW11bHMgOzsKKyBtaXBzKmVsLSotbGludXgtKikJdGFyZ19lbXVsPWVsZjMybHRzbWlwCisgCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJidHNtaXAgZWxmMzJsdHNtaXBuMzIgZWxmNjRsdHNtaXAgZWxmMzJidHNtaXBuMzIgZWxmNjRidHNtaXAiCistLSAKKzIuMTQuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTEtRml4LXJwYXRoLWluLWxpYnRvb2wtd2hlbi1zeXNyb290LWlzLWVuYWJsZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTEtRml4LXJwYXRoLWluLWxpYnRvb2wtd2hlbi1zeXNyb290LWlzLWVuYWJsZWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0OWVmNTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDExLUZpeC1ycGF0aC1pbi1saWJ0b29sLXdoZW4tc3lzcm9vdC1pcy1lbmFibGVkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotRnJvbSA0ZmUxM2EzNjk5NzI1M2E1YzkxYmNiMDg2YWViMzkyYWIyMDk1ZjY3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMTo0MjozOCArMDAwMAotU3ViamVjdDogW1BBVENIIDExLzE1XSBGaXggcnBhdGggaW4gbGlidG9vbCB3aGVuIHN5c3Jvb3QgaXMgZW5hYmxlZAotCi1FbmFibGluZyBzeXNyb290IHN1cHBvcnQgaW4gbGlidG9vbCBleHBvc2VkIGEgYnVnIHdoZXJlIHRoZSBmaW5hbAotbGlicmFyeSBoYWQgYW4gUlBBVEggZW5jb2RlZCBpbnRvIGl0IHdoaWNoIHN0aWxsIHBvaW50ZWQgdG8gdGhlCi1zeXNyb290LiBUaGlzIHdvcmtzIGFyb3VuZCB0aGUgaXNzdWUgdW50aWwgaXQgZ2V0cyBzb3J0ZWQgb3V0Ci11cHN0cmVhbS4KLQotRml4IHN1Z2dlc3RlZCBieSBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gbHRtYWluLnNoIHwgMTAgKysrKysrKystLQotIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9sdG1haW4uc2ggYi9sdG1haW4uc2gKLWluZGV4IDcwZTg1NmUwNjUuLjExZWU2ODRjY2MgMTAwNjQ0Ci0tLS0gYS9sdG1haW4uc2gKLSsrKyBiL2x0bWFpbi5zaAotQEAgLTgwMzUsOSArODAzNSwxMSBAQCBFT0YKLSAJICB0ZXN0ICIkb3B0X21vZGUiICE9IHJlbGluayAmJiBycGF0aD0iJGNvbXBpbGVfcnBhdGgkcnBhdGgiCi0gCSAgZm9yIGxpYmRpciBpbiAkcnBhdGg7IGRvCi0gCSAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyI7IHRoZW4KLSsJCSAgZnVuY19yZXBsYWNlX3N5c3Jvb3QgIiRsaWJkaXIiCi0rCQkgIGxpYmRpcj0kZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0Ci0rCQkgIGZ1bmNfc3RyaXBuYW1lICc9JyAnJyAiJGxpYmRpciIKLSsJCSAgbGliZGlyPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLSAJICAgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiOyB0aGVuCi0tCQlmdW5jX3JlcGxhY2Vfc3lzcm9vdCAiJGxpYmRpciIKLS0JCWxpYmRpcj0kZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0Ci0gCQlpZiB0ZXN0IC16ICIkaGFyZGNvZGVfbGliZGlycyI7IHRoZW4KLSAJCSAgaGFyZGNvZGVfbGliZGlycz0iJGxpYmRpciIKLSAJCWVsc2UKLUBAIC04NzcwLDYgKzg3NzIsMTAgQEAgRU9GCi0gICAgICAgaGFyZGNvZGVfbGliZGlycz0KLSAgICAgICBmb3IgbGliZGlyIGluICRjb21waWxlX3JwYXRoICRmaW5hbGl6ZV9ycGF0aDsgZG8KLSAJaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiOyB0aGVuCi0rCSAgZnVuY19yZXBsYWNlX3N5c3Jvb3QgIiRsaWJkaXIiCi0rCSAgbGliZGlyPSRmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQKLSsJICBmdW5jX3N0cmlwbmFtZSAnPScgJycgIiRsaWJkaXIiCi0rCSAgbGliZGlyPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLSAJICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciI7IHRoZW4KLSAJICAgIGlmIHRlc3QgLXogIiRoYXJkY29kZV9saWJkaXJzIjsgdGhlbgotIAkgICAgICBoYXJkY29kZV9saWJkaXJzPSIkbGliZGlyIgotLS0gCi0yLjEyLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEyLUFkZC1zdXBwb3J0LWZvci1OZXRsb2dpYy1YTFAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTItQWRkLXN1cHBvcnQtZm9yLU5ldGxvZ2ljLVhMUC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzVlNTgwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEyLUFkZC1zdXBwb3J0LWZvci1OZXRsb2dpYy1YTFAucGF0Y2gKQEAgLTAsMCArMSwzOTMgQEAKK0Zyb20gOGM2MGE1NWQzNjc4NTg5ZDkzNzM5YmQyN2ZlYzIxNjkxMWQ4MDk2OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTdW4sIDE0IEZlYiAyMDE2IDE3OjA2OjE5ICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMTIvMTVdIEFkZCBzdXBwb3J0IGZvciBOZXRsb2dpYyBYTFAKKworUGF0Y2ggRnJvbTogTmVidSBQaGlsaXBzIDxucGhpbGlwc0BuZXRsb2dpY21pY3JvLmNvbT4KKworVXNpbmcgdGhlIG1pcHNpc2E2NHIybmxtIHRhcmdldCwgYWRkIHN1cHBvcnQgZm9yIFhMUCBmcm9tCitOZXRsb2dpYy4gQWxzbywgdXBkYXRlIHZlbmRvciBuYW1lIHRvIE5MTSB3aGVyZXZlciBhcHBsaWNhYmxlLgorCitVc2UgMHgwMDAwMDA4MCBmb3IgSU5TTl9YTFAsIHRoZSB2YWx1ZSAweDAwMDAwMDQwIGhhcyBhbHJlYWR5IGJlZW4KK2Fzc2lnbmVkIHRvIElOU05fT0NURU9OMworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEJhb3NoYW4gUGFuZyA8YmFvc2hhbi5wYW5nQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+CistLS0KKyBiZmQvYW91dHguaCAgICAgICAgICAgfCAgMSArCisgYmZkL2FyY2h1cmVzLmMgICAgICAgIHwgIDEgKworIGJmZC9iZmQtaW4yLmggICAgICAgICB8ICAxICsKKyBiZmQvY29uZmlnLmJmZCAgICAgICAgfCAgNSArKysrKworIGJmZC9jcHUtbWlwcy5jICAgICAgICB8ICA2ICsrKystLQorIGJmZC9lbGZ4eC1taXBzLmMgICAgICB8ICA4ICsrKysrKysrCisgYmludXRpbHMvcmVhZGVsZi5jICAgIHwgIDEgKworIGdhcy9jb25maWcvdGMtbWlwcy5jICB8ICA0ICsrKy0KKyBnYXMvY29uZmlndXJlICAgICAgICAgfCAgMyArKysKKyBpbmNsdWRlL2VsZi9taXBzLmggICAgfCAgMSArCisgaW5jbHVkZS9vcGNvZGUvbWlwcy5oIHwgIDYgKysrKysrCisgbGQvY29uZmlndXJlLnRndCAgICAgIHwgIDIgKysKKyBvcGNvZGVzL21pcHMtZGlzLmMgICAgfCAxMiArKysrKy0tLS0tLS0KKyBvcGNvZGVzL21pcHMtb3BjLmMgICAgfCAzMSArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCisgMTQgZmlsZXMgY2hhbmdlZCwgNjEgaW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9iZmQvYW91dHguaCBiL2JmZC9hb3V0eC5oCitpbmRleCAzZDM4ZmRhMTRiLi4wYWVjNDliYmIzIDEwMDY0NAorLS0tIGEvYmZkL2FvdXR4LmgKKysrKyBiL2JmZC9hb3V0eC5oCitAQCAtODE0LDYgKzgxNCw3IEBAIE5BTUUgKGFvdXQsIG1hY2hpbmVfdHlwZSkgKGVudW0gYmZkX2FyY2hpdGVjdHVyZSBhcmNoLAorIAljYXNlIGJmZF9tYWNoX21pcHNpc2E2NHI2OgorIAljYXNlIGJmZF9tYWNoX21pcHNfc2IxOgorIAljYXNlIGJmZF9tYWNoX21pcHNfeGxyOgorKwljYXNlIGJmZF9tYWNoX21pcHNfeGxwOgorIAkgIC8qIEZJWE1FOiBUaGVzZSBzaG91bGQgYmUgTUlQUzMsIE1JUFM0LCBNSVBTMTYsIE1JUFMzMiwgZXRjLiAgKi8KKyAJICBhcmNoX2ZsYWdzID0gTV9NSVBTMjsKKyAJICBicmVhazsKK2RpZmYgLS1naXQgYS9iZmQvYXJjaHVyZXMuYyBiL2JmZC9hcmNodXJlcy5jCitpbmRleCA0MzNiOTVmYTA4Li4wNjNiNzk0M2ExIDEwMDY0NAorLS0tIGEvYmZkL2FyY2h1cmVzLmMKKysrKyBiL2JmZC9hcmNodXJlcy5jCitAQCAtMjAxLDYgKzIwMSw3IEBAIERFU0NSSVBUSU9OCisgLiNkZWZpbmUgYmZkX21hY2hfbWlwc19vY3Rlb24zICAgICAgICAgIDY1MDMKKyAuI2RlZmluZSBiZmRfbWFjaF9taXBzX3hsciAgICAgICAgICAgICAgODg3NjgyICAgeyogZGVjaW1hbCAnWExSJyAgKn0KKyAuI2RlZmluZSBiZmRfbWFjaF9taXBzX2ludGVyYXB0aXZfbXIyICAgNzM2NTUwICAgeyogZGVjaW1hbCAnSUEyJyAgKn0KKysuI2RlZmluZSBiZmRfbWFjaF9taXBzX3hscCAgICAgICAgICAgICAgODg3NjgwICAgeyogZGVjaW1hbCAnWExQJyAgKn0KKyAuI2RlZmluZSBiZmRfbWFjaF9taXBzaXNhMzIgICAgICAgICAgICAgMzIKKyAuI2RlZmluZSBiZmRfbWFjaF9taXBzaXNhMzJyMiAgICAgICAgICAgMzMKKyAuI2RlZmluZSBiZmRfbWFjaF9taXBzaXNhMzJyMyAgICAgICAgICAgMzQKK2RpZmYgLS1naXQgYS9iZmQvYmZkLWluMi5oIGIvYmZkL2JmZC1pbjIuaAoraW5kZXggZDEyNmFlZDA4Ni4uMmI3NTNiM2E5MyAxMDA2NDQKKy0tLSBhL2JmZC9iZmQtaW4yLmgKKysrKyBiL2JmZC9iZmQtaW4yLmgKK0BAIC0yMDYwLDYgKzIwNjAsNyBAQCBlbnVtIGJmZF9hcmNoaXRlY3R1cmUKKyAjZGVmaW5lIGJmZF9tYWNoX21pcHNfb2N0ZW9uMyAgICAgICAgICA2NTAzCisgI2RlZmluZSBiZmRfbWFjaF9taXBzX3hsciAgICAgICAgICAgICAgODg3NjgyICAgLyogZGVjaW1hbCAnWExSJyAgKi8KKyAjZGVmaW5lIGJmZF9tYWNoX21pcHNfaW50ZXJhcHRpdl9tcjIgICA3MzY1NTAgICAvKiBkZWNpbWFsICdJQTInICAqLworKyNkZWZpbmUgYmZkX21hY2hfbWlwc194bHAgICAgICAgICAgICAgIDg4NzY4MCAgIC8qIGRlY2ltYWwgJ1hMUCcgICovCisgI2RlZmluZSBiZmRfbWFjaF9taXBzaXNhMzIgICAgICAgICAgICAgMzIKKyAjZGVmaW5lIGJmZF9tYWNoX21pcHNpc2EzMnIyICAgICAgICAgICAzMworICNkZWZpbmUgYmZkX21hY2hfbWlwc2lzYTMycjMgICAgICAgICAgIDM0CitkaWZmIC0tZ2l0IGEvYmZkL2NvbmZpZy5iZmQgYi9iZmQvY29uZmlnLmJmZAoraW5kZXggNDUxMTAyNGYyMi4uZjBmOTA3MmYxMCAxMDA2NDQKKy0tLSBhL2JmZC9jb25maWcuYmZkCisrKysgYi9iZmQvY29uZmlnLmJmZAorQEAgLTExNjksNiArMTE2OSwxMSBAQCBjYXNlICIke3Rhcmd9IiBpbgorICAgICB0YXJnX2RlZnZlYz1taXBzX2VsZjMyX2xlX3ZlYworICAgICB0YXJnX3NlbHZlY3M9Im1pcHNfZWxmMzJfYmVfdmVjIG1pcHNfZWxmNjRfYmVfdmVjIG1pcHNfZWxmNjRfbGVfdmVjIgorICAgICA7OworKyAgbWlwc2lzYTY0Ki0qLWVsZiopCisrCXRhcmdfZGVmdmVjPW1pcHNfZWxmMzJfdHJhZF9iZV92ZWMKKysJdGFyZ19zZWx2ZWNzPSJtaXBzX2VsZjMyX3RyYWRfbGVfdmVjIG1pcHNfZWxmNjRfdHJhZF9iZV92ZWMgbWlwc19lbGY2NF90cmFkX2xlX3ZlYyIKKysJd2FudDY0PXRydWUKKysJOzsKKyAgIG1pcHMqLSotZWxmKiB8IG1pcHMqLSotcnRlbXMqIHwgbWlwcyotKi13aW5kaXNzIHwgbWlwcyotKi1ub25lKQorICAgICB0YXJnX2RlZnZlYz1taXBzX2VsZjMyX2JlX3ZlYworICAgICB0YXJnX3NlbHZlY3M9Im1pcHNfZWxmMzJfbGVfdmVjIG1pcHNfZWxmNjRfYmVfdmVjIG1pcHNfZWxmNjRfbGVfdmVjIgorZGlmZiAtLWdpdCBhL2JmZC9jcHUtbWlwcy5jIGIvYmZkL2NwdS1taXBzLmMKK2luZGV4IDI0OTMwOTRiZWYuLjgzNzVkMWFlOTYgMTAwNjQ0CistLS0gYS9iZmQvY3B1LW1pcHMuYworKysrIGIvYmZkL2NwdS1taXBzLmMKK0BAIC0xMDUsNyArMTA1LDggQEAgZW51bQorICAgSV9taXBzb2N0ZW9uMywKKyAgIElfeGxyLAorICAgSV9pbnRlcmFwdGl2X21yMiwKKy0gIElfbWljcm9taXBzCisrICBJX21pY3JvbWlwcywKKysgIElfeGxwCisgfTsKKyAKKyAjZGVmaW5lIE5OKGluZGV4KSAoJmFyY2hfaW5mb19zdHJ1Y3RbKGluZGV4KSArIDFdKQorQEAgLTE1OCw3ICsxNTksOCBAQCBzdGF0aWMgY29uc3QgYmZkX2FyY2hfaW5mb190eXBlIGFyY2hfaW5mb19zdHJ1Y3RbXSA9CisgICBOICg2NCwgNjQsIGJmZF9tYWNoX21pcHNfeGxyLCAibWlwczp4bHIiLCAgICAgICBGQUxTRSwgTk4oSV94bHIpKSwKKyAgIE4gKDMyLCAzMiwgYmZkX21hY2hfbWlwc19pbnRlcmFwdGl2X21yMiwgIm1pcHM6aW50ZXJhcHRpdi1tcjIiLCBGQUxTRSwKKyAgICAgIE5OKElfaW50ZXJhcHRpdl9tcjIpKSwKKy0gIE4gKDY0LCA2NCwgYmZkX21hY2hfbWlwc19taWNyb21pcHMsIm1pcHM6bWljcm9taXBzIixGQUxTRSwwKQorKyAgTiAoNjQsIDY0LCBiZmRfbWFjaF9taXBzX21pY3JvbWlwcywibWlwczptaWNyb21pcHMiLEZBTFNFLE5OKElfbWljcm9taXBzKSksCisrICBOICg2NCwgNjQsIGJmZF9tYWNoX21pcHNfeGxwLCAibWlwczp4bHAiLCAgICAgIEZBTFNFLCAwKQorIH07CisgCisgLyogVGhlIGRlZmF1bHQgYXJjaGl0ZWN0dXJlIGlzIG1pcHM6MzAwMCwgYnV0IHdpdGggYSBtYWNoaW5lIG51bWJlciBvZgorZGlmZiAtLWdpdCBhL2JmZC9lbGZ4eC1taXBzLmMgYi9iZmQvZWxmeHgtbWlwcy5jCitpbmRleCBmZGRmNjhjODE2Li4zNTRjODVkMDBiIDEwMDY0NAorLS0tIGEvYmZkL2VsZnh4LW1pcHMuYworKysrIGIvYmZkL2VsZnh4LW1pcHMuYworQEAgLTY3OTYsNiArNjc5Niw5IEBAIF9iZmRfZWxmX21pcHNfbWFjaCAoZmxhZ3dvcmQgZmxhZ3MpCisgICAgIGNhc2UgRV9NSVBTX01BQ0hfSUFNUjI6CisgICAgICAgcmV0dXJuIGJmZF9tYWNoX21pcHNfaW50ZXJhcHRpdl9tcjI7CisgCisrICAgIGNhc2UgRV9NSVBTX01BQ0hfWExQOgorKyAgICAgIHJldHVybiBiZmRfbWFjaF9taXBzX3hscDsKKysKKyAgICAgZGVmYXVsdDoKKyAgICAgICBzd2l0Y2ggKGZsYWdzICYgRUZfTUlQU19BUkNIKQorIAl7CitAQCAtMTE5NTYsNiArMTE5NTksMTAgQEAgbWlwc19zZXRfaXNhX2ZsYWdzIChiZmQgKmFiZmQpCisgICAgICAgdmFsID0gRV9NSVBTX0FSQ0hfNjRSMiB8IEVfTUlQU19NQUNIX09DVEVPTjI7CisgICAgICAgYnJlYWs7CisgCisrCWNhc2UgYmZkX21hY2hfbWlwc194bHA6CisrCSAgdmFsID0gRV9NSVBTX0FSQ0hfNjRSMiB8IEVfTUlQU19NQUNIX1hMUDsKKysJICBicmVhazsKKysKKyAgICAgY2FzZSBiZmRfbWFjaF9taXBzaXNhMzI6CisgICAgICAgdmFsID0gRV9NSVBTX0FSQ0hfMzI7CisgICAgICAgYnJlYWs7CitAQCAtMTM5ODksNiArMTM5OTYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG1pcHNfbWFjaF9leHRlbnNpb24gbWlwc19tYWNoX2V4dGVuc2lvbnNbXSA9CisgICB7IGJmZF9tYWNoX21pcHNfb2N0ZW9ucCwgYmZkX21hY2hfbWlwc19vY3Rlb24gfSwKKyAgIHsgYmZkX21hY2hfbWlwc19vY3Rlb24sIGJmZF9tYWNoX21pcHNpc2E2NHIyIH0sCisgICB7IGJmZF9tYWNoX21pcHNfbG9vbmdzb25fM2EsIGJmZF9tYWNoX21pcHNpc2E2NHIyIH0sCisrICB7IGJmZF9tYWNoX21pcHNfeGxwLCBiZmRfbWFjaF9taXBzaXNhNjRyMiB9LAorIAorICAgLyogTUlQUzY0IGV4dGVuc2lvbnMuICAqLworICAgeyBiZmRfbWFjaF9taXBzaXNhNjRyMiwgYmZkX21hY2hfbWlwc2lzYTY0IH0sCitkaWZmIC0tZ2l0IGEvYmludXRpbHMvcmVhZGVsZi5jIGIvYmludXRpbHMvcmVhZGVsZi5jCitpbmRleCAyYjE1ZjBmMmNiLi4wOTI3NDQ3MDhlIDEwMDY0NAorLS0tIGEvYmludXRpbHMvcmVhZGVsZi5jCisrKysgYi9iaW51dGlscy9yZWFkZWxmLmMKK0BAIC0zMzM1LDYgKzMzMzUsNyBAQCBnZXRfbWFjaGluZV9mbGFncyAodW5zaWduZWQgZV9mbGFncywgdW5zaWduZWQgZV9tYWNoaW5lKQorIAkgICAgY2FzZSBFX01JUFNfTUFDSF9PQ1RFT04zOiBzdHJjYXQgKGJ1ZiwgIiwgb2N0ZW9uMyIpOyBicmVhazsKKyAJICAgIGNhc2UgRV9NSVBTX01BQ0hfWExSOiAgc3RyY2F0IChidWYsICIsIHhsciIpOyBicmVhazsKKyAJICAgIGNhc2UgRV9NSVBTX01BQ0hfSUFNUjI6ICBzdHJjYXQgKGJ1ZiwgIiwgaW50ZXJhcHRpdi1tcjIiKTsgYnJlYWs7CisrCSAgICBjYXNlIEVfTUlQU19NQUNIX1hMUDogIHN0cmNhdCAoYnVmLCAiLCB4bHAiKTsgYnJlYWs7CisgCSAgICBjYXNlIDA6CisgCSAgICAvKiBXZSBzaW1wbHkgaWdub3JlIHRoZSBmaWVsZCBpbiB0aGlzIGNhc2UgdG8gYXZvaWQgY29uZnVzaW9uOgorIAkgICAgICAgTUlQUyBFTEYgZG9lcyBub3Qgc3BlY2lmeSBFRl9NSVBTX01BQ0gsIGl0IGlzIGEgR05VCitkaWZmIC0tZ2l0IGEvZ2FzL2NvbmZpZy90Yy1taXBzLmMgYi9nYXMvY29uZmlnL3RjLW1pcHMuYworaW5kZXggMzgwNGRmMjk1OC4uOTU3NmM5ODZkYiAxMDA2NDQKKy0tLSBhL2dhcy9jb25maWcvdGMtbWlwcy5jCisrKysgYi9nYXMvY29uZmlnL3RjLW1pcHMuYworQEAgLTU1Miw2ICs1NTIsNyBAQCBzdGF0aWMgaW50IG1pcHNfMzJiaXRtb2RlID0gMDsKKyAgICB8fCBtaXBzX29wdHMuYXJjaCA9PSBDUFVfUk03MDAwICAgICAgICAgICAgICAgICAgICBcCisgICAgfHwgbWlwc19vcHRzLmFyY2ggPT0gQ1BVX1ZSNTUwMCAgICAgICAgICAgICAgICAgICAgXAorICAgIHx8IG1pcHNfb3B0cy5taWNyb21pcHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICB8fCBtaXBzX29wdHMuYXJjaCA9PSBDUFVfWExQICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKQorIAorIC8qIFdoZXRoZXIgdGhlIHByb2Nlc3NvciB1c2VzIGhhcmR3YXJlIGludGVybG9ja3MgdG8gcHJvdGVjdCByZWFkcworQEAgLTU4MSw2ICs1ODIsNyBAQCBzdGF0aWMgaW50IG1pcHNfMzJiaXRtb2RlID0gMDsKKyAgICAgJiYgbWlwc19vcHRzLmlzYSAhPSBJU0FfTUlQUzMpICAgICAgICAgICAgICAgICAgICBcCisgICAgfHwgbWlwc19vcHRzLmFyY2ggPT0gQ1BVX1I0MzAwICAgICAgICAgICAgICAgICAgICAgXAorICAgIHx8IG1pcHNfb3B0cy5taWNyb21pcHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICB8fCBtaXBzX29wdHMuYXJjaCA9PSBDUFVfWExQICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKQorIAorIC8qIFdoZXRoZXIgdGhlIHByb2Nlc3NvciB1c2VzIGhhcmR3YXJlIGludGVybG9ja3MgdG8gcHJvdGVjdCByZWFkcworQEAgLTE5NzM4LDcgKzE5NzQwLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtaXBzX2NwdV9pbmZvIG1pcHNfY3B1X2luZm9fdGFibGVbXSA9CisgICAvKiBCcm9hZGNvbSBYTFAuCisgICAgICBYTFAgaXMgbW9zdGx5IGxpa2UgWExSLCB3aXRoIHRoZSBwcm9taW5lbnQgZXhjZXB0aW9uIHRoYXQgaXQgaXMKKyAgICAgIE1JUFM2NFIyIHJhdGhlciB0aGFuIE1JUFM2NC4gICovCistICB7ICJ4bHAiLAkgICAgICAwLCAwLAkJCUlTQV9NSVBTNjRSMiwgQ1BVX1hMUiB9LAorKyAgeyAieGxwIiwJICAgICAgMCwgMCwJCQlJU0FfTUlQUzY0UjIsIENQVV9YTFAgfSwKKyAKKyAgIC8qIE1JUFMgNjQgUmVsZWFzZSA2ICovCisgICB7ICJpNjQwMCIsCSAgICAgIDAsIEFTRV9NU0EsCQlJU0FfTUlQUzY0UjYsIENQVV9NSVBTNjRSNn0sCitkaWZmIC0tZ2l0IGEvZ2FzL2NvbmZpZ3VyZSBiL2dhcy9jb25maWd1cmUKK2luZGV4IDgxZGQ0Y2JkOTcuLjk1YmRmM2IxOWIgMTAwNzU1CistLS0gYS9nYXMvY29uZmlndXJlCisrKysgYi9nYXMvY29uZmlndXJlCitAQCAtMTI5ODksNiArMTI5ODksOSBAQCBfQUNFT0YKKyAJICBtaXBzaXNhNjRyNiB8IG1pcHNpc2E2NHI2ZWwpCisgCSAgICBtaXBzX2NwdT1taXBzNjRyNgorIAkgICAgOzsKKysJICBtaXBzaXNhNjRyMm5sbSB8IG1pcHNpc2E2NHIybmxtZWwpCisrCQltaXBzX2NwdT14bHAKKysJCTs7CisgCSAgbWlwc3R4MzkgfCBtaXBzdHgzOWVsKQorIAkgICAgbWlwc19jcHU9cjM5MDAKKyAJICAgIDs7CitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9lbGYvbWlwcy5oIGIvaW5jbHVkZS9lbGYvbWlwcy5oCitpbmRleCBhNGJlYTQzZmY4Li43M2Q5MDRlMjVmIDEwMDY0NAorLS0tIGEvaW5jbHVkZS9lbGYvbWlwcy5oCisrKysgYi9pbmNsdWRlL2VsZi9taXBzLmgKK0BAIC0yOTAsNiArMjkwLDcgQEAgRU5EX1JFTE9DX05VTUJFUlMgKFJfTUlQU19tYXhleHQpCisgI2RlZmluZSBFX01JUFNfTUFDSF9TQjEgICAgICAgICAweDAwOGEwMDAwCisgI2RlZmluZSBFX01JUFNfTUFDSF9PQ1RFT04JMHgwMDhiMDAwMAorICNkZWZpbmUgRV9NSVBTX01BQ0hfWExSICAgICAJMHgwMDhjMDAwMAorKyNkZWZpbmUgRV9NSVBTX01BQ0hfWExQICAgICAgICAgMHgwMDhmMDAwMAorICNkZWZpbmUgRV9NSVBTX01BQ0hfT0NURU9OMgkweDAwOGQwMDAwCisgI2RlZmluZSBFX01JUFNfTUFDSF9PQ1RFT04zCTB4MDA4ZTAwMDAKKyAjZGVmaW5lIEVfTUlQU19NQUNIXzU0MDAJMHgwMDkxMDAwMAorZGlmZiAtLWdpdCBhL2luY2x1ZGUvb3Bjb2RlL21pcHMuaCBiL2luY2x1ZGUvb3Bjb2RlL21pcHMuaAoraW5kZXggY2VhZTllYzUwYS4uMjc2ZWUzYzZjMSAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvb3Bjb2RlL21pcHMuaAorKysrIGIvaW5jbHVkZS9vcGNvZGUvbWlwcy5oCitAQCAtMTI1OSw2ICsxMjU5LDggQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBtaXBzX2lzYV90YWJsZVtdID0geworICNkZWZpbmUgSU5TTl9YTFIgICAgICAgICAgICAgICAgIDB4MDAwMDAwMjAKKyAvKiBJbWFnaW5hdGlvbiBpbnRlckFwdGl2IE1SMi4gICovCisgI2RlZmluZSBJTlNOX0lOVEVSQVBUSVZfTVIyCSAgMHgwNDAwMDAwMAorKy8qIE5ldGxvZ2ljIFhsUCBpbnN0cnVjdGlvbiAqLworKyNkZWZpbmUgSU5TTl9YTFAJCTB4MDAwMDAwODAKKyAKKyAvKiBEU1AgQVNFICovCisgI2RlZmluZSBBU0VfRFNQCQkJMHgwMDAwMDAwMQorQEAgLTEzNjUsNiArMTM2Nyw3IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgbWlwc19pc2FfdGFibGVbXSA9IHsKKyAjZGVmaW5lIENQVV9PQ1RFT04zCTY1MDMKKyAjZGVmaW5lIENQVV9YTFIgICAgIAk4ODc2ODIgICAJLyogZGVjaW1hbCAnWExSJyAgICovCisgI2RlZmluZSBDUFVfSU5URVJBUFRJVl9NUjIgNzM2NTUwCS8qIGRlY2ltYWwgJ0lBMicgICovCisrI2RlZmluZSBDUFVfWExQICAgICAgICAgODg3NjgwICAgICAgLyogZGVjaW1hbCAnWExQJyAgICovCisgCisgLyogUmV0dXJuIHRydWUgaWYgdGhlIGdpdmVuIENQVSBpcyBpbmNsdWRlZCBpbiBJTlNOXyogbWFzayBNQVNLLiAgKi8KKyAKK0BAIC0xNDQ1LDYgKzE0NDgsOSBAQCBjcHVfaXNfbWVtYmVyIChpbnQgY3B1LCB1bnNpZ25lZCBpbnQgbWFzaykKKyAgICAgICByZXR1cm4gKChtYXNrICYgSU5TTl9JU0FfTUFTSykgPT0gSU5TTl9JU0EzMlI2KQorIAkgICAgIHx8ICgobWFzayAmIElOU05fSVNBX01BU0spID09IElOU05fSVNBNjRSNik7CisgCisrICAgIGNhc2UgQ1BVX1hMUDoKKysgICAgICByZXR1cm4gKG1hc2sgJiBJTlNOX1hMUCkgIT0gMDsKKysKKyAgICAgZGVmYXVsdDoKKyAgICAgICByZXR1cm4gRkFMU0U7CisgICAgIH0KK2RpZmYgLS1naXQgYS9sZC9jb25maWd1cmUudGd0IGIvbGQvY29uZmlndXJlLnRndAoraW5kZXggZmU3YjkyMzhiMi4uMmFkZjEwOGIxNyAxMDA2NDQKKy0tLSBhL2xkL2NvbmZpZ3VyZS50Z3QKKysrKyBiL2xkL2NvbmZpZ3VyZS50Z3QKK0BAIC01MTYsNiArNTE2LDggQEAgbWlwcyplbC1zZGUtZWxmKiB8IG1pcHMqZWwtbXRpLWVsZiogfCBtaXBzKmVsLWltZy1lbGYqKQorIG1pcHMqLXNkZS1lbGYqIHwgbWlwcyotbXRpLWVsZiogfCBtaXBzKi1pbWctZWxmKikKKyAJCQl0YXJnX2VtdWw9ZWxmMzJidHNtaXAKKyAJCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmx0c21pcCBlbGYzMmJ0c21pcG4zMiBlbGY2NGJ0c21pcCBlbGYzMmx0c21pcG4zMiBlbGY2NGx0c21pcCIgOzsKKyttaXBzaXNhNjQqLSotZWxmKikJdGFyZ19lbXVsPWVsZjMyYnRzbWlwCisrCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJsdHNtaXAgZWxmNjRidHNtaXAgZWxmNjRsdHNtaXAiIDs7CisgbWlwczY0KmVsLXBzMi1lbGYqKQl0YXJnX2VtdWw9ZWxmMzJscjU5MDBuMzIKKyAJCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmxyNTkwMCIKKyAJCQl0YXJnX2V4dHJhX2xpYnBhdGg9JHRhcmdfZXh0cmFfZW11bHMgOzsKK2RpZmYgLS1naXQgYS9vcGNvZGVzL21pcHMtZGlzLmMgYi9vcGNvZGVzL21pcHMtZGlzLmMKK2luZGV4IDQ1MTk1MDA3YzEuLjRhODBhMDVkMTkgMTAwNjQ0CistLS0gYS9vcGNvZGVzL21pcHMtZGlzLmMKKysrKyBiL29wY29kZXMvbWlwcy1kaXMuYworQEAgLTY1NSwxMyArNjU1LDExIEBAIGNvbnN0IHN0cnVjdCBtaXBzX2FyY2hfY2hvaWNlIG1pcHNfYXJjaF9jaG9pY2VzW10gPQorICAgICBtaXBzX2NwMHNlbF9uYW1lc194bHIsIEFSUkFZX1NJWkUgKG1pcHNfY3Awc2VsX25hbWVzX3hsciksCisgICAgIG1pcHNfY3AxX25hbWVzX21pcHMzMjY0LCBtaXBzX2h3cl9uYW1lc19udW1lcmljIH0sCisgCistICAvKiBYTFAgaXMgbW9zdGx5IGxpa2UgWExSLCB3aXRoIHRoZSBwcm9taW5lbnQgZXhjZXB0aW9uIGl0IGlzIGJlaW5nCistICAgICBNSVBTNjRSMi4gICovCistICB7ICJ4bHAiLCAxLCBiZmRfbWFjaF9taXBzX3hsciwgQ1BVX1hMUiwKKy0gICAgSVNBX01JUFM2NFIyIHwgSU5TTl9YTFIsIDAsCistICAgIG1pcHNfY3AwX25hbWVzX3hsciwKKy0gICAgbWlwc19jcDBzZWxfbmFtZXNfeGxyLCBBUlJBWV9TSVpFIChtaXBzX2NwMHNlbF9uYW1lc194bHIpLAorLSAgICBtaXBzX2NwMV9uYW1lc19taXBzMzI2NCwgbWlwc19od3JfbmFtZXNfbnVtZXJpYyB9LAorKyAgeyAieGxwIiwgMSwgYmZkX21hY2hfbWlwc194bHAsIENQVV9YTFAsCisrICAgIElTQV9NSVBTNjRSMiB8IElOU05fWExQLCAwLAorKyAgICBtaXBzX2NwMF9uYW1lc19taXBzMzI2NHIyLAorKyAgICBtaXBzX2NwMHNlbF9uYW1lc19taXBzMzI2NHIyLCBBUlJBWV9TSVpFIChtaXBzX2NwMHNlbF9uYW1lc19taXBzMzI2NHIyKSwKKysgICAgbWlwc19jcDFfbmFtZXNfbWlwczMyNjQsIG1pcHNfaHdyX25hbWVzX21pcHMzMjY0cjIgfSwKKyAKKyAgIC8qIFRoaXMgZW50cnksIG1pcHMxNiwgaXMgaGVyZSBvbmx5IGZvciBJU0EvcHJvY2Vzc29yIHNlbGVjdGlvbjsgZG8KKyAgICAgIG5vdCBwcmludCBpdHMgbmFtZS4gICovCitkaWZmIC0tZ2l0IGEvb3Bjb2Rlcy9taXBzLW9wYy5jIGIvb3Bjb2Rlcy9taXBzLW9wYy5jCitpbmRleCAxOWZjYTQwOGM5Li5kMDIwNjljNTI4IDEwMDY0NAorLS0tIGEvb3Bjb2Rlcy9taXBzLW9wYy5jCisrKysgYi9vcGNvZGVzL21pcHMtb3BjLmMKK0BAIC0zMjgsNiArMzI4LDcgQEAgZGVjb2RlX21pcHNfb3BlcmFuZCAoY29uc3QgY2hhciAqcCkKKyAjZGVmaW5lIElPQ1QzCUlOU05fT0NURU9OMworICNkZWZpbmUgWExSICAgICBJTlNOX1hMUgorICNkZWZpbmUgSUFNUjIJSU5TTl9JTlRFUkFQVElWX01SMgorKyNkZWZpbmUgWExQCUlOU05fWExQCisgI2RlZmluZSBJVklSVAlBU0VfVklSVAorICNkZWZpbmUgSVZJUlQ2NAlBU0VfVklSVDY0CisgCitAQCAtOTY2LDYgKzk2Nyw3IEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KKyB7ImNsbyIsCQkJIlUscyIsCQkweDcwMDAwMDIxLCAweGZjMDAwN2ZmLCBXUl8xfFJEXzIsCQkwLAkJSTMyfE41NSwJMCwJSTM3IH0sCisgeyJjbHoiLAkJCSJkLHMiLAkJMHgwMDAwMDA1MCwgMHhmYzFmMDdmZiwgV1JfMXxSRF8yLAkJMCwJCUkzNywJCTAsCTAgfSwKKyB7ImNseiIsCQkJIlUscyIsCQkweDcwMDAwMDIwLCAweGZjMDAwN2ZmLCBXUl8xfFJEXzIsCQkwLAkJSTMyfE41NSwJMCwJSTM3IH0sCisreyJjcmMiLAkJCSJkLHMsdCIsCTB4NzAwMDAwMWMsIDB4ZmMwMDA3ZmYsCVdSXzF8UkRfMnxSRF8zLAkwLAkJWExQLCAJCTAsCTAgfSwKKyAvKiBjdGMwIGlzIGF0IHRoZSBib3R0b20gb2YgdGhlIHRhYmxlLiAgKi8KKyB7ImN0YzEiLAkJInQsRyIsCQkweDQ0YzAwMDAwLCAweGZmZTAwN2ZmLAlSRF8xfFdSX0NDfENNLAkJMCwJCUkxLAkJMCwJMCB9LAorIHsiY3RjMSIsCQkidCxTIiwJCTB4NDRjMDAwMDAsIDB4ZmZlMDA3ZmYsCVJEXzF8V1JfQ0N8Q00sCQkwLAkJSTEsCQkwLAkwIH0sCitAQCAtOTk4LDEyICsxMDAwLDEzIEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KKyB7ImRhZGRpdSIsCQkidCxyLGoiLAkweDY0MDAwMDAwLCAweGZjMDAwMDAwLCBXUl8xfFJEXzIsCQkwLAkJSTMsCQkwLAkwIH0sCisgeyJkYWRkdSIsCQkiZCx2LHQiLAkweDAwMDAwMDJkLCAweGZjMDAwN2ZmLCBXUl8xfFJEXzJ8UkRfMywJCTAsCQlJMywJCTAsCTAgfSwKKyB7ImRhZGR1IiwJCSJ0LHIsSSIsCTAsICAgIChpbnQpIE1fREFERFVfSSwJSU5TTl9NQUNSTywJCTAsCQlJMywJCTAsCTAgfSwKKy17ImRhZGR3YyIsCQkiZCxzLHQiLCAJMHg3MDAwMDAzOCwgMHhmYzAwMDdmZiwgV1JfMXxSRF8yfFJEXzN8V1JfQzB8UkRfQzAsIDAsCQlYTFIsCQkwLAkwIH0sCisreyJkYWRkd2MiLAkJImQscyx0IiwgCTB4NzAwMDAwMzgsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMnxSRF8zfFdSX0MwfFJEX0MwLCAwLAkJWExSfFhMUCwJMCwJMCB9LAorIHsiZGJyZWFrIiwJCSIiLAkJMHg3MDAwMDAzZiwgMHhmZmZmZmZmZiwJMCwJCQkwLAkJTjUsCQkwLAkwIH0sCisgeyJkY2xvIiwJCSJkLHMiLAkJMHgwMDAwMDA1MywgMHhmYzFmMDdmZiwgV1JfMXxSRF8yLAkJMCwJCUk2OSwJCTAsCTAgfSwKKyB7ImRjbG8iLAkJIlUscyIsCSAJMHg3MDAwMDAyNSwgMHhmYzAwMDdmZiwgV1JfMXxSRF8yLCAJMCwJCUk2NHxONTUsCTAsCUk2OSB9LAorIHsiZGNseiIsCQkiZCxzIiwJCTB4MDAwMDAwNTIsIDB4ZmMxZjA3ZmYsIFdSXzF8UkRfMiwJCTAsCQlJNjksCQkwLAkwIH0sCisgeyJkY2x6IiwJCSJVLHMiLAkgCTB4NzAwMDAwMjQsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMiwgCTAsCQlJNjR8TjU1LAkwLAlJNjkgfSwKKyt7ImRjcmMiLAkJImQscyx0IiwJMHg3MDAwMDAxZCwgMHhmYzAwMDdmZiwgV1JfMXxSRF8yfFJEXzMsCTAsCQlYTFAsIAkJMCwJMCB9LAorIC8qIGRjdHIgYW5kIGRjdHcgYXJlIHVzZWQgb24gdGhlIHI1MDAwLiAgKi8KKyB7ImRjdHIiLAkJIm8oYikiLAkgCTB4YmMwNTAwMDAsIDB4ZmMxZjAwMDAsIFJEXzIsCQkJMCwJCUkzLAkJMCwJMCB9LAorIHsiZGN0dyIsCQkibyhiKSIsCQkweGJjMDkwMDAwLCAweGZjMWYwMDAwLCBSRF8yLAkJCTAsCQlJMywJCTAsCTAgfSwKK0BAIC0xMDc1LDYgKzEwNzgsNyBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9CisgeyJkbWZjMCIsCQkidCxHLEgiLAkweDQwMjAwMDAwLCAweGZmZTAwN2Y4LAlXUl8xfFJEX0MwfExDLAkJMCwJCUk2NCwJCTAsCTAgfSwKKyB7ImRtZmdjMCIsCQkidCxHIiwJCTB4NDA2MDAxMDAsIDB4ZmZlMDA3ZmYsIFdSXzF8UkRfQzB8TEMsCQkwLAkJMCwJCUlWSVJUNjQsIDAgfSwKKyB7ImRtZmdjMCIsCQkidCxHLEgiLAkweDQwNjAwMTAwLCAweGZmZTAwN2Y4LCBXUl8xfFJEX0MwfExDLAkJMCwJCTAsCQlJVklSVDY0LCAwIH0sCisreyJkbWZ1ciIsCQkidCxkIiwJCTB4NzAwMDAwMWUsIDB4ZmZlMDA3ZmYsIFdSXzEsCQkJMCwJCVhMUCwJCTAsCTAgfSwKKyB7ImRtdCIsCQkJIiIsCQkweDQxNjAwYmMxLCAweGZmZmZmZmZmLCBUUkFQLAkJCTAsCQkwLAkJTVQzMiwJMCB9LAorIHsiZG10IiwJCQkidCIsCQkweDQxNjAwYmMxLCAweGZmZTBmZmZmLCBXUl8xfFRSQVAsCQkwLAkJMCwJCU1UMzIsCTAgfSwKKyB7ImRtdGMwIiwJCSJ0LEciLAkJMHg0MGEwMDAwMCwgMHhmZmUwMDdmZiwJUkRfMXxXUl9DMHxXUl9DQ3xDTSwJMCwJCUkzLAkJMCwJRUUgfSwKK0BAIC0xMDkwLDYgKzEwOTQsOCBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9CisgLyogZG1mYzMgaXMgYXQgdGhlIGJvdHRvbSBvZiB0aGUgdGFibGUuICAqLworIC8qIGRtdGMzIGlzIGF0IHRoZSBib3R0b20gb2YgdGhlIHRhYmxlLiAgKi8KKyB7ImRtdWgiLAkJImQscyx0IiwJMHgwMDAwMDBkYywgMHhmYzAwMDdmZiwgV1JfMXxSRF8yfFJEXzMsCQkwLAkJSTY5LAkJMCwJMCB9LAorK3siZG10dXIiLAkJInQsZCIsCQkweDcwMDAwMDFmLCAweGZmZTAwN2ZmLAlSRF8xLAkJCTAsCQlYTFAsCQkwLAkwIH0sCisreyJkbXVsIiwJCSJkLHMsdCIsCTB4NzAwMDAwMDYsIDB4ZmMwMDA3ZmYsCVdSXzF8UkRfMnxSRF8zLAkJMCwJCVhMUCwJCTAsCTAgfSwKKyB7ImRtdWwiLAkJImQscyx0IiwJMHgwMDAwMDA5YywgMHhmYzAwMDdmZiwgV1JfMXxSRF8yfFJEXzMsCQkwLAkJSTY5LAkJMCwJMCB9LAorIHsiZG11bCIsCQkiZCx2LHQiLAkweDcwMDAwMDAzLCAweGZjMDAwN2ZmLCBXUl8xfFJEXzJ8UkRfM3xXUl9ISUxPLAkwLAkJSU9DVCwJCTAsCTAgfSwKKyB7ImRtdWwiLAkJImQsdix0IiwJMCwgICAgKGludCkgTV9ETVVMLAlJTlNOX01BQ1JPLAkJMCwJCUkzLAkJMCwJTTMyfEk2OSB9LAorQEAgLTEyNDMsOSArMTI0OSw5IEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KKyB7ImxkIiwJCQkicywtYigrUikiLAkweGVjMTgwMDAwLCAweGZjMWMwMDAwLCBXUl8xLAkJCVJEX3BjLAkJSTY5LAkJMCwJMCB9LAorIHsibGQiLAkJCSJ0LEEoYikiLAkwLCAgICAoaW50KSBNX0xEX0FCLAlJTlNOX01BQ1JPLAkJMCwJCUkxLAkJMCwJMCB9LAorIHsibGQiLAkJCSJ0LG8oYikiLAkweGRjMDAwMDAwLCAweGZjMDAwMDAwLCBXUl8xfFJEXzN8TE0sCQkwLAkJSTMsCQkwLAkwIH0sCisteyJsZGFkZHciLAkJInQsYiIsCQkweDcwMDAwMDEwLCAweGZjMDBmZmZmLAlNT0RfMXxSRF8yfExNfFNNLAkwLAkJWExSLAkJMCwJMCB9LAorLXsibGRhZGR3dSIsCQkidCxiIiwJCTB4NzAwMDAwMTEsIDB4ZmMwMGZmZmYsCU1PRF8xfFJEXzJ8TE18U00sCTAsCQlYTFIsCQkwLAkwIH0sCisteyJsZGFkZGQiLAkJInQsYiIsCQkweDcwMDAwMDEyLCAweGZjMDBmZmZmLAlNT0RfMXxSRF8yfExNfFNNLAkwLAkJWExSLAkJMCwJMCB9LAorK3sibGRhZGR3IiwJCSJ0LGIiLAkJMHg3MDAwMDAxMCwgMHhmYzAwZmZmZiwJTU9EXzF8UkRfMnxTTSwJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCisreyJsZGFkZHd1IiwJCSJ0LGIiLAkJMHg3MDAwMDAxMSwgMHhmYzAwZmZmZiwJTU9EXzF8UkRfMnxTTSwJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCisreyJsZGFkZGQiLAkJInQsYiIsCQkweDcwMDAwMDEyLCAweGZjMDBmZmZmLAlNT0RfMXxSRF8yfFNNLAkJMCwJCVhMUnxYTFAsCTAsCTAgfSwKKyB7ImxkYzEiLAkJIlQsbyhiKSIsCTB4ZDQwMDAwMDAsIDB4ZmMwMDAwMDAsIFdSXzF8UkRfM3xDTER8RlBfRCwJMCwJCUkyLAkJMCwJU0YgfSwKKyB7ImxkYzEiLAkJIkUsbyhiKSIsCTB4ZDQwMDAwMDAsIDB4ZmMwMDAwMDAsIFdSXzF8UkRfM3xDTER8RlBfRCwJMCwJCUkyLAkJMCwJU0YgfSwKKyB7ImxkYzEiLAkJIlQsQShiKSIsCTAsICAgIChpbnQpIE1fTERDMV9BQiwJSU5TTl9NQUNSTywJCUlOU04yX01fRlBfRCwJSTIsCQkwLAlTRiB9LAorQEAgLTE0MTAsNyArMTQxNiw3IEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KKyB7Im1mbG8iLAkJImQsOSIsCQkweDAwMDAwMDEyLCAweGZmOWYwN2ZmLCBXUl8xfFJEX0xPLAkJMCwJCTAsCQlEMzIsCTAgfSwKKyB7Im1mbG8xIiwJCSJkIiwJCTB4NzAwMDAwMTIsIDB4ZmZmZjA3ZmYsCVdSXzF8UkRfTE8sCQkwLAkJRUUsCQkwLAkwIH0sCisgeyJtZmxoeHUiLAkJImQiLAkJMHgwMDAwMDA1MiwgMHhmZmZmMDdmZiwJV1JfMXxNT0RfSElMTywJCTAsCQkwLAkJU01ULAkwIH0sCisteyJtZmNyIiwJCSJ0LHMiLAkJMHg3MDAwMDAxOCwgMHhmYzAwZmZmZiwgV1JfMXxSRF8yLAkJMCwJCVhMUiwJCTAsCTAgfSwKKyt7Im1mY3IiLAkJInQscyIsCQkweDcwMDAwMDE4LCAweGZjMDBmZmZmLCBXUl8xLAkJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCisgeyJtZnNhIiwJCSJkIiwJCTB4MDAwMDAwMjgsIDB4ZmZmZjA3ZmYsCVdSXzEsCQkJMCwJCUVFLAkJMCwJMCB9LAorIHsibWluLm9iIiwJCSJYLFksUSIsCTB4NzgwMDAwMDYsIDB4ZmMyMDAwM2YsCVdSXzF8UkRfMnxSRF8zfEZQX0QsCTAsCQlTQjEsCQlNWCwJMCB9LAorIHsibWluLm9iIiwJCSJELFMsUSIsCTB4NDgwMDAwMDYsIDB4ZmMyMDAwM2YsCVdSXzF8UkRfMnxSRF8zfEZQX0QsCTAsCQlONTQsCQkwLAkwIH0sCitAQCAtMTQ1NSwxMCArMTQ2MSwxMyBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9CisgLyogbW92ZSBpcyBhdCB0aGUgdG9wIG9mIHRoZSB0YWJsZS4gICovCisgeyJtc2duLnFoIiwJCSJYLFksUSIsCTB4NzgyMDAwMDAsIDB4ZmMyMDAwM2YsCVdSXzF8UkRfMnxSRF8zfEZQX0QsCTAsCQkwLAkJTVgsCTAgfSwKKyB7Im1zZ3NuZCIsCQkidCIsCQkwLCAgICAoaW50KSBNX01TR1NORCwJSU5TTl9NQUNSTywJCTAsCQlYTFIsCQkwLAkwIH0sCisreyJtc2dzbmRzIiwJCSJkLHQiLAkJMHg0YTAwMDAwMSwgMHhmZmUwMDdmZiwJV1JfMXxSRF8yfFJEX0MwfFdSX0MwLAkwLAkJWExQLAkJMCwJMCB9LAorIHsibXNnbGQiLAkJIiIsIAkJMCwgICAgKGludCkgTV9NU0dMRCwJSU5TTl9NQUNSTywJCTAsCQlYTFIsCQkwLAkwIH0sCisgeyJtc2dsZCIsCQkidCIsCQkwLCAgICAoaW50KSBNX01TR0xEX1QsCUlOU05fTUFDUk8sCQkwLAkJWExSLAkJMCwJMCB9LAorLXsibXNnd2FpdCIsCQkiIiwgCQkwLCAgICAoaW50KSBNX01TR1dBSVQsCUlOU05fTUFDUk8sCQkwLAkJWExSLAkJMCwJMCB9LAorLXsibXNnd2FpdCIsCQkidCIsCQkwLCAgICAoaW50KSBNX01TR1dBSVRfVCxJTlNOX01BQ1JPLAkJMCwJCVhMUiwJCTAsCTAgfSwKKyt7Im1zZ2xkcyIsCQkiZCx0IiwJCTB4NGEwMDAwMDIsIDB4ZmZlMDA3ZmYsCVdSXzF8UkRfMnxSRF9DMHxXUl9DMCwJMCwJCVhMUCwJCTAsCTAgfSwKKyt7Im1zZ3dhaXQiLAkJIiIsCQkwLCAgICAoaW50KSBNX01TR1dBSVQsICBJTlNOX01BQ1JPLAkJMCwJCVhMUnxYTFAsCTAsCTAgfSwKKyt7Im1zZ3dhaXQiLAkJInQiLAkJMCwgICAgKGludCkgTV9NU0dXQUlUX1QsSU5TTl9NQUNSTywJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCisreyJtc2dzeW5jIiwJCSIiLAkJMHg0YTAwMDAwNCwgMHhmZmZmZmZmZiwwLAkJCTAsCQlYTFAsCQkwLAkwIH0sCisgeyJtc3ViLmQiLAkJIkQsUixTLFQiLAkweDRjMDAwMDI5LCAweGZjMDAwMDNmLCBXUl8xfFJEXzJ8UkRfM3xSRF80fEZQX0QsIDAsCQlJNF8zMywJCTAsCUkzNyB9LAorIHsibXN1Yi5kIiwJCSJELFMsVCIsCTB4NDYyMDAwMTksIDB4ZmZlMDAwM2YsCVdSXzF8UkRfMnxSRF8zfEZQX0QsCTAsCQlJTDJFLAkJMCwJMCB9LAorIHsibXN1Yi5kIiwJCSJELFMsVCIsCTB4NzIyMDAwMTksIDB4ZmZlMDAwM2YsCVdSXzF8UkRfMnxSRF8zfEZQX0QsCTAsCQlJTDJGLAkJMCwJMCB9LAorQEAgLTE1MDgsNyArMTUxNyw3IEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KKyB7Im10bG8iLAkJInMsNyIsCQkweDAwMDAwMDEzLCAweGZjMWZlN2ZmLCBSRF8xfFdSX0xPLAkJMCwJCTAsCQlEMzIsCTAgfSwKKyB7Im10bG8xIiwJCSJzIiwJCTB4NzAwMDAwMTMsIDB4ZmMxZmZmZmYsCVJEXzF8V1JfTE8sCQkwLAkJRUUsCQkwLAkwIH0sCisgeyJtdGxoeCIsCQkicyIsCQkweDAwMDAwMDUzLCAweGZjMWZmZmZmLAlSRF8xfE1PRF9ISUxPLAkJMCwJCTAsCQlTTVQsCTAgfSwKKy17Im10Y3IiLAkJInQscyIsCQkweDcwMDAwMDE5LCAweGZjMDBmZmZmLCBSRF8xfFJEXzIsCQkwLAkJWExSLAkJMCwJMCB9LAorK3sibXRjciIsCQkidCxzIiwJCTB4NzAwMDAwMTksIDB4ZmMwMGZmZmYsIFJEXzEsCQkJMCwJCVhMUnxYTFAsCTAsCTAgfSwKKyB7Im10bTAiLAkJInMiLAkJMHg3MDAwMDAwOCwgMHhmYzFmZmZmZiwgUkRfMSwJCQkwLAkJSU9DVCwJCTAsCTAgfSwKKyB7Im10bTAiLCAgICAJCSJzLHQiLAkJMHg3MDAwMDAwOCwgMHhmYzAwZmZmZiwgUkRfMXxSRF8yLAkJMCwJCUlPQ1QzLAkJMCwJMCB9LAorIHsibXRtMSIsCQkicyIsCQkweDcwMDAwMDBjLCAweGZjMWZmZmZmLCBSRF8xLAkJCTAsCQlJT0NULAkJMCwJMCB9LAorQEAgLTE5NDUsOSArMTk1NCw5IEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KKyB7InN1eGMxIiwJCSJTLHQoYikiLAkweDRjMDAwMDBkLCAweGZjMDAwN2ZmLCBSRF8xfFJEXzJ8UkRfM3xTTXxGUF9ELAkwLAkJSTVfMzN8TjU1LAkwLAlJMzd9LAorIHsic3ciLAkJCSJ0LG8oYikiLAkweGFjMDAwMDAwLCAweGZjMDAwMDAwLAlSRF8xfFJEXzN8U00sCQkwLAkJSTEsCQkwLAkwIH0sCisgeyJzdyIsCQkJInQsQShiKSIsCTAsICAgIChpbnQpIE1fU1dfQUIsCUlOU05fTUFDUk8sCQkwLAkJSTEsCQkwLAkwIH0sCisteyJzd2FwdyIsCQkidCxiIiwJCTB4NzAwMDAwMTQsIDB4ZmMwMGZmZmYsIE1PRF8xfFJEXzJ8TE18U00sCTAsCQlYTFIsCQkwLAkwIH0sCisteyJzd2Fwd3UiLAkJInQsYiIsCQkweDcwMDAwMDE1LCAweGZjMDBmZmZmLCBNT0RfMXxSRF8yfExNfFNNLAkwLAkJWExSLAkJMCwJMCB9LAorLXsic3dhcGQiLAkJInQsYiIsCQkweDcwMDAwMDE2LCAweGZjMDBmZmZmLCBNT0RfMXxSRF8yfExNfFNNLAkwLAkJWExSLAkJMCwJMCB9LAorK3sic3dhcHciLAkJInQsYiIsCQkweDcwMDAwMDE0LCAweGZjMDBmZmZmLCBNT0RfMXxSRF8yfFNNLAkJMCwJCVhMUnxYTFAsCTAsCTAgfSwKKyt7InN3YXB3dSIsCQkidCxiIiwJCTB4NzAwMDAwMTUsIDB4ZmMwMGZmZmYsIE1PRF8xfFJEXzJ8U00sCQkwLAkJWExSfFhMUCwJMCwJMCB9LAorK3sic3dhcGQiLAkJInQsYiIsCQkweDcwMDAwMDE2LCAweGZjMDBmZmZmLCBNT0RfMXxSRF8yfFNNLAkJMCwJCVhMUnxYTFAsCTAsCTAgfSwKKyB7InN3YzAiLAkJIkUsbyhiKSIsCTB4ZTAwMDAwMDAsIDB4ZmMwMDAwMDAsCVJEXzN8UkRfQzB8U00sCQkwLAkJSTEsCQkwLAlJT0NUfElPQ1RQfElPQ1QyfEkzNyB9LAorIHsic3djMCIsCQkiRSxBKGIpIiwJMCwgICAgKGludCkgTV9TV0MwX0FCLAlJTlNOX01BQ1JPLAkJMCwJCUkxLAkJMCwJSU9DVHxJT0NUUHxJT0NUMnxJMzcgfSwKKyB7InN3YzEiLAkJIlQsbyhiKSIsCTB4ZTQwMDAwMDAsIDB4ZmMwMDAwMDAsCVJEXzF8UkRfM3xTTXxGUF9TLAkwLAkJSTEsCQkwLAkwIH0sCistLSAKKzIuMTQuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTItQ2hhbmdlLWRlZmF1bHQtZW11bGF0aW9uLWZvci1taXBzNjQtbGludXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTItQ2hhbmdlLWRlZmF1bHQtZW11bGF0aW9uLWZvci1taXBzNjQtbGludXgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhYzEwMWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEyLUNoYW5nZS1kZWZhdWx0LWVtdWxhdGlvbi1mb3ItbWlwczY0LWxpbnV4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotRnJvbSBmNDNmODMyZTAwMDljYWVhNmEzZDViY2FhOGYwYTY0ZDk0MzA3MmVhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMTo0NDoxNCArMDAwMAotU3ViamVjdDogW1BBVENIIDEyLzE1XSBDaGFuZ2UgZGVmYXVsdCBlbXVsYXRpb24gZm9yIG1pcHM2NCotKi1saW51eAotCi13ZSBjaGFuZ2UgdGhlIGRlZmF1bHQgZW11bGF0aW9ucyB0byBiZSBONjQgaW5zdGVhZCBvZiBOMzIKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFsgT0UgY29uZmlndXJhdGlvbiBTcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGJmZC9jb25maWcuYmZkICAgfCA4ICsrKystLS0tCi0gbGQvY29uZmlndXJlLnRndCB8IDggKysrKy0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2JmZC9jb25maWcuYmZkIGIvYmZkL2NvbmZpZy5iZmQKLWluZGV4IDFiMjgwMTZiOTEuLjYzNTk2YzJlYmMgMTAwNjQ0Ci0tLS0gYS9iZmQvY29uZmlnLmJmZAotKysrIGIvYmZkL2NvbmZpZy5iZmQKLUBAIC0xMTgzLDEyICsxMTgzLDEyIEBAIGNhc2UgIiR7dGFyZ30iIGluCi0gICAgIHRhcmdfc2VsdmVjcz0ibWlwc19lbGYzMl9sZV92ZWMgbWlwc19lbGY2NF9iZV92ZWMgbWlwc19lbGY2NF9sZV92ZWMgbWlwc19lY29mZl9iZV92ZWMgbWlwc19lY29mZl9sZV92ZWMiCi0gICAgIDs7Ci0gICBtaXBzNjQqZWwtKi1saW51eCopCi0tICAgIHRhcmdfZGVmdmVjPW1pcHNfZWxmMzJfbnRyYWRfbGVfdmVjCi0tICAgIHRhcmdfc2VsdmVjcz0ibWlwc19lbGYzMl9udHJhZF9iZV92ZWMgbWlwc19lbGYzMl90cmFkX2xlX3ZlYyBtaXBzX2VsZjMyX3RyYWRfYmVfdmVjIG1pcHNfZWxmNjRfdHJhZF9sZV92ZWMgbWlwc19lbGY2NF90cmFkX2JlX3ZlYyIKLSsgICAgdGFyZ19kZWZ2ZWM9bWlwc19lbGY2NF90cmFkX2xlX3ZlYwotKyAgICB0YXJnX3NlbHZlY3M9Im1pcHNfZWxmMzJfbnRyYWRfYmVfdmVjIG1pcHNfZWxmMzJfbnRyYWRfbGVfdmVjIG1pcHNfZWxmMzJfdHJhZF9sZV92ZWMgbWlwc19lbGYzMl90cmFkX2JlX3ZlYyBtaXBzX2VsZjY0X3RyYWRfYmVfdmVjIgotICAgICA7OwotICAgbWlwczY0Ki0qLWxpbnV4KikKLS0gICAgdGFyZ19kZWZ2ZWM9bWlwc19lbGYzMl9udHJhZF9iZV92ZWMKLS0gICAgdGFyZ19zZWx2ZWNzPSJtaXBzX2VsZjMyX250cmFkX2xlX3ZlYyBtaXBzX2VsZjMyX3RyYWRfYmVfdmVjIG1pcHNfZWxmMzJfdHJhZF9sZV92ZWMgbWlwc19lbGY2NF90cmFkX2JlX3ZlYyBtaXBzX2VsZjY0X3RyYWRfbGVfdmVjIgotKyAgICB0YXJnX2RlZnZlYz1taXBzX2VsZjY0X3RyYWRfYmVfdmVjCi0rICAgIHRhcmdfc2VsdmVjcz0ibWlwc19lbGYzMl9udHJhZF9iZV92ZWMgbWlwc19lbGYzMl9udHJhZF9iZV92ZWMgbWlwc19lbGYzMl90cmFkX2JlX3ZlYyBtaXBzX2VsZjMyX3RyYWRfbGVfdmVjIG1pcHNfZWxmNjRfdHJhZF9sZV92ZWMiCi0gICAgIDs7Ci0gICBtaXBzKmVsLSotbGludXgqKQotICAgICB0YXJnX2RlZnZlYz1taXBzX2VsZjMyX3RyYWRfbGVfdmVjCi1kaWZmIC0tZ2l0IGEvbGQvY29uZmlndXJlLnRndCBiL2xkL2NvbmZpZ3VyZS50Z3QKLWluZGV4IGI4NWM2YmIzNWEuLjRlNzczODNhMTkgMTAwNjQ0Ci0tLS0gYS9sZC9jb25maWd1cmUudGd0Ci0rKysgYi9sZC9jb25maWd1cmUudGd0Ci1AQCAtNTE4LDExICs1MTgsMTEgQEAgbWlwcyplbC0qLXZ4d29ya3MqKQl0YXJnX2VtdWw9ZWxmMzJlbG1pcHZ4d29ya3MKLSBtaXBzKi0qLXZ4d29ya3MqKQl0YXJnX2VtdWw9ZWxmMzJlYm1pcHZ4d29ya3MKLSAJCSAgICAgICAgdGFyZ19leHRyYV9lbXVscz0iZWxmMzJlbG1pcHZ4d29ya3MiIDs7Ci0gbWlwcyotKi13aW5kaXNzKQl0YXJnX2VtdWw9ZWxmMzJtaXBzd2luZGlzcyA7OwotLW1pcHM2NCplbC0qLWxpbnV4LSopCXRhcmdfZW11bD1lbGYzMmx0c21pcG4zMgotLQkJCXRhcmdfZXh0cmFfZW11bHM9ImVsZjMyYnRzbWlwbjMyIGVsZjMybHRzbWlwIGVsZjMyYnRzbWlwIGVsZjY0bHRzbWlwIGVsZjY0YnRzbWlwIgotK21pcHM2NCplbC0qLWxpbnV4LSopCXRhcmdfZW11bD1lbGY2NGx0c21pcAotKwkJCXRhcmdfZXh0cmFfZW11bHM9ImVsZjMyYnRzbWlwbjMyIGVsZjMybHRzbWlwbjMyIGVsZjMybHRzbWlwIGVsZjMyYnRzbWlwIGVsZjY0YnRzbWlwIgotIAkJCXRhcmdfZXh0cmFfbGlicGF0aD0kdGFyZ19leHRyYV9lbXVscyA7OwotLW1pcHM2NCotKi1saW51eC0qKQl0YXJnX2VtdWw9ZWxmMzJidHNtaXBuMzIKLS0JCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmx0c21pcG4zMiBlbGYzMmJ0c21pcCBlbGYzMmx0c21pcCBlbGY2NGJ0c21pcCBlbGY2NGx0c21pcCIKLSttaXBzNjQqLSotbGludXgtKikJdGFyZ19lbXVsPWVsZjY0YnRzbWlwCi0rCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJidHNtaXBuMzIgZWxmMzJsdHNtaXBuMzIgZWxmMzJidHNtaXAgZWxmMzJsdHNtaXAgZWxmNjRsdHNtaXAiCi0gCQkJdGFyZ19leHRyYV9saWJwYXRoPSR0YXJnX2V4dHJhX2VtdWxzIDs7Ci0gbWlwcyplbC0qLWxpbnV4LSopCXRhcmdfZW11bD1lbGYzMmx0c21pcAotIAkJCXRhcmdfZXh0cmFfZW11bHM9ImVsZjMyYnRzbWlwIGVsZjMybHRzbWlwbjMyIGVsZjY0bHRzbWlwIGVsZjMyYnRzbWlwbjMyIGVsZjY0YnRzbWlwIgotLS0gCi0yLjEyLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEzLUFkZC1zdXBwb3J0LWZvci1OZXRsb2dpYy1YTFAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTMtQWRkLXN1cHBvcnQtZm9yLU5ldGxvZ2ljLVhMUC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjAzZTA0Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTMtQWRkLXN1cHBvcnQtZm9yLU5ldGxvZ2ljLVhMUC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM5OSArMCwwIEBACi1Gcm9tIGZjNmZhNmE2ZTZlOWU2ZTVhZDcwODA3ODVhZjMxYjRlYTY4ZjYwYzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU3VuLCAxNCBGZWIgMjAxNiAxNzowNjoxOSArMDAwMAotU3ViamVjdDogW1BBVENIIDEzLzE1XSBBZGQgc3VwcG9ydCBmb3IgTmV0bG9naWMgWExQCi0KLVBhdGNoIEZyb206IE5lYnUgUGhpbGlwcyA8bnBoaWxpcHNAbmV0bG9naWNtaWNyby5jb20+Ci0KLVVzaW5nIHRoZSBtaXBzaXNhNjRyMm5sbSB0YXJnZXQsIGFkZCBzdXBwb3J0IGZvciBYTFAgZnJvbQotTmV0bG9naWMuIEFsc28sIHVwZGF0ZSB2ZW5kb3IgbmFtZSB0byBOTE0gd2hlcmV2ZXIgYXBwbGljYWJsZS4KLQotVXNlIDB4MDAwMDAwODAgZm9yIElOU05fWExQLCB0aGUgdmFsdWUgMHgwMDAwMDA0MCBoYXMgYWxyZWFkeSBiZWVuCi1hc3NpZ25lZCB0byBJTlNOX09DVEVPTjMKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEJhb3NoYW4gUGFuZyA8YmFvc2hhbi5wYW5nQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0gYmZkL2FvdXR4LmggICAgICAgICAgIHwgIDEgKwotIGJmZC9hcmNodXJlcy5jICAgICAgICB8ICAxICsKLSBiZmQvYmZkLWluMi5oICAgICAgICAgfCAgMSArCi0gYmZkL2NvbmZpZy5iZmQgICAgICAgIHwgIDUgKysrKysKLSBiZmQvY3B1LW1pcHMuYyAgICAgICAgfCAgNiArKysrLS0KLSBiZmQvZWxmeHgtbWlwcy5jICAgICAgfCAgOCArKysrKysrKwotIGJpbnV0aWxzL3JlYWRlbGYuYyAgICB8ICAxICsKLSBnYXMvY29uZmlnL3RjLW1pcHMuYyAgfCAgNCArKystCi0gZ2FzL2NvbmZpZ3VyZSAgICAgICAgIHwgIDMgKysrCi0gaW5jbHVkZS9lbGYvbWlwcy5oICAgIHwgIDEgKwotIGluY2x1ZGUvb3Bjb2RlL21pcHMuaCB8IDEwICsrKysrKysrLS0KLSBsZC9jb25maWd1cmUudGd0ICAgICAgfCAgMiArKwotIG9wY29kZXMvbWlwcy1kaXMuYyAgICB8IDEyICsrKysrLS0tLS0tLQotIG9wY29kZXMvbWlwcy1vcGMuYyAgICB8IDMzICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQotIDE0IGZpbGVzIGNoYW5nZWQsIDY0IGluc2VydGlvbnMoKyksIDI0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYmZkL2FvdXR4LmggYi9iZmQvYW91dHguaAotaW5kZXggZDMwZThiOGZiYy4uOTEzYjQ5OTc0NCAxMDA2NDQKLS0tLSBhL2JmZC9hb3V0eC5oCi0rKysgYi9iZmQvYW91dHguaAotQEAgLTgxMiw2ICs4MTIsNyBAQCBOQU1FIChhb3V0LCBtYWNoaW5lX3R5cGUpIChlbnVtIGJmZF9hcmNoaXRlY3R1cmUgYXJjaCwKLSAJY2FzZSBiZmRfbWFjaF9taXBzaXNhNjRyNjoKLSAJY2FzZSBiZmRfbWFjaF9taXBzX3NiMToKLSAJY2FzZSBiZmRfbWFjaF9taXBzX3hscjoKLSsJY2FzZSBiZmRfbWFjaF9taXBzX3hscDoKLSAJICAvKiBGSVhNRTogVGhlc2Ugc2hvdWxkIGJlIE1JUFMzLCBNSVBTNCwgTUlQUzE2LCBNSVBTMzIsIGV0Yy4gICovCi0gCSAgYXJjaF9mbGFncyA9IE1fTUlQUzI7Ci0gCSAgYnJlYWs7Ci1kaWZmIC0tZ2l0IGEvYmZkL2FyY2h1cmVzLmMgYi9iZmQvYXJjaHVyZXMuYwotaW5kZXggNmYzNWE1YjJhNy4uZDEyY2RmNjA5YSAxMDA2NDQKLS0tLSBhL2JmZC9hcmNodXJlcy5jCi0rKysgYi9iZmQvYXJjaHVyZXMuYwotQEAgLTE5Nyw2ICsxOTcsNyBAQCBERVNDUklQVElPTgotIC4jZGVmaW5lIGJmZF9tYWNoX21pcHNfb2N0ZW9uMgkJNjUwMgotIC4jZGVmaW5lIGJmZF9tYWNoX21pcHNfb2N0ZW9uMyAgICAgICAgICA2NTAzCi0gLiNkZWZpbmUgYmZkX21hY2hfbWlwc194bHIgICAgICAgICAgICAgIDg4NzY4MiAgIHsqIGRlY2ltYWwgJ1hMUicgICp9Ci0rLiNkZWZpbmUgYmZkX21hY2hfbWlwc194bHAgICAgICAgICAgICAgIDg4NzY4MCAgIHsqIGRlY2ltYWwgJ1hMUCcgICp9Ci0gLiNkZWZpbmUgYmZkX21hY2hfbWlwc2lzYTMyICAgICAgICAgICAgIDMyCi0gLiNkZWZpbmUgYmZkX21hY2hfbWlwc2lzYTMycjIgICAgICAgICAgIDMzCi0gLiNkZWZpbmUgYmZkX21hY2hfbWlwc2lzYTMycjMgICAgICAgICAgIDM0Ci1kaWZmIC0tZ2l0IGEvYmZkL2JmZC1pbjIuaCBiL2JmZC9iZmQtaW4yLmgKLWluZGV4IDYyODhjM2JiNGEuLmU5Zjk4NTlhN2IgMTAwNjQ0Ci0tLS0gYS9iZmQvYmZkLWluMi5oCi0rKysgYi9iZmQvYmZkLWluMi5oCi1AQCAtMjA0MSw2ICsyMDQxLDcgQEAgZW51bSBiZmRfYXJjaGl0ZWN0dXJlCi0gI2RlZmluZSBiZmRfbWFjaF9taXBzX29jdGVvbjIgICAgICAgICAgNjUwMgotICNkZWZpbmUgYmZkX21hY2hfbWlwc19vY3Rlb24zICAgICAgICAgIDY1MDMKLSAjZGVmaW5lIGJmZF9tYWNoX21pcHNfeGxyICAgICAgICAgICAgICA4ODc2ODIgICAvKiBkZWNpbWFsICdYTFInICAqLwotKyNkZWZpbmUgYmZkX21hY2hfbWlwc194bHAgICAgICAgICAgICAgIDg4NzY4MCAgIC8qIGRlY2ltYWwgJ1hMUCcgICovCi0gI2RlZmluZSBiZmRfbWFjaF9taXBzaXNhMzIgICAgICAgICAgICAgMzIKLSAjZGVmaW5lIGJmZF9tYWNoX21pcHNpc2EzMnIyICAgICAgICAgICAzMwotICNkZWZpbmUgYmZkX21hY2hfbWlwc2lzYTMycjMgICAgICAgICAgIDM0Ci1kaWZmIC0tZ2l0IGEvYmZkL2NvbmZpZy5iZmQgYi9iZmQvY29uZmlnLmJmZAotaW5kZXggNjM1OTZjMmViYy4uNmU5MjNmYjBlZCAxMDA2NDQKLS0tLSBhL2JmZC9jb25maWcuYmZkCi0rKysgYi9iZmQvY29uZmlnLmJmZAotQEAgLTExNjYsNiArMTE2NiwxMSBAQCBjYXNlICIke3Rhcmd9IiBpbgotICAgICB0YXJnX2RlZnZlYz1taXBzX2VsZjMyX2xlX3ZlYwotICAgICB0YXJnX3NlbHZlY3M9Im1pcHNfZWxmMzJfYmVfdmVjIG1pcHNfZWxmNjRfYmVfdmVjIG1pcHNfZWxmNjRfbGVfdmVjIgotICAgICA7OwotKyAgbWlwc2lzYTY0Ki0qLWVsZiopCi0rCXRhcmdfZGVmdmVjPW1pcHNfZWxmMzJfdHJhZF9iZV92ZWMKLSsJdGFyZ19zZWx2ZWNzPSJtaXBzX2VsZjMyX3RyYWRfbGVfdmVjIG1pcHNfZWxmNjRfdHJhZF9iZV92ZWMgbWlwc19lbGY2NF90cmFkX2xlX3ZlYyIKLSsJd2FudDY0PXRydWUKLSsJOzsKLSAgIG1pcHMqLSotZWxmKiB8IG1pcHMqLSotcnRlbXMqIHwgbWlwcyotKi13aW5kaXNzIHwgbWlwcyotKi1ub25lKQotICAgICB0YXJnX2RlZnZlYz1taXBzX2VsZjMyX2JlX3ZlYwotICAgICB0YXJnX3NlbHZlY3M9Im1pcHNfZWxmMzJfbGVfdmVjIG1pcHNfZWxmNjRfYmVfdmVjIG1pcHNfZWxmNjRfbGVfdmVjIgotZGlmZiAtLWdpdCBhL2JmZC9jcHUtbWlwcy5jIGIvYmZkL2NwdS1taXBzLmMKLWluZGV4IGI5ZWNkZDZlNTUuLmRmMWJmZmMyNWIgMTAwNjQ0Ci0tLS0gYS9iZmQvY3B1LW1pcHMuYwotKysrIGIvYmZkL2NwdS1taXBzLmMKLUBAIC0xMDQsNyArMTA0LDggQEAgZW51bQotICAgSV9taXBzb2N0ZW9uMiwKLSAgIElfbWlwc29jdGVvbjMsCi0gICBJX3hsciwKLS0gIElfbWljcm9taXBzCi0rICBJX21pY3JvbWlwcywKLSsgIElfeGxwCi0gfTsKLSAKLSAjZGVmaW5lIE5OKGluZGV4KSAoJmFyY2hfaW5mb19zdHJ1Y3RbKGluZGV4KSArIDFdKQotQEAgLTE1NSw3ICsxNTYsOCBAQCBzdGF0aWMgY29uc3QgYmZkX2FyY2hfaW5mb190eXBlIGFyY2hfaW5mb19zdHJ1Y3RbXSA9Ci0gICBOICg2NCwgNjQsIGJmZF9tYWNoX21pcHNfb2N0ZW9uMiwibWlwczpvY3Rlb24yIiwgIEZBTFNFLCBOTihJX21pcHNvY3Rlb24yKSksCi0gICBOICg2NCwgNjQsIGJmZF9tYWNoX21pcHNfb2N0ZW9uMywgIm1pcHM6b2N0ZW9uMyIsICBGQUxTRSwgTk4oSV9taXBzb2N0ZW9uMykpLAotICAgTiAoNjQsIDY0LCBiZmRfbWFjaF9taXBzX3hsciwgIm1pcHM6eGxyIiwgICAgICAgRkFMU0UsIE5OKElfeGxyKSksCi0tICBOICg2NCwgNjQsIGJmZF9tYWNoX21pcHNfbWljcm9taXBzLCJtaXBzOm1pY3JvbWlwcyIsRkFMU0UsMCkKLSsgIE4gKDY0LCA2NCwgYmZkX21hY2hfbWlwc19taWNyb21pcHMsIm1pcHM6bWljcm9taXBzIixGQUxTRSxOTihJX21pY3JvbWlwcykpLAotKyAgTiAoNjQsIDY0LCBiZmRfbWFjaF9taXBzX3hscCwgIm1pcHM6eGxwIiwgICAgICBGQUxTRSwgMCkKLSB9OwotIAotIC8qIFRoZSBkZWZhdWx0IGFyY2hpdGVjdHVyZSBpcyBtaXBzOjMwMDAsIGJ1dCB3aXRoIGEgbWFjaGluZSBudW1iZXIgb2YKLWRpZmYgLS1naXQgYS9iZmQvZWxmeHgtbWlwcy5jIGIvYmZkL2VsZnh4LW1pcHMuYwotaW5kZXggNzIzODUzZjgyMS4uN2I0NjQyMTFjMyAxMDA2NDQKLS0tLSBhL2JmZC9lbGZ4eC1taXBzLmMKLSsrKyBiL2JmZC9lbGZ4eC1taXBzLmMKLUBAIC02Nzg3LDYgKzY3ODcsOSBAQCBfYmZkX2VsZl9taXBzX21hY2ggKGZsYWd3b3JkIGZsYWdzKQotICAgICBjYXNlIEVfTUlQU19NQUNIX1hMUjoKLSAgICAgICByZXR1cm4gYmZkX21hY2hfbWlwc194bHI7Ci0gCi0rCWNhc2UgRV9NSVBTX01BQ0hfWExQOgotKyAgICAgIHJldHVybiBiZmRfbWFjaF9taXBzX3hscDsKLSsKLSAgICAgZGVmYXVsdDoKLSAgICAgICBzd2l0Y2ggKGZsYWdzICYgRUZfTUlQU19BUkNIKQotIAl7Ci1AQCAtMTIxMDYsNiArMTIxMDksMTAgQEAgbWlwc19zZXRfaXNhX2ZsYWdzIChiZmQgKmFiZmQpCi0gICAgICAgdmFsID0gRV9NSVBTX0FSQ0hfNjRSMiB8IEVfTUlQU19NQUNIX09DVEVPTjI7Ci0gICAgICAgYnJlYWs7Ci0gCi0rCWNhc2UgYmZkX21hY2hfbWlwc194bHA6Ci0rCSAgdmFsID0gRV9NSVBTX0FSQ0hfNjRSMiB8IEVfTUlQU19NQUNIX1hMUDsKLSsJICBicmVhazsKLSsKLSAgICAgY2FzZSBiZmRfbWFjaF9taXBzaXNhMzI6Ci0gICAgICAgdmFsID0gRV9NSVBTX0FSQ0hfMzI7Ci0gICAgICAgYnJlYWs7Ci1AQCAtMTQxMzUsNiArMTQxNDIsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG1pcHNfbWFjaF9leHRlbnNpb24gbWlwc19tYWNoX2V4dGVuc2lvbnNbXSA9Ci0gICB7IGJmZF9tYWNoX21pcHNfb2N0ZW9ucCwgYmZkX21hY2hfbWlwc19vY3Rlb24gfSwKLSAgIHsgYmZkX21hY2hfbWlwc19vY3Rlb24sIGJmZF9tYWNoX21pcHNpc2E2NHIyIH0sCi0gICB7IGJmZF9tYWNoX21pcHNfbG9vbmdzb25fM2EsIGJmZF9tYWNoX21pcHNpc2E2NHIyIH0sCi0rICB7IGJmZF9tYWNoX21pcHNfeGxwLCBiZmRfbWFjaF9taXBzaXNhNjRyMiB9LAotIAotICAgLyogTUlQUzY0IGV4dGVuc2lvbnMuICAqLwotICAgeyBiZmRfbWFjaF9taXBzaXNhNjRyMiwgYmZkX21hY2hfbWlwc2lzYTY0IH0sCi1kaWZmIC0tZ2l0IGEvYmludXRpbHMvcmVhZGVsZi5jIGIvYmludXRpbHMvcmVhZGVsZi5jCi1pbmRleCA4ZGNhNDkwMjI2Li5iNWY1NzdmNWExIDEwMDY0NAotLS0tIGEvYmludXRpbHMvcmVhZGVsZi5jCi0rKysgYi9iaW51dGlscy9yZWFkZWxmLmMKLUBAIC0zMjYxLDYgKzMyNjEsNyBAQCBnZXRfbWFjaGluZV9mbGFncyAodW5zaWduZWQgZV9mbGFncywgdW5zaWduZWQgZV9tYWNoaW5lKQotIAkgICAgY2FzZSBFX01JUFNfTUFDSF9PQ1RFT04yOiBzdHJjYXQgKGJ1ZiwgIiwgb2N0ZW9uMiIpOyBicmVhazsKLSAJICAgIGNhc2UgRV9NSVBTX01BQ0hfT0NURU9OMzogc3RyY2F0IChidWYsICIsIG9jdGVvbjMiKTsgYnJlYWs7Ci0gCSAgICBjYXNlIEVfTUlQU19NQUNIX1hMUjogIHN0cmNhdCAoYnVmLCAiLCB4bHIiKTsgYnJlYWs7Ci0rCQljYXNlIEVfTUlQU19NQUNIX1hMUDogIHN0cmNhdCAoYnVmLCAiLCB4bHAiKTsgYnJlYWs7Ci0gCSAgICBjYXNlIDA6Ci0gCSAgICAvKiBXZSBzaW1wbHkgaWdub3JlIHRoZSBmaWVsZCBpbiB0aGlzIGNhc2UgdG8gYXZvaWQgY29uZnVzaW9uOgotIAkgICAgICAgTUlQUyBFTEYgZG9lcyBub3Qgc3BlY2lmeSBFRl9NSVBTX01BQ0gsIGl0IGlzIGEgR05VCi1kaWZmIC0tZ2l0IGEvZ2FzL2NvbmZpZy90Yy1taXBzLmMgYi9nYXMvY29uZmlnL3RjLW1pcHMuYwotaW5kZXggZTI0ZTg0ZGY1NC4uYmFmODRlNDE5ZCAxMDA2NDQKLS0tLSBhL2dhcy9jb25maWcvdGMtbWlwcy5jCi0rKysgYi9nYXMvY29uZmlnL3RjLW1pcHMuYwotQEAgLTU1Miw2ICs1NTIsNyBAQCBzdGF0aWMgaW50IG1pcHNfMzJiaXRtb2RlID0gMDsKLSAgICB8fCBtaXBzX29wdHMuYXJjaCA9PSBDUFVfUk03MDAwICAgICAgICAgICAgICAgICAgICBcCi0gICAgfHwgbWlwc19vcHRzLmFyY2ggPT0gQ1BVX1ZSNTUwMCAgICAgICAgICAgICAgICAgICAgXAotICAgIHx8IG1pcHNfb3B0cy5taWNyb21pcHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICB8fCBtaXBzX29wdHMuYXJjaCA9PSBDUFVfWExQICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKQotIAotIC8qIFdoZXRoZXIgdGhlIHByb2Nlc3NvciB1c2VzIGhhcmR3YXJlIGludGVybG9ja3MgdG8gcHJvdGVjdCByZWFkcwotQEAgLTU4MSw2ICs1ODIsNyBAQCBzdGF0aWMgaW50IG1pcHNfMzJiaXRtb2RlID0gMDsKLSAgICAgJiYgbWlwc19vcHRzLmlzYSAhPSBJU0FfTUlQUzMpICAgICAgICAgICAgICAgICAgICBcCi0gICAgfHwgbWlwc19vcHRzLmFyY2ggPT0gQ1BVX1I0MzAwICAgICAgICAgICAgICAgICAgICAgXAotICAgIHx8IG1pcHNfb3B0cy5taWNyb21pcHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICB8fCBtaXBzX29wdHMuYXJjaCA9PSBDUFVfWExQICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKQotIAotIC8qIFdoZXRoZXIgdGhlIHByb2Nlc3NvciB1c2VzIGhhcmR3YXJlIGludGVybG9ja3MgdG8gcHJvdGVjdCByZWFkcwotQEAgLTE5NDA5LDcgKzE5NDExLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtaXBzX2NwdV9pbmZvIG1pcHNfY3B1X2luZm9fdGFibGVbXSA9Ci0gICAvKiBCcm9hZGNvbSBYTFAuCi0gICAgICBYTFAgaXMgbW9zdGx5IGxpa2UgWExSLCB3aXRoIHRoZSBwcm9taW5lbnQgZXhjZXB0aW9uIHRoYXQgaXQgaXMKLSAgICAgIE1JUFM2NFIyIHJhdGhlciB0aGFuIE1JUFM2NC4gICovCi0tICB7ICJ4bHAiLAkgICAgICAwLCAwLAkJCUlTQV9NSVBTNjRSMiwgQ1BVX1hMUiB9LAotKyAgeyAieGxwIiwJICAgICAgMCwgMCwJCQlJU0FfTUlQUzY0UjIsIENQVV9YTFAgfSwKLSAKLSAgIC8qIE1JUFMgNjQgUmVsZWFzZSA2ICovCi0gICB7ICJpNjQwMCIsCSAgICAgIDAsIEFTRV9NU0EsCQlJU0FfTUlQUzY0UjYsIENQVV9NSVBTNjRSNn0sCi1kaWZmIC0tZ2l0IGEvZ2FzL2NvbmZpZ3VyZSBiL2dhcy9jb25maWd1cmUKLWluZGV4IGEzNmYxYWUxNjEuLjk5ZjBhOTRlMjAgMTAwNzU1Ci0tLS0gYS9nYXMvY29uZmlndXJlCi0rKysgYi9nYXMvY29uZmlndXJlCi1AQCAtMTI5ODksNiArMTI5ODksOSBAQCBfQUNFT0YKLSAJICBtaXBzaXNhNjRyNiB8IG1pcHNpc2E2NHI2ZWwpCi0gCSAgICBtaXBzX2NwdT1taXBzNjRyNgotIAkgICAgOzsKLSsJICBtaXBzaXNhNjRyMm5sbSB8IG1pcHNpc2E2NHIybmxtZWwpCi0rCQltaXBzX2NwdT14bHAKLSsJCTs7Ci0gCSAgbWlwc3R4MzkgfCBtaXBzdHgzOWVsKQotIAkgICAgbWlwc19jcHU9cjM5MDAKLSAJICAgIDs7Ci1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9lbGYvbWlwcy5oIGIvaW5jbHVkZS9lbGYvbWlwcy5oCi1pbmRleCAzZTI3YjA1MTIyLi44MWVhNzhhODE3IDEwMDY0NAotLS0tIGEvaW5jbHVkZS9lbGYvbWlwcy5oCi0rKysgYi9pbmNsdWRlL2VsZi9taXBzLmgKLUBAIC0yOTAsNiArMjkwLDcgQEAgRU5EX1JFTE9DX05VTUJFUlMgKFJfTUlQU19tYXhleHQpCi0gI2RlZmluZSBFX01JUFNfTUFDSF9TQjEgICAgICAgICAweDAwOGEwMDAwCi0gI2RlZmluZSBFX01JUFNfTUFDSF9PQ1RFT04JMHgwMDhiMDAwMAotICNkZWZpbmUgRV9NSVBTX01BQ0hfWExSICAgICAJMHgwMDhjMDAwMAotKyNkZWZpbmUgRV9NSVBTX01BQ0hfWExQICAgICAgICAgMHgwMDhmMDAwMAotICNkZWZpbmUgRV9NSVBTX01BQ0hfT0NURU9OMgkweDAwOGQwMDAwCi0gI2RlZmluZSBFX01JUFNfTUFDSF9PQ1RFT04zCTB4MDA4ZTAwMDAKLSAjZGVmaW5lIEVfTUlQU19NQUNIXzU0MDAJMHgwMDkxMDAwMAotZGlmZiAtLWdpdCBhL2luY2x1ZGUvb3Bjb2RlL21pcHMuaCBiL2luY2x1ZGUvb3Bjb2RlL21pcHMuaAotaW5kZXggMGQwNDNkOTUyMC4uNDUwZTljMmQ2NyAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvb3Bjb2RlL21pcHMuaAotKysrIGIvaW5jbHVkZS9vcGNvZGUvbWlwcy5oCi1AQCAtMTI0NCw4ICsxMjQ0LDEwIEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgbWlwc19pc2FfdGFibGVbXSA9IHsKLSAjZGVmaW5lIElOU05fTE9PTkdTT05fMkYgICAgICAgICAgMHg4MDAwMDAwMAotIC8qIExvb25nc29uIDNBLiAgKi8KLSAjZGVmaW5lIElOU05fTE9PTkdTT05fM0EgICAgICAgICAgMHgwMDAwMDQwMAotLS8qIFJNSSBYbHIgaW5zdHJ1Y3Rpb24gKi8KLS0jZGVmaW5lIElOU05fWExSICAgICAgICAgICAgICAgICAweDAwMDAwMDIwCi0rLyogTmV0bG9naWMgWGxyIGluc3RydWN0aW9uICovCi0rI2RlZmluZSBJTlNOX1hMUgkJMHgwMDAwMDAyMAotKy8qIE5ldGxvZ2ljIFhsUCBpbnN0cnVjdGlvbiAqLwotKyNkZWZpbmUgSU5TTl9YTFAJCTB4MDAwMDAwODAKLSAKLSAvKiBEU1AgQVNFICovCi0gI2RlZmluZSBBU0VfRFNQCQkJMHgwMDAwMDAwMQotQEAgLTEzNDQsNiArMTM0Niw3IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgbWlwc19pc2FfdGFibGVbXSA9IHsKLSAjZGVmaW5lIENQVV9PQ1RFT04yCTY1MDIKLSAjZGVmaW5lIENQVV9PQ1RFT04zCTY1MDMKLSAjZGVmaW5lIENQVV9YTFIgICAgIAk4ODc2ODIgICAJLyogZGVjaW1hbCAnWExSJyAgICovCi0rI2RlZmluZSBDUFVfWExQICAgICAgICAgODg3NjgwICAgICAgLyogZGVjaW1hbCAnWExQJyAgICovCi0gCi0gLyogUmV0dXJuIHRydWUgaWYgdGhlIGdpdmVuIENQVSBpcyBpbmNsdWRlZCBpbiBJTlNOXyogbWFzayBNQVNLLiAgKi8KLSAKLUBAIC0xNDIxLDYgKzE0MjQsOSBAQCBjcHVfaXNfbWVtYmVyIChpbnQgY3B1LCB1bnNpZ25lZCBpbnQgbWFzaykKLSAgICAgICByZXR1cm4gKChtYXNrICYgSU5TTl9JU0FfTUFTSykgPT0gSU5TTl9JU0EzMlI2KQotIAkgICAgIHx8ICgobWFzayAmIElOU05fSVNBX01BU0spID09IElOU05fSVNBNjRSNik7Ci0gCi0rICAgIGNhc2UgQ1BVX1hMUDoKLSsgICAgICByZXR1cm4gKG1hc2sgJiBJTlNOX1hMUCkgIT0gMDsKLSsKLSAgICAgZGVmYXVsdDoKLSAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgIH0KLWRpZmYgLS1naXQgYS9sZC9jb25maWd1cmUudGd0IGIvbGQvY29uZmlndXJlLnRndAotaW5kZXggNGU3NzM4M2ExOS4uOGE4MWY3YWMzOSAxMDA2NDQKLS0tLSBhL2xkL2NvbmZpZ3VyZS50Z3QKLSsrKyBiL2xkL2NvbmZpZ3VyZS50Z3QKLUBAIC01MDQsNiArNTA0LDggQEAgbWlwcyplbC1zZGUtZWxmKiB8IG1pcHMqZWwtbXRpLWVsZiogfCBtaXBzKmVsLWltZy1lbGYqKQotIG1pcHMqLXNkZS1lbGYqIHwgbWlwcyotbXRpLWVsZiogfCBtaXBzKi1pbWctZWxmKikKLSAJCQl0YXJnX2VtdWw9ZWxmMzJidHNtaXAKLSAJCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmx0c21pcCBlbGYzMmJ0c21pcG4zMiBlbGY2NGJ0c21pcCBlbGYzMmx0c21pcG4zMiBlbGY2NGx0c21pcCIgOzsKLSttaXBzaXNhNjQqLSotZWxmKikJdGFyZ19lbXVsPWVsZjMyYnRzbWlwCi0rCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJsdHNtaXAgZWxmNjRidHNtaXAgZWxmNjRsdHNtaXAiIDs7Ci0gbWlwczY0KmVsLXBzMi1lbGYqKQl0YXJnX2VtdWw9ZWxmMzJscjU5MDBuMzIKLSAJCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmxyNTkwMCIKLSAJCQl0YXJnX2V4dHJhX2xpYnBhdGg9JHRhcmdfZXh0cmFfZW11bHMgOzsKLWRpZmYgLS1naXQgYS9vcGNvZGVzL21pcHMtZGlzLmMgYi9vcGNvZGVzL21pcHMtZGlzLmMKLWluZGV4IGJiOTkxMmU0NjIuLjcwZWNjNTE3MTcgMTAwNjQ0Ci0tLS0gYS9vcGNvZGVzL21pcHMtZGlzLmMKLSsrKyBiL29wY29kZXMvbWlwcy1kaXMuYwotQEAgLTY0OCwxMyArNjQ4LDExIEBAIGNvbnN0IHN0cnVjdCBtaXBzX2FyY2hfY2hvaWNlIG1pcHNfYXJjaF9jaG9pY2VzW10gPQotICAgICBtaXBzX2NwMHNlbF9uYW1lc194bHIsIEFSUkFZX1NJWkUgKG1pcHNfY3Awc2VsX25hbWVzX3hsciksCi0gICAgIG1pcHNfY3AxX25hbWVzX21pcHMzMjY0LCBtaXBzX2h3cl9uYW1lc19udW1lcmljIH0sCi0gCi0tICAvKiBYTFAgaXMgbW9zdGx5IGxpa2UgWExSLCB3aXRoIHRoZSBwcm9taW5lbnQgZXhjZXB0aW9uIGl0IGlzIGJlaW5nCi0tICAgICBNSVBTNjRSMi4gICovCi0tICB7ICJ4bHAiLCAxLCBiZmRfbWFjaF9taXBzX3hsciwgQ1BVX1hMUiwKLS0gICAgSVNBX01JUFM2NFIyIHwgSU5TTl9YTFIsIDAsCi0tICAgIG1pcHNfY3AwX25hbWVzX3hsciwKLS0gICAgbWlwc19jcDBzZWxfbmFtZXNfeGxyLCBBUlJBWV9TSVpFIChtaXBzX2NwMHNlbF9uYW1lc194bHIpLAotLSAgICBtaXBzX2NwMV9uYW1lc19taXBzMzI2NCwgbWlwc19od3JfbmFtZXNfbnVtZXJpYyB9LAotKyAgeyAieGxwIiwgMSwgYmZkX21hY2hfbWlwc194bHAsIENQVV9YTFAsCi0rICAgIElTQV9NSVBTNjRSMiB8IElOU05fWExQLCAwLAotKyAgICBtaXBzX2NwMF9uYW1lc19taXBzMzI2NHIyLAotKyAgICBtaXBzX2NwMHNlbF9uYW1lc19taXBzMzI2NHIyLCBBUlJBWV9TSVpFIChtaXBzX2NwMHNlbF9uYW1lc19taXBzMzI2NHIyKSwKLSsgICAgbWlwc19jcDFfbmFtZXNfbWlwczMyNjQsIG1pcHNfaHdyX25hbWVzX21pcHMzMjY0cjIgfSwKLSAKLSAgIC8qIFRoaXMgZW50cnksIG1pcHMxNiwgaXMgaGVyZSBvbmx5IGZvciBJU0EvcHJvY2Vzc29yIHNlbGVjdGlvbjsgZG8KLSAgICAgIG5vdCBwcmludCBpdHMgbmFtZS4gICovCi1kaWZmIC0tZ2l0IGEvb3Bjb2Rlcy9taXBzLW9wYy5jIGIvb3Bjb2Rlcy9taXBzLW9wYy5jCi1pbmRleCA1Y2I4ZTczNjVmLi5mMjA3NDg1NmEyIDEwMDY0NAotLS0tIGEvb3Bjb2Rlcy9taXBzLW9wYy5jCi0rKysgYi9vcGNvZGVzL21pcHMtb3BjLmMKLUBAIC0zMjAsNyArMzIwLDggQEAgZGVjb2RlX21pcHNfb3BlcmFuZCAoY29uc3QgY2hhciAqcCkKLSAjZGVmaW5lIElPQ1RQCShJTlNOX09DVEVPTlAgfCBJTlNOX09DVEVPTjIgfCBJTlNOX09DVEVPTjMpCi0gI2RlZmluZSBJT0NUMgkoSU5TTl9PQ1RFT04yIHwgSU5TTl9PQ1RFT04zKQotICNkZWZpbmUgSU9DVDMJSU5TTl9PQ1RFT04zCi0tI2RlZmluZSBYTFIgICAgIElOU05fWExSCi0rI2RlZmluZSBYTFIJSU5TTl9YTFIKLSsjZGVmaW5lIFhMUAlJTlNOX1hMUAotICNkZWZpbmUgSVZJUlQJQVNFX1ZJUlQKLSAjZGVmaW5lIElWSVJUNjQJQVNFX1ZJUlQ2NAotIAotQEAgLTk1OCw2ICs5NTksNyBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9Ci0geyJjbG8iLAkJCSJVLHMiLAkJMHg3MDAwMDAyMSwgMHhmYzAwMDdmZiwgV1JfMXxSRF8yLAkJMCwJCUkzMnxONTUsCTAsCUkzNyB9LAotIHsiY2x6IiwJCQkiZCxzIiwJCTB4MDAwMDAwNTAsIDB4ZmMxZjA3ZmYsIFdSXzF8UkRfMiwJCTAsCQlJMzcsCQkwLAkwIH0sCi0geyJjbHoiLAkJCSJVLHMiLAkJMHg3MDAwMDAyMCwgMHhmYzAwMDdmZiwgV1JfMXxSRF8yLAkJMCwJCUkzMnxONTUsCTAsCUkzNyB9LAotK3siY3JjIiwJCQkiZCxzLHQiLAkweDcwMDAwMDFjLCAweGZjMDAwN2ZmLAlXUl8xfFJEXzJ8UkRfMywJMCwJCVhMUCwgCQkwLAkwIH0sCi0gLyogY3RjMCBpcyBhdCB0aGUgYm90dG9tIG9mIHRoZSB0YWJsZS4gICovCi0geyJjdGMxIiwJCSJ0LEciLAkJMHg0NGMwMDAwMCwgMHhmZmUwMDdmZiwJUkRfMXxXUl9DQ3xDTSwJCTAsCQlJMSwJCTAsCTAgfSwKLSB7ImN0YzEiLAkJInQsUyIsCQkweDQ0YzAwMDAwLCAweGZmZTAwN2ZmLAlSRF8xfFdSX0NDfENNLAkJMCwJCUkxLAkJMCwJMCB9LAotQEAgLTk5MCwxMiArOTkyLDEzIEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KLSB7ImRhZGRpdSIsCQkidCxyLGoiLAkweDY0MDAwMDAwLCAweGZjMDAwMDAwLCBXUl8xfFJEXzIsCQkwLAkJSTMsCQkwLAkwIH0sCi0geyJkYWRkdSIsCQkiZCx2LHQiLAkweDAwMDAwMDJkLCAweGZjMDAwN2ZmLCBXUl8xfFJEXzJ8UkRfMywJCTAsCQlJMywJCTAsCTAgfSwKLSB7ImRhZGR1IiwJCSJ0LHIsSSIsCTAsICAgIChpbnQpIE1fREFERFVfSSwJSU5TTl9NQUNSTywJCTAsCQlJMywJCTAsCTAgfSwKLS17ImRhZGR3YyIsCQkiZCxzLHQiLCAJMHg3MDAwMDAzOCwgMHhmYzAwMDdmZiwgV1JfMXxSRF8yfFJEXzN8V1JfQzB8UkRfQzAsIDAsCQlYTFIsCQkwLAkwIH0sCi0reyJkYWRkd2MiLAkJImQscyx0IiwgCTB4NzAwMDAwMzgsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMnxSRF8zfFdSX0MwfFJEX0MwLCAwLAkJWExSfFhMUCwJMCwJMCB9LAotIHsiZGJyZWFrIiwJCSIiLAkJMHg3MDAwMDAzZiwgMHhmZmZmZmZmZiwJMCwJCQkwLAkJTjUsCQkwLAkwIH0sCi0geyJkY2xvIiwJCSJkLHMiLAkJMHgwMDAwMDA1MywgMHhmYzFmMDdmZiwgV1JfMXxSRF8yLAkJMCwJCUk2OSwJCTAsCTAgfSwKLSB7ImRjbG8iLAkJIlUscyIsCSAJMHg3MDAwMDAyNSwgMHhmYzAwMDdmZiwgV1JfMXxSRF8yLCAJMCwJCUk2NHxONTUsCTAsCUk2OSB9LAotIHsiZGNseiIsCQkiZCxzIiwJCTB4MDAwMDAwNTIsIDB4ZmMxZjA3ZmYsIFdSXzF8UkRfMiwJCTAsCQlJNjksCQkwLAkwIH0sCi0geyJkY2x6IiwJCSJVLHMiLAkgCTB4NzAwMDAwMjQsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMiwgCTAsCQlJNjR8TjU1LAkwLAlJNjkgfSwKLSt7ImRjcmMiLAkJImQscyx0IiwJMHg3MDAwMDAxZCwgMHhmYzAwMDdmZiwgV1JfMXxSRF8yfFJEXzMsCTAsCQlYTFAsIAkJMCwJMCB9LAotIC8qIGRjdHIgYW5kIGRjdHcgYXJlIHVzZWQgb24gdGhlIHI1MDAwLiAgKi8KLSB7ImRjdHIiLAkJIm8oYikiLAkgCTB4YmMwNTAwMDAsIDB4ZmMxZjAwMDAsIFJEXzIsCQkJMCwJCUkzLAkJMCwJMCB9LAotIHsiZGN0dyIsCQkibyhiKSIsCQkweGJjMDkwMDAwLCAweGZjMWYwMDAwLCBSRF8yLAkJCTAsCQlJMywJCTAsCTAgfSwKLUBAIC0xMDY3LDYgKzEwNzAsNyBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9Ci0geyJkbWZjMCIsCQkidCxHLEgiLAkweDQwMjAwMDAwLCAweGZmZTAwN2Y4LAlXUl8xfFJEX0MwfExDLAkJMCwJCUk2NCwJCTAsCTAgfSwKLSB7ImRtZmdjMCIsCQkidCxHIiwJCTB4NDA2MDAxMDAsIDB4ZmZlMDA3ZmYsIFdSXzF8UkRfQzB8TEMsCQkwLAkJMCwJCUlWSVJUNjQsIDAgfSwKLSB7ImRtZmdjMCIsCQkidCxHLEgiLAkweDQwNjAwMTAwLCAweGZmZTAwN2Y4LCBXUl8xfFJEX0MwfExDLAkJMCwJCTAsCQlJVklSVDY0LCAwIH0sCi0reyJkbWZ1ciIsCQkidCxkIiwJCTB4NzAwMDAwMWUsIDB4ZmZlMDA3ZmYsIFdSXzEsCQkJMCwJCVhMUCwJCTAsCTAgfSwKLSB7ImRtdCIsCQkJIiIsCQkweDQxNjAwYmMxLCAweGZmZmZmZmZmLCBUUkFQLAkJCTAsCQkwLAkJTVQzMiwJMCB9LAotIHsiZG10IiwJCQkidCIsCQkweDQxNjAwYmMxLCAweGZmZTBmZmZmLCBXUl8xfFRSQVAsCQkwLAkJMCwJCU1UMzIsCTAgfSwKLSB7ImRtdGMwIiwJCSJ0LEciLAkJMHg0MGEwMDAwMCwgMHhmZmUwMDdmZiwJUkRfMXxXUl9DMHxXUl9DQ3xDTSwJMCwJCUkzLAkJMCwJRUUgfSwKLUBAIC0xMDgyLDYgKzEwODYsOCBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9Ci0gLyogZG1mYzMgaXMgYXQgdGhlIGJvdHRvbSBvZiB0aGUgdGFibGUuICAqLwotIC8qIGRtdGMzIGlzIGF0IHRoZSBib3R0b20gb2YgdGhlIHRhYmxlLiAgKi8KLSB7ImRtdWgiLAkJImQscyx0IiwJMHgwMDAwMDBkYywgMHhmYzAwMDdmZiwgV1JfMXxSRF8yfFJEXzMsCQkwLAkJSTY5LAkJMCwJMCB9LAotK3siZG10dXIiLAkJInQsZCIsCQkweDcwMDAwMDFmLCAweGZmZTAwN2ZmLAlSRF8xLAkJCTAsCQlYTFAsCQkwLAkwIH0sCi0reyJkbXVsIiwJCSJkLHMsdCIsCTB4NzAwMDAwMDYsIDB4ZmMwMDA3ZmYsCVdSXzF8UkRfMnxSRF8zLAkJMCwJCVhMUCwJCTAsCTAgfSwKLSB7ImRtdWwiLAkJImQscyx0IiwJMHgwMDAwMDA5YywgMHhmYzAwMDdmZiwgV1JfMXxSRF8yfFJEXzMsCQkwLAkJSTY5LAkJMCwJMCB9LAotIHsiZG11bCIsCQkiZCx2LHQiLAkweDcwMDAwMDAzLCAweGZjMDAwN2ZmLCBXUl8xfFJEXzJ8UkRfM3xXUl9ISUxPLAkwLAkJSU9DVCwJCTAsCTAgfSwKLSB7ImRtdWwiLAkJImQsdix0IiwJMCwgICAgKGludCkgTV9ETVVMLAlJTlNOX01BQ1JPLAkJMCwJCUkzLAkJMCwJTTMyfEk2OSB9LAotQEAgLTEyMzUsOSArMTI0MSw5IEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KLSB7ImxkIiwJCQkicywtYigrUikiLAkweGVjMTgwMDAwLCAweGZjMWMwMDAwLCBXUl8xLAkJCVJEX3BjLAkJSTY5LAkJMCwJMCB9LAotIHsibGQiLAkJCSJ0LEEoYikiLAkwLCAgICAoaW50KSBNX0xEX0FCLAlJTlNOX01BQ1JPLAkJMCwJCUkxLAkJMCwJMCB9LAotIHsibGQiLAkJCSJ0LG8oYikiLAkweGRjMDAwMDAwLCAweGZjMDAwMDAwLCBXUl8xfFJEXzN8TE0sCQkwLAkJSTMsCQkwLAkwIH0sCi0teyJsZGFkZHciLAkJInQsYiIsCQkweDcwMDAwMDEwLCAweGZjMDBmZmZmLAlNT0RfMXxSRF8yfExNfFNNLAkwLAkJWExSLAkJMCwJMCB9LAotLXsibGRhZGR3dSIsCQkidCxiIiwJCTB4NzAwMDAwMTEsIDB4ZmMwMGZmZmYsCU1PRF8xfFJEXzJ8TE18U00sCTAsCQlYTFIsCQkwLAkwIH0sCi0teyJsZGFkZGQiLAkJInQsYiIsCQkweDcwMDAwMDEyLCAweGZjMDBmZmZmLAlNT0RfMXxSRF8yfExNfFNNLAkwLAkJWExSLAkJMCwJMCB9LAotK3sibGRhZGR3IiwJCSJ0LGIiLAkJMHg3MDAwMDAxMCwgMHhmYzAwZmZmZiwJTU9EXzF8UkRfMnxTTSwJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCi0reyJsZGFkZHd1IiwJCSJ0LGIiLAkJMHg3MDAwMDAxMSwgMHhmYzAwZmZmZiwJTU9EXzF8UkRfMnxTTSwJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCi0reyJsZGFkZGQiLAkJInQsYiIsCQkweDcwMDAwMDEyLCAweGZjMDBmZmZmLAlNT0RfMXxSRF8yfFNNLAkJMCwJCVhMUnxYTFAsCTAsCTAgfSwKLSB7ImxkYzEiLAkJIlQsbyhiKSIsCTB4ZDQwMDAwMDAsIDB4ZmMwMDAwMDAsIFdSXzF8UkRfM3xDTER8RlBfRCwJMCwJCUkyLAkJMCwJU0YgfSwKLSB7ImxkYzEiLAkJIkUsbyhiKSIsCTB4ZDQwMDAwMDAsIDB4ZmMwMDAwMDAsIFdSXzF8UkRfM3xDTER8RlBfRCwJMCwJCUkyLAkJMCwJU0YgfSwKLSB7ImxkYzEiLAkJIlQsQShiKSIsCTAsICAgIChpbnQpIE1fTERDMV9BQiwJSU5TTl9NQUNSTywJCUlOU04yX01fRlBfRCwJSTIsCQkwLAlTRiB9LAotQEAgLTE0MDIsNyArMTQwOCw3IEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KLSB7Im1mbG8iLAkJImQsOSIsCQkweDAwMDAwMDEyLCAweGZmOWYwN2ZmLCBXUl8xfFJEX0xPLAkJMCwJCTAsCQlEMzIsCTAgfSwKLSB7Im1mbG8xIiwJCSJkIiwJCTB4NzAwMDAwMTIsIDB4ZmZmZjA3ZmYsCVdSXzF8UkRfTE8sCQkwLAkJRUUsCQkwLAkwIH0sCi0geyJtZmxoeHUiLAkJImQiLAkJMHgwMDAwMDA1MiwgMHhmZmZmMDdmZiwJV1JfMXxNT0RfSElMTywJCTAsCQkwLAkJU01ULAkwIH0sCi0teyJtZmNyIiwJCSJ0LHMiLAkJMHg3MDAwMDAxOCwgMHhmYzAwZmZmZiwgV1JfMXxSRF8yLAkJMCwJCVhMUiwJCTAsCTAgfSwKLSt7Im1mY3IiLAkJInQscyIsCQkweDcwMDAwMDE4LCAweGZjMDBmZmZmLCBXUl8xLAkJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCi0geyJtZnNhIiwJCSJkIiwJCTB4MDAwMDAwMjgsIDB4ZmZmZjA3ZmYsCVdSXzEsCQkJMCwJCUVFLAkJMCwJMCB9LAotIHsibWluLm9iIiwJCSJYLFksUSIsCTB4NzgwMDAwMDYsIDB4ZmMyMDAwM2YsCVdSXzF8UkRfMnxSRF8zfEZQX0QsCTAsCQlTQjEsCQlNWCwJMCB9LAotIHsibWluLm9iIiwJCSJELFMsUSIsCTB4NDgwMDAwMDYsIDB4ZmMyMDAwM2YsCVdSXzF8UkRfMnxSRF8zfEZQX0QsCTAsCQlONTQsCQkwLAkwIH0sCi1AQCAtMTQ0NywxMCArMTQ1MywxMyBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9Ci0gLyogbW92ZSBpcyBhdCB0aGUgdG9wIG9mIHRoZSB0YWJsZS4gICovCi0geyJtc2duLnFoIiwJCSJYLFksUSIsCTB4NzgyMDAwMDAsIDB4ZmMyMDAwM2YsCVdSXzF8UkRfMnxSRF8zfEZQX0QsCTAsCQkwLAkJTVgsCTAgfSwKLSB7Im1zZ3NuZCIsCQkidCIsCQkwLCAgICAoaW50KSBNX01TR1NORCwJSU5TTl9NQUNSTywJCTAsCQlYTFIsCQkwLAkwIH0sCi0reyJtc2dzbmRzIiwJCSJkLHQiLAkJMHg0YTAwMDAwMSwgMHhmZmUwMDdmZiwJV1JfMXxSRF8yfFJEX0MwfFdSX0MwLAkwLAkJWExQLAkJMCwJMCB9LAotIHsibXNnbGQiLAkJIiIsIAkJMCwgICAgKGludCkgTV9NU0dMRCwJSU5TTl9NQUNSTywJCTAsCQlYTFIsCQkwLAkwIH0sCi0geyJtc2dsZCIsCQkidCIsCQkwLCAgICAoaW50KSBNX01TR0xEX1QsCUlOU05fTUFDUk8sCQkwLAkJWExSLAkJMCwJMCB9LAotLXsibXNnd2FpdCIsCQkiIiwgCQkwLCAgICAoaW50KSBNX01TR1dBSVQsCUlOU05fTUFDUk8sCQkwLAkJWExSLAkJMCwJMCB9LAotLXsibXNnd2FpdCIsCQkidCIsCQkwLCAgICAoaW50KSBNX01TR1dBSVRfVCxJTlNOX01BQ1JPLAkJMCwJCVhMUiwJCTAsCTAgfSwKLSt7Im1zZ2xkcyIsCQkiZCx0IiwJCTB4NGEwMDAwMDIsIDB4ZmZlMDA3ZmYsCVdSXzF8UkRfMnxSRF9DMHxXUl9DMCwJMCwJCVhMUCwJCTAsCTAgfSwKLSt7Im1zZ3dhaXQiLAkJIiIsCQkwLCAgICAoaW50KSBNX01TR1dBSVQsICBJTlNOX01BQ1JPLAkJMCwJCVhMUnxYTFAsCTAsCTAgfSwKLSt7Im1zZ3dhaXQiLAkJInQiLAkJMCwgICAgKGludCkgTV9NU0dXQUlUX1QsSU5TTl9NQUNSTywJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCi0reyJtc2dzeW5jIiwJCSIiLAkJMHg0YTAwMDAwNCwgMHhmZmZmZmZmZiwwLAkJCTAsCQlYTFAsCQkwLAkwIH0sCi0geyJtc3ViLmQiLAkJIkQsUixTLFQiLAkweDRjMDAwMDI5LCAweGZjMDAwMDNmLCBXUl8xfFJEXzJ8UkRfM3xSRF80fEZQX0QsIDAsCQlJNF8zMywJCTAsCUkzNyB9LAotIHsibXN1Yi5kIiwJCSJELFMsVCIsCTB4NDYyMDAwMTksIDB4ZmZlMDAwM2YsCVdSXzF8UkRfMnxSRF8zfEZQX0QsCTAsCQlJTDJFLAkJMCwJMCB9LAotIHsibXN1Yi5kIiwJCSJELFMsVCIsCTB4NzIyMDAwMTksIDB4ZmZlMDAwM2YsCVdSXzF8UkRfMnxSRF8zfEZQX0QsCTAsCQlJTDJGLAkJMCwJMCB9LAotQEAgLTE1MDAsNyArMTUwOSw3IEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KLSB7Im10bG8iLAkJInMsNyIsCQkweDAwMDAwMDEzLCAweGZjMWZlN2ZmLCBSRF8xfFdSX0xPLAkJMCwJCTAsCQlEMzIsCTAgfSwKLSB7Im10bG8xIiwJCSJzIiwJCTB4NzAwMDAwMTMsIDB4ZmMxZmZmZmYsCVJEXzF8V1JfTE8sCQkwLAkJRUUsCQkwLAkwIH0sCi0geyJtdGxoeCIsCQkicyIsCQkweDAwMDAwMDUzLCAweGZjMWZmZmZmLAlSRF8xfE1PRF9ISUxPLAkJMCwJCTAsCQlTTVQsCTAgfSwKLS17Im10Y3IiLAkJInQscyIsCQkweDcwMDAwMDE5LCAweGZjMDBmZmZmLCBSRF8xfFJEXzIsCQkwLAkJWExSLAkJMCwJMCB9LAotK3sibXRjciIsCQkidCxzIiwJCTB4NzAwMDAwMTksIDB4ZmMwMGZmZmYsIFJEXzEsCQkJMCwJCVhMUnxYTFAsCTAsCTAgfSwKLSB7Im10bTAiLAkJInMiLAkJMHg3MDAwMDAwOCwgMHhmYzFmZmZmZiwgUkRfMSwJCQkwLAkJSU9DVCwJCTAsCTAgfSwKLSB7Im10bTAiLCAgICAJCSJzLHQiLAkJMHg3MDAwMDAwOCwgMHhmYzAwZmZmZiwgUkRfMXxSRF8yLAkJMCwJCUlPQ1QzLAkJMCwJMCB9LAotIHsibXRtMSIsCQkicyIsCQkweDcwMDAwMDBjLCAweGZjMWZmZmZmLCBSRF8xLAkJCTAsCQlJT0NULAkJMCwJMCB9LAotQEAgLTE5MzcsOSArMTk0Niw5IEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KLSB7InN1eGMxIiwJCSJTLHQoYikiLAkweDRjMDAwMDBkLCAweGZjMDAwN2ZmLCBSRF8xfFJEXzJ8UkRfM3xTTXxGUF9ELAkwLAkJSTVfMzN8TjU1LAkwLAlJMzd9LAotIHsic3ciLAkJCSJ0LG8oYikiLAkweGFjMDAwMDAwLCAweGZjMDAwMDAwLAlSRF8xfFJEXzN8U00sCQkwLAkJSTEsCQkwLAkwIH0sCi0geyJzdyIsCQkJInQsQShiKSIsCTAsICAgIChpbnQpIE1fU1dfQUIsCUlOU05fTUFDUk8sCQkwLAkJSTEsCQkwLAkwIH0sCi0teyJzd2FwdyIsCQkidCxiIiwJCTB4NzAwMDAwMTQsIDB4ZmMwMGZmZmYsIE1PRF8xfFJEXzJ8TE18U00sCTAsCQlYTFIsCQkwLAkwIH0sCi0teyJzd2Fwd3UiLAkJInQsYiIsCQkweDcwMDAwMDE1LCAweGZjMDBmZmZmLCBNT0RfMXxSRF8yfExNfFNNLAkwLAkJWExSLAkJMCwJMCB9LAotLXsic3dhcGQiLAkJInQsYiIsCQkweDcwMDAwMDE2LCAweGZjMDBmZmZmLCBNT0RfMXxSRF8yfExNfFNNLAkwLAkJWExSLAkJMCwJMCB9LAotK3sic3dhcHciLAkJInQsYiIsCQkweDcwMDAwMDE0LCAweGZjMDBmZmZmLCBNT0RfMXxSRF8yfFNNLAkJMCwJCVhMUnxYTFAsCTAsCTAgfSwKLSt7InN3YXB3dSIsCQkidCxiIiwJCTB4NzAwMDAwMTUsIDB4ZmMwMGZmZmYsIE1PRF8xfFJEXzJ8U00sCQkwLAkJWExSfFhMUCwJMCwJMCB9LAotK3sic3dhcGQiLAkJInQsYiIsCQkweDcwMDAwMDE2LCAweGZjMDBmZmZmLCBNT0RfMXxSRF8yfFNNLAkJMCwJCVhMUnxYTFAsCTAsCTAgfSwKLSB7InN3YzAiLAkJIkUsbyhiKSIsCTB4ZTAwMDAwMDAsIDB4ZmMwMDAwMDAsCVJEXzN8UkRfQzB8U00sCQkwLAkJSTEsCQkwLAlJT0NUfElPQ1RQfElPQ1QyfEkzNyB9LAotIHsic3djMCIsCQkiRSxBKGIpIiwJMCwgICAgKGludCkgTV9TV0MwX0FCLAlJTlNOX01BQ1JPLAkJMCwJCUkxLAkJMCwJSU9DVHxJT0NUUHxJT0NUMnxJMzcgfSwKLSB7InN3YzEiLAkJIlQsbyhiKSIsCTB4ZTQwMDAwMDAsIDB4ZmMwMDAwMDAsCVJEXzF8UkRfM3xTTXxGUF9TLAkwLAkJSTEsCQkwLAkwIH0sCi0tLSAKLTIuMTIuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTMtZml4LXRoZS1pbmNvcnJlY3QtYXNzZW1ibGluZy1mb3ItcHBjLXdhaXQtbW5lbW9uaWMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTMtZml4LXRoZS1pbmNvcnJlY3QtYXNzZW1ibGluZy1mb3ItcHBjLXdhaXQtbW5lbW9uaWMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQ3Mzc2YgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMy1maXgtdGhlLWluY29ycmVjdC1hc3NlbWJsaW5nLWZvci1wcGMtd2FpdC1tbmVtb25pYy5wYXRjaApAQCAtMCwwICsxLDM2IEBACitGcm9tIGU0NjIwMmJlY2FiNjI1YzZjMDhjYWY5MWUwOGNjYmJjMWJmNzk5YzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBaaGVuaHVhIEx1byA8emhlbmh1YS5sdW9AbnhwLmNvbT4KK0RhdGU6IFNhdCwgMTEgSnVuIDIwMTYgMjI6MDg6MjkgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSCAxMy8xNV0gZml4IHRoZSBpbmNvcnJlY3QgYXNzZW1ibGluZyBmb3IgcHBjIHdhaXQgbW5lbW9uaWMKKworU2lnbmVkLW9mZi1ieTogWmhlbmh1YSBMdW8gPHpoZW5odWEubHVvQG54cC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgb3Bjb2Rlcy9wcGMtb3BjLmMgfCAzICstLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL29wY29kZXMvcHBjLW9wYy5jIGIvb3Bjb2Rlcy9wcGMtb3BjLmMKK2luZGV4IDQyNjI2MWFiMjEuLjBkMzU5MTZjZGQgMTAwNjQ0CistLS0gYS9vcGNvZGVzL3BwYy1vcGMuYworKysrIGIvb3Bjb2Rlcy9wcGMtb3BjLmMKK0BAIC00ODgxLDcgKzQ4ODEsNiBAQCBjb25zdCBzdHJ1Y3QgcG93ZXJwY19vcGNvZGUgcG93ZXJwY19vcGNvZGVzW10gPSB7CisgeyJsZGVweCIsCVgoMzEsMjkpLAlYX01BU0ssCSAgRTUwME1DfFBQQ0EyLCAwLAkJe1JULCBSQTAsIFJCfX0sCisgCisgeyJ3YWl0YXNlYyIsCVgoMzEsMzApLCAgICAgIFhSVFJBUkJfTUFTSywgUE9XRVI4LAlQT1dFUjksCQl7MH19LAorLXsid2FpdCIsCVgoMzEsMzApLAlYV0NfTUFTSywgICAgUE9XRVI5LAkwLAkJe1dDfX0sCisgCisgeyJsd2VweCIsCVgoMzEsMzEpLAlYX01BU0ssCSAgRTUwME1DfFBQQ0EyLCAwLAkJe1JULCBSQTAsIFJCfX0sCisgCitAQCAtNDkzNSw3ICs0OTM0LDcgQEAgY29uc3Qgc3RydWN0IHBvd2VycGNfb3Bjb2RlIHBvd2VycGNfb3Bjb2Rlc1tdID0geworIAorIHsid2FpdHJzdiIsCVgoMzEsNjIpfCgxPDwyMSksIDB4ZmZmZmZmZmYsIEU1MDBNQ3xQUENBMiwgMCwJCXswfX0sCisgeyJ3YWl0aW1wbCIsCVgoMzEsNjIpfCgyPDwyMSksIDB4ZmZmZmZmZmYsIEU1MDBNQ3xQUENBMiwgMCwJCXswfX0sCisteyJ3YWl0IiwJWCgzMSw2MiksCVhXQ19NQVNLLCAgICBFNTAwTUN8UFBDQTIsIDAsCQl7V0N9fSwKKyt7IndhaXQiLAlYKDMxLDYyKSwJWFdDX01BU0ssICAgIEU1MDBNQ3xQUENBMnxQT1dFUjksIDAsCXtXQ319LAorIAorIHsiZGNic3RlcCIsCVhSVCgzMSw2MywwKSwJWFJUX01BU0ssICAgIEU1MDBNQ3xQUENBMiwgMCwJCXtSQTAsIFJCfX0sCisgCistLSAKKzIuMTQuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTQtRGV0ZWN0LTY0LWJpdC1NSVBTLXRhcmdldHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTQtRGV0ZWN0LTY0LWJpdC1NSVBTLXRhcmdldHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDJiMTA2NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNC1EZXRlY3QtNjQtYml0LU1JUFMtdGFyZ2V0cy5wYXRjaApAQCAtMCwwICsxLDUwIEBACitGcm9tIGJmMjBkNTgyMzY2MmQxZjJlYjQ3ZGUyY2RmZDE3MzYyN2EyMDViMTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAzMSBNYXIgMjAxNyAxMTo0MjowMyAtMDcwMAorU3ViamVjdDogW1BBVENIIDE0LzE1XSBEZXRlY3QgNjQtYml0IE1JUFMgdGFyZ2V0cworCitBZGQgbWlwczY0IHRhcmdldCB0cmlwbGV0cyBhbmQgZGVmYXVsdCB0byBONjQKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKK2h0dHBzOi8vc291cmNld2FyZS5vcmcvbWwvYmludXRpbHMvMjAxNi0wOC9tc2cwMDA0OC5odG1sCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBnb2xkL2NvbmZpZ3VyZS50Z3QgfCAxNCArKysrKysrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9nb2xkL2NvbmZpZ3VyZS50Z3QgYi9nb2xkL2NvbmZpZ3VyZS50Z3QKK2luZGV4IDNkNjMwMjcyOTcuLmMxZjkyYTEzNjAgMTAwNjQ0CistLS0gYS9nb2xkL2NvbmZpZ3VyZS50Z3QKKysrKyBiL2dvbGQvY29uZmlndXJlLnRndAorQEAgLTE1Myw2ICsxNTMsMTMgQEAgYWFyY2g2NCotKikKKyAgdGFyZ19iaWdfZW5kaWFuPWZhbHNlCisgIHRhcmdfZXh0cmFfYmlnX2VuZGlhbj10cnVlCisgIDs7CisrbWlwcyo2NCplbCotKi0qfG1pcHMqNjQqbGUqLSotKikKKysgdGFyZ19vYmo9bWlwcworKyB0YXJnX21hY2hpbmU9RU1fTUlQU19SUzNfTEUKKysgdGFyZ19zaXplPTY0CisrIHRhcmdfYmlnX2VuZGlhbj1mYWxzZQorKyB0YXJnX2V4dHJhX2JpZ19lbmRpYW49dHJ1ZQorKyA7OworIG1pcHMqZWwqLSotKnxtaXBzKmxlKi0qLSopCisgIHRhcmdfb2JqPW1pcHMKKyAgdGFyZ19tYWNoaW5lPUVNX01JUFNfUlMzX0xFCitAQCAtMTYwLDYgKzE2NywxMyBAQCBtaXBzKmVsKi0qLSp8bWlwcypsZSotKi0qKQorICB0YXJnX2JpZ19lbmRpYW49ZmFsc2UKKyAgdGFyZ19leHRyYV9iaWdfZW5kaWFuPXRydWUKKyAgOzsKKyttaXBzKjY0Ki0qLSopCisrIHRhcmdfb2JqPW1pcHMKKysgdGFyZ19tYWNoaW5lPUVNX01JUFMKKysgdGFyZ19zaXplPTY0CisrIHRhcmdfYmlnX2VuZGlhbj10cnVlCisrIHRhcmdfZXh0cmFfYmlnX2VuZGlhbj1mYWxzZQorKyA7OworIG1pcHMqLSotKikKKyAgdGFyZ19vYmo9bWlwcworICB0YXJnX21hY2hpbmU9RU1fTUlQUworLS0gCisyLjE0LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE0LWZpeC10aGUtaW5jb3JyZWN0LWFzc2VtYmxpbmctZm9yLXBwYy13YWl0LW1uZW1vbmljLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE0LWZpeC10aGUtaW5jb3JyZWN0LWFzc2VtYmxpbmctZm9yLXBwYy13YWl0LW1uZW1vbmljLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYjk1YTBjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNC1maXgtdGhlLWluY29ycmVjdC1hc3NlbWJsaW5nLWZvci1wcGMtd2FpdC1tbmVtb25pYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLUZyb20gYTkxNzcxNTBmODA4ZDdlNjI4NWUxMDExYzg1ZDBjZTg5MDM3YjU1MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFpoZW5odWEgTHVvIDx6aGVuaHVhLmx1b0BueHAuY29tPgotRGF0ZTogU2F0LCAxMSBKdW4gMjAxNiAyMjowODoyOSAtMDUwMAotU3ViamVjdDogW1BBVENIIDE0LzE1XSBmaXggdGhlIGluY29ycmVjdCBhc3NlbWJsaW5nIGZvciBwcGMgd2FpdCBtbmVtb25pYwotCi1TaWduZWQtb2ZmLWJ5OiBaaGVuaHVhIEx1byA8emhlbmh1YS5sdW9AbnhwLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBvcGNvZGVzL3BwYy1vcGMuYyB8IDMgKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvb3Bjb2Rlcy9wcGMtb3BjLmMgYi9vcGNvZGVzL3BwYy1vcGMuYwotaW5kZXggMzBmZDc4OTE4Mi4uZjI3MDhlMjI3NiAxMDA2NDQKLS0tLSBhL29wY29kZXMvcHBjLW9wYy5jCi0rKysgYi9vcGNvZGVzL3BwYy1vcGMuYwotQEAgLTQ4NzYsNyArNDg3Niw2IEBAIGNvbnN0IHN0cnVjdCBwb3dlcnBjX29wY29kZSBwb3dlcnBjX29wY29kZXNbXSA9IHsKLSB7ImxkZXB4IiwJWCgzMSwyOSksCVhfTUFTSywJICBFNTAwTUN8UFBDQTIsIDAsCQl7UlQsIFJBMCwgUkJ9fSwKLSAKLSB7IndhaXRhc2VjIiwJWCgzMSwzMCksICAgICAgWFJUUkFSQl9NQVNLLCBQT1dFUjgsCVBPV0VSOSwJCXswfX0sCi0teyJ3YWl0IiwJWCgzMSwzMCksCVhXQ19NQVNLLCAgICBQT1dFUjksCTAsCQl7V0N9fSwKLSAKLSB7Imx3ZXB4IiwJWCgzMSwzMSksCVhfTUFTSywJICBFNTAwTUN8UFBDQTIsIDAsCQl7UlQsIFJBMCwgUkJ9fSwKLSAKLUBAIC00OTMwLDcgKzQ5MjksNyBAQCBjb25zdCBzdHJ1Y3QgcG93ZXJwY19vcGNvZGUgcG93ZXJwY19vcGNvZGVzW10gPSB7Ci0gCi0geyJ3YWl0cnN2IiwJWCgzMSw2Mil8KDE8PDIxKSwgMHhmZmZmZmZmZiwgRTUwME1DfFBQQ0EyLCAwLAkJezB9fSwKLSB7IndhaXRpbXBsIiwJWCgzMSw2Mil8KDI8PDIxKSwgMHhmZmZmZmZmZiwgRTUwME1DfFBQQ0EyLCAwLAkJezB9fSwKLS17IndhaXQiLAlYKDMxLDYyKSwJWFdDX01BU0ssICAgIEU1MDBNQ3xQUENBMiwgMCwJCXtXQ319LAotK3sid2FpdCIsCVgoMzEsNjIpLAlYV0NfTUFTSywgICAgRTUwME1DfFBQQ0EyfFBPV0VSOSwgMCwJe1dDfX0sCi0gCi0geyJkY2JzdGVwIiwJWFJUKDMxLDYzLDApLAlYUlRfTUFTSywgICAgRTUwME1DfFBQQ0EyLCAwLAkJe1JBMCwgUkJ9fSwKLSAKLS0tIAotMi4xMi4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNS1zeW5jLXdpdGgtT0UtbGlidG9vbC1jaGFuZ2VzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE1LXN5bmMtd2l0aC1PRS1saWJ0b29sLWNoYW5nZXMucGF0Y2gKaW5kZXggMTU1OTAzOC4uMmM4OTAwYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE1LXN5bmMtd2l0aC1PRS1saWJ0b29sLWNoYW5nZXMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE1LXN5bmMtd2l0aC1PRS1saWJ0b29sLWNoYW5nZXMucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDU4Y2RiMjhlZDcxY2I1N2I0YTBlYTFiNDEyYTcwOGZkYjBmODRjMjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDliNDU2YTBlNGYyODRmZDQxYWMzNjU5NTE0NGVkNDRkYzgyNDEwZWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgogRGF0ZTogTW9uLCA2IE1hciAyMDE3IDIzOjMzOjI3IC0wODAwCiBTdWJqZWN0OiBbUEFUQ0ggMTUvMTVdIHN5bmMgd2l0aCBPRSBsaWJ0b29sIGNoYW5nZXMKQEAgLTg1LDUgKzg1LDUgQEAKICAJZWxpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCiAgCSAgY2FzZSAiJGZpbmFsaXplX3Blcm1fcnBhdGggIiBpbgogLS0gCi0yLjEyLjAKKzIuMTQuMAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTYtRGV0ZWN0LTY0LWJpdC1NSVBTLXRhcmdldHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTYtRGV0ZWN0LTY0LWJpdC1NSVBTLXRhcmdldHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiMmViODQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE2LURldGVjdC02NC1iaXQtTUlQUy10YXJnZXRzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotRnJvbSBjM2ViZGU1ZDhjYzNiMDA5Mjk2NmI0ZDcyNWNhZDdjZmQwNzRmZDhkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMzEgTWFyIDIwMTcgMTE6NDI6MDMgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAxNi8xNl0gRGV0ZWN0IDY0LWJpdCBNSVBTIHRhcmdldHMKLQotQWRkIG1pcHM2NCB0YXJnZXQgdHJpcGxldHMgYW5kIGRlZmF1bHQgdG8gTjY0Ci0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCi1odHRwczovL3NvdXJjZXdhcmUub3JnL21sL2JpbnV0aWxzLzIwMTYtMDgvbXNnMDAwNDguaHRtbAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ29sZC9jb25maWd1cmUudGd0IHwgMTQgKysrKysrKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZ29sZC9jb25maWd1cmUudGd0IGIvZ29sZC9jb25maWd1cmUudGd0Ci1pbmRleCAzZDYzMDI3Mjk3Li5jMWY5MmExMzYwIDEwMDY0NAotLS0tIGEvZ29sZC9jb25maWd1cmUudGd0Ci0rKysgYi9nb2xkL2NvbmZpZ3VyZS50Z3QKLUBAIC0xNTMsNiArMTUzLDEzIEBAIGFhcmNoNjQqLSopCi0gIHRhcmdfYmlnX2VuZGlhbj1mYWxzZQotICB0YXJnX2V4dHJhX2JpZ19lbmRpYW49dHJ1ZQotICA7OwotK21pcHMqNjQqZWwqLSotKnxtaXBzKjY0KmxlKi0qLSopCi0rIHRhcmdfb2JqPW1pcHMKLSsgdGFyZ19tYWNoaW5lPUVNX01JUFNfUlMzX0xFCi0rIHRhcmdfc2l6ZT02NAotKyB0YXJnX2JpZ19lbmRpYW49ZmFsc2UKLSsgdGFyZ19leHRyYV9iaWdfZW5kaWFuPXRydWUKLSsgOzsKLSBtaXBzKmVsKi0qLSp8bWlwcypsZSotKi0qKQotICB0YXJnX29iaj1taXBzCi0gIHRhcmdfbWFjaGluZT1FTV9NSVBTX1JTM19MRQotQEAgLTE2MCw2ICsxNjcsMTMgQEAgbWlwcyplbCotKi0qfG1pcHMqbGUqLSotKikKLSAgdGFyZ19iaWdfZW5kaWFuPWZhbHNlCi0gIHRhcmdfZXh0cmFfYmlnX2VuZGlhbj10cnVlCi0gIDs7Ci0rbWlwcyo2NCotKi0qKQotKyB0YXJnX29iaj1taXBzCi0rIHRhcmdfbWFjaGluZT1FTV9NSVBTCi0rIHRhcmdfc2l6ZT02NAotKyB0YXJnX2JpZ19lbmRpYW49dHJ1ZQotKyB0YXJnX2V4dHJhX2JpZ19lbmRpYW49ZmFsc2UKLSsgOzsKLSBtaXBzKi0qLSopCi0gIHRhcmdfb2JqPW1pcHMKLSAgdGFyZ19tYWNoaW5lPUVNX01JUFMKLS0tIAotMi4xMi4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNy1iZmQtSW1wcm92ZS1sb29rdXAtb2YtZmlsZS1saW5lLWluZm9ybWF0aW9uLWZvci1lcnJvLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE3LWJmZC1JbXByb3ZlLWxvb2t1cC1vZi1maWxlLWxpbmUtaW5mb3JtYXRpb24tZm9yLWVycm8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIzYWQxMGEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE3LWJmZC1JbXByb3ZlLWxvb2t1cC1vZi1maWxlLWxpbmUtaW5mb3JtYXRpb24tZm9yLWVycm8ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi1Gcm9tIDMyMzlhNDIzMWZmNzliZjhiNjdiOGZhYWY0MTRiMTY2NzQ4NjE2N2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbmRyZXcgQnVyZ2VzcyA8YW5kcmV3LmJ1cmdlc3NAZW1iZWNvc20uY29tPgotRGF0ZTogTW9uLCAxOSBEZWMgMjAxNiAxNToyNzo1OSArMDAwMAotU3ViamVjdDogW1BBVENIXSBiZmQ6IEltcHJvdmUgbG9va3VwIG9mIGZpbGUgLyBsaW5lIGluZm9ybWF0aW9uIGZvciBlcnJvcnMKLQotV2hlbiBsb29raW5nIHVwIGZpbGUgYW5kIGxpbmUgaW5mb3JtYXRpb24gKHVzZWQgZnJvbSB0aGUgbGlua2VyIHRvCi1yZXBvcnQgZXJyb3IgbWVzc2FnZXMpIGlmIG5vIHN5bWJvbCBpcyBwYXNzZWQgaW4sIHRoZW4gdXNlIHRoZSBzeW1ib2wKLWxpc3QgdG8gbG9vayBmb3IgYSBtYXRjaGluZyBzeW1ib2wuCi0KLUlmIGEgbWF0Y2hpbmcgc3ltYm9sIGlzIGZvdW5kIHRoZW4gdXNlIHRoaXMgdG8gbG9vayB1cCB0aGUgZmlsZSAvIGxpbmUKLWluZm9ybWF0aW9uLgotCi1UaGlzIHNob3VsZCBpbXByb3ZlIGVycm9ycyB3aGVuIGxvb2tpbmcgdXAgZmlsZSAvIGxpbmUgaW5mb3JtYXRpb24gZm9yCi1kYXRhIHNlY3Rpb25zLiAgSG9wZWZ1bGx5IHdlIHNob3VsZCBmaW5kIGEgbWF0Y2hpbmcgZGF0YSBzeW1ib2wsIHdoaWNoCi1zaG91bGQsIGluIHR1cm4gKHdlIGhvcGUpIG1hdGNoIGEgRFdfVEFHX3ZhcmlhYmxlIGluIHRoZSBEV0FSRiwgdGhpcwotc2hvdWxkIGFsbG93IHVzIHRvIGdpdmUgYWNjdXJhdGUgZmlsZSAvIGxpbmUgZXJyb3JzIGZvciBkYXRhIHN5bWJvbHMuCi0KLUFzIHRoZSBob3BlIGlzIHRvIGZpbmQgYSBtYXRjaGluZyBEV19UQUdfdmFyaWFibGUgaW4gdGhlIERXQVJGIHRoZW4gd2UKLWlnbm9yZSBzZWN0aW9uIHN5bWJvbHMsIGFuZCBwcmVmZXIgZ2xvYmFsIHN5bWJvbHMgdG8gbG9jYWxzLgotCi1DVkU6IENWRS0yMDE3LTgzOTIKLVVwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQKLQotU2lnbmVkLW9mZi1ieTogRmFuIFhpbiA8ZmFuLnhpbkBqcC5mdWppdHN1LmNvbT4KLS0tLQotIGJmZC9kd2FyZjIuYyAgICAgICAgICAgICAgICAgICB8IDMyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gMSBmaWxlcyBjaGFuZ2VkLCAzMiBpbnNlcnRpb25zKCspCi0KLQotZGlmZiAtLWdpdCBhL2JmZC9kd2FyZjIuYyBiL2JmZC9kd2FyZjIuYwotaW5kZXggMDM0NDdhOS4uOWJiODEyNiAxMDA2NDQKLS0tLSBhL2JmZC9kd2FyZjIuYwotKysrIGIvYmZkL2R3YXJmMi5jCi1AQCAtNDE1NSw2ICs0MTU1LDM4IEBAIF9iZmRfZHdhcmYyX2ZpbmRfbmVhcmVzdF9saW5lIChiZmQgKmFiZmQsCi0gICAgIHsKLSAgICAgICBCRkRfQVNTRVJUIChzZWN0aW9uICE9IE5VTEwgJiYgZnVuY3Rpb25uYW1lX3B0ciAhPSBOVUxMKTsKLSAgICAgICBhZGRyID0gb2Zmc2V0OwotKwotKyAgICAgIC8qIElmIHdlIGhhdmUgbm8gU1lNQk9MIGJ1dCB0aGUgc2VjdGlvbiB3ZSdyZSBsb29raW5nIGF0IGlzIG5vdCBhCi0rICAgICAgICAgY29kZSBzZWN0aW9uLCB0aGVuIHRha2UgYSBsb29rIHRocm91Z2ggdGhlIGxpc3Qgb2Ygc3ltYm9scyB0byBzZWUKLSsgICAgICAgICBpZiB3ZSBoYXZlIGEgc3ltYm9sIGF0IHRoZSBhZGRyZXNzIHdlJ3JlIGxvb2tpbmcgZm9yLiAgSWYgd2UgZG8KLSsgICAgICAgICB0aGVuIHVzZSB0aGlzIHRvIGxvb2sgdXAgbGluZSBpbmZvcm1hdGlvbi4gIFRoaXMgd2lsbCBhbGxvdyB1cyB0bwotKyAgICAgICAgIGdpdmUgZmlsZSBhbmQgbGluZSByZXN1bHRzIGZvciBkYXRhIHN5bWJvbHMuICBXZSBleGNsdWRlIGNvZGUKLSsgICAgICAgICBzeW1ib2xzIGhlcmUsIGlmIHdlIGxvb2sgdXAgYSBmdW5jdGlvbiBzeW1ib2wgYW5kIHRoZW4gbG9vayB1cCB0aGUKLSsgICAgICAgICBsaW5lIGluZm9ybWF0aW9uIHdlJ2xsIGFjdHVhbGx5IHJldHVybiB0aGUgbGluZSBudW1iZXIgZm9yIHRoZQotKyAgICAgICAgIG9wZW5pbmcgJ3snIHJhdGhlciB0aGFuIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGxpbmUuICBUaGlzIGlzCi0rICAgICAgICAgYmVjYXVzZSBsb29raW5nIHVwIGJ5IHN5bWJvbCB1c2VzIHRoZSBsaW5lIHRhYmxlLCBpbiB3aGljaCB0aGUKLSsgICAgICAgICBmaXJzdCBsaW5lIGZvciBhIGZ1bmN0aW9uIGlzIHVzdWFsbHkgdGhlIG9wZW5pbmcgJ3snLCB3aGlsZQotKyAgICAgICAgIGxvb2tpbmcgdXAgdGhlIGZ1bmN0aW9uIGJ5IHNlY3Rpb24gKyBvZmZzZXQgdXNlcyB0aGUKLSsgICAgICAgICBEV19BVF9kZWNsX2xpbmUgZnJvbSB0aGUgZnVuY3Rpb24gRFdfVEFHX3N1YnByb2dyYW0gZm9yIHRoZSBsaW5lLAotKyAgICAgICAgIHdoaWNoIHdpbGwgYmUgdGhlIGxpbmUgb2YgdGhlIGZ1bmN0aW9uIG5hbWUuICAqLwotKyAgICAgIGlmICgoc2VjdGlvbi0+ZmxhZ3MgJiBTRUNfQ09ERSkgPT0gMCkKLSsJewotKwkgIGFzeW1ib2wgKip0bXA7Ci0rCi0rCSAgZm9yICh0bXAgPSBzeW1ib2xzOyAoKnRtcCkgIT0gTlVMTDsgKyt0bXApCi0rCSAgICBpZiAoKCp0bXApLT50aGVfYmZkID09IGFiZmQKLSsJCSYmICgqdG1wKS0+c2VjdGlvbiA9PSBzZWN0aW9uCi0rCQkmJiAoKnRtcCktPnZhbHVlID09IG9mZnNldAotKwkJJiYgKCgqdG1wKS0+ZmxhZ3MgJiBCU0ZfU0VDVElPTl9TWU0pID09IDApCi0rCSAgICAgIHsKLSsJCXN5bWJvbCA9ICp0bXA7Ci0rCQlkb19saW5lID0gVFJVRTsKLSsgICAgICAgICAgICAgICAgLyogRm9yIGxvY2FsIHN5bWJvbHMsIGtlZXAgZ29pbmcgaW4gdGhlIGhvcGUgd2UgZmluZCBhCi0rICAgICAgICAgICAgICAgICAgIGdsb2JhbC4gICovCi0rICAgICAgICAgICAgICAgIGlmICgoc3ltYm9sLT5mbGFncyAmIEJTRl9HTE9CQUwpICE9IDApCi0rICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0rCSAgICAgIH0KLSsJfQotICAgICB9Ci0gCi0gICBpZiAoc2VjdGlvbi0+b3V0cHV0X3NlY3Rpb24pCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxOC1QUi0yMTQwOS1zZWdmYXVsdC1pbi1fYmZkX2R3YXJmMl9maW5kX25lYXJlc3RfbGluZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxOC1QUi0yMTQwOS1zZWdmYXVsdC1pbi1fYmZkX2R3YXJmMl9maW5kX25lYXJlc3RfbGluZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWNiMzdkZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTgtUFItMjE0MDktc2VnZmF1bHQtaW4tX2JmZF9kd2FyZjJfZmluZF9uZWFyZXN0X2xpbmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1Gcm9tIDk3ZTgzYTEwMGFhODI1MGJlNzgzMzA0YmZlMDQyOTc2MWM2ZTZiNmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGFuIE1vZHJhIDxhbW9kcmFAZ21haWwuY29tPgotRGF0ZTogU3VuLCAyMyBBcHIgMjAxNyAxMzo1NTo0OSArMDkzMAotU3ViamVjdDogW1BBVENIXSBQUiAyMTQwOSwgc2VnZmF1bHQgaW4gX2JmZF9kd2FyZjJfZmluZF9uZWFyZXN0X2xpbmUKLQotCVBSIDIxNDA5Ci0JKiBkd2FyZjIuYyAoX2JmZF9kd2FyZjJfZmluZF9uZWFyZXN0X2xpbmUpOiBEb24ndCBzZWdmYXVsdCB3aGVuCi0Jbm8gc3ltYm9scy4KLQotQ1ZFOiBDVkUtMjAxNy04MzkyCi1VcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkCi0KLVNpZ25lZC1vZmYtYnk6IEZhbiBYaW4gPGZhbi54aW5AanAuZnVqaXRzdS5jb20+Ci0tLS0KLSBiZmQvZHdhcmYyLmMgIHwgMiArLQotIDEgZmlsZXMgY2hhbmdlZCwgMSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9iZmQvZHdhcmYyLmMgYi9iZmQvZHdhcmYyLmMKLWluZGV4IDEzMmE2NzQuLjBlZjNlMWYgMTAwNjQ0Ci0tLS0gYS9iZmQvZHdhcmYyLmMKLSsrKyBiL2JmZC9kd2FyZjIuYwotQEAgLTQyMDUsNyArNDIwNSw3IEBAIF9iZmRfZHdhcmYyX2ZpbmRfbmVhcmVzdF9saW5lIChiZmQgKmFiZmQsCi0gICAgICAgICAgbG9va2luZyB1cCB0aGUgZnVuY3Rpb24gYnkgc2VjdGlvbiArIG9mZnNldCB1c2VzIHRoZQotICAgICAgICAgIERXX0FUX2RlY2xfbGluZSBmcm9tIHRoZSBmdW5jdGlvbiBEV19UQUdfc3VicHJvZ3JhbSBmb3IgdGhlIGxpbmUsCi0gICAgICAgICAgd2hpY2ggd2lsbCBiZSB0aGUgbGluZSBvZiB0aGUgZnVuY3Rpb24gbmFtZS4gICovCi0tICAgICAgaWYgKChzZWN0aW9uLT5mbGFncyAmIFNFQ19DT0RFKSA9PSAwKQotKyAgICAgIGlmIChzeW1ib2xzICE9IE5VTEwgJiYgKHNlY3Rpb24tPmZsYWdzICYgU0VDX0NPREUpID09IDApCi0gCXsKLSAJICBhc3ltYm9sICoqdG1wOwotIAotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTY5NjUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTY5NjUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzMzRjOTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy02OTY1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTI0ICswLDAgQEAKLUZyb20gYmRjNTE2NmMyNzRiODQyZjgzZjgzMjhlN2NmYWFmODBmZDI5OTM0ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pY2sgQ2xpZnRvbiA8bmlja2NAcmVkaGF0LmNvbT4KLURhdGU6IE1vbiwgMTMgRmViIDIwMTcgMTM6MDg6MzIgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzJdIEZpeCByZWFkZWxmIHdyaXRpbmcgdG8gaWxsZWdhbCBhZGRyZXNzZXMgd2hpbHN0Ci0gcHJvY2Vzc2luZyBjb3JydXB0IGlucHV0IGZpbGVzIGNvbnRhaW5pbmcgc3ltYm9sLWRpZmZlcmVuY2UgcmVsb2NhdGlvbnMuCi0KLQlQUiBiaW51dGlscy8yMTEzNwotCSogcmVhZGVsZi5jICh0YXJnZXRfc3BlY2lmaWNfcmVsb2NfaGFuZGxpbmcpOiBBZGQgZW5kIHBhcmFtZXRlci4KLQlDaGVjayBmb3IgYnVmZmVyIG92ZXJmbG93IGJlZm9yZSB3cml0aW5nIHJlbG9jYXRlZCB2YWx1ZXMuCi0JKGFwcGx5X3JlbG9jYXRpb25zKTogUGFzcyBlbmQgdG8gdGFyZ2V0X3NwZWNpZmljX3JlbG9jX2hhbmRsaW5nLgotCi0oY2hlcnJ5IHBpY2sgZnJvbSBjb21taXQgMDNmNzc4NmUyZjQ0MGI5ODkyYjFjMzRhNThmYjI2MjIyY2UxYjQ5MykKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW21hc3Rlcl0KLUNWRTogQ1ZFLTIwMTctNjk2NQotCi1TaWduZWQtb2ZmLWJ5OiBZdWFuamllIEh1YW5nIDx5dWFuamllLmh1YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBiaW51dGlscy9DaGFuZ2VMb2cgfCAgNyArKysrKysrCi0gYmludXRpbHMvcmVhZGVsZi5jIHwgMzAgKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAzMiBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYmludXRpbHMvQ2hhbmdlTG9nIGIvYmludXRpbHMvQ2hhbmdlTG9nCi1pbmRleCBmMjE4NjdmOThjLi5lNzg5YTNiOTliIDEwMDY0NAotLS0tIGEvYmludXRpbHMvQ2hhbmdlTG9nCi0rKysgYi9iaW51dGlscy9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsMTAgQEAKLSsyMDE3LTAyLTEzICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotKwotKwlQUiBiaW51dGlscy8yMTEzNwotKwkqIHJlYWRlbGYuYyAodGFyZ2V0X3NwZWNpZmljX3JlbG9jX2hhbmRsaW5nKTogQWRkIGVuZCBwYXJhbWV0ZXIuCi0rCUNoZWNrIGZvciBidWZmZXIgb3ZlcmZsb3cgYmVmb3JlIHdyaXRpbmcgcmVsb2NhdGVkIHZhbHVlcy4KLSsJKGFwcGx5X3JlbG9jYXRpb25zKTogUGFzcyBlbmQgdG8gdGFyZ2V0X3NwZWNpZmljX3JlbG9jX2hhbmRsaW5nLgotKwotIDIwMTctMDMtMDIgIFRyaXN0YW4gR2luZ29sZCAgPGdpbmdvbGRAYWRhY29yZS5jb20+Ci0gCi0gCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgotZGlmZiAtLWdpdCBhL2JpbnV0aWxzL3JlYWRlbGYuYyBiL2JpbnV0aWxzL3JlYWRlbGYuYwotaW5kZXggYjVmNTc3ZjVhMS4uOGNkYWFlM2I4YyAxMDA2NDQKLS0tLSBhL2JpbnV0aWxzL3JlYWRlbGYuYwotKysrIGIvYmludXRpbHMvcmVhZGVsZi5jCi1AQCAtMTE1ODUsNiArMTE1ODUsNyBAQCBwcm9jZXNzX3N5bWluZm8gKEZJTEUgKiBmaWxlIEFUVFJJQlVURV9VTlVTRUQpCi0gc3RhdGljIGJmZF9ib29sZWFuCi0gdGFyZ2V0X3NwZWNpZmljX3JlbG9jX2hhbmRsaW5nIChFbGZfSW50ZXJuYWxfUmVsYSAqIHJlbG9jLAotIAkJCQl1bnNpZ25lZCBjaGFyICogICAgIHN0YXJ0LAotKwkJCQl1bnNpZ25lZCBjaGFyICogICAgIGVuZCwKLSAJCQkJRWxmX0ludGVybmFsX1N5bSAqICBzeW10YWIpCi0gewotICAgdW5zaWduZWQgaW50IHJlbG9jX3R5cGUgPSBnZXRfcmVsb2NfdHlwZSAocmVsb2MtPnJfaW5mbyk7Ci1AQCAtMTE2MjUsMTMgKzExNjI2LDE5IEBAIHRhcmdldF9zcGVjaWZpY19yZWxvY19oYW5kbGluZyAoRWxmX0ludGVybmFsX1JlbGEgKiByZWxvYywKLSAJICBoYW5kbGVfc3ltX2RpZmY6Ci0gCSAgICBpZiAoc2F2ZWRfc3ltICE9IE5VTEwpCi0gCSAgICAgIHsKLSsJCWludCByZWxvY19zaXplID0gcmVsb2NfdHlwZSA9PSAxID8gNCA6IDI7Ci0gCQliZmRfdm1hIHZhbHVlOwotIAotIAkJdmFsdWUgPSByZWxvYy0+cl9hZGRlbmQKLSAJCSAgKyAoc3ltdGFiW2dldF9yZWxvY19zeW1pbmRleCAocmVsb2MtPnJfaW5mbyldLnN0X3ZhbHVlCi0gCQkgICAgIC0gc2F2ZWRfc3ltLT5zdF92YWx1ZSk7Ci0gCi0tCQlieXRlX3B1dCAoc3RhcnQgKyByZWxvYy0+cl9vZmZzZXQsIHZhbHVlLCByZWxvY190eXBlID09IDEgPyA0IDogMik7Ci0rCQlpZiAoc3RhcnQgKyByZWxvYy0+cl9vZmZzZXQgKyByZWxvY19zaXplID49IGVuZCkKLSsJCSAgLyogUFIgMjExMzcgKi8KLSsJCSAgZXJyb3IgKF8oIk1TUDQzMCBzeW0gZGlmZiByZWxvYyB3cml0ZXMgcGFzdCBlbmQgb2Ygc2VjdGlvbiAoJXAgdnMgJXApXG4iKSwKLSsJCQkgc3RhcnQgKyByZWxvYy0+cl9vZmZzZXQgKyByZWxvY19zaXplLCBlbmQpOwotKwkJZWxzZQotKwkJICBieXRlX3B1dCAoc3RhcnQgKyByZWxvYy0+cl9vZmZzZXQsIHZhbHVlLCByZWxvY19zaXplKTsKLSAKLSAJCXNhdmVkX3N5bSA9IE5VTEw7Ci0gCQlyZXR1cm4gVFJVRTsKLUBAIC0xMTY2MiwxMyArMTE2NjksMTggQEAgdGFyZ2V0X3NwZWNpZmljX3JlbG9jX2hhbmRsaW5nIChFbGZfSW50ZXJuYWxfUmVsYSAqIHJlbG9jLAotIAkgIGNhc2UgMjogLyogUl9NTjEwMzAwXzE2ICovCi0gCSAgICBpZiAoc2F2ZWRfc3ltICE9IE5VTEwpCi0gCSAgICAgIHsKLSsJCWludCByZWxvY19zaXplID0gcmVsb2NfdHlwZSA9PSAxID8gNCA6IDI7Ci0gCQliZmRfdm1hIHZhbHVlOwotIAotIAkJdmFsdWUgPSByZWxvYy0+cl9hZGRlbmQKLSAJCSAgKyAoc3ltdGFiW2dldF9yZWxvY19zeW1pbmRleCAocmVsb2MtPnJfaW5mbyldLnN0X3ZhbHVlCi0gCQkgICAgIC0gc2F2ZWRfc3ltLT5zdF92YWx1ZSk7Ci0gCi0tCQlieXRlX3B1dCAoc3RhcnQgKyByZWxvYy0+cl9vZmZzZXQsIHZhbHVlLCByZWxvY190eXBlID09IDEgPyA0IDogMik7Ci0rCQlpZiAoc3RhcnQgKyByZWxvYy0+cl9vZmZzZXQgKyByZWxvY19zaXplID49IGVuZCkKLSsJCSAgZXJyb3IgKF8oIk1OMTAzMDAgc3ltIGRpZmYgcmVsb2Mgd3JpdGVzIHBhc3QgZW5kIG9mIHNlY3Rpb24gKCVwIHZzICVwKVxuIiksCi0rCQkJIHN0YXJ0ICsgcmVsb2MtPnJfb2Zmc2V0ICsgcmVsb2Nfc2l6ZSwgZW5kKTsKLSsJCWVsc2UKLSsJCSAgYnl0ZV9wdXQgKHN0YXJ0ICsgcmVsb2MtPnJfb2Zmc2V0LCB2YWx1ZSwgcmVsb2Nfc2l6ZSk7Ci0gCi0gCQlzYXZlZF9zeW0gPSBOVUxMOwotIAkJcmV0dXJuIFRSVUU7Ci1AQCAtMTE3MDMsMTIgKzExNzE1LDIwIEBAIHRhcmdldF9zcGVjaWZpY19yZWxvY19oYW5kbGluZyAoRWxmX0ludGVybmFsX1JlbGEgKiByZWxvYywKLSAJICAgIGJyZWFrOwotIAotIAkgIGNhc2UgMHg0MTogLyogUl9STDc4X0FCUzMyLiAgKi8KLS0JICAgIGJ5dGVfcHV0IChzdGFydCArIHJlbG9jLT5yX29mZnNldCwgdmFsdWUsIDQpOwotKwkgICAgaWYgKHN0YXJ0ICsgcmVsb2MtPnJfb2Zmc2V0ICsgNCA+PSBlbmQpCi0rCSAgICAgIGVycm9yIChfKCJSTDc4IHN5bSBkaWZmIHJlbG9jIHdyaXRlcyBwYXN0IGVuZCBvZiBzZWN0aW9uICglcCB2cyAlcClcbiIpLAotKwkJICAgICBzdGFydCArIHJlbG9jLT5yX29mZnNldCArIDIsIGVuZCk7Ci0rCSAgICBlbHNlCi0rCSAgICAgIGJ5dGVfcHV0IChzdGFydCArIHJlbG9jLT5yX29mZnNldCwgdmFsdWUsIDQpOwotIAkgICAgdmFsdWUgPSAwOwotIAkgICAgcmV0dXJuIFRSVUU7Ci0gCi0gCSAgY2FzZSAweDQzOiAvKiBSX1JMNzhfQUJTMTYuICAqLwotLQkgICAgYnl0ZV9wdXQgKHN0YXJ0ICsgcmVsb2MtPnJfb2Zmc2V0LCB2YWx1ZSwgMik7Ci0rCSAgICBpZiAoc3RhcnQgKyByZWxvYy0+cl9vZmZzZXQgKyAyID49IGVuZCkKLSsJICAgICAgZXJyb3IgKF8oIlJMNzggc3ltIGRpZmYgcmVsb2Mgd3JpdGVzIHBhc3QgZW5kIG9mIHNlY3Rpb24gKCVwIHZzICVwKVxuIiksCi0rCQkgICAgIHN0YXJ0ICsgcmVsb2MtPnJfb2Zmc2V0ICsgMiwgZW5kKTsKLSsJICAgIGVsc2UKLSsJICAgICAgYnl0ZV9wdXQgKHN0YXJ0ICsgcmVsb2MtPnJfb2Zmc2V0LCB2YWx1ZSwgMik7Ci0gCSAgICB2YWx1ZSA9IDA7Ci0gCSAgICByZXR1cm4gVFJVRTsKLSAKLUBAIC0xMjMyNSw3ICsxMjM0NSw3IEBAIGFwcGx5X3JlbG9jYXRpb25zICh2b2lkICogICAgICAgICAgICAgICAgICAgICBmaWxlLAotIAotIAkgIHJlbG9jX3R5cGUgPSBnZXRfcmVsb2NfdHlwZSAocnAtPnJfaW5mbyk7Ci0gCi0tCSAgaWYgKHRhcmdldF9zcGVjaWZpY19yZWxvY19oYW5kbGluZyAocnAsIHN0YXJ0LCBzeW10YWIpKQotKwkgIGlmICh0YXJnZXRfc3BlY2lmaWNfcmVsb2NfaGFuZGxpbmcgKHJwLCBzdGFydCwgZW5kLCBzeW10YWIpKQotIAkgICAgY29udGludWU7Ci0gCSAgZWxzZSBpZiAoaXNfbm9uZV9yZWxvYyAocmVsb2NfdHlwZSkpCi0gCSAgICBjb250aW51ZTsKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctNjk2Ni5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctNjk2Ni5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGQ1OGRmNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTY5NjYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNDEgKzAsMCBAQAotRnJvbSAzODNlYzc1N2QyNzY1MjQ0OGQxNTExMTY5ZTExMzNmNDg2YWJmNTRmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTmljayBDbGlmdG9uIDxuaWNrY0ByZWRoYXQuY29tPgotRGF0ZTogTW9uLCAxMyBGZWIgMjAxNyAxNDowMzoyMiArMDAwMAotU3ViamVjdDogW1BBVENIXSBGaXggcmVhZC1hZnRlci1mcmVlIGVycm9yIGluIHJlYWRlbGYgd2hlbiBwcm9jZXNzaW5nCi0gbXVsdGlwbGUsIHJlbG9jYXRlZCBzZWN0aW9ucyBpbiBhbiBNU1A0MzAgYmluYXJ5LgotCi0JUFIgYmludXRpbHMvMjExMzkKLQkqIHJlYWRlbGYuYyAodGFyZ2V0X3NwZWNpZmljX3JlbG9jX2hhbmRsaW5nKTogQWRkIG51bV9zeW1zCi0JcGFyYW1ldGVyLiAgQ2hlY2sgZm9yIHN5bWJvbCB0YWJsZSBvdmVyZmxvdyBiZWZvcmUgYWNjZXNzaW5nCi0Jc3ltYm9sIHZhbHVlLiAgSWYgcmVsb2MgcG9pbnRlciBpcyBOVUxMLCBkaXNjYXJkIGFsbCBzYXZlZCBzdGF0ZS4KLQkoYXBwbHlfcmVsb2NhdGlvbnMpOiBQYXNzIG51bV9zeW1zIHRvIHRhcmdldF9zcGVjaWZpY19yZWxvY19oYW5kbGluZy4KLQlDYWxsIHRhcmdldF9zcGVjaWZpY19yZWxvY19oYW5kbGluZyB3aXRoIGEgTlVMTCByZWxvYyBwb2ludGVyCi0JYWZ0ZXIgcHJvY2Vzc2luZyBhbGwgb2YgdGhlIHJlbG9jcy4KLQotKGNoZXJyeSBwaWNrIGZyb20gY29tbWl0IGY4NGNlMTNiNjcwODgwMWNhMWQ2Mjg5YjdjNDAwM2UyZjVhNmQ3ZjkpCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFttYXN0ZXJdCi1DVkU6IENWRS0yMDE3LTY5NjYKLQotU2lnbmVkLW9mZi1ieTogWXVhbmppZSBIdWFuZyA8eXVhbmppZS5odWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gYmludXRpbHMvQ2hhbmdlTG9nIHwgIDEwICsrKysrCi0gYmludXRpbHMvcmVhZGVsZi5jIHwgMTA5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA5NCBpbnNlcnRpb25zKCspLCAyNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2JpbnV0aWxzL0NoYW5nZUxvZyBiL2JpbnV0aWxzL0NoYW5nZUxvZwotaW5kZXggZTc4OWEzYjk5Yi4uYmQ2M2M4YTBkOCAxMDA2NDQKLS0tLSBhL2JpbnV0aWxzL0NoYW5nZUxvZwotKysrIGIvYmludXRpbHMvQ2hhbmdlTG9nCi1AQCAtMSw1ICsxLDE1IEBACi0gMjAxNy0wMi0xMyAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSAKLSsJUFIgYmludXRpbHMvMjExMzkKLSsJKiByZWFkZWxmLmMgKHRhcmdldF9zcGVjaWZpY19yZWxvY19oYW5kbGluZyk6IEFkZCBudW1fc3ltcwotKwlwYXJhbWV0ZXIuICBDaGVjayBmb3Igc3ltYm9sIHRhYmxlIG92ZXJmbG93IGJlZm9yZSBhY2Nlc3NpbmcKLSsJc3ltYm9sIHZhbHVlLiAgSWYgcmVsb2MgcG9pbnRlciBpcyBOVUxMLCBkaXNjYXJkIGFsbCBzYXZlZCBzdGF0ZS4KLSsJKGFwcGx5X3JlbG9jYXRpb25zKTogUGFzcyBudW1fc3ltcyB0byB0YXJnZXRfc3BlY2lmaWNfcmVsb2NfaGFuZGxpbmcuCi0rCUNhbGwgdGFyZ2V0X3NwZWNpZmljX3JlbG9jX2hhbmRsaW5nIHdpdGggYSBOVUxMIHJlbG9jIHBvaW50ZXIKLSsJYWZ0ZXIgcHJvY2Vzc2luZyBhbGwgb2YgdGhlIHJlbG9jcy4KLSsKLSsyMDE3LTAyLTEzICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotKwotIAlQUiBiaW51dGlscy8yMTEzNwotIAkqIHJlYWRlbGYuYyAodGFyZ2V0X3NwZWNpZmljX3JlbG9jX2hhbmRsaW5nKTogQWRkIGVuZCBwYXJhbWV0ZXIuCi0gCUNoZWNrIGZvciBidWZmZXIgb3ZlcmZsb3cgYmVmb3JlIHdyaXRpbmcgcmVsb2NhdGVkIHZhbHVlcy4KLWRpZmYgLS1naXQgYS9iaW51dGlscy9yZWFkZWxmLmMgYi9iaW51dGlscy9yZWFkZWxmLmMKLWluZGV4IDhjZGFhZTNiOGMuLjdjMTU4YzYzNDIgMTAwNjQ0Ci0tLS0gYS9iaW51dGlscy9yZWFkZWxmLmMKLSsrKyBiL2JpbnV0aWxzL3JlYWRlbGYuYwotQEAgLTExNTgwLDE1ICsxMTU4MCwyNyBAQCBwcm9jZXNzX3N5bWluZm8gKEZJTEUgKiBmaWxlIEFUVFJJQlVURV9VTlVTRUQpCi0gCi0gLyogQ2hlY2sgdG8gc2VlIGlmIHRoZSBnaXZlbiByZWxvYyBuZWVkcyB0byBiZSBoYW5kbGVkIGluIGEgdGFyZ2V0IHNwZWNpZmljCi0gICAgbWFubmVyLiAgSWYgc28gdGhlbiBwcm9jZXNzIHRoZSByZWxvYyBhbmQgcmV0dXJuIFRSVUUgb3RoZXJ3aXNlIHJldHVybgotLSAgIEZBTFNFLiAgKi8KLSsgICBGQUxTRS4KLSsKLSsgICBJZiBjYWxsZWQgd2l0aCByZWxvYyA9PSBOVUxMLCB0aGVuIHRoaXMgaXMgYSBzaWduYWwgdGhhdCByZWxvYyBwcm9jZXNzaW5nCi0rICAgZm9yIHRoZSBjdXJyZW50IHNlY3Rpb24gaGFzIGZpbmlzaGVkLCBhbmQgYW55IHNhdmVkIHN0YXRlIHNob3VsZCBiZQotKyAgIGRpc2NhcmRlZC4gICovCi0gCi0gc3RhdGljIGJmZF9ib29sZWFuCi0gdGFyZ2V0X3NwZWNpZmljX3JlbG9jX2hhbmRsaW5nIChFbGZfSW50ZXJuYWxfUmVsYSAqIHJlbG9jLAotIAkJCQl1bnNpZ25lZCBjaGFyICogICAgIHN0YXJ0LAotIAkJCQl1bnNpZ25lZCBjaGFyICogICAgIGVuZCwKLS0JCQkJRWxmX0ludGVybmFsX1N5bSAqICBzeW10YWIpCi0rCQkJCUVsZl9JbnRlcm5hbF9TeW0gKiAgc3ltdGFiLAotKwkJCQl1bnNpZ25lZCBsb25nICAgICAgIG51bV9zeW1zKQotIHsKLS0gIHVuc2lnbmVkIGludCByZWxvY190eXBlID0gZ2V0X3JlbG9jX3R5cGUgKHJlbG9jLT5yX2luZm8pOwotKyAgdW5zaWduZWQgaW50IHJlbG9jX3R5cGUgPSAwOwotKyAgdW5zaWduZWQgbG9uZyBzeW1faW5kZXggPSAwOwotKwotKyAgaWYgKHJlbG9jKQotKyAgICB7Ci0rICAgICAgcmVsb2NfdHlwZSA9IGdldF9yZWxvY190eXBlIChyZWxvYy0+cl9pbmZvKTsKLSsgICAgICBzeW1faW5kZXggPSBnZXRfcmVsb2Nfc3ltaW5kZXggKHJlbG9jLT5yX2luZm8pOwotKyAgICB9Ci0gCi0gICBzd2l0Y2ggKGVsZl9oZWFkZXIuZV9tYWNoaW5lKQotICAgICB7Ci1AQCAtMTE1OTcsNiArMTE2MDksMTIgQEAgdGFyZ2V0X3NwZWNpZmljX3JlbG9jX2hhbmRsaW5nIChFbGZfSW50ZXJuYWxfUmVsYSAqIHJlbG9jLAotICAgICAgIHsKLSAJc3RhdGljIEVsZl9JbnRlcm5hbF9TeW0gKiBzYXZlZF9zeW0gPSBOVUxMOwotIAotKwlpZiAocmVsb2MgPT0gTlVMTCkKLSsJICB7Ci0rCSAgICBzYXZlZF9zeW0gPSBOVUxMOwotKwkgICAgcmV0dXJuIFRSVUU7Ci0rCSAgfQotKwotIAlzd2l0Y2ggKHJlbG9jX3R5cGUpCi0gCSAgewotIAkgIGNhc2UgMTA6IC8qIFJfTVNQNDMwX1NZTV9ESUZGICovCi1AQCAtMTE2MDQsNyArMTE2MjIsMTIgQEAgdGFyZ2V0X3NwZWNpZmljX3JlbG9jX2hhbmRsaW5nIChFbGZfSW50ZXJuYWxfUmVsYSAqIHJlbG9jLAotIAkgICAgICBicmVhazsKLSAJICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCi0gCSAgY2FzZSAyMTogLyogUl9NU1A0MzBYX1NZTV9ESUZGICovCi0tCSAgICBzYXZlZF9zeW0gPSBzeW10YWIgKyBnZXRfcmVsb2Nfc3ltaW5kZXggKHJlbG9jLT5yX2luZm8pOwotKwkgICAgLyogUFIgMjExMzkuICAqLwotKwkgICAgaWYgKHN5bV9pbmRleCA+PSBudW1fc3ltcykKLSsJICAgICAgZXJyb3IgKF8oIk1TUDQzMCBTWU1fRElGRiByZWxvYyBjb250YWlucyBpbnZhbGlkIHN5bWJvbCBpbmRleCAlbHVcbiIpLAotKwkJICAgICBzeW1faW5kZXgpOwotKwkgICAgZWxzZQotKwkgICAgICBzYXZlZF9zeW0gPSBzeW10YWIgKyBzeW1faW5kZXg7Ci0gCSAgICByZXR1cm4gVFJVRTsKLSAKLSAJICBjYXNlIDE6IC8qIFJfTVNQNDMwXzMyIG9yIFJfTVNQNDMwX0FCUzMyICovCi1AQCAtMTE2MjksMTYgKzExNjUyLDIxIEBAIHRhcmdldF9zcGVjaWZpY19yZWxvY19oYW5kbGluZyAoRWxmX0ludGVybmFsX1JlbGEgKiByZWxvYywKLSAJCWludCByZWxvY19zaXplID0gcmVsb2NfdHlwZSA9PSAxID8gNCA6IDI7Ci0gCQliZmRfdm1hIHZhbHVlOwotIAotLQkJdmFsdWUgPSByZWxvYy0+cl9hZGRlbmQKLS0JCSAgKyAoc3ltdGFiW2dldF9yZWxvY19zeW1pbmRleCAocmVsb2MtPnJfaW5mbyldLnN0X3ZhbHVlCi0tCQkgICAgIC0gc2F2ZWRfc3ltLT5zdF92YWx1ZSk7Ci0tCi0tCQlpZiAoc3RhcnQgKyByZWxvYy0+cl9vZmZzZXQgKyByZWxvY19zaXplID49IGVuZCkKLS0JCSAgLyogUFIgMjExMzcgKi8KLS0JCSAgZXJyb3IgKF8oIk1TUDQzMCBzeW0gZGlmZiByZWxvYyB3cml0ZXMgcGFzdCBlbmQgb2Ygc2VjdGlvbiAoJXAgdnMgJXApXG4iKSwKLS0JCQkgc3RhcnQgKyByZWxvYy0+cl9vZmZzZXQgKyByZWxvY19zaXplLCBlbmQpOwotKwkJaWYgKHN5bV9pbmRleCA+PSBudW1fc3ltcykKLSsJCSAgZXJyb3IgKF8oIk1TUDQzMCByZWxvYyBjb250YWlucyBpbnZhbGlkIHN5bWJvbCBpbmRleCAlbHVcbiIpLAotKwkJCSBzeW1faW5kZXgpOwotIAkJZWxzZQotLQkJICBieXRlX3B1dCAoc3RhcnQgKyByZWxvYy0+cl9vZmZzZXQsIHZhbHVlLCByZWxvY19zaXplKTsKLSsJCSAgewotKwkJICAgIHZhbHVlID0gcmVsb2MtPnJfYWRkZW5kICsgKHN5bXRhYltzeW1faW5kZXhdLnN0X3ZhbHVlCi0rCQkJCQkgICAgICAgLSBzYXZlZF9zeW0tPnN0X3ZhbHVlKTsKLSsKLSsJCSAgICBpZiAoc3RhcnQgKyByZWxvYy0+cl9vZmZzZXQgKyByZWxvY19zaXplID49IGVuZCkKLSsJCSAgICAgIC8qIFBSIDIxMTM3ICovCi0rCQkgICAgICBlcnJvciAoXygiTVNQNDMwIHN5bSBkaWZmIHJlbG9jIHdyaXRlcyBwYXN0IGVuZCBvZiBzZWN0aW9uICglcCB2cyAlcClcbiIpLAotKwkJCSAgICAgc3RhcnQgKyByZWxvYy0+cl9vZmZzZXQgKyByZWxvY19zaXplLCBlbmQpOwotKwkJICAgIGVsc2UKLSsJCSAgICAgIGJ5dGVfcHV0IChzdGFydCArIHJlbG9jLT5yX29mZnNldCwgdmFsdWUsIHJlbG9jX3NpemUpOwotKwkJICB9Ci0gCi0gCQlzYXZlZF9zeW0gPSBOVUxMOwotIAkJcmV0dXJuIFRSVUU7Ci1AQCAtMTE2NTgsMTMgKzExNjg2LDI0IEBAIHRhcmdldF9zcGVjaWZpY19yZWxvY19oYW5kbGluZyAoRWxmX0ludGVybmFsX1JlbGEgKiByZWxvYywKLSAgICAgICB7Ci0gCXN0YXRpYyBFbGZfSW50ZXJuYWxfU3ltICogc2F2ZWRfc3ltID0gTlVMTDsKLSAKLSsJaWYgKHJlbG9jID09IE5VTEwpCi0rCSAgewotKwkgICAgc2F2ZWRfc3ltID0gTlVMTDsKLSsJICAgIHJldHVybiBUUlVFOwotKwkgIH0KLSsKLSAJc3dpdGNoIChyZWxvY190eXBlKQotIAkgIHsKLSAJICBjYXNlIDM0OiAvKiBSX01OMTAzMDBfQUxJR04gKi8KLSAJICAgIHJldHVybiBUUlVFOwotIAkgIGNhc2UgMzM6IC8qIFJfTU4xMDMwMF9TWU1fRElGRiAqLwotLQkgICAgc2F2ZWRfc3ltID0gc3ltdGFiICsgZ2V0X3JlbG9jX3N5bWluZGV4IChyZWxvYy0+cl9pbmZvKTsKLSsJICAgIGlmIChzeW1faW5kZXggPj0gbnVtX3N5bXMpCi0rCSAgICAgIGVycm9yIChfKCJNTjEwMzAwX1NZTV9ESUZGIHJlbG9jIGNvbnRhaW5zIGludmFsaWQgc3ltYm9sIGluZGV4ICVsdVxuIiksCi0rCQkgICAgIHN5bV9pbmRleCk7Ci0rCSAgICBlbHNlCi0rCSAgICAgIHNhdmVkX3N5bSA9IHN5bXRhYiArIHN5bV9pbmRleDsKLSAJICAgIHJldHVybiBUUlVFOwotKwotIAkgIGNhc2UgMTogLyogUl9NTjEwMzAwXzMyICovCi0gCSAgY2FzZSAyOiAvKiBSX01OMTAzMDBfMTYgKi8KLSAJICAgIGlmIChzYXZlZF9zeW0gIT0gTlVMTCkKLUBAIC0xMTY3MiwxNSArMTE3MTEsMjAgQEAgdGFyZ2V0X3NwZWNpZmljX3JlbG9jX2hhbmRsaW5nIChFbGZfSW50ZXJuYWxfUmVsYSAqIHJlbG9jLAotIAkJaW50IHJlbG9jX3NpemUgPSByZWxvY190eXBlID09IDEgPyA0IDogMjsKLSAJCWJmZF92bWEgdmFsdWU7Ci0gCi0tCQl2YWx1ZSA9IHJlbG9jLT5yX2FkZGVuZAotLQkJICArIChzeW10YWJbZ2V0X3JlbG9jX3N5bWluZGV4IChyZWxvYy0+cl9pbmZvKV0uc3RfdmFsdWUKLS0JCSAgICAgLSBzYXZlZF9zeW0tPnN0X3ZhbHVlKTsKLS0KLS0JCWlmIChzdGFydCArIHJlbG9jLT5yX29mZnNldCArIHJlbG9jX3NpemUgPj0gZW5kKQotLQkJICBlcnJvciAoXygiTU4xMDMwMCBzeW0gZGlmZiByZWxvYyB3cml0ZXMgcGFzdCBlbmQgb2Ygc2VjdGlvbiAoJXAgdnMgJXApXG4iKSwKLS0JCQkgc3RhcnQgKyByZWxvYy0+cl9vZmZzZXQgKyByZWxvY19zaXplLCBlbmQpOwotKwkJaWYgKHN5bV9pbmRleCA+PSBudW1fc3ltcykKLSsJCSAgZXJyb3IgKF8oIk1OMTAzMDAgcmVsb2MgY29udGFpbnMgaW52YWxpZCBzeW1ib2wgaW5kZXggJWx1XG4iKSwKLSsJCQkgc3ltX2luZGV4KTsKLSAJCWVsc2UKLS0JCSAgYnl0ZV9wdXQgKHN0YXJ0ICsgcmVsb2MtPnJfb2Zmc2V0LCB2YWx1ZSwgcmVsb2Nfc2l6ZSk7Ci0rCQkgIHsKLSsJCSAgICB2YWx1ZSA9IHJlbG9jLT5yX2FkZGVuZCArIChzeW10YWJbc3ltX2luZGV4XS5zdF92YWx1ZQotKwkJCQkJICAgICAgIC0gc2F2ZWRfc3ltLT5zdF92YWx1ZSk7Ci0rCi0rCQkgICAgaWYgKHN0YXJ0ICsgcmVsb2MtPnJfb2Zmc2V0ICsgcmVsb2Nfc2l6ZSA+PSBlbmQpCi0rCQkgICAgICBlcnJvciAoXygiTU4xMDMwMCBzeW0gZGlmZiByZWxvYyB3cml0ZXMgcGFzdCBlbmQgb2Ygc2VjdGlvbiAoJXAgdnMgJXApXG4iKSwKLSsJCQkgICAgIHN0YXJ0ICsgcmVsb2MtPnJfb2Zmc2V0ICsgcmVsb2Nfc2l6ZSwgZW5kKTsKLSsJCSAgICBlbHNlCi0rCQkgICAgICBieXRlX3B1dCAoc3RhcnQgKyByZWxvYy0+cl9vZmZzZXQsIHZhbHVlLCByZWxvY19zaXplKTsKLSsJCSAgfQotIAotIAkJc2F2ZWRfc3ltID0gTlVMTDsKLSAJCXJldHVybiBUUlVFOwotQEAgLTExNzAwLDEyICsxMTc0NCwyNCBAQCB0YXJnZXRfc3BlY2lmaWNfcmVsb2NfaGFuZGxpbmcgKEVsZl9JbnRlcm5hbF9SZWxhICogcmVsb2MsCi0gCXN0YXRpYyBiZmRfdm1hIHNhdmVkX3N5bTIgPSAwOwotIAlzdGF0aWMgYmZkX3ZtYSB2YWx1ZTsKLSAKLSsJaWYgKHJlbG9jID09IE5VTEwpCi0rCSAgewotKwkgICAgc2F2ZWRfc3ltMSA9IHNhdmVkX3N5bTIgPSAwOwotKwkgICAgcmV0dXJuIFRSVUU7Ci0rCSAgfQotKwotIAlzd2l0Y2ggKHJlbG9jX3R5cGUpCi0gCSAgewotIAkgIGNhc2UgMHg4MDogLyogUl9STDc4X1NZTS4gICovCi0gCSAgICBzYXZlZF9zeW0xID0gc2F2ZWRfc3ltMjsKLS0JICAgIHNhdmVkX3N5bTIgPSBzeW10YWJbZ2V0X3JlbG9jX3N5bWluZGV4IChyZWxvYy0+cl9pbmZvKV0uc3RfdmFsdWU7Ci0tCSAgICBzYXZlZF9zeW0yICs9IHJlbG9jLT5yX2FkZGVuZDsKLSsJICAgIGlmIChzeW1faW5kZXggPj0gbnVtX3N5bXMpCi0rCSAgICAgIGVycm9yIChfKCJSTDc4X1NZTSByZWxvYyBjb250YWlucyBpbnZhbGlkIHN5bWJvbCBpbmRleCAlbHVcbiIpLAotKwkJICAgICBzeW1faW5kZXgpOwotKwkgICAgZWxzZQotKwkgICAgICB7Ci0rCQlzYXZlZF9zeW0yID0gc3ltdGFiW3N5bV9pbmRleF0uc3RfdmFsdWU7Ci0rCQlzYXZlZF9zeW0yICs9IHJlbG9jLT5yX2FkZGVuZDsKLSsJICAgICAgfQotIAkgICAgcmV0dXJuIFRSVUU7Ci0gCi0gCSAgY2FzZSAweDgzOiAvKiBSX1JMNzhfT1BzdWIuICAqLwotQEAgLTEyMzQ1LDcgKzEyNDAxLDcgQEAgYXBwbHlfcmVsb2NhdGlvbnMgKHZvaWQgKiAgICAgICAgICAgICAgICAgICAgIGZpbGUsCi0gCi0gCSAgcmVsb2NfdHlwZSA9IGdldF9yZWxvY190eXBlIChycC0+cl9pbmZvKTsKLSAKLS0JICBpZiAodGFyZ2V0X3NwZWNpZmljX3JlbG9jX2hhbmRsaW5nIChycCwgc3RhcnQsIGVuZCwgc3ltdGFiKSkKLSsJICBpZiAodGFyZ2V0X3NwZWNpZmljX3JlbG9jX2hhbmRsaW5nIChycCwgc3RhcnQsIGVuZCwgc3ltdGFiLCBudW1fc3ltcykpCi0gCSAgICBjb250aW51ZTsKLSAJICBlbHNlIGlmIChpc19ub25lX3JlbG9jIChyZWxvY190eXBlKSkKLSAJICAgIGNvbnRpbnVlOwotQEAgLTEyNDQxLDYgKzEyNDk3LDkgQEAgYXBwbHlfcmVsb2NhdGlvbnMgKHZvaWQgKiAgICAgICAgICAgICAgICAgICAgIGZpbGUsCi0gCX0KLSAKLSAgICAgICBmcmVlIChzeW10YWIpOwotKyAgICAgIC8qIExldCB0aGUgdGFyZ2V0IHNwZWNpZmljIHJlbG9jIHByb2Nlc3NpbmcgY29kZSBrbm93IHRoYXQKLSsJIHdlIGhhdmUgZmluaXNoZWQgd2l0aCB0aGVzZSByZWxvY3MuICAqLwotKyAgICAgIHRhcmdldF9zcGVjaWZpY19yZWxvY19oYW5kbGluZyAoTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgMCk7Ci0gCi0gICAgICAgaWYgKHJlbG9jc19yZXR1cm4pCi0gCXsKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctNjk2OS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctNjk2OS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQ1NDAzNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTY5NjkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi1Gcm9tIDFkOWEyNjk2OTAzZmM1OWQ2YTkzNmY0YWI0ZTQ0MDdlZjMyOWQwNjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWNrIENsaWZ0b24gPG5pY2tjQHJlZGhhdC5jb20+Ci1EYXRlOiBGcmksIDE3IEZlYiAyMDE3IDE1OjU5OjQ1ICswMDAwCi1TdWJqZWN0OiBGaXggaWxsZWdhbCBtZW1vcnkgYWNjZXNzZXMgaW4gcmVhZGVsZiB3aGVuIHBhcnNpbmcKLSBhIGNvcnJ1cHQgYmluYXJ5LgotCi0JUFIgYmludXRpbHMvMjExNTYKLQkqIHJlYWRlbGYuYyAoZmluZF9zZWN0aW9uX2luX3NldCk6IFRlc3QgZm9yIGludmFsaWQgc2VjdGlvbgotCWluZGljaWVzLgotCi1DVkU6IENWRS0yMDE3LTY5NjkKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW21hc3Rlcl0KLQotU2lnbmVkLW9mZi1ieTogWXVhbmppZSBIdWFuZyA8eXVhbmppZS5odWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gYmludXRpbHMvQ2hhbmdlTG9nIHwgIDYgKysrKysrCi0gYmludXRpbHMvcmVhZGVsZi5jIHwgMTAgKysrKysrKystLQotIDIgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2JpbnV0aWxzL0NoYW5nZUxvZyBiL2JpbnV0aWxzL0NoYW5nZUxvZwotaW5kZXggYmQ2M2M4YTBkOC4uMWQ4NDBiNDJmOSAxMDA2NDQKLS0tLSBhL2JpbnV0aWxzL0NoYW5nZUxvZwotKysrIGIvYmludXRpbHMvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDkgQEAKLSsyMDE3LTAyLTE3ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotKwotKwlQUiBiaW51dGlscy8yMTE1NgotKwkqIHJlYWRlbGYuYyAoZmluZF9zZWN0aW9uX2luX3NldCk6IFRlc3QgZm9yIGludmFsaWQgc2VjdGlvbgotKwlpbmRpY2llcy4KLSsKLSAyMDE3LTAyLTEzICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotIAotIAlQUiBiaW51dGlscy8yMTEzOQotZGlmZiAtLWdpdCBhL2JpbnV0aWxzL3JlYWRlbGYuYyBiL2JpbnV0aWxzL3JlYWRlbGYuYwotaW5kZXggN2MxNThjNjM0Mi4uNDk2MDQ5MWM1YyAxMDA2NDQKLS0tLSBhL2JpbnV0aWxzL3JlYWRlbGYuYwotKysrIGIvYmludXRpbHMvcmVhZGVsZi5jCi1AQCAtNjc1LDggKzY3NSwxNCBAQCBmaW5kX3NlY3Rpb25faW5fc2V0IChjb25zdCBjaGFyICogbmFtZSwgdW5zaWduZWQgaW50ICogc2V0KQotICAgaWYgKHNldCAhPSBOVUxMKQotICAgICB7Ci0gICAgICAgd2hpbGUgKChpID0gKnNldCsrKSA+IDApCi0tCWlmIChzdHJlcSAoU0VDVElPTl9OQU1FIChzZWN0aW9uX2hlYWRlcnMgKyBpKSwgbmFtZSkpCi0tCSAgcmV0dXJuIHNlY3Rpb25faGVhZGVycyArIGk7Ci0rCXsKLSsJICAvKiBTZWUgUFIgMjExNTYgZm9yIGEgcmVwcm9kdWNlci4gICovCi0rCSAgaWYgKGkgPj0gZWxmX2hlYWRlci5lX3NobnVtKQotKwkgICAgY29udGludWU7IC8qIEZJWE1FOiBTaG91bGQgd2UgaXNzdWUgYW4gZXJyb3IgbWVzc2FnZSA/ICAqLwotKwotKwkgIGlmIChzdHJlcSAoU0VDVElPTl9OQU1FIChzZWN0aW9uX2hlYWRlcnMgKyBpKSwgbmFtZSkpCi0rCSAgICByZXR1cm4gc2VjdGlvbl9oZWFkZXJzICsgaTsKLSsJfQotICAgICB9Ci0gCi0gICByZXR1cm4gZmluZF9zZWN0aW9uIChuYW1lKTsKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctNjk2OV8yLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy02OTY5XzIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5YTVkZWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy02OTY5XzIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMjIgKzAsMCBAQAotRnJvbSBlZjgxMTI2MzE0ZjY3NDcyYTQ2ZGI5NTgxNTMwZmJmNWNjYjZiM2YyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTmljayBDbGlmdG9uIDxuaWNrY0ByZWRoYXQuY29tPgotRGF0ZTogTW9uLCAyMCBGZWIgMjAxNyAxNDo0MDozOSArMDAwMAotU3ViamVjdDogRml4IGFub3RoZXIgbWVtb3J5IGFjY2VzcyBlcnJvciBpbiByZWFkZWxmIHdoZW4KLSBwYXJzaW5nIGEgY29ycnVwdCBiaW5hcnkuCi0KLQlQUiBiaW51dGlscy8yMTE1NgotCSogZHdhcmYuYyAoY3VfdHVfaW5kZXhlc19yZWFkKTogTW92ZSBpbnRvLi4uCi0JKGxvYWRfY3VfdHVfaW5kZXhlcyk6IC4uLiBoZXJlLiAgQ2hhbmdlIHRoZSB2YXJpYWJsZSBpbnRvCi0JdHJpLXN0YXRlLiAgQ2hhbmdlIHRoZSBmdW5jdGlvbiBpbnRvIGJvb2xlYW4sIHJldHVybmluZwotCWZhbHNlIGlmIHRoZSBpbmRpY2llcyBjb3VsZCBub3QgYmUgbG9hZGVkLgotCShmaW5kX2N1X3R1X3NldCk6IFJldHVybiBOVUxMIGlmIHRoZSBpbmRpY2llcyBjb3VsZCBub3QgYmUKLQlsb2FkZWQuCi0KLUNWRTogQ1ZFLTIwMTctNjk2OQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbbWFzdGVyXQotCi1TaWduZWQtb2ZmLWJ5OiBZdWFuamllIEh1YW5nIDx5dWFuamllLmh1YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBiaW51dGlscy9DaGFuZ2VMb2cgfCAxMCArKysrKysrKysrCi0gYmludXRpbHMvZHdhcmYuYyAgIHwgMzQgKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMzAgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9iaW51dGlscy9DaGFuZ2VMb2cgYi9iaW51dGlscy9DaGFuZ2VMb2cKLWluZGV4IDFkODQwYjQyZjkuLjUzMzUyYzE4MDEgMTAwNjQ0Ci0tLS0gYS9iaW51dGlscy9DaGFuZ2VMb2cKLSsrKyBiL2JpbnV0aWxzL0NoYW5nZUxvZwotQEAgLTEsMyArMSwxMyBAQAotKzIwMTctMDItMjAgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0rCi0rCVBSIGJpbnV0aWxzLzIxMTU2Ci0rCSogZHdhcmYuYyAoY3VfdHVfaW5kZXhlc19yZWFkKTogTW92ZSBpbnRvLi4uCi0rCShsb2FkX2N1X3R1X2luZGV4ZXMpOiAuLi4gaGVyZS4gIENoYW5nZSB0aGUgdmFyaWFibGUgaW50bwotKwl0cmktc3RhdGUuICBDaGFuZ2UgdGhlIGZ1bmN0aW9uIGludG8gYm9vbGVhbiwgcmV0dXJuaW5nCi0rCWZhbHNlIGlmIHRoZSBpbmRpY2llcyBjb3VsZCBub3QgYmUgbG9hZGVkLgotKwkoZmluZF9jdV90dV9zZXQpOiBSZXR1cm4gTlVMTCBpZiB0aGUgaW5kaWNpZXMgY291bGQgbm90IGJlCi0rCWxvYWRlZC4KLSsKLSAyMDE3LTAyLTE3ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotIAotIAlQUiBiaW51dGlscy8yMTE1NgotZGlmZiAtLWdpdCBhL2JpbnV0aWxzL2R3YXJmLmMgYi9iaW51dGlscy9kd2FyZi5jCi1pbmRleCAwMTg0YTdhYjJlLi42ZDg3OWM5YjYxIDEwMDY0NAotLS0tIGEvYmludXRpbHMvZHdhcmYuYwotKysrIGIvYmludXRpbHMvZHdhcmYuYwotQEAgLTc2LDcgKzc2LDYgQEAgaW50IGR3YXJmX2NoZWNrID0gMDsKLSAgICBhcyBhIHplcm8tdGVybWluYXRlZCBsaXN0IG9mIHNlY3Rpb24gaW5kZXhlcyBjb21wcmlzaW5nIG9uZSBzZXQgb2YgZGVidWcKLSAgICBzZWN0aW9ucyBmcm9tIGEgLmR3byBmaWxlLiAgKi8KLSAKLS1zdGF0aWMgaW50IGN1X3R1X2luZGV4ZXNfcmVhZCA9IDA7Ci0gc3RhdGljIHVuc2lnbmVkIGludCAqc2huZHhfcG9vbCA9IE5VTEw7Ci0gc3RhdGljIHVuc2lnbmVkIGludCBzaG5keF9wb29sX3NpemUgPSAwOwotIHN0YXRpYyB1bnNpZ25lZCBpbnQgc2huZHhfcG9vbF91c2VkID0gMDsKLUBAIC05OSw3ICs5OCw3IEBAIHN0YXRpYyBpbnQgdHVfY291bnQgPSAwOwotIHN0YXRpYyBzdHJ1Y3QgY3VfdHVfc2V0ICpjdV9zZXRzID0gTlVMTDsKLSBzdGF0aWMgc3RydWN0IGN1X3R1X3NldCAqdHVfc2V0cyA9IE5VTEw7Ci0gCi0tc3RhdGljIHZvaWQgbG9hZF9jdV90dV9pbmRleGVzICh2b2lkICpmaWxlKTsKLStzdGF0aWMgYmZkX2Jvb2xlYW4gbG9hZF9jdV90dV9pbmRleGVzICh2b2lkICopOwotIAotIC8qIFZhbHVlcyBmb3IgZG9fZGVidWdfbGluZXMuICAqLwotICNkZWZpbmUgRkxBR19ERUJVR19MSU5FU19SQVcJIDEKLUBAIC0yNzE1LDcgKzI3MTQsNyBAQCBsb2FkX2RlYnVnX2luZm8gKHZvaWQgKiBmaWxlKQotICAgICByZXR1cm4gbnVtX2RlYnVnX2luZm9fZW50cmllczsKLSAKLSAgIC8qIElmIHRoaXMgaXMgYSBEV0FSRiBwYWNrYWdlIGZpbGUsIGxvYWQgdGhlIENVIGFuZCBUVSBpbmRleGVzLiAgKi8KLS0gIGxvYWRfY3VfdHVfaW5kZXhlcyAoZmlsZSk7Ci0rICAodm9pZCkgbG9hZF9jdV90dV9pbmRleGVzIChmaWxlKTsKLSAKLSAgIGlmIChsb2FkX2RlYnVnX3NlY3Rpb24gKGluZm8sIGZpbGUpCi0gICAgICAgJiYgcHJvY2Vzc19kZWJ1Z19pbmZvICgmZGVidWdfZGlzcGxheXMgW2luZm9dLnNlY3Rpb24sIGZpbGUsIGFiYnJldiwgMSwgMCkpCi1AQCAtNzM3OCwyMSArNzM3NywyNyBAQCBwcm9jZXNzX2N1X3R1X2luZGV4IChzdHJ1Y3QgZHdhcmZfc2VjdGlvbiAqc2VjdGlvbiwgaW50IGRvX2Rpc3BsYXkpCi0gICAgc2VjdGlvbiBzZXRzIHRoYXQgd2UgY2FuIHVzZSB0byBhc3NvY2lhdGUgYSAuZGVidWdfaW5mby5kd28gc2VjdGlvbgotICAgIHdpdGggaXRzIGFzc29jaWF0ZWQgLmRlYnVnX2FiYnJldi5kd28gc2VjdGlvbiBpbiBhIC5kd3AgZmlsZS4gICovCi0gCi0tc3RhdGljIHZvaWQKLStzdGF0aWMgYmZkX2Jvb2xlYW4KLSBsb2FkX2N1X3R1X2luZGV4ZXMgKHZvaWQgKmZpbGUpCi0gewotKyAgc3RhdGljIGludCBjdV90dV9pbmRleGVzX3JlYWQgPSAtMTsgLyogVHJpLXN0YXRlIHZhcmlhYmxlLiAgKi8KLSsKLSAgIC8qIElmIHdlIGhhdmUgYWxyZWFkeSBsb2FkZWQgKG9yIHRyaWVkIHRvIGxvYWQpIHRoZSBDVSBhbmQgVFUgaW5kZXhlcwotICAgICAgdGhlbiBkbyBub3QgYm90aGVyIHRvIHJlcGVhdCB0aGUgdGFzay4gICovCi0tICBpZiAoY3VfdHVfaW5kZXhlc19yZWFkKQotLSAgICByZXR1cm47Ci0tCi0tICBpZiAobG9hZF9kZWJ1Z19zZWN0aW9uIChkd3BfY3VfaW5kZXgsIGZpbGUpKQotLSAgICBwcm9jZXNzX2N1X3R1X2luZGV4ICgmZGVidWdfZGlzcGxheXMgW2R3cF9jdV9pbmRleF0uc2VjdGlvbiwgMCk7Ci0tCi0tICBpZiAobG9hZF9kZWJ1Z19zZWN0aW9uIChkd3BfdHVfaW5kZXgsIGZpbGUpKQotLSAgICBwcm9jZXNzX2N1X3R1X2luZGV4ICgmZGVidWdfZGlzcGxheXMgW2R3cF90dV9pbmRleF0uc2VjdGlvbiwgMCk7Ci0rICBpZiAoY3VfdHVfaW5kZXhlc19yZWFkID09IC0xKQotKyAgICB7Ci0rICAgICAgY3VfdHVfaW5kZXhlc19yZWFkID0gVFJVRTsKLSsgIAotKyAgICAgIGlmIChsb2FkX2RlYnVnX3NlY3Rpb24gKGR3cF9jdV9pbmRleCwgZmlsZSkpCi0rCWlmICghIHByb2Nlc3NfY3VfdHVfaW5kZXggKCZkZWJ1Z19kaXNwbGF5cyBbZHdwX2N1X2luZGV4XS5zZWN0aW9uLCAwKSkKLSsJICBjdV90dV9pbmRleGVzX3JlYWQgPSBGQUxTRTsKLSsKLSsgICAgICBpZiAobG9hZF9kZWJ1Z19zZWN0aW9uIChkd3BfdHVfaW5kZXgsIGZpbGUpKQotKwlpZiAoISBwcm9jZXNzX2N1X3R1X2luZGV4ICgmZGVidWdfZGlzcGxheXMgW2R3cF90dV9pbmRleF0uc2VjdGlvbiwgMCkpCi0rCSAgY3VfdHVfaW5kZXhlc19yZWFkID0gRkFMU0U7Ci0rICAgIH0KLSAKLS0gIGN1X3R1X2luZGV4ZXNfcmVhZCA9IDE7Ci0rICByZXR1cm4gKGJmZF9ib29sZWFuKSBjdV90dV9pbmRleGVzX3JlYWQ7Ci0gfQotIAotIC8qIEZpbmQgdGhlIHNldCBvZiBzZWN0aW9ucyB0aGF0IGluY2x1ZGVzIHNlY3Rpb24gU0hORFguICAqLwotQEAgLTc0MDIsNyArNzQwNyw4IEBAIGZpbmRfY3VfdHVfc2V0ICh2b2lkICpmaWxlLCB1bnNpZ25lZCBpbnQgc2huZHgpCi0gewotICAgdW5zaWduZWQgaW50IGk7Ci0gCi0tICBsb2FkX2N1X3R1X2luZGV4ZXMgKGZpbGUpOwotKyAgaWYgKCEgbG9hZF9jdV90dV9pbmRleGVzIChmaWxlKSkKLSsgICAgcmV0dXJuIE5VTEw7Ci0gCi0gICAvKiBGaW5kIFNITkRYIGluIHRoZSBzaG5keCBwb29sLiAgKi8KLSAgIGZvciAoaSA9IDA7IGkgPCBzaG5keF9wb29sX3VzZWQ7IGkrKykKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctNzIwOS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctNzIwOS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjM1N2ExMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTcyMDkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi1Gcm9tIGIyNzA2Y2VhZGFjNzIzOWU3YjAyZDQzZjA1MTAwZmM2NTM4YjBkNjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWNrIENsaWZ0b24gPG5pY2tjQHJlZGhhdC5jb20+Ci1EYXRlOiBNb24sIDEzIEZlYiAyMDE3IDE1OjA0OjM3ICswMDAwCi1TdWJqZWN0OiBGaXggaW52YWxpZCByZWFkIG9mIHNlY3Rpb24gY29udGVudHMgd2hpbHN0IHByb2Nlc3NpbmcgYSBjb3JydXB0IGJpbmFyeS4KLQotCVBSIGJpbnV0aWxzLzIxMTM1Ci0JKiByZWFkZWxmLmMgKGR1bXBfc2VjdGlvbl9hc19ieXRlcyk6IEhhbmRsZSB0aGUgY2FzZSB3aGVyZQotCXVuY29tcHJlc3Nfc2VjdGlvbl9jb250ZW50cyByZXR1cm5zIGZhbHNlLgotCi1DVkU6IENWRS0yMDE3LTcyMDkKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnRbbWFzdGVyXQotCi1TaWduZWQtb2ZmLWJ5OiBZdWFuamllIEh1YW5nIDx5dWFuamllLmh1YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBiaW51dGlscy9DaGFuZ2VMb2cgfCAgNiArKysrKysKLSBiaW51dGlscy9yZWFkZWxmLmMgfCAxNiArKysrKysrKysrKystLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYmludXRpbHMvQ2hhbmdlTG9nIGIvYmludXRpbHMvQ2hhbmdlTG9nCi1pbmRleCA1MzM1MmMxODAxLi5jZjkyNzQ0YzEyIDEwMDY0NAotLS0tIGEvYmludXRpbHMvQ2hhbmdlTG9nCi0rKysgYi9iaW51dGlscy9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsOSBAQAotKzIwMTctMDItMTMgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0rCi0rCVBSIGJpbnV0aWxzLzIxMTM1Ci0rCSogcmVhZGVsZi5jIChkdW1wX3NlY3Rpb25fYXNfYnl0ZXMpOiBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUKLSsJdW5jb21wcmVzc19zZWN0aW9uX2NvbnRlbnRzIHJldHVybnMgZmFsc2UuCi0rCi0gMjAxNy0wMi0yMCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSAKLSAJUFIgYmludXRpbHMvMjExNTYKLWRpZmYgLS1naXQgYS9iaW51dGlscy9yZWFkZWxmLmMgYi9iaW51dGlscy9yZWFkZWxmLmMKLWluZGV4IDQ5NjA0OTFjNWMuLmYwZTdiMDgwZTggMTAwNjQ0Ci0tLS0gYS9iaW51dGlscy9yZWFkZWxmLmMKLSsrKyBiL2JpbnV0aWxzL3JlYWRlbGYuYwotQEAgLTEyODAzLDEwICsxMjgwMywxOCBAQCBkdW1wX3NlY3Rpb25fYXNfYnl0ZXMgKEVsZl9JbnRlcm5hbF9TaGRyICogc2VjdGlvbiwKLSAJICBuZXdfc2l6ZSAtPSAxMjsKLSAJfQotIAotLSAgICAgIGlmICh1bmNvbXByZXNzZWRfc2l6ZQotLQkgICYmIHVuY29tcHJlc3Nfc2VjdGlvbl9jb250ZW50cyAoJiBzdGFydCwgdW5jb21wcmVzc2VkX3NpemUsCi0tCQkJCQkgICYgbmV3X3NpemUpKQotLQlzZWN0aW9uX3NpemUgPSBuZXdfc2l6ZTsKLSsgICAgICBpZiAodW5jb21wcmVzc2VkX3NpemUpCi0rCXsKLSsJICBpZiAodW5jb21wcmVzc19zZWN0aW9uX2NvbnRlbnRzICgmIHN0YXJ0LCB1bmNvbXByZXNzZWRfc2l6ZSwKLSsJCQkJCSAgICYgbmV3X3NpemUpKQotKwkgICAgc2VjdGlvbl9zaXplID0gbmV3X3NpemU7Ci0rCSAgZWxzZQotKwkgICAgewotKwkgICAgICBlcnJvciAoXygiVW5hYmxlIHRvIGRlY29tcHJlc3Mgc2VjdGlvbiAlc1xuIiksCi0rCQkgICAgIHByaW50YWJsZV9zZWN0aW9uX25hbWUgKHNlY3Rpb24pKTsKLSsJICAgICAgcmV0dXJuOwotKwkgICAgfQotKwl9Ci0gICAgIH0KLSAKLSAgIGlmIChyZWxvY2F0ZSkKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctNzIxMC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctNzIxMC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODc5MTc5Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTcyMTAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi1Gcm9tIDRkYTU5OGE0NzJlMWQyOTg4MjUwMzVlNDUyZTNiYzY4ZjcxNDMxMWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWNrIENsaWZ0b24gPG5pY2tjQHJlZGhhdC5jb20+Ci1EYXRlOiBUdWUsIDE0IEZlYiAyMDE3IDE0OjA3OjI5ICswMDAwCi1TdWJqZWN0OiBGaXggaGFuZGxpbmcgb2YgY29ycnVwdCBTVEFCUyBlbnVtIHR5cGUgc3RyaW5ncy4KLQotCVBSIGJpbnV0aWxzLzIxMTU3Ci0JKiBzdGFicy5jIChwYXJzZV9zdGFiX2VudW1fdHlwZSk6IENoZWNrIGZvciBjb3JydXB0IE5BTUU6VkFMVUUKLQlwYWlycy4KLQkocGFyc2VfbnVtYmVyKTogRXhpdCBlYXJseSBpZiBwYXNzZWQgYW4gZW1wdHkgc3RyaW5nLgotCi1DVkU6IENWRS0yMDE3LTcyMTAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW21hc3Rlcl0KLQotU2lnbmVkLW9mZi1ieTogWXVhbmppZSBIdWFuZyA8eXVhbmppZS5odWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gYmludXRpbHMvQ2hhbmdlTG9nIHwgIDcgKysrKysrKwotIGJpbnV0aWxzL3N0YWJzLmMgICB8IDE0ICsrKysrKysrKysrKystCi0gMiBmaWxlcyBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9iaW51dGlscy9DaGFuZ2VMb2cgYi9iaW51dGlscy9DaGFuZ2VMb2cKLWluZGV4IGNmOTI3NDRjMTIuLjAwNDVmYmFhYTYgMTAwNjQ0Ci0tLS0gYS9iaW51dGlscy9DaGFuZ2VMb2cKLSsrKyBiL2JpbnV0aWxzL0NoYW5nZUxvZwotQEAgLTEsMyArMSwxMCBAQAotKzIwMTctMDItMTQgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0rCi0rCVBSIGJpbnV0aWxzLzIxMTU3Ci0rCSogc3RhYnMuYyAocGFyc2Vfc3RhYl9lbnVtX3R5cGUpOiBDaGVjayBmb3IgY29ycnVwdCBOQU1FOlZBTFVFCi0rCXBhaXJzLgotKwkocGFyc2VfbnVtYmVyKTogRXhpdCBlYXJseSBpZiBwYXNzZWQgYW4gZW1wdHkgc3RyaW5nLgotKwotIDIwMTctMDItMTMgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0gCi0gCVBSIGJpbnV0aWxzLzIxMTM1Ci1kaWZmIC0tZ2l0IGEvYmludXRpbHMvc3RhYnMuYyBiL2JpbnV0aWxzL3N0YWJzLmMKLWluZGV4IGY1YzVkMmQ4ZTAuLjVkMDEzY2MzNjEgMTAwNjQ0Ci0tLS0gYS9iaW51dGlscy9zdGFicy5jCi0rKysgYi9iaW51dGlscy9zdGFicy5jCi1AQCAtMjMyLDYgKzIzMiwxMCBAQCBwYXJzZV9udW1iZXIgKGNvbnN0IGNoYXIgKipwcCwgYmZkX2Jvb2xlYW4gKnBvdmVyZmxvdykKLSAKLSAgIG9yaWcgPSAqcHA7Ci0gCi0rICAvKiBTdG9wIGVhcmx5IGlmIHdlIGFyZSBwYXNzZWQgYW4gZW1wdHkgc3RyaW5nLiAgKi8KLSsgIGlmICgqb3JpZyA9PSAwKQotKyAgICByZXR1cm4gKGJmZF92bWEpIDA7Ci0rCi0gICBlcnJubyA9IDA7Ci0gICB1bCA9IHN0cnRvdWwgKCpwcCwgKGNoYXIgKiopIHBwLCAwKTsKLSAgIGlmICh1bCArIDEgIT0gMCB8fCBlcnJubyA9PSAwKQotQEAgLTE5NzUsOSArMTk3OSwxNyBAQCBwYXJzZV9zdGFiX2VudW1fdHlwZSAodm9pZCAqZGhhbmRsZSwgY29uc3QgY2hhciAqKnBwKQotICAgICAgIGJmZF9zaWduZWRfdm1hIHZhbDsKLSAKLSAgICAgICBwID0gKnBwOwotLSAgICAgIHdoaWxlICgqcCAhPSAnOicpCi0rICAgICAgd2hpbGUgKCpwICE9ICc6JyAmJiAqcCAhPSAwKQotIAkrK3A7Ci0gCi0rICAgICAgaWYgKCpwID09IDApCi0rCXsKLSsJICBiYWRfc3RhYiAob3JpZyk7Ci0rCSAgZnJlZSAobmFtZXMpOwotKwkgIGZyZWUgKHZhbHVlcyk7Ci0rCSAgcmV0dXJuIERFQlVHX1RZUEVfTlVMTDsKLSsJfQotKwotICAgICAgIG5hbWUgPSBzYXZlc3RyaW5nICgqcHAsIHAgLSAqcHApOwotIAotICAgICAgICpwcCA9IHAgKyAxOwotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy03MjIzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy03MjIzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNzhjOGJmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctNzIyMy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLUZyb20gNjlhY2UyMjAwMTA2MzQ4YTFiMDBkNTA5YTZhMjM0MzM3YzEwNGMxNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pY2sgQ2xpZnRvbiA8bmlja2NAcmVkaGF0LmNvbT4KLURhdGU6IFRodSwgMSBEZWMgMjAxNiAxNToyMDoxOSArMDAwMAotU3ViamVjdDogW1BBVENIXSBGaXggc2VnIGZhdWx0IGF0dGVtcHRpbmcgdG8gdW5nZXQgYW4gRU9GIGNoYXJhY3Rlci4KLQotCVBSIGdhcy8yMDg5OAotCSogYXBwLmMgKGRvX3NjcnViX2NoYXJzKTogRG8gbm90IGF0dGVtcHQgdG8gdW5nZXQgRU9GLgotCi1BZmZlY3RzOiA8PSAyLjI4Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE3LTcyMjMKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBnYXMvQ2hhbmdlTG9nIHwgMyArKysKLSBnYXMvYXBwLmMgICAgIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLUluZGV4OiBnaXQvZ2FzL0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2dhcy9DaGFuZ2VMb2cKLSsrKyBnaXQvZ2FzL0NoYW5nZUxvZwotQEAgLTEsMyArMSw4IEBACi0rMjAxNi0xMi0wMSAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSsgCi0rICAgICAgIFBSIGdhcy8yMDg5OAotKyAgICAgICAqIGFwcC5jIChkb19zY3J1Yl9jaGFycyk6IERvIG5vdCBhdHRlbXB0IHRvIHVuZ2V0IEVPRi4KLSsKLSAyMDE3LTAzLTAyICBUcmlzdGFuIEdpbmdvbGQgIDxnaW5nb2xkQGFkYWNvcmUuY29tPgotIAotIAkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KLUBAIC0xOTgsNyArMjAzLDYgQEAKLSAJKiBjb25maWcvdGMtcHJ1LmMgKG1kX251bWJlcl90b19jaGFycyk6IEZpeCBwYXJhbWV0ZXIgdG8gYmUKLSAJdmFsdWVULCBhcyBkZWNsYXJlZCBpbiB0Yy5oLgotIAkobWRfYXBwbHlfZml4KTogRml4IHRvIHdvcmsgb24gMzItYml0IGhvc3RzLgotLT4+Pj4+Pj4gMDExNTYxMS4uLiBSSVNDLVYvR0FTOiBDb3JyZWN0IGJyYW5jaCByZWxheGF0aW9uIGZvciB3ZWFrIHN5bWJvbHMuCi0gCi0gMjAxNy0wMS0wMiAgQWxhbiBNb2RyYSAgPGFtb2RyYUBnbWFpbC5jb20+Ci0gCi1JbmRleDogZ2l0L2dhcy9hcHAuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2dhcy9hcHAuYwotKysrIGdpdC9nYXMvYXBwLmMKLUBAIC0xMzUwLDcgKzEzNTAsNyBAQCBkb19zY3J1Yl9jaGFycyAoc2l6ZV90ICgqZ2V0KSAoY2hhciAqLCBzCi0gCQkgIFBVVCAoY2gpOwotIAkJICBicmVhazsKLSAJCX0KLS0JICAgICAgZWxzZQotKwkgICAgICBlbHNlIGlmIChjaDIgIT0gRU9GKQotIAkJewotIAkJICBzdGF0ZSA9IDk7Ci0gCQkgIGlmIChjaCA9PSBFT0YgfHwgIUlTX1NZTUJPTF9DT01QT05FTlQgKGNoKSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctNzYxNC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctNzYxNC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmU4NjMxYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTc2MTQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotRnJvbSBhZDMyOTg2ZmRmOWRhMWM4NzQ4ZTQ3YjhiNDUxMDAzOTgyMjNkYmE4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTmljayBDbGlmdG9uIDxuaWNrY0ByZWRoYXQuY29tPgotRGF0ZTogVHVlLCA0IEFwciAyMDE3IDExOjIzOjM2ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBudWxsIHBvaW50ZXIgZGVyZWZlcmVuY2VzIHdoZW4gdXNpbmcgYSBsaW5rIGJ1aWx0IHdpdGgKLSBjbGFuZy4KLQotCVBSIGJpbnV0aWxzLzIxMzQyCi0JKiBlbGZsaW5rLmMgKF9iZmRfZWxmX2RlZmluZV9saW5rYWdlX3N5bSk6IFByZXZlbnQgbnVsbCBwb2ludGVyCi0JZGVyZWZlcmVuY2UuCi0JKGJmZF9lbGZfZmluYWxfbGluayk6IE9ubHkgaW5pdGlhbGl6ZSB0aGUgZXh0ZW5kZWQgc3ltYm9sIGluZGV4Ci0Jc2VjdGlvbiBpZiB0aGVyZSBhcmUgZXh0ZW5kZWQgc3ltYm9sIHRhYmxlcyB0byBsaXN0LgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE3LTc2MTQKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBiZmQvQ2hhbmdlTG9nIHwgIDggKysrKysrKysKLSBiZmQvZWxmbGluay5jIHwgMzUgKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDI5IGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQotCi1JbmRleDogZ2l0L2JmZC9lbGZsaW5rLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvZWxmbGluay5jCi0rKysgZ2l0L2JmZC9lbGZsaW5rLmMKLUBAIC0xMTksMTUgKzExOSwxOCBAQCBfYmZkX2VsZl9kZWZpbmVfbGlua2FnZV9zeW0gKGJmZCAqYWJmZCwKLSAJIGRlZmluZWQgaW4gc2hhcmVkIGxpYnJhcmllcyBjYW4ndCBiZSBvdmVycmlkZGVuLCBiZWNhdXNlIHdlCi0gCSBsb3NlIHRoZSBsaW5rIHRvIHRoZSBiZmQgd2hpY2ggaXMgdmlhIHRoZSBzeW1ib2wgc2VjdGlvbi4gICovCi0gICAgICAgaC0+cm9vdC50eXBlID0gYmZkX2xpbmtfaGFzaF9uZXc7Ci0rICAgICAgYmggPSAmaC0+cm9vdDsKLSAgICAgfQotKyAgZWxzZQotKyAgICBiaCA9IE5VTEw7Ci0gCi0tICBiaCA9ICZoLT5yb290OwotICAgYmVkID0gZ2V0X2VsZl9iYWNrZW5kX2RhdGEgKGFiZmQpOwotICAgaWYgKCFfYmZkX2dlbmVyaWNfbGlua19hZGRfb25lX3N5bWJvbCAoaW5mbywgYWJmZCwgbmFtZSwgQlNGX0dMT0JBTCwKLSAJCQkJCSBzZWMsIDAsIE5VTEwsIEZBTFNFLCBiZWQtPmNvbGxlY3QsCi0gCQkJCQkgJmJoKSkKLSAgICAgcmV0dXJuIE5VTEw7Ci0gICBoID0gKHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5ICopIGJoOwotKyAgQkZEX0FTU0VSVCAoaCAhPSBOVUxMKTsKLSAgIGgtPmRlZl9yZWd1bGFyID0gMTsKLSAgIGgtPm5vbl9lbGYgPSAwOwotICAgaC0+cm9vdC5saW5rZXJfZGVmID0gMTsKLUBAIC0xMTk3MywyNCArMTE5NzYsMjggQEAgYmZkX2VsZl9maW5hbF9saW5rIChiZmQgKmFiZmQsIHN0cnVjdCBiZgotICAgICB7Ci0gICAgICAgLyogRmluaXNoIHVwIGFuZCB3cml0ZSBvdXQgdGhlIHN5bWJvbCBzdHJpbmcgdGFibGUgKC5zdHJ0YWIpCi0gCSBzZWN0aW9uLiAgKi8KLS0gICAgICBFbGZfSW50ZXJuYWxfU2hkciAqc3ltc3RydGFiX2hkcjsKLSsgICAgICBFbGZfSW50ZXJuYWxfU2hkciAqc3ltc3RydGFiX2hkciA9IE5VTEw7Ci0gICAgICAgZmlsZV9wdHIgb2ZmID0gc3ltdGFiX2hkci0+c2hfb2Zmc2V0ICsgc3ltdGFiX2hkci0+c2hfc2l6ZTsKLSAKLS0gICAgICBzeW10YWJfc2huZHhfaGRyID0gJiBlbGZfc3ltdGFiX3NobmR4X2xpc3QgKGFiZmQpLT5oZHI7Ci0tICAgICAgaWYgKHN5bXRhYl9zaG5keF9oZHIgIT0gTlVMTCAmJiBzeW10YWJfc2huZHhfaGRyLT5zaF9uYW1lICE9IDApCi0rICAgICAgaWYgKGVsZl9zeW10YWJfc2huZHhfbGlzdCAoYWJmZCkpCi0gCXsKLS0JICBzeW10YWJfc2huZHhfaGRyLT5zaF90eXBlID0gU0hUX1NZTVRBQl9TSE5EWDsKLS0JICBzeW10YWJfc2huZHhfaGRyLT5zaF9lbnRzaXplID0gc2l6ZW9mIChFbGZfRXh0ZXJuYWxfU3ltX1NobmR4KTsKLS0JICBzeW10YWJfc2huZHhfaGRyLT5zaF9hZGRyYWxpZ24gPSBzaXplb2YgKEVsZl9FeHRlcm5hbF9TeW1fU2huZHgpOwotLQkgIGFtdCA9IGJmZF9nZXRfc3ltY291bnQgKGFiZmQpICogc2l6ZW9mIChFbGZfRXh0ZXJuYWxfU3ltX1NobmR4KTsKLS0JICBzeW10YWJfc2huZHhfaGRyLT5zaF9zaXplID0gYW10OwotKwkgIHN5bXRhYl9zaG5keF9oZHIgPSAmIGVsZl9zeW10YWJfc2huZHhfbGlzdCAoYWJmZCktPmhkcjsKLSAKLS0JICBvZmYgPSBfYmZkX2VsZl9hc3NpZ25fZmlsZV9wb3NpdGlvbl9mb3Jfc2VjdGlvbiAoc3ltdGFiX3NobmR4X2hkciwKLS0JCQkJCQkJICAgb2ZmLCBUUlVFKTsKLSsJICBpZiAoc3ltdGFiX3NobmR4X2hkciAhPSBOVUxMICYmIHN5bXRhYl9zaG5keF9oZHItPnNoX25hbWUgIT0gMCkKLSsJICAgIHsKLSsJICAgICAgc3ltdGFiX3NobmR4X2hkci0+c2hfdHlwZSA9IFNIVF9TWU1UQUJfU0hORFg7Ci0rCSAgICAgIHN5bXRhYl9zaG5keF9oZHItPnNoX2VudHNpemUgPSBzaXplb2YgKEVsZl9FeHRlcm5hbF9TeW1fU2huZHgpOwotKwkgICAgICBzeW10YWJfc2huZHhfaGRyLT5zaF9hZGRyYWxpZ24gPSBzaXplb2YgKEVsZl9FeHRlcm5hbF9TeW1fU2huZHgpOwotKwkgICAgICBhbXQgPSBiZmRfZ2V0X3N5bWNvdW50IChhYmZkKSAqIHNpemVvZiAoRWxmX0V4dGVybmFsX1N5bV9TaG5keCk7Ci0rCSAgICAgIHN5bXRhYl9zaG5keF9oZHItPnNoX3NpemUgPSBhbXQ7Ci0gCi0tCSAgaWYgKGJmZF9zZWVrIChhYmZkLCBzeW10YWJfc2huZHhfaGRyLT5zaF9vZmZzZXQsIFNFRUtfU0VUKSAhPSAwCi0tCSAgICAgIHx8IChiZmRfYndyaXRlIChmbGluZm8uc3ltc2huZHhidWYsIGFtdCwgYWJmZCkgIT0gYW10KSkKLS0JICAgIHJldHVybiBGQUxTRTsKLSsJICAgICAgb2ZmID0gX2JmZF9lbGZfYXNzaWduX2ZpbGVfcG9zaXRpb25fZm9yX3NlY3Rpb24gKHN5bXRhYl9zaG5keF9oZHIsCi0rCQkJCQkJCSAgICAgICBvZmYsIFRSVUUpOwotKwotKwkgICAgICBpZiAoYmZkX3NlZWsgKGFiZmQsIHN5bXRhYl9zaG5keF9oZHItPnNoX29mZnNldCwgU0VFS19TRVQpICE9IDAKLSsJCSAgfHwgKGJmZF9id3JpdGUgKGZsaW5mby5zeW1zaG5keGJ1ZiwgYW10LCBhYmZkKSAhPSBhbXQpKQotKwkJcmV0dXJuIEZBTFNFOwotKwkgICAgfQotIAl9Ci0gCi0gICAgICAgc3ltc3RydGFiX2hkciA9ICZlbGZfdGRhdGEgKGFiZmQpLT5zdHJ0YWJfaGRyOwotSW5kZXg6IGdpdC9iZmQvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL0NoYW5nZUxvZwotKysrIGdpdC9iZmQvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDExIEBACi0rMjAxNy0wNC0wNCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSsKLSsgICAgICAgUFIgYmludXRpbHMvMjEzNDIKLSsgICAgICAgKiBlbGZsaW5rLmMgKF9iZmRfZWxmX2RlZmluZV9saW5rYWdlX3N5bSk6IFByZXZlbnQgbnVsbCBwb2ludGVyCi0rICAgICAgIGRlcmVmZXJlbmNlLgotKyAgICAgICAoYmZkX2VsZl9maW5hbF9saW5rKTogT25seSBpbml0aWFsaXplIHRoZSBleHRlbmRlZCBzeW1ib2wgaW5kZXgKLSsgICAgICAgc2VjdGlvbiBpZiB0aGVyZSBhcmUgZXh0ZW5kZWQgc3ltYm9sIHRhYmxlcyB0byBsaXN0LgotKwotIDIwMTctMDMtMDcgIEFsYW4gTW9kcmEgIDxhbW9kcmFAZ21haWwuY29tPgotIAotIAlQUiAyMTIyNApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy04MzkzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy04MzkzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NTAwYTAzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctODM5My5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIwNSArMCwwIEBACi1Gcm9tIGJjZTk2NGFhNmM3NzdkMjM2ZmJkNjQxZjJiYzdiYjkzMWNmZTRiZjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGFuIE1vZHJhIDxhbW9kcmFAZ21haWwuY29tPgotRGF0ZTogU3VuLCAyMyBBcHIgMjAxNyAxMTowMzozNCArMDkzMAotU3ViamVjdDogW1BBVENIXSBQUiAyMTQxMiwgZ2V0X3JlbG9jX3NlY3Rpb24gYXNzdW1lcyAucmVsLy5yZWxhIG5hbWUgZm9yCi0gU0hUX1JFTC9SRUxBLgotCi1UaGlzIHBhdGNoIGZpeGVzIGFuIGFzc3VtcHRpb24gbWFkZSBieSBjb2RlIHRoYXQgcnVucyBmb3Igb2JqY29weSBhbmQKLXN0cmlwLCB0aGF0IFNIVF9SRUwvU0hSX1JFTEEgc2VjdGlvbnMgYXJlIGFsd2F5cyBuYW1lZCBzdGFydGluZyB3aXRoIGEKLS5yZWwvLnJlbGEgcHJlZml4LiAgSSdtIGFsc28gbW9kaWZ5aW5nIHRoZSBpbnRlcmZhY2UgZm9yCi1lbGZfYmFja2VuZF9nZXRfcmVsb2Nfc2VjdGlvbiwgc28gYW55IGJhY2tlbmQgZnVuY3Rpb24ganVzdCBuZWVkcyB0bwotaGFuZGxlIG5hbWUgbWFwcGluZy4KLQotCVBSIDIxNDEyCi0JKiBlbGYtYmZkLmggKHN0cnVjdCBlbGZfYmFja2VuZF9kYXRhIDxnZXRfcmVsb2Nfc2VjdGlvbj4pOiBDaGFuZ2UKLQlwYXJhbWV0ZXJzIGFuZCBjb21tZW50LgotCShfYmZkX2VsZl9nZXRfcmVsb2Nfc2VjdGlvbik6IERlbGV0ZS4KLQkoX2JmZF9lbGZfcGx0X2dldF9yZWxvY19zZWN0aW9uKTogRGVjbGFyZS4KLQkqIGVsZi5jIChfYmZkX2VsZl9wbHRfZ2V0X3JlbG9jX3NlY3Rpb24sIGVsZl9nZXRfcmVsb2Nfc2VjdGlvbik6Ci0JTmV3IGZ1bmN0aW9ucy4gIERvbid0IGJsaW5kbHkgc2tpcCBvdmVyIGFzc3VtZWQgLnJlbC8ucmVsYSBwcmVmaXguCi0JRXh0cmFjdGVkIGZyb20uLgotCShfYmZkX2VsZl9nZXRfcmVsb2Nfc2VjdGlvbik6IC4uaGVyZS4gIERlbGV0ZS4KLQkoYXNzaWduX3NlY3Rpb25fbnVtYmVycyk6IENhbGwgZWxmX2dldF9yZWxvY19zZWN0aW9uLgotCSogZWxmNjQtcHBjLmMgKGVsZl9iYWNrZW5kX2dldF9yZWxvY19zZWN0aW9uKTogRGVmaW5lLgotCSogZWxmeHgtdGFyZ2V0LmggKGVsZl9iYWNrZW5kX2dldF9yZWxvY19zZWN0aW9uKTogVXBkYXRlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE3LTgzOTMKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBiZmQvQ2hhbmdlTG9nICAgICAgfCAxNSArKysrKysrKysrKysrKwotIGJmZC9lbGYtYmZkLmggICAgICB8ICA4ICsrKystLS0KLSBiZmQvZWxmLmMgICAgICAgICAgfCA2MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBiZmQvZWxmNjQtcHBjLmMgICAgfCAgMSArCi0gYmZkL2VsZnh4LXRhcmdldC5oIHwgIDIgKy0KLSA1IGZpbGVzIGNoYW5nZWQsIDU3IGluc2VydGlvbnMoKyksIDMwIGRlbGV0aW9ucygtKQotCi1JbmRleDogZ2l0L2JmZC9lbGYtYmZkLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvZWxmLWJmZC5oCi0rKysgZ2l0L2JmZC9lbGYtYmZkLmgKLUBAIC0xMzIyLDggKzEzMjIsMTAgQEAgc3RydWN0IGVsZl9iYWNrZW5kX2RhdGEKLSAgIGJmZF9zaXplX3R5cGUgKCptYXliZV9mdW5jdGlvbl9zeW0pIChjb25zdCBhc3ltYm9sICpzeW0sIGFzZWN0aW9uICpzZWMsCi0gCQkJCSAgICAgICBiZmRfdm1hICpjb2RlX29mZik7Ci0gCi0tICAvKiBSZXR1cm4gdGhlIHNlY3Rpb24gd2hpY2ggUkVMT0NfU0VDIGFwcGxpZXMgdG8uICAqLwotLSAgYXNlY3Rpb24gKigqZ2V0X3JlbG9jX3NlY3Rpb24pIChhc2VjdGlvbiAqcmVsb2Nfc2VjKTsKLSsgIC8qIEdpdmVuIE5BTUUsIHRoZSBuYW1lIG9mIGEgcmVsb2NhdGlvbiBzZWN0aW9uIHN0cmlwcGVkIG9mIGl0cwotKyAgICAgLnJlbC8ucmVsYSBwcmVmaXgsIHJldHVybiB0aGUgc2VjdGlvbiBpbiBBQkZEIHRvIHdoaWNoIHRoZQotKyAgICAgcmVsb2NhdGlvbnMgYXBwbHkuICAqLwotKyAgYXNlY3Rpb24gKigqZ2V0X3JlbG9jX3NlY3Rpb24pIChiZmQgKmFiZmQsIGNvbnN0IGNoYXIgKm5hbWUpOwotIAotICAgLyogQ2FsbGVkIHRvIHNldCB0aGUgc2hfZmxhZ3MsIHNoX2xpbmsgYW5kIHNoX2luZm8gZmllbGRzIG9mIE9TRUNUSU9OIHdoaWNoCi0gICAgICBoYXMgYSB0eXBlID49IFNIVF9MT09TLiAgUmV0dXJucyBUUlVFIGlmIHRoZSBmaWVsZHMgd2VyZSBpbml0aWFsaXNlZCwKLUBAIC0yMzkyLDcgKzIzOTQsNyBAQCBleHRlcm4gYmZkX2Jvb2xlYW4gX2JmZF9lbGZfaXNfZnVuY3Rpb25fCi0gZXh0ZXJuIGJmZF9zaXplX3R5cGUgX2JmZF9lbGZfbWF5YmVfZnVuY3Rpb25fc3ltIChjb25zdCBhc3ltYm9sICosIGFzZWN0aW9uICosCi0gCQkJCQkJICBiZmRfdm1hICopOwotIAotLWV4dGVybiBhc2VjdGlvbiAqX2JmZF9lbGZfZ2V0X3JlbG9jX3NlY3Rpb24gKGFzZWN0aW9uICopOwotK2V4dGVybiBhc2VjdGlvbiAqX2JmZF9lbGZfcGx0X2dldF9yZWxvY19zZWN0aW9uIChiZmQgKiwgY29uc3QgY2hhciAqKTsKLSAKLSBleHRlcm4gaW50IGJmZF9lbGZfZ2V0X2RlZmF1bHRfc2VjdGlvbl90eXBlIChmbGFnd29yZCk7Ci0gCi1JbmRleDogZ2l0L2JmZC9lbGYuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9lbGYuYwotKysrIGdpdC9iZmQvZWxmLmMKLUBAIC0zNTMyLDE3ICszNTMyLDM5IEBAIGJmZF9lbGZfc2V0X2dyb3VwX2NvbnRlbnRzIChiZmQgKmFiZmQsIGEKLSAgIEhfUFVUXzMyIChhYmZkLCBzZWMtPmZsYWdzICYgU0VDX0xJTktfT05DRSA/IEdSUF9DT01EQVQgOiAwLCBsb2MpOwotIH0KLSAKLS0vKiBSZXR1cm4gdGhlIHNlY3Rpb24gd2hpY2ggUkVMT0NfU0VDIGFwcGxpZXMgdG8uICAqLwotKy8qIEdpdmVuIE5BTUUsIHRoZSBuYW1lIG9mIGEgcmVsb2NhdGlvbiBzZWN0aW9uIHN0cmlwcGVkIG9mIGl0cwotKyAgIC5yZWwvLnJlbGEgcHJlZml4LCByZXR1cm4gdGhlIHNlY3Rpb24gaW4gQUJGRCB0byB3aGljaCB0aGUKLSsgICByZWxvY2F0aW9ucyBhcHBseS4gICovCi0gCi0gYXNlY3Rpb24gKgotLV9iZmRfZWxmX2dldF9yZWxvY19zZWN0aW9uIChhc2VjdGlvbiAqcmVsb2Nfc2VjKQotK19iZmRfZWxmX3BsdF9nZXRfcmVsb2Nfc2VjdGlvbiAoYmZkICphYmZkLCBjb25zdCBjaGFyICpuYW1lKQotK3sKLSsgIC8qIElmIGEgdGFyZ2V0IG5lZWRzIC5nb3QucGx0IHNlY3Rpb24sIHJlbG9jYXRpb25zIGluIHJlbGEucGx0L3JlbC5wbHQKLSsgICAgIHNlY3Rpb24gbGlrZWx5IGFwcGx5IHRvIC5nb3QucGx0IG9yIC5nb3Qgc2VjdGlvbi4gICovCi0rICBpZiAoZ2V0X2VsZl9iYWNrZW5kX2RhdGEgKGFiZmQpLT53YW50X2dvdF9wbHQKLSsgICAgICAmJiBzdHJjbXAgKG5hbWUsICIucGx0IikgPT0gMCkKLSsgICAgewotKyAgICAgIGFzZWN0aW9uICpzZWM7Ci0rCi0rICAgICAgbmFtZSA9ICIuZ290LnBsdCI7Ci0rICAgICAgc2VjID0gYmZkX2dldF9zZWN0aW9uX2J5X25hbWUgKGFiZmQsIG5hbWUpOwotKyAgICAgIGlmIChzZWMgIT0gTlVMTCkKLSsJcmV0dXJuIHNlYzsKLSsgICAgICBuYW1lID0gIi5nb3QiOwotKyAgICB9Ci0rCi0rICByZXR1cm4gYmZkX2dldF9zZWN0aW9uX2J5X25hbWUgKGFiZmQsIG5hbWUpOwotK30KLSsKLSsvKiBSZXR1cm4gdGhlIHNlY3Rpb24gdG8gd2hpY2ggUkVMT0NfU0VDIGFwcGxpZXMuICAqLwotKwotK3N0YXRpYyBhc2VjdGlvbiAqCi0rZWxmX2dldF9yZWxvY19zZWN0aW9uIChhc2VjdGlvbiAqcmVsb2Nfc2VjKQotIHsKLSAgIGNvbnN0IGNoYXIgKm5hbWU7Ci0gICB1bnNpZ25lZCBpbnQgdHlwZTsKLSAgIGJmZCAqYWJmZDsKLS0KLS0gIGlmIChyZWxvY19zZWMgPT0gTlVMTCkKLS0gICAgcmV0dXJuIE5VTEw7Ci0rICBjb25zdCBzdHJ1Y3QgZWxmX2JhY2tlbmRfZGF0YSAqYmVkOwotIAotICAgdHlwZSA9IGVsZl9zZWN0aW9uX2RhdGEgKHJlbG9jX3NlYyktPnRoaXNfaGRyLnNoX3R5cGU7Ci0gICBpZiAodHlwZSAhPSBTSFRfUkVMICYmIHR5cGUgIT0gU0hUX1JFTEEpCi1AQCAtMzU1MCwyOCArMzU3MiwxNSBAQCBfYmZkX2VsZl9nZXRfcmVsb2Nfc2VjdGlvbiAoYXNlY3Rpb24gKnJlCi0gCi0gICAvKiBXZSBsb29rIHVwIHRoZSBzZWN0aW9uIHRoZSByZWxvY3MgYXBwbHkgdG8gYnkgbmFtZS4gICovCi0gICBuYW1lID0gcmVsb2Nfc2VjLT5uYW1lOwotLSAgaWYgKHR5cGUgPT0gU0hUX1JFTCkKLS0gICAgbmFtZSArPSA0OwotLSAgZWxzZQotLSAgICBuYW1lICs9IDU7Ci0rICBpZiAoc3RybmNtcCAobmFtZSwgIi5yZWwiLCA0KSAhPSAwKQotKyAgICByZXR1cm4gTlVMTDsKLSsgIG5hbWUgKz0gNDsKLSsgIGlmICh0eXBlID09IFNIVF9SRUxBICYmICpuYW1lKysgIT0gJ2EnKQotKyAgICByZXR1cm4gTlVMTDsKLSAKLS0gIC8qIElmIGEgdGFyZ2V0IG5lZWRzIC5nb3QucGx0IHNlY3Rpb24sIHJlbG9jYXRpb25zIGluIHJlbGEucGx0L3JlbC5wbHQKLS0gICAgIHNlY3Rpb24gYXBwbHkgdG8gLmdvdC5wbHQgc2VjdGlvbi4gICovCi0gICBhYmZkID0gcmVsb2Nfc2VjLT5vd25lcjsKLS0gIGlmIChnZXRfZWxmX2JhY2tlbmRfZGF0YSAoYWJmZCktPndhbnRfZ290X3BsdAotLSAgICAgICYmIHN0cmNtcCAobmFtZSwgIi5wbHQiKSA9PSAwKQotLSAgICB7Ci0tICAgICAgLyogLmdvdC5wbHQgaXMgYSBsaW5rZXIgY3JlYXRlZCBpbnB1dCBzZWN0aW9uLiAgSXQgbWF5IGJlIG1hcHBlZAotLQkgdG8gc29tZSBvdGhlciBvdXRwdXQgc2VjdGlvbi4gIFRyeSB0d28gbGlrZWx5IHNlY3Rpb25zLiAgKi8KLS0gICAgICBuYW1lID0gIi5nb3QucGx0IjsKLS0gICAgICByZWxvY19zZWMgPSBiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZSAoYWJmZCwgbmFtZSk7Ci0tICAgICAgaWYgKHJlbG9jX3NlYyAhPSBOVUxMKQotLQlyZXR1cm4gcmVsb2Nfc2VjOwotLSAgICAgIG5hbWUgPSAiLmdvdCI7Ci0tICAgIH0KLS0KLS0gIHJlbG9jX3NlYyA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChhYmZkLCBuYW1lKTsKLS0gIHJldHVybiByZWxvY19zZWM7Ci0rICBiZWQgPSBnZXRfZWxmX2JhY2tlbmRfZGF0YSAoYWJmZCk7Ci0rICByZXR1cm4gYmVkLT5nZXRfcmVsb2Nfc2VjdGlvbiAoYWJmZCwgbmFtZSk7Ci0gfQotIAotIC8qIEFzc2lnbiBhbGwgRUxGIHNlY3Rpb24gbnVtYmVycy4gIFRoZSBkdW1teSBmaXJzdCBzZWN0aW9uIGlzIGhhbmRsZWQgaGVyZQotQEAgLTM4MzMsNyArMzg0Miw3IEBAIGFzc2lnbl9zZWN0aW9uX251bWJlcnMgKGJmZCAqYWJmZCwgc3RydWMKLSAJICBpZiAocyAhPSBOVUxMKQotIAkgICAgZC0+dGhpc19oZHIuc2hfbGluayA9IGVsZl9zZWN0aW9uX2RhdGEgKHMpLT50aGlzX2lkeDsKLSAKLS0JICBzID0gZ2V0X2VsZl9iYWNrZW5kX2RhdGEgKGFiZmQpLT5nZXRfcmVsb2Nfc2VjdGlvbiAoc2VjKTsKLSsJICBzID0gZWxmX2dldF9yZWxvY19zZWN0aW9uIChzZWMpOwotIAkgIGlmIChzICE9IE5VTEwpCi0gCSAgICB7Ci0gCSAgICAgIGQtPnRoaXNfaGRyLnNoX2luZm8gPSBlbGZfc2VjdGlvbl9kYXRhIChzKS0+dGhpc19pZHg7Ci1JbmRleDogZ2l0L2JmZC9lbGY2NC1wcGMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9lbGY2NC1wcGMuYwotKysrIGdpdC9iZmQvZWxmNjQtcHBjLmMKLUBAIC0xMjEsNiArMTIxLDcgQEAgc3RhdGljIGJmZF92bWEgb3BkX2VudHJ5X3ZhbHVlCi0gI2RlZmluZSBlbGZfYmFja2VuZF9zcGVjaWFsX3NlY3Rpb25zCSAgICAgIHBwYzY0X2VsZl9zcGVjaWFsX3NlY3Rpb25zCi0gI2RlZmluZSBlbGZfYmFja2VuZF9tZXJnZV9zeW1ib2xfYXR0cmlidXRlICAgIHBwYzY0X2VsZl9tZXJnZV9zeW1ib2xfYXR0cmlidXRlCi0gI2RlZmluZSBlbGZfYmFja2VuZF9tZXJnZV9zeW1ib2wJICAgICAgcHBjNjRfZWxmX21lcmdlX3N5bWJvbAotKyNkZWZpbmUgZWxmX2JhY2tlbmRfZ2V0X3JlbG9jX3NlY3Rpb24JICAgICAgYmZkX2dldF9zZWN0aW9uX2J5X25hbWUKLSAKLSAvKiBUaGUgbmFtZSBvZiB0aGUgZHluYW1pYyBpbnRlcnByZXRlci4gIFRoaXMgaXMgcHV0IGluIHRoZSAuaW50ZXJwCi0gICAgc2VjdGlvbi4gICovCi1JbmRleDogZ2l0L2JmZC9lbGZ4eC10YXJnZXQuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9lbGZ4eC10YXJnZXQuaAotKysrIGdpdC9iZmQvZWxmeHgtdGFyZ2V0LmgKLUBAIC03MDYsNyArNzA2LDcgQEAKLSAjZW5kaWYKLSAKLSAjaWZuZGVmIGVsZl9iYWNrZW5kX2dldF9yZWxvY19zZWN0aW9uCi0tI2RlZmluZSBlbGZfYmFja2VuZF9nZXRfcmVsb2Nfc2VjdGlvbiBfYmZkX2VsZl9nZXRfcmVsb2Nfc2VjdGlvbgotKyNkZWZpbmUgZWxmX2JhY2tlbmRfZ2V0X3JlbG9jX3NlY3Rpb24gX2JmZF9lbGZfcGx0X2dldF9yZWxvY19zZWN0aW9uCi0gI2VuZGlmCi0gCi0gI2lmbmRlZiBlbGZfYmFja2VuZF9jb3B5X3NwZWNpYWxfc2VjdGlvbl9maWVsZHMKLUluZGV4OiBnaXQvYmZkL0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9DaGFuZ2VMb2cKLSsrKyBnaXQvYmZkL0NoYW5nZUxvZwotQEAgLTEsMyArMSwxOCBAQAotKzIwMTctMDQtMjMgIEFsYW4gTW9kcmEgIDxhbW9kcmFAZ21haWwuY29tPgotKyAKLSsgICAgICAgUFIgMjE0MTIKLSsgICAgICAgKiBlbGYtYmZkLmggKHN0cnVjdCBlbGZfYmFja2VuZF9kYXRhIDxnZXRfcmVsb2Nfc2VjdGlvbj4pOiBDaGFuZ2UKLSsgICAgICAgcGFyYW1ldGVycyBhbmQgY29tbWVudC4KLSsgICAgICAgKF9iZmRfZWxmX2dldF9yZWxvY19zZWN0aW9uKTogRGVsZXRlLgotKyAgICAgICAoX2JmZF9lbGZfcGx0X2dldF9yZWxvY19zZWN0aW9uKTogRGVjbGFyZS4KLSsgICAgICAgKiBlbGYuYyAoX2JmZF9lbGZfcGx0X2dldF9yZWxvY19zZWN0aW9uLCBlbGZfZ2V0X3JlbG9jX3NlY3Rpb24pOgotKyAgICAgICBOZXcgZnVuY3Rpb25zLiAgRG9uJ3QgYmxpbmRseSBza2lwIG92ZXIgYXNzdW1lZCAucmVsLy5yZWxhIHByZWZpeC4KLSsgICAgICAgRXh0cmFjdGVkIGZyb20uLgotKyAgICAgICAoX2JmZF9lbGZfZ2V0X3JlbG9jX3NlY3Rpb24pOiAuLmhlcmUuICBEZWxldGUuCi0rICAgICAgIChhc3NpZ25fc2VjdGlvbl9udW1iZXJzKTogQ2FsbCBlbGZfZ2V0X3JlbG9jX3NlY3Rpb24uCi0rICAgICAgICogZWxmNjQtcHBjLmMgKGVsZl9iYWNrZW5kX2dldF9yZWxvY19zZWN0aW9uKTogRGVmaW5lLgotKyAgICAgICAqIGVsZnh4LXRhcmdldC5oIChlbGZfYmFja2VuZF9nZXRfcmVsb2Nfc2VjdGlvbik6IFVwZGF0ZS4KLSsKLSAyMDE3LTA0LTA0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotIAotICAgICAgICBQUiBiaW51dGlscy8yMTM0MgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy04Mzk0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy04Mzk0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNmM2YjE3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctODM5NC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExOCArMCwwIEBACi1Gcm9tIDdlYWNkNjZiMDg2Y2FiYjFkYWFiMjA4OTBkNTQ4MTg5NGQ0ZjU2YjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGFuIE1vZHJhIDxhbW9kcmFAZ21haWwuY29tPgotRGF0ZTogU3VuLCAyMyBBcHIgMjAxNyAxNToyMToxMSArMDkzMAotU3ViamVjdDogW1BBVENIXSBQUiAyMTQxNCwgbnVsbCBwb2ludGVyIGRlcmVmIG9mIF9iZmRfZWxmX2xhcmdlX2NvbV9zZWN0aW9uCi0gc3ltCi0KLQlQUiAyMTQxNAotCSogc2VjdGlvbi5jIChHTE9CQUxfU1lNX0lOSVQpOiBNYWtlIGF2YWlsYWJsZSBpbiBiZmQuaC4KLQkqIGVsZi5jIChsY29tbV9zeW0pOiBOZXcuCi0JKF9iZmRfZWxmX2xhcmdlX2NvbV9zZWN0aW9uKTogVXNlIGxjb21tX3N5bSBzZWN0aW9uIHN5bWJvbC4KLQkqIGJmZC1pbjIuaDogUmVnZW5lcmF0ZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy04Mzk0Ci1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gYmZkL0NoYW5nZUxvZyB8ICA4ICsrKysrKysrCi0gYmZkL2JmZC1pbjIuaCB8IDEyICsrKysrKysrKysrKwotIGJmZC9lbGYuYyAgICAgfCAgNiArKysrLS0KLSBiZmQvc2VjdGlvbi5jIHwgMjQgKysrKysrKysrKysrLS0tLS0tLS0tLS0tCi0gNCBmaWxlcyBjaGFuZ2VkLCAzNiBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdpdC9iZmQvYmZkLWluMi5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL2JmZC1pbjIuaAotKysrIGdpdC9iZmQvYmZkLWluMi5oCi1AQCAtMTgzOCw2ICsxODM4LDE4IEBAIGV4dGVybiBhc2VjdGlvbiBfYmZkX3N0ZF9zZWN0aW9uWzRdOwotICAgICAgeyBOVUxMIH0sIHsgTlVMTCB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICB9Ci0gCi0rLyogV2UgdXNlIGEgbWFjcm8gdG8gaW5pdGlhbGl6ZSB0aGUgc3RhdGljIGFzeW1ib2wgc3RydWN0dXJlcyBiZWNhdXNlCi0rICAgdHJhZGl0aW9uYWwgQyBkb2VzIG5vdCBwZXJtaXQgdXMgdG8gaW5pdGlhbGl6ZSBhIHVuaW9uIG1lbWJlciB3aGlsZQotKyAgIGdjYyB3YXJucyBpZiB3ZSBkb24ndCBpbml0aWFsaXplIGl0LgotKyAgIHRoZV9iZmQsIG5hbWUsIHZhbHVlLCBhdHRyLCBzZWN0aW9uIFssIHVkYXRhXSAgKi8KLSsjaWZkZWYgX19TVERDX18KLSsjZGVmaW5lIEdMT0JBTF9TWU1fSU5JVChOQU1FLCBTRUNUSU9OKSBcCi0rICB7IDAsIE5BTUUsIDAsIEJTRl9TRUNUSU9OX1NZTSwgU0VDVElPTiwgeyAwIH19Ci0rI2Vsc2UKLSsjZGVmaW5lIEdMT0JBTF9TWU1fSU5JVChOQU1FLCBTRUNUSU9OKSBcCi0rICB7IDAsIE5BTUUsIDAsIEJTRl9TRUNUSU9OX1NZTSwgU0VDVElPTiB9Ci0rI2VuZGlmCi0rCi0gdm9pZCBiZmRfc2VjdGlvbl9saXN0X2NsZWFyIChiZmQgKik7Ci0gCi0gYXNlY3Rpb24gKmJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChiZmQgKmFiZmQsIGNvbnN0IGNoYXIgKm5hbWUpOwotSW5kZXg6IGdpdC9iZmQvZWxmLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvZWxmLmMKLSsrKyBnaXQvYmZkL2VsZi5jCi1AQCAtMTExNjQsOSArMTExNjQsMTEgQEAgX2JmZF9lbGZfZ2V0X3N5bnRoZXRpY19zeW10YWIgKGJmZCAqYWJmZAotIAotIC8qIEl0IGlzIG9ubHkgdXNlZCBieSB4ODYtNjQgc28gZmFyLgotICAgID8/PyBUaGlzIHJlcGVhdHMgKkNPTSogaWQgb2YgemVyby4gIHNlYy0+aWQgaXMgc3VwcG9zZWQgdG8gYmUgdW5pcXVlLAotLSAgIGJ1dCBjdXJyZW50IHVzYWdlIHdvdWxkIGFsbG93IGFsbCBvZiBfYmZkX3N0ZF9zZWN0aW9uIHRvIGJlIHplcm8uICB0Ki8KLSsgICBidXQgY3VycmVudCB1c2FnZSB3b3VsZCBhbGxvdyBhbGwgb2YgX2JmZF9zdGRfc2VjdGlvbiB0byBiZSB6ZXJvLiAgKi8KLStzdGF0aWMgY29uc3QgYXN5bWJvbCBsY29tbV9zeW0KLSsgID0gR0xPQkFMX1NZTV9JTklUICgiTEFSR0VfQ09NTU9OIiwgJl9iZmRfZWxmX2xhcmdlX2NvbV9zZWN0aW9uKTsKLSBhc2VjdGlvbiBfYmZkX2VsZl9sYXJnZV9jb21fc2VjdGlvbgotLSAgPSBCRkRfRkFLRV9TRUNUSU9OIChfYmZkX2VsZl9sYXJnZV9jb21fc2VjdGlvbiwgTlVMTCwKLSsgID0gQkZEX0ZBS0VfU0VDVElPTiAoX2JmZF9lbGZfbGFyZ2VfY29tX3NlY3Rpb24sICZsY29tbV9zeW0sCi0gCQkgICAgICAiTEFSR0VfQ09NTU9OIiwgMCwgU0VDX0lTX0NPTU1PTik7Ci0gCi0gdm9pZAotSW5kZXg6IGdpdC9iZmQvc2VjdGlvbi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL3NlY3Rpb24uYwotKysrIGdpdC9iZmQvc2VjdGlvbi5jCi1AQCAtNzM4LDIwICs3MzgsMjAgQEAgQ09ERV9GUkFHTUVOVAotIC4gICAgIHsgTlVMTCB9LCB7IE5VTEwgfQkJCQkJCVwKLSAuICAgIH0KLSAuCi0rLnsqIFdlIHVzZSBhIG1hY3JvIHRvIGluaXRpYWxpemUgdGhlIHN0YXRpYyBhc3ltYm9sIHN0cnVjdHVyZXMgYmVjYXVzZQotKy4gICB0cmFkaXRpb25hbCBDIGRvZXMgbm90IHBlcm1pdCB1cyB0byBpbml0aWFsaXplIGEgdW5pb24gbWVtYmVyIHdoaWxlCi0rLiAgIGdjYyB3YXJucyBpZiB3ZSBkb24ndCBpbml0aWFsaXplIGl0LgotKy4gICB0aGVfYmZkLCBuYW1lLCB2YWx1ZSwgYXR0ciwgc2VjdGlvbiBbLCB1ZGF0YV0gICp9Ci0rLiNpZmRlZiBfX1NURENfXwotKy4jZGVmaW5lIEdMT0JBTF9TWU1fSU5JVChOQU1FLCBTRUNUSU9OKSBcCi0rLiAgeyAwLCBOQU1FLCAwLCBCU0ZfU0VDVElPTl9TWU0sIFNFQ1RJT04sIHsgMCB9fQotKy4jZWxzZQotKy4jZGVmaW5lIEdMT0JBTF9TWU1fSU5JVChOQU1FLCBTRUNUSU9OKSBcCi0rLiAgeyAwLCBOQU1FLCAwLCBCU0ZfU0VDVElPTl9TWU0sIFNFQ1RJT04gfQotKy4jZW5kaWYKLSsuCi0gKi8KLSAKLS0vKiBXZSB1c2UgYSBtYWNybyB0byBpbml0aWFsaXplIHRoZSBzdGF0aWMgYXN5bWJvbCBzdHJ1Y3R1cmVzIGJlY2F1c2UKLS0gICB0cmFkaXRpb25hbCBDIGRvZXMgbm90IHBlcm1pdCB1cyB0byBpbml0aWFsaXplIGEgdW5pb24gbWVtYmVyIHdoaWxlCi0tICAgZ2NjIHdhcm5zIGlmIHdlIGRvbid0IGluaXRpYWxpemUgaXQuICAqLwotLSAvKiB0aGVfYmZkLCBuYW1lLCB2YWx1ZSwgYXR0ciwgc2VjdGlvbiBbLCB1ZGF0YV0gKi8KLS0jaWZkZWYgX19TVERDX18KLS0jZGVmaW5lIEdMT0JBTF9TWU1fSU5JVChOQU1FLCBTRUNUSU9OKSBcCi0tICB7IDAsIE5BTUUsIDAsIEJTRl9TRUNUSU9OX1NZTSwgU0VDVElPTiwgeyAwIH19Ci0tI2Vsc2UKLS0jZGVmaW5lIEdMT0JBTF9TWU1fSU5JVChOQU1FLCBTRUNUSU9OKSBcCi0tICB7IDAsIE5BTUUsIDAsIEJTRl9TRUNUSU9OX1NZTSwgU0VDVElPTiB9Ci0tI2VuZGlmCi0tCi0gLyogVGhlc2Ugc3ltYm9scyBhcmUgZ2xvYmFsLCBub3Qgc3BlY2lmaWMgdG8gYW55IEJGRC4gIFRoZXJlZm9yZSwgYW55dGhpbmcKLSAgICB0aGF0IHRyaWVzIHRvIGNoYW5nZSB0aGVtIGlzIGJyb2tlbiwgYW5kIHNob3VsZCBiZSByZXBhaXJlZC4gICovCi0gCi1JbmRleDogZ2l0L2JmZC9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvQ2hhbmdlTG9nCi0rKysgZ2l0L2JmZC9DaGFuZ2VMb2cKLUBAIC0xLDQgKzEsMTIgQEAKLSsKLSAyMDE3LTA0LTIzICBBbGFuIE1vZHJhICA8YW1vZHJhQGdtYWlsLmNvbT4KLSsgICAgICAgUFIgMjE0MTQKLSsgICAgICAgKiBzZWN0aW9uLmMgKEdMT0JBTF9TWU1fSU5JVCk6IE1ha2UgYXZhaWxhYmxlIGluIGJmZC5oLgotKyAgICAgICAqIGVsZi5jIChsY29tbV9zeW0pOiBOZXcuCi0rICAgICAgIChfYmZkX2VsZl9sYXJnZV9jb21fc2VjdGlvbik6IFVzZSBsY29tbV9zeW0gc2VjdGlvbiBzeW1ib2wuCi0rICAgICAgICogYmZkLWluMi5oOiBSZWdlbmVyYXRlLgotKwotKysyMDE3LTA0LTIzICBBbGFuIE1vZHJhICA8YW1vZHJhQGdtYWlsLmNvbT4KLSAgCi0gICAgICAgIFBSIDIxNDEyCi0gICAgICAgICogZWxmLWJmZC5oIChzdHJ1Y3QgZWxmX2JhY2tlbmRfZGF0YSA8Z2V0X3JlbG9jX3NlY3Rpb24+KTogQ2hhbmdlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTgzOTUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTgzOTUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhOWJjZTMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy04Mzk1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotRnJvbSBlNjNkMTIzMjY4ZjIzYTRjYmM0NWVlNTVmYjZkYmM3ZDg0NzI5ZGEzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTmljayBDbGlmdG9uIDxuaWNrY0ByZWRoYXQuY29tPgotRGF0ZTogV2VkLCAyNiBBcHIgMjAxNyAxMzowNzo0OSArMDEwMAotU3ViamVjdDogW1BBVENIXSBGaXggc2VnLWZhdWx0IGF0dGVtcHRpbmcgdG8gY29tcHJlc3MgYSBkZWJ1ZyBzZWN0aW9uIGluIGEKLSBjb3JydXB0IGJpbmFyeS4KLQotCVBSIGJpbnV0aWxzLzIxNDMxCi0JKiBjb21wcmVzcy5jIChiZmRfaW5pdF9zZWN0aW9uX2NvbXByZXNzX3N0YXR1cyk6IENoZWNrIHRoZSByZXR1cm4KLQl2YWx1ZSBmcm9tIGJmZF9tYWxsb2MuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTctODM5NQotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIGJmZC9DaGFuZ2VMb2cgIHwgIDYgKysrKysrCi0gYmZkL2NvbXByZXNzLmMgfCAxOSArKysrKysrKystLS0tLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdpdC9iZmQvY29tcHJlc3MuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9jb21wcmVzcy5jCi0rKysgZ2l0L2JmZC9jb21wcmVzcy5jCi1AQCAtNTQyLDcgKzU0Miw2IEBAIGJmZF9pbml0X3NlY3Rpb25fY29tcHJlc3Nfc3RhdHVzIChiZmQgKmEKLSB7Ci0gICBiZmRfc2l6ZV90eXBlIHVuY29tcHJlc3NlZF9zaXplOwotICAgYmZkX2J5dGUgKnVuY29tcHJlc3NlZF9idWZmZXI7Ci0tICBiZmRfYm9vbGVhbiByZXQ7Ci0gCi0gICAvKiBFcnJvciBpZiBub3Qgb3BlbmVkIGZvciByZWFkLiAgKi8KLSAgIGlmIChhYmZkLT5kaXJlY3Rpb24gIT0gcmVhZF9kaXJlY3Rpb24KLUBAIC01NTgsMTggKzU1NywxOCBAQCBiZmRfaW5pdF9zZWN0aW9uX2NvbXByZXNzX3N0YXR1cyAoYmZkICphCi0gICAvKiBSZWFkIGluIHRoZSBmdWxsIHNlY3Rpb24gY29udGVudHMgYW5kIGNvbXByZXNzIGl0LiAgKi8KLSAgIHVuY29tcHJlc3NlZF9zaXplID0gc2VjLT5zaXplOwotICAgdW5jb21wcmVzc2VkX2J1ZmZlciA9IChiZmRfYnl0ZSAqKSBiZmRfbWFsbG9jICh1bmNvbXByZXNzZWRfc2l6ZSk7Ci0rICAvKiBQUiAyMTQzMSAqLwotKyAgaWYgKHVuY29tcHJlc3NlZF9idWZmZXIgPT0gTlVMTCkKLSsgICAgcmV0dXJuIEZBTFNFOwotKwotICAgaWYgKCFiZmRfZ2V0X3NlY3Rpb25fY29udGVudHMgKGFiZmQsIHNlYywgdW5jb21wcmVzc2VkX2J1ZmZlciwKLSAJCQkJIDAsIHVuY29tcHJlc3NlZF9zaXplKSkKLS0gICAgcmV0ID0gRkFMU0U7Ci0tICBlbHNlCi0tICAgIHsKLS0gICAgICB1bmNvbXByZXNzZWRfc2l6ZSA9IGJmZF9jb21wcmVzc19zZWN0aW9uX2NvbnRlbnRzIChhYmZkLCBzZWMsCi0tCQkJCQkJCSB1bmNvbXByZXNzZWRfYnVmZmVyLAotLQkJCQkJCQkgdW5jb21wcmVzc2VkX3NpemUpOwotLSAgICAgIHJldCA9IHVuY29tcHJlc3NlZF9zaXplICE9IDA7Ci0tICAgIH0KLSsgICAgcmV0dXJuIEZBTFNFOwotIAotLSAgcmV0dXJuIHJldDsKLSsgIHVuY29tcHJlc3NlZF9zaXplID0gYmZkX2NvbXByZXNzX3NlY3Rpb25fY29udGVudHMgKGFiZmQsIHNlYywKLSsJCQkJCQkgICAgIHVuY29tcHJlc3NlZF9idWZmZXIsCi0rCQkJCQkJICAgICB1bmNvbXByZXNzZWRfc2l6ZSk7Ci0rICByZXR1cm4gdW5jb21wcmVzc2VkX3NpemUgIT0gMDsKLSB9Ci0gCi0gLyoKLUluZGV4OiBnaXQvYmZkL0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9DaGFuZ2VMb2cKLSsrKyBnaXQvYmZkL0NoYW5nZUxvZwotQEAgLTEsMyArMSw4IEBACi0rMjAxNy0wNC0yNiAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSsKLSsgICAgICAgUFIgYmludXRpbHMvMjE0MzEKLSsgICAgICAgKiBjb21wcmVzcy5jIChiZmRfaW5pdF9zZWN0aW9uX2NvbXByZXNzX3N0YXR1cyk6IENoZWNrIHRoZSByZXR1cm4KLSsgICAgICAgdmFsdWUgZnJvbSBiZmRfbWFsbG9jLgotIAotIDIwMTctMDQtMjMgIEFsYW4gTW9kcmEgIDxhbW9kcmFAZ21haWwuY29tPgotICAgICAgICBQUiAyMTQxNApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy04Mzk2XzgzOTcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTgzOTZfODM5Ny5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTRmNDI4Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTgzOTZfODM5Ny5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi1Gcm9tIGE5NDEyOTFjYWI3MWI5YWMzNTZlMWMwMzk2OGMxNzdjMDNlNjAyYWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGFuIE1vZHJhIDxhbW9kcmFAZ21haWwuY29tPgotRGF0ZTogU2F0LCAyOSBBcHIgMjAxNyAxNDo0ODoxNiArMDkzMAotU3ViamVjdDogW1BBVENIXSBQUjIxNDMyLCBidWZmZXIgb3ZlcmZsb3cgaW4gcGVyZm9ybV9yZWxvY2F0aW9uCi0KLVRoZSBleGlzdGluZyByZWxvYyBvZmZzZXQgcmFuZ2UgdGVzdHMgZGlkbid0IGNhdGNoIHNtYWxsIG5lZ2F0aXZlCi1vZmZzZXRzIGxlc3MgdGhhbiB0aGUgc2l6ZSBvZiB0aGUgcmVsb2MgZmllbGQuCi0KLQlQUiAyMTQzMgotCSogcmVsb2MuYyAocmVsb2Nfb2Zmc2V0X2luX3JhbmdlKTogTmV3IGZ1bmN0aW9uLgotCShiZmRfcGVyZm9ybV9yZWxvY2F0aW9uLCBiZmRfaW5zdGFsbF9yZWxvY2F0aW9uKTogVXNlIGl0LgotCShfYmZkX2ZpbmFsX2xpbmtfcmVsb2NhdGUpOiBMaWtld2lzZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy04Mzk2Ci1DVkU6IENWRS0yMDE3LTgzOTcKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBiZmQvQ2hhbmdlTG9nIHwgIDcgKysrKysrKwotIGJmZC9yZWxvYy5jICAgfCAzMiArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMjcgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBnaXQvYmZkL3JlbG9jLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvcmVsb2MuYwotKysrIGdpdC9iZmQvcmVsb2MuYwotQEAgLTUzOCw2ICs1MzgsMjIgQEAgYmZkX2NoZWNrX292ZXJmbG93IChlbnVtIGNvbXBsYWluX292ZXJmbAotICAgcmV0dXJuIGZsYWc7Ci0gfQotIAotKy8qIEhPV1RPIGRlc2NyaWJlcyBhIHJlbG9jYXRpb24sIGF0IG9mZnNldCBPQ1RFVC4gIFJldHVybiB3aGV0aGVyIHRoZQotKyAgIHJlbG9jYXRpb24gZmllbGQgaXMgd2l0aGluIFNFQ1RJT04gb2YgQUJGRC4gICovCi0rCi0rc3RhdGljIGJmZF9ib29sZWFuCi0rcmVsb2Nfb2Zmc2V0X2luX3JhbmdlIChyZWxvY19ob3d0b190eXBlICpob3d0bywgYmZkICphYmZkLAotKwkJICAgICAgIGFzZWN0aW9uICpzZWN0aW9uLCBiZmRfc2l6ZV90eXBlIG9jdGV0KQotK3sKLSsgIGJmZF9zaXplX3R5cGUgb2N0ZXRfZW5kID0gYmZkX2dldF9zZWN0aW9uX2xpbWl0X29jdGV0cyAoYWJmZCwgc2VjdGlvbik7Ci0rICBiZmRfc2l6ZV90eXBlIHJlbG9jX3NpemUgPSBiZmRfZ2V0X3JlbG9jX3NpemUgKGhvd3RvKTsKLSsKLSsgIC8qIFRoZSByZWxvYyBmaWVsZCBtdXN0IGJlIGNvbnRhaW5lZCBlbnRpcmVseSB3aXRoaW4gdGhlIHNlY3Rpb24uCi0rICAgICBBbGxvdyB6ZXJvIGxlbmd0aCBmaWVsZHMgKG1hcmtlciByZWxvY3Mgb3IgTk9ORSByZWxvY3Mgd2hlcmUgbm8KLSsgICAgIHJlbG9jYXRpb24gd2lsbCBiZSBwZXJmb3JtZWQpIGF0IHRoZSBlbmQgb2YgdGhlIHNlY3Rpb24uICAqLwotKyAgcmV0dXJuIG9jdGV0IDw9IG9jdGV0X2VuZCAmJiBvY3RldCArIHJlbG9jX3NpemUgPD0gb2N0ZXRfZW5kOwotK30KLSsKLSAvKgotIEZVTkNUSU9OCi0gCWJmZF9wZXJmb3JtX3JlbG9jYXRpb24KLUBAIC02MTgsMTMgKzYzNCwxMCBAQCBiZmRfcGVyZm9ybV9yZWxvY2F0aW9uIChiZmQgKmFiZmQsCi0gICAvKiBQUiAxNzUxMjogZmlsZTogMGY2N2Y2OWQuICAqLwotICAgaWYgKGhvd3RvID09IE5VTEwpCi0gICAgIHJldHVybiBiZmRfcmVsb2NfdW5kZWZpbmVkOwotLQotLSAgLyogSXMgdGhlIGFkZHJlc3Mgb2YgdGhlIHJlbG9jYXRpb24gcmVhbGx5IHdpdGhpbiB0aGUgc2VjdGlvbj8KLS0gICAgIEluY2x1ZGUgdGhlIHNpemUgb2YgdGhlIHJlbG9jIGluIHRoZSB0ZXN0IGZvciBvdXQgb2YgcmFuZ2UgYWRkcmVzc2VzLgotLSAgICAgUFIgMTc1MTI6IGZpbGU6IGMxNDZhYjhiLCA0NmRmZjI3ZiwgMzhlNTNlYmYuICAqLwotKyAgCi0rICAvKiBJcyB0aGUgYWRkcmVzcyBvZiB0aGUgcmVsb2NhdGlvbiByZWFsbHkgd2l0aGluIHRoZSBzZWN0aW9uPyAgKi8KLSAgIG9jdGV0cyA9IHJlbG9jX2VudHJ5LT5hZGRyZXNzICogYmZkX29jdGV0c19wZXJfYnl0ZSAoYWJmZCk7Ci0tICBpZiAob2N0ZXRzICsgYmZkX2dldF9yZWxvY19zaXplIChob3d0bykKLS0gICAgICA+IGJmZF9nZXRfc2VjdGlvbl9saW1pdF9vY3RldHMgKGFiZmQsIGlucHV0X3NlY3Rpb24pKQotKyAgaWYgKCFyZWxvY19vZmZzZXRfaW5fcmFuZ2UgKGhvd3RvLCBhYmZkLCBpbnB1dF9zZWN0aW9uLCBvY3RldHMpKQotICAgICByZXR1cm4gYmZkX3JlbG9jX291dG9mcmFuZ2U7Ci0gCi0gICAvKiBXb3JrIG91dCB3aGljaCBzZWN0aW9uIHRoZSByZWxvY2F0aW9uIGlzIHRhcmdldGVkIGF0IGFuZCB0aGUKLUBAIC0xMDEyLDggKzEwMjUsNyBAQCBiZmRfaW5zdGFsbF9yZWxvY2F0aW9uIChiZmQgKmFiZmQsCi0gCi0gICAvKiBJcyB0aGUgYWRkcmVzcyBvZiB0aGUgcmVsb2NhdGlvbiByZWFsbHkgd2l0aGluIHRoZSBzZWN0aW9uPyAgKi8KLSAgIG9jdGV0cyA9IHJlbG9jX2VudHJ5LT5hZGRyZXNzICogYmZkX29jdGV0c19wZXJfYnl0ZSAoYWJmZCk7Ci0tICBpZiAob2N0ZXRzICsgYmZkX2dldF9yZWxvY19zaXplIChob3d0bykKLS0gICAgICA+IGJmZF9nZXRfc2VjdGlvbl9saW1pdF9vY3RldHMgKGFiZmQsIGlucHV0X3NlY3Rpb24pKQotKyAgaWYgKCFyZWxvY19vZmZzZXRfaW5fcmFuZ2UgKGhvd3RvLCBhYmZkLCBpbnB1dF9zZWN0aW9uLCBvY3RldHMpKQotICAgICByZXR1cm4gYmZkX3JlbG9jX291dG9mcmFuZ2U7Ci0gCi0gICAvKiBXb3JrIG91dCB3aGljaCBzZWN0aW9uIHRoZSByZWxvY2F0aW9uIGlzIHRhcmdldGVkIGF0IGFuZCB0aGUKLUBAIC0xMzUxLDggKzEzNjMsNyBAQCBfYmZkX2ZpbmFsX2xpbmtfcmVsb2NhdGUgKHJlbG9jX2hvd3RvX3R5Ci0gICBiZmRfc2l6ZV90eXBlIG9jdGV0cyA9IGFkZHJlc3MgKiBiZmRfb2N0ZXRzX3Blcl9ieXRlIChpbnB1dF9iZmQpOwotIAotICAgLyogU2FuaXR5IGNoZWNrIHRoZSBhZGRyZXNzLiAgKi8KLS0gIGlmIChvY3RldHMgKyBiZmRfZ2V0X3JlbG9jX3NpemUgKGhvd3RvKQotLSAgICAgID4gYmZkX2dldF9zZWN0aW9uX2xpbWl0X29jdGV0cyAoaW5wdXRfYmZkLCBpbnB1dF9zZWN0aW9uKSkKLSsgIGlmICghcmVsb2Nfb2Zmc2V0X2luX3JhbmdlIChob3d0bywgaW5wdXRfYmZkLCBpbnB1dF9zZWN0aW9uLCBvY3RldHMpKQotICAgICByZXR1cm4gYmZkX3JlbG9jX291dG9mcmFuZ2U7Ci0gCi0gICAvKiBUaGlzIGZ1bmN0aW9uIGFzc3VtZXMgdGhhdCB3ZSBhcmUgZGVhbGluZyB3aXRoIGEgYmFzaWMgcmVsb2NhdGlvbgotSW5kZXg6IGdpdC9iZmQvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL0NoYW5nZUxvZwotKysrIGdpdC9iZmQvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDEwIEBACi0rMjAxNy0wNC0yOSAgQWxhbiBNb2RyYSAgPGFtb2RyYUBnbWFpbC5jb20+Ci0rCi0rICAgICAgIFBSIDIxNDMyCi0rICAgICAgICogcmVsb2MuYyAocmVsb2Nfb2Zmc2V0X2luX3JhbmdlKTogTmV3IGZ1bmN0aW9uLgotKyAgICAgICAoYmZkX3BlcmZvcm1fcmVsb2NhdGlvbiwgYmZkX2luc3RhbGxfcmVsb2NhdGlvbik6IFVzZSBpdC4KLSsgICAgICAgKF9iZmRfZmluYWxfbGlua19yZWxvY2F0ZSk6IExpa2V3aXNlLgotKwotIDIwMTctMDQtMjYgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0gCi0gICAgICAgIFBSIGJpbnV0aWxzLzIxNDMxCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTgzOTgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTgzOTgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViOWFjYzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy04Mzk4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTQ3ICswLDAgQEAKLUZyb20gZDk0OWZmNTYwN2I5ZjU5NWUwZWVkMmZmMTVmYmU1ZWI4NGViM2EzNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pY2sgQ2xpZnRvbiA8bmlja2NAcmVkaGF0LmNvbT4KLURhdGU6IEZyaSwgMjggQXByIDIwMTcgMTA6Mjg6MDQgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGhlYXAtYnVmZmVyIG92ZXJmbG93IGJ1Z3MgY2F1c2VkIHdoZW4gZHVtcGluZyBkZWJ1ZwotIGluZm9ybWF0aW9uIGZyb20gYSBjb3JydXB0IGJpbmFyeS4KLQotCVBSIGJpbnV0aWxzLzIxNDM4Ci0JKiBkd2FyZi5jIChwcm9jZXNzX2V4dGVuZGVkX2xpbmVfb3ApOiBEbyBub3QgYXNzdW1lIHRoYXQgdGhlCi0Jc3RyaW5nIGV4dHJhY3RlZCBmcm9tIHRoZSBzZWN0aW9uIGlzIE5VTCB0ZXJtaW5hdGVkLgotCShmZXRjaF9pbmRpcmVjdF9zdHJpbmcpOiBJZiB0aGUgc3RyaW5nIHJldHJpZXZlZCBmcm9tIHRoZSBzZWN0aW9uCi0JaXMgbm90IE5VTCB0ZXJtaW5hdGVkLCByZXR1cm4gYW4gZXJyb3IgbWVzc2FnZS4KLQkoZmV0Y2hfaW5kaXJlY3RfbGluZV9zdHJpbmcpOiBMaWtld2lzZS4KLQkoZmV0Y2hfaW5kZXhlZF9zdHJpbmcpOiBMaWtld2lzZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy04Mzk4Ci1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gYmludXRpbHMvQ2hhbmdlTG9nIHwgMTAgKysrKysrKysrCi0gYmludXRpbHMvZHdhcmYuYyAgIHwgNjYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA2MCBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdpdC9iaW51dGlscy9kd2FyZi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmludXRpbHMvZHdhcmYuYwotKysrIGdpdC9iaW51dGlscy9kd2FyZi5jCi1AQCAtNDcyLDE1ICs0NzIsMjAgQEAgcHJvY2Vzc19leHRlbmRlZF9saW5lX29wICh1bnNpZ25lZCBjaGFyCi0gICAgICAgcHJpbnRmIChfKCIgIEVudHJ5XHREaXJcdFRpbWVcdFNpemVcdE5hbWVcbiIpKTsKLSAgICAgICBwcmludGYgKCIgICAlZFx0IiwgKytzdGF0ZV9tYWNoaW5lX3JlZ3MubGFzdF9maWxlX2VudHJ5KTsKLSAKLS0gICAgICBuYW1lID0gZGF0YTsKLS0gICAgICBkYXRhICs9IHN0cm5sZW4gKChjaGFyICopIGRhdGEsIGVuZCAtIGRhdGEpICsgMTsKLS0gICAgICBwcmludGYgKCIlc1x0IiwgZHdhcmZfdm1hdG9hICgidSIsIHJlYWRfdWxlYjEyOCAoZGF0YSwgJiBieXRlc19yZWFkLCBlbmQpKSk7Ci0tICAgICAgZGF0YSArPSBieXRlc19yZWFkOwotLSAgICAgIHByaW50ZiAoIiVzXHQiLCBkd2FyZl92bWF0b2EgKCJ1IiwgcmVhZF91bGViMTI4IChkYXRhLCAmIGJ5dGVzX3JlYWQsIGVuZCkpKTsKLS0gICAgICBkYXRhICs9IGJ5dGVzX3JlYWQ7Ci0tICAgICAgcHJpbnRmICgiJXNcdCIsIGR3YXJmX3ZtYXRvYSAoInUiLCByZWFkX3VsZWIxMjggKGRhdGEsICYgYnl0ZXNfcmVhZCwgZW5kKSkpOwotLSAgICAgIGRhdGEgKz0gYnl0ZXNfcmVhZDsKLS0gICAgICBwcmludGYgKCIlc1xuXG4iLCBuYW1lKTsKLSsgICAgICB7Ci0rCXNpemVfdCBsOwotKwotKwluYW1lID0gZGF0YTsKLSsJbCA9IHN0cm5sZW4gKChjaGFyICopIGRhdGEsIGVuZCAtIGRhdGEpOwotKwlkYXRhICs9IGxlbiArIDE7Ci0rCXByaW50ZiAoIiVzXHQiLCBkd2FyZl92bWF0b2EgKCJ1IiwgcmVhZF91bGViMTI4IChkYXRhLCAmIGJ5dGVzX3JlYWQsIGVuZCkpKTsKLSsJZGF0YSArPSBieXRlc19yZWFkOwotKwlwcmludGYgKCIlc1x0IiwgZHdhcmZfdm1hdG9hICgidSIsIHJlYWRfdWxlYjEyOCAoZGF0YSwgJiBieXRlc19yZWFkLCBlbmQpKSk7Ci0rCWRhdGEgKz0gYnl0ZXNfcmVhZDsKLSsJcHJpbnRmICgiJXNcdCIsIGR3YXJmX3ZtYXRvYSAoInUiLCByZWFkX3VsZWIxMjggKGRhdGEsICYgYnl0ZXNfcmVhZCwgZW5kKSkpOwotKwlkYXRhICs9IGJ5dGVzX3JlYWQ7Ci0rCXByaW50ZiAoIiUuKnNcblxuIiwgKGludCkgbCwgbmFtZSk7Ci0rICAgICAgfQotIAotICAgICAgIGlmICgoKHVuc2lnbmVkIGludCkgKGRhdGEgLSBvcmlnX2RhdGEpICE9IGxlbikgfHwgZGF0YSA9PSBlbmQpCi0gCXdhcm4gKF8oIkRXX0xORV9kZWZpbmVfZmlsZTogQmFkIG9wY29kZSBsZW5ndGhcbiIpKTsKLUBAIC01OTcsMTggKzYwMiwyNyBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciAqCi0gZmV0Y2hfaW5kaXJlY3Rfc3RyaW5nIChkd2FyZl92bWEgb2Zmc2V0KQotIHsKLSAgIHN0cnVjdCBkd2FyZl9zZWN0aW9uICpzZWN0aW9uID0gJmRlYnVnX2Rpc3BsYXlzIFtzdHJdLnNlY3Rpb247Ci0rICBjb25zdCB1bnNpZ25lZCBjaGFyICogcmV0OwotIAotICAgaWYgKHNlY3Rpb24tPnN0YXJ0ID09IE5VTEwpCi0gICAgIHJldHVybiAoY29uc3QgdW5zaWduZWQgY2hhciAqKSBfKCI8bm8gLmRlYnVnX3N0ciBzZWN0aW9uPiIpOwotIAotLSAgaWYgKG9mZnNldCA+IHNlY3Rpb24tPnNpemUpCi0rICBpZiAob2Zmc2V0ID49IHNlY3Rpb24tPnNpemUpCi0gICAgIHsKLSAgICAgICB3YXJuIChfKCJEV19GT1JNX3N0cnAgb2Zmc2V0IHRvbyBiaWc6ICVzXG4iKSwKLSAJICAgIGR3YXJmX3ZtYXRvYSAoIngiLCBvZmZzZXQpKTsKLSAgICAgICByZXR1cm4gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgXygiPG9mZnNldCBpcyB0b28gYmlnPiIpOwotICAgICB9Ci0rICByZXQgPSBzZWN0aW9uLT5zdGFydCArIG9mZnNldDsKLSsgIC8qIFVuZm9ydHVuYXRlbHkgd2UgY2Fubm90IHJlbHkgdXBvbiB0aGUgLmRlYnVnX3N0ciBzZWN0aW9uIGVuZGluZyB3aXRoIGEKLSsgICAgIE5VTCBieXRlLiAgU2luY2Ugb3VyIGNhbGxlciBpcyBleHBlY3RpbmcgdG8gcmVjZWl2ZSBhIHdlbGwgZm9ybWVkIEMKLSsgICAgIHN0cmluZyB3ZSB0ZXN0IGZvciB0aGUgbGFjayBvZiBhIHRlcm1pbmF0aW5nIGJ5dGUgaGVyZS4gICovCi0rICBpZiAoc3RybmxlbiAoKGNvbnN0IGNoYXIgKikgcmV0LCBzZWN0aW9uLT5zaXplIC0gb2Zmc2V0KQotKyAgICAgID09IHNlY3Rpb24tPnNpemUgLSBvZmZzZXQpCi0rICAgIHJldCA9IChjb25zdCB1bnNpZ25lZCBjaGFyICopCi0rICAgICAgXygiPG5vIE5VTCBieXRlIGF0IGVuZCBvZiAuZGVidWdfc3RyIHNlY3Rpb24+Iik7Ci0gCi0tICByZXR1cm4gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgc2VjdGlvbi0+c3RhcnQgKyBvZmZzZXQ7Ci0rICByZXR1cm4gcmV0OyAKLSB9Ci0gCi0gc3RhdGljIGNvbnN0IGNoYXIgKgotQEAgLTYyMSw2ICs2MzUsNyBAQCBmZXRjaF9pbmRleGVkX3N0cmluZyAoZHdhcmZfdm1hIGlkeCwgc3RyCi0gICBzdHJ1Y3QgZHdhcmZfc2VjdGlvbiAqc3RyX3NlY3Rpb24gPSAmZGVidWdfZGlzcGxheXMgW3N0cl9zZWNfaWR4XS5zZWN0aW9uOwotICAgZHdhcmZfdm1hIGluZGV4X29mZnNldCA9IGlkeCAqIG9mZnNldF9zaXplOwotICAgZHdhcmZfdm1hIHN0cl9vZmZzZXQ7Ci0rICBjb25zdCBjaGFyICogcmV0OwotIAotICAgaWYgKGluZGV4X3NlY3Rpb24tPnN0YXJ0ID09IE5VTEwpCi0gICAgIHJldHVybiAoZHdvID8gXygiPG5vIC5kZWJ1Z19zdHJfb2Zmc2V0cy5kd28gc2VjdGlvbj4iKQotQEAgLTYyOCw3ICs2NDMsNyBAQCBmZXRjaF9pbmRleGVkX3N0cmluZyAoZHdhcmZfdm1hIGlkeCwgc3RyCi0gCi0gICBpZiAodGhpc19zZXQgIT0gTlVMTCkKLSAgICAgaW5kZXhfb2Zmc2V0ICs9IHRoaXNfc2V0LT5zZWN0aW9uX29mZnNldHMgW0RXX1NFQ1RfU1RSX09GRlNFVFNdOwotLSAgaWYgKGluZGV4X29mZnNldCA+IGluZGV4X3NlY3Rpb24tPnNpemUpCi0rICBpZiAoaW5kZXhfb2Zmc2V0ID49IGluZGV4X3NlY3Rpb24tPnNpemUpCi0gICAgIHsKLSAgICAgICB3YXJuIChfKCJEV19GT1JNX0dOVV9zdHJfaW5kZXggb2Zmc2V0IHRvbyBiaWc6ICVzXG4iKSwKLSAJICAgIGR3YXJmX3ZtYXRvYSAoIngiLCBpbmRleF9vZmZzZXQpKTsKLUBAIC02NDEsMTQgKzY1NiwyMiBAQCBmZXRjaF9pbmRleGVkX3N0cmluZyAoZHdhcmZfdm1hIGlkeCwgc3RyCi0gCi0gICBzdHJfb2Zmc2V0ID0gYnl0ZV9nZXQgKGluZGV4X3NlY3Rpb24tPnN0YXJ0ICsgaW5kZXhfb2Zmc2V0LCBvZmZzZXRfc2l6ZSk7Ci0gICBzdHJfb2Zmc2V0IC09IHN0cl9zZWN0aW9uLT5hZGRyZXNzOwotLSAgaWYgKHN0cl9vZmZzZXQgPiBzdHJfc2VjdGlvbi0+c2l6ZSkKLSsgIGlmIChzdHJfb2Zmc2V0ID49IHN0cl9zZWN0aW9uLT5zaXplKQotICAgICB7Ci0gICAgICAgd2FybiAoXygiRFdfRk9STV9HTlVfc3RyX2luZGV4IGluZGlyZWN0IG9mZnNldCB0b28gYmlnOiAlc1xuIiksCi0gCSAgICBkd2FyZl92bWF0b2EgKCJ4Iiwgc3RyX29mZnNldCkpOwotICAgICAgIHJldHVybiBfKCI8aW5kaXJlY3QgaW5kZXggb2Zmc2V0IGlzIHRvbyBiaWc+Iik7Ci0gICAgIH0KLSAKLS0gIHJldHVybiAoY29uc3QgY2hhciAqKSBzdHJfc2VjdGlvbi0+c3RhcnQgKyBzdHJfb2Zmc2V0OwotKyAgcmV0ID0gKGNvbnN0IGNoYXIgKikgc3RyX3NlY3Rpb24tPnN0YXJ0ICsgc3RyX29mZnNldDsKLSsgIC8qIFVuZm9ydHVuYXRlbHkgd2UgY2Fubm90IHJlbHkgdXBvbiBzdHJfc2VjdGlvbiBlbmRpbmcgd2l0aCBhIE5VTCBieXRlLgotKyAgICAgU2luY2Ugb3VyIGNhbGxlciBpcyBleHBlY3RpbmcgdG8gcmVjZWl2ZSBhIHdlbGwgZm9ybWVkIEMgc3RyaW5nIHdlIHRlc3QKLSsgICAgIGZvciB0aGUgbGFjayBvZiBhIHRlcm1pbmF0aW5nIGJ5dGUgaGVyZS4gICovCi0rICBpZiAoc3RybmxlbiAocmV0LCBzdHJfc2VjdGlvbi0+c2l6ZSAtIHN0cl9vZmZzZXQpCi0rICAgICAgPT0gc3RyX3NlY3Rpb24tPnNpemUgLSBzdHJfb2Zmc2V0KQotKyAgICByZXQgPSAoY29uc3QgY2hhciAqKSBfKCI8bm8gTlVMIGJ5dGUgYXQgZW5kIG9mIHNlY3Rpb24+Iik7Ci0rCi0rICByZXR1cm4gcmV0OwotIH0KLSAKLSBzdGF0aWMgY29uc3QgY2hhciAqCi1JbmRleDogZ2l0L2JpbnV0aWxzL0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JpbnV0aWxzL0NoYW5nZUxvZwotKysrIGdpdC9iaW51dGlscy9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsMTMgQEAKLSsyMDE3LTA0LTI4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotKwotKyAgICAgICBQUiBiaW51dGlscy8yMTQzOAotKyAgICAgICAqIGR3YXJmLmMgKHByb2Nlc3NfZXh0ZW5kZWRfbGluZV9vcCk6IERvIG5vdCBhc3N1bWUgdGhhdCB0aGUKLSsgICAgICAgc3RyaW5nIGV4dHJhY3RlZCBmcm9tIHRoZSBzZWN0aW9uIGlzIE5VTCB0ZXJtaW5hdGVkLgotKyAgICAgICAoZmV0Y2hfaW5kaXJlY3Rfc3RyaW5nKTogSWYgdGhlIHN0cmluZyByZXRyaWV2ZWQgZnJvbSB0aGUgc2VjdGlvbgotKyAgICAgICBpcyBub3QgTlVMIHRlcm1pbmF0ZWQsIHJldHVybiBhbiBlcnJvciBtZXNzYWdlLgotKyAgICAgICAoZmV0Y2hfaW5kaXJlY3RfbGluZV9zdHJpbmcpOiBMaWtld2lzZS4KLSsgICAgICAgKGZldGNoX2luZGV4ZWRfc3RyaW5nKTogTGlrZXdpc2UuCi0rCi0gMjAxNy0wMi0xNCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSAKLSAJUFIgYmludXRpbHMvMjExNTcKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctODQyMS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctODQyMS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzk2OWM2Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTg0MjEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi1Gcm9tIDM5ZmYxYjc5ZjY4N2I2NWY0MTQ0ZGRiMzc5ZjIyNTg3MDAzNDQzZmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWNrIENsaWZ0b24gPG5pY2tjQHJlZGhhdC5jb20+Ci1EYXRlOiBUdWUsIDIgTWF5IDIwMTcgMTE6NTQ6NTMgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gUHJldmVudCBtZW1vcnkgZXhoYXVzdGlvbiBmcm9tIGEgY29ycnVwdCBQRSBiaW5hcnkgd2l0aCBhbgotIG92ZXJsYXJnZSBudW1iZXIgb2YgcmVsb2NzLgotCi0JUFIgMjE0NDAKLQkqIG9iamR1bXAuYyAoZHVtcF9yZWxvY3NfaW5fc2VjdGlvbik6IENoZWNrIGZvciBhbiBleGNlc3NpdmUKLQludW1iZXIgb2YgcmVsb2NzIGJlZm9yZSBhdHRlbXB0aW5nIHRvIGR1bXAgdGhlbS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy04NDIxCi1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gYmludXRpbHMvQ2hhbmdlTG9nIHwgNiArKysrKysKLSBiaW51dGlscy9vYmpkdW1wLmMgfCA4ICsrKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspCi0KLUluZGV4OiBnaXQvYmludXRpbHMvb2JqZHVtcC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmludXRpbHMvb2JqZHVtcC5jCi0rKysgZ2l0L2JpbnV0aWxzL29iamR1bXAuYwotQEAgLTMzMTEsNiArMzMxMSwxNCBAQCBkdW1wX3JlbG9jc19pbl9zZWN0aW9uIChiZmQgKmFiZmQsCi0gICAgICAgcmV0dXJuOwotICAgICB9Ci0gCi0rICBpZiAoKGJmZF9nZXRfZmlsZV9mbGFncyAoYWJmZCkgJiAoQkZEX0lOX01FTU9SWSB8IEJGRF9MSU5LRVJfQ1JFQVRFRCkpID09IDAKLSsgICAgICAmJiByZWxzaXplID4gZ2V0X2ZpbGVfc2l6ZSAoYmZkX2dldF9maWxlbmFtZSAoYWJmZCkpKQotKyAgICB7Ci0rICAgICAgcHJpbnRmICgiICh0b28gbWFueTogMHgleClcbiIsIHNlY3Rpb24tPnJlbG9jX2NvdW50KTsKLSsgICAgICBiZmRfc2V0X2Vycm9yIChiZmRfZXJyb3JfZmlsZV90cnVuY2F0ZWQpOwotKyAgICAgIGJmZF9mYXRhbCAoYmZkX2dldF9maWxlbmFtZSAoYWJmZCkpOwotKyAgICB9Ci0rCi0gICByZWxwcCA9IChhcmVsZW50ICoqKSB4bWFsbG9jIChyZWxzaXplKTsKLSAgIHJlbGNvdW50ID0gYmZkX2Nhbm9uaWNhbGl6ZV9yZWxvYyAoYWJmZCwgc2VjdGlvbiwgcmVscHAsIHN5bXMpOwotIAotSW5kZXg6IGdpdC9iaW51dGlscy9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iaW51dGlscy9DaGFuZ2VMb2cKLSsrKyBnaXQvYmludXRpbHMvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDkgQEAKLSsyMDE3LTA1LTAyICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotKwotKyAgICAgICBQUiAyMTQ0MAotKyAgICAgICAqIG9iamR1bXAuYyAoZHVtcF9yZWxvY3NfaW5fc2VjdGlvbik6IENoZWNrIGZvciBhbiBleGNlc3NpdmUKLSsgICAgICAgbnVtYmVyIG9mIHJlbG9jcyBiZWZvcmUgYXR0ZW1wdGluZyB0byBkdW1wIHRoZW0uCi0rCi0gMjAxNy0wNC0yOCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSAKLSAgICAgICAgUFIgYmludXRpbHMvMjE0MzgKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTAzOF85MDQ0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05MDM4XzkwNDQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzNWVmYzMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05MDM4XzkwNDQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1Gcm9tIGYzMmJhNzI5OTFkMjQwNmIyMWFiMTdlZGMyMzRhMmYzZmE3ZmIyM2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWNrIENsaWZ0b24gPG5pY2tjQHJlZGhhdC5jb20+Ci1EYXRlOiBNb24sIDMgQXByIDIwMTcgMTE6MDE6NDUgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gcmVhZGVsZjogVXBkYXRlIGNoZWNrIGZvciBpbnZhbGlkIHdvcmQgb2Zmc2V0cyBpbiBBUk0gdW53aW5kCi0gaW5mb3JtYXRpb24uCi0KLQlQUiBiaW51dGlscy8yMTM0MwotCSogcmVhZGVsZi5jIChnZXRfdW53aW5kX3NlY3Rpb25fd29yZCk6IEZpeCBzbmFmdSBjaGVja2luZyBmb3IKLQlpbnZhbGlkIHdvcmQgb2Zmc2V0cyBpbiBBUk0gdW53aW5kIGluZm9ybWF0aW9uLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE3LTkwMzgKLUNWRTogQ1ZFLTIwMTctOTA0NAotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIGJpbnV0aWxzL0NoYW5nZUxvZyB8IDYgKysrKysrCi0gYmludXRpbHMvcmVhZGVsZi5jIHwgNiArKystLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdpdC9iaW51dGlscy9yZWFkZWxmLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iaW51dGlscy9yZWFkZWxmLmMKLSsrKyBnaXQvYmludXRpbHMvcmVhZGVsZi5jCi1AQCAtNzk3Miw5ICs3OTcyLDkgQEAgZ2V0X3Vud2luZF9zZWN0aW9uX3dvcmQgKHN0cnVjdCBhcm1fdW53XwotICAgICByZXR1cm4gRkFMU0U7Ci0gCi0gICAvKiBJZiB0aGUgb2Zmc2V0IGlzIGludmFsaWQgdGhlbiBmYWlsLiAgKi8KLS0gIGlmICh3b3JkX29mZnNldCA+IChzZWMtPnNoX3NpemUgLSA0KQotLSAgICAgIC8qIFBSIDE4ODc5ICovCi0tICAgICAgfHwgKHNlYy0+c2hfc2l6ZSA8IDUgJiYgd29yZF9vZmZzZXQgPj0gc2VjLT5zaF9zaXplKQotKyAgaWYgKC8qIFBSIDIxMzQzICovLyogUFIgMTg4NzkgKi8KLSsgICAgICBzZWMtPnNoX3NpemUgPCA0Ci0rICAgICAgfHwgd29yZF9vZmZzZXQgPiAoc2VjLT5zaF9zaXplIC0gNCkKLSAgICAgICB8fCAoKGJmZF9zaWduZWRfdm1hKSB3b3JkX29mZnNldCkgPCAwKQotICAgICByZXR1cm4gRkFMU0U7Ci0gCi1JbmRleDogZ2l0L2JpbnV0aWxzL0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JpbnV0aWxzL0NoYW5nZUxvZwotKysrIGdpdC9iaW51dGlscy9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsOSBAQAotKzIwMTctMDQtMDMgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0rCi0rICAgICAgIFBSIGJpbnV0aWxzLzIxMzQzCi0rICAgICAgICogcmVhZGVsZi5jIChnZXRfdW53aW5kX3NlY3Rpb25fd29yZCk6IEZpeCBzbmFmdSBjaGVja2luZyBmb3IKLSsgICAgICAgaW52YWxpZCB3b3JkIG9mZnNldHMgaW4gQVJNIHVud2luZCBpbmZvcm1hdGlvbi4KLSsKLSAyMDE3LTA1LTAyICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotIAotICAgICAgICBQUiAyMTQ0MApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05MDM5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05MDM5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZWQ4ZjdmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTAzOS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLUZyb20gODIxNTZhYjcwNGIwOGIxMjRkMzE5YzBkZWNkYmQ0OGIzY2EyZGFjNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pY2sgQ2xpZnRvbiA8bmlja2NAcmVkaGF0LmNvbT4KLURhdGU6IE1vbiwgMyBBcHIgMjAxNyAxMjoxNDowNiArMDEwMAotU3ViamVjdDogW1BBVENIXSByZWFkZWxmOiBGaXggb3ZlcmxhcmdlIG1lbW9yeSBhbGxvY2F0aW9uIHdoZW4gcmVhZGluZyBhCi0gYmluYXJ5IHdpdGggYW4gZXhjZXNzaXZlIG51bWJlciBvZiBwcm9ncmFtIGhlYWRlcnMuCi0KLQlQUiBiaW51dGlscy8yMTM0NQotCSogcmVhZGVsZi5jIChnZXRfcHJvZ3JhbV9oZWFkZXJzKTogQ2hlY2sgZm9yIHRoZXJlIGJlaW5nIHRvbyBtYW55Ci0JcHJvZ3JhbSBoZWFkZXJzIGJlZm9yZSBhdHRlbXB0aW5nIHRvIGFsbG9jYXRlIHNwYWNlIGZvciB0aGVtLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE3LTkwMzkKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBiaW51dGlscy9DaGFuZ2VMb2cgfCAgNiArKysrKysKLSBiaW51dGlscy9yZWFkZWxmLmMgfCAxNyArKysrKysrKysrKysrKy0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdpdC9iaW51dGlscy9yZWFkZWxmLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iaW51dGlscy9yZWFkZWxmLmMKLSsrKyBnaXQvYmludXRpbHMvcmVhZGVsZi5jCi1AQCAtNDc2NSw5ICs0NzY1LDE5IEBAIGdldF9wcm9ncmFtX2hlYWRlcnMgKEZJTEUgKiBmaWxlKQotICAgaWYgKHByb2dyYW1faGVhZGVycyAhPSBOVUxMKQotICAgICByZXR1cm4gMTsKLSAKLS0gIHBoZHJzID0gKEVsZl9JbnRlcm5hbF9QaGRyICopIGNtYWxsb2MgKGVsZl9oZWFkZXIuZV9waG51bSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZiAoRWxmX0ludGVybmFsX1BoZHIpKTsKLSsgIC8qIEJlIGtpbmQgdG8gbWVtb3J5IGNoZWNrZXJzIGJ5IGxvb2tpbmcgZm9yCi0rICAgICBlX3BobnVtIHZhbHVlcyB3aGljaCB3ZSBrbm93IG11c3QgYmUgaW52YWxpZC4gICovCi0rICBpZiAoZWxmX2hlYWRlci5lX3BobnVtCi0rICAgICAgKiAoaXNfMzJiaXRfZWxmID8gc2l6ZW9mIChFbGYzMl9FeHRlcm5hbF9QaGRyKSA6IHNpemVvZiAoRWxmNjRfRXh0ZXJuYWxfUGhkcikpCi0rICAgICAgPj0gY3VycmVudF9maWxlX3NpemUpCi0rICAgIHsKLSsgICAgICBlcnJvciAoXygiVG9vIG1hbnkgcHJvZ3JhbSBoZWFkZXJzIC0gJSN4IC0gdGhlIGZpbGUgaXMgbm90IHRoYXQgYmlnXG4iKSwKLSsJICAgICBlbGZfaGVhZGVyLmVfcGhudW0pOwotKyAgICAgIHJldHVybiBGQUxTRTsKLSsgICAgfQotIAotKyAgcGhkcnMgPSAoRWxmX0ludGVybmFsX1BoZHIgKikgY21hbGxvYyAoZWxmX2hlYWRlci5lX3BobnVtLAotKwkJCQkJIHNpemVvZiAoRWxmX0ludGVybmFsX1BoZHIpKTsKLSAgIGlmIChwaGRycyA9PSBOVUxMKQotICAgICB7Ci0gICAgICAgZXJyb3IgKF8oIk91dCBvZiBtZW1vcnkgcmVhZGluZyAldSBwcm9ncmFtIGhlYWRlcnNcbiIpLAotSW5kZXg6IGdpdC9iaW51dGlscy9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iaW51dGlscy9DaGFuZ2VMb2cKLSsrKyBnaXQvYmludXRpbHMvQ2hhbmdlTG9nCi1AQCAtMSw1ICsxLDExIEBACi0gMjAxNy0wNC0wMyAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSAKLSsgICAgICAgUFIgYmludXRpbHMvMjEzNDUKLSsgICAgICAgKiByZWFkZWxmLmMgKGdldF9wcm9ncmFtX2hlYWRlcnMpOiBDaGVjayBmb3IgdGhlcmUgYmVpbmcgdG9vIG1hbnkKLSsgICAgICAgcHJvZ3JhbSBoZWFkZXJzIGJlZm9yZSBhdHRlbXB0aW5nIHRvIGFsbG9jYXRlIHNwYWNlIGZvciB0aGVtLgotKwotKzIwMTctMDQtMDMgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0rCi0gICAgICAgIFBSIGJpbnV0aWxzLzIxMzQzCi0gICAgICAgICogcmVhZGVsZi5jIChnZXRfdW53aW5kX3NlY3Rpb25fd29yZCk6IEZpeCBzbmFmdSBjaGVja2luZyBmb3IKLSAgICAgICAgaW52YWxpZCB3b3JkIG9mZnNldHMgaW4gQVJNIHVud2luZCBpbmZvcm1hdGlvbi4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTA0MF85MDQyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05MDQwXzkwNDIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5YzZhN2QuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05MDQwXzkwNDIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi1Gcm9tIDcyOTZhNjJhMmEyMzdmNmIxYWQ4ZGI4YzM4YjA5MGU5ZjU5MmM4Y2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWNrIENsaWZ0b24gPG5pY2tjQHJlZGhhdC5jb20+Ci1EYXRlOiBUaHUsIDEzIEFwciAyMDE3IDE2OjA2OjMwICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHJlYWRlbGY6IGZpeCBvdXQgb2YgcmFuZ2Ugc3VidHJhY3Rpb24sIHNlZyBmYXVsdCBmcm9tIGEgTlVMTAotIHBvaW50ZXIgYW5kIG1lbW9yeSBleGhhdXN0aW9uLCBhbGwgZnJvbSBwYXJzaW5nIGNvcnJ1cHQgYmluYXJpZXMuCi0KLQlQUiBiaW51dGlscy8yMTM3OQotCSogcmVhZGVsZi5jIChwcm9jZXNzX2R5bmFtaWNfc2VjdGlvbik6IERldGVjdCBvdmVyIGxhcmdlIHNlY3Rpb24KLQlvZmZzZXRzIGluIHRoZSBEVF9TWU1UQUIgZW50cnkuCi0KLQlQUiBiaW51dGlscy8yMTM0NQotCSogcmVhZGVsZi5jIChwcm9jZXNzX21pcHNfc3BlY2lmaWMpOiBDYXRjaCBhbiB1bmZlYXNpYmxlIG1lbW9yeQotCWFsbG9jYXRpb24gYmVmb3JlIGl0IGhhcHBlbnMgYW5kIHByaW50IGEgc3VpdGFibGUgZXJyb3IgbWVzc2FnZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy05MDQwCi1DVkU6IENWRS0yMDE3LTkwNDIKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBiaW51dGlscy9DaGFuZ2VMb2cgfCAxMiArKysrKysrKysrKysKLSBiaW51dGlscy9yZWFkZWxmLmMgfCAyNiArKysrKysrKysrKysrKysrKysrKystLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdpdC9iaW51dGlscy9yZWFkZWxmLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iaW51dGlscy9yZWFkZWxmLmMKLSsrKyBnaXQvYmludXRpbHMvcmVhZGVsZi5jCi1AQCAtOTMwNiw2ICs5MzA2LDEyIEBAIHByb2Nlc3NfZHluYW1pY19zZWN0aW9uIChGSUxFICogZmlsZSkKLSAJICAgICBwcm9jZXNzaW5nIHRoYXQuICBUaGlzIGlzIG92ZXJraWxsLCBJIGtub3csIGJ1dCBpdAotIAkgICAgIHNob3VsZCB3b3JrLiAgKi8KLSAJICBzZWN0aW9uLnNoX29mZnNldCA9IG9mZnNldF9mcm9tX3ZtYSAoZmlsZSwgZW50cnktPmRfdW4uZF92YWwsIDApOwotKwkgIGlmICgoYmZkX3NpemVfdHlwZSkgc2VjdGlvbi5zaF9vZmZzZXQgPiBjdXJyZW50X2ZpbGVfc2l6ZSkKLSsJICAgIHsKLSsJICAgICAgLyogU2VlIFBSIDIxMzc5IGZvciBhIHJlcHJvZHVjZXIuICAqLwotKwkgICAgICBlcnJvciAoXygiSW52YWxpZCBEVF9TWU1UQUIgZW50cnk6ICVseCIpLCAobG9uZykgc2VjdGlvbi5zaF9vZmZzZXQpOwotKwkgICAgICByZXR1cm4gRkFMU0U7Ci0rCSAgICB9Ci0gCi0gCSAgaWYgKGFyY2hpdmVfZmlsZV9vZmZzZXQgIT0gMCkKLSAJICAgIHNlY3Rpb24uc2hfc2l6ZSA9IGFyY2hpdmVfZmlsZV9zaXplIC0gc2VjdGlvbi5zaF9vZmZzZXQ7Ci1AQCAtMTUxNzUsNiArMTUxODEsMTUgQEAgcHJvY2Vzc19taXBzX3NwZWNpZmljIChGSUxFICogZmlsZSkKLSAJICByZXR1cm4gMDsKLSAJfQotIAotKyAgICAgIC8qIFBSIDIxMzQ1IC0gcHJpbnQgYSBzbGlnaHRseSBtb3JlIGhlbHBmdWwgZXJyb3IgbWVzc2FnZQotKwkgaWYgd2UgYXJlIHN1cmUgdGhhdCB0aGUgY21hbGxvYyB3aWxsIGZhaWwuICAqLwotKyAgICAgIGlmIChjb25mbGljdHNubyAqIHNpemVvZiAoKiBpY29uZikgPiBjdXJyZW50X2ZpbGVfc2l6ZSkKLSsJewotKwkgIGVycm9yIChfKCJPdmVybGFyZ2UgbnVtYmVyIG9mIGNvbmZsaWN0cyBkZXRlY3RlZDogJWx4XG4iKSwKLSsJCSAobG9uZykgY29uZmxpY3Rzbm8pOwotKwkgIHJldHVybiBGQUxTRTsKLSsJfQotKwotICAgICAgIGljb25mID0gKEVsZjMyX0NvbmZsaWN0ICopIGNtYWxsb2MgKGNvbmZsaWN0c25vLCBzaXplb2YgKCogaWNvbmYpKTsKLSAgICAgICBpZiAoaWNvbmYgPT0gTlVMTCkKLSAJewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05NzQyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05NzQyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYzllZDBkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTc0Mi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLUZyb20gZTY0NTE5ZDFlZDdmZDhmOTkwZjA1YTU1NjJkNWI1YzBjNDRiN2Q3ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pY2sgQ2xpZnRvbiA8bmlja2NAcmVkaGF0LmNvbT4KLURhdGU6IFdlZCwgMTQgSnVuIDIwMTcgMTc6MTA6MjggKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IHNlZy1mYXVsdCB3aGVuIHRyeWluZyB0byBkaXNhc3NlbWJsZSBhIGNvcnJ1cHQgc2NvcmUKLSBiaW5hcnkuCi0KLQlQUiBiaW51dGlscy8yMTU3NgotCSogc2NvcmU3LWRpcy5jIChzY29yZV9vcGNvZGVzKTogQWRkIHNlbnRpbmVsLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE3LTk3NDIKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBvcGNvZGVzL0NoYW5nZUxvZyAgICB8IDUgKysrKysKLSBvcGNvZGVzL3Njb3JlNy1kaXMuYyB8IDMgKystCi0gMiBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotSW5kZXg6IGdpdC9vcGNvZGVzL3Njb3JlNy1kaXMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL29wY29kZXMvc2NvcmU3LWRpcy5jCi0rKysgZ2l0L29wY29kZXMvc2NvcmU3LWRpcy5jCi1AQCAtNTEzLDcgKzUxMyw4IEBAIHN0YXRpYyBzdHJ1Y3Qgc2NvcmVfb3Bjb2RlIHNjb3JlX29wY29kZXMKLSAgIHsweDAwMDAwZDA1LCAweDAwMDA3ZjBmLCAidHZjISJ9LAotICAgezB4MDAwMDAwMjYsIDB4M2UwMDAzZmYsICJ4b3JcdFx0JTIwLTI0ciwgJTE1LTE5ciwgJTEwLTE0ciJ9LAotICAgezB4MDAwMDAwMjcsIDB4M2UwMDAzZmYsICJ4b3IuY1x0XHQlMjAtMjRyLCAlMTUtMTlyLCAlMTAtMTRyIn0sCi0tICB7MHgwMDAwMjAwNywgMHgwMDAwNzAwZiwgInhvciFcdFx0JTgtMTFyLCAlNC03ciJ9Ci0rICB7MHgwMDAwMjAwNywgMHgwMDAwNzAwZiwgInhvciFcdFx0JTgtMTFyLCAlNC03ciJ9LAotKyAgeyAwLCAwLCBOVUxMIH0KLSB9OwotIAotIHR5cGVkZWYgc3RydWN0Ci1JbmRleDogZ2l0L29wY29kZXMvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvb3Bjb2Rlcy9DaGFuZ2VMb2cKLSsrKyBnaXQvb3Bjb2Rlcy9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsOCBAQAotKzIwMTctMDYtMTQgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0rCi0rICAgICAgIFBSIGJpbnV0aWxzLzIxNTc2Ci0rICAgICAgICogc2NvcmU3LWRpcy5jIChzY29yZV9vcGNvZGVzKTogQWRkIHNlbnRpbmVsLgotKwotIDIwMTctMDMtMDcgIEFsYW4gTW9kcmEgIDxhbW9kcmFAZ21haWwuY29tPgotIAotIAlBcHBseSBmcm9tIG1hc3RlcgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05NzQ0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05NzQ0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMzRhNWE2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTc0NC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLUZyb20gZjQ2MWJiZDg0N2YxNTY1N2YzZGQyZjMxN2MzMGM3NWE3NTIwZGExZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pY2sgQ2xpZnRvbiA8bmlja2NAcmVkaGF0LmNvbT4KLURhdGU6IFdlZCwgMTQgSnVuIDIwMTcgMTc6MDE6NTQgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGFkZHJlc3MgdmlvbGF0aW9uIGJ1ZyB3aGVuIGRpc2Fzc2VtYmxpbmcgYSBjb3JydXB0IFNICi0gYmluYXJ5LgotCi0JUFIgYmludXRpbHMvMjE1NzgKLQkqIGVsZjMyLXNoLmMgKHNoX2VsZl9zZXRfbWFjaF9mcm9tX2ZsYWdzKTogRml4IGNoZWNrIGZvciBpbnZhbGlkCi0JZmxhZyB2YWx1ZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy05NzQ0Ci1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gYmZkL0NoYW5nZUxvZyAgfCA2ICsrKysrKwotIGJmZC9lbGYzMi1zaC5jIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLUluZGV4OiBnaXQvYmZkL2VsZjMyLXNoLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvZWxmMzItc2guYwotKysrIGdpdC9iZmQvZWxmMzItc2guYwotQEAgLTYzNDQsNyArNjM0NCw3IEBAIHNoX2VsZl9zZXRfbWFjaF9mcm9tX2ZsYWdzIChiZmQgKmFiZmQpCi0gewotICAgZmxhZ3dvcmQgZmxhZ3MgPSBlbGZfZWxmaGVhZGVyIChhYmZkKS0+ZV9mbGFncyAmIEVGX1NIX01BQ0hfTUFTSzsKLSAKLS0gIGlmIChmbGFncyA+PSBzaXplb2Yoc2hfZWZfYmZkX3RhYmxlKSkKLSsgIGlmIChmbGFncyA+PSBBUlJBWV9TSVpFIChzaF9lZl9iZmRfdGFibGUpKQotICAgICByZXR1cm4gRkFMU0U7Ci0gCi0gICBpZiAoc2hfZWZfYmZkX3RhYmxlW2ZsYWdzXSA9PSAwKQotSW5kZXg6IGdpdC9iZmQvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL0NoYW5nZUxvZwotKysrIGdpdC9iZmQvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDkgQEAKLSsyMDE3LTA2LTE0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotKyAKLSsgICAgICAgUFIgYmludXRpbHMvMjE1NzgKLSsgICAgICAgKiBlbGYzMi1zaC5jIChzaF9lbGZfc2V0X21hY2hfZnJvbV9mbGFncyk6IEZpeCBjaGVjayBmb3IgaW52YWxpZAotKyAgICAgICBmbGFnIHZhbHVlLgotKwotIDIwMTctMDQtMjkgIEFsYW4gTW9kcmEgIDxhbW9kcmFAZ21haWwuY29tPgotIAotICAgICAgICBQUiAyMTQzMgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05NzQ1LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05NzQ1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYjM4ODViLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTc0NS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLUZyb20gNzY4MDBjYmE1OTVlZmMzZmU5NWE0NDZjMmQ2NjRlNDJhZTRlZTg2OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pY2sgQ2xpZnRvbiA8bmlja2NAcmVkaGF0LmNvbT4KLURhdGU6IFRodSwgMTUgSnVuIDIwMTcgMTI6MDg6NTcgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gSGFuZGxlIEVJVFIgcmVjb3JkcyBpbiBWTVMgQWxwaGEgYmluYXJpZXMgd2l0aCBvdmVybGFyZ2UKLSBjb21tYW5kIGxlbmd0aCBwYXJhbWV0ZXJzLgotCi0JUFIgYmludXRpbHMvMjE1NzkKLQkqIHZtcy1hbHBoYS5jIChfYmZkX3Ztc19zbHVycF9ldGlyKTogRXh0ZW5kIGNoZWNrIG9mIGNtZF9sZW5ndGguCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTctOTc0NQotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIGJmZC9DaGFuZ2VMb2cgICB8ICA1ICsrKysrCi0gYmZkL3Ztcy1hbHBoYS5jIHwgMTYgKysrKysrKystLS0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdpdC9iZmQvdm1zLWFscGhhLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvdm1zLWFscGhhLmMKLSsrKyBnaXQvYmZkL3Ztcy1hbHBoYS5jCi1AQCAtMTc0MSw2ICsxNzQxLDEyIEBAIF9iZmRfdm1zX3NsdXJwX2V0aXIgKGJmZCAqYWJmZCwgc3RydWN0IGIKLSAgICAgICBfYmZkX2hleGR1bXAgKDgsIHB0ciwgY21kX2xlbmd0aCAtIDQsIDApOwotICNlbmRpZgotIAotKyNpZiBWTVNfREVCVUcKLSsgICAgICBfYmZkX3Ztc19kZWJ1ZyAoNCwgImV0aXI6ICVzKCVkKVxuIiwKLSsgICAgICAgICAgICAgICAgICAgICAgX2JmZF92bXNfZXRpcl9uYW1lIChjbWQpLCBjbWQpOwotKyAgICAgIF9iZmRfaGV4ZHVtcCAoOCwgcHRyLCBjbWRfbGVuZ3RoIC0gNCwgMCk7Ci0rI2VuZGlmCi0rCi0gICAgICAgc3dpdGNoIChjbWQpCi0gICAgICAgICB7Ci0gICAgICAgICAgIC8qIFN0YWNrIGdsb2JhbApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05NzQ2LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05NzQ2LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZDRhNDBjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTc0Ni5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDkxICswLDAgQEAKLUZyb20gYWU4N2Y3ZTczZWJhMjliZDM4YjNhOTY4NGExMGI5NDhlZDcxNTYxMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pY2sgQ2xpZnRvbiA8bmlja2NAcmVkaGF0LmNvbT4KLURhdGU6IFdlZCwgMTQgSnVuIDIwMTcgMTY6NTA6MDMgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGFkZHJlc3MgdmlvbGF0aW9uIHdoZW4gZGlzYXNzZW1ibGluZyBhIGNvcnJ1cHQgYmluYXJ5LgotCi0JUFIgYmludXRpbHMvMjE1ODAKLWJpbnV0aWxzICogb2JqZHVtcC5jIChkaXNhc3NlbWJsZV9ieXRlcyk6IENoZWNrIGZvciBidWZmZXIgb3ZlcnJ1biB3aGVuCi0JcHJpbnRpbmcgb3V0IHJhZSBpbnNucy4KLQotbGQJKiB0ZXN0c3VpdGUvbGQtbmRzMzIvZGlmZi5kOiBBZGp1c3QgZXhwZWN0ZWQgb3V0cHV0LgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE3LTk3NDYKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBiaW51dGlscy9vYmpkdW1wLmMgICAgICAgICAgIHwgMjcgKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tCi0gbGQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICB8ICA1ICsrKysrCi0gbGQvdGVzdHN1aXRlL2xkLW5kczMyL2RpZmYuZCB8ICA2ICsrKy0tLQotIDMgZmlsZXMgY2hhbmdlZCwgMjMgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBnaXQvYmludXRpbHMvb2JqZHVtcC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmludXRpbHMvb2JqZHVtcC5jCi0rKysgZ2l0L2JpbnV0aWxzL29iamR1bXAuYwotQEAgLTE4NTUsMjAgKzE4NTUsMjMgQEAgZGlzYXNzZW1ibGVfYnl0ZXMgKHN0cnVjdCBkaXNhc3NlbWJsZV9pbgotIAotIAkgICAgICBmb3IgKGogPSBhZGRyX29mZnNldCAqIG9wYjsgaiA8IGFkZHJfb2Zmc2V0ICogb3BiICsgcGI7IGogKz0gYnBjKQotIAkJewotLQkJICBpbnQgazsKLS0KLS0JCSAgaWYgKGJwYyA+IDEgJiYgaW5mLT5kaXNwbGF5X2VuZGlhbiA9PSBCRkRfRU5ESUFOX0xJVFRMRSkKLS0JCSAgICB7Ci0tCQkgICAgICBmb3IgKGsgPSBicGMgLSAxOyBrID49IDA7IGstLSkKLS0JCQlwcmludGYgKCIlMDJ4IiwgKHVuc2lnbmVkKSBkYXRhW2ogKyBrXSk7Ci0tCQkgICAgICBwdXRjaGFyICgnICcpOwotLQkJICAgIH0KLS0JCSAgZWxzZQotKwkJICAvKiBQUiAyMTU4MDogQ2hlY2sgZm9yIGEgYnVmZmVyIGVuZGluZyBlYXJseS4gICovCi0rCQkgIGlmIChqICsgYnBjIDw9IHN0b3Bfb2Zmc2V0ICogb3BiKQotIAkJICAgIHsKLS0JCSAgICAgIGZvciAoayA9IDA7IGsgPCBicGM7IGsrKykKLS0JCQlwcmludGYgKCIlMDJ4IiwgKHVuc2lnbmVkKSBkYXRhW2ogKyBrXSk7Ci0tCQkgICAgICBwdXRjaGFyICgnICcpOwotKwkJICAgICAgaW50IGs7Ci0rCi0rCQkgICAgICBpZiAoaW5mLT5kaXNwbGF5X2VuZGlhbiA9PSBCRkRfRU5ESUFOX0xJVFRMRSkKLSsJCQl7Ci0rCQkJICBmb3IgKGsgPSBicGMgLSAxOyBrID49IDA7IGstLSkKLSsJCQkgICAgcHJpbnRmICgiJTAyeCIsICh1bnNpZ25lZCkgZGF0YVtqICsga10pOwotKwkJCX0KLSsJCSAgICAgIGVsc2UKLSsJCQl7Ci0rCQkJICBmb3IgKGsgPSAwOyBrIDwgYnBjOyBrKyspCi0rCQkJICAgIHByaW50ZiAoIiUwMngiLCAodW5zaWduZWQpIGRhdGFbaiArIGtdKTsKLSsJCQl9Ci0gCQkgICAgfQotKwkJICBwdXRjaGFyICgnICcpOwotIAkJfQotIAotIAkgICAgICBmb3IgKDsgcGIgPCBvY3RldHNfcGVyX2xpbmU7IHBiICs9IGJwYykKLUluZGV4OiBnaXQvbGQvdGVzdHN1aXRlL2xkLW5kczMyL2RpZmYuZAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2xkL3Rlc3RzdWl0ZS9sZC1uZHMzMi9kaWZmLmQKLSsrKyBnaXQvbGQvdGVzdHN1aXRlL2xkLW5kczMyL2RpZmYuZAotQEAgLTcsOSArNyw5IEBACi0gCi0gRGlzYXNzZW1ibHkgb2Ygc2VjdGlvbiAuZGF0YToKLSAwMDAwODAwMCA8V09SRD4gKDdlIDAwIDAwIDAwfDAwIDAwIDAwIDdlKS4qCi0tMDAwMDgwMDQgPEhBTEY+ICg3ZSAwMCA3ZSBmZXwwMCA3ZSA3ZSBmZSkuKgotLTAwMDA4MDA2IDxCWVRFPiA3ZSBmZSAwMCBmZS4qCi0tMDAwMDgwMDcgPFVMRUIxMjg+IGZlIDAwLioKLSswMDAwODAwNCA8SEFMRj4gKDdlIDAwfDAwIDdlKS4qCi0rMDAwMDgwMDYgPEJZVEU+IDdlLioKLSswMDAwODAwNyA8VUxFQjEyOD4gZmUuKgotIAkuLi4KLSAwMDAwODAwOSA8VUxFQjEyOF8yPiBmZSAwMC4qCi0gLioKLUluZGV4OiBnaXQvbGQvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvbGQvQ2hhbmdlTG9nCi0rKysgZ2l0L2xkL0NoYW5nZUxvZwotQEAgLTEsMyArMSw4IEBACi0rMjAxNy0wNi0xNCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSsKLSsgICAgICAgUFIgYmludXRpbHMvMjE1ODAKLSsgICAgICAgKiB0ZXN0c3VpdGUvbGQtbmRzMzIvZGlmZi5kOiBBZGp1c3QgZXhwZWN0ZWQgb3V0cHV0LgotKwotIDIwMTctMDMtMDcgIEFsYW4gTW9kcmEgIDxhbW9kcmFAZ21haWwuY29tPgotIAotIAkqIGxkbGFuZy5jIChvcGVuX2lucHV0X2JmZHMpOiBDaGVjayB0aGF0IGxhbmdfYXNzaWdubWVudF9zdGF0ZW1lbnQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTc0Ny5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTc0Ny5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDFlYWQ1NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk3NDcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1Gcm9tIDYyYjc2ZTRiNmUwYjRjYjViM2UwMDUzZDFkZTQwOTdiMzI1NzcwNDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWNrIENsaWZ0b24gPG5pY2tjQHJlZGhhdC5jb20+Ci1EYXRlOiBUaHUsIDE1IEp1biAyMDE3IDEzOjA4OjQ3ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBhZGRyZXNzIHZpb2xhdGlvbiBwYXJzaW5nIGEgY29ycnVwdCBpZWVlIGJpbmFyeS4KLQotCVBSIGJpbnV0aWxzLzIxNTgxCi0JKGllZWVfYXJjaGl2ZV9wKTogVXNlIGEgc3RhdGljIGJ1ZmZlciB0byBhdm9pZCBjb21waWxlciBidWdzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE3LTk3NDcKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBiZmQvQ2hhbmdlTG9nIHwgMiArKwotIGJmZC9pZWVlLmMgICAgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotSW5kZXg6IGdpdC9iZmQvaWVlZS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL2llZWUuYwotKysrIGdpdC9iZmQvaWVlZS5jCi1AQCAtMTM1Nyw3ICsxMzU3LDcgQEAgaWVlZV9hcmNoaXZlX3AgKGJmZCAqYWJmZCkKLSB7Ci0gICBjaGFyICpsaWJyYXJ5OwotICAgdW5zaWduZWQgaW50IGk7Ci0tICB1bnNpZ25lZCBjaGFyIGJ1ZmZlcls1MTJdOwotKyAgc3RhdGljIHVuc2lnbmVkIGNoYXIgYnVmZmVyWzUxMl07Ci0gICBmaWxlX3B0ciBidWZmZXJfb2Zmc2V0ID0gMDsKLSAgIGllZWVfYXJfZGF0YV90eXBlICpzYXZlID0gYWJmZC0+dGRhdGEuaWVlZV9hcl9kYXRhOwotICAgaWVlZV9hcl9kYXRhX3R5cGUgKmllZWU7Ci1JbmRleDogZ2l0L2JmZC9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvQ2hhbmdlTG9nCi0rKysgZ2l0L2JmZC9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsOCBAQAotKzIwMTctMDYtMTUgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0rCi0rICAgICAgIFBSIGJpbnV0aWxzLzIxNTgxCi0rICAgICAgIChpZWVlX2FyY2hpdmVfcCk6IExpa2V3aXNlLgotKwotIDIwMTctMDYtMTQgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0gIAotICAgICAgICBQUiBiaW51dGlscy8yMTU3OApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05NzQ4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05NzQ4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjA3MDIzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTc0OC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLUZyb20gNjM2MzRiYjRhMTA3ODc3ZGQwOGI2MjgyZTI4ZTExY2ZkMWExNjQ5ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pY2sgQ2xpZnRvbiA8bmlja2NAcmVkaGF0LmNvbT4KLURhdGU6IFRodSwgMTUgSnVuIDIwMTcgMTI6NDQ6MjMgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gQXZvaWQgYSBwb3NzaWJsZSBjb21waWxlciBidWcgYnkgdXNpbmcgYSBzdGF0aWMgYnVmZmVyCi0gaW5zdGVhZCBvZiBhIHN0YWNrIGxvY2FsIGJ1ZmZlci4KLQotCVBSIGJpbnV0aWxzLzIxNTgyCi0JKiBpZWVlLmMgKGllZWVfb2JqZWN0X3ApOiBVc2UgYSBzdGF0aWMgYnVmZmVyIHRvIGF2b2lkIGNvbXBpbGVyCi0JYnVncy4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy05NzQ4Ci1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gYmZkL0NoYW5nZUxvZyB8IDYgKysrKysrCi0gYmZkL2llZWUuYyAgICB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1JbmRleDogZ2l0L2JmZC9pZWVlLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvaWVlZS5jCi0rKysgZ2l0L2JmZC9pZWVlLmMKLUBAIC0xODc1LDcgKzE4NzUsNyBAQCBpZWVlX29iamVjdF9wIChiZmQgKmFiZmQpCi0gICBjaGFyICpwcm9jZXNzb3I7Ci0gICB1bnNpZ25lZCBpbnQgcGFydDsKLSAgIGllZWVfZGF0YV90eXBlICppZWVlOwotLSAgdW5zaWduZWQgY2hhciBidWZmZXJbMzAwXTsKLSsgIHN0YXRpYyB1bnNpZ25lZCBjaGFyIGJ1ZmZlclszMDBdOwotICAgaWVlZV9kYXRhX3R5cGUgKnNhdmUgPSBJRUVFX0RBVEEgKGFiZmQpOwotICAgYmZkX3NpemVfdHlwZSBhbXQ7Ci0gCi1JbmRleDogZ2l0L2JmZC9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvQ2hhbmdlTG9nCi0rKysgZ2l0L2JmZC9DaGFuZ2VMb2cKLUBAIC0xLDUgKzEsOSBAQAotIDIwMTctMDYtMTUgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0gCi0rICAgICAgIFBSIGJpbnV0aWxzLzIxNTgyCi0rICAgICAgICogaWVlZS5jIChpZWVlX29iamVjdF9wKTogVXNlIGEgc3RhdGljIGJ1ZmZlciB0byBhdm9pZCBjb21waWxlcgotKyAgICAgICBidWdzLgotKwotICAgICAgICBQUiBiaW51dGlscy8yMTU4MQotICAgICAgICAoaWVlZV9hcmNoaXZlX3ApOiBMaWtld2lzZS4KLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTc0OS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTc0OS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2NjMmFmYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk3NDkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3NyArMCwwIEBACi1Gcm9tIDA4Yzc4ODFiODE0YzU0NmVmYzM5OTZmZDFkZWNkZjA4NzdmN2E3NzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWNrIENsaWZ0b24gPG5pY2tjQHJlZGhhdC5jb20+Ci1EYXRlOiBUaHUsIDE1IEp1biAyMDE3IDExOjUyOjAyICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIFByZXZlbnQgaW52YWxpZCBhcnJheSBhY2Nlc3NlcyB3aGVuIGRpc2Fzc2VtYmxpbmcgYSBjb3JydXB0Ci0gYmZpbiBiaW5hcnkuCi0KLQlQUiBiaW51dGlscy8yMTU4NgotCSogYmZpbi1kaXMuYyAoZ3JlZ3MpOiBDbGlwIGluZGV4IHRvIHByZXZlbnQgb3ZlcmZsb3cuCi0JKHJlZ3MpOiBMaWtld2lzZS4KLQkocmVnc19sbyk6IExpa2V3aXNlLgotCShyZWdzX2hpKTogTGlrZXdpc2UuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTctOTc0OQotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIG9wY29kZXMvQ2hhbmdlTG9nICB8IDggKysrKysrKysKLSBvcGNvZGVzL2JmaW4tZGlzLmMgfCA4ICsrKystLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1JbmRleDogZ2l0L29wY29kZXMvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvb3Bjb2Rlcy9DaGFuZ2VMb2cKLSsrKyBnaXQvb3Bjb2Rlcy9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsMTEgQEAKLSsyMDE3LTA2LTE1ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotKwotKwlQUiBiaW51dGlscy8yMTU4NgotKwkqIGJmaW4tZGlzLmMgKGdyZWdzKTogQ2xpcCBpbmRleCB0byBwcmV2ZW50IG92ZXJmbG93LgotKwkocmVncyk6IExpa2V3aXNlLgotKwkocmVnc19sbyk6IExpa2V3aXNlLgotKwkocmVnc19oaSk6IExpa2V3aXNlLgotKwotIDIwMTctMDYtMTQgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0gCi0gICAgICAgIFBSIGJpbnV0aWxzLzIxNTc2Ci1JbmRleDogZ2l0L29wY29kZXMvYmZpbi1kaXMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL29wY29kZXMvYmZpbi1kaXMuYwotKysrIGdpdC9vcGNvZGVzL2JmaW4tZGlzLmMKLUBAIC0zNTAsNyArMzUwLDcgQEAgc3RhdGljIGNvbnN0IGVudW0gbWFjaGluZV9yZWdpc3RlcnMgZGVjbwotICAgUkVHX1AwLCBSRUdfUDEsIFJFR19QMiwgUkVHX1AzLCBSRUdfUDQsIFJFR19QNSwgUkVHX1NQLCBSRUdfRlAsCi0gfTsKLSAKLS0jZGVmaW5lIGdyZWdzKHgsIGkpIFJFR05BTUUgKGRlY29kZV9ncmVnc1soKGkpIDw8IDMpIHwgKHgpXSkKLSsjZGVmaW5lIGdyZWdzKHgsIGkpIFJFR05BTUUgKGRlY29kZV9ncmVnc1soKChpKSA8PCAzKSB8ICh4KSkgJiAxNV0pCi0gCi0gLyogW2RyZWdzIHByZWdzIChpcmVncyBtcmVncykgKGJyZWdzIGxyZWdzKV0uICAqLwotIHN0YXRpYyBjb25zdCBlbnVtIG1hY2hpbmVfcmVnaXN0ZXJzIGRlY29kZV9yZWdzW10gPQotQEAgLTM2MSw3ICszNjEsNyBAQCBzdGF0aWMgY29uc3QgZW51bSBtYWNoaW5lX3JlZ2lzdGVycyBkZWNvCi0gICBSRUdfQjAsIFJFR19CMSwgUkVHX0IyLCBSRUdfQjMsIFJFR19MMCwgUkVHX0wxLCBSRUdfTDIsIFJFR19MMywKLSB9OwotIAotLSNkZWZpbmUgcmVncyh4LCBpKSBSRUdOQU1FIChkZWNvZGVfcmVnc1soKGkpIDw8IDMpIHwgKHgpXSkKLSsjZGVmaW5lIHJlZ3MoeCwgaSkgUkVHTkFNRSAoZGVjb2RlX3JlZ3NbKCgoaSkgPDwgMykgfCAoeCkpICYgMzFdKQotIAotIC8qIFtkcmVncyBwcmVncyAoaXJlZ3MgbXJlZ3MpIChicmVncyBscmVncykgTG93IEhhbGZdLiAgKi8KLSBzdGF0aWMgY29uc3QgZW51bSBtYWNoaW5lX3JlZ2lzdGVycyBkZWNvZGVfcmVnc19sb1tdID0KLUBAIC0zNzIsNyArMzcyLDcgQEAgc3RhdGljIGNvbnN0IGVudW0gbWFjaGluZV9yZWdpc3RlcnMgZGVjbwotICAgUkVHX0JMMCwgUkVHX0JMMSwgUkVHX0JMMiwgUkVHX0JMMywgUkVHX0xMMCwgUkVHX0xMMSwgUkVHX0xMMiwgUkVHX0xMMywKLSB9OwotIAotLSNkZWZpbmUgcmVnc19sbyh4LCBpKSBSRUdOQU1FIChkZWNvZGVfcmVnc19sb1soKGkpIDw8IDMpIHwgKHgpXSkKLSsjZGVmaW5lIHJlZ3NfbG8oeCwgaSkgUkVHTkFNRSAoZGVjb2RlX3JlZ3NfbG9bKCgoaSkgPDwgMykgfCAoeCkpICYgMzFdKQotIAotIC8qIFtkcmVncyBwcmVncyAoaXJlZ3MgbXJlZ3MpIChicmVncyBscmVncykgSGlnaCBIYWxmXS4gICovCi0gc3RhdGljIGNvbnN0IGVudW0gbWFjaGluZV9yZWdpc3RlcnMgZGVjb2RlX3JlZ3NfaGlbXSA9Ci1AQCAtMzgzLDcgKzM4Myw3IEBAIHN0YXRpYyBjb25zdCBlbnVtIG1hY2hpbmVfcmVnaXN0ZXJzIGRlY28KLSAgIFJFR19CSDAsIFJFR19CSDEsIFJFR19CSDIsIFJFR19CSDMsIFJFR19MSDAsIFJFR19MSDEsIFJFR19MSDIsIFJFR19MSDMsCi0gfTsKLSAKLS0jZGVmaW5lIHJlZ3NfaGkoeCwgaSkgUkVHTkFNRSAoZGVjb2RlX3JlZ3NfaGlbKChpKSA8PCAzKSB8ICh4KV0pCi0rI2RlZmluZSByZWdzX2hpKHgsIGkpIFJFR05BTUUgKGRlY29kZV9yZWdzX2hpWygoKGkpIDw8IDMpIHwgKHgpKSAmIDMxXSkKLSAKLSBzdGF0aWMgY29uc3QgZW51bSBtYWNoaW5lX3JlZ2lzdGVycyBkZWNvZGVfc3RhdGJpdHNbXSA9Ci0gewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05NzUwLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05NzUwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZThmYTY5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTc1MC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI0NyArMCwwIEBACi1Gcm9tIGRiNWZhNzcwMjY4YmFmOGNjODJjZjliMTQxZDY5Nzk5ZmQ0ODVmZTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWNrIENsaWZ0b24gPG5pY2tjQHJlZGhhdC5jb20+Ci1EYXRlOiBXZWQsIDE0IEp1biAyMDE3IDEzOjM1OjA2ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBhZGRyZXNzIHZpb2xhdGlvbiBwcm9ibGVtcyB3aGVuIGRpc2Fzc2VtYmxpbmcgYSBjb3JydXB0Ci0gUlggYmluYXJ5LgotCi0JUFIgYmludXRpbHMvMjE1ODcKLQkqIHJ4LWRlY29kZS5vcGM6IEluY2x1ZGUgbGliaWJlcnR5LmgKLQkoR0VUX1NDQUxFKTogTmV3IG1hY3JvIC0gdmFsaWRhdGVzIGFjY2VzcyB0byBTQ0FMRSBhcnJheS4KLQkoR0VUX1BTQ0FMRSk6IE5ldyBtYWNybyAtIHZhbGlkYXRlcyBhY2Nlc3MgdG8gUFNDQUxFIGFycmF5LgotCShESXMsIFNJcywgUzJJcywgcnhfZGlzcCk6IFVzZSBuZXcgbWFjcm9zLgotCSogcngtZGVjb2RlLmM6IFJlZ2VuZXJhdGUuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTctOTc1MAotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIG9wY29kZXMvQ2hhbmdlTG9nICAgICB8ICA5ICsrKysrKysrKwotIG9wY29kZXMvcngtZGVjb2RlLmMgICB8IDI0ICsrKysrKysrKysrKysrLS0tLS0tLS0tLQotIG9wY29kZXMvcngtZGVjb2RlLm9wYyB8IDI0ICsrKysrKysrKysrKysrLS0tLS0tLS0tLQotIDMgZmlsZXMgY2hhbmdlZCwgMzcgaW5zZXJ0aW9ucygrKSwgMjAgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBnaXQvb3Bjb2Rlcy9yeC1kZWNvZGUuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL29wY29kZXMvcngtZGVjb2RlLmMKLSsrKyBnaXQvb3Bjb2Rlcy9yeC1kZWNvZGUuYwotQEAgLTI3LDYgKzI3LDcgQEAKLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgImFuc2lkZWNsLmgiCi0gI2luY2x1ZGUgIm9wY29kZS9yeC5oIgotKyNpbmNsdWRlICJsaWJpYmVydHkuaCIKLSAKLSAjZGVmaW5lIFJYX09QQ09ERV9CSUdfRU5ESUFOIDAKLSAKLUBAIC00NSw3ICs0Niw3IEBAIHN0YXRpYyBpbnQgdHJhY2UgPSAwOwotICNkZWZpbmUgTFNJWkUgMgotIAotIC8qIFRoZXNlIGFyZSBmb3Igd2hlbiB0aGUgdXBwZXIgYml0cyBhcmUgImRvbid0IGNhcmUiIG9yICJ1bmRlZmluZWQiLiAgKi8KLS1zdGF0aWMgaW50IGJ3bFtdID0KLStzdGF0aWMgaW50IGJ3bFs0XSA9Ci0gewotICAgUlhfQnl0ZSwKLSAgIFJYX1dvcmQsCi1AQCAtNTMsNyArNTQsNyBAQCBzdGF0aWMgaW50IGJ3bFtdID0KLSAgIFJYX0JhZF9TaXplIC8qIEJvZ3VzIGluc3RydWN0aW9ucyBjYW4gaGF2ZSBhIHNpemUgZmllbGQgc2V0IHRvIDMuICAqLwotIH07Ci0gCi0tc3RhdGljIGludCBzYndsW10gPQotK3N0YXRpYyBpbnQgc2J3bFs0XSA9Ci0gewotICAgUlhfU0J5dGUsCi0gICBSWF9TV29yZCwKLUBAIC02MSw3ICs2Miw3IEBAIHN0YXRpYyBpbnQgc2J3bFtdID0KLSAgIFJYX0JhZF9TaXplIC8qIEJvZ3VzIGluc3RydWN0aW9ucyBjYW4gaGF2ZSBhIHNpemUgZmllbGQgc2V0IHRvIDMuICAqLwotIH07Ci0gCi0tc3RhdGljIGludCB1YndbXSA9Ci0rc3RhdGljIGludCB1YndbNF0gPQotIHsKLSAgIFJYX1VCeXRlLAotICAgUlhfVVdvcmQsCi1AQCAtNjksNyArNzAsNyBAQCBzdGF0aWMgaW50IHVid1tdID0KLSAgIFJYX0JhZF9TaXplIC8qIEJvZ3VzIGluc3RydWN0aW9ucyBjYW4gaGF2ZSBhIHNpemUgZmllbGQgc2V0IHRvIDMuICAqLwotIH07Ci0gCi0tc3RhdGljIGludCBtZW1leFtdID0KLStzdGF0aWMgaW50IG1lbWV4WzRdID0KLSB7Ci0gICBSWF9TQnl0ZSwKLSAgIFJYX1NXb3JkLAotQEAgLTg5LDYgKzkwLDkgQEAgc3RhdGljIGludCBTQ0FMRVtdID0geyAxLCAyLCA0LCAwIH07Ci0gLyogVGhpcyBpcyBmb3IgdGhlIHByZWZpeCBzaXplIGVudW0uICAqLwotIHN0YXRpYyBpbnQgUFNDQUxFW10gPSB7IDQsIDEsIDEsIDEsIDIsIDIsIDIsIDMsIDQgfTsKLSAKLSsjZGVmaW5lIEdFVF9TQ0FMRShfaW5keCkgICgodW5zaWduZWQpKF9pbmR4KSA8IEFSUkFZX1NJWkUgKFNDQUxFKSA/IFNDQUxFWyhfaW5keCldIDogMCkKLSsjZGVmaW5lIEdFVF9QU0NBTEUoX2luZHgpICgodW5zaWduZWQpKF9pbmR4KSA8IEFSUkFZX1NJWkUgKFBTQ0FMRSkgPyBQU0NBTEVbKF9pbmR4KV0gOiAwKQotKwotIHN0YXRpYyBpbnQgZmxhZ21hcFtdID0gezAsIDEsIDIsIDMsIDAsIDAsIDAsIDAsCi0gCQkgICAgICAgMTYsIDE3LCAwLCAwLCAwLCAwLCAwLCAwIH07Ci0gCi1AQCAtMTA3LDcgKzExMSw3IEBAIHN0YXRpYyBpbnQgZHNwM21hcFtdID0geyA4LCA5LCAxMCwgMywgNCwKLSAjZGVmaW5lIERDKGMpICAgICAgIE9QICgwLCBSWF9PcGVyYW5kX0ltbWVkaWF0ZSwgMCwgYykKLSAjZGVmaW5lIERSKHIpICAgICAgIE9QICgwLCBSWF9PcGVyYW5kX1JlZ2lzdGVyLCAgciwgMCkKLSAjZGVmaW5lIERJKHIsYSkgICAgIE9QICgwLCBSWF9PcGVyYW5kX0luZGlyZWN0LCAgciwgYSkKLS0jZGVmaW5lIERJcyhyLGEscykgIE9QICgwLCBSWF9PcGVyYW5kX0luZGlyZWN0LCAgciwgKGEpICogU0NBTEVbc10pCi0rI2RlZmluZSBESXMocixhLHMpICBPUCAoMCwgUlhfT3BlcmFuZF9JbmRpcmVjdCwgIHIsIChhKSAqIEdFVF9TQ0FMRSAocykpCi0gI2RlZmluZSBERCh0LHIscykgICByeF9kaXNwICgwLCB0LCByLCBid2xbc10sIGxkKTsKLSAjZGVmaW5lIERGKHIpICAgICAgIE9QICgwLCBSWF9PcGVyYW5kX0ZsYWcsICBmbGFnbWFwW3JdLCAwKQotIAotQEAgLTExNSw3ICsxMTksNyBAQCBzdGF0aWMgaW50IGRzcDNtYXBbXSA9IHsgOCwgOSwgMTAsIDMsIDQsCi0gI2RlZmluZSBTUihyKSAgICAgICBPUCAoMSwgUlhfT3BlcmFuZF9SZWdpc3RlciwgIHIsIDApCi0gI2RlZmluZSBTUlIocikgICAgICBPUCAoMSwgUlhfT3BlcmFuZF9Ud29SZWcsICByLCAwKQotICNkZWZpbmUgU0kocixhKSAgICAgT1AgKDEsIFJYX09wZXJhbmRfSW5kaXJlY3QsICByLCBhKQotLSNkZWZpbmUgU0lzKHIsYSxzKSAgT1AgKDEsIFJYX09wZXJhbmRfSW5kaXJlY3QsICByLCAoYSkgKiBTQ0FMRVtzXSkKLSsjZGVmaW5lIFNJcyhyLGEscykgIE9QICgxLCBSWF9PcGVyYW5kX0luZGlyZWN0LCAgciwgKGEpICogR0VUX1NDQUxFIChzKSkKLSAjZGVmaW5lIFNEKHQscixzKSAgIHJ4X2Rpc3AgKDEsIHQsIHIsIGJ3bFtzXSwgbGQpOwotICNkZWZpbmUgU1AodCxyKSAgICAgcnhfZGlzcCAoMSwgdCwgciwgKHQhPTMpID8gUlhfVUJ5dGUgOiBSWF9Mb25nLCBsZCk7IFAodCwgMSk7Ci0gI2RlZmluZSBTUG0odCxyLG0pICByeF9kaXNwICgxLCB0LCByLCBtZW1leFttXSwgbGQpOyByeC0+b3BbMV0uc2l6ZSA9IG1lbWV4W21dOwotQEAgLTEyNCw3ICsxMjgsNyBAQCBzdGF0aWMgaW50IGRzcDNtYXBbXSA9IHsgOCwgOSwgMTAsIDMsIDQsCi0gI2RlZmluZSBTMkMoaSkgICAgICBPUCAoMiwgUlhfT3BlcmFuZF9JbW1lZGlhdGUsIDAsIGkpCi0gI2RlZmluZSBTMlIocikgICAgICBPUCAoMiwgUlhfT3BlcmFuZF9SZWdpc3RlciwgIHIsIDApCi0gI2RlZmluZSBTMkkocixhKSAgICBPUCAoMiwgUlhfT3BlcmFuZF9JbmRpcmVjdCwgIHIsIGEpCi0tI2RlZmluZSBTMklzKHIsYSxzKSBPUCAoMiwgUlhfT3BlcmFuZF9JbmRpcmVjdCwgIHIsIChhKSAqIFNDQUxFW3NdKQotKyNkZWZpbmUgUzJJcyhyLGEscykgT1AgKDIsIFJYX09wZXJhbmRfSW5kaXJlY3QsICByLCAoYSkgKiBHRVRfU0NBTEUgKHMpKQotICNkZWZpbmUgUzJEKHQscixzKSAgcnhfZGlzcCAoMiwgdCwgciwgYndsW3NdLCBsZCk7Ci0gI2RlZmluZSBTMlAodCxyKSAgICByeF9kaXNwICgyLCB0LCByLCAodCE9MykgPyBSWF9VQnl0ZSA6IFJYX0xvbmcsIGxkKTsgUCh0LCAyKTsKLSAjZGVmaW5lIFMyUG0odCxyLG0pIHJ4X2Rpc3AgKDIsIHQsIHIsIG1lbWV4W21dLCBsZCk7IHJ4LT5vcFsyXS5zaXplID0gbWVtZXhbbV07Ci1AQCAtMjExLDcgKzIxNSw3IEBAIGltbWVkaWF0ZSAoaW50IHNmaWVsZCwgaW50IGV4LCBMb2NhbERhdGEKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLS1yeF9kaXNwIChpbnQgbiwgaW50IHR5cGUsIGludCByZWcsIGludCBzaXplLCBMb2NhbERhdGEgKiBsZCkKLStyeF9kaXNwIChpbnQgbiwgaW50IHR5cGUsIGludCByZWcsIHVuc2lnbmVkIGludCBzaXplLCBMb2NhbERhdGEgKiBsZCkKLSB7Ci0gICBpbnQgZGlzcDsKLSAKLUBAIC0yMjgsNyArMjMyLDcgQEAgcnhfZGlzcCAoaW50IG4sIGludCB0eXBlLCBpbnQgcmVnLCBpbnQgcwotICAgICBjYXNlIDE6Ci0gICAgICAgbGQtPnJ4LT5vcFtuXS50eXBlID0gUlhfT3BlcmFuZF9JbmRpcmVjdDsKLSAgICAgICBkaXNwID0gR0VUQllURSAoKTsKLS0gICAgICBsZC0+cngtPm9wW25dLmFkZGVuZCA9IGRpc3AgKiBQU0NBTEVbc2l6ZV07Ci0rICAgICAgbGQtPnJ4LT5vcFtuXS5hZGRlbmQgPSBkaXNwICogR0VUX1BTQ0FMRSAoc2l6ZSk7Ci0gICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgMjoKLSAgICAgICBsZC0+cngtPm9wW25dLnR5cGUgPSBSWF9PcGVyYW5kX0luZGlyZWN0OwotQEAgLTIzOCw3ICsyNDIsNyBAQCByeF9kaXNwIChpbnQgbiwgaW50IHR5cGUsIGludCByZWcsIGludCBzCi0gI2Vsc2UKLSAgICAgICBkaXNwID0gZGlzcCArIEdFVEJZVEUgKCkgKiAyNTY7Ci0gI2VuZGlmCi0tICAgICAgbGQtPnJ4LT5vcFtuXS5hZGRlbmQgPSBkaXNwICogUFNDQUxFW3NpemVdOwotKyAgICAgIGxkLT5yeC0+b3Bbbl0uYWRkZW5kID0gZGlzcCAqIEdFVF9QU0NBTEUgKHNpemUpOwotICAgICAgIGJyZWFrOwotICAgICBkZWZhdWx0OgotICAgICAgIGFib3J0ICgpOwotSW5kZXg6IGdpdC9vcGNvZGVzL3J4LWRlY29kZS5vcGMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9vcGNvZGVzL3J4LWRlY29kZS5vcGMKLSsrKyBnaXQvb3Bjb2Rlcy9yeC1kZWNvZGUub3BjCi1AQCAtMjYsNiArMjYsNyBAQAotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSAiYW5zaWRlY2wuaCIKLSAjaW5jbHVkZSAib3Bjb2RlL3J4LmgiCi0rI2luY2x1ZGUgImxpYmliZXJ0eS5oIgotIAotICNkZWZpbmUgUlhfT1BDT0RFX0JJR19FTkRJQU4gMAotIAotQEAgLTQ0LDcgKzQ1LDcgQEAgc3RhdGljIGludCB0cmFjZSA9IDA7Ci0gI2RlZmluZSBMU0laRSAyCi0gCi0gLyogVGhlc2UgYXJlIGZvciB3aGVuIHRoZSB1cHBlciBiaXRzIGFyZSAiZG9uJ3QgY2FyZSIgb3IgInVuZGVmaW5lZCIuICAqLwotLXN0YXRpYyBpbnQgYndsW10gPQotK3N0YXRpYyBpbnQgYndsWzRdID0KLSB7Ci0gICBSWF9CeXRlLAotICAgUlhfV29yZCwKLUBAIC01Miw3ICs1Myw3IEBAIHN0YXRpYyBpbnQgYndsW10gPQotICAgUlhfQmFkX1NpemUgLyogQm9ndXMgaW5zdHJ1Y3Rpb25zIGNhbiBoYXZlIGEgc2l6ZSBmaWVsZCBzZXQgdG8gMy4gICovCi0gfTsKLSAKLS1zdGF0aWMgaW50IHNid2xbXSA9Ci0rc3RhdGljIGludCBzYndsWzRdID0KLSB7Ci0gICBSWF9TQnl0ZSwKLSAgIFJYX1NXb3JkLAotQEAgLTYwLDcgKzYxLDcgQEAgc3RhdGljIGludCBzYndsW10gPQotICAgUlhfQmFkX1NpemUgLyogQm9ndXMgaW5zdHJ1Y3Rpb25zIGNhbiBoYXZlIGEgc2l6ZSBmaWVsZCBzZXQgdG8gMy4gICovCi0gfTsKLSAKLS1zdGF0aWMgaW50IHVid1tdID0KLStzdGF0aWMgaW50IHVid1s0XSA9Ci0gewotICAgUlhfVUJ5dGUsCi0gICBSWF9VV29yZCwKLUBAIC02OCw3ICs2OSw3IEBAIHN0YXRpYyBpbnQgdWJ3W10gPQotICAgUlhfQmFkX1NpemUgLyogQm9ndXMgaW5zdHJ1Y3Rpb25zIGNhbiBoYXZlIGEgc2l6ZSBmaWVsZCBzZXQgdG8gMy4gICovCi0gfTsKLSAKLS1zdGF0aWMgaW50IG1lbWV4W10gPQotK3N0YXRpYyBpbnQgbWVtZXhbNF0gPQotIHsKLSAgIFJYX1NCeXRlLAotICAgUlhfU1dvcmQsCi1AQCAtODgsNiArODksOSBAQCBzdGF0aWMgaW50IFNDQUxFW10gPSB7IDEsIDIsIDQsIDAgfTsKLSAvKiBUaGlzIGlzIGZvciB0aGUgcHJlZml4IHNpemUgZW51bS4gICovCi0gc3RhdGljIGludCBQU0NBTEVbXSA9IHsgNCwgMSwgMSwgMSwgMiwgMiwgMiwgMywgNCB9OwotIAotKyNkZWZpbmUgR0VUX1NDQUxFKF9pbmR4KSAgKCh1bnNpZ25lZCkoX2luZHgpIDwgQVJSQVlfU0laRSAoU0NBTEUpID8gU0NBTEVbKF9pbmR4KV0gOiAwKQotKyNkZWZpbmUgR0VUX1BTQ0FMRShfaW5keCkgKCh1bnNpZ25lZCkoX2luZHgpIDwgQVJSQVlfU0laRSAoUFNDQUxFKSA/IFBTQ0FMRVsoX2luZHgpXSA6IDApCi0rCi0gc3RhdGljIGludCBmbGFnbWFwW10gPSB7MCwgMSwgMiwgMywgMCwgMCwgMCwgMCwKLSAJCSAgICAgICAxNiwgMTcsIDAsIDAsIDAsIDAsIDAsIDAgfTsKLSAKLUBAIC0xMDYsNyArMTEwLDcgQEAgc3RhdGljIGludCBkc3AzbWFwW10gPSB7IDgsIDksIDEwLCAzLCA0LAotICNkZWZpbmUgREMoYykgICAgICAgT1AgKDAsIFJYX09wZXJhbmRfSW1tZWRpYXRlLCAwLCBjKQotICNkZWZpbmUgRFIocikgICAgICAgT1AgKDAsIFJYX09wZXJhbmRfUmVnaXN0ZXIsICByLCAwKQotICNkZWZpbmUgREkocixhKSAgICAgT1AgKDAsIFJYX09wZXJhbmRfSW5kaXJlY3QsICByLCBhKQotLSNkZWZpbmUgRElzKHIsYSxzKSAgT1AgKDAsIFJYX09wZXJhbmRfSW5kaXJlY3QsICByLCAoYSkgKiBTQ0FMRVtzXSkKLSsjZGVmaW5lIERJcyhyLGEscykgIE9QICgwLCBSWF9PcGVyYW5kX0luZGlyZWN0LCAgciwgKGEpICogR0VUX1NDQUxFIChzKSkKLSAjZGVmaW5lIEREKHQscixzKSAgIHJ4X2Rpc3AgKDAsIHQsIHIsIGJ3bFtzXSwgbGQpOwotICNkZWZpbmUgREYocikgICAgICAgT1AgKDAsIFJYX09wZXJhbmRfRmxhZywgIGZsYWdtYXBbcl0sIDApCi0gCi1AQCAtMTE0LDcgKzExOCw3IEBAIHN0YXRpYyBpbnQgZHNwM21hcFtdID0geyA4LCA5LCAxMCwgMywgNCwKLSAjZGVmaW5lIFNSKHIpICAgICAgIE9QICgxLCBSWF9PcGVyYW5kX1JlZ2lzdGVyLCAgciwgMCkKLSAjZGVmaW5lIFNSUihyKSAgICAgIE9QICgxLCBSWF9PcGVyYW5kX1R3b1JlZywgIHIsIDApCi0gI2RlZmluZSBTSShyLGEpICAgICBPUCAoMSwgUlhfT3BlcmFuZF9JbmRpcmVjdCwgIHIsIGEpCi0tI2RlZmluZSBTSXMocixhLHMpICBPUCAoMSwgUlhfT3BlcmFuZF9JbmRpcmVjdCwgIHIsIChhKSAqIFNDQUxFW3NdKQotKyNkZWZpbmUgU0lzKHIsYSxzKSAgT1AgKDEsIFJYX09wZXJhbmRfSW5kaXJlY3QsICByLCAoYSkgKiBHRVRfU0NBTEUgKHMpKQotICNkZWZpbmUgU0QodCxyLHMpICAgcnhfZGlzcCAoMSwgdCwgciwgYndsW3NdLCBsZCk7Ci0gI2RlZmluZSBTUCh0LHIpICAgICByeF9kaXNwICgxLCB0LCByLCAodCE9MykgPyBSWF9VQnl0ZSA6IFJYX0xvbmcsIGxkKTsgUCh0LCAxKTsKLSAjZGVmaW5lIFNQbSh0LHIsbSkgIHJ4X2Rpc3AgKDEsIHQsIHIsIG1lbWV4W21dLCBsZCk7IHJ4LT5vcFsxXS5zaXplID0gbWVtZXhbbV07Ci1AQCAtMTIzLDcgKzEyNyw3IEBAIHN0YXRpYyBpbnQgZHNwM21hcFtdID0geyA4LCA5LCAxMCwgMywgNCwKLSAjZGVmaW5lIFMyQyhpKSAgICAgIE9QICgyLCBSWF9PcGVyYW5kX0ltbWVkaWF0ZSwgMCwgaSkKLSAjZGVmaW5lIFMyUihyKSAgICAgIE9QICgyLCBSWF9PcGVyYW5kX1JlZ2lzdGVyLCAgciwgMCkKLSAjZGVmaW5lIFMySShyLGEpICAgIE9QICgyLCBSWF9PcGVyYW5kX0luZGlyZWN0LCAgciwgYSkKLS0jZGVmaW5lIFMySXMocixhLHMpIE9QICgyLCBSWF9PcGVyYW5kX0luZGlyZWN0LCAgciwgKGEpICogU0NBTEVbc10pCi0rI2RlZmluZSBTMklzKHIsYSxzKSBPUCAoMiwgUlhfT3BlcmFuZF9JbmRpcmVjdCwgIHIsIChhKSAqIEdFVF9TQ0FMRSAocykpCi0gI2RlZmluZSBTMkQodCxyLHMpICByeF9kaXNwICgyLCB0LCByLCBid2xbc10sIGxkKTsKLSAjZGVmaW5lIFMyUCh0LHIpICAgIHJ4X2Rpc3AgKDIsIHQsIHIsICh0IT0zKSA/IFJYX1VCeXRlIDogUlhfTG9uZywgbGQpOyBQKHQsIDIpOwotICNkZWZpbmUgUzJQbSh0LHIsbSkgcnhfZGlzcCAoMiwgdCwgciwgbWVtZXhbbV0sIGxkKTsgcngtPm9wWzJdLnNpemUgPSBtZW1leFttXTsKLUBAIC0yMTAsNyArMjE0LDcgQEAgaW1tZWRpYXRlIChpbnQgc2ZpZWxkLCBpbnQgZXgsIExvY2FsRGF0YQotIH0KLSAKLSBzdGF0aWMgdm9pZAotLXJ4X2Rpc3AgKGludCBuLCBpbnQgdHlwZSwgaW50IHJlZywgaW50IHNpemUsIExvY2FsRGF0YSAqIGxkKQotK3J4X2Rpc3AgKGludCBuLCBpbnQgdHlwZSwgaW50IHJlZywgdW5zaWduZWQgaW50IHNpemUsIExvY2FsRGF0YSAqIGxkKQotIHsKLSAgIGludCBkaXNwOwotIAotQEAgLTIyNyw3ICsyMzEsNyBAQCByeF9kaXNwIChpbnQgbiwgaW50IHR5cGUsIGludCByZWcsIGludCBzCi0gICAgIGNhc2UgMToKLSAgICAgICBsZC0+cngtPm9wW25dLnR5cGUgPSBSWF9PcGVyYW5kX0luZGlyZWN0OwotICAgICAgIGRpc3AgPSBHRVRCWVRFICgpOwotLSAgICAgIGxkLT5yeC0+b3Bbbl0uYWRkZW5kID0gZGlzcCAqIFBTQ0FMRVtzaXplXTsKLSsgICAgICBsZC0+cngtPm9wW25dLmFkZGVuZCA9IGRpc3AgKiBHRVRfUFNDQUxFIChzaXplKTsKLSAgICAgICBicmVhazsKLSAgICAgY2FzZSAyOgotICAgICAgIGxkLT5yeC0+b3Bbbl0udHlwZSA9IFJYX09wZXJhbmRfSW5kaXJlY3Q7Ci1AQCAtMjM3LDcgKzI0MSw3IEBAIHJ4X2Rpc3AgKGludCBuLCBpbnQgdHlwZSwgaW50IHJlZywgaW50IHMKLSAjZWxzZQotICAgICAgIGRpc3AgPSBkaXNwICsgR0VUQllURSAoKSAqIDI1NjsKLSAjZW5kaWYKLS0gICAgICBsZC0+cngtPm9wW25dLmFkZGVuZCA9IGRpc3AgKiBQU0NBTEVbc2l6ZV07Ci0rICAgICAgbGQtPnJ4LT5vcFtuXS5hZGRlbmQgPSBkaXNwICogR0VUX1BTQ0FMRSAoc2l6ZSk7Ci0gICAgICAgYnJlYWs7Ci0gICAgIGRlZmF1bHQ6Ci0gICAgICAgYWJvcnQgKCk7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk3NTEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk3NTEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3YzE4Y2YuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05NzUxLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzc0OCArMCwwIEBACi1Gcm9tIDYzMzIzYjViMjNiZDgzZmE3YjA0ZWEwMGRmZjU5M2M5MzNlOWIwZTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWNrIENsaWZ0b24gPG5pY2tjQHJlZGhhdC5jb20+Ci1EYXRlOiBUaHUsIDE1IEp1biAyMDE3IDEyOjM3OjAxICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBhZGRyZXNzIHZpb2xhdGlvbiB3aGVuIGRpc2Fzc2VtYmxpbmcgYSBjb3JydXB0IFJMNzgKLSBiaW5hcnkuCi0KLQlQUiBiaW51dGlscy8yMTU4OAotCSogcmw3OC1kZWNvZGUub3BjIChPUF9CVUZfTEVOKTogRGVmaW5lLgotCShHRVRCWVRFKTogQ2hlY2sgZm9yIHRoZSBpbmRleCBleGNlZWRpbmcgT1BfQlVGX0xFTi4KLQkocmw3OF9kZWNvZGVfb3Bjb2RlKTogVXNlIE9QX0JVRl9MRU4gYXMgdGhlIGxlbmd0aCBvZiB0aGUgb3BfYnVmCi0JYXJyYXkuCi0JKiBybDc4LWRlY29kZS5jOiBSZWdlbmVyYXRlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE3LTk3NTEKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBvcGNvZGVzL0NoYW5nZUxvZyAgICAgICB8ICAgOSArCi0gb3Bjb2Rlcy9ybDc4LWRlY29kZS5jICAgfCA4MjAgKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gb3Bjb2Rlcy9ybDc4LWRlY29kZS5vcGMgfCAgIDYgKy0KLSAzIGZpbGVzIGNoYW5nZWQsIDQyNCBpbnNlcnRpb25zKCspLCA0MTEgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9vcGNvZGVzL0NoYW5nZUxvZyBiL29wY29kZXMvQ2hhbmdlTG9nCi1pbmRleCAzNGIxODQ0Li5jNzdmMDBhIDEwMDY0NAotLS0tIGEvb3Bjb2Rlcy9DaGFuZ2VMb2cKLSsrKyBiL29wY29kZXMvQ2hhbmdlTG9nCi1AQCAtMSw1ICsxLDE0IEBACi0gMjAxNy0wNi0xNSAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSAKLSsJUFIgYmludXRpbHMvMjE1ODgKLSsJKiBybDc4LWRlY29kZS5vcGMgKE9QX0JVRl9MRU4pOiBEZWZpbmUuCi0rCShHRVRCWVRFKTogQ2hlY2sgZm9yIHRoZSBpbmRleCBleGNlZWRpbmcgT1BfQlVGX0xFTi4KLSsJKHJsNzhfZGVjb2RlX29wY29kZSk6IFVzZSBPUF9CVUZfTEVOIGFzIHRoZSBsZW5ndGggb2YgdGhlIG9wX2J1ZgotKwlhcnJheS4KLSsJKiBybDc4LWRlY29kZS5jOiBSZWdlbmVyYXRlLgotKwotKzIwMTctMDYtMTUgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0rCi0gCVBSIGJpbnV0aWxzLzIxNTg2Ci0gCSogYmZpbi1kaXMuYyAoZ3JlZ3MpOiBDbGlwIGluZGV4IHRvIHByZXZlbnQgb3ZlcmZsb3cuCi0gCShyZWdzKTogTGlrZXdpc2UuCi1kaWZmIC0tZ2l0IGEvb3Bjb2Rlcy9ybDc4LWRlY29kZS5jIGIvb3Bjb2Rlcy9ybDc4LWRlY29kZS5jCi1pbmRleCBkMDU2NmVhLi5iMmQ0YmQ2IDEwMDY0NAotLS0tIGEvb3Bjb2Rlcy9ybDc4LWRlY29kZS5jCi0rKysgYi9vcGNvZGVzL3JsNzgtZGVjb2RlLmMKLUBAIC01MSw3ICs1MSw5IEBAIHR5cGVkZWYgc3RydWN0Ci0gI2RlZmluZSBXKCkgcmw3OC0+c2l6ZSA9IFJMNzhfV29yZAotIAotICNkZWZpbmUgQVUgQVRUUklCVVRFX1VOVVNFRAotLSNkZWZpbmUgR0VUQllURSgpIChsZC0+b3AgW2xkLT5ybDc4LT5uX2J5dGVzKytdID0gbGQtPmdldGJ5dGUgKGxkLT5wdHIpKQotKwotKyNkZWZpbmUgT1BfQlVGX0xFTiAyMAotKyNkZWZpbmUgR0VUQllURSgpIChsZC0+cmw3OC0+bl9ieXRlcyA8IChPUF9CVUZfTEVOIC0gMSkgPyBsZC0+b3AgW2xkLT5ybDc4LT5uX2J5dGVzKytdID0gbGQtPmdldGJ5dGUgKGxkLT5wdHIpOiAwKQotICNkZWZpbmUgQiAoKHVuc2lnbmVkIGxvbmcpIEdFVEJZVEUoKSkKLSAKLSAjZGVmaW5lIFNZTlRBWCh4KSBybDc4LT5zeW50YXggPSB4Ci1AQCAtMTY5LDcgKzE3MSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAJCSAgUkw3OF9EaXNfSXNhIGlzYSkKLSB7Ci0gICBMb2NhbERhdGEgbGRzLCAqIGxkID0gJmxkczsKLS0gIHVuc2lnbmVkIGNoYXIgb3BfYnVmWzIwXSA9IHswfTsKLSsgIHVuc2lnbmVkIGNoYXIgb3BfYnVmW09QX0JVRl9MRU5dID0gezB9OwotICAgdW5zaWduZWQgY2hhciAqb3AgPSBvcF9idWY7Ci0gICBpbnQgb3AwLCBvcDE7Ci0gCi1AQCAtMjAxLDcgKzIwMyw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm5vcCIpOwotLSNsaW5lIDkxMSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDkxMyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChub3ApOwotIAotICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC0yMTQsNyArMjE2LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICBjYXNlIDB4MDc6Ci0gICAgICAgICB7Ci0gICAgICAgICAgIC8qKiAwMDAwIDBydzEJCQlhZGR3CSUwLCAlMQkJCQkqLwotLSNsaW5lIDI3NCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDI3NiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBpbnQgcncgQVUgPSAob3BbMF0gPj4gMSkgJiAweDAzOwotICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgewotQEAgLTIyNCw3ICsyMjYsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICBwcmludGYgKCIgIHJ3ID0gMHgleFxuIiwgcncpOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJhZGR3CSUwLCAlMSIpOwotLSNsaW5lIDI3NCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDI3NiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChhZGQpOyBXKCk7IERSKEFYKTsgU1JXKHJ3KTsgRnphYzsKLSAKLSAgICAgICAgIH0KLUBAIC0yMzksNyArMjQxLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiYWRkdwklMCwgJWUhMSIpOwotLSNsaW5lIDI2NSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDI2NyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChhZGQpOyBXKCk7IERSKEFYKTsgU00oTm9uZSwgSU1NVSgyKSk7IEZ6YWM7Ci0gCi0gICAgICAgICB9Ci1AQCAtMjU0LDcgKzI1Niw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImFkZHcJJTAsICMlMSIpOwotLSNsaW5lIDI3MSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDI3MyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChhZGQpOyBXKCk7IERSKEFYKTsgU0MoSU1NVSgyKSk7IEZ6YWM7Ci0gCi0gICAgICAgICB9Ci1AQCAtMjY5LDcgKzI3MSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImFkZHcJJTAsICUxIik7Ci0tI2xpbmUgMjc3ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMjc5ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKGFkZCk7IFcoKTsgRFIoQVgpOyBTTShOb25lLCBTQUREUik7IEZ6YWM7Ci0gCi0gICAgICAgICB9Ci1AQCAtMjg0LDcgKzI4Niw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoInhjaAlhLCB4Iik7Ci0tI2xpbmUgMTIzNCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEyMzYgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoeGNoKTsgRFIoQSk7IFNSKFgpOwotIAotICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC0zMDEsNyArMzAzLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92CSUwLCAlZTEiKTsKLS0jbGluZSA2NzggInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA2ODAgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRFIoQSk7IFNNKEIsIElNTVUoMikpOwotIAotICAgICAgICAgfQotQEAgLTMxNiw3ICszMTgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJhZGQJJTAsICMlMSIpOwotLSNsaW5lIDIyOCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDIzMCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChhZGQpOyBETShOb25lLCBTQUREUik7IFNDKElNTVUoMSkpOyBGemFjOwotIAotICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC0zMzMsNyArMzM1LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiYWRkCSUwLCAlMSIpOwotLSNsaW5lIDIyMiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDIyNCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChhZGQpOyBEUihBKTsgU00oTm9uZSwgU0FERFIpOyBGemFjOwotIAotICAgICAgICAgfQotQEAgLTM0OCw3ICszNTAsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJhZGQJJTAsICMlMSIpOwotLSNsaW5lIDIxNiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDIxOCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChhZGQpOyBEUihBKTsgU0MoSU1NVSgxKSk7IEZ6YWM7Ci0gCi0gICAgICAgICB9Ci1AQCAtMzYzLDcgKzM2NSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImFkZAklMCwgJWUxIik7Ci0tI2xpbmUgMjA0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMjA2ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKGFkZCk7IERSKEEpOyBTTShITCwgMCk7IEZ6YWM7Ci0gCi0gICAgICAgICB9Ci1AQCAtMzc4LDcgKzM4MCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImFkZAklMCwgJWVhMSIpOwotLSNsaW5lIDIxMCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDIxMiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChhZGQpOyBEUihBKTsgU00oSEwsIElNTVUoMSkpOyBGemFjOwotIAotICAgICAgICAgfQotQEAgLTM5Myw3ICszOTUsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJhZGQJJTAsICVlITEiKTsKLS0jbGluZSAyMDEgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAyMDMgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoYWRkKTsgRFIoQSk7IFNNKE5vbmUsIElNTVUoMikpOyBGemFjOwotIAotICAgICAgICAgfQotQEAgLTQwOCw3ICs0MTAsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJhZGR3CSUwLCAjJTEiKTsKLS0jbGluZSAyODAgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAyODIgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoYWRkKTsgVygpOyBEUihTUCk7IFNDKElNTVUoMSkpOyBGemFjOwotIAotICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC00MjUsNyArNDI3LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiZXM6Iik7Ci0tI2xpbmUgMTkzICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTk1ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIERFKCk7IFNFKCk7Ci0gICAgICAgICAgIG9wICsrOwotICAgICAgICAgICBwYyArKzsKLUBAIC00NDAsNyArNDQyLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICBjYXNlIDB4MTY6Ci0gICAgICAgICB7Ci0gICAgICAgICAgIC8qKiAwMDAxIDByYTAJCQltb3Z3CSUwLCAlMQkJCQkqLwotLSNsaW5lIDg1OSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDg2MSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBpbnQgcmEgQVUgPSAob3BbMF0gPj4gMSkgJiAweDAzOwotICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgewotQEAgLTQ1MCw3ICs0NTIsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICBwcmludGYgKCIgIHJhID0gMHgleFxuIiwgcmEpOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3Z3CSUwLCAlMSIpOwotLSNsaW5lIDg1OSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDg2MSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBXKCk7IERSVyhyYSk7IFNSKEFYKTsKLSAKLSAgICAgICAgIH0KLUBAIC00NjAsNyArNDYyLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICBjYXNlIDB4MTc6Ci0gICAgICAgICB7Ci0gICAgICAgICAgIC8qKiAwMDAxIDByYTEJCQltb3Z3CSUwLCAlMQkJCQkqLwotLSNsaW5lIDg1NiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDg1OCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBpbnQgcmEgQVUgPSAob3BbMF0gPj4gMSkgJiAweDAzOwotICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgewotQEAgLTQ3MCw3ICs0NzIsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICBwcmludGYgKCIgIHJhID0gMHgleFxuIiwgcmEpOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3Z3CSUwLCAlMSIpOwotLSNsaW5lIDg1NiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDg1OCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBXKCk7IERSKEFYKTsgU1JXKHJhKTsKLSAKLSAgICAgICAgIH0KLUBAIC00ODUsNyArNDg3LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92CSVlMCwgJTEiKTsKLS0jbGluZSA3MjkgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA3MzEgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRE0oQiwgSU1NVSgyKSk7IFNSKEEpOwotIAotICAgICAgICAgfQotQEAgLTUwMCw3ICs1MDIsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3YJJWUwLCAjJTEiKTsKLS0jbGluZSA3MjYgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA3MjggInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRE0oQiwgSU1NVSgyKSk7IFNDKElNTVUoMSkpOwotIAotICAgICAgICAgfQotQEAgLTUxNSw3ICs1MTcsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJhZGRjCSUwLCAjJTEiKTsKLS0jbGluZSAyNjAgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAyNjIgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoYWRkYyk7IERNKE5vbmUsIFNBRERSKTsgU0MoSU1NVSgxKSk7IEZ6YWM7Ci0gCi0gICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTUzMiw3ICs1MzQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJhZGRjCSUwLCAlMSIpOwotLSNsaW5lIDI1NyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDI1OSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChhZGRjKTsgRFIoQSk7IFNNKE5vbmUsIFNBRERSKTsgRnphYzsKLSAKLSAgICAgICAgIH0KLUBAIC01NDcsNyArNTQ5LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiYWRkYwklMCwgIyUxIik7Ci0tI2xpbmUgMjQ4ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMjUwICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKGFkZGMpOyBEUihBKTsgU0MoSU1NVSgxKSk7IEZ6YWM7Ci0gCi0gICAgICAgICB9Ci1AQCAtNTYyLDcgKzU2NCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImFkZGMJJTAsICVlMSIpOwotLSNsaW5lIDIzNiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDIzOCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChhZGRjKTsgRFIoQSk7IFNNKEhMLCAwKTsgRnphYzsKLSAKLSAgICAgICAgIH0KLUBAIC01NzcsNyArNTc5LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiYWRkYwklMCwgJWVhMSIpOwotLSNsaW5lIDI0NSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDI0NyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChhZGRjKTsgRFIoQSk7IFNNKEhMLCBJTU1VKDEpKTsgRnphYzsKLSAKLSAgICAgICAgIH0KLUBAIC01OTIsNyArNTk0LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiYWRkYwklMCwgJWUhMSIpOwotLSNsaW5lIDIzMyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDIzNSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChhZGRjKTsgRFIoQSk7IFNNKE5vbmUsIElNTVUoMikpOyBGemFjOwotIAotICAgICAgICAgfQotQEAgLTYwNyw3ICs2MDksNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJzdWJ3CSUwLCAjJTEiKTsKLS0jbGluZSAxMTk4ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTIwMCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChzdWIpOyBXKCk7IERSKFNQKTsgU0MoSU1NVSgxKSk7IEZ6YWM7Ci0gCi0gICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTYyMCw3ICs2MjIsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgIGNhc2UgMHgyNzoKLSAgICAgICAgIHsKLSAgICAgICAgICAgLyoqIDAwMTAgMHJ3MQkJCXN1YncJJTAsICUxCQkJCSovCi0tI2xpbmUgMTE5MiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDExOTQgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgaW50IHJ3IEFVID0gKG9wWzBdID4+IDEpICYgMHgwMzsKLSAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgIHsKLUBAIC02MzAsNyArNjMyLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgcHJpbnRmICgiICBydyA9IDB4JXhcbiIsIHJ3KTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgic3VidwklMCwgJTEiKTsKLS0jbGluZSAxMTkyICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTE5NCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChzdWIpOyBXKCk7IERSKEFYKTsgU1JXKHJ3KTsgRnphYzsKLSAKLSAgICAgICAgIH0KLUBAIC02NDUsNyArNjQ3LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgic3VidwklMCwgJWUhMSIpOwotLSNsaW5lIDExODMgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMTg1ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKHN1Yik7IFcoKTsgRFIoQVgpOyBTTShOb25lLCBJTU1VKDIpKTsgRnphYzsKLSAKLSAgICAgICAgIH0KLUBAIC02NjAsNyArNjYyLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgic3VidwklMCwgIyUxIik7Ci0tI2xpbmUgMTE4OSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDExOTEgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoc3ViKTsgVygpOyBEUihBWCk7IFNDKElNTVUoMikpOyBGemFjOwotIAotICAgICAgICAgfQotQEAgLTY3NSw3ICs2NzcsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJzdWJ3CSUwLCAlMSIpOwotLSNsaW5lIDExOTUgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMTk3ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKHN1Yik7IFcoKTsgRFIoQVgpOyBTTShOb25lLCBTQUREUik7IEZ6YWM7Ci0gCi0gICAgICAgICB9Ci1AQCAtNjkwLDcgKzY5Miw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdgklZTAsICUxIik7Ci0tI2xpbmUgNzQxICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNzQzICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERNKEMsIElNTVUoMikpOyBTUihBKTsKLSAKLSAgICAgICAgIH0KLUBAIC03MDUsNyArNzA3LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92CSUwLCAlZTEiKTsKLS0jbGluZSA2ODQgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA2ODYgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRFIoQSk7IFNNKEMsIElNTVUoMikpOwotIAotICAgICAgICAgfQotQEAgLTcyMCw3ICs3MjIsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJzdWIJJTAsICMlMSIpOwotLSNsaW5lIDExNDYgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMTQ4ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKHN1Yik7IERNKE5vbmUsIFNBRERSKTsgU0MoSU1NVSgxKSk7IEZ6YWM7Ci0gCi0gICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTczNyw3ICs3MzksNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJzdWIJJTAsICUxIik7Ci0tI2xpbmUgMTE0MCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDExNDIgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoc3ViKTsgRFIoQSk7IFNNKE5vbmUsIFNBRERSKTsgRnphYzsKLSAKLSAgICAgICAgIH0KLUBAIC03NTIsNyArNzU0LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgic3ViCSUwLCAjJTEiKTsKLS0jbGluZSAxMTM0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTEzNiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChzdWIpOyBEUihBKTsgU0MoSU1NVSgxKSk7IEZ6YWM7Ci0gCi0gICAgICAgICB9Ci1AQCAtNzY3LDcgKzc2OSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoInN1YgklMCwgJWUxIik7Ci0tI2xpbmUgMTEyMiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDExMjQgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoc3ViKTsgRFIoQSk7IFNNKEhMLCAwKTsgRnphYzsKLSAKLSAgICAgICAgIH0KLUBAIC03ODIsNyArNzg0LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgic3ViCSUwLCAlZWExIik7Ci0tI2xpbmUgMTEyOCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDExMzAgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoc3ViKTsgRFIoQSk7IFNNKEhMLCBJTU1VKDEpKTsgRnphYzsKLSAKLSAgICAgICAgIH0KLUBAIC03OTcsNyArNzk5LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgic3ViCSUwLCAlZSExIik7Ci0tI2xpbmUgMTExOSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDExMjEgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoc3ViKTsgRFIoQSk7IFNNKE5vbmUsIElNTVUoMikpOyBGemFjOwotIAotICAgICAgICAgfQotQEAgLTgwOCw3ICs4MTAsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgIGNhc2UgMHgzNjoKLSAgICAgICAgIHsKLSAgICAgICAgICAgLyoqIDAwMTEgMHJnMAkJCW1vdncJJTAsICMlMQkJCQkqLwotLSNsaW5lIDg1MyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDg1NSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBpbnQgcmcgQVUgPSAob3BbMF0gPj4gMSkgJiAweDAzOwotICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgewotQEAgLTgxOCw3ICs4MjAsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICBwcmludGYgKCIgIHJnID0gMHgleFxuIiwgcmcpOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3Z3CSUwLCAjJTEiKTsKLS0jbGluZSA4NTMgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA4NTUgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgVygpOyBEUlcocmcpOyBTQyhJTU1VKDIpKTsKLSAKLSAgICAgICAgIH0KLUBAIC04MzAsNyArODMyLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4MDA6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMDExIDAwMDEgMGJpdCAwMDAwCQlidGNscgklczEsICQlYTAJCQkqLwotLSNsaW5lIDQxNiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDQxOCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgYml0IEFVID0gKG9wWzFdID4+IDQpICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC04NDAsNyArODQyLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICBiaXQgPSAweCV4XG4iLCBiaXQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJidGNscgklczEsICQlYTAiKTsKLS0jbGluZSA0MTYgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA0MTggInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoYnJhbmNoX2NvbmRfY2xlYXIpOyBTTShOb25lLCBTQUREUik7IFNCKGJpdCk7IERDKHBjK0lNTVMoMSkrNCk7IENPTkQoVCk7Ci0gCi0gICAgICAgICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTg1MCw3ICs4NTIsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHgwMToKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAwMTEgMDAwMSAwYml0IDAwMDEJCWJ0Y2xyCSUxLCAkJWEwCQkJKi8KLS0jbGluZSA0MTAgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA0MTIgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IGJpdCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtODYwLDcgKzg2Miw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgYml0ID0gMHgleFxuIiwgYml0KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiYnRjbHIJJTEsICQlYTAiKTsKLS0jbGluZSA0MTAgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA0MTIgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoYnJhbmNoX2NvbmRfY2xlYXIpOyBEQyhwYytJTU1TKDEpKzMpOyBTUihBKTsgU0IoYml0KTsgQ09ORChUKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC04NjgsNyArODcwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4MDI6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMDExIDAwMDEgMGJpdCAwMDEwCQlidAklczEsICQlYTAJCQkqLwotLSNsaW5lIDQwMiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDQwNCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgYml0IEFVID0gKG9wWzFdID4+IDQpICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC04NzgsNyArODgwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICBiaXQgPSAweCV4XG4iLCBiaXQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJidAklczEsICQlYTAiKTsKLS0jbGluZSA0MDIgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA0MDQgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoYnJhbmNoX2NvbmQpOyBTTShOb25lLCBTQUREUik7IFNCKGJpdCk7IERDKHBjK0lNTVMoMSkrNCk7IENPTkQoVCk7Ci0gCi0gICAgICAgICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTg4OCw3ICs4OTAsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHgwMzoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAwMTEgMDAwMSAwYml0IDAwMTEJCWJ0CSUxLCAkJWEwCQkJKi8KLS0jbGluZSAzOTYgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAzOTggInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IGJpdCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtODk4LDcgKzkwMCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgYml0ID0gMHgleFxuIiwgYml0KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiYnQJJTEsICQlYTAiKTsKLS0jbGluZSAzOTYgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAzOTggInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoYnJhbmNoX2NvbmQpOyBEQyhwYytJTU1TKDEpKzMpOyBTUihBKTsgU0IoYml0KTsgQ09ORChUKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC05MDYsNyArOTA4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4MDQ6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMDExIDAwMDEgMGJpdCAwMTAwCQliZgklczEsICQlYTAJCQkqLwotLSNsaW5lIDM2MyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDM2NSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgYml0IEFVID0gKG9wWzFdID4+IDQpICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC05MTYsNyArOTE4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICBiaXQgPSAweCV4XG4iLCBiaXQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJiZgklczEsICQlYTAiKTsKLS0jbGluZSAzNjMgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAzNjUgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoYnJhbmNoX2NvbmQpOyBTTShOb25lLCBTQUREUik7IFNCKGJpdCk7IERDKHBjK0lNTVMoMSkrNCk7IENPTkQoRik7Ci0gCi0gICAgICAgICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTkyNiw3ICs5MjgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHgwNToKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAwMTEgMDAwMSAwYml0IDAxMDEJCWJmCSUxLCAkJWEwCQkJKi8KLS0jbGluZSAzNTcgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAzNTkgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IGJpdCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtOTM2LDcgKzkzOCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgYml0ID0gMHgleFxuIiwgYml0KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiYmYJJTEsICQlYTAiKTsKLS0jbGluZSAzNTcgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAzNTkgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoYnJhbmNoX2NvbmQpOyBEQyhwYytJTU1TKDEpKzMpOyBTUihBKTsgU0IoYml0KTsgQ09ORChGKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC05NDQsNyArOTQ2LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4MDc6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMDExIDAwMDEgMGNudCAwMTExCQlzaGwJJTAsICUxCQkJCSovCi0tI2xpbmUgMTA3NSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEwNzcgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IGNudCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtOTU0LDcgKzk1Niw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgY250ID0gMHgleFxuIiwgY250KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgic2hsCSUwLCAlMSIpOwotLSNsaW5lIDEwNzUgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMDc3ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKHNobCk7IERSKEMpOyBTQyhjbnQpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTk2Miw3ICs5NjQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHgwODoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAwMTEgMDAwMSAwY250IDEwMDAJCXNobAklMCwgJTEJCQkJKi8KLS0jbGluZSAxMDcyICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTA3NCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgY250IEFVID0gKG9wWzFdID4+IDQpICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC05NzIsNyArOTc0LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICBjbnQgPSAweCV4XG4iLCBjbnQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJzaGwJJTAsICUxIik7Ci0tI2xpbmUgMTA3MiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEwNzQgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoc2hsKTsgRFIoQik7IFNDKGNudCk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtOTgwLDcgKzk4Miw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDA5OgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDAxMSAwMDAxIDBjbnQgMTAwMQkJc2hsCSUwLCAlMQkJCQkqLwotLSNsaW5lIDEwNjkgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMDcxICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCBjbnQgQVUgPSAob3BbMV0gPj4gNCkgJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTk5MCw3ICs5OTIsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIGNudCA9IDB4JXhcbiIsIGNudCk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInNobAklMCwgJTEiKTsKLS0jbGluZSAxMDY5ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTA3MSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChzaGwpOyBEUihBKTsgU0MoY250KTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC05OTgsNyArMTAwMCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDBhOgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDAxMSAwMDAxIDBjbnQgMTAxMAkJc2hyCSUwLCAlMQkJCQkqLwotLSNsaW5lIDEwODYgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMDg4ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCBjbnQgQVUgPSAob3BbMV0gPj4gNCkgJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTEwMDgsNyArMTAxMCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgY250ID0gMHgleFxuIiwgY250KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgic2hyCSUwLCAlMSIpOwotLSNsaW5lIDEwODYgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMDg4ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKHNocik7IERSKEEpOyBTQyhjbnQpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTEwMTYsNyArMTAxOCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDBiOgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDAxMSAwMDAxIDBjbnQgMTAxMQkJc2FyCSUwLCAlMQkJCQkqLwotLSNsaW5lIDEwMzMgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMDM1ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCBjbnQgQVUgPSAob3BbMV0gPj4gNCkgJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTEwMjYsNyArMTAyOCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgY250ID0gMHgleFxuIiwgY250KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgic2FyCSUwLCAlMSIpOwotLSNsaW5lIDEwMzMgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMDM1ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKHNhcik7IERSKEEpOyBTQyhjbnQpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTEwMzUsNyArMTAzNyw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDhjOgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDAxMSAwMDAxIHdjbnQgMTEwMAkJc2hsdwklMCwgJTEJCQkJKi8KLS0jbGluZSAxMDgxICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTA4MyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgd2NudCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MGY7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMTA0NSw3ICsxMDQ3LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICB3Y250ID0gMHgleFxuIiwgd2NudCk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInNobHcJJTAsICUxIik7Ci0tI2xpbmUgMTA4MSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEwODMgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoc2hsKTsgVygpOyBEUihCQyk7IFNDKHdjbnQpOwotIAotICAgICAgICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC0xMDU2LDcgKzEwNTgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHg4ZDoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAwMTEgMDAwMSB3Y250IDExMDEJCXNobHcJJTAsICUxCQkJCSovCi0tI2xpbmUgMTA3OCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEwODAgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IHdjbnQgQVUgPSAob3BbMV0gPj4gNCkgJiAweDBmOwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTEwNjYsNyArMTA2OCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgd2NudCA9IDB4JXhcbiIsIHdjbnQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJzaGx3CSUwLCAlMSIpOwotLSNsaW5lIDEwNzggInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMDgwICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKHNobCk7IFcoKTsgRFIoQVgpOyBTQyh3Y250KTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0xMDc1LDcgKzEwNzcsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHg4ZToKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAwMTEgMDAwMSB3Y250IDExMTAJCXNocncJJTAsICUxCQkJCSovCi0tI2xpbmUgMTA4OSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEwOTEgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IHdjbnQgQVUgPSAob3BbMV0gPj4gNCkgJiAweDBmOwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTEwODUsNyArMTA4Nyw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgd2NudCA9IDB4JXhcbiIsIHdjbnQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJzaHJ3CSUwLCAlMSIpOwotLSNsaW5lIDEwODkgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMDkxICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKHNocik7IFcoKTsgRFIoQVgpOyBTQyh3Y250KTsKLSAKLSAgICAgICAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi1AQCAtMTA5Niw3ICsxMDk4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4OGY6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMDExIDAwMDEgd2NudCAxMTExCQlzYXJ3CSUwLCAlMQkJCQkqLwotLSNsaW5lIDEwMzYgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMDM4ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCB3Y250IEFVID0gKG9wWzFdID4+IDQpICYgMHgwZjsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0xMTA2LDcgKzExMDgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIHdjbnQgPSAweCV4XG4iLCB3Y250KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgic2FydwklMCwgJTEiKTsKLS0jbGluZSAxMDM2ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTAzOCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChzYXIpOyBXKCk7IERSKEFYKTsgU0Mod2NudCk7Ci0gCi0gICAgICAgICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTExMTYsNyArMTExOCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDgwOgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDAxMSAwMDAxIDFiaXQgMDAwMAkJYnRjbHIJJXMxLCAkJWEwCQkJKi8KLS0jbGluZSA0MTMgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA0MTUgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IGJpdCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMTEyNiw3ICsxMTI4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICBiaXQgPSAweCV4XG4iLCBiaXQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJidGNscgklczEsICQlYTAiKTsKLS0jbGluZSA0MTMgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA0MTUgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoYnJhbmNoX2NvbmRfY2xlYXIpOyBTTShOb25lLCBTRlIpOyBTQihiaXQpOyBEQyhwYytJTU1TKDEpKzQpOyBDT05EKFQpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTExMzQsNyArMTEzNiw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDgxOgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDAxMSAwMDAxIDFiaXQgMDAwMQkJYnRjbHIJJWUxLCAkJWEwCQkJKi8KLS0jbGluZSA0MDcgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA0MDkgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IGJpdCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMTE0NCw3ICsxMTQ2LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICBiaXQgPSAweCV4XG4iLCBiaXQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJidGNscgklZTEsICQlYTAiKTsKLS0jbGluZSA0MDcgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA0MDkgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoYnJhbmNoX2NvbmRfY2xlYXIpOyBEQyhwYytJTU1TKDEpKzMpOyBTTShITCwwKTsgU0IoYml0KTsgQ09ORChUKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0xMTUyLDcgKzExNTQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHg4MjoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAwMTEgMDAwMSAxYml0IDAwMTAJCWJ0CSVzMSwgJCVhMAkJCSovCi0tI2xpbmUgMzk5ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNDAxICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCBiaXQgQVUgPSAob3BbMV0gPj4gNCkgJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTExNjIsNyArMTE2NCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgYml0ID0gMHgleFxuIiwgYml0KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiYnQJJXMxLCAkJWEwIik7Ci0tI2xpbmUgMzk5ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNDAxICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKGJyYW5jaF9jb25kKTsgU00oTm9uZSwgU0ZSKTsgU0IoYml0KTsgREMocGMrSU1NUygxKSs0KTsgQ09ORChUKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0xMTcwLDcgKzExNzIsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHg4MzoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAwMTEgMDAwMSAxYml0IDAwMTEJCWJ0CSVlMSwgJCVhMAkJCSovCi0tI2xpbmUgMzkzICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMzk1ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCBiaXQgQVUgPSAob3BbMV0gPj4gNCkgJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTExODAsNyArMTE4Miw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgYml0ID0gMHgleFxuIiwgYml0KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiYnQJJWUxLCAkJWEwIik7Ci0tI2xpbmUgMzkzICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMzk1ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKGJyYW5jaF9jb25kKTsgREMocGMrSU1NUygxKSszKTsgU00oSEwsMCk7IFNCKGJpdCk7IENPTkQoVCk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMTE4OCw3ICsxMTkwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4ODQ6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMDExIDAwMDEgMWJpdCAwMTAwCQliZgklczEsICQlYTAJCQkqLwotLSNsaW5lIDM2MCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDM2MiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgYml0IEFVID0gKG9wWzFdID4+IDQpICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0xMTk4LDcgKzEyMDAsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIGJpdCA9IDB4JXhcbiIsIGJpdCk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImJmCSVzMSwgJCVhMCIpOwotLSNsaW5lIDM2MCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDM2MiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChicmFuY2hfY29uZCk7IFNNKE5vbmUsIFNGUik7IFNCKGJpdCk7IERDKHBjK0lNTVMoMSkrNCk7IENPTkQoRik7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMTIwNiw3ICsxMjA4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4ODU6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMDExIDAwMDEgMWJpdCAwMTAxCQliZgklZTEsICQlYTAJCQkqLwotLSNsaW5lIDM1NCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDM1NiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgYml0IEFVID0gKG9wWzFdID4+IDQpICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0xMjE2LDcgKzEyMTgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIGJpdCA9IDB4JXhcbiIsIGJpdCk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImJmCSVlMSwgJCVhMCIpOwotLSNsaW5lIDM1NCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDM1NiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChicmFuY2hfY29uZCk7IERDKHBjK0lNTVMoMSkrMyk7IFNNKEhMLDApOyBTQihiaXQpOyBDT05EKEYpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTEyMjksNyArMTIzMSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgY2FzZSAweDM3OgotICAgICAgICAgewotICAgICAgICAgICAvKiogMDAxMSAwcmExCQkJeGNodwklMCwgJTEJCQkJKi8KLS0jbGluZSAxMjM5ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTI0MSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBpbnQgcmEgQVUgPSAob3BbMF0gPj4gMSkgJiAweDAzOwotICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgewotQEAgLTEyMzksNyArMTI0MSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgIHByaW50ZiAoIiAgcmEgPSAweCV4XG4iLCByYSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoInhjaHcJJTAsICUxIik7Ci0tI2xpbmUgMTIzOSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEyNDEgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoeGNoKTsgVygpOyBEUihBWCk7IFNSVyhyYSk7Ci0gCi0gICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTEyNTYsNyArMTI1OCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdgklZTAsICMlMSIpOwotLSNsaW5lIDczOCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDc0MCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBETShDLCBJTU1VKDIpKTsgU0MoSU1NVSgxKSk7Ci0gCi0gICAgICAgICB9Ci1AQCAtMTI3MSw3ICsxMjczLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92CSVlMCwgIyUxIik7Ci0tI2xpbmUgNzMyICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNzM0ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERNKEJDLCBJTU1VKDIpKTsgU0MoSU1NVSgxKSk7Ci0gCi0gICAgICAgICB9Ci1AQCAtMTI4Niw3ICsxMjg4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgic3ViYwklMCwgIyUxIik7Ci0tI2xpbmUgMTE3OCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDExODAgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoc3ViYyk7IERNKE5vbmUsIFNBRERSKTsgU0MoSU1NVSgxKSk7IEZ6YWM7Ci0gCi0gICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTEzMDMsNyArMTMwNSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoInN1YmMJJTAsICUxIik7Ci0tI2xpbmUgMTE3NSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDExNzcgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoc3ViYyk7IERSKEEpOyBTTShOb25lLCBTQUREUik7IEZ6YWM7Ci0gCi0gICAgICAgICB9Ci1AQCAtMTMxOCw3ICsxMzIwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgic3ViYwklMCwgIyUxIik7Ci0tI2xpbmUgMTE2NiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDExNjggInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoc3ViYyk7IERSKEEpOyBTQyhJTU1VKDEpKTsgRnphYzsKLSAKLSAgICAgICAgIH0KLUBAIC0xMzMzLDcgKzEzMzUsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJzdWJjCSUwLCAlZTEiKTsKLS0jbGluZSAxMTU0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTE1NiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChzdWJjKTsgRFIoQSk7IFNNKEhMLCAwKTsgRnphYzsKLSAKLSAgICAgICAgIH0KLUBAIC0xMzQ4LDcgKzEzNTAsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJzdWJjCSUwLCAlZWExIik7Ci0tI2xpbmUgMTE2MyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDExNjUgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoc3ViYyk7IERSKEEpOyBTTShITCwgSU1NVSgxKSk7IEZ6YWM7Ci0gCi0gICAgICAgICB9Ci1AQCAtMTM2Myw3ICsxMzY1LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgic3ViYwklMCwgJWUhMSIpOwotLSNsaW5lIDExNTEgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMTUzICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKHN1YmMpOyBEUihBKTsgU00oTm9uZSwgSU1NVSgyKSk7IEZ6YWM7Ci0gCi0gICAgICAgICB9Ci1AQCAtMTM3OCw3ICsxMzgwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiY21wCSVlITAsICMlMSIpOwotLSNsaW5lIDQ4MCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDQ4MiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChjbXApOyBETShOb25lLCBJTU1VKDIpKTsgU0MoSU1NVSgxKSk7IEZ6YWM7Ci0gCi0gICAgICAgICB9Ci1AQCAtMTM5Myw3ICsxMzk1LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92CSUwLCAjJTEiKTsKLS0jbGluZSA3MTcgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA3MTkgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRFIoRVMpOyBTQyhJTU1VKDEpKTsKLSAKLSAgICAgICAgIH0KLUBAIC0xNDA4LDcgKzE0MTAsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJjbXB3CSUwLCAlZSExIik7Ci0tI2xpbmUgNTMxICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNTMzICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKGNtcCk7IFcoKTsgRFIoQVgpOyBTTShOb25lLCBJTU1VKDIpKTsgRnphYzsKLSAKLSAgICAgICAgIH0KLUBAIC0xNDE4LDcgKzE0MjAsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgIGNhc2UgMHg0NzoKLSAgICAgICAgIHsKLSAgICAgICAgICAgLyoqIDAxMDAgMHJhMQkJCWNtcHcJJTAsICUxCQkJCSovCi0tI2xpbmUgNTQwICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNTQyICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIGludCByYSBBVSA9IChvcFswXSA+PiAxKSAmIDB4MDM7Ci0gICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICB7Ci1AQCAtMTQyOCw3ICsxNDMwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgcHJpbnRmICgiICByYSA9IDB4JXhcbiIsIHJhKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiY21wdwklMCwgJTEiKTsKLS0jbGluZSA1NDAgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA1NDIgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoY21wKTsgVygpOyBEUihBWCk7IFNSVyhyYSk7IEZ6YWM7Ci0gCi0gICAgICAgICB9Ci1AQCAtMTQ0Myw3ICsxNDQ1LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiY21wdwklMCwgIyUxIik7Ci0tI2xpbmUgNTM3ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNTM5ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKGNtcCk7IFcoKTsgRFIoQVgpOyBTQyhJTU1VKDIpKTsgRnphYzsKLSAKLSAgICAgICAgIH0KLUBAIC0xNDU4LDcgKzE0NjAsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJjbXB3CSUwLCAlMSIpOwotLSNsaW5lIDU0MyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDU0NSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChjbXApOyBXKCk7IERSKEFYKTsgU00oTm9uZSwgU0FERFIpOyBGemFjOwotIAotICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC0xNDc1LDcgKzE0NzcsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3YJJWUwLCAlMSIpOwotLSNsaW5lIDczNSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDczNyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBETShCQywgSU1NVSgyKSk7IFNSKEEpOwotIAotICAgICAgICAgfQotQEAgLTE0OTAsNyArMTQ5Miw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdgklMCwgJWUxIik7Ci0tI2xpbmUgNjgxICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNjgzICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERSKEEpOyBTTShCQywgSU1NVSgyKSk7Ci0gCi0gICAgICAgICB9Ci1AQCAtMTUwNSw3ICsxNTA3LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiY21wCSUwLCAjJTEiKTsKLS0jbGluZSA0ODMgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA0ODUgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoY21wKTsgRE0oTm9uZSwgU0FERFIpOyBTQyhJTU1VKDEpKTsgRnphYzsKLSAKLSAgICAgICAgIH0KLUBAIC0xNTIwLDcgKzE1MjIsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJjbXAJJTAsICUxIik7Ci0tI2xpbmUgNTEwICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNTEyICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKGNtcCk7IERSKEEpOyBTTShOb25lLCBTQUREUik7IEZ6YWM7Ci0gCi0gICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTE1MzcsNyArMTUzOSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImNtcAklMCwgIyUxIik7Ci0tI2xpbmUgNTAxICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNTAzICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKGNtcCk7IERSKEEpOyBTQyhJTU1VKDEpKTsgRnphYzsKLSAKLSAgICAgICAgIH0KLUBAIC0xNTUyLDcgKzE1NTQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJjbXAJJTAsICVlMSIpOwotLSNsaW5lIDQ4OSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDQ5MSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChjbXApOyBEUihBKTsgU00oSEwsIDApOyBGemFjOwotIAotICAgICAgICAgfQotQEAgLTE1NjcsNyArMTU2OSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImNtcAklMCwgJWVhMSIpOwotLSNsaW5lIDQ5OCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDUwMCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChjbXApOyBEUihBKTsgU00oSEwsIElNTVUoMSkpOyBGemFjOwotIAotICAgICAgICAgfQotQEAgLTE1ODIsNyArMTU4NCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImNtcAklMCwgJWUhMSIpOwotLSNsaW5lIDQ4NiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDQ4OCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChjbXApOyBEUihBKTsgU00oTm9uZSwgSU1NVSgyKSk7IEZ6YWM7Ci0gCi0gICAgICAgICB9Ci1AQCAtMTU5Nyw3ICsxNTk5LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICBjYXNlIDB4NTc6Ci0gICAgICAgICB7Ci0gICAgICAgICAgIC8qKiAwMTAxIDByZWcJCQltb3YJJTAsICMlMQkJCQkqLwotLSNsaW5lIDY2OSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDY3MSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBpbnQgcmVnIEFVID0gb3BbMF0gJiAweDA3OwotICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgewotQEAgLTE2MDcsNyArMTYwOSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgIHByaW50ZiAoIiAgcmVnID0gMHgleFxuIiwgcmVnKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92CSUwLCAjJTEiKTsKLS0jbGluZSA2NjkgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA2NzEgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRFJCKHJlZyk7IFNDKElNTVUoMSkpOwotIAotICAgICAgICAgfQotQEAgLTE2MjIsNyArMTYyNCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdncJJWUwLCAlMSIpOwotLSNsaW5lIDg3MSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDg3MyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBXKCk7IERNKEIsIElNTVUoMikpOyBTUihBWCk7Ci0gCi0gICAgICAgICB9Ci1AQCAtMTYzNyw3ICsxNjM5LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92dwklMCwgJWUxIik7Ci0tI2xpbmUgODYyICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgODY0ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IFcoKTsgRFIoQVgpOyBTTShCLCBJTU1VKDIpKTsKLSAKLSAgICAgICAgIH0KLUBAIC0xNjUyLDcgKzE2NTQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJhbmQJJTAsICMlMSIpOwotLSNsaW5lIDMxMiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDMxNCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChhbmQpOyBETShOb25lLCBTQUREUik7IFNDKElNTVUoMSkpOyBGejsKLSAKLSAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi1AQCAtMTY2OSw3ICsxNjcxLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiYW5kCSUwLCAlMSIpOwotLSNsaW5lIDMwOSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDMxMSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChhbmQpOyBEUihBKTsgU00oTm9uZSwgU0FERFIpOyBGejsKLSAKLSAgICAgICAgIH0KLUBAIC0xNjg0LDcgKzE2ODYsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJhbmQJJTAsICMlMSIpOwotLSNsaW5lIDMwMCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDMwMiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChhbmQpOyBEUihBKTsgU0MoSU1NVSgxKSk7IEZ6OwotIAotICAgICAgICAgfQotQEAgLTE2OTksNyArMTcwMSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImFuZAklMCwgJWUxIik7Ci0tI2xpbmUgMjg4ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMjkwICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKGFuZCk7IERSKEEpOyBTTShITCwgMCk7IEZ6OwotIAotICAgICAgICAgfQotQEAgLTE3MTQsNyArMTcxNiw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImFuZAklMCwgJWVhMSIpOwotLSNsaW5lIDI5NCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDI5NiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChhbmQpOyBEUihBKTsgU00oSEwsIElNTVUoMSkpOyBGejsKLSAKLSAgICAgICAgIH0KLUBAIC0xNzI5LDcgKzE3MzEsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJhbmQJJTAsICVlITEiKTsKLS0jbGluZSAyODUgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAyODcgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoYW5kKTsgRFIoQSk7IFNNKE5vbmUsIElNTVUoMikpOyBGejsKLSAKLSAgICAgICAgIH0KLUBAIC0xNzQzLDcgKzE3NDUsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgIGNhc2UgMHg2NzoKLSAgICAgICAgIHsKLSAgICAgICAgICAgLyoqIDAxMTAgMHJiYQkJCW1vdgklMCwgJTEJCQkJKi8KLS0jbGluZSA2NzIgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA2NzQgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgaW50IHJiYSBBVSA9IG9wWzBdICYgMHgwNzsKLSAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgIHsKLUBAIC0xNzUzLDcgKzE3NTUsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICBwcmludGYgKCIgIHJiYSA9IDB4JXhcbiIsIHJiYSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdgklMCwgJTEiKTsKLS0jbGluZSA2NzIgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA2NzQgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRFIoQSk7IFNSQihyYmEpOwotIAotICAgICAgICAgfQotQEAgLTE3NzIsNyArMTc3NCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDA3OgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMCAwMDAxIDAwMDAgMHJlZwkJYWRkCSUwLCAlMQkJCQkqLwotLSNsaW5lIDIyNSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDIyNyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgcmVnIEFVID0gb3BbMV0gJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTE3ODIsNyArMTc4NCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgcmVnID0gMHgleFxuIiwgcmVnKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiYWRkCSUwLCAlMSIpOwotLSNsaW5lIDIyNSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDIyNyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChhZGQpOyBEUkIocmVnKTsgU1IoQSk7IEZ6YWM7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMTc5Niw3ICsxNzk4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4MGY6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMTEwIDAwMDEgMDAwMCAxcmJhCQlhZGQJJTAsICUxCQkJCSovCi0tI2xpbmUgMjE5ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMjIxICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCByYmEgQVUgPSBvcFsxXSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMTgwNiw3ICsxODA4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICByYmEgPSAweCV4XG4iLCByYmEpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJhZGQJJTAsICUxIik7Ci0tI2xpbmUgMjE5ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMjIxICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKGFkZCk7IERSKEEpOyBTUkIocmJhKTsgRnphYzsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0xODIxLDcgKzE4MjMsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiYWRkdwklMCwgJWVhMSIpOwotLSNsaW5lIDI2OCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDI3MCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChhZGQpOyBXKCk7IERSKEFYKTsgU00oSEwsIElNTVUoMSkpOyBGemFjOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTE4MzYsNyArMTgzOCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDE3OgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMCAwMDAxIDAwMDEgMHJlZwkJYWRkYwklMCwgJTEJCQkJKi8KLS0jbGluZSAyNTQgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAyNTYgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IHJlZyBBVSA9IG9wWzFdICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0xODQ2LDcgKzE4NDgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIHJlZyA9IDB4JXhcbiIsIHJlZyk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImFkZGMJJTAsICUxIik7Ci0tI2xpbmUgMjU0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMjU2ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKGFkZGMpOyBEUkIocmVnKTsgU1IoQSk7IEZ6YWM7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMTg2MCw3ICsxODYyLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4MWY6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMTEwIDAwMDEgMDAwMSAxcmJhCQlhZGRjCSUwLCAlMQkJCQkqLwotLSNsaW5lIDI1MSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDI1MyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgcmJhIEFVID0gb3BbMV0gJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTE4NzAsNyArMTg3Miw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgcmJhID0gMHgleFxuIiwgcmJhKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiYWRkYwklMCwgJTEiKTsKLS0jbGluZSAyNTEgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAyNTMgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoYWRkYyk7IERSKEEpOyBTUkIocmJhKTsgRnphYzsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0xODg1LDcgKzE4ODcsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHgyNzoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTAgMDAwMSAwMDEwIDByZWcJCXN1YgklMCwgJTEJCQkJKi8KLS0jbGluZSAxMTQzICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTE0NSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgcmVnIEFVID0gb3BbMV0gJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTE4OTUsNyArMTg5Nyw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgcmVnID0gMHgleFxuIiwgcmVnKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgic3ViCSUwLCAlMSIpOwotLSNsaW5lIDExNDMgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMTQ1ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKHN1Yik7IERSQihyZWcpOyBTUihBKTsgRnphYzsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0xOTA5LDcgKzE5MTEsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHgyZjoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTAgMDAwMSAwMDEwIDFyYmEJCXN1YgklMCwgJTEJCQkJKi8KLS0jbGluZSAxMTM3ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTEzOSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgcmJhIEFVID0gb3BbMV0gJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTE5MTksNyArMTkyMSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgcmJhID0gMHgleFxuIiwgcmJhKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgic3ViCSUwLCAlMSIpOwotLSNsaW5lIDExMzcgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMTM5ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKHN1Yik7IERSKEEpOyBTUkIocmJhKTsgRnphYzsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0xOTM0LDcgKzE5MzYsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgic3VidwklMCwgJWVhMSIpOwotLSNsaW5lIDExODYgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMTg4ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKHN1Yik7IFcoKTsgRFIoQVgpOyBTTShITCwgSU1NVSgxKSk7IEZ6YWM7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMTk0OSw3ICsxOTUxLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4Mzc6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMTEwIDAwMDEgMDAxMSAwcmVnCQlzdWJjCSUwLCAlMQkJCQkqLwotLSNsaW5lIDExNzIgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMTc0ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCByZWcgQVUgPSBvcFsxXSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMTk1OSw3ICsxOTYxLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICByZWcgPSAweCV4XG4iLCByZWcpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJzdWJjCSUwLCAlMSIpOwotLSNsaW5lIDExNzIgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMTc0ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKHN1YmMpOyBEUkIocmVnKTsgU1IoQSk7IEZ6YWM7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMTk3Myw3ICsxOTc1LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4M2Y6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMTEwIDAwMDEgMDAxMSAxcmJhCQlzdWJjCSUwLCAlMQkJCQkqLwotLSNsaW5lIDExNjkgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMTcxICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCByYmEgQVUgPSBvcFsxXSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMTk4Myw3ICsxOTg1LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICByYmEgPSAweCV4XG4iLCByYmEpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJzdWJjCSUwLCAlMSIpOwotLSNsaW5lIDExNjkgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMTcxICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKHN1YmMpOyBEUihBKTsgU1JCKHJiYSk7IEZ6YWM7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMTk5OCw3ICsyMDAwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4NDc6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMTEwIDAwMDEgMDEwMCAwcmVnCQljbXAJJTAsICUxCQkJCSovCi0tI2xpbmUgNTA3ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNTA5ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCByZWcgQVUgPSBvcFsxXSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMjAwOCw3ICsyMDEwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICByZWcgPSAweCV4XG4iLCByZWcpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJjbXAJJTAsICUxIik7Ci0tI2xpbmUgNTA3ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNTA5ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKGNtcCk7IERSQihyZWcpOyBTUihBKTsgRnphYzsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0yMDIyLDcgKzIwMjQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHg0ZjoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTAgMDAwMSAwMTAwIDFyYmEJCWNtcAklMCwgJTEJCQkJKi8KLS0jbGluZSA1MDQgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA1MDYgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IHJiYSBBVSA9IG9wWzFdICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0yMDMyLDcgKzIwMzQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIHJiYSA9IDB4JXhcbiIsIHJiYSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImNtcAklMCwgJTEiKTsKLS0jbGluZSA1MDQgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA1MDYgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoY21wKTsgRFIoQSk7IFNSQihyYmEpOyBGemFjOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTIwNDcsNyArMjA0OSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJjbXB3CSUwLCAlZWExIik7Ci0tI2xpbmUgNTM0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNTM2ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKGNtcCk7IFcoKTsgRFIoQVgpOyBTTShITCwgSU1NVSgxKSk7IEZ6YWM7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjA2Miw3ICsyMDY0LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4NTc6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMTEwIDAwMDEgMDEwMSAwcmVnCQlhbmQJJTAsICUxCQkJCSovCi0tI2xpbmUgMzA2ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMzA4ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCByZWcgQVUgPSBvcFsxXSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMjA3Miw3ICsyMDc0LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICByZWcgPSAweCV4XG4iLCByZWcpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJhbmQJJTAsICUxIik7Ci0tI2xpbmUgMzA2ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMzA4ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKGFuZCk7IERSQihyZWcpOyBTUihBKTsgRno7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjA4Niw3ICsyMDg4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4NWY6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMTEwIDAwMDEgMDEwMSAxcmJhCQlhbmQJJTAsICUxCQkJCSovCi0tI2xpbmUgMzAzICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMzA1ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCByYmEgQVUgPSBvcFsxXSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMjA5Niw3ICsyMDk4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICByYmEgPSAweCV4XG4iLCByYmEpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJhbmQJJTAsICUxIik7Ci0tI2xpbmUgMzAzICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMzA1ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKGFuZCk7IERSKEEpOyBTUkIocmJhKTsgRno7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjExMSw3ICsyMTEzLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImluYwklZWEwIik7Ci0tI2xpbmUgNTg0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNTg2ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKGFkZCk7IERNKEhMLCBJTU1VKDEpKTsgU0MoMSk7IEZ6YTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0yMTI2LDcgKzIxMjgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHg2NzoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTAgMDAwMSAwMTEwIDByZWcJCW9yCSUwLCAlMQkJCQkqLwotLSNsaW5lIDk2MSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDk2MyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgcmVnIEFVID0gb3BbMV0gJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTIxMzYsNyArMjEzOCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgcmVnID0gMHgleFxuIiwgcmVnKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgib3IJJTAsICUxIik7Ci0tI2xpbmUgOTYxICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgOTYzICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKG9yKTsgRFJCKHJlZyk7IFNSKEEpOyBGejsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0yMTUwLDcgKzIxNTIsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHg2ZjoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTAgMDAwMSAwMTEwIDFyYmEJCW9yCSUwLCAlMQkJCQkqLwotLSNsaW5lIDk1OCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDk2MCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgcmJhIEFVID0gb3BbMV0gJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTIxNjAsNyArMjE2Miw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgcmJhID0gMHgleFxuIiwgcmJhKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgib3IJJTAsICUxIik7Ci0tI2xpbmUgOTU4ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgOTYwICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKG9yKTsgRFIoQSk7IFNSQihyYmEpOyBGejsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0yMTc1LDcgKzIxNzcsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiZGVjCSVlYTAiKTsKLS0jbGluZSA1NTEgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA1NTMgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoc3ViKTsgRE0oSEwsIElNTVUoMSkpOyBTQygxKTsgRnphOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTIxOTAsNyArMjE5Miw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDc3OgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMCAwMDAxIDAxMTEgMHJlZwkJeG9yCSUwLCAlMQkJCQkqLwotLSNsaW5lIDEyNjUgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMjY3ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCByZWcgQVUgPSBvcFsxXSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMjIwMCw3ICsyMjAyLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICByZWcgPSAweCV4XG4iLCByZWcpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJ4b3IJJTAsICUxIik7Ci0tI2xpbmUgMTI2NSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEyNjcgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoeG9yKTsgRFJCKHJlZyk7IFNSKEEpOyBGejsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0yMjE0LDcgKzIyMTYsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHg3ZjoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTAgMDAwMSAwMTExIDFyYmEJCXhvcgklMCwgJTEJCQkJKi8KLS0jbGluZSAxMjYyICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTI2NCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgcmJhIEFVID0gb3BbMV0gJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTIyMjQsNyArMjIyNiw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgcmJhID0gMHgleFxuIiwgcmJhKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgieG9yCSUwLCAlMSIpOwotLSNsaW5lIDEyNjIgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMjY0ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKHhvcik7IERSKEEpOyBTUkIocmJhKTsgRno7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjIzOSw3ICsyMjQxLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImluY3cJJWVhMCIpOwotLSNsaW5lIDU5OCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDYwMCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChhZGQpOyBXKCk7IERNKEhMLCBJTU1VKDEpKTsgU0MoMSk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjI1NSw3ICsyMjU3LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImFkZAklMCwgJWUxIik7Ci0tI2xpbmUgMjA3ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMjA5ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKGFkZCk7IERSKEEpOyBTTTIoSEwsIEIsIDApOyBGemFjOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTIyNzAsNyArMjI3Miw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJhZGQJJTAsICVlMSIpOwotLSNsaW5lIDIxMyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDIxNSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChhZGQpOyBEUihBKTsgU00yKEhMLCBDLCAwKTsgRnphYzsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0yMzA5LDkgKzIzMTEsOSBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHhmNzoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTAgMDAwMSAxbm5uIDAxbW0JCWNhbGx0CVsleDBdCQkJCSovCi0tI2xpbmUgNDMzICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNDM1ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCBubm4gQVUgPSAob3BbMV0gPj4gNCkgJiAweDA3OwotLSNsaW5lIDQzMyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDQzNSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgbW0gQVUgPSBvcFsxXSAmIDB4MDM7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMjMyMiw3ICsyMzI0LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICBtbSA9IDB4JXhcbiIsIG1tKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiY2FsbHQJWyV4MF0iKTsKLS0jbGluZSA0MzMgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA0MzUgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoY2FsbCk7IERNKE5vbmUsIDB4ODAgKyBtbSoxNiArIG5ubioyKTsKLSAKLSAgICAgICAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi1AQCAtMjMzOCw3ICsyMzQwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4OGY6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMTEwIDAwMDEgMTAwMCAxcmVnCQl4Y2gJJTAsICUxCQkJCSovCi0tI2xpbmUgMTIyNCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEyMjYgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IHJlZyBBVSA9IG9wWzFdICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0yMzQ4LDcgKzIzNTAsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIHJlZyA9IDB4JXhcbiIsIHJlZyk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInhjaAklMCwgJTEiKTsKLS0jbGluZSAxMjI0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTIyNiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICAvKiBOb3RlOiBERUNXIHVzZXMgcmVnID09IFgsIHNvIHRoaXMgbXVzdCBmb2xsb3cgREVDVyAqLwotICAgICAgICAgICAgICAgICBJRCh4Y2gpOyBEUihBKTsgU1JCKHJlZyk7Ci0gCi1AQCAtMjM2NCw3ICsyMzY2LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImRlY3cJJWVhMCIpOwotLSNsaW5lIDU2NSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDU2NyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChzdWIpOyBXKCk7IERNKEhMLCBJTU1VKDEpKTsgU0MoMSk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjM3OSw3ICsyMzgxLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImFkZGMJJTAsICVlMSIpOwotLSNsaW5lIDIzOSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDI0MSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChhZGRjKTsgRFIoQSk7IFNNMihITCwgQiwgMCk7IEZ6YWM7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjM5NCw3ICsyMzk2LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImFkZGMJJTAsICVlMSIpOwotLSNsaW5lIDI0MiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDI0NCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChhZGRjKTsgRFIoQSk7IFNNMihITCwgQywgMCk7IEZ6YWM7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjQxMCw3ICsyNDEyLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInN1YgklMCwgJWUxIik7Ci0tI2xpbmUgMTEyNSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDExMjcgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoc3ViKTsgRFIoQSk7IFNNMihITCwgQiwgMCk7IEZ6YWM7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjQyNSw3ICsyNDI3LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInN1YgklMCwgJWUxIik7Ci0tI2xpbmUgMTEzMSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDExMzMgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoc3ViKTsgRFIoQSk7IFNNMihITCwgQywgMCk7IEZ6YWM7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjQ0MCw3ICsyNDQyLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInhjaAklMCwgJTEiKTsKLS0jbGluZSAxMjI4ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTIzMCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRCh4Y2gpOyBEUihBKTsgU00oTm9uZSwgU0FERFIpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTI0NTUsNyArMjQ1Nyw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJ4Y2gJJTAsICVlMSIpOwotLSNsaW5lIDEyMjEgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMjIzICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKHhjaCk7IERSKEEpOyBTTTIoSEwsIEMsIDApOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTI0NzAsNyArMjQ3Miw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJ4Y2gJJTAsICVlITEiKTsKLS0jbGluZSAxMjAzICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTIwNSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRCh4Y2gpOyBEUihBKTsgU00oTm9uZSwgSU1NVSgyKSk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjQ4NSw3ICsyNDg3LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInhjaAklMCwgJXMxIik7Ci0tI2xpbmUgMTIzMSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEyMzMgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoeGNoKTsgRFIoQSk7IFNNKE5vbmUsIFNGUik7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjUwMCw3ICsyNTAyLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInhjaAklMCwgJWUxIik7Ci0tI2xpbmUgMTIxMiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEyMTQgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoeGNoKTsgRFIoQSk7IFNNKEhMLCAwKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0yNTE1LDcgKzI1MTcsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgieGNoCSUwLCAlZWExIik7Ci0tI2xpbmUgMTIxOCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEyMjAgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoeGNoKTsgRFIoQSk7IFNNKEhMLCBJTU1VKDEpKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0yNTMwLDcgKzI1MzIsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgieGNoCSUwLCAlZTEiKTsKLS0jbGluZSAxMjA2ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTIwOCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRCh4Y2gpOyBEUihBKTsgU00oREUsIDApOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTI1NDUsNyArMjU0Nyw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJ4Y2gJJTAsICVlYTEiKTsKLS0jbGluZSAxMjA5ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTIxMSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRCh4Y2gpOyBEUihBKTsgU00oREUsIElNTVUoMSkpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTI1NjAsNyArMjU2Miw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJzdWJjCSUwLCAlZTEiKTsKLS0jbGluZSAxMTU3ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTE1OSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChzdWJjKTsgRFIoQSk7IFNNMihITCwgQiwgMCk7IEZ6YWM7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjU3NSw3ICsyNTc3LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInN1YmMJJTAsICVlMSIpOwotLSNsaW5lIDExNjAgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMTYyICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKHN1YmMpOyBEUihBKTsgU00yKEhMLCBDLCAwKTsgRnphYzsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0yNTkwLDcgKzI1OTIsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgibW92CSUwLCAlMSIpOwotLSNsaW5lIDcyMyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDcyNSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChtb3YpOyBEUihFUyk7IFNNKE5vbmUsIFNBRERSKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0yNjA1LDcgKzI2MDcsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgieGNoCSUwLCAlZTEiKTsKLS0jbGluZSAxMjE1ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTIxNyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRCh4Y2gpOyBEUihBKTsgU00yKEhMLCBCLCAwKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0yNjIwLDcgKzI2MjIsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiY21wCSUwLCAlZTEiKTsKLS0jbGluZSA0OTIgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA0OTQgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoY21wKTsgRFIoQSk7IFNNMihITCwgQiwgMCk7IEZ6YWM7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjYzNSw3ICsyNjM3LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImNtcAklMCwgJWUxIik7Ci0tI2xpbmUgNDk1ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNDk3ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKGNtcCk7IERSKEEpOyBTTTIoSEwsIEMsIDApOyBGemFjOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTI2NTAsNyArMjY1Miw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJiaAkkJWEwIik7Ci0tI2xpbmUgMzQwICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMzQyICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKGJyYW5jaF9jb25kKTsgREMocGMrSU1NUygxKSszKTsgU1IoTm9uZSk7IENPTkQoSCk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjY2NSw3ICsyNjY3LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInNrJWMxIik7Ci0tI2xpbmUgMTA5NCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEwOTYgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoc2tpcCk7IENPTkQoQyk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjY4MCw3ICsyNjgyLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoIm1vdgklMCwgJWUxIik7Ci0tI2xpbmUgNjYwICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNjYyICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKG1vdik7IERSKEEpOyBTTTIoSEwsIEIsIDApOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTI2OTEsNyArMjY5Myw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweGZhOgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMCAwMDAxIDExcmcgMTAxMAkJY2FsbAklMAkJCQkqLwotLSNsaW5lIDQzMCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDQzMiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgcmcgQVUgPSAob3BbMV0gPj4gNCkgJiAweDAzOwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTI3MDEsNyArMjcwMyw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgcmcgPSAweCV4XG4iLCByZyk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImNhbGwJJTAiKTsKLS0jbGluZSA0MzAgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA0MzIgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoY2FsbCk7IERSVyhyZyk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjcxNiw3ICsyNzE4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImJyCWF4Iik7Ci0tI2xpbmUgMzgwICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMzgyICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKGJyYW5jaCk7IERSKEFYKTsKLSAKLSAgICAgICAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi1AQCAtMjczMyw3ICsyNzM1LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImJyayIpOwotLSNsaW5lIDM4OCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDM5MCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChicmVhayk7Ci0gCi0gICAgICAgICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTI3NTAsNyArMjc1Miw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJwb3AJJXMwIik7Ci0tI2xpbmUgOTg5ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgOTkxICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKG1vdik7IFcoKTsgRFIoUFNXKTsgU1BPUCgpOwotIAotICAgICAgICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC0yNzY3LDcgKzI3NjksNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgibW92cwklZWEwLCAlMSIpOwotLSNsaW5lIDgxMSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDgxMyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChtb3YpOyBETShITCwgSU1NVSgxKSk7IFNSKFgpOyBGemM7Ci0gCi0gICAgICAgICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTI3ODAsNyArMjc4Miw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweGZmOgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMCAwMDAxIDExcmIgMTExMQkJc2VsCXJiJTEJCQkJKi8KLS0jbGluZSAxMDQxICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTA0MyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgcmIgQVUgPSAob3BbMV0gPj4gNCkgJiAweDAzOwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTI3OTAsNyArMjc5Miw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgcmIgPSAweCV4XG4iLCByYik7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInNlbAlyYiUxIik7Ci0tI2xpbmUgMTA0MSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEwNDMgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoc2VsKTsgU0MocmIpOwotIAotICAgICAgICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC0yODA3LDcgKzI4MDksNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiYW5kCSUwLCAlZTEiKTsKLS0jbGluZSAyOTEgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAyOTMgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoYW5kKTsgRFIoQSk7IFNNMihITCwgQiwgMCk7IEZ6OwotIAotICAgICAgICAgICAgICAgfQotQEAgLTI4MjIsNyArMjgyNCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJhbmQJJTAsICVlMSIpOwotLSNsaW5lIDI5NyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDI5OSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChhbmQpOyBEUihBKTsgU00yKEhMLCBDLCAwKTsgRno7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjgzNyw3ICsyODM5LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImJuaAkkJWEwIik7Ci0tI2xpbmUgMzQzICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMzQ1ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKGJyYW5jaF9jb25kKTsgREMocGMrSU1NUygxKSszKTsgU1IoTm9uZSk7IENPTkQoTkgpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTI4NTIsNyArMjg1NCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJzayVjMSIpOwotLSNsaW5lIDExMDAgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMTAyICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKHNraXApOyBDT05EKE5DKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0yODY3LDcgKzI4NjksNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgibW92CSVlMCwgJTEiKTsKLS0jbGluZSA2MjcgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA2MjkgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQobW92KTsgRE0yKEhMLCBCLCAwKTsgU1IoQSk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjg4Miw3ICsyODg0LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInJvcgklMCwgJTEiKTsKLS0jbGluZSAxMDIyICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTAyNCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChyb3IpOyBEUihBKTsgU0MoMSk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMjg5Nyw3ICsyODk5LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInJvbGMJJTAsICUxIik7Ci0tI2xpbmUgMTAxNiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEwMTggInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQocm9sYyk7IERSKEEpOyBTQygxKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0yOTEyLDcgKzI5MTQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgicHVzaAklczEiKTsKLS0jbGluZSA5OTcgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA5OTkgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQobW92KTsgVygpOyBEUFVTSCgpOyBTUihQU1cpOwotIAotICAgICAgICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC0yOTI5LDcgKzI5MzEsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiY21wcwklMCwgJWVhMSIpOwotLSNsaW5lIDUyNiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDUyOCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChjbXApOyBEUihYKTsgU00oSEwsIElNTVUoMSkpOyBGemFjOwotIAotICAgICAgICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC0yOTQ2LDcgKzI5NDgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgib3IJJTAsICVlMSIpOwotLSNsaW5lIDk0NiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDk0OCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChvcik7IERSKEEpOyBTTTIoSEwsIEIsIDApOyBGejsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0yOTYxLDcgKzI5NjMsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgib3IJJTAsICVlMSIpOwotLSNsaW5lIDk1MiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDk1NCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChvcik7IERSKEEpOyBTTTIoSEwsIEMsIDApOyBGejsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0yOTc2LDcgKzI5NzgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgic2slYzEiKTsKLS0jbGluZSAxMDk3ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTA5OSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChza2lwKTsgQ09ORChIKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0yOTkxLDcgKzI5OTMsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgic2slYzEiKTsKLS0jbGluZSAxMTA5ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTExMSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChza2lwKTsgQ09ORChaKTsKLSAKLSAgICAgICAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi1AQCAtMzAwOCw3ICszMDEwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoIm1vdgklMCwgJWUxIik7Ci0tI2xpbmUgNjYzICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNjY1ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKG1vdik7IERSKEEpOyBTTTIoSEwsIEMsIDApOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTMwMjMsNyArMzAyNSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJyb2wJJTAsICUxIik7Ci0tI2xpbmUgMTAxMyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEwMTUgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQocm9sKTsgRFIoQSk7IFNDKDEpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTMwMzgsNyArMzA0MCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJyZXRiIik7Ci0tI2xpbmUgMTAwOCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEwMTAgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQocmV0aSk7Ci0gCi0gICAgICAgICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTMwNTUsNyArMzA1Nyw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJoYWx0Iik7Ci0tI2xpbmUgNTc2ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNTc4ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKGhhbHQpOwotIAotICAgICAgICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC0zMDY2LDcgKzMwNjgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHhmZToKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTAgMDAwMSAxMTFyIDExMTAJCXJvbHdjCSUwLCAlMQkJCQkqLwotLSNsaW5lIDEwMTkgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMDIxICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCByIEFVID0gKG9wWzFdID4+IDQpICYgMHgwMTsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0zMDc2LDcgKzMwNzgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIHIgPSAweCV4XG4iLCByKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgicm9sd2MJJTAsICUxIik7Ci0tI2xpbmUgMTAxOSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEwMjEgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQocm9sYyk7IFcoKTsgRFJXKHIpOyBTQygxKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0zMDkxLDcgKzMwOTMsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgieG9yCSUwLCAlZTEiKTsKLS0jbGluZSAxMjUwICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTI1MiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRCh4b3IpOyBEUihBKTsgU00yKEhMLCBCLCAwKTsgRno7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMzEwNiw3ICszMTA4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInhvcgklMCwgJWUxIik7Ci0tI2xpbmUgMTI1NiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEyNTggInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoeG9yKTsgRFIoQSk7IFNNMihITCwgQywgMCk7IEZ6OwotIAotICAgICAgICAgICAgICAgfQotQEAgLTMxMjEsNyArMzEyMyw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJzayVjMSIpOwotLSNsaW5lIDExMDMgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMTA1ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKHNraXApOyBDT05EKE5IKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0zMTM2LDcgKzMxMzgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgic2slYzEiKTsKLS0jbGluZSAxMTA2ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTEwOCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChza2lwKTsgQ09ORChOWik7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMzE1MSw3ICszMTUzLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoIm1vdgklZTAsICUxIik7Ci0tI2xpbmUgNjM2ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNjM4ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKG1vdik7IERNMihITCwgQywgMCk7IFNSKEEpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTMxNjYsNyArMzE2OCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJyb3JjCSUwLCAlMSIpOwotLSNsaW5lIDEwMjUgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMDI3ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKHJvcmMpOyBEUihBKTsgU0MoMSk7Ci0gCi0gICAgICAgICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTMxODYsNyArMzE4OCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJyZXRpIik7Ci0tI2xpbmUgMTAwNSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEwMDcgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQocmV0aSk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMzIwMSw3ICszMjAzLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInN0b3AiKTsKLS0jbGluZSAxMTE0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTExNiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChzdG9wKTsKLSAKLSAgICAgICAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi1AQCAtMzIyMSw3ICszMjIzLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92dwklZTAsICUxIik7Ci0tI2xpbmUgODc0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgODc2ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IFcoKTsgRE0oQywgSU1NVSgyKSk7IFNSKEFYKTsKLSAKLSAgICAgICAgIH0KLUBAIC0zMjM2LDcgKzMyMzgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3Z3CSUwLCAlZTEiKTsKLS0jbGluZSA4NjUgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA4NjcgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgVygpOyBEUihBWCk7IFNNKEMsIElNTVUoMikpOwotIAotICAgICAgICAgfQotQEAgLTMyNTEsNyArMzI1Myw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm9yCSUwLCAjJTEiKTsKLS0jbGluZSA5NjcgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA5NjkgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQob3IpOyBETShOb25lLCBTQUREUik7IFNDKElNTVUoMSkpOyBGejsKLSAKLSAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi1AQCAtMzI2OCw3ICszMjcwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgib3IJJTAsICUxIik7Ci0tI2xpbmUgOTY0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgOTY2ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG9yKTsgRFIoQSk7IFNNKE5vbmUsIFNBRERSKTsgRno7Ci0gCi0gICAgICAgICB9Ci1AQCAtMzI4Myw3ICszMjg1LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgib3IJJTAsICMlMSIpOwotLSNsaW5lIDk1NSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDk1NyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChvcik7IERSKEEpOyBTQyhJTU1VKDEpKTsgRno7Ci0gCi0gICAgICAgICB9Ci1AQCAtMzI5OCw3ICszMzAwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgib3IJJTAsICVlMSIpOwotLSNsaW5lIDk0MyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDk0NSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChvcik7IERSKEEpOyBTTShITCwgMCk7IEZ6OwotIAotICAgICAgICAgfQotQEAgLTMzMTMsNyArMzMxNSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm9yCSUwLCAlZWExIik7Ci0tI2xpbmUgOTQ5ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgOTUxICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG9yKTsgRFIoQSk7IFNNKEhMLCBJTU1VKDEpKTsgRno7Ci0gCi0gICAgICAgICB9Ci1AQCAtMzMyOCw3ICszMzMwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgib3IJJTAsICVlITEiKTsKLS0jbGluZSA5NDAgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA5NDIgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQob3IpOyBEUihBKTsgU00oTm9uZSwgSU1NVSgyKSk7IEZ6OwotIAotICAgICAgICAgfQotQEAgLTMzNDIsNyArMzM0NCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgY2FzZSAweDc3OgotICAgICAgICAgewotICAgICAgICAgICAvKiogMDExMSAwcmJhCQkJbW92CSUwLCAlMQkJCQkqLwotLSNsaW5lIDY5NiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDY5OCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBpbnQgcmJhIEFVID0gb3BbMF0gJiAweDA3OwotICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgewotQEAgLTMzNTIsNyArMzM1NCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgIHByaW50ZiAoIiAgcmJhID0gMHgleFxuIiwgcmJhKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92CSUwLCAlMSIpOwotLSNsaW5lIDY5NiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDY5OCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBEUkIocmJhKTsgU1IoQSk7Ci0gCi0gICAgICAgICB9Ci1AQCAtMzM3MSw3ICszMzczLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4NzA6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMTExIDAwMDEgMGJpdCAwMDAwCQlzZXQxCSVlITAJCQkJKi8KLS0jbGluZSAxMDQ2ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTA0OCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgYml0IEFVID0gKG9wWzFdID4+IDQpICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0zMzgxLDcgKzMzODMsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIGJpdCA9IDB4JXhcbiIsIGJpdCk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInNldDEJJWUhMCIpOwotLSNsaW5lIDEwNDYgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMDQ4ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKG1vdik7IERNKE5vbmUsIElNTVUoMikpOyBEQihiaXQpOyBTQygxKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0zMzk2LDcgKzMzOTgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHg3MToKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTEgMDAwMSAwYml0IDAwMDEJCW1vdjEJJTAsIGN5CQkJCSovCi0tI2xpbmUgODAzICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgODA1ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCBiaXQgQVUgPSAob3BbMV0gPj4gNCkgJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTM0MDYsNyArMzQwOCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgYml0ID0gMHgleFxuIiwgYml0KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgibW92MQklMCwgY3kiKTsKLS0jbGluZSA4MDMgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA4MDUgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQobW92KTsgRE0oTm9uZSwgU0FERFIpOyBEQihiaXQpOyBTQ1koKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0zNDIxLDcgKzM0MjMsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHg3MjoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTEgMDAwMSAwYml0IDAwMTAJCXNldDEJJTAJCQkJKi8KLS0jbGluZSAxMDY0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTA2NiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgYml0IEFVID0gKG9wWzFdID4+IDQpICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0zNDMxLDcgKzM0MzMsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIGJpdCA9IDB4JXhcbiIsIGJpdCk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInNldDEJJTAiKTsKLS0jbGluZSAxMDY0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTA2NiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChtb3YpOyBETShOb25lLCBTQUREUik7IERCKGJpdCk7IFNDKDEpOwotIAotICAgICAgICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC0zNDQ4LDcgKzM0NTAsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHg3MzoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTEgMDAwMSAwYml0IDAwMTEJCWNscjEJJTAJCQkJKi8KLS0jbGluZSA0NTYgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA0NTggInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IGJpdCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMzQ1OCw3ICszNDYwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICBiaXQgPSAweCV4XG4iLCBiaXQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJjbHIxCSUwIik7Ci0tI2xpbmUgNDU2ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNDU4ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKG1vdik7IERNKE5vbmUsIFNBRERSKTsgREIoYml0KTsgU0MoMCk7Ci0gCi0gICAgICAgICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTM0NzUsNyArMzQ3Nyw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDc0OgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMSAwMDAxIDBiaXQgMDEwMAkJbW92MQljeSwgJTEJCQkJKi8KLS0jbGluZSA3OTcgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA3OTkgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IGJpdCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMzQ4NSw3ICszNDg3LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICBiaXQgPSAweCV4XG4iLCBiaXQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJtb3YxCWN5LCAlMSIpOwotLSNsaW5lIDc5NyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDc5OSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChtb3YpOyBEQ1koKTsgU00oTm9uZSwgU0FERFIpOyBTQihiaXQpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTM1MDAsNyArMzUwMiw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDc1OgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMSAwMDAxIDBiaXQgMDEwMQkJYW5kMQljeSwgJXMxCQkJCSovCi0tI2xpbmUgMzI2ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMzI4ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCBiaXQgQVUgPSAob3BbMV0gPj4gNCkgJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTM1MTAsNyArMzUxMiw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgYml0ID0gMHgleFxuIiwgYml0KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiYW5kMQljeSwgJXMxIik7Ci0tI2xpbmUgMzI2ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMzI4ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKGFuZCk7IERDWSgpOyBTTShOb25lLCBTQUREUik7IFNCKGJpdCk7Ci0gCi0gICAgICAgICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTM1MzAsNyArMzUzMiw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDc2OgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMSAwMDAxIDBiaXQgMDExMAkJb3IxCWN5LCAlczEJCQkJKi8KLS0jbGluZSA5ODEgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA5ODMgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IGJpdCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMzU0MCw3ICszNTQyLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICBiaXQgPSAweCV4XG4iLCBiaXQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJvcjEJY3ksICVzMSIpOwotLSNsaW5lIDk4MSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDk4MyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChvcik7IERDWSgpOyBTTShOb25lLCBTQUREUik7IFNCKGJpdCk7Ci0gCi0gICAgICAgICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTM1NTcsNyArMzU1OSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDc3OgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMSAwMDAxIDBiaXQgMDExMQkJeG9yMQljeSwgJXMxCQkJCSovCi0tI2xpbmUgMTI4NSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEyODcgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IGJpdCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMzU2Nyw3ICszNTY5LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICBiaXQgPSAweCV4XG4iLCBiaXQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJ4b3IxCWN5LCAlczEiKTsKLS0jbGluZSAxMjg1ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTI4NyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRCh4b3IpOyBEQ1koKTsgU00oTm9uZSwgU0FERFIpOyBTQihiaXQpOwotIAotICAgICAgICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC0zNTg0LDcgKzM1ODYsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHg3ODoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTEgMDAwMSAwYml0IDEwMDAJCWNscjEJJWUhMAkJCQkqLwotLSNsaW5lIDQzOCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDQ0MCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgYml0IEFVID0gKG9wWzFdID4+IDQpICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0zNTk0LDcgKzM1OTYsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIGJpdCA9IDB4JXhcbiIsIGJpdCk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImNscjEJJWUhMCIpOwotLSNsaW5lIDQzOCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDQ0MCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChtb3YpOyBETShOb25lLCBJTU1VKDIpKTsgREIoYml0KTsgU0MoMCk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtMzYwOSw3ICszNjExLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4Nzk6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMTExIDAwMDEgMGJpdCAxMDAxCQltb3YxCSVzMCwgY3kJCQkJKi8KLS0jbGluZSA4MDYgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA4MDggInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IGJpdCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMzYxOSw3ICszNjIxLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICBiaXQgPSAweCV4XG4iLCBiaXQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJtb3YxCSVzMCwgY3kiKTsKLS0jbGluZSA4MDYgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA4MDggInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQobW92KTsgRE0oTm9uZSwgU0ZSKTsgREIoYml0KTsgU0NZKCk7Ci0gCi0gICAgICAgICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTM2MzYsNyArMzYzOCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDdhOgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMSAwMDAxIDBiaXQgMTAxMAkJc2V0MQklczAJCQkJKi8KLS0jbGluZSAxMDU4ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTA2MCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgYml0IEFVID0gKG9wWzFdID4+IDQpICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0zNjQ2LDcgKzM2NDgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIGJpdCA9IDB4JXhcbiIsIGJpdCk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInNldDEJJXMwIik7Ci0tI2xpbmUgMTA1OCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEwNjAgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgb3AwID0gU0ZSOwotICAgICAgICAgICAgICAgICBJRChtb3YpOyBETShOb25lLCBvcDApOyBEQihiaXQpOyBTQygxKTsKLSAgICAgICAgICAgICAgICAgaWYgKG9wMCA9PSBSTDc4X1NGUl9QU1cgJiYgYml0ID09IDcpCi1AQCAtMzY2NCw3ICszNjY2LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4N2I6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMTExIDAwMDEgMGJpdCAxMDExCQljbHIxCSVzMAkJCQkqLwotLSNsaW5lIDQ1MCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDQ1MiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgYml0IEFVID0gKG9wWzFdID4+IDQpICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0zNjc0LDcgKzM2NzYsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIGJpdCA9IDB4JXhcbiIsIGJpdCk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImNscjEJJXMwIik7Ci0tI2xpbmUgNDUwICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNDUyICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIG9wMCA9IFNGUjsKLSAgICAgICAgICAgICAgICAgSUQobW92KTsgRE0oTm9uZSwgb3AwKTsgREIoYml0KTsgU0MoMCk7Ci0gICAgICAgICAgICAgICAgIGlmIChvcDAgPT0gUkw3OF9TRlJfUFNXICYmIGJpdCA9PSA3KQotQEAgLTM2OTIsNyArMzY5NCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDdjOgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMSAwMDAxIDBiaXQgMTEwMAkJbW92MQljeSwgJXMxCQkJCSovCi0tI2xpbmUgODAwICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgODAyICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCBiaXQgQVUgPSAob3BbMV0gPj4gNCkgJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTM3MDIsNyArMzcwNCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgYml0ID0gMHgleFxuIiwgYml0KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgibW92MQljeSwgJXMxIik7Ci0tI2xpbmUgODAwICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgODAyICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKG1vdik7IERDWSgpOyBTTShOb25lLCBTRlIpOyBTQihiaXQpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTM3MTcsNyArMzcxOSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDdkOgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMSAwMDAxIDBiaXQgMTEwMQkJYW5kMQljeSwgJXMxCQkJCSovCi0tI2xpbmUgMzIzICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMzI1ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCBiaXQgQVUgPSAob3BbMV0gPj4gNCkgJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTM3MjcsNyArMzcyOSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgYml0ID0gMHgleFxuIiwgYml0KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiYW5kMQljeSwgJXMxIik7Ci0tI2xpbmUgMzIzICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMzI1ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKGFuZCk7IERDWSgpOyBTTShOb25lLCBTRlIpOyBTQihiaXQpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTM3NDIsNyArMzc0NCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDdlOgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMSAwMDAxIDBiaXQgMTExMAkJb3IxCWN5LCAlczEJCQkJKi8KLS0jbGluZSA5NzggInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA5ODAgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IGJpdCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMzc1Miw3ICszNzU0LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICBiaXQgPSAweCV4XG4iLCBiaXQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJvcjEJY3ksICVzMSIpOwotLSNsaW5lIDk3OCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDk4MCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChvcik7IERDWSgpOyBTTShOb25lLCBTRlIpOyBTQihiaXQpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTM3NjcsNyArMzc2OSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweDdmOgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMSAwMDAxIDBiaXQgMTExMQkJeG9yMQljeSwgJXMxCQkJCSovCi0tI2xpbmUgMTI4MiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEyODQgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IGJpdCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMzc3Nyw3ICszNzc5LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICBiaXQgPSAweCV4XG4iLCBiaXQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJ4b3IxCWN5LCAlczEiKTsKLS0jbGluZSAxMjgyICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTI4NCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRCh4b3IpOyBEQ1koKTsgU00oTm9uZSwgU0ZSKTsgU0IoYml0KTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0zNzkyLDcgKzM3OTQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BbMF0sIG9wWzFdKTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgic2V0MQljeSIpOwotLSNsaW5lIDEwNTUgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMDU3ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKG1vdik7IERDWSgpOyBTQygxKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0zODA3LDcgKzM4MDksNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHhmMToKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTEgMDAwMSAxYml0IDAwMDEJCW1vdjEJJWUwLCBjeQkJCQkqLwotLSNsaW5lIDc4NSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDc4NyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgYml0IEFVID0gKG9wWzFdID4+IDQpICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0zODE3LDcgKzM4MTksNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIGJpdCA9IDB4JXhcbiIsIGJpdCk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoIm1vdjEJJWUwLCBjeSIpOwotLSNsaW5lIDc4NSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDc4NyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChtb3YpOyBETShITCwgMCk7IERCKGJpdCk7IFNDWSgpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTM4MzIsNyArMzgzNCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweGYyOgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMSAwMDAxIDFiaXQgMDAxMAkJc2V0MQklZTAJCQkJKi8KLS0jbGluZSAxMDQ5ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTA1MSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgYml0IEFVID0gKG9wWzFdID4+IDQpICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0zODQyLDcgKzM4NDQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIGJpdCA9IDB4JXhcbiIsIGJpdCk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoInNldDEJJWUwIik7Ci0tI2xpbmUgMTA0OSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEwNTEgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQobW92KTsgRE0oSEwsIDApOyBEQihiaXQpOyBTQygxKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0zODU3LDcgKzM4NTksNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHhmMzoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTEgMDAwMSAxYml0IDAwMTEJCWNscjEJJWUwCQkJCSovCi0tI2xpbmUgNDQxICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNDQzICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCBiaXQgQVUgPSAob3BbMV0gPj4gNCkgJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTM4NjcsNyArMzg2OSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgYml0ID0gMHgleFxuIiwgYml0KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiY2xyMQklZTAiKTsKLS0jbGluZSA0NDEgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA0NDMgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQobW92KTsgRE0oSEwsIDApOyBEQihiaXQpOyBTQygwKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0zODgyLDcgKzM4ODQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHhmNDoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTEgMDAwMSAxYml0IDAxMDAJCW1vdjEJY3ksICVlMQkJCQkqLwotLSNsaW5lIDc5MSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDc5MyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgYml0IEFVID0gKG9wWzFdID4+IDQpICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC0zODkyLDcgKzM4OTQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIGJpdCA9IDB4JXhcbiIsIGJpdCk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoIm1vdjEJY3ksICVlMSIpOwotLSNsaW5lIDc5MSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDc5MyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChtb3YpOyBEQ1koKTsgU00oSEwsIDApOyBTQihiaXQpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTM5MDcsNyArMzkwOSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweGY1OgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMSAwMDAxIDFiaXQgMDEwMQkJYW5kMQljeSwgJWUxCQkJKi8KLS0jbGluZSAzMTcgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAzMTkgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IGJpdCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMzkxNyw3ICszOTE5LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICBiaXQgPSAweCV4XG4iLCBiaXQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJhbmQxCWN5LCAlZTEiKTsKLS0jbGluZSAzMTcgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAzMTkgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoYW5kKTsgRENZKCk7IFNNKEhMLCAwKTsgU0IoYml0KTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0zOTMyLDcgKzM5MzQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHhmNjoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTEgMDAwMSAxYml0IDAxMTAJCW9yMQljeSwgJWUxCQkJCSovCi0tI2xpbmUgOTcyICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgOTc0ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCBiaXQgQVUgPSAob3BbMV0gPj4gNCkgJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTM5NDIsNyArMzk0NCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgYml0ID0gMHgleFxuIiwgYml0KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgib3IxCWN5LCAlZTEiKTsKLS0jbGluZSA5NzIgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA5NzQgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQob3IpOyBEQ1koKTsgU00oSEwsIDApOyBTQihiaXQpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTM5NTcsNyArMzk1OSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweGY3OgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMSAwMDAxIDFiaXQgMDExMQkJeG9yMQljeSwgJWUxCQkJCSovCi0tI2xpbmUgMTI3NiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEyNzggInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IGJpdCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtMzk2Nyw3ICszOTY5LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICBiaXQgPSAweCV4XG4iLCBiaXQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJ4b3IxCWN5LCAlZTEiKTsKLS0jbGluZSAxMjc2ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTI3OCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRCh4b3IpOyBEQ1koKTsgU00oSEwsIDApOyBTQihiaXQpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTM5ODIsNyArMzk4NCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcFswXSwgb3BbMV0pOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJjbHIxCWN5Iik7Ci0tI2xpbmUgNDQ3ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNDQ5ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKG1vdik7IERDWSgpOyBTQygwKTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC0zOTk3LDcgKzM5OTksNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHhmOToKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTEgMDAwMSAxYml0IDEwMDEJCW1vdjEJJWUwLCBjeQkJCQkqLwotLSNsaW5lIDc4OCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDc5MCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgYml0IEFVID0gKG9wWzFdID4+IDQpICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC00MDA3LDcgKzQwMDksNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIGJpdCA9IDB4JXhcbiIsIGJpdCk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoIm1vdjEJJWUwLCBjeSIpOwotLSNsaW5lIDc4OCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDc5MCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRChtb3YpOyBEUihBKTsgREIoYml0KTsgU0NZKCk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtNDAyMiw3ICs0MDI0LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4ZmE6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMTExIDAwMDEgMWJpdCAxMDEwCQlzZXQxCSUwCQkJCSovCi0tI2xpbmUgMTA1MiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEwNTQgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgaW50IGJpdCBBVSA9IChvcFsxXSA+PiA0KSAmIDB4MDc7Ci0gICAgICAgICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICAgICAgICB7Ci1AQCAtNDAzMiw3ICs0MDM0LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgcHJpbnRmICgiICBiaXQgPSAweCV4XG4iLCBiaXQpOwotICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgU1lOVEFYKCJzZXQxCSUwIik7Ci0tI2xpbmUgMTA1MiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEwNTQgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQobW92KTsgRFIoQSk7IERCKGJpdCk7IFNDKDEpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTQwNDcsNyArNDA0OSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweGZiOgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMSAwMDAxIDFiaXQgMTAxMQkJY2xyMQklMAkJCQkqLwotLSNsaW5lIDQ0NCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDQ0NiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgYml0IEFVID0gKG9wWzFdID4+IDQpICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC00MDU3LDcgKzQwNTksNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIGJpdCA9IDB4JXhcbiIsIGJpdCk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoImNscjEJJTAiKTsKLS0jbGluZSA0NDQgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA0NDYgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQobW92KTsgRFIoQSk7IERCKGJpdCk7IFNDKDApOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTQwNzIsNyArNDA3NCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweGZjOgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMSAwMDAxIDFiaXQgMTEwMAkJbW92MQljeSwgJWUxCQkJCSovCi0tI2xpbmUgNzk0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNzk2ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCBiaXQgQVUgPSAob3BbMV0gPj4gNCkgJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTQwODIsNyArNDA4NCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgYml0ID0gMHgleFxuIiwgYml0KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgibW92MQljeSwgJWUxIik7Ci0tI2xpbmUgNzk0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNzk2ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIElEKG1vdik7IERDWSgpOyBTUihBKTsgU0IoYml0KTsKLSAKLSAgICAgICAgICAgICAgIH0KLUBAIC00MDk3LDcgKzQwOTksNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgIGNhc2UgMHhmZDoKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLyoqIDAxMTEgMDAwMSAxYml0IDExMDEJCWFuZDEJY3ksICUxCQkJCSovCi0tI2xpbmUgMzIwICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMzIyICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCBiaXQgQVUgPSAob3BbMV0gPj4gNCkgJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTQxMDcsNyArNDEwOSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgYml0ID0gMHgleFxuIiwgYml0KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgiYW5kMQljeSwgJTEiKTsKLS0jbGluZSAzMjAgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAzMjIgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoYW5kKTsgRENZKCk7IFNSKEEpOyBTQihiaXQpOwotIAotICAgICAgICAgICAgICAgfQotQEAgLTQxMjIsNyArNDEyNCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgY2FzZSAweGZlOgotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvKiogMDExMSAwMDAxIDFiaXQgMTExMAkJb3IxCWN5LCAlMQkJCQkqLwotLSNsaW5lIDk3NSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDk3NyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBpbnQgYml0IEFVID0gKG9wWzFdID4+IDQpICYgMHgwNzsKLSAgICAgICAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgICAgICAgIHsKLUBAIC00MTMyLDcgKzQxMzQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICBwcmludGYgKCIgIGJpdCA9IDB4JXhcbiIsIGJpdCk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoIm9yMQljeSwgJTEiKTsKLS0jbGluZSA5NzUgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA5NzcgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQob3IpOyBEQ1koKTsgU1IoQSk7IFNCKGJpdCk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtNDE0Nyw3ICs0MTQ5LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICBjYXNlIDB4ZmY6Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8qKiAwMTExIDAwMDEgMWJpdCAxMTExCQl4b3IxCWN5LCAlMQkJCQkqLwotLSNsaW5lIDEyNzkgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMjgxICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgICAgICAgIGludCBiaXQgQVUgPSAob3BbMV0gPj4gNCkgJiAweDA3OwotICAgICAgICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgICAgICAgewotQEAgLTQxNTcsNyArNDE1OSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgIHByaW50ZiAoIiAgYml0ID0gMHgleFxuIiwgYml0KTsKLSAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIFNZTlRBWCgieG9yMQljeSwgJTEiKTsKLS0jbGluZSAxMjc5ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTI4MSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICAgICAgICBJRCh4b3IpOyBEQ1koKTsgU1IoQSk7IFNCKGJpdCk7Ci0gCi0gICAgICAgICAgICAgICB9Ci1AQCAtNDE3Miw3ICs0MTc0LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wWzBdLCBvcFsxXSk7Ci0gICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBTWU5UQVgoIm5vdDEJY3kiKTsKLS0jbGluZSA5MTYgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA5MTggInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgICAgICAgSUQoeG9yKTsgRENZKCk7IFNDKDEpOwotIAotICAgICAgICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC00MTkyLDcgKzQxOTQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3Z3CSVlMCwgJTEiKTsKLS0jbGluZSA4NzcgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA4NzkgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgVygpOyBETShCQywgSU1NVSgyKSk7IFNSKEFYKTsKLSAKLSAgICAgICAgIH0KLUBAIC00MjA3LDcgKzQyMDksNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3Z3CSUwLCAlZTEiKTsKLS0jbGluZSA4NjggInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA4NzAgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgVygpOyBEUihBWCk7IFNNKEJDLCBJTU1VKDIpKTsKLSAKLSAgICAgICAgIH0KLUBAIC00MjIyLDcgKzQyMjQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJ4b3IJJTAsICMlMSIpOwotLSNsaW5lIDEyNzEgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAxMjczICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKHhvcik7IERNKE5vbmUsIFNBRERSKTsgU0MoSU1NVSgxKSk7IEZ6OwotIAotICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC00MjM5LDcgKzQyNDEsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJ4b3IJJTAsICUxIik7Ci0tI2xpbmUgMTI2OCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEyNzAgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoeG9yKTsgRFIoQSk7IFNNKE5vbmUsIFNBRERSKTsgRno7Ci0gCi0gICAgICAgICB9Ci1AQCAtNDI1NCw3ICs0MjU2LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgieG9yCSUwLCAjJTEiKTsKLS0jbGluZSAxMjU5ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTI2MSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRCh4b3IpOyBEUihBKTsgU0MoSU1NVSgxKSk7IEZ6OwotIAotICAgICAgICAgfQotQEAgLTQyNjksNyArNDI3MSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoInhvcgklMCwgJWUxIik7Ci0tI2xpbmUgMTI0NyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEyNDkgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoeG9yKTsgRFIoQSk7IFNNKEhMLCAwKTsgRno7Ci0gCi0gICAgICAgICB9Ci1AQCAtNDI4NCw3ICs0Mjg2LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgieG9yCSUwLCAlZWExIik7Ci0tI2xpbmUgMTI1MyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEyNTUgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoeG9yKTsgRFIoQSk7IFNNKEhMLCBJTU1VKDEpKTsgRno7Ci0gCi0gICAgICAgICB9Ci1AQCAtNDI5OSw3ICs0MzAxLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgieG9yCSUwLCAlZSExIik7Ci0tI2xpbmUgMTI0NCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEyNDYgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoeG9yKTsgRFIoQSk7IFNNKE5vbmUsIElNTVUoMikpOyBGejsKLSAKLSAgICAgICAgIH0KLUBAIC00MzE0LDcgKzQzMTYsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgIGNhc2UgMHg4NzoKLSAgICAgICAgIHsKLSAgICAgICAgICAgLyoqIDEwMDAgMHJlZwkJCWluYwklMAkJCQkqLwotLSNsaW5lIDU4NyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDU4OSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBpbnQgcmVnIEFVID0gb3BbMF0gJiAweDA3OwotICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgewotQEAgLTQzMjQsNyArNDMyNiw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgIHByaW50ZiAoIiAgcmVnID0gMHgleFxuIiwgcmVnKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiaW5jCSUwIik7Ci0tI2xpbmUgNTg3ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNTg5ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKGFkZCk7IERSQihyZWcpOyBTQygxKTsgRnphOwotIAotICAgICAgICAgfQotQEAgLTQzMzksNyArNDM0MSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdgklMCwgJWVhMSIpOwotLSNsaW5lIDY2NiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDY2OCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBEUihBKTsgU00oU1AsIElNTVUoMSkpOwotIAotICAgICAgICAgfQotQEAgLTQzNTQsNyArNDM1Niw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdgklMCwgJWUxIik7Ci0tI2xpbmUgNjQ4ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNjUwICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERSKEEpOyBTTShERSwgMCk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNDM2OSw3ICs0MzcxLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92CSUwLCAlZWExIik7Ci0tI2xpbmUgNjUxICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNjUzICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERSKEEpOyBTTShERSwgSU1NVSgxKSk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNDM4NCw3ICs0Mzg2LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92CSUwLCAlZTEiKTsKLS0jbGluZSA2NTQgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA2NTYgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRFIoQSk7IFNNKEhMLCAwKTsKLSAKLSAgICAgICAgIH0KLUBAIC00Mzk5LDcgKzQ0MDEsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3YJJTAsICVlYTEiKTsKLS0jbGluZSA2NTcgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA2NTkgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRFIoQSk7IFNNKEhMLCBJTU1VKDEpKTsKLSAKLSAgICAgICAgIH0KLUBAIC00NDE0LDcgKzQ0MTYsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3YJJTAsICUxIik7Ci0tI2xpbmUgNjkwICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNjkyICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERSKEEpOyBTTShOb25lLCBTQUREUik7Ci0gCi0gICAgICAgICB9Ci1AQCAtNDQyOSw3ICs0NDMxLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92CSUwLCAlczEiKTsKLS0jbGluZSA2ODcgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA2ODkgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRFIoQSk7IFNNKE5vbmUsIFNGUik7Ci0gCi0gICAgICAgICB9Ci1AQCAtNDQ0NCw3ICs0NDQ2LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92CSUwLCAlZSExIik7Ci0tI2xpbmUgNjQ1ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNjQ3ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERSKEEpOyBTTShOb25lLCBJTU1VKDIpKTsKLSAKLSAgICAgICAgIH0KLUBAIC00NDU5LDcgKzQ0NjEsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgIGNhc2UgMHg5NzoKLSAgICAgICAgIHsKLSAgICAgICAgICAgLyoqIDEwMDEgMHJlZwkJCWRlYwklMAkJCQkqLwotLSNsaW5lIDU1NCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDU1NiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBpbnQgcmVnIEFVID0gb3BbMF0gJiAweDA3OwotICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgewotQEAgLTQ0NjksNyArNDQ3MSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgIHByaW50ZiAoIiAgcmVnID0gMHgleFxuIiwgcmVnKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiZGVjCSUwIik7Ci0tI2xpbmUgNTU0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNTU2ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKHN1Yik7IERSQihyZWcpOyBTQygxKTsgRnphOwotIAotICAgICAgICAgfQotQEAgLTQ0ODQsNyArNDQ4Niw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdgklYTAsICUxIik7Ci0tI2xpbmUgNjQyICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNjQ0ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERNKFNQLCBJTU1VKDEpKTsgU1IoQSk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNDQ5OSw3ICs0NTAxLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92CSVlMCwgJTEiKTsKLS0jbGluZSA2MTUgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA2MTcgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRE0oREUsIDApOyBTUihBKTsKLSAKLSAgICAgICAgIH0KLUBAIC00NTE0LDcgKzQ1MTYsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3YJJWVhMCwgJTEiKTsKLS0jbGluZSA2MjEgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA2MjMgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRE0oREUsIElNTVUoMSkpOyBTUihBKTsKLSAKLSAgICAgICAgIH0KLUBAIC00NTI5LDcgKzQ1MzEsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3YJJWUwLCAlMSIpOwotLSNsaW5lIDYyNCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDYyNiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBETShITCwgMCk7IFNSKEEpOwotIAotICAgICAgICAgfQotQEAgLTQ1NDQsNyArNDU0Niw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdgklZWEwLCAlMSIpOwotLSNsaW5lIDYzMyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDYzNSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBETShITCwgSU1NVSgxKSk7IFNSKEEpOwotIAotICAgICAgICAgfQotQEAgLTQ1NTksNyArNDU2MSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdgklMCwgJTEiKTsKLS0jbGluZSA3NDcgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA3NDkgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRE0oTm9uZSwgU0FERFIpOyBTUihBKTsKLSAKLSAgICAgICAgIH0KLUBAIC00NTc0LDcgKzQ1NzYsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3YJJXMwLCAlMSIpOwotLSNsaW5lIDc4MCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDc4MiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBETShOb25lLCBTRlIpOyBTUihBKTsKLSAKLSAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi1AQCAtNDU5MSw3ICs0NTkzLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92CSVlITAsICUxIik7Ci0tI2xpbmUgNjEyICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNjE0ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERNKE5vbmUsIElNTVUoMikpOyBTUihBKTsKLSAKLSAgICAgICAgIH0KLUBAIC00NjA2LDcgKzQ2MDgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJpbmMJJWUhMCIpOwotLSNsaW5lIDU4MSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDU4MyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChhZGQpOyBETShOb25lLCBJTU1VKDIpKTsgU0MoMSk7IEZ6YTsKLSAKLSAgICAgICAgIH0KLUBAIC00NjE3LDcgKzQ2MTksNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgIGNhc2UgMHhhNzoKLSAgICAgICAgIHsKLSAgICAgICAgICAgLyoqIDEwMTAgMHJnMQkJCWluY3cJJTAJCQkJKi8KLS0jbGluZSA2MDEgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA2MDMgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgaW50IHJnIEFVID0gKG9wWzBdID4+IDEpICYgMHgwMzsKLSAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgIHsKLUBAIC00NjI3LDcgKzQ2MjksNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICBwcmludGYgKCIgIHJnID0gMHgleFxuIiwgcmcpOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJpbmN3CSUwIik7Ci0tI2xpbmUgNjAxICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNjAzICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKGFkZCk7IFcoKTsgRFJXKHJnKTsgU0MoMSk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNDY0Miw3ICs0NjQ0LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiaW5jdwklZSEwIik7Ci0tI2xpbmUgNTk1ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNTk3ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKGFkZCk7IFcoKTsgRE0oTm9uZSwgSU1NVSgyKSk7IFNDKDEpOwotIAotICAgICAgICAgfQotQEAgLTQ2NTcsNyArNDY1OSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImluYwklMCIpOwotLSNsaW5lIDU5MCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDU5MiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChhZGQpOyBETShOb25lLCBTQUREUik7IFNDKDEpOyBGemE7Ci0gCi0gICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTQ2NzQsNyArNDY3Niw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImluY3cJJTAiKTsKLS0jbGluZSA2MDQgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA2MDYgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoYWRkKTsgVygpOyBETShOb25lLCBTQUREUik7IFNDKDEpOwotIAotICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC00NjkxLDcgKzQ2OTMsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3Z3CSUwLCAlYTEiKTsKLS0jbGluZSA4NTAgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA4NTIgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgVygpOyBEUihBWCk7IFNNKFNQLCBJTU1VKDEpKTsKLSAKLSAgICAgICAgIH0KLUBAIC00NzA2LDcgKzQ3MDgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3Z3CSUwLCAlZTEiKTsKLS0jbGluZSA4MzggInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA4NDAgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgVygpOyBEUihBWCk7IFNNKERFLCAwKTsKLSAKLSAgICAgICAgIH0KLUBAIC00NzIxLDcgKzQ3MjMsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3Z3CSUwLCAlZWExIik7Ci0tI2xpbmUgODQxICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgODQzICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IFcoKTsgRFIoQVgpOyBTTShERSwgSU1NVSgxKSk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNDczNiw3ICs0NzM4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92dwklMCwgJWUxIik7Ci0tI2xpbmUgODQ0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgODQ2ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IFcoKTsgRFIoQVgpOyBTTShITCwgMCk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNDc1MSw3ICs0NzUzLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92dwklMCwgJWVhMSIpOwotLSNsaW5lIDg0NyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDg0OSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBXKCk7IERSKEFYKTsgU00oSEwsIElNTVUoMSkpOwotIAotICAgICAgICAgfQotQEAgLTQ3NjYsNyArNDc2OCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdncJJTAsICUxIik7Ci0tI2xpbmUgODgwICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgODgyICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IFcoKTsgRFIoQVgpOyBTTShOb25lLCBTQUREUik7Ci0gCi0gICAgICAgICB9Ci1AQCAtNDc4MSw3ICs0NzgzLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92dwklMCwgJXMxIik7Ci0tI2xpbmUgODgzICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgODg1ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IFcoKTsgRFIoQVgpOyBTTShOb25lLCBTRlIpOwotIAotICAgICAgICAgfQotQEAgLTQ3OTYsNyArNDc5OCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdncJJTAsICVlITEiKTsKLS0jbGluZSA4MzQgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA4MzYgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgVygpOyBEUihBWCk7IFNNKE5vbmUsIElNTVUoMikpOwotIAotIAotQEAgLTQ4MTIsNyArNDgxNCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImRlYwklZSEwIik7Ci0tI2xpbmUgNTQ4ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNTUwICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKHN1Yik7IERNKE5vbmUsIElNTVUoMikpOyBTQygxKTsgRnphOwotIAotICAgICAgICAgfQotQEAgLTQ4MjMsNyArNDgyNSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgY2FzZSAweGI3OgotICAgICAgICAgewotICAgICAgICAgICAvKiogMTAxMSAwcmcxIAkJCWRlY3cJJTAJCQkJKi8KLS0jbGluZSA1NjggInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA1NzAgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgaW50IHJnIEFVID0gKG9wWzBdID4+IDEpICYgMHgwMzsKLSAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgIHsKLUBAIC00ODMzLDcgKzQ4MzUsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICBwcmludGYgKCIgIHJnID0gMHgleFxuIiwgcmcpOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJkZWN3CSUwIik7Ci0tI2xpbmUgNTY4ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNTcwICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKHN1Yik7IFcoKTsgRFJXKHJnKTsgU0MoMSk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNDg0OCw3ICs0ODUwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiZGVjdwklZSEwIik7Ci0tI2xpbmUgNTYyICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNTY0ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKHN1Yik7IFcoKTsgRE0oTm9uZSwgSU1NVSgyKSk7IFNDKDEpOwotIAotICAgICAgICAgfQotQEAgLTQ4NjMsNyArNDg2NSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImRlYwklMCIpOwotLSNsaW5lIDU1NyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDU1OSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChzdWIpOyBETShOb25lLCBTQUREUik7IFNDKDEpOyBGemE7Ci0gCi0gICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTQ4ODAsNyArNDg4Miw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImRlY3cJJTAiKTsKLS0jbGluZSA1NzEgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA1NzMgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoc3ViKTsgVygpOyBETShOb25lLCBTQUREUik7IFNDKDEpOwotIAotICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC00ODk3LDcgKzQ4OTksNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3Z3CSVhMCwgJTEiKTsKLS0jbGluZSA4MzEgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA4MzMgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgVygpOyBETShTUCwgSU1NVSgxKSk7IFNSKEFYKTsKLSAKLSAgICAgICAgIH0KLUBAIC00OTEyLDcgKzQ5MTQsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3Z3CSVlMCwgJTEiKTsKLS0jbGluZSA4MTkgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA4MjEgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgVygpOyBETShERSwgMCk7IFNSKEFYKTsKLSAKLSAgICAgICAgIH0KLUBAIC00OTI3LDcgKzQ5MjksNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3Z3CSVlYTAsICUxIik7Ci0tI2xpbmUgODIyICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgODI0ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IFcoKTsgRE0oREUsIElNTVUoMSkpOyBTUihBWCk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNDk0Miw3ICs0OTQ0LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92dwklZTAsICUxIik7Ci0tI2xpbmUgODI1ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgODI3ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IFcoKTsgRE0oSEwsIDApOyBTUihBWCk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNDk1Nyw3ICs0OTU5LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92dwklZWEwLCAlMSIpOwotLSNsaW5lIDgyOCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDgzMCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBXKCk7IERNKEhMLCBJTU1VKDEpKTsgU1IoQVgpOwotIAotICAgICAgICAgfQotQEAgLTQ5NzIsNyArNDk3NCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdncJJTAsICUxIik7Ci0tI2xpbmUgODk1ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgODk3ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IFcoKTsgRE0oTm9uZSwgU0FERFIpOyBTUihBWCk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNDk4Nyw3ICs0OTg5LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92dwklczAsICUxIik7Ci0tI2xpbmUgOTAxICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgOTAzICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IFcoKTsgRE0oTm9uZSwgU0ZSKTsgU1IoQVgpOwotIAotICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC01MDA0LDcgKzUwMDYsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3Z3CSVlITAsICUxIik7Ci0tI2xpbmUgODE2ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgODE4ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IFcoKTsgRE0oTm9uZSwgSU1NVSgyKSk7IFNSKEFYKTsKLSAKLSAgICAgICAgIH0KLUBAIC01MDE1LDcgKzUwMTcsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgIGNhc2UgMHhjNjoKLSAgICAgICAgIHsKLSAgICAgICAgICAgLyoqIDExMDAgMHJnMAkJCXBvcAklMAkJCQkqLwotLSNsaW5lIDk4NiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDk4OCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBpbnQgcmcgQVUgPSAob3BbMF0gPj4gMSkgJiAweDAzOwotICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgewotQEAgLTUwMjUsNyArNTAyNyw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgIHByaW50ZiAoIiAgcmcgPSAweCV4XG4iLCByZyk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoInBvcAklMCIpOwotLSNsaW5lIDk4NiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDk4OCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBXKCk7IERSVyhyZyk7IFNQT1AoKTsKLSAKLSAgICAgICAgIH0KLUBAIC01MDM2LDcgKzUwMzgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgIGNhc2UgMHhjNzoKLSAgICAgICAgIHsKLSAgICAgICAgICAgLyoqIDExMDAgMHJnMQkJCXB1c2gJJTEJCQkJKi8KLS0jbGluZSA5OTQgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA5OTYgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgaW50IHJnIEFVID0gKG9wWzBdID4+IDEpICYgMHgwMzsKLSAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgIHsKLUBAIC01MDQ2LDcgKzUwNDgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICBwcmludGYgKCIgIHJnID0gMHgleFxuIiwgcmcpOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJwdXNoCSUxIik7Ci0tI2xpbmUgOTk0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgOTk2ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IFcoKTsgRFBVU0goKTsgU1JXKHJnKTsKLSAKLSAgICAgICAgIH0KLUBAIC01MDYxLDcgKzUwNjMsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3YJJWEwLCAjJTEiKTsKLS0jbGluZSA2MzkgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA2NDEgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRE0oU1AsIElNTVUoMSkpOyBTQyhJTU1VKDEpKTsKLSAKLSAgICAgICAgIH0KLUBAIC01MDc2LDcgKzUwNzgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3Z3CSUwLCAjJTEiKTsKLS0jbGluZSA4OTIgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA4OTQgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgVygpOyBETShOb25lLCBTQUREUik7IFNDKElNTVUoMikpOwotIAotICAgICAgICAgfQotQEAgLTUwOTEsNyArNTA5Myw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdgklZWEwLCAjJTEiKTsKLS0jbGluZSA2MTggInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA2MjAgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRE0oREUsIElNTVUoMSkpOyBTQyhJTU1VKDEpKTsKLSAKLSAgICAgICAgIH0KLUBAIC01MTA2LDcgKzUxMDgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3Z3CSVzMCwgIyUxIik7Ci0tI2xpbmUgODk4ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgOTAwICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IFcoKTsgRE0oTm9uZSwgU0ZSKTsgU0MoSU1NVSgyKSk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNTEyMSw3ICs1MTIzLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92CSVlYTAsICMlMSIpOwotLSNsaW5lIDYzMCAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDYzMiAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBETShITCwgSU1NVSgxKSk7IFNDKElNTVUoMSkpOwotIAotICAgICAgICAgfQotQEAgLTUxMzYsNyArNTEzOCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdgklMCwgIyUxIik7Ci0tI2xpbmUgNzQ0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNzQ2ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERNKE5vbmUsIFNBRERSKTsgU0MoSU1NVSgxKSk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNTE1MSw3ICs1MTUzLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92CSVzMCwgIyUxIik7Ci0tI2xpbmUgNzUwICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNzUyICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIG9wMCA9IFNGUjsKLSAgICAgICAgICAgb3AxID0gSU1NVSgxKTsKLSAgICAgICAgICAgSUQobW92KTsgRE0oTm9uZSwgb3AwKTsgU0Mob3AxKTsKLUBAIC01MTkzLDcgKzUxOTUsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3YJJWUhMCwgIyUxIik7Ci0tI2xpbmUgNjA5ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNjExICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERNKE5vbmUsIElNTVUoMikpOyBTQyhJTU1VKDEpKTsKLSAKLSAgICAgICAgIH0KLUBAIC01MjA0LDcgKzUyMDYsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgIGNhc2UgMHhkMzoKLSAgICAgICAgIHsKLSAgICAgICAgICAgLyoqIDExMDEgMDByZwkJCWNtcDAJJTAJCQkJKi8KLS0jbGluZSA1MTggInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA1MjAgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgaW50IHJnIEFVID0gb3BbMF0gJiAweDAzOwotICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgewotQEAgLTUyMTQsNyArNTIxNiw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgIHByaW50ZiAoIiAgcmcgPSAweCV4XG4iLCByZyk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImNtcDAJJTAiKTsKLS0jbGluZSA1MTggInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA1MjAgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoY21wKTsgRFJCKHJnKTsgU0MoMCk7IEZ6YWM7Ci0gCi0gICAgICAgICB9Ci1AQCAtNTIyOSw3ICs1MjMxLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiY21wMAklMCIpOwotLSNsaW5lIDUyMSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDUyMyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChjbXApOyBETShOb25lLCBTQUREUik7IFNDKDApOyBGemFjOwotIAotICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC01MjQ2LDcgKzUyNDgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJjbXAwCSVlITAiKTsKLS0jbGluZSA1MTUgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA1MTcgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoY21wKTsgRE0oTm9uZSwgSU1NVSgyKSk7IFNDKDApOyBGemFjOwotIAotICAgICAgICAgfQotQEAgLTUyNjEsNyArNTI2Myw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm11bHUJeCIpOwotLSNsaW5lIDkwNiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDkwOCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtdWx1KTsKLSAKLSAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi1AQCAtNTI3OCw3ICs1MjgwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgicmV0Iik7Ci0tI2xpbmUgMTAwMiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDEwMDQgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQocmV0KTsKLSAKLSAgICAgICAgIH0KLUBAIC01MjkzLDcgKzUyOTUsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3YJJTAsICUxIik7Ci0tI2xpbmUgNzExICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNzEzICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERSKFgpOyBTTShOb25lLCBTQUREUik7Ci0gCi0gICAgICAgICB9Ci1AQCAtNTMwOCw3ICs1MzEwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92CSUwLCAlZSExIik7Ci0tI2xpbmUgNzA4ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNzEwICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERSKFgpOyBTTShOb25lLCBJTU1VKDIpKTsKLSAKLSAgICAgICAgIH0KLUBAIC01MzE4LDcgKzUzMjAsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgIGNhc2UgMHhmYToKLSAgICAgICAgIHsKLSAgICAgICAgICAgLyoqIDExcmEgMTAxMAkJCW1vdncJJTAsICUxCQkJCSovCi0tI2xpbmUgODg5ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgODkxICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIGludCByYSBBVSA9IChvcFswXSA+PiA0KSAmIDB4MDM7Ci0gICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICB7Ci1AQCAtNTMyOCw3ICs1MzMwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgcHJpbnRmICgiICByYSA9IDB4JXhcbiIsIHJhKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92dwklMCwgJTEiKTsKLS0jbGluZSA4ODkgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA4OTEgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgVygpOyBEUlcocmEpOyBTTShOb25lLCBTQUREUik7Ci0gCi0gICAgICAgICB9Ci1AQCAtNTMzOCw3ICs1MzQwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICBjYXNlIDB4ZmI6Ci0gICAgICAgICB7Ci0gICAgICAgICAgIC8qKiAxMXJhIDEwMTEJCQltb3Z3CSUwLCAlZXMhMQkJCSovCi0tI2xpbmUgODg2ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgODg4ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIGludCByYSBBVSA9IChvcFswXSA+PiA0KSAmIDB4MDM7Ci0gICAgICAgICAgIGlmICh0cmFjZSkKLSAgICAgICAgICAgICB7Ci1AQCAtNTM0OCw3ICs1MzUwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgcHJpbnRmICgiICByYSA9IDB4JXhcbiIsIHJhKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92dwklMCwgJWVzITEiKTsKLS0jbGluZSA4ODYgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA4ODggInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgVygpOyBEUlcocmEpOyBTTShOb25lLCBJTU1VKDIpKTsKLSAKLSAgICAgICAgIH0KLUBAIC01MzYzLDcgKzUzNjUsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJiYwkkJWEwIik7Ci0tI2xpbmUgMzM0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMzM2ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKGJyYW5jaF9jb25kKTsgREMocGMrSU1NUygxKSsyKTsgU1IoTm9uZSk7IENPTkQoQyk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNTM3OCw3ICs1MzgwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiYnoJJCVhMCIpOwotLSNsaW5lIDM0NiAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDM0OCAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChicmFuY2hfY29uZCk7IERDKHBjK0lNTVMoMSkrMik7IFNSKE5vbmUpOyBDT05EKFopOwotIAotICAgICAgICAgfQotQEAgLTUzOTMsNyArNTM5NSw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImJuYwkkJWEwIik7Ci0tI2xpbmUgMzM3ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMzM5ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKGJyYW5jaF9jb25kKTsgREMocGMrSU1NUygxKSsyKTsgU1IoTm9uZSk7IENPTkQoTkMpOwotIAotICAgICAgICAgfQotQEAgLTU0MDgsNyArNTQxMCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImJuegkkJWEwIik7Ci0tI2xpbmUgMzQ5ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMzUxICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKGJyYW5jaF9jb25kKTsgREMocGMrSU1NUygxKSsyKTsgU1IoTm9uZSk7IENPTkQoTlopOwotIAotICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC01NDIxLDcgKzU0MjMsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgIGNhc2UgMHhlMzoKLSAgICAgICAgIHsKLSAgICAgICAgICAgLyoqIDExMTAgMDByZwkJCW9uZWIJJTAJCQkJKi8KLS0jbGluZSA5MjQgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA5MjYgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgaW50IHJnIEFVID0gb3BbMF0gJiAweDAzOwotICAgICAgICAgICBpZiAodHJhY2UpCi0gICAgICAgICAgICAgewotQEAgLTU0MzEsNyArNTQzMyw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgIHByaW50ZiAoIiAgcmcgPSAweCV4XG4iLCByZyk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm9uZWIJJTAiKTsKLS0jbGluZSA5MjQgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA5MjYgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRFJCKHJnKTsgU0MoMSk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNTQ0Niw3ICs1NDQ4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgib25lYgklMCIpOwotLSNsaW5lIDkyNyAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDkyOSAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBETShOb25lLCBTQUREUik7IFNDKDEpOwotIAotICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC01NDYzLDcgKzU0NjUsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJvbmViCSVlITAiKTsKLS0jbGluZSA5MjEgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA5MjMgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRE0oTm9uZSwgSU1NVSgyKSk7IFNDKDEpOwotIAotICAgICAgICAgfQotQEAgLTU0NzgsNyArNTQ4MCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm9uZXcJJTAiKTsKLS0jbGluZSA5MzIgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA5MzQgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRFIoQVgpOyBTQygxKTsKLSAKLSAgICAgICAgIH0KLUBAIC01NDkzLDcgKzU0OTUsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJvbmV3CSUwIik7Ci0tI2xpbmUgOTM1ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgOTM3ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERSKEJDKTsgU0MoMSk7Ci0gCi0gICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotQEAgLTU1MTAsNyArNTUxMiw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoIm1vdgklMCwgJTEiKTsKLS0jbGluZSA2OTkgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA3MDEgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRFIoQik7IFNNKE5vbmUsIFNBRERSKTsKLSAKLSAgICAgICAgIH0KLUBAIC01NTI1LDcgKzU1MjcsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3YJJTAsICVlITEiKTsKLS0jbGluZSA2OTMgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA2OTUgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRFIoQik7IFNNKE5vbmUsIElNTVUoMikpOwotIAotICAgICAgICAgfQotQEAgLTU1NDAsNyArNTU0Miw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImJyCSElIWEwIik7Ci0tI2xpbmUgMzY4ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMzcwICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKGJyYW5jaCk7IERDKElNTVUoMykpOwotIAotICAgICAgICAgfQotQEAgLTU1NTUsNyArNTU1Nyw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImJyCSUhYTAiKTsKLS0jbGluZSAzNzEgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAzNzMgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoYnJhbmNoKTsgREMoSU1NVSgyKSk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNTU3MCw3ICs1NTcyLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiYnIJJCUhYTAiKTsKLS0jbGluZSAzNzQgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSAzNzYgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoYnJhbmNoKTsgREMocGMrSU1NUygyKSszKTsKLSAKLSAgICAgICAgIH0KLUBAIC01NTg1LDcgKzU1ODcsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJicgkkJWEwIik7Ci0tI2xpbmUgMzc3ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMzc5ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKGJyYW5jaCk7IERDKHBjK0lNTVMoMSkrMik7Ci0gCi0gICAgICAgICB9Ci1AQCAtNTU5Niw3ICs1NTk4LDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICBjYXNlIDB4ZjM6Ci0gICAgICAgICB7Ci0gICAgICAgICAgIC8qKiAxMTExIDAwcmcJCQljbHJiCSUwCQkJCSovCi0tI2xpbmUgNDY0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNDY2ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIGludCByZyBBVSA9IG9wWzBdICYgMHgwMzsKLSAgICAgICAgICAgaWYgKHRyYWNlKQotICAgICAgICAgICAgIHsKLUBAIC01NjA2LDcgKzU2MDgsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICBwcmludGYgKCIgIHJnID0gMHgleFxuIiwgcmcpOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJjbHJiCSUwIik7Ci0tI2xpbmUgNDY0ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNDY2ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERSQihyZyk7IFNDKDApOwotIAotICAgICAgICAgfQotQEAgLTU2MjEsNyArNTYyMyw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImNscmIJJTAiKTsKLS0jbGluZSA0NjcgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA0NjkgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQobW92KTsgRE0oTm9uZSwgU0FERFIpOyBTQygwKTsKLSAKLSAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi1AQCAtNTYzOCw3ICs1NjQwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiY2xyYgklZSEwIik7Ci0tI2xpbmUgNDYxICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNDYzICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERNKE5vbmUsIElNTVUoMikpOyBTQygwKTsKLSAKLSAgICAgICAgIH0KLUBAIC01NjUzLDcgKzU2NTUsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJjbHJ3CSUwIik7Ci0tI2xpbmUgNDcyICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNDc0ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERSKEFYKTsgU0MoMCk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNTY2OCw3ICs1NjcwLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgiY2xydwklMCIpOwotLSNsaW5lIDQ3NSAicmw3OC1kZWNvZGUub3BjIgotKyNsaW5lIDQ3NyAicmw3OC1kZWNvZGUub3BjIgotICAgICAgICAgICBJRChtb3YpOyBEUihCQyk7IFNDKDApOwotIAotICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLUBAIC01Njg1LDcgKzU2ODcsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJtb3YJJTAsICUxIik7Ci0tI2xpbmUgNzA1ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNzA3ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERSKEMpOyBTTShOb25lLCBTQUREUik7Ci0gCi0gICAgICAgICB9Ci1AQCAtNTcwMCw3ICs1NzAyLDcgQEAgcmw3OF9kZWNvZGVfb3Bjb2RlICh1bnNpZ25lZCBsb25nIHBjIEFVLAotICAgICAgICAgICAgICAgICAgICAgIG9wWzBdKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIFNZTlRBWCgibW92CSUwLCAlZSExIik7Ci0tI2xpbmUgNzAyICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNzA0ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKG1vdik7IERSKEMpOyBTTShOb25lLCBJTU1VKDIpKTsKLSAKLSAgICAgICAgIH0KLUBAIC01NzE1LDcgKzU3MTcsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJjYWxsCSElIWEwIik7Ci0tI2xpbmUgNDIxICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgNDIzICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKGNhbGwpOyBEQyhJTU1VKDMpKTsKLSAKLSAgICAgICAgIH0KLUBAIC01NzMwLDcgKzU3MzIsNyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJjYWxsCSUhYTAiKTsKLS0jbGluZSA0MjQgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA0MjYgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoY2FsbCk7IERDKElNTVUoMikpOwotIAotICAgICAgICAgfQotQEAgLTU3NDUsNyArNTc0Nyw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAgICAgICAgICAgICAgICAgICAgICBvcFswXSk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICBTWU5UQVgoImNhbGwJJCUhYTAiKTsKLS0jbGluZSA0MjcgInJsNzgtZGVjb2RlLm9wYyIKLSsjbGluZSA0MjkgInJsNzgtZGVjb2RlLm9wYyIKLSAgICAgICAgICAgSUQoY2FsbCk7IERDKHBjK0lNTVMoMikrMyk7Ci0gCi0gICAgICAgICB9Ci1AQCAtNTc2MCwxMyArNTc2MiwxMyBAQCBybDc4X2RlY29kZV9vcGNvZGUgKHVuc2lnbmVkIGxvbmcgcGMgQVUsCi0gICAgICAgICAgICAgICAgICAgICAgb3BbMF0pOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgU1lOVEFYKCJicmsxIik7Ci0tI2xpbmUgMzg1ICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMzg3ICJybDc4LWRlY29kZS5vcGMiCi0gICAgICAgICAgIElEKGJyZWFrKTsKLSAKLSAgICAgICAgIH0KLSAgICAgICBicmVhazsKLSAgIH0KLS0jbGluZSAxMjkwICJybDc4LWRlY29kZS5vcGMiCi0rI2xpbmUgMTI5MiAicmw3OC1kZWNvZGUub3BjIgotIAotICAgcmV0dXJuIHJsNzgtPm5fYnl0ZXM7Ci0gfQotZGlmZiAtLWdpdCBhL29wY29kZXMvcmw3OC1kZWNvZGUub3BjIGIvb3Bjb2Rlcy9ybDc4LWRlY29kZS5vcGMKLWluZGV4IDYyMTJmMDguLmIyNWU0NDEgMTAwNjQ0Ci0tLS0gYS9vcGNvZGVzL3JsNzgtZGVjb2RlLm9wYwotKysrIGIvb3Bjb2Rlcy9ybDc4LWRlY29kZS5vcGMKLUBAIC01MCw3ICs1MCw5IEBAIHR5cGVkZWYgc3RydWN0Ci0gI2RlZmluZSBXKCkgcmw3OC0+c2l6ZSA9IFJMNzhfV29yZAotIAotICNkZWZpbmUgQVUgQVRUUklCVVRFX1VOVVNFRAotLSNkZWZpbmUgR0VUQllURSgpIChsZC0+b3AgW2xkLT5ybDc4LT5uX2J5dGVzKytdID0gbGQtPmdldGJ5dGUgKGxkLT5wdHIpKQotKwotKyNkZWZpbmUgT1BfQlVGX0xFTiAyMAotKyNkZWZpbmUgR0VUQllURSgpIChsZC0+cmw3OC0+bl9ieXRlcyA8IChPUF9CVUZfTEVOIC0gMSkgPyBsZC0+b3AgW2xkLT5ybDc4LT5uX2J5dGVzKytdID0gbGQtPmdldGJ5dGUgKGxkLT5wdHIpOiAwKQotICNkZWZpbmUgQiAoKHVuc2lnbmVkIGxvbmcpIEdFVEJZVEUoKSkKLSAKLSAjZGVmaW5lIFNZTlRBWCh4KSBybDc4LT5zeW50YXggPSB4Ci1AQCAtMTY4LDcgKzE3MCw3IEBAIHJsNzhfZGVjb2RlX29wY29kZSAodW5zaWduZWQgbG9uZyBwYyBBVSwKLSAJCSAgUkw3OF9EaXNfSXNhIGlzYSkKLSB7Ci0gICBMb2NhbERhdGEgbGRzLCAqIGxkID0gJmxkczsKLS0gIHVuc2lnbmVkIGNoYXIgb3BfYnVmWzIwXSA9IHswfTsKLSsgIHVuc2lnbmVkIGNoYXIgb3BfYnVmW09QX0JVRl9MRU5dID0gezB9OwotICAgdW5zaWduZWQgY2hhciAqb3AgPSBvcF9idWY7Ci0gICBpbnQgb3AwLCBvcDE7Ci0gCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTc1Mi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTc1Mi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjYzYTk5My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk3NTIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMDggKzAsMCBAQAotRnJvbSBjNTNkMmU2ZDc0NGRhMDAwYWFhZmUwMjM3YmNlZDA5MGFhYjYyODE4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTmljayBDbGlmdG9uIDxuaWNrY0ByZWRoYXQuY29tPgotRGF0ZTogV2VkLCAxNCBKdW4gMjAxNyAxMToyNzoxNSArMDEwMAotU3ViamVjdDogW1BBVENIXSBGaXggcG90ZW50aWFsIGFkZHJlc3MgdmlvbGF0aW9ucyB3aGVuIHByb2Nlc3NpbmcgYSBjb3JydXB0Ci0gQWxwaGEgVk1BIGJpbmFyeS4KLQotCVBSIGJpbnV0aWxzLzIxNTg5Ci0JKiB2bXMtYWxwaGEuYyAoX2JmZF92bXNfZ2V0X3ZhbHVlKTogQWRkIGFuIGV4dHJhIHBhcmFtZXRlciAtIHRoZQotCW1heGltdW0gdmFsdWUgZm9yIHRoZSBhc2NpYyBwb2ludGVyLiAgQ2hlY2sgdGhhdCBuYW1lIHByb2Nlc3NpbmcKLQlkb2VzIG5vdCByZWFkIGJleW9uZCB0aGlzIHZhbHVlLgotCShfYmZkX3Ztc19zbHVycF9ldGlyKTogQWRkIGNoZWNrcyBmb3IgYXR0ZW1wdHMgdG8gcmVhZCBiZXlvbmQgdGhlCi0JZW5kIG9mIGV0aXIgcmVjb3JkLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE3LTk3NTIKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBiZmQvQ2hhbmdlTG9nICAgfCAgOSArKysrKysrKysKLSBiZmQvdm1zLWFscGhhLmMgfCA1MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDUwIGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQotCi1JbmRleDogZ2l0L2JmZC9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvQ2hhbmdlTG9nCi0rKysgZ2l0L2JmZC9DaGFuZ2VMb2cKLUBAIC05LDYgKzksMTUgQEAKLSAKLSAyMDE3LTA2LTE0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotICAKLSsgICAgICAgUFIgYmludXRpbHMvMjE1ODkKLSsgICAgICAgKiB2bXMtYWxwaGEuYyAoX2JmZF92bXNfZ2V0X3ZhbHVlKTogQWRkIGFuIGV4dHJhIHBhcmFtZXRlciAtIHRoZQotKyAgICAgICBtYXhpbXVtIHZhbHVlIGZvciB0aGUgYXNjaWMgcG9pbnRlci4gIENoZWNrIHRoYXQgbmFtZSBwcm9jZXNzaW5nCi0rICAgICAgIGRvZXMgbm90IHJlYWQgYmV5b25kIHRoaXMgdmFsdWUuCi0rICAgICAgIChfYmZkX3Ztc19zbHVycF9ldGlyKTogQWRkIGNoZWNrcyBmb3IgYXR0ZW1wdHMgdG8gcmVhZCBiZXlvbmQgdGhlCi0rICAgICAgIGVuZCBvZiBldGlyIHJlY29yZC4KLSsKLSsyMDE3LTA2LTE0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotKyAKLSAgICAgICAgUFIgYmludXRpbHMvMjE1NzgKLSAgICAgICAgKiBlbGYzMi1zaC5jIChzaF9lbGZfc2V0X21hY2hfZnJvbV9mbGFncyk6IEZpeCBjaGVjayBmb3IgaW52YWxpZAotICAgICAgICBmbGFnIHZhbHVlLgotSW5kZXg6IGdpdC9iZmQvdm1zLWFscGhhLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvdm1zLWFscGhhLmMKLSsrKyBnaXQvYmZkL3Ztcy1hbHBoYS5jCi1AQCAtMTQ1Niw3ICsxNDU2LDcgQEAgZHN0X3JldHJpZXZlX2xvY2F0aW9uIChiZmQgKmFiZmQsIHVuc2lnbgotIC8qIFdyaXRlIG11bHRpcGxlIGJ5dGVzIHRvIHNlY3Rpb24gaW1hZ2UuICAqLwotIAotIHN0YXRpYyBiZmRfYm9vbGVhbgotLWltYWdlX3dyaXRlIChiZmQgKmFiZmQsIHVuc2lnbmVkIGNoYXIgKnB0ciwgaW50IHNpemUpCi0raW1hZ2Vfd3JpdGUgKGJmZCAqYWJmZCwgdW5zaWduZWQgY2hhciAqcHRyLCB1bnNpZ25lZCBpbnQgc2l6ZSkKLSB7Ci0gI2lmIFZNU19ERUJVRwotICAgX2JmZF92bXNfZGVidWcgKDgsICJpbWFnZV93cml0ZSBmcm9tICglcCwgJWQpIHRvICglbGQpXG4iLCBwdHIsIHNpemUsCi1AQCAtMTYwMywxNCArMTYwMywxNiBAQCBfYmZkX3Ztc19ldGlyX25hbWUgKGludCBjbWQpCi0gI2RlZmluZSBISUdIQklUKG9wKSAoKG9wICYgMHg4MDAwMDAwMEwpID09IDB4ODAwMDAwMDBMKQotIAotIHN0YXRpYyB2b2lkCi0tX2JmZF92bXNfZ2V0X3ZhbHVlIChiZmQgKmFiZmQsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFzY2ljLAotK19iZmRfdm1zX2dldF92YWx1ZSAoYmZkICphYmZkLAotKwkJICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFzY2ljLAotKwkJICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKm1heF9hc2NpYywKLSAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBiZmRfbGlua19pbmZvICppbmZvLAotICAgICAgICAgICAgICAgICAgICAgYmZkX3ZtYSAqdm1hLAotICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGFscGhhX3Ztc19saW5rX2hhc2hfZW50cnkgKipocCkKLSB7Ci0gICBjaGFyIG5hbWVbMjU3XTsKLS0gIGludCBsZW47Ci0tICBpbnQgaTsKLSsgIHVuc2lnbmVkIGludCBsZW47Ci0rICB1bnNpZ25lZCBpbnQgaTsKLSAgIHN0cnVjdCBhbHBoYV92bXNfbGlua19oYXNoX2VudHJ5ICpoOwotIAotICAgLyogTm90IGxpbmtpbmcuICBEbyBub3QgdHJ5IHRvIHJlc29sdmUgdGhlIHN5bWJvbC4gICovCi1AQCAtMTYyMiw2ICsxNjI0LDE0IEBAIF9iZmRfdm1zX2dldF92YWx1ZSAoYmZkICphYmZkLCBjb25zdCB1bnMKLSAgICAgfQotIAotICAgbGVuID0gKmFzY2ljOwotKyAgaWYgKGFzY2ljICsgbGVuID49IG1heF9hc2NpYykKLSsgICAgewotKyAgICAgIF9iZmRfZXJyb3JfaGFuZGxlciAoXygiQ29ycnVwdCB2bXMgdmFsdWUiKSk7Ci0rICAgICAgKnZtYSA9IDA7Ci0rICAgICAgKmhwID0gTlVMTDsKLSsgICAgICByZXR1cm47Ci0rICAgIH0KLSsKLSAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykKLSAgICAgbmFtZVtpXSA9IGFzY2ljW2kgKyAxXTsKLSAgIG5hbWVbaV0gPSAwOwotQEAgLTE3NDEsNiArMTc1MSwxNSBAQCBfYmZkX3Ztc19zbHVycF9ldGlyIChiZmQgKmFiZmQsIHN0cnVjdCBiCi0gICAgICAgX2JmZF9oZXhkdW1wICg4LCBwdHIsIGNtZF9sZW5ndGggLSA0LCAwKTsKLSAjZW5kaWYKLSAKLSsgICAgICAvKiBQUiAyMTU4OTogQ2hlY2sgZm9yIGEgY29ycnVwdCBFVElSIHJlY29yZC4gICovCi0rICAgICAgaWYgKGNtZF9sZW5ndGggPCA0KQotKwl7Ci0rCWNvcnJ1cHRfZXRpcjoKLSsJICBfYmZkX2Vycm9yX2hhbmRsZXIgKF8oIkNvcnJ1cHQgRVRJUiByZWNvcmQgZW5jb3VudGVyZWQiKSk7Ci0rCSAgYmZkX3NldF9lcnJvciAoYmZkX2Vycm9yX2JhZF92YWx1ZSk7Ci0rCSAgcmV0dXJuIEZBTFNFOwotKwl9Ci0rCi0gICAgICAgc3dpdGNoIChjbWQpCi0gICAgICAgICB7Ci0gICAgICAgICAgIC8qIFN0YWNrIGdsb2JhbAotQEAgLTE3NDgsNyArMTc2Nyw3IEBAIF9iZmRfdm1zX3NsdXJwX2V0aXIgKGJmZCAqYWJmZCwgc3RydWN0IGIKLSAKLSAgICAgICAgICAgICAgc3RhY2sgMzIgYml0IHZhbHVlIG9mIHN5bWJvbCAoaGlnaCBiaXRzIHNldCB0byAwKS4gICovCi0gICAgICAgICBjYXNlIEVUSVJfX0NfU1RBX0dCTDoKLS0gICAgICAgICAgX2JmZF92bXNfZ2V0X3ZhbHVlIChhYmZkLCBwdHIsIGluZm8sICZvcDEsICZoKTsKLSsgICAgICAgICAgX2JmZF92bXNfZ2V0X3ZhbHVlIChhYmZkLCBwdHIsIG1heHB0ciwgaW5mbywgJm9wMSwgJmgpOwotICAgICAgICAgICBfYmZkX3Ztc19wdXNoIChhYmZkLCBvcDEsIGFscGhhX3Ztc19zeW1fdG9fY3R4dCAoaCkpOwotICAgICAgICAgICBicmVhazsKLSAKLUBAIC0xNzU3LDYgKzE3NzYsOCBAQCBfYmZkX3Ztc19zbHVycF9ldGlyIChiZmQgKmFiZmQsIHN0cnVjdCBiCi0gCi0gICAgICAgICAgICAgIHN0YWNrIDMyIGJpdCB2YWx1ZSwgc2lnbiBleHRlbmQgdG8gNjQgYml0LiAgKi8KLSAgICAgICAgIGNhc2UgRVRJUl9fQ19TVEFfTFc6Ci0rCSAgaWYgKHB0ciArIDQgPj0gbWF4cHRyKQotKwkgICAgZ290byBjb3JydXB0X2V0aXI7Ci0gICAgICAgICAgIF9iZmRfdm1zX3B1c2ggKGFiZmQsIGJmZF9nZXRsMzIgKHB0ciksIFJFTENfTk9ORSk7Ci0gICAgICAgICAgIGJyZWFrOwotIAotQEAgLTE3NjUsNiArMTc4Niw4IEBAIF9iZmRfdm1zX3NsdXJwX2V0aXIgKGJmZCAqYWJmZCwgc3RydWN0IGIKLSAKLSAgICAgICAgICAgICAgc3RhY2sgNjQgYml0IHZhbHVlIG9mIHN5bWJvbC4gICovCi0gICAgICAgICBjYXNlIEVUSVJfX0NfU1RBX1FXOgotKwkgIGlmIChwdHIgKyA4ID49IG1heHB0cikKLSsJICAgIGdvdG8gY29ycnVwdF9ldGlyOwotICAgICAgICAgICBfYmZkX3Ztc19wdXNoIChhYmZkLCBiZmRfZ2V0bDY0IChwdHIpLCBSRUxDX05PTkUpOwotICAgICAgICAgICBicmVhazsKLSAKLUBAIC0xNzc4LDYgKzE4MDEsOCBAQCBfYmZkX3Ztc19zbHVycF9ldGlyIChiZmQgKmFiZmQsIHN0cnVjdCBiCi0gICAgICAgICAgIHsKLSAgICAgICAgICAgICBpbnQgcHNlY3Q7Ci0gCi0rCSAgICBpZiAocHRyICsgMTIgPj0gbWF4cHRyKQotKwkgICAgICBnb3RvIGNvcnJ1cHRfZXRpcjsKLSAgICAgICAgICAgICBwc2VjdCA9IGJmZF9nZXRsMzIgKHB0cik7Ci0gICAgICAgICAgICAgaWYgKCh1bnNpZ25lZCBpbnQpIHBzZWN0ID49IFBSSVYgKHNlY3Rpb25fY291bnQpKQotICAgICAgICAgICAgICAgewotQEAgLTE4NjcsNiArMTg5Miw4IEBAIF9iZmRfdm1zX3NsdXJwX2V0aXIgKGJmZCAqYWJmZCwgc3RydWN0IGIKLSAgICAgICAgICAgewotICAgICAgICAgICAgIGludCBzaXplOwotIAotKwkgICAgaWYgKHB0ciArIDQgPj0gbWF4cHRyKQotKwkgICAgICBnb3RvIGNvcnJ1cHRfZXRpcjsKLSAgICAgICAgICAgICBzaXplID0gYmZkX2dldGwzMiAocHRyKTsKLSAgICAgICAgICAgICBfYmZkX3Ztc19wb3AgKGFiZmQsICZvcDEsICZyZWwxKTsKLSAgICAgICAgICAgICBpZiAocmVsMSAhPSBSRUxDX05PTkUpCi1AQCAtMTg3OSw3ICsxOTA2LDcgQEAgX2JmZF92bXNfc2x1cnBfZXRpciAoYmZkICphYmZkLCBzdHJ1Y3QgYgotICAgICAgICAgICAvKiBTdG9yZSBnbG9iYWw6IHdyaXRlIHN5bWJvbCB2YWx1ZQotICAgICAgICAgICAgICBhcmc6IGNzCWdsb2JhbCBzeW1ib2wgbmFtZS4gICovCi0gICAgICAgICBjYXNlIEVUSVJfX0NfU1RPX0dCTDoKLS0gICAgICAgICAgX2JmZF92bXNfZ2V0X3ZhbHVlIChhYmZkLCBwdHIsIGluZm8sICZvcDEsICZoKTsKLSsgICAgICAgICAgX2JmZF92bXNfZ2V0X3ZhbHVlIChhYmZkLCBwdHIsIG1heHB0ciwgaW5mbywgJm9wMSwgJmgpOwotICAgICAgICAgICBpZiAoaCAmJiBoLT5zeW0pCi0gICAgICAgICAgICAgewotICAgICAgICAgICAgICAgaWYgKGgtPnN5bS0+dHlwID09IEVHU0RfX0NfU1lNRykKLUBAIC0xOTAxLDcgKzE5MjgsNyBAQCBfYmZkX3Ztc19zbHVycF9ldGlyIChiZmQgKmFiZmQsIHN0cnVjdCBiCi0gICAgICAgICAgIC8qIFN0b3JlIGNvZGUgYWRkcmVzczogd3JpdGUgYWRkcmVzcyBvZiBlbnRyeSBwb2ludAotICAgICAgICAgICAgICBhcmc6IGNzCWdsb2JhbCBzeW1ib2wgbmFtZSAocHJvY2VkdXJlKS4gICovCi0gICAgICAgICBjYXNlIEVUSVJfX0NfU1RPX0NBOgotLSAgICAgICAgICBfYmZkX3Ztc19nZXRfdmFsdWUgKGFiZmQsIHB0ciwgaW5mbywgJm9wMSwgJmgpOwotKyAgICAgICAgICBfYmZkX3Ztc19nZXRfdmFsdWUgKGFiZmQsIHB0ciwgbWF4cHRyLCBpbmZvLCAmb3AxLCAmaCk7Ci0gICAgICAgICAgIGlmIChoICYmIGgtPnN5bSkKLSAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBpZiAoaC0+c3ltLT5mbGFncyAmIEVHU1lfX1ZfTk9STSkKLUBAIC0xOTQ2LDggKzE5NzMsMTAgQEAgX2JmZF92bXNfc2x1cnBfZXRpciAoYmZkICphYmZkLCBzdHJ1Y3QgYgotICAgICAgICAgICAgICBkYQlkYXRhLiAgKi8KLSAgICAgICAgIGNhc2UgRVRJUl9fQ19TVE9fSU1NOgotICAgICAgICAgICB7Ci0tICAgICAgICAgICAgaW50IHNpemU7Ci0rICAgICAgICAgICAgdW5zaWduZWQgaW50IHNpemU7Ci0gCi0rCSAgICBpZiAocHRyICsgNCA+PSBtYXhwdHIpCi0rCSAgICAgIGdvdG8gY29ycnVwdF9ldGlyOwotICAgICAgICAgICAgIHNpemUgPSBiZmRfZ2V0bDMyIChwdHIpOwotICAgICAgICAgICAgIGltYWdlX3dyaXRlIChhYmZkLCBwdHIgKyA0LCBzaXplKTsKLSAgICAgICAgICAgfQotQEAgLTE5NjAsNyArMTk4OSw3IEBAIF9iZmRfdm1zX3NsdXJwX2V0aXIgKGJmZCAqYWJmZCwgc3RydWN0IGIKLSAgICAgICAgICAgICAgc3RvcmUgZ2xvYmFsIGxvbmd3b3JkOiBzdG9yZSAzMmJpdCB2YWx1ZSBvZiBzeW1ib2wKLSAgICAgICAgICAgICAgYXJnOiBjcwlzeW1ib2wgbmFtZS4gICovCi0gICAgICAgICBjYXNlIEVUSVJfX0NfU1RPX0dCTF9MVzoKLS0gICAgICAgICAgX2JmZF92bXNfZ2V0X3ZhbHVlIChhYmZkLCBwdHIsIGluZm8sICZvcDEsICZoKTsKLSsgICAgICAgICAgX2JmZF92bXNfZ2V0X3ZhbHVlIChhYmZkLCBwdHIsIG1heHB0ciwgaW5mbywgJm9wMSwgJmgpOwotICNpZiAwCi0gICAgICAgICAgIGFib3J0ICgpOwotICNlbmRpZgotQEAgLTIwMTMsNyArMjA0Miw3IEBAIF9iZmRfdm1zX3NsdXJwX2V0aXIgKGJmZCAqYWJmZCwgc3RydWN0IGIKLSAgICAgICAgICAgICAgZGEJc2lnbmF0dXJlLiAgKi8KLSAKLSAgICAgICAgIGNhc2UgRVRJUl9fQ19TVENfTFBfUFNCOgotLSAgICAgICAgICBfYmZkX3Ztc19nZXRfdmFsdWUgKGFiZmQsIHB0ciArIDQsIGluZm8sICZvcDEsICZoKTsKLSsgICAgICAgICAgX2JmZF92bXNfZ2V0X3ZhbHVlIChhYmZkLCBwdHIgKyA0LCBtYXhwdHIsIGluZm8sICZvcDEsICZoKTsKLSAgICAgICAgICAgaWYgKGggJiYgaC0+c3ltKQotICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIGlmIChoLT5zeW0tPnR5cCA9PSBFR1NEX19DX1NZTUcpCi1AQCAtMjEwOSw2ICsyMTM4LDggQEAgX2JmZF92bXNfc2x1cnBfZXRpciAoYmZkICphYmZkLCBzdHJ1Y3QgYgotICAgICAgICAgICAvKiBBdWdtZW50IHJlbG9jYXRpb24gYmFzZTogaW5jcmVtZW50IGltYWdlIGxvY2F0aW9uIGNvdW50ZXIgYnkgb2Zmc2V0Ci0gICAgICAgICAgICAgIGFyZzogbHcJb2Zmc2V0IHZhbHVlLiAgKi8KLSAgICAgICAgIGNhc2UgRVRJUl9fQ19DVExfQVVHUkI6Ci0rCSAgaWYgKHB0ciArIDQgPj0gbWF4cHRyKQotKwkgICAgZ290byBjb3JydXB0X2V0aXI7Ci0gICAgICAgICAgIG9wMSA9IGJmZF9nZXRsMzIgKHB0cik7Ci0gICAgICAgICAgIGltYWdlX2luY19wdHIgKGFiZmQsIG9wMSk7Ci0gICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05NzUzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05NzUzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNDExNDJiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTc1My5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAgQEAKLUZyb20gMDRmOTYzZmQ0ODljYWU3MjRhNjAxNDBlMTM5ODQ0MTVjMjA1ZjRhYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pY2sgQ2xpZnRvbiA8bmlja2NAcmVkaGF0LmNvbT4KLURhdGU6IFdlZCwgMTQgSnVuIDIwMTcgMTA6MzU6MTYgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IHNlZy1mYXVsdHMgaW4gb2JqZHVtcCB3aGVuIGRpc2Fzc2VtYmxpbmcgYSBjb3JydXB0Ci0gdmVyc2Fkb3MgYmluYXJ5LgotCi0JUFIgYmludXRpbHMvMjE1OTEKLQkqIHZlcnNhZG9zLmMgKHZlcnNhZG9zX21rb2JqZWN0KTogWmVybyB0aGUgYWxsb2NhdGVkIHRkYXRhIHN0cnVjdHVyZS4KLQkocHJvY2Vzc19vdHIpOiBDaGVjayBmb3IgYW4gaW52YWxpZCBvZmZzZXQgaW4gdGhlIG90ciBzdHJ1Y3R1cmUuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTctOTc1MwotQ1ZFOiBDVkUtMjAxNy05NzU0Ci1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gYmZkL0NoYW5nZUxvZyAgfCAgNiArKysrKysKLSBiZmQvdmVyc2Fkb3MuYyB8IDEyICsrKysrKysrLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdpdC9iZmQvdmVyc2Fkb3MuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC92ZXJzYWRvcy5jCi0rKysgZ2l0L2JmZC92ZXJzYWRvcy5jCi1AQCAtMTQ5LDcgKzE0OSw3IEBAIHZlcnNhZG9zX21rb2JqZWN0IChiZmQgKmFiZmQpCi0gICBpZiAoYWJmZC0+dGRhdGEudmVyc2Fkb3NfZGF0YSA9PSBOVUxMKQotICAgICB7Ci0gICAgICAgYmZkX3NpemVfdHlwZSBhbXQgPSBzaXplb2YgKHRkYXRhX3R5cGUpOwotLSAgICAgIHRkYXRhX3R5cGUgKnRkYXRhID0gYmZkX2FsbG9jIChhYmZkLCBhbXQpOwotKyAgICAgIHRkYXRhX3R5cGUgKnRkYXRhID0gYmZkX3phbGxvYyAoYWJmZCwgYW10KTsKLSAKLSAgICAgICBpZiAodGRhdGEgPT0gTlVMTCkKLSAJcmV0dXJuIEZBTFNFOwotQEAgLTM0NSwxMyArMzQ1LDEzIEBAIHJlbG9jX2hvd3RvX3R5cGUgdmVyc2Fkb3NfaG93dG9fdGFibGVbXQotIH07Ci0gCi0gc3RhdGljIGludAotLWdldF9vZmZzZXQgKGludCBsZW4sIHVuc2lnbmVkIGNoYXIgKnB0cikKLStnZXRfb2Zmc2V0ICh1bnNpZ25lZCBpbnQgbGVuLCB1bnNpZ25lZCBjaGFyICpwdHIpCi0gewotICAgaW50IHZhbCA9IDA7Ci0gCi0gICBpZiAobGVuKQotICAgICB7Ci0tICAgICAgaW50IGk7Ci0rICAgICAgdW5zaWduZWQgaW50IGk7Ci0gCi0gICAgICAgdmFsID0gKnB0cisrOwotICAgICAgIGlmICh2YWwgJiAweDgwKQotQEAgLTM5NCw5ICszOTQsMTMgQEAgcHJvY2Vzc19vdHIgKGJmZCAqYWJmZCwgc3RydWN0IGV4dF9vdHIgKgotIAkgIGludCBmbGFnID0gKnNyY3ArKzsKLSAJICBpbnQgZXNkaWRzID0gKGZsYWcgPj4gNSkgJiAweDc7Ci0gCSAgaW50IHNpemVpbndvcmRzID0gKChmbGFnID4+IDMpICYgMSkgPyAyIDogMTsKLS0JICBpbnQgb2Zmc2V0bGVuID0gZmxhZyAmIDB4NzsKLSsJICB1bnNpZ25lZCBpbnQgb2Zmc2V0bGVuID0gZmxhZyAmIDB4NzsKLSAJICBpbnQgajsKLSAKLSsJICAvKiBQUiAyMTU5MTogQ2hlY2sgZm9yIGludmFsaWQgbGVuZ3Rocy4gICovCi0rCSAgaWYgKHNyY3AgKyBlc2RpZHMgKyBvZmZzZXRsZW4gPj0gZW5kcCkKLSsJICAgIHJldHVybjsKLSsKLSAJICBpZiAoZXNkaWRzID09IDApCi0gCSAgICB7Ci0gCSAgICAgIC8qIEEgemVybyBlc2RpZCBtZWFucyB0aGUgbmV3IHBjIGlzIHRoZSBvZmZzZXQgZ2l2ZW4uICAqLwotSW5kZXg6IGdpdC9iZmQvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL0NoYW5nZUxvZwotKysrIGdpdC9iZmQvQ2hhbmdlTG9nCi1AQCAtOCw2ICs4LDEwIEBACi0gICAgICAgIChpZWVlX2FyY2hpdmVfcCk6IExpa2V3aXNlLgotIAotIDIwMTctMDYtMTQgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0rCi0rICAgICAgIFBSIGJpbnV0aWxzLzIxNTkxCi0rICAgICAgICogdmVyc2Fkb3MuYyAodmVyc2Fkb3NfbWtvYmplY3QpOiBaZXJvIHRoZSBhbGxvY2F0ZWQgdGRhdGEgc3RydWN0dXJlLgotKyAgICAgICAocHJvY2Vzc19vdHIpOiBDaGVjayBmb3IgYW4gaW52YWxpZCBvZmZzZXQgaW4gdGhlIG90ciBzdHJ1Y3R1cmUuCi0gIAotICAgICAgICBQUiBiaW51dGlscy8yMTU4OQotICAgICAgICAqIHZtcy1hbHBoYS5jIChfYmZkX3Ztc19nZXRfdmFsdWUpOiBBZGQgYW4gZXh0cmEgcGFyYW1ldGVyIC0gdGhlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk3NTUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk3NTUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1ZGM5MDkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05NzU1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotRnJvbSAwZDk2ZTRkZjQ4MTJjM2JhZDc3YzIyOWRmZWY0N2E5YmMxMTVhYzEyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogIkguSi4gTHUiIDxoamwudG9vbHNAZ21haWwuY29tPgotRGF0ZTogVGh1LCAxNSBKdW4gMjAxNyAwNjo0MDoxNyAtMDcwMAotU3ViamVjdDogW1BBVENIXSBpMzg2LWRpczogQ2hlY2sgdmFsaWQgYm5kIHJlZ2lzdGVyCi0KLVNpbmNlIHRoZXJlIGFyZSBvbmx5IDQgYm5kIHJlZ2lzdGVycywgcmV0dXJuICIoYmFkKSIgZm9yIHJlZ2lzdGVyCi1udW1iZXIgPiAzLgotCi0JUFIgYmludXRpbHMvMjE1OTQKLQkqIGkzODYtZGlzLmMgKE9QX0VfcmVnaXN0ZXIpOiBDaGVjayB2YWxpZCBibmQgcmVnaXN0ZXIuCi0JKE9QX0cpOiBMaWtld2lzZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCAKLUNWRTogQ1ZFLTIwMTctOTc1NQotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIG9wY29kZXMvQ2hhbmdlTG9nICB8ICA2ICsrKysrKwotIG9wY29kZXMvaTM4Ni1kaXMuYyB8IDEwICsrKysrKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDE2IGluc2VydGlvbnMoKykKLQotSW5kZXg6IGdpdC9vcGNvZGVzL0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL29wY29kZXMvQ2hhbmdlTG9nCi0rKysgZ2l0L29wY29kZXMvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDkgQEAKLSsyMDE3LTA2LTE1ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rCVBSIGJpbnV0aWxzLzIxNTk0Ci0rCSogaTM4Ni1kaXMuYyAoT1BfRV9yZWdpc3Rlcik6IENoZWNrIHZhbGlkIGJuZCByZWdpc3Rlci4KLSsJKE9QX0cpOiBMaWtld2lzZS4KLSsKLSAyMDE3LTA2LTE1ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotIAotIAlQUiBiaW51dGlscy8yMTU4OAotSW5kZXg6IGdpdC9vcGNvZGVzL2kzODYtZGlzLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9vcGNvZGVzL2kzODYtZGlzLmMKLSsrKyBnaXQvb3Bjb2Rlcy9pMzg2LWRpcy5jCi1AQCAtMTQ5MzksNiArMTQ5MzksMTEgQEAgT1BfRV9yZWdpc3RlciAoaW50IGJ5dGVtb2RlLCBpbnQgc2l6ZWZsYQotICAgICAgIG5hbWVzID0gYWRkcmVzc19tb2RlID09IG1vZGVfNjRiaXQgPyBuYW1lczY0IDogbmFtZXMzMjsKLSAgICAgICBicmVhazsKLSAgICAgY2FzZSBibmRfbW9kZToKLSsgICAgICBpZiAocmVnID4gMHgzKQotKwl7Ci0rCSAgb2FwcGVuZCAoIihiYWQpIik7Ci0rCSAgcmV0dXJuOwotKwl9Ci0gICAgICAgbmFtZXMgPSBuYW1lc19ibmQ7Ci0gICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgaW5kaXJfdl9tb2RlOgotQEAgLTE1NDgzLDYgKzE1NDg4LDExIEBAIE9QX0cgKGludCBieXRlbW9kZSwgaW50IHNpemVmbGFnKQotICAgICAgIG9hcHBlbmQgKG5hbWVzNjRbbW9kcm0ucmVnICsgYWRkXSk7Ci0gICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgYm5kX21vZGU6Ci0rICAgICAgaWYgKG1vZHJtLnJlZyA+IDB4MykKLSsJewotKwkgIG9hcHBlbmQgKCIoYmFkKSIpOwotKwkgIHJldHVybjsKLSsJfQotICAgICAgIG9hcHBlbmQgKG5hbWVzX2JuZFttb2RybS5yZWddKTsKLSAgICAgICBicmVhazsKLSAgICAgY2FzZSB2X21vZGU6CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk3NTYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk3NTYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5MWQwYmUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05NzU2LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotRnJvbSBjZDNlYTdjNjlhY2M1MDQ1ZWIyOGY5YmY4MGQ5MjMxMTZlMTVlNGY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTmljayBDbGlmdG9uIDxuaWNrY0ByZWRoYXQuY29tPgotRGF0ZTogVGh1LCAxNSBKdW4gMjAxNyAxMzoyNjo1NCArMDEwMAotU3ViamVjdDogW1BBVENIXSBQcmV2ZW50IGFkZHJlc3MgdmlvbGF0aW9uIHByb2JsZW0gd2hlbiBkaXNhc3NlbWJsaW5nIGNvcnJ1cHQKLSBhYXJjaDY0IGJpbmFyeS4KLQotCVBSIGJpbnV0aWxzLzIxNTk1Ci0JKiBhYXJjaDY0LWRpcy5jIChhYXJjaDY0X2V4dF9sZHN0X3JlZ2xpc3QpOiBDaGVjayBmb3IgYW4gb3V0IG9mCi0JcmFuZ2UgdmFsdWUuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTctOTc1NgotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIG9wY29kZXMvQ2hhbmdlTG9nICAgICB8IDYgKysrKysrCi0gb3Bjb2Rlcy9hYXJjaDY0LWRpcy5jIHwgMyArKysKLSAyIGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKQotCi1JbmRleDogZ2l0L29wY29kZXMvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvb3Bjb2Rlcy9DaGFuZ2VMb2cKLSsrKyBnaXQvb3Bjb2Rlcy9DaGFuZ2VMb2cKLUBAIC02LDYgKzYsMTIgQEAKLSAKLSAyMDE3LTA2LTE1ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotIAotKwlQUiBiaW51dGlscy8yMTU5NQotKwkqIGFhcmNoNjQtZGlzLmMgKGFhcmNoNjRfZXh0X2xkc3RfcmVnbGlzdCk6IENoZWNrIGZvciBhbiBvdXQgb2YKLSsJcmFuZ2UgdmFsdWUuCi0rCi0rMjAxNy0wNi0xNSAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSsKLSAJUFIgYmludXRpbHMvMjE1ODgKLSAJKiBybDc4LWRlY29kZS5vcGMgKE9QX0JVRl9MRU4pOiBEZWZpbmUuCi0gCShHRVRCWVRFKTogQ2hlY2sgZm9yIHRoZSBpbmRleCBleGNlZWRpbmcgT1BfQlVGX0xFTi4KLUluZGV4OiBnaXQvb3Bjb2Rlcy9hYXJjaDY0LWRpcy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvb3Bjb2Rlcy9hYXJjaDY0LWRpcy5jCi0rKysgZ2l0L29wY29kZXMvYWFyY2g2NC1kaXMuYwotQEAgLTQwOSw2ICs0MDksOSBAQCBhYXJjaDY0X2V4dF9sZHN0X3JlZ2xpc3QgKGNvbnN0IGFhcmNoNjRfCi0gICBpbmZvLT5yZWdsaXN0LmZpcnN0X3JlZ25vID0gZXh0cmFjdF9maWVsZCAoRkxEX1J0LCBjb2RlLCAwKTsKLSAgIC8qIG9wY29kZSAqLwotICAgdmFsdWUgPSBleHRyYWN0X2ZpZWxkIChGTERfb3Bjb2RlLCBjb2RlLCAwKTsKLSsgIC8qIFBSIDIxNTk1OiBDaGVjayBmb3IgYSBib2d1cyB2YWx1ZS4gICovCi0rICBpZiAodmFsdWUgPj0gQVJSQVlfU0laRSAoZGF0YSkpCi0rICAgIHJldHVybiAwOwotICAgaWYgKGV4cGVjdGVkX251bSAhPSBkYXRhW3ZhbHVlXS5udW1fZWxlbWVudHMgfHwgZGF0YVt2YWx1ZV0uaXNfcmVzZXJ2ZWQpCi0gICAgIHJldHVybiAwOwotICAgaW5mby0+cmVnbGlzdC5udW1fcmVncyA9IGRhdGFbdmFsdWVdLm51bV9yZWdzOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05OTU0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05OTU0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YTlkN2ViLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTk1NC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLUZyb20gMDRlMTViNGE5NDYyY2IxYWU4MTllODc4YTYwMDk4MjlhYWI4MDIwYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5pY2sgQ2xpZnRvbiA8bmlja2NAcmVkaGF0LmNvbT4KLURhdGU6IE1vbiwgMjYgSnVuIDIwMTcgMTU6NDY6MzQgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGFkZHJlc3MgdmlvbGF0aW9uIHBhcnNpbmcgYSBjb3JydXB0IHRleGhleCBmb3JtYXQgZmlsZS4KLQotCVBSIGJpbnV0aWxzLzIxNjcwCi0JKiB0ZWtoZXguYyAoZ2V0dmFsdWUpOiBDaGVjayBmb3IgdGhlIHNvdXJjZSBwb2ludGVyIGV4Y2VlZGluZyB0aGUKLQllbmQgcG9pbnRlciBiZWZvcmUgdGhlIGZpcnN0IGJ5dGUgaXMgcmVhZC4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkVfMjAxNy05OTU0Ci1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gYmZkL0NoYW5nZUxvZyB8IDYgKysrKysrCi0gYmZkL3Rla2hleC5jICB8IDYgKysrKystCi0gMiBmaWxlcyBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLUluZGV4OiBnaXQvYmZkL3Rla2hleC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL3Rla2hleC5jCi0rKysgZ2l0L2JmZC90ZWtoZXguYwotQEAgLTI3Myw2ICsyNzMsOSBAQCBnZXR2YWx1ZSAoY2hhciAqKnNyY3AsIGJmZF92bWEgKnZhbHVlcCwKLSAgIGJmZF92bWEgdmFsdWUgPSAwOwotICAgdW5zaWduZWQgaW50IGxlbjsKLSAKLSsgIGlmIChzcmMgPj0gZW5kcCkKLSsgICAgcmV0dXJuIEZBTFNFOwotKwotICAgaWYgKCFJU0hFWCAoKnNyYykpCi0gICAgIHJldHVybiBGQUxTRTsKLSAKLUBAIC01MTQsOSArNTE3LDEwIEBAIHBhc3Nfb3ZlciAoYmZkICphYmZkLCBiZmRfYm9vbGVhbiAoKmZ1bmMKLSAgIC8qIFRvIHRoZSBmcm9udCBvZiB0aGUgZmlsZS4gICovCi0gICBpZiAoYmZkX3NlZWsgKGFiZmQsIChmaWxlX3B0cikgMCwgU0VFS19TRVQpICE9IDApCi0gICAgIHJldHVybiBGQUxTRTsKLSsKLSAgIHdoaWxlICghIGlzX2VvZikKLSAgICAgewotLSAgICAgIGNoYXIgc3JjW01BWENIVU5LXTsKLSsgICAgICBzdGF0aWMgY2hhciBzcmNbTUFYQ0hVTktdOwotICAgICAgIGNoYXIgdHlwZTsKLSAKLSAgICAgICAvKiBGaW5kIGZpcnN0ICclJy4gICovCi1JbmRleDogZ2l0L2JmZC9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvQ2hhbmdlTG9nCi0rKysgZ2l0L2JmZC9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsOSBAQAotKzIwMTctMDYtMjYgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0rIAotKyAgICAgICBQUiBiaW51dGlscy8yMTY3MAotKyAgICAgICAqIHRla2hleC5jIChnZXR2YWx1ZSk6IENoZWNrIGZvciB0aGUgc291cmNlIHBvaW50ZXIgZXhjZWVkaW5nIHRoZQotKyAgICAgICBlbmQgcG9pbnRlciBiZWZvcmUgdGhlIGZpcnN0IGJ5dGUgaXMgcmVhZC4KLSsKLSAyMDE3LTA2LTE1ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotIAotICAgICAgICBQUiBiaW51dGlscy8yMTU4MgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05OTU1XzEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk5NTVfMS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzc0NjcwZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk5NTVfMS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE2OCArMCwwIEBACi1Gcm9tIGNmZDE0YTUwMGUwNDg1Mzc0NTk2MjM0ZGU0ZGIxMGU4OGViYzc2MTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWNrIENsaWZ0b24gPG5pY2tjQHJlZGhhdC5jb20+Ci1EYXRlOiBNb24sIDI2IEp1biAyMDE3IDE1OjI1OjA4ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBhZGRyZXNzIHZpb2xhdGlvbnMgd2hlbiBhdGVtcHRpbmcgdG8gcGFyc2UgZnV6emVkCi0gYmluYXJpZXMuCi0KLQlQUiBiaW51dGlscy8yMTY2NQotYmZkCSogb3BuY2xzLmMgKGdldF9idWlsZF9pZCk6IENoZWNrIHRoYXQgdGhlIHNlY3Rpb24gaXMgYmVpZyBlbm91Z2gKLQl0byBjb250YWluIHRoZSB3aG9sZSBub3RlLgotCSogY29tcHJlc3MuYyAoYmZkX2dldF9mdWxsX3NlY3Rpb25fY29udGVudHMpOiBDaGVjayBmb3IgYW5kIHJlamVjdAotCWEgc2VjdGlvbiB3aG9lcyBzaXplIGlzIGdyZWF0ZXIgdGhhbiB0aGUgc2l6ZSBvZiB0aGUgZW50aXJlIGZpbGUuCi0JKiBlbGYzMi12ODUwLmMgKHY4NTBfZWxmX2NvcHlfbm90ZXMpOiBBbGxvdyBmb3IgdGhlIG91cHV0IHRvIG5vdAotCWNvbnRhaW4gYSBub3RlcyBzZWN0aW9uLgotCi1iaW51dGlscyogb2JqZHVtcC5jIChkaXNhc3NlbWJsZV9zZWN0aW9uKTogU2tpcCBhbnkgc2VjdGlvbiB0aGF0IGlzIGJpZ2dlcgotCXRoYW4gdGhlIGVudGlyZSBmaWxlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IAotQ1ZFOiBDVkUtMjAxNy05OTU1ICMxCi1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gYmZkL0NoYW5nZUxvZyAgICAgIHwgMTAgKysrKysrKysrKwotIGJmZC9jb21wcmVzcy5jICAgICB8ICA2ICsrKysrKwotIGJmZC9lbGYzMi12ODUwLmMgICB8ICA0ICsrKy0KLSBiZmQvb3BuY2xzLmMgICAgICAgfCAxOCArKysrKysrKysrKysrKysrLS0KLSBiaW51dGlscy9DaGFuZ2VMb2cgfCAgNiArKysrKysKLSBiaW51dGlscy9vYmpkdW1wLmMgfCAgNCArKy0tCi0gNiBmaWxlcyBjaGFuZ2VkLCA0MyBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1JbmRleDogZ2l0L2JmZC9jb21wcmVzcy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL2NvbXByZXNzLmMKLSsrKyBnaXQvYmZkL2NvbXByZXNzLmMKLUBAIC0yMzksNiArMjM5LDEyIEBAIGJmZF9nZXRfZnVsbF9zZWN0aW9uX2NvbnRlbnRzIChiZmQgKmFiZmQKLSAgICAgICAqcHRyID0gTlVMTDsKLSAgICAgICByZXR1cm4gVFJVRTsKLSAgICAgfQotKyAgZWxzZSBpZiAoYmZkX2dldF9maWxlX3NpemUgKGFiZmQpID4gMAotKwkgICAmJiBzeiA+IChiZmRfc2l6ZV90eXBlKSBiZmRfZ2V0X2ZpbGVfc2l6ZSAoYWJmZCkpCi0rICAgIHsKLSsgICAgICAqcHRyID0gTlVMTDsKLSsgICAgICByZXR1cm4gRkFMU0U7Ci0rICAgIH0KLSAKLSAgIHN3aXRjaCAoc2VjLT5jb21wcmVzc19zdGF0dXMpCi0gICAgIHsKLUluZGV4OiBnaXQvYmZkL2VsZjMyLXY4NTAuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9lbGYzMi12ODUwLmMKLSsrKyBnaXQvYmZkL2VsZjMyLXY4NTAuYwotQEAgLTI0NTAsNyArMjQ1MCw5IEBAIHY4NTBfZWxmX2NvcHlfbm90ZXMgKGJmZCAqaWJmZCwgYmZkICpvYmYKLSAJQkZEX0FTU0VSVCAoYmZkX21hbGxvY19hbmRfZ2V0X3NlY3Rpb24gKGliZmQsIGlub3RlcywgJiBpY29udCkpOwotIAotICAgICAgIGlmICgob2NvbnQgPSBlbGZfc2VjdGlvbl9kYXRhIChvbm90ZXMpLT50aGlzX2hkci5jb250ZW50cykgPT0gTlVMTCkKLS0JQkZEX0FTU0VSVCAoYmZkX21hbGxvY19hbmRfZ2V0X3NlY3Rpb24gKG9iZmQsIG9ub3RlcywgJiBvY29udCkpOwotKwkvKiBJZiB0aGUgb3V0cHV0IGlzIGJlaW5nIHN0cmlwcGVkIHRoZW4gaXQgaXMgcG9zc2libGUgZm9yCi0rCSAgIHRoZSBub3RlcyBzZWN0aW9uIHRvIGRpc2FwcGVhci4gIEluIHRoaXMgY2FzZSBkbyBub3RoaW5nLiAgKi8KLSsJcmV0dXJuOwotIAotICAgICAgIC8qIENvcHkvb3ZlcndyaXRlIG5vdGVzIGZyb20gdGhlIGlucHV0IHRvIHRoZSBvdXRwdXQuICAqLwotICAgICAgIG1lbWNweSAob2NvbnQsIGljb250LCBiZmRfc2VjdGlvbl9zaXplIChvYmZkLCBvbm90ZXMpKTsKLUluZGV4OiBnaXQvYmZkL29wbmNscy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL29wbmNscy5jCi0rKysgZ2l0L2JmZC9vcG5jbHMuYwotQEAgLTE3NzYsNiArMTc3Niw3IEBAIGdldF9idWlsZF9pZCAoYmZkICphYmZkKQotICAgRWxmX0V4dGVybmFsX05vdGUgKmVub3RlOwotICAgYmZkX2J5dGUgKmNvbnRlbnRzOwotICAgYXNlY3Rpb24gKnNlY3Q7Ci0rICBiZmRfc2l6ZV90eXBlIHNpemU7Ci0gCi0gICBCRkRfQVNTRVJUIChhYmZkKTsKLSAKLUBAIC0xNzkwLDggKzE3OTEsOSBAQCBnZXRfYnVpbGRfaWQgKGJmZCAqYWJmZCkKLSAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgfQotIAotKyAgc2l6ZSA9IGJmZF9nZXRfc2VjdGlvbl9zaXplIChzZWN0KTsKLSAgIC8qIEZJWE1FOiBTaG91bGQgd2Ugc3VwcG9ydCBzbWFsbGVyIGJ1aWxkLWlkIG5vdGVzID8gICovCi0tICBpZiAoYmZkX2dldF9zZWN0aW9uX3NpemUgKHNlY3QpIDwgMHgyNCkKLSsgIGlmIChzaXplIDwgMHgyNCkKLSAgICAgewotICAgICAgIGJmZF9zZXRfZXJyb3IgKGJmZF9lcnJvcl9pbnZhbGlkX29wZXJhdGlvbik7Ci0gICAgICAgcmV0dXJuIE5VTEw7Ci1AQCAtMTgwNCw2ICsxODA2LDE3IEBAIGdldF9idWlsZF9pZCAoYmZkICphYmZkKQotICAgICAgIHJldHVybiBOVUxMOwotICAgICB9Ci0gCi0rICAvKiBGSVhNRTogUGFyYW5vaWEgLSBhbGxvdyBmb3IgY29tcHJlc3NlZCBidWlsZC1pZCBzZWN0aW9ucy4KLSsgICAgIE1heWJlIHdlIHNob3VsZCBjb21wbGFpbiBpZiB0aGlzIHNpemUgaXMgZGlmZmVyZW50IGZyb20KLSsgICAgIHRoZSBvbmUgb2J0YWluZWQgYWJvdmUuLi4gICovCi0rICBzaXplID0gYmZkX2dldF9zZWN0aW9uX3NpemUgKHNlY3QpOwotKyAgaWYgKHNpemUgPCBzaXplb2YgKEVsZl9FeHRlcm5hbF9Ob3RlKSkKLSsgICAgewotKyAgICAgIGJmZF9zZXRfZXJyb3IgKGJmZF9lcnJvcl9pbnZhbGlkX29wZXJhdGlvbik7Ci0rICAgICAgZnJlZSAoY29udGVudHMpOwotKyAgICAgIHJldHVybiBOVUxMOwotKyAgICB9Ci0rCi0gICBlbm90ZSA9IChFbGZfRXh0ZXJuYWxfTm90ZSAqKSBjb250ZW50czsKLSAgIGlub3RlLnR5cGUgPSBIX0dFVF8zMiAoYWJmZCwgZW5vdGUtPnR5cGUpOwotICAgaW5vdGUubmFtZXN6ID0gSF9HRVRfMzIgKGFiZmQsIGVub3RlLT5uYW1lc3opOwotQEAgLTE4MTUsNyArMTgyOCw4IEBAIGdldF9idWlsZF9pZCAoYmZkICphYmZkKQotICAgaWYgKGlub3RlLmRlc2NzeiA9PSAwCi0gICAgICAgfHwgaW5vdGUudHlwZSAhPSBOVF9HTlVfQlVJTERfSUQKLSAgICAgICB8fCBpbm90ZS5uYW1lc3ogIT0gNCAvKiBzaXplb2YgIkdOVSIgICovCi0tICAgICAgfHwgc3RyY21wIChpbm90ZS5uYW1lZGF0YSwgIkdOVSIpICE9IDApCi0rICAgICAgfHwgc3RybmNtcCAoaW5vdGUubmFtZWRhdGEsICJHTlUiLCA0KSAhPSAwCi0rICAgICAgfHwgc2l6ZSA8ICgxMiArIEJGRF9BTElHTiAoaW5vdGUubmFtZXN6LCA0KSArIGlub3RlLmRlc2NzeikpCi0gICAgIHsKLSAgICAgICBmcmVlIChjb250ZW50cyk7Ci0gICAgICAgYmZkX3NldF9lcnJvciAoYmZkX2Vycm9yX2ludmFsaWRfb3BlcmF0aW9uKTsKLUluZGV4OiBnaXQvYmludXRpbHMvb2JqZHVtcC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmludXRpbHMvb2JqZHVtcC5jCi0rKysgZ2l0L2JpbnV0aWxzL29iamR1bXAuYwotQEAgLTIwNDgsNyArMjA0OCw3IEBAIGRpc2Fzc2VtYmxlX3NlY3Rpb24gKGJmZCAqYWJmZCwgYXNlY3Rpb24KLSAgICAgcmV0dXJuOwotIAotICAgZGF0YXNpemUgPSBiZmRfZ2V0X3NlY3Rpb25fc2l6ZSAoc2VjdGlvbik7Ci0tICBpZiAoZGF0YXNpemUgPT0gMCkKLSsgIGlmIChkYXRhc2l6ZSA9PSAwIHx8IGRhdGFzaXplID49IChiZmRfc2l6ZV90eXBlKSBiZmRfZ2V0X2ZpbGVfc2l6ZSAoYWJmZCkpCi0gICAgIHJldHVybjsKLSAKLSAgIGlmIChzdGFydF9hZGRyZXNzID09IChiZmRfdm1hKSAtMQotQEAgLTI5MTIsNyArMjkxMiw3IEBAIGR1bXBfdGFyZ2V0X3NwZWNpZmljIChiZmQgKmFiZmQpCi0gc3RhdGljIHZvaWQKLSBkdW1wX3NlY3Rpb24gKGJmZCAqYWJmZCwgYXNlY3Rpb24gKnNlY3Rpb24sIHZvaWQgKmR1bW15IEFUVFJJQlVURV9VTlVTRUQpCi0gewotLSAgYmZkX2J5dGUgKmRhdGEgPSAwOwotKyAgYmZkX2J5dGUgKmRhdGEgPSBOVUxMOwotICAgYmZkX3NpemVfdHlwZSBkYXRhc2l6ZTsKLSAgIGJmZF92bWEgYWRkcl9vZmZzZXQ7Ci0gICBiZmRfdm1hIHN0YXJ0X29mZnNldDsKLUluZGV4OiBnaXQvYmZkL0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9DaGFuZ2VMb2cKLSsrKyBnaXQvYmZkL0NoYW5nZUxvZwotQEAgLTEsNCArMSwxNCBAQAotIDIwMTctMDYtMjYgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0rCi0rICAgICAgIFBSIGJpbnV0aWxzLzIxNjY1Ci0rICAgICAgICogb3BuY2xzLmMgKGdldF9idWlsZF9pZCk6IENoZWNrIHRoYXQgdGhlIHNlY3Rpb24gaXMgYmVpZyBlbm91Z2gKLSsgICAgICAgdG8gY29udGFpbiB0aGUgd2hvbGUgbm90ZS4KLSsgICAgICAgKiBjb21wcmVzcy5jIChiZmRfZ2V0X2Z1bGxfc2VjdGlvbl9jb250ZW50cyk6IENoZWNrIGZvciBhbmQgcmVqZWN0Ci0rICAgICAgIGEgc2VjdGlvbiB3aG9lcyBzaXplIGlzIGdyZWF0ZXIgdGhhbiB0aGUgc2l6ZSBvZiB0aGUgZW50aXJlIGZpbGUuCi0rICAgICAgICogZWxmMzItdjg1MC5jICh2ODUwX2VsZl9jb3B5X25vdGVzKTogQWxsb3cgZm9yIHRoZSBvdXB1dCB0byBub3QKLSsgICAgICAgY29udGFpbiBhIG5vdGVzIHNlY3Rpb24uCi0rCi0rMjAxNy0wNi0yNiAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSAgCi0gICAgICAgIFBSIGJpbnV0aWxzLzIxNjcwCi0gICAgICAgICogdGVraGV4LmMgKGdldHZhbHVlKTogQ2hlY2sgZm9yIHRoZSBzb3VyY2UgcG9pbnRlciBleGNlZWRpbmcgdGhlCi1JbmRleDogZ2l0L2JpbnV0aWxzL0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JpbnV0aWxzL0NoYW5nZUxvZwotKysrIGdpdC9iaW51dGlscy9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsOSBAQAotKzIwMTctMDYtMjYgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0rIAotKyAgICAgICBQUiBiaW51dGlscy8yMTY2NQotKyAgICAgICAqIG9iamR1bXAuYyAoZGlzYXNzZW1ibGVfc2VjdGlvbik6IFNraXAgYW55IHNlY3Rpb24gdGhhdCBpcyBiaWdnZXIKLSsgICAgICAgdGhhbiB0aGUgZW50aXJlIGZpbGUuCi0rCi0gMjAxNy0wNC0wMyAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSAKLSAgICAgICAgUFIgYmludXRpbHMvMjEzNDUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTk1NV8yLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05OTU1XzIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5NTI5NWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05OTU1XzIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMjIgKzAsMCBAQAotRnJvbSAwNjMwYjQ5YzQ3MGNhMmUzYzNmNzRkYTRjN2U0ZmY2MzQ0MGRkNzFmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogIkguSi4gTHUiIDxoamwudG9vbHNAZ21haWwuY29tPgotRGF0ZTogTW9uLCAyNiBKdW4gMjAxNyAwOToyNDo0OSAtMDcwMAotU3ViamVjdDogW1BBVENIXSBDaGVjayBmaWxlIHNpemUgYmVmb3JlIGdldHRpbmcgc2VjdGlvbiBjb250ZW50cwotCi1Eb24ndCBjaGVjayB0aGUgc2VjdGlvbiBzaXplIGluIGJmZF9nZXRfZnVsbF9zZWN0aW9uX2NvbnRlbnRzIHNpbmNlCi10aGUgc2l6ZSBvZiBhIGRlY29tcHJlc3NlZCBzZWN0aW9uIG1heSBiZSBsYXJnZXIgdGhhbiB0aGUgZmlsZSBzaXplLgotSW5zdGVhZCwgY2hlY2sgZmlsZSBzaXplIGluIF9iZmRfZ2VuZXJpY19nZXRfc2VjdGlvbl9jb250ZW50cy4KLQotCVBSIGJpbnV0aWxzLzIxNjY1Ci0JKiBjb21wcmVzcy5jIChiZmRfZ2V0X2Z1bGxfc2VjdGlvbl9jb250ZW50cyk6IERvbid0IGNoZWNrIHRoZQotCWZpbGUgc2l6ZSBoZXJlLgotCSogbGliYmZkLmMgKF9iZmRfZ2VuZXJpY19nZXRfc2VjdGlvbl9jb250ZW50cyk6IENoZWNrIGZvciBhbmQKLQlyZWplY3QgYSBzZWN0aW9uIHdob2VzIHNpemUgKyBvZmZzZXQgaXMgZ3JlYXRlciB0aGFuIHRoZSBzaXplCi0Jb2YgdGhlIGVudGlyZSBmaWxlLgotCShfYmZkX2dlbmVyaWNfZ2V0X3NlY3Rpb25fY29udGVudHNfaW5fd2luZG93KTogTGlrZXdpc2UuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTctOTk1NSAjMgotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIGJmZC9DaGFuZ2VMb2cgIHwgMTAgKysrKysrKysrLQotIGJmZC9jb21wcmVzcy5jIHwgIDggKy0tLS0tLS0KLSBiZmQvbGliYmZkLmMgICB8IDE3ICsrKysrKysrKysrKysrKystCi0gMyBmaWxlcyBjaGFuZ2VkLCAyNiBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQotCi1JbmRleDogZ2l0L2JmZC9jb21wcmVzcy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL2NvbXByZXNzLmMKLSsrKyBnaXQvYmZkL2NvbXByZXNzLmMKLUBAIC0yMzksMTIgKzIzOSw2IEBAIGJmZF9nZXRfZnVsbF9zZWN0aW9uX2NvbnRlbnRzIChiZmQgKmFiZmQKLSAgICAgICAqcHRyID0gTlVMTDsKLSAgICAgICByZXR1cm4gVFJVRTsKLSAgICAgfQotLSAgZWxzZSBpZiAoYmZkX2dldF9maWxlX3NpemUgKGFiZmQpID4gMAotLQkgICAmJiBzeiA+IChiZmRfc2l6ZV90eXBlKSBiZmRfZ2V0X2ZpbGVfc2l6ZSAoYWJmZCkpCi0tICAgIHsKLS0gICAgICAqcHRyID0gTlVMTDsKLS0gICAgICByZXR1cm4gRkFMU0U7Ci0tICAgIH0KLSAKLSAgIHN3aXRjaCAoc2VjLT5jb21wcmVzc19zdGF0dXMpCi0gICAgIHsKLUBAIC0yNjAsNyArMjU0LDcgQEAgYmZkX2dldF9mdWxsX3NlY3Rpb25fY29udGVudHMgKGJmZCAqYWJmZAotIAkJICAvKiB4Z2V0dGV4dDpjLWZvcm1hdCAqLwotIAkJICAoXygiZXJyb3I6ICVCKCVBKSBpcyB0b28gbGFyZ2UgKCUjbHggYnl0ZXMpIiksCi0gCQkgIGFiZmQsIHNlYywgKGxvbmcpIHN6KTsKLS0JICAgIHJldHVybiBGQUxTRTsKLSsJICAgICAgcmV0dXJuIEZBTFNFOwotIAkgICAgfQotIAl9Ci0gCi1JbmRleDogZ2l0L2JmZC9saWJiZmQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9saWJiZmQuYwotKysrIGdpdC9iZmQvbGliYmZkLmMKLUBAIC03ODAsNiArNzgwLDcgQEAgX2JmZF9nZW5lcmljX2dldF9zZWN0aW9uX2NvbnRlbnRzIChiZmQgKgotIAkJCQkgICBiZmRfc2l6ZV90eXBlIGNvdW50KQotIHsKLSAgIGJmZF9zaXplX3R5cGUgc3o7Ci0rICBmaWxlX3B0ciBmaWxlc3o7Ci0gICBpZiAoY291bnQgPT0gMCkKLSAgICAgcmV0dXJuIFRSVUU7Ci0gCi1AQCAtODAyLDggKzgwMywxNSBAQCBfYmZkX2dlbmVyaWNfZ2V0X3NlY3Rpb25fY29udGVudHMgKGJmZCAqCi0gICAgIHN6ID0gc2VjdGlvbi0+cmF3c2l6ZTsKLSAgIGVsc2UKLSAgICAgc3ogPSBzZWN0aW9uLT5zaXplOwotKyAgZmlsZXN6ID0gYmZkX2dldF9maWxlX3NpemUgKGFiZmQpOwotKyAgaWYgKGZpbGVzeiA8IDApCi0rICAgIHsKLSsgICAgICAvKiBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4uICAqLwotKyAgICAgIGFib3J0ICgpOwotKyAgICB9Ci0gICBpZiAob2Zmc2V0ICsgY291bnQgPCBjb3VudAotLSAgICAgIHx8IG9mZnNldCArIGNvdW50ID4gc3opCi0rICAgICAgfHwgb2Zmc2V0ICsgY291bnQgPiBzegotKyAgICAgIHx8IChzZWN0aW9uLT5maWxlcG9zICsgb2Zmc2V0ICsgc3opID4gKGJmZF9zaXplX3R5cGUpIGZpbGVzeikKLSAgICAgewotICAgICAgIGJmZF9zZXRfZXJyb3IgKGJmZF9lcnJvcl9pbnZhbGlkX29wZXJhdGlvbik7Ci0gICAgICAgcmV0dXJuIEZBTFNFOwotQEAgLTgyNiw2ICs4MzQsNyBAQCBfYmZkX2dlbmVyaWNfZ2V0X3NlY3Rpb25fY29udGVudHNfaW5fd2luCi0gewotICNpZmRlZiBVU0VfTU1BUAotICAgYmZkX3NpemVfdHlwZSBzejsKLSsgIGZpbGVfcHRyIGZpbGVzejsKLSAKLSAgIGlmIChjb3VudCA9PSAwKQotICAgICByZXR1cm4gVFJVRTsKLUBAIC04NTgsNyArODY3LDEzIEBAIF9iZmRfZ2VuZXJpY19nZXRfc2VjdGlvbl9jb250ZW50c19pbl93aW4KLSAgICAgc3ogPSBzZWN0aW9uLT5yYXdzaXplOwotICAgZWxzZQotICAgICBzeiA9IHNlY3Rpb24tPnNpemU7Ci0rICBmaWxlc3ogPSBiZmRfZ2V0X2ZpbGVfc2l6ZSAoYWJmZCk7Ci0rICAgIHsKLSsgICAgICAvKiBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4uICAqLwotKyAgICAgIGFib3J0ICgpOwotKyAgICB9Ci0gICBpZiAob2Zmc2V0ICsgY291bnQgPiBzegotKyAgICAgIHx8IChzZWN0aW9uLT5maWxlcG9zICsgb2Zmc2V0ICsgc3opID4gKGJmZF9zaXplX3R5cGUpIGZpbGVzegotICAgICAgIHx8ICEgYmZkX2dldF9maWxlX3dpbmRvdyAoYWJmZCwgc2VjdGlvbi0+ZmlsZXBvcyArIG9mZnNldCwgY291bnQsIHcsCi0gCQkJCVRSVUUpKQotICAgICByZXR1cm4gRkFMU0U7Ci1JbmRleDogZ2l0L2JmZC9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvQ2hhbmdlTG9nCi0rKysgZ2l0L2JmZC9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsMTMgQEAKLSsyMDE3LTA2LTI2ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rICAgICAgIFBSIGJpbnV0aWxzLzIxNjY1Ci0rICAgICAgICogY29tcHJlc3MuYyAoYmZkX2dldF9mdWxsX3NlY3Rpb25fY29udGVudHMpOiBEb24ndCBjaGVjayB0aGUKLSsgICAgICAgZmlsZSBzaXplIGhlcmUuCi0rICAgICAgICogbGliYmZkLmMgKF9iZmRfZ2VuZXJpY19nZXRfc2VjdGlvbl9jb250ZW50cyk6IENoZWNrIGZvciBhbmQKLSsgICAgICAgcmVqZWN0IGEgc2VjdGlvbiB3aG9lcyBzaXplICsgb2Zmc2V0IGlzIGdyZWF0ZXIgdGhhbiB0aGUgc2l6ZQotKyAgICAgICBvZiB0aGUgZW50aXJlIGZpbGUuCi0rICAgICAgIChfYmZkX2dlbmVyaWNfZ2V0X3NlY3Rpb25fY29udGVudHNfaW5fd2luZG93KTogTGlrZXdpc2UuCi0rCi0gMjAxNy0wNi0yNiAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSAKLSAgICAgICAgUFIgYmludXRpbHMvMjE2NjUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTk1NV8zLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05OTU1XzMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiNjdjNGUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05OTU1XzMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi1Gcm9tIDFmNDczZTNkMGFkMjg1MTk1OTM0ZTZhMDc3YzdlZDMyYWZlNjY0MzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAiSC5KLiBMdSIgPGhqbC50b29sc0BnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDI2IEp1biAyMDE3IDE1OjQ3OjE2IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIEFkZCBhIG1pc3NpbmcgbGluZSB0bwotIF9iZmRfZ2VuZXJpY19nZXRfc2VjdGlvbl9jb250ZW50c19pbl93aW5kb3cKLQotCVBSIGJpbnV0aWxzLzIxNjY1Ci0JKiBsaWJiZmQuYyAoX2JmZF9nZW5lcmljX2dldF9zZWN0aW9uX2NvbnRlbnRzX2luX3dpbmRvdyk6IEFkZAotCWEgbWlzc2luZyBsaW5lLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE3LTk5NTUgIzMKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgotCi0tLS0KLSBiZmQvQ2hhbmdlTG9nIHwgNiArKysrKysKLSBiZmQvbGliYmZkLmMgIHwgMSArCi0gMiBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKykKLQotSW5kZXg6IGdpdC9iZmQvbGliYmZkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvbGliYmZkLmMKLSsrKyBnaXQvYmZkL2xpYmJmZC5jCi1AQCAtODY4LDYgKzg2OCw3IEBAIF9iZmRfZ2VuZXJpY19nZXRfc2VjdGlvbl9jb250ZW50c19pbl93aW4KLSAgIGVsc2UKLSAgICAgc3ogPSBzZWN0aW9uLT5zaXplOwotICAgZmlsZXN6ID0gYmZkX2dldF9maWxlX3NpemUgKGFiZmQpOwotKyAgaWYgKGZpbGVzeiA8IDApCi0gICAgIHsKLSAgICAgICAvKiBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4uICAqLwotICAgICAgIGFib3J0ICgpOwotSW5kZXg6IGdpdC9iZmQvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL0NoYW5nZUxvZwotKysrIGdpdC9iZmQvQ2hhbmdlTG9nCi1AQCAtMSw2ICsxLDEyIEBACi0gMjAxNy0wNi0yNiAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotIAotICAgICAgICBQUiBiaW51dGlscy8yMTY2NQotKyAgICAgICAqIGxpYmJmZC5jIChfYmZkX2dlbmVyaWNfZ2V0X3NlY3Rpb25fY29udGVudHNfaW5fd2luZG93KTogQWRkCi0rICAgICAgIGEgbWlzc2luZyBsaW5lLgotKwotKzIwMTctMDYtMjYgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KLSsKLSsgICAgICAgUFIgYmludXRpbHMvMjE2NjUKLSAgICAgICAgKiBjb21wcmVzcy5jIChiZmRfZ2V0X2Z1bGxfc2VjdGlvbl9jb250ZW50cyk6IERvbid0IGNoZWNrIHRoZQotICAgICAgICBmaWxlIHNpemUgaGVyZS4KLSAgICAgICAgKiBsaWJiZmQuYyAoX2JmZF9nZW5lcmljX2dldF9zZWN0aW9uX2NvbnRlbnRzKTogQ2hlY2sgZm9yIGFuZApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05OTU1XzQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk5NTVfNC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTdkNTI5YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk5NTVfNC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLUZyb20gYWIyN2Y4MGM1ZGNlYWEyM2M0YmE3ZjYyYzBkNWQyMmE1ZDVkZDdhMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFBlZHJvIEFsdmVzIDxwYWx2ZXNAcmVkaGF0LmNvbT4KLURhdGU6IFR1ZSwgMjcgSnVuIDIwMTcgMDA6MjE6MjUgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IEdEQiByZWdyZXNzaW9ucyBjYXVzZWQgYnkgcHJldmlvdXMKLSBiZmRfZ2V0X3NlY3Rpb25fY29udGVudHMgY2hhbmdlcwotCi1SZWY6IGh0dHBzOi8vc291cmNld2FyZS5vcmcvbWwvYmludXRpbHMvMjAxNy0wNi9tc2cwMDM0My5odG1sCi0KLWJmZC9DaGFuZ2VMb2c6Ci0yMDE3LTA2LTI2ICBQZWRybyBBbHZlcyAgPHBhbHZlc0ByZWRoYXQuY29tPgotCi0JUFIgYmludXRpbHMvMjE2NjUKLQkqIGxpYmJmZC5jIChfYmZkX2dlbmVyaWNfZ2V0X3NlY3Rpb25fY29udGVudHMpOiBBZGQgImNvdW50Iiwgbm90Ci0JInN6Ii4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy05OTU1ICM0Ci1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gYmZkL0NoYW5nZUxvZyB8IDYgKysrKysrCi0gYmZkL2xpYmJmZC5jICB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1JbmRleDogZ2l0L2JmZC9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvQ2hhbmdlTG9nCi0rKysgZ2l0L2JmZC9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsOSBAQAotKzIwMTctMDYtMjYgIFBlZHJvIEFsdmVzICA8cGFsdmVzQHJlZGhhdC5jb20+Ci0rCi0rCVBSIGJpbnV0aWxzLzIxNjY1Ci0rCSogbGliYmZkLmMgKF9iZmRfZ2VuZXJpY19nZXRfc2VjdGlvbl9jb250ZW50cyk6IEFkZCAiY291bnQiLCBub3QKLSsJInN6Ii4KLSsKLSAyMDE3LTA2LTI2ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0gCi0gICAgICAgIFBSIGJpbnV0aWxzLzIxNjY1Ci1JbmRleDogZ2l0L2JmZC9saWJiZmQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9saWJiZmQuYwotKysrIGdpdC9iZmQvbGliYmZkLmMKLUBAIC04MTEsNyArODExLDcgQEAgX2JmZF9nZW5lcmljX2dldF9zZWN0aW9uX2NvbnRlbnRzIChiZmQgKgotICAgICB9Ci0gICBpZiAob2Zmc2V0ICsgY291bnQgPCBjb3VudAotICAgICAgIHx8IG9mZnNldCArIGNvdW50ID4gc3oKLS0gICAgICB8fCAoc2VjdGlvbi0+ZmlsZXBvcyArIG9mZnNldCArIHN6KSA+IChiZmRfc2l6ZV90eXBlKSBmaWxlc3opCi0rICAgICAgfHwgKHNlY3Rpb24tPmZpbGVwb3MgKyBvZmZzZXQgKyBjb3VudCkgPiAoYmZkX3NpemVfdHlwZSkgZmlsZXN6KQotICAgICB7Ci0gICAgICAgYmZkX3NldF9lcnJvciAoYmZkX2Vycm9yX2ludmFsaWRfb3BlcmF0aW9uKTsKLSAgICAgICByZXR1cm4gRkFMU0U7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk5NTVfNS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTk1NV81LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTNiZDM3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTk1NV81LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODkgKzAsMCBAQAotRnJvbSA3MjExYWU1MDFlYjBkZTEwNDQ5ODNmMmRmYjAwMDkxYTU4ZmJkNjZjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxhbiBNb2RyYSA8YW1vZHJhQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMjcgSnVuIDIwMTcgMDk6NDU6MDQgKzA5MzAKLVN1YmplY3Q6IFtQQVRDSF0gTW9yZSBmaXhlcyBmb3IgYmZkX2dldF9zZWN0aW9uX2NvbnRlbnRzIGNoYW5nZQotCi0JUFIgYmludXRpbHMvMjE2NjUKLQkqIGxpYmJmZC5jIChfYmZkX2dlbmVyaWNfZ2V0X3NlY3Rpb25fY29udGVudHMpOiBEZWxldGUgYWJvcnQuCi0JVXNlIHVuc2lnbmVkIGZpbGUgcG9pbnRlciB0eXBlLCBhbmQgcmVtb3ZlIGNhc3QuCi0JKiBsaWJiZmQuYyAoX2JmZF9nZW5lcmljX2dldF9zZWN0aW9uX2NvbnRlbnRzX2luX3dpbmRvdyk6IExpa2V3aXNlLgotCUFkZCAiY291bnQiLCBub3QgInN6Ii4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy05OTU1ICM1Ci1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gYmZkL0NoYW5nZUxvZyB8ICA4ICsrKysrKysrCi0gYmZkL2xpYmJmZC5jICB8IDE4ICsrKystLS0tLS0tLS0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBnaXQvYmZkL0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9DaGFuZ2VMb2cKLSsrKyBnaXQvYmZkL0NoYW5nZUxvZwotQEAgLTEsMyArMSwxMSBAQAotKzIwMTctMDYtMjcgIEFsYW4gTW9kcmEgIDxhbW9kcmFAZ21haWwuY29tPgotKwotKwlQUiBiaW51dGlscy8yMTY2NQotKwkqIGxpYmJmZC5jIChfYmZkX2dlbmVyaWNfZ2V0X3NlY3Rpb25fY29udGVudHMpOiBEZWxldGUgYWJvcnQuCi0rCVVzZSB1bnNpZ25lZCBmaWxlIHBvaW50ZXIgdHlwZSwgYW5kIHJlbW92ZSBjYXN0LgotKwkqIGxpYmJmZC5jIChfYmZkX2dlbmVyaWNfZ2V0X3NlY3Rpb25fY29udGVudHNfaW5fd2luZG93KTogTGlrZXdpc2UuCi0rCUFkZCAiY291bnQiLCBub3QgInN6Ii4KLSsKLSAyMDE3LTA2LTI2ICBQZWRybyBBbHZlcyAgPHBhbHZlc0ByZWRoYXQuY29tPgotIAotIAlQUiBiaW51dGlscy8yMTY2NQotSW5kZXg6IGdpdC9iZmQvbGliYmZkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iZmQvbGliYmZkLmMKLSsrKyBnaXQvYmZkL2xpYmJmZC5jCi1AQCAtNzgwLDcgKzc4MCw3IEBAIF9iZmRfZ2VuZXJpY19nZXRfc2VjdGlvbl9jb250ZW50cyAoYmZkICoKLSAJCQkJICAgYmZkX3NpemVfdHlwZSBjb3VudCkKLSB7Ci0gICBiZmRfc2l6ZV90eXBlIHN6OwotLSAgZmlsZV9wdHIgZmlsZXN6OwotKyAgdWZpbGVfcHRyIGZpbGVzejsKLSAgIGlmIChjb3VudCA9PSAwKQotICAgICByZXR1cm4gVFJVRTsKLSAKLUBAIC04MDQsMTQgKzgwNCw5IEBAIF9iZmRfZ2VuZXJpY19nZXRfc2VjdGlvbl9jb250ZW50cyAoYmZkICoKLSAgIGVsc2UKLSAgICAgc3ogPSBzZWN0aW9uLT5zaXplOwotICAgZmlsZXN6ID0gYmZkX2dldF9maWxlX3NpemUgKGFiZmQpOwotLSAgaWYgKGZpbGVzeiA8IDApCi0tICAgIHsKLS0gICAgICAvKiBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4uICAqLwotLSAgICAgIGFib3J0ICgpOwotLSAgICB9Ci0gICBpZiAob2Zmc2V0ICsgY291bnQgPCBjb3VudAotICAgICAgIHx8IG9mZnNldCArIGNvdW50ID4gc3oKLS0gICAgICB8fCAoc2VjdGlvbi0+ZmlsZXBvcyArIG9mZnNldCArIGNvdW50KSA+IChiZmRfc2l6ZV90eXBlKSBmaWxlc3opCi0rICAgICAgfHwgc2VjdGlvbi0+ZmlsZXBvcyArIG9mZnNldCArIGNvdW50ID4gZmlsZXN6KQotICAgICB7Ci0gICAgICAgYmZkX3NldF9lcnJvciAoYmZkX2Vycm9yX2ludmFsaWRfb3BlcmF0aW9uKTsKLSAgICAgICByZXR1cm4gRkFMU0U7Ci1AQCAtODM0LDcgKzgyOSw3IEBAIF9iZmRfZ2VuZXJpY19nZXRfc2VjdGlvbl9jb250ZW50c19pbl93aW4KLSB7Ci0gI2lmZGVmIFVTRV9NTUFQCi0gICBiZmRfc2l6ZV90eXBlIHN6OwotLSAgZmlsZV9wdHIgZmlsZXN6OwotKyAgdWZpbGVfcHRyIGZpbGVzejsKLSAKLSAgIGlmIChjb3VudCA9PSAwKQotICAgICByZXR1cm4gVFJVRTsKLUBAIC04NjgsMTMgKzg2Myw4IEBAIF9iZmRfZ2VuZXJpY19nZXRfc2VjdGlvbl9jb250ZW50c19pbl93aW4KLSAgIGVsc2UKLSAgICAgc3ogPSBzZWN0aW9uLT5zaXplOwotICAgZmlsZXN6ID0gYmZkX2dldF9maWxlX3NpemUgKGFiZmQpOwotLSAgaWYgKGZpbGVzeiA8IDApCi0tICAgIHsKLS0gICAgICAvKiBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4uICAqLwotLSAgICAgIGFib3J0ICgpOwotLSAgICB9Ci0gICBpZiAob2Zmc2V0ICsgY291bnQgPiBzegotLSAgICAgIHx8IChzZWN0aW9uLT5maWxlcG9zICsgb2Zmc2V0ICsgc3opID4gKGJmZF9zaXplX3R5cGUpIGZpbGVzegotKyAgICAgIHx8IHNlY3Rpb24tPmZpbGVwb3MgKyBvZmZzZXQgKyBjb3VudCA+IGZpbGVzegotICAgICAgIHx8ICEgYmZkX2dldF9maWxlX3dpbmRvdyAoYWJmZCwgc2VjdGlvbi0+ZmlsZXBvcyArIG9mZnNldCwgY291bnQsIHcsCi0gCQkJCVRSVUUpKQotICAgICByZXR1cm4gRkFMU0U7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk5NTVfNi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTk1NV82LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMzY0MjlhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTk1NV82LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotRnJvbSBlYTlhYWZjNDFhNzY0ZTRlMmRiYjg4YTdiMDMxZTg4NmI0ODFiOTlhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxhbiBNb2RyYSA8YW1vZHJhQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMjcgSnVuIDIwMTcgMTQ6NDM6NDkgKzA5MzAKLVN1YmplY3Q6IFtQQVRDSF0gV2FybmluZyBmaXgKLQotCVBSIGJpbnV0aWxzLzIxNjY1Ci0JKiBsaWJiZmQuYyAoX2JmZF9nZW5lcmljX2dldF9zZWN0aW9uX2NvbnRlbnRzKTogV2FybmluZyBmaXguCi0JKF9iZmRfZ2VuZXJpY19nZXRfc2VjdGlvbl9jb250ZW50c19pbl93aW5kb3cpOiBMaWtld2lzZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy05OTU1ICM2Ci1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gYmZkL0NoYW5nZUxvZyB8IDEyICsrKysrKysrKy0tLQotIGJmZC9saWJiZmQuYyAgfCAgNCArKy0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1JbmRleDogZ2l0L2JmZC9saWJiZmQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9saWJiZmQuYwotKysrIGdpdC9iZmQvbGliYmZkLmMKLUBAIC04MDYsNyArODA2LDcgQEAgX2JmZF9nZW5lcmljX2dldF9zZWN0aW9uX2NvbnRlbnRzIChiZmQgKgotICAgZmlsZXN6ID0gYmZkX2dldF9maWxlX3NpemUgKGFiZmQpOwotICAgaWYgKG9mZnNldCArIGNvdW50IDwgY291bnQKLSAgICAgICB8fCBvZmZzZXQgKyBjb3VudCA+IHN6Ci0tICAgICAgfHwgc2VjdGlvbi0+ZmlsZXBvcyArIG9mZnNldCArIGNvdW50ID4gZmlsZXN6KQotKyAgICAgIHx8ICh1ZmlsZV9wdHIpIHNlY3Rpb24tPmZpbGVwb3MgKyBvZmZzZXQgKyBjb3VudCA+IGZpbGVzeikKLSAgICAgewotICAgICAgIGJmZF9zZXRfZXJyb3IgKGJmZF9lcnJvcl9pbnZhbGlkX29wZXJhdGlvbik7Ci0gICAgICAgcmV0dXJuIEZBTFNFOwotQEAgLTg2NCw3ICs4NjQsNyBAQCBfYmZkX2dlbmVyaWNfZ2V0X3NlY3Rpb25fY29udGVudHNfaW5fd2luCi0gICAgIHN6ID0gc2VjdGlvbi0+c2l6ZTsKLSAgIGZpbGVzeiA9IGJmZF9nZXRfZmlsZV9zaXplIChhYmZkKTsKLSAgIGlmIChvZmZzZXQgKyBjb3VudCA+IHN6Ci0tICAgICAgfHwgc2VjdGlvbi0+ZmlsZXBvcyArIG9mZnNldCArIGNvdW50ID4gZmlsZXN6Ci0rICAgICAgfHwgKHVmaWxlX3B0cikgc2VjdGlvbi0+ZmlsZXBvcyArIG9mZnNldCArIGNvdW50ID4gZmlsZXN6Ci0gICAgICAgfHwgISBiZmRfZ2V0X2ZpbGVfd2luZG93IChhYmZkLCBzZWN0aW9uLT5maWxlcG9zICsgb2Zmc2V0LCBjb3VudCwgdywKLSAJCQkJVFJVRSkpCi0gICAgIHJldHVybiBGQUxTRTsKLUluZGV4OiBnaXQvYmZkL0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9DaGFuZ2VMb2cKLSsrKyBnaXQvYmZkL0NoYW5nZUxvZwotQEAgLTEsNSArMSwxMSBAQAotIDIwMTctMDYtMjcgIEFsYW4gTW9kcmEgIDxhbW9kcmFAZ21haWwuY29tPgotIAotKyAgICAgICBQUiBiaW51dGlscy8yMTY2NQotKyAgICAgICAqIGxpYmJmZC5jIChfYmZkX2dlbmVyaWNfZ2V0X3NlY3Rpb25fY29udGVudHMpOiBXYXJuaW5nIGZpeC4KLSsgICAgICAgKF9iZmRfZ2VuZXJpY19nZXRfc2VjdGlvbl9jb250ZW50c19pbl93aW5kb3cpOiBMaWtld2lzZS4KLSsKLSsyMDE3LTA2LTI3ICBBbGFuIE1vZHJhICA8YW1vZHJhQGdtYWlsLmNvbT4KLSsKLSAJUFIgYmludXRpbHMvMjE2NjUKLSAJKiBsaWJiZmQuYyAoX2JmZF9nZW5lcmljX2dldF9zZWN0aW9uX2NvbnRlbnRzKTogRGVsZXRlIGFib3J0LgotIAlVc2UgdW5zaWduZWQgZmlsZSBwb2ludGVyIHR5cGUsIGFuZCByZW1vdmUgY2FzdC4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTctOTk1NV83LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05OTU1XzcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjYWU2M2IuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05OTU1XzcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4MCArMCwwIEBACi1Gcm9tIDYwYTAyMDQyYmFjZjhkMjU4MTQ0MzAwODBhZGRhNjFlZDA4NmJjYTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWNrIENsaWZ0b24gPG5pY2tjQHJlZGhhdC5jb20+Ci1EYXRlOiBGcmksIDMwIEp1biAyMDE3IDExOjAzOjM3ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBmYWlsdXJlcyBpbiBNTUlYIGxpbmtlciB0ZXN0cyBpbnRyb2R1Y2VkIGJ5IGZpeCBmb3IgUFIKLSAyMTY2NS4KLQotCVBSIGJpbnV0aWxzLzIxNjY1Ci0JKiBvYmpkdW1wLmMgKGRpc2Fzc2VtYmxlX3NlY3Rpb24pOiBNb3ZlIGNoZWNrIGZvciBhbiBvdmVybGFyZ2UKLQlzZWN0aW9uIHRvIGp1c3QgYmVmb3JlIHRoZSBhbGxvY2F0aW9uIG9mIG1lbW9yeS4gIERvIG5vdCBjaGVjawotCXNlY3Rpb24gc2l6ZSBhZ2FpbnN0IGZpbGUgc2l6ZSwgYnV0IGluc3RlYWQgdXNlIGFuIGFyYml0cmFyeSAyR2IKLQlsaW1pdC4gIElzc3VlIGEgd2FybmluZyBtZXNzYWdlIGlmIHRoZSBzZWN0aW9uIGlzIHRvbyBiaWcuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTctOTk1NSAjNwotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIGJpbnV0aWxzL0NoYW5nZUxvZyB8ICA4ICsrKysrKysrCi0gYmludXRpbHMvb2JqZHVtcC5jIHwgMjUgKysrKysrKysrKysrKysrKysrKysrKysrLQotIDIgZmlsZXMgY2hhbmdlZCwgMzIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1JbmRleDogZ2l0L2JpbnV0aWxzL29iamR1bXAuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JpbnV0aWxzL29iamR1bXAuYwotKysrIGdpdC9iaW51dGlscy9vYmpkdW1wLmMKLUBAIC0yMDQ4LDcgKzIwNDgsNyBAQCBkaXNhc3NlbWJsZV9zZWN0aW9uIChiZmQgKmFiZmQsIGFzZWN0aW9uCi0gICAgIHJldHVybjsKLSAKLSAgIGRhdGFzaXplID0gYmZkX2dldF9zZWN0aW9uX3NpemUgKHNlY3Rpb24pOwotLSAgaWYgKGRhdGFzaXplID09IDAgfHwgZGF0YXNpemUgPj0gKGJmZF9zaXplX3R5cGUpIGJmZF9nZXRfZmlsZV9zaXplIChhYmZkKSkKLSsgIGlmIChkYXRhc2l6ZSA9PSAwKQotICAgICByZXR1cm47Ci0gCi0gICBpZiAoc3RhcnRfYWRkcmVzcyA9PSAoYmZkX3ZtYSkgLTEKLUBAIC0yMTEyLDYgKzIxMTIsMjkgQEAgZGlzYXNzZW1ibGVfc2VjdGlvbiAoYmZkICphYmZkLCBhc2VjdGlvbgotICAgICB9Ci0gICByZWxfcHBlbmQgPSByZWxfcHAgKyByZWxfY291bnQ7Ci0gCi0rICAvKiBQUiAyMTY2NTogQ2hlY2sgZm9yIG92ZXJsYXJnZSBkYXRhc2l6ZXMuCi0rICAgICBOb3RlIC0gd2UgdXNlZCB0byBjaGVjayBmb3IgImRhdGFzaXplID4gYmZkX2dldF9maWxlX3NpemUgKGFiZmQpIiBidXQKLSsgICAgIHRoaXMgZmFpbHMgd2hlbiB1c2luZyBjb21wcmVzc2VkIHNlY3Rpb25zIG9yIGNvbXByZXNzZWQgZmlsZSBmb3JtYXRzCi0rICAgICAoZWcgTU1PLCB0ZWtoZXgpLgotKwotKyAgICAgVGhlIGNhbGwgdG8geG1hbGxvYyBiZWxvdyB3aWxsIGZhaWwgaWYgdG9vIG11Y2ggbWVtb3J5IGlzIHJlcXVlc3RlZCwKLSsgICAgIHdoaWNoIHdpbGwgY2F0Y2ggdGhlIHByb2JsZW0gaW4gdGhlIG5vcm1hbCB1c2UgY2FzZS4gIEJ1dCBpZiBhIG1lbW9yeQotKyAgICAgY2hlY2tlciBpcyBpbiB1c2UsIGVnIHZhbGdyaW5kIG9yIHNhbml0aXplLCB0aGVuIGFuIGV4Y2VwdGlvbiB3aWxsCi0rICAgICBiZSBzdGlsbCBnZW5lcmF0ZWQsIHNvIHdlIHRyeSB0byBjYXRjaCB0aGUgcHJvYmxlbSBmaXJzdC4KLSsKLSsgICAgIFVuZm9ydHVuYXRlbHkgdGhlcmUgaXMgbm8gc2ltcGxlIHdheSB0byBkZXRlcm1pbmUgaG93IG11Y2ggbWVtb3J5IGNhbgotKyAgICAgYmUgYWxsb2NhdGVkIGJ5IGNhbGxpbmcgeG1hbGxvYy4gIFNvIGluc3RlYWQgd2UgdXNlIGEgc2ltcGxlLCBhcmJpdHJhcnkKLSsgICAgIGxpbWl0IG9mIDJHYi4gIEhvcGVmdWxseSB0aGlzIHNob3VsZCBiZSBlbm91Z2ggZm9yIG1vc3QgdXNlcnMuICBJZgotKyAgICAgc29tZW9uZSBkb2VzIHN0YXJ0IHRyeWluZyB0byBkaXNhc3NlbWJsZSBzZWN0aW9ucyBsYXJnZXIgdGhlbiAyR2IgaW4KLSsgICAgIHNpemUgdGhleSB3aWxsIGRvdWJ0bGVzcyBjb21wbGFpbiBhbmQgd2UgY2FuIGluY3JlYXNlIHRoZSBsaW1pdC4gICovCi0rI2RlZmluZSBNQVhfWE1BTExPQyAoMTAyNCAqIDEwMjQgKiAxMDI0ICogMlVMKSAvKiAyR2IgKi8KLSsgIGlmIChkYXRhc2l6ZSA+IE1BWF9YTUFMTE9DKQotKyAgICB7Ci0rICAgICAgbm9uX2ZhdGFsIChfKCJSZWFkaW5nIHNlY3Rpb24gJXMgZmFpbGVkIGJlY2F1c2UgaXQgaXMgdG9vIGJpZyAoJSNseCkiKSwKLSsJCSBzZWN0aW9uLT5uYW1lLCAodW5zaWduZWQgbG9uZykgZGF0YXNpemUpOwotKyAgICAgIHJldHVybjsKLSsgICAgfQotKwotICAgZGF0YSA9IChiZmRfYnl0ZSAqKSB4bWFsbG9jIChkYXRhc2l6ZSk7Ci0gCi0gICBiZmRfZ2V0X3NlY3Rpb25fY29udGVudHMgKGFiZmQsIHNlY3Rpb24sIGRhdGEsIDAsIGRhdGFzaXplKTsKLUluZGV4OiBnaXQvYmludXRpbHMvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmludXRpbHMvQ2hhbmdlTG9nCi0rKysgZ2l0L2JpbnV0aWxzL0NoYW5nZUxvZwotQEAgLTEsMyArMSwxMSBAQAotKzIwMTctMDYtMzAgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0rCi0rICAgICAgIFBSIGJpbnV0aWxzLzIxNjY1Ci0rICAgICAgICogb2JqZHVtcC5jIChkaXNhc3NlbWJsZV9zZWN0aW9uKTogTW92ZSBjaGVjayBmb3IgYW4gb3ZlcmxhcmdlCi0rICAgICAgIHNlY3Rpb24gdG8ganVzdCBiZWZvcmUgdGhlIGFsbG9jYXRpb24gb2YgbWVtb3J5LiAgRG8gbm90IGNoZWNrCi0rICAgICAgIHNlY3Rpb24gc2l6ZSBhZ2FpbnN0IGZpbGUgc2l6ZSwgYnV0IGluc3RlYWQgdXNlIGFuIGFyYml0cmFyeSAyR2IKLSsgICAgICAgbGltaXQuICBJc3N1ZSBhIHdhcm5pbmcgbWVzc2FnZSBpZiB0aGUgc2VjdGlvbiBpcyB0b28gYmlnLgotKwotIDIwMTctMDYtMjYgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+Ci0gIAotICAgICAgICBQUiBiaW51dGlscy8yMTY2NQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05OTU1XzgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk5NTVfOC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDVkZDk3NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk5NTVfOC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE4NyArMCwwIEBACi1Gcm9tIGJhZTc1MDFlODdhYjYxNDExNWQ5ZDMyMTNiNGRkMThkOTZlNjA0ZGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGFuIE1vZHJhIDxhbW9kcmFAZ21haWwuY29tPgotRGF0ZTogU2F0LCAxIEp1bCAyMDE3IDIxOjU4OjEwICswOTMwCi1TdWJqZWN0OiBbUEFUQ0hdIFVzZSBiZmRfbWFsbG9jX2FuZF9nZXRfc2VjdGlvbgotCi1JdCdzIG5pY2VyIHRoYW4geG1hbGxvYyBmb2xsb3dlZCBieSBiZmRfZ2V0X3NlY3Rpb25fY29udGVudHMsIHNpbmNlCi14bWFsbG9jIGV4aXRzIG9uIGZhaWx1cmUgYW5kIG5lZWRzIGEgY2hlY2sgdGhhdCBpdHMgc2l6ZV90IGFyZyBkb2Vzbid0Ci1sb3NlIGhpZ2ggYml0cyB3aGVuIGNvbnZlcnRlZCBmcm9tIGJmZF9zaXplX3R5cGUuCi0KLQlQUiBiaW51dGlscy8yMTY2NQotCSogb2JqZHVtcC5jIChzdHJ0YWIpOiBNYWtlIHZhciBhIGJmZF9ieXRlKi4KLQkoZGlzYXNzZW1ibGVfc2VjdGlvbik6IERvbid0IGxpbWl0IG1hbGxvYyBzaXplLiAgSW5zdGVhZCwgdXNlCi0JYmZkX21hbGxvY19hbmRfZ2V0X3NlY3Rpb24uCi0JKHJlYWRfc2VjdGlvbl9zdGFicyk6IFVzZSBiZmRfbWFsbG9jX2FuZF9nZXRfc2VjdGlvbi4gIFJldHVybgotCWJmZF9ieXRlKi4KLQkoZmluZF9zdGFic19zZWN0aW9uKTogUmVtb3ZlIG5vdyB1bm5lY2Vzc2FyeSBjYXN0LgotCSogb2JqY29weS5jIChjb3B5X29iamVjdCk6IFVzZSBiZmRfbWFsbG9jX2FuZF9nZXRfc2VjdGlvbi4gIEZyZWUKLQljb250ZW50cyBvbiBlcnJvciByZXR1cm4uCi0JKiBubG1jb252LmMgKGNvcHlfc2VjdGlvbnMpOiBVc2UgYmZkX21hbGxvY19hbmRfZ2V0X3NlY3Rpb24uCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTctOTk1NSAjOAotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIGJpbnV0aWxzL0NoYW5nZUxvZyB8IDEzICsrKysrKysrKysrKysKLSBiaW51dGlscy9ubG1jb252LmMgfCAgNiArKy0tLS0KLSBiaW51dGlscy9vYmpjb3B5LmMgfCAgNSArKystLQotIGJpbnV0aWxzL29iamR1bXAuYyB8IDQ0ICsrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gNCBmaWxlcyBjaGFuZ2VkLCAyNSBpbnNlcnRpb25zKCspLCA0MyBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdpdC9iaW51dGlscy9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iaW51dGlscy9DaGFuZ2VMb2cKLSsrKyBnaXQvYmludXRpbHMvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDE2IEBACi0rMjAxNy0wNy0wMSAgQWxhbiBNb2RyYSAgPGFtb2RyYUBnbWFpbC5jb20+Ci0rCi0rCVBSIGJpbnV0aWxzLzIxNjY1Ci0rCSogb2JqZHVtcC5jIChzdHJ0YWIpOiBNYWtlIHZhciBhIGJmZF9ieXRlKi4KLSsJKGRpc2Fzc2VtYmxlX3NlY3Rpb24pOiBEb24ndCBsaW1pdCBtYWxsb2Mgc2l6ZS4gIEluc3RlYWQsIHVzZQotKwliZmRfbWFsbG9jX2FuZF9nZXRfc2VjdGlvbi4KLSsJKHJlYWRfc2VjdGlvbl9zdGFicyk6IFVzZSBiZmRfbWFsbG9jX2FuZF9nZXRfc2VjdGlvbi4gIFJldHVybgotKwliZmRfYnl0ZSouCi0rCShmaW5kX3N0YWJzX3NlY3Rpb24pOiBSZW1vdmUgbm93IHVubmVjZXNzYXJ5IGNhc3QuCi0rCSogb2JqY29weS5jIChjb3B5X29iamVjdCk6IFVzZSBiZmRfbWFsbG9jX2FuZF9nZXRfc2VjdGlvbi4gIEZyZWUKLSsJY29udGVudHMgb24gZXJyb3IgcmV0dXJuLgotKwkqIG5sbWNvbnYuYyAoY29weV9zZWN0aW9ucyk6IFVzZSBiZmRfbWFsbG9jX2FuZF9nZXRfc2VjdGlvbi4KLSsKLSAyMDE3LTA2LTMwICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotIAotICAgICAgICBQUiBiaW51dGlscy8yMTY2NQotSW5kZXg6IGdpdC9iaW51dGlscy9ubG1jb252LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iaW51dGlscy9ubG1jb252LmMKLSsrKyBnaXQvYmludXRpbHMvbmxtY29udi5jCi1AQCAtMTIyNCw3ICsxMjI0LDcgQEAgY29weV9zZWN0aW9ucyAoYmZkICppbmJmZCwgYXNlY3Rpb24gKmlucwotICAgY29uc3QgY2hhciAqaW5uYW1lOwotICAgYXNlY3Rpb24gKm91dHNlYzsKLSAgIGJmZF9zaXplX3R5cGUgc2l6ZTsKLS0gIHZvaWQgKmNvbnRlbnRzOwotKyAgYmZkX2J5dGUgKmNvbnRlbnRzOwotICAgbG9uZyByZWxvY19zaXplOwotICAgYmZkX2J5dGUgYnVmWzRdOwotICAgYmZkX3NpemVfdHlwZSBhZGQ7Ci1AQCAtMTI0MCw5ICsxMjQwLDcgQEAgY29weV9zZWN0aW9ucyAoYmZkICppbmJmZCwgYXNlY3Rpb24gKmlucwotICAgICBjb250ZW50cyA9IE5VTEw7Ci0gICBlbHNlCi0gICAgIHsKLS0gICAgICBjb250ZW50cyA9IHhtYWxsb2MgKHNpemUpOwotLSAgICAgIGlmICghIGJmZF9nZXRfc2VjdGlvbl9jb250ZW50cyAoaW5iZmQsIGluc2VjLCBjb250ZW50cywKLS0JCQkJICAgICAgKGZpbGVfcHRyKSAwLCBzaXplKSkKLSsgICAgICBpZiAoIWJmZF9tYWxsb2NfYW5kX2dldF9zZWN0aW9uIChpbmJmZCwgaW5zZWMsICZjb250ZW50cykpCi0gCWJmZF9mYXRhbCAoYmZkX2dldF9maWxlbmFtZSAoaW5iZmQpKTsKLSAgICAgfQotIAotSW5kZXg6IGdpdC9iaW51dGlscy9vYmpkdW1wLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iaW51dGlscy9vYmpkdW1wLmMKLSsrKyBnaXQvYmludXRpbHMvb2JqZHVtcC5jCi1AQCAtMTgwLDcgKzE4MCw3IEBAIHN0YXRpYyBsb25nIGR5bnN5bWNvdW50ID0gMDsKLSBzdGF0aWMgYmZkX2J5dGUgKnN0YWJzOwotIHN0YXRpYyBiZmRfc2l6ZV90eXBlIHN0YWJfc2l6ZTsKLSAKLS1zdGF0aWMgY2hhciAqc3RydGFiOwotK3N0YXRpYyBiZmRfYnl0ZSAqc3RydGFiOwotIHN0YXRpYyBiZmRfc2l6ZV90eXBlIHN0YWJzdHJfc2l6ZTsKLSAKLSBzdGF0aWMgYmZkX2Jvb2xlYW4gaXNfcmVsb2NhdGFibGUgPSBGQUxTRTsKLUBAIC0yMTEyLDI5ICsyMTEyLDYgQEAgZGlzYXNzZW1ibGVfc2VjdGlvbiAoYmZkICphYmZkLCBhc2VjdGlvbgotICAgICB9Ci0gICByZWxfcHBlbmQgPSByZWxfcHAgKyByZWxfY291bnQ7Ci0gCi0tICAvKiBQUiAyMTY2NTogQ2hlY2sgZm9yIG92ZXJsYXJnZSBkYXRhc2l6ZXMuCi0tICAgICBOb3RlIC0gd2UgdXNlZCB0byBjaGVjayBmb3IgImRhdGFzaXplID4gYmZkX2dldF9maWxlX3NpemUgKGFiZmQpIiBidXQKLS0gICAgIHRoaXMgZmFpbHMgd2hlbiB1c2luZyBjb21wcmVzc2VkIHNlY3Rpb25zIG9yIGNvbXByZXNzZWQgZmlsZSBmb3JtYXRzCi0tICAgICAoZWcgTU1PLCB0ZWtoZXgpLgotLQotLSAgICAgVGhlIGNhbGwgdG8geG1hbGxvYyBiZWxvdyB3aWxsIGZhaWwgaWYgdG9vIG11Y2ggbWVtb3J5IGlzIHJlcXVlc3RlZCwKLS0gICAgIHdoaWNoIHdpbGwgY2F0Y2ggdGhlIHByb2JsZW0gaW4gdGhlIG5vcm1hbCB1c2UgY2FzZS4gIEJ1dCBpZiBhIG1lbW9yeQotLSAgICAgY2hlY2tlciBpcyBpbiB1c2UsIGVnIHZhbGdyaW5kIG9yIHNhbml0aXplLCB0aGVuIGFuIGV4Y2VwdGlvbiB3aWxsCi0tICAgICBiZSBzdGlsbCBnZW5lcmF0ZWQsIHNvIHdlIHRyeSB0byBjYXRjaCB0aGUgcHJvYmxlbSBmaXJzdC4KLS0KLS0gICAgIFVuZm9ydHVuYXRlbHkgdGhlcmUgaXMgbm8gc2ltcGxlIHdheSB0byBkZXRlcm1pbmUgaG93IG11Y2ggbWVtb3J5IGNhbgotLSAgICAgYmUgYWxsb2NhdGVkIGJ5IGNhbGxpbmcgeG1hbGxvYy4gIFNvIGluc3RlYWQgd2UgdXNlIGEgc2ltcGxlLCBhcmJpdHJhcnkKLS0gICAgIGxpbWl0IG9mIDJHYi4gIEhvcGVmdWxseSB0aGlzIHNob3VsZCBiZSBlbm91Z2ggZm9yIG1vc3QgdXNlcnMuICBJZgotLSAgICAgc29tZW9uZSBkb2VzIHN0YXJ0IHRyeWluZyB0byBkaXNhc3NlbWJsZSBzZWN0aW9ucyBsYXJnZXIgdGhlbiAyR2IgaW4KLS0gICAgIHNpemUgdGhleSB3aWxsIGRvdWJ0bGVzcyBjb21wbGFpbiBhbmQgd2UgY2FuIGluY3JlYXNlIHRoZSBsaW1pdC4gICovCi0tI2RlZmluZSBNQVhfWE1BTExPQyAoMTAyNCAqIDEwMjQgKiAxMDI0ICogMlVMKSAvKiAyR2IgKi8KLS0gIGlmIChkYXRhc2l6ZSA+IE1BWF9YTUFMTE9DKQotLSAgICB7Ci0tICAgICAgbm9uX2ZhdGFsIChfKCJSZWFkaW5nIHNlY3Rpb24gJXMgZmFpbGVkIGJlY2F1c2UgaXQgaXMgdG9vIGJpZyAoJSNseCkiKSwKLS0JCSBzZWN0aW9uLT5uYW1lLCAodW5zaWduZWQgbG9uZykgZGF0YXNpemUpOwotLSAgICAgIHJldHVybjsKLS0gICAgfQotLQotICAgZGF0YSA9IChiZmRfYnl0ZSAqKSB4bWFsbG9jIChkYXRhc2l6ZSk7Ci0gCi0gICBiZmRfZ2V0X3NlY3Rpb25fY29udGVudHMgKGFiZmQsIHNlY3Rpb24sIGRhdGEsIDAsIGRhdGFzaXplKTsKLUBAIC0yNjUyLDEyICsyNjI5LDExIEBAIGR1bXBfZHdhcmYgKGJmZCAqYWJmZCkKLSAvKiBSZWFkIEFCRkQncyBzdGFicyBzZWN0aW9uIFNUQUJTRUNUX05BTUUsIGFuZCByZXR1cm4gYSBwb2ludGVyIHRvCi0gICAgaXQuICBSZXR1cm4gTlVMTCBvbiBmYWlsdXJlLiAgICovCi0gCi0tc3RhdGljIGNoYXIgKgotK3N0YXRpYyBiZmRfYnl0ZSAqCi0gcmVhZF9zZWN0aW9uX3N0YWJzIChiZmQgKmFiZmQsIGNvbnN0IGNoYXIgKnNlY3RfbmFtZSwgYmZkX3NpemVfdHlwZSAqc2l6ZV9wdHIpCi0gewotICAgYXNlY3Rpb24gKnN0YWJzZWN0OwotLSAgYmZkX3NpemVfdHlwZSBzaXplOwotLSAgY2hhciAqY29udGVudHM7Ci0rICBiZmRfYnl0ZSAqY29udGVudHM7Ci0gCi0gICBzdGFic2VjdCA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChhYmZkLCBzZWN0X25hbWUpOwotICAgaWYgKHN0YWJzZWN0ID09IE5VTEwpCi1AQCAtMjY2NiwxMCArMjY0Miw3IEBAIHJlYWRfc2VjdGlvbl9zdGFicyAoYmZkICphYmZkLCBjb25zdCBjaGEKLSAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgIH0KLSAKLS0gIHNpemUgPSBiZmRfc2VjdGlvbl9zaXplIChhYmZkLCBzdGFic2VjdCk7Ci0tICBjb250ZW50cyAgPSAoY2hhciAqKSB4bWFsbG9jIChzaXplKTsKLS0KLS0gIGlmICghIGJmZF9nZXRfc2VjdGlvbl9jb250ZW50cyAoYWJmZCwgc3RhYnNlY3QsIGNvbnRlbnRzLCAwLCBzaXplKSkKLSsgIGlmICghYmZkX21hbGxvY19hbmRfZ2V0X3NlY3Rpb24gKGFiZmQsIHN0YWJzZWN0LCAmY29udGVudHMpKQotICAgICB7Ci0gICAgICAgbm9uX2ZhdGFsIChfKCJyZWFkaW5nICVzIHNlY3Rpb24gb2YgJXMgZmFpbGVkOiAlcyIpLAotIAkJIHNlY3RfbmFtZSwgYmZkX2dldF9maWxlbmFtZSAoYWJmZCksCi1AQCAtMjY3OSw3ICsyNjUyLDcgQEAgcmVhZF9zZWN0aW9uX3N0YWJzIChiZmQgKmFiZmQsIGNvbnN0IGNoYQotICAgICAgIHJldHVybiBOVUxMOwotICAgICB9Ci0gCi0tICAqc2l6ZV9wdHIgPSBzaXplOwotKyAgKnNpemVfcHRyID0gYmZkX3NlY3Rpb25fc2l6ZSAoYWJmZCwgc3RhYnNlY3QpOwotIAotICAgcmV0dXJuIGNvbnRlbnRzOwotIH0KLUBAIC0yODA2LDggKzI3NzksNyBAQCBmaW5kX3N0YWJzX3NlY3Rpb24gKGJmZCAqYWJmZCwgYXNlY3Rpb24KLSAKLSAgICAgICBpZiAoc3RydGFiKQotIAl7Ci0tCSAgc3RhYnMgPSAoYmZkX2J5dGUgKikgcmVhZF9zZWN0aW9uX3N0YWJzIChhYmZkLCBzZWN0aW9uLT5uYW1lLAotLQkJCQkJCSAgICZzdGFiX3NpemUpOwotKwkgIHN0YWJzID0gcmVhZF9zZWN0aW9uX3N0YWJzIChhYmZkLCBzZWN0aW9uLT5uYW1lLCAmc3RhYl9zaXplKTsKLSAJICBpZiAoc3RhYnMpCi0gCSAgICBwcmludF9zZWN0aW9uX3N0YWJzIChhYmZkLCBzZWN0aW9uLT5uYW1lLCAmc291Z2h0LT5zdHJpbmdfb2Zmc2V0KTsKLSAJfQotSW5kZXg6IGdpdC9iaW51dGlscy9vYmpjb3B5LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iaW51dGlscy9vYmpjb3B5LmMKLSsrKyBnaXQvYmludXRpbHMvb2JqY29weS5jCi1AQCAtMjE4NiwxNCArMjE4NiwxNSBAQCBjb3B5X29iamVjdCAoYmZkICppYmZkLCBiZmQgKm9iZmQsIGNvbnN0Ci0gCSAgICAgIGNvbnRpbnVlOwotIAkgICAgfQotIAotLQkgIGJmZF9ieXRlICogY29udGVudHMgPSB4bWFsbG9jIChzaXplKTsKLS0JICBpZiAoYmZkX2dldF9zZWN0aW9uX2NvbnRlbnRzIChpYmZkLCBzZWMsIGNvbnRlbnRzLCAwLCBzaXplKSkKLSsJICBiZmRfYnl0ZSAqY29udGVudHM7Ci0rICAgICAgICAgIGlmIChiZmRfbWFsbG9jX2FuZF9nZXRfc2VjdGlvbiAoaWJmZCwgc2VjLCAmY29udGVudHMpKQotIAkgICAgewotIAkgICAgICBpZiAoZndyaXRlIChjb250ZW50cywgMSwgc2l6ZSwgZikgIT0gc2l6ZSkKLSAJCXsKLSAJCSAgbm9uX2ZhdGFsIChfKCJlcnJvciB3cml0aW5nIHNlY3Rpb24gY29udGVudHMgdG8gJXMgKGVycm9yOiAlcykiKSwKLSAJCQkgICAgIHBkdW1wLT5maWxlbmFtZSwKLSAJCQkgICAgIHN0cmVycm9yIChlcnJubykpOwotKyAgICAgICAgICAgICAgICAgIGZyZWUgKGNvbnRlbnRzKTsKLSAJCSAgcmV0dXJuIEZBTFNFOwotIAkJfQotIAkgICAgfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxNy05OTU1XzkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk5NTVfOS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzYzNTNkOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE3LTk5NTVfOS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM2MSArMCwwIEBACi1Gcm9tIDhlMmY1NGJjZWU3ZTNlODMxNWQ0YTM5YTMwMmVhZjhlNDM4OWUwN2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAiSC5KLiBMdSIgPGhqbC50b29sc0BnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDMwIE1heSAyMDE3IDA2OjM0OjA1IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIEFkZCBiZmRfZ2V0X2ZpbGVfc2l6ZSB0byBnZXQgYXJjaGl2ZSBlbGVtZW50IHNpemUKLQotV2UgY2FuJ3QgdXNlIHN0YXQoKSB0byBnZXQgYXJjaGl2ZSBlbGVtZW50IHNpemUuICBBZGQgYmZkX2dldF9maWxlX3NpemUKLXRvIGdldCBzaXplIGZvciBib3RoIG5vcm1hbCBmaWxlcyBhbmQgYXJjaGl2ZSBlbGVtZW50cy4KLQotYmZkLwotCi0JUFIgYmludXRpbHMvMjE1MTkKLQkqIGJmZGlvLmMgKGJmZF9nZXRfZmlsZV9zaXplKTogTmV3IGZ1bmN0aW9uLgotCSogYmZkLWluMi5oOiBSZWdlbmVyYXRlZC4KLQotYmludXRpbHMvCi0KLQlQUiBiaW51dGlscy8yMTUxOQotCSogb2JqZHVtcC5jIChkdW1wX3JlbG9jc19pbl9zZWN0aW9uKTogUmVwbGFjZSBnZXRfZmlsZV9zaXplCi0Jd2l0aCBiZmRfZ2V0X2ZpbGVfc2l6ZSB0byBnZXQgYXJjaGl2ZSBlbGVtZW50IHNpemUuCi0JKiB0ZXN0c3VpdGUvYmludXRpbHMtYWxsL29iamR1bXAuZXhwICh0ZXN0X29iamR1bXBfZik6IE5ldwotCXByb2MuCi0JKHRlc3Rfb2JqZHVtcF9oKTogTGlrZXdpc2UuCi0JKHRlc3Rfb2JqZHVtcF90KTogTGlrZXdpc2UuCi0JKHRlc3Rfb2JqZHVtcF9yKTogTGlrZXdpc2UuCi0JKHRlc3Rfb2JqZHVtcF9zKTogTGlrZXdpc2UuCi0JQWRkIG9iamR1bXAgdGVzdHMgb24gYXJjaGl2ZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy05OTU1Ci1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gYmZkL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNiArCi0gYmZkL2JmZC1pbjIuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCi0gYmZkL2JmZGlvLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyMyArKysrCi0gYmludXRpbHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMyArKwotIGJpbnV0aWxzL29iamR1bXAuYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KLSBiaW51dGlscy90ZXN0c3VpdGUvYmludXRpbHMtYWxsL29iamR1bXAuZXhwIHwgMTc4ICsrKysrKysrKysrKysrKysrKystLS0tLS0tLS0KLSA2IGZpbGVzIGNoYW5nZWQsIDE3MCBpbnNlcnRpb25zKCspLCA1NCBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdpdC9iZmQvYmZkLWluMi5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2l0Lm9yaWcvYmZkL2JmZC1pbjIuaAotKysrIGdpdC9iZmQvYmZkLWluMi5oCi1AQCAtMTI0MSw2ICsxMjQxLDggQEAgbG9uZyBiZmRfZ2V0X210aW1lIChiZmQgKmFiZmQpOwotIAotIGZpbGVfcHRyIGJmZF9nZXRfc2l6ZSAoYmZkICphYmZkKTsKLSAKLStmaWxlX3B0ciBiZmRfZ2V0X2ZpbGVfc2l6ZSAoYmZkICphYmZkKTsKLSsKLSB2b2lkICpiZmRfbW1hcCAoYmZkICphYmZkLCB2b2lkICphZGRyLCBiZmRfc2l6ZV90eXBlIGxlbiwKLSAgICAgaW50IHByb3QsIGludCBmbGFncywgZmlsZV9wdHIgb2Zmc2V0LAotICAgICB2b2lkICoqbWFwX2FkZHIsIGJmZF9zaXplX3R5cGUgKm1hcF9sZW4pOwotSW5kZXg6IGdpdC9iZmQvYmZkaW8uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9iZmRpby5jCi0rKysgZ2l0L2JmZC9iZmRpby5jCi1AQCAtNDM0LDYgKzQzNCwyOSBAQCBiZmRfZ2V0X3NpemUgKGJmZCAqYWJmZCkKLSAgIHJldHVybiBidWYuc3Rfc2l6ZTsKLSB9Ci0gCi0rLyoKLStGVU5DVElPTgotKwliZmRfZ2V0X2ZpbGVfc2l6ZQotKwotK1NZTk9QU0lTCi0rCWZpbGVfcHRyIGJmZF9nZXRfZmlsZV9zaXplIChiZmQgKmFiZmQpOwotKwotK0RFU0NSSVBUSU9OCi0rCVJldHVybiB0aGUgZmlsZSBzaXplIChhcyByZWFkIGZyb20gZmlsZSBzeXN0ZW0pIGZvciB0aGUgZmlsZQotKwlhc3NvY2lhdGVkIHdpdGggQkZEIEB2YXJ7YWJmZH0uICBJdCBzdXBwb3J0cyBib3RoIG5vcm1hbCBmaWxlcwotKwlhbmQgYXJjaGl2ZSBlbGVtZW50cy4KLSsKLSsqLwotKwotK2ZpbGVfcHRyCi0rYmZkX2dldF9maWxlX3NpemUgKGJmZCAqYWJmZCkKLSt7Ci0rICBpZiAoYWJmZC0+bXlfYXJjaGl2ZSAhPSBOVUxMCi0rICAgICAgJiYgIWJmZF9pc190aGluX2FyY2hpdmUgKGFiZmQtPm15X2FyY2hpdmUpKQotKyAgICByZXR1cm4gYXJlbHRfc2l6ZSAoYWJmZCk7Ci0rCi0rICByZXR1cm4gYmZkX2dldF9zaXplIChhYmZkKTsKLSt9Ci0gCi0gLyoKLSBGVU5DVElPTgotSW5kZXg6IGdpdC9iaW51dGlscy9vYmpkdW1wLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iaW51dGlscy9vYmpkdW1wLmMKLSsrKyBnaXQvYmludXRpbHMvb2JqZHVtcC5jCi1AQCAtMzMxMCw3ICszMzEwLDcgQEAgZHVtcF9yZWxvY3NfaW5fc2VjdGlvbiAoYmZkICphYmZkLAotICAgICB9Ci0gCi0gICBpZiAoKGJmZF9nZXRfZmlsZV9mbGFncyAoYWJmZCkgJiAoQkZEX0lOX01FTU9SWSB8IEJGRF9MSU5LRVJfQ1JFQVRFRCkpID09IDAKLS0gICAgICAmJiByZWxzaXplID4gZ2V0X2ZpbGVfc2l6ZSAoYmZkX2dldF9maWxlbmFtZSAoYWJmZCkpKQotKyAgICAgICYmIHJlbHNpemUgPiBiZmRfZ2V0X2ZpbGVfc2l6ZSAoYWJmZCkpCi0gICAgIHsKLSAgICAgICBwcmludGYgKCIgKHRvbyBtYW55OiAweCV4KVxuIiwgc2VjdGlvbi0+cmVsb2NfY291bnQpOwotICAgICAgIGJmZF9zZXRfZXJyb3IgKGJmZF9lcnJvcl9maWxlX3RydW5jYXRlZCk7Ci1JbmRleDogZ2l0L2JpbnV0aWxzL3Rlc3RzdWl0ZS9iaW51dGlscy1hbGwvb2JqZHVtcC5leHAKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9iaW51dGlscy90ZXN0c3VpdGUvYmludXRpbHMtYWxsL29iamR1bXAuZXhwCi0rKysgZ2l0L2JpbnV0aWxzL3Rlc3RzdWl0ZS9iaW51dGlscy1hbGwvb2JqZHVtcC5leHAKLUBAIC02NCw5NiArNjQsMTY4IEBAIGlmIFtyZWdleHAgJHdhbnQgJGdvdF0gdGhlbiB7Ci0gaWYgeyFbYmludXRpbHNfYXNzZW1ibGUgJHNyY2Rpci8kc3ViZGlyL2JpbnRlc3QucyB0bXBkaXIvYmludGVzdC5vXX0gdGhlbiB7Ci0gICAgIHJldHVybgotIH0KLStpZiB7IVtiaW51dGlsc19hc3NlbWJsZSAkc3JjZGlyLyRzdWJkaXIvYmludGVzdC5zIHRtcGRpci9iaW50ZXN0Mi5vXX0gdGhlbiB7Ci0rICAgIHJldHVybgotK30KLSBpZiBbaXNfcmVtb3RlIGhvc3RdIHsKLSAgICAgc2V0IHRlc3RmaWxlIFtyZW1vdGVfZG93bmxvYWQgaG9zdCB0bXBkaXIvYmludGVzdC5vXQotKyAgICBzZXQgdGVzdGZpbGUyIFtyZW1vdGVfZG93bmxvYWQgaG9zdCB0bXBkaXIvYmludGVzdDIub10KLSB9IGVsc2UgewotICAgICBzZXQgdGVzdGZpbGUgdG1wZGlyL2JpbnRlc3QubwotKyAgICBzZXQgdGVzdGZpbGUyIHRtcGRpci9iaW50ZXN0Mi5vCi0rfQotKwotK2lmIHsgIVtpc3RhcmdldCAiYWxwaGEtKi0qIl0gfHwgW2lzX2VsZl9mb3JtYXRdIH0gdGhlbiB7Ci0rICAgIHJlbW90ZV9maWxlIGhvc3QgZmlsZSBkZWxldGUgdG1wZGlyL2JpbnRlc3QuYQotKyAgICBzZXQgZ290IFtiaW51dGlsc19ydW4gJEFSICJyYyB0bXBkaXIvYmludGVzdC5hICR0ZXN0ZmlsZTIiXQotKyAgICBpZiAhW3N0cmluZyBtYXRjaCAiIiAkZ290XSB0aGVuIHsKLSsJZmFpbCAiYmludGVzdC5hIgotKwlyZW1vdGVfZmlsZSBob3N0IGRlbGV0ZSB0bXBkaXIvYmludGVzdC5hCi0rICAgIH0gZWxzZSB7Ci0rCWlmIFtpc19yZW1vdGUgaG9zdF0gewotKwkgICAgc2V0IHRlc3RhcmNoaXZlIFtyZW1vdGVfZG93bmxvYWQgaG9zdCB0bXBkaXIvYmludGVzdC5hXQotKwl9IGVsc2UgewotKwkgICAgc2V0IHRlc3RhcmNoaXZlIHRtcGRpci9iaW50ZXN0LmEKLSsJfQotKyAgICB9Ci0rICAgIHJlbW90ZV9maWxlIGhvc3QgZGVsZXRlIHRtcGRpci9iaW50ZXN0Mi5vCi0gfQotIAotICMgVGVzdCBvYmpkdW1wIC1mCi0gCi0tc2V0IGdvdCBbYmludXRpbHNfcnVuICRPQkpEVU1QICIkT0JKRFVNUEZMQUdTIC1mICR0ZXN0ZmlsZSJdCi0rcHJvYyB0ZXN0X29iamR1bXBfZiB7IHRlc3RmaWxlIGR1bXBmaWxlIH0gewotKyAgICBnbG9iYWwgT0JKRFVNUAotKyAgICBnbG9iYWwgT0JKRFVNUEZMQUdTCi0rICAgIGdsb2JhbCBjcHVzX3JlZ2V4Ci0gCi0tc2V0IHdhbnQgIiR0ZXN0ZmlsZTpcWyAJXF0qZmlsZSBmb3JtYXQuKmFyY2hpdGVjdHVyZTpcWyAJXF0qJHtjcHVzX3JlZ2V4fS4qSEFTX1JFTE9DLipIQVNfU1lNUyIKLSsgICAgc2V0IGdvdCBbYmludXRpbHNfcnVuICRPQkpEVU1QICIkT0JKRFVNUEZMQUdTIC1mICR0ZXN0ZmlsZSJdCi0gCi0taWYgIVtyZWdleHAgJHdhbnQgJGdvdF0gdGhlbiB7Ci0tICAgIGZhaWwgIm9iamR1bXAgLWYiCi0tfSBlbHNlIHsKLS0gICAgcGFzcyAib2JqZHVtcCAtZiIKLSsgICAgc2V0IHdhbnQgIiRkdW1wZmlsZTpcWyAJXF0qZmlsZSBmb3JtYXQuKmFyY2hpdGVjdHVyZTpcWyAJXF0qJHtjcHVzX3JlZ2V4fS4qSEFTX1JFTE9DLipIQVNfU1lNUyIKLSsKLSsgICAgaWYgIVtyZWdleHAgJHdhbnQgJGdvdF0gdGhlbiB7Ci0rCWZhaWwgIm9iamR1bXAgLWYgKCR0ZXN0ZmlsZSwgJGR1bXBmaWxlKSIKLSsgICAgfSBlbHNlIHsKLSsJcGFzcyAib2JqZHVtcCAtZiAoJHRlc3RmaWxlLCAkZHVtcGZpbGUpIgotKyAgICB9Ci0rfQotKwotK3Rlc3Rfb2JqZHVtcF9mICR0ZXN0ZmlsZSAkdGVzdGZpbGUKLStpZiB7IFsgcmVtb3RlX2ZpbGUgaG9zdCBleGlzdHMgJHRlc3RhcmNoaXZlIF0gfSB0aGVuIHsKLSsgICAgdGVzdF9vYmpkdW1wX2YgJHRlc3RhcmNoaXZlIGJpbnRlc3QyLm8KLSB9Ci0gCi0gIyBUZXN0IG9iamR1bXAgLWgKLSAKLS1zZXQgZ290IFtiaW51dGlsc19ydW4gJE9CSkRVTVAgIiRPQkpEVU1QRkxBR1MgLWggJHRlc3RmaWxlIl0KLStwcm9jIHRlc3Rfb2JqZHVtcF9oIHsgdGVzdGZpbGUgZHVtcGZpbGUgfSB7Ci0rICAgIGdsb2JhbCBPQkpEVU1QCi0rICAgIGdsb2JhbCBPQkpEVU1QRkxBR1MKLSAKLS1zZXQgd2FudCAiJHRlc3RmaWxlOlxbIAlcXSpmaWxlIGZvcm1hdC4qU2VjdGlvbnMuKlxbMC05XF0rXFsgCVxdK1xbXiAJXF0qKHRleHR8VEVYVHxQfFxcXCRDT0RFXFxcJClcW14gCVxdKlxbIAlcXSooXFswLTlhLWZBLUZcXSspLipcWzAtOVxdK1xbIAlcXStcW14gCVxdKihcXC5kYXRhfERBVEF8RF8xKVxbXiAJXF0qXFsgCVxdKihcWzAtOWEtZkEtRlxdKykiCi0rICAgIHNldCBnb3QgW2JpbnV0aWxzX3J1biAkT0JKRFVNUCAiJE9CSkRVTVBGTEFHUyAtaCAkdGVzdGZpbGUiXQotIAotLWlmICFbcmVnZXhwICR3YW50ICRnb3QgYWxsIHRleHRfbmFtZSB0ZXh0X3NpemUgZGF0YV9uYW1lIGRhdGFfc2l6ZV0gdGhlbiB7Ci0tICAgIGZhaWwgIm9iamR1bXAgLWgiCi0tfSBlbHNlIHsKLS0gICAgdmVyYm9zZSAidGV4dCBuYW1lIGlzICR0ZXh0X25hbWUgc2l6ZSBpcyAkdGV4dF9zaXplIgotLSAgICB2ZXJib3NlICJkYXRhIG5hbWUgaXMgJGRhdGFfbmFtZSBzaXplIGlzICRkYXRhX3NpemUiCi0tICAgIHNldCBldHMgOAotLSAgICBzZXQgZWRzIDQKLS0gICAgIyBUaGUgW3RpXWM0eCB0YXJnZXQgaGFzIHRoZSBwcm9wZXJ0eSBzaXplb2YoY2hhcik9c2l6ZW9mKGxvbmcpPTEKLS0gICAgaWYgW2lzdGFyZ2V0ICpjNHgqLSotKl0gdGhlbiB7Ci0tICAgICAgICBzZXQgZXRzIDIKLS0gICAgICAgIHNldCBlZHMgMQotLSAgICB9Ci0tICAgICMgYzU0eCBzZWN0aW9uIHNpemVzIGFyZSBpbiBieXRlcywgbm90IG9jdGV0czsgYWRqdXN0IGFjY29yZGluZ2x5Ci0tICAgIGlmIFtpc3RhcmdldCAqYzU0eCotKi0qXSB0aGVuIHsKLS0Jc2V0IGV0cyA0Ci0tCXNldCBlZHMgMgotLSAgICB9Ci0tICAgIGlmIHtbZXhwciAiMHgkdGV4dF9zaXplIl0gPCAkZXRzIHx8IFtleHByICIweCRkYXRhX3NpemUiXSA8ICRlZHN9IHRoZW4gewotLQlzZW5kX2xvZyAic2l6ZXMgdG9vIHNtYWxsXG4iCi0tCWZhaWwgIm9iamR1bXAgLWgiCi0rICAgIHNldCB3YW50ICIkZHVtcGZpbGU6XFsgCVxdKmZpbGUgZm9ybWF0LipTZWN0aW9ucy4qXFswLTlcXStcWyAJXF0rXFteIAlcXSoodGV4dHxURVhUfFB8XFxcJENPREVcXFwkKVxbXiAJXF0qXFsgCVxdKihcWzAtOWEtZkEtRlxdKykuKlxbMC05XF0rXFsgCVxdK1xbXiAJXF0qKFxcLmRhdGF8REFUQXxEXzEpXFteIAlcXSpcWyAJXF0qKFxbMC05YS1mQS1GXF0rKSIKLSsKLSsgICAgaWYgIVtyZWdleHAgJHdhbnQgJGdvdCBhbGwgdGV4dF9uYW1lIHRleHRfc2l6ZSBkYXRhX25hbWUgZGF0YV9zaXplXSB0aGVuIHsKLSsJZmFpbCAib2JqZHVtcCAtaCAoJHRlc3RmaWxlLCAkZHVtcGZpbGUpIgotICAgICB9IGVsc2UgewotLQlwYXNzICJvYmpkdW1wIC1oIgotKwl2ZXJib3NlICJ0ZXh0IG5hbWUgaXMgJHRleHRfbmFtZSBzaXplIGlzICR0ZXh0X3NpemUiCi0rCXZlcmJvc2UgImRhdGEgbmFtZSBpcyAkZGF0YV9uYW1lIHNpemUgaXMgJGRhdGFfc2l6ZSIKLSsJc2V0IGV0cyA4Ci0rCXNldCBlZHMgNAotKwkjIFRoZSBbdGldYzR4IHRhcmdldCBoYXMgdGhlIHByb3BlcnR5IHNpemVvZihjaGFyKT1zaXplb2YobG9uZyk9MQotKwlpZiBbaXN0YXJnZXQgKmM0eCotKi0qXSB0aGVuIHsKLSsgICAgICAgICAgICBzZXQgZXRzIDIKLSsgICAgICAgICAgICBzZXQgZWRzIDEKLSsJfQotKwkjIGM1NHggc2VjdGlvbiBzaXplcyBhcmUgaW4gYnl0ZXMsIG5vdCBvY3RldHM7IGFkanVzdCBhY2NvcmRpbmdseQotKwlpZiBbaXN0YXJnZXQgKmM1NHgqLSotKl0gdGhlbiB7Ci0rCSAgICBzZXQgZXRzIDQKLSsJICAgIHNldCBlZHMgMgotKyAgICAgICAgfQotKwlpZiB7W2V4cHIgIjB4JHRleHRfc2l6ZSJdIDwgJGV0cyB8fCBbZXhwciAiMHgkZGF0YV9zaXplIl0gPCAkZWRzfSB0aGVuIHsKLSsJICAgIHNlbmRfbG9nICJzaXplcyB0b28gc21hbGxcbiIKLSsJICAgIGZhaWwgIm9iamR1bXAgLWggKCR0ZXN0ZmlsZSwgJGR1bXBmaWxlKSIKLSsJfSBlbHNlIHsKLSsJICAgIHBhc3MgIm9iamR1bXAgLWggKCR0ZXN0ZmlsZSwgJGR1bXBmaWxlKSIKLSsJfQotICAgICB9Ci0gfQotIAotK3Rlc3Rfb2JqZHVtcF9oICR0ZXN0ZmlsZSAkdGVzdGZpbGUKLStpZiB7IFsgcmVtb3RlX2ZpbGUgaG9zdCBleGlzdHMgJHRlc3RhcmNoaXZlIF0gfSB0aGVuIHsKLSsgICAgdGVzdF9vYmpkdW1wX2ggJHRlc3RhcmNoaXZlIGJpbnRlc3QyLm8KLSt9Ci0rCi0gIyBUZXN0IG9iamR1bXAgLXQKLSAKLS1zZXQgZ290IFtiaW51dGlsc19ydW4gJE9CSkRVTVAgIiRPQkpEVU1QRkxBR1MgLXQgJHRlc3RmaWxlIl0KLStwcm9jIHRlc3Rfb2JqZHVtcF90IHsgdGVzdGZpbGV9IHsKLSsgICAgZ2xvYmFsIE9CSkRVTVAKLSsgICAgZ2xvYmFsIE9CSkRVTVBGTEFHUwotKwotKyAgICBzZXQgZ290IFtiaW51dGlsc19ydW4gJE9CSkRVTVAgIiRPQkpEVU1QRkxBR1MgLXQgJHRlc3RmaWxlIl0KLSsKLSsgICAgaWYgW2luZm8gZXhpc3RzIHZhcnNdIHRoZW4geyB1bnNldCB2YXJzIH0KLSsgICAgd2hpbGUge1tyZWdleHAgIihcW2EtelxdKl9zeW1ib2wpKC4qKSIgJGdvdCBhbGwgc3ltYm9sIHJlc3RdfSB7Ci0rCXNldCB2YXJzKCRzeW1ib2wpIDEKLSsJc2V0IGdvdCAkcmVzdAotKyAgICB9Ci0gCi0taWYgW2luZm8gZXhpc3RzIHZhcnNdIHRoZW4geyB1bnNldCB2YXJzIH0KLS13aGlsZSB7W3JlZ2V4cCAiKFxbYS16XF0qX3N5bWJvbCkoLiopIiAkZ290IGFsbCBzeW1ib2wgcmVzdF19IHsKLS0gICAgc2V0IHZhcnMoJHN5bWJvbCkgMQotLSAgICBzZXQgZ290ICRyZXN0Ci0rICAgIGlmIHshW2luZm8gZXhpc3RzIHZhcnModGV4dF9zeW1ib2wpXSBcCi0rCSB8fCAhW2luZm8gZXhpc3RzIHZhcnMoZGF0YV9zeW1ib2wpXSBcCi0rCSB8fCAhW2luZm8gZXhpc3RzIHZhcnMoY29tbW9uX3N5bWJvbCldIFwKLSsJIHx8ICFbaW5mbyBleGlzdHMgdmFycyhleHRlcm5hbF9zeW1ib2wpXX0gdGhlbiB7Ci0rCWZhaWwgIm9iamR1bXAgLXQgKCR0ZXN0ZmlsZSkiCi0rICAgIH0gZWxzZSB7Ci0rCXBhc3MgIm9iamR1bXAgLXQgKCR0ZXN0ZmlsZSkiCi0rICAgIH0KLSB9Ci0gCi0taWYgeyFbaW5mbyBleGlzdHMgdmFycyh0ZXh0X3N5bWJvbCldIFwKLS0gICAgIHx8ICFbaW5mbyBleGlzdHMgdmFycyhkYXRhX3N5bWJvbCldIFwKLS0gICAgIHx8ICFbaW5mbyBleGlzdHMgdmFycyhjb21tb25fc3ltYm9sKV0gXAotLSAgICAgfHwgIVtpbmZvIGV4aXN0cyB2YXJzKGV4dGVybmFsX3N5bWJvbCldfSB0aGVuIHsKLS0gICAgZmFpbCAib2JqZHVtcCAtdCIKLS19IGVsc2UgewotLSAgICBwYXNzICJvYmpkdW1wIC10IgotK3Rlc3Rfb2JqZHVtcF90ICR0ZXN0ZmlsZQotK2lmIHsgWyByZW1vdGVfZmlsZSBob3N0IGV4aXN0cyAkdGVzdGFyY2hpdmUgXSB9IHRoZW4gewotKyAgICB0ZXN0X29iamR1bXBfdCAkdGVzdGFyY2hpdmUKLSB9Ci0gCi0gIyBUZXN0IG9iamR1bXAgLXIKLSAKLS1zZXQgZ290IFtiaW51dGlsc19ydW4gJE9CSkRVTVAgIiRPQkpEVU1QRkxBR1MgLXIgJHRlc3RmaWxlIl0KLStwcm9jIHRlc3Rfb2JqZHVtcF9yIHsgdGVzdGZpbGUgZHVtcGZpbGUgfSB7Ci0rICAgIGdsb2JhbCBPQkpEVU1QCi0rICAgIGdsb2JhbCBPQkpEVU1QRkxBR1MKLSAKLS1zZXQgd2FudCAiJHRlc3RmaWxlOlxbIAlcXSpmaWxlIGZvcm1hdC4qUkVMT0NBVElPTiBSRUNPUkRTIEZPUiBcXFxbXFteXF1cXSoodGV4dHxURVhUfFB8XFxcJENPREVcXFwkKVxbXlxdXF0qXFxcXS4qZXh0ZXJuYWxfc3ltYm9sIgotKyAgICBzZXQgZ290IFtiaW51dGlsc19ydW4gJE9CSkRVTVAgIiRPQkpEVU1QRkxBR1MgLXIgJHRlc3RmaWxlIl0KLSAKLS1pZiBbcmVnZXhwICR3YW50ICRnb3RdIHRoZW4gewotLSAgICBwYXNzICJvYmpkdW1wIC1yIgotLX0gZWxzZSB7Ci0tICAgIGZhaWwgIm9iamR1bXAgLXIiCi0rICAgIHNldCB3YW50ICIkZHVtcGZpbGU6XFsgCVxdKmZpbGUgZm9ybWF0LipSRUxPQ0FUSU9OIFJFQ09SRFMgRk9SIFxcXFtcW15cXVxdKih0ZXh0fFRFWFR8UHxcXFwkQ09ERVxcXCQpXFteXF1cXSpcXFxdLipleHRlcm5hbF9zeW1ib2wiCi0rCi0rICAgIGlmIFtyZWdleHAgJHdhbnQgJGdvdF0gdGhlbiB7Ci0rCXBhc3MgIm9iamR1bXAgLXIgKCR0ZXN0ZmlsZSwgJGR1bXBmaWxlKSIKLSsgICAgfSBlbHNlIHsKLSsJZmFpbCAib2JqZHVtcCAtciAoJHRlc3RmaWxlLCAkZHVtcGZpbGUpIgotKyAgICB9Ci0rfQotKwotK3Rlc3Rfb2JqZHVtcF9yICR0ZXN0ZmlsZSAkdGVzdGZpbGUKLStpZiB7IFsgcmVtb3RlX2ZpbGUgaG9zdCBleGlzdHMgJHRlc3RhcmNoaXZlIF0gfSB0aGVuIHsKLSsgICAgdGVzdF9vYmpkdW1wX3IgJHRlc3RhcmNoaXZlIGJpbnRlc3QyLm8KLSB9Ci0gCi0gIyBUZXN0IG9iamR1bXAgLXMKLSAKLS1zZXQgZ290IFtiaW51dGlsc19ydW4gJE9CSkRVTVAgIiRPQkpEVU1QRkxBR1MgLXMgJHRlc3RmaWxlIl0KLStwcm9jIHRlc3Rfb2JqZHVtcF9zIHsgdGVzdGZpbGUgZHVtcGZpbGUgfSB7Ci0rICAgIGdsb2JhbCBPQkpEVU1QCi0rICAgIGdsb2JhbCBPQkpEVU1QRkxBR1MKLSAKLS1zZXQgd2FudCAiJHRlc3RmaWxlOlxbIAlcXSpmaWxlIGZvcm1hdC4qQ29udGVudHMuKih0ZXh0fFRFWFR8UHxcXFwkQ09ERVxcXCQpXFteMC05XF0qXFsgCVxdKlxbMC05YS1mQS1GXF0qXFsgCVxdKigwMDAwMDAwMXwwMTAwMDAwMHwwMDAwMDEwMCkuKkNvbnRlbnRzLiooZGF0YXxEQVRBfERfMSlcW14wLTlcXSpcWyAJXF0qXFswLTlhLWZBLUZcXSpcWyAJXF0qKDAwMDAwMDAyfDAyMDAwMDAwfDAwMDAwMjAwKSIKLSsgICAgc2V0IGdvdCBbYmludXRpbHNfcnVuICRPQkpEVU1QICIkT0JKRFVNUEZMQUdTIC1zICR0ZXN0ZmlsZSJdCi0gCi0taWYgW3JlZ2V4cCAkd2FudCAkZ290XSB0aGVuIHsKLS0gICAgcGFzcyAib2JqZHVtcCAtcyIKLS19IGVsc2UgewotLSAgICBmYWlsICJvYmpkdW1wIC1zIgotKyAgICBzZXQgd2FudCAiJGR1bXBmaWxlOlxbIAlcXSpmaWxlIGZvcm1hdC4qQ29udGVudHMuKih0ZXh0fFRFWFR8UHxcXFwkQ09ERVxcXCQpXFteMC05XF0qXFsgCVxdKlxbMC05YS1mQS1GXF0qXFsgCVxdKigwMDAwMDAwMXwwMTAwMDAwMHwwMDAwMDEwMCkuKkNvbnRlbnRzLiooZGF0YXxEQVRBfERfMSlcW14wLTlcXSpcWyAJXF0qXFswLTlhLWZBLUZcXSpcWyAJXF0qKDAwMDAwMDAyfDAyMDAwMDAwfDAwMDAwMjAwKSIKLSsKLSsgICAgaWYgW3JlZ2V4cCAkd2FudCAkZ290XSB0aGVuIHsKLSsJcGFzcyAib2JqZHVtcCAtcyAoJHRlc3RmaWxlLCAkZHVtcGZpbGUpIgotKyAgICB9IGVsc2UgewotKwlmYWlsICJvYmpkdW1wIC1zICgkdGVzdGZpbGUsICRkdW1wZmlsZSkiCi0rICAgIH0KLSt9Ci0rCi0rdGVzdF9vYmpkdW1wX3MgJHRlc3RmaWxlICR0ZXN0ZmlsZQotK2lmIHsgWyByZW1vdGVfZmlsZSBob3N0IGV4aXN0cyAkdGVzdGFyY2hpdmUgXSB9IHRoZW4gewotKyAgICB0ZXN0X29iamR1bXBfcyAkdGVzdGFyY2hpdmUgYmludGVzdDIubwotIH0KLSAKLSAjIFRlc3Qgb2JqZHVtcCAtcyBvbiBhIGZpbGUgdGhhdCBjb250YWlucyBhIGNvbXByZXNzZWQgLmRlYnVnIHNlY3Rpb24KLUluZGV4OiBnaXQvYmZkL0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JmZC9DaGFuZ2VMb2cKLSsrKyBnaXQvYmZkL0NoYW5nZUxvZwotQEAgLTEsMyArMSw5IEBACi0rMjAxNy0wNS0zMCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgotKwotKyAgICAgICBQUiBiaW51dGlscy8yMTUxOQotKyAgICAgICAqIGJmZGlvLmMgKGJmZF9nZXRfZmlsZV9zaXplKTogTmV3IGZ1bmN0aW9uLgotKyAgICAgICAqIGJmZC1pbjIuaDogUmVnZW5lcmF0ZWQuCi0rCi0gMjAxNy0wNi0yNyAgQWxhbiBNb2RyYSAgPGFtb2RyYUBnbWFpbC5jb20+Ci0gCi0gICAgICAgIFBSIGJpbnV0aWxzLzIxNjY1Ci1JbmRleDogZ2l0L2JpbnV0aWxzL0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL2JpbnV0aWxzL0NoYW5nZUxvZwotKysrIGdpdC9iaW51dGlscy9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsMTYgQEAKLSsyMDE3LTA1LTMwICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+Ci0rCi0rICAgICAgIFBSIGJpbnV0aWxzLzIxNTE5Ci0rICAgICAgICogb2JqZHVtcC5jIChkdW1wX3JlbG9jc19pbl9zZWN0aW9uKTogUmVwbGFjZSBnZXRfZmlsZV9zaXplCi0rICAgICAgIHdpdGggYmZkX2dldF9maWxlX3NpemUgdG8gZ2V0IGFyY2hpdmUgZWxlbWVudCBzaXplLgotKyAgICAgICAqIHRlc3RzdWl0ZS9iaW51dGlscy1hbGwvb2JqZHVtcC5leHAgKHRlc3Rfb2JqZHVtcF9mKTogTmV3Ci0rICAgICAgIHByb2MuCi0rICAgICAgICh0ZXN0X29iamR1bXBfaCk6IExpa2V3aXNlLgotKyAgICAgICAodGVzdF9vYmpkdW1wX3QpOiBMaWtld2lzZS4KLSsgICAgICAgKHRlc3Rfb2JqZHVtcF9yKTogTGlrZXdpc2UuCi0rICAgICAgICh0ZXN0X29iamR1bXBfcyk6IExpa2V3aXNlLgotKyAgICAgICBBZGQgb2JqZHVtcCB0ZXN0cyBvbiBhcmNoaXZlLgotKwotIDIwMTctMDctMDEgIEFsYW4gTW9kcmEgIDxhbW9kcmFAZ21haWwuY29tPgotIAotIAlQUiBiaW51dGlscy8yMTY2NQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlsc18yLjI4LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlsc18yLjI4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNTE0MzdiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHNfMi4yOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLXJlcXVpcmUgYmludXRpbHMuaW5jCi1yZXF1aXJlIGJpbnV0aWxzLSR7UFZ9LmluYwotCi1ERVBFTkRTICs9ICJmbGV4IGJpc29uIHpsaWIiCi0KLUVYVFJBX09FQ09ORiArPSAiLS13aXRoLXN5c3Jvb3Q9LyBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtaW5zdGFsbC1saWJiZmQgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLWluc3RhbGwtbGliaWJlcnR5IFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1zaGFyZWQgXAotICAgICAgICAgICAgICAgIC0td2l0aC1zeXN0ZW0temxpYiBcCi0gICAgICAgICAgICAgICAgIgotCi1FWFRSQV9PRU1BS0VfYXBwZW5kX2xpYmMtbXVzbCA9ICJcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndF9jdl9mdW5jX2dudWdldHRleHQxX2xpYmM9eWVzIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd0X2N2X2Z1bmNfZ251Z2V0dGV4dDJfbGliYz15ZXMgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCi1FWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIi0tZW5hYmxlLXRhcmdldHM9YWxsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1lbmFibGUtNjQtYml0LWJmZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZW5hYmxlLWluc3RhbGwtbGliaWJlcnR5IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1lbmFibGUtaW5zdGFsbC1saWJiZmQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWRpc2FibGUtd2Vycm9yIgotCi1kb19pbnN0YWxsX2NsYXNzLW5hdGl2ZSAoKSB7Ci0JYXV0b3Rvb2xzX2RvX2luc3RhbGwKLQotCSMgSW5zdGFsbCB0aGUgbGliaWJlcnR5IGhlYWRlcgotCWluc3RhbGwgLWQgJHtEfSR7aW5jbHVkZWRpcn0KLQlpbnN0YWxsIC1tIDY0NCAke1N9L2luY2x1ZGUvYW5zaWRlY2wuaCAke0R9JHtpbmNsdWRlZGlyfQotCWluc3RhbGwgLW0gNjQ0ICR7U30vaW5jbHVkZS9saWJpYmVydHkuaCAke0R9JHtpbmNsdWRlZGlyfQotCi0JIyBXZSBvbmx5IHdhbnQgbGliaWJlcnR5LCBsaWJiZmQgYW5kIGxpYm9wY29kZXMKLQlybSAtcmYgJHtEfSR7YmluZGlyfQotCXJtIC1yZiAke0R9JHtwcmVmaXh9LyR7VEFSR0VUX1NZU30KLQlybSAtcmYgJHtEfSR7cHJlZml4fS9saWIvbGRzY3JpcHRzCi0Jcm0gLXJmICR7RH0ke3ByZWZpeH0vc2hhcmUvaW5mbwotCXJtIC1yZiAke0R9JHtwcmVmaXh9L3NoYXJlL2xvY2FsZQotCXJtIC1yZiAke0R9JHtwcmVmaXh9L3NoYXJlL21hbgotCXJtZGlyICR7RH0ke3ByZWZpeH0vc2hhcmUgfHwgOgotCXJtZGlyICR7RH0vJHtsaWJkaXJ9L2djYy1saWIgfHwgOgotCXJtZGlyICR7RH0vJHtsaWJkaXJ9NjQvZ2NjLWxpYiB8fCA6Ci0Jcm1kaXIgJHtEfS8ke2xpYmRpcn0gfHwgOgotCXJtZGlyICR7RH0vJHtsaWJkaXJ9NjQgfHwgOgotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzXzIuMjkuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHNfMi4yOS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxYTk3NDgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzXzIuMjkuMS5iYgpAQCAtMCwwICsxLDQ5IEBACityZXF1aXJlIGJpbnV0aWxzLmluYworcmVxdWlyZSBiaW51dGlscy0ke1BWfS5pbmMKKworREVQRU5EUyArPSAiZmxleCBiaXNvbiB6bGliIgorCitFWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1zeXNyb290PS8gXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLWluc3RhbGwtbGliYmZkIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1pbnN0YWxsLWxpYmliZXJ0eSBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtc2hhcmVkIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtc3lzdGVtLXpsaWIgXAorICAgICAgICAgICAgICAgICIKKworRVhUUkFfT0VNQUtFX2FwcGVuZF9saWJjLW11c2wgPSAiXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3RfY3ZfZnVuY19nbnVnZXR0ZXh0MV9saWJjPXllcyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndF9jdl9mdW5jX2dudWdldHRleHQyX2xpYmM9eWVzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgorRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICItLWVuYWJsZS10YXJnZXRzPWFsbCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZW5hYmxlLTY0LWJpdC1iZmQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWVuYWJsZS1pbnN0YWxsLWxpYmliZXJ0eSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZW5hYmxlLWluc3RhbGwtbGliYmZkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXdlcnJvciIKKworZG9faW5zdGFsbF9jbGFzcy1uYXRpdmUgKCkgeworCWF1dG90b29sc19kb19pbnN0YWxsCisKKwkjIEluc3RhbGwgdGhlIGxpYmliZXJ0eSBoZWFkZXIKKwlpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9CisJaW5zdGFsbCAtbSA2NDQgJHtTfS9pbmNsdWRlL2Fuc2lkZWNsLmggJHtEfSR7aW5jbHVkZWRpcn0KKwlpbnN0YWxsIC1tIDY0NCAke1N9L2luY2x1ZGUvbGliaWJlcnR5LmggJHtEfSR7aW5jbHVkZWRpcn0KKworCSMgV2Ugb25seSB3YW50IGxpYmliZXJ0eSwgbGliYmZkIGFuZCBsaWJvcGNvZGVzCisJcm0gLXJmICR7RH0ke2JpbmRpcn0KKwlybSAtcmYgJHtEfSR7cHJlZml4fS8ke1RBUkdFVF9TWVN9CisJcm0gLXJmICR7RH0ke3ByZWZpeH0vbGliL2xkc2NyaXB0cworCXJtIC1yZiAke0R9JHtwcmVmaXh9L3NoYXJlL2luZm8KKwlybSAtcmYgJHtEfSR7cHJlZml4fS9zaGFyZS9sb2NhbGUKKwlybSAtcmYgJHtEfSR7cHJlZml4fS9zaGFyZS9tYW4KKwlybWRpciAke0R9JHtwcmVmaXh9L3NoYXJlIHx8IDoKKwlybWRpciAke0R9LyR7bGliZGlyfS9nY2MtbGliIHx8IDoKKwlybWRpciAke0R9LyR7bGliZGlyfTY0L2djYy1saWIgfHwgOgorCXJtZGlyICR7RH0vJHtsaWJkaXJ9IHx8IDoKKwlybWRpciAke0R9LyR7bGliZGlyfTY0IHx8IDoKK30KKworIyBTcGxpdCBvdXQgbGliYmZkLSouc28gc28gaW5jbHVkaW5nIHBlcmYgZG9lc24ndCBpbmNsdWRlIGV4dHJhIHN0dWZmCitQQUNLQUdFX0JFRk9SRV9QTiArPSAibGliYmZkIgorRklMRVNfbGliYmZkID0gIiR7bGliZGlyfS9saWJiZmQtKi5zbyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaXNvbi9iaXNvbi8wMDAxLXNyYy1sb2NhbC5tay1maXgtcGFyYWxsZWwtaXNzdWUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Jpc29uL2Jpc29uLzAwMDEtc3JjLWxvY2FsLm1rLWZpeC1wYXJhbGxlbC1pc3N1ZS5wYXRjaAppbmRleCA5NTQzYTU2Li4xZTg2ZjU1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Jpc29uL2Jpc29uLzAwMDEtc3JjLWxvY2FsLm1rLWZpeC1wYXJhbGxlbC1pc3N1ZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Jpc29uL2Jpc29uLzAwMDEtc3JjLWxvY2FsLm1rLWZpeC1wYXJhbGxlbC1pc3N1ZS5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gM2ExNWY3YzlhY2U2YzAyOTRlZGMzMTNhMTg0OGNhZmNjMzFiMmE5MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNWI5MjA0ZWVlNGIwNmI0OGQ1NGVjYzNlZjNhMGI1NmZjNWNjODRmOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgogRGF0ZTogRnJpLCAyNCBBcHIgMjAxNSAwMDozODozMiAtMDcwMAogU3ViamVjdDogW1BBVENIXSBzcmMvbG9jYWwubWs6IGZpeCBwYXJhbGxlbCBpc3N1ZQpAQCAtOSwxMSArOSwxMiBAQAogL2Jpbi9iYXNoOiBzcmMveWFjYy50bXA6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKIE1ha2VmaWxlOjY2NzA6IHJlY2lwZSBmb3IgdGFyZ2V0ICdzcmMveWFjYycgZmFpbGVkCiAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgWyBodHRwOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvYmlzb24tcGF0Y2hlcy8yMDE3LTA3L21zZzAwMDAwLmh0bWwgXQogCiBTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+CiAtLS0KLSBzcmMvbG9jYWwubWsgfCAgICAxICsKKyBzcmMvbG9jYWwubWsgfCAxICsKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKIAogZGlmZiAtLWdpdCBhL3NyYy9sb2NhbC5tayBiL3NyYy9sb2NhbC5tawpAQCAtMjksNSArMzAsNSBAQAogIAkkKEFNX1ZfYXQpZWNobyAiZXhlYyAnJChiaW5kaXIpL2Jpc29uJyAteSAiJyIkJEAiJyA+PiRALnRtcAogIAkkKEFNX1ZfYXQpY2htb2QgYSt4ICRALnRtcAogLS0gCi0xLjcuOS41CisyLjguMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Jpc29uL2Jpc29uXzMuMC40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaXNvbi9iaXNvbl8zLjAuNC5iYgppbmRleCBjZmZjZDg4Li43ZDA2NmJlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Jpc29uL2Jpc29uXzMuMC40LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmlzb24vYmlzb25fMy4wLjQuYmIKQEAgLTIzLDcgKzIzLDYgQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICJjMzQyMjAxZGUxMDRjYzljZTBhMjFlMGFkMTBkNDAyMSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJhNzI0MjhjNzkxN2JkZjlmYTkzY2I4MTgxYzk3MWI2ZTIyODM0MTI1ODQ4Y2YxZDAzY2UxMGIxYmIwNzE2ZmUxIgogCi1MREZMQUdTX3ByZXBlbmRfbGliYy11Y2xpYmMgPSAiIC1scnQgIgogREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiZ2V0dGV4dC1taW5pbWFsLW5hdGl2ZSIKIAogaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Jvb3RjaGFydDIvYm9vdGNoYXJ0Ml8wLjE0LjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Jvb3RjaGFydDIvYm9vdGNoYXJ0Ml8wLjE0LjguYmIKaW5kZXggNGYwMTczNC4uYTMxMDEzNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ib290Y2hhcnQyL2Jvb3RjaGFydDJfMC4xNC44LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYm9vdGNoYXJ0Mi9ib290Y2hhcnQyXzAuMTQuOC5iYgpAQCAtMTM0LDcgKzEzNCw3IEBACiAgICAgZWNobyAnRVhJVF9QUk9DPSIkRVhJVF9QUk9DIG1hdGNoYm94LXdpbmRvdy1tYW5hZ2VyIicgPj4gJHtEfSR7c3lzY29uZmRpcn0vYm9vdGNoYXJ0ZC5jb25mCiAKICAgICMgVXNlIHB5dGhvbiAzIGluc3RlYWQgb2YgcHl0aG9uIDIKLSAgIHNlZCAtaSAtZSAnMXMsIyEuKnB5dGhvbi4qLCMhJHtiaW5kaXJ9L3B5dGhvbjMsJyAke0R9JHtiaW5kaXJ9L3B5Ym9vdGNoYXJ0Z3VpCisgICBzZWQgLWkgLWUgJzFzLCMhLipweXRob24uKiwjISR7VVNSQklOUEFUSH0vZW52IHB5dGhvbjMsJyAke0R9JHtiaW5kaXJ9L3B5Ym9vdGNoYXJ0Z3VpCiB9CiAKIFBBQ0tBR0VTID0rICJweWJvb3RjaGFydGd1aSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHMvMDAwMS1NYWtlZmlsZS1idWlsZC1ta3RhYmxlcy11c2luZy1uYXRpdmUtZ2NjLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idHJmcy10b29scy9idHJmcy10b29scy8wMDAxLU1ha2VmaWxlLWJ1aWxkLW1rdGFibGVzLXVzaW5nLW5hdGl2ZS1nY2MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTgxOTAwZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHMvMDAwMS1NYWtlZmlsZS1idWlsZC1ta3RhYmxlcy11c2luZy1uYXRpdmUtZ2NjLnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK0Zyb20gZTU4MzY5ZjZkMzZiYzUxZWI1OWQ2YWZhMzRjMWNhZTNmZjA4MTBlZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogTW9uLCA3IEF1ZyAyMDE3IDE0OjEwOjM4ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlOiBidWlsZCBta3RhYmxlcyB1c2luZyBuYXRpdmUgZ2NjCisKK0l0J3MgYSB0aHJvd2F3YXkgaGVscGVyIGJpbmFyeSB1c2VkIGR1cmluZyBidWlsZCwgYW5kIHNvIGl0IG5lZWRzIHRvCitiZSBuYXRpdmUuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2Ugc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIE1ha2VmaWxlIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQoraW5kZXggYjNlMmI2My4uMzQ3YWFmMSAxMDA2NDQKKy0tLSBhL01ha2VmaWxlCisrKysgYi9NYWtlZmlsZQorQEAgLTMyMyw3ICszMjMsNyBAQCB2ZXJzaW9uLmg6IHZlcnNpb24uc2ggdmVyc2lvbi5oLmluIGNvbmZpZ3VyZS5hYworIAorIG1rdGFibGVzOiBrZXJuZWwtbGliL21rdGFibGVzLmMKKyAJQGVjaG8gIiAgICBbQ0NdICAgICAkQCIKKy0JJChRKSQoQ0MpICQoQ0ZMQUdTKSAkPCAtbyAkQAorKwkkKFEpJChCVUlMRF9DQykgJChCVUlMRF9DRkxBR1MpICQ8IC1vICRACisgCisga2VybmVsLWxpYi90YWJsZXMuYzogbWt0YWJsZXMKKyAJQGVjaG8gIiAgICBbVEFCTEVdICAkQCIKKy0tIAorMi4xMy4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHNfNC4xMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHNfNC4xMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jM2NjODljCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idHJmcy10b29scy9idHJmcy10b29sc180LjEyLmJiCkBAIC0wLDAgKzEsMzUgQEAKK1NVTU1BUlkgPSAiQ2hlY2tzdW1taW5nIENvcHkgb24gV3JpdGUgRmlsZXN5c3RlbSB1dGlsaXRpZXMiCitERVNDUklQVElPTiA9ICJCdHJmcyBpcyBhIG5ldyBjb3B5IG9uIHdyaXRlIGZpbGVzeXN0ZW0gZm9yIExpbnV4IGFpbWVkIGF0IFwKK2ltcGxlbWVudGluZyBhZHZhbmNlZCBmZWF0dXJlcyB3aGlsZSBmb2N1c2luZyBvbiBmYXVsdCB0b2xlcmFuY2UsIHJlcGFpciBhbmQgXAorZWFzeSBhZG1pbmlzdHJhdGlvbi4gXAorVGhpcyBwYWNrYWdlIGNvbnRhaW5zIHV0aWxpdGllcyAobWtmcywgZnNjaywgYnRyZnNjdGwpIHVzZWQgdG8gd29yayB3aXRoIFwKK2J0cmZzIGFuZCBhbiB1dGlsaXR5IChidHJmcy1jb252ZXJ0KSB0byBtYWtlIGEgYnRyZnMgZmlsZXN5c3RlbSBmcm9tIGFuIGV4dDMuIgorCitIT01FUEFHRSA9ICJodHRwczovL2J0cmZzLndpa2kua2VybmVsLm9yZyIKKworTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWZjYjAyZGM1NTJhMDQxZGVlMjdlNGI4NWM3Mzk2MDY3IgorU0VDVElPTiA9ICJiYXNlIgorREVQRU5EUyA9ICJ1dGlsLWxpbnV4IGF0dHIgZTJmc3Byb2dzIGx6byBhY2wiCitERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIHVkZXYiCitSREVQRU5EU18ke1BOfSA9ICJsaWJnY2MiCisKK1NSQ1JFViA9ICIwNjA3MTMyYzMyMDBiY2VhZDE0MjZlNmRjNjg1NDMyMDA4ZGU5NWRlIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQva2RhdmUvYnRyZnMtcHJvZ3MuZ2l0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUtYnVpbGQtbWt0YWJsZXMtdXNpbmctbmF0aXZlLWdjYy5wYXRjaCBcCisgICAgICAgICAgICIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZyBtYW5wYWdlcworCitQQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLWVuYWJsZS1kb2N1bWVudGF0aW9uLCAtLWRpc2FibGUtZG9jdW1lbnRhdGlvbiwgYXNjaWlkb2MtbmF0aXZlIHhtbHRvLW5hdGl2ZSIKK0VYVFJBX09FQ09ORl9hcHBlbmRfbGliYy1tdXNsID0gIiAtLWRpc2FibGUtYmFja3RyYWNlICIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisJIyBVcHN0cmVhbSBkb2Vzbid0IHNoaXAgdGhpcyBhbmQgYXV0b3JlY29uZiB3b24ndCBpbnN0YWxsIGl0IGFzIGF1dG9tYWtlIGlzbid0IHVzZWQuCisJbWtkaXIgLXAgJHtTfS9jb25maWcKKwljcCAtZiAkKGF1dG9tYWtlIC0tcHJpbnQtbGliZGlyKS9pbnN0YWxsLXNoICR7U30vY29uZmlnLworfQorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHNfNC45LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J0cmZzLXRvb2xzL2J0cmZzLXRvb2xzXzQuOS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNWU5ZTIyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHNfNC45LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1TVU1NQVJZID0gIkNoZWNrc3VtbWluZyBDb3B5IG9uIFdyaXRlIEZpbGVzeXN0ZW0gdXRpbGl0aWVzIgotREVTQ1JJUFRJT04gPSAiQnRyZnMgaXMgYSBuZXcgY29weSBvbiB3cml0ZSBmaWxlc3lzdGVtIGZvciBMaW51eCBhaW1lZCBhdCBcCi1pbXBsZW1lbnRpbmcgYWR2YW5jZWQgZmVhdHVyZXMgd2hpbGUgZm9jdXNpbmcgb24gZmF1bHQgdG9sZXJhbmNlLCByZXBhaXIgYW5kIFwKLWVhc3kgYWRtaW5pc3RyYXRpb24uIFwKLVRoaXMgcGFja2FnZSBjb250YWlucyB1dGlsaXRpZXMgKG1rZnMsIGZzY2ssIGJ0cmZzY3RsKSB1c2VkIHRvIHdvcmsgd2l0aCBcCi1idHJmcyBhbmQgYW4gdXRpbGl0eSAoYnRyZnMtY29udmVydCkgdG8gbWFrZSBhIGJ0cmZzIGZpbGVzeXN0ZW0gZnJvbSBhbiBleHQzLiIKLQotSE9NRVBBR0UgPSAiaHR0cHM6Ly9idHJmcy53aWtpLmtlcm5lbC5vcmciCi0KLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mY2IwMmRjNTUyYTA0MWRlZTI3ZTRiODVjNzM5NjA2NyIKLVNFQ1RJT04gPSAiYmFzZSIKLURFUEVORFMgPSAidXRpbC1saW51eCBhdHRyIGUyZnNwcm9ncyBsem8gYWNsIgotREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiB1ZGV2IgotUkRFUEVORFNfJHtQTn0gPSAibGliZ2NjIgotCi1TUkNSRVYgPSAiOTY0ODVjMzRhYzAzMjlmYjAwNzM0NzZmMTZkMjA4M2M2NDcwMWYyOSIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2tkYXZlL2J0cmZzLXByb2dzLmdpdCIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZyBtYW5wYWdlcwotCi1QQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLWVuYWJsZS1kb2N1bWVudGF0aW9uLCAtLWRpc2FibGUtZG9jdW1lbnRhdGlvbiwgYXNjaWlkb2MtbmF0aXZlIHhtbHRvLW5hdGl2ZSIKLUVYVFJBX09FQ09ORl9hcHBlbmRfbGliYy1tdXNsID0gIiAtLWRpc2FibGUtYmFja3RyYWNlICIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0JIyBVcHN0cmVhbSBkb2Vzbid0IHNoaXAgdGhpcyBhbmQgYXV0b3JlY29uZiB3b24ndCBpbnN0YWxsIGl0IGFzIGF1dG9tYWtlIGlzbid0IHVzZWQuCi0JbWtkaXIgLXAgJHtTfS9jb25maWcKLQljcCAtZiAkKGF1dG9tYWtlIC0tcHJpbnQtbGliZGlyKS9pbnN0YWxsLXNoICR7U30vY29uZmlnLwotfQotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnVpbGQtY29tcGFyZS9idWlsZC1jb21wYXJlX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnVpbGQtY29tcGFyZS9idWlsZC1jb21wYXJlX2dpdC5iYgppbmRleCBjNjBjMTY0Li44NGQwNGNmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J1aWxkLWNvbXBhcmUvYnVpbGQtY29tcGFyZV9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idWlsZC1jb21wYXJlL2J1aWxkLWNvbXBhcmVfZ2l0LmJiCkBAIC0yMiw2ICsyMiw3IEBACiBTUkNSRVYgPSAiYzUzNTJjMDU0YzZlZjE1NzM1ZGEzMWI3NmQ2ZDg4NjIwZjRhZmYwYSIKIFBFID0gIjEiCiBQViA9ICIyMDE1LjAyLjEwK2dpdCR7U1JDUFZ9IgorVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY2hycGF0aC9jaHJwYXRoL3N0YW5kYXJkZG9jLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jaHJwYXRoL2NocnBhdGgvc3RhbmRhcmRkb2MucGF0Y2gKaW5kZXggZjk2ZjEwNC4uM2QzMDNmYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jaHJwYXRoL2NocnBhdGgvc3RhbmRhcmRkb2MucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jaHJwYXRoL2NocnBhdGgvc3RhbmRhcmRkb2MucGF0Y2gKQEAgLTEsMTQgKzEsMjQgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZworRnJvbSAyODViNWZiZjFkNmIyNWZmNTVkMzA1YzE3ZWRmNGQzMjdiZjE5ZGQzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CitEYXRlOiBUdWUsIDUgSnVsIDIwMTEgMjM6NDI6MjkgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gY2hycGF0aDogRW5zdXJlIHRoZSBwYWNrYWdlIHJlc3BlY3RzIHRoZSBkb2NkaXIgdmFyaWFibGUKIAotYXV0b2NvbmYvYXV0b21ha2Ugc2V0IGRvY2RpciBhdXRvbWF0aWNhbGx5LCB1c2UgdGhlaXIgdmFsdWUgZW5zdXJpbmcgCithdXRvY29uZi9hdXRvbWFrZSBzZXQgZG9jZGlyIGF1dG9tYXRpY2FsbHksIHVzZSB0aGVpciB2YWx1ZSBlbnN1cmluZwogZG9jIGZpbGVzIGFyZSBwbGFjZWQgaW50byAkZGF0YWRpci9kb2MsIG5vdCAkcHJlZml4L2RvYy4KIAogUlAgNS83LzIwMTEKIAotSW5kZXg6IGNocnBhdGgtMC4xMy9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGNocnBhdGgtMC4xMy5vcmlnL01ha2VmaWxlLmFtCTIwMTEtMDctMDUgMjM6NDA6MTQuNzY5OTIwMjU0ICswMTAwCi0rKysgY2hycGF0aC0wLjEzL01ha2VmaWxlLmFtCTIwMTEtMDctMDUgMjM6NDA6MTkuODE5OTIwNjM1ICswMTAwCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbIGh0dHA6Ly9saXN0cy5hbGlvdGguZGViaWFuLm9yZy9waXBlcm1haWwvY2hycGF0aC1kZXZlbC9XZWVrLW9mLU1vbi0yMDE3MDcxMC8wMDAwMTMuaHRtbCBdCisKK1NpZ25lZC1vZmYtYnk6IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+CistLS0KKyBNYWtlZmlsZS5hbSB8IDIgLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KK2luZGV4IGI1MGFkMjEuLjVmN2U4NjEgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5hbQorKysrIGIvTWFrZWZpbGUuYW0KIEBAIC0xLDcgKzEsNSBAQAogIFNVQkRJUlMgPSB0ZXN0c3VpdGUgZGViCiAgCkBAIC0xNywzICsyNyw2IEBACiAgZG9jX0RBVEEgPSBBVVRIT1JTIENPUFlJTkcgQ2hhbmdlTG9nIElOU1RBTEwgTkVXUyBSRUFETUUKICAKICBiaW5fUFJPR1JBTVMgPSBjaHJwYXRoCistLSAKKzIuOC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UtbmF0aXZlXzMuNy4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS1uYXRpdmVfMy43LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhZDQzNDUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS1uYXRpdmVfMy43LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1yZXF1aXJlIGNtYWtlLmluYwotaW5oZXJpdCBuYXRpdmUKLQotREVQRU5EUyArPSAiYnppcDItcmVwbGFjZW1lbnQtbmF0aXZlIGV4cGF0LW5hdGl2ZSB4ei1uYXRpdmUgemxpYi1uYXRpdmUgY3VybC1uYXRpdmUiCi0KLVNSQ19VUkkgKz0gIlwKLSAgICBmaWxlOi8vY21saWJhcmNoaXZlLWRpc2FibGUtZXh0MmZzLnBhdGNoIFwKLSIKLQotQiA9ICIke1dPUktESVJ9L2J1aWxkIgotZG9fY29uZmlndXJlW2NsZWFuZGlyc10gPSAiJHtCfSIKLQotIyBEaXNhYmxlIGNjbWFrZSBzaW5jZSB3ZSBkb24ndCBkZXBlbmQgb24gbmN1cnNlcwotQ01BS0VfRVhUUkFDT05GID0gIlwKLSAgICAtRENNQUtFX0xJQlJBUllfUEFUSD0ke1NUQUdJTkdfTElCRElSX05BVElWRX0gXAotICAgIC1EQlVJTERfQ3Vyc2VzRGlhbG9nPTAgXAotICAgIC1EQ01BS0VfVVNFX1NZU1RFTV9MSUJSQVJJRVM9MSBcCi0gICAgLURDTUFLRV9VU0VfU1lTVEVNX0xJQlJBUllfSlNPTkNQUD0wIFwKLSAgICAtRENNQUtFX1VTRV9TWVNURU1fTElCUkFSWV9MSUJBUkNISVZFPTAgXAotICAgIC1EQ01BS0VfVVNFX1NZU1RFTV9MSUJSQVJZX0xJQlVWPTAgXAotICAgIC1ERU5BQkxFX0FDTD0wIC1ESEFWRV9BQ0xfTElCQUNMX0g9MCBcCi0gICAgLURIQVZFX1NZU19BQ0xfSD0wIFwKLSIKLQotZG9fY29uZmlndXJlICgpIHsKLQkke1N9L2NvbmZpZ3VyZSAtLXZlcmJvc2UgLS1wcmVmaXg9JHtwcmVmaXh9IC0tICR7Q01BS0VfRVhUUkFDT05GfQotfQotCi1kb19jb21waWxlKCkgewotCW9lX3J1bm1ha2UKLX0KLQotZG9faW5zdGFsbCgpIHsKLQlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKLX0KLQotZG9fY29tcGlsZVtwcm9ncmVzc10gPSAicGVyY2VudCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UtbmF0aXZlXzMuOC4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS1uYXRpdmVfMy44LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTU1ZThiMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UtbmF0aXZlXzMuOC4yLmJiCkBAIC0wLDAgKzEsMzggQEAKK3JlcXVpcmUgY21ha2UuaW5jCitpbmhlcml0IG5hdGl2ZQorCitERVBFTkRTICs9ICJiemlwMi1yZXBsYWNlbWVudC1uYXRpdmUgZXhwYXQtbmF0aXZlIHh6LW5hdGl2ZSB6bGliLW5hdGl2ZSBjdXJsLW5hdGl2ZSIKKworU1JDX1VSSSArPSAiXAorICAgIGZpbGU6Ly9jbWxpYmFyY2hpdmUtZGlzYWJsZS1leHQyZnMucGF0Y2ggXAorIgorCitCID0gIiR7V09SS0RJUn0vYnVpbGQiCitkb19jb25maWd1cmVbY2xlYW5kaXJzXSA9ICIke0J9IgorCisjIERpc2FibGUgY2NtYWtlIHNpbmNlIHdlIGRvbid0IGRlcGVuZCBvbiBuY3Vyc2VzCitDTUFLRV9FWFRSQUNPTkYgPSAiXAorICAgIC1EQ01BS0VfTElCUkFSWV9QQVRIPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfSBcCisgICAgLURCVUlMRF9DdXJzZXNEaWFsb2c9MCBcCisgICAgLURDTUFLRV9VU0VfU1lTVEVNX0xJQlJBUklFUz0xIFwKKyAgICAtRENNQUtFX1VTRV9TWVNURU1fTElCUkFSWV9KU09OQ1BQPTAgXAorICAgIC1EQ01BS0VfVVNFX1NZU1RFTV9MSUJSQVJZX0xJQkFSQ0hJVkU9MCBcCisgICAgLURDTUFLRV9VU0VfU1lTVEVNX0xJQlJBUllfTElCVVY9MCBcCisgICAgLURDTUFLRV9VU0VfU1lTVEVNX0xJQlJBUllfTElCUkhBU0g9MCBcCisgICAgLURFTkFCTEVfQUNMPTAgLURIQVZFX0FDTF9MSUJBQ0xfSD0wIFwKKyAgICAtREhBVkVfU1lTX0FDTF9IPTAgXAorIgorCitkb19jb25maWd1cmUgKCkgeworCSR7U30vY29uZmlndXJlIC0tdmVyYm9zZSAtLXByZWZpeD0ke3ByZWZpeH0gLS0gJHtDTUFLRV9FWFRSQUNPTkZ9Cit9CisKK2RvX2NvbXBpbGUoKSB7CisJb2VfcnVubWFrZQorfQorCitkb19pbnN0YWxsKCkgeworCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAorfQorCitkb19jb21waWxlW3Byb2dyZXNzXSA9ICJwZXJjZW50IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLmluYwppbmRleCA2YzhiMzZkLi42YWViMjVmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLmluYwpAQCAtNiw3ICs2LDcgQEAKIEJVR1RSQUNLRVIgPSAiaHR0cDovL3B1YmxpYy5raXR3YXJlLmNvbS9CdWcvbXlfdmlld19wYWdlLnBocCIKIFNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKIExJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ29weXJpZ2h0LnR4dDttZDU9N2E2NGJjNTY0MjAyYmY3NDAxZDlhOGVmMzNjOTU2NGQgXAorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ29weXJpZ2h0LnR4dDttZDU9OGQ4YzdiYzMyZjg3OTdkMjNmNWNmNjA1ZDkzMzlkMmQgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vU291cmNlL2NtYWtlLmg7YmVnaW5saW5lPTE7ZW5kbGluZT0zO21kNT00NDk0ZGVlMTg0MjEyZmM4OWM0NjljM2FjZDU1NWExNCIKIAogQ01BS0VfTUFKT1JfVkVSU0lPTiA9ICIke0AnLicuam9pbihkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzA6Ml0pfSIKQEAgLTE0LDEyICsxNCwxMSBAQAogU1JDX1VSSSA9ICJodHRwczovL2NtYWtlLm9yZy9maWxlcy92JHtDTUFLRV9NQUpPUl9WRVJTSU9OfS9jbWFrZS0ke1BWfS50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vc3VwcG9ydC1vZS1xdDQtdG9vbHMtbmFtZXMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vcXQ0LWZhaWwtc2lsZW50LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2F2b2lkLWdjYy13YXJuaW5ncy13aXRoLVdzdHJpY3QtcHJvdG90eXBlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUtXSU1MLXRlc3RzLVJlbW92ZS1mb3JtYXQtc2VjdXJpdHktZnJvbS1mbGFncy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpbmRDVURBLVVzZS1maW5kX3Byb2dyYW0taWYtZmluZF9ob3N0X3Byb2dyYW0taXMtbm8ucGF0Y2ggXAogICAgICAgICAgICAiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICI3OWJkN2U2NWNkODFlYTNhYTI2MTk0ODRhZDZmZjI1YSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkYzEyNDZjNGU2ZDE2OGVhNGQ2ZTA0MmNmYmE1NzdjMWFjZDY1ZmVlYTI3ZTU2ZjVmZjM3ZGY5MjBjMzBjYWUwIgorU1JDX1VSSVttZDVzdW1dID0gImI1ZGZmNjFmNmE3ZjEzMDUyNzFhYjNmNmFlMjYxNDE5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImRhMzA3Mjc5NGViNGMwOWYyZDc4MmZjZWUwNDM4NDdiOTliYjRjZjhkNDU3Mzk3OGQ5YjIwMjQyMTRkNmU5MmQiCiAKIFVQU1RSRUFNX0NIRUNLX1JFR0VYID0gImNtYWtlLSg/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDEtRmluZENVREEtVXNlLWZpbmRfcHJvZ3JhbS1pZi1maW5kX2hvc3RfcHJvZ3JhbS1pcy1uby5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwMS1GaW5kQ1VEQS1Vc2UtZmluZF9wcm9ncmFtLWlmLWZpbmRfaG9zdF9wcm9ncmFtLWlzLW5vLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliODIwZGIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDEtRmluZENVREEtVXNlLWZpbmRfcHJvZ3JhbS1pZi1maW5kX2hvc3RfcHJvZ3JhbS1pcy1uby5wYXRjaApAQCAtMCwwICsxLDQwIEBACitGcm9tIDQ2ZDI1ZTc4MmViZDliNmM1MDc3MWI2ZjMwNDMzYzU4ZmFlMDNhNTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXhpbWUgUm91c3Npbi1Cw6lsYW5nZXIgPG1heGltZS5yb3Vzc2luYmVsYW5nZXJAZ21haWwuY29tPgorRGF0ZTogTW9uLCAyNiBKdW4gMjAxNyAxMTozMDowNyAtMDQwMAorU3ViamVjdDogW1BBVENIXSBjbWFrZTogVXNlIGZpbmRfcHJvZ3JhbSBpZiBmaW5kX2hvc3RfcHJvZ3JhbSBpcyBub3QKKyBhdmFpbGFibGUKKworQ01ha2UgZG9lcyBub3QgZGVmaW5lIHRoZSBgZmluZF9ob3N0X3Byb2dyYW1gIGNvbW1hbmQgd2UndmUgYmVlbiB1c2luZworaW4gdGhlIGNyb3NzLWNvbXBpbGluZyBjb2RlIHBhdGguICBJdCB3YXMgcHJvdmlkZWQgYnkgYSB3aWRlbHkgdXNlZAorQW5kcm9pZCB0b29sY2hhaW4gZmlsZS4gIEZvciBjb21wYXRpYmlsaXR5LCBjb250aW51ZSB0byB1c2UKK2BmaW5kX2hvc3RfcHJvZ3JhbWAgaWYgYXZhaWxhYmxlLCBidXQgb3RoZXJ3aXNlIHVzZSBqdXN0IGBmaW5kX3Byb2dyYW1gLgorCitVcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkCitbaHR0cHM6Ly9naXRsYWIua2l0d2FyZS5jb20vY21ha2UvY21ha2UvbWVyZ2VfcmVxdWVzdHMvMTAwOV0KKyAgICAgICAgLSBXaWxsIGJlIGluIDMuMTAKKworU2lnbmVkLW9mZi1ieTogTWF4aW1lIFJvdXNzaW4tQsOpbGFuZ2VyIDxtYXhpbWUucm91c3NpbmJlbGFuZ2VyQGdtYWlsLmNvbT4KKy0tLQorIE1vZHVsZXMvRmluZENVREEuY21ha2UgfCA2ICsrKysrLQorIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL01vZHVsZXMvRmluZENVREEuY21ha2UgYi9Nb2R1bGVzL0ZpbmRDVURBLmNtYWtlCitpbmRleCBhNGRjYTU0Li43N2NhMzUxIDEwMDY0NAorLS0tIGEvTW9kdWxlcy9GaW5kQ1VEQS5jbWFrZQorKysrIGIvTW9kdWxlcy9GaW5kQ1VEQS5jbWFrZQorQEAgLTY3OSw3ICs2NzksMTEgQEAgaWYoQ01BS0VfQ1JPU1NDT01QSUxJTkcpCisgICAjIGFkZCBrbm93biBDVURBIHRhcmdldHIgcm9vdCBwYXRoIHRvIHRoZSBzZXQgb2YgZGlyZWN0b3JpZXMgd2Ugc2VhcmNoIGZvciBwcm9ncmFtcywgbGlicmFyaWVzIGFuZCBoZWFkZXJzCisgICBzZXQoIENNQUtFX0ZJTkRfUk9PVF9QQVRIICIke0NVREFfVE9PTEtJVF9UQVJHRVRfRElSfTske0NNQUtFX0ZJTkRfUk9PVF9QQVRIfSIpCisgICBtYWNybyggY3VkYV9maW5kX2hvc3RfcHJvZ3JhbSApCistICAgIGZpbmRfaG9zdF9wcm9ncmFtKCAke0FSR059ICkKKysgICAgaWYgKENPTU1BTkQgZmluZF9ob3N0X3Byb2dyYW0pCisrICAgICAgZmluZF9ob3N0X3Byb2dyYW0oICR7QVJHTn0gKQorKyAgICBlbHNlKCkKKysgICAgICBmaW5kX3Byb2dyYW0oICR7QVJHTn0gKQorKyAgICBlbmRpZigpCisgICBlbmRtYWNybygpCisgZWxzZSgpCisgICAjIGZvciBub24tY3Jvc3MtY29tcGlsZSwgZmluZF9ob3N0X3Byb2dyYW0gPT0gZmluZF9wcm9ncmFtIGFuZCBDVURBX1RPT0xLSVRfVEFSR0VUX0RJUiA9PSBDVURBX1RPT0xLSVRfUk9PVF9ESVIKKy0tCisyLjEuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDEtS1dJTUwtdGVzdHMtUmVtb3ZlLWZvcm1hdC1zZWN1cml0eS1mcm9tLWZsYWdzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAxLUtXSU1MLXRlc3RzLVJlbW92ZS1mb3JtYXQtc2VjdXJpdHktZnJvbS1mbGFncy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTkwMTMzYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDEtS1dJTUwtdGVzdHMtUmVtb3ZlLWZvcm1hdC1zZWN1cml0eS1mcm9tLWZsYWdzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotRnJvbSAwOTQxMzk1YjE0NjgwNGFiY2Q4NzAwNDU4OWZmNmU3YTI5NTM0MTJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLURhdGU6IFRodSwgMTYgTWFyIDIwMTcgMTQ6Mzk6MDQgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gS1dJTUwgdGVzdHM6IFJlbW92ZSBmb3JtYXQtc2VjdXJpdHkgZnJvbSBmbGFncwotCi1Gb3IgdGhlIHRlc3RzIHdoZXJlICJmb3JtYXQiIGlzIHJlbW92ZWQgZnJvbSBmbGFncywgImZvcm1hdC1zZWN1cml0eSIKLXNob3VsZCBiZSByZW1vdmVkIGFzIHdlbGwuIE90aGVyd2lzZSBidWlsZGluZyBjbWFrZSB3aXRoCi0iLVdmb3JtYXQgLVdmb3JtYXQtc2VjdXJpdHkiIGZhaWxzOgotCi18IGNjMTogZXJyb3I6IC1XZm9ybWF0LXNlY3VyaXR5IGlnbm9yZWQgd2l0aG91dCAtV2Zvcm1hdCBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW3BhcnQgb2YgY29tbWl0IGY3NzQyMGNmYzldCi1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotLS0tCi0gVXRpbGl0aWVzL0tXSU1ML3Rlc3QvQ01ha2VMaXN0cy50eHQgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9VdGlsaXRpZXMvS1dJTUwvdGVzdC9DTWFrZUxpc3RzLnR4dCBiL1V0aWxpdGllcy9LV0lNTC90ZXN0L0NNYWtlTGlzdHMudHh0Ci1pbmRleCA0ZjZmMzdiLi4xYmY5M2JiIDEwMDY0NAotLS0tIGEvVXRpbGl0aWVzL0tXSU1ML3Rlc3QvQ01ha2VMaXN0cy50eHQKLSsrKyBiL1V0aWxpdGllcy9LV0lNTC90ZXN0L0NNYWtlTGlzdHMudHh0Ci1AQCAtMTAsNyArMTAsNyBAQCBlbmRpZigpCi0gIyBTdXBwcmVzcyBwcmludGYvc2NhbmYgZm9ybWF0IHdhcm5pbmdzOyB3ZSB0ZXN0IGlmIHRoZSBzaXplcyBtYXRjaC4KLSBmb3JlYWNoKGxhbmcgQyBDWFgpCi0gICBpZihLV0lNTF9MQU5HVUFHRV8ke2xhbmd9IEFORCBDTUFLRV8ke2xhbmd9X0NPTVBJTEVSX0lEIFNUUkVRVUFMICJHTlUiKQotLSAgICBzZXQoQ01BS0VfJHtsYW5nfV9GTEFHUyAiJHtDTUFLRV8ke2xhbmd9X0ZMQUdTfSAtV25vLWZvcm1hdCIpCi0rICAgIHNldChDTUFLRV8ke2xhbmd9X0ZMQUdTICIke0NNQUtFXyR7bGFuZ31fRkxBR1N9IC1Xbm8tZm9ybWF0IC1Xbm8tZm9ybWF0LXNlY3VyaXR5IikKLSAgIGVuZGlmKCkKLSBlbmRmb3JlYWNoKCkKLSAKLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS9PRVRvb2xjaGFpbkNvbmZpZy5jbWFrZSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvT0VUb29sY2hhaW5Db25maWcuY21ha2UKaW5kZXggNjUxODQwOC4uZGM4NDc3ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS9PRVRvb2xjaGFpbkNvbmZpZy5jbWFrZQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlL09FVG9vbGNoYWluQ29uZmlnLmNtYWtlCkBAIC0xLDcgKzEsNyBAQAogc2V0KCBDTUFLRV9TWVNURU1fTkFNRSBMaW51eCApCiBzZXQoIENNQUtFX0NfRkxBR1MgJEVOVntDRkxBR1N9IENBQ0hFIFNUUklORyAiIiBGT1JDRSApCiBzZXQoIENNQUtFX0NYWF9GTEFHUyAkRU5We0NYWEZMQUdTfSAgQ0FDSEUgU1RSSU5HICIiIEZPUkNFICkKLXNldCggQ01BS0UgQVNNX0ZMQUdTICR7Q01BS0VfQ19GTEFHU30gQ0FDSEUgU1RSSU5HICIiIEZPUkNFICkKK3NldCggQ01BS0VfQVNNX0ZMQUdTICR7Q01BS0VfQ19GTEFHU30gQ0FDSEUgU1RSSU5HICIiIEZPUkNFICkKIHNldCggQ01BS0VfTERGTEFHU19GTEFHUyAke0NNQUtFX0NYWF9GTEFHU30gQ0FDSEUgU1RSSU5HICIiIEZPUkNFICkKIAogc2V0KCBDTUFLRV9GSU5EX1JPT1RfUEFUSCAkRU5We09FQ09SRV9UQVJHRVRfU1lTUk9PVH0gJEVOVntPRUNPUkVfTkFUSVZFX1NZU1JPT1R9ICkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvYXZvaWQtZ2NjLXdhcm5pbmdzLXdpdGgtV3N0cmljdC1wcm90b3R5cGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS9hdm9pZC1nY2Mtd2FybmluZ3Mtd2l0aC1Xc3RyaWN0LXByb3RvdHlwZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiOGQ0ODAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS9hdm9pZC1nY2Mtd2FybmluZ3Mtd2l0aC1Xc3RyaWN0LXByb3RvdHlwZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1Gcm9tIDRiYzE3MzQ1YzAxZWE0NjcwOTllMjhjN2RmMzBjMjNhY2U5ZTc4MTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgotRGF0ZTogRnJpLCAxNCBPY3QgMjAxNiAxNjoyNjo1OCAtMDcwMAotU3ViamVjdDogW1BBVENIXSBDaGVja0Z1bmN0aW9uRXhpc3RzLmM6IGF2b2lkIGdjYyB3YXJuaW5ncyB3aXRoCi0gLVdzdHJpY3QtcHJvdG90eXBlcwotCi1Bdm9pZCB3YXJuaW5ncyAoYW5kIHRoZXJlZm9yZSBidWlsZCBmYWlsdXJlcyBldGMpIGlmIGEgdXNlciBoYXBwZW5zCi10byBhZGQgLVdzdHJpY3QtcHJvdG90eXBlcyB0byBDRkxBR1MuCi0KLSB8ICQgZ2NjIC0tdmVyc2lvbgotIHwgZ2NjIChVYnVudHUgNC44LjQtMnVidW50dTF+MTQuMDQuMykgNC44LjQKLSB8Ci0gfCAkIGdjYyAtV3N0cmljdC1wcm90b3R5cGVzIC1XZXJyb3IgLURDSEVDS19GVU5DVElPTl9FWElTVFM9cHRocmVhZF9jcmVhdGUgLW8gZm9vLm8gLWMgTW9kdWxlcy9DaGVja0Z1bmN0aW9uRXhpc3RzLmMKLSB8IE1vZHVsZXMvQ2hlY2tGdW5jdGlvbkV4aXN0cy5jOjc6MzogZXJyb3I6IGZ1bmN0aW9uIGRlY2xhcmF0aW9uIGlzbid0IGEgcHJvdG90eXBlIFstV2Vycm9yPXN0cmljdC1wcm90b3R5cGVzXQotIHwgICAgQ0hFQ0tfRlVOQ1RJT05fRVhJU1RTKCk7Ci0gfCAgICBeCi0gfCBjYzE6IGFsbCB3YXJuaW5ncyBiZWluZyB0cmVhdGVkIGFzIGVycm9ycwotIHwKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+Ci0tLS0KLSBNb2R1bGVzL0NoZWNrRnVuY3Rpb25FeGlzdHMuYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL01vZHVsZXMvQ2hlY2tGdW5jdGlvbkV4aXN0cy5jIGIvTW9kdWxlcy9DaGVja0Z1bmN0aW9uRXhpc3RzLmMKLWluZGV4IDIzMDQwMDAuLjIyNGUzNDAgMTAwNjQ0Ci0tLS0gYS9Nb2R1bGVzL0NoZWNrRnVuY3Rpb25FeGlzdHMuYwotKysrIGIvTW9kdWxlcy9DaGVja0Z1bmN0aW9uRXhpc3RzLmMKLUBAIC00LDcgKzQsNyBAQAotIGV4dGVybiAiQyIKLSAjZW5kaWYKLSAgIGNoYXIKLS0gIENIRUNLX0ZVTkNUSU9OX0VYSVNUUygpOwotKyAgQ0hFQ0tfRlVOQ1RJT05fRVhJU1RTKHZvaWQpOwotICNpZmRlZiBfX0NMQVNTSUNfQ19fCi0gaW50IG1haW4oKQotIHsKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZV8zLjcuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2VfMy43LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1NjZhNDguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZV8zLjcuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLXJlcXVpcmUgY21ha2UuaW5jCi0KLWluaGVyaXQgY21ha2UKLQotREVQRU5EUyArPSAiY3VybCBleHBhdCB6bGliIGxpYmFyY2hpdmUgeHogbmN1cnNlcyBiemlwMiIKLQotU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBcCi0gICAgZmlsZTovL09FVG9vbGNoYWluQ29uZmlnLmNtYWtlIFwKLSAgICBmaWxlOi8vZW52aXJvbm1lbnQuZC1jbWFrZS5zaCIKLQotIyBTdHJpcCAke3ByZWZpeH0gZnJvbSAke2RvY2Rpcn0sIHNldCByZXN1bHQgaW50byBkb2NkaXJfc3RyaXBwZWQKLXB5dGhvbiAoKSB7Ci0gICAgcHJlZml4PWQuZ2V0VmFyKCJwcmVmaXgiKQotICAgIGRvY2Rpcj1kLmdldFZhcigiZG9jZGlyIikKLQotICAgIGlmIG5vdCBkb2NkaXIuc3RhcnRzd2l0aChwcmVmaXgpOgotICAgICAgICBiYi5mYXRhbCgnZG9jZGlyIG11c3QgY29udGFpbiBwcmVmaXggYXMgaXRzIHByZWZpeCcpCi0KLSAgICBkb2NkaXJfc3RyaXBwZWQgPSBkb2NkaXJbbGVuKHByZWZpeCk6XQotICAgIGlmIGxlbihkb2NkaXJfc3RyaXBwZWQpID4gMCBhbmQgZG9jZGlyX3N0cmlwcGVkWzBdID09ICcvJzoKLSAgICAgICAgZG9jZGlyX3N0cmlwcGVkID0gZG9jZGlyX3N0cmlwcGVkWzE6XQotCi0gICAgZC5zZXRWYXIoImRvY2Rpcl9zdHJpcHBlZCIsIGRvY2Rpcl9zdHJpcHBlZCkKLX0KLQotRVhUUkFfT0VDTUFLRT0iIFwKLSAgICAtRENNQUtFX0RPQ19ESVI9JHtkb2NkaXJfc3RyaXBwZWR9L2NtYWtlLSR7Q01BS0VfTUFKT1JfVkVSU0lPTn0gXAotICAgIC1EQ01BS0VfVVNFX1NZU1RFTV9MSUJSQVJJRVM9MSBcCi0gICAgLURDTUFLRV9VU0VfU1lTVEVNX0xJQlJBUllfSlNPTkNQUD0wIFwKLSAgICAtRENNQUtFX1VTRV9TWVNURU1fTElCUkFSWV9MSUJVVj0wIFwKLSAgICAtREtXU1lTX0NIQVJfSVNfU0lHTkVEPTEgXAotICAgIC1EQlVJTERfQ3Vyc2VzRGlhbG9nPTAgXAotICAgIC1ES1dTWVNfTEZTX1dPUktTPTEgXAotIgotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7Ci0gICAgbWtkaXIgLXAgJHtEfSR7ZGF0YWRpcn0vY21ha2UKLSAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L09FVG9vbGNoYWluQ29uZmlnLmNtYWtlICR7RH0ke2RhdGFkaXJ9L2NtYWtlLwotCi0gICAgbWtkaXIgLXAgJHtEfSR7U0RLUEFUSE5BVElWRX0vZW52aXJvbm1lbnQtc2V0dXAuZAotICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vZW52aXJvbm1lbnQuZC1jbWFrZS5zaCAke0R9JHtTREtQQVRITkFUSVZFfS9lbnZpcm9ubWVudC1zZXR1cC5kL2NtYWtlLnNoCi19Ci0KLUZJTEVTXyR7UE59X2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiICR7U0RLUEFUSE5BVElWRX0iCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2NtYWtlLSR7Q01BS0VfTUFKT1JfVkVSU0lPTn0iCi1GSUxFU18ke1BOfS1kb2MgKz0gIiR7ZG9jZGlyfS9jbWFrZS0ke0NNQUtFX01BSk9SX1ZFUlNJT059IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2VfMy44LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlXzMuOC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmOGZkN2EKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlXzMuOC4yLmJiCkBAIC0wLDAgKzEsNTAgQEAKK3JlcXVpcmUgY21ha2UuaW5jCisKK2luaGVyaXQgY21ha2UKKworREVQRU5EUyArPSAiY3VybCBleHBhdCB6bGliIGxpYmFyY2hpdmUgeHogbmN1cnNlcyBiemlwMiIKKworU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBcCisgICAgZmlsZTovL09FVG9vbGNoYWluQ29uZmlnLmNtYWtlIFwKKyAgICBmaWxlOi8vZW52aXJvbm1lbnQuZC1jbWFrZS5zaCIKKworIyBTdHJpcCAke3ByZWZpeH0gZnJvbSAke2RvY2Rpcn0sIHNldCByZXN1bHQgaW50byBkb2NkaXJfc3RyaXBwZWQKK3B5dGhvbiAoKSB7CisgICAgcHJlZml4PWQuZ2V0VmFyKCJwcmVmaXgiKQorICAgIGRvY2Rpcj1kLmdldFZhcigiZG9jZGlyIikKKworICAgIGlmIG5vdCBkb2NkaXIuc3RhcnRzd2l0aChwcmVmaXgpOgorICAgICAgICBiYi5mYXRhbCgnZG9jZGlyIG11c3QgY29udGFpbiBwcmVmaXggYXMgaXRzIHByZWZpeCcpCisKKyAgICBkb2NkaXJfc3RyaXBwZWQgPSBkb2NkaXJbbGVuKHByZWZpeCk6XQorICAgIGlmIGxlbihkb2NkaXJfc3RyaXBwZWQpID4gMCBhbmQgZG9jZGlyX3N0cmlwcGVkWzBdID09ICcvJzoKKyAgICAgICAgZG9jZGlyX3N0cmlwcGVkID0gZG9jZGlyX3N0cmlwcGVkWzE6XQorCisgICAgZC5zZXRWYXIoImRvY2Rpcl9zdHJpcHBlZCIsIGRvY2Rpcl9zdHJpcHBlZCkKK30KKworRVhUUkFfT0VDTUFLRT0iIFwKKyAgICAtRENNQUtFX0RPQ19ESVI9JHtkb2NkaXJfc3RyaXBwZWR9L2NtYWtlLSR7Q01BS0VfTUFKT1JfVkVSU0lPTn0gXAorICAgIC1EQ01BS0VfVVNFX1NZU1RFTV9MSUJSQVJJRVM9MSBcCisgICAgLURDTUFLRV9VU0VfU1lTVEVNX0xJQlJBUllfSlNPTkNQUD0wIFwKKyAgICAtRENNQUtFX1VTRV9TWVNURU1fTElCUkFSWV9MSUJVVj0wIFwKKyAgICAtRENNQUtFX1VTRV9TWVNURU1fTElCUkFSWV9MSUJSSEFTSD0wIFwKKyAgICAtREtXU1lTX0NIQVJfSVNfU0lHTkVEPTEgXAorICAgIC1EQlVJTERfQ3Vyc2VzRGlhbG9nPTAgXAorICAgIC1ES1dTWVNfTEZTX1dPUktTPTEgXAorIgorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7CisgICAgbWtkaXIgLXAgJHtEfSR7ZGF0YWRpcn0vY21ha2UKKyAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L09FVG9vbGNoYWluQ29uZmlnLmNtYWtlICR7RH0ke2RhdGFkaXJ9L2NtYWtlLworCisgICAgbWtkaXIgLXAgJHtEfSR7U0RLUEFUSE5BVElWRX0vZW52aXJvbm1lbnQtc2V0dXAuZAorICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vZW52aXJvbm1lbnQuZC1jbWFrZS5zaCAke0R9JHtTREtQQVRITkFUSVZFfS9lbnZpcm9ubWVudC1zZXR1cC5kL2NtYWtlLnNoCit9CisKK0ZJTEVTXyR7UE59X2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiICR7U0RLUEFUSE5BVElWRX0iCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2NtYWtlLSR7Q01BS0VfTUFKT1JfVkVSU0lPTn0iCitGSUxFU18ke1BOfS1kb2MgKz0gIiR7ZG9jZGlyfS9jbWFrZS0ke0NNQUtFX01BSk9SX1ZFUlNJT059IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY3JlYXRlcmVwby1jL2NyZWF0ZXJlcG8tYy8wMDAxLUNvcnJlY3RseS1pbnN0YWxsLXRoZS1zaGFyZWQtbGlicmFyeS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY3JlYXRlcmVwby1jL2NyZWF0ZXJlcG8tYy8wMDAxLUNvcnJlY3RseS1pbnN0YWxsLXRoZS1zaGFyZWQtbGlicmFyeS5wYXRjaAppbmRleCAwMTI3MTI0Li5jZDcyMDg0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NyZWF0ZXJlcG8tYy9jcmVhdGVyZXBvLWMvMDAwMS1Db3JyZWN0bHktaW5zdGFsbC10aGUtc2hhcmVkLWxpYnJhcnkucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jcmVhdGVyZXBvLWMvY3JlYXRlcmVwby1jLzAwMDEtQ29ycmVjdGx5LWluc3RhbGwtdGhlLXNoYXJlZC1saWJyYXJ5LnBhdGNoCkBAIC0zLDcgKzMsNyBAQAogRGF0ZTogTW9uLCAyIEphbiAyMDE3IDE3OjIzOjU5ICswMjAwCiBTdWJqZWN0OiBbUEFUQ0hdIENvcnJlY3RseSBpbnN0YWxsIHRoZSBzaGFyZWQgbGlicmFyeQogCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvY3JlYXRlcmVwb19jL3B1bGwvNzhdCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIC0tLQogIHNyYy9DTWFrZUxpc3RzLnR4dCB8IDMgKystCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2N2ZS1jaGVjay10b29sL2N2ZS1jaGVjay10b29sXzUuNi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jdmUtY2hlY2stdG9vbC9jdmUtY2hlY2stdG9vbF81LjYuNC5iYgppbmRleCAxZjkwNmVlLi43YjcwZGFhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2N2ZS1jaGVjay10b29sL2N2ZS1jaGVjay10b29sXzUuNi40LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY3ZlLWNoZWNrLXRvb2wvY3ZlLWNoZWNrLXRvb2xfNS42LjQuYmIKQEAgLTExLDYgKzExLDcgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtcHJpbnQtcHJvZ3Jlc3MtaW4tcGVyY2VudC13aGVuLWRvd25sb2FkaW5nLUNWRS1kYi5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWN1cmwtYWxsb3ctb3ZlcnJpZGluZy1kZWZhdWx0LUNBLWNlcnRpZmljYXRlLWZpbGUucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS11cGRhdGUtQ29tcGFyZS1jb21wdXRlZC12cy1leHBlY3RlZC1zaGEyNTYtZGlnaXQtc3RyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWZyZWVpbmctbWVtb3J5LWFsbG9jYXRlZC1ieS1zcWxpdGUucGF0Y2ggXAogICAgICAgICAgICIKIAogU1JDX1VSSVttZDVzdW1dID0gImM1ZjQyNDcxNDBmYzliZTNiZjQxNDkxZDMxYTM0MTU1IgpAQCAtMjksNyArMzAsNyBAQAogCiBkb19wb3B1bGF0ZV9jdmVfZGIoKSB7CiAgICAgaWYgWyAiJHtCQl9OT19ORVRXT1JLfSIgPSAiMSIgXSA7IHRoZW4KLSAgICAgICAgYmJlcnJvciAiQkJfTk9fTkVUV09SSyBpcyBzZXQ7IENhbid0IHVwZGF0ZSBjdmUtY2hlY2stdG9vbCBkYXRhYmFzZSwgQ1ZFcyB3b24ndCBiZSBjaGVja2VkIgorICAgICAgICBiYndhcm4gIkJCX05PX05FVFdPUksgaXMgc2V0OyBDYW4ndCB1cGRhdGUgY3ZlLWNoZWNrLXRvb2wgZGF0YWJhc2UsIG5ldyBDVkVzIHdvbid0IGJlIGRldGVjdGVkIgogICAgICAgICByZXR1cm4KICAgICBmaQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2N2ZS1jaGVjay10b29sL2ZpbGVzLzAwMDEtRml4LWZyZWVpbmctbWVtb3J5LWFsbG9jYXRlZC1ieS1zcWxpdGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2N2ZS1jaGVjay10b29sL2ZpbGVzLzAwMDEtRml4LWZyZWVpbmctbWVtb3J5LWFsbG9jYXRlZC1ieS1zcWxpdGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGE4MmNmMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY3ZlLWNoZWNrLXRvb2wvZmlsZXMvMDAwMS1GaXgtZnJlZWluZy1tZW1vcnktYWxsb2NhdGVkLWJ5LXNxbGl0ZS5wYXRjaApAQCAtMCwwICsxLDUwIEBACitGcm9tIGEzMzUzNDI5NjUyZjgzYmI4YjAzMTY1MDBmYWE4OGZhMjU1NTU0MmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQZXRlciBNYXJrbyA8cGV0ZXIubWFya29Ac2llbWVucy5jb20+CitEYXRlOiBUaHUsIDEzIEFwciAyMDE3IDIzOjA5OjUyICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBmcmVlaW5nIG1lbW9yeSBhbGxvY2F0ZWQgYnkgc3FsaXRlCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IFBldGVyIE1hcmtvIDxwZXRlci5tYXJrb0BzaWVtZW5zLmNvbT4KKy0tLQorIHNyYy9jb3JlLmMgfCA4ICsrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9jb3JlLmMgYi9zcmMvY29yZS5jCitpbmRleCA2MjYzMDMxLi42Nzg4ZjE2IDEwMDY0NAorLS0tIGEvc3JjL2NvcmUuYworKysrIGIvc3JjL2NvcmUuYworQEAgLTgyLDcgKzgyLDcgQEAgc3RhdGljIGJvb2wgZW5zdXJlX3RhYmxlKEN2ZURCICpzZWxmKQorICAgICAgICAgcmMgPSBzcWxpdGUzX2V4ZWMoc2VsZi0+ZGIsIHF1ZXJ5LCBOVUxMLCBOVUxMLCAmZXJyKTsKKyAgICAgICAgIGlmIChyYyAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJlbnN1cmVfdGFibGUoKTogJXNcbiIsIGVycik7CistICAgICAgICAgICAgICAgIGZyZWUoZXJyKTsKKysgICAgICAgICAgICAgICAgc3FsaXRlM19mcmVlKGVycik7CisgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgIH0KKyAgICAgICAgIAorQEAgLTkxLDcgKzkxLDcgQEAgc3RhdGljIGJvb2wgZW5zdXJlX3RhYmxlKEN2ZURCICpzZWxmKQorICAgICAgICAgcmMgPSBzcWxpdGUzX2V4ZWMoc2VsZi0+ZGIsIHF1ZXJ5LCBOVUxMLCBOVUxMLCAmZXJyKTsKKyAgICAgICAgIGlmIChyYyAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJlbnN1cmVfdGFibGUoKTogJXNcbiIsIGVycik7CistICAgICAgICAgICAgICAgIGZyZWUoZXJyKTsKKysgICAgICAgICAgICAgICAgc3FsaXRlM19mcmVlKGVycik7CisgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgIH0KKyAKK0BAIC05OSwxMSArOTksMTEgQEAgc3RhdGljIGJvb2wgZW5zdXJlX3RhYmxlKEN2ZURCICpzZWxmKQorICAgICAgICAgcmMgPSBzcWxpdGUzX2V4ZWMoc2VsZi0+ZGIsIHF1ZXJ5LCBOVUxMLCBOVUxMLCAmZXJyKTsKKyAgICAgICAgIGlmIChyYyAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJlbnN1cmVfdGFibGUoKTogJXNcbiIsIGVycik7CistICAgICAgICAgICAgICAgIGZyZWUoZXJyKTsKKysgICAgICAgICAgICAgICAgc3FsaXRlM19mcmVlKGVycik7CisgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgIH0KKyAgICAgICAgIGlmIChlcnIpIHsKKy0gICAgICAgICAgICAgICAgZnJlZShlcnIpOworKyAgICAgICAgICAgICAgICBzcWxpdGUzX2ZyZWUoZXJyKTsKKyAgICAgICAgIH0KKyAKKyAgICAgICAgIHJldHVybiB0cnVlOworLS0gCisyLjEuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2N2ZS1jaGVjay10b29sL2ZpbGVzLzAwMDEtcHJpbnQtcHJvZ3Jlc3MtaW4tcGVyY2VudC13aGVuLWRvd25sb2FkaW5nLUNWRS1kYi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY3ZlLWNoZWNrLXRvb2wvZmlsZXMvMDAwMS1wcmludC1wcm9ncmVzcy1pbi1wZXJjZW50LXdoZW4tZG93bmxvYWRpbmctQ1ZFLWRiLnBhdGNoCmluZGV4IDA1MTBlM2EuLjhlYTZmNjggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY3ZlLWNoZWNrLXRvb2wvZmlsZXMvMDAwMS1wcmludC1wcm9ncmVzcy1pbi1wZXJjZW50LXdoZW4tZG93bmxvYWRpbmctQ1ZFLWRiLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY3ZlLWNoZWNrLXRvb2wvZmlsZXMvMDAwMS1wcmludC1wcm9ncmVzcy1pbi1wZXJjZW50LXdoZW4tZG93bmxvYWRpbmctQ1ZFLWRiLnBhdGNoCkBAIC0zOCw3ICszOCw3IEBACiArICAgICAgICBpZiAoZGx0b3RhbCAmJiBwZXJjZW50ICYmIHBlcmNlbnQtPmVuZCA+PSBwZXJjZW50LT5zdGFydCkgewogKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZGlmZiA9IHBlcmNlbnQtPmVuZCAtIHBlcmNlbnQtPnN0YXJ0OwogKyAgICAgICAgICAgICAgICBpZiAoZGlmZikgewotKyAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCJjb21wbGV0ZWQ6ICJDVVJMX0ZPUk1BVF9PRkZfVCIlJVxyIiwgcGVyY2VudC0+c3RhcnQgKyAoZGlmZiAqIGRsbm93IC8gZGx0b3RhbCkpOworKyAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCJjb21wbGV0ZWQ6ICUiQ1VSTF9GT1JNQVRfQ1VSTF9PRkZfVCIlJVxyIiwgcGVyY2VudC0+c3RhcnQgKyAoZGlmZiAqIGRsbm93IC8gZGx0b3RhbCkpOwogKyAgICAgICAgICAgICAgICB9CiArICAgICAgICB9CiArCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RpZmZzdGF0L2RpZmZzdGF0XzEuNjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RpZmZzdGF0L2RpZmZzdGF0XzEuNjEuYmIKaW5kZXggNTgzYjM4Ny4uZjhiN2IwNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kaWZmc3RhdC9kaWZmc3RhdF8xLjYxLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZGlmZnN0YXQvZGlmZnN0YXRfMS42MS5iYgpAQCAtMTgsMTQgKzE4LDkgQEAKIAogaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwdGVzdAogCi1MREZMQUdTICs9ICIke1RPT0xDSEFJTl9PUFRJT05TfSIKK0VYVFJBX0FVVE9SRUNPTkYgKz0gIi0tZXhjbHVkZT1hY2xvY2FsIgogCi1kb19jb25maWd1cmUgKCkgewotCWlmIFsgISAtZSAke1N9L2FjaW5jbHVkZS5tNCBdOyB0aGVuCi0JCW12ICR7U30vYWNsb2NhbC5tNCAke1N9L2FjaW5jbHVkZS5tNAotCWZpCi0JYXV0b3Rvb2xzX2RvX2NvbmZpZ3VyZQotfQorTERGTEFHUyArPSAiJHtUT09MQ0hBSU5fT1BUSU9OU30iCiAKIGRvX2luc3RhbGxfcHRlc3QoKSB7CiAJY3AgLXIgJHtTfS90ZXN0aW5nICR7RH0ke1BURVNUX1BBVEh9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rpc3RjYy9kaXN0Y2NfMy4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kaXN0Y2MvZGlzdGNjXzMuMi5iYgppbmRleCBlYTNkN2MxLi5iNmRhNjVhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rpc3RjYy9kaXN0Y2NfMy4yLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZGlzdGNjL2Rpc3RjY18zLjIuYmIKQEAgLTIzLDYgKzIzLDcgQEAKICAgICAgICAgICAgZmlsZTovL2Rpc3RjYy5zZXJ2aWNlIgogU1JDUkVWID0gImQ4YjE4ZGYzZTlkY2JlNGYwOTJiZWQ1NjU4MzVkMzk3NWU5OTQzMmMiCiBTID0gIiR7V09SS0RJUn0vZ2l0IgorVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCiAKIGluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyB1cGRhdGUtcmMuZCB1c2VyYWRkIHN5c3RlbWQKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbWlkZWNvZGUvZG1pZGVjb2RlXzMuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG1pZGVjb2RlL2RtaWRlY29kZV8zLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwOWE5ZDIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbWlkZWNvZGUvZG1pZGVjb2RlXzMuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLVNVTU1BUlkgPSAiRE1JIChEZXNrdG9wIE1hbmFnZW1lbnQgSW50ZXJmYWNlKSB0YWJsZSByZWxhdGVkIHV0aWxpdGllcyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubm9uZ251Lm9yZy9kbWlkZWNvZGUvIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotCi1TUkNfVVJJID0gIiR7U0FWQU5OQUhfTk9OR05VX01JUlJPUn0vZG1pZGVjb2RlLyR7QlB9LnRhci54eiIKLQotQ09NUEFUSUJMRV9IT1NUID0gIihpLjg2fHg4Nl82NHxhYXJjaDY0fGFybXxwb3dlcnBjfHBvd2VycGM2NCkuKi1saW51eCIKLQotRVhUUkFfT0VNQUtFID0gIi1lIE1BS0VGTEFHUz0iCi0KLWRvX2luc3RhbGwoKSB7Ci0Jb2VfcnVubWFrZSBERVNURElSPSIke0R9IiBpbnN0YWxsCi19Ci0KLWRvX3VucGFja19leHRyYSgpIHsKLQlzZWQgLWkgLWUgJy9ecHJlZml4L3M6L3Vzci9sb2NhbDoke2V4ZWNfcHJlZml4fTonICR7U30vTWFrZWZpbGUKLX0KLWFkZHRhc2sgdW5wYWNrX2V4dHJhIGFmdGVyIGRvX3VucGFjayBiZWZvcmUgZG9fcGF0Y2gKLQotU1JDX1VSSVttZDVzdW1dID0gIjI4MWVlNTcyZDQ1Yzc4ZWNhNzNhMTQ4MzRjNDk1ZmZkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdlYzM1YmIxOTM3MjljMWQ1OTNhMTQ2MGI1OWQ4MmQyNGI4OTEwMmFiMjNmZDA0MTZlNmNmNDMyNWQwNzdlNDUiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG1pZGVjb2RlL2RtaWRlY29kZV8zLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RtaWRlY29kZS9kbWlkZWNvZGVfMy4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4MzI4MWUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RtaWRlY29kZS9kbWlkZWNvZGVfMy4xLmJiCkBAIC0wLDAgKzEsMjMgQEAKK1NVTU1BUlkgPSAiRE1JIChEZXNrdG9wIE1hbmFnZW1lbnQgSW50ZXJmYWNlKSB0YWJsZSByZWxhdGVkIHV0aWxpdGllcyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubm9uZ251Lm9yZy9kbWlkZWNvZGUvIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitTUkNfVVJJID0gIiR7U0FWQU5OQUhfTk9OR05VX01JUlJPUn0vZG1pZGVjb2RlLyR7QlB9LnRhci54eiIKKworQ09NUEFUSUJMRV9IT1NUID0gIihpLjg2fHg4Nl82NHxhYXJjaDY0fGFybXxwb3dlcnBjfHBvd2VycGM2NCkuKi1saW51eCIKKworRVhUUkFfT0VNQUtFID0gIi1lIE1BS0VGTEFHUz0iCisKK2RvX2luc3RhbGwoKSB7CisJb2VfcnVubWFrZSBERVNURElSPSIke0R9IiBpbnN0YWxsCit9CisKK2RvX3VucGFja19leHRyYSgpIHsKKwlzZWQgLWkgLWUgJy9ecHJlZml4L3M6L3Vzci9sb2NhbDoke2V4ZWNfcHJlZml4fTonICR7U30vTWFrZWZpbGUKK30KK2FkZHRhc2sgdW5wYWNrX2V4dHJhIGFmdGVyIGRvX3VucGFjayBiZWZvcmUgZG9fcGF0Y2gKKworU1JDX1VSSVttZDVzdW1dID0gIjY3OWMyYzAxNWM1MTVhYTZjYTVmMjI5YWVlNDljMTAyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ3NjZjZTliMjU1NDhjNTliMWU3ZTkzMDUwNWI0Y2FkOWE3YmIwYjkwNGExYTM5MWZiYjYwNGQ1Mjk3ODFhYzAiCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZi8wMDAxLUNoZWNrLWNvbmYucmVsZWFzZXZlci1pbnN0ZWFkLW9mLXJlbGVhc2V2ZXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmYvMDAwMS1DaGVjay1jb25mLnJlbGVhc2V2ZXItaW5zdGVhZC1vZi1yZWxlYXNldmVyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1ZjMxNDEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmYvMDAwMS1DaGVjay1jb25mLnJlbGVhc2V2ZXItaW5zdGVhZC1vZi1yZWxlYXNldmVyLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gMTY2ODMzYTg4YTkyOGE1NzRiZjkxNDNiOWI2NWY1NDRiZTQ4MmM3NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogRnJpLCAxOCBBdWcgMjAxNyAxNTo1NToxNSArMDMwMAorU3ViamVjdDogW1BBVENIXSBDaGVjayBjb25mLnJlbGVhc2V2ZXIgaW5zdGVhZCBvZiByZWxlYXNldmVyCisKK1RoZSBzdWJzdGl0dXRpb25zIG1heSBhY3R1YWxseSBzZXQgdGhlIGNvbmYucmVsZWFzZXZlciBjb3JyZWN0bHksCithbmQgc28gdGhlIGNoZWNrIHNob3VsZCB1c2UgdGhhdCBpbnN0ZWFkIG9mIHRoZSBwYXNzZWQtaW4gZnVuY3Rpb24KK3BhcmFtZXRlci4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9kbmYvcHVsbC85MDFdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIGRuZi9jbGkvY2xpLnB5IHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZG5mL2NsaS9jbGkucHkgYi9kbmYvY2xpL2NsaS5weQoraW5kZXggMmQ2MzQyMGMuLjE2Nzk0M2I4IDEwMDY0NAorLS0tIGEvZG5mL2NsaS9jbGkucHkKKysrKyBiL2RuZi9jbGkvY2xpLnB5CitAQCAtOTE0LDcgKzkxNCw3IEBAIGNsYXNzIENsaShvYmplY3QpOgorICAgICAgICAgY29uZi5yZWxlYXNldmVyID0gcmVsZWFzZXZlcgorICAgICAgICAgc3Vic3QgPSBjb25mLnN1YnN0aXR1dGlvbnMKKyAgICAgICAgIHN1YnN0LnVwZGF0ZV9mcm9tX2V0Yyhjb25mLmluc3RhbGxyb290KQorLSAgICAgICAgaWYgcmVsZWFzZXZlciBpcyBOb25lOgorKyAgICAgICAgaWYgY29uZi5yZWxlYXNldmVyIGlzIE5vbmU6CisgICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoXygiVW5hYmxlIHRvIGRldGVjdCByZWxlYXNlIHZlcnNpb24gKHVzZSAnLS1yZWxlYXNldmVyJyB0byBzcGVjaWZ5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWxlYXNlIHZlcnNpb24pIikpCisgCistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmYvMDAzMC1SdW4tcHl0aG9uLXNjcmlwdHMtdXNpbmctZW52LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbmYvZG5mLzAwMzAtUnVuLXB5dGhvbi1zY3JpcHRzLXVzaW5nLWVudi5wYXRjaAppbmRleCA2MTMyOGU2Li4xYWJkODgwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmYvMDAzMC1SdW4tcHl0aG9uLXNjcmlwdHMtdXNpbmctZW52LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZi8wMDMwLVJ1bi1weXRob24tc2NyaXB0cy11c2luZy1lbnYucGF0Y2gKQEAgLTEwLDggKzEwLDcgQEAKIC0tLQogIGJpbi9kbmYtYXV0b21hdGljLmluIHwgMiArLQogIGJpbi9kbmYuaW4gICAgICAgICAgIHwgMiArLQotIGJpbi95dW0uaW4gICAgICAgICAgIHwgMiArLQotIDMgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvYmluL2RuZi1hdXRvbWF0aWMuaW4gYi9iaW4vZG5mLWF1dG9tYXRpYy5pbgogaW5kZXggNWIwNmFhMjYuLjlmNmY3MDNlIDEwMDc1NQpAQCAtMzMsMTYgKzMyLDYgQEAKICAjIFRoZSBkbmYgZXhlY3V0YWJsZSBzY3JpcHQuCiAgIwogICMgQ29weXJpZ2h0IChDKSAyMDEyLTIwMTYgUmVkIEhhdCwgSW5jLgotZGlmZiAtLWdpdCBhL2Jpbi95dW0uaW4gYi9iaW4veXVtLmluCi1pbmRleCBmMWZlZTA3MS4uMDEzZGM4YzUgMTAwNzU1Ci0tLS0gYS9iaW4veXVtLmluCi0rKysgYi9iaW4veXVtLmluCi1AQCAtMSw0ICsxLDQgQEAKLS0jIUBQWVRIT05fRVhFQ1VUQUJMRUAKLSsjIS91c3IvYmluL2VudiBweXRob24zCi0gIyBUaGUgZG5mIGV4ZWN1dGFibGUgc2NyaXB0LgotICMKLSAjIENvcHlyaWdodCAoQykgMjAxNiBSZWQgSGF0LCBJbmMuCiAtLSAKIDIuMTEuMAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmZfMi42LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmZfMi42LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2VkNmE3NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZl8yLjYuMy5iYgpAQCAtMCwwICsxLDUyIEBACitTVU1NQVJZID0gIlBhY2thZ2UgbWFuYWdlciBmb3JrZWQgZnJvbSBZdW0sIHVzaW5nIGxpYnNvbHYgYXMgYSBkZXBlbmRlbmN5IHJlc29sdmVyIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL1BBQ0tBR0UtTElDRU5TSU5HO21kNT1iZmMyOTkxNmUxMTMyMWJlMDY5MjRjNGZiMDk2ZmRjYyBcCisgICAgICAgICAgICAgICAgICAgIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvZG5mLmdpdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI5LURvLW5vdC1zZXQtUFlUSE9OX0lOU1RBTExfRElSLWJ5LXJ1bm5pbmctcHl0aG9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzAtUnVuLXB5dGhvbi1zY3JpcHRzLXVzaW5nLWVudi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1wcmVwZW5kLWluc3RhbGxyb290LXRvLWxvZ2Rpci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1oYXJkY29kZS1ldGMtYW5kLXN5c3RlbWQtdW5pdC1kaXJlY3Rvcmllcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUNvcnJldGx5LWluc3RhbGwtdG1wZmlsZXMuZC1jb25maWd1cmF0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQ2hlY2stY29uZi5yZWxlYXNldmVyLWluc3RlYWQtb2YtcmVsZWFzZXZlci5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDUkVWID0gImJlMjU4NTE4M2VjNDQ4NWVlNGQ1ZTEyMWYyNDJkODY2OTI5NmYwNjUiCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKykiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgY21ha2UgZ2V0dGV4dCBiYXNoLWNvbXBsZXRpb24gZGlzdHV0aWxzMy1iYXNlIHN5c3RlbWQKKworREVQRU5EUyArPSAibGliZG5mIGxpYnJlcG8gbGliY29tcHMgcHl0aG9uMy1pbmlwYXJzZSIKKworIyBtYW5wYWdlcyBnZW5lcmF0aW9uIHJlcXVpcmVzIGh0dHA6Ly93d3cuc3BoaW54LWRvYy5vcmcvCitFWFRSQV9PRUNNQUtFID0gIiAtRFdJVEhfTUFOPTAgLURQWVRIT05fSU5TVEFMTF9ESVI9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0gLURQWVRIT05fREVTSVJFRD0zIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCitSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gInB5dGhvbjMtY29yZSBweXRob24zLWNvZGVjcyBweXRob24zLW5ldGNsaWVudCBweXRob24zLWVtYWlsIHB5dGhvbjMtdGhyZWFkaW5nIHB5dGhvbjMtZGlzdHV0aWxzIGxpYnJlcG8gcHl0aG9uMy1zaGVsbCBweXRob24zLXN1YnByb2Nlc3MgbGliY29tcHMgbGliZG5mIHB5dGhvbjMtc3FsaXRlMyBweXRob24zLWNvbXByZXNzaW9uIHB5dGhvbjMtcnBtIHB5dGhvbjMtaW5pcGFyc2UgcHl0aG9uMy1qc29uIHB5dGhvbjMtaW1wb3J0bGliIHB5dGhvbjMtY3Vyc2VzIHB5dGhvbjMtYXJncGFyc2UgcHl0aG9uMy1taXNjIHB5dGhvbjMtZ3BnIgorIyBSZWNvbW1lbmQgZ251cGcgc28gdGhhdCBHUEcgc2lnbmF0dXJlIGNoZWNrIG9uIHJlcG9zaXRvcnkgbWV0YWRhdGEgaXMgcG9zc2libGUKK1JSRUNPTU1FTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAiZ251cGciCisKKyMgQ3JlYXRlIGEgc3ltbGluayBjYWxsZWQgJ2RuZicgYXMgJ21ha2UgaW5zdGFsbCcgZG9lcyBub3QgZG8gaXQsIGJ1dAorIyAuc3BlYyBmaWxlIGluIGRuZiBzb3VyY2UgdHJlZSBkb2VzIChhbmQgdGhlbiBGZWRvcmEgYW5kIGRuZiBkb2N1bWVudGF0aW9uCisjIHNheXMgdGhhdCBkbmYgYmluYXJ5IGlzIHBsYWluICdkbmYnKS4KK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICAgICBsbnIgJHtEfS8ke2JpbmRpcn0vZG5mLTMgJHtEfS8ke2JpbmRpcn0vZG5mCisgICAgICAgIGxuciAke0R9LyR7YmluZGlyfS9kbmYtYXV0b21hdGljLTMgJHtEfS8ke2JpbmRpcn0vZG5mLWF1dG9tYXRpYworfQorCisjIERpcmVjdCBkbmYtbmF0aXZlIHRvIHJlYWQgcnBtIGNvbmZpZ3VyYXRpb24gZnJvbSBvdXIgc3lzcm9vdCwgbm90IHRoZSBvbmUgaXQgd2FzIGNvbXBpbGVkIGluCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisgICAgICAgIGNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2RuZiBcCisgICAgICAgICAgICAgICAgUlBNX0NPTkZJR0RJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vcnBtIFwKKyAgICAgICAgICAgICAgICBSUE1fTk9fQ0hST09UX0ZPUl9TQ1JJUFRTPTEKK30KKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImRuZi1tYWtlY2FjaGUuc2VydmljZSBkbmYtbWFrZWNhY2hlLnRpbWVyIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBkbmYtYXV0b21hdGljLWRvd25sb2FkLnNlcnZpY2UgZG5mLWF1dG9tYXRpYy1kb3dubG9hZC50aW1lciBcCisgICAgICAgICAgICAgICAgICAgICAgICAgZG5mLWF1dG9tYXRpYy1pbnN0YWxsLnNlcnZpY2UgZG5mLWF1dG9tYXRpYy1pbnN0YWxsLnRpbWVyIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBkbmYtYXV0b21hdGljLW5vdGlmeW9ubHkuc2VydmljZSBkbmYtYXV0b21hdGljLW5vdGlmeW9ubHkudGltZXIgXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbmYvZG5mX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZl9naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmODE0ZmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbmYvZG5mX2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLVNVTU1BUlkgPSAiUGFja2FnZSBtYW5hZ2VyIGZvcmtlZCBmcm9tIFl1bSwgdXNpbmcgbGlic29sdiBhcyBhIGRlcGVuZGVuY3kgcmVzb2x2ZXIiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vUEFDS0FHRS1MSUNFTlNJTkc7bWQ1PWJmYzI5OTE2ZTExMzIxYmUwNjkyNGM0ZmIwOTZmZGNjIFwKLSAgICAgICAgICAgICAgICAgICAiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9kbmYuZ2l0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMjktRG8tbm90LXNldC1QWVRIT05fSU5TVEFMTF9ESVItYnktcnVubmluZy1weXRob24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzMC1SdW4tcHl0aG9uLXNjcmlwdHMtdXNpbmctZW52LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LXByZXBlbmQtaW5zdGFsbHJvb3QtdG8tbG9nZGlyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWhhcmRjb2RlLWV0Yy1hbmQtc3lzdGVtZC11bml0LWRpcmVjdG9yaWVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQ29ycmV0bHktaW5zdGFsbC10bXBmaWxlcy5kLWNvbmZpZ3VyYXRpb24ucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVBWID0gIjIuMC4wK2dpdCR7U1JDUFZ9IgotU1JDUkVWID0gImYwMDkzZDY3MmQzMDY5Y2ZlZTg0NDc5NzNhZTcwZWY2MTVmZDg4ODYiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgY21ha2UgZ2V0dGV4dCBiYXNoLWNvbXBsZXRpb24gZGlzdHV0aWxzMy1iYXNlIHN5c3RlbWQKLQotREVQRU5EUyArPSAibGliZG5mIGxpYnJlcG8gbGliY29tcHMgcHl0aG9uMy1weWdwZ21lIHB5dGhvbjMtaW5pcGFyc2UiCi0KLSMgbWFucGFnZXMgZ2VuZXJhdGlvbiByZXF1aXJlcyBodHRwOi8vd3d3LnNwaGlueC1kb2Mub3JnLwotRVhUUkFfT0VDTUFLRSA9ICIgLURXSVRIX01BTj0wIC1EUFlUSE9OX0lOU1RBTExfRElSPSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IC1EUFlUSE9OX0RFU0lSRUQ9MyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICJweXRob24zLWNvcmUgcHl0aG9uMy1jb2RlY3MgcHl0aG9uMy1uZXRjbGllbnQgcHl0aG9uMy1lbWFpbCBweXRob24zLXRocmVhZGluZyBweXRob24zLWRpc3R1dGlscyBsaWJyZXBvIHB5dGhvbjMtc2hlbGwgcHl0aG9uMy1zdWJwcm9jZXNzIGxpYmNvbXBzIGxpYmRuZiBweXRob24zLXNxbGl0ZTMgcHl0aG9uMy1jb21wcmVzc2lvbiBweXRob24zLXB5Z3BnbWUgcHl0aG9uMy1ycG0gcHl0aG9uMy1pbmlwYXJzZSBweXRob24zLWpzb24gcHl0aG9uMy1pbXBvcnRsaWIgcHl0aG9uMy1jdXJzZXMgcHl0aG9uMy1hcmdwYXJzZSBweXRob24zLW1pc2MiCi0KLSMgQ3JlYXRlIGEgc3ltbGluayBjYWxsZWQgJ2RuZicgYXMgJ21ha2UgaW5zdGFsbCcgZG9lcyBub3QgZG8gaXQsIGJ1dAotIyAuc3BlYyBmaWxlIGluIGRuZiBzb3VyY2UgdHJlZSBkb2VzIChhbmQgdGhlbiBGZWRvcmEgYW5kIGRuZiBkb2N1bWVudGF0aW9uCi0jIHNheXMgdGhhdCBkbmYgYmluYXJ5IGlzIHBsYWluICdkbmYnKS4KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgICAgICBsbnIgJHtEfS8ke2JpbmRpcn0vZG5mLTMgJHtEfS8ke2JpbmRpcn0vZG5mCi0gICAgICAgIGxuciAke0R9LyR7YmluZGlyfS9kbmYtYXV0b21hdGljLTMgJHtEfS8ke2JpbmRpcn0vZG5mLWF1dG9tYXRpYwotfQotCi0jIERpcmVjdCBkbmYtbmF0aXZlIHRvIHJlYWQgcnBtIGNvbmZpZ3VyYXRpb24gZnJvbSBvdXIgc3lzcm9vdCwgbm90IHRoZSBvbmUgaXQgd2FzIGNvbXBpbGVkIGluCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0gICAgICAgIGNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2RuZiBcCi0gICAgICAgICAgICAgICAgUlBNX0NPTkZJR0RJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vcnBtIFwKLSAgICAgICAgICAgICAgICBSUE1fTk9fQ0hST09UX0ZPUl9TQ1JJUFRTPTEKLX0KLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImRuZi1tYWtlY2FjaGUuc2VydmljZSBkbmYtbWFrZWNhY2hlLnRpbWVyIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICBkbmYtYXV0b21hdGljLWRvd25sb2FkLnNlcnZpY2UgZG5mLWF1dG9tYXRpYy1kb3dubG9hZC50aW1lciBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgZG5mLWF1dG9tYXRpYy1pbnN0YWxsLnNlcnZpY2UgZG5mLWF1dG9tYXRpYy1pbnN0YWxsLnRpbWVyIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICBkbmYtYXV0b21hdGljLW5vdGlmeW9ubHkuc2VydmljZSBkbmYtYXV0b21hdGljLW5vdGlmeW9ubHkudGltZXIgXAotIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2cvMDAwMS1kcGtnLVN1cHBvcnQtbXVzbHgzMi1idWlsZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnLzAwMDEtZHBrZy1TdXBwb3J0LW11c2x4MzItYnVpbGQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTBlNjg5NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnLzAwMDEtZHBrZy1TdXBwb3J0LW11c2x4MzItYnVpbGQucGF0Y2gKQEAgLTAsMCArMSw0MSBAQAorRnJvbSBhMzI4YzhiZWMwYmY4MDcxYWU4ZjIwZmVlNGM3NDc1MjA1MDY0YmExIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogc3dlZWF1biA8c3dlZS5hdW4ua2hvckBpbnRlbC5jb20+CitEYXRlOiBTdW4sIDEwIFNlcCAyMDE3IDAwOjE0OjE1IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGRwa2c6IFN1cHBvcnQgbXVzbHgzMiBidWlsZAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcuCitDaGFuZ2VzIG1hZGUgb24gb3N0YWJsZSBhbmQgdHVwbGV0YWJsZSB0byBlbmFibGUgbXVzbHgzMiBidWlsZC4KKworU2lnbmVkLW9mZi1ieTogc3dlZWF1biA8c3dlZS5hdW4ua2hvckBpbnRlbC5jb20+CistLS0KKyBkYXRhL29zdGFibGUgICAgfCAxICsKKyBkYXRhL3R1cGxldGFibGUgfCAxICsKKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvZGF0YS9vc3RhYmxlIGIvZGF0YS9vc3RhYmxlCitpbmRleCBiZTY0MzQyLi44N2RiMjczIDEwMDY0NAorLS0tIGEvZGF0YS9vc3RhYmxlCisrKysgYi9kYXRhL29zdGFibGUKK0BAIC0xOSw2ICsxOSw3IEBAIGJhc2UtdWNsaWJjLWxpbnV4CWxpbnV4LXVjbGliYwkJbGludXhbXi1dKi11Y2xpYmMKKyBlYWJpaGYtbXVzbC1saW51eAlsaW51eC1tdXNsZWFiaWhmCWxpbnV4W14tXSotbXVzbGVhYmloZgorIGVhYmktbXVzbC1saW51eAkJbGludXgtbXVzbGVhYmkJCWxpbnV4W14tXSotbXVzbGVhYmkKKyBiYXNlLW11c2wtbGludXgJCWxpbnV4LW11c2wJCWxpbnV4W14tXSotbXVzbAorK3gzMi1tdXNsLWxpbnV4CQlsaW51eC1tdXNseDMyCQlsaW51eFteLV0qLW11c2x4MzIKKyBlYWJpaGYtZ251LWxpbnV4CWxpbnV4LWdudWVhYmloZgkJbGludXhbXi1dKi1nbnVlYWJpaGYKKyBlYWJpLWdudS1saW51eAkJbGludXgtZ251ZWFiaQkJbGludXhbXi1dKi1nbnVlYWJpCisgYWJpbjMyLWdudS1saW51eAlsaW51eC1nbnVhYmluMzIJCWxpbnV4W14tXSotZ251YWJpbjMyCitkaWZmIC0tZ2l0IGEvZGF0YS90dXBsZXRhYmxlIGIvZGF0YS90dXBsZXRhYmxlCitpbmRleCAyOGYwMGJmLi43NDhmZmFiIDEwMDY0NAorLS0tIGEvZGF0YS90dXBsZXRhYmxlCisrKysgYi9kYXRhL3R1cGxldGFibGUKK0BAIC0xMCw2ICsxMCw3IEBAIGJhc2UtdWNsaWJjLWxpbnV4LTxjcHU+CQl1Y2xpYmMtbGludXgtPGNwdT4KKyBlYWJpaGYtbXVzbC1saW51eC1hcm0JCW11c2wtbGludXgtYXJtaGYKKyBlYWJpLW11c2wtbGludXgtYXJtCQltdXNsLWxpbnV4LWFybWVsCisgYmFzZS1tdXNsLWxpbnV4LTxjcHU+CQltdXNsLWxpbnV4LTxjcHU+CisreDMyLW11c2wtbGludXgtYW1kNjQJCXgzMgorIGlscDMyLWdudS1saW51eC1hcm02NAkJYXJtNjRpbHAzMgorIGVhYmloZi1nbnUtbGludXgtYXJtCQlhcm1oZgorIGVhYmktZ251LWxpbnV4LWFybQkJYXJtZWwKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2cvMDAwMi1BZGFwdC10by1saW51eC13cnMta2VybmVsLXZlcnNpb24td2hpY2gtaGFzLWNoYXJhY3RlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2cvMDAwMi1BZGFwdC10by1saW51eC13cnMta2VybmVsLXZlcnNpb24td2hpY2gtaGFzLWNoYXJhY3RlLnBhdGNoCmluZGV4IDIzMWE2YTIuLjlmZTBjYTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnLzAwMDItQWRhcHQtdG8tbGludXgtd3JzLWtlcm5lbC12ZXJzaW9uLXdoaWNoLWhhcy1jaGFyYWN0ZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy8wMDAyLUFkYXB0LXRvLWxpbnV4LXdycy1rZXJuZWwtdmVyc2lvbi13aGljaC1oYXMtY2hhcmFjdGUucGF0Y2gKQEAgLTEzLDEzICsxMywxMyBAQAogIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9saWIvZHBrZy9wYXJzZWhlbHAuYyBiL2xpYi9kcGtnL3BhcnNlaGVscC5jCi1pbmRleCA3OWIyOTA4Li43NzU4YWE1IDEwMDY0NAoraW5kZXggNDUzMDc3ZmQ5Li5mNDJlYTI4ODIgMTAwNjQ0CiAtLS0gYS9saWIvZHBrZy9wYXJzZWhlbHAuYwogKysrIGIvbGliL2Rwa2cvcGFyc2VoZWxwLmMKLUBAIC0yMzUsMTQgKzIzNSwxMiBAQCBwYXJzZXZlcnNpb24oc3RydWN0IGRwa2dfdmVyc2lvbiAqcnZlcnNpb24sIGNvbnN0IGNoYXIgKnN0cmluZywKLSAKLSAgIC8qIFhYWDogV291bGQgYmUgZmFzdGVyIHRvIHVzZSBzb21ldGhpbmcgbGlrZSBjaXN2ZXJzaW9uIGFuZCBjaXNyZXZpc2lvbi4gKi8KK0BAIC0yNDMsMTQgKzI0MywxMiBAQCBwYXJzZXZlcnNpb24oc3RydWN0IGRwa2dfdmVyc2lvbiAqcnZlcnNpb24sIGNvbnN0IGNoYXIgKnN0cmluZywKICAgIHB0ciA9IHJ2ZXJzaW9uLT52ZXJzaW9uOworICAgaWYgKCEqcHRyKQorICAgICByZXR1cm4gZHBrZ19wdXRfZXJyb3IoZXJyLCBfKCJ2ZXJzaW9uIG51bWJlciBpcyBlbXB0eSIpKTsKIC0gIGlmICgqcHRyICYmICFjX2lzZGlnaXQoKnB0cisrKSkKIC0gICAgcmV0dXJuIGRwa2dfcHV0X3dhcm4oZXJyLCBfKCJ2ZXJzaW9uIG51bWJlciBkb2VzIG5vdCBzdGFydCB3aXRoIGRpZ2l0IikpOwogICAgZm9yICg7ICpwdHI7IHB0cisrKSB7CkBAIC0zMyw2ICszMyw2IEBACiAgICAgICAgcmV0dXJuIGRwa2dfcHV0X3dhcm4oZXJyLCBfKCJpbnZhbGlkIGNoYXJhY3RlciBpbiByZXZpc2lvbiBudW1iZXIiKSk7CiAgICB9CiAgCi0tLSAKLTIuMS40CiAKKy0tIAorMi4xMS4wCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy8wMDA2LWFkZC1tdXNsZWFiaS10by1rbm93bi10YXJnZXQtdHJpcGV0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnLzAwMDYtYWRkLW11c2xlYWJpLXRvLWtub3duLXRhcmdldC10cmlwZXRzLnBhdGNoCmluZGV4IGE2YjAwODguLmQ5Mjk0NjYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnLzAwMDYtYWRkLW11c2xlYWJpLXRvLWtub3duLXRhcmdldC10cmlwZXRzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnLzAwMDYtYWRkLW11c2xlYWJpLXRvLWtub3duLXRhcmdldC10cmlwZXRzLnBhdGNoCkBAIC02LDM3ICs2LDM2IEBACiBoZWxwcyBjb21waWxpbmcgZHBrZyBmb3IgbXVzbC9hcm0tc29mdGZsb2F0CiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBBbsOtYmFsIExpbcOzbiA8YW5pYmFsLmxpbW9uQGxpbnV4LmludGVsLmNvbT4KIC0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBvc3RhYmxlICAgICAgfCAxICsKLSB0cmlwbGV0dGFibGUgfCAxICsKKyBkYXRhL29zdGFibGUgICAgfCAxICsKKyBkYXRhL3R1cGxldGFibGUgfCAxICsKICAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQogCi1kaWZmIC0tZ2l0IGEvb3N0YWJsZSBiL29zdGFibGUKLWluZGV4IDNiYjY4MTkuLmQwZmZkYzcgMTAwNjQ0Ci0tLS0gYS9vc3RhYmxlCi0rKysgYi9vc3RhYmxlCi1AQCAtMTUsNiArMTUsNyBAQAotIHVjbGliY2VhYmktbGludXgJbGludXgtdWNsaWJjZWFiaQlsaW51eFteLV0qLXVjbGliY2VhYmkKLSB1Y2xpYmMtbGludXgJCWxpbnV4LXVjbGliYwkJbGludXhbXi1dKi11Y2xpYmMKLSBtdXNsZWFiaWhmLWxpbnV4CWxpbnV4LW11c2xlYWJpaGYJbGludXhbXi1dKi1tdXNsZWFiaWhmCi0rbXVzbGVhYmktbGludXgJCWxpbnV4LW11c2xlYWJpCQlsaW51eFteLV0qLW11c2xlYWJpCi0gbXVzbC1saW51eAkJbGludXgtbXVzbAkJbGludXhbXi1dKi1tdXNsCi0gZ251ZWFiaWhmLWxpbnV4CQlsaW51eC1nbnVlYWJpaGYJCWxpbnV4W14tXSotZ251ZWFiaWhmCi0gZ251ZWFiaS1saW51eAkJbGludXgtZ251ZWFiaQkJbGludXhbXi1dKi1nbnVlYWJpCi1kaWZmIC0tZ2l0IGEvdHJpcGxldHRhYmxlIGIvdHJpcGxldHRhYmxlCi1pbmRleCAxMjEzNTg0Li43MGQyNGMxIDEwMDY0NAotLS0tIGEvdHJpcGxldHRhYmxlCi0rKysgYi90cmlwbGV0dGFibGUKLUBAIC02LDYgKzYsNyBAQAotIHVjbGliY2VhYmktbGludXgtYXJtCXVjbGliYy1saW51eC1hcm1lbAotIHVjbGliYy1saW51eC08Y3B1Pgl1Y2xpYmMtbGludXgtPGNwdT4KLSBtdXNsZWFiaWhmLWxpbnV4LWFybQltdXNsLWxpbnV4LWFybWhmCi0rbXVzbGVhYmktbGludXgtYXJtCW11c2wtbGludXgtYXJtZWwKLSBtdXNsLWxpbnV4LTxjcHU+CW11c2wtbGludXgtPGNwdT4KLSBnbnVlYWJpaGYtbGludXgtYXJtCWFybWhmCi0gZ251ZWFiaS1saW51eC1hcm0JYXJtZWwKK2RpZmYgLS1naXQgYS9kYXRhL29zdGFibGUgYi9kYXRhL29zdGFibGUKK2luZGV4IDk5YzFmODg5ZC4uYmU2NDM0MjcxIDEwMDY0NAorLS0tIGEvZGF0YS9vc3RhYmxlCisrKysgYi9kYXRhL29zdGFibGUKK0BAIC0xNyw2ICsxNyw3IEBACisgZWFiaS11Y2xpYmMtbGludXgJbGludXgtdWNsaWJjZWFiaQlsaW51eFteLV0qLXVjbGliY2VhYmkKKyBiYXNlLXVjbGliYy1saW51eAlsaW51eC11Y2xpYmMJCWxpbnV4W14tXSotdWNsaWJjCisgZWFiaWhmLW11c2wtbGludXgJbGludXgtbXVzbGVhYmloZglsaW51eFteLV0qLW11c2xlYWJpaGYKKytlYWJpLW11c2wtbGludXgJCWxpbnV4LW11c2xlYWJpCQlsaW51eFteLV0qLW11c2xlYWJpCisgYmFzZS1tdXNsLWxpbnV4CQlsaW51eC1tdXNsCQlsaW51eFteLV0qLW11c2wKKyBlYWJpaGYtZ251LWxpbnV4CWxpbnV4LWdudWVhYmloZgkJbGludXhbXi1dKi1nbnVlYWJpaGYKKyBlYWJpLWdudS1saW51eAkJbGludXgtZ251ZWFiaQkJbGludXhbXi1dKi1nbnVlYWJpCitkaWZmIC0tZ2l0IGEvZGF0YS90dXBsZXRhYmxlIGIvZGF0YS90dXBsZXRhYmxlCitpbmRleCA1ZjUwMGY2Y2EuLjI4ZjAwYmZlNiAxMDA2NDQKKy0tLSBhL2RhdGEvdHVwbGV0YWJsZQorKysrIGIvZGF0YS90dXBsZXRhYmxlCitAQCAtOCw2ICs4LDcgQEAKKyBlYWJpLXVjbGliYy1saW51eC1hcm0JCXVjbGliYy1saW51eC1hcm1lbAorIGJhc2UtdWNsaWJjLWxpbnV4LTxjcHU+CQl1Y2xpYmMtbGludXgtPGNwdT4KKyBlYWJpaGYtbXVzbC1saW51eC1hcm0JCW11c2wtbGludXgtYXJtaGYKKytlYWJpLW11c2wtbGludXgtYXJtCQltdXNsLWxpbnV4LWFybWVsCisgYmFzZS1tdXNsLWxpbnV4LTxjcHU+CQltdXNsLWxpbnV4LTxjcHU+CisgaWxwMzItZ251LWxpbnV4LWFybTY0CQlhcm02NGlscDMyCisgZWFiaWhmLWdudS1saW51eC1hcm0JCWFybWhmCiAtLSAKLTIuNi40CisyLjExLjAKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2cvMDAwNy1kcGtnLWRlYi1idWlsZC5jLVJlbW92ZS11c2FnZS1vZi1jbGFtcC1tdGltZS1pbi10YXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy8wMDA3LWRwa2ctZGViLWJ1aWxkLmMtUmVtb3ZlLXVzYWdlLW9mLWNsYW1wLW10aW1lLWluLXRhci5wYXRjaAppbmRleCA4YmZhYWQxLi4xYjk4NWRmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy8wMDA3LWRwa2ctZGViLWJ1aWxkLmMtUmVtb3ZlLXVzYWdlLW9mLWNsYW1wLW10aW1lLWluLXRhci5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy8wMDA3LWRwa2ctZGViLWJ1aWxkLmMtUmVtb3ZlLXVzYWdlLW9mLWNsYW1wLW10aW1lLWluLXRhci5wYXRjaApAQCAtMjMsMTggKzIzLDE3IEBACiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9kcGtnLWRlYi9idWlsZC5jIGIvZHBrZy1kZWIvYnVpbGQuYwotaW5kZXggNjU1YWE1NS4uOTI3ZjU2ZiAxMDA2NDQKK2luZGV4IGE5MmI1OGUuLmEzZDE5MTIgMTAwNjQ0CiAtLS0gYS9kcGtnLWRlYi9idWlsZC5jCiArKysgYi9kcGtnLWRlYi9idWlsZC5jCi1AQCAtNDQ3LDcgKzQ0Nyw3IEBAIHRhcmJhbGxfcGFjayhjb25zdCBjaGFyICpkaXIsIGZpbGVuYW1lc19mZWVkX2Z1bmMgKnRhcl9maWxlbmFtZXNfZmVlZGVyLAotICAgICBzbnByaW50ZihtdGltZSwgc2l6ZW9mKG10aW1lKSwgIkAlbGQiLCB0aW1lc3RhbXApOworQEAgLTQ1MCw3ICs0NTAsNyBAQCB0YXJiYWxsX3BhY2soY29uc3QgY2hhciAqZGlyLCBmaWxlbmFtZXNfZmVlZF9mdW5jICp0YXJfZmlsZW5hbWVzX2ZlZWRlciwKICAKLSAgICAgZXhlY2xwKFRBUiwgInRhciIsICItY2YiLCAiLSIsICItLWZvcm1hdD1nbnUiLAotLSAgICAgICAgICAgICAgICAgICAgICAgIi0tbXRpbWUiLCBtdGltZSwgIi0tY2xhbXAtbXRpbWUiLAotKyAgICAgICAgICAgICAgICAgICAgICAgIi0tbXRpbWUiLCBtdGltZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICItLW51bGwiLCAiLS1uby11bnF1b3RlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICItLW5vLXJlY3Vyc2lvbiIsICItVCIsICItIiwgTlVMTCk7Ci0gICAgIG9oc2hpdGUoXygidW5hYmxlIHRvIGV4ZWN1dGUgJXMgKCVzKSIpLCAidGFyIC1jZiIsIFRBUik7CisgICAgIGNvbW1hbmRfaW5pdCgmY21kLCBUQVIsICJ0YXIgLWNmIik7CisgICAgIGNvbW1hbmRfYWRkX2FyZ3MoJmNtZCwgInRhciIsICItY2YiLCAiLSIsICItLWZvcm1hdD1nbnUiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICItLW10aW1lIiwgbXRpbWUsICItLWNsYW1wLW10aW1lIiwgTlVMTCk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tbXRpbWUiLCBtdGltZSwgTlVMTCk7CisgICAgIC8qIE1vZGUgbWlnaHQgYmVjb21lIGEgcG9zaXRpb25hbCBhcmd1bWVudCwgcGFzcyBpdCBiZWZvcmUgLVQuICovCisgICAgIGlmIChtb2RlKQorICAgICAgIGNvbW1hbmRfYWRkX2FyZ3MoJmNtZCwgIi0tbW9kZSIsIG1vZGUsIE5VTEwpOwogLS0gCi0yLjEuNAotCisyLjExLjAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnL2FkZF9hcm1lYl90cmlwbGV0X2VudHJ5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2cvYWRkX2FybWViX3RyaXBsZXRfZW50cnkucGF0Y2gKaW5kZXggZGM2OWViMi4uZDE2NTYxNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2cvYWRkX2FybWViX3RyaXBsZXRfZW50cnkucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2cvYWRkX2FybWViX3RyaXBsZXRfZW50cnkucGF0Y2gKQEAgLTI0LDIzICsyNCwyNSBAQAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKIFNpZ25lZC1vZmYtYnk6IEtyaXNobmFuamFuYXBwYSwgSmFnYWRlZXNoIDxqYWdhZGVlc2gua3Jpc2huYW5qYW5hcHBhQGNhdml1bW5ldHdvcmtzLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEFuw61iYWwgTGltw7NuIDxhbmliYWwubGltb25AbGludXguaW50ZWwuY29tPgogCiAtLS0KLSB0cmlwbGV0dGFibGUgfCAxICsKKyBkYXRhL3R1cGxldGFibGUgfCAxICsKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKIAotZGlmZiAtLWdpdCBhL3RyaXBsZXR0YWJsZSBiL3RyaXBsZXR0YWJsZQotaW5kZXggYWJlNDcyNi4uMWU5YzI0NyAxMDA2NDQKLS0tLSBhL3RyaXBsZXR0YWJsZQotKysrIGIvdHJpcGxldHRhYmxlCi1AQCAtMTEsNiArMTEsNyBAQCBnbnVlYWJpaGYtbGludXgtYXJtCWFybWhmCi0gZ251ZWFiaS1saW51eC1hcm0JYXJtZWwKLSBnbnVhYmluMzItbGludXgtbWlwczY0cjZlbAltaXBzbjMycjZlbAotIGdudWFiaW4zMi1saW51eC1taXBzNjRyNgltaXBzbjMycjYKLStnbnVlYWJpLWxpbnV4LWFybWViCWFybWViCi0gZ251YWJpbjMyLWxpbnV4LW1pcHM2NGVsCW1pcHNuMzJlbAotIGdudWFiaW4zMi1saW51eC1taXBzNjQJbWlwc24zMgotIGdudWFiaTY0LWxpbnV4LW1pcHM2NHI2ZWwJbWlwczY0cjZlbAorZGlmZiAtLWdpdCBhL2RhdGEvdHVwbGV0YWJsZSBiL2RhdGEvdHVwbGV0YWJsZQoraW5kZXggYjc4MDJiZWMzLi41ZjUwMGY2Y2EgMTAwNjQ0CistLS0gYS9kYXRhL3R1cGxldGFibGUKKysrKyBiL2RhdGEvdHVwbGV0YWJsZQorQEAgLTEyLDYgKzEyLDcgQEAgYmFzZS1tdXNsLWxpbnV4LTxjcHU+CQltdXNsLWxpbnV4LTxjcHU+CisgaWxwMzItZ251LWxpbnV4LWFybTY0CQlhcm02NGlscDMyCisgZWFiaWhmLWdudS1saW51eC1hcm0JCWFybWhmCisgZWFiaS1nbnUtbGludXgtYXJtCQlhcm1lbAorK2VhYmktZ251LWxpbnV4LWFybWViCQlhcm1lYgorIGFiaW4zMi1nbnUtbGludXgtbWlwczY0cjZlbAltaXBzbjMycjZlbAorIGFiaW4zMi1nbnUtbGludXgtbWlwczY0cjYJbWlwc24zMnI2CisgYWJpbjMyLWdudS1saW51eC1taXBzNjRlbAltaXBzbjMyZWwKIC0tIAotMi4xLjQKKzIuMTEuMAorCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnL2FyY2hfcG0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy9hcmNoX3BtLnBhdGNoCmluZGV4IGNhZDRjMGYuLjRlMGQyMmEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnL2FyY2hfcG0ucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2cvYXJjaF9wbS5wYXRjaApAQCAtNywxNiArNywyMyBAQAogCiBTaWduZWQtb2ZmLWJ5OiBKb2UgU2xhdGVyIDxqc2xhdGVyQHdpbmRyaXZlci5jb20+CiAKKy0tLQorIHNjcmlwdHMvRHBrZy9BcmNoLnBtIHwgMyAtLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBkZWxldGlvbnMoLSkKIAorZGlmZiAtLWdpdCBhL3NjcmlwdHMvRHBrZy9BcmNoLnBtIGIvc2NyaXB0cy9EcGtnL0FyY2gucG0KK2luZGV4IDE3MjA4NDdiOC4uNjM0NWNlM2I5IDEwMDY0NAogLS0tIGEvc2NyaXB0cy9EcGtnL0FyY2gucG0KICsrKyBiL3NjcmlwdHMvRHBrZy9BcmNoLnBtCi1AQCAtMjMzLDkgKzIzMyw2IEBAIHN1YiByZWFkX3RyaXBsZXR0YWJsZSgpCi0gCQkgICAgKG15ICRkdCA9ICRkZWJ0cmlwbGV0KSA9fiBzLzxjcHU+LyRfY3B1LzsKK0BAIC0zMjMsOSArMzIzLDYgQEAgc3ViIF9sb2FkX3R1cGxldGFibGUoKQorIAkJICAgIChteSAkZHQgPSAkZGVidHVwbGUpID1+IHMvPGNwdT4vJF9jcHUvOwogIAkJICAgIChteSAkZGEgPSAkZGViYXJjaCkgPX4gcy88Y3B1Pi8kX2NwdS87CiAgCi0tCQkgICAgbmV4dCBpZiBleGlzdHMgJGRlYmFyY2hfdG9fZGVidHJpcGxldHskZGF9Ci0tCQkgICAgICAgICBvciBleGlzdHMgJGRlYnRyaXBsZXRfdG9fZGViYXJjaHskZHR9OworLQkJICAgIG5leHQgaWYgZXhpc3RzICRkZWJhcmNoX3RvX2RlYnR1cGxleyRkYX0KKy0JCSAgICAgICAgIG9yIGV4aXN0cyAkZGVidHVwbGVfdG9fZGViYXJjaHskZHR9OwogLQotIAkJICAgICRkZWJhcmNoX3RvX2RlYnRyaXBsZXR7JGRhfSA9ICRkdDsKLSAJCSAgICAkZGVidHJpcGxldF90b19kZWJhcmNoeyRkdH0gPSAkZGE7CisgCQkgICAgJGRlYmFyY2hfdG9fZGVidHVwbGV7JGRhfSA9ICRkdDsKKyAJCSAgICAkZGVidHVwbGVfdG9fZGViYXJjaHskZHR9ID0gJGRhOwogIAkJfQorLS0gCisyLjExLjAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnL2Rwa2ctY29uZmlndXJlLnNlcnZpY2UgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy9kcGtnLWNvbmZpZ3VyZS5zZXJ2aWNlCmluZGV4IGYwYjA3ODkuLjlhMjQ4Y2MgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnL2Rwa2ctY29uZmlndXJlLnNlcnZpY2UKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2cvZHBrZy1jb25maWd1cmUuc2VydmljZQpAQCAtOCw3ICs4LDcgQEAKIFR5cGU9b25lc2hvdAogRW52aXJvbm1lbnRGaWxlPS1AU1lTQ09ORkRJUkAvZGVmYXVsdC9wb3N0aW5zdAogRXhlY1N0YXJ0PS1AQkFTRV9CSU5ESVJAL3NoIC1jICIgaWYgWyAkUE9TVElOU1RfTE9HR0lORyA9ICcxJyBdOyB0aGVuIEBCSU5ESVJAL2Rwa2cgLS1jb25maWd1cmUgLWEgPiAkTE9HRklMRSAyPiYxOyBlbHNlIEBCSU5ESVJAL2Rwa2cgLS1jb25maWd1cmUgLWE7IGZpIgotRXhlY1N0YXJ0UG9zdD1AQkFTRV9CSU5ESVJAL3N5c3RlbWN0bCBkaXNhYmxlIGRwa2ctY29uZmlndXJlLnNlcnZpY2UKK0V4ZWNTdGFydFBvc3Q9QEJBU0VfQklORElSQC9zeXN0ZW1jdGwgLS1uby1yZWxvYWQgZGlzYWJsZSBkcGtnLWNvbmZpZ3VyZS5zZXJ2aWNlCiBTdGFuZGFyZE91dHB1dD1zeXNsb2cKIFJlbWFpbkFmdGVyRXhpdD1ObwogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZy9ub21hbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnL25vbWFuLnBhdGNoCmluZGV4IGQzMGMxNTAuLmE3ZjNjYjggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnL25vbWFuLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZHBrZy9kcGtnL25vbWFuLnBhdGNoCkBAIC0xLDE0ICsxLDIyIEBACiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2Rpc2FibGUgZmVhdHVyZV0KIAotZGlmZiAtcnVOIGRwa2ctMS4xNS44LjUtb3JpZy9NYWtlZmlsZS5hbSBkcGtnLTEuMTUuOC41L01ha2VmaWxlLmFtCi0tLS0gZHBrZy0xLjE1LjguNS1vcmlnL01ha2VmaWxlLmFtCTIwMTAtMTAtMDggMTI6Mjc6MTUuMDQyMDgzNzAzICswODAwCi0rKysgZHBrZy0xLjE1LjguNS9NYWtlZmlsZS5hbQkyMDEwLTEwLTA4IDEyOjI3OjI3Ljc1NTE0ODIyOCArMDgwMAotQEAgLTEyLDggKzEyLDcgQEAKLSAJdXRpbHMgXAorLS0tCisgTWFrZWZpbGUuYW0gfCAzICstLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KK2luZGV4IDBkYTUyY2IxNi4uYTFmNzllMGEyIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCitAQCAtMTMsOCArMTMsNyBAQCBTVUJESVJTID0gXAogIAkkKE1BWUJFX0RTRUxFQ1QpIFwKICAJc2NyaXB0cyBcCisgCXQtZnVuYyBcCiAtCXBvIFwKIC0JbWFuCiArCXBvCiAgCiAgQUNMT0NBTF9BTUZMQUdTID0gLUkgbTQKKyAKKy0tIAorMi4xMS4wCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZ18xLjE4LjEwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2dfMS4xOC4xMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjEzODVhZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZ18xLjE4LjEwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotcmVxdWlyZSBkcGtnLmluYwotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3NuYXBzaG90LmRlYmlhbi5vcmcvYXJjaGl2ZS9kZWJpYW4vMjAxNjA3MzFUMjIxOTMxWi9wb29sL21haW4vZC8ke0JQTn0vJHtCUE59XyR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9ub21hbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtdGFyLW5vLXRpbWVzdGFtcC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hcmNoX3BtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2Rwa2ctY29uZmlndXJlLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vYWRkX2FybWViX3RyaXBsZXRfZW50cnkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1BZGFwdC10by1saW51eC13cnMta2VybmVsLXZlcnNpb24td2hpY2gtaGFzLWNoYXJhY3RlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtT3VyLXByZS1wb3N0aW5zdHMtZXhwZWN0LUQtdG8tYmUtc2V0LXdoZW4tcnVubmluZy1pbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LVRoZS1sdXRpbWVzLWZ1bmN0aW9uLWRvZXNuLXQtd29yay1wcm9wZXJseS1mb3ItYWxsLXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNS1kcGtnLWNvbXBpbGVyLm00LXJlbW92ZS1XdmxhLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDYtYWRkLW11c2xlYWJpLXRvLWtub3duLXRhcmdldC10cmlwZXRzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDctZHBrZy1kZWItYnVpbGQuYy1SZW1vdmUtdXNhZ2Utb2YtY2xhbXAtbXRpbWUtaW4tdGFyLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vZ2xpYmMyLjUtc3luY19maWxlX3JhbmdlLnBhdGNoICIKLQotU1JDX1VSSVttZDVzdW1dID0gImNjZmYxNzczMGMwOTY0NDI4ZmMxODZkZWQyZjJmNDAxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAyNTUyNGRhNDFiYTE4YjE4M2ZmMTFlMzg4ZWI4Njg2ZjdjYzU4ZWU4MzVlZDdkNDhiZDE1OWM0NmE4YjZkYzUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rwa2cvZHBrZ18xLjE4LjI0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2dfMS4xOC4yNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMGM1OWYxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kcGtnL2Rwa2dfMS4xOC4yNC5iYgpAQCAtMCwwICsxLDIxIEBACityZXF1aXJlIGRwa2cuaW5jCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKKworU1JDX1VSSSA9ICJodHRwOi8vc25hcHNob3QuZGViaWFuLm9yZy9hcmNoaXZlL2RlYmlhbi8yMDE3MDUxOFQwOTM4MzhaL3Bvb2wvbWFpbi9kL2Rwa2cvZHBrZ18xLjE4LjI0LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9ub21hbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtdGFyLW5vLXRpbWVzdGFtcC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9hcmNoX3BtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2Rwa2ctY29uZmlndXJlLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vYWRkX2FybWViX3RyaXBsZXRfZW50cnkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1BZGFwdC10by1saW51eC13cnMta2VybmVsLXZlcnNpb24td2hpY2gtaGFzLWNoYXJhY3RlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtT3VyLXByZS1wb3N0aW5zdHMtZXhwZWN0LUQtdG8tYmUtc2V0LXdoZW4tcnVubmluZy1pbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LVRoZS1sdXRpbWVzLWZ1bmN0aW9uLWRvZXNuLXQtd29yay1wcm9wZXJseS1mb3ItYWxsLXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1kcGtnLWNvbXBpbGVyLm00LXJlbW92ZS1XdmxhLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDYtYWRkLW11c2xlYWJpLXRvLWtub3duLXRhcmdldC10cmlwZXRzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDctZHBrZy1kZWItYnVpbGQuYy1SZW1vdmUtdXNhZ2Utb2YtY2xhbXAtbXRpbWUtaW4tdGFyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZHBrZy1TdXBwb3J0LW11c2x4MzItYnVpbGQucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly9nbGliYzIuNS1zeW5jX2ZpbGVfcmFuZ2UucGF0Y2ggIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMDJlOGFmOGZhZjFlNjg5MjI4ZGE4MDZjM2U4YzY4ODIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDg1MzA4MWQzZTA2YmZkNDZhMjI3MDU2ZTU5MWYwOTRlNDJlNzhmYThhNTc5M2IwMDkzYmFkMzBiNzEwZDdiNCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy8wMDAxLWUyZnNjay1leGl0LXdpdGgtZXhpdC1zdGF0dXMtMC1pZi1uby1lcnJvcnMtd2VyZS1maXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvMDAwMS1lMmZzY2stZXhpdC13aXRoLWV4aXQtc3RhdHVzLTAtaWYtbm8tZXJyb3JzLXdlcmUtZml4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZDE3NTIwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy8wMDAxLWUyZnNjay1leGl0LXdpdGgtZXhpdC1zdGF0dXMtMC1pZi1uby1lcnJvcnMtd2VyZS1maXgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNTUgKzAsMCBAQAotRnJvbSBiZjlmM2I2ZDViMTBkMTkyMThiNGVkOTA0YzEyYjIyZTM2ZWM1N2RkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogVGhlb2RvcmUgVHMnbyA8dHl0c29AbWl0LmVkdT4KLURhdGU6IFRodSwgMTYgRmViIDIwMTcgMjI6MDI6MzUgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSF0gZTJmc2NrOiBleGl0IHdpdGggZXhpdCBzdGF0dXMgMCBpZiBubyBlcnJvcnMgd2VyZSBmaXhlZAotCi1QcmV2aW91c2x5LCBlMmZzY2sgd291bGQgZXhpdCB3aXRoIGEgc3RhdHVzIGNvZGUgb2YgMSBldmVuIHRob3VnaCB0aGUKLW9ubHkgY2hhbmdlcyB0aGF0IGl0IG1hZGUgdG8gdGhlIGZpbGUgc3lzdGVtIHdlcmUgdmFyaW91cwotb3B0aW16aWF0aW9ucyBhbmQgbm90IGZpeGluZyBmaWxlIHN5c3RlbSBjb3JydXB0aW9uLiAgU2luY2UgdGhlIG1hbgotcGFnZSBzdGF0ZXMgdGhhdCBhbiBleGl0IHN0YXR1cyBvZiAxIG1lYW5zICJmaWxlIHN5c3RlbSBlcnJvcnMKLWNvcnJ1cHRlZCIsIGZpeCBlMmZzY2sgdG8gcmV0dXJuIGFuIGV4aXQgc3RhdHVzIG9mIDAuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogVGhlb2RvcmUgVHMnbyA8dHl0c29AbWl0LmVkdT4KLVNpZ25lZC1vZmYtYnk6IERhbmllbCBTY2h1bHR6IDxkLnNjaHVsdHpAcGh5dGVjLmRlPgotLS0tCi0gZTJmc2NrL2UyZnNjay5jb25mLjUuaW4gICAgICAgICAgICAgICAgICAgICB8ICA3ICsrKysrKysKLSBlMmZzY2svam91cm5hbC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEgKwotIGUyZnNjay9wcm9ibGVtLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgOCArKysrKy0tLQotIGUyZnNjay9wcm9ibGVtUC5oICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMSArCi0gZTJmc2NrL3VuaXguYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIwICsrKysrKysrKysrKysrKystLS0tCi0gdGVzdHMvZl9jb2xsYXBzZV9leHRlbnRfdHJlZS9leHBlY3QuMSAgICAgICB8ICAyICstCi0gdGVzdHMvZl9jb21wcmVzc19leHRlbnRfdHJlZV9sZXZlbC9leHBlY3QuMSB8ICAyICstCi0gdGVzdHMvZl9jb252ZXJ0X2JtYXAvZXhwZWN0LjEgICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvZl9jb252ZXJ0X2JtYXBfYW5kX2V4dGVudC9leHBlY3QuMSAgICB8ICAyICstCi0gdGVzdHMvZl9leHRlbnRfaHRyZWUvZXhwZWN0LjEgICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvZl9qbmxfZXJybm8vZXhwZWN0LjEgICAgICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvZl9qb3VybmFsL2V4cGVjdC4xICAgICAgICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvZl9vcnBoYW4vZXhwZWN0LjEgICAgICAgICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvZl9vcnBoYW5fZXh0ZW50c19pbm9kZS9leHBlY3QuMSAgICAgICB8ICAyICstCi0gdGVzdHMvZl9yZWhhc2hfZGlyL2V4cGVjdC4xICAgICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvZl91bnNvcnRlZF9FQXMvZXhwZWN0LjEgICAgICAgICAgICAgICB8ICAyICstCi0gMTYgZmlsZXMgY2hhbmdlZCwgNDEgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9lMmZzY2svZTJmc2NrLmNvbmYuNS5pbiBiL2UyZnNjay9lMmZzY2suY29uZi41LmluCi1pbmRleCAxODQ4YmRiLi4wYmZjNzZhIDEwMDY0NAotLS0tIGEvZTJmc2NrL2UyZnNjay5jb25mLjUuaW4KLSsrKyBiL2UyZnNjay9lMmZzY2suY29uZi41LmluCi1AQCAtMzAzLDYgKzMwMywxMyBAQCBvZiAnc2hvdWxkIHRoaXMgcHJvYmxlbSBiZSBmaXhlZD8nLiAgVGhlCi0gb3B0aW9uIGV2ZW4gb3ZlcnJpZGVzIHRoZQotIC5CIC15Ci0gb3B0aW9uIGdpdmVuIG9uIHRoZSBjb21tYW5kLWxpbmUgKGp1c3QgZm9yIHRoZSBzcGVjaWZpYyBwcm9ibGVtLCBvZiBjb3Vyc2UpLgotKy5UUAotKy5JIG5vdF9hX2ZpeAotK1RoaXMgYm9vbGVhbiBvcHRpb24sIGl0IHNldCB0byB0cnVlLCBtYXJrcyB0aGUgcHJvYmxlbSBhcwotK29uZSB3aGVyZSBpZiB0aGUgdXNlciBnaXZlcyBwZXJtaXNzaW9uIHRvIG1ha2UgdGhlIHJlcXVlc3RlZCBjaGFuZ2UsCi0raXQgZG9lcyBub3QgbWVhbiB0aGF0IHRoZSBmaWxlIHN5c3RlbSBoYWQgYSBwcm9ibGVtIHdoaWNoIGhhcyBzaW5jZQotK2JlZW4gZml4ZWQuICBUaGlzIGlzIHVzZWQgZm9yIHJlcXVlc3RzIHRvIG9wdGltaXplIHRoZSBmaWxlIHN5c3RlbSdzCi0rZGF0YSBzdHJ1Y3R1cmUsIHN1Y2ggYXMgcHJ1bmluZyBhbiBleHRlbnQgdHJlZS4KLSBAVERCX01BTl9DT01NRU5UQC5TSCBUSEUgW3NjcmF0Y2hfZmlsZXNdIFNUQU5aQQotIEBUREJfTUFOX0NPTU1FTlRAVGhlIGZvbGxvd2luZyByZWxhdGlvbnMgYXJlIGRlZmluZWQgaW4gdGhlCi0gQFREQl9NQU5fQ09NTUVOVEAuSSBbc2NyYXRjaF9maWxlc10KLWRpZmYgLS1naXQgYS9lMmZzY2svam91cm5hbC5jIGIvZTJmc2NrL2pvdXJuYWwuYwotaW5kZXggNDZmZTdiNC4uYzRmNThmMSAxMDA2NDQKLS0tLSBhL2UyZnNjay9qb3VybmFsLmMKLSsrKyBiL2UyZnNjay9qb3VybmFsLmMKLUBAIC01NzIsNiArNTcyLDcgQEAgc3RhdGljIHZvaWQgY2xlYXJfdjJfam91cm5hbF9maWVsZHMoam91cm5hbF90ICpqb3VybmFsKQotIAlpZiAoIWZpeF9wcm9ibGVtKGN0eCwgUFJfMF9DTEVBUl9WMl9KT1VSTkFMLCAmcGN0eCkpCi0gCQlyZXR1cm47Ci0gCi0rCWN0eC0+ZmxhZ3MgfD0gRTJGX0ZMQUdfUFJPQkxFTVNfRklYRUQ7Ci0gCW1lbXNldCgoKGNoYXIgKikgam91cm5hbC0+al9zdXBlcmJsb2NrKSArIFYxX1NCX1NJWkUsIDAsCi0gCSAgICAgICBjdHgtPmZzLT5ibG9ja3NpemUtVjFfU0JfU0laRSk7Ci0gCW1hcmtfYnVmZmVyX2RpcnR5KGpvdXJuYWwtPmpfc2JfYnVmZmVyKTsKLWRpZmYgLS1naXQgYS9lMmZzY2svcHJvYmxlbS5jIGIvZTJmc2NrL3Byb2JsZW0uYwotaW5kZXggMzRhNjcxZS4uNGIyNTA2OSAxMDA2NDQKLS0tLSBhL2UyZnNjay9wcm9ibGVtLmMKLSsrKyBiL2UyZnNjay9wcm9ibGVtLmMKLUBAIC0xMjc2LDEyICsxMjc2LDEyIEBAIHN0YXRpYyBzdHJ1Y3QgZTJmc2NrX3Byb2JsZW0gcHJvYmxlbV90YWJsZVtdID0gewotIAkvKiBJbm9kZSBleHRlbnQgdHJlZSBjb3VsZCBiZSBzaG9ydGVyICovCi0gCXsgUFJfMUVfQ0FOX0NPTExBUFNFX0VYVEVOVF9UUkVFLAotIAkgIE5fKCJAaSAlaSBAeCB0cmVlIChhdCBsZXZlbCAlYikgY291bGQgYmUgc2hvcnRlci4gICIpLAotLQkgIFBST01QVF9GSVgsIFBSX05PX09LIHwgUFJfUFJFRU5fTk8gfCBQUl9QUkVFTl9PSyB9LAotKwkgIFBST01QVF9GSVgsIFBSX05PX09LIHwgUFJfUFJFRU5fTk8gfCBQUl9QUkVFTl9PSyB8IFBSX05PVF9BX0ZJWCB9LAotIAotIAkvKiBJbm9kZSBleHRlbnQgdHJlZSBjb3VsZCBiZSBuYXJyb3dlciAqLwotIAl7IFBSXzFFX0NBTl9OQVJST1dfRVhURU5UX1RSRUUsCi0gCSAgTl8oIkBpICVpIEB4IHRyZWUgKGF0IGxldmVsICViKSBjb3VsZCBiZSBuYXJyb3dlci4gICIpLAotLQkgIFBST01QVF9GSVgsIFBSX05PX09LIHwgUFJfUFJFRU5fTk8gfCBQUl9QUkVFTl9PSyB9LAotKwkgIFBST01QVF9GSVgsIFBSX05PX09LIHwgUFJfUFJFRU5fTk8gfCBQUl9QUkVFTl9PSyB8IFBSX05PVF9BX0ZJWCB9LAotIAotIAkvKiBQYXNzIDIgZXJyb3JzICovCi0gCi1AQCAtMjE2Niw2ICsyMTY2LDcgQEAgaW50IGZpeF9wcm9ibGVtKGUyZnNja190IGN0eCwgcHJvYmxlbV90IGNvZGUsIHN0cnVjdCBwcm9ibGVtX2NvbnRleHQgKnBjdHgpCi0gCQlyZWNvbmZpZ3VyZV9ib29sKGN0eCwgcHRyLCBrZXksIFBSX05PX05PTVNHLCAibm9fbm9tc2ciKTsKLSAJCXJlY29uZmlndXJlX2Jvb2woY3R4LCBwdHIsIGtleSwgUFJfUFJFRU5fTk9IRFIsICJwcmVlbl9ub2hlYWRlciIpOwotIAkJcmVjb25maWd1cmVfYm9vbChjdHgsIHB0ciwga2V5LCBQUl9GT1JDRV9OTywgImZvcmNlX25vIik7Ci0rCQlyZWNvbmZpZ3VyZV9ib29sKGN0eCwgcHRyLCBrZXksIFBSX05PVF9BX0ZJWCwgIm5vdF9hX2ZpeCIpOwotIAkJcHJvZmlsZV9nZXRfaW50ZWdlcihjdHgtPnByb2ZpbGUsICJvcHRpb25zIiwKLSAJCQkJICAgICJtYXhfY291bnRfcHJvYmxlbXMiLCAwLCAwLAotIAkJCQkgICAgJnB0ci0+bWF4X2NvdW50KTsKLUBAIC0yMjgzLDcgKzIyODQsOCBAQCBpbnQgZml4X3Byb2JsZW0oZTJmc2NrX3QgY3R4LCBwcm9ibGVtX3QgY29kZSwgc3RydWN0IHByb2JsZW1fY29udGV4dCAqcGN0eCkKLSAJaWYgKHB0ci0+ZmxhZ3MgJiBQUl9BRlRFUl9DT0RFKQotIAkJYW5zd2VyID0gZml4X3Byb2JsZW0oY3R4LCBwdHItPnNlY29uZF9jb2RlLCBwY3R4KTsKLSAKLS0JaWYgKGFuc3dlciAmJiAocHRyLT5wcm9tcHQgIT0gUFJPTVBUX05PTkUpKQotKwlpZiAoYW5zd2VyICYmIChwdHItPnByb21wdCAhPSBQUk9NUFRfTk9ORSkgJiYKLSsJICAgICEocHRyLT5mbGFncyAmIFBSX05PVF9BX0ZJWCkpCi0gCQljdHgtPmZsYWdzIHw9IEUyRl9GTEFHX1BST0JMRU1TX0ZJWEVEOwotIAotIAlyZXR1cm4gYW5zd2VyOwotZGlmZiAtLWdpdCBhL2UyZnNjay9wcm9ibGVtUC5oIGIvZTJmc2NrL3Byb2JsZW1QLmgKLWluZGV4IDc5NDRjZDYuLjYzYmI4ZGYgMTAwNjQ0Ci0tLS0gYS9lMmZzY2svcHJvYmxlbVAuaAotKysrIGIvZTJmc2NrL3Byb2JsZW1QLmgKLUBAIC00NCwzICs0NCw0IEBAIHN0cnVjdCBsYXRjaF9kZXNjciB7Ci0gI2RlZmluZSBQUl9DT05GSUcJMHgwODAwMDAgLyogVGhpcyBwcm9ibGVtIGhhcyBiZWVuIGN1c3RvbWl6ZWQKLSAJCQkJICAgIGZyb20gdGhlIGNvbmZpZyBmaWxlICovCi0gI2RlZmluZSBQUl9GT1JDRV9OTwkweDEwMDAwMCAvKiBGb3JjZSB0aGUgYW5zd2VyIHRvIGJlIG5vICovCi0rI2RlZmluZSBQUl9OT1RfQV9GSVgJMHgyMDAwMDAgLyogWWVzIGRvZXNuJ3QgbWVhbiBhIHByb2JsZW0gd2FzIGZpeGVkICovCi1kaWZmIC0tZ2l0IGEvZTJmc2NrL3VuaXguYyBiL2UyZnNjay91bml4LmMKLWluZGV4IGViOWYzMTEuLjllNGQzMWEgMTAwNjQ0Ci0tLS0gYS9lMmZzY2svdW5peC5jCi0rKysgYi9lMmZzY2svdW5peC5jCi1AQCAtMTkwMSwxMSArMTkwMSwyMyBAQCBub19qb3VybmFsOgotIAkJZml4X3Byb2JsZW0oY3R4LCBQUl82X0lPX0ZMVVNILCAmcGN0eCk7Ci0gCi0gCWlmICh3YXNfY2hhbmdlZCkgewotLQkJZXhpdF92YWx1ZSB8PSBGU0NLX05PTkRFU1RSVUNUOwotLQkJaWYgKCEoY3R4LT5vcHRpb25zICYgRTJGX09QVF9QUkVFTikpCi0tCQkJbG9nX291dChjdHgsIF8oIlxuJXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyAiCi0tCQkJCSAgICAgICAiTU9ESUZJRUQgKioqKipcbiIpLAotKwkJaW50IGZzX2ZpeGVkID0gKGN0eC0+ZmxhZ3MgJiBFMkZfRkxBR19QUk9CTEVNU19GSVhFRCk7Ci0rCi0rCQlpZiAoZnNfZml4ZWQpCi0rCQkJZXhpdF92YWx1ZSB8PSBGU0NLX05PTkRFU1RSVUNUOwotKwkJaWYgKCEoY3R4LT5vcHRpb25zICYgRTJGX09QVF9QUkVFTikpIHsKLSsjaWYgMAkvKiBEbyB0aGlzIGxhdGVyOyBpdCBicmVha3MgdG9vIG1hbnkgdGVzdHMnIGdvbGRlbiBvdXRwdXRzICovCi0rCQkJbG9nX291dChjdHgsIGZzX2ZpeGVkID8KLSsJCQkJXygiXG4lczogKioqKiogRklMRSBTWVNURU0gRVJST1JTICIKLSsJCQkJICAiQ09SUkVDVEVEICoqKioqXG4iKSA6Ci0rCQkJCV8oIiVzOiBGaWxlIHN5c3RlbSB3YXMgbW9kaWZpZWQuXG4iKSwKLSAJCQkJY3R4LT5kZXZpY2VfbmFtZSk7Ci0rI2Vsc2UKLSsJCQlsb2dfb3V0KGN0eCwKLSsJCQkJXygiXG4lczogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqXG4iKSwKLSsJCQkJY3R4LT5kZXZpY2VfbmFtZSk7Ci0rI2VuZGlmCi0rCQl9Ci0gCQlpZiAoY3R4LT5tb3VudF9mbGFncyAmIEVYVDJfTUZfSVNST09UKSB7Ci0gCQkJbG9nX291dChjdHgsIF8oIiVzOiAqKioqKiBSRUJPT1QgU1lTVEVNICoqKioqXG4iKSwKLSAJCQkJY3R4LT5kZXZpY2VfbmFtZSk7Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvZl9jb2xsYXBzZV9leHRlbnRfdHJlZS9leHBlY3QuMSBiL3Rlc3RzL2ZfY29sbGFwc2VfZXh0ZW50X3RyZWUvZXhwZWN0LjEKLWluZGV4IGUyZWI2NWUuLjgxNjVhNTggMTAwNjQ0Ci0tLS0gYS90ZXN0cy9mX2NvbGxhcHNlX2V4dGVudF90cmVlL2V4cGVjdC4xCi0rKysgYi90ZXN0cy9mX2NvbGxhcHNlX2V4dGVudF90cmVlL2V4cGVjdC4xCi1AQCAtMTMsNCArMTMsNCBAQCBQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KLSAKLSB0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgotIHRlc3RfZmlsZXN5czogMTIvMTI4IGZpbGVzICgwLjAlIG5vbi1jb250aWd1b3VzKSwgMTkvNTEyIGJsb2NrcwotLUV4aXQgc3RhdHVzIGlzIDEKLStFeGl0IHN0YXR1cyBpcyAwCi1kaWZmIC0tZ2l0IGEvdGVzdHMvZl9jb21wcmVzc19leHRlbnRfdHJlZV9sZXZlbC9leHBlY3QuMSBiL3Rlc3RzL2ZfY29tcHJlc3NfZXh0ZW50X3RyZWVfbGV2ZWwvZXhwZWN0LjEKLWluZGV4IGEzNTljOTkuLmRkMzNmNjMgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9mX2NvbXByZXNzX2V4dGVudF90cmVlX2xldmVsL2V4cGVjdC4xCi0rKysgYi90ZXN0cy9mX2NvbXByZXNzX2V4dGVudF90cmVlX2xldmVsL2V4cGVjdC4xCi1AQCAtMjAsNCArMjAsNCBAQCBQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KLSAKLSB0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgotIHRlc3RfZmlsZXN5czogMTIvMTI4IGZpbGVzICg4LjMlIG5vbi1jb250aWd1b3VzKSwgMjYvNTEyIGJsb2NrcwotLUV4aXQgc3RhdHVzIGlzIDEKLStFeGl0IHN0YXR1cyBpcyAwCi1kaWZmIC0tZ2l0IGEvdGVzdHMvZl9jb252ZXJ0X2JtYXAvZXhwZWN0LjEgYi90ZXN0cy9mX2NvbnZlcnRfYm1hcC9leHBlY3QuMQotaW5kZXggN2QyY2E4Ni4uYzM4Nzk2MiAxMDA2NDQKLS0tLSBhL3Rlc3RzL2ZfY29udmVydF9ibWFwL2V4cGVjdC4xCi0rKysgYi90ZXN0cy9mX2NvbnZlcnRfYm1hcC9leHBlY3QuMQotQEAgLTIzLDQgKzIzLDQgQEAgUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCi0gCi0gdGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKLSB0ZXN0X2ZpbGVzeXM6IDEyLzEyOCBmaWxlcyAoOC4zJSBub24tY29udGlndW91cyksIDU3MC8yMDQ4IGJsb2NrcwotLUV4aXQgc3RhdHVzIGlzIDEKLStFeGl0IHN0YXR1cyBpcyAwCi1kaWZmIC0tZ2l0IGEvdGVzdHMvZl9jb252ZXJ0X2JtYXBfYW5kX2V4dGVudC9leHBlY3QuMSBiL3Rlc3RzL2ZfY29udmVydF9ibWFwX2FuZF9leHRlbnQvZXhwZWN0LjEKLWluZGV4IDdhZjkxYWEuLmM4NmM1NzEgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9mX2NvbnZlcnRfYm1hcF9hbmRfZXh0ZW50L2V4cGVjdC4xCi0rKysgYi90ZXN0cy9mX2NvbnZlcnRfYm1hcF9hbmRfZXh0ZW50L2V4cGVjdC4xCi1AQCAtMzAsNCArMzAsNCBAQCBQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KLSAKLSB0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgotIHRlc3RfZmlsZXN5czogMTMvMTI4IGZpbGVzICgxNS40JSBub24tY29udGlndW91cyksIDU3NC8yMDQ4IGJsb2NrcwotLUV4aXQgc3RhdHVzIGlzIDEKLStFeGl0IHN0YXR1cyBpcyAwCi1kaWZmIC0tZ2l0IGEvdGVzdHMvZl9leHRlbnRfaHRyZWUvZXhwZWN0LjEgYi90ZXN0cy9mX2V4dGVudF9odHJlZS9leHBlY3QuMQotaW5kZXggMjIzY2E2OS4uZWE0ODQwNSAxMDA2NDQKLS0tLSBhL3Rlc3RzL2ZfZXh0ZW50X2h0cmVlL2V4cGVjdC4xCi0rKysgYi90ZXN0cy9mX2V4dGVudF9odHJlZS9leHBlY3QuMQotQEAgLTI2LDQgKzI2LDQgQEAgdGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKLSAgICAgICAgICAgIDAgc29ja2V0cwotIC0tLS0tLS0tLS0tLQotICAgICAgICAgIDM0MyBmaWxlcwotLUV4aXQgc3RhdHVzIGlzIDEKLStFeGl0IHN0YXR1cyBpcyAwCi1kaWZmIC0tZ2l0IGEvdGVzdHMvZl9qbmxfZXJybm8vZXhwZWN0LjEgYi90ZXN0cy9mX2pubF9lcnJuby9leHBlY3QuMQotaW5kZXggYzU3Mjk1MS4uNDEzNDIzNCAxMDA2NDQKLS0tLSBhL3Rlc3RzL2Zfam5sX2Vycm5vL2V4cGVjdC4xCi0rKysgYi90ZXN0cy9mX2pubF9lcnJuby9leHBlY3QuMQotQEAgLTYsNCArNiw0IEBAIFBhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgotIAotIHRlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCi0gdGVzdF9maWxlc3lzOiAxMS8yMDQ4IGZpbGVzICg5LjElIG5vbi1jb250aWd1b3VzKSwgMTMzMC84MTkyIGJsb2NrcwotLUV4aXQgc3RhdHVzIGlzIDEKLStFeGl0IHN0YXR1cyBpcyAwCi1kaWZmIC0tZ2l0IGEvdGVzdHMvZl9qb3VybmFsL2V4cGVjdC4xIGIvdGVzdHMvZl9qb3VybmFsL2V4cGVjdC4xCi1pbmRleCBhMjAyYzgwLi4wYTE4NjU0IDEwMDY0NAotLS0tIGEvdGVzdHMvZl9qb3VybmFsL2V4cGVjdC4xCi0rKysgYi90ZXN0cy9mX2pvdXJuYWwvZXhwZWN0LjEKLUBAIC01OSw0ICs1OSw0IEBAIFBhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgotIAotIHRlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCi0gdGVzdF9maWxlc3lzOiA1My8yMDQ4IGZpbGVzICgxLjklIG5vbi1jb250aWd1b3VzKSwgMTQwOS84MTkyIGJsb2NrcwotLUV4aXQgc3RhdHVzIGlzIDEKLStFeGl0IHN0YXR1cyBpcyAwCi1kaWZmIC0tZ2l0IGEvdGVzdHMvZl9vcnBoYW4vZXhwZWN0LjEgYi90ZXN0cy9mX29ycGhhbi9leHBlY3QuMQotaW5kZXggZWRkYzFmOC4uMDg3ZWJlZSAxMDA2NDQKLS0tLSBhL3Rlc3RzL2Zfb3JwaGFuL2V4cGVjdC4xCi0rKysgYi90ZXN0cy9mX29ycGhhbi9leHBlY3QuMQotQEAgLTExLDQgKzExLDQgQEAgUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCi0gCi0gdGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKLSB0ZXN0X2ZpbGVzeXM6IDEyLzIwNDggZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAxMzAzLzgxOTIgYmxvY2tzCi0tRXhpdCBzdGF0dXMgaXMgMQotK0V4aXQgc3RhdHVzIGlzIDAKLWRpZmYgLS1naXQgYS90ZXN0cy9mX29ycGhhbl9leHRlbnRzX2lub2RlL2V4cGVjdC4xIGIvdGVzdHMvZl9vcnBoYW5fZXh0ZW50c19pbm9kZS9leHBlY3QuMQotaW5kZXggMmVhYWI3OC4uNWQ3MTNiMyAxMDA2NDQKLS0tLSBhL3Rlc3RzL2Zfb3JwaGFuX2V4dGVudHNfaW5vZGUvZXhwZWN0LjEKLSsrKyBiL3Rlc3RzL2Zfb3JwaGFuX2V4dGVudHNfaW5vZGUvZXhwZWN0LjEKLUBAIC03LDQgKzcsNCBAQCBQYXNzIDU6IENoZWNraW5nIGdyb3VwIHN1bW1hcnkgaW5mb3JtYXRpb24KLSAKLSB0ZXN0X2ZpbGVzeXM6ICoqKioqIEZJTEUgU1lTVEVNIFdBUyBNT0RJRklFRCAqKioqKgotIHRlc3RfZmlsZXN5czogMTIvMTYgZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAyMS8xMDAgYmxvY2tzCi0tRXhpdCBzdGF0dXMgaXMgMQotK0V4aXQgc3RhdHVzIGlzIDAKLWRpZmYgLS1naXQgYS90ZXN0cy9mX3JlaGFzaF9kaXIvZXhwZWN0LjEgYi90ZXN0cy9mX3JlaGFzaF9kaXIvZXhwZWN0LjEKLWluZGV4IDYwNzY3NjUuLmMxNDQ5YmEgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9mX3JlaGFzaF9kaXIvZXhwZWN0LjEKLSsrKyBiL3Rlc3RzL2ZfcmVoYXNoX2Rpci9leHBlY3QuMQotQEAgLTcsNCArNyw0IEBAIFBhc3MgNTogQ2hlY2tpbmcgZ3JvdXAgc3VtbWFyeSBpbmZvcm1hdGlvbgotIAotIHRlc3RfZmlsZXN5czogKioqKiogRklMRSBTWVNURU0gV0FTIE1PRElGSUVEICoqKioqCi0gdGVzdF9maWxlc3lzOiAxMDUvMjA0OCBmaWxlcyAoMi45JSBub24tY29udGlndW91cyksIDMzNi81MTIgYmxvY2tzCi0tRXhpdCBzdGF0dXMgaXMgMQotK0V4aXQgc3RhdHVzIGlzIDAKLWRpZmYgLS1naXQgYS90ZXN0cy9mX3Vuc29ydGVkX0VBcy9leHBlY3QuMSBiL3Rlc3RzL2ZfdW5zb3J0ZWRfRUFzL2V4cGVjdC4xCi1pbmRleCA3ZDU4OGQ3Li42NGI5MDQ1IDEwMDY0NAotLS0tIGEvdGVzdHMvZl91bnNvcnRlZF9FQXMvZXhwZWN0LjEKLSsrKyBiL3Rlc3RzL2ZfdW5zb3J0ZWRfRUFzL2V4cGVjdC4xCi1AQCAtOCw0ICs4LDQgQEAgUGFzcyA1OiBDaGVja2luZyBncm91cCBzdW1tYXJ5IGluZm9ybWF0aW9uCi0gCi0gdGVzdF9maWxlc3lzOiAqKioqKiBGSUxFIFNZU1RFTSBXQVMgTU9ESUZJRUQgKioqKioKLSB0ZXN0X2ZpbGVzeXM6IDEyLzIwNDggZmlsZXMgKDAuMCUgbm9uLWNvbnRpZ3VvdXMpLCAxMjk0LzIwNDggYmxvY2tzCi0tRXhpdCBzdGF0dXMgaXMgMQotK0V4aXQgc3RhdHVzIGlzIDAKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzLzAwMDEtbWlzYy1jcmVhdGVfaW5vZGUuYy1zZXQtZGlyLXMtbW9kZS1jb3JyZWN0bHkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvMDAwMS1taXNjLWNyZWF0ZV9pbm9kZS5jLXNldC1kaXItcy1tb2RlLWNvcnJlY3RseS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzRhNTQwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzLzAwMDEtbWlzYy1jcmVhdGVfaW5vZGUuYy1zZXQtZGlyLXMtbW9kZS1jb3JyZWN0bHkucGF0Y2gKQEAgLTAsMCArMSw0MSBAQAorRnJvbSBmNmQxODg1ODBjMmM5NTk5MzE5MDc2ZmVlMjJmMjQyNDY1MmM3MTFjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDEzIFNlcCAyMDE3IDE5OjU1OjM1IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIG1pc2MvY3JlYXRlX2lub2RlLmM6IHNldCBkaXIncyBtb2RlIGNvcnJlY3RseQorCitUaGUgZGlyJ3MgbW9kZSBoYXMgYmVlbiBzZXQgYnkgZXh0MmZzX21rZGlyKCkgd2l0aCB1bWFzaywgc28KK3Jlc2V0IGl0IHRvIHRoZSBzb3VyY2UncyBtb2RlIGluIHNldF9pbm9kZV9leHRyYSgpLgorCitGaXhlZCB3aGVuIHNvdXJjZSBkaXIncyBtb2RlIGlzIDUyMSwgYnV0IHRhcmJhbGwgd291bGQgYmUgNzIxLCB0aGlzIHdhcworaW5jb3JyZWN0LgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorCitTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIG1pc2MvY3JlYXRlX2lub2RlLmMgfCA5ICsrKysrKysrLQorIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL21pc2MvY3JlYXRlX2lub2RlLmMgYi9taXNjL2NyZWF0ZV9pbm9kZS5jCitpbmRleCA4Y2UzZmFmLi41MGZiYWE4IDEwMDY0NAorLS0tIGEvbWlzYy9jcmVhdGVfaW5vZGUuYworKysrIGIvbWlzYy9jcmVhdGVfaW5vZGUuYworQEAgLTExNiw3ICsxMTYsMTQgQEAgc3RhdGljIGVycmNvZGVfdCBzZXRfaW5vZGVfZXh0cmEoZXh0Ml9maWxzeXMgZnMsIGV4dDJfaW5vX3QgaW5vLAorIAorIAlpbm9kZS5pX3VpZCA9IHN0LT5zdF91aWQ7CisgCWlub2RlLmlfZ2lkID0gc3QtPnN0X2dpZDsKKy0JaW5vZGUuaV9tb2RlIHw9IHN0LT5zdF9tb2RlOworKwkvKgorKwkgKiBUaGUgZGlyJ3MgbW9kZSBoYXMgYmVlbiBzZXQgYnkgZXh0MmZzX21rZGlyKCkgd2l0aCB1bWFzaywgc28KKysJICogcmVzZXQgaXQgdG8gdGhlIHNvdXJjZSdzIG1vZGUKKysJICovCisrCWlmIFNfSVNESVIoc3QtPnN0X21vZGUpCisrCQlpbm9kZS5pX21vZGUgPSBMSU5VWF9TX0lGRElSIHwgc3QtPnN0X21vZGU7CisrCWVsc2UKKysJCWlub2RlLmlfbW9kZSB8PSBzdC0+c3RfbW9kZTsKKyAJaW5vZGUuaV9hdGltZSA9IHN0LT5zdF9hdGltZTsKKyAJaW5vZGUuaV9tdGltZSA9IHN0LT5zdF9tdGltZTsKKyAJaW5vZGUuaV9jdGltZSA9IHN0LT5zdF9jdGltZTsKKy0tIAorMi4xMC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9lMmZzcHJvZ3MtMS40My1zeXNtYWNyb3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvZTJmc3Byb2dzLTEuNDMtc3lzbWFjcm9zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYmJmMmJhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9lMmZzcHJvZ3MtMS40My1zeXNtYWNyb3MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMzAgKzAsMCBAQAotRnJvbSAzMGVmNDFmNjg3MDNiNmExNjAyN2NjODc4NzExOGI4N2YxNDYyZGZmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZTogTW9uLCAyOCBNYXIgMjAxNiAyMDozMTozMyAtMDQwMAotU3ViamVjdDogW1BBVENIIGUyZnNwcm9nc10gaW5jbHVkZSBzeXMvc3lzbWFjcm9zLmggYXMgbmVlZGVkCi0KLVRoZSBtaW5vci9tYWpvci9tYWtlZGV2IG1hY3JvcyBhcmUgbm90IGVudGlyZWx5IHN0YW5kYXJkLiAgZ2xpYmMgaGFzIGhhZAotdGhlIGRlZmluaXRpb25zIGluIHN5cy9zeXNtYWNyb3MuaCBzaW5jZSB0aGUgc3RhcnQsIGFuZCB3YW50cyB0byBtb3ZlIGF3YXkKLWZyb20gYWx3YXlzIGRlZmluaW5nIHRoZW0gaW1wbGljaXRseSB2aWEgc3lzL3R5cGVzLmggKGFzIHRoaXMgcG9sbHV0ZXMgdGhlCi1uYW1lc3BhY2UgaW4gdmlvbGF0aW9uIG9mIFBPU0lYKS4gIE90aGVyIEMgbGlicmFyaWVzIGhhdmUgYWxyZWFkeSBkcm9wcGVkCi10aGVtLiAgU2luY2UgdGhlIGNvbmZpZ3VyZSBzY3JpcHQgYWxyZWFkeSBjaGVja3MgZm9yIHRoaXMgaGVhZGVyLCB1c2UgdGhhdAotdG8gcHVsbCBpbiB0aGUgaGVhZGVyIGluIGZpbGVzIHRoYXQgdXNlIHRoZXNlIG1hY3Jvcy4KLQotU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1UYWtlbiBmcm9tIGdlbnRvbyBwb3J0YWdlLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotLS0tCi0gZGVidWdmcy9kZWJ1Z2ZzLmMgICAgICB8IDMgKysrCi0gbGliL2Jsa2lkL2Rldm5hbWUuYyAgICB8IDMgKysrCi0gbGliL2Jsa2lkL2Rldm5vLmMgICAgICB8IDMgKysrCi0gbGliL2V4dDJmcy9maW5kZGV2LmMgICB8IDMgKysrCi0gbGliL2V4dDJmcy9pc21vdW50ZWQuYyB8IDMgKysrCi0gbWlzYy9jcmVhdGVfaW5vZGUuYyAgICB8IDQgKysrKwotIG1pc2MvbWtfaHVnZWZpbGVzLmMgICAgfCAzICsrKwotIDcgZmlsZXMgY2hhbmdlZCwgMjIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZGVidWdmcy9kZWJ1Z2ZzLmMgYi9kZWJ1Z2ZzL2RlYnVnZnMuYwotaW5kZXggYmE4YmU0MC4uN2Q0ODFiYyAxMDA2NDQKLS0tLSBhL2RlYnVnZnMvZGVidWdmcy5jCi0rKysgYi9kZWJ1Z2ZzL2RlYnVnZnMuYwotQEAgLTI2LDYgKzI2LDkgQEAgZXh0ZXJuIGNoYXIgKm9wdGFyZzsKLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjZW5kaWYKLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSsjaWZkZWYgSEFWRV9TWVNfU1lTTUFDUk9TX0gKLSsjaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPgotKyNlbmRpZgotIAotICNpbmNsdWRlICJkZWJ1Z2ZzLmgiCi0gI2luY2x1ZGUgInV1aWQvdXVpZC5oIgotZGlmZiAtLWdpdCBhL2xpYi9ibGtpZC9kZXZuYW1lLmMgYi9saWIvYmxraWQvZGV2bmFtZS5jCi1pbmRleCAzZTJlZmE5Li42NzFlNzgxIDEwMDY0NAotLS0tIGEvbGliL2Jsa2lkL2Rldm5hbWUuYwotKysrIGIvbGliL2Jsa2lkL2Rldm5hbWUuYwotQEAgLTM2LDYgKzM2LDkgQEAKLSAjaWYgSEFWRV9TWVNfTUtERVZfSAotICNpbmNsdWRlIDxzeXMvbWtkZXYuaD4KLSAjZW5kaWYKLSsjaWZkZWYgSEFWRV9TWVNfU1lTTUFDUk9TX0gKLSsjaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPgotKyNlbmRpZgotICNpbmNsdWRlIDx0aW1lLmg+Ci0gCi0gI2luY2x1ZGUgImJsa2lkUC5oIgotZGlmZiAtLWdpdCBhL2xpYi9ibGtpZC9kZXZuby5jIGIvbGliL2Jsa2lkL2Rldm5vLmMKLWluZGV4IDQ3OWQ5NzcuLjYxZTZmYzcgMTAwNjQ0Ci0tLS0gYS9saWIvYmxraWQvZGV2bm8uYwotKysrIGIvbGliL2Jsa2lkL2Rldm5vLmMKLUBAIC0zMSw2ICszMSw5IEBACi0gI2lmIEhBVkVfU1lTX01LREVWX0gKLSAjaW5jbHVkZSA8c3lzL21rZGV2Lmg+Ci0gI2VuZGlmCi0rI2lmZGVmIEhBVkVfU1lTX1NZU01BQ1JPU19ICi0rI2luY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4KLSsjZW5kaWYKLSAKLSAjaW5jbHVkZSAiYmxraWRQLmgiCi0gCi1kaWZmIC0tZ2l0IGEvbGliL2V4dDJmcy9maW5kZGV2LmMgYi9saWIvZXh0MmZzL2ZpbmRkZXYuYwotaW5kZXggMzExNjA4ZC4uNjJmYTBkYiAxMDA2NDQKLS0tLSBhL2xpYi9leHQyZnMvZmluZGRldi5jCi0rKysgYi9saWIvZXh0MmZzL2ZpbmRkZXYuYwotQEAgLTMxLDYgKzMxLDkgQEAKLSAjaWYgSEFWRV9TWVNfTUtERVZfSAotICNpbmNsdWRlIDxzeXMvbWtkZXYuaD4KLSAjZW5kaWYKLSsjaWZkZWYgSEFWRV9TWVNfU1lTTUFDUk9TX0gKLSsjaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPgotKyNlbmRpZgotIAotICNpbmNsdWRlICJleHQyX2ZzLmgiCi0gI2luY2x1ZGUgImV4dDJmcy5oIgotZGlmZiAtLWdpdCBhL2xpYi9leHQyZnMvaXNtb3VudGVkLmMgYi9saWIvZXh0MmZzL2lzbW91bnRlZC5jCi1pbmRleCBlMGY2OWRkLi43NDA0OTk2IDEwMDY0NAotLS0tIGEvbGliL2V4dDJmcy9pc21vdW50ZWQuYwotKysrIGIvbGliL2V4dDJmcy9pc21vdW50ZWQuYwotQEAgLTQ5LDYgKzQ5LDkgQEAKLSAjaWYgSEFWRV9TWVNfVFlQRVNfSAotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjZW5kaWYKLSsjaWZkZWYgSEFWRV9TWVNfU1lTTUFDUk9TX0gKLSsjaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPgotKyNlbmRpZgotIAotICNpbmNsdWRlICJleHQyX2ZzLmgiCi0gI2luY2x1ZGUgImV4dDJmcy5oIgotZGlmZiAtLWdpdCBhL21pc2MvY3JlYXRlX2lub2RlLmMgYi9taXNjL2NyZWF0ZV9pbm9kZS5jCi1pbmRleCA0ZGJkOGU1Li45OGFlYjQxIDEwMDY0NAotLS0tIGEvbWlzYy9jcmVhdGVfaW5vZGUuYwotKysrIGIvbWlzYy9jcmVhdGVfaW5vZGUuYwotQEAgLTIyLDYgKzIyLDEwIEBACi0gI2luY2x1ZGUgPGF0dHIveGF0dHIuaD4KLSAjZW5kaWYKLSAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+Ci0rI2lmZGVmIEhBVkVfU1lTX1NZU01BQ1JPU19ICi0rI2luY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4KLSsjZW5kaWYKLSsKLSAjaW5jbHVkZSA8ZXh0MmZzL2V4dDJmcy5oPgotICNpbmNsdWRlIDxleHQyZnMvZXh0Ml90eXBlcy5oPgotICNpbmNsdWRlIDxleHQyZnMvZmllbWFwLmg+Ci1kaWZmIC0tZ2l0IGEvbWlzYy9ta19odWdlZmlsZXMuYyBiL21pc2MvbWtfaHVnZWZpbGVzLmMKLWluZGV4IDcxYTE1YzUuLjAwZTk1Y2QgMTAwNjQ0Ci0tLS0gYS9taXNjL21rX2h1Z2VmaWxlcy5jCi0rKysgYi9taXNjL21rX2h1Z2VmaWxlcy5jCi1AQCAtMzUsNiArMzUsOSBAQCBleHRlcm4gaW50IG9wdGluZDsKLSAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxzeXMvc3RhdC5oPgotKyNpZmRlZiBIQVZFX1NZU19TWVNNQUNST1NfSAotKyNpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+Ci0rI2VuZGlmCi0gI2luY2x1ZGUgPGxpYmdlbi5oPgotICNpbmNsdWRlIDxsaW1pdHMuaD4KLSAjaW5jbHVkZSA8YmxraWQvYmxraWQuaD4KLS0tIAotMi44LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL3B0ZXN0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL3B0ZXN0LnBhdGNoCmluZGV4IDg3OWQ5MzYuLjdkZjA5NjcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9wdGVzdC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvcHRlc3QucGF0Y2gKQEAgLTEsMyArMSw1IEBACitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKKwogZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLmluIGIvdGVzdHMvTWFrZWZpbGUuaW4KIGluZGV4IGMxMzBmNGEuLmQyYWRlMDMgMTAwNjQ0CiAtLS0gYS90ZXN0cy9NYWtlZmlsZS5pbgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL3JlcHJvZHVjaWJsZS1kb2MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvcmVwcm9kdWNpYmxlLWRvYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTVkMWQzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL3JlcHJvZHVjaWJsZS1kb2MucGF0Y2gKQEAgLTAsMCArMSwyMSBAQAorCitTdXBwcG9ydCBmb3IgYmluYXJ5IHJlcHJvZHVjaWJpbGl0eS4KK1doZW4gY29tcHJlc3NpbmcsIGRvIG5vdCBzYXZlIHRoZSBvcmlnaW5hbCBmaWxlIG5hbWUgYW5kIHRpbWUgc3RhbXAuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtUaGVvZG9yZSBUcydvIHR5dHNvQG1pdC5lZHUgKG1haW50YWluZXIpXQorCitTaWduZWQtb2ZmLWJ5OiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgorCitkaWZmIC0tZ2l0IGEvZG9jL01ha2VmaWxlLmluIGIvZG9jL01ha2VmaWxlLmluCitpbmRleCA5Y2I1ODRjLi4wYmVlNGU0IDEwMDY0NAorLS0tIGEvZG9jL01ha2VmaWxlLmluCisrKysgYi9kb2MvTWFrZWZpbGUuaW4KK0BAIC0yOCw3ICsyOCw3IEBAIGluc3RhbGwtZG9jLWxpYnM6IGxpYmV4dDJmcy5pbmZvIGxpYmV4dDJmcy5kdmkKKyAJCSQoSU5TVEFMTF9EQVRBKSAkJGkgJChERVNURElSKSQoaW5mb2RpcikvJCRpIDsgXAorIAlkb25lCisgCSQoRSkgIglHWklQICQoaW5mb2RpcikvbGliZXh0MmZzLmluZm8qIgorLQktJChRKSBnemlwIC05ICQoREVTVERJUikkKGluZm9kaXIpL2xpYmV4dDJmcy5pbmZvKgorKwktJChRKSBnemlwIC05IC1uICQoREVTVERJUikkKGluZm9kaXIpL2xpYmV4dDJmcy5pbmZvKgorIAorIHVuaW5zdGFsbC1kb2MtbGliczoKKyAJJChSTSkgLXJmICQoREVTVERJUikkKGluZm9kaXIpL2xpYmV4dDJmcy5pbmZvKgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL3J1bi1wdGVzdCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9ydW4tcHRlc3QKaW5kZXggZTAyZmM3Zi4uZWYxMGIwOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL3J1bi1wdGVzdAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvcnVuLXB0ZXN0CkBAIC0xLDExICsxLDEwIEBACiAjIS9iaW4vc2gKIAogY2QgLi90ZXN0Ci0uL3Rlc3Rfc2NyaXB0ICY+Li4vdGVzdC5sb2cKLWlmIFsgJD8gLWVxIDAgXQotdGhlbgotCWVjaG8gIlBBU1M6IGUyZnNwcm9ncyIKLQlybSAuLi90ZXN0LmxvZwotZWxzZQotCWVjaG8gIkZBSUw6IGUyZnNwcm9ncyIKLWZpCisuL3Rlc3Rfc2NyaXB0IHwgc2VkIC11IC1lICcvOltbOnNwYWNlOl1db2svcy9eL1BBU1M6IC8nIC1lICcvOltbOnNwYWNlOl1dZmFpbGVkL3MvXi9GQUlMOiAvJyAtZSAnLzpbWzpzcGFjZTpdXXNraXBwZWQvcy9eL1NLSVA6IC8nCitybSAtcmYgL3Zhci92b2xhdGlsZS90bXAvKmUyZnNwcm9ncyoKK3JtIC1mIHRtcC0qCitybSAtZiAqLnRtcAorcm0gLWYgKi5vaworcm0gLWYgKi5mYWlsZWQKK3JtIC1mICoubG9nCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3NfMS40My40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzXzEuNDMuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTIxNmM3MC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3NfMS40My40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEyICswLDAgQEAKLXJlcXVpcmUgZTJmc3Byb2dzLmluYwotCi1TUkNfVVJJICs9ICJmaWxlOi8vYWNpbmNsdWRlLm00IFwKLSAgICAgICAgICAgIGZpbGU6Ly9yZW1vdmUubGRjb25maWcuY2FsbC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcXVpZXQtZGVidWdmcy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgIGZpbGU6Ly9wdGVzdC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vbWtkaXIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL1JldmVydC1ta2UyZnMtZW5hYmxlLXRoZS1tZXRhZGF0YV9jc3VtLWFuZC02NGJpdC1mZWEucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2UyZnNwcm9ncy0xLjQzLXN5c21hY3Jvcy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vbWtkaXJfcC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1lMmZzY2stZXhpdC13aXRoLWV4aXQtc3RhdHVzLTAtaWYtbm8tZXJyb3JzLXdlcmUtZml4LnBhdGNoIFwKLSIKLQotU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vZTJmc3Byb2dzLWZpeC1taXNzaW5nLWNoZWNrLWZvci1wZXJtaXNzaW9uLWRlbmllZC5wYXRjaCIKLQotU1JDUkVWID0gIjNkNjZjNGIyMGYwOWY5MjMwNzhjMWU2ZWI5YjU0OTg2NWI1NDk2NzQiCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJ2KD9QPHB2ZXI+XGQrXC5cZCsoXC5cZCspKikkIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0tbGliZGlyPSR7YmFzZV9saWJkaXJ9IC0tc2JpbmRpcj0ke2Jhc2Vfc2JpbmRpcn0gXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLWVsZi1zaGxpYnMgLS1kaXNhYmxlLWxpYnV1aWQgLS1kaXNhYmxlLXV1aWRkIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtbGliYmxraWQgLS1lbmFibGUtdmVyYm9zZS1tYWtlY21kcyIKLQotRVhUUkFfT0VDT05GX2RhcndpbiA9ICItLWxpYmRpcj0ke2Jhc2VfbGliZGlyfSAtLXNiaW5kaXI9JHtiYXNlX3NiaW5kaXJ9IC0tZW5hYmxlLWJzZC1zaGxpYnMiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW2Z1c2VdID0gJy0tZW5hYmxlLWZ1c2UyZnMsLS1kaXNhYmxlLWZ1c2UyZnMsZnVzZScKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCWNwICR7V09SS0RJUn0vYWNpbmNsdWRlLm00ICR7U30vCi19Ci0KLWRvX2luc3RhbGwgKCkgewotCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAotCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbC1saWJzCi0JIyBXZSB1c2UgYmxraWQgZnJvbSB1dGlsLWxpbnV4IG5vdyBzbyByZW1vdmUgZnJvbSBoZXJlCi0Jcm0gLWYgJHtEfSR7YmFzZV9saWJkaXJ9L2xpYmJsa2lkKgotCXJtIC1yZiAke0R9JHtpbmNsdWRlZGlyfS9ibGtpZAotCXJtIC1mICR7RH0ke2Jhc2VfbGliZGlyfS9wa2djb25maWcvYmxraWQucGMKLQlybSAtZiAke0R9JHtiYXNlX3NiaW5kaXJ9L2Jsa2lkCi0Jcm0gLWYgJHtEfSR7YmFzZV9zYmluZGlyfS9mc2NrCi0Jcm0gLWYgJHtEfSR7YmFzZV9zYmluZGlyfS9maW5kZnMKLQotCSMgZTJpbml0cmRfaGVscGVyIGFuZCB0aGUgcGtnY29uZmlnIGZpbGVzIGJlbG9uZyBpbiBsaWJkaXIKLQlpZiBbICEgJHtEfSR7bGliZGlyfSAtZWYgJHtEfSR7YmFzZV9saWJkaXJ9IF07IHRoZW4KLQkJaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9Ci0JCW12ICR7RH0ke2Jhc2VfbGliZGlyfS9lMmluaXRyZF9oZWxwZXIgJHtEfSR7bGliZGlyfQotCQltdiAke0R9JHtiYXNlX2xpYmRpcn0vcGtnY29uZmlnICR7RH0ke2xpYmRpcn0KLQlmaQotCi0Jb2VfbXVsdGlsaWJfaGVhZGVyIGV4dDJmcy9leHQyX3R5cGVzLmgKLQlpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfQotCW12ICR7RH0ke2JpbmRpcn0vY2hhdHRyICR7RH0ke2Jhc2VfYmluZGlyfS9jaGF0dHIuZTJmc3Byb2dzCi0KLQlpbnN0YWxsIC12IC1tIDc1NSAke1N9L2NvbnRyaWIvcG9wdWxhdGUtZXh0ZnMuc2ggJHtEfSR7YmFzZV9zYmluZGlyfS8KLQotCSMgQ2xlYW4gaG9zdCBwYXRoIChidWlsZCBkaXJlY3RvcnkpIGluIGNvbXBpbGVfZXQsIG1rX2NtZHMKLQlzZWQgLWkgLWUgInMsXChFVF9ESVI9LipcKSR7U30vbGliL2V0XCguKlwpLFwxJHtkYXRhZGlyfS9ldFwyLGciICR7RH0ke2JpbmRpcn0vY29tcGlsZV9ldAotCXNlZCAtaSAtZSAicyxcKFNTX0RJUj0uKlwpJHtTfS9saWIvc3NcKC4qXCksXDEke2RhdGFkaXJ9L3NzXDIsZyIgJHtEfSR7YmluZGlyfS9ta19jbWRzCi19Ci0KLSMgTmVlZCB0byBmaW5kIHRoZSByaWdodCBta2UyZnMuY29uZiBmaWxlCi1lMmZzcHJvZ3NfY29uZl9maXh1cCAoKSB7Ci0JZm9yIGkgaW4gbWtlMmZzIG1rZnMuZXh0MiBta2ZzLmV4dDMgbWtmcy5leHQ0OyBkbwotCQljcmVhdGVfd3JhcHBlciAke0R9JHtiYXNlX3NiaW5kaXJ9LyRpIE1LRTJGU19DT05GSUc9JHtzeXNjb25mZGlyfS9ta2UyZnMuY29uZgotCWRvbmUKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotCWUyZnNwcm9nc19jb25mX2ZpeHVwCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKLQllMmZzcHJvZ3NfY29uZl9maXh1cAotfQotCi1SREVQRU5EU19lMmZzcHJvZ3MgPSAiZTJmc3Byb2dzLWJhZGJsb2NrcyIKLVJSRUNPTU1FTkRTX2UyZnNwcm9ncyA9ICJlMmZzcHJvZ3MtbWtlMmZzIGUyZnNwcm9ncy1lMmZzY2siCi0KLVBBQ0tBR0VTID0rICJlMmZzcHJvZ3MtZTJmc2NrIGUyZnNwcm9ncy1ta2UyZnMgZTJmc3Byb2dzLXR1bmUyZnMgZTJmc3Byb2dzLWJhZGJsb2NrcyBlMmZzcHJvZ3MtcmVzaXplMmZzIgotUEFDS0FHRVMgPSsgImxpYmNvbWVyciBsaWJzcyBsaWJlMnAgbGliZXh0MmZzIgotCi1GSUxFU19lMmZzcHJvZ3MtcmVzaXplMmZzID0gIiR7YmFzZV9zYmluZGlyfS9yZXNpemUyZnMqIgotRklMRVNfZTJmc3Byb2dzLWUyZnNjayA9ICIke2Jhc2Vfc2JpbmRpcn0vZTJmc2NrICR7YmFzZV9zYmluZGlyfS9mc2NrLmV4dCoiCi1GSUxFU19lMmZzcHJvZ3MtbWtlMmZzID0gIiR7YmFzZV9zYmluZGlyfS9ta2UyZnMgJHtiYXNlX3NiaW5kaXJ9L21rZnMuZXh0KiAke3N5c2NvbmZkaXJ9L21rZTJmcy5jb25mIgotRklMRVNfZTJmc3Byb2dzLXR1bmUyZnMgPSAiJHtiYXNlX3NiaW5kaXJ9L3R1bmUyZnMgJHtiYXNlX3NiaW5kaXJ9L2UybGFiZWwiCi1GSUxFU19lMmZzcHJvZ3MtYmFkYmxvY2tzID0gIiR7YmFzZV9zYmluZGlyfS9iYWRibG9ja3MiCi1GSUxFU19saWJjb21lcnIgPSAiJHtiYXNlX2xpYmRpcn0vbGliY29tX2Vyci5zby4qIgotRklMRVNfbGlic3MgPSAiJHtiYXNlX2xpYmRpcn0vbGlic3Muc28uKiIKLUZJTEVTX2xpYmUycCA9ICIke2Jhc2VfbGliZGlyfS9saWJlMnAuc28uKiIKLUZJTEVTX2xpYmV4dDJmcyA9ICIke2xpYmRpcn0vZTJpbml0cmRfaGVscGVyICR7YmFzZV9saWJkaXJ9L2xpYmV4dDJmcy5zby4qIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9LyovKi5hd2sgJHtkYXRhZGlyfS8qLyouc2VkICR7YmFzZV9saWJkaXJ9Lyouc28gJHtiaW5kaXJ9L2NvbXBpbGVfZXQgJHtiaW5kaXJ9L21rX2NtZHMiCi0KLUFMVEVSTkFUSVZFXyR7UE59ID0gImNoYXR0ciIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtjaGF0dHJdID0gIiR7YmFzZV9iaW5kaXJ9L2NoYXR0ciIKLUFMVEVSTkFUSVZFX1RBUkdFVFtjaGF0dHJdID0gIiR7YmFzZV9iaW5kaXJ9L2NoYXR0ci5lMmZzcHJvZ3MiCi0KLUFMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJmc2NrLjgiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbZnNjay44XSA9ICIke21hbmRpcn0vbWFuOC9mc2NrLjgiCi0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIke1BOfSAke1BOfS10dW5lMmZzIGNvcmV1dGlscyBwcm9jcHMgYmFzaCIKLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLQlvZV9ydW5tYWtlIC1DICR7Qn0vdGVzdHMKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQljcCAtYSAke0J9L3Rlc3RzICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKLQljcCAtYSAke1N9L3Rlc3RzLyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAotCXNlZCAtZSAncyEuLi9lMmZzY2svZTJmc2NrIWUyZnNjayFnJyAtaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0LyovZXhwZWN0KgotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzXzEuNDMuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9nc18xLjQzLjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDAwOTNjYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9nc18xLjQzLjUuYmIKQEAgLTAsMCArMSwxMTcgQEAKK3JlcXVpcmUgZTJmc3Byb2dzLmluYworCitTUkNfVVJJICs9ICJmaWxlOi8vYWNpbmNsdWRlLm00IFwKKyAgICAgICAgICAgIGZpbGU6Ly9yZW1vdmUubGRjb25maWcuY2FsbC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcXVpZXQtZGVidWdmcy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgIGZpbGU6Ly9wdGVzdC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vbWtkaXIucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL1JldmVydC1ta2UyZnMtZW5hYmxlLXRoZS1tZXRhZGF0YV9jc3VtLWFuZC02NGJpdC1mZWEucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL21rZGlyX3AucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3JlcHJvZHVjaWJsZS1kb2MucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtbWlzYy1jcmVhdGVfaW5vZGUuYy1zZXQtZGlyLXMtbW9kZS1jb3JyZWN0bHkucGF0Y2ggXAorIgorCitTUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly9lMmZzcHJvZ3MtZml4LW1pc3NpbmctY2hlY2stZm9yLXBlcm1pc3Npb24tZGVuaWVkLnBhdGNoIgorCitTUkNSRVYgPSAiMmExM2M4NGI1MTNhYTA5NGQxY2RhNzI3ZTkyZDM1YTg5ZGQ3NzdkYSIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gInYoP1A8cHZlcj5cZCtcLlxkKyhcLlxkKykqKSQiCisKK0VYVFJBX09FQ09ORiArPSAiLS1saWJkaXI9JHtiYXNlX2xpYmRpcn0gLS1zYmluZGlyPSR7YmFzZV9zYmluZGlyfSBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtZWxmLXNobGlicyAtLWRpc2FibGUtbGlidXVpZCAtLWRpc2FibGUtdXVpZGQgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1saWJibGtpZCAtLWVuYWJsZS12ZXJib3NlLW1ha2VjbWRzIgorCitFWFRSQV9PRUNPTkZfZGFyd2luID0gIi0tbGliZGlyPSR7YmFzZV9saWJkaXJ9IC0tc2JpbmRpcj0ke2Jhc2Vfc2JpbmRpcn0gLS1lbmFibGUtYnNkLXNobGlicyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbZnVzZV0gPSAnLS1lbmFibGUtZnVzZTJmcywtLWRpc2FibGUtZnVzZTJmcyxmdXNlJworCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisJY3AgJHtXT1JLRElSfS9hY2luY2x1ZGUubTQgJHtTfS8KK30KKworZG9faW5zdGFsbCAoKSB7CisJb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCisJb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsLWxpYnMKKwkjIFdlIHVzZSBibGtpZCBmcm9tIHV0aWwtbGludXggbm93IHNvIHJlbW92ZSBmcm9tIGhlcmUKKwlybSAtZiAke0R9JHtiYXNlX2xpYmRpcn0vbGliYmxraWQqCisJcm0gLXJmICR7RH0ke2luY2x1ZGVkaXJ9L2Jsa2lkCisJcm0gLWYgJHtEfSR7YmFzZV9saWJkaXJ9L3BrZ2NvbmZpZy9ibGtpZC5wYworCXJtIC1mICR7RH0ke2Jhc2Vfc2JpbmRpcn0vYmxraWQKKwlybSAtZiAke0R9JHtiYXNlX3NiaW5kaXJ9L2ZzY2sKKwlybSAtZiAke0R9JHtiYXNlX3NiaW5kaXJ9L2ZpbmRmcworCisJIyBlMmluaXRyZF9oZWxwZXIgYW5kIHRoZSBwa2djb25maWcgZmlsZXMgYmVsb25nIGluIGxpYmRpcgorCWlmIFsgISAke0R9JHtsaWJkaXJ9IC1lZiAke0R9JHtiYXNlX2xpYmRpcn0gXTsgdGhlbgorCQlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0KKwkJbXYgJHtEfSR7YmFzZV9saWJkaXJ9L2UyaW5pdHJkX2hlbHBlciAke0R9JHtsaWJkaXJ9CisJCW12ICR7RH0ke2Jhc2VfbGliZGlyfS9wa2djb25maWcgJHtEfSR7bGliZGlyfQorCWZpCisKKwlvZV9tdWx0aWxpYl9oZWFkZXIgZXh0MmZzL2V4dDJfdHlwZXMuaAorCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9CisJbXYgJHtEfSR7YmluZGlyfS9jaGF0dHIgJHtEfSR7YmFzZV9iaW5kaXJ9L2NoYXR0ci5lMmZzcHJvZ3MKKworCWluc3RhbGwgLXYgLW0gNzU1ICR7U30vY29udHJpYi9wb3B1bGF0ZS1leHRmcy5zaCAke0R9JHtiYXNlX3NiaW5kaXJ9LworCisJIyBDbGVhbiBob3N0IHBhdGggKGJ1aWxkIGRpcmVjdG9yeSkgaW4gY29tcGlsZV9ldCwgbWtfY21kcworCXNlZCAtaSAtZSAicyxcKEVUX0RJUj0uKlwpJHtTfS9saWIvZXRcKC4qXCksXDEke2RhdGFkaXJ9L2V0XDIsZyIgJHtEfSR7YmluZGlyfS9jb21waWxlX2V0CisJc2VkIC1pIC1lICJzLFwoU1NfRElSPS4qXCkke1N9L2xpYi9zc1woLipcKSxcMSR7ZGF0YWRpcn0vc3NcMixnIiAke0R9JHtiaW5kaXJ9L21rX2NtZHMKK30KKworIyBOZWVkIHRvIGZpbmQgdGhlIHJpZ2h0IG1rZTJmcy5jb25mIGZpbGUKK2UyZnNwcm9nc19jb25mX2ZpeHVwICgpIHsKKwlmb3IgaSBpbiBta2UyZnMgbWtmcy5leHQyIG1rZnMuZXh0MyBta2ZzLmV4dDQ7IGRvCisJCWNyZWF0ZV93cmFwcGVyICR7RH0ke2Jhc2Vfc2JpbmRpcn0vJGkgTUtFMkZTX0NPTkZJRz0ke3N5c2NvbmZkaXJ9L21rZTJmcy5jb25mCisJZG9uZQorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisJZTJmc3Byb2dzX2NvbmZfZml4dXAKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgeworCWUyZnNwcm9nc19jb25mX2ZpeHVwCit9CisKK1JERVBFTkRTX2UyZnNwcm9ncyA9ICJlMmZzcHJvZ3MtYmFkYmxvY2tzIgorUlJFQ09NTUVORFNfZTJmc3Byb2dzID0gImUyZnNwcm9ncy1ta2UyZnMgZTJmc3Byb2dzLWUyZnNjayIKKworUEFDS0FHRVMgPSsgImUyZnNwcm9ncy1lMmZzY2sgZTJmc3Byb2dzLW1rZTJmcyBlMmZzcHJvZ3MtdHVuZTJmcyBlMmZzcHJvZ3MtYmFkYmxvY2tzIGUyZnNwcm9ncy1yZXNpemUyZnMiCitQQUNLQUdFUyA9KyAibGliY29tZXJyIGxpYnNzIGxpYmUycCBsaWJleHQyZnMiCisKK0ZJTEVTX2UyZnNwcm9ncy1yZXNpemUyZnMgPSAiJHtiYXNlX3NiaW5kaXJ9L3Jlc2l6ZTJmcyoiCitGSUxFU19lMmZzcHJvZ3MtZTJmc2NrID0gIiR7YmFzZV9zYmluZGlyfS9lMmZzY2sgJHtiYXNlX3NiaW5kaXJ9L2ZzY2suZXh0KiIKK0ZJTEVTX2UyZnNwcm9ncy1ta2UyZnMgPSAiJHtiYXNlX3NiaW5kaXJ9L21rZTJmcyAke2Jhc2Vfc2JpbmRpcn0vbWtmcy5leHQqICR7c3lzY29uZmRpcn0vbWtlMmZzLmNvbmYiCitGSUxFU19lMmZzcHJvZ3MtdHVuZTJmcyA9ICIke2Jhc2Vfc2JpbmRpcn0vdHVuZTJmcyAke2Jhc2Vfc2JpbmRpcn0vZTJsYWJlbCIKK0ZJTEVTX2UyZnNwcm9ncy1iYWRibG9ja3MgPSAiJHtiYXNlX3NiaW5kaXJ9L2JhZGJsb2NrcyIKK0ZJTEVTX2xpYmNvbWVyciA9ICIke2Jhc2VfbGliZGlyfS9saWJjb21fZXJyLnNvLioiCitGSUxFU19saWJzcyA9ICIke2Jhc2VfbGliZGlyfS9saWJzcy5zby4qIgorRklMRVNfbGliZTJwID0gIiR7YmFzZV9saWJkaXJ9L2xpYmUycC5zby4qIgorRklMRVNfbGliZXh0MmZzID0gIiR7bGliZGlyfS9lMmluaXRyZF9oZWxwZXIgJHtiYXNlX2xpYmRpcn0vbGliZXh0MmZzLnNvLioiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7ZGF0YWRpcn0vKi8qLmF3ayAke2RhdGFkaXJ9LyovKi5zZWQgJHtiYXNlX2xpYmRpcn0vKi5zbyAke2JpbmRpcn0vY29tcGlsZV9ldCAke2JpbmRpcn0vbWtfY21kcyIKKworQUxURVJOQVRJVkVfJHtQTn0gPSAiY2hhdHRyIgorQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2NoYXR0cl0gPSAiJHtiYXNlX2JpbmRpcn0vY2hhdHRyIgorQUxURVJOQVRJVkVfVEFSR0VUW2NoYXR0cl0gPSAiJHtiYXNlX2JpbmRpcn0vY2hhdHRyLmUyZnNwcm9ncyIKKworQUxURVJOQVRJVkVfJHtQTn0tZG9jID0gImZzY2suOCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtmc2NrLjhdID0gIiR7bWFuZGlyfS9tYW44L2ZzY2suOCIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiR7UE59ICR7UE59LXR1bmUyZnMgY29yZXV0aWxzIHByb2NwcyBiYXNoIgorCitkb19jb21waWxlX3B0ZXN0KCkgeworCW9lX3J1bm1ha2UgLUMgJHtCfS90ZXN0cworfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCWNwIC1SIC0tbm8tZGVyZWZlcmVuY2UgLS1wcmVzZXJ2ZT1tb2RlLGxpbmtzIC12ICR7Qn0vdGVzdHMgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAorCWNwIC1SIC0tbm8tZGVyZWZlcmVuY2UgLS1wcmVzZXJ2ZT1tb2RlLGxpbmtzIC12ICR7U30vdGVzdHMvKiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0CisJc2VkIC1lICdzIS4uL2UyZnNjay9lMmZzY2shZTJmc2NrIWcnIC1pICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvKi9leHBlY3QqCisKKwkjIFJlbW92ZSB2YXJpb3VzIGZpbGVzCisJZmluZCAiJHtEfSR7UFRFU1RfUEFUSH0iIC10eXBlIGYgXAorCSAgICBcKCAtbmFtZSAnTWFrZWZpbGUnIC1vIC1uYW1lICdNYWtlZmlsZS5pbicgLW8gLW5hbWUgJyoubycgLW8gLW5hbWUgJyouYycgLW8gLW5hbWUgJyouaCcgXClcCisJICAgIC1leGVjICBybSAtZiB7fSArCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4LzAwMDEtYnVpbGQtUHJvdmlkZS1hbHRlcm5hdGl2ZXMtZm9yLWdsaWJjLWFzc3VtcHRpb25zLWhlbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvMDAwMS1idWlsZC1Qcm92aWRlLWFsdGVybmF0aXZlcy1mb3ItZ2xpYmMtYXNzdW1wdGlvbnMtaGVsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjBmZmExLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvMDAwMS1idWlsZC1Qcm92aWRlLWFsdGVybmF0aXZlcy1mb3ItZ2xpYmMtYXNzdW1wdGlvbnMtaGVsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTA1MSArMCwwIEBACi1Gcm9tIDA1NGZlZGRhNWFiOWI4NDE2MGQ0MGQ5MGNiOTY3ZjJmNTgyMmI4ODkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVGh1LCAzMSBEZWMgMjAxNSAwNjozNTozNCArMDAwMAotU3ViamVjdDogW1BBVENIXSBidWlsZDogUHJvdmlkZSBhbHRlcm5hdGl2ZXMgZm9yIGdsaWJjIGFzc3VtcHRpb25zIGhlbHBzCi0gY29tcGlsaW5nIGl0IG9uIG11c2wKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1SZWJhc2UgdG8gMC42OAotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQotIGxpYi9jb2xvci5jICAgICAgICAgICAgICAgICAgICAgIHwgIDMgKystCi0gbGliL2NyYzMyX2ZpbGUuYyAgICAgICAgICAgICAgICAgfCAgMSArCi0gbGliL2ZpeGVkc2l6ZWhhc2guaCAgICAgICAgICAgICAgfCAgMSAtCi0gbGliL3N5c3RlbS5oICAgICAgICAgICAgICAgICAgICAgfCAxMCArKysrKysrKysrCi0gbGliL3htYWxsb2MuYyAgICAgICAgICAgICAgICAgICAgfCAgMiArLQotIGxpYmFzbS9hc21fZW5kLmMgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBsaWJhc20vYXNtX25ld3Njbi5jICAgICAgICAgICAgICB8ICAyICstCi0gbGliY3B1L2kzODZfZ2VuZGlzLmMgICAgICAgICAgICAgfCAgMiArLQotIGxpYmNwdS9pMzg2X2xleC5jICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBsaWJjcHUvaTM4Nl9wYXJzZS5jICAgICAgICAgICAgICB8ICAyICstCi0gbGliZHcvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgfCAgNCArKystCi0gbGliZHcvbGliZHdfYWxsb2MuYyAgICAgICAgICAgICAgfCAgMiArLQotIGxpYmR3ZmwvZHdmbF9idWlsZF9pZF9maW5kX2VsZi5jIHwgIDMgKystCi0gbGliZHdmbC9kd2ZsX2Vycm9yLmMgICAgICAgICAgICAgfCAgNCArKystCi0gbGliZHdmbC9kd2ZsX21vZHVsZV9nZXRkd2FyZi5jICAgfCAgMSArCi0gbGliZHdmbC9maW5kLWRlYnVnaW5mby5jICAgICAgICAgfCAgMiArLQotIGxpYmR3ZmwvbGliZHdmbF9jcmMzMl9maWxlLmMgICAgIHwgMTAgKysrKysrKysrKwotIGxpYmR3ZmwvbGludXgta2VybmVsLW1vZHVsZXMuYyAgIHwgIDEgKwotIGxpYmVibC9lYmxvcGVuYmFja2VuZC5jICAgICAgICAgIHwgIDIgKy0KLSBsaWJlbGYvZWxmLmggICAgICAgICAgICAgICAgICAgICB8ICA4ICsrKysrKy0tCi0gbGliZWxmL2xpYmVsZi5oICAgICAgICAgICAgICAgICAgfCAgMSArCi0gbGliZWxmL2xpYmVsZlAuaCAgICAgICAgICAgICAgICAgfCAgMSArCi0gc3JjL2FkZHIybGluZS5jICAgICAgICAgICAgICAgICAgfCAgMiArLQotIHNyYy9hci5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBzcmMvYXJsaWIuYyAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCi0gc3JjL2FybGliMi5jICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQotIHNyYy9lbGZjbXAuYyAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBzcmMvZWxmbGludC5jICAgICAgICAgICAgICAgICAgICB8ICAyICstCi0gc3JjL2ZpbmR0ZXh0cmVsLmMgICAgICAgICAgICAgICAgfCAgMiArLQotIHNyYy9ubS5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBzcmMvb2JqZHVtcC5jICAgICAgICAgICAgICAgICAgICB8ICAyICstCi0gc3JjL3JhbmxpYi5jICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQotIHNyYy9yZWFkZWxmLmMgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBzcmMvc2l6ZS5jICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCi0gc3JjL3N0YWNrLmMgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQotIHNyYy9zdHJpbmdzLmMgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSBzcmMvc3RyaXAuYyAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCi0gc3JjL3Vuc3RyaXAuYyAgICAgICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL2FkZHJzY29wZXMuYyAgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9hbGxyZWdzLmMgICAgICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvYmFja3RyYWNlLWRhdGEuYyAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL2JhY2t0cmFjZS1kd2FyZi5jICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9iYWNrdHJhY2UuYyAgICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvYnVpbGRpZC5jICAgICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL2RlYnVnYWx0bGluay5jICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9kZWJ1Z2xpbmsuYyAgICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvZGVsZXRlZC5jICAgICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL2R3ZmwtYWRkci1zZWN0LmMgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9kd2ZsLWJ1Zy1hZGRyLW92ZXJmbG93LmMgICB8ICAyICstCi0gdGVzdHMvZHdmbC1idWctZmQtbGVhay5jICAgICAgICAgfCAgMiArLQotIHRlc3RzL2R3ZmwtYnVnLWdldG1vZHVsZXMuYyAgICAgIHwgIDIgKy0KLSB0ZXN0cy9kd2ZsLXJlcG9ydC1lbGYtYWxpZ24uYyAgICB8ICAyICstCi0gdGVzdHMvZHdmbGxpbmVzLmMgICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL2R3Zmxtb2R0ZXN0LmMgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9kd2Zsc3ltcy5jICAgICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvZWFybHktb2Zmc2NuLmMgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL2VjcC5jICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9maW5kLXByb2xvZ3Vlcy5jICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvZnVuY3JldHZhbC5jICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL2Z1bmNzY29wZXMuYyAgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9nZXRzcmNfZGllLmMgICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvbGluZTJhZGRyLmMgICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL2xvd19oaWdoX3BjLmMgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9tZDUtc2hhMS10ZXN0LmMgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvcmR3cm1tYXAuYyAgICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL3NhcmlkeC5jICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9zZWN0aW9uZHVtcC5jICAgICAgICAgICAgICB8ICAyICstCi0gdGVzdHMvdmFybG9jcy5jICAgICAgICAgICAgICAgICAgfCAgMiArLQotIHRlc3RzL3Zkc29zeW1zLmMgICAgICAgICAgICAgICAgIHwgIDIgKy0KLSA3MCBmaWxlcyBjaGFuZ2VkLCA5OCBpbnNlcnRpb25zKCspLCA2NCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IDJmZjQ0NGUuLjQxZjc3ZGYgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KLUBAIC0yOCw3ICsyOCw3IEBAIHBrZ2luY2x1ZGVfSEVBREVSUyA9IHZlcnNpb24uaAotIAotICMgQWRkIGRvYyBiYWNrIHdoZW4gd2UgaGF2ZSBzb21lIHJlYWwgY29udGVudC4KLSBTVUJESVJTID0gY29uZmlnIG00IGxpYiBsaWJlbGYgbGliZWJsIGxpYmR3ZWxmIGxpYmR3ZmwgbGliZHcgbGliY3B1IGxpYmFzbSBcCi0tCSAgYmFja2VuZHMgc3JjIHBvIHRlc3RzCi0rCSAgYmFja2VuZHMgcG8gdGVzdHMKLSAKLSBFWFRSQV9ESVNUID0gZWxmdXRpbHMuc3BlYyBHUEctS0VZIE5PVEVTIENPTlRSSUJVVElORyBcCi0gCSAgICAgQ09QWUlORyBDT1BZSU5HLUdQTFYyIENPUFlJTkctTEdQTFYzCi1kaWZmIC0tZ2l0IGEvbGliL2NvbG9yLmMgYi9saWIvY29sb3IuYwotaW5kZXggZmRlMmQ5ZC4uNzMyOTJhYyAxMDA2NDQKLS0tLSBhL2xpYi9jb2xvci5jCi0rKysgYi9saWIvY29sb3IuYwotQEAgLTMyLDEyICszMiwxMyBAQAotICNlbmRpZgotIAotICNpbmNsdWRlIDxhcmdwLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxsaWJpbnRsLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0gI2luY2x1ZGUgImxpYmV1LmgiCi0rI2luY2x1ZGUgInN5c3RlbS5oIgotIAotIAotIC8qIFByb3RvdHlwZSBmb3Igb3B0aW9uIGhhbmRsZXIuICAqLwotZGlmZiAtLWdpdCBhL2xpYi9jcmMzMl9maWxlLmMgYi9saWIvY3JjMzJfZmlsZS5jCi1pbmRleCBhODQzNGQ0Li41N2U0Mjk4IDEwMDY0NAotLS0tIGEvbGliL2NyYzMyX2ZpbGUuYwotKysrIGIvbGliL2NyYzMyX2ZpbGUuYwotQEAgLTM1LDYgKzM1LDcgQEAKLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0gI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0gI2luY2x1ZGUgPHN5cy9tbWFuLmg+Ci0rI2luY2x1ZGUgInN5c3RlbS5oIgotIAotIGludAotIGNyYzMyX2ZpbGUgKGludCBmZCwgdWludDMyX3QgKnJlc3ApCi1kaWZmIC0tZ2l0IGEvbGliL2ZpeGVkc2l6ZWhhc2guaCBiL2xpYi9maXhlZHNpemVoYXNoLmgKLWluZGV4IGRhYzJhNWYuLjQzMDE2ZmMgMTAwNjQ0Ci0tLS0gYS9saWIvZml4ZWRzaXplaGFzaC5oCi0rKysgYi9saWIvZml4ZWRzaXplaGFzaC5oCi1AQCAtMzAsNyArMzAsNiBAQAotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0tI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotIAotICNpbmNsdWRlIDxzeXN0ZW0uaD4KLSAKLWRpZmYgLS1naXQgYS9saWIvc3lzdGVtLmggYi9saWIvc3lzdGVtLmgKLWluZGV4IGNjZDk5ZDYuLjBlOTNlNjAgMTAwNjQ0Ci0tLS0gYS9saWIvc3lzdGVtLmgKLSsrKyBiL2xpYi9zeXN0ZW0uaAotQEAgLTU1LDYgKzU1LDE2IEBACi0gI2Vsc2UKLSAjIGVycm9yICJVbmtub3duIGJ5dGUgb3JkZXIiCi0gI2VuZGlmCi0rI2lmbmRlZiBURU1QX0ZBSUxVUkVfUkVUUlkKLSsjZGVmaW5lIFRFTVBfRkFJTFVSRV9SRVRSWShleHByZXNzaW9uKSBcCi0rICAoX19leHRlbnNpb25fXwkJCQkJCQkgICAgICBcCi0rICAgICh7IGxvbmcgaW50IF9fcmVzdWx0OwkJCQkJCSAgICAgIFwKLSsgICAgICAgZG8gX19yZXN1bHQgPSAobG9uZyBpbnQpIChleHByZXNzaW9uKTsJCQkJICAgICAgXAotKyAgICAgICB3aGlsZSAoX19yZXN1bHQgPT0gLTFMICYmIGVycm5vID09IEVJTlRSKTsJCQkgICAgICBcCi0rICAgICAgIF9fcmVzdWx0OyB9KSkKLSsjZW5kaWYKLSsKLSsjZGVmaW5lIGVycm9yKHN0YXR1cywgZXJybm8sIC4uLikgZXJyKHN0YXR1cywgX19WQV9BUkdTX18pCi0gCi0gI2lmbmRlZiBNQVgKLSAjZGVmaW5lIE1BWChtLCBuKSAoKG0pIDwgKG4pID8gKG4pIDogKG0pKQotZGlmZiAtLWdpdCBhL2xpYi94bWFsbG9jLmMgYi9saWIveG1hbGxvYy5jCi1pbmRleCAwY2RlMzg0Li4yMTdiMDU0IDEwMDY0NAotLS0tIGEvbGliL3htYWxsb2MuYwotKysrIGIvbGliL3htYWxsb2MuYwotQEAgLTMwLDcgKzMwLDcgQEAKLSAjIGluY2x1ZGUgPGNvbmZpZy5oPgotICNlbmRpZgotIAotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8bGliaW50bC5oPgotICNpbmNsdWRlIDxzdGRkZWYuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci1kaWZmIC0tZ2l0IGEvbGliYXNtL2FzbV9lbmQuYyBiL2xpYmFzbS9hc21fZW5kLmMKLWluZGV4IDE5MWE1MzUuLmJmNWFiMDYgMTAwNjQ0Ci0tLS0gYS9saWJhc20vYXNtX2VuZC5jCi0rKysgYi9saWJhc20vYXNtX2VuZC5jCi1AQCAtMzIsNyArMzIsNyBAQAotICNlbmRpZgotIAotICNpbmNsdWRlIDxhc3NlcnQuaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGxpYmludGwuaD4KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci1kaWZmIC0tZ2l0IGEvbGliYXNtL2FzbV9uZXdzY24uYyBiL2xpYmFzbS9hc21fbmV3c2NuLmMKLWluZGV4IGRkYmIyNWQuLjc0YTU5OGQgMTAwNjQ0Ci0tLS0gYS9saWJhc20vYXNtX25ld3Njbi5jCi0rKysgYi9saWJhc20vYXNtX25ld3Njbi5jCi1AQCAtMzIsNyArMzIsNyBAQAotICNlbmRpZgotIAotICNpbmNsdWRlIDxhc3NlcnQuaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGxpYmludGwuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotZGlmZiAtLWdpdCBhL2xpYmNwdS9pMzg2X2dlbmRpcy5jIGIvbGliY3B1L2kzODZfZ2VuZGlzLmMKLWluZGV4IGFhZTVlYWUuLjZkNzYwMTYgMTAwNjQ0Ci0tLS0gYS9saWJjcHUvaTM4Nl9nZW5kaXMuYwotKysrIGIvbGliY3B1L2kzODZfZ2VuZGlzLmMKLUBAIC0zMSw3ICszMSw3IEBACi0gIyBpbmNsdWRlIDxjb25maWcuaD4KLSAjZW5kaWYKLSAKLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotZGlmZiAtLWdpdCBhL2xpYmNwdS9pMzg2X2xleC5jIGIvbGliY3B1L2kzODZfbGV4LmMKLWluZGV4IGI2NzA2MDguLmI4NDJjMjUgMTAwNjQ0Ci0tLS0gYS9saWJjcHUvaTM4Nl9sZXguYwotKysrIGIvbGliY3B1L2kzODZfbGV4LmMKLUBAIC01OTIsNyArNTkyLDcgQEAgY2hhciAqaTM4Nl90ZXh0OwotICNlbmRpZgotIAotICNpbmNsdWRlIDxjdHlwZS5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8bGliaW50bC5oPgotIAotICNpbmNsdWRlIDxsaWJldS5oPgotZGlmZiAtLWdpdCBhL2xpYmNwdS9pMzg2X3BhcnNlLmMgYi9saWJjcHUvaTM4Nl9wYXJzZS5jCi1pbmRleCA3MjRhZGRmLi41YjY3ODAyIDEwMDY0NAotLS0tIGEvbGliY3B1L2kzODZfcGFyc2UuYwotKysrIGIvbGliY3B1L2kzODZfcGFyc2UuYwotQEAgLTEwNyw3ICsxMDcsNyBAQAotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAjaW5jbHVkZSA8Y3R5cGUuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0gI2luY2x1ZGUgPGxpYmludGwuaD4KLSAjaW5jbHVkZSA8bWF0aC5oPgotZGlmZiAtLWdpdCBhL2xpYmR3L01ha2VmaWxlLmFtIGIvbGliZHcvTWFrZWZpbGUuYW0KLWluZGV4IDA4MmQ5NmMuLjUxY2JlYTAgMTAwNjQ0Ci0tLS0gYS9saWJkdy9NYWtlZmlsZS5hbQotKysrIGIvbGliZHcvTWFrZWZpbGUuYW0KLUBAIC0xMDIsNiArMTAyLDggQEAgZW5kaWYKLSBsaWJkd19waWNfYV9TT1VSQ0VTID0KLSBhbV9saWJkd19waWNfYV9PQkpFQ1RTID0gJChsaWJkd19hX1NPVVJDRVM6LmM9Lm9zKQotIAotK2Z0c19MREFERCA9IC1sZnRzCi0rCi0gbGliZHdfc29fU09VUkNFUyA9Ci0gbGliZHcuc28kKEVYRUVYVCk6ICQoc3JjZGlyKS9saWJkdy5tYXAgbGliZHdfcGljLmEgLi4vbGliZHdlbGYvbGliZHdlbGZfcGljLmEgXAotIAkgIC4uL2xpYmR3ZmwvbGliZHdmbF9waWMuYSAuLi9saWJlYmwvbGliZWJsLmEgXAotQEAgLTExMiw3ICsxMTQsNyBAQCBsaWJkdy5zbyQoRVhFRVhUKTogJChzcmNkaXIpL2xpYmR3Lm1hcCBsaWJkd19waWMuYSAuLi9saWJkd2VsZi9saWJkd2VsZl9waWMuYSBcCi0gCQktV2wsLS1lbmFibGUtbmV3LWR0YWdzLC1ycGF0aCwkKHBrZ2xpYmRpcikgXAotIAkJLVdsLC0tdmVyc2lvbi1zY3JpcHQsJDwsLS1uby11bmRlZmluZWQgXAotIAkJLVdsLC0td2hvbGUtYXJjaGl2ZSAkKGZpbHRlci1vdXQgJDwsJF4pIC1XbCwtLW5vLXdob2xlLWFyY2hpdmVcCi0tCQktbGRsIC1seiAkKGFyZ3BfTERBREQpICQoemlwX0xJQlMpCi0rCQktbGRsIC1seiAkKGFyZ3BfTERBREQpICQoemlwX0xJQlMpICQoZnRzX0xEQUREKQotIAlAJCh0ZXh0cmVsX2NoZWNrKQotIAkkKEFNX1ZfYXQpbG4gLWZzICRAICRALiQoVkVSU0lPTikKLSAKLWRpZmYgLS1naXQgYS9saWJkdy9saWJkd19hbGxvYy5jIGIvbGliZHcvbGliZHdfYWxsb2MuYwotaW5kZXggMjhhOGNmNi4uMjlhZWIzZiAxMDA2NDQKLS0tLSBhL2xpYmR3L2xpYmR3X2FsbG9jLmMKLSsrKyBiL2xpYmR3L2xpYmR3X2FsbG9jLmMKLUBAIC0zMSw3ICszMSw3IEBACi0gIyBpbmNsdWRlIDxjb25maWcuaD4KLSAjZW5kaWYKLSAKLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlICJsaWJkd1AuaCIKLWRpZmYgLS1naXQgYS9saWJkd2ZsL2R3ZmxfYnVpbGRfaWRfZmluZF9lbGYuYyBiL2xpYmR3ZmwvZHdmbF9idWlsZF9pZF9maW5kX2VsZi5jCi1pbmRleCA5MDNlMTkzLi5iMDBkMTBjIDEwMDY0NAotLS0tIGEvbGliZHdmbC9kd2ZsX2J1aWxkX2lkX2ZpbmRfZWxmLmMKLSsrKyBiL2xpYmR3ZmwvZHdmbF9idWlsZF9pZF9maW5kX2VsZi5jCi1AQCAtMjcsNiArMjcsNyBAQAotICAgIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0gCi0gI2luY2x1ZGUgImxpYmR3ZmxQLmgiCi0rI2luY2x1ZGUgInN5c3RlbS5oIgotICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLUBAIC05NCw3ICs5NSw3IEBAIF9fbGliZHdmbF9vcGVuX2J5X2J1aWxkX2lkIChEd2ZsX01vZHVsZSAqbW9kLCBib29sIGRlYnVnLCBjaGFyICoqZmlsZV9uYW1lLAotIAl7Ci0gCSAgaWYgKCpmaWxlX25hbWUgIT0gTlVMTCkKLSAJICAgIGZyZWUgKCpmaWxlX25hbWUpOwotLQkgICpmaWxlX25hbWUgPSBjYW5vbmljYWxpemVfZmlsZV9uYW1lIChuYW1lKTsKLSsJICAqZmlsZV9uYW1lID0gcmVhbHBhdGggKG5hbWUsIE5VTEwpOwotIAkgIGlmICgqZmlsZV9uYW1lID09IE5VTEwpCi0gCSAgICB7Ci0gCSAgICAgICpmaWxlX25hbWUgPSBuYW1lOwotZGlmZiAtLWdpdCBhL2xpYmR3ZmwvZHdmbF9lcnJvci5jIGIvbGliZHdmbC9kd2ZsX2Vycm9yLmMKLWluZGV4IDdiY2Y2MWMuLmMzNDU3OTcgMTAwNjQ0Ci0tLS0gYS9saWJkd2ZsL2R3ZmxfZXJyb3IuYwotKysrIGIvbGliZHdmbC9kd2ZsX2Vycm9yLmMKLUBAIC0xNDAsNiArMTQwLDcgQEAgX19saWJkd2ZsX3NldGVycm5vIChEd2ZsX0Vycm9yIGVycm9yKQotIGNvbnN0IGNoYXIgKgotIGR3ZmxfZXJybXNnIChpbnQgZXJyb3IpCi0gewotKyAgc3RhdGljIF9fdGhyZWFkIGNoYXIgc1s2NF0gPSAiIjsKLSAgIGlmIChlcnJvciA9PSAwIHx8IGVycm9yID09IC0xKQotICAgICB7Ci0gICAgICAgaW50IGxhc3RfZXJyb3IgPSBnbG9iYWxfZXJyb3I7Ci1AQCAtMTU0LDcgKzE1NSw4IEBAIGR3ZmxfZXJybXNnIChpbnQgZXJyb3IpCi0gICBzd2l0Y2ggKGVycm9yICZ+IDB4ZmZmZikKLSAgICAgewotICAgICBjYXNlIE9USEVSX0VSUk9SIChFUlJOTyk6Ci0tICAgICAgcmV0dXJuIHN0cmVycm9yX3IgKGVycm9yICYgMHhmZmZmLCAiYmFkIiwgMCk7Ci0rICAgICAgc3RyZXJyb3JfciAoZXJyb3IgJiAweGZmZmYsIHMsIHNpemVvZihzKSk7Ci0rICAgICAgcmV0dXJuIHM7Ci0gICAgIGNhc2UgT1RIRVJfRVJST1IgKExJQkVMRik6Ci0gICAgICAgcmV0dXJuIGVsZl9lcnJtc2cgKGVycm9yICYgMHhmZmZmKTsKLSAgICAgY2FzZSBPVEhFUl9FUlJPUiAoTElCRFcpOgotZGlmZiAtLWdpdCBhL2xpYmR3ZmwvZHdmbF9tb2R1bGVfZ2V0ZHdhcmYuYyBiL2xpYmR3ZmwvZHdmbF9tb2R1bGVfZ2V0ZHdhcmYuYwotaW5kZXggMGU4ODEwYi4uODJhZDY2NSAxMDA2NDQKLS0tLSBhL2xpYmR3ZmwvZHdmbF9tb2R1bGVfZ2V0ZHdhcmYuYwotKysrIGIvbGliZHdmbC9kd2ZsX21vZHVsZV9nZXRkd2FyZi5jCi1AQCAtMzEsNiArMzEsNyBAQAotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0rI2luY2x1ZGUgInN5c3RlbS5oIgotICNpbmNsdWRlICIuLi9saWJkdy9saWJkd1AuaCIJLyogRFdBUkZfRV8qIHZhbHVlcyBhcmUgaGVyZS4gICovCi0gI2luY2x1ZGUgIi4uL2xpYmVsZi9saWJlbGZQLmgiCi0gCi1kaWZmIC0tZ2l0IGEvbGliZHdmbC9maW5kLWRlYnVnaW5mby5jIGIvbGliZHdmbC9maW5kLWRlYnVnaW5mby5jCi1pbmRleCA4MDUxNWRiLi44MGIwMTQ4IDEwMDY0NAotLS0tIGEvbGliZHdmbC9maW5kLWRlYnVnaW5mby5jCi0rKysgYi9saWJkd2ZsL2ZpbmQtZGVidWdpbmZvLmMKLUBAIC0zODUsNyArMzg1LDcgQEAgZHdmbF9zdGFuZGFyZF9maW5kX2RlYnVnaW5mbyAoRHdmbF9Nb2R1bGUgKm1vZCwKLSAgICAgICAvKiBJZiBGSUxFX05BTUUgaXMgYSBzeW1saW5rLCB0aGUgZGVidWcgZmlsZSBtaWdodCBiZSBhc3NvY2lhdGVkCi0gCSB3aXRoIHRoZSBzeW1saW5rIHRhcmdldCBuYW1lIGluc3RlYWQuICAqLwotIAotLSAgICAgIGNoYXIgKmNhbm9uID0gY2Fub25pY2FsaXplX2ZpbGVfbmFtZSAoZmlsZV9uYW1lKTsKLSsgICAgICBjaGFyICpjYW5vbiA9IHJlYWxwYXRoIChmaWxlX25hbWUsIE5VTEwpOwotICAgICAgIGlmIChjYW5vbiAhPSBOVUxMICYmIHN0cmNtcCAoZmlsZV9uYW1lLCBjYW5vbikpCi0gCWZkID0gZmluZF9kZWJ1Z2luZm9faW5fcGF0aCAobW9kLCBjYW5vbiwKLSAJCQkJICAgICBkZWJ1Z2xpbmtfZmlsZSwgZGVidWdsaW5rX2NyYywKLWRpZmYgLS1naXQgYS9saWJkd2ZsL2xpYmR3ZmxfY3JjMzJfZmlsZS5jIGIvbGliZHdmbC9saWJkd2ZsX2NyYzMyX2ZpbGUuYwotaW5kZXggNmI2YjdkMy4uZGViYzRhNCAxMDA2NDQKLS0tLSBhL2xpYmR3ZmwvbGliZHdmbF9jcmMzMl9maWxlLmMKLSsrKyBiL2xpYmR3ZmwvbGliZHdmbF9jcmMzMl9maWxlLmMKLUBAIC0zMSw2ICszMSwxNiBAQAotIAotICNkZWZpbmUgY3JjMzJfZmlsZSBhdHRyaWJ1dGVfaGlkZGVuIF9fbGliZHdmbF9jcmMzMl9maWxlCi0gI2RlZmluZSBjcmMzMiBfX2xpYmR3ZmxfY3JjMzIKLSsKLSsjaWZuZGVmIFRFTVBfRkFJTFVSRV9SRVRSWQotKyNkZWZpbmUgVEVNUF9GQUlMVVJFX1JFVFJZKGV4cHJlc3Npb24pIFwKLSsgIChfX2V4dGVuc2lvbl9fCQkJCQkJCSAgICAgIFwKLSsgICAgKHsgbG9uZyBpbnQgX19yZXN1bHQ7CQkJCQkJICAgICAgXAotKyAgICAgICBkbyBfX3Jlc3VsdCA9IChsb25nIGludCkgKGV4cHJlc3Npb24pOwkJCQkgICAgICBcCi0rICAgICAgIHdoaWxlIChfX3Jlc3VsdCA9PSAtMUwgJiYgZXJybm8gPT0gRUlOVFIpOwkJCSAgICAgIFwKLSsgICAgICAgX19yZXN1bHQ7IH0pKQotKyNlbmRpZgotKwotICNkZWZpbmUgTElCX1NZU1RFTV9ICTEKLSAjaW5jbHVkZSA8bGliZHdmbFAuaD4KLSAjaW5jbHVkZSAiLi4vbGliL2NyYzMyX2ZpbGUuYyIKLWRpZmYgLS1naXQgYS9saWJkd2ZsL2xpbnV4LWtlcm5lbC1tb2R1bGVzLmMgYi9saWJkd2ZsL2xpbnV4LWtlcm5lbC1tb2R1bGVzLmMKLWluZGV4IDljZDhlYTkuLjRkYmY0YzUgMTAwNjQ0Ci0tLS0gYS9saWJkd2ZsL2xpbnV4LWtlcm5lbC1tb2R1bGVzLmMKLSsrKyBiL2xpYmR3ZmwvbGludXgta2VybmVsLW1vZHVsZXMuYwotQEAgLTM2LDYgKzM2LDcgQEAKLSAjaW5jbHVkZSA8Y29uZmlnLmg+Ci0gCi0gI2luY2x1ZGUgImxpYmR3ZmxQLmgiCi0rI2luY2x1ZGUgInN5c3RlbS5oIgotICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotZGlmZiAtLWdpdCBhL2xpYmVibC9lYmxvcGVuYmFja2VuZC5jIGIvbGliZWJsL2VibG9wZW5iYWNrZW5kLmMKLWluZGV4IDM0ZDQzOWEuLjU2ZDIzNDUgMTAwNjQ0Ci0tLS0gYS9saWJlYmwvZWJsb3BlbmJhY2tlbmQuYwotKysrIGIvbGliZWJsL2VibG9wZW5iYWNrZW5kLmMKLUBAIC0zMiw3ICszMiw3IEBACi0gCi0gI2luY2x1ZGUgPGFzc2VydC5oPgotICNpbmNsdWRlIDxkbGZjbi5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8bGliZWxmUC5oPgotICNpbmNsdWRlIDxkd2FyZi5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLWRpZmYgLS1naXQgYS9saWJlbGYvZWxmLmggYi9saWJlbGYvZWxmLmgKLWluZGV4IDc0NjU0ZDYuLjgxZWVlOGIgMTAwNjQ0Ci0tLS0gYS9saWJlbGYvZWxmLmgKLSsrKyBiL2xpYmVsZi9lbGYuaAotQEAgLTIxLDcgKzIxLDkgQEAKLSAKLSAjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KLSAKLS1fX0JFR0lOX0RFQ0xTCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rZXh0ZXJuICJDIiB7Ci0rI2VuZGlmCi0gCi0gLyogU3RhbmRhcmQgRUxGIHR5cGVzLiAgKi8KLSAKLUBAIC0zNzA0LDYgKzM3MDYsOCBAQCBlbnVtCi0gI2RlZmluZSBSX0JQRl9OT05FCQkwCS8qIE5vIHJlbG9jICovCi0gI2RlZmluZSBSX0JQRl9NQVBfRkQJCTEJLyogTWFwIGZkIHRvIHBvaW50ZXIgKi8KLSAKLS1fX0VORF9ERUNMUwotKyNpZmRlZiBfX2NwbHVzcGx1cwotK30KLSsjZW5kaWYKLSAKLSAjZW5kaWYJLyogZWxmLmggKi8KLWRpZmYgLS1naXQgYS9saWJlbGYvbGliZWxmLmggYi9saWJlbGYvbGliZWxmLmgKLWluZGV4IGMwZDYzODkuLjM4YTY4ZmQgMTAwNjQ0Ci0tLS0gYS9saWJlbGYvbGliZWxmLmgKLSsrKyBiL2xpYmVsZi9saWJlbGYuaAotQEAgLTI5LDYgKzI5LDcgQEAKLSAjaWZuZGVmIF9MSUJFTEZfSAotICNkZWZpbmUgX0xJQkVMRl9IIDEKLSAKLSsjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8c3RkaW50Lmg+Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotIAotZGlmZiAtLWdpdCBhL2xpYmVsZi9saWJlbGZQLmggYi9saWJlbGYvbGliZWxmUC5oCi1pbmRleCA0NDU5OTgyLi4xMjk2ZjIwIDEwMDY0NAotLS0tIGEvbGliZWxmL2xpYmVsZlAuaAotKysrIGIvbGliZWxmL2xpYmVsZlAuaAotQEAgLTM2LDYgKzM2LDcgQEAKLSAKLSAjaW5jbHVkZSA8YXIuaD4KLSAjaW5jbHVkZSA8Z2VsZi5oPgotKyNpbmNsdWRlIDxsaWJlbGYuaD4KLSAKLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8c3RkYm9vbC5oPgotZGlmZiAtLWdpdCBhL3NyYy9hZGRyMmxpbmUuYyBiL3NyYy9hZGRyMmxpbmUuYwotaW5kZXggMDIyMjA4OC4uY2Q2YTlhNiAxMDA2NDQKLS0tLSBhL3NyYy9hZGRyMmxpbmUuYwotKysrIGIvc3JjL2FkZHIybGluZS5jCi1AQCAtMjMsNyArMjMsNyBAQAotICNpbmNsdWRlIDxhcmdwLmg+Ci0gI2luY2x1ZGUgPGFzc2VydC5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSAjaW5jbHVkZSA8bGliZHdmbC5oPgotZGlmZiAtLWdpdCBhL3NyYy9hci5jIGIvc3JjL2FyLmMKLWluZGV4IGYyZjMyMmIuLjZlNzAwMzEgMTAwNjQ0Ci0tLS0gYS9zcmMvYXIuYwotKysrIGIvc3JjL2FyLmMKLUBAIC0yMiw3ICsyMiw3IEBACi0gCi0gI2luY2x1ZGUgPGFyZ3AuaD4KLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxnZWxmLmg+Ci0gI2luY2x1ZGUgPGxpYmludGwuaD4KLWRpZmYgLS1naXQgYS9zcmMvYXJsaWIuYyBiL3NyYy9hcmxpYi5jCi1pbmRleCBlMDgzOWFhLi4xMTQzNjU4IDEwMDY0NAotLS0tIGEvc3JjL2FybGliLmMKLSsrKyBiL3NyYy9hcmxpYi5jCi1AQCAtMjEsNyArMjEsNyBAQAotICNlbmRpZgotIAotICNpbmNsdWRlIDxhc3NlcnQuaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGdlbGYuaD4KLSAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSAjaW5jbHVkZSA8bGliaW50bC5oPgotZGlmZiAtLWdpdCBhL3NyYy9hcmxpYjIuYyBiL3NyYy9hcmxpYjIuYwotaW5kZXggNTUzZmM1Ny4uNDY0NDNkMCAxMDA2NDQKLS0tLSBhL3NyYy9hcmxpYjIuYwotKysrIGIvc3JjL2FybGliMi5jCi1AQCAtMjAsNyArMjAsNyBAQAotICMgaW5jbHVkZSA8Y29uZmlnLmg+Ci0gI2VuZGlmCi0gCi0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxsaWJpbnRsLmg+Ci0gI2luY2x1ZGUgPGxpbWl0cy5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLWRpZmYgLS1naXQgYS9zcmMvZWxmY21wLmMgYi9zcmMvZWxmY21wLmMKLWluZGV4IDQwMWFiMzEuLjg3M2QyNTMgMTAwNjQ0Ci0tLS0gYS9zcmMvZWxmY21wLmMKLSsrKyBiL3NyYy9lbGZjbXAuYwotQEAgLTIzLDcgKzIzLDcgQEAKLSAjaW5jbHVkZSA8YXJncC5oPgotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPGxvY2FsZS5oPgotICNpbmNsdWRlIDxsaWJpbnRsLmg+Ci1kaWZmIC0tZ2l0IGEvc3JjL2VsZmxpbnQuYyBiL3NyYy9lbGZsaW50LmMKLWluZGV4IDdkM2YyMjcuLjA3NGQyMWMgMTAwNjQ0Ci0tLS0gYS9zcmMvZWxmbGludC5jCi0rKysgYi9zcmMvZWxmbGludC5jCi1AQCAtMjQsNyArMjQsNyBAQAotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAjaW5jbHVkZSA8Ynl0ZXN3YXAuaD4KLSAjaW5jbHVkZSA8ZW5kaWFuLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxnZWxmLmg+Ci0gI2luY2x1ZGUgPGludHR5cGVzLmg+Ci1kaWZmIC0tZ2l0IGEvc3JjL2ZpbmR0ZXh0cmVsLmMgYi9zcmMvZmluZHRleHRyZWwuYwotaW5kZXggZGM0MTUwMi4uMzI1ODg4YyAxMDA2NDQKLS0tLSBhL3NyYy9maW5kdGV4dHJlbC5jCi0rKysgYi9zcmMvZmluZHRleHRyZWwuYwotQEAgLTIzLDcgKzIzLDcgQEAKLSAjaW5jbHVkZSA8YXJncC5oPgotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPGdlbGYuaD4KLSAjaW5jbHVkZSA8bGliZHcuaD4KLWRpZmYgLS1naXQgYS9zcmMvbm0uYyBiL3NyYy9ubS5jCi1pbmRleCBjNTRlOTZmLi45ZTAzMWQ5IDEwMDY0NAotLS0tIGEvc3JjL25tLmMKLSsrKyBiL3NyYy9ubS5jCi1AQCAtMjYsNyArMjYsNyBAQAotICNpbmNsdWRlIDxjdHlwZS5oPgotICNpbmNsdWRlIDxkd2FyZi5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8Z2VsZi5oPgotICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotZGlmZiAtLWdpdCBhL3NyYy9vYmpkdW1wLmMgYi9zcmMvb2JqZHVtcC5jCi1pbmRleCBmZmY0YjgxLi40YjFmOTY2IDEwMDY0NAotLS0tIGEvc3JjL29iamR1bXAuYwotKysrIGIvc3JjL29iamR1bXAuYwotQEAgLTIxLDcgKzIxLDcgQEAKLSAjZW5kaWYKLSAKLSAjaW5jbHVkZSA8YXJncC5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSAjaW5jbHVkZSA8bGliaW50bC5oPgotZGlmZiAtLWdpdCBhL3NyYy9yYW5saWIuYyBiL3NyYy9yYW5saWIuYwotaW5kZXggNDFhM2JjZi4uMGM3ZGEyYyAxMDA2NDQKLS0tLSBhL3NyYy9yYW5saWIuYwotKysrIGIvc3JjL3JhbmxpYi5jCi1AQCAtMjQsNyArMjQsNyBAQAotICNpbmNsdWRlIDxhcmdwLmg+Ci0gI2luY2x1ZGUgPGFzc2VydC5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8Z2VsZi5oPgotICNpbmNsdWRlIDxsaWJpbnRsLmg+Ci1kaWZmIC0tZ2l0IGEvc3JjL3JlYWRlbGYuYyBiL3NyYy9yZWFkZWxmLmMKLWluZGV4IGQxOGE0YjcuLmE2Y2ZiMzUgMTAwNjQ0Ci0tLS0gYS9zcmMvcmVhZGVsZi5jCi0rKysgYi9zcmMvcmVhZGVsZi5jCi1AQCAtMjUsNyArMjUsNyBAQAotICNpbmNsdWRlIDxjdHlwZS5oPgotICNpbmNsdWRlIDxkd2FyZi5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8Z2VsZi5oPgotICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotZGlmZiAtLWdpdCBhL3NyYy9zaXplLmMgYi9zcmMvc2l6ZS5jCi1pbmRleCBkZTBkNzkxLi40NjM5ZDQyIDEwMDY0NAotLS0tIGEvc3JjL3NpemUuYwotKysrIGIvc3JjL3NpemUuYwotQEAgLTIxLDcgKzIxLDcgQEAKLSAjZW5kaWYKLSAKLSAjaW5jbHVkZSA8YXJncC5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8Z2VsZi5oPgotICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotZGlmZiAtLWdpdCBhL3NyYy9zdGFjay5jIGIvc3JjL3N0YWNrLmMKLWluZGV4IGE1YTdiZWIuLjRjMDc1YmMgMTAwNjQ0Ci0tLS0gYS9zcmMvc3RhY2suYwotKysrIGIvc3JjL3N0YWNrLmMKLUBAIC0xOCw3ICsxOCw3IEBACi0gI2luY2x1ZGUgPGNvbmZpZy5oPgotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAjaW5jbHVkZSA8YXJncC5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci1kaWZmIC0tZ2l0IGEvc3JjL3N0cmluZ3MuYyBiL3NyYy9zdHJpbmdzLmMKLWluZGV4IDQ5YWFiOGIuLjA5ZDViMWMgMTAwNjQ0Ci0tLS0gYS9zcmMvc3RyaW5ncy5jCi0rKysgYi9zcmMvc3RyaW5ncy5jCi1AQCAtMjUsNyArMjUsNyBAQAotICNpbmNsdWRlIDxjdHlwZS5oPgotICNpbmNsdWRlIDxlbmRpYW4uaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPGdlbGYuaD4KLSAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLWRpZmYgLS1naXQgYS9zcmMvc3RyaXAuYyBiL3NyYy9zdHJpcC5jCi1pbmRleCBhODc1ZGRmLi5mZDc2ZjdmIDEwMDY0NAotLS0tIGEvc3JjL3N0cmlwLmMKLSsrKyBiL3NyYy9zdHJpcC5jCi1AQCAtMjQsNyArMjQsNyBAQAotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAjaW5jbHVkZSA8Ynl0ZXN3YXAuaD4KLSAjaW5jbHVkZSA8ZW5kaWFuLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxnZWxmLmg+Ci0gI2luY2x1ZGUgPGxpYmVsZi5oPgotZGlmZiAtLWdpdCBhL3NyYy91bnN0cmlwLmMgYi9zcmMvdW5zdHJpcC5jCi1pbmRleCBkODM4YWU5Li4wMTA4MjcyIDEwMDY0NAotLS0tIGEvc3JjL3Vuc3RyaXAuYwotKysrIGIvc3JjL3Vuc3RyaXAuYwotQEAgLTMxLDcgKzMxLDcgQEAKLSAjaW5jbHVkZSA8YXJncC5oPgotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPGZubWF0Y2guaD4KLSAjaW5jbHVkZSA8bGliaW50bC5oPgotZGlmZiAtLWdpdCBhL3Rlc3RzL2FkZHJzY29wZXMuYyBiL3Rlc3RzL2FkZHJzY29wZXMuYwotaW5kZXggNzkxNTY5Zi4uNTRmNDMxMSAxMDA2NDQKLS0tLSBhL3Rlc3RzL2FkZHJzY29wZXMuYwotKysrIGIvdGVzdHMvYWRkcnNjb3Blcy5jCi1AQCAtMjUsNyArMjUsNyBAQAotICNpbmNsdWRlIDxzdGRpb19leHQuaD4KLSAjaW5jbHVkZSA8bG9jYWxlLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gCi0gCi1kaWZmIC0tZ2l0IGEvdGVzdHMvYWxscmVncy5jIGIvdGVzdHMvYWxscmVncy5jCi1pbmRleCAyODZmN2UzLi5jOWRlMDg5IDEwMDY0NAotLS0tIGEvdGVzdHMvYWxscmVncy5jCi0rKysgYi90ZXN0cy9hbGxyZWdzLmMKLUBAIC0yMSw3ICsyMSw3IEBACi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGxvY2FsZS5oPgotICNpbmNsdWRlIDxhcmdwLmg+Ci0gI2luY2x1ZGUgPGFzc2VydC5oPgotZGlmZiAtLWdpdCBhL3Rlc3RzL2JhY2t0cmFjZS1kYXRhLmMgYi90ZXN0cy9iYWNrdHJhY2UtZGF0YS5jCi1pbmRleCBiNzE1OGRhLi4zNTRmYTZhIDEwMDY0NAotLS0tIGEvdGVzdHMvYmFja3RyYWNlLWRhdGEuYwotKysrIGIvdGVzdHMvYmFja3RyYWNlLWRhdGEuYwotQEAgLTI3LDcgKzI3LDcgQEAKLSAjaW5jbHVkZSA8ZGlyZW50Lmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0gI2luY2x1ZGUgPGR3YXJmLmg+Ci0gI2lmIGRlZmluZWQoX194ODZfNjRfXykgJiYgZGVmaW5lZChfX2xpbnV4X18pCi1kaWZmIC0tZ2l0IGEvdGVzdHMvYmFja3RyYWNlLWR3YXJmLmMgYi90ZXN0cy9iYWNrdHJhY2UtZHdhcmYuYwotaW5kZXggYTY0NGM4YS4uYjhjYmUyNyAxMDA2NDQKLS0tLSBhL3Rlc3RzL2JhY2t0cmFjZS1kd2FyZi5jCi0rKysgYi90ZXN0cy9iYWNrdHJhY2UtZHdhcmYuYwotQEAgLTIyLDcgKzIyLDcgQEAKLSAjaW5jbHVkZSA8c3RkaW9fZXh0Lmg+Ci0gI2luY2x1ZGUgPGxvY2FsZS5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0gI2luY2x1ZGUgPHN5cy9wdHJhY2UuaD4KLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvYmFja3RyYWNlLmMgYi90ZXN0cy9iYWNrdHJhY2UuYwotaW5kZXggMWZmNjM1My4uNDdlM2Y3YiAxMDA2NDQKLS0tLSBhL3Rlc3RzL2JhY2t0cmFjZS5jCi0rKysgYi90ZXN0cy9iYWNrdHJhY2UuYwotQEAgLTI0LDcgKzI0LDcgQEAKLSAjaW5jbHVkZSA8ZGlyZW50Lmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxlcnJuby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0gI2luY2x1ZGUgPGR3YXJmLmg+Ci0gI2lmZGVmIF9fbGludXhfXwotZGlmZiAtLWdpdCBhL3Rlc3RzL2J1aWxkaWQuYyBiL3Rlc3RzL2J1aWxkaWQuYwotaW5kZXggODdjMTg3Ny4uMjk1M2U2YiAxMDA2NDQKLS0tLSBhL3Rlc3RzL2J1aWxkaWQuYwotKysrIGIvdGVzdHMvYnVpbGRpZC5jCi1AQCAtMjMsNyArMjMsNyBAQAotICNpbmNsdWRlIEVMRlVUSUxTX0hFQURFUihlbGYpCi0gI2luY2x1ZGUgRUxGVVRJTFNfSEVBREVSKGR3ZWxmKQotICNpbmNsdWRlIDxzdGRpby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLWRpZmYgLS1naXQgYS90ZXN0cy9kZWJ1Z2FsdGxpbmsuYyBiL3Rlc3RzL2RlYnVnYWx0bGluay5jCi1pbmRleCA2ZDk3ZDUwLi5lZTdlNTU5IDEwMDY0NAotLS0tIGEvdGVzdHMvZGVidWdhbHRsaW5rLmMKLSsrKyBiL3Rlc3RzL2RlYnVnYWx0bGluay5jCi1AQCAtMjMsNyArMjMsNyBAQAotICNpbmNsdWRlIEVMRlVUSUxTX0hFQURFUihkdykKLSAjaW5jbHVkZSBFTEZVVElMU19IRUFERVIoZHdlbGYpCi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotZGlmZiAtLWdpdCBhL3Rlc3RzL2RlYnVnbGluay5jIGIvdGVzdHMvZGVidWdsaW5rLmMKLWluZGV4IDkzNWQxMDIuLjc0MWNiODEgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9kZWJ1Z2xpbmsuYwotKysrIGIvdGVzdHMvZGVidWdsaW5rLmMKLUBAIC0yMSw3ICsyMSw3IEBACi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgRUxGVVRJTFNfSEVBREVSKGR3ZWxmKQotICNpbmNsdWRlIDxzdGRpby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLWRpZmYgLS1naXQgYS90ZXN0cy9kZWxldGVkLmMgYi90ZXN0cy9kZWxldGVkLmMKLWluZGV4IDZiZTM1YmMuLjAxOTA3MTEgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9kZWxldGVkLmMKLSsrKyBiL3Rlc3RzL2RlbGV0ZWQuYwotQEAgLTIxLDcgKzIxLDcgQEAKLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0gI2luY2x1ZGUgPGFzc2VydC5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaWZkZWYgX19saW51eF9fCi0gI2luY2x1ZGUgPHN5cy9wcmN0bC5oPgotZGlmZiAtLWdpdCBhL3Rlc3RzL2R3ZmwtYWRkci1zZWN0LmMgYi90ZXN0cy9kd2ZsLWFkZHItc2VjdC5jCi1pbmRleCAyMWU0NzBhLi4xZWExZTNiIDEwMDY0NAotLS0tIGEvdGVzdHMvZHdmbC1hZGRyLXNlY3QuYwotKysrIGIvdGVzdHMvZHdmbC1hZGRyLXNlY3QuYwotQEAgLTIzLDcgKzIzLDcgQEAKLSAjaW5jbHVkZSA8c3RkaW9fZXh0Lmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGxvY2FsZS5oPgotICNpbmNsdWRlIDxhcmdwLmg+Ci0gI2luY2x1ZGUgRUxGVVRJTFNfSEVBREVSKGR3ZmwpCi1kaWZmIC0tZ2l0IGEvdGVzdHMvZHdmbC1idWctYWRkci1vdmVyZmxvdy5jIGIvdGVzdHMvZHdmbC1idWctYWRkci1vdmVyZmxvdy5jCi1pbmRleCBhYTgwMzBlLi4wMmM4YmVmIDEwMDY0NAotLS0tIGEvdGVzdHMvZHdmbC1idWctYWRkci1vdmVyZmxvdy5jCi0rKysgYi90ZXN0cy9kd2ZsLWJ1Zy1hZGRyLW92ZXJmbG93LmMKLUBAIC0yMCw3ICsyMCw3IEBACi0gI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvX2V4dC5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8bG9jYWxlLmg+Ci0gI2luY2x1ZGUgRUxGVVRJTFNfSEVBREVSKGR3ZmwpCi0gCi1kaWZmIC0tZ2l0IGEvdGVzdHMvZHdmbC1idWctZmQtbGVhay5jIGIvdGVzdHMvZHdmbC1idWctZmQtbGVhay5jCi1pbmRleCA2ODljZGQ3Li41OTczZGEzIDEwMDY0NAotLS0tIGEvdGVzdHMvZHdmbC1idWctZmQtbGVhay5jCi0rKysgYi90ZXN0cy9kd2ZsLWJ1Zy1mZC1sZWFrLmMKLUBAIC0yNCw3ICsyNCw3IEBACi0gI2luY2x1ZGUgPGRpcmVudC5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotICNpbmNsdWRlIDxkd2FyZi5oPgotIAotZGlmZiAtLWdpdCBhL3Rlc3RzL2R3ZmwtYnVnLWdldG1vZHVsZXMuYyBiL3Rlc3RzL2R3ZmwtYnVnLWdldG1vZHVsZXMuYwotaW5kZXggMWVlOTg5Zi4uZmQ2MmU2NSAxMDA2NDQKLS0tLSBhL3Rlc3RzL2R3ZmwtYnVnLWdldG1vZHVsZXMuYwotKysrIGIvdGVzdHMvZHdmbC1idWctZ2V0bW9kdWxlcy5jCi1AQCAtMTgsNyArMTgsNyBAQAotICNpbmNsdWRlIDxjb25maWcuaD4KLSAjaW5jbHVkZSBFTEZVVElMU19IRUFERVIoZHdmbCkKLSAKLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gCi0gc3RhdGljIGNvbnN0IER3ZmxfQ2FsbGJhY2tzIGNhbGxiYWNrcyA9Ci0gICB7Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvZHdmbC1yZXBvcnQtZWxmLWFsaWduLmMgYi90ZXN0cy9kd2ZsLXJlcG9ydC1lbGYtYWxpZ24uYwotaW5kZXggYTRlOTdkMy4uZjQ3MTU4NyAxMDA2NDQKLS0tLSBhL3Rlc3RzL2R3ZmwtcmVwb3J0LWVsZi1hbGlnbi5jCi0rKysgYi90ZXN0cy9kd2ZsLXJlcG9ydC1lbGYtYWxpZ24uYwotQEAgLTIwLDcgKzIwLDcgQEAKLSAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3RkaW9fZXh0Lmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxsb2NhbGUuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotZGlmZiAtLWdpdCBhL3Rlc3RzL2R3ZmxsaW5lcy5jIGIvdGVzdHMvZHdmbGxpbmVzLmMKLWluZGV4IDkwMzc5ZGQuLmNiZGY2YzQgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9kd2ZsbGluZXMuYwotKysrIGIvdGVzdHMvZHdmbGxpbmVzLmMKLUBAIC0yNyw3ICsyNyw3IEBACi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gCi0gaW50Ci0gbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLWRpZmYgLS1naXQgYS90ZXN0cy9kd2ZsbW9kdGVzdC5jIGIvdGVzdHMvZHdmbG1vZHRlc3QuYwotaW5kZXggMDAyN2Y5Ni4uZTY4ZDNiYyAxMDA2NDQKLS0tLSBhL3Rlc3RzL2R3Zmxtb2R0ZXN0LmMKLSsrKyBiL3Rlc3RzL2R3Zmxtb2R0ZXN0LmMKLUBAIC0yMyw3ICsyMyw3IEBACi0gI2luY2x1ZGUgPHN0ZGlvX2V4dC5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxsb2NhbGUuaD4KLSAjaW5jbHVkZSA8YXJncC5oPgotICNpbmNsdWRlIEVMRlVUSUxTX0hFQURFUihkd2ZsKQotZGlmZiAtLWdpdCBhL3Rlc3RzL2R3ZmxzeW1zLmMgYi90ZXN0cy9kd2Zsc3ltcy5jCi1pbmRleCA0OWFjMzM0Li5jZjA3ODMwIDEwMDY0NAotLS0tIGEvdGVzdHMvZHdmbHN5bXMuYwotKysrIGIvdGVzdHMvZHdmbHN5bXMuYwotQEAgLTI1LDcgKzI1LDcgQEAKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3RkaW9fZXh0Lmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gCi0gc3RhdGljIGNvbnN0IGNoYXIgKgotZGlmZiAtLWdpdCBhL3Rlc3RzL2Vhcmx5LW9mZnNjbi5jIGIvdGVzdHMvZWFybHktb2Zmc2NuLmMKLWluZGV4IDkyNGNiOWUuLjZmNjBkNWEgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9lYXJseS1vZmZzY24uYwotKysrIGIvdGVzdHMvZWFybHktb2Zmc2NuLmMKLUBAIC0xOSw3ICsxOSw3IEBACi0gI2VuZGlmCi0gCi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxnZWxmLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvZWNwLmMgYi90ZXN0cy9lY3AuYwotaW5kZXggMzhhNjg1OS4uNzQzY2VhNSAxMDA2NDQKLS0tLSBhL3Rlc3RzL2VjcC5jCi0rKysgYi90ZXN0cy9lY3AuYwotQEAgLTIwLDcgKzIwLDcgQEAKLSAjZW5kaWYKLSAKLSAjaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPGdlbGYuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvZmluZC1wcm9sb2d1ZXMuYyBiL3Rlc3RzL2ZpbmQtcHJvbG9ndWVzLmMKLWluZGV4IGJhOGFlMzcuLjc2ZjVmMDQgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9maW5kLXByb2xvZ3Vlcy5jCi0rKysgYi90ZXN0cy9maW5kLXByb2xvZ3Vlcy5jCi1AQCAtMjUsNyArMjUsNyBAQAotICNpbmNsdWRlIDxzdGRpb19leHQuaD4KLSAjaW5jbHVkZSA8bG9jYWxlLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPGZubWF0Y2guaD4KLSAKLWRpZmYgLS1naXQgYS90ZXN0cy9mdW5jcmV0dmFsLmMgYi90ZXN0cy9mdW5jcmV0dmFsLmMKLWluZGV4IDhkMTlkMTEuLmM4YWFhOTMgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9mdW5jcmV0dmFsLmMKLSsrKyBiL3Rlc3RzL2Z1bmNyZXR2YWwuYwotQEAgLTI1LDcgKzI1LDcgQEAKLSAjaW5jbHVkZSA8c3RkaW9fZXh0Lmg+Ci0gI2luY2x1ZGUgPGxvY2FsZS5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDxmbm1hdGNoLmg+Ci0gCi1kaWZmIC0tZ2l0IGEvdGVzdHMvZnVuY3Njb3Blcy5jIGIvdGVzdHMvZnVuY3Njb3Blcy5jCi1pbmRleCA5YzkwMTg1Li5kYmNjYjg5IDEwMDY0NAotLS0tIGEvdGVzdHMvZnVuY3Njb3Blcy5jCi0rKysgYi90ZXN0cy9mdW5jc2NvcGVzLmMKLUBAIC0yNSw3ICsyNSw3IEBACi0gI2luY2x1ZGUgPHN0ZGlvX2V4dC5oPgotICNpbmNsdWRlIDxsb2NhbGUuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8Zm5tYXRjaC5oPgotIAotZGlmZiAtLWdpdCBhL3Rlc3RzL2dldHNyY19kaWUuYyBiL3Rlc3RzL2dldHNyY19kaWUuYwotaW5kZXggMDU1YWVkZS4uOWMzOTRkZCAxMDA2NDQKLS0tLSBhL3Rlc3RzL2dldHNyY19kaWUuYwotKysrIGIvdGVzdHMvZ2V0c3JjX2RpZS5jCi1AQCAtMTksNyArMTksNyBAQAotICNlbmRpZgotIAotICNpbmNsdWRlIDxlcnJuby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSAjaW5jbHVkZSA8bGliZWxmLmg+Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvbGluZTJhZGRyLmMgYi90ZXN0cy9saW5lMmFkZHIuYwotaW5kZXggZTBkNjVkMy4uOWJmMDAyMyAxMDA2NDQKLS0tLSBhL3Rlc3RzL2xpbmUyYWRkci5jCi0rKysgYi90ZXN0cy9saW5lMmFkZHIuYwotQEAgLTI2LDcgKzI2LDcgQEAKLSAjaW5jbHVkZSA8bG9jYWxlLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gCi0gCi0gc3RhdGljIHZvaWQKLWRpZmYgLS1naXQgYS90ZXN0cy9sb3dfaGlnaF9wYy5jIGIvdGVzdHMvbG93X2hpZ2hfcGMuYwotaW5kZXggZDBmNDMwMi4uOGRhNGZiZCAxMDA2NDQKLS0tLSBhL3Rlc3RzL2xvd19oaWdoX3BjLmMKLSsrKyBiL3Rlc3RzL2xvd19oaWdoX3BjLmMKLUBAIC0yNSw3ICsyNSw3IEBACi0gI2luY2x1ZGUgPHN0ZGlvX2V4dC5oPgotICNpbmNsdWRlIDxsb2NhbGUuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8Zm5tYXRjaC5oPgotIAotZGlmZiAtLWdpdCBhL3Rlc3RzL21kNS1zaGExLXRlc3QuYyBiL3Rlc3RzL21kNS1zaGExLXRlc3QuYwotaW5kZXggZDUwMzU1ZS4uM2M0MWY0MCAxMDA2NDQKLS0tLSBhL3Rlc3RzL21kNS1zaGExLXRlc3QuYwotKysrIGIvdGVzdHMvbWQ1LXNoYTEtdGVzdC5jCi1AQCAtMTksNyArMTksNyBAQAotICNlbmRpZgotIAotICNpbmNsdWRlIDxzdHJpbmcuaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gCi0gI2luY2x1ZGUgIm1kNS5oIgotICNpbmNsdWRlICJzaGExLmgiCi1kaWZmIC0tZ2l0IGEvdGVzdHMvcmR3cm1tYXAuYyBiL3Rlc3RzL3Jkd3JtbWFwLmMKLWluZGV4IDZmMDI3ZGYuLjFjZTVlNmUgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9yZHdybW1hcC5jCi0rKysgYi90ZXN0cy9yZHdybW1hcC5jCi1AQCAtMTksNyArMTksNyBAQAotICNlbmRpZgotIAotICNpbmNsdWRlIDxlcnJuby5oPgotLSNpbmNsdWRlIDxlcnJvci5oPgotKyNpbmNsdWRlIDxlcnIuaD4KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvc2FyaWR4LmMgYi90ZXN0cy9zYXJpZHguYwotaW5kZXggOGE0NTBkOC4uYjM4NzgwMSAxMDA2NDQKLS0tLSBhL3Rlc3RzL3NhcmlkeC5jCi0rKysgYi90ZXN0cy9zYXJpZHguYwotQEAgLTE3LDcgKzE3LDcgQEAKLSAKLSAjaW5jbHVkZSA8Y29uZmlnLmg+Ci0gCi0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxnZWxmLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvc2VjdGlvbmR1bXAuYyBiL3Rlc3RzL3NlY3Rpb25kdW1wLmMKLWluZGV4IDMwMzNmZWQuLjhlODg4ZGIgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9zZWN0aW9uZHVtcC5jCi0rKysgYi90ZXN0cy9zZWN0aW9uZHVtcC5jCi1AQCAtMTgsNyArMTgsNyBAQAotICNpbmNsdWRlIDxjb25maWcuaD4KLSAKLSAjaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSsjaW5jbHVkZSA8ZXJyLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPGdlbGYuaD4KLSAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLWRpZmYgLS1naXQgYS90ZXN0cy92YXJsb2NzLmMgYi90ZXN0cy92YXJsb2NzLmMKLWluZGV4IGMzZmJhODkuLmUwNDNlYTIgMTAwNjQ0Ci0tLS0gYS90ZXN0cy92YXJsb2NzLmMKLSsrKyBiL3Rlc3RzL3ZhcmxvY3MuYwotQEAgLTI1LDcgKzI1LDcgQEAKLSAjaW5jbHVkZSA8ZHdhcmYuaD4KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvdmRzb3N5bXMuYyBiL3Rlc3RzL3Zkc29zeW1zLmMKLWluZGV4IGI4NzZjMTAuLmFmYjI4MjMgMTAwNjQ0Ci0tLS0gYS90ZXN0cy92ZHNvc3ltcy5jCi0rKysgYi90ZXN0cy92ZHNvc3ltcy5jCi1AQCAtMTgsNyArMTgsNyBAQAotICNpbmNsdWRlIDxjb25maWcuaD4KLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0tI2luY2x1ZGUgPGVycm9yLmg+Ci0rI2luY2x1ZGUgPGVyci5oPgotICNpbmNsdWRlIDxpbnR0eXBlcy5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2OC8wMDAxLWVsZl9nZXRhcnN5bS1TaWxlbmNlLVdlcnJvci1tYXliZS11bmluaXRpYWxpemVkLWZhbHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4LzAwMDEtZWxmX2dldGFyc3ltLVNpbGVuY2UtV2Vycm9yLW1heWJlLXVuaW5pdGlhbGl6ZWQtZmFscy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzc1NGMxYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4LzAwMDEtZWxmX2dldGFyc3ltLVNpbGVuY2UtV2Vycm9yLW1heWJlLXVuaW5pdGlhbGl6ZWQtZmFscy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLUZyb20gNjY4YWNjZjMyMmZkNzE4NWUyNzNiZmQ1MGI4NDMyMGU3MWQ5ZGU1YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMTAgQXByIDIwMTUgMDA6Mjk6MTggKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gZWxmX2dldGFyc3ltOiBTaWxlbmNlIC1XZXJyb3I9bWF5YmUtdW5pbml0aWFsaXplZCBmYWxzZQotIHBvc2l0aXZlCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotLS0tCi0gbGliZWxmL2VsZl9nZXRhcnN5bS5jIHwgOSArKysrKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliZWxmL2VsZl9nZXRhcnN5bS5jIGIvbGliZWxmL2VsZl9nZXRhcnN5bS5jCi1pbmRleCBkMGJiMjhhLi4wODk1NGQyIDEwMDY0NAotLS0tIGEvbGliZWxmL2VsZl9nZXRhcnN5bS5jCi0rKysgYi9saWJlbGYvZWxmX2dldGFyc3ltLmMKLUBAIC0xNjUsOCArMTY1LDEzIEBAIGVsZl9nZXRhcnN5bSAoZWxmLCBwdHIpCi0gICAgICAgaW50IHcgPSBpbmRleDY0X3AgPyA4IDogNDsKLSAKLSAgICAgICAvKiBXZSBoYXZlIGFuIGFyY2hpdmUuICBUaGUgZmlyc3Qgd29yZCBpbiB0aGVyZSBpcyB0aGUgbnVtYmVyIG9mCi0tCSBlbnRyaWVzIGluIHRoZSB0YWJsZS4gICovCi0tICAgICAgdWludDY0X3QgbjsKLSsJIGVudHJpZXMgaW4gdGhlIHRhYmxlLgotKwkgU2V0IHRvIFNJWkVfTUFYIGp1c3QgdG8gc2lsZW5jZSAtV2Vycm9yPW1heWJlLXVuaW5pdGlhbGl6ZWQKLSsJIGVsZl9nZXRhcnN5bS5jOjI5MDo5OiBlcnJvcjogJ24nIG1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQgaW4gdGhpcyBmdW5jdGlvbgotKwkgVGhlIHJlYWRfbnVtYmVyX2VudHJpZXMgZnVuY3Rpb24gZG9lc24ndCBpbml0aWFsaXplIG4gb25seSB3aGVuIHJldHVybmluZwotKwkgLTEgd2hpY2ggaW4gdHVybiBlbnN1cmVzIHRvIGp1bXAgb3ZlciB1c2FnZSBvZiB0aGlzIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUuCi0rCSAqLwotKyAgICAgIHVpbnQ2NF90IG4gPSBTSVpFX01BWDsKLSAgICAgICBzaXplX3Qgb2ZmID0gZWxmLT5zdGFydF9vZmZzZXQgKyBTQVJNQUcgKyBzaXplb2YgKHN0cnVjdCBhcl9oZHIpOwotICAgICAgIGlmIChyZWFkX251bWJlcl9lbnRyaWVzICgmbiwgZWxmLCAmb2ZmLCBpbmRleDY0X3ApIDwgMCkKLSAJewotLS0gCi0yLjMuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4LzAwMDEtZml4LWEtc3RhY2stdXNhZ2Utd2FybmluZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvMDAwMS1maXgtYS1zdGFjay11c2FnZS13YXJuaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OTIzYmY3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvMDAwMS1maXgtYS1zdGFjay11c2FnZS13YXJuaW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotW1BBVENIXSBmaXggYSBzdGFjay11c2FnZSB3YXJuaW5nCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1ub3QgdXNlIGEgdmFyaWFibGUgdG8gYXMgYSBhcnJheSBzaXplLCBvdGhlcndpc2UgdGhlIHdhcm5pbmcgdG8gZXJyb3IgdGhhdAotc3RhY2sgdXNhZ2UgbWlnaHQgYmUgdW5ib3VuZGVkIFstV2Vycm9yPXN0YWNrLXVzYWdlPV0gd2lsbCBoYXBwZW4KLQotU2lnbmVkLW9mZi1ieTogUm95IExpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgotLS0tCi0gYmFja2VuZHMvcHBjX2luaXRyZWcuYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2JhY2tlbmRzL3BwY19pbml0cmVnLmMgYi9iYWNrZW5kcy9wcGNfaW5pdHJlZy5jCi1pbmRleCA2NGY1Mzc5Li41MmRkZTNlIDEwMDY0NAotLS0tIGEvYmFja2VuZHMvcHBjX2luaXRyZWcuYwotKysrIGIvYmFja2VuZHMvcHBjX2luaXRyZWcuYwotQEAgLTkzLDcgKzkzLDcgQEAgcHBjX3NldF9pbml0aWFsX3JlZ2lzdGVyc190aWQgKHBpZF90IHRpZCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksCi0gCXJldHVybiBmYWxzZTsKLSAgICAgfQotICAgY29uc3Qgc2l6ZV90IGdwcnMgPSBzaXplb2YgKHVzZXJfcmVncy5yLmdwcikgLyBzaXplb2YgKCp1c2VyX3JlZ3Muci5ncHIpOwotLSAgRHdhcmZfV29yZCBkd2FyZl9yZWdzW2dwcnNdOwotKyAgRHdhcmZfV29yZCBkd2FyZl9yZWdzW3NpemVvZiAodXNlcl9yZWdzLnIuZ3ByKSAvIHNpemVvZiAoKnVzZXJfcmVncy5yLmdwcildOwotICAgZm9yICh1bnNpZ25lZCBncHIgPSAwOyBncHIgPCBncHJzOyBncHIrKykKLSAgICAgZHdhcmZfcmVnc1tncHJdID0gdXNlcl9yZWdzLnIuZ3ByW2dwcl07Ci0gICBpZiAoISBzZXRmdW5jICgwLCBncHJzLCBkd2FyZl9yZWdzLCBhcmcpKQotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4LzAwMDEtcmVtb3ZlLXRoZS11bm5lZWQtY2hlY2tpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4LzAwMDEtcmVtb3ZlLXRoZS11bm5lZWQtY2hlY2tpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViZTkyZDcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2OC8wMDAxLXJlbW92ZS10aGUtdW5uZWVkLWNoZWNraW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotRGlzYWJsZSB0aGUgdGVzdCB0byBjb252ZXJ0IGV1Yy1qcAotCi1SZW1vdmUgdGhlIHRlc3QgIlRlc3QgYWdhaW5zdCBIUC1VWCAxMS4xMSBidWc6Ci1ObyBjb252ZXJ0ZXIgZnJvbSBFVUMtSlAgdG8gVVRGLTggaXMgcHJvdmlkZWQiCi1zaW5jZSB3ZSBkb24ndCBzdXBwb3J0IEhQLVVYIGFuZCBpZiB0aGUgZXVjLWpwIGlzIG5vdAotaW5zdGFsbGVkIG9uIHRoZSBob3N0LCB0aGUgZGVwZW5kZW5jZSB3aWxsIGJlIGJ1aWx0IHdpdGhvdXQKLWljb252IHN1cHBvcnQgYW5kIHdpbGwgY2F1c2UgZ3VpbGQtbmF0aXZlIGJ1aWxkaW5nIGZhaWwuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IFJveSBMaSA8cm9uZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KLS0tLQotIG00L2ljb252Lm00IHwgMiArKwotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL200L2ljb252Lm00IGIvbTQvaWNvbnYubTQKLWluZGV4IGE1MDM2NDYuLjI5OWYxZWIgMTAwNjQ0Ci0tLS0gYS9tNC9pY29udi5tNAotKysrIGIvbTQvaWNvbnYubTQKLUBAIC0xNTksNiArMTU5LDcgQEAgaW50IG1haW4gKCkKLSAgICAgICB9Ci0gICB9Ci0gI2VuZGlmCi0rI2lmIDAKLSAgIC8qIFRlc3QgYWdhaW5zdCBIUC1VWCAxMS4xMSBidWc6IE5vIGNvbnZlcnRlciBmcm9tIEVVQy1KUCB0byBVVEYtOCBpcwotICAgICAgcHJvdmlkZWQuICAqLwotICAgaWYgKC8qIFRyeSBzdGFuZGFyZGl6ZWQgbmFtZXMuICAqLwotQEAgLTE3MCw2ICsxNzEsNyBAQCBpbnQgbWFpbiAoKQotICAgICAgIC8qIFRyeSBIUC1VWCBuYW1lcy4gICovCi0gICAgICAgJiYgaWNvbnZfb3BlbiAoInV0ZjgiLCAiZXVjSlAiKSA9PSAoaWNvbnZfdCkoLTEpKQotICAgICByZXN1bHQgfD0gMTY7Ci0rI2VuZGlmCi0gICByZXR1cm4gcmVzdWx0OwotIH1dXSldLAotICAgICAgICAgW2FtX2N2X2Z1bmNfaWNvbnZfd29ya3M9eWVzXSwKLS0tIAotMi4wLjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2OC9GaXhfb25lX0dDQzdfd2FybmluZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvRml4X29uZV9HQ0M3X3dhcm5pbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4OGY0ZWIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2OC9GaXhfb25lX0dDQzdfd2FybmluZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLUZyb20gOTNjNTExNDRjM2Y2NjRkNGU5NzA5ZGE3NWExZDBmYTAwZWEwZmU5NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcmsgV2llbGFhcmQgPG1hcmtAa2xvbXAub3JnPgotRGF0ZTogU3VuLCAxMiBGZWIgMjAxNyAyMTo1MTozNCArMDEwMAotU3ViamVjdDogW1BBVENIXSBsaWJhc206IEZpeCBvbmUgR0NDNyAtV2Zvcm1hdC10cnVuY2F0aW9uPTIgd2FybmluZy4KLQotTWFrZSBzdXJlIHRoYXQgaWYgd2UgaGF2ZSByZWFsbHkgbG90cyBvZiBsYWJlbHMgdGhlIHRlbXBzeW0gZG9lc24ndCBnZXQKLXRydW5jYXRlZCBiZWNhdXNlIGl0IGlzIHRvbyBzbWFsbCB0byBob2xkIHRoZSB3aG9sZSBuYW1lLgotCi1UaGlzIGRvZXNuJ3QgZW5hYmxlIC1XZm9ybWF0LXRydW5jYXRpb249MiBvciBmaXggb3RoZXIgImlzc3VlcyIgcG9pbnRlZAotb3V0IGJ5IGVuYWJsaW5nIHRoaXMgd2FybmluZyBiZWNhdXNlIHRoZXJlIGFyZSBjdXJyZW50bHkgc29tZSBpc3N1ZXMKLXdpdGggaXQuIGh0dHBzOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTc5NDQ4Ci0KLVNpZ25lZC1vZmYtYnk6IE1hcmsgV2llbGFhcmQgPG1hcmtAa2xvbXAub3JnPgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IChodHRwczovL3NvdXJjZXdhcmUub3JnL2dpdC8/cD1lbGZ1dGlscy5naXQ7YT1jb21taXQ7aD05M2M1MTE0NGMzZjY2NGQ0ZTk3MDlkYTc1YTFkMGZhMDBlYTBmZTk1KQotU2lnbmVkLW9mZi1ieTogSm9zaHVhIExvY2sgPGpvc2h1YS5nLmxvY2tAaW50ZWwuY29tPgotCi0tLS0KLSBsaWJhc20vQ2hhbmdlTG9nICAgIHwgNiArKysrKy0KLSBsaWJhc20vYXNtX25ld3N5bS5jIHwgNiArKysrLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGVsZnV0aWxzLTAuMTY4L2xpYmFzbS9hc21fbmV3c3ltLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBlbGZ1dGlscy0wLjE2OC5vcmlnL2xpYmFzbS9hc21fbmV3c3ltLmMKLSsrKyBlbGZ1dGlscy0wLjE2OC9saWJhc20vYXNtX25ld3N5bS5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiBEZWZpbmUgbmV3IHN5bWJvbCBmb3IgY3VycmVudCBwb3NpdGlvbiBpbiBnaXZlbiBzZWN0aW9uLgotLSAgIENvcHlyaWdodCAoQykgMjAwMiwgMjAwNSwgMjAxNiBSZWQgSGF0LCBJbmMuCi0rICAgQ29weXJpZ2h0IChDKSAyMDAyLCAyMDA1LCAyMDE2LCAyMDE3IFJlZCBIYXQsIEluYy4KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBlbGZ1dGlscy4KLSAgICBXcml0dGVuIGJ5IFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQHJlZGhhdC5jb20+LCAyMDAyLgotIAotQEAgLTQ0LDcgKzQ0LDkgQEAgQXNtU3ltX3QgKgotIGFzbV9uZXdzeW0gKEFzbVNjbl90ICphc21zY24sIGNvbnN0IGNoYXIgKm5hbWUsIEdFbGZfWHdvcmQgc2l6ZSwKLSAJICAgIGludCB0eXBlLCBpbnQgYmluZGluZykKLSB7Ci0tI2RlZmluZSBURU1QU1lNTEVOIDEwCi0rLyogV2UgZG9uJ3QgcmVhbGx5IGV4cGVjdCBsYWJlbHMgd2l0aCBtYW55IGRpZ2l0cywgYnV0IGluIHRoZW9yeSBpdCBjb3VsZAotKyAgIGJlIDEwIGRpZ2l0cyAocGx1cyAiLkwiIGFuZCBhIHplcm8gdGVybWluYXRvcikuICAqLwotKyNkZWZpbmUgVEVNUFNZTUxFTiAxMwotICAgY2hhciB0ZW1wc3ltW1RFTVBTWU1MRU5dOwotICAgQXNtU3ltX3QgKnJlc3VsdDsKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvYWFyY2g2NF91aW8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4L2FhcmNoNjRfdWlvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOGRjNTdiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvYWFyY2g2NF91aW8ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi1GaXggYnVpbGQgb24gYWFyY2g2NC9tdXNsCi0KLUVycm9ycwotCi1pbnZhbGlkIG9wZXJhbmRzIHRvIGJpbmFyeSAmIChoYXZlICdsb25nIGRvdWJsZScgYW5kICd1bnNpZ25lZCBpbnQnKQotCi1lcnJvcjogcmVkZWZpbml0aW9uCi0gb2YgJ3N0cnVjdCBpb3ZlYycKLSBzdHJ1Y3QgaW92ZWMgeyB2b2lkICppb3ZfYmFzZTsgc2l6ZV90IGlvdl9sZW47IH07Ci0gICAgICAgIF4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLUluZGV4OiBlbGZ1dGlscy0wLjE2My9iYWNrZW5kcy9hYXJjaDY0X2luaXRyZWcuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGVsZnV0aWxzLTAuMTYzLm9yaWcvYmFja2VuZHMvYWFyY2g2NF9pbml0cmVnLmMKLSsrKyBlbGZ1dGlscy0wLjE2My9iYWNrZW5kcy9hYXJjaDY0X2luaXRyZWcuYwotQEAgLTMzLDcgKzMzLDcgQEAKLSAjaW5jbHVkZSAic3lzdGVtLmgiCi0gI2luY2x1ZGUgPGFzc2VydC5oPgotICNpZmRlZiBfX2FhcmNoNjRfXwotLSMgaW5jbHVkZSA8bGludXgvdWlvLmg+Ci0rIyBpbmNsdWRlIDxzeXMvdWlvLmg+Ci0gIyBpbmNsdWRlIDxzeXMvdXNlci5oPgotICMgaW5jbHVkZSA8c3lzL3B0cmFjZS5oPgotIC8qIERlYWwgd2l0aCBvbGQgZ2xpYmMgZGVmaW5pbmcgdXNlcl9wdF9yZWdzIGluc3RlYWQgb2YgdXNlcl9yZWdzX3N0cnVjdC4gICovCi1AQCAtODIsNyArODIsNyBAQCBhYXJjaDY0X3NldF9pbml0aWFsX3JlZ2lzdGVyc190aWQgKHBpZF90Ci0gCi0gICBEd2FyZl9Xb3JkIGR3YXJmX2ZyZWdzWzMyXTsKLSAgIGZvciAoaW50IHIgPSAwOyByIDwgMzI7IHIrKykKLS0gICAgZHdhcmZfZnJlZ3Nbcl0gPSBmcmVncy52cmVnc1tyXSAmIDB4RkZGRkZGRkY7Ci0rICAgIGR3YXJmX2ZyZWdzW3JdID0gKHVuc2lnbmVkIGludClmcmVncy52cmVnc1tyXSAmIDB4RkZGRkZGRkY7Ci0gCi0gICBpZiAoISBzZXRmdW5jICg2NCwgMzIsIGR3YXJmX2ZyZWdzLCBhcmcpKQotICAgICByZXR1cm4gZmFsc2U7Ci1JbmRleDogZWxmdXRpbHMtMC4xNjMvYmFja2VuZHMvYXJtX2luaXRyZWcuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGVsZnV0aWxzLTAuMTYzLm9yaWcvYmFja2VuZHMvYXJtX2luaXRyZWcuYwotKysrIGVsZnV0aWxzLTAuMTYzL2JhY2tlbmRzL2FybV9pbml0cmVnLmMKLUBAIC0zNyw3ICszNyw3IEBACi0gI2VuZGlmCi0gCi0gI2lmZGVmIF9fYWFyY2g2NF9fCi0tIyBpbmNsdWRlIDxsaW51eC91aW8uaD4KLSsjIGluY2x1ZGUgPHN5cy91aW8uaD4KLSAjIGluY2x1ZGUgPHN5cy91c2VyLmg+Ci0gIyBpbmNsdWRlIDxzeXMvcHRyYWNlLmg+Ci0gLyogRGVhbCB3aXRoIG9sZCBnbGliYyBkZWZpbmluZyB1c2VyX3B0X3JlZ3MgaW5zdGVhZCBvZiB1c2VyX3JlZ3Nfc3RydWN0LiAgKi8KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvZGViaWFuL2h1cmRfcGF0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvZGViaWFuL2h1cmRfcGF0aC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTRkNTY4Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4L2RlYmlhbi9odXJkX3BhdGgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtmcm9tIGRlYmlhbl0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLQotSW5kZXg6IGVsZnV0aWxzLTAuMTY1L3Rlc3RzL3J1bi1uYXRpdmUtdGVzdC5zaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGVsZnV0aWxzLTAuMTY1Lm9yaWcvdGVzdHMvcnVuLW5hdGl2ZS10ZXN0LnNoCi0rKysgZWxmdXRpbHMtMC4xNjUvdGVzdHMvcnVuLW5hdGl2ZS10ZXN0LnNoCi1AQCAtODMsNiArODMsOSBAQCBuYXRpdmVfdGVzdCgpCi0gIyAiY2Fubm90IGF0dGFjaCB0byBwcm9jZXNzOiBGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQiLgotIFsgIiQodW5hbWUpIiA9ICJHTlUva0ZyZWVCU0QiIF0gJiYgZXhpdCA3NwotIAotKyMgaHVyZCdzIC9wcm9jLyRQSUQvbWFwcyBkb2VzIG5vdCBnaXZlIHBhdGhzIHlldC4KLStbICIkKHVuYW1lKSIgPSAiR05VIiBdICYmIGV4aXQgNzcKLSsKLSBuYXRpdmVfdGVzdCAke2Fic19idWlsZGRpcn0vYWxscmVncwotIG5hdGl2ZV90ZXN0ICR7YWJzX2J1aWxkZGlyfS9mdW5jcmV0dmFsCi0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4L2RlYmlhbi9pZ25vcmVfc3RybWVyZ2UuZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvZGViaWFuL2lnbm9yZV9zdHJtZXJnZS5kaWZmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNTcwZGVjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvZGViaWFuL2lnbm9yZV9zdHJtZXJnZS5kaWZmCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbZnJvbSBkZWJpYW5dCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0KLS0tLSBlbGZ1dGlscy0wLjE2NS5vcmlnL3Rlc3RzL3J1bi1zdHJpcC1zdHJtZXJnZS5zaAotKysrIGVsZnV0aWxzLTAuMTY1L3Rlc3RzL3J1bi1zdHJpcC1zdHJtZXJnZS5zaAotQEAgLTMwLDcgKzMwLDcgQEAgcmVtZXJnZWQ9cmVtZXJnZWQuZWxmCi0gdGVtcGZpbGVzICRtZXJnZWQgJHN0cmlwcGVkICRkZWJ1Z2ZpbGUgJHJlbWVyZ2VkCi0gCi0gZWNobyBlbGZsaW50ICRpbnB1dAotLXRlc3RydW4gJHthYnNfdG9wX2J1aWxkZGlyfS9zcmMvZWxmbGludCAtLWdudSAkaW5wdXQKLSt0ZXN0cnVuX29uX3NlbGZfc2tpcCAke2Fic190b3BfYnVpbGRkaXJ9L3NyYy9lbGZsaW50IC0tZ251ICRpbnB1dAotIGVjaG8gZWxmc3RybWVyZ2UKLSB0ZXN0cnVuICR7YWJzX3RvcF9idWlsZGRpcn0vdGVzdHMvZWxmc3RybWVyZ2UgLW8gJG1lcmdlZCAkaW5wdXQKLSBlY2hvIGVsZmxpbnQgJG1lcmdlZApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2OC9kZWJpYW4va2ZyZWVic2RfcGF0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvZGViaWFuL2tmcmVlYnNkX3BhdGgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5MDg1ZDEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2OC9kZWJpYW4va2ZyZWVic2RfcGF0aC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2Zyb20gZGViaWFuXQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotCi1JbmRleDogYi90ZXN0cy9ydW4tbmF0aXZlLXRlc3Quc2gKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhL3Rlc3RzL3J1bi1uYXRpdmUtdGVzdC5zaAotKysrIGIvdGVzdHMvcnVuLW5hdGl2ZS10ZXN0LnNoCi1AQCAtNzcsNiArNzcsMTIgQEAgbmF0aXZlX3Rlc3QoKQotICAgdGVzdCAkbmF0aXZlIC1lcSAwIHx8IHRlc3RydW4gIiRAIiAtcCAkbmF0aXZlID4gL2Rldi9udWxsCi0gfQotIAotKyMgT24gdGhlIERlYmlhbiBidWlsZGRzLCBHTlUva0ZyZWVCU0QgbGlucHJvY2ZzIC9wcm9jLyRQSUQvbWFwcyBkb2VzCi0rIyBub3QgZ2l2ZSBhYnNvbHV0ZSBwYXRocyBkdWUgdG8gc2J1aWxkJ3MgYmluZCBtb3VudHMgKGJ1ZyAjNTcwODA1KQotKyMgdGhlcmVmb3JlIHRoZSBuZXh0IHR3byB0ZXN0IHByb2dyYW1zIGFyZSBleHBlY3RlZCB0byBmYWlsIHdpdGgKLSsjICJjYW5ub3QgYXR0YWNoIHRvIHByb2Nlc3M6IEZ1bmN0aW9uIG5vdCBpbXBsZW1lbnRlZCIuCi0rWyAiJCh1bmFtZSkiID0gIkdOVS9rRnJlZUJTRCIgXSAmJiBleGl0IDc3Ci0rCi0gbmF0aXZlX3Rlc3QgJHthYnNfYnVpbGRkaXJ9L2FsbHJlZ3MKLSBuYXRpdmVfdGVzdCAke2Fic19idWlsZGRpcn0vZnVuY3JldHZhbAotIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2OC9kZWJpYW4vbWlwc19iYWNrZW5kLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4L2RlYmlhbi9taXBzX2JhY2tlbmQuZGlmZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTVlNzZkZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4L2RlYmlhbi9taXBzX2JhY2tlbmQuZGlmZgorKysgL2Rldi9udWxsCkBAIC0xLDY4NiArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtmcm9tIGRlYmlhbl0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLQotSW5kZXg6IGIvYmFja2VuZHMvbWlwc19pbml0LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwKLSsrKyBiL2JhY2tlbmRzL21pcHNfaW5pdC5jCi1AQCAtMCwwICsxLDU5IEBACi0rLyogSW5pdGlhbGl6YXRpb24gb2YgbWlwcyBzcGVjaWZpYyBiYWNrZW5kIGxpYnJhcnkuCi0rICAgQ29weXJpZ2h0IChDKSAyMDA2IFJlZCBIYXQsIEluYy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBSZWQgSGF0IGVsZnV0aWxzLgotKwotKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotKyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLgotKwotKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0Ci0rICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi0rICAgd2l0aCBSZWQgSGF0IGVsZnV0aWxzOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0rICAgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uIE1BIDAyMTEwLTEzMDEgVVNBLgotKwotKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgYW4gaW5jbHVkZWQgcGFja2FnZSBvZiB0aGUgT3BlbiBJbnZlbnRpb24gTmV0d29yay4KLSsgICBBbiBpbmNsdWRlZCBwYWNrYWdlIG9mIHRoZSBPcGVuIEludmVudGlvbiBOZXR3b3JrIGlzIGEgcGFja2FnZSBmb3Igd2hpY2gKLSsgICBPcGVuIEludmVudGlvbiBOZXR3b3JrIGxpY2Vuc2VlcyBjcm9zcy1saWNlbnNlIHRoZWlyIHBhdGVudHMuICBObyBwYXRlbnQKLSsgICBsaWNlbnNlIGlzIGdyYW50ZWQsIGVpdGhlciBleHByZXNzbHkgb3IgaW1wbGllZGx5LCBieSBkZXNpZ25hdGlvbiBhcyBhbgotKyAgIGluY2x1ZGVkIHBhY2thZ2UuICBTaG91bGQgeW91IHdpc2ggdG8gcGFydGljaXBhdGUgaW4gdGhlIE9wZW4gSW52ZW50aW9uCi0rICAgTmV0d29yayBsaWNlbnNpbmcgcHJvZ3JhbSwgcGxlYXNlIHZpc2l0IHd3dy5vcGVuaW52ZW50aW9ubmV0d29yay5jb20KLSsgICA8aHR0cDovL3d3dy5vcGVuaW52ZW50aW9ubmV0d29yay5jb20+LiAgKi8KLSsKLSsjaWZkZWYgSEFWRV9DT05GSUdfSAotKyMgaW5jbHVkZSA8Y29uZmlnLmg+Ci0rI2VuZGlmCi0rCi0rI2RlZmluZSBCQUNLRU5ECQltaXBzXwotKyNkZWZpbmUgUkVMT0NfUFJFRklYCVJfTUlQU18KLSsjaW5jbHVkZSAibGliZWJsX0NQVS5oIgotKwotKy8qIFRoaXMgZGVmaW5lcyB0aGUgY29tbW9uIHJlbG9jIGhvb2tzIGJhc2VkIG9uIG1pcHNfcmVsb2MuZGVmLiAgKi8KLSsjaW5jbHVkZSAiY29tbW9uLXJlbG9jLmMiCi0rCi0rY29uc3QgY2hhciAqCi0rbWlwc19pbml0IChFbGYgKmVsZiBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksCi0rICAgICBHRWxmX0hhbGYgbWFjaGluZSBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksCi0rICAgICBFYmwgKmVoLAotKyAgICAgc2l6ZV90IGVobGVuKQotK3sKLSsgIC8qIENoZWNrIHdoZXRoZXIgdGhlIEVsZl9CSCBvYmplY3QgaGFzIGEgc3VmZmljZW50IHNpemUuICAqLwotKyAgaWYgKGVobGVuIDwgc2l6ZW9mIChFYmwpKQotKyAgICByZXR1cm4gTlVMTDsKLSsKLSsgIC8qIFdlIGhhbmRsZSBpdC4gICovCi0rICBpZiAobWFjaGluZSA9PSBFTV9NSVBTKQotKyAgICBlaC0+bmFtZSA9ICJNSVBTIFIzMDAwIGJpZy1lbmRpYW4iOwotKyAgZWxzZSBpZiAobWFjaGluZSA9PSBFTV9NSVBTX1JTM19MRSkKLSsgICAgZWgtPm5hbWUgPSAiTUlQUyBSMzAwMCBsaXR0bGUtZW5kaWFuIjsKLSsKLSsgIG1pcHNfaW5pdF9yZWxvYyAoZWgpOwotKyAgSE9PSyAoZWgsIHJlbG9jX3NpbXBsZV90eXBlKTsKLSsgIEhPT0sgKGVoLCByZXR1cm5fdmFsdWVfbG9jYXRpb24pOwotKyAgSE9PSyAoZWgsIHJlZ2lzdGVyX2luZm8pOwotKwotKyAgcmV0dXJuIE1PRFZFUlNJT047Ci0rfQotSW5kZXg6IGIvYmFja2VuZHMvbWlwc19yZWdzLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwKLSsrKyBiL2JhY2tlbmRzL21pcHNfcmVncy5jCi1AQCAtMCwwICsxLDEwNCBAQAotKy8qIFJlZ2lzdGVyIG5hbWVzIGFuZCBudW1iZXJzIGZvciBNSVBTIERXQVJGLgotKyAgIENvcHlyaWdodCAoQykgMjAwNiBSZWQgSGF0LCBJbmMuCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgUmVkIEhhdCBlbGZ1dGlscy4KLSsKLSsgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLSsgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZS4KLSsKLSsgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAotKyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotKyAgIHdpdGggUmVkIEhhdCBlbGZ1dGlsczsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotKyAgIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiBNQSAwMjExMC0xMzAxIFVTQS4KLSsKLSsgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGFuIGluY2x1ZGVkIHBhY2thZ2Ugb2YgdGhlIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsuCi0rICAgQW4gaW5jbHVkZWQgcGFja2FnZSBvZiB0aGUgT3BlbiBJbnZlbnRpb24gTmV0d29yayBpcyBhIHBhY2thZ2UgZm9yIHdoaWNoCi0rICAgT3BlbiBJbnZlbnRpb24gTmV0d29yayBsaWNlbnNlZXMgY3Jvc3MtbGljZW5zZSB0aGVpciBwYXRlbnRzLiAgTm8gcGF0ZW50Ci0rICAgbGljZW5zZSBpcyBncmFudGVkLCBlaXRoZXIgZXhwcmVzc2x5IG9yIGltcGxpZWRseSwgYnkgZGVzaWduYXRpb24gYXMgYW4KLSsgICBpbmNsdWRlZCBwYWNrYWdlLiAgU2hvdWxkIHlvdSB3aXNoIHRvIHBhcnRpY2lwYXRlIGluIHRoZSBPcGVuIEludmVudGlvbgotKyAgIE5ldHdvcmsgbGljZW5zaW5nIHByb2dyYW0sIHBsZWFzZSB2aXNpdCB3d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tCi0rICAgPGh0dHA6Ly93d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tPi4gICovCi0rCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjIGluY2x1ZGUgPGNvbmZpZy5oPgotKyNlbmRpZgotKwotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaW5jbHVkZSA8ZHdhcmYuaD4KLSsKLSsjZGVmaW5lIEJBQ0tFTkQgbWlwc18KLSsjaW5jbHVkZSAibGliZWJsX0NQVS5oIgotKwotK3NzaXplX3QKLSttaXBzX3JlZ2lzdGVyX2luZm8gKEVibCAqZWJsIF9fYXR0cmlidXRlX18oKHVudXNlZCkpLAotKwkJICAgIGludCByZWdubywgY2hhciAqbmFtZSwgc2l6ZV90IG5hbWVsZW4sCi0rCQkgICAgY29uc3QgY2hhciAqKnByZWZpeCwgY29uc3QgY2hhciAqKnNldG5hbWUsCi0rCQkgICAgaW50ICpiaXRzLCBpbnQgKnR5cGUpCi0rewotKyAgaWYgKG5hbWUgPT0gTlVMTCkKLSsgICAgcmV0dXJuIDY2OwotKwotKyAgaWYgKHJlZ25vIDwgMCB8fCByZWdubyA+IDY1IHx8IG5hbWVsZW4gPCA0KQotKyAgICByZXR1cm4gLTE7Ci0rCi0rICAqcHJlZml4ID0gIiQiOwotKwotKyAgaWYgKHJlZ25vIDwgMzIpCi0rICAgIHsKLSsgICAgICAqc2V0bmFtZSA9ICJpbnRlZ2VyIjsKLSsgICAgICAqdHlwZSA9IERXX0FURV9zaWduZWQ7Ci0rICAgICAgKmJpdHMgPSAzMjsKLSsgICAgICBpZiAocmVnbm8gPCAzMiArIDEwKQotKyAgICAgICAgewotKyAgICAgICAgICBuYW1lWzBdID0gcmVnbm8gKyAnMCc7Ci0rICAgICAgICAgIG5hbWVsZW4gPSAxOwotKyAgICAgICAgfQotKyAgICAgIGVsc2UKLSsgICAgICAgIHsKLSsgICAgICAgICAgbmFtZVswXSA9IChyZWdubyAvIDEwKSArICcwJzsKLSsgICAgICAgICAgbmFtZVsxXSA9IChyZWdubyAlIDEwKSArICcwJzsKLSsgICAgICAgICAgbmFtZWxlbiA9IDI7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsgIGVsc2UgaWYgKHJlZ25vIDwgNjQpCi0rICAgIHsKLSsgICAgICAqc2V0bmFtZSA9ICJGUFUiOwotKyAgICAgICp0eXBlID0gRFdfQVRFX2Zsb2F0OwotKyAgICAgICpiaXRzID0gMzI7Ci0rICAgICAgbmFtZVswXSA9ICdmJzsKLSsgICAgICBpZiAocmVnbm8gPCAzMiArIDEwKQotKwl7Ci0rCSAgbmFtZVsxXSA9IChyZWdubyAtIDMyKSArICcwJzsKLSsJICBuYW1lbGVuID0gMjsKLSsJfQotKyAgICAgIGVsc2UKLSsJewotKwkgIG5hbWVbMV0gPSAocmVnbm8gLSAzMikgLyAxMCArICcwJzsKLSsJICBuYW1lWzJdID0gKHJlZ25vIC0gMzIpICUgMTAgKyAnMCc7Ci0rCSAgbmFtZWxlbiA9IDM7Ci0rCX0KLSsgICAgfQotKyAgZWxzZSBpZiAocmVnbm8gPT0gNjQpCi0rICAgIHsKLSsgICAgICAqdHlwZSA9IERXX0FURV9zaWduZWQ7Ci0rICAgICAgKmJpdHMgPSAzMjsKLSsgICAgICBuYW1lWzBdID0gJ2gnOwotKyAgICAgIG5hbWVbMV0gPSAnaSc7Ci0rICAgICAgbmFtZWxlbiA9IDI7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgewotKyAgICAgICp0eXBlID0gRFdfQVRFX3NpZ25lZDsKLSsgICAgICAqYml0cyA9IDMyOwotKyAgICAgIG5hbWVbMF0gPSAnbCc7Ci0rICAgICAgbmFtZVsxXSA9ICdvJzsKLSsgICAgICBuYW1lbGVuID0gMjsKLSsgICAgfQotKwotKyAgbmFtZVtuYW1lbGVuKytdID0gJ1wwJzsKLSsgIHJldHVybiBuYW1lbGVuOwotK30KLUluZGV4OiBiL2JhY2tlbmRzL21pcHNfcmVsb2MuZGVmCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9iYWNrZW5kcy9taXBzX3JlbG9jLmRlZgotQEAgLTAsMCArMSw3OSBAQAotKy8qIExpc3QgdGhlIHJlbG9jYXRpb24gdHlwZXMgZm9yIG1pcHMuICAtKi0gQyAtKi0KLSsgICBDb3B5cmlnaHQgKEMpIDIwMDYgUmVkIEhhdCwgSW5jLgotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIFJlZCBIYXQgZWxmdXRpbHMuCi0rCi0rICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCi0rICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UuCi0rCi0rICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKLSsgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSsgICB3aXRoIFJlZCBIYXQgZWxmdXRpbHM7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSsgICBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24gTUEgMDIxMTAtMTMwMSBVU0EuCi0rCi0rICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBhbiBpbmNsdWRlZCBwYWNrYWdlIG9mIHRoZSBPcGVuIEludmVudGlvbiBOZXR3b3JrLgotKyAgIEFuIGluY2x1ZGVkIHBhY2thZ2Ugb2YgdGhlIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsgaXMgYSBwYWNrYWdlIGZvciB3aGljaAotKyAgIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsgbGljZW5zZWVzIGNyb3NzLWxpY2Vuc2UgdGhlaXIgcGF0ZW50cy4gIE5vIHBhdGVudAotKyAgIGxpY2Vuc2UgaXMgZ3JhbnRlZCwgZWl0aGVyIGV4cHJlc3NseSBvciBpbXBsaWVkbHksIGJ5IGRlc2lnbmF0aW9uIGFzIGFuCi0rICAgaW5jbHVkZWQgcGFja2FnZS4gIFNob3VsZCB5b3Ugd2lzaCB0byBwYXJ0aWNpcGF0ZSBpbiB0aGUgT3BlbiBJbnZlbnRpb24KLSsgICBOZXR3b3JrIGxpY2Vuc2luZyBwcm9ncmFtLCBwbGVhc2UgdmlzaXQgd3d3Lm9wZW5pbnZlbnRpb25uZXR3b3JrLmNvbQotKyAgIDxodHRwOi8vd3d3Lm9wZW5pbnZlbnRpb25uZXR3b3JrLmNvbT4uICAqLwotKwotKy8qIAkgICAgTkFNRSwJCVJFTHxFWEVDfERZTgkqLwotKwotK1JFTE9DX1RZUEUgKE5PTkUsICAgICAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFICgxNiwgICAgICAgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoMzIsICAgICAgICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKFJFTDMyLCAgICAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFICgyNiwgICAgICAgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoSEkxNiwgICAgICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKExPMTYsICAgICAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChHUFJFTDE2LCAgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoTElURVJBTCwgICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKEdPVDE2LCAgICAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChQQzE2LCAgICAgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoQ0FMTDE2LCAgICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKEdQUkVMMzIsICAgICAgICAgICAgMCkKLSsKLStSRUxPQ19UWVBFIChTSElGVDUsICAgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoU0hJRlQ2LCAgICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKDY0LCAgICAgICAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChHT1RfRElTUCwgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoR09UX1BBR0UsICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKEdPVF9PRlNULCAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChHT1RfSEkxNiwgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoR09UX0xPMTYsICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKFNVQiwgICAgICAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChJTlNFUlRfQSwgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoSU5TRVJUX0IsICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKERFTEVURSwgICAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChISUdIRVIsICAgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoSElHSEVTVCwgICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKENBTExfSEkxNiwgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChDQUxMX0xPMTYsICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoU0NOX0RJU1AsICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKFJFTDE2LCAgICAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChBRERfSU1NRURJQVRFLCAgICAgIDApCi0rUkVMT0NfVFlQRSAoUEpVTVAsICAgICAgICAgICAgICAwKQotK1JFTE9DX1RZUEUgKFJFTEdPVCwgICAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChKQUxSLCAgICAgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoVExTX0RUUE1PRDMyLCAgICAgICAwKQotK1JFTE9DX1RZUEUgKFRMU19EVFBSRUwzMiwgICAgICAgMCkKLStSRUxPQ19UWVBFIChUTFNfRFRQTU9ENjQsICAgICAgIDApCi0rUkVMT0NfVFlQRSAoVExTX0RUUFJFTDY0LCAgICAgICAwKQotK1JFTE9DX1RZUEUgKFRMU19HRCwgICAgICAgICAgICAgMCkKLStSRUxPQ19UWVBFIChUTFNfTERNLCAgICAgICAgICAgIDApCi0rUkVMT0NfVFlQRSAoVExTX0RUUFJFTF9ISTE2LCAgICAwKQotK1JFTE9DX1RZUEUgKFRMU19EVFBSRUxfTE8xNiwgICAgMCkKLStSRUxPQ19UWVBFIChUTFNfR09UVFBSRUwsICAgICAgIDApCi0rUkVMT0NfVFlQRSAoVExTX1RQUkVMMzIsICAgICAgICAwKQotK1JFTE9DX1RZUEUgKFRMU19UUFJFTDY0LCAgICAgICAgMCkKLStSRUxPQ19UWVBFIChUTFNfVFBSRUxfSEkxNiwgICAgIDApCi0rUkVMT0NfVFlQRSAoVExTX1RQUkVMX0xPMTYsICAgICAwKQotKwotKyNkZWZpbmUgTk9fQ09QWV9SRUxPQyAxCi0rI2RlZmluZSBOT19SRUxBVElWRV9SRUxPQyAxCi1JbmRleDogYi9iYWNrZW5kcy9taXBzX3JldHZhbC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9iYWNrZW5kcy9taXBzX3JldHZhbC5jCi1AQCAtMCwwICsxLDMyMSBAQAotKy8qIEZ1bmN0aW9uIHJldHVybiB2YWx1ZSBsb2NhdGlvbiBmb3IgTGludXgvbWlwcyBBQkkuCi0rICAgQ29weXJpZ2h0IChDKSAyMDA1IFJlZCBIYXQsIEluYy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBSZWQgSGF0IGVsZnV0aWxzLgotKwotKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotKyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLgotKwotKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0Ci0rICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi0rICAgd2l0aCBSZWQgSGF0IGVsZnV0aWxzOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0rICAgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uIE1BIDAyMTEwLTEzMDEgVVNBLgotKwotKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgYW4gaW5jbHVkZWQgcGFja2FnZSBvZiB0aGUgT3BlbiBJbnZlbnRpb24gTmV0d29yay4KLSsgICBBbiBpbmNsdWRlZCBwYWNrYWdlIG9mIHRoZSBPcGVuIEludmVudGlvbiBOZXR3b3JrIGlzIGEgcGFja2FnZSBmb3Igd2hpY2gKLSsgICBPcGVuIEludmVudGlvbiBOZXR3b3JrIGxpY2Vuc2VlcyBjcm9zcy1saWNlbnNlIHRoZWlyIHBhdGVudHMuICBObyBwYXRlbnQKLSsgICBsaWNlbnNlIGlzIGdyYW50ZWQsIGVpdGhlciBleHByZXNzbHkgb3IgaW1wbGllZGx5LCBieSBkZXNpZ25hdGlvbiBhcyBhbgotKyAgIGluY2x1ZGVkIHBhY2thZ2UuICBTaG91bGQgeW91IHdpc2ggdG8gcGFydGljaXBhdGUgaW4gdGhlIE9wZW4gSW52ZW50aW9uCi0rICAgTmV0d29yayBsaWNlbnNpbmcgcHJvZ3JhbSwgcGxlYXNlIHZpc2l0IHd3dy5vcGVuaW52ZW50aW9ubmV0d29yay5jb20KLSsgICA8aHR0cDovL3d3dy5vcGVuaW52ZW50aW9ubmV0d29yay5jb20+LiAgKi8KLSsKLSsjaWZkZWYgSEFWRV9DT05GSUdfSAotKyMgaW5jbHVkZSA8Y29uZmlnLmg+Ci0rI2VuZGlmCi0rCi0rI2luY2x1ZGUgPHN0cmluZy5oPgotKyNpbmNsdWRlIDxhc3NlcnQuaD4KLSsjaW5jbHVkZSA8ZHdhcmYuaD4KLSsjaW5jbHVkZSA8ZWxmLmg+Ci0rCi0rI2luY2x1ZGUgIi4uL2xpYmVibC9saWJlYmxQLmgiCi0rI2luY2x1ZGUgIi4uL2xpYmR3L2xpYmR3UC5oIgotKwotKyNkZWZpbmUgQkFDS0VORCBtaXBzXwotKyNpbmNsdWRlICJsaWJlYmxfQ1BVLmgiCi0rCi0rLyogVGhlIEFCSSBvZiB0aGUgZmlsZS4gIEFsc28gc2VlIEVGX01JUFNfQUJJMiBhYm92ZS4gKi8KLSsjZGVmaW5lIEVGX01JUFNfQUJJCQkweDAwMDBGMDAwCi0rCi0rLyogVGhlIG9yaWdpbmFsIG8zMiBhYmkuICovCi0rI2RlZmluZSBFX01JUFNfQUJJX08zMiAgICAgICAgICAweDAwMDAxMDAwCi0rCi0rLyogTzMyIGV4dGVuZGVkIHRvIHdvcmsgb24gNjQgYml0IGFyY2hpdGVjdHVyZXMgKi8KLSsjZGVmaW5lIEVfTUlQU19BQklfTzY0ICAgICAgICAgIDB4MDAwMDIwMDAKLSsKLSsvKiBFQUJJIGluIDMyIGJpdCBtb2RlICovCi0rI2RlZmluZSBFX01JUFNfQUJJX0VBQkkzMiAgICAgICAweDAwMDAzMDAwCi0rCi0rLyogRUFCSSBpbiA2NCBiaXQgbW9kZSAqLwotKyNkZWZpbmUgRV9NSVBTX0FCSV9FQUJJNjQgICAgICAgMHgwMDAwNDAwMAotKwotKy8qIEFsbCB0aGUgcG9zc2libGUgTUlQUyBBQklzLiAqLwotK2VudW0gbWlwc19hYmkKLSsgIHsKLSsgICAgTUlQU19BQklfVU5LTk9XTiA9IDAsCi0rICAgIE1JUFNfQUJJX04zMiwKLSsgICAgTUlQU19BQklfTzMyLAotKyAgICBNSVBTX0FCSV9ONjQsCi0rICAgIE1JUFNfQUJJX082NCwKLSsgICAgTUlQU19BQklfRUFCSTMyLAotKyAgICBNSVBTX0FCSV9FQUJJNjQsCi0rICAgIE1JUFNfQUJJX0xBU1QKLSsgIH07Ci0rCi0rLyogRmluZCB0aGUgbWlwcyBBQkkgb2YgdGhlIGN1cnJlbnQgZmlsZSAqLwotK2VudW0gbWlwc19hYmkgZmluZF9taXBzX2FiaShFbGYgKmVsZikKLSt7Ci0rICBHRWxmX0VoZHIgZWhkcl9tZW07Ci0rICBHRWxmX0VoZHIgKmVoZHIgPSBnZWxmX2dldGVoZHIgKGVsZiwgJmVoZHJfbWVtKTsKLSsKLSsgIGlmIChlaGRyID09IE5VTEwpCi0rICAgIHJldHVybiBNSVBTX0FCSV9MQVNUOwotKwotKyAgR0VsZl9Xb3JkIGVsZl9mbGFncyA9IGVoZHItPmVfZmxhZ3M7Ci0rCi0rICAvKiBDaGVjayBlbGZfZmxhZ3MgdG8gc2VlIGlmIGl0IHNwZWNpZmllcyB0aGUgQUJJIGJlaW5nIHVzZWQuICAqLwotKyAgc3dpdGNoICgoZWxmX2ZsYWdzICYgRUZfTUlQU19BQkkpKQotKyAgICB7Ci0rICAgIGNhc2UgRV9NSVBTX0FCSV9PMzI6Ci0rICAgICAgcmV0dXJuIE1JUFNfQUJJX08zMjsKLSsgICAgY2FzZSBFX01JUFNfQUJJX082NDoKLSsgICAgICByZXR1cm4gTUlQU19BQklfTzY0OwotKyAgICBjYXNlIEVfTUlQU19BQklfRUFCSTMyOgotKyAgICAgIHJldHVybiBNSVBTX0FCSV9FQUJJMzI7Ci0rICAgIGNhc2UgRV9NSVBTX0FCSV9FQUJJNjQ6Ci0rICAgICAgcmV0dXJuIE1JUFNfQUJJX0VBQkk2NDsKLSsgICAgZGVmYXVsdDoKLSsgICAgICBpZiAoKGVsZl9mbGFncyAmIEVGX01JUFNfQUJJMikpCi0rCXJldHVybiBNSVBTX0FCSV9OMzI7Ci0rICAgIH0KLSsKLSsgIC8qIEdDQyBjcmVhdGVzIGEgcHNldWRvLXNlY3Rpb24gd2hvc2UgbmFtZSBkZXNjcmliZXMgdGhlIEFCSS4gICovCi0rICBzaXplX3Qgc2hzdHJuZHg7Ci0rICBpZiAoZWxmX2dldHNoZHJzdHJuZHggKGVsZiwgJnNoc3RybmR4KSA8IDApCi0rICAgIHJldHVybiBNSVBTX0FCSV9MQVNUOwotKwotKyAgY29uc3QgY2hhciAqbmFtZTsKLSsgIEVsZl9TY24gKnNjbiA9IE5VTEw7Ci0rICB3aGlsZSAoKHNjbiA9IGVsZl9uZXh0c2NuIChlbGYsIHNjbikpICE9IE5VTEwpCi0rICAgIHsKLSsgICAgICBHRWxmX1NoZHIgc2hkcl9tZW07Ci0rICAgICAgR0VsZl9TaGRyICpzaGRyID0gZ2VsZl9nZXRzaGRyIChzY24sICZzaGRyX21lbSk7Ci0rICAgICAgaWYgKHNoZHIgPT0gTlVMTCkKLSsgICAgICAgIHJldHVybiBNSVBTX0FCSV9MQVNUOwotKwotKyAgICAgIG5hbWUgPSBlbGZfc3RycHRyIChlbGYsIHNoc3RybmR4LCBzaGRyLT5zaF9uYW1lKSA/OiAiIjsKLSsgICAgICBpZiAoc3RybmNtcCAobmFtZSwgIi5tZGVidWcuIiwgOCkgIT0gMCkKLSsgICAgICAgIGNvbnRpbnVlOwotKwotKyAgICAgIGlmIChzdHJjbXAgKG5hbWUsICIubWRlYnVnLmFiaTMyIikgPT0gMCkKLSsgICAgICAgIHJldHVybiBNSVBTX0FCSV9PMzI7Ci0rICAgICAgZWxzZSBpZiAoc3RyY21wIChuYW1lLCAiLm1kZWJ1Zy5hYmlOMzIiKSA9PSAwKQotKyAgICAgICAgcmV0dXJuIE1JUFNfQUJJX04zMjsKLSsgICAgICBlbHNlIGlmIChzdHJjbXAgKG5hbWUsICIubWRlYnVnLmFiaTY0IikgPT0gMCkKLSsgICAgICAgIHJldHVybiBNSVBTX0FCSV9ONjQ7Ci0rICAgICAgZWxzZSBpZiAoc3RyY21wIChuYW1lLCAiLm1kZWJ1Zy5hYmlPNjQiKSA9PSAwKQotKyAgICAgICAgcmV0dXJuIE1JUFNfQUJJX082NDsKLSsgICAgICBlbHNlIGlmIChzdHJjbXAgKG5hbWUsICIubWRlYnVnLmVhYmkzMiIpID09IDApCi0rICAgICAgICByZXR1cm4gTUlQU19BQklfRUFCSTMyOwotKyAgICAgIGVsc2UgaWYgKHN0cmNtcCAobmFtZSwgIi5tZGVidWcuZWFiaTY0IikgPT0gMCkKLSsgICAgICAgIHJldHVybiBNSVBTX0FCSV9FQUJJNjQ7Ci0rICAgICAgZWxzZQotKyAgICAgICAgcmV0dXJuIE1JUFNfQUJJX1VOS05PV047Ci0rICAgIH0KLSsKLSsgIHJldHVybiBNSVBTX0FCSV9VTktOT1dOOwotK30KLSsKLSt1bnNpZ25lZCBpbnQKLSttaXBzX2FiaV9yZWdzaXplIChlbnVtIG1pcHNfYWJpIGFiaSkKLSt7Ci0rICBzd2l0Y2ggKGFiaSkKLSsgICAgewotKyAgICBjYXNlIE1JUFNfQUJJX0VBQkkzMjoKLSsgICAgY2FzZSBNSVBTX0FCSV9PMzI6Ci0rICAgICAgcmV0dXJuIDQ7Ci0rICAgIGNhc2UgTUlQU19BQklfTjMyOgotKyAgICBjYXNlIE1JUFNfQUJJX042NDoKLSsgICAgY2FzZSBNSVBTX0FCSV9PNjQ6Ci0rICAgIGNhc2UgTUlQU19BQklfRUFCSTY0OgotKyAgICAgIHJldHVybiA4OwotKyAgICBjYXNlIE1JUFNfQUJJX1VOS05PV046Ci0rICAgIGNhc2UgTUlQU19BQklfTEFTVDoKLSsgICAgZGVmYXVsdDoKLSsgICAgICByZXR1cm4gMDsKLSsgICAgfQotK30KLSsKLSsKLSsvKiAkdjAgb3IgcGFpciAkdjAsICR2MSAqLwotK3N0YXRpYyBjb25zdCBEd2FyZl9PcCBsb2NfaW50cmVnX28zMltdID0KLSsgIHsKLSsgICAgeyAuYXRvbSA9IERXX09QX3JlZzIgfSwgeyAuYXRvbSA9IERXX09QX3BpZWNlLCAubnVtYmVyID0gNCB9LAotKyAgICB7IC5hdG9tID0gRFdfT1BfcmVnMyB9LCB7IC5hdG9tID0gRFdfT1BfcGllY2UsIC5udW1iZXIgPSA0IH0sCi0rICB9OwotKwotK3N0YXRpYyBjb25zdCBEd2FyZl9PcCBsb2NfaW50cmVnW10gPQotKyAgewotKyAgICB7IC5hdG9tID0gRFdfT1BfcmVnMiB9LCB7IC5hdG9tID0gRFdfT1BfcGllY2UsIC5udW1iZXIgPSA4IH0sCi0rICAgIHsgLmF0b20gPSBEV19PUF9yZWczIH0sIHsgLmF0b20gPSBEV19PUF9waWVjZSwgLm51bWJlciA9IDggfSwKLSsgIH07Ci0rI2RlZmluZSBubG9jX2ludHJlZwkxCi0rI2RlZmluZSBubG9jX2ludHJlZ3BhaXIJNAotKwotKy8qICRmMCAoZmxvYXQpLCBvciBwYWlyICRmMCwgJGYxIChkb3VibGUpLgotKyAqIGYyL2YzIGFyZSB1c2VkIGZvciBDT01QTEVYICg9IDIgZG91YmxlcykgcmV0dXJucyBpbiBGb3J0cmFuICovCi0rc3RhdGljIGNvbnN0IER3YXJmX09wIGxvY19mcHJlZ19vMzJbXSA9Ci0rICB7Ci0rICAgIHsgLmF0b20gPSBEV19PUF9yZWd4LCAubnVtYmVyID0gMzIgfSwgeyAuYXRvbSA9IERXX09QX3BpZWNlLCAubnVtYmVyID0gNCB9LAotKyAgICB7IC5hdG9tID0gRFdfT1BfcmVneCwgLm51bWJlciA9IDMzIH0sIHsgLmF0b20gPSBEV19PUF9waWVjZSwgLm51bWJlciA9IDQgfSwKLSsgICAgeyAuYXRvbSA9IERXX09QX3JlZ3gsIC5udW1iZXIgPSAzNCB9LCB7IC5hdG9tID0gRFdfT1BfcGllY2UsIC5udW1iZXIgPSA0IH0sCi0rICAgIHsgLmF0b20gPSBEV19PUF9yZWd4LCAubnVtYmVyID0gMzUgfSwgeyAuYXRvbSA9IERXX09QX3BpZWNlLCAubnVtYmVyID0gNCB9LAotKyAgfTsKLSsKLSsvKiAkZjAsIG9yIHBhaXIgJGYwLCAkZjIuICAqLwotK3N0YXRpYyBjb25zdCBEd2FyZl9PcCBsb2NfZnByZWdbXSA9Ci0rICB7Ci0rICAgIHsgLmF0b20gPSBEV19PUF9yZWd4LCAubnVtYmVyID0gMzIgfSwgeyAuYXRvbSA9IERXX09QX3BpZWNlLCAubnVtYmVyID0gOCB9LAotKyAgICB7IC5hdG9tID0gRFdfT1BfcmVneCwgLm51bWJlciA9IDM0IH0sIHsgLmF0b20gPSBEV19PUF9waWVjZSwgLm51bWJlciA9IDggfSwKLSsgIH07Ci0rI2RlZmluZSBubG9jX2ZwcmVnICAxCi0rI2RlZmluZSBubG9jX2ZwcmVncGFpciA0Ci0rI2RlZmluZSBubG9jX2ZwcmVncXVhZCA4Ci0rCi0rLyogVGhlIHJldHVybiB2YWx1ZSBpcyBhIHN0cnVjdHVyZSBhbmQgaXMgYWN0dWFsbHkgc3RvcmVkIGluIHN0YWNrIHNwYWNlCi0rICAgcGFzc2VkIGluIGEgaGlkZGVuIGFyZ3VtZW50IGJ5IHRoZSBjYWxsZXIuICBCdXQsIHRoZSBjb21waWxlcgotKyAgIGhlbHBmdWxseSByZXR1cm5zIHRoZSBhZGRyZXNzIG9mIHRoYXQgc3BhY2UgaW4gJHYwLiAgKi8KLStzdGF0aWMgY29uc3QgRHdhcmZfT3AgbG9jX2FnZ3JlZ2F0ZVtdID0KLSsgIHsKLSsgICAgeyAuYXRvbSA9IERXX09QX2JyZWcyLCAubnVtYmVyID0gMCB9Ci0rICB9OwotKyNkZWZpbmUgbmxvY19hZ2dyZWdhdGUgMQotKwotK2ludAotK21pcHNfcmV0dXJuX3ZhbHVlX2xvY2F0aW9uIChEd2FyZl9EaWUgKmZ1bmN0eXBlZGllLCBjb25zdCBEd2FyZl9PcCAqKmxvY3ApCi0rewotKyAgLyogRmlyc3QgZmluZCB0aGUgQUJJIHVzZWQgYnkgdGhlIGVsZiBvYmplY3QgKi8KLSsgIGVudW0gbWlwc19hYmkgYWJpID0gZmluZF9taXBzX2FiaShmdW5jdHlwZWRpZS0+Y3UtPmRiZy0+ZWxmKTsKLSsKLSsgIC8qIFNvbWV0aGluZyB3ZW50IHNlcmlvdXNseSB3cm9uZyB3aGlsZSB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUgQUJJICovCi0rICBpZiAoYWJpID09IE1JUFNfQUJJX0xBU1QpCi0rICAgIHJldHVybiAtMTsKLSsKLSsgIC8qIFdlIGNvdWxkbid0IGlkZW50aWZ5IHRoZSBBQkksIGJ1dCB0aGUgZmlsZSBzZWVtcyB2YWxpZCAqLwotKyAgaWYgKGFiaSA9PSBNSVBTX0FCSV9VTktOT1dOKQotKyAgICByZXR1cm4gLTI7Ci0rCi0rICAvKiBDYW4ndCBoYW5kbGUgRUFCSSB2YXJpYW50cyAqLwotKyAgaWYgKChhYmkgPT0gTUlQU19BQklfRUFCSTMyKSB8fCAoYWJpID09IE1JUFNfQUJJX0VBQkk2NCkpCi0rICAgIHJldHVybiAtMjsKLSsKLSsgIHVuc2lnbmVkIGludCByZWdzaXplID0gbWlwc19hYmlfcmVnc2l6ZSAoYWJpKTsKLSsgIGlmICghcmVnc2l6ZSkKLSsgICAgcmV0dXJuIC0yOwotKwotKyAgLyogU3RhcnQgd2l0aCB0aGUgZnVuY3Rpb24ncyB0eXBlLCBhbmQgZ2V0IHRoZSBEV19BVF90eXBlIGF0dHJpYnV0ZSwKLSsgICAgIHdoaWNoIGlzIHRoZSB0eXBlIG9mIHRoZSByZXR1cm4gdmFsdWUuICAqLwotKwotKyAgRHdhcmZfQXR0cmlidXRlIGF0dHJfbWVtOwotKyAgRHdhcmZfQXR0cmlidXRlICphdHRyID0gZHdhcmZfYXR0cl9pbnRlZ3JhdGUgKGZ1bmN0eXBlZGllLCBEV19BVF90eXBlLCAmYXR0cl9tZW0pOwotKyAgaWYgKGF0dHIgPT0gTlVMTCkKLSsgICAgLyogVGhlIGZ1bmN0aW9uIGhhcyBubyByZXR1cm4gdmFsdWUsIGxpa2UgYSBgdm9pZCcgZnVuY3Rpb24gaW4gQy4gICovCi0rICAgIHJldHVybiAwOwotKwotKyAgRHdhcmZfRGllIGRpZV9tZW07Ci0rICBEd2FyZl9EaWUgKnR5cGVkaWUgPSBkd2FyZl9mb3JtcmVmX2RpZSAoYXR0ciwgJmRpZV9tZW0pOwotKyAgaW50IHRhZyA9IGR3YXJmX3RhZyAodHlwZWRpZSk7Ci0rCi0rICAvKiBGb2xsb3cgdHlwZWRlZnMgYW5kIHF1YWxpZmllcnMgdG8gZ2V0IHRvIHRoZSBhY3R1YWwgdHlwZS4gICovCi0rICB3aGlsZSAodGFnID09IERXX1RBR190eXBlZGVmCi0rCSB8fCB0YWcgPT0gRFdfVEFHX2NvbnN0X3R5cGUgfHwgdGFnID09IERXX1RBR192b2xhdGlsZV90eXBlCi0rCSB8fCB0YWcgPT0gRFdfVEFHX3Jlc3RyaWN0X3R5cGUpCi0rICAgIHsKLSsgICAgICBhdHRyID0gZHdhcmZfYXR0cl9pbnRlZ3JhdGUgKHR5cGVkaWUsIERXX0FUX3R5cGUsICZhdHRyX21lbSk7Ci0rICAgICAgdHlwZWRpZSA9IGR3YXJmX2Zvcm1yZWZfZGllIChhdHRyLCAmZGllX21lbSk7Ci0rICAgICAgdGFnID0gZHdhcmZfdGFnICh0eXBlZGllKTsKLSsgICAgfQotKwotKyAgc3dpdGNoICh0YWcpCi0rICAgIHsKLSsgICAgY2FzZSAtMToKLSsgICAgICByZXR1cm4gLTE7Ci0rCi0rICAgIGNhc2UgRFdfVEFHX3N1YnJhbmdlX3R5cGU6Ci0rICAgICAgaWYgKCEgZHdhcmZfaGFzYXR0cl9pbnRlZ3JhdGUgKHR5cGVkaWUsIERXX0FUX2J5dGVfc2l6ZSkpCi0rCXsKLSsJICBhdHRyID0gZHdhcmZfYXR0cl9pbnRlZ3JhdGUgKHR5cGVkaWUsIERXX0FUX3R5cGUsICZhdHRyX21lbSk7Ci0rCSAgdHlwZWRpZSA9IGR3YXJmX2Zvcm1yZWZfZGllIChhdHRyLCAmZGllX21lbSk7Ci0rCSAgdGFnID0gZHdhcmZfdGFnICh0eXBlZGllKTsKLSsJfQotKyAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCi0rCi0rICAgIGNhc2UgRFdfVEFHX2Jhc2VfdHlwZToKLSsgICAgY2FzZSBEV19UQUdfZW51bWVyYXRpb25fdHlwZToKLSsgICAgY2FzZSBEV19UQUdfcG9pbnRlcl90eXBlOgotKyAgICBjYXNlIERXX1RBR19wdHJfdG9fbWVtYmVyX3R5cGU6Ci0rICAgICAgewotKyAgICAgICAgRHdhcmZfV29yZCBzaXplOwotKwlpZiAoZHdhcmZfZm9ybXVkYXRhIChkd2FyZl9hdHRyX2ludGVncmF0ZSAodHlwZWRpZSwgRFdfQVRfYnl0ZV9zaXplLAotKwkJCQkJICZhdHRyX21lbSksICZzaXplKSAhPSAwKQotKwkgIHsKLSsJICAgIGlmICh0YWcgPT0gRFdfVEFHX3BvaW50ZXJfdHlwZSB8fCB0YWcgPT0gRFdfVEFHX3B0cl90b19tZW1iZXJfdHlwZSkKLSsJICAgICAgc2l6ZSA9IHJlZ3NpemU7Ci0rCSAgICBlbHNlCi0rCSAgICAgIHJldHVybiAtMTsKLSsJICB9Ci0rCWlmICh0YWcgPT0gRFdfVEFHX2Jhc2VfdHlwZSkKLSsJICB7Ci0rCSAgICBEd2FyZl9Xb3JkIGVuY29kaW5nOwotKwkgICAgaWYgKGR3YXJmX2Zvcm11ZGF0YSAoZHdhcmZfYXR0cl9pbnRlZ3JhdGUgKHR5cGVkaWUsIERXX0FUX2VuY29kaW5nLAotKwkJCQkJICAgICAmYXR0cl9tZW0pLCAmZW5jb2RpbmcpICE9IDApCi0rCSAgICAgIHJldHVybiAtMTsKLSsKLSsjZGVmaW5lIEFCSV9MT0MobG9jLCByZWdzaXplKSAoKHJlZ3NpemUpID09IDQgPyAobG9jICMjIF9vMzIpIDogKGxvYykpCi0rCi0rCSAgICBpZiAoZW5jb2RpbmcgPT0gRFdfQVRFX2Zsb2F0KQotKwkgICAgICB7Ci0rCQkqbG9jcCA9IEFCSV9MT0MobG9jX2ZwcmVnLCByZWdzaXplKTsKLSsJCWlmIChzaXplIDw9IHJlZ3NpemUpCi0rCQkgICAgcmV0dXJuIG5sb2NfZnByZWc7Ci0rCi0rCQlpZiAoc2l6ZSA8PSAyKnJlZ3NpemUpCi0rICAgICAgICAgICAgICAgICAgcmV0dXJuIG5sb2NfZnByZWdwYWlyOwotKwotKwkJaWYgKHNpemUgPD0gNCpyZWdzaXplICYmIGFiaSA9PSBNSVBTX0FCSV9PMzIpCi0rICAgICAgICAgICAgICAgICAgcmV0dXJuIG5sb2NfZnByZWdxdWFkOwotKwotKwkJZ290byBhZ2dyZWdhdGU7Ci0rCSAgICAgIH0KLSsJICB9Ci0rCSpsb2NwID0gQUJJX0xPQyhsb2NfaW50cmVnLCByZWdzaXplKTsKLSsJaWYgKHNpemUgPD0gcmVnc2l6ZSkKLSsJICByZXR1cm4gbmxvY19pbnRyZWc7Ci0rCWlmIChzaXplIDw9IDIqcmVnc2l6ZSkKLSsJICByZXR1cm4gbmxvY19pbnRyZWdwYWlyOwotKwotKwkvKiBFbHNlIGZhbGwgdGhyb3VnaC4gU2hvdWxkbid0IGhhcHBlbiB0aG91Z2ggKGF0IGxlYXN0IHdpdGggZ2NjKSAqLwotKyAgICAgIH0KLSsKLSsgICAgY2FzZSBEV19UQUdfc3RydWN0dXJlX3R5cGU6Ci0rICAgIGNhc2UgRFdfVEFHX2NsYXNzX3R5cGU6Ci0rICAgIGNhc2UgRFdfVEFHX3VuaW9uX3R5cGU6Ci0rICAgIGNhc2UgRFdfVEFHX2FycmF5X3R5cGU6Ci0rICAgIGFnZ3JlZ2F0ZToKLSsgICAgICAvKiBYWFggVE9ETzogQ2FuJ3QgaGFuZGxlIHN0cnVjdHVyZSByZXR1cm4gd2l0aCBvdGhlciBBQkkncyB5ZXQgOi0vICovCi0rICAgICAgaWYgKChhYmkgIT0gTUlQU19BQklfTzMyKSAmJiAoYWJpICE9IE1JUFNfQUJJX082NCkpCi0rICAgICAgICByZXR1cm4gLTI7Ci0rCi0rICAgICAgKmxvY3AgPSBsb2NfYWdncmVnYXRlOwotKyAgICAgIHJldHVybiBubG9jX2FnZ3JlZ2F0ZTsKLSsgICAgfQotKwotKyAgLyogWFhYIFdlIGRvbid0IGhhdmUgYSBnb29kIHdheSB0byByZXR1cm4gc3BlY2lmaWMgZXJyb3JzIGZyb20gZWJsIGNhbGxzLgotKyAgICAgVGhpcyB2YWx1ZSBtZWFucyB3ZSBkbyBub3QgdW5kZXJzdGFuZCB0aGUgdHlwZSwgYnV0IGl0IGlzIHdlbGwtZm9ybWVkCi0rICAgICBEV0FSRiBhbmQgbWlnaHQgYmUgdmFsaWQuICAqLwotKyAgcmV0dXJuIC0yOwotK30KLUluZGV4OiBiL2JhY2tlbmRzL21pcHNfc3ltYm9sLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwKLSsrKyBiL2JhY2tlbmRzL21pcHNfc3ltYm9sLmMKLUBAIC0wLDAgKzEsNTIgQEAKLSsvKiBNSVBTIHNwZWNpZmljIHN5bWJvbGljIG5hbWUgaGFuZGxpbmcuCi0rICAgQ29weXJpZ2h0IChDKSAyMDAyLCAyMDAzLCAyMDA1IFJlZCBIYXQsIEluYy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBSZWQgSGF0IGVsZnV0aWxzLgotKyAgIFdyaXR0ZW4gYnkgSmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4sIDIwMDIuCi0rCi0rICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCi0rICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UuCi0rCi0rICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKLSsgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSsgICB3aXRoIFJlZCBIYXQgZWxmdXRpbHM7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSsgICBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24gTUEgMDIxMTAtMTMwMSBVU0EuCi0rCi0rICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBhbiBpbmNsdWRlZCBwYWNrYWdlIG9mIHRoZSBPcGVuIEludmVudGlvbiBOZXR3b3JrLgotKyAgIEFuIGluY2x1ZGVkIHBhY2thZ2Ugb2YgdGhlIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsgaXMgYSBwYWNrYWdlIGZvciB3aGljaAotKyAgIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsgbGljZW5zZWVzIGNyb3NzLWxpY2Vuc2UgdGhlaXIgcGF0ZW50cy4gIE5vIHBhdGVudAotKyAgIGxpY2Vuc2UgaXMgZ3JhbnRlZCwgZWl0aGVyIGV4cHJlc3NseSBvciBpbXBsaWVkbHksIGJ5IGRlc2lnbmF0aW9uIGFzIGFuCi0rICAgaW5jbHVkZWQgcGFja2FnZS4gIFNob3VsZCB5b3Ugd2lzaCB0byBwYXJ0aWNpcGF0ZSBpbiB0aGUgT3BlbiBJbnZlbnRpb24KLSsgICBOZXR3b3JrIGxpY2Vuc2luZyBwcm9ncmFtLCBwbGVhc2UgdmlzaXQgd3d3Lm9wZW5pbnZlbnRpb25uZXR3b3JrLmNvbQotKyAgIDxodHRwOi8vd3d3Lm9wZW5pbnZlbnRpb25uZXR3b3JrLmNvbT4uICAqLwotKwotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rIyBpbmNsdWRlIDxjb25maWcuaD4KLSsjZW5kaWYKLSsKLSsjaW5jbHVkZSA8ZWxmLmg+Ci0rI2luY2x1ZGUgPHN0ZGRlZi5oPgotKwotKyNkZWZpbmUgQkFDS0VORAkJbWlwc18KLSsjaW5jbHVkZSAibGliZWJsX0NQVS5oIgotKwotKy8qIENoZWNrIGZvciB0aGUgc2ltcGxlIHJlbG9jIHR5cGVzLiAgKi8KLStFbGZfVHlwZQotK21pcHNfcmVsb2Nfc2ltcGxlX3R5cGUgKEVibCAqZWJsIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwgaW50IHR5cGUpCi0rewotKyAgc3dpdGNoICh0eXBlKQotKyAgICB7Ci0rICAgIGNhc2UgUl9NSVBTXzE2OgotKyAgICAgIHJldHVybiBFTEZfVF9IQUxGOwotKyAgICBjYXNlIFJfTUlQU18zMjoKLSsgICAgICByZXR1cm4gRUxGX1RfV09SRDsKLSsgICAgY2FzZSBSX01JUFNfNjQ6Ci0rICAgICAgcmV0dXJuIEVMRl9UX1hXT1JEOwotKyAgICBkZWZhdWx0OgotKyAgICAgIHJldHVybiBFTEZfVF9OVU07Ci0rICAgIH0KLSt9Ci1JbmRleDogYi9saWJlYmwvZWJsb3BlbmJhY2tlbmQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGEvbGliZWJsL2VibG9wZW5iYWNrZW5kLmMKLSsrKyBiL2xpYmVibC9lYmxvcGVuYmFja2VuZC5jCi1AQCAtNzEsNiArNzEsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0Ci0gICB7ICJzcGFyYyIsICJlbGZfc3BhcmMiLCAic3BhcmMiLCA1LCBFTV9TUEFSQywgMCwgMCB9LAotICAgeyAic3BhcmMiLCAiZWxmX3NwYXJjdjhwbHVzIiwgInNwYXJjIiwgNSwgRU1fU1BBUkMzMlBMVVMsIDAsIDAgfSwKLSAgIHsgInMzOTAiLCAiZWJsX3MzOTAiLCAiczM5MCIsIDQsIEVNX1MzOTAsIDAsIDAgfSwKLSsgIHsgIm1pcHMiLCAiZWxmX21pcHMiLCAibWlwcyIsIDQsIEVNX01JUFMsIDAsIDAgfSwKLSsgIHsgIm1pcHMiLCAiZWxmX21pcHNlbCIsICJtaXBzZWwiLCA0LCBFTV9NSVBTX1JTM19MRSwgMCwgMCB9LAotIAotICAgeyAibTMyIiwgImVsZl9tMzIiLCAibTMyIiwgMywgRU1fTTMyLCAwLCAwIH0sCi0gICB7ICJtNjhrIiwgImVsZl9tNjhrIiwgIm02OGsiLCA0LCBFTV82OEssIEVMRkNMQVNTMzIsIEVMRkRBVEEyTVNCIH0sCi1JbmRleDogYi9iYWNrZW5kcy9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGEvYmFja2VuZHMvTWFrZWZpbGUuYW0KLSsrKyBiL2JhY2tlbmRzL01ha2VmaWxlLmFtCi1AQCAtMzMsMTIgKzMzLDEyIEBAIEFNX0NQUEZMQUdTICs9IC1JJCh0b3Bfc3JjZGlyKS9saWJlYmwgLUkKLSAKLSAKLSBtb2R1bGVzID0gaTM4NiBzaCB4ODZfNjQgaWE2NCBhbHBoYSBhcm0gYWFyY2g2NCBzcGFyYyBwcGMgcHBjNjQgczM5MCBcCi0tCSAgdGlsZWd4IG02OGsgYnBmIHBhcmlzYwotKwkgIHRpbGVneCBtNjhrIGJwZiBwYXJpc2MgbWlwcwotIGxpYmVibF9waWMgPSBsaWJlYmxfaTM4Nl9waWMuYSBsaWJlYmxfc2hfcGljLmEgbGliZWJsX3g4Nl82NF9waWMuYSAgICBcCi0gCSAgICAgbGliZWJsX2lhNjRfcGljLmEgbGliZWJsX2FscGhhX3BpYy5hIGxpYmVibF9hcm1fcGljLmEgICAgXAotIAkgICAgIGxpYmVibF9hYXJjaDY0X3BpYy5hIGxpYmVibF9zcGFyY19waWMuYSBsaWJlYmxfcHBjX3BpYy5hIFwKLSAJICAgICBsaWJlYmxfcHBjNjRfcGljLmEgbGliZWJsX3MzOTBfcGljLmEgbGliZWJsX3RpbGVneF9waWMuYSBcCi0tCSAgICAgbGliZWJsX202OGtfcGljLmEgbGliZWJsX2JwZl9waWMuYSBsaWJlYmxfcGFyaXNjX3BpYy5hCi0rCSAgICAgbGliZWJsX202OGtfcGljLmEgbGliZWJsX2JwZl9waWMuYSBsaWJlYmxfcGFyaXNjX3BpYy5hIGxpYmVibF9taXBzX3BpYy5hCi0gbm9pbnN0X0xJQlJBUklFUyA9ICQobGliZWJsX3BpYykKLSBub2luc3RfREFUQSA9ICQobGliZWJsX3BpYzpfcGljLmE9LnNvKQotIAotQEAgLTEzMiw2ICsxMzIsMTAgQEAgcGFyaXNjX1NSQ1MgPSBwYXJpc2NfaW5pdC5jIHBhcmlzY19zeW1ibwotIGxpYmVibF9wYXJpc2NfcGljX2FfU09VUkNFUyA9ICQocGFyaXNjX1NSQ1MpCi0gYW1fbGliZWJsX3BhcmlzY19waWNfYV9PQkpFQ1RTID0gJChwYXJpc2NfU1JDUzouYz0ub3MpCi0gCi0rbWlwc19TUkNTID0gbWlwc19pbml0LmMgbWlwc19zeW1ib2wuYyBtaXBzX3JlZ3MuYyBtaXBzX3JldHZhbC5jCi0rbGliZWJsX21pcHNfcGljX2FfU09VUkNFUyA9ICQobWlwc19TUkNTKQotK2FtX2xpYmVibF9taXBzX3BpY19hX09CSkVDVFMgPSAkKG1pcHNfU1JDUzouYz0ub3MpCi0rCi0gbGliZWJsXyUuc28gbGliZWJsXyUubWFwOiBsaWJlYmxfJV9waWMuYSAkKGxpYmVsZikgJChsaWJkdykKLSAJQHJtIC1mICQoQDouc289Lm1hcCkKLSAJJChBTV9WX2F0KWVjaG8gJ0VMRlVUSUxTXyQoUEFDS0FHRV9WRVJTSU9OKSB7IGdsb2JhbDogJCpfaW5pdDsgbG9jYWw6ICo7IH07JyBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4L2RlYmlhbi90ZXN0c3VpdGUtaWdub3JlLWVsZmxpbnQuZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvZGViaWFuL3Rlc3RzdWl0ZS1pZ25vcmUtZWxmbGludC5kaWZmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZGYzNTc2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvZGViaWFuL3Rlc3RzdWl0ZS1pZ25vcmUtZWxmbGludC5kaWZmCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotT24gbWFueSBhcmNoaXRlY3R1cmVzIHRoaXMgdGVzdCBmYWlscyBiZWNhdXNlIGJpbmFyaWVzL2xpYnMgcHJvZHVjZWQgYnkKLWJpbnV0aWxzIGRvbid0IHBhc3MgZWxmbGludC4gSG93ZXZlciBlbGZ1dGlscyBzaG91bGRuJ3QgRlRCRlMgYmVjYXVzZSBvZiB0aGlzLgotCi1TbyB3ZSBydW4gdGhlIHRlc3RzIG9uIGFsbCBhcmNocyB0byBzZWUgd2hhdCBicmVha3MsIGJ1dCBpZiBpdCBicmVha3Mgd2UgaWdub3JlCi10aGUgcmVzdWx0IChleGl0Y29kZSA3NyBtZWFuczogdGhpcyB0ZXN0IHdhcyBza2lwcGVkKS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbZnJvbSBkZWJpYW5dCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0KLUluZGV4OiBiL3Rlc3RzL3J1bi1lbGZsaW50LXNlbGYuc2gKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhL3Rlc3RzL3J1bi1lbGZsaW50LXNlbGYuc2gKLSsrKyBiL3Rlc3RzL3J1bi1lbGZsaW50LXNlbGYuc2gKLUBAIC0xOCw0ICsxOCw0IEBACi0gCi0gLiAkc3JjZGlyL3Rlc3Qtc3Vici5zaAotIAotLXRlc3RydW5fb25fc2VsZiAke2Fic190b3BfYnVpbGRkaXJ9L3NyYy9lbGZsaW50IC0tcXVpZXQgLS1nbnUtbGQKLSt0ZXN0cnVuX29uX3NlbGZfc2tpcCAke2Fic190b3BfYnVpbGRkaXJ9L3NyYy9lbGZsaW50IC0tcXVpZXQgLS1nbnUtbGQKLUluZGV4OiBiL3Rlc3RzL3Rlc3Qtc3Vici5zaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGEvdGVzdHMvdGVzdC1zdWJyLnNoCi0rKysgYi90ZXN0cy90ZXN0LXN1YnIuc2gKLUBAIC0xNTIsMyArMTUyLDE4IEBAIHRlc3RydW5fb25fc2VsZl9xdWlldCgpCi0gICAjIE9ubHkgZXhpdCBpZiBzb21ldGhpbmcgZmFpbGVkCi0gICBpZiB0ZXN0ICRleGl0X3N0YXR1cyAhPSAwOyB0aGVuIGV4aXQgJGV4aXRfc3RhdHVzOyBmaQotIH0KLSsKLSsjIFNhbWUgYXMgdGVzdHJ1bl9vbl9zZWxmKCksIGJ1dCBza2lwIG9uIGZhaWx1cmUuCi0rdGVzdHJ1bl9vbl9zZWxmX3NraXAoKQotK3sKLSsgIGV4aXRfc3RhdHVzPTAKLSsKLSsgIGZvciBmaWxlIGluICRzZWxmX3Rlc3RfZmlsZXM7IGRvCi0rICAgICAgdGVzdHJ1biAkKiAkZmlsZSBcCi0rCSAgfHwgeyBlY2hvICIqKiogZmFpbHVyZSBpbiAkKiAkZmlsZSI7IGV4aXRfc3RhdHVzPTc3OyB9Ci0rICBkb25lCi0rCi0rICAjIE9ubHkgZXhpdCBpZiBzb21ldGhpbmcgZmFpbGVkCi0rICBpZiB0ZXN0ICRleGl0X3N0YXR1cyAhPSAwOyB0aGVuIGV4aXQgJGV4aXRfc3RhdHVzOyBmaQotK30KLSsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvZml4aGVhZGVyY2hlY2sucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4L2ZpeGhlYWRlcmNoZWNrLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZGUzYjI0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvZml4aGVhZGVyY2hlY2sucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1Gb3Igc29tZSBiaW5hcmllcyB3ZSBjYW4gZ2V0IGEgaW52YWxpZCBzZWN0aW9uIGFsaWdubWVudCwgZm9yIGV4YW1wbGUgaWYgCi1zaF9hbGlnbiA9IDEgYW5kIHNoX2FkZHJhbGlnbiBpcyAwLiBJbiB0aGUgY2FzZSBvZiBhIHplcm8gc2l6ZSBzZWN0aW9uIGxpa2UgCi0iLm5vdGUuR05VLXN0YWNrIiwgdGhpcyBpcyBpcnJlbGF2ZW50IGFzIGZhciBhcyBJIGNhbiB0ZWxsIGFuZCB3ZSBzaG91bGRuJ3QKLWVycm9yIGluIHRoaXMgY2FzZS4KLQotUlAgMjAxNC82LzExCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1kaWZmIC0tZ2l0IGEvbGliZWxmL2VsZjMyX3VwZGF0ZW51bGwuYyBiL2xpYmVsZi9lbGYzMl91cGRhdGVudWxsLmMKLS0tLSBhL2xpYmVsZi9lbGYzMl91cGRhdGVudWxsLmMKLSsrKyBiL2xpYmVsZi9lbGYzMl91cGRhdGVudWxsLmMKLUBAIC0zMzksOCArMzM5LDggQEAgX19lbGZ3MihMSUJFTEZCSVRTLHVwZGF0ZW51bGxfd3Jsb2NrKSAoRWxmICplbGYsIGludCAqY2hhbmdlX2JvcCwgc2l6ZV90IHNobnVtKQotIAkJICAgICB3ZSB0ZXN0IGZvciB0aGUgYWxpZ25tZW50IG9mIHRoZSBzZWN0aW9uIGJlaW5nIGxhcmdlCi0gCQkgICAgIGVub3VnaCBmb3IgdGhlIGxhcmdlc3QgYWxpZ25tZW50IHJlcXVpcmVkIGJ5IGEgZGF0YQotIAkJICAgICBibG9jay4gICovCi0tCQkgIGlmICh1bmxpa2VseSAoISBwb3dlcm9mMiAoc2hkci0+c2hfYWRkcmFsaWduKSkKLS0JCSAgICAgIHx8IHVubGlrZWx5ICgoc2hkci0+c2hfYWRkcmFsaWduID86IDEpIDwgc2hfYWxpZ24pKQotKwkJICBpZiAoc2hkci0+c2hfc2l6ZSAmJiAodW5saWtlbHkgKCEgcG93ZXJvZjIgKHNoZHItPnNoX2FkZHJhbGlnbikpCi0rCQkgICAgICB8fCB1bmxpa2VseSAoKHNoZHItPnNoX2FkZHJhbGlnbiA/OiAxKSA8IHNoX2FsaWduKSkpCi0gCQkgICAgewotIAkJICAgICAgX19saWJlbGZfc2V0ZXJybm8gKEVMRl9FX0lOVkFMSURfQUxJR04pOwotIAkJICAgICAgcmV0dXJuIC0xOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2OC9zaGFkb3cucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4L3NoYWRvdy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDMxOTYxZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4L3NoYWRvdy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLUZpeCBjb250cm9sIHBhdGggd2hlcmUgd2UgaGF2ZSBzdHIgYXMgdW5pbml0aWFsaXplZCBzdHJpbmcKLQotfCAvaG9tZS91YnVudHUvd29yay9vZS9vcGVuZW1iZWRkZWQtY29yZS9idWlsZC90bXAtbXVzbC93b3JrL2k1ODYtb2UtbGludXgtbXVzbC9lbGZ1dGlscy8wLjE2NC1yMC9lbGZ1dGlscy0wLjE2NC9saWJjcHUvaTM4Nl9kaXNhc20uYzogSW4gZnVuY3Rpb24gJ2kzODZfZGlzYXNtJzoKLXwgL2hvbWUvdWJ1bnR1L3dvcmsvb2Uvb3BlbmVtYmVkZGVkLWNvcmUvYnVpbGQvdG1wLW11c2wvd29yay9pNTg2LW9lLWxpbnV4LW11c2wvZWxmdXRpbHMvMC4xNjQtcjAvZWxmdXRpbHMtMC4xNjQvbGliY3B1L2kzODZfZGlzYXNtLmM6MzEwOjU6IGVycm9yOiAnc3RyJyBtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVkIGluIHRoaXMgZnVuY3Rpb24gWy1XZXJyb3I9bWF5YmUtdW5pbml0aWFsaXplZF0KLXwgICAgICBtZW1jcHkgKGJ1ZiArIGJ1ZmNudCwgX3N0ciwgX2xlbik7ICAgICAgICAgICBcCi18ICAgICAgXgotfCAvaG9tZS91YnVudHUvd29yay9vZS9vcGVuZW1iZWRkZWQtY29yZS9idWlsZC90bXAtbXVzbC93b3JrL2k1ODYtb2UtbGludXgtbXVzbC9lbGZ1dGlscy8wLjE2NC1yMC9lbGZ1dGlscy0wLjE2NC9saWJjcHUvaTM4Nl9kaXNhc20uYzo3MDk6MTc6IG5vdGU6ICdzdHInIHdhcyBkZWNsYXJlZCBoZXJlCi18ICAgICAgY29uc3QgY2hhciAqc3RyOwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1JbmRleDogZWxmdXRpbHMtMC4xNjQvbGliY3B1L2kzODZfZGlzYXNtLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBlbGZ1dGlscy0wLjE2NC5vcmlnL2xpYmNwdS9pMzg2X2Rpc2FzbS5jCi0rKysgZWxmdXRpbHMtMC4xNjQvbGliY3B1L2kzODZfZGlzYXNtLmMKLUBAIC04MjEsNiArODIxLDcgQEAgaTM4Nl9kaXNhc20gKGNvbnN0IHVpbnQ4X3QgKipzdGFydHAsIGNvbgotIAkJCSAgICB9Ci0gCi0gCQkJZGVmYXVsdDoKLSsJCQkgIHN0ciA9ICIiOwotIAkJCSAgYXNzZXJ0ICghICJJTlZBTElEIG5vdCBoYW5kbGVkIik7Ci0gCQkJfQotIAkJICAgIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMvRml4X2VsZl9jdnRfZ3VuaGFzaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMvRml4X2VsZl9jdnRfZ3VuaGFzaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjg2MWU4OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzL0ZpeF9lbGZfY3Z0X2d1bmhhc2gucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1GaXggZWxmX2N2dF9ndW5oYXNoIGlmIGRlc3QgYW5kIHNyYyBhcmUgc2FtZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVRoZSAnZGVzdCcgYW5kICdzcmMnIGNhbiBiZSBzYW1lLCB3ZSBuZWVkIHRvIHNhdmUgdGhlIHZhbHVlIG9mIHNyYzMyWzJdCi1iZWZvcmUgc3dhcGluZyBpdC4KLQotU2lnbmVkLW9mZi1ieTogQmFvc2hhbiBQYW5nIDxCYW9TaGFuLlBhbmdAd2luZHJpdmVyLmNvbT4KLWRpZmYgLS1naXQgYS9saWJlbGYvZ251aGFzaF94bGF0ZS5oIGIvbGliZWxmL2dudWhhc2hfeGxhdGUuaAotaW5kZXggNmZhZjExMy4uMDRkOWNhMSAxMDA2NDQKLS0tLSBhL2xpYmVsZi9nbnVoYXNoX3hsYXRlLmgKLSsrKyBiL2xpYmVsZi9nbnVoYXNoX3hsYXRlLmgKLUBAIC00MCw2ICs0MCw3IEBAIGVsZl9jdnRfZ251aGFzaCAodm9pZCAqZGVzdCwgY29uc3Qgdm9pZCAqc3JjLCBzaXplX3QgbGVuLCBpbnQgZW5jb2RlKQotICAgICAgd29yZHMuICBXZSBtdXN0IGRldGFuZ2xlIHRoZW0gaGVyZS4gICAqLwotICAgRWxmMzJfV29yZCAqZGVzdDMyID0gZGVzdDsKLSAgIGNvbnN0IEVsZjMyX1dvcmQgKnNyYzMyID0gc3JjOwotKyAgRWxmMzJfV29yZCBzYXZlX3NyYzMyXzIgPSBzcmMzMlsyXTsgLy8gZGVzdCBjb3VsZCBiZSBlcXVhbCB0byBzcmMKLSAKLSAgIC8qIEZpcnN0IGZvdXIgY29udHJvbCB3b3JkcywgMzIgYml0cy4gICovCi0gICBmb3IgKHVuc2lnbmVkIGludCBjbnQgPSAwOyBjbnQgPCA0OyArK2NudCkKLUBAIC01MCw3ICs1MSw3IEBAIGVsZl9jdnRfZ251aGFzaCAodm9pZCAqZGVzdCwgY29uc3Qgdm9pZCAqc3JjLCBzaXplX3QgbGVuLCBpbnQgZW5jb2RlKQotICAgICAgIGxlbiAtPSA0OwotICAgICB9Ci0gCi0tICBFbGYzMl9Xb3JkIGJpdG1hc2tfd29yZHMgPSBlbmNvZGUgPyBzcmMzMlsyXSA6IGRlc3QzMlsyXTsKLSsgIEVsZjMyX1dvcmQgYml0bWFza193b3JkcyA9IGVuY29kZSA/IHNhdmVfc3JjMzJfMiA6IGRlc3QzMlsyXTsKLSAKLSAgIC8qIE5vdyB0aGUgNjQgYml0IHdvcmRzLiAgKi8KLSAgIEVsZjY0X1h3b3JkICpkZXN0NjQgPSAoRWxmNjRfWHdvcmQgKikgJmRlc3QzMls0XTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMvZHNvLWxpbmstY2hhbmdlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy9kc28tbGluay1jaGFuZ2UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwY2QzZWQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy9kc28tbGluay1jaGFuZ2UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIyBUaGlzIHBhdGNoIG1ha2VzIHRoZSBsaW5rIHRvIHRoZSBkZXBlbmRlbmNpZXMgb2YgbGliZHcgZXhwbGljaXQsIGFzIHJlY2VudAotIyBsZCBubyBsb25nZXIgaW1wbGljaXRseSBsaW5rcyB0aGVtLiBTZWUKLSMgaHR0cDovL2xpc3RzLmZlZG9yYXByb2plY3Qub3JnL3BpcGVybWFpbC9kZXZlbC8yMDEwLU1hcmNoLzEzMzYwMS5odG1sIGFzCi0jIGEgc2ltaWxhciBleGFtcGxlIG9mIHRoZSBlcnJvciBtZXNzYWdlIHlvdSBjYW4gZW5jb3VudGVyIHdpdGhvdXQgdGhpcyBwYXRjaCwKLSMgYW5kIGh0dHBzOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9VbmRlcnN0YW5kaW5nRFNPTGlua0NoYW5nZSBhbmQKLSMgaHR0cHM6Ly9mZWRvcmFwcm9qZWN0Lm9yZy93aWtpL0ZlYXR1cmVzL0NoYW5nZUluSW1wbGljaXREU09MaW5raW5nIGZvciBtb3JlCi0jIGRldGFpbHMuCi0KLS0tLSBlbGZ1dGlscy0wLjE0OC5vcmlnL3NyYy9NYWtlZmlsZS5hbQotKysrIGVsZnV0aWxzLTAuMTQ4L3NyYy9NYWtlZmlsZS5hbQotQEAgLTg2LDcgKzg2LDcgQEAgbGliZHcgPSAuLi9saWJkdy9saWJkdy5hICQoemlwX0xJQlMpICQobAotIGxpYmVsZiA9IC4uL2xpYmVsZi9saWJlbGYuYQotIGVsc2UKLSBsaWJhc20gPSAuLi9saWJhc20vbGliYXNtLnNvCi0tbGliZHcgPSAuLi9saWJkdy9saWJkdy5zbwotK2xpYmR3ID0gLi4vbGliZHcvbGliZHcuc28gJCh6aXBfTElCUykgJChsaWJlbGYpICQobGliZWJsKSAtbGRsCi0gbGliZWxmID0gLi4vbGliZWxmL2xpYmVsZi5zbwotIGVuZGlmCi0gbGliZWJsID0gLi4vbGliZWJsL2xpYmVibC5hCi0tLS0gZWxmdXRpbHMtMC4xNDgub3JpZy90ZXN0cy9NYWtlZmlsZS5hbQotKysrIGVsZnV0aWxzLTAuMTQ4L3Rlc3RzL01ha2VmaWxlLmFtCi1AQCAtMTcyLDcgKzE3Miw3IEBAIGxpYmR3ID0gLi4vbGliZHcvbGliZHcuYSAkKHppcF9MSUJTKSAkKGwKLSBsaWJlbGYgPSAuLi9saWJlbGYvbGliZWxmLmEKLSBsaWJhc20gPSAuLi9saWJhc20vbGliYXNtLmEKLSBlbHNlCi0tbGliZHcgPSAuLi9saWJkdy9saWJkdy5zbwotK2xpYmR3ID0gLi4vbGliZHcvbGliZHcuc28gJCh6aXBfTElCUykgJChsaWJlbGYpICQobGliZWJsKSAtbGRsCi0gbGliZWxmID0gLi4vbGliZWxmL2xpYmVsZi5zbwotIGxpYmFzbSA9IC4uL2xpYmFzbS9saWJhc20uc28KLSBlbmRpZgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlsc18wLjE2OC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHNfMC4xNjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5NzdjZTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlsc18wLjE2OC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDkwICswLDAgQEAKLVNVTU1BUlkgPSAiVXRpbGl0aWVzIGFuZCBsaWJyYXJpZXMgZm9yIGhhbmRsaW5nIGNvbXBpbGVkIG9iamVjdCBmaWxlcyIKLUhPTUVQQUdFID0gImh0dHBzOi8vc291cmNld2FyZS5vcmcvZWxmdXRpbHMiCi1TRUNUSU9OID0gImJhc2UiCi1MSUNFTlNFID0gIihHUEx2MyAmIEVsZnV0aWxzLUV4Y2VwdGlvbikiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLURFUEVORFMgPSAibGlidG9vbCBiemlwMiB6bGliIHZpcnR1YWwvbGliaW50bCIKLURFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgYXJncC1zdGFuZGFsb25lIGZ0cyAiCi1TUkNfVVJJID0gImh0dHBzOi8vc291cmNld2FyZS5vcmcvZWxmdXRpbHMvZnRwLyR7UFZ9LyR7QlB9LnRhci5iejIiCi1TUkNfVVJJW21kNXN1bV0gPSAiNTJhZGZhNDA3NThkMGQzOWU1ZDVjNTc2ODliZjM4ZDYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjg4ZDA3ODkzYmExMzczYzdkZDY5YTc4NTU5NzQ3MDZkMDUzNzc3NjY1NjhhN2Q5MDAyNzA2ZDVkZTcyYzI3NiIKLQotU1JDX1VSSSArPSAiXAotICAgICAgICBmaWxlOi8vZHNvLWxpbmstY2hhbmdlLnBhdGNoIFwKLSAgICAgICAgZmlsZTovL0ZpeF9lbGZfY3Z0X2d1bmhhc2gucGF0Y2ggXAotICAgICAgICBmaWxlOi8vZml4aGVhZGVyY2hlY2sucGF0Y2ggXAotICAgICAgICBmaWxlOi8vMDAwMS1lbGZfZ2V0YXJzeW0tU2lsZW5jZS1XZXJyb3ItbWF5YmUtdW5pbml0aWFsaXplZC1mYWxzLnBhdGNoIFwKLSAgICAgICAgZmlsZTovLzAwMDEtcmVtb3ZlLXRoZS11bm5lZWQtY2hlY2tpbmcucGF0Y2ggXAotICAgICAgICBmaWxlOi8vMDAwMS1maXgtYS1zdGFjay11c2FnZS13YXJuaW5nLnBhdGNoIFwKLSAgICAgICAgZmlsZTovL2FhcmNoNjRfdWlvLnBhdGNoIFwKLSAgICAgICAgZmlsZTovL0ZpeF9vbmVfR0NDN193YXJuaW5nLnBhdGNoIFwKLSAgICAgICAgZmlsZTovL3NoYWRvdy5wYXRjaCBcCi0iCi0KLSMgcGljayB0aGUgcGF0Y2ggZnJvbSBkZWJpYW4KLSMgaHR0cDovL2Z0cC5kZS5kZWJpYW4ub3JnL2RlYmlhbi9wb29sL21haW4vZS9lbGZ1dGlscy9lbGZ1dGlsc18wLjE2OC0wLjIuZGViaWFuLnRhci54egotU1JDX1VSSSArPSAiXAotICAgICAgICBmaWxlOi8vZGViaWFuL2hwcGFfYmFja2VuZC5kaWZmIFwKLSAgICAgICAgZmlsZTovL2RlYmlhbi9hcm1fYmFja2VuZC5kaWZmIFwKLSAgICAgICAgZmlsZTovL2RlYmlhbi9taXBzX2JhY2tlbmQuZGlmZiBcCi0gICAgICAgIGZpbGU6Ly9kZWJpYW4vdGVzdHN1aXRlLWlnbm9yZS1lbGZsaW50LmRpZmYgXAotICAgICAgICBmaWxlOi8vZGViaWFuL21pcHNfcmVhZGVsZl93LnBhdGNoIFwKLSAgICAgICAgZmlsZTovL2RlYmlhbi9rZnJlZWJzZF9wYXRoLnBhdGNoIFwKLSAgICAgICAgZmlsZTovL2RlYmlhbi8wMDAxLUlnbm9yZS1kaWZmZXJlbmNlcy1iZXR3ZWVuLW1pcHMtbWFjaGluZS1pZGVudGlmaWVycy5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly9kZWJpYW4vMDAwMi1BZGQtc3VwcG9ydC1mb3ItbWlwczY0LWFiaXMtaW4tbWlwc19yZXR2YWwuYy5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly9kZWJpYW4vMDAwMy1BZGQtbWlwcy1uNjQtcmVsb2NhdGlvbi1mb3JtYXQtaGFjay5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly9kZWJpYW4vaHVyZF9wYXRoLnBhdGNoIFwKLSAgICAgICAgZmlsZTovL2RlYmlhbi9pZ25vcmVfc3RybWVyZ2UuZGlmZiBcCi0iCi0jIEZpeCB0aGUgcGF0Y2hlcyBmcm9tIERlYmlhbiB3aXRoIEdDQzcKLVNSQ19VUkkgKz0gImZpbGU6Ly9mYWxsdGhyb3VnaC5wYXRjaCIKLVNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZmlsZTovLzAwMDEtYnVpbGQtUHJvdmlkZS1hbHRlcm5hdGl2ZXMtZm9yLWdsaWJjLWFzc3VtcHRpb25zLWhlbC5wYXRjaCAiCi0KLSMgVGhlIGJ1aWxkc3lzdGVtIHdhbnRzIHRvIGdlbmVyYXRlIDIgLmggZmlsZXMgZnJvbSBzb3VyY2UgdXNpbmcgYSBiaW5hcnkgaXQganVzdCBidWlsdCwKLSMgd2hpY2ggY2FuIG5vdCBwYXNzIHRoZSBjcm9zcyBjb21waWxpbmcsIHNvIGxldCdzIHdvcmsgYXJvdW5kIGl0IGJ5IGFkZGluZyAyIC5oIGZpbGVzCi0jIGFsb25nIHdpdGggdGhlIGRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dAotCi1FWFRSQV9PRUNPTkYgPSAiLS1wcm9ncmFtLXByZWZpeD1ldS0gLS13aXRob3V0LWx6bWEiCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLS13aXRob3V0LWJ6bGliIgotRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLXVjbGliYyA9ICIgLS1lbmFibGUtdWNsaWJjIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlpZiBbICIke1RBUkdFVF9BUkNIfSIgIT0gIng4Nl82NCIgXSAmJiBbIC16IGBlY2hvICIke1RBUkdFVF9BUkNIfSJ8Z3JlcCAnaS44NidgIF07dGhlbgotCQlybSAtZiAke0R9JHtiaW5kaXJ9L2V1LW9iamR1bXAKLQlmaQotfQotCi0jIHdlIGNhbiBub3QgYnVpbGQgY29tcGxldGUgZWxmdXRpbHMgd2hlbiB1c2luZyB1Y2xpYmMKLSMgYnV0IHNvbWUgcmVjaXBlcyBlLmcuIGdjYyA0LjUgZGVwZW5kcyBvbiBsaWJlbGYgc28gd2UKLSMgYnVpbGQgb25seSBsaWJlbGYgZm9yIHVjbGliYyBjYXNlCi0KLUVYVFJBX09FTUFLRV9saWJjLXVjbGliYyA9ICItQyBsaWJlbGYiCi1FWFRSQV9PRU1BS0VfY2xhc3MtbmF0aXZlID0gIiIKLUVYVFJBX09FTUFLRV9jbGFzcy1uYXRpdmVzZGsgPSAiIgotCi1BTExPV19FTVBUWV8ke1BOfV9saWJjLW11c2wgPSAiMSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi0jIFBhY2thZ2UgdXRpbGl0aWVzIHNlcGFyYXRlbHkKLVBBQ0tBR0VTID0rICIke1BOfS1iaW51dGlscyBsaWJlbGYgbGliYXNtIGxpYmR3IgotRklMRVNfJHtQTn0tYmludXRpbHMgPSAiXAotICAgICR7YmluZGlyfS9ldS1hZGRyMmxpbmUgXAotICAgICR7YmluZGlyfS9ldS1sZCBcCi0gICAgJHtiaW5kaXJ9L2V1LW5tIFwKLSAgICAke2JpbmRpcn0vZXUtcmVhZGVsZiBcCi0gICAgJHtiaW5kaXJ9L2V1LXNpemUgXAotICAgICR7YmluZGlyfS9ldS1zdHJpcCIKLQotRklMRVNfbGliZWxmID0gIiR7bGliZGlyfS9saWJlbGYtJHtQVn0uc28gJHtsaWJkaXJ9L2xpYmVsZi5zby4qIgotRklMRVNfbGliYXNtID0gIiR7bGliZGlyfS9saWJhc20tJHtQVn0uc28gJHtsaWJkaXJ9L2xpYmFzbS5zby4qIgotRklMRVNfbGliZHcgID0gIiR7bGliZGlyfS9saWJkdy0ke1BWfS5zbyAke2xpYmRpcn0vbGliZHcuc28uKiAke2xpYmRpcn0vZWxmdXRpbHMvbGliKiIKLSMgU29tZSBwYWNrYWdlcyBoYXZlIHRoZSB2ZXJzaW9uIHByZWNlZWRpbmcgdGhlIC5zbyBpbnN0ZWFkIHByb3Blcmx5Ci0jIHZlcnNpb25lZCAuc28uPHZlcnNpb24+LCBzbyB3ZSBuZWVkIHRvIHJlb3JkZXIgYW5kIHJlcGFja2FnZS4KLSNGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9LyotJHtQVn0uc28gJHtiYXNlX2xpYmRpcn0vKi0ke1BWfS5zbyIKLSNGSUxFU19TT0xJQlNERVYgPSAiJHtsaWJkaXJ9L2xpYmFzbS5zbyAke2xpYmRpcn0vbGliZHcuc28gJHtsaWJkaXJ9L2xpYmVsZi5zbyIKLQotIyBUaGUgcGFja2FnZSBjb250YWlucyBzeW1saW5rcyB0aGF0IHRyaXAgdXAgaW5zYW5lCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmR3ID0gImRldi1zbyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHNfMC4xNzAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzXzAuMTcwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiODFlMjgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzXzAuMTcwLmJiCkBAIC0wLDAgKzEsNzkgQEAKK1NVTU1BUlkgPSAiVXRpbGl0aWVzIGFuZCBsaWJyYXJpZXMgZm9yIGhhbmRsaW5nIGNvbXBpbGVkIG9iamVjdCBmaWxlcyIKK0hPTUVQQUdFID0gImh0dHBzOi8vc291cmNld2FyZS5vcmcvZWxmdXRpbHMiCitTRUNUSU9OID0gImJhc2UiCitMSUNFTlNFID0gIihHUEx2MyAmIEVsZnV0aWxzLUV4Y2VwdGlvbikiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKK0RFUEVORFMgPSAibGlidG9vbCBiemlwMiB6bGliIHZpcnR1YWwvbGliaW50bCIKK0RFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgYXJncC1zdGFuZGFsb25lIGZ0cyAiCitTUkNfVVJJID0gImh0dHBzOi8vc291cmNld2FyZS5vcmcvZWxmdXRpbHMvZnRwLyR7UFZ9LyR7QlB9LnRhci5iejIiCitTUkNfVVJJW21kNXN1bV0gPSAiMDM1OTlhZWU5OGM5YjcyNmM3YTczMmEyZGQwMjQ1ZDUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWY4NDQ3NzU1NzZiNzliZGM5ZjljNzE3YTUwMDU4ZDA4NjIwMzIzYzFlOTM1NDU4MjIzYTEyZjI0OWM5ZTA2NiIKKworU1JDX1VSSSArPSAiXAorICAgICAgICBmaWxlOi8vMDAwMS1kc28tbGluay1jaGFuZ2UucGF0Y2ggXAorICAgICAgICBmaWxlOi8vMDAwMi1GaXgtZWxmX2N2dF9ndW5oYXNoLWlmLWRlc3QtYW5kLXNyYy1hcmUtc2FtZS5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly8wMDAzLWZpeGhlYWRlcmNoZWNrLnBhdGNoIFwKKyAgICAgICAgZmlsZTovLzAwMDQtRGlzYWJsZS10aGUtdGVzdC10by1jb252ZXJ0LWV1Yy1qcC5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly8wMDA1LWZpeC1hLXN0YWNrLXVzYWdlLXdhcm5pbmcucGF0Y2ggXAorICAgICAgICBmaWxlOi8vMDAwNi1GaXgtYnVpbGQtb24tYWFyY2g2NC1tdXNsLnBhdGNoIFwKKyAgICAgICAgZmlsZTovLzAwMDctRml4LWNvbnRyb2wtcGF0aC13aGVyZS13ZS1oYXZlLXN0ci1hcy11bmluaXRpYWxpemVkLS5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly8wMDAxLWxpYmFzbS1tYXktbGluay13aXRoLWxpYmJ6Mi1pZi1mb3VuZC5wYXRjaCBcCisiCitTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly8wMDA4LWJ1aWxkLVByb3ZpZGUtYWx0ZXJuYXRpdmVzLWZvci1nbGliYy1hc3N1bXB0aW9ucy1oZWwucGF0Y2giCisKKyMgUGljayBwYXRjaGVzIGZyb20gZGViaWFuCisjIGh0dHA6Ly9mdHAuZGUuZGViaWFuLm9yZy9kZWJpYW4vcG9vbC9tYWluL2UvZWxmdXRpbHMvZWxmdXRpbHNfMC4xNjgtMC4yLmRlYmlhbi50YXIueHoKK1NSQ19VUkkgKz0gIlwKKyAgICAgICAgZmlsZTovL2RlYmlhbi9ocHBhX2JhY2tlbmQuZGlmZiBcCisgICAgICAgIGZpbGU6Ly9kZWJpYW4vYXJtX2JhY2tlbmQuZGlmZiBcCisgICAgICAgIGZpbGU6Ly9kZWJpYW4vbWlwc19iYWNrZW5kLnBhdGNoIFwKKyAgICAgICAgZmlsZTovL2RlYmlhbi9taXBzX3JlYWRlbGZfdy5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly9kZWJpYW4vMDAwMS1JZ25vcmUtZGlmZmVyZW5jZXMtYmV0d2Vlbi1taXBzLW1hY2hpbmUtaWRlbnRpZmllcnMucGF0Y2ggXAorICAgICAgICBmaWxlOi8vZGViaWFuLzAwMDItQWRkLXN1cHBvcnQtZm9yLW1pcHM2NC1hYmlzLWluLW1pcHNfcmV0dmFsLmMucGF0Y2ggXAorICAgICAgICBmaWxlOi8vZGViaWFuLzAwMDMtQWRkLW1pcHMtbjY0LXJlbG9jYXRpb24tZm9ybWF0LWhhY2sucGF0Y2ggXAorIgorIyBGaXggdGhlIHBhdGNoZXMgZnJvbSBEZWJpYW4gd2l0aCBHQ0M3CitTUkNfVVJJICs9ICJmaWxlOi8vZGViaWFuL2ZhbGx0aHJvdWdoLnBhdGNoIgorCisjIFRoZSBidWlsZHN5c3RlbSB3YW50cyB0byBnZW5lcmF0ZSAyIC5oIGZpbGVzIGZyb20gc291cmNlIHVzaW5nIGEgYmluYXJ5IGl0IGp1c3QgYnVpbHQsCisjIHdoaWNoIGNhbiBub3QgcGFzcyB0aGUgY3Jvc3MgY29tcGlsaW5nLCBzbyBsZXQncyB3b3JrIGFyb3VuZCBpdCBieSBhZGRpbmcgMiAuaCBmaWxlcworIyBhbG9uZyB3aXRoIHRoZSBkb19jb25maWd1cmVfcHJlcGVuZCgpCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQKKworRVhUUkFfT0VDT05GID0gIi0tcHJvZ3JhbS1wcmVmaXg9ZXUtIC0td2l0aG91dC1sem1hIgorRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC0td2l0aG91dC1iemxpYiIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJaWYgWyAiJHtUQVJHRVRfQVJDSH0iICE9ICJ4ODZfNjQiIF0gJiYgWyAteiBgZWNobyAiJHtUQVJHRVRfQVJDSH0ifGdyZXAgJ2kuODYnYCBdO3RoZW4KKwkJcm0gLWYgJHtEfSR7YmluZGlyfS9ldS1vYmpkdW1wCisJZmkKK30KKworRVhUUkFfT0VNQUtFX2NsYXNzLW5hdGl2ZSA9ICIiCitFWFRSQV9PRU1BS0VfY2xhc3MtbmF0aXZlc2RrID0gIiIKKworQUxMT1dfRU1QVFlfJHtQTn1fbGliYy1tdXNsID0gIjEiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworIyBQYWNrYWdlIHV0aWxpdGllcyBzZXBhcmF0ZWx5CitQQUNLQUdFUyA9KyAiJHtQTn0tYmludXRpbHMgbGliZWxmIGxpYmFzbSBsaWJkdyIKK0ZJTEVTXyR7UE59LWJpbnV0aWxzID0gIlwKKyAgICAke2JpbmRpcn0vZXUtYWRkcjJsaW5lIFwKKyAgICAke2JpbmRpcn0vZXUtbGQgXAorICAgICR7YmluZGlyfS9ldS1ubSBcCisgICAgJHtiaW5kaXJ9L2V1LXJlYWRlbGYgXAorICAgICR7YmluZGlyfS9ldS1zaXplIFwKKyAgICAke2JpbmRpcn0vZXUtc3RyaXAiCisKK0ZJTEVTX2xpYmVsZiA9ICIke2xpYmRpcn0vbGliZWxmLSR7UFZ9LnNvICR7bGliZGlyfS9saWJlbGYuc28uKiIKK0ZJTEVTX2xpYmFzbSA9ICIke2xpYmRpcn0vbGliYXNtLSR7UFZ9LnNvICR7bGliZGlyfS9saWJhc20uc28uKiIKK0ZJTEVTX2xpYmR3ICA9ICIke2xpYmRpcn0vbGliZHctJHtQVn0uc28gJHtsaWJkaXJ9L2xpYmR3LnNvLiogJHtsaWJkaXJ9L2VsZnV0aWxzL2xpYioiCisjIFNvbWUgcGFja2FnZXMgaGF2ZSB0aGUgdmVyc2lvbiBwcmVjZWVkaW5nIHRoZSAuc28gaW5zdGVhZCBwcm9wZXJseQorIyB2ZXJzaW9uZWQgLnNvLjx2ZXJzaW9uPiwgc28gd2UgbmVlZCB0byByZW9yZGVyIGFuZCByZXBhY2thZ2UuCisjRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS8qLSR7UFZ9LnNvICR7YmFzZV9saWJkaXJ9LyotJHtQVn0uc28iCisjRklMRVNfU09MSUJTREVWID0gIiR7bGliZGlyfS9saWJhc20uc28gJHtsaWJkaXJ9L2xpYmR3LnNvICR7bGliZGlyfS9saWJlbGYuc28iCisKKyMgVGhlIHBhY2thZ2UgY29udGFpbnMgc3ltbGlua3MgdGhhdCB0cmlwIHVwIGluc2FuZQorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJkdyA9ICJkZXYtc28iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDEtZHNvLWxpbmstY2hhbmdlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAxLWRzby1saW5rLWNoYW5nZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOGM1N2YyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAxLWRzby1saW5rLWNoYW5nZS5wYXRjaApAQCAtMCwwICsxLDUyIEBACitGcm9tIDBhNjlhMjZjOWY3NDg3ZGFjYTkwMGRiODdjZDExOTU4NTdhNDYwM2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDE1IEF1ZyAyMDE3IDE3OjEwOjU3ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMS83XSBkc28gbGluayBjaGFuZ2UKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1RoaXMgcGF0Y2ggbWFrZXMgdGhlIGxpbmsgdG8gdGhlIGRlcGVuZGVuY2llcyBvZiBsaWJkdyBleHBsaWNpdCwgYXMKK3JlY2VudCBsZCBubyBsb25nZXIgaW1wbGljaXRseSBsaW5rcyB0aGVtLiBTZWUKK2h0dHA6Ly9saXN0cy5mZWRvcmFwcm9qZWN0Lm9yZy9waXBlcm1haWwvZGV2ZWwvMjAxMC1NYXJjaC8xMzM2MDEuaHRtbAorYXMgYSBzaW1pbGFyIGV4YW1wbGUgb2YgdGhlIGVycm9yIG1lc3NhZ2UgeW91IGNhbiBlbmNvdW50ZXIgd2l0aG91dCB0aGlzCitwYXRjaCwgYW5kIGh0dHBzOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9VbmRlcnN0YW5kaW5nRFNPTGlua0NoYW5nZSBhbmQKK2h0dHBzOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9GZWF0dXJlcy9DaGFuZ2VJbkltcGxpY2l0RFNPTGlua2luZyBmb3IKK21vcmUgZGV0YWlscy4KKworUmViYXNlIHRvIDAuMTcwCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9NYWtlZmlsZS5hbSAgIHwgMiArLQorIHRlc3RzL01ha2VmaWxlLmFtIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmFtIGIvc3JjL01ha2VmaWxlLmFtCitpbmRleCAyYjFjMGRjLi45MzA1Yjg0IDEwMDY0NAorLS0tIGEvc3JjL01ha2VmaWxlLmFtCisrKysgYi9zcmMvTWFrZWZpbGUuYW0KK0BAIC00NCw3ICs0NCw3IEBAIGxpYmR3ID0gLi4vbGliZHcvbGliZHcuYSAtbHogJCh6aXBfTElCUykgJChsaWJlbGYpICQobGliZWJsKSAtbGRsCisgbGliZWxmID0gLi4vbGliZWxmL2xpYmVsZi5hIC1segorIGVsc2UKKyBsaWJhc20gPSAuLi9saWJhc20vbGliYXNtLnNvCistbGliZHcgPSAuLi9saWJkdy9saWJkdy5zbworK2xpYmR3ID0gLi4vbGliZHcvbGliZHcuc28gJCh6aXBfTElCUykgJChsaWJlbGYpICQobGliZWJsKSAtbGRsCisgbGliZWxmID0gLi4vbGliZWxmL2xpYmVsZi5zbworIGVuZGlmCisgbGliZWJsID0gLi4vbGliZWJsL2xpYmVibC5hCitkaWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuYW0gYi90ZXN0cy9NYWtlZmlsZS5hbQoraW5kZXggMzczNTA4NC4uNTI4NjE1ZCAxMDA2NDQKKy0tLSBhL3Rlc3RzL01ha2VmaWxlLmFtCisrKysgYi90ZXN0cy9NYWtlZmlsZS5hbQorQEAgLTQwMCw3ICs0MDAsNyBAQCBsaWJkdyA9IC4uL2xpYmR3L2xpYmR3LmEgLWx6ICQoemlwX0xJQlMpICQobGliZWxmKSAkKGxpYmVibCkgLWxkbAorIGxpYmVsZiA9IC4uL2xpYmVsZi9saWJlbGYuYSAtbHoKKyBsaWJhc20gPSAuLi9saWJhc20vbGliYXNtLmEKKyBlbHNlCistbGliZHcgPSAuLi9saWJkdy9saWJkdy5zbworK2xpYmR3ID0gLi4vbGliZHcvbGliZHcuc28gJCh6aXBfTElCUykgJChsaWJlbGYpICQobGliZWJsKSAtbGRsCisgbGliZWxmID0gLi4vbGliZWxmL2xpYmVsZi5zbworIGxpYmFzbSA9IC4uL2xpYmFzbS9saWJhc20uc28KKyBlbmRpZgorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMS1saWJhc20tbWF5LWxpbmstd2l0aC1saWJiejItaWYtZm91bmQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDEtbGliYXNtLW1heS1saW5rLXdpdGgtbGliYnoyLWlmLWZvdW5kLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiMGIwNjAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDEtbGliYXNtLW1heS1saW5rLXdpdGgtbGliYnoyLWlmLWZvdW5kLnBhdGNoCkBAIC0wLDAgKzEsMzkgQEAKK0Zyb20gNzY3MmUzNjM0NjgyNzFiNGM2M2ZmNTg3NzBjNWFhYzE1YWI4ZjcyMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDQgT2N0IDIwMTcgMjI6MzA6NDYgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gbGliYXNtIG1heSBsaW5rIHdpdGggbGliYnoyIGlmIGZvdW5kCisKK1RoaXMgY2FuIGZhaWwgdG8gbGluayBiaW5hcmllcyBsaWtlIG9iamR1bXAKK3doZXJlIGluZGlyZWN0IGxpYnJhcmllcyBtYXkgYmUgbm90IGZvdW5kIGJ5IGxpbmtlcgorCit8IC9tbnQvYS9vZS9idWlsZC90bXAvd29yay9yaXNjdjY0LWJlYy1saW51eC9lbGZ1dGlscy8wLjE3MC1yMC9yZWNpcGUtc3lzcm9vdC91c3IvbGliL2xpYmJ6Mi5zby4xOiBlcnJvciBhZGRpbmcgc3ltYm9sczogRFNPIG1pc3NpbmcgZnJvbSBjb21tYW5kIGxpbmUKK3wgY29sbGVjdDI6IGVycm9yOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgc3JjL01ha2VmaWxlLmFtIHwgNiArKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmFtIGIvc3JjL01ha2VmaWxlLmFtCitpbmRleCBlMDNiYzMyLi45YjdlODUzIDEwMDY0NAorLS0tIGEvc3JjL01ha2VmaWxlLmFtCisrKysgYi9zcmMvTWFrZWZpbGUuYW0KK0BAIC0zOSwxMSArMzksMTEgQEAgRVhUUkFfRElTVCArPSBtYWtlLWRlYnVnLWFyY2hpdmUuaW4KKyBDTEVBTkZJTEVTICs9IG1ha2UtZGVidWctYXJjaGl2ZQorIAorIGlmIEJVSUxEX1NUQVRJQworLWxpYmFzbSA9IC4uL2xpYmFzbS9saWJhc20uYQorK2xpYmFzbSA9IC4uL2xpYmFzbS9saWJhc20uYSAkKHppcF9MSUJTKQorIGxpYmR3ID0gLi4vbGliZHcvbGliZHcuYSAtbHogJCh6aXBfTElCUykgJChsaWJlbGYpICQobGliZWJsKSAtbGRsCisgbGliZWxmID0gLi4vbGliZWxmL2xpYmVsZi5hIC1segorIGVsc2UKKy1saWJhc20gPSAuLi9saWJhc20vbGliYXNtLnNvCisrbGliYXNtID0gLi4vbGliYXNtL2xpYmFzbS5zbyAkKHppcF9MSUJTKQorIGxpYmR3ID0gLi4vbGliZHcvbGliZHcuc28gJCh6aXBfTElCUykgJChsaWJlbGYpICQobGliZWJsKSAtbGRsCisgbGliZWxmID0gLi4vbGliZWxmL2xpYmVsZi5zbworIGVuZGlmCistLSAKKzIuMTQuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDItRml4LWVsZl9jdnRfZ3VuaGFzaC1pZi1kZXN0LWFuZC1zcmMtYXJlLXNhbWUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDItRml4LWVsZl9jdnRfZ3VuaGFzaC1pZi1kZXN0LWFuZC1zcmMtYXJlLXNhbWUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmY3MThlYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMi1GaXgtZWxmX2N2dF9ndW5oYXNoLWlmLWRlc3QtYW5kLXNyYy1hcmUtc2FtZS5wYXRjaApAQCAtMCwwICsxLDQyIEBACitGcm9tIGU5ODY3MGY3YzdiNGM3M2ZiNjU1MzQ5NDk3MTZmZDhkMDQzOTYwZDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDE1IEF1ZyAyMDE3IDE3OjEzOjU5ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMi83XSBGaXggZWxmX2N2dF9ndW5oYXNoIGlmIGRlc3QgYW5kIHNyYyBhcmUgc2FtZS4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1RoZSAnZGVzdCcgYW5kICdzcmMnIGNhbiBiZSBzYW1lLCB3ZSBuZWVkIHRvIHNhdmUgdGhlIHZhbHVlIG9mIHNyYzMyWzJdCitiZWZvcmUgc3dhcGluZyBpdC4KKworU2lnbmVkLW9mZi1ieTogQmFvc2hhbiBQYW5nIDxCYW9TaGFuLlBhbmdAd2luZHJpdmVyLmNvbT4KKworUmViYXNlIHRvIDAuMTcwCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBsaWJlbGYvZ251aGFzaF94bGF0ZS5oIHwgMyArKy0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9saWJlbGYvZ251aGFzaF94bGF0ZS5oIGIvbGliZWxmL2dudWhhc2hfeGxhdGUuaAoraW5kZXggNmZhZjExMy4uMDRkOWNhMSAxMDA2NDQKKy0tLSBhL2xpYmVsZi9nbnVoYXNoX3hsYXRlLmgKKysrKyBiL2xpYmVsZi9nbnVoYXNoX3hsYXRlLmgKK0BAIC00MCw2ICs0MCw3IEBAIGVsZl9jdnRfZ251aGFzaCAodm9pZCAqZGVzdCwgY29uc3Qgdm9pZCAqc3JjLCBzaXplX3QgbGVuLCBpbnQgZW5jb2RlKQorICAgICAgd29yZHMuICBXZSBtdXN0IGRldGFuZ2xlIHRoZW0gaGVyZS4gICAqLworICAgRWxmMzJfV29yZCAqZGVzdDMyID0gZGVzdDsKKyAgIGNvbnN0IEVsZjMyX1dvcmQgKnNyYzMyID0gc3JjOworKyAgRWxmMzJfV29yZCBzYXZlX3NyYzMyXzIgPSBzcmMzMlsyXTsgLy8gZGVzdCBjb3VsZCBiZSBlcXVhbCB0byBzcmMKKyAKKyAgIC8qIEZpcnN0IGZvdXIgY29udHJvbCB3b3JkcywgMzIgYml0cy4gICovCisgICBmb3IgKHVuc2lnbmVkIGludCBjbnQgPSAwOyBjbnQgPCA0OyArK2NudCkKK0BAIC01MCw3ICs1MSw3IEBAIGVsZl9jdnRfZ251aGFzaCAodm9pZCAqZGVzdCwgY29uc3Qgdm9pZCAqc3JjLCBzaXplX3QgbGVuLCBpbnQgZW5jb2RlKQorICAgICAgIGxlbiAtPSA0OworICAgICB9CisgCistICBFbGYzMl9Xb3JkIGJpdG1hc2tfd29yZHMgPSBlbmNvZGUgPyBzcmMzMlsyXSA6IGRlc3QzMlsyXTsKKysgIEVsZjMyX1dvcmQgYml0bWFza193b3JkcyA9IGVuY29kZSA/IHNhdmVfc3JjMzJfMiA6IGRlc3QzMlsyXTsKKyAKKyAgIC8qIE5vdyB0aGUgNjQgYml0IHdvcmRzLiAgKi8KKyAgIEVsZjY0X1h3b3JkICpkZXN0NjQgPSAoRWxmNjRfWHdvcmQgKikgJmRlc3QzMls0XTsKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDMtZml4aGVhZGVyY2hlY2sucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDMtZml4aGVhZGVyY2hlY2sucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2M0OWZjZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMy1maXhoZWFkZXJjaGVjay5wYXRjaApAQCAtMCwwICsxLDQwIEBACitGcm9tIDU2NWQ1OTM1YWJmNWI1ODc3M2Y5YzgzODVjMDAxODkyMjE5ODBkOTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDE1IEF1ZyAyMDE3IDE3OjE3OjIwICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMy83XSBmaXhoZWFkZXJjaGVjaworCitGb3Igc29tZSBiaW5hcmllcyB3ZSBjYW4gZ2V0IGEgaW52YWxpZCBzZWN0aW9uIGFsaWdubWVudCwgZm9yIGV4YW1wbGUgaWYKK3NoX2FsaWduID0gMSBhbmQgc2hfYWRkcmFsaWduIGlzIDAuIEluIHRoZSBjYXNlIG9mIGEgemVybyBzaXplIHNlY3Rpb24KK2xpa2UKKyIubm90ZS5HTlUtc3RhY2siLCB0aGlzIGlzIGlycmVsYXZlbnQgYXMgZmFyIGFzIEkgY2FuIHRlbGwgYW5kIHdlCitzaG91bGRuJ3QKK2Vycm9yIGluIHRoaXMgY2FzZS4KKworUlAgMjAxNC82LzExCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitSZWJhc2UgdG8gMC4xNzAKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGxpYmVsZi9lbGYzMl91cGRhdGVudWxsLmMgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliZWxmL2VsZjMyX3VwZGF0ZW51bGwuYyBiL2xpYmVsZi9lbGYzMl91cGRhdGVudWxsLmMKK2luZGV4IGQ4M2MwYjMuLmE1MWJmNzAgMTAwNjQ0CistLS0gYS9saWJlbGYvZWxmMzJfdXBkYXRlbnVsbC5jCisrKysgYi9saWJlbGYvZWxmMzJfdXBkYXRlbnVsbC5jCitAQCAtMzM5LDggKzMzOSw4IEBAIF9fZWxmdzIoTElCRUxGQklUUyx1cGRhdGVudWxsX3dybG9jaykgKEVsZiAqZWxmLCBpbnQgKmNoYW5nZV9ib3AsIHNpemVfdCBzaG51bSkKKyAJCSAgICAgd2UgdGVzdCBmb3IgdGhlIGFsaWdubWVudCBvZiB0aGUgc2VjdGlvbiBiZWluZyBsYXJnZQorIAkJICAgICBlbm91Z2ggZm9yIHRoZSBsYXJnZXN0IGFsaWdubWVudCByZXF1aXJlZCBieSBhIGRhdGEKKyAJCSAgICAgYmxvY2suICAqLworLQkJICBpZiAodW5saWtlbHkgKCEgcG93ZXJvZjIgKHNoZHItPnNoX2FkZHJhbGlnbikpCistCQkgICAgICB8fCB1bmxpa2VseSAoKHNoZHItPnNoX2FkZHJhbGlnbiA/OiAxKSA8IHNoX2FsaWduKSkKKysJCSAgaWYgKHNoZHItPnNoX3NpemUgJiYgKHVubGlrZWx5ICghIHBvd2Vyb2YyIChzaGRyLT5zaF9hZGRyYWxpZ24pKQorKwkJICAgICAgfHwgdW5saWtlbHkgKChzaGRyLT5zaF9hZGRyYWxpZ24gPzogMSkgPCBzaF9hbGlnbikpKQorIAkJICAgIHsKKyAJCSAgICAgIF9fbGliZWxmX3NldGVycm5vIChFTEZfRV9JTlZBTElEX0FMSUdOKTsKKyAJCSAgICAgIHJldHVybiAtMTsKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDQtRGlzYWJsZS10aGUtdGVzdC10by1jb252ZXJ0LWV1Yy1qcC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwNC1EaXNhYmxlLXRoZS10ZXN0LXRvLWNvbnZlcnQtZXVjLWpwLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4OTNhZDYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDQtRGlzYWJsZS10aGUtdGVzdC10by1jb252ZXJ0LWV1Yy1qcC5wYXRjaApAQCAtMCwwICsxLDQ0IEBACitGcm9tIGJiN2VkMTE5NTAxMDE3OThhYWU4MmY3ZmRhOGIzZGNiMDVmNzU1YzUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDE1IEF1ZyAyMDE3IDE3OjI0OjA2ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggNC83XSBEaXNhYmxlIHRoZSB0ZXN0IHRvIGNvbnZlcnQgZXVjLWpwCisKK1JlbW92ZSB0aGUgdGVzdCAiVGVzdCBhZ2FpbnN0IEhQLVVYIDExLjExIGJ1ZzoKK05vIGNvbnZlcnRlciBmcm9tIEVVQy1KUCB0byBVVEYtOCBpcyBwcm92aWRlZCIKK3NpbmNlIHdlIGRvbid0IHN1cHBvcnQgSFAtVVggYW5kIGlmIHRoZSBldWMtanAgaXMgbm90CitpbnN0YWxsZWQgb24gdGhlIGhvc3QsIHRoZSBkZXBlbmRlbmNlIHdpbGwgYmUgYnVpbHQgd2l0aG91dAoraWNvbnYgc3VwcG9ydCBhbmQgd2lsbCBjYXVzZSBndWlsZC1uYXRpdmUgYnVpbGRpbmcgZmFpbC4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogUm95IExpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgorCitSZWJhc2UgdG8gMC4xNzAKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIG00L2ljb252Lm00IHwgMiArKworIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL200L2ljb252Lm00IGIvbTQvaWNvbnYubTQKK2luZGV4IGE1MDM2NDYuLjI5OWYxZWIgMTAwNjQ0CistLS0gYS9tNC9pY29udi5tNAorKysrIGIvbTQvaWNvbnYubTQKK0BAIC0xNTksNiArMTU5LDcgQEAgaW50IG1haW4gKCkKKyAgICAgICB9CisgICB9CisgI2VuZGlmCisrI2lmIDAKKyAgIC8qIFRlc3QgYWdhaW5zdCBIUC1VWCAxMS4xMSBidWc6IE5vIGNvbnZlcnRlciBmcm9tIEVVQy1KUCB0byBVVEYtOCBpcworICAgICAgcHJvdmlkZWQuICAqLworICAgaWYgKC8qIFRyeSBzdGFuZGFyZGl6ZWQgbmFtZXMuICAqLworQEAgLTE3MCw2ICsxNzEsNyBAQCBpbnQgbWFpbiAoKQorICAgICAgIC8qIFRyeSBIUC1VWCBuYW1lcy4gICovCisgICAgICAgJiYgaWNvbnZfb3BlbiAoInV0ZjgiLCAiZXVjSlAiKSA9PSAoaWNvbnZfdCkoLTEpKQorICAgICByZXN1bHQgfD0gMTY7CisrI2VuZGlmCisgICByZXR1cm4gcmVzdWx0OworIH1dXSldLAorICAgICAgICAgW2FtX2N2X2Z1bmNfaWNvbnZfd29ya3M9eWVzXSwKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDUtZml4LWEtc3RhY2stdXNhZ2Utd2FybmluZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwNS1maXgtYS1zdGFjay11c2FnZS13YXJuaW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyYTAxY2YKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDUtZml4LWEtc3RhY2stdXNhZ2Utd2FybmluZy5wYXRjaApAQCAtMCwwICsxLDM1IEBACitGcm9tIGRkNmRiZjZhZjM5NjUxOTM4MGY0OGMwZWYxY2U2Y2Y0ZGQ3N2Y2ZDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDE1IEF1ZyAyMDE3IDE3OjI1OjE2ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggNS83XSBmaXggYSBzdGFjay11c2FnZSB3YXJuaW5nCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitub3QgdXNlIGEgdmFyaWFibGUgdG8gYXMgYSBhcnJheSBzaXplLCBvdGhlcndpc2UgdGhlIHdhcm5pbmcgdG8gZXJyb3IKK3RoYXQKK3N0YWNrIHVzYWdlIG1pZ2h0IGJlIHVuYm91bmRlZCBbLVdlcnJvcj1zdGFjay11c2FnZT1dIHdpbGwgaGFwcGVuCisKK1NpZ25lZC1vZmYtYnk6IFJveSBMaSA8cm9uZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKworUmViYXNlIHRvIDAuMTcwCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBiYWNrZW5kcy9wcGNfaW5pdHJlZy5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvYmFja2VuZHMvcHBjX2luaXRyZWcuYyBiL2JhY2tlbmRzL3BwY19pbml0cmVnLmMKK2luZGV4IDY5ZDYyM2IuLmRlNDFkZWMgMTAwNjQ0CistLS0gYS9iYWNrZW5kcy9wcGNfaW5pdHJlZy5jCisrKysgYi9iYWNrZW5kcy9wcGNfaW5pdHJlZy5jCitAQCAtOTMsNyArOTMsNyBAQCBwcGNfc2V0X2luaXRpYWxfcmVnaXN0ZXJzX3RpZCAocGlkX3QgdGlkIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKKyAJcmV0dXJuIGZhbHNlOworICAgICB9CisgICBjb25zdCBzaXplX3QgZ3BycyA9IHNpemVvZiAodXNlcl9yZWdzLnIuZ3ByKSAvIHNpemVvZiAoKnVzZXJfcmVncy5yLmdwcik7CistICBEd2FyZl9Xb3JkIGR3YXJmX3JlZ3NbZ3Byc107CisrICBEd2FyZl9Xb3JkIGR3YXJmX3JlZ3Nbc2l6ZW9mICh1c2VyX3JlZ3Muci5ncHIpIC8gc2l6ZW9mICgqdXNlcl9yZWdzLnIuZ3ByKV07CisgICBmb3IgKHVuc2lnbmVkIGdwciA9IDA7IGdwciA8IGdwcnM7IGdwcisrKQorICAgICBkd2FyZl9yZWdzW2dwcl0gPSB1c2VyX3JlZ3Muci5ncHJbZ3ByXTsKKyAgIGlmICghIHNldGZ1bmMgKDAsIGdwcnMsIGR3YXJmX3JlZ3MsIGFyZykpCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDA2LUZpeC1idWlsZC1vbi1hYXJjaDY0LW11c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDYtRml4LWJ1aWxkLW9uLWFhcmNoNjQtbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZjI5YTAzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDA2LUZpeC1idWlsZC1vbi1hYXJjaDY0LW11c2wucGF0Y2gKQEAgLTAsMCArMSw2MSBAQAorRnJvbSBlNTdhZDQ3ZmM4NTQ5MzUzY2E4MGMyM2I5YjRmMzhmMzFmZGUxM2U1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAxNSBBdWcgMjAxNyAxNzoyNzozMCArMDgwMAorU3ViamVjdDogW1BBVENIIDYvN10gRml4IGJ1aWxkIG9uIGFhcmNoNjQvbXVzbAorCitFcnJvcnMKKworaW52YWxpZCBvcGVyYW5kcyB0byBiaW5hcnkgJiAoaGF2ZSAnbG9uZyBkb3VibGUnIGFuZCAndW5zaWduZWQgaW50JykKKworZXJyb3I6IHJlZGVmaW5pdGlvbgorIG9mICdzdHJ1Y3QgaW92ZWMnCisgc3RydWN0IGlvdmVjIHsgdm9pZCAqaW92X2Jhc2U7IHNpemVfdCBpb3ZfbGVuOyB9OworICAgICAgICBeCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1JlYmFzZSB0byAwLjE3MAorU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgYmFja2VuZHMvYWFyY2g2NF9pbml0cmVnLmMgfCA0ICsrLS0KKyBiYWNrZW5kcy9hcm1faW5pdHJlZy5jICAgICB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2JhY2tlbmRzL2FhcmNoNjRfaW5pdHJlZy5jIGIvYmFja2VuZHMvYWFyY2g2NF9pbml0cmVnLmMKK2luZGV4IGRhZjZmMzcuLjY0NDUyNzYgMTAwNjQ0CistLS0gYS9iYWNrZW5kcy9hYXJjaDY0X2luaXRyZWcuYworKysrIGIvYmFja2VuZHMvYWFyY2g2NF9pbml0cmVnLmMKK0BAIC0zMyw3ICszMyw3IEBACisgI2luY2x1ZGUgInN5c3RlbS5oIgorICNpbmNsdWRlIDxhc3NlcnQuaD4KKyAjaWYgZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgZGVmaW5lZChfX2xpbnV4X18pCistIyBpbmNsdWRlIDxsaW51eC91aW8uaD4KKysjIGluY2x1ZGUgPHN5cy91aW8uaD4KKyAjIGluY2x1ZGUgPHN5cy91c2VyLmg+CisgIyBpbmNsdWRlIDxzeXMvcHRyYWNlLmg+CisgLyogRGVhbCB3aXRoIG9sZCBnbGliYyBkZWZpbmluZyB1c2VyX3B0X3JlZ3MgaW5zdGVhZCBvZiB1c2VyX3JlZ3Nfc3RydWN0LiAgKi8KK0BAIC04Miw3ICs4Miw3IEBAIGFhcmNoNjRfc2V0X2luaXRpYWxfcmVnaXN0ZXJzX3RpZCAocGlkX3QgdGlkIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKKyAKKyAgIER3YXJmX1dvcmQgZHdhcmZfZnJlZ3NbMzJdOworICAgZm9yIChpbnQgciA9IDA7IHIgPCAzMjsgcisrKQorLSAgICBkd2FyZl9mcmVnc1tyXSA9IGZyZWdzLnZyZWdzW3JdICYgMHhGRkZGRkZGRjsKKysgICAgZHdhcmZfZnJlZ3Nbcl0gPSAodW5zaWduZWQgaW50KWZyZWdzLnZyZWdzW3JdICYgMHhGRkZGRkZGRjsKKyAKKyAgIGlmICghIHNldGZ1bmMgKDY0LCAzMiwgZHdhcmZfZnJlZ3MsIGFyZykpCisgICAgIHJldHVybiBmYWxzZTsKK2RpZmYgLS1naXQgYS9iYWNrZW5kcy9hcm1faW5pdHJlZy5jIGIvYmFja2VuZHMvYXJtX2luaXRyZWcuYworaW5kZXggZWZjYWJhZi4uMDYyYmI5ZSAxMDA2NDQKKy0tLSBhL2JhY2tlbmRzL2FybV9pbml0cmVnLmMKKysrKyBiL2JhY2tlbmRzL2FybV9pbml0cmVnLmMKK0BAIC0zOCw3ICszOCw3IEBACisgI2VuZGlmCisgCisgI2lmZGVmIF9fYWFyY2g2NF9fCistIyBpbmNsdWRlIDxsaW51eC91aW8uaD4KKysjIGluY2x1ZGUgPHN5cy91aW8uaD4KKyAjIGluY2x1ZGUgPHN5cy91c2VyLmg+CisgIyBpbmNsdWRlIDxzeXMvcHRyYWNlLmg+CisgLyogRGVhbCB3aXRoIG9sZCBnbGliYyBkZWZpbmluZyB1c2VyX3B0X3JlZ3MgaW5zdGVhZCBvZiB1c2VyX3JlZ3Nfc3RydWN0LiAgKi8KKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDctRml4LWNvbnRyb2wtcGF0aC13aGVyZS13ZS1oYXZlLXN0ci1hcy11bmluaXRpYWxpemVkLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwNy1GaXgtY29udHJvbC1wYXRoLXdoZXJlLXdlLWhhdmUtc3RyLWFzLXVuaW5pdGlhbGl6ZWQtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyNDc3MDQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDctRml4LWNvbnRyb2wtcGF0aC13aGVyZS13ZS1oYXZlLXN0ci1hcy11bmluaXRpYWxpemVkLS5wYXRjaApAQCAtMCwwICsxLDQ1IEBACitGcm9tIDFlOTFjMWQ0ZTM3YzA1Y2Y5NTA1OGI0YjNjM2YzNTJkNzI4ODZmNTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDE1IEF1ZyAyMDE3IDE3OjMxOjM4ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggNy83XSBGaXggY29udHJvbCBwYXRoIHdoZXJlIHdlIGhhdmUgc3RyIGFzIHVuaW5pdGlhbGl6ZWQKKyBzdHJpbmcKKworfAorL2hvbWUvdWJ1bnR1L3dvcmsvb2Uvb3BlbmVtYmVkZGVkLWNvcmUvYnVpbGQvdG1wLW11c2wvd29yay9pNTg2LW9lLWxpbnV4LW11c2wvZWxmdXRpbHMvMC4xNjQtcjAvZWxmdXRpbHMtMC4xNjQvbGliY3B1L2kzODZfZGlzYXNtLmM6CitJbiBmdW5jdGlvbiAnaTM4Nl9kaXNhc20nOgorfAorL2hvbWUvdWJ1bnR1L3dvcmsvb2Uvb3BlbmVtYmVkZGVkLWNvcmUvYnVpbGQvdG1wLW11c2wvd29yay9pNTg2LW9lLWxpbnV4LW11c2wvZWxmdXRpbHMvMC4xNjQtcjAvZWxmdXRpbHMtMC4xNjQvbGliY3B1L2kzODZfZGlzYXNtLmM6MzEwOjU6CitlcnJvcjogJ3N0cicgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCBpbiB0aGlzIGZ1bmN0aW9uCitbLVdlcnJvcj1tYXliZS11bmluaXRpYWxpemVkXQorfCAgICAgIG1lbWNweSAoYnVmICsgYnVmY250LCBfc3RyLCBfbGVuKTsgICAgICAgICAgIFwKK3wgICAgICBeCit8CisvaG9tZS91YnVudHUvd29yay9vZS9vcGVuZW1iZWRkZWQtY29yZS9idWlsZC90bXAtbXVzbC93b3JrL2k1ODYtb2UtbGludXgtbXVzbC9lbGZ1dGlscy8wLjE2NC1yMC9lbGZ1dGlscy0wLjE2NC9saWJjcHUvaTM4Nl9kaXNhc20uYzo3MDk6MTc6Citub3RlOiAnc3RyJyB3YXMgZGVjbGFyZWQgaGVyZQorfCAgICAgIGNvbnN0IGNoYXIgKnN0cjsKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitSZWJhc2UgdG8gMC4xNzAKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgbGliY3B1L2kzODZfZGlzYXNtLmMgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL2xpYmNwdS9pMzg2X2Rpc2FzbS5jIGIvbGliY3B1L2kzODZfZGlzYXNtLmMKK2luZGV4IDgzMWFmYmUuLjYwZmQ2ZDQgMTAwNjQ0CistLS0gYS9saWJjcHUvaTM4Nl9kaXNhc20uYworKysrIGIvbGliY3B1L2kzODZfZGlzYXNtLmMKK0BAIC04MjEsNiArODIxLDcgQEAgaTM4Nl9kaXNhc20gKEVibCAqZWJsIF9fYXR0cmlidXRlX18oKHVudXNlZCkpLAorIAkJCSAgICB9CisgCQkJICAvKiBGYWxsdGhyb3VnaCAqLworIAkJCWRlZmF1bHQ6CisrCQkJICBzdHIgPSAiIjsKKyAJCQkgIGFzc2VydCAoISAiSU5WQUxJRCBub3QgaGFuZGxlZCIpOworIAkJCX0KKyAJCSAgICB9CistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDA4LWJ1aWxkLVByb3ZpZGUtYWx0ZXJuYXRpdmVzLWZvci1nbGliYy1hc3N1bXB0aW9ucy1oZWwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDgtYnVpbGQtUHJvdmlkZS1hbHRlcm5hdGl2ZXMtZm9yLWdsaWJjLWFzc3VtcHRpb25zLWhlbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODY0ZDQ0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDA4LWJ1aWxkLVByb3ZpZGUtYWx0ZXJuYXRpdmVzLWZvci1nbGliYy1hc3N1bXB0aW9ucy1oZWwucGF0Y2gKQEAgLTAsMCArMSwxMDMxIEBACitGcm9tIDAxMGIwYzU3ZTc0ODQ0MGViMWNlYjNkOTc3ODc1ZjI0ODhkMmI0Y2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxNiBBdWcgMjAxNyAxMDowNjoyNiArMDgwMAorU3ViamVjdDogW1BBVENIXSBidWlsZDogUHJvdmlkZSBhbHRlcm5hdGl2ZXMgZm9yIGdsaWJjIGFzc3VtcHRpb25zIGhlbHBzCisgY29tcGlsaW5nIGl0IG9uIG11c2wKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitSZWJhc2UgdG8gMC4xNzAKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQorIGxpYi9jb2xvci5jICAgICAgICAgICAgICAgICAgICAgIHwgIDMgKystCisgbGliL2ZpeGVkc2l6ZWhhc2guaCAgICAgICAgICAgICAgfCAgMSAtCisgbGliL3N5c3RlbS5oICAgICAgICAgICAgICAgICAgICAgfCAxMCArKysrKysrKysrCisgbGliL3htYWxsb2MuYyAgICAgICAgICAgICAgICAgICAgfCAgMiArLQorIGxpYmFzbS9hc21fZW5kLmMgICAgICAgICAgICAgICAgIHwgIDIgKy0KKyBsaWJhc20vYXNtX25ld3Njbi5jICAgICAgICAgICAgICB8ICAyICstCisgbGliY3B1L2kzODZfZ2VuZGlzLmMgICAgICAgICAgICAgfCAgMiArLQorIGxpYmNwdS9pMzg2X2xleC5jICAgICAgICAgICAgICAgIHwgIDIgKy0KKyBsaWJjcHUvaTM4Nl9wYXJzZS5jICAgICAgICAgICAgICB8ICAyICstCisgbGliZHcvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgfCAgMyArKy0KKyBsaWJkdy9saWJkd19hbGxvYy5jICAgICAgICAgICAgICB8ICAyICstCisgbGliZHdmbC9kd2ZsX2J1aWxkX2lkX2ZpbmRfZWxmLmMgfCAgMyArKy0KKyBsaWJkd2ZsL2R3ZmxfZXJyb3IuYyAgICAgICAgICAgICB8ICA0ICsrKy0KKyBsaWJkd2ZsL2R3ZmxfbW9kdWxlX2dldGR3YXJmLmMgICB8ICAxICsKKyBsaWJkd2ZsL2ZpbmQtZGVidWdpbmZvLmMgICAgICAgICB8ICAyICstCisgbGliZHdmbC9saWJkd2ZsX2NyYzMyX2ZpbGUuYyAgICAgfCAgOSArKysrKysrKysKKyBsaWJkd2ZsL2xpbnV4LWtlcm5lbC1tb2R1bGVzLmMgICB8ICAxICsKKyBsaWJlYmwvZWJsb3BlbmJhY2tlbmQuYyAgICAgICAgICB8ICAyICstCisgbGliZWxmL2VsZi5oICAgICAgICAgICAgICAgICAgICAgfCAgOCArKysrKystLQorIGxpYmVsZi9saWJlbGYuaCAgICAgICAgICAgICAgICAgIHwgIDEgKworIGxpYmVsZi9saWJlbGZQLmggICAgICAgICAgICAgICAgIHwgIDEgKworIHNyYy9hZGRyMmxpbmUuYyAgICAgICAgICAgICAgICAgIHwgIDIgKy0KKyBzcmMvYXIuYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCisgc3JjL2FybGliLmMgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQorIHNyYy9hcmxpYjIuYyAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KKyBzcmMvZWxmY21wLmMgICAgICAgICAgICAgICAgICAgICB8ICAyICstCisgc3JjL2VsZmxpbnQuYyAgICAgICAgICAgICAgICAgICAgfCAgMiArLQorIHNyYy9maW5kdGV4dHJlbC5jICAgICAgICAgICAgICAgIHwgIDIgKy0KKyBzcmMvbm0uYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCisgc3JjL29iamR1bXAuYyAgICAgICAgICAgICAgICAgICAgfCAgMiArLQorIHNyYy9yYW5saWIuYyAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KKyBzcmMvcmVhZGVsZi5jICAgICAgICAgICAgICAgICAgICB8ICAyICstCisgc3JjL3NpemUuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQorIHNyYy9zdGFjay5jICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KKyBzcmMvc3RyaW5ncy5jICAgICAgICAgICAgICAgICAgICB8ICAyICstCisgc3JjL3N0cmlwLmMgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQorIHNyYy91bnN0cmlwLmMgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KKyB0ZXN0cy9hZGRyc2NvcGVzLmMgICAgICAgICAgICAgICB8ICAyICstCisgdGVzdHMvYWxscmVncy5jICAgICAgICAgICAgICAgICAgfCAgMiArLQorIHRlc3RzL2JhY2t0cmFjZS1kYXRhLmMgICAgICAgICAgIHwgIDIgKy0KKyB0ZXN0cy9iYWNrdHJhY2UtZHdhcmYuYyAgICAgICAgICB8ICAyICstCisgdGVzdHMvYmFja3RyYWNlLmMgICAgICAgICAgICAgICAgfCAgMiArLQorIHRlc3RzL2J1aWxkaWQuYyAgICAgICAgICAgICAgICAgIHwgIDIgKy0KKyB0ZXN0cy9kZWJ1Z2FsdGxpbmsuYyAgICAgICAgICAgICB8ICAyICstCisgdGVzdHMvZGVidWdsaW5rLmMgICAgICAgICAgICAgICAgfCAgMiArLQorIHRlc3RzL2RlbGV0ZWQuYyAgICAgICAgICAgICAgICAgIHwgIDIgKy0KKyB0ZXN0cy9kd2ZsLWFkZHItc2VjdC5jICAgICAgICAgICB8ICAyICstCisgdGVzdHMvZHdmbC1idWctYWRkci1vdmVyZmxvdy5jICAgfCAgMiArLQorIHRlc3RzL2R3ZmwtYnVnLWZkLWxlYWsuYyAgICAgICAgIHwgIDIgKy0KKyB0ZXN0cy9kd2ZsLWJ1Zy1nZXRtb2R1bGVzLmMgICAgICB8ICAyICstCisgdGVzdHMvZHdmbC1yZXBvcnQtZWxmLWFsaWduLmMgICAgfCAgMiArLQorIHRlc3RzL2R3ZmxsaW5lcy5jICAgICAgICAgICAgICAgIHwgIDIgKy0KKyB0ZXN0cy9kd2ZsbW9kdGVzdC5jICAgICAgICAgICAgICB8ICAyICstCisgdGVzdHMvZHdmbHN5bXMuYyAgICAgICAgICAgICAgICAgfCAgMiArLQorIHRlc3RzL2Vhcmx5LW9mZnNjbi5jICAgICAgICAgICAgIHwgIDIgKy0KKyB0ZXN0cy9lY3AuYyAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCisgdGVzdHMvZmluZC1wcm9sb2d1ZXMuYyAgICAgICAgICAgfCAgMiArLQorIHRlc3RzL2Z1bmNyZXR2YWwuYyAgICAgICAgICAgICAgIHwgIDIgKy0KKyB0ZXN0cy9mdW5jc2NvcGVzLmMgICAgICAgICAgICAgICB8ICAyICstCisgdGVzdHMvZ2V0c3JjX2RpZS5jICAgICAgICAgICAgICAgfCAgMiArLQorIHRlc3RzL2xpbmUyYWRkci5jICAgICAgICAgICAgICAgIHwgIDIgKy0KKyB0ZXN0cy9sb3dfaGlnaF9wYy5jICAgICAgICAgICAgICB8ICAyICstCisgdGVzdHMvbWQ1LXNoYTEtdGVzdC5jICAgICAgICAgICAgfCAgMiArLQorIHRlc3RzL3Jkd3JtbWFwLmMgICAgICAgICAgICAgICAgIHwgIDIgKy0KKyB0ZXN0cy9zYXJpZHguYyAgICAgICAgICAgICAgICAgICB8ICAyICstCisgdGVzdHMvc2VjdGlvbmR1bXAuYyAgICAgICAgICAgICAgfCAgMiArLQorIHRlc3RzL3ZhcmxvY3MuYyAgICAgICAgICAgICAgICAgIHwgIDIgKy0KKyB0ZXN0cy92ZHNvc3ltcy5jICAgICAgICAgICAgICAgICB8ICAyICstCisgNjkgZmlsZXMgY2hhbmdlZCwgOTUgaW5zZXJ0aW9ucygrKSwgNjQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCitpbmRleCAyZmY0NDRlLi40MWY3N2RmIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCitAQCAtMjgsNyArMjgsNyBAQCBwa2dpbmNsdWRlX0hFQURFUlMgPSB2ZXJzaW9uLmgKKyAKKyAjIEFkZCBkb2MgYmFjayB3aGVuIHdlIGhhdmUgc29tZSByZWFsIGNvbnRlbnQuCisgU1VCRElSUyA9IGNvbmZpZyBtNCBsaWIgbGliZWxmIGxpYmVibCBsaWJkd2VsZiBsaWJkd2ZsIGxpYmR3IGxpYmNwdSBsaWJhc20gXAorLQkgIGJhY2tlbmRzIHNyYyBwbyB0ZXN0cworKwkgIGJhY2tlbmRzIHBvIHRlc3RzCisgCisgRVhUUkFfRElTVCA9IGVsZnV0aWxzLnNwZWMgR1BHLUtFWSBOT1RFUyBDT05UUklCVVRJTkcgXAorIAkgICAgIENPUFlJTkcgQ09QWUlORy1HUExWMiBDT1BZSU5HLUxHUExWMworZGlmZiAtLWdpdCBhL2xpYi9jb2xvci5jIGIvbGliL2NvbG9yLmMKK2luZGV4IGY2MjM4OWQuLmEyYTg0YjQgMTAwNjQ0CistLS0gYS9saWIvY29sb3IuYworKysrIGIvbGliL2NvbG9yLmMKK0BAIC0zMiwxMyArMzIsMTQgQEAKKyAjZW5kaWYKKyAKKyAjaW5jbHVkZSA8YXJncC5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8bGliaW50bC5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorICNpbmNsdWRlICJsaWJldS5oIgorICNpbmNsdWRlICJjb2xvci5oIgorKyNpbmNsdWRlICJzeXN0ZW0uaCIKKyAKKyAvKiBQcm90b3R5cGUgZm9yIG9wdGlvbiBoYW5kbGVyLiAgKi8KKyBzdGF0aWMgZXJyb3JfdCBwYXJzZV9vcHQgKGludCBrZXksIGNoYXIgKmFyZywgc3RydWN0IGFyZ3Bfc3RhdGUgKnN0YXRlKTsKK2RpZmYgLS1naXQgYS9saWIvZml4ZWRzaXplaGFzaC5oIGIvbGliL2ZpeGVkc2l6ZWhhc2guaAoraW5kZXggZGFjMmE1Zi4uNDMwMTZmYyAxMDA2NDQKKy0tLSBhL2xpYi9maXhlZHNpemVoYXNoLmgKKysrKyBiL2xpYi9maXhlZHNpemVoYXNoLmgKK0BAIC0zMCw3ICszMCw2IEBACisgI2luY2x1ZGUgPGVycm5vLmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKy0jaW5jbHVkZSA8c3lzL2NkZWZzLmg+CisgCisgI2luY2x1ZGUgPHN5c3RlbS5oPgorIAorZGlmZiAtLWdpdCBhL2xpYi9zeXN0ZW0uaCBiL2xpYi9zeXN0ZW0uaAoraW5kZXggOTIwMzMzNS4uMWE2MDEzMSAxMDA2NDQKKy0tLSBhL2xpYi9zeXN0ZW0uaAorKysrIGIvbGliL3N5c3RlbS5oCitAQCAtNTAsNiArNTAsMTYgQEAKKyAjZWxzZQorICMgZXJyb3IgIlVua25vd24gYnl0ZSBvcmRlciIKKyAjZW5kaWYKKysjaWZuZGVmIFRFTVBfRkFJTFVSRV9SRVRSWQorKyNkZWZpbmUgVEVNUF9GQUlMVVJFX1JFVFJZKGV4cHJlc3Npb24pIFwKKysgIChfX2V4dGVuc2lvbl9fCQkJCQkJCSAgICAgIFwKKysgICAgKHsgbG9uZyBpbnQgX19yZXN1bHQ7CQkJCQkJICAgICAgXAorKyAgICAgICBkbyBfX3Jlc3VsdCA9IChsb25nIGludCkgKGV4cHJlc3Npb24pOwkJCQkgICAgICBcCisrICAgICAgIHdoaWxlIChfX3Jlc3VsdCA9PSAtMUwgJiYgZXJybm8gPT0gRUlOVFIpOwkJCSAgICAgIFwKKysgICAgICAgX19yZXN1bHQ7IH0pKQorKyNlbmRpZgorKworKyNkZWZpbmUgZXJyb3Ioc3RhdHVzLCBlcnJubywgLi4uKSBlcnIoc3RhdHVzLCBfX1ZBX0FSR1NfXykKKyAKKyAjaWZuZGVmIE1BWAorICNkZWZpbmUgTUFYKG0sIG4pICgobSkgPCAobikgPyAobikgOiAobSkpCitkaWZmIC0tZ2l0IGEvbGliL3htYWxsb2MuYyBiL2xpYi94bWFsbG9jLmMKK2luZGV4IDBjZGUzODQuLjIxN2IwNTQgMTAwNjQ0CistLS0gYS9saWIveG1hbGxvYy5jCisrKysgYi9saWIveG1hbGxvYy5jCitAQCAtMzAsNyArMzAsNyBAQAorICMgaW5jbHVkZSA8Y29uZmlnLmg+CisgI2VuZGlmCisgCistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxsaWJpbnRsLmg+CisgI2luY2x1ZGUgPHN0ZGRlZi5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KK2RpZmYgLS1naXQgYS9saWJhc20vYXNtX2VuZC5jIGIvbGliYXNtL2FzbV9lbmQuYworaW5kZXggY2VkMjRmNS4uNGFkOTE4YyAxMDA2NDQKKy0tLSBhL2xpYmFzbS9hc21fZW5kLmMKKysrKyBiL2xpYmFzbS9hc21fZW5kLmMKK0BAIC0zMiw3ICszMiw3IEBACisgI2VuZGlmCisgCisgI2luY2x1ZGUgPGFzc2VydC5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8bGliaW50bC5oPgorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KK2RpZmYgLS1naXQgYS9saWJhc20vYXNtX25ld3Njbi5jIGIvbGliYXNtL2FzbV9uZXdzY24uYworaW5kZXggZGRiYjI1ZC4uNzRhNTk4ZCAxMDA2NDQKKy0tLSBhL2xpYmFzbS9hc21fbmV3c2NuLmMKKysrKyBiL2xpYmFzbS9hc21fbmV3c2NuLmMKK0BAIC0zMiw3ICszMiw3IEBACisgI2VuZGlmCisgCisgI2luY2x1ZGUgPGFzc2VydC5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8bGliaW50bC5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CitkaWZmIC0tZ2l0IGEvbGliY3B1L2kzODZfZ2VuZGlzLmMgYi9saWJjcHUvaTM4Nl9nZW5kaXMuYworaW5kZXggYWFlNWVhZS4uNmQ3NjAxNiAxMDA2NDQKKy0tLSBhL2xpYmNwdS9pMzg2X2dlbmRpcy5jCisrKysgYi9saWJjcHUvaTM4Nl9nZW5kaXMuYworQEAgLTMxLDcgKzMxLDcgQEAKKyAjIGluY2x1ZGUgPGNvbmZpZy5oPgorICNlbmRpZgorIAorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CitkaWZmIC0tZ2l0IGEvbGliY3B1L2kzODZfbGV4LmMgYi9saWJjcHUvaTM4Nl9sZXguYworaW5kZXggYmE1ZjRhYS4uYjFlNDE5MSAxMDA2NDQKKy0tLSBhL2xpYmNwdS9pMzg2X2xleC5jCisrKysgYi9saWJjcHUvaTM4Nl9sZXguYworQEAgLTU3Nyw3ICs1NzcsNyBAQCBjaGFyICppMzg2X3RleHQ7CisgI2VuZGlmCisgCisgI2luY2x1ZGUgPGN0eXBlLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxsaWJpbnRsLmg+CisgCisgI2luY2x1ZGUgPGxpYmV1Lmg+CitkaWZmIC0tZ2l0IGEvbGliY3B1L2kzODZfcGFyc2UuYyBiL2xpYmNwdS9pMzg2X3BhcnNlLmMKK2luZGV4IGVmMWFjMzUuLjQ4ZjJlNjQgMTAwNjQ0CistLS0gYS9saWJjcHUvaTM4Nl9wYXJzZS5jCisrKysgYi9saWJjcHUvaTM4Nl9wYXJzZS5jCitAQCAtMTA3LDcgKzEwNyw3IEBACisgI2luY2x1ZGUgPGFzc2VydC5oPgorICNpbmNsdWRlIDxjdHlwZS5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8aW50dHlwZXMuaD4KKyAjaW5jbHVkZSA8bGliaW50bC5oPgorICNpbmNsdWRlIDxtYXRoLmg+CitkaWZmIC0tZ2l0IGEvbGliZHcvTWFrZWZpbGUuYW0gYi9saWJkdy9NYWtlZmlsZS5hbQoraW5kZXggZmY4YzI5MS4uODllNzkyYSAxMDA2NDQKKy0tLSBhL2xpYmR3L01ha2VmaWxlLmFtCisrKysgYi9saWJkdy9NYWtlZmlsZS5hbQorQEAgLTEwNSw3ICsxMDUsOCBAQCBhbV9saWJkd19waWNfYV9PQkpFQ1RTID0gJChsaWJkd19hX1NPVVJDRVM6LmM9Lm9zKQorIGxpYmR3X3NvX0xJQlMgPSBsaWJkd19waWMuYSAuLi9saWJkd2VsZi9saWJkd2VsZl9waWMuYSBcCisgCSAgLi4vbGliZHdmbC9saWJkd2ZsX3BpYy5hIC4uL2xpYmVibC9saWJlYmwuYQorIGxpYmR3X3NvX0RFUFMgPSAuLi9saWIvbGliZXUuYSAuLi9saWJlbGYvbGliZWxmLnNvCistbGliZHdfc29fTERMSUJTID0gJChsaWJkd19zb19ERVBTKSAtbGRsIC1seiAkKGFyZ3BfTERBREQpICQoemlwX0xJQlMpCisrZnRzX0xEQUREID0gLWxmdHMKKytsaWJkd19zb19MRExJQlMgPSAkKGxpYmR3X3NvX0RFUFMpIC1sZGwgLWx6ICQoYXJncF9MREFERCkgJCh6aXBfTElCUykgJChmdHNfTERBREQpCisgbGliZHdfc29fU09VUkNFUyA9CisgbGliZHcuc28kKEVYRUVYVCk6ICQoc3JjZGlyKS9saWJkdy5tYXAgJChsaWJkd19zb19MSUJTKSAkKGxpYmR3X3NvX0RFUFMpCisgIyBUaGUgcnBhdGggaXMgbmVjZXNzYXJ5IGZvciBsaWJlYmwgYmVjYXVzZSBpdHMgJE9SSUdJTiB1c2Ugd2lsbAorZGlmZiAtLWdpdCBhL2xpYmR3L2xpYmR3X2FsbG9jLmMgYi9saWJkdy9saWJkd19hbGxvYy5jCitpbmRleCAyOGE4Y2Y2Li4yOWFlYjNmIDEwMDY0NAorLS0tIGEvbGliZHcvbGliZHdfYWxsb2MuYworKysrIGIvbGliZHcvbGliZHdfYWxsb2MuYworQEAgLTMxLDcgKzMxLDcgQEAKKyAjIGluY2x1ZGUgPGNvbmZpZy5oPgorICNlbmRpZgorIAorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgImxpYmR3UC5oIgorZGlmZiAtLWdpdCBhL2xpYmR3ZmwvZHdmbF9idWlsZF9pZF9maW5kX2VsZi5jIGIvbGliZHdmbC9kd2ZsX2J1aWxkX2lkX2ZpbmRfZWxmLmMKK2luZGV4IGVlMGMxNjQuLmIwNmFiNTkgMTAwNjQ0CistLS0gYS9saWJkd2ZsL2R3ZmxfYnVpbGRfaWRfZmluZF9lbGYuYworKysrIGIvbGliZHdmbC9kd2ZsX2J1aWxkX2lkX2ZpbmRfZWxmLmMKK0BAIC0zMSw2ICszMSw3IEBACisgI2VuZGlmCisgCisgI2luY2x1ZGUgImxpYmR3ZmxQLmgiCisrI2luY2x1ZGUgInN5c3RlbS5oIgorICNpbmNsdWRlIDxpbnR0eXBlcy5oPgorICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDx1bmlzdGQuaD4KK0BAIC05OSw3ICsxMDAsNyBAQCBfX2xpYmR3Zmxfb3Blbl9ieV9idWlsZF9pZCAoRHdmbF9Nb2R1bGUgKm1vZCwgYm9vbCBkZWJ1ZywgY2hhciAqKmZpbGVfbmFtZSwKKyAJeworIAkgIGlmICgqZmlsZV9uYW1lICE9IE5VTEwpCisgCSAgICBmcmVlICgqZmlsZV9uYW1lKTsKKy0JICAqZmlsZV9uYW1lID0gY2Fub25pY2FsaXplX2ZpbGVfbmFtZSAobmFtZSk7CisrCSAgKmZpbGVfbmFtZSA9IHJlYWxwYXRoIChuYW1lLCBOVUxMKTsKKyAJICBpZiAoKmZpbGVfbmFtZSA9PSBOVUxMKQorIAkgICAgeworIAkgICAgICAqZmlsZV9uYW1lID0gbmFtZTsKK2RpZmYgLS1naXQgYS9saWJkd2ZsL2R3ZmxfZXJyb3IuYyBiL2xpYmR3ZmwvZHdmbF9lcnJvci5jCitpbmRleCA3YmNmNjFjLi5jMzQ1Nzk3IDEwMDY0NAorLS0tIGEvbGliZHdmbC9kd2ZsX2Vycm9yLmMKKysrKyBiL2xpYmR3ZmwvZHdmbF9lcnJvci5jCitAQCAtMTQwLDYgKzE0MCw3IEBAIF9fbGliZHdmbF9zZXRlcnJubyAoRHdmbF9FcnJvciBlcnJvcikKKyBjb25zdCBjaGFyICoKKyBkd2ZsX2Vycm1zZyAoaW50IGVycm9yKQorIHsKKysgIHN0YXRpYyBfX3RocmVhZCBjaGFyIHNbNjRdID0gIiI7CisgICBpZiAoZXJyb3IgPT0gMCB8fCBlcnJvciA9PSAtMSkKKyAgICAgeworICAgICAgIGludCBsYXN0X2Vycm9yID0gZ2xvYmFsX2Vycm9yOworQEAgLTE1NCw3ICsxNTUsOCBAQCBkd2ZsX2Vycm1zZyAoaW50IGVycm9yKQorICAgc3dpdGNoIChlcnJvciAmfiAweGZmZmYpCisgICAgIHsKKyAgICAgY2FzZSBPVEhFUl9FUlJPUiAoRVJSTk8pOgorLSAgICAgIHJldHVybiBzdHJlcnJvcl9yIChlcnJvciAmIDB4ZmZmZiwgImJhZCIsIDApOworKyAgICAgIHN0cmVycm9yX3IgKGVycm9yICYgMHhmZmZmLCBzLCBzaXplb2YocykpOworKyAgICAgIHJldHVybiBzOworICAgICBjYXNlIE9USEVSX0VSUk9SIChMSUJFTEYpOgorICAgICAgIHJldHVybiBlbGZfZXJybXNnIChlcnJvciAmIDB4ZmZmZik7CisgICAgIGNhc2UgT1RIRVJfRVJST1IgKExJQkRXKToKK2RpZmYgLS1naXQgYS9saWJkd2ZsL2R3ZmxfbW9kdWxlX2dldGR3YXJmLmMgYi9saWJkd2ZsL2R3ZmxfbW9kdWxlX2dldGR3YXJmLmMKK2luZGV4IDk3NzVhY2UuLjUxMWM0YTYgMTAwNjQ0CistLS0gYS9saWJkd2ZsL2R3ZmxfbW9kdWxlX2dldGR3YXJmLmMKKysrKyBiL2xpYmR3ZmwvZHdmbF9tb2R1bGVfZ2V0ZHdhcmYuYworQEAgLTM1LDYgKzM1LDcgQEAKKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorKyNpbmNsdWRlICJzeXN0ZW0uaCIKKyAjaW5jbHVkZSAiLi4vbGliZHcvbGliZHdQLmgiCS8qIERXQVJGX0VfKiB2YWx1ZXMgYXJlIGhlcmUuICAqLworICNpbmNsdWRlICIuLi9saWJlbGYvbGliZWxmUC5oIgorICNpbmNsdWRlICJzeXN0ZW0uaCIKK2RpZmYgLS1naXQgYS9saWJkd2ZsL2ZpbmQtZGVidWdpbmZvLmMgYi9saWJkd2ZsL2ZpbmQtZGVidWdpbmZvLmMKK2luZGV4IDZkNWE0MmEuLjkyNjc3ODggMTAwNjQ0CistLS0gYS9saWJkd2ZsL2ZpbmQtZGVidWdpbmZvLmMKKysrKyBiL2xpYmR3ZmwvZmluZC1kZWJ1Z2luZm8uYworQEAgLTM4OSw3ICszODksNyBAQCBkd2ZsX3N0YW5kYXJkX2ZpbmRfZGVidWdpbmZvIChEd2ZsX01vZHVsZSAqbW9kLAorICAgICAgIC8qIElmIEZJTEVfTkFNRSBpcyBhIHN5bWxpbmssIHRoZSBkZWJ1ZyBmaWxlIG1pZ2h0IGJlIGFzc29jaWF0ZWQKKyAJIHdpdGggdGhlIHN5bWxpbmsgdGFyZ2V0IG5hbWUgaW5zdGVhZC4gICovCisgCistICAgICAgY2hhciAqY2Fub24gPSBjYW5vbmljYWxpemVfZmlsZV9uYW1lIChmaWxlX25hbWUpOworKyAgICAgIGNoYXIgKmNhbm9uID0gcmVhbHBhdGggKGZpbGVfbmFtZSwgTlVMTCk7CisgICAgICAgaWYgKGNhbm9uICE9IE5VTEwgJiYgc3RyY21wIChmaWxlX25hbWUsIGNhbm9uKSkKKyAJZmQgPSBmaW5kX2RlYnVnaW5mb19pbl9wYXRoIChtb2QsIGNhbm9uLAorIAkJCQkgICAgIGRlYnVnbGlua19maWxlLCBkZWJ1Z2xpbmtfY3JjLAorZGlmZiAtLWdpdCBhL2xpYmR3ZmwvbGliZHdmbF9jcmMzMl9maWxlLmMgYi9saWJkd2ZsL2xpYmR3ZmxfY3JjMzJfZmlsZS5jCitpbmRleCBmODQ5MTI4Li42ZjBhY2ExIDEwMDY0NAorLS0tIGEvbGliZHdmbC9saWJkd2ZsX2NyYzMyX2ZpbGUuYworKysrIGIvbGliZHdmbC9saWJkd2ZsX2NyYzMyX2ZpbGUuYworQEAgLTI5LDYgKzI5LDE1IEBACisgIyBpbmNsdWRlIDxjb25maWcuaD4KKyAjZW5kaWYKKyAKKysjaWZuZGVmIFRFTVBfRkFJTFVSRV9SRVRSWQorKyNkZWZpbmUgVEVNUF9GQUlMVVJFX1JFVFJZKGV4cHJlc3Npb24pIFwKKysgIChfX2V4dGVuc2lvbl9fICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgKHsgbG9uZyBpbnQgX19yZXN1bHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgZG8gX19yZXN1bHQgPSAobG9uZyBpbnQpIChleHByZXNzaW9uKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgd2hpbGUgKF9fcmVzdWx0ID09IC0xTCAmJiBlcnJubyA9PSBFSU5UUik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgX19yZXN1bHQ7IH0pKQorKyNlbmRpZgorKworICNkZWZpbmUgY3JjMzJfZmlsZSBhdHRyaWJ1dGVfaGlkZGVuIF9fbGliZHdmbF9jcmMzMl9maWxlCisgI2RlZmluZSBjcmMzMiBfX2xpYmR3ZmxfY3JjMzIKKyAjaW5jbHVkZSA8bGliZHdmbFAuaD4KK2RpZmYgLS1naXQgYS9saWJkd2ZsL2xpbnV4LWtlcm5lbC1tb2R1bGVzLmMgYi9saWJkd2ZsL2xpbnV4LWtlcm5lbC1tb2R1bGVzLmMKK2luZGV4IDlkMGZlZjIuLjlmYzA5YjggMTAwNjQ0CistLS0gYS9saWJkd2ZsL2xpbnV4LWtlcm5lbC1tb2R1bGVzLmMKKysrKyBiL2xpYmR3ZmwvbGludXgta2VybmVsLW1vZHVsZXMuYworQEAgLTQwLDYgKzQwLDcgQEAKKyAjaW5jbHVkZSA8c3lzdGVtLmg+CisgCisgI2luY2x1ZGUgImxpYmR3ZmxQLmgiCisrI2luY2x1ZGUgInN5c3RlbS5oIgorICNpbmNsdWRlIDxpbnR0eXBlcy5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlIDxzdGRpby5oPgorZGlmZiAtLWdpdCBhL2xpYmVibC9lYmxvcGVuYmFja2VuZC5jIGIvbGliZWJsL2VibG9wZW5iYWNrZW5kLmMKK2luZGV4IDUzNzEzOTYuLjJlNjZkZmQgMTAwNjQ0CistLS0gYS9saWJlYmwvZWJsb3BlbmJhY2tlbmQuYworKysrIGIvbGliZWJsL2VibG9wZW5iYWNrZW5kLmMKK0BAIC0zMiw3ICszMiw3IEBACisgCisgI2luY2x1ZGUgPGFzc2VydC5oPgorICNpbmNsdWRlIDxkbGZjbi5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8bGliZWxmUC5oPgorICNpbmNsdWRlIDxkd2FyZi5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KK2RpZmYgLS1naXQgYS9saWJlbGYvZWxmLmggYi9saWJlbGYvZWxmLmgKK2luZGV4IDVjZjJiOTMuLjk5MGIzYWYgMTAwNjQ0CistLS0gYS9saWJlbGYvZWxmLmgKKysrKyBiL2xpYmVsZi9lbGYuaAorQEAgLTIxLDcgKzIxLDkgQEAKKyAKKyAjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KKyAKKy1fX0JFR0lOX0RFQ0xTCisrI2lmZGVmIF9fY3BsdXNwbHVzCisrZXh0ZXJuICJDIiB7CisrI2VuZGlmCisgCisgLyogU3RhbmRhcmQgRUxGIHR5cGVzLiAgKi8KKyAKK0BAIC0zNzA1LDYgKzM3MDcsOCBAQCBlbnVtCisgI2RlZmluZSBSX0JQRl9OT05FCQkwCS8qIE5vIHJlbG9jICovCisgI2RlZmluZSBSX0JQRl9NQVBfRkQJCTEJLyogTWFwIGZkIHRvIHBvaW50ZXIgKi8KKyAKKy1fX0VORF9ERUNMUworKyNpZmRlZiBfX2NwbHVzcGx1cworK30KKysjZW5kaWYKKyAKKyAjZW5kaWYJLyogZWxmLmggKi8KK2RpZmYgLS1naXQgYS9saWJlbGYvbGliZWxmLmggYi9saWJlbGYvbGliZWxmLmgKK2luZGV4IDU0N2MwZjUuLmRkNzg3OTkgMTAwNjQ0CistLS0gYS9saWJlbGYvbGliZWxmLmgKKysrKyBiL2xpYmVsZi9saWJlbGYuaAorQEAgLTI5LDYgKzI5LDcgQEAKKyAjaWZuZGVmIF9MSUJFTEZfSAorICNkZWZpbmUgX0xJQkVMRl9IIDEKKyAKKysjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8c3RkaW50Lmg+CisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorIAorZGlmZiAtLWdpdCBhL2xpYmVsZi9saWJlbGZQLmggYi9saWJlbGYvbGliZWxmUC5oCitpbmRleCA3ZWU2NjI1Li41ODQwODk5IDEwMDY0NAorLS0tIGEvbGliZWxmL2xpYmVsZlAuaAorKysrIGIvbGliZWxmL2xpYmVsZlAuaAorQEAgLTMyLDYgKzMyLDcgQEAKKyAKKyAjaW5jbHVkZSA8YXIuaD4KKyAjaW5jbHVkZSA8Z2VsZi5oPgorKyNpbmNsdWRlIDxsaWJlbGYuaD4KKyAKKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAjaW5jbHVkZSA8c3RkYm9vbC5oPgorZGlmZiAtLWdpdCBhL3NyYy9hZGRyMmxpbmUuYyBiL3NyYy9hZGRyMmxpbmUuYworaW5kZXggYmE0MTRhNy4uMDRiNzExNiAxMDA2NDQKKy0tLSBhL3NyYy9hZGRyMmxpbmUuYworKysrIGIvc3JjL2FkZHIybGluZS5jCitAQCAtMjMsNyArMjMsNyBAQAorICNpbmNsdWRlIDxhcmdwLmg+CisgI2luY2x1ZGUgPGFzc2VydC5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8aW50dHlwZXMuaD4KKyAjaW5jbHVkZSA8bGliZHdmbC5oPgorZGlmZiAtLWdpdCBhL3NyYy9hci5jIGIvc3JjL2FyLmMKK2luZGV4IGVjMzJjZWUuLjRlZmQ3MjkgMTAwNjQ0CistLS0gYS9zcmMvYXIuYworKysrIGIvc3JjL2FyLmMKK0BAIC0yMiw3ICsyMiw3IEBACisgCisgI2luY2x1ZGUgPGFyZ3AuaD4KKyAjaW5jbHVkZSA8YXNzZXJ0Lmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDxnZWxmLmg+CisgI2luY2x1ZGUgPGxpYmludGwuaD4KK2RpZmYgLS1naXQgYS9zcmMvYXJsaWIuYyBiL3NyYy9hcmxpYi5jCitpbmRleCBlMDgzOWFhLi4xMTQzNjU4IDEwMDY0NAorLS0tIGEvc3JjL2FybGliLmMKKysrKyBiL3NyYy9hcmxpYi5jCitAQCAtMjEsNyArMjEsNyBAQAorICNlbmRpZgorIAorICNpbmNsdWRlIDxhc3NlcnQuaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPGdlbGYuaD4KKyAjaW5jbHVkZSA8aW50dHlwZXMuaD4KKyAjaW5jbHVkZSA8bGliaW50bC5oPgorZGlmZiAtLWdpdCBhL3NyYy9hcmxpYjIuYyBiL3NyYy9hcmxpYjIuYworaW5kZXggNTUzZmM1Ny4uNDY0NDNkMCAxMDA2NDQKKy0tLSBhL3NyYy9hcmxpYjIuYworKysrIGIvc3JjL2FybGliMi5jCitAQCAtMjAsNyArMjAsNyBAQAorICMgaW5jbHVkZSA8Y29uZmlnLmg+CisgI2VuZGlmCisgCistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxsaWJpbnRsLmg+CisgI2luY2x1ZGUgPGxpbWl0cy5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KK2RpZmYgLS1naXQgYS9zcmMvZWxmY21wLmMgYi9zcmMvZWxmY21wLmMKK2luZGV4IDUwNDY0MjAuLmNmZjE4M2YgMTAwNjQ0CistLS0gYS9zcmMvZWxmY21wLmMKKysrKyBiL3NyYy9lbGZjbXAuYworQEAgLTIzLDcgKzIzLDcgQEAKKyAjaW5jbHVkZSA8YXJncC5oPgorICNpbmNsdWRlIDxhc3NlcnQuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPGxvY2FsZS5oPgorICNpbmNsdWRlIDxsaWJpbnRsLmg+CitkaWZmIC0tZ2l0IGEvc3JjL2VsZmxpbnQuYyBiL3NyYy9lbGZsaW50LmMKK2luZGV4IDUxZTUzYzIuLmRhMGIwZGMgMTAwNjQ0CistLS0gYS9zcmMvZWxmbGludC5jCisrKysgYi9zcmMvZWxmbGludC5jCitAQCAtMjQsNyArMjQsNyBAQAorICNpbmNsdWRlIDxhc3NlcnQuaD4KKyAjaW5jbHVkZSA8Ynl0ZXN3YXAuaD4KKyAjaW5jbHVkZSA8ZW5kaWFuLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDxnZWxmLmg+CisgI2luY2x1ZGUgPGludHR5cGVzLmg+CitkaWZmIC0tZ2l0IGEvc3JjL2ZpbmR0ZXh0cmVsLmMgYi9zcmMvZmluZHRleHRyZWwuYworaW5kZXggOGYxZTIzOS4uNzE0NjNhZiAxMDA2NDQKKy0tLSBhL3NyYy9maW5kdGV4dHJlbC5jCisrKysgYi9zcmMvZmluZHRleHRyZWwuYworQEAgLTIzLDcgKzIzLDcgQEAKKyAjaW5jbHVkZSA8YXJncC5oPgorICNpbmNsdWRlIDxhc3NlcnQuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPGdlbGYuaD4KKyAjaW5jbHVkZSA8bGliZHcuaD4KK2RpZmYgLS1naXQgYS9zcmMvbm0uYyBiL3NyYy9ubS5jCitpbmRleCA5NjljNmQzLi4zMTEzYzA0IDEwMDY0NAorLS0tIGEvc3JjL25tLmMKKysrKyBiL3NyYy9ubS5jCitAQCAtMjYsNyArMjYsNyBAQAorICNpbmNsdWRlIDxjdHlwZS5oPgorICNpbmNsdWRlIDxkd2FyZi5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8Z2VsZi5oPgorICNpbmNsdWRlIDxpbnR0eXBlcy5oPgorZGlmZiAtLWdpdCBhL3NyYy9vYmpkdW1wLmMgYi9zcmMvb2JqZHVtcC5jCitpbmRleCA4NjBjZmFjLi42MWU2N2JmIDEwMDY0NAorLS0tIGEvc3JjL29iamR1bXAuYworKysrIGIvc3JjL29iamR1bXAuYworQEAgLTIxLDcgKzIxLDcgQEAKKyAjZW5kaWYKKyAKKyAjaW5jbHVkZSA8YXJncC5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8aW50dHlwZXMuaD4KKyAjaW5jbHVkZSA8bGliaW50bC5oPgorZGlmZiAtLWdpdCBhL3NyYy9yYW5saWIuYyBiL3NyYy9yYW5saWIuYworaW5kZXggY2MwZWUyMy4uYWU4NTFlNCAxMDA2NDQKKy0tLSBhL3NyYy9yYW5saWIuYworKysrIGIvc3JjL3JhbmxpYi5jCitAQCAtMjQsNyArMjQsNyBAQAorICNpbmNsdWRlIDxhcmdwLmg+CisgI2luY2x1ZGUgPGFzc2VydC5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8Z2VsZi5oPgorICNpbmNsdWRlIDxsaWJpbnRsLmg+CitkaWZmIC0tZ2l0IGEvc3JjL3JlYWRlbGYuYyBiL3NyYy9yZWFkZWxmLmMKK2luZGV4IDM0NmVjY2QuLmM4MzFhYTggMTAwNjQ0CistLS0gYS9zcmMvcmVhZGVsZi5jCisrKysgYi9zcmMvcmVhZGVsZi5jCitAQCAtMjUsNyArMjUsNyBAQAorICNpbmNsdWRlIDxjdHlwZS5oPgorICNpbmNsdWRlIDxkd2FyZi5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8Z2VsZi5oPgorICNpbmNsdWRlIDxpbnR0eXBlcy5oPgorZGlmZiAtLWdpdCBhL3NyYy9zaXplLmMgYi9zcmMvc2l6ZS5jCitpbmRleCBhZDhkYmNiLi5mZDgzYmUwIDEwMDY0NAorLS0tIGEvc3JjL3NpemUuYworKysrIGIvc3JjL3NpemUuYworQEAgLTIxLDcgKzIxLDcgQEAKKyAjZW5kaWYKKyAKKyAjaW5jbHVkZSA8YXJncC5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8Z2VsZi5oPgorICNpbmNsdWRlIDxpbnR0eXBlcy5oPgorZGlmZiAtLWdpdCBhL3NyYy9zdGFjay5jIGIvc3JjL3N0YWNrLmMKK2luZGV4IDZmMmZmNjkuLjZkYTAyNDMgMTAwNjQ0CistLS0gYS9zcmMvc3RhY2suYworKysrIGIvc3JjL3N0YWNrLmMKK0BAIC0xOCw3ICsxOCw3IEBACisgI2luY2x1ZGUgPGNvbmZpZy5oPgorICNpbmNsdWRlIDxhc3NlcnQuaD4KKyAjaW5jbHVkZSA8YXJncC5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPGludHR5cGVzLmg+CisgI2luY2x1ZGUgPHN0ZGlvLmg+CitkaWZmIC0tZ2l0IGEvc3JjL3N0cmluZ3MuYyBiL3NyYy9zdHJpbmdzLmMKK2luZGV4IGQyMTQzNTYuLjc2Y2IyNmIgMTAwNjQ0CistLS0gYS9zcmMvc3RyaW5ncy5jCisrKysgYi9zcmMvc3RyaW5ncy5jCitAQCAtMjUsNyArMjUsNyBAQAorICNpbmNsdWRlIDxjdHlwZS5oPgorICNpbmNsdWRlIDxlbmRpYW4uaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPGdlbGYuaD4KKyAjaW5jbHVkZSA8aW50dHlwZXMuaD4KK2RpZmYgLS1naXQgYS9zcmMvc3RyaXAuYyBiL3NyYy9zdHJpcC5jCitpbmRleCBjNzgzMGVjLi4wZDdmMTQ4IDEwMDY0NAorLS0tIGEvc3JjL3N0cmlwLmMKKysrKyBiL3NyYy9zdHJpcC5jCitAQCAtMjQsNyArMjQsNyBAQAorICNpbmNsdWRlIDxhc3NlcnQuaD4KKyAjaW5jbHVkZSA8Ynl0ZXN3YXAuaD4KKyAjaW5jbHVkZSA8ZW5kaWFuLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDxmbm1hdGNoLmg+CisgI2luY2x1ZGUgPGdlbGYuaD4KK2RpZmYgLS1naXQgYS9zcmMvdW5zdHJpcC5jIGIvc3JjL3Vuc3RyaXAuYworaW5kZXggNTA3NDkwOS4uM2Q0Zjk1MiAxMDA2NDQKKy0tLSBhL3NyYy91bnN0cmlwLmMKKysrKyBiL3NyYy91bnN0cmlwLmMKK0BAIC0zMSw3ICszMSw3IEBACisgI2luY2x1ZGUgPGFyZ3AuaD4KKyAjaW5jbHVkZSA8YXNzZXJ0Lmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDxmbm1hdGNoLmg+CisgI2luY2x1ZGUgPGxpYmludGwuaD4KK2RpZmYgLS1naXQgYS90ZXN0cy9hZGRyc2NvcGVzLmMgYi90ZXN0cy9hZGRyc2NvcGVzLmMKK2luZGV4IDc5MTU2OWYuLjU0ZjQzMTEgMTAwNjQ0CistLS0gYS90ZXN0cy9hZGRyc2NvcGVzLmMKKysrKyBiL3Rlc3RzL2FkZHJzY29wZXMuYworQEAgLTI1LDcgKzI1LDcgQEAKKyAjaW5jbHVkZSA8c3RkaW9fZXh0Lmg+CisgI2luY2x1ZGUgPGxvY2FsZS5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorIAorIAorZGlmZiAtLWdpdCBhL3Rlc3RzL2FsbHJlZ3MuYyBiL3Rlc3RzL2FsbHJlZ3MuYworaW5kZXggMjg2ZjdlMy4uYzlkZTA4OSAxMDA2NDQKKy0tLSBhL3Rlc3RzL2FsbHJlZ3MuYworKysrIGIvdGVzdHMvYWxscmVncy5jCitAQCAtMjEsNyArMjEsNyBAQAorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxsb2NhbGUuaD4KKyAjaW5jbHVkZSA8YXJncC5oPgorICNpbmNsdWRlIDxhc3NlcnQuaD4KK2RpZmYgLS1naXQgYS90ZXN0cy9iYWNrdHJhY2UtZGF0YS5jIGIvdGVzdHMvYmFja3RyYWNlLWRhdGEuYworaW5kZXggYTM4N2Q4Zi4uOTU1YzI3ZCAxMDA2NDQKKy0tLSBhL3Rlc3RzL2JhY2t0cmFjZS1kYXRhLmMKKysrKyBiL3Rlc3RzL2JhY2t0cmFjZS1kYXRhLmMKK0BAIC0yNyw3ICsyNyw3IEBACisgI2luY2x1ZGUgPGRpcmVudC5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorICNpbmNsdWRlIDxkd2FyZi5oPgorICNpZiBkZWZpbmVkKF9feDg2XzY0X18pICYmIGRlZmluZWQoX19saW51eF9fKQorZGlmZiAtLWdpdCBhL3Rlc3RzL2JhY2t0cmFjZS1kd2FyZi5jIGIvdGVzdHMvYmFja3RyYWNlLWR3YXJmLmMKK2luZGV4IDJkYzhhOWEuLjI0Y2E3ZmIgMTAwNjQ0CistLS0gYS90ZXN0cy9iYWNrdHJhY2UtZHdhcmYuYworKysrIGIvdGVzdHMvYmFja3RyYWNlLWR3YXJmLmMKK0BAIC0yMiw3ICsyMiw3IEBACisgI2luY2x1ZGUgPHN0ZGlvX2V4dC5oPgorICNpbmNsdWRlIDxsb2NhbGUuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAjaW5jbHVkZSA8c3lzL3dhaXQuaD4KK2RpZmYgLS1naXQgYS90ZXN0cy9iYWNrdHJhY2UuYyBiL3Rlc3RzL2JhY2t0cmFjZS5jCitpbmRleCAyMWFiZThhLi5kNzMzMjQ4IDEwMDY0NAorLS0tIGEvdGVzdHMvYmFja3RyYWNlLmMKKysrKyBiL3Rlc3RzL2JhY2t0cmFjZS5jCitAQCAtMjQsNyArMjQsNyBAQAorICNpbmNsdWRlIDxkaXJlbnQuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAjaW5jbHVkZSA8ZHdhcmYuaD4KKyAjaWZkZWYgX19saW51eF9fCitkaWZmIC0tZ2l0IGEvdGVzdHMvYnVpbGRpZC5jIGIvdGVzdHMvYnVpbGRpZC5jCitpbmRleCA4N2MxODc3Li4yOTUzZTZiIDEwMDY0NAorLS0tIGEvdGVzdHMvYnVpbGRpZC5jCisrKysgYi90ZXN0cy9idWlsZGlkLmMKK0BAIC0yMyw3ICsyMyw3IEBACisgI2luY2x1ZGUgRUxGVVRJTFNfSEVBREVSKGVsZikKKyAjaW5jbHVkZSBFTEZVVElMU19IRUFERVIoZHdlbGYpCisgI2luY2x1ZGUgPHN0ZGlvLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorZGlmZiAtLWdpdCBhL3Rlc3RzL2RlYnVnYWx0bGluay5jIGIvdGVzdHMvZGVidWdhbHRsaW5rLmMKK2luZGV4IDZkOTdkNTAuLmVlN2U1NTkgMTAwNjQ0CistLS0gYS90ZXN0cy9kZWJ1Z2FsdGxpbmsuYworKysrIGIvdGVzdHMvZGVidWdhbHRsaW5rLmMKK0BAIC0yMyw3ICsyMyw3IEBACisgI2luY2x1ZGUgRUxGVVRJTFNfSEVBREVSKGR3KQorICNpbmNsdWRlIEVMRlVUSUxTX0hFQURFUihkd2VsZikKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CitkaWZmIC0tZ2l0IGEvdGVzdHMvZGVidWdsaW5rLmMgYi90ZXN0cy9kZWJ1Z2xpbmsuYworaW5kZXggOTM1ZDEwMi4uNzQxY2I4MSAxMDA2NDQKKy0tLSBhL3Rlc3RzL2RlYnVnbGluay5jCisrKysgYi90ZXN0cy9kZWJ1Z2xpbmsuYworQEAgLTIxLDcgKzIxLDcgQEAKKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAjaW5jbHVkZSBFTEZVVElMU19IRUFERVIoZHdlbGYpCisgI2luY2x1ZGUgPHN0ZGlvLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorZGlmZiAtLWdpdCBhL3Rlc3RzL2RlbGV0ZWQuYyBiL3Rlc3RzL2RlbGV0ZWQuYworaW5kZXggNmJlMzViYy4uMDE5MDcxMSAxMDA2NDQKKy0tLSBhL3Rlc3RzL2RlbGV0ZWQuYworKysrIGIvdGVzdHMvZGVsZXRlZC5jCitAQCAtMjEsNyArMjEsNyBAQAorICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAjaW5jbHVkZSA8YXNzZXJ0Lmg+CisgI2luY2x1ZGUgPHN0ZGlvLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorICNpZmRlZiBfX2xpbnV4X18KKyAjaW5jbHVkZSA8c3lzL3ByY3RsLmg+CitkaWZmIC0tZ2l0IGEvdGVzdHMvZHdmbC1hZGRyLXNlY3QuYyBiL3Rlc3RzL2R3ZmwtYWRkci1zZWN0LmMKK2luZGV4IDIxZTQ3MGEuLjFlYTFlM2IgMTAwNjQ0CistLS0gYS90ZXN0cy9kd2ZsLWFkZHItc2VjdC5jCisrKysgYi90ZXN0cy9kd2ZsLWFkZHItc2VjdC5jCitAQCAtMjMsNyArMjMsNyBAQAorICNpbmNsdWRlIDxzdGRpb19leHQuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8bG9jYWxlLmg+CisgI2luY2x1ZGUgPGFyZ3AuaD4KKyAjaW5jbHVkZSBFTEZVVElMU19IRUFERVIoZHdmbCkKK2RpZmYgLS1naXQgYS90ZXN0cy9kd2ZsLWJ1Zy1hZGRyLW92ZXJmbG93LmMgYi90ZXN0cy9kd2ZsLWJ1Zy1hZGRyLW92ZXJmbG93LmMKK2luZGV4IGFhODAzMGUuLjAyYzhiZWYgMTAwNjQ0CistLS0gYS90ZXN0cy9kd2ZsLWJ1Zy1hZGRyLW92ZXJmbG93LmMKKysrKyBiL3Rlc3RzL2R3ZmwtYnVnLWFkZHItb3ZlcmZsb3cuYworQEAgLTIwLDcgKzIwLDcgQEAKKyAjaW5jbHVkZSA8aW50dHlwZXMuaD4KKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8c3RkaW9fZXh0Lmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxsb2NhbGUuaD4KKyAjaW5jbHVkZSBFTEZVVElMU19IRUFERVIoZHdmbCkKKyAKK2RpZmYgLS1naXQgYS90ZXN0cy9kd2ZsLWJ1Zy1mZC1sZWFrLmMgYi90ZXN0cy9kd2ZsLWJ1Zy1mZC1sZWFrLmMKK2luZGV4IDY4OWNkZDcuLjU5NzNkYTMgMTAwNjQ0CistLS0gYS90ZXN0cy9kd2ZsLWJ1Zy1mZC1sZWFrLmMKKysrKyBiL3Rlc3RzL2R3ZmwtYnVnLWZkLWxlYWsuYworQEAgLTI0LDcgKzI0LDcgQEAKKyAjaW5jbHVkZSA8ZGlyZW50Lmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisgI2luY2x1ZGUgPGR3YXJmLmg+CisgCitkaWZmIC0tZ2l0IGEvdGVzdHMvZHdmbC1idWctZ2V0bW9kdWxlcy5jIGIvdGVzdHMvZHdmbC1idWctZ2V0bW9kdWxlcy5jCitpbmRleCAxZWU5ODlmLi5mZDYyZTY1IDEwMDY0NAorLS0tIGEvdGVzdHMvZHdmbC1idWctZ2V0bW9kdWxlcy5jCisrKysgYi90ZXN0cy9kd2ZsLWJ1Zy1nZXRtb2R1bGVzLmMKK0BAIC0xOCw3ICsxOCw3IEBACisgI2luY2x1ZGUgPGNvbmZpZy5oPgorICNpbmNsdWRlIEVMRlVUSUxTX0hFQURFUihkd2ZsKQorIAorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAKKyBzdGF0aWMgY29uc3QgRHdmbF9DYWxsYmFja3MgY2FsbGJhY2tzID0KKyAgIHsKK2RpZmYgLS1naXQgYS90ZXN0cy9kd2ZsLXJlcG9ydC1lbGYtYWxpZ24uYyBiL3Rlc3RzL2R3ZmwtcmVwb3J0LWVsZi1hbGlnbi5jCitpbmRleCBhNGU5N2QzLi5mNDcxNTg3IDEwMDY0NAorLS0tIGEvdGVzdHMvZHdmbC1yZXBvcnQtZWxmLWFsaWduLmMKKysrKyBiL3Rlc3RzL2R3ZmwtcmVwb3J0LWVsZi1hbGlnbi5jCitAQCAtMjAsNyArMjAsNyBAQAorICNpbmNsdWRlIDxpbnR0eXBlcy5oPgorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxzdGRpb19leHQuaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPGxvY2FsZS5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CitkaWZmIC0tZ2l0IGEvdGVzdHMvZHdmbGxpbmVzLmMgYi90ZXN0cy9kd2ZsbGluZXMuYworaW5kZXggOTAzNzlkZC4uY2JkZjZjNCAxMDA2NDQKKy0tLSBhL3Rlc3RzL2R3ZmxsaW5lcy5jCisrKysgYi90ZXN0cy9kd2ZsbGluZXMuYworQEAgLTI3LDcgKzI3LDcgQEAKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAKKyBpbnQKKyBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQorZGlmZiAtLWdpdCBhL3Rlc3RzL2R3Zmxtb2R0ZXN0LmMgYi90ZXN0cy9kd2ZsbW9kdGVzdC5jCitpbmRleCAwMDI3Zjk2Li5lNjhkM2JjIDEwMDY0NAorLS0tIGEvdGVzdHMvZHdmbG1vZHRlc3QuYworKysrIGIvdGVzdHMvZHdmbG1vZHRlc3QuYworQEAgLTIzLDcgKzIzLDcgQEAKKyAjaW5jbHVkZSA8c3RkaW9fZXh0Lmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPGxvY2FsZS5oPgorICNpbmNsdWRlIDxhcmdwLmg+CisgI2luY2x1ZGUgRUxGVVRJTFNfSEVBREVSKGR3ZmwpCitkaWZmIC0tZ2l0IGEvdGVzdHMvZHdmbHN5bXMuYyBiL3Rlc3RzL2R3ZmxzeW1zLmMKK2luZGV4IDQ5YWMzMzQuLmNmMDc4MzAgMTAwNjQ0CistLS0gYS90ZXN0cy9kd2Zsc3ltcy5jCisrKysgYi90ZXN0cy9kd2Zsc3ltcy5jCitAQCAtMjUsNyArMjUsNyBAQAorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxzdGRpb19leHQuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAKKyBzdGF0aWMgY29uc3QgY2hhciAqCitkaWZmIC0tZ2l0IGEvdGVzdHMvZWFybHktb2Zmc2NuLmMgYi90ZXN0cy9lYXJseS1vZmZzY24uYworaW5kZXggOTI0Y2I5ZS4uNmY2MGQ1YSAxMDA2NDQKKy0tLSBhL3Rlc3RzL2Vhcmx5LW9mZnNjbi5jCisrKysgYi90ZXN0cy9lYXJseS1vZmZzY24uYworQEAgLTE5LDcgKzE5LDcgQEAKKyAjZW5kaWYKKyAKKyAjaW5jbHVkZSA8ZXJybm8uaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPGdlbGYuaD4KKyAjaW5jbHVkZSA8c3RkaW8uaD4KK2RpZmYgLS1naXQgYS90ZXN0cy9lY3AuYyBiL3Rlc3RzL2VjcC5jCitpbmRleCAzOGE2ODU5Li43NDNjZWE1IDEwMDY0NAorLS0tIGEvdGVzdHMvZWNwLmMKKysrKyBiL3Rlc3RzL2VjcC5jCitAQCAtMjAsNyArMjAsNyBAQAorICNlbmRpZgorIAorICNpbmNsdWRlIDxlcnJuby5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8Z2VsZi5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KK2RpZmYgLS1naXQgYS90ZXN0cy9maW5kLXByb2xvZ3Vlcy5jIGIvdGVzdHMvZmluZC1wcm9sb2d1ZXMuYworaW5kZXggYmE4YWUzNy4uNzZmNWYwNCAxMDA2NDQKKy0tLSBhL3Rlc3RzL2ZpbmQtcHJvbG9ndWVzLmMKKysrKyBiL3Rlc3RzL2ZpbmQtcHJvbG9ndWVzLmMKK0BAIC0yNSw3ICsyNSw3IEBACisgI2luY2x1ZGUgPHN0ZGlvX2V4dC5oPgorICNpbmNsdWRlIDxsb2NhbGUuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAjaW5jbHVkZSA8Zm5tYXRjaC5oPgorIAorZGlmZiAtLWdpdCBhL3Rlc3RzL2Z1bmNyZXR2YWwuYyBiL3Rlc3RzL2Z1bmNyZXR2YWwuYworaW5kZXggOGQxOWQxMS4uYzhhYWE5MyAxMDA2NDQKKy0tLSBhL3Rlc3RzL2Z1bmNyZXR2YWwuYworKysrIGIvdGVzdHMvZnVuY3JldHZhbC5jCitAQCAtMjUsNyArMjUsNyBAQAorICNpbmNsdWRlIDxzdGRpb19leHQuaD4KKyAjaW5jbHVkZSA8bG9jYWxlLmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUgPGZubWF0Y2guaD4KKyAKK2RpZmYgLS1naXQgYS90ZXN0cy9mdW5jc2NvcGVzLmMgYi90ZXN0cy9mdW5jc2NvcGVzLmMKK2luZGV4IDljOTAxODUuLmRiY2NiODkgMTAwNjQ0CistLS0gYS90ZXN0cy9mdW5jc2NvcGVzLmMKKysrKyBiL3Rlc3RzL2Z1bmNzY29wZXMuYworQEAgLTI1LDcgKzI1LDcgQEAKKyAjaW5jbHVkZSA8c3RkaW9fZXh0Lmg+CisgI2luY2x1ZGUgPGxvY2FsZS5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorICNpbmNsdWRlIDxmbm1hdGNoLmg+CisgCitkaWZmIC0tZ2l0IGEvdGVzdHMvZ2V0c3JjX2RpZS5jIGIvdGVzdHMvZ2V0c3JjX2RpZS5jCitpbmRleCAwNTVhZWRlLi45YzM5NGRkIDEwMDY0NAorLS0tIGEvdGVzdHMvZ2V0c3JjX2RpZS5jCisrKysgYi90ZXN0cy9nZXRzcmNfZGllLmMKK0BAIC0xOSw3ICsxOSw3IEBACisgI2VuZGlmCisgCisgI2luY2x1ZGUgPGVycm5vLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDxpbnR0eXBlcy5oPgorICNpbmNsdWRlIDxsaWJlbGYuaD4KK2RpZmYgLS1naXQgYS90ZXN0cy9saW5lMmFkZHIuYyBiL3Rlc3RzL2xpbmUyYWRkci5jCitpbmRleCBlMGQ2NWQzLi45YmYwMDIzIDEwMDY0NAorLS0tIGEvdGVzdHMvbGluZTJhZGRyLmMKKysrKyBiL3Rlc3RzL2xpbmUyYWRkci5jCitAQCAtMjYsNyArMjYsNyBAQAorICNpbmNsdWRlIDxsb2NhbGUuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAKKyAKKyBzdGF0aWMgdm9pZAorZGlmZiAtLWdpdCBhL3Rlc3RzL2xvd19oaWdoX3BjLmMgYi90ZXN0cy9sb3dfaGlnaF9wYy5jCitpbmRleCBkMGY0MzAyLi44ZGE0ZmJkIDEwMDY0NAorLS0tIGEvdGVzdHMvbG93X2hpZ2hfcGMuYworKysrIGIvdGVzdHMvbG93X2hpZ2hfcGMuYworQEAgLTI1LDcgKzI1LDcgQEAKKyAjaW5jbHVkZSA8c3RkaW9fZXh0Lmg+CisgI2luY2x1ZGUgPGxvY2FsZS5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorICNpbmNsdWRlIDxmbm1hdGNoLmg+CisgCitkaWZmIC0tZ2l0IGEvdGVzdHMvbWQ1LXNoYTEtdGVzdC5jIGIvdGVzdHMvbWQ1LXNoYTEtdGVzdC5jCitpbmRleCBkNTAzNTVlLi4zYzQxZjQwIDEwMDY0NAorLS0tIGEvdGVzdHMvbWQ1LXNoYTEtdGVzdC5jCisrKysgYi90ZXN0cy9tZDUtc2hhMS10ZXN0LmMKK0BAIC0xOSw3ICsxOSw3IEBACisgI2VuZGlmCisgCisgI2luY2x1ZGUgPHN0cmluZy5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAKKyAjaW5jbHVkZSAibWQ1LmgiCisgI2luY2x1ZGUgInNoYTEuaCIKK2RpZmYgLS1naXQgYS90ZXN0cy9yZHdybW1hcC5jIGIvdGVzdHMvcmR3cm1tYXAuYworaW5kZXggNmYwMjdkZi4uMWNlNWU2ZSAxMDA2NDQKKy0tLSBhL3Rlc3RzL3Jkd3JtbWFwLmMKKysrKyBiL3Rlc3RzL3Jkd3JtbWFwLmMKK0BAIC0xOSw3ICsxOSw3IEBACisgI2VuZGlmCisgCisgI2luY2x1ZGUgPGVycm5vLmg+CistI2luY2x1ZGUgPGVycm9yLmg+CisrI2luY2x1ZGUgPGVyci5oPgorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDx1bmlzdGQuaD4KK2RpZmYgLS1naXQgYS90ZXN0cy9zYXJpZHguYyBiL3Rlc3RzL3NhcmlkeC5jCitpbmRleCA4YTQ1MGQ4Li5iMzg3ODAxIDEwMDY0NAorLS0tIGEvdGVzdHMvc2FyaWR4LmMKKysrKyBiL3Rlc3RzL3NhcmlkeC5jCitAQCAtMTcsNyArMTcsNyBAQAorIAorICNpbmNsdWRlIDxjb25maWcuaD4KKyAKKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPGdlbGYuaD4KKyAjaW5jbHVkZSA8c3RkaW8uaD4KK2RpZmYgLS1naXQgYS90ZXN0cy9zZWN0aW9uZHVtcC5jIGIvdGVzdHMvc2VjdGlvbmR1bXAuYworaW5kZXggMzAzM2ZlZC4uOGU4ODhkYiAxMDA2NDQKKy0tLSBhL3Rlc3RzL3NlY3Rpb25kdW1wLmMKKysrKyBiL3Rlc3RzL3NlY3Rpb25kdW1wLmMKK0BAIC0xOCw3ICsxOCw3IEBACisgI2luY2x1ZGUgPGNvbmZpZy5oPgorIAorICNpbmNsdWRlIDxlcnJuby5oPgorLSNpbmNsdWRlIDxlcnJvci5oPgorKyNpbmNsdWRlIDxlcnIuaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8Z2VsZi5oPgorICNpbmNsdWRlIDxpbnR0eXBlcy5oPgorZGlmZiAtLWdpdCBhL3Rlc3RzL3ZhcmxvY3MuYyBiL3Rlc3RzL3ZhcmxvY3MuYworaW5kZXggYzNmYmE4OS4uZTA0M2VhMiAxMDA2NDQKKy0tLSBhL3Rlc3RzL3ZhcmxvY3MuYworKysrIGIvdGVzdHMvdmFybG9jcy5jCitAQCAtMjUsNyArMjUsNyBAQAorICNpbmNsdWRlIDxkd2FyZi5oPgorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KK2RpZmYgLS1naXQgYS90ZXN0cy92ZHNvc3ltcy5jIGIvdGVzdHMvdmRzb3N5bXMuYworaW5kZXggYjg3NmMxMC4uYWZiMjgyMyAxMDA2NDQKKy0tLSBhL3Rlc3RzL3Zkc29zeW1zLmMKKysrKyBiL3Rlc3RzL3Zkc29zeW1zLmMKK0BAIC0xOCw3ICsxOCw3IEBACisgI2luY2x1ZGUgPGNvbmZpZy5oPgorICNpbmNsdWRlIDxhc3NlcnQuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKy0jaW5jbHVkZSA8ZXJyb3IuaD4KKysjaW5jbHVkZSA8ZXJyLmg+CisgI2luY2x1ZGUgPGludHR5cGVzLmg+CisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvZGViaWFuLzAwMDEtSWdub3JlLWRpZmZlcmVuY2VzLWJldHdlZW4tbWlwcy1tYWNoaW5lLWlkZW50aWZpZXJzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vMDAwMS1JZ25vcmUtZGlmZmVyZW5jZXMtYmV0d2Vlbi1taXBzLW1hY2hpbmUtaWRlbnRpZmllcnMucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvZGViaWFuLzAwMDEtSWdub3JlLWRpZmZlcmVuY2VzLWJldHdlZW4tbWlwcy1tYWNoaW5lLWlkZW50aWZpZXJzLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi8wMDAxLUlnbm9yZS1kaWZmZXJlbmNlcy1iZXR3ZWVuLW1pcHMtbWFjaGluZS1pZGVudGlmaWVycy5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2OC9kZWJpYW4vMDAwMi1BZGQtc3VwcG9ydC1mb3ItbWlwczY0LWFiaXMtaW4tbWlwc19yZXR2YWwuYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuLzAwMDItQWRkLXN1cHBvcnQtZm9yLW1pcHM2NC1hYmlzLWluLW1pcHNfcmV0dmFsLmMucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvZGViaWFuLzAwMDItQWRkLXN1cHBvcnQtZm9yLW1pcHM2NC1hYmlzLWluLW1pcHNfcmV0dmFsLmMucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuLzAwMDItQWRkLXN1cHBvcnQtZm9yLW1pcHM2NC1hYmlzLWluLW1pcHNfcmV0dmFsLmMucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHMtMC4xNjgvZGViaWFuLzAwMDMtQWRkLW1pcHMtbjY0LXJlbG9jYXRpb24tZm9ybWF0LWhhY2sucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi8wMDAzLUFkZC1taXBzLW42NC1yZWxvY2F0aW9uLWZvcm1hdC1oYWNrLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4L2RlYmlhbi8wMDAzLUFkZC1taXBzLW42NC1yZWxvY2F0aW9uLWZvcm1hdC1oYWNrLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi8wMDAzLUFkZC1taXBzLW42NC1yZWxvY2F0aW9uLWZvcm1hdC1oYWNrLnBhdGNoCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4L2RlYmlhbi9hcm1fYmFja2VuZC5kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vYXJtX2JhY2tlbmQuZGlmZgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2OC9kZWJpYW4vYXJtX2JhY2tlbmQuZGlmZgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vYXJtX2JhY2tlbmQuZGlmZgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2OC9mYWxsdGhyb3VnaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuL2ZhbGx0aHJvdWdoLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4L2ZhbGx0aHJvdWdoLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi9mYWxsdGhyb3VnaC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2OC9kZWJpYW4vaHBwYV9iYWNrZW5kLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi9ocHBhX2JhY2tlbmQuZGlmZgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9lbGZ1dGlscy0wLjE2OC9kZWJpYW4vaHBwYV9iYWNrZW5kLmRpZmYKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuL2hwcGFfYmFja2VuZC5kaWZmCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi9taXBzX2JhY2tlbmQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi9taXBzX2JhY2tlbmQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmUwZTU0YgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuL21pcHNfYmFja2VuZC5wYXRjaApAQCAtMCwwICsxLDcxNSBAQAorRnJvbSA0NmQwZDBjYTcxODA5MzQ4NmVlZWVkZjFiNDQxMzRlOWUyOWI1NmY3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAxNiBBdWcgMjAxNyAwOToxODo1OSArMDgwMAorU3ViamVjdDogW1BBVENIXSBtaXBzIGJhY2tlbmRzCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2Zyb20gZGViaWFuXQorCitSZWJhc2UgdG8gMC4xNzAKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGJhY2tlbmRzL01ha2VmaWxlLmFtICAgIHwgICA4ICstCisgYmFja2VuZHMvbWlwc19pbml0LmMgICAgfCAgNTkgKysrKysrKysrCisgYmFja2VuZHMvbWlwc19yZWdzLmMgICAgfCAxMDQgKysrKysrKysrKysrKysrKworIGJhY2tlbmRzL21pcHNfcmVsb2MuZGVmIHwgIDc5ICsrKysrKysrKysrKworIGJhY2tlbmRzL21pcHNfcmV0dmFsLmMgIHwgMzIxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIGJhY2tlbmRzL21pcHNfc3ltYm9sLmMgIHwgIDUyICsrKysrKysrCisgbGliZWJsL2VibG9wZW5iYWNrZW5kLmMgfCAgIDIgKworIDcgZmlsZXMgY2hhbmdlZCwgNjIzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGJhY2tlbmRzL21pcHNfaW5pdC5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGJhY2tlbmRzL21pcHNfcmVncy5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGJhY2tlbmRzL21pcHNfcmVsb2MuZGVmCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGJhY2tlbmRzL21pcHNfcmV0dmFsLmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgYmFja2VuZHMvbWlwc19zeW1ib2wuYworCitkaWZmIC0tZ2l0IGEvYmFja2VuZHMvTWFrZWZpbGUuYW0gYi9iYWNrZW5kcy9NYWtlZmlsZS5hbQoraW5kZXggN2YxZjVkNC4uOTFiYWY2ZSAxMDA2NDQKKy0tLSBhL2JhY2tlbmRzL01ha2VmaWxlLmFtCisrKysgYi9iYWNrZW5kcy9NYWtlZmlsZS5hbQorQEAgLTMzLDEyICszMywxMiBAQCBBTV9DUFBGTEFHUyArPSAtSSQodG9wX3NyY2RpcikvbGliZWJsIC1JJCh0b3Bfc3JjZGlyKS9saWJhc20gXAorIAorIAorIG1vZHVsZXMgPSBpMzg2IHNoIHg4Nl82NCBpYTY0IGFscGhhIGFybSBhYXJjaDY0IHNwYXJjIHBwYyBwcGM2NCBzMzkwIFwKKy0JICB0aWxlZ3ggbTY4ayBicGYgcGFyaXNjCisrCSAgdGlsZWd4IG02OGsgYnBmIHBhcmlzYyBtaXBzCisgbGliZWJsX3BpYyA9IGxpYmVibF9pMzg2X3BpYy5hIGxpYmVibF9zaF9waWMuYSBsaWJlYmxfeDg2XzY0X3BpYy5hICAgIFwKKyAJICAgICBsaWJlYmxfaWE2NF9waWMuYSBsaWJlYmxfYWxwaGFfcGljLmEgbGliZWJsX2FybV9waWMuYSAgICBcCisgCSAgICAgbGliZWJsX2FhcmNoNjRfcGljLmEgbGliZWJsX3NwYXJjX3BpYy5hIGxpYmVibF9wcGNfcGljLmEgXAorIAkgICAgIGxpYmVibF9wcGM2NF9waWMuYSBsaWJlYmxfczM5MF9waWMuYSBsaWJlYmxfdGlsZWd4X3BpYy5hIFwKKy0JICAgICBsaWJlYmxfbTY4a19waWMuYSBsaWJlYmxfYnBmX3BpYy5hIGxpYmVibF9wYXJpc2NfcGljLmEKKysJICAgICBsaWJlYmxfbTY4a19waWMuYSBsaWJlYmxfYnBmX3BpYy5hIGxpYmVibF9wYXJpc2NfcGljLmEgbGliZWJsX21pcHNfcGljLmEKKyBub2luc3RfTElCUkFSSUVTID0gJChsaWJlYmxfcGljKQorIG5vaW5zdF9EQVRBID0gJChsaWJlYmxfcGljOl9waWMuYT0uc28pCisgCitAQCAtMTI4LDYgKzEyOCwxMCBAQCBwYXJpc2NfU1JDUyA9IHBhcmlzY19pbml0LmMgcGFyaXNjX3N5bWJvbC5jIHBhcmlzY19yZWdzLmMgcGFyaXNjX3JldHZhbC5jCisgbGliZWJsX3BhcmlzY19waWNfYV9TT1VSQ0VTID0gJChwYXJpc2NfU1JDUykKKyBhbV9saWJlYmxfcGFyaXNjX3BpY19hX09CSkVDVFMgPSAkKHBhcmlzY19TUkNTOi5jPS5vcykKKyAKKyttaXBzX1NSQ1MgPSBtaXBzX2luaXQuYyBtaXBzX3N5bWJvbC5jIG1pcHNfcmVncy5jIG1pcHNfcmV0dmFsLmMKKytsaWJlYmxfbWlwc19waWNfYV9TT1VSQ0VTID0gJChtaXBzX1NSQ1MpCisrYW1fbGliZWJsX21pcHNfcGljX2FfT0JKRUNUUyA9ICQobWlwc19TUkNTOi5jPS5vcykKKysKKyBsaWJlYmxfJS5zbyBsaWJlYmxfJS5tYXA6IGxpYmVibF8lX3BpYy5hICQobGliZWxmKSAkKGxpYmR3KSAkKGxpYmV1KQorIAlAcm0gLWYgJChAOi5zbz0ubWFwKQorIAkkKEFNX1ZfYXQpZWNobyAnRUxGVVRJTFNfJChQQUNLQUdFX1ZFUlNJT04pIHsgZ2xvYmFsOiAkKl9pbml0OyBsb2NhbDogKjsgfTsnIFwKK2RpZmYgLS1naXQgYS9iYWNrZW5kcy9taXBzX2luaXQuYyBiL2JhY2tlbmRzL21pcHNfaW5pdC5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uOTc1YzA0ZQorLS0tIC9kZXYvbnVsbAorKysrIGIvYmFja2VuZHMvbWlwc19pbml0LmMKK0BAIC0wLDAgKzEsNTkgQEAKKysvKiBJbml0aWFsaXphdGlvbiBvZiBtaXBzIHNwZWNpZmljIGJhY2tlbmQgbGlicmFyeS4KKysgICBDb3B5cmlnaHQgKEMpIDIwMDYgUmVkIEhhdCwgSW5jLgorKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIFJlZCBIYXQgZWxmdXRpbHMuCisrCisrICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisrICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UuCisrCisrICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKysgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKysgICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKysgICB3aXRoIFJlZCBIYXQgZWxmdXRpbHM7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKysgICBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24gTUEgMDIxMTAtMTMwMSBVU0EuCisrCisrICAgUmVkIEhhdCBlbGZ1dGlscyBpcyBhbiBpbmNsdWRlZCBwYWNrYWdlIG9mIHRoZSBPcGVuIEludmVudGlvbiBOZXR3b3JrLgorKyAgIEFuIGluY2x1ZGVkIHBhY2thZ2Ugb2YgdGhlIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsgaXMgYSBwYWNrYWdlIGZvciB3aGljaAorKyAgIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsgbGljZW5zZWVzIGNyb3NzLWxpY2Vuc2UgdGhlaXIgcGF0ZW50cy4gIE5vIHBhdGVudAorKyAgIGxpY2Vuc2UgaXMgZ3JhbnRlZCwgZWl0aGVyIGV4cHJlc3NseSBvciBpbXBsaWVkbHksIGJ5IGRlc2lnbmF0aW9uIGFzIGFuCisrICAgaW5jbHVkZWQgcGFja2FnZS4gIFNob3VsZCB5b3Ugd2lzaCB0byBwYXJ0aWNpcGF0ZSBpbiB0aGUgT3BlbiBJbnZlbnRpb24KKysgICBOZXR3b3JrIGxpY2Vuc2luZyBwcm9ncmFtLCBwbGVhc2UgdmlzaXQgd3d3Lm9wZW5pbnZlbnRpb25uZXR3b3JrLmNvbQorKyAgIDxodHRwOi8vd3d3Lm9wZW5pbnZlbnRpb25uZXR3b3JrLmNvbT4uICAqLworKworKyNpZmRlZiBIQVZFX0NPTkZJR19ICisrIyBpbmNsdWRlIDxjb25maWcuaD4KKysjZW5kaWYKKysKKysjZGVmaW5lIEJBQ0tFTkQJCW1pcHNfCisrI2RlZmluZSBSRUxPQ19QUkVGSVgJUl9NSVBTXworKyNpbmNsdWRlICJsaWJlYmxfQ1BVLmgiCisrCisrLyogVGhpcyBkZWZpbmVzIHRoZSBjb21tb24gcmVsb2MgaG9va3MgYmFzZWQgb24gbWlwc19yZWxvYy5kZWYuICAqLworKyNpbmNsdWRlICJjb21tb24tcmVsb2MuYyIKKysKKytjb25zdCBjaGFyICoKKyttaXBzX2luaXQgKEVsZiAqZWxmIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKKysgICAgIEdFbGZfSGFsZiBtYWNoaW5lIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwKKysgICAgIEVibCAqZWgsCisrICAgICBzaXplX3QgZWhsZW4pCisreworKyAgLyogQ2hlY2sgd2hldGhlciB0aGUgRWxmX0JIIG9iamVjdCBoYXMgYSBzdWZmaWNlbnQgc2l6ZS4gICovCisrICBpZiAoZWhsZW4gPCBzaXplb2YgKEVibCkpCisrICAgIHJldHVybiBOVUxMOworKworKyAgLyogV2UgaGFuZGxlIGl0LiAgKi8KKysgIGlmIChtYWNoaW5lID09IEVNX01JUFMpCisrICAgIGVoLT5uYW1lID0gIk1JUFMgUjMwMDAgYmlnLWVuZGlhbiI7CisrICBlbHNlIGlmIChtYWNoaW5lID09IEVNX01JUFNfUlMzX0xFKQorKyAgICBlaC0+bmFtZSA9ICJNSVBTIFIzMDAwIGxpdHRsZS1lbmRpYW4iOworKworKyAgbWlwc19pbml0X3JlbG9jIChlaCk7CisrICBIT09LIChlaCwgcmVsb2Nfc2ltcGxlX3R5cGUpOworKyAgSE9PSyAoZWgsIHJldHVybl92YWx1ZV9sb2NhdGlvbik7CisrICBIT09LIChlaCwgcmVnaXN0ZXJfaW5mbyk7CisrCisrICByZXR1cm4gTU9EVkVSU0lPTjsKKyt9CitkaWZmIC0tZ2l0IGEvYmFja2VuZHMvbWlwc19yZWdzLmMgYi9iYWNrZW5kcy9taXBzX3JlZ3MuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjQ0Zjg2Y2IKKy0tLSAvZGV2L251bGwKKysrKyBiL2JhY2tlbmRzL21pcHNfcmVncy5jCitAQCAtMCwwICsxLDEwNCBAQAorKy8qIFJlZ2lzdGVyIG5hbWVzIGFuZCBudW1iZXJzIGZvciBNSVBTIERXQVJGLgorKyAgIENvcHlyaWdodCAoQykgMjAwNiBSZWQgSGF0LCBJbmMuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgUmVkIEhhdCBlbGZ1dGlscy4KKysKKysgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKysgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZS4KKysKKysgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorKyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworKyAgIHdpdGggUmVkIEhhdCBlbGZ1dGlsczsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorKyAgIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiBNQSAwMjExMC0xMzAxIFVTQS4KKysKKysgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGFuIGluY2x1ZGVkIHBhY2thZ2Ugb2YgdGhlIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsuCisrICAgQW4gaW5jbHVkZWQgcGFja2FnZSBvZiB0aGUgT3BlbiBJbnZlbnRpb24gTmV0d29yayBpcyBhIHBhY2thZ2UgZm9yIHdoaWNoCisrICAgT3BlbiBJbnZlbnRpb24gTmV0d29yayBsaWNlbnNlZXMgY3Jvc3MtbGljZW5zZSB0aGVpciBwYXRlbnRzLiAgTm8gcGF0ZW50CisrICAgbGljZW5zZSBpcyBncmFudGVkLCBlaXRoZXIgZXhwcmVzc2x5IG9yIGltcGxpZWRseSwgYnkgZGVzaWduYXRpb24gYXMgYW4KKysgICBpbmNsdWRlZCBwYWNrYWdlLiAgU2hvdWxkIHlvdSB3aXNoIHRvIHBhcnRpY2lwYXRlIGluIHRoZSBPcGVuIEludmVudGlvbgorKyAgIE5ldHdvcmsgbGljZW5zaW5nIHByb2dyYW0sIHBsZWFzZSB2aXNpdCB3d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tCisrICAgPGh0dHA6Ly93d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tPi4gICovCisrCisrI2lmZGVmIEhBVkVfQ09ORklHX0gKKysjIGluY2x1ZGUgPGNvbmZpZy5oPgorKyNlbmRpZgorKworKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysjaW5jbHVkZSA8ZHdhcmYuaD4KKysKKysjZGVmaW5lIEJBQ0tFTkQgbWlwc18KKysjaW5jbHVkZSAibGliZWJsX0NQVS5oIgorKworK3NzaXplX3QKKyttaXBzX3JlZ2lzdGVyX2luZm8gKEVibCAqZWJsIF9fYXR0cmlidXRlX18oKHVudXNlZCkpLAorKwkJICAgIGludCByZWdubywgY2hhciAqbmFtZSwgc2l6ZV90IG5hbWVsZW4sCisrCQkgICAgY29uc3QgY2hhciAqKnByZWZpeCwgY29uc3QgY2hhciAqKnNldG5hbWUsCisrCQkgICAgaW50ICpiaXRzLCBpbnQgKnR5cGUpCisreworKyAgaWYgKG5hbWUgPT0gTlVMTCkKKysgICAgcmV0dXJuIDY2OworKworKyAgaWYgKHJlZ25vIDwgMCB8fCByZWdubyA+IDY1IHx8IG5hbWVsZW4gPCA0KQorKyAgICByZXR1cm4gLTE7CisrCisrICAqcHJlZml4ID0gIiQiOworKworKyAgaWYgKHJlZ25vIDwgMzIpCisrICAgIHsKKysgICAgICAqc2V0bmFtZSA9ICJpbnRlZ2VyIjsKKysgICAgICAqdHlwZSA9IERXX0FURV9zaWduZWQ7CisrICAgICAgKmJpdHMgPSAzMjsKKysgICAgICBpZiAocmVnbm8gPCAzMiArIDEwKQorKyAgICAgICAgeworKyAgICAgICAgICBuYW1lWzBdID0gcmVnbm8gKyAnMCc7CisrICAgICAgICAgIG5hbWVsZW4gPSAxOworKyAgICAgICAgfQorKyAgICAgIGVsc2UKKysgICAgICAgIHsKKysgICAgICAgICAgbmFtZVswXSA9IChyZWdubyAvIDEwKSArICcwJzsKKysgICAgICAgICAgbmFtZVsxXSA9IChyZWdubyAlIDEwKSArICcwJzsKKysgICAgICAgICAgbmFtZWxlbiA9IDI7CisrICAgICAgICB9CisrICAgIH0KKysgIGVsc2UgaWYgKHJlZ25vIDwgNjQpCisrICAgIHsKKysgICAgICAqc2V0bmFtZSA9ICJGUFUiOworKyAgICAgICp0eXBlID0gRFdfQVRFX2Zsb2F0OworKyAgICAgICpiaXRzID0gMzI7CisrICAgICAgbmFtZVswXSA9ICdmJzsKKysgICAgICBpZiAocmVnbm8gPCAzMiArIDEwKQorKwl7CisrCSAgbmFtZVsxXSA9IChyZWdubyAtIDMyKSArICcwJzsKKysJICBuYW1lbGVuID0gMjsKKysJfQorKyAgICAgIGVsc2UKKysJeworKwkgIG5hbWVbMV0gPSAocmVnbm8gLSAzMikgLyAxMCArICcwJzsKKysJICBuYW1lWzJdID0gKHJlZ25vIC0gMzIpICUgMTAgKyAnMCc7CisrCSAgbmFtZWxlbiA9IDM7CisrCX0KKysgICAgfQorKyAgZWxzZSBpZiAocmVnbm8gPT0gNjQpCisrICAgIHsKKysgICAgICAqdHlwZSA9IERXX0FURV9zaWduZWQ7CisrICAgICAgKmJpdHMgPSAzMjsKKysgICAgICBuYW1lWzBdID0gJ2gnOworKyAgICAgIG5hbWVbMV0gPSAnaSc7CisrICAgICAgbmFtZWxlbiA9IDI7CisrICAgIH0KKysgIGVsc2UKKysgICAgeworKyAgICAgICp0eXBlID0gRFdfQVRFX3NpZ25lZDsKKysgICAgICAqYml0cyA9IDMyOworKyAgICAgIG5hbWVbMF0gPSAnbCc7CisrICAgICAgbmFtZVsxXSA9ICdvJzsKKysgICAgICBuYW1lbGVuID0gMjsKKysgICAgfQorKworKyAgbmFtZVtuYW1lbGVuKytdID0gJ1wwJzsKKysgIHJldHVybiBuYW1lbGVuOworK30KK2RpZmYgLS1naXQgYS9iYWNrZW5kcy9taXBzX3JlbG9jLmRlZiBiL2JhY2tlbmRzL21pcHNfcmVsb2MuZGVmCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uNDU3OTk3MAorLS0tIC9kZXYvbnVsbAorKysrIGIvYmFja2VuZHMvbWlwc19yZWxvYy5kZWYKK0BAIC0wLDAgKzEsNzkgQEAKKysvKiBMaXN0IHRoZSByZWxvY2F0aW9uIHR5cGVzIGZvciBtaXBzLiAgLSotIEMgLSotCisrICAgQ29weXJpZ2h0IChDKSAyMDA2IFJlZCBIYXQsIEluYy4KKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBSZWQgSGF0IGVsZnV0aWxzLgorKworKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorKyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLgorKworKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisrICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisrICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisrICAgd2l0aCBSZWQgSGF0IGVsZnV0aWxzOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisrICAgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uIE1BIDAyMTEwLTEzMDEgVVNBLgorKworKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgYW4gaW5jbHVkZWQgcGFja2FnZSBvZiB0aGUgT3BlbiBJbnZlbnRpb24gTmV0d29yay4KKysgICBBbiBpbmNsdWRlZCBwYWNrYWdlIG9mIHRoZSBPcGVuIEludmVudGlvbiBOZXR3b3JrIGlzIGEgcGFja2FnZSBmb3Igd2hpY2gKKysgICBPcGVuIEludmVudGlvbiBOZXR3b3JrIGxpY2Vuc2VlcyBjcm9zcy1saWNlbnNlIHRoZWlyIHBhdGVudHMuICBObyBwYXRlbnQKKysgICBsaWNlbnNlIGlzIGdyYW50ZWQsIGVpdGhlciBleHByZXNzbHkgb3IgaW1wbGllZGx5LCBieSBkZXNpZ25hdGlvbiBhcyBhbgorKyAgIGluY2x1ZGVkIHBhY2thZ2UuICBTaG91bGQgeW91IHdpc2ggdG8gcGFydGljaXBhdGUgaW4gdGhlIE9wZW4gSW52ZW50aW9uCisrICAgTmV0d29yayBsaWNlbnNpbmcgcHJvZ3JhbSwgcGxlYXNlIHZpc2l0IHd3dy5vcGVuaW52ZW50aW9ubmV0d29yay5jb20KKysgICA8aHR0cDovL3d3dy5vcGVuaW52ZW50aW9ubmV0d29yay5jb20+LiAgKi8KKysKKysvKiAJICAgIE5BTUUsCQlSRUx8RVhFQ3xEWU4JKi8KKysKKytSRUxPQ19UWVBFIChOT05FLCAgICAgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoMTYsICAgICAgICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKDMyLCAgICAgICAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChSRUwzMiwgICAgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoMjYsICAgICAgICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKEhJMTYsICAgICAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChMTzE2LCAgICAgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoR1BSRUwxNiwgICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKExJVEVSQUwsICAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChHT1QxNiwgICAgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoUEMxNiwgICAgICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKENBTEwxNiwgICAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChHUFJFTDMyLCAgICAgICAgICAgIDApCisrCisrUkVMT0NfVFlQRSAoU0hJRlQ1LCAgICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKFNISUZUNiwgICAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFICg2NCwgICAgICAgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoR09UX0RJU1AsICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKEdPVF9QQUdFLCAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChHT1RfT0ZTVCwgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoR09UX0hJMTYsICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKEdPVF9MTzE2LCAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChTVUIsICAgICAgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoSU5TRVJUX0EsICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKElOU0VSVF9CLCAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChERUxFVEUsICAgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoSElHSEVSLCAgICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKEhJR0hFU1QsICAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChDQUxMX0hJMTYsICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoQ0FMTF9MTzE2LCAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKFNDTl9ESVNQLCAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChSRUwxNiwgICAgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoQUREX0lNTUVESUFURSwgICAgICAwKQorK1JFTE9DX1RZUEUgKFBKVU1QLCAgICAgICAgICAgICAgMCkKKytSRUxPQ19UWVBFIChSRUxHT1QsICAgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoSkFMUiwgICAgICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKFRMU19EVFBNT0QzMiwgICAgICAgMCkKKytSRUxPQ19UWVBFIChUTFNfRFRQUkVMMzIsICAgICAgIDApCisrUkVMT0NfVFlQRSAoVExTX0RUUE1PRDY0LCAgICAgICAwKQorK1JFTE9DX1RZUEUgKFRMU19EVFBSRUw2NCwgICAgICAgMCkKKytSRUxPQ19UWVBFIChUTFNfR0QsICAgICAgICAgICAgIDApCisrUkVMT0NfVFlQRSAoVExTX0xETSwgICAgICAgICAgICAwKQorK1JFTE9DX1RZUEUgKFRMU19EVFBSRUxfSEkxNiwgICAgMCkKKytSRUxPQ19UWVBFIChUTFNfRFRQUkVMX0xPMTYsICAgIDApCisrUkVMT0NfVFlQRSAoVExTX0dPVFRQUkVMLCAgICAgICAwKQorK1JFTE9DX1RZUEUgKFRMU19UUFJFTDMyLCAgICAgICAgMCkKKytSRUxPQ19UWVBFIChUTFNfVFBSRUw2NCwgICAgICAgIDApCisrUkVMT0NfVFlQRSAoVExTX1RQUkVMX0hJMTYsICAgICAwKQorK1JFTE9DX1RZUEUgKFRMU19UUFJFTF9MTzE2LCAgICAgMCkKKysKKysjZGVmaW5lIE5PX0NPUFlfUkVMT0MgMQorKyNkZWZpbmUgTk9fUkVMQVRJVkVfUkVMT0MgMQorZGlmZiAtLWdpdCBhL2JhY2tlbmRzL21pcHNfcmV0dmFsLmMgYi9iYWNrZW5kcy9taXBzX3JldHZhbC5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uNjU2Y2QxZgorLS0tIC9kZXYvbnVsbAorKysrIGIvYmFja2VuZHMvbWlwc19yZXR2YWwuYworQEAgLTAsMCArMSwzMjEgQEAKKysvKiBGdW5jdGlvbiByZXR1cm4gdmFsdWUgbG9jYXRpb24gZm9yIExpbnV4L21pcHMgQUJJLgorKyAgIENvcHlyaWdodCAoQykgMjAwNSBSZWQgSGF0LCBJbmMuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgUmVkIEhhdCBlbGZ1dGlscy4KKysKKysgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKysgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZS4KKysKKysgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorKyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworKyAgIHdpdGggUmVkIEhhdCBlbGZ1dGlsczsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorKyAgIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiBNQSAwMjExMC0xMzAxIFVTQS4KKysKKysgICBSZWQgSGF0IGVsZnV0aWxzIGlzIGFuIGluY2x1ZGVkIHBhY2thZ2Ugb2YgdGhlIE9wZW4gSW52ZW50aW9uIE5ldHdvcmsuCisrICAgQW4gaW5jbHVkZWQgcGFja2FnZSBvZiB0aGUgT3BlbiBJbnZlbnRpb24gTmV0d29yayBpcyBhIHBhY2thZ2UgZm9yIHdoaWNoCisrICAgT3BlbiBJbnZlbnRpb24gTmV0d29yayBsaWNlbnNlZXMgY3Jvc3MtbGljZW5zZSB0aGVpciBwYXRlbnRzLiAgTm8gcGF0ZW50CisrICAgbGljZW5zZSBpcyBncmFudGVkLCBlaXRoZXIgZXhwcmVzc2x5IG9yIGltcGxpZWRseSwgYnkgZGVzaWduYXRpb24gYXMgYW4KKysgICBpbmNsdWRlZCBwYWNrYWdlLiAgU2hvdWxkIHlvdSB3aXNoIHRvIHBhcnRpY2lwYXRlIGluIHRoZSBPcGVuIEludmVudGlvbgorKyAgIE5ldHdvcmsgbGljZW5zaW5nIHByb2dyYW0sIHBsZWFzZSB2aXNpdCB3d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tCisrICAgPGh0dHA6Ly93d3cub3BlbmludmVudGlvbm5ldHdvcmsuY29tPi4gICovCisrCisrI2lmZGVmIEhBVkVfQ09ORklHX0gKKysjIGluY2x1ZGUgPGNvbmZpZy5oPgorKyNlbmRpZgorKworKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysjaW5jbHVkZSA8YXNzZXJ0Lmg+CisrI2luY2x1ZGUgPGR3YXJmLmg+CisrI2luY2x1ZGUgPGVsZi5oPgorKworKyNpbmNsdWRlICIuLi9saWJlYmwvbGliZWJsUC5oIgorKyNpbmNsdWRlICIuLi9saWJkdy9saWJkd1AuaCIKKysKKysjZGVmaW5lIEJBQ0tFTkQgbWlwc18KKysjaW5jbHVkZSAibGliZWJsX0NQVS5oIgorKworKy8qIFRoZSBBQkkgb2YgdGhlIGZpbGUuICBBbHNvIHNlZSBFRl9NSVBTX0FCSTIgYWJvdmUuICovCisrI2RlZmluZSBFRl9NSVBTX0FCSQkJMHgwMDAwRjAwMAorKworKy8qIFRoZSBvcmlnaW5hbCBvMzIgYWJpLiAqLworKyNkZWZpbmUgRV9NSVBTX0FCSV9PMzIgICAgICAgICAgMHgwMDAwMTAwMAorKworKy8qIE8zMiBleHRlbmRlZCB0byB3b3JrIG9uIDY0IGJpdCBhcmNoaXRlY3R1cmVzICovCisrI2RlZmluZSBFX01JUFNfQUJJX082NCAgICAgICAgICAweDAwMDAyMDAwCisrCisrLyogRUFCSSBpbiAzMiBiaXQgbW9kZSAqLworKyNkZWZpbmUgRV9NSVBTX0FCSV9FQUJJMzIgICAgICAgMHgwMDAwMzAwMAorKworKy8qIEVBQkkgaW4gNjQgYml0IG1vZGUgKi8KKysjZGVmaW5lIEVfTUlQU19BQklfRUFCSTY0ICAgICAgIDB4MDAwMDQwMDAKKysKKysvKiBBbGwgdGhlIHBvc3NpYmxlIE1JUFMgQUJJcy4gKi8KKytlbnVtIG1pcHNfYWJpCisrICB7CisrICAgIE1JUFNfQUJJX1VOS05PV04gPSAwLAorKyAgICBNSVBTX0FCSV9OMzIsCisrICAgIE1JUFNfQUJJX08zMiwKKysgICAgTUlQU19BQklfTjY0LAorKyAgICBNSVBTX0FCSV9PNjQsCisrICAgIE1JUFNfQUJJX0VBQkkzMiwKKysgICAgTUlQU19BQklfRUFCSTY0LAorKyAgICBNSVBTX0FCSV9MQVNUCisrICB9OworKworKy8qIEZpbmQgdGhlIG1pcHMgQUJJIG9mIHRoZSBjdXJyZW50IGZpbGUgKi8KKytlbnVtIG1pcHNfYWJpIGZpbmRfbWlwc19hYmkoRWxmICplbGYpCisreworKyAgR0VsZl9FaGRyIGVoZHJfbWVtOworKyAgR0VsZl9FaGRyICplaGRyID0gZ2VsZl9nZXRlaGRyIChlbGYsICZlaGRyX21lbSk7CisrCisrICBpZiAoZWhkciA9PSBOVUxMKQorKyAgICByZXR1cm4gTUlQU19BQklfTEFTVDsKKysKKysgIEdFbGZfV29yZCBlbGZfZmxhZ3MgPSBlaGRyLT5lX2ZsYWdzOworKworKyAgLyogQ2hlY2sgZWxmX2ZsYWdzIHRvIHNlZSBpZiBpdCBzcGVjaWZpZXMgdGhlIEFCSSBiZWluZyB1c2VkLiAgKi8KKysgIHN3aXRjaCAoKGVsZl9mbGFncyAmIEVGX01JUFNfQUJJKSkKKysgICAgeworKyAgICBjYXNlIEVfTUlQU19BQklfTzMyOgorKyAgICAgIHJldHVybiBNSVBTX0FCSV9PMzI7CisrICAgIGNhc2UgRV9NSVBTX0FCSV9PNjQ6CisrICAgICAgcmV0dXJuIE1JUFNfQUJJX082NDsKKysgICAgY2FzZSBFX01JUFNfQUJJX0VBQkkzMjoKKysgICAgICByZXR1cm4gTUlQU19BQklfRUFCSTMyOworKyAgICBjYXNlIEVfTUlQU19BQklfRUFCSTY0OgorKyAgICAgIHJldHVybiBNSVBTX0FCSV9FQUJJNjQ7CisrICAgIGRlZmF1bHQ6CisrICAgICAgaWYgKChlbGZfZmxhZ3MgJiBFRl9NSVBTX0FCSTIpKQorKwlyZXR1cm4gTUlQU19BQklfTjMyOworKyAgICB9CisrCisrICAvKiBHQ0MgY3JlYXRlcyBhIHBzZXVkby1zZWN0aW9uIHdob3NlIG5hbWUgZGVzY3JpYmVzIHRoZSBBQkkuICAqLworKyAgc2l6ZV90IHNoc3RybmR4OworKyAgaWYgKGVsZl9nZXRzaGRyc3RybmR4IChlbGYsICZzaHN0cm5keCkgPCAwKQorKyAgICByZXR1cm4gTUlQU19BQklfTEFTVDsKKysKKysgIGNvbnN0IGNoYXIgKm5hbWU7CisrICBFbGZfU2NuICpzY24gPSBOVUxMOworKyAgd2hpbGUgKChzY24gPSBlbGZfbmV4dHNjbiAoZWxmLCBzY24pKSAhPSBOVUxMKQorKyAgICB7CisrICAgICAgR0VsZl9TaGRyIHNoZHJfbWVtOworKyAgICAgIEdFbGZfU2hkciAqc2hkciA9IGdlbGZfZ2V0c2hkciAoc2NuLCAmc2hkcl9tZW0pOworKyAgICAgIGlmIChzaGRyID09IE5VTEwpCisrICAgICAgICByZXR1cm4gTUlQU19BQklfTEFTVDsKKysKKysgICAgICBuYW1lID0gZWxmX3N0cnB0ciAoZWxmLCBzaHN0cm5keCwgc2hkci0+c2hfbmFtZSkgPzogIiI7CisrICAgICAgaWYgKHN0cm5jbXAgKG5hbWUsICIubWRlYnVnLiIsIDgpICE9IDApCisrICAgICAgICBjb250aW51ZTsKKysKKysgICAgICBpZiAoc3RyY21wIChuYW1lLCAiLm1kZWJ1Zy5hYmkzMiIpID09IDApCisrICAgICAgICByZXR1cm4gTUlQU19BQklfTzMyOworKyAgICAgIGVsc2UgaWYgKHN0cmNtcCAobmFtZSwgIi5tZGVidWcuYWJpTjMyIikgPT0gMCkKKysgICAgICAgIHJldHVybiBNSVBTX0FCSV9OMzI7CisrICAgICAgZWxzZSBpZiAoc3RyY21wIChuYW1lLCAiLm1kZWJ1Zy5hYmk2NCIpID09IDApCisrICAgICAgICByZXR1cm4gTUlQU19BQklfTjY0OworKyAgICAgIGVsc2UgaWYgKHN0cmNtcCAobmFtZSwgIi5tZGVidWcuYWJpTzY0IikgPT0gMCkKKysgICAgICAgIHJldHVybiBNSVBTX0FCSV9PNjQ7CisrICAgICAgZWxzZSBpZiAoc3RyY21wIChuYW1lLCAiLm1kZWJ1Zy5lYWJpMzIiKSA9PSAwKQorKyAgICAgICAgcmV0dXJuIE1JUFNfQUJJX0VBQkkzMjsKKysgICAgICBlbHNlIGlmIChzdHJjbXAgKG5hbWUsICIubWRlYnVnLmVhYmk2NCIpID09IDApCisrICAgICAgICByZXR1cm4gTUlQU19BQklfRUFCSTY0OworKyAgICAgIGVsc2UKKysgICAgICAgIHJldHVybiBNSVBTX0FCSV9VTktOT1dOOworKyAgICB9CisrCisrICByZXR1cm4gTUlQU19BQklfVU5LTk9XTjsKKyt9CisrCisrdW5zaWduZWQgaW50CisrbWlwc19hYmlfcmVnc2l6ZSAoZW51bSBtaXBzX2FiaSBhYmkpCisreworKyAgc3dpdGNoIChhYmkpCisrICAgIHsKKysgICAgY2FzZSBNSVBTX0FCSV9FQUJJMzI6CisrICAgIGNhc2UgTUlQU19BQklfTzMyOgorKyAgICAgIHJldHVybiA0OworKyAgICBjYXNlIE1JUFNfQUJJX04zMjoKKysgICAgY2FzZSBNSVBTX0FCSV9ONjQ6CisrICAgIGNhc2UgTUlQU19BQklfTzY0OgorKyAgICBjYXNlIE1JUFNfQUJJX0VBQkk2NDoKKysgICAgICByZXR1cm4gODsKKysgICAgY2FzZSBNSVBTX0FCSV9VTktOT1dOOgorKyAgICBjYXNlIE1JUFNfQUJJX0xBU1Q6CisrICAgIGRlZmF1bHQ6CisrICAgICAgcmV0dXJuIDA7CisrICAgIH0KKyt9CisrCisrCisrLyogJHYwIG9yIHBhaXIgJHYwLCAkdjEgKi8KKytzdGF0aWMgY29uc3QgRHdhcmZfT3AgbG9jX2ludHJlZ19vMzJbXSA9CisrICB7CisrICAgIHsgLmF0b20gPSBEV19PUF9yZWcyIH0sIHsgLmF0b20gPSBEV19PUF9waWVjZSwgLm51bWJlciA9IDQgfSwKKysgICAgeyAuYXRvbSA9IERXX09QX3JlZzMgfSwgeyAuYXRvbSA9IERXX09QX3BpZWNlLCAubnVtYmVyID0gNCB9LAorKyAgfTsKKysKKytzdGF0aWMgY29uc3QgRHdhcmZfT3AgbG9jX2ludHJlZ1tdID0KKysgIHsKKysgICAgeyAuYXRvbSA9IERXX09QX3JlZzIgfSwgeyAuYXRvbSA9IERXX09QX3BpZWNlLCAubnVtYmVyID0gOCB9LAorKyAgICB7IC5hdG9tID0gRFdfT1BfcmVnMyB9LCB7IC5hdG9tID0gRFdfT1BfcGllY2UsIC5udW1iZXIgPSA4IH0sCisrICB9OworKyNkZWZpbmUgbmxvY19pbnRyZWcJMQorKyNkZWZpbmUgbmxvY19pbnRyZWdwYWlyCTQKKysKKysvKiAkZjAgKGZsb2F0KSwgb3IgcGFpciAkZjAsICRmMSAoZG91YmxlKS4KKysgKiBmMi9mMyBhcmUgdXNlZCBmb3IgQ09NUExFWCAoPSAyIGRvdWJsZXMpIHJldHVybnMgaW4gRm9ydHJhbiAqLworK3N0YXRpYyBjb25zdCBEd2FyZl9PcCBsb2NfZnByZWdfbzMyW10gPQorKyAgeworKyAgICB7IC5hdG9tID0gRFdfT1BfcmVneCwgLm51bWJlciA9IDMyIH0sIHsgLmF0b20gPSBEV19PUF9waWVjZSwgLm51bWJlciA9IDQgfSwKKysgICAgeyAuYXRvbSA9IERXX09QX3JlZ3gsIC5udW1iZXIgPSAzMyB9LCB7IC5hdG9tID0gRFdfT1BfcGllY2UsIC5udW1iZXIgPSA0IH0sCisrICAgIHsgLmF0b20gPSBEV19PUF9yZWd4LCAubnVtYmVyID0gMzQgfSwgeyAuYXRvbSA9IERXX09QX3BpZWNlLCAubnVtYmVyID0gNCB9LAorKyAgICB7IC5hdG9tID0gRFdfT1BfcmVneCwgLm51bWJlciA9IDM1IH0sIHsgLmF0b20gPSBEV19PUF9waWVjZSwgLm51bWJlciA9IDQgfSwKKysgIH07CisrCisrLyogJGYwLCBvciBwYWlyICRmMCwgJGYyLiAgKi8KKytzdGF0aWMgY29uc3QgRHdhcmZfT3AgbG9jX2ZwcmVnW10gPQorKyAgeworKyAgICB7IC5hdG9tID0gRFdfT1BfcmVneCwgLm51bWJlciA9IDMyIH0sIHsgLmF0b20gPSBEV19PUF9waWVjZSwgLm51bWJlciA9IDggfSwKKysgICAgeyAuYXRvbSA9IERXX09QX3JlZ3gsIC5udW1iZXIgPSAzNCB9LCB7IC5hdG9tID0gRFdfT1BfcGllY2UsIC5udW1iZXIgPSA4IH0sCisrICB9OworKyNkZWZpbmUgbmxvY19mcHJlZyAgMQorKyNkZWZpbmUgbmxvY19mcHJlZ3BhaXIgNAorKyNkZWZpbmUgbmxvY19mcHJlZ3F1YWQgOAorKworKy8qIFRoZSByZXR1cm4gdmFsdWUgaXMgYSBzdHJ1Y3R1cmUgYW5kIGlzIGFjdHVhbGx5IHN0b3JlZCBpbiBzdGFjayBzcGFjZQorKyAgIHBhc3NlZCBpbiBhIGhpZGRlbiBhcmd1bWVudCBieSB0aGUgY2FsbGVyLiAgQnV0LCB0aGUgY29tcGlsZXIKKysgICBoZWxwZnVsbHkgcmV0dXJucyB0aGUgYWRkcmVzcyBvZiB0aGF0IHNwYWNlIGluICR2MC4gICovCisrc3RhdGljIGNvbnN0IER3YXJmX09wIGxvY19hZ2dyZWdhdGVbXSA9CisrICB7CisrICAgIHsgLmF0b20gPSBEV19PUF9icmVnMiwgLm51bWJlciA9IDAgfQorKyAgfTsKKysjZGVmaW5lIG5sb2NfYWdncmVnYXRlIDEKKysKKytpbnQKKyttaXBzX3JldHVybl92YWx1ZV9sb2NhdGlvbiAoRHdhcmZfRGllICpmdW5jdHlwZWRpZSwgY29uc3QgRHdhcmZfT3AgKipsb2NwKQorK3sKKysgIC8qIEZpcnN0IGZpbmQgdGhlIEFCSSB1c2VkIGJ5IHRoZSBlbGYgb2JqZWN0ICovCisrICBlbnVtIG1pcHNfYWJpIGFiaSA9IGZpbmRfbWlwc19hYmkoZnVuY3R5cGVkaWUtPmN1LT5kYmctPmVsZik7CisrCisrICAvKiBTb21ldGhpbmcgd2VudCBzZXJpb3VzbHkgd3Jvbmcgd2hpbGUgdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhlIEFCSSAqLworKyAgaWYgKGFiaSA9PSBNSVBTX0FCSV9MQVNUKQorKyAgICByZXR1cm4gLTE7CisrCisrICAvKiBXZSBjb3VsZG4ndCBpZGVudGlmeSB0aGUgQUJJLCBidXQgdGhlIGZpbGUgc2VlbXMgdmFsaWQgKi8KKysgIGlmIChhYmkgPT0gTUlQU19BQklfVU5LTk9XTikKKysgICAgcmV0dXJuIC0yOworKworKyAgLyogQ2FuJ3QgaGFuZGxlIEVBQkkgdmFyaWFudHMgKi8KKysgIGlmICgoYWJpID09IE1JUFNfQUJJX0VBQkkzMikgfHwgKGFiaSA9PSBNSVBTX0FCSV9FQUJJNjQpKQorKyAgICByZXR1cm4gLTI7CisrCisrICB1bnNpZ25lZCBpbnQgcmVnc2l6ZSA9IG1pcHNfYWJpX3JlZ3NpemUgKGFiaSk7CisrICBpZiAoIXJlZ3NpemUpCisrICAgIHJldHVybiAtMjsKKysKKysgIC8qIFN0YXJ0IHdpdGggdGhlIGZ1bmN0aW9uJ3MgdHlwZSwgYW5kIGdldCB0aGUgRFdfQVRfdHlwZSBhdHRyaWJ1dGUsCisrICAgICB3aGljaCBpcyB0aGUgdHlwZSBvZiB0aGUgcmV0dXJuIHZhbHVlLiAgKi8KKysKKysgIER3YXJmX0F0dHJpYnV0ZSBhdHRyX21lbTsKKysgIER3YXJmX0F0dHJpYnV0ZSAqYXR0ciA9IGR3YXJmX2F0dHJfaW50ZWdyYXRlIChmdW5jdHlwZWRpZSwgRFdfQVRfdHlwZSwgJmF0dHJfbWVtKTsKKysgIGlmIChhdHRyID09IE5VTEwpCisrICAgIC8qIFRoZSBmdW5jdGlvbiBoYXMgbm8gcmV0dXJuIHZhbHVlLCBsaWtlIGEgYHZvaWQnIGZ1bmN0aW9uIGluIEMuICAqLworKyAgICByZXR1cm4gMDsKKysKKysgIER3YXJmX0RpZSBkaWVfbWVtOworKyAgRHdhcmZfRGllICp0eXBlZGllID0gZHdhcmZfZm9ybXJlZl9kaWUgKGF0dHIsICZkaWVfbWVtKTsKKysgIGludCB0YWcgPSBkd2FyZl90YWcgKHR5cGVkaWUpOworKworKyAgLyogRm9sbG93IHR5cGVkZWZzIGFuZCBxdWFsaWZpZXJzIHRvIGdldCB0byB0aGUgYWN0dWFsIHR5cGUuICAqLworKyAgd2hpbGUgKHRhZyA9PSBEV19UQUdfdHlwZWRlZgorKwkgfHwgdGFnID09IERXX1RBR19jb25zdF90eXBlIHx8IHRhZyA9PSBEV19UQUdfdm9sYXRpbGVfdHlwZQorKwkgfHwgdGFnID09IERXX1RBR19yZXN0cmljdF90eXBlKQorKyAgICB7CisrICAgICAgYXR0ciA9IGR3YXJmX2F0dHJfaW50ZWdyYXRlICh0eXBlZGllLCBEV19BVF90eXBlLCAmYXR0cl9tZW0pOworKyAgICAgIHR5cGVkaWUgPSBkd2FyZl9mb3JtcmVmX2RpZSAoYXR0ciwgJmRpZV9tZW0pOworKyAgICAgIHRhZyA9IGR3YXJmX3RhZyAodHlwZWRpZSk7CisrICAgIH0KKysKKysgIHN3aXRjaCAodGFnKQorKyAgICB7CisrICAgIGNhc2UgLTE6CisrICAgICAgcmV0dXJuIC0xOworKworKyAgICBjYXNlIERXX1RBR19zdWJyYW5nZV90eXBlOgorKyAgICAgIGlmICghIGR3YXJmX2hhc2F0dHJfaW50ZWdyYXRlICh0eXBlZGllLCBEV19BVF9ieXRlX3NpemUpKQorKwl7CisrCSAgYXR0ciA9IGR3YXJmX2F0dHJfaW50ZWdyYXRlICh0eXBlZGllLCBEV19BVF90eXBlLCAmYXR0cl9tZW0pOworKwkgIHR5cGVkaWUgPSBkd2FyZl9mb3JtcmVmX2RpZSAoYXR0ciwgJmRpZV9tZW0pOworKwkgIHRhZyA9IGR3YXJmX3RhZyAodHlwZWRpZSk7CisrCX0KKysgICAgICAvKiBGYWxsIHRocm91Z2guICAqLworKworKyAgICBjYXNlIERXX1RBR19iYXNlX3R5cGU6CisrICAgIGNhc2UgRFdfVEFHX2VudW1lcmF0aW9uX3R5cGU6CisrICAgIGNhc2UgRFdfVEFHX3BvaW50ZXJfdHlwZToKKysgICAgY2FzZSBEV19UQUdfcHRyX3RvX21lbWJlcl90eXBlOgorKyAgICAgIHsKKysgICAgICAgIER3YXJmX1dvcmQgc2l6ZTsKKysJaWYgKGR3YXJmX2Zvcm11ZGF0YSAoZHdhcmZfYXR0cl9pbnRlZ3JhdGUgKHR5cGVkaWUsIERXX0FUX2J5dGVfc2l6ZSwKKysJCQkJCSAmYXR0cl9tZW0pLCAmc2l6ZSkgIT0gMCkKKysJICB7CisrCSAgICBpZiAodGFnID09IERXX1RBR19wb2ludGVyX3R5cGUgfHwgdGFnID09IERXX1RBR19wdHJfdG9fbWVtYmVyX3R5cGUpCisrCSAgICAgIHNpemUgPSByZWdzaXplOworKwkgICAgZWxzZQorKwkgICAgICByZXR1cm4gLTE7CisrCSAgfQorKwlpZiAodGFnID09IERXX1RBR19iYXNlX3R5cGUpCisrCSAgeworKwkgICAgRHdhcmZfV29yZCBlbmNvZGluZzsKKysJICAgIGlmIChkd2FyZl9mb3JtdWRhdGEgKGR3YXJmX2F0dHJfaW50ZWdyYXRlICh0eXBlZGllLCBEV19BVF9lbmNvZGluZywKKysJCQkJCSAgICAgJmF0dHJfbWVtKSwgJmVuY29kaW5nKSAhPSAwKQorKwkgICAgICByZXR1cm4gLTE7CisrCisrI2RlZmluZSBBQklfTE9DKGxvYywgcmVnc2l6ZSkgKChyZWdzaXplKSA9PSA0ID8gKGxvYyAjIyBfbzMyKSA6IChsb2MpKQorKworKwkgICAgaWYgKGVuY29kaW5nID09IERXX0FURV9mbG9hdCkKKysJICAgICAgeworKwkJKmxvY3AgPSBBQklfTE9DKGxvY19mcHJlZywgcmVnc2l6ZSk7CisrCQlpZiAoc2l6ZSA8PSByZWdzaXplKQorKwkJICAgIHJldHVybiBubG9jX2ZwcmVnOworKworKwkJaWYgKHNpemUgPD0gMipyZWdzaXplKQorKyAgICAgICAgICAgICAgICAgIHJldHVybiBubG9jX2ZwcmVncGFpcjsKKysKKysJCWlmIChzaXplIDw9IDQqcmVnc2l6ZSAmJiBhYmkgPT0gTUlQU19BQklfTzMyKQorKyAgICAgICAgICAgICAgICAgIHJldHVybiBubG9jX2ZwcmVncXVhZDsKKysKKysJCWdvdG8gYWdncmVnYXRlOworKwkgICAgICB9CisrCSAgfQorKwkqbG9jcCA9IEFCSV9MT0MobG9jX2ludHJlZywgcmVnc2l6ZSk7CisrCWlmIChzaXplIDw9IHJlZ3NpemUpCisrCSAgcmV0dXJuIG5sb2NfaW50cmVnOworKwlpZiAoc2l6ZSA8PSAyKnJlZ3NpemUpCisrCSAgcmV0dXJuIG5sb2NfaW50cmVncGFpcjsKKysKKysJLyogRWxzZSBmYWxsIHRocm91Z2guIFNob3VsZG4ndCBoYXBwZW4gdGhvdWdoIChhdCBsZWFzdCB3aXRoIGdjYykgKi8KKysgICAgICB9CisrCisrICAgIGNhc2UgRFdfVEFHX3N0cnVjdHVyZV90eXBlOgorKyAgICBjYXNlIERXX1RBR19jbGFzc190eXBlOgorKyAgICBjYXNlIERXX1RBR191bmlvbl90eXBlOgorKyAgICBjYXNlIERXX1RBR19hcnJheV90eXBlOgorKyAgICBhZ2dyZWdhdGU6CisrICAgICAgLyogWFhYIFRPRE86IENhbid0IGhhbmRsZSBzdHJ1Y3R1cmUgcmV0dXJuIHdpdGggb3RoZXIgQUJJJ3MgeWV0IDotLyAqLworKyAgICAgIGlmICgoYWJpICE9IE1JUFNfQUJJX08zMikgJiYgKGFiaSAhPSBNSVBTX0FCSV9PNjQpKQorKyAgICAgICAgcmV0dXJuIC0yOworKworKyAgICAgICpsb2NwID0gbG9jX2FnZ3JlZ2F0ZTsKKysgICAgICByZXR1cm4gbmxvY19hZ2dyZWdhdGU7CisrICAgIH0KKysKKysgIC8qIFhYWCBXZSBkb24ndCBoYXZlIGEgZ29vZCB3YXkgdG8gcmV0dXJuIHNwZWNpZmljIGVycm9ycyBmcm9tIGVibCBjYWxscy4KKysgICAgIFRoaXMgdmFsdWUgbWVhbnMgd2UgZG8gbm90IHVuZGVyc3RhbmQgdGhlIHR5cGUsIGJ1dCBpdCBpcyB3ZWxsLWZvcm1lZAorKyAgICAgRFdBUkYgYW5kIG1pZ2h0IGJlIHZhbGlkLiAgKi8KKysgIHJldHVybiAtMjsKKyt9CitkaWZmIC0tZ2l0IGEvYmFja2VuZHMvbWlwc19zeW1ib2wuYyBiL2JhY2tlbmRzL21pcHNfc3ltYm9sLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5iYTQ2NWZlCistLS0gL2Rldi9udWxsCisrKysgYi9iYWNrZW5kcy9taXBzX3N5bWJvbC5jCitAQCAtMCwwICsxLDUyIEBACisrLyogTUlQUyBzcGVjaWZpYyBzeW1ib2xpYyBuYW1lIGhhbmRsaW5nLgorKyAgIENvcHlyaWdodCAoQykgMjAwMiwgMjAwMywgMjAwNSBSZWQgSGF0LCBJbmMuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgUmVkIEhhdCBlbGZ1dGlscy4KKysgICBXcml0dGVuIGJ5IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+LCAyMDAyLgorKworKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorKyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLgorKworKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisrICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisrICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisrICAgd2l0aCBSZWQgSGF0IGVsZnV0aWxzOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisrICAgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uIE1BIDAyMTEwLTEzMDEgVVNBLgorKworKyAgIFJlZCBIYXQgZWxmdXRpbHMgaXMgYW4gaW5jbHVkZWQgcGFja2FnZSBvZiB0aGUgT3BlbiBJbnZlbnRpb24gTmV0d29yay4KKysgICBBbiBpbmNsdWRlZCBwYWNrYWdlIG9mIHRoZSBPcGVuIEludmVudGlvbiBOZXR3b3JrIGlzIGEgcGFja2FnZSBmb3Igd2hpY2gKKysgICBPcGVuIEludmVudGlvbiBOZXR3b3JrIGxpY2Vuc2VlcyBjcm9zcy1saWNlbnNlIHRoZWlyIHBhdGVudHMuICBObyBwYXRlbnQKKysgICBsaWNlbnNlIGlzIGdyYW50ZWQsIGVpdGhlciBleHByZXNzbHkgb3IgaW1wbGllZGx5LCBieSBkZXNpZ25hdGlvbiBhcyBhbgorKyAgIGluY2x1ZGVkIHBhY2thZ2UuICBTaG91bGQgeW91IHdpc2ggdG8gcGFydGljaXBhdGUgaW4gdGhlIE9wZW4gSW52ZW50aW9uCisrICAgTmV0d29yayBsaWNlbnNpbmcgcHJvZ3JhbSwgcGxlYXNlIHZpc2l0IHd3dy5vcGVuaW52ZW50aW9ubmV0d29yay5jb20KKysgICA8aHR0cDovL3d3dy5vcGVuaW52ZW50aW9ubmV0d29yay5jb20+LiAgKi8KKysKKysjaWZkZWYgSEFWRV9DT05GSUdfSAorKyMgaW5jbHVkZSA8Y29uZmlnLmg+CisrI2VuZGlmCisrCisrI2luY2x1ZGUgPGVsZi5oPgorKyNpbmNsdWRlIDxzdGRkZWYuaD4KKysKKysjZGVmaW5lIEJBQ0tFTkQJCW1pcHNfCisrI2luY2x1ZGUgImxpYmVibF9DUFUuaCIKKysKKysvKiBDaGVjayBmb3IgdGhlIHNpbXBsZSByZWxvYyB0eXBlcy4gICovCisrRWxmX1R5cGUKKyttaXBzX3JlbG9jX3NpbXBsZV90eXBlIChFYmwgKmVibCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksIGludCB0eXBlKQorK3sKKysgIHN3aXRjaCAodHlwZSkKKysgICAgeworKyAgICBjYXNlIFJfTUlQU18xNjoKKysgICAgICByZXR1cm4gRUxGX1RfSEFMRjsKKysgICAgY2FzZSBSX01JUFNfMzI6CisrICAgICAgcmV0dXJuIEVMRl9UX1dPUkQ7CisrICAgIGNhc2UgUl9NSVBTXzY0OgorKyAgICAgIHJldHVybiBFTEZfVF9YV09SRDsKKysgICAgZGVmYXVsdDoKKysgICAgICByZXR1cm4gRUxGX1RfTlVNOworKyAgICB9CisrfQorZGlmZiAtLWdpdCBhL2xpYmVibC9lYmxvcGVuYmFja2VuZC5jIGIvbGliZWJsL2VibG9wZW5iYWNrZW5kLmMKK2luZGV4IDFmODE0NzcuLjUzNzEzOTYgMTAwNjQ0CistLS0gYS9saWJlYmwvZWJsb3BlbmJhY2tlbmQuYworKysrIGIvbGliZWJsL2VibG9wZW5iYWNrZW5kLmMKK0BAIC03Miw2ICs3Miw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QKKyAgIHsgInNwYXJjIiwgImVsZl9zcGFyYyIsICJzcGFyYyIsIDUsIEVNX1NQQVJDLCAwLCAwIH0sCisgICB7ICJzcGFyYyIsICJlbGZfc3BhcmN2OHBsdXMiLCAic3BhcmMiLCA1LCBFTV9TUEFSQzMyUExVUywgMCwgMCB9LAorICAgeyAiczM5MCIsICJlYmxfczM5MCIsICJzMzkwIiwgNCwgRU1fUzM5MCwgMCwgMCB9LAorKyAgeyAibWlwcyIsICJlbGZfbWlwcyIsICJtaXBzIiwgNCwgRU1fTUlQUywgMCwgMCB9LAorKyAgeyAibWlwcyIsICJlbGZfbWlwc2VsIiwgIm1pcHNlbCIsIDQsIEVNX01JUFNfUlMzX0xFLCAwLCAwIH0sCisgCisgICB7ICJtMzIiLCAiZWxmX20zMiIsICJtMzIiLCAzLCBFTV9NMzIsIDAsIDAgfSwKKyAgIHsgIm02OGsiLCAiZWxmX202OGsiLCAibTY4ayIsIDQsIEVNXzY4SywgRUxGQ0xBU1MzMiwgRUxGREFUQTJNU0IgfSwKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4L2RlYmlhbi9taXBzX3JlYWRlbGZfdy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuL21pcHNfcmVhZGVsZl93LnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzLTAuMTY4L2RlYmlhbi9taXBzX3JlYWRlbGZfdy5wYXRjaApyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vbWlwc19yZWFkZWxmX3cucGF0Y2gKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZXhwZWN0L2V4cGVjdF81LjQ1LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9leHBlY3QvZXhwZWN0XzUuNDUuYmIKaW5kZXggNjMwZjJlNC4uZTJkMjRlOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9leHBlY3QvZXhwZWN0XzUuNDUuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9leHBlY3QvZXhwZWN0XzUuNDUuYmIKQEAgLTE2LDcgKzE2LDcgQEAKIERFUEVORFMgKz0gInRjbCIKIFJERVBFTkRTXyR7UE59ID0gInRjbCIKIAotaW5oZXJpdCBhdXRvdG9vbHMKK2luaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKIAogUFIgPSAicjEiCiAKQEAgLTU3LDYgKzU3LDExIEBACiAgICAgICAgICAgICAgICAgIgogRVhUUkFfT0VNQUtFX2luc3RhbGwgPSAiICdTQ1JJUFRTPScgIgogCitBTFRFUk5BVElWRV8ke1BOfSAgPSAibWtwYXNzd2QiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbbWtwYXNzd2RdID0gIiR7YmluZGlyfS9ta3Bhc3N3ZCIKKyMgVXNlIGxvd2VyIHByaW9yaXR5IHRoYW4gYnVzeWJveCdzIG1rcGFzc3dkIChjcmVhdGVkIHdoZW4gYnVpbHQgd2l0aCBDT05GSUdfQ1JZUFRQVykKK0FMVEVSTkFUSVZFX1BSSU9SSVRZW21rcGFzc3dkXSA9ICI0MCIKKwogRklMRVNfJHtQTn0tZGV2ID0gIiR7bGliZGlyX25hdGl2ZX0vZXhwZWN0JHtQVn0vbGliZXhwZWN0Ki5zbyBcCiAgICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS9leHBlY3QuaCBcCiAgICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS9leHBlY3RfdGNsLmggXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mZGlzay9ncHRmZGlza18xLjAuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmRpc2svZ3B0ZmRpc2tfMS4wLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2MmE5MDMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mZGlzay9ncHRmZGlza18xLjAuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLVNVTU1BUlkgPSAiVXRpbGl0eSBmb3IgbW9kaWZ5aW5nIEdQVCBkaXNrIHBhcnRpdGlvbmluZyIKLURFU0NSSVBUSU9OID0gIkdQVCBmZGlzayBpcyBhIGRpc2sgcGFydGl0aW9uaW5nIHRvb2wgbG9vc2VseSBtb2RlbGVkIG9uIExpbnV4IGZkaXNrLCBidXQgdXNlZCBmb3IgbW9kaWZ5aW5nIEdVSUQgUGFydGl0aW9uIFRhYmxlIChHUFQpIGRpc2tzLiBUaGUgcmVsYXRlZCBGaXhQYXJ0cyB1dGlsaXR5IGZpeGVzIHNvbWUgY29tbW9uIHByb2JsZW1zIG9uIE1hc3RlciBCb290IFJlY29yZCAoTUJSKSBkaXNrcy4iCi0KLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiIKLQotREVQRU5EUyA9ICJ1dGlsLWxpbnV4IHBvcHQgbmN1cnNlcyIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59LyR7UFZ9LyR7QlB9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJkN2YzZDMwNmIwODMxMjNiY2M2ZjU5NDFlZmFkZTU4NiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4NjRjOGFlZTJlZmRkYTUwMzQ2ODA0ZDdlNjIzMDQwN2Q1ZjQyYThhZTc1NGRmNzA0MDRkZDhiMmZkZmFlYWM3IgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9ncHRmZGlzay9maWxlcy9ncHRmZGlzay8iCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIvZ3B0ZmRpc2svKD9QPHB2ZXI+KFxkK1tcLlwtX10qKSspLyIKLQotRVhUUkFfT0VNQUtFID0gIidDQz0ke0NDfScgJ0NYWD0ke0NYWH0nIgotCi1kb19pbnN0YWxsKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7c2JpbmRpcn0KLSAgICBpbnN0YWxsIC1tIDA3NTUgY2dkaXNrICR7RH0ke3NiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtbSAwNzU1IGdkaXNrICR7RH0ke3NiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtbSAwNzU1IHNnZGlzayAke0R9JHtzYmluZGlyfQotICAgIGluc3RhbGwgLW0gMDc1NSBmaXhwYXJ0cyAke0R9JHtzYmluZGlyfQotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZkaXNrL2dwdGZkaXNrXzEuMC4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mZGlzay9ncHRmZGlza18xLjAuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDYxN2UzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mZGlzay9ncHRmZGlza18xLjAuMy5iYgpAQCAtMCwwICsxLDI2IEBACitTVU1NQVJZID0gIlV0aWxpdHkgZm9yIG1vZGlmeWluZyBHUFQgZGlzayBwYXJ0aXRpb25pbmciCitERVNDUklQVElPTiA9ICJHUFQgZmRpc2sgaXMgYSBkaXNrIHBhcnRpdGlvbmluZyB0b29sIGxvb3NlbHkgbW9kZWxlZCBvbiBMaW51eCBmZGlzaywgYnV0IHVzZWQgZm9yIG1vZGlmeWluZyBHVUlEIFBhcnRpdGlvbiBUYWJsZSAoR1BUKSBkaXNrcy4gVGhlIHJlbGF0ZWQgRml4UGFydHMgdXRpbGl0eSBmaXhlcyBzb21lIGNvbW1vbiBwcm9ibGVtcyBvbiBNYXN0ZXIgQm9vdCBSZWNvcmQgKE1CUikgZGlza3MuIgorCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIiCisKK0RFUEVORFMgPSAidXRpbC1saW51eCBwb3B0IG5jdXJzZXMiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfS8ke1BWfS8ke0JQfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiMDdiNjI1YTU4M2I2NmM4YzU4NDBiZTU5MjNmM2UzZmUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODlmZDVhZWMzNWM0MDlkNjEwYTM2Y2I0OWM2NWI0NDIwNTg1NjVlZDg0MDQyZjc2N2JiYTYxNGI4ZmM5MWI1YyIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvZ3B0ZmRpc2svZmlsZXMvZ3B0ZmRpc2svIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL2dwdGZkaXNrLyg/UDxwdmVyPihcZCtbXC5cLV9dKikrKS8iCisKK0VYVFJBX09FTUFLRSA9ICInQ0M9JHtDQ30nICdDWFg9JHtDWFh9JyIKKworZG9faW5zdGFsbCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke3NiaW5kaXJ9CisgICAgaW5zdGFsbCAtbSAwNzU1IGNnZGlzayAke0R9JHtzYmluZGlyfQorICAgIGluc3RhbGwgLW0gMDc1NSBnZGlzayAke0R9JHtzYmluZGlyfQorICAgIGluc3RhbGwgLW0gMDc1NSBzZ2Rpc2sgJHtEfSR7c2JpbmRpcn0KKyAgICBpbnN0YWxsIC1tIDA3NTUgZml4cGFydHMgJHtEfSR7c2JpbmRpcn0KK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9maWxlL2ZpbGUvZGViaWFuLTc0MjI2Mi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmlsZS9maWxlL2RlYmlhbi03NDIyNjIucGF0Y2gKaW5kZXggMWVmNDg1ZS4uZDMxYWM1OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9maWxlL2ZpbGUvZGViaWFuLTc0MjI2Mi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZpbGUvZmlsZS9kZWJpYW4tNzQyMjYyLnBhdGNoCkBAIC0xLDE5ICsxLDMwIEBACi1UaGUgYXdrIHBhdHRlcm4gd2FzIGNoZWNrZWQgKmJlZm9yZSogdGhlIFBlcmwgcGF0dGVybiwgc28gdGhlIHBlcmwKLXNjcmlwdCB3aXRoIEJFR0lOey4uLn0gd291bGQgYmUgcmVwb3J0ZWQgYXMgYXdrLCB0aGlzIHBhdGNoIGZpeGVzIGl0LgorVGhlIGF3ayBwYXR0ZXJuIHdhcyBjaGVja2VkICpiZWZvcmUqIHRoZSBQZXJsIHBhdHRlcm4sIHNvIHRoZQorcGVybCBzY3JpcHQgd2l0aCBCRUdJTnsuLi59IHdvdWxkIGJlIHJlcG9ydGVkIGFzIGF3aywgdGhpcyBwYXRjaCBmaXhlcyBpdC4KIAogVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbZGViaWFuXQogCiBTaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGggQmllZGwgPGRlYmlhbi5heGhuQG1hbmNobWFsLmluLXVsbS5kZT4KIFNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorCitSZWJhc2Ugb24gNS4zMQorCitTaWduZWQtb2ZmLWJ5OiBGYW4gWGluIDxmYW4ueGluQGpwLmZ1aml0c3UuY29tPgogLS0tCisgbWFnaWMvTWFnZGlyL2NvbW1hbmRzIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKIGRpZmYgLS1naXQgYS9tYWdpYy9NYWdkaXIvY29tbWFuZHMgYi9tYWdpYy9NYWdkaXIvY29tbWFuZHMKK2luZGV4IDFhNDZlZmQuLjI1NWMwNGIgMTAwNjQ0CiAtLS0gYS9tYWdpYy9NYWdkaXIvY29tbWFuZHMKICsrKyBiL21hZ2ljL01hZ2Rpci9jb21tYW5kcwogQEAgLTU3LDYgKzU3LDcgQEAKICAwCXN0cmluZy93dAkjIVwgL3Vzci9iaW4vYXdrCWF3ayBzY3JpcHQgdGV4dCBleGVjdXRhYmxlCiAgITptaW1lCXRleHQveC1hd2sKLSAwCXJlZ2V4LzQwOTYJPV5cXHN7MCwxMDB9QkVHSU5cXHN7MCwxMDB9W3tdCWF3ayBvciBwZXJsIHNjcmlwdCB0ZXh0CisgMAlyZWdleC80MDk2CT1eW0EtWmEtejAtOV9dezAsMTAwfUJFR0lOW0EtWmEtejAtOV9dezAsMTAwfVt7XQlhd2sgb3IgcGVybCBzY3JpcHQgdGV4dAogKyE6c3RyZW5ndGggLSAxMgogIAogICMgQVQmVCBCZWxsIExhYnMnIFBsYW4gOSBzaGVsbAogIDAJc3RyaW5nL3d0CSMhXCAvYmluL3JjCVBsYW4gOSByYyBzaGVsbCBzY3JpcHQgdGV4dCBleGVjdXRhYmxlCistLSAKKzEuOS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmlsZS9maWxlXzUuMzAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZpbGUvZmlsZV81LjMwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOTk4ZmNmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmlsZS9maWxlXzUuMzAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi1TVU1NQVJZID0gIkZpbGUgY2xhc3NpZmljYXRpb24gdG9vbCIKLURFU0NSSVBUSU9OID0gIkZpbGUgYXR0ZW1wdHMgdG8gY2xhc3NpZnkgZmlsZXMgZGVwZW5kaW5nIFwKLW9uIHRoZWlyIGNvbnRlbnRzIGFuZCBwcmludHMgYSBkZXNjcmlwdGlvbiBpZiBhIG1hdGNoIGlzIGZvdW5kLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZGFyd2luc3lzLmNvbS9maWxlLyIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLQotIyB0d28gY2xhdXNlIEJTRAotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO2JlZ2lubGluZT0yO21kNT02YTczODI4NzJlZGI2OGQzM2UxYTkzOThiNmUwMzE4OCIKLQotREVQRU5EUyA9ICJ6bGliIGZpbGUtcmVwbGFjZW1lbnQtbmF0aXZlIgotREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiemxpYi1uYXRpdmUiCi0KLSMgQmxhY2tsaXN0IGEgYm9ndXMgdGFnIGluIHVwc3RyZWFtIGNoZWNrCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJGSUxFKD9QPHB2ZXI+KD8hNl8yMykuKykiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9maWxlL2ZpbGUuZ2l0IFwKLSAgICAgICAgZmlsZTovL2RlYmlhbi03NDIyNjIucGF0Y2ggXAotICAgICAgICBmaWxlOi8vMDAwMS1BZGQtUC1wcm9tcHQtaW50by1Vc2FnZS1pbmZvLnBhdGNoIFwKLSAgICAgICAgIgotCi1TUkNSRVYgPSAiNzk4MTQ5NTBhYWZiODFlY2Q2YTkxMGMyYThhM2I4ZWMxMmYzZTRhNiIKLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLUVYVFJBX09FTUFLRV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIi1lIEZJTEVfQ09NUElMRT0ke1NUQUdJTkdfQklORElSX05BVElWRX0vZmlsZS1uYXRpdmUvZmlsZSIKLUVYVFJBX09FTUFLRV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIi1lIEZJTEVfQ09NUElMRT0ke1NUQUdJTkdfQklORElSX05BVElWRX0vZmlsZS1uYXRpdmUvZmlsZSIKLQotQ0ZMQUdTX2FwcGVuZCA9ICIgLXN0ZD1jOTkiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L21pc2MvKi5tZ2MiCi0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLQljcmVhdGVfY21kbGluZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2ZpbGUgXAotCQktLW1hZ2ljLWZpbGUgJHtkYXRhZGlyfS9taXNjL21hZ2ljLm1nYwotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7Ci0JY3JlYXRlX2NtZGxpbmVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9maWxlIFwKLQkJLS1tYWdpYy1maWxlICR7ZGF0YWRpcn0vbWlzYy9tYWdpYy5tZ2MKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotUFJPVklERVNfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZS1yZXBsYWNlbWVudC1uYXRpdmUiCi0jIERvbid0IHVzZSBOQVRJVkVfUEFDS0FHRV9QQVRIX1NVRkZJWCBhcyB0aGF0IGhpZGVzIGxpYm1hZ2ljIGZyb20gYW55b25lIHdobwotIyBkZXBlbmRzIG9uIGZpbGUtcmVwbGFjZW1lbnQtbmF0aXZlLgotYmluZGlyX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiL2ZpbGUtbmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9maWxlL2ZpbGVfNS4zMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmlsZS9maWxlXzUuMzEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWIxZjUwMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmlsZS9maWxlXzUuMzEuYmIKQEAgLTAsMCArMSw0OCBAQAorU1VNTUFSWSA9ICJGaWxlIGNsYXNzaWZpY2F0aW9uIHRvb2wiCitERVNDUklQVElPTiA9ICJGaWxlIGF0dGVtcHRzIHRvIGNsYXNzaWZ5IGZpbGVzIGRlcGVuZGluZyBcCitvbiB0aGVpciBjb250ZW50cyBhbmQgcHJpbnRzIGEgZGVzY3JpcHRpb24gaWYgYSBtYXRjaCBpcyBmb3VuZC4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmRhcndpbnN5cy5jb20vZmlsZS8iCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCisKKyMgdHdvIGNsYXVzZSBCU0QKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORztiZWdpbmxpbmU9MjttZDU9NmE3MzgyODcyZWRiNjhkMzNlMWE5Mzk4YjZlMDMxODgiCisKK0RFUEVORFMgPSAiemxpYiBmaWxlLXJlcGxhY2VtZW50LW5hdGl2ZSIKK0RFUEVORFNfY2xhc3MtbmF0aXZlID0gInpsaWItbmF0aXZlIgorCisjIEJsYWNrbGlzdCBhIGJvZ3VzIHRhZyBpbiB1cHN0cmVhbSBjaGVjaworVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiRklMRSg/UDxwdmVyPig/ITZfMjMpLispIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZmlsZS9maWxlLmdpdCBcCisgICAgICAgIGZpbGU6Ly9kZWJpYW4tNzQyMjYyLnBhdGNoIFwKKyAgICAgICAgZmlsZTovLzAwMDEtQWRkLVAtcHJvbXB0LWludG8tVXNhZ2UtaW5mby5wYXRjaCBcCisgICAgICAgICIKKworU1JDUkVWID0gIjcwYzVmMTUwNjBjN2FkODExNTAxNzdkZTgzYTNlNjQ1MDBhNTRjOWYiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGF1dG90b29scworCitFWFRSQV9PRU1BS0VfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICItZSBGSUxFX0NPTVBJTEU9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2ZpbGUtbmF0aXZlL2ZpbGUiCitFWFRSQV9PRU1BS0VfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICItZSBGSUxFX0NPTVBJTEU9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2ZpbGUtbmF0aXZlL2ZpbGUiCisKK0NGTEFHU19hcHBlbmQgPSAiIC1zdGQ9Yzk5IgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9taXNjLyoubWdjIgorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisJY3JlYXRlX2NtZGxpbmVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9maWxlIFwKKwkJLS1tYWdpYy1maWxlICR7ZGF0YWRpcn0vbWlzYy9tYWdpYy5tZ2MKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgeworCWNyZWF0ZV9jbWRsaW5lX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZmlsZSBcCisJCS0tbWFnaWMtZmlsZSAke2RhdGFkaXJ9L21pc2MvbWFnaWMubWdjCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKK1BST1ZJREVTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGUtcmVwbGFjZW1lbnQtbmF0aXZlIgorIyBEb24ndCB1c2UgTkFUSVZFX1BBQ0tBR0VfUEFUSF9TVUZGSVggYXMgdGhhdCBoaWRlcyBsaWJtYWdpYyBmcm9tIGFueW9uZSB3aG8KKyMgZGVwZW5kcyBvbiBmaWxlLXJlcGxhY2VtZW50LW5hdGl2ZS4KK2JpbmRpcl9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIi9maWxlLW5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4XzIuNi4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mbGV4L2ZsZXhfMi42LjAuYmIKaW5kZXggYWIzNWIwOS4uYTkwNmZlOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mbGV4L2ZsZXhfMi42LjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mbGV4L2ZsZXhfMi42LjAuYmIKQEAgLTU1LDcgKzU1LDExIEBACiAJY3AgJHtTfS9idWlsZC1hdXgvdGVzdC1kcml2ZXIgJHtEfSR7UFRFU1RfUEFUSH0vYnVpbGQtYXV4LwogCWNwIC1yICR7U30vdGVzdHMvKiAke0R9JHtQVEVTVF9QQVRIfQogCWNwIC1yICR7Qn0vdGVzdHMvKiAke0R9JHtQVEVTVF9QQVRIfQotCXNlZCAtZSAncy9eTWFrZWZpbGU6L19NYWtlZmlsZTovJyBcCisJc2VkIC1lICdzLC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0sLGcnIFwKKwkgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAorCSAgICAtZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgXAorCSAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX06OmcnIFwKKwkgICAgLWUgJ3M6JHtCQVNFX1dPUktESVJ9LyR7TVVMVElNQUNIX1RBUkdFVF9TWVN9OjpnJyBcLWUgJ3MvXk1ha2VmaWxlOi9fTWFrZWZpbGU6LycgXAogCSAgICAtZSAncy9ec3JjZGlyID0gXCguKlwpL3NyY2RpciA9IC4vJyAtZSAncy9edG9wX3NyY2RpciA9IFwoLipcKS90b3Bfc3JjZGlyID0gLi8nIFwKIAkgICAgLWUgJ3MvXmJ1aWxkZGlyID0gXCguKlwpL2J1aWxkZGlyID0gLi8nIC1lICdzL150b3BfYnVpbGRkaXIgPSBcKC4qXCkvdG9wX2J1aWxkZGlyID0gLi8nIFwKIAkgICAgLWkgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3Njk2NzUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNDcgKzAsMCBAQAotcmVxdWlyZSBnY2MtY29tbW9uLmluYwotCi0jIFRoaXJkIGRpZ2l0IGluIFBWIHNob3VsZCBiZSBpbmNyZW1lbnRlZCBhZnRlciBhIG1pbm9yIHJlbGVhc2UKLQotUFYgPSAiNS40LjAiCi0KLSNTTkFQID0gIjUtMjAxNTA0MDUiCi0KLSMgQklOViBzaG91bGQgYmUgaW5jcmVtZW50ZWQgdG8gYSByZXZpc2lvbiBhZnRlciBhIG1pbm9yIGdjYyByZWxlYXNlCi0KLUJJTlYgPSAiNS40LjAiCi0KLUZJTEVTRVhUUkFQQVRIUyA9LiAiJHtGSUxFX0RJUk5BTUV9L2djYy01LjQ6JHtGSUxFX0RJUk5BTUV9L2djYy01LjQvYmFja3BvcnQ6IgotCi1ERVBFTkRTID0rICJtcGZyIGdtcCBsaWJtcGMgemxpYiIKLU5BVElWRURFUFMgPSAibXBmci1uYXRpdmUgZ21wLW5hdGl2ZSBsaWJtcGMtbmF0aXZlIHpsaWItbmF0aXZlIgotCi1MSUNFTlNFID0gIkdQTC0zLjAtd2l0aC1HQ0MtZXhjZXB0aW9uICYgR1BMdjMiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiXAotICAgIGZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiBcCi0gICAgZmlsZTovL0NPUFlJTkczO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCi0gICAgZmlsZTovL0NPUFlJTkczLkxJQjttZDU9NmE2YThlMDIwODM4YjIzNDA2YzgxYjE5YzFkNDZkZjYgXAotICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEgXAotICAgIGZpbGU6Ly9DT1BZSU5HLlJVTlRJTUU7bWQ1PWZlNjBkODcwNDg1NjdkNGZlOGM4YTBlZDI0NDhiY2M4IFwKLSIKLSNCQVNFVVJJID0gImh0dHA6Ly93d3cubmV0Z3VsbC5jb20vZ2NjL3NuYXBzaG90cy8ke1NOQVB9L2djYy0ke1NOQVB9LnRhci5iejIiCi1CQVNFVVJJID0gIiR7R05VX01JUlJPUn0vZ2NjL2djYy0ke1BWfS9nY2MtJHtQVn0udGFyLmJ6MiIKLQotU1JDX1VSSSA9ICJcCi0gICAgICAgICAgICR7QkFTRVVSSX0gXAotICAgICAgICAgICAke0JBQ0tQT1JUU30gXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1nY2MtNC4zLjEtQVJDSF9GTEFHU19GT1JfVEFSR0VULnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItdWNsaWJjLWNvbmYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1nY2MtdWNsaWJjLWxvY2FsZS1jdHlwZV90b3VwbG93X3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC11Y2xpYmMtbG9jYWxlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDUtdWNsaWJjLWxvY2FsZS1ub19feC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA2LXVjbGliYy1sb2NhbGUtd2NoYXJfZml4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDctdWNsaWJjLWxvY2FsZS11cGRhdGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwOC1taXNzaW5nLWV4ZWNpbmZvX2gucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwOS1jOTktc25wcmludGYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMC1nY2MtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDExLWdjYy1wb2lzb24tZGlyLWV4dGVuZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEyLWdjYy00LjMuMy1TWVNST09UX0NGTEFHU19GT1JfVEFSR0VULnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTMtNjQtYml0LW11bHRpbGliLWhhY2sucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxNC1vcHRpb25hbC1saWJzdGRjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTUtZ2NjLWRpc2FibGUtTUFTS19SRUxBWF9QSUNfQ0FMTFMtYml0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTYtQ09MTEVDVF9HQ0NfT1BUSU9OUy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE3LVVzZS10aGUtZGVmYXVsdHMuaC1pbi1CLWluc3RlYWQtb2YtUy1hbmQtdC1vZS1pbi1CLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTgtZm9ydHJhbi1jcm9zcy1jb21waWxlLWhhY2sucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxOS1saWJnY2Mtc2psai1jaGVjay5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIwLWNwcC1ob25vci1zeXNyb290LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjEtTUlQUzY0LURlZmF1bHQtdG8tTjY0LUFCSS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIyLURlZmluZS1HTElCQ19EWU5BTUlDX0xJTktFUi1hbmQtVUNMSUJDX0RZTkFNSUNfTElOS0UucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMy1nY2MtRml4LWFyZ3VtZW50LWxpc3QtdG9vLWxvbmctZXJyb3IucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNC1EaXNhYmxlLXNkdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI1LWxpYnRvb2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNi1nY2MtYXJtdjQtcGFzcy1maXgtdjRieC10by1saW5rZXItdG8tc3VwcG9ydC1FQUJJLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjctVXNlLXRoZS1tdWx0aWxpYi1jb25maWctZmlsZXMtZnJvbS1CLWluc3RlYWQtb2YtdXNpbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI4LUF2b2lkLXVzaW5nLWxpYmRpci1mcm9tLS5sYS13aGljaC11c3VhbGx5LXBvaW50cy10by0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyOS1leHBvcnQtQ1BQLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzAtRW5hYmxlLVNQRS1BbHRpVmVjLWdlbmVyYXRpb24tb24tcG93ZXBjLWxpbnV4LXRhcmdldC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDMxLURpc2FibGUtdGhlLU1VTFRJTElCX09TRElSTkFNRVMtYW5kLW90aGVyLW11bHRpbGliLW8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzMi1FbnN1cmUtdGFyZ2V0LWdjYy1oZWFkZXJzLWNhbi1iZS1pbmNsdWRlZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDMzLWdjYy00Ljgtd29uLXQtYnVpbGQtd2l0aC1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzNC1Eb24tdC1zZWFyY2gtaG9zdC1kaXJlY3RvcnktZHVyaW5nLXJlbGluay1pZi1pbnN0X3ByLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzUtRG9udC1saW5rLXRoZS1wbHVnaW5zLXdpdGgtbGliZ29tcC1leHBsaWNpdGx5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzYtVXNlLVNZU1RFTUxJQlNfRElSLXJlcGxhY2VtZW50LWluc3RlYWQtb2YtaGFyZGNvZGluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDM3LWFhcmNoNjQtQWRkLXN1cHBvcnQtZm9yLW11c2wtbGRzby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDM4LWZpeC1nLXN5c3Jvb3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzOS1saWJjYzEtZml4LWxpYmNjMS1zLWluc3RhbGwtcGF0aC1hbmQtcnBhdGgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDA0MC1oYW5kbGUtc3lzcm9vdC1zdXBwb3J0LWZvci1uYXRpdmVzZGstZ2NjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwNDEtU2VhcmNoLXRhcmdldC1zeXNyb290LWdjYy12ZXJzaW9uLXNwZWNpZmljLWRpcnMtd2l0aC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDQyLUZpeC12YXJpb3VzLV9GT1JfQlVJTEQtYW5kLXJlbGF0ZWQtdmFyaWFibGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwNDMtbGlic3RkYy1TdXBwb3J0LW11c2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDA0NC1BZGRpbmctbW11c2wtYXMtYS1tdXNsLWxpYmMtc3BlY2lmaWVyLWFuZC10aGUtbmVjZXNzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwNDUtU3VwcG9ydC1mb3ItYXJtLWxpbnV4LW11c2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDA0Ni1HZXQtcmlkLW9mLWV2ZXItYnJva2VuLWZpeGluY2x1ZGVzLW9uLW11c2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDA0Ny1uaW9zMi1EZWZpbmUtTVVTTF9EWU5BTUlDX0xJTktFUi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDQ4LXNzcF9ub25zaGFyZWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDA0OS1EaXNhYmxlLXRoZS13ZWFrLXJlZmVyZW5jZS1sb2dpYy1pbi1ndGhyLmgtZm9yLW9zLWdlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwNTAtcG93ZXJwYy1wYXNzLXNlY3VyZS1wbHQtdG8tdGhlLWxpbmtlci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDUxLUlnbm9yZS1mZGVidWctcHJlZml4LW1hcC1pbi1wcm9kdWNlci1zdHJpbmctYnktRGFuaWUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDA1Mi1uaW9zMi11c2UtcmV0LXdpdGgtcjMxLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwNTMtZXhwci5jLVBSLXRhcmdldC02NTM1OC1Bdm9pZC1jbG9iYmVyaW5nLXBhcnRpYWwtYXJndS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDU0LXN1cHBvcnQtZmZpbGUtcHJlZml4LW1hcC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDU1LVJldXNlLWZkZWJ1Zy1wcmVmaXgtbWFwLXRvLXJlcGxhY2UtZmZpbGUtcHJlZml4LW1hcC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDU2LUVuYWJsZS1saWJjLXByb3ZpZGUtc3NwLWFuZC1nY2NfY3ZfdGFyZ2V0X2RsX2l0ZXJhdGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDA1Ny11bndpbmQtZml4LWZvci1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwNTgtZmRlYnVnLXByZWZpeC1tYXAtc3VwcG9ydC10by1yZW1hcC1yZWxhdGl2ZS1wYXRoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwNTktbGliZ2NjLXVzZS1sZGZsYWdzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE2LTYxMzEucGF0Y2ggXAotIgotCi1CQUNLUE9SVFMgPSAiIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNGM2MjZhYzJhODNlZjMwZGZiOTI2MGU2ZjU5YzJiMzAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjA4ZGY3NmRlYzJkMzRkZTY1NTgyNDlkOGFmNGNiZWUyMWVjZWRkYmNiNTgwZDY2NmY3YTVhNTgzY2EzMzAzYSIKLQotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiZ2NjLSg/UDxwdmVyPjVcLlxkK1wuXGQrKS50YXIiCi0KLSNTID0gIiR7VE1QRElSfS93b3JrLXNoYXJlZC9nY2MtJHtQVn0tJHtQUn0vZ2NjLSR7U05BUH0iCi1TID0gIiR7VE1QRElSfS93b3JrLXNoYXJlZC9nY2MtJHtQVn0tJHtQUn0vZ2NjLSR7UFZ9IgotQiA9ICIke1dPUktESVJ9L2djYy0ke1BWfS9idWlsZC4ke0hPU1RfU1lTfS4ke1RBUkdFVF9TWVN9IgotCi0jIExhbmd1YWdlIE92ZXJyaWRlcwotRk9SVFJBTiA9ICIiCi1KQVZBID0gIiIKLQotTFRPID0gIi0tZW5hYmxlLWx0byIKLQotRVhUUkFfT0VDT05GX0JBU0UgPSAiXAotICAgICR7TFRPfSBcCi0gICAgLS1lbmFibGUtbGlic3NwIFwKLSAgICAtLWVuYWJsZS1saWJpdG0gXAotICAgIC0tZGlzYWJsZS1ib290c3RyYXAgXAotICAgIC0tZGlzYWJsZS1saWJtdWRmbGFwIFwKLSAgICAtLXdpdGgtc3lzdGVtLXpsaWIgXAotICAgIC0td2l0aC1saW5rZXItaGFzaC1zdHlsZT0ke0xJTktFUl9IQVNIX1NUWUxFfSBcCi0gICAgLS1lbmFibGUtbGlua2VyLWJ1aWxkLWlkIFwKLSAgICAtLXdpdGgtcHBsPW5vIFwKLSAgICAtLXdpdGgtY2xvb2c9bm8gXAotICAgIC0tZW5hYmxlLWNoZWNraW5nPXJlbGVhc2UgXAotICAgIC0tZW5hYmxlLWNoZWFkZXJzPWNfZ2xvYmFsIFwKLSAgICAtLXdpdGhvdXQtaXNsIFwKLSIKLQotRVhUUkFfT0VDT05GX0lOSVRJQUwgPSAiXAotICAgIC0tZGlzYWJsZS1saWJtdWRmbGFwIFwKLSAgICAtLWRpc2FibGUtbGliZ29tcCBcCi0gICAgLS1kaXNhYmxlLWxpYml0bSBcCi0gICAgLS1kaXNhYmxlLWxpYnF1YWRtYXRoIFwKLSAgICAtLXdpdGgtc3lzdGVtLXpsaWIgXAotICAgIC0tZGlzYWJsZS1sdG8gXAotICAgIC0tZGlzYWJsZS1wbHVnaW4gXAotICAgIC0tZW5hYmxlLWRlY2ltYWwtZmxvYXQ9bm8gXAotICAgIC0td2l0aG91dC1pc2wgXAotICAgIGdjY19jdl9saWJjX3Byb3ZpZGVzX3NzcD15ZXMgXAotIgotCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtdWNsaWJjID0gIiAtLWRpc2FibGUtZGVjaW1hbC1mbG9hdCAiCi0KLUVYVFJBX09FQ09ORl9QQVRIUyA9ICJcCi0gICAgLS13aXRoLWd4eC1pbmNsdWRlLWRpcj0vbm90L2V4aXN0e3RhcmdldF9pbmNsdWRlZGlyfS9jKysvJHtCSU5WfSBcCi0gICAgLS13aXRoLXN5c3Jvb3Q9L25vdC9leGlzdCBcCi0gICAgLS13aXRoLWJ1aWxkLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IFwKLSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAwMS1nY2MtNC4zLjEtQVJDSF9GTEFHU19GT1JfVEFSR0VULnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDAxLWdjYy00LjMuMS1BUkNIX0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhZWFkOTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDAxLWdjYy00LjMuMS1BUkNIX0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1Gcm9tIDYwMjliYjMzODMwNWE1ZDE0MDNlZTIzNDI3ZWQ4ZDU4ZWFlMWZmNTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwODozNzoxMSArMDQwMAotU3ViamVjdDogW1BBVENIIDAxLzQ2XSBnY2MtNC4zLjE6IEFSQ0hfRkxBR1NfRk9SX1RBUkdFVAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotLS0tCi0gY29uZmlndXJlICAgIHwgMiArLQotIGNvbmZpZ3VyZS5hYyB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQotaW5kZXggYTNmNjZiYS4uMWNiYTNhOSAxMDA3NTUKLS0tLSBhL2NvbmZpZ3VyZQotKysrIGIvY29uZmlndXJlCi1AQCAtNzQ2NCw3ICs3NDY0LDcgQEAgZmkKLSAjIGZvciB0YXJnZXRfYWxpYXMgYW5kIGdjYyBkb2Vzbid0IG1hbmFnZSBpdCBjb25zaXN0ZW50bHkuCi0gdGFyZ2V0X2NvbmZpZ2FyZ3M9Ii0tY2FjaGUtZmlsZT0uL2NvbmZpZy5jYWNoZSAke3RhcmdldF9jb25maWdhcmdzfSIKLSAKLS1GTEFHU19GT1JfVEFSR0VUPQotK0ZMQUdTX0ZPUl9UQVJHRVQ9IiRBUkNIX0ZMQUdTX0ZPUl9UQVJHRVQiCi0gY2FzZSAiICR0YXJnZXRfY29uZmlnZGlycyAiIGluCi0gICoiIG5ld2xpYiAiKikKLSAgIGNhc2UgIiAkdGFyZ2V0X2NvbmZpZ2FyZ3MgIiBpbgotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggOTg3ZGZhYi4uZDNhZGI5NSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMzEwNCw3ICszMTA0LDcgQEAgZmkKLSAjIGZvciB0YXJnZXRfYWxpYXMgYW5kIGdjYyBkb2Vzbid0IG1hbmFnZSBpdCBjb25zaXN0ZW50bHkuCi0gdGFyZ2V0X2NvbmZpZ2FyZ3M9Ii0tY2FjaGUtZmlsZT0uL2NvbmZpZy5jYWNoZSAke3RhcmdldF9jb25maWdhcmdzfSIKLSAKLS1GTEFHU19GT1JfVEFSR0VUPQotK0ZMQUdTX0ZPUl9UQVJHRVQ9IiRBUkNIX0ZMQUdTX0ZPUl9UQVJHRVQiCi0gY2FzZSAiICR0YXJnZXRfY29uZmlnZGlycyAiIGluCi0gICoiIG5ld2xpYiAiKikKLSAgIGNhc2UgIiAkdGFyZ2V0X2NvbmZpZ2FyZ3MgIiBpbgotLS0gCi0yLjYuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMDItdWNsaWJjLWNvbmYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMDItdWNsaWJjLWNvbmYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkNmFlYjUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDAyLXVjbGliYy1jb25mLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotRnJvbSBiNjdjM2E4NDRiY2NlYzE3NjZhN2VjMTIwZTJkMThjZGNiYzVmMTE0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDg6Mzg6MjUgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAwMi80Nl0gdWNsaWJjLWNvbmYKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBjb250cmliL3JlZ3Jlc3Npb24vb2Jqcy1nY2Muc2ggfCA0ICsrKysKLSBsaWJqYXZhL2NsYXNzcGF0aC9sdGNvbmZpZyAgICAgfCA0ICsrLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbnRyaWIvcmVncmVzc2lvbi9vYmpzLWdjYy5zaCBiL2NvbnRyaWIvcmVncmVzc2lvbi9vYmpzLWdjYy5zaAotaW5kZXggNjBiMDQ5Ny4uNmRjN2VhZCAxMDA3NTUKLS0tLSBhL2NvbnRyaWIvcmVncmVzc2lvbi9vYmpzLWdjYy5zaAotKysrIGIvY29udHJpYi9yZWdyZXNzaW9uL29ianMtZ2NjLnNoCi1AQCAtMTA2LDYgKzEwNiwxMCBAQCBpZiBbICRIX1JFQUxfVEFSR0VUID0gJEhfUkVBTF9IT1NUIC1hICRIX1JFQUxfVEFSR0VUID0gaTY4Ni1wYy1saW51eC1nbnUgXQotICB0aGVuCi0gICBtYWtlIGFsbC1nZGIgYWxsLWRlamFnbnUgYWxsLWxkIHx8IGV4aXQgMQotICAgbWFrZSBpbnN0YWxsLWdkYiBpbnN0YWxsLWRlamFnbnUgaW5zdGFsbC1sZCB8fCBleGl0IDEKLStlbGlmIFsgJEhfUkVBTF9UQVJHRVQgPSAkSF9SRUFMX0hPU1QgLWEgJEhfUkVBTF9UQVJHRVQgPSBpNjg2LXBjLWxpbnV4LXVjbGliYyBdCi0rIHRoZW4KLSsgIG1ha2UgYWxsLWdkYiBhbGwtZGVqYWdudSBhbGwtbGQgfHwgZXhpdCAxCi0rICBtYWtlIGluc3RhbGwtZ2RiIGluc3RhbGwtZGVqYWdudSBpbnN0YWxsLWxkIHx8IGV4aXQgMQotIGVsaWYgWyAkSF9SRUFMX1RBUkdFVCA9ICRIX1JFQUxfSE9TVCBdIDsgdGhlbgotICAgbWFrZSBib290c3RyYXAgfHwgZXhpdCAxCi0gICBtYWtlIGluc3RhbGwgfHwgZXhpdCAxCi1kaWZmIC0tZ2l0IGEvbGliamF2YS9jbGFzc3BhdGgvbHRjb25maWcgYi9saWJqYXZhL2NsYXNzcGF0aC9sdGNvbmZpZwotaW5kZXggNzQzZDk1MS4uYWU0ZWE2MCAxMDA3NTUKLS0tLSBhL2xpYmphdmEvY2xhc3NwYXRoL2x0Y29uZmlnCi0rKysgYi9saWJqYXZhL2NsYXNzcGF0aC9sdGNvbmZpZwotQEAgLTYwMyw3ICs2MDMsNyBAQCBob3N0X29zPWBlY2hvICRob3N0IHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDMvJ2AKLSAKLSAjIFRyYW5zZm9ybSBsaW51eCogdG8gKi0qLWxpbnV4LWdudSosIHRvIHN1cHBvcnQgb2xkIGNvbmZpZ3VyZSBzY3JpcHRzLgotIGNhc2UgJGhvc3Rfb3MgaW4KLS1saW51eC1nbnUqKSA7OwotK2xpbnV4LWdudSp8bGludXgtdWNsaWJjKikgOzsKLSBsaW51eCopIGhvc3Q9YGVjaG8gJGhvc3QgfCBzZWQgJ3MvXlwoLiotLiotbGludXhcKVwoLipcKSQvXDEtZ251XDIvJ2AKLSBlc2FjCi0gCi1AQCAtMTI0Nyw3ICsxMjQ3LDcgQEAgbGludXgtZ251b2xkbGQqIHwgbGludXgtZ251YW91dCogfCBsaW51eC1nbnVjb2ZmKikKLSAgIDs7Ci0gCi0gIyBUaGlzIG11c3QgYmUgTGludXggRUxGLgotLWxpbnV4LWdudSopCi0rbGludXgqKQotICAgdmVyc2lvbl90eXBlPWxpbnV4Ci0gICBuZWVkX2xpYl9wcmVmaXg9bm8KLSAgIG5lZWRfdmVyc2lvbj1ubwotLS0gCi0yLjYuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMDMtZ2NjLXVjbGliYy1sb2NhbGUtY3R5cGVfdG91cGxvd190LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDAzLWdjYy11Y2xpYmMtbG9jYWxlLWN0eXBlX3RvdXBsb3dfdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmQwMzI2My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMDMtZ2NjLXVjbGliYy1sb2NhbGUtY3R5cGVfdG91cGxvd190LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotRnJvbSA5YmNiM2ExODQ4ZmYwZjg5OTAzMDFjYTA5YTI1YjE1YzJjZjkwYzZmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDg6NDA6MTIgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAwMy80Nl0gZ2NjLXVjbGliYy1sb2NhbGUtY3R5cGVfdG91cGxvd190Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvZ2VuZXJpYy9jX2xvY2FsZS5jYyB8IDUgKysrKysKLSBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS9nZW5lcmljL2NfbG9jYWxlLmggIHwgOSArKysrKysrKysKLSBsaWJzdGRjKystdjMvY29uZmlnL29zL2dudS1saW51eC9jdHlwZV9iYXNlLmggIHwgOSArKysrKysrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDIzIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL2dlbmVyaWMvY19sb2NhbGUuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS9nZW5lcmljL2NfbG9jYWxlLmNjCi1pbmRleCA2ZGE1ZjIyLi4yZjg1YzJmIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvZ2VuZXJpYy9jX2xvY2FsZS5jYwotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvZ2VuZXJpYy9jX2xvY2FsZS5jYwotQEAgLTI2Myw1ICsyNjMsMTAgQEAgX0dMSUJDWFhfRU5EX05BTUVTUEFDRV9WRVJTSU9OCi0gI2lmZGVmIF9HTElCQ1hYX0xPTkdfRE9VQkxFX0NPTVBBVAotICNkZWZpbmUgX0dMSUJDWFhfTERCTF9DT01QQVQoZGJsLCBsZGJsKSBcCi0gICBleHRlcm4gIkMiIHZvaWQgbGRibCAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKGFsaWFzICgjZGJsKSkpCi0rI2lmZGVmIF9fVUNMSUJDX18KLSsvLyBUaGlzIGlzIGJlY2F1c2UgX19jX2xvY2FsZSBpcyBvZiB0eXBlIF9fY3R5cGVfdG91cGxvd190KiB3aGljaCBpcyBzaG9ydCBvbiB1Y2xpYmMuIGZvciBnbGliYyBpdHMgaW50KgotK19HTElCQ1hYX0xEQkxfQ09NUEFUKF9aU3QxNF9fY29udmVydF90b192SWRFdlBLY1JUX1JTdDEyX0lvc19Jb3N0YXRlUktQcywgX1pTdDE0X19jb252ZXJ0X3RvX3ZJZUV2UEtjUlRfUlN0MTJfSW9zX0lvc3RhdGVSS1BzKTsKLSsjZWxzZQotIF9HTElCQ1hYX0xEQkxfQ09NUEFUKF9aU3QxNF9fY29udmVydF90b192SWRFdlBLY1JUX1JTdDEyX0lvc19Jb3N0YXRlUktQaSwgX1pTdDE0X19jb252ZXJ0X3RvX3ZJZUV2UEtjUlRfUlN0MTJfSW9zX0lvc3RhdGVSS1BpKTsKLSsjZW5kaWYKLSAjZW5kaWYgLy8gX0dMSUJDWFhfTE9OR19ET1VCTEVfQ09NUEFUCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvZ2VuZXJpYy9jX2xvY2FsZS5oIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvZ2VuZXJpYy9jX2xvY2FsZS5oCi1pbmRleCBlZTNlZjg2Li43ZmQ1NDg1IDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvZ2VuZXJpYy9jX2xvY2FsZS5oCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS9nZW5lcmljL2NfbG9jYWxlLmgKLUBAIC00MCwxMyArNDAsMjIgQEAKLSAKLSAjaW5jbHVkZSA8Y2xvY2FsZT4KLSAKLSsjaWZkZWYgX19VQ0xJQkNfXwotKyNpbmNsdWRlIDxmZWF0dXJlcy5oPgotKyNpbmNsdWRlIDxjdHlwZS5oPgotKyNlbmRpZgotKwotICNkZWZpbmUgX0dMSUJDWFhfTlVNX0NBVEVHT1JJRVMgMAotIAotIG5hbWVzcGFjZSBzdGQgX0dMSUJDWFhfVklTSUJJTElUWShkZWZhdWx0KQotIHsKLSBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgotIAotKyNpZmRlZiBfX1VDTElCQ19fCi0rICB0eXBlZGVmIF9fY3R5cGVfdG91cGxvd190KglfX2NfbG9jYWxlOwotKyNlbHNlCi0gICB0eXBlZGVmIGludCoJCQlfX2NfbG9jYWxlOwotKyNlbmRpZgotIAotICAgLy8gQ29udmVydCBudW1lcmljIHZhbHVlIG9mIHR5cGUgZG91YmxlIGFuZCBsb25nIGRvdWJsZSB0byBzdHJpbmcgYW5kCi0gICAvLyByZXR1cm4gbGVuZ3RoIG9mIHN0cmluZy4gIElmIHZzbnByaW50ZiBpcyBhdmFpbGFibGUgdXNlIGl0LCBvdGhlcndpc2UKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL29zL2dudS1saW51eC9jdHlwZV9iYXNlLmggYi9saWJzdGRjKystdjMvY29uZmlnL29zL2dudS1saW51eC9jdHlwZV9iYXNlLmgKLWluZGV4IGZkNTJiNzMuLjI2MjdjZjMgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlnL29zL2dudS1saW51eC9jdHlwZV9iYXNlLmgKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvb3MvZ251LWxpbnV4L2N0eXBlX2Jhc2UuaAotQEAgLTMzLDYgKzMzLDExIEBACi0gCi0gLy8gSW5mb3JtYXRpb24gYXMgZ2xlYW5lZCBmcm9tIC91c3IvaW5jbHVkZS9jdHlwZS5oCi0gCi0rI2lmZGVmIF9fVUNMSUJDX18KLSsjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KLSsjaW5jbHVkZSA8Y3R5cGUuaD4KLSsjZW5kaWYKLSsKLSBuYW1lc3BhY2Ugc3RkIF9HTElCQ1hYX1ZJU0lCSUxJVFkoZGVmYXVsdCkKLSB7Ci0gX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KLUBAIC00MSw3ICs0NiwxMSBAQCBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgotICAgc3RydWN0IGN0eXBlX2Jhc2UKLSAgIHsKLSAgICAgLy8gTm9uLXN0YW5kYXJkIHR5cGVkZWZzLgotKyNpZmRlZiBfX1VDTElCQ19fCi0rICAgIHR5cGVkZWYgY29uc3QgX19jdHlwZV90b3VwbG93X3QqCV9fdG9fdHlwZTsKLSsjZWxzZQotICAgICB0eXBlZGVmIGNvbnN0IGludCogCQlfX3RvX3R5cGU7Ci0rI2VuZGlmCi0gCi0gICAgIC8vIE5COiBPZmZzZXRzIGludG8gY3R5cGU8Y2hhcj46Ol9NX3RhYmxlIGZvcmNlIGEgcGFydGljdWxhciBzaXplCi0gICAgIC8vIG9uIHRoZSBtYXNrIHR5cGUuIEJlY2F1c2Ugb2YgdGhpcywgd2UgZG9uJ3QgdXNlIGFuIGVudW0uCi0tLSAKLTIuNi4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAwNC11Y2xpYmMtbG9jYWxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDA0LXVjbGliYy1sb2NhbGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1NjI2NWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDA0LXVjbGliYy1sb2NhbGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyODYyICswLDAgQEAKLUZyb20gYmQ5ZGQ0NzJkMTYyZmM3MjUyMmY5NmY3MGY2MzkxYzdjNjNkMmJmNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA4OjQxOjM5ICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDQvNDZdIHVjbGliYy1sb2NhbGUKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBsaWJzdGRjKystdjMvYWNpbmNsdWRlLm00ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzNyArKwotIC4uLi9jb25maWcvbG9jYWxlL3VjbGliYy9jKytsb2NhbGVfaW50ZXJuYWwuaCAgICAgIHwgIDYzICsrCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjICAgICAgfCAxNjAgKysrKysKLSBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaCAgICAgICB8IDExNyArKysrCi0gLi4uL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NvZGVjdnRfbWVtYmVycy5jYyAgICAgICAgfCAzMDggKysrKysrKysrCi0gLi4uL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NvbGxhdGVfbWVtYmVycy5jYyAgICAgICAgfCAgODAgKysrCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2N0eXBlX21lbWJlcnMuY2MgfCAzMDAgKysrKysrKysrCi0gLi4uL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuY2MgICAgICAgfCAxMDAgKysrCi0gLi4uL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaCAgICAgICAgfCAxMTggKysrKwotIC4uLi9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjICAgICAgIHwgNjkyICsrKysrKysrKysrKysrKysrKysrKwotIC4uLi9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MgICAgICAgIHwgMTYwICsrKysrCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYyAgfCA0MDYgKysrKysrKysrKysrCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5oICAgfCAgNjggKysKLSBsaWJzdGRjKystdjMvY29uZmlndXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA3NSArKysKLSBsaWJzdGRjKystdjMvaW5jbHVkZS9jX2NvbXBhdGliaWxpdHkvd2NoYXIuaCAgICAgICB8ICAgMiArCi0gbGlic3RkYysrLXYzL2luY2x1ZGUvY19zdGQvY3djaGFyICAgICAgICAgICAgICAgICAgfCAgIDIgKwotIDE2IGZpbGVzIGNoYW5nZWQsIDI2ODggaW5zZXJ0aW9ucygrKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvYysrbG9jYWxlX2ludGVybmFsLmgKLSBjcmVhdGUgbW9kZSAxMDA2NDQgbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5oCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jb2RlY3Z0X21lbWJlcnMuY2MKLSBjcmVhdGUgbW9kZSAxMDA2NDQgbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NvbGxhdGVfbWVtYmVycy5jYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY3R5cGVfbWVtYmVycy5jYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5jYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5oCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MKLSBjcmVhdGUgbW9kZSAxMDA2NDQgbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmgKLQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9hY2luY2x1ZGUubTQgYi9saWJzdGRjKystdjMvYWNpbmNsdWRlLm00Ci1pbmRleCA4MjZlZjg2Li43OWNjNzE2IDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2FjaW5jbHVkZS5tNAotKysrIGIvbGlic3RkYysrLXYzL2FjaW5jbHVkZS5tNAotQEAgLTIwMjksNiArMjAyOSw5IEBAIEFDX0RFRlVOKFtHTElCQ1hYX0VOQUJMRV9DTE9DQUxFXSwgWwotICAgIyBEZWZhdWx0IHRvICJnZW5lcmljIi4KLSAgIGlmIHRlc3QgJGVuYWJsZV9jbG9jYWxlX2ZsYWcgPSBhdXRvOyB0aGVuCi0gICAgIGNhc2UgJHt0YXJnZXRfb3N9IGluCi0rICAgICAgKi11Y2xpYmMqKQotKyAgICAgICAgZW5hYmxlX2Nsb2NhbGVfZmxhZz11Y2xpYmMKLSsgICAgICAgIDs7Ci0gICAgICAgbGludXgqIHwgZ251KiB8IGtmcmVlYnNkKi1nbnUgfCBrbmV0YnNkKi1nbnUpCi0gCWVuYWJsZV9jbG9jYWxlX2ZsYWc9Z251Ci0gCTs7Ci1AQCAtMjIxMyw2ICsyMjE2LDQwIEBAIEFDX0RFRlVOKFtHTElCQ1hYX0VOQUJMRV9DTE9DQUxFXSwgWwotICAgICAgIENUSU1FX0NDPWNvbmZpZy9sb2NhbGUvZ2VuZXJpYy90aW1lX21lbWJlcnMuY2MKLSAgICAgICBDTE9DQUxFX0lOVEVSTkFMX0g9Y29uZmlnL2xvY2FsZS9nZW5lcmljL2MrK2xvY2FsZV9pbnRlcm5hbC5oCi0gICAgICAgOzsKLSsgICAgdWNsaWJjKQotKyAgICAgIEFDX01TR19SRVNVTFQodWNsaWJjKQotKwotKyAgICAgICMgRGVjbGFyZSBpbnRlbnRpb24gdG8gdXNlIGdldHRleHQsIGFuZCBhZGQgc3VwcG9ydCBmb3Igc3BlY2lmaWMKLSsgICAgICAjIGxhbmd1YWdlcy4KLSsgICAgICAjIEZvciBzb21lIHJlYXNvbiwgQUxMX0xJTkdVQVMgaGFzIHRvIGJlIGJlZm9yZSBBTS1HTlUtR0VUVEVYVAotKyAgICAgIEFMTF9MSU5HVUFTPSJkZSBmciIKLSsKLSsgICAgICAjIERvbid0IGNhbGwgQU0tR05VLUdFVFRFWFQgaGVyZS4gSW5zdGVhZCwgYXNzdW1lIGdsaWJjLgotKyAgICAgIEFDX0NIRUNLX1BST0coY2hlY2tfbXNnZm10LCBtc2dmbXQsIHllcywgbm8pCi0rICAgICAgaWYgdGVzdCB4IiRjaGVja19tc2dmbXQiID0geCJ5ZXMiICYmIHRlc3QgeCIkZW5hYmxlX25scyIgPSB4InllcyI7IHRoZW4KLSsgICAgICAgIFVTRV9OTFM9eWVzCi0rICAgICAgZmkKLSsgICAgICAjIEV4cG9ydCB0aGUgYnVpbGQgb2JqZWN0cy4KLSsgICAgICBmb3IgbGluZyBpbiAkQUxMX0xJTkdVQVM7IGRvIFwKLSsgICAgICAgIGdsaWJjeHhfTU9GSUxFUz0iJGdsaWJjeHhfTU9GSUxFUyAkbGluZy5tbyI7IFwKLSsgICAgICAgIGdsaWJjeHhfUE9GSUxFUz0iJGdsaWJjeHhfUE9GSUxFUyAkbGluZy5wbyI7IFwKLSsgICAgICBkb25lCi0rICAgICAgQUNfU1VCU1QoZ2xpYmN4eF9NT0ZJTEVTKQotKyAgICAgIEFDX1NVQlNUKGdsaWJjeHhfUE9GSUxFUykKLSsKLSsgICAgICBDTE9DQUxFX0g9Y29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaAotKyAgICAgIENMT0NBTEVfQ0M9Y29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuY2MKLSsgICAgICBDQ09ERUNWVF9DQz1jb25maWcvbG9jYWxlL3VjbGliYy9jb2RlY3Z0X21lbWJlcnMuY2MKLSsgICAgICBDQ09MTEFURV9DQz1jb25maWcvbG9jYWxlL3VjbGliYy9jb2xsYXRlX21lbWJlcnMuY2MKLSsgICAgICBDQ1RZUEVfQ0M9Y29uZmlnL2xvY2FsZS91Y2xpYmMvY3R5cGVfbWVtYmVycy5jYwotKyAgICAgIENNRVNTQUdFU19IPWNvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaAotKyAgICAgIENNRVNTQUdFU19DQz1jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmNjCi0rICAgICAgQ01PTkVZX0NDPWNvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MKLSsgICAgICBDTlVNRVJJQ19DQz1jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MKLSsgICAgICBDVElNRV9IPWNvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5oCi0rICAgICAgQ1RJTUVfQ0M9Y29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmNjCi0rICAgICAgQ0xPQ0FMRV9JTlRFUk5BTF9IPWNvbmZpZy9sb2NhbGUvdWNsaWJjL2MrK2xvY2FsZV9pbnRlcm5hbC5oCi0rICAgICAgOzsKLSAgIGVzYWMKLSAKLSAgICMgVGhpcyBpcyB3aGVyZSB0aGUgdGVzdHN1aXRlIGxvb2tzIGZvciBsb2NhbGUgY2F0YWxvZ3MsIHVzaW5nIHRoZQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jKytsb2NhbGVfaW50ZXJuYWwuaCBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jKytsb2NhbGVfaW50ZXJuYWwuaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjJhZTNlNGEKLS0tLSAvZGV2L251bGwKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jKytsb2NhbGVfaW50ZXJuYWwuaAotQEAgLTAsMCArMSw2MyBAQAotKy8vIFByb3RvdHlwZXMgZm9yIEdMSUJDIHRocmVhZCBsb2NhbGUgX18tcHJlZml4ZWQgZnVuY3Rpb25zIC0qLSBDKysgLSotCi0rCi0rLy8gQ29weXJpZ2h0IChDKSAyMDAyLCAyMDA0LCAyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8vCi0rLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBJU08gQysrIExpYnJhcnkuICBUaGlzIGxpYnJhcnkgaXMgZnJlZQotKy8vIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZQotKy8vIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCi0rLy8gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rLy8gYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rLy8gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsvLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsvLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotKy8vIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSsvLyBTb2Z0d2FyZSBGb3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsvLyBVU0EuCi0rCi0rLy8gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgeW91IG1heSB1c2UgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBmcmVlIHNvZnR3YXJlCi0rLy8gbGlicmFyeSB3aXRob3V0IHJlc3RyaWN0aW9uLiAgU3BlY2lmaWNhbGx5LCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZQotKy8vIHRlbXBsYXRlcyBvciB1c2UgbWFjcm9zIG9yIGlubGluZSBmdW5jdGlvbnMgZnJvbSB0aGlzIGZpbGUsIG9yIHlvdSBjb21waWxlCi0rLy8gdGhpcyBmaWxlIGFuZCBsaW5rIGl0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiBleGVjdXRhYmxlLCB0aGlzCi0rLy8gZmlsZSBkb2VzIG5vdCBieSBpdHNlbGYgY2F1c2UgdGhlIHJlc3VsdGluZyBleGVjdXRhYmxlIHRvIGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBUaGlzIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyCi0rLy8gaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlIGV4ZWN1dGFibGUgZmlsZSBtaWdodCBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgotKwotKy8vIFdyaXR0ZW4gYnkgSmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4KLSsKLSsjaW5jbHVkZSA8Yml0cy9jKytjb25maWcuaD4KLSsjaW5jbHVkZSA8Y2xvY2FsZT4KLSsKLSsjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KLSsjd2FybmluZyBjbGVhbiB0aGlzIHVwCi0rI2VuZGlmCi0rCi0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsKLStleHRlcm4gIkMiIF9fdHlwZW9mKG5sX2xhbmdpbmZvX2wpIF9fbmxfbGFuZ2luZm9fbDsKLStleHRlcm4gIkMiIF9fdHlwZW9mKHN0cmNvbGxfbCkgX19zdHJjb2xsX2w7Ci0rZXh0ZXJuICJDIiBfX3R5cGVvZihzdHJmdGltZV9sKSBfX3N0cmZ0aW1lX2w7Ci0rZXh0ZXJuICJDIiBfX3R5cGVvZihzdHJ0b2RfbCkgX19zdHJ0b2RfbDsKLStleHRlcm4gIkMiIF9fdHlwZW9mKHN0cnRvZl9sKSBfX3N0cnRvZl9sOwotK2V4dGVybiAiQyIgX190eXBlb2Yoc3RydG9sZF9sKSBfX3N0cnRvbGRfbDsKLStleHRlcm4gIkMiIF9fdHlwZW9mKHN0cnhmcm1fbCkgX19zdHJ4ZnJtX2w7Ci0rZXh0ZXJuICJDIiBfX3R5cGVvZihuZXdsb2NhbGUpIF9fbmV3bG9jYWxlOwotK2V4dGVybiAiQyIgX190eXBlb2YoZnJlZWxvY2FsZSkgX19mcmVlbG9jYWxlOwotK2V4dGVybiAiQyIgX190eXBlb2YoZHVwbG9jYWxlKSBfX2R1cGxvY2FsZTsKLStleHRlcm4gIkMiIF9fdHlwZW9mKHVzZWxvY2FsZSkgX191c2Vsb2NhbGU7Ci0rCi0rI2lmZGVmIF9HTElCQ1hYX1VTRV9XQ0hBUl9UCi0rZXh0ZXJuICJDIiBfX3R5cGVvZihpc3djdHlwZV9sKSBfX2lzd2N0eXBlX2w7Ci0rZXh0ZXJuICJDIiBfX3R5cGVvZih0b3dsb3dlcl9sKSBfX3Rvd2xvd2VyX2w7Ci0rZXh0ZXJuICJDIiBfX3R5cGVvZih0b3d1cHBlcl9sKSBfX3Rvd3VwcGVyX2w7Ci0rZXh0ZXJuICJDIiBfX3R5cGVvZih3Y3Njb2xsX2wpIF9fd2NzY29sbF9sOwotK2V4dGVybiAiQyIgX190eXBlb2Yod2NzZnRpbWVfbCkgX193Y3NmdGltZV9sOwotK2V4dGVybiAiQyIgX190eXBlb2Yod2NzeGZybV9sKSBfX3djc3hmcm1fbDsKLStleHRlcm4gIkMiIF9fdHlwZW9mKHdjdHlwZV9sKSBfX3djdHlwZV9sOwotKyNlbmRpZgotKwotKyNlbmRpZiAvLyBHTElCQyAyLjMgYW5kIGxhdGVyCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNTA4MWRjMQotLS0tIC9kZXYvbnVsbAotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjCi1AQCAtMCwwICsxLDE2MCBAQAotKy8vIFdyYXBwZXIgZm9yIHVuZGVybHlpbmcgQy1sYW5ndWFnZSBsb2NhbGl6YXRpb24gLSotIEMrKyAtKi0KLSsKLSsvLyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIsIDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLy8KLSsvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlCi0rLy8gc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlCi0rLy8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLSsvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsvLyBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsvLyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKy8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi0rLy8gd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKy8vIFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKy8vIFVTQS4KLSsKLSsvLyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIGZyZWUgc29mdHdhcmUKLSsvLyBsaWJyYXJ5IHdpdGhvdXQgcmVzdHJpY3Rpb24uICBTcGVjaWZpY2FsbHksIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlCi0rLy8gdGVtcGxhdGVzIG9yIHVzZSBtYWNyb3Mgb3IgaW5saW5lIGZ1bmN0aW9ucyBmcm9tIHRoaXMgZmlsZSwgb3IgeW91IGNvbXBpbGUKLSsvLyB0aGlzIGZpbGUgYW5kIGxpbmsgaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuIGV4ZWN1dGFibGUsIHRoaXMKLSsvLyBmaWxlIGRvZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoaXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIKLSsvLyBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCi0rCi0rLy8KLSsvLyBJU08gQysrIDE0ODgyOiAyMi44ICBTdGFuZGFyZCBsb2NhbGUgY2F0ZWdvcmllcy4KLSsvLwotKwotKy8vIFdyaXR0ZW4gYnkgQmVuamFtaW4gS29zbmlrIDxia296QHJlZGhhdC5jb20+Ci0rCi0rI2luY2x1ZGUgPGNlcnJubz4gIC8vIEZvciBlcnJubwotKyNpbmNsdWRlIDxsb2NhbGU+Ci0rI2luY2x1ZGUgPHN0ZGV4Y2VwdD4KLSsjaW5jbHVkZSA8bGFuZ2luZm8uaD4KLSsjaW5jbHVkZSA8Yml0cy9jKytsb2NhbGVfaW50ZXJuYWwuaD4KLSsKLSsjaWZuZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsjZGVmaW5lIF9fc3RydG9sX2woUywgRSwgQiwgTCkgICAgICBzdHJ0b2woKFMpLCAoRSksIChCKSkKLSsjZGVmaW5lIF9fc3RydG91bF9sKFMsIEUsIEIsIEwpICAgICBzdHJ0b3VsKChTKSwgKEUpLCAoQikpCi0rI2RlZmluZSBfX3N0cnRvbGxfbChTLCBFLCBCLCBMKSAgICAgc3RydG9sbCgoUyksIChFKSwgKEIpKQotKyNkZWZpbmUgX19zdHJ0b3VsbF9sKFMsIEUsIEIsIEwpICAgIHN0cnRvdWxsKChTKSwgKEUpLCAoQikpCi0rI2RlZmluZSBfX3N0cnRvZl9sKFMsIEUsIEwpICAgICAgICAgc3RydG9mKChTKSwgKEUpKQotKyNkZWZpbmUgX19zdHJ0b2RfbChTLCBFLCBMKSAgICAgICAgIHN0cnRvZCgoUyksIChFKSkKLSsjZGVmaW5lIF9fc3RydG9sZF9sKFMsIEUsIEwpICAgICAgICBzdHJ0b2xkKChTKSwgKEUpKQotKyN3YXJuaW5nIHNob3VsZCBkdW1teSBfX25ld2xvY2FsZSBjaGVjayBmb3IgQ3xQT1NJWCA/Ci0rI2RlZmluZSBfX25ld2xvY2FsZShhLCBiLCBjKSAgICAgICAgTlVMTAotKyNkZWZpbmUgX19mcmVlbG9jYWxlKGEpICAgICAgICAgICAgICgodm9pZCkwKQotKyNkZWZpbmUgX19kdXBsb2NhbGUoYSkgICAgICAgICAgICAgIF9fY19sb2NhbGUoKQotKyNlbmRpZgotKwotK25hbWVzcGFjZSBzdGQKLSt7Ci0rICB0ZW1wbGF0ZTw+Ci0rICAgIHZvaWQKLSsgICAgX19jb252ZXJ0X3RvX3YoY29uc3QgY2hhciogX19zLCBmbG9hdCYgX192LCBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsCi0rCQkgICBjb25zdCBfX2NfbG9jYWxlJiBfX2Nsb2MpCi0rICAgIHsKLSsgICAgICBpZiAoIShfX2VyciAmIGlvc19iYXNlOjpmYWlsYml0KSkKLSsJewotKwkgIGNoYXIqIF9fc2FuaXR5OwotKwkgIGVycm5vID0gMDsKLSsJICBmbG9hdCBfX2YgPSBfX3N0cnRvZl9sKF9fcywgJl9fc2FuaXR5LCBfX2Nsb2MpOwotKyAgICAgICAgICBpZiAoX19zYW5pdHkgIT0gX19zICYmIGVycm5vICE9IEVSQU5HRSkKLSsJICAgIF9fdiA9IF9fZjsKLSsJICBlbHNlCi0rCSAgICBfX2VyciB8PSBpb3NfYmFzZTo6ZmFpbGJpdDsKLSsJfQotKyAgICB9Ci0rCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIHZvaWQKLSsgICAgX19jb252ZXJ0X3RvX3YoY29uc3QgY2hhciogX19zLCBkb3VibGUmIF9fdiwgaW9zX2Jhc2U6Omlvc3RhdGUmIF9fZXJyLAotKwkJICAgY29uc3QgX19jX2xvY2FsZSYgX19jbG9jKQotKyAgICB7Ci0rICAgICAgaWYgKCEoX19lcnIgJiBpb3NfYmFzZTo6ZmFpbGJpdCkpCi0rCXsKLSsJICBjaGFyKiBfX3Nhbml0eTsKLSsJICBlcnJubyA9IDA7Ci0rCSAgZG91YmxlIF9fZCA9IF9fc3RydG9kX2woX19zLCAmX19zYW5pdHksIF9fY2xvYyk7Ci0rICAgICAgICAgIGlmIChfX3Nhbml0eSAhPSBfX3MgJiYgZXJybm8gIT0gRVJBTkdFKQotKwkgICAgX192ID0gX19kOwotKwkgIGVsc2UKLSsJICAgIF9fZXJyIHw9IGlvc19iYXNlOjpmYWlsYml0OwotKwl9Ci0rICAgIH0KLSsKLSsgIHRlbXBsYXRlPD4KLSsgICAgdm9pZAotKyAgICBfX2NvbnZlcnRfdG9fdihjb25zdCBjaGFyKiBfX3MsIGxvbmcgZG91YmxlJiBfX3YsIGlvc19iYXNlOjppb3N0YXRlJiBfX2VyciwKLSsJCSAgIGNvbnN0IF9fY19sb2NhbGUmIF9fY2xvYykKLSsgICAgewotKyAgICAgIGlmICghKF9fZXJyICYgaW9zX2Jhc2U6OmZhaWxiaXQpKQotKwl7Ci0rCSAgY2hhciogX19zYW5pdHk7Ci0rCSAgZXJybm8gPSAwOwotKwkgIGxvbmcgZG91YmxlIF9fbGQgPSBfX3N0cnRvbGRfbChfX3MsICZfX3Nhbml0eSwgX19jbG9jKTsKLSsgICAgICAgICAgaWYgKF9fc2FuaXR5ICE9IF9fcyAmJiBlcnJubyAhPSBFUkFOR0UpCi0rCSAgICBfX3YgPSBfX2xkOwotKwkgIGVsc2UKLSsJICAgIF9fZXJyIHw9IGlvc19iYXNlOjpmYWlsYml0OwotKwl9Ci0rICAgIH0KLSsKLSsgIHZvaWQKLSsgIGxvY2FsZTo6ZmFjZXQ6Ol9TX2NyZWF0ZV9jX2xvY2FsZShfX2NfbG9jYWxlJiBfX2Nsb2MsIGNvbnN0IGNoYXIqIF9fcywKLSsJCQkJICAgIF9fY19sb2NhbGUgX19vbGQpCi0rICB7Ci0rICAgIF9fY2xvYyA9IF9fbmV3bG9jYWxlKDEgPDwgTENfQUxMLCBfX3MsIF9fb2xkKTsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICBpZiAoIV9fY2xvYykKLSsgICAgICB7Ci0rCS8vIFRoaXMgbmFtZWQgbG9jYWxlIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIHVuZGVybHlpbmcgT1MuCi0rCV9fdGhyb3dfcnVudGltZV9lcnJvcihfX04oImxvY2FsZTo6ZmFjZXQ6Ol9TX2NyZWF0ZV9jX2xvY2FsZSAiCi0rCQkJICAgICAgIm5hbWUgbm90IHZhbGlkIikpOwotKyAgICAgIH0KLSsjZW5kaWYKLSsgIH0KLSsKLSsgIHZvaWQKLSsgIGxvY2FsZTo6ZmFjZXQ6Ol9TX2Rlc3Ryb3lfY19sb2NhbGUoX19jX2xvY2FsZSYgX19jbG9jKQotKyAgewotKyAgICBpZiAoX1NfZ2V0X2NfbG9jYWxlKCkgIT0gX19jbG9jKQotKyAgICAgIF9fZnJlZWxvY2FsZShfX2Nsb2MpOwotKyAgfQotKwotKyAgX19jX2xvY2FsZQotKyAgbG9jYWxlOjpmYWNldDo6X1NfY2xvbmVfY19sb2NhbGUoX19jX2xvY2FsZSYgX19jbG9jKQotKyAgeyByZXR1cm4gX19kdXBsb2NhbGUoX19jbG9jKTsgfQotK30gLy8gbmFtZXNwYWNlIHN0ZAotKwotK25hbWVzcGFjZSBfX2dudV9jeHgKLSt7Ci0rICBjb25zdCBjaGFyKiBjb25zdCBjYXRlZ29yeV9uYW1lc1s2ICsgX0dMSUJDWFhfTlVNX0NBVEVHT1JJRVNdID0KLSsgICAgewotKyAgICAgICJMQ19DVFlQRSIsCi0rICAgICAgIkxDX05VTUVSSUMiLAotKyAgICAgICJMQ19USU1FIiwKLSsgICAgICAiTENfQ09MTEFURSIsCi0rICAgICAgIkxDX01PTkVUQVJZIiwKLSsgICAgICAiTENfTUVTU0FHRVMiLAotKyNpZiBfR0xJQkNYWF9OVU1fQ0FURUdPUklFUyAhPSAwCi0rICAgICAgIkxDX1BBUEVSIiwKLSsgICAgICAiTENfTkFNRSIsCi0rICAgICAgIkxDX0FERFJFU1MiLAotKyAgICAgICJMQ19URUxFUEhPTkUiLAotKyAgICAgICJMQ19NRUFTVVJFTUVOVCIsCi0rICAgICAgIkxDX0lERU5USUZJQ0FUSU9OIgotKyNlbmRpZgotKyAgICB9OwotK30KLSsKLStuYW1lc3BhY2Ugc3RkCi0rewotKyAgY29uc3QgY2hhciogY29uc3QqIGNvbnN0IGxvY2FsZTo6X1NfY2F0ZWdvcmllcyA9IF9fZ251X2N4eDo6Y2F0ZWdvcnlfbmFtZXM7Ci0rfSAgLy8gbmFtZXNwYWNlIHN0ZAotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5oIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5kYTA3YzFmCi0tLS0gL2Rldi9udWxsCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaAotQEAgLTAsMCArMSwxMTcgQEAKLSsvLyBXcmFwcGVyIGZvciB1bmRlcmx5aW5nIEMtbGFuZ3VhZ2UgbG9jYWxpemF0aW9uIC0qLSBDKysgLSotCi0rCi0rLy8gQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8vCi0rLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBJU08gQysrIExpYnJhcnkuICBUaGlzIGxpYnJhcnkgaXMgZnJlZQotKy8vIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZQotKy8vIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCi0rLy8gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rLy8gYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rLy8gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsvLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsvLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotKy8vIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSsvLyBTb2Z0d2FyZSBGb3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsvLyBVU0EuCi0rCi0rLy8gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgeW91IG1heSB1c2UgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBmcmVlIHNvZnR3YXJlCi0rLy8gbGlicmFyeSB3aXRob3V0IHJlc3RyaWN0aW9uLiAgU3BlY2lmaWNhbGx5LCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZQotKy8vIHRlbXBsYXRlcyBvciB1c2UgbWFjcm9zIG9yIGlubGluZSBmdW5jdGlvbnMgZnJvbSB0aGlzIGZpbGUsIG9yIHlvdSBjb21waWxlCi0rLy8gdGhpcyBmaWxlIGFuZCBsaW5rIGl0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiBleGVjdXRhYmxlLCB0aGlzCi0rLy8gZmlsZSBkb2VzIG5vdCBieSBpdHNlbGYgY2F1c2UgdGhlIHJlc3VsdGluZyBleGVjdXRhYmxlIHRvIGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBUaGlzIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyCi0rLy8gaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlIGV4ZWN1dGFibGUgZmlsZSBtaWdodCBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgotKwotKy8vCi0rLy8gSVNPIEMrKyAxNDg4MjogMjIuOCAgU3RhbmRhcmQgbG9jYWxlIGNhdGVnb3JpZXMuCi0rLy8KLSsKLSsvLyBXcml0dGVuIGJ5IEJlbmphbWluIEtvc25payA8YmtvekByZWRoYXQuY29tPgotKwotKyNpZm5kZWYgX0NfTE9DQUxFX0gKLSsjZGVmaW5lIF9DX0xPQ0FMRV9IIDEKLSsKLSsjcHJhZ21hIEdDQyBzeXN0ZW1faGVhZGVyCi0rCi0rI2luY2x1ZGUgPGNzdHJpbmc+ICAgICAgICAgICAgICAvLyBnZXQgc3RkOjpzdHJsZW4KLSsjaW5jbHVkZSA8Y3N0ZGlvPiAgICAgICAgICAgICAgIC8vIGdldCBzdGQ6OnNucHJpbnRmIG9yIHN0ZDo6c3ByaW50ZgotKyNpbmNsdWRlIDxjbG9jYWxlPgotKyNpbmNsdWRlIDxsYW5naW5mby5oPgkJLy8gRm9yIGNvZGVjdnQKLSsjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KLSsjd2FybmluZyBmaXggdGhpcwotKyNlbmRpZgotKyNpZmRlZiBfX1VDTElCQ19IQVNfTE9DQUxFX18KLSsjaW5jbHVkZSA8aWNvbnYuaD4JCS8vIEZvciBjb2RlY3Z0IHVzaW5nIGljb252LCBpY29udl90Ci0rI2VuZGlmCi0rI2lmZGVmIF9fVUNMSUJDX0hBU19HRVRURVhUX0FXQVJFTkVTU19fCi0rI2luY2x1ZGUgPGxpYmludGwuaD4gCQkvLyBGb3IgbWVzc2FnZXMKLSsjZW5kaWYKLSsKLSsjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KLSsjd2FybmluZyB3aGF0IGlzIF9HTElCQ1hYX0NfTE9DQUxFX0dOVSBmb3IKLSsjZW5kaWYKLSsjZGVmaW5lIF9HTElCQ1hYX0NfTE9DQUxFX0dOVSAxCi0rCi0rI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi0rI3dhcm5pbmcgZml4IGNhdGVnb3JpZXMKLSsjZW5kaWYKLSsvLyAjZGVmaW5lIF9HTElCQ1hYX05VTV9DQVRFR09SSUVTIDYKLSsjZGVmaW5lIF9HTElCQ1hYX05VTV9DQVRFR09SSUVTIDAKLSsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotK25hbWVzcGFjZSBfX2dudV9jeHgKLSt7Ci0rICBleHRlcm4gIkMiIF9fdHlwZW9mKHVzZWxvY2FsZSkgX191c2Vsb2NhbGU7Ci0rfQotKyNlbmRpZgotKwotK25hbWVzcGFjZSBzdGQKLSt7Ci0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgIHR5cGVkZWYgX19sb2NhbGVfdAkJX19jX2xvY2FsZTsKLSsjZWxzZQotKyAgdHlwZWRlZiBpbnQqCQkJX19jX2xvY2FsZTsKLSsjZW5kaWYKLSsKLSsgIC8vIENvbnZlcnQgbnVtZXJpYyB2YWx1ZSBvZiB0eXBlIF9UdiB0byBzdHJpbmcgYW5kIHJldHVybiBsZW5ndGggb2YKLSsgIC8vIHN0cmluZy4gIElmIHNucHJpbnRmIGlzIGF2YWlsYWJsZSB1c2UgaXQsIG90aGVyd2lzZSBmYWxsIGJhY2sgdG8KLSsgIC8vIHRoZSB1bnNhZmUgc3ByaW50ZiB3aGljaCwgaW4gZ2VuZXJhbCwgY2FuIGJlIGRhbmdlcm91cyBhbmQgc2hvdWxkCi0rICAvLyBiZSBhdm9pZGVkLgotKyAgdGVtcGxhdGU8dHlwZW5hbWUgX1R2PgotKyAgICBpbnQKLSsgICAgX19jb252ZXJ0X2Zyb21fdihjaGFyKiBfX291dCwKLSsJCSAgICAgY29uc3QgaW50IF9fc2l6ZSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpLAotKwkJICAgICBjb25zdCBjaGFyKiBfX2ZtdCwKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hDTE9DQUxFX18KLSsJCSAgICAgX1R2IF9fdiwgY29uc3QgX19jX2xvY2FsZSYgX19jbG9jLCBpbnQgX19wcmVjKQotKyAgICB7Ci0rICAgICAgX19jX2xvY2FsZSBfX29sZCA9IF9fZ251X2N4eDo6X191c2Vsb2NhbGUoX19jbG9jKTsKLSsjZWxzZQotKwkJICAgICBfVHYgX192LCBjb25zdCBfX2NfbG9jYWxlJiwgaW50IF9fcHJlYykKLSsgICAgewotKyMgaWZkZWYgX19VQ0xJQkNfSEFTX0xPQ0FMRV9fCi0rICAgICAgY2hhciogX19vbGQgPSBzdGQ6OnNldGxvY2FsZShMQ19BTEwsIE5VTEwpOwotKyAgICAgIGNoYXIqIF9fc2F2ID0gbmV3IGNoYXJbc3RkOjpzdHJsZW4oX19vbGQpICsgMV07Ci0rICAgICAgc3RkOjpzdHJjcHkoX19zYXYsIF9fb2xkKTsKLSsgICAgICBzdGQ6OnNldGxvY2FsZShMQ19BTEwsICJDIik7Ci0rIyBlbmRpZgotKyNlbmRpZgotKwotKyAgICAgIGNvbnN0IGludCBfX3JldCA9IHN0ZDo6c25wcmludGYoX19vdXQsIF9fc2l6ZSwgX19mbXQsIF9fcHJlYywgX192KTsKLSsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hDTE9DQUxFX18KLSsgICAgICBfX2dudV9jeHg6Ol9fdXNlbG9jYWxlKF9fb2xkKTsKLSsjZWxpZiBkZWZpbmVkIF9fVUNMSUJDX0hBU19MT0NBTEVfXwotKyAgICAgIHN0ZDo6c2V0bG9jYWxlKExDX0FMTCwgX19zYXYpOwotKyAgICAgIGRlbGV0ZSBbXSBfX3NhdjsKLSsjZW5kaWYKLSsgICAgICByZXR1cm4gX19yZXQ7Ci0rICAgIH0KLSt9Ci0rCi0rI2VuZGlmCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NvZGVjdnRfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jb2RlY3Z0X21lbWJlcnMuY2MKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi42NGFhOTYyCi0tLS0gL2Rldi9udWxsCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY29kZWN2dF9tZW1iZXJzLmNjCi1AQCAtMCwwICsxLDMwOCBAQAotKy8vIHN0ZDo6Y29kZWN2dCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLCBHTlUgdmVyc2lvbiAtKi0gQysrIC0qLQotKwotKy8vIENvcHlyaWdodCAoQykgMjAwMiwgMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvLwotKy8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgSVNPIEMrKyBMaWJyYXJ5LiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUKLSsvLyBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUKLSsvLyB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotKy8vIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKy8vIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKy8vIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKy8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKy8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSsvLyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rLy8gU29mdHdhcmUgRm91bmRhdGlvbiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rLy8gVVNBLgotKwotKy8vIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHlvdSBtYXkgdXNlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgZnJlZSBzb2Z0d2FyZQotKy8vIGxpYnJhcnkgd2l0aG91dCByZXN0cmljdGlvbi4gIFNwZWNpZmljYWxseSwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUKLSsvLyB0ZW1wbGF0ZXMgb3IgdXNlIG1hY3JvcyBvciBpbmxpbmUgZnVuY3Rpb25zIGZyb20gdGhpcyBmaWxlLCBvciB5b3UgY29tcGlsZQotKy8vIHRoaXMgZmlsZSBhbmQgbGluayBpdCB3aXRoIG90aGVyIGZpbGVzIHRvIHByb2R1Y2UgYW4gZXhlY3V0YWJsZSwgdGhpcwotKy8vIGZpbGUgZG9lcyBub3QgYnkgaXRzZWxmIGNhdXNlIHRoZSByZXN1bHRpbmcgZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhpcyBleGNlcHRpb24gZG9lcyBub3QgaG93ZXZlcgotKy8vIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSBleGVjdXRhYmxlIGZpbGUgbWlnaHQgYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KLSsKLSsvLwotKy8vIElTTyBDKysgMTQ4ODI6IDIyLjIuMS41IC0gVGVtcGxhdGUgY2xhc3MgY29kZWN2dAotKy8vCi0rCi0rLy8gV3JpdHRlbiBieSBCZW5qYW1pbiBLb3NuaWsgPGJrb3pAcmVkaGF0LmNvbT4KLSsKLSsjaW5jbHVkZSA8bG9jYWxlPgotKyNpbmNsdWRlIDxjc3RkbGliPiAgLy8gRm9yIE1CX0NVUl9NQVgKLSsjaW5jbHVkZSA8Y2xpbWl0cz4gIC8vIEZvciBNQl9MRU5fTUFYCi0rI2luY2x1ZGUgPGJpdHMvYysrbG9jYWxlX2ludGVybmFsLmg+Ci0rCi0rbmFtZXNwYWNlIHN0ZAotK3sKLSsgIC8vIFNwZWNpYWxpemF0aW9ucy4KLSsjaWZkZWYgX0dMSUJDWFhfVVNFX1dDSEFSX1QKLSsgIGNvZGVjdnRfYmFzZTo6cmVzdWx0Ci0rICBjb2RlY3Z0PHdjaGFyX3QsIGNoYXIsIG1ic3RhdGVfdD46OgotKyAgZG9fb3V0KHN0YXRlX3R5cGUmIF9fc3RhdGUsIGNvbnN0IGludGVybl90eXBlKiBfX2Zyb20sCi0rCSBjb25zdCBpbnRlcm5fdHlwZSogX19mcm9tX2VuZCwgY29uc3QgaW50ZXJuX3R5cGUqJiBfX2Zyb21fbmV4dCwKLSsJIGV4dGVybl90eXBlKiBfX3RvLCBleHRlcm5fdHlwZSogX190b19lbmQsCi0rCSBleHRlcm5fdHlwZSomIF9fdG9fbmV4dCkgY29uc3QKLSsgIHsKLSsgICAgcmVzdWx0IF9fcmV0ID0gb2s7Ci0rICAgIHN0YXRlX3R5cGUgX190bXBfc3RhdGUoX19zdGF0ZSk7Ci0rCi0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgX19jX2xvY2FsZSBfX29sZCA9IF9fdXNlbG9jYWxlKF9NX2NfbG9jYWxlX2NvZGVjdnQpOwotKyNlbmRpZgotKwotKyAgICAvLyB3Y3NucnRvbWJzIGlzICp2ZXJ5KiBmYXN0IGJ1dCBzdG9wcyBpZiBlbmNvdW50ZXJzIE5VTCBjaGFyYWN0ZXJzOgotKyAgICAvLyBpbiBjYXNlIHdlIGZhbGwgYmFjayB0byB3Y3J0b21iIGFuZCB0aGVuIGNvbnRpbnVlLCBpbiBhIGxvb3AuCi0rICAgIC8vIE5COiB3Y3NucnRvbWJzIGlzIGEgR05VIGV4dGVuc2lvbgotKyAgICBmb3IgKF9fZnJvbV9uZXh0ID0gX19mcm9tLCBfX3RvX25leHQgPSBfX3RvOwotKwkgX19mcm9tX25leHQgPCBfX2Zyb21fZW5kICYmIF9fdG9fbmV4dCA8IF9fdG9fZW5kCi0rCSAmJiBfX3JldCA9PSBvazspCi0rICAgICAgewotKwljb25zdCBpbnRlcm5fdHlwZSogX19mcm9tX2NodW5rX2VuZCA9IHdtZW1jaHIoX19mcm9tX25leHQsIEwnXDAnLAotKwkJCQkJCSAgICAgIF9fZnJvbV9lbmQgLSBfX2Zyb21fbmV4dCk7Ci0rCWlmICghX19mcm9tX2NodW5rX2VuZCkKLSsJICBfX2Zyb21fY2h1bmtfZW5kID0gX19mcm9tX2VuZDsKLSsKLSsJX19mcm9tID0gX19mcm9tX25leHQ7Ci0rCWNvbnN0IHNpemVfdCBfX2NvbnYgPSB3Y3NucnRvbWJzKF9fdG9fbmV4dCwgJl9fZnJvbV9uZXh0LAotKwkJCQkJIF9fZnJvbV9jaHVua19lbmQgLSBfX2Zyb21fbmV4dCwKLSsJCQkJCSBfX3RvX2VuZCAtIF9fdG9fbmV4dCwgJl9fc3RhdGUpOwotKwlpZiAoX19jb252ID09IHN0YXRpY19jYXN0PHNpemVfdD4oLTEpKQotKwkgIHsKLSsJICAgIC8vIEluIGNhc2Ugb2YgZXJyb3IsIGluIG9yZGVyIHRvIHN0b3AgYXQgdGhlIGV4YWN0IHBsYWNlIHdlCi0rCSAgICAvLyBoYXZlIHRvIHN0YXJ0IGFnYWluIGZyb20gdGhlIGJlZ2lubmluZyB3aXRoIGEgc2VyaWVzIG9mCi0rCSAgICAvLyB3Y3J0b21iLgotKwkgICAgZm9yICg7IF9fZnJvbSA8IF9fZnJvbV9uZXh0OyArK19fZnJvbSkKLSsJICAgICAgX190b19uZXh0ICs9IHdjcnRvbWIoX190b19uZXh0LCAqX19mcm9tLCAmX190bXBfc3RhdGUpOwotKwkgICAgX19zdGF0ZSA9IF9fdG1wX3N0YXRlOwotKwkgICAgX19yZXQgPSBlcnJvcjsKLSsJICB9Ci0rCWVsc2UgaWYgKF9fZnJvbV9uZXh0ICYmIF9fZnJvbV9uZXh0IDwgX19mcm9tX2NodW5rX2VuZCkKLSsJICB7Ci0rCSAgICBfX3RvX25leHQgKz0gX19jb252OwotKwkgICAgX19yZXQgPSBwYXJ0aWFsOwotKwkgIH0KLSsJZWxzZQotKwkgIHsKLSsJICAgIF9fZnJvbV9uZXh0ID0gX19mcm9tX2NodW5rX2VuZDsKLSsJICAgIF9fdG9fbmV4dCArPSBfX2NvbnY7Ci0rCSAgfQotKwotKwlpZiAoX19mcm9tX25leHQgPCBfX2Zyb21fZW5kICYmIF9fcmV0ID09IG9rKQotKwkgIHsKLSsJICAgIGV4dGVybl90eXBlIF9fYnVmW01CX0xFTl9NQVhdOwotKwkgICAgX190bXBfc3RhdGUgPSBfX3N0YXRlOwotKwkgICAgY29uc3Qgc2l6ZV90IF9fY29udiA9IHdjcnRvbWIoX19idWYsICpfX2Zyb21fbmV4dCwgJl9fdG1wX3N0YXRlKTsKLSsJICAgIGlmIChfX2NvbnYgPiBzdGF0aWNfY2FzdDxzaXplX3Q+KF9fdG9fZW5kIC0gX190b19uZXh0KSkKLSsJICAgICAgX19yZXQgPSBwYXJ0aWFsOwotKwkgICAgZWxzZQotKwkgICAgICB7Ci0rCQltZW1jcHkoX190b19uZXh0LCBfX2J1ZiwgX19jb252KTsKLSsJCV9fc3RhdGUgPSBfX3RtcF9zdGF0ZTsKLSsJCV9fdG9fbmV4dCArPSBfX2NvbnY7Ci0rCQkrK19fZnJvbV9uZXh0OwotKwkgICAgICB9Ci0rCSAgfQotKyAgICAgIH0KLSsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICBfX3VzZWxvY2FsZShfX29sZCk7Ci0rI2VuZGlmCi0rCi0rICAgIHJldHVybiBfX3JldDsKLSsgIH0KLSsKLSsgIGNvZGVjdnRfYmFzZTo6cmVzdWx0Ci0rICBjb2RlY3Z0PHdjaGFyX3QsIGNoYXIsIG1ic3RhdGVfdD46OgotKyAgZG9faW4oc3RhdGVfdHlwZSYgX19zdGF0ZSwgY29uc3QgZXh0ZXJuX3R5cGUqIF9fZnJvbSwKLSsJY29uc3QgZXh0ZXJuX3R5cGUqIF9fZnJvbV9lbmQsIGNvbnN0IGV4dGVybl90eXBlKiYgX19mcm9tX25leHQsCi0rCWludGVybl90eXBlKiBfX3RvLCBpbnRlcm5fdHlwZSogX190b19lbmQsCi0rCWludGVybl90eXBlKiYgX190b19uZXh0KSBjb25zdAotKyAgewotKyAgICByZXN1bHQgX19yZXQgPSBvazsKLSsgICAgc3RhdGVfdHlwZSBfX3RtcF9zdGF0ZShfX3N0YXRlKTsKLSsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICBfX2NfbG9jYWxlIF9fb2xkID0gX191c2Vsb2NhbGUoX01fY19sb2NhbGVfY29kZWN2dCk7Ci0rI2VuZGlmCi0rCi0rICAgIC8vIG1ic25ydG93Y3MgaXMgKnZlcnkqIGZhc3QgYnV0IHN0b3BzIGlmIGVuY291bnRlcnMgTlVMIGNoYXJhY3RlcnM6Ci0rICAgIC8vIGluIGNhc2Ugd2Ugc3RvcmUgYSBMJ1wwJyBhbmQgdGhlbiBjb250aW51ZSwgaW4gYSBsb29wLgotKyAgICAvLyBOQjogbWJzbnJ0b3djcyBpcyBhIEdOVSBleHRlbnNpb24KLSsgICAgZm9yIChfX2Zyb21fbmV4dCA9IF9fZnJvbSwgX190b19uZXh0ID0gX190bzsKLSsJIF9fZnJvbV9uZXh0IDwgX19mcm9tX2VuZCAmJiBfX3RvX25leHQgPCBfX3RvX2VuZAotKwkgJiYgX19yZXQgPT0gb2s7KQotKyAgICAgIHsKLSsJY29uc3QgZXh0ZXJuX3R5cGUqIF9fZnJvbV9jaHVua19lbmQ7Ci0rCV9fZnJvbV9jaHVua19lbmQgPSBzdGF0aWNfY2FzdDxjb25zdCBleHRlcm5fdHlwZSo+KG1lbWNocihfX2Zyb21fbmV4dCwgJ1wwJywKLSsJCQkJCQkJCSAgX19mcm9tX2VuZAotKwkJCQkJCQkJICAtIF9fZnJvbV9uZXh0KSk7Ci0rCWlmICghX19mcm9tX2NodW5rX2VuZCkKLSsJICBfX2Zyb21fY2h1bmtfZW5kID0gX19mcm9tX2VuZDsKLSsKLSsJX19mcm9tID0gX19mcm9tX25leHQ7Ci0rCXNpemVfdCBfX2NvbnYgPSBtYnNucnRvd2NzKF9fdG9fbmV4dCwgJl9fZnJvbV9uZXh0LAotKwkJCQkgICBfX2Zyb21fY2h1bmtfZW5kIC0gX19mcm9tX25leHQsCi0rCQkJCSAgIF9fdG9fZW5kIC0gX190b19uZXh0LCAmX19zdGF0ZSk7Ci0rCWlmIChfX2NvbnYgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PigtMSkpCi0rCSAgewotKwkgICAgLy8gSW4gY2FzZSBvZiBlcnJvciwgaW4gb3JkZXIgdG8gc3RvcCBhdCB0aGUgZXhhY3QgcGxhY2Ugd2UKLSsJICAgIC8vIGhhdmUgdG8gc3RhcnQgYWdhaW4gZnJvbSB0aGUgYmVnaW5uaW5nIHdpdGggYSBzZXJpZXMgb2YKLSsJICAgIC8vIG1icnRvd2MuCi0rCSAgICBmb3IgKDs7ICsrX190b19uZXh0LCBfX2Zyb20gKz0gX19jb252KQotKwkgICAgICB7Ci0rCQlfX2NvbnYgPSBtYnJ0b3djKF9fdG9fbmV4dCwgX19mcm9tLCBfX2Zyb21fZW5kIC0gX19mcm9tLAotKwkJCQkgJl9fdG1wX3N0YXRlKTsKLSsJCWlmIChfX2NvbnYgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PigtMSkKLSsJCSAgICB8fCBfX2NvbnYgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PigtMikpCi0rCQkgIGJyZWFrOwotKwkgICAgICB9Ci0rCSAgICBfX2Zyb21fbmV4dCA9IF9fZnJvbTsKLSsJICAgIF9fc3RhdGUgPSBfX3RtcF9zdGF0ZTsKLSsJICAgIF9fcmV0ID0gZXJyb3I7Ci0rCSAgfQotKwllbHNlIGlmIChfX2Zyb21fbmV4dCAmJiBfX2Zyb21fbmV4dCA8IF9fZnJvbV9jaHVua19lbmQpCi0rCSAgewotKwkgICAgLy8gSXQgaXMgdW5jbGVhciB3aGF0IHRvIHJldHVybiBpbiB0aGlzIGNhc2UgKHNlZSBEUiAzODIpLgotKwkgICAgX190b19uZXh0ICs9IF9fY29udjsKLSsJICAgIF9fcmV0ID0gcGFydGlhbDsKLSsJICB9Ci0rCWVsc2UKLSsJICB7Ci0rCSAgICBfX2Zyb21fbmV4dCA9IF9fZnJvbV9jaHVua19lbmQ7Ci0rCSAgICBfX3RvX25leHQgKz0gX19jb252OwotKwkgIH0KLSsKLSsJaWYgKF9fZnJvbV9uZXh0IDwgX19mcm9tX2VuZCAmJiBfX3JldCA9PSBvaykKLSsJICB7Ci0rCSAgICBpZiAoX190b19uZXh0IDwgX190b19lbmQpCi0rCSAgICAgIHsKLSsJCS8vIFhYWCBQcm9iYWJseSB3cm9uZyBmb3Igc3RhdGVmdWwgZW5jb2RpbmdzCi0rCQlfX3RtcF9zdGF0ZSA9IF9fc3RhdGU7Ci0rCQkrK19fZnJvbV9uZXh0OwotKwkJKl9fdG9fbmV4dCsrID0gTCdcMCc7Ci0rCSAgICAgIH0KLSsJICAgIGVsc2UKLSsJICAgICAgX19yZXQgPSBwYXJ0aWFsOwotKwkgIH0KLSsgICAgICB9Ci0rCi0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgX191c2Vsb2NhbGUoX19vbGQpOwotKyNlbmRpZgotKwotKyAgICByZXR1cm4gX19yZXQ7Ci0rICB9Ci0rCi0rICBpbnQKLSsgIGNvZGVjdnQ8d2NoYXJfdCwgY2hhciwgbWJzdGF0ZV90Pjo6Ci0rICBkb19lbmNvZGluZygpIGNvbnN0IHRocm93KCkKLSsgIHsKLSsgICAgLy8gWFhYIFRoaXMgaW1wbGVtZW50YXRpb24gYXNzdW1lcyB0aGF0IHRoZSBlbmNvZGluZyBpcwotKyAgICAvLyBzdGF0ZWxlc3MgYW5kIGlzIGVpdGhlciBzaW5nbGUtYnl0ZSBvciB2YXJpYWJsZS13aWR0aC4KLSsgICAgaW50IF9fcmV0ID0gMDsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICBfX2NfbG9jYWxlIF9fb2xkID0gX191c2Vsb2NhbGUoX01fY19sb2NhbGVfY29kZWN2dCk7Ci0rI2VuZGlmCi0rICAgIGlmIChNQl9DVVJfTUFYID09IDEpCi0rICAgICAgX19yZXQgPSAxOwotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rICAgIF9fdXNlbG9jYWxlKF9fb2xkKTsKLSsjZW5kaWYKLSsgICAgcmV0dXJuIF9fcmV0OwotKyAgfQotKwotKyAgaW50Ci0rICBjb2RlY3Z0PHdjaGFyX3QsIGNoYXIsIG1ic3RhdGVfdD46OgotKyAgZG9fbWF4X2xlbmd0aCgpIGNvbnN0IHRocm93KCkKLSsgIHsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICBfX2NfbG9jYWxlIF9fb2xkID0gX191c2Vsb2NhbGUoX01fY19sb2NhbGVfY29kZWN2dCk7Ci0rI2VuZGlmCi0rICAgIC8vIFhYWCBQcm9iYWJseSB3cm9uZyBmb3Igc3RhdGVmdWwgZW5jb2RpbmdzLgotKyAgICBpbnQgX19yZXQgPSBNQl9DVVJfTUFYOwotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rICAgIF9fdXNlbG9jYWxlKF9fb2xkKTsKLSsjZW5kaWYKLSsgICAgcmV0dXJuIF9fcmV0OwotKyAgfQotKwotKyAgaW50Ci0rICBjb2RlY3Z0PHdjaGFyX3QsIGNoYXIsIG1ic3RhdGVfdD46OgotKyAgZG9fbGVuZ3RoKHN0YXRlX3R5cGUmIF9fc3RhdGUsIGNvbnN0IGV4dGVybl90eXBlKiBfX2Zyb20sCi0rCSAgICBjb25zdCBleHRlcm5fdHlwZSogX19lbmQsIHNpemVfdCBfX21heCkgY29uc3QKLSsgIHsKLSsgICAgaW50IF9fcmV0ID0gMDsKLSsgICAgc3RhdGVfdHlwZSBfX3RtcF9zdGF0ZShfX3N0YXRlKTsKLSsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICBfX2NfbG9jYWxlIF9fb2xkID0gX191c2Vsb2NhbGUoX01fY19sb2NhbGVfY29kZWN2dCk7Ci0rI2VuZGlmCi0rCi0rICAgIC8vIG1ic25ydG93Y3MgaXMgKnZlcnkqIGZhc3QgYnV0IHN0b3BzIGlmIGVuY291bnRlcnMgTlVMIGNoYXJhY3RlcnM6Ci0rICAgIC8vIGluIGNhc2Ugd2UgYWR2YW5jZSBwYXN0IGl0IGFuZCB0aGVuIGNvbnRpbnVlLCBpbiBhIGxvb3AuCi0rICAgIC8vIE5COiBtYnNucnRvd2NzIGlzIGEgR05VIGV4dGVuc2lvbgotKwotKyAgICAvLyBBIGR1bW15IGludGVybmFsIGJ1ZmZlciBpcyBuZWVkZWQgaW4gb3JkZXIgZm9yIG1ic25ydG9jd3MgdG8gY29uc2lkZXIKLSsgICAgLy8gaXRzIGZvdXJ0aCBwYXJhbWV0ZXIgKGl0IHdvdWxkbid0IHdpdGggTlVMTCBhcyBmaXJzdCBwYXJhbWV0ZXIpLgotKyAgICB3Y2hhcl90KiBfX3RvID0gc3RhdGljX2Nhc3Q8d2NoYXJfdCo+KF9fYnVpbHRpbl9hbGxvY2Eoc2l6ZW9mKHdjaGFyX3QpCi0rCQkJCQkJCSAgICogX19tYXgpKTsKLSsgICAgd2hpbGUgKF9fZnJvbSA8IF9fZW5kICYmIF9fbWF4KQotKyAgICAgIHsKLSsJY29uc3QgZXh0ZXJuX3R5cGUqIF9fZnJvbV9jaHVua19lbmQ7Ci0rCV9fZnJvbV9jaHVua19lbmQgPSBzdGF0aWNfY2FzdDxjb25zdCBleHRlcm5fdHlwZSo+KG1lbWNocihfX2Zyb20sICdcMCcsCi0rCQkJCQkJCQkgIF9fZW5kCi0rCQkJCQkJCQkgIC0gX19mcm9tKSk7Ci0rCWlmICghX19mcm9tX2NodW5rX2VuZCkKLSsJICBfX2Zyb21fY2h1bmtfZW5kID0gX19lbmQ7Ci0rCi0rCWNvbnN0IGV4dGVybl90eXBlKiBfX3RtcF9mcm9tID0gX19mcm9tOwotKwlzaXplX3QgX19jb252ID0gbWJzbnJ0b3djcyhfX3RvLCAmX19mcm9tLAotKwkJCQkgICBfX2Zyb21fY2h1bmtfZW5kIC0gX19mcm9tLAotKwkJCQkgICBfX21heCwgJl9fc3RhdGUpOwotKwlpZiAoX19jb252ID09IHN0YXRpY19jYXN0PHNpemVfdD4oLTEpKQotKwkgIHsKLSsJICAgIC8vIEluIGNhc2Ugb2YgZXJyb3IsIGluIG9yZGVyIHRvIHN0b3AgYXQgdGhlIGV4YWN0IHBsYWNlIHdlCi0rCSAgICAvLyBoYXZlIHRvIHN0YXJ0IGFnYWluIGZyb20gdGhlIGJlZ2lubmluZyB3aXRoIGEgc2VyaWVzIG9mCi0rCSAgICAvLyBtYnJ0b3djLgotKwkgICAgZm9yIChfX2Zyb20gPSBfX3RtcF9mcm9tOzsgX19mcm9tICs9IF9fY29udikKLSsJICAgICAgewotKwkJX19jb252ID0gbWJydG93YyhOVUxMLCBfX2Zyb20sIF9fZW5kIC0gX19mcm9tLAotKwkJCQkgJl9fdG1wX3N0YXRlKTsKLSsJCWlmIChfX2NvbnYgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PigtMSkKLSsJCSAgICB8fCBfX2NvbnYgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PigtMikpCi0rCQkgIGJyZWFrOwotKwkgICAgICB9Ci0rCSAgICBfX3N0YXRlID0gX190bXBfc3RhdGU7Ci0rCSAgICBfX3JldCArPSBfX2Zyb20gLSBfX3RtcF9mcm9tOwotKwkgICAgYnJlYWs7Ci0rCSAgfQotKwlpZiAoIV9fZnJvbSkKLSsJICBfX2Zyb20gPSBfX2Zyb21fY2h1bmtfZW5kOwotKwotKwlfX3JldCArPSBfX2Zyb20gLSBfX3RtcF9mcm9tOwotKwlfX21heCAtPSBfX2NvbnY7Ci0rCi0rCWlmIChfX2Zyb20gPCBfX2VuZCAmJiBfX21heCkKLSsJICB7Ci0rCSAgICAvLyBYWFggUHJvYmFibHkgd3JvbmcgZm9yIHN0YXRlZnVsIGVuY29kaW5ncwotKwkgICAgX190bXBfc3RhdGUgPSBfX3N0YXRlOwotKwkgICAgKytfX2Zyb207Ci0rCSAgICArK19fcmV0OwotKwkgICAgLS1fX21heDsKLSsJICB9Ci0rICAgICAgfQotKwotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rICAgIF9fdXNlbG9jYWxlKF9fb2xkKTsKLSsjZW5kaWYKLSsKLSsgICAgcmV0dXJuIF9fcmV0OwotKyAgfQotKyNlbmRpZgotK30KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY29sbGF0ZV9tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NvbGxhdGVfbWVtYmVycy5jYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmMyNjY0YTcKLS0tLSAvZGV2L251bGwKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jb2xsYXRlX21lbWJlcnMuY2MKLUBAIC0wLDAgKzEsODAgQEAKLSsvLyBzdGQ6OmNvbGxhdGUgaW1wbGVtZW50YXRpb24gZGV0YWlscywgR05VIHZlcnNpb24gLSotIEMrKyAtKi0KLSsKLSsvLyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLy8KLSsvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlCi0rLy8gc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlCi0rLy8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLSsvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsvLyBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsvLyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKy8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi0rLy8gd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKy8vIFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKy8vIFVTQS4KLSsKLSsvLyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIGZyZWUgc29mdHdhcmUKLSsvLyBsaWJyYXJ5IHdpdGhvdXQgcmVzdHJpY3Rpb24uICBTcGVjaWZpY2FsbHksIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlCi0rLy8gdGVtcGxhdGVzIG9yIHVzZSBtYWNyb3Mgb3IgaW5saW5lIGZ1bmN0aW9ucyBmcm9tIHRoaXMgZmlsZSwgb3IgeW91IGNvbXBpbGUKLSsvLyB0aGlzIGZpbGUgYW5kIGxpbmsgaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuIGV4ZWN1dGFibGUsIHRoaXMKLSsvLyBmaWxlIGRvZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoaXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIKLSsvLyBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCi0rCi0rLy8KLSsvLyBJU08gQysrIDE0ODgyOiAyMi4yLjQuMS4yICBjb2xsYXRlIHZpcnR1YWwgZnVuY3Rpb25zCi0rLy8KLSsKLSsvLyBXcml0dGVuIGJ5IEJlbmphbWluIEtvc25payA8YmtvekByZWRoYXQuY29tPgotKwotKyNpbmNsdWRlIDxsb2NhbGU+Ci0rI2luY2x1ZGUgPGJpdHMvYysrbG9jYWxlX2ludGVybmFsLmg+Ci0rCi0rI2lmbmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rI2RlZmluZSBfX3N0cmNvbGxfbChTMSwgUzIsIEwpICAgICAgc3RyY29sbCgoUzEpLCAoUzIpKQotKyNkZWZpbmUgX19zdHJ4ZnJtX2woUzEsIFMyLCBOLCBMKSAgIHN0cnhmcm0oKFMxKSwgKFMyKSwgKE4pKQotKyNkZWZpbmUgX193Y3Njb2xsX2woUzEsIFMyLCBMKSAgICAgIHdjc2NvbGwoKFMxKSwgKFMyKSkKLSsjZGVmaW5lIF9fd2NzeGZybV9sKFMxLCBTMiwgTiwgTCkgICB3Y3N4ZnJtKChTMSksIChTMiksIChOKSkKLSsjZW5kaWYKLSsKLStuYW1lc3BhY2Ugc3RkCi0rewotKyAgLy8gVGhlc2UgYXJlIGJhc2ljYWxseSBleHRlbnNpb25zIHRvIGNoYXJfdHJhaXRzLCBhbmQgcGVyaGFwcyBzaG91bGQKLSsgIC8vIGJlIHB1dCB0aGVyZSBpbnN0ZWFkIG9mIGhlcmUuCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIGludAotKyAgICBjb2xsYXRlPGNoYXI+OjpfTV9jb21wYXJlKGNvbnN0IGNoYXIqIF9fb25lLCBjb25zdCBjaGFyKiBfX3R3bykgY29uc3QKLSsgICAgewotKyAgICAgIGludCBfX2NtcCA9IF9fc3RyY29sbF9sKF9fb25lLCBfX3R3bywgX01fY19sb2NhbGVfY29sbGF0ZSk7Ci0rICAgICAgcmV0dXJuIChfX2NtcCA+PiAoOCAqIHNpemVvZiAoaW50KSAtIDIpKSB8IChfX2NtcCAhPSAwKTsKLSsgICAgfQotKwotKyAgdGVtcGxhdGU8PgotKyAgICBzaXplX3QKLSsgICAgY29sbGF0ZTxjaGFyPjo6X01fdHJhbnNmb3JtKGNoYXIqIF9fdG8sIGNvbnN0IGNoYXIqIF9fZnJvbSwKLSsJCQkJc2l6ZV90IF9fbikgY29uc3QKLSsgICAgeyByZXR1cm4gX19zdHJ4ZnJtX2woX190bywgX19mcm9tLCBfX24sIF9NX2NfbG9jYWxlX2NvbGxhdGUpOyB9Ci0rCi0rI2lmZGVmIF9HTElCQ1hYX1VTRV9XQ0hBUl9UCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIGludAotKyAgICBjb2xsYXRlPHdjaGFyX3Q+OjpfTV9jb21wYXJlKGNvbnN0IHdjaGFyX3QqIF9fb25lLAotKwkJCQkgY29uc3Qgd2NoYXJfdCogX190d28pIGNvbnN0Ci0rICAgIHsKLSsgICAgICBpbnQgX19jbXAgPSBfX3djc2NvbGxfbChfX29uZSwgX190d28sIF9NX2NfbG9jYWxlX2NvbGxhdGUpOwotKyAgICAgIHJldHVybiAoX19jbXAgPj4gKDggKiBzaXplb2YgKGludCkgLSAyKSkgfCAoX19jbXAgIT0gMCk7Ci0rICAgIH0KLSsKLSsgIHRlbXBsYXRlPD4KLSsgICAgc2l6ZV90Ci0rICAgIGNvbGxhdGU8d2NoYXJfdD46Ol9NX3RyYW5zZm9ybSh3Y2hhcl90KiBfX3RvLCBjb25zdCB3Y2hhcl90KiBfX2Zyb20sCi0rCQkJCSAgIHNpemVfdCBfX24pIGNvbnN0Ci0rICAgIHsgcmV0dXJuIF9fd2NzeGZybV9sKF9fdG8sIF9fZnJvbSwgX19uLCBfTV9jX2xvY2FsZV9jb2xsYXRlKTsgfQotKyNlbmRpZgotK30KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY3R5cGVfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jdHlwZV9tZW1iZXJzLmNjCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNzI5NGUzYQotLS0tIC9kZXYvbnVsbAotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2N0eXBlX21lbWJlcnMuY2MKLUBAIC0wLDAgKzEsMzAwIEBACi0rLy8gc3RkOjpjdHlwZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLCBHTlUgdmVyc2lvbiAtKi0gQysrIC0qLQotKwotKy8vIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvLwotKy8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgSVNPIEMrKyBMaWJyYXJ5LiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUKLSsvLyBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUKLSsvLyB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotKy8vIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKy8vIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKy8vIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKy8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKy8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSsvLyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rLy8gU29mdHdhcmUgRm91bmRhdGlvbiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rLy8gVVNBLgotKwotKy8vIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHlvdSBtYXkgdXNlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgZnJlZSBzb2Z0d2FyZQotKy8vIGxpYnJhcnkgd2l0aG91dCByZXN0cmljdGlvbi4gIFNwZWNpZmljYWxseSwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUKLSsvLyB0ZW1wbGF0ZXMgb3IgdXNlIG1hY3JvcyBvciBpbmxpbmUgZnVuY3Rpb25zIGZyb20gdGhpcyBmaWxlLCBvciB5b3UgY29tcGlsZQotKy8vIHRoaXMgZmlsZSBhbmQgbGluayBpdCB3aXRoIG90aGVyIGZpbGVzIHRvIHByb2R1Y2UgYW4gZXhlY3V0YWJsZSwgdGhpcwotKy8vIGZpbGUgZG9lcyBub3QgYnkgaXRzZWxmIGNhdXNlIHRoZSByZXN1bHRpbmcgZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhpcyBleGNlcHRpb24gZG9lcyBub3QgaG93ZXZlcgotKy8vIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSBleGVjdXRhYmxlIGZpbGUgbWlnaHQgYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KLSsKLSsvLwotKy8vIElTTyBDKysgMTQ4ODI6IDIyLjIuMS4xLjIgIGN0eXBlIHZpcnR1YWwgZnVuY3Rpb25zLgotKy8vCi0rCi0rLy8gV3JpdHRlbiBieSBCZW5qYW1pbiBLb3NuaWsgPGJrb3pAcmVkaGF0LmNvbT4KLSsKLSsjZGVmaW5lIF9MSUJDCi0rI2luY2x1ZGUgPGxvY2FsZT4KLSsjdW5kZWYgX0xJQkMKLSsjaW5jbHVkZSA8Yml0cy9jKytsb2NhbGVfaW50ZXJuYWwuaD4KLSsKLSsjaWZuZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsjZGVmaW5lIF9fd2N0eXBlX2woUywgTCkgICAgICAgICAgIHdjdHlwZSgoUykpCi0rI2RlZmluZSBfX3Rvd3VwcGVyX2woQywgTCkgICAgICAgICB0b3d1cHBlcigoQykpCi0rI2RlZmluZSBfX3Rvd2xvd2VyX2woQywgTCkgICAgICAgICB0b3dsb3dlcigoQykpCi0rI2RlZmluZSBfX2lzd2N0eXBlX2woQywgTSwgTCkgICAgICBpc3djdHlwZSgoQyksIChNKSkKLSsjZW5kaWYKLSsKLStuYW1lc3BhY2Ugc3RkCi0rewotKyAgLy8gTkI6IFRoZSBvdGhlciBjdHlwZTxjaGFyPiBzcGVjaWFsaXphdGlvbnMgYXJlIGluIHNyYy9sb2NhbGUuY2MgYW5kCi0rICAvLyB2YXJpb3VzIC9jb25maWcvb3MvKiBmaWxlcy4KLSsgIHRlbXBsYXRlPD4KLSsgICAgY3R5cGVfYnluYW1lPGNoYXI+OjpjdHlwZV9ieW5hbWUoY29uc3QgY2hhciogX19zLCBzaXplX3QgX19yZWZzKQotKyAgICA6IGN0eXBlPGNoYXI+KDAsIGZhbHNlLCBfX3JlZnMpCi0rICAgIHsKLSsgICAgICBpZiAoc3RkOjpzdHJjbXAoX19zLCAiQyIpICE9IDAgJiYgc3RkOjpzdHJjbXAoX19zLCAiUE9TSVgiKSAhPSAwKQotKwl7Ci0rCSAgdGhpcy0+X1NfZGVzdHJveV9jX2xvY2FsZSh0aGlzLT5fTV9jX2xvY2FsZV9jdHlwZSk7Ci0rCSAgdGhpcy0+X1NfY3JlYXRlX2NfbG9jYWxlKHRoaXMtPl9NX2NfbG9jYWxlX2N0eXBlLCBfX3MpOwotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rCSAgdGhpcy0+X01fdG91cHBlciA9IHRoaXMtPl9NX2NfbG9jYWxlX2N0eXBlLT5fX2N0eXBlX3RvdXBwZXI7Ci0rCSAgdGhpcy0+X01fdG9sb3dlciA9IHRoaXMtPl9NX2NfbG9jYWxlX2N0eXBlLT5fX2N0eXBlX3RvbG93ZXI7Ci0rCSAgdGhpcy0+X01fdGFibGUgPSB0aGlzLT5fTV9jX2xvY2FsZV9jdHlwZS0+X19jdHlwZV9iOwotKyNlbmRpZgotKwl9Ci0rICAgIH0KLSsKLSsjaWZkZWYgX0dMSUJDWFhfVVNFX1dDSEFSX1QKLSsgIGN0eXBlPHdjaGFyX3Q+OjpfX3dtYXNrX3R5cGUKLSsgIGN0eXBlPHdjaGFyX3Q+OjpfTV9jb252ZXJ0X3RvX3dtYXNrKGNvbnN0IG1hc2sgX19tKSBjb25zdAotKyAgewotKyAgICBfX3dtYXNrX3R5cGUgX19yZXQ7Ci0rICAgIHN3aXRjaCAoX19tKQotKyAgICAgIHsKLSsgICAgICBjYXNlIHNwYWNlOgotKwlfX3JldCA9IF9fd2N0eXBlX2woInNwYWNlIiwgX01fY19sb2NhbGVfY3R5cGUpOwotKwlicmVhazsKLSsgICAgICBjYXNlIHByaW50OgotKwlfX3JldCA9IF9fd2N0eXBlX2woInByaW50IiwgX01fY19sb2NhbGVfY3R5cGUpOwotKwlicmVhazsKLSsgICAgICBjYXNlIGNudHJsOgotKwlfX3JldCA9IF9fd2N0eXBlX2woImNudHJsIiwgX01fY19sb2NhbGVfY3R5cGUpOwotKwlicmVhazsKLSsgICAgICBjYXNlIHVwcGVyOgotKwlfX3JldCA9IF9fd2N0eXBlX2woInVwcGVyIiwgX01fY19sb2NhbGVfY3R5cGUpOwotKwlicmVhazsKLSsgICAgICBjYXNlIGxvd2VyOgotKwlfX3JldCA9IF9fd2N0eXBlX2woImxvd2VyIiwgX01fY19sb2NhbGVfY3R5cGUpOwotKwlicmVhazsKLSsgICAgICBjYXNlIGFscGhhOgotKwlfX3JldCA9IF9fd2N0eXBlX2woImFscGhhIiwgX01fY19sb2NhbGVfY3R5cGUpOwotKwlicmVhazsKLSsgICAgICBjYXNlIGRpZ2l0OgotKwlfX3JldCA9IF9fd2N0eXBlX2woImRpZ2l0IiwgX01fY19sb2NhbGVfY3R5cGUpOwotKwlicmVhazsKLSsgICAgICBjYXNlIHB1bmN0OgotKwlfX3JldCA9IF9fd2N0eXBlX2woInB1bmN0IiwgX01fY19sb2NhbGVfY3R5cGUpOwotKwlicmVhazsKLSsgICAgICBjYXNlIHhkaWdpdDoKLSsJX19yZXQgPSBfX3djdHlwZV9sKCJ4ZGlnaXQiLCBfTV9jX2xvY2FsZV9jdHlwZSk7Ci0rCWJyZWFrOwotKyAgICAgIGNhc2UgYWxudW06Ci0rCV9fcmV0ID0gX193Y3R5cGVfbCgiYWxudW0iLCBfTV9jX2xvY2FsZV9jdHlwZSk7Ci0rCWJyZWFrOwotKyAgICAgIGNhc2UgZ3JhcGg6Ci0rCV9fcmV0ID0gX193Y3R5cGVfbCgiZ3JhcGgiLCBfTV9jX2xvY2FsZV9jdHlwZSk7Ci0rCWJyZWFrOwotKyAgICAgIGRlZmF1bHQ6Ci0rCV9fcmV0ID0gX193bWFza190eXBlKCk7Ci0rICAgICAgfQotKyAgICByZXR1cm4gX19yZXQ7Ci0rICB9Ci0rCi0rICB3Y2hhcl90Ci0rICBjdHlwZTx3Y2hhcl90Pjo6ZG9fdG91cHBlcih3Y2hhcl90IF9fYykgY29uc3QKLSsgIHsgcmV0dXJuIF9fdG93dXBwZXJfbChfX2MsIF9NX2NfbG9jYWxlX2N0eXBlKTsgfQotKwotKyAgY29uc3Qgd2NoYXJfdCoKLSsgIGN0eXBlPHdjaGFyX3Q+Ojpkb190b3VwcGVyKHdjaGFyX3QqIF9fbG8sIGNvbnN0IHdjaGFyX3QqIF9faGkpIGNvbnN0Ci0rICB7Ci0rICAgIHdoaWxlIChfX2xvIDwgX19oaSkKLSsgICAgICB7Ci0rICAgICAgICAqX19sbyA9IF9fdG93dXBwZXJfbCgqX19sbywgX01fY19sb2NhbGVfY3R5cGUpOwotKyAgICAgICAgKytfX2xvOwotKyAgICAgIH0KLSsgICAgcmV0dXJuIF9faGk7Ci0rICB9Ci0rCi0rICB3Y2hhcl90Ci0rICBjdHlwZTx3Y2hhcl90Pjo6ZG9fdG9sb3dlcih3Y2hhcl90IF9fYykgY29uc3QKLSsgIHsgcmV0dXJuIF9fdG93bG93ZXJfbChfX2MsIF9NX2NfbG9jYWxlX2N0eXBlKTsgfQotKwotKyAgY29uc3Qgd2NoYXJfdCoKLSsgIGN0eXBlPHdjaGFyX3Q+Ojpkb190b2xvd2VyKHdjaGFyX3QqIF9fbG8sIGNvbnN0IHdjaGFyX3QqIF9faGkpIGNvbnN0Ci0rICB7Ci0rICAgIHdoaWxlIChfX2xvIDwgX19oaSkKLSsgICAgICB7Ci0rICAgICAgICAqX19sbyA9IF9fdG93bG93ZXJfbCgqX19sbywgX01fY19sb2NhbGVfY3R5cGUpOwotKyAgICAgICAgKytfX2xvOwotKyAgICAgIH0KLSsgICAgcmV0dXJuIF9faGk7Ci0rICB9Ci0rCi0rICBib29sCi0rICBjdHlwZTx3Y2hhcl90Pjo6Ci0rICBkb19pcyhtYXNrIF9fbSwgd2NoYXJfdCBfX2MpIGNvbnN0Ci0rICB7Ci0rICAgIC8vIEhpZ2hlc3QgYml0bWFzayBpbiBjdHlwZV9iYXNlID09IDEwLCBidXQgZXh0cmEgaW4gIkMiCi0rICAgIC8vIGxpYnJhcnkgZm9yIGJsYW5rLgotKyAgICBib29sIF9fcmV0ID0gZmFsc2U7Ci0rICAgIGNvbnN0IHNpemVfdCBfX2JpdG1hc2tzaXplID0gMTE7Ci0rICAgIGZvciAoc2l6ZV90IF9fYml0Y3VyID0gMDsgX19iaXRjdXIgPD0gX19iaXRtYXNrc2l6ZTsgKytfX2JpdGN1cikKLSsgICAgICBpZiAoX19tICYgX01fYml0W19fYml0Y3VyXQotKwkgICYmIF9faXN3Y3R5cGVfbChfX2MsIF9NX3dtYXNrW19fYml0Y3VyXSwgX01fY19sb2NhbGVfY3R5cGUpKQotKwl7Ci0rCSAgX19yZXQgPSB0cnVlOwotKwkgIGJyZWFrOwotKwl9Ci0rICAgIHJldHVybiBfX3JldDsKLSsgIH0KLSsKLSsgIGNvbnN0IHdjaGFyX3QqCi0rICBjdHlwZTx3Y2hhcl90Pjo6Ci0rICBkb19pcyhjb25zdCB3Y2hhcl90KiBfX2xvLCBjb25zdCB3Y2hhcl90KiBfX2hpLCBtYXNrKiBfX3ZlYykgY29uc3QKLSsgIHsKLSsgICAgZm9yICg7IF9fbG8gPCBfX2hpOyArK19fdmVjLCArK19fbG8pCi0rICAgICAgewotKwkvLyBIaWdoZXN0IGJpdG1hc2sgaW4gY3R5cGVfYmFzZSA9PSAxMCwgYnV0IGV4dHJhIGluICJDIgotKwkvLyBsaWJyYXJ5IGZvciBibGFuay4KLSsJY29uc3Qgc2l6ZV90IF9fYml0bWFza3NpemUgPSAxMTsKLSsJbWFzayBfX20gPSAwOwotKwlmb3IgKHNpemVfdCBfX2JpdGN1ciA9IDA7IF9fYml0Y3VyIDw9IF9fYml0bWFza3NpemU7ICsrX19iaXRjdXIpCi0rCSAgaWYgKF9faXN3Y3R5cGVfbCgqX19sbywgX01fd21hc2tbX19iaXRjdXJdLCBfTV9jX2xvY2FsZV9jdHlwZSkpCi0rCSAgICBfX20gfD0gX01fYml0W19fYml0Y3VyXTsKLSsJKl9fdmVjID0gX19tOwotKyAgICAgIH0KLSsgICAgcmV0dXJuIF9faGk7Ci0rICB9Ci0rCi0rICBjb25zdCB3Y2hhcl90KgotKyAgY3R5cGU8d2NoYXJfdD46OgotKyAgZG9fc2Nhbl9pcyhtYXNrIF9fbSwgY29uc3Qgd2NoYXJfdCogX19sbywgY29uc3Qgd2NoYXJfdCogX19oaSkgY29uc3QKLSsgIHsKLSsgICAgd2hpbGUgKF9fbG8gPCBfX2hpICYmICF0aGlzLT5kb19pcyhfX20sICpfX2xvKSkKLSsgICAgICArK19fbG87Ci0rICAgIHJldHVybiBfX2xvOwotKyAgfQotKwotKyAgY29uc3Qgd2NoYXJfdCoKLSsgIGN0eXBlPHdjaGFyX3Q+OjoKLSsgIGRvX3NjYW5fbm90KG1hc2sgX19tLCBjb25zdCBjaGFyX3R5cGUqIF9fbG8sIGNvbnN0IGNoYXJfdHlwZSogX19oaSkgY29uc3QKLSsgIHsKLSsgICAgd2hpbGUgKF9fbG8gPCBfX2hpICYmIHRoaXMtPmRvX2lzKF9fbSwgKl9fbG8pICE9IDApCi0rICAgICAgKytfX2xvOwotKyAgICByZXR1cm4gX19sbzsKLSsgIH0KLSsKLSsgIHdjaGFyX3QKLSsgIGN0eXBlPHdjaGFyX3Q+OjoKLSsgIGRvX3dpZGVuKGNoYXIgX19jKSBjb25zdAotKyAgeyByZXR1cm4gX01fd2lkZW5bc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oX19jKV07IH0KLSsKLSsgIGNvbnN0IGNoYXIqCi0rICBjdHlwZTx3Y2hhcl90Pjo6Ci0rICBkb193aWRlbihjb25zdCBjaGFyKiBfX2xvLCBjb25zdCBjaGFyKiBfX2hpLCB3Y2hhcl90KiBfX2Rlc3QpIGNvbnN0Ci0rICB7Ci0rICAgIHdoaWxlIChfX2xvIDwgX19oaSkKLSsgICAgICB7Ci0rCSpfX2Rlc3QgPSBfTV93aWRlbltzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigqX19sbyldOwotKwkrK19fbG87Ci0rCSsrX19kZXN0OwotKyAgICAgIH0KLSsgICAgcmV0dXJuIF9faGk7Ci0rICB9Ci0rCi0rICBjaGFyCi0rICBjdHlwZTx3Y2hhcl90Pjo6Ci0rICBkb19uYXJyb3cod2NoYXJfdCBfX3djLCBjaGFyIF9fZGZhdWx0KSBjb25zdAotKyAgewotKyAgICBpZiAoX193YyA+PSAwICYmIF9fd2MgPCAxMjggJiYgX01fbmFycm93X29rKQotKyAgICAgIHJldHVybiBfTV9uYXJyb3dbX193Y107Ci0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgX19jX2xvY2FsZSBfX29sZCA9IF9fdXNlbG9jYWxlKF9NX2NfbG9jYWxlX2N0eXBlKTsKLSsjZW5kaWYKLSsgICAgY29uc3QgaW50IF9fYyA9IHdjdG9iKF9fd2MpOwotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rICAgIF9fdXNlbG9jYWxlKF9fb2xkKTsKLSsjZW5kaWYKLSsgICAgcmV0dXJuIChfX2MgPT0gRU9GID8gX19kZmF1bHQgOiBzdGF0aWNfY2FzdDxjaGFyPihfX2MpKTsKLSsgIH0KLSsKLSsgIGNvbnN0IHdjaGFyX3QqCi0rICBjdHlwZTx3Y2hhcl90Pjo6Ci0rICBkb19uYXJyb3coY29uc3Qgd2NoYXJfdCogX19sbywgY29uc3Qgd2NoYXJfdCogX19oaSwgY2hhciBfX2RmYXVsdCwKLSsJICAgIGNoYXIqIF9fZGVzdCkgY29uc3QKLSsgIHsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICBfX2NfbG9jYWxlIF9fb2xkID0gX191c2Vsb2NhbGUoX01fY19sb2NhbGVfY3R5cGUpOwotKyNlbmRpZgotKyAgICBpZiAoX01fbmFycm93X29rKQotKyAgICAgIHdoaWxlIChfX2xvIDwgX19oaSkKLSsJewotKwkgIGlmICgqX19sbyA+PSAwICYmICpfX2xvIDwgMTI4KQotKwkgICAgKl9fZGVzdCA9IF9NX25hcnJvd1sqX19sb107Ci0rCSAgZWxzZQotKwkgICAgewotKwkgICAgICBjb25zdCBpbnQgX19jID0gd2N0b2IoKl9fbG8pOwotKwkgICAgICAqX19kZXN0ID0gKF9fYyA9PSBFT0YgPyBfX2RmYXVsdCA6IHN0YXRpY19jYXN0PGNoYXI+KF9fYykpOwotKwkgICAgfQotKwkgICsrX19sbzsKLSsJICArK19fZGVzdDsKLSsJfQotKyAgICBlbHNlCi0rICAgICAgd2hpbGUgKF9fbG8gPCBfX2hpKQotKwl7Ci0rCSAgY29uc3QgaW50IF9fYyA9IHdjdG9iKCpfX2xvKTsKLSsJICAqX19kZXN0ID0gKF9fYyA9PSBFT0YgPyBfX2RmYXVsdCA6IHN0YXRpY19jYXN0PGNoYXI+KF9fYykpOwotKwkgICsrX19sbzsKLSsJICArK19fZGVzdDsKLSsJfQotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rICAgIF9fdXNlbG9jYWxlKF9fb2xkKTsKLSsjZW5kaWYKLSsgICAgcmV0dXJuIF9faGk7Ci0rICB9Ci0rCi0rICB2b2lkCi0rICBjdHlwZTx3Y2hhcl90Pjo6X01faW5pdGlhbGl6ZV9jdHlwZSgpCi0rICB7Ci0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgX19jX2xvY2FsZSBfX29sZCA9IF9fdXNlbG9jYWxlKF9NX2NfbG9jYWxlX2N0eXBlKTsKLSsjZW5kaWYKLSsgICAgd2ludF90IF9faTsKLSsgICAgZm9yIChfX2kgPSAwOyBfX2kgPCAxMjg7ICsrX19pKQotKyAgICAgIHsKLSsJY29uc3QgaW50IF9fYyA9IHdjdG9iKF9faSk7Ci0rCWlmIChfX2MgPT0gRU9GKQotKwkgIGJyZWFrOwotKwllbHNlCi0rCSAgX01fbmFycm93W19faV0gPSBzdGF0aWNfY2FzdDxjaGFyPihfX2MpOwotKyAgICAgIH0KLSsgICAgaWYgKF9faSA9PSAxMjgpCi0rICAgICAgX01fbmFycm93X29rID0gdHJ1ZTsKLSsgICAgZWxzZQotKyAgICAgIF9NX25hcnJvd19vayA9IGZhbHNlOwotKyAgICBmb3IgKHNpemVfdCBfX2ogPSAwOwotKwkgX19qIDwgc2l6ZW9mKF9NX3dpZGVuKSAvIHNpemVvZih3aW50X3QpOyArK19faikKLSsgICAgICBfTV93aWRlbltfX2pdID0gYnRvd2MoX19qKTsKLSsKLSsgICAgZm9yIChzaXplX3QgX19rID0gMDsgX19rIDw9IDExOyArK19faykKLSsgICAgICB7Ci0rCV9NX2JpdFtfX2tdID0gc3RhdGljX2Nhc3Q8bWFzaz4oX0lTYml0KF9faykpOwotKwlfTV93bWFza1tfX2tdID0gX01fY29udmVydF90b193bWFzayhfTV9iaXRbX19rXSk7Ci0rICAgICAgfQotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rICAgIF9fdXNlbG9jYWxlKF9fb2xkKTsKLSsjZW5kaWYKLSsgIH0KLSsjZW5kaWYgLy8gIF9HTElCQ1hYX1VTRV9XQ0hBUl9UCi0rfQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuY2MKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4xMzU5NGQ5Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5jYwotQEAgLTAsMCArMSwxMDAgQEAKLSsvLyBzdGQ6Om1lc3NhZ2VzIGltcGxlbWVudGF0aW9uIGRldGFpbHMsIEdOVSB2ZXJzaW9uIC0qLSBDKysgLSotCi0rCi0rLy8gQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8vCi0rLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBJU08gQysrIExpYnJhcnkuICBUaGlzIGxpYnJhcnkgaXMgZnJlZQotKy8vIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZQotKy8vIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCi0rLy8gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rLy8gYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rLy8gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsvLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsvLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotKy8vIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSsvLyBTb2Z0d2FyZSBGb3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsvLyBVU0EuCi0rCi0rLy8gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgeW91IG1heSB1c2UgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBmcmVlIHNvZnR3YXJlCi0rLy8gbGlicmFyeSB3aXRob3V0IHJlc3RyaWN0aW9uLiAgU3BlY2lmaWNhbGx5LCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZQotKy8vIHRlbXBsYXRlcyBvciB1c2UgbWFjcm9zIG9yIGlubGluZSBmdW5jdGlvbnMgZnJvbSB0aGlzIGZpbGUsIG9yIHlvdSBjb21waWxlCi0rLy8gdGhpcyBmaWxlIGFuZCBsaW5rIGl0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiBleGVjdXRhYmxlLCB0aGlzCi0rLy8gZmlsZSBkb2VzIG5vdCBieSBpdHNlbGYgY2F1c2UgdGhlIHJlc3VsdGluZyBleGVjdXRhYmxlIHRvIGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBUaGlzIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyCi0rLy8gaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlIGV4ZWN1dGFibGUgZmlsZSBtaWdodCBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgotKwotKy8vCi0rLy8gSVNPIEMrKyAxNDg4MjogMjIuMi43LjEuMiAgbWVzc2FnZXMgdmlydHVhbCBmdW5jdGlvbnMKLSsvLwotKwotKy8vIFdyaXR0ZW4gYnkgQmVuamFtaW4gS29zbmlrIDxia296QHJlZGhhdC5jb20+Ci0rCi0rI2luY2x1ZGUgPGxvY2FsZT4KLSsjaW5jbHVkZSA8Yml0cy9jKytsb2NhbGVfaW50ZXJuYWwuaD4KLSsKLSsjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KLSsjd2FybmluZyBmaXggZ2V0dGV4dCBzdHVmZgotKyNlbmRpZgotKyNpZmRlZiBfX1VDTElCQ19IQVNfR0VUVEVYVF9BV0FSRU5FU1NfXwotK2V4dGVybiAiQyIgY2hhciAqX19kY2dldHRleHQoY29uc3QgY2hhciAqZG9tYWlubmFtZSwKLSsJCQkgICAgIGNvbnN0IGNoYXIgKm1zZ2lkLCBpbnQgY2F0ZWdvcnkpOwotKyN1bmRlZiBnZXR0ZXh0Ci0rI2RlZmluZSBnZXR0ZXh0KG1zZ2lkKSBfX2RjZ2V0dGV4dChOVUxMLCBtc2dpZCwgTENfTUVTU0FHRVMpCi0rI2Vsc2UKLSsjdW5kZWYgZ2V0dGV4dAotKyNkZWZpbmUgZ2V0dGV4dChtc2dpZCkgKG1zZ2lkKQotKyNlbmRpZgotKwotK25hbWVzcGFjZSBzdGQKLSt7Ci0rICAvLyBTcGVjaWFsaXphdGlvbnMuCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIHN0cmluZwotKyAgICBtZXNzYWdlczxjaGFyPjo6ZG9fZ2V0KGNhdGFsb2csIGludCwgaW50LCBjb25zdCBzdHJpbmcmIF9fZGZhdWx0KSBjb25zdAotKyAgICB7Ci0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgICBfX2NfbG9jYWxlIF9fb2xkID0gX191c2Vsb2NhbGUoX01fY19sb2NhbGVfbWVzc2FnZXMpOwotKyAgICAgIGNvbnN0IGNoYXIqIF9fbXNnID0gY29uc3RfY2FzdDxjb25zdCBjaGFyKj4oZ2V0dGV4dChfX2RmYXVsdC5jX3N0cigpKSk7Ci0rICAgICAgX191c2Vsb2NhbGUoX19vbGQpOwotKyAgICAgIHJldHVybiBzdHJpbmcoX19tc2cpOwotKyNlbGlmIGRlZmluZWQgX19VQ0xJQkNfSEFTX0xPQ0FMRV9fCi0rICAgICAgY2hhciogX19vbGQgPSBzdHJkdXAoc2V0bG9jYWxlKExDX0FMTCwgTlVMTCkpOwotKyAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9NX25hbWVfbWVzc2FnZXMpOwotKyAgICAgIGNvbnN0IGNoYXIqIF9fbXNnID0gZ2V0dGV4dChfX2RmYXVsdC5jX3N0cigpKTsKLSsgICAgICBzZXRsb2NhbGUoTENfQUxMLCBfX29sZCk7Ci0rICAgICAgZnJlZShfX29sZCk7Ci0rICAgICAgcmV0dXJuIHN0cmluZyhfX21zZyk7Ci0rI2Vsc2UKLSsgICAgICBjb25zdCBjaGFyKiBfX21zZyA9IGdldHRleHQoX19kZmF1bHQuY19zdHIoKSk7Ci0rICAgICAgcmV0dXJuIHN0cmluZyhfX21zZyk7Ci0rI2VuZGlmCi0rICAgIH0KLSsKLSsjaWZkZWYgX0dMSUJDWFhfVVNFX1dDSEFSX1QKLSsgIHRlbXBsYXRlPD4KLSsgICAgd3N0cmluZwotKyAgICBtZXNzYWdlczx3Y2hhcl90Pjo6ZG9fZ2V0KGNhdGFsb2csIGludCwgaW50LCBjb25zdCB3c3RyaW5nJiBfX2RmYXVsdCkgY29uc3QKLSsgICAgewotKyMgaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICAgIF9fY19sb2NhbGUgX19vbGQgPSBfX3VzZWxvY2FsZShfTV9jX2xvY2FsZV9tZXNzYWdlcyk7Ci0rICAgICAgY2hhciogX19tc2cgPSBnZXR0ZXh0KF9NX2NvbnZlcnRfdG9fY2hhcihfX2RmYXVsdCkpOwotKyAgICAgIF9fdXNlbG9jYWxlKF9fb2xkKTsKLSsgICAgICByZXR1cm4gX01fY29udmVydF9mcm9tX2NoYXIoX19tc2cpOwotKyMgZWxpZiBkZWZpbmVkIF9fVUNMSUJDX0hBU19MT0NBTEVfXwotKyAgICAgIGNoYXIqIF9fb2xkID0gc3RyZHVwKHNldGxvY2FsZShMQ19BTEwsIE5VTEwpKTsKLSsgICAgICBzZXRsb2NhbGUoTENfQUxMLCBfTV9uYW1lX21lc3NhZ2VzKTsKLSsgICAgICBjaGFyKiBfX21zZyA9IGdldHRleHQoX01fY29udmVydF90b19jaGFyKF9fZGZhdWx0KSk7Ci0rICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX19vbGQpOwotKyAgICAgIGZyZWUoX19vbGQpOwotKyAgICAgIHJldHVybiBfTV9jb252ZXJ0X2Zyb21fY2hhcihfX21zZyk7Ci0rIyBlbHNlCi0rICAgICAgY2hhciogX19tc2cgPSBnZXR0ZXh0KF9NX2NvbnZlcnRfdG9fY2hhcihfX2RmYXVsdCkpOwotKyAgICAgIHJldHVybiBfTV9jb252ZXJ0X2Zyb21fY2hhcihfX21zZyk7Ci0rIyBlbmRpZgotKyAgICB9Ci0rI2VuZGlmCi0rfQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmggYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMTQyNDA3OAotLS0tIC9kZXYvbnVsbAotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaAotQEAgLTAsMCArMSwxMTggQEAKLSsvLyBzdGQ6Om1lc3NhZ2VzIGltcGxlbWVudGF0aW9uIGRldGFpbHMsIEdOVSB2ZXJzaW9uIC0qLSBDKysgLSotCi0rCi0rLy8gQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8vCi0rLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBJU08gQysrIExpYnJhcnkuICBUaGlzIGxpYnJhcnkgaXMgZnJlZQotKy8vIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZQotKy8vIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCi0rLy8gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rLy8gYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rLy8gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsvLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsvLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotKy8vIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSsvLyBTb2Z0d2FyZSBGb3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsvLyBVU0EuCi0rCi0rLy8gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgeW91IG1heSB1c2UgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBmcmVlIHNvZnR3YXJlCi0rLy8gbGlicmFyeSB3aXRob3V0IHJlc3RyaWN0aW9uLiAgU3BlY2lmaWNhbGx5LCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZQotKy8vIHRlbXBsYXRlcyBvciB1c2UgbWFjcm9zIG9yIGlubGluZSBmdW5jdGlvbnMgZnJvbSB0aGlzIGZpbGUsIG9yIHlvdSBjb21waWxlCi0rLy8gdGhpcyBmaWxlIGFuZCBsaW5rIGl0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiBleGVjdXRhYmxlLCB0aGlzCi0rLy8gZmlsZSBkb2VzIG5vdCBieSBpdHNlbGYgY2F1c2UgdGhlIHJlc3VsdGluZyBleGVjdXRhYmxlIHRvIGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBUaGlzIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyCi0rLy8gaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlIGV4ZWN1dGFibGUgZmlsZSBtaWdodCBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgotKwotKy8vCi0rLy8gSVNPIEMrKyAxNDg4MjogMjIuMi43LjEuMiAgbWVzc2FnZXMgZnVuY3Rpb25zCi0rLy8KLSsKLSsvLyBXcml0dGVuIGJ5IEJlbmphbWluIEtvc25payA8YmtvekByZWRoYXQuY29tPgotKwotKyNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotKyN3YXJuaW5nIGZpeCBwcm90b3R5cGVzIGZvciAqdGV4dGRvbWFpbiBmdW5jcwotKyNlbmRpZgotKyNpZmRlZiBfX1VDTElCQ19IQVNfR0VUVEVYVF9BV0FSRU5FU1NfXwotK2V4dGVybiAiQyIgY2hhciAqX190ZXh0ZG9tYWluKGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUpOwotK2V4dGVybiAiQyIgY2hhciAqX19iaW5kdGV4dGRvbWFpbihjb25zdCBjaGFyICpkb21haW5uYW1lLAotKwkJCQkgIGNvbnN0IGNoYXIgKmRpcm5hbWUpOwotKyNlbHNlCi0rI3VuZGVmIF9fdGV4dGRvbWFpbgotKyN1bmRlZiBfX2JpbmR0ZXh0ZG9tYWluCi0rI2RlZmluZSBfX3RleHRkb21haW4oRCkgICAgICAgICAgICgodm9pZCkwKQotKyNkZWZpbmUgX19iaW5kdGV4dGRvbWFpbihELFApICAgICAoKHZvaWQpMCkKLSsjZW5kaWYKLSsKLSsgIC8vIE5vbi12aXJ0dWFsIG1lbWJlciBmdW5jdGlvbnMuCi0rICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+Ci0rICAgICBtZXNzYWdlczxfQ2hhclQ+OjptZXNzYWdlcyhzaXplX3QgX19yZWZzKQotKyAgICAgOiBmYWNldChfX3JlZnMpLCBfTV9jX2xvY2FsZV9tZXNzYWdlcyhfU19nZXRfY19sb2NhbGUoKSksCi0rICAgICBfTV9uYW1lX21lc3NhZ2VzKF9TX2dldF9jX25hbWUoKSkKLSsgICAgIHsgfQotKwotKyAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgotKyAgICAgbWVzc2FnZXM8X0NoYXJUPjo6bWVzc2FnZXMoX19jX2xvY2FsZSBfX2Nsb2MsIGNvbnN0IGNoYXIqIF9fcywKLSsJCQkJc2l6ZV90IF9fcmVmcykKLSsgICAgIDogZmFjZXQoX19yZWZzKSwgX01fY19sb2NhbGVfbWVzc2FnZXMoX1NfY2xvbmVfY19sb2NhbGUoX19jbG9jKSksCi0rICAgICBfTV9uYW1lX21lc3NhZ2VzKF9fcykKLSsgICAgIHsKLSsgICAgICAgY2hhciogX190bXAgPSBuZXcgY2hhcltzdGQ6OnN0cmxlbihfX3MpICsgMV07Ci0rICAgICAgIHN0ZDo6c3RyY3B5KF9fdG1wLCBfX3MpOwotKyAgICAgICBfTV9uYW1lX21lc3NhZ2VzID0gX190bXA7Ci0rICAgICB9Ci0rCi0rICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+Ci0rICAgIHR5cGVuYW1lIG1lc3NhZ2VzPF9DaGFyVD46OmNhdGFsb2cKLSsgICAgbWVzc2FnZXM8X0NoYXJUPjo6b3Blbihjb25zdCBiYXNpY19zdHJpbmc8Y2hhcj4mIF9fcywgY29uc3QgbG9jYWxlJiBfX2xvYywKLSsJCQkgICBjb25zdCBjaGFyKiBfX2RpcikgY29uc3QKLSsgICAgewotKyAgICAgIF9fYmluZHRleHRkb21haW4oX19zLmNfc3RyKCksIF9fZGlyKTsKLSsgICAgICByZXR1cm4gdGhpcy0+ZG9fb3BlbihfX3MsIF9fbG9jKTsKLSsgICAgfQotKwotKyAgLy8gVmlydHVhbCBtZW1iZXIgZnVuY3Rpb25zLgotKyAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgotKyAgICBtZXNzYWdlczxfQ2hhclQ+Ojp+bWVzc2FnZXMoKQotKyAgICB7Ci0rICAgICAgaWYgKF9NX25hbWVfbWVzc2FnZXMgIT0gX1NfZ2V0X2NfbmFtZSgpKQotKwlkZWxldGUgW10gX01fbmFtZV9tZXNzYWdlczsKLSsgICAgICBfU19kZXN0cm95X2NfbG9jYWxlKF9NX2NfbG9jYWxlX21lc3NhZ2VzKTsKLSsgICAgfQotKwotKyAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgotKyAgICB0eXBlbmFtZSBtZXNzYWdlczxfQ2hhclQ+OjpjYXRhbG9nCi0rICAgIG1lc3NhZ2VzPF9DaGFyVD46OmRvX29wZW4oY29uc3QgYmFzaWNfc3RyaW5nPGNoYXI+JiBfX3MsCi0rCQkJICAgICAgY29uc3QgbG9jYWxlJikgY29uc3QKLSsgICAgewotKyAgICAgIC8vIE5vIGVycm9yIGNoZWNraW5nIGlzIGRvbmUsIGFzc3VtZSB0aGUgY2F0YWxvZyBleGlzdHMgYW5kIGNhbgotKyAgICAgIC8vIGJlIHVzZWQuCi0rICAgICAgX190ZXh0ZG9tYWluKF9fcy5jX3N0cigpKTsKLSsgICAgICByZXR1cm4gMDsKLSsgICAgfQotKwotKyAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgotKyAgICB2b2lkCi0rICAgIG1lc3NhZ2VzPF9DaGFyVD46OmRvX2Nsb3NlKGNhdGFsb2cpIGNvbnN0Ci0rICAgIHsgfQotKwotKyAgIC8vIG1lc3NhZ2VzX2J5bmFtZQotKyAgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KLSsgICAgIG1lc3NhZ2VzX2J5bmFtZTxfQ2hhclQ+OjptZXNzYWdlc19ieW5hbWUoY29uc3QgY2hhciogX19zLCBzaXplX3QgX19yZWZzKQotKyAgICAgOiBtZXNzYWdlczxfQ2hhclQ+KF9fcmVmcykKLSsgICAgIHsKLSsgICAgICAgaWYgKHRoaXMtPl9NX25hbWVfbWVzc2FnZXMgIT0gbG9jYWxlOjpmYWNldDo6X1NfZ2V0X2NfbmFtZSgpKQotKwkgZGVsZXRlIFtdIHRoaXMtPl9NX25hbWVfbWVzc2FnZXM7Ci0rICAgICAgIGNoYXIqIF9fdG1wID0gbmV3IGNoYXJbc3RkOjpzdHJsZW4oX19zKSArIDFdOwotKyAgICAgICBzdGQ6OnN0cmNweShfX3RtcCwgX19zKTsKLSsgICAgICAgdGhpcy0+X01fbmFtZV9tZXNzYWdlcyA9IF9fdG1wOwotKwotKyAgICAgICBpZiAoc3RkOjpzdHJjbXAoX19zLCAiQyIpICE9IDAgJiYgc3RkOjpzdHJjbXAoX19zLCAiUE9TSVgiKSAhPSAwKQotKwkgewotKwkgICB0aGlzLT5fU19kZXN0cm95X2NfbG9jYWxlKHRoaXMtPl9NX2NfbG9jYWxlX21lc3NhZ2VzKTsKLSsJICAgdGhpcy0+X1NfY3JlYXRlX2NfbG9jYWxlKHRoaXMtPl9NX2NfbG9jYWxlX21lc3NhZ2VzLCBfX3MpOwotKwkgfQotKyAgICAgfQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5hYTUyNzMxCi0tLS0gL2Rldi9udWxsCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYwotQEAgLTAsMCArMSw2OTIgQEAKLSsvLyBzdGQ6Om1vbmV5cHVuY3QgaW1wbGVtZW50YXRpb24gZGV0YWlscywgR05VIHZlcnNpb24gLSotIEMrKyAtKi0KLSsKLSsvLyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLy8KLSsvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlCi0rLy8gc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlCi0rLy8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLSsvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsvLyBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsvLyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKy8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi0rLy8gd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKy8vIFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKy8vIFVTQS4KLSsKLSsvLyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIGZyZWUgc29mdHdhcmUKLSsvLyBsaWJyYXJ5IHdpdGhvdXQgcmVzdHJpY3Rpb24uICBTcGVjaWZpY2FsbHksIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlCi0rLy8gdGVtcGxhdGVzIG9yIHVzZSBtYWNyb3Mgb3IgaW5saW5lIGZ1bmN0aW9ucyBmcm9tIHRoaXMgZmlsZSwgb3IgeW91IGNvbXBpbGUKLSsvLyB0aGlzIGZpbGUgYW5kIGxpbmsgaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuIGV4ZWN1dGFibGUsIHRoaXMKLSsvLyBmaWxlIGRvZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoaXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIKLSsvLyBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCi0rCi0rLy8KLSsvLyBJU08gQysrIDE0ODgyOiAyMi4yLjYuMy4yICBtb25leXB1bmN0IHZpcnR1YWwgZnVuY3Rpb25zCi0rLy8KLSsKLSsvLyBXcml0dGVuIGJ5IEJlbmphbWluIEtvc25payA8YmtvekByZWRoYXQuY29tPgotKwotKyNkZWZpbmUgX0xJQkMKLSsjaW5jbHVkZSA8bG9jYWxlPgotKyN1bmRlZiBfTElCQwotKyNpbmNsdWRlIDxiaXRzL2MrK2xvY2FsZV9pbnRlcm5hbC5oPgotKwotKyNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotKyN3YXJuaW5nIG9wdGltaXplIHRoaXMgZm9yIHVjbGliYwotKyN3YXJuaW5nIHRhaWxvciBmb3Igc3R1YiBsb2NhbGUgc3VwcG9ydAotKyNlbmRpZgotKwotKyNpZm5kZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyNkZWZpbmUgX19ubF9sYW5naW5mb19sKE4sIEwpICAgICAgICAgbmxfbGFuZ2luZm8oKE4pKQotKyNlbmRpZgotKwotK25hbWVzcGFjZSBzdGQKLSt7Ci0rICAvLyBDb25zdHJ1Y3QgYW5kIHJldHVybiB2YWxpZCBwYXR0ZXJuIGNvbnNpc3Rpbmcgb2Ygc29tZSBjb21iaW5hdGlvbiBvZjoKLSsgIC8vIHNwYWNlIG5vbmUgc3ltYm9sIHNpZ24gdmFsdWUKLSsgIG1vbmV5X2Jhc2U6OnBhdHRlcm4KLSsgIG1vbmV5X2Jhc2U6Ol9TX2NvbnN0cnVjdF9wYXR0ZXJuKGNoYXIgX19wcmVjZWRlcywgY2hhciBfX3NwYWNlLCBjaGFyIF9fcG9zbikKLSsgIHsKLSsgICAgcGF0dGVybiBfX3JldDsKLSsKLSsgICAgLy8gVGhpcyBpbnNhbmVseSBjb21wbGljYXRlZCByb3V0aW5lIGF0dGVtcHRzIHRvIGNvbnN0cnVjdCBhIHZhbGlkCi0rICAgIC8vIHBhdHRlcm4gZm9yIHVzZSB3aXRoIG1vbnllcHVuY3QuIEEgY291cGxlIG9mIGludmFyaWFudHM6Ci0rCi0rICAgIC8vIGlmIChfX3ByZWNlZGVzKSBzeW1ib2wgLT4gdmFsdWUKLSsgICAgLy8gZWxzZSB2YWx1ZSAtPiBzeW1ib2wKLSsKLSsgICAgLy8gaWYgKF9fc3BhY2UpIHNwYWNlCi0rICAgIC8vIGVsc2Ugbm9uZQotKwotKyAgICAvLyBub25lID09IG5ldmVyIGZpcnN0Ci0rICAgIC8vIHNwYWNlIG5ldmVyIGZpcnN0IG9yIGxhc3QKLSsKLSsgICAgLy8gQW55IGVsZWdhbnQgaW1wbGVtZW50YXRpb25zIG9mIHRoaXMgYXJlIHdlbGNvbWUuCi0rICAgIHN3aXRjaCAoX19wb3NuKQotKyAgICAgIHsKLSsgICAgICBjYXNlIDA6Ci0rICAgICAgY2FzZSAxOgotKwkvLyAxIFRoZSBzaWduIHByZWNlZGVzIHRoZSB2YWx1ZSBhbmQgc3ltYm9sLgotKwlfX3JldC5maWVsZFswXSA9IHNpZ247Ci0rCWlmIChfX3NwYWNlKQotKwkgIHsKLSsJICAgIC8vIFBhdHRlcm4gc3RhcnRzIHdpdGggc2lnbi4KLSsJICAgIGlmIChfX3ByZWNlZGVzKQotKwkgICAgICB7Ci0rCQlfX3JldC5maWVsZFsxXSA9IHN5bWJvbDsKLSsJCV9fcmV0LmZpZWxkWzNdID0gdmFsdWU7Ci0rCSAgICAgIH0KLSsJICAgIGVsc2UKLSsJICAgICAgewotKwkJX19yZXQuZmllbGRbMV0gPSB2YWx1ZTsKLSsJCV9fcmV0LmZpZWxkWzNdID0gc3ltYm9sOwotKwkgICAgICB9Ci0rCSAgICBfX3JldC5maWVsZFsyXSA9IHNwYWNlOwotKwkgIH0KLSsJZWxzZQotKwkgIHsKLSsJICAgIC8vIFBhdHRlcm4gc3RhcnRzIHdpdGggc2lnbiBhbmQgZW5kcyB3aXRoIG5vbmUuCi0rCSAgICBpZiAoX19wcmVjZWRlcykKLSsJICAgICAgewotKwkJX19yZXQuZmllbGRbMV0gPSBzeW1ib2w7Ci0rCQlfX3JldC5maWVsZFsyXSA9IHZhbHVlOwotKwkgICAgICB9Ci0rCSAgICBlbHNlCi0rCSAgICAgIHsKLSsJCV9fcmV0LmZpZWxkWzFdID0gdmFsdWU7Ci0rCQlfX3JldC5maWVsZFsyXSA9IHN5bWJvbDsKLSsJICAgICAgfQotKwkgICAgX19yZXQuZmllbGRbM10gPSBub25lOwotKwkgIH0KLSsJYnJlYWs7Ci0rICAgICAgY2FzZSAyOgotKwkvLyAyIFRoZSBzaWduIGZvbGxvd3MgdGhlIHZhbHVlIGFuZCBzeW1ib2wuCi0rCWlmIChfX3NwYWNlKQotKwkgIHsKLSsJICAgIC8vIFBhdHRlcm4gZWl0aGVyIGVuZHMgd2l0aCBzaWduLgotKwkgICAgaWYgKF9fcHJlY2VkZXMpCi0rCSAgICAgIHsKLSsJCV9fcmV0LmZpZWxkWzBdID0gc3ltYm9sOwotKwkJX19yZXQuZmllbGRbMl0gPSB2YWx1ZTsKLSsJICAgICAgfQotKwkgICAgZWxzZQotKwkgICAgICB7Ci0rCQlfX3JldC5maWVsZFswXSA9IHZhbHVlOwotKwkJX19yZXQuZmllbGRbMl0gPSBzeW1ib2w7Ci0rCSAgICAgIH0KLSsJICAgIF9fcmV0LmZpZWxkWzFdID0gc3BhY2U7Ci0rCSAgICBfX3JldC5maWVsZFszXSA9IHNpZ247Ci0rCSAgfQotKwllbHNlCi0rCSAgewotKwkgICAgLy8gUGF0dGVybiBlbmRzIHdpdGggc2lnbiB0aGVuIG5vbmUuCi0rCSAgICBpZiAoX19wcmVjZWRlcykKLSsJICAgICAgewotKwkJX19yZXQuZmllbGRbMF0gPSBzeW1ib2w7Ci0rCQlfX3JldC5maWVsZFsxXSA9IHZhbHVlOwotKwkgICAgICB9Ci0rCSAgICBlbHNlCi0rCSAgICAgIHsKLSsJCV9fcmV0LmZpZWxkWzBdID0gdmFsdWU7Ci0rCQlfX3JldC5maWVsZFsxXSA9IHN5bWJvbDsKLSsJICAgICAgfQotKwkgICAgX19yZXQuZmllbGRbMl0gPSBzaWduOwotKwkgICAgX19yZXQuZmllbGRbM10gPSBub25lOwotKwkgIH0KLSsJYnJlYWs7Ci0rICAgICAgY2FzZSAzOgotKwkvLyAzIFRoZSBzaWduIGltbWVkaWF0ZWx5IHByZWNlZGVzIHRoZSBzeW1ib2wuCi0rCWlmIChfX3ByZWNlZGVzKQotKwkgIHsKLSsJICAgIF9fcmV0LmZpZWxkWzBdID0gc2lnbjsKLSsJICAgIF9fcmV0LmZpZWxkWzFdID0gc3ltYm9sOwotKwkgICAgaWYgKF9fc3BhY2UpCi0rCSAgICAgIHsKLSsJCV9fcmV0LmZpZWxkWzJdID0gc3BhY2U7Ci0rCQlfX3JldC5maWVsZFszXSA9IHZhbHVlOwotKwkgICAgICB9Ci0rCSAgICBlbHNlCi0rCSAgICAgIHsKLSsJCV9fcmV0LmZpZWxkWzJdID0gdmFsdWU7Ci0rCQlfX3JldC5maWVsZFszXSA9IG5vbmU7Ci0rCSAgICAgIH0KLSsJICB9Ci0rCWVsc2UKLSsJICB7Ci0rCSAgICBfX3JldC5maWVsZFswXSA9IHZhbHVlOwotKwkgICAgaWYgKF9fc3BhY2UpCi0rCSAgICAgIHsKLSsJCV9fcmV0LmZpZWxkWzFdID0gc3BhY2U7Ci0rCQlfX3JldC5maWVsZFsyXSA9IHNpZ247Ci0rCQlfX3JldC5maWVsZFszXSA9IHN5bWJvbDsKLSsJICAgICAgfQotKwkgICAgZWxzZQotKwkgICAgICB7Ci0rCQlfX3JldC5maWVsZFsxXSA9IHNpZ247Ci0rCQlfX3JldC5maWVsZFsyXSA9IHN5bWJvbDsKLSsJCV9fcmV0LmZpZWxkWzNdID0gbm9uZTsKLSsJICAgICAgfQotKwkgIH0KLSsJYnJlYWs7Ci0rICAgICAgY2FzZSA0OgotKwkvLyA0IFRoZSBzaWduIGltbWVkaWF0ZWx5IGZvbGxvd3MgdGhlIHN5bWJvbC4KLSsJaWYgKF9fcHJlY2VkZXMpCi0rCSAgewotKwkgICAgX19yZXQuZmllbGRbMF0gPSBzeW1ib2w7Ci0rCSAgICBfX3JldC5maWVsZFsxXSA9IHNpZ247Ci0rCSAgICBpZiAoX19zcGFjZSkKLSsJICAgICAgewotKwkJX19yZXQuZmllbGRbMl0gPSBzcGFjZTsKLSsJCV9fcmV0LmZpZWxkWzNdID0gdmFsdWU7Ci0rCSAgICAgIH0KLSsJICAgIGVsc2UKLSsJICAgICAgewotKwkJX19yZXQuZmllbGRbMl0gPSB2YWx1ZTsKLSsJCV9fcmV0LmZpZWxkWzNdID0gbm9uZTsKLSsJICAgICAgfQotKwkgIH0KLSsJZWxzZQotKwkgIHsKLSsJICAgIF9fcmV0LmZpZWxkWzBdID0gdmFsdWU7Ci0rCSAgICBpZiAoX19zcGFjZSkKLSsJICAgICAgewotKwkJX19yZXQuZmllbGRbMV0gPSBzcGFjZTsKLSsJCV9fcmV0LmZpZWxkWzJdID0gc3ltYm9sOwotKwkJX19yZXQuZmllbGRbM10gPSBzaWduOwotKwkgICAgICB9Ci0rCSAgICBlbHNlCi0rCSAgICAgIHsKLSsJCV9fcmV0LmZpZWxkWzFdID0gc3ltYm9sOwotKwkJX19yZXQuZmllbGRbMl0gPSBzaWduOwotKwkJX19yZXQuZmllbGRbM10gPSBub25lOwotKwkgICAgICB9Ci0rCSAgfQotKwlicmVhazsKLSsgICAgICBkZWZhdWx0OgotKwk7Ci0rICAgICAgfQotKyAgICByZXR1cm4gX19yZXQ7Ci0rICB9Ci0rCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIHZvaWQKLSsgICAgbW9uZXlwdW5jdDxjaGFyLCB0cnVlPjo6X01faW5pdGlhbGl6ZV9tb25leXB1bmN0KF9fY19sb2NhbGUgX19jbG9jLAotKwkJCQkJCSAgICAgY29uc3QgY2hhciopCi0rICAgIHsKLSsgICAgICBpZiAoIV9NX2RhdGEpCi0rCV9NX2RhdGEgPSBuZXcgX19tb25leXB1bmN0X2NhY2hlPGNoYXIsIHRydWU+OwotKwotKyAgICAgIGlmICghX19jbG9jKQotKwl7Ci0rCSAgLy8gIkMiIGxvY2FsZQotKwkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSAnLic7Ci0rCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9ICcsJzsKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZyA9ICIiOwotKwkgIF9NX2RhdGEtPl9NX2dyb3VwaW5nX3NpemUgPSAwOwotKwkgIF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sID0gIiI7Ci0rCSAgX01fZGF0YS0+X01fY3Vycl9zeW1ib2xfc2l6ZSA9IDA7Ci0rCSAgX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbiA9ICIiOwotKwkgIF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ25fc2l6ZSA9IDA7Ci0rCSAgX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbiA9ICIiOwotKwkgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ25fc2l6ZSA9IDA7Ci0rCSAgX01fZGF0YS0+X01fZnJhY19kaWdpdHMgPSAwOwotKwkgIF9NX2RhdGEtPl9NX3Bvc19mb3JtYXQgPSBtb25leV9iYXNlOjpfU19kZWZhdWx0X3BhdHRlcm47Ci0rCSAgX01fZGF0YS0+X01fbmVnX2Zvcm1hdCA9IG1vbmV5X2Jhc2U6Ol9TX2RlZmF1bHRfcGF0dGVybjsKLSsKLSsJICBmb3IgKHNpemVfdCBfX2kgPSAwOyBfX2kgPCBtb25leV9iYXNlOjpfU19lbmQ7ICsrX19pKQotKwkgICAgX01fZGF0YS0+X01fYXRvbXNbX19pXSA9IG1vbmV5X2Jhc2U6Ol9TX2F0b21zW19faV07Ci0rCX0KLSsgICAgICBlbHNlCi0rCXsKLSsJICAvLyBOYW1lZCBsb2NhbGUuCi0rCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9ICooX19ubF9sYW5naW5mb19sKF9fTU9OX0RFQ0lNQUxfUE9JTlQsCi0rCQkJCQkJCV9fY2xvYykpOwotKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSAqKF9fbmxfbGFuZ2luZm9fbChfX01PTl9USE9VU0FORFNfU0VQLAotKwkJCQkJCQlfX2Nsb2MpKTsKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZyA9IF9fbmxfbGFuZ2luZm9fbChfX01PTl9HUk9VUElORywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZ19zaXplID0gc3RybGVuKF9NX2RhdGEtPl9NX2dyb3VwaW5nKTsKLSsJICBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduID0gX19ubF9sYW5naW5mb19sKF9fUE9TSVRJVkVfU0lHTiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduX3NpemUgPSBzdHJsZW4oX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbik7Ci0rCi0rCSAgY2hhciBfX25wb3NuID0gKihfX25sX2xhbmdpbmZvX2woX19JTlRfTl9TSUdOX1BPU04sIF9fY2xvYykpOwotKwkgIGlmICghX19ucG9zbikKLSsJICAgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24gPSAiKCkiOwotKwkgIGVsc2UKLSsJICAgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24gPSBfX25sX2xhbmdpbmZvX2woX19ORUdBVElWRV9TSUdOLAotKwkJCQkJCQlfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ25fc2l6ZSA9IHN0cmxlbihfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduKTsKLSsKLSsJICAvLyBfSW50bCA9PSB0cnVlCi0rCSAgX01fZGF0YS0+X01fY3Vycl9zeW1ib2wgPSBfX25sX2xhbmdpbmZvX2woX19JTlRfQ1VSUl9TWU1CT0wsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fY3Vycl9zeW1ib2xfc2l6ZSA9IHN0cmxlbihfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbCk7Ci0rCSAgX01fZGF0YS0+X01fZnJhY19kaWdpdHMgPSAqKF9fbmxfbGFuZ2luZm9fbChfX0lOVF9GUkFDX0RJR0lUUywKLSsJCQkJCQkgICAgICBfX2Nsb2MpKTsKLSsJICBjaGFyIF9fcHByZWNlZGVzID0gKihfX25sX2xhbmdpbmZvX2woX19JTlRfUF9DU19QUkVDRURFUywgX19jbG9jKSk7Ci0rCSAgY2hhciBfX3BzcGFjZSA9ICooX19ubF9sYW5naW5mb19sKF9fSU5UX1BfU0VQX0JZX1NQQUNFLCBfX2Nsb2MpKTsKLSsJICBjaGFyIF9fcHBvc24gPSAqKF9fbmxfbGFuZ2luZm9fbChfX0lOVF9QX1NJR05fUE9TTiwgX19jbG9jKSk7Ci0rCSAgX01fZGF0YS0+X01fcG9zX2Zvcm1hdCA9IF9TX2NvbnN0cnVjdF9wYXR0ZXJuKF9fcHByZWNlZGVzLCBfX3BzcGFjZSwKLSsJCQkJCQkJX19wcG9zbik7Ci0rCSAgY2hhciBfX25wcmVjZWRlcyA9ICooX19ubF9sYW5naW5mb19sKF9fSU5UX05fQ1NfUFJFQ0VERVMsIF9fY2xvYykpOwotKwkgIGNoYXIgX19uc3BhY2UgPSAqKF9fbmxfbGFuZ2luZm9fbChfX0lOVF9OX1NFUF9CWV9TUEFDRSwgX19jbG9jKSk7Ci0rCSAgX01fZGF0YS0+X01fbmVnX2Zvcm1hdCA9IF9TX2NvbnN0cnVjdF9wYXR0ZXJuKF9fbnByZWNlZGVzLCBfX25zcGFjZSwKLSsJCQkJCQkJX19ucG9zbik7Ci0rCX0KLSsgICAgfQotKwotKyAgdGVtcGxhdGU8PgotKyAgICB2b2lkCi0rICAgIG1vbmV5cHVuY3Q8Y2hhciwgZmFsc2U+OjpfTV9pbml0aWFsaXplX21vbmV5cHVuY3QoX19jX2xvY2FsZSBfX2Nsb2MsCi0rCQkJCQkJICAgICAgY29uc3QgY2hhciopCi0rICAgIHsKLSsgICAgICBpZiAoIV9NX2RhdGEpCi0rCV9NX2RhdGEgPSBuZXcgX19tb25leXB1bmN0X2NhY2hlPGNoYXIsIGZhbHNlPjsKLSsKLSsgICAgICBpZiAoIV9fY2xvYykKLSsJewotKwkgIC8vICJDIiBsb2NhbGUKLSsJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gJy4nOwotKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSAnLCc7Ci0rCSAgX01fZGF0YS0+X01fZ3JvdXBpbmcgPSAiIjsKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZ19zaXplID0gMDsKLSsJICBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbCA9ICIiOwotKwkgIF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sX3NpemUgPSAwOwotKwkgIF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ24gPSAiIjsKLSsJICBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduX3NpemUgPSAwOwotKwkgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24gPSAiIjsKLSsJICBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduX3NpemUgPSAwOwotKwkgIF9NX2RhdGEtPl9NX2ZyYWNfZGlnaXRzID0gMDsKLSsJICBfTV9kYXRhLT5fTV9wb3NfZm9ybWF0ID0gbW9uZXlfYmFzZTo6X1NfZGVmYXVsdF9wYXR0ZXJuOwotKwkgIF9NX2RhdGEtPl9NX25lZ19mb3JtYXQgPSBtb25leV9iYXNlOjpfU19kZWZhdWx0X3BhdHRlcm47Ci0rCi0rCSAgZm9yIChzaXplX3QgX19pID0gMDsgX19pIDwgbW9uZXlfYmFzZTo6X1NfZW5kOyArK19faSkKLSsJICAgIF9NX2RhdGEtPl9NX2F0b21zW19faV0gPSBtb25leV9iYXNlOjpfU19hdG9tc1tfX2ldOwotKwl9Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgLy8gTmFtZWQgbG9jYWxlLgotKwkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSAqKF9fbmxfbGFuZ2luZm9fbChfX01PTl9ERUNJTUFMX1BPSU5ULAotKwkJCQkJCQlfX2Nsb2MpKTsKLSsJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gKihfX25sX2xhbmdpbmZvX2woX19NT05fVEhPVVNBTkRTX1NFUCwKLSsJCQkJCQkJX19jbG9jKSk7Ci0rCSAgX01fZGF0YS0+X01fZ3JvdXBpbmcgPSBfX25sX2xhbmdpbmZvX2woX19NT05fR1JPVVBJTkcsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZ3JvdXBpbmdfc2l6ZSA9IHN0cmxlbihfTV9kYXRhLT5fTV9ncm91cGluZyk7Ci0rCSAgX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbiA9IF9fbmxfbGFuZ2luZm9fbChfX1BPU0lUSVZFX1NJR04sIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbl9zaXplID0gc3RybGVuKF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ24pOwotKwotKwkgIGNoYXIgX19ucG9zbiA9ICooX19ubF9sYW5naW5mb19sKF9fTl9TSUdOX1BPU04sIF9fY2xvYykpOwotKwkgIGlmICghX19ucG9zbikKLSsJICAgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24gPSAiKCkiOwotKwkgIGVsc2UKLSsJICAgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24gPSBfX25sX2xhbmdpbmZvX2woX19ORUdBVElWRV9TSUdOLAotKwkJCQkJCQlfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ25fc2l6ZSA9IHN0cmxlbihfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduKTsKLSsKLSsJICAvLyBfSW50bCA9PSBmYWxzZQotKwkgIF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sID0gX19ubF9sYW5naW5mb19sKF9fQ1VSUkVOQ1lfU1lNQk9MLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sX3NpemUgPSBzdHJsZW4oX01fZGF0YS0+X01fY3Vycl9zeW1ib2wpOwotKwkgIF9NX2RhdGEtPl9NX2ZyYWNfZGlnaXRzID0gKihfX25sX2xhbmdpbmZvX2woX19GUkFDX0RJR0lUUywgX19jbG9jKSk7Ci0rCSAgY2hhciBfX3BwcmVjZWRlcyA9ICooX19ubF9sYW5naW5mb19sKF9fUF9DU19QUkVDRURFUywgX19jbG9jKSk7Ci0rCSAgY2hhciBfX3BzcGFjZSA9ICooX19ubF9sYW5naW5mb19sKF9fUF9TRVBfQllfU1BBQ0UsIF9fY2xvYykpOwotKwkgIGNoYXIgX19wcG9zbiA9ICooX19ubF9sYW5naW5mb19sKF9fUF9TSUdOX1BPU04sIF9fY2xvYykpOwotKwkgIF9NX2RhdGEtPl9NX3Bvc19mb3JtYXQgPSBfU19jb25zdHJ1Y3RfcGF0dGVybihfX3BwcmVjZWRlcywgX19wc3BhY2UsCi0rCQkJCQkJCV9fcHBvc24pOwotKwkgIGNoYXIgX19ucHJlY2VkZXMgPSAqKF9fbmxfbGFuZ2luZm9fbChfX05fQ1NfUFJFQ0VERVMsIF9fY2xvYykpOwotKwkgIGNoYXIgX19uc3BhY2UgPSAqKF9fbmxfbGFuZ2luZm9fbChfX05fU0VQX0JZX1NQQUNFLCBfX2Nsb2MpKTsKLSsJICBfTV9kYXRhLT5fTV9uZWdfZm9ybWF0ID0gX1NfY29uc3RydWN0X3BhdHRlcm4oX19ucHJlY2VkZXMsIF9fbnNwYWNlLAotKwkJCQkJCQlfX25wb3NuKTsKLSsJfQotKyAgICB9Ci0rCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIG1vbmV5cHVuY3Q8Y2hhciwgdHJ1ZT46On5tb25leXB1bmN0KCkKLSsgICAgeyBkZWxldGUgX01fZGF0YTsgfQotKwotKyAgdGVtcGxhdGU8PgotKyAgICBtb25leXB1bmN0PGNoYXIsIGZhbHNlPjo6fm1vbmV5cHVuY3QoKQotKyAgICB7IGRlbGV0ZSBfTV9kYXRhOyB9Ci0rCi0rI2lmZGVmIF9HTElCQ1hYX1VTRV9XQ0hBUl9UCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIHZvaWQKLSsgICAgbW9uZXlwdW5jdDx3Y2hhcl90LCB0cnVlPjo6X01faW5pdGlhbGl6ZV9tb25leXB1bmN0KF9fY19sb2NhbGUgX19jbG9jLAotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rCQkJCQkJCWNvbnN0IGNoYXIqKQotKyNlbHNlCi0rCQkJCQkJCWNvbnN0IGNoYXIqIF9fbmFtZSkKLSsjZW5kaWYKLSsgICAgewotKyAgICAgIGlmICghX01fZGF0YSkKLSsJX01fZGF0YSA9IG5ldyBfX21vbmV5cHVuY3RfY2FjaGU8d2NoYXJfdCwgdHJ1ZT47Ci0rCi0rICAgICAgaWYgKCFfX2Nsb2MpCi0rCXsKLSsJICAvLyAiQyIgbG9jYWxlCi0rCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IEwnLic7Ci0rCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9IEwnLCc7Ci0rCSAgX01fZGF0YS0+X01fZ3JvdXBpbmcgPSAiIjsKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZ19zaXplID0gMDsKLSsJICBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbCA9IEwiIjsKLSsJICBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbF9zaXplID0gMDsKLSsJICBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduID0gTCIiOwotKwkgIF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ25fc2l6ZSA9IDA7Ci0rCSAgX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbiA9IEwiIjsKLSsJICBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduX3NpemUgPSAwOwotKwkgIF9NX2RhdGEtPl9NX2ZyYWNfZGlnaXRzID0gMDsKLSsJICBfTV9kYXRhLT5fTV9wb3NfZm9ybWF0ID0gbW9uZXlfYmFzZTo6X1NfZGVmYXVsdF9wYXR0ZXJuOwotKwkgIF9NX2RhdGEtPl9NX25lZ19mb3JtYXQgPSBtb25leV9iYXNlOjpfU19kZWZhdWx0X3BhdHRlcm47Ci0rCi0rCSAgLy8gVXNlIGN0eXBlOjp3aWRlbiBjb2RlIHdpdGhvdXQgdGhlIGZhY2V0Li4uCi0rCSAgZm9yIChzaXplX3QgX19pID0gMDsgX19pIDwgbW9uZXlfYmFzZTo6X1NfZW5kOyArK19faSkKLSsJICAgIF9NX2RhdGEtPl9NX2F0b21zW19faV0gPQotKwkgICAgICBzdGF0aWNfY2FzdDx3Y2hhcl90Pihtb25leV9iYXNlOjpfU19hdG9tc1tfX2ldKTsKLSsJfQotKyAgICAgIGVsc2UKLSsJewotKwkgIC8vIE5hbWVkIGxvY2FsZS4KLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKwkgIF9fY19sb2NhbGUgX19vbGQgPSBfX3VzZWxvY2FsZShfX2Nsb2MpOwotKyNlbHNlCi0rCSAgLy8gU3dpdGNoIHRvIG5hbWVkIGxvY2FsZSBzbyB0aGF0IG1ic3J0b3djcyB3aWxsIHdvcmsuCi0rCSAgY2hhciogX19vbGQgPSBzdHJkdXAoc2V0bG9jYWxlKExDX0FMTCwgTlVMTCkpOwotKwkgIHNldGxvY2FsZShMQ19BTEwsIF9fbmFtZSk7Ci0rI2VuZGlmCi0rCi0rI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi0rI3dhcm5pbmcgZml4IHRoaXMuLi4gc2hvdWxkIGJlIG1vbmV0YXJ5Ci0rI2VuZGlmCi0rI2lmZGVmIF9fVUNMSUJDX18KLSsjIGlmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gX19jbG9jLT5kZWNpbWFsX3BvaW50X3djOwotKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSBfX2Nsb2MtPnRob3VzYW5kc19zZXBfd2M7Ci0rIyBlbHNlCi0rCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IF9fZ2xvYmFsX2xvY2FsZS0+ZGVjaW1hbF9wb2ludF93YzsKLSsJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gX19nbG9iYWxfbG9jYWxlLT50aG91c2FuZHNfc2VwX3djOwotKyMgZW5kaWYKLSsjZWxzZQotKwkgIHVuaW9uIHsgY2hhciAqX19zOyB3Y2hhcl90IF9fdzsgfSBfX3U7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfTU9ORVRBUllfREVDSU1BTF9QT0lOVF9XQywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gX191Ll9fdzsKLSsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9NT05FVEFSWV9USE9VU0FORFNfU0VQX1dDLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSBfX3UuX193OwotKyNlbmRpZgotKwkgIF9NX2RhdGEtPl9NX2dyb3VwaW5nID0gX19ubF9sYW5naW5mb19sKF9fTU9OX0dST1VQSU5HLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2dyb3VwaW5nX3NpemUgPSBzdHJsZW4oX01fZGF0YS0+X01fZ3JvdXBpbmcpOwotKwotKwkgIGNvbnN0IGNoYXIqIF9fY3Bvc3NpZ24gPSBfX25sX2xhbmdpbmZvX2woX19QT1NJVElWRV9TSUdOLCBfX2Nsb2MpOwotKwkgIGNvbnN0IGNoYXIqIF9fY25lZ3NpZ24gPSBfX25sX2xhbmdpbmZvX2woX19ORUdBVElWRV9TSUdOLCBfX2Nsb2MpOwotKwkgIGNvbnN0IGNoYXIqIF9fY2N1cnIgPSBfX25sX2xhbmdpbmZvX2woX19JTlRfQ1VSUl9TWU1CT0wsIF9fY2xvYyk7Ci0rCi0rCSAgd2NoYXJfdCogX193Y3NfcHMgPSAwOwotKwkgIHdjaGFyX3QqIF9fd2NzX25zID0gMDsKLSsJICBjb25zdCBjaGFyIF9fbnBvc24gPSAqKF9fbmxfbGFuZ2luZm9fbChfX0lOVF9OX1NJR05fUE9TTiwgX19jbG9jKSk7Ci0rCSAgdHJ5Ci0rCSAgICB7Ci0rCSAgICAgIG1ic3RhdGVfdCBfX3N0YXRlOwotKwkgICAgICBzaXplX3QgX19sZW4gPSBzdHJsZW4oX19jcG9zc2lnbik7Ci0rCSAgICAgIGlmIChfX2xlbikKLSsJCXsKLSsJCSAgKytfX2xlbjsKLSsJCSAgbWVtc2V0KCZfX3N0YXRlLCAwLCBzaXplb2YobWJzdGF0ZV90KSk7Ci0rCQkgIF9fd2NzX3BzID0gbmV3IHdjaGFyX3RbX19sZW5dOwotKwkJICBtYnNydG93Y3MoX193Y3NfcHMsICZfX2Nwb3NzaWduLCBfX2xlbiwgJl9fc3RhdGUpOwotKwkJICBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduID0gX193Y3NfcHM7Ci0rCQl9Ci0rCSAgICAgIGVsc2UKLSsJCV9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ24gPSBMIiI7Ci0rCSAgICAgIF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ25fc2l6ZSA9IHdjc2xlbihfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduKTsKLSsKLSsJICAgICAgX19sZW4gPSBzdHJsZW4oX19jbmVnc2lnbik7Ci0rCSAgICAgIGlmICghX19ucG9zbikKLSsJCV9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24gPSBMIigpIjsKLSsJICAgICAgZWxzZSBpZiAoX19sZW4pCi0rCQl7Ci0rCQkgICsrX19sZW47Ci0rCQkgIG1lbXNldCgmX19zdGF0ZSwgMCwgc2l6ZW9mKG1ic3RhdGVfdCkpOwotKwkJICBfX3djc19ucyA9IG5ldyB3Y2hhcl90W19fbGVuXTsKLSsJCSAgbWJzcnRvd2NzKF9fd2NzX25zLCAmX19jbmVnc2lnbiwgX19sZW4sICZfX3N0YXRlKTsKLSsJCSAgX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbiA9IF9fd2NzX25zOwotKwkJfQotKwkgICAgICBlbHNlCi0rCQlfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduID0gTCIiOwotKwkgICAgICBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduX3NpemUgPSB3Y3NsZW4oX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbik7Ci0rCi0rCSAgICAgIC8vIF9JbnRsID09IHRydWUuCi0rCSAgICAgIF9fbGVuID0gc3RybGVuKF9fY2N1cnIpOwotKwkgICAgICBpZiAoX19sZW4pCi0rCQl7Ci0rCQkgICsrX19sZW47Ci0rCQkgIG1lbXNldCgmX19zdGF0ZSwgMCwgc2l6ZW9mKG1ic3RhdGVfdCkpOwotKwkJICB3Y2hhcl90KiBfX3djcyA9IG5ldyB3Y2hhcl90W19fbGVuXTsKLSsJCSAgbWJzcnRvd2NzKF9fd2NzLCAmX19jY3VyciwgX19sZW4sICZfX3N0YXRlKTsKLSsJCSAgX01fZGF0YS0+X01fY3Vycl9zeW1ib2wgPSBfX3djczsKLSsJCX0KLSsJICAgICAgZWxzZQotKwkJX01fZGF0YS0+X01fY3Vycl9zeW1ib2wgPSBMIiI7Ci0rCSAgICAgIF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sX3NpemUgPSB3Y3NsZW4oX01fZGF0YS0+X01fY3Vycl9zeW1ib2wpOwotKwkgICAgfQotKwkgIGNhdGNoICguLi4pCi0rCSAgICB7Ci0rCSAgICAgIGRlbGV0ZSBfTV9kYXRhOwotKwkgICAgICBfTV9kYXRhID0gMDsKLSsJICAgICAgZGVsZXRlIF9fd2NzX3BzOwotKwkgICAgICBkZWxldGUgX193Y3NfbnM7Ci0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsJICAgICAgX191c2Vsb2NhbGUoX19vbGQpOwotKyNlbHNlCi0rCSAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9fb2xkKTsKLSsJICAgICAgZnJlZShfX29sZCk7Ci0rI2VuZGlmCi0rCSAgICAgIF9fdGhyb3dfZXhjZXB0aW9uX2FnYWluOwotKwkgICAgfQotKwotKwkgIF9NX2RhdGEtPl9NX2ZyYWNfZGlnaXRzID0gKihfX25sX2xhbmdpbmZvX2woX19JTlRfRlJBQ19ESUdJVFMsCi0rCQkJCQkJICAgICAgX19jbG9jKSk7Ci0rCSAgY2hhciBfX3BwcmVjZWRlcyA9ICooX19ubF9sYW5naW5mb19sKF9fSU5UX1BfQ1NfUFJFQ0VERVMsIF9fY2xvYykpOwotKwkgIGNoYXIgX19wc3BhY2UgPSAqKF9fbmxfbGFuZ2luZm9fbChfX0lOVF9QX1NFUF9CWV9TUEFDRSwgX19jbG9jKSk7Ci0rCSAgY2hhciBfX3Bwb3NuID0gKihfX25sX2xhbmdpbmZvX2woX19JTlRfUF9TSUdOX1BPU04sIF9fY2xvYykpOwotKwkgIF9NX2RhdGEtPl9NX3Bvc19mb3JtYXQgPSBfU19jb25zdHJ1Y3RfcGF0dGVybihfX3BwcmVjZWRlcywgX19wc3BhY2UsCi0rCQkJCQkJCV9fcHBvc24pOwotKwkgIGNoYXIgX19ucHJlY2VkZXMgPSAqKF9fbmxfbGFuZ2luZm9fbChfX0lOVF9OX0NTX1BSRUNFREVTLCBfX2Nsb2MpKTsKLSsJICBjaGFyIF9fbnNwYWNlID0gKihfX25sX2xhbmdpbmZvX2woX19JTlRfTl9TRVBfQllfU1BBQ0UsIF9fY2xvYykpOwotKwkgIF9NX2RhdGEtPl9NX25lZ19mb3JtYXQgPSBfU19jb25zdHJ1Y3RfcGF0dGVybihfX25wcmVjZWRlcywgX19uc3BhY2UsCi0rCQkJCQkJCV9fbnBvc24pOwotKwotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rCSAgX191c2Vsb2NhbGUoX19vbGQpOwotKyNlbHNlCi0rCSAgc2V0bG9jYWxlKExDX0FMTCwgX19vbGQpOwotKwkgIGZyZWUoX19vbGQpOwotKyNlbmRpZgotKwl9Ci0rICAgIH0KLSsKLSsgIHRlbXBsYXRlPD4KLSsgIHZvaWQKLSsgIG1vbmV5cHVuY3Q8d2NoYXJfdCwgZmFsc2U+OjpfTV9pbml0aWFsaXplX21vbmV5cHVuY3QoX19jX2xvY2FsZSBfX2Nsb2MsCi0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsJCQkJCQkgICAgICAgY29uc3QgY2hhciopCi0rI2Vsc2UKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogX19uYW1lKQotKyNlbmRpZgotKyAgewotKyAgICBpZiAoIV9NX2RhdGEpCi0rICAgICAgX01fZGF0YSA9IG5ldyBfX21vbmV5cHVuY3RfY2FjaGU8d2NoYXJfdCwgZmFsc2U+OwotKwotKyAgICBpZiAoIV9fY2xvYykKLSsJewotKwkgIC8vICJDIiBsb2NhbGUKLSsJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gTCcuJzsKLSsJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gTCcsJzsKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZyA9ICIiOwotKyAgICAgICAgICBfTV9kYXRhLT5fTV9ncm91cGluZ19zaXplID0gMDsKLSsJICBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbCA9IEwiIjsKLSsJICBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbF9zaXplID0gMDsKLSsJICBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduID0gTCIiOwotKwkgIF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ25fc2l6ZSA9IDA7Ci0rCSAgX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbiA9IEwiIjsKLSsJICBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduX3NpemUgPSAwOwotKwkgIF9NX2RhdGEtPl9NX2ZyYWNfZGlnaXRzID0gMDsKLSsJICBfTV9kYXRhLT5fTV9wb3NfZm9ybWF0ID0gbW9uZXlfYmFzZTo6X1NfZGVmYXVsdF9wYXR0ZXJuOwotKwkgIF9NX2RhdGEtPl9NX25lZ19mb3JtYXQgPSBtb25leV9iYXNlOjpfU19kZWZhdWx0X3BhdHRlcm47Ci0rCi0rCSAgLy8gVXNlIGN0eXBlOjp3aWRlbiBjb2RlIHdpdGhvdXQgdGhlIGZhY2V0Li4uCi0rCSAgZm9yIChzaXplX3QgX19pID0gMDsgX19pIDwgbW9uZXlfYmFzZTo6X1NfZW5kOyArK19faSkKLSsJICAgIF9NX2RhdGEtPl9NX2F0b21zW19faV0gPQotKwkgICAgICBzdGF0aWNfY2FzdDx3Y2hhcl90Pihtb25leV9iYXNlOjpfU19hdG9tc1tfX2ldKTsKLSsJfQotKyAgICAgIGVsc2UKLSsJewotKwkgIC8vIE5hbWVkIGxvY2FsZS4KLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKwkgIF9fY19sb2NhbGUgX19vbGQgPSBfX3VzZWxvY2FsZShfX2Nsb2MpOwotKyNlbHNlCi0rCSAgLy8gU3dpdGNoIHRvIG5hbWVkIGxvY2FsZSBzbyB0aGF0IG1ic3J0b3djcyB3aWxsIHdvcmsuCi0rCSAgY2hhciogX19vbGQgPSBzdHJkdXAoc2V0bG9jYWxlKExDX0FMTCwgTlVMTCkpOwotKwkgIHNldGxvY2FsZShMQ19BTEwsIF9fbmFtZSk7Ci0rI2VuZGlmCi0rCi0rI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi0rI3dhcm5pbmcgZml4IHRoaXMuLi4gc2hvdWxkIGJlIG1vbmV0YXJ5Ci0rI2VuZGlmCi0rI2lmZGVmIF9fVUNMSUJDX18KLSsjIGlmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gX19jbG9jLT5kZWNpbWFsX3BvaW50X3djOwotKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSBfX2Nsb2MtPnRob3VzYW5kc19zZXBfd2M7Ci0rIyBlbHNlCi0rCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IF9fZ2xvYmFsX2xvY2FsZS0+ZGVjaW1hbF9wb2ludF93YzsKLSsJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gX19nbG9iYWxfbG9jYWxlLT50aG91c2FuZHNfc2VwX3djOwotKyMgZW5kaWYKLSsjZWxzZQotKyAgICAgICAgICB1bmlvbiB7IGNoYXIgKl9fczsgd2NoYXJfdCBfX3c7IH0gX191OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX01PTkVUQVJZX0RFQ0lNQUxfUE9JTlRfV0MsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IF9fdS5fX3c7Ci0rCi0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfTU9ORVRBUllfVEhPVVNBTkRTX1NFUF9XQywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gX191Ll9fdzsKLSsjZW5kaWYKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZyA9IF9fbmxfbGFuZ2luZm9fbChfX01PTl9HUk9VUElORywgX19jbG9jKTsKLSsgICAgICAgICAgX01fZGF0YS0+X01fZ3JvdXBpbmdfc2l6ZSA9IHN0cmxlbihfTV9kYXRhLT5fTV9ncm91cGluZyk7Ci0rCi0rCSAgY29uc3QgY2hhciogX19jcG9zc2lnbiA9IF9fbmxfbGFuZ2luZm9fbChfX1BPU0lUSVZFX1NJR04sIF9fY2xvYyk7Ci0rCSAgY29uc3QgY2hhciogX19jbmVnc2lnbiA9IF9fbmxfbGFuZ2luZm9fbChfX05FR0FUSVZFX1NJR04sIF9fY2xvYyk7Ci0rCSAgY29uc3QgY2hhciogX19jY3VyciA9IF9fbmxfbGFuZ2luZm9fbChfX0NVUlJFTkNZX1NZTUJPTCwgX19jbG9jKTsKLSsKLSsJICB3Y2hhcl90KiBfX3djc19wcyA9IDA7Ci0rCSAgd2NoYXJfdCogX193Y3NfbnMgPSAwOwotKwkgIGNvbnN0IGNoYXIgX19ucG9zbiA9ICooX19ubF9sYW5naW5mb19sKF9fTl9TSUdOX1BPU04sIF9fY2xvYykpOwotKwkgIHRyeQotKyAgICAgICAgICAgIHsKLSsgICAgICAgICAgICAgIG1ic3RhdGVfdCBfX3N0YXRlOwotKyAgICAgICAgICAgICAgc2l6ZV90IF9fbGVuOwotKyAgICAgICAgICAgICAgX19sZW4gPSBzdHJsZW4oX19jcG9zc2lnbik7Ci0rICAgICAgICAgICAgICBpZiAoX19sZW4pCi0rICAgICAgICAgICAgICAgIHsKLSsJCSAgKytfX2xlbjsKLSsJCSAgbWVtc2V0KCZfX3N0YXRlLCAwLCBzaXplb2YobWJzdGF0ZV90KSk7Ci0rCQkgIF9fd2NzX3BzID0gbmV3IHdjaGFyX3RbX19sZW5dOwotKwkJICBtYnNydG93Y3MoX193Y3NfcHMsICZfX2Nwb3NzaWduLCBfX2xlbiwgJl9fc3RhdGUpOwotKwkJICBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduID0gX193Y3NfcHM7Ci0rCQl9Ci0rCSAgICAgIGVsc2UKLSsJCV9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ24gPSBMIiI7Ci0rICAgICAgICAgICAgICBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduX3NpemUgPSB3Y3NsZW4oX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbik7Ci0rCi0rCSAgICAgIF9fbGVuID0gc3RybGVuKF9fY25lZ3NpZ24pOwotKwkgICAgICBpZiAoIV9fbnBvc24pCi0rCQlfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduID0gTCIoKSI7Ci0rCSAgICAgIGVsc2UgaWYgKF9fbGVuKQotKwkJewotKwkJICArK19fbGVuOwotKwkJICBtZW1zZXQoJl9fc3RhdGUsIDAsIHNpemVvZihtYnN0YXRlX3QpKTsKLSsJCSAgX193Y3NfbnMgPSBuZXcgd2NoYXJfdFtfX2xlbl07Ci0rCQkgIG1ic3J0b3djcyhfX3djc19ucywgJl9fY25lZ3NpZ24sIF9fbGVuLCAmX19zdGF0ZSk7Ci0rCQkgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24gPSBfX3djc19uczsKLSsJCX0KLSsJICAgICAgZWxzZQotKwkJX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbiA9IEwiIjsKLSsgICAgICAgICAgICAgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ25fc2l6ZSA9IHdjc2xlbihfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduKTsKLSsKLSsJICAgICAgLy8gX0ludGwgPT0gdHJ1ZS4KLSsJICAgICAgX19sZW4gPSBzdHJsZW4oX19jY3Vycik7Ci0rCSAgICAgIGlmIChfX2xlbikKLSsJCXsKLSsJCSAgKytfX2xlbjsKLSsJCSAgbWVtc2V0KCZfX3N0YXRlLCAwLCBzaXplb2YobWJzdGF0ZV90KSk7Ci0rCQkgIHdjaGFyX3QqIF9fd2NzID0gbmV3IHdjaGFyX3RbX19sZW5dOwotKwkJICBtYnNydG93Y3MoX193Y3MsICZfX2NjdXJyLCBfX2xlbiwgJl9fc3RhdGUpOwotKwkJICBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbCA9IF9fd2NzOwotKwkJfQotKwkgICAgICBlbHNlCi0rCQlfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbCA9IEwiIjsKLSsgICAgICAgICAgICAgIF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sX3NpemUgPSB3Y3NsZW4oX01fZGF0YS0+X01fY3Vycl9zeW1ib2wpOwotKwkgICAgfQotKyAgICAgICAgICBjYXRjaCAoLi4uKQotKwkgICAgewotKwkgICAgICBkZWxldGUgX01fZGF0YTsKLSsgICAgICAgICAgICAgIF9NX2RhdGEgPSAwOwotKwkgICAgICBkZWxldGUgX193Y3NfcHM7Ci0rCSAgICAgIGRlbGV0ZSBfX3djc19uczsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKwkgICAgICBfX3VzZWxvY2FsZShfX29sZCk7Ci0rI2Vsc2UKLSsJICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX19vbGQpOwotKwkgICAgICBmcmVlKF9fb2xkKTsKLSsjZW5kaWYKLSsgICAgICAgICAgICAgIF9fdGhyb3dfZXhjZXB0aW9uX2FnYWluOwotKwkgICAgfQotKwotKwkgIF9NX2RhdGEtPl9NX2ZyYWNfZGlnaXRzID0gKihfX25sX2xhbmdpbmZvX2woX19GUkFDX0RJR0lUUywgX19jbG9jKSk7Ci0rCSAgY2hhciBfX3BwcmVjZWRlcyA9ICooX19ubF9sYW5naW5mb19sKF9fUF9DU19QUkVDRURFUywgX19jbG9jKSk7Ci0rCSAgY2hhciBfX3BzcGFjZSA9ICooX19ubF9sYW5naW5mb19sKF9fUF9TRVBfQllfU1BBQ0UsIF9fY2xvYykpOwotKwkgIGNoYXIgX19wcG9zbiA9ICooX19ubF9sYW5naW5mb19sKF9fUF9TSUdOX1BPU04sIF9fY2xvYykpOwotKwkgIF9NX2RhdGEtPl9NX3Bvc19mb3JtYXQgPSBfU19jb25zdHJ1Y3RfcGF0dGVybihfX3BwcmVjZWRlcywgX19wc3BhY2UsCi0rCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fcHBvc24pOwotKwkgIGNoYXIgX19ucHJlY2VkZXMgPSAqKF9fbmxfbGFuZ2luZm9fbChfX05fQ1NfUFJFQ0VERVMsIF9fY2xvYykpOwotKwkgIGNoYXIgX19uc3BhY2UgPSAqKF9fbmxfbGFuZ2luZm9fbChfX05fU0VQX0JZX1NQQUNFLCBfX2Nsb2MpKTsKLSsJICBfTV9kYXRhLT5fTV9uZWdfZm9ybWF0ID0gX1NfY29uc3RydWN0X3BhdHRlcm4oX19ucHJlY2VkZXMsIF9fbnNwYWNlLAotKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX25wb3NuKTsKLSsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKwkgIF9fdXNlbG9jYWxlKF9fb2xkKTsKLSsjZWxzZQotKwkgIHNldGxvY2FsZShMQ19BTEwsIF9fb2xkKTsKLSsJICBmcmVlKF9fb2xkKTsKLSsjZW5kaWYKLSsJfQotKyAgICB9Ci0rCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIG1vbmV5cHVuY3Q8d2NoYXJfdCwgdHJ1ZT46On5tb25leXB1bmN0KCkKLSsgICAgewotKyAgICAgIGlmIChfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduX3NpemUpCi0rCWRlbGV0ZSBbXSBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduOwotKyAgICAgIGlmIChfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduX3NpemUKLSsgICAgICAgICAgJiYgd2NzY21wKF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24sIEwiKCkiKSAhPSAwKQotKwlkZWxldGUgW10gX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbjsKLSsgICAgICBpZiAoX01fZGF0YS0+X01fY3Vycl9zeW1ib2xfc2l6ZSkKLSsJZGVsZXRlIFtdIF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sOwotKyAgICAgIGRlbGV0ZSBfTV9kYXRhOwotKyAgICB9Ci0rCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIG1vbmV5cHVuY3Q8d2NoYXJfdCwgZmFsc2U+Ojp+bW9uZXlwdW5jdCgpCi0rICAgIHsKLSsgICAgICBpZiAoX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbl9zaXplKQotKwlkZWxldGUgW10gX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbjsKLSsgICAgICBpZiAoX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbl9zaXplCi0rICAgICAgICAgICYmIHdjc2NtcChfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduLCBMIigpIikgIT0gMCkKLSsJZGVsZXRlIFtdIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ247Ci0rICAgICAgaWYgKF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sX3NpemUpCi0rCWRlbGV0ZSBbXSBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbDsKLSsgICAgICBkZWxldGUgX01fZGF0YTsKLSsgICAgfQotKyNlbmRpZgotK30KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjg4M2VjMWEKLS0tLSAvZGV2L251bGwKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MKLUBAIC0wLDAgKzEsMTYwIEBACi0rLy8gc3RkOjpudW1wdW5jdCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLCBHTlUgdmVyc2lvbiAtKi0gQysrIC0qLQotKwotKy8vIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvLwotKy8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgSVNPIEMrKyBMaWJyYXJ5LiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUKLSsvLyBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUKLSsvLyB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotKy8vIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKy8vIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKy8vIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKy8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKy8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSsvLyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rLy8gU29mdHdhcmUgRm91bmRhdGlvbiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rLy8gVVNBLgotKwotKy8vIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHlvdSBtYXkgdXNlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgZnJlZSBzb2Z0d2FyZQotKy8vIGxpYnJhcnkgd2l0aG91dCByZXN0cmljdGlvbi4gIFNwZWNpZmljYWxseSwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUKLSsvLyB0ZW1wbGF0ZXMgb3IgdXNlIG1hY3JvcyBvciBpbmxpbmUgZnVuY3Rpb25zIGZyb20gdGhpcyBmaWxlLCBvciB5b3UgY29tcGlsZQotKy8vIHRoaXMgZmlsZSBhbmQgbGluayBpdCB3aXRoIG90aGVyIGZpbGVzIHRvIHByb2R1Y2UgYW4gZXhlY3V0YWJsZSwgdGhpcwotKy8vIGZpbGUgZG9lcyBub3QgYnkgaXRzZWxmIGNhdXNlIHRoZSByZXN1bHRpbmcgZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhpcyBleGNlcHRpb24gZG9lcyBub3QgaG93ZXZlcgotKy8vIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSBleGVjdXRhYmxlIGZpbGUgbWlnaHQgYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KLSsKLSsvLwotKy8vIElTTyBDKysgMTQ4ODI6IDIyLjIuMy4xLjIgIG51bXB1bmN0IHZpcnR1YWwgZnVuY3Rpb25zCi0rLy8KLSsKLSsvLyBXcml0dGVuIGJ5IEJlbmphbWluIEtvc25payA8YmtvekByZWRoYXQuY29tPgotKwotKyNkZWZpbmUgX0xJQkMKLSsjaW5jbHVkZSA8bG9jYWxlPgotKyN1bmRlZiBfTElCQwotKyNpbmNsdWRlIDxiaXRzL2MrK2xvY2FsZV9pbnRlcm5hbC5oPgotKwotKyNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotKyN3YXJuaW5nIHRhaWxvciBmb3Igc3R1YiBsb2NhbGUgc3VwcG9ydAotKyNlbmRpZgotKyNpZm5kZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyNkZWZpbmUgX19ubF9sYW5naW5mb19sKE4sIEwpICAgICAgICAgbmxfbGFuZ2luZm8oKE4pKQotKyNlbmRpZgotKwotK25hbWVzcGFjZSBzdGQKLSt7Ci0rICB0ZW1wbGF0ZTw+Ci0rICAgIHZvaWQKLSsgICAgbnVtcHVuY3Q8Y2hhcj46Ol9NX2luaXRpYWxpemVfbnVtcHVuY3QoX19jX2xvY2FsZSBfX2Nsb2MpCi0rICAgIHsKLSsgICAgICBpZiAoIV9NX2RhdGEpCi0rCV9NX2RhdGEgPSBuZXcgX19udW1wdW5jdF9jYWNoZTxjaGFyPjsKLSsKLSsgICAgICBpZiAoIV9fY2xvYykKLSsJewotKwkgIC8vICJDIiBsb2NhbGUKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZyA9ICIiOwotKwkgIF9NX2RhdGEtPl9NX2dyb3VwaW5nX3NpemUgPSAwOwotKwkgIF9NX2RhdGEtPl9NX3VzZV9ncm91cGluZyA9IGZhbHNlOwotKwotKwkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSAnLic7Ci0rCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9ICcsJzsKLSsKLSsJICBmb3IgKHNpemVfdCBfX2kgPSAwOyBfX2kgPCBfX251bV9iYXNlOjpfU19vZW5kOyArK19faSkKLSsJICAgIF9NX2RhdGEtPl9NX2F0b21zX291dFtfX2ldID0gX19udW1fYmFzZTo6X1NfYXRvbXNfb3V0W19faV07Ci0rCi0rCSAgZm9yIChzaXplX3QgX19qID0gMDsgX19qIDwgX19udW1fYmFzZTo6X1NfaWVuZDsgKytfX2opCi0rCSAgICBfTV9kYXRhLT5fTV9hdG9tc19pbltfX2pdID0gX19udW1fYmFzZTo6X1NfYXRvbXNfaW5bX19qXTsKLSsJfQotKyAgICAgIGVsc2UKLSsJewotKwkgIC8vIE5hbWVkIGxvY2FsZS4KLSsJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gKihfX25sX2xhbmdpbmZvX2woREVDSU1BTF9QT0lOVCwKLSsJCQkJCQkJX19jbG9jKSk7Ci0rCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9ICooX19ubF9sYW5naW5mb19sKFRIT1VTQU5EU19TRVAsCi0rCQkJCQkJCV9fY2xvYykpOwotKwotKwkgIC8vIENoZWNrIGZvciBOVUxMLCB3aGljaCBpbXBsaWVzIG5vIGdyb3VwaW5nLgotKwkgIGlmIChfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID09ICdcMCcpCi0rCSAgICBfTV9kYXRhLT5fTV9ncm91cGluZyA9ICIiOwotKwkgIGVsc2UKLSsJICAgIF9NX2RhdGEtPl9NX2dyb3VwaW5nID0gX19ubF9sYW5naW5mb19sKEdST1VQSU5HLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2dyb3VwaW5nX3NpemUgPSBzdHJsZW4oX01fZGF0YS0+X01fZ3JvdXBpbmcpOwotKwl9Ci0rCi0rICAgICAgLy8gTkI6IFRoZXJlIGlzIG5vIHdheSB0byBleHRhY3QgdGhpcyBpbmZvIGZyb20gcG9zaXggbG9jYWxlcy4KLSsgICAgICAvLyBfTV90cnVlbmFtZSA9IF9fbmxfbGFuZ2luZm9fbChZRVNTVFIsIF9fY2xvYyk7Ci0rICAgICAgX01fZGF0YS0+X01fdHJ1ZW5hbWUgPSAidHJ1ZSI7Ci0rICAgICAgX01fZGF0YS0+X01fdHJ1ZW5hbWVfc2l6ZSA9IDQ7Ci0rICAgICAgLy8gX01fZmFsc2VuYW1lID0gX19ubF9sYW5naW5mb19sKE5PU1RSLCBfX2Nsb2MpOwotKyAgICAgIF9NX2RhdGEtPl9NX2ZhbHNlbmFtZSA9ICJmYWxzZSI7Ci0rICAgICAgX01fZGF0YS0+X01fZmFsc2VuYW1lX3NpemUgPSA1OwotKyAgICB9Ci0rCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIG51bXB1bmN0PGNoYXI+Ojp+bnVtcHVuY3QoKQotKyAgICB7IGRlbGV0ZSBfTV9kYXRhOyB9Ci0rCi0rI2lmZGVmIF9HTElCQ1hYX1VTRV9XQ0hBUl9UCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIHZvaWQKLSsgICAgbnVtcHVuY3Q8d2NoYXJfdD46Ol9NX2luaXRpYWxpemVfbnVtcHVuY3QoX19jX2xvY2FsZSBfX2Nsb2MpCi0rICAgIHsKLSsgICAgICBpZiAoIV9NX2RhdGEpCi0rCV9NX2RhdGEgPSBuZXcgX19udW1wdW5jdF9jYWNoZTx3Y2hhcl90PjsKLSsKLSsgICAgICBpZiAoIV9fY2xvYykKLSsJewotKwkgIC8vICJDIiBsb2NhbGUKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZyA9ICIiOwotKwkgIF9NX2RhdGEtPl9NX2dyb3VwaW5nX3NpemUgPSAwOwotKwkgIF9NX2RhdGEtPl9NX3VzZV9ncm91cGluZyA9IGZhbHNlOwotKwotKwkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSBMJy4nOwotKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSBMJywnOwotKwotKwkgIC8vIFVzZSBjdHlwZTo6d2lkZW4gY29kZSB3aXRob3V0IHRoZSBmYWNldC4uLgotKwkgIGZvciAoc2l6ZV90IF9faSA9IDA7IF9faSA8IF9fbnVtX2Jhc2U6Ol9TX29lbmQ7ICsrX19pKQotKwkgICAgX01fZGF0YS0+X01fYXRvbXNfb3V0W19faV0gPQotKwkgICAgICBzdGF0aWNfY2FzdDx3Y2hhcl90PihfX251bV9iYXNlOjpfU19hdG9tc19vdXRbX19pXSk7Ci0rCi0rCSAgZm9yIChzaXplX3QgX19qID0gMDsgX19qIDwgX19udW1fYmFzZTo6X1NfaWVuZDsgKytfX2opCi0rCSAgICBfTV9kYXRhLT5fTV9hdG9tc19pbltfX2pdID0KLSsJICAgICAgc3RhdGljX2Nhc3Q8d2NoYXJfdD4oX19udW1fYmFzZTo6X1NfYXRvbXNfaW5bX19qXSk7Ci0rCX0KLSsgICAgICBlbHNlCi0rCXsKLSsJICAvLyBOYW1lZCBsb2NhbGUuCi0rCSAgLy8gTkI6IEluIHRoZSBHTlUgbW9kZWwgd2NoYXJfdCBpcyBhbHdheXMgMzIgYml0IHdpZGUuCi0rCSAgdW5pb24geyBjaGFyICpfX3M7IHdjaGFyX3QgX193OyB9IF9fdTsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9OVU1FUklDX0RFQ0lNQUxfUE9JTlRfV0MsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IF9fdS5fX3c7Ci0rCi0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfTlVNRVJJQ19USE9VU0FORFNfU0VQX1dDLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSBfX3UuX193OwotKwotKwkgIGlmIChfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID09IEwnXDAnKQotKwkgICAgX01fZGF0YS0+X01fZ3JvdXBpbmcgPSAiIjsKLSsJICBlbHNlCi0rCSAgICBfTV9kYXRhLT5fTV9ncm91cGluZyA9IF9fbmxfbGFuZ2luZm9fbChHUk9VUElORywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZ19zaXplID0gc3RybGVuKF9NX2RhdGEtPl9NX2dyb3VwaW5nKTsKLSsJfQotKwotKyAgICAgIC8vIE5COiBUaGVyZSBpcyBubyB3YXkgdG8gZXh0YWN0IHRoaXMgaW5mbyBmcm9tIHBvc2l4IGxvY2FsZXMuCi0rICAgICAgLy8gX01fdHJ1ZW5hbWUgPSBfX25sX2xhbmdpbmZvX2woWUVTU1RSLCBfX2Nsb2MpOwotKyAgICAgIF9NX2RhdGEtPl9NX3RydWVuYW1lID0gTCJ0cnVlIjsKLSsgICAgICBfTV9kYXRhLT5fTV90cnVlbmFtZV9zaXplID0gNDsKLSsgICAgICAvLyBfTV9mYWxzZW5hbWUgPSBfX25sX2xhbmdpbmZvX2woTk9TVFIsIF9fY2xvYyk7Ci0rICAgICAgX01fZGF0YS0+X01fZmFsc2VuYW1lID0gTCJmYWxzZSI7Ci0rICAgICAgX01fZGF0YS0+X01fZmFsc2VuYW1lX3NpemUgPSA1OwotKyAgICB9Ci0rCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIG51bXB1bmN0PHdjaGFyX3Q+Ojp+bnVtcHVuY3QoKQotKyAgICB7IGRlbGV0ZSBfTV9kYXRhOyB9Ci0rICNlbmRpZgotK30KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmUwNzA3ZDcKLS0tLSAvZGV2L251bGwKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuY2MKLUBAIC0wLDAgKzEsNDA2IEBACi0rLy8gc3RkOjp0aW1lX2dldCwgc3RkOjp0aW1lX3B1dCBpbXBsZW1lbnRhdGlvbiwgR05VIHZlcnNpb24gLSotIEMrKyAtKi0KLSsKLSsvLyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLy8KLSsvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlCi0rLy8gc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlCi0rLy8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLSsvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsvLyBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsvLyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKy8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi0rLy8gd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKy8vIFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKy8vIFVTQS4KLSsKLSsvLyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIGZyZWUgc29mdHdhcmUKLSsvLyBsaWJyYXJ5IHdpdGhvdXQgcmVzdHJpY3Rpb24uICBTcGVjaWZpY2FsbHksIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlCi0rLy8gdGVtcGxhdGVzIG9yIHVzZSBtYWNyb3Mgb3IgaW5saW5lIGZ1bmN0aW9ucyBmcm9tIHRoaXMgZmlsZSwgb3IgeW91IGNvbXBpbGUKLSsvLyB0aGlzIGZpbGUgYW5kIGxpbmsgaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuIGV4ZWN1dGFibGUsIHRoaXMKLSsvLyBmaWxlIGRvZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoaXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIKLSsvLyBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCi0rCi0rLy8KLSsvLyBJU08gQysrIDE0ODgyOiAyMi4yLjUuMS4yIC0gdGltZV9nZXQgdmlydHVhbCBmdW5jdGlvbnMKLSsvLyBJU08gQysrIDE0ODgyOiAyMi4yLjUuMy4yIC0gdGltZV9wdXQgdmlydHVhbCBmdW5jdGlvbnMKLSsvLwotKwotKy8vIFdyaXR0ZW4gYnkgQmVuamFtaW4gS29zbmlrIDxia296QHJlZGhhdC5jb20+Ci0rCi0rI2luY2x1ZGUgPGxvY2FsZT4KLSsjaW5jbHVkZSA8Yml0cy9jKytsb2NhbGVfaW50ZXJuYWwuaD4KLSsKLSsjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KLSsjd2FybmluZyB0YWlsb3IgZm9yIHN0dWIgbG9jYWxlIHN1cHBvcnQKLSsjZW5kaWYKLSsjaWZuZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsjZGVmaW5lIF9fbmxfbGFuZ2luZm9fbChOLCBMKSAgICAgICAgIG5sX2xhbmdpbmZvKChOKSkKLSsjZW5kaWYKLSsKLStuYW1lc3BhY2Ugc3RkCi0rewotKyAgdGVtcGxhdGU8PgotKyAgICB2b2lkCi0rICAgIF9fdGltZXB1bmN0PGNoYXI+OjoKLSsgICAgX01fcHV0KGNoYXIqIF9fcywgc2l6ZV90IF9fbWF4bGVuLCBjb25zdCBjaGFyKiBfX2Zvcm1hdCwKLSsJICAgY29uc3QgdG0qIF9fdG0pIGNvbnN0Ci0rICAgIHsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICAgIGNvbnN0IHNpemVfdCBfX2xlbiA9IF9fc3RyZnRpbWVfbChfX3MsIF9fbWF4bGVuLCBfX2Zvcm1hdCwgX190bSwKLSsJCQkJCV9NX2NfbG9jYWxlX3RpbWVwdW5jdCk7Ci0rI2Vsc2UKLSsgICAgICBjaGFyKiBfX29sZCA9IHN0cmR1cChzZXRsb2NhbGUoTENfQUxMLCBOVUxMKSk7Ci0rICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX01fbmFtZV90aW1lcHVuY3QpOwotKyAgICAgIGNvbnN0IHNpemVfdCBfX2xlbiA9IHN0cmZ0aW1lKF9fcywgX19tYXhsZW4sIF9fZm9ybWF0LCBfX3RtKTsKLSsgICAgICBzZXRsb2NhbGUoTENfQUxMLCBfX29sZCk7Ci0rICAgICAgZnJlZShfX29sZCk7Ci0rI2VuZGlmCi0rICAgICAgLy8gTWFrZSBzdXJlIF9fcyBpcyBudWxsIHRlcm1pbmF0ZWQuCi0rICAgICAgaWYgKF9fbGVuID09IDApCi0rCV9fc1swXSA9ICdcMCc7Ci0rICAgIH0KLSsKLSsgIHRlbXBsYXRlPD4KLSsgICAgdm9pZAotKyAgICBfX3RpbWVwdW5jdDxjaGFyPjo6X01faW5pdGlhbGl6ZV90aW1lcHVuY3QoX19jX2xvY2FsZSBfX2Nsb2MpCi0rICAgIHsKLSsgICAgICBpZiAoIV9NX2RhdGEpCi0rCV9NX2RhdGEgPSBuZXcgX190aW1lcHVuY3RfY2FjaGU8Y2hhcj47Ci0rCi0rICAgICAgaWYgKCFfX2Nsb2MpCi0rCXsKLSsJICAvLyAiQyIgbG9jYWxlCi0rCSAgX01fY19sb2NhbGVfdGltZXB1bmN0ID0gX1NfZ2V0X2NfbG9jYWxlKCk7Ci0rCi0rCSAgX01fZGF0YS0+X01fZGF0ZV9mb3JtYXQgPSAiJW0vJWQvJXkiOwotKwkgIF9NX2RhdGEtPl9NX2RhdGVfZXJhX2Zvcm1hdCA9ICIlbS8lZC8leSI7Ci0rCSAgX01fZGF0YS0+X01fdGltZV9mb3JtYXQgPSAiJUg6JU06JVMiOwotKwkgIF9NX2RhdGEtPl9NX3RpbWVfZXJhX2Zvcm1hdCA9ICIlSDolTTolUyI7Ci0rCSAgX01fZGF0YS0+X01fZGF0ZV90aW1lX2Zvcm1hdCA9ICIiOwotKwkgIF9NX2RhdGEtPl9NX2RhdGVfdGltZV9lcmFfZm9ybWF0ID0gIiI7Ci0rCSAgX01fZGF0YS0+X01fYW0gPSAiQU0iOwotKwkgIF9NX2RhdGEtPl9NX3BtID0gIlBNIjsKLSsJICBfTV9kYXRhLT5fTV9hbV9wbV9mb3JtYXQgPSAiIjsKLSsKLSsJICAvLyBEYXkgbmFtZXMsIHN0YXJ0aW5nIHdpdGggIkMiJ3MgU3VuZGF5LgotKwkgIF9NX2RhdGEtPl9NX2RheTEgPSAiU3VuZGF5IjsKLSsJICBfTV9kYXRhLT5fTV9kYXkyID0gIk1vbmRheSI7Ci0rCSAgX01fZGF0YS0+X01fZGF5MyA9ICJUdWVzZGF5IjsKLSsJICBfTV9kYXRhLT5fTV9kYXk0ID0gIldlZG5lc2RheSI7Ci0rCSAgX01fZGF0YS0+X01fZGF5NSA9ICJUaHVyc2RheSI7Ci0rCSAgX01fZGF0YS0+X01fZGF5NiA9ICJGcmlkYXkiOwotKwkgIF9NX2RhdGEtPl9NX2RheTcgPSAiU2F0dXJkYXkiOwotKwotKwkgIC8vIEFiYnJldmlhdGVkIGRheSBuYW1lcywgc3RhcnRpbmcgd2l0aCAiQyIncyBTdW4uCi0rCSAgX01fZGF0YS0+X01fYWRheTEgPSAiU3VuIjsKLSsJICBfTV9kYXRhLT5fTV9hZGF5MiA9ICJNb24iOwotKwkgIF9NX2RhdGEtPl9NX2FkYXkzID0gIlR1ZSI7Ci0rCSAgX01fZGF0YS0+X01fYWRheTQgPSAiV2VkIjsKLSsJICBfTV9kYXRhLT5fTV9hZGF5NSA9ICJUaHUiOwotKwkgIF9NX2RhdGEtPl9NX2FkYXk2ID0gIkZyaSI7Ci0rCSAgX01fZGF0YS0+X01fYWRheTcgPSAiU2F0IjsKLSsKLSsJICAvLyBNb250aCBuYW1lcywgc3RhcnRpbmcgd2l0aCAiQyIncyBKYW51YXJ5LgotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDEgPSAiSmFudWFyeSI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwMiA9ICJGZWJydWFyeSI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwMyA9ICJNYXJjaCI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwNCA9ICJBcHJpbCI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwNSA9ICJNYXkiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDYgPSAiSnVuZSI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwNyA9ICJKdWx5IjsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA4ID0gIkF1Z3VzdCI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwOSA9ICJTZXB0ZW1iZXIiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMTAgPSAiT2N0b2JlciI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgxMSA9ICJOb3ZlbWJlciI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgxMiA9ICJEZWNlbWJlciI7Ci0rCi0rCSAgLy8gQWJicmV2aWF0ZWQgbW9udGggbmFtZXMsIHN0YXJ0aW5nIHdpdGggIkMiJ3MgSmFuLgotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDAxID0gIkphbiI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDIgPSAiRmViIjsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwMyA9ICJNYXIiOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA0ID0gIkFwciI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDUgPSAiTWF5IjsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwNiA9ICJKdW4iOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA3ID0gIkp1bCI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDggPSAiQXVnIjsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwOSA9ICJTZXAiOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDEwID0gIk9jdCI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMTEgPSAiTm92IjsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgxMiA9ICJEZWMiOwotKwl9Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgX01fY19sb2NhbGVfdGltZXB1bmN0ID0gX1NfY2xvbmVfY19sb2NhbGUoX19jbG9jKTsKLSsKLSsJICBfTV9kYXRhLT5fTV9kYXRlX2Zvcm1hdCA9IF9fbmxfbGFuZ2luZm9fbChEX0ZNVCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kYXRlX2VyYV9mb3JtYXQgPSBfX25sX2xhbmdpbmZvX2woRVJBX0RfRk1ULCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX3RpbWVfZm9ybWF0ID0gX19ubF9sYW5naW5mb19sKFRfRk1ULCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX3RpbWVfZXJhX2Zvcm1hdCA9IF9fbmxfbGFuZ2luZm9fbChFUkFfVF9GTVQsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZGF0ZV90aW1lX2Zvcm1hdCA9IF9fbmxfbGFuZ2luZm9fbChEX1RfRk1ULCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RhdGVfdGltZV9lcmFfZm9ybWF0ID0gX19ubF9sYW5naW5mb19sKEVSQV9EX1RfRk1ULAotKwkJCQkJCQkgICAgIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW0gPSBfX25sX2xhbmdpbmZvX2woQU1fU1RSLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX3BtID0gX19ubF9sYW5naW5mb19sKFBNX1NUUiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbV9wbV9mb3JtYXQgPSBfX25sX2xhbmdpbmZvX2woVF9GTVRfQU1QTSwgX19jbG9jKTsKLSsKLSsJICAvLyBEYXkgbmFtZXMsIHN0YXJ0aW5nIHdpdGggIkMiJ3MgU3VuZGF5LgotKwkgIF9NX2RhdGEtPl9NX2RheTEgPSBfX25sX2xhbmdpbmZvX2woREFZXzEsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZGF5MiA9IF9fbmxfbGFuZ2luZm9fbChEQVlfMiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kYXkzID0gX19ubF9sYW5naW5mb19sKERBWV8zLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RheTQgPSBfX25sX2xhbmdpbmZvX2woREFZXzQsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZGF5NSA9IF9fbmxfbGFuZ2luZm9fbChEQVlfNSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kYXk2ID0gX19ubF9sYW5naW5mb19sKERBWV82LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RheTcgPSBfX25sX2xhbmdpbmZvX2woREFZXzcsIF9fY2xvYyk7Ci0rCi0rCSAgLy8gQWJicmV2aWF0ZWQgZGF5IG5hbWVzLCBzdGFydGluZyB3aXRoICJDIidzIFN1bi4KLSsJICBfTV9kYXRhLT5fTV9hZGF5MSA9IF9fbmxfbGFuZ2luZm9fbChBQkRBWV8xLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2FkYXkyID0gX19ubF9sYW5naW5mb19sKEFCREFZXzIsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYWRheTMgPSBfX25sX2xhbmdpbmZvX2woQUJEQVlfMywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hZGF5NCA9IF9fbmxfbGFuZ2luZm9fbChBQkRBWV80LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2FkYXk1ID0gX19ubF9sYW5naW5mb19sKEFCREFZXzUsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYWRheTYgPSBfX25sX2xhbmdpbmZvX2woQUJEQVlfNiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hZGF5NyA9IF9fbmxfbGFuZ2luZm9fbChBQkRBWV83LCBfX2Nsb2MpOwotKwotKwkgIC8vIE1vbnRoIG5hbWVzLCBzdGFydGluZyB3aXRoICJDIidzIEphbnVhcnkuCi0rCSAgX01fZGF0YS0+X01fbW9udGgwMSA9IF9fbmxfbGFuZ2luZm9fbChNT05fMSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9tb250aDAyID0gX19ubF9sYW5naW5mb19sKE1PTl8yLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDMgPSBfX25sX2xhbmdpbmZvX2woTU9OXzMsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwNCA9IF9fbmxfbGFuZ2luZm9fbChNT05fNCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA1ID0gX19ubF9sYW5naW5mb19sKE1PTl81LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDYgPSBfX25sX2xhbmdpbmZvX2woTU9OXzYsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwNyA9IF9fbmxfbGFuZ2luZm9fbChNT05fNywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA4ID0gX19ubF9sYW5naW5mb19sKE1PTl84LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDkgPSBfX25sX2xhbmdpbmZvX2woTU9OXzksIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgxMCA9IF9fbmxfbGFuZ2luZm9fbChNT05fMTAsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgxMSA9IF9fbmxfbGFuZ2luZm9fbChNT05fMTEsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgxMiA9IF9fbmxfbGFuZ2luZm9fbChNT05fMTIsIF9fY2xvYyk7Ci0rCi0rCSAgLy8gQWJicmV2aWF0ZWQgbW9udGggbmFtZXMsIHN0YXJ0aW5nIHdpdGggIkMiJ3MgSmFuLgotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDAxID0gX19ubF9sYW5naW5mb19sKEFCTU9OXzEsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDIgPSBfX25sX2xhbmdpbmZvX2woQUJNT05fMiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwMyA9IF9fbmxfbGFuZ2luZm9fbChBQk1PTl8zLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA0ID0gX19ubF9sYW5naW5mb19sKEFCTU9OXzQsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDUgPSBfX25sX2xhbmdpbmZvX2woQUJNT05fNSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwNiA9IF9fbmxfbGFuZ2luZm9fbChBQk1PTl82LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA3ID0gX19ubF9sYW5naW5mb19sKEFCTU9OXzcsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDggPSBfX25sX2xhbmdpbmZvX2woQUJNT05fOCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwOSA9IF9fbmxfbGFuZ2luZm9fbChBQk1PTl85LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDEwID0gX19ubF9sYW5naW5mb19sKEFCTU9OXzEwLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDExID0gX19ubF9sYW5naW5mb19sKEFCTU9OXzExLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDEyID0gX19ubF9sYW5naW5mb19sKEFCTU9OXzEyLCBfX2Nsb2MpOwotKwl9Ci0rICAgIH0KLSsKLSsjaWZkZWYgX0dMSUJDWFhfVVNFX1dDSEFSX1QKLSsgIHRlbXBsYXRlPD4KLSsgICAgdm9pZAotKyAgICBfX3RpbWVwdW5jdDx3Y2hhcl90Pjo6Ci0rICAgIF9NX3B1dCh3Y2hhcl90KiBfX3MsIHNpemVfdCBfX21heGxlbiwgY29uc3Qgd2NoYXJfdCogX19mb3JtYXQsCi0rCSAgIGNvbnN0IHRtKiBfX3RtKSBjb25zdAotKyAgICB7Ci0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgICBfX3djc2Z0aW1lX2woX19zLCBfX21heGxlbiwgX19mb3JtYXQsIF9fdG0sIF9NX2NfbG9jYWxlX3RpbWVwdW5jdCk7Ci0rICAgICAgY29uc3Qgc2l6ZV90IF9fbGVuID0gX193Y3NmdGltZV9sKF9fcywgX19tYXhsZW4sIF9fZm9ybWF0LCBfX3RtLAotKwkJCQkJX01fY19sb2NhbGVfdGltZXB1bmN0KTsKLSsjZWxzZQotKyAgICAgIGNoYXIqIF9fb2xkID0gc3RyZHVwKHNldGxvY2FsZShMQ19BTEwsIE5VTEwpKTsKLSsgICAgICBzZXRsb2NhbGUoTENfQUxMLCBfTV9uYW1lX3RpbWVwdW5jdCk7Ci0rICAgICAgY29uc3Qgc2l6ZV90IF9fbGVuID0gd2NzZnRpbWUoX19zLCBfX21heGxlbiwgX19mb3JtYXQsIF9fdG0pOwotKyAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9fb2xkKTsKLSsgICAgICBmcmVlKF9fb2xkKTsKLSsjZW5kaWYKLSsgICAgICAvLyBNYWtlIHN1cmUgX19zIGlzIG51bGwgdGVybWluYXRlZC4KLSsgICAgICBpZiAoX19sZW4gPT0gMCkKLSsJX19zWzBdID0gTCdcMCc7Ci0rICAgIH0KLSsKLSsgIHRlbXBsYXRlPD4KLSsgICAgdm9pZAotKyAgICBfX3RpbWVwdW5jdDx3Y2hhcl90Pjo6X01faW5pdGlhbGl6ZV90aW1lcHVuY3QoX19jX2xvY2FsZSBfX2Nsb2MpCi0rICAgIHsKLSsgICAgICBpZiAoIV9NX2RhdGEpCi0rCV9NX2RhdGEgPSBuZXcgX190aW1lcHVuY3RfY2FjaGU8d2NoYXJfdD47Ci0rCi0rI3dhcm5pbmcgd2lkZSB0aW1lIHN0dWZmCi0rLy8gICAgICAgaWYgKCFfX2Nsb2MpCi0rCXsKLSsJICAvLyAiQyIgbG9jYWxlCi0rCSAgX01fY19sb2NhbGVfdGltZXB1bmN0ID0gX1NfZ2V0X2NfbG9jYWxlKCk7Ci0rCi0rCSAgX01fZGF0YS0+X01fZGF0ZV9mb3JtYXQgPSBMIiVtLyVkLyV5IjsKLSsJICBfTV9kYXRhLT5fTV9kYXRlX2VyYV9mb3JtYXQgPSBMIiVtLyVkLyV5IjsKLSsJICBfTV9kYXRhLT5fTV90aW1lX2Zvcm1hdCA9IEwiJUg6JU06JVMiOwotKwkgIF9NX2RhdGEtPl9NX3RpbWVfZXJhX2Zvcm1hdCA9IEwiJUg6JU06JVMiOwotKwkgIF9NX2RhdGEtPl9NX2RhdGVfdGltZV9mb3JtYXQgPSBMIiI7Ci0rCSAgX01fZGF0YS0+X01fZGF0ZV90aW1lX2VyYV9mb3JtYXQgPSBMIiI7Ci0rCSAgX01fZGF0YS0+X01fYW0gPSBMIkFNIjsKLSsJICBfTV9kYXRhLT5fTV9wbSA9IEwiUE0iOwotKwkgIF9NX2RhdGEtPl9NX2FtX3BtX2Zvcm1hdCA9IEwiIjsKLSsKLSsJICAvLyBEYXkgbmFtZXMsIHN0YXJ0aW5nIHdpdGggIkMiJ3MgU3VuZGF5LgotKwkgIF9NX2RhdGEtPl9NX2RheTEgPSBMIlN1bmRheSI7Ci0rCSAgX01fZGF0YS0+X01fZGF5MiA9IEwiTW9uZGF5IjsKLSsJICBfTV9kYXRhLT5fTV9kYXkzID0gTCJUdWVzZGF5IjsKLSsJICBfTV9kYXRhLT5fTV9kYXk0ID0gTCJXZWRuZXNkYXkiOwotKwkgIF9NX2RhdGEtPl9NX2RheTUgPSBMIlRodXJzZGF5IjsKLSsJICBfTV9kYXRhLT5fTV9kYXk2ID0gTCJGcmlkYXkiOwotKwkgIF9NX2RhdGEtPl9NX2RheTcgPSBMIlNhdHVyZGF5IjsKLSsKLSsJICAvLyBBYmJyZXZpYXRlZCBkYXkgbmFtZXMsIHN0YXJ0aW5nIHdpdGggIkMiJ3MgU3VuLgotKwkgIF9NX2RhdGEtPl9NX2FkYXkxID0gTCJTdW4iOwotKwkgIF9NX2RhdGEtPl9NX2FkYXkyID0gTCJNb24iOwotKwkgIF9NX2RhdGEtPl9NX2FkYXkzID0gTCJUdWUiOwotKwkgIF9NX2RhdGEtPl9NX2FkYXk0ID0gTCJXZWQiOwotKwkgIF9NX2RhdGEtPl9NX2FkYXk1ID0gTCJUaHUiOwotKwkgIF9NX2RhdGEtPl9NX2FkYXk2ID0gTCJGcmkiOwotKwkgIF9NX2RhdGEtPl9NX2FkYXk3ID0gTCJTYXQiOwotKwotKwkgIC8vIE1vbnRoIG5hbWVzLCBzdGFydGluZyB3aXRoICJDIidzIEphbnVhcnkuCi0rCSAgX01fZGF0YS0+X01fbW9udGgwMSA9IEwiSmFudWFyeSI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwMiA9IEwiRmVicnVhcnkiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDMgPSBMIk1hcmNoIjsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA0ID0gTCJBcHJpbCI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwNSA9IEwiTWF5IjsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA2ID0gTCJKdW5lIjsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA3ID0gTCJKdWx5IjsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA4ID0gTCJBdWd1c3QiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDkgPSBMIlNlcHRlbWJlciI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgxMCA9IEwiT2N0b2JlciI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgxMSA9IEwiTm92ZW1iZXIiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMTIgPSBMIkRlY2VtYmVyIjsKLSsKLSsJICAvLyBBYmJyZXZpYXRlZCBtb250aCBuYW1lcywgc3RhcnRpbmcgd2l0aCAiQyIncyBKYW4uCi0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDEgPSBMIkphbiI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDIgPSBMIkZlYiI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDMgPSBMIk1hciI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDQgPSBMIkFwciI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDUgPSBMIk1heSI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDYgPSBMIkp1biI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDcgPSBMIkp1bCI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDggPSBMIkF1ZyI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDkgPSBMIlNlcCI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMTAgPSBMIk9jdCI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMTEgPSBMIk5vdiI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMTIgPSBMIkRlYyI7Ci0rCX0KLSsjaWYgMAotKyAgICAgIGVsc2UKLSsJewotKwkgIF9NX2NfbG9jYWxlX3RpbWVwdW5jdCA9IF9TX2Nsb25lX2NfbG9jYWxlKF9fY2xvYyk7Ci0rCi0rCSAgdW5pb24geyBjaGFyICpfX3M7IHdjaGFyX3QgKl9fdzsgfSBfX3U7Ci0rCi0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0RfRk1ULCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RhdGVfZm9ybWF0ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XRVJBX0RfRk1ULCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RhdGVfZXJhX2Zvcm1hdCA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV1RfRk1ULCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX3RpbWVfZm9ybWF0ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XRVJBX1RfRk1ULCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX3RpbWVfZXJhX2Zvcm1hdCA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0RfVF9GTVQsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZGF0ZV90aW1lX2Zvcm1hdCA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0VSQV9EX1RfRk1ULCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RhdGVfdGltZV9lcmFfZm9ybWF0ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQU1fU1RSLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2FtID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XUE1fU1RSLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX3BtID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XVF9GTVRfQU1QTSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbV9wbV9mb3JtYXQgPSBfX3UuX193OwotKwotKwkgIC8vIERheSBuYW1lcywgc3RhcnRpbmcgd2l0aCAiQyIncyBTdW5kYXkuCi0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0RBWV8xLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RheTEgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dEQVlfMiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kYXkyID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XREFZXzMsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZGF5MyA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0RBWV80LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RheTQgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dEQVlfNSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kYXk1ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XREFZXzYsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZGF5NiA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0RBWV83LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RheTcgPSBfX3UuX193OwotKwotKwkgIC8vIEFiYnJldmlhdGVkIGRheSBuYW1lcywgc3RhcnRpbmcgd2l0aCAiQyIncyBTdW4uCi0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCREFZXzEsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYWRheTEgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQkRBWV8yLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2FkYXkyID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQUJEQVlfMywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hZGF5MyA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCREFZXzQsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYWRheTQgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQkRBWV81LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2FkYXk1ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQUJEQVlfNiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hZGF5NiA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCREFZXzcsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYWRheTcgPSBfX3UuX193OwotKwotKwkgIC8vIE1vbnRoIG5hbWVzLCBzdGFydGluZyB3aXRoICJDIidzIEphbnVhcnkuCi0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV01PTl8xLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDEgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dNT05fMiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9tb250aDAyID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XTU9OXzMsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwMyA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV01PTl80LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDQgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dNT05fNSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA1ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XTU9OXzYsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwNiA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV01PTl83LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDcgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dNT05fOCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA4ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XTU9OXzksIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwOSA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV01PTl8xMCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9tb250aDEwID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XTU9OXzExLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMTEgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dNT05fMTIsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgxMiA9IF9fdS5fX3c7Ci0rCi0rCSAgLy8gQWJicmV2aWF0ZWQgbW9udGggbmFtZXMsIHN0YXJ0aW5nIHdpdGggIkMiJ3MgSmFuLgotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQk1PTl8xLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDAxID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQUJNT05fMiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwMiA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCTU9OXzMsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDMgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQk1PTl80LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA0ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQUJNT05fNSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwNSA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCTU9OXzYsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDYgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQk1PTl83LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA3ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQUJNT05fOCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwOCA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCTU9OXzksIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDkgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQk1PTl8xMCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgxMCA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCTU9OXzExLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDExID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQUJNT05fMTIsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMTIgPSBfX3UuX193OwotKwl9Ci0rI2VuZGlmIC8vIDAKLSsgICAgfQotKyNlbmRpZgotK30KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmggYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5iYThlODU4Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmgKLUBAIC0wLDAgKzEsNjggQEAKLSsvLyBzdGQ6OnRpbWVfZ2V0LCBzdGQ6OnRpbWVfcHV0IGltcGxlbWVudGF0aW9uLCBHTlUgdmVyc2lvbiAtKi0gQysrIC0qLQotKwotKy8vIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvLwotKy8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgSVNPIEMrKyBMaWJyYXJ5LiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUKLSsvLyBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUKLSsvLyB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotKy8vIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKy8vIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKy8vIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKy8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKy8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSsvLyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rLy8gU29mdHdhcmUgRm91bmRhdGlvbiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rLy8gVVNBLgotKwotKy8vIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHlvdSBtYXkgdXNlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgZnJlZSBzb2Z0d2FyZQotKy8vIGxpYnJhcnkgd2l0aG91dCByZXN0cmljdGlvbi4gIFNwZWNpZmljYWxseSwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUKLSsvLyB0ZW1wbGF0ZXMgb3IgdXNlIG1hY3JvcyBvciBpbmxpbmUgZnVuY3Rpb25zIGZyb20gdGhpcyBmaWxlLCBvciB5b3UgY29tcGlsZQotKy8vIHRoaXMgZmlsZSBhbmQgbGluayBpdCB3aXRoIG90aGVyIGZpbGVzIHRvIHByb2R1Y2UgYW4gZXhlY3V0YWJsZSwgdGhpcwotKy8vIGZpbGUgZG9lcyBub3QgYnkgaXRzZWxmIGNhdXNlIHRoZSByZXN1bHRpbmcgZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhpcyBleGNlcHRpb24gZG9lcyBub3QgaG93ZXZlcgotKy8vIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSBleGVjdXRhYmxlIGZpbGUgbWlnaHQgYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KLSsKLSsvLwotKy8vIElTTyBDKysgMTQ4ODI6IDIyLjIuNS4xLjIgLSB0aW1lX2dldCBmdW5jdGlvbnMKLSsvLyBJU08gQysrIDE0ODgyOiAyMi4yLjUuMy4yIC0gdGltZV9wdXQgZnVuY3Rpb25zCi0rLy8KLSsKLSsvLyBXcml0dGVuIGJ5IEJlbmphbWluIEtvc25payA8YmtvekByZWRoYXQuY29tPgotKwotKyAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgotKyAgICBfX3RpbWVwdW5jdDxfQ2hhclQ+OjpfX3RpbWVwdW5jdChzaXplX3QgX19yZWZzKQotKyAgICA6IGZhY2V0KF9fcmVmcyksIF9NX2RhdGEoTlVMTCksIF9NX2NfbG9jYWxlX3RpbWVwdW5jdChOVUxMKSwKLSsgICAgX01fbmFtZV90aW1lcHVuY3QoX1NfZ2V0X2NfbmFtZSgpKQotKyAgICB7IF9NX2luaXRpYWxpemVfdGltZXB1bmN0KCk7IH0KLSsKLSsgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KLSsgICAgX190aW1lcHVuY3Q8X0NoYXJUPjo6X190aW1lcHVuY3QoX19jYWNoZV90eXBlKiBfX2NhY2hlLCBzaXplX3QgX19yZWZzKQotKyAgICA6IGZhY2V0KF9fcmVmcyksIF9NX2RhdGEoX19jYWNoZSksIF9NX2NfbG9jYWxlX3RpbWVwdW5jdChOVUxMKSwKLSsgICAgX01fbmFtZV90aW1lcHVuY3QoX1NfZ2V0X2NfbmFtZSgpKQotKyAgICB7IF9NX2luaXRpYWxpemVfdGltZXB1bmN0KCk7IH0KLSsKLSsgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KLSsgICAgX190aW1lcHVuY3Q8X0NoYXJUPjo6X190aW1lcHVuY3QoX19jX2xvY2FsZSBfX2Nsb2MsIGNvbnN0IGNoYXIqIF9fcywKLSsJCQkJICAgICBzaXplX3QgX19yZWZzKQotKyAgICA6IGZhY2V0KF9fcmVmcyksIF9NX2RhdGEoTlVMTCksIF9NX2NfbG9jYWxlX3RpbWVwdW5jdChOVUxMKSwKLSsgICAgX01fbmFtZV90aW1lcHVuY3QoX19zKQotKyAgICB7Ci0rICAgICAgY2hhciogX190bXAgPSBuZXcgY2hhcltzdGQ6OnN0cmxlbihfX3MpICsgMV07Ci0rICAgICAgc3RkOjpzdHJjcHkoX190bXAsIF9fcyk7Ci0rICAgICAgX01fbmFtZV90aW1lcHVuY3QgPSBfX3RtcDsKLSsgICAgICBfTV9pbml0aWFsaXplX3RpbWVwdW5jdChfX2Nsb2MpOwotKyAgICB9Ci0rCi0rICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+Ci0rICAgIF9fdGltZXB1bmN0PF9DaGFyVD46On5fX3RpbWVwdW5jdCgpCi0rICAgIHsKLSsgICAgICBpZiAoX01fbmFtZV90aW1lcHVuY3QgIT0gX1NfZ2V0X2NfbmFtZSgpKQotKwlkZWxldGUgW10gX01fbmFtZV90aW1lcHVuY3Q7Ci0rICAgICAgZGVsZXRlIF9NX2RhdGE7Ci0rICAgICAgX1NfZGVzdHJveV9jX2xvY2FsZShfTV9jX2xvY2FsZV90aW1lcHVuY3QpOwotKyAgICB9Ci1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZ3VyZSBiL2xpYnN0ZGMrKy12My9jb25maWd1cmUKLWluZGV4IDhjZDRjNzYuLjIxNzAxMmUgMTAwNzU1Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlndXJlCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlndXJlCi1AQCAtMTU5MTgsNiArMTU5MTgsOSBAQCBmaQotICAgIyBEZWZhdWx0IHRvICJnZW5lcmljIi4KLSAgIGlmIHRlc3QgJGVuYWJsZV9jbG9jYWxlX2ZsYWcgPSBhdXRvOyB0aGVuCi0gICAgIGNhc2UgJHt0YXJnZXRfb3N9IGluCi0rICAgICAgKi11Y2xpYmMqKQotKyAgICAgICAgZW5hYmxlX2Nsb2NhbGVfZmxhZz11Y2xpYmMKLSsgICAgICAgIDs7Ci0gICAgICAgbGludXgqIHwgZ251KiB8IGtmcmVlYnNkKi1nbnUgfCBrbmV0YnNkKi1nbnUpCi0gCWVuYWJsZV9jbG9jYWxlX2ZsYWc9Z251Ci0gCTs7Ci1AQCAtMTYxOTYsNiArMTYxOTksNzggQEAgJGFzX2VjaG8gIm5ld2xpYiIgPiY2OyB9Ci0gICAgICAgQ1RJTUVfQ0M9Y29uZmlnL2xvY2FsZS9nZW5lcmljL3RpbWVfbWVtYmVycy5jYwotICAgICAgIENMT0NBTEVfSU5URVJOQUxfSD1jb25maWcvbG9jYWxlL2dlbmVyaWMvYysrbG9jYWxlX2ludGVybmFsLmgKLSAgICAgICA7OwotKyAgICB1Y2xpYmMpCi0rICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHVjbGliYyIgPiY1Ci0rJGFzX2VjaG8gInVjbGliYyIgPiY2OyB9Ci0rCi0rICAgICAgIyBEZWNsYXJlIGludGVudGlvbiB0byB1c2UgZ2V0dGV4dCwgYW5kIGFkZCBzdXBwb3J0IGZvciBzcGVjaWZpYwotKyAgICAgICMgbGFuZ3VhZ2VzLgotKyAgICAgICMgRm9yIHNvbWUgcmVhc29uLCBBTExfTElOR1VBUyBoYXMgdG8gYmUgYmVmb3JlIEFNLUdOVS1HRVRURVhUCi0rICAgICAgQUxMX0xJTkdVQVM9ImRlIGZyIgotKwotKyAgICAgICMgRG9uJ3QgY2FsbCBBTS1HTlUtR0VUVEVYVCBoZXJlLiBJbnN0ZWFkLCBhc3N1bWUgZ2xpYmMuCi0rICAgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJtc2dmbXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSBtc2dmbXQ7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX2NoZWNrX21zZ2ZtdCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRjaGVja19tc2dmbXQiOyB0aGVuCi0rICBhY19jdl9wcm9nX2NoZWNrX21zZ2ZtdD0iJGNoZWNrX21zZ2ZtdCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotKyAgICBhY19jdl9wcm9nX2NoZWNrX21zZ2ZtdD0ieWVzIgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotKyAgdGVzdCAteiAiJGFjX2N2X3Byb2dfY2hlY2tfbXNnZm10IiAmJiBhY19jdl9wcm9nX2NoZWNrX21zZ2ZtdD0ibm8iCi0rZmkKLStmaQotK2NoZWNrX21zZ2ZtdD0kYWNfY3ZfcHJvZ19jaGVja19tc2dmbXQKLStpZiB0ZXN0IC1uICIkY2hlY2tfbXNnZm10IjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRjaGVja19tc2dmbXQiID4mNQotKyRhc19lY2hvICIkY2hlY2tfbXNnZm10IiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsKLSsgICAgICBpZiB0ZXN0IHgiJGNoZWNrX21zZ2ZtdCIgPSB4InllcyIgJiYgdGVzdCB4IiRlbmFibGVfbmxzIiA9IHgieWVzIjsgdGhlbgotKyAgICAgICAgVVNFX05MUz15ZXMKLSsgICAgICBmaQotKyAgICAgICMgRXhwb3J0IHRoZSBidWlsZCBvYmplY3RzLgotKyAgICAgIGZvciBsaW5nIGluICRBTExfTElOR1VBUzsgZG8gXAotKyAgICAgICAgZ2xpYmN4eF9NT0ZJTEVTPSIkZ2xpYmN4eF9NT0ZJTEVTICRsaW5nLm1vIjsgXAotKyAgICAgICAgZ2xpYmN4eF9QT0ZJTEVTPSIkZ2xpYmN4eF9QT0ZJTEVTICRsaW5nLnBvIjsgXAotKyAgICAgIGRvbmUKLSsKLSsKLSsKLSsgICAgICBDTE9DQUxFX0g9Y29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaAotKyAgICAgIENMT0NBTEVfQ0M9Y29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuY2MKLSsgICAgICBDQ09ERUNWVF9DQz1jb25maWcvbG9jYWxlL3VjbGliYy9jb2RlY3Z0X21lbWJlcnMuY2MKLSsgICAgICBDQ09MTEFURV9DQz1jb25maWcvbG9jYWxlL3VjbGliYy9jb2xsYXRlX21lbWJlcnMuY2MKLSsgICAgICBDQ1RZUEVfQ0M9Y29uZmlnL2xvY2FsZS91Y2xpYmMvY3R5cGVfbWVtYmVycy5jYwotKyAgICAgIENNRVNTQUdFU19IPWNvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaAotKyAgICAgIENNRVNTQUdFU19DQz1jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmNjCi0rICAgICAgQ01PTkVZX0NDPWNvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MKLSsgICAgICBDTlVNRVJJQ19DQz1jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MKLSsgICAgICBDVElNRV9IPWNvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5oCi0rICAgICAgQ1RJTUVfQ0M9Y29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmNjCi0rICAgICAgQ0xPQ0FMRV9JTlRFUk5BTF9IPWNvbmZpZy9sb2NhbGUvdWNsaWJjL2MrK2xvY2FsZV9pbnRlcm5hbC5oCi0rICAgICAgOzsKLSAgIGVzYWMKLSAKLSAgICMgVGhpcyBpcyB3aGVyZSB0aGUgdGVzdHN1aXRlIGxvb2tzIGZvciBsb2NhbGUgY2F0YWxvZ3MsIHVzaW5nIHRoZQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2NfY29tcGF0aWJpbGl0eS93Y2hhci5oIGIvbGlic3RkYysrLXYzL2luY2x1ZGUvY19jb21wYXRpYmlsaXR5L3djaGFyLmgKLWluZGV4IDA2YjVkNDcuLjdkM2Y4MzUgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvaW5jbHVkZS9jX2NvbXBhdGliaWxpdHkvd2NoYXIuaAotKysrIGIvbGlic3RkYysrLXYzL2luY2x1ZGUvY19jb21wYXRpYmlsaXR5L3djaGFyLmgKLUBAIC0xMDEsNyArMTAxLDkgQEAgdXNpbmcgc3RkOjp3bWVtY21wOwotIHVzaW5nIHN0ZDo6d21lbWNweTsKLSB1c2luZyBzdGQ6OndtZW1tb3ZlOwotIHVzaW5nIHN0ZDo6d21lbXNldDsKLSsjaWYgX0dMSUJDWFhfSEFWRV9XQ1NGVElNRQotIHVzaW5nIHN0ZDo6d2NzZnRpbWU7Ci0rI2VuZGlmCi0gCi0gI2lmIF9HTElCQ1hYX1VTRV9DOTkKLSB1c2luZyBzdGQ6Ondjc3RvbGQ7Ci1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2luY2x1ZGUvY19zdGQvY3djaGFyIGIvbGlic3RkYysrLXYzL2luY2x1ZGUvY19zdGQvY3djaGFyCi1pbmRleCBhYTFiMmZhLi40NWM0NjE3IDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2luY2x1ZGUvY19zdGQvY3djaGFyCi0rKysgYi9saWJzdGRjKystdjMvaW5jbHVkZS9jX3N0ZC9jd2NoYXIKLUBAIC0xNzUsNyArMTc1LDkgQEAgX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KLSAgIHVzaW5nIDo6d2NzY29sbDsKLSAgIHVzaW5nIDo6d2NzY3B5OwotICAgdXNpbmcgOjp3Y3Njc3BuOwotKyNpZiBfR0xJQkNYWF9IQVZFX1dDU0ZUSU1FCi0gICB1c2luZyA6Ondjc2Z0aW1lOwotKyNlbmRpZgotICAgdXNpbmcgOjp3Y3NsZW47Ci0gICB1c2luZyA6Ondjc25jYXQ7Ci0gICB1c2luZyA6Ondjc25jbXA7Ci0tLSAKLTIuNi4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAwNS11Y2xpYmMtbG9jYWxlLW5vX194LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDA1LXVjbGliYy1sb2NhbGUtbm9fX3gucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5YTg2YTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDA1LXVjbGliYy1sb2NhbGUtbm9fX3gucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNTcgKzAsMCBAQAotRnJvbSA3MmExYTRhZjNjMTg2MjdmNTlhYTViYTFmNzUzYTg5MDExYjRlNGYwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDg6NDI6MzYgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAwNS80Nl0gdWNsaWJjLWxvY2FsZS1ub19feAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIC4uLi9jb25maWcvbG9jYWxlL3VjbGliYy9jKytsb2NhbGVfaW50ZXJuYWwuaCAgICAgIHwgNDUgKysrKysrKysrKysrKysrKysrKysrKwotIGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5jYyAgICAgIHwgMTQgLS0tLS0tLQotIGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5oICAgICAgIHwgIDEgKwotIC4uLi9jb25maWcvbG9jYWxlL3VjbGliYy9jb2xsYXRlX21lbWJlcnMuY2MgICAgICAgIHwgIDcgLS0tLQotIGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jdHlwZV9tZW1iZXJzLmNjIHwgIDcgLS0tLQotIC4uLi9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmNjICAgICAgIHwgIDcgKy0tLQotIC4uLi9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmggICAgICAgIHwgMTggKysrKy0tLS0tCi0gLi4uL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MgICAgICAgfCAgNCAtLQotIC4uLi9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MgICAgICAgIHwgIDMgLS0KLSBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmNjICB8ICAzIC0tCi0gMTAgZmlsZXMgY2hhbmdlZCwgNTUgaW5zZXJ0aW9ucygrKSwgNTQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvYysrbG9jYWxlX2ludGVybmFsLmggYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvYysrbG9jYWxlX2ludGVybmFsLmgKLWluZGV4IDJhZTNlNGEuLmU3NGZkZGYgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvYysrbG9jYWxlX2ludGVybmFsLmgKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jKytsb2NhbGVfaW50ZXJuYWwuaAotQEAgLTYwLDQgKzYwLDQ5IEBAIGV4dGVybiAiQyIgX190eXBlb2Yod2NzeGZybV9sKSBfX3djc3hmcm1fbDsKLSBleHRlcm4gIkMiIF9fdHlwZW9mKHdjdHlwZV9sKSBfX3djdHlwZV9sOwotICNlbmRpZgotIAotKyMgZGVmaW5lIF9fbmxfbGFuZ2luZm9fbCBubF9sYW5naW5mb19sCi0rIyBkZWZpbmUgX19zdHJjb2xsX2wgc3RyY29sbF9sCi0rIyBkZWZpbmUgX19zdHJmdGltZV9sIHN0cmZ0aW1lX2wKLSsjIGRlZmluZSBfX3N0cnRvZF9sIHN0cnRvZF9sCi0rIyBkZWZpbmUgX19zdHJ0b2ZfbCBzdHJ0b2ZfbAotKyMgZGVmaW5lIF9fc3RydG9sZF9sIHN0cnRvbGRfbAotKyMgZGVmaW5lIF9fc3RyeGZybV9sIHN0cnhmcm1fbAotKyMgZGVmaW5lIF9fbmV3bG9jYWxlIG5ld2xvY2FsZQotKyMgZGVmaW5lIF9fZnJlZWxvY2FsZSBmcmVlbG9jYWxlCi0rIyBkZWZpbmUgX19kdXBsb2NhbGUgZHVwbG9jYWxlCi0rIyBkZWZpbmUgX191c2Vsb2NhbGUgdXNlbG9jYWxlCi0rCi0rIyBpZmRlZiBfR0xJQkNYWF9VU0VfV0NIQVJfVAotKyMgIGRlZmluZSBfX2lzd2N0eXBlX2wgaXN3Y3R5cGVfbAotKyMgIGRlZmluZSBfX3Rvd2xvd2VyX2wgdG93bG93ZXJfbAotKyMgIGRlZmluZSBfX3Rvd3VwcGVyX2wgdG93dXBwZXJfbAotKyMgIGRlZmluZSBfX3djc2NvbGxfbCB3Y3Njb2xsX2wKLSsjICBkZWZpbmUgX193Y3NmdGltZV9sIHdjc2Z0aW1lX2wKLSsjICBkZWZpbmUgX193Y3N4ZnJtX2wgd2NzeGZybV9sCi0rIyAgZGVmaW5lIF9fd2N0eXBlX2wgd2N0eXBlX2wKLSsjIGVuZGlmCi0rCi0rI2Vsc2UKLSsjIGRlZmluZSBfX25sX2xhbmdpbmZvX2woTiwgTCkgICAgICAgbmxfbGFuZ2luZm8oKE4pKQotKyMgZGVmaW5lIF9fc3RyY29sbF9sKFMxLCBTMiwgTCkgICAgICBzdHJjb2xsKChTMSksIChTMikpCi0rIyBkZWZpbmUgX19zdHJ0b2RfbChTLCBFLCBMKSAgICAgICAgIHN0cnRvZCgoUyksIChFKSkKLSsjIGRlZmluZSBfX3N0cnRvZl9sKFMsIEUsIEwpICAgICAgICAgc3RydG9mKChTKSwgKEUpKQotKyMgZGVmaW5lIF9fc3RydG9sZF9sKFMsIEUsIEwpICAgICAgICBzdHJ0b2xkKChTKSwgKEUpKQotKyMgZGVmaW5lIF9fc3RyeGZybV9sKFMxLCBTMiwgTiwgTCkgICBzdHJ4ZnJtKChTMSksIChTMiksIChOKSkKLSsjIHdhcm5pbmcgc2hvdWxkIGR1bW15IF9fbmV3bG9jYWxlIGNoZWNrIGZvciBDfFBPU0lYID8KLSsjIGRlZmluZSBfX25ld2xvY2FsZShhLCBiLCBjKSAgICAgICAgTlVMTAotKyMgZGVmaW5lIF9fZnJlZWxvY2FsZShhKSAgICAgICAgICAgICAoKHZvaWQpMCkKLSsjIGRlZmluZSBfX2R1cGxvY2FsZShhKSAgICAgICAgICAgICAgX19jX2xvY2FsZSgpCi0rLy8jIGRlZmluZSBfX3VzZWxvY2FsZSA/Ci0rLy8KLSsjIGlmZGVmIF9HTElCQ1hYX1VTRV9XQ0hBUl9UCi0rIyAgZGVmaW5lIF9faXN3Y3R5cGVfbChDLCBNLCBMKSAgICAgICBpc3djdHlwZSgoQyksIChNKSkKLSsjICBkZWZpbmUgX190b3dsb3dlcl9sKEMsIEwpICAgICAgICAgIHRvd2xvd2VyKChDKSkKLSsjICBkZWZpbmUgX190b3d1cHBlcl9sKEMsIEwpICAgICAgICAgIHRvd3VwcGVyKChDKSkKLSsjICBkZWZpbmUgX193Y3Njb2xsX2woUzEsIFMyLCBMKSAgICAgIHdjc2NvbGwoKFMxKSwgKFMyKSkKLSsvLyMgIGRlZmluZSBfX3djc2Z0aW1lX2woUywgTSwgRiwgVCwgTCkgIHdjc2Z0aW1lKChTKSwgKE0pLCAoRiksIChUKSkKLSsjICBkZWZpbmUgX193Y3N4ZnJtX2woUzEsIFMyLCBOLCBMKSAgIHdjc3hmcm0oKFMxKSwgKFMyKSwgKE4pKQotKyMgIGRlZmluZSBfX3djdHlwZV9sKFMsIEwpICAgICAgICAgICAgd2N0eXBlKChTKSkKLSsjIGVuZGlmCi0rCi0gI2VuZGlmIC8vIEdMSUJDIDIuMyBhbmQgbGF0ZXIKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuY2MKLWluZGV4IDUwODFkYzEuLjIxNDMwZDAgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuY2MKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5jYwotQEAgLTM5LDIwICszOSw2IEBACi0gI2luY2x1ZGUgPGxhbmdpbmZvLmg+Ci0gI2luY2x1ZGUgPGJpdHMvYysrbG9jYWxlX2ludGVybmFsLmg+Ci0gCi0tI2lmbmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0tI2RlZmluZSBfX3N0cnRvbF9sKFMsIEUsIEIsIEwpICAgICAgc3RydG9sKChTKSwgKEUpLCAoQikpCi0tI2RlZmluZSBfX3N0cnRvdWxfbChTLCBFLCBCLCBMKSAgICAgc3RydG91bCgoUyksIChFKSwgKEIpKQotLSNkZWZpbmUgX19zdHJ0b2xsX2woUywgRSwgQiwgTCkgICAgIHN0cnRvbGwoKFMpLCAoRSksIChCKSkKLS0jZGVmaW5lIF9fc3RydG91bGxfbChTLCBFLCBCLCBMKSAgICBzdHJ0b3VsbCgoUyksIChFKSwgKEIpKQotLSNkZWZpbmUgX19zdHJ0b2ZfbChTLCBFLCBMKSAgICAgICAgIHN0cnRvZigoUyksIChFKSkKLS0jZGVmaW5lIF9fc3RydG9kX2woUywgRSwgTCkgICAgICAgICBzdHJ0b2QoKFMpLCAoRSkpCi0tI2RlZmluZSBfX3N0cnRvbGRfbChTLCBFLCBMKSAgICAgICAgc3RydG9sZCgoUyksIChFKSkKLS0jd2FybmluZyBzaG91bGQgZHVtbXkgX19uZXdsb2NhbGUgY2hlY2sgZm9yIEN8UE9TSVggPwotLSNkZWZpbmUgX19uZXdsb2NhbGUoYSwgYiwgYykgICAgICAgIE5VTEwKLS0jZGVmaW5lIF9fZnJlZWxvY2FsZShhKSAgICAgICAgICAgICAoKHZvaWQpMCkKLS0jZGVmaW5lIF9fZHVwbG9jYWxlKGEpICAgICAgICAgICAgICBfX2NfbG9jYWxlKCkKLS0jZW5kaWYKLS0KLSBuYW1lc3BhY2Ugc3RkCi0gewotICAgdGVtcGxhdGU8PgotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5oIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmgKLWluZGV4IGRhMDdjMWYuLjRiY2E1ZjEgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaAotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmgKLUBAIC02OCw2ICs2OCw3IEBAIG5hbWVzcGFjZSBfX2dudV9jeHgKLSB7Ci0gICBleHRlcm4gIkMiIF9fdHlwZW9mKHVzZWxvY2FsZSkgX191c2Vsb2NhbGU7Ci0gfQotKyNkZWZpbmUgX191c2Vsb2NhbGUgdXNlbG9jYWxlCi0gI2VuZGlmCi0gCi0gbmFtZXNwYWNlIHN0ZAotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jb2xsYXRlX21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY29sbGF0ZV9tZW1iZXJzLmNjCi1pbmRleCBjMjY2NGE3Li5lYzVjMzI5IDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NvbGxhdGVfbWVtYmVycy5jYwotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NvbGxhdGVfbWVtYmVycy5jYwotQEAgLTM2LDEzICszNiw2IEBACi0gI2luY2x1ZGUgPGxvY2FsZT4KLSAjaW5jbHVkZSA8Yml0cy9jKytsb2NhbGVfaW50ZXJuYWwuaD4KLSAKLS0jaWZuZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLS0jZGVmaW5lIF9fc3RyY29sbF9sKFMxLCBTMiwgTCkgICAgICBzdHJjb2xsKChTMSksIChTMikpCi0tI2RlZmluZSBfX3N0cnhmcm1fbChTMSwgUzIsIE4sIEwpICAgc3RyeGZybSgoUzEpLCAoUzIpLCAoTikpCi0tI2RlZmluZSBfX3djc2NvbGxfbChTMSwgUzIsIEwpICAgICAgd2NzY29sbCgoUzEpLCAoUzIpKQotLSNkZWZpbmUgX193Y3N4ZnJtX2woUzEsIFMyLCBOLCBMKSAgIHdjc3hmcm0oKFMxKSwgKFMyKSwgKE4pKQotLSNlbmRpZgotLQotIG5hbWVzcGFjZSBzdGQKLSB7Ci0gICAvLyBUaGVzZSBhcmUgYmFzaWNhbGx5IGV4dGVuc2lvbnMgdG8gY2hhcl90cmFpdHMsIGFuZCBwZXJoYXBzIHNob3VsZAotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jdHlwZV9tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2N0eXBlX21lbWJlcnMuY2MKLWluZGV4IDcyOTRlM2EuLjdiMTI4NjEgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY3R5cGVfbWVtYmVycy5jYwotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2N0eXBlX21lbWJlcnMuY2MKLUBAIC0zOCwxMyArMzgsNiBAQAotICN1bmRlZiBfTElCQwotICNpbmNsdWRlIDxiaXRzL2MrK2xvY2FsZV9pbnRlcm5hbC5oPgotIAotLSNpZm5kZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotLSNkZWZpbmUgX193Y3R5cGVfbChTLCBMKSAgICAgICAgICAgd2N0eXBlKChTKSkKLS0jZGVmaW5lIF9fdG93dXBwZXJfbChDLCBMKSAgICAgICAgIHRvd3VwcGVyKChDKSkKLS0jZGVmaW5lIF9fdG93bG93ZXJfbChDLCBMKSAgICAgICAgIHRvd2xvd2VyKChDKSkKLS0jZGVmaW5lIF9faXN3Y3R5cGVfbChDLCBNLCBMKSAgICAgIGlzd2N0eXBlKChDKSwgKE0pKQotLSNlbmRpZgotLQotIG5hbWVzcGFjZSBzdGQKLSB7Ci0gICAvLyBOQjogVGhlIG90aGVyIGN0eXBlPGNoYXI+IHNwZWNpYWxpemF0aW9ucyBhcmUgaW4gc3JjL2xvY2FsZS5jYyBhbmQKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmNjCi1pbmRleCAxMzU5NGQ5Li5kNzY5M2I0IDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuY2MKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmNjCi1AQCAtMzksMTMgKzM5LDEwIEBACi0gI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi0gI3dhcm5pbmcgZml4IGdldHRleHQgc3R1ZmYKLSAjZW5kaWYKLS0jaWZkZWYgX19VQ0xJQkNfSEFTX0dFVFRFWFRfQVdBUkVORVNTX18KLS1leHRlcm4gIkMiIGNoYXIgKl9fZGNnZXR0ZXh0KGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUsCi0tCQkJICAgICBjb25zdCBjaGFyICptc2dpZCwgaW50IGNhdGVnb3J5KTsKLSAjdW5kZWYgZ2V0dGV4dAotLSNkZWZpbmUgZ2V0dGV4dChtc2dpZCkgX19kY2dldHRleHQoTlVMTCwgbXNnaWQsIExDX01FU1NBR0VTKQotKyNpZmRlZiBfX1VDTElCQ19IQVNfR0VUVEVYVF9BV0FSRU5FU1NfXwotKyNkZWZpbmUgZ2V0dGV4dChtc2dpZCkgZGNnZXR0ZXh0KE5VTEwsIG1zZ2lkLCBMQ19NRVNTQUdFUykKLSAjZWxzZQotLSN1bmRlZiBnZXR0ZXh0Ci0gI2RlZmluZSBnZXR0ZXh0KG1zZ2lkKSAobXNnaWQpCi0gI2VuZGlmCi0gCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaCBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmgKLWluZGV4IDE0MjQwNzguLmQ4OWRhMzMgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5oCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5oCi1AQCAtMzYsMTUgKzM2LDExIEBACi0gI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi0gI3dhcm5pbmcgZml4IHByb3RvdHlwZXMgZm9yICp0ZXh0ZG9tYWluIGZ1bmNzCi0gI2VuZGlmCi0tI2lmZGVmIF9fVUNMSUJDX0hBU19HRVRURVhUX0FXQVJFTkVTU19fCi0tZXh0ZXJuICJDIiBjaGFyICpfX3RleHRkb21haW4oY29uc3QgY2hhciAqZG9tYWlubmFtZSk7Ci0tZXh0ZXJuICJDIiBjaGFyICpfX2JpbmR0ZXh0ZG9tYWluKGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUsCi0tCQkJCSAgY29uc3QgY2hhciAqZGlybmFtZSk7Ci0tI2Vsc2UKLS0jdW5kZWYgX190ZXh0ZG9tYWluCi0tI3VuZGVmIF9fYmluZHRleHRkb21haW4KLS0jZGVmaW5lIF9fdGV4dGRvbWFpbihEKSAgICAgICAgICAgKCh2b2lkKTApCi0tI2RlZmluZSBfX2JpbmR0ZXh0ZG9tYWluKEQsUCkgICAgICgodm9pZCkwKQotKyNpZm5kZWYgX19VQ0xJQkNfSEFTX0dFVFRFWFRfQVdBUkVORVNTX18KLSsjdW5kZWYgdGV4dGRvbWFpbgotKyN1bmRlZiBiaW5kdGV4dGRvbWFpbgotKyNkZWZpbmUgdGV4dGRvbWFpbihEKSAgICAgICAgICAgKCh2b2lkKTApCi0rI2RlZmluZSBiaW5kdGV4dGRvbWFpbihELFApICAgICAoKHZvaWQpMCkKLSAjZW5kaWYKLSAKLSAgIC8vIE5vbi12aXJ0dWFsIG1lbWJlciBmdW5jdGlvbnMuCi1AQCAtNzAsNyArNjYsNyBAQCBleHRlcm4gIkMiIGNoYXIgKl9fYmluZHRleHRkb21haW4oY29uc3QgY2hhciAqZG9tYWlubmFtZSwKLSAgICAgbWVzc2FnZXM8X0NoYXJUPjo6b3Blbihjb25zdCBiYXNpY19zdHJpbmc8Y2hhcj4mIF9fcywgY29uc3QgbG9jYWxlJiBfX2xvYywKLSAJCQkgICBjb25zdCBjaGFyKiBfX2RpcikgY29uc3QKLSAgICAgewotLSAgICAgIF9fYmluZHRleHRkb21haW4oX19zLmNfc3RyKCksIF9fZGlyKTsKLSsgICAgICBiaW5kdGV4dGRvbWFpbihfX3MuY19zdHIoKSwgX19kaXIpOwotICAgICAgIHJldHVybiB0aGlzLT5kb19vcGVuKF9fcywgX19sb2MpOwotICAgICB9Ci0gCi1AQCAtOTAsNyArODYsNyBAQCBleHRlcm4gIkMiIGNoYXIgKl9fYmluZHRleHRkb21haW4oY29uc3QgY2hhciAqZG9tYWlubmFtZSwKLSAgICAgewotICAgICAgIC8vIE5vIGVycm9yIGNoZWNraW5nIGlzIGRvbmUsIGFzc3VtZSB0aGUgY2F0YWxvZyBleGlzdHMgYW5kIGNhbgotICAgICAgIC8vIGJlIHVzZWQuCi0tICAgICAgX190ZXh0ZG9tYWluKF9fcy5jX3N0cigpKTsKLSsgICAgICB0ZXh0ZG9tYWluKF9fcy5jX3N0cigpKTsKLSAgICAgICByZXR1cm4gMDsKLSAgICAgfQotIAotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MKLWluZGV4IGFhNTI3MzEuLjJlNmY4MGEgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYwotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MKLUBAIC00MywxMCArNDMsNiBAQAotICN3YXJuaW5nIHRhaWxvciBmb3Igc3R1YiBsb2NhbGUgc3VwcG9ydAotICNlbmRpZgotIAotLSNpZm5kZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotLSNkZWZpbmUgX19ubF9sYW5naW5mb19sKE4sIEwpICAgICAgICAgbmxfbGFuZ2luZm8oKE4pKQotLSNlbmRpZgotLQotIG5hbWVzcGFjZSBzdGQKLSB7Ci0gICAvLyBDb25zdHJ1Y3QgYW5kIHJldHVybiB2YWxpZCBwYXR0ZXJuIGNvbnNpc3Rpbmcgb2Ygc29tZSBjb21iaW5hdGlvbiBvZjoKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYwotaW5kZXggODgzZWMxYS4uMmM3MDY0MiAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MKLUBAIC00MSw5ICs0MSw2IEBACi0gI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi0gI3dhcm5pbmcgdGFpbG9yIGZvciBzdHViIGxvY2FsZSBzdXBwb3J0Ci0gI2VuZGlmCi0tI2lmbmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0tI2RlZmluZSBfX25sX2xhbmdpbmZvX2woTiwgTCkgICAgICAgICBubF9sYW5naW5mbygoTikpCi0tI2VuZGlmCi0gCi0gbmFtZXNwYWNlIHN0ZAotIHsKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYwotaW5kZXggZTA3MDdkNy4uZDg0OGVkNSAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuY2MKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuY2MKLUBAIC00MCw5ICs0MCw2IEBACi0gI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi0gI3dhcm5pbmcgdGFpbG9yIGZvciBzdHViIGxvY2FsZSBzdXBwb3J0Ci0gI2VuZGlmCi0tI2lmbmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0tI2RlZmluZSBfX25sX2xhbmdpbmZvX2woTiwgTCkgICAgICAgICBubF9sYW5naW5mbygoTikpCi0tI2VuZGlmCi0gCi0gbmFtZXNwYWNlIHN0ZAotIHsKLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDA2LXVjbGliYy1sb2NhbGUtd2NoYXJfZml4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDA2LXVjbGliYy1sb2NhbGUtd2NoYXJfZml4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkN2RiZTY4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAwNi11Y2xpYmMtbG9jYWxlLXdjaGFyX2ZpeC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLUZyb20gYjEyOTgzNDRmMGMyMjFjMzgyYTk1YWY2ODlmN2YzZWNkODY0ZjUzMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA4OjQ1OjU3ICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDYvNDZdIHVjbGliYy1sb2NhbGUtd2NoYXJfZml4Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MgfCAgNCArKy0tCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYyAgfCAxMyArKysrKysrKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYwotaW5kZXggMmU2ZjgwYS4uMzFlYmI5ZiAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYwotQEAgLTQwMSw3ICs0MDEsNyBAQCBuYW1lc3BhY2Ugc3RkCi0gIyBpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0gCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IF9fY2xvYy0+ZGVjaW1hbF9wb2ludF93YzsKLSAJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gX19jbG9jLT50aG91c2FuZHNfc2VwX3djOwotLSMgZWxzZQotKyMgZWxpZiBkZWZpbmVkIF9fVUNMSUJDX0hBU19MT0NBTEVfXwotIAkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSBfX2dsb2JhbF9sb2NhbGUtPmRlY2ltYWxfcG9pbnRfd2M7Ci0gCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9IF9fZ2xvYmFsX2xvY2FsZS0+dGhvdXNhbmRzX3NlcF93YzsKLSAjIGVuZGlmCi1AQCAtNTU2LDcgKzU1Niw3IEBAIG5hbWVzcGFjZSBzdGQKLSAjIGlmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSAJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gX19jbG9jLT5kZWNpbWFsX3BvaW50X3djOwotIAkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSBfX2Nsb2MtPnRob3VzYW5kc19zZXBfd2M7Ci0tIyBlbHNlCi0rIyBlbGlmIGRlZmluZWQgX19VQ0xJQkNfSEFTX0xPQ0FMRV9fCi0gCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IF9fZ2xvYmFsX2xvY2FsZS0+ZGVjaW1hbF9wb2ludF93YzsKLSAJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gX19nbG9iYWxfbG9jYWxlLT50aG91c2FuZHNfc2VwX3djOwotICMgZW5kaWYKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYwotaW5kZXggMmM3MDY0Mi4uZDVjODk2MSAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MKLUBAIC0xMjcsMTIgKzEyNywyNSBAQCBuYW1lc3BhY2Ugc3RkCi0gCXsKLSAJICAvLyBOYW1lZCBsb2NhbGUuCi0gCSAgLy8gTkI6IEluIHRoZSBHTlUgbW9kZWwgd2NoYXJfdCBpcyBhbHdheXMgMzIgYml0IHdpZGUuCi0rI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi0rI3dhcm5pbmcgZml4IHRoaXMuLi4gc2hvdWxkIGJlIG51bWVyaWMKLSsjZW5kaWYKLSsjaWZkZWYgX19VQ0xJQkNfXwotKyMgaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKwkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSBfX2Nsb2MtPmRlY2ltYWxfcG9pbnRfd2M7Ci0rCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9IF9fY2xvYy0+dGhvdXNhbmRzX3NlcF93YzsKLSsjIGVsaWYgZGVmaW5lZCBfX1VDTElCQ19IQVNfTE9DQUxFX18KLSsJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gX19nbG9iYWxfbG9jYWxlLT5kZWNpbWFsX3BvaW50X3djOwotKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSBfX2dsb2JhbF9sb2NhbGUtPnRob3VzYW5kc19zZXBfd2M7Ci0rIyBlbmRpZgotKyNlbHNlCi0gCSAgdW5pb24geyBjaGFyICpfX3M7IHdjaGFyX3QgX193OyB9IF9fdTsKLSAJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9OVU1FUklDX0RFQ0lNQUxfUE9JTlRfV0MsIF9fY2xvYyk7Ci0gCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IF9fdS5fX3c7Ci0gCi0gCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfTlVNRVJJQ19USE9VU0FORFNfU0VQX1dDLCBfX2Nsb2MpOwotIAkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSBfX3UuX193OwotKyNlbmRpZgotIAotIAkgIGlmIChfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID09IEwnXDAnKQotIAkgICAgX01fZGF0YS0+X01fZ3JvdXBpbmcgPSAiIjsKLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDA3LXVjbGliYy1sb2NhbGUtdXBkYXRlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDA3LXVjbGliYy1sb2NhbGUtdXBkYXRlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZGU3NDk5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAwNy11Y2xpYmMtbG9jYWxlLXVwZGF0ZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU0MiArMCwwIEBACi1Gcm9tIGU5ZDdjYjYyNzQxYzIyZDY2N2ZlNTZlOThkNTA3NTNkODlhZWZkYzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwODo0Njo1OCArMDQwMAotU3ViamVjdDogW1BBVENIIDA3LzQ2XSB1Y2xpYmMtbG9jYWxlLXVwZGF0ZQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIC4uLi9jb25maWcvbG9jYWxlL3VjbGliYy9jKytsb2NhbGVfaW50ZXJuYWwuaCAgICAgIHwgIDMgKwotIGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5jYyAgICAgIHwgNzQgKysrKysrKysrKy0tLS0tLS0tLS0tLQotIGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5oICAgICAgIHwgNDIgKysrKysrLS0tLS0tCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2N0eXBlX21lbWJlcnMuY2MgfCA1MSArKysrKysrKysrKy0tLS0KLSAuLi4vY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5oICAgICAgICB8IDEyICsrLS0KLSAuLi4vY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYyAgICAgICB8IDM0ICsrKysrKy0tLS0KLSAuLi4vY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjICAgICAgICB8ICA1ICsrCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYyAgfCAxOCArKysrLS0KLSBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmggICB8IDE3ICsrKy0tCi0gOSBmaWxlcyBjaGFuZ2VkLCAxNTggaW5zZXJ0aW9ucygrKSwgOTggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvYysrbG9jYWxlX2ludGVybmFsLmggYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvYysrbG9jYWxlX2ludGVybmFsLmgKLWluZGV4IGU3NGZkZGYuLjk3MWE2YjQgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvYysrbG9jYWxlX2ludGVybmFsLmgKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jKytsb2NhbGVfaW50ZXJuYWwuaAotQEAgLTMxLDYgKzMxLDkgQEAKLSAKLSAjaW5jbHVkZSA8Yml0cy9jKytjb25maWcuaD4KLSAjaW5jbHVkZSA8Y2xvY2FsZT4KLSsjaW5jbHVkZSA8Y3N0ZGxpYj4KLSsjaW5jbHVkZSA8Y3N0cmluZz4KLSsjaW5jbHVkZSA8Y3N0ZGRlZj4KLSAKLSAjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KLSAjd2FybmluZyBjbGVhbiB0aGlzIHVwCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjCi1pbmRleCAyMTQzMGQwLi4xYjlkOGUxIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuY2MKLUBAIC0zOSwyMyArMzksMjAgQEAKLSAjaW5jbHVkZSA8bGFuZ2luZm8uaD4KLSAjaW5jbHVkZSA8Yml0cy9jKytsb2NhbGVfaW50ZXJuYWwuaD4KLSAKLS1uYW1lc3BhY2Ugc3RkCi0tewotK19HTElCQ1hYX0JFR0lOX05BTUVTUEFDRShzdGQpCi0rCi0gICB0ZW1wbGF0ZTw+Ci0gICAgIHZvaWQKLSAgICAgX19jb252ZXJ0X3RvX3YoY29uc3QgY2hhciogX19zLCBmbG9hdCYgX192LCBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsCi0gCQkgICBjb25zdCBfX2NfbG9jYWxlJiBfX2Nsb2MpCi0gICAgIHsKLS0gICAgICBpZiAoIShfX2VyciAmIGlvc19iYXNlOjpmYWlsYml0KSkKLS0JewotLQkgIGNoYXIqIF9fc2FuaXR5OwotLQkgIGVycm5vID0gMDsKLS0JICBmbG9hdCBfX2YgPSBfX3N0cnRvZl9sKF9fcywgJl9fc2FuaXR5LCBfX2Nsb2MpOwotLSAgICAgICAgICBpZiAoX19zYW5pdHkgIT0gX19zICYmIGVycm5vICE9IEVSQU5HRSkKLS0JICAgIF9fdiA9IF9fZjsKLS0JICBlbHNlCi0tCSAgICBfX2VyciB8PSBpb3NfYmFzZTo6ZmFpbGJpdDsKLS0JfQotKyAgICAgIGNoYXIqIF9fc2FuaXR5OwotKyAgICAgIGVycm5vID0gMDsKLSsgICAgICBmbG9hdCBfX2YgPSBfX3N0cnRvZl9sKF9fcywgJl9fc2FuaXR5LCBfX2Nsb2MpOwotKyAgICAgIGlmIChfX3Nhbml0eSAhPSBfX3MgJiYgZXJybm8gIT0gRVJBTkdFKQotKwlfX3YgPSBfX2Y7Ci0rICAgICAgZWxzZQotKwlfX2VyciB8PSBpb3NfYmFzZTo6ZmFpbGJpdDsKLSAgICAgfQotIAotICAgdGVtcGxhdGU8PgotQEAgLTYzLDE2ICs2MCwxMyBAQCBuYW1lc3BhY2Ugc3RkCi0gICAgIF9fY29udmVydF90b192KGNvbnN0IGNoYXIqIF9fcywgZG91YmxlJiBfX3YsIGlvc19iYXNlOjppb3N0YXRlJiBfX2VyciwKLSAJCSAgIGNvbnN0IF9fY19sb2NhbGUmIF9fY2xvYykKLSAgICAgewotLSAgICAgIGlmICghKF9fZXJyICYgaW9zX2Jhc2U6OmZhaWxiaXQpKQotLQl7Ci0tCSAgY2hhciogX19zYW5pdHk7Ci0tCSAgZXJybm8gPSAwOwotLQkgIGRvdWJsZSBfX2QgPSBfX3N0cnRvZF9sKF9fcywgJl9fc2FuaXR5LCBfX2Nsb2MpOwotLSAgICAgICAgICBpZiAoX19zYW5pdHkgIT0gX19zICYmIGVycm5vICE9IEVSQU5HRSkKLS0JICAgIF9fdiA9IF9fZDsKLS0JICBlbHNlCi0tCSAgICBfX2VyciB8PSBpb3NfYmFzZTo6ZmFpbGJpdDsKLS0JfQotKyAgICAgIGNoYXIqIF9fc2FuaXR5OwotKyAgICAgIGVycm5vID0gMDsKLSsgICAgICBkb3VibGUgX19kID0gX19zdHJ0b2RfbChfX3MsICZfX3Nhbml0eSwgX19jbG9jKTsKLSsgICAgICBpZiAoX19zYW5pdHkgIT0gX19zICYmIGVycm5vICE9IEVSQU5HRSkKLSsJX192ID0gX19kOwotKyAgICAgIGVsc2UKLSsJX19lcnIgfD0gaW9zX2Jhc2U6OmZhaWxiaXQ7Ci0gICAgIH0KLSAKLSAgIHRlbXBsYXRlPD4KLUBAIC04MCwxNiArNzQsMTMgQEAgbmFtZXNwYWNlIHN0ZAotICAgICBfX2NvbnZlcnRfdG9fdihjb25zdCBjaGFyKiBfX3MsIGxvbmcgZG91YmxlJiBfX3YsIGlvc19iYXNlOjppb3N0YXRlJiBfX2VyciwKLSAJCSAgIGNvbnN0IF9fY19sb2NhbGUmIF9fY2xvYykKLSAgICAgewotLSAgICAgIGlmICghKF9fZXJyICYgaW9zX2Jhc2U6OmZhaWxiaXQpKQotLQl7Ci0tCSAgY2hhciogX19zYW5pdHk7Ci0tCSAgZXJybm8gPSAwOwotLQkgIGxvbmcgZG91YmxlIF9fbGQgPSBfX3N0cnRvbGRfbChfX3MsICZfX3Nhbml0eSwgX19jbG9jKTsKLS0gICAgICAgICAgaWYgKF9fc2FuaXR5ICE9IF9fcyAmJiBlcnJubyAhPSBFUkFOR0UpCi0tCSAgICBfX3YgPSBfX2xkOwotLQkgIGVsc2UKLS0JICAgIF9fZXJyIHw9IGlvc19iYXNlOjpmYWlsYml0OwotLQl9Ci0rICAgICAgY2hhciogX19zYW5pdHk7Ci0rICAgICAgZXJybm8gPSAwOwotKyAgICAgIGxvbmcgZG91YmxlIF9fbGQgPSBfX3N0cnRvbGRfbChfX3MsICZfX3Nhbml0eSwgX19jbG9jKTsKLSsgICAgICBpZiAoX19zYW5pdHkgIT0gX19zICYmIGVycm5vICE9IEVSQU5HRSkKLSsJX192ID0gX19sZDsKLSsgICAgICBlbHNlCi0rCV9fZXJyIHw9IGlvc19iYXNlOjpmYWlsYml0OwotICAgICB9Ci0gCi0gICB2b2lkCi1AQCAtMTEwLDE3ICsxMDEsMTggQEAgbmFtZXNwYWNlIHN0ZAotICAgdm9pZAotICAgbG9jYWxlOjpmYWNldDo6X1NfZGVzdHJveV9jX2xvY2FsZShfX2NfbG9jYWxlJiBfX2Nsb2MpCi0gICB7Ci0tICAgIGlmIChfU19nZXRfY19sb2NhbGUoKSAhPSBfX2Nsb2MpCi0rICAgIGlmIChfX2Nsb2MgJiYgX1NfZ2V0X2NfbG9jYWxlKCkgIT0gX19jbG9jKQotICAgICAgIF9fZnJlZWxvY2FsZShfX2Nsb2MpOwotICAgfQotIAotICAgX19jX2xvY2FsZQotICAgbG9jYWxlOjpmYWNldDo6X1NfY2xvbmVfY19sb2NhbGUoX19jX2xvY2FsZSYgX19jbG9jKQotICAgeyByZXR1cm4gX19kdXBsb2NhbGUoX19jbG9jKTsgfQotLX0gLy8gbmFtZXNwYWNlIHN0ZAotIAotLW5hbWVzcGFjZSBfX2dudV9jeHgKLS17Ci0rX0dMSUJDWFhfRU5EX05BTUVTUEFDRQotKwotK19HTElCQ1hYX0JFR0lOX05BTUVTUEFDRShfX2dudV9jeHgpCi0rCi0gICBjb25zdCBjaGFyKiBjb25zdCBjYXRlZ29yeV9uYW1lc1s2ICsgX0dMSUJDWFhfTlVNX0NBVEVHT1JJRVNdID0KLSAgICAgewotICAgICAgICJMQ19DVFlQRSIsCi1AQCAtMTM4LDkgKzEzMCwxMSBAQCBuYW1lc3BhY2UgX19nbnVfY3h4Ci0gICAgICAgIkxDX0lERU5USUZJQ0FUSU9OIgotICNlbmRpZgotICAgICB9OwotLX0KLSAKLS1uYW1lc3BhY2Ugc3RkCi0tewotK19HTElCQ1hYX0VORF9OQU1FU1BBQ0UKLSsKLStfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0Uoc3RkKQotKwotICAgY29uc3QgY2hhciogY29uc3QqIGNvbnN0IGxvY2FsZTo6X1NfY2F0ZWdvcmllcyA9IF9fZ251X2N4eDo6Y2F0ZWdvcnlfbmFtZXM7Ci0tfSAgLy8gbmFtZXNwYWNlIHN0ZAotKwotK19HTElCQ1hYX0VORF9OQU1FU1BBQ0UKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaCBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5oCi1pbmRleCA0YmNhNWYxLi42NGE2ZDQ2IDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmgKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5oCi1AQCAtMzksMjEgKzM5LDIzIEBACi0gI3ByYWdtYSBHQ0Mgc3lzdGVtX2hlYWRlcgotIAotICNpbmNsdWRlIDxjc3RyaW5nPiAgICAgICAgICAgICAgLy8gZ2V0IHN0ZDo6c3RybGVuCi0tI2luY2x1ZGUgPGNzdGRpbz4gICAgICAgICAgICAgICAvLyBnZXQgc3RkOjpzbnByaW50ZiBvciBzdGQ6OnNwcmludGYKLSsjaW5jbHVkZSA8Y3N0ZGlvPiAgICAgICAgICAgICAgIC8vIGdldCBzdGQ6OnZzbnByaW50ZiBvciBzdGQ6OnZzcHJpbnRmCi0gI2luY2x1ZGUgPGNsb2NhbGU+Ci0gI2luY2x1ZGUgPGxhbmdpbmZvLmg+CQkvLyBGb3IgY29kZWN2dAotICNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotICN3YXJuaW5nIGZpeCB0aGlzCi0gI2VuZGlmCi0tI2lmZGVmIF9fVUNMSUJDX0hBU19MT0NBTEVfXwotKyNpZmRlZiBfR0xJQkNYWF9VU0VfSUNPTlYKLSAjaW5jbHVkZSA8aWNvbnYuaD4JCS8vIEZvciBjb2RlY3Z0IHVzaW5nIGljb252LCBpY29udl90Ci0gI2VuZGlmCi0tI2lmZGVmIF9fVUNMSUJDX0hBU19HRVRURVhUX0FXQVJFTkVTU19fCi0tI2luY2x1ZGUgPGxpYmludGwuaD4gCQkvLyBGb3IgbWVzc2FnZXMKLSsjaWZkZWYgSEFWRV9MSUJJTlRMX0gKLSsjaW5jbHVkZSA8bGliaW50bC5oPgkJLy8gRm9yIG1lc3NhZ2VzCi0gI2VuZGlmCi0rI2luY2x1ZGUgPGNzdGRhcmc+Ci0gCi0gI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi0gI3dhcm5pbmcgd2hhdCBpcyBfR0xJQkNYWF9DX0xPQ0FMRV9HTlUgZm9yCi0rLy8gcHNtOiB1c2VkIGluIG9zL2dudS1saW51eC9jdHlwZV9ub25pbmxpbmUuaAotICNlbmRpZgotICNkZWZpbmUgX0dMSUJDWFhfQ19MT0NBTEVfR05VIDEKLSAKLUBAIC03OCwyMyArODAsMjUgQEAgbmFtZXNwYWNlIHN0ZAotICNlbHNlCi0gICB0eXBlZGVmIGludCoJCQlfX2NfbG9jYWxlOwotICNlbmRpZgotLQotLSAgLy8gQ29udmVydCBudW1lcmljIHZhbHVlIG9mIHR5cGUgX1R2IHRvIHN0cmluZyBhbmQgcmV0dXJuIGxlbmd0aCBvZgotLSAgLy8gc3RyaW5nLiAgSWYgc25wcmludGYgaXMgYXZhaWxhYmxlIHVzZSBpdCwgb3RoZXJ3aXNlIGZhbGwgYmFjayB0bwotLSAgLy8gdGhlIHVuc2FmZSBzcHJpbnRmIHdoaWNoLCBpbiBnZW5lcmFsLCBjYW4gYmUgZGFuZ2Vyb3VzIGFuZCBzaG91bGQKLSsgIC8vIENvbnZlcnQgbnVtZXJpYyB2YWx1ZSBvZiB0eXBlIGRvdWJsZSB0byBzdHJpbmcgYW5kIHJldHVybiBsZW5ndGggb2YKLSsgIC8vIHN0cmluZy4gIElmIHZzbnByaW50ZiBpcyBhdmFpbGFibGUgdXNlIGl0LCBvdGhlcndpc2UgZmFsbCBiYWNrIHRvCi0rICAvLyB0aGUgdW5zYWZlIHZzcHJpbnRmIHdoaWNoLCBpbiBnZW5lcmFsLCBjYW4gYmUgZGFuZ2Vyb3VzIGFuZCBzaG91bGQKLSAgIC8vIGJlIGF2b2lkZWQuCi0tICB0ZW1wbGF0ZTx0eXBlbmFtZSBfVHY+Ci0tICAgIGludAotLSAgICBfX2NvbnZlcnRfZnJvbV92KGNoYXIqIF9fb3V0LAotLQkJICAgICBjb25zdCBpbnQgX19zaXplIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSksCi0tCQkgICAgIGNvbnN0IGNoYXIqIF9fZm10LAotLSNpZmRlZiBfX1VDTElCQ19IQVNfWENMT0NBTEVfXwotLQkJICAgICBfVHYgX192LCBjb25zdCBfX2NfbG9jYWxlJiBfX2Nsb2MsIGludCBfX3ByZWMpCi0rICAgIGlubGluZSBpbnQKLSsgICAgX19jb252ZXJ0X2Zyb21fdihjb25zdCBfX2NfbG9jYWxlJgotKyNpZm5kZWYgX19VQ0xJQkNfSEFTX1hDTE9DQUxFX18KLSsJX19jbG9jIF9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSkKLSsjZW5kaWYKLSsJCSAgICAgLAotKwkJICAgICBjaGFyKiBfX291dCwKLSsJCSAgICAgY29uc3QgaW50IF9fc2l6ZSwKLSsJCSAgICAgY29uc3QgY2hhciogX19mbXQsIC4uLikKLSAgICAgewotKyAgICAgIHZhX2xpc3QgX19hcmdzOwotKyNpZmRlZiBfX1VDTElCQ19IQVNfWENMT0NBTEVfXwotKwotICAgICAgIF9fY19sb2NhbGUgX19vbGQgPSBfX2dudV9jeHg6Ol9fdXNlbG9jYWxlKF9fY2xvYyk7Ci0gI2Vsc2UKLS0JCSAgICAgX1R2IF9fdiwgY29uc3QgX19jX2xvY2FsZSYsIGludCBfX3ByZWMpCi0tICAgIHsKLSAjIGlmZGVmIF9fVUNMSUJDX0hBU19MT0NBTEVfXwotICAgICAgIGNoYXIqIF9fb2xkID0gc3RkOjpzZXRsb2NhbGUoTENfQUxMLCBOVUxMKTsKLSAgICAgICBjaGFyKiBfX3NhdiA9IG5ldyBjaGFyW3N0ZDo6c3RybGVuKF9fb2xkKSArIDFdOwotQEAgLTEwMyw3ICsxMDcsOSBAQCBuYW1lc3BhY2Ugc3RkCi0gIyBlbmRpZgotICNlbmRpZgotIAotLSAgICAgIGNvbnN0IGludCBfX3JldCA9IHN0ZDo6c25wcmludGYoX19vdXQsIF9fc2l6ZSwgX19mbXQsIF9fcHJlYywgX192KTsKLSsgICAgICB2YV9zdGFydChfX2FyZ3MsIF9fZm10KTsKLSsgICAgICBjb25zdCBpbnQgX19yZXQgPSBzdGQ6OnZzbnByaW50ZihfX291dCwgX19zaXplLCBfX2ZtdCwgX19hcmdzKTsKLSsgICAgICB2YV9lbmQoX19hcmdzKTsKLSAKLSAjaWZkZWYgX19VQ0xJQkNfSEFTX1hDTE9DQUxFX18KLSAgICAgICBfX2dudV9jeHg6Ol9fdXNlbG9jYWxlKF9fb2xkKTsKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY3R5cGVfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jdHlwZV9tZW1iZXJzLmNjCi1pbmRleCA3YjEyODYxLi4xM2UwMTFkIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2N0eXBlX21lbWJlcnMuY2MKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jdHlwZV9tZW1iZXJzLmNjCi1AQCAtMzMsMTYgKzMzLDIwIEBACi0gCi0gLy8gV3JpdHRlbiBieSBCZW5qYW1pbiBLb3NuaWsgPGJrb3pAcmVkaGF0LmNvbT4KLSAKLSsjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KLSsjaWZkZWYgX19VQ0xJQkNfSEFTX0xPQ0FMRV9fCi0gI2RlZmluZSBfTElCQwotICNpbmNsdWRlIDxsb2NhbGU+Ci0gI3VuZGVmIF9MSUJDCi0rI2Vsc2UKLSsjaW5jbHVkZSA8bG9jYWxlPgotKyNlbmRpZgotICNpbmNsdWRlIDxiaXRzL2MrK2xvY2FsZV9pbnRlcm5hbC5oPgotIAotLW5hbWVzcGFjZSBzdGQKLS17Ci0rX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFKHN0ZCkKLSsKLSAgIC8vIE5COiBUaGUgb3RoZXIgY3R5cGU8Y2hhcj4gc3BlY2lhbGl6YXRpb25zIGFyZSBpbiBzcmMvbG9jYWxlLmNjIGFuZAotICAgLy8gdmFyaW91cyAvY29uZmlnL29zLyogZmlsZXMuCi0tICB0ZW1wbGF0ZTw+Ci0gICAgIGN0eXBlX2J5bmFtZTxjaGFyPjo6Y3R5cGVfYnluYW1lKGNvbnN0IGNoYXIqIF9fcywgc2l6ZV90IF9fcmVmcykKLSAgICAgOiBjdHlwZTxjaGFyPigwLCBmYWxzZSwgX19yZWZzKQotICAgICB7Ci1AQCAtNTcsNiArNjEsOCBAQCBuYW1lc3BhY2Ugc3RkCi0gI2VuZGlmCi0gCX0KLSAgICAgfQotKyAgICBjdHlwZV9ieW5hbWU8Y2hhcj46On5jdHlwZV9ieW5hbWUoKQotKyAgICB7IH0KLSAKLSAjaWZkZWYgX0dMSUJDWFhfVVNFX1dDSEFSX1QKLSAgIGN0eXBlPHdjaGFyX3Q+OjpfX3dtYXNrX3R5cGUKLUBAIC0xMzgsMTcgKzE0NCwzMyBAQCBuYW1lc3BhY2Ugc3RkCi0gICBjdHlwZTx3Y2hhcl90Pjo6Ci0gICBkb19pcyhtYXNrIF9fbSwgd2NoYXJfdCBfX2MpIGNvbnN0Ci0gICB7Ci0tICAgIC8vIEhpZ2hlc3QgYml0bWFzayBpbiBjdHlwZV9iYXNlID09IDEwLCBidXQgZXh0cmEgaW4gIkMiCi0tICAgIC8vIGxpYnJhcnkgZm9yIGJsYW5rLgotKyAgICAvLyBUaGUgY2FzZSBvZiBfX20gPT0gY3R5cGVfYmFzZTo6c3BhY2UgaXMgcGFydGljdWxhcmx5IGltcG9ydGFudCwKLSsgICAgLy8gZHVlIHRvIGl0cyB1c2UgaW4gbWFueSBpc3RyZWFtIGZ1bmN0aW9ucy4gIFRoZXJlZm9yZSB3ZSBkZWFsIHdpdGgKLSsgICAgLy8gaXQgZmlyc3QsIGV4cGxvaXRpbmcgdGhlIGtub3dsZWRnZSB0aGF0IG9uIEdOVSBzeXN0ZW1zIF9NX2JpdFs1XQotKyAgICAvLyBpcyB0aGUgbWFzayBjb3JyZXNwb25kaW5nIHRvIGN0eXBlX2Jhc2U6OnNwYWNlLiAgTkI6IGFuIGVuY29kaW5nCi0rICAgIC8vIGNoYW5nZSB3b3VsZCBub3QgYWZmZWN0IGNvcnJlY3RuZXNzIQotKwotICAgICBib29sIF9fcmV0ID0gZmFsc2U7Ci0tICAgIGNvbnN0IHNpemVfdCBfX2JpdG1hc2tzaXplID0gMTE7Ci0tICAgIGZvciAoc2l6ZV90IF9fYml0Y3VyID0gMDsgX19iaXRjdXIgPD0gX19iaXRtYXNrc2l6ZTsgKytfX2JpdGN1cikKLS0gICAgICBpZiAoX19tICYgX01fYml0W19fYml0Y3VyXQotLQkgICYmIF9faXN3Y3R5cGVfbChfX2MsIF9NX3dtYXNrW19fYml0Y3VyXSwgX01fY19sb2NhbGVfY3R5cGUpKQotLQl7Ci0tCSAgX19yZXQgPSB0cnVlOwotLQkgIGJyZWFrOwotLQl9Ci0rICAgIGlmIChfX20gPT0gX01fYml0WzVdKQotKyAgICAgIF9fcmV0ID0gX19pc3djdHlwZV9sKF9fYywgX01fd21hc2tbNV0sIF9NX2NfbG9jYWxlX2N0eXBlKTsKLSsgICAgZWxzZQotKyAgICAgIHsKLSsJLy8gSGlnaGVzdCBiaXRtYXNrIGluIGN0eXBlX2Jhc2UgPT0gMTAsIGJ1dCBleHRyYSBpbiAiQyIKLSsJLy8gbGlicmFyeSBmb3IgYmxhbmsuCi0rCWNvbnN0IHNpemVfdCBfX2JpdG1hc2tzaXplID0gMTE7Ci0rCWZvciAoc2l6ZV90IF9fYml0Y3VyID0gMDsgX19iaXRjdXIgPD0gX19iaXRtYXNrc2l6ZTsgKytfX2JpdGN1cikKLSsJICBpZiAoX19tICYgX01fYml0W19fYml0Y3VyXSkKLSsJICAgIHsKLSsJICAgICAgaWYgKF9faXN3Y3R5cGVfbChfX2MsIF9NX3dtYXNrW19fYml0Y3VyXSwgX01fY19sb2NhbGVfY3R5cGUpKQotKwkJewotKwkJICBfX3JldCA9IHRydWU7Ci0rCQkgIGJyZWFrOwotKwkJfQotKwkgICAgICBlbHNlIGlmIChfX20gPT0gX01fYml0W19fYml0Y3VyXSkKLSsJCWJyZWFrOwotKwkgICAgfQotKyAgICAgIH0KLSsKLSAgICAgcmV0dXJuIF9fcmV0OwotICAgfQotIAotQEAgLTI5MCw0ICszMTIsNSBAQCBuYW1lc3BhY2Ugc3RkCi0gI2VuZGlmCi0gICB9Ci0gI2VuZGlmIC8vICBfR0xJQkNYWF9VU0VfV0NIQVJfVAotLX0KLSsKLStfR0xJQkNYWF9FTkRfTkFNRVNQQUNFCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaCBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmgKLWluZGV4IGQ4OWRhMzMuLjA2NzY1N2EgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5oCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5oCi1AQCAtNTMsMTIgKzUzLDE2IEBACi0gICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+Ci0gICAgICBtZXNzYWdlczxfQ2hhclQ+OjptZXNzYWdlcyhfX2NfbG9jYWxlIF9fY2xvYywgY29uc3QgY2hhciogX19zLAotIAkJCQlzaXplX3QgX19yZWZzKQotLSAgICAgOiBmYWNldChfX3JlZnMpLCBfTV9jX2xvY2FsZV9tZXNzYWdlcyhfU19jbG9uZV9jX2xvY2FsZShfX2Nsb2MpKSwKLS0gICAgIF9NX25hbWVfbWVzc2FnZXMoX19zKQotKyAgICAgOiBmYWNldChfX3JlZnMpLCBfTV9jX2xvY2FsZV9tZXNzYWdlcyhOVUxMKSwKLSsgICAgIF9NX25hbWVfbWVzc2FnZXMoTlVMTCkKLSAgICAgIHsKLS0gICAgICAgY2hhciogX190bXAgPSBuZXcgY2hhcltzdGQ6OnN0cmxlbihfX3MpICsgMV07Ci0tICAgICAgIHN0ZDo6c3RyY3B5KF9fdG1wLCBfX3MpOwotKyAgICAgICBjb25zdCBzaXplX3QgX19sZW4gPSBzdGQ6OnN0cmxlbihfX3MpICsgMTsKLSsgICAgICAgY2hhciogX190bXAgPSBuZXcgY2hhcltfX2xlbl07Ci0rICAgICAgIHN0ZDo6bWVtY3B5KF9fdG1wLCBfX3MsIF9fbGVuKTsKLSAgICAgICAgX01fbmFtZV9tZXNzYWdlcyA9IF9fdG1wOwotKwotKyAgICAgICAvLyBMYXN0IHRvIGF2b2lkIGxlYWtpbmcgbWVtb3J5IGlmIG5ldyB0aHJvd3MuCi0rICAgICAgIF9NX2NfbG9jYWxlX21lc3NhZ2VzID0gX1NfY2xvbmVfY19sb2NhbGUoX19jbG9jKTsKLSAgICAgIH0KLSAKLSAgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjCi1pbmRleCAzMWViYjlmLi43Njc5YjljIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjCi1AQCAtMzMsOSArMzMsMTQgQEAKLSAKLSAvLyBXcml0dGVuIGJ5IEJlbmphbWluIEtvc25payA8YmtvekByZWRoYXQuY29tPgotIAotKyNpbmNsdWRlIDxmZWF0dXJlcy5oPgotKyNpZmRlZiBfX1VDTElCQ19IQVNfTE9DQUxFX18KLSAjZGVmaW5lIF9MSUJDCi0gI2luY2x1ZGUgPGxvY2FsZT4KLSAjdW5kZWYgX0xJQkMKLSsjZWxzZQotKyNpbmNsdWRlIDxsb2NhbGU+Ci0rI2VuZGlmCi0gI2luY2x1ZGUgPGJpdHMvYysrbG9jYWxlX2ludGVybmFsLmg+Ci0gCi0gI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi1AQCAtMjA2LDcgKzIxMSw3IEBAIG5hbWVzcGFjZSBzdGQKLSAJICB9Ci0gCWJyZWFrOwotICAgICAgIGRlZmF1bHQ6Ci0tCTsKLSsJX19yZXQgPSBwYXR0ZXJuKCk7Ci0gICAgICAgfQotICAgICByZXR1cm4gX19yZXQ7Ci0gICB9Ci1AQCAtMzkwLDcgKzM5NSw5IEBAIG5hbWVzcGFjZSBzdGQKLSAJICBfX2NfbG9jYWxlIF9fb2xkID0gX191c2Vsb2NhbGUoX19jbG9jKTsKLSAjZWxzZQotIAkgIC8vIFN3aXRjaCB0byBuYW1lZCBsb2NhbGUgc28gdGhhdCBtYnNydG93Y3Mgd2lsbCB3b3JrLgotLQkgIGNoYXIqIF9fb2xkID0gc3RyZHVwKHNldGxvY2FsZShMQ19BTEwsIE5VTEwpKTsKLSsgIAkgIGNoYXIqIF9fb2xkID0gc2V0bG9jYWxlKExDX0FMTCwgTlVMTCk7Ci0rICAgICAgICAgIGNvbnN0IHNpemVfdCBfX2xsZW4gPSBzdHJsZW4oX19vbGQpICsgMTsKLSsgICAgICAgICAgY2hhciogX19zYXYgPSBuZXcgY2hhcltfX2xsZW5dOwotIAkgIHNldGxvY2FsZShMQ19BTEwsIF9fbmFtZSk7Ci0gI2VuZGlmCi0gCi1AQCAtNDc3LDggKzQ4NCw4IEBAIG5hbWVzcGFjZSBzdGQKLSAjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotIAkgICAgICBfX3VzZWxvY2FsZShfX29sZCk7Ci0gI2Vsc2UKLS0JICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX19vbGQpOwotLQkgICAgICBmcmVlKF9fb2xkKTsKLSsJICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX19zYXYpOwotKwkgICAgICBkZWxldGUgW10gX19zYXY7Ci0gI2VuZGlmCi0gCSAgICAgIF9fdGhyb3dfZXhjZXB0aW9uX2FnYWluOwotIAkgICAgfQotQEAgLTQ5OCw4ICs1MDUsOCBAQCBuYW1lc3BhY2Ugc3RkCi0gI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSAJICBfX3VzZWxvY2FsZShfX29sZCk7Ci0gI2Vsc2UKLS0JICBzZXRsb2NhbGUoTENfQUxMLCBfX29sZCk7Ci0tCSAgZnJlZShfX29sZCk7Ci0rCSAgc2V0bG9jYWxlKExDX0FMTCwgX19zYXYpOwotKwkgIGRlbGV0ZSBbXSBfX3NhdjsKLSAjZW5kaWYKLSAJfQotICAgICB9Ci1AQCAtNTQ1LDggKzU1MiwxMSBAQCBuYW1lc3BhY2Ugc3RkCi0gCSAgX19jX2xvY2FsZSBfX29sZCA9IF9fdXNlbG9jYWxlKF9fY2xvYyk7Ci0gI2Vsc2UKLSAJICAvLyBTd2l0Y2ggdG8gbmFtZWQgbG9jYWxlIHNvIHRoYXQgbWJzcnRvd2NzIHdpbGwgd29yay4KLS0JICBjaGFyKiBfX29sZCA9IHN0cmR1cChzZXRsb2NhbGUoTENfQUxMLCBOVUxMKSk7Ci0tCSAgc2V0bG9jYWxlKExDX0FMTCwgX19uYW1lKTsKLSsgICAgICAgICAgY2hhciogX19vbGQgPSBzZXRsb2NhbGUoTENfQUxMLCBOVUxMKTsKLSsgICAgICAgICAgY29uc3Qgc2l6ZV90IF9fbGxlbiA9IHN0cmxlbihfX29sZCkgKyAxOwotKyAgICAgICAgICBjaGFyKiBfX3NhdiA9IG5ldyBjaGFyW19fbGxlbl07Ci0rICAgICAgICAgIG1lbWNweShfX3NhdiwgX19vbGQsIF9fbGxlbik7Ci0rICAgICAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9fbmFtZSk7Ci0gI2VuZGlmCi0gCi0gI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi1AQCAtNjMzLDggKzY0Myw4IEBAIG5hbWVzcGFjZSBzdGQKLSAjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotIAkgICAgICBfX3VzZWxvY2FsZShfX29sZCk7Ci0gI2Vsc2UKLS0JICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX19vbGQpOwotLQkgICAgICBmcmVlKF9fb2xkKTsKLSsJICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX19zYXYpOwotKwkgICAgICBkZWxldGUgW10gX19zYXY7Ci0gI2VuZGlmCi0gICAgICAgICAgICAgICBfX3Rocm93X2V4Y2VwdGlvbl9hZ2FpbjsKLSAJICAgIH0KLUBAIC02NTMsOCArNjYzLDggQEAgbmFtZXNwYWNlIHN0ZAotICNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0gCSAgX191c2Vsb2NhbGUoX19vbGQpOwotICNlbHNlCi0tCSAgc2V0bG9jYWxlKExDX0FMTCwgX19vbGQpOwotLQkgIGZyZWUoX19vbGQpOwotKwkgIHNldGxvY2FsZShMQ19BTEwsIF9fc2F2KTsKLSsJICBkZWxldGUgW10gX19zYXY7Ci0gI2VuZGlmCi0gCX0KLSAgICAgfQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjCi1pbmRleCBkNWM4OTYxLi44YWU4OTY5IDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYwotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYwotQEAgLTMzLDkgKzMzLDE0IEBACi0gCi0gLy8gV3JpdHRlbiBieSBCZW5qYW1pbiBLb3NuaWsgPGJrb3pAcmVkaGF0LmNvbT4KLSAKLSsjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KLSsjaWZkZWYgX19VQ0xJQkNfSEFTX0xPQ0FMRV9fCi0gI2RlZmluZSBfTElCQwotICNpbmNsdWRlIDxsb2NhbGU+Ci0gI3VuZGVmIF9MSUJDCi0rI2Vsc2UKLSsjaW5jbHVkZSA8bG9jYWxlPgotKyNlbmRpZgotICNpbmNsdWRlIDxiaXRzL2MrK2xvY2FsZV9pbnRlcm5hbC5oPgotIAotICNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmNjCi1pbmRleCBkODQ4ZWQ1Li5mMjRkNTNlIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYwotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYwotQEAgLTUzLDExICs1MywxNCBAQCBuYW1lc3BhY2Ugc3RkCi0gICAgICAgY29uc3Qgc2l6ZV90IF9fbGVuID0gX19zdHJmdGltZV9sKF9fcywgX19tYXhsZW4sIF9fZm9ybWF0LCBfX3RtLAotIAkJCQkJX01fY19sb2NhbGVfdGltZXB1bmN0KTsKLSAjZWxzZQotLSAgICAgIGNoYXIqIF9fb2xkID0gc3RyZHVwKHNldGxvY2FsZShMQ19BTEwsIE5VTEwpKTsKLSsgICAgICBjaGFyKiBfX29sZCA9IHNldGxvY2FsZShMQ19BTEwsIE5VTEwpOwotKyAgICAgIGNvbnN0IHNpemVfdCBfX2xsZW4gPSBzdHJsZW4oX19vbGQpICsgMTsKLSsgICAgICBjaGFyKiBfX3NhdiA9IG5ldyBjaGFyW19fbGxlbl07Ci0rICAgICAgbWVtY3B5KF9fc2F2LCBfX29sZCwgX19sbGVuKTsKLSAgICAgICBzZXRsb2NhbGUoTENfQUxMLCBfTV9uYW1lX3RpbWVwdW5jdCk7Ci0gICAgICAgY29uc3Qgc2l6ZV90IF9fbGVuID0gc3RyZnRpbWUoX19zLCBfX21heGxlbiwgX19mb3JtYXQsIF9fdG0pOwotLSAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9fb2xkKTsKLS0gICAgICBmcmVlKF9fb2xkKTsKLSsgICAgICBzZXRsb2NhbGUoTENfQUxMLCBfX3Nhdik7Ci0rICAgICAgZGVsZXRlIFtdIF9fc2F2OwotICNlbmRpZgotICAgICAgIC8vIE1ha2Ugc3VyZSBfX3MgaXMgbnVsbCB0ZXJtaW5hdGVkLgotICAgICAgIGlmIChfX2xlbiA9PSAwKQotQEAgLTIwNywxMSArMjEwLDE0IEBAIG5hbWVzcGFjZSBzdGQKLSAgICAgICBjb25zdCBzaXplX3QgX19sZW4gPSBfX3djc2Z0aW1lX2woX19zLCBfX21heGxlbiwgX19mb3JtYXQsIF9fdG0sCi0gCQkJCQlfTV9jX2xvY2FsZV90aW1lcHVuY3QpOwotICNlbHNlCi0tICAgICAgY2hhciogX19vbGQgPSBzdHJkdXAoc2V0bG9jYWxlKExDX0FMTCwgTlVMTCkpOwotKyAgICAgIGNoYXIqIF9fb2xkID0gc2V0bG9jYWxlKExDX0FMTCwgTlVMTCk7Ci0rICAgICAgY29uc3Qgc2l6ZV90IF9fbGxlbiA9IHN0cmxlbihfX29sZCkgKyAxOwotKyAgICAgIGNoYXIqIF9fc2F2ID0gbmV3IGNoYXJbX19sbGVuXTsKLSsgICAgICBtZW1jcHkoX19zYXYsIF9fb2xkLCBfX2xsZW4pOwotICAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9NX25hbWVfdGltZXB1bmN0KTsKLSAgICAgICBjb25zdCBzaXplX3QgX19sZW4gPSB3Y3NmdGltZShfX3MsIF9fbWF4bGVuLCBfX2Zvcm1hdCwgX190bSk7Ci0tICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX19vbGQpOwotLSAgICAgIGZyZWUoX19vbGQpOwotKyAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9fc2F2KTsKLSsgICAgICBkZWxldGUgW10gX19zYXY7Ci0gI2VuZGlmCi0gICAgICAgLy8gTWFrZSBzdXJlIF9fcyBpcyBudWxsIHRlcm1pbmF0ZWQuCi0gICAgICAgaWYgKF9fbGVuID09IDApCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5oIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5oCi1pbmRleCBiYThlODU4Li4xNjY1ZGRlIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5oCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmgKLUBAIC01MCwxMiArNTAsMjEgQEAKLSAgICAgX190aW1lcHVuY3Q8X0NoYXJUPjo6X190aW1lcHVuY3QoX19jX2xvY2FsZSBfX2Nsb2MsIGNvbnN0IGNoYXIqIF9fcywKLSAJCQkJICAgICBzaXplX3QgX19yZWZzKQotICAgICA6IGZhY2V0KF9fcmVmcyksIF9NX2RhdGEoTlVMTCksIF9NX2NfbG9jYWxlX3RpbWVwdW5jdChOVUxMKSwKLS0gICAgX01fbmFtZV90aW1lcHVuY3QoX19zKQotKyAgICBfTV9uYW1lX3RpbWVwdW5jdChOVUxMKQotICAgICB7Ci0tICAgICAgY2hhciogX190bXAgPSBuZXcgY2hhcltzdGQ6OnN0cmxlbihfX3MpICsgMV07Ci0tICAgICAgc3RkOjpzdHJjcHkoX190bXAsIF9fcyk7Ci0rICAgICAgY29uc3Qgc2l6ZV90IF9fbGVuID0gc3RkOjpzdHJsZW4oX19zKSArIDE7Ci0rICAgICAgY2hhciogX190bXAgPSBuZXcgY2hhcltfX2xlbl07Ci0rICAgICAgc3RkOjptZW1jcHkoX190bXAsIF9fcywgX19sZW4pOwotICAgICAgIF9NX25hbWVfdGltZXB1bmN0ID0gX190bXA7Ci0tICAgICAgX01faW5pdGlhbGl6ZV90aW1lcHVuY3QoX19jbG9jKTsKLSsKLSsgICAgICB0cnkKLSsJeyBfTV9pbml0aWFsaXplX3RpbWVwdW5jdChfX2Nsb2MpOyB9Ci0rICAgICAgY2F0Y2goLi4uKQotKwl7Ci0rCSAgZGVsZXRlIFtdIF9NX25hbWVfdGltZXB1bmN0OwotKwkgIF9fdGhyb3dfZXhjZXB0aW9uX2FnYWluOwotKwl9Ci0rCi0gICAgIH0KLSAKLSAgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDA4LW1pc3NpbmctZXhlY2luZm9faC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAwOC1taXNzaW5nLWV4ZWNpbmZvX2gucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmODc5MzEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDA4LW1pc3NpbmctZXhlY2luZm9faC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUZyb20gOWI3NDQyMDY5ZWI2OGE0MmQyNDM3MTgxYzFiMmU3MTBkZDA3N2U4YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA4OjQ4OjEwICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDgvNDZdIG1pc3NpbmctZXhlY2luZm9faAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGJvZWhtLWdjL2luY2x1ZGUvZ2MuaCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2JvZWhtLWdjL2luY2x1ZGUvZ2MuaCBiL2JvZWhtLWdjL2luY2x1ZGUvZ2MuaAotaW5kZXggNmIzOGYyZC4uZmNhOThmZiAxMDA2NDQKLS0tLSBhL2JvZWhtLWdjL2luY2x1ZGUvZ2MuaAotKysrIGIvYm9laG0tZ2MvaW5jbHVkZS9nYy5oCi1AQCAtNTAzLDcgKzUwMyw3IEBAIEdDX0FQSSBHQ19QVFIgR0NfbWFsbG9jX2F0b21pY19pZ25vcmVfb2ZmX3BhZ2UgR0NfUFJPVE8oKHNpemVfdCBsYikpOwotICNpZiBkZWZpbmVkKF9fbGludXhfXykgfHwgZGVmaW5lZChfX0dMSUJDX18pCi0gIyBpbmNsdWRlIDxmZWF0dXJlcy5oPgotICMgaWYgKF9fR0xJQkNfXyA9PSAyICYmIF9fR0xJQkNfTUlOT1JfXyA+PSAxIHx8IF9fR0xJQkNfXyA+IDIpIFwKLS0gICAgICYmICFkZWZpbmVkKF9faWE2NF9fKQotKyAgICAgJiYgIWRlZmluZWQoX19pYTY0X18pICYmICFkZWZpbmVkKF9fVUNMSUJDX18pCi0gIyAgIGlmbmRlZiBHQ19IQVZFX0JVSUxUSU5fQkFDS1RSQUNFCi0gIyAgICAgZGVmaW5lIEdDX0hBVkVfQlVJTFRJTl9CQUNLVFJBQ0UKLSAjICAgZW5kaWYKLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDA5LWM5OS1zbnByaW50Zi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAwOS1jOTktc25wcmludGYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiMjM2YzYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDA5LWM5OS1zbnByaW50Zi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUZyb20gZmRlOTdmODBkMmQ5MzFlZDNmYTRhODYyOTQ3OTkzNjZiMjM1OTMzMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA4OjQ5OjAzICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDkvNDZdIGM5OS1zbnByaW50ZgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGxpYnN0ZGMrKy12My9pbmNsdWRlL2Nfc3RkL2NzdGRpbyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2Nfc3RkL2NzdGRpbyBiL2xpYnN0ZGMrKy12My9pbmNsdWRlL2Nfc3RkL2NzdGRpbwotaW5kZXggMzdmMDFjYS4uZjAwYzA2ZCAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2Nfc3RkL2NzdGRpbwotKysrIGIvbGlic3RkYysrLXYzL2luY2x1ZGUvY19zdGQvY3N0ZGlvCi1AQCAtMTQ0LDcgKzE0NCw3IEBAIG5hbWVzcGFjZSBzdGQKLSAgIHVzaW5nIDo6dnNwcmludGY7Ci0gfSAvLyBuYW1lc3BhY2Ugc3RkCi0gCi0tI2lmIF9HTElCQ1hYX1VTRV9DOTkKLSsjaWYgX0dMSUJDWFhfVVNFX0M5OSB8fCBkZWZpbmVkKF9fVUNMSUJDX18pCi0gCi0gI3VuZGVmIHNucHJpbnRmCi0gI3VuZGVmIHZmc2NhbmYKLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDEwLWdjYy1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDEwLWdjYy1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZGE4ODc3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAxMC1nY2MtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE5MiArMCwwIEBACi1Gcm9tIDdhOTBlNjJkNTU3Yzc4YWU1MjAwNmRmZjMwYzk5MDA2ZTEwZDkzNTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwODo1OTowMCArMDQwMAotU3ViamVjdDogW1BBVENIIDEwLzQ2XSBnY2M6IHBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtkaXN0cmlidXRpb246IGNvZGVzb3VyY2VyeV0KLS0tLQotIGdjYy9jb21tb24ub3B0ICAgICAgfCAgNCArKysrCi0gZ2NjL2NvbmZpZy5pbiAgICAgICB8ICA2ICsrKysrKwotIGdjYy9jb25maWd1cmUgICAgICAgfCAxNiArKysrKysrKysrKysrKysrCi0gZ2NjL2NvbmZpZ3VyZS5hYyAgICB8IDEwICsrKysrKysrKysKLSBnY2MvZG9jL2ludm9rZS50ZXhpIHwgIDkgKysrKysrKysrCi0gZ2NjL2djYy5jICAgICAgICAgICB8ICAyICsrCi0gZ2NjL2luY3BhdGguYyAgICAgICB8IDE5ICsrKysrKysrKysrKysrKysrKysKLSA3IGZpbGVzIGNoYW5nZWQsIDY2IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2djYy9jb21tb24ub3B0IGIvZ2NjL2NvbW1vbi5vcHQKLWluZGV4IDEyMThhNzEuLmJmYmExMTQgMTAwNjQ0Ci0tLS0gYS9nY2MvY29tbW9uLm9wdAotKysrIGIvZ2NjL2NvbW1vbi5vcHQKLUBAIC02MjMsNiArNjIzLDEwIEBAIFdyZXR1cm4tbG9jYWwtYWRkcgotIENvbW1vbiBWYXIod2Fybl9yZXR1cm5fbG9jYWxfYWRkcikgSW5pdCgxKSBXYXJuaW5nCi0gV2FybiBhYm91dCByZXR1cm5pbmcgYSBwb2ludGVyL3JlZmVyZW5jZSB0byBhIGxvY2FsIG9yIHRlbXBvcmFyeSB2YXJpYWJsZS4KLSAKLStXcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcwotK0NvbW1vbiBWYXIoZmxhZ19wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzKSBJbml0KDEpIFdhcm5pbmcKLStXYXJuIGZvciAtSSBhbmQgLUwgb3B0aW9ucyB1c2luZyBzeXN0ZW0gZGlyZWN0b3JpZXMgaWYgY3Jvc3MgY29tcGlsaW5nCi0rCi0gV3NoYWRvdwotIENvbW1vbiBWYXIod2Fybl9zaGFkb3cpIFdhcm5pbmcKLSBXYXJuIHdoZW4gb25lIGxvY2FsIHZhcmlhYmxlIHNoYWRvd3MgYW5vdGhlcgotZGlmZiAtLWdpdCBhL2djYy9jb25maWcuaW4gYi9nY2MvY29uZmlnLmluCi1pbmRleCA1MzM1MjU4Li5mMDc5ODI2IDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy5pbgotKysrIGIvZ2NjL2NvbmZpZy5pbgotQEAgLTE2OCw2ICsxNjgsMTIgQEAKLSAjZW5kaWYKLSAKLSAKLSsvKiBEZWZpbmUgdG8gd2FybiBmb3IgdXNlIG9mIG5hdGl2ZSBzeXN0ZW0gaGVhZGVyIGRpcmVjdG9yaWVzICovCi0rI2lmbmRlZiBVU0VEX0ZPUl9UQVJHRVQKLSsjdW5kZWYgRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMKLSsjZW5kaWYKLSsKLSsKLSAvKiBEZWZpbmUgaWYgeW91IHdhbnQgYWxsIG9wZXJhdGlvbnMgb24gUlRMICh0aGUgYmFzaWMgZGF0YSBzdHJ1Y3R1cmUgb2YgdGhlCi0gICAgb3B0aW1pemVyIGFuZCBiYWNrIGVuZCkgdG8gYmUgY2hlY2tlZCBmb3IgZHluYW1pYyB0eXBlIHNhZmV0eSBhdCBydW50aW1lLgotICAgIFRoaXMgaXMgcXVpdGUgZXhwZW5zaXZlLiAqLwotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUgYi9nY2MvY29uZmlndXJlCi1pbmRleCAzYzkyNzk1Li4zNDM3MWEzIDEwMDc1NQotLS0tIGEvZ2NjL2NvbmZpZ3VyZQotKysrIGIvZ2NjL2NvbmZpZ3VyZQotQEAgLTkzMyw2ICs5MzMsNyBAQCB3aXRoX3N5c3RlbV96bGliCi0gZW5hYmxlX21haW50YWluZXJfbW9kZQotIGVuYWJsZV9saW5rX211dGV4Ci0gZW5hYmxlX3ZlcnNpb25fc3BlY2lmaWNfcnVudGltZV9saWJzCi0rZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMKLSBlbmFibGVfcGx1Z2luCi0gZW5hYmxlX2hvc3Rfc2hhcmVkCi0gZW5hYmxlX2xpYnF1YWRtYXRoX3N1cHBvcnQKLUBAIC0xNjcwLDYgKzE2NzEsOCBAQCBPcHRpb25hbCBGZWF0dXJlczoKLSAgIC0tZW5hYmxlLXZlcnNpb24tc3BlY2lmaWMtcnVudGltZS1saWJzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZ5IHRoYXQgcnVudGltZSBsaWJyYXJpZXMgc2hvdWxkIGJlIGluc3RhbGxlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYSBjb21waWxlci1zcGVjaWZpYyBkaXJlY3RvcnkKLSsgIC0tZW5hYmxlLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGhlYWRlciBkaXJlY3RvcmllcwotICAgLS1lbmFibGUtcGx1Z2luICAgICAgICAgZW5hYmxlIHBsdWdpbiBzdXBwb3J0Ci0gICAtLWVuYWJsZS1ob3N0LXNoYXJlZCAgICBidWlsZCBob3N0IGNvZGUgYXMgc2hhcmVkIGxpYnJhcmllcwotICAgLS1kaXNhYmxlLWxpYnF1YWRtYXRoLXN1cHBvcnQKLUBAIC0yODIxMSw2ICsyODIxNCwxOSBAQCBpZiB0ZXN0ICIke2VuYWJsZV92ZXJzaW9uX3NwZWNpZmljX3J1bnRpbWVfbGlicytzZXR9IiA9IHNldDsgdGhlbiA6Ci0gZmkKLSAKLSAKLSsjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcyB3YXMgZ2l2ZW4uCi0raWYgdGVzdCAiJHtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcytzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICBlbmFibGV2YWw9JGVuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzOwotK2Vsc2UKLSsgIGVuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzPW5vCi0rZmkKLSsKLStpZiB0ZXN0ICJ4JHtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllc30iID0gInh5ZXMiOyB0aGVuCi0rCi0rJGFzX2VjaG8gIiNkZWZpbmUgRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMgMSIgPj5jb25mZGVmcy5oCi0rCi0rZmkKLSsKLSAjIFN1YnN0aXR1dGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMKLSAKLSAKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYwotaW5kZXggZDQxNDA4MS4uMjQwZDMyMiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWd1cmUuYWMKLSsrKyBiL2djYy9jb25maWd1cmUuYWMKLUBAIC01NjU0LDYgKzU2NTQsMTYgQEAgQUNfQVJHX0VOQUJMRSh2ZXJzaW9uLXNwZWNpZmljLXJ1bnRpbWUtbGlicywKLSAgICAgICAgICAgICAgICAgW3NwZWNpZnkgdGhhdCBydW50aW1lIGxpYnJhcmllcyBzaG91bGQgYmUKLSAgICAgICAgICAgICAgICAgIGluc3RhbGxlZCBpbiBhIGNvbXBpbGVyLXNwZWNpZmljIGRpcmVjdG9yeV0pXSkKLSAKLStBQ19BUkdfRU5BQkxFKFtwb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzXSwKLSsgICAgICAgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXNdLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbd2FybiBmb3IgdXNlIG9mIG5hdGl2ZSBzeXN0ZW0gaGVhZGVyIGRpcmVjdG9yaWVzXSksLAotKyAgICAgICAgICAgICBbZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXM9bm9dKQotK2lmIHRlc3QgIngke2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzfSIgPSAieHllcyI7IHRoZW4KLSsgIEFDX0RFRklORShbRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVNdLAotKyAgICAgICAgICAgWzFdLAotKyAgICAgICAgICAgW0RlZmluZSB0byB3YXJuIGZvciB1c2Ugb2YgbmF0aXZlIHN5c3RlbSBoZWFkZXIgZGlyZWN0b3JpZXNdKQotK2ZpCi0rCi0gIyBTdWJzdGl0dXRlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzCi0gQUNfU1VCU1Qoc3ViZGlycykKLSBBQ19TVUJTVChzcmNkaXIpCi1kaWZmIC0tZ2l0IGEvZ2NjL2RvYy9pbnZva2UudGV4aSBiL2djYy9kb2MvaW52b2tlLnRleGkKLWluZGV4IGQzYmU1ODkuLmM4MWI1NWIgMTAwNjQ0Ci0tLS0gYS9nY2MvZG9jL2ludm9rZS50ZXhpCi0rKysgYi9nY2MvZG9jL2ludm9rZS50ZXhpCi1AQCAtMjY5LDYgKzI2OSw3IEBAIE9iamVjdGl2ZS1DIGFuZCBPYmplY3RpdmUtQysrIERpYWxlY3RzfS4KLSAtV292ZXJsZW5ndGgtc3RyaW5ncyAgLVdwYWNrZWQgIC1XcGFja2VkLWJpdGZpZWxkLWNvbXBhdCAgLVdwYWRkZWQgQGdvbAotIC1XcGFyZW50aGVzZXMgIC1XcGVkYW50aWMtbXMtZm9ybWF0IC1Xbm8tcGVkYW50aWMtbXMtZm9ybWF0IEBnb2wKLSAtV3BvaW50ZXItYXJpdGggIC1Xbm8tcG9pbnRlci10by1pbnQtY2FzdCBAZ29sCi0rLVduby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzIEBnb2wKLSAtV3JlZHVuZGFudC1kZWNscyAgLVduby1yZXR1cm4tbG9jYWwtYWRkciBAZ29sCi0gLVdyZXR1cm4tdHlwZSAgLVdzZXF1ZW5jZS1wb2ludCAgLVdzaGFkb3cgIC1Xbm8tc2hhZG93LWl2YXIgQGdvbAotIC1Xc2hpZnQtY291bnQtbmVnYXRpdmUgLVdzaGlmdC1jb3VudC1vdmVyZmxvdyBAZ29sCi1AQCAtNDQzMyw2ICs0NDM0LDE0IEBAIG1hZGUgdXAgb2YgZGF0YSBvbmx5IGFuZCB0aHVzIHJlcXVpcmVzIG5vIHNwZWNpYWwgdHJlYXRtZW50LiAgQnV0LCBmb3IKLSBtb3N0IHRhcmdldHMsIGl0IGlzIG1hZGUgdXAgb2YgY29kZSBhbmQgdGh1cyByZXF1aXJlcyB0aGUgc3RhY2sgdG8gYmUKLSBtYWRlIGV4ZWN1dGFibGUgaW4gb3JkZXIgZm9yIHRoZSBwcm9ncmFtIHRvIHdvcmsgcHJvcGVybHkuCi0gCi0rQGl0ZW0gLVduby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCi0rQG9waW5kZXggV25vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKLStEbyBub3Qgd2FybiBmb3IgQG9wdGlvbnstSX0gb3IgQG9wdGlvbnstTH0gb3B0aW9ucyB1c2luZyBzeXN0ZW0KLStkaXJlY3RvcmllcyBzdWNoIGFzIEBmaWxley91c3IvaW5jbHVkZX0gd2hlbiBjcm9zcyBjb21waWxpbmcuICBUaGlzCi0rb3B0aW9uIGlzIGludGVuZGVkIGZvciB1c2UgaW4gY2hyb290IGVudmlyb25tZW50cyB3aGVuIHN1Y2gKLStkaXJlY3RvcmllcyBjb250YWluIHRoZSBjb3JyZWN0IGhlYWRlcnMgYW5kIGxpYnJhcmllcyBmb3IgdGhlIHRhcmdldAotK3N5c3RlbSByYXRoZXIgdGhhbiB0aGUgaG9zdC4KLSsKLSBAaXRlbSAtV2Zsb2F0LWVxdWFsCi0gQG9waW5kZXggV2Zsb2F0LWVxdWFsCi0gQG9waW5kZXggV25vLWZsb2F0LWVxdWFsCi1kaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCi1pbmRleCBkOTU2YzM2Li42NzViY2MxIDEwMDY0NAotLS0tIGEvZ2NjL2djYy5jCi0rKysgYi9nY2MvZ2NjLmMKLUBAIC04MzUsNiArODM1LDggQEAgcHJvcGVyIHBvc2l0aW9uIGFtb25nIHRoZSBvdGhlciBvdXRwdXQgZmlsZXMuICAqLwotICAgICIle2Z1c2UtbGQ9KjotZnVzZS1sZD0lKn0gIiBMSU5LX0NPTVBSRVNTX0RFQlVHX1NQRUMgXAotICAgICIlWCAle28qfSAle2UqfSAle059ICV7bn0gJXtyfVwKLSAgICAgJXtzfSAle3R9ICV7dSp9ICV7en0gJXtafSAleyFub3N0ZGxpYjoleyFub3N0YXJ0ZmlsZXM6JVN9fSAiIFZUQUJMRV9WRVJJRklDQVRJT05fU1BFQyAiIFwKLSsgICAgJXtXbm8tcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllczotLW5vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXN9XAotKyAgICAle1dlcnJvcj1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzOi0tZXJyb3ItcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllc31cCi0gICAgICV7c3RhdGljOn0gJXtMKn0gJShtZndyYXApICUobGlua19saWJnY2MpICIgU0FOSVRJWkVSX0VBUkxZX1NQRUMgIiAlb1wKLSAgICAgIiBDSEtQX1NQRUMgIiBcCi0gICAgICV7Zm9wZW5hY2N8Zm9wZW5tcHxmdHJlZS1wYXJhbGxlbGl6ZS1sb29wcz0qOiU6aW5jbHVkZShsaWJnb21wLnNwZWMpJShsaW5rX2dvbXApfVwKLWRpZmYgLS1naXQgYS9nY2MvaW5jcGF0aC5jIGIvZ2NjL2luY3BhdGguYwotaW5kZXggNmM1NGNhNi4uY2MwYzkyMSAxMDA2NDQKLS0tLSBhL2djYy9pbmNwYXRoLmMKLSsrKyBiL2djYy9pbmNwYXRoLmMKLUBAIC0yOCw2ICsyOCw3IEBACi0gI2luY2x1ZGUgImludGwuaCIKLSAjaW5jbHVkZSAiaW5jcGF0aC5oIgotICNpbmNsdWRlICJjcHBkZWZhdWx0LmgiCi0rI2luY2x1ZGUgImRpYWdub3N0aWMtY29yZS5oIgotIAotIC8qIE1pY3Jvc29mdCBXaW5kb3dzIGRvZXMgbm90IG5hdGl2ZWx5IHN1cHBvcnQgaW5vZGVzLgotICAgIFZNUyBoYXMgbm9uLW51bWVyaWMgaW5vZGVzLiAgKi8KLUBAIC0zODMsNiArMzg0LDI0IEBAIG1lcmdlX2luY2x1ZGVfY2hhaW5zIChjb25zdCBjaGFyICpzeXNyb290LCBjcHBfcmVhZGVyICpwZmlsZSwgaW50IHZlcmJvc2UpCi0gCX0KLSAgICAgICBmcHJpbnRmIChzdGRlcnIsIF8oIkVuZCBvZiBzZWFyY2ggbGlzdC5cbiIpKTsKLSAgICAgfQotKwotKyNpZmRlZiBFTkFCTEVfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUwotKyAgaWYgKGZsYWdfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcykKLSsgICAgewotKyAgICAgICBzdHJ1Y3QgY3BwX2RpciAqcDsKLSsKLSsgICAgICAgZm9yIChwID0gaGVhZHNbUVVPVEVdOyBwOyBwID0gcC0+bmV4dCkKLSsgICAgICAgICB7Ci0rICAgICAgICAgIGlmICgoIXN0cm5jbXAgKHAtPm5hbWUsICIvdXNyL2luY2x1ZGUiLCAxMikpCi0rICAgICAgICAgICAgICB8fCAoIXN0cm5jbXAgKHAtPm5hbWUsICIvdXNyL2xvY2FsL2luY2x1ZGUiLCAxOCkpCi0rICAgICAgICAgICAgICB8fCAoIXN0cm5jbXAgKHAtPm5hbWUsICIvdXNyL1gxMVI2L2luY2x1ZGUiLCAxOCkpKQotKyAgICAgICAgICAgIHdhcm5pbmcgKE9QVF9XcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcywKLSsgICAgICAgICAgICAgICAgICAgICAiaW5jbHVkZSBsb2NhdGlvbiBcIiVzXCIgaXMgdW5zYWZlIGZvciAiCi0rICAgICAgICAgICAgICAgICAgICAgImNyb3NzLWNvbXBpbGF0aW9uIiwKLSsgICAgICAgICAgICAgICAgICAgICBwLT5uYW1lKTsKLSsgICAgICAgICB9Ci0rICAgIH0KLSsjZW5kaWYKLSB9Ci0gCi0gLyogVXNlIGdpdmVuIC1JIHBhdGhzIGZvciAjaW5jbHVkZSAiLi4uIiBidXQgbm90ICNpbmNsdWRlIDwuLi4+LCBhbmQKLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDExLWdjYy1wb2lzb24tZGlyLWV4dGVuZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAxMS1nY2MtcG9pc29uLWRpci1leHRlbmQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxMWU2OTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDExLWdjYy1wb2lzb24tZGlyLWV4dGVuZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLUZyb20gZGI0MDYwNTRkZTZiMDk2N2NkNzZjYmI5OThmMDViMGM1YWYwYmQ5NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjAwOjM0ICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTEvNDZdIGdjYy1wb2lzb24tZGlyLWV4dGVuZAotCi1BZGQgL3N3L2luY2x1ZGUgYW5kIC9vcHQvaW5jbHVkZSBiYXNlZCBvbiB0aGUgb3JpZ2luYWwKLXplY2tlLW5vLWhvc3QtaW5jbHVkZXMucGF0Y2ggcGF0Y2guICBUaGUgb3JpZ2luYWwgcGF0Y2ggY2hlY2tlZCBmb3IKLS91c3IvaW5jbHVkZSwgL3N3L2luY2x1ZGUgYW5kIC9vcHQvaW5jbHVkZSBhbmQgdGhlbiB0cmlnZ2VyZWQgYSBmYWlsdXJlIGFuZAotYWJvcnRlZC4KLQotSW5zdGVhZCwgd2UgYWRkIHRoZSB0d28gbWlzc2luZyBpdGVtcyB0byB0aGUgY3VycmVudCBzY2FuLiAgSWYgdGhlIHVzZXIKLXdhbnRzIHRoaXMgdG8gYmUgYSBmYWlsdXJlLCB0aGV5IGNhbiBhZGQgIi1XZXJyb3I9cG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcyIuCi0KLVNpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gZ2NjL2luY3BhdGguYyB8IDQgKysrLQotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2djYy9pbmNwYXRoLmMgYi9nY2MvaW5jcGF0aC5jCi1pbmRleCBjYzBjOTIxLi4wYmMxZjY3IDEwMDY0NAotLS0tIGEvZ2NjL2luY3BhdGguYwotKysrIGIvZ2NjL2luY3BhdGguYwotQEAgLTM5NCw3ICszOTQsOSBAQCBtZXJnZV9pbmNsdWRlX2NoYWlucyAoY29uc3QgY2hhciAqc3lzcm9vdCwgY3BwX3JlYWRlciAqcGZpbGUsIGludCB2ZXJib3NlKQotICAgICAgICAgIHsKLSAgICAgICAgICAgaWYgKCghc3RybmNtcCAocC0+bmFtZSwgIi91c3IvaW5jbHVkZSIsIDEyKSkKLSAgICAgICAgICAgICAgIHx8ICghc3RybmNtcCAocC0+bmFtZSwgIi91c3IvbG9jYWwvaW5jbHVkZSIsIDE4KSkKLS0gICAgICAgICAgICAgIHx8ICghc3RybmNtcCAocC0+bmFtZSwgIi91c3IvWDExUjYvaW5jbHVkZSIsIDE4KSkpCi0rICAgICAgICAgICAgICB8fCAoIXN0cm5jbXAgKHAtPm5hbWUsICIvdXNyL1gxMVI2L2luY2x1ZGUiLCAxOCkpCi0rICAgICAgICAgICAgICB8fCAoIXN0cm5jbXAgKHAtPm5hbWUsICIvc3cvaW5jbHVkZSIsIDExKSkKLSsgICAgICAgICAgICAgIHx8ICghc3RybmNtcCAocC0+bmFtZSwgIi9vcHQvaW5jbHVkZSIsIDEyKSkpCi0gICAgICAgICAgICAgd2FybmluZyAoT1BUX1dwb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzLAotICAgICAgICAgICAgICAgICAgICAgICJpbmNsdWRlIGxvY2F0aW9uIFwiJXNcIiBpcyB1bnNhZmUgZm9yICIKLSAgICAgICAgICAgICAgICAgICAgICAiY3Jvc3MtY29tcGlsYXRpb24iLAotLS0gCi0yLjYuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMTItZ2NjLTQuMy4zLVNZU1JPT1RfQ0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMTItZ2NjLTQuMy4zLVNZU1JPT1RfQ0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1MGJiYzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDEyLWdjYy00LjMuMy1TWVNST09UX0NGTEFHU19GT1JfVEFSR0VULnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotRnJvbSAyNzhkMjkzYzRjZWU5NDgyYTIzYWEzNDQzNzQxODYxZmYyZjY3MjEyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MDg6MzEgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxMi80Nl0gZ2NjLTQuMy4zOiBTWVNST09UX0NGTEFHU19GT1JfVEFSR0VUCi0KLUJlZm9yZSBjb21taXR0aW5nLCBJIG5vdGljZWQgdGhhdCBQUi8zMjE2MSB3YXMgbWFya2VkIGFzIGEgZHVwIG9mIFBSLzMyMDA5LCBidXQgbXkgcHJldmlvdXMgcGF0Y2ggZGlkIG5vdCBmaXggaXQuCi0KLVRoaXMgYWx0ZXJuYXRpdmUgcGF0Y2ggaXMgYmV0dGVyIGJlY2F1c2UgaXQgbGV0cyB5b3UganVzdCB1c2UgQ0ZMQUdTX0ZPUl9UQVJHRVQgdG8gc2V0IHRoZSBjb21waWxhdGlvbiBmbGFncyBmb3IgbGliZ2NjLiBTaW5jZSBib290c3RyYXBwZWQgdGFyZ2V0IGxpYnJhcmllcyBhcmUgbmV2ZXIgY29tcGlsZWQgd2l0aCB0aGUgbmF0aXZlIGNvbXBpbGVyLCBpdCBtYWtlcyBsaXR0bGUgc2Vuc2UgdG8gdXNlIGRpZmZlcmVudCBmbGFncyBmb3Igc3RhZ2UxIGFuZCBsYXRlciBzdGFnZXMuIEFuZCBpdCBhbHNvIG1ha2VzIGxpdHRsZSBzZW5zZSB0byB1c2UgYSBkaWZmZXJlbnQgdmFyaWFibGUgdGhhbiBDRkxBR1NfRk9SX1RBUkdFVC4KLQotT3RoZXIgY2hhbmdlcyBJIGhhZCB0byBkbyBpbmNsdWRlOgotCi0tIG1vdmluZyB0aGUgY3JlYXRpb24gb2YgZGVmYXVsdCBDRkxBR1NfRk9SX1RBUkdFVCBmcm9tIE1ha2VmaWxlLmFtIHRvIGNvbmZpZ3VyZS5hYywgYmVjYXVzZSBvdGhlcndpc2UgdGhlIEJPT1RfQ0ZMQUdTIGFyZSBzdWJzdGl0dXRlZCBpbnRvIENGTEFHU19GT1JfVEFSR0VUICh3aGljaCBpcyAiLU8yIC1nICQoQ0ZMQUdTKSIpIHZpYSAkKENGTEFHUykuIEl0IGlzIGFsc28gY2xlYW5lciB0aGlzIHdheSB0aG91Z2guCi0KLS0gcGFzc2luZyB0aGUgcmlnaHQgQ0ZMQUdTIHRvIGNvbmZpZ3VyZSBzY3JpcHRzIGFzIGV4cG9ydGVkIGVudmlyb25tZW50IHZhcmlhYmxlcwotCi1JIGFsc28gc3RvcHBlZCBwYXNzaW5nIExJQkNGTEFHUyB0byBjb25maWd1cmUgc2NyaXB0cyBzaW5jZSB0aGV5IGFyZSB1bnVzZWQgaW4gdGhlIHdob2xlIHNyYyB0cmVlLiBBbmQgSSB1cGRhdGVkIHRoZSBkb2N1bWVudGF0aW9uIGFzIEgtUCByZW1pbmRlZCBtZSB0byBkby4KLQotQm9vdHN0cmFwcGVkL3JlZ3Rlc3RlZCBpNjg2LXBjLWxpbnV4LWdudSwgd2lsbCBjb21taXQgdG8gNC40IHNob3J0bHkuIE9rIGZvciA0LjM/Ci0KLVNpZ25lZC1vZmYtYnk6IFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGNvbmZpZ3VyZSB8IDMyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDMyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQotaW5kZXggMWNiYTNhOS4uOWNhZThkYSAxMDA3NTUKLS0tLSBhL2NvbmZpZ3VyZQotKysrIGIvY29uZmlndXJlCi1AQCAtNjczMyw2ICs2NzMzLDM4IEBAIGZpCi0gCi0gCi0gCi0rIyBEdXJpbmcgZ2NjIGJvb3RzdHJhcCwgaWYgd2UgdXNlIHNvbWUgcmFuZG9tIGNjIGZvciBzdGFnZTEgdGhlbiBDRkxBR1MKLSsjIG1pZ2h0IGJlIGVtcHR5IG9yICItZyIuICBXZSBkb24ndCByZXF1aXJlIGEgQysrIGNvbXBpbGVyLCBzbyBDWFhGTEFHUwotKyMgbWlnaHQgYWxzbyBiZSBlbXB0eSAob3IgIi1nIiwgaWYgYSBub24tR0NDIEMrKyBjb21waWxlciBpcyBpbiB0aGUgcGF0aCkuCi0rIyBXZSB3YW50IHRvIGVuc3VyZSB0aGF0IFRBUkdFVCBsaWJyYXJpZXMgKHdoaWNoIHdlIGtub3cgYXJlIGJ1aWx0IHdpdGgKLSsjIGdjYykgYXJlIGJ1aWx0IHdpdGggIi1PMiAtZyIsIHNvIGluY2x1ZGUgdGhvc2Ugb3B0aW9ucyB3aGVuIHNldHRpbmcKLSsjIENGTEFHU19GT1JfVEFSR0VUIGFuZCBDWFhGTEFHU19GT1JfVEFSR0VULgotK2lmIHRlc3QgIngkQ0ZMQUdTX0ZPUl9UQVJHRVQiID0geDsgdGhlbgotKyAgQ0ZMQUdTX0ZPUl9UQVJHRVQ9JENGTEFHUwotKyAgY2FzZSAiICRDRkxBR1MgIiBpbgotKyAgICAqIiAtTzIgIiopIDs7Ci0rICAgICopIENGTEFHU19GT1JfVEFSR0VUPSItTzIgJENGTEFHUyIgOzsKLSsgIGVzYWMKLSsgIGNhc2UgIiAkQ0ZMQUdTICIgaW4KLSsgICAgKiIgLWcgIiogfCAqIiAtZzMgIiopIDs7Ci0rICAgICopIENGTEFHU19GT1JfVEFSR0VUPSItZyAkQ0ZMQUdTIiA7OwotKyAgZXNhYwotK2ZpCi0rCi0rCi0raWYgdGVzdCAieCRDWFhGTEFHU19GT1JfVEFSR0VUIiA9IHg7IHRoZW4KLSsgIENYWEZMQUdTX0ZPUl9UQVJHRVQ9JENYWEZMQUdTCi0rICBjYXNlICIgJENYWEZMQUdTICIgaW4KLSsgICAgKiIgLU8yICIqKSA7OwotKyAgICAqKSBDWFhGTEFHU19GT1JfVEFSR0VUPSItTzIgJENYWEZMQUdTIiA7OwotKyAgZXNhYwotKyAgY2FzZSAiICRDWFhGTEFHUyAiIGluCi0rICAgICoiIC1nICIqIHwgKiIgLWczICIqKSA7OwotKyAgICAqKSBDWFhGTEFHU19GT1JfVEFSR0VUPSItZyAkQ1hYRkxBR1MiIDs7Ci0rICBlc2FjCi0rZmkKLSsKLSsKLSAjIEhhbmRsZSAtLXdpdGgtaGVhZGVycz1YWFguICBJZiB0aGUgdmFsdWUgaXMgbm90ICJ5ZXMiLCB0aGUgY29udGVudHMgb2YKLSAjIHRoZSBuYW1lZCBkaXJlY3RvcnkgYXJlIGNvcGllZCB0byAkKHRvb2xkaXIpL3N5cy1pbmNsdWRlLgotIGlmIHRlc3QgeCIke3dpdGhfaGVhZGVyc30iICE9IHggJiYgdGVzdCB4IiR7d2l0aF9oZWFkZXJzfSIgIT0geG5vIDsgdGhlbgotLS0gCi0yLjYuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMTMtNjQtYml0LW11bHRpbGliLWhhY2sucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMTMtNjQtYml0LW11bHRpbGliLWhhY2sucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1YWFmNGMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDEzLTY0LWJpdC1tdWx0aWxpYi1oYWNrLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODUgKzAsMCBAQAotRnJvbSBiZGRlNGY1ZWZhM2M4OWFjN2VlMGJjMDVmMzIyZjI3ZTNkYWJlYWI5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MTA6MDYgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxMy80Nl0gNjQtYml0IG11bHRpbGliIGhhY2suCi0KLUdDQyBoYXMgaW50ZXJuYWwgbXVsdGlsaWIgaGFuZGxpbmcgY29kZSBidXQgaXQgYXNzdW1lcyBhIHZlcnkgc3BlY2lmaWMgcmlnaWQgZGlyZWN0b3J5Ci1sYXlvdXQuIFRoZSBidWlsZCBzeXN0ZW0gaW1wbGVtZW50YXRpb24gb2YgbXVsdGlsaWIgbGF5b3V0IGlzIHZlcnkgZ2VuZXJpYyBhbmQgYWxsb3dzCi1jb21wbGV0ZSBjdXN0b21pc2F0aW9uIG9mIHRoZSBsaWJyYXJ5IGRpcmVjdG9yaWVzLgotCi1UaGlzIHBhdGNoIGlzIGEgcGFydGlhbCBzb2x1dGlvbiB0byBhbGxvdyBhbnkgY3VzdG9tIGRpcmVjdG9yaWVzIHRvIGJlIHBhc3NlZCBpbnRvIGdjYwotYW5kIGhhbmRsZWQgY29ycmVjdGx5LiBJdCBmb3JjZXMgZ2NjIHRvIHVzZSB0aGUgYmFzZV9saWJkaXIgKHdoaWNoIGlzIHRoZSBjdXJyZW50Ci1kaXJlY3RvcnksICIuIikuIFdlIG5lZWQgdG8gZG8gdGhpcyBmb3IgZWFjaCBtdWx0aWxpYiB0aGF0IGlzIGNvbmZpZ3VyZWQgYXMgd2UgZG9uJ3QKLWtub3cgd2hpY2ggY29tcGlsZXIgb3B0aW9ucyBtYXkgYmUgYmVpbmcgcGFzc2VkIGludG8gdGhlIGNvbXBpbGVyLiBTaW5jZSB3ZSBoYXZlIGEgY29tcGlsZXIKLXBlciBtdWxpdGxpYiBhdCB0aGlzIHBvaW50IHRoYXQgaXNuJ3QgYW4gaXNzdWUuCi0KLVRoZSBvbmUgcHJvYmxlbSBpcyB0aGUgdGFyZ2V0IGNvbXBpbGVyIGlzIG9ubHkgZ29pbmcgdG8gd29yayBmb3IgdGhlIGRlZmF1bHQgbXVsdGxpbGliIGF0Ci10aGlzIHBvaW50LiBJZGVhbGx5IHdlJ2QgZmlndXJlIG91dCB3aGljaCBtdWx0aWxpYnMgd2VyZSBiZWluZyBlbmFibGVkIHdpdGggd2hpY2ggcGF0aHMKLWFuZCBiZSBhYmxlIHRvIHBhdGNoIHRoZXNlIGVudHJpZXMgd2l0aCBhIGNvbXBsZXRlIHNldCBvZiBjb3JyZWN0IHBhdGhzIGJ1dCB0aGlzIHdlCi1kb24ndCBoYXZlIHN1Y2ggY29kZSBhdCB0aGlzIHBvaW50LiBUaGlzIGlzIHNvbWV0aGluZyB0aGUgdGFyZ2V0IGdjYyByZWNpcGUgc2hvdWxkIGRvCi1hbmQgb3ZlcnJpZGUgdGhlc2UgcGxhdGZvcm0gZGVmYXVsdHMgaW4gaXRzIGJ1aWxkIGNvbmZpZy4KLQotUlAgMTUvOC8xMQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogRWx2aXMgRG93c29uIDxlbHZpcy5kb3dzb25AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGdjYy9jb25maWcvaTM4Ni90LWxpbnV4NjQgICB8ICA2ICsrLS0tLQotIGdjYy9jb25maWcvbWlwcy90LWxpbnV4NjQgICB8IDEwICsrKy0tLS0tLS0KLSBnY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4NjQgfCAgNSArKy0tLQotIDMgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni90LWxpbnV4NjQgYi9nY2MvY29uZmlnL2kzODYvdC1saW51eDY0Ci1pbmRleCBmNmRiYjc4Li5kNzcwZGE1IDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L3QtbGludXg2NAotKysrIGIvZ2NjL2NvbmZpZy9pMzg2L3QtbGludXg2NAotQEAgLTMyLDcgKzMyLDUgQEAKLSAjCi0gY29tbWE9LAotIE1VTFRJTElCX09QVElPTlMgICAgPSAkKHN1YnN0ICQoY29tbWEpLC8sJChUTV9NVUxUSUxJQl9DT05GSUcpKQotLU1VTFRJTElCX0RJUk5BTUVTICAgPSAkKHBhdHN1YnN0IG0lLCAlLCAkKHN1YnN0IC8sICwkKE1VTFRJTElCX09QVElPTlMpKSkKLS1NVUxUSUxJQl9PU0RJUk5BTUVTID0gbTY0PS4uL2xpYjY0JChjYWxsIGlmX211bHRpYXJjaCw6eDg2XzY0LWxpbnV4LWdudSkKLS1NVUxUSUxJQl9PU0RJUk5BTUVTKz0gbTMyPSQoaWYgJCh3aWxkY2FyZCAkKHNoZWxsIGVjaG8gJChTWVNURU1fSEVBREVSX0RJUikpLy4uLy4uL3Vzci9saWIzMiksLi4vbGliMzIsLi4vbGliKSQoY2FsbCBpZl9tdWx0aWFyY2gsOmkzODYtbGludXgtZ251KQotLU1VTFRJTElCX09TRElSTkFNRVMrPSBteDMyPS4uL2xpYngzMiQoY2FsbCBpZl9tdWx0aWFyY2gsOng4Nl82NC1saW51eC1nbnV4MzIpCi0rTVVMVElMSUJfRElSTkFNRVMgPSAuIC4KLStNVUxUSUxJQl9PU0RJUk5BTUVTID0gLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkgLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL21pcHMvdC1saW51eDY0IGIvZ2NjL2NvbmZpZy9taXBzL3QtbGludXg2NAotaW5kZXggN2U5NjQwNi4uYjcyZGNiMCAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvbWlwcy90LWxpbnV4NjQKLSsrKyBiL2djYy9jb25maWcvbWlwcy90LWxpbnV4NjQKLUBAIC0xNywxMCArMTcsNiBAQAotICMgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotIAotIE1VTFRJTElCX09QVElPTlMgPSBtYWJpPW4zMi9tYWJpPTMyL21hYmk9NjQKLS1NVUxUSUxJQl9ESVJOQU1FUyA9IG4zMiAzMiA2NAotLU1JUFNfRUwgPSAkKGlmICQoZmlsdGVyICVlbCwgJChmaXJzdHdvcmQgJChzdWJzdCAtLCAsJCh0YXJnZXQpKSkpLGVsKQotLU1JUFNfU09GVCA9ICQoaWYgJChzdHJpcCAkKGZpbHRlciBNQVNLX1NPRlRfRkxPQVRfQUJJLCAkKHRhcmdldF9jcHVfZGVmYXVsdCkpICQoZmlsdGVyIHNvZnQsICQod2l0aF9mbG9hdCkpKSxzb2Z0KQotLU1VTFRJTElCX09TRElSTkFNRVMgPSBcCi0tCS4uL2xpYjMyJChjYWxsIGlmX211bHRpYXJjaCw6bWlwczY0JChNSVBTX0VMKS1saW51eC1nbnVhYmluMzIkKE1JUFNfU09GVCkpIFwKLS0JLi4vbGliJChjYWxsIGlmX211bHRpYXJjaCw6bWlwcyQoTUlQU19FTCktbGludXgtZ251JChNSVBTX1NPRlQpKSBcCi0tCS4uL2xpYjY0JChjYWxsIGlmX211bHRpYXJjaCw6bWlwczY0JChNSVBTX0VMKS1saW51eC1nbnVhYmk2NCQoTUlQU19TT0ZUKSkKLStNVUxUSUxJQl9ESVJOQU1FUyA9IC4gLiAuCi0rTVVMVElMSUJfT1NESVJOQU1FUyA9IC4uLyQoc2hlbGwgYmFzZW5hbWUgJChiYXNlX2xpYmRpcikpIC4uLyQoc2hlbGwgYmFzZW5hbWUgJChiYXNlX2xpYmRpcikpIC4uLyQoc2hlbGwgYmFzZW5hbWUgJChiYXNlX2xpYmRpcikpCi0rCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eDY0IGIvZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eDY0Ci1pbmRleCBiNmIzNTFkLi4xZDViMzdhIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eDY0Ci0rKysgYi9nY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4NjQKLUBAIC0yNiwxMCArMjYsOSBAQAotICMgTVVMVElMSUJfT1NESVJOQU1FUyBhY2NvcmRpbmcgdG8gd2hhdCBpcyBmb3VuZCBvbiB0aGUgdGFyZ2V0LgotIAotIE1VTFRJTElCX09QVElPTlMgICAgOj0gbTY0L20zMgotLU1VTFRJTElCX0RJUk5BTUVTICAgOj0gNjQgMzIKLStNVUxUSUxJQl9ESVJOQU1FUyAgIDo9IC4gLgotIE1VTFRJTElCX0VYVFJBX09QVFMgOj0gCi0tTVVMVElMSUJfT1NESVJOQU1FUyA6PSBtNjQ9Li4vbGliNjQkKGNhbGwgaWZfbXVsdGlhcmNoLDpwb3dlcnBjNjQtbGludXgtZ251KQotLU1VTFRJTElCX09TRElSTkFNRVMgKz0gbTMyPSQoaWYgJCh3aWxkY2FyZCAkKHNoZWxsIGVjaG8gJChTWVNURU1fSEVBREVSX0RJUikpLy4uLy4uL3Vzci9saWIzMiksLi4vbGliMzIsLi4vbGliKSQoY2FsbCBpZl9tdWx0aWFyY2gsOnBvd2VycGMtbGludXgtZ251KQotK01VTFRJTElCX09TRElSTkFNRVMgOj0gLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkgLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkKLSAKLSByczYwMDAtbGludXgubzogJChzcmNkaXIpL2NvbmZpZy9yczYwMDAvcnM2MDAwLWxpbnV4LmMKLSAJJChDT01QSUxFKSAkPAotLS0gCi0yLjYuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMTQtb3B0aW9uYWwtbGlic3RkYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAxNC1vcHRpb25hbC1saWJzdGRjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3Mzc0MWY4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAxNC1vcHRpb25hbC1saWJzdGRjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTAxICswLDAgQEAKLUZyb20gYTEzNzYzZjhhMWQ0MTNhNDMyZTdiNDA4MzVhMDYyZjg2MjA4ZjI5YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjEyOjU2ICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTQvNDZdIG9wdGlvbmFsIGxpYnN0ZGMKLQotZ2NjLXJ1bnRpbWUgYnVpbGRzIGxpYnN0ZGMrKyBzZXBhcmF0ZWx5IGZyb20gZ2NjLWNyb3NzLSouIEl0cyBjb25maWd1cmUgdGVzdHMgdXNpbmcgZysrCi13aWxsIG5vdCBydW4gY29ycmVjdGx5IHNpbmNlIGJ5IGRlZmF1bHQgdGhlIGxpbmtlciB3aWxsIHRyeSB0byBsaW5rIGFnYWluc3QgbGlic3RkYysrCi13aGljaCBzaG91bGRuJ3QgZXhpc3QgeWV0LiBXZSBuZWVkIGFuIG9wdGlvbiB0byBkaXNhYmxlIC1sc3RkYysrCi1vcHRpb24gd2hpbHN0IGxlYXZpbmcgLWxjLCAtbGdjYyBhbmQgb3RoZXIgYXV0b21hdGljIGxpYnJhcnkgZGVwZW5kZW5jaWVzIGFkZGVkIGJ5IGdjYwotZHJpdmVyLiBUaGlzIHBhdGNoIGFkZHMgc3VjaCBhbiBvcHRpb24gd2hpY2ggb25seSBkaXNhYmxlcyB0aGUgLWxzdGRjKysuCi0KLUEgInN0YW5kYXJkIiBnY2MgYnVpbGQgdXNlcyB4Z2NjIGFuZCBoZW5jZSBhdm9pZHMgdGhpcy4gV2Ugc2hvdWxkIGFzayB1cHN0cmVhbSBob3cgdG8KLWRvIHRoaXMgb2ZmaWNpYWxseSwgdGhlIGxpa2VseSBhbnN3ZXIgaXMgZG9uJ3QgYnVpbGQgbGlic3RkYysrIHNlcGFyYXRlbHkuCi0KLVJQIDI5LzYvMTAKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLS0tLQotIGdjYy9jLWZhbWlseS9jLm9wdCAgfCA0ICsrKysKLSBnY2MvY3AvZysrc3BlYy5jICAgIHwgMSArCi0gZ2NjL2RvYy9pbnZva2UudGV4aSB8IDggKysrKysrKy0KLSBnY2MvZ2NjLmMgICAgICAgICAgIHwgMSArCi0gNCBmaWxlcyBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvYy1mYW1pbHkvYy5vcHQgYi9nY2MvYy1mYW1pbHkvYy5vcHQKLWluZGV4IDQxNjI1NjYuLjQ1M2VjOGUgMTAwNjQ0Ci0tLS0gYS9nY2MvYy1mYW1pbHkvYy5vcHQKLSsrKyBiL2djYy9jLWZhbWlseS9jLm9wdAotQEAgLTE1NDMsNiArMTU0MywxMCBAQCBub3N0ZGluYysrCi0gQysrIE9iakMrKwotIERvIG5vdCBzZWFyY2ggc3RhbmRhcmQgc3lzdGVtIGluY2x1ZGUgZGlyZWN0b3JpZXMgZm9yIEMrKwotIAotK25vc3RkbGliKysKLStEcml2ZXIKLStEbyBub3QgbGluayBzdGFuZGFyZCBDKysgcnVudGltZSBsaWJyYXJ5Ci0rCi0gbwotIEMgT2JqQyBDKysgT2JqQysrIEpvaW5lZCBTZXBhcmF0ZQotIDsgRG9jdW1lbnRlZCBpbiBjb21tb24ub3B0Ci1kaWZmIC0tZ2l0IGEvZ2NjL2NwL2crK3NwZWMuYyBiL2djYy9jcC9nKytzcGVjLmMKLWluZGV4IDY1MzZkN2UuLmY1N2E1ZDQgMTAwNjQ0Ci0tLS0gYS9nY2MvY3AvZysrc3BlYy5jCi0rKysgYi9nY2MvY3AvZysrc3BlYy5jCi1AQCAtMTM4LDYgKzEzOCw3IEBAIGxhbmdfc3BlY2lmaWNfZHJpdmVyIChzdHJ1Y3QgY2xfZGVjb2RlZF9vcHRpb24gKippbl9kZWNvZGVkX29wdGlvbnMsCi0gICAgICAgc3dpdGNoIChkZWNvZGVkX29wdGlvbnNbaV0ub3B0X2luZGV4KQotIAl7Ci0gCWNhc2UgT1BUX25vc3RkbGliOgotKwljYXNlIE9QVF9ub3N0ZGxpYl9fOgotIAljYXNlIE9QVF9ub2RlZmF1bHRsaWJzOgotIAkgIGxpYnJhcnkgPSAtMTsKLSAJICBicmVhazsKLWRpZmYgLS1naXQgYS9nY2MvZG9jL2ludm9rZS50ZXhpIGIvZ2NjL2RvYy9pbnZva2UudGV4aQotaW5kZXggYzgxYjU1Yi4uNmQzZjY4YyAxMDA2NDQKLS0tLSBhL2djYy9kb2MvaW52b2tlLnRleGkKLSsrKyBiL2djYy9kb2MvaW52b2tlLnRleGkKLUBAIC0xOTUsNiArMTk1LDcgQEAgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9ucy4KLSAtZnZpc2liaWxpdHktaW5saW5lcy1oaWRkZW4gQGdvbAotIC1mdnRhYmxlLXZlcmlmeT1AcntbfXN0ZEBye3x9cHJlaW5pdEBye3x9bm9uZUBye119IEBnb2wKLSAtZnZ0di1jb3VudHMgLWZ2dHYtZGVidWcgQGdvbAotKy1ub3N0ZGxpYisrIEBnb2wKLSAtZnZpc2liaWxpdHktbXMtY29tcGF0IEBnb2wKLSAtZmV4dC1udW1lcmljLWxpdGVyYWxzIEBnb2wKLSAtV2FiaT1AdmFye259ICAtV2FiaS10YWcgIC1XY29udmVyc2lvbi1udWxsICAtV2N0b3ItZHRvci1wcml2YWN5IEBnb2wKLUBAIC00ODgsNyArNDg5LDcgQEAgT2JqZWN0aXZlLUMgYW5kIE9iamVjdGl2ZS1DKysgRGlhbGVjdHN9LgotIC1zICAtc3RhdGljIC1zdGF0aWMtbGliZ2NjIC1zdGF0aWMtbGlic3RkYysrIEBnb2wKLSAtc3RhdGljLWxpYmFzYW4gLXN0YXRpYy1saWJ0c2FuIC1zdGF0aWMtbGlibHNhbiAtc3RhdGljLWxpYnVic2FuIEBnb2wKLSAtc3RhdGljLWxpYm1weCAtc3RhdGljLWxpYm1weHdyYXBwZXJzIEBnb2wKLS0tc2hhcmVkIC1zaGFyZWQtbGliZ2NjICAtc3ltYm9saWMgQGdvbAotKy1zaGFyZWQgLXNoYXJlZC1saWJnY2MgIC1zeW1ib2xpYyAtbm9zdGRsaWIrKyBAZ29sCi0gLVQgQHZhcntzY3JpcHR9ICAtV2wsQHZhcntvcHRpb259ICAtWGxpbmtlciBAdmFye29wdGlvbn0gQGdvbAotIC11IEB2YXJ7c3ltYm9sfSAteiBAdmFye2tleXdvcmR9fQotIAotQEAgLTExMTg3LDYgKzExMTg4LDExIEBAIFRoZXNlIGVudHJpZXMgYXJlIHVzdWFsbHkgcmVzb2x2ZWQgYnkgZW50cmllcyBpbgotIGxpYmMuICBUaGVzZSBlbnRyeSBwb2ludHMgc2hvdWxkIGJlIHN1cHBsaWVkIHRocm91Z2ggc29tZSBvdGhlcgotIG1lY2hhbmlzbSB3aGVuIHRoaXMgb3B0aW9uIGlzIHNwZWNpZmllZC4KLSAKLStAaXRlbSAtbm9zdGRsaWIrKwotK0BvcGluZGV4IG5vc3RkbGliKysKLStEbyBub3QgdXNlIHRoZSBzdGFuZGFyZCBzeXN0ZW0gQysrIHJ1bnRpbWUgbGlicmFyaWVzIHdoZW4gbGlua2luZy4KLStPbmx5IHRoZSBsaWJyYXJpZXMgeW91IHNwZWNpZnkgd2lsbCBiZSBwYXNzZWQgdG8gdGhlIGxpbmtlci4KLSsKLSBAY2luZGV4IEBvcHRpb257LWxnY2N9LCB1c2Ugd2l0aCBAb3B0aW9uey1ub3N0ZGxpYn0KLSBAY2luZGV4IEBvcHRpb257LW5vc3RkbGlifSBhbmQgdW5yZXNvbHZlZCByZWZlcmVuY2VzCi0gQGNpbmRleCB1bnJlc29sdmVkIHJlZmVyZW5jZXMgYW5kIEBvcHRpb257LW5vc3RkbGlifQotZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYwotaW5kZXggNjc1YmNjMS4uYTM3ZWM4YiAxMDA2NDQKLS0tLSBhL2djYy9nY2MuYwotKysrIGIvZ2NjL2djYy5jCi1AQCAtODQ1LDYgKzg0NSw3IEBAIHByb3BlciBwb3NpdGlvbiBhbW9uZyB0aGUgb3RoZXIgb3V0cHV0IGZpbGVzLiAgKi8KLSAgICAgJShtZmxpYikgIiBTVEFDS19TUExJVF9TUEVDICJcCi0gICAgICV7ZnByb2ZpbGUtYXJjc3xmcHJvZmlsZS1nZW5lcmF0ZSp8Y292ZXJhZ2U6LWxnY292fSAiIFNBTklUSVpFUl9TUEVDICIgXAotICAgICAleyFub3N0ZGxpYjoleyFub2RlZmF1bHRsaWJzOiUobGlua19zc3ApICUobGlua19nY2NfY19zZXF1ZW5jZSl9fVwKLSsgICAgJXshbm9zdGRsaWIrKzp9XAotICAgICAleyFub3N0ZGxpYjoleyFub3N0YXJ0ZmlsZXM6JUV9fSAle1QqfSB9fX19fX0iCi0gI2VuZGlmCi0gCi0tLSAKLTIuNi4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAxNS1nY2MtZGlzYWJsZS1NQVNLX1JFTEFYX1BJQ19DQUxMUy1iaXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMTUtZ2NjLWRpc2FibGUtTUFTS19SRUxBWF9QSUNfQ0FMTFMtYml0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYjYyZWY4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAxNS1nY2MtZGlzYWJsZS1NQVNLX1JFTEFYX1BJQ19DQUxMUy1iaXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi1Gcm9tIDRiZDIxYTFkNjNjZmIxNGUyNjFkOTBhZGMwYzVkNGY5NDYyZGM1NTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToxNDoyMCArMDQwMAotU3ViamVjdDogW1BBVENIIDE1LzQ2XSBnY2M6IGRpc2FibGUgTUFTS19SRUxBWF9QSUNfQ0FMTFMgYml0Ci0KLVRoZSBuZXcgZmVhdHVyZSBhZGRlZCBhZnRlciA0LjMuMwotImh0dHA6Ly93d3cucHViYnMubmV0LzIwMDkwOS9nY2MvOTQwNDgtcGF0Y2gtYWRkLXN1cHBvcnQtZm9yLXJtaXBzamFsci5odG1sIgotd2lsbCBjYXVzZSBjYzFwbHVzIGVhdCB1cCBhbGwgdGhlIHN5c3RlbSBtZW1vcnkgd2hlbiBidWlsZCB3ZWJraXQtZ3RrLgotVGhlIGZ1bmN0aW9uIG1pcHNfZ2V0X3BpY19jYWxsX3N5bWJvbCBrZWVwcyBvbiByZWN1cnNpdmVseSBjYWxsaW5nIGl0c2VsZi4KLURpc2FibGUgdGhpcyBmZWF0dXJlIHRvIHdhbGsgYXNpZGUgdGhlIGJ1Zy4KLQotU2lnbmVkLW9mZi1ieTogRG9uZ3hpYW8gWHUgPGRvbmd4aWFvLnh1QGludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLS0tLQotIGdjYy9jb25maWd1cmUgICAgfCA3IC0tLS0tLS0KLSBnY2MvY29uZmlndXJlLmFjIHwgNyAtLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAxNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUgYi9nY2MvY29uZmlndXJlCi1pbmRleCAzNDM3MWEzLi44Y2FlY2RjIDEwMDc1NQotLS0tIGEvZ2NjL2NvbmZpZ3VyZQotKysrIGIvZ2NjL2NvbmZpZ3VyZQotQEAgLTI2NDc5LDEzICsyNjQ3OSw2IEBAICRhc19lY2hvX24gImNoZWNraW5nIGFzc2VtYmxlciBhbmQgbGlua2VyIGZvciBleHBsaWNpdCBKQUxSIHJlbG9jYXRpb24uLi4gIiA+JjY7Ci0gICAgICAgICBybSAtZiBjb25mdGVzdC4qCi0gICAgICAgZmkKLSAgICAgZmkKLS0gICAgaWYgdGVzdCAkZ2NjX2N2X2FzX2xkX2phbHJfcmVsb2MgPSB5ZXM7IHRoZW4KLS0gICAgICBpZiB0ZXN0IHgkdGFyZ2V0X2NwdV9kZWZhdWx0ID0geDsgdGhlbgotLSAgICAgICAgdGFyZ2V0X2NwdV9kZWZhdWx0PU1BU0tfUkVMQVhfUElDX0NBTExTCi0tICAgICAgZWxzZQotLSAgICAgICAgdGFyZ2V0X2NwdV9kZWZhdWx0PSIoJHRhcmdldF9jcHVfZGVmYXVsdCl8TUFTS19SRUxBWF9QSUNfQ0FMTFMiCi0tICAgICAgZmkKLS0gICAgZmkKLSAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRnY2NfY3ZfYXNfbGRfamFscl9yZWxvYyIgPiY1Ci0gJGFzX2VjaG8gIiRnY2NfY3ZfYXNfbGRfamFscl9yZWxvYyIgPiY2OyB9Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZS5hYyBiL2djYy9jb25maWd1cmUuYWMKLWluZGV4IDI0MGQzMjIuLjU3ODE5ZmYgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlndXJlLmFjCi0rKysgYi9nY2MvY29uZmlndXJlLmFjCi1AQCAtNDM4NCwxMyArNDM4NCw2IEBAIHg6Ci0gICAgICAgICBybSAtZiBjb25mdGVzdC4qCi0gICAgICAgZmkKLSAgICAgZmkKLS0gICAgaWYgdGVzdCAkZ2NjX2N2X2FzX2xkX2phbHJfcmVsb2MgPSB5ZXM7IHRoZW4KLS0gICAgICBpZiB0ZXN0IHgkdGFyZ2V0X2NwdV9kZWZhdWx0ID0geDsgdGhlbgotLSAgICAgICAgdGFyZ2V0X2NwdV9kZWZhdWx0PU1BU0tfUkVMQVhfUElDX0NBTExTCi0tICAgICAgZWxzZQotLSAgICAgICAgdGFyZ2V0X2NwdV9kZWZhdWx0PSIoJHRhcmdldF9jcHVfZGVmYXVsdCl8TUFTS19SRUxBWF9QSUNfQ0FMTFMiCi0tICAgICAgZmkKLS0gICAgZmkKLSAgICAgQUNfTVNHX1JFU1VMVCgkZ2NjX2N2X2FzX2xkX2phbHJfcmVsb2MpCi0gCi0gICAgIEFDX0NBQ0hFX0NIRUNLKFtsaW5rZXIgZm9yIC5laF9mcmFtZSBwZXJzb25hbGl0eSByZWxheGF0aW9uXSwKLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDE2LUNPTExFQ1RfR0NDX09QVElPTlMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMTYtQ09MTEVDVF9HQ0NfT1BUSU9OUy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTZhZTI2Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMTYtQ09MTEVDVF9HQ0NfT1BUSU9OUy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLUZyb20gOTI0MjdlYmI5NGRjNjZmOGU2NGViZjNmZmJjZDZkZDVjZTA5MzVjMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjE2OjI4ICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTYvNDZdIENPTExFQ1RfR0NDX09QVElPTlMKLQotVGhpcyBwYXRjaCBhZGRzIC0tc3lzcm9vdCBpbnRvIENPTExFQ1RfR0NDX09QVElPTlMgd2hpY2ggaXMgdXNlZCB0bwotaW52b2tlIGNvbGxlY3QyLgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGdjYy9nY2MuYyB8IDkgKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCi1pbmRleCBhMzdlYzhiLi44N2I0N2M1IDEwMDY0NAotLS0tIGEvZ2NjL2djYy5jCi0rKysgYi9nY2MvZ2NjLmMKLUBAIC00MzUyLDYgKzQzNTIsMTUgQEAgc2V0X2NvbGxlY3RfZ2NjX29wdGlvbnMgKHZvaWQpCi0gCQlzaXplb2YgKCJDT0xMRUNUX0dDQ19PUFRJT05TPSIpIC0gMSk7Ci0gCi0gICBmaXJzdF90aW1lID0gVFJVRTsKLSsjaWZkZWYgSEFWRV9MRF9TWVNST09UCi0rICBpZiAodGFyZ2V0X3N5c3RlbV9yb290X2NoYW5nZWQgJiYgdGFyZ2V0X3N5c3RlbV9yb290KQotKyAgICB7Ci0rICAgICAgb2JzdGFja19ncm93ICgmY29sbGVjdF9vYnN0YWNrLCAiJy0tc3lzcm9vdD0iLCBzaXplb2YoIictLXN5c3Jvb3Q9IiktMSk7Ci0rICAgICAgb2JzdGFja19ncm93ICgmY29sbGVjdF9vYnN0YWNrLCB0YXJnZXRfc3lzdGVtX3Jvb3Qsc3RybGVuKHRhcmdldF9zeXN0ZW1fcm9vdCkpOwotKyAgICAgIG9ic3RhY2tfZ3JvdyAoJmNvbGxlY3Rfb2JzdGFjaywgIiciLCAxKTsKLSsgICAgICBmaXJzdF90aW1lID0gRkFMU0U7Ci0rICAgIH0KLSsjZW5kaWYKLSAgIGZvciAoaSA9IDA7IChpbnQpIGkgPCBuX3N3aXRjaGVzOyBpKyspCi0gICAgIHsKLSAgICAgICBjb25zdCBjaGFyICpjb25zdCAqYXJnczsKLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDE3LVVzZS10aGUtZGVmYXVsdHMuaC1pbi1CLWluc3RlYWQtb2YtUy1hbmQtdC1vZS1pbi1CLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDE3LVVzZS10aGUtZGVmYXVsdHMuaC1pbi1CLWluc3RlYWQtb2YtUy1hbmQtdC1vZS1pbi1CLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiODlhMjc5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAxNy1Vc2UtdGhlLWRlZmF1bHRzLmgtaW4tQi1pbnN0ZWFkLW9mLVMtYW5kLXQtb2UtaW4tQi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDk2ICswLDAgQEAKLUZyb20gYjFmMzExOGU0Mzk0NTljMjZhM2UxOWM2MTdiN2IwYzkzNzQ1ZTc3YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjE3OjI1ICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTcvNDZdIFVzZSB0aGUgZGVmYXVsdHMuaCBpbiAke0J9IGluc3RlYWQgb2YgJHtTfSwgYW5kIHQtb2UgaW4KLSAke0J9Ci0KLVVzZSB0aGUgZGVmYXVsdHMuaCBpbiAke0J9IGluc3RlYWQgb2YgJHtTfSwgYW5kIHQtb2UgaW4gJHtCfSwgc28gdGhhdAotdGhlIHNvdXJjZSBjYW4gYmUgc2hhcmVkIGJldHdlZW4gZ2NjLWNyb3NzLWluaXRpYWwsCi1nY2MtY3Jvc3MtaW50ZXJtZWRpYXRlLCBnY2MtY3Jvc3MsIGdjYy1ydW50aW1lLCBhbmQgYWxzbyB0aGUgc2RrIGJ1aWxkLgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotV2hpbGUgY29tcGlsaW5nIGdjYy1jcm9zc3Nkay1pbml0aWFsLXg4Nl82NCBvbiBzb21lIGhvc3QsIHRoZXJlIGlzCi1vY2Nhc2lvbmFsbHkgZmFpbHVyZSB0aGF0IHRlc3QgdGhlIGV4aXN0YW5jZSBvZiBkZWZhdWx0LmggZG9lc24ndAotd29yaywgdGhlIHJlYXNvbiBpcyB0bV9pbmNsdWRlX2xpc3Q9JyoqIGRlZmF1bHRzLmgnIHJhdGhlciB0aGFuCi10bV9pbmNsdWRlX2xpc3Q9JyoqIC4vZGVmYXVsdHMuaCcKLQotU28gd2UgYWRkIHRoZSB0ZXN0IGNvbmRpdGlvbiBmb3IgdGhpcyBzaXR1YXRpb24uCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBnY2MvTWFrZWZpbGUuaW4gIHwgMiArLQotIGdjYy9jb25maWd1cmUgICAgfCA0ICsrLS0KLSBnY2MvY29uZmlndXJlLmFjIHwgNCArKy0tCi0gZ2NjL21rY29uZmlnLnNoICB8IDQgKystLQotIDQgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL01ha2VmaWxlLmluIGIvZ2NjL01ha2VmaWxlLmluCi1pbmRleCAwN2M2ZjBhLi5lMWU2M2U4IDEwMDY0NAotLS0tIGEvZ2NjL01ha2VmaWxlLmluCi0rKysgYi9nY2MvTWFrZWZpbGUuaW4KLUBAIC01MDIsNyArNTAyLDcgQEAgVEFSR0VUX1NZU1RFTV9ST09UID0gQFRBUkdFVF9TWVNURU1fUk9PVEAKLSBUQVJHRVRfU1lTVEVNX1JPT1RfREVGSU5FID0gQFRBUkdFVF9TWVNURU1fUk9PVF9ERUZJTkVACi0gCi0geG1ha2VfZmlsZT1AeG1ha2VfZmlsZUAKLS10bWFrZV9maWxlPUB0bWFrZV9maWxlQAotK3RtYWtlX2ZpbGU9QHRtYWtlX2ZpbGVAIC4vdC1vZQotIFRNX0VORElBTl9DT05GSUc9QFRNX0VORElBTl9DT05GSUdACi0gVE1fTVVMVElMSUJfQ09ORklHPUBUTV9NVUxUSUxJQl9DT05GSUdACi0gVE1fTVVMVElMSUJfRVhDRVBUSU9OU19DT05GSUc9QFRNX01VTFRJTElCX0VYQ0VQVElPTlNfQ09ORklHQAotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUgYi9nY2MvY29uZmlndXJlCi1pbmRleCA4Y2FlY2RjLi44ZWMzZDQwIDEwMDc1NQotLS0tIGEvZ2NjL2NvbmZpZ3VyZQotKysrIGIvZ2NjL2NvbmZpZ3VyZQotQEAgLTExODUwLDggKzExODUwLDggQEAgZm9yIGYgaW4gJHRtX2ZpbGU7IGRvCi0gICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9ICRmIgotICAgICAgICA7OwotICAgICBkZWZhdWx0cy5oICkKLS0gICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gXCQoc3JjZGlyKS8kZiIKLS0gICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gJGYiCi0rICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IC4vJGYiCi0rICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9IC4vJGYiCi0gICAgICAgIDs7Ci0gICAgICogKQotICAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYwotaW5kZXggNTc4MTlmZi4uNjQzYTQ3ZSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWd1cmUuYWMKLSsrKyBiL2djYy9jb25maWd1cmUuYWMKLUBAIC0xODMyLDggKzE4MzIsOCBAQCBmb3IgZiBpbiAkdG1fZmlsZTsgZG8KLSAgICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gJGYiCi0gICAgICAgIDs7Ci0gICAgIGRlZmF1bHRzLmggKQotLSAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSBcJChzcmNkaXIpLyRmIgotLSAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAkZiIKLSsgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gLi8kZiIKLSsgICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gLi8kZiIKLSAgICAgICAgOzsKLSAgICAgKiApCi0gICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IFwkKHNyY2RpcikvY29uZmlnLyRmIgotZGlmZiAtLWdpdCBhL2djYy9ta2NvbmZpZy5zaCBiL2djYy9ta2NvbmZpZy5zaAotaW5kZXggYzMyZjA4Ny4uNjgwM2FiOSAxMDA2NDQKLS0tLSBhL2djYy9ta2NvbmZpZy5zaAotKysrIGIvZ2NjL21rY29uZmlnLnNoCi1AQCAtNzcsNyArNzcsNyBAQCBpZiBbIC1uICIkSEVBREVSUyIgXTsgdGhlbgotICAgICBpZiBbICQjIC1nZSAxIF07IHRoZW4KLSAJZWNobyAnI2lmZGVmIElOX0dDQycgPj4gJHtvdXRwdXR9VAotIAlmb3IgZmlsZSBpbiAiJEAiOyBkbwotLQkgICAgaWYgdGVzdCB4IiRmaWxlIiA9IHgiZGVmYXVsdHMuaCI7IHRoZW4KLSsJICAgIGlmIHRlc3QgeCIkZmlsZSIgPSB4Ii4vZGVmYXVsdHMuaCIgLW8geCIkZmlsZSIgPSB4ImRlZmF1bHRzLmgiOyB0aGVuCi0gCQlwb3N0cG9uZV9kZWZhdWx0c19oPSJ5ZXMiCi0gCSAgICBlbHNlCi0gCQllY2hvICIjIGluY2x1ZGUgXCIkZmlsZVwiIiA+PiAke291dHB1dH1UCi1AQCAtMTA5LDcgKzEwOSw3IEBAIGVzYWMKLSAKLSAjIElmIHdlIHBvc3Rwb25lZCBpbmNsdWRpbmcgZGVmYXVsdHMuaCwgYWRkIHRoZSAjaW5jbHVkZSBub3cuCi0gaWYgdGVzdCB4IiRwb3N0cG9uZV9kZWZhdWx0c19oIiA9IHgieWVzIjsgdGhlbgotLSAgICBlY2hvICIjIGluY2x1ZGUgXCJkZWZhdWx0cy5oXCIiID4+ICR7b3V0cHV0fVQKLSsgICAgZWNobyAiIyBpbmNsdWRlIFwiLi9kZWZhdWx0cy5oXCIiID4+ICR7b3V0cHV0fVQKLSBmaQotIAotICMgQWRkIG11bHRpcGxlIGluY2x1c2lvbiBwcm90ZWN0aW9uIGd1YXJkLCBwYXJ0IHR3by4KLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDE4LWZvcnRyYW4tY3Jvc3MtY29tcGlsZS1oYWNrLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDE4LWZvcnRyYW4tY3Jvc3MtY29tcGlsZS1oYWNrLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOGJhMzI1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAxOC1mb3J0cmFuLWNyb3NzLWNvbXBpbGUtaGFjay5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLUZyb20gZDExYzczYzEyOTU1NjVmZjM3NjZhZTA0ZTJhNDEwYTg5ZmM4NGRkNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjIwOjAxICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTgvNDZdIGZvcnRyYW4gY3Jvc3MtY29tcGlsZSBoYWNrLgotCi0qIEZvcnRyYW4gd291bGQgaGF2ZSBzZWFyY2hlZCBmb3IgYXJtLWFuZ3N0cm9tLWdudWVhYmktZ2ZvcnRyYW4gYnV0IHdvdWxkIGhhdmUgdXNlZAotdXNlZCBnZm9ydGFuLiBGb3IgZ2NjXzQuMi4yLmJiIHdlIHdhbnQgdG8gdXNlIHRoZSBnZm9ydHJhbiBjb21waWxlciBmcm9tIG91ciBjcm9zcwotZGlyZWN0b3J5LgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotLS0tCi0gbGliZ2ZvcnRyYW4vY29uZmlndXJlICAgIHwgMiArLQotIGxpYmdmb3J0cmFuL2NvbmZpZ3VyZS5hYyB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZSBiL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZQotaW5kZXggYmIzMTA3Yi4uNWQ0N2U2NSAxMDA3NTUKLS0tLSBhL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZQotKysrIGIvbGliZ2ZvcnRyYW4vY29uZmlndXJlCi1AQCAtMTI3NDcsNyArMTI3NDcsNyBAQCBlc2FjCi0gCi0gIyBXZSBuZWVkIGdmb3J0cmFuIHRvIGNvbXBpbGUgcGFydHMgb2YgdGhlIGxpYnJhcnkKLSAjQUNfUFJPR19GQyhnZm9ydHJhbikKLS1GQz0iJEdGT1JUUkFOIgotKyNGQz0iJEdGT1JUUkFOIgotIGFjX2V4dD0ke2FjX2ZjX3NyY2V4dC1mfQotIGFjX2NvbXBpbGU9JyRGQyAtYyAkRkNGTEFHUyAkYWNfZmNmbGFnc19zcmNleHQgY29uZnRlc3QuJGFjX2V4dCA+JjUnCi0gYWNfbGluaz0nJEZDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkRkNGTEFHUyAkTERGTEFHUyAkYWNfZmNmbGFnc19zcmNleHQgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCi1kaWZmIC0tZ2l0IGEvbGliZ2ZvcnRyYW4vY29uZmlndXJlLmFjIGIvbGliZ2ZvcnRyYW4vY29uZmlndXJlLmFjCi1pbmRleCBhZGFmYjNmLi5iNGFkZTI4IDEwMDY0NAotLS0tIGEvbGliZ2ZvcnRyYW4vY29uZmlndXJlLmFjCi0rKysgYi9saWJnZm9ydHJhbi9jb25maWd1cmUuYWMKLUBAIC0yNDAsNyArMjQwLDcgQEAgQUNfU1VCU1QoZW5hYmxlX3N0YXRpYykKLSAKLSAjIFdlIG5lZWQgZ2ZvcnRyYW4gdG8gY29tcGlsZSBwYXJ0cyBvZiB0aGUgbGlicmFyeQotICNBQ19QUk9HX0ZDKGdmb3J0cmFuKQotLUZDPSIkR0ZPUlRSQU4iCi0rI0ZDPSIkR0ZPUlRSQU4iCi0gQUNfUFJPR19GQyhnZm9ydHJhbikKLSAKLSAjIGV4dHJhIExEIEZsYWdzIHdoaWNoIGFyZSByZXF1aXJlZCBmb3IgdGFyZ2V0cwotLS0gCi0yLjYuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMTktbGliZ2NjLXNqbGotY2hlY2sucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMTktbGliZ2NjLXNqbGotY2hlY2sucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxYTRkMWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDE5LWxpYmdjYy1zamxqLWNoZWNrLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzQgKzAsMCBAQAotRnJvbSA3YjQwMjEyZWQ2YzBjOWZlNGVmZTUxZjMxYmNjZDNkOWY4OTJmMjM4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MjA6NTAgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxOS80Nl0gbGliZ2NjLXNqbGotY2hlY2sKLQotYWNfZm5fY190cnlfY29tcGlsZSBkb2VzbnQgc2VlbSB0byBrZWVwIHRoZSBpbnRlcm1lZGlhdGUgZmlsZXMKLXdoaWNoIGFyZSBuZWVkZWQgZm9yIHNqbGogdGVzdCB0byBwYXNzIHNpbmNlIGl0IGdyZXBzIGludG8gdGhlCi1nZW5lcmF0ZWQgZmlsZS4gU28gd2UgcnVuIHRoZSBjb21waWxlciBjb21tYW5kIHVzaW5nIEFDX1RSWV9DT01NQU5ECi13aGljaCB0aGVuIGdlbmVyYXRlcyB0aGUgbmVlZGVkIC5zIGZpbGUKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBsaWJnY2MvY29uZmlndXJlICAgIHwgMTAgKysrKysrLS0tLQotIGxpYmdjYy9jb25maWd1cmUuYWMgfCAxMCArKysrLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmdjYy9jb25maWd1cmUgYi9saWJnY2MvY29uZmlndXJlCi1pbmRleCAyMDNkMzg0Li42YWVmM2U3IDEwMDY0NAotLS0tIGEvbGliZ2NjL2NvbmZpZ3VyZQotKysrIGIvbGliZ2NjL2NvbmZpZ3VyZQotQEAgLTQ1NzAsMTcgKzQ1NzAsMTkgQEAgdm9pZCBmb28gKCkKLSB9Ci0gCi0gX0FDRU9GCi0tQ0ZMQUdTX2hvbGQ9JENGTEFHUwotLUNGTEFHUz0iLS1zYXZlLXRlbXBzIC1mZXhjZXB0aW9ucyIKLSBsaWJnY2NfY3ZfbGliX3NqbGpfZXhjZXB0aW9ucz11bmtub3duCi0taWYgYWNfZm5fY190cnlfY29tcGlsZTsgdGhlbiA6Ci0raWYgeyBhY190cnk9JyR7Q0MtY2N9IC1mZXhjZXB0aW9ucyAtUyBjb25mdGVzdC5jIC1vIGNvbmZ0ZXN0LnMgMT4mNScKLSsgIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY190cnlcIiI7IH0gPiY1Ci0rICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0rICBhY19zdGF0dXM9JD8KLSsgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfTsgfTsgdGhlbgotICAgaWYgZ3JlcCBfVW53aW5kX1NqTGpfUmVzdW1lIGNvbmZ0ZXN0LnMgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0gICAgIGxpYmdjY19jdl9saWJfc2psal9leGNlcHRpb25zPXllcwotICAgZWxpZiBncmVwIF9VbndpbmRfUmVzdW1lIGNvbmZ0ZXN0LnMgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0gICAgIGxpYmdjY19jdl9saWJfc2psal9leGNlcHRpb25zPW5vCi0gICBmaQotIGZpCi0tQ0ZMQUdTPSRDRkxBR1NfaG9sZAotIHJtIC1mIGNvbmZ0ZXN0KgotIAotIGZpCi1kaWZmIC0tZ2l0IGEvbGliZ2NjL2NvbmZpZ3VyZS5hYyBiL2xpYmdjYy9jb25maWd1cmUuYWMKLWluZGV4IGExMGE5NTIuLmNjMzI0ZjMgMTAwNjQ0Ci0tLS0gYS9saWJnY2MvY29uZmlndXJlLmFjCi0rKysgYi9saWJnY2MvY29uZmlndXJlLmFjCi1AQCAtMjU1LDE2ICsyNTUsMTQgQEAgdm9pZCBmb28gKCkKLSAgIGJhcigpOwotIH0KLSBdKV0pCi0tQ0ZMQUdTX2hvbGQ9JENGTEFHUwotLUNGTEFHUz0iLS1zYXZlLXRlbXBzIC1mZXhjZXB0aW9ucyIKLSBsaWJnY2NfY3ZfbGliX3NqbGpfZXhjZXB0aW9ucz11bmtub3duCi0tQVNfSUYoW2FjX2ZuX2NfdHJ5X2NvbXBpbGVdLAotLSAgW2lmIGdyZXAgX1Vud2luZF9TakxqX1Jlc3VtZSBjb25mdGVzdC5zID4vZGV2L251bGwgMj4mMTsgdGhlbgotK2lmIEFDX1RSWV9DT01NQU5EKCR7Q0MtY2N9IC1mZXhjZXB0aW9ucyAtUyBjb25mdGVzdC5jIC1vIGNvbmZ0ZXN0LnMgMT4mQVNfTUVTU0FHRV9MT0dfRkQpOyB0aGVuCi0rICBpZiBncmVwIF9VbndpbmRfU2pMal9SZXN1bWUgY29uZnRlc3QucyA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLSAgICAgbGliZ2NjX2N2X2xpYl9zamxqX2V4Y2VwdGlvbnM9eWVzCi0gICBlbGlmIGdyZXAgX1Vud2luZF9SZXN1bWUgY29uZnRlc3QucyA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLSAgICAgbGliZ2NjX2N2X2xpYl9zamxqX2V4Y2VwdGlvbnM9bm8KLS0gIGZpXSkKLS1DRkxBR1M9JENGTEFHU19ob2xkCi0rICBmaQotK2ZpCi0gcm0gLWYgY29uZnRlc3QqCi0gXSkKLSAKLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDIwLWNwcC1ob25vci1zeXNyb290LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDIwLWNwcC1ob25vci1zeXNyb290LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxM2Y2NmQ0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAyMC1jcHAtaG9ub3Itc3lzcm9vdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLUZyb20gNWY5NzU5YTg1ZmZmM2Q3OGUzZjcxYWUwMWM5NzBiMTBkMzI2YzQwNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjIyOjAwICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMjAvNDZdIGNwcDogaG9ub3Igc3lzcm9vdC4KLQotQ3VycmVudGx5LCBpZiB0aGUgZ2NjIHRvb2xjaGFpbiBpcyByZWxvY2F0ZWQgYW5kIGluc3RhbGxlZCBmcm9tIHNzdGF0ZSwgdGhlbiB5b3UgdHJ5IGFuZCBjb21waWxlCi1wcmVwcm9jZXNzZWQgc291cmNlICguaSBvciAuaWkgZmlsZXMpLCB0aGUgY29tcGlsZXIgd2lsbCB0cnkgYW5kIGFjY2VzcyB0aGUgYnVpbHRpbiBzeXNyb290IGxvY2F0aW9uCi1yYXRoZXIgdGhhbiB0aGUgLS1zeXNyb290IG9wdGlvbiBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmRsaW5lLiBJZiBhY2Nlc3MgdG8gdGhhdCBkaXJlY3RvcnkgaXMKLXBlcm1pc3Npb24gZGVuaWVkICh1bnJlYWRhYmxlKSwgZ2NjIHdpbGwgZXJyb3IuCi0KLVRoaXMgaGFwcGVucyB3aGVuIGNjYWNoZSBpcyBpbiB1c2UgZHVlIHRvIHRoZSBmYWN0IGl0IHVzZXMgcHJlcHJvY2Vzc2VkIHNvdXJjZSBmaWxlcy4KLQotVGhlIGZpeCBiZWxvdyBhZGRzICVJIHRvIHRoZSBjcHAtb3V0cHV0IHNwZWMgbWFjcm8gc28gdGhlIGRlZmF1bHQgc3Vic3RpdHV0aW9ucyBmb3IgLWlwcmVmaXgsCi0taXN5c3RlbSwgLWlzeXNyb290IGhhcHBlbiBhbmQgdGhlIGNvcnJlY3Qgc3lzcm9vdCBpcyB1c2VkLgotCi1bWU9DVE8gIzIwNzRdCi0KLVJQIDIwMTIvMDQvMTMKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBnY2MvY3AvbGFuZy1zcGVjcy5oIHwgMiArLQotIGdjYy9nY2MuYyAgICAgICAgICAgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY3AvbGFuZy1zcGVjcy5oIGIvZ2NjL2NwL2xhbmctc3BlY3MuaAotaW5kZXggYjA3MjhmMC4uZTY5ZWU3ZCAxMDA2NDQKLS0tLSBhL2djYy9jcC9sYW5nLXNwZWNzLmgKLSsrKyBiL2djYy9jcC9sYW5nLXNwZWNzLmgKLUBAIC02Myw1ICs2Myw1IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCi0gICB7Ii5paSIsICJAYysrLWNwcC1vdXRwdXQiLCAwLCAwLCAwfSwKLSAgIHsiQGMrKy1jcHAtb3V0cHV0IiwKLSAgICAiJXshTToleyFNTToleyFFOlwKLS0gICAgY2MxcGx1cyAtZnByZXByb2Nlc3NlZCAlaSAlKGNjMV9vcHRpb25zKSAlMlwKLSsgICAgY2MxcGx1cyAtZnByZXByb2Nlc3NlZCAlaSAlSSAlKGNjMV9vcHRpb25zKSAlMlwKLSAgICAgJXshZnN5bnRheC1vbmx5OiUoaW52b2tlX2FzKX19fX0iLCAwLCAwLCAwfSwKLWRpZmYgLS1naXQgYS9nY2MvZ2NjLmMgYi9nY2MvZ2NjLmMKLWluZGV4IDg3YjQ3YzUuLmU2ZWZhZTcgMTAwNjQ0Ci0tLS0gYS9nY2MvZ2NjLmMKLSsrKyBiL2djYy9nY2MuYwotQEAgLTExNDIsNyArMTE0Miw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY29tcGlsZXIgZGVmYXVsdF9jb21waWxlcnNbXSA9Ci0gICAgICAgICAgICAgICAgICAgICAlV3tvKjotLW91dHB1dC1wY2g9JSp9fSVWfX19fX19IiwgMCwgMCwgMH0sCi0gICB7Ii5pIiwgIkBjcHAtb3V0cHV0IiwgMCwgMCwgMH0sCi0gICB7IkBjcHAtb3V0cHV0IiwKLS0gICAiJXshTToleyFNTToleyFFOmNjMSAtZnByZXByb2Nlc3NlZCAlaSAlKGNjMV9vcHRpb25zKSAleyFmc3ludGF4LW9ubHk6JShpbnZva2VfYXMpfX19fSIsIDAsIDAsIDB9LAotKyAgICIleyFNOiV7IU1NOiV7IUU6Y2MxIC1mcHJlcHJvY2Vzc2VkICVpICVJICUoY2MxX29wdGlvbnMpICV7IWZzeW50YXgtb25seTolKGludm9rZV9hcyl9fX19IiwgMCwgMCwgMH0sCi0gICB7Ii5zIiwgIkBhc3NlbWJsZXIiLCAwLCAwLCAwfSwKLSAgIHsiQGFzc2VtYmxlciIsCi0gICAgIiV7IU06JXshTU06JXshRToleyFTOmFzICUoYXNtX2RlYnVnKSAlKGFzbV9vcHRpb25zKSAlaSAlQSB9fX19IiwgMCwgMCwgMH0sCi0tLSAKLTIuNi4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAyMS1NSVBTNjQtRGVmYXVsdC10by1ONjQtQUJJLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDIxLU1JUFM2NC1EZWZhdWx0LXRvLU42NC1BQkkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3Y2ZmZTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDIxLU1JUFM2NC1EZWZhdWx0LXRvLU42NC1BQkkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi1Gcm9tIDM0ZDIyYWI2Y2ZkMmRmZTZkZDE3MWM4ZDBiMzFjYWZjZGViODYyOTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyMzowOCArMDQwMAotU3ViamVjdDogW1BBVENIIDIxLzQ2XSBNSVBTNjQ6IERlZmF1bHQgdG8gTjY0IEFCSQotCi1NSVBTNjQgZGVmYXVsdHMgdG8gbjMyIEFCSSwgdGhpcyBwYXRjaCBtYWtlcyBpdAotc28gdGhhdCBpdCBkZWZhdWx0cyB0byBONjQgQUJJCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgY29uZmlnIHNwZWNpZmljXQotLS0tCi0gZ2NjL2NvbmZpZy5nY2MgfCAxMCArKysrKy0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcuZ2NjIGIvZ2NjL2NvbmZpZy5nY2MKLWluZGV4IGM4MzU3MzQuLmRkMDczOWQgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnLmdjYwotKysrIGIvZ2NjL2NvbmZpZy5nY2MKLUBAIC0yMDE3LDI5ICsyMDE3LDI5IEBAIG1pcHMqLSotbGludXgqKQkJCQkjIExpbnV4IE1JUFMsIGVpdGhlciBlbmRpYW4uCi0gCQkJZGVmYXVsdF9taXBzX2FyY2g9bWlwczMyCi0gCQkJOzsKLSAJCW1pcHM2NGVsLXN0LWxpbnV4LWdudSkKLS0JCQlkZWZhdWx0X21pcHNfYWJpPW4zMgotKwkJCWRlZmF1bHRfbWlwc19hYmk9NjQKLSAJCQl0bV9maWxlPSIke3RtX2ZpbGV9IG1pcHMvc3QuaCIKLSAJCQl0bWFrZV9maWxlPSIke3RtYWtlX2ZpbGV9IG1pcHMvdC1zdCIKLSAJCQllbmFibGVfbWlwc19tdWx0aWxpYnM9InllcyIKLSAJCQk7OwotIAkJbWlwczY0b2N0ZW9uKi0qLWxpbnV4KikKLS0JCQlkZWZhdWx0X21pcHNfYWJpPW4zMgotKwkJCWRlZmF1bHRfbWlwc19hYmk9NjQKLSAJCQl0bV9kZWZpbmVzPSIke3RtX2RlZmluZXN9IE1JUFNfQ1BVX1NUUklOR19ERUZBVUxUPVxcXCJvY3Rlb25cXFwiIgotIAkJCXRhcmdldF9jcHVfZGVmYXVsdD1NQVNLX1NPRlRfRkxPQVRfQUJJCi0gCQkJZW5hYmxlX21pcHNfbXVsdGlsaWJzPSJ5ZXMiCi0gCQkJOzsKLSAJCW1pcHNpc2E2NHI2Ki0qLWxpbnV4KikKLS0JCQlkZWZhdWx0X21pcHNfYWJpPW4zMgotKwkJCWRlZmF1bHRfbWlwc19hYmk9NjQKLSAJCQlkZWZhdWx0X21pcHNfYXJjaD1taXBzNjRyNgotIAkJCWVuYWJsZV9taXBzX211bHRpbGlicz0ieWVzIgotIAkJCTs7Ci0gCQltaXBzaXNhNjRyMiotKi1saW51eCopCi0tCQkJZGVmYXVsdF9taXBzX2FiaT1uMzIKLSsJCQlkZWZhdWx0X21pcHNfYWJpPTY0Ci0gCQkJZGVmYXVsdF9taXBzX2FyY2g9bWlwczY0cjIKLSAJCQllbmFibGVfbWlwc19tdWx0aWxpYnM9InllcyIKLSAJCQk7OwotIAkJbWlwczY0Ki0qLWxpbnV4KiB8IG1pcHNpc2E2NCotKi1saW51eCopCi0tCQkJZGVmYXVsdF9taXBzX2FiaT1uMzIKLSsJCQlkZWZhdWx0X21pcHNfYWJpPTY0Ci0gCQkJZW5hYmxlX21pcHNfbXVsdGlsaWJzPSJ5ZXMiCi0gCQkJOzsKLSAJZXNhYwotLS0gCi0yLjYuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMjItRGVmaW5lLUdMSUJDX0RZTkFNSUNfTElOS0VSLWFuZC1VQ0xJQkNfRFlOQU1JQ19MSU5LRS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAyMi1EZWZpbmUtR0xJQkNfRFlOQU1JQ19MSU5LRVItYW5kLVVDTElCQ19EWU5BTUlDX0xJTktFLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MjA4MzUxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAyMi1EZWZpbmUtR0xJQkNfRFlOQU1JQ19MSU5LRVItYW5kLVVDTElCQ19EWU5BTUlDX0xJTktFLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjE2ICswLDAgQEAKLUZyb20gZjZiNDFiNjJlYTYyYTBmMTQ0N2Q5ZmMyMzVmN2ZkMmJiZjNmZTdjMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjI0OjUwICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMjIvNDZdIERlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBhbmQgVUNMSUJDX0RZTkFNSUNfTElOS0VSCi0gcmVsYXRpdmUgdG8gU1lTVEVNTElCU19ESVIKLQotVGhpcyBwYXRjaCBkZWZpbmVzIEdMSUJDX0RZTkFNSUNfTElOS0VSIGFuZCBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIKLXJlbGF0aXZlIHRvIFNZU1RFTUxJQlNfRElSIHdoaWNoIGNhbiBiZSBzZXQgaW4gZ2VuZXJhdGVkIGhlYWRlcnMKLVRoaXMgYnJlYWtzIHRoZSBhc3N1bXB0aW9uIG9mIGhhcmRjb2RlZCBtdWx0aWxpYiBpbiBnY2MKLUNoYW5nZSBpcyBvbmx5IGZvciB0aGUgc3VwcG9ydGVkIGFyY2hpdGVjdHVyZXMgaW4gT0UgaW5jbHVkaW5nCi1TSCwgc3BhcmMsIGFscGhhIGZvciBwb3NzaWJsZSBmdXR1cmUgc3VwcG9ydCAoaWYgYW55KQotCi1SZW1vdmVzIHRoZSBkb19oZWFkZXJmaXggdGFzayBpbiBtZXRhZGF0YQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIGNvbmZpZ3VyYXRpb25dCi0tLS0KLSBnY2MvY29uZmlnL2FscGhhL2xpbnV4LWVsZi5oIHwgIDQgKystLQotIGdjYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaCAgfCAgNCArKy0tCi0gZ2NjL2NvbmZpZy9hcm0vbGludXgtZWxmLmggICB8ICAyICstCi0gZ2NjL2NvbmZpZy9pMzg2L2xpbnV4LmggICAgICB8ICAyICstCi0gZ2NjL2NvbmZpZy9pMzg2L2xpbnV4NjQuaCAgICB8ICA2ICsrKy0tLQotIGdjYy9jb25maWcvbGludXguaCAgICAgICAgICAgfCAgOCArKysrLS0tLQotIGdjYy9jb25maWcvbWlwcy9saW51eC5oICAgICAgfCAxMiArKysrKystLS0tLS0KLSBnY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmggIHwgMTAgKysrKystLS0tLQotIGdjYy9jb25maWcvc2gvbGludXguaCAgICAgICAgfCAgMiArLQotIGdjYy9jb25maWcvc3BhcmMvbGludXguaCAgICAgfCAgMiArLQotIGdjYy9jb25maWcvc3BhcmMvbGludXg2NC5oICAgfCAgNCArKy0tCi0gMTEgZmlsZXMgY2hhbmdlZCwgMjggaW5zZXJ0aW9ucygrKSwgMjggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FscGhhL2xpbnV4LWVsZi5oIGIvZ2NjL2NvbmZpZy9hbHBoYS9saW51eC1lbGYuaAotaW5kZXggMmM3MGEyZi4uZGQwNDhkYiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvYWxwaGEvbGludXgtZWxmLmgKLSsrKyBiL2djYy9jb25maWcvYWxwaGEvbGludXgtZWxmLmgKLUBAIC0yMyw4ICsyMyw4IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCi0gI2RlZmluZSBFWFRSQV9TUEVDUyBcCi0geyAiZWxmX2R5bmFtaWNfbGlua2VyIiwgRUxGX0RZTkFNSUNfTElOS0VSIH0sCi0gCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUgkiL2xpYi9sZC1saW51eC5zby4yIgotLSNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLXVDbGliYy5zby4wIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIJU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCi0rI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIgIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMuc28uMCIKLSAjaWYgREVGQVVMVF9MSUJDID09IExJQkNfVUNMSUJDCi0gI2RlZmluZSBDSE9PU0VfRFlOQU1JQ19MSU5LRVIoRywgVSkgIiV7bWdsaWJjOiIgRyAiOzoiIFUgIn0iCi0gI2VsaWYgREVGQVVMVF9MSUJDID09IExJQkNfR0xJQkMKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmggYi9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKLWluZGV4IGU5ZDY1ZGMuLmNmZGYzZjAgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKLSsrKyBiL2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaAotQEAgLTY4LDggKzY4LDggQEAKLSAgICBHTElCQ19EWU5BTUlDX0xJTktFUl9ERUZBVUxUIGFuZCBUQVJHRVRfREVGQVVMVF9GTE9BVF9BQkkuICAqLwotIAotICN1bmRlZiAgR0xJQkNfRFlOQU1JQ19MSU5LRVIKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSX1NPRlRfRkxPQVQgIi9saWIvbGQtbGludXguc28uMyIKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSX0hBUkRfRkxPQVQgIi9saWIvbGQtbGludXgtYXJtaGYuc28uMyIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSX1NPRlRfRkxPQVQgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjMiCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUl9IQVJEX0ZMT0FUIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1hcm1oZi5zby4zIgotICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJfREVGQVVMVCBHTElCQ19EWU5BTUlDX0xJTktFUl9TT0ZUX0ZMT0FUCi0gCi0gI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBcCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWxmLmggYi9nY2MvY29uZmlnL2FybS9saW51eC1lbGYuaAotaW5kZXggNDlhZDk1NC4uYTVhYjU1OSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvYXJtL2xpbnV4LWVsZi5oCi0rKysgYi9nY2MvY29uZmlnL2FybS9saW51eC1lbGYuaAotQEAgLTYyLDcgKzYyLDcgQEAKLSAKLSAjZGVmaW5lIExJQkdDQ19TUEVDICIle21mbG9hdC1hYmk9c29mdCo6LWxmbG9hdH0gLWxnY2MiCi0gCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC5zby4yIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCi0gCi0gI2RlZmluZSBMSU5VWF9UQVJHRVRfTElOS19TUEVDICAiJXtoKn0gXAotICAgICV7c3RhdGljOi1Cc3RhdGljfSBcCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4LmggYi9nY2MvY29uZmlnL2kzODYvbGludXguaAotaW5kZXggYTEwMDk2My4uMjFiYTJiMiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni9saW51eC5oCi0rKysgYi9nY2MvY29uZmlnL2kzODYvbGludXguaAotQEAgLTIwLDQgKzIwLDQgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKLSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotIAotICNkZWZpbmUgR05VX1VTRVJfTElOS19FTVVMQVRJT04gImVsZl9pMzg2IgotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbGludXguc28uMiIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9saW51eDY0LmggYi9nY2MvY29uZmlnL2kzODYvbGludXg2NC5oCi1pbmRleCBhMjdkM2JlLi42MTg1Y2NlIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4NjQuaAotKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4NjQuaAotQEAgLTI3LDYgKzI3LDYgQEAgc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4gIElmIG5vdCwgc2VlCi0gI2RlZmluZSBHTlVfVVNFUl9MSU5LX0VNVUxBVElPTjY0ICJlbGZfeDg2XzY0IgotICNkZWZpbmUgR05VX1VTRVJfTElOS19FTVVMQVRJT05YMzIgImVsZjMyX3g4Nl82NCIKLSAKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgIi9saWIvbGQtbGludXguc28uMiIKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgIi9saWI2NC9sZC1saW51eC14ODYtNjQuc28uMiIKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSWDMyICIvbGlieDMyL2xkLWxpbnV4LXgzMi5zby4yIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LXg4Ni02NC5zby4yIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJYMzIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LXgzMi5zby4yIgotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbGludXguaCBiL2djYy9jb25maWcvbGludXguaAotaW5kZXggODU3Mzg5YS4uMjJiOWJlNSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvbGludXguaAotKysrIGIvZ2NjL2NvbmZpZy9saW51eC5oCi1AQCAtNzMsMTAgKzczLDEwIEBAIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZQotICAgIEdMSUJDX0RZTkFNSUNfTElOS0VSIG11c3QgYmUgZGVmaW5lZCBmb3IgZWFjaCB0YXJnZXQgdXNpbmcgdGhlbSwgb3IKLSAgICBHTElCQ19EWU5BTUlDX0xJTktFUjMyIGFuZCBHTElCQ19EWU5BTUlDX0xJTktFUjY0IGZvciB0YXJnZXRzCi0gICAgc3VwcG9ydGluZyBib3RoIDMyLWJpdCBhbmQgNjQtYml0IGNvbXBpbGF0aW9uLiAgKi8KLS0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC11Q2xpYmMuc28uMCIKLS0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjMyICIvbGliL2xkLXVDbGliYy5zby4wIgotLSNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSNjQgIi9saWIvbGQ2NC11Q2xpYmMuc28uMCIKLS0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUlgzMiAiL2xpYi9sZHgzMi11Q2xpYmMuc28uMCIKLSsjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjAiCi0rI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjAiCi0rI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBTWVNURU1MSUJTX0RJUiAibGQ2NC11Q2xpYmMuc28uMCIKLSsjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUlgzMiBTWVNURU1MSUJTX0RJUiAibGR4MzItdUNsaWJjLnNvLjAiCi0gI2RlZmluZSBCSU9OSUNfRFlOQU1JQ19MSU5LRVIgIi9zeXN0ZW0vYmluL2xpbmtlciIKLSAjZGVmaW5lIEJJT05JQ19EWU5BTUlDX0xJTktFUjMyICIvc3lzdGVtL2Jpbi9saW5rZXIiCi0gI2RlZmluZSBCSU9OSUNfRFlOQU1JQ19MSU5LRVI2NCAiL3N5c3RlbS9iaW4vbGlua2VyNjQiCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9taXBzL2xpbnV4LmggYi9nY2MvY29uZmlnL21pcHMvbGludXguaAotaW5kZXggOTFkZjI2MS4uYzMwNmFmYiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvbWlwcy9saW51eC5oCi0rKysgYi9nY2MvY29uZmlnL21pcHMvbGludXguaAotQEAgLTIyLDIwICsyMiwyMCBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQotICNkZWZpbmUgR05VX1VTRVJfTElOS19FTVVMQVRJT05OMzIgImVsZjMyJXtFQjpifSV7RUw6bH10c21pcG4zMiIKLSAKLSAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgXAotLSAgIiV7bW5hbj0yMDA4Oi9saWIvbGQtbGludXgtbWlwc244LnNvLjE7Oi9saWIvbGQuc28uMX0iCi0rICAiJXttbmFuPTIwMDg6IiBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtbWlwc244LnNvLjE7OiIgU1lTVEVNTElCU19ESVIgImxkLnNvLjF9IgotICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBcCi0tICAiJXttbmFuPTIwMDg6L2xpYjY0L2xkLWxpbnV4LW1pcHNuOC5zby4xOzovbGliNjQvbGQuc28uMX0iCi0rICAiJXttbmFuPTIwMDg6IiBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtbWlwc244LnNvLjE7OiIgU1lTVEVNTElCU19ESVIgImxkLnNvLjF9IgotICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJOMzIgXAotLSAgIiV7bW5hbj0yMDA4Oi9saWIzMi9sZC1saW51eC1taXBzbjguc28uMTs6L2xpYjMyL2xkLnNvLjF9IgotKyAgIiV7bW5hbj0yMDA4OiIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LW1pcHNuOC5zby4xOzoiIFNZU1RFTUxJQlNfRElSICJsZC5zby4xfSIKLSAKLSAjdW5kZWYgVUNMSUJDX0RZTkFNSUNfTElOS0VSMzIKLSAjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjMyIFwKLS0gICIle21uYW49MjAwODovbGliL2xkLXVDbGliYy1taXBzbjguc28uMDs6L2xpYi9sZC11Q2xpYmMuc28uMH0iCi0rICAiJXttbmFuPTIwMDg6IiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLW1pcHNuOC5zby4wOzoiIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMuc28uMH0iCi0gI3VuZGVmIFVDTElCQ19EWU5BTUlDX0xJTktFUjY0Ci0gI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBcCi0tICAiJXttbmFuPTIwMDg6L2xpYi9sZDY0LXVDbGliYy1taXBzbjguc28uMDs6L2xpYi9sZDY0LXVDbGliYy5zby4wfSIKLSsgICIle21uYW49MjAwODoiIFNZU1RFTUxJQlNfRElSICJsZDY0LXVDbGliYy1taXBzbjguc28uMDs6IiBTWVNURU1MSUJTX0RJUiAibGQ2NC11Q2xpYmMuc28uMH0iCi0gI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVJOMzIgXAotLSAgIiV7bW5hbj0yMDA4Oi9saWIzMi9sZC11Q2xpYmMtbWlwc244LnNvLjA7Oi9saWIzMi9sZC11Q2xpYmMuc28uMH0iCi0rICAiJXttbmFuPTIwMDg6IiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLW1pcHNuOC5zby4wOzoiIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMuc28uMH0iCi0gCi0gI2RlZmluZSBCSU9OSUNfRFlOQU1JQ19MSU5LRVJOMzIgIi9zeXN0ZW0vYmluL2xpbmtlcjMyIgotICNkZWZpbmUgR05VX1VTRVJfRFlOQU1JQ19MSU5LRVJOMzIgXAotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaCBiL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaAotaW5kZXggMDg3OWU3ZS4uMzFjNDMzOCAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaAotKysrIGIvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oCi1AQCAtMzU3LDE0ICszNTcsMTQgQEAgZXh0ZXJuIGludCBkb3Rfc3ltYm9sczsKLSAjdW5kZWYJTElOS19PU19ERUZBVUxUX1NQRUMKLSAjZGVmaW5lIExJTktfT1NfREVGQVVMVF9TUEVDICIlKGxpbmtfb3NfbGludXgpIgotIAotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiAiL2xpYi9sZC5zby4xIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQuc28uMSIKLSAjaWZkZWYgTElOVVg2NF9ERUZBVUxUX0FCSV9FTEZ2MgotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCAiJXttYWJpPWVsZnYxOi9saWI2NC9sZDY0LnNvLjE7Oi9saWI2NC9sZDY0LnNvLjJ9IgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCAiJXttYWJpPWVsZnYxOiIgU1lTVEVNTElCU19ESVIgImxkNjQuc28uMTs6IiBTWVNURU1MSUJTX0RJUiAibGQ2NC5zby4yfSIKLSAjZWxzZQotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCAiJXttYWJpPWVsZnYyOi9saWI2NC9sZDY0LnNvLjI7Oi9saWI2NC9sZDY0LnNvLjF9IgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCAiJXttYWJpPWVsZnYyOiIgU1lTVEVNTElCU19ESVIgImxkNjQuc28uMjs6IiBTWVNURU1MSUJTX0RJUiAibGQ2NC5zby4xfSIKLSAjZW5kaWYKLS0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjMyICIvbGliL2xkLXVDbGliYy5zby4wIgotLSNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSNjQgIi9saWIvbGQ2NC11Q2xpYmMuc28uMCIKLSsjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjMyIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMuc28uMCIKLSsjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjY0IFNZU1RFTUxJQlNfRElSICJsZDY0LXVDbGliYy5zby4wIgotICNpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19VQ0xJQkMKLSAjZGVmaW5lIENIT09TRV9EWU5BTUlDX0xJTktFUihHLCBVKSAiJXttZ2xpYmM6IiBHICI7OiIgVSAifSIKLSAjZWxpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19HTElCQwotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvc2gvbGludXguaCBiL2djYy9jb25maWcvc2gvbGludXguaAotaW5kZXggMGY1ZDYxNC4uMTY4NDE2YyAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvc2gvbGludXguaAotKysrIGIvZ2NjL2NvbmZpZy9zaC9saW51eC5oCi1AQCAtNDMsNyArNDMsNyBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQotIAotICNkZWZpbmUgVEFSR0VUX0FTTV9GSUxFX0VORCBmaWxlX2VuZF9pbmRpY2F0ZV9leGVjX3N0YWNrCi0gCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC5zby4yIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCi0gCi0gI3VuZGVmIFNVQlRBUkdFVF9MSU5LX0VNVUxfU1VGRklYCi0gI2RlZmluZSBTVUJUQVJHRVRfTElOS19FTVVMX1NVRkZJWCAiX2xpbnV4IgotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvc3BhcmMvbGludXguaCBiL2djYy9jb25maWcvc3BhcmMvbGludXguaAotaW5kZXggNTZkZWY0Yi4uMDBiNTY0YyAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvc3BhcmMvbGludXguaAotKysrIGIvZ2NjL2NvbmZpZy9zcGFyYy9saW51eC5oCi1AQCAtODMsNyArODMsNyBAQCBleHRlcm4gY29uc3QgY2hhciAqaG9zdF9kZXRlY3RfbG9jYWxfY3B1IChpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpOwotICAgIFdoZW4gdGhlIC1zaGFyZWQgbGluayBvcHRpb24gaXMgdXNlZCBhIGZpbmFsIGxpbmsgaXMgbm90IGJlaW5nCi0gICAgZG9uZS4gICovCi0gCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC5zby4yIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCi0gCi0gI3VuZGVmICBMSU5LX1NQRUMKLSAjZGVmaW5lIExJTktfU1BFQyAiLW0gZWxmMzJfc3BhcmMgJXtzaGFyZWQ6LXNoYXJlZH0gXAotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvc3BhcmMvbGludXg2NC5oIGIvZ2NjL2NvbmZpZy9zcGFyYy9saW51eDY0LmgKLWluZGV4IGZhODA1ZmQuLjBlYjRhY2QgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL3NwYXJjL2xpbnV4NjQuaAotKysrIGIvZ2NjL2NvbmZpZy9zcGFyYy9saW51eDY0LmgKLUBAIC04NCw4ICs4NCw4IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCi0gICAgV2hlbiB0aGUgLXNoYXJlZCBsaW5rIG9wdGlvbiBpcyB1c2VkIGEgZmluYWwgbGluayBpcyBub3QgYmVpbmcKLSAgICBkb25lLiAgKi8KLSAKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgIi9saWIvbGQtbGludXguc28uMiIKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgIi9saWI2NC9sZC1saW51eC5zby4yIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCi0gCi0gI2lmZGVmIFNQQVJDX0JJX0FSQ0gKLSAKLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDIzLWdjYy1GaXgtYXJndW1lbnQtbGlzdC10b28tbG9uZy1lcnJvci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAyMy1nY2MtRml4LWFyZ3VtZW50LWxpc3QtdG9vLWxvbmctZXJyb3IucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlOTFjOWUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDIzLWdjYy1GaXgtYXJndW1lbnQtbGlzdC10b28tbG9uZy1lcnJvci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLUZyb20gOTcwMWY1OTZiYmU1YmY1MWJiZjQ4NjYxYmM1MTViNDVkNGI2ZjRkMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjI2OjM3ICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMjMvNDZdIGdjYzogRml4IGFyZ3VtZW50IGxpc3QgdG9vIGxvbmcgZXJyb3IuCi0KLVRoZXJlIHdvdWxkIGJlIGFuICJBcmd1bWVudCBsaXN0IHRvbyBsb25nIiBlcnJvciB3aGVuIHRoZQotYnVpbGQgZGlyZWN0b3J5IGlzIGxvbmdlciB0aGFuIDIwMCwgdGhpcyBpcyBjYXVzZWQgYnk6Ci0KLWhlYWRlcnM9YGVjaG8gJChQTFVHSU5fSEVBREVSUykgfCB0ciAnICcgJ1wwMTInIHwgc29ydCAtdWAKLQotVGhlIFBMVUdJTl9IRUFERVJTIGlzIHRvbyBsb25nIGJlZm9yZSBzb3J0LCBzbyB0aGUgImVjaG8iIGNhbid0IGhhbmRsZQotaXQsIHVzZSB0aGUgJChzb3J0IGxpc3QpIG9mIEdOVSBtYWtlIHdoaWNoIGNhbiBoYW5kbGUgdGhlIHRvbyBsb25nIGxpc3QKLXdvdWxkIGZpeCB0aGUgcHJvYmxlbSwgdGhlIGhlYWRlciB3b3VsZCBiZSBzaG9ydCBlbm91Z2ggYWZ0ZXIgc29ydGVkLgotVGhlICJ0ciAnICcgJ1wwMTInIiB3YXMgdXNlZCBmb3IgdHJhbnNsYXRpbmcgdGhlIHNwYWNlIHRvICJcbiIsIHRoZQotJChzb3J0IGxpc3QpIGRvZXNuJ3QgbmVlZCB0aGlzLgotCi1TaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gZ2NjL01ha2VmaWxlLmluIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL01ha2VmaWxlLmluIGIvZ2NjL01ha2VmaWxlLmluCi1pbmRleCBlMWU2M2U4Li43YjQ5Zjg4IDEwMDY0NAotLS0tIGEvZ2NjL01ha2VmaWxlLmluCi0rKysgYi9nY2MvTWFrZWZpbGUuaW4KLUBAIC0zMjYyLDcgKzMyNjIsNyBAQCBpbnN0YWxsLXBsdWdpbjogaW5zdGFsbGRpcnMgbGFuZy5pbnN0YWxsLXBsdWdpbiBzLWhlYWRlci12YXJzIGluc3RhbGwtZ2VuZ3R5cGUKLSAjIFdlIGtlZXAgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgZm9yIGZpbGVzIGluIGNvbmZpZyBvciBjLWZhbWlseSBhbmQgLmRlZgotICMgZmlsZXMuIEFsbCBvdGhlciBmaWxlcyBhcmUgZmxhdHRlbmVkIHRvIGEgc2luZ2xlIGRpcmVjdG9yeS4KLSAJJChta2luc3RhbGxkaXJzKSAkKERFU1RESVIpJChwbHVnaW5faW5jbHVkZWRpcikKLS0JaGVhZGVycz1gZWNobyAkKFBMVUdJTl9IRUFERVJTKSAkJChjZCAkKHNyY2Rpcik7IGVjaG8gKi5oICouZGVmKSB8IHRyICcgJyAnXDAxMicgfCBzb3J0IC11YDsgXAotKwloZWFkZXJzPSIkKHNvcnQgJChQTFVHSU5fSEVBREVSUykgJCQoY2QgJChzcmNkaXIpOyBlY2hvICouaCAqLmRlZikpIjsgXAotIAlzcmNkaXJzdHJpcD1gZWNobyAiJChzcmNkaXIpIiB8IHNlZCAncy9bXS5bXiQkXFwqfF0vXFxcXCYvZydgOyBcCi0gCWZvciBmaWxlIGluICQkaGVhZGVyczsgZG8gXAotIAkgIGlmIFsgLWYgJCRmaWxlIF0gOyB0aGVuIFwKLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDI0LURpc2FibGUtc2R0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDI0LURpc2FibGUtc2R0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMjNjZTk3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAyNC1EaXNhYmxlLXNkdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExMyArMCwwIEBACi1Gcm9tIDk0NmUwNDc2MTQxMDNlMWYyOTgyNjEzYzdhYTVmNzY1ODc1MDBjMGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyODoxMCArMDQwMAotU3ViamVjdDogW1BBVENIIDI0LzQ2XSBEaXNhYmxlIHNkdC4KLQotV2UgZG9uJ3QgbGlzdCBkdHJhY2UgaW4gREVQRU5EUyBzbyB3ZSBzaG91bGRuJ3QgYmUgZGVwZW5kaW5nIG9uIHRoaXMgaGVhZGVyLgotSXQgbWF5IG9yIG1heSBub3QgZXhpc3QgZnJvbSBwcmVpdm91cyBidWlsZHMgdGhvdWdoLiBUbyBiZSBkZXRlcm1pbnN0aWMsIGRpc2FibGUKLXNkdC5oIHVzYWdlIGFsd2F5cy4gVGhpcyBhdm9pZHMgYnVpbGQgZmFpbHVyZXMgaWYgdGhlIGhlYWRlciBpcyByZW1vdmVkIGFmdGVyIGNvbmZpZ3VyZQotYnV0IGJlZm9yZSBsaWJnY2MgaXMgY29tcGlsZWQgZm9yIGV4YW1wbGUuCi0KLVJQIDIwMTIvOC83Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLURpc2FibGUgc2R0IGZvciBsaWJzdGRjKystdjMuCi0KLVNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2hhY2tdCi0tLS0KLSBnY2MvY29uZmlndXJlICAgICAgICAgICAgIHwgMTIgKysrKysrLS0tLS0tCi0gZ2NjL2NvbmZpZ3VyZS5hYyAgICAgICAgICB8IDE4ICsrKysrKysrKy0tLS0tLS0tLQotIGxpYnN0ZGMrKy12My9jb25maWd1cmUgICAgfCAgNiArKystLS0KLSBsaWJzdGRjKystdjMvY29uZmlndXJlLmFjIHwgIDIgKy0KLSA0IGZpbGVzIGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKLWluZGV4IDhlYzNkNDAuLmVhYTNiMDcgMTAwNzU1Ci0tLS0gYS9nY2MvY29uZmlndXJlCi0rKysgYi9nY2MvY29uZmlndXJlCi1AQCAtMjc4NTcsMTIgKzI3ODU3LDEyIEBAIGZpCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBzeXMvc2R0LmggaW4gdGhlIHRhcmdldCBDIGxpYnJhcnkiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIHN5cy9zZHQuaCBpbiB0aGUgdGFyZ2V0IEMgbGlicmFyeS4uLiAiID4mNjsgfQotIGhhdmVfc3lzX3NkdF9oPW5vCi0taWYgdGVzdCAtZiAkdGFyZ2V0X2hlYWRlcl9kaXIvc3lzL3NkdC5oOyB0aGVuCi0tICBoYXZlX3N5c19zZHRfaD15ZXMKLS0KLS0kYXNfZWNobyAiI2RlZmluZSBIQVZFX1NZU19TRFRfSCAxIiA+PmNvbmZkZWZzLmgKLS0KLS1maQotKyNpZiB0ZXN0IC1mICR0YXJnZXRfaGVhZGVyX2Rpci9zeXMvc2R0Lmg7IHRoZW4KLSsjICBoYXZlX3N5c19zZHRfaD15ZXMKLSsjCi0rIyRhc19lY2hvICIjZGVmaW5lIEhBVkVfU1lTX1NEVF9IIDEiID4+Y29uZmRlZnMuaAotKyMKLSsjZmkKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGhhdmVfc3lzX3NkdF9oIiA+JjUKLSAkYXNfZWNobyAiJGhhdmVfc3lzX3NkdF9oIiA+JjY7IH0KLSAKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYwotaW5kZXggNjQzYTQ3ZS4uOWY2Y2FjYiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWd1cmUuYWMKLSsrKyBiL2djYy9jb25maWd1cmUuYWMKLUBAIC01MzE1LDE1ICs1MzE1LDE1IEBAIGlmIHRlc3QgeCRnY2NfY3ZfbGliY19wcm92aWRlc19zc3AgPSB4eWVzOyB0aGVuCi0gZmkKLSAKLSAjIFRlc3QgZm9yIDxzeXMvc2R0Lmg+IG9uIHRoZSB0YXJnZXQuCi0tR0NDX1RBUkdFVF9URU1QTEFURShbSEFWRV9TWVNfU0RUX0hdKQotLUFDX01TR19DSEVDS0lORyhzeXMvc2R0LmggaW4gdGhlIHRhcmdldCBDIGxpYnJhcnkpCi0taGF2ZV9zeXNfc2R0X2g9bm8KLS1pZiB0ZXN0IC1mICR0YXJnZXRfaGVhZGVyX2Rpci9zeXMvc2R0Lmg7IHRoZW4KLS0gIGhhdmVfc3lzX3NkdF9oPXllcwotLSAgQUNfREVGSU5FKEhBVkVfU1lTX1NEVF9ILCAxLAotLSAgICAgICAgICAgIFtEZWZpbmUgaWYgeW91ciB0YXJnZXQgQyBsaWJyYXJ5IHByb3ZpZGVzIHN5cy9zZHQuaF0pCi0tZmkKLS1BQ19NU0dfUkVTVUxUKCRoYXZlX3N5c19zZHRfaCkKLSsjR0NDX1RBUkdFVF9URU1QTEFURShbSEFWRV9TWVNfU0RUX0hdKQotKyNBQ19NU0dfQ0hFQ0tJTkcoc3lzL3NkdC5oIGluIHRoZSB0YXJnZXQgQyBsaWJyYXJ5KQotKyNoYXZlX3N5c19zZHRfaD1ubwotKyNpZiB0ZXN0IC1mICR0YXJnZXRfaGVhZGVyX2Rpci9zeXMvc2R0Lmg7IHRoZW4KLSsjICBoYXZlX3N5c19zZHRfaD15ZXMKLSsjICBBQ19ERUZJTkUoSEFWRV9TWVNfU0RUX0gsIDEsCi0rIyAgICAgICAgICAgIFtEZWZpbmUgaWYgeW91ciB0YXJnZXQgQyBsaWJyYXJ5IHByb3ZpZGVzIHN5cy9zZHQuaF0pCi0rI2ZpCi0rI0FDX01TR19SRVNVTFQoJGhhdmVfc3lzX3NkdF9oKQotIAotICMgQ2hlY2sgaWYgVEZtb2RlIGxvbmcgZG91YmxlIHNob3VsZCBiZSB1c2VkIGJ5IGRlZmF1bHQgb3Igbm90LgotICMgU29tZSBnbGliYyB0YXJnZXRzIHVzZWQgREZtb2RlIGxvbmcgZG91YmxlLCBidXQgd2l0aCBnbGliYyAyLjQKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlndXJlIGIvbGlic3RkYysrLXYzL2NvbmZpZ3VyZQotaW5kZXggMjE3MDEyZS4uODEyNDBiOSAxMDA3NTUKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWd1cmUKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWd1cmUKLUBAIC0yMDk2NCwxMSArMjA5NjQsMTEgQEAgYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JwotIGFjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCi0gYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQotIAotLSAgaWYgdGVzdCAkZ2xpYmN4eF9jdl9zeXNfc2R0X2ggPSB5ZXM7IHRoZW4KLSsjICBpZiB0ZXN0ICRnbGliY3h4X2N2X3N5c19zZHRfaCA9IHllczsgdGhlbgotIAotLSRhc19lY2hvICIjZGVmaW5lIEhBVkVfU1lTX1NEVF9IIDEiID4+Y29uZmRlZnMuaAotKyMkYXNfZWNobyAiI2RlZmluZSBIQVZFX1NZU19TRFRfSCAxIiA+PmNvbmZkZWZzLmgKLSAKLS0gIGZpCi0rIyAgZmkKLSAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2xpYmN4eF9jdl9zeXNfc2R0X2giID4mNQotICRhc19lY2hvICIkZ2xpYmN4eF9jdl9zeXNfc2R0X2giID4mNjsgfQotIAotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWd1cmUuYWMgYi9saWJzdGRjKystdjMvY29uZmlndXJlLmFjCi1pbmRleCA1ODBmYjhiLi41YTQxMDgzIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5hYwotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5hYwotQEAgLTIzMCw3ICsyMzAsNyBAQCBHTElCQ1hYX0NIRUNLX1NDX05QUk9DRVNTT1JTX09OTE4KLSBHTElCQ1hYX0NIRUNLX1NDX05QUk9DX09OTE4KLSBHTElCQ1hYX0NIRUNLX1BUSFJFQURTX05VTV9QUk9DRVNTT1JTX05QCi0gR0xJQkNYWF9DSEVDS19TWVNDVExfSFdfTkNQVQotLUdMSUJDWFhfQ0hFQ0tfU0RUX0gKLSsjR0xJQkNYWF9DSEVDS19TRFRfSAotIAotICMgQ2hlY2sgZm9yIGF2YWlsYWJsZSBoZWFkZXJzLgotIEFDX0NIRUNLX0hFQURFUlMoW2VuZGlhbi5oIGV4ZWNpbmZvLmggZmxvYXQuaCBmcC5oIGllZWVmcC5oIGludHR5cGVzLmggXAotLS0gCi0yLjYuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMjUtbGlidG9vbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAyNS1saWJ0b29sLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZDVlYjk3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAyNS1saWJ0b29sLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotRnJvbSBmNjhjNWI3ODc1MTY2MDUwNWIyMmI0NmRhZDk5MjQwZGIwZGYzNDU2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6Mjk6MTEgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAyNS80Nl0gbGlidG9vbAotCi1saWJzdGRjKysgZnJvbSBnY2MtcnVudGltZSBnZXRzIGNyZWF0ZWQgd2l0aCAtcnBhdGg9L3Vzci9saWIvLi4vbGliIGZvciBxZW11eDg2LTY0Ci13aGVuIHJ1bm5pbmcgb24gYW0geDg2XzY0IGJ1aWxkIGhvc3QuCi0KLVRoaXMgcGF0Y2ggc3RvcHMgdGhpcyBzcGVhZGluZyB0byBsaWJkaXIgaW4gdGhlIGxpYnN0ZGMrKy5sYSBmaWxlIHdpdGhpbiBsaWJ0b29sLgotQXJndWFibHksIGl0IHNob3VsZG4ndCBiZSBwYXNzaW5nIHRoaXMgaW50byBsaWJ0b29sIGluIHRoZSBmaXJzdCBwbGFjZSBidXQKLWZvciBub3cgdGhpcyByZXNvbHZlcyB0aGUgbmFzdGllc3QgcHJvYmxlbXMgdGhpcyBjYXVzZXMuCi0KLWZ1bmNfbm9ybWFsX2Fic3BhdGggd291bGQgcmVzb2x2ZSBhbiBlbXB0eSBwYXRoIHRvIGBwd2RgIHNvIHdlIG5lZWQKLXRvIGZpbHRlciB0aGUgemVybyBjYXNlLgotCi1SUCAyMDEyLzgvMjQKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBsdG1haW4uc2ggfCA0ICsrKysKLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9sdG1haW4uc2ggYi9sdG1haW4uc2gKLWluZGV4IDk1MDNlYzguLjAxMjFmYmEgMTAwNjQ0Ci0tLS0gYS9sdG1haW4uc2gKLSsrKyBiL2x0bWFpbi5zaAotQEAgLTYzNTksNiArNjM1OSwxMCBAQCBmdW5jX21vZGVfbGluayAoKQotIAlmdW5jX3dhcm5pbmcgImlnbm9yaW5nIG11bHRpcGxlIFxgLXJwYXRoJ3MgZm9yIGEgbGlidG9vbCBsaWJyYXJ5IgotIAotICAgICAgIGluc3RhbGxfbGliZGlyPSIkMSIKLSsgICAgICBpZiB0ZXN0IC1uICIkaW5zdGFsbF9saWJkaXIiOyB0aGVuCi0rCWZ1bmNfbm9ybWFsX2Fic3BhdGggIiRpbnN0YWxsX2xpYmRpciIKLSsJaW5zdGFsbF9saWJkaXI9JGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0Ci0rICAgICAgZmkKLSAKLSAgICAgICBvbGRsaWJzPQotICAgICAgIGlmIHRlc3QgLXogIiRycGF0aCI7IHRoZW4KLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDI2LWdjYy1hcm12NC1wYXNzLWZpeC12NGJ4LXRvLWxpbmtlci10by1zdXBwb3J0LUVBQkkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMjYtZ2NjLWFybXY0LXBhc3MtZml4LXY0YngtdG8tbGlua2VyLXRvLXN1cHBvcnQtRUFCSS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTIyZDk1Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMjYtZ2NjLWFybXY0LXBhc3MtZml4LXY0YngtdG8tbGlua2VyLXRvLXN1cHBvcnQtRUFCSS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLUZyb20gNGM3NWUzNDlhYTdhYmQxZTI4NTcyMDMyOGIyMzY5MDYzNmJlYTI0MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjMwOjMyICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMjYvNDZdIGdjYzogYXJtdjQ6IHBhc3MgZml4LXY0YnggdG8gbGlua2VyIHRvIHN1cHBvcnQgRUFCSS4KLQotVGhlIExJTktfU1BFQyBmb3IgbGludXggZ2V0cyBvdmVyd3JpdHRlbiBieSBsaW51eC1lYWJpLmggd2hpY2gKLW1lYW5zIHRoZSB2YWx1ZSBvZiBUQVJHRVRfRklYX1Y0QlhfU1BFQyBnZXRzIGxvc3QgYW5kIGFzIGEgcmVzdWx0Ci10aGUgb3B0aW9uIGlzIG5vdCBwYXNzZWQgdG8gbGlua2VyIHdoZW4gY2hvc2luZyBtYXJjaD1hcm12NAotVGhpcyBwYXRjaCByZWRlZmluZXMgdGhpcyBpbiBsaW51eC1lYWJpLmggYW5kIHJlaW5zZXJ0cyBpdAotZm9yIGVhYmkgZGVmYXVsdGluZyB0b29sY2hhaW5zLgotCi1XZSBtaWdodCB3YW50IHRvIHNlbmQgaXQgdXBzdHJlYW0uCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oIHwgNiArKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmggYi9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKLWluZGV4IGNmZGYzZjAuLjA0OGEwNjIgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKLSsrKyBiL2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaAotQEAgLTc3LDEwICs3NywxNCBAQAotICAgICAle21mbG9hdC1hYmk9c29mdCo6IiBHTElCQ19EWU5BTUlDX0xJTktFUl9TT0ZUX0ZMT0FUICJ9IFwKLSAgICAgJXshbWZsb2F0LWFiaT0qOiIgR0xJQkNfRFlOQU1JQ19MSU5LRVJfREVGQVVMVCAifSIKLSAKLSsvKiBGb3IgYXJtdjQgd2UgcGFzcyAtLWZpeC12NGJ4IHRvIGxpbmtlciB0byBzdXBwb3J0IEVBQkkgKi8KLSsjdW5kZWYgVEFSR0VUX0ZJWF9WNEJYX1NQRUMKLSsjZGVmaW5lIFRBUkdFVF9GSVhfVjRCWF9TUEVDICIle21jcHU9YXJtOHxtY3B1PWFybTgxMHxtY3B1PXN0cm9uZ2FybSp8bWFyY2g9YXJtdjQ6IC0tZml4LXY0Ynh9IgotKwotIC8qIEF0IHRoaXMgcG9pbnQsIGJwYWJpLmggd2lsbCBoYXZlIGNsb2JiZXJlZCBMSU5LX1NQRUMuICBXZSB3YW50IHRvCi0gICAgdXNlIHRoZSBHTlUvTGludXggdmVyc2lvbiwgbm90IHRoZSBnZW5lcmljIEJQQUJJIHZlcnNpb24uICAqLwotICN1bmRlZiAgTElOS19TUEVDCi0tI2RlZmluZSBMSU5LX1NQRUMgRUFCSV9MSU5LX1NQRUMJCQkJCVwKLSsjZGVmaW5lIExJTktfU1BFQyBUQVJHRVRfRklYX1Y0QlhfU1BFQyBFQUJJX0xJTktfU1BFQwkJCVwKLSAgIExJTlVYX09SX0FORFJPSURfTEQgKExJTlVYX1RBUkdFVF9MSU5LX1NQRUMsCQkJCVwKLSAJCSAgICAgICBMSU5VWF9UQVJHRVRfTElOS19TUEVDICIgIiBBTkRST0lEX0xJTktfU1BFQykKLSAKLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDI3LVVzZS10aGUtbXVsdGlsaWItY29uZmlnLWZpbGVzLWZyb20tQi1pbnN0ZWFkLW9mLXVzaW4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMjctVXNlLXRoZS1tdWx0aWxpYi1jb25maWctZmlsZXMtZnJvbS1CLWluc3RlYWQtb2YtdXNpbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDY4MTVkMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMjctVXNlLXRoZS1tdWx0aWxpYi1jb25maWctZmlsZXMtZnJvbS1CLWluc3RlYWQtb2YtdXNpbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi1Gcm9tIDgyMTdkZDdmYjMxOGY5YWJjNjU2NGY2N2I0MjRjNDMzZDgzOThkNjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOTozMzowNCArMDQwMAotU3ViamVjdDogW1BBVENIIDI3LzQ2XSBVc2UgdGhlIG11bHRpbGliIGNvbmZpZyBmaWxlcyBmcm9tICR7Qn0gaW5zdGVhZCBvZgotIHVzaW5nIHRoZSBvbmVzIGZyb20gJHtTfQotCi1Vc2UgdGhlIG11bHRpbGliIGNvbmZpZyBmaWxlcyBmcm9tICR7Qn0gaW5zdGVhZCBvZiB1c2luZyB0aGUgb25lcyBmcm9tICR7U30KLXNvIHRoYXQgdGhlIHNvdXJjZSBjYW4gYmUgc2hhcmVkIGJldHdlZW4gZ2NjLWNyb3NzLWluaXRpYWwsCi1nY2MtY3Jvc3MtaW50ZXJtZWRpYXRlLCBnY2MtY3Jvc3MsIGdjYy1ydW50aW1lLCBhbmQgYWxzbyB0aGUgc2RrIGJ1aWxkLgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogQ29uc3RhbnRpbiBNdXNjYSA8Y29uc3RhbnRpbngubXVzY2FAaW50ZWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0tLS0KLSBnY2MvY29uZmlndXJlICAgIHwgMjIgKysrKysrKysrKysrKysrKysrLS0tLQotIGdjYy9jb25maWd1cmUuYWMgfCAyMiArKysrKysrKysrKysrKysrKystLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAzNiBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKLWluZGV4IGVhYTNiMDcuLjliNjBhYWQgMTAwNzU1Ci0tLS0gYS9nY2MvY29uZmlndXJlCi0rKysgYi9nY2MvY29uZmlndXJlCi1AQCAtMTE4MzAsMTAgKzExODMwLDIwIEBAIGRvbmUKLSB0bWFrZV9maWxlXz0KLSBmb3IgZiBpbiAke3RtYWtlX2ZpbGV9Ci0gZG8KLS0JaWYgdGVzdCAtZiAke3NyY2Rpcn0vY29uZmlnLyRmCi0tCXRoZW4KLS0JCXRtYWtlX2ZpbGVfPSIke3RtYWtlX2ZpbGVffSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKLS0JZmkKLSsgIGNhc2UgJGYgaW4KLSsgICAgKi90LWxpbnV4NjQgKQotKyAgICAgICBpZiB0ZXN0IC1mIC4vY29uZmlnLyRmCi0rICAgICAgIHRoZW4KLSsgICAgICAgICB0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gLi9jb25maWcvJGYiCi0rICAgICAgIGZpCi0rICAgICAgIDs7Ci0rICAgICogKQotKyAgICAgICBpZiB0ZXN0IC1mICR7c3JjZGlyfS9jb25maWcvJGYKLSsgICAgICAgdGhlbgotKyAgICAgICAgIHRtYWtlX2ZpbGVfPSIke3RtYWtlX2ZpbGVffSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKLSsgICAgICAgZmkKLSsgICAgICAgOzsKLSsgIGVzYWMKLSBkb25lCi0gdG1ha2VfZmlsZT0iJHt0bWFrZV9maWxlX30iCi0gCi1AQCAtMTE4NDQsNiArMTE4NTQsMTAgQEAgdG1fZmlsZV9saXN0PSJvcHRpb25zLmgiCi0gdG1faW5jbHVkZV9saXN0PSJvcHRpb25zLmggaW5zbi1jb25zdGFudHMuaCIKLSBmb3IgZiBpbiAkdG1fZmlsZTsgZG8KLSAgIGNhc2UgJGYgaW4KLSsgICAgKi9saW51eDY0LmggKQotKyAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSAuL2NvbmZpZy8kZiIKLSsgICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gLi9jb25maWcvJGYiCi0rICAgICAgIDs7Ci0gICAgIC4vKiApCi0gICAgICAgIGY9YGVjaG8gJGYgfCBzZWQgJ3MvXi4uLy8nYAotICAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSAkZiIKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYwotaW5kZXggOWY2Y2FjYi4uZTFlNTRmMiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWd1cmUuYWMKLSsrKyBiL2djYy9jb25maWd1cmUuYWMKLUBAIC0xODEyLDEwICsxODEyLDIwIEBAIGRvbmUKLSB0bWFrZV9maWxlXz0KLSBmb3IgZiBpbiAke3RtYWtlX2ZpbGV9Ci0gZG8KLS0JaWYgdGVzdCAtZiAke3NyY2Rpcn0vY29uZmlnLyRmCi0tCXRoZW4KLS0JCXRtYWtlX2ZpbGVfPSIke3RtYWtlX2ZpbGVffSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKLS0JZmkKLSsgIGNhc2UgJGYgaW4KLSsgICAgKi90LWxpbnV4NjQgKQotKyAgICAgICBpZiB0ZXN0IC1mIC4vY29uZmlnLyRmCi0rICAgICAgIHRoZW4KLSsgICAgICAgICB0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gLi9jb25maWcvJGYiCi0rICAgICAgIGZpCi0rICAgICAgIDs7Ci0rICAgICogKQotKyAgICAgICBpZiB0ZXN0IC1mICR7c3JjZGlyfS9jb25maWcvJGYKLSsgICAgICAgdGhlbgotKyAgICAgICAgIHRtYWtlX2ZpbGVfPSIke3RtYWtlX2ZpbGVffSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKLSsgICAgICAgZmkKLSsgICAgICAgOzsKLSsgIGVzYWMKLSBkb25lCi0gdG1ha2VfZmlsZT0iJHt0bWFrZV9maWxlX30iCi0gCi1AQCAtMTgyNiw2ICsxODM2LDEwIEBAIHRtX2ZpbGVfbGlzdD0ib3B0aW9ucy5oIgotIHRtX2luY2x1ZGVfbGlzdD0ib3B0aW9ucy5oIGluc24tY29uc3RhbnRzLmgiCi0gZm9yIGYgaW4gJHRtX2ZpbGU7IGRvCi0gICBjYXNlICRmIGluCi0rICAgICovbGludXg2NC5oICkKLSsgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gLi9jb25maWcvJGYiCi0rICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9IC4vY29uZmlnLyRmIgotKyAgICAgICA7OwotICAgICAuLyogKQotICAgICAgICBmPWBlY2hvICRmIHwgc2VkICdzL14uLi8vJ2AKLSAgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gJGYiCi0tLSAKLTIuNi4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAyOC1Bdm9pZC11c2luZy1saWJkaXItZnJvbS0ubGEtd2hpY2gtdXN1YWxseS1wb2ludHMtdG8tLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDI4LUF2b2lkLXVzaW5nLWxpYmRpci1mcm9tLS5sYS13aGljaC11c3VhbGx5LXBvaW50cy10by0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwZGRkOWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDI4LUF2b2lkLXVzaW5nLWxpYmRpci1mcm9tLS5sYS13aGljaC11c3VhbGx5LXBvaW50cy10by0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1Gcm9tIDA4YTBlNDViMzA4ZmM5N2QwNmY1YzNlZjc3YTI1N2U3YTZiZDFhNDggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyMCBGZWIgMjAxNSAwOTozOTozOCArMDAwMAotU3ViamVjdDogW1BBVENIIDI4LzQ2XSBBdm9pZCB1c2luZyBsaWJkaXIgZnJvbSAubGEgd2hpY2ggdXN1YWxseSBwb2ludHMgdG8gYQotIGhvc3QgcGF0aAotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBKb25hdGhhbiBMaXUgPG5ldDE0N0BnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gbHRtYWluLnNoIHwgMyArKysKLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9sdG1haW4uc2ggYi9sdG1haW4uc2gKLWluZGV4IDAxMjFmYmEuLjUyYmRiZGIgMTAwNjQ0Ci0tLS0gYS9sdG1haW4uc2gKLSsrKyBiL2x0bWFpbi5zaAotQEAgLTU2MjgsNiArNTYyOCw5IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICBhYnNkaXI9IiRhYnNfbGFkaXIiCi0gCSAgICBsaWJkaXI9IiRhYnNfbGFkaXIiCi0gCSAgZWxzZQotKwkgICAgIyBJbnN0ZWFkIG9mIHVzaW5nIGxpYmRpciBmcm9tIC5sYSB3aGljaCB1c3VhbGx5IHBvaW50cyB0byBhIGhvc3QgcGF0aCwKLSsJICAgICMgdXNlIHRoZSBwYXRoIHRoZSAubGEgaXMgY29udGFpbmVkIGluLgotKwkgICAgbGliZGlyPSIkYWJzX2xhZGlyIgotIAkgICAgZGlyPSIkbGliZGlyIgotIAkgICAgYWJzZGlyPSIkbGliZGlyIgotIAkgIGZpCi0tLSAKLTIuNi4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAyOS1leHBvcnQtQ1BQLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDI5LWV4cG9ydC1DUFAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyMTk1YWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDI5LWV4cG9ydC1DUFAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi1Gcm9tIDk1ZjQ5NGQxNTQ0ODU3YWQzODk0OWE3ZGEzN2UyZDcyNjQ0NzUyMzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyMCBGZWIgMjAxNSAwOTo0MDo1OSArMDAwMAotU3ViamVjdDogW1BBVENIIDI5LzQ2XSBleHBvcnQgQ1BQCi0KLVRoZSBPRSBlbnZpcm9ubWVudCBzZXRzIGFuZCBleHBvcnRzIENQUCBhcyBiZWluZyB0aGUgdGFyZ2V0IGdjYy4gV2hlbgotYnVpbGRpbmcgZ2NjLWNyb3NzLWNhbmFkaWFuIGZvciBhIG1pbmd3IHRhcmdldHRlZCBzZGssIHRoZSBmb2xsb3dpbmcgY2FuIGJlIGZvdW5kCi1pbiBidWlsZC54ODZfNjQtcG9reXNkay1taW5ndzMyLmk1ODYtcG9reS1saW51eC9idWlsZC14ODZfNjQtbGludXgvbGliaWJlcnR5L2NvbmZpZy5sb2c6Ci0KLWNvbmZpZ3VyZTozNjQxOiBjaGVja2luZyBmb3IgX0ZJTEVfT0ZGU0VUX0JJVFMgdmFsdWUgbmVlZGVkIGZvciBsYXJnZSBmaWxlcwotY29uZmlndXJlOjM2NjY6IGdjYyAgLWMgLWlzeXN0ZW0vbWVkaWEvYnVpbGQxL3Bva3kvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvaW5jbHVkZSAtTzIgLXBpcGUgIGNvbmZ0ZXN0LmMgPiY1Ci1jb25maWd1cmU6MzY2NjogJD8gPSAwCi1jb25maWd1cmU6MzY5ODogcmVzdWx0OiBubwotY29uZmlndXJlOjM3ODY6IGNoZWNraW5nIGhvdyB0byBydW4gdGhlIEMgcHJlcHJvY2Vzc29yCi1jb25maWd1cmU6Mzg1NjogcmVzdWx0OiB4ODZfNjQtcG9reXNkay1taW5ndzMyLWdjYyAtRSAtLXN5c3Jvb3Q9L21lZGlhL2J1aWxkMS9wb2t5L2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbmF0aXZlc2RrLW1pbmd3MzItcG9reXNkay1taW5ndzMyCi1jb25maWd1cmU6Mzg3NjogeDg2XzY0LXBva3lzZGstbWluZ3czMi1nY2MgLUUgLS1zeXNyb290PS9tZWRpYS9idWlsZDEvcG9reS9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LW5hdGl2ZXNkay1taW5ndzMyLXBva3lzZGstbWluZ3czMiBjb25mdGVzdC5jCi1jb25maWd1cmU6Mzg3NjogJD8gPSAwCi0KLU5vdGUgdGhpcyBpcyBhICpidWlsZCogdGFyZ2V0IChpbiBidWlsZC14ODZfNjQtbGludXgpIHNvIGl0IHNob3VsZCBiZQotdXNpbmcgdGhlIGhvc3QgImdjYyIsIG5vdCB4ODZfNjQtcG9reXNkay1taW5ndzMyLWdjYy4gU2luY2UgdGhlIG1pbmd3MzIKLWhlYWRlcnMgYXJlIHZlcnkgZGlmZmVyZW50LCB1c2luZyB0aGUgd3JvbmcgY3BwIGlzIGEgcmVhbCBwcm9ibGVtLiBJdCBpcyBsZWFraW5nCi1pbnRvIGNvbmZpZ3VyZSB0aHJvdWdoIHRoZSBDUFAgdmFyaWFibGUuIFVsdGltYXRlbHkgdGhpcyBsZWFkcyB0byBidWlsZAotZmFpbHVyZXMgcmVsYXRlZCB0byBub3QgYmVpbmcgYWJsZSB0byBpbmNsdWRlIGEgcHJvY2Vzcy5oIGZpbGUgZm9yIHBlbS11bml4LmMuCi0KLVRoZSBmaXggaXMgdG8gZW5zdXJlIHdlIGV4cG9ydCBhIHNhbmUgQ1BQIHZhbHVlIGludG8gdGhlIGJ1aWxkCi1lbnZpcm9ubWVudCB3aGVuIHVzaW5nIGJ1aWxkIHRhcmdldHMuIFdlIGNvdWxkIGRlZmluZSBhIENQUF9GT1JfQlVJTEQgdmFsdWUgd2hpY2ggbWF5IGJlCi10aGUgdmVyc2lvbiB3aGljaCBuZWVkcyB0byBiZSB1cHN0cmVhbWVkIGJ1dCBmb3Igbm93LCB0aGlzIGZpeCBpcyBnb29kIGVub3VnaCB0bwotYXZvaWQgdGhlIHByb2JsZW0uCi0KLVJQIDIyLzA4LzIwMTMKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBNYWtlZmlsZS5pbiB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgotaW5kZXggMzZiNDAwOC4uYTc4M2UxZSAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmluCi0rKysgYi9NYWtlZmlsZS5pbgotQEAgLTE0OSw2ICsxNDksNyBAQCBCVUlMRF9FWFBPUlRTID0gXAotIAlBUj0iJChBUl9GT1JfQlVJTEQpIjsgZXhwb3J0IEFSOyBcCi0gCUFTPSIkKEFTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQVM7IFwKLSAJQ0M9IiQoQ0NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDQzsgXAotKwlDUFA9IiQoQ0NfRk9SX0JVSUxEKSAtRSI7IGV4cG9ydCBDUFA7IFwKLSAJQ0ZMQUdTPSIkKENGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENGTEFHUzsgXAotIAlDT05GSUdfU0hFTEw9IiQoU0hFTEwpIjsgZXhwb3J0IENPTkZJR19TSEVMTDsgXAotIAlDWFg9IiQoQ1hYX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ1hYOyBcCi0tLSAKLTIuNi4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAzMC1FbmFibGUtU1BFLUFsdGlWZWMtZ2VuZXJhdGlvbi1vbi1wb3dlcGMtbGludXgtdGFyZ2V0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDMwLUVuYWJsZS1TUEUtQWx0aVZlYy1nZW5lcmF0aW9uLW9uLXBvd2VwYy1saW51eC10YXJnZXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3MDUxODcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDMwLUVuYWJsZS1TUEUtQWx0aVZlYy1nZW5lcmF0aW9uLW9uLXBvd2VwYy1saW51eC10YXJnZXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi1Gcm9tIDRlZDhjMWZkOWRjMDVmN2E5ZGI5Mjk4YTU1Mzk2YzhmMGZmNTQ5YTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kcnUtQ2V6YXIgU2FyZGFuIDxhbGV4YW5kcnUuc2FyZGFuQGZyZWVzY2FsZS5jb20+Ci1EYXRlOiBXZWQsIDUgRmViIDIwMTQgMTY6NTI6MzEgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAzMC80Nl0gRW5hYmxlIFNQRSAmIEFsdGlWZWMgZ2VuZXJhdGlvbiBvbiBwb3dlcGMqbGludXggdGFyZ2V0Ci0KLVdoZW4gaXMgY29uZmlndXJlZCB3aXRoIC0tdGFyZ2V0PXBvd2VycGMtbGludXgsIHRoZSByZXN1bHRpbmcgR0NDIHdpbGwKLW5vdCBiZSBhYmxlIHRvIGdlbmVyYXRlIGNvZGUgZm9yIFNQRSB0YXJnZXRzIChlNTAwdjEvdjIpLgotR0NDIGNvbmZpZ3VyZWQgd2l0aCAtLXRhcmdldD1wb3dlcnBjLWxpbnV4c3BlIHdpbGwgbm90IGJlIGFibGUgdG8KLWdlbmVyYXRlIEFsdGlWZWMgaW5zdHJ1Y3Rpb25zIChmb3IgZTY1MDApLgotVGhpcyBwYXRjaCBtb2RpZmllcyB0aGUgY29uZmlndXJlZCBmaWxlIHN1Y2ggdGhhdCBTUEUgb3IgQWx0aVZlYyBjb2RlCi1jYW4gYmUgZ2VuZXJhdGVkIHdoZW4gZ2NjIGlzIGNvbmZpZ3VyZWQgd2l0aCAtLXRhcmdldD1wb3dlcnBjLWxpbnV4LgotVGhlIEFCSSBhbmQgc3BlY2lmZmljIGluc3RydWN0aW9ucyBjYW4gYmUgc2VsZWN0ZWQgdGhyb3VnaCB0aGUKLSItbWFiaT1zcGUgb3IgLW1hYmk9YWx0aXZlYyIgYW5kIHRoZSAiLW1zcGUgb3IgLW1hbHRpdmVjIiBwYXJhbWV0ZXJzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRydS1DZXphciBTYXJkYW4gPGFsZXhhbmRydS5zYXJkYW5AZnJlZXNjYWxlLmNvbT4KLS0tLQotIGdjYy9jb25maWcuZ2NjIHwgOSArKysrKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLUluZGV4OiBnY2MtNS4zLjAvZ2NjL2NvbmZpZy5nY2MKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnY2MtNS4zLjAub3JpZy9nY2MvY29uZmlnLmdjYwotKysrIGdjYy01LjMuMC9nY2MvY29uZmlnLmdjYwotQEAgLTIzNDYsNyArMjM0NiwxNCBAQCBwb3dlcnBjLSotcnRlbXMqKQotIAl0bWFrZV9maWxlPSIke3RtYWtlX2ZpbGV9IHJzNjAwMC90LWZwcnVsZXMgcnM2MDAwL3QtcnRlbXMgcnM2MDAwL3QtcHBjY29tbSIKLSAJOzsKLSBwb3dlcnBjKi0qLWxpbnV4KikKLS0JdG1fZmlsZT0iJHt0bV9maWxlfSBkYnhlbGYuaCBlbGZvcy5oIGdudS11c2VyLmggZnJlZWJzZC1zcGVjLmggcnM2MDAwL3N5c3Y0LmgiCi0rCWNhc2UgJHt0YXJnZXR9IGluCi0rCSAgICBwb3dlcnBjKi0qLWxpbnV4KnNwZSogfCBwb3dlcnBjKi0qLWxpbnV4KmFsdGl2ZWMqKQotKwkJdG1fZmlsZT0iJHt0bV9maWxlfSBkYnhlbGYuaCBlbGZvcy5oIGdudS11c2VyLmggZnJlZWJzZC1zcGVjLmggcnM2MDAwL3N5c3Y0LmgiCi0rCQk7OwotKwkgICAgKikKLSsJCXRtX2ZpbGU9IiR7dG1fZmlsZX0gZGJ4ZWxmLmggZWxmb3MuaCBnbnUtdXNlci5oIGZyZWVic2Qtc3BlYy5oIHJzNjAwMC9zeXN2NC5oIHJzNjAwMC9saW51eGFsdGl2ZWMuaCByczYwMDAvbGludXhzcGUuaCByczYwMDAvZTUwMC5oIgotKwkJOzsKLSsJZXNhYwotIAlleHRyYV9vcHRpb25zPSIke2V4dHJhX29wdGlvbnN9IHJzNjAwMC9zeXN2NC5vcHQiCi0gCXRtYWtlX2ZpbGU9IiR7dG1ha2VfZmlsZX0gcnM2MDAwL3QtZnBydWxlcyByczYwMDAvdC1wcGNjb21tIgotIAlleHRyYV9vYmpzPSIkZXh0cmFfb2JqcyByczYwMDAtbGludXgubyIKLUluZGV4OiBnY2MtNS4zLjAvZ2NjL2NvbmZpZy9yczYwMDAvbGludXhzcGUuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdjYy01LjMuMC5vcmlnL2djYy9jb25maWcvcnM2MDAwL2xpbnV4c3BlLmgKLSsrKyBnY2MtNS4zLjAvZ2NjL2NvbmZpZy9yczYwMDAvbGludXhzcGUuaAotQEAgLTI3LDYgKzI3LDMgQEAKLSAjdW5kZWYJVEFSR0VUX0RFRkFVTFQKLSAjZGVmaW5lIFRBUkdFVF9ERUZBVUxUIE1BU0tfU1RSSUNUX0FMSUdOCi0gI2VuZGlmCi0tCi0tI3VuZGVmICBBU01fREVGQVVMVF9TUEVDCi0tI2RlZmluZQlBU01fREVGQVVMVF9TUEVDICItbXBwYyAtbXNwZSAtbWU1MDAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMzEtRGlzYWJsZS10aGUtTVVMVElMSUJfT1NESVJOQU1FUy1hbmQtb3RoZXItbXVsdGlsaWItby5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAzMS1EaXNhYmxlLXRoZS1NVUxUSUxJQl9PU0RJUk5BTUVTLWFuZC1vdGhlci1tdWx0aWxpYi1vLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMmJjNjY0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAzMS1EaXNhYmxlLXRoZS1NVUxUSUxJQl9PU0RJUk5BTUVTLWFuZC1vdGhlci1tdWx0aWxpYi1vLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotRnJvbSBiYjZmZWE4MjE0ODNhYTMyNTliMzRlMTAxYTM5Yzk5M2VkZDAxNDExIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjAgRmViIDIwMTUgMTA6MjE6NTUgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAzMS80Nl0gRGlzYWJsZSB0aGUgTVVMVElMSUJfT1NESVJOQU1FUyBhbmQgb3RoZXIgbXVsdGlsaWIKLSBvcHRpb25zLgotCi1IYXJkIGNvZGluZyB0aGUgTVVMVElMSUJfT1NESVJOQU1FUyB3aXRoIC4uL2xpYjY0IGlzIGNhdXNpbmcgcHJvYmxlbXMgb24KLXN5c3RlbXMgd2hlcmUgdGhlIGxpYmRpciBpcyBOT1Qgc2V0IHRvIC9saWI2NC4gIFRoaXMgaXMgYWxsb3dlZCBieSB0aGUKLUFCSSwgYXMKLWxvbmcgYXMgdGhlIGR5bmFtaWMgbG9hZGVyIGlzIHByZXNlbnQgaW4gL2xpYi4KLQotV2Ugc2ltcGx5IHdhbnQgdG8gdXNlIHRoZSBkZWZhdWx0IHJ1bGVzIGluIGdjYyB0byBmaW5kIGFuZCBjb25maWd1cmUgdGhlCi1ub3JtYWwgbGliZGlyLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGVbT0UtU3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnY2MvY29uZmlnL2FhcmNoNjQvdC1hYXJjaDY0LWxpbnV4IHwgOCArKysrLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FhcmNoNjQvdC1hYXJjaDY0LWxpbnV4IGIvZ2NjL2NvbmZpZy9hYXJjaDY0L3QtYWFyY2g2NC1saW51eAotaW5kZXggYzI5NjM3Ni4uM2JiNTliZiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvYWFyY2g2NC90LWFhcmNoNjQtbGludXgKLSsrKyBiL2djYy9jb25maWcvYWFyY2g2NC90LWFhcmNoNjQtbGludXgKLUBAIC0yMSw4ICsyMSw4IEBACi0gTElCMUFTTVNSQyAgID0gYWFyY2g2NC9saWIxZnVuY3MuYXNtCi0gTElCMUFTTUZVTkNTID0gX2FhcmNoNjRfc3luY19jYWNoZV9yYW5nZQotIAotLUFBUkNIX0JFID0gJChpZiAkKGZpbmRzdHJpbmcgVEFSR0VUX0JJR19FTkRJQU5fREVGQVVMVD0xLCAkKHRtX2RlZmluZXMpKSxfYmUpCi0tTVVMVElMSUJfT1NESVJOQU1FUyA9IG1hYmkubHA2ND0uLi9saWI2NCQoY2FsbCBpZl9tdWx0aWFyY2gsOmFhcmNoNjQkKEFBUkNIX0JFKS1saW51eC1nbnUpCi0tTVVMVElBUkNIX0RJUk5BTUUgPSAkKGNhbGwgaWZfbXVsdGlhcmNoLGFhcmNoNjQkKEFBUkNIX0JFKS1saW51eC1nbnUpCi0rI0FBUkNIX0JFID0gJChpZiAkKGZpbmRzdHJpbmcgVEFSR0VUX0JJR19FTkRJQU5fREVGQVVMVD0xLCAkKHRtX2RlZmluZXMpKSxfYmUpCi0rI01VTFRJTElCX09TRElSTkFNRVMgPSBtYWJpLmxwNjQ9Li4vbGliNjQkKGNhbGwgaWZfbXVsdGlhcmNoLDphYXJjaDY0JChBQVJDSF9CRSktbGludXgtZ251KQotKyNNVUxUSUFSQ0hfRElSTkFNRSA9ICQoY2FsbCBpZl9tdWx0aWFyY2gsYWFyY2g2NCQoQUFSQ0hfQkUpLWxpbnV4LWdudSkKLSAKLS1NVUxUSUxJQl9PU0RJUk5BTUVTICs9IG1hYmkuaWxwMzI9Li4vbGliaWxwMzIKLSsjTVVMVElMSUJfT1NESVJOQU1FUyArPSBtYWJpLmlscDMyPS4uL2xpYmlscDMyCi0tLSAKLTIuNi4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAzMi1FbnN1cmUtdGFyZ2V0LWdjYy1oZWFkZXJzLWNhbi1iZS1pbmNsdWRlZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAzMi1FbnN1cmUtdGFyZ2V0LWdjYy1oZWFkZXJzLWNhbi1iZS1pbmNsdWRlZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODk1MDNmZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMzItRW5zdXJlLXRhcmdldC1nY2MtaGVhZGVycy1jYW4tYmUtaW5jbHVkZWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5OCArMCwwIEBACi1Gcm9tIGJiMjZmOTBmNWUwYWNjYzM1MzlmNjJiNmZlYzY2MzY4Mjk1OWRkMzYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyMCBGZWIgMjAxNSAxMDoyNToxMSArMDAwMAotU3ViamVjdDogW1BBVENIIDMyLzQ2XSBFbnN1cmUgdGFyZ2V0IGdjYyBoZWFkZXJzIGNhbiBiZSBpbmNsdWRlZAotCi1UaGVyZSBhcmUgYSBmZXcgaGVhZGVycyBpbnN0YWxsZWQgYXMgcGFydCBvZiB0aGUgT3BlbkVtYmVkZGVkCi1nY2MtcnVudGltZSB0YXJnZXQgKG9tcC5oLCBzc3AvKi5oKS4gQmVpbmcgaW5zdGFsbGVkIGZyb20gYSByZWNpcGUKLWJ1aWx0IGZvciB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSwgdGhlc2UgYXJlIHdpdGhpbiB0aGUgdGFyZ2V0Ci1zeXNyb290IGFuZCBub3QgY3Jvc3MvbmF0aXZlc2RrOyB0aHVzIHRoZXkgd2VyZW4ndCBhYmxlIHRvIGJlCi1mb3VuZCBieSBnY2Mgd2l0aCB0aGUgZXhpc3Rpbmcgc2VhcmNoIHBhdGhzLiBBZGQgc3VwcG9ydCBmb3IKLXBpY2tpbmcgdXAgdGhlc2UgaGVhZGVycyB1bmRlciB0aGUgc3lzcm9vdCBzdXBwbGllZCBvbiB0aGUgZ2NjCi1jb21tYW5kIGxpbmUgaW4gb3JkZXIgdG8gcmVzb2x2ZSB0aGlzLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogUGF1bCBFZ2dsZXRvbiA8cGF1bC5lZ2dsZXRvbkBsaW51eC5pbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ2NjL01ha2VmaWxlLmluICB8IDIgKysKLSBnY2MvY3BwZGVmYXVsdC5jIHwgNCArKysrCi0gZ2NjL2RlZmF1bHRzLmggICB8IDkgKysrKysrKysrCi0gZ2NjL2djYy5jICAgICAgICB8IDcgLS0tLS0tLQotIDQgZmlsZXMgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9NYWtlZmlsZS5pbiBiL2djYy9NYWtlZmlsZS5pbgotaW5kZXggN2I0OWY4OC4uY2Q1YmM0YSAxMDA2NDQKLS0tLSBhL2djYy9NYWtlZmlsZS5pbgotKysrIGIvZ2NjL01ha2VmaWxlLmluCi1AQCAtNTgyLDYgKzU4Miw3IEBAIGxpYmV4ZWNkaXIgPSBAbGliZXhlY2RpckAKLSAKLSAjIERpcmVjdG9yeSBpbiB3aGljaCB0aGUgY29tcGlsZXIgZmluZHMgbGlicmFyaWVzIGV0Yy4KLSBsaWJzdWJkaXIgPSAkKGxpYmRpcikvZ2NjLyQocmVhbF90YXJnZXRfbm9uY2Fub25pY2FsKS8kKHZlcnNpb24pJChhY2NlbF9kaXJfc3VmZml4KQotK2xpYnN1YmRpcl90YXJnZXQgPSBnY2MvJCh0YXJnZXRfbm9uY2Fub25pY2FsKS8kKHZlcnNpb24pCi0gIyBEaXJlY3RvcnkgaW4gd2hpY2ggdGhlIGNvbXBpbGVyIGZpbmRzIGV4ZWN1dGFibGVzCi0gbGliZXhlY3N1YmRpciA9ICQobGliZXhlY2RpcikvZ2NjLyQocmVhbF90YXJnZXRfbm9uY2Fub25pY2FsKS8kKHZlcnNpb24pJChhY2NlbF9kaXJfc3VmZml4KQotICMgRGlyZWN0b3J5IGluIHdoaWNoIGFsbCBwbHVnaW4gcmVzb3VyY2VzIGFyZSBpbnN0YWxsZWQKLUBAIC0yNjEwLDYgKzI2MTEsNyBAQCBDRkxBR1MtaW50bC5vICs9IC1ETE9DQUxFRElSPVwiJChsb2NhbGVkaXIpXCIKLSAKLSBQUkVQUk9DRVNTT1JfREVGSU5FUyA9IFwKLSAgIC1ER0NDX0lOQ0xVREVfRElSPVwiJChsaWJzdWJkaXIpL2luY2x1ZGVcIiBcCi0rICAtREdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQ9XCIkKGxpYnN1YmRpcl90YXJnZXQpL2luY2x1ZGVcIiBcCi0gICAtREZJWEVEX0lOQ0xVREVfRElSPVwiJChsaWJzdWJkaXIpL2luY2x1ZGUtZml4ZWRcIiBcCi0gICAtREdQTFVTUExVU19JTkNMVURFX0RJUj1cIiQoZ2NjX2d4eF9pbmNsdWRlX2RpcilcIiBcCi0gICAtREdQTFVTUExVU19JTkNMVURFX0RJUl9BRERfU1lTUk9PVD0kKGdjY19neHhfaW5jbHVkZV9kaXJfYWRkX3N5c3Jvb3QpIFwKLWRpZmYgLS1naXQgYS9nY2MvY3BwZGVmYXVsdC5jIGIvZ2NjL2NwcGRlZmF1bHQuYwotaW5kZXggNTgwYzFiYS4uMDNhMDI4NyAxMDA2NDQKLS0tLSBhL2djYy9jcHBkZWZhdWx0LmMKLSsrKyBiL2djYy9jcHBkZWZhdWx0LmMKLUBAIC01OSw2ICs1OSwxMCBAQCBjb25zdCBzdHJ1Y3QgZGVmYXVsdF9pbmNsdWRlIGNwcF9pbmNsdWRlX2RlZmF1bHRzW10KLSAgICAgLyogVGhpcyBpcyB0aGUgZGlyIGZvciBnY2MncyBwcml2YXRlIGhlYWRlcnMuICAqLwotICAgICB7IEdDQ19JTkNMVURFX0RJUiwgIkdDQyIsIDAsIDAsIDAsIDAgfSwKLSAjZW5kaWYKLSsjaWZkZWYgR0NDX0lOQ0xVREVfU1VCRElSX1RBUkdFVAotKyAgICAvKiBUaGlzIGlzIHRoZSBkaXIgZm9yIGdjYydzIHByaXZhdGUgaGVhZGVycyB1bmRlciB0aGUgc3BlY2lmaWVkIHN5c3Jvb3QuICAqLwotKyAgICB7IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMiBHQ0NfSU5DTFVERV9TVUJESVJfVEFSR0VULCAiR0NDIiwgMCwgMCwgMSwgMCB9LAotKyNlbmRpZgotICNpZmRlZiBMT0NBTF9JTkNMVURFX0RJUgotICAgICAvKiAvdXNyL2xvY2FsL2luY2x1ZGUgY29tZXMgYmVmb3JlIHRoZSBmaXhpbmNsdWRlZCBoZWFkZXIgZmlsZXMuICAqLwotICAgICB7IExPQ0FMX0lOQ0xVREVfRElSLCAwLCAwLCAxLCAxLCAyIH0sCi1kaWZmIC0tZ2l0IGEvZ2NjL2RlZmF1bHRzLmggYi9nY2MvZGVmYXVsdHMuaAotaW5kZXggMWQ1NDc5OC4uOTgzZDQ1ZSAxMDA2NDQKLS0tLSBhL2djYy9kZWZhdWx0cy5oCi0rKysgYi9nY2MvZGVmYXVsdHMuaAotQEAgLTEzNjEsNCArMTM2MSwxMyBAQCBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5HLlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKLSAKLSAjZW5kaWYgLyogR0NDX0lOU05fRkxBR1NfSCAgKi8KLSAKLSsvKiBEZWZhdWx0IHByZWZpeGVzIHRvIGF0dGFjaCB0byBjb21tYW5kIG5hbWVzLiAgKi8KLSsKLSsjaWZuZGVmIFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMQotKyNkZWZpbmUgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8xICIvbGliLyIKLSsjZW5kaWYKLSsjaWZuZGVmIFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMgotKyNkZWZpbmUgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yICIvdXNyL2xpYi8iCi0rI2VuZGlmCi0rCi0gI2VuZGlmICAvKiAhIEdDQ19ERUZBVUxUU19IICovCi1kaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCi1pbmRleCBlNmVmYWU3Li4zY2EyN2I5IDEwMDY0NAotLS0tIGEvZ2NjL2djYy5jCi0rKysgYi9nY2MvZ2NjLmMKLUBAIC0xMjYzLDEzICsxMjYzLDYgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmdjY19saWJleGVjX3ByZWZpeDsKLSAKLSAvKiBEZWZhdWx0IHByZWZpeGVzIHRvIGF0dGFjaCB0byBjb21tYW5kIG5hbWVzLiAgKi8KLSAKLS0jaWZuZGVmIFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMQotLSNkZWZpbmUgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8xICIvbGliLyIKLS0jZW5kaWYKLS0jaWZuZGVmIFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMgotLSNkZWZpbmUgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yICIvdXNyL2xpYi8iCi0tI2VuZGlmCi0tCi0gI2lmZGVmIENST1NTX0RJUkVDVE9SWV9TVFJVQ1RVUkUgIC8qIERvbid0IHVzZSB0aGVzZSBwcmVmaXhlcyBmb3IgYSBjcm9zcyBjb21waWxlci4gICovCi0gI3VuZGVmIE1EX0VYRUNfUFJFRklYCi0gI3VuZGVmIE1EX1NUQVJURklMRV9QUkVGSVgKLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDMzLWdjYy00Ljgtd29uLXQtYnVpbGQtd2l0aC1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMzMtZ2NjLTQuOC13b24tdC1idWlsZC13aXRoLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTlkNDgwZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMzMtZ2NjLTQuOC13b24tdC1idWlsZC13aXRoLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLUZyb20gNjI5ZmNjN2QwMDc1YzliNDI2MWRhNjQzNWUxMjI0MjlmYjAyOGVjMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDIwIEZlYiAyMDE1IDExOjE3OjE5ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMzMvNDZdIGdjYyA0LjgrIHdvbid0IGJ1aWxkIHdpdGggLS1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcKLQotc2luY2UgdGhlICouUHBvIGZpbGVzIGRvbid0IGdldCBjcmVhdGVkIHVubGVzcyAtLWVuYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nIGlzIHRydWUuCi0KLVRoaXMgcGF0Y2ggZW5zdXJlcyB3ZSBvbmx5IHVzZSB0aG9zZSBjb21waWxlciBvcHRpb25zIHdoZW4gaXRzIGVuYWJsZWQuCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCi0KLShQcm9ibGVtIHdhcyBhbHJlYWR5IHJlcG9ydGVkIHVwc3RyZWFtLCBhdHRhY2hlZCB0aGlzIHBhdGNoIHRoZXJlCi1odHRwOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTU1OTMwKQotCi1SUAotMjAxMi8wOS8yMgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gbGliYXRvbWljL01ha2VmaWxlLmFtIHwgMyArKy0KLSBsaWJhdG9taWMvTWFrZWZpbGUuaW4gfCAzICsrLQotIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliYXRvbWljL01ha2VmaWxlLmFtIGIvbGliYXRvbWljL01ha2VmaWxlLmFtCi1pbmRleCAzZDhhYjYyLi4yM2RmZjdlIDEwMDY0NAotLS0tIGEvbGliYXRvbWljL01ha2VmaWxlLmFtCi0rKysgYi9saWJhdG9taWMvTWFrZWZpbGUuYW0KLUBAIC0xMDEsNyArMTAxLDggQEAgUEFUX1MJCT0gJCh3b3JkIDMsJChQQVRfU1BMSVQpKQotIElGVU5DX0RFRgk9IC1ESUZVTkNfQUxUPSQoUEFUX1MpCi0gSUZVTkNfT1BUCT0gJCh3b3JkICQoUEFUX1MpLCQoSUZVTkNfT1BUSU9OUykpCi0gCi0tTV9ERVBTCQk9IC1NVCAkQCAtTUQgLU1QIC1NRiAkKERFUERJUikvJChARikuUHBvCi0rQEFNREVQX1RSVUVATV9ERVBTCQk9IC1NVCAkQCAtTUQgLU1QIC1NRiAkKERFUERJUikvJChARikuUHBvCi0rQEFNREVQX0ZBTFNFQE1fREVQUwkJPQotIE1fU0laRQkJPSAtRE49JChQQVRfTikKLSBNX0lGVU5DCQk9ICQoaWYgJChQQVRfUyksJChJRlVOQ19ERUYpICQoSUZVTkNfT1BUKSkKLSBNX0ZJTEUJCT0gJChQQVRfQkFTRSlfbi5jCi1kaWZmIC0tZ2l0IGEvbGliYXRvbWljL01ha2VmaWxlLmluIGIvbGliYXRvbWljL01ha2VmaWxlLmluCi1pbmRleCA5Mjg4NjUyLi4zNzIwMjU2IDEwMDY0NAotLS0tIGEvbGliYXRvbWljL01ha2VmaWxlLmluCi0rKysgYi9saWJhdG9taWMvTWFrZWZpbGUuaW4KLUBAIC0zMzAsNyArMzMwLDggQEAgUEFUX04gPSAkKHdvcmQgMiwkKFBBVF9TUExJVCkpCi0gUEFUX1MgPSAkKHdvcmQgMywkKFBBVF9TUExJVCkpCi0gSUZVTkNfREVGID0gLURJRlVOQ19BTFQ9JChQQVRfUykKLSBJRlVOQ19PUFQgPSAkKHdvcmQgJChQQVRfUyksJChJRlVOQ19PUFRJT05TKSkKLS1NX0RFUFMgPSAtTVQgJEAgLU1EIC1NUCAtTUYgJChERVBESVIpLyQoQEYpLlBwbwotK0BBTURFUF9UUlVFQE1fREVQUyA9IC1NVCAkQCAtTUQgLU1QIC1NRiAkKERFUERJUikvJChARikuUHBvCi0rQEFNREVQX0ZBTFNFQE1fREVQUyA9Ci0gTV9TSVpFID0gLUROPSQoUEFUX04pCi0gTV9JRlVOQyA9ICQoaWYgJChQQVRfUyksJChJRlVOQ19ERUYpICQoSUZVTkNfT1BUKSkKLSBNX0ZJTEUgPSAkKFBBVF9CQVNFKV9uLmMKLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDM0LURvbi10LXNlYXJjaC1ob3N0LWRpcmVjdG9yeS1kdXJpbmctcmVsaW5rLWlmLWluc3RfcHIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMzQtRG9uLXQtc2VhcmNoLWhvc3QtZGlyZWN0b3J5LWR1cmluZy1yZWxpbmstaWYtaW5zdF9wci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTQ1M2ZhNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMzQtRG9uLXQtc2VhcmNoLWhvc3QtZGlyZWN0b3J5LWR1cmluZy1yZWxpbmstaWYtaW5zdF9wci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLUZyb20gYTRlZmM5Y2E4NTczNGMyODNkNGRhMDliNjI4MTIxZTFjMWY0OWM0ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDMgTWFyIDIwMTUgMDg6MjE6MTkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAzNC80Nl0gRG9uJ3Qgc2VhcmNoIGhvc3QgZGlyZWN0b3J5IGR1cmluZyAicmVsaW5rIiBpZgotICRpbnN0X3ByZWZpeCBpcyBwcm92aWRlZAotCi1odHRwOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvbGlidG9vbC1wYXRjaGVzLzIwMTEtMDEvbXNnMDAwMjYuaHRtbAotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gbHRtYWluLnNoIHwgNSArKystLQotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9sdG1haW4uc2ggYi9sdG1haW4uc2gKLWluZGV4IDUyYmRiZGIuLjgyYmNlYzMgMTAwNjQ0Ci0tLS0gYS9sdG1haW4uc2gKLSsrKyBiL2x0bWFpbi5zaAotQEAgLTYwMDQsMTIgKzYwMDQsMTMgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgICAgZmkKLSAJICAgIGVsc2UKLSAJICAgICAgIyBXZSBjYW5ub3Qgc2VlbSB0byBoYXJkY29kZSBpdCwgZ3Vlc3Mgd2UnbGwgZmFrZSBpdC4KLSsJICAgICAgIyBEZWZhdWx0IGlmICRsaWJkaXIgaXMgbm90IHJlbGF0aXZlIHRvIHRoZSBwcmVmaXg6Ci0gCSAgICAgIGFkZF9kaXI9Ii1MJGxpYmRpciIKLS0JICAgICAgIyBUcnkgbG9va2luZyBmaXJzdCBpbiB0aGUgbG9jYXRpb24gd2UncmUgYmVpbmcgaW5zdGFsbGVkIHRvLgotKwotIAkgICAgICBpZiB0ZXN0IC1uICIkaW5zdF9wcmVmaXhfZGlyIjsgdGhlbgotIAkJY2FzZSAkbGliZGlyIGluCi0gCQkgIFtcXC9dKikKLS0JCSAgICBhZGRfZGlyPSIkYWRkX2RpciAtTCRpbnN0X3ByZWZpeF9kaXIkbGliZGlyIgotKwkJICAgIGFkZF9kaXI9Ii1MJGluc3RfcHJlZml4X2RpciRsaWJkaXIiCi0gCQkgICAgOzsKLSAJCWVzYWMKLSAJICAgICAgZmkKLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDM1LURvbnQtbGluay10aGUtcGx1Z2lucy13aXRoLWxpYmdvbXAtZXhwbGljaXRseS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAzNS1Eb250LWxpbmstdGhlLXBsdWdpbnMtd2l0aC1saWJnb21wLWV4cGxpY2l0bHkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlZDU4OWIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDM1LURvbnQtbGluay10aGUtcGx1Z2lucy13aXRoLWxpYmdvbXAtZXhwbGljaXRseS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDgzICswLDAgQEAKLUZyb20gNWIwMTI1YTc5Mjg0MmFlMDJkZjUwN2JjNTU1NTU2NjFjYjEwZjlhMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBTdW4sIDggTWFyIDIwMTUgMDM6NDE6MzkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAzNS80Nl0gRG9udCBsaW5rIHRoZSBwbHVnaW5zIHdpdGggbGliZ29tcCBleHBsaWNpdGx5Ci0KLVRoZXkgYXJlIGRsb3BlbmVkIGJ5IGxpYmdvbXAgYW55d2F5LiBUaGlzIGZpeGVzCi10aGUgbGlidG9vbCByZWxpbmsgaXNzdWUgd2hpY2ggY2F1c2VzIGlzc3VlcyBkdXJpbmcKLWNyb3NzIGNvbXBpbGF0aW9uCi0KLWxpYnRvb2w6IGluc3RhbGw6IC91c3IvYmluL2luc3RhbGwgLWMgLmxpYnMvbGliZ29tcC5sYWkKLS9ob21lL3VidW50dS93b3JrL2JsZWVkaW5nL2J1aWxkLXFlbXV4ODYtNjRtYy90bXAvd29yay9jb3JlMi02NC1yZGstbGludXgvZ2NjLXJ1bnRpbWUvNS4wLXIwL2ltYWdlL3Vzci9saWIvLi4vbGliL2xpYmdvbXAubGEKLWxpYnRvb2w6IGluc3RhbGw6IGVycm9yOiBjYW5ub3QgaW5zdGFsbCBgbGliZ29tcC1wbHVnaW4taG9zdF9ub25zaG0ubGEnCi10byBhIGRpcmVjdG9yeSBub3QgZW5kaW5nIGluIC91c3IvbGliCi1NYWtlZmlsZTo1MTc6IHJlY2lwZSBmb3IgdGFyZ2V0ICdpbnN0YWxsLXRvb2xleGVjbGliTFRMSUJSQVJJRVMnIGZhaWxlZAotbWFrZVsyXTogKioqIFtpbnN0YWxsLXRvb2xleGVjbGliTFRMSUJSQVJJRVNdIEVycm9yIDEKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGxpYmdvbXAvTWFrZWZpbGUuaW4gICAgICAgIHwgNyArKystLS0tCi0gbGliZ29tcC9wbHVnaW4vTWFrZWZyYWcuYW0gfCAzICstLQotIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliZ29tcC9NYWtlZmlsZS5pbiBiL2xpYmdvbXAvTWFrZWZpbGUuaW4KLWluZGV4IGI2MWIxMDguLjcxYjI2MjcgMTAwNjQ0Ci0tLS0gYS9saWJnb21wL01ha2VmaWxlLmluCi0rKysgYi9saWJnb21wL01ha2VmaWxlLmluCi1AQCAtMTIzLDcgKzEyMyw3IEBAIGFtX19pbnN0YWxsZGlycyA9ICIkKERFU1RESVIpJCh0b29sZXhlY2xpYmRpcikiICIkKERFU1RESVIpJChpbmZvZGlyKSIgXAotIAkiJChERVNURElSKSQoZmluY2x1ZGVkaXIpIiAiJChERVNURElSKSQobGlic3ViaW5jbHVkZWRpcikiIFwKLSAJIiQoREVTVERJUikkKHRvb2xleGVjbGliZGlyKSIKLSBMVExJQlJBUklFUyA9ICQodG9vbGV4ZWNsaWJfTFRMSUJSQVJJRVMpCi0tbGliZ29tcF9wbHVnaW5faG9zdF9ub25zaG1fbGFfREVQRU5ERU5DSUVTID0gbGliZ29tcC5sYQotK2xpYmdvbXBfcGx1Z2luX2hvc3Rfbm9uc2htX2xhX0xJQkFERCA9Ci0gYW1fbGliZ29tcF9wbHVnaW5faG9zdF9ub25zaG1fbGFfT0JKRUNUUyA9ICBcCi0gCWxpYmdvbXBfcGx1Z2luX2hvc3Rfbm9uc2htX2xhLXBsdWdpbi1ob3N0LmxvCi0gbGliZ29tcF9wbHVnaW5faG9zdF9ub25zaG1fbGFfT0JKRUNUUyA9ICBcCi1AQCAtMTMzLDcgKzEzMyw3IEBAIGxpYmdvbXBfcGx1Z2luX2hvc3Rfbm9uc2htX2xhX0xJTksgPSAkKExJQlRPT0wpIC0tdGFnPUNDIFwKLSAJLS1tb2RlPWxpbmsgJChDQ0xEKSAkKEFNX0NGTEFHUykgJChDRkxBR1MpIFwKLSAJJChsaWJnb21wX3BsdWdpbl9ob3N0X25vbnNobV9sYV9MREZMQUdTKSAkKExERkxBR1MpIC1vICRACi0gYW1fX0RFUEVOREVOQ0lFU18xID0KLS1AUExVR0lOX05WUFRYX1RSVUVAbGliZ29tcF9wbHVnaW5fbnZwdHhfbGFfREVQRU5ERU5DSUVTID0gbGliZ29tcC5sYSBcCi0rQFBMVUdJTl9OVlBUWF9UUlVFQGxpYmdvbXBfcGx1Z2luX252cHR4X2xhX0RFUEVOREVOQ0lFUyA9ICBcCi0gQFBMVUdJTl9OVlBUWF9UUlVFQAkkKGFtX19ERVBFTkRFTkNJRVNfMSkKLSBAUExVR0lOX05WUFRYX1RSVUVAYW1fbGliZ29tcF9wbHVnaW5fbnZwdHhfbGFfT0JKRUNUUyA9ICBcCi0gQFBMVUdJTl9OVlBUWF9UUlVFQAlsaWJnb21wX3BsdWdpbl9udnB0eF9sYS1wbHVnaW4tbnZwdHgubG8KLUBAIC00MDcsNyArNDA3LDcgQEAgbGliZ29tcF9sYV9TT1VSQ0VTID0gYWxsb2MuYyBiYXJyaWVyLmMgY3JpdGljYWwuYyBlbnYuYyBlcnJvci5jIGl0ZXIuYyBcCi0gQFBMVUdJTl9OVlBUWF9UUlVFQGxpYmdvbXBfcGx1Z2luX252cHR4X2xhX0xERkxBR1MgPSAgXAotIEBQTFVHSU5fTlZQVFhfVFJVRUAJJChsaWJnb21wX3BsdWdpbl9udnB0eF92ZXJzaW9uX2luZm8pIFwKLSBAUExVR0lOX05WUFRYX1RSVUVACSQobHRfaG9zdF9mbGFncykgJChQTFVHSU5fTlZQVFhfTERGTEFHUykKLS1AUExVR0lOX05WUFRYX1RSVUVAbGliZ29tcF9wbHVnaW5fbnZwdHhfbGFfTElCQUREID0gbGliZ29tcC5sYSAkKFBMVUdJTl9OVlBUWF9MSUJTKQotK0BQTFVHSU5fTlZQVFhfVFJVRUBsaWJnb21wX3BsdWdpbl9udnB0eF9sYV9MSUJBREQgPSAkKFBMVUdJTl9OVlBUWF9MSUJTKQotIEBQTFVHSU5fTlZQVFhfVFJVRUBsaWJnb21wX3BsdWdpbl9udnB0eF9sYV9MSUJUT09MRkxBR1MgPSAtLXRhZz1kaXNhYmxlLXN0YXRpYwotIGxpYmdvbXBfcGx1Z2luX2hvc3Rfbm9uc2htX3ZlcnNpb25faW5mbyA9IC12ZXJzaW9uLWluZm8gJChsaWJ0b29sX1ZFUlNJT04pCi0gbGliZ29tcF9wbHVnaW5faG9zdF9ub25zaG1fbGFfU09VUkNFUyA9IHBsdWdpbi9wbHVnaW4taG9zdC5jCi1AQCAtNDE1LDcgKzQxNSw2IEBAIGxpYmdvbXBfcGx1Z2luX2hvc3Rfbm9uc2htX2xhX0NQUEZMQUdTID0gJChBTV9DUFBGTEFHUykgLURIT1NUX05PTlNITV9QTFVHSU4KLSBsaWJnb21wX3BsdWdpbl9ob3N0X25vbnNobV9sYV9MREZMQUdTID0gXAotIAkkKGxpYmdvbXBfcGx1Z2luX2hvc3Rfbm9uc2htX3ZlcnNpb25faW5mbykgJChsdF9ob3N0X2ZsYWdzKQotIAotLWxpYmdvbXBfcGx1Z2luX2hvc3Rfbm9uc2htX2xhX0xJQkFERCA9IGxpYmdvbXAubGEKLSBsaWJnb21wX3BsdWdpbl9ob3N0X25vbnNobV9sYV9MSUJUT09MRkxBR1MgPSAtLXRhZz1kaXNhYmxlLXN0YXRpYwotIG5vZGlzdF9ub2luc3RfSEVBREVSUyA9IGxpYmdvbXBfZi5oCi0gbm9kaXN0X2xpYnN1YmluY2x1ZGVfSEVBREVSUyA9IG9tcC5oIG9wZW5hY2MuaAotZGlmZiAtLWdpdCBhL2xpYmdvbXAvcGx1Z2luL01ha2VmcmFnLmFtIGIvbGliZ29tcC9wbHVnaW4vTWFrZWZyYWcuYW0KLWluZGV4IDE2NzQ4NWYuLmQyYzU0MjggMTAwNjQ0Ci0tLS0gYS9saWJnb21wL3BsdWdpbi9NYWtlZnJhZy5hbQotKysrIGIvbGliZ29tcC9wbHVnaW4vTWFrZWZyYWcuYW0KLUBAIC0zNSw3ICszNSw3IEBAIGxpYmdvbXBfcGx1Z2luX252cHR4X2xhX0NQUEZMQUdTID0gJChBTV9DUFBGTEFHUykgJChQTFVHSU5fTlZQVFhfQ1BQRkxBR1MpCi0gbGliZ29tcF9wbHVnaW5fbnZwdHhfbGFfTERGTEFHUyA9ICQobGliZ29tcF9wbHVnaW5fbnZwdHhfdmVyc2lvbl9pbmZvKSBcCi0gCSQobHRfaG9zdF9mbGFncykKLSBsaWJnb21wX3BsdWdpbl9udnB0eF9sYV9MREZMQUdTICs9ICQoUExVR0lOX05WUFRYX0xERkxBR1MpCi0tbGliZ29tcF9wbHVnaW5fbnZwdHhfbGFfTElCQUREID0gbGliZ29tcC5sYSAkKFBMVUdJTl9OVlBUWF9MSUJTKQotK2xpYmdvbXBfcGx1Z2luX252cHR4X2xhX0xJQkFERCA9ICQoUExVR0lOX05WUFRYX0xJQlMpCi0gbGliZ29tcF9wbHVnaW5fbnZwdHhfbGFfTElCVE9PTEZMQUdTID0gLS10YWc9ZGlzYWJsZS1zdGF0aWMKLSBlbmRpZgotIAotQEAgLTQ1LDUgKzQ1LDQgQEAgbGliZ29tcF9wbHVnaW5faG9zdF9ub25zaG1fbGFfU09VUkNFUyA9IHBsdWdpbi9wbHVnaW4taG9zdC5jCi0gbGliZ29tcF9wbHVnaW5faG9zdF9ub25zaG1fbGFfQ1BQRkxBR1MgPSAkKEFNX0NQUEZMQUdTKSAtREhPU1RfTk9OU0hNX1BMVUdJTgotIGxpYmdvbXBfcGx1Z2luX2hvc3Rfbm9uc2htX2xhX0xERkxBR1MgPSBcCi0gCSQobGliZ29tcF9wbHVnaW5faG9zdF9ub25zaG1fdmVyc2lvbl9pbmZvKSAkKGx0X2hvc3RfZmxhZ3MpCi0tbGliZ29tcF9wbHVnaW5faG9zdF9ub25zaG1fbGFfTElCQUREID0gbGliZ29tcC5sYQotIGxpYmdvbXBfcGx1Z2luX2hvc3Rfbm9uc2htX2xhX0xJQlRPT0xGTEFHUyA9IC0tdGFnPWRpc2FibGUtc3RhdGljCi0tLSAKLTIuNi4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAzNi1Vc2UtU1lTVEVNTElCU19ESVItcmVwbGFjZW1lbnQtaW5zdGVhZC1vZi1oYXJkY29kaW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDM2LVVzZS1TWVNURU1MSUJTX0RJUi1yZXBsYWNlbWVudC1pbnN0ZWFkLW9mLWhhcmRjb2RpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxYzAyOTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDM2LVVzZS1TWVNURU1MSUJTX0RJUi1yZXBsYWNlbWVudC1pbnN0ZWFkLW9mLWhhcmRjb2RpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1Gcm9tIGIwYjA2ODgxNzZhOTQ4Mjc3N2U5YjJlOTg0MDhiZmM0NTA1ZDMxYWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCAyOCBBcHIgMjAxNSAyMzoxNToyNyAtMDcwMAotU3ViamVjdDogW1BBVENIIDM2LzQ2XSBVc2UgU1lTVEVNTElCU19ESVIgcmVwbGFjZW1lbnQgaW5zdGVhZCBvZiBoYXJkY29kaW5nCi0gYmFzZV9saWJkaXIKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGdjYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmggfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaAotaW5kZXggMjU3YWNmMC4uYWJlYjk0OCAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmgKLSsrKyBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmgKLUBAIC0yMSw3ICsyMSw3IEBACi0gI2lmbmRlZiBHQ0NfQUFSQ0g2NF9MSU5VWF9ICi0gI2RlZmluZSBHQ0NfQUFSQ0g2NF9MSU5VWF9ICi0gCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC1hYXJjaDY0JXttYmlnLWVuZGlhbjpfYmV9JXttYWJpPWlscDMyOl9pbHAzMn0uc28uMSIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtYWFyY2g2NCV7bWJpZy1lbmRpYW46X2JlfSV7bWFiaT1pbHAzMjpfaWxwMzJ9LnNvLjEiCi0gCi0gI3VuZGVmICBBU0FOX0NDMV9TUEVDCi0gI2RlZmluZSBBU0FOX0NDMV9TUEVDICIleyU6c2FuaXRpemUoYWRkcmVzcyk6LWZ1bndpbmQtdGFibGVzfSIKLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDM3LWFhcmNoNjQtQWRkLXN1cHBvcnQtZm9yLW11c2wtbGRzby5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAzNy1hYXJjaDY0LUFkZC1zdXBwb3J0LWZvci1tdXNsLWxkc28ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwZGJlNzQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDM3LWFhcmNoNjQtQWRkLXN1cHBvcnQtZm9yLW11c2wtbGRzby5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLUZyb20gNDIwY2E2NGE4NmQ1NjBhNzdlZTU5NmE5Nzc0ZDY3MmIwOGNhODI3OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDI4IEFwciAyMDE1IDIzOjE4OjM5IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMzcvNDZdIGFhcmNoNjQ6IEFkZCBzdXBwb3J0IGZvciBtdXNsIGxkc28KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGdjYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmggfCAyICsrCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaCBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmgKLWluZGV4IGFiZWI5NDguLmY5ZTY1ZmMgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oCi0rKysgYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oCi1AQCAtMjMsNiArMjMsOCBAQAotIAotICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1hYXJjaDY0JXttYmlnLWVuZGlhbjpfYmV9JXttYWJpPWlscDMyOl9pbHAzMn0uc28uMSIKLSAKLSsjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgIFNZU1RFTUxJQlNfRElSICJsZC1tdXNsLWFhcmNoNjQuc28uMSIKLSsKLSAjdW5kZWYgIEFTQU5fQ0MxX1NQRUMKLSAjZGVmaW5lIEFTQU5fQ0MxX1NQRUMgIiV7JTpzYW5pdGl6ZShhZGRyZXNzKTotZnVud2luZC10YWJsZXN9IgotIAotLS0gCi0yLjYuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwMzgtZml4LWctc3lzcm9vdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAzOC1maXgtZy1zeXNyb290LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YmE1NzRhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAzOC1maXgtZy1zeXNyb290LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotRnJvbSA4ZGYzZTcwMDdhMjJjOWQ2YmU1ZDVhZTRiOWIxNjljNWM4NDMxOTE3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMjcgTWF5IDIwMTUgMTc6MDY6MDYgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAzOC80Nl0gZml4IGcrKyBzeXNyb290Ci0KLVBvcnRpb25zIG9mCi0KLWh0dHA6Ly93d3cubWFpbC1hcmNoaXZlLmNvbS9nY2MtcGF0Y2hlc0BnY2MuZ251Lm9yZy9tc2cyNjAxMy5odG1sCi0KLWFyZSBub3QgdXBzdHJlYW1lZCB5ZXQuIFNvIGxldHMga2VlcCBtaXNzaW5nIHBpZWNlcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVdpdGhvdXQgdGhpcywgY29tcGlsaW5nIHNvbWV0aGluZyBzaW1wbGUgbGlrZSAjaW5jbHVkZSA8bGltaXRzPiBvbiB0YXJnZXQKLXdpdGggYysrIHRlc3QuY3BwIGZhaWxzIHVuYWJsZSB0byBmaW5kIHRoZSBoZWFkZXIuIHN0cmFjZSBzaG93cyBpdCBsb29raW5nIGluCi11c3IvaW5jbHVkZS94eHh4IHJhdGhlciB0aGFuIC91c3IvaW5jbHVkZS94eHh4Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnY2MvY29uZmlndXJlICAgIHwgNCArKystCi0gZ2NjL2NvbmZpZ3VyZS5hYyB8IDQgKysrLQotIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKLWluZGV4IDliNjBhYWQuLjZkZjU5NGMgMTAwNzU1Ci0tLS0gYS9nY2MvY29uZmlndXJlCi0rKysgYi9nY2MvY29uZmlndXJlCi1AQCAtMzM3NSw3ICszMzc1LDkgQEAgZ2NjX2d4eF9pbmNsdWRlX2Rpcl9hZGRfc3lzcm9vdD0wCi0gaWYgdGVzdCAiJHt3aXRoX3N5c3Jvb3Qrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgIGdjY19neHhfd2l0aG91dF9zeXNyb290PWBleHByICIke2djY19neHhfaW5jbHVkZV9kaXJ9IiA6ICIke3dpdGhfc3lzcm9vdH0iJ1woLipcKSdgCi0gICBpZiB0ZXN0ICIke2djY19neHhfd2l0aG91dF9zeXNyb290fSI7IHRoZW4KLS0gICAgZ2NjX2d4eF9pbmNsdWRlX2Rpcj0iJHtnY2NfZ3h4X3dpdGhvdXRfc3lzcm9vdH0iCi0rICAgIGlmIHRlc3QgeCR7d2l0aF9zeXNyb290fSAhPSB4LzsgdGhlbgotKyAgICAgIGdjY19neHhfaW5jbHVkZV9kaXI9IiR7Z2NjX2d4eF93aXRob3V0X3N5c3Jvb3R9IgotKyAgICBmaQotICAgICBnY2NfZ3h4X2luY2x1ZGVfZGlyX2FkZF9zeXNyb290PTEKLSAgIGZpCi0gZmkKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYwotaW5kZXggZTFlNTRmMi4uM2JiMjE3MyAxMDA2NDQKLS0tLSBhL2djYy9jb25maWd1cmUuYWMKLSsrKyBiL2djYy9jb25maWd1cmUuYWMKLUBAIC0xNTIsNyArMTUyLDkgQEAgZ2NjX2d4eF9pbmNsdWRlX2Rpcl9hZGRfc3lzcm9vdD0wCi0gaWYgdGVzdCAiJHt3aXRoX3N5c3Jvb3Qrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgIGdjY19neHhfd2l0aG91dF9zeXNyb290PWBleHByICIke2djY19neHhfaW5jbHVkZV9kaXJ9IiA6ICIke3dpdGhfc3lzcm9vdH0iJ1woLipcKSdgCi0gICBpZiB0ZXN0ICIke2djY19neHhfd2l0aG91dF9zeXNyb290fSI7IHRoZW4KLS0gICAgZ2NjX2d4eF9pbmNsdWRlX2Rpcj0iJHtnY2NfZ3h4X3dpdGhvdXRfc3lzcm9vdH0iCi0rICAgIGlmIHRlc3QgeCR7d2l0aF9zeXNyb290fSAhPSB4LzsgdGhlbgotKyAgICAgIGdjY19neHhfaW5jbHVkZV9kaXI9IiR7Z2NjX2d4eF93aXRob3V0X3N5c3Jvb3R9IgotKyAgICBmaQotICAgICBnY2NfZ3h4X2luY2x1ZGVfZGlyX2FkZF9zeXNyb290PTEKLSAgIGZpCi0gZmkKLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDM5LWxpYmNjMS1maXgtbGliY2MxLXMtaW5zdGFsbC1wYXRoLWFuZC1ycGF0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDAzOS1saWJjYzEtZml4LWxpYmNjMS1zLWluc3RhbGwtcGF0aC1hbmQtcnBhdGgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlMGRmOTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDM5LWxpYmNjMS1maXgtbGliY2MxLXMtaW5zdGFsbC1wYXRoLWFuZC1ycGF0aC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLUZyb20gMWVlZGU5ZTRhMTBkMzUzMmRiODI2YTZlZWNlZDY5NWRmM2FkNWI4OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotRGF0ZTogU3VuLCA1IEp1bCAyMDE1IDIwOjI1OjE4IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMzkvNDZdIGxpYmNjMTogZml4IGxpYmNjMSdzIGluc3RhbGwgcGF0aCBhbmQgcnBhdGgKLQotKiBJbnN0YWxsIGxpYmNjMS5zbyBhbmQgbGliY2MxcGx1Z2luLnNvIGludG8KLSAgJChsaWJleGVjZGlyKS9nY2MvJCh0YXJnZXRfbm9uY2Fub25pY2FsKS8kKGdjY192ZXJzaW9uKSwgYXMgd2hhdCB3ZQotICBoYWQgZG9uZSB0byBsdG8tcGx1Z2luLgotKiBGaXggYmFkIFJQQVRIIGl1c3N1ZToKLSAgZ2NjLTUuMi4wOiBwYWNrYWdlIGdjYy1wbHVnaW5zIGNvbnRhaW5zIGJhZCBSUEFUSCAvcGF0aHQvdG8vdG1wL3N5c3Jvb3RzL3FlbXV4ODYtNjQvdXNyL2xpYjY0Ly4uL2xpYjY0IGluIGZpbGUKLSAvcGF0aC90by9nY2MvNS4yLjAtcjAvcGFja2FnZXMtc3BsaXQvZ2NjLXBsdWdpbnMvdXNyL2xpYjY0L2djYy94ODZfNjQtcG9reS1saW51eC81LjIuMC9wbHVnaW4vbGliY2MxcGx1Z2luLnNvLjAuMC4wCi0gW3JwYXRoc10KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBjb25maWd1cmF0aW9uXQotCi1TaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIGxpYmNjMS9NYWtlZmlsZS5hbSB8IDQgKystLQotIGxpYmNjMS9NYWtlZmlsZS5pbiB8IDQgKystLQotIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliY2MxL01ha2VmaWxlLmFtIGIvbGliY2MxL01ha2VmaWxlLmFtCi1pbmRleCA3YTI3NGIzLi5kYjY5YmVhIDEwMDY0NAotLS0tIGEvbGliY2MxL01ha2VmaWxlLmFtCi0rKysgYi9saWJjYzEvTWFrZWZpbGUuYW0KLUBAIC0zNSw4ICszNSw4IEBAIGxpYmliZXJ0eSA9ICQoaWYgJCh3aWxkY2FyZCAkKGxpYmliZXJ0eV9ub2FzYW4pKSwkKFdjKSQobGliaWJlcnR5X25vYXNhbiksIFwKLSAJICAgICQoV2MpJChsaWJpYmVydHlfbm9ybWFsKSkpCi0gbGliaWJlcnR5X2RlcCA9ICQocGF0c3Vic3QgJChXYyklLCUsJChsaWJpYmVydHkpKQotIAotLXBsdWdpbmRpciA9ICQobGliZGlyKS9nY2MvJCh0YXJnZXRfbm9uY2Fub25pY2FsKS8kKGdjY192ZXJzaW9uKS9wbHVnaW4KLS1jYzFsaWJkaXIgPSAkKGxpYmRpcikvJChsaWJzdWZmaXgpCi0rY2MxbGliZGlyID0gJChsaWJleGVjZGlyKS9nY2MvJCh0YXJnZXRfbm9uY2Fub25pY2FsKS8kKGdjY192ZXJzaW9uKQotK3BsdWdpbmRpciA9ICQoY2MxbGliZGlyKQotIAotIGlmIEVOQUJMRV9QTFVHSU4KLSBwbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJjYzFwbHVnaW4ubGEKLWRpZmYgLS1naXQgYS9saWJjYzEvTWFrZWZpbGUuaW4gYi9saWJjYzEvTWFrZWZpbGUuaW4KLWluZGV4IDE5MTYxMzQuLmM4OTk1ZDIgMTAwNjQ0Ci0tLS0gYS9saWJjYzEvTWFrZWZpbGUuaW4KLSsrKyBiL2xpYmNjMS9NYWtlZmlsZS5pbgotQEAgLTI2Miw4ICsyNjIsOCBAQCBsaWJpYmVydHkgPSAkKGlmICQod2lsZGNhcmQgJChsaWJpYmVydHlfbm9hc2FuKSksJChXYykkKGxpYmliZXJ0eV9ub2FzYW4pLCBcCi0gCSAgICAkKFdjKSQobGliaWJlcnR5X25vcm1hbCkpKQotIAotIGxpYmliZXJ0eV9kZXAgPSAkKHBhdHN1YnN0ICQoV2MpJSwlLCQobGliaWJlcnR5KSkKLS1wbHVnaW5kaXIgPSAkKGxpYmRpcikvZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJChnY2NfdmVyc2lvbikvcGx1Z2luCi0tY2MxbGliZGlyID0gJChsaWJkaXIpLyQobGlic3VmZml4KQotK2NjMWxpYmRpciA9ICQobGliZXhlY2RpcikvZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJChnY2NfdmVyc2lvbikKLStwbHVnaW5kaXIgPSAkKGNjMWxpYmRpcikKLSBARU5BQkxFX1BMVUdJTl9UUlVFQHBsdWdpbl9MVExJQlJBUklFUyA9IGxpYmNjMXBsdWdpbi5sYQotIEBFTkFCTEVfUExVR0lOX1RSVUVAY2MxbGliX0xUTElCUkFSSUVTID0gbGliY2MxLmxhCi0gQlVJTFRfU09VUkNFUyA9IGNvbXBpbGVyLW5hbWUuaAotLS0gCi0yLjYuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNDAtaGFuZGxlLXN5c3Jvb3Qtc3VwcG9ydC1mb3ItbmF0aXZlc2RrLWdjYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA0MC1oYW5kbGUtc3lzcm9vdC1zdXBwb3J0LWZvci1uYXRpdmVzZGstZ2NjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMWUxMzEwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA0MC1oYW5kbGUtc3lzcm9vdC1zdXBwb3J0LWZvci1uYXRpdmVzZGstZ2NjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjEzICswLDAgQEAKLUZyb20gYjQxNjc0ZDM1N2M0YmEzMjBiOTg2MGUwZjMxM2QyZjVhMzMyZjI3ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDcgRGVjIDIwMTUgMjM6Mzk6NTQgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCA0MC80Nl0gaGFuZGxlIHN5c3Jvb3Qgc3VwcG9ydCBmb3IgbmF0aXZlc2RrLWdjYwotCi1CZWluZyBhYmxlIHRvIGJ1aWxkIGEgbmF0aXZlc2RrIGdjYyBpcyB1c2VmdWwsIHBhcnRpY3VsYXJseSBpbiBjYXNlcwotd2hlcmUgdGhlIGhvc3QgY29tcGlsZXIgbWF5IGJlIG9mIGFuIGluY29tcGF0aWJsZSB2ZXJzaW9uIChvciBhIDMyCi1iaXQgY29tcGlsZXIgaXMgbmVlZGVkKS4KLQotU2FkbHksIGJ1aWxkaW5nIG5hdGl2ZXNkay1nY2MgaXMgbm90IHN0cmFpZ2h0IGZvcndhcmQuIFdlIGluc3RhbGwKLW5hdGl2ZXNkay1nY2MgaW50byBhIHJlbG9jYXRhYmxlIGxvY2F0aW9uIGFuZCB0aGlzIG1lYW5zIHRoYXQgaXRzCi1saWJyYXJ5IGxvY2F0aW9ucyBjYW4gY2hhbmdlLiAiTm9ybWFsIiBzeXNyb290IHN1cHBvcnQgZG9lc24ndCBoZWxwCi1pbiB0aGlzIGNhc2Ugc2luY2UgdGhlIHZhbHVlcyBvZiBwYXRocyBsaWtlICJsaWJkaXIiIGNoYW5nZSwgbm90IGp1c3QKLWJhc2Ugcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIHN5c3RlbS4KLQotSW4gb3JkZXIgdG8gaGFuZGxlIHRoaXMgd2UgZG8gdHdvIHRoaW5nczoKLQotYSkgQWRkICVyIGludG8gc3BlYyBmaWxlIG1hcmt1cCB3aGljaCBjYW4gYmUgdXNlZCBmb3IgaW5qZWN0ZWQgcGF0aHMKLSAgIHN1Y2ggYXMgU1lTVEVNTElCU19ESVIgKHNlZSBnY2NfbXVsdGlsaWJfc2V0dXAoKSkuCi1iKSBBZGQgb3RoZXIgcGF0aHMgd2hpY2ggbmVlZCByZWxvY2F0aW9uIGludG8gYSAuZ2NjcmVsb2NwcmVmaXggc2VjdGlvbgotICAgd2hpY2ggdGhlIHJlbG9jYXRpb24gY29kZSB3aWxsIG5vdGljZSBhbmQgYWRqdXN0IGF1dG9tYXRpY2FsbHkuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQotUlAgMjAxNS83LzI4Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnY2MvY3BwZGVmYXVsdC5jIHwgNTAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KLSBnY2MvY3BwZGVmYXVsdC5oIHwgIDMgKystCi0gZ2NjL2djYy5jICAgICAgICB8IDIwICsrKysrKysrKysrKysrLS0tLS0tCi0gMyBmaWxlcyBjaGFuZ2VkLCA1MyBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jcHBkZWZhdWx0LmMgYi9nY2MvY3BwZGVmYXVsdC5jCi1pbmRleCAwM2EwMjg3Li5mNDRjMWQ4IDEwMDY0NAotLS0tIGEvZ2NjL2NwcGRlZmF1bHQuYwotKysrIGIvZ2NjL2NwcGRlZmF1bHQuYwotQEAgLTM1LDYgKzM1LDMwIEBACi0gIyB1bmRlZiBDUk9TU19JTkNMVURFX0RJUgotICNlbmRpZgotIAotK3N0YXRpYyBjaGFyIEdQTFVTUExVU19JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBHUExVU1BMVVNfSU5DTFVERV9ESVI7Ci0rc3RhdGljIGNoYXIgR0NDX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IEdDQ19JTkNMVURFX0RJUjsKLStzdGF0aWMgY2hhciBHUExVU1BMVVNfVE9PTF9JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBHUExVU1BMVVNfVE9PTF9JTkNMVURFX0RJUjsKLStzdGF0aWMgY2hhciBHUExVU1BMVVNfQkFDS1dBUkRfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gR1BMVVNQTFVTX0JBQ0tXQVJEX0lOQ0xVREVfRElSOwotK3N0YXRpYyBjaGFyIFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIgR0NDX0lOQ0xVREVfU1VCRElSX1RBUkdFVDsKLSsjaWZkZWYgTE9DQUxfSU5DTFVERV9ESVIKLStzdGF0aWMgY2hhciBMT0NBTF9JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBMT0NBTF9JTkNMVURFX0RJUjsKLSsjZW5kaWYKLSsjaWZkZWYgUFJFRklYX0lOQ0xVREVfRElSCi0rc3RhdGljIGNoYXIgUFJFRklYX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFBSRUZJWF9JTkNMVURFX0RJUjsKLSsjZW5kaWYKLSsjaWZkZWYgRklYRURfSU5DTFVERV9ESVIKLStzdGF0aWMgY2hhciBGSVhFRF9JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBGSVhFRF9JTkNMVURFX0RJUjsKLSsjZW5kaWYKLSsjaWZkZWYgQ1JPU1NfSU5DTFVERV9ESVIKLStzdGF0aWMgY2hhciBDUk9TU19JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBDUk9TU19JTkNMVURFX0RJUjsKLSsjZW5kaWYKLSsjaWZkZWYgVE9PTF9JTkNMVURFX0RJUgotK3N0YXRpYyBjaGFyIFRPT0xfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gVE9PTF9JTkNMVURFX0RJUjsKLSsjZW5kaWYKLSsjaWZkZWYgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSCi0rc3RhdGljIGNoYXIgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IE5BVElWRV9TWVNURU1fSEVBREVSX0RJUjsKLSsjZW5kaWYKLSsKLSBjb25zdCBzdHJ1Y3QgZGVmYXVsdF9pbmNsdWRlIGNwcF9pbmNsdWRlX2RlZmF1bHRzW10KLSAjaWZkZWYgSU5DTFVERV9ERUZBVUxUUwotID0gSU5DTFVERV9ERUZBVUxUUzsKLUBAIC00MiwzOCArNjYsMzggQEAgY29uc3Qgc3RydWN0IGRlZmF1bHRfaW5jbHVkZSBjcHBfaW5jbHVkZV9kZWZhdWx0c1tdCi0gPSB7Ci0gI2lmZGVmIEdQTFVTUExVU19JTkNMVURFX0RJUgotICAgICAvKiBQaWNrIHVwIEdOVSBDKysgZ2VuZXJpYyBpbmNsdWRlIGZpbGVzLiAgKi8KLS0gICAgeyBHUExVU1BMVVNfSU5DTFVERV9ESVIsICJHKysiLCAxLCAxLAotKyAgICB7IEdQTFVTUExVU19JTkNMVURFX0RJUlZBUiwgIkcrKyIsIDEsIDEsCi0gICAgICAgR1BMVVNQTFVTX0lOQ0xVREVfRElSX0FERF9TWVNST09ULCAwIH0sCi0gI2VuZGlmCi0gI2lmZGVmIEdQTFVTUExVU19UT09MX0lOQ0xVREVfRElSCi0gICAgIC8qIFBpY2sgdXAgR05VIEMrKyB0YXJnZXQtZGVwZW5kZW50IGluY2x1ZGUgZmlsZXMuICAqLwotLSAgICB7IEdQTFVTUExVU19UT09MX0lOQ0xVREVfRElSLCAiRysrIiwgMSwgMSwKLSsgICAgeyBHUExVU1BMVVNfVE9PTF9JTkNMVURFX0RJUlZBUiwgIkcrKyIsIDEsIDEsCi0gICAgICAgR1BMVVNQTFVTX0lOQ0xVREVfRElSX0FERF9TWVNST09ULCAxIH0sCi0gI2VuZGlmCi0gI2lmZGVmIEdQTFVTUExVU19CQUNLV0FSRF9JTkNMVURFX0RJUgotICAgICAvKiBQaWNrIHVwIEdOVSBDKysgYmFja3dhcmQgYW5kIGRlcHJlY2F0ZWQgaW5jbHVkZSBmaWxlcy4gICovCi0tICAgIHsgR1BMVVNQTFVTX0JBQ0tXQVJEX0lOQ0xVREVfRElSLCAiRysrIiwgMSwgMSwKLSsgICAgeyBHUExVU1BMVVNfQkFDS1dBUkRfSU5DTFVERV9ESVJWQVIsICJHKysiLCAxLCAxLAotICAgICAgIEdQTFVTUExVU19JTkNMVURFX0RJUl9BRERfU1lTUk9PVCwgMCB9LAotICNlbmRpZgotICNpZmRlZiBHQ0NfSU5DTFVERV9ESVIKLSAgICAgLyogVGhpcyBpcyB0aGUgZGlyIGZvciBnY2MncyBwcml2YXRlIGhlYWRlcnMuICAqLwotLSAgICB7IEdDQ19JTkNMVURFX0RJUiwgIkdDQyIsIDAsIDAsIDAsIDAgfSwKLSsgICAgeyBHQ0NfSU5DTFVERV9ESVJWQVIsICJHQ0MiLCAwLCAwLCAwLCAwIH0sCi0gI2VuZGlmCi0gI2lmZGVmIEdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQKLSAgICAgLyogVGhpcyBpcyB0aGUgZGlyIGZvciBnY2MncyBwcml2YXRlIGhlYWRlcnMgdW5kZXIgdGhlIHNwZWNpZmllZCBzeXNyb290LiAgKi8KLS0gICAgeyBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIgR0NDX0lOQ0xVREVfU1VCRElSX1RBUkdFVCwgIkdDQyIsIDAsIDAsIDEsIDAgfSwKLSsgICAgeyBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzJWQVIsICJHQ0MiLCAwLCAwLCAxLCAwIH0sCi0gI2VuZGlmCi0gI2lmZGVmIExPQ0FMX0lOQ0xVREVfRElSCi0gICAgIC8qIC91c3IvbG9jYWwvaW5jbHVkZSBjb21lcyBiZWZvcmUgdGhlIGZpeGluY2x1ZGVkIGhlYWRlciBmaWxlcy4gICovCi0tICAgIHsgTE9DQUxfSU5DTFVERV9ESVIsIDAsIDAsIDEsIDEsIDIgfSwKLS0gICAgeyBMT0NBTF9JTkNMVURFX0RJUiwgMCwgMCwgMSwgMSwgMCB9LAotKyAgICB7IExPQ0FMX0lOQ0xVREVfRElSVkFSLCAwLCAwLCAxLCAxLCAyIH0sCi0rICAgIHsgTE9DQUxfSU5DTFVERV9ESVJWQVIsIDAsIDAsIDEsIDEsIDAgfSwKLSAjZW5kaWYKLSAjaWZkZWYgUFJFRklYX0lOQ0xVREVfRElSCi0tICAgIHsgUFJFRklYX0lOQ0xVREVfRElSLCAwLCAwLCAxLCAwLCAwIH0sCi0rICAgIHsgUFJFRklYX0lOQ0xVREVfRElSVkFSLCAwLCAwLCAxLCAwLCAwIH0sCi0gI2VuZGlmCi0gI2lmZGVmIEZJWEVEX0lOQ0xVREVfRElSCi0gICAgIC8qIFRoaXMgaXMgdGhlIGRpciBmb3IgZml4aW5jbHVkZXMuICAqLwotLSAgICB7IEZJWEVEX0lOQ0xVREVfRElSLCAiR0NDIiwgMCwgMCwgMCwKLSsgICAgeyBGSVhFRF9JTkNMVURFX0RJUlZBUiwgIkdDQyIsIDAsIDAsIDAsCi0gICAgICAgLyogQSBtdWx0aWxpYiBzdWZmaXggbmVlZHMgYWRkaW5nIGlmIGRpZmZlcmVudCBtdWx0aWxpYnMgdXNlCi0gCSBkaWZmZXJlbnQgaGVhZGVycy4gICovCi0gI2lmZGVmIFNZU1JPT1RfSEVBREVSU19TVUZGSVhfU1BFQwotQEAgLTg1LDE2ICsxMDksMTYgQEAgY29uc3Qgc3RydWN0IGRlZmF1bHRfaW5jbHVkZSBjcHBfaW5jbHVkZV9kZWZhdWx0c1tdCi0gI2VuZGlmCi0gI2lmZGVmIENST1NTX0lOQ0xVREVfRElSCi0gICAgIC8qIE9uZSBwbGFjZSB0aGUgdGFyZ2V0IHN5c3RlbSdzIGhlYWRlcnMgbWlnaHQgYmUuICAqLwotLSAgICB7IENST1NTX0lOQ0xVREVfRElSLCAiR0NDIiwgMCwgMCwgMCwgMCB9LAotKyAgICB7IENST1NTX0lOQ0xVREVfRElSVkFSLCAiR0NDIiwgMCwgMCwgMCwgMCB9LAotICNlbmRpZgotICNpZmRlZiBUT09MX0lOQ0xVREVfRElSCi0gICAgIC8qIEFub3RoZXIgcGxhY2UgdGhlIHRhcmdldCBzeXN0ZW0ncyBoZWFkZXJzIG1pZ2h0IGJlLiAgKi8KLS0gICAgeyBUT09MX0lOQ0xVREVfRElSLCAiQklOVVRJTFMiLCAwLCAxLCAwLCAwIH0sCi0rICAgIHsgVE9PTF9JTkNMVURFX0RJUlZBUiwgIkJJTlVUSUxTIiwgMCwgMSwgMCwgMCB9LAotICNlbmRpZgotICNpZmRlZiBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVIKLSAgICAgLyogL3Vzci9pbmNsdWRlIGNvbWVzIGRlYWQgbGFzdC4gICovCi0tICAgIHsgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSLCBOQVRJVkVfU1lTVEVNX0hFQURFUl9DT01QT05FTlQsIDAsIDAsIDEsIDIgfSwKLS0gICAgeyBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVIsIE5BVElWRV9TWVNURU1fSEVBREVSX0NPTVBPTkVOVCwgMCwgMCwgMSwgMCB9LAotKyAgICB7IE5BVElWRV9TWVNURU1fSEVBREVSX0RJUlZBUiwgTkFUSVZFX1NZU1RFTV9IRUFERVJfQ09NUE9ORU5ULCAwLCAwLCAxLCAyIH0sCi0rICAgIHsgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSVkFSLCBOQVRJVkVfU1lTVEVNX0hFQURFUl9DT01QT05FTlQsIDAsIDAsIDEsIDAgfSwKLSAjZW5kaWYKLSAgICAgeyAwLCAwLCAwLCAwLCAwLCAwIH0KLSAgIH07Ci1kaWZmIC0tZ2l0IGEvZ2NjL2NwcGRlZmF1bHQuaCBiL2djYy9jcHBkZWZhdWx0LmgKLWluZGV4IGM5ODY0NGYuLjQxOTg2NjkgMTAwNjQ0Ci0tLS0gYS9nY2MvY3BwZGVmYXVsdC5oCi0rKysgYi9nY2MvY3BwZGVmYXVsdC5oCi1AQCAtMzMsNyArMzMsOCBAQAotIAotIHN0cnVjdCBkZWZhdWx0X2luY2x1ZGUKLSB7Ci0tICBjb25zdCBjaGFyICpjb25zdCBmbmFtZTsJLyogVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeS4gICovCi0rICBjb25zdCBjaGFyICpmbmFtZTsgICAgIC8qIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkuICAqLwotKwotICAgY29uc3QgY2hhciAqY29uc3QgY29tcG9uZW50OwkvKiBUaGUgY29tcG9uZW50IGNvbnRhaW5pbmcgdGhlIGRpcmVjdG9yeQotIAkJCQkgICAoc2VlIHVwZGF0ZV9wYXRoIGluIHByZWZpeC5jKSAqLwotICAgY29uc3QgY2hhciBjcGx1c3BsdXM7CQkvKiBPbmx5IGxvb2sgaGVyZSBpZiB3ZSdyZSBjb21waWxpbmcgQysrLiAgKi8KLWRpZmYgLS1naXQgYS9nY2MvZ2NjLmMgYi9nY2MvZ2NjLmMKLWluZGV4IDNjYTI3YjkuLjJiNzc1NmUgMTAwNjQ0Ci0tLS0gYS9nY2MvZ2NjLmMKLSsrKyBiL2djYy9nY2MuYwotQEAgLTEyMCw2ICsxMjAsOCBAQCBzdGF0aWMgY29uc3QgY2hhciAqdGFyZ2V0X3N5c3RlbV9yb290ID0gVEFSR0VUX1NZU1RFTV9ST09UOwotICNlbHNlCi0gc3RhdGljIGNvbnN0IGNoYXIgKnRhcmdldF9zeXN0ZW1fcm9vdCA9IDA7Ci0gI2VuZGlmCi0rIAotK3N0YXRpYyBjaGFyIHRhcmdldF9yZWxvY2F0YWJsZV9wcmVmaXhbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gU1lTVEVNTElCU19ESVI7Ci0gCi0gLyogTm9uemVybyBtZWFucyBwYXNzIHRoZSB1cGRhdGVkIHRhcmdldF9zeXN0ZW1fcm9vdCB0byB0aGUgY29tcGlsZXIuICAqLwotIAotQEAgLTM5MCw2ICszOTIsNyBAQCBvciB3aXRoIGNvbnN0YW50IHRleHQgaW4gYSBzaW5nbGUgYXJndW1lbnQuCi0gICVHICAgICBwcm9jZXNzIExJQkdDQ19TUEVDIGFzIGEgc3BlYy4KLSAgJVIgICAgIE91dHB1dCB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0YXJnZXRfc3lzdGVtX3Jvb3QgYW5kCi0gICAgICAgICB0YXJnZXRfc3lzcm9vdF9zdWZmaXguCi0rICVyICAgICBPdXRwdXQgdGhlIGJhc2UgcGF0aCB0YXJnZXRfcmVsb2NhdGFibGVfcHJlZml4Ci0gICVTICAgICBwcm9jZXNzIFNUQVJURklMRV9TUEVDIGFzIGEgc3BlYy4gIEEgY2FwaXRhbCBTIGlzIGFjdHVhbGx5IHVzZWQgaGVyZS4KLSAgJUUgICAgIHByb2Nlc3MgRU5ERklMRV9TUEVDIGFzIGEgc3BlYy4gIEEgY2FwaXRhbCBFIGlzIGFjdHVhbGx5IHVzZWQgaGVyZS4KLSAgJUMgICAgIHByb2Nlc3MgQ1BQX1NQRUMgYXMgYSBzcGVjLgotQEAgLTEyODYsMTAgKzEyODksMTAgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmdjY19saWJleGVjX3ByZWZpeDsKLSAgICBnY2NfZXhlY19wcmVmaXggaXMgc2V0IGJlY2F1c2UsIGluIHRoYXQgY2FzZSwgd2Uga25vdyB3aGVyZSB0aGUKLSAgICBjb21waWxlciBoYXMgYmVlbiBpbnN0YWxsZWQsIGFuZCB1c2UgcGF0aHMgcmVsYXRpdmUgdG8gdGhhdAotICAgIGxvY2F0aW9uIGluc3RlYWQuICAqLwotLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9leGVjX3ByZWZpeCA9IFNUQU5EQVJEX0VYRUNfUFJFRklYOwotLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9saWJleGVjX3ByZWZpeCA9IFNUQU5EQVJEX0xJQkVYRUNfUFJFRklYOwotLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9iaW5kaXJfcHJlZml4ID0gU1RBTkRBUkRfQklORElSX1BSRUZJWDsKLS1zdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeCA9IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVg7Ci0rc3RhdGljIGNoYXIgc3RhbmRhcmRfZXhlY19wcmVmaXhbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gU1RBTkRBUkRfRVhFQ19QUkVGSVg7Ci0rc3RhdGljIGNoYXIgc3RhbmRhcmRfbGliZXhlY19wcmVmaXhbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gU1RBTkRBUkRfTElCRVhFQ19QUkVGSVg7Ci0rc3RhdGljIGNoYXIgc3RhbmRhcmRfYmluZGlyX3ByZWZpeFs0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBTVEFOREFSRF9CSU5ESVJfUFJFRklYOwotK3N0YXRpYyBjaGFyICpjb25zdCBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4ID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWDsKLSAKLSAvKiBGb3IgbmF0aXZlIGNvbXBpbGVycywgdGhlc2UgYXJlIHdlbGwta25vd24gcGF0aHMgY29udGFpbmluZwotICAgIGNvbXBvbmVudHMgdGhhdCBtYXkgYmUgcHJvdmlkZWQgYnkgdGhlIHN5c3RlbS4gIEZvciBjcm9zcwotQEAgLTEyOTcsOSArMTMwMCw5IEBAIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4ID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWDsKLSBzdGF0aWMgY29uc3QgY2hhciAqbWRfZXhlY19wcmVmaXggPSBNRF9FWEVDX1BSRUZJWDsKLSBzdGF0aWMgY29uc3QgY2hhciAqbWRfc3RhcnRmaWxlX3ByZWZpeCA9IE1EX1NUQVJURklMRV9QUkVGSVg7Ci0gc3RhdGljIGNvbnN0IGNoYXIgKm1kX3N0YXJ0ZmlsZV9wcmVmaXhfMSA9IE1EX1NUQVJURklMRV9QUkVGSVhfMTsKLS1zdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeF8xCi0rc3RhdGljIGNoYXIgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeF8xWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKQotICAgPSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzE7Ci0tc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXhfMgotK3N0YXRpYyBjaGFyIHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXhfMls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkKLSAgID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yOwotIAotIC8qIEEgcmVsYXRpdmUgcGF0aCB0byBiZSB1c2VkIGluIGZpbmRpbmcgdGhlIGxvY2F0aW9uIG9mIHRvb2xzCi1AQCAtNTUyMyw2ICs1NTI2LDExIEBAIGRvX3NwZWNfMSAoY29uc3QgY2hhciAqc3BlYywgaW50IGluc3dpdGNoLCBjb25zdCBjaGFyICpzb2Z0X21hdGNoZWRfcGFydCkKLSAJICAgICAgfQotIAkgICAgYnJlYWs7Ci0gCi0rICAgICAgICAgIGNhc2UgJ3InOgotKyAgICAgICAgICAgICAgb2JzdGFja19ncm93ICgmb2JzdGFjaywgdGFyZ2V0X3JlbG9jYXRhYmxlX3ByZWZpeCwKLSsJCSAgICAgIHN0cmxlbiAodGFyZ2V0X3JlbG9jYXRhYmxlX3ByZWZpeCkpOwotKyAgICAgICAgICAgIGJyZWFrOwotKwotIAkgIGNhc2UgJ1MnOgotIAkgICAgdmFsdWUgPSBkb19zcGVjXzEgKHN0YXJ0ZmlsZV9zcGVjLCAwLCBOVUxMKTsKLSAJICAgIGlmICh2YWx1ZSAhPSAwKQotLS0gCi0yLjYuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNDEtU2VhcmNoLXRhcmdldC1zeXNyb290LWdjYy12ZXJzaW9uLXNwZWNpZmljLWRpcnMtd2l0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA0MS1TZWFyY2gtdGFyZ2V0LXN5c3Jvb3QtZ2NjLXZlcnNpb24tc3BlY2lmaWMtZGlycy13aXRoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YTUwNGExLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA0MS1TZWFyY2gtdGFyZ2V0LXN5c3Jvb3QtZ2NjLXZlcnNpb24tc3BlY2lmaWMtZGlycy13aXRoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLUZyb20gOTljYWRiNGQ4NDE1ZGQ1YTI3NWQ3ZDY0MTBmMjBkYjMzZDBmODQzMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDcgRGVjIDIwMTUgMjM6NDE6NDUgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCA0MS80Nl0gU2VhcmNoIHRhcmdldCBzeXNyb290IGdjYyB2ZXJzaW9uIHNwZWNpZmljIGRpcnMgd2l0aAotIG11bHRpbGliLgotCi1XZSBpbnN0YWxsIHRoZSBnY2MgbGlicmFyaWVzIChzdWNoIGFzIGNydGJlZ2luLnApIGludG8KLTxzeXNyb290PjxsaWJkaXI+Lzx0YXJnZXQtc3lzPi81LjIuMC8KLXdoaWNoIGlzIGEgZGVmYXVsdCBzZWFyY2ggcGF0aCBmb3IgR0NDIChha2EgbXVsdGlfc3VmZml4IGluIHRoZQotY29kZSBiZWxvdykuIDx0YXJnZXQtc3lzPiBpcyAnbWFjaGluZScgaW4gZ2NjJ3MgdGVybWlub2xvZ3kuIFdlIHVzZQotdGhlc2UgZGlyZWN0b3JpZXMgc28gdGhhdCBtdWx0aXBsZSBnY2MgdmVyc2lvbnMgY291bGQgaW4gdGhlb3J5Ci1jby1leGlzdCBvbiB0YXJnZXQuCi0KLVdlIG9ubHkgd2FudCB0byBidWlsZCBvbmUgZ2NjLWNyb3NzLWNhbmFkaWFuIHBlciBhcmNoIGFuZCBoYXZlIHRoaXMgd29yawotZm9yIGFsbCBtdWx0aWxpYnMuIDx0YXJnZXQtc3lzPiBjYW4gYmUgaGFuZGxlZCBieSBtYXBwaW5nIHRoZSBtdWx0aWxpYgotPHRhcmdldC1zeXM+IHRvIHRoZSBvbmUgdXNlZCBieSBnY2MtY3Jvc3MtY2FuYWRpYW4sIGUuZy4KLW1pcHM2NC1wb2xrbWxsaWIzMi1saW51eAotaXMgc3ltbGlua2VkIHRvIGJ5IG1pcHM2NC1wb2t5LWxpbnV4LgotCi1UaGUgZGVmYXVsdCBnY2Mgc2VhcmNoIHBhdGggaW4gdGhlIHRhcmdldCBzeXNyb290IGZvciBhICJsaWI2NCIgbXV0bGlsaWIKLWlzOgotCi08c3lzcm9vdD4vbGliMzIvbWlwczY0LXBva3ktbGludXgvNS4yLjAvCi08c3lzcm9vdD4vbGliMzIvLi4vbGliNjQvCi08c3lzcm9vdD4vdXNyL2xpYjMyL21pcHM2NC1wb2t5LWxpbnV4LzUuMi4wLwotPHN5c3Jvb3Q+L3Vzci9saWIzMi8uLi9saWI2NC8KLTxzeXNyb290Pi9saWIzMi8KLTxzeXNyb290Pi91c3IvbGliMzIvCi0KLXdoaWNoIG1lYW5zIHRoYXQgdGhlIGxpYjMyIGNydGJlZ2luLm8gd2lsbCBiZSBmb3VuZCBhbmQgdGhlIGxpYjY0IG9uZXMKLXdpbGwgbm90IHdoaWNoIGxlYWRzIHRvIGNvbXBpbGVyIGZhaWx1cmVzLgotCi1UaGlzIHBhdGNoIGluamVjdHMgYSBtdWx0aWxpYiB2ZXJzaW9uIG9mIHRoYXQgcGF0aCBmaXJzdCBzbyB0aGUgbGliNjQKLWJpbmFyaWVzIGNhbiBiZSBmb3VuZCBmaXJzdC4gV2l0aCB0aGlzIGNoYW5nZSB0aGUgc2VhcmNoIHBhdGggYmVjb21lczoKLQotPHN5c3Jvb3Q+L2xpYjMyLy4uL2xpYjY0L21pcHM2NC1wb2t5LWxpbnV4LzUuMi4wLwotPHN5c3Jvb3Q+L2xpYjMyL21pcHM2NC1wb2t5LWxpbnV4LzUuMi4wLwotPHN5c3Jvb3Q+L2xpYjMyLy4uL2xpYjY0LwotPHN5c3Jvb3Q+L3Vzci9saWIzMi8uLi9saWI2NC9taXBzNjQtcG9reS1saW51eC81LjIuMC8KLTxzeXNyb290Pi91c3IvbGliMzIvbWlwczY0LXBva3ktbGludXgvNS4yLjAvCi08c3lzcm9vdD4vdXNyL2xpYjMyLy4uL2xpYjY0LwotPHN5c3Jvb3Q+L2xpYjMyLwotPHN5c3Jvb3Q+L3Vzci9saWIzMi8KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1SUCAyMDE1LzcvMzEKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGdjYy9nY2MuYyB8IDI5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYwotaW5kZXggMmI3NzU2ZS4uOGY1M2FlYSAxMDA2NDQKLS0tLSBhL2djYy9nY2MuYwotKysrIGIvZ2NjL2djYy5jCi1AQCAtMjMwNSw3ICsyMzA1LDcgQEAgZm9yX2VhY2hfcGF0aCAoY29uc3Qgc3RydWN0IHBhdGhfcHJlZml4ICpwYXRocywKLSAgICAgICBpZiAocGF0aCA9PSBOVUxMKQotIAl7Ci0gCSAgbGVuID0gcGF0aHMtPm1heF9sZW4gKyBleHRyYV9zcGFjZSArIDE7Ci0tCSAgbGVuICs9IE1BWCAoTUFYIChzdWZmaXhfbGVuLCBtdWx0aV9vc19kaXJfbGVuKSwgbXVsdGlhcmNoX2xlbik7Ci0rCSAgbGVuICs9IE1BWCAoKHN1ZmZpeF9sZW4gKyBtdWx0aV9vc19kaXJfbGVuKSwgbXVsdGlhcmNoX2xlbik7Ci0gCSAgcGF0aCA9IFhORVdWRUMgKGNoYXIsIGxlbik7Ci0gCX0KLSAKLUBAIC0yMzE3LDYgKzIzMTcsMzMgQEAgZm9yX2VhY2hfcGF0aCAoY29uc3Qgc3RydWN0IHBhdGhfcHJlZml4ICpwYXRocywKLSAJICAvKiBMb29rIGZpcnN0IGluIE1BQ0hJTkUvVkVSU0lPTiBzdWJkaXJlY3RvcnkuICAqLwotIAkgIGlmICghc2tpcF9tdWx0aV9kaXIpCi0gCSAgICB7Ci0rCSAgICAgIGlmICghKHBsLT5vc19tdWx0aWxpYiA/IHNraXBfbXVsdGlfb3NfZGlyIDogc2tpcF9tdWx0aV9kaXIpKQotKwkgICAgICAgIHsKLSsJICAgICAgICAgIGNvbnN0IGNoYXIgKnRoaXNfbXVsdGk7Ci0rCSAgICAgICAgICBzaXplX3QgdGhpc19tdWx0aV9sZW47Ci0rCi0rCSAgICAgICAgICBpZiAocGwtPm9zX211bHRpbGliKQotKwkJICAgIHsKLSsJCSAgICAgIHRoaXNfbXVsdGkgPSBtdWx0aV9vc19kaXI7Ci0rCQkgICAgICB0aGlzX211bHRpX2xlbiA9IG11bHRpX29zX2Rpcl9sZW47Ci0rCQkgICAgfQotKwkgICAgICAgICAgZWxzZQotKwkJICAgIHsKLSsJCSAgICAgIHRoaXNfbXVsdGkgPSBtdWx0aV9kaXI7Ci0rCQkgICAgICB0aGlzX211bHRpX2xlbiA9IG11bHRpX2Rpcl9sZW47Ci0rCQkgICAgfQotKwotKwkgICAgICAgICAgLyogTG9vayBpbiBtdWx0aWxpYiBNQUNISU5FL1ZFUlNJT04gc3ViZGlyZWN0b3J5IGZpcnN0ICovCi0rCSAgICAgICAgICBpZiAodGhpc19tdWx0aV9sZW4pCi0rCSAgICAgICAgICAgIHsKLSsJCSAgICAgIG1lbWNweSAocGF0aCArIGxlbiwgdGhpc19tdWx0aSwgdGhpc19tdWx0aV9sZW4gKyAxKTsKLSsJICAgICAgICAgICAgICBtZW1jcHkgKHBhdGggKyBsZW4gKyB0aGlzX211bHRpX2xlbiwgbXVsdGlfc3VmZml4LCBzdWZmaXhfbGVuICsgMSk7Ci0rCSAgICAgICAgICAgICAgcmV0ID0gY2FsbGJhY2sgKHBhdGgsIGNhbGxiYWNrX2luZm8pOwotKwkgICAgICAgICAgICAgICAgaWYgKHJldCkKLSsJCSAgICAgICAgICBicmVhazsKLSsJICAgICAgICAgICAgfQotKwkgICAgICAgIH0KLSsKLSAJICAgICAgbWVtY3B5IChwYXRoICsgbGVuLCBtdWx0aV9zdWZmaXgsIHN1ZmZpeF9sZW4gKyAxKTsKLSAJICAgICAgcmV0ID0gY2FsbGJhY2sgKHBhdGgsIGNhbGxiYWNrX2luZm8pOwotIAkgICAgICBpZiAocmV0KQotLS0gCi0yLjYuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNDItRml4LXZhcmlvdXMtX0ZPUl9CVUlMRC1hbmQtcmVsYXRlZC12YXJpYWJsZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNDItRml4LXZhcmlvdXMtX0ZPUl9CVUlMRC1hbmQtcmVsYXRlZC12YXJpYWJsZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhZjc2NGIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDQyLUZpeC12YXJpb3VzLV9GT1JfQlVJTEQtYW5kLXJlbGF0ZWQtdmFyaWFibGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTM3ICswLDAgQEAKLUZyb20gNzhlNzcyMDY5MDIzNDljOTI1NmYwNmMzZGQxNzkxOTdhMzlhZjJlMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDcgRGVjIDIwMTUgMjM6NDI6NDUgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCA0Mi80Nl0gRml4IHZhcmlvdXMgX0ZPUl9CVUlMRCBhbmQgcmVsYXRlZCB2YXJpYWJsZXMKLQotV2hlbiBkb2luZyBhIEZPUl9CVUlMRCB0aGluZywgeW91IGhhdmUgdG8gb3ZlcnJpZGUgQ0ZMQUdTIHdpdGgKLUNGTEFHU19GT1JfQlVJTEQuIEFuZCBpZiB5b3UgdXNlIEMrKywgeW91IGFsc28gaGF2ZSB0byBvdmVycmlkZQotQ1hYRkxBR1Mgd2l0aCBDWFhGTEFHU19GT1JfQlVJTEQuCi1XaXRob3V0IHRoaXMsIHdoZW4gYnVpbGRpbmcgZm9yIG1pbmd3LCB5b3UgZW5kIHVwIHRyeWluZyB0byB1c2UKLXRoZSBtaW5ndyBoZWFkZXJzIGZvciBhIGhvc3QgYnVpbGQuCi0KLVRoZSBzYW1lIGdvZXMgZm9yIG90aGVyIHZhcmlhYmxlcyBhcyB3ZWxsLCBzdWNoIGFzIENQUEZMQUdTLAotQ1BQLCBhbmQgR01QSU5DLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogUGV0ZXIgU2VlYmFjaCA8cGV0ZXIuc2VlYmFjaEB3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIE1ha2VmaWxlLmluICAgICAgfCA2ICsrKysrKwotIE1ha2VmaWxlLnRwbCAgICAgfCA1ICsrKysrCi0gZ2NjL01ha2VmaWxlLmluICB8IDIgKy0KLSBnY2MvY29uZmlndXJlICAgIHwgMiArLQotIGdjYy9jb25maWd1cmUuYWMgfCAyICstCi0gNSBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgotaW5kZXggYTc4M2UxZS4uOGI2ZDNkMiAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmluCi0rKysgYi9NYWtlZmlsZS5pbgotQEAgLTE1Miw2ICsxNTIsNyBAQCBCVUlMRF9FWFBPUlRTID0gXAotIAlDUFA9IiQoQ0NfRk9SX0JVSUxEKSAtRSI7IGV4cG9ydCBDUFA7IFwKLSAJQ0ZMQUdTPSIkKENGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENGTEFHUzsgXAotIAlDT05GSUdfU0hFTEw9IiQoU0hFTEwpIjsgZXhwb3J0IENPTkZJR19TSEVMTDsgXAotKwlDUFBGTEFHUz0iJChDUFBGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENQUEZMQUdTOyBcCi0gCUNYWD0iJChDWFhfRk9SX0JVSUxEKSI7IGV4cG9ydCBDWFg7IFwKLSAJQ1hYRkxBR1M9IiQoQ1hYRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDWFhGTEFHUzsgXAotIAlHQ0o9IiQoR0NKX0ZPUl9CVUlMRCkiOyBleHBvcnQgR0NKOyBcCi1AQCAtMTcwLDYgKzE3MSw5IEBAIEJVSUxEX0VYUE9SVFMgPSBcCi0gIyBidWlsdCBmb3IgdGhlIGJ1aWxkIHN5c3RlbSB0byBvdmVycmlkZSB0aG9zZSBpbiBCQVNFX0ZMQUdTX1RPX1BBU1MuCi0gRVhUUkFfQlVJTERfRkxBR1MgPSBcCi0gCUNGTEFHUz0iJChDRkxBR1NfRk9SX0JVSUxEKSIgXAotKwlDWFhGTEFHUz0iJChDWFhGTEFHU19GT1JfQlVJTEQpIiBcCi0rCUNQUD0iJChDQ19GT1JfQlVJTEQpIC1FIiBcCi0rCUNQUEZMQUdTPSIkKENQUEZMQUdTX0ZPUl9CVUlMRCkiIFwKLSAJTERGTEFHUz0iJChMREZMQUdTX0ZPUl9CVUlMRCkiCi0gCi0gIyBUaGlzIGlzIHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHRvIGJ1aWx0IGZvciB0aGUgaG9zdCBzeXN0ZW0uCi1AQCAtMTg3LDYgKzE5MSw3IEBAIEhPU1RfU1VCRElSID0gQGhvc3Rfc3ViZGlyQAotIEhPU1RfRVhQT1JUUyA9IFwKLSAJJChCQVNFX0VYUE9SVFMpIFwKLSAJQ0M9IiQoQ0MpIjsgZXhwb3J0IENDOyBcCi0rCUNQUD0iJChDQykgLUUiOyBleHBvcnQgQ1BQOyBcCi0gCUFEQV9DRkxBR1M9IiQoQURBX0NGTEFHUykiOyBleHBvcnQgQURBX0NGTEFHUzsgXAotIAlDRkxBR1M9IiQoQ0ZMQUdTKSI7IGV4cG9ydCBDRkxBR1M7IFwKLSAJQ09ORklHX1NIRUxMPSIkKFNIRUxMKSI7IGV4cG9ydCBDT05GSUdfU0hFTEw7IFwKLUBAIC03MTAsNiArNzE1LDcgQEAgQkFTRV9GTEFHU19UT19QQVNTID0gXAotIAkiQ0NfRk9SX0JVSUxEPSQoQ0NfRk9SX0JVSUxEKSIgXAotIAkiQ0ZMQUdTX0ZPUl9CVUlMRD0kKENGTEFHU19GT1JfQlVJTEQpIiBcCi0gCSJDWFhfRk9SX0JVSUxEPSQoQ1hYX0ZPUl9CVUlMRCkiIFwKLSsJIkNYWEZMQUdTX0ZPUl9CVUlMRD0kKENYWEZMQUdTX0ZPUl9CVUlMRCkiIFwKLSAJIkVYUEVDVD0kKEVYUEVDVCkiIFwKLSAJIkZMRVg9JChGTEVYKSIgXAotIAkiSU5TVEFMTD0kKElOU1RBTEwpIiBcCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUudHBsIGIvTWFrZWZpbGUudHBsCi1pbmRleCAxZWExOTU0Li43OGE1OWMzIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUudHBsCi0rKysgYi9NYWtlZmlsZS50cGwKLUBAIC0xNTQsNiArMTU0LDcgQEAgQlVJTERfRVhQT1JUUyA9IFwKLSAJQ0M9IiQoQ0NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDQzsgXAotIAlDRkxBR1M9IiQoQ0ZMQUdTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ0ZMQUdTOyBcCi0gCUNPTkZJR19TSEVMTD0iJChTSEVMTCkiOyBleHBvcnQgQ09ORklHX1NIRUxMOyBcCi0rCUNQUEZMQUdTPSIkKENQUEZMQUdTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ1BQRkxBR1M7IFwKLSAJQ1hYPSIkKENYWF9GT1JfQlVJTEQpIjsgZXhwb3J0IENYWDsgXAotIAlDWFhGTEFHUz0iJChDWFhGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENYWEZMQUdTOyBcCi0gCUdDSj0iJChHQ0pfRk9SX0JVSUxEKSI7IGV4cG9ydCBHQ0o7IFwKLUBAIC0xNzIsNiArMTczLDkgQEAgQlVJTERfRVhQT1JUUyA9IFwKLSAjIGJ1aWx0IGZvciB0aGUgYnVpbGQgc3lzdGVtIHRvIG92ZXJyaWRlIHRob3NlIGluIEJBU0VfRkxBR1NfVE9fUEFTUy4KLSBFWFRSQV9CVUlMRF9GTEFHUyA9IFwKLSAJQ0ZMQUdTPSIkKENGTEFHU19GT1JfQlVJTEQpIiBcCi0rCUNYWEZMQUdTPSIkKENYWEZMQUdTX0ZPUl9CVUlMRCkiIFwKLSsJQ1BQPSIkKENDX0ZPUl9CVUlMRCkgLUUiIFwKLSsJQ1BQRkxBR1M9IiQoQ1BQRkxBR1NfRk9SX0JVSUxEKSIgXAotIAlMREZMQUdTPSIkKExERkxBR1NfRk9SX0JVSUxEKSIKLSAKLSAjIFRoaXMgaXMgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdG8gYnVpbHQgZm9yIHRoZSBob3N0IHN5c3RlbS4KLUBAIC0xODksNiArMTkzLDcgQEAgSE9TVF9TVUJESVIgPSBAaG9zdF9zdWJkaXJACi0gSE9TVF9FWFBPUlRTID0gXAotIAkkKEJBU0VfRVhQT1JUUykgXAotIAlDQz0iJChDQykiOyBleHBvcnQgQ0M7IFwKLSsJQ1BQPSIkKENDKSAtRSI7IGV4cG9ydCBDUFA7IFwKLSAJQURBX0NGTEFHUz0iJChBREFfQ0ZMQUdTKSI7IGV4cG9ydCBBREFfQ0ZMQUdTOyBcCi0gCUNGTEFHUz0iJChDRkxBR1MpIjsgZXhwb3J0IENGTEFHUzsgXAotIAlDT05GSUdfU0hFTEw9IiQoU0hFTEwpIjsgZXhwb3J0IENPTkZJR19TSEVMTDsgXAotZGlmZiAtLWdpdCBhL2djYy9NYWtlZmlsZS5pbiBiL2djYy9NYWtlZmlsZS5pbgotaW5kZXggY2Q1YmM0YS4uOThhZTRmNCAxMDA2NDQKLS0tLSBhL2djYy9NYWtlZmlsZS5pbgotKysrIGIvZ2NjL01ha2VmaWxlLmluCi1AQCAtNzYyLDcgKzc2Miw3IEBAIEJVSUxEX0xJTktFUkZMQUdTID0gJChCVUlMRF9DWFhGTEFHUykKLSAjIE5hdGl2ZSBsaW5rZXIgYW5kIHByZXByb2Nlc3NvciBmbGFncy4gIEZvciB4LWZyYWdtZW50IG92ZXJyaWRlcy4KLSBCVUlMRF9MREZMQUdTPUBCVUlMRF9MREZMQUdTQAotIEJVSUxEX0NQUEZMQUdTPSAtSS4gLUkkKEBEKSAtSSQoc3JjZGlyKSAtSSQoc3JjZGlyKS8kKEBEKSBcCi0tCQktSSQoc3JjZGlyKS8uLi9pbmNsdWRlIEBJTkNJTlRMQCAkKENQUElOQykgJChDUFBGTEFHUykKLSsJCS1JJChzcmNkaXIpLy4uL2luY2x1ZGUgQElOQ0lOVExAICQoQ1BQSU5DKSAkKENQUEZMQUdTX0ZPUl9CVUlMRCkKLSAKLSAjIEFjdHVhbCBuYW1lIHRvIHVzZSB3aGVuIGluc3RhbGxpbmcgYSBuYXRpdmUgY29tcGlsZXIuCi0gR0NDX0lOU1RBTExfTkFNRSA6PSAkKHNoZWxsIGVjaG8gZ2NjfHNlZCAnJChwcm9ncmFtX3RyYW5zZm9ybV9uYW1lKScpCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKLWluZGV4IDZkZjU5NGMuLmZjYjA1ZTcgMTAwNzU1Ci0tLS0gYS9nY2MvY29uZmlndXJlCi0rKysgYi9nY2MvY29uZmlndXJlCi1AQCAtMTE1MjEsNyArMTE1MjEsNyBAQCBlbHNlCi0gCUNDPSIke0NDX0ZPUl9CVUlMRH0iIENGTEFHUz0iJHtDRkxBR1NfRk9SX0JVSUxEfSIgXAotIAlDWFg9IiR7Q1hYX0ZPUl9CVUlMRH0iIENYWEZMQUdTPSIke0NYWEZMQUdTX0ZPUl9CVUlMRH0iIFwKLSAJTEQ9IiR7TERfRk9SX0JVSUxEfSIgTERGTEFHUz0iJHtMREZMQUdTX0ZPUl9CVUlMRH0iIFwKLS0JR01QSU5DPSIiIENQUEZMQUdTPSIke0NQUEZMQUdTfSAtREdFTkVSQVRPUl9GSUxFIiBcCi0rCUdNUElOQz0iIiBDUFBGTEFHUz0iJHtDUFBGTEFHU19GT1JfQlVJTER9IC1ER0VORVJBVE9SX0ZJTEUiIFwKLSAJJHtyZWFsc3JjZGlyfS9jb25maWd1cmUgXAotIAkJLS1lbmFibGUtbGFuZ3VhZ2VzPSR7ZW5hYmxlX2xhbmd1YWdlcy1hbGx9IFwKLSAJCS0tdGFyZ2V0PSR0YXJnZXRfYWxpYXMgLS1ob3N0PSRidWlsZF9hbGlhcyAtLWJ1aWxkPSRidWlsZF9hbGlhcwotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUuYWMgYi9nY2MvY29uZmlndXJlLmFjCi1pbmRleCAzYmIyMTczLi45MjNiYzlhIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZ3VyZS5hYwotKysrIGIvZ2NjL2NvbmZpZ3VyZS5hYwotQEAgLTE2MzMsNyArMTYzMyw3IEBAIGVsc2UKLSAJQ0M9IiR7Q0NfRk9SX0JVSUxEfSIgQ0ZMQUdTPSIke0NGTEFHU19GT1JfQlVJTER9IiBcCi0gCUNYWD0iJHtDWFhfRk9SX0JVSUxEfSIgQ1hYRkxBR1M9IiR7Q1hYRkxBR1NfRk9SX0JVSUxEfSIgXAotIAlMRD0iJHtMRF9GT1JfQlVJTER9IiBMREZMQUdTPSIke0xERkxBR1NfRk9SX0JVSUxEfSIgXAotLQlHTVBJTkM9IiIgQ1BQRkxBR1M9IiR7Q1BQRkxBR1N9IC1ER0VORVJBVE9SX0ZJTEUiIFwKLSsJR01QSU5DPSIiIENQUEZMQUdTPSIke0NQUEZMQUdTX0ZPUl9CVUlMRH0gLURHRU5FUkFUT1JfRklMRSIgXAotIAkke3JlYWxzcmNkaXJ9L2NvbmZpZ3VyZSBcCi0gCQktLWVuYWJsZS1sYW5ndWFnZXM9JHtlbmFibGVfbGFuZ3VhZ2VzLWFsbH0gXAotIAkJLS10YXJnZXQ9JHRhcmdldF9hbGlhcyAtLWhvc3Q9JGJ1aWxkX2FsaWFzIC0tYnVpbGQ9JGJ1aWxkX2FsaWFzCi0tLSAKLTIuNi4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA0My1saWJzdGRjLVN1cHBvcnQtbXVzbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA0My1saWJzdGRjLVN1cHBvcnQtbXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmFkODQwMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNDMtbGlic3RkYy1TdXBwb3J0LW11c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1Gcm9tIGRmNDMwYjk0M2EyZGY2YjcyMDU0YzgwOGQ0YjkzMzM4YTgyNTYyZGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCA4IERlYyAyMDE1IDA4OjIzOjM0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggNDMvNDZdIGxpYnN0ZGMrKzogU3VwcG9ydCBtdXNsCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5ob3N0IHwgMTAgKysrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlndXJlLmhvc3QgYi9saWJzdGRjKystdjMvY29uZmlndXJlLmhvc3QKLWluZGV4IDY0MDE5OWMuLjE3NTY0NDQgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlndXJlLmhvc3QKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWd1cmUuaG9zdAotQEAgLTI3NCwxNCArMjc0LDI0IEBAIGNhc2UgIiR7aG9zdF9vc30iIGluCi0gICAgIG9zX2luY2x1ZGVfZGlyPSJvcy9ic2QvZnJlZWJzZCIKLSAgICAgOzsKLSAgIGdudSogfCBsaW51eCogfCBrZnJlZWJzZCotZ251IHwga25ldGJzZCotZ251KQotKyAgICAjIGNoZWNrIGZvciBtdXNsIGJ5IHRhcmdldAotKyAgICBjYXNlICIke2hvc3Rfb3N9IiBpbgotKyAgICAgICotbXVzbCopCi0rICAgICAgICBvc19pbmNsdWRlX2Rpcj0ib3MvZ2VuZXJpYyIKLSsgICAgICAgIDs7Ci0rICAgICAgKikKLSAgICAgaWYgWyAiJHVjbGliYyIgPSAieWVzIiBdOyB0aGVuCi0gICAgICAgb3NfaW5jbHVkZV9kaXI9Im9zL3VjbGliYyIKLSAgICAgZWxpZiBbICIkYmlvbmljIiA9ICJ5ZXMiIF07IHRoZW4KLSAgICAgICBvc19pbmNsdWRlX2Rpcj0ib3MvYmlvbmljIgotKyAgICBlbGlmIFsgIiRtdXNsIiA9ICJ5ZXMiIF07IHRoZW4KLSsgICAgICBvc19pbmNsdWRlX2Rpcj0ib3MvZ2VuZXJpYyIKLSAgICAgZWxzZQotICAgICAgIG9zX2luY2x1ZGVfZGlyPSJvcy9nbnUtbGludXgiCi0gICAgIGZpCi0gICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLSAgIGhwdXgqKQotICAgICBvc19pbmNsdWRlX2Rpcj0ib3MvaHB1eCIKLSAgICAgOzsKLS0tIAotMi42LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDQ0LUFkZGluZy1tbXVzbC1hcy1hLW11c2wtbGliYy1zcGVjaWZpZXItYW5kLXRoZS1uZWNlc3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNDQtQWRkaW5nLW1tdXNsLWFzLWEtbXVzbC1saWJjLXNwZWNpZmllci1hbmQtdGhlLW5lY2Vzcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjZhYTk2Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNDQtQWRkaW5nLW1tdXNsLWFzLWEtbXVzbC1saWJjLXNwZWNpZmllci1hbmQtdGhlLW5lY2Vzcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI3MCArMCwwIEBACi1Gcm9tIDBiNTQ3OTlkODBmYjg1OWM3YjE0MjQ2N2U0ZDQyYzk5ZGI1OWRmNTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCA4IERlYyAyMDE1IDA4OjMwOjM1ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggNDQvNDZdIEFkZGluZyAtbW11c2wgYXMgYSBtdXNsIGxpYmMgc3BlY2lmaWVyLCBhbmQgdGhlCi0gbmVjZXNzYXJ5IGhhY2tzIGZvciBpdCB0byBrbm93IGhvdyB0byBmaW5kIG11c2wncyBkeW5hbWljIGxpbmtlci4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbcGFydGlhbF0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnY2MvY29uZmlnLmdjYyAgICAgICAgICAgICAgICB8ICAxMCArKysrLQotIGdjYy9jb25maWcvbGludXguaCAgICAgICAgICAgIHwgMTAwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLQotIGdjYy9jb25maWcvbGludXgub3B0ICAgICAgICAgIHwgICA0ICsrCi0gZ2NjL2NvbmZpZy9yczYwMDAvc2VjdXJlcGx0LmggfCAgIDEgKwotIGdjYy9jb25maWcvcnM2MDAwL3N5c3Y0LmggICAgIHwgICA1ICsrKwotIGdjYy9naW5jbHVkZS9zdGRkZWYuaCAgICAgICAgIHwgICAzICsrCi0gNiBmaWxlcyBjaGFuZ2VkLCAxMTAgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBnY2MtNS40LjAvZ2NjL2NvbmZpZy5nY2MKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnY2MtNS40LjAub3JpZy9nY2MvY29uZmlnLmdjYwotKysrIGdjYy01LjQuMC9nY2MvY29uZmlnLmdjYwotQEAgLTU3NSw3ICs1NzUsNyBAQCBjYXNlICR7dGFyZ2V0fSBpbgotIGVzYWMKLSAKLSAjIENvbW1vbiBDIGxpYnJhcmllcy4KLS10bV9kZWZpbmVzPSIkdG1fZGVmaW5lcyBMSUJDX0dMSUJDPTEgTElCQ19VQ0xJQkM9MiBMSUJDX0JJT05JQz0zIgotK3RtX2RlZmluZXM9IiR0bV9kZWZpbmVzIExJQkNfR0xJQkM9MSBMSUJDX1VDTElCQz0yIExJQkNfQklPTklDPTMgTElCQ19NVVNMPTQiCi0gCi0gIyAzMi1iaXQgeDg2IHByb2Nlc3NvcnMgc3VwcG9ydGVkIGJ5IC0td2l0aC1hcmNoPS4gIEVhY2ggcHJvY2Vzc29yCi0gIyBNVVNUIGJlIHNlcGFyYXRlZCBieSBleGFjdGx5IG9uZSBzcGFjZS4KLUBAIC03MjAsNiArNzIwLDkgQEAgY2FzZSAke3RhcmdldH0gaW4KLSAgICAgKi0qLSp1Y2xpYmMqKQotICAgICAgIHRtX2RlZmluZXM9IiR0bV9kZWZpbmVzIERFRkFVTFRfTElCQz1MSUJDX1VDTElCQyIKLSAgICAgICA7OwotKyAgICAqLSotKm11c2wqKQotKyAgICAgIHRtX2RlZmluZXM9IiR0bV9kZWZpbmVzIERFRkFVTFRfTElCQz1MSUJDX01VU0wiCi0rICAgICAgOzsKLSAgICAgKikKLSAgICAgICB0bV9kZWZpbmVzPSIkdG1fZGVmaW5lcyBERUZBVUxUX0xJQkM9TElCQ19HTElCQyIKLSAgICAgICA7OwotQEAgLTI0MjAsNiArMjQyMywxMSBAQCBwb3dlcnBjKi0qLWxpbnV4KikKLSAJICAgIHBvd2VycGMqLSotbGludXgqcGFpcmVkKikKLSAJCXRtX2ZpbGU9IiR7dG1fZmlsZX0gcnM2MDAwLzc1MGNsLmgiIDs7Ci0gCWVzYWMKLSsgICAgICAgIGNhc2UgJHt0YXJnZXR9IGluCi0rCSAgICAqLWxpbnV4Ki1tdXNsKikKLSsJCWVuYWJsZV9zZWN1cmVwbHQ9eWVzIDs7Ci0rCWVzYWMKLSsKLSAJaWYgdGVzdCB4JHtlbmFibGVfc2VjdXJlcGx0fSA9IHh5ZXM7IHRoZW4KLSAJCXRtX2ZpbGU9InJzNjAwMC9zZWN1cmVwbHQuaCAke3RtX2ZpbGV9IgotIAlmaQotSW5kZXg6IGdjYy01LjQuMC9nY2MvY29uZmlnL2xpbnV4LmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnY2MtNS40LjAub3JpZy9nY2MvY29uZmlnL2xpbnV4LmgKLSsrKyBnY2MtNS40LjAvZ2NjL2NvbmZpZy9saW51eC5oCi1AQCAtMzIsMTAgKzMyLDEyIEBAIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVEkKLSAjZGVmaW5lIE9QVElPTl9HTElCQyAgKERFRkFVTFRfTElCQyA9PSBMSUJDX0dMSUJDKQotICNkZWZpbmUgT1BUSU9OX1VDTElCQyAoREVGQVVMVF9MSUJDID09IExJQkNfVUNMSUJDKQotICNkZWZpbmUgT1BUSU9OX0JJT05JQyAoREVGQVVMVF9MSUJDID09IExJQkNfQklPTklDKQotKyNkZWZpbmUgT1BUSU9OX01VU0wgICAoREVGQVVMVF9MSUJDID09IExJQkNfTVVTTCkKLSAjZWxzZQotICNkZWZpbmUgT1BUSU9OX0dMSUJDICAobGludXhfbGliYyA9PSBMSUJDX0dMSUJDKQotICNkZWZpbmUgT1BUSU9OX1VDTElCQyAobGludXhfbGliYyA9PSBMSUJDX1VDTElCQykKLSAjZGVmaW5lIE9QVElPTl9CSU9OSUMgKGxpbnV4X2xpYmMgPT0gTElCQ19CSU9OSUMpCi0rI2RlZmluZSBPUFRJT05fTVVTTCAgIChsaW51eF9saWJjID09IExJQkNfTVVTTCkKLSAjZW5kaWYKLSAKLSAjZGVmaW5lIEdOVV9VU0VSX1RBUkdFVF9PU19DUFBfQlVJTFRJTlMoKQkJCVwKLUBAIC01MywxOCArNTUsMjEgQEAgc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USQotICAgIHVDbGliYyBvciBCaW9uaWMgaXMgdGhlIGRlZmF1bHQgQyBsaWJyYXJ5IGFuZCB3aGV0aGVyCi0gICAgLW11Y2xpYmMgb3IgLW1nbGliYyBvciAtbWJpb25pYyBoYXMgYmVlbiBwYXNzZWQgdG8gY2hhbmdlIHRoZSBkZWZhdWx0LiAgKi8KLSAKLS0jZGVmaW5lIENIT09TRV9EWU5BTUlDX0xJTktFUjEoTElCQzEsIExJQkMyLCBMSUJDMywgTEQxLCBMRDIsIExEMykJXAotLSAgIiV7IiBMSUJDMiAiOiIgTEQyICI7OiV7IiBMSUJDMyAiOiIgTEQzICI7OiIgTEQxICJ9fSIKLSsjZGVmaW5lIENIT09TRV9EWU5BTUlDX0xJTktFUjEoTElCQzEsIExJQkMyLCBMSUJDMywgTElCQzQsIExEMSwgTEQyLCBMRDMsIExENCkJXAotKyAgIiV7IiBMSUJDMiAiOiIgTEQyICI7OiV7IiBMSUJDMyAiOiIgTEQzICI7OiV7IiBMSUJDNCAiOiIgTEQ0ICI7OiIgTEQxICJ9fX0iCi0gCi0gI2lmIERFRkFVTFRfTElCQyA9PSBMSUJDX0dMSUJDCi0tI2RlZmluZSBDSE9PU0VfRFlOQU1JQ19MSU5LRVIoRywgVSwgQikgXAotLSAgQ0hPT1NFX0RZTkFNSUNfTElOS0VSMSAoIm1nbGliYyIsICJtdWNsaWJjIiwgIm1iaW9uaWMiLCBHLCBVLCBCKQotKyNkZWZpbmUgQ0hPT1NFX0RZTkFNSUNfTElOS0VSKEcsIFUsIEIsIE0pIFwKLSsgIENIT09TRV9EWU5BTUlDX0xJTktFUjEgKCJtZ2xpYmMiLCAibXVjbGliYyIsICJtYmlvbmljIiwgIm1tdXNsIiwgRywgVSwgQiwgTSkKLSAjZWxpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19VQ0xJQkMKLS0jZGVmaW5lIENIT09TRV9EWU5BTUlDX0xJTktFUihHLCBVLCBCKSBcCi0tICBDSE9PU0VfRFlOQU1JQ19MSU5LRVIxICgibXVjbGliYyIsICJtZ2xpYmMiLCAibWJpb25pYyIsIFUsIEcsIEIpCi0rI2RlZmluZSBDSE9PU0VfRFlOQU1JQ19MSU5LRVIoRywgVSwgQiwgTSkgXAotKyAgQ0hPT1NFX0RZTkFNSUNfTElOS0VSMSAoIm11Y2xpYmMiLCAibWdsaWJjIiwgIm1iaW9uaWMiLCAibW11c2wiLCBVLCBHLCBCLCBNKQotICNlbGlmIERFRkFVTFRfTElCQyA9PSBMSUJDX0JJT05JQwotLSNkZWZpbmUgQ0hPT1NFX0RZTkFNSUNfTElOS0VSKEcsIFUsIEIpIFwKLS0gIENIT09TRV9EWU5BTUlDX0xJTktFUjEgKCJtYmlvbmljIiwgIm1nbGliYyIsICJtdWNsaWJjIiwgQiwgRywgVSkKLSsjZGVmaW5lIENIT09TRV9EWU5BTUlDX0xJTktFUihHLCBVLCBCLCBNKSBcCi0rICBDSE9PU0VfRFlOQU1JQ19MSU5LRVIxICgibWJpb25pYyIsICJtZ2xpYmMiLCAibXVjbGliYyIsICJtbXVzbCIsIEIsIEcsIFUsIE0pCi0rI2VsaWYgREVGQVVMVF9MSUJDID09IExJQkNfTVVTTAotKyNkZWZpbmUgQ0hPT1NFX0RZTkFNSUNfTElOS0VSKEcsIFUsIEIsIE0pIFwKLSsgIENIT09TRV9EWU5BTUlDX0xJTktFUjEgKCJtbXVzbCIsICJtZ2xpYmMiLCAibXVjbGliYyIsICJtYmlvbmljIiwgTSwgRywgVSwgQikKLSAjZWxzZQotICNlcnJvciAiVW5zdXBwb3J0ZWQgREVGQVVMVF9MSUJDIgotICNlbmRpZiAvKiBERUZBVUxUX0xJQkMgKi8KLUBAIC04NCwxNiArODksMTYgQEAgc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USQotIAotICNkZWZpbmUgR05VX1VTRVJfRFlOQU1JQ19MSU5LRVIJCQkJCQlcCi0gICBDSE9PU0VfRFlOQU1JQ19MSU5LRVIgKEdMSUJDX0RZTkFNSUNfTElOS0VSLCBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIsCVwKLS0JCQkgQklPTklDX0RZTkFNSUNfTElOS0VSKQotKwkJCSBCSU9OSUNfRFlOQU1JQ19MSU5LRVIsIE1VU0xfRFlOQU1JQ19MSU5LRVIpCi0gI2RlZmluZSBHTlVfVVNFUl9EWU5BTUlDX0xJTktFUjMyCQkJCQlcCi0gICBDSE9PU0VfRFlOQU1JQ19MSU5LRVIgKEdMSUJDX0RZTkFNSUNfTElOS0VSMzIsIFVDTElCQ19EWU5BTUlDX0xJTktFUjMyLCBcCi0tCQkJIEJJT05JQ19EWU5BTUlDX0xJTktFUjMyKQotKwkJCSBCSU9OSUNfRFlOQU1JQ19MSU5LRVIzMiwgTVVTTF9EWU5BTUlDX0xJTktFUjMyKQotICNkZWZpbmUgR05VX1VTRVJfRFlOQU1JQ19MSU5LRVI2NAkJCQkJXAotICAgQ0hPT1NFX0RZTkFNSUNfTElOS0VSIChHTElCQ19EWU5BTUlDX0xJTktFUjY0LCBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NCwgXAotLQkJCSBCSU9OSUNfRFlOQU1JQ19MSU5LRVI2NCkKLSsJCQkgQklPTklDX0RZTkFNSUNfTElOS0VSNjQsIE1VU0xfRFlOQU1JQ19MSU5LRVI2NCkKLSAjZGVmaW5lIEdOVV9VU0VSX0RZTkFNSUNfTElOS0VSWDMyCQkJCQlcCi0gICBDSE9PU0VfRFlOQU1JQ19MSU5LRVIgKEdMSUJDX0RZTkFNSUNfTElOS0VSWDMyLCBVQ0xJQkNfRFlOQU1JQ19MSU5LRVJYMzIsIFwKLS0JCQkgQklPTklDX0RZTkFNSUNfTElOS0VSWDMyKQotKwkJCSBCSU9OSUNfRFlOQU1JQ19MSU5LRVJYMzIsIE1VU0xfRFlOQU1JQ19MSU5LRVJYMzIpCi0gCi0gLyogV2hldGhlciB3ZSBoYXZlIEJpb25pYyBsaWJjIHJ1bnRpbWUgKi8KLSAjdW5kZWYgVEFSR0VUX0hBU19CSU9OSUMKLUBAIC0xMjMsMyArMTI4LDc0IEBAIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVEkKLSAjIGRlZmluZSBUQVJHRVRfTElCQ19IQVNfRlVOQ1RJT04gbGludXhfbGliY19oYXNfZnVuY3Rpb24KLSAKLSAjZW5kaWYKLSsKLSsvKiBtdXNsIGF2b2lkcyBwcm9ibGVtYXRpYyBpbmNsdWRlcyBieSByZWFycmFuZ2luZyB0aGUgaW5jbHVkZSBkaXJlY3Rvcmllcy4KLSsgKiBVbmZvcnR1bmF0ZWx5LCB0aGlzIGlzIG1vc3RseSBkdXBsaWNhdGVkIGZyb20gY3BwZGVmYXVsdC5jICovCi0rI2lmIERFRkFVTFRfTElCQyA9PSBMSUJDX01VU0wKLSsjZGVmaW5lIElOQ0xVREVfREVGQVVMVFNfTVVTTF9HUFAJCQlcCi0rICAgIHsgR1BMVVNQTFVTX0lOQ0xVREVfRElSLCAiRysrIiwgMSwgMSwJCVwKLSsgICAgICBHUExVU1BMVVNfSU5DTFVERV9ESVJfQUREX1NZU1JPT1QsIDAgfSwJCVwKLSsgICAgeyBHUExVU1BMVVNfVE9PTF9JTkNMVURFX0RJUiwgIkcrKyIsIDEsIDEsCQlcCi0rICAgICAgR1BMVVNQTFVTX0lOQ0xVREVfRElSX0FERF9TWVNST09ULCAxIH0sCQlcCi0rICAgIHsgR1BMVVNQTFVTX0JBQ0tXQVJEX0lOQ0xVREVfRElSLCAiRysrIiwgMSwgMSwJXAotKyAgICAgIEdQTFVTUExVU19JTkNMVURFX0RJUl9BRERfU1lTUk9PVCwgMCB9LAotKwotKyNpZmRlZiBMT0NBTF9JTkNMVURFX0RJUgotKyNkZWZpbmUgSU5DTFVERV9ERUZBVUxUU19NVVNMX0xPQ0FMCQkJXAotKyAgICB7IExPQ0FMX0lOQ0xVREVfRElSLCAwLCAwLCAxLCAxLCAyIH0sCQlcCi0rICAgIHsgTE9DQUxfSU5DTFVERV9ESVIsIDAsIDAsIDEsIDEsIDAgfSwKLSsjZWxzZQotKyNkZWZpbmUgSU5DTFVERV9ERUZBVUxUU19NVVNMX0xPQ0FMCi0rI2VuZGlmCi0rCi0rI2lmZGVmIFBSRUZJWF9JTkNMVURFX0RJUgotKyNkZWZpbmUgSU5DTFVERV9ERUZBVUxUU19NVVNMX1BSRUZJWAkJCVwKLSsgICAgeyBQUkVGSVhfSU5DTFVERV9ESVIsIDAsIDAsIDEsIDAsIDB9LAotKyNlbHNlCi0rI2RlZmluZSBJTkNMVURFX0RFRkFVTFRTX01VU0xfUFJFRklYCi0rI2VuZGlmCi0rCi0rI2lmZGVmIENST1NTX0lOQ0xVREVfRElSCi0rI2RlZmluZSBJTkNMVURFX0RFRkFVTFRTX01VU0xfQ1JPU1MJCQlcCi0rICAgIHsgQ1JPU1NfSU5DTFVERV9ESVIsICJHQ0MiLCAwLCAwLCAwLCAwfSwKLSsjZWxzZQotKyNkZWZpbmUgSU5DTFVERV9ERUZBVUxUU19NVVNMX0NST1NTCi0rI2VuZGlmCi0rCi0rI2lmZGVmIFRPT0xfSU5DTFVERV9ESVIKLSsjZGVmaW5lIElOQ0xVREVfREVGQVVMVFNfTVVTTF9UT09MCQkJXAotKyAgICB7IFRPT0xfSU5DTFVERV9ESVIsICJCSU5VVElMUyIsIDAsIDEsIDAsIDB9LAotKyNlbHNlCi0rI2RlZmluZSBJTkNMVURFX0RFRkFVTFRTX01VU0xfVE9PTAotKyNlbmRpZgotKwotKyNpZmRlZiBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVIKLSsjZGVmaW5lIElOQ0xVREVfREVGQVVMVFNfTVVTTF9OQVRJVkUJCQlcCi0rICAgIHsgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSLCAwLCAwLCAwLCAxLCAyIH0sCVwKLSsgICAgeyBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVIsIDAsIDAsIDAsIDEsIDAgfSwKLSsjZWxzZQotKyNkZWZpbmUgSU5DTFVERV9ERUZBVUxUU19NVVNMX05BVElWRQotKyNlbmRpZgotKwotKyNpZiBkZWZpbmVkIChDUk9TU19ESVJFQ1RPUllfU1RSVUNUVVJFKSAmJiAhZGVmaW5lZCAoVEFSR0VUX1NZU1RFTV9ST09UKQotKyMgdW5kZWYgSU5DTFVERV9ERUZBVUxUU19NVVNMX0xPQ0FMCi0rIyBkZWZpbmUgSU5DTFVERV9ERUZBVUxUU19NVVNMX0xPQ0FMCi0rIyB1bmRlZiBJTkNMVURFX0RFRkFVTFRTX01VU0xfTkFUSVZFCi0rIyBkZWZpbmUgSU5DTFVERV9ERUZBVUxUU19NVVNMX05BVElWRQotKyNlbHNlCi0rIyB1bmRlZiBJTkNMVURFX0RFRkFVTFRTX01VU0xfQ1JPU1MKLSsjIGRlZmluZSBJTkNMVURFX0RFRkFVTFRTX01VU0xfQ1JPU1MKLSsjZW5kaWYKLSsKLSsjdW5kZWYgSU5DTFVERV9ERUZBVUxUUwotKyNkZWZpbmUgSU5DTFVERV9ERUZBVUxUUwkJCQlcCi0rICB7CQkJCQkJCVwKLSsgICAgSU5DTFVERV9ERUZBVUxUU19NVVNMX0dQUAkJCQlcCi0rICAgIElOQ0xVREVfREVGQVVMVFNfTVVTTF9QUkVGSVgJCQlcCi0rICAgIElOQ0xVREVfREVGQVVMVFNfTVVTTF9DUk9TUwkJCQlcCi0rICAgIElOQ0xVREVfREVGQVVMVFNfTVVTTF9UT09MCQkJCVwKLSsgICAgSU5DTFVERV9ERUZBVUxUU19NVVNMX05BVElWRQkJCVwKLSsgICAgeyBHQ0NfSU5DTFVERV9ESVIsICJHQ0MiLCAwLCAxLCAwLCAwIH0sCQlcCi0rICAgIHsgMCwgMCwgMCwgMCwgMCwgMCB9CQkJCVwKLSsgIH0KLSsjZW5kaWYKLUluZGV4OiBnY2MtNS40LjAvZ2NjL2NvbmZpZy9saW51eC5vcHQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnY2MtNS40LjAub3JpZy9nY2MvY29uZmlnL2xpbnV4Lm9wdAotKysrIGdjYy01LjQuMC9nY2MvY29uZmlnL2xpbnV4Lm9wdAotQEAgLTI4LDUgKzI4LDkgQEAgVGFyZ2V0IFJlcG9ydCBSZWplY3ROZWdhdGl2ZSBWYXIobGludXhfbAotIFVzZSBHTlUgQyBsaWJyYXJ5Ci0gCi0gbXVjbGliYwotLVRhcmdldCBSZXBvcnQgUmVqZWN0TmVnYXRpdmUgVmFyKGxpbnV4X2xpYmMsTElCQ19VQ0xJQkMpIE5lZ2F0aXZlKG1iaW9uaWMpCi0rVGFyZ2V0IFJlcG9ydCBSZWplY3ROZWdhdGl2ZSBWYXIobGludXhfbGliYyxMSUJDX1VDTElCQykgTmVnYXRpdmUobW11c2wpCi0gVXNlIHVDbGliYyBDIGxpYnJhcnkKLSsKLSttbXVzbAotK1RhcmdldCBSZXBvcnQgUmVqZWN0TmVnYXRpdmUgVmFyKGxpbnV4X2xpYmMsTElCQ19NVVNMKSBOZWdhdGl2ZShtYmlvbmljKQotK1VzZSBtdXNsIEMgbGlicmFyeQotSW5kZXg6IGdjYy01LjQuMC9nY2MvY29uZmlnL3JzNjAwMC9zZWN1cmVwbHQuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdjYy01LjQuMC5vcmlnL2djYy9jb25maWcvcnM2MDAwL3NlY3VyZXBsdC5oCi0rKysgZ2NjLTUuNC4wL2djYy9jb25maWcvcnM2MDAwL3NlY3VyZXBsdC5oCi1AQCAtMTgsMyArMTgsNCBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLgotIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0gCi0gI2RlZmluZSBDQzFfU0VDVVJFX1BMVF9ERUZBVUxUX1NQRUMgIi1tc2VjdXJlLXBsdCIKLSsjZGVmaW5lIExJTktfU0VDVVJFX1BMVF9ERUZBVUxUX1NQRUMgIi0tc2VjdXJlLXBsdCIKLUluZGV4OiBnY2MtNS40LjAvZ2NjL2NvbmZpZy9yczYwMDAvc3lzdjQuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdjYy01LjQuMC5vcmlnL2djYy9jb25maWcvcnM2MDAwL3N5c3Y0LmgKLSsrKyBnY2MtNS40LjAvZ2NjL2NvbmZpZy9yczYwMDAvc3lzdjQuaAotQEAgLTUzOCw2ICs1MzgsMTAgQEAgRU5ESUFOX1NFTEVDVCgiIC1tYmlnIiwgIiAtbWxpdHRsZSIsIERFRgotICNkZWZpbmUgQ0MxX1NFQ1VSRV9QTFRfREVGQVVMVF9TUEVDICIiCi0gI2VuZGlmCi0gCi0rI2lmbmRlZiBMSU5LX1NFQ1VSRV9QTFRfREVGQVVMVF9TUEVDCi0rI2RlZmluZSBMSU5LX1NFQ1VSRV9QTFRfREVGQVVMVF9TUEVDICIiCi0rI2VuZGlmCi0rCi0gLyogUGFzcyAtRyB4eHggdG8gdGhlIGNvbXBpbGVyLiAgKi8KLSAjdW5kZWYgQ0MxX1NQRUMKLSAjZGVmaW5lCUNDMV9TUEVDICIle0cqfSAlKGNjMV9jcHUpIiBcCi1AQCAtODg5LDYgKzg5Myw3IEBAIG5jcnRuLm8lcyIKLSAgIHsgImxpbmtfb3Nfb3BlbmJzZCIsCQlMSU5LX09TX09QRU5CU0RfU1BFQyB9LAkJCVwKLSAgIHsgImxpbmtfb3NfZGVmYXVsdCIsCQlMSU5LX09TX0RFRkFVTFRfU1BFQyB9LAkJCVwKLSAgIHsgImNjMV9zZWN1cmVfcGx0X2RlZmF1bHQiLAlDQzFfU0VDVVJFX1BMVF9ERUZBVUxUX1NQRUMgfSwJCVwKLSsgIHsgImxpbmtfc2VjdXJlX3BsdF9kZWZhdWx0IiwJTElOS19TRUNVUkVfUExUX0RFRkFVTFRfU1BFQyB9LAkJXAotICAgeyAiY3BwX29zX2FkcyIsCQlDUFBfT1NfQURTX1NQRUMgfSwJCQlcCi0gICB7ICJjcHBfb3NfeWVsbG93a25pZmUiLAlDUFBfT1NfWUVMTE9XS05JRkVfU1BFQyB9LAkJXAotICAgeyAiY3BwX29zX212bWUiLAkJQ1BQX09TX01WTUVfU1BFQyB9LAkJCVwKLUluZGV4OiBnY2MtNS40LjAvZ2NjL2dpbmNsdWRlL3N0ZGRlZi5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2NjLTUuNC4wLm9yaWcvZ2NjL2dpbmNsdWRlL3N0ZGRlZi5oCi0rKysgZ2NjLTUuNC4wL2djYy9naW5jbHVkZS9zdGRkZWYuaAotQEAgLTE4NCw2ICsxODQsNyBAQCB0eXBlZGVmIF9fUFRSRElGRl9UWVBFX18gcHRyZGlmZl90OwotICNpZm5kZWYgX0dDQ19TSVpFX1QKLSAjaWZuZGVmIF9TSVpFVF8KLSAjaWZuZGVmIF9fc2l6ZV90Ci0rI2lmbmRlZiBfX0RFRklORURfc2l6ZV90IC8qIG11c2wgKi8KLSAjZGVmaW5lIF9fc2l6ZV90X18JLyogQmVPUyAqLwotICNkZWZpbmUgX19TSVpFX1RfXwkvKiBDcmF5IFVuaWNvcy9NayAqLwotICNkZWZpbmUgX1NJWkVfVAotQEAgLTIwMCw2ICsyMDEsNyBAQCB0eXBlZGVmIF9fUFRSRElGRl9UWVBFX18gcHRyZGlmZl90OwotICNkZWZpbmUgX19faW50X3NpemVfdF9oCi0gI2RlZmluZSBfR0NDX1NJWkVfVAotICNkZWZpbmUgX1NJWkVUXwotKyNkZWZpbmUgX19ERUZJTkVEX3NpemVfdCAvKiBtdXNsICovCi0gI2lmIChkZWZpbmVkIChfX0ZyZWVCU0RfXykgJiYgKF9fRnJlZUJTRF9fID49IDUpKSBcCi0gICB8fCBkZWZpbmVkKF9fRHJhZ29uRmx5X18pIFwKLSAgIHx8IGRlZmluZWQoX19GcmVlQlNEX2tlcm5lbF9fKQotQEAgLTIxOCw2ICsyMjAsNyBAQCB0eXBlZGVmIF9fU0laRV9UWVBFX18gc2l6ZV90OwotIHR5cGVkZWYgbG9uZyBzc2l6ZV90OwotICNlbmRpZiAvKiBfX0JFT1NfXyAqLwotICNlbmRpZiAvKiAhKGRlZmluZWQgKF9fR05VR19fKSAmJiBkZWZpbmVkIChzaXplX3QpKSAqLwotKyNlbmRpZiAvKiBfX0RFRklORURfc2l6ZV90ICovCi0gI2VuZGlmIC8qIF9fc2l6ZV90ICovCi0gI2VuZGlmIC8qIF9TSVpFVF8gKi8KLSAjZW5kaWYgLyogX0dDQ19TSVpFX1QgKi8KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA0NS1TdXBwb3J0LWZvci1hcm0tbGludXgtbXVzbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA0NS1TdXBwb3J0LWZvci1hcm0tbGludXgtbXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2MxMTE1YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNDUtU3VwcG9ydC1mb3ItYXJtLWxpbnV4LW11c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMTYgKzAsMCBAQAotRnJvbSBhNmM2NDk1NzFkNDljOTcyZTZkMjA3NTc3NzgwYWRhN2U5YjZiYWQ1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgOCBEZWMgMjAxNSAwODozMTo1MiArMDAwMAotU3ViamVjdDogW1BBVENIIDQ1LzU3XSBTdXBwb3J0IGZvciBhcm0tbGludXgtbXVzbC4KLQotRml4IG11c2wgbGRzbyBmb3IgYWxsIGFyY2hlcwotCi1VcHN0cmVhbS1TdGF0dXM6IGJhY2twb3J0IFtwYXJ0aWFsXQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGdjYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmggfCAgMSArCi0gZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oICAgICAgICB8IDE3ICsrKysrKysrKysrKysrKysrCi0gZ2NjL2NvbmZpZy9pMzg2L2xpbnV4LmggICAgICAgICAgICB8ICAxICsKLSBnY2MvY29uZmlnL2kzODYvbGludXg2NC5oICAgICAgICAgIHwgIDUgKysrKysKLSBnY2MvY29uZmlnL21pcHMvbGludXguaCAgICAgICAgICAgIHwgIDggKysrKysrKy0KLSBnY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmggICAgICAgIHwgMTMgKysrKysrKysrLS0tLQotIGdjYy9jb25maWcvcnM2MDAwL3N5c3Y0LmggICAgICAgICAgfCAxMCArKysrKysrLS0tCi0gbGliaXRtL2NvbmZpZy9hcm0vaHdjYXAuY2MgICAgICAgICB8ICA0ICsrKysKLSBsaWJpdG0vY29uZmlnL2xpbnV4L3g4Ni90bHMuaCAgICAgIHwgIDggKysrKysrLS0KLSA5IGZpbGVzIGNoYW5nZWQsIDU3IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaCBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmgKLWluZGV4IGY5ZTY1ZmMuLjFiMmQwYzAgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oCi0rKysgYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oCi1AQCAtMjIsNiArMjIsNyBAQAotICNkZWZpbmUgR0NDX0FBUkNINjRfTElOVVhfSAotIAotICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1hYXJjaDY0JXttYmlnLWVuZGlhbjpfYmV9JXttYWJpPWlscDMyOl9pbHAzMn0uc28uMSIKLSsjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgIFNZU1RFTUxJQlNfRElSICJsZC1tdXNsLWFhcmNoNjQuc28uMSIKLSAKLSAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgIFNZU1RFTUxJQlNfRElSICJsZC1tdXNsLWFhcmNoNjQuc28uMSIKLSAKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmggYi9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKLWluZGV4IDA0OGEwNjIuLmFkYjljNDQgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKLSsrKyBiL2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaAotQEAgLTgxLDYgKzgxLDIzIEBACi0gI3VuZGVmIFRBUkdFVF9GSVhfVjRCWF9TUEVDCi0gI2RlZmluZSBUQVJHRVRfRklYX1Y0QlhfU1BFQyAiJXttY3B1PWFybTh8bWNwdT1hcm04MTB8bWNwdT1zdHJvbmdhcm0qfG1hcmNoPWFybXY0OiAtLWZpeC12NGJ4fSIKLSAKLSsvKiBGb3IgQVJNIG11c2wgY3VycmVudGx5IHN1cHBvcnRzIGZvdXIgZHluYW1pYyBsaW5rZXJzOgotKyAgIC0gbGQtbXVzbC1hcm0uc28uMSAtIGZvciB0aGUgRUFCSS1kZXJpdmVkIHNvZnQtZmxvYXQgQUJJCi0rICAgLSBsZC1tdXNsLWFybWhmLnNvLjEgLSBmb3IgdGhlIEVBQkktZGVyaXZlZCBoYXJkLWZsb2F0IEFCSQotKyAgIC0gbGQtbXVzbC1hcm1lYi5zby4xIC0gZm9yIHRoZSBFQUJJLWRlcml2ZWQgc29mdC1mbG9hdCBBQkksIEVCCi0rICAgLSBsZC1tdXNsLWFybWViaGYuc28uMSAtIGZvciB0aGUgRUFCSS1kZXJpdmVkIGhhcmQtZmxvYXQgQUJJLCBFQgotKyAgIG11c2wgZG9lcyBub3Qgc3VwcG9ydCB0aGUgbGVnYWN5IE9BQkkgbW9kZS4KLSsgICBBbGwgdGhlIGR5bmFtaWMgbGlua2VycyBsaXZlIGluIC9saWIuCi0rICAgV2UgZGVmYXVsdCB0byBzb2Z0LWZsb2F0LCBFTC4gKi8KLSsjdW5kZWYgIE1VU0xfRFlOQU1JQ19MSU5LRVIKLSsjaWYgVEFSR0VUX0JJR19FTkRJQU5fREVGQVVMVAotKyNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUl9FICIle21saXR0bGUtZW5kaWFuOjs6ZWJ9IgotKyNlbHNlCi0rI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSX0UgIiV7bWJpZy1lbmRpYW46ZWJ9IgotKyNlbmRpZgotKyNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUiBcCi0rICBTWVNURU1MSUJTX0RJUiAibGQtbXVzbC1hcm0iIE1VU0xfRFlOQU1JQ19MSU5LRVJfRSAiJXttZmxvYXQtYWJpPWhhcmQ6aGZ9LnNvLjEiCi0rCi0gLyogQXQgdGhpcyBwb2ludCwgYnBhYmkuaCB3aWxsIGhhdmUgY2xvYmJlcmVkIExJTktfU1BFQy4gIFdlIHdhbnQgdG8KLSAgICB1c2UgdGhlIEdOVS9MaW51eCB2ZXJzaW9uLCBub3QgdGhlIGdlbmVyaWMgQlBBQkkgdmVyc2lvbi4gICovCi0gI3VuZGVmICBMSU5LX1NQRUMKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvbGludXguaCBiL2djYy9jb25maWcvaTM4Ni9saW51eC5oCi1pbmRleCAyMWJhMmIyLi5lMmI4MWU1IDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4LmgKLSsrKyBiL2djYy9jb25maWcvaTM4Ni9saW51eC5oCi1AQCAtMjEsMyArMjEsNCBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQotIAotICNkZWZpbmUgR05VX1VTRVJfTElOS19FTVVMQVRJT04gImVsZl9pMzg2IgotICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCi0rI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSIFNZU1RFTUxJQlNfRElSICJsZC1tdXNsLWkzODYuc28uMSIKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvbGludXg2NC5oIGIvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4NjQuaAotaW5kZXggNjE4NWNjZS4uNWEzYTk3NyAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni9saW51eDY0LmgKLSsrKyBiL2djYy9jb25maWcvaTM4Ni9saW51eDY0LmgKLUBAIC0zMCwzICszMCw4IEBAIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZQotICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKLSAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LXg4Ni02NC5zby4yIgotICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJYMzIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LXgzMi5zby4yIgotKwotKyNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUjMyIFNZU1RFTUxJQlNfRElSICJsZC1tdXNsLWkzODYuc28uMSIKLSsjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVI2NCBTWVNURU1MSUJTX0RJUiAibGQtbXVzbC14ODZfNjQuc28uMSIKLSsjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVJYMzIgU1lTVEVNTElCU19ESVIgImxkLW11c2wteDMyLnNvLjEiCi0rCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9taXBzL2xpbnV4LmggYi9nY2MvY29uZmlnL21pcHMvbGludXguaAotaW5kZXggYzMwNmFmYi4uYjg5OTM4OCAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvbWlwcy9saW51eC5oCi0rKysgYi9nY2MvY29uZmlnL21pcHMvbGludXguaAotQEAgLTIxLDYgKzIxLDEyIEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCi0gI2RlZmluZSBHTlVfVVNFUl9MSU5LX0VNVUxBVElPTjY0ICJlbGY2NCV7RUI6Yn0le0VMOmx9dHNtaXAiCi0gI2RlZmluZSBHTlVfVVNFUl9MSU5LX0VNVUxBVElPTk4zMiAiZWxmMzIle0VCOmJ9JXtFTDpsfXRzbWlwbjMyIgotIAotKyN1bmRlZiBNVVNMX0RZTkFNSUNfTElOS0VSMzIKLSsjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQtbXVzbC1taXBzJXtFTDplbH0le21zb2Z0LWZsb2F0Oi1zZn0uc28uMSIKLSsjdW5kZWYgTVVTTF9EWU5BTUlDX0xJTktFUjY0Ci0rI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSNjQgU1lTVEVNTElCU19ESVIgImxkLW11c2wtbWlwczY0JXtFTDplbH0le21zb2Z0LWZsb2F0Oi1zZn0uc28uMSIKLSsjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVJOMzIgU1lTVEVNTElCU19ESVIgImxkLW11c2wtbWlwc24zMiV7RUw6ZWx9JXttc29mdC1mbG9hdDotc2Z9LnNvLjEiCi0rCi0gI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjMyIFwKLSAgICIle21uYW49MjAwODoiIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1taXBzbjguc28uMTs6IiBTWVNURU1MSUJTX0RJUiAibGQuc28uMX0iCi0gI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0IFwKLUBAIC00MCw0ICs0Niw0IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCi0gI2RlZmluZSBCSU9OSUNfRFlOQU1JQ19MSU5LRVJOMzIgIi9zeXN0ZW0vYmluL2xpbmtlcjMyIgotICNkZWZpbmUgR05VX1VTRVJfRFlOQU1JQ19MSU5LRVJOMzIgXAotICAgQ0hPT1NFX0RZTkFNSUNfTElOS0VSIChHTElCQ19EWU5BTUlDX0xJTktFUk4zMiwgVUNMSUJDX0RZTkFNSUNfTElOS0VSTjMyLCBcCi0tICAgICAgICAgICAgICAgICAgICAgICAgIEJJT05JQ19EWU5BTUlDX0xJTktFUk4zMikKLSsgICAgICAgICAgICAgICAgICAgICAgICAgQklPTklDX0RZTkFNSUNfTElOS0VSTjMyLCAgTVVTTF9EWU5BTUlDX0xJTktFUk4zMikKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmggYi9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgKLWluZGV4IDMxYzQzMzguLjY3OWRhNGIgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgKLSsrKyBiL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaAotQEAgLTM2NSwxNyArMzY1LDIyIEBAIGV4dGVybiBpbnQgZG90X3N5bWJvbHM7Ci0gI2VuZGlmCi0gI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjAiCi0gI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBTWVNURU1MSUJTX0RJUiAibGQ2NC11Q2xpYmMuc28uMCIKLSsjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQtbXVzbC1wb3dlcnBjLnNvLjEiCi0rI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSNjQgU1lTVEVNTElCU19ESVIgImxkLW11c2wtcG93ZXJwYzY0LnNvLjEiCi0rCi0gI2lmIERFRkFVTFRfTElCQyA9PSBMSUJDX1VDTElCQwotLSNkZWZpbmUgQ0hPT1NFX0RZTkFNSUNfTElOS0VSKEcsIFUpICIle21nbGliYzoiIEcgIjs6IiBVICJ9IgotKyNkZWZpbmUgQ0hPT1NFX0RZTkFNSUNfTElOS0VSKEcsIFUsIE0pICIle21nbGliYzoiIEcgIjs6JXttbXVzbDoiIE0gIjs6IiBVICJ9fSIKLSAjZWxpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19HTElCQwotLSNkZWZpbmUgQ0hPT1NFX0RZTkFNSUNfTElOS0VSKEcsIFUpICIle211Y2xpYmM6IiBVICI7OiIgRyAifSIKLSsjZGVmaW5lIENIT09TRV9EWU5BTUlDX0xJTktFUihHLCBVLCBNKSAiJXttdWNsaWJjOiIgVSAiOzole21tdXNsOiIgTSAiOzoiIEcgIn19IgotKyNlbGlmIERFRkFVTFRfTElCQyA9PSBMSUJDX01VU0wKLSsjZGVmaW5lIENIT09TRV9EWU5BTUlDX0xJTktFUihHLCBVLCBNKSAiJXttZ2xpYmM6IiBHICI7OiV7bXVjbGliYzoiIFUgIjs6IiBNICJ9fSIKLSAjZWxzZQotICNlcnJvciAiVW5zdXBwb3J0ZWQgREVGQVVMVF9MSUJDIgotICNlbmRpZgotICNkZWZpbmUgR05VX1VTRVJfRFlOQU1JQ19MSU5LRVIzMiBcCi0tICBDSE9PU0VfRFlOQU1JQ19MSU5LRVIgKEdMSUJDX0RZTkFNSUNfTElOS0VSMzIsIFVDTElCQ19EWU5BTUlDX0xJTktFUjMyKQotKyAgQ0hPT1NFX0RZTkFNSUNfTElOS0VSIChHTElCQ19EWU5BTUlDX0xJTktFUjMyLCBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMiwgTVVTTF9EWU5BTUlDX0xJTktFUjMyKQotICNkZWZpbmUgR05VX1VTRVJfRFlOQU1JQ19MSU5LRVI2NCBcCi0tICBDSE9PU0VfRFlOQU1JQ19MSU5LRVIgKEdMSUJDX0RZTkFNSUNfTElOS0VSNjQsIFVDTElCQ19EWU5BTUlDX0xJTktFUjY0KQotKyAgQ0hPT1NFX0RZTkFNSUNfTElOS0VSIChHTElCQ19EWU5BTUlDX0xJTktFUjY0LCBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NCwgTVVTTF9EWU5BTUlDX0xJTktFUjY0KQotIAotICN1bmRlZiAgREVGQVVMVF9BU01fRU5ESUFOCi0gI2lmIChUQVJHRVRfREVGQVVMVCAmIE1BU0tfTElUVExFX0VORElBTikKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3JzNjAwMC9zeXN2NC5oIGIvZ2NjL2NvbmZpZy9yczYwMDAvc3lzdjQuaAotaW5kZXggN2NkMDdlMC4uODc5NGZhNSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvcnM2MDAwL3N5c3Y0LmgKLSsrKyBiL2djYy9jb25maWcvcnM2MDAwL3N5c3Y0LmgKLUBAIC03NjMsMTUgKzc2MywxOSBAQCBFTkRJQU5fU0VMRUNUKCIgLW1iaWciLCAiIC1tbGl0dGxlIiwgREVGQVVMVF9BU01fRU5ESUFOKQotIAotICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQuc28uMSIKLSAjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC11Q2xpYmMuc28uMCIKLSsjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbXVzbC1wb3dlcnBjLnNvLjEiCi0rCi0gI2lmIERFRkFVTFRfTElCQyA9PSBMSUJDX1VDTElCQwotLSNkZWZpbmUgQ0hPT1NFX0RZTkFNSUNfTElOS0VSKEcsIFUpICIle21nbGliYzoiIEcgIjs6IiBVICJ9IgotKyNkZWZpbmUgQ0hPT1NFX0RZTkFNSUNfTElOS0VSKEcsIFUsIE0pICIle21nbGliYzoiIEcgIjs6JXttbXVzbDoiIE0gIjs6IiBVICJ9fSIKLSsjZWxpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19NVVNMCi0rI2RlZmluZSBDSE9PU0VfRFlOQU1JQ19MSU5LRVIoRywgVSwgTSkgIiV7bWdsaWJjOiIgRyAiOzole211Y2xpYmM6IiBVICI7OiIgTSAifX0iCi0gI2VsaWYgIWRlZmluZWQgKERFRkFVTFRfTElCQykgfHwgREVGQVVMVF9MSUJDID09IExJQkNfR0xJQkMKLS0jZGVmaW5lIENIT09TRV9EWU5BTUlDX0xJTktFUihHLCBVKSAiJXttdWNsaWJjOiIgVSAiOzoiIEcgIn0iCi0rI2RlZmluZSBDSE9PU0VfRFlOQU1JQ19MSU5LRVIoRywgVSwgTSkgIiV7bXVjbGliYzoiIFUgIjs6JXttbXVzbDoiIE0gIjs6IiBHICJ9fSIKLSAjZWxzZQotICNlcnJvciAiVW5zdXBwb3J0ZWQgREVGQVVMVF9MSUJDIgotICNlbmRpZgotICNkZWZpbmUgR05VX1VTRVJfRFlOQU1JQ19MSU5LRVIgXAotLSAgQ0hPT1NFX0RZTkFNSUNfTElOS0VSIChHTElCQ19EWU5BTUlDX0xJTktFUiwgVUNMSUJDX0RZTkFNSUNfTElOS0VSKQotKyAgQ0hPT1NFX0RZTkFNSUNfTElOS0VSIChHTElCQ19EWU5BTUlDX0xJTktFUiwgVUNMSUJDX0RZTkFNSUNfTElOS0VSLCBNVVNMX0RZTkFNSUNfTElOS0VSKQotIAotICNkZWZpbmUgTElOS19PU19MSU5VWF9TUEVDICItbSBlbGYzMnBwY2xpbnV4ICV7IXNoYXJlZDogJXshc3RhdGljOiBcCi0gICAle3JkeW5hbWljOi1leHBvcnQtZHluYW1pY30gXAotZGlmZiAtLWdpdCBhL2xpYml0bS9jb25maWcvYXJtL2h3Y2FwLmNjIGIvbGliaXRtL2NvbmZpZy9hcm0vaHdjYXAuY2MKLWluZGV4IGExYzJjZmQuLmRkNGZhZDIgMTAwNjQ0Ci0tLS0gYS9saWJpdG0vY29uZmlnL2FybS9od2NhcC5jYwotKysrIGIvbGliaXRtL2NvbmZpZy9hcm0vaHdjYXAuY2MKLUBAIC00MCw3ICs0MCwxMSBAQCBpbnQgR1RNX2h3Y2FwIEhJRERFTiA9IDAKLSAKLSAjaWZkZWYgX19saW51eF9fCi0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotKyNpZmRlZiBfX0dMSUJDX18KLSAjaW5jbHVkZSA8c3lzL2ZjbnRsLmg+Ci0rI2Vsc2UKLSsjaW5jbHVkZSA8ZmNudGwuaD4KLSsjZW5kaWYKLSAjaW5jbHVkZSA8ZWxmLmg+Ci0gCi0gc3RhdGljIHZvaWQgX19hdHRyaWJ1dGVfXygoY29uc3RydWN0b3IpKQotZGlmZiAtLWdpdCBhL2xpYml0bS9jb25maWcvbGludXgveDg2L3Rscy5oIGIvbGliaXRtL2NvbmZpZy9saW51eC94ODYvdGxzLmgKLWluZGV4IGU3MzFhYjcuLjU0YWQ4YjYgMTAwNjQ0Ci0tLS0gYS9saWJpdG0vY29uZmlnL2xpbnV4L3g4Ni90bHMuaAotKysrIGIvbGliaXRtL2NvbmZpZy9saW51eC94ODYvdGxzLmgKLUBAIC0yNSwxNiArMjUsMTkgQEAKLSAjaWZuZGVmIExJQklUTV9YODZfVExTX0gKLSAjZGVmaW5lIExJQklUTV9YODZfVExTX0ggMQotIAotLSNpZiBkZWZpbmVkKF9fR0xJQkNfUFJFUkVRKSAmJiBfX0dMSUJDX1BSRVJFUSgyLCAxMCkKLSsjaWYgZGVmaW5lZChfX0dMSUJDX1BSRVJFUSkKLSsjaWYgX19HTElCQ19QUkVSRVEoMiwgMTApCi0gLyogVXNlIHNsb3RzIGluIHRoZSBUQ0IgaGVhZCByYXRoZXIgdGhhbiBfX3RocmVhZCBsb29rdXBzLgotICAgIEdMSUJDIGhhcyByZXNlcnZlZCB3b3JkcyAxMCB0aHJvdWdoIDEzIGZvciBUTS4gICovCi0gI2RlZmluZSBIQVZFX0FSQ0hfR1RNX1RIUkVBRCAxCi0gI2RlZmluZSBIQVZFX0FSQ0hfR1RNX1RIUkVBRF9ESVNQIDEKLSAjZW5kaWYKLSsjZW5kaWYKLSAKLSAjaW5jbHVkZSAiY29uZmlnL2dlbmVyaWMvdGxzLmgiCi0gCi0tI2lmIGRlZmluZWQoX19HTElCQ19QUkVSRVEpICYmIF9fR0xJQkNfUFJFUkVRKDIsIDEwKQotKyNpZiBkZWZpbmVkKF9fR0xJQkNfUFJFUkVRKQotKyNpZiBfX0dMSUJDX1BSRVJFUSgyLCAxMCkKLSBuYW1lc3BhY2UgR1RNIEhJRERFTiB7Ci0gCi0gI2lmZGVmIF9feDg2XzY0X18KLUBAIC0xMDEsNSArMTA0LDYgQEAgc3RhdGljIGlubGluZSB2b2lkIHNldF9hYmlfZGlzcChzdHJ1Y3QgYWJpX2Rpc3BhdGNoICp4KQotIAotIH0gLy8gbmFtZXNwYWNlIEdUTQotICNlbmRpZiAvKiA+PSBHTElCQyAyLjEwICovCi0rI2VuZGlmCi0gCi0gI2VuZGlmIC8vIExJQklUTV9YODZfVExTX0gKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDQ2LUdldC1yaWQtb2YtZXZlci1icm9rZW4tZml4aW5jbHVkZXMtb24tbXVzbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA0Ni1HZXQtcmlkLW9mLWV2ZXItYnJva2VuLWZpeGluY2x1ZGVzLW9uLW11c2wucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkYjBmYzQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDQ2LUdldC1yaWQtb2YtZXZlci1icm9rZW4tZml4aW5jbHVkZXMtb24tbXVzbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUZyb20gMDQ3MTE2ZThjOWNiYjM0MDI2NGY0ZjI4ZGIzZjIxYTY4YmE1N2ZmMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDggRGVjIDIwMTUgMDg6MzI6MjQgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCA0Ni80Nl0gR2V0IHJpZCBvZiBldmVyLWJyb2tlbiBmaXhpbmNsdWRlcyBvbiBtdXNsLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBmaXhpbmNsdWRlcy9ta2ZpeGluYy5zaCB8IDMgKystCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZml4aW5jbHVkZXMvbWtmaXhpbmMuc2ggYi9maXhpbmNsdWRlcy9ta2ZpeGluYy5zaAotaW5kZXggNjY1M2ZlZGIuLjBkOTZjOGMgMTAwNzU1Ci0tLS0gYS9maXhpbmNsdWRlcy9ta2ZpeGluYy5zaAotKysrIGIvZml4aW5jbHVkZXMvbWtmaXhpbmMuc2gKLUBAIC0xOSw3ICsxOSw4IEBAIGNhc2UgJG1hY2hpbmUgaW4KLSAgICAgcG93ZXJwYy0qLWVhYmkqICAgIHwgXAotICAgICBwb3dlcnBjLSotcnRlbXMqICAgfCBcCi0gICAgIHBvd2VycGNsZS0qLWVhYmlzaW0qIHwgXAotLSAgICBwb3dlcnBjbGUtKi1lYWJpKiApCi0rICAgIHBvd2VycGNsZS0qLWVhYmkqIHwgXAotKyAgICAqLW11c2wqICkKLSAJIyAgSUYgdGhlcmUgaXMgbm8gaW5jbHVkZSBmaXhpbmcsCi0gCSMgIFRIRU4gY3JlYXRlIGEgbm8tb3AgZml4ZXIgYW5kIGV4aXQKLSAJKGVjaG8gIiMhIC9iaW4vc2giIDsgZWNobyAiZXhpdCAwIiApID4gJHt0YXJnZXR9Ci0tLSAKLTIuNi4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA0Ny1uaW9zMi1EZWZpbmUtTVVTTF9EWU5BTUlDX0xJTktFUi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA0Ny1uaW9zMi1EZWZpbmUtTVVTTF9EWU5BTUlDX0xJTktFUi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTFjZmI5Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNDctbmlvczItRGVmaW5lLU1VU0xfRFlOQU1JQ19MSU5LRVIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Gcm9tIGY1Y2EwNzEzMmI5MjkyZDIwNDVjYTcyMDRlOWNiZmRlMmU1OWQwYmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCAyIEZlYiAyMDE2IDEwOjI2OjEwIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggNDcvNDhdIG5pb3MyOiBEZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUgotCi1TaWduZWQtb2ZmLWJ5OiBNYXJlayBWYXN1dCA8bWFyZXhAZGVueC5kZT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0gZ2NjL2NvbmZpZy9uaW9zMi9saW51eC5oIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL25pb3MyL2xpbnV4LmggYi9nY2MvY29uZmlnL25pb3MyL2xpbnV4LmgKLWluZGV4IGY0M2Y2NTUuLjU1ODdhYjMgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL25pb3MyL2xpbnV4LmgKLSsrKyBiL2djYy9jb25maWcvbmlvczIvbGludXguaAotQEAgLTMwLDYgKzMwLDcgQEAKLSAjZGVmaW5lIENQUF9TUEVDICIle3Bvc2l4Oi1EX1BPU0lYX1NPVVJDRX0gJXtwdGhyZWFkOi1EX1JFRU5UUkFOVH0iCi0gCi0gI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC1uaW9zMi5zby4xIgotKyNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUiAgIi9saWIvbGQtbXVzbC1uaW9zMi5zby4xIgotIAotICN1bmRlZiBMSU5LX1NQRUMKLSAjZGVmaW5lIExJTktfU1BFQyBMSU5LX1NQRUNfRU5ESUFOIFwKLS0tIAotMi43LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDQ4LXNzcF9ub25zaGFyZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNDgtc3NwX25vbnNoYXJlZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWRkZDQwYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNDgtc3NwX25vbnNoYXJlZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLUZyb20gM2NiNjAxM2NmMjg3ZWQ5YjEyNDdlYTM3NTQxZTY0Yjk4MTBhMTIxZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFN6YWJvbGNzIE5hZ3kgPG5zekBwb3J0NzAubmV0PgotRGF0ZTogU2F0LCA3IE5vdiAyMDE1IDE0OjU4OjQwICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggNDgvNDhdIHNzcF9ub25zaGFyZWQKLQotLS0tCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBnY2MvZ2NjLmMgfCAzICsrLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYwotaW5kZXggOGY1M2FlYS4uM2RkYzY1OCAxMDA2NDQKLS0tLSBhL2djYy9nY2MuYwotKysrIGIvZ2NjL2djYy5jCi1AQCAtNzMyLDcgKzczMiw4IEBAIHByb3BlciBwb3NpdGlvbiBhbW9uZyB0aGUgb3RoZXIgb3V0cHV0IGZpbGVzLiAgKi8KLSAjaWZuZGVmIExJTktfU1NQX1NQRUMKLSAjaWZkZWYgVEFSR0VUX0xJQkNfUFJPVklERVNfU1NQCi0gI2RlZmluZSBMSU5LX1NTUF9TUEVDICIle2ZzdGFjay1wcm90ZWN0b3J8ZnN0YWNrLXByb3RlY3Rvci1hbGwiIFwKLS0JCSAgICAgICAifGZzdGFjay1wcm90ZWN0b3Itc3Ryb25nfGZzdGFjay1wcm90ZWN0b3ItZXhwbGljaXQ6fSIKLSsJCSAgICAgICAifGZzdGFjay1wcm90ZWN0b3Itc3Ryb25nfGZzdGFjay1wcm90ZWN0b3ItZXhwbGljaXQiIFwKLSsJCSAgICAgICAiOi1sc3NwX25vbnNoYXJlZH0iCi0gI2Vsc2UKLSAjZGVmaW5lIExJTktfU1NQX1NQRUMgIiV7ZnN0YWNrLXByb3RlY3Rvcnxmc3RhY2stcHJvdGVjdG9yLWFsbCIgXAotIAkJICAgICAgICJ8ZnN0YWNrLXByb3RlY3Rvci1zdHJvbmd8ZnN0YWNrLXByb3RlY3Rvci1leHBsaWNpdCIgXAotLS0gCi0yLjcuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNDktRGlzYWJsZS10aGUtd2Vhay1yZWZlcmVuY2UtbG9naWMtaW4tZ3Roci5oLWZvci1vcy1nZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA0OS1EaXNhYmxlLXRoZS13ZWFrLXJlZmVyZW5jZS1sb2dpYy1pbi1ndGhyLmgtZm9yLW9zLWdlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZWE1MTQzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA0OS1EaXNhYmxlLXRoZS13ZWFrLXJlZmVyZW5jZS1sb2dpYy1pbi1ndGhyLmgtZm9yLW9zLWdlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotRnJvbSA1NTNkOGUzYjkwNzNmZjNlMGE5ZDJmYWM5YjE4MjNmYjE3YWQyNDdjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMiBGZWIgMjAxNiAyMTowMDoxOCAtMDgwMAotU3ViamVjdDogW1BBVENIIDQ5LzUxXSBEaXNhYmxlIHRoZSB3ZWFrIHJlZmVyZW5jZSBsb2dpYyBpbiBndGhyLmggZm9yCi0gb3MvZ2VuZXJpYwotCi1JdCBkb2VzIG5vdCB3b3JrIHVubGVzcyB3b3JrIGFyb3VuZHMgYXJlIHRoZXJlIGluIGd0aHItcG9zaXguaAotCi1vcmlnaW4gb2YgcGF0Y2gKLWh0dHA6Ly9wb3J0NzAubmV0L35uc3ovbXVzbC9nY2MtNS4zLjAvMDAwNC1ndGhyLnBhdGNoCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0gbGliZ2ZvcnRyYW4vYWNpbmNsdWRlLm00ICAgICAgICAgICAgICAgICAgICB8IDIgKy0KLSBsaWJnZm9ydHJhbi9jb25maWd1cmUgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQotIGxpYnN0ZGMrKy12My9jb25maWcvb3MvZ2VuZXJpYy9vc19kZWZpbmVzLmggfCA1ICsrKysrCi0gbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5ob3N0ICAgICAgICAgICAgICAgICB8IDMgKysrCi0gNCBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliZ2ZvcnRyYW4vYWNpbmNsdWRlLm00IGIvbGliZ2ZvcnRyYW4vYWNpbmNsdWRlLm00Ci1pbmRleCBiYTg5MGY5Li4zMGI4YjFhNiAxMDA2NDQKLS0tLSBhL2xpYmdmb3J0cmFuL2FjaW5jbHVkZS5tNAotKysrIGIvbGliZ2ZvcnRyYW4vYWNpbmNsdWRlLm00Ci1AQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgZm9vICh2b2lkKTsKLSAJICAgICAgW0RlZmluZSB0byAxIGlmIHRoZSB0YXJnZXQgc3VwcG9ydHMgI3ByYWdtYSB3ZWFrXSkKLSAgIGZpCi0gICBjYXNlICIkaG9zdCIgaW4KLS0gICAgKi0qLWRhcndpbiogfCAqLSotaHB1eCogfCAqLSotY3lnd2luKiB8ICotKi1taW5ndyogKQotKyAgICAqLSotZGFyd2luKiB8ICotKi1ocHV4KiB8ICotKi1jeWd3aW4qIHwgKi0qLW1pbmd3KiB8ICotKi1tdXNsKiApCi0gICAgICAgQUNfREVGSU5FKEdUSFJFQURfVVNFX1dFQUssIDAsCi0gCQlbRGVmaW5lIHRvIDAgaWYgdGhlIHRhcmdldCBzaG91bGRuJ3QgdXNlICNwcmFnbWEgd2Vha10pCi0gICAgICAgOzsKLWRpZmYgLS1naXQgYS9saWJnZm9ydHJhbi9jb25maWd1cmUgYi9saWJnZm9ydHJhbi9jb25maWd1cmUKLWluZGV4IDVkNDdlNjUuLmNkZjk2OTUgMTAwNzU1Ci0tLS0gYS9saWJnZm9ydHJhbi9jb25maWd1cmUKLSsrKyBiL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZQotQEAgLTI2NDU2LDcgKzI2NDU2LDcgQEAgJGFzX2VjaG8gIiNkZWZpbmUgU1VQUE9SVFNfV0VBSyAxIiA+PmNvbmZkZWZzLmgKLSAKLSAgIGZpCi0gICBjYXNlICIkaG9zdCIgaW4KLS0gICAgKi0qLWRhcndpbiogfCAqLSotaHB1eCogfCAqLSotY3lnd2luKiB8ICotKi1taW5ndyogKQotKyAgICAqLSotZGFyd2luKiB8ICotKi1ocHV4KiB8ICotKi1jeWd3aW4qIHwgKi0qLW1pbmd3KiB8ICotKi1tdXNsKiApCi0gCi0gJGFzX2VjaG8gIiNkZWZpbmUgR1RIUkVBRF9VU0VfV0VBSyAwIiA+PmNvbmZkZWZzLmgKLSAKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL29zL2dlbmVyaWMvb3NfZGVmaW5lcy5oIGIvbGlic3RkYysrLXYzL2NvbmZpZy9vcy9nZW5lcmljL29zX2RlZmluZXMuaAotaW5kZXggNDViZjUyYS4uMTAzZWMwZSAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvb3MvZ2VuZXJpYy9vc19kZWZpbmVzLmgKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvb3MvZ2VuZXJpYy9vc19kZWZpbmVzLmgKLUBAIC0zMyw0ICszMyw5IEBACi0gLy8gU3lzdGVtLXNwZWNpZmljICNkZWZpbmUsIHR5cGVkZWZzLCBjb3JyZWN0aW9ucywgZXRjLCBnbyBoZXJlLiAgVGhpcwotIC8vIGZpbGUgd2lsbCBjb21lIGJlZm9yZSBhbGwgb3RoZXJzLgotIAotKy8vIERpc2FibGUgdGhlIHdlYWsgcmVmZXJlbmNlIGxvZ2ljIGluIGd0aHIuaCBmb3Igb3MvZ2VuZXJpYyBiZWNhdXNlIGl0Ci0rLy8gaXMgYnJva2VuIG9uIGV2ZXJ5IHBsYXRmb3JtIHVubGVzcyB0aGVyZSBpcyBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYwotKy8vIHdvcmthcm91bmQgaW4gZ3Roci1wb3NpeC5oIGFuZCBhdCBsaW5rLXRpbWUgZm9yIHN0YXRpYyBsaW5raW5nLgotKyNkZWZpbmUgX0dMSUJDWFhfR1RIUkVBRF9VU0VfV0VBSyAwCi0rCi0gI2VuZGlmCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5ob3N0IGIvbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5ob3N0Ci1pbmRleCAxNzU2NDQ0Li4yYTg3YmI4IDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5ob3N0Ci0rKysgYi9saWJzdGRjKystdjMvY29uZmlndXJlLmhvc3QKLUBAIC0yNzMsNiArMjczLDkgQEAgY2FzZSAiJHtob3N0X29zfSIgaW4KLSAgIGZyZWVic2QqKQotICAgICBvc19pbmNsdWRlX2Rpcj0ib3MvYnNkL2ZyZWVic2QiCi0gICAgIDs7Ci0rICBsaW51eC1tdXNsKikKLSsgICAgb3NfaW5jbHVkZV9kaXI9Im9zL2dlbmVyaWMiCi0rICAgIDs7Ci0gICBnbnUqIHwgbGludXgqIHwga2ZyZWVic2QqLWdudSB8IGtuZXRic2QqLWdudSkKLSAgICAgIyBjaGVjayBmb3IgbXVzbCBieSB0YXJnZXQKLSAgICAgY2FzZSAiJHtob3N0X29zfSIgaW4KLS0tIAotMi43LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDUwLXBvd2VycGMtcGFzcy1zZWN1cmUtcGx0LXRvLXRoZS1saW5rZXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNTAtcG93ZXJwYy1wYXNzLXNlY3VyZS1wbHQtdG8tdGhlLWxpbmtlci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjJmMmJiZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNTAtcG93ZXJwYy1wYXNzLXNlY3VyZS1wbHQtdG8tdGhlLWxpbmtlci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLUZyb20gNGZhMGNmMDM2NzhmODQ5OTE3ZGNjM2QxNDk5ODliN2ZlY2RiZTI3NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDIgRmViIDIwMTYgMjE6MTA6MDAgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCA1MC81MV0gcG93ZXJwYyBwYXNzIC0tc2VjdXJlLXBsdCB0byB0aGUgbGlua2VyCi0KLVNlY3VyZS1wbHQgd2hlbiBlbmFibGVkIGRvZXMgbm90IHBhc3MgcmlnaHQgb3B0aW9ucyB0byBsaW5rZXIKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0gZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oIHwgNCArKysrCi0gZ2NjL2NvbmZpZy9yczYwMDAvc3lzdjQuaCAgIHwgMiArKwotIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmggYi9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgKLWluZGV4IDY3OWRhNGIuLjNjYTdjZDcgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgKLSsrKyBiL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaAotQEAgLTE3NCwyMCArMTc0LDI0IEBAIGV4dGVybiBpbnQgZG90X3N5bWJvbHM7Ci0gI3VuZGVmCUFTTV9ERUZBVUxUX1NQRUMKLSAjdW5kZWYJQVNNX1NQRUMKLSAjdW5kZWYJTElOS19PU19MSU5VWF9TUEVDCi0rI3VuZGVmCUxJTktfU0VDVVJFX1BMVF9TUEVDCi0gCi0gI2lmbmRlZglSUzYwMDBfQklfQVJDSAotICNkZWZpbmUJQVNNX0RFRkFVTFRfU1BFQyAiLW1wcGM2NCIKLSAjZGVmaW5lCUFTTV9TUEVDCSAiJShhc21fc3BlYzY0KSAlKGFzbV9zcGVjX2NvbW1vbikiCi0gI2RlZmluZQlMSU5LX09TX0xJTlVYX1NQRUMgIiUobGlua19vc19saW51eF9zcGVjNjQpIgotKyNkZWZpbmUJTElOS19TRUNVUkVfUExUX1NQRUMgIiIKLSAjZWxzZQotICNpZiBERUZBVUxUX0FSQ0g2NF9QCi0gI2RlZmluZQlBU01fREVGQVVMVF9TUEVDICItbXBwYyV7IW0zMjo2NH0iCi0gI2RlZmluZQlBU01fU1BFQwkgIiV7bTMyOiUoYXNtX3NwZWMzMil9JXshbTMyOiUoYXNtX3NwZWM2NCl9ICUoYXNtX3NwZWNfY29tbW9uKSIKLSAjZGVmaW5lCUxJTktfT1NfTElOVVhfU1BFQyAiJXttMzI6JShsaW5rX29zX2xpbnV4X3NwZWMzMil9JXshbTMyOiUobGlua19vc19saW51eF9zcGVjNjQpfSIKLSsjZGVmaW5lCUxJTktfU0VDVVJFX1BMVF9TUEVDICIle20zMjogIiBMSU5LX1NFQ1VSRV9QTFRfREVGQVVMVF9TUEVDICJ9IgotICNlbHNlCi0gI2RlZmluZQlBU01fREVGQVVMVF9TUEVDICItbXBwYyV7bTY0OjY0fSIKLSAjZGVmaW5lCUFTTV9TUEVDCSAiJXshbTY0OiUoYXNtX3NwZWMzMil9JXttNjQ6JShhc21fc3BlYzY0KX0gJShhc21fc3BlY19jb21tb24pIgotICNkZWZpbmUJTElOS19PU19MSU5VWF9TUEVDICIleyFtNjQ6JShsaW5rX29zX2xpbnV4X3NwZWMzMil9JXttNjQ6JShsaW5rX29zX2xpbnV4X3NwZWM2NCl9IgotKyNkZWZpbmUJTElOS19TRUNVUkVfUExUX1NQRUMgIiV7IW02NDogIiBMSU5LX1NFQ1VSRV9QTFRfREVGQVVMVF9TUEVDICJ9IgotICNlbmRpZgotICNlbmRpZgotIAotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcnM2MDAwL3N5c3Y0LmggYi9nY2MvY29uZmlnL3JzNjAwMC9zeXN2NC5oCi1pbmRleCA4Nzk0ZmE1Li4wODM1NTUxIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9yczYwMDAvc3lzdjQuaAotKysrIGIvZ2NjL2NvbmZpZy9yczYwMDAvc3lzdjQuaAotQEAgLTU3MSw2ICs1NzEsNyBAQCBFTkRJQU5fU0VMRUNUKCIgLW1iaWciLCAiIC1tbGl0dGxlIiwgREVGQVVMVF9BU01fRU5ESUFOKQotICAgICAgICAgICAgICAgIDogJShsaW5rX3N0YXJ0X2RlZmF1bHQpICAgICB9IgotIAotICNkZWZpbmUgTElOS19TVEFSVF9ERUZBVUxUX1NQRUMgIiIKLSsjZGVmaW5lIExJTktfU0VDVVJFX1BMVF9TUEVDIExJTktfU0VDVVJFX1BMVF9ERUZBVUxUX1NQRUMKLSAKLSAjdW5kZWYJTElOS19TUEVDCi0gI2RlZmluZQlMSU5LX1NQRUMgIlwKLUBAIC01NzgsNiArNTc5LDcgQEAgRU5ESUFOX1NFTEVDVCgiIC1tYmlnIiwgIiAtbWxpdHRsZSIsIERFRkFVTFRfQVNNX0VORElBTikKLSAle1IqfSBcCi0gJShsaW5rX3NobGliKSBcCi0gJXshVCo6ICUobGlua19zdGFydCkgfSBcCi0rJXshc3RhdGljOiAleyFtYnNzLXBsdDogJShsaW5rX3NlY3VyZV9wbHRfZGVmYXVsdCl9fSBcCi0gJShsaW5rX29zKSIKLSAKLSAvKiBTaGFyZWQgbGlicmFyaWVzIGFyZSBub3QgZGVmYXVsdC4gICovCi0tLSAKLTIuNy4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA1MS1JZ25vcmUtZmRlYnVnLXByZWZpeC1tYXAtaW4tcHJvZHVjZXItc3RyaW5nLWJ5LURhbmllLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDUxLUlnbm9yZS1mZGVidWctcHJlZml4LW1hcC1pbi1wcm9kdWNlci1zdHJpbmctYnktRGFuaWUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4Zjc5YjUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDUxLUlnbm9yZS1mZGVidWctcHJlZml4LW1hcC1pbi1wcm9kdWNlci1zdHJpbmctYnktRGFuaWUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1Gcm9tIDMyNTkzYjM4MDgyZWE2NWY0YzgyMTU5MjU0YWRmMWUwZGMyNDIzYmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBiZXJuZHMgPGJlcm5kc0AxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQ+Ci1EYXRlOiBUdWUsIDE2IEZlYiAyMDE2IDAzOjE1OjE1IC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIElnbm9yZSAtZmRlYnVnLXByZWZpeC1tYXAgaW4gcHJvZHVjZXIgc3RyaW5nIChieSBEYW5pZWwgS2FobgotIEdpbGxtb3IpCi0KLSogZHdhcmYyb3V0LmMgKGdlbl9wcm9kdWNlcl9zdHJpbmcpOiBJZ25vcmUgLWZkZWJ1Zy1wcmVmaXgtbWFwLgotCi1naXQtc3ZuLWlkOiBzdm4rc3NoOi8vZ2NjLmdudS5vcmcvc3ZuL2djYy90cnVua0AyMzE4MzUgMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIGdjYy9kd2FyZjJvdXQuYyB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2R3YXJmMm91dC5jIGIvZ2NjL2R3YXJmMm91dC5jCi1pbmRleCAzNjE0YzEwLi41MjZmMTE0IDEwMDY0NAotLS0tIGEvZ2NjL2R3YXJmMm91dC5jCi0rKysgYi9nY2MvZHdhcmYyb3V0LmMKLUBAIC0xOTY3MCw2ICsxOTY3MCw3IEBAIGdlbl9wcm9kdWNlcl9zdHJpbmcgKHZvaWQpCi0gICAgICAgY2FzZSBPUFRfZnByZXByb2Nlc3NlZDoKLSAgICAgICBjYXNlIE9QVF9mbHRyYW5zX291dHB1dF9saXN0XzoKLSAgICAgICBjYXNlIE9QVF9mcmVzb2x1dGlvbl86Ci0rICAgICAgY2FzZSBPUFRfZmRlYnVnX3ByZWZpeF9tYXBfOgotIAkvKiBJZ25vcmUgdGhlc2UuICAqLwotIAljb250aW51ZTsKLSAgICAgICBkZWZhdWx0OgotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNTItbmlvczItdXNlLXJldC13aXRoLXIzMS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA1Mi1uaW9zMi11c2UtcmV0LXdpdGgtcjMxLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmM2NiNDdmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA1Mi1uaW9zMi11c2UtcmV0LXdpdGgtcjMxLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTAzICswLDAgQEAKLUZyb20gMWQ2NzEyMGQ5NWMyYzZlMGVkNGY3MzU3ZDFjYzYyODg3ZWFiYTQ2MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IHNhbmRyYSA8c2FuZHJhQDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhND4KLURhdGU6IFR1ZSwgMTIgTWF5IDIwMTUgMTU6NTc6MjIgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gMjAxNS0wNS0xMiAgQ2h1bmctTGluIFRhbmcgIDxjbHRhbmdAY29kZXNvdXJjZXJ5LmNvbT4KLSBTYW5kcmEgTG9vc2Vtb3JlIDxzYW5kcmFAY29kZXNvdXJjZXJ5LmNvbT4KLQotCWdjYy8KLQkqIGNvbmZpZy9uaW9zMi9uaW9zMi5oIChlbnVtIHJlZ19jbGFzcyk6IEFkZCBJSk1QX1JFR1MgZW51bQotCXZhbHVlLgotCShSRUdfQ0xBU1NfTkFNRVMpOiBBZGQgIklKTVBfUkVHUyIuCi0JKFJFR19DTEFTU19DT05URU5UUyk6IEFkZCBuZXcgZW50cnkgZm9yIElKTVBfUkVHUy4KLQkqIGNvbmZpZy9uaW9zMi9uaW9zMi5tZCAoaW5kaXJlY3RfanVtcCwqdGFibGVqdW1wKTogQWRqdXN0IHRvCi0JdXNlIG5ldyAiYyIgcmVnaXN0ZXIgY29uc3RyYWludC4KLQkqIGNvbmZpZy9uaW9zMi9jb25zdHJhaW50Lm1kIChjKTogTmV3IHJlZ2lzdGVyIGNvbnN0cmFpbnQKLQljb3JyZXNwb25kaW5nIHRvIElKTVBfUkVHUy4KLQotCi0KLWdpdC1zdm4taWQ6IHN2bitzc2g6Ly9nY2MuZ251Lm9yZy9zdm4vZ2NjL3RydW5rQDIyMzA4MiAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQKLVNpZ25lZC1vZmYtYnk6IE1hcmVrIFZhc3V0IDxtYXJleEBkZW54LmRlPgotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbIGdpdDovL2djYy5nbnUub3JnL2dpdC9nY2MuZ2l0IDFkNjcxMjBkOTVjMmM2ZTBlZDRmNzM1N2QxY2M2Mjg4N2VhYmE0NjMgXQotLS0tCi0gZ2NjL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICB8IDEyICsrKysrKysrKysrKwotIGdjYy9jb25maWcvbmlvczIvY29uc3RyYWludHMubWQgfCAgMyArKysKLSBnY2MvY29uZmlnL25pb3MyL25pb3MyLmggICAgICAgIHwgMTEgKysrKysrKy0tLS0KLSBnY2MvY29uZmlnL25pb3MyL25pb3MyLm1kICAgICAgIHwgIDQgKystLQotIDQgZmlsZXMgY2hhbmdlZCwgMjQgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbmlvczIvY29uc3RyYWludHMubWQgYi9nY2MvY29uZmlnL25pb3MyL2NvbnN0cmFpbnRzLm1kCi1pbmRleCBmNGJkOWY3Li43MzVmODkyIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9uaW9zMi9jb25zdHJhaW50cy5tZAotKysrIGIvZ2NjL2NvbmZpZy9uaW9zMi9jb25zdHJhaW50cy5tZAotQEAgLTM5LDYgKzM5LDkgQEAKLSAKLSA7OyBSZWdpc3RlciBjb25zdHJhaW50cwotIAotKyhkZWZpbmVfcmVnaXN0ZXJfY29uc3RyYWludCAiYyIgIklKTVBfUkVHUyIKLSsgICJBIHJlZ2lzdGVyIHN1aXRhYmxlIGZvciBhbiBpbmRpcmVjdCBqdW1wLiIpCi0rCi0gKGRlZmluZV9yZWdpc3Rlcl9jb25zdHJhaW50ICJqIiAiU0lCX1JFR1MiCi0gICAiQSByZWdpc3RlciBzdWl0YWJsZSBmb3IgYW4gaW5kaXJlY3Qgc2liY2FsbC4iKQotIAotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbmlvczIvbmlvczIuaCBiL2djYy9jb25maWcvbmlvczIvbmlvczIuaAotaW5kZXggNTEwYWI1Zi4uYWMzMzk3OCAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvbmlvczIvbmlvczIuaAotKysrIGIvZ2NjL2NvbmZpZy9uaW9zMi9uaW9zMi5oCi1AQCAtMTczLDYgKzE3Myw3IEBAIGVudW0gcmVnX2NsYXNzCi0gewotICAgTk9fUkVHUywKLSAgIFNJQl9SRUdTLAotKyAgSUpNUF9SRUdTLAotICAgR1BfUkVHUywKLSAgIEFMTF9SRUdTLAotICAgTElNX1JFR19DTEFTU0VTCi1AQCAtMTgzLDYgKzE4NCw3IEBAIGVudW0gcmVnX2NsYXNzCi0gI2RlZmluZSBSRUdfQ0xBU1NfTkFNRVMgICBcCi0gICB7ICAiTk9fUkVHUyIsCQkgIFwKLSAgICAgICJTSUJfUkVHUyIsCSAgXAotKyAgICAgIklKTVBfUkVHUyIsCSAgXAotICAgICAgIkdQX1JFR1MiLCAgICAgICAgICAgXAotICAgICAgIkFMTF9SRUdTIiB9Ci0gCi1AQCAtMTkwLDEwICsxOTIsMTEgQEAgZW51bSByZWdfY2xhc3MKLSAKLSAjZGVmaW5lIFJFR19DTEFTU19DT05URU5UUwkJCVwKLSAgIHsJCQkJCQlcCi0tICAgIC8qIE5PX1JFR1MgICovIHsgMCwgMH0sCQkJXAotLSAgICAvKiBTSUJfUkVHUyAqLyB7IDB4ZmUwYywgMH0sCQlcCi0tICAgIC8qIEdQX1JFR1MgICovIHt+MCwgMH0sCQkJXAotLSAgICAvKiBBTExfUkVHUyAqLyB7fjAsfjB9CQkJXAotKyAgICAvKiBOT19SRUdTICAgICovIHsgMCwgMH0sCQkJXAotKyAgICAvKiBTSUJfUkVHUyAgICovIHsgMHhmZTBjLCAwfSwJCVwKLSsgICAgLyogSUpNUF9SRUdTICAqLyB7IDB4N2ZmZmZmZmYsIDB9LAkJXAotKyAgICAvKiBHUF9SRUdTICAgICovIHt+MCwgMH0sCQkJXAotKyAgICAvKiBBTExfUkVHUyAgICovIHt+MCx+MH0JCQlcCi0gICB9Ci0gCi0gCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9uaW9zMi9uaW9zMi5tZCBiL2djYy9jb25maWcvbmlvczIvbmlvczIubWQKLWluZGV4IDdiMzVkMjY5Li4zNmVmMTAxIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9uaW9zMi9uaW9zMi5tZAotKysrIGIvZ2NjL2NvbmZpZy9uaW9zMi9uaW9zMi5tZAotQEAgLTY5Nyw3ICs2OTcsNyBAQAotIDsgY2hlY2sgb3IgYWRqdXN0IGZvciBvdmVyZmxvdy4KLSAKLSAoZGVmaW5lX2luc24gImluZGlyZWN0X2p1bXAiCi0tICBbKHNldCAocGMpIChtYXRjaF9vcGVyYW5kOlNJIDAgInJlZ2lzdGVyX29wZXJhbmQiICJyIikpXQotKyAgWyhzZXQgKHBjKSAobWF0Y2hfb3BlcmFuZDpTSSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiYyIpKV0KLSAgICIiCi0gICAiam1wXFx0JTAiCi0gICBbKHNldF9hdHRyICJ0eXBlIiAiY29udHJvbCIpXSkKLUBAIC04MTEsNyArODExLDcgQEAKLSAKLSAoZGVmaW5lX2luc24gIip0YWJsZWp1bXAiCi0gICBbKHNldCAocGMpCi0tICAgICAgICAobWF0Y2hfb3BlcmFuZDpTSSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiciIpKQotKyAgICAgICAgKG1hdGNoX29wZXJhbmQ6U0kgMCAicmVnaXN0ZXJfb3BlcmFuZCIgImMiKSkKLSAgICAodXNlIChsYWJlbF9yZWYgKG1hdGNoX29wZXJhbmQgMSAiIiAiIikpKV0KLSAgICIiCi0gICAiam1wXFx0JTAiCi0tLSAKLTIuNy4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA1My1leHByLmMtUFItdGFyZ2V0LTY1MzU4LUF2b2lkLWNsb2JiZXJpbmctcGFydGlhbC1hcmd1LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDUzLWV4cHIuYy1QUi10YXJnZXQtNjUzNTgtQXZvaWQtY2xvYmJlcmluZy1wYXJ0aWFsLWFyZ3UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxOGY0MGUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDUzLWV4cHIuYy1QUi10YXJnZXQtNjUzNTgtQXZvaWQtY2xvYmJlcmluZy1wYXJ0aWFsLWFyZ3UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMDcgKzAsMCBAQAotRnJvbSA1MzZiODMxODk3NDQ5NWNkZTJiNDJjM2MyNzQyNzQ4ZTJiMjcxYmUwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbToga3RrYWNob3YgPGt0a2FjaG92QDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhND4KLURhdGU6IFdlZCwgMjcgTWF5IDIwMTUgMTM6MjU6MDEgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gUFIgdGFyZ2V0LzY1MzU4IEF2b2lkIGNsb2JiZXJpbmcgcGFydGlhbCBhcmd1bWVudCBkdXJpbmcKLSBzaWJjYWxsCi0KLQlQUiB0YXJnZXQvNjUzNTgKLQkqIGV4cHIuYyAobWVtb3J5X2xvYWRfb3ZlcmxhcCk6IE5ldyBmdW5jdGlvbi4KLQkoZW1pdF9wdXNoX2luc24pOiBXaGVuIHB1c2hpbmcgcGFydGlhbCBhcmdzIHRvIHRoZSBzdGFjayB3b3VsZAotCWNsb2JiZXIgdGhlIHJlZ2lzdGVyIHBhcnQgbG9hZCB0aGUgb3ZlcmxhcHBpbmcgcGFydCBpbnRvIGEgcHNldWRvCi0JYW5kIHB1dCBpdCBpbnRvIHRoZSBoYXJkIHJlZyBhZnRlciBwdXNoaW5nLiAgQ2hhbmdlIHJldHVybiB0eXBlCi0JdG8gYm9vbC4gIEFkZCBib29sIGFyZ3VtZW50LgotCSogZXhwci5oIChlbWl0X3B1c2hfaW5zbik6IENoYW5nZSByZXR1cm4gdHlwZSB0byBib29sLgotCUFkZCBib29sIGFyZ3VtZW50LgotCSogY2FsbHMuYyAoZXhwYW5kX2NhbGwpOiBDYW5jZWwgc2liY2FsbCBvcHRpbWl6YXRpb24gd2hlbiBlbmNvdW50ZXJpbmcKLQlwYXJ0aWFsIGFyZ3VtZW50IG9uIHRhcmdldHMgd2l0aCBBUkdTX0dST1dfRE9XTldBUkQgYW5kCi0JIVNUQUNLX0dST1dTX0RPV05XQVJELgotCShlbWl0X2xpYnJhcnlfY2FsbF92YWx1ZV8xKTogVXBkYXRlIGNhbGxzaXRlIG9mIGVtaXRfcHVzaF9pbnNuLgotCShzdG9yZV9vbmVfYXJnKTogTGlrZXdpc2UuCi0KLQlQUiB0YXJnZXQvNjUzNTgKLQkqIGdjYy5kZy9wcjY1MzU4LmM6IE5ldyB0ZXN0LgotCi1naXQtc3ZuLWlkOiBzdm4rc3NoOi8vZ2NjLmdudS5vcmcvc3ZuL2djYy90cnVua0AyMjM3NTMgMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgZnJvbSA2LjAKLVNpZ25lZC1vZmYtYnk6IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KLS0tLQotIGdjYy9jYWxscy5jICAgICAgICAgICAgICAgICAgICB8IDE3ICsrKysrKy0tCi0gZ2NjL2V4cHIuYyAgICAgICAgICAgICAgICAgICAgIHwgOTAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCi0gZ2NjL2V4cHIuaCAgICAgICAgICAgICAgICAgICAgIHwgIDQgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY1MzU4LmMgfCAzMyArKysrKysrKysrKysrKysrCi0gNCBmaWxlcyBjaGFuZ2VkLCAxMjkgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjUzNTguYwotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NhbGxzLmMgYi9nY2MvY2FsbHMuYwotaW5kZXggZWU4ZWE1Zi4uMjMzNDM4MSAxMDA2NDQKLS0tLSBhL2djYy9jYWxscy5jCi0rKysgYi9nY2MvY2FsbHMuYwotQEAgLTMyMzYsNiArMzIzNiwxNCBAQCBleHBhbmRfY2FsbCAodHJlZSBleHAsIHJ0eCB0YXJnZXQsIGludCBpZ25vcmUpCi0gCSAgICB7Ci0gCSAgICAgIHJ0eF9pbnNuICpiZWZvcmVfYXJnID0gZ2V0X2xhc3RfaW5zbiAoKTsKLSAKLSsJICAgICAvKiBPbiB0YXJnZXRzIHdpdGggd2VpcmQgY2FsbGluZyBjb252ZW50aW9ucyAoZS5nLiBQQSkgaXQncwotKwkJaGFyZCB0byBlbnN1cmUgdGhhdCBhbGwgY2FzZXMgb2YgYXJndW1lbnQgb3ZlcmxhcCBiZXR3ZWVuCi0rCQlzdGFjayBhbmQgcmVnaXN0ZXJzIHdvcmsuICBQbGF5IGl0IHNhZmUgYW5kIGJhaWwgb3V0LiAgKi8KLSsjaWYgZGVmaW5lZChBUkdTX0dST1dfRE9XTldBUkQpICYmICFkZWZpbmVkKFNUQUNLX0dST1dTX0RPV05XQVJEKQotKwkJICBzaWJjYWxsX2ZhaWx1cmUgPSAxOwotKwkJICBicmVhazsKLSsjZW5kaWYKLSsKLSAJICAgICAgaWYgKHN0b3JlX29uZV9hcmcgKCZhcmdzW2ldLCBhcmdibG9jaywgZmxhZ3MsCi0gCQkJCSBhZGp1c3RlZF9hcmdzX3NpemUudmFyICE9IDAsCi0gCQkJCSByZWdfcGFybV9zdGFja19zcGFjZSkKLUBAIC00Mjc5LDcgKzQyODcsNyBAQCBlbWl0X2xpYnJhcnlfY2FsbF92YWx1ZV8xIChpbnQgcmV0dmFsLCBydHggb3JnZnVuLCBydHggdmFsdWUsCi0gCQkJICBwYXJ0aWFsLCByZWcsIDAsIGFyZ2Jsb2NrLAotIAkJCSAgR0VOX0lOVCAoYXJndmVjW2FyZ251bV0ubG9jYXRlLm9mZnNldC5jb25zdGFudCksCi0gCQkJICByZWdfcGFybV9zdGFja19zcGFjZSwKLS0JCQkgIEFSR1NfU0laRV9SVFggKGFyZ3ZlY1thcmdudW1dLmxvY2F0ZS5hbGlnbm1lbnRfcGFkKSk7Ci0rCQkJICBBUkdTX1NJWkVfUlRYIChhcmd2ZWNbYXJnbnVtXS5sb2NhdGUuYWxpZ25tZW50X3BhZCksIGZhbHNlKTsKLSAKLSAJICAvKiBOb3cgbWFyayB0aGUgc2VnbWVudCB3ZSBqdXN0IHVzZWQuICAqLwotIAkgIGlmIChBQ0NVTVVMQVRFX09VVEdPSU5HX0FSR1MpCi1AQCAtNDg4NiwxMCArNDg5NCwxMSBAQCBzdG9yZV9vbmVfYXJnIChzdHJ1Y3QgYXJnX2RhdGEgKmFyZywgcnR4IGFyZ2Jsb2NrLCBpbnQgZmxhZ3MsCi0gCi0gICAgICAgLyogVGhpcyBpc24ndCBhbHJlYWR5IHdoZXJlIHdlIHdhbnQgaXQgb24gdGhlIHN0YWNrLCBzbyBwdXQgaXQgdGhlcmUuCi0gCSBUaGlzIGNhbiBlaXRoZXIgYmUgZG9uZSB3aXRoIHB1c2ggb3IgY29weSBpbnNucy4gICovCi0tICAgICAgZW1pdF9wdXNoX2luc24gKGFyZy0+dmFsdWUsIGFyZy0+bW9kZSwgVFJFRV9UWVBFIChwdmFsKSwgTlVMTF9SVFgsCi0rICAgICAgaWYgKCFlbWl0X3B1c2hfaW5zbiAoYXJnLT52YWx1ZSwgYXJnLT5tb2RlLCBUUkVFX1RZUEUgKHB2YWwpLCBOVUxMX1JUWCwKLSAJCSAgICAgIHBhcm1fYWxpZ24sIHBhcnRpYWwsIHJlZywgdXNlZCAtIHNpemUsIGFyZ2Jsb2NrLAotIAkJICAgICAgQVJHU19TSVpFX1JUWCAoYXJnLT5sb2NhdGUub2Zmc2V0KSwgcmVnX3Bhcm1fc3RhY2tfc3BhY2UsCi0tCQkgICAgICBBUkdTX1NJWkVfUlRYIChhcmctPmxvY2F0ZS5hbGlnbm1lbnRfcGFkKSk7Ci0rCQkgICAgICBBUkdTX1NJWkVfUlRYIChhcmctPmxvY2F0ZS5hbGlnbm1lbnRfcGFkKSwgdHJ1ZSkpCi0rCXNpYmNhbGxfZmFpbHVyZSA9IDE7Ci0gCi0gICAgICAgLyogVW5sZXNzIHRoaXMgaXMgYSBwYXJ0aWFsbHktaW4tcmVnaXN0ZXIgYXJndW1lbnQsIHRoZSBhcmd1bWVudCBpcyBub3cKLSAJIGluIHRoZSBzdGFjay4gICovCi1AQCAtNTAwMSw3ICs1MDEwLDcgQEAgc3RvcmVfb25lX2FyZyAoc3RydWN0IGFyZ19kYXRhICphcmcsIHJ0eCBhcmdibG9jaywgaW50IGZsYWdzLAotICAgICAgIGVtaXRfcHVzaF9pbnNuIChhcmctPnZhbHVlLCBhcmctPm1vZGUsIFRSRUVfVFlQRSAocHZhbCksIHNpemVfcnR4LAotIAkJICAgICAgcGFybV9hbGlnbiwgcGFydGlhbCwgcmVnLCBleGNlc3MsIGFyZ2Jsb2NrLAotIAkJICAgICAgQVJHU19TSVpFX1JUWCAoYXJnLT5sb2NhdGUub2Zmc2V0KSwgcmVnX3Bhcm1fc3RhY2tfc3BhY2UsCi0tCQkgICAgICBBUkdTX1NJWkVfUlRYIChhcmctPmxvY2F0ZS5hbGlnbm1lbnRfcGFkKSk7Ci0rCQkgICAgICBBUkdTX1NJWkVfUlRYIChhcmctPmxvY2F0ZS5hbGlnbm1lbnRfcGFkKSwgZmFsc2UpOwotIAotICAgICAgIC8qIFVubGVzcyB0aGlzIGlzIGEgcGFydGlhbGx5LWluLXJlZ2lzdGVyIGFyZ3VtZW50LCB0aGUgYXJndW1lbnQgaXMgbm93Ci0gCSBpbiB0aGUgc3RhY2suCi1kaWZmIC0tZ2l0IGEvZ2NjL2V4cHIuYyBiL2djYy9leHByLmMKLWluZGV4IDVjMDk1NTAuLjI0YTYyOTMgMTAwNjQ0Ci0tLS0gYS9nY2MvZXhwci5jCi0rKysgYi9nY2MvZXhwci5jCi1AQCAtNDEyMSwxMiArNDEyMSwzNSBAQCBlbWl0X3NpbmdsZV9wdXNoX2luc24gKG1hY2hpbmVfbW9kZSBtb2RlLCBydHggeCwgdHJlZSB0eXBlKQotIH0KLSAjZW5kaWYKLSAKLSsvKiBJZiByZWFkaW5nIFNJWkUgYnl0ZXMgZnJvbSBYIHdpbGwgZW5kIHVwIHJlYWRpbmcgZnJvbQotKyAgIFkgcmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCBvdmVybGFwLiAgUmV0dXJuIC0xCi0rICAgaWYgdGhlcmUgaXMgbm8gb3ZlcmxhcCBvciAtMiBpZiB3ZSBjYW4ndCBkZXRlcm1pbmUKLSsgICAoZm9yIGV4YW1wbGUgd2hlbiBYIGFuZCBZIGhhdmUgZGlmZmVyZW50IGJhc2UgcmVnaXN0ZXJzKS4gICovCi0rCi0rc3RhdGljIGludAotK21lbW9yeV9sb2FkX292ZXJsYXAgKHJ0eCB4LCBydHggeSwgSE9TVF9XSURFX0lOVCBzaXplKQotK3sKLSsgIHJ0eCB0bXAgPSBwbHVzX2NvbnN0YW50IChQbW9kZSwgeCwgc2l6ZSk7Ci0rICBydHggc3ViID0gc2ltcGxpZnlfZ2VuX2JpbmFyeSAoTUlOVVMsIFBtb2RlLCB0bXAsIHkpOwotKwotKyAgaWYgKCFDT05TVF9JTlRfUCAoc3ViKSkKLSsgICAgcmV0dXJuIC0yOwotKwotKyAgSE9TVF9XSURFX0lOVCB2YWwgPSBJTlRWQUwgKHN1Yik7Ci0rCi0rICByZXR1cm4gSU5fUkFOR0UgKHZhbCwgMSwgc2l6ZSkgPyB2YWwgOiAtMTsKLSt9Ci0rCi0gLyogR2VuZXJhdGUgY29kZSB0byBwdXNoIFggb250byB0aGUgc3RhY2ssIGFzc3VtaW5nIGl0IGhhcyBtb2RlIE1PREUgYW5kCi0gICAgdHlwZSBUWVBFLgotICAgIE1PREUgaXMgcmVkdW5kYW50IGV4Y2VwdCB3aGVuIFggaXMgYSBDT05TVF9JTlQgKHNpbmNlIHRoZXkgZG9uJ3QKLSAgICBjYXJyeSBtb2RlIGluZm8pLgotICAgIFNJWkUgaXMgYW4gcnR4IGZvciB0aGUgc2l6ZSBvZiBkYXRhIHRvIGJlIGNvcGllZCAoaW4gYnl0ZXMpLAotICAgIG5lZWRlZCBvbmx5IGlmIFggaXMgQkxLbW9kZS4KLSsgICBSZXR1cm4gdHJ1ZSBpZiBzdWNjZXNzZnVsLiAgTWF5IHJldHVybiBmYWxzZSBpZiBhc2tlZCB0byBwdXNoIGEKLSsgICBwYXJ0aWFsIGFyZ3VtZW50IGR1cmluZyBhIHNpYmNhbGwgb3B0aW1pemF0aW9uIChhcyBzcGVjaWZpZWQgYnkKLSsgICBTSUJDQUxMX1ApIGFuZCB0aGUgaW5jb21pbmcgYW5kIG91dGdvaW5nIHBvaW50ZXJzIGNhbm5vdCBiZSBzaG93bgotKyAgIHRvIG5vdCBvdmVybGFwLgotIAotICAgIEFMSUdOIChpbiBiaXRzKSBpcyBtYXhpbXVtIGFsaWdubWVudCB3ZSBjYW4gYXNzdW1lLgotIAotQEAgLTQxNTIsMTEgKzQxNzUsMTEgQEAgZW1pdF9zaW5nbGVfcHVzaF9pbnNuIChtYWNoaW5lX21vZGUgbW9kZSwgcnR4IHgsIHRyZWUgdHlwZSkKLSAgICBmb3IgYXJndW1lbnRzIHBhc3NlZCBpbiByZWdpc3RlcnMuICBJZiBub256ZXJvLCBpdCB3aWxsIGJlIHRoZSBudW1iZXIKLSAgICBvZiBieXRlcyByZXF1aXJlZC4gICovCi0gCi0tdm9pZAotK2Jvb2wKLSBlbWl0X3B1c2hfaW5zbiAocnR4IHgsIG1hY2hpbmVfbW9kZSBtb2RlLCB0cmVlIHR5cGUsIHJ0eCBzaXplLAotIAkJdW5zaWduZWQgaW50IGFsaWduLCBpbnQgcGFydGlhbCwgcnR4IHJlZywgaW50IGV4dHJhLAotIAkJcnR4IGFyZ3NfYWRkciwgcnR4IGFyZ3Nfc29fZmFyLCBpbnQgcmVnX3Bhcm1fc3RhY2tfc3BhY2UsCi0tCQlydHggYWxpZ25tZW50X3BhZCkKLSsJCXJ0eCBhbGlnbm1lbnRfcGFkLCBib29sIHNpYmNhbGxfcCkKLSB7Ci0gICBydHggeGlubmVyOwotICAgZW51bSBkaXJlY3Rpb24gc3RhY2tfZGlyZWN0aW9uCi1AQCAtNDE3OSw2ICs0MjAyLDEwIEBAIGVtaXRfcHVzaF9pbnNuIChydHggeCwgbWFjaGluZV9tb2RlIG1vZGUsIHRyZWUgdHlwZSwgcnR4IHNpemUsCi0gCi0gICB4aW5uZXIgPSB4OwotIAotKyAgaW50IG5yZWdzID0gcGFydGlhbCAvIFVOSVRTX1BFUl9XT1JEOwotKyAgcnR4ICp0bXBfcmVncyA9IE5VTEw7Ci0rICBpbnQgb3ZlcmxhcHBpbmcgPSAwOwotKwotICAgaWYgKG1vZGUgPT0gQkxLbW9kZQotICAgICAgIHx8IChTVFJJQ1RfQUxJR05NRU5UICYmIGFsaWduIDwgR0VUX01PREVfQUxJR05NRU5UIChtb2RlKSkpCi0gICAgIHsKLUBAIC00MzA5LDYgKzQzMzYsNDMgQEAgZW1pdF9wdXNoX2luc24gKHJ0eCB4LCBtYWNoaW5lX21vZGUgbW9kZSwgdHJlZSB0eXBlLCBydHggc2l6ZSwKLSAJICAgICBQQVJNX0JPVU5EQVJZLiAgQXNzdW1lIHRoZSBjYWxsZXIgaXNuJ3QgbHlpbmcuICAqLwotIAkgIHNldF9tZW1fYWxpZ24gKHRhcmdldCwgYWxpZ24pOwotIAotKwkgIC8qIElmIHBhcnQgc2hvdWxkIGdvIGluIHJlZ2lzdGVycyBhbmQgcHVzaGluZyB0byB0aGF0IHBhcnQgd291bGQKLSsJICAgICBvdmVyd3JpdGUgc29tZSBvZiB0aGUgdmFsdWVzIHRoYXQgbmVlZCB0byBnbyBpbnRvIHJlZ3MsIGxvYWQgdGhlCi0rCSAgICAgb3ZlcmxhcHBpbmcgdmFsdWVzIGludG8gdGVtcG9yYXJ5IHBzZXVkb3MgdG8gYmUgbW92ZWQgaW50byB0aGUgaGFyZAotKwkgICAgIHJlZ3MgYXQgdGhlIGVuZCBhZnRlciB0aGUgc3RhY2sgcHVzaGluZyBoYXMgY29tcGxldGVkLgotKwkgICAgIFdlIGNhbm5vdCBsb2FkIHRoZW0gZGlyZWN0bHkgaW50byB0aGUgaGFyZCByZWdzIGhlcmUgYmVjYXVzZQotKwkgICAgIHRoZXkgY2FuIGJlIGNsb2JiZXJlZCBieSB0aGUgYmxvY2sgbW92ZSBleHBhbnNpb25zLgotKwkgICAgIFNlZSBQUiA2NTM1OC4gICovCi0rCi0rCSAgaWYgKHBhcnRpYWwgPiAwICYmIHJlZyAhPSAwICYmIG1vZGUgPT0gQkxLbW9kZQotKwkgICAgICAmJiBHRVRfQ09ERSAocmVnKSAhPSBQQVJBTExFTCkKLSsJICAgIHsKLSsJICAgICAgb3ZlcmxhcHBpbmcgPSBtZW1vcnlfbG9hZF9vdmVybGFwIChYRVhQICh4LCAwKSwgdGVtcCwgcGFydGlhbCk7Ci0rCSAgICAgIGlmIChvdmVybGFwcGluZyA+IDApCi0rCSAgICAgICAgewotKwkJICBnY2NfYXNzZXJ0IChvdmVybGFwcGluZyAlIFVOSVRTX1BFUl9XT1JEID09IDApOwotKwkJICBvdmVybGFwcGluZyAvPSBVTklUU19QRVJfV09SRDsKLSsKLSsJCSAgdG1wX3JlZ3MgPSBYQUxMT0NBVkVDIChydHgsIG92ZXJsYXBwaW5nKTsKLSsKLSsJCSAgZm9yIChpbnQgaSA9IDA7IGkgPCBvdmVybGFwcGluZzsgaSsrKQotKwkJICAgIHRtcF9yZWdzW2ldID0gZ2VuX3JlZ19ydHggKHdvcmRfbW9kZSk7Ci0rCi0rCQkgIGZvciAoaW50IGkgPSAwOyBpIDwgb3ZlcmxhcHBpbmc7IGkrKykKLSsJCSAgICBlbWl0X21vdmVfaW5zbiAodG1wX3JlZ3NbaV0sCi0rCQkJCSAgICBvcGVyYW5kX3N1YndvcmRfZm9yY2UgKHRhcmdldCwgaSwgbW9kZSkpOwotKwkgICAgICAgIH0KLSsJICAgICAgZWxzZSBpZiAob3ZlcmxhcHBpbmcgPT0gLTEpCi0rCQlvdmVybGFwcGluZyA9IDA7Ci0rCSAgICAgIC8qIENvdWxkIG5vdCBkZXRlcm1pbmUgd2hldGhlciB0aGVyZSBpcyBvdmVybGFwLgotKwkgICAgICAgICBGYWlsIHRoZSBzaWJjYWxsLiAgKi8KLSsJICAgICAgZWxzZQotKwkJewotKwkJICBvdmVybGFwcGluZyA9IDA7Ci0rCQkgIGlmIChzaWJjYWxsX3ApCi0rCQkgICAgcmV0dXJuIGZhbHNlOwotKwkJfQotKwkgICAgfQotIAkgIGVtaXRfYmxvY2tfbW92ZSAodGFyZ2V0LCB4aW5uZXIsIHNpemUsIEJMT0NLX09QX0NBTExfUEFSTSk7Ci0gCX0KLSAgICAgfQotQEAgLTQzNjMsMTIgKzQ0MjcsMTMgQEAgZW1pdF9wdXNoX2luc24gKHJ0eCB4LCBtYWNoaW5lX21vZGUgbW9kZSwgdHJlZSB0eXBlLCBydHggc2l6ZSwKLSAJIGhhcyBhIHNpemUgYSBtdWx0aXBsZSBvZiBhIHdvcmQuICAqLwotICAgICAgIGZvciAoaSA9IHNpemUgLSAxOyBpID49IG5vdF9zdGFjazsgaS0tKQotIAlpZiAoaSA+PSBub3Rfc3RhY2sgKyBvZmZzZXQpCi0tCSAgZW1pdF9wdXNoX2luc24gKG9wZXJhbmRfc3Vid29yZF9mb3JjZSAoeCwgaSwgbW9kZSksCi0rCSAgaWYgKCFlbWl0X3B1c2hfaW5zbiAob3BlcmFuZF9zdWJ3b3JkX2ZvcmNlICh4LCBpLCBtb2RlKSwKLSAJCQkgIHdvcmRfbW9kZSwgTlVMTF9UUkVFLCBOVUxMX1JUWCwgYWxpZ24sIDAsIE5VTExfUlRYLAotIAkJCSAgMCwgYXJnc19hZGRyLAotIAkJCSAgR0VOX0lOVCAoYXJnc19vZmZzZXQgKyAoKGkgLSBub3Rfc3RhY2sgKyBza2lwKQotIAkJCQkJCSAgKiBVTklUU19QRVJfV09SRCkpLAotLQkJCSAgcmVnX3Bhcm1fc3RhY2tfc3BhY2UsIGFsaWdubWVudF9wYWQpOwotKwkJCSAgcmVnX3Bhcm1fc3RhY2tfc3BhY2UsIGFsaWdubWVudF9wYWQsIHNpYmNhbGxfcCkpCi0rCSAgICByZXR1cm4gZmFsc2U7Ci0gICAgIH0KLSAgIGVsc2UKLSAgICAgewotQEAgLTQ0MTEsOSArNDQ3Niw4IEBAIGVtaXRfcHVzaF9pbnNuIChydHggeCwgbWFjaGluZV9tb2RlIG1vZGUsIHRyZWUgdHlwZSwgcnR4IHNpemUsCi0gCX0KLSAgICAgfQotIAotLSAgLyogSWYgcGFydCBzaG91bGQgZ28gaW4gcmVnaXN0ZXJzLCBjb3B5IHRoYXQgcGFydAotLSAgICAgaW50byB0aGUgYXBwcm9wcmlhdGUgcmVnaXN0ZXJzLiAgRG8gdGhpcyBub3csIGF0IHRoZSBlbmQsCi0tICAgICBzaW5jZSBtZW0tdG8tbWVtIGNvcGllcyBhYm92ZSBtYXkgZG8gZnVuY3Rpb24gY2FsbHMuICAqLwotKyAgLyogTW92ZSB0aGUgcGFydGlhbCBhcmd1bWVudHMgaW50byB0aGUgcmVnaXN0ZXJzIGFuZCBhbnkgb3ZlcmxhcHBpbmcKLSsgICAgIHZhbHVlcyB0aGF0IHdlIG1vdmVkIGludG8gdGhlIHBzZXVkb3MgaW4gdG1wX3JlZ3MuICAqLwotICAgaWYgKHBhcnRpYWwgPiAwICYmIHJlZyAhPSAwKQotICAgICB7Ci0gICAgICAgLyogSGFuZGxlIGNhbGxzIHRoYXQgcGFzcyB2YWx1ZXMgaW4gbXVsdGlwbGUgbm9uLWNvbnRpZ3VvdXMgbG9jYXRpb25zLgotQEAgLTQ0MjEsOSArNDQ4NSwxNSBAQCBlbWl0X3B1c2hfaW5zbiAocnR4IHgsIG1hY2hpbmVfbW9kZSBtb2RlLCB0cmVlIHR5cGUsIHJ0eCBzaXplLAotICAgICAgIGlmIChHRVRfQ09ERSAocmVnKSA9PSBQQVJBTExFTCkKLSAJZW1pdF9ncm91cF9sb2FkIChyZWcsIHgsIHR5cGUsIC0xKTsKLSAgICAgICBlbHNlCi0tCXsKLSsgICAgICAgIHsKLSAJICBnY2NfYXNzZXJ0IChwYXJ0aWFsICUgVU5JVFNfUEVSX1dPUkQgPT0gMCk7Ci0tCSAgbW92ZV9ibG9ja190b19yZWcgKFJFR05PIChyZWcpLCB4LCBwYXJ0aWFsIC8gVU5JVFNfUEVSX1dPUkQsIG1vZGUpOwotKwkgIG1vdmVfYmxvY2tfdG9fcmVnIChSRUdOTyAocmVnKSwgeCwgbnJlZ3MgLSBvdmVybGFwcGluZywgbW9kZSk7Ci0rCi0rCSAgZm9yIChpbnQgaSA9IDA7IGkgPCBvdmVybGFwcGluZzsgaSsrKQotKwkgICAgZW1pdF9tb3ZlX2luc24gKGdlbl9ydHhfUkVHICh3b3JkX21vZGUsIFJFR05PIChyZWcpCi0rCQkJCQkJICAgICsgbnJlZ3MgLSBvdmVybGFwcGluZyArIGkpLAotKwkJCSAgICB0bXBfcmVnc1tpXSk7Ci0rCi0gCX0KLSAgICAgfQotIAotQEAgLTQ0MzIsNiArNDUwMiw4IEBAIGVtaXRfcHVzaF9pbnNuIChydHggeCwgbWFjaGluZV9tb2RlIG1vZGUsIHRyZWUgdHlwZSwgcnR4IHNpemUsCi0gCi0gICBpZiAoYWxpZ25tZW50X3BhZCAmJiBhcmdzX2FkZHIgPT0gMCkKLSAgICAgYW50aV9hZGp1c3Rfc3RhY2sgKGFsaWdubWVudF9wYWQpOwotKwotKyAgcmV0dXJuIHRydWU7Ci0gfQotIAwKLSAvKiBSZXR1cm4gWCBpZiBYIGNhbiBiZSB1c2VkIGFzIGEgc3VidGFyZ2V0IGluIGEgc2VxdWVuY2Ugb2YgYXJpdGhtZXRpYwotZGlmZiAtLWdpdCBhL2djYy9leHByLmggYi9nY2MvZXhwci5oCi1pbmRleCA4Njc4NTJlLi41ZmNjMTNmIDEwMDY0NAotLS0tIGEvZ2NjL2V4cHIuaAotKysrIGIvZ2NjL2V4cHIuaAotQEAgLTIxOCw4ICsyMTgsOCBAQCBleHRlcm4gcnR4IGVtaXRfbW92ZV9yZXNvbHZlX3B1c2ggKG1hY2hpbmVfbW9kZSwgcnR4KTsKLSBleHRlcm4gcnR4IHB1c2hfYmxvY2sgKHJ0eCwgaW50LCBpbnQpOwotIAotIC8qIEdlbmVyYXRlIGNvZGUgdG8gcHVzaCBzb21ldGhpbmcgb250byB0aGUgc3RhY2ssIGdpdmVuIGl0cyBtb2RlIGFuZCB0eXBlLiAgKi8KLS1leHRlcm4gdm9pZCBlbWl0X3B1c2hfaW5zbiAocnR4LCBtYWNoaW5lX21vZGUsIHRyZWUsIHJ0eCwgdW5zaWduZWQgaW50LAotLQkJCSAgICBpbnQsIHJ0eCwgaW50LCBydHgsIHJ0eCwgaW50LCBydHgpOwotK2V4dGVybiBib29sIGVtaXRfcHVzaF9pbnNuIChydHgsIG1hY2hpbmVfbW9kZSwgdHJlZSwgcnR4LCB1bnNpZ25lZCBpbnQsCi0rCQkJICAgIGludCwgcnR4LCBpbnQsIHJ0eCwgcnR4LCBpbnQsIHJ0eCwgYm9vbCk7Ci0gCi0gLyogRXhwYW5kIGFuIGFzc2lnbm1lbnQgdGhhdCBzdG9yZXMgdGhlIHZhbHVlIG9mIEZST00gaW50byBUTy4gICovCi0gZXh0ZXJuIHZvaWQgZXhwYW5kX2Fzc2lnbm1lbnQgKHRyZWUsIHRyZWUsIGJvb2wpOwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjUzNTguYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjUzNTguYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmJhODlmZDQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjUzNTguYwotQEAgLTAsMCArMSwzMyBAQAotKy8qIHsgZGctZG8gcnVuIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiIgfSAqLwotKwotK3N0cnVjdCBwYWNrCi0rewotKyAgaW50IGZpbmU7Ci0rICBpbnQgdmljdGltOwotKyAgaW50IGtpbGxlcjsKLSt9OwotKwotK2ludCBfX2F0dHJpYnV0ZV9fICgoX19ub2lubGluZV9fLCBfX25vY2xvbmVfXykpCi0rYmFyIChpbnQgYSwgaW50IGIsIHN0cnVjdCBwYWNrIHApCi0rewotKyAgaWYgKGEgIT0gMjAgfHwgYiAhPSAzMCkKLSsgICAgX19idWlsdGluX2Fib3J0ICgpOwotKyAgaWYgKHAuZmluZSAhPSA0MCB8fCBwLnZpY3RpbSAhPSA1MCB8fCBwLmtpbGxlciAhPSA2MCkKLSsgICAgX19idWlsdGluX2Fib3J0ICgpOwotKyAgcmV0dXJuIDA7Ci0rfQotKwotK2ludCBfX2F0dHJpYnV0ZV9fICgoX19ub2lubGluZV9fLCBfX25vY2xvbmVfXykpCi0rZm9vIChpbnQgYXJnMSwgaW50IGFyZzIsIGludCBhcmczLCBzdHJ1Y3QgcGFjayBwKQotK3sKLSsgIHJldHVybiBiYXIgKGFyZzIsIGFyZzMsIHApOwotK30KLSsKLStpbnQgbWFpbiAodm9pZCkKLSt7Ci0rICBzdHJ1Y3QgcGFjayBwID0geyA0MCwgNTAsIDYwIH07Ci0rCi0rICAodm9pZCkgZm9vICgxMCwgMjAsIDMwLCBwKTsKLSsgIHJldHVybiAwOwotK30KLS0tIAotMi43LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDU0LXN1cHBvcnQtZmZpbGUtcHJlZml4LW1hcC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA1NC1zdXBwb3J0LWZmaWxlLXByZWZpeC1tYXAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhMTY4NzkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDU0LXN1cHBvcnQtZmZpbGUtcHJlZml4LW1hcC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4NCArMCwwIEBACi1Gcm9tIGVmN2MyYmRhNmI0Yzg4ZjgwMDdlZDY2M2IxMTA4Y2Q0NjUxNTk4YzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBXZWQsIDE2IE1hciAyMDE2IDAyOjI3OjQzIC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGdjYy9saWJjcHA6IHN1cHBvcnQgLWZmaWxlLXByZWZpeC1tYXA9PG9sZD49PG5ldz4KLQotU2ltaWxhciAtZmRlYnVnLXByZWZpeC1tYXAsIGFkZCBvcHRpb24gLWZmaWxlLXByZWZpeC1tYXAgdG8gbWFwIG9uZQotZGlyZWN0b3J5IG5hbWUgKG9sZCkgdG8gYW5vdGhlciAobmV3KSBpbiBfX0ZJTEVfXywgX19CQVNFX0ZJTEVfXyBhbmQKLV9fYnVpbHRpbl9GSUxFICgpLgotCi1odHRwczovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD03MDI2OAotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbZ2NjLXBhdGNoZXNAZ2NjLmdudS5vcmddCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBnY2MvYy1mYW1pbHkvYy1vcHRzLmMgICAgIHwgIDYgKysrKwotIGdjYy9jLWZhbWlseS9jLm9wdCAgICAgICAgfCAgNCArKysKLSBnY2MvZHdhcmYyb3V0LmMgICAgICAgICAgIHwgIDEgKwotIGdjYy9naW1wbGlmeS5jICAgICAgICAgICAgfCAgMiArKwotIGxpYmNwcC9NYWtlZmlsZS5pbiAgICAgICAgfCAxMCArKystLS0KLSBsaWJjcHAvZmlsZS1tYXAuYyAgICAgICAgIHwgOTIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBsaWJjcHAvaW5jbHVkZS9maWxlLW1hcC5oIHwgMzAgKysrKysrKysrKysrKysrKwotIGxpYmNwcC9tYWNyby5jICAgICAgICAgICAgfCAgMiArKwotIDggZmlsZXMgY2hhbmdlZCwgMTQyIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmNwcC9maWxlLW1hcC5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmNwcC9pbmNsdWRlL2ZpbGUtbWFwLmgKLQotZGlmZiAtLWdpdCBhL2djYy9jLWZhbWlseS9jLW9wdHMuYyBiL2djYy9jLWZhbWlseS9jLW9wdHMuYwotaW5kZXggNzE4YTA1Mi4uM2Y5M2M1NiAxMDA2NDQKLS0tLSBhL2djYy9jLWZhbWlseS9jLW9wdHMuYwotKysrIGIvZ2NjL2MtZmFtaWx5L2Mtb3B0cy5jCi1AQCAtNDYsNiArNDYsNyBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQotICNpbmNsdWRlICJvcHRzLmgiCi0gI2luY2x1ZGUgInBsdWdpbi5oIgkJLyogRm9yIFBMVUdJTl9JTkNMVURFX0ZJTEUgZXZlbnQuICAqLwotICNpbmNsdWRlICJta2RlcHMuaCIKLSsjaW5jbHVkZSAiZmlsZS1tYXAuaCIKLSAjaW5jbHVkZSAiYy10YXJnZXQuaCIKLSAjaW5jbHVkZSAidG0uaCIJCQkvKiBGb3IgQllURVNfQklHX0VORElBTiwKLSAJCQkJICAgRE9MTEFSU19JTl9JREVOVElGSUVSUywKLUBAIC01MTAsNiArNTExLDExIEBAIGNfY29tbW9uX2hhbmRsZV9vcHRpb24gKHNpemVfdCBzY29kZSwgY29uc3QgY2hhciAqYXJnLCBpbnQgdmFsdWUsCi0gICAgICAgY3BwX29wdHMtPm5hcnJvd19jaGFyc2V0ID0gYXJnOwotICAgICAgIGJyZWFrOwotIAotKyAgICBjYXNlIE9QVF9mZmlsZV9wcmVmaXhfbWFwXzoKLSsgICAgICBpZiAoYWRkX2ZpbGVfcHJlZml4X21hcCAoYXJnKSA8IDApCi0rICAgICAgICBlcnJvciAoImludmFsaWQgYXJndW1lbnQgJXFzIHRvIC1mZmlsZS1wcmVmaXgtbWFwIiwgYXJnKTsKLSsgICAgICBicmVhazsKLSsKLSAgICAgY2FzZSBPUFRfZndpZGVfZXhlY19jaGFyc2V0XzoKLSAgICAgICBjcHBfb3B0cy0+d2lkZV9jaGFyc2V0ID0gYXJnOwotICAgICAgIGJyZWFrOwotZGlmZiAtLWdpdCBhL2djYy9jLWZhbWlseS9jLm9wdCBiL2djYy9jLWZhbWlseS9jLm9wdAotaW5kZXggNDUzZWM4ZS4uMzBhZDA1MyAxMDA2NDQKLS0tLSBhL2djYy9jLWZhbWlseS9jLm9wdAotKysrIGIvZ2NjL2MtZmFtaWx5L2Mub3B0Ci1AQCAtMTExNyw2ICsxMTE3LDEwIEBAIGZleGVjLWNoYXJzZXQ9Ci0gQyBPYmpDIEMrKyBPYmpDKysgSm9pbmVkIFJlamVjdE5lZ2F0aXZlCi0gLWZleGVjLWNoYXJzZXQ9PGNzZXQ+CUNvbnZlcnQgYWxsIHN0cmluZ3MgYW5kIGNoYXJhY3RlciBjb25zdGFudHMgdG8gY2hhcmFjdGVyIHNldCA8Y3NldD4KLSAKLStmZmlsZS1wcmVmaXgtbWFwPQotK0MgT2JqQyBDKysgT2JqQysrIEpvaW5lZCBSZWplY3ROZWdhdGl2ZQotKy1mZmlsZS1wcmVmaXgtbWFwPTxvbGQ9bmV3PglNYXAgb25lIGRpcmVjdG9yeSBuYW1lIHRvIGFub3RoZXIgaW4gX19GSUxFX18sIF9fQkFTRV9GSUxFX18gYW5kIF9fYnVpbHRpbl9GSUxFICgpCi0rCi0gZmV4dGVuZGVkLWlkZW50aWZpZXJzCi0gQyBPYmpDIEMrKyBPYmpDKysKLSBQZXJtaXQgdW5pdmVyc2FsIGNoYXJhY3RlciBuYW1lcyAoXFx1IGFuZCBcXFUpIGluIGlkZW50aWZpZXJzCi1kaWZmIC0tZ2l0IGEvZ2NjL2R3YXJmMm91dC5jIGIvZ2NjL2R3YXJmMm91dC5jCi1pbmRleCA1MjZmMTE0Li40MzhhNDc1IDEwMDY0NAotLS0tIGEvZ2NjL2R3YXJmMm91dC5jCi0rKysgYi9nY2MvZHdhcmYyb3V0LmMKLUBAIC0xOTY3MSw2ICsxOTY3MSw3IEBAIGdlbl9wcm9kdWNlcl9zdHJpbmcgKHZvaWQpCi0gICAgICAgY2FzZSBPUFRfZmx0cmFuc19vdXRwdXRfbGlzdF86Ci0gICAgICAgY2FzZSBPUFRfZnJlc29sdXRpb25fOgotICAgICAgIGNhc2UgT1BUX2ZkZWJ1Z19wcmVmaXhfbWFwXzoKLSsgICAgICBjYXNlIE9QVF9mZmlsZV9wcmVmaXhfbWFwXzoKLSAJLyogSWdub3JlIHRoZXNlLiAgKi8KLSAJY29udGludWU7Ci0gICAgICAgZGVmYXVsdDoKLWRpZmYgLS1naXQgYS9nY2MvZ2ltcGxpZnkuYyBiL2djYy9naW1wbGlmeS5jCi1pbmRleCBjODVmODNhLi4xZmZlMWUxIDEwMDY0NAotLS0tIGEvZ2NjL2dpbXBsaWZ5LmMKLSsrKyBiL2djYy9naW1wbGlmeS5jCi1AQCAtODcsNiArODcsNyBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQotICNpbmNsdWRlICJnaW1wbGUtbG93LmgiCi0gI2luY2x1ZGUgImNpbGsuaCIKLSAjaW5jbHVkZSAiZ29tcC1jb25zdGFudHMuaCIKLSsjaW5jbHVkZSAiZmlsZS1tYXAuaCIKLSAKLSAjaW5jbHVkZSAibGFuZ2hvb2tzLWRlZi5oIgkvKiBGSVhNRTogZm9yIGxoZF9zZXRfZGVjbF9hc3NlbWJsZXJfbmFtZSAqLwotICNpbmNsdWRlICJ0cmVlLXBhc3MuaCIJCS8qIEZJWE1FOiBvbmx5IGZvciBQUk9QX2dpbXBsZV9hbnkgKi8KLUBAIC0yMzcwLDYgKzIzNzEsNyBAQCBnaW1wbGlmeV9jYWxsX2V4cHIgKHRyZWUgKmV4cHJfcCwgZ2ltcGxlX3NlcSAqcHJlX3AsIGJvb2wgd2FudF92YWx1ZSkKLSAgICAgICBjYXNlIEJVSUxUX0lOX0ZJTEU6Ci0gCXsKLSAJICBjb25zdCBjaGFyICpsb2NmaWxlID0gTE9DQVRJT05fRklMRSAoRVhQUl9MT0NBVElPTiAoKmV4cHJfcCkpOwotKwkgIGxvY2ZpbGUgPSByZW1hcF9maWxlX2ZpbGVuYW1lIChsb2NmaWxlKTsKLSAJICAqZXhwcl9wID0gYnVpbGRfc3RyaW5nX2xpdGVyYWwgKHN0cmxlbiAobG9jZmlsZSkgKyAxLCBsb2NmaWxlKTsKLSAJICByZXR1cm4gR1NfT0s7Ci0gCX0KLWRpZmYgLS1naXQgYS9saWJjcHAvTWFrZWZpbGUuaW4gYi9saWJjcHAvTWFrZWZpbGUuaW4KLWluZGV4IGFkMzU1NjMuLmMyMTBmZjkgMTAwNjQ0Ci0tLS0gYS9saWJjcHAvTWFrZWZpbGUuaW4KLSsrKyBiL2xpYmNwcC9NYWtlZmlsZS5pbgotQEAgLTg0LDEyICs4NCwxMiBAQCBERVBNT0RFID0gJChDWFhERVBNT0RFKQotIAotIAotIGxpYmNwcF9hX09CSlMgPSBjaGFyc2V0Lm8gZGlyZWN0aXZlcy5vIGRpcmVjdGl2ZXMtb25seS5vIGVycm9ycy5vIFwKLS0JZXhwci5vIGZpbGVzLm8gaWRlbnRpZmllcnMubyBpbml0Lm8gbGV4Lm8gbGluZS1tYXAubyBtYWNyby5vIFwKLS0JbWtkZXBzLm8gcGNoLm8gc3ltdGFiLm8gdHJhZGl0aW9uYWwubwotKwlleHByLm8gZmlsZS1tYXAubyBmaWxlcy5vIGlkZW50aWZpZXJzLm8gaW5pdC5vIGxleC5vIGxpbmUtbWFwLm8gXAotKwltYWNyby5vIG1rZGVwcy5vIHBjaC5vIHN5bXRhYi5vIHRyYWRpdGlvbmFsLm8KLSAKLSBsaWJjcHBfYV9TT1VSQ0VTID0gY2hhcnNldC5jIGRpcmVjdGl2ZXMuYyBkaXJlY3RpdmVzLW9ubHkuYyBlcnJvcnMuYyBcCi0tCWV4cHIuYyBmaWxlcy5jIGlkZW50aWZpZXJzLmMgaW5pdC5jIGxleC5jIGxpbmUtbWFwLmMgbWFjcm8uYyBcCi0tCW1rZGVwcy5jIHBjaC5jIHN5bXRhYi5jIHRyYWRpdGlvbmFsLmMKLSsJZXhwci5jIGZpbGUtbWFwLmMgZmlsZXMuYyBpZGVudGlmaWVycy5jIGluaXQuYyBsZXguYyBsaW5lLW1hcC5jIFwKLSsJbWFjcm8uYyBta2RlcHMuYyBwY2guYyBzeW10YWIuYyB0cmFkaXRpb25hbC5jCi0gCi0gYWxsOiBsaWJjcHAuYSAkKFVTRURfQ0FUQUxPR1MpCi0gCi1AQCAtMjYzLDcgKzI2Myw3IEBAIHBvLyQoUEFDS0FHRSkucG90OiAkKGxpYmNwcF9hX1NPVVJDRVMpCi0gCi0gVEFHU19TT1VSQ0VTID0gJChsaWJjcHBfYV9TT1VSQ0VTKSBpbnRlcm5hbC5oIHVjbmlkLmggXAotICAgICBpbmNsdWRlL2xpbmUtbWFwLmggaW5jbHVkZS9zeW10YWIuaCBpbmNsdWRlL2NwcC1pZC1kYXRhLmggXAotLSAgICBpbmNsdWRlL2NwcGxpYi5oIGluY2x1ZGUvbWtkZXBzLmggc3lzdGVtLmgKLSsgICAgaW5jbHVkZS9jcHBsaWIuaCBpbmNsdWRlL21rZGVwcy5oIHN5c3RlbS5oIGluY2x1ZGUvZmlsZS1tYXAuaAotIAotIFRBR1M6ICQoVEFHU19TT1VSQ0VTKQotIAljZCAkKHNyY2RpcikgJiYgZXRhZ3MgJChUQUdTX1NPVVJDRVMpCi1kaWZmIC0tZ2l0IGEvbGliY3BwL2ZpbGUtbWFwLmMgYi9saWJjcHAvZmlsZS1tYXAuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjA0ZTg1MWIKLS0tLSAvZGV2L251bGwKLSsrKyBiL2xpYmNwcC9maWxlLW1hcC5jCi1AQCAtMCwwICsxLDkyIEBACi0rLyogTWFwIG9uZSBkaXJlY3RvcnkgbmFtZSB0byBhbm90aGVyIGluIF9fRklMRV9fLCBfX0JBU0VfRklMRV9fCi0rICAgYW5kIF9fYnVpbHRpbl9GSUxFICgpLgotKyAgIENvcHlyaWdodCAoQykgMjAwMS0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotK1RoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCi0rRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBvciAoYXQgeW91ciBvcHRpb24pIGFueQotK2xhdGVyIHZlcnNpb24uCi0rCi0rVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLStNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLStZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotK2Fsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCi0rPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotKyBJbiBvdGhlciB3b3JkcywgeW91IGFyZSB3ZWxjb21lIHRvIHVzZSwgc2hhcmUgYW5kIGltcHJvdmUgdGhpcyBwcm9ncmFtLgotKyBZb3UgYXJlIGZvcmJpZGRlbiB0byBmb3JiaWQgYW55b25lIGVsc2UgdG8gdXNlLCBzaGFyZSBhbmQgaW1wcm92ZQotKyB3aGF0IHlvdSBnaXZlIHRoZW0uICAgSGVscCBzdGFtcCBvdXQgc29mdHdhcmUtaG9hcmRpbmchICAqLwotKwotKyNpbmNsdWRlICJjb25maWcuaCIKLSsjaW5jbHVkZSAic3lzdGVtLmgiCi0rI2luY2x1ZGUgImZpbGUtbWFwLmgiCi0rCi0rLyogU3RydWN0dXJlIHJlY29yZGluZyB0aGUgbWFwcGluZyBmcm9tIHNvdXJjZSBmaWxlIGFuZCBkaXJlY3RvcnkKLSsgICBuYW1lcyBhdCBjb21waWxlIHRpbWUgdG8gX19GSUxFX18gKi8KLSt0eXBlZGVmIHN0cnVjdCBmaWxlX3ByZWZpeF9tYXAKLSt7Ci0rICBjb25zdCBjaGFyICpvbGRfcHJlZml4OwotKyAgY29uc3QgY2hhciAqbmV3X3ByZWZpeDsKLSsgIHNpemVfdCBvbGRfbGVuOwotKyAgc2l6ZV90IG5ld19sZW47Ci0rICBzdHJ1Y3QgZmlsZV9wcmVmaXhfbWFwICpuZXh0OwotK30gZmlsZV9wcmVmaXhfbWFwOwotKwotKy8qIExpbmtlZCBsaXN0IG9mIHN1Y2ggc3RydWN0dXJlcy4gICovCi0rc3RhdGljIGZpbGVfcHJlZml4X21hcCAqZmlsZV9wcmVmaXhfbWFwczsKLSsKLSsvKiBSZWNvcmQgcHJlZml4IG1hcHBpbmcgb2YgX19GSUxFX18uICBBUkcgaXMgdGhlIGFyZ3VtZW50IHRvCi0rICAgLWZmaWxlLXByZWZpeC1tYXAgYW5kIG11c3QgYmUgb2YgdGhlIGZvcm0gT0xEPU5FVy4gICovCi0raW50Ci0rYWRkX2ZpbGVfcHJlZml4X21hcCAoY29uc3QgY2hhciAqYXJnKQotK3sKLSsgIGZpbGVfcHJlZml4X21hcCAqbWFwOwotKyAgY29uc3QgY2hhciAqcDsKLSsKLSsgIHAgPSBzdHJjaHIgKGFyZywgJz0nKTsKLSsgIGlmICghcCkKLSsgIHsKLSsgICAgICBmcHJpbnRmKHN0ZGVyciwgImludmFsaWQgYXJndW1lbnQgJXFzIHRvIC1mZmlsZS1wcmVmaXgtbWFwIiwgYXJnKTsKLSsgICAgICByZXR1cm4gLTE7Ci0rICB9Ci0rICBtYXAgPSBYTkVXIChmaWxlX3ByZWZpeF9tYXApOwotKyAgbWFwLT5vbGRfcHJlZml4ID0geHN0cm5kdXAgKGFyZywgcCAtIGFyZyk7Ci0rICBtYXAtPm9sZF9sZW4gPSBwIC0gYXJnOwotKyAgcCsrOwotKyAgbWFwLT5uZXdfcHJlZml4ID0geHN0cmR1cCAocCk7Ci0rICBtYXAtPm5ld19sZW4gPSBzdHJsZW4gKHApOwotKyAgbWFwLT5uZXh0ID0gZmlsZV9wcmVmaXhfbWFwczsKLSsgIGZpbGVfcHJlZml4X21hcHMgPSBtYXA7Ci0rCi0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogUGVyZm9ybSB1c2VyLXNwZWNpZmllZCBtYXBwaW5nIG9mIF9fRklMRV9fIHByZWZpeGVzLiAgUmV0dXJuCi0rICAgdGhlIG5ldyBuYW1lIGNvcnJlc3BvbmRpbmcgdG8gZmlsZW5hbWUuICAqLwotKwotK2NvbnN0IGNoYXIgKgotK3JlbWFwX2ZpbGVfZmlsZW5hbWUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQotK3sKLSsgIGZpbGVfcHJlZml4X21hcCAqbWFwOwotKyAgY2hhciAqczsKLSsgIGNvbnN0IGNoYXIgKm5hbWU7Ci0rICBzaXplX3QgbmFtZV9sZW47Ci0rCi0rICBmb3IgKG1hcCA9IGZpbGVfcHJlZml4X21hcHM7IG1hcDsgbWFwID0gbWFwLT5uZXh0KQotKyAgICBpZiAoZmlsZW5hbWVfbmNtcCAoZmlsZW5hbWUsIG1hcC0+b2xkX3ByZWZpeCwgbWFwLT5vbGRfbGVuKSA9PSAwKQotKyAgICAgIGJyZWFrOwotKyAgaWYgKCFtYXApCi0rICAgIHJldHVybiBmaWxlbmFtZTsKLSsgIG5hbWUgPSBmaWxlbmFtZSArIG1hcC0+b2xkX2xlbjsKLSsgIG5hbWVfbGVuID0gc3RybGVuIChuYW1lKSArIDE7Ci0rICBzID0gKGNoYXIgKikgYWxsb2NhIChuYW1lX2xlbiArIG1hcC0+bmV3X2xlbik7Ci0rICBtZW1jcHkgKHMsIG1hcC0+bmV3X3ByZWZpeCwgbWFwLT5uZXdfbGVuKTsKLSsgIG1lbWNweSAocyArIG1hcC0+bmV3X2xlbiwgbmFtZSwgbmFtZV9sZW4pOwotKwotKyAgcmV0dXJuIHhzdHJkdXAgKHMpOwotK30KLSsKLSsKLWRpZmYgLS1naXQgYS9saWJjcHAvaW5jbHVkZS9maWxlLW1hcC5oIGIvbGliY3BwL2luY2x1ZGUvZmlsZS1tYXAuaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmU2ZjhjYmYKLS0tLSAvZGV2L251bGwKLSsrKyBiL2xpYmNwcC9pbmNsdWRlL2ZpbGUtbWFwLmgKLUBAIC0wLDAgKzEsMzAgQEAKLSsvKiBNYXAgb25lIGRpcmVjdG9yeSBuYW1lIHRvIGFub3RoZXIgaW4gX19GSUxFX18sIF9fQkFTRV9GSUxFX18KLSsgICBhbmQgX19idWlsdGluX0ZJTEUgKCkuCi0rICAgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSt1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLStGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55Ci0rbGF0ZXIgdmVyc2lvbi4KLSsKLStUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLStidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotK01FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLStHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotK1lvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKLSs8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rIEluIG90aGVyIHdvcmRzLCB5b3UgYXJlIHdlbGNvbWUgdG8gdXNlLCBzaGFyZSBhbmQgaW1wcm92ZSB0aGlzIHByb2dyYW0uCi0rIFlvdSBhcmUgZm9yYmlkZGVuIHRvIGZvcmJpZCBhbnlvbmUgZWxzZSB0byB1c2UsIHNoYXJlIGFuZCBpbXByb3ZlCi0rIHdoYXQgeW91IGdpdmUgdGhlbS4gICBIZWxwIHN0YW1wIG91dCBzb2Z0d2FyZS1ob2FyZGluZyEgICovCi0rCi0rI2lmbmRlZiBMSUJDUFBfRklMRV9NQVBfSAotKyNkZWZpbmUgTElCQ1BQX0ZJTEVfTUFQX0gKLSsKLStjb25zdCBjaGFyICogcmVtYXBfZmlsZV9maWxlbmFtZSAoY29uc3QgY2hhciAqZmlsZW5hbWUpOwotKwotK2ludCBhZGRfZmlsZV9wcmVmaXhfbWFwIChjb25zdCBjaGFyICphcmcpOwotKwotKyNlbmRpZiAvKiAhTElCQ1BQX0ZJTEVfTUFQX0ggICovCi1kaWZmIC0tZ2l0IGEvbGliY3BwL21hY3JvLmMgYi9saWJjcHAvbWFjcm8uYwotaW5kZXggMWUwYTBiNS4uYzNkMzMwYyAxMDA2NDQKLS0tLSBhL2xpYmNwcC9tYWNyby5jCi0rKysgYi9saWJjcHAvbWFjcm8uYwotQEAgLTI2LDYgKzI2LDcgQEAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKLSAjaW5jbHVkZSAic3lzdGVtLmgiCi0gI2luY2x1ZGUgImNwcGxpYi5oIgotICNpbmNsdWRlICJpbnRlcm5hbC5oIgotKyNpbmNsdWRlICJmaWxlLW1hcC5oIgotIAotIHR5cGVkZWYgc3RydWN0IG1hY3JvX2FyZyBtYWNyb19hcmc7Ci0gLyogVGhpcyBzdHJ1Y3R1cmUgcmVwcmVzZW50cyB0aGUgdG9rZW5zIG9mIGEgbWFjcm8gYXJndW1lbnQuICBUaGVzZQotQEAgLTI5Nyw2ICsyOTgsNyBAQCBfY3BwX2J1aWx0aW5fbWFjcm9fdGV4dCAoY3BwX3JlYWRlciAqcGZpbGUsIGNwcF9oYXNobm9kZSAqbm9kZSkKLSAJICAgIGlmICghbmFtZSkKLSAJICAgICAgYWJvcnQgKCk7Ci0gCSAgfQotKwluYW1lID0gcmVtYXBfZmlsZV9maWxlbmFtZSAobmFtZSk7Ci0gCWxlbiA9IHN0cmxlbiAobmFtZSk7Ci0gCWJ1ZiA9IF9jcHBfdW5hbGlnbmVkX2FsbG9jIChwZmlsZSwgbGVuICogMiArIDMpOwotIAlyZXN1bHQgPSBidWY7Ci0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA1NS1SZXVzZS1mZGVidWctcHJlZml4LW1hcC10by1yZXBsYWNlLWZmaWxlLXByZWZpeC1tYXAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNTUtUmV1c2UtZmRlYnVnLXByZWZpeC1tYXAtdG8tcmVwbGFjZS1mZmlsZS1wcmVmaXgtbWFwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjN2NhZWQ4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA1NS1SZXVzZS1mZGVidWctcHJlZml4LW1hcC10by1yZXBsYWNlLWZmaWxlLXByZWZpeC1tYXAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1Gcm9tIDE0Yjc5NjQxZmY2YjAwMDhhZWY3ZmJmN2FhMzAwZGFlYzExZDFlNzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBXZWQsIDE2IE1hciAyMDE2IDA1OjM5OjU5IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIFJldXNlIC1mZGVidWctcHJlZml4LW1hcCB0byByZXBsYWNlIC1mZmlsZS1wcmVmaXgtbWFwCi0KLVRoZSBvZS1jb3JlIG1heSB1c2UgZXh0ZXJuYWwgdG9vbGNoYWluIHRvIGNvbXBpbGUsCi13aGljaCBtYXkgbm90IHN1cHBvcnQgLWZmaWxlLXByZWZpeC1tYXAuCi0KLVNpbmNlIHdlIHVzZSAtZmRlYnVnLXByZWZpeC1tYXAgdG8gZG8gdGhlIHNhbWUgdGhpbmcsCi1zbyB3ZSBjb3VsZCByZXVzZSBpdCB0byByZXBsYWNlIC1mZmlsZS1wcmVmaXgtbWFwLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGVbb2UtY29yZSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gZ2NjL29wdHMtZ2xvYmFsLmMgfCA0ICsrKysKLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9nY2Mvb3B0cy1nbG9iYWwuYyBiL2djYy9vcHRzLWdsb2JhbC5jCi1pbmRleCBiNjFiZGNmLi41MWJiMTc3IDEwMDY0NAotLS0tIGEvZ2NjL29wdHMtZ2xvYmFsLmMKLSsrKyBiL2djYy9vcHRzLWdsb2JhbC5jCi1AQCAtNTAsNiArNTAsNyBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQotICNpbmNsdWRlICJydGwuaCIKLSAjaW5jbHVkZSAiZGJnY250LmgiCi0gI2luY2x1ZGUgImRlYnVnLmgiCi0rI2luY2x1ZGUgImZpbGUtbWFwLmgiCi0gI2luY2x1ZGUgImhhc2gtbWFwLmgiCi0gI2luY2x1ZGUgInBsdWdpbi1hcGkuaCIKLSAjaW5jbHVkZSAiaXBhLXJlZi5oIgotQEAgLTM3OCw2ICszNzksOSBAQCBoYW5kbGVfY29tbW9uX2RlZmVycmVkX29wdGlvbnMgKHZvaWQpCi0gCi0gCWNhc2UgT1BUX2ZkZWJ1Z19wcmVmaXhfbWFwXzoKLSAJICBhZGRfZGVidWdfcHJlZml4X21hcCAob3B0LT5hcmcpOwotKwotKwkgIC8qIFJldXNlIC1mZGVidWctcHJlZml4LW1hcCB0byByZXBsYWNlIC1mZmlsZS1wcmVmaXgtbWFwICovCi0rCSAgYWRkX2ZpbGVfcHJlZml4X21hcCAob3B0LT5hcmcpOwotIAkgIGJyZWFrOwotIAotIAljYXNlIE9QVF9mZHVtcF86Ci0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA1Ni1FbmFibGUtbGliYy1wcm92aWRlLXNzcC1hbmQtZ2NjX2N2X3RhcmdldF9kbF9pdGVyYXRlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDU2LUVuYWJsZS1saWJjLXByb3ZpZGUtc3NwLWFuZC1nY2NfY3ZfdGFyZ2V0X2RsX2l0ZXJhdGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3OTEzNDIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC8wMDU2LUVuYWJsZS1saWJjLXByb3ZpZGUtc3NwLWFuZC1nY2NfY3ZfdGFyZ2V0X2RsX2l0ZXJhdGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBACi1Gcm9tIDVjN2JkODUzYzg3MDNmNjU5MDQwODM3Nzg3MTJlZjYyNWMzZjM4MTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU3VuLCAyNyBNYXIgMjAxNiAyMDozMTo1MCAtMDcwMAotU3ViamVjdDogW1BBVENIIDU2LzU3XSBFbmFibGUgbGliYyBwcm92aWRlIHNzcCBhbmQKLSBnY2NfY3ZfdGFyZ2V0X2RsX2l0ZXJhdGVfcGhkciBmb3IgbXVzbAotCi0gICAgICAgICogY29uZmlndXJlLmFjIChnY2NfY3ZfbGliY19wcm92aWRlc19zc3ApOiBBZGQgKi0qLW11c2wqLgotICAgICAgICAoZ2NjX2N2X3RhcmdldF9kbF9pdGVyYXRlX3BoZHIpOiBBZGQgKi1saW51eC1tdXNsKi4KLSAgICAgICAgKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotIGdjYy9jb25maWd1cmUgICAgfCA3ICsrKysrKysKLSBnY2MvY29uZmlndXJlLmFjIHwgNyArKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlIGIvZ2NjL2NvbmZpZ3VyZQotaW5kZXggZmNiMDVlNy4uODFhNDQ5YyAxMDA3NTUKLS0tLSBhL2djYy9jb25maWd1cmUKLSsrKyBiL2djYy9jb25maWd1cmUKLUBAIC0yNzgxNCw2ICsyNzgxNCw5IEBAIGlmIHRlc3QgIiR7Z2NjX2N2X2xpYmNfcHJvdmlkZXNfc3NwK3NldH0iID0gc2V0OyB0aGVuIDoKLSBlbHNlCi0gICBnY2NfY3ZfbGliY19wcm92aWRlc19zc3A9bm8KLSAgICAgY2FzZSAiJHRhcmdldCIgaW4KLSsgICAgICAgKi0qLW11c2wqKQotKyAgICAgICAgIyBBbGwgdmVyc2lvbnMgb2YgbXVzbCBwcm92aWRlIHN0YWNrIHByb3RlY3RvcgotKyAgICAgICAgZ2NjX2N2X2xpYmNfcHJvdmlkZXNfc3NwPXllczs7Ci0gICAgICAgICotKi1saW51eCogfCAqLSota2ZyZWVic2QqLWdudSB8ICotKi1rbmV0YnNkKi1nbnUpCi0gICAgICAgIyBnbGliYyAyLjQgYW5kIGxhdGVyIHByb3ZpZGVzIF9fc3RhY2tfY2hrX2ZhaWwgYW5kCi0gICAgICAgIyBlaXRoZXIgX19zdGFja19jaGtfZ3VhcmQsIG9yIFRMUyBhY2Nlc3MgdG8gc3RhY2sgZ3VhcmQgY2FuYXJ5LgotQEAgLTI3ODQ2LDYgKzI3ODQ5LDcgQEAgZmkKLSAJICMgPGh0dHA6Ly9nY2MuZ251Lm9yZy9tbC9nY2MvMjAwOC0xMC9tc2cwMDEzMC5odG1sPikgYW5kIGZvciBub3cKLSAJICMgc2ltcGx5IGFzc2VydCB0aGF0IGdsaWJjIGRvZXMgcHJvdmlkZSB0aGlzLCB3aGljaCBpcyB0cnVlIGZvciBhbGwKLSAJICMgcmVhbGlzdGljYWxseSB1c2FibGUgR05VL0h1cmQgY29uZmlndXJhdGlvbnMuCi0rCSAjIEFsbCBzdXBwb3J0ZWQgdmVyc2lvbnMgb2YgbXVzbCBwcm92aWRlIGl0IGFzIHdlbGwKLSAJIGdjY19jdl9saWJjX3Byb3ZpZGVzX3NzcD15ZXM7OwotICAgICAgICAqLSotZGFyd2luKiB8ICotKi1mcmVlYnNkKikKLSAJIGFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIl9fc3RhY2tfY2hrX2ZhaWwiICJhY19jdl9mdW5jX19fc3RhY2tfY2hrX2ZhaWwiCi1AQCAtMjc5NDIsNiArMjc5NDYsOSBAQCBjYXNlICIkdGFyZ2V0IiBpbgotICAgICAgIGdjY19jdl90YXJnZXRfZGxfaXRlcmF0ZV9waGRyPW5vCi0gICAgIGZpCi0gICAgIDs7Ci0rICAqLWxpbnV4LW11c2wqKQotKyAgICBnY2NfY3ZfdGFyZ2V0X2RsX2l0ZXJhdGVfcGhkcj15ZXMKLSsgICAgOzsKLSBlc2FjCi0gCi0gaWYgdGVzdCB4JGdjY19jdl90YXJnZXRfZGxfaXRlcmF0ZV9waGRyID0geHllczsgdGhlbgotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUuYWMgYi9nY2MvY29uZmlndXJlLmFjCi1pbmRleCA5MjNiYzlhLi5iMDhlM2RjIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZ3VyZS5hYwotKysrIGIvZ2NjL2NvbmZpZ3VyZS5hYwotQEAgLTUyOTEsNiArNTI5MSw5IEBAIEFDX0NBQ0hFX0NIRUNLKF9fc3RhY2tfY2hrX2ZhaWwgaW4gdGFyZ2V0IEMgbGlicmFyeSwKLSAgICAgICBnY2NfY3ZfbGliY19wcm92aWRlc19zc3AsCi0gICAgICAgW2djY19jdl9saWJjX3Byb3ZpZGVzX3NzcD1ubwotICAgICBjYXNlICIkdGFyZ2V0IiBpbgotKyAgICAgICAqLSotbXVzbCopCi0rICAgICAgICAjIEFsbCB2ZXJzaW9ucyBvZiBtdXNsIHByb3ZpZGUgc3RhY2sgcHJvdGVjdG9yCi0rICAgICAgICBnY2NfY3ZfbGliY19wcm92aWRlc19zc3A9eWVzOzsKLSAgICAgICAgKi0qLWxpbnV4KiB8ICotKi1rZnJlZWJzZCotZ251IHwgKi0qLWtuZXRic2QqLWdudSkKLSAgICAgICAjIGdsaWJjIDIuNCBhbmQgbGF0ZXIgcHJvdmlkZXMgX19zdGFja19jaGtfZmFpbCBhbmQKLSAgICAgICAjIGVpdGhlciBfX3N0YWNrX2Noa19ndWFyZCwgb3IgVExTIGFjY2VzcyB0byBzdGFjayBndWFyZCBjYW5hcnkuCi1AQCAtNTMxNyw2ICs1MzIwLDcgQEAgQUNfQ0FDSEVfQ0hFQ0soX19zdGFja19jaGtfZmFpbCBpbiB0YXJnZXQgQyBsaWJyYXJ5LAotIAkgIyA8aHR0cDovL2djYy5nbnUub3JnL21sL2djYy8yMDA4LTEwL21zZzAwMTMwLmh0bWw+KSBhbmQgZm9yIG5vdwotIAkgIyBzaW1wbHkgYXNzZXJ0IHRoYXQgZ2xpYmMgZG9lcyBwcm92aWRlIHRoaXMsIHdoaWNoIGlzIHRydWUgZm9yIGFsbAotIAkgIyByZWFsaXN0aWNhbGx5IHVzYWJsZSBHTlUvSHVyZCBjb25maWd1cmF0aW9ucy4KLSsJICMgQWxsIHN1cHBvcnRlZCB2ZXJzaW9ucyBvZiBtdXNsIHByb3ZpZGUgaXQgYXMgd2VsbAotIAkgZ2NjX2N2X2xpYmNfcHJvdmlkZXNfc3NwPXllczs7Ci0gICAgICAgICotKi1kYXJ3aW4qIHwgKi0qLWZyZWVic2QqKQotIAkgQUNfQ0hFQ0tfRlVOQyhfX3N0YWNrX2Noa19mYWlsLFtnY2NfY3ZfbGliY19wcm92aWRlc19zc3A9eWVzXSwKLUBAIC01MzkwLDYgKzUzOTQsOSBAQCBjYXNlICIkdGFyZ2V0IiBpbgotICAgICAgIGdjY19jdl90YXJnZXRfZGxfaXRlcmF0ZV9waGRyPW5vCi0gICAgIGZpCi0gICAgIDs7Ci0rICAqLWxpbnV4LW11c2wqKQotKyAgICBnY2NfY3ZfdGFyZ2V0X2RsX2l0ZXJhdGVfcGhkcj15ZXMKLSsgICAgOzsKLSBlc2FjCi0gR0NDX1RBUkdFVF9URU1QTEFURShbVEFSR0VUX0RMX0lURVJBVEVfUEhEUl0pCi0gaWYgdGVzdCB4JGdjY19jdl90YXJnZXRfZGxfaXRlcmF0ZV9waGRyID0geHllczsgdGhlbgotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNTctdW53aW5kLWZpeC1mb3ItbXVzbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA1Ny11bndpbmQtZml4LWZvci1tdXNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMTkzNTg3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA1Ny11bndpbmQtZml4LWZvci1tdXNsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotRnJvbSBjNWMzM2JmODgxYTJhZWEzNTUzMTBkZDkwODczZWQzOWJjMjcyYjNjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbToga3RrYWNob3YgPGt0a2FjaG92QDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhND4KLURhdGU6IFdlZCwgMjIgQXByIDIwMTUgMTQ6MjA6MDEgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCA1Ny81N10gdW53aW5kIGZpeCBmb3IgbXVzbAotCi1PbiBiZWhhbGYgb2Ygc3phYm9sY3MubmFneUBhcm0uY29tCi0KLTIwMTUtMDQtMjIgIEdyZWdvciBSaWNoYXJkcyAgPGdyZWdvci5yaWNoYXJkc0B1d2F0ZXJsb28uY2E+Ci0JICAgIFN6YWJvbGNzIE5hZ3kgIDxzemFib2xjcy5uYWd5QGFybS5jb20+Ci0KLQkqIHVud2luZC1kdzItZmRlLWRpcC5jIChVU0VfUFRfR05VX0VIX0ZSQU1FKTogRGVmaW5lIGl0IG9uCi0JTGludXggaWYgdGFyZ2V0IHByb3ZpZGVzIGRsX2l0ZXJhdGVfcGhkci4KLQotZ2l0LXN2bi1pZDogc3ZuK3NzaDovL2djYy5nbnUub3JnL3N2bi9nY2MvdHJ1bmtAMjIyMzI4IDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhNAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLSBsaWJnY2MvdW53aW5kLWR3Mi1mZGUtZGlwLmMgfCA2ICsrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2xpYmdjYy91bndpbmQtZHcyLWZkZS1kaXAuYyBiL2xpYmdjYy91bndpbmQtZHcyLWZkZS1kaXAuYwotaW5kZXggZTFlNTY2Yi4uMTM3ZGNlZCAxMDA2NDQKLS0tLSBhL2xpYmdjYy91bndpbmQtZHcyLWZkZS1kaXAuYwotKysrIGIvbGliZ2NjL3Vud2luZC1kdzItZmRlLWRpcC5jCi1AQCAtNTksNiArNTksMTIgQEAKLSAKLSAjaWYgIWRlZmluZWQoaW5oaWJpdF9saWJjKSAmJiBkZWZpbmVkKEhBVkVfTERfRUhfRlJBTUVfSERSKSBcCi0gICAgICYmIGRlZmluZWQoVEFSR0VUX0RMX0lURVJBVEVfUEhEUikgXAotKyAgICAmJiBkZWZpbmVkKF9fbGludXhfXykKLSsjIGRlZmluZSBVU0VfUFRfR05VX0VIX0ZSQU1FCi0rI2VuZGlmCi0rCi0rI2lmICFkZWZpbmVkKGluaGliaXRfbGliYykgJiYgZGVmaW5lZChIQVZFX0xEX0VIX0ZSQU1FX0hEUikgXAotKyAgICAmJiBkZWZpbmVkKFRBUkdFVF9ETF9JVEVSQVRFX1BIRFIpIFwKLSAgICAgJiYgKGRlZmluZWQoX19EcmFnb25GbHlfXykgfHwgZGVmaW5lZChfX0ZyZWVCU0RfXykpCi0gIyBkZWZpbmUgRWxmVyBfX0VsZk4KLSAjIGRlZmluZSBVU0VfUFRfR05VX0VIX0ZSQU1FCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA1OC1mZGVidWctcHJlZml4LW1hcC1zdXBwb3J0LXRvLXJlbWFwLXJlbGF0aXZlLXBhdGgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNTgtZmRlYnVnLXByZWZpeC1tYXAtc3VwcG9ydC10by1yZW1hcC1yZWxhdGl2ZS1wYXRoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYjkxZmRiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA1OC1mZGVidWctcHJlZml4LW1hcC1zdXBwb3J0LXRvLXJlbWFwLXJlbGF0aXZlLXBhdGgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1Gcm9tIDI4OWFkMjk2OWE1OTY2YzYwM2JmNjkyOGNlNDQyZGI3NGM0Y2JiMjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUaHUsIDI0IE1hciAyMDE2IDExOjIzOjE0IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGdjYy9maW5hbC5jOiAtZmRlYnVnLXByZWZpeC1tYXAgc3VwcG9ydCB0byByZW1hcCBzb3VyY2VzIHdpdGgKLSByZWxhdGl2ZSBwYXRoCi0KLVBSIG90aGVyLzcwNDI4Ci0qIGZpbmFsLmMgKHJlbWFwX2RlYnVnX2ZpbGVuYW1lKTogVXNlIGxyZWFscGF0aCB0byB0cmFuc2xhdGUKLXJlbGF0aXZlIHBhdGggYmVmb3JlIHJlbWFwcGluZwotCi1odHRwczovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD03MDQyOAotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2djYy1wYXRjaGVzQGdjYy5nbnUub3JnXQotCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLWRpZmYgLS1naXQgYS9nY2MvZmluYWwuYyBiL2djYy9maW5hbC5jCi1pbmRleCA1NWNmNTA5Li5jMzU5NGMyIDEwMDY0NAotLS0tIGEvZ2NjL2ZpbmFsLmMKLSsrKyBiL2djYy9maW5hbC5jCi1AQCAtMTU1NCwxNiArMTU1NCwyNSBAQCByZW1hcF9kZWJ1Z19maWxlbmFtZSAoY29uc3QgY2hhciAqZmlsZW5hbWUpCi0gICBjb25zdCBjaGFyICpuYW1lOwotICAgc2l6ZV90IG5hbWVfbGVuOwotIAotKyAgLyogU3VwcG9ydCB0byByZW1hcCBmaWxlbmFtZSB3aXRoIHJlbGF0aXZlIHBhdGggICovCi0rICBjaGFyICpyZWFscGF0aCA9IGxyZWFscGF0aCAoZmlsZW5hbWUpOwotKyAgaWYgKHJlYWxwYXRoID09IE5VTEwpCi0rICAgIHJldHVybiBmaWxlbmFtZTsKLSsKLSAgIGZvciAobWFwID0gZGVidWdfcHJlZml4X21hcHM7IG1hcDsgbWFwID0gbWFwLT5uZXh0KQotLSAgICBpZiAoZmlsZW5hbWVfbmNtcCAoZmlsZW5hbWUsIG1hcC0+b2xkX3ByZWZpeCwgbWFwLT5vbGRfbGVuKSA9PSAwKQotKyAgICBpZiAoZmlsZW5hbWVfbmNtcCAocmVhbHBhdGgsIG1hcC0+b2xkX3ByZWZpeCwgbWFwLT5vbGRfbGVuKSA9PSAwKQotICAgICAgIGJyZWFrOwotICAgaWYgKCFtYXApCi0tICAgIHJldHVybiBmaWxlbmFtZTsKLS0gIG5hbWUgPSBmaWxlbmFtZSArIG1hcC0+b2xkX2xlbjsKLSsgICAgewotKyAgICAgIGZyZWUgKHJlYWxwYXRoKTsKLSsgICAgICByZXR1cm4gZmlsZW5hbWU7Ci0rICAgIH0KLSsgIG5hbWUgPSByZWFscGF0aCArIG1hcC0+b2xkX2xlbjsKLSAgIG5hbWVfbGVuID0gc3RybGVuIChuYW1lKSArIDE7Ci0gICBzID0gKGNoYXIgKikgYWxsb2NhIChuYW1lX2xlbiArIG1hcC0+bmV3X2xlbik7Ci0gICBtZW1jcHkgKHMsIG1hcC0+bmV3X3ByZWZpeCwgbWFwLT5uZXdfbGVuKTsKLSAgIG1lbWNweSAocyArIG1hcC0+bmV3X2xlbiwgbmFtZSwgbmFtZV9sZW4pOwotKyAgZnJlZSAocmVhbHBhdGgpOwotICAgcmV0dXJuIGdnY19zdHJkdXAgKHMpOwotIH0KLSAMCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA1OS1saWJnY2MtdXNlLWxkZmxhZ3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40LzAwNTktbGliZ2NjLXVzZS1sZGZsYWdzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMjViNzJhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy01LjQvMDA1OS1saWJnY2MtdXNlLWxkZmxhZ3MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1MaW5rIGxpYmdjYyB1c2luZyBMREZMQUdTLCBub3QganVzdCBTSExJQl9MREZMQUdTCi0KLVNpZ25lZC1vZmYtYnk6IENocmlzdG9waGVyIExhcnNvbiA8Y2hyaXNfbGFyc29uQG1lbnRvci5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotLS0tIGdjYy01LjMuMC5vcmlnL2xpYmdjYy9jb25maWcvdC1zbGliZ2NjCi0rKysgZ2NjLTUuMy4wL2xpYmdjYy9jb25maWcvdC1zbGliZ2NjCi1AQCAtMzIsNyArMzIsNyBAQCBTSExJQl9JTlNUQUxMX1NPTElOSyA9ICQoTE5fUykgJChTSExJQl9TCi0gCSQoREVTVERJUikkKHNsaWJkaXIpJChTSExJQl9TTElCRElSX1FVQUwpLyQoU0hMSUJfU09MSU5LKQotIAotIFNITElCX0xJTksgPSAkKENDKSAkKExJQkdDQzJfQ0ZMQUdTKSAtc2hhcmVkIC1ub2RlZmF1bHRsaWJzIFwKLS0JJChTSExJQl9MREZMQUdTKSBcCi0rCSQoTERGTEFHUykgJChTSExJQl9MREZMQUdTKSBcCi0gCS1vICQoU0hMSUJfRElSKS8kKFNITElCX1NPTkFNRSkudG1wIEBtdWx0aWxpYl9mbGFnc0AgXAotIAkkKFNITElCX09CSlMpICQoU0hMSUJfTEMpICYmIFwKLSAJcm0gLWYgJChTSExJQl9ESVIpLyQoU0hMSUJfU09MSU5LKSAmJiBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40L0NWRS0yMDE2LTYxMzEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNS40L0NWRS0yMDE2LTYxMzEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4NTI0YzMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTUuNC9DVkUtMjAxNi02MTMxLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjUxICswLDAgQEAKLUZyb20gYjNmNmIzMjE2NWQzZjQzN2JkMGFjNjI2OWMzYzQ5OWI2OGVjZjAzNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGxhdyA8bGF3QDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhND4KLURhdGU6IFRodSwgNCBBdWcgMjAxNiAxNjo1MzoxOCArMDAwMAotU3ViamVjdDogW1BBVENIXSBGaXggZm9yIFBSNzE2OTYgaW4gTGliaWJlcnR5IERlbWFuZ2xlcgotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1bQlogIzcxNjk2XSAtLSBodHRwczovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD03MTY5NgotCi0yMDE2LTA4LTA0ICBNYXJjZWwgQsO2aG1lICA8Ym9laG1lLm1hcmNlbEBnbWFpbC5jb20+Ci0KLQlQUiBjKysvNzE2OTYKLQkqIGNwbHVzLWRlbS5jOiBQcmV2ZW50IGluZmluaXRlIHJlY3Vyc2lvbiB3aGVuIHRoZXJlIGlzIGEgY3ljbGUKLQlpbiB0aGUgcmVmZXJlbmNpbmcgb2YgcmVtZW1iZXJlZCBtYW5nbGVkIHR5cGVzLgotCSh3b3JrX3N0dWZmKTogTmV3IHN0YWNrIHRvIGtlZXAgdHJhY2sgb2YgdGhlIHJlbWVtYmVyZWQgbWFuZ2xlZAotCXR5cGVzIHRoYXQgYXJlIGN1cnJlbnRseSBiZWluZyBwcm9jZXNzZWQuCi0JKHB1c2hfcHJvY2Vzc2VkX3R5cGUpOiBOZXcgbWV0aG9kIHRvIHB1c2ggY3VycmVudGx5IHByb2Nlc3NlZAotCXJlbWVtYmVyZWQgdHlwZSBvbnRvIHRoZSBzdGFjay4KLQkocG9wX3Byb2Nlc3NlZF90eXBlKTogTmV3IG1ldGhvZCB0byBwb3AgY3VycmVudGx5IHByb2Nlc3NlZAotCXJlbWVtYmVyZWQgdHlwZSBmcm9tIHRoZSBzdGFjay4KLQkod29ya19zdHVmZl9jb3B5X3RvX2Zyb20pOiBDb3B5IHZhbHVlcyBvZiBuZXcgdmFyaWFibGVzLgotCShkZWxldGVfbm9uX0JfS193b3JrX3N0dWZmKTogRnJlZSBzdGFjayBtZW1vcnkuCi0JKGRlbWFuZ2xlX2FyZ3MpOiBQdXNoL1BvcCBjdXJyZW50bHkgcHJvY2Vzc2VkIHJlbWVtYmVyZWQgdHlwZS4KLQkoZG9fdHlwZSk6IERvIG5vdCBkZW1hbmdsZSBhIGN5Y2xpYyByZWZlcmVuY2UgYW5kIHB1c2gvcG9wCi0JcmVmZXJlbmNlZCByZW1lbWJlcmVkIHR5cGUuCi0KLWNoZXJyeS1waWNrZWQgZnJvbSBjb21taXQgb2YKLWdpdC1zdm4taWQ6IHN2bitzc2g6Ly9nY2MuZ251Lm9yZy9zdm4vZ2NjL3RydW5rQDIzOTE0MyAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbbWFzdGVyXQotQ1ZFOiBDVkUtMjAxNi02MTMxCi1TaWduZWQtb2ZmLWJ5OiBZdWFuamllIEh1YW5nIDx5dWFuamllLmh1YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWJpYmVydHkvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgIHwgMTcgKysrKysrKysKLSBsaWJpYmVydHkvY3BsdXMtZGVtLmMgICAgICAgICAgICAgICAgIHwgNzggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0KLSBsaWJpYmVydHkvdGVzdHN1aXRlL2RlbWFuZ2xlLWV4cGVjdGVkIHwgMTggKysrKysrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDEwOCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliaWJlcnR5L0NoYW5nZUxvZyBiL2xpYmliZXJ0eS9DaGFuZ2VMb2cKLWluZGV4IDk4NTlhZDMuLjc5Mzk0ODAgMTAwNjQ0Ci0tLS0gYS9saWJpYmVydHkvQ2hhbmdlTG9nCi0rKysgYi9saWJpYmVydHkvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDIwIEBACi0rMjAxNi0wOC0wNCAgTWFyY2VsIELDtmhtZSAgPGJvZWhtZS5tYXJjZWxAZ21haWwuY29tPgotKwotKwlQUiBjKysvNzE2OTYKLSsJKiBjcGx1cy1kZW0uYzogUHJldmVudCBpbmZpbml0ZSByZWN1cnNpb24gd2hlbiB0aGVyZSBpcyBhIGN5Y2xlCi0rCWluIHRoZSByZWZlcmVuY2luZyBvZiByZW1lbWJlcmVkIG1hbmdsZWQgdHlwZXMuCi0rCSh3b3JrX3N0dWZmKTogTmV3IHN0YWNrIHRvIGtlZXAgdHJhY2sgb2YgdGhlIHJlbWVtYmVyZWQgbWFuZ2xlZAotKwl0eXBlcyB0aGF0IGFyZSBjdXJyZW50bHkgYmVpbmcgcHJvY2Vzc2VkLgotKwkocHVzaF9wcm9jZXNzZWRfdHlwZSk6IE5ldyBtZXRob2QgdG8gcHVzaCBjdXJyZW50bHkgcHJvY2Vzc2VkCi0rCXJlbWVtYmVyZWQgdHlwZSBvbnRvIHRoZSBzdGFjay4KLSsJKHBvcF9wcm9jZXNzZWRfdHlwZSk6IE5ldyBtZXRob2QgdG8gcG9wIGN1cnJlbnRseSBwcm9jZXNzZWQKLSsJcmVtZW1iZXJlZCB0eXBlIGZyb20gdGhlIHN0YWNrLgotKwkod29ya19zdHVmZl9jb3B5X3RvX2Zyb20pOiBDb3B5IHZhbHVlcyBvZiBuZXcgdmFyaWFibGVzLgotKwkoZGVsZXRlX25vbl9CX0tfd29ya19zdHVmZik6IEZyZWUgc3RhY2sgbWVtb3J5LgotKwkoZGVtYW5nbGVfYXJncyk6IFB1c2gvUG9wIGN1cnJlbnRseSBwcm9jZXNzZWQgcmVtZW1iZXJlZCB0eXBlLgotKwkoZG9fdHlwZSk6IERvIG5vdCBkZW1hbmdsZSBhIGN5Y2xpYyByZWZlcmVuY2UgYW5kIHB1c2gvcG9wCi0rCXJlZmVyZW5jZWQgcmVtZW1iZXJlZCB0eXBlLgotKwotIDIwMTYtMDYtMDMgIFJlbGVhc2UgTWFuYWdlcgotIAotIAkqIEdDQyA1LjQuMCByZWxlYXNlZC4KLWRpZmYgLS1naXQgYS9saWJpYmVydHkvY3BsdXMtZGVtLmMgYi9saWJpYmVydHkvY3BsdXMtZGVtLmMKLWluZGV4IDc1MTRlNTcuLmYyMWU2MzAgMTAwNjQ0Ci0tLS0gYS9saWJpYmVydHkvY3BsdXMtZGVtLmMKLSsrKyBiL2xpYmliZXJ0eS9jcGx1cy1kZW0uYwotQEAgLTE0NCw2ICsxNDQsOSBAQCBzdHJ1Y3Qgd29ya19zdHVmZgotICAgc3RyaW5nKiBwcmV2aW91c19hcmd1bWVudDsgLyogVGhlIGxhc3QgZnVuY3Rpb24gYXJndW1lbnQgZGVtYW5nbGVkLiAgKi8KLSAgIGludCBucmVwZWF0czsgICAgICAgICAvKiBUaGUgbnVtYmVyIG9mIHRpbWVzIHRvIHJlcGVhdCB0aGUgcHJldmlvdXMKLSAJCQkgICBhcmd1bWVudC4gICovCi0rICBpbnQgKnByb2N0eXBldmVjOyAgICAgLyogSW5kaWNlcyBvZiBjdXJyZW50bHkgcHJvY2Vzc2VkIHJlbWVtYmVyZWQgdHlwZXZlY3MuICAqLwotKyAgaW50IHByb2N0eXBldmVjX3NpemU7Ci0rICBpbnQgbnByb2N0eXBlczsKLSB9OwotIAotICNkZWZpbmUgUFJJTlRfQU5TSV9RVUFMSUZJRVJTICh3b3JrIC0+IG9wdGlvbnMgJiBETUdMX0FOU0kpCi1AQCAtNDM1LDYgKzQzOCwxMCBAQCBpdGVyYXRlX2RlbWFuZ2xlX2Z1bmN0aW9uIChzdHJ1Y3Qgd29ya19zdHVmZiAqLAotIAotIHN0YXRpYyB2b2lkIHJlbWVtYmVyX3R5cGUgKHN0cnVjdCB3b3JrX3N0dWZmICosIGNvbnN0IGNoYXIgKiwgaW50KTsKLSAKLStzdGF0aWMgdm9pZCBwdXNoX3Byb2Nlc3NlZF90eXBlIChzdHJ1Y3Qgd29ya19zdHVmZiAqLCBpbnQpOwotKwotK3N0YXRpYyB2b2lkIHBvcF9wcm9jZXNzZWRfdHlwZSAoc3RydWN0IHdvcmtfc3R1ZmYgKik7Ci0rCi0gc3RhdGljIHZvaWQgcmVtZW1iZXJfQnR5cGUgKHN0cnVjdCB3b3JrX3N0dWZmICosIGNvbnN0IGNoYXIgKiwgaW50LCBpbnQpOwotIAotIHN0YXRpYyBpbnQgcmVnaXN0ZXJfQnR5cGUgKHN0cnVjdCB3b3JrX3N0dWZmICopOwotQEAgLTEzMDEsNiArMTMwOCwxMCBAQCB3b3JrX3N0dWZmX2NvcHlfdG9fZnJvbSAoc3RydWN0IHdvcmtfc3R1ZmYgKnRvLCBzdHJ1Y3Qgd29ya19zdHVmZiAqZnJvbSkKLSAgICAgICBtZW1jcHkgKHRvLT5idHlwZXZlY1tpXSwgZnJvbS0+YnR5cGV2ZWNbaV0sIGxlbik7Ci0gICAgIH0KLSAKLSsgIGlmIChmcm9tLT5wcm9jdHlwZXZlYykKLSsgICAgdG8tPnByb2N0eXBldmVjID0KLSsgICAgICBYRFVQVkVDIChpbnQsIGZyb20tPnByb2N0eXBldmVjLCBmcm9tLT5wcm9jdHlwZXZlY19zaXplKTsKLSsKLSAgIGlmIChmcm9tLT5udG1wbF9hcmdzKQotICAgICB0by0+dG1wbF9hcmd2ZWMgPSBYTkVXVkVDIChjaGFyICosIGZyb20tPm50bXBsX2FyZ3MpOwotIAotQEAgLTEzMjksMTEgKzEzNDAsMTcgQEAgZGVsZXRlX25vbl9CX0tfd29ya19zdHVmZiAoc3RydWN0IHdvcmtfc3R1ZmYgKndvcmspCi0gICAvKiBEaXNjYXJkIHRoZSByZW1lbWJlcmVkIHR5cGVzLCBpZiBhbnkuICAqLwotIAotICAgZm9yZ2V0X3R5cGVzICh3b3JrKTsKLS0gIGlmICh3b3JrIC0+IHR5cGV2ZWMgIT0gTlVMTCkKLSsgIGlmICh3b3JrLT50eXBldmVjICE9IE5VTEwpCi0gICAgIHsKLS0gICAgICBmcmVlICgoY2hhciAqKSB3b3JrIC0+IHR5cGV2ZWMpOwotLSAgICAgIHdvcmsgLT4gdHlwZXZlYyA9IE5VTEw7Ci0tICAgICAgd29yayAtPiB0eXBldmVjX3NpemUgPSAwOwotKyAgICAgIGZyZWUgKChjaGFyICopIHdvcmstPnR5cGV2ZWMpOwotKyAgICAgIHdvcmstPnR5cGV2ZWMgPSBOVUxMOwotKyAgICAgIHdvcmstPnR5cGV2ZWNfc2l6ZSA9IDA7Ci0rICAgIH0KLSsgIGlmICh3b3JrLT5wcm9jdHlwZXZlYyAhPSBOVUxMKQotKyAgICB7Ci0rICAgICAgZnJlZSAod29yay0+cHJvY3R5cGV2ZWMpOwotKyAgICAgIHdvcmstPnByb2N0eXBldmVjID0gTlVMTDsKLSsgICAgICB3b3JrLT5wcm9jdHlwZXZlY19zaXplID0gMDsKLSAgICAgfQotICAgaWYgKHdvcmstPnRtcGxfYXJndmVjKQotICAgICB7Ci1AQCAtMzU1Miw2ICszNTY5LDggQEAgc3RhdGljIGludAotIGRvX3R5cGUgKHN0cnVjdCB3b3JrX3N0dWZmICp3b3JrLCBjb25zdCBjaGFyICoqbWFuZ2xlZCwgc3RyaW5nICpyZXN1bHQpCi0gewotICAgaW50IG47Ci0rICBpbnQgaTsKLSsgIGludCBpc19wcm9jdHlwZXZlYzsKLSAgIGludCBkb25lOwotICAgaW50IHN1Y2Nlc3M7Ci0gICBzdHJpbmcgZGVjbDsKLUBAIC0zNTY0LDYgKzM1ODMsNyBAQCBkb190eXBlIChzdHJ1Y3Qgd29ya19zdHVmZiAqd29yaywgY29uc3QgY2hhciAqKm1hbmdsZWQsIHN0cmluZyAqcmVzdWx0KQotIAotICAgZG9uZSA9IDA7Ci0gICBzdWNjZXNzID0gMTsKLSsgIGlzX3Byb2N0eXBldmVjID0gMDsKLSAgIHdoaWxlIChzdWNjZXNzICYmICFkb25lKQotICAgICB7Ci0gICAgICAgaW50IG1lbWJlcjsKLUBAIC0zNjE2LDggKzM2MzYsMTUgQEAgZG9fdHlwZSAoc3RydWN0IHdvcmtfc3R1ZmYgKndvcmssIGNvbnN0IGNoYXIgKiptYW5nbGVkLCBzdHJpbmcgKnJlc3VsdCkKLSAJICAgICAgc3VjY2VzcyA9IDA7Ci0gCSAgICB9Ci0gCSAgZWxzZQotKwkgICAgZm9yIChpID0gMDsgaSA8IHdvcmstPm5wcm9jdHlwZXM7IGkrKykKLSsJICAgICAgaWYgKHdvcmsgLT4gcHJvY3R5cGV2ZWMgW2ldID09IG4pCi0rCSAgICAgICAgc3VjY2VzcyA9IDA7Ci0rCi0rCSAgaWYgKHN1Y2Nlc3MpCi0gCSAgICB7Ci0tCSAgICAgIHJlbWVtYmVyZWRfdHlwZSA9IHdvcmsgLT4gdHlwZXZlY1tuXTsKLSsJICAgICAgaXNfcHJvY3R5cGV2ZWMgPSAxOwotKwkgICAgICBwdXNoX3Byb2Nlc3NlZF90eXBlICh3b3JrLCBuKTsKLSsJICAgICAgcmVtZW1iZXJlZF90eXBlID0gd29yay0+dHlwZXZlY1tuXTsKLSAJICAgICAgbWFuZ2xlZCA9ICZyZW1lbWJlcmVkX3R5cGU7Ci0gCSAgICB9Ci0gCSAgYnJlYWs7Ci1AQCAtMzg0MCw2ICszODY3LDkgQEAgZG9fdHlwZSAoc3RydWN0IHdvcmtfc3R1ZmYgKndvcmssIGNvbnN0IGNoYXIgKiptYW5nbGVkLCBzdHJpbmcgKnJlc3VsdCkKLSAgICAgc3RyaW5nX2RlbGV0ZSAocmVzdWx0KTsKLSAgIHN0cmluZ19kZWxldGUgKCZkZWNsKTsKLSAKLSsgIGlmIChpc19wcm9jdHlwZXZlYykKLSsgICAgcG9wX3Byb2Nlc3NlZF90eXBlICh3b3JrKTsKLSsKLSAgIGlmIChzdWNjZXNzKQotICAgICAvKiBBc3N1bWUgYW4gaW50ZWdyYWwgdHlwZSwgaWYgd2UncmUgbm90IHN1cmUuICAqLwotICAgICByZXR1cm4gKGludCkgKCh0ayA9PSB0a19ub25lKSA/IHRrX2ludGVncmFsIDogdGspOwotQEAgLTQyNTIsNiArNDI4Miw0MSBAQCBkb19hcmcgKHN0cnVjdCB3b3JrX3N0dWZmICp3b3JrLCBjb25zdCBjaGFyICoqbWFuZ2xlZCwgc3RyaW5nICpyZXN1bHQpCi0gfQotIAotIHN0YXRpYyB2b2lkCi0rcHVzaF9wcm9jZXNzZWRfdHlwZSAoc3RydWN0IHdvcmtfc3R1ZmYgKndvcmssIGludCB0eXBldmVjX2luZGV4KQotK3sKLSsgIGlmICh3b3JrLT5ucHJvY3R5cGVzID49IHdvcmstPnByb2N0eXBldmVjX3NpemUpCi0rICAgIHsKLSsgICAgICBpZiAoIXdvcmstPnByb2N0eXBldmVjX3NpemUpCi0rCXsKLSsJICB3b3JrLT5wcm9jdHlwZXZlY19zaXplID0gNDsKLSsJICB3b3JrLT5wcm9jdHlwZXZlYyA9IFhORVdWRUMgKGludCwgd29yay0+cHJvY3R5cGV2ZWNfc2l6ZSk7Ci0rCX0KLSsgICAgICBlbHNlCi0rCXsKLSsJICBpZiAod29yay0+cHJvY3R5cGV2ZWNfc2l6ZSA8IDE2KQotKwkgICAgLyogRG91YmxlIHdoZW4gc21hbGwuICAqLwotKwkgICAgd29yay0+cHJvY3R5cGV2ZWNfc2l6ZSAqPSAyOwotKwkgIGVsc2UKLSsJICAgIHsKLSsJICAgICAgLyogR3JvdyBzbG93ZXIgd2hlbiBsYXJnZS4gICovCi0rCSAgICAgIGlmICh3b3JrLT5wcm9jdHlwZXZlY19zaXplID4gKElOVF9NQVggLyAzKSAqIDIpCi0rICAgICAgICAgICAgICAgIHhtYWxsb2NfZmFpbGVkIChJTlRfTUFYKTsKLSsgICAgICAgICAgICAgIHdvcmstPnByb2N0eXBldmVjX3NpemUgPSAod29yay0+cHJvY3R5cGV2ZWNfc2l6ZSAqIDMgLyAyKTsKLSsJICAgIH0KLSsgICAgICAgICAgd29yay0+cHJvY3R5cGV2ZWMKLSsgICAgICAgICAgICA9IFhSRVNJWkVWRUMgKGludCwgd29yay0+cHJvY3R5cGV2ZWMsIHdvcmstPnByb2N0eXBldmVjX3NpemUpOwotKwl9Ci0rICAgIH0KLSsgICAgd29yay0+cHJvY3R5cGV2ZWMgW3dvcmstPm5wcm9jdHlwZXMrK10gPSB0eXBldmVjX2luZGV4OwotK30KLSsKLStzdGF0aWMgdm9pZAotK3BvcF9wcm9jZXNzZWRfdHlwZSAoc3RydWN0IHdvcmtfc3R1ZmYgKndvcmspCi0rewotKyAgd29yay0+bnByb2N0eXBlcy0tOwotK30KLSsKLStzdGF0aWMgdm9pZAotIHJlbWVtYmVyX3R5cGUgKHN0cnVjdCB3b3JrX3N0dWZmICp3b3JrLCBjb25zdCBjaGFyICpzdGFydCwgaW50IGxlbikKLSB7Ci0gICBjaGFyICp0ZW07Ci1AQCAtNDUxNSwxMCArNDU4MCwxMyBAQCBkZW1hbmdsZV9hcmdzIChzdHJ1Y3Qgd29ya19zdHVmZiAqd29yaywgY29uc3QgY2hhciAqKm1hbmdsZWQsCi0gCQl7Ci0gCQkgIHN0cmluZ19hcHBlbmQgKGRlY2xwLCAiLCAiKTsKLSAJCX0KLSsJICAgICAgcHVzaF9wcm9jZXNzZWRfdHlwZSAod29yaywgdCk7Ci0gCSAgICAgIGlmICghZG9fYXJnICh3b3JrLCAmdGVtLCAmYXJnKSkKLSAJCXsKLSsJCSAgcG9wX3Byb2Nlc3NlZF90eXBlICh3b3JrKTsKLSAJCSAgcmV0dXJuICgwKTsKLSAJCX0KLSsJICAgICAgcG9wX3Byb2Nlc3NlZF90eXBlICh3b3JrKTsKLSAJICAgICAgaWYgKFBSSU5UX0FSR19UWVBFUykKLSAJCXsKLSAJCSAgc3RyaW5nX2FwcGVuZHMgKGRlY2xwLCAmYXJnKTsKLWRpZmYgLS1naXQgYS9saWJpYmVydHkvdGVzdHN1aXRlL2RlbWFuZ2xlLWV4cGVjdGVkIGIvbGliaWJlcnR5L3Rlc3RzdWl0ZS9kZW1hbmdsZS1leHBlY3RlZAotaW5kZXggMWQ4Yjc3MS4uZDY5MGIyMyAxMDA2NDQKLS0tLSBhL2xpYmliZXJ0eS90ZXN0c3VpdGUvZGVtYW5nbGUtZXhwZWN0ZWQKLSsrKyBiL2xpYmliZXJ0eS90ZXN0c3VpdGUvZGVtYW5nbGUtZXhwZWN0ZWQKLUBAIC00NDI5LDMgKzQ0MjksMjEgQEAgX192dF85MDAwMDAwMDAwMGNhZmViYWJlCi0gCi0gX1o4MDgwMDAwMDAwMDAwMDAwMDAwMDAwMAotIF9aODA4MDAwMDAwMDAwMDAwMDAwMDAwMDAKLSsjCi0rIyBUZXN0cyB3cml0ZSBhY2Nlc3MgdmlvbGF0aW9uIFBSNzA5MjYKLSsKLSswX19PdDJtMDJSNVQwMDAwNTAwMDAwCi0rMF9fT3QybTAyUjVUMDAwMDUwMDAwMAotKyMKLSsKLSswX19HVDUwMDAwMDAwMDAwXwotKzBfX0dUNTAwMDAwMDAwMDBfCi0rIwotKwotK19fdDJtMDVCNTAwMDAwMDAwMDAwMDAwMDAwXwotK19fdDJtMDVCNTAwMDAwMDAwMDAwMDAwMDAwXwotKyMKLSsjIFRlc3RzIHN0YWNrIG92ZXJmbG93IFBSNzE2OTYKLSsKLStfXzEwJTBfX1M0XzBUMFQwCi0rJTA8Pjo6JTAoJTA8PikKLS0tIAotMi45LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4zLmluYwppbmRleCA1YzgxYTMzLi5lNTY5ZTAyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4zLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4zLmluYwpAQCAtMzIsMTIgKzMyLDYgQEAKIFNSQ19VUkkgPSAiXAogICAgICAgICAgICAke0JBU0VVUkl9IFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtZ2NjLTQuMy4xLUFSQ0hfRkxBR1NfRk9SX1RBUkdFVC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLXVjbGliYy1jb25mLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtZ2NjLXVjbGliYy1sb2NhbGUtY3R5cGVfdG91cGxvd190LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtdWNsaWJjLWxvY2FsZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA1LXVjbGliYy1sb2NhbGUtbm9fX3gucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNi11Y2xpYmMtbG9jYWxlLXdjaGFyX2ZpeC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA3LXVjbGliYy1sb2NhbGUtdXBkYXRlLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDgtbWlzc2luZy1leGVjaW5mb19oLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDktYzk5LXNucHJpbnRmLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMTAtZ2NjLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMucGF0Y2ggXApAQCAtNzEsNyArNjUsNyBAQAogICAgICAgICAgICBmaWxlOi8vMDAzOC1TZWFyY2gtdGFyZ2V0LXN5c3Jvb3QtZ2NjLXZlcnNpb24tc3BlY2lmaWMtZGlycy13aXRoLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMzktRml4LXZhcmlvdXMtX0ZPUl9CVUlMRC1hbmQtcmVsYXRlZC12YXJpYWJsZXMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDA0MC1uaW9zMi1EZWZpbmUtTVVTTF9EWU5BTUlDX0xJTktFUi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDQxLUFkZC1zc3Bfbm9uc2hhcmVkLXRvLWxpbmstY29tbWFuZGxpbmUtZm9yLW11c2wtdGFyZ2UucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDA0MS1zc3Bfbm9uc2hhcmVkLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwNDItZ2NjLWxpYmNwcC1zdXBwb3J0LWZmaWxlLXByZWZpeC1tYXAtb2xkLW5ldy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDQzLVJldXNlLWZkZWJ1Zy1wcmVmaXgtbWFwLXRvLXJlcGxhY2UtZmZpbGUtcHJlZml4LW1hcC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDQ0LWdjYy1maW5hbC5jLWZkZWJ1Zy1wcmVmaXgtbWFwLXN1cHBvcnQtdG8tcmVtYXAtc291cmMucGF0Y2ggXApAQCAtODEsNiArNzUsNyBAQAogICAgICAgICAgICBmaWxlOi8vMDA0OC1zeW5jLWdjYy1zdGRkZWYuaC13aXRoLW11c2wucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDA1NF9hbGxfbm9waWUtYWxsLWZsYWdzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwNTUtdW53aW5kX2gtZ2xpYmMyNi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDU2LUxSQS1QUjcwOTA0LXJlbGF4LXRoZS1yZXN0cmljdGlvbi1vbi1zdWJyZWctcmVsb2FkLWYucGF0Y2ggXAogICAgICAgICAgICAke0JBQ0tQT1JUU30gXAogIgogQkFDS1BPUlRTID0gIlwKQEAgLTEyOSw4ICsxMjQsNiBAQAogICAgIGdjY19jdl9saWJjX3Byb3ZpZGVzX3NzcD15ZXMgXAogIgogCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtdWNsaWJjID0gIiAtLWRpc2FibGUtZGVjaW1hbC1mbG9hdCAiCi0KIEVYVFJBX09FQ09ORl9QQVRIUyA9ICJcCiAgICAgLS13aXRoLWd4eC1pbmNsdWRlLWRpcj0vbm90L2V4aXN0e3RhcmdldF9pbmNsdWRlZGlyfS9jKysvJHtCSU5WfSBcCiAgICAgLS13aXRoLXN5c3Jvb3Q9L25vdC9leGlzdCBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4zLzAwMDItdWNsaWJjLWNvbmYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4zLzAwMDItdWNsaWJjLWNvbmYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkMjg0ZWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMy8wMDAyLXVjbGliYy1jb25mLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotRnJvbSA0ZWZjNWEyNThjODEyODc1NzQzNjQ3ZDc1NmY3NWM5M2M0ZDUxNGE1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDg6Mzg6MjUgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAwMi80Nl0gdWNsaWJjLWNvbmYKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBjb250cmliL3JlZ3Jlc3Npb24vb2Jqcy1nY2Muc2ggfCA0ICsrKysKLSBsaWJqYXZhL2NsYXNzcGF0aC9sdGNvbmZpZyAgICAgfCA0ICsrLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbnRyaWIvcmVncmVzc2lvbi9vYmpzLWdjYy5zaCBiL2NvbnRyaWIvcmVncmVzc2lvbi9vYmpzLWdjYy5zaAotaW5kZXggNjBiMDQ5Ny4uNmRjN2VhZCAxMDA3NTUKLS0tLSBhL2NvbnRyaWIvcmVncmVzc2lvbi9vYmpzLWdjYy5zaAotKysrIGIvY29udHJpYi9yZWdyZXNzaW9uL29ianMtZ2NjLnNoCi1AQCAtMTA2LDYgKzEwNiwxMCBAQCBpZiBbICRIX1JFQUxfVEFSR0VUID0gJEhfUkVBTF9IT1NUIC1hICRIX1JFQUxfVEFSR0VUID0gaTY4Ni1wYy1saW51eC1nbnUgXQotICB0aGVuCi0gICBtYWtlIGFsbC1nZGIgYWxsLWRlamFnbnUgYWxsLWxkIHx8IGV4aXQgMQotICAgbWFrZSBpbnN0YWxsLWdkYiBpbnN0YWxsLWRlamFnbnUgaW5zdGFsbC1sZCB8fCBleGl0IDEKLStlbGlmIFsgJEhfUkVBTF9UQVJHRVQgPSAkSF9SRUFMX0hPU1QgLWEgJEhfUkVBTF9UQVJHRVQgPSBpNjg2LXBjLWxpbnV4LXVjbGliYyBdCi0rIHRoZW4KLSsgIG1ha2UgYWxsLWdkYiBhbGwtZGVqYWdudSBhbGwtbGQgfHwgZXhpdCAxCi0rICBtYWtlIGluc3RhbGwtZ2RiIGluc3RhbGwtZGVqYWdudSBpbnN0YWxsLWxkIHx8IGV4aXQgMQotIGVsaWYgWyAkSF9SRUFMX1RBUkdFVCA9ICRIX1JFQUxfSE9TVCBdIDsgdGhlbgotICAgbWFrZSBib290c3RyYXAgfHwgZXhpdCAxCi0gICBtYWtlIGluc3RhbGwgfHwgZXhpdCAxCi1kaWZmIC0tZ2l0IGEvbGliamF2YS9jbGFzc3BhdGgvbHRjb25maWcgYi9saWJqYXZhL2NsYXNzcGF0aC9sdGNvbmZpZwotaW5kZXggZDMxODk1Ny4uZGY1NTk1MCAxMDA3NTUKLS0tLSBhL2xpYmphdmEvY2xhc3NwYXRoL2x0Y29uZmlnCi0rKysgYi9saWJqYXZhL2NsYXNzcGF0aC9sdGNvbmZpZwotQEAgLTYwMyw3ICs2MDMsNyBAQCBob3N0X29zPWBlY2hvICRob3N0IHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDMvJ2AKLSAKLSAjIFRyYW5zZm9ybSBsaW51eCogdG8gKi0qLWxpbnV4LWdudSosIHRvIHN1cHBvcnQgb2xkIGNvbmZpZ3VyZSBzY3JpcHRzLgotIGNhc2UgJGhvc3Rfb3MgaW4KLS1saW51eC1nbnUqKSA7OwotK2xpbnV4LWdudSp8bGludXgtdWNsaWJjKikgOzsKLSBsaW51eCopIGhvc3Q9YGVjaG8gJGhvc3QgfCBzZWQgJ3MvXlwoLiotLiotbGludXhcKVwoLipcKSQvXDEtZ251XDIvJ2AKLSBlc2FjCi0gCi1AQCAtMTI0Nyw3ICsxMjQ3LDcgQEAgbGludXgtZ251b2xkbGQqIHwgbGludXgtZ251YW91dCogfCBsaW51eC1nbnVjb2ZmKikKLSAgIDs7Ci0gCi0gIyBUaGlzIG11c3QgYmUgTGludXggRUxGLgotLWxpbnV4LWdudSopCi0rbGludXgqKQotICAgdmVyc2lvbl90eXBlPWxpbnV4Ci0gICBuZWVkX2xpYl9wcmVmaXg9bm8KLSAgIG5lZWRfdmVyc2lvbj1ubwotLS0gCi0yLjguMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4zLzAwMDMtZ2NjLXVjbGliYy1sb2NhbGUtY3R5cGVfdG91cGxvd190LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMy8wMDAzLWdjYy11Y2xpYmMtbG9jYWxlLWN0eXBlX3RvdXBsb3dfdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGYwN2ZlYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4zLzAwMDMtZ2NjLXVjbGliYy1sb2NhbGUtY3R5cGVfdG91cGxvd190LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotRnJvbSBhZDVmZDI4M2ZjN2VmMDRmNjZjN2ZiMDAzODA1MzY0ZWEzYmQzNGU5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDg6NDA6MTIgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAwMy80Nl0gZ2NjLXVjbGliYy1sb2NhbGUtY3R5cGVfdG91cGxvd190Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvZ2VuZXJpYy9jX2xvY2FsZS5jYyB8IDUgKysrKysKLSBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS9nZW5lcmljL2NfbG9jYWxlLmggIHwgOSArKysrKysrKysKLSBsaWJzdGRjKystdjMvY29uZmlnL29zL2dudS1saW51eC9jdHlwZV9iYXNlLmggIHwgOSArKysrKysrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDIzIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL2dlbmVyaWMvY19sb2NhbGUuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS9nZW5lcmljL2NfbG9jYWxlLmNjCi1pbmRleCBlZjZjZThmLi40NzQwNjM2IDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvZ2VuZXJpYy9jX2xvY2FsZS5jYwotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvZ2VuZXJpYy9jX2xvY2FsZS5jYwotQEAgLTI3Myw1ICsyNzMsMTAgQEAgX0dMSUJDWFhfRU5EX05BTUVTUEFDRV9WRVJTSU9OCi0gI2lmZGVmIF9HTElCQ1hYX0xPTkdfRE9VQkxFX0NPTVBBVAotICNkZWZpbmUgX0dMSUJDWFhfTERCTF9DT01QQVQoZGJsLCBsZGJsKSBcCi0gICBleHRlcm4gIkMiIHZvaWQgbGRibCAodm9pZCkgX19hdHRyaWJ1dGVfXyAoKGFsaWFzICgjZGJsKSkpCi0rI2lmZGVmIF9fVUNMSUJDX18KLSsvLyBUaGlzIGlzIGJlY2F1c2UgX19jX2xvY2FsZSBpcyBvZiB0eXBlIF9fY3R5cGVfdG91cGxvd190KiB3aGljaCBpcyBzaG9ydCBvbiB1Y2xpYmMuIGZvciBnbGliYyBpdHMgaW50KgotK19HTElCQ1hYX0xEQkxfQ09NUEFUKF9aU3QxNF9fY29udmVydF90b192SWRFdlBLY1JUX1JTdDEyX0lvc19Jb3N0YXRlUktQcywgX1pTdDE0X19jb252ZXJ0X3RvX3ZJZUV2UEtjUlRfUlN0MTJfSW9zX0lvc3RhdGVSS1BzKTsKLSsjZWxzZQotIF9HTElCQ1hYX0xEQkxfQ09NUEFUKF9aU3QxNF9fY29udmVydF90b192SWRFdlBLY1JUX1JTdDEyX0lvc19Jb3N0YXRlUktQaSwgX1pTdDE0X19jb252ZXJ0X3RvX3ZJZUV2UEtjUlRfUlN0MTJfSW9zX0lvc3RhdGVSS1BpKTsKLSsjZW5kaWYKLSAjZW5kaWYgLy8gX0dMSUJDWFhfTE9OR19ET1VCTEVfQ09NUEFUCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvZ2VuZXJpYy9jX2xvY2FsZS5oIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvZ2VuZXJpYy9jX2xvY2FsZS5oCi1pbmRleCA3OTQ0NzFlLi5kNjVmOTU1IDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvZ2VuZXJpYy9jX2xvY2FsZS5oCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS9nZW5lcmljL2NfbG9jYWxlLmgKLUBAIC00MCwxMyArNDAsMjIgQEAKLSAKLSAjaW5jbHVkZSA8Y2xvY2FsZT4KLSAKLSsjaWZkZWYgX19VQ0xJQkNfXwotKyNpbmNsdWRlIDxmZWF0dXJlcy5oPgotKyNpbmNsdWRlIDxjdHlwZS5oPgotKyNlbmRpZgotKwotICNkZWZpbmUgX0dMSUJDWFhfTlVNX0NBVEVHT1JJRVMgMAotIAotIG5hbWVzcGFjZSBzdGQgX0dMSUJDWFhfVklTSUJJTElUWShkZWZhdWx0KQotIHsKLSBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgotIAotKyNpZmRlZiBfX1VDTElCQ19fCi0rICB0eXBlZGVmIF9fY3R5cGVfdG91cGxvd190KglfX2NfbG9jYWxlOwotKyNlbHNlCi0gICB0eXBlZGVmIGludCoJCQlfX2NfbG9jYWxlOwotKyNlbmRpZgotIAotICAgLy8gQ29udmVydCBudW1lcmljIHZhbHVlIG9mIHR5cGUgZG91YmxlIGFuZCBsb25nIGRvdWJsZSB0byBzdHJpbmcgYW5kCi0gICAvLyByZXR1cm4gbGVuZ3RoIG9mIHN0cmluZy4gIElmIHZzbnByaW50ZiBpcyBhdmFpbGFibGUgdXNlIGl0LCBvdGhlcndpc2UKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL29zL2dudS1saW51eC9jdHlwZV9iYXNlLmggYi9saWJzdGRjKystdjMvY29uZmlnL29zL2dudS1saW51eC9jdHlwZV9iYXNlLmgKLWluZGV4IDU5MWM3OTMuLjU1ZWIwZTkgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlnL29zL2dudS1saW51eC9jdHlwZV9iYXNlLmgKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvb3MvZ251LWxpbnV4L2N0eXBlX2Jhc2UuaAotQEAgLTMzLDYgKzMzLDExIEBACi0gCi0gLy8gSW5mb3JtYXRpb24gYXMgZ2xlYW5lZCBmcm9tIC91c3IvaW5jbHVkZS9jdHlwZS5oCi0gCi0rI2lmZGVmIF9fVUNMSUJDX18KLSsjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KLSsjaW5jbHVkZSA8Y3R5cGUuaD4KLSsjZW5kaWYKLSsKLSBuYW1lc3BhY2Ugc3RkIF9HTElCQ1hYX1ZJU0lCSUxJVFkoZGVmYXVsdCkKLSB7Ci0gX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFX1ZFUlNJT04KLUBAIC00MSw3ICs0NiwxMSBAQCBfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0VfVkVSU0lPTgotICAgc3RydWN0IGN0eXBlX2Jhc2UKLSAgIHsKLSAgICAgLy8gTm9uLXN0YW5kYXJkIHR5cGVkZWZzLgotKyNpZmRlZiBfX1VDTElCQ19fCi0rICAgIHR5cGVkZWYgY29uc3QgX19jdHlwZV90b3VwbG93X3QqCV9fdG9fdHlwZTsKLSsjZWxzZQotICAgICB0eXBlZGVmIGNvbnN0IGludCogCQlfX3RvX3R5cGU7Ci0rI2VuZGlmCi0gCi0gICAgIC8vIE5COiBPZmZzZXRzIGludG8gY3R5cGU8Y2hhcj46Ol9NX3RhYmxlIGZvcmNlIGEgcGFydGljdWxhciBzaXplCi0gICAgIC8vIG9uIHRoZSBtYXNrIHR5cGUuIEJlY2F1c2Ugb2YgdGhpcywgd2UgZG9uJ3QgdXNlIGFuIGVudW0uCi0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjMvMDAwNC11Y2xpYmMtbG9jYWxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMy8wMDA0LXVjbGliYy1sb2NhbGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlMjYyN2MuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMy8wMDA0LXVjbGliYy1sb2NhbGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyODYyICswLDAgQEAKLUZyb20gNjhiZDA4MzM1N2U3ODY3OGE5YmFhYzc2MGJlYjJhMzFmMDA5NTRhNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA4OjQxOjM5ICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDQvNDZdIHVjbGliYy1sb2NhbGUKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBsaWJzdGRjKystdjMvYWNpbmNsdWRlLm00ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzNyArKwotIC4uLi9jb25maWcvbG9jYWxlL3VjbGliYy9jKytsb2NhbGVfaW50ZXJuYWwuaCAgICAgIHwgIDYzICsrCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjICAgICAgfCAxNjAgKysrKysKLSBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaCAgICAgICB8IDExNyArKysrCi0gLi4uL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NvZGVjdnRfbWVtYmVycy5jYyAgICAgICAgfCAzMDggKysrKysrKysrCi0gLi4uL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NvbGxhdGVfbWVtYmVycy5jYyAgICAgICAgfCAgODAgKysrCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2N0eXBlX21lbWJlcnMuY2MgfCAzMDAgKysrKysrKysrCi0gLi4uL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuY2MgICAgICAgfCAxMDAgKysrCi0gLi4uL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaCAgICAgICAgfCAxMTggKysrKwotIC4uLi9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjICAgICAgIHwgNjkyICsrKysrKysrKysrKysrKysrKysrKwotIC4uLi9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MgICAgICAgIHwgMTYwICsrKysrCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYyAgfCA0MDYgKysrKysrKysrKysrCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5oICAgfCAgNjggKysKLSBsaWJzdGRjKystdjMvY29uZmlndXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA3NSArKysKLSBsaWJzdGRjKystdjMvaW5jbHVkZS9jX2NvbXBhdGliaWxpdHkvd2NoYXIuaCAgICAgICB8ICAgMiArCi0gbGlic3RkYysrLXYzL2luY2x1ZGUvY19zdGQvY3djaGFyICAgICAgICAgICAgICAgICAgfCAgIDIgKwotIDE2IGZpbGVzIGNoYW5nZWQsIDI2ODggaW5zZXJ0aW9ucygrKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvYysrbG9jYWxlX2ludGVybmFsLmgKLSBjcmVhdGUgbW9kZSAxMDA2NDQgbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5oCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jb2RlY3Z0X21lbWJlcnMuY2MKLSBjcmVhdGUgbW9kZSAxMDA2NDQgbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NvbGxhdGVfbWVtYmVycy5jYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY3R5cGVfbWVtYmVycy5jYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5jYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5oCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MKLSBjcmVhdGUgbW9kZSAxMDA2NDQgbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmgKLQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9hY2luY2x1ZGUubTQgYi9saWJzdGRjKystdjMvYWNpbmNsdWRlLm00Ci1pbmRleCBiMGY4OGNiLi5hMGVlMzZiIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2FjaW5jbHVkZS5tNAotKysrIGIvbGlic3RkYysrLXYzL2FjaW5jbHVkZS5tNAotQEAgLTIzNTgsNiArMjM1OCw5IEBAIEFDX0RFRlVOKFtHTElCQ1hYX0VOQUJMRV9DTE9DQUxFXSwgWwotICAgIyBEZWZhdWx0IHRvICJnZW5lcmljIi4KLSAgIGlmIHRlc3QgJGVuYWJsZV9jbG9jYWxlX2ZsYWcgPSBhdXRvOyB0aGVuCi0gICAgIGNhc2UgJHt0YXJnZXRfb3N9IGluCi0rICAgICAgKi11Y2xpYmMqKQotKyAgICAgICAgZW5hYmxlX2Nsb2NhbGVfZmxhZz11Y2xpYmMKLSsgICAgICAgIDs7Ci0gICAgICAgbGludXgqIHwgZ251KiB8IGtmcmVlYnNkKi1nbnUgfCBrbmV0YnNkKi1nbnUpCi0gCWVuYWJsZV9jbG9jYWxlX2ZsYWc9Z251Ci0gCTs7Ci1AQCAtMjU0Miw2ICsyNTQ1LDQwIEBAIEFDX0RFRlVOKFtHTElCQ1hYX0VOQUJMRV9DTE9DQUxFXSwgWwotICAgICAgIENUSU1FX0NDPWNvbmZpZy9sb2NhbGUvZ2VuZXJpYy90aW1lX21lbWJlcnMuY2MKLSAgICAgICBDTE9DQUxFX0lOVEVSTkFMX0g9Y29uZmlnL2xvY2FsZS9nZW5lcmljL2MrK2xvY2FsZV9pbnRlcm5hbC5oCi0gICAgICAgOzsKLSsgICAgdWNsaWJjKQotKyAgICAgIEFDX01TR19SRVNVTFQodWNsaWJjKQotKwotKyAgICAgICMgRGVjbGFyZSBpbnRlbnRpb24gdG8gdXNlIGdldHRleHQsIGFuZCBhZGQgc3VwcG9ydCBmb3Igc3BlY2lmaWMKLSsgICAgICAjIGxhbmd1YWdlcy4KLSsgICAgICAjIEZvciBzb21lIHJlYXNvbiwgQUxMX0xJTkdVQVMgaGFzIHRvIGJlIGJlZm9yZSBBTS1HTlUtR0VUVEVYVAotKyAgICAgIEFMTF9MSU5HVUFTPSJkZSBmciIKLSsKLSsgICAgICAjIERvbid0IGNhbGwgQU0tR05VLUdFVFRFWFQgaGVyZS4gSW5zdGVhZCwgYXNzdW1lIGdsaWJjLgotKyAgICAgIEFDX0NIRUNLX1BST0coY2hlY2tfbXNnZm10LCBtc2dmbXQsIHllcywgbm8pCi0rICAgICAgaWYgdGVzdCB4IiRjaGVja19tc2dmbXQiID0geCJ5ZXMiICYmIHRlc3QgeCIkZW5hYmxlX25scyIgPSB4InllcyI7IHRoZW4KLSsgICAgICAgIFVTRV9OTFM9eWVzCi0rICAgICAgZmkKLSsgICAgICAjIEV4cG9ydCB0aGUgYnVpbGQgb2JqZWN0cy4KLSsgICAgICBmb3IgbGluZyBpbiAkQUxMX0xJTkdVQVM7IGRvIFwKLSsgICAgICAgIGdsaWJjeHhfTU9GSUxFUz0iJGdsaWJjeHhfTU9GSUxFUyAkbGluZy5tbyI7IFwKLSsgICAgICAgIGdsaWJjeHhfUE9GSUxFUz0iJGdsaWJjeHhfUE9GSUxFUyAkbGluZy5wbyI7IFwKLSsgICAgICBkb25lCi0rICAgICAgQUNfU1VCU1QoZ2xpYmN4eF9NT0ZJTEVTKQotKyAgICAgIEFDX1NVQlNUKGdsaWJjeHhfUE9GSUxFUykKLSsKLSsgICAgICBDTE9DQUxFX0g9Y29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaAotKyAgICAgIENMT0NBTEVfQ0M9Y29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuY2MKLSsgICAgICBDQ09ERUNWVF9DQz1jb25maWcvbG9jYWxlL3VjbGliYy9jb2RlY3Z0X21lbWJlcnMuY2MKLSsgICAgICBDQ09MTEFURV9DQz1jb25maWcvbG9jYWxlL3VjbGliYy9jb2xsYXRlX21lbWJlcnMuY2MKLSsgICAgICBDQ1RZUEVfQ0M9Y29uZmlnL2xvY2FsZS91Y2xpYmMvY3R5cGVfbWVtYmVycy5jYwotKyAgICAgIENNRVNTQUdFU19IPWNvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaAotKyAgICAgIENNRVNTQUdFU19DQz1jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmNjCi0rICAgICAgQ01PTkVZX0NDPWNvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MKLSsgICAgICBDTlVNRVJJQ19DQz1jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MKLSsgICAgICBDVElNRV9IPWNvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5oCi0rICAgICAgQ1RJTUVfQ0M9Y29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmNjCi0rICAgICAgQ0xPQ0FMRV9JTlRFUk5BTF9IPWNvbmZpZy9sb2NhbGUvdWNsaWJjL2MrK2xvY2FsZV9pbnRlcm5hbC5oCi0rICAgICAgOzsKLSAgIGVzYWMKLSAKLSAgICMgVGhpcyBpcyB3aGVyZSB0aGUgdGVzdHN1aXRlIGxvb2tzIGZvciBsb2NhbGUgY2F0YWxvZ3MsIHVzaW5nIHRoZQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jKytsb2NhbGVfaW50ZXJuYWwuaCBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jKytsb2NhbGVfaW50ZXJuYWwuaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjJhZTNlNGEKLS0tLSAvZGV2L251bGwKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jKytsb2NhbGVfaW50ZXJuYWwuaAotQEAgLTAsMCArMSw2MyBAQAotKy8vIFByb3RvdHlwZXMgZm9yIEdMSUJDIHRocmVhZCBsb2NhbGUgX18tcHJlZml4ZWQgZnVuY3Rpb25zIC0qLSBDKysgLSotCi0rCi0rLy8gQ29weXJpZ2h0IChDKSAyMDAyLCAyMDA0LCAyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8vCi0rLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBJU08gQysrIExpYnJhcnkuICBUaGlzIGxpYnJhcnkgaXMgZnJlZQotKy8vIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZQotKy8vIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCi0rLy8gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rLy8gYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rLy8gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsvLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsvLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotKy8vIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSsvLyBTb2Z0d2FyZSBGb3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsvLyBVU0EuCi0rCi0rLy8gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgeW91IG1heSB1c2UgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBmcmVlIHNvZnR3YXJlCi0rLy8gbGlicmFyeSB3aXRob3V0IHJlc3RyaWN0aW9uLiAgU3BlY2lmaWNhbGx5LCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZQotKy8vIHRlbXBsYXRlcyBvciB1c2UgbWFjcm9zIG9yIGlubGluZSBmdW5jdGlvbnMgZnJvbSB0aGlzIGZpbGUsIG9yIHlvdSBjb21waWxlCi0rLy8gdGhpcyBmaWxlIGFuZCBsaW5rIGl0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiBleGVjdXRhYmxlLCB0aGlzCi0rLy8gZmlsZSBkb2VzIG5vdCBieSBpdHNlbGYgY2F1c2UgdGhlIHJlc3VsdGluZyBleGVjdXRhYmxlIHRvIGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBUaGlzIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyCi0rLy8gaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlIGV4ZWN1dGFibGUgZmlsZSBtaWdodCBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgotKwotKy8vIFdyaXR0ZW4gYnkgSmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4KLSsKLSsjaW5jbHVkZSA8Yml0cy9jKytjb25maWcuaD4KLSsjaW5jbHVkZSA8Y2xvY2FsZT4KLSsKLSsjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KLSsjd2FybmluZyBjbGVhbiB0aGlzIHVwCi0rI2VuZGlmCi0rCi0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsKLStleHRlcm4gIkMiIF9fdHlwZW9mKG5sX2xhbmdpbmZvX2wpIF9fbmxfbGFuZ2luZm9fbDsKLStleHRlcm4gIkMiIF9fdHlwZW9mKHN0cmNvbGxfbCkgX19zdHJjb2xsX2w7Ci0rZXh0ZXJuICJDIiBfX3R5cGVvZihzdHJmdGltZV9sKSBfX3N0cmZ0aW1lX2w7Ci0rZXh0ZXJuICJDIiBfX3R5cGVvZihzdHJ0b2RfbCkgX19zdHJ0b2RfbDsKLStleHRlcm4gIkMiIF9fdHlwZW9mKHN0cnRvZl9sKSBfX3N0cnRvZl9sOwotK2V4dGVybiAiQyIgX190eXBlb2Yoc3RydG9sZF9sKSBfX3N0cnRvbGRfbDsKLStleHRlcm4gIkMiIF9fdHlwZW9mKHN0cnhmcm1fbCkgX19zdHJ4ZnJtX2w7Ci0rZXh0ZXJuICJDIiBfX3R5cGVvZihuZXdsb2NhbGUpIF9fbmV3bG9jYWxlOwotK2V4dGVybiAiQyIgX190eXBlb2YoZnJlZWxvY2FsZSkgX19mcmVlbG9jYWxlOwotK2V4dGVybiAiQyIgX190eXBlb2YoZHVwbG9jYWxlKSBfX2R1cGxvY2FsZTsKLStleHRlcm4gIkMiIF9fdHlwZW9mKHVzZWxvY2FsZSkgX191c2Vsb2NhbGU7Ci0rCi0rI2lmZGVmIF9HTElCQ1hYX1VTRV9XQ0hBUl9UCi0rZXh0ZXJuICJDIiBfX3R5cGVvZihpc3djdHlwZV9sKSBfX2lzd2N0eXBlX2w7Ci0rZXh0ZXJuICJDIiBfX3R5cGVvZih0b3dsb3dlcl9sKSBfX3Rvd2xvd2VyX2w7Ci0rZXh0ZXJuICJDIiBfX3R5cGVvZih0b3d1cHBlcl9sKSBfX3Rvd3VwcGVyX2w7Ci0rZXh0ZXJuICJDIiBfX3R5cGVvZih3Y3Njb2xsX2wpIF9fd2NzY29sbF9sOwotK2V4dGVybiAiQyIgX190eXBlb2Yod2NzZnRpbWVfbCkgX193Y3NmdGltZV9sOwotK2V4dGVybiAiQyIgX190eXBlb2Yod2NzeGZybV9sKSBfX3djc3hmcm1fbDsKLStleHRlcm4gIkMiIF9fdHlwZW9mKHdjdHlwZV9sKSBfX3djdHlwZV9sOwotKyNlbmRpZgotKwotKyNlbmRpZiAvLyBHTElCQyAyLjMgYW5kIGxhdGVyCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNTA4MWRjMQotLS0tIC9kZXYvbnVsbAotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjCi1AQCAtMCwwICsxLDE2MCBAQAotKy8vIFdyYXBwZXIgZm9yIHVuZGVybHlpbmcgQy1sYW5ndWFnZSBsb2NhbGl6YXRpb24gLSotIEMrKyAtKi0KLSsKLSsvLyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIsIDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLy8KLSsvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlCi0rLy8gc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlCi0rLy8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLSsvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsvLyBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsvLyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKy8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi0rLy8gd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKy8vIFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKy8vIFVTQS4KLSsKLSsvLyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIGZyZWUgc29mdHdhcmUKLSsvLyBsaWJyYXJ5IHdpdGhvdXQgcmVzdHJpY3Rpb24uICBTcGVjaWZpY2FsbHksIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlCi0rLy8gdGVtcGxhdGVzIG9yIHVzZSBtYWNyb3Mgb3IgaW5saW5lIGZ1bmN0aW9ucyBmcm9tIHRoaXMgZmlsZSwgb3IgeW91IGNvbXBpbGUKLSsvLyB0aGlzIGZpbGUgYW5kIGxpbmsgaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuIGV4ZWN1dGFibGUsIHRoaXMKLSsvLyBmaWxlIGRvZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoaXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIKLSsvLyBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCi0rCi0rLy8KLSsvLyBJU08gQysrIDE0ODgyOiAyMi44ICBTdGFuZGFyZCBsb2NhbGUgY2F0ZWdvcmllcy4KLSsvLwotKwotKy8vIFdyaXR0ZW4gYnkgQmVuamFtaW4gS29zbmlrIDxia296QHJlZGhhdC5jb20+Ci0rCi0rI2luY2x1ZGUgPGNlcnJubz4gIC8vIEZvciBlcnJubwotKyNpbmNsdWRlIDxsb2NhbGU+Ci0rI2luY2x1ZGUgPHN0ZGV4Y2VwdD4KLSsjaW5jbHVkZSA8bGFuZ2luZm8uaD4KLSsjaW5jbHVkZSA8Yml0cy9jKytsb2NhbGVfaW50ZXJuYWwuaD4KLSsKLSsjaWZuZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsjZGVmaW5lIF9fc3RydG9sX2woUywgRSwgQiwgTCkgICAgICBzdHJ0b2woKFMpLCAoRSksIChCKSkKLSsjZGVmaW5lIF9fc3RydG91bF9sKFMsIEUsIEIsIEwpICAgICBzdHJ0b3VsKChTKSwgKEUpLCAoQikpCi0rI2RlZmluZSBfX3N0cnRvbGxfbChTLCBFLCBCLCBMKSAgICAgc3RydG9sbCgoUyksIChFKSwgKEIpKQotKyNkZWZpbmUgX19zdHJ0b3VsbF9sKFMsIEUsIEIsIEwpICAgIHN0cnRvdWxsKChTKSwgKEUpLCAoQikpCi0rI2RlZmluZSBfX3N0cnRvZl9sKFMsIEUsIEwpICAgICAgICAgc3RydG9mKChTKSwgKEUpKQotKyNkZWZpbmUgX19zdHJ0b2RfbChTLCBFLCBMKSAgICAgICAgIHN0cnRvZCgoUyksIChFKSkKLSsjZGVmaW5lIF9fc3RydG9sZF9sKFMsIEUsIEwpICAgICAgICBzdHJ0b2xkKChTKSwgKEUpKQotKyN3YXJuaW5nIHNob3VsZCBkdW1teSBfX25ld2xvY2FsZSBjaGVjayBmb3IgQ3xQT1NJWCA/Ci0rI2RlZmluZSBfX25ld2xvY2FsZShhLCBiLCBjKSAgICAgICAgTlVMTAotKyNkZWZpbmUgX19mcmVlbG9jYWxlKGEpICAgICAgICAgICAgICgodm9pZCkwKQotKyNkZWZpbmUgX19kdXBsb2NhbGUoYSkgICAgICAgICAgICAgIF9fY19sb2NhbGUoKQotKyNlbmRpZgotKwotK25hbWVzcGFjZSBzdGQKLSt7Ci0rICB0ZW1wbGF0ZTw+Ci0rICAgIHZvaWQKLSsgICAgX19jb252ZXJ0X3RvX3YoY29uc3QgY2hhciogX19zLCBmbG9hdCYgX192LCBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsCi0rCQkgICBjb25zdCBfX2NfbG9jYWxlJiBfX2Nsb2MpCi0rICAgIHsKLSsgICAgICBpZiAoIShfX2VyciAmIGlvc19iYXNlOjpmYWlsYml0KSkKLSsJewotKwkgIGNoYXIqIF9fc2FuaXR5OwotKwkgIGVycm5vID0gMDsKLSsJICBmbG9hdCBfX2YgPSBfX3N0cnRvZl9sKF9fcywgJl9fc2FuaXR5LCBfX2Nsb2MpOwotKyAgICAgICAgICBpZiAoX19zYW5pdHkgIT0gX19zICYmIGVycm5vICE9IEVSQU5HRSkKLSsJICAgIF9fdiA9IF9fZjsKLSsJICBlbHNlCi0rCSAgICBfX2VyciB8PSBpb3NfYmFzZTo6ZmFpbGJpdDsKLSsJfQotKyAgICB9Ci0rCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIHZvaWQKLSsgICAgX19jb252ZXJ0X3RvX3YoY29uc3QgY2hhciogX19zLCBkb3VibGUmIF9fdiwgaW9zX2Jhc2U6Omlvc3RhdGUmIF9fZXJyLAotKwkJICAgY29uc3QgX19jX2xvY2FsZSYgX19jbG9jKQotKyAgICB7Ci0rICAgICAgaWYgKCEoX19lcnIgJiBpb3NfYmFzZTo6ZmFpbGJpdCkpCi0rCXsKLSsJICBjaGFyKiBfX3Nhbml0eTsKLSsJICBlcnJubyA9IDA7Ci0rCSAgZG91YmxlIF9fZCA9IF9fc3RydG9kX2woX19zLCAmX19zYW5pdHksIF9fY2xvYyk7Ci0rICAgICAgICAgIGlmIChfX3Nhbml0eSAhPSBfX3MgJiYgZXJybm8gIT0gRVJBTkdFKQotKwkgICAgX192ID0gX19kOwotKwkgIGVsc2UKLSsJICAgIF9fZXJyIHw9IGlvc19iYXNlOjpmYWlsYml0OwotKwl9Ci0rICAgIH0KLSsKLSsgIHRlbXBsYXRlPD4KLSsgICAgdm9pZAotKyAgICBfX2NvbnZlcnRfdG9fdihjb25zdCBjaGFyKiBfX3MsIGxvbmcgZG91YmxlJiBfX3YsIGlvc19iYXNlOjppb3N0YXRlJiBfX2VyciwKLSsJCSAgIGNvbnN0IF9fY19sb2NhbGUmIF9fY2xvYykKLSsgICAgewotKyAgICAgIGlmICghKF9fZXJyICYgaW9zX2Jhc2U6OmZhaWxiaXQpKQotKwl7Ci0rCSAgY2hhciogX19zYW5pdHk7Ci0rCSAgZXJybm8gPSAwOwotKwkgIGxvbmcgZG91YmxlIF9fbGQgPSBfX3N0cnRvbGRfbChfX3MsICZfX3Nhbml0eSwgX19jbG9jKTsKLSsgICAgICAgICAgaWYgKF9fc2FuaXR5ICE9IF9fcyAmJiBlcnJubyAhPSBFUkFOR0UpCi0rCSAgICBfX3YgPSBfX2xkOwotKwkgIGVsc2UKLSsJICAgIF9fZXJyIHw9IGlvc19iYXNlOjpmYWlsYml0OwotKwl9Ci0rICAgIH0KLSsKLSsgIHZvaWQKLSsgIGxvY2FsZTo6ZmFjZXQ6Ol9TX2NyZWF0ZV9jX2xvY2FsZShfX2NfbG9jYWxlJiBfX2Nsb2MsIGNvbnN0IGNoYXIqIF9fcywKLSsJCQkJICAgIF9fY19sb2NhbGUgX19vbGQpCi0rICB7Ci0rICAgIF9fY2xvYyA9IF9fbmV3bG9jYWxlKDEgPDwgTENfQUxMLCBfX3MsIF9fb2xkKTsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICBpZiAoIV9fY2xvYykKLSsgICAgICB7Ci0rCS8vIFRoaXMgbmFtZWQgbG9jYWxlIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIHVuZGVybHlpbmcgT1MuCi0rCV9fdGhyb3dfcnVudGltZV9lcnJvcihfX04oImxvY2FsZTo6ZmFjZXQ6Ol9TX2NyZWF0ZV9jX2xvY2FsZSAiCi0rCQkJICAgICAgIm5hbWUgbm90IHZhbGlkIikpOwotKyAgICAgIH0KLSsjZW5kaWYKLSsgIH0KLSsKLSsgIHZvaWQKLSsgIGxvY2FsZTo6ZmFjZXQ6Ol9TX2Rlc3Ryb3lfY19sb2NhbGUoX19jX2xvY2FsZSYgX19jbG9jKQotKyAgewotKyAgICBpZiAoX1NfZ2V0X2NfbG9jYWxlKCkgIT0gX19jbG9jKQotKyAgICAgIF9fZnJlZWxvY2FsZShfX2Nsb2MpOwotKyAgfQotKwotKyAgX19jX2xvY2FsZQotKyAgbG9jYWxlOjpmYWNldDo6X1NfY2xvbmVfY19sb2NhbGUoX19jX2xvY2FsZSYgX19jbG9jKQotKyAgeyByZXR1cm4gX19kdXBsb2NhbGUoX19jbG9jKTsgfQotK30gLy8gbmFtZXNwYWNlIHN0ZAotKwotK25hbWVzcGFjZSBfX2dudV9jeHgKLSt7Ci0rICBjb25zdCBjaGFyKiBjb25zdCBjYXRlZ29yeV9uYW1lc1s2ICsgX0dMSUJDWFhfTlVNX0NBVEVHT1JJRVNdID0KLSsgICAgewotKyAgICAgICJMQ19DVFlQRSIsCi0rICAgICAgIkxDX05VTUVSSUMiLAotKyAgICAgICJMQ19USU1FIiwKLSsgICAgICAiTENfQ09MTEFURSIsCi0rICAgICAgIkxDX01PTkVUQVJZIiwKLSsgICAgICAiTENfTUVTU0FHRVMiLAotKyNpZiBfR0xJQkNYWF9OVU1fQ0FURUdPUklFUyAhPSAwCi0rICAgICAgIkxDX1BBUEVSIiwKLSsgICAgICAiTENfTkFNRSIsCi0rICAgICAgIkxDX0FERFJFU1MiLAotKyAgICAgICJMQ19URUxFUEhPTkUiLAotKyAgICAgICJMQ19NRUFTVVJFTUVOVCIsCi0rICAgICAgIkxDX0lERU5USUZJQ0FUSU9OIgotKyNlbmRpZgotKyAgICB9OwotK30KLSsKLStuYW1lc3BhY2Ugc3RkCi0rewotKyAgY29uc3QgY2hhciogY29uc3QqIGNvbnN0IGxvY2FsZTo6X1NfY2F0ZWdvcmllcyA9IF9fZ251X2N4eDo6Y2F0ZWdvcnlfbmFtZXM7Ci0rfSAgLy8gbmFtZXNwYWNlIHN0ZAotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5oIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5kYTA3YzFmCi0tLS0gL2Rldi9udWxsCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaAotQEAgLTAsMCArMSwxMTcgQEAKLSsvLyBXcmFwcGVyIGZvciB1bmRlcmx5aW5nIEMtbGFuZ3VhZ2UgbG9jYWxpemF0aW9uIC0qLSBDKysgLSotCi0rCi0rLy8gQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8vCi0rLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBJU08gQysrIExpYnJhcnkuICBUaGlzIGxpYnJhcnkgaXMgZnJlZQotKy8vIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZQotKy8vIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCi0rLy8gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rLy8gYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rLy8gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsvLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsvLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotKy8vIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSsvLyBTb2Z0d2FyZSBGb3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsvLyBVU0EuCi0rCi0rLy8gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgeW91IG1heSB1c2UgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBmcmVlIHNvZnR3YXJlCi0rLy8gbGlicmFyeSB3aXRob3V0IHJlc3RyaWN0aW9uLiAgU3BlY2lmaWNhbGx5LCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZQotKy8vIHRlbXBsYXRlcyBvciB1c2UgbWFjcm9zIG9yIGlubGluZSBmdW5jdGlvbnMgZnJvbSB0aGlzIGZpbGUsIG9yIHlvdSBjb21waWxlCi0rLy8gdGhpcyBmaWxlIGFuZCBsaW5rIGl0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiBleGVjdXRhYmxlLCB0aGlzCi0rLy8gZmlsZSBkb2VzIG5vdCBieSBpdHNlbGYgY2F1c2UgdGhlIHJlc3VsdGluZyBleGVjdXRhYmxlIHRvIGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBUaGlzIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyCi0rLy8gaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlIGV4ZWN1dGFibGUgZmlsZSBtaWdodCBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgotKwotKy8vCi0rLy8gSVNPIEMrKyAxNDg4MjogMjIuOCAgU3RhbmRhcmQgbG9jYWxlIGNhdGVnb3JpZXMuCi0rLy8KLSsKLSsvLyBXcml0dGVuIGJ5IEJlbmphbWluIEtvc25payA8YmtvekByZWRoYXQuY29tPgotKwotKyNpZm5kZWYgX0NfTE9DQUxFX0gKLSsjZGVmaW5lIF9DX0xPQ0FMRV9IIDEKLSsKLSsjcHJhZ21hIEdDQyBzeXN0ZW1faGVhZGVyCi0rCi0rI2luY2x1ZGUgPGNzdHJpbmc+ICAgICAgICAgICAgICAvLyBnZXQgc3RkOjpzdHJsZW4KLSsjaW5jbHVkZSA8Y3N0ZGlvPiAgICAgICAgICAgICAgIC8vIGdldCBzdGQ6OnNucHJpbnRmIG9yIHN0ZDo6c3ByaW50ZgotKyNpbmNsdWRlIDxjbG9jYWxlPgotKyNpbmNsdWRlIDxsYW5naW5mby5oPgkJLy8gRm9yIGNvZGVjdnQKLSsjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KLSsjd2FybmluZyBmaXggdGhpcwotKyNlbmRpZgotKyNpZmRlZiBfX1VDTElCQ19IQVNfTE9DQUxFX18KLSsjaW5jbHVkZSA8aWNvbnYuaD4JCS8vIEZvciBjb2RlY3Z0IHVzaW5nIGljb252LCBpY29udl90Ci0rI2VuZGlmCi0rI2lmZGVmIF9fVUNMSUJDX0hBU19HRVRURVhUX0FXQVJFTkVTU19fCi0rI2luY2x1ZGUgPGxpYmludGwuaD4gCQkvLyBGb3IgbWVzc2FnZXMKLSsjZW5kaWYKLSsKLSsjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KLSsjd2FybmluZyB3aGF0IGlzIF9HTElCQ1hYX0NfTE9DQUxFX0dOVSBmb3IKLSsjZW5kaWYKLSsjZGVmaW5lIF9HTElCQ1hYX0NfTE9DQUxFX0dOVSAxCi0rCi0rI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi0rI3dhcm5pbmcgZml4IGNhdGVnb3JpZXMKLSsjZW5kaWYKLSsvLyAjZGVmaW5lIF9HTElCQ1hYX05VTV9DQVRFR09SSUVTIDYKLSsjZGVmaW5lIF9HTElCQ1hYX05VTV9DQVRFR09SSUVTIDAKLSsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotK25hbWVzcGFjZSBfX2dudV9jeHgKLSt7Ci0rICBleHRlcm4gIkMiIF9fdHlwZW9mKHVzZWxvY2FsZSkgX191c2Vsb2NhbGU7Ci0rfQotKyNlbmRpZgotKwotK25hbWVzcGFjZSBzdGQKLSt7Ci0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgIHR5cGVkZWYgX19sb2NhbGVfdAkJX19jX2xvY2FsZTsKLSsjZWxzZQotKyAgdHlwZWRlZiBpbnQqCQkJX19jX2xvY2FsZTsKLSsjZW5kaWYKLSsKLSsgIC8vIENvbnZlcnQgbnVtZXJpYyB2YWx1ZSBvZiB0eXBlIF9UdiB0byBzdHJpbmcgYW5kIHJldHVybiBsZW5ndGggb2YKLSsgIC8vIHN0cmluZy4gIElmIHNucHJpbnRmIGlzIGF2YWlsYWJsZSB1c2UgaXQsIG90aGVyd2lzZSBmYWxsIGJhY2sgdG8KLSsgIC8vIHRoZSB1bnNhZmUgc3ByaW50ZiB3aGljaCwgaW4gZ2VuZXJhbCwgY2FuIGJlIGRhbmdlcm91cyBhbmQgc2hvdWxkCi0rICAvLyBiZSBhdm9pZGVkLgotKyAgdGVtcGxhdGU8dHlwZW5hbWUgX1R2PgotKyAgICBpbnQKLSsgICAgX19jb252ZXJ0X2Zyb21fdihjaGFyKiBfX291dCwKLSsJCSAgICAgY29uc3QgaW50IF9fc2l6ZSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpLAotKwkJICAgICBjb25zdCBjaGFyKiBfX2ZtdCwKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hDTE9DQUxFX18KLSsJCSAgICAgX1R2IF9fdiwgY29uc3QgX19jX2xvY2FsZSYgX19jbG9jLCBpbnQgX19wcmVjKQotKyAgICB7Ci0rICAgICAgX19jX2xvY2FsZSBfX29sZCA9IF9fZ251X2N4eDo6X191c2Vsb2NhbGUoX19jbG9jKTsKLSsjZWxzZQotKwkJICAgICBfVHYgX192LCBjb25zdCBfX2NfbG9jYWxlJiwgaW50IF9fcHJlYykKLSsgICAgewotKyMgaWZkZWYgX19VQ0xJQkNfSEFTX0xPQ0FMRV9fCi0rICAgICAgY2hhciogX19vbGQgPSBzdGQ6OnNldGxvY2FsZShMQ19BTEwsIE5VTEwpOwotKyAgICAgIGNoYXIqIF9fc2F2ID0gbmV3IGNoYXJbc3RkOjpzdHJsZW4oX19vbGQpICsgMV07Ci0rICAgICAgc3RkOjpzdHJjcHkoX19zYXYsIF9fb2xkKTsKLSsgICAgICBzdGQ6OnNldGxvY2FsZShMQ19BTEwsICJDIik7Ci0rIyBlbmRpZgotKyNlbmRpZgotKwotKyAgICAgIGNvbnN0IGludCBfX3JldCA9IHN0ZDo6c25wcmludGYoX19vdXQsIF9fc2l6ZSwgX19mbXQsIF9fcHJlYywgX192KTsKLSsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hDTE9DQUxFX18KLSsgICAgICBfX2dudV9jeHg6Ol9fdXNlbG9jYWxlKF9fb2xkKTsKLSsjZWxpZiBkZWZpbmVkIF9fVUNMSUJDX0hBU19MT0NBTEVfXwotKyAgICAgIHN0ZDo6c2V0bG9jYWxlKExDX0FMTCwgX19zYXYpOwotKyAgICAgIGRlbGV0ZSBbXSBfX3NhdjsKLSsjZW5kaWYKLSsgICAgICByZXR1cm4gX19yZXQ7Ci0rICAgIH0KLSt9Ci0rCi0rI2VuZGlmCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NvZGVjdnRfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jb2RlY3Z0X21lbWJlcnMuY2MKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi42NGFhOTYyCi0tLS0gL2Rldi9udWxsCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY29kZWN2dF9tZW1iZXJzLmNjCi1AQCAtMCwwICsxLDMwOCBAQAotKy8vIHN0ZDo6Y29kZWN2dCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLCBHTlUgdmVyc2lvbiAtKi0gQysrIC0qLQotKwotKy8vIENvcHlyaWdodCAoQykgMjAwMiwgMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvLwotKy8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgSVNPIEMrKyBMaWJyYXJ5LiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUKLSsvLyBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUKLSsvLyB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotKy8vIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKy8vIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKy8vIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKy8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKy8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSsvLyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rLy8gU29mdHdhcmUgRm91bmRhdGlvbiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rLy8gVVNBLgotKwotKy8vIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHlvdSBtYXkgdXNlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgZnJlZSBzb2Z0d2FyZQotKy8vIGxpYnJhcnkgd2l0aG91dCByZXN0cmljdGlvbi4gIFNwZWNpZmljYWxseSwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUKLSsvLyB0ZW1wbGF0ZXMgb3IgdXNlIG1hY3JvcyBvciBpbmxpbmUgZnVuY3Rpb25zIGZyb20gdGhpcyBmaWxlLCBvciB5b3UgY29tcGlsZQotKy8vIHRoaXMgZmlsZSBhbmQgbGluayBpdCB3aXRoIG90aGVyIGZpbGVzIHRvIHByb2R1Y2UgYW4gZXhlY3V0YWJsZSwgdGhpcwotKy8vIGZpbGUgZG9lcyBub3QgYnkgaXRzZWxmIGNhdXNlIHRoZSByZXN1bHRpbmcgZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhpcyBleGNlcHRpb24gZG9lcyBub3QgaG93ZXZlcgotKy8vIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSBleGVjdXRhYmxlIGZpbGUgbWlnaHQgYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KLSsKLSsvLwotKy8vIElTTyBDKysgMTQ4ODI6IDIyLjIuMS41IC0gVGVtcGxhdGUgY2xhc3MgY29kZWN2dAotKy8vCi0rCi0rLy8gV3JpdHRlbiBieSBCZW5qYW1pbiBLb3NuaWsgPGJrb3pAcmVkaGF0LmNvbT4KLSsKLSsjaW5jbHVkZSA8bG9jYWxlPgotKyNpbmNsdWRlIDxjc3RkbGliPiAgLy8gRm9yIE1CX0NVUl9NQVgKLSsjaW5jbHVkZSA8Y2xpbWl0cz4gIC8vIEZvciBNQl9MRU5fTUFYCi0rI2luY2x1ZGUgPGJpdHMvYysrbG9jYWxlX2ludGVybmFsLmg+Ci0rCi0rbmFtZXNwYWNlIHN0ZAotK3sKLSsgIC8vIFNwZWNpYWxpemF0aW9ucy4KLSsjaWZkZWYgX0dMSUJDWFhfVVNFX1dDSEFSX1QKLSsgIGNvZGVjdnRfYmFzZTo6cmVzdWx0Ci0rICBjb2RlY3Z0PHdjaGFyX3QsIGNoYXIsIG1ic3RhdGVfdD46OgotKyAgZG9fb3V0KHN0YXRlX3R5cGUmIF9fc3RhdGUsIGNvbnN0IGludGVybl90eXBlKiBfX2Zyb20sCi0rCSBjb25zdCBpbnRlcm5fdHlwZSogX19mcm9tX2VuZCwgY29uc3QgaW50ZXJuX3R5cGUqJiBfX2Zyb21fbmV4dCwKLSsJIGV4dGVybl90eXBlKiBfX3RvLCBleHRlcm5fdHlwZSogX190b19lbmQsCi0rCSBleHRlcm5fdHlwZSomIF9fdG9fbmV4dCkgY29uc3QKLSsgIHsKLSsgICAgcmVzdWx0IF9fcmV0ID0gb2s7Ci0rICAgIHN0YXRlX3R5cGUgX190bXBfc3RhdGUoX19zdGF0ZSk7Ci0rCi0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgX19jX2xvY2FsZSBfX29sZCA9IF9fdXNlbG9jYWxlKF9NX2NfbG9jYWxlX2NvZGVjdnQpOwotKyNlbmRpZgotKwotKyAgICAvLyB3Y3NucnRvbWJzIGlzICp2ZXJ5KiBmYXN0IGJ1dCBzdG9wcyBpZiBlbmNvdW50ZXJzIE5VTCBjaGFyYWN0ZXJzOgotKyAgICAvLyBpbiBjYXNlIHdlIGZhbGwgYmFjayB0byB3Y3J0b21iIGFuZCB0aGVuIGNvbnRpbnVlLCBpbiBhIGxvb3AuCi0rICAgIC8vIE5COiB3Y3NucnRvbWJzIGlzIGEgR05VIGV4dGVuc2lvbgotKyAgICBmb3IgKF9fZnJvbV9uZXh0ID0gX19mcm9tLCBfX3RvX25leHQgPSBfX3RvOwotKwkgX19mcm9tX25leHQgPCBfX2Zyb21fZW5kICYmIF9fdG9fbmV4dCA8IF9fdG9fZW5kCi0rCSAmJiBfX3JldCA9PSBvazspCi0rICAgICAgewotKwljb25zdCBpbnRlcm5fdHlwZSogX19mcm9tX2NodW5rX2VuZCA9IHdtZW1jaHIoX19mcm9tX25leHQsIEwnXDAnLAotKwkJCQkJCSAgICAgIF9fZnJvbV9lbmQgLSBfX2Zyb21fbmV4dCk7Ci0rCWlmICghX19mcm9tX2NodW5rX2VuZCkKLSsJICBfX2Zyb21fY2h1bmtfZW5kID0gX19mcm9tX2VuZDsKLSsKLSsJX19mcm9tID0gX19mcm9tX25leHQ7Ci0rCWNvbnN0IHNpemVfdCBfX2NvbnYgPSB3Y3NucnRvbWJzKF9fdG9fbmV4dCwgJl9fZnJvbV9uZXh0LAotKwkJCQkJIF9fZnJvbV9jaHVua19lbmQgLSBfX2Zyb21fbmV4dCwKLSsJCQkJCSBfX3RvX2VuZCAtIF9fdG9fbmV4dCwgJl9fc3RhdGUpOwotKwlpZiAoX19jb252ID09IHN0YXRpY19jYXN0PHNpemVfdD4oLTEpKQotKwkgIHsKLSsJICAgIC8vIEluIGNhc2Ugb2YgZXJyb3IsIGluIG9yZGVyIHRvIHN0b3AgYXQgdGhlIGV4YWN0IHBsYWNlIHdlCi0rCSAgICAvLyBoYXZlIHRvIHN0YXJ0IGFnYWluIGZyb20gdGhlIGJlZ2lubmluZyB3aXRoIGEgc2VyaWVzIG9mCi0rCSAgICAvLyB3Y3J0b21iLgotKwkgICAgZm9yICg7IF9fZnJvbSA8IF9fZnJvbV9uZXh0OyArK19fZnJvbSkKLSsJICAgICAgX190b19uZXh0ICs9IHdjcnRvbWIoX190b19uZXh0LCAqX19mcm9tLCAmX190bXBfc3RhdGUpOwotKwkgICAgX19zdGF0ZSA9IF9fdG1wX3N0YXRlOwotKwkgICAgX19yZXQgPSBlcnJvcjsKLSsJICB9Ci0rCWVsc2UgaWYgKF9fZnJvbV9uZXh0ICYmIF9fZnJvbV9uZXh0IDwgX19mcm9tX2NodW5rX2VuZCkKLSsJICB7Ci0rCSAgICBfX3RvX25leHQgKz0gX19jb252OwotKwkgICAgX19yZXQgPSBwYXJ0aWFsOwotKwkgIH0KLSsJZWxzZQotKwkgIHsKLSsJICAgIF9fZnJvbV9uZXh0ID0gX19mcm9tX2NodW5rX2VuZDsKLSsJICAgIF9fdG9fbmV4dCArPSBfX2NvbnY7Ci0rCSAgfQotKwotKwlpZiAoX19mcm9tX25leHQgPCBfX2Zyb21fZW5kICYmIF9fcmV0ID09IG9rKQotKwkgIHsKLSsJICAgIGV4dGVybl90eXBlIF9fYnVmW01CX0xFTl9NQVhdOwotKwkgICAgX190bXBfc3RhdGUgPSBfX3N0YXRlOwotKwkgICAgY29uc3Qgc2l6ZV90IF9fY29udiA9IHdjcnRvbWIoX19idWYsICpfX2Zyb21fbmV4dCwgJl9fdG1wX3N0YXRlKTsKLSsJICAgIGlmIChfX2NvbnYgPiBzdGF0aWNfY2FzdDxzaXplX3Q+KF9fdG9fZW5kIC0gX190b19uZXh0KSkKLSsJICAgICAgX19yZXQgPSBwYXJ0aWFsOwotKwkgICAgZWxzZQotKwkgICAgICB7Ci0rCQltZW1jcHkoX190b19uZXh0LCBfX2J1ZiwgX19jb252KTsKLSsJCV9fc3RhdGUgPSBfX3RtcF9zdGF0ZTsKLSsJCV9fdG9fbmV4dCArPSBfX2NvbnY7Ci0rCQkrK19fZnJvbV9uZXh0OwotKwkgICAgICB9Ci0rCSAgfQotKyAgICAgIH0KLSsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICBfX3VzZWxvY2FsZShfX29sZCk7Ci0rI2VuZGlmCi0rCi0rICAgIHJldHVybiBfX3JldDsKLSsgIH0KLSsKLSsgIGNvZGVjdnRfYmFzZTo6cmVzdWx0Ci0rICBjb2RlY3Z0PHdjaGFyX3QsIGNoYXIsIG1ic3RhdGVfdD46OgotKyAgZG9faW4oc3RhdGVfdHlwZSYgX19zdGF0ZSwgY29uc3QgZXh0ZXJuX3R5cGUqIF9fZnJvbSwKLSsJY29uc3QgZXh0ZXJuX3R5cGUqIF9fZnJvbV9lbmQsIGNvbnN0IGV4dGVybl90eXBlKiYgX19mcm9tX25leHQsCi0rCWludGVybl90eXBlKiBfX3RvLCBpbnRlcm5fdHlwZSogX190b19lbmQsCi0rCWludGVybl90eXBlKiYgX190b19uZXh0KSBjb25zdAotKyAgewotKyAgICByZXN1bHQgX19yZXQgPSBvazsKLSsgICAgc3RhdGVfdHlwZSBfX3RtcF9zdGF0ZShfX3N0YXRlKTsKLSsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICBfX2NfbG9jYWxlIF9fb2xkID0gX191c2Vsb2NhbGUoX01fY19sb2NhbGVfY29kZWN2dCk7Ci0rI2VuZGlmCi0rCi0rICAgIC8vIG1ic25ydG93Y3MgaXMgKnZlcnkqIGZhc3QgYnV0IHN0b3BzIGlmIGVuY291bnRlcnMgTlVMIGNoYXJhY3RlcnM6Ci0rICAgIC8vIGluIGNhc2Ugd2Ugc3RvcmUgYSBMJ1wwJyBhbmQgdGhlbiBjb250aW51ZSwgaW4gYSBsb29wLgotKyAgICAvLyBOQjogbWJzbnJ0b3djcyBpcyBhIEdOVSBleHRlbnNpb24KLSsgICAgZm9yIChfX2Zyb21fbmV4dCA9IF9fZnJvbSwgX190b19uZXh0ID0gX190bzsKLSsJIF9fZnJvbV9uZXh0IDwgX19mcm9tX2VuZCAmJiBfX3RvX25leHQgPCBfX3RvX2VuZAotKwkgJiYgX19yZXQgPT0gb2s7KQotKyAgICAgIHsKLSsJY29uc3QgZXh0ZXJuX3R5cGUqIF9fZnJvbV9jaHVua19lbmQ7Ci0rCV9fZnJvbV9jaHVua19lbmQgPSBzdGF0aWNfY2FzdDxjb25zdCBleHRlcm5fdHlwZSo+KG1lbWNocihfX2Zyb21fbmV4dCwgJ1wwJywKLSsJCQkJCQkJCSAgX19mcm9tX2VuZAotKwkJCQkJCQkJICAtIF9fZnJvbV9uZXh0KSk7Ci0rCWlmICghX19mcm9tX2NodW5rX2VuZCkKLSsJICBfX2Zyb21fY2h1bmtfZW5kID0gX19mcm9tX2VuZDsKLSsKLSsJX19mcm9tID0gX19mcm9tX25leHQ7Ci0rCXNpemVfdCBfX2NvbnYgPSBtYnNucnRvd2NzKF9fdG9fbmV4dCwgJl9fZnJvbV9uZXh0LAotKwkJCQkgICBfX2Zyb21fY2h1bmtfZW5kIC0gX19mcm9tX25leHQsCi0rCQkJCSAgIF9fdG9fZW5kIC0gX190b19uZXh0LCAmX19zdGF0ZSk7Ci0rCWlmIChfX2NvbnYgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PigtMSkpCi0rCSAgewotKwkgICAgLy8gSW4gY2FzZSBvZiBlcnJvciwgaW4gb3JkZXIgdG8gc3RvcCBhdCB0aGUgZXhhY3QgcGxhY2Ugd2UKLSsJICAgIC8vIGhhdmUgdG8gc3RhcnQgYWdhaW4gZnJvbSB0aGUgYmVnaW5uaW5nIHdpdGggYSBzZXJpZXMgb2YKLSsJICAgIC8vIG1icnRvd2MuCi0rCSAgICBmb3IgKDs7ICsrX190b19uZXh0LCBfX2Zyb20gKz0gX19jb252KQotKwkgICAgICB7Ci0rCQlfX2NvbnYgPSBtYnJ0b3djKF9fdG9fbmV4dCwgX19mcm9tLCBfX2Zyb21fZW5kIC0gX19mcm9tLAotKwkJCQkgJl9fdG1wX3N0YXRlKTsKLSsJCWlmIChfX2NvbnYgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PigtMSkKLSsJCSAgICB8fCBfX2NvbnYgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PigtMikpCi0rCQkgIGJyZWFrOwotKwkgICAgICB9Ci0rCSAgICBfX2Zyb21fbmV4dCA9IF9fZnJvbTsKLSsJICAgIF9fc3RhdGUgPSBfX3RtcF9zdGF0ZTsKLSsJICAgIF9fcmV0ID0gZXJyb3I7Ci0rCSAgfQotKwllbHNlIGlmIChfX2Zyb21fbmV4dCAmJiBfX2Zyb21fbmV4dCA8IF9fZnJvbV9jaHVua19lbmQpCi0rCSAgewotKwkgICAgLy8gSXQgaXMgdW5jbGVhciB3aGF0IHRvIHJldHVybiBpbiB0aGlzIGNhc2UgKHNlZSBEUiAzODIpLgotKwkgICAgX190b19uZXh0ICs9IF9fY29udjsKLSsJICAgIF9fcmV0ID0gcGFydGlhbDsKLSsJICB9Ci0rCWVsc2UKLSsJICB7Ci0rCSAgICBfX2Zyb21fbmV4dCA9IF9fZnJvbV9jaHVua19lbmQ7Ci0rCSAgICBfX3RvX25leHQgKz0gX19jb252OwotKwkgIH0KLSsKLSsJaWYgKF9fZnJvbV9uZXh0IDwgX19mcm9tX2VuZCAmJiBfX3JldCA9PSBvaykKLSsJICB7Ci0rCSAgICBpZiAoX190b19uZXh0IDwgX190b19lbmQpCi0rCSAgICAgIHsKLSsJCS8vIFhYWCBQcm9iYWJseSB3cm9uZyBmb3Igc3RhdGVmdWwgZW5jb2RpbmdzCi0rCQlfX3RtcF9zdGF0ZSA9IF9fc3RhdGU7Ci0rCQkrK19fZnJvbV9uZXh0OwotKwkJKl9fdG9fbmV4dCsrID0gTCdcMCc7Ci0rCSAgICAgIH0KLSsJICAgIGVsc2UKLSsJICAgICAgX19yZXQgPSBwYXJ0aWFsOwotKwkgIH0KLSsgICAgICB9Ci0rCi0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgX191c2Vsb2NhbGUoX19vbGQpOwotKyNlbmRpZgotKwotKyAgICByZXR1cm4gX19yZXQ7Ci0rICB9Ci0rCi0rICBpbnQKLSsgIGNvZGVjdnQ8d2NoYXJfdCwgY2hhciwgbWJzdGF0ZV90Pjo6Ci0rICBkb19lbmNvZGluZygpIGNvbnN0IHRocm93KCkKLSsgIHsKLSsgICAgLy8gWFhYIFRoaXMgaW1wbGVtZW50YXRpb24gYXNzdW1lcyB0aGF0IHRoZSBlbmNvZGluZyBpcwotKyAgICAvLyBzdGF0ZWxlc3MgYW5kIGlzIGVpdGhlciBzaW5nbGUtYnl0ZSBvciB2YXJpYWJsZS13aWR0aC4KLSsgICAgaW50IF9fcmV0ID0gMDsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICBfX2NfbG9jYWxlIF9fb2xkID0gX191c2Vsb2NhbGUoX01fY19sb2NhbGVfY29kZWN2dCk7Ci0rI2VuZGlmCi0rICAgIGlmIChNQl9DVVJfTUFYID09IDEpCi0rICAgICAgX19yZXQgPSAxOwotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rICAgIF9fdXNlbG9jYWxlKF9fb2xkKTsKLSsjZW5kaWYKLSsgICAgcmV0dXJuIF9fcmV0OwotKyAgfQotKwotKyAgaW50Ci0rICBjb2RlY3Z0PHdjaGFyX3QsIGNoYXIsIG1ic3RhdGVfdD46OgotKyAgZG9fbWF4X2xlbmd0aCgpIGNvbnN0IHRocm93KCkKLSsgIHsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICBfX2NfbG9jYWxlIF9fb2xkID0gX191c2Vsb2NhbGUoX01fY19sb2NhbGVfY29kZWN2dCk7Ci0rI2VuZGlmCi0rICAgIC8vIFhYWCBQcm9iYWJseSB3cm9uZyBmb3Igc3RhdGVmdWwgZW5jb2RpbmdzLgotKyAgICBpbnQgX19yZXQgPSBNQl9DVVJfTUFYOwotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rICAgIF9fdXNlbG9jYWxlKF9fb2xkKTsKLSsjZW5kaWYKLSsgICAgcmV0dXJuIF9fcmV0OwotKyAgfQotKwotKyAgaW50Ci0rICBjb2RlY3Z0PHdjaGFyX3QsIGNoYXIsIG1ic3RhdGVfdD46OgotKyAgZG9fbGVuZ3RoKHN0YXRlX3R5cGUmIF9fc3RhdGUsIGNvbnN0IGV4dGVybl90eXBlKiBfX2Zyb20sCi0rCSAgICBjb25zdCBleHRlcm5fdHlwZSogX19lbmQsIHNpemVfdCBfX21heCkgY29uc3QKLSsgIHsKLSsgICAgaW50IF9fcmV0ID0gMDsKLSsgICAgc3RhdGVfdHlwZSBfX3RtcF9zdGF0ZShfX3N0YXRlKTsKLSsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICBfX2NfbG9jYWxlIF9fb2xkID0gX191c2Vsb2NhbGUoX01fY19sb2NhbGVfY29kZWN2dCk7Ci0rI2VuZGlmCi0rCi0rICAgIC8vIG1ic25ydG93Y3MgaXMgKnZlcnkqIGZhc3QgYnV0IHN0b3BzIGlmIGVuY291bnRlcnMgTlVMIGNoYXJhY3RlcnM6Ci0rICAgIC8vIGluIGNhc2Ugd2UgYWR2YW5jZSBwYXN0IGl0IGFuZCB0aGVuIGNvbnRpbnVlLCBpbiBhIGxvb3AuCi0rICAgIC8vIE5COiBtYnNucnRvd2NzIGlzIGEgR05VIGV4dGVuc2lvbgotKwotKyAgICAvLyBBIGR1bW15IGludGVybmFsIGJ1ZmZlciBpcyBuZWVkZWQgaW4gb3JkZXIgZm9yIG1ic25ydG9jd3MgdG8gY29uc2lkZXIKLSsgICAgLy8gaXRzIGZvdXJ0aCBwYXJhbWV0ZXIgKGl0IHdvdWxkbid0IHdpdGggTlVMTCBhcyBmaXJzdCBwYXJhbWV0ZXIpLgotKyAgICB3Y2hhcl90KiBfX3RvID0gc3RhdGljX2Nhc3Q8d2NoYXJfdCo+KF9fYnVpbHRpbl9hbGxvY2Eoc2l6ZW9mKHdjaGFyX3QpCi0rCQkJCQkJCSAgICogX19tYXgpKTsKLSsgICAgd2hpbGUgKF9fZnJvbSA8IF9fZW5kICYmIF9fbWF4KQotKyAgICAgIHsKLSsJY29uc3QgZXh0ZXJuX3R5cGUqIF9fZnJvbV9jaHVua19lbmQ7Ci0rCV9fZnJvbV9jaHVua19lbmQgPSBzdGF0aWNfY2FzdDxjb25zdCBleHRlcm5fdHlwZSo+KG1lbWNocihfX2Zyb20sICdcMCcsCi0rCQkJCQkJCQkgIF9fZW5kCi0rCQkJCQkJCQkgIC0gX19mcm9tKSk7Ci0rCWlmICghX19mcm9tX2NodW5rX2VuZCkKLSsJICBfX2Zyb21fY2h1bmtfZW5kID0gX19lbmQ7Ci0rCi0rCWNvbnN0IGV4dGVybl90eXBlKiBfX3RtcF9mcm9tID0gX19mcm9tOwotKwlzaXplX3QgX19jb252ID0gbWJzbnJ0b3djcyhfX3RvLCAmX19mcm9tLAotKwkJCQkgICBfX2Zyb21fY2h1bmtfZW5kIC0gX19mcm9tLAotKwkJCQkgICBfX21heCwgJl9fc3RhdGUpOwotKwlpZiAoX19jb252ID09IHN0YXRpY19jYXN0PHNpemVfdD4oLTEpKQotKwkgIHsKLSsJICAgIC8vIEluIGNhc2Ugb2YgZXJyb3IsIGluIG9yZGVyIHRvIHN0b3AgYXQgdGhlIGV4YWN0IHBsYWNlIHdlCi0rCSAgICAvLyBoYXZlIHRvIHN0YXJ0IGFnYWluIGZyb20gdGhlIGJlZ2lubmluZyB3aXRoIGEgc2VyaWVzIG9mCi0rCSAgICAvLyBtYnJ0b3djLgotKwkgICAgZm9yIChfX2Zyb20gPSBfX3RtcF9mcm9tOzsgX19mcm9tICs9IF9fY29udikKLSsJICAgICAgewotKwkJX19jb252ID0gbWJydG93YyhOVUxMLCBfX2Zyb20sIF9fZW5kIC0gX19mcm9tLAotKwkJCQkgJl9fdG1wX3N0YXRlKTsKLSsJCWlmIChfX2NvbnYgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PigtMSkKLSsJCSAgICB8fCBfX2NvbnYgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PigtMikpCi0rCQkgIGJyZWFrOwotKwkgICAgICB9Ci0rCSAgICBfX3N0YXRlID0gX190bXBfc3RhdGU7Ci0rCSAgICBfX3JldCArPSBfX2Zyb20gLSBfX3RtcF9mcm9tOwotKwkgICAgYnJlYWs7Ci0rCSAgfQotKwlpZiAoIV9fZnJvbSkKLSsJICBfX2Zyb20gPSBfX2Zyb21fY2h1bmtfZW5kOwotKwotKwlfX3JldCArPSBfX2Zyb20gLSBfX3RtcF9mcm9tOwotKwlfX21heCAtPSBfX2NvbnY7Ci0rCi0rCWlmIChfX2Zyb20gPCBfX2VuZCAmJiBfX21heCkKLSsJICB7Ci0rCSAgICAvLyBYWFggUHJvYmFibHkgd3JvbmcgZm9yIHN0YXRlZnVsIGVuY29kaW5ncwotKwkgICAgX190bXBfc3RhdGUgPSBfX3N0YXRlOwotKwkgICAgKytfX2Zyb207Ci0rCSAgICArK19fcmV0OwotKwkgICAgLS1fX21heDsKLSsJICB9Ci0rICAgICAgfQotKwotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rICAgIF9fdXNlbG9jYWxlKF9fb2xkKTsKLSsjZW5kaWYKLSsKLSsgICAgcmV0dXJuIF9fcmV0OwotKyAgfQotKyNlbmRpZgotK30KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY29sbGF0ZV9tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NvbGxhdGVfbWVtYmVycy5jYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmMyNjY0YTcKLS0tLSAvZGV2L251bGwKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jb2xsYXRlX21lbWJlcnMuY2MKLUBAIC0wLDAgKzEsODAgQEAKLSsvLyBzdGQ6OmNvbGxhdGUgaW1wbGVtZW50YXRpb24gZGV0YWlscywgR05VIHZlcnNpb24gLSotIEMrKyAtKi0KLSsKLSsvLyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLy8KLSsvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlCi0rLy8gc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlCi0rLy8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLSsvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsvLyBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsvLyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKy8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi0rLy8gd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKy8vIFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKy8vIFVTQS4KLSsKLSsvLyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIGZyZWUgc29mdHdhcmUKLSsvLyBsaWJyYXJ5IHdpdGhvdXQgcmVzdHJpY3Rpb24uICBTcGVjaWZpY2FsbHksIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlCi0rLy8gdGVtcGxhdGVzIG9yIHVzZSBtYWNyb3Mgb3IgaW5saW5lIGZ1bmN0aW9ucyBmcm9tIHRoaXMgZmlsZSwgb3IgeW91IGNvbXBpbGUKLSsvLyB0aGlzIGZpbGUgYW5kIGxpbmsgaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuIGV4ZWN1dGFibGUsIHRoaXMKLSsvLyBmaWxlIGRvZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoaXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIKLSsvLyBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCi0rCi0rLy8KLSsvLyBJU08gQysrIDE0ODgyOiAyMi4yLjQuMS4yICBjb2xsYXRlIHZpcnR1YWwgZnVuY3Rpb25zCi0rLy8KLSsKLSsvLyBXcml0dGVuIGJ5IEJlbmphbWluIEtvc25payA8YmtvekByZWRoYXQuY29tPgotKwotKyNpbmNsdWRlIDxsb2NhbGU+Ci0rI2luY2x1ZGUgPGJpdHMvYysrbG9jYWxlX2ludGVybmFsLmg+Ci0rCi0rI2lmbmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rI2RlZmluZSBfX3N0cmNvbGxfbChTMSwgUzIsIEwpICAgICAgc3RyY29sbCgoUzEpLCAoUzIpKQotKyNkZWZpbmUgX19zdHJ4ZnJtX2woUzEsIFMyLCBOLCBMKSAgIHN0cnhmcm0oKFMxKSwgKFMyKSwgKE4pKQotKyNkZWZpbmUgX193Y3Njb2xsX2woUzEsIFMyLCBMKSAgICAgIHdjc2NvbGwoKFMxKSwgKFMyKSkKLSsjZGVmaW5lIF9fd2NzeGZybV9sKFMxLCBTMiwgTiwgTCkgICB3Y3N4ZnJtKChTMSksIChTMiksIChOKSkKLSsjZW5kaWYKLSsKLStuYW1lc3BhY2Ugc3RkCi0rewotKyAgLy8gVGhlc2UgYXJlIGJhc2ljYWxseSBleHRlbnNpb25zIHRvIGNoYXJfdHJhaXRzLCBhbmQgcGVyaGFwcyBzaG91bGQKLSsgIC8vIGJlIHB1dCB0aGVyZSBpbnN0ZWFkIG9mIGhlcmUuCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIGludAotKyAgICBjb2xsYXRlPGNoYXI+OjpfTV9jb21wYXJlKGNvbnN0IGNoYXIqIF9fb25lLCBjb25zdCBjaGFyKiBfX3R3bykgY29uc3QKLSsgICAgewotKyAgICAgIGludCBfX2NtcCA9IF9fc3RyY29sbF9sKF9fb25lLCBfX3R3bywgX01fY19sb2NhbGVfY29sbGF0ZSk7Ci0rICAgICAgcmV0dXJuIChfX2NtcCA+PiAoOCAqIHNpemVvZiAoaW50KSAtIDIpKSB8IChfX2NtcCAhPSAwKTsKLSsgICAgfQotKwotKyAgdGVtcGxhdGU8PgotKyAgICBzaXplX3QKLSsgICAgY29sbGF0ZTxjaGFyPjo6X01fdHJhbnNmb3JtKGNoYXIqIF9fdG8sIGNvbnN0IGNoYXIqIF9fZnJvbSwKLSsJCQkJc2l6ZV90IF9fbikgY29uc3QKLSsgICAgeyByZXR1cm4gX19zdHJ4ZnJtX2woX190bywgX19mcm9tLCBfX24sIF9NX2NfbG9jYWxlX2NvbGxhdGUpOyB9Ci0rCi0rI2lmZGVmIF9HTElCQ1hYX1VTRV9XQ0hBUl9UCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIGludAotKyAgICBjb2xsYXRlPHdjaGFyX3Q+OjpfTV9jb21wYXJlKGNvbnN0IHdjaGFyX3QqIF9fb25lLAotKwkJCQkgY29uc3Qgd2NoYXJfdCogX190d28pIGNvbnN0Ci0rICAgIHsKLSsgICAgICBpbnQgX19jbXAgPSBfX3djc2NvbGxfbChfX29uZSwgX190d28sIF9NX2NfbG9jYWxlX2NvbGxhdGUpOwotKyAgICAgIHJldHVybiAoX19jbXAgPj4gKDggKiBzaXplb2YgKGludCkgLSAyKSkgfCAoX19jbXAgIT0gMCk7Ci0rICAgIH0KLSsKLSsgIHRlbXBsYXRlPD4KLSsgICAgc2l6ZV90Ci0rICAgIGNvbGxhdGU8d2NoYXJfdD46Ol9NX3RyYW5zZm9ybSh3Y2hhcl90KiBfX3RvLCBjb25zdCB3Y2hhcl90KiBfX2Zyb20sCi0rCQkJCSAgIHNpemVfdCBfX24pIGNvbnN0Ci0rICAgIHsgcmV0dXJuIF9fd2NzeGZybV9sKF9fdG8sIF9fZnJvbSwgX19uLCBfTV9jX2xvY2FsZV9jb2xsYXRlKTsgfQotKyNlbmRpZgotK30KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY3R5cGVfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jdHlwZV9tZW1iZXJzLmNjCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNzI5NGUzYQotLS0tIC9kZXYvbnVsbAotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2N0eXBlX21lbWJlcnMuY2MKLUBAIC0wLDAgKzEsMzAwIEBACi0rLy8gc3RkOjpjdHlwZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLCBHTlUgdmVyc2lvbiAtKi0gQysrIC0qLQotKwotKy8vIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvLwotKy8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgSVNPIEMrKyBMaWJyYXJ5LiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUKLSsvLyBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUKLSsvLyB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotKy8vIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKy8vIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKy8vIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKy8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKy8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSsvLyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rLy8gU29mdHdhcmUgRm91bmRhdGlvbiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rLy8gVVNBLgotKwotKy8vIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHlvdSBtYXkgdXNlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgZnJlZSBzb2Z0d2FyZQotKy8vIGxpYnJhcnkgd2l0aG91dCByZXN0cmljdGlvbi4gIFNwZWNpZmljYWxseSwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUKLSsvLyB0ZW1wbGF0ZXMgb3IgdXNlIG1hY3JvcyBvciBpbmxpbmUgZnVuY3Rpb25zIGZyb20gdGhpcyBmaWxlLCBvciB5b3UgY29tcGlsZQotKy8vIHRoaXMgZmlsZSBhbmQgbGluayBpdCB3aXRoIG90aGVyIGZpbGVzIHRvIHByb2R1Y2UgYW4gZXhlY3V0YWJsZSwgdGhpcwotKy8vIGZpbGUgZG9lcyBub3QgYnkgaXRzZWxmIGNhdXNlIHRoZSByZXN1bHRpbmcgZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhpcyBleGNlcHRpb24gZG9lcyBub3QgaG93ZXZlcgotKy8vIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSBleGVjdXRhYmxlIGZpbGUgbWlnaHQgYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KLSsKLSsvLwotKy8vIElTTyBDKysgMTQ4ODI6IDIyLjIuMS4xLjIgIGN0eXBlIHZpcnR1YWwgZnVuY3Rpb25zLgotKy8vCi0rCi0rLy8gV3JpdHRlbiBieSBCZW5qYW1pbiBLb3NuaWsgPGJrb3pAcmVkaGF0LmNvbT4KLSsKLSsjZGVmaW5lIF9MSUJDCi0rI2luY2x1ZGUgPGxvY2FsZT4KLSsjdW5kZWYgX0xJQkMKLSsjaW5jbHVkZSA8Yml0cy9jKytsb2NhbGVfaW50ZXJuYWwuaD4KLSsKLSsjaWZuZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsjZGVmaW5lIF9fd2N0eXBlX2woUywgTCkgICAgICAgICAgIHdjdHlwZSgoUykpCi0rI2RlZmluZSBfX3Rvd3VwcGVyX2woQywgTCkgICAgICAgICB0b3d1cHBlcigoQykpCi0rI2RlZmluZSBfX3Rvd2xvd2VyX2woQywgTCkgICAgICAgICB0b3dsb3dlcigoQykpCi0rI2RlZmluZSBfX2lzd2N0eXBlX2woQywgTSwgTCkgICAgICBpc3djdHlwZSgoQyksIChNKSkKLSsjZW5kaWYKLSsKLStuYW1lc3BhY2Ugc3RkCi0rewotKyAgLy8gTkI6IFRoZSBvdGhlciBjdHlwZTxjaGFyPiBzcGVjaWFsaXphdGlvbnMgYXJlIGluIHNyYy9sb2NhbGUuY2MgYW5kCi0rICAvLyB2YXJpb3VzIC9jb25maWcvb3MvKiBmaWxlcy4KLSsgIHRlbXBsYXRlPD4KLSsgICAgY3R5cGVfYnluYW1lPGNoYXI+OjpjdHlwZV9ieW5hbWUoY29uc3QgY2hhciogX19zLCBzaXplX3QgX19yZWZzKQotKyAgICA6IGN0eXBlPGNoYXI+KDAsIGZhbHNlLCBfX3JlZnMpCi0rICAgIHsKLSsgICAgICBpZiAoc3RkOjpzdHJjbXAoX19zLCAiQyIpICE9IDAgJiYgc3RkOjpzdHJjbXAoX19zLCAiUE9TSVgiKSAhPSAwKQotKwl7Ci0rCSAgdGhpcy0+X1NfZGVzdHJveV9jX2xvY2FsZSh0aGlzLT5fTV9jX2xvY2FsZV9jdHlwZSk7Ci0rCSAgdGhpcy0+X1NfY3JlYXRlX2NfbG9jYWxlKHRoaXMtPl9NX2NfbG9jYWxlX2N0eXBlLCBfX3MpOwotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rCSAgdGhpcy0+X01fdG91cHBlciA9IHRoaXMtPl9NX2NfbG9jYWxlX2N0eXBlLT5fX2N0eXBlX3RvdXBwZXI7Ci0rCSAgdGhpcy0+X01fdG9sb3dlciA9IHRoaXMtPl9NX2NfbG9jYWxlX2N0eXBlLT5fX2N0eXBlX3RvbG93ZXI7Ci0rCSAgdGhpcy0+X01fdGFibGUgPSB0aGlzLT5fTV9jX2xvY2FsZV9jdHlwZS0+X19jdHlwZV9iOwotKyNlbmRpZgotKwl9Ci0rICAgIH0KLSsKLSsjaWZkZWYgX0dMSUJDWFhfVVNFX1dDSEFSX1QKLSsgIGN0eXBlPHdjaGFyX3Q+OjpfX3dtYXNrX3R5cGUKLSsgIGN0eXBlPHdjaGFyX3Q+OjpfTV9jb252ZXJ0X3RvX3dtYXNrKGNvbnN0IG1hc2sgX19tKSBjb25zdAotKyAgewotKyAgICBfX3dtYXNrX3R5cGUgX19yZXQ7Ci0rICAgIHN3aXRjaCAoX19tKQotKyAgICAgIHsKLSsgICAgICBjYXNlIHNwYWNlOgotKwlfX3JldCA9IF9fd2N0eXBlX2woInNwYWNlIiwgX01fY19sb2NhbGVfY3R5cGUpOwotKwlicmVhazsKLSsgICAgICBjYXNlIHByaW50OgotKwlfX3JldCA9IF9fd2N0eXBlX2woInByaW50IiwgX01fY19sb2NhbGVfY3R5cGUpOwotKwlicmVhazsKLSsgICAgICBjYXNlIGNudHJsOgotKwlfX3JldCA9IF9fd2N0eXBlX2woImNudHJsIiwgX01fY19sb2NhbGVfY3R5cGUpOwotKwlicmVhazsKLSsgICAgICBjYXNlIHVwcGVyOgotKwlfX3JldCA9IF9fd2N0eXBlX2woInVwcGVyIiwgX01fY19sb2NhbGVfY3R5cGUpOwotKwlicmVhazsKLSsgICAgICBjYXNlIGxvd2VyOgotKwlfX3JldCA9IF9fd2N0eXBlX2woImxvd2VyIiwgX01fY19sb2NhbGVfY3R5cGUpOwotKwlicmVhazsKLSsgICAgICBjYXNlIGFscGhhOgotKwlfX3JldCA9IF9fd2N0eXBlX2woImFscGhhIiwgX01fY19sb2NhbGVfY3R5cGUpOwotKwlicmVhazsKLSsgICAgICBjYXNlIGRpZ2l0OgotKwlfX3JldCA9IF9fd2N0eXBlX2woImRpZ2l0IiwgX01fY19sb2NhbGVfY3R5cGUpOwotKwlicmVhazsKLSsgICAgICBjYXNlIHB1bmN0OgotKwlfX3JldCA9IF9fd2N0eXBlX2woInB1bmN0IiwgX01fY19sb2NhbGVfY3R5cGUpOwotKwlicmVhazsKLSsgICAgICBjYXNlIHhkaWdpdDoKLSsJX19yZXQgPSBfX3djdHlwZV9sKCJ4ZGlnaXQiLCBfTV9jX2xvY2FsZV9jdHlwZSk7Ci0rCWJyZWFrOwotKyAgICAgIGNhc2UgYWxudW06Ci0rCV9fcmV0ID0gX193Y3R5cGVfbCgiYWxudW0iLCBfTV9jX2xvY2FsZV9jdHlwZSk7Ci0rCWJyZWFrOwotKyAgICAgIGNhc2UgZ3JhcGg6Ci0rCV9fcmV0ID0gX193Y3R5cGVfbCgiZ3JhcGgiLCBfTV9jX2xvY2FsZV9jdHlwZSk7Ci0rCWJyZWFrOwotKyAgICAgIGRlZmF1bHQ6Ci0rCV9fcmV0ID0gX193bWFza190eXBlKCk7Ci0rICAgICAgfQotKyAgICByZXR1cm4gX19yZXQ7Ci0rICB9Ci0rCi0rICB3Y2hhcl90Ci0rICBjdHlwZTx3Y2hhcl90Pjo6ZG9fdG91cHBlcih3Y2hhcl90IF9fYykgY29uc3QKLSsgIHsgcmV0dXJuIF9fdG93dXBwZXJfbChfX2MsIF9NX2NfbG9jYWxlX2N0eXBlKTsgfQotKwotKyAgY29uc3Qgd2NoYXJfdCoKLSsgIGN0eXBlPHdjaGFyX3Q+Ojpkb190b3VwcGVyKHdjaGFyX3QqIF9fbG8sIGNvbnN0IHdjaGFyX3QqIF9faGkpIGNvbnN0Ci0rICB7Ci0rICAgIHdoaWxlIChfX2xvIDwgX19oaSkKLSsgICAgICB7Ci0rICAgICAgICAqX19sbyA9IF9fdG93dXBwZXJfbCgqX19sbywgX01fY19sb2NhbGVfY3R5cGUpOwotKyAgICAgICAgKytfX2xvOwotKyAgICAgIH0KLSsgICAgcmV0dXJuIF9faGk7Ci0rICB9Ci0rCi0rICB3Y2hhcl90Ci0rICBjdHlwZTx3Y2hhcl90Pjo6ZG9fdG9sb3dlcih3Y2hhcl90IF9fYykgY29uc3QKLSsgIHsgcmV0dXJuIF9fdG93bG93ZXJfbChfX2MsIF9NX2NfbG9jYWxlX2N0eXBlKTsgfQotKwotKyAgY29uc3Qgd2NoYXJfdCoKLSsgIGN0eXBlPHdjaGFyX3Q+Ojpkb190b2xvd2VyKHdjaGFyX3QqIF9fbG8sIGNvbnN0IHdjaGFyX3QqIF9faGkpIGNvbnN0Ci0rICB7Ci0rICAgIHdoaWxlIChfX2xvIDwgX19oaSkKLSsgICAgICB7Ci0rICAgICAgICAqX19sbyA9IF9fdG93bG93ZXJfbCgqX19sbywgX01fY19sb2NhbGVfY3R5cGUpOwotKyAgICAgICAgKytfX2xvOwotKyAgICAgIH0KLSsgICAgcmV0dXJuIF9faGk7Ci0rICB9Ci0rCi0rICBib29sCi0rICBjdHlwZTx3Y2hhcl90Pjo6Ci0rICBkb19pcyhtYXNrIF9fbSwgd2NoYXJfdCBfX2MpIGNvbnN0Ci0rICB7Ci0rICAgIC8vIEhpZ2hlc3QgYml0bWFzayBpbiBjdHlwZV9iYXNlID09IDEwLCBidXQgZXh0cmEgaW4gIkMiCi0rICAgIC8vIGxpYnJhcnkgZm9yIGJsYW5rLgotKyAgICBib29sIF9fcmV0ID0gZmFsc2U7Ci0rICAgIGNvbnN0IHNpemVfdCBfX2JpdG1hc2tzaXplID0gMTE7Ci0rICAgIGZvciAoc2l6ZV90IF9fYml0Y3VyID0gMDsgX19iaXRjdXIgPD0gX19iaXRtYXNrc2l6ZTsgKytfX2JpdGN1cikKLSsgICAgICBpZiAoX19tICYgX01fYml0W19fYml0Y3VyXQotKwkgICYmIF9faXN3Y3R5cGVfbChfX2MsIF9NX3dtYXNrW19fYml0Y3VyXSwgX01fY19sb2NhbGVfY3R5cGUpKQotKwl7Ci0rCSAgX19yZXQgPSB0cnVlOwotKwkgIGJyZWFrOwotKwl9Ci0rICAgIHJldHVybiBfX3JldDsKLSsgIH0KLSsKLSsgIGNvbnN0IHdjaGFyX3QqCi0rICBjdHlwZTx3Y2hhcl90Pjo6Ci0rICBkb19pcyhjb25zdCB3Y2hhcl90KiBfX2xvLCBjb25zdCB3Y2hhcl90KiBfX2hpLCBtYXNrKiBfX3ZlYykgY29uc3QKLSsgIHsKLSsgICAgZm9yICg7IF9fbG8gPCBfX2hpOyArK19fdmVjLCArK19fbG8pCi0rICAgICAgewotKwkvLyBIaWdoZXN0IGJpdG1hc2sgaW4gY3R5cGVfYmFzZSA9PSAxMCwgYnV0IGV4dHJhIGluICJDIgotKwkvLyBsaWJyYXJ5IGZvciBibGFuay4KLSsJY29uc3Qgc2l6ZV90IF9fYml0bWFza3NpemUgPSAxMTsKLSsJbWFzayBfX20gPSAwOwotKwlmb3IgKHNpemVfdCBfX2JpdGN1ciA9IDA7IF9fYml0Y3VyIDw9IF9fYml0bWFza3NpemU7ICsrX19iaXRjdXIpCi0rCSAgaWYgKF9faXN3Y3R5cGVfbCgqX19sbywgX01fd21hc2tbX19iaXRjdXJdLCBfTV9jX2xvY2FsZV9jdHlwZSkpCi0rCSAgICBfX20gfD0gX01fYml0W19fYml0Y3VyXTsKLSsJKl9fdmVjID0gX19tOwotKyAgICAgIH0KLSsgICAgcmV0dXJuIF9faGk7Ci0rICB9Ci0rCi0rICBjb25zdCB3Y2hhcl90KgotKyAgY3R5cGU8d2NoYXJfdD46OgotKyAgZG9fc2Nhbl9pcyhtYXNrIF9fbSwgY29uc3Qgd2NoYXJfdCogX19sbywgY29uc3Qgd2NoYXJfdCogX19oaSkgY29uc3QKLSsgIHsKLSsgICAgd2hpbGUgKF9fbG8gPCBfX2hpICYmICF0aGlzLT5kb19pcyhfX20sICpfX2xvKSkKLSsgICAgICArK19fbG87Ci0rICAgIHJldHVybiBfX2xvOwotKyAgfQotKwotKyAgY29uc3Qgd2NoYXJfdCoKLSsgIGN0eXBlPHdjaGFyX3Q+OjoKLSsgIGRvX3NjYW5fbm90KG1hc2sgX19tLCBjb25zdCBjaGFyX3R5cGUqIF9fbG8sIGNvbnN0IGNoYXJfdHlwZSogX19oaSkgY29uc3QKLSsgIHsKLSsgICAgd2hpbGUgKF9fbG8gPCBfX2hpICYmIHRoaXMtPmRvX2lzKF9fbSwgKl9fbG8pICE9IDApCi0rICAgICAgKytfX2xvOwotKyAgICByZXR1cm4gX19sbzsKLSsgIH0KLSsKLSsgIHdjaGFyX3QKLSsgIGN0eXBlPHdjaGFyX3Q+OjoKLSsgIGRvX3dpZGVuKGNoYXIgX19jKSBjb25zdAotKyAgeyByZXR1cm4gX01fd2lkZW5bc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oX19jKV07IH0KLSsKLSsgIGNvbnN0IGNoYXIqCi0rICBjdHlwZTx3Y2hhcl90Pjo6Ci0rICBkb193aWRlbihjb25zdCBjaGFyKiBfX2xvLCBjb25zdCBjaGFyKiBfX2hpLCB3Y2hhcl90KiBfX2Rlc3QpIGNvbnN0Ci0rICB7Ci0rICAgIHdoaWxlIChfX2xvIDwgX19oaSkKLSsgICAgICB7Ci0rCSpfX2Rlc3QgPSBfTV93aWRlbltzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigqX19sbyldOwotKwkrK19fbG87Ci0rCSsrX19kZXN0OwotKyAgICAgIH0KLSsgICAgcmV0dXJuIF9faGk7Ci0rICB9Ci0rCi0rICBjaGFyCi0rICBjdHlwZTx3Y2hhcl90Pjo6Ci0rICBkb19uYXJyb3cod2NoYXJfdCBfX3djLCBjaGFyIF9fZGZhdWx0KSBjb25zdAotKyAgewotKyAgICBpZiAoX193YyA+PSAwICYmIF9fd2MgPCAxMjggJiYgX01fbmFycm93X29rKQotKyAgICAgIHJldHVybiBfTV9uYXJyb3dbX193Y107Ci0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgX19jX2xvY2FsZSBfX29sZCA9IF9fdXNlbG9jYWxlKF9NX2NfbG9jYWxlX2N0eXBlKTsKLSsjZW5kaWYKLSsgICAgY29uc3QgaW50IF9fYyA9IHdjdG9iKF9fd2MpOwotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rICAgIF9fdXNlbG9jYWxlKF9fb2xkKTsKLSsjZW5kaWYKLSsgICAgcmV0dXJuIChfX2MgPT0gRU9GID8gX19kZmF1bHQgOiBzdGF0aWNfY2FzdDxjaGFyPihfX2MpKTsKLSsgIH0KLSsKLSsgIGNvbnN0IHdjaGFyX3QqCi0rICBjdHlwZTx3Y2hhcl90Pjo6Ci0rICBkb19uYXJyb3coY29uc3Qgd2NoYXJfdCogX19sbywgY29uc3Qgd2NoYXJfdCogX19oaSwgY2hhciBfX2RmYXVsdCwKLSsJICAgIGNoYXIqIF9fZGVzdCkgY29uc3QKLSsgIHsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICBfX2NfbG9jYWxlIF9fb2xkID0gX191c2Vsb2NhbGUoX01fY19sb2NhbGVfY3R5cGUpOwotKyNlbmRpZgotKyAgICBpZiAoX01fbmFycm93X29rKQotKyAgICAgIHdoaWxlIChfX2xvIDwgX19oaSkKLSsJewotKwkgIGlmICgqX19sbyA+PSAwICYmICpfX2xvIDwgMTI4KQotKwkgICAgKl9fZGVzdCA9IF9NX25hcnJvd1sqX19sb107Ci0rCSAgZWxzZQotKwkgICAgewotKwkgICAgICBjb25zdCBpbnQgX19jID0gd2N0b2IoKl9fbG8pOwotKwkgICAgICAqX19kZXN0ID0gKF9fYyA9PSBFT0YgPyBfX2RmYXVsdCA6IHN0YXRpY19jYXN0PGNoYXI+KF9fYykpOwotKwkgICAgfQotKwkgICsrX19sbzsKLSsJICArK19fZGVzdDsKLSsJfQotKyAgICBlbHNlCi0rICAgICAgd2hpbGUgKF9fbG8gPCBfX2hpKQotKwl7Ci0rCSAgY29uc3QgaW50IF9fYyA9IHdjdG9iKCpfX2xvKTsKLSsJICAqX19kZXN0ID0gKF9fYyA9PSBFT0YgPyBfX2RmYXVsdCA6IHN0YXRpY19jYXN0PGNoYXI+KF9fYykpOwotKwkgICsrX19sbzsKLSsJICArK19fZGVzdDsKLSsJfQotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rICAgIF9fdXNlbG9jYWxlKF9fb2xkKTsKLSsjZW5kaWYKLSsgICAgcmV0dXJuIF9faGk7Ci0rICB9Ci0rCi0rICB2b2lkCi0rICBjdHlwZTx3Y2hhcl90Pjo6X01faW5pdGlhbGl6ZV9jdHlwZSgpCi0rICB7Ci0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgX19jX2xvY2FsZSBfX29sZCA9IF9fdXNlbG9jYWxlKF9NX2NfbG9jYWxlX2N0eXBlKTsKLSsjZW5kaWYKLSsgICAgd2ludF90IF9faTsKLSsgICAgZm9yIChfX2kgPSAwOyBfX2kgPCAxMjg7ICsrX19pKQotKyAgICAgIHsKLSsJY29uc3QgaW50IF9fYyA9IHdjdG9iKF9faSk7Ci0rCWlmIChfX2MgPT0gRU9GKQotKwkgIGJyZWFrOwotKwllbHNlCi0rCSAgX01fbmFycm93W19faV0gPSBzdGF0aWNfY2FzdDxjaGFyPihfX2MpOwotKyAgICAgIH0KLSsgICAgaWYgKF9faSA9PSAxMjgpCi0rICAgICAgX01fbmFycm93X29rID0gdHJ1ZTsKLSsgICAgZWxzZQotKyAgICAgIF9NX25hcnJvd19vayA9IGZhbHNlOwotKyAgICBmb3IgKHNpemVfdCBfX2ogPSAwOwotKwkgX19qIDwgc2l6ZW9mKF9NX3dpZGVuKSAvIHNpemVvZih3aW50X3QpOyArK19faikKLSsgICAgICBfTV93aWRlbltfX2pdID0gYnRvd2MoX19qKTsKLSsKLSsgICAgZm9yIChzaXplX3QgX19rID0gMDsgX19rIDw9IDExOyArK19faykKLSsgICAgICB7Ci0rCV9NX2JpdFtfX2tdID0gc3RhdGljX2Nhc3Q8bWFzaz4oX0lTYml0KF9faykpOwotKwlfTV93bWFza1tfX2tdID0gX01fY29udmVydF90b193bWFzayhfTV9iaXRbX19rXSk7Ci0rICAgICAgfQotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rICAgIF9fdXNlbG9jYWxlKF9fb2xkKTsKLSsjZW5kaWYKLSsgIH0KLSsjZW5kaWYgLy8gIF9HTElCQ1hYX1VTRV9XQ0hBUl9UCi0rfQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuY2MKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4xMzU5NGQ5Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5jYwotQEAgLTAsMCArMSwxMDAgQEAKLSsvLyBzdGQ6Om1lc3NhZ2VzIGltcGxlbWVudGF0aW9uIGRldGFpbHMsIEdOVSB2ZXJzaW9uIC0qLSBDKysgLSotCi0rCi0rLy8gQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8vCi0rLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBJU08gQysrIExpYnJhcnkuICBUaGlzIGxpYnJhcnkgaXMgZnJlZQotKy8vIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZQotKy8vIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCi0rLy8gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rLy8gYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rLy8gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsvLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsvLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotKy8vIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSsvLyBTb2Z0d2FyZSBGb3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsvLyBVU0EuCi0rCi0rLy8gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgeW91IG1heSB1c2UgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBmcmVlIHNvZnR3YXJlCi0rLy8gbGlicmFyeSB3aXRob3V0IHJlc3RyaWN0aW9uLiAgU3BlY2lmaWNhbGx5LCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZQotKy8vIHRlbXBsYXRlcyBvciB1c2UgbWFjcm9zIG9yIGlubGluZSBmdW5jdGlvbnMgZnJvbSB0aGlzIGZpbGUsIG9yIHlvdSBjb21waWxlCi0rLy8gdGhpcyBmaWxlIGFuZCBsaW5rIGl0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiBleGVjdXRhYmxlLCB0aGlzCi0rLy8gZmlsZSBkb2VzIG5vdCBieSBpdHNlbGYgY2F1c2UgdGhlIHJlc3VsdGluZyBleGVjdXRhYmxlIHRvIGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBUaGlzIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyCi0rLy8gaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlIGV4ZWN1dGFibGUgZmlsZSBtaWdodCBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgotKwotKy8vCi0rLy8gSVNPIEMrKyAxNDg4MjogMjIuMi43LjEuMiAgbWVzc2FnZXMgdmlydHVhbCBmdW5jdGlvbnMKLSsvLwotKwotKy8vIFdyaXR0ZW4gYnkgQmVuamFtaW4gS29zbmlrIDxia296QHJlZGhhdC5jb20+Ci0rCi0rI2luY2x1ZGUgPGxvY2FsZT4KLSsjaW5jbHVkZSA8Yml0cy9jKytsb2NhbGVfaW50ZXJuYWwuaD4KLSsKLSsjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KLSsjd2FybmluZyBmaXggZ2V0dGV4dCBzdHVmZgotKyNlbmRpZgotKyNpZmRlZiBfX1VDTElCQ19IQVNfR0VUVEVYVF9BV0FSRU5FU1NfXwotK2V4dGVybiAiQyIgY2hhciAqX19kY2dldHRleHQoY29uc3QgY2hhciAqZG9tYWlubmFtZSwKLSsJCQkgICAgIGNvbnN0IGNoYXIgKm1zZ2lkLCBpbnQgY2F0ZWdvcnkpOwotKyN1bmRlZiBnZXR0ZXh0Ci0rI2RlZmluZSBnZXR0ZXh0KG1zZ2lkKSBfX2RjZ2V0dGV4dChOVUxMLCBtc2dpZCwgTENfTUVTU0FHRVMpCi0rI2Vsc2UKLSsjdW5kZWYgZ2V0dGV4dAotKyNkZWZpbmUgZ2V0dGV4dChtc2dpZCkgKG1zZ2lkKQotKyNlbmRpZgotKwotK25hbWVzcGFjZSBzdGQKLSt7Ci0rICAvLyBTcGVjaWFsaXphdGlvbnMuCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIHN0cmluZwotKyAgICBtZXNzYWdlczxjaGFyPjo6ZG9fZ2V0KGNhdGFsb2csIGludCwgaW50LCBjb25zdCBzdHJpbmcmIF9fZGZhdWx0KSBjb25zdAotKyAgICB7Ci0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgICBfX2NfbG9jYWxlIF9fb2xkID0gX191c2Vsb2NhbGUoX01fY19sb2NhbGVfbWVzc2FnZXMpOwotKyAgICAgIGNvbnN0IGNoYXIqIF9fbXNnID0gY29uc3RfY2FzdDxjb25zdCBjaGFyKj4oZ2V0dGV4dChfX2RmYXVsdC5jX3N0cigpKSk7Ci0rICAgICAgX191c2Vsb2NhbGUoX19vbGQpOwotKyAgICAgIHJldHVybiBzdHJpbmcoX19tc2cpOwotKyNlbGlmIGRlZmluZWQgX19VQ0xJQkNfSEFTX0xPQ0FMRV9fCi0rICAgICAgY2hhciogX19vbGQgPSBzdHJkdXAoc2V0bG9jYWxlKExDX0FMTCwgTlVMTCkpOwotKyAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9NX25hbWVfbWVzc2FnZXMpOwotKyAgICAgIGNvbnN0IGNoYXIqIF9fbXNnID0gZ2V0dGV4dChfX2RmYXVsdC5jX3N0cigpKTsKLSsgICAgICBzZXRsb2NhbGUoTENfQUxMLCBfX29sZCk7Ci0rICAgICAgZnJlZShfX29sZCk7Ci0rICAgICAgcmV0dXJuIHN0cmluZyhfX21zZyk7Ci0rI2Vsc2UKLSsgICAgICBjb25zdCBjaGFyKiBfX21zZyA9IGdldHRleHQoX19kZmF1bHQuY19zdHIoKSk7Ci0rICAgICAgcmV0dXJuIHN0cmluZyhfX21zZyk7Ci0rI2VuZGlmCi0rICAgIH0KLSsKLSsjaWZkZWYgX0dMSUJDWFhfVVNFX1dDSEFSX1QKLSsgIHRlbXBsYXRlPD4KLSsgICAgd3N0cmluZwotKyAgICBtZXNzYWdlczx3Y2hhcl90Pjo6ZG9fZ2V0KGNhdGFsb2csIGludCwgaW50LCBjb25zdCB3c3RyaW5nJiBfX2RmYXVsdCkgY29uc3QKLSsgICAgewotKyMgaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICAgIF9fY19sb2NhbGUgX19vbGQgPSBfX3VzZWxvY2FsZShfTV9jX2xvY2FsZV9tZXNzYWdlcyk7Ci0rICAgICAgY2hhciogX19tc2cgPSBnZXR0ZXh0KF9NX2NvbnZlcnRfdG9fY2hhcihfX2RmYXVsdCkpOwotKyAgICAgIF9fdXNlbG9jYWxlKF9fb2xkKTsKLSsgICAgICByZXR1cm4gX01fY29udmVydF9mcm9tX2NoYXIoX19tc2cpOwotKyMgZWxpZiBkZWZpbmVkIF9fVUNMSUJDX0hBU19MT0NBTEVfXwotKyAgICAgIGNoYXIqIF9fb2xkID0gc3RyZHVwKHNldGxvY2FsZShMQ19BTEwsIE5VTEwpKTsKLSsgICAgICBzZXRsb2NhbGUoTENfQUxMLCBfTV9uYW1lX21lc3NhZ2VzKTsKLSsgICAgICBjaGFyKiBfX21zZyA9IGdldHRleHQoX01fY29udmVydF90b19jaGFyKF9fZGZhdWx0KSk7Ci0rICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX19vbGQpOwotKyAgICAgIGZyZWUoX19vbGQpOwotKyAgICAgIHJldHVybiBfTV9jb252ZXJ0X2Zyb21fY2hhcihfX21zZyk7Ci0rIyBlbHNlCi0rICAgICAgY2hhciogX19tc2cgPSBnZXR0ZXh0KF9NX2NvbnZlcnRfdG9fY2hhcihfX2RmYXVsdCkpOwotKyAgICAgIHJldHVybiBfTV9jb252ZXJ0X2Zyb21fY2hhcihfX21zZyk7Ci0rIyBlbmRpZgotKyAgICB9Ci0rI2VuZGlmCi0rfQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmggYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMTQyNDA3OAotLS0tIC9kZXYvbnVsbAotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaAotQEAgLTAsMCArMSwxMTggQEAKLSsvLyBzdGQ6Om1lc3NhZ2VzIGltcGxlbWVudGF0aW9uIGRldGFpbHMsIEdOVSB2ZXJzaW9uIC0qLSBDKysgLSotCi0rCi0rLy8gQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8vCi0rLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBJU08gQysrIExpYnJhcnkuICBUaGlzIGxpYnJhcnkgaXMgZnJlZQotKy8vIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZQotKy8vIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCi0rLy8gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rLy8gYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rLy8gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsvLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rLy8gR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsvLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotKy8vIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKLSsvLyBTb2Z0d2FyZSBGb3VuZGF0aW9uLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsvLyBVU0EuCi0rCi0rLy8gQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgeW91IG1heSB1c2UgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBmcmVlIHNvZnR3YXJlCi0rLy8gbGlicmFyeSB3aXRob3V0IHJlc3RyaWN0aW9uLiAgU3BlY2lmaWNhbGx5LCBpZiBvdGhlciBmaWxlcyBpbnN0YW50aWF0ZQotKy8vIHRlbXBsYXRlcyBvciB1c2UgbWFjcm9zIG9yIGlubGluZSBmdW5jdGlvbnMgZnJvbSB0aGlzIGZpbGUsIG9yIHlvdSBjb21waWxlCi0rLy8gdGhpcyBmaWxlIGFuZCBsaW5rIGl0IHdpdGggb3RoZXIgZmlsZXMgdG8gcHJvZHVjZSBhbiBleGVjdXRhYmxlLCB0aGlzCi0rLy8gZmlsZSBkb2VzIG5vdCBieSBpdHNlbGYgY2F1c2UgdGhlIHJlc3VsdGluZyBleGVjdXRhYmxlIHRvIGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBUaGlzIGV4Y2VwdGlvbiBkb2VzIG5vdCBob3dldmVyCi0rLy8gaW52YWxpZGF0ZSBhbnkgb3RoZXIgcmVhc29ucyB3aHkgdGhlIGV4ZWN1dGFibGUgZmlsZSBtaWdodCBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgotKwotKy8vCi0rLy8gSVNPIEMrKyAxNDg4MjogMjIuMi43LjEuMiAgbWVzc2FnZXMgZnVuY3Rpb25zCi0rLy8KLSsKLSsvLyBXcml0dGVuIGJ5IEJlbmphbWluIEtvc25payA8YmtvekByZWRoYXQuY29tPgotKwotKyNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotKyN3YXJuaW5nIGZpeCBwcm90b3R5cGVzIGZvciAqdGV4dGRvbWFpbiBmdW5jcwotKyNlbmRpZgotKyNpZmRlZiBfX1VDTElCQ19IQVNfR0VUVEVYVF9BV0FSRU5FU1NfXwotK2V4dGVybiAiQyIgY2hhciAqX190ZXh0ZG9tYWluKGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUpOwotK2V4dGVybiAiQyIgY2hhciAqX19iaW5kdGV4dGRvbWFpbihjb25zdCBjaGFyICpkb21haW5uYW1lLAotKwkJCQkgIGNvbnN0IGNoYXIgKmRpcm5hbWUpOwotKyNlbHNlCi0rI3VuZGVmIF9fdGV4dGRvbWFpbgotKyN1bmRlZiBfX2JpbmR0ZXh0ZG9tYWluCi0rI2RlZmluZSBfX3RleHRkb21haW4oRCkgICAgICAgICAgICgodm9pZCkwKQotKyNkZWZpbmUgX19iaW5kdGV4dGRvbWFpbihELFApICAgICAoKHZvaWQpMCkKLSsjZW5kaWYKLSsKLSsgIC8vIE5vbi12aXJ0dWFsIG1lbWJlciBmdW5jdGlvbnMuCi0rICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+Ci0rICAgICBtZXNzYWdlczxfQ2hhclQ+OjptZXNzYWdlcyhzaXplX3QgX19yZWZzKQotKyAgICAgOiBmYWNldChfX3JlZnMpLCBfTV9jX2xvY2FsZV9tZXNzYWdlcyhfU19nZXRfY19sb2NhbGUoKSksCi0rICAgICBfTV9uYW1lX21lc3NhZ2VzKF9TX2dldF9jX25hbWUoKSkKLSsgICAgIHsgfQotKwotKyAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgotKyAgICAgbWVzc2FnZXM8X0NoYXJUPjo6bWVzc2FnZXMoX19jX2xvY2FsZSBfX2Nsb2MsIGNvbnN0IGNoYXIqIF9fcywKLSsJCQkJc2l6ZV90IF9fcmVmcykKLSsgICAgIDogZmFjZXQoX19yZWZzKSwgX01fY19sb2NhbGVfbWVzc2FnZXMoX1NfY2xvbmVfY19sb2NhbGUoX19jbG9jKSksCi0rICAgICBfTV9uYW1lX21lc3NhZ2VzKF9fcykKLSsgICAgIHsKLSsgICAgICAgY2hhciogX190bXAgPSBuZXcgY2hhcltzdGQ6OnN0cmxlbihfX3MpICsgMV07Ci0rICAgICAgIHN0ZDo6c3RyY3B5KF9fdG1wLCBfX3MpOwotKyAgICAgICBfTV9uYW1lX21lc3NhZ2VzID0gX190bXA7Ci0rICAgICB9Ci0rCi0rICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+Ci0rICAgIHR5cGVuYW1lIG1lc3NhZ2VzPF9DaGFyVD46OmNhdGFsb2cKLSsgICAgbWVzc2FnZXM8X0NoYXJUPjo6b3Blbihjb25zdCBiYXNpY19zdHJpbmc8Y2hhcj4mIF9fcywgY29uc3QgbG9jYWxlJiBfX2xvYywKLSsJCQkgICBjb25zdCBjaGFyKiBfX2RpcikgY29uc3QKLSsgICAgewotKyAgICAgIF9fYmluZHRleHRkb21haW4oX19zLmNfc3RyKCksIF9fZGlyKTsKLSsgICAgICByZXR1cm4gdGhpcy0+ZG9fb3BlbihfX3MsIF9fbG9jKTsKLSsgICAgfQotKwotKyAgLy8gVmlydHVhbCBtZW1iZXIgZnVuY3Rpb25zLgotKyAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgotKyAgICBtZXNzYWdlczxfQ2hhclQ+Ojp+bWVzc2FnZXMoKQotKyAgICB7Ci0rICAgICAgaWYgKF9NX25hbWVfbWVzc2FnZXMgIT0gX1NfZ2V0X2NfbmFtZSgpKQotKwlkZWxldGUgW10gX01fbmFtZV9tZXNzYWdlczsKLSsgICAgICBfU19kZXN0cm95X2NfbG9jYWxlKF9NX2NfbG9jYWxlX21lc3NhZ2VzKTsKLSsgICAgfQotKwotKyAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgotKyAgICB0eXBlbmFtZSBtZXNzYWdlczxfQ2hhclQ+OjpjYXRhbG9nCi0rICAgIG1lc3NhZ2VzPF9DaGFyVD46OmRvX29wZW4oY29uc3QgYmFzaWNfc3RyaW5nPGNoYXI+JiBfX3MsCi0rCQkJICAgICAgY29uc3QgbG9jYWxlJikgY29uc3QKLSsgICAgewotKyAgICAgIC8vIE5vIGVycm9yIGNoZWNraW5nIGlzIGRvbmUsIGFzc3VtZSB0aGUgY2F0YWxvZyBleGlzdHMgYW5kIGNhbgotKyAgICAgIC8vIGJlIHVzZWQuCi0rICAgICAgX190ZXh0ZG9tYWluKF9fcy5jX3N0cigpKTsKLSsgICAgICByZXR1cm4gMDsKLSsgICAgfQotKwotKyAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgotKyAgICB2b2lkCi0rICAgIG1lc3NhZ2VzPF9DaGFyVD46OmRvX2Nsb3NlKGNhdGFsb2cpIGNvbnN0Ci0rICAgIHsgfQotKwotKyAgIC8vIG1lc3NhZ2VzX2J5bmFtZQotKyAgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KLSsgICAgIG1lc3NhZ2VzX2J5bmFtZTxfQ2hhclQ+OjptZXNzYWdlc19ieW5hbWUoY29uc3QgY2hhciogX19zLCBzaXplX3QgX19yZWZzKQotKyAgICAgOiBtZXNzYWdlczxfQ2hhclQ+KF9fcmVmcykKLSsgICAgIHsKLSsgICAgICAgaWYgKHRoaXMtPl9NX25hbWVfbWVzc2FnZXMgIT0gbG9jYWxlOjpmYWNldDo6X1NfZ2V0X2NfbmFtZSgpKQotKwkgZGVsZXRlIFtdIHRoaXMtPl9NX25hbWVfbWVzc2FnZXM7Ci0rICAgICAgIGNoYXIqIF9fdG1wID0gbmV3IGNoYXJbc3RkOjpzdHJsZW4oX19zKSArIDFdOwotKyAgICAgICBzdGQ6OnN0cmNweShfX3RtcCwgX19zKTsKLSsgICAgICAgdGhpcy0+X01fbmFtZV9tZXNzYWdlcyA9IF9fdG1wOwotKwotKyAgICAgICBpZiAoc3RkOjpzdHJjbXAoX19zLCAiQyIpICE9IDAgJiYgc3RkOjpzdHJjbXAoX19zLCAiUE9TSVgiKSAhPSAwKQotKwkgewotKwkgICB0aGlzLT5fU19kZXN0cm95X2NfbG9jYWxlKHRoaXMtPl9NX2NfbG9jYWxlX21lc3NhZ2VzKTsKLSsJICAgdGhpcy0+X1NfY3JlYXRlX2NfbG9jYWxlKHRoaXMtPl9NX2NfbG9jYWxlX21lc3NhZ2VzLCBfX3MpOwotKwkgfQotKyAgICAgfQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5hYTUyNzMxCi0tLS0gL2Rldi9udWxsCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYwotQEAgLTAsMCArMSw2OTIgQEAKLSsvLyBzdGQ6Om1vbmV5cHVuY3QgaW1wbGVtZW50YXRpb24gZGV0YWlscywgR05VIHZlcnNpb24gLSotIEMrKyAtKi0KLSsKLSsvLyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLy8KLSsvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlCi0rLy8gc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlCi0rLy8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLSsvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsvLyBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsvLyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKy8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi0rLy8gd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKy8vIFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKy8vIFVTQS4KLSsKLSsvLyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIGZyZWUgc29mdHdhcmUKLSsvLyBsaWJyYXJ5IHdpdGhvdXQgcmVzdHJpY3Rpb24uICBTcGVjaWZpY2FsbHksIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlCi0rLy8gdGVtcGxhdGVzIG9yIHVzZSBtYWNyb3Mgb3IgaW5saW5lIGZ1bmN0aW9ucyBmcm9tIHRoaXMgZmlsZSwgb3IgeW91IGNvbXBpbGUKLSsvLyB0aGlzIGZpbGUgYW5kIGxpbmsgaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuIGV4ZWN1dGFibGUsIHRoaXMKLSsvLyBmaWxlIGRvZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoaXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIKLSsvLyBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCi0rCi0rLy8KLSsvLyBJU08gQysrIDE0ODgyOiAyMi4yLjYuMy4yICBtb25leXB1bmN0IHZpcnR1YWwgZnVuY3Rpb25zCi0rLy8KLSsKLSsvLyBXcml0dGVuIGJ5IEJlbmphbWluIEtvc25payA8YmtvekByZWRoYXQuY29tPgotKwotKyNkZWZpbmUgX0xJQkMKLSsjaW5jbHVkZSA8bG9jYWxlPgotKyN1bmRlZiBfTElCQwotKyNpbmNsdWRlIDxiaXRzL2MrK2xvY2FsZV9pbnRlcm5hbC5oPgotKwotKyNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotKyN3YXJuaW5nIG9wdGltaXplIHRoaXMgZm9yIHVjbGliYwotKyN3YXJuaW5nIHRhaWxvciBmb3Igc3R1YiBsb2NhbGUgc3VwcG9ydAotKyNlbmRpZgotKwotKyNpZm5kZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyNkZWZpbmUgX19ubF9sYW5naW5mb19sKE4sIEwpICAgICAgICAgbmxfbGFuZ2luZm8oKE4pKQotKyNlbmRpZgotKwotK25hbWVzcGFjZSBzdGQKLSt7Ci0rICAvLyBDb25zdHJ1Y3QgYW5kIHJldHVybiB2YWxpZCBwYXR0ZXJuIGNvbnNpc3Rpbmcgb2Ygc29tZSBjb21iaW5hdGlvbiBvZjoKLSsgIC8vIHNwYWNlIG5vbmUgc3ltYm9sIHNpZ24gdmFsdWUKLSsgIG1vbmV5X2Jhc2U6OnBhdHRlcm4KLSsgIG1vbmV5X2Jhc2U6Ol9TX2NvbnN0cnVjdF9wYXR0ZXJuKGNoYXIgX19wcmVjZWRlcywgY2hhciBfX3NwYWNlLCBjaGFyIF9fcG9zbikKLSsgIHsKLSsgICAgcGF0dGVybiBfX3JldDsKLSsKLSsgICAgLy8gVGhpcyBpbnNhbmVseSBjb21wbGljYXRlZCByb3V0aW5lIGF0dGVtcHRzIHRvIGNvbnN0cnVjdCBhIHZhbGlkCi0rICAgIC8vIHBhdHRlcm4gZm9yIHVzZSB3aXRoIG1vbnllcHVuY3QuIEEgY291cGxlIG9mIGludmFyaWFudHM6Ci0rCi0rICAgIC8vIGlmIChfX3ByZWNlZGVzKSBzeW1ib2wgLT4gdmFsdWUKLSsgICAgLy8gZWxzZSB2YWx1ZSAtPiBzeW1ib2wKLSsKLSsgICAgLy8gaWYgKF9fc3BhY2UpIHNwYWNlCi0rICAgIC8vIGVsc2Ugbm9uZQotKwotKyAgICAvLyBub25lID09IG5ldmVyIGZpcnN0Ci0rICAgIC8vIHNwYWNlIG5ldmVyIGZpcnN0IG9yIGxhc3QKLSsKLSsgICAgLy8gQW55IGVsZWdhbnQgaW1wbGVtZW50YXRpb25zIG9mIHRoaXMgYXJlIHdlbGNvbWUuCi0rICAgIHN3aXRjaCAoX19wb3NuKQotKyAgICAgIHsKLSsgICAgICBjYXNlIDA6Ci0rICAgICAgY2FzZSAxOgotKwkvLyAxIFRoZSBzaWduIHByZWNlZGVzIHRoZSB2YWx1ZSBhbmQgc3ltYm9sLgotKwlfX3JldC5maWVsZFswXSA9IHNpZ247Ci0rCWlmIChfX3NwYWNlKQotKwkgIHsKLSsJICAgIC8vIFBhdHRlcm4gc3RhcnRzIHdpdGggc2lnbi4KLSsJICAgIGlmIChfX3ByZWNlZGVzKQotKwkgICAgICB7Ci0rCQlfX3JldC5maWVsZFsxXSA9IHN5bWJvbDsKLSsJCV9fcmV0LmZpZWxkWzNdID0gdmFsdWU7Ci0rCSAgICAgIH0KLSsJICAgIGVsc2UKLSsJICAgICAgewotKwkJX19yZXQuZmllbGRbMV0gPSB2YWx1ZTsKLSsJCV9fcmV0LmZpZWxkWzNdID0gc3ltYm9sOwotKwkgICAgICB9Ci0rCSAgICBfX3JldC5maWVsZFsyXSA9IHNwYWNlOwotKwkgIH0KLSsJZWxzZQotKwkgIHsKLSsJICAgIC8vIFBhdHRlcm4gc3RhcnRzIHdpdGggc2lnbiBhbmQgZW5kcyB3aXRoIG5vbmUuCi0rCSAgICBpZiAoX19wcmVjZWRlcykKLSsJICAgICAgewotKwkJX19yZXQuZmllbGRbMV0gPSBzeW1ib2w7Ci0rCQlfX3JldC5maWVsZFsyXSA9IHZhbHVlOwotKwkgICAgICB9Ci0rCSAgICBlbHNlCi0rCSAgICAgIHsKLSsJCV9fcmV0LmZpZWxkWzFdID0gdmFsdWU7Ci0rCQlfX3JldC5maWVsZFsyXSA9IHN5bWJvbDsKLSsJICAgICAgfQotKwkgICAgX19yZXQuZmllbGRbM10gPSBub25lOwotKwkgIH0KLSsJYnJlYWs7Ci0rICAgICAgY2FzZSAyOgotKwkvLyAyIFRoZSBzaWduIGZvbGxvd3MgdGhlIHZhbHVlIGFuZCBzeW1ib2wuCi0rCWlmIChfX3NwYWNlKQotKwkgIHsKLSsJICAgIC8vIFBhdHRlcm4gZWl0aGVyIGVuZHMgd2l0aCBzaWduLgotKwkgICAgaWYgKF9fcHJlY2VkZXMpCi0rCSAgICAgIHsKLSsJCV9fcmV0LmZpZWxkWzBdID0gc3ltYm9sOwotKwkJX19yZXQuZmllbGRbMl0gPSB2YWx1ZTsKLSsJICAgICAgfQotKwkgICAgZWxzZQotKwkgICAgICB7Ci0rCQlfX3JldC5maWVsZFswXSA9IHZhbHVlOwotKwkJX19yZXQuZmllbGRbMl0gPSBzeW1ib2w7Ci0rCSAgICAgIH0KLSsJICAgIF9fcmV0LmZpZWxkWzFdID0gc3BhY2U7Ci0rCSAgICBfX3JldC5maWVsZFszXSA9IHNpZ247Ci0rCSAgfQotKwllbHNlCi0rCSAgewotKwkgICAgLy8gUGF0dGVybiBlbmRzIHdpdGggc2lnbiB0aGVuIG5vbmUuCi0rCSAgICBpZiAoX19wcmVjZWRlcykKLSsJICAgICAgewotKwkJX19yZXQuZmllbGRbMF0gPSBzeW1ib2w7Ci0rCQlfX3JldC5maWVsZFsxXSA9IHZhbHVlOwotKwkgICAgICB9Ci0rCSAgICBlbHNlCi0rCSAgICAgIHsKLSsJCV9fcmV0LmZpZWxkWzBdID0gdmFsdWU7Ci0rCQlfX3JldC5maWVsZFsxXSA9IHN5bWJvbDsKLSsJICAgICAgfQotKwkgICAgX19yZXQuZmllbGRbMl0gPSBzaWduOwotKwkgICAgX19yZXQuZmllbGRbM10gPSBub25lOwotKwkgIH0KLSsJYnJlYWs7Ci0rICAgICAgY2FzZSAzOgotKwkvLyAzIFRoZSBzaWduIGltbWVkaWF0ZWx5IHByZWNlZGVzIHRoZSBzeW1ib2wuCi0rCWlmIChfX3ByZWNlZGVzKQotKwkgIHsKLSsJICAgIF9fcmV0LmZpZWxkWzBdID0gc2lnbjsKLSsJICAgIF9fcmV0LmZpZWxkWzFdID0gc3ltYm9sOwotKwkgICAgaWYgKF9fc3BhY2UpCi0rCSAgICAgIHsKLSsJCV9fcmV0LmZpZWxkWzJdID0gc3BhY2U7Ci0rCQlfX3JldC5maWVsZFszXSA9IHZhbHVlOwotKwkgICAgICB9Ci0rCSAgICBlbHNlCi0rCSAgICAgIHsKLSsJCV9fcmV0LmZpZWxkWzJdID0gdmFsdWU7Ci0rCQlfX3JldC5maWVsZFszXSA9IG5vbmU7Ci0rCSAgICAgIH0KLSsJICB9Ci0rCWVsc2UKLSsJICB7Ci0rCSAgICBfX3JldC5maWVsZFswXSA9IHZhbHVlOwotKwkgICAgaWYgKF9fc3BhY2UpCi0rCSAgICAgIHsKLSsJCV9fcmV0LmZpZWxkWzFdID0gc3BhY2U7Ci0rCQlfX3JldC5maWVsZFsyXSA9IHNpZ247Ci0rCQlfX3JldC5maWVsZFszXSA9IHN5bWJvbDsKLSsJICAgICAgfQotKwkgICAgZWxzZQotKwkgICAgICB7Ci0rCQlfX3JldC5maWVsZFsxXSA9IHNpZ247Ci0rCQlfX3JldC5maWVsZFsyXSA9IHN5bWJvbDsKLSsJCV9fcmV0LmZpZWxkWzNdID0gbm9uZTsKLSsJICAgICAgfQotKwkgIH0KLSsJYnJlYWs7Ci0rICAgICAgY2FzZSA0OgotKwkvLyA0IFRoZSBzaWduIGltbWVkaWF0ZWx5IGZvbGxvd3MgdGhlIHN5bWJvbC4KLSsJaWYgKF9fcHJlY2VkZXMpCi0rCSAgewotKwkgICAgX19yZXQuZmllbGRbMF0gPSBzeW1ib2w7Ci0rCSAgICBfX3JldC5maWVsZFsxXSA9IHNpZ247Ci0rCSAgICBpZiAoX19zcGFjZSkKLSsJICAgICAgewotKwkJX19yZXQuZmllbGRbMl0gPSBzcGFjZTsKLSsJCV9fcmV0LmZpZWxkWzNdID0gdmFsdWU7Ci0rCSAgICAgIH0KLSsJICAgIGVsc2UKLSsJICAgICAgewotKwkJX19yZXQuZmllbGRbMl0gPSB2YWx1ZTsKLSsJCV9fcmV0LmZpZWxkWzNdID0gbm9uZTsKLSsJICAgICAgfQotKwkgIH0KLSsJZWxzZQotKwkgIHsKLSsJICAgIF9fcmV0LmZpZWxkWzBdID0gdmFsdWU7Ci0rCSAgICBpZiAoX19zcGFjZSkKLSsJICAgICAgewotKwkJX19yZXQuZmllbGRbMV0gPSBzcGFjZTsKLSsJCV9fcmV0LmZpZWxkWzJdID0gc3ltYm9sOwotKwkJX19yZXQuZmllbGRbM10gPSBzaWduOwotKwkgICAgICB9Ci0rCSAgICBlbHNlCi0rCSAgICAgIHsKLSsJCV9fcmV0LmZpZWxkWzFdID0gc3ltYm9sOwotKwkJX19yZXQuZmllbGRbMl0gPSBzaWduOwotKwkJX19yZXQuZmllbGRbM10gPSBub25lOwotKwkgICAgICB9Ci0rCSAgfQotKwlicmVhazsKLSsgICAgICBkZWZhdWx0OgotKwk7Ci0rICAgICAgfQotKyAgICByZXR1cm4gX19yZXQ7Ci0rICB9Ci0rCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIHZvaWQKLSsgICAgbW9uZXlwdW5jdDxjaGFyLCB0cnVlPjo6X01faW5pdGlhbGl6ZV9tb25leXB1bmN0KF9fY19sb2NhbGUgX19jbG9jLAotKwkJCQkJCSAgICAgY29uc3QgY2hhciopCi0rICAgIHsKLSsgICAgICBpZiAoIV9NX2RhdGEpCi0rCV9NX2RhdGEgPSBuZXcgX19tb25leXB1bmN0X2NhY2hlPGNoYXIsIHRydWU+OwotKwotKyAgICAgIGlmICghX19jbG9jKQotKwl7Ci0rCSAgLy8gIkMiIGxvY2FsZQotKwkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSAnLic7Ci0rCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9ICcsJzsKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZyA9ICIiOwotKwkgIF9NX2RhdGEtPl9NX2dyb3VwaW5nX3NpemUgPSAwOwotKwkgIF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sID0gIiI7Ci0rCSAgX01fZGF0YS0+X01fY3Vycl9zeW1ib2xfc2l6ZSA9IDA7Ci0rCSAgX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbiA9ICIiOwotKwkgIF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ25fc2l6ZSA9IDA7Ci0rCSAgX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbiA9ICIiOwotKwkgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ25fc2l6ZSA9IDA7Ci0rCSAgX01fZGF0YS0+X01fZnJhY19kaWdpdHMgPSAwOwotKwkgIF9NX2RhdGEtPl9NX3Bvc19mb3JtYXQgPSBtb25leV9iYXNlOjpfU19kZWZhdWx0X3BhdHRlcm47Ci0rCSAgX01fZGF0YS0+X01fbmVnX2Zvcm1hdCA9IG1vbmV5X2Jhc2U6Ol9TX2RlZmF1bHRfcGF0dGVybjsKLSsKLSsJICBmb3IgKHNpemVfdCBfX2kgPSAwOyBfX2kgPCBtb25leV9iYXNlOjpfU19lbmQ7ICsrX19pKQotKwkgICAgX01fZGF0YS0+X01fYXRvbXNbX19pXSA9IG1vbmV5X2Jhc2U6Ol9TX2F0b21zW19faV07Ci0rCX0KLSsgICAgICBlbHNlCi0rCXsKLSsJICAvLyBOYW1lZCBsb2NhbGUuCi0rCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9ICooX19ubF9sYW5naW5mb19sKF9fTU9OX0RFQ0lNQUxfUE9JTlQsCi0rCQkJCQkJCV9fY2xvYykpOwotKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSAqKF9fbmxfbGFuZ2luZm9fbChfX01PTl9USE9VU0FORFNfU0VQLAotKwkJCQkJCQlfX2Nsb2MpKTsKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZyA9IF9fbmxfbGFuZ2luZm9fbChfX01PTl9HUk9VUElORywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZ19zaXplID0gc3RybGVuKF9NX2RhdGEtPl9NX2dyb3VwaW5nKTsKLSsJICBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduID0gX19ubF9sYW5naW5mb19sKF9fUE9TSVRJVkVfU0lHTiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduX3NpemUgPSBzdHJsZW4oX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbik7Ci0rCi0rCSAgY2hhciBfX25wb3NuID0gKihfX25sX2xhbmdpbmZvX2woX19JTlRfTl9TSUdOX1BPU04sIF9fY2xvYykpOwotKwkgIGlmICghX19ucG9zbikKLSsJICAgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24gPSAiKCkiOwotKwkgIGVsc2UKLSsJICAgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24gPSBfX25sX2xhbmdpbmZvX2woX19ORUdBVElWRV9TSUdOLAotKwkJCQkJCQlfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ25fc2l6ZSA9IHN0cmxlbihfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduKTsKLSsKLSsJICAvLyBfSW50bCA9PSB0cnVlCi0rCSAgX01fZGF0YS0+X01fY3Vycl9zeW1ib2wgPSBfX25sX2xhbmdpbmZvX2woX19JTlRfQ1VSUl9TWU1CT0wsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fY3Vycl9zeW1ib2xfc2l6ZSA9IHN0cmxlbihfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbCk7Ci0rCSAgX01fZGF0YS0+X01fZnJhY19kaWdpdHMgPSAqKF9fbmxfbGFuZ2luZm9fbChfX0lOVF9GUkFDX0RJR0lUUywKLSsJCQkJCQkgICAgICBfX2Nsb2MpKTsKLSsJICBjaGFyIF9fcHByZWNlZGVzID0gKihfX25sX2xhbmdpbmZvX2woX19JTlRfUF9DU19QUkVDRURFUywgX19jbG9jKSk7Ci0rCSAgY2hhciBfX3BzcGFjZSA9ICooX19ubF9sYW5naW5mb19sKF9fSU5UX1BfU0VQX0JZX1NQQUNFLCBfX2Nsb2MpKTsKLSsJICBjaGFyIF9fcHBvc24gPSAqKF9fbmxfbGFuZ2luZm9fbChfX0lOVF9QX1NJR05fUE9TTiwgX19jbG9jKSk7Ci0rCSAgX01fZGF0YS0+X01fcG9zX2Zvcm1hdCA9IF9TX2NvbnN0cnVjdF9wYXR0ZXJuKF9fcHByZWNlZGVzLCBfX3BzcGFjZSwKLSsJCQkJCQkJX19wcG9zbik7Ci0rCSAgY2hhciBfX25wcmVjZWRlcyA9ICooX19ubF9sYW5naW5mb19sKF9fSU5UX05fQ1NfUFJFQ0VERVMsIF9fY2xvYykpOwotKwkgIGNoYXIgX19uc3BhY2UgPSAqKF9fbmxfbGFuZ2luZm9fbChfX0lOVF9OX1NFUF9CWV9TUEFDRSwgX19jbG9jKSk7Ci0rCSAgX01fZGF0YS0+X01fbmVnX2Zvcm1hdCA9IF9TX2NvbnN0cnVjdF9wYXR0ZXJuKF9fbnByZWNlZGVzLCBfX25zcGFjZSwKLSsJCQkJCQkJX19ucG9zbik7Ci0rCX0KLSsgICAgfQotKwotKyAgdGVtcGxhdGU8PgotKyAgICB2b2lkCi0rICAgIG1vbmV5cHVuY3Q8Y2hhciwgZmFsc2U+OjpfTV9pbml0aWFsaXplX21vbmV5cHVuY3QoX19jX2xvY2FsZSBfX2Nsb2MsCi0rCQkJCQkJICAgICAgY29uc3QgY2hhciopCi0rICAgIHsKLSsgICAgICBpZiAoIV9NX2RhdGEpCi0rCV9NX2RhdGEgPSBuZXcgX19tb25leXB1bmN0X2NhY2hlPGNoYXIsIGZhbHNlPjsKLSsKLSsgICAgICBpZiAoIV9fY2xvYykKLSsJewotKwkgIC8vICJDIiBsb2NhbGUKLSsJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gJy4nOwotKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSAnLCc7Ci0rCSAgX01fZGF0YS0+X01fZ3JvdXBpbmcgPSAiIjsKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZ19zaXplID0gMDsKLSsJICBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbCA9ICIiOwotKwkgIF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sX3NpemUgPSAwOwotKwkgIF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ24gPSAiIjsKLSsJICBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduX3NpemUgPSAwOwotKwkgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24gPSAiIjsKLSsJICBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduX3NpemUgPSAwOwotKwkgIF9NX2RhdGEtPl9NX2ZyYWNfZGlnaXRzID0gMDsKLSsJICBfTV9kYXRhLT5fTV9wb3NfZm9ybWF0ID0gbW9uZXlfYmFzZTo6X1NfZGVmYXVsdF9wYXR0ZXJuOwotKwkgIF9NX2RhdGEtPl9NX25lZ19mb3JtYXQgPSBtb25leV9iYXNlOjpfU19kZWZhdWx0X3BhdHRlcm47Ci0rCi0rCSAgZm9yIChzaXplX3QgX19pID0gMDsgX19pIDwgbW9uZXlfYmFzZTo6X1NfZW5kOyArK19faSkKLSsJICAgIF9NX2RhdGEtPl9NX2F0b21zW19faV0gPSBtb25leV9iYXNlOjpfU19hdG9tc1tfX2ldOwotKwl9Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgLy8gTmFtZWQgbG9jYWxlLgotKwkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSAqKF9fbmxfbGFuZ2luZm9fbChfX01PTl9ERUNJTUFMX1BPSU5ULAotKwkJCQkJCQlfX2Nsb2MpKTsKLSsJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gKihfX25sX2xhbmdpbmZvX2woX19NT05fVEhPVVNBTkRTX1NFUCwKLSsJCQkJCQkJX19jbG9jKSk7Ci0rCSAgX01fZGF0YS0+X01fZ3JvdXBpbmcgPSBfX25sX2xhbmdpbmZvX2woX19NT05fR1JPVVBJTkcsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZ3JvdXBpbmdfc2l6ZSA9IHN0cmxlbihfTV9kYXRhLT5fTV9ncm91cGluZyk7Ci0rCSAgX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbiA9IF9fbmxfbGFuZ2luZm9fbChfX1BPU0lUSVZFX1NJR04sIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbl9zaXplID0gc3RybGVuKF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ24pOwotKwotKwkgIGNoYXIgX19ucG9zbiA9ICooX19ubF9sYW5naW5mb19sKF9fTl9TSUdOX1BPU04sIF9fY2xvYykpOwotKwkgIGlmICghX19ucG9zbikKLSsJICAgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24gPSAiKCkiOwotKwkgIGVsc2UKLSsJICAgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24gPSBfX25sX2xhbmdpbmZvX2woX19ORUdBVElWRV9TSUdOLAotKwkJCQkJCQlfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ25fc2l6ZSA9IHN0cmxlbihfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduKTsKLSsKLSsJICAvLyBfSW50bCA9PSBmYWxzZQotKwkgIF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sID0gX19ubF9sYW5naW5mb19sKF9fQ1VSUkVOQ1lfU1lNQk9MLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sX3NpemUgPSBzdHJsZW4oX01fZGF0YS0+X01fY3Vycl9zeW1ib2wpOwotKwkgIF9NX2RhdGEtPl9NX2ZyYWNfZGlnaXRzID0gKihfX25sX2xhbmdpbmZvX2woX19GUkFDX0RJR0lUUywgX19jbG9jKSk7Ci0rCSAgY2hhciBfX3BwcmVjZWRlcyA9ICooX19ubF9sYW5naW5mb19sKF9fUF9DU19QUkVDRURFUywgX19jbG9jKSk7Ci0rCSAgY2hhciBfX3BzcGFjZSA9ICooX19ubF9sYW5naW5mb19sKF9fUF9TRVBfQllfU1BBQ0UsIF9fY2xvYykpOwotKwkgIGNoYXIgX19wcG9zbiA9ICooX19ubF9sYW5naW5mb19sKF9fUF9TSUdOX1BPU04sIF9fY2xvYykpOwotKwkgIF9NX2RhdGEtPl9NX3Bvc19mb3JtYXQgPSBfU19jb25zdHJ1Y3RfcGF0dGVybihfX3BwcmVjZWRlcywgX19wc3BhY2UsCi0rCQkJCQkJCV9fcHBvc24pOwotKwkgIGNoYXIgX19ucHJlY2VkZXMgPSAqKF9fbmxfbGFuZ2luZm9fbChfX05fQ1NfUFJFQ0VERVMsIF9fY2xvYykpOwotKwkgIGNoYXIgX19uc3BhY2UgPSAqKF9fbmxfbGFuZ2luZm9fbChfX05fU0VQX0JZX1NQQUNFLCBfX2Nsb2MpKTsKLSsJICBfTV9kYXRhLT5fTV9uZWdfZm9ybWF0ID0gX1NfY29uc3RydWN0X3BhdHRlcm4oX19ucHJlY2VkZXMsIF9fbnNwYWNlLAotKwkJCQkJCQlfX25wb3NuKTsKLSsJfQotKyAgICB9Ci0rCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIG1vbmV5cHVuY3Q8Y2hhciwgdHJ1ZT46On5tb25leXB1bmN0KCkKLSsgICAgeyBkZWxldGUgX01fZGF0YTsgfQotKwotKyAgdGVtcGxhdGU8PgotKyAgICBtb25leXB1bmN0PGNoYXIsIGZhbHNlPjo6fm1vbmV5cHVuY3QoKQotKyAgICB7IGRlbGV0ZSBfTV9kYXRhOyB9Ci0rCi0rI2lmZGVmIF9HTElCQ1hYX1VTRV9XQ0hBUl9UCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIHZvaWQKLSsgICAgbW9uZXlwdW5jdDx3Y2hhcl90LCB0cnVlPjo6X01faW5pdGlhbGl6ZV9tb25leXB1bmN0KF9fY19sb2NhbGUgX19jbG9jLAotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rCQkJCQkJCWNvbnN0IGNoYXIqKQotKyNlbHNlCi0rCQkJCQkJCWNvbnN0IGNoYXIqIF9fbmFtZSkKLSsjZW5kaWYKLSsgICAgewotKyAgICAgIGlmICghX01fZGF0YSkKLSsJX01fZGF0YSA9IG5ldyBfX21vbmV5cHVuY3RfY2FjaGU8d2NoYXJfdCwgdHJ1ZT47Ci0rCi0rICAgICAgaWYgKCFfX2Nsb2MpCi0rCXsKLSsJICAvLyAiQyIgbG9jYWxlCi0rCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IEwnLic7Ci0rCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9IEwnLCc7Ci0rCSAgX01fZGF0YS0+X01fZ3JvdXBpbmcgPSAiIjsKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZ19zaXplID0gMDsKLSsJICBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbCA9IEwiIjsKLSsJICBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbF9zaXplID0gMDsKLSsJICBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduID0gTCIiOwotKwkgIF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ25fc2l6ZSA9IDA7Ci0rCSAgX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbiA9IEwiIjsKLSsJICBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduX3NpemUgPSAwOwotKwkgIF9NX2RhdGEtPl9NX2ZyYWNfZGlnaXRzID0gMDsKLSsJICBfTV9kYXRhLT5fTV9wb3NfZm9ybWF0ID0gbW9uZXlfYmFzZTo6X1NfZGVmYXVsdF9wYXR0ZXJuOwotKwkgIF9NX2RhdGEtPl9NX25lZ19mb3JtYXQgPSBtb25leV9iYXNlOjpfU19kZWZhdWx0X3BhdHRlcm47Ci0rCi0rCSAgLy8gVXNlIGN0eXBlOjp3aWRlbiBjb2RlIHdpdGhvdXQgdGhlIGZhY2V0Li4uCi0rCSAgZm9yIChzaXplX3QgX19pID0gMDsgX19pIDwgbW9uZXlfYmFzZTo6X1NfZW5kOyArK19faSkKLSsJICAgIF9NX2RhdGEtPl9NX2F0b21zW19faV0gPQotKwkgICAgICBzdGF0aWNfY2FzdDx3Y2hhcl90Pihtb25leV9iYXNlOjpfU19hdG9tc1tfX2ldKTsKLSsJfQotKyAgICAgIGVsc2UKLSsJewotKwkgIC8vIE5hbWVkIGxvY2FsZS4KLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKwkgIF9fY19sb2NhbGUgX19vbGQgPSBfX3VzZWxvY2FsZShfX2Nsb2MpOwotKyNlbHNlCi0rCSAgLy8gU3dpdGNoIHRvIG5hbWVkIGxvY2FsZSBzbyB0aGF0IG1ic3J0b3djcyB3aWxsIHdvcmsuCi0rCSAgY2hhciogX19vbGQgPSBzdHJkdXAoc2V0bG9jYWxlKExDX0FMTCwgTlVMTCkpOwotKwkgIHNldGxvY2FsZShMQ19BTEwsIF9fbmFtZSk7Ci0rI2VuZGlmCi0rCi0rI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi0rI3dhcm5pbmcgZml4IHRoaXMuLi4gc2hvdWxkIGJlIG1vbmV0YXJ5Ci0rI2VuZGlmCi0rI2lmZGVmIF9fVUNMSUJDX18KLSsjIGlmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gX19jbG9jLT5kZWNpbWFsX3BvaW50X3djOwotKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSBfX2Nsb2MtPnRob3VzYW5kc19zZXBfd2M7Ci0rIyBlbHNlCi0rCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IF9fZ2xvYmFsX2xvY2FsZS0+ZGVjaW1hbF9wb2ludF93YzsKLSsJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gX19nbG9iYWxfbG9jYWxlLT50aG91c2FuZHNfc2VwX3djOwotKyMgZW5kaWYKLSsjZWxzZQotKwkgIHVuaW9uIHsgY2hhciAqX19zOyB3Y2hhcl90IF9fdzsgfSBfX3U7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfTU9ORVRBUllfREVDSU1BTF9QT0lOVF9XQywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gX191Ll9fdzsKLSsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9NT05FVEFSWV9USE9VU0FORFNfU0VQX1dDLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSBfX3UuX193OwotKyNlbmRpZgotKwkgIF9NX2RhdGEtPl9NX2dyb3VwaW5nID0gX19ubF9sYW5naW5mb19sKF9fTU9OX0dST1VQSU5HLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2dyb3VwaW5nX3NpemUgPSBzdHJsZW4oX01fZGF0YS0+X01fZ3JvdXBpbmcpOwotKwotKwkgIGNvbnN0IGNoYXIqIF9fY3Bvc3NpZ24gPSBfX25sX2xhbmdpbmZvX2woX19QT1NJVElWRV9TSUdOLCBfX2Nsb2MpOwotKwkgIGNvbnN0IGNoYXIqIF9fY25lZ3NpZ24gPSBfX25sX2xhbmdpbmZvX2woX19ORUdBVElWRV9TSUdOLCBfX2Nsb2MpOwotKwkgIGNvbnN0IGNoYXIqIF9fY2N1cnIgPSBfX25sX2xhbmdpbmZvX2woX19JTlRfQ1VSUl9TWU1CT0wsIF9fY2xvYyk7Ci0rCi0rCSAgd2NoYXJfdCogX193Y3NfcHMgPSAwOwotKwkgIHdjaGFyX3QqIF9fd2NzX25zID0gMDsKLSsJICBjb25zdCBjaGFyIF9fbnBvc24gPSAqKF9fbmxfbGFuZ2luZm9fbChfX0lOVF9OX1NJR05fUE9TTiwgX19jbG9jKSk7Ci0rCSAgdHJ5Ci0rCSAgICB7Ci0rCSAgICAgIG1ic3RhdGVfdCBfX3N0YXRlOwotKwkgICAgICBzaXplX3QgX19sZW4gPSBzdHJsZW4oX19jcG9zc2lnbik7Ci0rCSAgICAgIGlmIChfX2xlbikKLSsJCXsKLSsJCSAgKytfX2xlbjsKLSsJCSAgbWVtc2V0KCZfX3N0YXRlLCAwLCBzaXplb2YobWJzdGF0ZV90KSk7Ci0rCQkgIF9fd2NzX3BzID0gbmV3IHdjaGFyX3RbX19sZW5dOwotKwkJICBtYnNydG93Y3MoX193Y3NfcHMsICZfX2Nwb3NzaWduLCBfX2xlbiwgJl9fc3RhdGUpOwotKwkJICBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduID0gX193Y3NfcHM7Ci0rCQl9Ci0rCSAgICAgIGVsc2UKLSsJCV9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ24gPSBMIiI7Ci0rCSAgICAgIF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ25fc2l6ZSA9IHdjc2xlbihfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduKTsKLSsKLSsJICAgICAgX19sZW4gPSBzdHJsZW4oX19jbmVnc2lnbik7Ci0rCSAgICAgIGlmICghX19ucG9zbikKLSsJCV9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24gPSBMIigpIjsKLSsJICAgICAgZWxzZSBpZiAoX19sZW4pCi0rCQl7Ci0rCQkgICsrX19sZW47Ci0rCQkgIG1lbXNldCgmX19zdGF0ZSwgMCwgc2l6ZW9mKG1ic3RhdGVfdCkpOwotKwkJICBfX3djc19ucyA9IG5ldyB3Y2hhcl90W19fbGVuXTsKLSsJCSAgbWJzcnRvd2NzKF9fd2NzX25zLCAmX19jbmVnc2lnbiwgX19sZW4sICZfX3N0YXRlKTsKLSsJCSAgX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbiA9IF9fd2NzX25zOwotKwkJfQotKwkgICAgICBlbHNlCi0rCQlfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduID0gTCIiOwotKwkgICAgICBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduX3NpemUgPSB3Y3NsZW4oX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbik7Ci0rCi0rCSAgICAgIC8vIF9JbnRsID09IHRydWUuCi0rCSAgICAgIF9fbGVuID0gc3RybGVuKF9fY2N1cnIpOwotKwkgICAgICBpZiAoX19sZW4pCi0rCQl7Ci0rCQkgICsrX19sZW47Ci0rCQkgIG1lbXNldCgmX19zdGF0ZSwgMCwgc2l6ZW9mKG1ic3RhdGVfdCkpOwotKwkJICB3Y2hhcl90KiBfX3djcyA9IG5ldyB3Y2hhcl90W19fbGVuXTsKLSsJCSAgbWJzcnRvd2NzKF9fd2NzLCAmX19jY3VyciwgX19sZW4sICZfX3N0YXRlKTsKLSsJCSAgX01fZGF0YS0+X01fY3Vycl9zeW1ib2wgPSBfX3djczsKLSsJCX0KLSsJICAgICAgZWxzZQotKwkJX01fZGF0YS0+X01fY3Vycl9zeW1ib2wgPSBMIiI7Ci0rCSAgICAgIF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sX3NpemUgPSB3Y3NsZW4oX01fZGF0YS0+X01fY3Vycl9zeW1ib2wpOwotKwkgICAgfQotKwkgIGNhdGNoICguLi4pCi0rCSAgICB7Ci0rCSAgICAgIGRlbGV0ZSBfTV9kYXRhOwotKwkgICAgICBfTV9kYXRhID0gMDsKLSsJICAgICAgZGVsZXRlIF9fd2NzX3BzOwotKwkgICAgICBkZWxldGUgX193Y3NfbnM7Ci0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsJICAgICAgX191c2Vsb2NhbGUoX19vbGQpOwotKyNlbHNlCi0rCSAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9fb2xkKTsKLSsJICAgICAgZnJlZShfX29sZCk7Ci0rI2VuZGlmCi0rCSAgICAgIF9fdGhyb3dfZXhjZXB0aW9uX2FnYWluOwotKwkgICAgfQotKwotKwkgIF9NX2RhdGEtPl9NX2ZyYWNfZGlnaXRzID0gKihfX25sX2xhbmdpbmZvX2woX19JTlRfRlJBQ19ESUdJVFMsCi0rCQkJCQkJICAgICAgX19jbG9jKSk7Ci0rCSAgY2hhciBfX3BwcmVjZWRlcyA9ICooX19ubF9sYW5naW5mb19sKF9fSU5UX1BfQ1NfUFJFQ0VERVMsIF9fY2xvYykpOwotKwkgIGNoYXIgX19wc3BhY2UgPSAqKF9fbmxfbGFuZ2luZm9fbChfX0lOVF9QX1NFUF9CWV9TUEFDRSwgX19jbG9jKSk7Ci0rCSAgY2hhciBfX3Bwb3NuID0gKihfX25sX2xhbmdpbmZvX2woX19JTlRfUF9TSUdOX1BPU04sIF9fY2xvYykpOwotKwkgIF9NX2RhdGEtPl9NX3Bvc19mb3JtYXQgPSBfU19jb25zdHJ1Y3RfcGF0dGVybihfX3BwcmVjZWRlcywgX19wc3BhY2UsCi0rCQkJCQkJCV9fcHBvc24pOwotKwkgIGNoYXIgX19ucHJlY2VkZXMgPSAqKF9fbmxfbGFuZ2luZm9fbChfX0lOVF9OX0NTX1BSRUNFREVTLCBfX2Nsb2MpKTsKLSsJICBjaGFyIF9fbnNwYWNlID0gKihfX25sX2xhbmdpbmZvX2woX19JTlRfTl9TRVBfQllfU1BBQ0UsIF9fY2xvYykpOwotKwkgIF9NX2RhdGEtPl9NX25lZ19mb3JtYXQgPSBfU19jb25zdHJ1Y3RfcGF0dGVybihfX25wcmVjZWRlcywgX19uc3BhY2UsCi0rCQkJCQkJCV9fbnBvc24pOwotKwotKyNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0rCSAgX191c2Vsb2NhbGUoX19vbGQpOwotKyNlbHNlCi0rCSAgc2V0bG9jYWxlKExDX0FMTCwgX19vbGQpOwotKwkgIGZyZWUoX19vbGQpOwotKyNlbmRpZgotKwl9Ci0rICAgIH0KLSsKLSsgIHRlbXBsYXRlPD4KLSsgIHZvaWQKLSsgIG1vbmV5cHVuY3Q8d2NoYXJfdCwgZmFsc2U+OjpfTV9pbml0aWFsaXplX21vbmV5cHVuY3QoX19jX2xvY2FsZSBfX2Nsb2MsCi0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsJCQkJCQkgICAgICAgY29uc3QgY2hhciopCi0rI2Vsc2UKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogX19uYW1lKQotKyNlbmRpZgotKyAgewotKyAgICBpZiAoIV9NX2RhdGEpCi0rICAgICAgX01fZGF0YSA9IG5ldyBfX21vbmV5cHVuY3RfY2FjaGU8d2NoYXJfdCwgZmFsc2U+OwotKwotKyAgICBpZiAoIV9fY2xvYykKLSsJewotKwkgIC8vICJDIiBsb2NhbGUKLSsJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gTCcuJzsKLSsJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gTCcsJzsKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZyA9ICIiOwotKyAgICAgICAgICBfTV9kYXRhLT5fTV9ncm91cGluZ19zaXplID0gMDsKLSsJICBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbCA9IEwiIjsKLSsJICBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbF9zaXplID0gMDsKLSsJICBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduID0gTCIiOwotKwkgIF9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ25fc2l6ZSA9IDA7Ci0rCSAgX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbiA9IEwiIjsKLSsJICBfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduX3NpemUgPSAwOwotKwkgIF9NX2RhdGEtPl9NX2ZyYWNfZGlnaXRzID0gMDsKLSsJICBfTV9kYXRhLT5fTV9wb3NfZm9ybWF0ID0gbW9uZXlfYmFzZTo6X1NfZGVmYXVsdF9wYXR0ZXJuOwotKwkgIF9NX2RhdGEtPl9NX25lZ19mb3JtYXQgPSBtb25leV9iYXNlOjpfU19kZWZhdWx0X3BhdHRlcm47Ci0rCi0rCSAgLy8gVXNlIGN0eXBlOjp3aWRlbiBjb2RlIHdpdGhvdXQgdGhlIGZhY2V0Li4uCi0rCSAgZm9yIChzaXplX3QgX19pID0gMDsgX19pIDwgbW9uZXlfYmFzZTo6X1NfZW5kOyArK19faSkKLSsJICAgIF9NX2RhdGEtPl9NX2F0b21zW19faV0gPQotKwkgICAgICBzdGF0aWNfY2FzdDx3Y2hhcl90Pihtb25leV9iYXNlOjpfU19hdG9tc1tfX2ldKTsKLSsJfQotKyAgICAgIGVsc2UKLSsJewotKwkgIC8vIE5hbWVkIGxvY2FsZS4KLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKwkgIF9fY19sb2NhbGUgX19vbGQgPSBfX3VzZWxvY2FsZShfX2Nsb2MpOwotKyNlbHNlCi0rCSAgLy8gU3dpdGNoIHRvIG5hbWVkIGxvY2FsZSBzbyB0aGF0IG1ic3J0b3djcyB3aWxsIHdvcmsuCi0rCSAgY2hhciogX19vbGQgPSBzdHJkdXAoc2V0bG9jYWxlKExDX0FMTCwgTlVMTCkpOwotKwkgIHNldGxvY2FsZShMQ19BTEwsIF9fbmFtZSk7Ci0rI2VuZGlmCi0rCi0rI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi0rI3dhcm5pbmcgZml4IHRoaXMuLi4gc2hvdWxkIGJlIG1vbmV0YXJ5Ci0rI2VuZGlmCi0rI2lmZGVmIF9fVUNMSUJDX18KLSsjIGlmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gX19jbG9jLT5kZWNpbWFsX3BvaW50X3djOwotKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSBfX2Nsb2MtPnRob3VzYW5kc19zZXBfd2M7Ci0rIyBlbHNlCi0rCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IF9fZ2xvYmFsX2xvY2FsZS0+ZGVjaW1hbF9wb2ludF93YzsKLSsJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gX19nbG9iYWxfbG9jYWxlLT50aG91c2FuZHNfc2VwX3djOwotKyMgZW5kaWYKLSsjZWxzZQotKyAgICAgICAgICB1bmlvbiB7IGNoYXIgKl9fczsgd2NoYXJfdCBfX3c7IH0gX191OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX01PTkVUQVJZX0RFQ0lNQUxfUE9JTlRfV0MsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IF9fdS5fX3c7Ci0rCi0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfTU9ORVRBUllfVEhPVVNBTkRTX1NFUF9XQywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gX191Ll9fdzsKLSsjZW5kaWYKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZyA9IF9fbmxfbGFuZ2luZm9fbChfX01PTl9HUk9VUElORywgX19jbG9jKTsKLSsgICAgICAgICAgX01fZGF0YS0+X01fZ3JvdXBpbmdfc2l6ZSA9IHN0cmxlbihfTV9kYXRhLT5fTV9ncm91cGluZyk7Ci0rCi0rCSAgY29uc3QgY2hhciogX19jcG9zc2lnbiA9IF9fbmxfbGFuZ2luZm9fbChfX1BPU0lUSVZFX1NJR04sIF9fY2xvYyk7Ci0rCSAgY29uc3QgY2hhciogX19jbmVnc2lnbiA9IF9fbmxfbGFuZ2luZm9fbChfX05FR0FUSVZFX1NJR04sIF9fY2xvYyk7Ci0rCSAgY29uc3QgY2hhciogX19jY3VyciA9IF9fbmxfbGFuZ2luZm9fbChfX0NVUlJFTkNZX1NZTUJPTCwgX19jbG9jKTsKLSsKLSsJICB3Y2hhcl90KiBfX3djc19wcyA9IDA7Ci0rCSAgd2NoYXJfdCogX193Y3NfbnMgPSAwOwotKwkgIGNvbnN0IGNoYXIgX19ucG9zbiA9ICooX19ubF9sYW5naW5mb19sKF9fTl9TSUdOX1BPU04sIF9fY2xvYykpOwotKwkgIHRyeQotKyAgICAgICAgICAgIHsKLSsgICAgICAgICAgICAgIG1ic3RhdGVfdCBfX3N0YXRlOwotKyAgICAgICAgICAgICAgc2l6ZV90IF9fbGVuOwotKyAgICAgICAgICAgICAgX19sZW4gPSBzdHJsZW4oX19jcG9zc2lnbik7Ci0rICAgICAgICAgICAgICBpZiAoX19sZW4pCi0rICAgICAgICAgICAgICAgIHsKLSsJCSAgKytfX2xlbjsKLSsJCSAgbWVtc2V0KCZfX3N0YXRlLCAwLCBzaXplb2YobWJzdGF0ZV90KSk7Ci0rCQkgIF9fd2NzX3BzID0gbmV3IHdjaGFyX3RbX19sZW5dOwotKwkJICBtYnNydG93Y3MoX193Y3NfcHMsICZfX2Nwb3NzaWduLCBfX2xlbiwgJl9fc3RhdGUpOwotKwkJICBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduID0gX193Y3NfcHM7Ci0rCQl9Ci0rCSAgICAgIGVsc2UKLSsJCV9NX2RhdGEtPl9NX3Bvc2l0aXZlX3NpZ24gPSBMIiI7Ci0rICAgICAgICAgICAgICBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduX3NpemUgPSB3Y3NsZW4oX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbik7Ci0rCi0rCSAgICAgIF9fbGVuID0gc3RybGVuKF9fY25lZ3NpZ24pOwotKwkgICAgICBpZiAoIV9fbnBvc24pCi0rCQlfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduID0gTCIoKSI7Ci0rCSAgICAgIGVsc2UgaWYgKF9fbGVuKQotKwkJewotKwkJICArK19fbGVuOwotKwkJICBtZW1zZXQoJl9fc3RhdGUsIDAsIHNpemVvZihtYnN0YXRlX3QpKTsKLSsJCSAgX193Y3NfbnMgPSBuZXcgd2NoYXJfdFtfX2xlbl07Ci0rCQkgIG1ic3J0b3djcyhfX3djc19ucywgJl9fY25lZ3NpZ24sIF9fbGVuLCAmX19zdGF0ZSk7Ci0rCQkgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24gPSBfX3djc19uczsKLSsJCX0KLSsJICAgICAgZWxzZQotKwkJX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbiA9IEwiIjsKLSsgICAgICAgICAgICAgIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ25fc2l6ZSA9IHdjc2xlbihfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduKTsKLSsKLSsJICAgICAgLy8gX0ludGwgPT0gdHJ1ZS4KLSsJICAgICAgX19sZW4gPSBzdHJsZW4oX19jY3Vycik7Ci0rCSAgICAgIGlmIChfX2xlbikKLSsJCXsKLSsJCSAgKytfX2xlbjsKLSsJCSAgbWVtc2V0KCZfX3N0YXRlLCAwLCBzaXplb2YobWJzdGF0ZV90KSk7Ci0rCQkgIHdjaGFyX3QqIF9fd2NzID0gbmV3IHdjaGFyX3RbX19sZW5dOwotKwkJICBtYnNydG93Y3MoX193Y3MsICZfX2NjdXJyLCBfX2xlbiwgJl9fc3RhdGUpOwotKwkJICBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbCA9IF9fd2NzOwotKwkJfQotKwkgICAgICBlbHNlCi0rCQlfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbCA9IEwiIjsKLSsgICAgICAgICAgICAgIF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sX3NpemUgPSB3Y3NsZW4oX01fZGF0YS0+X01fY3Vycl9zeW1ib2wpOwotKwkgICAgfQotKyAgICAgICAgICBjYXRjaCAoLi4uKQotKwkgICAgewotKwkgICAgICBkZWxldGUgX01fZGF0YTsKLSsgICAgICAgICAgICAgIF9NX2RhdGEgPSAwOwotKwkgICAgICBkZWxldGUgX193Y3NfcHM7Ci0rCSAgICAgIGRlbGV0ZSBfX3djc19uczsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKwkgICAgICBfX3VzZWxvY2FsZShfX29sZCk7Ci0rI2Vsc2UKLSsJICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX19vbGQpOwotKwkgICAgICBmcmVlKF9fb2xkKTsKLSsjZW5kaWYKLSsgICAgICAgICAgICAgIF9fdGhyb3dfZXhjZXB0aW9uX2FnYWluOwotKwkgICAgfQotKwotKwkgIF9NX2RhdGEtPl9NX2ZyYWNfZGlnaXRzID0gKihfX25sX2xhbmdpbmZvX2woX19GUkFDX0RJR0lUUywgX19jbG9jKSk7Ci0rCSAgY2hhciBfX3BwcmVjZWRlcyA9ICooX19ubF9sYW5naW5mb19sKF9fUF9DU19QUkVDRURFUywgX19jbG9jKSk7Ci0rCSAgY2hhciBfX3BzcGFjZSA9ICooX19ubF9sYW5naW5mb19sKF9fUF9TRVBfQllfU1BBQ0UsIF9fY2xvYykpOwotKwkgIGNoYXIgX19wcG9zbiA9ICooX19ubF9sYW5naW5mb19sKF9fUF9TSUdOX1BPU04sIF9fY2xvYykpOwotKwkgIF9NX2RhdGEtPl9NX3Bvc19mb3JtYXQgPSBfU19jb25zdHJ1Y3RfcGF0dGVybihfX3BwcmVjZWRlcywgX19wc3BhY2UsCi0rCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fcHBvc24pOwotKwkgIGNoYXIgX19ucHJlY2VkZXMgPSAqKF9fbmxfbGFuZ2luZm9fbChfX05fQ1NfUFJFQ0VERVMsIF9fY2xvYykpOwotKwkgIGNoYXIgX19uc3BhY2UgPSAqKF9fbmxfbGFuZ2luZm9fbChfX05fU0VQX0JZX1NQQUNFLCBfX2Nsb2MpKTsKLSsJICBfTV9kYXRhLT5fTV9uZWdfZm9ybWF0ID0gX1NfY29uc3RydWN0X3BhdHRlcm4oX19ucHJlY2VkZXMsIF9fbnNwYWNlLAotKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX25wb3NuKTsKLSsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKwkgIF9fdXNlbG9jYWxlKF9fb2xkKTsKLSsjZWxzZQotKwkgIHNldGxvY2FsZShMQ19BTEwsIF9fb2xkKTsKLSsJICBmcmVlKF9fb2xkKTsKLSsjZW5kaWYKLSsJfQotKyAgICB9Ci0rCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIG1vbmV5cHVuY3Q8d2NoYXJfdCwgdHJ1ZT46On5tb25leXB1bmN0KCkKLSsgICAgewotKyAgICAgIGlmIChfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduX3NpemUpCi0rCWRlbGV0ZSBbXSBfTV9kYXRhLT5fTV9wb3NpdGl2ZV9zaWduOwotKyAgICAgIGlmIChfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduX3NpemUKLSsgICAgICAgICAgJiYgd2NzY21wKF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ24sIEwiKCkiKSAhPSAwKQotKwlkZWxldGUgW10gX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbjsKLSsgICAgICBpZiAoX01fZGF0YS0+X01fY3Vycl9zeW1ib2xfc2l6ZSkKLSsJZGVsZXRlIFtdIF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sOwotKyAgICAgIGRlbGV0ZSBfTV9kYXRhOwotKyAgICB9Ci0rCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIG1vbmV5cHVuY3Q8d2NoYXJfdCwgZmFsc2U+Ojp+bW9uZXlwdW5jdCgpCi0rICAgIHsKLSsgICAgICBpZiAoX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbl9zaXplKQotKwlkZWxldGUgW10gX01fZGF0YS0+X01fcG9zaXRpdmVfc2lnbjsKLSsgICAgICBpZiAoX01fZGF0YS0+X01fbmVnYXRpdmVfc2lnbl9zaXplCi0rICAgICAgICAgICYmIHdjc2NtcChfTV9kYXRhLT5fTV9uZWdhdGl2ZV9zaWduLCBMIigpIikgIT0gMCkKLSsJZGVsZXRlIFtdIF9NX2RhdGEtPl9NX25lZ2F0aXZlX3NpZ247Ci0rICAgICAgaWYgKF9NX2RhdGEtPl9NX2N1cnJfc3ltYm9sX3NpemUpCi0rCWRlbGV0ZSBbXSBfTV9kYXRhLT5fTV9jdXJyX3N5bWJvbDsKLSsgICAgICBkZWxldGUgX01fZGF0YTsKLSsgICAgfQotKyNlbmRpZgotK30KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjg4M2VjMWEKLS0tLSAvZGV2L251bGwKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MKLUBAIC0wLDAgKzEsMTYwIEBACi0rLy8gc3RkOjpudW1wdW5jdCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLCBHTlUgdmVyc2lvbiAtKi0gQysrIC0qLQotKwotKy8vIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvLwotKy8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgSVNPIEMrKyBMaWJyYXJ5LiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUKLSsvLyBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUKLSsvLyB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotKy8vIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKy8vIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKy8vIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKy8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKy8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSsvLyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rLy8gU29mdHdhcmUgRm91bmRhdGlvbiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rLy8gVVNBLgotKwotKy8vIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHlvdSBtYXkgdXNlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgZnJlZSBzb2Z0d2FyZQotKy8vIGxpYnJhcnkgd2l0aG91dCByZXN0cmljdGlvbi4gIFNwZWNpZmljYWxseSwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUKLSsvLyB0ZW1wbGF0ZXMgb3IgdXNlIG1hY3JvcyBvciBpbmxpbmUgZnVuY3Rpb25zIGZyb20gdGhpcyBmaWxlLCBvciB5b3UgY29tcGlsZQotKy8vIHRoaXMgZmlsZSBhbmQgbGluayBpdCB3aXRoIG90aGVyIGZpbGVzIHRvIHByb2R1Y2UgYW4gZXhlY3V0YWJsZSwgdGhpcwotKy8vIGZpbGUgZG9lcyBub3QgYnkgaXRzZWxmIGNhdXNlIHRoZSByZXN1bHRpbmcgZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhpcyBleGNlcHRpb24gZG9lcyBub3QgaG93ZXZlcgotKy8vIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSBleGVjdXRhYmxlIGZpbGUgbWlnaHQgYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KLSsKLSsvLwotKy8vIElTTyBDKysgMTQ4ODI6IDIyLjIuMy4xLjIgIG51bXB1bmN0IHZpcnR1YWwgZnVuY3Rpb25zCi0rLy8KLSsKLSsvLyBXcml0dGVuIGJ5IEJlbmphbWluIEtvc25payA8YmtvekByZWRoYXQuY29tPgotKwotKyNkZWZpbmUgX0xJQkMKLSsjaW5jbHVkZSA8bG9jYWxlPgotKyN1bmRlZiBfTElCQwotKyNpbmNsdWRlIDxiaXRzL2MrK2xvY2FsZV9pbnRlcm5hbC5oPgotKwotKyNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotKyN3YXJuaW5nIHRhaWxvciBmb3Igc3R1YiBsb2NhbGUgc3VwcG9ydAotKyNlbmRpZgotKyNpZm5kZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyNkZWZpbmUgX19ubF9sYW5naW5mb19sKE4sIEwpICAgICAgICAgbmxfbGFuZ2luZm8oKE4pKQotKyNlbmRpZgotKwotK25hbWVzcGFjZSBzdGQKLSt7Ci0rICB0ZW1wbGF0ZTw+Ci0rICAgIHZvaWQKLSsgICAgbnVtcHVuY3Q8Y2hhcj46Ol9NX2luaXRpYWxpemVfbnVtcHVuY3QoX19jX2xvY2FsZSBfX2Nsb2MpCi0rICAgIHsKLSsgICAgICBpZiAoIV9NX2RhdGEpCi0rCV9NX2RhdGEgPSBuZXcgX19udW1wdW5jdF9jYWNoZTxjaGFyPjsKLSsKLSsgICAgICBpZiAoIV9fY2xvYykKLSsJewotKwkgIC8vICJDIiBsb2NhbGUKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZyA9ICIiOwotKwkgIF9NX2RhdGEtPl9NX2dyb3VwaW5nX3NpemUgPSAwOwotKwkgIF9NX2RhdGEtPl9NX3VzZV9ncm91cGluZyA9IGZhbHNlOwotKwotKwkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSAnLic7Ci0rCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9ICcsJzsKLSsKLSsJICBmb3IgKHNpemVfdCBfX2kgPSAwOyBfX2kgPCBfX251bV9iYXNlOjpfU19vZW5kOyArK19faSkKLSsJICAgIF9NX2RhdGEtPl9NX2F0b21zX291dFtfX2ldID0gX19udW1fYmFzZTo6X1NfYXRvbXNfb3V0W19faV07Ci0rCi0rCSAgZm9yIChzaXplX3QgX19qID0gMDsgX19qIDwgX19udW1fYmFzZTo6X1NfaWVuZDsgKytfX2opCi0rCSAgICBfTV9kYXRhLT5fTV9hdG9tc19pbltfX2pdID0gX19udW1fYmFzZTo6X1NfYXRvbXNfaW5bX19qXTsKLSsJfQotKyAgICAgIGVsc2UKLSsJewotKwkgIC8vIE5hbWVkIGxvY2FsZS4KLSsJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gKihfX25sX2xhbmdpbmZvX2woREVDSU1BTF9QT0lOVCwKLSsJCQkJCQkJX19jbG9jKSk7Ci0rCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9ICooX19ubF9sYW5naW5mb19sKFRIT1VTQU5EU19TRVAsCi0rCQkJCQkJCV9fY2xvYykpOwotKwotKwkgIC8vIENoZWNrIGZvciBOVUxMLCB3aGljaCBpbXBsaWVzIG5vIGdyb3VwaW5nLgotKwkgIGlmIChfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID09ICdcMCcpCi0rCSAgICBfTV9kYXRhLT5fTV9ncm91cGluZyA9ICIiOwotKwkgIGVsc2UKLSsJICAgIF9NX2RhdGEtPl9NX2dyb3VwaW5nID0gX19ubF9sYW5naW5mb19sKEdST1VQSU5HLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2dyb3VwaW5nX3NpemUgPSBzdHJsZW4oX01fZGF0YS0+X01fZ3JvdXBpbmcpOwotKwl9Ci0rCi0rICAgICAgLy8gTkI6IFRoZXJlIGlzIG5vIHdheSB0byBleHRhY3QgdGhpcyBpbmZvIGZyb20gcG9zaXggbG9jYWxlcy4KLSsgICAgICAvLyBfTV90cnVlbmFtZSA9IF9fbmxfbGFuZ2luZm9fbChZRVNTVFIsIF9fY2xvYyk7Ci0rICAgICAgX01fZGF0YS0+X01fdHJ1ZW5hbWUgPSAidHJ1ZSI7Ci0rICAgICAgX01fZGF0YS0+X01fdHJ1ZW5hbWVfc2l6ZSA9IDQ7Ci0rICAgICAgLy8gX01fZmFsc2VuYW1lID0gX19ubF9sYW5naW5mb19sKE5PU1RSLCBfX2Nsb2MpOwotKyAgICAgIF9NX2RhdGEtPl9NX2ZhbHNlbmFtZSA9ICJmYWxzZSI7Ci0rICAgICAgX01fZGF0YS0+X01fZmFsc2VuYW1lX3NpemUgPSA1OwotKyAgICB9Ci0rCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIG51bXB1bmN0PGNoYXI+Ojp+bnVtcHVuY3QoKQotKyAgICB7IGRlbGV0ZSBfTV9kYXRhOyB9Ci0rCi0rI2lmZGVmIF9HTElCQ1hYX1VTRV9XQ0hBUl9UCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIHZvaWQKLSsgICAgbnVtcHVuY3Q8d2NoYXJfdD46Ol9NX2luaXRpYWxpemVfbnVtcHVuY3QoX19jX2xvY2FsZSBfX2Nsb2MpCi0rICAgIHsKLSsgICAgICBpZiAoIV9NX2RhdGEpCi0rCV9NX2RhdGEgPSBuZXcgX19udW1wdW5jdF9jYWNoZTx3Y2hhcl90PjsKLSsKLSsgICAgICBpZiAoIV9fY2xvYykKLSsJewotKwkgIC8vICJDIiBsb2NhbGUKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZyA9ICIiOwotKwkgIF9NX2RhdGEtPl9NX2dyb3VwaW5nX3NpemUgPSAwOwotKwkgIF9NX2RhdGEtPl9NX3VzZV9ncm91cGluZyA9IGZhbHNlOwotKwotKwkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSBMJy4nOwotKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSBMJywnOwotKwotKwkgIC8vIFVzZSBjdHlwZTo6d2lkZW4gY29kZSB3aXRob3V0IHRoZSBmYWNldC4uLgotKwkgIGZvciAoc2l6ZV90IF9faSA9IDA7IF9faSA8IF9fbnVtX2Jhc2U6Ol9TX29lbmQ7ICsrX19pKQotKwkgICAgX01fZGF0YS0+X01fYXRvbXNfb3V0W19faV0gPQotKwkgICAgICBzdGF0aWNfY2FzdDx3Y2hhcl90PihfX251bV9iYXNlOjpfU19hdG9tc19vdXRbX19pXSk7Ci0rCi0rCSAgZm9yIChzaXplX3QgX19qID0gMDsgX19qIDwgX19udW1fYmFzZTo6X1NfaWVuZDsgKytfX2opCi0rCSAgICBfTV9kYXRhLT5fTV9hdG9tc19pbltfX2pdID0KLSsJICAgICAgc3RhdGljX2Nhc3Q8d2NoYXJfdD4oX19udW1fYmFzZTo6X1NfYXRvbXNfaW5bX19qXSk7Ci0rCX0KLSsgICAgICBlbHNlCi0rCXsKLSsJICAvLyBOYW1lZCBsb2NhbGUuCi0rCSAgLy8gTkI6IEluIHRoZSBHTlUgbW9kZWwgd2NoYXJfdCBpcyBhbHdheXMgMzIgYml0IHdpZGUuCi0rCSAgdW5pb24geyBjaGFyICpfX3M7IHdjaGFyX3QgX193OyB9IF9fdTsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9OVU1FUklDX0RFQ0lNQUxfUE9JTlRfV0MsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IF9fdS5fX3c7Ci0rCi0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfTlVNRVJJQ19USE9VU0FORFNfU0VQX1dDLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSBfX3UuX193OwotKwotKwkgIGlmIChfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID09IEwnXDAnKQotKwkgICAgX01fZGF0YS0+X01fZ3JvdXBpbmcgPSAiIjsKLSsJICBlbHNlCi0rCSAgICBfTV9kYXRhLT5fTV9ncm91cGluZyA9IF9fbmxfbGFuZ2luZm9fbChHUk9VUElORywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9ncm91cGluZ19zaXplID0gc3RybGVuKF9NX2RhdGEtPl9NX2dyb3VwaW5nKTsKLSsJfQotKwotKyAgICAgIC8vIE5COiBUaGVyZSBpcyBubyB3YXkgdG8gZXh0YWN0IHRoaXMgaW5mbyBmcm9tIHBvc2l4IGxvY2FsZXMuCi0rICAgICAgLy8gX01fdHJ1ZW5hbWUgPSBfX25sX2xhbmdpbmZvX2woWUVTU1RSLCBfX2Nsb2MpOwotKyAgICAgIF9NX2RhdGEtPl9NX3RydWVuYW1lID0gTCJ0cnVlIjsKLSsgICAgICBfTV9kYXRhLT5fTV90cnVlbmFtZV9zaXplID0gNDsKLSsgICAgICAvLyBfTV9mYWxzZW5hbWUgPSBfX25sX2xhbmdpbmZvX2woTk9TVFIsIF9fY2xvYyk7Ci0rICAgICAgX01fZGF0YS0+X01fZmFsc2VuYW1lID0gTCJmYWxzZSI7Ci0rICAgICAgX01fZGF0YS0+X01fZmFsc2VuYW1lX3NpemUgPSA1OwotKyAgICB9Ci0rCi0rICB0ZW1wbGF0ZTw+Ci0rICAgIG51bXB1bmN0PHdjaGFyX3Q+Ojp+bnVtcHVuY3QoKQotKyAgICB7IGRlbGV0ZSBfTV9kYXRhOyB9Ci0rICNlbmRpZgotK30KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmUwNzA3ZDcKLS0tLSAvZGV2L251bGwKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuY2MKLUBAIC0wLDAgKzEsNDA2IEBACi0rLy8gc3RkOjp0aW1lX2dldCwgc3RkOjp0aW1lX3B1dCBpbXBsZW1lbnRhdGlvbiwgR05VIHZlcnNpb24gLSotIEMrKyAtKi0KLSsKLSsvLyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLy8KLSsvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIElTTyBDKysgTGlicmFyeS4gIFRoaXMgbGlicmFyeSBpcyBmcmVlCi0rLy8gc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlCi0rLy8gdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLSsvLyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsvLyBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsvLyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsvLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKy8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsvLyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCi0rLy8gd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQotKy8vIFNvZnR3YXJlIEZvdW5kYXRpb24sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKy8vIFVTQS4KLSsKLSsvLyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5IHVzZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIGZyZWUgc29mdHdhcmUKLSsvLyBsaWJyYXJ5IHdpdGhvdXQgcmVzdHJpY3Rpb24uICBTcGVjaWZpY2FsbHksIGlmIG90aGVyIGZpbGVzIGluc3RhbnRpYXRlCi0rLy8gdGVtcGxhdGVzIG9yIHVzZSBtYWNyb3Mgb3IgaW5saW5lIGZ1bmN0aW9ucyBmcm9tIHRoaXMgZmlsZSwgb3IgeW91IGNvbXBpbGUKLSsvLyB0aGlzIGZpbGUgYW5kIGxpbmsgaXQgd2l0aCBvdGhlciBmaWxlcyB0byBwcm9kdWNlIGFuIGV4ZWN1dGFibGUsIHRoaXMKLSsvLyBmaWxlIGRvZXMgbm90IGJ5IGl0c2VsZiBjYXVzZSB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUgdG8gYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoaXMgZXhjZXB0aW9uIGRvZXMgbm90IGhvd2V2ZXIKLSsvLyBpbnZhbGlkYXRlIGFueSBvdGhlciByZWFzb25zIHdoeSB0aGUgZXhlY3V0YWJsZSBmaWxlIG1pZ2h0IGJlIGNvdmVyZWQgYnkKLSsvLyB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCi0rCi0rLy8KLSsvLyBJU08gQysrIDE0ODgyOiAyMi4yLjUuMS4yIC0gdGltZV9nZXQgdmlydHVhbCBmdW5jdGlvbnMKLSsvLyBJU08gQysrIDE0ODgyOiAyMi4yLjUuMy4yIC0gdGltZV9wdXQgdmlydHVhbCBmdW5jdGlvbnMKLSsvLwotKwotKy8vIFdyaXR0ZW4gYnkgQmVuamFtaW4gS29zbmlrIDxia296QHJlZGhhdC5jb20+Ci0rCi0rI2luY2x1ZGUgPGxvY2FsZT4KLSsjaW5jbHVkZSA8Yml0cy9jKytsb2NhbGVfaW50ZXJuYWwuaD4KLSsKLSsjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KLSsjd2FybmluZyB0YWlsb3IgZm9yIHN0dWIgbG9jYWxlIHN1cHBvcnQKLSsjZW5kaWYKLSsjaWZuZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsjZGVmaW5lIF9fbmxfbGFuZ2luZm9fbChOLCBMKSAgICAgICAgIG5sX2xhbmdpbmZvKChOKSkKLSsjZW5kaWYKLSsKLStuYW1lc3BhY2Ugc3RkCi0rewotKyAgdGVtcGxhdGU8PgotKyAgICB2b2lkCi0rICAgIF9fdGltZXB1bmN0PGNoYXI+OjoKLSsgICAgX01fcHV0KGNoYXIqIF9fcywgc2l6ZV90IF9fbWF4bGVuLCBjb25zdCBjaGFyKiBfX2Zvcm1hdCwKLSsJICAgY29uc3QgdG0qIF9fdG0pIGNvbnN0Ci0rICAgIHsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotKyAgICAgIGNvbnN0IHNpemVfdCBfX2xlbiA9IF9fc3RyZnRpbWVfbChfX3MsIF9fbWF4bGVuLCBfX2Zvcm1hdCwgX190bSwKLSsJCQkJCV9NX2NfbG9jYWxlX3RpbWVwdW5jdCk7Ci0rI2Vsc2UKLSsgICAgICBjaGFyKiBfX29sZCA9IHN0cmR1cChzZXRsb2NhbGUoTENfQUxMLCBOVUxMKSk7Ci0rICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX01fbmFtZV90aW1lcHVuY3QpOwotKyAgICAgIGNvbnN0IHNpemVfdCBfX2xlbiA9IHN0cmZ0aW1lKF9fcywgX19tYXhsZW4sIF9fZm9ybWF0LCBfX3RtKTsKLSsgICAgICBzZXRsb2NhbGUoTENfQUxMLCBfX29sZCk7Ci0rICAgICAgZnJlZShfX29sZCk7Ci0rI2VuZGlmCi0rICAgICAgLy8gTWFrZSBzdXJlIF9fcyBpcyBudWxsIHRlcm1pbmF0ZWQuCi0rICAgICAgaWYgKF9fbGVuID09IDApCi0rCV9fc1swXSA9ICdcMCc7Ci0rICAgIH0KLSsKLSsgIHRlbXBsYXRlPD4KLSsgICAgdm9pZAotKyAgICBfX3RpbWVwdW5jdDxjaGFyPjo6X01faW5pdGlhbGl6ZV90aW1lcHVuY3QoX19jX2xvY2FsZSBfX2Nsb2MpCi0rICAgIHsKLSsgICAgICBpZiAoIV9NX2RhdGEpCi0rCV9NX2RhdGEgPSBuZXcgX190aW1lcHVuY3RfY2FjaGU8Y2hhcj47Ci0rCi0rICAgICAgaWYgKCFfX2Nsb2MpCi0rCXsKLSsJICAvLyAiQyIgbG9jYWxlCi0rCSAgX01fY19sb2NhbGVfdGltZXB1bmN0ID0gX1NfZ2V0X2NfbG9jYWxlKCk7Ci0rCi0rCSAgX01fZGF0YS0+X01fZGF0ZV9mb3JtYXQgPSAiJW0vJWQvJXkiOwotKwkgIF9NX2RhdGEtPl9NX2RhdGVfZXJhX2Zvcm1hdCA9ICIlbS8lZC8leSI7Ci0rCSAgX01fZGF0YS0+X01fdGltZV9mb3JtYXQgPSAiJUg6JU06JVMiOwotKwkgIF9NX2RhdGEtPl9NX3RpbWVfZXJhX2Zvcm1hdCA9ICIlSDolTTolUyI7Ci0rCSAgX01fZGF0YS0+X01fZGF0ZV90aW1lX2Zvcm1hdCA9ICIiOwotKwkgIF9NX2RhdGEtPl9NX2RhdGVfdGltZV9lcmFfZm9ybWF0ID0gIiI7Ci0rCSAgX01fZGF0YS0+X01fYW0gPSAiQU0iOwotKwkgIF9NX2RhdGEtPl9NX3BtID0gIlBNIjsKLSsJICBfTV9kYXRhLT5fTV9hbV9wbV9mb3JtYXQgPSAiIjsKLSsKLSsJICAvLyBEYXkgbmFtZXMsIHN0YXJ0aW5nIHdpdGggIkMiJ3MgU3VuZGF5LgotKwkgIF9NX2RhdGEtPl9NX2RheTEgPSAiU3VuZGF5IjsKLSsJICBfTV9kYXRhLT5fTV9kYXkyID0gIk1vbmRheSI7Ci0rCSAgX01fZGF0YS0+X01fZGF5MyA9ICJUdWVzZGF5IjsKLSsJICBfTV9kYXRhLT5fTV9kYXk0ID0gIldlZG5lc2RheSI7Ci0rCSAgX01fZGF0YS0+X01fZGF5NSA9ICJUaHVyc2RheSI7Ci0rCSAgX01fZGF0YS0+X01fZGF5NiA9ICJGcmlkYXkiOwotKwkgIF9NX2RhdGEtPl9NX2RheTcgPSAiU2F0dXJkYXkiOwotKwotKwkgIC8vIEFiYnJldmlhdGVkIGRheSBuYW1lcywgc3RhcnRpbmcgd2l0aCAiQyIncyBTdW4uCi0rCSAgX01fZGF0YS0+X01fYWRheTEgPSAiU3VuIjsKLSsJICBfTV9kYXRhLT5fTV9hZGF5MiA9ICJNb24iOwotKwkgIF9NX2RhdGEtPl9NX2FkYXkzID0gIlR1ZSI7Ci0rCSAgX01fZGF0YS0+X01fYWRheTQgPSAiV2VkIjsKLSsJICBfTV9kYXRhLT5fTV9hZGF5NSA9ICJUaHUiOwotKwkgIF9NX2RhdGEtPl9NX2FkYXk2ID0gIkZyaSI7Ci0rCSAgX01fZGF0YS0+X01fYWRheTcgPSAiU2F0IjsKLSsKLSsJICAvLyBNb250aCBuYW1lcywgc3RhcnRpbmcgd2l0aCAiQyIncyBKYW51YXJ5LgotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDEgPSAiSmFudWFyeSI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwMiA9ICJGZWJydWFyeSI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwMyA9ICJNYXJjaCI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwNCA9ICJBcHJpbCI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwNSA9ICJNYXkiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDYgPSAiSnVuZSI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwNyA9ICJKdWx5IjsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA4ID0gIkF1Z3VzdCI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwOSA9ICJTZXB0ZW1iZXIiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMTAgPSAiT2N0b2JlciI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgxMSA9ICJOb3ZlbWJlciI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgxMiA9ICJEZWNlbWJlciI7Ci0rCi0rCSAgLy8gQWJicmV2aWF0ZWQgbW9udGggbmFtZXMsIHN0YXJ0aW5nIHdpdGggIkMiJ3MgSmFuLgotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDAxID0gIkphbiI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDIgPSAiRmViIjsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwMyA9ICJNYXIiOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA0ID0gIkFwciI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDUgPSAiTWF5IjsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwNiA9ICJKdW4iOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA3ID0gIkp1bCI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDggPSAiQXVnIjsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwOSA9ICJTZXAiOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDEwID0gIk9jdCI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMTEgPSAiTm92IjsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgxMiA9ICJEZWMiOwotKwl9Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgX01fY19sb2NhbGVfdGltZXB1bmN0ID0gX1NfY2xvbmVfY19sb2NhbGUoX19jbG9jKTsKLSsKLSsJICBfTV9kYXRhLT5fTV9kYXRlX2Zvcm1hdCA9IF9fbmxfbGFuZ2luZm9fbChEX0ZNVCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kYXRlX2VyYV9mb3JtYXQgPSBfX25sX2xhbmdpbmZvX2woRVJBX0RfRk1ULCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX3RpbWVfZm9ybWF0ID0gX19ubF9sYW5naW5mb19sKFRfRk1ULCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX3RpbWVfZXJhX2Zvcm1hdCA9IF9fbmxfbGFuZ2luZm9fbChFUkFfVF9GTVQsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZGF0ZV90aW1lX2Zvcm1hdCA9IF9fbmxfbGFuZ2luZm9fbChEX1RfRk1ULCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RhdGVfdGltZV9lcmFfZm9ybWF0ID0gX19ubF9sYW5naW5mb19sKEVSQV9EX1RfRk1ULAotKwkJCQkJCQkgICAgIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW0gPSBfX25sX2xhbmdpbmZvX2woQU1fU1RSLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX3BtID0gX19ubF9sYW5naW5mb19sKFBNX1NUUiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbV9wbV9mb3JtYXQgPSBfX25sX2xhbmdpbmZvX2woVF9GTVRfQU1QTSwgX19jbG9jKTsKLSsKLSsJICAvLyBEYXkgbmFtZXMsIHN0YXJ0aW5nIHdpdGggIkMiJ3MgU3VuZGF5LgotKwkgIF9NX2RhdGEtPl9NX2RheTEgPSBfX25sX2xhbmdpbmZvX2woREFZXzEsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZGF5MiA9IF9fbmxfbGFuZ2luZm9fbChEQVlfMiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kYXkzID0gX19ubF9sYW5naW5mb19sKERBWV8zLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RheTQgPSBfX25sX2xhbmdpbmZvX2woREFZXzQsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZGF5NSA9IF9fbmxfbGFuZ2luZm9fbChEQVlfNSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kYXk2ID0gX19ubF9sYW5naW5mb19sKERBWV82LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RheTcgPSBfX25sX2xhbmdpbmZvX2woREFZXzcsIF9fY2xvYyk7Ci0rCi0rCSAgLy8gQWJicmV2aWF0ZWQgZGF5IG5hbWVzLCBzdGFydGluZyB3aXRoICJDIidzIFN1bi4KLSsJICBfTV9kYXRhLT5fTV9hZGF5MSA9IF9fbmxfbGFuZ2luZm9fbChBQkRBWV8xLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2FkYXkyID0gX19ubF9sYW5naW5mb19sKEFCREFZXzIsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYWRheTMgPSBfX25sX2xhbmdpbmZvX2woQUJEQVlfMywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hZGF5NCA9IF9fbmxfbGFuZ2luZm9fbChBQkRBWV80LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2FkYXk1ID0gX19ubF9sYW5naW5mb19sKEFCREFZXzUsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYWRheTYgPSBfX25sX2xhbmdpbmZvX2woQUJEQVlfNiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hZGF5NyA9IF9fbmxfbGFuZ2luZm9fbChBQkRBWV83LCBfX2Nsb2MpOwotKwotKwkgIC8vIE1vbnRoIG5hbWVzLCBzdGFydGluZyB3aXRoICJDIidzIEphbnVhcnkuCi0rCSAgX01fZGF0YS0+X01fbW9udGgwMSA9IF9fbmxfbGFuZ2luZm9fbChNT05fMSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9tb250aDAyID0gX19ubF9sYW5naW5mb19sKE1PTl8yLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDMgPSBfX25sX2xhbmdpbmZvX2woTU9OXzMsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwNCA9IF9fbmxfbGFuZ2luZm9fbChNT05fNCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA1ID0gX19ubF9sYW5naW5mb19sKE1PTl81LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDYgPSBfX25sX2xhbmdpbmZvX2woTU9OXzYsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwNyA9IF9fbmxfbGFuZ2luZm9fbChNT05fNywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA4ID0gX19ubF9sYW5naW5mb19sKE1PTl84LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDkgPSBfX25sX2xhbmdpbmZvX2woTU9OXzksIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgxMCA9IF9fbmxfbGFuZ2luZm9fbChNT05fMTAsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgxMSA9IF9fbmxfbGFuZ2luZm9fbChNT05fMTEsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgxMiA9IF9fbmxfbGFuZ2luZm9fbChNT05fMTIsIF9fY2xvYyk7Ci0rCi0rCSAgLy8gQWJicmV2aWF0ZWQgbW9udGggbmFtZXMsIHN0YXJ0aW5nIHdpdGggIkMiJ3MgSmFuLgotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDAxID0gX19ubF9sYW5naW5mb19sKEFCTU9OXzEsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDIgPSBfX25sX2xhbmdpbmZvX2woQUJNT05fMiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwMyA9IF9fbmxfbGFuZ2luZm9fbChBQk1PTl8zLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA0ID0gX19ubF9sYW5naW5mb19sKEFCTU9OXzQsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDUgPSBfX25sX2xhbmdpbmZvX2woQUJNT05fNSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwNiA9IF9fbmxfbGFuZ2luZm9fbChBQk1PTl82LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA3ID0gX19ubF9sYW5naW5mb19sKEFCTU9OXzcsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDggPSBfX25sX2xhbmdpbmZvX2woQUJNT05fOCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwOSA9IF9fbmxfbGFuZ2luZm9fbChBQk1PTl85LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDEwID0gX19ubF9sYW5naW5mb19sKEFCTU9OXzEwLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDExID0gX19ubF9sYW5naW5mb19sKEFCTU9OXzExLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDEyID0gX19ubF9sYW5naW5mb19sKEFCTU9OXzEyLCBfX2Nsb2MpOwotKwl9Ci0rICAgIH0KLSsKLSsjaWZkZWYgX0dMSUJDWFhfVVNFX1dDSEFSX1QKLSsgIHRlbXBsYXRlPD4KLSsgICAgdm9pZAotKyAgICBfX3RpbWVwdW5jdDx3Y2hhcl90Pjo6Ci0rICAgIF9NX3B1dCh3Y2hhcl90KiBfX3MsIHNpemVfdCBfX21heGxlbiwgY29uc3Qgd2NoYXJfdCogX19mb3JtYXQsCi0rCSAgIGNvbnN0IHRtKiBfX3RtKSBjb25zdAotKyAgICB7Ci0rI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsgICAgICBfX3djc2Z0aW1lX2woX19zLCBfX21heGxlbiwgX19mb3JtYXQsIF9fdG0sIF9NX2NfbG9jYWxlX3RpbWVwdW5jdCk7Ci0rICAgICAgY29uc3Qgc2l6ZV90IF9fbGVuID0gX193Y3NmdGltZV9sKF9fcywgX19tYXhsZW4sIF9fZm9ybWF0LCBfX3RtLAotKwkJCQkJX01fY19sb2NhbGVfdGltZXB1bmN0KTsKLSsjZWxzZQotKyAgICAgIGNoYXIqIF9fb2xkID0gc3RyZHVwKHNldGxvY2FsZShMQ19BTEwsIE5VTEwpKTsKLSsgICAgICBzZXRsb2NhbGUoTENfQUxMLCBfTV9uYW1lX3RpbWVwdW5jdCk7Ci0rICAgICAgY29uc3Qgc2l6ZV90IF9fbGVuID0gd2NzZnRpbWUoX19zLCBfX21heGxlbiwgX19mb3JtYXQsIF9fdG0pOwotKyAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9fb2xkKTsKLSsgICAgICBmcmVlKF9fb2xkKTsKLSsjZW5kaWYKLSsgICAgICAvLyBNYWtlIHN1cmUgX19zIGlzIG51bGwgdGVybWluYXRlZC4KLSsgICAgICBpZiAoX19sZW4gPT0gMCkKLSsJX19zWzBdID0gTCdcMCc7Ci0rICAgIH0KLSsKLSsgIHRlbXBsYXRlPD4KLSsgICAgdm9pZAotKyAgICBfX3RpbWVwdW5jdDx3Y2hhcl90Pjo6X01faW5pdGlhbGl6ZV90aW1lcHVuY3QoX19jX2xvY2FsZSBfX2Nsb2MpCi0rICAgIHsKLSsgICAgICBpZiAoIV9NX2RhdGEpCi0rCV9NX2RhdGEgPSBuZXcgX190aW1lcHVuY3RfY2FjaGU8d2NoYXJfdD47Ci0rCi0rI3dhcm5pbmcgd2lkZSB0aW1lIHN0dWZmCi0rLy8gICAgICAgaWYgKCFfX2Nsb2MpCi0rCXsKLSsJICAvLyAiQyIgbG9jYWxlCi0rCSAgX01fY19sb2NhbGVfdGltZXB1bmN0ID0gX1NfZ2V0X2NfbG9jYWxlKCk7Ci0rCi0rCSAgX01fZGF0YS0+X01fZGF0ZV9mb3JtYXQgPSBMIiVtLyVkLyV5IjsKLSsJICBfTV9kYXRhLT5fTV9kYXRlX2VyYV9mb3JtYXQgPSBMIiVtLyVkLyV5IjsKLSsJICBfTV9kYXRhLT5fTV90aW1lX2Zvcm1hdCA9IEwiJUg6JU06JVMiOwotKwkgIF9NX2RhdGEtPl9NX3RpbWVfZXJhX2Zvcm1hdCA9IEwiJUg6JU06JVMiOwotKwkgIF9NX2RhdGEtPl9NX2RhdGVfdGltZV9mb3JtYXQgPSBMIiI7Ci0rCSAgX01fZGF0YS0+X01fZGF0ZV90aW1lX2VyYV9mb3JtYXQgPSBMIiI7Ci0rCSAgX01fZGF0YS0+X01fYW0gPSBMIkFNIjsKLSsJICBfTV9kYXRhLT5fTV9wbSA9IEwiUE0iOwotKwkgIF9NX2RhdGEtPl9NX2FtX3BtX2Zvcm1hdCA9IEwiIjsKLSsKLSsJICAvLyBEYXkgbmFtZXMsIHN0YXJ0aW5nIHdpdGggIkMiJ3MgU3VuZGF5LgotKwkgIF9NX2RhdGEtPl9NX2RheTEgPSBMIlN1bmRheSI7Ci0rCSAgX01fZGF0YS0+X01fZGF5MiA9IEwiTW9uZGF5IjsKLSsJICBfTV9kYXRhLT5fTV9kYXkzID0gTCJUdWVzZGF5IjsKLSsJICBfTV9kYXRhLT5fTV9kYXk0ID0gTCJXZWRuZXNkYXkiOwotKwkgIF9NX2RhdGEtPl9NX2RheTUgPSBMIlRodXJzZGF5IjsKLSsJICBfTV9kYXRhLT5fTV9kYXk2ID0gTCJGcmlkYXkiOwotKwkgIF9NX2RhdGEtPl9NX2RheTcgPSBMIlNhdHVyZGF5IjsKLSsKLSsJICAvLyBBYmJyZXZpYXRlZCBkYXkgbmFtZXMsIHN0YXJ0aW5nIHdpdGggIkMiJ3MgU3VuLgotKwkgIF9NX2RhdGEtPl9NX2FkYXkxID0gTCJTdW4iOwotKwkgIF9NX2RhdGEtPl9NX2FkYXkyID0gTCJNb24iOwotKwkgIF9NX2RhdGEtPl9NX2FkYXkzID0gTCJUdWUiOwotKwkgIF9NX2RhdGEtPl9NX2FkYXk0ID0gTCJXZWQiOwotKwkgIF9NX2RhdGEtPl9NX2FkYXk1ID0gTCJUaHUiOwotKwkgIF9NX2RhdGEtPl9NX2FkYXk2ID0gTCJGcmkiOwotKwkgIF9NX2RhdGEtPl9NX2FkYXk3ID0gTCJTYXQiOwotKwotKwkgIC8vIE1vbnRoIG5hbWVzLCBzdGFydGluZyB3aXRoICJDIidzIEphbnVhcnkuCi0rCSAgX01fZGF0YS0+X01fbW9udGgwMSA9IEwiSmFudWFyeSI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwMiA9IEwiRmVicnVhcnkiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDMgPSBMIk1hcmNoIjsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA0ID0gTCJBcHJpbCI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwNSA9IEwiTWF5IjsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA2ID0gTCJKdW5lIjsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA3ID0gTCJKdWx5IjsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA4ID0gTCJBdWd1c3QiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDkgPSBMIlNlcHRlbWJlciI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgxMCA9IEwiT2N0b2JlciI7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgxMSA9IEwiTm92ZW1iZXIiOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMTIgPSBMIkRlY2VtYmVyIjsKLSsKLSsJICAvLyBBYmJyZXZpYXRlZCBtb250aCBuYW1lcywgc3RhcnRpbmcgd2l0aCAiQyIncyBKYW4uCi0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDEgPSBMIkphbiI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDIgPSBMIkZlYiI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDMgPSBMIk1hciI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDQgPSBMIkFwciI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDUgPSBMIk1heSI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDYgPSBMIkp1biI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDcgPSBMIkp1bCI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDggPSBMIkF1ZyI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDkgPSBMIlNlcCI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMTAgPSBMIk9jdCI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMTEgPSBMIk5vdiI7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMTIgPSBMIkRlYyI7Ci0rCX0KLSsjaWYgMAotKyAgICAgIGVsc2UKLSsJewotKwkgIF9NX2NfbG9jYWxlX3RpbWVwdW5jdCA9IF9TX2Nsb25lX2NfbG9jYWxlKF9fY2xvYyk7Ci0rCi0rCSAgdW5pb24geyBjaGFyICpfX3M7IHdjaGFyX3QgKl9fdzsgfSBfX3U7Ci0rCi0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0RfRk1ULCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RhdGVfZm9ybWF0ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XRVJBX0RfRk1ULCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RhdGVfZXJhX2Zvcm1hdCA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV1RfRk1ULCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX3RpbWVfZm9ybWF0ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XRVJBX1RfRk1ULCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX3RpbWVfZXJhX2Zvcm1hdCA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0RfVF9GTVQsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZGF0ZV90aW1lX2Zvcm1hdCA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0VSQV9EX1RfRk1ULCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RhdGVfdGltZV9lcmFfZm9ybWF0ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQU1fU1RSLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2FtID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XUE1fU1RSLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX3BtID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XVF9GTVRfQU1QTSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbV9wbV9mb3JtYXQgPSBfX3UuX193OwotKwotKwkgIC8vIERheSBuYW1lcywgc3RhcnRpbmcgd2l0aCAiQyIncyBTdW5kYXkuCi0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0RBWV8xLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RheTEgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dEQVlfMiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kYXkyID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XREFZXzMsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZGF5MyA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0RBWV80LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RheTQgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dEQVlfNSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9kYXk1ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XREFZXzYsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fZGF5NiA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0RBWV83LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2RheTcgPSBfX3UuX193OwotKwotKwkgIC8vIEFiYnJldmlhdGVkIGRheSBuYW1lcywgc3RhcnRpbmcgd2l0aCAiQyIncyBTdW4uCi0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCREFZXzEsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYWRheTEgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQkRBWV8yLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2FkYXkyID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQUJEQVlfMywgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hZGF5MyA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCREFZXzQsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYWRheTQgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQkRBWV81LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2FkYXk1ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQUJEQVlfNiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hZGF5NiA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCREFZXzcsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYWRheTcgPSBfX3UuX193OwotKwotKwkgIC8vIE1vbnRoIG5hbWVzLCBzdGFydGluZyB3aXRoICJDIidzIEphbnVhcnkuCi0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV01PTl8xLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDEgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dNT05fMiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9tb250aDAyID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XTU9OXzMsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwMyA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV01PTl80LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDQgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dNT05fNSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA1ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XTU9OXzYsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwNiA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV01PTl83LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMDcgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dNT05fOCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9tb250aDA4ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XTU9OXzksIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgwOSA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV01PTl8xMCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9tb250aDEwID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XTU9OXzExLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX21vbnRoMTEgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dNT05fMTIsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fbW9udGgxMiA9IF9fdS5fX3c7Ci0rCi0rCSAgLy8gQWJicmV2aWF0ZWQgbW9udGggbmFtZXMsIHN0YXJ0aW5nIHdpdGggIkMiJ3MgSmFuLgotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQk1PTl8xLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDAxID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQUJNT05fMiwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwMiA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCTU9OXzMsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDMgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQk1PTl80LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA0ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQUJNT05fNSwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwNSA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCTU9OXzYsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDYgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQk1PTl83LCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDA3ID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQUJNT05fOCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgwOCA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCTU9OXzksIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMDkgPSBfX3UuX193OwotKwkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX1dBQk1PTl8xMCwgX19jbG9jKTsKLSsJICBfTV9kYXRhLT5fTV9hbW9udGgxMCA9IF9fdS5fX3c7Ci0rCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfV0FCTU9OXzExLCBfX2Nsb2MpOwotKwkgIF9NX2RhdGEtPl9NX2Ftb250aDExID0gX191Ll9fdzsKLSsJICBfX3UuX19zID0gX19ubF9sYW5naW5mb19sKF9OTF9XQUJNT05fMTIsIF9fY2xvYyk7Ci0rCSAgX01fZGF0YS0+X01fYW1vbnRoMTIgPSBfX3UuX193OwotKwl9Ci0rI2VuZGlmIC8vIDAKLSsgICAgfQotKyNlbmRpZgotK30KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmggYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5iYThlODU4Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmgKLUBAIC0wLDAgKzEsNjggQEAKLSsvLyBzdGQ6OnRpbWVfZ2V0LCBzdGQ6OnRpbWVfcHV0IGltcGxlbWVudGF0aW9uLCBHTlUgdmVyc2lvbiAtKi0gQysrIC0qLQotKwotKy8vIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvLwotKy8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgSVNPIEMrKyBMaWJyYXJ5LiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUKLSsvLyBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUKLSsvLyB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotKy8vIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKy8vIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKy8vIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKy8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKy8vIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKLSsvLyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rLy8gU29mdHdhcmUgRm91bmRhdGlvbiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rLy8gVVNBLgotKwotKy8vIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHlvdSBtYXkgdXNlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgZnJlZSBzb2Z0d2FyZQotKy8vIGxpYnJhcnkgd2l0aG91dCByZXN0cmljdGlvbi4gIFNwZWNpZmljYWxseSwgaWYgb3RoZXIgZmlsZXMgaW5zdGFudGlhdGUKLSsvLyB0ZW1wbGF0ZXMgb3IgdXNlIG1hY3JvcyBvciBpbmxpbmUgZnVuY3Rpb25zIGZyb20gdGhpcyBmaWxlLCBvciB5b3UgY29tcGlsZQotKy8vIHRoaXMgZmlsZSBhbmQgbGluayBpdCB3aXRoIG90aGVyIGZpbGVzIHRvIHByb2R1Y2UgYW4gZXhlY3V0YWJsZSwgdGhpcwotKy8vIGZpbGUgZG9lcyBub3QgYnkgaXRzZWxmIGNhdXNlIHRoZSByZXN1bHRpbmcgZXhlY3V0YWJsZSB0byBiZSBjb3ZlcmVkIGJ5Ci0rLy8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhpcyBleGNlcHRpb24gZG9lcyBub3QgaG93ZXZlcgotKy8vIGludmFsaWRhdGUgYW55IG90aGVyIHJlYXNvbnMgd2h5IHRoZSBleGVjdXRhYmxlIGZpbGUgbWlnaHQgYmUgY292ZXJlZCBieQotKy8vIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KLSsKLSsvLwotKy8vIElTTyBDKysgMTQ4ODI6IDIyLjIuNS4xLjIgLSB0aW1lX2dldCBmdW5jdGlvbnMKLSsvLyBJU08gQysrIDE0ODgyOiAyMi4yLjUuMy4yIC0gdGltZV9wdXQgZnVuY3Rpb25zCi0rLy8KLSsKLSsvLyBXcml0dGVuIGJ5IEJlbmphbWluIEtvc25payA8YmtvekByZWRoYXQuY29tPgotKwotKyAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgotKyAgICBfX3RpbWVwdW5jdDxfQ2hhclQ+OjpfX3RpbWVwdW5jdChzaXplX3QgX19yZWZzKQotKyAgICA6IGZhY2V0KF9fcmVmcyksIF9NX2RhdGEoTlVMTCksIF9NX2NfbG9jYWxlX3RpbWVwdW5jdChOVUxMKSwKLSsgICAgX01fbmFtZV90aW1lcHVuY3QoX1NfZ2V0X2NfbmFtZSgpKQotKyAgICB7IF9NX2luaXRpYWxpemVfdGltZXB1bmN0KCk7IH0KLSsKLSsgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KLSsgICAgX190aW1lcHVuY3Q8X0NoYXJUPjo6X190aW1lcHVuY3QoX19jYWNoZV90eXBlKiBfX2NhY2hlLCBzaXplX3QgX19yZWZzKQotKyAgICA6IGZhY2V0KF9fcmVmcyksIF9NX2RhdGEoX19jYWNoZSksIF9NX2NfbG9jYWxlX3RpbWVwdW5jdChOVUxMKSwKLSsgICAgX01fbmFtZV90aW1lcHVuY3QoX1NfZ2V0X2NfbmFtZSgpKQotKyAgICB7IF9NX2luaXRpYWxpemVfdGltZXB1bmN0KCk7IH0KLSsKLSsgIHRlbXBsYXRlPHR5cGVuYW1lIF9DaGFyVD4KLSsgICAgX190aW1lcHVuY3Q8X0NoYXJUPjo6X190aW1lcHVuY3QoX19jX2xvY2FsZSBfX2Nsb2MsIGNvbnN0IGNoYXIqIF9fcywKLSsJCQkJICAgICBzaXplX3QgX19yZWZzKQotKyAgICA6IGZhY2V0KF9fcmVmcyksIF9NX2RhdGEoTlVMTCksIF9NX2NfbG9jYWxlX3RpbWVwdW5jdChOVUxMKSwKLSsgICAgX01fbmFtZV90aW1lcHVuY3QoX19zKQotKyAgICB7Ci0rICAgICAgY2hhciogX190bXAgPSBuZXcgY2hhcltzdGQ6OnN0cmxlbihfX3MpICsgMV07Ci0rICAgICAgc3RkOjpzdHJjcHkoX190bXAsIF9fcyk7Ci0rICAgICAgX01fbmFtZV90aW1lcHVuY3QgPSBfX3RtcDsKLSsgICAgICBfTV9pbml0aWFsaXplX3RpbWVwdW5jdChfX2Nsb2MpOwotKyAgICB9Ci0rCi0rICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+Ci0rICAgIF9fdGltZXB1bmN0PF9DaGFyVD46On5fX3RpbWVwdW5jdCgpCi0rICAgIHsKLSsgICAgICBpZiAoX01fbmFtZV90aW1lcHVuY3QgIT0gX1NfZ2V0X2NfbmFtZSgpKQotKwlkZWxldGUgW10gX01fbmFtZV90aW1lcHVuY3Q7Ci0rICAgICAgZGVsZXRlIF9NX2RhdGE7Ci0rICAgICAgX1NfZGVzdHJveV9jX2xvY2FsZShfTV9jX2xvY2FsZV90aW1lcHVuY3QpOwotKyAgICB9Ci1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZ3VyZSBiL2xpYnN0ZGMrKy12My9jb25maWd1cmUKLWluZGV4IDQxNzk3YTkuLjhhNTQ4MWMgMTAwNzU1Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlndXJlCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlndXJlCi1AQCAtMTU4MzAsNiArMTU4MzAsOSBAQCBmaQotICAgIyBEZWZhdWx0IHRvICJnZW5lcmljIi4KLSAgIGlmIHRlc3QgJGVuYWJsZV9jbG9jYWxlX2ZsYWcgPSBhdXRvOyB0aGVuCi0gICAgIGNhc2UgJHt0YXJnZXRfb3N9IGluCi0rICAgICAgKi11Y2xpYmMqKQotKyAgICAgICAgZW5hYmxlX2Nsb2NhbGVfZmxhZz11Y2xpYmMKLSsgICAgICAgIDs7Ci0gICAgICAgbGludXgqIHwgZ251KiB8IGtmcmVlYnNkKi1nbnUgfCBrbmV0YnNkKi1nbnUpCi0gCWVuYWJsZV9jbG9jYWxlX2ZsYWc9Z251Ci0gCTs7Ci1AQCAtMTYxMDgsNiArMTYxMTEsNzggQEAgJGFzX2VjaG8gIm5ld2xpYiIgPiY2OyB9Ci0gICAgICAgQ1RJTUVfQ0M9Y29uZmlnL2xvY2FsZS9nZW5lcmljL3RpbWVfbWVtYmVycy5jYwotICAgICAgIENMT0NBTEVfSU5URVJOQUxfSD1jb25maWcvbG9jYWxlL2dlbmVyaWMvYysrbG9jYWxlX2ludGVybmFsLmgKLSAgICAgICA7OwotKyAgICB1Y2xpYmMpCi0rICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHVjbGliYyIgPiY1Ci0rJGFzX2VjaG8gInVjbGliYyIgPiY2OyB9Ci0rCi0rICAgICAgIyBEZWNsYXJlIGludGVudGlvbiB0byB1c2UgZ2V0dGV4dCwgYW5kIGFkZCBzdXBwb3J0IGZvciBzcGVjaWZpYwotKyAgICAgICMgbGFuZ3VhZ2VzLgotKyAgICAgICMgRm9yIHNvbWUgcmVhc29uLCBBTExfTElOR1VBUyBoYXMgdG8gYmUgYmVmb3JlIEFNLUdOVS1HRVRURVhUCi0rICAgICAgQUxMX0xJTkdVQVM9ImRlIGZyIgotKwotKyAgICAgICMgRG9uJ3QgY2FsbCBBTS1HTlUtR0VUVEVYVCBoZXJlLiBJbnN0ZWFkLCBhc3N1bWUgZ2xpYmMuCi0rICAgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJtc2dmbXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSBtc2dmbXQ7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHthY19jdl9wcm9nX2NoZWNrX21zZ2ZtdCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRjaGVja19tc2dmbXQiOyB0aGVuCi0rICBhY19jdl9wcm9nX2NoZWNrX21zZ2ZtdD0iJGNoZWNrX21zZ2ZtdCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotKyAgICBhY19jdl9wcm9nX2NoZWNrX21zZ2ZtdD0ieWVzIgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotKyAgdGVzdCAteiAiJGFjX2N2X3Byb2dfY2hlY2tfbXNnZm10IiAmJiBhY19jdl9wcm9nX2NoZWNrX21zZ2ZtdD0ibm8iCi0rZmkKLStmaQotK2NoZWNrX21zZ2ZtdD0kYWNfY3ZfcHJvZ19jaGVja19tc2dmbXQKLStpZiB0ZXN0IC1uICIkY2hlY2tfbXNnZm10IjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRjaGVja19tc2dmbXQiID4mNQotKyRhc19lY2hvICIkY2hlY2tfbXNnZm10IiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsKLSsgICAgICBpZiB0ZXN0IHgiJGNoZWNrX21zZ2ZtdCIgPSB4InllcyIgJiYgdGVzdCB4IiRlbmFibGVfbmxzIiA9IHgieWVzIjsgdGhlbgotKyAgICAgICAgVVNFX05MUz15ZXMKLSsgICAgICBmaQotKyAgICAgICMgRXhwb3J0IHRoZSBidWlsZCBvYmplY3RzLgotKyAgICAgIGZvciBsaW5nIGluICRBTExfTElOR1VBUzsgZG8gXAotKyAgICAgICAgZ2xpYmN4eF9NT0ZJTEVTPSIkZ2xpYmN4eF9NT0ZJTEVTICRsaW5nLm1vIjsgXAotKyAgICAgICAgZ2xpYmN4eF9QT0ZJTEVTPSIkZ2xpYmN4eF9QT0ZJTEVTICRsaW5nLnBvIjsgXAotKyAgICAgIGRvbmUKLSsKLSsKLSsKLSsgICAgICBDTE9DQUxFX0g9Y29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaAotKyAgICAgIENMT0NBTEVfQ0M9Y29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuY2MKLSsgICAgICBDQ09ERUNWVF9DQz1jb25maWcvbG9jYWxlL3VjbGliYy9jb2RlY3Z0X21lbWJlcnMuY2MKLSsgICAgICBDQ09MTEFURV9DQz1jb25maWcvbG9jYWxlL3VjbGliYy9jb2xsYXRlX21lbWJlcnMuY2MKLSsgICAgICBDQ1RZUEVfQ0M9Y29uZmlnL2xvY2FsZS91Y2xpYmMvY3R5cGVfbWVtYmVycy5jYwotKyAgICAgIENNRVNTQUdFU19IPWNvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaAotKyAgICAgIENNRVNTQUdFU19DQz1jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmNjCi0rICAgICAgQ01PTkVZX0NDPWNvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MKLSsgICAgICBDTlVNRVJJQ19DQz1jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MKLSsgICAgICBDVElNRV9IPWNvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5oCi0rICAgICAgQ1RJTUVfQ0M9Y29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmNjCi0rICAgICAgQ0xPQ0FMRV9JTlRFUk5BTF9IPWNvbmZpZy9sb2NhbGUvdWNsaWJjL2MrK2xvY2FsZV9pbnRlcm5hbC5oCi0rICAgICAgOzsKLSAgIGVzYWMKLSAKLSAgICMgVGhpcyBpcyB3aGVyZSB0aGUgdGVzdHN1aXRlIGxvb2tzIGZvciBsb2NhbGUgY2F0YWxvZ3MsIHVzaW5nIHRoZQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2NfY29tcGF0aWJpbGl0eS93Y2hhci5oIGIvbGlic3RkYysrLXYzL2luY2x1ZGUvY19jb21wYXRpYmlsaXR5L3djaGFyLmgKLWluZGV4IDU1YTBiNTIuLjdkOGJiMTUgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvaW5jbHVkZS9jX2NvbXBhdGliaWxpdHkvd2NoYXIuaAotKysrIGIvbGlic3RkYysrLXYzL2luY2x1ZGUvY19jb21wYXRpYmlsaXR5L3djaGFyLmgKLUBAIC0xMDEsNyArMTAxLDkgQEAgdXNpbmcgc3RkOjp3bWVtY21wOwotIHVzaW5nIHN0ZDo6d21lbWNweTsKLSB1c2luZyBzdGQ6OndtZW1tb3ZlOwotIHVzaW5nIHN0ZDo6d21lbXNldDsKLSsjaWYgX0dMSUJDWFhfSEFWRV9XQ1NGVElNRQotIHVzaW5nIHN0ZDo6d2NzZnRpbWU7Ci0rI2VuZGlmCi0gCi0gI2lmIF9HTElCQ1hYX1VTRV9DOTlfV0NIQVIKLSB1c2luZyBzdGQ6Ondjc3RvbGQ7Ci1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2luY2x1ZGUvY19zdGQvY3djaGFyIGIvbGlic3RkYysrLXYzL2luY2x1ZGUvY19zdGQvY3djaGFyCi1pbmRleCBkYzRjZWYwMi4uMjU2ZDEyNiAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2Nfc3RkL2N3Y2hhcgotKysrIGIvbGlic3RkYysrLXYzL2luY2x1ZGUvY19zdGQvY3djaGFyCi1AQCAtMTc1LDcgKzE3NSw5IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJTSU9OCi0gICB1c2luZyA6Ondjc2NvbGw7Ci0gICB1c2luZyA6Ondjc2NweTsKLSAgIHVzaW5nIDo6d2NzY3NwbjsKLSsjaWYgX0dMSUJDWFhfSEFWRV9XQ1NGVElNRQotICAgdXNpbmcgOjp3Y3NmdGltZTsKLSsjZW5kaWYKLSAgIHVzaW5nIDo6d2NzbGVuOwotICAgdXNpbmcgOjp3Y3NuY2F0OwotICAgdXNpbmcgOjp3Y3NuY21wOwotLS0gCi0yLjguMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4zLzAwMDUtdWNsaWJjLWxvY2FsZS1ub19feC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjMvMDAwNS11Y2xpYmMtbG9jYWxlLW5vX194LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMjc1MDE2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjMvMDAwNS11Y2xpYmMtbG9jYWxlLW5vX194LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjU3ICswLDAgQEAKLUZyb20gYzAxYzE0ZThlOWJlMzgyZWNkNDEyMWVlNzBmNTAwM2I0Y2IwZjkwNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA4OjQyOjM2ICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDUvNDZdIHVjbGliYy1sb2NhbGUtbm9fX3gKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSAuLi4vY29uZmlnL2xvY2FsZS91Y2xpYmMvYysrbG9jYWxlX2ludGVybmFsLmggICAgICB8IDQ1ICsrKysrKysrKysrKysrKysrKysrKysKLSBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuY2MgICAgICB8IDE0IC0tLS0tLS0KLSBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaCAgICAgICB8ICAxICsKLSAuLi4vY29uZmlnL2xvY2FsZS91Y2xpYmMvY29sbGF0ZV9tZW1iZXJzLmNjICAgICAgICB8ICA3IC0tLS0KLSBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY3R5cGVfbWVtYmVycy5jYyB8ICA3IC0tLS0KLSAuLi4vY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5jYyAgICAgICB8ICA3ICstLS0KLSAuLi4vY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5oICAgICAgICB8IDE4ICsrKystLS0tLQotIC4uLi9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjICAgICAgIHwgIDQgLS0KLSAuLi4vY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjICAgICAgICB8ICAzIC0tCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYyAgfCAgMyAtLQotIDEwIGZpbGVzIGNoYW5nZWQsIDU1IGluc2VydGlvbnMoKyksIDU0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2MrK2xvY2FsZV9pbnRlcm5hbC5oIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2MrK2xvY2FsZV9pbnRlcm5hbC5oCi1pbmRleCAyYWUzZTRhLi5lNzRmZGRmIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2MrK2xvY2FsZV9pbnRlcm5hbC5oCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvYysrbG9jYWxlX2ludGVybmFsLmgKLUBAIC02MCw0ICs2MCw0OSBAQCBleHRlcm4gIkMiIF9fdHlwZW9mKHdjc3hmcm1fbCkgX193Y3N4ZnJtX2w7Ci0gZXh0ZXJuICJDIiBfX3R5cGVvZih3Y3R5cGVfbCkgX193Y3R5cGVfbDsKLSAjZW5kaWYKLSAKLSsjIGRlZmluZSBfX25sX2xhbmdpbmZvX2wgbmxfbGFuZ2luZm9fbAotKyMgZGVmaW5lIF9fc3RyY29sbF9sIHN0cmNvbGxfbAotKyMgZGVmaW5lIF9fc3RyZnRpbWVfbCBzdHJmdGltZV9sCi0rIyBkZWZpbmUgX19zdHJ0b2RfbCBzdHJ0b2RfbAotKyMgZGVmaW5lIF9fc3RydG9mX2wgc3RydG9mX2wKLSsjIGRlZmluZSBfX3N0cnRvbGRfbCBzdHJ0b2xkX2wKLSsjIGRlZmluZSBfX3N0cnhmcm1fbCBzdHJ4ZnJtX2wKLSsjIGRlZmluZSBfX25ld2xvY2FsZSBuZXdsb2NhbGUKLSsjIGRlZmluZSBfX2ZyZWVsb2NhbGUgZnJlZWxvY2FsZQotKyMgZGVmaW5lIF9fZHVwbG9jYWxlIGR1cGxvY2FsZQotKyMgZGVmaW5lIF9fdXNlbG9jYWxlIHVzZWxvY2FsZQotKwotKyMgaWZkZWYgX0dMSUJDWFhfVVNFX1dDSEFSX1QKLSsjICBkZWZpbmUgX19pc3djdHlwZV9sIGlzd2N0eXBlX2wKLSsjICBkZWZpbmUgX190b3dsb3dlcl9sIHRvd2xvd2VyX2wKLSsjICBkZWZpbmUgX190b3d1cHBlcl9sIHRvd3VwcGVyX2wKLSsjICBkZWZpbmUgX193Y3Njb2xsX2wgd2NzY29sbF9sCi0rIyAgZGVmaW5lIF9fd2NzZnRpbWVfbCB3Y3NmdGltZV9sCi0rIyAgZGVmaW5lIF9fd2NzeGZybV9sIHdjc3hmcm1fbAotKyMgIGRlZmluZSBfX3djdHlwZV9sIHdjdHlwZV9sCi0rIyBlbmRpZgotKwotKyNlbHNlCi0rIyBkZWZpbmUgX19ubF9sYW5naW5mb19sKE4sIEwpICAgICAgIG5sX2xhbmdpbmZvKChOKSkKLSsjIGRlZmluZSBfX3N0cmNvbGxfbChTMSwgUzIsIEwpICAgICAgc3RyY29sbCgoUzEpLCAoUzIpKQotKyMgZGVmaW5lIF9fc3RydG9kX2woUywgRSwgTCkgICAgICAgICBzdHJ0b2QoKFMpLCAoRSkpCi0rIyBkZWZpbmUgX19zdHJ0b2ZfbChTLCBFLCBMKSAgICAgICAgIHN0cnRvZigoUyksIChFKSkKLSsjIGRlZmluZSBfX3N0cnRvbGRfbChTLCBFLCBMKSAgICAgICAgc3RydG9sZCgoUyksIChFKSkKLSsjIGRlZmluZSBfX3N0cnhmcm1fbChTMSwgUzIsIE4sIEwpICAgc3RyeGZybSgoUzEpLCAoUzIpLCAoTikpCi0rIyB3YXJuaW5nIHNob3VsZCBkdW1teSBfX25ld2xvY2FsZSBjaGVjayBmb3IgQ3xQT1NJWCA/Ci0rIyBkZWZpbmUgX19uZXdsb2NhbGUoYSwgYiwgYykgICAgICAgIE5VTEwKLSsjIGRlZmluZSBfX2ZyZWVsb2NhbGUoYSkgICAgICAgICAgICAgKCh2b2lkKTApCi0rIyBkZWZpbmUgX19kdXBsb2NhbGUoYSkgICAgICAgICAgICAgIF9fY19sb2NhbGUoKQotKy8vIyBkZWZpbmUgX191c2Vsb2NhbGUgPwotKy8vCi0rIyBpZmRlZiBfR0xJQkNYWF9VU0VfV0NIQVJfVAotKyMgIGRlZmluZSBfX2lzd2N0eXBlX2woQywgTSwgTCkgICAgICAgaXN3Y3R5cGUoKEMpLCAoTSkpCi0rIyAgZGVmaW5lIF9fdG93bG93ZXJfbChDLCBMKSAgICAgICAgICB0b3dsb3dlcigoQykpCi0rIyAgZGVmaW5lIF9fdG93dXBwZXJfbChDLCBMKSAgICAgICAgICB0b3d1cHBlcigoQykpCi0rIyAgZGVmaW5lIF9fd2NzY29sbF9sKFMxLCBTMiwgTCkgICAgICB3Y3Njb2xsKChTMSksIChTMikpCi0rLy8jICBkZWZpbmUgX193Y3NmdGltZV9sKFMsIE0sIEYsIFQsIEwpICB3Y3NmdGltZSgoUyksIChNKSwgKEYpLCAoVCkpCi0rIyAgZGVmaW5lIF9fd2NzeGZybV9sKFMxLCBTMiwgTiwgTCkgICB3Y3N4ZnJtKChTMSksIChTMiksIChOKSkKLSsjICBkZWZpbmUgX193Y3R5cGVfbChTLCBMKSAgICAgICAgICAgIHdjdHlwZSgoUykpCi0rIyBlbmRpZgotKwotICNlbmRpZiAvLyBHTElCQyAyLjMgYW5kIGxhdGVyCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjCi1pbmRleCA1MDgxZGMxLi4yMTQzMGQwIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuY2MKLUBAIC0zOSwyMCArMzksNiBAQAotICNpbmNsdWRlIDxsYW5naW5mby5oPgotICNpbmNsdWRlIDxiaXRzL2MrK2xvY2FsZV9pbnRlcm5hbC5oPgotIAotLSNpZm5kZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotLSNkZWZpbmUgX19zdHJ0b2xfbChTLCBFLCBCLCBMKSAgICAgIHN0cnRvbCgoUyksIChFKSwgKEIpKQotLSNkZWZpbmUgX19zdHJ0b3VsX2woUywgRSwgQiwgTCkgICAgIHN0cnRvdWwoKFMpLCAoRSksIChCKSkKLS0jZGVmaW5lIF9fc3RydG9sbF9sKFMsIEUsIEIsIEwpICAgICBzdHJ0b2xsKChTKSwgKEUpLCAoQikpCi0tI2RlZmluZSBfX3N0cnRvdWxsX2woUywgRSwgQiwgTCkgICAgc3RydG91bGwoKFMpLCAoRSksIChCKSkKLS0jZGVmaW5lIF9fc3RydG9mX2woUywgRSwgTCkgICAgICAgICBzdHJ0b2YoKFMpLCAoRSkpCi0tI2RlZmluZSBfX3N0cnRvZF9sKFMsIEUsIEwpICAgICAgICAgc3RydG9kKChTKSwgKEUpKQotLSNkZWZpbmUgX19zdHJ0b2xkX2woUywgRSwgTCkgICAgICAgIHN0cnRvbGQoKFMpLCAoRSkpCi0tI3dhcm5pbmcgc2hvdWxkIGR1bW15IF9fbmV3bG9jYWxlIGNoZWNrIGZvciBDfFBPU0lYID8KLS0jZGVmaW5lIF9fbmV3bG9jYWxlKGEsIGIsIGMpICAgICAgICBOVUxMCi0tI2RlZmluZSBfX2ZyZWVsb2NhbGUoYSkgICAgICAgICAgICAgKCh2b2lkKTApCi0tI2RlZmluZSBfX2R1cGxvY2FsZShhKSAgICAgICAgICAgICAgX19jX2xvY2FsZSgpCi0tI2VuZGlmCi0tCi0gbmFtZXNwYWNlIHN0ZAotIHsKLSAgIHRlbXBsYXRlPD4KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaCBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5oCi1pbmRleCBkYTA3YzFmLi40YmNhNWYxIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmgKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5oCi1AQCAtNjgsNiArNjgsNyBAQCBuYW1lc3BhY2UgX19nbnVfY3h4Ci0gewotICAgZXh0ZXJuICJDIiBfX3R5cGVvZih1c2Vsb2NhbGUpIF9fdXNlbG9jYWxlOwotIH0KLSsjZGVmaW5lIF9fdXNlbG9jYWxlIHVzZWxvY2FsZQotICNlbmRpZgotIAotIG5hbWVzcGFjZSBzdGQKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY29sbGF0ZV9tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NvbGxhdGVfbWVtYmVycy5jYwotaW5kZXggYzI2NjRhNy4uZWM1YzMyOSAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jb2xsYXRlX21lbWJlcnMuY2MKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jb2xsYXRlX21lbWJlcnMuY2MKLUBAIC0zNiwxMyArMzYsNiBAQAotICNpbmNsdWRlIDxsb2NhbGU+Ci0gI2luY2x1ZGUgPGJpdHMvYysrbG9jYWxlX2ludGVybmFsLmg+Ci0gCi0tI2lmbmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0tI2RlZmluZSBfX3N0cmNvbGxfbChTMSwgUzIsIEwpICAgICAgc3RyY29sbCgoUzEpLCAoUzIpKQotLSNkZWZpbmUgX19zdHJ4ZnJtX2woUzEsIFMyLCBOLCBMKSAgIHN0cnhmcm0oKFMxKSwgKFMyKSwgKE4pKQotLSNkZWZpbmUgX193Y3Njb2xsX2woUzEsIFMyLCBMKSAgICAgIHdjc2NvbGwoKFMxKSwgKFMyKSkKLS0jZGVmaW5lIF9fd2NzeGZybV9sKFMxLCBTMiwgTiwgTCkgICB3Y3N4ZnJtKChTMSksIChTMiksIChOKSkKLS0jZW5kaWYKLS0KLSBuYW1lc3BhY2Ugc3RkCi0gewotICAgLy8gVGhlc2UgYXJlIGJhc2ljYWxseSBleHRlbnNpb25zIHRvIGNoYXJfdHJhaXRzLCBhbmQgcGVyaGFwcyBzaG91bGQKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY3R5cGVfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jdHlwZV9tZW1iZXJzLmNjCi1pbmRleCA3Mjk0ZTNhLi43YjEyODYxIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2N0eXBlX21lbWJlcnMuY2MKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jdHlwZV9tZW1iZXJzLmNjCi1AQCAtMzgsMTMgKzM4LDYgQEAKLSAjdW5kZWYgX0xJQkMKLSAjaW5jbHVkZSA8Yml0cy9jKytsb2NhbGVfaW50ZXJuYWwuaD4KLSAKLS0jaWZuZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLS0jZGVmaW5lIF9fd2N0eXBlX2woUywgTCkgICAgICAgICAgIHdjdHlwZSgoUykpCi0tI2RlZmluZSBfX3Rvd3VwcGVyX2woQywgTCkgICAgICAgICB0b3d1cHBlcigoQykpCi0tI2RlZmluZSBfX3Rvd2xvd2VyX2woQywgTCkgICAgICAgICB0b3dsb3dlcigoQykpCi0tI2RlZmluZSBfX2lzd2N0eXBlX2woQywgTSwgTCkgICAgICBpc3djdHlwZSgoQyksIChNKSkKLS0jZW5kaWYKLS0KLSBuYW1lc3BhY2Ugc3RkCi0gewotICAgLy8gTkI6IFRoZSBvdGhlciBjdHlwZTxjaGFyPiBzcGVjaWFsaXphdGlvbnMgYXJlIGluIHNyYy9sb2NhbGUuY2MgYW5kCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5jYwotaW5kZXggMTM1OTRkOS4uZDc2OTNiNCAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmNjCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5jYwotQEAgLTM5LDEzICszOSwxMCBAQAotICNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotICN3YXJuaW5nIGZpeCBnZXR0ZXh0IHN0dWZmCi0gI2VuZGlmCi0tI2lmZGVmIF9fVUNMSUJDX0hBU19HRVRURVhUX0FXQVJFTkVTU19fCi0tZXh0ZXJuICJDIiBjaGFyICpfX2RjZ2V0dGV4dChjb25zdCBjaGFyICpkb21haW5uYW1lLAotLQkJCSAgICAgY29uc3QgY2hhciAqbXNnaWQsIGludCBjYXRlZ29yeSk7Ci0gI3VuZGVmIGdldHRleHQKLS0jZGVmaW5lIGdldHRleHQobXNnaWQpIF9fZGNnZXR0ZXh0KE5VTEwsIG1zZ2lkLCBMQ19NRVNTQUdFUykKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX0dFVFRFWFRfQVdBUkVORVNTX18KLSsjZGVmaW5lIGdldHRleHQobXNnaWQpIGRjZ2V0dGV4dChOVUxMLCBtc2dpZCwgTENfTUVTU0FHRVMpCi0gI2Vsc2UKLS0jdW5kZWYgZ2V0dGV4dAotICNkZWZpbmUgZ2V0dGV4dChtc2dpZCkgKG1zZ2lkKQotICNlbmRpZgotIAotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmggYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5oCi1pbmRleCAxNDI0MDc4Li5kODlkYTMzIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaAotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaAotQEAgLTM2LDE1ICszNiwxMSBAQAotICNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotICN3YXJuaW5nIGZpeCBwcm90b3R5cGVzIGZvciAqdGV4dGRvbWFpbiBmdW5jcwotICNlbmRpZgotLSNpZmRlZiBfX1VDTElCQ19IQVNfR0VUVEVYVF9BV0FSRU5FU1NfXwotLWV4dGVybiAiQyIgY2hhciAqX190ZXh0ZG9tYWluKGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUpOwotLWV4dGVybiAiQyIgY2hhciAqX19iaW5kdGV4dGRvbWFpbihjb25zdCBjaGFyICpkb21haW5uYW1lLAotLQkJCQkgIGNvbnN0IGNoYXIgKmRpcm5hbWUpOwotLSNlbHNlCi0tI3VuZGVmIF9fdGV4dGRvbWFpbgotLSN1bmRlZiBfX2JpbmR0ZXh0ZG9tYWluCi0tI2RlZmluZSBfX3RleHRkb21haW4oRCkgICAgICAgICAgICgodm9pZCkwKQotLSNkZWZpbmUgX19iaW5kdGV4dGRvbWFpbihELFApICAgICAoKHZvaWQpMCkKLSsjaWZuZGVmIF9fVUNMSUJDX0hBU19HRVRURVhUX0FXQVJFTkVTU19fCi0rI3VuZGVmIHRleHRkb21haW4KLSsjdW5kZWYgYmluZHRleHRkb21haW4KLSsjZGVmaW5lIHRleHRkb21haW4oRCkgICAgICAgICAgICgodm9pZCkwKQotKyNkZWZpbmUgYmluZHRleHRkb21haW4oRCxQKSAgICAgKCh2b2lkKTApCi0gI2VuZGlmCi0gCi0gICAvLyBOb24tdmlydHVhbCBtZW1iZXIgZnVuY3Rpb25zLgotQEAgLTcwLDcgKzY2LDcgQEAgZXh0ZXJuICJDIiBjaGFyICpfX2JpbmR0ZXh0ZG9tYWluKGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUsCi0gICAgIG1lc3NhZ2VzPF9DaGFyVD46Om9wZW4oY29uc3QgYmFzaWNfc3RyaW5nPGNoYXI+JiBfX3MsIGNvbnN0IGxvY2FsZSYgX19sb2MsCi0gCQkJICAgY29uc3QgY2hhciogX19kaXIpIGNvbnN0Ci0gICAgIHsKLS0gICAgICBfX2JpbmR0ZXh0ZG9tYWluKF9fcy5jX3N0cigpLCBfX2Rpcik7Ci0rICAgICAgYmluZHRleHRkb21haW4oX19zLmNfc3RyKCksIF9fZGlyKTsKLSAgICAgICByZXR1cm4gdGhpcy0+ZG9fb3BlbihfX3MsIF9fbG9jKTsKLSAgICAgfQotIAotQEAgLTkwLDcgKzg2LDcgQEAgZXh0ZXJuICJDIiBjaGFyICpfX2JpbmR0ZXh0ZG9tYWluKGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUsCi0gICAgIHsKLSAgICAgICAvLyBObyBlcnJvciBjaGVja2luZyBpcyBkb25lLCBhc3N1bWUgdGhlIGNhdGFsb2cgZXhpc3RzIGFuZCBjYW4KLSAgICAgICAvLyBiZSB1c2VkLgotLSAgICAgIF9fdGV4dGRvbWFpbihfX3MuY19zdHIoKSk7Ci0rICAgICAgdGV4dGRvbWFpbihfX3MuY19zdHIoKSk7Ci0gICAgICAgcmV0dXJuIDA7Ci0gICAgIH0KLSAKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjCi1pbmRleCBhYTUyNzMxLi4yZTZmODBhIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjCi1AQCAtNDMsMTAgKzQzLDYgQEAKLSAjd2FybmluZyB0YWlsb3IgZm9yIHN0dWIgbG9jYWxlIHN1cHBvcnQKLSAjZW5kaWYKLSAKLS0jaWZuZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLS0jZGVmaW5lIF9fbmxfbGFuZ2luZm9fbChOLCBMKSAgICAgICAgIG5sX2xhbmdpbmZvKChOKSkKLS0jZW5kaWYKLS0KLSBuYW1lc3BhY2Ugc3RkCi0gewotICAgLy8gQ29uc3RydWN0IGFuZCByZXR1cm4gdmFsaWQgcGF0dGVybiBjb25zaXN0aW5nIG9mIHNvbWUgY29tYmluYXRpb24gb2Y6Ci1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MKLWluZGV4IDg4M2VjMWEuLjJjNzA2NDIgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjCi1AQCAtNDEsOSArNDEsNiBAQAotICNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotICN3YXJuaW5nIHRhaWxvciBmb3Igc3R1YiBsb2NhbGUgc3VwcG9ydAotICNlbmRpZgotLSNpZm5kZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotLSNkZWZpbmUgX19ubF9sYW5naW5mb19sKE4sIEwpICAgICAgICAgbmxfbGFuZ2luZm8oKE4pKQotLSNlbmRpZgotIAotIG5hbWVzcGFjZSBzdGQKLSB7Ci1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuY2MKLWluZGV4IGUwNzA3ZDcuLmQ4NDhlZDUgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmNjCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmNjCi1AQCAtNDAsOSArNDAsNiBAQAotICNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotICN3YXJuaW5nIHRhaWxvciBmb3Igc3R1YiBsb2NhbGUgc3VwcG9ydAotICNlbmRpZgotLSNpZm5kZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotLSNkZWZpbmUgX19ubF9sYW5naW5mb19sKE4sIEwpICAgICAgICAgbmxfbGFuZ2luZm8oKE4pKQotLSNlbmRpZgotIAotIG5hbWVzcGFjZSBzdGQKLSB7Ci0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjMvMDAwNi11Y2xpYmMtbG9jYWxlLXdjaGFyX2ZpeC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjMvMDAwNi11Y2xpYmMtbG9jYWxlLXdjaGFyX2ZpeC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQ1YTQ4Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4zLzAwMDYtdWNsaWJjLWxvY2FsZS13Y2hhcl9maXgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi1Gcm9tIGU3YTQ3NjBmYjQwMDA4Y2FlMzNlNmZjN2RjNGNmZWY2YzJmZDVmOTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwODo0NTo1NyArMDQwMAotU3ViamVjdDogW1BBVENIIDA2LzQ2XSB1Y2xpYmMtbG9jYWxlLXdjaGFyX2ZpeAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjIHwgIDQgKystLQotIGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MgIHwgMTMgKysrKysrKysrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MKLWluZGV4IDJlNmY4MGEuLjMxZWJiOWYgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYwotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MKLUBAIC00MDEsNyArNDAxLDcgQEAgbmFtZXNwYWNlIHN0ZAotICMgaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotIAkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSBfX2Nsb2MtPmRlY2ltYWxfcG9pbnRfd2M7Ci0gCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9IF9fY2xvYy0+dGhvdXNhbmRzX3NlcF93YzsKLS0jIGVsc2UKLSsjIGVsaWYgZGVmaW5lZCBfX1VDTElCQ19IQVNfTE9DQUxFX18KLSAJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gX19nbG9iYWxfbG9jYWxlLT5kZWNpbWFsX3BvaW50X3djOwotIAkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSBfX2dsb2JhbF9sb2NhbGUtPnRob3VzYW5kc19zZXBfd2M7Ci0gIyBlbmRpZgotQEAgLTU1Niw3ICs1NTYsNyBAQCBuYW1lc3BhY2Ugc3RkCi0gIyBpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0gCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IF9fY2xvYy0+ZGVjaW1hbF9wb2ludF93YzsKLSAJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gX19jbG9jLT50aG91c2FuZHNfc2VwX3djOwotLSMgZWxzZQotKyMgZWxpZiBkZWZpbmVkIF9fVUNMSUJDX0hBU19MT0NBTEVfXwotIAkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSBfX2dsb2JhbF9sb2NhbGUtPmRlY2ltYWxfcG9pbnRfd2M7Ci0gCSAgX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9IF9fZ2xvYmFsX2xvY2FsZS0+dGhvdXNhbmRzX3NlcF93YzsKLSAjIGVuZGlmCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MKLWluZGV4IDJjNzA2NDIuLmQ1Yzg5NjEgMTAwNjQ0Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjCi1AQCAtMTI3LDEyICsxMjcsMjUgQEAgbmFtZXNwYWNlIHN0ZAotIAl7Ci0gCSAgLy8gTmFtZWQgbG9jYWxlLgotIAkgIC8vIE5COiBJbiB0aGUgR05VIG1vZGVsIHdjaGFyX3QgaXMgYWx3YXlzIDMyIGJpdCB3aWRlLgotKyNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotKyN3YXJuaW5nIGZpeCB0aGlzLi4uIHNob3VsZCBiZSBudW1lcmljCi0rI2VuZGlmCi0rI2lmZGVmIF9fVUNMSUJDX18KLSsjIGlmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSsJICBfTV9kYXRhLT5fTV9kZWNpbWFsX3BvaW50ID0gX19jbG9jLT5kZWNpbWFsX3BvaW50X3djOwotKwkgIF9NX2RhdGEtPl9NX3Rob3VzYW5kc19zZXAgPSBfX2Nsb2MtPnRob3VzYW5kc19zZXBfd2M7Ci0rIyBlbGlmIGRlZmluZWQgX19VQ0xJQkNfSEFTX0xPQ0FMRV9fCi0rCSAgX01fZGF0YS0+X01fZGVjaW1hbF9wb2ludCA9IF9fZ2xvYmFsX2xvY2FsZS0+ZGVjaW1hbF9wb2ludF93YzsKLSsJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gX19nbG9iYWxfbG9jYWxlLT50aG91c2FuZHNfc2VwX3djOwotKyMgZW5kaWYKLSsjZWxzZQotIAkgIHVuaW9uIHsgY2hhciAqX19zOyB3Y2hhcl90IF9fdzsgfSBfX3U7Ci0gCSAgX191Ll9fcyA9IF9fbmxfbGFuZ2luZm9fbChfTkxfTlVNRVJJQ19ERUNJTUFMX1BPSU5UX1dDLCBfX2Nsb2MpOwotIAkgIF9NX2RhdGEtPl9NX2RlY2ltYWxfcG9pbnQgPSBfX3UuX193OwotIAotIAkgIF9fdS5fX3MgPSBfX25sX2xhbmdpbmZvX2woX05MX05VTUVSSUNfVEhPVVNBTkRTX1NFUF9XQywgX19jbG9jKTsKLSAJICBfTV9kYXRhLT5fTV90aG91c2FuZHNfc2VwID0gX191Ll9fdzsKLSsjZW5kaWYKLSAKLSAJICBpZiAoX01fZGF0YS0+X01fdGhvdXNhbmRzX3NlcCA9PSBMJ1wwJykKLSAJICAgIF9NX2RhdGEtPl9NX2dyb3VwaW5nID0gIiI7Ci0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjMvMDAwNy11Y2xpYmMtbG9jYWxlLXVwZGF0ZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjMvMDAwNy11Y2xpYmMtbG9jYWxlLXVwZGF0ZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjczZTU5MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4zLzAwMDctdWNsaWJjLWxvY2FsZS11cGRhdGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NDIgKzAsMCBAQAotRnJvbSA4ZDUzYTM4YTMwMzgxMDRlNjgzMGVjZWE1ZTRiZWFkY2U1NDQ1N2MxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDg6NDY6NTggKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAwNy80Nl0gdWNsaWJjLWxvY2FsZS11cGRhdGUKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSAuLi4vY29uZmlnL2xvY2FsZS91Y2xpYmMvYysrbG9jYWxlX2ludGVybmFsLmggICAgICB8ICAzICsKLSBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuY2MgICAgICB8IDc0ICsrKysrKysrKystLS0tLS0tLS0tLS0KLSBsaWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaCAgICAgICB8IDQyICsrKysrKy0tLS0tLQotIGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jdHlwZV9tZW1iZXJzLmNjIHwgNTEgKysrKysrKysrKystLS0tCi0gLi4uL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaCAgICAgICAgfCAxMiArKy0tCi0gLi4uL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MgICAgICAgfCAzNCArKysrKystLS0tCi0gLi4uL2NvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYyAgICAgICAgfCAgNSArKwotIGxpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuY2MgIHwgMTggKysrKy0tCi0gbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5oICAgfCAxNyArKystLQotIDkgZmlsZXMgY2hhbmdlZCwgMTU4IGluc2VydGlvbnMoKyksIDk4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2MrK2xvY2FsZV9pbnRlcm5hbC5oIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2MrK2xvY2FsZV9pbnRlcm5hbC5oCi1pbmRleCBlNzRmZGRmLi45NzFhNmI0IDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2MrK2xvY2FsZV9pbnRlcm5hbC5oCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvYysrbG9jYWxlX2ludGVybmFsLmgKLUBAIC0zMSw2ICszMSw5IEBACi0gCi0gI2luY2x1ZGUgPGJpdHMvYysrY29uZmlnLmg+Ci0gI2luY2x1ZGUgPGNsb2NhbGU+Ci0rI2luY2x1ZGUgPGNzdGRsaWI+Ci0rI2luY2x1ZGUgPGNzdHJpbmc+Ci0rI2luY2x1ZGUgPGNzdGRkZWY+Ci0gCi0gI2lmZGVmIF9fVUNMSUJDX01KTjNfT05MWV9fCi0gI3dhcm5pbmcgY2xlYW4gdGhpcyB1cAotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5jYyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5jYwotaW5kZXggMjE0MzBkMC4uMWI5ZDhlMSAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5jYwotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmNjCi1AQCAtMzksMjMgKzM5LDIwIEBACi0gI2luY2x1ZGUgPGxhbmdpbmZvLmg+Ci0gI2luY2x1ZGUgPGJpdHMvYysrbG9jYWxlX2ludGVybmFsLmg+Ci0gCi0tbmFtZXNwYWNlIHN0ZAotLXsKLStfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0Uoc3RkKQotKwotICAgdGVtcGxhdGU8PgotICAgICB2b2lkCi0gICAgIF9fY29udmVydF90b192KGNvbnN0IGNoYXIqIF9fcywgZmxvYXQmIF9fdiwgaW9zX2Jhc2U6Omlvc3RhdGUmIF9fZXJyLAotIAkJICAgY29uc3QgX19jX2xvY2FsZSYgX19jbG9jKQotICAgICB7Ci0tICAgICAgaWYgKCEoX19lcnIgJiBpb3NfYmFzZTo6ZmFpbGJpdCkpCi0tCXsKLS0JICBjaGFyKiBfX3Nhbml0eTsKLS0JICBlcnJubyA9IDA7Ci0tCSAgZmxvYXQgX19mID0gX19zdHJ0b2ZfbChfX3MsICZfX3Nhbml0eSwgX19jbG9jKTsKLS0gICAgICAgICAgaWYgKF9fc2FuaXR5ICE9IF9fcyAmJiBlcnJubyAhPSBFUkFOR0UpCi0tCSAgICBfX3YgPSBfX2Y7Ci0tCSAgZWxzZQotLQkgICAgX19lcnIgfD0gaW9zX2Jhc2U6OmZhaWxiaXQ7Ci0tCX0KLSsgICAgICBjaGFyKiBfX3Nhbml0eTsKLSsgICAgICBlcnJubyA9IDA7Ci0rICAgICAgZmxvYXQgX19mID0gX19zdHJ0b2ZfbChfX3MsICZfX3Nhbml0eSwgX19jbG9jKTsKLSsgICAgICBpZiAoX19zYW5pdHkgIT0gX19zICYmIGVycm5vICE9IEVSQU5HRSkKLSsJX192ID0gX19mOwotKyAgICAgIGVsc2UKLSsJX19lcnIgfD0gaW9zX2Jhc2U6OmZhaWxiaXQ7Ci0gICAgIH0KLSAKLSAgIHRlbXBsYXRlPD4KLUBAIC02MywxNiArNjAsMTMgQEAgbmFtZXNwYWNlIHN0ZAotICAgICBfX2NvbnZlcnRfdG9fdihjb25zdCBjaGFyKiBfX3MsIGRvdWJsZSYgX192LCBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsCi0gCQkgICBjb25zdCBfX2NfbG9jYWxlJiBfX2Nsb2MpCi0gICAgIHsKLS0gICAgICBpZiAoIShfX2VyciAmIGlvc19iYXNlOjpmYWlsYml0KSkKLS0JewotLQkgIGNoYXIqIF9fc2FuaXR5OwotLQkgIGVycm5vID0gMDsKLS0JICBkb3VibGUgX19kID0gX19zdHJ0b2RfbChfX3MsICZfX3Nhbml0eSwgX19jbG9jKTsKLS0gICAgICAgICAgaWYgKF9fc2FuaXR5ICE9IF9fcyAmJiBlcnJubyAhPSBFUkFOR0UpCi0tCSAgICBfX3YgPSBfX2Q7Ci0tCSAgZWxzZQotLQkgICAgX19lcnIgfD0gaW9zX2Jhc2U6OmZhaWxiaXQ7Ci0tCX0KLSsgICAgICBjaGFyKiBfX3Nhbml0eTsKLSsgICAgICBlcnJubyA9IDA7Ci0rICAgICAgZG91YmxlIF9fZCA9IF9fc3RydG9kX2woX19zLCAmX19zYW5pdHksIF9fY2xvYyk7Ci0rICAgICAgaWYgKF9fc2FuaXR5ICE9IF9fcyAmJiBlcnJubyAhPSBFUkFOR0UpCi0rCV9fdiA9IF9fZDsKLSsgICAgICBlbHNlCi0rCV9fZXJyIHw9IGlvc19iYXNlOjpmYWlsYml0OwotICAgICB9Ci0gCi0gICB0ZW1wbGF0ZTw+Ci1AQCAtODAsMTYgKzc0LDEzIEBAIG5hbWVzcGFjZSBzdGQKLSAgICAgX19jb252ZXJ0X3RvX3YoY29uc3QgY2hhciogX19zLCBsb25nIGRvdWJsZSYgX192LCBpb3NfYmFzZTo6aW9zdGF0ZSYgX19lcnIsCi0gCQkgICBjb25zdCBfX2NfbG9jYWxlJiBfX2Nsb2MpCi0gICAgIHsKLS0gICAgICBpZiAoIShfX2VyciAmIGlvc19iYXNlOjpmYWlsYml0KSkKLS0JewotLQkgIGNoYXIqIF9fc2FuaXR5OwotLQkgIGVycm5vID0gMDsKLS0JICBsb25nIGRvdWJsZSBfX2xkID0gX19zdHJ0b2xkX2woX19zLCAmX19zYW5pdHksIF9fY2xvYyk7Ci0tICAgICAgICAgIGlmIChfX3Nhbml0eSAhPSBfX3MgJiYgZXJybm8gIT0gRVJBTkdFKQotLQkgICAgX192ID0gX19sZDsKLS0JICBlbHNlCi0tCSAgICBfX2VyciB8PSBpb3NfYmFzZTo6ZmFpbGJpdDsKLS0JfQotKyAgICAgIGNoYXIqIF9fc2FuaXR5OwotKyAgICAgIGVycm5vID0gMDsKLSsgICAgICBsb25nIGRvdWJsZSBfX2xkID0gX19zdHJ0b2xkX2woX19zLCAmX19zYW5pdHksIF9fY2xvYyk7Ci0rICAgICAgaWYgKF9fc2FuaXR5ICE9IF9fcyAmJiBlcnJubyAhPSBFUkFOR0UpCi0rCV9fdiA9IF9fbGQ7Ci0rICAgICAgZWxzZQotKwlfX2VyciB8PSBpb3NfYmFzZTo6ZmFpbGJpdDsKLSAgICAgfQotIAotICAgdm9pZAotQEAgLTExMCwxNyArMTAxLDE4IEBAIG5hbWVzcGFjZSBzdGQKLSAgIHZvaWQKLSAgIGxvY2FsZTo6ZmFjZXQ6Ol9TX2Rlc3Ryb3lfY19sb2NhbGUoX19jX2xvY2FsZSYgX19jbG9jKQotICAgewotLSAgICBpZiAoX1NfZ2V0X2NfbG9jYWxlKCkgIT0gX19jbG9jKQotKyAgICBpZiAoX19jbG9jICYmIF9TX2dldF9jX2xvY2FsZSgpICE9IF9fY2xvYykKLSAgICAgICBfX2ZyZWVsb2NhbGUoX19jbG9jKTsKLSAgIH0KLSAKLSAgIF9fY19sb2NhbGUKLSAgIGxvY2FsZTo6ZmFjZXQ6Ol9TX2Nsb25lX2NfbG9jYWxlKF9fY19sb2NhbGUmIF9fY2xvYykKLSAgIHsgcmV0dXJuIF9fZHVwbG9jYWxlKF9fY2xvYyk7IH0KLS19IC8vIG5hbWVzcGFjZSBzdGQKLSAKLS1uYW1lc3BhY2UgX19nbnVfY3h4Ci0tewotK19HTElCQ1hYX0VORF9OQU1FU1BBQ0UKLSsKLStfR0xJQkNYWF9CRUdJTl9OQU1FU1BBQ0UoX19nbnVfY3h4KQotKwotICAgY29uc3QgY2hhciogY29uc3QgY2F0ZWdvcnlfbmFtZXNbNiArIF9HTElCQ1hYX05VTV9DQVRFR09SSUVTXSA9Ci0gICAgIHsKLSAgICAgICAiTENfQ1RZUEUiLAotQEAgLTEzOCw5ICsxMzAsMTEgQEAgbmFtZXNwYWNlIF9fZ251X2N4eAotICAgICAgICJMQ19JREVOVElGSUNBVElPTiIKLSAjZW5kaWYKLSAgICAgfTsKLS19Ci0gCi0tbmFtZXNwYWNlIHN0ZAotLXsKLStfR0xJQkNYWF9FTkRfTkFNRVNQQUNFCi0rCi0rX0dMSUJDWFhfQkVHSU5fTkFNRVNQQUNFKHN0ZCkKLSsKLSAgIGNvbnN0IGNoYXIqIGNvbnN0KiBjb25zdCBsb2NhbGU6Ol9TX2NhdGVnb3JpZXMgPSBfX2dudV9jeHg6OmNhdGVnb3J5X25hbWVzOwotLX0gIC8vIG5hbWVzcGFjZSBzdGQKLSsKLStfR0xJQkNYWF9FTkRfTkFNRVNQQUNFCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2NfbG9jYWxlLmggYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaAotaW5kZXggNGJjYTVmMS4uNjRhNmQ0NiAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jX2xvY2FsZS5oCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY19sb2NhbGUuaAotQEAgLTM5LDIxICszOSwyMyBAQAotICNwcmFnbWEgR0NDIHN5c3RlbV9oZWFkZXIKLSAKLSAjaW5jbHVkZSA8Y3N0cmluZz4gICAgICAgICAgICAgIC8vIGdldCBzdGQ6OnN0cmxlbgotLSNpbmNsdWRlIDxjc3RkaW8+ICAgICAgICAgICAgICAgLy8gZ2V0IHN0ZDo6c25wcmludGYgb3Igc3RkOjpzcHJpbnRmCi0rI2luY2x1ZGUgPGNzdGRpbz4gICAgICAgICAgICAgICAvLyBnZXQgc3RkOjp2c25wcmludGYgb3Igc3RkOjp2c3ByaW50ZgotICNpbmNsdWRlIDxjbG9jYWxlPgotICNpbmNsdWRlIDxsYW5naW5mby5oPgkJLy8gRm9yIGNvZGVjdnQKLSAjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KLSAjd2FybmluZyBmaXggdGhpcwotICNlbmRpZgotLSNpZmRlZiBfX1VDTElCQ19IQVNfTE9DQUxFX18KLSsjaWZkZWYgX0dMSUJDWFhfVVNFX0lDT05WCi0gI2luY2x1ZGUgPGljb252Lmg+CQkvLyBGb3IgY29kZWN2dCB1c2luZyBpY29udiwgaWNvbnZfdAotICNlbmRpZgotLSNpZmRlZiBfX1VDTElCQ19IQVNfR0VUVEVYVF9BV0FSRU5FU1NfXwotLSNpbmNsdWRlIDxsaWJpbnRsLmg+IAkJLy8gRm9yIG1lc3NhZ2VzCi0rI2lmZGVmIEhBVkVfTElCSU5UTF9ICi0rI2luY2x1ZGUgPGxpYmludGwuaD4JCS8vIEZvciBtZXNzYWdlcwotICNlbmRpZgotKyNpbmNsdWRlIDxjc3RkYXJnPgotIAotICNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotICN3YXJuaW5nIHdoYXQgaXMgX0dMSUJDWFhfQ19MT0NBTEVfR05VIGZvcgotKy8vIHBzbTogdXNlZCBpbiBvcy9nbnUtbGludXgvY3R5cGVfbm9uaW5saW5lLmgKLSAjZW5kaWYKLSAjZGVmaW5lIF9HTElCQ1hYX0NfTE9DQUxFX0dOVSAxCi0gCi1AQCAtNzgsMjMgKzgwLDI1IEBAIG5hbWVzcGFjZSBzdGQKLSAjZWxzZQotICAgdHlwZWRlZiBpbnQqCQkJX19jX2xvY2FsZTsKLSAjZW5kaWYKLS0KLS0gIC8vIENvbnZlcnQgbnVtZXJpYyB2YWx1ZSBvZiB0eXBlIF9UdiB0byBzdHJpbmcgYW5kIHJldHVybiBsZW5ndGggb2YKLS0gIC8vIHN0cmluZy4gIElmIHNucHJpbnRmIGlzIGF2YWlsYWJsZSB1c2UgaXQsIG90aGVyd2lzZSBmYWxsIGJhY2sgdG8KLS0gIC8vIHRoZSB1bnNhZmUgc3ByaW50ZiB3aGljaCwgaW4gZ2VuZXJhbCwgY2FuIGJlIGRhbmdlcm91cyBhbmQgc2hvdWxkCi0rICAvLyBDb252ZXJ0IG51bWVyaWMgdmFsdWUgb2YgdHlwZSBkb3VibGUgdG8gc3RyaW5nIGFuZCByZXR1cm4gbGVuZ3RoIG9mCi0rICAvLyBzdHJpbmcuICBJZiB2c25wcmludGYgaXMgYXZhaWxhYmxlIHVzZSBpdCwgb3RoZXJ3aXNlIGZhbGwgYmFjayB0bwotKyAgLy8gdGhlIHVuc2FmZSB2c3ByaW50ZiB3aGljaCwgaW4gZ2VuZXJhbCwgY2FuIGJlIGRhbmdlcm91cyBhbmQgc2hvdWxkCi0gICAvLyBiZSBhdm9pZGVkLgotLSAgdGVtcGxhdGU8dHlwZW5hbWUgX1R2PgotLSAgICBpbnQKLS0gICAgX19jb252ZXJ0X2Zyb21fdihjaGFyKiBfX291dCwKLS0JCSAgICAgY29uc3QgaW50IF9fc2l6ZSBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpLAotLQkJICAgICBjb25zdCBjaGFyKiBfX2ZtdCwKLS0jaWZkZWYgX19VQ0xJQkNfSEFTX1hDTE9DQUxFX18KLS0JCSAgICAgX1R2IF9fdiwgY29uc3QgX19jX2xvY2FsZSYgX19jbG9jLCBpbnQgX19wcmVjKQotKyAgICBpbmxpbmUgaW50Ci0rICAgIF9fY29udmVydF9mcm9tX3YoY29uc3QgX19jX2xvY2FsZSYKLSsjaWZuZGVmIF9fVUNMSUJDX0hBU19YQ0xPQ0FMRV9fCi0rCV9fY2xvYyBfX2F0dHJpYnV0ZV9fICgoX191bnVzZWRfXykpCi0rI2VuZGlmCi0rCQkgICAgICwKLSsJCSAgICAgY2hhciogX19vdXQsCi0rCQkgICAgIGNvbnN0IGludCBfX3NpemUsCi0rCQkgICAgIGNvbnN0IGNoYXIqIF9fZm10LCAuLi4pCi0gICAgIHsKLSsgICAgICB2YV9saXN0IF9fYXJnczsKLSsjaWZkZWYgX19VQ0xJQkNfSEFTX1hDTE9DQUxFX18KLSsKLSAgICAgICBfX2NfbG9jYWxlIF9fb2xkID0gX19nbnVfY3h4OjpfX3VzZWxvY2FsZShfX2Nsb2MpOwotICNlbHNlCi0tCQkgICAgIF9UdiBfX3YsIGNvbnN0IF9fY19sb2NhbGUmLCBpbnQgX19wcmVjKQotLSAgICB7Ci0gIyBpZmRlZiBfX1VDTElCQ19IQVNfTE9DQUxFX18KLSAgICAgICBjaGFyKiBfX29sZCA9IHN0ZDo6c2V0bG9jYWxlKExDX0FMTCwgTlVMTCk7Ci0gICAgICAgY2hhciogX19zYXYgPSBuZXcgY2hhcltzdGQ6OnN0cmxlbihfX29sZCkgKyAxXTsKLUBAIC0xMDMsNyArMTA3LDkgQEAgbmFtZXNwYWNlIHN0ZAotICMgZW5kaWYKLSAjZW5kaWYKLSAKLS0gICAgICBjb25zdCBpbnQgX19yZXQgPSBzdGQ6OnNucHJpbnRmKF9fb3V0LCBfX3NpemUsIF9fZm10LCBfX3ByZWMsIF9fdik7Ci0rICAgICAgdmFfc3RhcnQoX19hcmdzLCBfX2ZtdCk7Ci0rICAgICAgY29uc3QgaW50IF9fcmV0ID0gc3RkOjp2c25wcmludGYoX19vdXQsIF9fc2l6ZSwgX19mbXQsIF9fYXJncyk7Ci0rICAgICAgdmFfZW5kKF9fYXJncyk7Ci0gCi0gI2lmZGVmIF9fVUNMSUJDX0hBU19YQ0xPQ0FMRV9fCi0gICAgICAgX19nbnVfY3h4OjpfX3VzZWxvY2FsZShfX29sZCk7Ci1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL2N0eXBlX21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY3R5cGVfbWVtYmVycy5jYwotaW5kZXggN2IxMjg2MS4uMTNlMDExZCAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9jdHlwZV9tZW1iZXJzLmNjCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvY3R5cGVfbWVtYmVycy5jYwotQEAgLTMzLDE2ICszMywyMCBAQAotIAotIC8vIFdyaXR0ZW4gYnkgQmVuamFtaW4gS29zbmlrIDxia296QHJlZGhhdC5jb20+Ci0gCi0rI2luY2x1ZGUgPGZlYXR1cmVzLmg+Ci0rI2lmZGVmIF9fVUNMSUJDX0hBU19MT0NBTEVfXwotICNkZWZpbmUgX0xJQkMKLSAjaW5jbHVkZSA8bG9jYWxlPgotICN1bmRlZiBfTElCQwotKyNlbHNlCi0rI2luY2x1ZGUgPGxvY2FsZT4KLSsjZW5kaWYKLSAjaW5jbHVkZSA8Yml0cy9jKytsb2NhbGVfaW50ZXJuYWwuaD4KLSAKLS1uYW1lc3BhY2Ugc3RkCi0tewotK19HTElCQ1hYX0JFR0lOX05BTUVTUEFDRShzdGQpCi0rCi0gICAvLyBOQjogVGhlIG90aGVyIGN0eXBlPGNoYXI+IHNwZWNpYWxpemF0aW9ucyBhcmUgaW4gc3JjL2xvY2FsZS5jYyBhbmQKLSAgIC8vIHZhcmlvdXMgL2NvbmZpZy9vcy8qIGZpbGVzLgotLSAgdGVtcGxhdGU8PgotICAgICBjdHlwZV9ieW5hbWU8Y2hhcj46OmN0eXBlX2J5bmFtZShjb25zdCBjaGFyKiBfX3MsIHNpemVfdCBfX3JlZnMpCi0gICAgIDogY3R5cGU8Y2hhcj4oMCwgZmFsc2UsIF9fcmVmcykKLSAgICAgewotQEAgLTU3LDYgKzYxLDggQEAgbmFtZXNwYWNlIHN0ZAotICNlbmRpZgotIAl9Ci0gICAgIH0KLSsgICAgY3R5cGVfYnluYW1lPGNoYXI+Ojp+Y3R5cGVfYnluYW1lKCkKLSsgICAgeyB9Ci0gCi0gI2lmZGVmIF9HTElCQ1hYX1VTRV9XQ0hBUl9UCi0gICBjdHlwZTx3Y2hhcl90Pjo6X193bWFza190eXBlCi1AQCAtMTM4LDE3ICsxNDQsMzMgQEAgbmFtZXNwYWNlIHN0ZAotICAgY3R5cGU8d2NoYXJfdD46OgotICAgZG9faXMobWFzayBfX20sIHdjaGFyX3QgX19jKSBjb25zdAotICAgewotLSAgICAvLyBIaWdoZXN0IGJpdG1hc2sgaW4gY3R5cGVfYmFzZSA9PSAxMCwgYnV0IGV4dHJhIGluICJDIgotLSAgICAvLyBsaWJyYXJ5IGZvciBibGFuay4KLSsgICAgLy8gVGhlIGNhc2Ugb2YgX19tID09IGN0eXBlX2Jhc2U6OnNwYWNlIGlzIHBhcnRpY3VsYXJseSBpbXBvcnRhbnQsCi0rICAgIC8vIGR1ZSB0byBpdHMgdXNlIGluIG1hbnkgaXN0cmVhbSBmdW5jdGlvbnMuICBUaGVyZWZvcmUgd2UgZGVhbCB3aXRoCi0rICAgIC8vIGl0IGZpcnN0LCBleHBsb2l0aW5nIHRoZSBrbm93bGVkZ2UgdGhhdCBvbiBHTlUgc3lzdGVtcyBfTV9iaXRbNV0KLSsgICAgLy8gaXMgdGhlIG1hc2sgY29ycmVzcG9uZGluZyB0byBjdHlwZV9iYXNlOjpzcGFjZS4gIE5COiBhbiBlbmNvZGluZwotKyAgICAvLyBjaGFuZ2Ugd291bGQgbm90IGFmZmVjdCBjb3JyZWN0bmVzcyEKLSsKLSAgICAgYm9vbCBfX3JldCA9IGZhbHNlOwotLSAgICBjb25zdCBzaXplX3QgX19iaXRtYXNrc2l6ZSA9IDExOwotLSAgICBmb3IgKHNpemVfdCBfX2JpdGN1ciA9IDA7IF9fYml0Y3VyIDw9IF9fYml0bWFza3NpemU7ICsrX19iaXRjdXIpCi0tICAgICAgaWYgKF9fbSAmIF9NX2JpdFtfX2JpdGN1cl0KLS0JICAmJiBfX2lzd2N0eXBlX2woX19jLCBfTV93bWFza1tfX2JpdGN1cl0sIF9NX2NfbG9jYWxlX2N0eXBlKSkKLS0JewotLQkgIF9fcmV0ID0gdHJ1ZTsKLS0JICBicmVhazsKLS0JfQotKyAgICBpZiAoX19tID09IF9NX2JpdFs1XSkKLSsgICAgICBfX3JldCA9IF9faXN3Y3R5cGVfbChfX2MsIF9NX3dtYXNrWzVdLCBfTV9jX2xvY2FsZV9jdHlwZSk7Ci0rICAgIGVsc2UKLSsgICAgICB7Ci0rCS8vIEhpZ2hlc3QgYml0bWFzayBpbiBjdHlwZV9iYXNlID09IDEwLCBidXQgZXh0cmEgaW4gIkMiCi0rCS8vIGxpYnJhcnkgZm9yIGJsYW5rLgotKwljb25zdCBzaXplX3QgX19iaXRtYXNrc2l6ZSA9IDExOwotKwlmb3IgKHNpemVfdCBfX2JpdGN1ciA9IDA7IF9fYml0Y3VyIDw9IF9fYml0bWFza3NpemU7ICsrX19iaXRjdXIpCi0rCSAgaWYgKF9fbSAmIF9NX2JpdFtfX2JpdGN1cl0pCi0rCSAgICB7Ci0rCSAgICAgIGlmIChfX2lzd2N0eXBlX2woX19jLCBfTV93bWFza1tfX2JpdGN1cl0sIF9NX2NfbG9jYWxlX2N0eXBlKSkKLSsJCXsKLSsJCSAgX19yZXQgPSB0cnVlOwotKwkJICBicmVhazsKLSsJCX0KLSsJICAgICAgZWxzZSBpZiAoX19tID09IF9NX2JpdFtfX2JpdGN1cl0pCi0rCQlicmVhazsKLSsJICAgIH0KLSsgICAgICB9Ci0rCi0gICAgIHJldHVybiBfX3JldDsKLSAgIH0KLSAKLUBAIC0yOTAsNCArMzEyLDUgQEAgbmFtZXNwYWNlIHN0ZAotICNlbmRpZgotICAgfQotICNlbmRpZiAvLyAgX0dMSUJDWFhfVVNFX1dDSEFSX1QKLS19Ci0rCi0rX0dMSUJDWFhfRU5EX05BTUVTUEFDRQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tZXNzYWdlc19tZW1iZXJzLmggYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbWVzc2FnZXNfbWVtYmVycy5oCi1pbmRleCBkODlkYTMzLi4wNjc2NTdhIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaAotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21lc3NhZ2VzX21lbWJlcnMuaAotQEAgLTUzLDEyICs1MywxNiBAQAotICAgdGVtcGxhdGU8dHlwZW5hbWUgX0NoYXJUPgotICAgICAgbWVzc2FnZXM8X0NoYXJUPjo6bWVzc2FnZXMoX19jX2xvY2FsZSBfX2Nsb2MsIGNvbnN0IGNoYXIqIF9fcywKLSAJCQkJc2l6ZV90IF9fcmVmcykKLS0gICAgIDogZmFjZXQoX19yZWZzKSwgX01fY19sb2NhbGVfbWVzc2FnZXMoX1NfY2xvbmVfY19sb2NhbGUoX19jbG9jKSksCi0tICAgICBfTV9uYW1lX21lc3NhZ2VzKF9fcykKLSsgICAgIDogZmFjZXQoX19yZWZzKSwgX01fY19sb2NhbGVfbWVzc2FnZXMoTlVMTCksCi0rICAgICBfTV9uYW1lX21lc3NhZ2VzKE5VTEwpCi0gICAgICB7Ci0tICAgICAgIGNoYXIqIF9fdG1wID0gbmV3IGNoYXJbc3RkOjpzdHJsZW4oX19zKSArIDFdOwotLSAgICAgICBzdGQ6OnN0cmNweShfX3RtcCwgX19zKTsKLSsgICAgICAgY29uc3Qgc2l6ZV90IF9fbGVuID0gc3RkOjpzdHJsZW4oX19zKSArIDE7Ci0rICAgICAgIGNoYXIqIF9fdG1wID0gbmV3IGNoYXJbX19sZW5dOwotKyAgICAgICBzdGQ6Om1lbWNweShfX3RtcCwgX19zLCBfX2xlbik7Ci0gICAgICAgIF9NX25hbWVfbWVzc2FnZXMgPSBfX3RtcDsKLSsKLSsgICAgICAgLy8gTGFzdCB0byBhdm9pZCBsZWFraW5nIG1lbW9yeSBpZiBuZXcgdGhyb3dzLgotKyAgICAgICBfTV9jX2xvY2FsZV9tZXNzYWdlcyA9IF9TX2Nsb25lX2NfbG9jYWxlKF9fY2xvYyk7Ci0gICAgICB9Ci0gCi0gICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+Ci1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL21vbmV0YXJ5X21lbWJlcnMuY2MgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYwotaW5kZXggMzFlYmI5Zi4uNzY3OWI5YyAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9tb25ldGFyeV9tZW1iZXJzLmNjCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbW9uZXRhcnlfbWVtYmVycy5jYwotQEAgLTMzLDkgKzMzLDE0IEBACi0gCi0gLy8gV3JpdHRlbiBieSBCZW5qYW1pbiBLb3NuaWsgPGJrb3pAcmVkaGF0LmNvbT4KLSAKLSsjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KLSsjaWZkZWYgX19VQ0xJQkNfSEFTX0xPQ0FMRV9fCi0gI2RlZmluZSBfTElCQwotICNpbmNsdWRlIDxsb2NhbGU+Ci0gI3VuZGVmIF9MSUJDCi0rI2Vsc2UKLSsjaW5jbHVkZSA8bG9jYWxlPgotKyNlbmRpZgotICNpbmNsdWRlIDxiaXRzL2MrK2xvY2FsZV9pbnRlcm5hbC5oPgotIAotICNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotQEAgLTIwNiw3ICsyMTEsNyBAQCBuYW1lc3BhY2Ugc3RkCi0gCSAgfQotIAlicmVhazsKLSAgICAgICBkZWZhdWx0OgotLQk7Ci0rCV9fcmV0ID0gcGF0dGVybigpOwotICAgICAgIH0KLSAgICAgcmV0dXJuIF9fcmV0OwotICAgfQotQEAgLTM5MCw3ICszOTUsOSBAQCBuYW1lc3BhY2Ugc3RkCi0gCSAgX19jX2xvY2FsZSBfX29sZCA9IF9fdXNlbG9jYWxlKF9fY2xvYyk7Ci0gI2Vsc2UKLSAJICAvLyBTd2l0Y2ggdG8gbmFtZWQgbG9jYWxlIHNvIHRoYXQgbWJzcnRvd2NzIHdpbGwgd29yay4KLS0JICBjaGFyKiBfX29sZCA9IHN0cmR1cChzZXRsb2NhbGUoTENfQUxMLCBOVUxMKSk7Ci0rICAJICBjaGFyKiBfX29sZCA9IHNldGxvY2FsZShMQ19BTEwsIE5VTEwpOwotKyAgICAgICAgICBjb25zdCBzaXplX3QgX19sbGVuID0gc3RybGVuKF9fb2xkKSArIDE7Ci0rICAgICAgICAgIGNoYXIqIF9fc2F2ID0gbmV3IGNoYXJbX19sbGVuXTsKLSAJICBzZXRsb2NhbGUoTENfQUxMLCBfX25hbWUpOwotICNlbmRpZgotIAotQEAgLTQ3Nyw4ICs0ODQsOCBAQCBuYW1lc3BhY2Ugc3RkCi0gI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSAJICAgICAgX191c2Vsb2NhbGUoX19vbGQpOwotICNlbHNlCi0tCSAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9fb2xkKTsKLS0JICAgICAgZnJlZShfX29sZCk7Ci0rCSAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9fc2F2KTsKLSsJICAgICAgZGVsZXRlIFtdIF9fc2F2OwotICNlbmRpZgotIAkgICAgICBfX3Rocm93X2V4Y2VwdGlvbl9hZ2FpbjsKLSAJICAgIH0KLUBAIC00OTgsOCArNTA1LDggQEAgbmFtZXNwYWNlIHN0ZAotICNpZmRlZiBfX1VDTElCQ19IQVNfWExPQ0FMRV9fCi0gCSAgX191c2Vsb2NhbGUoX19vbGQpOwotICNlbHNlCi0tCSAgc2V0bG9jYWxlKExDX0FMTCwgX19vbGQpOwotLQkgIGZyZWUoX19vbGQpOwotKwkgIHNldGxvY2FsZShMQ19BTEwsIF9fc2F2KTsKLSsJICBkZWxldGUgW10gX19zYXY7Ci0gI2VuZGlmCi0gCX0KLSAgICAgfQotQEAgLTU0NSw4ICs1NTIsMTEgQEAgbmFtZXNwYWNlIHN0ZAotIAkgIF9fY19sb2NhbGUgX19vbGQgPSBfX3VzZWxvY2FsZShfX2Nsb2MpOwotICNlbHNlCi0gCSAgLy8gU3dpdGNoIHRvIG5hbWVkIGxvY2FsZSBzbyB0aGF0IG1ic3J0b3djcyB3aWxsIHdvcmsuCi0tCSAgY2hhciogX19vbGQgPSBzdHJkdXAoc2V0bG9jYWxlKExDX0FMTCwgTlVMTCkpOwotLQkgIHNldGxvY2FsZShMQ19BTEwsIF9fbmFtZSk7Ci0rICAgICAgICAgIGNoYXIqIF9fb2xkID0gc2V0bG9jYWxlKExDX0FMTCwgTlVMTCk7Ci0rICAgICAgICAgIGNvbnN0IHNpemVfdCBfX2xsZW4gPSBzdHJsZW4oX19vbGQpICsgMTsKLSsgICAgICAgICAgY2hhciogX19zYXYgPSBuZXcgY2hhcltfX2xsZW5dOwotKyAgICAgICAgICBtZW1jcHkoX19zYXYsIF9fb2xkLCBfX2xsZW4pOwotKyAgICAgICAgICBzZXRsb2NhbGUoTENfQUxMLCBfX25hbWUpOwotICNlbmRpZgotIAotICNpZmRlZiBfX1VDTElCQ19NSk4zX09OTFlfXwotQEAgLTYzMyw4ICs2NDMsOCBAQCBuYW1lc3BhY2Ugc3RkCi0gI2lmZGVmIF9fVUNMSUJDX0hBU19YTE9DQUxFX18KLSAJICAgICAgX191c2Vsb2NhbGUoX19vbGQpOwotICNlbHNlCi0tCSAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9fb2xkKTsKLS0JICAgICAgZnJlZShfX29sZCk7Ci0rCSAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9fc2F2KTsKLSsJICAgICAgZGVsZXRlIFtdIF9fc2F2OwotICNlbmRpZgotICAgICAgICAgICAgICAgX190aHJvd19leGNlcHRpb25fYWdhaW47Ci0gCSAgICB9Ci1AQCAtNjUzLDggKzY2Myw4IEBAIG5hbWVzcGFjZSBzdGQKLSAjaWZkZWYgX19VQ0xJQkNfSEFTX1hMT0NBTEVfXwotIAkgIF9fdXNlbG9jYWxlKF9fb2xkKTsKLSAjZWxzZQotLQkgIHNldGxvY2FsZShMQ19BTEwsIF9fb2xkKTsKLS0JICBmcmVlKF9fb2xkKTsKLSsJICBzZXRsb2NhbGUoTENfQUxMLCBfX3Nhdik7Ci0rCSAgZGVsZXRlIFtdIF9fc2F2OwotICNlbmRpZgotIAl9Ci0gICAgIH0KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvbnVtZXJpY19tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL251bWVyaWNfbWVtYmVycy5jYwotaW5kZXggZDVjODk2MS4uOGFlODk2OSAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy9udW1lcmljX21lbWJlcnMuY2MKLUBAIC0zMyw5ICszMywxNCBAQAotIAotIC8vIFdyaXR0ZW4gYnkgQmVuamFtaW4gS29zbmlrIDxia296QHJlZGhhdC5jb20+Ci0gCi0rI2luY2x1ZGUgPGZlYXR1cmVzLmg+Ci0rI2lmZGVmIF9fVUNMSUJDX0hBU19MT0NBTEVfXwotICNkZWZpbmUgX0xJQkMKLSAjaW5jbHVkZSA8bG9jYWxlPgotICN1bmRlZiBfTElCQwotKyNlbHNlCi0rI2luY2x1ZGUgPGxvY2FsZT4KLSsjZW5kaWYKLSAjaW5jbHVkZSA8Yml0cy9jKytsb2NhbGVfaW50ZXJuYWwuaD4KLSAKLSAjaWZkZWYgX19VQ0xJQkNfTUpOM19PTkxZX18KLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlnL2xvY2FsZS91Y2xpYmMvdGltZV9tZW1iZXJzLmNjIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5jYwotaW5kZXggZDg0OGVkNS4uZjI0ZDUzZSAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuY2MKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuY2MKLUBAIC01MywxMSArNTMsMTQgQEAgbmFtZXNwYWNlIHN0ZAotICAgICAgIGNvbnN0IHNpemVfdCBfX2xlbiA9IF9fc3RyZnRpbWVfbChfX3MsIF9fbWF4bGVuLCBfX2Zvcm1hdCwgX190bSwKLSAJCQkJCV9NX2NfbG9jYWxlX3RpbWVwdW5jdCk7Ci0gI2Vsc2UKLS0gICAgICBjaGFyKiBfX29sZCA9IHN0cmR1cChzZXRsb2NhbGUoTENfQUxMLCBOVUxMKSk7Ci0rICAgICAgY2hhciogX19vbGQgPSBzZXRsb2NhbGUoTENfQUxMLCBOVUxMKTsKLSsgICAgICBjb25zdCBzaXplX3QgX19sbGVuID0gc3RybGVuKF9fb2xkKSArIDE7Ci0rICAgICAgY2hhciogX19zYXYgPSBuZXcgY2hhcltfX2xsZW5dOwotKyAgICAgIG1lbWNweShfX3NhdiwgX19vbGQsIF9fbGxlbik7Ci0gICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX01fbmFtZV90aW1lcHVuY3QpOwotICAgICAgIGNvbnN0IHNpemVfdCBfX2xlbiA9IHN0cmZ0aW1lKF9fcywgX19tYXhsZW4sIF9fZm9ybWF0LCBfX3RtKTsKLS0gICAgICBzZXRsb2NhbGUoTENfQUxMLCBfX29sZCk7Ci0tICAgICAgZnJlZShfX29sZCk7Ci0rICAgICAgc2V0bG9jYWxlKExDX0FMTCwgX19zYXYpOwotKyAgICAgIGRlbGV0ZSBbXSBfX3NhdjsKLSAjZW5kaWYKLSAgICAgICAvLyBNYWtlIHN1cmUgX19zIGlzIG51bGwgdGVybWluYXRlZC4KLSAgICAgICBpZiAoX19sZW4gPT0gMCkKLUBAIC0yMDcsMTEgKzIxMCwxNCBAQCBuYW1lc3BhY2Ugc3RkCi0gICAgICAgY29uc3Qgc2l6ZV90IF9fbGVuID0gX193Y3NmdGltZV9sKF9fcywgX19tYXhsZW4sIF9fZm9ybWF0LCBfX3RtLAotIAkJCQkJX01fY19sb2NhbGVfdGltZXB1bmN0KTsKLSAjZWxzZQotLSAgICAgIGNoYXIqIF9fb2xkID0gc3RyZHVwKHNldGxvY2FsZShMQ19BTEwsIE5VTEwpKTsKLSsgICAgICBjaGFyKiBfX29sZCA9IHNldGxvY2FsZShMQ19BTEwsIE5VTEwpOwotKyAgICAgIGNvbnN0IHNpemVfdCBfX2xsZW4gPSBzdHJsZW4oX19vbGQpICsgMTsKLSsgICAgICBjaGFyKiBfX3NhdiA9IG5ldyBjaGFyW19fbGxlbl07Ci0rICAgICAgbWVtY3B5KF9fc2F2LCBfX29sZCwgX19sbGVuKTsKLSAgICAgICBzZXRsb2NhbGUoTENfQUxMLCBfTV9uYW1lX3RpbWVwdW5jdCk7Ci0gICAgICAgY29uc3Qgc2l6ZV90IF9fbGVuID0gd2NzZnRpbWUoX19zLCBfX21heGxlbiwgX19mb3JtYXQsIF9fdG0pOwotLSAgICAgIHNldGxvY2FsZShMQ19BTEwsIF9fb2xkKTsKLS0gICAgICBmcmVlKF9fb2xkKTsKLSsgICAgICBzZXRsb2NhbGUoTENfQUxMLCBfX3Nhdik7Ci0rICAgICAgZGVsZXRlIFtdIF9fc2F2OwotICNlbmRpZgotICAgICAgIC8vIE1ha2Ugc3VyZSBfX3MgaXMgbnVsbCB0ZXJtaW5hdGVkLgotICAgICAgIGlmIChfX2xlbiA9PSAwKQotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuaCBiL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuaAotaW5kZXggYmE4ZTg1OC4uMTY2NWRkZSAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWcvbG9jYWxlL3VjbGliYy90aW1lX21lbWJlcnMuaAotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZy9sb2NhbGUvdWNsaWJjL3RpbWVfbWVtYmVycy5oCi1AQCAtNTAsMTIgKzUwLDIxIEBACi0gICAgIF9fdGltZXB1bmN0PF9DaGFyVD46Ol9fdGltZXB1bmN0KF9fY19sb2NhbGUgX19jbG9jLCBjb25zdCBjaGFyKiBfX3MsCi0gCQkJCSAgICAgc2l6ZV90IF9fcmVmcykKLSAgICAgOiBmYWNldChfX3JlZnMpLCBfTV9kYXRhKE5VTEwpLCBfTV9jX2xvY2FsZV90aW1lcHVuY3QoTlVMTCksCi0tICAgIF9NX25hbWVfdGltZXB1bmN0KF9fcykKLSsgICAgX01fbmFtZV90aW1lcHVuY3QoTlVMTCkKLSAgICAgewotLSAgICAgIGNoYXIqIF9fdG1wID0gbmV3IGNoYXJbc3RkOjpzdHJsZW4oX19zKSArIDFdOwotLSAgICAgIHN0ZDo6c3RyY3B5KF9fdG1wLCBfX3MpOwotKyAgICAgIGNvbnN0IHNpemVfdCBfX2xlbiA9IHN0ZDo6c3RybGVuKF9fcykgKyAxOwotKyAgICAgIGNoYXIqIF9fdG1wID0gbmV3IGNoYXJbX19sZW5dOwotKyAgICAgIHN0ZDo6bWVtY3B5KF9fdG1wLCBfX3MsIF9fbGVuKTsKLSAgICAgICBfTV9uYW1lX3RpbWVwdW5jdCA9IF9fdG1wOwotLSAgICAgIF9NX2luaXRpYWxpemVfdGltZXB1bmN0KF9fY2xvYyk7Ci0rCi0rICAgICAgdHJ5Ci0rCXsgX01faW5pdGlhbGl6ZV90aW1lcHVuY3QoX19jbG9jKTsgfQotKyAgICAgIGNhdGNoKC4uLikKLSsJewotKwkgIGRlbGV0ZSBbXSBfTV9uYW1lX3RpbWVwdW5jdDsKLSsJICBfX3Rocm93X2V4Y2VwdGlvbl9hZ2FpbjsKLSsJfQotKwotICAgICB9Ci0gCi0gICB0ZW1wbGF0ZTx0eXBlbmFtZSBfQ2hhclQ+Ci0tLSAKLTIuOC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjMvMDA0MS1zc3Bfbm9uc2hhcmVkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTYuMy8wMDQxLXNzcF9ub25zaGFyZWQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDc0NDUyOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjMvMDA0MS1zc3Bfbm9uc2hhcmVkLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gNTUxYTVkYjdhY2I1NmUwODVhMTAxZjFjMjIyZDUxYjJjMWIwMzlhNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFN6YWJvbGNzIE5hZ3kgPG5zekBwb3J0NzAubmV0PgorRGF0ZTogU2F0LCA3IE5vdiAyMDE1IDE0OjU4OjQwICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggNDEvNDZdIHNzcF9ub25zaGFyZWQKKworLS0tCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIENvbmZpZ3VyYXRpb25dCisKKyBnY2MvZ2NjLmMgfCAzICsrLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYworaW5kZXggMjgxMjgxOS4uOWRlOTZlZSAxMDA2NDQKKy0tLSBhL2djYy9nY2MuYworKysrIGIvZ2NjL2djYy5jCitAQCAtODYzLDcgKzg2Myw4IEBAIHByb3BlciBwb3NpdGlvbiBhbW9uZyB0aGUgb3RoZXIgb3V0cHV0IGZpbGVzLiAgKi8KKyAjaWZuZGVmIExJTktfU1NQX1NQRUMKKyAjaWZkZWYgVEFSR0VUX0xJQkNfUFJPVklERVNfU1NQCisgI2RlZmluZSBMSU5LX1NTUF9TUEVDICIle2ZzdGFjay1wcm90ZWN0b3J8ZnN0YWNrLXByb3RlY3Rvci1hbGwiIFwKKy0JCSAgICAgICAifGZzdGFjay1wcm90ZWN0b3Itc3Ryb25nfGZzdGFjay1wcm90ZWN0b3ItZXhwbGljaXQ6fSIKKysJCSAgICAgICAifGZzdGFjay1wcm90ZWN0b3Itc3Ryb25nfGZzdGFjay1wcm90ZWN0b3ItZXhwbGljaXQiIFwKKysJCSAgICAgICAiOi1sc3NwX25vbnNoYXJlZH0iCisgI2Vsc2UKKyAjZGVmaW5lIExJTktfU1NQX1NQRUMgIiV7ZnN0YWNrLXByb3RlY3Rvcnxmc3RhY2stcHJvdGVjdG9yLWFsbCIgXAorIAkJICAgICAgICJ8ZnN0YWNrLXByb3RlY3Rvci1zdHJvbmd8ZnN0YWNrLXByb3RlY3Rvci1leHBsaWNpdCIgXAorLS0gCisyLjguMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4zLzAwNDctbGliZ2NjX3MtVXNlLWFsaWFzLWZvci1fX2NwdV9pbmRpY2F0b3JfaW5pdC1pbnN0ZWFkLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjMvMDA0Ny1saWJnY2Nfcy1Vc2UtYWxpYXMtZm9yLV9fY3B1X2luZGljYXRvcl9pbml0LWluc3RlYWQtLnBhdGNoCmluZGV4IGVkNmNkNjkuLjZiNWRhMDIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjMvMDA0Ny1saWJnY2Nfcy1Vc2UtYWxpYXMtZm9yLV9fY3B1X2luZGljYXRvcl9pbml0LWluc3RlYWQtLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjMvMDA0Ny1saWJnY2Nfcy1Vc2UtYWxpYXMtZm9yLV9fY3B1X2luZGljYXRvcl9pbml0LWluc3RlYWQtLnBhdGNoCkBAIC0zMSw3ICszMSw3IEBACiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiAtLS0KLVVwc3RyZWFtLVN0YXR1czogUmVqZWN0ZWQKK1Vwc3RyZWFtLVN0YXR1czogRGVuaWVkCiAKICBnY2MvY29uZmlnL2kzODYvaTM4Ni5jICAgICAgIHwgNCArKy0tCiAgbGliZ2NjL2NvbmZpZy9pMzg2L2NwdWluZm8uYyB8IDYgKysrLS0tCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4zLzAwNTYtTFJBLVBSNzA5MDQtcmVsYXgtdGhlLXJlc3RyaWN0aW9uLW9uLXN1YnJlZy1yZWxvYWQtZi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjMvMDA1Ni1MUkEtUFI3MDkwNC1yZWxheC10aGUtcmVzdHJpY3Rpb24tb24tc3VicmVnLXJlbG9hZC1mLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzMWYxNDcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNi4zLzAwNTYtTFJBLVBSNzA5MDQtcmVsYXgtdGhlLXJlc3RyaWN0aW9uLW9uLXN1YnJlZy1yZWxvYWQtZi5wYXRjaApAQCAtMCwwICsxLDUxIEBACitGcm9tIGE1ODJiMGE1M2QxZGM4NjA0YTIwMTM0OGI5OWNhOGRlNDg3ODRlN2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBqaXdhbmcgPGppd2FuZ0AxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQ+CitEYXRlOiBUaHUsIDEyIE1heSAyMDE2IDE3OjAwOjUyICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIFtMUkFdIFBSNzA5MDQsIHJlbGF4IHRoZSByZXN0cmljdGlvbiBvbiBzdWJyZWcgcmVsb2FkIGZvcgorIHdpZGUgbW9kZQorCisyMDE2LTA1LTEyICBKaW9uZyBXYW5nICA8amlvbmcud2FuZ0Bhcm0uY29tPgorCitnY2MvCisgIFBSIHJ0bC1vcHRpbWl6YXRpb24vNzA5MDQKKyAgKiBscmEtY29uc3RyYWludC5jIChwcm9jZXNzX2FkZHJfcmVnKTogUmVsYXggdGhlIHJlc3RyaWN0aW9uIG9uCisgIHN1YnJlZyByZWxvYWQgZm9yIHdpZGUgbW9kZS4KKworZ2l0LXN2bi1pZDogc3ZuK3NzaDovL2djYy5nbnUub3JnL3N2bi9nY2MvdHJ1bmtAMjM2MTgxIDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhNAorLS0tCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCisgZ2NjL2xyYS1jb25zdHJhaW50cy5jIHwgMTYgKysrKysrKysrKysrKysrLQorIDEgZmlsZSBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvbHJhLWNvbnN0cmFpbnRzLmMgYi9nY2MvbHJhLWNvbnN0cmFpbnRzLmMKK2luZGV4IGY5NmZkNDU4ZTIzLi43M2ZiNzJhMmVhNSAxMDA2NDQKKy0tLSBhL2djYy9scmEtY29uc3RyYWludHMuYworKysrIGIvZ2NjL2xyYS1jb25zdHJhaW50cy5jCitAQCAtMTMyNiw3ICsxMzI2LDIxIEBAIHByb2Nlc3NfYWRkcl9yZWcgKHJ0eCAqbG9jLCBib29sIGNoZWNrX29ubHlfcCwgcnR4X2luc24gKipiZWZvcmUsIHJ0eF9pbnNuICoqYWZ0CisgCisgICBzdWJyZWdfcCA9IEdFVF9DT0RFICgqbG9jKSA9PSBTVUJSRUc7CisgICBpZiAoc3VicmVnX3ApCistICAgIGxvYyA9ICZTVUJSRUdfUkVHICgqbG9jKTsKKysgICAgeworKyAgICAgIHJlZyA9IFNVQlJFR19SRUcgKCpsb2MpOworKyAgICAgIG1vZGUgPSBHRVRfTU9ERSAocmVnKTsKKysKKysgICAgICAvKiBGb3IgbW9kZSB3aXRoIHNpemUgYmlnZ2VyIHRoYW4gcHRyX21vZGUsIHRoZXJlIHVubGlrZWx5IHRvIGJlICJtb3YiCisrCSBiZXR3ZWVuIHR3byByZWdpc3RlcnMgd2l0aCBkaWZmZXJlbnQgY2xhc3NlcywgYnV0IHRoZXJlIG5vcm1hbGx5IHdpbGwKKysJIGJlICJtb3YiIHdoaWNoIHRyYW5zZmVycyBlbGVtZW50IG9mIHZlY3RvciByZWdpc3RlciBpbnRvIHRoZSBnZW5lcmFsCisrCSByZWdpc3RlciwgYW5kIHRoaXMgbm9ybWFsbHkgd2lsbCBiZSBhIHN1YnJlZyB3aGljaCBzaG91bGQgYmUgcmVsb2FkZWQKKysJIGFzIGEgd2hvbGUuICBUaGlzIGlzIHBhcnRpY3VsYXJseSBsaWtlbHkgdG8gYmUgdHJpZ2dlcmVkIHdoZW4KKysJIC1mbm8tc3BsaXQtd2lkZS10eXBlcyBzcGVjaWZpZWQuICAqLworKyAgICAgIGlmIChpbl9jbGFzc19wIChyZWcsIGNsLCAmbmV3X2NsYXNzKQorKwkgIHx8IEdFVF9NT0RFX1NJWkUgKG1vZGUpIDw9IEdFVF9NT0RFX1NJWkUgKHB0cl9tb2RlKSkKKysgICAgICAgbG9jID0gJlNVQlJFR19SRUcgKCpsb2MpOworKyAgICB9CisrCisgICByZWcgPSAqbG9jOworICAgbW9kZSA9IEdFVF9NT0RFIChyZWcpOworICAgaWYgKCEgUkVHX1AgKHJlZykpCistLSAKKzIuMTQuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwNzM4MjgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLmluYwpAQCAtMCwwICsxLDEyOCBAQAorcmVxdWlyZSBnY2MtY29tbW9uLmluYworCisjIFRoaXJkIGRpZ2l0IGluIFBWIHNob3VsZCBiZSBpbmNyZW1lbnRlZCBhZnRlciBhIG1pbm9yIHJlbGVhc2UKKworUFYgPSAiNy4zLjAiCisKKyMgQklOViBzaG91bGQgYmUgaW5jcmVtZW50ZWQgdG8gYSByZXZpc2lvbiBhZnRlciBhIG1pbm9yIGdjYyByZWxlYXNlCisKK0JJTlYgPSAiNy4zLjAiCisKK0ZJTEVTRVhUUkFQQVRIUyA9LiAiJHtGSUxFX0RJUk5BTUV9L2djYy03LjM6JHtGSUxFX0RJUk5BTUV9L2djYy03LjMvYmFja3BvcnQ6IgorCitERVBFTkRTID0rICJtcGZyIGdtcCBsaWJtcGMgemxpYiIKK05BVElWRURFUFMgPSAibXBmci1uYXRpdmUgZ21wLW5hdGl2ZSBsaWJtcGMtbmF0aXZlIHpsaWItbmF0aXZlIgorCitMSUNFTlNFID0gIkdQTC0zLjAtd2l0aC1HQ0MtZXhjZXB0aW9uICYgR1BMdjMiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiXAorICAgIGZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiBcCisgICAgZmlsZTovL0NPUFlJTkczO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisgICAgZmlsZTovL0NPUFlJTkczLkxJQjttZDU9NmE2YThlMDIwODM4YjIzNDA2YzgxYjE5YzFkNDZkZjYgXAorICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEgXAorICAgIGZpbGU6Ly9DT1BZSU5HLlJVTlRJTUU7bWQ1PWZlNjBkODcwNDg1NjdkNGZlOGM4YTBlZDI0NDhiY2M4IFwKKyIKKworI1JFTEVBU0UgPSAiNy0yMDE3MDUwNCIKK0JBU0VVUkkgPz0gIiR7R05VX01JUlJPUn0vZ2NjL2djYy0ke1BWfS9nY2MtJHtQVn0udGFyLnh6IgorI1NSQ1JFViA9ICJmN2NmNzk4YjczZmQxYTA3MDk4ZjlhNDkwZGVlYzFlMmEzNmUwYmVkIgorI0JBU0VVUkkgPz0gImdpdDovL2dpdGh1Yi5jb20vZ2NjLW1pcnJvci9nY2M7YnJhbmNoPWdjYy02LWJyYW5jaDtwcm90b2NvbD1naXQiCisjQkFTRVVSSSA/PSAiaHR0cDovL21pcnJvcnMuY29uY2VydHBhc3MuY29tL2djYy9zbmFwc2hvdHMvJHtSRUxFQVNFfS9nY2MtJHtSRUxFQVNFfS50YXIuYnoyIgorCitTUkNfVVJJID0gIlwKKyAgICAgICAgICAgJHtCQVNFVVJJfSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWdjYy00LjMuMS1BUkNIX0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOC1jOTktc25wcmludGYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOS1nY2MtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEwLWdjYy1wb2lzb24tZGlyLWV4dGVuZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDExLWdjYy00LjMuMy1TWVNST09UX0NGTEFHU19GT1JfVEFSR0VULnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTItNjQtYml0LW11bHRpbGliLWhhY2sucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMy1vcHRpb25hbC1saWJzdGRjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTQtZ2NjLWRpc2FibGUtTUFTS19SRUxBWF9QSUNfQ0FMTFMtYml0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTUtQ09MTEVDVF9HQ0NfT1BUSU9OUy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE2LVVzZS10aGUtZGVmYXVsdHMuaC1pbi1CLWluc3RlYWQtb2YtUy1hbmQtdC1vZS1pbi1CLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTctZm9ydHJhbi1jcm9zcy1jb21waWxlLWhhY2sucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxOC1jcHAtaG9ub3Itc3lzcm9vdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE5LU1JUFM2NC1EZWZhdWx0LXRvLU42NC1BQkkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMC1EZWZpbmUtR0xJQkNfRFlOQU1JQ19MSU5LRVItYW5kLVVDTElCQ19EWU5BTUlDX0xJTktFLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjEtZ2NjLUZpeC1hcmd1bWVudC1saXN0LXRvby1sb25nLWVycm9yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjItRGlzYWJsZS1zZHQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMy1saWJ0b29sLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjQtZ2NjLWFybXY0LXBhc3MtZml4LXY0YngtdG8tbGlua2VyLXRvLXN1cHBvcnQtRUFCSS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI1LVVzZS10aGUtbXVsdGlsaWItY29uZmlnLWZpbGVzLWZyb20tQi1pbnN0ZWFkLW9mLXVzaW4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyNi1Bdm9pZC11c2luZy1saWJkaXItZnJvbS0ubGEtd2hpY2gtdXN1YWxseS1wb2ludHMtdG8tLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjctZXhwb3J0LUNQUC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI4LUVuYWJsZS1TUEUtQWx0aVZlYy1nZW5lcmF0aW9uLW9uLXBvd2VwYy1saW51eC10YXJnZXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyOS1EaXNhYmxlLXRoZS1NVUxUSUxJQl9PU0RJUk5BTUVTLWFuZC1vdGhlci1tdWx0aWxpYi1vLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzAtRW5zdXJlLXRhcmdldC1nY2MtaGVhZGVycy1jYW4tYmUtaW5jbHVkZWQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzMS1nY2MtNC44LXdvbi10LWJ1aWxkLXdpdGgtZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzItRG9uLXQtc2VhcmNoLWhvc3QtZGlyZWN0b3J5LWR1cmluZy1yZWxpbmstaWYtaW5zdF9wci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDMzLVVzZS1TWVNURU1MSUJTX0RJUi1yZXBsYWNlbWVudC1pbnN0ZWFkLW9mLWhhcmRjb2RpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzNC1hYXJjaDY0LUFkZC1zdXBwb3J0LWZvci1tdXNsLWxkc28ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzNS1saWJjYzEtZml4LWxpYmNjMS1zLWluc3RhbGwtcGF0aC1hbmQtcnBhdGgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzNi1oYW5kbGUtc3lzcm9vdC1zdXBwb3J0LWZvci1uYXRpdmVzZGstZ2NjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzctU2VhcmNoLXRhcmdldC1zeXNyb290LWdjYy12ZXJzaW9uLXNwZWNpZmljLWRpcnMtd2l0aC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDM4LUZpeC12YXJpb3VzLV9GT1JfQlVJTEQtYW5kLXJlbGF0ZWQtdmFyaWFibGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzktbmlvczItRGVmaW5lLU1VU0xfRFlOQU1JQ19MSU5LRVIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDA0MC1BZGQtc3NwX25vbnNoYXJlZC10by1saW5rLWNvbW1hbmRsaW5lLWZvci1tdXNsLXRhcmdlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwNDEtZ2NjLWxpYmNwcC1zdXBwb3J0LWZmaWxlLXByZWZpeC1tYXAtb2xkLW5ldy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDQyLVJldXNlLWZkZWJ1Zy1wcmVmaXgtbWFwLXRvLXJlcGxhY2UtZmZpbGUtcHJlZml4LW1hcC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDQzLWdjYy1maW5hbC5jLWZkZWJ1Zy1wcmVmaXgtbWFwLXN1cHBvcnQtdG8tcmVtYXAtc291cmMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDA0NC1saWJnY2MtQWRkLWtub2ItdG8tdXNlLWxkYmwtMTI4LW9uLXBwYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDQ1LUxpbmstbGliZ2NjLXVzaW5nLUxERkxBR1Mtbm90LWp1c3QtU0hMSUJfTERGTEFHUy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDQ3LXN5bmMtZ2NjLXN0ZGRlZi5oLXdpdGgtbXVzbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDQ4LWdjYy1FbmFibGUtc3RhdGljLVBJRS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtc2VnbWVudGF0aW9uLWZhdWx0LXByZWNvbXBpbGVkLWhkci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDUwLVJJU0MtVi1IYW5kbGUtbm9uLWxlZ2l0aW1hdGUtYWRkcmVzcy1pbi1yaXNjdl9sZWdpdGkucGF0Y2ggXAorICAgICAgICAgICAke0JBQ0tQT1JUU30gXAorIgorQkFDS1BPUlRTID0gIlwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gImJlMmRhMjE2ODBmMjc2MjRmM2E4NzA1NWM0YmE1YWYyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjgzMmNhNmFlMDQ2MzZhZGJiNDMwZTg2NWExNDUxYWRmNjk3OWFiNDRjYTFjODM3NGY2MWZiYTY1NjQ1Y2UxNWMiCisKK1MgPSAiJHtUTVBESVJ9L3dvcmstc2hhcmVkL2djYy0ke1BWfS0ke1BSfS9nY2MtJHtQVn0iCisjUyA9ICIke1RNUERJUn0vd29yay1zaGFyZWQvZ2NjLSR7UFZ9LSR7UFJ9L2dpdCIKK0IgPSAiJHtXT1JLRElSfS9nY2MtJHtQVn0vYnVpbGQuJHtIT1NUX1NZU30uJHtUQVJHRVRfU1lTfSIKKworIyBMYW5ndWFnZSBPdmVycmlkZXMKK0ZPUlRSQU4gPSAiIgorSkFWQSA9ICIiCisKK0xUTyA9ICItLWVuYWJsZS1sdG8iCisKK0VYVFJBX09FQ09ORl9CQVNFID0gIlwKKyAgICAke0xUT30gXAorICAgIC0tZW5hYmxlLWxpYnNzcCBcCisgICAgLS1lbmFibGUtbGliaXRtIFwKKyAgICAtLWRpc2FibGUtYm9vdHN0cmFwIFwKKyAgICAtLWRpc2FibGUtbGlibXVkZmxhcCBcCisgICAgLS13aXRoLXN5c3RlbS16bGliIFwKKyAgICAtLXdpdGgtbGlua2VyLWhhc2gtc3R5bGU9JHtMSU5LRVJfSEFTSF9TVFlMRX0gXAorICAgIC0tZW5hYmxlLWxpbmtlci1idWlsZC1pZCBcCisgICAgLS13aXRoLXBwbD1ubyBcCisgICAgLS13aXRoLWNsb29nPW5vIFwKKyAgICAtLWVuYWJsZS1jaGVja2luZz1yZWxlYXNlIFwKKyAgICAtLWVuYWJsZS1jaGVhZGVycz1jX2dsb2JhbCBcCisgICAgLS13aXRob3V0LWlzbCBcCisiCisKK0VYVFJBX09FQ09ORl9JTklUSUFMID0gIlwKKyAgICAtLWRpc2FibGUtbGlibXVkZmxhcCBcCisgICAgLS1kaXNhYmxlLWxpYmdvbXAgXAorICAgIC0tZGlzYWJsZS1saWJpdG0gXAorICAgIC0tZGlzYWJsZS1saWJxdWFkbWF0aCBcCisgICAgLS13aXRoLXN5c3RlbS16bGliIFwKKyAgICAtLWRpc2FibGUtbHRvIFwKKyAgICAtLWRpc2FibGUtcGx1Z2luIFwKKyAgICAtLWVuYWJsZS1kZWNpbWFsLWZsb2F0PW5vIFwKKyAgICAtLXdpdGhvdXQtaXNsIFwKKyAgICBnY2NfY3ZfbGliY19wcm92aWRlc19zc3A9eWVzIFwKKyIKKworRVhUUkFfT0VDT05GX1BBVEhTID0gIlwKKyAgICAtLXdpdGgtZ3h4LWluY2x1ZGUtZGlyPS9ub3QvZXhpc3R7dGFyZ2V0X2luY2x1ZGVkaXJ9L2MrKy8ke0JJTlZ9IFwKKyAgICAtLXdpdGgtc3lzcm9vdD0vbm90L2V4aXN0IFwKKyAgICAtLXdpdGgtYnVpbGQtc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0gXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDAxLWdjYy00LjMuMS1BUkNIX0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMDEtZ2NjLTQuMy4xLUFSQ0hfRkxBR1NfRk9SX1RBUkdFVC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYWYxYzc0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDAxLWdjYy00LjMuMS1BUkNIX0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2gKQEAgLTAsMCArMSw0MiBAQAorRnJvbSAyZmNmMWUyM2VmNGIyYTVjOTM1MjZmMTIyMTJhYTg5MjU5NTI2MWY2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDg6Mzc6MTEgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAwMS80N10gZ2NjLTQuMy4xOiBBUkNIX0ZMQUdTX0ZPUl9UQVJHRVQKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KKy0tLQorIGNvbmZpZ3VyZSAgICB8IDIgKy0KKyBjb25maWd1cmUuYWMgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKK2luZGV4IDMyYTM4NjMzYWQ4Li5iNDc2MDk1MjA4NSAxMDA3NTUKKy0tLSBhL2NvbmZpZ3VyZQorKysrIGIvY29uZmlndXJlCitAQCAtNzQ3Miw3ICs3NDcyLDcgQEAgZmkKKyAjIGZvciB0YXJnZXRfYWxpYXMgYW5kIGdjYyBkb2Vzbid0IG1hbmFnZSBpdCBjb25zaXN0ZW50bHkuCisgdGFyZ2V0X2NvbmZpZ2FyZ3M9Ii0tY2FjaGUtZmlsZT0uL2NvbmZpZy5jYWNoZSAke3RhcmdldF9jb25maWdhcmdzfSIKKyAKKy1GTEFHU19GT1JfVEFSR0VUPQorK0ZMQUdTX0ZPUl9UQVJHRVQ9IiRBUkNIX0ZMQUdTX0ZPUl9UQVJHRVQiCisgY2FzZSAiICR0YXJnZXRfY29uZmlnZGlycyAiIGluCisgICoiIG5ld2xpYiAiKikKKyAgIGNhc2UgIiAkdGFyZ2V0X2NvbmZpZ2FyZ3MgIiBpbgorZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggMTIzNzc0OTkyOTUuLjE3NmViYjkyMWVkIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0zMDY1LDcgKzMwNjUsNyBAQCBmaQorICMgZm9yIHRhcmdldF9hbGlhcyBhbmQgZ2NjIGRvZXNuJ3QgbWFuYWdlIGl0IGNvbnNpc3RlbnRseS4KKyB0YXJnZXRfY29uZmlnYXJncz0iLS1jYWNoZS1maWxlPS4vY29uZmlnLmNhY2hlICR7dGFyZ2V0X2NvbmZpZ2FyZ3N9IgorIAorLUZMQUdTX0ZPUl9UQVJHRVQ9CisrRkxBR1NfRk9SX1RBUkdFVD0iJEFSQ0hfRkxBR1NfRk9SX1RBUkdFVCIKKyBjYXNlICIgJHRhcmdldF9jb25maWdkaXJzICIgaW4KKyAgKiIgbmV3bGliICIqKQorICAgY2FzZSAiICR0YXJnZXRfY29uZmlnYXJncyAiIGluCistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMDgtYzk5LXNucHJpbnRmLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDA4LWM5OS1zbnByaW50Zi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYmQ1NjJiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDA4LWM5OS1zbnByaW50Zi5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIDczMmYxMGVlYWQ2MTgzMGE4YWVlMWJmMzhjY2U4OTJkYTI1YzM1YjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwODo0OTowMyArMDQwMAorU3ViamVjdDogW1BBVENIIDA4LzQ3XSBjOTktc25wcmludGYKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBsaWJzdGRjKystdjMvaW5jbHVkZS9jX3N0ZC9jc3RkaW8gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9saWJzdGRjKystdjMvaW5jbHVkZS9jX3N0ZC9jc3RkaW8gYi9saWJzdGRjKystdjMvaW5jbHVkZS9jX3N0ZC9jc3RkaW8KK2luZGV4IDQzOTY5ODkyYWEyLi4xMjE0ODQ1NzkwOSAxMDA2NDQKKy0tLSBhL2xpYnN0ZGMrKy12My9pbmNsdWRlL2Nfc3RkL2NzdGRpbworKysrIGIvbGlic3RkYysrLXYzL2luY2x1ZGUvY19zdGQvY3N0ZGlvCitAQCAtMTQ0LDcgKzE0NCw3IEBAIG5hbWVzcGFjZSBzdGQKKyAgIHVzaW5nIDo6dnNwcmludGY7CisgfSAvLyBuYW1lc3BhY2Ugc3RkCisgCistI2lmIF9HTElCQ1hYX1VTRV9DOTlfU1RESU8KKysjaWYgX0dMSUJDWFhfVVNFX0M5OV9TVERJTyB8fCBkZWZpbmVkKF9fVUNMSUJDX18pCisgCisgI3VuZGVmIHNucHJpbnRmCisgI3VuZGVmIHZmc2NhbmYKKy0tIAorMi4xMi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAwOS1nY2MtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAwOS1nY2MtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTEzZWQ2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDA5LWdjYy1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzLnBhdGNoCkBAIC0wLDAgKzEsMTkyIEBACitGcm9tIDQ3OTFhMGEwZjQ1OTVkMGExODk3NGY0ZTg1YTc1OWEwNzg5OTQzZGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwODo1OTowMCArMDQwMAorU3ViamVjdDogW1BBVENIIDA5LzQ3XSBnY2M6IHBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtkaXN0cmlidXRpb246IGNvZGVzb3VyY2VyeV0KKy0tLQorIGdjYy9jb21tb24ub3B0ICAgICAgfCAgNCArKysrCisgZ2NjL2NvbmZpZy5pbiAgICAgICB8ICA2ICsrKysrKworIGdjYy9jb25maWd1cmUgICAgICAgfCAxNiArKysrKysrKysrKysrKysrCisgZ2NjL2NvbmZpZ3VyZS5hYyAgICB8IDEwICsrKysrKysrKysKKyBnY2MvZG9jL2ludm9rZS50ZXhpIHwgIDkgKysrKysrKysrCisgZ2NjL2djYy5jICAgICAgICAgICB8ICAyICsrCisgZ2NjL2luY3BhdGguYyAgICAgICB8IDE5ICsrKysrKysrKysrKysrKysrKysKKyA3IGZpbGVzIGNoYW5nZWQsIDY2IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2djYy9jb21tb24ub3B0IGIvZ2NjL2NvbW1vbi5vcHQKK2luZGV4IGE1YzNhZWFhMzM2Li5mMDJmZTY2MzY3ZSAxMDA2NDQKKy0tLSBhL2djYy9jb21tb24ub3B0CisrKysgYi9nY2MvY29tbW9uLm9wdAorQEAgLTY2Miw2ICs2NjIsMTAgQEAgV3JldHVybi1sb2NhbC1hZGRyCisgQ29tbW9uIFZhcih3YXJuX3JldHVybl9sb2NhbF9hZGRyKSBJbml0KDEpIFdhcm5pbmcKKyBXYXJuIGFib3V0IHJldHVybmluZyBhIHBvaW50ZXIvcmVmZXJlbmNlIHRvIGEgbG9jYWwgb3IgdGVtcG9yYXJ5IHZhcmlhYmxlLgorIAorK1dwb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCisrQ29tbW9uIFZhcihmbGFnX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMpIEluaXQoMSkgV2FybmluZworK1dhcm4gZm9yIC1JIGFuZCAtTCBvcHRpb25zIHVzaW5nIHN5c3RlbSBkaXJlY3RvcmllcyBpZiBjcm9zcyBjb21waWxpbmcKKysKKyBXc2hhZG93CisgQ29tbW9uIFZhcih3YXJuX3NoYWRvdykgV2FybmluZworIFdhcm4gd2hlbiBvbmUgdmFyaWFibGUgc2hhZG93cyBhbm90aGVyLiAgU2FtZSBhcyAtV3NoYWRvdz1nbG9iYWwuCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy5pbiBiL2djYy9jb25maWcuaW4KK2luZGV4IGJmMmFhN2IyZTdkLi5iMTIwMzk4N2UxNSAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcuaW4KKysrKyBiL2djYy9jb25maWcuaW4KK0BAIC0xOTQsNiArMTk0LDEyIEBACisgI2VuZGlmCisgCisgCisrLyogRGVmaW5lIHRvIHdhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGhlYWRlciBkaXJlY3RvcmllcyAqLworKyNpZm5kZWYgVVNFRF9GT1JfVEFSR0VUCisrI3VuZGVmIEVOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTCisrI2VuZGlmCisrCisrCisgLyogRGVmaW5lIGlmIHlvdSB3YW50IGFsbCBvcGVyYXRpb25zIG9uIFJUTCAodGhlIGJhc2ljIGRhdGEgc3RydWN0dXJlIG9mIHRoZQorICAgIG9wdGltaXplciBhbmQgYmFjayBlbmQpIHRvIGJlIGNoZWNrZWQgZm9yIGR5bmFtaWMgdHlwZSBzYWZldHkgYXQgcnVudGltZS4KKyAgICBUaGlzIGlzIHF1aXRlIGV4cGVuc2l2ZS4gKi8KK2RpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlIGIvZ2NjL2NvbmZpZ3VyZQoraW5kZXggYzgyM2ZmZTYyOTAuLjQ4OThmMDRmYTZiIDEwMDc1NQorLS0tIGEvZ2NjL2NvbmZpZ3VyZQorKysrIGIvZ2NjL2NvbmZpZ3VyZQorQEAgLTk0OSw2ICs5NDksNyBAQCB3aXRoX3N5c3RlbV96bGliCisgZW5hYmxlX21haW50YWluZXJfbW9kZQorIGVuYWJsZV9saW5rX211dGV4CisgZW5hYmxlX3ZlcnNpb25fc3BlY2lmaWNfcnVudGltZV9saWJzCisrZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMKKyBlbmFibGVfcGx1Z2luCisgZW5hYmxlX2hvc3Rfc2hhcmVkCisgZW5hYmxlX2xpYnF1YWRtYXRoX3N1cHBvcnQKK0BAIC0xNjkxLDYgKzE2OTIsOCBAQCBPcHRpb25hbCBGZWF0dXJlczoKKyAgIC0tZW5hYmxlLXZlcnNpb24tc3BlY2lmaWMtcnVudGltZS1saWJzCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZ5IHRoYXQgcnVudGltZSBsaWJyYXJpZXMgc2hvdWxkIGJlIGluc3RhbGxlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYSBjb21waWxlci1zcGVjaWZpYyBkaXJlY3RvcnkKKysgIC0tZW5hYmxlLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKKysgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGhlYWRlciBkaXJlY3RvcmllcworICAgLS1lbmFibGUtcGx1Z2luICAgICAgICAgZW5hYmxlIHBsdWdpbiBzdXBwb3J0CisgICAtLWVuYWJsZS1ob3N0LXNoYXJlZCAgICBidWlsZCBob3N0IGNvZGUgYXMgc2hhcmVkIGxpYnJhcmllcworICAgLS1kaXNhYmxlLWxpYnF1YWRtYXRoLXN1cHBvcnQKK0BAIC0yOTM0Nyw2ICsyOTM1MCwxOSBAQCBpZiB0ZXN0ICIke2VuYWJsZV92ZXJzaW9uX3NwZWNpZmljX3J1bnRpbWVfbGlicytzZXR9IiA9IHNldDsgdGhlbiA6CisgZmkKKyAKKyAKKysjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcyB3YXMgZ2l2ZW4uCisraWYgdGVzdCAiJHtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcytzZXR9IiA9IHNldDsgdGhlbiA6CisrICBlbmFibGV2YWw9JGVuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzOworK2Vsc2UKKysgIGVuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzPW5vCisrZmkKKysKKytpZiB0ZXN0ICJ4JHtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllc30iID0gInh5ZXMiOyB0aGVuCisrCisrJGFzX2VjaG8gIiNkZWZpbmUgRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMgMSIgPj5jb25mZGVmcy5oCisrCisrZmkKKysKKyAjIFN1YnN0aXR1dGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMKKyAKKyAKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYworaW5kZXggYWNmZTk3OTczODkuLjlkYzFkYzdmYzk2IDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZ3VyZS5hYworKysrIGIvZ2NjL2NvbmZpZ3VyZS5hYworQEAgLTYxMDEsNiArNjEwMSwxNiBAQCBBQ19BUkdfRU5BQkxFKHZlcnNpb24tc3BlY2lmaWMtcnVudGltZS1saWJzLAorICAgICAgICAgICAgICAgICBbc3BlY2lmeSB0aGF0IHJ1bnRpbWUgbGlicmFyaWVzIHNob3VsZCBiZQorICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkIGluIGEgY29tcGlsZXItc3BlY2lmaWMgZGlyZWN0b3J5XSldKQorIAorK0FDX0FSR19FTkFCTEUoW3BvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXNdLAorKyAgICAgICAgICAgICBBU19IRUxQX1NUUklORyhbLS1lbmFibGUtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllc10sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt3YXJuIGZvciB1c2Ugb2YgbmF0aXZlIHN5c3RlbSBoZWFkZXIgZGlyZWN0b3JpZXNdKSwsCisrICAgICAgICAgICAgIFtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcz1ub10pCisraWYgdGVzdCAieCR7ZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXN9IiA9ICJ4eWVzIjsgdGhlbgorKyAgQUNfREVGSU5FKFtFTkFCTEVfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFU10sCisrICAgICAgICAgICBbMV0sCisrICAgICAgICAgICBbRGVmaW5lIHRvIHdhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGhlYWRlciBkaXJlY3Rvcmllc10pCisrZmkKKysKKyAjIFN1YnN0aXR1dGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMKKyBBQ19TVUJTVChzdWJkaXJzKQorIEFDX1NVQlNUKHNyY2RpcikKK2RpZmYgLS1naXQgYS9nY2MvZG9jL2ludm9rZS50ZXhpIGIvZ2NjL2RvYy9pbnZva2UudGV4aQoraW5kZXggNjhhNTU4ZTk5OTIuLjA2MGNkNzE2OWM2IDEwMDY0NAorLS0tIGEvZ2NjL2RvYy9pbnZva2UudGV4aQorKysrIGIvZ2NjL2RvYy9pbnZva2UudGV4aQorQEAgLTI5OCw2ICsyOTgsNyBAQCBPYmplY3RpdmUtQyBhbmQgT2JqZWN0aXZlLUMrKyBEaWFsZWN0c30uCisgLVdwYWNrZWQgIC1XcGFja2VkLWJpdGZpZWxkLWNvbXBhdCAgLVdwYWRkZWQgQGdvbAorIC1XcGFyZW50aGVzZXMgIC1Xbm8tcGVkYW50aWMtbXMtZm9ybWF0IEBnb2wKKyAtV3BsYWNlbWVudC1uZXcgIC1XcGxhY2VtZW50LW5ldz1AdmFye259IEBnb2wKKystV25vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMgQGdvbAorIC1XcG9pbnRlci1hcml0aCAgLVdwb2ludGVyLWNvbXBhcmUgIC1Xbm8tcG9pbnRlci10by1pbnQtY2FzdCBAZ29sCisgLVduby1wcmFnbWFzICAtV3JlZHVuZGFudC1kZWNscyAgLVdyZXN0cmljdCAgLVduby1yZXR1cm4tbG9jYWwtYWRkciBAZ29sCisgLVdyZXR1cm4tdHlwZSAgLVdzZXF1ZW5jZS1wb2ludCAgLVdzaGFkb3cgIC1Xbm8tc2hhZG93LWl2YXIgQGdvbAorQEAgLTUzOTUsNiArNTM5NiwxNCBAQCBtYWRlIHVwIG9mIGRhdGEgb25seSBhbmQgdGh1cyByZXF1aXJlcyBubyBzcGVjaWFsIHRyZWF0bWVudC4gIEJ1dCwgZm9yCisgbW9zdCB0YXJnZXRzLCBpdCBpcyBtYWRlIHVwIG9mIGNvZGUgYW5kIHRodXMgcmVxdWlyZXMgdGhlIHN0YWNrIHRvIGJlCisgbWFkZSBleGVjdXRhYmxlIGluIG9yZGVyIGZvciB0aGUgcHJvZ3JhbSB0byB3b3JrIHByb3Blcmx5LgorIAorK0BpdGVtIC1Xbm8tcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcworK0BvcGluZGV4IFduby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCisrRG8gbm90IHdhcm4gZm9yIEBvcHRpb257LUl9IG9yIEBvcHRpb257LUx9IG9wdGlvbnMgdXNpbmcgc3lzdGVtCisrZGlyZWN0b3JpZXMgc3VjaCBhcyBAZmlsZXsvdXNyL2luY2x1ZGV9IHdoZW4gY3Jvc3MgY29tcGlsaW5nLiAgVGhpcworK29wdGlvbiBpcyBpbnRlbmRlZCBmb3IgdXNlIGluIGNocm9vdCBlbnZpcm9ubWVudHMgd2hlbiBzdWNoCisrZGlyZWN0b3JpZXMgY29udGFpbiB0aGUgY29ycmVjdCBoZWFkZXJzIGFuZCBsaWJyYXJpZXMgZm9yIHRoZSB0YXJnZXQKKytzeXN0ZW0gcmF0aGVyIHRoYW4gdGhlIGhvc3QuCisrCisgQGl0ZW0gLVdmbG9hdC1lcXVhbAorIEBvcGluZGV4IFdmbG9hdC1lcXVhbAorIEBvcGluZGV4IFduby1mbG9hdC1lcXVhbAorZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYworaW5kZXggYzQ4MTc4Zi4uZjYzZDUzZCAxMDA2NDQKKy0tLSBhL2djYy9nY2MuYworKysrIGIvZ2NjL2djYy5jCitAQCAtMTAyOSw2ICsxMDI5LDggQEAgcHJvcGVyIHBvc2l0aW9uIGFtb25nIHRoZSBvdGhlciBvdXRwdXQgZmlsZXMuICAqLworICAgICIle2Z1c2UtbGQ9KjotZnVzZS1sZD0lKn0gIiBMSU5LX0NPTVBSRVNTX0RFQlVHX1NQRUMgXAorICAgICIlWCAle28qfSAle2UqfSAle059ICV7bn0gJXtyfVwKKyAgICAgJXtzfSAle3R9ICV7dSp9ICV7en0gJXtafSAleyFub3N0ZGxpYjoleyFub3N0YXJ0ZmlsZXM6JVN9fSBcCisrICAgICV7V25vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXM6LS1uby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzfSBcCisrICAgICV7V2Vycm9yPXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXM6LS1lcnJvci1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzfSBcCisgICAgICV7c3RhdGljfG5vLXBpZTp9ICV7TCp9ICUobWZ3cmFwKSAlKGxpbmtfbGliZ2NjKSAiIFwKKyAgICAgVlRBQkxFX1ZFUklGSUNBVElPTl9TUEVDICIgIiBTQU5JVElaRVJfRUFSTFlfU1BFQyAiICVvICIgQ0hLUF9TUEVDICIgXAorICAgICAle2ZvcGVuYWNjfGZvcGVubXB8JTpndCgle2Z0cmVlLXBhcmFsbGVsaXplLWxvb3BzPSo6JSp9IDEpOlwKK2RpZmYgLS1naXQgYS9nY2MvaW5jcGF0aC5jIGIvZ2NjL2luY3BhdGguYworaW5kZXggOThmZTVlYzlhYjMuLmY5MGU3NGRiZDczIDEwMDY0NAorLS0tIGEvZ2NjL2luY3BhdGguYworKysrIGIvZ2NjL2luY3BhdGguYworQEAgLTI2LDYgKzI2LDcgQEAKKyAjaW5jbHVkZSAiaW50bC5oIgorICNpbmNsdWRlICJpbmNwYXRoLmgiCisgI2luY2x1ZGUgImNwcGRlZmF1bHQuaCIKKysjaW5jbHVkZSAiZGlhZ25vc3RpYy1jb3JlLmgiCisgCisgLyogTWljcm9zb2Z0IFdpbmRvd3MgZG9lcyBub3QgbmF0aXZlbHkgc3VwcG9ydCBpbm9kZXMuCisgICAgVk1TIGhhcyBub24tbnVtZXJpYyBpbm9kZXMuICAqLworQEAgLTM4Miw2ICszODMsMjQgQEAgbWVyZ2VfaW5jbHVkZV9jaGFpbnMgKGNvbnN0IGNoYXIgKnN5c3Jvb3QsIGNwcF9yZWFkZXIgKnBmaWxlLCBpbnQgdmVyYm9zZSkKKyAJfQorICAgICAgIGZwcmludGYgKHN0ZGVyciwgXygiRW5kIG9mIHNlYXJjaCBsaXN0LlxuIikpOworICAgICB9CisrCisrI2lmZGVmIEVOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTCisrICBpZiAoZmxhZ19wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzKQorKyAgICB7CisrICAgICAgIHN0cnVjdCBjcHBfZGlyICpwOworKworKyAgICAgICBmb3IgKHAgPSBoZWFkc1tRVU9URV07IHA7IHAgPSBwLT5uZXh0KQorKyAgICAgICAgIHsKKysgICAgICAgICAgaWYgKCghc3RybmNtcCAocC0+bmFtZSwgIi91c3IvaW5jbHVkZSIsIDEyKSkKKysgICAgICAgICAgICAgIHx8ICghc3RybmNtcCAocC0+bmFtZSwgIi91c3IvbG9jYWwvaW5jbHVkZSIsIDE4KSkKKysgICAgICAgICAgICAgIHx8ICghc3RybmNtcCAocC0+bmFtZSwgIi91c3IvWDExUjYvaW5jbHVkZSIsIDE4KSkpCisrICAgICAgICAgICAgd2FybmluZyAoT1BUX1dwb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzLAorKyAgICAgICAgICAgICAgICAgICAgICJpbmNsdWRlIGxvY2F0aW9uIFwiJXNcIiBpcyB1bnNhZmUgZm9yICIKKysgICAgICAgICAgICAgICAgICAgICAiY3Jvc3MtY29tcGlsYXRpb24iLAorKyAgICAgICAgICAgICAgICAgICAgIHAtPm5hbWUpOworKyAgICAgICAgIH0KKysgICAgfQorKyNlbmRpZgorIH0KKyAKKyAvKiBVc2UgZ2l2ZW4gLUkgcGF0aHMgZm9yICNpbmNsdWRlICIuLi4iIGJ1dCBub3QgI2luY2x1ZGUgPC4uLj4sIGFuZAorLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDEwLWdjYy1wb2lzb24tZGlyLWV4dGVuZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAxMC1nY2MtcG9pc29uLWRpci1leHRlbmQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGUwNmFhMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAxMC1nY2MtcG9pc29uLWRpci1leHRlbmQucGF0Y2gKQEAgLTAsMCArMSwzOSBAQAorRnJvbSBlNzRlZjg0YWQ2MDliM2I2YTVjMzdkMjA3ZmZjM2M2ZTcwZDFmMDI1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MDA6MzQgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAxMC80N10gZ2NjLXBvaXNvbi1kaXItZXh0ZW5kCisKK0FkZCAvc3cvaW5jbHVkZSBhbmQgL29wdC9pbmNsdWRlIGJhc2VkIG9uIHRoZSBvcmlnaW5hbAoremVja2Utbm8taG9zdC1pbmNsdWRlcy5wYXRjaCBwYXRjaC4gIFRoZSBvcmlnaW5hbCBwYXRjaCBjaGVja2VkIGZvcgorL3Vzci9pbmNsdWRlLCAvc3cvaW5jbHVkZSBhbmQgL29wdC9pbmNsdWRlIGFuZCB0aGVuIHRyaWdnZXJlZCBhIGZhaWx1cmUgYW5kCithYm9ydGVkLgorCitJbnN0ZWFkLCB3ZSBhZGQgdGhlIHR3byBtaXNzaW5nIGl0ZW1zIHRvIHRoZSBjdXJyZW50IHNjYW4uICBJZiB0aGUgdXNlcgord2FudHMgdGhpcyB0byBiZSBhIGZhaWx1cmUsIHRoZXkgY2FuIGFkZCAiLVdlcnJvcj1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzIi4KKworU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBnY2MvaW5jcGF0aC5jIHwgNCArKystCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2luY3BhdGguYyBiL2djYy9pbmNwYXRoLmMKK2luZGV4IGY5MGU3NGRiZDczLi5jNTgzZWU1MDYxZCAxMDA2NDQKKy0tLSBhL2djYy9pbmNwYXRoLmMKKysrKyBiL2djYy9pbmNwYXRoLmMKK0BAIC0zOTMsNyArMzkzLDkgQEAgbWVyZ2VfaW5jbHVkZV9jaGFpbnMgKGNvbnN0IGNoYXIgKnN5c3Jvb3QsIGNwcF9yZWFkZXIgKnBmaWxlLCBpbnQgdmVyYm9zZSkKKyAgICAgICAgICB7CisgICAgICAgICAgIGlmICgoIXN0cm5jbXAgKHAtPm5hbWUsICIvdXNyL2luY2x1ZGUiLCAxMikpCisgICAgICAgICAgICAgICB8fCAoIXN0cm5jbXAgKHAtPm5hbWUsICIvdXNyL2xvY2FsL2luY2x1ZGUiLCAxOCkpCistICAgICAgICAgICAgICB8fCAoIXN0cm5jbXAgKHAtPm5hbWUsICIvdXNyL1gxMVI2L2luY2x1ZGUiLCAxOCkpKQorKyAgICAgICAgICAgICAgfHwgKCFzdHJuY21wIChwLT5uYW1lLCAiL3Vzci9YMTFSNi9pbmNsdWRlIiwgMTgpKQorKyAgICAgICAgICAgICAgfHwgKCFzdHJuY21wIChwLT5uYW1lLCAiL3N3L2luY2x1ZGUiLCAxMSkpCisrICAgICAgICAgICAgICB8fCAoIXN0cm5jbXAgKHAtPm5hbWUsICIvb3B0L2luY2x1ZGUiLCAxMikpKQorICAgICAgICAgICAgIHdhcm5pbmcgKE9QVF9XcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcywKKyAgICAgICAgICAgICAgICAgICAgICAiaW5jbHVkZSBsb2NhdGlvbiBcIiVzXCIgaXMgdW5zYWZlIGZvciAiCisgICAgICAgICAgICAgICAgICAgICAgImNyb3NzLWNvbXBpbGF0aW9uIiwKKy0tIAorMi4xMi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAxMS1nY2MtNC4zLjMtU1lTUk9PVF9DRkxBR1NfRk9SX1RBUkdFVC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAxMS1nY2MtNC4zLjMtU1lTUk9PVF9DRkxBR1NfRk9SX1RBUkdFVC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMzlmZjFlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDExLWdjYy00LjMuMy1TWVNST09UX0NGTEFHU19GT1JfVEFSR0VULnBhdGNoCkBAIC0wLDAgKzEsNzMgQEAKK0Zyb20gYTQxZDNhNTNhNGUzMTNjMjA4MDIzMzBkNmI1Yzc1MzU4YTRlZDg4MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjA4OjMxICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMTEvNDddIGdjYy00LjMuMzogU1lTUk9PVF9DRkxBR1NfRk9SX1RBUkdFVAorCitCZWZvcmUgY29tbWl0dGluZywgSSBub3RpY2VkIHRoYXQgUFIvMzIxNjEgd2FzIG1hcmtlZCBhcyBhIGR1cCBvZiBQUi8zMjAwOSwgYnV0IG15IHByZXZpb3VzIHBhdGNoIGRpZCBub3QgZml4IGl0LgorCitUaGlzIGFsdGVybmF0aXZlIHBhdGNoIGlzIGJldHRlciBiZWNhdXNlIGl0IGxldHMgeW91IGp1c3QgdXNlIENGTEFHU19GT1JfVEFSR0VUIHRvIHNldCB0aGUgY29tcGlsYXRpb24gZmxhZ3MgZm9yIGxpYmdjYy4gU2luY2UgYm9vdHN0cmFwcGVkIHRhcmdldCBsaWJyYXJpZXMgYXJlIG5ldmVyIGNvbXBpbGVkIHdpdGggdGhlIG5hdGl2ZSBjb21waWxlciwgaXQgbWFrZXMgbGl0dGxlIHNlbnNlIHRvIHVzZSBkaWZmZXJlbnQgZmxhZ3MgZm9yIHN0YWdlMSBhbmQgbGF0ZXIgc3RhZ2VzLiBBbmQgaXQgYWxzbyBtYWtlcyBsaXR0bGUgc2Vuc2UgdG8gdXNlIGEgZGlmZmVyZW50IHZhcmlhYmxlIHRoYW4gQ0ZMQUdTX0ZPUl9UQVJHRVQuCisKK090aGVyIGNoYW5nZXMgSSBoYWQgdG8gZG8gaW5jbHVkZToKKworLSBtb3ZpbmcgdGhlIGNyZWF0aW9uIG9mIGRlZmF1bHQgQ0ZMQUdTX0ZPUl9UQVJHRVQgZnJvbSBNYWtlZmlsZS5hbSB0byBjb25maWd1cmUuYWMsIGJlY2F1c2Ugb3RoZXJ3aXNlIHRoZSBCT09UX0NGTEFHUyBhcmUgc3Vic3RpdHV0ZWQgaW50byBDRkxBR1NfRk9SX1RBUkdFVCAod2hpY2ggaXMgIi1PMiAtZyAkKENGTEFHUykiKSB2aWEgJChDRkxBR1MpLiBJdCBpcyBhbHNvIGNsZWFuZXIgdGhpcyB3YXkgdGhvdWdoLgorCistIHBhc3NpbmcgdGhlIHJpZ2h0IENGTEFHUyB0byBjb25maWd1cmUgc2NyaXB0cyBhcyBleHBvcnRlZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMKKworSSBhbHNvIHN0b3BwZWQgcGFzc2luZyBMSUJDRkxBR1MgdG8gY29uZmlndXJlIHNjcmlwdHMgc2luY2UgdGhleSBhcmUgdW51c2VkIGluIHRoZSB3aG9sZSBzcmMgdHJlZS4gQW5kIEkgdXBkYXRlZCB0aGUgZG9jdW1lbnRhdGlvbiBhcyBILVAgcmVtaW5kZWQgbWUgdG8gZG8uCisKK0Jvb3RzdHJhcHBlZC9yZWd0ZXN0ZWQgaTY4Ni1wYy1saW51eC1nbnUsIHdpbGwgY29tbWl0IHRvIDQuNCBzaG9ydGx5LiBPayBmb3IgNC4zPworCitTaWduZWQtb2ZmLWJ5OiBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBjb25maWd1cmUgfCAzMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCAzMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKK2luZGV4IGI0NzYwOTUyMDg1Li43MmE4YmE5NGM0ZSAxMDA3NTUKKy0tLSBhL2NvbmZpZ3VyZQorKysrIGIvY29uZmlndXJlCitAQCAtNjczNiw2ICs2NzM2LDM4IEBAIGZpCisgCisgCisgCisrIyBEdXJpbmcgZ2NjIGJvb3RzdHJhcCwgaWYgd2UgdXNlIHNvbWUgcmFuZG9tIGNjIGZvciBzdGFnZTEgdGhlbiBDRkxBR1MKKysjIG1pZ2h0IGJlIGVtcHR5IG9yICItZyIuICBXZSBkb24ndCByZXF1aXJlIGEgQysrIGNvbXBpbGVyLCBzbyBDWFhGTEFHUworKyMgbWlnaHQgYWxzbyBiZSBlbXB0eSAob3IgIi1nIiwgaWYgYSBub24tR0NDIEMrKyBjb21waWxlciBpcyBpbiB0aGUgcGF0aCkuCisrIyBXZSB3YW50IHRvIGVuc3VyZSB0aGF0IFRBUkdFVCBsaWJyYXJpZXMgKHdoaWNoIHdlIGtub3cgYXJlIGJ1aWx0IHdpdGgKKysjIGdjYykgYXJlIGJ1aWx0IHdpdGggIi1PMiAtZyIsIHNvIGluY2x1ZGUgdGhvc2Ugb3B0aW9ucyB3aGVuIHNldHRpbmcKKysjIENGTEFHU19GT1JfVEFSR0VUIGFuZCBDWFhGTEFHU19GT1JfVEFSR0VULgorK2lmIHRlc3QgIngkQ0ZMQUdTX0ZPUl9UQVJHRVQiID0geDsgdGhlbgorKyAgQ0ZMQUdTX0ZPUl9UQVJHRVQ9JENGTEFHUworKyAgY2FzZSAiICRDRkxBR1MgIiBpbgorKyAgICAqIiAtTzIgIiopIDs7CisrICAgICopIENGTEFHU19GT1JfVEFSR0VUPSItTzIgJENGTEFHUyIgOzsKKysgIGVzYWMKKysgIGNhc2UgIiAkQ0ZMQUdTICIgaW4KKysgICAgKiIgLWcgIiogfCAqIiAtZzMgIiopIDs7CisrICAgICopIENGTEFHU19GT1JfVEFSR0VUPSItZyAkQ0ZMQUdTIiA7OworKyAgZXNhYworK2ZpCisrCisrCisraWYgdGVzdCAieCRDWFhGTEFHU19GT1JfVEFSR0VUIiA9IHg7IHRoZW4KKysgIENYWEZMQUdTX0ZPUl9UQVJHRVQ9JENYWEZMQUdTCisrICBjYXNlICIgJENYWEZMQUdTICIgaW4KKysgICAgKiIgLU8yICIqKSA7OworKyAgICAqKSBDWFhGTEFHU19GT1JfVEFSR0VUPSItTzIgJENYWEZMQUdTIiA7OworKyAgZXNhYworKyAgY2FzZSAiICRDWFhGTEFHUyAiIGluCisrICAgICoiIC1nICIqIHwgKiIgLWczICIqKSA7OworKyAgICAqKSBDWFhGTEFHU19GT1JfVEFSR0VUPSItZyAkQ1hYRkxBR1MiIDs7CisrICBlc2FjCisrZmkKKysKKysKKyAjIEhhbmRsZSAtLXdpdGgtaGVhZGVycz1YWFguICBJZiB0aGUgdmFsdWUgaXMgbm90ICJ5ZXMiLCB0aGUgY29udGVudHMgb2YKKyAjIHRoZSBuYW1lZCBkaXJlY3RvcnkgYXJlIGNvcGllZCB0byAkKHRvb2xkaXIpL3N5cy1pbmNsdWRlLgorIGlmIHRlc3QgeCIke3dpdGhfaGVhZGVyc30iICE9IHggJiYgdGVzdCB4IiR7d2l0aF9oZWFkZXJzfSIgIT0geG5vIDsgdGhlbgorLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDEyLTY0LWJpdC1tdWx0aWxpYi1oYWNrLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDEyLTY0LWJpdC1tdWx0aWxpYi1oYWNrLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzYjM5MTIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMTItNjQtYml0LW11bHRpbGliLWhhY2sucGF0Y2gKQEAgLTAsMCArMSw4NSBAQAorRnJvbSAzYWY5ZmJiZDE0ZTgzMjQyYWMyYWNiNTRiYmI0YmI3MjY4NDVmZDM0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MTA6MDYgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAxMi80N10gNjQtYml0IG11bHRpbGliIGhhY2suCisKK0dDQyBoYXMgaW50ZXJuYWwgbXVsdGlsaWIgaGFuZGxpbmcgY29kZSBidXQgaXQgYXNzdW1lcyBhIHZlcnkgc3BlY2lmaWMgcmlnaWQgZGlyZWN0b3J5CitsYXlvdXQuIFRoZSBidWlsZCBzeXN0ZW0gaW1wbGVtZW50YXRpb24gb2YgbXVsdGlsaWIgbGF5b3V0IGlzIHZlcnkgZ2VuZXJpYyBhbmQgYWxsb3dzCitjb21wbGV0ZSBjdXN0b21pc2F0aW9uIG9mIHRoZSBsaWJyYXJ5IGRpcmVjdG9yaWVzLgorCitUaGlzIHBhdGNoIGlzIGEgcGFydGlhbCBzb2x1dGlvbiB0byBhbGxvdyBhbnkgY3VzdG9tIGRpcmVjdG9yaWVzIHRvIGJlIHBhc3NlZCBpbnRvIGdjYworYW5kIGhhbmRsZWQgY29ycmVjdGx5LiBJdCBmb3JjZXMgZ2NjIHRvIHVzZSB0aGUgYmFzZV9saWJkaXIgKHdoaWNoIGlzIHRoZSBjdXJyZW50CitkaXJlY3RvcnksICIuIikuIFdlIG5lZWQgdG8gZG8gdGhpcyBmb3IgZWFjaCBtdWx0aWxpYiB0aGF0IGlzIGNvbmZpZ3VyZWQgYXMgd2UgZG9uJ3QKK2tub3cgd2hpY2ggY29tcGlsZXIgb3B0aW9ucyBtYXkgYmUgYmVpbmcgcGFzc2VkIGludG8gdGhlIGNvbXBpbGVyLiBTaW5jZSB3ZSBoYXZlIGEgY29tcGlsZXIKK3BlciBtdWxpdGxpYiBhdCB0aGlzIHBvaW50IHRoYXQgaXNuJ3QgYW4gaXNzdWUuCisKK1RoZSBvbmUgcHJvYmxlbSBpcyB0aGUgdGFyZ2V0IGNvbXBpbGVyIGlzIG9ubHkgZ29pbmcgdG8gd29yayBmb3IgdGhlIGRlZmF1bHQgbXVsdGxpbGliIGF0Cit0aGlzIHBvaW50LiBJZGVhbGx5IHdlJ2QgZmlndXJlIG91dCB3aGljaCBtdWx0aWxpYnMgd2VyZSBiZWluZyBlbmFibGVkIHdpdGggd2hpY2ggcGF0aHMKK2FuZCBiZSBhYmxlIHRvIHBhdGNoIHRoZXNlIGVudHJpZXMgd2l0aCBhIGNvbXBsZXRlIHNldCBvZiBjb3JyZWN0IHBhdGhzIGJ1dCB0aGlzIHdlCitkb24ndCBoYXZlIHN1Y2ggY29kZSBhdCB0aGlzIHBvaW50LiBUaGlzIGlzIHNvbWV0aGluZyB0aGUgdGFyZ2V0IGdjYyByZWNpcGUgc2hvdWxkIGRvCithbmQgb3ZlcnJpZGUgdGhlc2UgcGxhdGZvcm0gZGVmYXVsdHMgaW4gaXRzIGJ1aWxkIGNvbmZpZy4KKworUlAgMTUvOC8xMQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogRWx2aXMgRG93c29uIDxlbHZpcy5kb3dzb25AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIGdjYy9jb25maWcvaTM4Ni90LWxpbnV4NjQgICB8ICA2ICsrLS0tLQorIGdjYy9jb25maWcvbWlwcy90LWxpbnV4NjQgICB8IDEwICsrKy0tLS0tLS0KKyBnY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4NjQgfCAgNSArKy0tLQorIDMgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni90LWxpbnV4NjQgYi9nY2MvY29uZmlnL2kzODYvdC1saW51eDY0CitpbmRleCBlNDIyYzQ0MmRhZS4uY2M4ODVlMjQ0NTcgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL2kzODYvdC1saW51eDY0CisrKysgYi9nY2MvY29uZmlnL2kzODYvdC1saW51eDY0CitAQCAtMzIsNyArMzIsNSBAQAorICMKKyBjb21tYT0sCisgTVVMVElMSUJfT1BUSU9OUyAgICA9ICQoc3Vic3QgJChjb21tYSksLywkKFRNX01VTFRJTElCX0NPTkZJRykpCistTVVMVElMSUJfRElSTkFNRVMgICA9ICQocGF0c3Vic3QgbSUsICUsICQoc3Vic3QgLywgLCQoTVVMVElMSUJfT1BUSU9OUykpKQorLU1VTFRJTElCX09TRElSTkFNRVMgPSBtNjQ9Li4vbGliNjQkKGNhbGwgaWZfbXVsdGlhcmNoLDp4ODZfNjQtbGludXgtZ251KQorLU1VTFRJTElCX09TRElSTkFNRVMrPSBtMzI9JChpZiAkKHdpbGRjYXJkICQoc2hlbGwgZWNobyAkKFNZU1RFTV9IRUFERVJfRElSKSkvLi4vLi4vdXNyL2xpYjMyKSwuLi9saWIzMiwuLi9saWIpJChjYWxsIGlmX211bHRpYXJjaCw6aTM4Ni1saW51eC1nbnUpCistTVVMVElMSUJfT1NESVJOQU1FUys9IG14MzI9Li4vbGlieDMyJChjYWxsIGlmX211bHRpYXJjaCw6eDg2XzY0LWxpbnV4LWdudXgzMikKKytNVUxUSUxJQl9ESVJOQU1FUyA9IC4gLgorK01VTFRJTElCX09TRElSTkFNRVMgPSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKQorZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbWlwcy90LWxpbnV4NjQgYi9nY2MvY29uZmlnL21pcHMvdC1saW51eDY0CitpbmRleCAxMDBmOWRhNWUxNC4uNjAxY2RmMDhkMDUgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL21pcHMvdC1saW51eDY0CisrKysgYi9nY2MvY29uZmlnL21pcHMvdC1saW51eDY0CitAQCAtMTcsMTAgKzE3LDYgQEAKKyAjIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAKKyBNVUxUSUxJQl9PUFRJT05TID0gbWFiaT1uMzIvbWFiaT0zMi9tYWJpPTY0CistTVVMVElMSUJfRElSTkFNRVMgPSBuMzIgMzIgNjQKKy1NSVBTX0VMID0gJChpZiAkKGZpbHRlciAlZWwsICQoZmlyc3R3b3JkICQoc3Vic3QgLSwgLCQodGFyZ2V0KSkpKSxlbCkKKy1NSVBTX1NPRlQgPSAkKGlmICQoc3RyaXAgJChmaWx0ZXIgTUFTS19TT0ZUX0ZMT0FUX0FCSSwgJCh0YXJnZXRfY3B1X2RlZmF1bHQpKSAkKGZpbHRlciBzb2Z0LCAkKHdpdGhfZmxvYXQpKSksc29mdCkKKy1NVUxUSUxJQl9PU0RJUk5BTUVTID0gXAorLQkuLi9saWIzMiQoY2FsbCBpZl9tdWx0aWFyY2gsOm1pcHM2NCQoTUlQU19FTCktbGludXgtZ251YWJpbjMyJChNSVBTX1NPRlQpKSBcCistCS4uL2xpYiQoY2FsbCBpZl9tdWx0aWFyY2gsOm1pcHMkKE1JUFNfRUwpLWxpbnV4LWdudSQoTUlQU19TT0ZUKSkgXAorLQkuLi9saWI2NCQoY2FsbCBpZl9tdWx0aWFyY2gsOm1pcHM2NCQoTUlQU19FTCktbGludXgtZ251YWJpNjQkKE1JUFNfU09GVCkpCisrTVVMVElMSUJfRElSTkFNRVMgPSAuIC4gLgorK01VTFRJTElCX09TRElSTkFNRVMgPSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKQorKworZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcnM2MDAwL3QtbGludXg2NCBiL2djYy9jb25maWcvcnM2MDAwL3QtbGludXg2NAoraW5kZXggMjgzMGVkMGQ4NjEuLmQwNTdmYWNkMmZkIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eDY0CisrKysgYi9nY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4NjQKK0BAIC0yNiwxMCArMjYsOSBAQAorICMgTVVMVElMSUJfT1NESVJOQU1FUyBhY2NvcmRpbmcgdG8gd2hhdCBpcyBmb3VuZCBvbiB0aGUgdGFyZ2V0LgorIAorIE1VTFRJTElCX09QVElPTlMgICAgOj0gbTY0L20zMgorLU1VTFRJTElCX0RJUk5BTUVTICAgOj0gNjQgMzIKKytNVUxUSUxJQl9ESVJOQU1FUyAgIDo9IC4gLgorIE1VTFRJTElCX0VYVFJBX09QVFMgOj0gCistTVVMVElMSUJfT1NESVJOQU1FUyA6PSBtNjQ9Li4vbGliNjQkKGNhbGwgaWZfbXVsdGlhcmNoLDpwb3dlcnBjNjQtbGludXgtZ251KQorLU1VTFRJTElCX09TRElSTkFNRVMgKz0gbTMyPSQoaWYgJCh3aWxkY2FyZCAkKHNoZWxsIGVjaG8gJChTWVNURU1fSEVBREVSX0RJUikpLy4uLy4uL3Vzci9saWIzMiksLi4vbGliMzIsLi4vbGliKSQoY2FsbCBpZl9tdWx0aWFyY2gsOnBvd2VycGMtbGludXgtZ251KQorK01VTFRJTElCX09TRElSTkFNRVMgOj0gLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkgLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkKKyAKKyByczYwMDAtbGludXgubzogJChzcmNkaXIpL2NvbmZpZy9yczYwMDAvcnM2MDAwLWxpbnV4LmMKKyAJJChDT01QSUxFKSAkPAorLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDEzLW9wdGlvbmFsLWxpYnN0ZGMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMTMtb3B0aW9uYWwtbGlic3RkYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDM5YmY2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDEzLW9wdGlvbmFsLWxpYnN0ZGMucGF0Y2gKQEAgLTAsMCArMSwxMjUgQEAKK0Zyb20gMjZhNThkMDU4NDQyNzQ5MTVkMDExZWRiZjkzMzBjNjE1MTY4N2IyMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjEyOjU2ICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMTMvNDddIG9wdGlvbmFsIGxpYnN0ZGMKKworZ2NjLXJ1bnRpbWUgYnVpbGRzIGxpYnN0ZGMrKyBzZXBhcmF0ZWx5IGZyb20gZ2NjLWNyb3NzLSouIEl0cyBjb25maWd1cmUgdGVzdHMgdXNpbmcgZysrCit3aWxsIG5vdCBydW4gY29ycmVjdGx5IHNpbmNlIGJ5IGRlZmF1bHQgdGhlIGxpbmtlciB3aWxsIHRyeSB0byBsaW5rIGFnYWluc3QgbGlic3RkYysrCit3aGljaCBzaG91bGRuJ3QgZXhpc3QgeWV0LiBXZSBuZWVkIGFuIG9wdGlvbiB0byBkaXNhYmxlIC1sc3RkYysrCitvcHRpb24gd2hpbHN0IGxlYXZpbmcgLWxjLCAtbGdjYyBhbmQgb3RoZXIgYXV0b21hdGljIGxpYnJhcnkgZGVwZW5kZW5jaWVzIGFkZGVkIGJ5IGdjYworZHJpdmVyLiBUaGlzIHBhdGNoIGFkZHMgc3VjaCBhbiBvcHRpb24gd2hpY2ggb25seSBkaXNhYmxlcyB0aGUgLWxzdGRjKysuCisKK0EgInN0YW5kYXJkIiBnY2MgYnVpbGQgdXNlcyB4Z2NjIGFuZCBoZW5jZSBhdm9pZHMgdGhpcy4gV2Ugc2hvdWxkIGFzayB1cHN0cmVhbSBob3cgdG8KK2RvIHRoaXMgb2ZmaWNpYWxseSwgdGhlIGxpa2VseSBhbnN3ZXIgaXMgZG9uJ3QgYnVpbGQgbGlic3RkYysrIHNlcGFyYXRlbHkuCisKK1JQIDI5LzYvMTAKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KKy0tLQorIGdjYy9jLWZhbWlseS9jLm9wdCAgfCAgNCArKysrCisgZ2NjL2NwL2crK3NwZWMuYyAgICB8ICAxICsKKyBnY2MvZG9jL2ludm9rZS50ZXhpIHwgMzIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KKyBnY2MvZ2NjLmMgICAgICAgICAgIHwgIDEgKworIDQgZmlsZXMgY2hhbmdlZCwgMzcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2MtZmFtaWx5L2Mub3B0IGIvZ2NjL2MtZmFtaWx5L2Mub3B0CitpbmRleCA5YWQyZjZlMWZjYy4uYzRlZjc3OTYyODIgMTAwNjQ0CistLS0gYS9nY2MvYy1mYW1pbHkvYy5vcHQKKysrKyBiL2djYy9jLWZhbWlseS9jLm9wdAorQEAgLTE4NDgsNiArMTg0OCwxMCBAQCBub3N0ZGluYysrCisgQysrIE9iakMrKworIERvIG5vdCBzZWFyY2ggc3RhbmRhcmQgc3lzdGVtIGluY2x1ZGUgZGlyZWN0b3JpZXMgZm9yIEMrKy4KKyAKKytub3N0ZGxpYisrCisrRHJpdmVyCisrRG8gbm90IGxpbmsgc3RhbmRhcmQgQysrIHJ1bnRpbWUgbGlicmFyeQorKworIG8KKyBDIE9iakMgQysrIE9iakMrKyBKb2luZWQgU2VwYXJhdGUKKyA7IERvY3VtZW50ZWQgaW4gY29tbW9uLm9wdAorZGlmZiAtLWdpdCBhL2djYy9jcC9nKytzcGVjLmMgYi9nY2MvY3AvZysrc3BlYy5jCitpbmRleCBmZmNjODdjNzljOS4uMjhkOGE5Y2Y1MzAgMTAwNjQ0CistLS0gYS9nY2MvY3AvZysrc3BlYy5jCisrKysgYi9nY2MvY3AvZysrc3BlYy5jCitAQCAtMTM3LDYgKzEzNyw3IEBAIGxhbmdfc3BlY2lmaWNfZHJpdmVyIChzdHJ1Y3QgY2xfZGVjb2RlZF9vcHRpb24gKippbl9kZWNvZGVkX29wdGlvbnMsCisgICAgICAgc3dpdGNoIChkZWNvZGVkX29wdGlvbnNbaV0ub3B0X2luZGV4KQorIAl7CisgCWNhc2UgT1BUX25vc3RkbGliOgorKwljYXNlIE9QVF9ub3N0ZGxpYl9fOgorIAljYXNlIE9QVF9ub2RlZmF1bHRsaWJzOgorIAkgIGxpYnJhcnkgPSAtMTsKKyAJICBicmVhazsKK2RpZmYgLS1naXQgYS9nY2MvZG9jL2ludm9rZS50ZXhpIGIvZ2NjL2RvYy9pbnZva2UudGV4aQoraW5kZXggMDYwY2Q3MTY5YzYuLjhlMmFkYzI1NjQ0IDEwMDY0NAorLS0tIGEvZ2NjL2RvYy9pbnZva2UudGV4aQorKysrIGIvZ2NjL2RvYy9pbnZva2UudGV4aQorQEAgLTIxMSw2ICsyMTEsOSBAQCBpbiB0aGUgZm9sbG93aW5nIHNlY3Rpb25zLgorIC1mbm8td2VhayAgLW5vc3RkaW5jKysgQGdvbAorIC1mdmlzaWJpbGl0eS1pbmxpbmVzLWhpZGRlbiBAZ29sCisgLWZ2aXNpYmlsaXR5LW1zLWNvbXBhdCBAZ29sCisrLWZ2dGFibGUtdmVyaWZ5PUBye1t9c3RkQHJ7fH1wcmVpbml0QHJ7fH1ub25lQHJ7XX0gQGdvbAorKy1mdnR2LWNvdW50cyAtZnZ0di1kZWJ1ZyBAZ29sCisrLW5vc3RkbGliKysgQGdvbAorIC1mZXh0LW51bWVyaWMtbGl0ZXJhbHMgQGdvbAorIC1XYWJpPUB2YXJ7bn0gIC1XYWJpLXRhZyAgLVdjb252ZXJzaW9uLW51bGwgIC1XY3Rvci1kdG9yLXByaXZhY3kgQGdvbAorIC1XZGVsZXRlLW5vbi12aXJ0dWFsLWR0b3IgIC1XbGl0ZXJhbC1zdWZmaXggIC1XbXVsdGlwbGUtaW5oZXJpdGFuY2UgQGdvbAorQEAgLTQ5Niw3ICs0OTksNyBAQCBPYmplY3RpdmUtQyBhbmQgT2JqZWN0aXZlLUMrKyBEaWFsZWN0c30uCisgLXMgIC1zdGF0aWMgIC1zdGF0aWMtbGliZ2NjICAtc3RhdGljLWxpYnN0ZGMrKyBAZ29sCisgLXN0YXRpYy1saWJhc2FuICAtc3RhdGljLWxpYnRzYW4gIC1zdGF0aWMtbGlibHNhbiAgLXN0YXRpYy1saWJ1YnNhbiBAZ29sCisgLXN0YXRpYy1saWJtcHggIC1zdGF0aWMtbGlibXB4d3JhcHBlcnMgQGdvbAorLS1zaGFyZWQgIC1zaGFyZWQtbGliZ2NjICAtc3ltYm9saWMgQGdvbAorKy1zaGFyZWQgIC1zaGFyZWQtbGliZ2NjICAtc3ltYm9saWMgLW5vc3RkbGliKysgQGdvbAorIC1UIEB2YXJ7c2NyaXB0fSAgLVdsLEB2YXJ7b3B0aW9ufSAgLVhsaW5rZXIgQHZhcntvcHRpb259IEBnb2wKKyAtdSBAdmFye3N5bWJvbH0gIC16IEB2YXJ7a2V5d29yZH19CisgCitAQCAtMTE2MDYsNiArMTE2MDksMzMgQEAgbGlicmFyeSBzdWJyb3V0aW5lcy4KKyBjb25zdHJ1Y3RvcnMgYXJlIGNhbGxlZDsgQHB4cmVme0NvbGxlY3QyLCxAY29kZXtjb2xsZWN0Mn0sIGdjY2ludCwKKyBHTlUgQ29tcGlsZXIgQ29sbGVjdGlvbiAoR0NDKSBJbnRlcm5hbHN9LikKKyAKKytAaXRlbSAtbm9zdGRsaWIrKworK0BvcGluZGV4IG5vc3RkbGliKysKKytEbyBub3QgdXNlIHRoZSBzdGFuZGFyZCBzeXN0ZW0gQysrIHJ1bnRpbWUgbGlicmFyaWVzIHdoZW4gbGlua2luZy4KKytPbmx5IHRoZSBsaWJyYXJpZXMgeW91IHNwZWNpZnkgd2lsbCBiZSBwYXNzZWQgdG8gdGhlIGxpbmtlci4KKysKKytAY2luZGV4IEBvcHRpb257LWxnY2N9LCB1c2Ugd2l0aCBAb3B0aW9uey1ub3N0ZGxpYn0KKytAY2luZGV4IEBvcHRpb257LW5vc3RkbGlifSBhbmQgdW5yZXNvbHZlZCByZWZlcmVuY2VzCisrQGNpbmRleCB1bnJlc29sdmVkIHJlZmVyZW5jZXMgYW5kIEBvcHRpb257LW5vc3RkbGlifQorK0BjaW5kZXggQG9wdGlvbnstbGdjY30sIHVzZSB3aXRoIEBvcHRpb257LW5vZGVmYXVsdGxpYnN9CisrQGNpbmRleCBAb3B0aW9uey1ub2RlZmF1bHRsaWJzfSBhbmQgdW5yZXNvbHZlZCByZWZlcmVuY2VzCisrQGNpbmRleCB1bnJlc29sdmVkIHJlZmVyZW5jZXMgYW5kIEBvcHRpb257LW5vZGVmYXVsdGxpYnN9CisrT25lIG9mIHRoZSBzdGFuZGFyZCBsaWJyYXJpZXMgYnlwYXNzZWQgYnkgQG9wdGlvbnstbm9zdGRsaWJ9IGFuZAorK0BvcHRpb257LW5vZGVmYXVsdGxpYnN9IGlzIEBmaWxle2xpYmdjYy5hfSwgYSBsaWJyYXJ5IG9mIGludGVybmFsIHN1YnJvdXRpbmVzCisrd2hpY2ggR0NDIHVzZXMgdG8gb3ZlcmNvbWUgc2hvcnRjb21pbmdzIG9mIHBhcnRpY3VsYXIgbWFjaGluZXMsIG9yIHNwZWNpYWwKKytuZWVkcyBmb3Igc29tZSBsYW5ndWFnZXMuCisrKEB4cmVme0ludGVyZmFjZSwsSW50ZXJmYWNpbmcgdG8gR0NDIE91dHB1dCxnY2NpbnQsR05VIENvbXBpbGVyCisrQ29sbGVjdGlvbiAoR0NDKSBJbnRlcm5hbHN9LAorK2ZvciBtb3JlIGRpc2N1c3Npb24gb2YgQGZpbGV7bGliZ2NjLmF9LikKKytJbiBtb3N0IGNhc2VzLCB5b3UgbmVlZCBAZmlsZXtsaWJnY2MuYX0gZXZlbiB3aGVuIHlvdSB3YW50IHRvIGF2b2lkCisrb3RoZXIgc3RhbmRhcmQgbGlicmFyaWVzLiAgSW4gb3RoZXIgd29yZHMsIHdoZW4geW91IHNwZWNpZnkgQG9wdGlvbnstbm9zdGRsaWJ9Cisrb3IgQG9wdGlvbnstbm9kZWZhdWx0bGlic30geW91IHNob3VsZCB1c3VhbGx5IHNwZWNpZnkgQG9wdGlvbnstbGdjY30gYXMgd2VsbC4KKytUaGlzIGVuc3VyZXMgdGhhdCB5b3UgaGF2ZSBubyB1bnJlc29sdmVkIHJlZmVyZW5jZXMgdG8gaW50ZXJuYWwgR0NDCisrbGlicmFyeSBzdWJyb3V0aW5lcy4KKysoQW4gZXhhbXBsZSBvZiBzdWNoIGFuIGludGVybmFsIHN1YnJvdXRpbmUgaXMgQGNvZGV7X19tYWlufSwgdXNlZCB0byBlbnN1cmUgQysrCisrY29uc3RydWN0b3JzIGFyZSBjYWxsZWQ7IEBweHJlZntDb2xsZWN0MiwsQGNvZGV7Y29sbGVjdDJ9LCBnY2NpbnQsCisrR05VIENvbXBpbGVyIENvbGxlY3Rpb24gKEdDQykgSW50ZXJuYWxzfS4pCisrCisgQGl0ZW0gLXBpZQorIEBvcGluZGV4IHBpZQorIFByb2R1Y2UgYSBwb3NpdGlvbiBpbmRlcGVuZGVudCBleGVjdXRhYmxlIG9uIHRhcmdldHMgdGhhdCBzdXBwb3J0IGl0LgorZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYworaW5kZXggNjMxNWFhMGRkMTYuLmE1ZmFmYmU1MTA3IDEwMDY0NAorLS0tIGEvZ2NjL2djYy5jCisrKysgYi9nY2MvZ2NjLmMKK0BAIC0xMDQ2LDYgKzEwNDYsNyBAQCBwcm9wZXIgcG9zaXRpb24gYW1vbmcgdGhlIG90aGVyIG91dHB1dCBmaWxlcy4gICovCisgICAgICUobWZsaWIpICIgU1RBQ0tfU1BMSVRfU1BFQyAiXAorICAgICAle2Zwcm9maWxlLWFyY3N8ZnByb2ZpbGUtZ2VuZXJhdGUqfGNvdmVyYWdlOi1sZ2Nvdn0gIiBTQU5JVElaRVJfU1BFQyAiIFwKKyAgICAgJXshbm9zdGRsaWI6JXshbm9kZWZhdWx0bGliczolKGxpbmtfc3NwKSAlKGxpbmtfZ2NjX2Nfc2VxdWVuY2UpfX1cCisrICAgICV7IW5vc3RkbGliKys6fVwKKyAgICAgJXshbm9zdGRsaWI6JXshbm9zdGFydGZpbGVzOiVFfX0gJXtUKn0gIFxuJShwb3N0X2xpbmspIH19fX19fSIKKyAjZW5kaWYKKyAKKy0tIAorMi4xMi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAxNC1nY2MtZGlzYWJsZS1NQVNLX1JFTEFYX1BJQ19DQUxMUy1iaXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMTQtZ2NjLWRpc2FibGUtTUFTS19SRUxBWF9QSUNfQ0FMTFMtYml0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5MmI1ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMTQtZ2NjLWRpc2FibGUtTUFTS19SRUxBWF9QSUNfQ0FMTFMtYml0LnBhdGNoCkBAIC0wLDAgKzEsNTkgQEAKK0Zyb20gNzE2ZGU1ZGI2ODU5ZmQxZWEyMTA3OGM5NGE0MWZhYzdhODg1YjdlOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjE0OjIwICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMTQvNDddIGdjYzogZGlzYWJsZSBNQVNLX1JFTEFYX1BJQ19DQUxMUyBiaXQKKworVGhlIG5ldyBmZWF0dXJlIGFkZGVkIGFmdGVyIDQuMy4zCisiaHR0cDovL3d3dy5wdWJicy5uZXQvMjAwOTA5L2djYy85NDA0OC1wYXRjaC1hZGQtc3VwcG9ydC1mb3Itcm1pcHNqYWxyLmh0bWwiCit3aWxsIGNhdXNlIGNjMXBsdXMgZWF0IHVwIGFsbCB0aGUgc3lzdGVtIG1lbW9yeSB3aGVuIGJ1aWxkIHdlYmtpdC1ndGsuCitUaGUgZnVuY3Rpb24gbWlwc19nZXRfcGljX2NhbGxfc3ltYm9sIGtlZXBzIG9uIHJlY3Vyc2l2ZWx5IGNhbGxpbmcgaXRzZWxmLgorRGlzYWJsZSB0aGlzIGZlYXR1cmUgdG8gd2FsayBhc2lkZSB0aGUgYnVnLgorCitTaWduZWQtb2ZmLWJ5OiBEb25neGlhbyBYdSA8ZG9uZ3hpYW8ueHVAaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQorLS0tCisgZ2NjL2NvbmZpZ3VyZSAgICB8IDcgLS0tLS0tLQorIGdjYy9jb25maWd1cmUuYWMgfCA3IC0tLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDE0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKK2luZGV4IDQ4OThmMDRmYTZiLi42NDBlNDY0MzgwNSAxMDA3NTUKKy0tLSBhL2djYy9jb25maWd1cmUKKysrKyBiL2djYy9jb25maWd1cmUKK0BAIC0yNzMwMywxMyArMjczMDMsNiBAQCAkYXNfZWNob19uICJjaGVja2luZyBhc3NlbWJsZXIgYW5kIGxpbmtlciBmb3IgZXhwbGljaXQgSkFMUiByZWxvY2F0aW9uLi4uICIgPiY2OworICAgICAgICAgcm0gLWYgY29uZnRlc3QuKgorICAgICAgIGZpCisgICAgIGZpCistICAgIGlmIHRlc3QgJGdjY19jdl9hc19sZF9qYWxyX3JlbG9jID0geWVzOyB0aGVuCistICAgICAgaWYgdGVzdCB4JHRhcmdldF9jcHVfZGVmYXVsdCA9IHg7IHRoZW4KKy0gICAgICAgIHRhcmdldF9jcHVfZGVmYXVsdD1NQVNLX1JFTEFYX1BJQ19DQUxMUworLSAgICAgIGVsc2UKKy0gICAgICAgIHRhcmdldF9jcHVfZGVmYXVsdD0iKCR0YXJnZXRfY3B1X2RlZmF1bHQpfE1BU0tfUkVMQVhfUElDX0NBTExTIgorLSAgICAgIGZpCistICAgIGZpCisgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2NjX2N2X2FzX2xkX2phbHJfcmVsb2MiID4mNQorICRhc19lY2hvICIkZ2NjX2N2X2FzX2xkX2phbHJfcmVsb2MiID4mNjsgfQorIAorZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUuYWMgYi9nY2MvY29uZmlndXJlLmFjCitpbmRleCA5ZGMxZGM3ZmM5Ni4uOWEyZGFlNTViYTIgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlndXJlLmFjCisrKysgYi9nY2MvY29uZmlndXJlLmFjCitAQCAtNDY0MSwxMyArNDY0MSw2IEBAIHg6CisgICAgICAgICBybSAtZiBjb25mdGVzdC4qCisgICAgICAgZmkKKyAgICAgZmkKKy0gICAgaWYgdGVzdCAkZ2NjX2N2X2FzX2xkX2phbHJfcmVsb2MgPSB5ZXM7IHRoZW4KKy0gICAgICBpZiB0ZXN0IHgkdGFyZ2V0X2NwdV9kZWZhdWx0ID0geDsgdGhlbgorLSAgICAgICAgdGFyZ2V0X2NwdV9kZWZhdWx0PU1BU0tfUkVMQVhfUElDX0NBTExTCistICAgICAgZWxzZQorLSAgICAgICAgdGFyZ2V0X2NwdV9kZWZhdWx0PSIoJHRhcmdldF9jcHVfZGVmYXVsdCl8TUFTS19SRUxBWF9QSUNfQ0FMTFMiCistICAgICAgZmkKKy0gICAgZmkKKyAgICAgQUNfTVNHX1JFU1VMVCgkZ2NjX2N2X2FzX2xkX2phbHJfcmVsb2MpCisgCisgICAgIEFDX0NBQ0hFX0NIRUNLKFtsaW5rZXIgZm9yIC5laF9mcmFtZSBwZXJzb25hbGl0eSByZWxheGF0aW9uXSwKKy0tIAorMi4xMi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAxNS1DT0xMRUNUX0dDQ19PUFRJT05TLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDE1LUNPTExFQ1RfR0NDX09QVElPTlMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmU2Mjk0NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAxNS1DT0xMRUNUX0dDQ19PUFRJT05TLnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK0Zyb20gMDRhN2E2NzIzMDFiYjA3Y2FlYTZhN2NhZDgzNzhmNjNmMWZlMzIwMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjE2OjI4ICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMTUvNDddIENPTExFQ1RfR0NDX09QVElPTlMKKworVGhpcyBwYXRjaCBhZGRzIC0tc3lzcm9vdCBpbnRvIENPTExFQ1RfR0NDX09QVElPTlMgd2hpY2ggaXMgdXNlZCB0bworaW52b2tlIGNvbGxlY3QyLgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIGdjYy9nY2MuYyB8IDkgKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCitpbmRleCBhNWZhZmJlNTEwNy4uMDU4OTZlMTk5MjYgMTAwNjQ0CistLS0gYS9nY2MvZ2NjLmMKKysrKyBiL2djYy9nY2MuYworQEAgLTQ2NTQsNiArNDY1NCwxNSBAQCBzZXRfY29sbGVjdF9nY2Nfb3B0aW9ucyAodm9pZCkKKyAJCXNpemVvZiAoIkNPTExFQ1RfR0NDX09QVElPTlM9IikgLSAxKTsKKyAKKyAgIGZpcnN0X3RpbWUgPSBUUlVFOworKyNpZmRlZiBIQVZFX0xEX1NZU1JPT1QKKysgIGlmICh0YXJnZXRfc3lzdGVtX3Jvb3RfY2hhbmdlZCAmJiB0YXJnZXRfc3lzdGVtX3Jvb3QpCisrICAgIHsKKysgICAgICBvYnN0YWNrX2dyb3cgKCZjb2xsZWN0X29ic3RhY2ssICInLS1zeXNyb290PSIsIHNpemVvZigiJy0tc3lzcm9vdD0iKS0xKTsKKysgICAgICBvYnN0YWNrX2dyb3cgKCZjb2xsZWN0X29ic3RhY2ssIHRhcmdldF9zeXN0ZW1fcm9vdCxzdHJsZW4odGFyZ2V0X3N5c3RlbV9yb290KSk7CisrICAgICAgb2JzdGFja19ncm93ICgmY29sbGVjdF9vYnN0YWNrLCAiJyIsIDEpOworKyAgICAgIGZpcnN0X3RpbWUgPSBGQUxTRTsKKysgICAgfQorKyNlbmRpZgorICAgZm9yIChpID0gMDsgKGludCkgaSA8IG5fc3dpdGNoZXM7IGkrKykKKyAgICAgeworICAgICAgIGNvbnN0IGNoYXIgKmNvbnN0ICphcmdzOworLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDE2LVVzZS10aGUtZGVmYXVsdHMuaC1pbi1CLWluc3RlYWQtb2YtUy1hbmQtdC1vZS1pbi1CLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDE2LVVzZS10aGUtZGVmYXVsdHMuaC1pbi1CLWluc3RlYWQtb2YtUy1hbmQtdC1vZS1pbi1CLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5OTEyNTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMTYtVXNlLXRoZS1kZWZhdWx0cy5oLWluLUItaW5zdGVhZC1vZi1TLWFuZC10LW9lLWluLUIucGF0Y2gKQEAgLTAsMCArMSw5NiBAQAorRnJvbSA0NzA3MWNiZDRmMTNmZjVhNDk3NGY3MWYzNTlhMDRhZmNmYjEyNWRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MTc6MjUgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAxNi80N10gVXNlIHRoZSBkZWZhdWx0cy5oIGluICR7Qn0gaW5zdGVhZCBvZiAke1N9LCBhbmQgdC1vZSBpbgorICR7Qn0KKworVXNlIHRoZSBkZWZhdWx0cy5oIGluICR7Qn0gaW5zdGVhZCBvZiAke1N9LCBhbmQgdC1vZSBpbiAke0J9LCBzbyB0aGF0Cit0aGUgc291cmNlIGNhbiBiZSBzaGFyZWQgYmV0d2VlbiBnY2MtY3Jvc3MtaW5pdGlhbCwKK2djYy1jcm9zcy1pbnRlcm1lZGlhdGUsIGdjYy1jcm9zcywgZ2NjLXJ1bnRpbWUsIGFuZCBhbHNvIHRoZSBzZGsgYnVpbGQuCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitXaGlsZSBjb21waWxpbmcgZ2NjLWNyb3Nzc2RrLWluaXRpYWwteDg2XzY0IG9uIHNvbWUgaG9zdCwgdGhlcmUgaXMKK29jY2FzaW9uYWxseSBmYWlsdXJlIHRoYXQgdGVzdCB0aGUgZXhpc3RhbmNlIG9mIGRlZmF1bHQuaCBkb2Vzbid0Cit3b3JrLCB0aGUgcmVhc29uIGlzIHRtX2luY2x1ZGVfbGlzdD0nKiogZGVmYXVsdHMuaCcgcmF0aGVyIHRoYW4KK3RtX2luY2x1ZGVfbGlzdD0nKiogLi9kZWZhdWx0cy5oJworCitTbyB3ZSBhZGQgdGhlIHRlc3QgY29uZGl0aW9uIGZvciB0aGlzIHNpdHVhdGlvbi4KK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGdjYy9NYWtlZmlsZS5pbiAgfCAyICstCisgZ2NjL2NvbmZpZ3VyZSAgICB8IDQgKystLQorIGdjYy9jb25maWd1cmUuYWMgfCA0ICsrLS0KKyBnY2MvbWtjb25maWcuc2ggIHwgNCArKy0tCisgNCBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvTWFrZWZpbGUuaW4gYi9nY2MvTWFrZWZpbGUuaW4KK2luZGV4IDI0MTE2NzFjZWEzLi43YjU5MGM5YmJkMyAxMDA2NDQKKy0tLSBhL2djYy9NYWtlZmlsZS5pbgorKysrIGIvZ2NjL01ha2VmaWxlLmluCitAQCAtNTMyLDcgKzUzMiw3IEBAIFRBUkdFVF9TWVNURU1fUk9PVCA9IEBUQVJHRVRfU1lTVEVNX1JPT1RACisgVEFSR0VUX1NZU1RFTV9ST09UX0RFRklORSA9IEBUQVJHRVRfU1lTVEVNX1JPT1RfREVGSU5FQAorIAorIHhtYWtlX2ZpbGU9QHhtYWtlX2ZpbGVACistdG1ha2VfZmlsZT1AdG1ha2VfZmlsZUAKKyt0bWFrZV9maWxlPUB0bWFrZV9maWxlQCAuL3Qtb2UKKyBUTV9FTkRJQU5fQ09ORklHPUBUTV9FTkRJQU5fQ09ORklHQAorIFRNX01VTFRJTElCX0NPTkZJRz1AVE1fTVVMVElMSUJfQ09ORklHQAorIFRNX01VTFRJTElCX0VYQ0VQVElPTlNfQ09ORklHPUBUTV9NVUxUSUxJQl9FWENFUFRJT05TX0NPTkZJR0AKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlIGIvZ2NjL2NvbmZpZ3VyZQoraW5kZXggNjQwZTQ2NDM4MDUuLmI1YWMxNTUyNTQxIDEwMDc1NQorLS0tIGEvZ2NjL2NvbmZpZ3VyZQorKysrIGIvZ2NjL2NvbmZpZ3VyZQorQEAgLTEyMTUwLDggKzEyMTUwLDggQEAgZm9yIGYgaW4gJHRtX2ZpbGU7IGRvCisgICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9ICRmIgorICAgICAgICA7OworICAgICBkZWZhdWx0cy5oICkKKy0gICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gXCQoc3JjZGlyKS8kZiIKKy0gICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gJGYiCisrICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IC4vJGYiCisrICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9IC4vJGYiCisgICAgICAgIDs7CisgICAgICogKQorICAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYworaW5kZXggOWEyZGFlNTViYTIuLmNiMTQ3OWQxZWY0IDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZ3VyZS5hYworKysrIGIvZ2NjL2NvbmZpZ3VyZS5hYworQEAgLTE5MjIsOCArMTkyMiw4IEBAIGZvciBmIGluICR0bV9maWxlOyBkbworICAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAkZiIKKyAgICAgICAgOzsKKyAgICAgZGVmYXVsdHMuaCApCistICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IFwkKHNyY2RpcikvJGYiCistICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9ICRmIgorKyAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSAuLyRmIgorKyAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAuLyRmIgorICAgICAgICA7OworICAgICAqICkKKyAgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gXCQoc3JjZGlyKS9jb25maWcvJGYiCitkaWZmIC0tZ2l0IGEvZ2NjL21rY29uZmlnLnNoIGIvZ2NjL21rY29uZmlnLnNoCitpbmRleCA5ZmM3YjVjYTczNC4uMDRhYmVjZmU2NDggMTAwNjQ0CistLS0gYS9nY2MvbWtjb25maWcuc2gKKysrKyBiL2djYy9ta2NvbmZpZy5zaAorQEAgLTc3LDcgKzc3LDcgQEAgaWYgWyAtbiAiJEhFQURFUlMiIF07IHRoZW4KKyAgICAgaWYgWyAkIyAtZ2UgMSBdOyB0aGVuCisgCWVjaG8gJyNpZmRlZiBJTl9HQ0MnID4+ICR7b3V0cHV0fVQKKyAJZm9yIGZpbGUgaW4gIiRAIjsgZG8KKy0JICAgIGlmIHRlc3QgeCIkZmlsZSIgPSB4ImRlZmF1bHRzLmgiOyB0aGVuCisrCSAgICBpZiB0ZXN0IHgiJGZpbGUiID0geCIuL2RlZmF1bHRzLmgiIC1vIHgiJGZpbGUiID0geCJkZWZhdWx0cy5oIjsgdGhlbgorIAkJcG9zdHBvbmVfZGVmYXVsdHNfaD0ieWVzIgorIAkgICAgZWxzZQorIAkJZWNobyAiIyBpbmNsdWRlIFwiJGZpbGVcIiIgPj4gJHtvdXRwdXR9VAorQEAgLTEwOSw3ICsxMDksNyBAQCBlc2FjCisgCisgIyBJZiB3ZSBwb3N0cG9uZWQgaW5jbHVkaW5nIGRlZmF1bHRzLmgsIGFkZCB0aGUgI2luY2x1ZGUgbm93LgorIGlmIHRlc3QgeCIkcG9zdHBvbmVfZGVmYXVsdHNfaCIgPSB4InllcyI7IHRoZW4KKy0gICAgZWNobyAiIyBpbmNsdWRlIFwiZGVmYXVsdHMuaFwiIiA+PiAke291dHB1dH1UCisrICAgIGVjaG8gIiMgaW5jbHVkZSBcIi4vZGVmYXVsdHMuaFwiIiA+PiAke291dHB1dH1UCisgZmkKKyAKKyAjIEFkZCBtdWx0aXBsZSBpbmNsdXNpb24gcHJvdGVjdGlvbiBndWFyZCwgcGFydCB0d28uCistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMTctZm9ydHJhbi1jcm9zcy1jb21waWxlLWhhY2sucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMTctZm9ydHJhbi1jcm9zcy1jb21waWxlLWhhY2sucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTI4MzBjNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAxNy1mb3J0cmFuLWNyb3NzLWNvbXBpbGUtaGFjay5wYXRjaApAQCAtMCwwICsxLDQ2IEBACitGcm9tIDRmYzM1YTJiYjc2NjZhN2RlMzU1NjhlYjVkNDdmMGNlNmFjZWJlNjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyMDowMSArMDQwMAorU3ViamVjdDogW1BBVENIIDE3LzQ3XSBmb3J0cmFuIGNyb3NzLWNvbXBpbGUgaGFjay4KKworKiBGb3J0cmFuIHdvdWxkIGhhdmUgc2VhcmNoZWQgZm9yIGFybS1hbmdzdHJvbS1nbnVlYWJpLWdmb3J0cmFuIGJ1dCB3b3VsZCBoYXZlIHVzZWQKK3VzZWQgZ2ZvcnRhbi4gRm9yIGdjY180LjIuMi5iYiB3ZSB3YW50IHRvIHVzZSB0aGUgZ2ZvcnRyYW4gY29tcGlsZXIgZnJvbSBvdXIgY3Jvc3MKK2RpcmVjdG9yeS4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KKy0tLQorIGxpYmdmb3J0cmFuL2NvbmZpZ3VyZSAgICB8IDIgKy0KKyBsaWJnZm9ydHJhbi9jb25maWd1cmUuYWMgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJnZm9ydHJhbi9jb25maWd1cmUgYi9saWJnZm9ydHJhbi9jb25maWd1cmUKK2luZGV4IDgxMjM4ZmNiNzljLi43ZGVkN2FiZDQ1NiAxMDA3NTUKKy0tLSBhL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZQorKysrIGIvbGliZ2ZvcnRyYW4vY29uZmlndXJlCitAQCAtMTI3OTIsNyArMTI3OTIsNyBAQCBlc2FjCisgCisgIyBXZSBuZWVkIGdmb3J0cmFuIHRvIGNvbXBpbGUgcGFydHMgb2YgdGhlIGxpYnJhcnkKKyAjQUNfUFJPR19GQyhnZm9ydHJhbikKKy1GQz0iJEdGT1JUUkFOIgorKyNGQz0iJEdGT1JUUkFOIgorIGFjX2V4dD0ke2FjX2ZjX3NyY2V4dC1mfQorIGFjX2NvbXBpbGU9JyRGQyAtYyAkRkNGTEFHUyAkYWNfZmNmbGFnc19zcmNleHQgY29uZnRlc3QuJGFjX2V4dCA+JjUnCisgYWNfbGluaz0nJEZDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkRkNGTEFHUyAkTERGTEFHUyAkYWNfZmNmbGFnc19zcmNleHQgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCitkaWZmIC0tZ2l0IGEvbGliZ2ZvcnRyYW4vY29uZmlndXJlLmFjIGIvbGliZ2ZvcnRyYW4vY29uZmlndXJlLmFjCitpbmRleCAzN2IxMmQyOTk4Zi4uNjNhNDE2NmVmNjIgMTAwNjQ0CistLS0gYS9saWJnZm9ydHJhbi9jb25maWd1cmUuYWMKKysrKyBiL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZS5hYworQEAgLTI0Myw3ICsyNDMsNyBAQCBBQ19TVUJTVChlbmFibGVfc3RhdGljKQorIAorICMgV2UgbmVlZCBnZm9ydHJhbiB0byBjb21waWxlIHBhcnRzIG9mIHRoZSBsaWJyYXJ5CisgI0FDX1BST0dfRkMoZ2ZvcnRyYW4pCistRkM9IiRHRk9SVFJBTiIKKysjRkM9IiRHRk9SVFJBTiIKKyBBQ19QUk9HX0ZDKGdmb3J0cmFuKQorIAorICMgZXh0cmEgTEQgRmxhZ3Mgd2hpY2ggYXJlIHJlcXVpcmVkIGZvciB0YXJnZXRzCistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMTgtY3BwLWhvbm9yLXN5c3Jvb3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMTgtY3BwLWhvbm9yLXN5c3Jvb3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTU1OTA3NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAxOC1jcHAtaG9ub3Itc3lzcm9vdC5wYXRjaApAQCAtMCwwICsxLDU0IEBACitGcm9tIDFjOGEzMzI0NjljYTRiZmVmYjEwZGY3MDcyMGUwZGM4M2ZmOWE3NTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyMjowMCArMDQwMAorU3ViamVjdDogW1BBVENIIDE4LzQ3XSBjcHA6IGhvbm9yIHN5c3Jvb3QuCisKK0N1cnJlbnRseSwgaWYgdGhlIGdjYyB0b29sY2hhaW4gaXMgcmVsb2NhdGVkIGFuZCBpbnN0YWxsZWQgZnJvbSBzc3RhdGUsIHRoZW4geW91IHRyeSBhbmQgY29tcGlsZQorcHJlcHJvY2Vzc2VkIHNvdXJjZSAoLmkgb3IgLmlpIGZpbGVzKSwgdGhlIGNvbXBpbGVyIHdpbGwgdHJ5IGFuZCBhY2Nlc3MgdGhlIGJ1aWx0aW4gc3lzcm9vdCBsb2NhdGlvbgorcmF0aGVyIHRoYW4gdGhlIC0tc3lzcm9vdCBvcHRpb24gc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kbGluZS4gSWYgYWNjZXNzIHRvIHRoYXQgZGlyZWN0b3J5IGlzCitwZXJtaXNzaW9uIGRlbmllZCAodW5yZWFkYWJsZSksIGdjYyB3aWxsIGVycm9yLgorCitUaGlzIGhhcHBlbnMgd2hlbiBjY2FjaGUgaXMgaW4gdXNlIGR1ZSB0byB0aGUgZmFjdCBpdCB1c2VzIHByZXByb2Nlc3NlZCBzb3VyY2UgZmlsZXMuCisKK1RoZSBmaXggYmVsb3cgYWRkcyAlSSB0byB0aGUgY3BwLW91dHB1dCBzcGVjIG1hY3JvIHNvIHRoZSBkZWZhdWx0IHN1YnN0aXR1dGlvbnMgZm9yIC1pcHJlZml4LAorLWlzeXN0ZW0sIC1pc3lzcm9vdCBoYXBwZW4gYW5kIHRoZSBjb3JyZWN0IHN5c3Jvb3QgaXMgdXNlZC4KKworW1lPQ1RPICMyMDc0XQorCitSUCAyMDEyLzA0LzEzCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgZ2NjL2NwL2xhbmctc3BlY3MuaCB8IDIgKy0KKyBnY2MvZ2NjLmMgICAgICAgICAgIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NwL2xhbmctc3BlY3MuaCBiL2djYy9jcC9sYW5nLXNwZWNzLmgKK2luZGV4IDZiMzgzZTFkODZkLi5jN2M3ZDZhNTZlYyAxMDA2NDQKKy0tLSBhL2djYy9jcC9sYW5nLXNwZWNzLmgKKysrKyBiL2djYy9jcC9sYW5nLXNwZWNzLmgKK0BAIC02NCw1ICs2NCw1IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCisgICB7Ii5paSIsICJAYysrLWNwcC1vdXRwdXQiLCAwLCAwLCAwfSwKKyAgIHsiQGMrKy1jcHAtb3V0cHV0IiwKKyAgICAiJXshTToleyFNTToleyFFOlwKKy0gICAgY2MxcGx1cyAtZnByZXByb2Nlc3NlZCAlaSAlKGNjMV9vcHRpb25zKSAlMlwKKysgICAgY2MxcGx1cyAtZnByZXByb2Nlc3NlZCAlaSAlSSAlKGNjMV9vcHRpb25zKSAlMlwKKyAgICAgJXshZnN5bnRheC1vbmx5OiUoaW52b2tlX2FzKX19fX0iLCAwLCAwLCAwfSwKK2RpZmYgLS1naXQgYS9nY2MvZ2NjLmMgYi9nY2MvZ2NjLmMKK2luZGV4IDA1ODk2ZTE5OTI2Li5jNzNkNDAyMzk4NyAxMDA2NDQKKy0tLSBhL2djYy9nY2MuYworKysrIGIvZ2NjL2djYy5jCitAQCAtMTM1MSw3ICsxMzUxLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBjb21waWxlciBkZWZhdWx0X2NvbXBpbGVyc1tdID0KKyAJCQkJCSAgICVXe28qOi0tb3V0cHV0LXBjaD0lKn19JVZ9fX19fX19IiwgMCwgMCwgMH0sCisgICB7Ii5pIiwgIkBjcHAtb3V0cHV0IiwgMCwgMCwgMH0sCisgICB7IkBjcHAtb3V0cHV0IiwKKy0gICAiJXshTToleyFNTToleyFFOmNjMSAtZnByZXByb2Nlc3NlZCAlaSAlKGNjMV9vcHRpb25zKSAleyFmc3ludGF4LW9ubHk6JShpbnZva2VfYXMpfX19fSIsIDAsIDAsIDB9LAorKyAgICIleyFNOiV7IU1NOiV7IUU6Y2MxIC1mcHJlcHJvY2Vzc2VkICVpICVJICUoY2MxX29wdGlvbnMpICV7IWZzeW50YXgtb25seTolKGludm9rZV9hcyl9fX19IiwgMCwgMCwgMH0sCisgICB7Ii5zIiwgIkBhc3NlbWJsZXIiLCAwLCAwLCAwfSwKKyAgIHsiQGFzc2VtYmxlciIsCisgICAgIiV7IU06JXshTU06JXshRToleyFTOmFzICUoYXNtX2RlYnVnKSAlKGFzbV9vcHRpb25zKSAlaSAlQSB9fX19IiwgMCwgMCwgMH0sCistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMTktTUlQUzY0LURlZmF1bHQtdG8tTjY0LUFCSS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAxOS1NSVBTNjQtRGVmYXVsdC10by1ONjQtQUJJLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0MmE0MDEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMTktTUlQUzY0LURlZmF1bHQtdG8tTjY0LUFCSS5wYXRjaApAQCAtMCwwICsxLDU3IEBACitGcm9tIDBhM2IzY2M0NWVhN2JhODNiNDZkZjc0NjRiNDFjMzc3ZTM5NjZkODggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyMzowOCArMDQwMAorU3ViamVjdDogW1BBVENIIDE5LzQ3XSBNSVBTNjQ6IERlZmF1bHQgdG8gTjY0IEFCSQorCitNSVBTNjQgZGVmYXVsdHMgdG8gbjMyIEFCSSwgdGhpcyBwYXRjaCBtYWtlcyBpdAorc28gdGhhdCBpdCBkZWZhdWx0cyB0byBONjQgQUJJCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgY29uZmlnIHNwZWNpZmljXQorLS0tCisgZ2NjL2NvbmZpZy5nY2MgfCAxMCArKysrKy0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2djYy9jb25maWcuZ2NjIGIvZ2NjL2NvbmZpZy5nY2MKK2luZGV4IGI4YmI0ZDY1ODI1Li41ZTQ1ZjRiNTE5OSAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcuZ2NjCisrKysgYi9nY2MvY29uZmlnLmdjYworQEAgLTIwODQsMjkgKzIwODQsMjkgQEAgbWlwcyotKi1saW51eCopCQkJCSMgTGludXggTUlQUywgZWl0aGVyIGVuZGlhbi4KKyAJCQlkZWZhdWx0X21pcHNfYXJjaD1taXBzMzIKKyAJCQk7OworIAkJbWlwczY0ZWwtc3QtbGludXgtZ251KQorLQkJCWRlZmF1bHRfbWlwc19hYmk9bjMyCisrCQkJZGVmYXVsdF9taXBzX2FiaT02NAorIAkJCXRtX2ZpbGU9IiR7dG1fZmlsZX0gbWlwcy9zdC5oIgorIAkJCXRtYWtlX2ZpbGU9IiR7dG1ha2VfZmlsZX0gbWlwcy90LXN0IgorIAkJCWVuYWJsZV9taXBzX211bHRpbGlicz0ieWVzIgorIAkJCTs7CisgCQltaXBzNjRvY3Rlb24qLSotbGludXgqKQorLQkJCWRlZmF1bHRfbWlwc19hYmk9bjMyCisrCQkJZGVmYXVsdF9taXBzX2FiaT02NAorIAkJCXRtX2RlZmluZXM9IiR7dG1fZGVmaW5lc30gTUlQU19DUFVfU1RSSU5HX0RFRkFVTFQ9XFxcIm9jdGVvblxcXCIiCisgCQkJdGFyZ2V0X2NwdV9kZWZhdWx0PU1BU0tfU09GVF9GTE9BVF9BQkkKKyAJCQllbmFibGVfbWlwc19tdWx0aWxpYnM9InllcyIKKyAJCQk7OworIAkJbWlwc2lzYTY0cjYqLSotbGludXgqKQorLQkJCWRlZmF1bHRfbWlwc19hYmk9bjMyCisrCQkJZGVmYXVsdF9taXBzX2FiaT02NAorIAkJCWRlZmF1bHRfbWlwc19hcmNoPW1pcHM2NHI2CisgCQkJZW5hYmxlX21pcHNfbXVsdGlsaWJzPSJ5ZXMiCisgCQkJOzsKKyAJCW1pcHNpc2E2NHIyKi0qLWxpbnV4KikKKy0JCQlkZWZhdWx0X21pcHNfYWJpPW4zMgorKwkJCWRlZmF1bHRfbWlwc19hYmk9NjQKKyAJCQlkZWZhdWx0X21pcHNfYXJjaD1taXBzNjRyMgorIAkJCWVuYWJsZV9taXBzX211bHRpbGlicz0ieWVzIgorIAkJCTs7CisgCQltaXBzNjQqLSotbGludXgqIHwgbWlwc2lzYTY0Ki0qLWxpbnV4KikKKy0JCQlkZWZhdWx0X21pcHNfYWJpPW4zMgorKwkJCWRlZmF1bHRfbWlwc19hYmk9NjQKKyAJCQllbmFibGVfbWlwc19tdWx0aWxpYnM9InllcyIKKyAJCQk7OworIAllc2FjCistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMjAtRGVmaW5lLUdMSUJDX0RZTkFNSUNfTElOS0VSLWFuZC1VQ0xJQkNfRFlOQU1JQ19MSU5LRS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAyMC1EZWZpbmUtR0xJQkNfRFlOQU1JQ19MSU5LRVItYW5kLVVDTElCQ19EWU5BTUlDX0xJTktFLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlN2I0ZGYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMjAtRGVmaW5lLUdMSUJDX0RZTkFNSUNfTElOS0VSLWFuZC1VQ0xJQkNfRFlOQU1JQ19MSU5LRS5wYXRjaApAQCAtMCwwICsxLDIzNCBAQAorRnJvbSBkNmM5ODNiNjg1ZWUwM2U5Y2YyMTE4OTEwOGQzMWVkOWY3NjBmZjNmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MjQ6NTAgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAyMC80N10gRGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIGFuZCBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIKKyByZWxhdGl2ZSB0byBTWVNURU1MSUJTX0RJUgorCitUaGlzIHBhdGNoIGRlZmluZXMgR0xJQkNfRFlOQU1JQ19MSU5LRVIgYW5kIFVDTElCQ19EWU5BTUlDX0xJTktFUgorcmVsYXRpdmUgdG8gU1lTVEVNTElCU19ESVIgd2hpY2ggY2FuIGJlIHNldCBpbiBnZW5lcmF0ZWQgaGVhZGVycworVGhpcyBicmVha3MgdGhlIGFzc3VtcHRpb24gb2YgaGFyZGNvZGVkIG11bHRpbGliIGluIGdjYworQ2hhbmdlIGlzIG9ubHkgZm9yIHRoZSBzdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlcyBpbiBPRSBpbmNsdWRpbmcKK1NILCBzcGFyYywgYWxwaGEgZm9yIHBvc3NpYmxlIGZ1dHVyZSBzdXBwb3J0IChpZiBhbnkpCisKK1JlbW92ZXMgdGhlIGRvX2hlYWRlcmZpeCB0YXNrIGluIG1ldGFkYXRhCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgY29uZmlndXJhdGlvbl0KKy0tLQorIGdjYy9jb25maWcvYWxwaGEvbGludXgtZWxmLmggfCAgNCArKy0tCisgZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oICB8ICA0ICsrLS0KKyBnY2MvY29uZmlnL2FybS9saW51eC1lbGYuaCAgIHwgIDIgKy0KKyBnY2MvY29uZmlnL2kzODYvbGludXguaCAgICAgIHwgIDIgKy0KKyBnY2MvY29uZmlnL2kzODYvbGludXg2NC5oICAgIHwgIDYgKysrLS0tCisgZ2NjL2NvbmZpZy9saW51eC5oICAgICAgICAgICB8ICA4ICsrKystLS0tCisgZ2NjL2NvbmZpZy9taXBzL2xpbnV4LmggICAgICB8IDEyICsrKysrKy0tLS0tLQorIGdjYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaCAgfCAxNiArKysrKystLS0tLS0tLS0tCisgZ2NjL2NvbmZpZy9zaC9saW51eC5oICAgICAgICB8ICAyICstCisgZ2NjL2NvbmZpZy9zcGFyYy9saW51eC5oICAgICB8ICAyICstCisgZ2NjL2NvbmZpZy9zcGFyYy9saW51eDY0LmggICB8ICA0ICsrLS0KKyAxMSBmaWxlcyBjaGFuZ2VkLCAyOSBpbnNlcnRpb25zKCspLCAzMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWxwaGEvbGludXgtZWxmLmggYi9nY2MvY29uZmlnL2FscGhhL2xpbnV4LWVsZi5oCitpbmRleCAyYzM5ZmJlNjAxYy4uNmQ4OGUyMWFiZTIgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL2FscGhhL2xpbnV4LWVsZi5oCisrKysgYi9nY2MvY29uZmlnL2FscGhhL2xpbnV4LWVsZi5oCitAQCAtMjMsOCArMjMsOCBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQorICNkZWZpbmUgRVhUUkFfU1BFQ1MgXAorIHsgImVsZl9keW5hbWljX2xpbmtlciIsIEVMRl9EWU5BTUlDX0xJTktFUiB9LAorIAorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIJIi9saWIvbGQtbGludXguc28uMiIKKy0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC11Q2xpYmMuc28uMCIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSCVNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgorKyNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSICBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjAiCisgI2lmIERFRkFVTFRfTElCQyA9PSBMSUJDX1VDTElCQworICNkZWZpbmUgQ0hPT1NFX0RZTkFNSUNfTElOS0VSKEcsIFUpICIle21nbGliYzoiIEcgIjs6IiBVICJ9IgorICNlbGlmIERFRkFVTFRfTElCQyA9PSBMSUJDX0dMSUJDCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oIGIvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oCitpbmRleCBhMDhjZmIzNDM3Ny4uZmJhYzlhOWQ5OTQgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKKysrKyBiL2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaAorQEAgLTYyLDggKzYyLDggQEAKKyAgICBHTElCQ19EWU5BTUlDX0xJTktFUl9ERUZBVUxUIGFuZCBUQVJHRVRfREVGQVVMVF9GTE9BVF9BQkkuICAqLworIAorICN1bmRlZiAgR0xJQkNfRFlOQU1JQ19MSU5LRVIKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSX1NPRlRfRkxPQVQgIi9saWIvbGQtbGludXguc28uMyIKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSX0hBUkRfRkxPQVQgIi9saWIvbGQtbGludXgtYXJtaGYuc28uMyIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSX1NPRlRfRkxPQVQgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjMiCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUl9IQVJEX0ZMT0FUIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1hcm1oZi5zby4zIgorICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJfREVGQVVMVCBHTElCQ19EWU5BTUlDX0xJTktFUl9TT0ZUX0ZMT0FUCisgCisgI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBcCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWxmLmggYi9nY2MvY29uZmlnL2FybS9saW51eC1lbGYuaAoraW5kZXggM2Q2MjM2N2FlNjguLmU4YTE2MTkxODQ5IDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWxmLmgKKysrKyBiL2djYy9jb25maWcvYXJtL2xpbnV4LWVsZi5oCitAQCAtNjAsNyArNjAsNyBAQAorIAorICNkZWZpbmUgTElCR0NDX1NQRUMgIiV7bWZsb2F0LWFiaT1zb2Z0KjotbGZsb2F0fSAtbGdjYyIKKyAKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLWxpbnV4LnNvLjIiCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKKyAKKyAjZGVmaW5lIExJTlVYX1RBUkdFVF9MSU5LX1NQRUMgICIle2gqfSBcCisgICAgJXtzdGF0aWM6LUJzdGF0aWN9IFwKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvbGludXguaCBiL2djYy9jb25maWcvaTM4Ni9saW51eC5oCitpbmRleCA1OTEzMjEyNGQ2Yi4uMzM2ZDE1ODYyOWMgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL2kzODYvbGludXguaAorKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4LmgKK0BAIC0yMCw3ICsyMCw3IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCisgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKyAKKyAjZGVmaW5lIEdOVV9VU0VSX0xJTktfRU1VTEFUSU9OICJlbGZfaTM4NiIKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLWxpbnV4LnNvLjIiCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKKyAKKyAjdW5kZWYgTVVTTF9EWU5BTUlDX0xJTktFUgorICNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1tdXNsLWkzODYuc28uMSIKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL2kzODYvbGludXg2NC5oIGIvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4NjQuaAoraW5kZXggZTY1YzQwNGZmOTEuLmMzNGRlZDk4NDgxIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4NjQuaAorKysrIGIvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4NjQuaAorQEAgLTI3LDkgKzI3LDkgQEAgc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4gIElmIG5vdCwgc2VlCisgI2RlZmluZSBHTlVfVVNFUl9MSU5LX0VNVUxBVElPTjY0ICJlbGZfeDg2XzY0IgorICNkZWZpbmUgR05VX1VTRVJfTElOS19FTVVMQVRJT05YMzIgImVsZjMyX3g4Nl82NCIKKyAKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgIi9saWIvbGQtbGludXguc28uMiIKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgIi9saWI2NC9sZC1saW51eC14ODYtNjQuc28uMiIKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSWDMyICIvbGlieDMyL2xkLWxpbnV4LXgzMi5zby4yIgorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LXg4Ni02NC5zby4yIgorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJYMzIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LXgzMi5zby4yIgorIAorICN1bmRlZiBNVVNMX0RZTkFNSUNfTElOS0VSMzIKKyAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIzMiAiL2xpYi9sZC1tdXNsLWkzODYuc28uMSIKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL2xpbnV4LmggYi9nY2MvY29uZmlnL2xpbnV4LmgKK2luZGV4IGIzYTllODVlNzdmLi4yZTY4M2QwYzQzMCAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvbGludXguaAorKysrIGIvZ2NjL2NvbmZpZy9saW51eC5oCitAQCAtODEsMTAgKzgxLDEwIEBAIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZQorICAgIEdMSUJDX0RZTkFNSUNfTElOS0VSIG11c3QgYmUgZGVmaW5lZCBmb3IgZWFjaCB0YXJnZXQgdXNpbmcgdGhlbSwgb3IKKyAgICBHTElCQ19EWU5BTUlDX0xJTktFUjMyIGFuZCBHTElCQ19EWU5BTUlDX0xJTktFUjY0IGZvciB0YXJnZXRzCisgICAgc3VwcG9ydGluZyBib3RoIDMyLWJpdCBhbmQgNjQtYml0IGNvbXBpbGF0aW9uLiAgKi8KKy0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC11Q2xpYmMuc28uMCIKKy0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjMyICIvbGliL2xkLXVDbGliYy5zby4wIgorLSNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSNjQgIi9saWIvbGQ2NC11Q2xpYmMuc28uMCIKKy0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUlgzMiAiL2xpYi9sZHgzMi11Q2xpYmMuc28uMCIKKysjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjAiCisrI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjAiCisrI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBTWVNURU1MSUJTX0RJUiAibGQ2NC11Q2xpYmMuc28uMCIKKysjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUlgzMiBTWVNURU1MSUJTX0RJUiAibGR4MzItdUNsaWJjLnNvLjAiCisgI2RlZmluZSBCSU9OSUNfRFlOQU1JQ19MSU5LRVIgIi9zeXN0ZW0vYmluL2xpbmtlciIKKyAjZGVmaW5lIEJJT05JQ19EWU5BTUlDX0xJTktFUjMyICIvc3lzdGVtL2Jpbi9saW5rZXIiCisgI2RlZmluZSBCSU9OSUNfRFlOQU1JQ19MSU5LRVI2NCAiL3N5c3RlbS9iaW4vbGlua2VyNjQiCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9taXBzL2xpbnV4LmggYi9nY2MvY29uZmlnL21pcHMvbGludXguaAoraW5kZXggNDQxMzJiOGU0NGQuLjgwNTA1YWQ5ZjQ4IDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9taXBzL2xpbnV4LmgKKysrKyBiL2djYy9jb25maWcvbWlwcy9saW51eC5oCitAQCAtMjIsMjAgKzIyLDIwIEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCisgI2RlZmluZSBHTlVfVVNFUl9MSU5LX0VNVUxBVElPTk4zMiAiZWxmMzIle0VCOmJ9JXtFTDpsfXRzbWlwbjMyIgorIAorICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBcCistICAiJXttbmFuPTIwMDg6L2xpYi9sZC1saW51eC1taXBzbjguc28uMTs6L2xpYi9sZC5zby4xfSIKKysgICIle21uYW49MjAwODoiIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1taXBzbjguc28uMTs6IiBTWVNURU1MSUJTX0RJUiAibGQuc28uMX0iCisgI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0IFwKKy0gICIle21uYW49MjAwODovbGliNjQvbGQtbGludXgtbWlwc244LnNvLjE7Oi9saWI2NC9sZC5zby4xfSIKKysgICIle21uYW49MjAwODoiIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1taXBzbjguc28uMTs6IiBTWVNURU1MSUJTX0RJUiAibGQuc28uMX0iCisgI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUk4zMiBcCistICAiJXttbmFuPTIwMDg6L2xpYjMyL2xkLWxpbnV4LW1pcHNuOC5zby4xOzovbGliMzIvbGQuc28uMX0iCisrICAiJXttbmFuPTIwMDg6IiBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtbWlwc244LnNvLjE7OiIgU1lTVEVNTElCU19ESVIgImxkLnNvLjF9IgorIAorICN1bmRlZiBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMgorICNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSMzIgXAorLSAgIiV7bW5hbj0yMDA4Oi9saWIvbGQtdUNsaWJjLW1pcHNuOC5zby4wOzovbGliL2xkLXVDbGliYy5zby4wfSIKKysgICIle21uYW49MjAwODoiIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMtbWlwc244LnNvLjA7OiIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy5zby4wfSIKKyAjdW5kZWYgVUNMSUJDX0RZTkFNSUNfTElOS0VSNjQKKyAjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjY0IFwKKy0gICIle21uYW49MjAwODovbGliL2xkNjQtdUNsaWJjLW1pcHNuOC5zby4wOzovbGliL2xkNjQtdUNsaWJjLnNvLjB9IgorKyAgIiV7bW5hbj0yMDA4OiIgU1lTVEVNTElCU19ESVIgImxkNjQtdUNsaWJjLW1pcHNuOC5zby4wOzoiIFNZU1RFTUxJQlNfRElSICJsZDY0LXVDbGliYy5zby4wfSIKKyAjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUk4zMiBcCistICAiJXttbmFuPTIwMDg6L2xpYjMyL2xkLXVDbGliYy1taXBzbjguc28uMDs6L2xpYjMyL2xkLXVDbGliYy5zby4wfSIKKysgICIle21uYW49MjAwODoiIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMtbWlwc244LnNvLjA7OiIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy5zby4wfSIKKyAKKyAjdW5kZWYgTVVTTF9EWU5BTUlDX0xJTktFUjMyCisgI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSMzIgXAorZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaCBiL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaAoraW5kZXggNzFlMzViNzA5YWQuLjNiMDBlYzBmY2YwIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oCisrKysgYi9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgKK0BAIC00MTIsMTYgKzQxMiwxMSBAQCBleHRlcm4gaW50IGRvdF9zeW1ib2xzOworICN1bmRlZglMSU5LX09TX0RFRkFVTFRfU1BFQworICNkZWZpbmUgTElOS19PU19ERUZBVUxUX1NQRUMgIiUobGlua19vc19saW51eCkiCisgCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjMyICIlKGR5bmFtaWNfbGlua2VyX3ByZWZpeCkvbGliL2xkLnNvLjEiCistCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjMyIFNZU1RFTUxJQlNfRElSICJsZC5zby4xIgorICNpZmRlZiBMSU5VWDY0X0RFRkFVTFRfQUJJX0VMRnYyCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0IFwKKy0iJXttYWJpPWVsZnYxOiUoZHluYW1pY19saW5rZXJfcHJlZml4KS9saWI2NC9sZDY0LnNvLjE7IiBcCistIjolKGR5bmFtaWNfbGlua2VyX3ByZWZpeCkvbGliNjQvbGQ2NC5zby4yfSIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgIiV7bWFiaT1lbGZ2MToiIFNZU1RFTUxJQlNfRElSICJsZDY0LnNvLjE7OiIgU1lTVEVNTElCU19ESVIgImxkNjQuc28uMn0iCisgI2Vsc2UKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgXAorLSIle21hYmk9ZWxmdjI6JShkeW5hbWljX2xpbmtlcl9wcmVmaXgpL2xpYjY0L2xkNjQuc28uMjsiIFwKKy0iOiUoZHluYW1pY19saW5rZXJfcHJlZml4KS9saWI2NC9sZDY0LnNvLjF9IgorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCAiJXttYWJpPWVsZnYyOiIgU1lTVEVNTElCU19ESVIgImxkNjQuc28uMjs6IiBTWVNURU1MSUJTX0RJUiAibGQ2NC5zby4xfSIKKyAjZW5kaWYKKyAKKyAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIzMiBcCitAQCAtNDI5LDggKzQyNCw5IEBAIGV4dGVybiBpbnQgZG90X3N5bWJvbHM7CisgI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSNjQgXAorICAgIi9saWIvbGQtbXVzbC1wb3dlcnBjNjQiIE1VU0xfRFlOQU1JQ19MSU5LRVJfRSAiJXttc29mdC1mbG9hdDotc2Z9LnNvLjEiCisgCistI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMiAiL2xpYi9sZC11Q2xpYmMuc28uMCIKKy0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjY0ICIvbGliL2xkNjQtdUNsaWJjLnNvLjAiCisrI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjAiCisrI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBTWVNURU1MSUJTX0RJUiAibGQ2NC11Q2xpYmMuc28uMCIKKysKKyAjaWYgREVGQVVMVF9MSUJDID09IExJQkNfVUNMSUJDCisgI2RlZmluZSBDSE9PU0VfRFlOQU1JQ19MSU5LRVIoRywgVSwgTSkgXAorICAgIiV7bWdsaWJjOiIgRyAiOzole21tdXNsOiIgTSAiOzoiIFUgIn19IgorZGlmZiAtLWdpdCBhL2djYy9jb25maWcvc2gvbGludXguaCBiL2djYy9jb25maWcvc2gvbGludXguaAoraW5kZXggYzMwMDgzNDIzZjIuLjE5NmI4MjcyNWY4IDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9zaC9saW51eC5oCisrKysgYi9nY2MvY29uZmlnL3NoL2xpbnV4LmgKK0BAIC02NCw3ICs2NCw3IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCisgICAiL2xpYi9sZC1tdXNsLXNoIiBNVVNMX0RZTkFNSUNfTElOS0VSX0UgTVVTTF9EWU5BTUlDX0xJTktFUl9GUCBcCisgICAiJXttZmRwaWM6LWZkcGljfS5zby4xIgorIAorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbGludXguc28uMiIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgorIAorICN1bmRlZiBTVUJUQVJHRVRfTElOS19FTVVMX1NVRkZJWAorICNkZWZpbmUgU1VCVEFSR0VUX0xJTktfRU1VTF9TVUZGSVggIiV7bWZkcGljOl9mZDs6X2xpbnV4fSIKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL3NwYXJjL2xpbnV4LmggYi9nY2MvY29uZmlnL3NwYXJjL2xpbnV4LmgKK2luZGV4IGNlMDg0NjU2ZmNhLi5iZWQ2MzAwY2IyYSAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvc3BhcmMvbGludXguaAorKysrIGIvZ2NjL2NvbmZpZy9zcGFyYy9saW51eC5oCitAQCAtODMsNyArODMsNyBAQCBleHRlcm4gY29uc3QgY2hhciAqaG9zdF9kZXRlY3RfbG9jYWxfY3B1IChpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpOworICAgIFdoZW4gdGhlIC1zaGFyZWQgbGluayBvcHRpb24gaXMgdXNlZCBhIGZpbmFsIGxpbmsgaXMgbm90IGJlaW5nCisgICAgZG9uZS4gICovCisgCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC5zby4yIgorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCisgCisgI3VuZGVmICBMSU5LX1NQRUMKKyAjZGVmaW5lIExJTktfU1BFQyAiLW0gZWxmMzJfc3BhcmMgJXtzaGFyZWQ6LXNoYXJlZH0gXAorZGlmZiAtLWdpdCBhL2djYy9jb25maWcvc3BhcmMvbGludXg2NC5oIGIvZ2NjL2NvbmZpZy9zcGFyYy9saW51eDY0LmgKK2luZGV4IDU3M2NlOGE5YTRjLi42NzQ5ZjZiNWQ5YyAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvc3BhcmMvbGludXg2NC5oCisrKysgYi9nY2MvY29uZmlnL3NwYXJjL2xpbnV4NjQuaAorQEAgLTg0LDggKzg0LDggQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKKyAgICBXaGVuIHRoZSAtc2hhcmVkIGxpbmsgb3B0aW9uIGlzIHVzZWQgYSBmaW5hbCBsaW5rIGlzIG5vdCBiZWluZworICAgIGRvbmUuICAqLworIAorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiAiL2xpYi9sZC1saW51eC5zby4yIgorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCAiL2xpYjY0L2xkLWxpbnV4LnNvLjIiCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjMyIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKKyAKKyAjaWZkZWYgU1BBUkNfQklfQVJDSAorIAorLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDIxLWdjYy1GaXgtYXJndW1lbnQtbGlzdC10b28tbG9uZy1lcnJvci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAyMS1nY2MtRml4LWFyZ3VtZW50LWxpc3QtdG9vLWxvbmctZXJyb3IucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGU1NjIxNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAyMS1nY2MtRml4LWFyZ3VtZW50LWxpc3QtdG9vLWxvbmctZXJyb3IucGF0Y2gKQEAgLTAsMCArMSw0MCBAQAorRnJvbSA4MGMyNDI0N2ZlZDUyYzEyNjk3OTEwODgwOTBiYzBmYTg1MjgwOTgzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MjY6MzcgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAyMS80N10gZ2NjOiBGaXggYXJndW1lbnQgbGlzdCB0b28gbG9uZyBlcnJvci4KKworVGhlcmUgd291bGQgYmUgYW4gIkFyZ3VtZW50IGxpc3QgdG9vIGxvbmciIGVycm9yIHdoZW4gdGhlCitidWlsZCBkaXJlY3RvcnkgaXMgbG9uZ2VyIHRoYW4gMjAwLCB0aGlzIGlzIGNhdXNlZCBieToKKworaGVhZGVycz1gZWNobyAkKFBMVUdJTl9IRUFERVJTKSB8IHRyICcgJyAnXDAxMicgfCBzb3J0IC11YAorCitUaGUgUExVR0lOX0hFQURFUlMgaXMgdG9vIGxvbmcgYmVmb3JlIHNvcnQsIHNvIHRoZSAiZWNobyIgY2FuJ3QgaGFuZGxlCitpdCwgdXNlIHRoZSAkKHNvcnQgbGlzdCkgb2YgR05VIG1ha2Ugd2hpY2ggY2FuIGhhbmRsZSB0aGUgdG9vIGxvbmcgbGlzdAord291bGQgZml4IHRoZSBwcm9ibGVtLCB0aGUgaGVhZGVyIHdvdWxkIGJlIHNob3J0IGVub3VnaCBhZnRlciBzb3J0ZWQuCitUaGUgInRyICcgJyAnXDAxMiciIHdhcyB1c2VkIGZvciB0cmFuc2xhdGluZyB0aGUgc3BhY2UgdG8gIlxuIiwgdGhlCiskKHNvcnQgbGlzdCkgZG9lc24ndCBuZWVkIHRoaXMuCisKK1NpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBnY2MvTWFrZWZpbGUuaW4gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvTWFrZWZpbGUuaW4gYi9nY2MvTWFrZWZpbGUuaW4KK2luZGV4IDdiNTkwYzliYmQzLi4yM2NjYTdmMGQ1YSAxMDA2NDQKKy0tLSBhL2djYy9NYWtlZmlsZS5pbgorKysrIGIvZ2NjL01ha2VmaWxlLmluCitAQCAtMzQ1OSw3ICszNDU5LDcgQEAgaW5zdGFsbC1wbHVnaW46IGluc3RhbGxkaXJzIGxhbmcuaW5zdGFsbC1wbHVnaW4gcy1oZWFkZXItdmFycyBpbnN0YWxsLWdlbmd0eXBlCisgIyBXZSBrZWVwIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlIGZvciBmaWxlcyBpbiBjb25maWcgb3IgYy1mYW1pbHkgYW5kIC5kZWYKKyAjIGZpbGVzLiBBbGwgb3RoZXIgZmlsZXMgYXJlIGZsYXR0ZW5lZCB0byBhIHNpbmdsZSBkaXJlY3RvcnkuCisgCSQobWtpbnN0YWxsZGlycykgJChERVNURElSKSQocGx1Z2luX2luY2x1ZGVkaXIpCistCWhlYWRlcnM9YGVjaG8gJChQTFVHSU5fSEVBREVSUykgJCQoY2QgJChzcmNkaXIpOyBlY2hvICouaCAqLmRlZikgfCB0ciAnICcgJ1wwMTInIHwgc29ydCAtdWA7IFwKKysJaGVhZGVycz0iJChzb3J0ICQoUExVR0lOX0hFQURFUlMpICQkKGNkICQoc3JjZGlyKTsgZWNobyAqLmggKi5kZWYpKSI7IFwKKyAJc3JjZGlyc3RyaXA9YGVjaG8gIiQoc3JjZGlyKSIgfCBzZWQgJ3MvW10uW14kJFxcKnxdL1xcXFwmL2cnYDsgXAorIAlmb3IgZmlsZSBpbiAkJGhlYWRlcnM7IGRvIFwKKyAJICBpZiBbIC1mICQkZmlsZSBdIDsgdGhlbiBcCistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMjItRGlzYWJsZS1zZHQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMjItRGlzYWJsZS1zZHQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODcxZjE5NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAyMi1EaXNhYmxlLXNkdC5wYXRjaApAQCAtMCwwICsxLDExMyBAQAorRnJvbSAzMDIxZmVjNDg1ZjQ0NDc4YTNkNWZmZmI0YWRhYzEzZDgzMWZjZGMxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6Mjg6MTAgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAyMi80N10gRGlzYWJsZSBzZHQuCisKK1dlIGRvbid0IGxpc3QgZHRyYWNlIGluIERFUEVORFMgc28gd2Ugc2hvdWxkbid0IGJlIGRlcGVuZGluZyBvbiB0aGlzIGhlYWRlci4KK0l0IG1heSBvciBtYXkgbm90IGV4aXN0IGZyb20gcHJlaXZvdXMgYnVpbGRzIHRob3VnaC4gVG8gYmUgZGV0ZXJtaW5zdGljLCBkaXNhYmxlCitzZHQuaCB1c2FnZSBhbHdheXMuIFRoaXMgYXZvaWRzIGJ1aWxkIGZhaWx1cmVzIGlmIHRoZSBoZWFkZXIgaXMgcmVtb3ZlZCBhZnRlciBjb25maWd1cmUKK2J1dCBiZWZvcmUgbGliZ2NjIGlzIGNvbXBpbGVkIGZvciBleGFtcGxlLgorCitSUCAyMDEyLzgvNworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitEaXNhYmxlIHNkdCBmb3IgbGlic3RkYysrLXYzLgorCitTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtoYWNrXQorLS0tCisgZ2NjL2NvbmZpZ3VyZSAgICAgICAgICAgICB8IDEyICsrKysrKy0tLS0tLQorIGdjYy9jb25maWd1cmUuYWMgICAgICAgICAgfCAxOCArKysrKysrKystLS0tLS0tLS0KKyBsaWJzdGRjKystdjMvY29uZmlndXJlICAgIHwgIDYgKysrLS0tCisgbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5hYyB8ICAyICstCisgNCBmaWxlcyBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUgYi9nY2MvY29uZmlndXJlCitpbmRleCBiNWFjMTU1MjU0MS4uMDhiMmY2M2M3ZmEgMTAwNzU1CistLS0gYS9nY2MvY29uZmlndXJlCisrKysgYi9nY2MvY29uZmlndXJlCitAQCAtMjg5NjcsMTIgKzI4OTY3LDEyIEBAIGZpCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBzeXMvc2R0LmggaW4gdGhlIHRhcmdldCBDIGxpYnJhcnkiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIHN5cy9zZHQuaCBpbiB0aGUgdGFyZ2V0IEMgbGlicmFyeS4uLiAiID4mNjsgfQorIGhhdmVfc3lzX3NkdF9oPW5vCistaWYgdGVzdCAtZiAkdGFyZ2V0X2hlYWRlcl9kaXIvc3lzL3NkdC5oOyB0aGVuCistICBoYXZlX3N5c19zZHRfaD15ZXMKKy0KKy0kYXNfZWNobyAiI2RlZmluZSBIQVZFX1NZU19TRFRfSCAxIiA+PmNvbmZkZWZzLmgKKy0KKy1maQorKyNpZiB0ZXN0IC1mICR0YXJnZXRfaGVhZGVyX2Rpci9zeXMvc2R0Lmg7IHRoZW4KKysjICBoYXZlX3N5c19zZHRfaD15ZXMKKysjCisrIyRhc19lY2hvICIjZGVmaW5lIEhBVkVfU1lTX1NEVF9IIDEiID4+Y29uZmRlZnMuaAorKyMKKysjZmkKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGhhdmVfc3lzX3NkdF9oIiA+JjUKKyAkYXNfZWNobyAiJGhhdmVfc3lzX3NkdF9oIiA+JjY7IH0KKyAKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYworaW5kZXggY2IxNDc5ZDFlZjQuLjA1ODFmZTk2M2RjIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZ3VyZS5hYworKysrIGIvZ2NjL2NvbmZpZ3VyZS5hYworQEAgLTU3NTQsMTUgKzU3NTQsMTUgQEAgZmkKKyBBQ19TVUJTVChbZW5hYmxlX2RlZmF1bHRfc3NwXSkKKyAKKyAjIFRlc3QgZm9yIDxzeXMvc2R0Lmg+IG9uIHRoZSB0YXJnZXQuCistR0NDX1RBUkdFVF9URU1QTEFURShbSEFWRV9TWVNfU0RUX0hdKQorLUFDX01TR19DSEVDS0lORyhzeXMvc2R0LmggaW4gdGhlIHRhcmdldCBDIGxpYnJhcnkpCistaGF2ZV9zeXNfc2R0X2g9bm8KKy1pZiB0ZXN0IC1mICR0YXJnZXRfaGVhZGVyX2Rpci9zeXMvc2R0Lmg7IHRoZW4KKy0gIGhhdmVfc3lzX3NkdF9oPXllcworLSAgQUNfREVGSU5FKEhBVkVfU1lTX1NEVF9ILCAxLAorLSAgICAgICAgICAgIFtEZWZpbmUgaWYgeW91ciB0YXJnZXQgQyBsaWJyYXJ5IHByb3ZpZGVzIHN5cy9zZHQuaF0pCistZmkKKy1BQ19NU0dfUkVTVUxUKCRoYXZlX3N5c19zZHRfaCkKKysjR0NDX1RBUkdFVF9URU1QTEFURShbSEFWRV9TWVNfU0RUX0hdKQorKyNBQ19NU0dfQ0hFQ0tJTkcoc3lzL3NkdC5oIGluIHRoZSB0YXJnZXQgQyBsaWJyYXJ5KQorKyNoYXZlX3N5c19zZHRfaD1ubworKyNpZiB0ZXN0IC1mICR0YXJnZXRfaGVhZGVyX2Rpci9zeXMvc2R0Lmg7IHRoZW4KKysjICBoYXZlX3N5c19zZHRfaD15ZXMKKysjICBBQ19ERUZJTkUoSEFWRV9TWVNfU0RUX0gsIDEsCisrIyAgICAgICAgICAgIFtEZWZpbmUgaWYgeW91ciB0YXJnZXQgQyBsaWJyYXJ5IHByb3ZpZGVzIHN5cy9zZHQuaF0pCisrI2ZpCisrI0FDX01TR19SRVNVTFQoJGhhdmVfc3lzX3NkdF9oKQorIAorICMgQ2hlY2sgaWYgVEZtb2RlIGxvbmcgZG91YmxlIHNob3VsZCBiZSB1c2VkIGJ5IGRlZmF1bHQgb3Igbm90LgorICMgU29tZSBnbGliYyB0YXJnZXRzIHVzZWQgREZtb2RlIGxvbmcgZG91YmxlLCBidXQgd2l0aCBnbGliYyAyLjQKK2RpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlndXJlIGIvbGlic3RkYysrLXYzL2NvbmZpZ3VyZQoraW5kZXggZmI3ZTEyNmMwYjAuLmExODA1N2ZlYjg4IDEwMDc1NQorLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZ3VyZQorKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZ3VyZQorQEAgLTIxODU2LDExICsyMTg1NiwxMSBAQCBhY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCisgYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKKyBhY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251CisgCistICBpZiB0ZXN0ICRnbGliY3h4X2N2X3N5c19zZHRfaCA9IHllczsgdGhlbgorKyMgIGlmIHRlc3QgJGdsaWJjeHhfY3Zfc3lzX3NkdF9oID0geWVzOyB0aGVuCisgCistJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9TWVNfU0RUX0ggMSIgPj5jb25mZGVmcy5oCisrIyRhc19lY2hvICIjZGVmaW5lIEhBVkVfU1lTX1NEVF9IIDEiID4+Y29uZmRlZnMuaAorIAorLSAgZmkKKysjICBmaQorICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRnbGliY3h4X2N2X3N5c19zZHRfaCIgPiY1CisgJGFzX2VjaG8gIiRnbGliY3h4X2N2X3N5c19zZHRfaCIgPiY2OyB9CisgCitkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5hYyBiL2xpYnN0ZGMrKy12My9jb25maWd1cmUuYWMKK2luZGV4IDhlOTczNTAzYmUwLi5hNDZkMjVlNzQwZCAxMDA2NDQKKy0tLSBhL2xpYnN0ZGMrKy12My9jb25maWd1cmUuYWMKKysrKyBiL2xpYnN0ZGMrKy12My9jb25maWd1cmUuYWMKK0BAIC0yMzAsNyArMjMwLDcgQEAgR0xJQkNYWF9DSEVDS19TQ19OUFJPQ0VTU09SU19PTkxOCisgR0xJQkNYWF9DSEVDS19TQ19OUFJPQ19PTkxOCisgR0xJQkNYWF9DSEVDS19QVEhSRUFEU19OVU1fUFJPQ0VTU09SU19OUAorIEdMSUJDWFhfQ0hFQ0tfU1lTQ1RMX0hXX05DUFUKKy1HTElCQ1hYX0NIRUNLX1NEVF9ICisrI0dMSUJDWFhfQ0hFQ0tfU0RUX0gKKyAKKyAjIENoZWNrIGZvciBhdmFpbGFibGUgaGVhZGVycy4KKyBBQ19DSEVDS19IRUFERVJTKFtlbmRpYW4uaCBleGVjaW5mby5oIGZsb2F0LmggZnAuaCBpZWVlZnAuaCBpbnR0eXBlcy5oIFwKKy0tIAorMi4xMi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAyMy1saWJ0b29sLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDIzLWxpYnRvb2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjdkZmIxZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAyMy1saWJ0b29sLnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK0Zyb20gZTc5YTRmODE2OWU4MzZjOGRlYWJjYTVhNDU4ODRjZmUxMWQwNzg0NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjI5OjExICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMjMvNDddIGxpYnRvb2wKKworbGlic3RkYysrIGZyb20gZ2NjLXJ1bnRpbWUgZ2V0cyBjcmVhdGVkIHdpdGggLXJwYXRoPS91c3IvbGliLy4uL2xpYiBmb3IgcWVtdXg4Ni02NAord2hlbiBydW5uaW5nIG9uIGFtIHg4Nl82NCBidWlsZCBob3N0LgorCitUaGlzIHBhdGNoIHN0b3BzIHRoaXMgc3BlYWRpbmcgdG8gbGliZGlyIGluIHRoZSBsaWJzdGRjKysubGEgZmlsZSB3aXRoaW4gbGlidG9vbC4KK0FyZ3VhYmx5LCBpdCBzaG91bGRuJ3QgYmUgcGFzc2luZyB0aGlzIGludG8gbGlidG9vbCBpbiB0aGUgZmlyc3QgcGxhY2UgYnV0Citmb3Igbm93IHRoaXMgcmVzb2x2ZXMgdGhlIG5hc3RpZXN0IHByb2JsZW1zIHRoaXMgY2F1c2VzLgorCitmdW5jX25vcm1hbF9hYnNwYXRoIHdvdWxkIHJlc29sdmUgYW4gZW1wdHkgcGF0aCB0byBgcHdkYCBzbyB3ZSBuZWVkCit0byBmaWx0ZXIgdGhlIHplcm8gY2FzZS4KKworUlAgMjAxMi84LzI0CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgbHRtYWluLnNoIHwgNCArKysrCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbHRtYWluLnNoIGIvbHRtYWluLnNoCitpbmRleCA5NTAzZWM4NWQ3MC4uMDEyMWZiYTcwN2YgMTAwNjQ0CistLS0gYS9sdG1haW4uc2gKKysrKyBiL2x0bWFpbi5zaAorQEAgLTYzNTksNiArNjM1OSwxMCBAQCBmdW5jX21vZGVfbGluayAoKQorIAlmdW5jX3dhcm5pbmcgImlnbm9yaW5nIG11bHRpcGxlIFxgLXJwYXRoJ3MgZm9yIGEgbGlidG9vbCBsaWJyYXJ5IgorIAorICAgICAgIGluc3RhbGxfbGliZGlyPSIkMSIKKysgICAgICBpZiB0ZXN0IC1uICIkaW5zdGFsbF9saWJkaXIiOyB0aGVuCisrCWZ1bmNfbm9ybWFsX2Fic3BhdGggIiRpbnN0YWxsX2xpYmRpciIKKysJaW5zdGFsbF9saWJkaXI9JGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0CisrICAgICAgZmkKKyAKKyAgICAgICBvbGRsaWJzPQorICAgICAgIGlmIHRlc3QgLXogIiRycGF0aCI7IHRoZW4KKy0tIAorMi4xMi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAyNC1nY2MtYXJtdjQtcGFzcy1maXgtdjRieC10by1saW5rZXItdG8tc3VwcG9ydC1FQUJJLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDI0LWdjYy1hcm12NC1wYXNzLWZpeC12NGJ4LXRvLWxpbmtlci10by1zdXBwb3J0LUVBQkkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWExZTFiYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAyNC1nY2MtYXJtdjQtcGFzcy1maXgtdjRieC10by1saW5rZXItdG8tc3VwcG9ydC1FQUJJLnBhdGNoCkBAIC0wLDAgKzEsNDMgQEAKK0Zyb20gNzRkOGRjNDhjYjE4NWUzMDRjNjAwNjdiNGQ4YjUwNDQ3ZWMzMjhlYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjMwOjMyICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMjQvNDddIGdjYzogYXJtdjQ6IHBhc3MgZml4LXY0YnggdG8gbGlua2VyIHRvIHN1cHBvcnQgRUFCSS4KKworVGhlIExJTktfU1BFQyBmb3IgbGludXggZ2V0cyBvdmVyd3JpdHRlbiBieSBsaW51eC1lYWJpLmggd2hpY2gKK21lYW5zIHRoZSB2YWx1ZSBvZiBUQVJHRVRfRklYX1Y0QlhfU1BFQyBnZXRzIGxvc3QgYW5kIGFzIGEgcmVzdWx0Cit0aGUgb3B0aW9uIGlzIG5vdCBwYXNzZWQgdG8gbGlua2VyIHdoZW4gY2hvc2luZyBtYXJjaD1hcm12NAorVGhpcyBwYXRjaCByZWRlZmluZXMgdGhpcyBpbiBsaW51eC1lYWJpLmggYW5kIHJlaW5zZXJ0cyBpdAorZm9yIGVhYmkgZGVmYXVsdGluZyB0b29sY2hhaW5zLgorCitXZSBtaWdodCB3YW50IHRvIHNlbmQgaXQgdXBzdHJlYW0uCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oIHwgNiArKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmggYi9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKK2luZGV4IGZiYWM5YTlkOTk0Li41YTUxYThhNzA5NSAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaAorKysrIGIvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oCitAQCAtODgsMTAgKzg4LDE0IEBACisgI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSIFwKKyAgICIvbGliL2xkLW11c2wtYXJtIiBNVVNMX0RZTkFNSUNfTElOS0VSX0UgIiV7bWZsb2F0LWFiaT1oYXJkOmhmfS5zby4xIgorIAorKy8qIEZvciBhcm12NCB3ZSBwYXNzIC0tZml4LXY0YnggdG8gbGlua2VyIHRvIHN1cHBvcnQgRUFCSSAqLworKyN1bmRlZiBUQVJHRVRfRklYX1Y0QlhfU1BFQworKyNkZWZpbmUgVEFSR0VUX0ZJWF9WNEJYX1NQRUMgIiV7bWNwdT1hcm04fG1jcHU9YXJtODEwfG1jcHU9c3Ryb25nYXJtKnxtYXJjaD1hcm12NDogLS1maXgtdjRieH0iCisrCisgLyogQXQgdGhpcyBwb2ludCwgYnBhYmkuaCB3aWxsIGhhdmUgY2xvYmJlcmVkIExJTktfU1BFQy4gIFdlIHdhbnQgdG8KKyAgICB1c2UgdGhlIEdOVS9MaW51eCB2ZXJzaW9uLCBub3QgdGhlIGdlbmVyaWMgQlBBQkkgdmVyc2lvbi4gICovCisgI3VuZGVmICBMSU5LX1NQRUMKKy0jZGVmaW5lIExJTktfU1BFQyBFQUJJX0xJTktfU1BFQwkJCQkJXAorKyNkZWZpbmUgTElOS19TUEVDIFRBUkdFVF9GSVhfVjRCWF9TUEVDIEVBQklfTElOS19TUEVDCQkJXAorICAgTElOVVhfT1JfQU5EUk9JRF9MRCAoTElOVVhfVEFSR0VUX0xJTktfU1BFQywJCQkJXAorIAkJICAgICAgIExJTlVYX1RBUkdFVF9MSU5LX1NQRUMgIiAiIEFORFJPSURfTElOS19TUEVDKQorIAorLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDI1LVVzZS10aGUtbXVsdGlsaWItY29uZmlnLWZpbGVzLWZyb20tQi1pbnN0ZWFkLW9mLXVzaW4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMjUtVXNlLXRoZS1tdWx0aWxpYi1jb25maWctZmlsZXMtZnJvbS1CLWluc3RlYWQtb2YtdXNpbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjM0MTMyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDI1LVVzZS10aGUtbXVsdGlsaWItY29uZmlnLWZpbGVzLWZyb20tQi1pbnN0ZWFkLW9mLXVzaW4ucGF0Y2gKQEAgLTAsMCArMSwxMDIgQEAKK0Zyb20gYWM1MGRjMzAxMGE2NjIyMGFkNDgzYzA5ZWZlMjcwYmIzZjRjOTQyNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjMzOjA0ICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMjUvNDddIFVzZSB0aGUgbXVsdGlsaWIgY29uZmlnIGZpbGVzIGZyb20gJHtCfSBpbnN0ZWFkIG9mCisgdXNpbmcgdGhlIG9uZXMgZnJvbSAke1N9CisKK1VzZSB0aGUgbXVsdGlsaWIgY29uZmlnIGZpbGVzIGZyb20gJHtCfSBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBvbmVzIGZyb20gJHtTfQorc28gdGhhdCB0aGUgc291cmNlIGNhbiBiZSBzaGFyZWQgYmV0d2VlbiBnY2MtY3Jvc3MtaW5pdGlhbCwKK2djYy1jcm9zcy1pbnRlcm1lZGlhdGUsIGdjYy1jcm9zcywgZ2NjLXJ1bnRpbWUsIGFuZCBhbHNvIHRoZSBzZGsgYnVpbGQuCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBDb25zdGFudGluIE11c2NhIDxjb25zdGFudGlueC5tdXNjYUBpbnRlbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KKy0tLQorIGdjYy9jb25maWd1cmUgICAgfCAyMiArKysrKysrKysrKysrKysrKystLS0tCisgZ2NjL2NvbmZpZ3VyZS5hYyB8IDIyICsrKysrKysrKysrKysrKysrKy0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDM2IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlIGIvZ2NjL2NvbmZpZ3VyZQoraW5kZXggMDhiMmY2M2M3ZmEuLjZiYTM5MWVkMDY4IDEwMDc1NQorLS0tIGEvZ2NjL2NvbmZpZ3VyZQorKysrIGIvZ2NjL2NvbmZpZ3VyZQorQEAgLTEyMTMwLDEwICsxMjEzMCwyMCBAQCBkb25lCisgdG1ha2VfZmlsZV89CisgZm9yIGYgaW4gJHt0bWFrZV9maWxlfQorIGRvCistCWlmIHRlc3QgLWYgJHtzcmNkaXJ9L2NvbmZpZy8kZgorLQl0aGVuCistCQl0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gXCQoc3JjZGlyKS9jb25maWcvJGYiCistCWZpCisrICBjYXNlICRmIGluCisrICAgICovdC1saW51eDY0ICkKKysgICAgICAgaWYgdGVzdCAtZiAuL2NvbmZpZy8kZgorKyAgICAgICB0aGVuCisrICAgICAgICAgdG1ha2VfZmlsZV89IiR7dG1ha2VfZmlsZV99IC4vY29uZmlnLyRmIgorKyAgICAgICBmaQorKyAgICAgICA7OworKyAgICAqICkKKysgICAgICAgaWYgdGVzdCAtZiAke3NyY2Rpcn0vY29uZmlnLyRmCisrICAgICAgIHRoZW4KKysgICAgICAgICB0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gXCQoc3JjZGlyKS9jb25maWcvJGYiCisrICAgICAgIGZpCisrICAgICAgIDs7CisrICBlc2FjCisgZG9uZQorIHRtYWtlX2ZpbGU9IiR7dG1ha2VfZmlsZV99IgorIAorQEAgLTEyMTQ0LDYgKzEyMTU0LDEwIEBAIHRtX2ZpbGVfbGlzdD0ib3B0aW9ucy5oIgorIHRtX2luY2x1ZGVfbGlzdD0ib3B0aW9ucy5oIGluc24tY29uc3RhbnRzLmgiCisgZm9yIGYgaW4gJHRtX2ZpbGU7IGRvCisgICBjYXNlICRmIGluCisrICAgICovbGludXg2NC5oICkKKysgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gLi9jb25maWcvJGYiCisrICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9IC4vY29uZmlnLyRmIgorKyAgICAgICA7OworICAgICAuLyogKQorICAgICAgICBmPWBlY2hvICRmIHwgc2VkICdzL14uLi8vJ2AKKyAgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gJGYiCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZS5hYyBiL2djYy9jb25maWd1cmUuYWMKK2luZGV4IDA1ODFmZTk2M2RjLi44NTUxYTQxMmRmMyAxMDA2NDQKKy0tLSBhL2djYy9jb25maWd1cmUuYWMKKysrKyBiL2djYy9jb25maWd1cmUuYWMKK0BAIC0xOTAyLDEwICsxOTAyLDIwIEBAIGRvbmUKKyB0bWFrZV9maWxlXz0KKyBmb3IgZiBpbiAke3RtYWtlX2ZpbGV9CisgZG8KKy0JaWYgdGVzdCAtZiAke3NyY2Rpcn0vY29uZmlnLyRmCistCXRoZW4KKy0JCXRtYWtlX2ZpbGVfPSIke3RtYWtlX2ZpbGVffSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKKy0JZmkKKysgIGNhc2UgJGYgaW4KKysgICAgKi90LWxpbnV4NjQgKQorKyAgICAgICBpZiB0ZXN0IC1mIC4vY29uZmlnLyRmCisrICAgICAgIHRoZW4KKysgICAgICAgICB0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gLi9jb25maWcvJGYiCisrICAgICAgIGZpCisrICAgICAgIDs7CisrICAgICogKQorKyAgICAgICBpZiB0ZXN0IC1mICR7c3JjZGlyfS9jb25maWcvJGYKKysgICAgICAgdGhlbgorKyAgICAgICAgIHRtYWtlX2ZpbGVfPSIke3RtYWtlX2ZpbGVffSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKKysgICAgICAgZmkKKysgICAgICAgOzsKKysgIGVzYWMKKyBkb25lCisgdG1ha2VfZmlsZT0iJHt0bWFrZV9maWxlX30iCisgCitAQCAtMTkxNiw2ICsxOTI2LDEwIEBAIHRtX2ZpbGVfbGlzdD0ib3B0aW9ucy5oIgorIHRtX2luY2x1ZGVfbGlzdD0ib3B0aW9ucy5oIGluc24tY29uc3RhbnRzLmgiCisgZm9yIGYgaW4gJHRtX2ZpbGU7IGRvCisgICBjYXNlICRmIGluCisrICAgICovbGludXg2NC5oICkKKysgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gLi9jb25maWcvJGYiCisrICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9IC4vY29uZmlnLyRmIgorKyAgICAgICA7OworICAgICAuLyogKQorICAgICAgICBmPWBlY2hvICRmIHwgc2VkICdzL14uLi8vJ2AKKyAgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gJGYiCistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMjYtQXZvaWQtdXNpbmctbGliZGlyLWZyb20tLmxhLXdoaWNoLXVzdWFsbHktcG9pbnRzLXRvLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAyNi1Bdm9pZC11c2luZy1saWJkaXItZnJvbS0ubGEtd2hpY2gtdXN1YWxseS1wb2ludHMtdG8tLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlMjQ3MTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMjYtQXZvaWQtdXNpbmctbGliZGlyLWZyb20tLmxhLXdoaWNoLXVzdWFsbHktcG9pbnRzLXRvLS5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9tIDlmYWI0N2Q4NjYyOTg2YWQ4ODdkOWVkZGMzOWZjYmUyNWU1NzYzODMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyMCBGZWIgMjAxNSAwOTozOTozOCArMDAwMAorU3ViamVjdDogW1BBVENIIDI2LzQ3XSBBdm9pZCB1c2luZyBsaWJkaXIgZnJvbSAubGEgd2hpY2ggdXN1YWxseSBwb2ludHMgdG8gYQorIGhvc3QgcGF0aAorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBKb25hdGhhbiBMaXUgPG5ldDE0N0BnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbHRtYWluLnNoIHwgMyArKysKKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9sdG1haW4uc2ggYi9sdG1haW4uc2gKK2luZGV4IDAxMjFmYmE3MDdmLi41MmJkYmRiNWY5YyAxMDA2NDQKKy0tLSBhL2x0bWFpbi5zaAorKysrIGIvbHRtYWluLnNoCitAQCAtNTYyOCw2ICs1NjI4LDkgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgIGFic2Rpcj0iJGFic19sYWRpciIKKyAJICAgIGxpYmRpcj0iJGFic19sYWRpciIKKyAJICBlbHNlCisrCSAgICAjIEluc3RlYWQgb2YgdXNpbmcgbGliZGlyIGZyb20gLmxhIHdoaWNoIHVzdWFsbHkgcG9pbnRzIHRvIGEgaG9zdCBwYXRoLAorKwkgICAgIyB1c2UgdGhlIHBhdGggdGhlIC5sYSBpcyBjb250YWluZWQgaW4uCisrCSAgICBsaWJkaXI9IiRhYnNfbGFkaXIiCisgCSAgICBkaXI9IiRsaWJkaXIiCisgCSAgICBhYnNkaXI9IiRsaWJkaXIiCisgCSAgZmkKKy0tIAorMi4xMi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAyNy1leHBvcnQtQ1BQLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDI3LWV4cG9ydC1DUFAucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGY5ZTFmMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAyNy1leHBvcnQtQ1BQLnBhdGNoCkBAIC0wLDAgKzEsNTMgQEAKK0Zyb20gZmE2YTQ2ZmRmNzNkZTdlYWNkMjg5YzA4NGJiZGU2NjQzYjIzZjczYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDIwIEZlYiAyMDE1IDA5OjQwOjU5ICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMjcvNDddIGV4cG9ydCBDUFAKKworVGhlIE9FIGVudmlyb25tZW50IHNldHMgYW5kIGV4cG9ydHMgQ1BQIGFzIGJlaW5nIHRoZSB0YXJnZXQgZ2NjLiBXaGVuCitidWlsZGluZyBnY2MtY3Jvc3MtY2FuYWRpYW4gZm9yIGEgbWluZ3cgdGFyZ2V0dGVkIHNkaywgdGhlIGZvbGxvd2luZyBjYW4gYmUgZm91bmQKK2luIGJ1aWxkLng4Nl82NC1wb2t5c2RrLW1pbmd3MzIuaTU4Ni1wb2t5LWxpbnV4L2J1aWxkLXg4Nl82NC1saW51eC9saWJpYmVydHkvY29uZmlnLmxvZzoKKworY29uZmlndXJlOjM2NDE6IGNoZWNraW5nIGZvciBfRklMRV9PRkZTRVRfQklUUyB2YWx1ZSBuZWVkZWQgZm9yIGxhcmdlIGZpbGVzCitjb25maWd1cmU6MzY2NjogZ2NjICAtYyAtaXN5c3RlbS9tZWRpYS9idWlsZDEvcG9reS9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9pbmNsdWRlIC1PMiAtcGlwZSAgY29uZnRlc3QuYyA+JjUKK2NvbmZpZ3VyZTozNjY2OiAkPyA9IDAKK2NvbmZpZ3VyZTozNjk4OiByZXN1bHQ6IG5vCitjb25maWd1cmU6Mzc4NjogY2hlY2tpbmcgaG93IHRvIHJ1biB0aGUgQyBwcmVwcm9jZXNzb3IKK2NvbmZpZ3VyZTozODU2OiByZXN1bHQ6IHg4Nl82NC1wb2t5c2RrLW1pbmd3MzItZ2NjIC1FIC0tc3lzcm9vdD0vbWVkaWEvYnVpbGQxL3Bva3kvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1uYXRpdmVzZGstbWluZ3czMi1wb2t5c2RrLW1pbmd3MzIKK2NvbmZpZ3VyZTozODc2OiB4ODZfNjQtcG9reXNkay1taW5ndzMyLWdjYyAtRSAtLXN5c3Jvb3Q9L21lZGlhL2J1aWxkMS9wb2t5L2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbmF0aXZlc2RrLW1pbmd3MzItcG9reXNkay1taW5ndzMyIGNvbmZ0ZXN0LmMKK2NvbmZpZ3VyZTozODc2OiAkPyA9IDAKKworTm90ZSB0aGlzIGlzIGEgKmJ1aWxkKiB0YXJnZXQgKGluIGJ1aWxkLXg4Nl82NC1saW51eCkgc28gaXQgc2hvdWxkIGJlCit1c2luZyB0aGUgaG9zdCAiZ2NjIiwgbm90IHg4Nl82NC1wb2t5c2RrLW1pbmd3MzItZ2NjLiBTaW5jZSB0aGUgbWluZ3czMgoraGVhZGVycyBhcmUgdmVyeSBkaWZmZXJlbnQsIHVzaW5nIHRoZSB3cm9uZyBjcHAgaXMgYSByZWFsIHByb2JsZW0uIEl0IGlzIGxlYWtpbmcKK2ludG8gY29uZmlndXJlIHRocm91Z2ggdGhlIENQUCB2YXJpYWJsZS4gVWx0aW1hdGVseSB0aGlzIGxlYWRzIHRvIGJ1aWxkCitmYWlsdXJlcyByZWxhdGVkIHRvIG5vdCBiZWluZyBhYmxlIHRvIGluY2x1ZGUgYSBwcm9jZXNzLmggZmlsZSBmb3IgcGVtLXVuaXguYy4KKworVGhlIGZpeCBpcyB0byBlbnN1cmUgd2UgZXhwb3J0IGEgc2FuZSBDUFAgdmFsdWUgaW50byB0aGUgYnVpbGQKK2Vudmlyb25tZW50IHdoZW4gdXNpbmcgYnVpbGQgdGFyZ2V0cy4gV2UgY291bGQgZGVmaW5lIGEgQ1BQX0ZPUl9CVUlMRCB2YWx1ZSB3aGljaCBtYXkgYmUKK3RoZSB2ZXJzaW9uIHdoaWNoIG5lZWRzIHRvIGJlIHVwc3RyZWFtZWQgYnV0IGZvciBub3csIHRoaXMgZml4IGlzIGdvb2QgZW5vdWdoIHRvCithdm9pZCB0aGUgcHJvYmxlbS4KKworUlAgMjIvMDgvMjAxMworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIE1ha2VmaWxlLmluIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCitpbmRleCBiODI0ZTBhMGNhMS4uZTM0ZTk1NTUzODggMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5pbgorKysrIGIvTWFrZWZpbGUuaW4KK0BAIC0xNDksNiArMTQ5LDcgQEAgQlVJTERfRVhQT1JUUyA9IFwKKyAJQVI9IiQoQVJfRk9SX0JVSUxEKSI7IGV4cG9ydCBBUjsgXAorIAlBUz0iJChBU19GT1JfQlVJTEQpIjsgZXhwb3J0IEFTOyBcCisgCUNDPSIkKENDX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ0M7IFwKKysJQ1BQPSIkKENDX0ZPUl9CVUlMRCkgLUUiOyBleHBvcnQgQ1BQOyBcCisgCUNGTEFHUz0iJChDRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDRkxBR1M7IFwKKyAJQ09ORklHX1NIRUxMPSIkKFNIRUxMKSI7IGV4cG9ydCBDT05GSUdfU0hFTEw7IFwKKyAJQ1hYPSIkKENYWF9GT1JfQlVJTEQpIjsgZXhwb3J0IENYWDsgXAorLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDI4LUVuYWJsZS1TUEUtQWx0aVZlYy1nZW5lcmF0aW9uLW9uLXBvd2VwYy1saW51eC10YXJnZXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMjgtRW5hYmxlLVNQRS1BbHRpVmVjLWdlbmVyYXRpb24tb24tcG93ZXBjLWxpbnV4LXRhcmdldC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTAzMzQ5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDI4LUVuYWJsZS1TUEUtQWx0aVZlYy1nZW5lcmF0aW9uLW9uLXBvd2VwYy1saW51eC10YXJnZXQucGF0Y2gKQEAgLTAsMCArMSw1NiBAQAorRnJvbSAyYzA1YjQwNzJmOTgyZGY4MDAyZDYxMzI3ODM3ZTE4YTcyNGU5MzRmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZHJ1LUNlemFyIFNhcmRhbiA8YWxleGFuZHJ1LnNhcmRhbkBmcmVlc2NhbGUuY29tPgorRGF0ZTogV2VkLCA1IEZlYiAyMDE0IDE2OjUyOjMxICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMjgvNDddIEVuYWJsZSBTUEUgJiBBbHRpVmVjIGdlbmVyYXRpb24gb24gcG93ZXBjKmxpbnV4IHRhcmdldAorCitXaGVuIGlzIGNvbmZpZ3VyZWQgd2l0aCAtLXRhcmdldD1wb3dlcnBjLWxpbnV4LCB0aGUgcmVzdWx0aW5nIEdDQyB3aWxsCitub3QgYmUgYWJsZSB0byBnZW5lcmF0ZSBjb2RlIGZvciBTUEUgdGFyZ2V0cyAoZTUwMHYxL3YyKS4KK0dDQyBjb25maWd1cmVkIHdpdGggLS10YXJnZXQ9cG93ZXJwYy1saW51eHNwZSB3aWxsIG5vdCBiZSBhYmxlIHRvCitnZW5lcmF0ZSBBbHRpVmVjIGluc3RydWN0aW9ucyAoZm9yIGU2NTAwKS4KK1RoaXMgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvbmZpZ3VyZWQgZmlsZSBzdWNoIHRoYXQgU1BFIG9yIEFsdGlWZWMgY29kZQorY2FuIGJlIGdlbmVyYXRlZCB3aGVuIGdjYyBpcyBjb25maWd1cmVkIHdpdGggLS10YXJnZXQ9cG93ZXJwYy1saW51eC4KK1RoZSBBQkkgYW5kIHNwZWNpZmZpYyBpbnN0cnVjdGlvbnMgY2FuIGJlIHNlbGVjdGVkIHRocm91Z2ggdGhlCisiLW1hYmk9c3BlIG9yIC1tYWJpPWFsdGl2ZWMiIGFuZCB0aGUgIi1tc3BlIG9yIC1tYWx0aXZlYyIgcGFyYW1ldGVycy4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQorCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kcnUtQ2V6YXIgU2FyZGFuIDxhbGV4YW5kcnUuc2FyZGFuQGZyZWVzY2FsZS5jb20+CistLS0KKyBnY2MvY29uZmlnLmdjYyAgICAgICAgICAgICAgIHwgOSArKysrKysrKy0KKyBnY2MvY29uZmlnL3JzNjAwMC9saW51eHNwZS5oIHwgMyAtLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2djYy9jb25maWcuZ2NjIGIvZ2NjL2NvbmZpZy5nY2MKK2luZGV4IDVlNDVmNGI1MTk5Li45YjM4MWRmZDlhZiAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcuZ2NjCisrKysgYi9nY2MvY29uZmlnLmdjYworQEAgLTI0MTUsNyArMjQxNSwxNCBAQCBwb3dlcnBjLSotcnRlbXMqKQorIAl0bWFrZV9maWxlPSIke3RtYWtlX2ZpbGV9IHJzNjAwMC90LWZwcnVsZXMgcnM2MDAwL3QtcnRlbXMgcnM2MDAwL3QtcHBjY29tbSIKKyAJOzsKKyBwb3dlcnBjKi0qLWxpbnV4KikKKy0JdG1fZmlsZT0iJHt0bV9maWxlfSBkYnhlbGYuaCBlbGZvcy5oIGdudS11c2VyLmggZnJlZWJzZC1zcGVjLmggcnM2MDAwL3N5c3Y0LmgiCisrCWNhc2UgJHt0YXJnZXR9IGluCisrCSAgICBwb3dlcnBjKi0qLWxpbnV4KnNwZSogfCBwb3dlcnBjKi0qLWxpbnV4KmFsdGl2ZWMqKQorKwkJdG1fZmlsZT0iJHt0bV9maWxlfSBkYnhlbGYuaCBlbGZvcy5oIGdudS11c2VyLmggZnJlZWJzZC1zcGVjLmggcnM2MDAwL3N5c3Y0LmgiCisrCQk7OworKwkgICAgKikKKysJCXRtX2ZpbGU9IiR7dG1fZmlsZX0gZGJ4ZWxmLmggZWxmb3MuaCBnbnUtdXNlci5oIGZyZWVic2Qtc3BlYy5oIHJzNjAwMC9zeXN2NC5oIHJzNjAwMC9saW51eGFsdGl2ZWMuaCByczYwMDAvbGludXhzcGUuaCByczYwMDAvZTUwMC5oIgorKwkJOzsKKysJZXNhYworIAlleHRyYV9vcHRpb25zPSIke2V4dHJhX29wdGlvbnN9IHJzNjAwMC9zeXN2NC5vcHQiCisgCXRtYWtlX2ZpbGU9IiR7dG1ha2VfZmlsZX0gcnM2MDAwL3QtZnBydWxlcyByczYwMDAvdC1wcGNjb21tIgorIAlleHRyYV9vYmpzPSIkZXh0cmFfb2JqcyByczYwMDAtbGludXgubyIKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eHNwZS5oIGIvZ2NjL2NvbmZpZy9yczYwMDAvbGludXhzcGUuaAoraW5kZXggOTJlZmFiZmU2NjQuLjZkNDg2NDUxYTdlIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9yczYwMDAvbGludXhzcGUuaAorKysrIGIvZ2NjL2NvbmZpZy9yczYwMDAvbGludXhzcGUuaAorQEAgLTI3LDYgKzI3LDMgQEAKKyAjdW5kZWYJVEFSR0VUX0RFRkFVTFQKKyAjZGVmaW5lIFRBUkdFVF9ERUZBVUxUIE1BU0tfU1RSSUNUX0FMSUdOCisgI2VuZGlmCistCistI3VuZGVmICBBU01fREVGQVVMVF9TUEVDCistI2RlZmluZQlBU01fREVGQVVMVF9TUEVDICItbXBwYyAtbXNwZSAtbWU1MDAiCistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMjktRGlzYWJsZS10aGUtTVVMVElMSUJfT1NESVJOQU1FUy1hbmQtb3RoZXItbXVsdGlsaWItby5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAyOS1EaXNhYmxlLXRoZS1NVUxUSUxJQl9PU0RJUk5BTUVTLWFuZC1vdGhlci1tdWx0aWxpYi1vLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczMDZhMjgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMjktRGlzYWJsZS10aGUtTVVMVElMSUJfT1NESVJOQU1FUy1hbmQtb3RoZXItbXVsdGlsaWItby5wYXRjaApAQCAtMCwwICsxLDQyIEBACitGcm9tIGVjMGY4NDNiODZjMGY3NmJjNWViYjIwZmFmYmM0YWFlMWJlNGRiNjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyMCBGZWIgMjAxNSAxMDoyMTo1NSArMDAwMAorU3ViamVjdDogW1BBVENIIDI5LzQ3XSBEaXNhYmxlIHRoZSBNVUxUSUxJQl9PU0RJUk5BTUVTIGFuZCBvdGhlciBtdWx0aWxpYgorIG9wdGlvbnMuCisKK0hhcmQgY29kaW5nIHRoZSBNVUxUSUxJQl9PU0RJUk5BTUVTIHdpdGggLi4vbGliNjQgaXMgY2F1c2luZyBwcm9ibGVtcyBvbgorc3lzdGVtcyB3aGVyZSB0aGUgbGliZGlyIGlzIE5PVCBzZXQgdG8gL2xpYjY0LiAgVGhpcyBpcyBhbGxvd2VkIGJ5IHRoZQorQUJJLCBhcworbG9uZyBhcyB0aGUgZHluYW1pYyBsb2FkZXIgaXMgcHJlc2VudCBpbiAvbGliLgorCitXZSBzaW1wbHkgd2FudCB0byB1c2UgdGhlIGRlZmF1bHQgcnVsZXMgaW4gZ2NjIHRvIGZpbmQgYW5kIGNvbmZpZ3VyZSB0aGUKK25vcm1hbCBsaWJkaXIuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZVtPRS1TcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdjYy9jb25maWcvYWFyY2g2NC90LWFhcmNoNjQtbGludXggfCA4ICsrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC90LWFhcmNoNjQtbGludXggYi9nY2MvY29uZmlnL2FhcmNoNjQvdC1hYXJjaDY0LWxpbnV4CitpbmRleCBhYjA2NGFiNmYyMi4uZjRiMWY5OGIyMTYgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvdC1hYXJjaDY0LWxpbnV4CisrKysgYi9nY2MvY29uZmlnL2FhcmNoNjQvdC1hYXJjaDY0LWxpbnV4CitAQCAtMjEsOCArMjEsOCBAQAorIExJQjFBU01TUkMgICA9IGFhcmNoNjQvbGliMWZ1bmNzLmFzbQorIExJQjFBU01GVU5DUyA9IF9hYXJjaDY0X3N5bmNfY2FjaGVfcmFuZ2UKKyAKKy1BQVJDSF9CRSA9ICQoaWYgJChmaW5kc3RyaW5nIFRBUkdFVF9CSUdfRU5ESUFOX0RFRkFVTFQ9MSwgJCh0bV9kZWZpbmVzKSksX2JlKQorLU1VTFRJTElCX09TRElSTkFNRVMgPSBtYWJpLmxwNjQ9Li4vbGliNjQkKGNhbGwgaWZfbXVsdGlhcmNoLDphYXJjaDY0JChBQVJDSF9CRSktbGludXgtZ251KQorLU1VTFRJQVJDSF9ESVJOQU1FID0gJChjYWxsIGlmX211bHRpYXJjaCxhYXJjaDY0JChBQVJDSF9CRSktbGludXgtZ251KQorKyNBQVJDSF9CRSA9ICQoaWYgJChmaW5kc3RyaW5nIFRBUkdFVF9CSUdfRU5ESUFOX0RFRkFVTFQ9MSwgJCh0bV9kZWZpbmVzKSksX2JlKQorKyNNVUxUSUxJQl9PU0RJUk5BTUVTID0gbWFiaS5scDY0PS4uL2xpYjY0JChjYWxsIGlmX211bHRpYXJjaCw6YWFyY2g2NCQoQUFSQ0hfQkUpLWxpbnV4LWdudSkKKysjTVVMVElBUkNIX0RJUk5BTUUgPSAkKGNhbGwgaWZfbXVsdGlhcmNoLGFhcmNoNjQkKEFBUkNIX0JFKS1saW51eC1nbnUpCisgCistTVVMVElMSUJfT1NESVJOQU1FUyArPSBtYWJpLmlscDMyPS4uL2xpYmlscDMyCisrI01VTFRJTElCX09TRElSTkFNRVMgKz0gbWFiaS5pbHAzMj0uLi9saWJpbHAzMgorLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDMwLUVuc3VyZS10YXJnZXQtZ2NjLWhlYWRlcnMtY2FuLWJlLWluY2x1ZGVkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDMwLUVuc3VyZS10YXJnZXQtZ2NjLWhlYWRlcnMtY2FuLWJlLWluY2x1ZGVkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2OGJhOTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMzAtRW5zdXJlLXRhcmdldC1nY2MtaGVhZGVycy1jYW4tYmUtaW5jbHVkZWQucGF0Y2gKQEAgLTAsMCArMSw5OCBAQAorRnJvbSBiZjU4MzY5ODllMGZmYzFjMWRmMTM2OWRmMDY4NzdlOTZjMDhkZjQxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjAgRmViIDIwMTUgMTA6MjU6MTEgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAzMC80N10gRW5zdXJlIHRhcmdldCBnY2MgaGVhZGVycyBjYW4gYmUgaW5jbHVkZWQKKworVGhlcmUgYXJlIGEgZmV3IGhlYWRlcnMgaW5zdGFsbGVkIGFzIHBhcnQgb2YgdGhlIE9wZW5FbWJlZGRlZAorZ2NjLXJ1bnRpbWUgdGFyZ2V0IChvbXAuaCwgc3NwLyouaCkuIEJlaW5nIGluc3RhbGxlZCBmcm9tIGEgcmVjaXBlCitidWlsdCBmb3IgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUsIHRoZXNlIGFyZSB3aXRoaW4gdGhlIHRhcmdldAorc3lzcm9vdCBhbmQgbm90IGNyb3NzL25hdGl2ZXNkazsgdGh1cyB0aGV5IHdlcmVuJ3QgYWJsZSB0byBiZQorZm91bmQgYnkgZ2NjIHdpdGggdGhlIGV4aXN0aW5nIHNlYXJjaCBwYXRocy4gQWRkIHN1cHBvcnQgZm9yCitwaWNraW5nIHVwIHRoZXNlIGhlYWRlcnMgdW5kZXIgdGhlIHN5c3Jvb3Qgc3VwcGxpZWQgb24gdGhlIGdjYworY29tbWFuZCBsaW5lIGluIG9yZGVyIHRvIHJlc29sdmUgdGhpcy4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFBhdWwgRWdnbGV0b24gPHBhdWwuZWdnbGV0b25AbGludXguaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdjYy9NYWtlZmlsZS5pbiAgfCAyICsrCisgZ2NjL2NwcGRlZmF1bHQuYyB8IDQgKysrKworIGdjYy9kZWZhdWx0cy5oICAgfCA5ICsrKysrKysrKworIGdjYy9nY2MuYyAgICAgICAgfCA3IC0tLS0tLS0KKyA0IGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvTWFrZWZpbGUuaW4gYi9nY2MvTWFrZWZpbGUuaW4KK2luZGV4IDIzY2NhN2YwZDVhLi45NWQyMWVmZmFkMyAxMDA2NDQKKy0tLSBhL2djYy9NYWtlZmlsZS5pbgorKysrIGIvZ2NjL01ha2VmaWxlLmluCitAQCAtNjA4LDYgKzYwOCw3IEBAIGxpYmV4ZWNkaXIgPSBAbGliZXhlY2RpckAKKyAKKyAjIERpcmVjdG9yeSBpbiB3aGljaCB0aGUgY29tcGlsZXIgZmluZHMgbGlicmFyaWVzIGV0Yy4KKyBsaWJzdWJkaXIgPSAkKGxpYmRpcikvZ2NjLyQocmVhbF90YXJnZXRfbm9uY2Fub25pY2FsKS8kKHZlcnNpb24pJChhY2NlbF9kaXJfc3VmZml4KQorK2xpYnN1YmRpcl90YXJnZXQgPSBnY2MvJCh0YXJnZXRfbm9uY2Fub25pY2FsKS8kKHZlcnNpb24pCisgIyBEaXJlY3RvcnkgaW4gd2hpY2ggdGhlIGNvbXBpbGVyIGZpbmRzIGV4ZWN1dGFibGVzCisgbGliZXhlY3N1YmRpciA9ICQobGliZXhlY2RpcikvZ2NjLyQocmVhbF90YXJnZXRfbm9uY2Fub25pY2FsKS8kKHZlcnNpb24pJChhY2NlbF9kaXJfc3VmZml4KQorICMgRGlyZWN0b3J5IGluIHdoaWNoIGFsbCBwbHVnaW4gcmVzb3VyY2VzIGFyZSBpbnN0YWxsZWQKK0BAIC0yNzkxLDYgKzI3OTIsNyBAQCBDRkxBR1MtaW50bC5vICs9IC1ETE9DQUxFRElSPVwiJChsb2NhbGVkaXIpXCIKKyAKKyBQUkVQUk9DRVNTT1JfREVGSU5FUyA9IFwKKyAgIC1ER0NDX0lOQ0xVREVfRElSPVwiJChsaWJzdWJkaXIpL2luY2x1ZGVcIiBcCisrICAtREdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQ9XCIkKGxpYnN1YmRpcl90YXJnZXQpL2luY2x1ZGVcIiBcCisgICAtREZJWEVEX0lOQ0xVREVfRElSPVwiJChsaWJzdWJkaXIpL2luY2x1ZGUtZml4ZWRcIiBcCisgICAtREdQTFVTUExVU19JTkNMVURFX0RJUj1cIiQoZ2NjX2d4eF9pbmNsdWRlX2RpcilcIiBcCisgICAtREdQTFVTUExVU19JTkNMVURFX0RJUl9BRERfU1lTUk9PVD0kKGdjY19neHhfaW5jbHVkZV9kaXJfYWRkX3N5c3Jvb3QpIFwKK2RpZmYgLS1naXQgYS9nY2MvY3BwZGVmYXVsdC5jIGIvZ2NjL2NwcGRlZmF1bHQuYworaW5kZXggMTBiOTZlY2EwYTcuLmM4ZGEwODg0ODcyIDEwMDY0NAorLS0tIGEvZ2NjL2NwcGRlZmF1bHQuYworKysrIGIvZ2NjL2NwcGRlZmF1bHQuYworQEAgLTU5LDYgKzU5LDEwIEBAIGNvbnN0IHN0cnVjdCBkZWZhdWx0X2luY2x1ZGUgY3BwX2luY2x1ZGVfZGVmYXVsdHNbXQorICAgICAvKiBUaGlzIGlzIHRoZSBkaXIgZm9yIGdjYydzIHByaXZhdGUgaGVhZGVycy4gICovCisgICAgIHsgR0NDX0lOQ0xVREVfRElSLCAiR0NDIiwgMCwgMCwgMCwgMCB9LAorICNlbmRpZgorKyNpZmRlZiBHQ0NfSU5DTFVERV9TVUJESVJfVEFSR0VUCisrICAgIC8qIFRoaXMgaXMgdGhlIGRpciBmb3IgZ2NjJ3MgcHJpdmF0ZSBoZWFkZXJzIHVuZGVyIHRoZSBzcGVjaWZpZWQgc3lzcm9vdC4gICovCisrICAgIHsgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yIEdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQsICJHQ0MiLCAwLCAwLCAxLCAwIH0sCisrI2VuZGlmCisgI2lmZGVmIExPQ0FMX0lOQ0xVREVfRElSCisgICAgIC8qIC91c3IvbG9jYWwvaW5jbHVkZSBjb21lcyBiZWZvcmUgdGhlIGZpeGluY2x1ZGVkIGhlYWRlciBmaWxlcy4gICovCisgICAgIHsgTE9DQUxfSU5DTFVERV9ESVIsIDAsIDAsIDEsIDEsIDIgfSwKK2RpZmYgLS1naXQgYS9nY2MvZGVmYXVsdHMuaCBiL2djYy9kZWZhdWx0cy5oCitpbmRleCA3YWQ5MmQ5MjBmOC4uMzk4NDhjYzljMGUgMTAwNjQ0CistLS0gYS9nY2MvZGVmYXVsdHMuaAorKysrIGIvZ2NjL2RlZmF1bHRzLmgKK0BAIC0xNDc1LDQgKzE0NzUsMTMgQEAgc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4gIElmIG5vdCwgc2VlCisgI2RlZmluZSBEV0FSRl9HTkFUX0VOQ09ESU5HU19ERUZBVUxUIERXQVJGX0dOQVRfRU5DT0RJTkdTX0dEQgorICNlbmRpZgorIAorKy8qIERlZmF1bHQgcHJlZml4ZXMgdG8gYXR0YWNoIHRvIGNvbW1hbmQgbmFtZXMuICAqLworKworKyNpZm5kZWYgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8xCisrI2RlZmluZSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzEgIi9saWIvIgorKyNlbmRpZgorKyNpZm5kZWYgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yCisrI2RlZmluZSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIgIi91c3IvbGliLyIKKysjZW5kaWYKKysKKyAjZW5kaWYgIC8qICEgR0NDX0RFRkFVTFRTX0ggKi8KK2RpZmYgLS1naXQgYS9nY2MvZ2NjLmMgYi9nY2MvZ2NjLmMKK2luZGV4IGM3M2Q0MDIzOTg3Li5iMjcyNDVkYmY3NyAxMDA2NDQKKy0tLSBhL2djYy9nY2MuYworKysrIGIvZ2NjL2djYy5jCitAQCAtMTQ3MiwxMyArMTQ3Miw2IEBAIHN0YXRpYyBjb25zdCBjaGFyICpnY2NfbGliZXhlY19wcmVmaXg7CisgCisgLyogRGVmYXVsdCBwcmVmaXhlcyB0byBhdHRhY2ggdG8gY29tbWFuZCBuYW1lcy4gICovCisgCistI2lmbmRlZiBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzEKKy0jZGVmaW5lIFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMSAiL2xpYi8iCistI2VuZGlmCistI2lmbmRlZiBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIKKy0jZGVmaW5lIFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMiAiL3Vzci9saWIvIgorLSNlbmRpZgorLQorICNpZmRlZiBDUk9TU19ESVJFQ1RPUllfU1RSVUNUVVJFICAvKiBEb24ndCB1c2UgdGhlc2UgcHJlZml4ZXMgZm9yIGEgY3Jvc3MgY29tcGlsZXIuICAqLworICN1bmRlZiBNRF9FWEVDX1BSRUZJWAorICN1bmRlZiBNRF9TVEFSVEZJTEVfUFJFRklYCistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMzEtZ2NjLTQuOC13b24tdC1idWlsZC13aXRoLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAzMS1nY2MtNC44LXdvbi10LWJ1aWxkLXdpdGgtZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxODQwMTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMzEtZ2NjLTQuOC13b24tdC1idWlsZC13aXRoLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZy5wYXRjaApAQCAtMCwwICsxLDU0IEBACitGcm9tIGM3YjRkOTU3ZWRkYTk1NWZiZTQwNWZkNTI5NTg0NjYxNDUyOWY1MTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyMCBGZWIgMjAxNSAxMToxNzoxOSArMDAwMAorU3ViamVjdDogW1BBVENIIDMxLzQ3XSBnY2MgNC44KyB3b24ndCBidWlsZCB3aXRoIC0tZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nCisKK3NpbmNlIHRoZSAqLlBwbyBmaWxlcyBkb24ndCBnZXQgY3JlYXRlZCB1bmxlc3MgLS1lbmFibGUtZGVwZW5kZW5jeS10cmFja2luZyBpcyB0cnVlLgorCitUaGlzIHBhdGNoIGVuc3VyZXMgd2Ugb25seSB1c2UgdGhvc2UgY29tcGlsZXIgb3B0aW9ucyB3aGVuIGl0cyBlbmFibGVkLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorCisoUHJvYmxlbSB3YXMgYWxyZWFkeSByZXBvcnRlZCB1cHN0cmVhbSwgYXR0YWNoZWQgdGhpcyBwYXRjaCB0aGVyZQoraHR0cDovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD01NTkzMCkKKworUlAKKzIwMTIvMDkvMjIKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGxpYmF0b21pYy9NYWtlZmlsZS5hbSB8IDMgKystCisgbGliYXRvbWljL01ha2VmaWxlLmluIHwgMyArKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYmF0b21pYy9NYWtlZmlsZS5hbSBiL2xpYmF0b21pYy9NYWtlZmlsZS5hbQoraW5kZXggZDczMTQwNmZkYmQuLjJmYWZjNzJkMmU3IDEwMDY0NAorLS0tIGEvbGliYXRvbWljL01ha2VmaWxlLmFtCisrKysgYi9saWJhdG9taWMvTWFrZWZpbGUuYW0KK0BAIC0xMDEsNyArMTAxLDggQEAgUEFUX1MJCT0gJCh3b3JkIDMsJChQQVRfU1BMSVQpKQorIElGVU5DX0RFRgk9IC1ESUZVTkNfQUxUPSQoUEFUX1MpCisgSUZVTkNfT1BUCT0gJCh3b3JkICQoUEFUX1MpLCQoSUZVTkNfT1BUSU9OUykpCisgCistTV9ERVBTCQk9IC1NVCAkQCAtTUQgLU1QIC1NRiAkKERFUERJUikvJChARikuUHBvCisrQEFNREVQX1RSVUVATV9ERVBTCQk9IC1NVCAkQCAtTUQgLU1QIC1NRiAkKERFUERJUikvJChARikuUHBvCisrQEFNREVQX0ZBTFNFQE1fREVQUwkJPQorIE1fU0laRQkJPSAtRE49JChQQVRfTikKKyBNX0lGVU5DCQk9ICQoaWYgJChQQVRfUyksJChJRlVOQ19ERUYpICQoSUZVTkNfT1BUKSkKKyBNX0ZJTEUJCT0gJChQQVRfQkFTRSlfbi5jCitkaWZmIC0tZ2l0IGEvbGliYXRvbWljL01ha2VmaWxlLmluIGIvbGliYXRvbWljL01ha2VmaWxlLmluCitpbmRleCBmNmVlYWIzMTJlYS4uM2YwNmE4OTQwNTggMTAwNjQ0CistLS0gYS9saWJhdG9taWMvTWFrZWZpbGUuaW4KKysrKyBiL2xpYmF0b21pYy9NYWtlZmlsZS5pbgorQEAgLTMzMSw3ICszMzEsOCBAQCBQQVRfTiA9ICQod29yZCAyLCQoUEFUX1NQTElUKSkKKyBQQVRfUyA9ICQod29yZCAzLCQoUEFUX1NQTElUKSkKKyBJRlVOQ19ERUYgPSAtRElGVU5DX0FMVD0kKFBBVF9TKQorIElGVU5DX09QVCA9ICQod29yZCAkKFBBVF9TKSwkKElGVU5DX09QVElPTlMpKQorLU1fREVQUyA9IC1NVCAkQCAtTUQgLU1QIC1NRiAkKERFUERJUikvJChARikuUHBvCisrQEFNREVQX1RSVUVATV9ERVBTID0gLU1UICRAIC1NRCAtTVAgLU1GICQoREVQRElSKS8kKEBGKS5QcG8KKytAQU1ERVBfRkFMU0VATV9ERVBTID0KKyBNX1NJWkUgPSAtRE49JChQQVRfTikKKyBNX0lGVU5DID0gJChpZiAkKFBBVF9TKSwkKElGVU5DX0RFRikgJChJRlVOQ19PUFQpKQorIE1fRklMRSA9ICQoUEFUX0JBU0UpX24uYworLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDMyLURvbi10LXNlYXJjaC1ob3N0LWRpcmVjdG9yeS1kdXJpbmctcmVsaW5rLWlmLWluc3RfcHIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMzItRG9uLXQtc2VhcmNoLWhvc3QtZGlyZWN0b3J5LWR1cmluZy1yZWxpbmstaWYtaW5zdF9wci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODkwNWY1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDMyLURvbi10LXNlYXJjaC1ob3N0LWRpcmVjdG9yeS1kdXJpbmctcmVsaW5rLWlmLWluc3RfcHIucGF0Y2gKQEAgLTAsMCArMSwzOCBAQAorRnJvbSAzYmU2Yjc2NmE1ODgxYjBiMTg3YzNjM2M2ODI1MGE5ZTRmN2MwZmEzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMyBNYXIgMjAxNSAwODoyMToxOSArMDAwMAorU3ViamVjdDogW1BBVENIIDMyLzQ3XSBEb24ndCBzZWFyY2ggaG9zdCBkaXJlY3RvcnkgZHVyaW5nICJyZWxpbmsiIGlmCisgJGluc3RfcHJlZml4IGlzIHByb3ZpZGVkCisKK2h0dHA6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9saWJ0b29sLXBhdGNoZXMvMjAxMS0wMS9tc2cwMDAyNi5odG1sCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsdG1haW4uc2ggfCA1ICsrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2x0bWFpbi5zaCBiL2x0bWFpbi5zaAoraW5kZXggNTJiZGJkYjVmOWMuLjgyYmNlYzM5ZjA1IDEwMDY0NAorLS0tIGEvbHRtYWluLnNoCisrKysgYi9sdG1haW4uc2gKK0BAIC02MDA0LDEyICs2MDA0LDEzIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICAgIGZpCisgCSAgICBlbHNlCisgCSAgICAgICMgV2UgY2Fubm90IHNlZW0gdG8gaGFyZGNvZGUgaXQsIGd1ZXNzIHdlJ2xsIGZha2UgaXQuCisrCSAgICAgICMgRGVmYXVsdCBpZiAkbGliZGlyIGlzIG5vdCByZWxhdGl2ZSB0byB0aGUgcHJlZml4OgorIAkgICAgICBhZGRfZGlyPSItTCRsaWJkaXIiCistCSAgICAgICMgVHJ5IGxvb2tpbmcgZmlyc3QgaW4gdGhlIGxvY2F0aW9uIHdlJ3JlIGJlaW5nIGluc3RhbGxlZCB0by4KKysKKyAJICAgICAgaWYgdGVzdCAtbiAiJGluc3RfcHJlZml4X2RpciI7IHRoZW4KKyAJCWNhc2UgJGxpYmRpciBpbgorIAkJICBbXFwvXSopCistCQkgICAgYWRkX2Rpcj0iJGFkZF9kaXIgLUwkaW5zdF9wcmVmaXhfZGlyJGxpYmRpciIKKysJCSAgICBhZGRfZGlyPSItTCRpbnN0X3ByZWZpeF9kaXIkbGliZGlyIgorIAkJICAgIDs7CisgCQllc2FjCisgCSAgICAgIGZpCistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMzMtVXNlLVNZU1RFTUxJQlNfRElSLXJlcGxhY2VtZW50LWluc3RlYWQtb2YtaGFyZGNvZGluZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAzMy1Vc2UtU1lTVEVNTElCU19ESVItcmVwbGFjZW1lbnQtaW5zdGVhZC1vZi1oYXJkY29kaW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwYjhkZjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMzMtVXNlLVNZU1RFTUxJQlNfRElSLXJlcGxhY2VtZW50LWluc3RlYWQtb2YtaGFyZGNvZGluZy5wYXRjaApAQCAtMCwwICsxLDI5IEBACitGcm9tIDZlZGNhYjkwNDZiODYyY2JiOWI0Njg5MmZjMzkwY2U2OTk3NjUzOWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVHVlLCAyOCBBcHIgMjAxNSAyMzoxNToyNyAtMDcwMAorU3ViamVjdDogW1BBVENIIDMzLzQ3XSBVc2UgU1lTVEVNTElCU19ESVIgcmVwbGFjZW1lbnQgaW5zdGVhZCBvZiBoYXJkY29kaW5nCisgYmFzZV9saWJkaXIKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRS1TcGVjaWZpY10KKworIGdjYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaAoraW5kZXggYzQ1ZmMxZDM1ZDEuLmE3YWZlMTk3MjY2IDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaAorKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaAorQEAgLTIxLDcgKzIxLDcgQEAKKyAjaWZuZGVmIEdDQ19BQVJDSDY0X0xJTlVYX0gKKyAjZGVmaW5lIEdDQ19BQVJDSDY0X0xJTlVYX0gKKyAKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLWxpbnV4LWFhcmNoNjQle21iaWctZW5kaWFuOl9iZX0le21hYmk9aWxwMzI6X2lscDMyfS5zby4xIgorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1hYXJjaDY0JXttYmlnLWVuZGlhbjpfYmV9JXttYWJpPWlscDMyOl9pbHAzMn0uc28uMSIKKyAKKyAjdW5kZWYgTVVTTF9EWU5BTUlDX0xJTktFUgorICNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1tdXNsLWFhcmNoNjQle21iaWctZW5kaWFuOl9iZX0le21hYmk9aWxwMzI6X2lscDMyfS5zby4xIgorLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDM0LWFhcmNoNjQtQWRkLXN1cHBvcnQtZm9yLW11c2wtbGRzby5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAzNC1hYXJjaDY0LUFkZC1zdXBwb3J0LWZvci1tdXNsLWxkc28ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2Q4NjZkOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAzNC1hYXJjaDY0LUFkZC1zdXBwb3J0LWZvci1tdXNsLWxkc28ucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSBiMTQwZDY4MzljZmJhOWNhYzg5MmJjNzM2ZDk4NDU0MDU1MmQ2YTU2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMjggQXByIDIwMTUgMjM6MTg6MzkgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAzNC80N10gYWFyY2g2NDogQWRkIHN1cHBvcnQgZm9yIG11c2wgbGRzbworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FLVNwZWNpZmljXQorCisgZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmggYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oCitpbmRleCBhN2FmZTE5NzI2Ni4uNTgwYzJjN2VhMTUgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oCisrKysgYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oCitAQCAtMjQsNyArMjQsNyBAQAorICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1hYXJjaDY0JXttYmlnLWVuZGlhbjpfYmV9JXttYWJpPWlscDMyOl9pbHAzMn0uc28uMSIKKyAKKyAjdW5kZWYgTVVTTF9EWU5BTUlDX0xJTktFUgorLSNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1tdXNsLWFhcmNoNjQle21iaWctZW5kaWFuOl9iZX0le21hYmk9aWxwMzI6X2lscDMyfS5zby4xIgorKyNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUiAgU1lTVEVNTElCU19ESVIgImxkLW11c2wtYWFyY2g2NCV7bWJpZy1lbmRpYW46X2JlfSV7bWFiaT1pbHAzMjpfaWxwMzJ9LnNvLjEiCisgCisgI3VuZGVmICBBU0FOX0NDMV9TUEVDCisgI2RlZmluZSBBU0FOX0NDMV9TUEVDICIleyU6c2FuaXRpemUoYWRkcmVzcyk6LWZ1bndpbmQtdGFibGVzfSIKKy0tIAorMi4xMi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAzNS1saWJjYzEtZml4LWxpYmNjMS1zLWluc3RhbGwtcGF0aC1hbmQtcnBhdGgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMzUtbGliY2MxLWZpeC1saWJjYzEtcy1pbnN0YWxsLXBhdGgtYW5kLXJwYXRoLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyYzE5NTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMzUtbGliY2MxLWZpeC1saWJjYzEtcy1pbnN0YWxsLXBhdGgtYW5kLXJwYXRoLnBhdGNoCkBAIC0wLDAgKzEsNTQgQEAKK0Zyb20gNjM2MTdmMmRhMTUzZGIxMGZhMmZlOTM4Y2NlMzFiZWUwMWQ0N2ZlOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogU3VuLCA1IEp1bCAyMDE1IDIwOjI1OjE4IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMzUvNDddIGxpYmNjMTogZml4IGxpYmNjMSdzIGluc3RhbGwgcGF0aCBhbmQgcnBhdGgKKworKiBJbnN0YWxsIGxpYmNjMS5zbyBhbmQgbGliY2MxcGx1Z2luLnNvIGludG8KKyAgJChsaWJleGVjZGlyKS9nY2MvJCh0YXJnZXRfbm9uY2Fub25pY2FsKS8kKGdjY192ZXJzaW9uKSwgYXMgd2hhdCB3ZQorICBoYWQgZG9uZSB0byBsdG8tcGx1Z2luLgorKiBGaXggYmFkIFJQQVRIIGl1c3N1ZToKKyAgZ2NjLTUuMi4wOiBwYWNrYWdlIGdjYy1wbHVnaW5zIGNvbnRhaW5zIGJhZCBSUEFUSCAvcGF0aHQvdG8vdG1wL3N5c3Jvb3RzL3FlbXV4ODYtNjQvdXNyL2xpYjY0Ly4uL2xpYjY0IGluIGZpbGUKKyAvcGF0aC90by9nY2MvNS4yLjAtcjAvcGFja2FnZXMtc3BsaXQvZ2NjLXBsdWdpbnMvdXNyL2xpYjY0L2djYy94ODZfNjQtcG9reS1saW51eC81LjIuMC9wbHVnaW4vbGliY2MxcGx1Z2luLnNvLjAuMC4wCisgW3JwYXRoc10KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBjb25maWd1cmF0aW9uXQorCitTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIGxpYmNjMS9NYWtlZmlsZS5hbSB8IDQgKystLQorIGxpYmNjMS9NYWtlZmlsZS5pbiB8IDQgKystLQorIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliY2MxL01ha2VmaWxlLmFtIGIvbGliY2MxL01ha2VmaWxlLmFtCitpbmRleCA1ZTYxYTkyYTI2Yi4uZThiNjI3ZjljZWMgMTAwNjQ0CistLS0gYS9saWJjYzEvTWFrZWZpbGUuYW0KKysrKyBiL2xpYmNjMS9NYWtlZmlsZS5hbQorQEAgLTM3LDggKzM3LDggQEAgbGliaWJlcnR5ID0gJChpZiAkKHdpbGRjYXJkICQobGliaWJlcnR5X25vYXNhbikpLCQoV2MpJChsaWJpYmVydHlfbm9hc2FuKSwgXAorIAkgICAgJChXYykkKGxpYmliZXJ0eV9ub3JtYWwpKSkKKyBsaWJpYmVydHlfZGVwID0gJChwYXRzdWJzdCAkKFdjKSUsJSwkKGxpYmliZXJ0eSkpCisgCistcGx1Z2luZGlyID0gJChsaWJkaXIpL2djYy8kKHRhcmdldF9ub25jYW5vbmljYWwpLyQoZ2NjX3ZlcnNpb24pL3BsdWdpbgorLWNjMWxpYmRpciA9ICQobGliZGlyKS8kKGxpYnN1ZmZpeCkKKytjYzFsaWJkaXIgPSAkKGxpYmV4ZWNkaXIpL2djYy8kKHRhcmdldF9ub25jYW5vbmljYWwpLyQoZ2NjX3ZlcnNpb24pCisrcGx1Z2luZGlyID0gJChjYzFsaWJkaXIpCisgCisgaWYgRU5BQkxFX1BMVUdJTgorIHBsdWdpbl9MVExJQlJBUklFUyA9IGxpYmNjMXBsdWdpbi5sYSBsaWJjcDFwbHVnaW4ubGEKK2RpZmYgLS1naXQgYS9saWJjYzEvTWFrZWZpbGUuaW4gYi9saWJjYzEvTWFrZWZpbGUuaW4KK2luZGV4IDU0YmFiYjAyYTQ5Li5lNTFkODdmZmRjZSAxMDA2NDQKKy0tLSBhL2xpYmNjMS9NYWtlZmlsZS5pbgorKysrIGIvbGliY2MxL01ha2VmaWxlLmluCitAQCAtMzAzLDggKzMwMyw4IEBAIGxpYmliZXJ0eSA9ICQoaWYgJCh3aWxkY2FyZCAkKGxpYmliZXJ0eV9ub2FzYW4pKSwkKFdjKSQobGliaWJlcnR5X25vYXNhbiksIFwKKyAJICAgICQoV2MpJChsaWJpYmVydHlfbm9ybWFsKSkpCisgCisgbGliaWJlcnR5X2RlcCA9ICQocGF0c3Vic3QgJChXYyklLCUsJChsaWJpYmVydHkpKQorLXBsdWdpbmRpciA9ICQobGliZGlyKS9nY2MvJCh0YXJnZXRfbm9uY2Fub25pY2FsKS8kKGdjY192ZXJzaW9uKS9wbHVnaW4KKy1jYzFsaWJkaXIgPSAkKGxpYmRpcikvJChsaWJzdWZmaXgpCisrY2MxbGliZGlyID0gJChsaWJleGVjZGlyKS9nY2MvJCh0YXJnZXRfbm9uY2Fub25pY2FsKS8kKGdjY192ZXJzaW9uKQorK3BsdWdpbmRpciA9ICQoY2MxbGliZGlyKQorIEBFTkFCTEVfUExVR0lOX1RSVUVAcGx1Z2luX0xUTElCUkFSSUVTID0gbGliY2MxcGx1Z2luLmxhIGxpYmNwMXBsdWdpbi5sYQorIEBFTkFCTEVfUExVR0lOX1RSVUVAY2MxbGliX0xUTElCUkFSSUVTID0gbGliY2MxLmxhCisgQlVJTFRfU09VUkNFUyA9IGMtY29tcGlsZXItbmFtZS5oIGNwLWNvbXBpbGVyLW5hbWUuaAorLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDM2LWhhbmRsZS1zeXNyb290LXN1cHBvcnQtZm9yLW5hdGl2ZXNkay1nY2MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMzYtaGFuZGxlLXN5c3Jvb3Qtc3VwcG9ydC1mb3ItbmF0aXZlc2RrLWdjYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYTBiMTA4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDM2LWhhbmRsZS1zeXNyb290LXN1cHBvcnQtZm9yLW5hdGl2ZXNkay1nY2MucGF0Y2gKQEAgLTAsMCArMSwyMTMgQEAKK0Zyb20gY2ExNDgyMGFlODM0YTYyZWYyYjgwYjI4M2U4ZjkwMDcxNDYzNjI3MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDcgRGVjIDIwMTUgMjM6Mzk6NTQgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAzNi80N10gaGFuZGxlIHN5c3Jvb3Qgc3VwcG9ydCBmb3IgbmF0aXZlc2RrLWdjYworCitCZWluZyBhYmxlIHRvIGJ1aWxkIGEgbmF0aXZlc2RrIGdjYyBpcyB1c2VmdWwsIHBhcnRpY3VsYXJseSBpbiBjYXNlcword2hlcmUgdGhlIGhvc3QgY29tcGlsZXIgbWF5IGJlIG9mIGFuIGluY29tcGF0aWJsZSB2ZXJzaW9uIChvciBhIDMyCitiaXQgY29tcGlsZXIgaXMgbmVlZGVkKS4KKworU2FkbHksIGJ1aWxkaW5nIG5hdGl2ZXNkay1nY2MgaXMgbm90IHN0cmFpZ2h0IGZvcndhcmQuIFdlIGluc3RhbGwKK25hdGl2ZXNkay1nY2MgaW50byBhIHJlbG9jYXRhYmxlIGxvY2F0aW9uIGFuZCB0aGlzIG1lYW5zIHRoYXQgaXRzCitsaWJyYXJ5IGxvY2F0aW9ucyBjYW4gY2hhbmdlLiAiTm9ybWFsIiBzeXNyb290IHN1cHBvcnQgZG9lc24ndCBoZWxwCitpbiB0aGlzIGNhc2Ugc2luY2UgdGhlIHZhbHVlcyBvZiBwYXRocyBsaWtlICJsaWJkaXIiIGNoYW5nZSwgbm90IGp1c3QKK2Jhc2Ugcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIHN5c3RlbS4KKworSW4gb3JkZXIgdG8gaGFuZGxlIHRoaXMgd2UgZG8gdHdvIHRoaW5nczoKKworYSkgQWRkICVyIGludG8gc3BlYyBmaWxlIG1hcmt1cCB3aGljaCBjYW4gYmUgdXNlZCBmb3IgaW5qZWN0ZWQgcGF0aHMKKyAgIHN1Y2ggYXMgU1lTVEVNTElCU19ESVIgKHNlZSBnY2NfbXVsdGlsaWJfc2V0dXAoKSkuCitiKSBBZGQgb3RoZXIgcGF0aHMgd2hpY2ggbmVlZCByZWxvY2F0aW9uIGludG8gYSAuZ2NjcmVsb2NwcmVmaXggc2VjdGlvbgorICAgd2hpY2ggdGhlIHJlbG9jYXRpb24gY29kZSB3aWxsIG5vdGljZSBhbmQgYWRqdXN0IGF1dG9tYXRpY2FsbHkuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQorUlAgMjAxNS83LzI4CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBnY2MvY3BwZGVmYXVsdC5jIHwgNTAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KKyBnY2MvY3BwZGVmYXVsdC5oIHwgIDMgKystCisgZ2NjL2djYy5jICAgICAgICB8IDIwICsrKysrKysrKysrKysrLS0tLS0tCisgMyBmaWxlcyBjaGFuZ2VkLCA1MyBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2djYy9jcHBkZWZhdWx0LmMgYi9nY2MvY3BwZGVmYXVsdC5jCitpbmRleCBjOGRhMDg4NDg3Mi4uNDNkYzU5N2EwYzMgMTAwNjQ0CistLS0gYS9nY2MvY3BwZGVmYXVsdC5jCisrKysgYi9nY2MvY3BwZGVmYXVsdC5jCitAQCAtMzUsNiArMzUsMzAgQEAKKyAjIHVuZGVmIENST1NTX0lOQ0xVREVfRElSCisgI2VuZGlmCisgCisrc3RhdGljIGNoYXIgR1BMVVNQTFVTX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IEdQTFVTUExVU19JTkNMVURFX0RJUjsKKytzdGF0aWMgY2hhciBHQ0NfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gR0NDX0lOQ0xVREVfRElSOworK3N0YXRpYyBjaGFyIEdQTFVTUExVU19UT09MX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IEdQTFVTUExVU19UT09MX0lOQ0xVREVfRElSOworK3N0YXRpYyBjaGFyIEdQTFVTUExVU19CQUNLV0FSRF9JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBHUExVU1BMVVNfQkFDS1dBUkRfSU5DTFVERV9ESVI7Cisrc3RhdGljIGNoYXIgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMiBHQ0NfSU5DTFVERV9TVUJESVJfVEFSR0VUOworKyNpZmRlZiBMT0NBTF9JTkNMVURFX0RJUgorK3N0YXRpYyBjaGFyIExPQ0FMX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IExPQ0FMX0lOQ0xVREVfRElSOworKyNlbmRpZgorKyNpZmRlZiBQUkVGSVhfSU5DTFVERV9ESVIKKytzdGF0aWMgY2hhciBQUkVGSVhfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gUFJFRklYX0lOQ0xVREVfRElSOworKyNlbmRpZgorKyNpZmRlZiBGSVhFRF9JTkNMVURFX0RJUgorK3N0YXRpYyBjaGFyIEZJWEVEX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IEZJWEVEX0lOQ0xVREVfRElSOworKyNlbmRpZgorKyNpZmRlZiBDUk9TU19JTkNMVURFX0RJUgorK3N0YXRpYyBjaGFyIENST1NTX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IENST1NTX0lOQ0xVREVfRElSOworKyNlbmRpZgorKyNpZmRlZiBUT09MX0lOQ0xVREVfRElSCisrc3RhdGljIGNoYXIgVE9PTF9JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBUT09MX0lOQ0xVREVfRElSOworKyNlbmRpZgorKyNpZmRlZiBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVIKKytzdGF0aWMgY2hhciBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSOworKyNlbmRpZgorKworIGNvbnN0IHN0cnVjdCBkZWZhdWx0X2luY2x1ZGUgY3BwX2luY2x1ZGVfZGVmYXVsdHNbXQorICNpZmRlZiBJTkNMVURFX0RFRkFVTFRTCisgPSBJTkNMVURFX0RFRkFVTFRTOworQEAgLTQyLDM4ICs2NiwzOCBAQCBjb25zdCBzdHJ1Y3QgZGVmYXVsdF9pbmNsdWRlIGNwcF9pbmNsdWRlX2RlZmF1bHRzW10KKyA9IHsKKyAjaWZkZWYgR1BMVVNQTFVTX0lOQ0xVREVfRElSCisgICAgIC8qIFBpY2sgdXAgR05VIEMrKyBnZW5lcmljIGluY2x1ZGUgZmlsZXMuICAqLworLSAgICB7IEdQTFVTUExVU19JTkNMVURFX0RJUiwgIkcrKyIsIDEsIDEsCisrICAgIHsgR1BMVVNQTFVTX0lOQ0xVREVfRElSVkFSLCAiRysrIiwgMSwgMSwKKyAgICAgICBHUExVU1BMVVNfSU5DTFVERV9ESVJfQUREX1NZU1JPT1QsIDAgfSwKKyAjZW5kaWYKKyAjaWZkZWYgR1BMVVNQTFVTX1RPT0xfSU5DTFVERV9ESVIKKyAgICAgLyogUGljayB1cCBHTlUgQysrIHRhcmdldC1kZXBlbmRlbnQgaW5jbHVkZSBmaWxlcy4gICovCistICAgIHsgR1BMVVNQTFVTX1RPT0xfSU5DTFVERV9ESVIsICJHKysiLCAxLCAxLAorKyAgICB7IEdQTFVTUExVU19UT09MX0lOQ0xVREVfRElSVkFSLCAiRysrIiwgMSwgMSwKKyAgICAgICBHUExVU1BMVVNfSU5DTFVERV9ESVJfQUREX1NZU1JPT1QsIDEgfSwKKyAjZW5kaWYKKyAjaWZkZWYgR1BMVVNQTFVTX0JBQ0tXQVJEX0lOQ0xVREVfRElSCisgICAgIC8qIFBpY2sgdXAgR05VIEMrKyBiYWNrd2FyZCBhbmQgZGVwcmVjYXRlZCBpbmNsdWRlIGZpbGVzLiAgKi8KKy0gICAgeyBHUExVU1BMVVNfQkFDS1dBUkRfSU5DTFVERV9ESVIsICJHKysiLCAxLCAxLAorKyAgICB7IEdQTFVTUExVU19CQUNLV0FSRF9JTkNMVURFX0RJUlZBUiwgIkcrKyIsIDEsIDEsCisgICAgICAgR1BMVVNQTFVTX0lOQ0xVREVfRElSX0FERF9TWVNST09ULCAwIH0sCisgI2VuZGlmCisgI2lmZGVmIEdDQ19JTkNMVURFX0RJUgorICAgICAvKiBUaGlzIGlzIHRoZSBkaXIgZm9yIGdjYydzIHByaXZhdGUgaGVhZGVycy4gICovCistICAgIHsgR0NDX0lOQ0xVREVfRElSLCAiR0NDIiwgMCwgMCwgMCwgMCB9LAorKyAgICB7IEdDQ19JTkNMVURFX0RJUlZBUiwgIkdDQyIsIDAsIDAsIDAsIDAgfSwKKyAjZW5kaWYKKyAjaWZkZWYgR0NDX0lOQ0xVREVfU1VCRElSX1RBUkdFVAorICAgICAvKiBUaGlzIGlzIHRoZSBkaXIgZm9yIGdjYydzIHByaXZhdGUgaGVhZGVycyB1bmRlciB0aGUgc3BlY2lmaWVkIHN5c3Jvb3QuICAqLworLSAgICB7IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMiBHQ0NfSU5DTFVERV9TVUJESVJfVEFSR0VULCAiR0NDIiwgMCwgMCwgMSwgMCB9LAorKyAgICB7IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMlZBUiwgIkdDQyIsIDAsIDAsIDEsIDAgfSwKKyAjZW5kaWYKKyAjaWZkZWYgTE9DQUxfSU5DTFVERV9ESVIKKyAgICAgLyogL3Vzci9sb2NhbC9pbmNsdWRlIGNvbWVzIGJlZm9yZSB0aGUgZml4aW5jbHVkZWQgaGVhZGVyIGZpbGVzLiAgKi8KKy0gICAgeyBMT0NBTF9JTkNMVURFX0RJUiwgMCwgMCwgMSwgMSwgMiB9LAorLSAgICB7IExPQ0FMX0lOQ0xVREVfRElSLCAwLCAwLCAxLCAxLCAwIH0sCisrICAgIHsgTE9DQUxfSU5DTFVERV9ESVJWQVIsIDAsIDAsIDEsIDEsIDIgfSwKKysgICAgeyBMT0NBTF9JTkNMVURFX0RJUlZBUiwgMCwgMCwgMSwgMSwgMCB9LAorICNlbmRpZgorICNpZmRlZiBQUkVGSVhfSU5DTFVERV9ESVIKKy0gICAgeyBQUkVGSVhfSU5DTFVERV9ESVIsIDAsIDAsIDEsIDAsIDAgfSwKKysgICAgeyBQUkVGSVhfSU5DTFVERV9ESVJWQVIsIDAsIDAsIDEsIDAsIDAgfSwKKyAjZW5kaWYKKyAjaWZkZWYgRklYRURfSU5DTFVERV9ESVIKKyAgICAgLyogVGhpcyBpcyB0aGUgZGlyIGZvciBmaXhpbmNsdWRlcy4gICovCistICAgIHsgRklYRURfSU5DTFVERV9ESVIsICJHQ0MiLCAwLCAwLCAwLAorKyAgICB7IEZJWEVEX0lOQ0xVREVfRElSVkFSLCAiR0NDIiwgMCwgMCwgMCwKKyAgICAgICAvKiBBIG11bHRpbGliIHN1ZmZpeCBuZWVkcyBhZGRpbmcgaWYgZGlmZmVyZW50IG11bHRpbGlicyB1c2UKKyAJIGRpZmZlcmVudCBoZWFkZXJzLiAgKi8KKyAjaWZkZWYgU1lTUk9PVF9IRUFERVJTX1NVRkZJWF9TUEVDCitAQCAtODUsMTYgKzEwOSwxNiBAQCBjb25zdCBzdHJ1Y3QgZGVmYXVsdF9pbmNsdWRlIGNwcF9pbmNsdWRlX2RlZmF1bHRzW10KKyAjZW5kaWYKKyAjaWZkZWYgQ1JPU1NfSU5DTFVERV9ESVIKKyAgICAgLyogT25lIHBsYWNlIHRoZSB0YXJnZXQgc3lzdGVtJ3MgaGVhZGVycyBtaWdodCBiZS4gICovCistICAgIHsgQ1JPU1NfSU5DTFVERV9ESVIsICJHQ0MiLCAwLCAwLCAwLCAwIH0sCisrICAgIHsgQ1JPU1NfSU5DTFVERV9ESVJWQVIsICJHQ0MiLCAwLCAwLCAwLCAwIH0sCisgI2VuZGlmCisgI2lmZGVmIFRPT0xfSU5DTFVERV9ESVIKKyAgICAgLyogQW5vdGhlciBwbGFjZSB0aGUgdGFyZ2V0IHN5c3RlbSdzIGhlYWRlcnMgbWlnaHQgYmUuICAqLworLSAgICB7IFRPT0xfSU5DTFVERV9ESVIsICJCSU5VVElMUyIsIDAsIDEsIDAsIDAgfSwKKysgICAgeyBUT09MX0lOQ0xVREVfRElSVkFSLCAiQklOVVRJTFMiLCAwLCAxLCAwLCAwIH0sCisgI2VuZGlmCisgI2lmZGVmIE5BVElWRV9TWVNURU1fSEVBREVSX0RJUgorICAgICAvKiAvdXNyL2luY2x1ZGUgY29tZXMgZGVhZCBsYXN0LiAgKi8KKy0gICAgeyBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVIsIE5BVElWRV9TWVNURU1fSEVBREVSX0NPTVBPTkVOVCwgMCwgMCwgMSwgMiB9LAorLSAgICB7IE5BVElWRV9TWVNURU1fSEVBREVSX0RJUiwgTkFUSVZFX1NZU1RFTV9IRUFERVJfQ09NUE9ORU5ULCAwLCAwLCAxLCAwIH0sCisrICAgIHsgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSVkFSLCBOQVRJVkVfU1lTVEVNX0hFQURFUl9DT01QT05FTlQsIDAsIDAsIDEsIDIgfSwKKysgICAgeyBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVJWQVIsIE5BVElWRV9TWVNURU1fSEVBREVSX0NPTVBPTkVOVCwgMCwgMCwgMSwgMCB9LAorICNlbmRpZgorICAgICB7IDAsIDAsIDAsIDAsIDAsIDAgfQorICAgfTsKK2RpZmYgLS1naXQgYS9nY2MvY3BwZGVmYXVsdC5oIGIvZ2NjL2NwcGRlZmF1bHQuaAoraW5kZXggMTdiYmIwZWFlZjcuLmE5MzdlYzFkMTg3IDEwMDY0NAorLS0tIGEvZ2NjL2NwcGRlZmF1bHQuaAorKysrIGIvZ2NjL2NwcGRlZmF1bHQuaAorQEAgLTMzLDcgKzMzLDggQEAKKyAKKyBzdHJ1Y3QgZGVmYXVsdF9pbmNsdWRlCisgeworLSAgY29uc3QgY2hhciAqY29uc3QgZm5hbWU7CS8qIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkuICAqLworKyAgY29uc3QgY2hhciAqZm5hbWU7ICAgICAvKiBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5LiAgKi8KKysKKyAgIGNvbnN0IGNoYXIgKmNvbnN0IGNvbXBvbmVudDsJLyogVGhlIGNvbXBvbmVudCBjb250YWluaW5nIHRoZSBkaXJlY3RvcnkKKyAJCQkJICAgKHNlZSB1cGRhdGVfcGF0aCBpbiBwcmVmaXguYykgKi8KKyAgIGNvbnN0IGNoYXIgY3BsdXNwbHVzOwkJLyogT25seSBsb29rIGhlcmUgaWYgd2UncmUgY29tcGlsaW5nIEMrKy4gICovCitkaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCitpbmRleCBiMjcyNDVkYmY3Ny4uZTAxNWM3N2YxNWYgMTAwNjQ0CistLS0gYS9nY2MvZ2NjLmMKKysrKyBiL2djYy9nY2MuYworQEAgLTI0Nyw2ICsyNDcsOCBAQCBGSUxFICpyZXBvcnRfdGltZXNfdG9fZmlsZSA9IE5VTEw7CisgI2VuZGlmCisgc3RhdGljIGNvbnN0IGNoYXIgKnRhcmdldF9zeXN0ZW1fcm9vdCA9IERFRkFVTFRfVEFSR0VUX1NZU1RFTV9ST09UOworIAorK3N0YXRpYyBjaGFyIHRhcmdldF9yZWxvY2F0YWJsZV9wcmVmaXhbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gU1lTVEVNTElCU19ESVI7CisrCisgLyogTm9uemVybyBtZWFucyBwYXNzIHRoZSB1cGRhdGVkIHRhcmdldF9zeXN0ZW1fcm9vdCB0byB0aGUgY29tcGlsZXIuICAqLworIAorIHN0YXRpYyBpbnQgdGFyZ2V0X3N5c3RlbV9yb290X2NoYW5nZWQ7CitAQCAtNTE4LDYgKzUyMCw3IEBAIG9yIHdpdGggY29uc3RhbnQgdGV4dCBpbiBhIHNpbmdsZSBhcmd1bWVudC4KKyAgJUcgICAgIHByb2Nlc3MgTElCR0NDX1NQRUMgYXMgYSBzcGVjLgorICAlUiAgICAgT3V0cHV0IHRoZSBjb25jYXRlbmF0aW9uIG9mIHRhcmdldF9zeXN0ZW1fcm9vdCBhbmQKKyAgICAgICAgIHRhcmdldF9zeXNyb290X3N1ZmZpeC4KKysgJXIgICAgIE91dHB1dCB0aGUgYmFzZSBwYXRoIHRhcmdldF9yZWxvY2F0YWJsZV9wcmVmaXgKKyAgJVMgICAgIHByb2Nlc3MgU1RBUlRGSUxFX1NQRUMgYXMgYSBzcGVjLiAgQSBjYXBpdGFsIFMgaXMgYWN0dWFsbHkgdXNlZCBoZXJlLgorICAlRSAgICAgcHJvY2VzcyBFTkRGSUxFX1NQRUMgYXMgYSBzcGVjLiAgQSBjYXBpdGFsIEUgaXMgYWN0dWFsbHkgdXNlZCBoZXJlLgorICAlQyAgICAgcHJvY2VzcyBDUFBfU1BFQyBhcyBhIHNwZWMuCitAQCAtMTQ5NSwxMCArMTQ5OCwxMCBAQCBzdGF0aWMgY29uc3QgY2hhciAqZ2NjX2xpYmV4ZWNfcHJlZml4OworICAgIGdjY19leGVjX3ByZWZpeCBpcyBzZXQgYmVjYXVzZSwgaW4gdGhhdCBjYXNlLCB3ZSBrbm93IHdoZXJlIHRoZQorICAgIGNvbXBpbGVyIGhhcyBiZWVuIGluc3RhbGxlZCwgYW5kIHVzZSBwYXRocyByZWxhdGl2ZSB0byB0aGF0CisgICAgbG9jYXRpb24gaW5zdGVhZC4gICovCistc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN0YW5kYXJkX2V4ZWNfcHJlZml4ID0gU1RBTkRBUkRfRVhFQ19QUkVGSVg7Cistc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN0YW5kYXJkX2xpYmV4ZWNfcHJlZml4ID0gU1RBTkRBUkRfTElCRVhFQ19QUkVGSVg7Cistc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN0YW5kYXJkX2JpbmRpcl9wcmVmaXggPSBTVEFOREFSRF9CSU5ESVJfUFJFRklYOworLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4ID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWDsKKytzdGF0aWMgY2hhciBzdGFuZGFyZF9leGVjX3ByZWZpeFs0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBTVEFOREFSRF9FWEVDX1BSRUZJWDsKKytzdGF0aWMgY2hhciBzdGFuZGFyZF9saWJleGVjX3ByZWZpeFs0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBTVEFOREFSRF9MSUJFWEVDX1BSRUZJWDsKKytzdGF0aWMgY2hhciBzdGFuZGFyZF9iaW5kaXJfcHJlZml4WzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFNUQU5EQVJEX0JJTkRJUl9QUkVGSVg7Cisrc3RhdGljIGNoYXIgKmNvbnN0IHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXggPSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYOworIAorIC8qIEZvciBuYXRpdmUgY29tcGlsZXJzLCB0aGVzZSBhcmUgd2VsbC1rbm93biBwYXRocyBjb250YWluaW5nCisgICAgY29tcG9uZW50cyB0aGF0IG1heSBiZSBwcm92aWRlZCBieSB0aGUgc3lzdGVtLiAgRm9yIGNyb3NzCitAQCAtMTUwNiw5ICsxNTA5LDkgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXggPSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYOworIHN0YXRpYyBjb25zdCBjaGFyICptZF9leGVjX3ByZWZpeCA9IE1EX0VYRUNfUFJFRklYOworIHN0YXRpYyBjb25zdCBjaGFyICptZF9zdGFydGZpbGVfcHJlZml4ID0gTURfU1RBUlRGSUxFX1BSRUZJWDsKKyBzdGF0aWMgY29uc3QgY2hhciAqbWRfc3RhcnRmaWxlX3ByZWZpeF8xID0gTURfU1RBUlRGSUxFX1BSRUZJWF8xOworLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4XzEKKytzdGF0aWMgY2hhciBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4XzFbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpCisgICA9IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMTsKKy1zdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeF8yCisrc3RhdGljIGNoYXIgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeF8yWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKQorICAgPSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzI7CisgCisgLyogQSByZWxhdGl2ZSBwYXRoIHRvIGJlIHVzZWQgaW4gZmluZGluZyB0aGUgbG9jYXRpb24gb2YgdG9vbHMKK0BAIC01ODI2LDYgKzU4MjksMTEgQEAgZG9fc3BlY18xIChjb25zdCBjaGFyICpzcGVjLCBpbnQgaW5zd2l0Y2gsIGNvbnN0IGNoYXIgKnNvZnRfbWF0Y2hlZF9wYXJ0KQorIAkgICAgICB9CisgCSAgICBicmVhazsKKyAKKysgICAgICAgICAgY2FzZSAncic6CisrICAgICAgICAgICAgICBvYnN0YWNrX2dyb3cgKCZvYnN0YWNrLCB0YXJnZXRfcmVsb2NhdGFibGVfcHJlZml4LAorKwkJICAgICAgc3RybGVuICh0YXJnZXRfcmVsb2NhdGFibGVfcHJlZml4KSk7CisrICAgICAgICAgICAgYnJlYWs7CisrCisgCSAgY2FzZSAnUyc6CisgCSAgICB2YWx1ZSA9IGRvX3NwZWNfMSAoc3RhcnRmaWxlX3NwZWMsIDAsIE5VTEwpOworIAkgICAgaWYgKHZhbHVlICE9IDApCistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMzctU2VhcmNoLXRhcmdldC1zeXNyb290LWdjYy12ZXJzaW9uLXNwZWNpZmljLWRpcnMtd2l0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAzNy1TZWFyY2gtdGFyZ2V0LXN5c3Jvb3QtZ2NjLXZlcnNpb24tc3BlY2lmaWMtZGlycy13aXRoLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjODVhMDMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwMzctU2VhcmNoLXRhcmdldC1zeXNyb290LWdjYy12ZXJzaW9uLXNwZWNpZmljLWRpcnMtd2l0aC5wYXRjaApAQCAtMCwwICsxLDEwMiBAQAorRnJvbSAxNmEzMjZiY2QxMjZiMzk1YjI5MDE5MDcyOTA1YmFlN2E1ZDQ3NTAwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgNyBEZWMgMjAxNSAyMzo0MTo0NSArMDAwMAorU3ViamVjdDogW1BBVENIIDM3LzQ3XSBTZWFyY2ggdGFyZ2V0IHN5c3Jvb3QgZ2NjIHZlcnNpb24gc3BlY2lmaWMgZGlycyB3aXRoCisgbXVsdGlsaWIuCisKK1dlIGluc3RhbGwgdGhlIGdjYyBsaWJyYXJpZXMgKHN1Y2ggYXMgY3J0YmVnaW4ucCkgaW50bworPHN5c3Jvb3Q+PGxpYmRpcj4vPHRhcmdldC1zeXM+LzUuMi4wLword2hpY2ggaXMgYSBkZWZhdWx0IHNlYXJjaCBwYXRoIGZvciBHQ0MgKGFrYSBtdWx0aV9zdWZmaXggaW4gdGhlCitjb2RlIGJlbG93KS4gPHRhcmdldC1zeXM+IGlzICdtYWNoaW5lJyBpbiBnY2MncyB0ZXJtaW5vbG9neS4gV2UgdXNlCit0aGVzZSBkaXJlY3RvcmllcyBzbyB0aGF0IG11bHRpcGxlIGdjYyB2ZXJzaW9ucyBjb3VsZCBpbiB0aGVvcnkKK2NvLWV4aXN0IG9uIHRhcmdldC4KKworV2Ugb25seSB3YW50IHRvIGJ1aWxkIG9uZSBnY2MtY3Jvc3MtY2FuYWRpYW4gcGVyIGFyY2ggYW5kIGhhdmUgdGhpcyB3b3JrCitmb3IgYWxsIG11bHRpbGlicy4gPHRhcmdldC1zeXM+IGNhbiBiZSBoYW5kbGVkIGJ5IG1hcHBpbmcgdGhlIG11bHRpbGliCis8dGFyZ2V0LXN5cz4gdG8gdGhlIG9uZSB1c2VkIGJ5IGdjYy1jcm9zcy1jYW5hZGlhbiwgZS5nLgorbWlwczY0LXBvbGttbGxpYjMyLWxpbnV4CitpcyBzeW1saW5rZWQgdG8gYnkgbWlwczY0LXBva3ktbGludXguCisKK1RoZSBkZWZhdWx0IGdjYyBzZWFyY2ggcGF0aCBpbiB0aGUgdGFyZ2V0IHN5c3Jvb3QgZm9yIGEgImxpYjY0IiBtdXRsaWxpYgoraXM6CisKKzxzeXNyb290Pi9saWIzMi9taXBzNjQtcG9reS1saW51eC81LjIuMC8KKzxzeXNyb290Pi9saWIzMi8uLi9saWI2NC8KKzxzeXNyb290Pi91c3IvbGliMzIvbWlwczY0LXBva3ktbGludXgvNS4yLjAvCis8c3lzcm9vdD4vdXNyL2xpYjMyLy4uL2xpYjY0LworPHN5c3Jvb3Q+L2xpYjMyLworPHN5c3Jvb3Q+L3Vzci9saWIzMi8KKword2hpY2ggbWVhbnMgdGhhdCB0aGUgbGliMzIgY3J0YmVnaW4ubyB3aWxsIGJlIGZvdW5kIGFuZCB0aGUgbGliNjQgb25lcword2lsbCBub3Qgd2hpY2ggbGVhZHMgdG8gY29tcGlsZXIgZmFpbHVyZXMuCisKK1RoaXMgcGF0Y2ggaW5qZWN0cyBhIG11bHRpbGliIHZlcnNpb24gb2YgdGhhdCBwYXRoIGZpcnN0IHNvIHRoZSBsaWI2NAorYmluYXJpZXMgY2FuIGJlIGZvdW5kIGZpcnN0LiBXaXRoIHRoaXMgY2hhbmdlIHRoZSBzZWFyY2ggcGF0aCBiZWNvbWVzOgorCis8c3lzcm9vdD4vbGliMzIvLi4vbGliNjQvbWlwczY0LXBva3ktbGludXgvNS4yLjAvCis8c3lzcm9vdD4vbGliMzIvbWlwczY0LXBva3ktbGludXgvNS4yLjAvCis8c3lzcm9vdD4vbGliMzIvLi4vbGliNjQvCis8c3lzcm9vdD4vdXNyL2xpYjMyLy4uL2xpYjY0L21pcHM2NC1wb2t5LWxpbnV4LzUuMi4wLworPHN5c3Jvb3Q+L3Vzci9saWIzMi9taXBzNjQtcG9reS1saW51eC81LjIuMC8KKzxzeXNyb290Pi91c3IvbGliMzIvLi4vbGliNjQvCis8c3lzcm9vdD4vbGliMzIvCis8c3lzcm9vdD4vdXNyL2xpYjMyLworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1JQIDIwMTUvNy8zMQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZ2NjL2djYy5jIHwgMjkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgMjggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCitpbmRleCBlMDE1Yzc3ZjE1Zi4uODRhZjVkNWEyZTEgMTAwNjQ0CistLS0gYS9nY2MvZ2NjLmMKKysrKyBiL2djYy9nY2MuYworQEAgLTI1MzMsNyArMjUzMyw3IEBAIGZvcl9lYWNoX3BhdGggKGNvbnN0IHN0cnVjdCBwYXRoX3ByZWZpeCAqcGF0aHMsCisgICAgICAgaWYgKHBhdGggPT0gTlVMTCkKKyAJeworIAkgIGxlbiA9IHBhdGhzLT5tYXhfbGVuICsgZXh0cmFfc3BhY2UgKyAxOworLQkgIGxlbiArPSBNQVggKE1BWCAoc3VmZml4X2xlbiwgbXVsdGlfb3NfZGlyX2xlbiksIG11bHRpYXJjaF9sZW4pOworKwkgIGxlbiArPSBNQVggKChzdWZmaXhfbGVuICsgbXVsdGlfb3NfZGlyX2xlbiksIG11bHRpYXJjaF9sZW4pOworIAkgIHBhdGggPSBYTkVXVkVDIChjaGFyLCBsZW4pOworIAl9CisgCitAQCAtMjU0NSw2ICsyNTQ1LDMzIEBAIGZvcl9lYWNoX3BhdGggKGNvbnN0IHN0cnVjdCBwYXRoX3ByZWZpeCAqcGF0aHMsCisgCSAgLyogTG9vayBmaXJzdCBpbiBNQUNISU5FL1ZFUlNJT04gc3ViZGlyZWN0b3J5LiAgKi8KKyAJICBpZiAoIXNraXBfbXVsdGlfZGlyKQorIAkgICAgeworKwkgICAgICBpZiAoIShwbC0+b3NfbXVsdGlsaWIgPyBza2lwX211bHRpX29zX2RpciA6IHNraXBfbXVsdGlfZGlyKSkKKysJICAgICAgICB7CisrCSAgICAgICAgICBjb25zdCBjaGFyICp0aGlzX211bHRpOworKwkgICAgICAgICAgc2l6ZV90IHRoaXNfbXVsdGlfbGVuOworKworKwkgICAgICAgICAgaWYgKHBsLT5vc19tdWx0aWxpYikKKysJCSAgICB7CisrCQkgICAgICB0aGlzX211bHRpID0gbXVsdGlfb3NfZGlyOworKwkJICAgICAgdGhpc19tdWx0aV9sZW4gPSBtdWx0aV9vc19kaXJfbGVuOworKwkJICAgIH0KKysJICAgICAgICAgIGVsc2UKKysJCSAgICB7CisrCQkgICAgICB0aGlzX211bHRpID0gbXVsdGlfZGlyOworKwkJICAgICAgdGhpc19tdWx0aV9sZW4gPSBtdWx0aV9kaXJfbGVuOworKwkJICAgIH0KKysKKysJICAgICAgICAgIC8qIExvb2sgaW4gbXVsdGlsaWIgTUFDSElORS9WRVJTSU9OIHN1YmRpcmVjdG9yeSBmaXJzdCAqLworKwkgICAgICAgICAgaWYgKHRoaXNfbXVsdGlfbGVuKQorKwkgICAgICAgICAgICB7CisrCQkgICAgICBtZW1jcHkgKHBhdGggKyBsZW4sIHRoaXNfbXVsdGksIHRoaXNfbXVsdGlfbGVuICsgMSk7CisrCSAgICAgICAgICAgICAgbWVtY3B5IChwYXRoICsgbGVuICsgdGhpc19tdWx0aV9sZW4sIG11bHRpX3N1ZmZpeCwgc3VmZml4X2xlbiArIDEpOworKwkgICAgICAgICAgICAgIHJldCA9IGNhbGxiYWNrIChwYXRoLCBjYWxsYmFja19pbmZvKTsKKysJICAgICAgICAgICAgICAgIGlmIChyZXQpCisrCQkgICAgICAgICAgYnJlYWs7CisrCSAgICAgICAgICAgIH0KKysJICAgICAgICB9CisrCisgCSAgICAgIG1lbWNweSAocGF0aCArIGxlbiwgbXVsdGlfc3VmZml4LCBzdWZmaXhfbGVuICsgMSk7CisgCSAgICAgIHJldCA9IGNhbGxiYWNrIChwYXRoLCBjYWxsYmFja19pbmZvKTsKKyAJICAgICAgaWYgKHJldCkKKy0tIAorMi4xMi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAzOC1GaXgtdmFyaW91cy1fRk9SX0JVSUxELWFuZC1yZWxhdGVkLXZhcmlhYmxlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAzOC1GaXgtdmFyaW91cy1fRk9SX0JVSUxELWFuZC1yZWxhdGVkLXZhcmlhYmxlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjI2ZDEwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDM4LUZpeC12YXJpb3VzLV9GT1JfQlVJTEQtYW5kLXJlbGF0ZWQtdmFyaWFibGVzLnBhdGNoCkBAIC0wLDAgKzEsMTM3IEBACitGcm9tIDZlN2Y1MjZlNzFhNzZhYWMzZDQ5YmE4ZjE3NDJmZTFiMzU5YzEwNjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCA3IERlYyAyMDE1IDIzOjQyOjQ1ICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMzgvNDddIEZpeCB2YXJpb3VzIF9GT1JfQlVJTEQgYW5kIHJlbGF0ZWQgdmFyaWFibGVzCisKK1doZW4gZG9pbmcgYSBGT1JfQlVJTEQgdGhpbmcsIHlvdSBoYXZlIHRvIG92ZXJyaWRlIENGTEFHUyB3aXRoCitDRkxBR1NfRk9SX0JVSUxELiBBbmQgaWYgeW91IHVzZSBDKyssIHlvdSBhbHNvIGhhdmUgdG8gb3ZlcnJpZGUKK0NYWEZMQUdTIHdpdGggQ1hYRkxBR1NfRk9SX0JVSUxELgorV2l0aG91dCB0aGlzLCB3aGVuIGJ1aWxkaW5nIGZvciBtaW5ndywgeW91IGVuZCB1cCB0cnlpbmcgdG8gdXNlCit0aGUgbWluZ3cgaGVhZGVycyBmb3IgYSBob3N0IGJ1aWxkLgorCitUaGUgc2FtZSBnb2VzIGZvciBvdGhlciB2YXJpYWJsZXMgYXMgd2VsbCwgc3VjaCBhcyBDUFBGTEFHUywKK0NQUCwgYW5kIEdNUElOQy4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFBldGVyIFNlZWJhY2ggPHBldGVyLnNlZWJhY2hAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBNYWtlZmlsZS5pbiAgICAgIHwgNiArKysrKysKKyBNYWtlZmlsZS50cGwgICAgIHwgNSArKysrKworIGdjYy9NYWtlZmlsZS5pbiAgfCAyICstCisgZ2NjL2NvbmZpZ3VyZSAgICB8IDIgKy0KKyBnY2MvY29uZmlndXJlLmFjIHwgMiArLQorIDUgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KK2luZGV4IGUzNGU5NTU1Mzg4Li5hMDM3NDBmM2Y5ZCAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmluCisrKysgYi9NYWtlZmlsZS5pbgorQEAgLTE1Miw2ICsxNTIsNyBAQCBCVUlMRF9FWFBPUlRTID0gXAorIAlDUFA9IiQoQ0NfRk9SX0JVSUxEKSAtRSI7IGV4cG9ydCBDUFA7IFwKKyAJQ0ZMQUdTPSIkKENGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENGTEFHUzsgXAorIAlDT05GSUdfU0hFTEw9IiQoU0hFTEwpIjsgZXhwb3J0IENPTkZJR19TSEVMTDsgXAorKwlDUFBGTEFHUz0iJChDUFBGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENQUEZMQUdTOyBcCisgCUNYWD0iJChDWFhfRk9SX0JVSUxEKSI7IGV4cG9ydCBDWFg7IFwKKyAJQ1hYRkxBR1M9IiQoQ1hYRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDWFhGTEFHUzsgXAorIAlHRk9SVFJBTj0iJChHRk9SVFJBTl9GT1JfQlVJTEQpIjsgZXhwb3J0IEdGT1JUUkFOOyBcCitAQCAtMTY5LDYgKzE3MCw5IEBAIEJVSUxEX0VYUE9SVFMgPSBcCisgIyBidWlsdCBmb3IgdGhlIGJ1aWxkIHN5c3RlbSB0byBvdmVycmlkZSB0aG9zZSBpbiBCQVNFX0ZMQUdTX1RPX1BBU1MuCisgRVhUUkFfQlVJTERfRkxBR1MgPSBcCisgCUNGTEFHUz0iJChDRkxBR1NfRk9SX0JVSUxEKSIgXAorKwlDWFhGTEFHUz0iJChDWFhGTEFHU19GT1JfQlVJTEQpIiBcCisrCUNQUD0iJChDQ19GT1JfQlVJTEQpIC1FIiBcCisrCUNQUEZMQUdTPSIkKENQUEZMQUdTX0ZPUl9CVUlMRCkiIFwKKyAJTERGTEFHUz0iJChMREZMQUdTX0ZPUl9CVUlMRCkiCisgCisgIyBUaGlzIGlzIHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHRvIGJ1aWx0IGZvciB0aGUgaG9zdCBzeXN0ZW0uCitAQCAtMTg2LDYgKzE5MCw3IEBAIEhPU1RfU1VCRElSID0gQGhvc3Rfc3ViZGlyQAorIEhPU1RfRVhQT1JUUyA9IFwKKyAJJChCQVNFX0VYUE9SVFMpIFwKKyAJQ0M9IiQoQ0MpIjsgZXhwb3J0IENDOyBcCisrCUNQUD0iJChDQykgLUUiOyBleHBvcnQgQ1BQOyBcCisgCUFEQV9DRkxBR1M9IiQoQURBX0NGTEFHUykiOyBleHBvcnQgQURBX0NGTEFHUzsgXAorIAlDRkxBR1M9IiQoQ0ZMQUdTKSI7IGV4cG9ydCBDRkxBR1M7IFwKKyAJQ09ORklHX1NIRUxMPSIkKFNIRUxMKSI7IGV4cG9ydCBDT05GSUdfU0hFTEw7IFwKK0BAIC03MzQsNiArNzM5LDcgQEAgQkFTRV9GTEFHU19UT19QQVNTID0gXAorIAkiQ0NfRk9SX0JVSUxEPSQoQ0NfRk9SX0JVSUxEKSIgXAorIAkiQ0ZMQUdTX0ZPUl9CVUlMRD0kKENGTEFHU19GT1JfQlVJTEQpIiBcCisgCSJDWFhfRk9SX0JVSUxEPSQoQ1hYX0ZPUl9CVUlMRCkiIFwKKysJIkNYWEZMQUdTX0ZPUl9CVUlMRD0kKENYWEZMQUdTX0ZPUl9CVUlMRCkiIFwKKyAJIkVYUEVDVD0kKEVYUEVDVCkiIFwKKyAJIkZMRVg9JChGTEVYKSIgXAorIAkiSU5TVEFMTD0kKElOU1RBTEwpIiBcCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUudHBsIGIvTWFrZWZpbGUudHBsCitpbmRleCBkMGZhMDcwMDViZS4uOTUzMzc2YzY1OGQgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS50cGwKKysrKyBiL01ha2VmaWxlLnRwbAorQEAgLTE1NCw2ICsxNTQsNyBAQCBCVUlMRF9FWFBPUlRTID0gXAorIAlDQz0iJChDQ19GT1JfQlVJTEQpIjsgZXhwb3J0IENDOyBcCisgCUNGTEFHUz0iJChDRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDRkxBR1M7IFwKKyAJQ09ORklHX1NIRUxMPSIkKFNIRUxMKSI7IGV4cG9ydCBDT05GSUdfU0hFTEw7IFwKKysJQ1BQRkxBR1M9IiQoQ1BQRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDUFBGTEFHUzsgXAorIAlDWFg9IiQoQ1hYX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ1hYOyBcCisgCUNYWEZMQUdTPSIkKENYWEZMQUdTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ1hYRkxBR1M7IFwKKyAJR0ZPUlRSQU49IiQoR0ZPUlRSQU5fRk9SX0JVSUxEKSI7IGV4cG9ydCBHRk9SVFJBTjsgXAorQEAgLTE3MSw2ICsxNzIsOSBAQCBCVUlMRF9FWFBPUlRTID0gXAorICMgYnVpbHQgZm9yIHRoZSBidWlsZCBzeXN0ZW0gdG8gb3ZlcnJpZGUgdGhvc2UgaW4gQkFTRV9GTEFHU19UT19QQVNTLgorIEVYVFJBX0JVSUxEX0ZMQUdTID0gXAorIAlDRkxBR1M9IiQoQ0ZMQUdTX0ZPUl9CVUlMRCkiIFwKKysJQ1hYRkxBR1M9IiQoQ1hYRkxBR1NfRk9SX0JVSUxEKSIgXAorKwlDUFA9IiQoQ0NfRk9SX0JVSUxEKSAtRSIgXAorKwlDUFBGTEFHUz0iJChDUFBGTEFHU19GT1JfQlVJTEQpIiBcCisgCUxERkxBR1M9IiQoTERGTEFHU19GT1JfQlVJTEQpIgorIAorICMgVGhpcyBpcyB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyB0byBidWlsdCBmb3IgdGhlIGhvc3Qgc3lzdGVtLgorQEAgLTE4OCw2ICsxOTIsNyBAQCBIT1NUX1NVQkRJUiA9IEBob3N0X3N1YmRpckAKKyBIT1NUX0VYUE9SVFMgPSBcCisgCSQoQkFTRV9FWFBPUlRTKSBcCisgCUNDPSIkKENDKSI7IGV4cG9ydCBDQzsgXAorKwlDUFA9IiQoQ0MpIC1FIjsgZXhwb3J0IENQUDsgXAorIAlBREFfQ0ZMQUdTPSIkKEFEQV9DRkxBR1MpIjsgZXhwb3J0IEFEQV9DRkxBR1M7IFwKKyAJQ0ZMQUdTPSIkKENGTEFHUykiOyBleHBvcnQgQ0ZMQUdTOyBcCisgCUNPTkZJR19TSEVMTD0iJChTSEVMTCkiOyBleHBvcnQgQ09ORklHX1NIRUxMOyBcCitkaWZmIC0tZ2l0IGEvZ2NjL01ha2VmaWxlLmluIGIvZ2NjL01ha2VmaWxlLmluCitpbmRleCA5NWQyMWVmZmFkMy4uZGJlMmJhY2RlNTAgMTAwNjQ0CistLS0gYS9nY2MvTWFrZWZpbGUuaW4KKysrKyBiL2djYy9NYWtlZmlsZS5pbgorQEAgLTc5NSw3ICs3OTUsNyBAQCBCVUlMRF9MREZMQUdTPUBCVUlMRF9MREZMQUdTQAorIEJVSUxEX05PX1BJRV9GTEFHID0gQEJVSUxEX05PX1BJRV9GTEFHQAorIEJVSUxEX0xERkxBR1MgKz0gJChCVUlMRF9OT19QSUVfRkxBRykKKyBCVUlMRF9DUFBGTEFHUz0gLUkuIC1JJChARCkgLUkkKHNyY2RpcikgLUkkKHNyY2RpcikvJChARCkgXAorLQkJLUkkKHNyY2RpcikvLi4vaW5jbHVkZSBASU5DSU5UTEAgJChDUFBJTkMpICQoQ1BQRkxBR1MpCisrCQktSSQoc3JjZGlyKS8uLi9pbmNsdWRlIEBJTkNJTlRMQCAkKENQUElOQykgJChDUFBGTEFHU19GT1JfQlVJTEQpCisgCisgIyBBY3R1YWwgbmFtZSB0byB1c2Ugd2hlbiBpbnN0YWxsaW5nIGEgbmF0aXZlIGNvbXBpbGVyLgorIEdDQ19JTlNUQUxMX05BTUUgOj0gJChzaGVsbCBlY2hvIGdjY3xzZWQgJyQocHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSknKQorZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUgYi9nY2MvY29uZmlndXJlCitpbmRleCA2YmEzOTFlZDA2OC4uNzJjYTZlNWM1MzUgMTAwNzU1CistLS0gYS9nY2MvY29uZmlndXJlCisrKysgYi9nY2MvY29uZmlndXJlCitAQCAtMTE3ODksNyArMTE3ODksNyBAQCBlbHNlCisgCUNDPSIke0NDX0ZPUl9CVUlMRH0iIENGTEFHUz0iJHtDRkxBR1NfRk9SX0JVSUxEfSIgXAorIAlDWFg9IiR7Q1hYX0ZPUl9CVUlMRH0iIENYWEZMQUdTPSIke0NYWEZMQUdTX0ZPUl9CVUlMRH0iIFwKKyAJTEQ9IiR7TERfRk9SX0JVSUxEfSIgTERGTEFHUz0iJHtMREZMQUdTX0ZPUl9CVUlMRH0iIFwKKy0JR01QSU5DPSIiIENQUEZMQUdTPSIke0NQUEZMQUdTfSAtREdFTkVSQVRPUl9GSUxFIiBcCisrCUdNUElOQz0iIiBDUFBGTEFHUz0iJHtDUFBGTEFHU19GT1JfQlVJTER9IC1ER0VORVJBVE9SX0ZJTEUiIFwKKyAJJHtyZWFsc3JjZGlyfS9jb25maWd1cmUgXAorIAkJLS1lbmFibGUtbGFuZ3VhZ2VzPSR7ZW5hYmxlX2xhbmd1YWdlcy1hbGx9IFwKKyAJCS0tdGFyZ2V0PSR0YXJnZXRfYWxpYXMgLS1ob3N0PSRidWlsZF9hbGlhcyAtLWJ1aWxkPSRidWlsZF9hbGlhcworZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUuYWMgYi9nY2MvY29uZmlndXJlLmFjCitpbmRleCA4NTUxYTQxMmRmMy4uNmVlZmI2MWRjMmIgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlndXJlLmFjCisrKysgYi9nY2MvY29uZmlndXJlLmFjCitAQCAtMTcwOCw3ICsxNzA4LDcgQEAgZWxzZQorIAlDQz0iJHtDQ19GT1JfQlVJTER9IiBDRkxBR1M9IiR7Q0ZMQUdTX0ZPUl9CVUlMRH0iIFwKKyAJQ1hYPSIke0NYWF9GT1JfQlVJTER9IiBDWFhGTEFHUz0iJHtDWFhGTEFHU19GT1JfQlVJTER9IiBcCisgCUxEPSIke0xEX0ZPUl9CVUlMRH0iIExERkxBR1M9IiR7TERGTEFHU19GT1JfQlVJTER9IiBcCistCUdNUElOQz0iIiBDUFBGTEFHUz0iJHtDUFBGTEFHU30gLURHRU5FUkFUT1JfRklMRSIgXAorKwlHTVBJTkM9IiIgQ1BQRkxBR1M9IiR7Q1BQRkxBR1NfRk9SX0JVSUxEfSAtREdFTkVSQVRPUl9GSUxFIiBcCisgCSR7cmVhbHNyY2Rpcn0vY29uZmlndXJlIFwKKyAJCS0tZW5hYmxlLWxhbmd1YWdlcz0ke2VuYWJsZV9sYW5ndWFnZXMtYWxsfSBcCisgCQktLXRhcmdldD0kdGFyZ2V0X2FsaWFzIC0taG9zdD0kYnVpbGRfYWxpYXMgLS1idWlsZD0kYnVpbGRfYWxpYXMKKy0tIAorMi4xMi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAzOS1uaW9zMi1EZWZpbmUtTVVTTF9EWU5BTUlDX0xJTktFUi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDAzOS1uaW9zMi1EZWZpbmUtTVVTTF9EWU5BTUlDX0xJTktFUi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hN2FlY2NkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDM5LW5pb3MyLURlZmluZS1NVVNMX0RZTkFNSUNfTElOS0VSLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gNmQwM2RkZmI3YTA5Mjk0MmJlNmI1OGIxODMwZjY5ODZkMDEyZDVlMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDIgRmViIDIwMTYgMTA6MjY6MTAgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSCAzOS80N10gbmlvczI6IERlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSCisKK1NpZ25lZC1vZmYtYnk6IE1hcmVrIFZhc3V0IDxtYXJleEBkZW54LmRlPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRS1TcGVjaWZpY10KKworIGdjYy9jb25maWcvbmlvczIvbGludXguaCB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9uaW9zMi9saW51eC5oIGIvZ2NjL2NvbmZpZy9uaW9zMi9saW51eC5oCitpbmRleCA1MTc3ZmE2NDFhNC4uMWI4YWNjZGE2ZWUgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL25pb3MyL2xpbnV4LmgKKysrKyBiL2djYy9jb25maWcvbmlvczIvbGludXguaAorQEAgLTMwLDYgKzMwLDcgQEAKKyAjZGVmaW5lIENQUF9TUEVDICIle3Bvc2l4Oi1EX1BPU0lYX1NPVVJDRX0gJXtwdGhyZWFkOi1EX1JFRU5UUkFOVH0iCisgCisgI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC1uaW9zMi5zby4xIgorKyNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUiAgIi9saWIvbGQtbXVzbC1uaW9zMi5zby4xIgorIAorICN1bmRlZiBMSU5LX1NQRUMKKyAjZGVmaW5lIExJTktfU1BFQyBMSU5LX1NQRUNfRU5ESUFOIFwKKy0tIAorMi4xMi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjMvMDA0MS1BZGQtc3NwX25vbnNoYXJlZC10by1saW5rLWNvbW1hbmRsaW5lLWZvci1tdXNsLXRhcmdlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDQwLUFkZC1zc3Bfbm9uc2hhcmVkLXRvLWxpbmstY29tbWFuZGxpbmUtZm9yLW11c2wtdGFyZ2UucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy02LjMvMDA0MS1BZGQtc3NwX25vbnNoYXJlZC10by1saW5rLWNvbW1hbmRsaW5lLWZvci1tdXNsLXRhcmdlLnBhdGNoCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwNDAtQWRkLXNzcF9ub25zaGFyZWQtdG8tbGluay1jb21tYW5kbGluZS1mb3ItbXVzbC10YXJnZS5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDQxLWdjYy1saWJjcHAtc3VwcG9ydC1mZmlsZS1wcmVmaXgtbWFwLW9sZC1uZXcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwNDEtZ2NjLWxpYmNwcC1zdXBwb3J0LWZmaWxlLXByZWZpeC1tYXAtb2xkLW5ldy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjYwZTM2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDQxLWdjYy1saWJjcHAtc3VwcG9ydC1mZmlsZS1wcmVmaXgtbWFwLW9sZC1uZXcucGF0Y2gKQEAgLTAsMCArMSwyODQgQEAKK0Zyb20gNGVhZGM5OWJkZDA5NzQ3NjFiZjQ4ZjBmZDMyOTk0ZGQ5YTNmZmNmZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMTYgTWFyIDIwMTYgMDI6Mjc6NDMgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSCA0MS80N10gZ2NjL2xpYmNwcDogc3VwcG9ydCAtZmZpbGUtcHJlZml4LW1hcD08b2xkPj08bmV3PgorCitTaW1pbGFyIC1mZGVidWctcHJlZml4LW1hcCwgYWRkIG9wdGlvbiAtZmZpbGUtcHJlZml4LW1hcCB0byBtYXAgb25lCitkaXJlY3RvcnkgbmFtZSAob2xkKSB0byBhbm90aGVyIChuZXcpIGluIF9fRklMRV9fLCBfX0JBU0VfRklMRV9fIGFuZAorX19idWlsdGluX0ZJTEUgKCkuCisKK2h0dHBzOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTcwMjY4CisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtnY2MtcGF0Y2hlc0BnY2MuZ251Lm9yZ10KK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGdjYy9jLWZhbWlseS9jLW9wdHMuYyAgICAgfCAxMyArKysrKysrCisgZ2NjL2MtZmFtaWx5L2Mub3B0ICAgICAgICB8ICA0ICsrKworIGdjYy9kd2FyZjJvdXQuYyAgICAgICAgICAgfCAgMSArCisgZ2NjL2dpbXBsaWZ5LmMgICAgICAgICAgICB8ICAyICsrCisgbGliY3BwL01ha2VmaWxlLmluICAgICAgICB8IDEwICsrKy0tLQorIGxpYmNwcC9maWxlLW1hcC5jICAgICAgICAgfCA5MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIGxpYmNwcC9pbmNsdWRlL2ZpbGUtbWFwLmggfCAzMCArKysrKysrKysrKysrKysrCisgbGliY3BwL21hY3JvLmMgICAgICAgICAgICB8ICAyICsrCisgOCBmaWxlcyBjaGFuZ2VkLCAxNDkgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgbGliY3BwL2ZpbGUtbWFwLmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgbGliY3BwL2luY2x1ZGUvZmlsZS1tYXAuaAorCitkaWZmIC0tZ2l0IGEvZ2NjL2MtZmFtaWx5L2Mtb3B0cy5jIGIvZ2NjL2MtZmFtaWx5L2Mtb3B0cy5jCitpbmRleCBlYTBlMDFiMTAxYy4uYTc0MWM3NWE3OGYgMTAwNjQ0CistLS0gYS9nY2MvYy1mYW1pbHkvYy1vcHRzLmMKKysrKyBiL2djYy9jLWZhbWlseS9jLW9wdHMuYworQEAgLTM5LDYgKzM5LDE0IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCisgI2luY2x1ZGUgIm9wdHMuaCIKKyAjaW5jbHVkZSAicGx1Z2luLmgiCQkvKiBGb3IgUExVR0lOX0lOQ0xVREVfRklMRSBldmVudC4gICovCisgI2luY2x1ZGUgIm1rZGVwcy5oIgorKyNpbmNsdWRlICJmaWxlLW1hcC5oIgorKyNpbmNsdWRlICJjLXRhcmdldC5oIgorKyNpbmNsdWRlICJ0bS5oIgkJCS8qIEZvciBCWVRFU19CSUdfRU5ESUFOLAorKwkJCQkgICBET0xMQVJTX0lOX0lERU5USUZJRVJTLAorKwkJCQkgICBTVERDXzBfSU5fU1lTVEVNX0hFQURFUlMsCisrCQkJCSAgIFRBUkdFVF9GTFRfRVZBTF9NRVRIT0RfTk9OX0RFRkFVTFQgYW5kCisrCQkJCSAgIFRBUkdFVF9PUFRGLiAgKi8KKysjaW5jbHVkZSAidG1fcC5oIgkJLyogRm9yIENfQ09NTU9OX09WRVJSSURFX09QVElPTlMuICAqLworICNpbmNsdWRlICJkdW1wZmlsZS5oIgorIAorICNpZm5kZWYgRE9MTEFSU19JTl9JREVOVElGSUVSUworQEAgLTUxNyw2ICs1MjUsMTEgQEAgY19jb21tb25faGFuZGxlX29wdGlvbiAoc2l6ZV90IHNjb2RlLCBjb25zdCBjaGFyICphcmcsIGludCB2YWx1ZSwKKyAgICAgICBjcHBfb3B0cy0+bmFycm93X2NoYXJzZXQgPSBhcmc7CisgICAgICAgYnJlYWs7CisgCisrICAgIGNhc2UgT1BUX2ZmaWxlX3ByZWZpeF9tYXBfOgorKyAgICAgIGlmIChhZGRfZmlsZV9wcmVmaXhfbWFwIChhcmcpIDwgMCkKKysgICAgICAgIGVycm9yICgiaW52YWxpZCBhcmd1bWVudCAlcXMgdG8gLWZmaWxlLXByZWZpeC1tYXAiLCBhcmcpOworKyAgICAgIGJyZWFrOworKworICAgICBjYXNlIE9QVF9md2lkZV9leGVjX2NoYXJzZXRfOgorICAgICAgIGNwcF9vcHRzLT53aWRlX2NoYXJzZXQgPSBhcmc7CisgICAgICAgYnJlYWs7CitkaWZmIC0tZ2l0IGEvZ2NjL2MtZmFtaWx5L2Mub3B0IGIvZ2NjL2MtZmFtaWx5L2Mub3B0CitpbmRleCBjNGVmNzc5NjI4Mi4uNzMzMzNkZmQ1N2MgMTAwNjQ0CistLS0gYS9nY2MvYy1mYW1pbHkvYy5vcHQKKysrKyBiL2djYy9jLWZhbWlseS9jLm9wdAorQEAgLTEzNzIsNiArMTM3MiwxMCBAQCBmZXhlYy1jaGFyc2V0PQorIEMgT2JqQyBDKysgT2JqQysrIEpvaW5lZCBSZWplY3ROZWdhdGl2ZQorIC1mZXhlYy1jaGFyc2V0PTxjc2V0PglDb252ZXJ0IGFsbCBzdHJpbmdzIGFuZCBjaGFyYWN0ZXIgY29uc3RhbnRzIHRvIGNoYXJhY3RlciBzZXQgPGNzZXQ+LgorIAorK2ZmaWxlLXByZWZpeC1tYXA9CisrQyBPYmpDIEMrKyBPYmpDKysgSm9pbmVkIFJlamVjdE5lZ2F0aXZlCisrLWZmaWxlLXByZWZpeC1tYXA9PG9sZD1uZXc+CU1hcCBvbmUgZGlyZWN0b3J5IG5hbWUgdG8gYW5vdGhlciBpbiBfX0ZJTEVfXywgX19CQVNFX0ZJTEVfXyBhbmQgX19idWlsdGluX0ZJTEUgKCkKKysKKyBmZXh0ZW5kZWQtaWRlbnRpZmllcnMKKyBDIE9iakMgQysrIE9iakMrKworIFBlcm1pdCB1bml2ZXJzYWwgY2hhcmFjdGVyIG5hbWVzIChcXHUgYW5kIFxcVSkgaW4gaWRlbnRpZmllcnMuCitkaWZmIC0tZ2l0IGEvZ2NjL2R3YXJmMm91dC5jIGIvZ2NjL2R3YXJmMm91dC5jCitpbmRleCA5OGM1MTU3NmVjMi4uNzYyZjY5YWU4OGUgMTAwNjQ0CistLS0gYS9nY2MvZHdhcmYyb3V0LmMKKysrKyBiL2djYy9kd2FyZjJvdXQuYworQEAgLTIzNDIxLDYgKzIzNDIxLDcgQEAgZ2VuX3Byb2R1Y2VyX3N0cmluZyAodm9pZCkKKyAgICAgICBjYXNlIE9QVF9mbHRyYW5zX291dHB1dF9saXN0XzoKKyAgICAgICBjYXNlIE9QVF9mcmVzb2x1dGlvbl86CisgICAgICAgY2FzZSBPUFRfZmRlYnVnX3ByZWZpeF9tYXBfOgorKyAgICAgIGNhc2UgT1BUX2ZmaWxlX3ByZWZpeF9tYXBfOgorIAkvKiBJZ25vcmUgdGhlc2UuICAqLworIAljb250aW51ZTsKKyAgICAgICBkZWZhdWx0OgorZGlmZiAtLWdpdCBhL2djYy9naW1wbGlmeS5jIGIvZ2NjL2dpbXBsaWZ5LmMKK2luZGV4IGZkMjdlYjE1MjNmLi41NTQyYjM3OWYyOCAxMDA2NDQKKy0tLSBhL2djYy9naW1wbGlmeS5jCisrKysgYi9nY2MvZ2ltcGxpZnkuYworQEAgLTU4LDYgKzU4LDggQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKKyAjaW5jbHVkZSAiZ29tcC1jb25zdGFudHMuaCIKKyAjaW5jbHVkZSAidHJlZS1kdW1wLmgiCisgI2luY2x1ZGUgImdpbXBsZS13YWxrLmgiCisrI2luY2x1ZGUgImZpbGUtbWFwLmgiCisrCisgI2luY2x1ZGUgImxhbmdob29rcy1kZWYuaCIJLyogRklYTUU6IGZvciBsaGRfc2V0X2RlY2xfYXNzZW1ibGVyX25hbWUgKi8KKyAjaW5jbHVkZSAiYnVpbHRpbnMuaCIKKyAjaW5jbHVkZSAiYXNhbi5oIgorZGlmZiAtLWdpdCBhL2xpYmNwcC9NYWtlZmlsZS5pbiBiL2xpYmNwcC9NYWtlZmlsZS5pbgoraW5kZXggMGJkMzc4N2MyNWUuLmQzYjUyOTU2YjUyIDEwMDY0NAorLS0tIGEvbGliY3BwL01ha2VmaWxlLmluCisrKysgYi9saWJjcHAvTWFrZWZpbGUuaW4KK0BAIC04NCwxMiArODQsMTIgQEAgREVQTU9ERSA9ICQoQ1hYREVQTU9ERSkKKyAKKyAKKyBsaWJjcHBfYV9PQkpTID0gY2hhcnNldC5vIGRpcmVjdGl2ZXMubyBkaXJlY3RpdmVzLW9ubHkubyBlcnJvcnMubyBcCistCWV4cHIubyBmaWxlcy5vIGlkZW50aWZpZXJzLm8gaW5pdC5vIGxleC5vIGxpbmUtbWFwLm8gbWFjcm8ubyBcCistCW1rZGVwcy5vIHBjaC5vIHN5bXRhYi5vIHRyYWRpdGlvbmFsLm8KKysJZXhwci5vIGZpbGUtbWFwLm8gZmlsZXMubyBpZGVudGlmaWVycy5vIGluaXQubyBsZXgubyBsaW5lLW1hcC5vIFwKKysJbWFjcm8ubyBta2RlcHMubyBwY2gubyBzeW10YWIubyB0cmFkaXRpb25hbC5vCisgCisgbGliY3BwX2FfU09VUkNFUyA9IGNoYXJzZXQuYyBkaXJlY3RpdmVzLmMgZGlyZWN0aXZlcy1vbmx5LmMgZXJyb3JzLmMgXAorLQlleHByLmMgZmlsZXMuYyBpZGVudGlmaWVycy5jIGluaXQuYyBsZXguYyBsaW5lLW1hcC5jIG1hY3JvLmMgXAorLQlta2RlcHMuYyBwY2guYyBzeW10YWIuYyB0cmFkaXRpb25hbC5jCisrCWV4cHIuYyBmaWxlLW1hcC5jIGZpbGVzLmMgaWRlbnRpZmllcnMuYyBpbml0LmMgbGV4LmMgbGluZS1tYXAuYyBcCisrCW1hY3JvLmMgbWtkZXBzLmMgcGNoLmMgc3ltdGFiLmMgdHJhZGl0aW9uYWwuYworIAorIGFsbDogbGliY3BwLmEgJChVU0VEX0NBVEFMT0dTKQorIAorQEAgLTI2Myw3ICsyNjMsNyBAQCBwby8kKFBBQ0tBR0UpLnBvdDogJChsaWJjcHBfYV9TT1VSQ0VTKQorIAorIFRBR1NfU09VUkNFUyA9ICQobGliY3BwX2FfU09VUkNFUykgaW50ZXJuYWwuaCB1Y25pZC5oIFwKKyAgICAgaW5jbHVkZS9saW5lLW1hcC5oIGluY2x1ZGUvc3ltdGFiLmggaW5jbHVkZS9jcHAtaWQtZGF0YS5oIFwKKy0gICAgaW5jbHVkZS9jcHBsaWIuaCBpbmNsdWRlL21rZGVwcy5oIHN5c3RlbS5oCisrICAgIGluY2x1ZGUvY3BwbGliLmggaW5jbHVkZS9ta2RlcHMuaCBzeXN0ZW0uaCBpbmNsdWRlL2ZpbGUtbWFwLmgKKyAKKyBUQUdTOiAkKFRBR1NfU09VUkNFUykKKyAJY2QgJChzcmNkaXIpICYmIGV0YWdzICQoVEFHU19TT1VSQ0VTKQorZGlmZiAtLWdpdCBhL2xpYmNwcC9maWxlLW1hcC5jIGIvbGliY3BwL2ZpbGUtbWFwLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwMC4uMTgwMzVlZjZhNzIKKy0tLSAvZGV2L251bGwKKysrKyBiL2xpYmNwcC9maWxlLW1hcC5jCitAQCAtMCwwICsxLDkyIEBACisrLyogTWFwIG9uZSBkaXJlY3RvcnkgbmFtZSB0byBhbm90aGVyIGluIF9fRklMRV9fLCBfX0JBU0VfRklMRV9fCisrICAgYW5kIF9fYnVpbHRpbl9GSUxFICgpLgorKyAgIENvcHlyaWdodCAoQykgMjAwMS0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworK1RoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisrdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisrRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBvciAoYXQgeW91ciBvcHRpb24pIGFueQorK2xhdGVyIHZlcnNpb24uCisrCisrVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKytNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKytZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorK2Fsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCisrPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKworKyBJbiBvdGhlciB3b3JkcywgeW91IGFyZSB3ZWxjb21lIHRvIHVzZSwgc2hhcmUgYW5kIGltcHJvdmUgdGhpcyBwcm9ncmFtLgorKyBZb3UgYXJlIGZvcmJpZGRlbiB0byBmb3JiaWQgYW55b25lIGVsc2UgdG8gdXNlLCBzaGFyZSBhbmQgaW1wcm92ZQorKyB3aGF0IHlvdSBnaXZlIHRoZW0uICAgSGVscCBzdGFtcCBvdXQgc29mdHdhcmUtaG9hcmRpbmchICAqLworKworKyNpbmNsdWRlICJjb25maWcuaCIKKysjaW5jbHVkZSAic3lzdGVtLmgiCisrI2luY2x1ZGUgImZpbGUtbWFwLmgiCisrCisrLyogU3RydWN0dXJlIHJlY29yZGluZyB0aGUgbWFwcGluZyBmcm9tIHNvdXJjZSBmaWxlIGFuZCBkaXJlY3RvcnkKKysgICBuYW1lcyBhdCBjb21waWxlIHRpbWUgdG8gX19GSUxFX18gKi8KKyt0eXBlZGVmIHN0cnVjdCBmaWxlX3ByZWZpeF9tYXAKKyt7CisrICBjb25zdCBjaGFyICpvbGRfcHJlZml4OworKyAgY29uc3QgY2hhciAqbmV3X3ByZWZpeDsKKysgIHNpemVfdCBvbGRfbGVuOworKyAgc2l6ZV90IG5ld19sZW47CisrICBzdHJ1Y3QgZmlsZV9wcmVmaXhfbWFwICpuZXh0OworK30gZmlsZV9wcmVmaXhfbWFwOworKworKy8qIExpbmtlZCBsaXN0IG9mIHN1Y2ggc3RydWN0dXJlcy4gICovCisrc3RhdGljIGZpbGVfcHJlZml4X21hcCAqZmlsZV9wcmVmaXhfbWFwczsKKysKKysvKiBSZWNvcmQgcHJlZml4IG1hcHBpbmcgb2YgX19GSUxFX18uICBBUkcgaXMgdGhlIGFyZ3VtZW50IHRvCisrICAgLWZmaWxlLXByZWZpeC1tYXAgYW5kIG11c3QgYmUgb2YgdGhlIGZvcm0gT0xEPU5FVy4gICovCisraW50CisrYWRkX2ZpbGVfcHJlZml4X21hcCAoY29uc3QgY2hhciAqYXJnKQorK3sKKysgIGZpbGVfcHJlZml4X21hcCAqbWFwOworKyAgY29uc3QgY2hhciAqcDsKKysKKysgIHAgPSBzdHJjaHIgKGFyZywgJz0nKTsKKysgIGlmICghcCkKKysgIHsKKysgICAgICBmcHJpbnRmKHN0ZGVyciwgImludmFsaWQgYXJndW1lbnQgJXFzIHRvIC1mZmlsZS1wcmVmaXgtbWFwIiwgYXJnKTsKKysgICAgICByZXR1cm4gLTE7CisrICB9CisrICBtYXAgPSBYTkVXIChmaWxlX3ByZWZpeF9tYXApOworKyAgbWFwLT5vbGRfcHJlZml4ID0geHN0cm5kdXAgKGFyZywgcCAtIGFyZyk7CisrICBtYXAtPm9sZF9sZW4gPSBwIC0gYXJnOworKyAgcCsrOworKyAgbWFwLT5uZXdfcHJlZml4ID0geHN0cmR1cCAocCk7CisrICBtYXAtPm5ld19sZW4gPSBzdHJsZW4gKHApOworKyAgbWFwLT5uZXh0ID0gZmlsZV9wcmVmaXhfbWFwczsKKysgIGZpbGVfcHJlZml4X21hcHMgPSBtYXA7CisrCisrICByZXR1cm4gMDsKKyt9CisrCisrLyogUGVyZm9ybSB1c2VyLXNwZWNpZmllZCBtYXBwaW5nIG9mIF9fRklMRV9fIHByZWZpeGVzLiAgUmV0dXJuCisrICAgdGhlIG5ldyBuYW1lIGNvcnJlc3BvbmRpbmcgdG8gZmlsZW5hbWUuICAqLworKworK2NvbnN0IGNoYXIgKgorK3JlbWFwX2ZpbGVfZmlsZW5hbWUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQorK3sKKysgIGZpbGVfcHJlZml4X21hcCAqbWFwOworKyAgY2hhciAqczsKKysgIGNvbnN0IGNoYXIgKm5hbWU7CisrICBzaXplX3QgbmFtZV9sZW47CisrCisrICBmb3IgKG1hcCA9IGZpbGVfcHJlZml4X21hcHM7IG1hcDsgbWFwID0gbWFwLT5uZXh0KQorKyAgICBpZiAoZmlsZW5hbWVfbmNtcCAoZmlsZW5hbWUsIG1hcC0+b2xkX3ByZWZpeCwgbWFwLT5vbGRfbGVuKSA9PSAwKQorKyAgICAgIGJyZWFrOworKyAgaWYgKCFtYXApCisrICAgIHJldHVybiBmaWxlbmFtZTsKKysgIG5hbWUgPSBmaWxlbmFtZSArIG1hcC0+b2xkX2xlbjsKKysgIG5hbWVfbGVuID0gc3RybGVuIChuYW1lKSArIDE7CisrICBzID0gKGNoYXIgKikgYWxsb2NhIChuYW1lX2xlbiArIG1hcC0+bmV3X2xlbik7CisrICBtZW1jcHkgKHMsIG1hcC0+bmV3X3ByZWZpeCwgbWFwLT5uZXdfbGVuKTsKKysgIG1lbWNweSAocyArIG1hcC0+bmV3X2xlbiwgbmFtZSwgbmFtZV9sZW4pOworKworKyAgcmV0dXJuIHhzdHJkdXAgKHMpOworK30KKysKKysKK2RpZmYgLS1naXQgYS9saWJjcHAvaW5jbHVkZS9maWxlLW1hcC5oIGIvbGliY3BwL2luY2x1ZGUvZmlsZS1tYXAuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi44NzUwMzE1MmQyNworLS0tIC9kZXYvbnVsbAorKysrIGIvbGliY3BwL2luY2x1ZGUvZmlsZS1tYXAuaAorQEAgLTAsMCArMSwzMCBAQAorKy8qIE1hcCBvbmUgZGlyZWN0b3J5IG5hbWUgdG8gYW5vdGhlciBpbiBfX0ZJTEVfXywgX19CQVNFX0ZJTEVfXworKyAgIGFuZCBfX2J1aWx0aW5fRklMRSAoKS4KKysgICBDb3B5cmlnaHQgKEMpIDIwMDEtMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKytUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorK3VuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorK0ZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMywgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkKKytsYXRlciB2ZXJzaW9uLgorKworK1RoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorK2J1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorK0dOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKythbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQorKzxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKysgSW4gb3RoZXIgd29yZHMsIHlvdSBhcmUgd2VsY29tZSB0byB1c2UsIHNoYXJlIGFuZCBpbXByb3ZlIHRoaXMgcHJvZ3JhbS4KKysgWW91IGFyZSBmb3JiaWRkZW4gdG8gZm9yYmlkIGFueW9uZSBlbHNlIHRvIHVzZSwgc2hhcmUgYW5kIGltcHJvdmUKKysgd2hhdCB5b3UgZ2l2ZSB0aGVtLiAgIEhlbHAgc3RhbXAgb3V0IHNvZnR3YXJlLWhvYXJkaW5nISAgKi8KKysKKysjaWZuZGVmIExJQkNQUF9GSUxFX01BUF9ICisrI2RlZmluZSBMSUJDUFBfRklMRV9NQVBfSAorKworK2NvbnN0IGNoYXIgKiByZW1hcF9maWxlX2ZpbGVuYW1lIChjb25zdCBjaGFyICpmaWxlbmFtZSk7CisrCisraW50IGFkZF9maWxlX3ByZWZpeF9tYXAgKGNvbnN0IGNoYXIgKmFyZyk7CisrCisrI2VuZGlmIC8qICFMSUJDUFBfRklMRV9NQVBfSCAgKi8KK2RpZmYgLS1naXQgYS9saWJjcHAvbWFjcm8uYyBiL2xpYmNwcC9tYWNyby5jCitpbmRleCBkZTE4YzIyMTBjZi4uMjc0OGM3MGQ1MjAgMTAwNjQ0CistLS0gYS9saWJjcHAvbWFjcm8uYworKysrIGIvbGliY3BwL21hY3JvLmMKK0BAIC0yNiw2ICsyNiw3IEBAIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCisgI2luY2x1ZGUgInN5c3RlbS5oIgorICNpbmNsdWRlICJjcHBsaWIuaCIKKyAjaW5jbHVkZSAiaW50ZXJuYWwuaCIKKysjaW5jbHVkZSAiZmlsZS1tYXAuaCIKKyAKKyB0eXBlZGVmIHN0cnVjdCBtYWNyb19hcmcgbWFjcm9fYXJnOworIC8qIFRoaXMgc3RydWN0dXJlIHJlcHJlc2VudHMgdGhlIHRva2VucyBvZiBhIG1hY3JvIGFyZ3VtZW50LiAgVGhlc2UKK0BAIC0zMDEsNiArMzAyLDcgQEAgX2NwcF9idWlsdGluX21hY3JvX3RleHQgKGNwcF9yZWFkZXIgKnBmaWxlLCBjcHBfaGFzaG5vZGUgKm5vZGUsCisgCSAgICBpZiAoIW5hbWUpCisgCSAgICAgIGFib3J0ICgpOworIAkgIH0KKysJbmFtZSA9IHJlbWFwX2ZpbGVfZmlsZW5hbWUgKG5hbWUpOworIAlsZW4gPSBzdHJsZW4gKG5hbWUpOworIAlidWYgPSBfY3BwX3VuYWxpZ25lZF9hbGxvYyAocGZpbGUsIGxlbiAqIDIgKyAzKTsKKyAJcmVzdWx0ID0gYnVmOworLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDQyLVJldXNlLWZkZWJ1Zy1wcmVmaXgtbWFwLXRvLXJlcGxhY2UtZmZpbGUtcHJlZml4LW1hcC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDA0Mi1SZXVzZS1mZGVidWctcHJlZml4LW1hcC10by1yZXBsYWNlLWZmaWxlLXByZWZpeC1tYXAucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTI0NzE2NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDA0Mi1SZXVzZS1mZGVidWctcHJlZml4LW1hcC10by1yZXBsYWNlLWZmaWxlLXByZWZpeC1tYXAucGF0Y2gKQEAgLTAsMCArMSw0MyBAQAorRnJvbSBkZGRkYzczMzU1MzlmYjhhNmQzMGJlYmEyMTc4MTc2MmRmMTU5MTg2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAxNiBNYXIgMjAxNiAwNTozOTo1OSAtMDQwMAorU3ViamVjdDogW1BBVENIIDQyLzQ3XSBSZXVzZSAtZmRlYnVnLXByZWZpeC1tYXAgdG8gcmVwbGFjZSAtZmZpbGUtcHJlZml4LW1hcAorCitUaGUgb2UtY29yZSBtYXkgdXNlIGV4dGVybmFsIHRvb2xjaGFpbiB0byBjb21waWxlLAord2hpY2ggbWF5IG5vdCBzdXBwb3J0IC1mZmlsZS1wcmVmaXgtbWFwLgorCitTaW5jZSB3ZSB1c2UgLWZkZWJ1Zy1wcmVmaXgtbWFwIHRvIGRvIHRoZSBzYW1lIHRoaW5nLAorc28gd2UgY291bGQgcmV1c2UgaXQgdG8gcmVwbGFjZSAtZmZpbGUtcHJlZml4LW1hcC4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlW29lLWNvcmUgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGdjYy9vcHRzLWdsb2JhbC5jIHwgNCArKysrCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvZ2NjL29wdHMtZ2xvYmFsLmMgYi9nY2Mvb3B0cy1nbG9iYWwuYworaW5kZXggNTBiYWQ3N2MzNDcuLjMyYjFkMjg2NzIxIDEwMDY0NAorLS0tIGEvZ2NjL29wdHMtZ2xvYmFsLmMKKysrKyBiL2djYy9vcHRzLWdsb2JhbC5jCitAQCAtMzEsNiArMzEsNyBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQorICNpbmNsdWRlICJsYW5naG9va3MuaCIKKyAjaW5jbHVkZSAiZGJnY250LmgiCisgI2luY2x1ZGUgImRlYnVnLmgiCisrI2luY2x1ZGUgImZpbGUtbWFwLmgiCisgI2luY2x1ZGUgIm91dHB1dC5oIgorICNpbmNsdWRlICJwbHVnaW4uaCIKKyAjaW5jbHVkZSAidG9wbGV2LmgiCitAQCAtMzU3LDYgKzM1OCw5IEBAIGhhbmRsZV9jb21tb25fZGVmZXJyZWRfb3B0aW9ucyAodm9pZCkKKyAKKyAJY2FzZSBPUFRfZmRlYnVnX3ByZWZpeF9tYXBfOgorIAkgIGFkZF9kZWJ1Z19wcmVmaXhfbWFwIChvcHQtPmFyZyk7CisrCisrCSAgLyogUmV1c2UgLWZkZWJ1Zy1wcmVmaXgtbWFwIHRvIHJlcGxhY2UgLWZmaWxlLXByZWZpeC1tYXAgKi8KKysJICBhZGRfZmlsZV9wcmVmaXhfbWFwIChvcHQtPmFyZyk7CisgCSAgYnJlYWs7CisgCisgCWNhc2UgT1BUX2ZkdW1wXzoKKy0tIAorMi4xMi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDA0My1nY2MtZmluYWwuYy1mZGVidWctcHJlZml4LW1hcC1zdXBwb3J0LXRvLXJlbWFwLXNvdXJjLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDQzLWdjYy1maW5hbC5jLWZkZWJ1Zy1wcmVmaXgtbWFwLXN1cHBvcnQtdG8tcmVtYXAtc291cmMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzRhNWM4NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDA0My1nY2MtZmluYWwuYy1mZGVidWctcHJlZml4LW1hcC1zdXBwb3J0LXRvLXJlbWFwLXNvdXJjLnBhdGNoCkBAIC0wLDAgKzEsNTQgQEAKK0Zyb20gNWJjOTdiZTM4ODQ4NWE1ZjhkZDg1ZGIzNDM3MmExMjk5YmZmZDI2MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMjQgTWFyIDIwMTYgMTE6MjM6MTQgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSCA0My80N10gZ2NjL2ZpbmFsLmM6IC1mZGVidWctcHJlZml4LW1hcCBzdXBwb3J0IHRvIHJlbWFwCisgc291cmNlcyB3aXRoIHJlbGF0aXZlIHBhdGgKKworUFIgb3RoZXIvNzA0MjgKKyogZmluYWwuYyAocmVtYXBfZGVidWdfZmlsZW5hbWUpOiBVc2UgbHJlYWxwYXRoIHRvIHRyYW5zbGF0ZQorcmVsYXRpdmUgcGF0aCBiZWZvcmUgcmVtYXBwaW5nCisKK2h0dHBzOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTcwNDI4CitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbZ2NjLXBhdGNoZXNAZ2NjLmdudS5vcmddCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGdjYy9maW5hbC5jIHwgMTUgKysrKysrKysrKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvZmluYWwuYyBiL2djYy9maW5hbC5jCitpbmRleCA4MjAxNjJiMmQyOC4uZDc0Y2I5MDFhYmQgMTAwNjQ0CistLS0gYS9nY2MvZmluYWwuYworKysrIGIvZ2NjL2ZpbmFsLmMKK0BAIC0xNTU5LDE2ICsxNTU5LDI1IEBAIHJlbWFwX2RlYnVnX2ZpbGVuYW1lIChjb25zdCBjaGFyICpmaWxlbmFtZSkKKyAgIGNvbnN0IGNoYXIgKm5hbWU7CisgICBzaXplX3QgbmFtZV9sZW47CisgCisrICAvKiBTdXBwb3J0IHRvIHJlbWFwIGZpbGVuYW1lIHdpdGggcmVsYXRpdmUgcGF0aCAgKi8KKysgIGNoYXIgKnJlYWxwYXRoID0gbHJlYWxwYXRoIChmaWxlbmFtZSk7CisrICBpZiAocmVhbHBhdGggPT0gTlVMTCkKKysgICAgcmV0dXJuIGZpbGVuYW1lOworKworICAgZm9yIChtYXAgPSBkZWJ1Z19wcmVmaXhfbWFwczsgbWFwOyBtYXAgPSBtYXAtPm5leHQpCistICAgIGlmIChmaWxlbmFtZV9uY21wIChmaWxlbmFtZSwgbWFwLT5vbGRfcHJlZml4LCBtYXAtPm9sZF9sZW4pID09IDApCisrICAgIGlmIChmaWxlbmFtZV9uY21wIChyZWFscGF0aCwgbWFwLT5vbGRfcHJlZml4LCBtYXAtPm9sZF9sZW4pID09IDApCisgICAgICAgYnJlYWs7CisgICBpZiAoIW1hcCkKKy0gICAgcmV0dXJuIGZpbGVuYW1lOworLSAgbmFtZSA9IGZpbGVuYW1lICsgbWFwLT5vbGRfbGVuOworKyAgICB7CisrICAgICAgZnJlZSAocmVhbHBhdGgpOworKyAgICAgIHJldHVybiBmaWxlbmFtZTsKKysgICAgfQorKyAgbmFtZSA9IHJlYWxwYXRoICsgbWFwLT5vbGRfbGVuOworICAgbmFtZV9sZW4gPSBzdHJsZW4gKG5hbWUpICsgMTsKKyAgIHMgPSAoY2hhciAqKSBhbGxvY2EgKG5hbWVfbGVuICsgbWFwLT5uZXdfbGVuKTsKKyAgIG1lbWNweSAocywgbWFwLT5uZXdfcHJlZml4LCBtYXAtPm5ld19sZW4pOworICAgbWVtY3B5IChzICsgbWFwLT5uZXdfbGVuLCBuYW1lLCBuYW1lX2xlbik7CisrICBmcmVlIChyZWFscGF0aCk7CisgICByZXR1cm4gZ2djX3N0cmR1cCAocyk7CisgfQorIAwKKy0tIAorMi4xMi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDA0NC1saWJnY2MtQWRkLWtub2ItdG8tdXNlLWxkYmwtMTI4LW9uLXBwYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDA0NC1saWJnY2MtQWRkLWtub2ItdG8tdXNlLWxkYmwtMTI4LW9uLXBwYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzlhZjliCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDQ0LWxpYmdjYy1BZGQta25vYi10by11c2UtbGRibC0xMjgtb24tcHBjLnBhdGNoCkBAIC0wLDAgKzEsMTI0IEBACitGcm9tIDg0N2FlYzc2NDU0MDYzNmVjNjU0ZmQ3YTAxMmUyNzFhZmE4ZDRlMGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBBcHIgMjAxNiAyMDowMzoyOCArMDAwMAorU3ViamVjdDogW1BBVENIIDQ0LzQ3XSBsaWJnY2M6IEFkZCBrbm9iIHRvIHVzZSBsZGJsLTEyOCBvbiBwcGMKKworbXVzbCBkb2VzIG5vdCBzdXBwb3J0IGxkYmwgMTI4IHNvIHdlIGNhbiBub3QgYXNzdW1lCit0aGF0IGxpbnV4IGFzIGEgd2hvbGUgc3VwcG9ydHMgbGRibC0xMjggYml0cywgaW5zdGVhZAorYWN0IHVwb24gY29uZmlndXJlIG9wdGlvbiBwYXNzZWQgdG8gZ2NjIGFuZCBhc3N1bWUgbm8KK29uIG11c2wgYW5kIHllcyBvdGhlcndpc2UgaWYgbm8gb3B0aW9uIGlzIHBhc3NlZCBzaW5jZQorZGVmYXVsdCBiZWhhdmlvdXIgaXMgdG8gYXNzdW1lIGxkYmwxMjggaXQgZG9lcyBub3QKK2NoYW5nZSB0aGUgZGVmYXVsdHMKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgbGliZ2NjL01ha2VmaWxlLmluICAgICAgICAgICB8ICAxICsKKyBsaWJnY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4IHwgIDUgKysrKy0KKyBsaWJnY2MvY29uZmlndXJlICAgICAgICAgICAgIHwgMTggKysrKysrKysrKysrKysrKysrCisgbGliZ2NjL2NvbmZpZ3VyZS5hYyAgICAgICAgICB8IDEyICsrKysrKysrKysrKworIDQgZmlsZXMgY2hhbmdlZCwgMzUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorIG1vZGUgY2hhbmdlIDEwMDY0NCA9PiAxMDA3NTUgbGliZ2NjL2NvbmZpZ3VyZQorCitkaWZmIC0tZ2l0IGEvbGliZ2NjL01ha2VmaWxlLmluIGIvbGliZ2NjL01ha2VmaWxlLmluCitpbmRleCBhMWEzOTJkZTg4ZC4uMmZlNjg4OWEzNDIgMTAwNjQ0CistLS0gYS9saWJnY2MvTWFrZWZpbGUuaW4KKysrKyBiL2xpYmdjYy9NYWtlZmlsZS5pbgorQEAgLTQ4LDYgKzQ4LDcgQEAgdW53aW5kX2hlYWRlciA9IEB1bndpbmRfaGVhZGVyQAorIG1kX3Vud2luZF9oZWFkZXIgPSBAbWRfdW53aW5kX2hlYWRlckAKKyBzZnBfbWFjaGluZV9oZWFkZXIgPSBAc2ZwX21hY2hpbmVfaGVhZGVyQAorIHRocmVhZF9oZWFkZXIgPSBAdGhyZWFkX2hlYWRlckAKKyt3aXRoX2xkYmwxMjggPSBAd2l0aF9sZGJsMTI4QAorIAorIGhvc3Rfbm9uY2Fub25pY2FsID0gQGhvc3Rfbm9uY2Fub25pY2FsQAorIHJlYWxfaG9zdF9ub25jYW5vbmljYWwgPSBAcmVhbF9ob3N0X25vbmNhbm9uaWNhbEAKK2RpZmYgLS1naXQgYS9saWJnY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4IGIvbGliZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eAoraW5kZXggNGY2ZDRjNGE0ZDIuLmM1MGRkOTRhMmRhIDEwMDY0NAorLS0tIGEvbGliZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eAorKysrIGIvbGliZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eAorQEAgLTEsMyArMSw2IEBACisgU0hMSUJfTUFQRklMRVMgKz0gJChzcmNkaXIpL2NvbmZpZy9yczYwMDAvbGliZ2NjLWdsaWJjLnZlcgorIAorLUhPU1RfTElCR0NDMl9DRkxBR1MgKz0gLW1sb25nLWRvdWJsZS0xMjggLW1uby1taW5pbWFsLXRvYworK2lmZXEgKCQod2l0aF9sZGJsMTI4KSx5ZXMpCisrSE9TVF9MSUJHQ0MyX0NGTEFHUyArPSAtbWxvbmctZG91YmxlLTEyOAorK2VuZGlmCisrSE9TVF9MSUJHQ0MyX0NGTEFHUyArPSAtbW5vLW1pbmltYWwtdG9jCitkaWZmIC0tZ2l0IGEvbGliZ2NjL2NvbmZpZ3VyZSBiL2xpYmdjYy9jb25maWd1cmUKK29sZCBtb2RlIDEwMDY0NAorbmV3IG1vZGUgMTAwNzU1CitpbmRleCA0NWM0NTk3ODhjMy4uZTJkMTliMTQ0YjgKKy0tLSBhL2xpYmdjYy9jb25maWd1cmUKKysrKyBiL2xpYmdjYy9jb25maWd1cmUKK0BAIC02MTgsNiArNjE4LDcgQEAgYnVpbGRfdmVuZG9yCisgYnVpbGRfY3B1CisgYnVpbGQKKyB3aXRoX2FpeF9zb25hbWUKKyt3aXRoX2xkYmwxMjgKKyBlbmFibGVfdnRhYmxlX3ZlcmlmeQorIGVuYWJsZV9zaGFyZWQKKyBsaWJnY2NfdG9wZGlyCitAQCAtNjY3LDYgKzY2OCw3IEBAIHdpdGhfY3Jvc3NfaG9zdAorIHdpdGhfbGQKKyBlbmFibGVfc2hhcmVkCisgZW5hYmxlX3Z0YWJsZV92ZXJpZnkKKyt3aXRoX2xvbmdfZG91YmxlXzEyOAorIHdpdGhfYWl4X3NvbmFtZQorIGVuYWJsZV92ZXJzaW9uX3NwZWNpZmljX3J1bnRpbWVfbGlicworIHdpdGhfc2xpYmRpcgorQEAgLTEzMjQsNiArMTMyNiw3IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgorICAgLS13aXRoLXRhcmdldC1zdWJkaXI9U1VCRElSICAgICAgQ29uZmlndXJpbmcgaW4gYSBzdWJkaXJlY3RvcnkgZm9yIHRhcmdldAorICAgLS13aXRoLWNyb3NzLWhvc3Q9SE9TVCAgICAgICAgICAgQ29uZmlndXJpbmcgd2l0aCBhIGNyb3NzIGNvbXBpbGVyCisgICAtLXdpdGgtbGQgICAgICAgICAgICAgICBhcnJhbmdlIHRvIHVzZSB0aGUgc3BlY2lmaWVkIGxkIChmdWxsIHBhdGhuYW1lKQorKyAgLS13aXRoLWxvbmctZG91YmxlLTEyOCAgdXNlIDEyOC1iaXQgbG9uZyBkb3VibGUgYnkgZGVmYXVsdAorICAgLS13aXRoLWFpeC1zb25hbWU9YWl4fHN2cjR8Ym90aAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVkIGxpYnJhcnkgdmVyc2lvbmluZyAoYWthICJTT05BTUUiKSB2YXJpYW50IHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm92aWRlIG9uIEFJWAorQEAgLTIyMDgsNiArMjIxMSwyMSBAQCBmaQorIAorIAorIAorKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbG9uZy1kb3VibGUtMTI4IHdhcyBnaXZlbi4KKytpZiB0ZXN0ICIke3dpdGhfbG9uZ19kb3VibGVfMTI4K3NldH0iID0gc2V0OyB0aGVuIDoKKysgIHdpdGh2YWw9JHdpdGhfbG9uZ19kb3VibGVfMTI4OyB3aXRoX2xkYmwxMjg9IiR3aXRoX2xvbmdfZG91YmxlXzEyOCIKKytlbHNlCisrICBjYXNlICIke2hvc3R9IiBpbgorKyBwb3dlciotKi1tdXNsKikKKysgICB3aXRoX2xkYmwxMjg9Im5vIjs7CisrICopIHdpdGhfbGRibDEyOD0ieWVzIjs7CisrIGVzYWMKKysKKytmaQorKworKworKworKworICMgQ2hlY2sgd2hldGhlciAtLXdpdGgtYWl4LXNvbmFtZSB3YXMgZ2l2ZW4uCisgaWYgdGVzdCAiJHt3aXRoX2FpeF9zb25hbWUrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICAgd2l0aHZhbD0kd2l0aF9haXhfc29uYW1lOyBjYXNlICIke2hvc3R9OiR7ZW5hYmxlX3NoYXJlZH0iIGluCitkaWZmIC0tZ2l0IGEvbGliZ2NjL2NvbmZpZ3VyZS5hYyBiL2xpYmdjYy9jb25maWd1cmUuYWMKK2luZGV4IGFmMTUxNDczNzA5Li5kYWRhNTI0MTZkYSAxMDA2NDQKKy0tLSBhL2xpYmdjYy9jb25maWd1cmUuYWMKKysrKyBiL2xpYmdjYy9jb25maWd1cmUuYWMKK0BAIC03Nyw2ICs3NywxOCBAQCBBQ19BUkdfRU5BQkxFKHZ0YWJsZS12ZXJpZnksCisgW2VuYWJsZV92dGFibGVfdmVyaWZ5PW5vXSkKKyBBQ19TVUJTVChlbmFibGVfdnRhYmxlX3ZlcmlmeSkKKyAKKytBQ19BUkdfV0lUSChsb25nLWRvdWJsZS0xMjgsCisrW0FTX0hFTFBfU1RSSU5HKFstLXdpdGgtbG9uZy1kb3VibGUtMTI4XSwKKysgICAgW3VzZSAxMjgtYml0IGxvbmcgZG91YmxlIGJ5IGRlZmF1bHRdKV0sCisrICAgICAgd2l0aF9sZGJsMTI4PSIkd2l0aF9sb25nX2RvdWJsZV8xMjgiLAorK1tjYXNlICIke2hvc3R9IiBpbgorKyBwb3dlciotKi1tdXNsKikKKysgICB3aXRoX2xkYmwxMjg9Im5vIjs7CisrICopIHdpdGhfbGRibDEyOD0ieWVzIjs7CisrIGVzYWMKKytdKQorK0FDX1NVQlNUKHdpdGhfbGRibDEyOCkKKysKKyBBQ19BUkdfV0lUSChhaXgtc29uYW1lLAorIFtBU19IRUxQX1NUUklORyhbLS13aXRoLWFpeC1zb25hbWU9YWl4fHN2cjR8Ym90aF0sCisgICAgIFtzaGFyZWQgbGlicmFyeSB2ZXJzaW9uaW5nIChha2EgIlNPTkFNRSIpIHZhcmlhbnQgdG8gcHJvdmlkZSBvbiBBSVhdKV0sCistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwNDUtTGluay1saWJnY2MtdXNpbmctTERGTEFHUy1ub3QtanVzdC1TSExJQl9MREZMQUdTLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDQ1LUxpbmstbGliZ2NjLXVzaW5nLUxERkxBR1Mtbm90LWp1c3QtU0hMSUJfTERGTEFHUy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYWEwMzhjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDQ1LUxpbmstbGliZ2NjLXVzaW5nLUxERkxBR1Mtbm90LWp1c3QtU0hMSUJfTERGTEFHUy5wYXRjaApAQCAtMCwwICsxLDI5IEBACitGcm9tIDkyYmViODgzYWI1N2EyM2EzNWJhNzZjNDk2YmMxZjRjYWJiMTY5MGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCA0IE1heSAyMDE2IDIxOjExOjM0IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggNDUvNDddIExpbmsgbGliZ2NjIHVzaW5nIExERkxBR1MsIG5vdCBqdXN0IFNITElCX0xERkxBR1MKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IENocmlzdG9waGVyIExhcnNvbiA8Y2hyaXNfbGFyc29uQG1lbnRvci5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbGliZ2NjL2NvbmZpZy90LXNsaWJnY2MgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9saWJnY2MvY29uZmlnL3Qtc2xpYmdjYyBiL2xpYmdjYy9jb25maWcvdC1zbGliZ2NjCitpbmRleCA3NmJlNzcxMDk2MC4uYTFlZTJlZTI2ZWQgMTAwNjQ0CistLS0gYS9saWJnY2MvY29uZmlnL3Qtc2xpYmdjYworKysrIGIvbGliZ2NjL2NvbmZpZy90LXNsaWJnY2MKK0BAIC0zMiw3ICszMiw3IEBAIFNITElCX0lOU1RBTExfU09MSU5LID0gJChMTl9TKSAkKFNITElCX1NPTkFNRSkgXAorIAkkKERFU1RESVIpJChzbGliZGlyKSQoU0hMSUJfU0xJQkRJUl9RVUFMKS8kKFNITElCX1NPTElOSykKKyAKKyBTSExJQl9MSU5LID0gJChDQykgJChMSUJHQ0MyX0NGTEFHUykgLXNoYXJlZCAtbm9kZWZhdWx0bGlicyBcCistCSQoU0hMSUJfTERGTEFHUykgXAorKwkkKExERkxBR1MpICQoU0hMSUJfTERGTEFHUykgXAorIAktbyAkKFNITElCX0RJUikvJChTSExJQl9TT05BTUUpLnRtcCBAbXVsdGlsaWJfZmxhZ3NAIFwKKyAJJChTSExJQl9PQkpTKSAkKFNITElCX0xDKSAmJiBcCisgCXJtIC1mICQoU0hMSUJfRElSKS8kKFNITElCX1NPTElOSykgJiYgXAorLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDQ3LXN5bmMtZ2NjLXN0ZGRlZi5oLXdpdGgtbXVzbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDA0Ny1zeW5jLWdjYy1zdGRkZWYuaC13aXRoLW11c2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjVkMjJmMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDA0Ny1zeW5jLWdjYy1zdGRkZWYuaC13aXRoLW11c2wucGF0Y2gKQEAgLTAsMCArMSw5MSBAQAorRnJvbSA5Yjk1MWM4ZjZiMGFhZmY3YzE2ZGM0ZGI3MmI1ZTU2ZWM3MzgxMGJiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMyBGZWIgMjAxNyAxMjo1NjowMCAtMDgwMAorU3ViamVjdDogW1BBVENIIDQ3LzQ3XSBzeW5jIGdjYyBzdGRkZWYuaCB3aXRoIG11c2wKKworbXVzbCBkZWZpbmVzIHB0cmRpZmZfdCBzaXplX3QgYW5kIHdjaGFyX3QKK3NvIGRvbnQgZGVmaW5lIHRoZW0gaGVyZSBpZiBtdXNsIGlzIGRlZmluaW5pbmcgdGhlbQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FLVNwZWNpZmljXQorCisgZ2NjL2dpbmNsdWRlL3N0ZGRlZi5oIHwgOSArKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9nY2MvZ2luY2x1ZGUvc3RkZGVmLmggYi9nY2MvZ2luY2x1ZGUvc3RkZGVmLmgKK2luZGV4IDg3MmY0NTFjYWM5Li43ZTkwOTM4Mzg3YyAxMDA2NDQKKy0tLSBhL2djYy9naW5jbHVkZS9zdGRkZWYuaAorKysrIGIvZ2NjL2dpbmNsdWRlL3N0ZGRlZi5oCitAQCAtMTM0LDYgKzEzNCw3IEBAIF9UWVBFX3djaGFyX3Q7CisgI2lmbmRlZiBfX19pbnRfcHRyZGlmZl90X2gKKyAjaWZuZGVmIF9HQ0NfUFRSRElGRl9UCisgI2lmbmRlZiBfUFRSRElGRl9UX0RFQ0xBUkVEIC8qIERyYWdvbkZseSAqLworKyNpZm5kZWYgX19ERUZJTkVEX3B0cmRpZmZfdCAvKiBtdXNsICovCisgI2RlZmluZSBfUFRSRElGRl9UCisgI2RlZmluZSBfVF9QVFJESUZGXworICNkZWZpbmUgX1RfUFRSRElGRgorQEAgLTE0MywxMCArMTQ0LDEyIEBAIF9UWVBFX3djaGFyX3Q7CisgI2RlZmluZSBfX19pbnRfcHRyZGlmZl90X2gKKyAjZGVmaW5lIF9HQ0NfUFRSRElGRl9UCisgI2RlZmluZSBfUFRSRElGRl9UX0RFQ0xBUkVECisrI2RlZmluZSBfX0RFRklORURfcHRyZGlmZl90IC8qIG11c2wgKi8KKyAjaWZuZGVmIF9fUFRSRElGRl9UWVBFX18KKyAjZGVmaW5lIF9fUFRSRElGRl9UWVBFX18gbG9uZyBpbnQKKyAjZW5kaWYKKyB0eXBlZGVmIF9fUFRSRElGRl9UWVBFX18gcHRyZGlmZl90OworKyNlbmRpZiAvKiBfX0RFRklORURfcHRyZGlmZl90ICovCisgI2VuZGlmIC8qIF9QVFJESUZGX1RfREVDTEFSRUQgKi8KKyAjZW5kaWYgLyogX0dDQ19QVFJESUZGX1QgKi8KKyAjZW5kaWYgLyogX19faW50X3B0cmRpZmZfdF9oICovCitAQCAtMTg0LDYgKzE4Nyw3IEBAIHR5cGVkZWYgX19QVFJESUZGX1RZUEVfXyBwdHJkaWZmX3Q7CisgI2lmbmRlZiBfR0NDX1NJWkVfVAorICNpZm5kZWYgX1NJWkVUXworICNpZm5kZWYgX19zaXplX3QKKysjaWZuZGVmIF9fREVGSU5FRF9zaXplX3QgLyogbXVzbCAqLworICNkZWZpbmUgX19zaXplX3RfXwkvKiBCZU9TICovCisgI2RlZmluZSBfX1NJWkVfVF9fCS8qIENyYXkgVW5pY29zL01rICovCisgI2RlZmluZSBfU0laRV9UCitAQCAtMjAwLDYgKzIwNCw3IEBAIHR5cGVkZWYgX19QVFJESUZGX1RZUEVfXyBwdHJkaWZmX3Q7CisgI2RlZmluZSBfX19pbnRfc2l6ZV90X2gKKyAjZGVmaW5lIF9HQ0NfU0laRV9UCisgI2RlZmluZSBfU0laRVRfCisrI2RlZmluZSBfX0RFRklORURfc2l6ZV90IC8qIG11c2wgKi8KKyAjaWYgKGRlZmluZWQgKF9fRnJlZUJTRF9fKSAmJiAoX19GcmVlQlNEX18gPj0gNSkpIFwKKyAgIHx8IGRlZmluZWQoX19EcmFnb25GbHlfXykgXAorICAgfHwgZGVmaW5lZChfX0ZyZWVCU0Rfa2VybmVsX18pCitAQCAtMjM1LDYgKzI0MCw3IEBAIHR5cGVkZWYgbG9uZyBzc2l6ZV90OworICNlbmRpZiAvKiBfU0laRV9UICovCisgI2VuZGlmIC8qIF9fU0laRV9UX18gKi8KKyAjZW5kaWYgLyogX19zaXplX3RfXyAqLworKyNlbmRpZiAvKiBfX0RFRklORURfc2l6ZV90ICovCisgI3VuZGVmCV9fbmVlZF9zaXplX3QKKyAjZW5kaWYgLyogX1NURERFRl9IIG9yIF9fbmVlZF9zaXplX3QuICAqLworIAorQEAgLTI2NCw2ICsyNzAsNyBAQCB0eXBlZGVmIGxvbmcgc3NpemVfdDsKKyAjaWZuZGVmIF9fX2ludF93Y2hhcl90X2gKKyAjaWZuZGVmIF9fSU5UX1dDSEFSX1RfSAorICNpZm5kZWYgX0dDQ19XQ0hBUl9UCisrI2lmbmRlZiBfX0RFRklORURfd2NoYXJfdCAvKiBtdXNsICovCisgI2RlZmluZSBfX3djaGFyX3RfXwkvKiBCZU9TICovCisgI2RlZmluZSBfX1dDSEFSX1RfXwkvKiBDcmF5IFVuaWNvcy9NayAqLworICNkZWZpbmUgX1dDSEFSX1QKK0BAIC0yNzksNiArMjg2LDcgQEAgdHlwZWRlZiBsb25nIHNzaXplX3Q7CisgI2RlZmluZSBfX0lOVF9XQ0hBUl9UX0gKKyAjZGVmaW5lIF9HQ0NfV0NIQVJfVAorICNkZWZpbmUgX1dDSEFSX1RfREVDTEFSRUQKKysjZGVmaW5lIF9fREVGSU5FRF93Y2hhcl90IC8qIG11c2wgKi8KKyAKKyAvKiBPbiBCU0QvMzg2IDEuMSwgYXQgbGVhc3QsIG1hY2hpbmUvYW5zaS5oIGRlZmluZXMgX0JTRF9XQ0hBUl9UXworICAgIGluc3RlYWQgb2YgX1dDSEFSX1RfLCBhbmQgX0JTRF9SVU5FX1RfICh3aGljaCwgdW5saWtlIHRoZSBvdGhlcgorQEAgLTM0NCw2ICszNTIsNyBAQCB0eXBlZGVmIF9fV0NIQVJfVFlQRV9fIHdjaGFyX3Q7CisgI2VuZGlmCisgI2VuZGlmIC8qIF9fV0NIQVJfVF9fICovCisgI2VuZGlmIC8qIF9fd2NoYXJfdF9fICovCisrI2VuZGlmIC8qIF9fREVGSU5FRF93Y2hhcl90IG11c2wgKi8KKyAjdW5kZWYJX19uZWVkX3djaGFyX3QKKyAjZW5kaWYgLyogX1NURERFRl9IIG9yIF9fbmVlZF93Y2hhcl90LiAgKi8KKyAKKy0tIAorMi4xMi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDA0OC1nY2MtRW5hYmxlLXN0YXRpYy1QSUUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwNDgtZ2NjLUVuYWJsZS1zdGF0aWMtUElFLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5NmU5MTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtNy4zLzAwNDgtZ2NjLUVuYWJsZS1zdGF0aWMtUElFLnBhdGNoCkBAIC0wLDAgKzEsNDYgQEAKK0Zyb20gNDRlZjgwNjg4YjU2YmVlYTg1YzAwNzA4NDBkZWExZTJhNGUzNGFlZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDEzIEp1biAyMDE3IDEyOjEyOjUyIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggNDkvNDldIGdjYzogRW5hYmxlIHN0YXRpYyBQSUUKKworU3RhdGljIFBJRSBzdXBwb3J0IGluIEdDQworc2VlCitodHRwczovL2djYy5nbnUub3JnL21sL2djYy8yMDE1LTA2L21zZzAwMDA4Lmh0bWwKKworc3RhcnRmaWxlcyBiZWZvcmUgcGF0Y2g6CisgLXN0YXRpYyAtPiBjcnQxLm8gY3J0aS5vIGNydGJlZ2luVC5vCisgLXN0YXRpYyAtUElFIC0+IGNydDEubyBjcnRpLm8gY3J0YmVnaW5ULm8KKyAKK2FmdGVyIHBhdGNoOgorIC1zdGF0aWMgLT4gY3J0MS5vIGNydGkubyBjcnRiZWdpblQubworIC1zdGF0aWMgLVBJRSAtPiByY3J0MS5vIGNydGkubyBjcnRiZWdpblMubworIAorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEp1cm8gQnlzdHJpY2t5IDxqdXJvLmJ5c3RyaWNreUBpbnRlbC5jb20+CisKKy0tLQorIGdjYy9jb25maWcvZ251LXVzZXIuaCB8IDYgKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2djYy9jb25maWcvZ251LXVzZXIuaCBiL2djYy9jb25maWcvZ251LXVzZXIuaAoraW5kZXggZGU2MDViMC4uYjAzNWJiZSAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvZ251LXVzZXIuaAorKysrIGIvZ2NjL2NvbmZpZy9nbnUtdXNlci5oCitAQCAtNTIsMTEgKzUyLDExIEBAIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZQorICNkZWZpbmUgR05VX1VTRVJfVEFSR0VUX1NUQVJURklMRV9TUEVDIFwKKyAgICIle3NoYXJlZDo7IFwKKyAgICAgIHBnfHB8cHJvZmlsZTpnY3J0MS5vJXM7IFwKKy0gICAgIHN0YXRpYzpjcnQxLm8lczsgXAorKyAgICAgc3RhdGljOiAleyIgUElFX1NQRUMgIjogcmNydDEubyVzOyA6Y3J0MS5vJXN9OyBcCisgICAgICAiIFBJRV9TUEVDICI6U2NydDEubyVzOyBcCisgICAgICA6Y3J0MS5vJXN9IFwKKyAgICBjcnRpLm8lcyBcCistICAgJXtzdGF0aWM6Y3J0YmVnaW5ULm8lczsgXAorKyAgICV7c3RhdGljOiAleyIgUElFX1NQRUMgIjogY3J0YmVnaW5TLm8lczsgOmNydGJlZ2luVC5vJXN9OyBcCisgICAgICBzaGFyZWR8IiBQSUVfU1BFQyAiOmNydGJlZ2luUy5vJXM7IFwKKyAgICAgIDpjcnRiZWdpbi5vJXN9IFwKKyAgICAle2Z2dGFibGUtdmVyaWZ5PW5vbmU6JXM7IFwKKworMi4xMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDA1MC1SSVNDLVYtSGFuZGxlLW5vbi1sZWdpdGltYXRlLWFkZHJlc3MtaW4tcmlzY3ZfbGVnaXRpLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy8wMDUwLVJJU0MtVi1IYW5kbGUtbm9uLWxlZ2l0aW1hdGUtYWRkcmVzcy1pbi1yaXNjdl9sZWdpdGkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWExNGQwNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvMDA1MC1SSVNDLVYtSGFuZGxlLW5vbi1sZWdpdGltYXRlLWFkZHJlc3MtaW4tcmlzY3ZfbGVnaXRpLnBhdGNoCkBAIC0wLDAgKzEsNTEgQEAKK0Zyb20gMTYyMTBlNjI3MGUyMDBjZDQ4OTJhOTBlY2VmNjA4OTA2YmUzYTEzMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtpdG8gQ2hlbmcgPGtpdG8uY2hlbmdAZ21haWwuY29tPgorRGF0ZTogVGh1LCA0IE1heSAyMDE3IDAyOjExOjEzICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIFJJU0MtVjogSGFuZGxlIG5vbi1sZWdpdGltYXRlIGFkZHJlc3MgaW4KKyByaXNjdl9sZWdpdGltaXplX21vdmUKKworR0NDIG1heSBnZW5lcmF0ZSBub24tbGVnaXRpbWF0ZSBhZGRyZXNzIGR1ZSB0byB3ZSBhbGxvdyBzb21lCitsb2FkL3N0b3JlIHdpdGggbm9uLWxlZ2l0aW1hdGUgYWRkcmVzcyBpbiBwaWMubWQuCisKKyAgMjAxNy0wNS0xMiAgS2l0byBDaGVuZyAgPGtpdG8uY2hlbmdAZ21haWwuY29tPgorCisgICAgICAqIGNvbmZpZy9yaXNjdi9yaXNjdi5jIChyaXNjdl9sZWdpdGltaXplX21vdmUpOiBIYW5kbGUKKyAgICAgIG5vbi1sZWdpdGltYXRlIGFkZHJlc3MuCistLS0KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKKyBnY2MvQ2hhbmdlTG9nICAgICAgICAgICAgfCAgNSArKysrKworIGdjYy9jb25maWcvcmlzY3YvcmlzY3YuYyB8IDE2ICsrKysrKysrKysrKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlzY3YvcmlzY3YuYyBiL2djYy9jb25maWcvcmlzY3YvcmlzY3YuYworaW5kZXggZjdmZWM0YmZjZjguLmQ1MTliZTE2NTlhIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi5jCisrKysgYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LmMKK0BAIC0xMzg1LDYgKzEzODUsMjIgQEAgcmlzY3ZfbGVnaXRpbWl6ZV9tb3ZlIChlbnVtIG1hY2hpbmVfbW9kZSBtb2RlLCBydHggZGVzdCwgcnR4IHNyYykKKyAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgfQorIAorKyAgLyogUklTQy1WIEdDQyBtYXkgZ2VuZXJhdGUgbm9uLWxlZ2l0aW1hdGUgYWRkcmVzcyBkdWUgdG8gd2UgcHJvdmlkZSBzb21lCisrICAgICBwYXR0ZXJuIGZvciBvcHRpbWl6ZSBhY2Nlc3MgUElDIGxvY2FsIHN5bWJvbCBhbmQgaXQncyBtYWtlIEdDQyBnZW5lcmF0ZQorKyAgICAgdW5yZWNvZ25pemFibGUgaW5zdHJ1Y3Rpb24gZHVyaW5nIG9wdG1pemluZy4gICovCisrCisrICBpZiAoTUVNX1AgKGRlc3QpICYmICFyaXNjdl9sZWdpdGltYXRlX2FkZHJlc3NfcCAobW9kZSwgWEVYUCAoZGVzdCwgMCksCisrCQkJCQkJICAgcmVsb2FkX2NvbXBsZXRlZCkpCisrICAgIHsKKysgICAgICBYRVhQIChkZXN0LCAwKSA9IHJpc2N2X2ZvcmNlX2FkZHJlc3MgKFhFWFAgKGRlc3QsIDApLCBtb2RlKTsKKysgICAgfQorKworKyAgaWYgKE1FTV9QIChzcmMpICYmICFyaXNjdl9sZWdpdGltYXRlX2FkZHJlc3NfcCAobW9kZSwgWEVYUCAoc3JjLCAwKSwKKysJCQkJCQkgIHJlbG9hZF9jb21wbGV0ZWQpKQorKyAgICB7CisrICAgICAgWEVYUCAoc3JjLCAwKSA9IHJpc2N2X2ZvcmNlX2FkZHJlc3MgKFhFWFAgKHNyYywgMCksIG1vZGUpOworKyAgICB9CisrCisgICByZXR1cm4gZmFsc2U7CisgfQorIAorLS0gCisyLjE0LjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTcuMy9maXgtc2VnbWVudGF0aW9uLWZhdWx0LXByZWNvbXBpbGVkLWhkci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvZml4LXNlZ21lbnRhdGlvbi1mYXVsdC1wcmVjb21waWxlZC1oZHIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzBhZGVmNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy03LjMvZml4LXNlZ21lbnRhdGlvbi1mYXVsdC1wcmVjb21waWxlZC1oZHIucGF0Y2gKQEAgLTAsMCArMSw0OSBAQAorCitQcmV2ZW50IGEgc2VnbWVudGF0aW9uIGZhdWx0IHdoaWNoIG9jY3VycyB3aGVuIHVzaW5nIGluY29ycmVjdAorc3RydWN0dXJlIHRyeWluZyB0byBhY2Nlc3MgbmFtZSBvZiBzb21lIG5hbWVkIG9wZXJhdG9ycywgc3VjaCBhcyAKK0NQUF9OT1QsIENQUF9BTkQgZXRjLiAidG9rZW4tPnZhbC5ub2RlLnNwZWxsaW5nIiBjYW5ub3QgYmUgdXNlZCBpbgordGhvc2UgY2FzZXMsIGFzIGlzIG1heSBub3QgYmUgaW5pdGlhbGl6ZWQgYXQgYWxsLgorCisKK1tZT0NUTyAjMTE3MzhdCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgorCitkaWZmIC0tZ2l0IGEvbGliY3BwL2xleC5jIGIvbGliY3BwL2xleC5jCistLS0gYS9saWJjcHAvbGV4LmMKKysrKyBiL2xpYmNwcC9sZXguYworQEAgLTMyMjksMTEgKzMyMjksMjcgQEAKKyAgICAgc3BlbGxfaWRlbnQ6CisgICAgIGNhc2UgU1BFTExfSURFTlQ6CisgICAgICAgaWYgKGZvcnN0cmluZykKKy0JeworLQkgIG1lbWNweSAoYnVmZmVyLCBOT0RFX05BTUUgKHRva2VuLT52YWwubm9kZS5zcGVsbGluZyksCistCQkgIE5PREVfTEVOICh0b2tlbi0+dmFsLm5vZGUuc3BlbGxpbmcpKTsKKy0JICBidWZmZXIgKz0gTk9ERV9MRU4gKHRva2VuLT52YWwubm9kZS5zcGVsbGluZyk7CistCX0KKysgICAgICAgIHsKKysgICAgICAgICAgaWYgKHRva2VuLT50eXBlID09IENQUF9OQU1FKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgIG1lbWNweSAoYnVmZmVyLCBOT0RFX05BTUUgKHRva2VuLT52YWwubm9kZS5zcGVsbGluZyksCisrICAgICAgICAgICAgICAgICAgICBOT0RFX0xFTiAodG9rZW4tPnZhbC5ub2RlLnNwZWxsaW5nKSk7CisrICAgICAgICAgICAgICBidWZmZXIgKz0gTk9ERV9MRU4gKHRva2VuLT52YWwubm9kZS5zcGVsbGluZyk7CisrICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICB9CisrICAgICAgICAgIC8qIE5BTUVEX09QLCBjYW5ub3QgdXNlIG5vZGUuc3BlbGxpbmcgKi8KKysgICAgICAgICAgaWYgKHRva2VuLT5mbGFncyAmIE5BTUVEX09QKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnN0ciA9IGNwcF9uYW1lZF9vcGVyYXRvcjJuYW1lICh0b2tlbi0+dHlwZSk7CisrICAgICAgICAgICAgICBpZiAoc3RyKQorKyAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbiA9IHN0cmxlbihzdHIpOworKyAgICAgICAgICAgICAgICAgIG1lbWNweShidWZmZXIsIHN0ciwgbGVuKTsKKysgICAgICAgICAgICAgICAgICBidWZmZXIgKz0gbGVuOworKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICB9CisrICAgICAgICB9CisgICAgICAgZWxzZQorIAlidWZmZXIgPSBfY3BwX3NwZWxsX2lkZW50X3VjbnMgKGJ1ZmZlciwgdG9rZW4tPnZhbC5ub2RlLm5vZGUpOworICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNvbW1vbi5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY29tbW9uLmluYwppbmRleCA4NTdhYThmLi5hYTNiNTNlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY29tbW9uLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY29tbW9uLmluYwpAQCAtNDMsNyArNDMsNyBAQAogICAgIHJldHVybiAiIgogCiBkZWYgZ2V0X2xvbmdfZG91YmxlX3NldHRpbmcoYmIsIGQpOgotICAgIGlmIGQuZ2V0VmFyKCdUUkFOU0xBVEVEX1RBUkdFVF9BUkNIJykgaW4gWyAncG93ZXJwYycsICdwb3dlcnBjNjQnIF0gYW5kIGQuZ2V0VmFyKCdUQ0xJQkMnKSBpbiBbICd1Y2xpYmMnLCAnZ2xpYmMnIF06CisgICAgaWYgZC5nZXRWYXIoJ1RSQU5TTEFURURfVEFSR0VUX0FSQ0gnKSBpbiBbICdwb3dlcnBjJywgJ3Bvd2VycGM2NCcgXSBhbmQgZC5nZXRWYXIoJ1RDTElCQycpIGluIFsgJ2dsaWJjJyBdOgogICAgICAgICByZXR1cm4gIi0td2l0aC1sb25nLWRvdWJsZS0xMjgiCiAgICAgZWxzZToKICAgICAgICAgcmV0dXJuICItLXdpdGhvdXQtbG9uZy1kb3VibGUtMTI4IgpAQCAtMTA1LDYgKzEwNSw3IEBACiBCSU5WID0gIiR7UFZ9IgogI1MgPSAiJHtXT1JLRElSfS9nY2MtJHtQVn0iCiBTID0gIiR7VE1QRElSfS93b3JrLXNoYXJlZC9nY2MtJHtQVn0tJHtQUn0vZ2NjLSR7UFZ9IgorCiBCID0gIiR7V09SS0RJUn0vZ2NjLSR7UFZ9L2J1aWxkLiR7SE9TVF9TWVN9LiR7VEFSR0VUX1NZU30iCiAKIHRhcmdldF9pbmNsdWRlZGlyID89ICIke2luY2x1ZGVkaXJ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNvbmZpZ3VyZS1jb21tb24uaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNvbmZpZ3VyZS1jb21tb24uaW5jCmluZGV4IDAwZWY4OWUuLmUyY2UyMzQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jb25maWd1cmUtY29tbW9uLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY29uZmlndXJlLWNvbW1vbi5pbmMKQEAgLTIyLDYgKzIyLDggQEAKIEdDQ01VTFRJTElCID89ICItLWRpc2FibGUtbXVsdGlsaWIiCiBHQ0NUSFJFQURTID89ICJwb3NpeCIKIAorR0NDUElFID8/PSAiIgorCiBFWFRSQV9PRUNPTkYgPSAiXAogICAgICR7QFsnLS1lbmFibGUtY2xvY2FsZT1nZW5lcmljJywgJyddW2QuZ2V0VmFyKCdVU0VfTkxTJykgIT0gJ25vJ119IFwKICAgICAtLXdpdGgtZ251LWxkIFwKQEAgLTI5LDYgKzMxLDcgQEAKICAgICAtLWVuYWJsZS1sYW5ndWFnZXM9JHtMQU5HVUFHRVN9IFwKICAgICAtLWVuYWJsZS10aHJlYWRzPSR7R0NDVEhSRUFEU30gXAogICAgICR7R0NDTVVMVElMSUJ9IFwKKyAgICAke0dDQ1BJRX0gXAogICAgIC0tZW5hYmxlLWM5OSBcCiAgICAgLS1lbmFibGUtbG9uZy1sb25nIFwKICAgICAtLWVuYWJsZS1zeW12ZXJzPWdudSBcCkBAIC01Myw5ICs1Niw3IEBACiAjIGluIHRoZSBjb25maWcubG9nIGZpbGVzICh3aGljaCBtaWdodCBub3QgZ2V0IGdlbmVyYXRlZCB1bnRpbCBkb19jb21waWxlCiAjIGhlbmNlIGJlaW5nIG1pc3NlZCBieSB0aGUgaW5zYW5lIGRvX2NvbmZpZ3VyZSBjaGVjaykuCiAKLSMgQnVpbGQgdWNsaWJjIGNvbXBpbGVycyB3aXRob3V0IGN4YV9hdGV4aXQgc3VwcG9ydAogRVhUUkFfT0VDT05GX2FwcGVuZF9saW51eCA9ICIgLS1lbmFibGUtX19jeGFfYXRleGl0IgotRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLXVjbGliYyA9ICIgLS1lbmFibGUtX19jeGFfYXRleGl0IgogCiBFWFRSQV9PRUNPTkZfYXBwZW5kX21pcHM2NCA9ICIgLS13aXRoLWFiaT02NCAtLXdpdGgtYXJjaC02ND1taXBzNjQgLS13aXRoLXR1bmUtNjQ9bWlwczY0IgogRVhUUkFfT0VDT05GX2FwcGVuZF9taXBzNjRlbCA9ICIgLS13aXRoLWFiaT02NCAtLXdpdGgtYXJjaC02ND1taXBzNjQgLS13aXRoLXR1bmUtNjQ9bWlwczY0IgpAQCAtNjYsMTQgKzY3LDYgQEAKIEVYVFJBX09FQ09ORl9hcHBlbmRfbWlwc2lzYTY0cjZlbCA9ICIgLS13aXRoLWFiaT02NCAtLXdpdGgtYXJjaC02ND1taXBzNjRyNiIKIEVYVFJBX09FQ09ORl9hcHBlbmRfbWlwc2lzYTY0cjYgPSAiIC0td2l0aC1hYmk9NjQgLS13aXRoLWFyY2gtNjQ9bWlwczY0cjYiCiAKLSMgQVJNdjYrIGFkZHMgYXRvbWljIGluc3RydWN0aW9ucyB0aGF0IGFmZmVjdCB0aGUgQUJJIGluIGxpYnJhcmllcyBidWlsdAotIyB3aXRoIFRVTkVfQ0NBUkdTIGluIGdjYy1ydW50aW1lLiAgTWFrZSB0aGUgY29tcGlsZXIgZGVmYXVsdCB0byBhCi0jIGNvbXBhdGlibGUgYXJjaGl0ZWN0dXJlLiAgYXJtdjYgYW5kIGFybXY3YSBjb3ZlciB0aGUgbWluaW11bSB0dW5lCi0jIGZlYXR1cmVzIHVzZWQgaW4gT0UuCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2FybXY2ID0gIiAtLXdpdGgtYXJjaD1hcm12NiIKLUVYVFJBX09FQ09ORl9hcHBlbmRfYXJtdjdhID0gIiAtLXdpdGgtYXJjaD1hcm12Ny1hIgotRVhUUkFfT0VDT05GX2FwcGVuZF9hcm12N3ZlID0gIiAtLXdpdGgtYXJjaD1hcm12Ny1hIgotCiBFWFRSQV9PRUNPTkZfR0NDX0ZMT0FUID8/PSAiIgogQ1BQRkxBR1MgPSAiIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtY2FuYWRpYW4uaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWNhbmFkaWFuLmluYwppbmRleCBlYzFkMjgxLi42ZDc3NjIwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtY2FuYWRpYW4uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1jYW5hZGlhbi5pbmMKQEAgLTYwLDYgKzYwLDcgQEAKIAogZG9fY29tcGlsZSAoKSB7CiAJb2VfcnVubWFrZSBhbGwtaG9zdCBjb25maWd1cmUtdGFyZ2V0LWxpYmdjYworCShjZCAke0J9LyR7VEFSR0VUX1NZU30vbGliZ2NjOyBvZV9ydW5tYWtlIGVuYWJsZS1leGVjdXRlLXN0YWNrLmMgdW53aW5kLmggbWQtdW53aW5kLXN1cHBvcnQuaCBzZnAtbWFjaGluZS5oIGd0aHItZGVmYXVsdC5oKQogfQogCiAjIEhhdmluZyBhbnl0aGluZyBhdXRvIGRlcGVuZGluZyBvbiBnY2MtY3Jvc3Mtc2RrIGlzIGEgcmVhbGx5IGJhZCBpZGVhLi4uCkBAIC04MCw3ICs4MSw3IEBACiAgICAgJHtpbmNsdWRlZGlyfS9jKysvJHtCSU5WfSBcCiAgICAgJHtwcmVmaXh9LyR7VEFSR0VUX1NZU30vYmluLyogXAogICAgICR7cHJlZml4fS8ke1RBUkdFVF9TWVN9L2xpYi8qIFwKLSAgICAke3ByZWZpeH0vJHtUQVJHRVRfU1lTfS91c3IvaW5jbHVkZS8qIFwKKyAgICAke3ByZWZpeH0vJHtUQVJHRVRfU1lTfSR7dGFyZ2V0X2luY2x1ZGVkaXJ9LyogXAogIgogSU5TQU5FX1NLSVBfJHtQTn0gKz0gImRldi1zbyIKIApAQCAtOTYsNyArOTcsNyBAQAogQklOUkVMUEFUSCA9ICIke0Bvcy5wYXRoLnJlbHBhdGgoZC5leHBhbmQoIiR7YmluZGlyfSIpLCBkLmV4cGFuZCgiJHtsaWJleGVjZGlyfS9nY2MvJHtUQVJHRVRfU1lTfS8ke0JJTlZ9IikpfSIKIAogZG9faW5zdGFsbCAoKSB7Ci0JKCBjZCAke0J9LyR7VEFSR0VUX1NZU30vbGliZ2NjOyBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwtdW53aW5kX2ggKQorCSggY2QgJHtCfS8ke1RBUkdFVF9TWVN9L2xpYmdjYzsgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsLXVud2luZF9oLWZvcmJ1aWxkIGluc3RhbGwtdW53aW5kX2ggKQogCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbC1ob3N0CiAKIAkjIENsZWFudXAgc29tZSBvZiB0aGUgJHtsaWJkaXJ9eyxleGVjfS9nY2Mgc3R1ZmYgLi4uCkBAIC0xNTMsNyArMTU0LDcgQEAKIERFUEVORFMgKz0gIm5hdGl2ZXNkay1nbXAgbmF0aXZlc2RrLW1wZnIgbmF0aXZlc2RrLWxpYm1wYyAke0VMRlVUSUxTfSBuYXRpdmVzZGstemxpYiIKIFJERVBFTkRTXyR7UE59ICs9ICJuYXRpdmVzZGstbXBmciBuYXRpdmVzZGstbGlibXBjICR7RUxGVVRJTFN9IgogCi1TWVNURU1IRUFERVJTID0gIi91c3IvaW5jbHVkZSIKK1NZU1RFTUhFQURFUlMgPSAiJHt0YXJnZXRfaW5jbHVkZWRpcn0vIgogU1lTVEVNTElCUyA9ICIke3RhcmdldF9iYXNlX2xpYmRpcn0vIgogU1lTVEVNTElCUzEgPSAiJHt0YXJnZXRfbGliZGlyfS8iCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1jYW5hZGlhbl81LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtY2FuYWRpYW5fNy4zLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtY2FuYWRpYW5fNS40LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtY2FuYWRpYW5fNy4zLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtaW5pdGlhbC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtaW5pdGlhbC5pbmMKaW5kZXggOTUwMmMyYi4uODkyYjFkYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWluaXRpYWwuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1pbml0aWFsLmluYwpAQCAtMzUsMTAgKzM1LDExIEBACiAKIGRvX2NvbXBpbGUgKCkgewogICAgIG9lX3J1bm1ha2UgYWxsLWdjYyBjb25maWd1cmUtdGFyZ2V0LWxpYmdjYworICAgIChjZCAke0J9LyR7VEFSR0VUX1NZU30vbGliZ2NjOyBvZV9ydW5tYWtlIGVuYWJsZS1leGVjdXRlLXN0YWNrLmMgdW53aW5kLmggbWQtdW53aW5kLXN1cHBvcnQuaCBzZnAtbWFjaGluZS5oIGd0aHItZGVmYXVsdC5oKQogfQogCiBkb19pbnN0YWxsICgpIHsKLQkoIGNkICR7Qn0vJHtUQVJHRVRfU1lTfS9saWJnY2M7IG9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbC11bndpbmRfaCApCisJKCBjZCAke0J9LyR7VEFSR0VUX1NZU30vbGliZ2NjOyBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwtdW53aW5kX2gtZm9yYnVpbGQgaW5zdGFsbC11bndpbmRfaCkKIAlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwtZ2NjCiAKIAkjIFdlIGRvbid0IHJlYWxseSBuZWVkIHRoaXMgKGhlcmUgc2hhcmVzLyBjb250YWlucyBtYW4vLCBpbmZvLywgbG9jYWxlLykuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtaW5pdGlhbF81LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtaW5pdGlhbF83LjMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1pbml0aWFsXzUuNC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWluaXRpYWxfNy4zLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLmluYwppbmRleCA0NTk4NWMzLi4xZTE4NGE2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy5pbmMKQEAgLTU3LDYgKzU3LDcgQEAKIAlleHBvcnQgTERGTEFHU19GT1JfVEFSR0VUPSIke1RBUkdFVF9MREZMQUdTfSIKIAogCW9lX3J1bm1ha2UgYWxsLWhvc3QgY29uZmlndXJlLXRhcmdldC1saWJnY2MKKwkoY2QgJHtCfS8ke1RBUkdFVF9TWVN9L2xpYmdjYzsgb2VfcnVubWFrZSBlbmFibGUtZXhlY3V0ZS1zdGFjay5jIHVud2luZC5oIG1kLXVud2luZC1zdXBwb3J0Lmggc2ZwLW1hY2hpbmUuaCBndGhyLWRlZmF1bHQuaCkKIAkjIG5vdyBnZW5lcmF0ZSBzY3JpcHQgdG8gZHJpdmUgdGVzdGluZwogCWVjaG8gIiMhL3Vzci9iaW4vZW52IHNoIiA+JHtCfS8ke1RBUkdFVF9QUkVGSVh9dGVzdGdjYwogCXNldCA+PiAke0J9LyR7VEFSR0VUX1BSRUZJWH10ZXN0Z2NjCkBAIC0xNTUsMjIgKzE1NiwyNCBAQAogQklOUkVMUEFUSCA9ICIke0Bvcy5wYXRoLnJlbHBhdGgoZC5leHBhbmQoIiR7U1RBR0lOR19ESVJfTkFUSVZFfSR7cHJlZml4X25hdGl2ZX0vYmluLyR7VEFSR0VUX1NZU30iKSwgZC5leHBhbmQoIiR7bGliZXhlY2Rpcn0vZ2NjLyR7VEFSR0VUX1NZU30vJHtCSU5WfSIpKX0iCiAKIGRvX2luc3RhbGwgKCkgewotCSggY2QgJHtCfS8ke1RBUkdFVF9TWVN9L2xpYmdjYzsgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsLXVud2luZF9oICkKKwkoIGNkICR7Qn0vJHtUQVJHRVRfU1lTfS9saWJnY2M7IG9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbC11bndpbmRfaC1mb3JidWlsZCBpbnN0YWxsLXVud2luZF9oICkKIAlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwtaG9zdAogCiAJaW5zdGFsbCAtZCAke0R9JHt0YXJnZXRfYmFzZV9saWJkaXJ9CiAJaW5zdGFsbCAtZCAke0R9JHt0YXJnZXRfbGliZGlyfQotICAgIAorCiAJIyBMaW5rIGdmb3J0cmFuIHRvIGc3NyB0byBzYXRpc2Z5IG5vdC1zby1zbWFydCBjb25maWd1cmUgb3IgaGFyZCBjb2RlZCBnNzcKIAkjIGdmb3J0cmFuIGlzIGZ1bGx5IGJhY2t3YXJkcyBjb21wYXRpYmxlLiBUaGlzIGlzIGEgc2FmZSBhbmQgcHJhY3RpY2FsIHNvbHV0aW9uLiAKLQlsbiAtc2YgJHtTVEFHSU5HX0RJUl9OQVRJVkV9JHtwcmVmaXhfbmF0aXZlfS9iaW4vJHtUQVJHRVRfUFJFRklYfWdmb3J0cmFuICR7U1RBR0lOR19ESVJfTkFUSVZFfSR7cHJlZml4X25hdGl2ZX0vYmluLyR7VEFSR0VUX1BSRUZJWH1nNzcgfHwgdHJ1ZQorCWlmIFsgLW4gIiR7QGQuZ2V0VmFyKCdGT1JUUkFOJyl9IiBdOyB0aGVuCisJCWxuIC1zZiAke1NUQUdJTkdfRElSX05BVElWRX0ke3ByZWZpeF9uYXRpdmV9L2Jpbi8ke1RBUkdFVF9QUkVGSVh9Z2ZvcnRyYW4gJHtTVEFHSU5HX0RJUl9OQVRJVkV9JHtwcmVmaXhfbmF0aXZlfS9iaW4vJHtUQVJHRVRfUFJFRklYfWc3NyB8fCB0cnVlCisJCWZvcnRzeW1saW5rcz0iZzc3IGdmb3J0cmFuIgorCWZpCiAKLQkKIAkjIEluc2VydCBzeW1saW5rcyBpbnRvIGxpYmV4ZWMgc28gd2hlbiB0b29scyB3aXRob3V0IGEgcHJlZml4IGFyZSBzZWFyY2hlZCBmb3IsIHRoZSBjb3JyZWN0IG9uZXMgYXJlCiAJIyBmb3VuZC4gVGhlc2UgbmVlZCB0byBiZSByZWxhdGl2ZSBwYXRocyBzbyB0aGV5IHdvcmsgaW4gZGlmZmVyZW50IGxvY2F0aW9ucy4KIAlkZXN0PSR7RH0ke2xpYmV4ZWNkaXJ9L2djYy8ke1RBUkdFVF9TWVN9LyR7QklOVn0vCiAJaW5zdGFsbCAtZCAkZGVzdAotCWZvciB0IGluIGFyIGFzIGxkIG5tIG9iamNvcHkgb2JqZHVtcCByYW5saWIgc3RyaXAgZzc3IGdjYyBjcHAgZ2ZvcnRyYW47IGRvCisJZm9yIHQgaW4gYXIgYXMgbGQgbGQuYmZkIGxkLmdvbGQgbm0gb2JqY29weSBvYmpkdW1wIHJhbmxpYiBzdHJpcCBnY2MgY3BwICRmb3J0c3ltbGlua3M7IGRvCiAJCWxuIC1zZiAke0JJTlJFTFBBVEh9LyR7VEFSR0VUX1BSRUZJWH0kdCAkZGVzdCR0CiAJCWxuIC1zZiAke0JJTlJFTFBBVEh9LyR7VEFSR0VUX1BSRUZJWH0kdCAke2Rlc3R9JHtUQVJHRVRfUFJFRklYfSR0CiAJZG9uZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzXzUuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc183LjMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc181LjQuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc183LjMuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc3Nkay1pbml0aWFsXzUuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc3Nkay1pbml0aWFsXzcuMy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3Nzc2RrLWluaXRpYWxfNS40LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NzZGstaW5pdGlhbF83LjMuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc3Nka181LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NzZGtfNy4zLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NzZGtfNS40LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NzZGtfNy4zLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtcnVudGltZS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtcnVudGltZS5pbmMKaW5kZXggMGRjNDA1Yy4uZWUwODUyOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXJ1bnRpbWUuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1ydW50aW1lLmluYwpAQCAtMzQsNyArMzQsNiBAQAogCiBkb19jb25maWd1cmUgKCkgewogCWV4cG9ydCBDWFg9IiR7Q1hYfSAtbm9zdGRpbmMrKyAtbm9zdGRsaWIrKyIKLQogCWZvciBkIGluIGxpYmdjYyAke1JVTlRJTUVUQVJHRVR9OyBkbwogCQllY2hvICJDb25maWd1cmluZyAkZCIKIAkJcm0gLXJmICR7Qn0vJHtUQVJHRVRfU1lTfS8kZC8KQEAgLTQzLDYgKzQyLDkgQEAKIAkJY2htb2QgYSt4ICR7U30vJGQvY29uZmlndXJlCiAJCXJlbHBhdGg9JHtAb3MucGF0aC5yZWxwYXRoKCIke1N9LyRkIiwgIiR7Qn0vJHtUQVJHRVRfU1lTfS8kZCIpfQogCQkkcmVscGF0aC9jb25maWd1cmUgJHtDT05GSUdVUkVPUFRTfSAke0VYVFJBX09FQ09ORn0KKwkJaWYgWyAiJGQiID0gImxpYmdjYyIgXTsgdGhlbgorCQkJKGNkICR7Qn0vJHtUQVJHRVRfU1lTfS9saWJnY2M7IG9lX3J1bm1ha2UgZW5hYmxlLWV4ZWN1dGUtc3RhY2suYyB1bndpbmQuaCBtZC11bndpbmQtc3VwcG9ydC5oIHNmcC1tYWNoaW5lLmggZ3Roci1kZWZhdWx0LmgpCisJCWZpCiAJZG9uZQogfQogRVhUUkFDT05GRlVOQ1MgKz0gImV4dHJhY3Rfc3Rhc2hlZF9idWlsZGRpciIKQEAgLTk5LDggKzEwMSw4IEBACiAKIAlpZiBbICIke1RDTElCQ30iICE9ICJnbGliYyIgXTsgdGhlbgogCQljYXNlICIke1RBUkdFVF9PU30iIGluCi0JCQkibGludXgtbXVzbCIgfCAibGludXgtdWNsaWJjIiB8ICJsaW51eC0qc3BlIikgZXh0cmFfdGFyZ2V0X29zPSJsaW51eCI7OwotCQkJImxpbnV4LW11c2xlYWJpIiB8ICJsaW51eC11Y2xpYmNlYWJpIikgZXh0cmFfdGFyZ2V0X29zPSJsaW51eC1nbnVlYWJpIjs7CisJCQkibGludXgtbXVzbCIgfCAibGludXgtKnNwZSIpIGV4dHJhX3RhcmdldF9vcz0ibGludXgiOzsKKwkJCSJsaW51eC1tdXNsZWFiaSIpIGV4dHJhX3RhcmdldF9vcz0ibGludXgtZ251ZWFiaSI7OwogCQkJKikgZXh0cmFfdGFyZ2V0X29zPSJsaW51eCI7OwogCQllc2FjCiAJCWxuIC1zICR7VEFSR0VUX1NZU30gJHtEfSR7aW5jbHVkZWRpcn0vYysrLyR7QklOVn0vJHtUQVJHRVRfQVJDSH0ke1RBUkdFVF9WRU5ET1J9LSRleHRyYV90YXJnZXRfb3MKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1ydW50aW1lXzUuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1ydW50aW1lXzcuMy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXJ1bnRpbWVfNS40LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtcnVudGltZV83LjMuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zYW5pdGl6ZXJzLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zYW5pdGl6ZXJzLmluYwppbmRleCBmOTc4ODViLi4zMTgzYjI5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc2FuaXRpemVycy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNhbml0aXplcnMuaW5jCkBAIC05Nyw2ICs5Nyw3IEBACiBGSUxFU19saWJ0c2FuLWRldiArPSAiXAogICAgICR7bGliZGlyfS9saWJ0c2FuLnNvIFwKICAgICAke2xpYmRpcn0vbGlidHNhbi5sYSBcCisgICAgJHtsaWJkaXJ9L2xpYnRzYW5fKi5vIFwKICIKIEZJTEVTX2xpYnRzYW4tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vbGlidHNhbi5hIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc2FuaXRpemVyc181LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc2FuaXRpemVyc183LjMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zYW5pdGl6ZXJzXzUuNC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNhbml0aXplcnNfNy4zLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc291cmNlXzUuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zb3VyY2VfNy4zLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc291cmNlXzUuNC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNvdXJjZV83LjMuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy10YXJnZXQuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXRhcmdldC5pbmMKaW5kZXggZWVmNDQzNC4uYjZlMzFmNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXRhcmdldC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXRhcmdldC5pbmMKQEAgLTksNiArOSwxNCBAQAogCiBFWFRSQV9PRUNPTkZfYXBwZW5kX2xpbnV4c3RkYmFzZSA9ICIgLS1lbmFibGUtY2xvY2FsZT1nbnUiCiAKKyMgQVJNdjYrIGFkZHMgYXRvbWljIGluc3RydWN0aW9ucyB0aGF0IGFmZmVjdCB0aGUgQUJJIGluIGxpYnJhcmllcyBidWlsdAorIyB3aXRoIFRVTkVfQ0NBUkdTIGluIGdjYy1ydW50aW1lLiAgTWFrZSB0aGUgY29tcGlsZXIgZGVmYXVsdCB0byBhCisjIGNvbXBhdGlibGUgYXJjaGl0ZWN0dXJlLiAgYXJtdjYgYW5kIGFybXY3YSBjb3ZlciB0aGUgbWluaW11bSB0dW5lCisjIGZlYXR1cmVzIHVzZWQgaW4gT0UuCitFWFRSQV9PRUNPTkZfYXBwZW5kX2FybXY2ID0gIiAtLXdpdGgtYXJjaD1hcm12NiIKK0VYVFJBX09FQ09ORl9hcHBlbmRfYXJtdjdhID0gIiAtLXdpdGgtYXJjaD1hcm12Ny1hIgorRVhUUkFfT0VDT05GX2FwcGVuZF9hcm12N3ZlID0gIiAtLXdpdGgtYXJjaD1hcm12Ny1hIgorCiAjIGxpYmNjMSByZXF1cmVzIGdjY19jdl9vYmpkdW1wIHdoZW4gY3Jvc3MgYnVpbGQsIGJ1dCBnY2NfY3Zfb2JqZHVtcCBpcwogIyBzZXQgaW4gc3ViZGlyIGdjYywgc28gc3ViZGlyIGxpYmNjMSBjYW4ndCB1c2UgaXQsIGV4cG9ydCBpdCBoZXJlIHRvCiAjIGZpeCB0aGUgcHJvYmxlbS4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djY181LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2NfNS40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYzYxOGRmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djY181LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLXJlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLSR7UFZ9LmluYwotcmVxdWlyZSBnY2MtdGFyZ2V0LmluYwotCi0jIEJ1aWxkaW5nIHdpdGggdGh1bWIgZW5hYmxlZCBvbiBhcm12NHQgZmFpbHMgd2l0aAotIyB8IGdjYy00LjguMS1yMC9nY2MtNC44LjEvZ2NjL2NwL2RlY2wuYzo3NDM4OigudGV4dC51bmxpa2VseSsweDJmYSk6IHJlbG9jYXRpb24gdHJ1bmNhdGVkIHRvIGZpdDogUl9BUk1fVEhNX0NBTEwgYWdhaW5zdCBzeW1ib2wgYGZhbmN5X2Fib3J0KGNoYXIgY29uc3QqLCBpbnQsIGNoYXIgY29uc3QqKScgZGVmaW5lZCBpbiAuZ2x1ZV83IHNlY3Rpb24gaW4gbGlua2VyIHN0dWJzCi0jIHwgZ2NjLTQuOC4xLXIwL2djYy00LjguMS9nY2MvY3AvZGVjbC5jOjc0NDI6KC50ZXh0LnVubGlrZWx5KzB4MzE4KTogYWRkaXRpb25hbCByZWxvY2F0aW9uIG92ZXJmbG93cyBvbWl0dGVkIGZyb20gdGhlIG91dHB1dAotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjXzcuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djY183LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWIyMDhlNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djY183LjMuYmIKQEAgLTAsMCArMSwxMCBAQAorcmVxdWlyZSByZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtJHtQVn0uaW5jCityZXF1aXJlIGdjYy10YXJnZXQuaW5jCisKKyMgQnVpbGRpbmcgd2l0aCB0aHVtYiBlbmFibGVkIG9uIGFybXY0dCBhcm12NXQgZmFpbHMgd2l0aAorIyB8IGdjYy00LjguMS1yMC9nY2MtNC44LjEvZ2NjL2NwL2RlY2wuYzo3NDM4OigudGV4dC51bmxpa2VseSsweDJmYSk6IHJlbG9jYXRpb24gdHJ1bmNhdGVkIHRvIGZpdDogUl9BUk1fVEhNX0NBTEwgYWdhaW5zdCBzeW1ib2wgYGZhbmN5X2Fib3J0KGNoYXIgY29uc3QqLCBpbnQsIGNoYXIgY29uc3QqKScgZGVmaW5lZCBpbiAuZ2x1ZV83IHNlY3Rpb24gaW4gbGlua2VyIHN0dWJzCisjIHwgZ2NjLTQuOC4xLXIwL2djYy00LjguMS9nY2MvY3AvZGVjbC5jOjc0NDI6KC50ZXh0LnVubGlrZWx5KzB4MzE4KTogYWRkaXRpb25hbCByZWxvY2F0aW9uIG92ZXJmbG93cyBvbWl0dGVkIGZyb20gdGhlIG91dHB1dAorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2MtaW5pdGlhbF81LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2MtaW5pdGlhbF83LjMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjYy1pbml0aWFsXzUuNC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjLWluaXRpYWxfNy4zLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2MuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjLmluYwppbmRleCAzOGQxNjQzLi4xNTAwZmI1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2MuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjYy5pbmMKQEAgLTUsOCArNSw4IEBACiBkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQgKCkgewogCWlmIFsgIiR7VENMSUJDfSIgIT0gImdsaWJjIiBdOyB0aGVuCiAJCWNhc2UgIiR7VEFSR0VUX09TfSIgaW4KLQkJCSJsaW51eC1tdXNsIiB8ICJsaW51eC11Y2xpYmMiIHwgImxpbnV4LSpzcGUiKSBleHRyYV90YXJnZXRfb3M9ImxpbnV4Ijs7Ci0JCQkibGludXgtbXVzbGVhYmkiIHwgImxpbnV4LXVjbGliY2VhYmkiKSBleHRyYV90YXJnZXRfb3M9ImxpbnV4LWdudWVhYmkiOzsKKwkJCSJsaW51eC1tdXNsIiB8ICJsaW51eC0qc3BlIikgZXh0cmFfdGFyZ2V0X29zPSJsaW51eCI7OworCQkJImxpbnV4LW11c2xlYWJpIikgZXh0cmFfdGFyZ2V0X29zPSJsaW51eC1nbnVlYWJpIjs7CiAJCQkqKSBleHRyYV90YXJnZXRfb3M9ImxpbnV4Ijs7CiAJCWVzYWMKIAkJbG4gLXMgJHtUQVJHRVRfU1lTfSAke0R9JHtsaWJkaXJ9LyR7VEFSR0VUX0FSQ0h9JHtUQVJHRVRfVkVORE9SfS0kZXh0cmFfdGFyZ2V0X29zCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2NfNS40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjXzcuMy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjXzUuNC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjXzcuMy5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2ZvcnRyYW4uaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2ZvcnRyYW4uaW5jCmluZGV4IDQ4NDZkZWMuLjVmNWQ0YWYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdmb3J0cmFuLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnZm9ydHJhbi5pbmMKQEAgLTM3LDcgKzM3LDcgQEAKIH0KIAogSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiMSIKLURFUEVORFMgPSAiZ2NjLXJ1bnRpbWUiCitERVBFTkRTID0gImdjYy1ydW50aW1lIGdjYy1jcm9zcy0ke1RBUkdFVF9BUkNIfSIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCiAKQEAgLTU0LDYgKzU0LDcgQEAKICAgICAke2xpYmRpcn0vbGliZ2ZvcnRyYW4ubGEgXAogICAgICR7bGliZGlyfS9nY2MvJHtUQVJHRVRfU1lTfS8ke0JJTlZ9L2xpYmdmb3J0cmFuYmVnaW4uKiBcCiAgICAgJHtsaWJkaXJ9L2djYy8ke1RBUkdFVF9TWVN9LyR7QklOVn0vbGliY2FmX3NpbmdsZSogXAorICAgICR7bGliZGlyfS9nY2MvJHtUQVJHRVRfU1lTfS8ke0JJTlZ9L2ZpbmNsdWRlLyBcCiAiCiBGSUxFU18ke1BOfS1zdGF0aWNkZXYgPSAiJHtsaWJkaXJ9L2xpYmdmb3J0cmFuLmEiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdmb3J0cmFuXzUuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdmb3J0cmFuXzcuMy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2ZvcnRyYW5fNS40LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnZm9ydHJhbl83LjMuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi03LjEyLjEuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLTcuMTIuMS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzNDc1NmMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLTcuMTIuMS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1MSUNFTlNFID0gIkdQTHYyICYgR1BMdjMgJiBMR1BMdjIgJiBMR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiBcCi0JCSAgICBmaWxlOi8vQ09QWUlORzM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLQkJICAgIGZpbGU6Ly9DT1BZSU5HMy5MSUI7bWQ1PTZhNmE4ZTAyMDgzOGIyMzQwNmM4MWIxOWMxZDQ2ZGY2IFwKLQkJICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9OWY2MDRkOGE0ZjhlNzRmNGY1MTQwODQ1YTIxYjY2NzQiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Z0cC5nbnUub3JnL2dudS9nZGIvZ2RiLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLW1vZGVfdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLW1ha2UtbWFuLWluc3RhbGwtcmVsYXRpdmUtdG8tREVTVERJUi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLW1pcHMtbGludXgtbmF0LURlZmluZS1fQUJJTzMyLWlmLW5vdC1kZWZpbmVkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtcHBjLXB0cmFjZS1EZWZpbmUtcHRfcmVncy11YXBpX3B0X3JlZ3Mtb24tR0xJQkMtc3lzdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA1LUFkZC1zdXBwb3J0LWZvci1SZW5lc2FzLVNILXNoNC1hcmNoaXRlY3R1cmUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNi1Eb250LWRpc2FibGUtbGlicmVhZGxpbmUuYS13aGVuLXVzaW5nLWRpc2FibGUtc3RhdGljLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDctdXNlLWFzbS1zZ2lkZWZzLmgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwOC1Vc2UtZXhvcnRlZC1kZWZpbml0aW9ucy1vZi1TSUdSVE1JTi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA5LUNoYW5nZS1vcmRlci1vZi1DRkxBR1MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMC1yZXNvbHZlLXJlc3RyaWN0LWtleXdvcmQtY29uZmxpY3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcGFja2FnZV9kZXZlbF9nZGJfcGF0Y2hlc18xMjAtc2lncHJvY21hc2staW52YWxpZC1jYWxsLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICIxOTM0NTMzNDdkZGNlZDdhY2I2YjFjZDJlZThmMmU0YiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0NjA3NjgwYjk3M2QzZWM5MmMzMGFkMDI5ZjFiN2RiZGUzODc2ODY5ZTZiM2ExMTdkOGE3ZTkwMDgxMTEzMTg2IgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItOC4wLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi04LjAuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiYTMyY2UKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItOC4wLmluYwpAQCAtMCwwICsxLDIyIEBACitMSUNFTlNFID0gIkdQTHYyICYgR1BMdjMgJiBMR1BMdjIgJiBMR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiBcCisJCSAgICBmaWxlOi8vQ09QWUlORzM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKwkJICAgIGZpbGU6Ly9DT1BZSU5HMy5MSUI7bWQ1PTZhNmE4ZTAyMDgzOGIyMzQwNmM4MWIxOWMxZDQ2ZGY2IFwKKwkJICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9OWY2MDRkOGE0ZjhlNzRmNGY1MTQwODQ1YTIxYjY2NzQiCisKK1NSQ19VUkkgPSAiaHR0cDovL2Z0cC5nbnUub3JnL2dudS9nZGIvZ2RiLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLW1vZGVfdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLW1ha2UtbWFuLWluc3RhbGwtcmVsYXRpdmUtdG8tREVTVERJUi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLW1pcHMtbGludXgtbmF0LURlZmluZS1fQUJJTzMyLWlmLW5vdC1kZWZpbmVkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtcHBjLXB0cmFjZS1EZWZpbmUtcHRfcmVncy11YXBpX3B0X3JlZ3Mtb24tR0xJQkMtc3lzdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LUFkZC1zdXBwb3J0LWZvci1SZW5lc2FzLVNILXNoNC1hcmNoaXRlY3R1cmUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNi1Eb250LWRpc2FibGUtbGlicmVhZGxpbmUuYS13aGVuLXVzaW5nLWRpc2FibGUtc3RhdGljLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDctdXNlLWFzbS1zZ2lkZWZzLmgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOC1Vc2UtZXhvcnRlZC1kZWZpbml0aW9ucy1vZi1TSUdSVE1JTi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA5LUNoYW5nZS1vcmRlci1vZi1DRkxBR1MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMC1yZXNvbHZlLXJlc3RyaWN0LWtleXdvcmQtY29uZmxpY3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcGFja2FnZV9kZXZlbF9nZGJfcGF0Y2hlc18xMjAtc2lncHJvY21hc2staW52YWxpZC1jYWxsLnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICJjM2QzNWNkOTQ5MDg0YmU1M2I5MmNjMWUwMzQ4NWY4OCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmNmEyNGZmZTQ5MTdlNjcwMTRlZjkyNzNlYjhiNTQ3Y2I5NmExM2U1Y2E3NDg5NWIwNmQ2ODNiMzkxZjNmNGVlIgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY29tbW9uLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jb21tb24uaW5jCmluZGV4IDIzOWIzNzUuLjkxNjRhMmIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jb21tb24uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jb21tb24uaW5jCkBAIC01LDcgKzUsNiBAQAogCiBMVFROR1VTVCA9ICJsdHRuZy11c3QiCiBMVFROR1VTVF9hYXJjaDY0ID0gIiIKLUxUVE5HVVNUX2xpYmMtdWNsaWJjID0gIiIKIExUVE5HVVNUX21pcHNhcmNoID0gIiIKIExUVE5HVVNUX3NoNCA9ICIiCiBMVFROR1VTVF9saWJjLW11c2wgPSAiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLWNyb3NzLWNhbmFkaWFuXzcuMTIuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jcm9zcy1jYW5hZGlhbl84LjAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jcm9zcy1jYW5hZGlhbl83LjEyLjEuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jcm9zcy1jYW5hZGlhbl84LjAuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jcm9zc183LjEyLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY3Jvc3NfOC4wLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY3Jvc3NfNy4xMi4xLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY3Jvc3NfOC4wLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMS1pbmNsdWRlLXN5cy10eXBlcy5oLWZvci1tb2RlX3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMS1pbmNsdWRlLXN5cy10eXBlcy5oLWZvci1tb2RlX3QucGF0Y2gKaW5kZXggZmM2YzkyZi4uNGYwNmQ0NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDEtaW5jbHVkZS1zeXMtdHlwZXMuaC1mb3ItbW9kZV90LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAxLWluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLW1vZGVfdC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gMmM4MWUxNzIxNmI0ZTQ3MWExY2UwYmRkYjUwZjM3NGIwNzIyYTJjZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gOTFkYTA0NThiMzMzMjQ5ZWI5YzJmNGMxZjFlNTNmYTRiYzA4NWNjOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBUdWUsIDE5IEphbiAyMDE2IDE4OjE4OjUyIC0wODAwCiBTdWJqZWN0OiBbUEFUQ0ggMDEvMTBdIGluY2x1ZGUgc3lzL3R5cGVzLmggZm9yIG1vZGVfdApAQCAtMTQsNyArMTQsNyBAQAogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQogCiBkaWZmIC0tZ2l0IGEvZ2RiL2dkYnNlcnZlci90YXJnZXQuaCBiL2dkYi9nZGJzZXJ2ZXIvdGFyZ2V0LmgKLWluZGV4IDRjMTRjMjA0YmIuLmJkYWIxOGY3ZjcgMTAwNjQ0CitpbmRleCAzY2MyYmM0YmFiLi5lNmIxOWIwNmI5IDEwMDY0NAogLS0tIGEvZ2RiL2dkYnNlcnZlci90YXJnZXQuaAogKysrIGIvZ2RiL2dkYnNlcnZlci90YXJnZXQuaAogQEAgLTI4LDYgKzI4LDcgQEAKQEAgLTI2LDUgKzI2LDUgQEAKICBzdHJ1Y3QgZW1pdF9vcHM7CiAgc3RydWN0IGJ1ZmZlcjsKIC0tIAotMi4xMS4wCisyLjEzLjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDItbWFrZS1tYW4taW5zdGFsbC1yZWxhdGl2ZS10by1ERVNURElSLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDItbWFrZS1tYW4taW5zdGFsbC1yZWxhdGl2ZS10by1ERVNURElSLnBhdGNoCmluZGV4IDlhOTIwMWIuLjgzYzRkZGUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAyLW1ha2UtbWFuLWluc3RhbGwtcmVsYXRpdmUtdG8tREVTVERJUi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMi1tYWtlLW1hbi1pbnN0YWxsLXJlbGF0aXZlLXRvLURFU1RESVIucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGYzMTZkNjA0YjMxMmJlYWQ3ODU5NGYwMmUxMzU1NjMzZWRhOTUwN2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDljZTYxZjk3Yjc3NTg3OTRmMDY4OTRlOTM0ZmJiMjU2ZmY2MjE2M2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAyOjI3OjU1ICswMDAwCiBTdWJqZWN0OiBbUEFUQ0ggMDIvMTBdIG1ha2UgbWFuIGluc3RhbGwgcmVsYXRpdmUgdG8gREVTVERJUgpAQCAtMTEsNyArMTEsNyBAQAogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvc2ltL2NvbW1vbi9NYWtlZmlsZS5pbiBiL3NpbS9jb21tb24vTWFrZWZpbGUuaW4KLWluZGV4IGEwNWY1MDc2N2EuLjhkMGZhNjRlYTggMTAwNjQ0CitpbmRleCAzOTQ0OTU2YjVkLi5hYTM1NWU4MzQ3IDEwMDY0NAogLS0tIGEvc2ltL2NvbW1vbi9NYWtlZmlsZS5pbgogKysrIGIvc2ltL2NvbW1vbi9NYWtlZmlsZS5pbgogQEAgLTM1LDcgKzM1LDcgQEAgdG9vbGRpciA9ICQobGliZGlyKS8kKHRhcmdldF9hbGlhcykKQEAgLTI0LDUgKzI0LDUgQEAKICBpbmNsdWRlZGlyID0gQGluY2x1ZGVkaXJACiAgCiAtLSAKLTIuMTEuMAorMi4xMy4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAzLW1pcHMtbGludXgtbmF0LURlZmluZS1fQUJJTzMyLWlmLW5vdC1kZWZpbmVkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDMtbWlwcy1saW51eC1uYXQtRGVmaW5lLV9BQklPMzItaWYtbm90LWRlZmluZWQucGF0Y2gKaW5kZXggNzRjMDAwNi4uNmY3OTU1YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDMtbWlwcy1saW51eC1uYXQtRGVmaW5lLV9BQklPMzItaWYtbm90LWRlZmluZWQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDMtbWlwcy1saW51eC1uYXQtRGVmaW5lLV9BQklPMzItaWYtbm90LWRlZmluZWQucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGYyOTEyYjFkMmU1Yzg1NGExMTIxNzY2ODI5MDNiNjk2ZGEzM2UwMDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGNhMGVmMDZiNzMyMDkxMmRmMzUwZTczMGU2M2Y5YmFmZGFhNmVhNzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogV2VkLCAyMyBNYXIgMjAxNiAwNjozMDowOSArMDAwMAogU3ViamVjdDogW1BBVENIIDAzLzEwXSBtaXBzLWxpbnV4LW5hdDogRGVmaW5lIF9BQklPMzIgaWYgbm90IGRlZmluZWQKQEAgLTE3LDEwICsxNywxMCBAQAogIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL2dkYi9taXBzLWxpbnV4LW5hdC5jIGIvZ2RiL21pcHMtbGludXgtbmF0LmMKLWluZGV4IDBmMjBmMTY4MTQuLjcyMjUzMmJiNmMgMTAwNjQ0CitpbmRleCA4MDQxZDg0YmU3Li5mMmRmMWI5OTA3IDEwMDY0NAogLS0tIGEvZ2RiL21pcHMtbGludXgtbmF0LmMKICsrKyBiL2dkYi9taXBzLWxpbnV4LW5hdC5jCi1AQCAtNDYsNiArNDYsMTEgQEAKK0BAIC00Nyw2ICs0NywxMSBAQAogICNkZWZpbmUgUFRSQUNFX0dFVF9USFJFQURfQVJFQSAyNQogICNlbmRpZgogIApAQCAtMzMsNSArMzMsNSBAQAogICAgIHdlJ2xsIGNsZWFyIHRoaXMgYW5kIHVzZSBQVFJBQ0VfUEVFS1VTRVIgaW5zdGVhZC4gICovCiAgc3RhdGljIGludCBoYXZlX3B0cmFjZV9yZWdzZXRzID0gMTsKIC0tIAotMi4xMS4wCisyLjEzLjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDQtcHBjLXB0cmFjZS1EZWZpbmUtcHRfcmVncy11YXBpX3B0X3JlZ3Mtb24tR0xJQkMtc3lzdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA0LXBwYy1wdHJhY2UtRGVmaW5lLXB0X3JlZ3MtdWFwaV9wdF9yZWdzLW9uLUdMSUJDLXN5c3QucGF0Y2gKaW5kZXggODQ3ZjI0Zi4uMzU3ZGIyNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDQtcHBjLXB0cmFjZS1EZWZpbmUtcHRfcmVncy11YXBpX3B0X3JlZ3Mtb24tR0xJQkMtc3lzdC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNC1wcGMtcHRyYWNlLURlZmluZS1wdF9yZWdzLXVhcGlfcHRfcmVncy1vbi1HTElCQy1zeXN0LnBhdGNoCkBAIC0xLDYgKzEsNiBAQAotRnJvbSA3ZWY3YjcwOTg4NTM3ODI3OWM0MjRlYWIwNTEwYjkzMjMzNDAwYjI0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAwZjZkNzExMThjYTkxNDAwMmZjYWQ3OGQyYzhhNTE4MjIzZDA2YmZiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgNiBBdWcgMjAxNiAxNzozMjo1MCAtMDcwMAorRGF0ZTogU2F0LCAzMCBBcHIgMjAxNiAxODozMjoxNCAtMDcwMAogU3ViamVjdDogW1BBVENIIDA0LzEwXSBwcGMvcHRyYWNlOiBEZWZpbmUgcHRfcmVncyB1YXBpX3B0X3JlZ3Mgb24gIUdMSUJDCiAgc3lzdGVtcwogCkBAIC0xMyw3ICsxMyw3IEBACiAgMiBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9nZGIvZ2Ric2VydmVyL2xpbnV4LXBwYy1sb3cuYyBiL2dkYi9nZGJzZXJ2ZXIvbGludXgtcHBjLWxvdy5jCi1pbmRleCAxZDAxM2YxODVmLi42ODA5OGIzZGI5IDEwMDY0NAoraW5kZXggMzNhOWZlYjEyYy4uMWE5MTQxZmFlZiAxMDA2NDQKIC0tLSBhL2dkYi9nZGJzZXJ2ZXIvbGludXgtcHBjLWxvdy5jCiArKysgYi9nZGIvZ2Ric2VydmVyL2xpbnV4LXBwYy1sb3cuYwogQEAgLTIxLDcgKzIxLDEzIEBACkBAIC0zMSw3ICszMSw3IEBACiAgI2luY2x1ZGUgIm5hdC9wcGMtbGludXguaCIKICAjaW5jbHVkZSAibGludXgtcHBjLXRkZXNjLmgiCiBkaWZmIC0tZ2l0IGEvZ2RiL25hdC9wcGMtbGludXguaCBiL2dkYi9uYXQvcHBjLWxpbnV4LmgKLWluZGV4IDg1ZmJjZDg0YmIuLmNiZWM5YzUzYjIgMTAwNjQ0CitpbmRleCA1ODM3ZWExNzY3Li43MjMzOTI5MTkyIDEwMDY0NAogLS0tIGEvZ2RiL25hdC9wcGMtbGludXguaAogKysrIGIvZ2RiL25hdC9wcGMtbGludXguaAogQEAgLTE4LDcgKzE4LDEzIEBACkBAIC00OSw1ICs0OSw1IEBACiAgCiAgLyogVGhpcyBzb21ldGltZXMgaXNuJ3QgZGVmaW5lZC4gICovCiAtLSAKLTIuMTEuMAorMi4xMy4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA1LUFkZC1zdXBwb3J0LWZvci1SZW5lc2FzLVNILXNoNC1hcmNoaXRlY3R1cmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNS1BZGQtc3VwcG9ydC1mb3ItUmVuZXNhcy1TSC1zaDQtYXJjaGl0ZWN0dXJlLnBhdGNoCmluZGV4IGQwYzE1ZjYuLmNiMWI3YWIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA1LUFkZC1zdXBwb3J0LWZvci1SZW5lc2FzLVNILXNoNC1hcmNoaXRlY3R1cmUucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDUtQWRkLXN1cHBvcnQtZm9yLVJlbmVzYXMtU0gtc2g0LWFyY2hpdGVjdHVyZS5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gNjY0OWUyY2NjZmIxMWRlYzA3NmFiYjAyZWFlMGFmYWI5NTYxNDgyOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNjBhYzY4ZjYwMTg4NWVhNjQ4MDIyOWE1YzhhODlhMDI1N2RhMzc2YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDIgTWFyIDIwMTUgMDI6MzE6MTIgKzAwMDAKIFN1YmplY3Q6IFtQQVRDSCAwNS8xMF0gQWRkIHN1cHBvcnQgZm9yIFJlbmVzYXMgU0ggKHNoNCkgYXJjaGl0ZWN0dXJlLgpAQCAtMTMsNyArMTMsNyBAQAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogLS0tCi0gZ2RiL01ha2VmaWxlLmluICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKKyBnZGIvTWFrZWZpbGUuaW4gICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKwogIGdkYi9jb25maWd1cmUuaG9zdCAgICAgICAgICAgICAgICAgICB8ICAgMSArCiAgZ2RiL3NoLWxpbnV4LXRkZXAuYyAgICAgICAgICAgICAgICAgIHwgNTE5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAgZ2RiL3NoLXRkZXAuYyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDU0ICsrLS0KQEAgLTI0LDI1ICsyNCwyNiBAQAogIGdkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMy5jICAgICB8ICAgNCArCiAgZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zaWdhbGwuYyAgICAgIHwgICAzICsKICBnZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpZ25hbHMuYyAgICAgfCAgIDQgKwotIDExIGZpbGVzIGNoYW5nZWQsIDYxNyBpbnNlcnRpb25zKCspLCAyOSBkZWxldGlvbnMoLSkKKyAxMSBmaWxlcyBjaGFuZ2VkLCA2MTggaW5zZXJ0aW9ucygrKSwgMjkgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9nZGIvTWFrZWZpbGUuaW4gYi9nZGIvTWFrZWZpbGUuaW4KLWluZGV4IDdiMmRmODY4NzguLjEwZjEyNjZmZTMgMTAwNjQ0CitpbmRleCA4YmU3M2JhNDIzLi5lMjg3ZmY2YTJlIDEwMDY0NAogLS0tIGEvZ2RiL01ha2VmaWxlLmluCiArKysgYi9nZGIvTWFrZWZpbGUuaW4KLUBAIC0xNzUwLDYgKzE3NTAsNyBAQCBBTExERVBGSUxFUyA9IFwKLSAJc2NvcmUtdGRlcC5jIFwKLSAJc2VyLWdvMzIuYyBzZXItcGlwZS5jIHNlci10Y3AuYyBzZXItbWluZ3cuYyBcCi0gCXNoLXRkZXAuYyBzaDY0LXRkZXAuYyBzaG5ic2QtdGRlcC5jIHNobmJzZC1uYXQuYyBcCi0rCXNoLWxpbnV4LXRkZXAuYyBzaC1saW51eC1uYXQuYyBcCitAQCAtMjYzOCw2ICsyNjM4LDggQEAgQUxMREVQRklMRVMgPSBcCisgCXNoLW5ic2QtdGRlcC5jIFwKKyAJc2gtdGRlcC5jIFwKKyAJc2g2NC10ZGVwLmMgXAorKwlzaC1saW51eC10ZGVwLmMgXAorKwlzaC1saW51eC1uYXQuYyBcCiAgCXNvbDItdGRlcC5jIFwKLSAJc29saWItc3ZyNC5jIFwKLSAJc3BhcmMtbGludXgtbmF0LmMgc3BhcmMtbGludXgtdGRlcC5jIFwKKyAJc29saWItYWl4LmMgXAorIAlzb2xpYi1zcHUuYyBcCiBkaWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZ3VyZS5ob3N0IGIvZ2RiL2NvbmZpZ3VyZS5ob3N0Ci1pbmRleCBlZjI2NWViZTI5Li4zMjJhMWUyYzY3IDEwMDY0NAoraW5kZXggZDc0ZmQwNDkzNC4uYmUxMmRlMTQ0NiAxMDA2NDQKIC0tLSBhL2dkYi9jb25maWd1cmUuaG9zdAogKysrIGIvZ2RiL2NvbmZpZ3VyZS5ob3N0Ci1AQCAtMTQ5LDYgKzE0OSw3IEBAIHBvd2VycGMqLSotbGludXgqKQlnZGJfaG9zdD1saW51eCA7OworQEAgLTE1MCw2ICsxNTAsNyBAQCBwb3dlcnBjKi0qLWxpbnV4KikJZ2RiX2hvc3Q9bGludXggOzsKICAKICBzMzkwKi0qLWxpbnV4KikJCWdkYl9ob3N0PWxpbnV4IDs7CiAgCkBAIC01MSw3ICs1Miw3IEBACiAgCQkJZ2RiX2hvc3Q9bmJzZCA7OwogIHNoKi0qLW9wZW5ic2QqKQkJZ2RiX2hvc3Q9bmJzZCA7OwogZGlmZiAtLWdpdCBhL2dkYi9zaC1saW51eC10ZGVwLmMgYi9nZGIvc2gtbGludXgtdGRlcC5jCi1pbmRleCAyNDE4ZDI1MDEwLi5hYzhlYTllMmE0IDEwMDY0NAoraW5kZXggYzVjNzQ1ZDIxOC4uODRlNTM5YWFkMyAxMDA2NDQKIC0tLSBhL2dkYi9zaC1saW51eC10ZGVwLmMKICsrKyBiL2dkYi9zaC1saW51eC10ZGVwLmMKIEBAIC0xOCwxNCArMTgsMzcgQEAKQEAgLTU5OSw3ICs2MDAsNyBAQAogIAogICAgLyogR05VL0xpbnV4IHVzZXMgU1ZSNC1zdHlsZSBzaGFyZWQgbGlicmFyaWVzLiAgKi8KIGRpZmYgLS1naXQgYS9nZGIvc2gtdGRlcC5jIGIvZ2RiL3NoLXRkZXAuYwotaW5kZXggNjk0ZjVmNzQyZC4uOGQ1NGRmN2ExYSAxMDA2NDQKK2luZGV4IDJjMmIyNjg0N2QuLjE0ZjUyODFlZDQgMTAwNjQ0CiAtLS0gYS9nZGIvc2gtdGRlcC5jCiArKysgYi9nZGIvc2gtdGRlcC5jCiBAQCAtMjEsNiArMjEsOSBAQApAQCAtNjIwLDcgKzYyMSw3IEBACiAgI2luY2x1ZGUgImRvdWJsZXN0LmgiCiAgI2luY2x1ZGUgIm9zYWJpLmgiCiAgI2luY2x1ZGUgInJlZ2dyb3Vwcy5oIgotQEAgLTY3LDIzICs3MSw2IEBAIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzaF9jY19lbnVtW10gPSB7CitAQCAtNjgsMjMgKzcyLDYgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHNoX2NjX2VudW1bXSA9IHsKICAKICBzdGF0aWMgY29uc3QgY2hhciAqc2hfYWN0aXZlX2NhbGxpbmdfY29udmVudGlvbiA9IHNoX2NjX2djYzsKICAKQEAgLTY0NCw3ICs2NDUsNyBAQAogIHN0YXRpYyBpbnQKICBzaF9pc19yZW5lc2FzX2NhbGxpbmdfY29udmVudGlvbiAoc3RydWN0IHR5cGUgKmZ1bmNfdHlwZSkKICB7Ci1AQCAtMTA0Myw3ICsxMDMwLDcgQEAgc2hfdHJlYXRfYXNfZmx0X3AgKHN0cnVjdCB0eXBlICp0eXBlKQorQEAgLTEwNTIsNyArMTAzOSw3IEBAIHNoX3RyZWF0X2FzX2ZsdF9wIChzdHJ1Y3QgdHlwZSAqdHlwZSkKICAgICAgcmV0dXJuIDA7CiAgICAvKiBPdGhlcndpc2UgaWYgdGhlIHR5cGUgb2YgdGhhdCBtZW1iZXIgaXMgZmxvYXQsIHRoZSB3aG9sZSB0eXBlIGlzCiAgICAgICB0cmVhdGVkIGFzIGZsb2F0LiAgKi8KQEAgLTY1Myw3ICs2NTQsNyBAQAogICAgICByZXR1cm4gMTsKICAgIC8qIE90aGVyd2lzZSBpdCdzIG5vdCB0cmVhdGVkIGFzIGZsb2F0LiAgKi8KICAgIHJldHVybiAwOwotQEAgLTEwOTMsNyArMTA4MCw3IEBAIHNoX3B1c2hfZHVtbXlfY2FsbF9mcHUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorQEAgLTExMDIsNyArMTA4OSw3IEBAIHNoX3B1c2hfZHVtbXlfY2FsbF9mcHUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAogICAgICAgaW4gZm91ciByZWdpc3RlcnMgYXZhaWxhYmxlLiAgTG9vcCB0aHJ1IGFyZ3MgZnJvbSBmaXJzdCB0byBsYXN0LiAgKi8KICAgIGZvciAoYXJnbnVtID0gMDsgYXJnbnVtIDwgbmFyZ3M7IGFyZ251bSsrKQogICAgICB7CkBAIC02NjIsNyArNjYzLDcgQEAKICAgICAgICBsZW4gPSBUWVBFX0xFTkdUSCAodHlwZSk7CiAgICAgICAgdmFsID0gc2hfanVzdGlmeV92YWx1ZV9pbl9yZWcgKGdkYmFyY2gsIGFyZ3NbYXJnbnVtXSwgbGVuKTsKICAKLUBAIC0xODE5LDcgKzE4MDYsNyBAQCBzaF9kd2FyZjJfZnJhbWVfaW5pdF9yZWcgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBpbnQgcmVnbnVtLAorQEAgLTE4MjgsNyArMTgxNSw3IEBAIHNoX2R3YXJmMl9mcmFtZV9pbml0X3JlZyAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGludCByZWdudW0sCiAgICAgIHJlZy0+aG93ID0gRFdBUkYyX0ZSQU1FX1JFR19VTkRFRklORUQ7CiAgfQogIApAQCAtNjcxLDcgKzY3Miw3IEBACiAgc2hfYWxsb2NfZnJhbWVfY2FjaGUgKHZvaWQpCiAgewogICAgc3RydWN0IHNoX2ZyYW1lX2NhY2hlICpjYWNoZTsKLUBAIC0xODQ2LDcgKzE4MzMsNyBAQCBzaF9hbGxvY19mcmFtZV9jYWNoZSAodm9pZCkKK0BAIC0xODU1LDcgKzE4NDIsNyBAQCBzaF9hbGxvY19mcmFtZV9jYWNoZSAodm9pZCkKICAgIHJldHVybiBjYWNoZTsKICB9CiAgCkBAIC02ODAsNyArNjgxLDcgQEAKICBzaF9mcmFtZV9jYWNoZSAoc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUsIHZvaWQgKip0aGlzX2NhY2hlKQogIHsKICAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X2ZyYW1lX2FyY2ggKHRoaXNfZnJhbWUpOwotQEAgLTE5MTMsOSArMTkwMCw5IEBAIHNoX2ZyYW1lX2NhY2hlIChzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSwgdm9pZCAqKnRoaXNfY2FjaGUpCitAQCAtMTkyMiw5ICsxOTA5LDkgQEAgc2hfZnJhbWVfY2FjaGUgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lLCB2b2lkICoqdGhpc19jYWNoZSkKICAgIHJldHVybiBjYWNoZTsKICB9CiAgCkBAIC02OTMsNyArNjk0LDcgQEAKICB7CiAgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9mcmFtZV9hcmNoICh0aGlzX2ZyYW1lKTsKICAgIHN0cnVjdCBzaF9mcmFtZV9jYWNoZSAqY2FjaGUgPSBzaF9mcmFtZV9jYWNoZSAodGhpc19mcmFtZSwgdGhpc19jYWNoZSk7Ci1AQCAtMTkyOSw3ICsxOTE2LDcgQEAgc2hfZnJhbWVfcHJldl9yZWdpc3RlciAoc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUsCitAQCAtMTkzOCw3ICsxOTI1LDcgQEAgc2hfZnJhbWVfcHJldl9yZWdpc3RlciAoc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUsCiAgICAgICB0aGUgY3VycmVudCBmcmFtZS4gIEZyb2IgcmVnbnVtIHNvIHRoYXQgd2UgcHVsbCB0aGUgdmFsdWUgZnJvbQogICAgICAgdGhlIGNvcnJlY3QgcGxhY2UuICAqLwogICAgaWYgKHJlZ251bSA9PSBnZGJhcmNoX3BjX3JlZ251bSAoZ2RiYXJjaCkpCkBAIC03MDIsNyArNzAzLDcgQEAKICAKICAgIGlmIChyZWdudW0gPCBTSF9OVU1fUkVHUyAmJiBjYWNoZS0+c2F2ZWRfcmVnc1tyZWdudW1dICE9IC0xKQogICAgICByZXR1cm4gZnJhbWVfdW53aW5kX2dvdF9tZW1vcnkgKHRoaXNfZnJhbWUsIHJlZ251bSwKLUBAIC0yMjM4LDggKzIyMjUsOCBAQCBzaF9yZXR1cm5faW5fZmlyc3RfaGlkZGVuX3BhcmFtX3AgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorQEAgLTIyNDcsOCArMjIzNCw4IEBAIHNoX3JldHVybl9pbl9maXJzdF9oaWRkZW5fcGFyYW1fcCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCiAgc3RhdGljIHN0cnVjdCBnZGJhcmNoICoKICBzaF9nZGJhcmNoX2luaXQgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywgc3RydWN0IGdkYmFyY2hfbGlzdCAqYXJjaGVzKQogIHsKQEAgLTcxMiw3ICs3MTMsNyBAQAogIAogICAgLyogU0g1IGlzIGhhbmRsZWQgZW50aXJlbHkgaW4gc2g2NC10ZGVwLmMuICAqLwogICAgaWYgKGluZm8uYmZkX2FyY2hfaW5mby0+bWFjaCA9PSBiZmRfbWFjaF9zaDUpCi1AQCAtMjI1NSw2ICsyMjQyLDE4IEBAIHNoX2dkYmFyY2hfaW5pdCAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZvLCBzdHJ1Y3QgZ2RiYXJjaF9saXN0ICphcmNoZXMpCitAQCAtMjI2NCw2ICsyMjUxLDE4IEBAIHNoX2dkYmFyY2hfaW5pdCAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZvLCBzdHJ1Y3QgZ2RiYXJjaF9saXN0ICphcmNoZXMpCiAgICB0ZGVwID0gWENORVcgKHN0cnVjdCBnZGJhcmNoX3RkZXApOwogICAgZ2RiYXJjaCA9IGdkYmFyY2hfYWxsb2MgKCZpbmZvLCB0ZGVwKTsKICAKQEAgLTczMSw3ICs3MzIsNyBAQAogICAgc2V0X2dkYmFyY2hfc2hvcnRfYml0IChnZGJhcmNoLCAyICogVEFSR0VUX0NIQVJfQklUKTsKICAgIHNldF9nZGJhcmNoX2ludF9iaXQgKGdkYmFyY2gsIDQgKiBUQVJHRVRfQ0hBUl9CSVQpOwogICAgc2V0X2dkYmFyY2hfbG9uZ19iaXQgKGdkYmFyY2gsIDQgKiBUQVJHRVRfQ0hBUl9CSVQpOwotQEAgLTI0MDUsMTAgKzI0MDQsMTEgQEAgc2hfZ2RiYXJjaF9pbml0IChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sIHN0cnVjdCBnZGJhcmNoX2xpc3QgKmFyY2hlcykKK0BAIC0yNDE4LDEwICsyNDE3LDExIEBAIHNoX2dkYmFyY2hfaW5pdCAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZvLCBzdHJ1Y3QgZ2RiYXJjaF9saXN0ICphcmNoZXMpCiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAKQEAgLTc0NSw3ICs3NDYsNyBAQAogICAgZnJhbWVfdW53aW5kX2FwcGVuZF91bndpbmRlciAoZ2RiYXJjaCwgJnNoX2ZyYW1lX3Vud2luZCk7CiAgCiBkaWZmIC0tZ2l0IGEvZ2RiL3NoLXRkZXAuaCBiL2dkYi9zaC10ZGVwLmgKLWluZGV4IDY2Njk2OGY3ODcuLjYyYzY1YjU1ZWEgMTAwNjQ0CitpbmRleCBkMTVlZjA1MGUwLi5jNDY0MmNlZmE0IDEwMDY0NAogLS0tIGEvZ2RiL3NoLXRkZXAuaAogKysrIGIvZ2RiL3NoLXRkZXAuaAogQEAgLTIxLDYgKzIxLDEyIEBACkBAIC04MjgsNyArODI5LDcgQEAKICAgICAgIHdoZXJlIGVhY2ggZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVyIGlzIHN0b3JlZCBpbnNpZGUgdGhlIGFzc29jaWF0ZWQKICAgICAgIGNvcmUgZmlsZSBzZWN0aW9uLiAgKi8KIGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5hc20vYXNtLXNvdXJjZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5hc20vYXNtLXNvdXJjZS5leHAKLWluZGV4IDZkOWFlZjgxYmIuLjViNjZiNDI5ZDEgMTAwNjQ0CitpbmRleCBlMDdlNTU0M2YyLi5mNWU2MGUxMDAyIDEwMDY0NAogLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXNtL2FzbS1zb3VyY2UuZXhwCiArKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5hc20vYXNtLXNvdXJjZS5leHAKIEBAIC0xMTYsNiArMTE2LDExIEBAIHN3aXRjaCAtZ2xvYiAtLSBbaXN0YXJnZXRdIHsKQEAgLTkxNyw1ICs5MTgsNSBAQAogIHN0YXRpYyBpbnQgY291bnQgPSAwOwogIAogLS0gCi0yLjExLjAKKzIuMTMuMQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNi1Eb250LWRpc2FibGUtbGlicmVhZGxpbmUuYS13aGVuLXVzaW5nLWRpc2FibGUtc3RhdGljLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDYtRG9udC1kaXNhYmxlLWxpYnJlYWRsaW5lLmEtd2hlbi11c2luZy1kaXNhYmxlLXN0YXRpYy5wYXRjaAppbmRleCA1ZWQ4ZTgxLi44YjEzOTU4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNi1Eb250LWRpc2FibGUtbGlicmVhZGxpbmUuYS13aGVuLXVzaW5nLWRpc2FibGUtc3RhdGljLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA2LURvbnQtZGlzYWJsZS1saWJyZWFkbGluZS5hLXdoZW4tdXNpbmctZGlzYWJsZS1zdGF0aWMucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDJhNmUyOGFkNWMwY2FkMTg5YTM2OTdkOTZkZTAzMWU0NzEzMDUyYjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDVjOTJlYmQ1ZTExN2U0Y2YxMThjOTg0MTcxZTA3MDNkZmNmYjhjZDggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogU2F0LCAzMCBBcHIgMjAxNiAxNToyNTowMyAtMDcwMAogU3ViamVjdDogW1BBVENIIDA2LzEwXSBEb250IGRpc2FibGUgbGlicmVhZGxpbmUuYSB3aGVuIHVzaW5nIC0tZGlzYWJsZS1zdGF0aWMKQEAgLTE5LDEwICsxOSwxMCBAQAogIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuZGVmIGIvTWFrZWZpbGUuZGVmCi1pbmRleCBlYTg0NTNlODUxLi4wZmM2NmM2OTRiIDEwMDY0NAoraW5kZXggMGQxM2YwMzdkMC4uOGJjZDg2ZTEzZiAxMDA2NDQKIC0tLSBhL01ha2VmaWxlLmRlZgogKysrIGIvTWFrZWZpbGUuZGVmCi1AQCAtMTA0LDcgKzEwNCw4IEBAIGhvc3RfbW9kdWxlcz0geyBtb2R1bGU9IGxpYmljb252OworQEAgLTEwNSw3ICsxMDUsOCBAQCBob3N0X21vZHVsZXM9IHsgbW9kdWxlPSBsaWJpY29udjsKICAJCW1pc3Npbmc9IGluc3RhbGwtaHRtbDsKICAJCW1pc3Npbmc9IGluc3RhbGwtaW5mbzsgfTsKICBob3N0X21vZHVsZXM9IHsgbW9kdWxlPSBtNDsgfTsKQEAgLTMzLDEwICszMywxMCBAQAogIGhvc3RfbW9kdWxlcz0geyBtb2R1bGU9IHNpbTsgfTsKICBob3N0X21vZHVsZXM9IHsgbW9kdWxlPSB0ZXhpbmZvOyBub19pbnN0YWxsPSB0cnVlOyB9OwogZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KLWluZGV4IGNiMDEzNmU4ZjguLjU1ZjkwODVjMTYgMTAwNjQ0CitpbmRleCAzYWNiODNiOGRlLi5lMzQ4OTA3MTI4IDEwMDY0NAogLS0tIGEvTWFrZWZpbGUuaW4KICsrKyBiL01ha2VmaWxlLmluCi1AQCAtMjUzODUsNyArMjUzODUsNyBAQCBjb25maWd1cmUtcmVhZGxpbmU6CitAQCAtMjU0NzAsNyArMjU0NzAsNyBAQCBjb25maWd1cmUtcmVhZGxpbmU6CiAgCSAgJCRzLyQkbW9kdWxlX3NyY2Rpci9jb25maWd1cmUgXAogIAkgIC0tc3JjZGlyPSQke3RvcGRpcn0vJCRtb2R1bGVfc3JjZGlyIFwKICAJICAkKEhPU1RfQ09ORklHQVJHUykgLS1idWlsZD0ke2J1aWxkX2FsaWFzfSAtLWhvc3Q9JHtob3N0X2FsaWFzfSBcCkBAIC00Niw1ICs0Niw1IEBACiAgQGVuZGlmIHJlYWRsaW5lCiAgCiAtLSAKLTIuMTEuMAorMi4xMy4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA3LXVzZS1hc20tc2dpZGVmcy5oLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDctdXNlLWFzbS1zZ2lkZWZzLmgucGF0Y2gKaW5kZXggYTQyYzlmZC4uMzNiNGMzMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDctdXNlLWFzbS1zZ2lkZWZzLmgucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDctdXNlLWFzbS1zZ2lkZWZzLmgucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGQ3NTQzYjQ0MjU1ZGE0YWU3MTQ0N2Q0ZTRkNjNlMGI2YWE0ZWQ5MDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDEyYTBiOGQ4MWUxZmRhNmJhOThhYmRjZThkNmYwOWY5NTU1ZWJjZjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbmRyZSBNY0N1cmR5IDxhbWNjdXJkeUBnbWFpbC5jb20+CiBEYXRlOiBTYXQsIDMwIEFwciAyMDE2IDE1OjI5OjA2IC0wNzAwCiBTdWJqZWN0OiBbUEFUQ0ggMDcvMTBdIHVzZSA8YXNtL3NnaWRlZnMuaD4KQEAgLTE5LDcgKzE5LDcgQEAKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL2dkYi9taXBzLWxpbnV4LW5hdC5jIGIvZ2RiL21pcHMtbGludXgtbmF0LmMKLWluZGV4IDcyMjUzMmJiNmMuLjUxZDhmYzhmNjYgMTAwNjQ0CitpbmRleCBmMmRmMWI5OTA3Li5kMjQ2NjRjYjU2IDEwMDY0NAogLS0tIGEvZ2RiL21pcHMtbGludXgtbmF0LmMKICsrKyBiL2dkYi9taXBzLWxpbnV4LW5hdC5jCiBAQCAtMzEsNyArMzEsNyBAQApAQCAtMzAsNyArMzAsNyBAQAogKyNpbmNsdWRlIDxhc20vc2dpZGVmcy5oPgogICNpbmNsdWRlICJuYXQvZ2RiX3B0cmFjZS5oIgogICNpbmNsdWRlIDxhc20vcHRyYWNlLmg+Ci0gCisgI2luY2x1ZGUgImluZi1wdHJhY2UuaCIKIC0tIAotMi4xMS4wCisyLjEzLjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDgtVXNlLWV4b3J0ZWQtZGVmaW5pdGlvbnMtb2YtU0lHUlRNSU4ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwOC1Vc2UtZXhvcnRlZC1kZWZpbml0aW9ucy1vZi1TSUdSVE1JTi5wYXRjaAppbmRleCBhZTljYjhjLi40ZjY0ZGVhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwOC1Vc2UtZXhvcnRlZC1kZWZpbml0aW9ucy1vZi1TSUdSVE1JTi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwOC1Vc2UtZXhvcnRlZC1kZWZpbml0aW9ucy1vZi1TSUdSVE1JTi5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gYWFjZDc3MTg0ZGExMzI4OTA4ZGE0MWM5ZmRiNTVhZDg4MWZhMGU5OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZDNmMjQwYjM4ZWVkN2NkMDhmNmM1MGVhODk2NTcyZjEzMjdiNDM3YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBTYXQsIDMwIEFwciAyMDE2IDE1OjMxOjQwIC0wNzAwCiBTdWJqZWN0OiBbUEFUQ0ggMDgvMTBdIFVzZSBleG9ydGVkIGRlZmluaXRpb25zIG9mIFNJR1JUTUlOCkBAIC0yMCwxMCArMjAsMTAgQEAKICAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2dkYi9saW51eC1uYXQuYyBiL2dkYi9saW51eC1uYXQuYwotaW5kZXggNWQ1ZWZhMGFmNC4uZTM0MjBiNDlhMCAxMDA2NDQKK2luZGV4IDhiMjkyNDVjM2QuLmY0MjRhZTk3MTEgMTAwNjQ0CiAtLS0gYS9nZGIvbGludXgtbmF0LmMKICsrKyBiL2dkYi9saW51eC1uYXQuYwotQEAgLTUwMjIsNiArNTAyMiw2IEBAIGxpbl90aHJlYWRfZ2V0X3RocmVhZF9zaWduYWxzIChzaWdzZXRfdCAqc2V0KQorQEAgLTUwMjEsNiArNTAyMSw2IEBAIGxpbl90aHJlYWRfZ2V0X3RocmVhZF9zaWduYWxzIChzaWdzZXRfdCAqc2V0KQogICAgLyogTlBUTCByZXNlcnZlcyB0aGUgZmlyc3QgdHdvIFJUIHNpZ25hbHMsIGJ1dCBkb2VzIG5vdCBwcm92aWRlIGFueQogICAgICAgd2F5IGZvciB0aGUgZGVidWdnZXIgdG8gcXVlcnkgdGhlIHNpZ25hbCBudW1iZXJzIC0gZm9ydHVuYXRlbHkKICAgICAgIHRoZXkgZG9uJ3QgY2hhbmdlLiAgKi8KQEAgLTMzLDEyICszMywxMiBAQAogKyAgc2lnYWRkc2V0IChzZXQsIFNJR1JUTUlOICsgMSk7CiAgfQogZGlmZiAtLWdpdCBhL2dkYi9uYXQvbGludXgtbmF0LmggYi9nZGIvbmF0L2xpbnV4LW5hdC5oCi1pbmRleCAyYjQ4NWRiMTQxLi5kMDU4YWZjZGU4IDEwMDY0NAoraW5kZXggN2RkMThmZWZmZi4uMzUxMzdhYjM0ZiAxMDA2NDQKIC0tLSBhL2dkYi9uYXQvbGludXgtbmF0LmgKICsrKyBiL2dkYi9uYXQvbGludXgtbmF0LmgKLUBAIC04NSw0ICs4NSw4IEBAIGV4dGVybiBlbnVtIHRhcmdldF9zdG9wX3JlYXNvbiBsd3Bfc3RvcF9yZWFzb24gKHN0cnVjdCBsd3BfaW5mbyAqbHdwKTsKK0BAIC05MCw0ICs5MCw4IEBAIGV4dGVybiB2b2lkIGxpbnV4X3N0b3BfbHdwIChzdHJ1Y3QgbHdwX2luZm8gKmx3cCk7CiAgCi0gZXh0ZXJuIHZvaWQgbGludXhfc3RvcF9sd3AgKHN0cnVjdCBsd3BfaW5mbyAqbHdwKTsKKyBleHRlcm4gaW50IGx3cF9pc19zdGVwcGluZyAoc3RydWN0IGx3cF9pbmZvICpsd3ApOwogIAogKyNpZm5kZWYgV19TVE9QQ09ERQogKyNkZWZpbmUgV19TVE9QQ09ERShzaWcpICgoc2lnKSA8PCA4IHwgMHg3ZikKQEAgLTQ2LDUgKzQ2LDUgQEAKICsKICAjZW5kaWYgLyogTElOVVhfTkFUX0ggKi8KIC0tIAotMi4xMS4wCisyLjEzLjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDktQ2hhbmdlLW9yZGVyLW9mLUNGTEFHUy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA5LUNoYW5nZS1vcmRlci1vZi1DRkxBR1MucGF0Y2gKaW5kZXggZWQ2ZTBhZS4uMGMxMDNlZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDktQ2hhbmdlLW9yZGVyLW9mLUNGTEFHUy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwOS1DaGFuZ2Utb3JkZXItb2YtQ0ZMQUdTLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA4YzM1ZDVkMTgyNWVkMDE3Y2M1OGVhOTEwMTE0MTJlNTRjMDAyZWViIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAzZjU0MDM2Yjg5MTA1NDA3MmIzZTQzZWE4ZGFhYTU3YWEzNjdiMmUwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFNhdCwgMzAgQXByIDIwMTYgMTU6MzU6MzkgLTA3MDAKIFN1YmplY3Q6IFtQQVRDSCAwOS8xMF0gQ2hhbmdlIG9yZGVyIG9mIENGTEFHUwpAQCAtOSwyNiArOSwyMiBAQAogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogLS0tCi0gZ2RiL2dkYnNlcnZlci9NYWtlZmlsZS5pbiB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisgZ2RiL2dkYnNlcnZlci9NYWtlZmlsZS5pbiB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL2dkYi9nZGJzZXJ2ZXIvTWFrZWZpbGUuaW4gYi9nZGIvZ2Ric2VydmVyL01ha2VmaWxlLmluCi1pbmRleCBmODQ0YWI4ODUzLi4zZjg4ZGI1MmUzIDEwMDY0NAoraW5kZXggMDFkZmRjMGI4OS4uZjZhZWJlZjQ2NCAxMDA2NDQKIC0tLSBhL2dkYi9nZGJzZXJ2ZXIvTWFrZWZpbGUuaW4KICsrKyBiL2dkYi9nZGJzZXJ2ZXIvTWFrZWZpbGUuaW4KLUBAIC0xMzgsMTAgKzEzOCwxMCBAQCBDWFhGTEFHUyA9IEBDWFhGTEFHU0AKLSBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKLSAKLSAjIElOVEVSTkFMX0NGTEFHUyBpcyB0aGUgYWdncmVnYXRlIG9mIGFsbCBvdGhlciAqQ0ZMQUdTIG1hY3Jvcy4KLS1JTlRFUk5BTF9DRkxBR1NfQkFTRSA9ICAke0NPTVBJTEVSX0NGTEFHU30gJHtHTE9CQUxfQ0ZMQUdTfSBcCi0rSU5URVJOQUxfQ0ZMQUdTX0JBU0UgPSAgJHtHTE9CQUxfQ0ZMQUdTfSBcCitAQCAtMTQwLDcgKzE0MCw3IEBAIENQUEZMQUdTID0gQENQUEZMQUdTQAorIElOVEVSTkFMX0NGTEFHU19CQVNFID0gJHtDWFhGTEFHU30gJHtHTE9CQUxfQ0ZMQUdTfSBcCiAgCSR7UFJPRklMRV9DRkxBR1N9ICR7SU5DTFVERV9DRkxBR1N9ICR7Q1BQRkxBR1N9Ci0gSU5URVJOQUxfV0FSTl9DRkxBR1MgPSAgJHtJTlRFUk5BTF9DRkxBR1NfQkFTRX0gJChXQVJOX0NGTEFHUykKLS1JTlRFUk5BTF9DRkxBR1MgPSAgJHtJTlRFUk5BTF9XQVJOX0NGTEFHU30gJChXRVJST1JfQ0ZMQUdTKSAtREdEQlNFUlZFUgotK0lOVEVSTkFMX0NGTEFHUyA9ICAke0lOVEVSTkFMX1dBUk5fQ0ZMQUdTfSAkKFdFUlJPUl9DRkxBR1MpICR7Q09NUElMRVJfQ0ZMQUdTfSAtREdEQlNFUlZFUgorIElOVEVSTkFMX1dBUk5fQ0ZMQUdTID0gJHtJTlRFUk5BTF9DRkxBR1NfQkFTRX0gJChXQVJOX0NGTEFHUykKKy1JTlRFUk5BTF9DRkxBR1MgPSAke0lOVEVSTkFMX1dBUk5fQ0ZMQUdTfSAkKFdFUlJPUl9DRkxBR1MpIC1ER0RCU0VSVkVSCisrSU5URVJOQUxfQ0ZMQUdTID0gJHtJTlRFUk5BTF9XQVJOX0NGTEFHU30gJChXRVJST1JfQ0ZMQUdTKSAke0NPTVBJTEVSX0NGTEFHU30gLURHREJTRVJWRVIKICAKICAjIExERkxBR1MgaXMgc3BlY2lmaWNhbGx5IHJlc2VydmVkIGZvciBzZXR0aW5nIGZyb20gdGhlIGNvbW1hbmQgbGluZQogICMgd2hlbiBydW5uaW5nIG1ha2UuCiAtLSAKLTIuMTEuMAorMi4xMy4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDEwLXJlc29sdmUtcmVzdHJpY3Qta2V5d29yZC1jb25mbGljdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDEwLXJlc29sdmUtcmVzdHJpY3Qta2V5d29yZC1jb25mbGljdC5wYXRjaAppbmRleCAxOTM4YmViLi5jOTUwNzEwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAxMC1yZXNvbHZlLXJlc3RyaWN0LWtleXdvcmQtY29uZmxpY3QucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMTAtcmVzb2x2ZS1yZXN0cmljdC1rZXl3b3JkLWNvbmZsaWN0LnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA3ODE2ZDM0OTcyNjZlNTVjMWM5MjFkN2NjMWM4YmY4MWM4ZWQwYjRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAzZWFkMGRkMTQzNTIxYjBiYTY5YzllNzUzYmM0YTIzNmY5NDQ1YWQ5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFR1ZSwgMTAgTWF5IDIwMTYgMDg6NDc6MDUgLTA3MDAKIFN1YmplY3Q6IFtQQVRDSCAxMC8xMF0gcmVzb2x2ZSByZXN0cmljdCBrZXl3b3JkIGNvbmZsaWN0CkBAIC0xNSw3ICsxNSw3IEBACiAgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2dkYi9nbnVsaWIvaW1wb3J0L3N5c190aW1lLmluLmggYi9nZGIvZ251bGliL2ltcG9ydC9zeXNfdGltZS5pbi5oCi1pbmRleCBjNTU2YzVkYjIzLi4yYTYxMDdmY2Y4IDEwMDY0NAoraW5kZXggZDUzNWE2YTQ4Yi4uN2MzNGQ1YTFhYSAxMDA2NDQKIC0tLSBhL2dkYi9nbnVsaWIvaW1wb3J0L3N5c190aW1lLmluLmgKICsrKyBiL2dkYi9nbnVsaWIvaW1wb3J0L3N5c190aW1lLmluLmgKIEBAIC05MywyMCArOTMsMjAgQEAgc3RydWN0IHRpbWV2YWwKQEAgLTQyLDcgKzQyLDcgQEAKICsgICAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgdGltZXZhbCAqX19yZXN0cmljdCwgdm9pZCAqX19yZXN0cmljdCkpOwogICMgZW5kaWYKICBfR0xfQ1hYQUxJQVNXQVJOIChnZXR0aW1lb2ZkYXkpOwotICNlbGlmIGRlZmluZWQgR05VTElCX1BPU0lYQ0hFQ0sKKyAjIGlmIGRlZmluZWQgX19jcGx1c3BsdXMgJiYgZGVmaW5lZCBHTlVMSUJfTkFNRVNQQUNFCiAtLSAKLTIuMTEuMAorMi4xMy4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYl83LjEyLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGJfOC4wLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGJfNy4xMi4xLmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGJfOC4wLmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dpdC9naXQuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9naXQvZ2l0LmluYwppbmRleCA1YzEyY2E4Li45YjRjMTI4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dpdC9naXQuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2l0L2dpdC5pbmMKQEAgLTEwNyw3ICsxMDcsNiBAQAogICAgICR7bGliZXhlY2Rpcn0vZ2l0LWNvcmUvZ2l0LWN2c3NlcnZlciBcCiAgICAgJHtiaW5kaXJ9L2dpdC1jdnNzZXJ2ZXIgXAogICAgICR7bGliZXhlY2Rpcn0vZ2l0LWNvcmUvZ2l0LWRpZmZ0b29sIFwKLSAgICAke2xpYmV4ZWNkaXJ9L2dpdC1jb3JlL2dpdC1yZWxpbmsgXAogICAgICR7bGliZXhlY2Rpcn0vZ2l0LWNvcmUvZ2l0LXNlbmQtZW1haWwgXAogICAgICR7bGliZXhlY2Rpcn0vZ2l0LWNvcmUvZ2l0LXN2biBcCiAgICAgJHtsaWJleGVjZGlyfS9naXQtY29yZS9naXQtaW5zdGF3ZWIgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9naXQvZ2l0XzIuMTEuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2l0L2dpdF8yLjExLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyZjA3MmMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9naXQvZ2l0XzIuMTEuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLXJlcXVpcmUgZ2l0LmluYwotCi1FWFRSQV9PRUNPTkYgKz0gImFjX2N2X3NucHJpbnRmX3JldHVybnNfYm9ndXM9bm8gXAotICAgICAgICAgICAgICAgICBhY19jdl9mcmVhZF9yZWFkc19kaXJlY3Rvcmllcz0ke2FjX2N2X2ZyZWFkX3JlYWRzX2RpcmVjdG9yaWVzPXllc30gXAotICAgICAgICAgICAgICAgICAiCi1FWFRSQV9PRU1BS0UgKz0gIk5PX0dFVFRFWFQ9MSIKLQotU1JDX1VSSVt0YXJiYWxsLm1kNXN1bV0gPSAiNmE3YTczZGIwNzZiYjA1MTRiNjAyNzIwNjY5ZDY4NWMiCi1TUkNfVVJJW3RhcmJhbGwuc2hhMjU2c3VtXSA9ICJhMWNkZDdjODIwZjkyYzQ0YWJiNTAwM2IzNmRjOGNiNzIwMWJhMzhlODc0NDgwMjM5OWY1OWM5NzI4NWNhMDQzIgotU1JDX1VSSVttYW5wYWdlcy5tZDVzdW1dID0gImU0MjY4YTZiNTE0Y2NkYjYyNGI2NDUwZmY1NTg4MWEzIgotU1JDX1VSSVttYW5wYWdlcy5zaGEyNTZzdW1dID0gImVlNTY3ZTdiMGY5NTMzMzgxNjc5MzcxNGJiMzFjNTRlMjg4Y2Y4MDQxZjc3YTAwOTJiODVlNjJjOWMyOTc0ZjkiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dpdC9naXRfMi4xMy4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9naXQvZ2l0XzIuMTMuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iM2UzODg3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9naXQvZ2l0XzIuMTMuMy5iYgpAQCAtMCwwICsxLDExIEBACityZXF1aXJlIGdpdC5pbmMKKworRVhUUkFfT0VDT05GICs9ICJhY19jdl9zbnByaW50Zl9yZXR1cm5zX2JvZ3VzPW5vIFwKKyAgICAgICAgICAgICAgICAgYWNfY3ZfZnJlYWRfcmVhZHNfZGlyZWN0b3JpZXM9JHthY19jdl9mcmVhZF9yZWFkc19kaXJlY3Rvcmllcz15ZXN9IFwKKyAgICAgICAgICAgICAgICAgIgorRVhUUkFfT0VNQUtFICs9ICJOT19HRVRURVhUPTEiCisKK1NSQ19VUklbdGFyYmFsbC5tZDVzdW1dID0gImQyZGM1NTBmNjY5M2JhN2U1YjE2MjEyYjI3MTRmNTlmIgorU1JDX1VSSVt0YXJiYWxsLnNoYTI1NnN1bV0gPSAiMTQ5NzAwMTc3MmY2MzBkNDk4MDllOTgxNjcyZWRmZTNlM2NlMWExZDE4ZTkwNWNkNTM5YzRkMmY0ZGJjZDc1YSIKK1NSQ19VUklbbWFucGFnZXMubWQ1c3VtXSA9ICIzMDM3ZDExYTRmNGNkZDE5NDM1ODcxYzI2N2NhNDhiNCIKK1NSQ19VUklbbWFucGFnZXMuc2hhMjU2c3VtXSA9ICJmOWIzMDJlZWIwOGNlMDg5MzRlN2FmYjQyMjgwY2U5Mjk0NDExZmJmNWY3YjZhYzNmY2MyMzZlODAzMWYxMGM1IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nbnUtY29uZmlnL2dudS1jb25maWcvY29uZmlnLWd1ZXNzLXVjbGliYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ251LWNvbmZpZy9nbnUtY29uZmlnL2NvbmZpZy1ndWVzcy11Y2xpYmMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwOTQxMTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nbnUtY29uZmlnL2dudS1jb25maWcvY29uZmlnLWd1ZXNzLXVjbGliYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE3MCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotUGF0Y2ggY291cnRlc3kgZ2VudG9vLXBvcnRhZ2Uvc3lzLWRldmVsL2dudWNvbmZpZy9maWxlcy9hdXRvbWFrZS0xLjguNS1jb25maWctZ3Vlc3MtdWNsaWJjLnBhdGNoLgotCi11cGRhdGVkIHRvIDIwMDUwNTE2IGJ5IE1hcmNpbiAnSHJ3JyBKdXN6a2lld2ljeiAoYnkgaGFuZCkKLXVwZGF0ZWQgdG8gMjAwODAxMjMgYnkgTml0aW4gQSBLYW1ibGUgKGJ5IGhhbmQpCi11cGRhdGVkIHRvIDIwMTExMDAxIGJ5IFNhdWwgV29sZCAoYnkgaGFuZCkKLXVwZGF0ZWQgdG8gMjAxMjA4MTggYnkgTWFyY2luICdIcncnIEp1c3praWV3aWN6IChieSBoYW5kKQotCi1TaWduZWQtb2ZmLWJ5OiBTYXVsIFdvbGQgPHNnd0BsaW51eC5pbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBNYXJjaW4gSnVzemtpZXdpY3ogPG1hcmNpbi5qdXN6a2lld2ljekBsaW5hcm8ub3JnPgotCi0tLS0KLSBjb25maWcuZ3Vlc3MgfCAgIDY3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDQwIGluc2VydGlvbnMoKyksIDI3IGRlbGV0aW9ucygtKQotCi0tLS0gZ2l0Lm9yaWcvY29uZmlnLmd1ZXNzCi0rKysgZ2l0L2NvbmZpZy5ndWVzcwotQEAgLTEzOCw2ICsxMzgsMTkgQEAgVU5BTUVfUkVMRUFTRT1gKHVuYW1lIC1yKSAyPi9kZXYvbnVsbGAgfAotIFVOQU1FX1NZU1RFTT1gKHVuYW1lIC1zKSAyPi9kZXYvbnVsbGAgIHx8IFVOQU1FX1NZU1RFTT11bmtub3duCi0gVU5BTUVfVkVSU0lPTj1gKHVuYW1lIC12KSAyPi9kZXYvbnVsbGAgfHwgVU5BTUVfVkVSU0lPTj11bmtub3duCi0gCi0rIyBEZXRlY3QgdWNsaWJjIHN5c3RlbXMuCi0rCi0rTElCQz0iZ251IgotK2lmIFsgLWYgL3Vzci9pbmNsdWRlL2JpdHMvdUNsaWJjX2NvbmZpZy5oIF0KLSt0aGVuCi0rCUxJQkM9dWNsaWJjCi0rCWlmIFsgLW4gYGdyZXAgIiNkZWZpbmUgX19VQ0xJQkNfQ09ORklHX1ZFUlNJT05fXyIgL3Vzci9pbmNsdWRlL2JpdHMvdUNsaWJjX2NvbmZpZy5oYCBdCi0rCXRoZW4KLSsJCVVDTElCQ19TVUJWRVI9YHNlZCAtbiAiLyNkZWZpbmUgX19VQ0xJQkNfQ09ORklHX1ZFUlNJT05fXyAvcy8vL3AiIC91c3IvaW5jbHVkZS9iaXRzL3VDbGliY19jb25maWcuaGAKLSsJCUxJQkM9JExJQkMkVUNMSUJDX1NVQlZFUgotKwlmaQotK2ZpCi0rCi0gIyBOb3RlOiBvcmRlciBpcyBzaWduaWZpY2FudCAtIHRoZSBjYXNlIGJyYW5jaGVzIGFyZSBub3QgZXhjbHVzaXZlLgotIAotIGNhc2UgIiR7VU5BTUVfTUFDSElORX06JHtVTkFNRV9TWVNURU19OiR7VU5BTUVfUkVMRUFTRX06JHtVTkFNRV9WRVJTSU9OfSIgaW4KLUBAIC04ODYsMTUgKzg5OSwxNSBAQCBFT0YKLSAJICBFVjY4KikgVU5BTUVfTUFDSElORT1hbHBoYWV2NjggOzsKLSAJZXNhYwotIAlvYmpkdW1wIC0tcHJpdmF0ZS1oZWFkZXJzIC9iaW4vc2ggfCBncmVwIC1xIGxkLnNvLjEKLS0JaWYgdGVzdCAiJD8iID0gMCA7IHRoZW4gTElCQz0ibGliYzEiIDsgZWxzZSBMSUJDPSIiIDsgZmkKLS0JZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251JHtMSUJDfQotKwlpZiB0ZXN0ICIkPyIgPSAwIDsgdGhlbiBMSUJDPSJnbnVsaWJjMSIgOyBlbHNlIExJQkM9IiIgOyBmaQotKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC0ke0xJQkN9Ci0gCWV4aXQgOzsKLSAgICAgYXJtKjpMaW51eDoqOiopCi0gCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKLSAJaWYgZWNobyBfX0FSTV9FQUJJX18gfCAkQ0NfRk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwgXAotIAkgICAgfCBncmVwIC1xIF9fQVJNX0VBQklfXwotIAl0aGVuCi0tCSAgICBlY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKLSsJICAgIGVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LSR7TElCQ30KLSAJZWxzZQotIAkgICAgaWYgZWNobyBfX0FSTV9QQ1NfVkZQIHwgJENDX0ZPUl9CVUlMRCAtRSAtIDI+L2Rldi9udWxsIFwKLSAJCXwgZ3JlcCAtcSBfX0FSTV9QQ1NfVkZQCi1AQCAtOTA2LDE5ICs5MTksMTkgQEAgRU9GCi0gCWZpCi0gCWV4aXQgOzsKLSAgICAgYXZyMzIqOkxpbnV4Oio6KikKLS0JZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251Ci0rCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LSR7TElCQ30KLSAJZXhpdCA7OwotICAgICBjcmlzOkxpbnV4Oio6KikKLS0JZWNobyAke1VOQU1FX01BQ0hJTkV9LWF4aXMtbGludXgtZ251Ci0rCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1heGlzLWxpbnV4LSR7TElCQ30KLSAJZXhpdCA7OwotICAgICBjcmlzdjMyOkxpbnV4Oio6KikKLS0JZWNobyAke1VOQU1FX01BQ0hJTkV9LWF4aXMtbGludXgtZ251Ci0rCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1heGlzLWxpbnV4LSR7TElCQ30KLSAJZXhpdCA7OwotICAgICBmcnY6TGludXg6KjoqKQotLQllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKLSsJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtJHtMSUJDfQotIAlleGl0IDs7Ci0gICAgIGhleGFnb246TGludXg6KjoqKQotLQllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKLSsJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtJHtMSUJDfQotIAlleGl0IDs7Ci0gICAgIGkqODY6TGludXg6KjoqKQotIAlMSUJDPWdudQotQEAgLTkzMiwxMyArOTQ1LDEzIEBAIEVPRgotIAllY2hvICIke1VOQU1FX01BQ0hJTkV9LXBjLWxpbnV4LSR7TElCQ30iCi0gCWV4aXQgOzsKLSAgICAgaWE2NDpMaW51eDoqOiopCi0tCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQotKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC0ke0xJQkN9Ci0gCWV4aXQgOzsKLSAgICAgbTMycio6TGludXg6KjoqKQotLQllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKLSsJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtJHtMSUJDfQotIAlleGl0IDs7Ci0gICAgIG02OCo6TGludXg6KjoqKQotLQllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKLSsJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtJHtMSUJDfQotIAlleGl0IDs7Ci0gICAgIG1pcHM6TGludXg6KjoqIHwgbWlwczY0OkxpbnV4Oio6KikKLSAJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAotQEAgLTk1Nyw1NCArOTcwLDU0IEBAIEVPRgotIAkjZW5kaWYKLSBFT0YKLSAJZXZhbCBgJENDX0ZPUl9CVUlMRCAtRSAkZHVtbXkuYyAyPi9kZXYvbnVsbCB8IGdyZXAgJ15DUFUnYAotLQl0ZXN0IHgiJHtDUFV9IiAhPSB4ICYmIHsgZWNobyAiJHtDUFV9LXVua25vd24tbGludXgtZ251IjsgZXhpdDsgfQotKwl0ZXN0IHgiJHtDUFV9IiAhPSB4ICYmIHsgZWNobyAiJHtDUFV9LXVua25vd24tbGludXgtJHtMSUJDfSI7IGV4aXQ7IH0KLSAJOzsKLSAgICAgb3IzMjpMaW51eDoqOiopCi0tCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQotKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC0ke0xJQkN9Ci0gCWV4aXQgOzsKLSAgICAgcGFkcmU6TGludXg6KjoqKQotLQllY2hvIHNwYXJjLXVua25vd24tbGludXgtZ251Ci0rCWVjaG8gc3BhcmMtdW5rbm93bi1saW51eC0ke0xJQkN9Ci0gCWV4aXQgOzsKLSAgICAgcGFyaXNjNjQ6TGludXg6KjoqIHwgaHBwYTY0OkxpbnV4Oio6KikKLS0JZWNobyBocHBhNjQtdW5rbm93bi1saW51eC1nbnUKLSsJZWNobyBocHBhNjQtdW5rbm93bi1saW51eC0ke0xJQkN9Ci0gCWV4aXQgOzsKLSAgICAgcGFyaXNjOkxpbnV4Oio6KiB8IGhwcGE6TGludXg6KjoqKQotIAkjIExvb2sgZm9yIENQVSBsZXZlbAotIAljYXNlIGBncmVwICdeY3B1W15hLXpdKjonIC9wcm9jL2NwdWluZm8gMj4vZGV2L251bGwgfCBjdXQgLWQnICcgLWYyYCBpbgotLQkgIFBBNyopIGVjaG8gaHBwYTEuMS11bmtub3duLWxpbnV4LWdudSA7OwotLQkgIFBBOCopIGVjaG8gaHBwYTIuMC11bmtub3duLWxpbnV4LWdudSA7OwotLQkgICopICAgIGVjaG8gaHBwYS11bmtub3duLWxpbnV4LWdudSA7OwotKwkgIFBBNyopIGVjaG8gaHBwYTEuMS11bmtub3duLWxpbnV4LSR7TElCQ30gOzsKLSsJICBQQTgqKSBlY2hvIGhwcGEyLjAtdW5rbm93bi1saW51eC0ke0xJQkN9IDs7Ci0rCSAgKikgICAgZWNobyBocHBhLXVua25vd24tbGludXgtJHtMSUJDfSA7OwotIAllc2FjCi0gCWV4aXQgOzsKLSAgICAgcHBjNjQ6TGludXg6KjoqKQotLQllY2hvIHBvd2VycGM2NC11bmtub3duLWxpbnV4LWdudQotKwllY2hvIHBvd2VycGM2NC11bmtub3duLWxpbnV4LSR7TElCQ30KLSAJZXhpdCA7OwotICAgICBwcGM6TGludXg6KjoqKQotLQllY2hvIHBvd2VycGMtdW5rbm93bi1saW51eC1nbnUKLSsJZWNobyBwb3dlcnBjLXVua25vd24tbGludXgtJHtMSUJDfQotIAlleGl0IDs7Ci0gICAgIHMzOTA6TGludXg6KjoqIHwgczM5MHg6TGludXg6KjoqKQotIAllY2hvICR7VU5BTUVfTUFDSElORX0taWJtLWxpbnV4Ci0gCWV4aXQgOzsKLSAgICAgc2g2NCo6TGludXg6KjoqKQotLQllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKLSsJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtJHtMSUJDfQotIAlleGl0IDs7Ci0gICAgIHNoKjpMaW51eDoqOiopCi0tCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQotKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC0ke0xJQkN9Ci0gCWV4aXQgOzsKLSAgICAgc3BhcmM6TGludXg6KjoqIHwgc3BhcmM2NDpMaW51eDoqOiopCi0tCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQotKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC0ke0xJQkN9Ci0gCWV4aXQgOzsKLSAgICAgdGlsZSo6TGludXg6KjoqKQotLQllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKLSsJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtJHtMSUJDfQotIAlleGl0IDs7Ci0gICAgIHZheDpMaW51eDoqOiopCi0tCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1kZWMtbGludXgtZ251Ci0rCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1kZWMtbGludXgtJHtMSUJDfQotIAlleGl0IDs7Ci0gICAgIHg4Nl82NDpMaW51eDoqOiopCi0tCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQotKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC0ke0xJQkN9Ci0gCWV4aXQgOzsKLSAgICAgeHRlbnNhKjpMaW51eDoqOiopCi0tCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQotKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC0ke0xJQkN9Ci0gCWV4aXQgOzsKLSAgICAgaSo4NjpEWU5JWC9wdHg6NCo6KikKLSAJIyBwdHggNC4wIGRvZXMgdW5hbWUgLXMgY29ycmVjdGx5LCB3aXRoIERZTklYL3B0eCBpbiB0aGVyZS4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ251LWNvbmZpZy9nbnUtY29uZmlnL3VjbGliYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ251LWNvbmZpZy9nbnUtY29uZmlnL3VjbGliYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzVmZTEwMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dudS1jb25maWcvZ251LWNvbmZpZy91Y2xpYmMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotLS0tIGNvbmZpZy5zdWIub3JpZwkyMDA0LTA1LTE0IDE5OjM4OjM2LjAwMDAwMDAwMCAtMDUwMAotKysrIGNvbmZpZy5zdWIJMjAwNC0wNS0xNCAxOTozOToxNy4wMDAwMDAwMDAgLTA1MDAKLUBAIC0xMTgsNyArMTE4LDcgQEAKLSAjIEhlcmUgd2UgbXVzdCByZWNvZ25pemUgYWxsIHRoZSB2YWxpZCBLRVJORUwtT1MgY29tYmluYXRpb25zLgotIG1heWJlX29zPWBlY2hvICQxIHwgc2VkICdzL15cKC4qXCktXChbXi1dKi1bXi1dKlwpJC9cMi8nYAotIGNhc2UgJG1heWJlX29zIGluCi0tICBudG8tcW54KiB8IGxpbnV4LWdudSogfCBrZnJlZWJzZCotZ251KiB8IG5ldGJzZCotZ251KiB8IHN0b3JtLWNoYW9zKiB8IG9zMi1lbXgqIHwgcnRtay1ub3ZhKikKLSsgIG50by1xbngqIHwgbGludXgtZ251KiB8IGxpbnV4LXVjbGliYyogfCBmcmVlYnNkKi1nbnUqIHwgbmV0YnNkKi1nbnUqIHwgc3Rvcm0tY2hhb3MqIHwgb3MyLWVteCogfCBydG1rLW5vdmEqKQotICAgICBvcz0tJG1heWJlX29zCi0gICAgIGJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgJ3MvXlwoLipcKS1cKFteLV0qLVteLV0qXCkkL1wxLydgCi0gICAgIDs7Ci1AQCAtMTEzNSw3ICsxMTM1LDggQEAKLSAJICAgICAgfCAtdWRpKiB8IC1lYWJpKiB8IC1saXRlcyogfCAtaWVlZSogfCAtZ28zMiogfCAtYXV4KiBcCi0gCSAgICAgIHwgLWNob3J1c29zKiB8IC1jaG9ydXNyZGIqIFwKLSAJICAgICAgfCAtY3lnd2luKiB8IC1wZSogfCAtcHNvcyogfCAtbW9zcyogfCAtcHJvZWxmKiB8IC1ydGVtcyogXAotLQkgICAgICB8IC1taW5ndzMyKiB8IC1saW51eC1nbnUqIHwgLXV4cHYqIHwgLWJlb3MqIHwgLW1wZWl4KiB8IC11ZGsqIFwKLSsJICAgICAgfCAtbWluZ3czMiogfCAtbGludXgtZ251KiB8IC1saW51eC11Y2xpYmMqIFwKLSsJICAgICAgfCAtdXhwdiogfCAtYmVvcyogfCAtbXBlaXgqIHwgLXVkayogXAotIAkgICAgICB8IC1pbnRlcml4KiB8IC11d2luKiB8IC1ta3MqIHwgLXJoYXBzb2R5KiB8IC1kYXJ3aW4qIHwgLW9wZW5lZCogXAotIAkgICAgICB8IC1vcGVuc3RlcCogfCAtb3NraXQqIHwgLWNvbml4KiB8IC1wdzMyKiB8IC1ub25zdG9wdXgqIFwKLSAJICAgICAgfCAtc3Rvcm0tY2hhb3MqIHwgLXRvcHMxMCogfCAtdGVuZXgqIHwgLXRvcHMyMCogfCAtaXRzKiBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dudS1jb25maWcvZ251LWNvbmZpZ18yMDEyMDgxNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ251LWNvbmZpZy9nbnUtY29uZmlnXzIwMTIwODE0LmJiCmluZGV4IDBkMDVlNzkuLjNkNDI4YjkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ251LWNvbmZpZy9nbnUtY29uZmlnXzIwMTIwODE0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ251LWNvbmZpZy9nbnUtY29uZmlnXzIwMTIwODE0LmJiCkBAIC0xMCw3ICsxMCw2IEBACiAKIAogU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMvZ251LWNvbmZpZy9nbnUtY29uZmlnLSR7UFZ9LnRhci5iejIgXAotCSAgIGZpbGU6Ly9jb25maWctZ3Vlc3MtdWNsaWJjLnBhdGNoIFwKIAkgICBmaWxlOi8vbXVzbC1zdXBwb3J0LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2dudS1jb25maWdpemUuaW4iCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ251LWNvbmZpZy9nbnUtY29uZmlnX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ251LWNvbmZpZy9nbnUtY29uZmlnX2dpdC5iYgppbmRleCBmMWM3Nzg4Li40ZmRlZDYwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dudS1jb25maWcvZ251LWNvbmZpZ19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nbnUtY29uZmlnL2dudS1jb25maWdfZ2l0LmJiCkBAIC0xMyw4ICsxMyw4IEBACiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvY29uZmlnLmdpdCBcCiAgICAgICAgICAgIGZpbGU6Ly9nbnUtY29uZmlnaXplLmluIgotCiBTID0gIiR7V09SS0RJUn0vZ2l0IgorVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCiAKIENMRUFOQlJPS0VOID0gIjEiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS40LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS40LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmY1MDBmMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1yZXF1aXJlIGdvLWNvbW1vbi5pbmMKLQotUFYgPSAiMS40LjMiCi1HT19CQVNFVkVSU0lPTiA9ICIxLjQiCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtGSUxFX0RJUk5BTUV9L2dvLSR7R09fQkFTRVZFUlNJT059OiIKLQotU1JDX1VSSSArPSAiXAotICAgICAgICBmaWxlOi8vMDE2LWFybWhmLWVsZi1oZWFkZXIucGF0Y2ggXAotICAgICAgICBmaWxlOi8vZ28tY3Jvc3MtYmFja3BvcnQtY21kLWxpbmstc3VwcG9ydC1uZXctMzg2LWFtZDY0LXJlbC5wYXRjaCBcCi0gICAgICAgIGZpbGU6Ly9zeXNsb2cucGF0Y2ggXAotICAgICAgICBmaWxlOi8vMDAwMS1jbWQtbGQtc2V0LWFsaWdubWVudC1mb3ItdGhlLS5yZWwucGx0LXNlY3Rpb24tb24tMzItLnBhdGNoIFwKLSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NTkxNzc4NTI1Yzg2OWNkZGUwYWI1YTFiZjI4M2NkODEiCi1TUkNfVVJJW21kNXN1bV0gPSAiZGZiNjA0NTExMTE1ZGQ0MDJhNzdhNTUzYTU5MjNhMDQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTk0N2ZjNzA1YjBiODQxYjU5MzhjNDhiMjJkYzMzZTk2NDdlYzA3NTJiYWU2NmU1MDI3OGRmNGYyM2Y2NDk1OSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS40LzAwMDEtY21kLWxkLXNldC1hbGlnbm1lbnQtZm9yLXRoZS0ucmVsLnBsdC1zZWN0aW9uLW9uLTMyLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS40LzAwMDEtY21kLWxkLXNldC1hbGlnbm1lbnQtZm9yLXRoZS0ucmVsLnBsdC1zZWN0aW9uLW9uLTMyLS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjJhZGMyMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNC8wMDAxLWNtZC1sZC1zZXQtYWxpZ25tZW50LWZvci10aGUtLnJlbC5wbHQtc2VjdGlvbi1vbi0zMi0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1Gcm9tIDg1NTE0NWQ1YzAzYzRiNGZhZjYwNzM2YzM4ZDdhMjk5YzY4MmFmNGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTaGVuZ2hvdSBNYSA8bWludXhAZ29sYW5nLm9yZz4KLURhdGU6IFNhdCwgNyBGZWIgMjAxNSAxNDowNjowMiAtMDUwMAotU3ViamVjdDogW1BBVENIXSBjbWQvbGQ6IHNldCBhbGlnbm1lbnQgZm9yIHRoZSAucmVsLnBsdCBzZWN0aW9uIG9uIDMyLWJpdAotIGFyY2hpdGVjdHVyZXMKLQotRml4ZXMgIzk4MDIuCi0KLUNoYW5nZS1JZDogSTIyYzUyYTM3YmRiMjNhMTRjYzQ2MTVjOTUxOTQzMWJiMTRjYTgxY2EKLVJldmlld2VkLW9uOiBodHRwczovL2dvLXJldmlldy5nb29nbGVzb3VyY2UuY29tLzQxNzAKLVJldmlld2VkLWJ5OiBJYW4gTGFuY2UgVGF5bG9yIDxpYW50QGdvbGFuZy5vcmc+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLSBzcmMvY21kL2xkL2VsZi5jIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvY21kL2xkL2VsZi5jIGIvc3JjL2NtZC9sZC9lbGYuYwotaW5kZXggMTJjZWQ5OC4uOTdlZDRiZCAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvbGQvZWxmLmMKLSsrKyBiL3NyYy9jbWQvbGQvZWxmLmMKLUBAIC0xMzYzLDYgKzEzNjMsNyBAQCBhc21iZWxmKHZsb25nIHN5bW8pCi0gCQkJc2gtPnR5cGUgPSBTSFRfUkVMOwotIAkJCXNoLT5mbGFncyA9IFNIRl9BTExPQzsKLSAJCQlzaC0+ZW50c2l6ZSA9IEVMRjMyUkVMU0laRTsKLSsJCQlzaC0+YWRkcmFsaWduID0gNDsKLSAJCQlzaC0+bGluayA9IGVsZnNobmFtZSgiLmR5bnN5bSIpLT5zaG51bTsKLSAJCQlzaHN5bShzaCwgbGlua2xvb2t1cChjdHh0LCAiLnJlbC5wbHQiLCAwKSk7Ci0gCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS40LzAxNi1hcm1oZi1lbGYtaGVhZGVyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjQvMDE2LWFybWhmLWVsZi1oZWFkZXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2ZTQxNGUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjQvMDE2LWFybWhmLWVsZi1oZWFkZXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1EZXNjcmlwdGlvbjogVXNlIGNvcnJlY3QgRUxGIGhlYWRlciBmb3IgYXJtaGYgYmluYXJpZXMuCi1BdXRob3I6IEFkYW0gQ29ucmFkIDxhZGNvbnJhZEB1YnVudHUuY29tPgotTGFzdC1VcGRhdGU6IDIwMTMtMDctMDgKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1JbmRleDogZ28vc3JjL2NtZC9sZC9lbGYuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdvLm9yaWcvc3JjL2NtZC9sZC9lbGYuYwkyMDE1LTAyLTIwIDEwOjQ5OjU4Ljc2MzQ1MTU4NiAtMDgwMAotKysrIGdvL3NyYy9jbWQvbGQvZWxmLmMJMjAxNS0wMi0yMCAxMDo0OToyNy44OTU0Nzg1MjEgLTA4MDAKLUBAIC01Nyw3ICs1NywxMSBAQAotIAljYXNlICc1JzoKLSAJCS8vIHdlIHVzZSBFQUJJIG9uIGJvdGggbGludXgvYXJtIGFuZCBmcmVlYnNkL2FybS4KLSAJCWlmKEhFQURUWVBFID09IEhsaW51eCB8fCBIRUFEVFlQRSA9PSBIZnJlZWJzZCkKLS0JCQloZHIuZmxhZ3MgPSAweDUwMDAwMDI7IC8vIGhhcyBlbnRyeSBwb2ludCwgVmVyc2lvbjUgRUFCSQotKyNpZmRlZiBfX0FSTV9QQ1NfVkZQCi0rCQkJaGRyLmZsYWdzID0gMHg1MDAwNDAyOyAvLyBoYXMgZW50cnkgcG9pbnQsIFZlcnNpb241IEVBQkksIGhhcmQtZmxvYXQgQUJJCi0rI2Vsc2UKLSsJCQloZHIuZmxhZ3MgPSAweDUwMDAyMDI7IC8vIGhhcyBlbnRyeSBwb2ludCwgVmVyc2lvbjUgRUFCSSwgc29mdC1mbG9hdCBBQkkKLSsjZW5kaWYKLSAJCS8vIGZhbGx0aHJvdWdoCi0gCWRlZmF1bHQ6Ci0gCQloZHIucGhvZmYgPSBFTEYzMkhEUlNJWkU7CS8qIE11c3QgYmUgYmUgRUxGMzJIRFJTSVpFOiBmaXJzdCBQSGRyIG11c3QgZm9sbG93IEVMRiBoZWFkZXIgKi8KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS40L2dvLWNyb3NzLWJhY2twb3J0LWNtZC1saW5rLXN1cHBvcnQtbmV3LTM4Ni1hbWQ2NC1yZWwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNC9nby1jcm9zcy1iYWNrcG9ydC1jbWQtbGluay1zdXBwb3J0LW5ldy0zODYtYW1kNjQtcmVsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NWNhOWQzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS40L2dvLWNyb3NzLWJhY2twb3J0LWNtZC1saW5rLXN1cHBvcnQtbmV3LTM4Ni1hbWQ2NC1yZWwucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMjUgKzAsMCBAQAotRnJvbSBkNmVlZmFkNDQ1ODMxYzE2MWZjYTEzMGY5YmRmN2IzODQ4YWFjMjNjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUdWUsIDI5IE1hciAyMDE2IDIxOjE0OjMzIC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGdvLWNyb3NzOiBiYWNrcG9ydCAiY21kL2xpbms6IHN1cHBvcnQgbmV3IDM4Ni9hbWQ2NAotIHJlbG9jYXRpb25zIgotCi1OZXdlciBiaW51dGlscyB3b24ndCBzdXBwb3J0IGJ1aWxkaW5nIG9sZGVyIGdvLTEuNC4zIGFzIHBlcjoKLQotaHR0cHM6Ly9naXRodWIuY29tL2dvbGFuZy9nby9pc3N1ZXMvMTMxMTQKLQotVXBzdHJlYW0gY29tbWl0IDkxNGRiOWYwNjBiMWZkM2ViMWY3NGQ0OGYzYmQ0NmE3M2Q0YWU5YzcgKHNlZSBzdWJqKQotd2FzIGlkZW50aWZpZWQgYXMgdGhlIGZpeCBhbmQgbm9taW5hdGVkIGZvciAxLjQuNCBidXQgdGhhdCByZWxlYXNlCi1uZXZlciBoYXBwZW5lZC4gIFRoZSBwYXRocyBpbiAxLjQuMyBhcmVuJ3QgdGhlIHNhbWUgYXMgZ28xLjZiZXRhMX42NjIKLXdoZXJlIHRoaXMgY29tbWl0IGFwcGVhcmVkLCBidXQgdGhlIE5ldEJTRCBmb2xrcyBpbmRpY2F0ZWQgd2hhdCBhCi0xLjQuMyBiYWNrcG9ydCB3b3VsZCBsb29rIGxpa2UgaGVyZTogaHR0cHM6Ly9nbmF0cy5uZXRic2Qub3JnLzUwNzc3Ci0KLVRoaXMgaXMgYmFzZWQgb24gdGhhdCwgYnV0IHdpdGhvdXQgdGhlIEJTRCB3cmFwcGVyIGluZnJhc3RydWN0dXJlCi1sYXllciB0aGF0IG1ha2VzIHRoaW5ncyBsb29rIGxpa2UgcGF0Y2hlcyBvZiBwYXRjaGVzLgotCi1TaWduZWQtb2ZmLWJ5OiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbIFBhcnRpYWwgXQotCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC82bC9hc20uYyBiL3NyYy9jbWQvNmwvYXNtLmMKLWluZGV4IDE4YjVhYTMxMTk4MS4uMmU5ZDMzOWFlZjg3IDEwMDY0NAotLS0tIGEvc3JjL2NtZC82bC9hc20uYwotKysrIGIvc3JjL2NtZC82bC9hc20uYwotQEAgLTExOCw2ICsxMTgsOCBAQCBhZGRkeW5yZWwoTFN5bSAqcywgUmVsb2MgKnIpCi0gCQlyZXR1cm47Ci0gCQotIAljYXNlIDI1NiArIFJfWDg2XzY0X0dPVFBDUkVMOgotKwljYXNlIDI1NiArIFJfWDg2XzY0X0dPVFBDUkVMWDoKLSsJY2FzZSAyNTYgKyBSX1g4Nl82NF9SRVhfR09UUENSRUxYOgotIAkJaWYodGFyZy0+dHlwZSAhPSBTRFlOSU1QT1JUKSB7Ci0gCQkJLy8gaGF2ZSBzeW1ib2wKLSAJCQlpZihyLT5vZmYgPj0gMiAmJiBzLT5wW3ItPm9mZi0yXSA9PSAweDhiKSB7Ci1kaWZmIC0tZ2l0IGEvc3JjL2NtZC84bC9hc20uYyBiL3NyYy9jbWQvOGwvYXNtLmMKLWluZGV4IDk4YzA0MjQwMzc0Zi4uY2ZmMjk0ODhlOGFmIDEwMDY0NAotLS0tIGEvc3JjL2NtZC84bC9hc20uYwotKysrIGIvc3JjL2NtZC84bC9hc20uYwotQEAgLTExNSw2ICsxMTUsNyBAQCBhZGRkeW5yZWwoTFN5bSAqcywgUmVsb2MgKnIpCi0gCQlyZXR1cm47CQkKLSAJCi0gCWNhc2UgMjU2ICsgUl8zODZfR09UMzI6Ci0rCWNhc2UgMjU2ICsgUl8zODZfR09UMzJYOgotIAkJaWYodGFyZy0+dHlwZSAhPSBTRFlOSU1QT1JUKSB7Ci0gCQkJLy8gaGF2ZSBzeW1ib2wKLSAJCQlpZihyLT5vZmYgPj0gMiAmJiBzLT5wW3ItPm9mZi0yXSA9PSAweDhiKSB7Ci1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9sZC9lbGYuaCBiL3NyYy9jbWQvbGQvZWxmLmgKLWluZGV4IGU4NGQ5OTZmMjU5Ni4uYmJmMmNmYWEzY2MwIDEwMDY0NAotLS0tIGEvc3JjL2NtZC9sZC9lbGYuaAotKysrIGIvc3JjL2NtZC9sZC9lbGYuaAotQEAgLTQ3OCwzMiArNDc4LDQ3IEBAIHR5cGVkZWYgc3RydWN0IHsKLSAgKiBSZWxvY2F0aW9uIHR5cGVzLgotICAqLwotIAotLSNkZWZpbmUJUl9YODZfNjRfTk9ORQkwCS8qIE5vIHJlbG9jYXRpb24uICovCi0tI2RlZmluZQlSX1g4Nl82NF82NAkxCS8qIEFkZCA2NCBiaXQgc3ltYm9sIHZhbHVlLiAqLwotLSNkZWZpbmUJUl9YODZfNjRfUEMzMgkyCS8qIFBDLXJlbGF0aXZlIDMyIGJpdCBzaWduZWQgc3ltIHZhbHVlLiAqLwotLSNkZWZpbmUJUl9YODZfNjRfR09UMzIJMwkvKiBQQy1yZWxhdGl2ZSAzMiBiaXQgR09UIG9mZnNldC4gKi8KLS0jZGVmaW5lCVJfWDg2XzY0X1BMVDMyCTQJLyogUEMtcmVsYXRpdmUgMzIgYml0IFBMVCBvZmZzZXQuICovCi0tI2RlZmluZQlSX1g4Nl82NF9DT1BZCTUJLyogQ29weSBkYXRhIGZyb20gc2hhcmVkIG9iamVjdC4gKi8KLS0jZGVmaW5lCVJfWDg2XzY0X0dMT0JfREFUIDYJLyogU2V0IEdPVCBlbnRyeSB0byBkYXRhIGFkZHJlc3MuICovCi0tI2RlZmluZQlSX1g4Nl82NF9KTVBfU0xPVCA3CS8qIFNldCBHT1QgZW50cnkgdG8gY29kZSBhZGRyZXNzLiAqLwotLSNkZWZpbmUJUl9YODZfNjRfUkVMQVRJVkUgOAkvKiBBZGQgbG9hZCBhZGRyZXNzIG9mIHNoYXJlZCBvYmplY3QuICovCi0tI2RlZmluZQlSX1g4Nl82NF9HT1RQQ1JFTCA5CS8qIEFkZCAzMiBiaXQgc2lnbmVkIHBjcmVsIG9mZnNldCB0byBHT1QuICovCi0tI2RlZmluZQlSX1g4Nl82NF8zMgkxMAkvKiBBZGQgMzIgYml0IHplcm8gZXh0ZW5kZWQgc3ltYm9sIHZhbHVlICovCi0tI2RlZmluZQlSX1g4Nl82NF8zMlMJMTEJLyogQWRkIDMyIGJpdCBzaWduIGV4dGVuZGVkIHN5bWJvbCB2YWx1ZSAqLwotLSNkZWZpbmUJUl9YODZfNjRfMTYJMTIJLyogQWRkIDE2IGJpdCB6ZXJvIGV4dGVuZGVkIHN5bWJvbCB2YWx1ZSAqLwotLSNkZWZpbmUJUl9YODZfNjRfUEMxNgkxMwkvKiBBZGQgMTYgYml0IHNpZ25lZCBleHRlbmRlZCBwYyByZWxhdGl2ZSBzeW1ib2wgdmFsdWUgKi8KLS0jZGVmaW5lCVJfWDg2XzY0XzgJMTQJLyogQWRkIDggYml0IHplcm8gZXh0ZW5kZWQgc3ltYm9sIHZhbHVlICovCi0tI2RlZmluZQlSX1g4Nl82NF9QQzgJMTUJLyogQWRkIDggYml0IHNpZ25lZCBleHRlbmRlZCBwYyByZWxhdGl2ZSBzeW1ib2wgdmFsdWUgKi8KLS0jZGVmaW5lCVJfWDg2XzY0X0RUUE1PRDY0IDE2CS8qIElEIG9mIG1vZHVsZSBjb250YWluaW5nIHN5bWJvbCAqLwotLSNkZWZpbmUJUl9YODZfNjRfRFRQT0ZGNjQgMTcJLyogT2Zmc2V0IGluIFRMUyBibG9jayAqLwotLSNkZWZpbmUJUl9YODZfNjRfVFBPRkY2NCAxOAkvKiBPZmZzZXQgaW4gc3RhdGljIFRMUyBibG9jayAqLwotLSNkZWZpbmUJUl9YODZfNjRfVExTR0QJMTkJLyogUEMgcmVsYXRpdmUgb2Zmc2V0IHRvIEdEIEdPVCBlbnRyeSAqLwotLSNkZWZpbmUJUl9YODZfNjRfVExTTEQJMjAJLyogUEMgcmVsYXRpdmUgb2Zmc2V0IHRvIExEIEdPVCBlbnRyeSAqLwotLSNkZWZpbmUJUl9YODZfNjRfRFRQT0ZGMzIgMjEJLyogT2Zmc2V0IGluIFRMUyBibG9jayAqLwotLSNkZWZpbmUJUl9YODZfNjRfR09UVFBPRkYgMjIJLyogUEMgcmVsYXRpdmUgb2Zmc2V0IHRvIElFIEdPVCBlbnRyeSAqLwotLSNkZWZpbmUJUl9YODZfNjRfVFBPRkYzMiAyMwkvKiBPZmZzZXQgaW4gc3RhdGljIFRMUyBibG9jayAqLwotLQotLSNkZWZpbmUJUl9YODZfNjRfQ09VTlQJMjQJLyogQ291bnQgb2YgZGVmaW5lZCByZWxvY2F0aW9uIHR5cGVzLiAqLwotKyNkZWZpbmUJUl9YODZfNjRfTk9ORSAgICAgICAgICAgMAotKyNkZWZpbmUJUl9YODZfNjRfNjQgICAgICAgICAgICAgMQotKyNkZWZpbmUJUl9YODZfNjRfUEMzMiAgICAgICAgICAgMgotKyNkZWZpbmUJUl9YODZfNjRfR09UMzIgICAgICAgICAgMwotKyNkZWZpbmUJUl9YODZfNjRfUExUMzIgICAgICAgICAgNAotKyNkZWZpbmUJUl9YODZfNjRfQ09QWSAgICAgICAgICAgNQotKyNkZWZpbmUJUl9YODZfNjRfR0xPQl9EQVQgICAgICAgNgotKyNkZWZpbmUJUl9YODZfNjRfSk1QX1NMT1QgICAgICAgNwotKyNkZWZpbmUJUl9YODZfNjRfUkVMQVRJVkUgICAgICAgOAotKyNkZWZpbmUJUl9YODZfNjRfR09UUENSRUwgICAgICAgOQotKyNkZWZpbmUJUl9YODZfNjRfMzIgICAgICAgICAgICAgMTAKLSsjZGVmaW5lCVJfWDg2XzY0XzMyUyAgICAgICAgICAgIDExCi0rI2RlZmluZQlSX1g4Nl82NF8xNiAgICAgICAgICAgICAxMgotKyNkZWZpbmUJUl9YODZfNjRfUEMxNiAgICAgICAgICAgMTMKLSsjZGVmaW5lCVJfWDg2XzY0XzggICAgICAgICAgICAgIDE0Ci0rI2RlZmluZQlSX1g4Nl82NF9QQzggICAgICAgICAgICAxNQotKyNkZWZpbmUJUl9YODZfNjRfRFRQTU9ENjQgICAgICAgMTYKLSsjZGVmaW5lCVJfWDg2XzY0X0RUUE9GRjY0ICAgICAgIDE3Ci0rI2RlZmluZQlSX1g4Nl82NF9UUE9GRjY0ICAgICAgICAxOAotKyNkZWZpbmUJUl9YODZfNjRfVExTR0QgICAgICAgICAgMTkKLSsjZGVmaW5lCVJfWDg2XzY0X1RMU0xEICAgICAgICAgIDIwCi0rI2RlZmluZQlSX1g4Nl82NF9EVFBPRkYzMiAgICAgICAyMQotKyNkZWZpbmUJUl9YODZfNjRfR09UVFBPRkYgICAgICAgMjIKLSsjZGVmaW5lCVJfWDg2XzY0X1RQT0ZGMzIgICAgICAgIDIzCi0rI2RlZmluZQlSX1g4Nl82NF9QQzY0ICAgICAgICAgICAyNAotKyNkZWZpbmUJUl9YODZfNjRfR09UT0ZGNjQgICAgICAgMjUKLSsjZGVmaW5lCVJfWDg2XzY0X0dPVFBDMzIgICAgICAgIDI2Ci0rI2RlZmluZQlSX1g4Nl82NF9HT1Q2NCAgICAgICAgICAyNwotKyNkZWZpbmUJUl9YODZfNjRfR09UUENSRUw2NCAgICAgMjgKLSsjZGVmaW5lCVJfWDg2XzY0X0dPVFBDNjQgICAgICAgIDI5Ci0rI2RlZmluZQlSX1g4Nl82NF9HT1RQTFQ2NCAgICAgICAzMAotKyNkZWZpbmUJUl9YODZfNjRfUExUT0ZGNjQgICAgICAgMzEKLSsjZGVmaW5lCVJfWDg2XzY0X1NJWkUzMiAgICAgICAgIDMyCi0rI2RlZmluZQlSX1g4Nl82NF9TSVpFNjQgICAgICAgICAzMwotKyNkZWZpbmUJUl9YODZfNjRfR09UUEMzMl9UTFNERUMgMzQKLSsjZGVmaW5lCVJfWDg2XzY0X1RMU0RFU0NfQ0FMTCAgIDM1Ci0rI2RlZmluZQlSX1g4Nl82NF9UTFNERVNDICAgICAgICAzNgotKyNkZWZpbmUJUl9YODZfNjRfSVJFTEFUSVZFICAgICAgMzcKLSsjZGVmaW5lCVJfWDg2XzY0X1BDMzJfQk5EICAgICAgIDQwCi0rI2RlZmluZQlSX1g4Nl82NF9HT1RQQ1JFTFggICAgICA0MQotKyNkZWZpbmUJUl9YODZfNjRfUkVYX0dPVFBDUkVMWCAgNDIKLSAKLSAKLSAjZGVmaW5lCVJfQUxQSEFfTk9ORQkJMAkvKiBObyByZWxvYyAqLwotQEAgLTU4MSwzOSArNTk2LDQyIEBAIHR5cGVkZWYgc3RydWN0IHsKLSAjZGVmaW5lCVJfQVJNX0NPVU5UCQkzOAkvKiBDb3VudCBvZiBkZWZpbmVkIHJlbG9jYXRpb24gdHlwZXMuICovCi0gCi0gCi0tI2RlZmluZQlSXzM4Nl9OT05FCTAJLyogTm8gcmVsb2NhdGlvbi4gKi8KLS0jZGVmaW5lCVJfMzg2XzMyCTEJLyogQWRkIHN5bWJvbCB2YWx1ZS4gKi8KLS0jZGVmaW5lCVJfMzg2X1BDMzIJMgkvKiBBZGQgUEMtcmVsYXRpdmUgc3ltYm9sIHZhbHVlLiAqLwotLSNkZWZpbmUJUl8zODZfR09UMzIJMwkvKiBBZGQgUEMtcmVsYXRpdmUgR09UIG9mZnNldC4gKi8KLS0jZGVmaW5lCVJfMzg2X1BMVDMyCTQJLyogQWRkIFBDLXJlbGF0aXZlIFBMVCBvZmZzZXQuICovCi0tI2RlZmluZQlSXzM4Nl9DT1BZCTUJLyogQ29weSBkYXRhIGZyb20gc2hhcmVkIG9iamVjdC4gKi8KLS0jZGVmaW5lCVJfMzg2X0dMT0JfREFUCTYJLyogU2V0IEdPVCBlbnRyeSB0byBkYXRhIGFkZHJlc3MuICovCi0tI2RlZmluZQlSXzM4Nl9KTVBfU0xPVAk3CS8qIFNldCBHT1QgZW50cnkgdG8gY29kZSBhZGRyZXNzLiAqLwotLSNkZWZpbmUJUl8zODZfUkVMQVRJVkUJOAkvKiBBZGQgbG9hZCBhZGRyZXNzIG9mIHNoYXJlZCBvYmplY3QuICovCi0tI2RlZmluZQlSXzM4Nl9HT1RPRkYJOQkvKiBBZGQgR09ULXJlbGF0aXZlIHN5bWJvbCBhZGRyZXNzLiAqLwotLSNkZWZpbmUJUl8zODZfR09UUEMJMTAJLyogQWRkIFBDLXJlbGF0aXZlIEdPVCB0YWJsZSBhZGRyZXNzLiAqLwotLSNkZWZpbmUJUl8zODZfVExTX1RQT0ZGCTE0CS8qIE5lZ2F0aXZlIG9mZnNldCBpbiBzdGF0aWMgVExTIGJsb2NrICovCi0tI2RlZmluZQlSXzM4Nl9UTFNfSUUJMTUJLyogQWJzb2x1dGUgYWRkcmVzcyBvZiBHT1QgZm9yIC12ZSBzdGF0aWMgVExTICovCi0tI2RlZmluZQlSXzM4Nl9UTFNfR09USUUJMTYJLyogR09UIGVudHJ5IGZvciBuZWdhdGl2ZSBzdGF0aWMgVExTIGJsb2NrICovCi0tI2RlZmluZQlSXzM4Nl9UTFNfTEUJMTcJLyogTmVnYXRpdmUgb2Zmc2V0IHJlbGF0aXZlIHRvIHN0YXRpYyBUTFMgKi8KLS0jZGVmaW5lCVJfMzg2X1RMU19HRAkxOAkvKiAzMiBiaXQgb2Zmc2V0IHRvIEdPVCAoaW5kZXgsb2ZmKSBwYWlyICovCi0tI2RlZmluZQlSXzM4Nl9UTFNfTERNCTE5CS8qIDMyIGJpdCBvZmZzZXQgdG8gR09UIChpbmRleCx6ZXJvKSBwYWlyICovCi0tI2RlZmluZQlSXzM4Nl9UTFNfR0RfMzIJMjQJLyogMzIgYml0IG9mZnNldCB0byBHT1QgKGluZGV4LG9mZikgcGFpciAqLwotLSNkZWZpbmUJUl8zODZfVExTX0dEX1BVU0ggMjUJLyogcHVzaGwgaW5zdHJ1Y3Rpb24gZm9yIFN1biBBQkkgR0Qgc2VxdWVuY2UgKi8KLS0jZGVmaW5lCVJfMzg2X1RMU19HRF9DQUxMIDI2CS8qIGNhbGwgaW5zdHJ1Y3Rpb24gZm9yIFN1biBBQkkgR0Qgc2VxdWVuY2UgKi8KLS0jZGVmaW5lCVJfMzg2X1RMU19HRF9QT1AgMjcJLyogcG9wbCBpbnN0cnVjdGlvbiBmb3IgU3VuIEFCSSBHRCBzZXF1ZW5jZSAqLwotLSNkZWZpbmUJUl8zODZfVExTX0xETV8zMiAyOAkvKiAzMiBiaXQgb2Zmc2V0IHRvIEdPVCAoaW5kZXgsemVybykgcGFpciAqLwotLSNkZWZpbmUJUl8zODZfVExTX0xETV9QVVNIIDI5CS8qIHB1c2hsIGluc3RydWN0aW9uIGZvciBTdW4gQUJJIExEIHNlcXVlbmNlICovCi0tI2RlZmluZQlSXzM4Nl9UTFNfTERNX0NBTEwgMzAJLyogY2FsbCBpbnN0cnVjdGlvbiBmb3IgU3VuIEFCSSBMRCBzZXF1ZW5jZSAqLwotLSNkZWZpbmUJUl8zODZfVExTX0xETV9QT1AgMzEJLyogcG9wbCBpbnN0cnVjdGlvbiBmb3IgU3VuIEFCSSBMRCBzZXF1ZW5jZSAqLwotLSNkZWZpbmUJUl8zODZfVExTX0xET18zMiAzMgkvKiAzMiBiaXQgb2Zmc2V0IGZyb20gc3RhcnQgb2YgVExTIGJsb2NrICovCi0tI2RlZmluZQlSXzM4Nl9UTFNfSUVfMzIJMzMJLyogMzIgYml0IG9mZnNldCB0byBHT1Qgc3RhdGljIFRMUyBvZmZzZXQgZW50cnkgKi8KLS0jZGVmaW5lCVJfMzg2X1RMU19MRV8zMgkzNAkvKiAzMiBiaXQgb2Zmc2V0IHdpdGhpbiBzdGF0aWMgVExTIGJsb2NrICovCi0tI2RlZmluZQlSXzM4Nl9UTFNfRFRQTU9EMzIgMzUJLyogR09UIGVudHJ5IGNvbnRhaW5pbmcgVExTIGluZGV4ICovCi0tI2RlZmluZQlSXzM4Nl9UTFNfRFRQT0ZGMzIgMzYJLyogR09UIGVudHJ5IGNvbnRhaW5pbmcgVExTIG9mZnNldCAqLwotLSNkZWZpbmUJUl8zODZfVExTX1RQT0ZGMzIgMzcJLyogR09UIGVudHJ5IG9mIC12ZSBzdGF0aWMgVExTIG9mZnNldCAqLwotLQotLSNkZWZpbmUJUl8zODZfQ09VTlQJMzgJLyogQ291bnQgb2YgZGVmaW5lZCByZWxvY2F0aW9uIHR5cGVzLiAqLwotKyNkZWZpbmUJUl8zODZfTk9ORSAgICAgICAgICAwCi0rI2RlZmluZQlSXzM4Nl8zMiAgICAgICAgICAgIDEKLSsjZGVmaW5lCVJfMzg2X1BDMzIgICAgICAgICAgMgotKyNkZWZpbmUJUl8zODZfR09UMzIgICAgICAgICAzCi0rI2RlZmluZQlSXzM4Nl9QTFQzMiAgICAgICAgIDQKLSsjZGVmaW5lCVJfMzg2X0NPUFkgICAgICAgICAgNQotKyNkZWZpbmUJUl8zODZfR0xPQl9EQVQgICAgICA2Ci0rI2RlZmluZQlSXzM4Nl9KTVBfU0xPVCAgICAgIDcKLSsjZGVmaW5lCVJfMzg2X1JFTEFUSVZFICAgICAgOAotKyNkZWZpbmUJUl8zODZfR09UT0ZGICAgICAgICA5Ci0rI2RlZmluZQlSXzM4Nl9HT1RQQyAgICAgICAgIDEwCi0rI2RlZmluZQlSXzM4Nl9UTFNfVFBPRkYgICAgIDE0Ci0rI2RlZmluZQlSXzM4Nl9UTFNfSUUgICAgICAgIDE1Ci0rI2RlZmluZQlSXzM4Nl9UTFNfR09USUUgICAgIDE2Ci0rI2RlZmluZQlSXzM4Nl9UTFNfTEUgICAgICAgIDE3Ci0rI2RlZmluZQlSXzM4Nl9UTFNfR0QgICAgICAgIDE4Ci0rI2RlZmluZQlSXzM4Nl9UTFNfTERNICAgICAgIDE5Ci0rI2RlZmluZQlSXzM4Nl9UTFNfR0RfMzIgICAgIDI0Ci0rI2RlZmluZQlSXzM4Nl9UTFNfR0RfUFVTSCAgIDI1Ci0rI2RlZmluZQlSXzM4Nl9UTFNfR0RfQ0FMTCAgIDI2Ci0rI2RlZmluZQlSXzM4Nl9UTFNfR0RfUE9QICAgIDI3Ci0rI2RlZmluZQlSXzM4Nl9UTFNfTERNXzMyICAgIDI4Ci0rI2RlZmluZQlSXzM4Nl9UTFNfTERNX1BVU0ggIDI5Ci0rI2RlZmluZQlSXzM4Nl9UTFNfTERNX0NBTEwgIDMwCi0rI2RlZmluZQlSXzM4Nl9UTFNfTERNX1BPUCAgIDMxCi0rI2RlZmluZQlSXzM4Nl9UTFNfTERPXzMyICAgIDMyCi0rI2RlZmluZQlSXzM4Nl9UTFNfSUVfMzIgICAgIDMzCi0rI2RlZmluZQlSXzM4Nl9UTFNfTEVfMzIgICAgIDM0Ci0rI2RlZmluZQlSXzM4Nl9UTFNfRFRQTU9EMzIgIDM1Ci0rI2RlZmluZQlSXzM4Nl9UTFNfRFRQT0ZGMzIgIDM2Ci0rI2RlZmluZQlSXzM4Nl9UTFNfVFBPRkYzMiAgIDM3Ci0rI2RlZmluZQlSXzM4Nl9UTFNfR09UREVTQyAgIDM5Ci0rI2RlZmluZQlSXzM4Nl9UTFNfREVTQ19DQUxMIDQwCi0rI2RlZmluZQlSXzM4Nl9UTFNfREVTQyAgICAgIDQxCi0rI2RlZmluZQlSXzM4Nl9JUkVMQVRJVkUgICAgIDQyCi0rI2RlZmluZQlSXzM4Nl9HT1QzMlggICAgICAgIDQzCi0gCi0gI2RlZmluZQlSX1BQQ19OT05FCQkwCS8qIE5vIHJlbG9jYXRpb24uICovCi0gI2RlZmluZQlSX1BQQ19BRERSMzIJCTEKLWRpZmYgLS1naXQgYS9zcmMvY21kL2xkL2xkZWxmLmMgYi9zcmMvY21kL2xkL2xkZWxmLmMKLWluZGV4IGRkNWZhMGQyYTgzOS4uMmUyZmJkMTczNzdmIDEwMDY0NAotLS0tIGEvc3JjL2NtZC9sZC9sZGVsZi5jCi0rKysgYi9zcmMvY21kL2xkL2xkZWxmLmMKLUBAIC04ODgsMTIgKzg4OCwxNSBAQCByZWx0eXBlKGNoYXIgKnBuLCBpbnQgZWxmdHlwZSwgdWNoYXIgKnNpeikKLSAJY2FzZSBSKCc2JywgUl9YODZfNjRfUEMzMik6Ci0gCWNhc2UgUignNicsIFJfWDg2XzY0X1BMVDMyKToKLSAJY2FzZSBSKCc2JywgUl9YODZfNjRfR09UUENSRUwpOgotKwljYXNlIFIoJzYnLCBSX1g4Nl82NF9HT1RQQ1JFTFgpOgotKwljYXNlIFIoJzYnLCBSX1g4Nl82NF9SRVhfR09UUENSRUxYKToKLSAJY2FzZSBSKCc4JywgUl8zODZfMzIpOgotIAljYXNlIFIoJzgnLCBSXzM4Nl9QQzMyKToKLSAJY2FzZSBSKCc4JywgUl8zODZfR09UMzIpOgotIAljYXNlIFIoJzgnLCBSXzM4Nl9QTFQzMik6Ci0gCWNhc2UgUignOCcsIFJfMzg2X0dPVE9GRik6Ci0gCWNhc2UgUignOCcsIFJfMzg2X0dPVFBDKToKLSsJY2FzZSBSKCc4JywgUl8zODZfR09UMzJYKToKLSAJCSpzaXogPSA0OwotIAkJYnJlYWs7Ci0gCWNhc2UgUignNicsIFJfWDg2XzY0XzY0KToKLS0tIAotMi43LjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjQvc3lzbG9nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjQvc3lzbG9nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOWJlMDZmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS40L3N5c2xvZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLUFkZCB0aW1lb3V0cyB0byBsb2dnZXIKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1kaWZmIC1yIC11IGdvL3NyYy9sb2cvc3lzbG9nL3N5c2xvZy5nbyAvaG9tZS9hY2hhbmcvR09DT1BZL2dvL3NyYy9sb2cvc3lzbG9nL3N5c2xvZy5nbwotLS0tIGdvL3NyYy9sb2cvc3lzbG9nL3N5c2xvZy5nbwkyMDEzLTExLTI4IDEzOjM4OjI4LjAwMDAwMDAwMCAtMDgwMAotKysrIC9ob21lL2FjaGFuZy9HT0NPUFkvZ28vc3JjL2xvZy9zeXNsb2cvc3lzbG9nLmdvCTIwMTQtMTAtMDMgMTE6NDQ6MzcuNzEwNDAzMjAwIC0wNzAwCi1AQCAtMzMsNiArMzMsOSBAQAotIGNvbnN0IHNldmVyaXR5TWFzayA9IDB4MDcKLSBjb25zdCBmYWNpbGl0eU1hc2sgPSAweGY4Ci0gCi0rdmFyIHdyaXRlVGltZW91dCA9IDEgKiB0aW1lLlNlY29uZAotK3ZhciBjb25uZWN0VGltZW91dCA9IDEgKiB0aW1lLlNlY29uZAotKwotIGNvbnN0ICgKLSAJLy8gU2V2ZXJpdHkuCi0gCi1AQCAtMTAwLDYgKzEwMyw3IEBACi0gdHlwZSBzZXJ2ZXJDb25uIGludGVyZmFjZSB7Ci0gCXdyaXRlU3RyaW5nKHAgUHJpb3JpdHksIGhvc3RuYW1lLCB0YWcsIHMsIG5sIHN0cmluZykgZXJyb3IKLSAJY2xvc2UoKSBlcnJvcgotKwlzZXRXcml0ZURlYWRsaW5lKHQgdGltZS5UaW1lKSBlcnJvcgotIH0KLSAKLSB0eXBlIG5ldENvbm4gc3RydWN0IHsKLUBAIC0yNzMsNyArMjc3LDExIEBACi0gCQlubCA9ICJcbiIKLSAJfQotIAotLQllcnIgOj0gdy5jb25uLndyaXRlU3RyaW5nKHAsIHcuaG9zdG5hbWUsIHcudGFnLCBtc2csIG5sKQotKwllcnIgOj0gdy5jb25uLnNldFdyaXRlRGVhZGxpbmUodGltZS5Ob3coKS5BZGQod3JpdGVUaW1lb3V0KSkKLSsJaWYgZXJyICE9IG5pbCB7Ci0rCQlyZXR1cm4gMCwgZXJyCi0rCX0KLSsJZXJyID0gdy5jb25uLndyaXRlU3RyaW5nKHAsIHcuaG9zdG5hbWUsIHcudGFnLCBtc2csIG5sKQotIAlpZiBlcnIgIT0gbmlsIHsKLSAJCXJldHVybiAwLCBlcnIKLSAJfQotQEAgLTMwNSw2ICszMTMsMTAgQEAKLSAJcmV0dXJuIG4uY29ubi5DbG9zZSgpCi0gfQotIAotK2Z1bmMgKG4gKm5ldENvbm4pIHNldFdyaXRlRGVhZGxpbmUodCB0aW1lLlRpbWUpIGVycm9yIHsKLSsJcmV0dXJuIG4uY29ubi5TZXRXcml0ZURlYWRsaW5lKHQpCi0rfQotKwotIC8vIE5ld0xvZ2dlciBjcmVhdGVzIGEgbG9nLkxvZ2dlciB3aG9zZSBvdXRwdXQgaXMgd3JpdHRlbiB0bwotIC8vIHRoZSBzeXN0ZW0gbG9nIHNlcnZpY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIHByaW9yaXR5LiBUaGUgbG9nRmxhZwotIC8vIGFyZ3VtZW50IGlzIHRoZSBmbGFnIHNldCBwYXNzZWQgdGhyb3VnaCB0byBsb2cuTmV3IHRvIGNyZWF0ZQotZGlmZiAtciAtdSBnby9zcmMvbG9nL3N5c2xvZy9zeXNsb2dfdW5peC5nbyAvaG9tZS9hY2hhbmcvR09DT1BZL2dvL3NyYy9sb2cvc3lzbG9nL3N5c2xvZ191bml4LmdvCi0tLS0gZ28vc3JjL2xvZy9zeXNsb2cvc3lzbG9nX3VuaXguZ28JMjAxMy0xMS0yOCAxMzozODoyOC4wMDAwMDAwMDAgLTA4MDAKLSsrKyAvaG9tZS9hY2hhbmcvR09DT1BZL2dvL3NyYy9sb2cvc3lzbG9nL3N5c2xvZ191bml4LmdvCTIwMTQtMTAtMDMgMTE6NDQ6MzkuMDEwNDAzMTc1IC0wNzAwCi1AQCAtMTksNyArMTksNyBAQAotIAlsb2dQYXRocyA6PSBbXXN0cmluZ3siL2Rldi9sb2ciLCAiL3Zhci9ydW4vc3lzbG9nIn0KLSAJZm9yIF8sIG5ldHdvcmsgOj0gcmFuZ2UgbG9nVHlwZXMgewotIAkJZm9yIF8sIHBhdGggOj0gcmFuZ2UgbG9nUGF0aHMgewotLQkJCWNvbm4sIGVyciA6PSBuZXQuRGlhbChuZXR3b3JrLCBwYXRoKQotKwkJCWNvbm4sIGVyciA6PSBuZXQuRGlhbFRpbWVvdXQobmV0d29yaywgcGF0aCwgY29ubmVjdFRpbWVvdXQpCi0gCQkJaWYgZXJyICE9IG5pbCB7Ci0gCQkJCWNvbnRpbnVlCi0gCQkJfSBlbHNlIHsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS42LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS42LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzY5YzFkOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNi5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1yZXF1aXJlIGdvLWNvbW1vbi5pbmMKLQotUFYgPSAiMS42LjMiCi1HT19CQVNFVkVSU0lPTiA9ICIxLjYiCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtGSUxFX0RJUk5BTUV9L2dvLSR7R09fQkFTRVZFUlNJT059OiIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NTkxNzc4NTI1Yzg2OWNkZGUwYWI1YTFiZjI4M2NkODEiCi0KLVNSQ19VUkkgKz0gIlwKLSAgICAgICBmaWxlOi8vYXJtaGYtZWxmLWhlYWRlci5wYXRjaCBcCi0gICAgICAgZmlsZTovL3N5c2xvZy5wYXRjaCBcCi0gICAgICAgZmlsZTovL2ZpeC10YXJnZXQtY2MtZm9yLWJ1aWxkLnBhdGNoIFwKLSAgICAgICBmaWxlOi8vZml4LWNjLWhhbmRsaW5nLnBhdGNoIFwKLSAgICAgICBmaWxlOi8vc3BsaXQtaG9zdC1hbmQtdGFyZ2V0LWJ1aWxkLnBhdGNoIFwKLSAgICAgICBmaWxlOi8vZ290b29sZGlyLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICJiZjNmY2U2Y2NhYWRkMzEwMTU5YzllODc0MjIwZTJhMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2MzI2YWVlZDVmODZjZjE4ZjE2ZDZkYzgzMTQwNTYxNGY4NTVlMmQ0MTZhOTFmZDNmZGMzMzRmNzcyMzQ1YjAwIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNi9hcm1oZi1lbGYtaGVhZGVyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjYvYXJtaGYtZWxmLWhlYWRlci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWUzYTE2Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNi9hcm1oZi1lbGYtaGVhZGVyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotRW5jb2RlIGFybSBFQUJJICggaGFyZC9zb2Z0ICkgY2FsbGluZyBjb252ZW50aW9uIGluIEVMRiBoZWFkZXIKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotSW5kZXg6IGdvL3NyYy9jbWQvbGluay9pbnRlcm5hbC9sZC9lbGYuZ28KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnby5vcmlnL3NyYy9jbWQvbGluay9pbnRlcm5hbC9sZC9lbGYuZ28KLSsrKyBnby9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbGQvZWxmLmdvCi1AQCAtODI3LDcgKzgyNywxMyBAQAotIAkvLyAzMi1iaXQgYXJjaGl0ZWN0dXJlcwotIAljYXNlICc1JzoKLSAJCS8vIHdlIHVzZSBFQUJJIG9uIGJvdGggbGludXgvYXJtIGFuZCBmcmVlYnNkL2FybS4KLS0JCWlmIEhFQURUWVBFID09IG9iai5IbGludXggfHwgSEVBRFRZUEUgPT0gb2JqLkhmcmVlYnNkIHsKLSsJCWlmIEhFQURUWVBFID09IG9iai5IbGludXggewotKwkJCWlmIEN0eHQuR29hcm0gPT0gNyB7Ci0rCQkJCWVoZHIuZmxhZ3MgPSAweDUwMDA0MDIgLy8gaGFzIGVudHJ5IHBvaW50LCBWZXJzaW9uNSBFQUJJLCBoYXJkIGZsb2F0Ci0rCQkJfSBlbHNlIHsKLSsJCQkJZWhkci5mbGFncyA9IDB4NTAwMDIwMiAvLyBoYXMgZW50cnkgcG9pbnQsIFZlcnNpb241IEVBQkksIHNvZnQgZmxvYXQKLSsJCQl9Ci0rCQl9IGVsc2UgaWYgSEVBRFRZUEUgPT0gb2JqLkhmcmVlYnNkIHsKLSAJCQkvLyBXZSBzZXQgYSB2YWx1ZSBoZXJlIHRoYXQgbWFrZXMgbm8gaW5kaWNhdGlvbiBvZiB3aGljaAotIAkJCS8vIGZsb2F0IEFCSSB0aGUgb2JqZWN0IHVzZXMsIGJlY2F1c2UgdGhpcyBpcyBpbmZvcm1hdGlvbgotIAkJCS8vIHVzZWQgYnkgdGhlIGR5bmFtaWMgbGlua2VyIHRvIGNvbXBhcmUgZXhlY3V0YWJsZXMgYW5kCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNi9maXgtY2MtaGFuZGxpbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNi9maXgtY2MtaGFuZGxpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4MzMyM2EuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjYvZml4LWNjLWhhbmRsaW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotQWNjZXB0IENDIHdpdGggbXVsdGlwbGUgd29yZHMgaW4gaXRzIG5hbWUKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotSW5kZXg6IGdvL3NyYy9jbWQvZ28vYnVpbGQuZ28KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnby5vcmlnL3NyYy9jbWQvZ28vYnVpbGQuZ28JMjAxNS0wNy0yOSAxNDo0ODo0MC4zMjMxODU4MDcgLTA3MDAKLSsrKyBnby9zcmMvY21kL2dvL2J1aWxkLmdvCTIwMTUtMDctMzAgMDc6Mzc6NDAuNTI5ODE4NTg2IC0wNzAwCi1AQCAtMjgwNSwxMiArMjgwNSwyNCBAQAotIAlyZXR1cm4gYi5jY29tcGlsZXJDbWQoIkNDIiwgZGVmYXVsdENDLCBvYmpkaXIpCi0gfQotIAotKy8vIGdjY0NtZCByZXR1cm5zIGEgZ2NjIGNvbW1hbmQgbGluZSBwcmVmaXgKLSsvLyBkZWZhdWx0Q0MgaXMgZGVmaW5lZCBpbiB6ZGVmYXVsdGNjLmdvLCB3cml0dGVuIGJ5IGNtZC9kaXN0LgotK2Z1bmMgKGIgKmJ1aWxkZXIpIGdjY0NtZEZvclJlYWwoKSBbXXN0cmluZyB7Ci0rCXJldHVybiBlbnZMaXN0KCJDQyIsIGRlZmF1bHRDQykKLSt9Ci0rCi0gLy8gZ3h4Q21kIHJldHVybnMgYSBnKysgY29tbWFuZCBsaW5lIHByZWZpeAotIC8vIGRlZmF1bHRDWFggaXMgZGVmaW5lZCBpbiB6ZGVmYXVsdGNjLmdvLCB3cml0dGVuIGJ5IGNtZC9kaXN0LgotIGZ1bmMgKGIgKmJ1aWxkZXIpIGd4eENtZChvYmpkaXIgc3RyaW5nKSBbXXN0cmluZyB7Ci0gCXJldHVybiBiLmNjb21waWxlckNtZCgiQ1hYIiwgZGVmYXVsdENYWCwgb2JqZGlyKQotIH0KLSAKLSsvLyBneHhDbWQgcmV0dXJucyBhIGcrKyBjb21tYW5kIGxpbmUgcHJlZml4Ci0rLy8gZGVmYXVsdENYWCBpcyBkZWZpbmVkIGluIHpkZWZhdWx0Y2MuZ28sIHdyaXR0ZW4gYnkgY21kL2Rpc3QuCi0rZnVuYyAoYiAqYnVpbGRlcikgZ3h4Q21kRm9yUmVhbCgpIFtdc3RyaW5nIHsKLSsJcmV0dXJuIGVudkxpc3QoIkNYWCIsIGRlZmF1bHRDWFgpCi0rfQotKwotIC8vIGNjb21waWxlckNtZCByZXR1cm5zIGEgY29tbWFuZCBsaW5lIHByZWZpeCBmb3IgdGhlIGdpdmVuIGVudmlyb25tZW50Ci0gLy8gdmFyaWFibGUgYW5kIHVzaW5nIHRoZSBkZWZhdWx0IGNvbW1hbmQgd2hlbiB0aGUgdmFyaWFibGUgaXMgZW1wdHkuCi0gZnVuYyAoYiAqYnVpbGRlcikgY2NvbXBpbGVyQ21kKGVudnZhciwgZGVmY21kLCBvYmpkaXIgc3RyaW5nKSBbXXN0cmluZyB7Ci1JbmRleDogZ28vc3JjL2NtZC9nby9lbnYuZ28KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnby5vcmlnL3NyYy9jbWQvZ28vZW52LmdvCTIwMTUtMDctMjkgMTQ6NDg6NDAuMzIzMTg1ODA3IC0wNzAwCi0rKysgZ28vc3JjL2NtZC9nby9lbnYuZ28JMjAxNS0wNy0zMCAwNzo0MDo1NC40NjE2NTU3MjEgLTA3MDAKLUBAIC01MiwxMCArNTIsOSBAQAotIAotIAlpZiBnb29zICE9ICJwbGFuOSIgewotIAkJY21kIDo9IGIuZ2NjQ21kKCIuIikKLS0JCWVudiA9IGFwcGVuZChlbnYsIGVudlZhcnsiQ0MiLCBjbWRbMF19KQotKwkJZW52ID0gYXBwZW5kKGVudiwgZW52VmFyeyJDQyIsIHN0cmluZ3MuSm9pbihiLmdjY0NtZEZvclJlYWwoKSwgIiAiKX0pCi0gCQllbnYgPSBhcHBlbmQoZW52LCBlbnZWYXJ7IkdPR0NDRkxBR1MiLCBzdHJpbmdzLkpvaW4oY21kWzM6XSwgIiAiKX0pCi0tCQljbWQgPSBiLmd4eENtZCgiLiIpCi0tCQllbnYgPSBhcHBlbmQoZW52LCBlbnZWYXJ7IkNYWCIsIGNtZFswXX0pCi0rCQllbnYgPSBhcHBlbmQoZW52LCBlbnZWYXJ7IkNYWCIsIHN0cmluZ3MuSm9pbihiLmd4eENtZEZvclJlYWwoKSwgIiAiKX0pCi0gCX0KLSAKLSAJaWYgYnVpbGRDb250ZXh0LkNnb0VuYWJsZWQgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjYvZml4LXRhcmdldC1jYy1mb3ItYnVpbGQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNi9maXgtdGFyZ2V0LWNjLWZvci1idWlsZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmY2MTU2ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNi9maXgtdGFyZ2V0LWNjLWZvci1idWlsZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVB1dCBRdW90ZXMgYXJvdW5kIENDX0ZPUl9UQVJHRVQgc2luY2UgaXQgY2FuIGJlIG11dGxpcGxlIHdvcmRzIGUuZy4gaW4gT0UKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotSW5kZXg6IGdvL3NyYy9tYWtlLmJhc2gKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnby5vcmlnL3NyYy9tYWtlLmJhc2gJMjAxNS0wNy0yOSAxMzoyODoxMS4zMzQwMzE2OTYgLTA3MDAKLSsrKyBnby9zcmMvbWFrZS5iYXNoCTIwMTUtMDctMjkgMTM6MzY6NTUuODE0NDY1NjMwIC0wNzAwCi1AQCAtMTU4LDcgKzE1OCw3IEBACi0gZmkKLSAKLSBlY2hvICIjIyMjIyBCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yICRHT09TLyRHT0FSQ0guIgotLUNDPSRDQ19GT1JfVEFSR0VUICIkR09UT09MRElSIi9nb19ib290c3RyYXAgaW5zdGFsbCAkR09fRkxBR1MgLWdjZmxhZ3MgIiRHT19HQ0ZMQUdTIiAtbGRmbGFncyAiJEdPX0xERkxBR1MiIC12IHN0ZCBjbWQKLStDQz0iJENDX0ZPUl9UQVJHRVQiICIkR09UT09MRElSIi9nb19ib290c3RyYXAgaW5zdGFsbCAkR09fRkxBR1MgLWdjZmxhZ3MgIiRHT19HQ0ZMQUdTIiAtbGRmbGFncyAiJEdPX0xERkxBR1MiIC12IHN0ZCBjbWQKLSBlY2hvCi0gCi0gcm0gLWYgIiRHT1RPT0xESVIiL2dvX2Jvb3RzdHJhcApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjYvZ290b29sZGlyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjYvZ290b29sZGlyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NDY3MDI1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS42L2dvdG9vbGRpci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLURlZmluZSB0b29sZGlyIGluIHJlbGF0aW9uIHRvIEdPVE9PTERJUiBlbnYgdmFyCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLUluZGV4OiBnby9zcmMvZ28vYnVpbGQvYnVpbGQuZ28KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnby5vcmlnL3NyYy9nby9idWlsZC9idWlsZC5nbwotKysrIGdvL3NyYy9nby9idWlsZC9idWlsZC5nbwotQEAgLTEzODgsNyArMTM4OCw3IEBAIGZ1bmMgaW5pdCgpIHsKLSB9Ci0gCi0gLy8gVG9vbERpciBpcyB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgYnVpbGQgdG9vbHMuCi0tdmFyIFRvb2xEaXIgPSBmaWxlcGF0aC5Kb2luKHJ1bnRpbWUuR09ST09UKCksICJwa2cvdG9vbC8iK3J1bnRpbWUuR09PUysiXyIrcnVudGltZS5HT0FSQ0gpCi0rdmFyIFRvb2xEaXIgPSBlbnZPcigiR09UT09MRElSIiwgZmlsZXBhdGguSm9pbihydW50aW1lLkdPUk9PVCgpLCAicGtnL3Rvb2wvIitydW50aW1lLkdPT1MrIl8iK3J1bnRpbWUuR09BUkNIKSkKLSAKLSAvLyBJc0xvY2FsSW1wb3J0IHJlcG9ydHMgd2hldGhlciB0aGUgaW1wb3J0IHBhdGggaXMKLSAvLyBhIGxvY2FsIGltcG9ydCBwYXRoLCBsaWtlICIuIiwgIi4uIiwgIi4vZm9vIiwgb3IgIi4uL2ZvbyIuCi1JbmRleDogZ28vc3JjL2NtZC9nby9idWlsZC5nbwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdvLm9yaWcvc3JjL2NtZC9nby9idWlsZC5nbwotKysrIGdvL3NyYy9jbWQvZ28vYnVpbGQuZ28KLUBAIC0xMzEyLDcgKzEzMTIsNyBAQCBmdW5jIChiICpidWlsZGVyKSBidWlsZChhICphY3Rpb24pIChlcnIKLSAJCX0KLSAKLSAJCWNnb0V4ZSA6PSB0b29sKCJjZ28iKQotLQkJaWYgYS5jZ28gIT0gbmlsICYmIGEuY2dvLnRhcmdldCAhPSAiIiB7Ci0rCQlpZiBhLmNnbyAhPSBuaWwgJiYgYS5jZ28udGFyZ2V0ICE9ICIiICYmIG9zLkdldGVudigiR09UT09MRElSIikgPT0gIiIgewotIAkJCWNnb0V4ZSA9IGEuY2dvLnRhcmdldAotIAkJfQotIAkJb3V0R28sIG91dE9iaiwgZXJyIDo9IGIuY2dvKGEucCwgY2dvRXhlLCBvYmosIHBjQ0ZMQUdTLCBwY0xERkxBR1MsIGNnb2ZpbGVzLCBnY2NmaWxlcywgY3h4ZmlsZXMsIGEucC5NRmlsZXMpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNi9zcGxpdC1ob3N0LWFuZC10YXJnZXQtYnVpbGQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNi9zcGxpdC1ob3N0LWFuZC10YXJnZXQtYnVpbGQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmYmFlMDIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjYvc3BsaXQtaG9zdC1hbmQtdGFyZ2V0LWJ1aWxkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotQWRkIG5ldyBvcHRpb24gLS10YXJnZXQtb25seSB0byBidWlsZCB0YXJnZXQgY29tcG9uZW50cwotU2VwYXJhdGVzIHRoZSBob3N0IGFuZCB0YXJnZXQgcGllY2VzIG9mIGJ1aWxkCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLUluZGV4OiBnby9zcmMvbWFrZS5iYXNoCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ28ub3JpZy9zcmMvbWFrZS5iYXNoCi0rKysgZ28vc3JjL21ha2UuYmFzaAotQEAgLTE0MywxMiArMTQzLDIzIEBAIGlmIFsgIiQxIiA9ICItLW5vLWNsZWFuIiBdOyB0aGVuCi0gCWJ1aWxkYWxsPSIiCi0gCXNoaWZ0Ci0gZmkKLS0uL2NtZC9kaXN0L2Rpc3QgYm9vdHN0cmFwICRidWlsZGFsbCAkR09fRElTVEZMQUdTIC12ICMgYnVpbGRzIGdvX2Jvb3RzdHJhcAotLSMgRGVsYXkgbW92ZSBvZiBkaXN0IHRvb2wgdG8gbm93LCBiZWNhdXNlIGJvb3RzdHJhcCBtYXkgY2xlYXIgdG9vbCBkaXJlY3RvcnkuCi0tbXYgY21kL2Rpc3QvZGlzdCAiJEdPVE9PTERJUiIvZGlzdAotLWVjaG8KLSAKLS1pZiBbICIkR09IT1NUQVJDSCIgIT0gIiRHT0FSQ0giIC1vICIkR09IT1NUT1MiICE9ICIkR09PUyIgXTsgdGhlbgotK2RvX2hvc3RfYnVpbGQ9InllcyIKLStkb190YXJnZXRfYnVpbGQ9InllcyIKLStpZiBbICIkMSIgPSAiLS10YXJnZXQtb25seSIgXTsgdGhlbgotKwlkb19ob3N0X2J1aWxkPSJubyIKLSsJc2hpZnQKLStlbGlmIFsgIiQxIiA9ICItLWhvc3Qtb25seSIgXTsgdGhlbgotKwlkb190YXJnZXRfYnVpbGQ9Im5vIgotKwlzaGlmdAotK2ZpCi0rCi0raWYgWyAiJGRvX2hvc3RfYnVpbGQiID0gInllcyIgXTsgdGhlbgotKwkuL2NtZC9kaXN0L2Rpc3QgYm9vdHN0cmFwICRidWlsZGFsbCAkR09fRElTVEZMQUdTIC12ICMgYnVpbGRzIGdvX2Jvb3RzdHJhcAotKwkjIERlbGF5IG1vdmUgb2YgZGlzdCB0b29sIHRvIG5vdywgYmVjYXVzZSBib290c3RyYXAgbWF5IGNsZWFyIHRvb2wgZGlyZWN0b3J5LgotKwltdiBjbWQvZGlzdC9kaXN0ICIkR09UT09MRElSIi9kaXN0Ci0rCWVjaG8KLSsKLSAJZWNobyAiIyMjIyMgQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciBob3N0LCAkR09IT1NUT1MvJEdPSE9TVEFSQ0guIgotIAkjIENDX0ZPUl9UQVJHRVQgaXMgcmVjb3JkZWQgYXMgdGhlIGRlZmF1bHQgY29tcGlsZXIgZm9yIHRoZSBnbyB0b29sLiBXaGVuIGJ1aWxkaW5nIGZvciB0aGUgaG9zdCwgaG93ZXZlciwKLSAJIyB1c2UgdGhlIGhvc3QgY29tcGlsZXIsIENDLCBmcm9tIGBjbWQvZGlzdC9kaXN0IGVudmAgaW5zdGVhZC4KLUBAIC0xNTcsMTEgKzE2OCwyMCBAQCBpZiBbICIkR09IT1NUQVJDSCIgIT0gIiRHT0FSQ0giIC1vICIkR09ICi0gCWVjaG8KLSBmaQotIAotLWVjaG8gIiMjIyMjIEJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgJEdPT1MvJEdPQVJDSC4iCi0tQ0M9IiRDQ19GT1JfVEFSR0VUIiAiJEdPVE9PTERJUiIvZ29fYm9vdHN0cmFwIGluc3RhbGwgJEdPX0ZMQUdTIC1nY2ZsYWdzICIkR09fR0NGTEFHUyIgLWxkZmxhZ3MgIiRHT19MREZMQUdTIiAtdiBzdGQgY21kCi0tZWNobwotK2lmIFsgIiRkb190YXJnZXRfYnVpbGQiID0gInllcyIgXTsgdGhlbgotKyAgICBHT19JTlNUQUxMPSIke0dPX1RBUkdFVF9JTlNUQUxMOi1zdGQgY21kfSIKLSsgICAgZWNobyAiIyMjIyMgQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciAkR09PUy8kR09BUkNILiIKLSsgICAgaWYgWyAiJEdPSE9TVE9TIiA9ICIkR09PUyIgLWEgIiRHT0hPU1RBUkNIIiA9ICIkR09BUkNIIiAtYSAiJGRvX2hvc3RfYnVpbGQiID0gInllcyIgXTsgdGhlbgotKwlybSAtcmYgLi9ob3N0LXRvb2xzCi0rCW1rZGlyIC4vaG9zdC10b29scwotKwltdiAiJEdPVE9PTERJUiIvKiAuL2hvc3QtdG9vbHMKLSsJR09UT09MRElSPSIkUFdEL2hvc3QtdG9vbHMiCi0rICAgIGZpCi0rICAgIEdPVE9PTERJUj0iJEdPVE9PTERJUiIgQ0M9IiRDQ19GT1JfVEFSR0VUIiAiJEdPVE9PTERJUiIvZ29fYm9vdHN0cmFwIGluc3RhbGwgJEdPX0ZMQUdTIC1nY2ZsYWdzICIkR09fR0NGTEFHUyIgLWxkZmxhZ3MgIiRHT19MREZMQUdTIiAtdiAke0dPX0lOU1RBTEx9Ci0rICAgIGVjaG8KLSAKLS1ybSAtZiAiJEdPVE9PTERJUiIvZ29fYm9vdHN0cmFwCi0rICAgIHJtIC1mICIkR09UT09MRElSIi9nb19ib290c3RyYXAKLStmaQotIAotIGlmIFsgIiQxIiAhPSAiLS1uby1iYW5uZXIiIF07IHRoZW4KLSAJIiRHT1RPT0xESVIiL2Rpc3QgYmFubmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNi9zeXNsb2cucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNi9zeXNsb2cucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5YmUwNmYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjYvc3lzbG9nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotQWRkIHRpbWVvdXRzIHRvIGxvZ2dlcgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLWRpZmYgLXIgLXUgZ28vc3JjL2xvZy9zeXNsb2cvc3lzbG9nLmdvIC9ob21lL2FjaGFuZy9HT0NPUFkvZ28vc3JjL2xvZy9zeXNsb2cvc3lzbG9nLmdvCi0tLS0gZ28vc3JjL2xvZy9zeXNsb2cvc3lzbG9nLmdvCTIwMTMtMTEtMjggMTM6Mzg6MjguMDAwMDAwMDAwIC0wODAwCi0rKysgL2hvbWUvYWNoYW5nL0dPQ09QWS9nby9zcmMvbG9nL3N5c2xvZy9zeXNsb2cuZ28JMjAxNC0xMC0wMyAxMTo0NDozNy43MTA0MDMyMDAgLTA3MDAKLUBAIC0zMyw2ICszMyw5IEBACi0gY29uc3Qgc2V2ZXJpdHlNYXNrID0gMHgwNwotIGNvbnN0IGZhY2lsaXR5TWFzayA9IDB4ZjgKLSAKLSt2YXIgd3JpdGVUaW1lb3V0ID0gMSAqIHRpbWUuU2Vjb25kCi0rdmFyIGNvbm5lY3RUaW1lb3V0ID0gMSAqIHRpbWUuU2Vjb25kCi0rCi0gY29uc3QgKAotIAkvLyBTZXZlcml0eS4KLSAKLUBAIC0xMDAsNiArMTAzLDcgQEAKLSB0eXBlIHNlcnZlckNvbm4gaW50ZXJmYWNlIHsKLSAJd3JpdGVTdHJpbmcocCBQcmlvcml0eSwgaG9zdG5hbWUsIHRhZywgcywgbmwgc3RyaW5nKSBlcnJvcgotIAljbG9zZSgpIGVycm9yCi0rCXNldFdyaXRlRGVhZGxpbmUodCB0aW1lLlRpbWUpIGVycm9yCi0gfQotIAotIHR5cGUgbmV0Q29ubiBzdHJ1Y3QgewotQEAgLTI3Myw3ICsyNzcsMTEgQEAKLSAJCW5sID0gIlxuIgotIAl9Ci0gCi0tCWVyciA6PSB3LmNvbm4ud3JpdGVTdHJpbmcocCwgdy5ob3N0bmFtZSwgdy50YWcsIG1zZywgbmwpCi0rCWVyciA6PSB3LmNvbm4uc2V0V3JpdGVEZWFkbGluZSh0aW1lLk5vdygpLkFkZCh3cml0ZVRpbWVvdXQpKQotKwlpZiBlcnIgIT0gbmlsIHsKLSsJCXJldHVybiAwLCBlcnIKLSsJfQotKwllcnIgPSB3LmNvbm4ud3JpdGVTdHJpbmcocCwgdy5ob3N0bmFtZSwgdy50YWcsIG1zZywgbmwpCi0gCWlmIGVyciAhPSBuaWwgewotIAkJcmV0dXJuIDAsIGVycgotIAl9Ci1AQCAtMzA1LDYgKzMxMywxMCBAQAotIAlyZXR1cm4gbi5jb25uLkNsb3NlKCkKLSB9Ci0gCi0rZnVuYyAobiAqbmV0Q29ubikgc2V0V3JpdGVEZWFkbGluZSh0IHRpbWUuVGltZSkgZXJyb3IgewotKwlyZXR1cm4gbi5jb25uLlNldFdyaXRlRGVhZGxpbmUodCkKLSt9Ci0rCi0gLy8gTmV3TG9nZ2VyIGNyZWF0ZXMgYSBsb2cuTG9nZ2VyIHdob3NlIG91dHB1dCBpcyB3cml0dGVuIHRvCi0gLy8gdGhlIHN5c3RlbSBsb2cgc2VydmljZSB3aXRoIHRoZSBzcGVjaWZpZWQgcHJpb3JpdHkuIFRoZSBsb2dGbGFnCi0gLy8gYXJndW1lbnQgaXMgdGhlIGZsYWcgc2V0IHBhc3NlZCB0aHJvdWdoIHRvIGxvZy5OZXcgdG8gY3JlYXRlCi1kaWZmIC1yIC11IGdvL3NyYy9sb2cvc3lzbG9nL3N5c2xvZ191bml4LmdvIC9ob21lL2FjaGFuZy9HT0NPUFkvZ28vc3JjL2xvZy9zeXNsb2cvc3lzbG9nX3VuaXguZ28KLS0tLSBnby9zcmMvbG9nL3N5c2xvZy9zeXNsb2dfdW5peC5nbwkyMDEzLTExLTI4IDEzOjM4OjI4LjAwMDAwMDAwMCAtMDgwMAotKysrIC9ob21lL2FjaGFuZy9HT0NPUFkvZ28vc3JjL2xvZy9zeXNsb2cvc3lzbG9nX3VuaXguZ28JMjAxNC0xMC0wMyAxMTo0NDozOS4wMTA0MDMxNzUgLTA3MDAKLUBAIC0xOSw3ICsxOSw3IEBACi0gCWxvZ1BhdGhzIDo9IFtdc3RyaW5neyIvZGV2L2xvZyIsICIvdmFyL3J1bi9zeXNsb2cifQotIAlmb3IgXywgbmV0d29yayA6PSByYW5nZSBsb2dUeXBlcyB7Ci0gCQlmb3IgXywgcGF0aCA6PSByYW5nZSBsb2dQYXRocyB7Ci0tCQkJY29ubiwgZXJyIDo9IG5ldC5EaWFsKG5ldHdvcmssIHBhdGgpCi0rCQkJY29ubiwgZXJyIDo9IG5ldC5EaWFsVGltZW91dChuZXR3b3JrLCBwYXRoLCBjb25uZWN0VGltZW91dCkKLSAJCQlpZiBlcnIgIT0gbmlsIHsKLSAJCQkJY29udGludWUKLSAJCQl9IGVsc2UgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjcuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjcuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YzMwMDRlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS43LmluYworKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLXJlcXVpcmUgZ28tY29tbW9uLmluYwotCi1QViA9ICIxLjcuNCIKLUdPX0JBU0VWRVJTSU9OID0gIjEuNyIKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke0ZJTEVfRElSTkFNRX0vZ28tJHtHT19CQVNFVkVSU0lPTn06IgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT01ZDQ5NTBlY2I3YjI2ZDJjNWU0ZTdiNGUwZGQ3NDcwNyIKLQotU1JDX1VSSSArPSAiXAotICAgICAgIGZpbGU6Ly9hcm1oZi1lbGYtaGVhZGVyLnBhdGNoIFwKLSAgICAgICBmaWxlOi8vc3lzbG9nLnBhdGNoIFwKLSAgICAgICBmaWxlOi8vZml4LXRhcmdldC1jYy1mb3ItYnVpbGQucGF0Y2ggXAotICAgICAgIGZpbGU6Ly9maXgtY2MtaGFuZGxpbmcucGF0Y2ggXAotICAgICAgIGZpbGU6Ly9zcGxpdC1ob3N0LWFuZC10YXJnZXQtYnVpbGQucGF0Y2ggXAotICAgICAgIGZpbGU6Ly9nb3Rvb2xkaXIucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjQ5YzEwNzY0MjhhNWQzYjVhZDdhYzY1MjMzZmNjYTJmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRjMTg5MTExZTliYTY1MWEyYmIzZWU4NjhhYTg4MWZhYjM2YjJmMmRhMzQwOWU4MDg4NWNhNzU4YTZiNjE0Y2MiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS43L2FybWhmLWVsZi1oZWFkZXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNy9hcm1oZi1lbGYtaGVhZGVyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTNhMTZiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS43L2FybWhmLWVsZi1oZWFkZXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1FbmNvZGUgYXJtIEVBQkkgKCBoYXJkL3NvZnQgKSBjYWxsaW5nIGNvbnZlbnRpb24gaW4gRUxGIGhlYWRlcgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1JbmRleDogZ28vc3JjL2NtZC9saW5rL2ludGVybmFsL2xkL2VsZi5nbwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdvLm9yaWcvc3JjL2NtZC9saW5rL2ludGVybmFsL2xkL2VsZi5nbwotKysrIGdvL3NyYy9jbWQvbGluay9pbnRlcm5hbC9sZC9lbGYuZ28KLUBAIC04MjcsNyArODI3LDEzIEBACi0gCS8vIDMyLWJpdCBhcmNoaXRlY3R1cmVzCi0gCWNhc2UgJzUnOgotIAkJLy8gd2UgdXNlIEVBQkkgb24gYm90aCBsaW51eC9hcm0gYW5kIGZyZWVic2QvYXJtLgotLQkJaWYgSEVBRFRZUEUgPT0gb2JqLkhsaW51eCB8fCBIRUFEVFlQRSA9PSBvYmouSGZyZWVic2QgewotKwkJaWYgSEVBRFRZUEUgPT0gb2JqLkhsaW51eCB7Ci0rCQkJaWYgQ3R4dC5Hb2FybSA9PSA3IHsKLSsJCQkJZWhkci5mbGFncyA9IDB4NTAwMDQwMiAvLyBoYXMgZW50cnkgcG9pbnQsIFZlcnNpb241IEVBQkksIGhhcmQgZmxvYXQKLSsJCQl9IGVsc2UgewotKwkJCQllaGRyLmZsYWdzID0gMHg1MDAwMjAyIC8vIGhhcyBlbnRyeSBwb2ludCwgVmVyc2lvbjUgRUFCSSwgc29mdCBmbG9hdAotKwkJCX0KLSsJCX0gZWxzZSBpZiBIRUFEVFlQRSA9PSBvYmouSGZyZWVic2QgewotIAkJCS8vIFdlIHNldCBhIHZhbHVlIGhlcmUgdGhhdCBtYWtlcyBubyBpbmRpY2F0aW9uIG9mIHdoaWNoCi0gCQkJLy8gZmxvYXQgQUJJIHRoZSBvYmplY3QgdXNlcywgYmVjYXVzZSB0aGlzIGlzIGluZm9ybWF0aW9uCi0gCQkJLy8gdXNlZCBieSB0aGUgZHluYW1pYyBsaW5rZXIgdG8gY29tcGFyZSBleGVjdXRhYmxlcyBhbmQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS43L2ZpeC1jYy1oYW5kbGluZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS43L2ZpeC1jYy1oYW5kbGluZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTY3Y2FmNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNy9maXgtY2MtaGFuZGxpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi1BY2NlcHQgQ0Mgd2l0aCBtdWx0aXBsZSB3b3JkcyBpbiBpdHMgbmFtZQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1JbmRleDogZ28vc3JjL2NtZC9nby9idWlsZC5nbwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdvLm9yaWcvc3JjL2NtZC9nby9idWlsZC5nbwotKysrIGdvL3NyYy9jbWQvZ28vYnVpbGQuZ28KLUBAIC0yOTkxLDEyICsyOTkxLDI0IEBAIGZ1bmMgKGIgKmJ1aWxkZXIpIGdjY0NtZChvYmpkaXIgc3RyaW5nKQotIAlyZXR1cm4gYi5jY29tcGlsZXJDbWQoIkNDIiwgZGVmYXVsdENDLCBvYmpkaXIpCi0gfQotIAotKy8vIGdjY0NtZCByZXR1cm5zIGEgZ2NjIGNvbW1hbmQgbGluZSBwcmVmaXgKLSsvLyBkZWZhdWx0Q0MgaXMgZGVmaW5lZCBpbiB6ZGVmYXVsdGNjLmdvLCB3cml0dGVuIGJ5IGNtZC9kaXN0LgotK2Z1bmMgKGIgKmJ1aWxkZXIpIGdjY0NtZEZvclJlYWwoKSBbXXN0cmluZyB7Ci0rCXJldHVybiBlbnZMaXN0KCJDQyIsIGRlZmF1bHRDQykKLSt9Ci0rCi0gLy8gZ3h4Q21kIHJldHVybnMgYSBnKysgY29tbWFuZCBsaW5lIHByZWZpeAotIC8vIGRlZmF1bHRDWFggaXMgZGVmaW5lZCBpbiB6ZGVmYXVsdGNjLmdvLCB3cml0dGVuIGJ5IGNtZC9kaXN0LgotIGZ1bmMgKGIgKmJ1aWxkZXIpIGd4eENtZChvYmpkaXIgc3RyaW5nKSBbXXN0cmluZyB7Ci0gCXJldHVybiBiLmNjb21waWxlckNtZCgiQ1hYIiwgZGVmYXVsdENYWCwgb2JqZGlyKQotIH0KLSAKLSsvLyBneHhDbWQgcmV0dXJucyBhIGcrKyBjb21tYW5kIGxpbmUgcHJlZml4Ci0rLy8gZGVmYXVsdENYWCBpcyBkZWZpbmVkIGluIHpkZWZhdWx0Y2MuZ28sIHdyaXR0ZW4gYnkgY21kL2Rpc3QuCi0rZnVuYyAoYiAqYnVpbGRlcikgZ3h4Q21kRm9yUmVhbCgpIFtdc3RyaW5nIHsKLSsJcmV0dXJuIGVudkxpc3QoIkNYWCIsIGRlZmF1bHRDWFgpCi0rfQotKwotIC8vIGdmb3J0cmFuQ21kIHJldHVybnMgYSBnZm9ydHJhbiBjb21tYW5kIGxpbmUgcHJlZml4LgotIGZ1bmMgKGIgKmJ1aWxkZXIpIGdmb3J0cmFuQ21kKG9iamRpciBzdHJpbmcpIFtdc3RyaW5nIHsKLSAJcmV0dXJuIGIuY2NvbXBpbGVyQ21kKCJGQyIsICJnZm9ydHJhbiIsIG9iamRpcikKLUluZGV4OiBnby9zcmMvY21kL2dvL2Vudi5nbwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdvLm9yaWcvc3JjL2NtZC9nby9lbnYuZ28KLSsrKyBnby9zcmMvY21kL2dvL2Vudi5nbwotQEAgLTUxLDEwICs1MSw5IEBAIGZ1bmMgbWtFbnYoKSBbXWVudlZhciB7Ci0gCi0gCWlmIGdvb3MgIT0gInBsYW45IiB7Ci0gCQljbWQgOj0gYi5nY2NDbWQoIi4iKQotLQkJZW52ID0gYXBwZW5kKGVudiwgZW52VmFyeyJDQyIsIGNtZFswXX0pCi0rCQllbnYgPSBhcHBlbmQoZW52LCBlbnZWYXJ7IkNDIiwgc3RyaW5ncy5Kb2luKGIuZ2NjQ21kRm9yUmVhbCgpLCAiICIpfSkKLSAJCWVudiA9IGFwcGVuZChlbnYsIGVudlZhcnsiR09HQ0NGTEFHUyIsIHN0cmluZ3MuSm9pbihjbWRbMzpdLCAiICIpfSkKLS0JCWNtZCA9IGIuZ3h4Q21kKCIuIikKLS0JCWVudiA9IGFwcGVuZChlbnYsIGVudlZhcnsiQ1hYIiwgY21kWzBdfSkKLSsJCWVudiA9IGFwcGVuZChlbnYsIGVudlZhcnsiQ1hYIiwgc3RyaW5ncy5Kb2luKGIuZ3h4Q21kRm9yUmVhbCgpLCAiICIpfSkKLSAJfQotIAotIAlpZiBidWlsZENvbnRleHQuQ2dvRW5hYmxlZCB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNy9maXgtdGFyZ2V0LWNjLWZvci1idWlsZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS43L2ZpeC10YXJnZXQtY2MtZm9yLWJ1aWxkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZjYxNTZlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS43L2ZpeC10YXJnZXQtY2MtZm9yLWJ1aWxkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotUHV0IFF1b3RlcyBhcm91bmQgQ0NfRk9SX1RBUkdFVCBzaW5jZSBpdCBjYW4gYmUgbXV0bGlwbGUgd29yZHMgZS5nLiBpbiBPRQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1JbmRleDogZ28vc3JjL21ha2UuYmFzaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdvLm9yaWcvc3JjL21ha2UuYmFzaAkyMDE1LTA3LTI5IDEzOjI4OjExLjMzNDAzMTY5NiAtMDcwMAotKysrIGdvL3NyYy9tYWtlLmJhc2gJMjAxNS0wNy0yOSAxMzozNjo1NS44MTQ0NjU2MzAgLTA3MDAKLUBAIC0xNTgsNyArMTU4LDcgQEAKLSBmaQotIAotIGVjaG8gIiMjIyMjIEJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgJEdPT1MvJEdPQVJDSC4iCi0tQ0M9JENDX0ZPUl9UQVJHRVQgIiRHT1RPT0xESVIiL2dvX2Jvb3RzdHJhcCBpbnN0YWxsICRHT19GTEFHUyAtZ2NmbGFncyAiJEdPX0dDRkxBR1MiIC1sZGZsYWdzICIkR09fTERGTEFHUyIgLXYgc3RkIGNtZAotK0NDPSIkQ0NfRk9SX1RBUkdFVCIgIiRHT1RPT0xESVIiL2dvX2Jvb3RzdHJhcCBpbnN0YWxsICRHT19GTEFHUyAtZ2NmbGFncyAiJEdPX0dDRkxBR1MiIC1sZGZsYWdzICIkR09fTERGTEFHUyIgLXYgc3RkIGNtZAotIGVjaG8KLSAKLSBybSAtZiAiJEdPVE9PTERJUiIvZ29fYm9vdHN0cmFwCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNy9nb3Rvb2xkaXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNy9nb3Rvb2xkaXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0NjcwMjUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjcvZ290b29sZGlyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotRGVmaW5lIHRvb2xkaXIgaW4gcmVsYXRpb24gdG8gR09UT09MRElSIGVudiB2YXIKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotSW5kZXg6IGdvL3NyYy9nby9idWlsZC9idWlsZC5nbwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdvLm9yaWcvc3JjL2dvL2J1aWxkL2J1aWxkLmdvCi0rKysgZ28vc3JjL2dvL2J1aWxkL2J1aWxkLmdvCi1AQCAtMTM4OCw3ICsxMzg4LDcgQEAgZnVuYyBpbml0KCkgewotIH0KLSAKLSAvLyBUb29sRGlyIGlzIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyBidWlsZCB0b29scy4KLS12YXIgVG9vbERpciA9IGZpbGVwYXRoLkpvaW4ocnVudGltZS5HT1JPT1QoKSwgInBrZy90b29sLyIrcnVudGltZS5HT09TKyJfIitydW50aW1lLkdPQVJDSCkKLSt2YXIgVG9vbERpciA9IGVudk9yKCJHT1RPT0xESVIiLCBmaWxlcGF0aC5Kb2luKHJ1bnRpbWUuR09ST09UKCksICJwa2cvdG9vbC8iK3J1bnRpbWUuR09PUysiXyIrcnVudGltZS5HT0FSQ0gpKQotIAotIC8vIElzTG9jYWxJbXBvcnQgcmVwb3J0cyB3aGV0aGVyIHRoZSBpbXBvcnQgcGF0aCBpcwotIC8vIGEgbG9jYWwgaW1wb3J0IHBhdGgsIGxpa2UgIi4iLCAiLi4iLCAiLi9mb28iLCBvciAiLi4vZm9vIi4KLUluZGV4OiBnby9zcmMvY21kL2dvL2J1aWxkLmdvCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ28ub3JpZy9zcmMvY21kL2dvL2J1aWxkLmdvCi0rKysgZ28vc3JjL2NtZC9nby9idWlsZC5nbwotQEAgLTEzMTIsNyArMTMxMiw3IEBAIGZ1bmMgKGIgKmJ1aWxkZXIpIGJ1aWxkKGEgKmFjdGlvbikgKGVycgotIAkJfQotIAotIAkJY2dvRXhlIDo9IHRvb2woImNnbyIpCi0tCQlpZiBhLmNnbyAhPSBuaWwgJiYgYS5jZ28udGFyZ2V0ICE9ICIiIHsKLSsJCWlmIGEuY2dvICE9IG5pbCAmJiBhLmNnby50YXJnZXQgIT0gIiIgJiYgb3MuR2V0ZW52KCJHT1RPT0xESVIiKSA9PSAiIiB7Ci0gCQkJY2dvRXhlID0gYS5jZ28udGFyZ2V0Ci0gCQl9Ci0gCQlvdXRHbywgb3V0T2JqLCBlcnIgOj0gYi5jZ28oYS5wLCBjZ29FeGUsIG9iaiwgcGNDRkxBR1MsIHBjTERGTEFHUywgY2dvZmlsZXMsIGdjY2ZpbGVzLCBjeHhmaWxlcywgYS5wLk1GaWxlcykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS43L3NwbGl0LWhvc3QtYW5kLXRhcmdldC1idWlsZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS43L3NwbGl0LWhvc3QtYW5kLXRhcmdldC1idWlsZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjBkZDk1Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNy9zcGxpdC1ob3N0LWFuZC10YXJnZXQtYnVpbGQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi1BZGQgbmV3IG9wdGlvbiAtLXRhcmdldC1vbmx5IHRvIGJ1aWxkIHRhcmdldCBjb21wb25lbnRzCi1TZXBhcmF0ZXMgdGhlIGhvc3QgYW5kIHRhcmdldCBwaWVjZXMgb2YgYnVpbGQKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotSW5kZXg6IGdvL3NyYy9tYWtlLmJhc2gKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnby5vcmlnL3NyYy9tYWtlLmJhc2gKLSsrKyBnby9zcmMvbWFrZS5iYXNoCi1AQCAtMTU0LDEzICsxNTQsMjIgQEAgaWYgWyAiJDEiID0gIi0tbm8tY2xlYW4iIF07IHRoZW4KLSAJYnVpbGRhbGw9IiIKLSAJc2hpZnQKLSBmaQotLS4vY21kL2Rpc3QvZGlzdCBib290c3RyYXAgJGJ1aWxkYWxsICRHT19ESVNURkxBR1MgLXYgIyBidWlsZHMgZ29fYm9vdHN0cmFwCi0rZG9faG9zdF9idWlsZD0ieWVzIgotK2RvX3RhcmdldF9idWlsZD0ieWVzIgotK2lmIFsgIiQxIiA9ICItLXRhcmdldC1vbmx5IiBdOyB0aGVuCi0rCWRvX2hvc3RfYnVpbGQ9Im5vIgotKwlzaGlmdAotK2VsaWYgWyAiJDEiID0gIi0taG9zdC1vbmx5IiBdOyB0aGVuCi0rCWRvX3RhcmdldF9idWlsZD0ibm8iCi0rCXNoaWZ0Ci0rZmkKLSAKLS0jIERlbGF5IG1vdmUgb2YgZGlzdCB0b29sIHRvIG5vdywgYmVjYXVzZSBib290c3RyYXAgbWF5IGNsZWFyIHRvb2wgZGlyZWN0b3J5LgotLW12IGNtZC9kaXN0L2Rpc3QgIiRHT1RPT0xESVIiL2Rpc3QKLS1lY2hvCi0raWYgWyAiJGRvX2hvc3RfYnVpbGQiID0gInllcyIgXTsgdGhlbgotKwkuL2NtZC9kaXN0L2Rpc3QgYm9vdHN0cmFwICRidWlsZGFsbCAkR09fRElTVEZMQUdTIC12ICMgYnVpbGRzIGdvX2Jvb3RzdHJhcAotKwkjIERlbGF5IG1vdmUgb2YgZGlzdCB0b29sIHRvIG5vdywgYmVjYXVzZSBib290c3RyYXAgbWF5IGNsZWFyIHRvb2wgZGlyZWN0b3J5LgotKwltdiBjbWQvZGlzdC9kaXN0ICIkR09UT09MRElSIi9kaXN0Ci0rCWVjaG8KLSAKLS1pZiBbICIkR09IT1NUQVJDSCIgIT0gIiRHT0FSQ0giIC1vICIkR09IT1NUT1MiICE9ICIkR09PUyIgXTsgdGhlbgotIAllY2hvICIjIyMjIyBCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yIGhvc3QsICRHT0hPU1RPUy8kR09IT1NUQVJDSC4iCi0gCSMgQ0NfRk9SX1RBUkdFVCBpcyByZWNvcmRlZCBhcyB0aGUgZGVmYXVsdCBjb21waWxlciBmb3IgdGhlIGdvIHRvb2wuIFdoZW4gYnVpbGRpbmcgZm9yIHRoZSBob3N0LCBob3dldmVyLAotIAkjIHVzZSB0aGUgaG9zdCBjb21waWxlciwgQ0MsIGZyb20gYGNtZC9kaXN0L2Rpc3QgZW52YCBpbnN0ZWFkLgotQEAgLTE2OSwxMSArMTc4LDIwIEBAIGlmIFsgIiRHT0hPU1RBUkNIIiAhPSAiJEdPQVJDSCIgLW8gIiRHT0gKLSAJZWNobwotIGZpCi0gCi0tZWNobyAiIyMjIyMgQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciAkR09PUy8kR09BUkNILiIKLS1DQz0iJENDX0ZPUl9UQVJHRVQiICIkR09UT09MRElSIi9nb19ib290c3RyYXAgaW5zdGFsbCAkR09fRkxBR1MgLWdjZmxhZ3MgIiRHT19HQ0ZMQUdTIiAtbGRmbGFncyAiJEdPX0xERkxBR1MiIC12IHN0ZCBjbWQKLS1lY2hvCi0raWYgWyAiJGRvX3RhcmdldF9idWlsZCIgPSAieWVzIiBdOyB0aGVuCi0rICAgIEdPX0lOU1RBTEw9IiR7R09fVEFSR0VUX0lOU1RBTEw6LXN0ZCBjbWR9IgotKyAgICBlY2hvICIjIyMjIyBCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yICRHT09TLyRHT0FSQ0guIgotKyAgICBpZiBbICIkR09IT1NUT1MiID0gIiRHT09TIiAtYSAiJEdPSE9TVEFSQ0giID0gIiRHT0FSQ0giIC1hICIkZG9faG9zdF9idWlsZCIgPSAieWVzIiBdOyB0aGVuCi0rCXJtIC1yZiAuL2hvc3QtdG9vbHMKLSsJbWtkaXIgLi9ob3N0LXRvb2xzCi0rCW12ICIkR09UT09MRElSIi8qIC4vaG9zdC10b29scwotKwlHT1RPT0xESVI9IiRQV0QvaG9zdC10b29scyIKLSsgICAgZmkKLSsgICAgR09UT09MRElSPSIkR09UT09MRElSIiBDQz0iJENDX0ZPUl9UQVJHRVQiICIkR09UT09MRElSIi9nb19ib290c3RyYXAgaW5zdGFsbCAkR09fRkxBR1MgLWdjZmxhZ3MgIiRHT19HQ0ZMQUdTIiAtbGRmbGFncyAiJEdPX0xERkxBR1MiIC12ICR7R09fSU5TVEFMTH0KLSsgICAgZWNobwotIAotLXJtIC1mICIkR09UT09MRElSIi9nb19ib290c3RyYXAKLSsgICAgcm0gLWYgIiRHT1RPT0xESVIiL2dvX2Jvb3RzdHJhcAotK2ZpCi0gCi0gaWYgWyAiJDEiICE9ICItLW5vLWJhbm5lciIgXTsgdGhlbgotIAkiJEdPVE9PTERJUiIvZGlzdCBiYW5uZXIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS43L3N5c2xvZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS43L3N5c2xvZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjliZTA2Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuNy9zeXNsb2cucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi1BZGQgdGltZW91dHMgdG8gbG9nZ2VyCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotZGlmZiAtciAtdSBnby9zcmMvbG9nL3N5c2xvZy9zeXNsb2cuZ28gL2hvbWUvYWNoYW5nL0dPQ09QWS9nby9zcmMvbG9nL3N5c2xvZy9zeXNsb2cuZ28KLS0tLSBnby9zcmMvbG9nL3N5c2xvZy9zeXNsb2cuZ28JMjAxMy0xMS0yOCAxMzozODoyOC4wMDAwMDAwMDAgLTA4MDAKLSsrKyAvaG9tZS9hY2hhbmcvR09DT1BZL2dvL3NyYy9sb2cvc3lzbG9nL3N5c2xvZy5nbwkyMDE0LTEwLTAzIDExOjQ0OjM3LjcxMDQwMzIwMCAtMDcwMAotQEAgLTMzLDYgKzMzLDkgQEAKLSBjb25zdCBzZXZlcml0eU1hc2sgPSAweDA3Ci0gY29uc3QgZmFjaWxpdHlNYXNrID0gMHhmOAotIAotK3ZhciB3cml0ZVRpbWVvdXQgPSAxICogdGltZS5TZWNvbmQKLSt2YXIgY29ubmVjdFRpbWVvdXQgPSAxICogdGltZS5TZWNvbmQKLSsKLSBjb25zdCAoCi0gCS8vIFNldmVyaXR5LgotIAotQEAgLTEwMCw2ICsxMDMsNyBAQAotIHR5cGUgc2VydmVyQ29ubiBpbnRlcmZhY2UgewotIAl3cml0ZVN0cmluZyhwIFByaW9yaXR5LCBob3N0bmFtZSwgdGFnLCBzLCBubCBzdHJpbmcpIGVycm9yCi0gCWNsb3NlKCkgZXJyb3IKLSsJc2V0V3JpdGVEZWFkbGluZSh0IHRpbWUuVGltZSkgZXJyb3IKLSB9Ci0gCi0gdHlwZSBuZXRDb25uIHN0cnVjdCB7Ci1AQCAtMjczLDcgKzI3NywxMSBAQAotIAkJbmwgPSAiXG4iCi0gCX0KLSAKLS0JZXJyIDo9IHcuY29ubi53cml0ZVN0cmluZyhwLCB3Lmhvc3RuYW1lLCB3LnRhZywgbXNnLCBubCkKLSsJZXJyIDo9IHcuY29ubi5zZXRXcml0ZURlYWRsaW5lKHRpbWUuTm93KCkuQWRkKHdyaXRlVGltZW91dCkpCi0rCWlmIGVyciAhPSBuaWwgewotKwkJcmV0dXJuIDAsIGVycgotKwl9Ci0rCWVyciA9IHcuY29ubi53cml0ZVN0cmluZyhwLCB3Lmhvc3RuYW1lLCB3LnRhZywgbXNnLCBubCkKLSAJaWYgZXJyICE9IG5pbCB7Ci0gCQlyZXR1cm4gMCwgZXJyCi0gCX0KLUBAIC0zMDUsNiArMzEzLDEwIEBACi0gCXJldHVybiBuLmNvbm4uQ2xvc2UoKQotIH0KLSAKLStmdW5jIChuICpuZXRDb25uKSBzZXRXcml0ZURlYWRsaW5lKHQgdGltZS5UaW1lKSBlcnJvciB7Ci0rCXJldHVybiBuLmNvbm4uU2V0V3JpdGVEZWFkbGluZSh0KQotK30KLSsKLSAvLyBOZXdMb2dnZXIgY3JlYXRlcyBhIGxvZy5Mb2dnZXIgd2hvc2Ugb3V0cHV0IGlzIHdyaXR0ZW4gdG8KLSAvLyB0aGUgc3lzdGVtIGxvZyBzZXJ2aWNlIHdpdGggdGhlIHNwZWNpZmllZCBwcmlvcml0eS4gVGhlIGxvZ0ZsYWcKLSAvLyBhcmd1bWVudCBpcyB0aGUgZmxhZyBzZXQgcGFzc2VkIHRocm91Z2ggdG8gbG9nLk5ldyB0byBjcmVhdGUKLWRpZmYgLXIgLXUgZ28vc3JjL2xvZy9zeXNsb2cvc3lzbG9nX3VuaXguZ28gL2hvbWUvYWNoYW5nL0dPQ09QWS9nby9zcmMvbG9nL3N5c2xvZy9zeXNsb2dfdW5peC5nbwotLS0tIGdvL3NyYy9sb2cvc3lzbG9nL3N5c2xvZ191bml4LmdvCTIwMTMtMTEtMjggMTM6Mzg6MjguMDAwMDAwMDAwIC0wODAwCi0rKysgL2hvbWUvYWNoYW5nL0dPQ09QWS9nby9zcmMvbG9nL3N5c2xvZy9zeXNsb2dfdW5peC5nbwkyMDE0LTEwLTAzIDExOjQ0OjM5LjAxMDQwMzE3NSAtMDcwMAotQEAgLTE5LDcgKzE5LDcgQEAKLSAJbG9nUGF0aHMgOj0gW11zdHJpbmd7Ii9kZXYvbG9nIiwgIi92YXIvcnVuL3N5c2xvZyJ9Ci0gCWZvciBfLCBuZXR3b3JrIDo9IHJhbmdlIGxvZ1R5cGVzIHsKLSAJCWZvciBfLCBwYXRoIDo9IHJhbmdlIGxvZ1BhdGhzIHsKLS0JCQljb25uLCBlcnIgOj0gbmV0LkRpYWwobmV0d29yaywgcGF0aCkKLSsJCQljb25uLCBlcnIgOj0gbmV0LkRpYWxUaW1lb3V0KG5ldHdvcmssIHBhdGgsIGNvbm5lY3RUaW1lb3V0KQotIAkJCWlmIGVyciAhPSBuaWwgewotIAkJCQljb250aW51ZQotIAkJCX0gZWxzZSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjMzc2YTIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjguaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotcmVxdWlyZSBnby1jb21tb24uaW5jCi0KLUdPTUlOT1IgPSAiIgotR09fQkFTRVZFUlNJT04gPSAiMS44IgotUFYgLj0gIiR7R09NSU5PUn0iCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtGSUxFX0RJUk5BTUV9L2dvLSR7R09fQkFTRVZFUlNJT059OiIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NWQ0OTUwZWNiN2IyNmQyYzVlNGU3YjRlMGRkNzQ3MDciCi0KLVNSQ19VUkkgKz0gIlwKLSAgICAgICBmaWxlOi8vYXJtaGYtZWxmLWhlYWRlci5wYXRjaCBcCi0gICAgICAgZmlsZTovL3N5c2xvZy5wYXRjaCBcCi0gICAgICAgZmlsZTovL2ZpeC10YXJnZXQtY2MtZm9yLWJ1aWxkLnBhdGNoIFwKLSAgICAgICBmaWxlOi8vZml4LWNjLWhhbmRsaW5nLnBhdGNoIFwKLSAgICAgICBmaWxlOi8vc3BsaXQtaG9zdC1hbmQtdGFyZ2V0LWJ1aWxkLnBhdGNoIFwKLSAgICAgICBmaWxlOi8vZ290b29sZGlyLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICI3NzQzOTYwYzk2ODc2MDQzN2I2ZTM5MDkzY2ZlNmY2NyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0MDY4NjVmNTg3YjQ0YmU3MDkyZjIwNmQ3M2ZjMWRlMjUyNjAwYjc5YjNjYWNjNTg3Yjc0YjVlZjVjNjIzNTk2IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjgvYXJtaGYtZWxmLWhlYWRlci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS44L2FybWhmLWVsZi1oZWFkZXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1MDg4MzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjgvYXJtaGYtZWxmLWhlYWRlci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLUVuY29kZSBhcm0gRUFCSSAoIGhhcmQvc29mdCApIGNhbGxpbmcgY29udmVudGlvbiBpbiBFTEYgaGVhZGVyCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLUluZGV4OiBnby9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbGQvZWxmLmdvCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ28ub3JpZy9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbGQvZWxmLmdvCi0rKysgZ28vc3JjL2NtZC9saW5rL2ludGVybmFsL2xkL2VsZi5nbwotQEAgLTk1MCw3ICs5NTAsMTMgQEAgZnVuYyBFbGZpbml0KGN0eHQgKkxpbmspIHsKLSAJY2FzZSBzeXMuQVJNLCBzeXMuTUlQUzoKLSAJCWlmIFN5c0FyY2guRmFtaWx5ID09IHN5cy5BUk0gewotIAkJCS8vIHdlIHVzZSBFQUJJIG9uIGxpbnV4L2FybSwgZnJlZWJzZC9hcm0sIG5ldGJzZC9hcm0uCi0tCQkJaWYgSGVhZHR5cGUgPT0gb2JqLkhsaW51eCB8fCBIZWFkdHlwZSA9PSBvYmouSGZyZWVic2QgfHwgSGVhZHR5cGUgPT0gb2JqLkhuZXRic2QgewotKwkJCWlmIEhlYWR0eXBlID09IG9iai5IbGludXggewotKwkJCQlpZiBvYmouR09BUk0gPT0gNyB7Ci0rCQkJCQllaGRyLmZsYWdzID0gMHg1MDAwNDAyIC8vIGhhcyBlbnRyeSBwb2ludCwgVmVyc2lvbjUgRUFCSSwgaGFyZCBmbG9hdAotKwkJCQl9IGVsc2UgewotKwkJCQkJZWhkci5mbGFncyA9IDB4NTAwMDIwMiAvLyBoYXMgZW50cnkgcG9pbnQsIFZlcnNpb241IEVBQkksIHNvZnQgZmxvYXQKLSsJCQkJfQotKwkJCX0gZWxzZSBpZiBIZWFkdHlwZSA9PSBvYmouSGZyZWVic2QgfHwgSGVhZHR5cGUgPT0gb2JqLkhuZXRic2QgewotIAkJCQkvLyBXZSBzZXQgYSB2YWx1ZSBoZXJlIHRoYXQgbWFrZXMgbm8gaW5kaWNhdGlvbiBvZiB3aGljaAotIAkJCQkvLyBmbG9hdCBBQkkgdGhlIG9iamVjdCB1c2VzLCBiZWNhdXNlIHRoaXMgaXMgaW5mb3JtYXRpb24KLSAJCQkJLy8gdXNlZCBieSB0aGUgZHluYW1pYyBsaW5rZXIgdG8gY29tcGFyZSBleGVjdXRhYmxlcyBhbmQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS44L2ZpeC1jYy1oYW5kbGluZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS44L2ZpeC1jYy1oYW5kbGluZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGM5YjgxMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOC9maXgtY2MtaGFuZGxpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi1BY2NlcHQgQ0Mgd2l0aCBtdWx0aXBsZSB3b3JkcyBpbiBpdHMgbmFtZQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1JbmRleDogZ28vc3JjL2NtZC9nby9idWlsZC5nbwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdvLm9yaWcvc3JjL2NtZC9nby9idWlsZC5nbwotKysrIGdvL3NyYy9jbWQvZ28vYnVpbGQuZ28KLUBAIC0zMTAwLDEyICszMTAwLDI0IEBAIGZ1bmMgKGIgKmJ1aWxkZXIpIGdjY0NtZChvYmpkaXIgc3RyaW5nKQotIAlyZXR1cm4gYi5jY29tcGlsZXJDbWQoIkNDIiwgZGVmYXVsdENDLCBvYmpkaXIpCi0gfQotIAotKy8vIGdjY0NtZCByZXR1cm5zIGEgZ2NjIGNvbW1hbmQgbGluZSBwcmVmaXgKLSsvLyBkZWZhdWx0Q0MgaXMgZGVmaW5lZCBpbiB6ZGVmYXVsdGNjLmdvLCB3cml0dGVuIGJ5IGNtZC9kaXN0LgotK2Z1bmMgKGIgKmJ1aWxkZXIpIGdjY0NtZEZvclJlYWwoKSBbXXN0cmluZyB7Ci0rCXJldHVybiBlbnZMaXN0KCJDQyIsIGRlZmF1bHRDQykKLSt9Ci0rCi0gLy8gZ3h4Q21kIHJldHVybnMgYSBnKysgY29tbWFuZCBsaW5lIHByZWZpeAotIC8vIGRlZmF1bHRDWFggaXMgZGVmaW5lZCBpbiB6ZGVmYXVsdGNjLmdvLCB3cml0dGVuIGJ5IGNtZC9kaXN0LgotIGZ1bmMgKGIgKmJ1aWxkZXIpIGd4eENtZChvYmpkaXIgc3RyaW5nKSBbXXN0cmluZyB7Ci0gCXJldHVybiBiLmNjb21waWxlckNtZCgiQ1hYIiwgZGVmYXVsdENYWCwgb2JqZGlyKQotIH0KLSAKLSsvLyBneHhDbWQgcmV0dXJucyBhIGcrKyBjb21tYW5kIGxpbmUgcHJlZml4Ci0rLy8gZGVmYXVsdENYWCBpcyBkZWZpbmVkIGluIHpkZWZhdWx0Y2MuZ28sIHdyaXR0ZW4gYnkgY21kL2Rpc3QuCi0rZnVuYyAoYiAqYnVpbGRlcikgZ3h4Q21kRm9yUmVhbCgpIFtdc3RyaW5nIHsKLSsJcmV0dXJuIGVudkxpc3QoIkNYWCIsIGRlZmF1bHRDWFgpCi0rfQotKwotIC8vIGdmb3J0cmFuQ21kIHJldHVybnMgYSBnZm9ydHJhbiBjb21tYW5kIGxpbmUgcHJlZml4LgotIGZ1bmMgKGIgKmJ1aWxkZXIpIGdmb3J0cmFuQ21kKG9iamRpciBzdHJpbmcpIFtdc3RyaW5nIHsKLSAJcmV0dXJuIGIuY2NvbXBpbGVyQ21kKCJGQyIsICJnZm9ydHJhbiIsIG9iamRpcikKLUluZGV4OiBnby9zcmMvY21kL2dvL2Vudi5nbwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdvLm9yaWcvc3JjL2NtZC9nby9lbnYuZ28KLSsrKyBnby9zcmMvY21kL2dvL2Vudi5nbwotQEAgLTYzLDEwICs2Myw5IEBAIGZ1bmMgbWtFbnYoKSBbXWVudlZhciB7Ci0gCX0KLSAKLSAJY21kIDo9IGIuZ2NjQ21kKCIuIikKLS0JZW52ID0gYXBwZW5kKGVudiwgZW52VmFyeyJDQyIsIGNtZFswXX0pCi0rCWVudiA9IGFwcGVuZChlbnYsIGVudlZhcnsiQ0MiLCBzdHJpbmdzLkpvaW4oYi5nY2NDbWRGb3JSZWFsKCksICIgIil9KQotIAllbnYgPSBhcHBlbmQoZW52LCBlbnZWYXJ7IkdPR0NDRkxBR1MiLCBzdHJpbmdzLkpvaW4oY21kWzM6XSwgIiAiKX0pCi0tCWNtZCA9IGIuZ3h4Q21kKCIuIikKLS0JZW52ID0gYXBwZW5kKGVudiwgZW52VmFyeyJDWFgiLCBjbWRbMF19KQotKwllbnYgPSBhcHBlbmQoZW52LCBlbnZWYXJ7IkNYWCIsIHN0cmluZ3MuSm9pbihiLmd4eENtZEZvclJlYWwoKSwgIiAiKX0pCi0gCi0gCWlmIGJ1aWxkQ29udGV4dC5DZ29FbmFibGVkIHsKLSAJCWVudiA9IGFwcGVuZChlbnYsIGVudlZhcnsiQ0dPX0VOQUJMRUQiLCAiMSJ9KQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjgvZml4LXRhcmdldC1jYy1mb3ItYnVpbGQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOC9maXgtdGFyZ2V0LWNjLWZvci1idWlsZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmY2MTU2ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOC9maXgtdGFyZ2V0LWNjLWZvci1idWlsZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVB1dCBRdW90ZXMgYXJvdW5kIENDX0ZPUl9UQVJHRVQgc2luY2UgaXQgY2FuIGJlIG11dGxpcGxlIHdvcmRzIGUuZy4gaW4gT0UKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotSW5kZXg6IGdvL3NyYy9tYWtlLmJhc2gKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnby5vcmlnL3NyYy9tYWtlLmJhc2gJMjAxNS0wNy0yOSAxMzoyODoxMS4zMzQwMzE2OTYgLTA3MDAKLSsrKyBnby9zcmMvbWFrZS5iYXNoCTIwMTUtMDctMjkgMTM6MzY6NTUuODE0NDY1NjMwIC0wNzAwCi1AQCAtMTU4LDcgKzE1OCw3IEBACi0gZmkKLSAKLSBlY2hvICIjIyMjIyBCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yICRHT09TLyRHT0FSQ0guIgotLUNDPSRDQ19GT1JfVEFSR0VUICIkR09UT09MRElSIi9nb19ib290c3RyYXAgaW5zdGFsbCAkR09fRkxBR1MgLWdjZmxhZ3MgIiRHT19HQ0ZMQUdTIiAtbGRmbGFncyAiJEdPX0xERkxBR1MiIC12IHN0ZCBjbWQKLStDQz0iJENDX0ZPUl9UQVJHRVQiICIkR09UT09MRElSIi9nb19ib290c3RyYXAgaW5zdGFsbCAkR09fRkxBR1MgLWdjZmxhZ3MgIiRHT19HQ0ZMQUdTIiAtbGRmbGFncyAiJEdPX0xERkxBR1MiIC12IHN0ZCBjbWQKLSBlY2hvCi0gCi0gcm0gLWYgIiRHT1RPT0xESVIiL2dvX2Jvb3RzdHJhcApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjgvZ290b29sZGlyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjgvZ290b29sZGlyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NDY3MDI1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS44L2dvdG9vbGRpci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLURlZmluZSB0b29sZGlyIGluIHJlbGF0aW9uIHRvIEdPVE9PTERJUiBlbnYgdmFyCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLUluZGV4OiBnby9zcmMvZ28vYnVpbGQvYnVpbGQuZ28KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnby5vcmlnL3NyYy9nby9idWlsZC9idWlsZC5nbwotKysrIGdvL3NyYy9nby9idWlsZC9idWlsZC5nbwotQEAgLTEzODgsNyArMTM4OCw3IEBAIGZ1bmMgaW5pdCgpIHsKLSB9Ci0gCi0gLy8gVG9vbERpciBpcyB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgYnVpbGQgdG9vbHMuCi0tdmFyIFRvb2xEaXIgPSBmaWxlcGF0aC5Kb2luKHJ1bnRpbWUuR09ST09UKCksICJwa2cvdG9vbC8iK3J1bnRpbWUuR09PUysiXyIrcnVudGltZS5HT0FSQ0gpCi0rdmFyIFRvb2xEaXIgPSBlbnZPcigiR09UT09MRElSIiwgZmlsZXBhdGguSm9pbihydW50aW1lLkdPUk9PVCgpLCAicGtnL3Rvb2wvIitydW50aW1lLkdPT1MrIl8iK3J1bnRpbWUuR09BUkNIKSkKLSAKLSAvLyBJc0xvY2FsSW1wb3J0IHJlcG9ydHMgd2hldGhlciB0aGUgaW1wb3J0IHBhdGggaXMKLSAvLyBhIGxvY2FsIGltcG9ydCBwYXRoLCBsaWtlICIuIiwgIi4uIiwgIi4vZm9vIiwgb3IgIi4uL2ZvbyIuCi1JbmRleDogZ28vc3JjL2NtZC9nby9idWlsZC5nbwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdvLm9yaWcvc3JjL2NtZC9nby9idWlsZC5nbwotKysrIGdvL3NyYy9jbWQvZ28vYnVpbGQuZ28KLUBAIC0xMzEyLDcgKzEzMTIsNyBAQCBmdW5jIChiICpidWlsZGVyKSBidWlsZChhICphY3Rpb24pIChlcnIKLSAJCX0KLSAKLSAJCWNnb0V4ZSA6PSB0b29sKCJjZ28iKQotLQkJaWYgYS5jZ28gIT0gbmlsICYmIGEuY2dvLnRhcmdldCAhPSAiIiB7Ci0rCQlpZiBhLmNnbyAhPSBuaWwgJiYgYS5jZ28udGFyZ2V0ICE9ICIiICYmIG9zLkdldGVudigiR09UT09MRElSIikgPT0gIiIgewotIAkJCWNnb0V4ZSA9IGEuY2dvLnRhcmdldAotIAkJfQotIAkJb3V0R28sIG91dE9iaiwgZXJyIDo9IGIuY2dvKGEucCwgY2dvRXhlLCBvYmosIHBjQ0ZMQUdTLCBwY0xERkxBR1MsIGNnb2ZpbGVzLCBnY2NmaWxlcywgY3h4ZmlsZXMsIGEucC5NRmlsZXMpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOC9zcGxpdC1ob3N0LWFuZC10YXJnZXQtYnVpbGQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOC9zcGxpdC1ob3N0LWFuZC10YXJnZXQtYnVpbGQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwZGQ5NWIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjgvc3BsaXQtaG9zdC1hbmQtdGFyZ2V0LWJ1aWxkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotQWRkIG5ldyBvcHRpb24gLS10YXJnZXQtb25seSB0byBidWlsZCB0YXJnZXQgY29tcG9uZW50cwotU2VwYXJhdGVzIHRoZSBob3N0IGFuZCB0YXJnZXQgcGllY2VzIG9mIGJ1aWxkCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLUluZGV4OiBnby9zcmMvbWFrZS5iYXNoCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ28ub3JpZy9zcmMvbWFrZS5iYXNoCi0rKysgZ28vc3JjL21ha2UuYmFzaAotQEAgLTE1NCwxMyArMTU0LDIyIEBAIGlmIFsgIiQxIiA9ICItLW5vLWNsZWFuIiBdOyB0aGVuCi0gCWJ1aWxkYWxsPSIiCi0gCXNoaWZ0Ci0gZmkKLS0uL2NtZC9kaXN0L2Rpc3QgYm9vdHN0cmFwICRidWlsZGFsbCAkR09fRElTVEZMQUdTIC12ICMgYnVpbGRzIGdvX2Jvb3RzdHJhcAotK2RvX2hvc3RfYnVpbGQ9InllcyIKLStkb190YXJnZXRfYnVpbGQ9InllcyIKLStpZiBbICIkMSIgPSAiLS10YXJnZXQtb25seSIgXTsgdGhlbgotKwlkb19ob3N0X2J1aWxkPSJubyIKLSsJc2hpZnQKLStlbGlmIFsgIiQxIiA9ICItLWhvc3Qtb25seSIgXTsgdGhlbgotKwlkb190YXJnZXRfYnVpbGQ9Im5vIgotKwlzaGlmdAotK2ZpCi0gCi0tIyBEZWxheSBtb3ZlIG9mIGRpc3QgdG9vbCB0byBub3csIGJlY2F1c2UgYm9vdHN0cmFwIG1heSBjbGVhciB0b29sIGRpcmVjdG9yeS4KLS1tdiBjbWQvZGlzdC9kaXN0ICIkR09UT09MRElSIi9kaXN0Ci0tZWNobwotK2lmIFsgIiRkb19ob3N0X2J1aWxkIiA9ICJ5ZXMiIF07IHRoZW4KLSsJLi9jbWQvZGlzdC9kaXN0IGJvb3RzdHJhcCAkYnVpbGRhbGwgJEdPX0RJU1RGTEFHUyAtdiAjIGJ1aWxkcyBnb19ib290c3RyYXAKLSsJIyBEZWxheSBtb3ZlIG9mIGRpc3QgdG9vbCB0byBub3csIGJlY2F1c2UgYm9vdHN0cmFwIG1heSBjbGVhciB0b29sIGRpcmVjdG9yeS4KLSsJbXYgY21kL2Rpc3QvZGlzdCAiJEdPVE9PTERJUiIvZGlzdAotKwllY2hvCi0gCi0taWYgWyAiJEdPSE9TVEFSQ0giICE9ICIkR09BUkNIIiAtbyAiJEdPSE9TVE9TIiAhPSAiJEdPT1MiIF07IHRoZW4KLSAJZWNobyAiIyMjIyMgQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciBob3N0LCAkR09IT1NUT1MvJEdPSE9TVEFSQ0guIgotIAkjIENDX0ZPUl9UQVJHRVQgaXMgcmVjb3JkZWQgYXMgdGhlIGRlZmF1bHQgY29tcGlsZXIgZm9yIHRoZSBnbyB0b29sLiBXaGVuIGJ1aWxkaW5nIGZvciB0aGUgaG9zdCwgaG93ZXZlciwKLSAJIyB1c2UgdGhlIGhvc3QgY29tcGlsZXIsIENDLCBmcm9tIGBjbWQvZGlzdC9kaXN0IGVudmAgaW5zdGVhZC4KLUBAIC0xNjksMTEgKzE3OCwyMCBAQCBpZiBbICIkR09IT1NUQVJDSCIgIT0gIiRHT0FSQ0giIC1vICIkR09ICi0gCWVjaG8KLSBmaQotIAotLWVjaG8gIiMjIyMjIEJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgJEdPT1MvJEdPQVJDSC4iCi0tQ0M9IiRDQ19GT1JfVEFSR0VUIiAiJEdPVE9PTERJUiIvZ29fYm9vdHN0cmFwIGluc3RhbGwgJEdPX0ZMQUdTIC1nY2ZsYWdzICIkR09fR0NGTEFHUyIgLWxkZmxhZ3MgIiRHT19MREZMQUdTIiAtdiBzdGQgY21kCi0tZWNobwotK2lmIFsgIiRkb190YXJnZXRfYnVpbGQiID0gInllcyIgXTsgdGhlbgotKyAgICBHT19JTlNUQUxMPSIke0dPX1RBUkdFVF9JTlNUQUxMOi1zdGQgY21kfSIKLSsgICAgZWNobyAiIyMjIyMgQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciAkR09PUy8kR09BUkNILiIKLSsgICAgaWYgWyAiJEdPSE9TVE9TIiA9ICIkR09PUyIgLWEgIiRHT0hPU1RBUkNIIiA9ICIkR09BUkNIIiAtYSAiJGRvX2hvc3RfYnVpbGQiID0gInllcyIgXTsgdGhlbgotKwlybSAtcmYgLi9ob3N0LXRvb2xzCi0rCW1rZGlyIC4vaG9zdC10b29scwotKwltdiAiJEdPVE9PTERJUiIvKiAuL2hvc3QtdG9vbHMKLSsJR09UT09MRElSPSIkUFdEL2hvc3QtdG9vbHMiCi0rICAgIGZpCi0rICAgIEdPVE9PTERJUj0iJEdPVE9PTERJUiIgQ0M9IiRDQ19GT1JfVEFSR0VUIiAiJEdPVE9PTERJUiIvZ29fYm9vdHN0cmFwIGluc3RhbGwgJEdPX0ZMQUdTIC1nY2ZsYWdzICIkR09fR0NGTEFHUyIgLWxkZmxhZ3MgIiRHT19MREZMQUdTIiAtdiAke0dPX0lOU1RBTEx9Ci0rICAgIGVjaG8KLSAKLS1ybSAtZiAiJEdPVE9PTERJUiIvZ29fYm9vdHN0cmFwCi0rICAgIHJtIC1mICIkR09UT09MRElSIi9nb19ib290c3RyYXAKLStmaQotIAotIGlmIFsgIiQxIiAhPSAiLS1uby1iYW5uZXIiIF07IHRoZW4KLSAJIiRHT1RPT0xESVIiL2Rpc3QgYmFubmVyCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOC9zeXNsb2cucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOC9zeXNsb2cucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5YmUwNmYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjgvc3lzbG9nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotQWRkIHRpbWVvdXRzIHRvIGxvZ2dlcgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLWRpZmYgLXIgLXUgZ28vc3JjL2xvZy9zeXNsb2cvc3lzbG9nLmdvIC9ob21lL2FjaGFuZy9HT0NPUFkvZ28vc3JjL2xvZy9zeXNsb2cvc3lzbG9nLmdvCi0tLS0gZ28vc3JjL2xvZy9zeXNsb2cvc3lzbG9nLmdvCTIwMTMtMTEtMjggMTM6Mzg6MjguMDAwMDAwMDAwIC0wODAwCi0rKysgL2hvbWUvYWNoYW5nL0dPQ09QWS9nby9zcmMvbG9nL3N5c2xvZy9zeXNsb2cuZ28JMjAxNC0xMC0wMyAxMTo0NDozNy43MTA0MDMyMDAgLTA3MDAKLUBAIC0zMyw2ICszMyw5IEBACi0gY29uc3Qgc2V2ZXJpdHlNYXNrID0gMHgwNwotIGNvbnN0IGZhY2lsaXR5TWFzayA9IDB4ZjgKLSAKLSt2YXIgd3JpdGVUaW1lb3V0ID0gMSAqIHRpbWUuU2Vjb25kCi0rdmFyIGNvbm5lY3RUaW1lb3V0ID0gMSAqIHRpbWUuU2Vjb25kCi0rCi0gY29uc3QgKAotIAkvLyBTZXZlcml0eS4KLSAKLUBAIC0xMDAsNiArMTAzLDcgQEAKLSB0eXBlIHNlcnZlckNvbm4gaW50ZXJmYWNlIHsKLSAJd3JpdGVTdHJpbmcocCBQcmlvcml0eSwgaG9zdG5hbWUsIHRhZywgcywgbmwgc3RyaW5nKSBlcnJvcgotIAljbG9zZSgpIGVycm9yCi0rCXNldFdyaXRlRGVhZGxpbmUodCB0aW1lLlRpbWUpIGVycm9yCi0gfQotIAotIHR5cGUgbmV0Q29ubiBzdHJ1Y3QgewotQEAgLTI3Myw3ICsyNzcsMTEgQEAKLSAJCW5sID0gIlxuIgotIAl9Ci0gCi0tCWVyciA6PSB3LmNvbm4ud3JpdGVTdHJpbmcocCwgdy5ob3N0bmFtZSwgdy50YWcsIG1zZywgbmwpCi0rCWVyciA6PSB3LmNvbm4uc2V0V3JpdGVEZWFkbGluZSh0aW1lLk5vdygpLkFkZCh3cml0ZVRpbWVvdXQpKQotKwlpZiBlcnIgIT0gbmlsIHsKLSsJCXJldHVybiAwLCBlcnIKLSsJfQotKwllcnIgPSB3LmNvbm4ud3JpdGVTdHJpbmcocCwgdy5ob3N0bmFtZSwgdy50YWcsIG1zZywgbmwpCi0gCWlmIGVyciAhPSBuaWwgewotIAkJcmV0dXJuIDAsIGVycgotIAl9Ci1AQCAtMzA1LDYgKzMxMywxMCBAQAotIAlyZXR1cm4gbi5jb25uLkNsb3NlKCkKLSB9Ci0gCi0rZnVuYyAobiAqbmV0Q29ubikgc2V0V3JpdGVEZWFkbGluZSh0IHRpbWUuVGltZSkgZXJyb3IgewotKwlyZXR1cm4gbi5jb25uLlNldFdyaXRlRGVhZGxpbmUodCkKLSt9Ci0rCi0gLy8gTmV3TG9nZ2VyIGNyZWF0ZXMgYSBsb2cuTG9nZ2VyIHdob3NlIG91dHB1dCBpcyB3cml0dGVuIHRvCi0gLy8gdGhlIHN5c3RlbSBsb2cgc2VydmljZSB3aXRoIHRoZSBzcGVjaWZpZWQgcHJpb3JpdHkuIFRoZSBsb2dGbGFnCi0gLy8gYXJndW1lbnQgaXMgdGhlIGZsYWcgc2V0IHBhc3NlZCB0aHJvdWdoIHRvIGxvZy5OZXcgdG8gY3JlYXRlCi1kaWZmIC1yIC11IGdvL3NyYy9sb2cvc3lzbG9nL3N5c2xvZ191bml4LmdvIC9ob21lL2FjaGFuZy9HT0NPUFkvZ28vc3JjL2xvZy9zeXNsb2cvc3lzbG9nX3VuaXguZ28KLS0tLSBnby9zcmMvbG9nL3N5c2xvZy9zeXNsb2dfdW5peC5nbwkyMDEzLTExLTI4IDEzOjM4OjI4LjAwMDAwMDAwMCAtMDgwMAotKysrIC9ob21lL2FjaGFuZy9HT0NPUFkvZ28vc3JjL2xvZy9zeXNsb2cvc3lzbG9nX3VuaXguZ28JMjAxNC0xMC0wMyAxMTo0NDozOS4wMTA0MDMxNzUgLTA3MDAKLUBAIC0xOSw3ICsxOSw3IEBACi0gCWxvZ1BhdGhzIDo9IFtdc3RyaW5neyIvZGV2L2xvZyIsICIvdmFyL3J1bi9zeXNsb2cifQotIAlmb3IgXywgbmV0d29yayA6PSByYW5nZSBsb2dUeXBlcyB7Ci0gCQlmb3IgXywgcGF0aCA6PSByYW5nZSBsb2dQYXRocyB7Ci0tCQkJY29ubiwgZXJyIDo9IG5ldC5EaWFsKG5ldHdvcmssIHBhdGgpCi0rCQkJY29ubiwgZXJyIDo9IG5ldC5EaWFsVGltZW91dChuZXR3b3JrLCBwYXRoLCBjb25uZWN0VGltZW91dCkKLSAJCQlpZiBlcnIgIT0gbmlsIHsKLSAJCQkJY29udGludWUKLSAJCQl9IGVsc2UgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjkuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjkuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmMTIyNDEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOS5pbmMKQEAgLTAsMCArMSwyMyBAQAorcmVxdWlyZSBnby1jb21tb24uaW5jCisKK0dPX0JBU0VWRVJTSU9OID0gIjEuOSIKK0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke0ZJTEVfRElSTkFNRX0vZ28tJHtHT19CQVNFVkVSU0lPTn06IgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT01ZDQ5NTBlY2I3YjI2ZDJjNWU0ZTdiNGUwZGQ3NDcwNyIKKworU1JDX1VSSSArPSAiXAorICAgICAgICBmaWxlOi8vMDAwMS1tYWtlLmJhc2gtcXVvdGUtQ0NfRk9SX1RBUkdFVC5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly8wMDAyLWNtZC1nby1maXgtQ0MtYW5kLUNYWC1lbnZpcm9ubWVudC12YXJpYWJsZS1jb25zdHJ1Y3QucGF0Y2ggXAorICAgICAgICBmaWxlOi8vMDAwMy1tYWtlLmJhc2gtYmV0dGVyLXNlcGFyYXRlLWhvc3QtYW5kLXRhcmdldC1idWlsZHMucGF0Y2ggXAorICAgICAgICBmaWxlOi8vMDAwNC1jbWQtZ28tYWxsb3ctR09UT09MRElSLXRvLWJlLW92ZXJyaWRkZW4taW4tdGhlLWVudmlyLnBhdGNoIFwKKyAgICAgICAgZmlsZTovLzAwMDUtY21kLWdvLW1ha2UtR09ST09ULXByZWNpb3VzLWJ5LWRlZmF1bHQucGF0Y2ggXAorICAgICAgICBmaWxlOi8vMDAwNi1tYWtlLmJhc2gtYWRkLUdPVE9PTERJUl9CT09UU1RSQVAtZW52aXJvbm1lbnQtdmFyaWFiLnBhdGNoIFwKKyAgICAgICAgZmlsZTovLzAwMDctbGQtYWRkLXNvbmFtZS10by1zaGFyZWFibGUtb2JqZWN0cy5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly8wMDA4LW1ha2UuYmFzaC1hZGQtR09IT1NUeHgtaW5kaXJlY3Rpb24tZm9yLWNyb3NzLWNhbmFkaWEucGF0Y2ggXAorICAgICAgICBmaWxlOi8vMDAwOS1jbWQtZ28tYnVpbGRtb2RlLXBpZS1mb3JjZXMtZXh0ZXJuYWwtbGlua2luZy1tb2RlLW9uLnBhdGNoIFwKKyAgICAgICAgZmlsZTovLzAwMTAtbWFrZS5iYXNoLW92ZXJyaWRlLUNDLXdoZW4tYnVpbGRpbmctZGlzdC1hbmQtZ29fYm9vdC5wYXRjaCBcCisiCitTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly9zZXQtZXh0ZXJuYWwtbGlua2VyLnBhdGNoIgorCitTUkNfVVJJW21haW4ubWQ1c3VtXSA9ICJkYTJkNDRlYTM4NDA3NmVmZWM0M2VlMWY4YjdkNDVkMiIKK1NSQ19VUklbbWFpbi5zaGEyNTZzdW1dID0gImE0YWIyMjkwMjhlZDE2N2JhMTk4NjgyNTc1MTQ2MzYwNTI2NGU0NDg2ODM2MmNhOGU3YWNjYzhiZTA1N2U5OTMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOS8wMDAxLW1ha2UuYmFzaC1xdW90ZS1DQ19GT1JfVEFSR0VULnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjkvMDAwMS1tYWtlLmJhc2gtcXVvdGUtQ0NfRk9SX1RBUkdFVC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODAwOTc1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjkvMDAwMS1tYWtlLmJhc2gtcXVvdGUtQ0NfRk9SX1RBUkdFVC5wYXRjaApAQCAtMCwwICsxLDMyIEBACitGcm9tIGQyNDczNGFkNDQwMDY3OTFmZDQ4ZmM0NWVhMzRmZTYwOGZmNjcyZmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgorRGF0ZTogV2VkLCAxMyBTZXAgMjAxNyAwODowNDoyMyAtMDcwMAorU3ViamVjdDogW1BBVENIIDEvN10gbWFrZS5iYXNoOiBxdW90ZSBDQ19GT1JfVEFSR0VUCisKK0ZvciBPRSBjcm9zcy1idWlsZHMsICRDQ19GT1JfVEFSR0VUIGhhcyBtb3JlIHRoYW4KK29uZSB3b3JkIGFuZCBuZWVkcyB0byBiZSBxdW90ZWQuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KKy0tLQorIHNyYy9tYWtlLmJhc2ggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvbWFrZS5iYXNoIGIvc3JjL21ha2UuYmFzaAoraW5kZXggNzFlNzUzMS4uZGNmMzI1NiAxMDA3NTUKKy0tLSBhL3NyYy9tYWtlLmJhc2gKKysrKyBiL3NyYy9tYWtlLmJhc2gKK0BAIC0xNzUsNyArMTc1LDcgQEAgZWNobyAiIyMjIyMgQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciAkR09PUy8kR09BUkNILiIKKyAKKyBvbGRfYmluX2ZpbGVzPSQoY2QgJEdPUk9PVC9iaW4gJiYgZWNobyAqKQorIAorLUNDPSRDQ19GT1JfVEFSR0VUICIkR09UT09MRElSIi9nb19ib290c3RyYXAgaW5zdGFsbCAkR09fRkxBR1MgLWdjZmxhZ3MgIiRHT19HQ0ZMQUdTIiAtbGRmbGFncyAiJEdPX0xERkxBR1MiIC12IHN0ZCBjbWQKKytDQz0iJENDX0ZPUl9UQVJHRVQiICIkR09UT09MRElSIi9nb19ib290c3RyYXAgaW5zdGFsbCAkR09fRkxBR1MgLWdjZmxhZ3MgIiRHT19HQ0ZMQUdTIiAtbGRmbGFncyAiJEdPX0xERkxBR1MiIC12IHN0ZCBjbWQKKyAKKyAjIENoZWNrIHRoYXQgdGhlcmUgYXJlIG5vIG5ldyBmaWxlcyBpbiAkR09ST09UL2JpbiBvdGhlciB0aGFuIGdvIGFuZCBnb2ZtdAorICMgYW5kICRHT09TXyRHT0FSQ0ggKGEgZGlyZWN0b3J5IHVzZWQgd2hlbiBjcm9zcy1jb21waWxpbmcpLgorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOS8wMDAyLWNtZC1nby1maXgtQ0MtYW5kLUNYWC1lbnZpcm9ubWVudC12YXJpYWJsZS1jb25zdHJ1Y3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOS8wMDAyLWNtZC1nby1maXgtQ0MtYW5kLUNYWC1lbnZpcm9ubWVudC12YXJpYWJsZS1jb25zdHJ1Y3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTRlNDIyNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS45LzAwMDItY21kLWdvLWZpeC1DQy1hbmQtQ1hYLWVudmlyb25tZW50LXZhcmlhYmxlLWNvbnN0cnVjdC5wYXRjaApAQCAtMCwwICsxLDY3IEBACitGcm9tIGE3MTcwZDMyYTEzYWVhZDYwOGFiZDE4OTk2ZjZkYWIyZTJhNjMxYjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgorRGF0ZTogV2VkLCAxMyBTZXAgMjAxNyAwODowNjozNyAtMDcwMAorU3ViamVjdDogW1BBVENIIDIvN10gY21kL2dvOiBmaXggQ0MgYW5kIENYWCBlbnZpcm9ubWVudCB2YXJpYWJsZSBjb25zdHJ1Y3Rpb24KKworRm9yIE9FIGNyb3NzLWJ1aWxkcywgQ0MgYW5kIENYWCBoYXZlIG11bHRpcGxlIHdvcmRzLCBhbmQKK3dlIG5lZWQgdGhlaXIgY29tcGxldGUgZGVmaW5pdGlvbnMgd2hlbiBzZXR0aW5nIHVwIHRoZQorZW52aXJvbm1lbnQgZHVyaW5nIEdvIGJ1aWxkcy4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgorLS0tCisgc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvIHwgIDQgKystLQorIHNyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbyB8IDEyICsrKysrKysrKysrKworIDIgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbworaW5kZXggNDNkNDMzNC4uNTI5ZDIxZCAxMDA2NDQKKy0tLSBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbworKysrIGIvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvCitAQCAtNzQsMTAgKzc0LDEwIEBAIGZ1bmMgTWtFbnYoKSBbXWNmZy5FbnZWYXIgeworIAl9CisgCisgCWNtZCA6PSBiLkdjY0NtZCgiLiIpCistCWVudiA9IGFwcGVuZChlbnYsIGNmZy5FbnZWYXJ7TmFtZTogIkNDIiwgVmFsdWU6IGNtZFswXX0pCisrCWVudiA9IGFwcGVuZChlbnYsIGNmZy5FbnZWYXJ7TmFtZTogIkNDIiwgVmFsdWU6IHN0cmluZ3MuSm9pbihiLkdjY0NtZEZvclJlYWwoKSwgIiAiKX0pCisgCWVudiA9IGFwcGVuZChlbnYsIGNmZy5FbnZWYXJ7TmFtZTogIkdPR0NDRkxBR1MiLCBWYWx1ZTogc3RyaW5ncy5Kb2luKGNtZFszOl0sICIgIil9KQorIAljbWQgPSBiLkd4eENtZCgiLiIpCistCWVudiA9IGFwcGVuZChlbnYsIGNmZy5FbnZWYXJ7TmFtZTogIkNYWCIsIFZhbHVlOiBjbWRbMF19KQorKwllbnYgPSBhcHBlbmQoZW52LCBjZmcuRW52VmFye05hbWU6ICJDWFgiLCBWYWx1ZTogc3RyaW5ncy5Kb2luKGIuR3h4Q21kRm9yUmVhbCgpLCAiICIpfSkKKyAKKyAJaWYgY2ZnLkJ1aWxkQ29udGV4dC5DZ29FbmFibGVkIHsKKyAJCWVudiA9IGFwcGVuZChlbnYsIGNmZy5FbnZWYXJ7TmFtZTogIkNHT19FTkFCTEVEIiwgVmFsdWU6ICIxIn0pCitkaWZmIC0tZ2l0IGEvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvIGIvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvCitpbmRleCA3ZDY2N2ZmLi44NWRmMGIzIDEwMDY0NAorLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvCisrKysgYi9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYnVpbGQuZ28KK0BAIC0zMTI3LDEyICszMTI3LDI0IEBAIGZ1bmMgKGIgKkJ1aWxkZXIpIEdjY0NtZChvYmpkaXIgc3RyaW5nKSBbXXN0cmluZyB7CisgCXJldHVybiBiLmNjb21waWxlckNtZCgiQ0MiLCBjZmcuRGVmYXVsdENDLCBvYmpkaXIpCisgfQorIAorKy8vIGdjY0NtZCByZXR1cm5zIGEgZ2NjIGNvbW1hbmQgbGluZSBwcmVmaXgKKysvLyBkZWZhdWx0Q0MgaXMgZGVmaW5lZCBpbiB6ZGVmYXVsdGNjLmdvLCB3cml0dGVuIGJ5IGNtZC9kaXN0LgorK2Z1bmMgKGIgKkJ1aWxkZXIpIEdjY0NtZEZvclJlYWwoKSBbXXN0cmluZyB7CisrCXJldHVybiBlbnZMaXN0KCJDQyIsIGNmZy5EZWZhdWx0Q0MpCisrfQorKworIC8vIGd4eENtZCByZXR1cm5zIGEgZysrIGNvbW1hbmQgbGluZSBwcmVmaXgKKyAvLyBkZWZhdWx0Q1hYIGlzIGRlZmluZWQgaW4gemRlZmF1bHRjYy5nbywgd3JpdHRlbiBieSBjbWQvZGlzdC4KKyBmdW5jIChiICpCdWlsZGVyKSBHeHhDbWQob2JqZGlyIHN0cmluZykgW11zdHJpbmcgeworIAlyZXR1cm4gYi5jY29tcGlsZXJDbWQoIkNYWCIsIGNmZy5EZWZhdWx0Q1hYLCBvYmpkaXIpCisgfQorIAorKy8vIGd4eENtZCByZXR1cm5zIGEgZysrIGNvbW1hbmQgbGluZSBwcmVmaXgKKysvLyBkZWZhdWx0Q1hYIGlzIGRlZmluZWQgaW4gemRlZmF1bHRjYy5nbywgd3JpdHRlbiBieSBjbWQvZGlzdC4KKytmdW5jIChiICpCdWlsZGVyKSBHeHhDbWRGb3JSZWFsKCkgW11zdHJpbmcgeworKwlyZXR1cm4gZW52TGlzdCgiQ1hYIiwgY2ZnLkRlZmF1bHRDWFgpCisrfQorKworIC8vIGdmb3J0cmFuQ21kIHJldHVybnMgYSBnZm9ydHJhbiBjb21tYW5kIGxpbmUgcHJlZml4LgorIGZ1bmMgKGIgKkJ1aWxkZXIpIGdmb3J0cmFuQ21kKG9iamRpciBzdHJpbmcpIFtdc3RyaW5nIHsKKyAJcmV0dXJuIGIuY2NvbXBpbGVyQ21kKCJGQyIsICJnZm9ydHJhbiIsIG9iamRpcikKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjkvMDAwMy1tYWtlLmJhc2gtYmV0dGVyLXNlcGFyYXRlLWhvc3QtYW5kLXRhcmdldC1idWlsZHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOS8wMDAzLW1ha2UuYmFzaC1iZXR0ZXItc2VwYXJhdGUtaG9zdC1hbmQtdGFyZ2V0LWJ1aWxkcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZmQ5ZjIzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjkvMDAwMy1tYWtlLmJhc2gtYmV0dGVyLXNlcGFyYXRlLWhvc3QtYW5kLXRhcmdldC1idWlsZHMucGF0Y2gKQEAgLTAsMCArMSw5MiBAQAorRnJvbSAzMWU4OGYwNmFmN2FiNzg3ZDhmZTBjMWNhNjI1MTkzZTE3OTllMTY3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KK0RhdGU6IFdlZCwgMTMgU2VwIDIwMTcgMDg6MTI6MDQgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAzLzddIG1ha2UuYmFzaDogYmV0dGVyIHNlcGFyYXRlIGhvc3QgYW5kIHRhcmdldCBidWlsZHMKKworRm9yZSBPRSBjcm9zcy1idWlsZHMsIHRoZSBzaW1wbGUgY2hlY2tzIGluIG1ha2UuYmFzaCBhcmUKK2luc3VmZmljaWVudCBmb3IgZGlzdGluZ3Vpc2hpbmcgaG9zdCBhbmQgdGFyZ2V0IGJ1aWxkCitlbnZpcm9ubWVudHMsIHNvIGFkZCBzb21lIG9wdGlvbnMgZm9yIHRlbGxpbmcgdGhlCitzY3JpcHQgd2hpY2ggcGFydHMgYXJlIGJlaW5nIGJ1aWx0LgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+CistLS0KKyBzcmMvbWFrZS5iYXNoIHwgNTEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDIzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL21ha2UuYmFzaCBiL3NyYy9tYWtlLmJhc2gKK2luZGV4IGRjZjMyNTYuLjk1NTM2MjMgMTAwNzU1CistLS0gYS9zcmMvbWFrZS5iYXNoCisrKysgYi9zcmMvbWFrZS5iYXNoCitAQCAtMTU2LDEzICsxNTYsMjIgQEAgaWYgWyAiJDEiID0gIi0tbm8tY2xlYW4iIF07IHRoZW4KKyAJYnVpbGRhbGw9IiIKKyAJc2hpZnQKKyBmaQorLS4vY21kL2Rpc3QvZGlzdCBib290c3RyYXAgJGJ1aWxkYWxsICRHT19ESVNURkxBR1MgLXYgIyBidWlsZHMgZ29fYm9vdHN0cmFwCisrZG9faG9zdF9idWlsZD0ieWVzIgorK2RvX3RhcmdldF9idWlsZD0ieWVzIgorK2lmIFsgIiQxIiA9ICItLXRhcmdldC1vbmx5IiBdOyB0aGVuCisrCWRvX2hvc3RfYnVpbGQ9Im5vIgorKwlzaGlmdAorK2VsaWYgWyAiJDEiID0gIi0taG9zdC1vbmx5IiBdOyB0aGVuCisrCWRvX3RhcmdldF9idWlsZD0ibm8iCisrCXNoaWZ0CisrZmkKKyAKKy0jIERlbGF5IG1vdmUgb2YgZGlzdCB0b29sIHRvIG5vdywgYmVjYXVzZSBib290c3RyYXAgbWF5IGNsZWFyIHRvb2wgZGlyZWN0b3J5LgorLW12IGNtZC9kaXN0L2Rpc3QgIiRHT1RPT0xESVIiL2Rpc3QKKy1lY2hvCisraWYgWyAiJGRvX2hvc3RfYnVpbGQiID0gInllcyIgXTsgdGhlbgorKwkuL2NtZC9kaXN0L2Rpc3QgYm9vdHN0cmFwICRidWlsZGFsbCAkR09fRElTVEZMQUdTIC12ICMgYnVpbGRzIGdvX2Jvb3RzdHJhcAorKwkjIERlbGF5IG1vdmUgb2YgZGlzdCB0b29sIHRvIG5vdywgYmVjYXVzZSBib290c3RyYXAgbWF5IGNsZWFyIHRvb2wgZGlyZWN0b3J5LgorKwltdiBjbWQvZGlzdC9kaXN0ICIkR09UT09MRElSIi9kaXN0CisrCWVjaG8KKyAKKy1pZiBbICIkR09IT1NUQVJDSCIgIT0gIiRHT0FSQ0giIC1vICIkR09IT1NUT1MiICE9ICIkR09PUyIgXTsgdGhlbgorIAllY2hvICIjIyMjIyBCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yIGhvc3QsICRHT0hPU1RPUy8kR09IT1NUQVJDSC4iCisgCSMgQ0NfRk9SX1RBUkdFVCBpcyByZWNvcmRlZCBhcyB0aGUgZGVmYXVsdCBjb21waWxlciBmb3IgdGhlIGdvIHRvb2wuIFdoZW4gYnVpbGRpbmcgZm9yIHRoZSBob3N0LCBob3dldmVyLAorIAkjIHVzZSB0aGUgaG9zdCBjb21waWxlciwgQ0MsIGZyb20gYGNtZC9kaXN0L2Rpc3QgZW52YCBpbnN0ZWFkLgorQEAgLTE3MSwyNCArMTgwLDIwIEBAIGlmIFsgIiRHT0hPU1RBUkNIIiAhPSAiJEdPQVJDSCIgLW8gIiRHT0hPU1RPUyIgIT0gIiRHT09TIiBdOyB0aGVuCisgCWVjaG8KKyBmaQorIAorLWVjaG8gIiMjIyMjIEJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgJEdPT1MvJEdPQVJDSC4iCistCistb2xkX2Jpbl9maWxlcz0kKGNkICRHT1JPT1QvYmluICYmIGVjaG8gKikKKy0KKy1DQz0iJENDX0ZPUl9UQVJHRVQiICIkR09UT09MRElSIi9nb19ib290c3RyYXAgaW5zdGFsbCAkR09fRkxBR1MgLWdjZmxhZ3MgIiRHT19HQ0ZMQUdTIiAtbGRmbGFncyAiJEdPX0xERkxBR1MiIC12IHN0ZCBjbWQKKy0KKy0jIENoZWNrIHRoYXQgdGhlcmUgYXJlIG5vIG5ldyBmaWxlcyBpbiAkR09ST09UL2JpbiBvdGhlciB0aGFuIGdvIGFuZCBnb2ZtdAorLSMgYW5kICRHT09TXyRHT0FSQ0ggKGEgZGlyZWN0b3J5IHVzZWQgd2hlbiBjcm9zcy1jb21waWxpbmcpLgorLShjZCAkR09ST09UL2JpbiAmJiBmb3IgZiBpbiAqOyBkbworLQlpZiAhIGV4cHIgIiAkb2xkX2Jpbl9maWxlcyBnbyBnb2ZtdCAke0dPT1N9XyR7R09BUkNIfSAiIDogIi4qICRmICIgPi9kZXYvbnVsbCAyPi9kZXYvbnVsbDsgdGhlbgorLQkJZWNobyAxPiYyICJFUlJPUjogdW5leHBlY3RlZCBuZXcgZmlsZSBpbiAkR09ST09UL2JpbjogJGYiCistCQlleGl0IDEKKy0JZmkKKy1kb25lKQorLQorLWVjaG8KKy0KKy1ybSAtZiAiJEdPVE9PTERJUiIvZ29fYm9vdHN0cmFwCisraWYgWyAiJGRvX3RhcmdldF9idWlsZCIgPSAieWVzIiBdOyB0aGVuCisrICAgIEdPX0lOU1RBTEw9IiR7R09fVEFSR0VUX0lOU1RBTEw6LXN0ZCBjbWR9IgorKyAgICBlY2hvICIjIyMjIyBCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yICRHT09TLyRHT0FSQ0guIgorKyAgICBpZiBbICIkR09IT1NUT1MiID0gIiRHT09TIiAtYSAiJEdPSE9TVEFSQ0giID0gIiRHT0FSQ0giIC1hICIkZG9faG9zdF9idWlsZCIgPSAieWVzIiBdOyB0aGVuCisrCXJtIC1yZiAuL2hvc3QtdG9vbHMKKysJbWtkaXIgLi9ob3N0LXRvb2xzCisrCW12ICIkR09UT09MRElSIi8qIC4vaG9zdC10b29scworKwlHT1RPT0xESVI9IiRQV0QvaG9zdC10b29scyIKKysgICAgZmkKKysgICAgR09UT09MRElSPSIkR09UT09MRElSIiBDQz0iJENDX0ZPUl9UQVJHRVQiICIkR09UT09MRElSIi9nb19ib290c3RyYXAgaW5zdGFsbCAkR09fRkxBR1MgLWdjZmxhZ3MgIiRHT19HQ0ZMQUdTIiAtbGRmbGFncyAiJEdPX0xERkxBR1MiIC12ICR7R09fSU5TVEFMTH0KKysgICAgZWNobworKworKyAgICBybSAtZiAiJEdPVE9PTERJUiIvZ29fYm9vdHN0cmFwCisrZmkKKyAKKyBpZiBbICIkMSIgIT0gIi0tbm8tYmFubmVyIiBdOyB0aGVuCisgCSIkR09UT09MRElSIi9kaXN0IGJhbm5lcgorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOS8wMDA0LWNtZC1nby1hbGxvdy1HT1RPT0xESVItdG8tYmUtb3ZlcnJpZGRlbi1pbi10aGUtZW52aXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOS8wMDA0LWNtZC1nby1hbGxvdy1HT1RPT0xESVItdG8tYmUtb3ZlcnJpZGRlbi1pbi10aGUtZW52aXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTgwYjA2YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS45LzAwMDQtY21kLWdvLWFsbG93LUdPVE9PTERJUi10by1iZS1vdmVycmlkZGVuLWluLXRoZS1lbnZpci5wYXRjaApAQCAtMCwwICsxLDY4IEBACitGcm9tIDEzNjkxNzhiNDk3YjEyMDg4ZWM0YzI3OTQ2MDZjYzlmMTRjYzMyN2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgorRGF0ZTogV2VkLCAxMyBTZXAgMjAxNyAwODoxNTowMyAtMDcwMAorU3ViamVjdDogW1BBVENIIDQvN10gY21kL2dvOiBhbGxvdyBHT1RPT0xESVIgdG8gYmUgb3ZlcnJpZGRlbiBpbiB0aGUKKyBlbnZpcm9ubWVudAorCitGb3IgT0UgY3Jvc3MtYnVpbGRzLCBob3N0LXNpZGUgdG9vbHMgcmVzaWRlIGluIHRoZSBuYXRpdmUKK0dPUk9PVCwgbm90IHRoZSB0YXJnZXQgR09ST09ULiAgQWxsb3cgR09UT09MRElSIHRvIGJlIHNldAoraW4gdGhlIGVudmlyb25tZW50IHRvIGFsbG93IHRoYXQgc3BsaXQsIHJhdGhlciB0aGFuIGFsd2F5cworY29tcHV0aW5nIEdPVE9PTERJUiByZWxhdGl2ZSB0byB0aGUgR09ST09UIHNldHRpbmcuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KKy0tLQorIHNyYy9jbWQvZ28vaW50ZXJuYWwvY2ZnL2NmZy5nbyAgICB8IDcgKysrKysrLQorIHNyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbyB8IDIgKy0KKyBzcmMvZ28vYnVpbGQvYnVpbGQuZ28gICAgICAgICAgICAgfCAyICstCisgMyBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvY21kL2dvL2ludGVybmFsL2NmZy9jZmcuZ28gYi9zcmMvY21kL2dvL2ludGVybmFsL2NmZy9jZmcuZ28KK2luZGV4IGIzYWQxY2UuLmMxZGM5NzQgMTAwNjQ0CistLS0gYS9zcmMvY21kL2dvL2ludGVybmFsL2NmZy9jZmcuZ28KKysrKyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvY2ZnL2NmZy5nbworQEAgLTkxLDcgKzkxLDEyIEBAIGZ1bmMgaW5pdCgpIHsKKyAJLy8gYXMgdGhlIHRvb2wgZGlyZWN0b3J5IGRvZXMgbm90IG1vdmUgYmFzZWQgb24gZW52aXJvbm1lbnQgdmFyaWFibGVzLgorIAkvLyBUaGlzIG1hdGNoZXMgdGhlIGluaXRpYWxpemF0aW9uIG9mIFRvb2xEaXIgaW4gZ28vYnVpbGQsCisgCS8vIGV4Y2VwdCBmb3IgdXNpbmcgR09ST09UIHJhdGhlciB0aGFuIHJ1bnRpbWUuR09ST09UKCkuCistCWJ1aWxkLlRvb2xEaXIgPSBmaWxlcGF0aC5Kb2luKEdPUk9PVCwgInBrZy90b29sLyIrcnVudGltZS5HT09TKyJfIitydW50aW1lLkdPQVJDSCkKKysJcyA6PSBvcy5HZXRlbnYoIkdPVE9PTERJUiIpCisrCWlmIHMgPT0gIiIgeworKwkJYnVpbGQuVG9vbERpciA9IGZpbGVwYXRoLkpvaW4oR09ST09ULCAicGtnL3Rvb2wvIitydW50aW1lLkdPT1MrIl8iK3J1bnRpbWUuR09BUkNIKQorKwl9IGVsc2UgeworKwkJYnVpbGQuVG9vbERpciA9IHMKKysJfQorIH0KKyAKKyBmdW5jIGZpbmRHT1JPT1QoKSBzdHJpbmcgeworZGlmZiAtLWdpdCBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbworaW5kZXggODVkZjBiMy4uN2I5YTY5ZSAxMDA2NDQKKy0tLSBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbworKysrIGIvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvCitAQCAtMTMzNyw3ICsxMzM3LDcgQEAgZnVuYyAoYiAqQnVpbGRlcikgYnVpbGQoYSAqQWN0aW9uKSAoZXJyIGVycm9yKSB7CisgCQl9CisgCisgCQl2YXIgY2dvRXhlIHN0cmluZworLQkJaWYgYS5jZ28gIT0gbmlsICYmIGEuY2dvLlRhcmdldCAhPSAiIiB7CisrCQlpZiBhLmNnbyAhPSBuaWwgJiYgYS5jZ28uVGFyZ2V0ICE9ICIiICYmIG9zLkdldGVudigiR09UT09MRElSIikgPT0gIiIgeworIAkJCWNnb0V4ZSA9IGEuY2dvLlRhcmdldAorIAkJfSBlbHNlIHsKKyAJCQljZ29FeGUgPSBiYXNlLlRvb2woImNnbyIpCitkaWZmIC0tZ2l0IGEvc3JjL2dvL2J1aWxkL2J1aWxkLmdvIGIvc3JjL2dvL2J1aWxkL2J1aWxkLmdvCitpbmRleCBmZDg5ODcxLi5lMTYxNDViIDEwMDY0NAorLS0tIGEvc3JjL2dvL2J1aWxkL2J1aWxkLmdvCisrKysgYi9zcmMvZ28vYnVpbGQvYnVpbGQuZ28KK0BAIC0xNTg4LDcgKzE1ODgsNyBAQCBmdW5jIGluaXQoKSB7CisgfQorIAorIC8vIFRvb2xEaXIgaXMgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIGJ1aWxkIHRvb2xzLgorLXZhciBUb29sRGlyID0gZmlsZXBhdGguSm9pbihydW50aW1lLkdPUk9PVCgpLCAicGtnL3Rvb2wvIitydW50aW1lLkdPT1MrIl8iK3J1bnRpbWUuR09BUkNIKQorK3ZhciBUb29sRGlyID0gZW52T3IoIkdPVE9PTERJUiIsIGZpbGVwYXRoLkpvaW4ocnVudGltZS5HT1JPT1QoKSwgInBrZy90b29sLyIrcnVudGltZS5HT09TKyJfIitydW50aW1lLkdPQVJDSCkpCisgCisgLy8gSXNMb2NhbEltcG9ydCByZXBvcnRzIHdoZXRoZXIgdGhlIGltcG9ydCBwYXRoIGlzCisgLy8gYSBsb2NhbCBpbXBvcnQgcGF0aCwgbGlrZSAiLiIsICIuLiIsICIuL2ZvbyIsIG9yICIuLi9mb28iLgorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOS8wMDA1LWNtZC1nby1tYWtlLUdPUk9PVC1wcmVjaW91cy1ieS1kZWZhdWx0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjkvMDAwNS1jbWQtZ28tbWFrZS1HT1JPT1QtcHJlY2lvdXMtYnktZGVmYXVsdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTkzYmNiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjkvMDAwNS1jbWQtZ28tbWFrZS1HT1JPT1QtcHJlY2lvdXMtYnktZGVmYXVsdC5wYXRjaApAQCAtMCwwICsxLDQxIEBACitGcm9tIDQ0Zjk2MTk3NWRhYzZjZjQ2NGE3N2I1ZjZkZDBjNDdjYzE5MmM0ZmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgorRGF0ZTogV2VkLCAxMyBTZXAgMjAxNyAwODoxOTo1MiAtMDcwMAorU3ViamVjdDogW1BBVENIIDUvN10gY21kL2dvOiBtYWtlIEdPUk9PVCBwcmVjaW91cyBieSBkZWZhdWx0CisKK0ZvciBPRSBidWlsZHMsIHdlIG5ldmVyIHdhbnQgcGFja2FnZXMgdGhhdCBoYXZlCithbHJlYWR5IGJlZW4gaW5zdGFsbGVkIGludG8gdGhlIGJ1aWxkIHJvb3QgdG8gYmUKK21vZGlmaWVkLCBzbyBwcmV2ZW50IHRoZSBnbyBidWlsZCB0b29sIGZyb20gY2hlY2tpbmcKK2lmIHRoZXkgc2hvdWxkIGJlIHJlYnVpbHQuCisKK0Fsc28gYWRkIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIG92ZXJyaWRlIHRoaXMKK2JlaGF2aW9yLCBqdXN0IGZvciBidWlsZGluZyB0aGUgR28gcnVudGltZS4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+CistLS0KKyBzcmMvY21kL2dvL2ludGVybmFsL2xvYWQvcGtnLmdvIHwgNyArKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2NtZC9nby9pbnRlcm5hbC9sb2FkL3BrZy5nbyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvbG9hZC9wa2cuZ28KK2luZGV4IDYwZGU2NjYuLjI2NjBkM2YgMTAwNjQ0CistLS0gYS9zcmMvY21kL2dvL2ludGVybmFsL2xvYWQvcGtnLmdvCisrKysgYi9zcmMvY21kL2dvL2ludGVybmFsL2xvYWQvcGtnLmdvCitAQCAtMTUzMCw2ICsxNTMwLDEzIEBAIGZ1bmMgaXNTdGFsZShwICpQYWNrYWdlKSAoYm9vbCwgc3RyaW5nKSB7CisgCQlyZXR1cm4gdHJ1ZSwgImJ1aWxkIElEIG1pc21hdGNoIgorIAl9CisgCisrCS8vIEZvciBPRSBidWlsZHMsIG1ha2UgYW55dGhpbmcgaW4gR09ST09UIG5vbi1zdGFsZSwKKysJLy8gdG8gcHJldmVudCBhIHBhY2thZ2UgYnVpbGQgZnJvbSBvdmVyd3JpdGluZyB0aGUKKysJLy8gYnVpbGQgcm9vdC4KKysJaWYgcC5Hb3Jvb3QgJiYgb3MuR2V0ZW52KCJHT1JPT1RfT1ZFUlJJREUiKSAhPSAiMSIgeworKwkJcmV0dXJuIGZhbHNlLCAiR09ST09ULXJlc2lkZW50IHBhY2thZ2VzIGRvIG5vdCBnZXQgcmVidWlsdCIKKysJfQorKworIAkvLyBQYWNrYWdlIGlzIHN0YWxlIGlmIGEgZGVwZW5kZW5jeSBpcy4KKyAJZm9yIF8sIHAxIDo9IHJhbmdlIHAuSW50ZXJuYWwuRGVwcyB7CisgCQlpZiBwMS5TdGFsZSB7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS45LzAwMDYtbWFrZS5iYXNoLWFkZC1HT1RPT0xESVJfQk9PVFNUUkFQLWVudmlyb25tZW50LXZhcmlhYi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS45LzAwMDYtbWFrZS5iYXNoLWFkZC1HT1RPT0xESVJfQk9PVFNUUkFQLWVudmlyb25tZW50LXZhcmlhYi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMGY1NjQwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjkvMDAwNi1tYWtlLmJhc2gtYWRkLUdPVE9PTERJUl9CT09UU1RSQVAtZW52aXJvbm1lbnQtdmFyaWFiLnBhdGNoCkBAIC0wLDAgKzEsMzYgQEAKK0Zyb20gYWFlNzRkMTA0NWNhMDMzMDZiYTQxNTkyMDZlZTNiYWM3MmJjZGZiYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+CitEYXRlOiBXZWQsIDEzIFNlcCAyMDE3IDA4OjIzOjIzIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggNi83XSBtYWtlLmJhc2g6IGFkZCBHT1RPT0xESVJfQk9PVFNUUkFQIGVudmlyb25tZW50IHZhcmlhYmxlCisKK0ZvciBjcm9zcy1jYW5hZGlhbiBidWlsZHMsIHdlIG5lZWQgdG8gdXNlIHRoZSBuYXRpdmUKK0dPVE9PTERJUiBkdXJpbmcgdGhlIGJvb3RzdHJhcCBwaGFzZSwgc28gcHJvdmlkZSBhIHdheQordG8gcGFzcyB0aGF0IHNldHRpbmcgaW50byB0aGUgYnVpbGQgc2NyaXB0LgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KKy0tLQorIHNyYy9tYWtlLmJhc2ggfCAzICsrLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9tYWtlLmJhc2ggYi9zcmMvbWFrZS5iYXNoCitpbmRleCA5NTUzNjIzLi4yZTZmYjA1IDEwMDc1NQorLS0tIGEvc3JjL21ha2UuYmFzaAorKysrIGIvc3JjL21ha2UuYmFzaAorQEAgLTE3MiwxMCArMTcyLDExIEBAIGlmIFsgIiRkb19ob3N0X2J1aWxkIiA9ICJ5ZXMiIF07IHRoZW4KKyAJbXYgY21kL2Rpc3QvZGlzdCAiJEdPVE9PTERJUiIvZGlzdAorIAllY2hvCisgCisrCUdPVE9PTERJUl9CT09UU1RSQVA9IiR7R09UT09MRElSX0JPT1RTVFJBUDotJEdPVE9PTERJUn0iCisgCWVjaG8gIiMjIyMjIEJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgaG9zdCwgJEdPSE9TVE9TLyRHT0hPU1RBUkNILiIKKyAJIyBDQ19GT1JfVEFSR0VUIGlzIHJlY29yZGVkIGFzIHRoZSBkZWZhdWx0IGNvbXBpbGVyIGZvciB0aGUgZ28gdG9vbC4gV2hlbiBidWlsZGluZyBmb3IgdGhlIGhvc3QsIGhvd2V2ZXIsCisgCSMgdXNlIHRoZSBob3N0IGNvbXBpbGVyLCBDQywgZnJvbSBgY21kL2Rpc3QvZGlzdCBlbnZgIGluc3RlYWQuCistCUNDPSRDQyBHT09TPSRHT0hPU1RPUyBHT0FSQ0g9JEdPSE9TVEFSQ0ggXAorKwlDQz0kQ0MgR09PUz0kR09IT1NUT1MgR09BUkNIPSRHT0hPU1RBUkNIIEdPVE9PTERJUj0iJEdPVE9PTERJUl9CT09UU1RSQVAiIFwKKyAJCSIkR09UT09MRElSIi9nb19ib290c3RyYXAgaW5zdGFsbCAtZ2NmbGFncyAiJEdPX0dDRkxBR1MiIC1sZGZsYWdzICIkR09fTERGTEFHUyIgLXYgc3RkIGNtZAorIAllY2hvCisgZmkKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjkvMDAwNy1sZC1hZGQtc29uYW1lLXRvLXNoYXJlYWJsZS1vYmplY3RzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjkvMDAwNy1sZC1hZGQtc29uYW1lLXRvLXNoYXJlYWJsZS1vYmplY3RzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0NTk3ODIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOS8wMDA3LWxkLWFkZC1zb25hbWUtdG8tc2hhcmVhYmxlLW9iamVjdHMucGF0Y2gKQEAgLTAsMCArMSw0NiBAQAorRnJvbSBlOTU3YzM0NThkNTNlMzdiZjQxNmY1MWQyZjhiZjU0YzE5NWU1MGY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KK0RhdGU6IFdlZCwgMTMgU2VwIDIwMTcgMDg6Mjc6MDIgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCA3LzddIGxkOiBhZGQgc29uYW1lIHRvIHNoYXJlYWJsZSBvYmplY3RzCisKK1NoYXJlZCBsaWJyYXJ5IGhhbmRsaW5nIGluIE9FIGRlcGVuZHMgb24gdGhlIGluY2x1c2lvbgorb2YgYW4gc29uYW1lIGhlYWRlciwgc28gdXBkYXRlIHRoZSBnbyBsaW5rZXIgdG8gYWRkIHRoYXQKK2hlYWRlciBmb3IgYm90aCBpbnRlcm5hbCBhbmQgZXh0ZXJuYWwgbGlua2luZy4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+CistLS0KKyBzcmMvY21kL2xpbmsvaW50ZXJuYWwvbGQvbGliLmdvIHwgMyArKysKKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbGQvbGliLmdvIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL2xkL2xpYi5nbworaW5kZXggMDIzNDEwNS4uMGI5ZTJkMCAxMDA2NDQKKy0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9sZC9saWIuZ28KKysrKyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9sZC9saWIuZ28KK0BAIC0xMTI0LDEyICsxMTI0LDE0IEBAIGZ1bmMgKGwgKkxpbmspIGhvc3RsaW5rKCkgeworIAkJCS8vIFBhc3MgLXogbm9kZWxldGUgdG8gbWFyayB0aGUgc2hhcmVkIGxpYnJhcnkgYXMKKyAJCQkvLyBub24tY2xvc2VhYmxlOiBhIGRsY2xvc2Ugd2lsbCBkbyBub3RoaW5nLgorIAkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1zaGFyZWQiLCAiLVdsLC16LG5vZGVsZXRlIikKKysJCQlhcmd2ID0gYXBwZW5kKGFyZ3YsIGZtdC5TcHJpbnRmKCItV2wsLXNvbmFtZSwlcyIsIGZpbGVwYXRoLkJhc2UoKmZsYWdPdXRmaWxlKSkpCisgCQl9CisgCWNhc2UgQnVpbGRtb2RlU2hhcmVkOgorIAkJaWYgVXNlUmVscm8oKSB7CisgCQkJYXJndiA9IGFwcGVuZChhcmd2LCAiLVdsLC16LHJlbHJvIikKKyAJCX0KKyAJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1zaGFyZWQiKQorKwkJYXJndiA9IGFwcGVuZChhcmd2LCBmbXQuU3ByaW50ZigiLVdsLC1zb25hbWUsJXMiLCBmaWxlcGF0aC5CYXNlKCpmbGFnT3V0ZmlsZSkpKQorIAljYXNlIEJ1aWxkbW9kZVBsdWdpbjoKKyAJCWlmIEhlYWR0eXBlID09IG9iamFiaS5IZGFyd2luIHsKKyAJCQlhcmd2ID0gYXBwZW5kKGFyZ3YsICItZHluYW1pY2xpYiIpCitAQCAtMTEzOCw2ICsxMTQwLDcgQEAgZnVuYyAobCAqTGluaykgaG9zdGxpbmsoKSB7CisgCQkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1XbCwteixyZWxybyIpCisgCQkJfQorIAkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1zaGFyZWQiKQorKwkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgZm10LlNwcmludGYoIi1XbCwtc29uYW1lLCVzIiwgZmlsZXBhdGguQmFzZSgqZmxhZ091dGZpbGUpKSkKKyAJCX0KKyAJfQorIAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOS8wMDA4LW1ha2UuYmFzaC1hZGQtR09IT1NUeHgtaW5kaXJlY3Rpb24tZm9yLWNyb3NzLWNhbmFkaWEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOS8wMDA4LW1ha2UuYmFzaC1hZGQtR09IT1NUeHgtaW5kaXJlY3Rpb24tZm9yLWNyb3NzLWNhbmFkaWEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDk3N2M3OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS45LzAwMDgtbWFrZS5iYXNoLWFkZC1HT0hPU1R4eC1pbmRpcmVjdGlvbi1mb3ItY3Jvc3MtY2FuYWRpYS5wYXRjaApAQCAtMCwwICsxLDMzIEBACitGcm9tIDAzZTZjMzM5ZDRmYjcxMmZiYjhjNGNhNmVmMmZjNzEwMGRjZGIzZDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgorRGF0ZTogVGh1LCAxNCBTZXAgMjAxNyAwNTozODoxMCAtMDcwMAorU3ViamVjdDogW1BBVENIIDgvOF0gbWFrZS5iYXNoOiBhZGQgR09IT1NUeHggaW5kaXJlY3Rpb24gZm9yIGNyb3NzLWNhbmFkaWFuCisgYnVpbGRzCisKK0FkZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yIHNwZWNpZnlpbmcgdGhlIGhvc3QgT1MvYXJjaAordGhhdCB3ZSBhcmUgYnVpbGRpbmcgdGhlIGNvbXBpbGVyIGZvciwgc28gaXQgY2FuIGRpZmZlciBmcm9tCit0aGUgYnVpbGQgaG9zdCBPUy9hcmNoLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KKy0tLQorIHNyYy9tYWtlLmJhc2ggfCAyICsrCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL21ha2UuYmFzaCBiL3NyYy9tYWtlLmJhc2gKK2luZGV4IDJlNmZiMDUuLjBiZGFkYzYgMTAwNzU1CistLS0gYS9zcmMvbWFrZS5iYXNoCisrKysgYi9zcmMvbWFrZS5iYXNoCitAQCAtMTczLDYgKzE3Myw4IEBAIGlmIFsgIiRkb19ob3N0X2J1aWxkIiA9ICJ5ZXMiIF07IHRoZW4KKyAJZWNobworIAorIAlHT1RPT0xESVJfQk9PVFNUUkFQPSIke0dPVE9PTERJUl9CT09UU1RSQVA6LSRHT1RPT0xESVJ9IgorKwlHT0hPU1RPUz0iJHtHT0hPU1RPU19DUk9TUzotJEdPSE9TVE9TfSIKKysJR09IT1NUQVJDSD0iJHtHT0hPU1RBUkNIX0NST1NTOi0kR09IT1NUQVJDSH0iCisgCWVjaG8gIiMjIyMjIEJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgaG9zdCwgJEdPSE9TVE9TLyRHT0hPU1RBUkNILiIKKyAJIyBDQ19GT1JfVEFSR0VUIGlzIHJlY29yZGVkIGFzIHRoZSBkZWZhdWx0IGNvbXBpbGVyIGZvciB0aGUgZ28gdG9vbC4gV2hlbiBidWlsZGluZyBmb3IgdGhlIGhvc3QsIGhvd2V2ZXIsCisgCSMgdXNlIHRoZSBob3N0IGNvbXBpbGVyLCBDQywgZnJvbSBgY21kL2Rpc3QvZGlzdCBlbnZgIGluc3RlYWQuCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS45LzAwMDktY21kLWdvLWJ1aWxkbW9kZS1waWUtZm9yY2VzLWV4dGVybmFsLWxpbmtpbmctbW9kZS1vbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS45LzAwMDktY21kLWdvLWJ1aWxkbW9kZS1waWUtZm9yY2VzLWV4dGVybmFsLWxpbmtpbmctbW9kZS1vbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYTVmY2ZkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjkvMDAwOS1jbWQtZ28tYnVpbGRtb2RlLXBpZS1mb3JjZXMtZXh0ZXJuYWwtbGlua2luZy1tb2RlLW9uLnBhdGNoCkBAIC0wLDAgKzEsNDcgQEAKK0Zyb20gYWFlNDQ1MjdjODA2NWQ1NGY2YWNhZjg3YzgyY2JhMWFjOTZmYWU1OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IElhbiBMYW5jZSBUYXlsb3IgPGlhbnRAZ29sYW5nLm9yZz4KK0RhdGU6IEZyaSwgMTggQXVnIDIwMTcgMTc6NDY6MDMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gY21kL2dvOiAtYnVpbGRtb2RlPXBpZSBmb3JjZXMgZXh0ZXJuYWwgbGlua2luZyBtb2RlIG9uIGFsbAorIHN5c3RlbXMKKworVGhlIGdvIHRvb2wgYXNzdW1lZCB0aGF0IC1idWlsZG1vZGU9cGllIGltcGxpZWQgaW50ZXJuYWwgbGlua2luZyBvbgorbGludXgtYW1kNjQuIEhvd2V2ZXIsIHRoYXQgd2FzIGNoYW5nZWQgYnkgQ0wgMzY0MTcgZm9yIGlzc3VlICMxODk2OC4KKworRml4ZXMgIzIxNDUyCisKK0NoYW5nZS1JZDogSThlZDEzYWVhNTI5NTljYzVjNTMyMjNmNGM0MWJhMzUzMjk0NDU1NDUKK1Jldmlld2VkLW9uOiBodHRwczovL2dvLXJldmlldy5nb29nbGVzb3VyY2UuY29tLzU3MjMxCitSdW4tVHJ5Qm90OiBJYW4gTGFuY2UgVGF5bG9yIDxpYW50QGdvbGFuZy5vcmc+CitUcnlCb3QtUmVzdWx0OiBHb2JvdCBHb2JvdCA8Z29ib3RAZ29sYW5nLm9yZz4KK1Jldmlld2VkLWJ5OiBBdmVsaW5vIDx0QGF2ZWxpbm8ueHh4PgorUmV2aWV3ZWQtYnk6IFJvYiBQaWtlIDxyQGdvbGFuZy5vcmc+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKKyBzcmMvY21kL2dvL2ludGVybmFsL2xvYWQvcGtnLmdvIHwgNyArKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvbG9hZC9wa2cuZ28gYi9zcmMvY21kL2dvL2ludGVybmFsL2xvYWQvcGtnLmdvCitpbmRleCAyNjYwZDNmLi5kNDA3NzNiIDEwMDY0NAorLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC9sb2FkL3BrZy5nbworKysrIGIvc3JjL2NtZC9nby9pbnRlcm5hbC9sb2FkL3BrZy5nbworQEAgLTk1NCwxMSArOTU0LDEyIEBAIGZ1bmMgKHAgKlBhY2thZ2UpIGxvYWQoc3RrICpJbXBvcnRTdGFjaywgYnAgKmJ1aWxkLlBhY2thZ2UsIGVyciBlcnJvcikgKlBhY2thZ2UKKyAKKyAJaWYgY2ZnLkJ1aWxkQ29udGV4dC5DZ29FbmFibGVkICYmIHAuTmFtZSA9PSAibWFpbiIgJiYgIXAuR29yb290IHsKKyAJCS8vIEN1cnJlbnRseSBidWlsZCBtb2RlcyBjLXNoYXJlZCwgcGllIChvbiBzeXN0ZW1zIHRoYXQgZG8gbm90CistCQkvLyBzdXBwb3J0IFBJRSB3aXRoIGludGVybmFsIGxpbmtpbmcgbW9kZSksIHBsdWdpbiwgYW5kCistCQkvLyAtbGlua3NoYXJlZCBmb3JjZSBleHRlcm5hbCBsaW5raW5nIG1vZGUsIGFzIG9mIGNvdXJzZSBkb2VzCisrCQkvLyBzdXBwb3J0IFBJRSB3aXRoIGludGVybmFsIGxpbmtpbmcgbW9kZSAoY3VycmVudGx5IGFsbAorKwkJLy8gc3lzdGVtczogaXNzdWUgIzE4OTY4KSksIHBsdWdpbiwgYW5kIC1saW5rc2hhcmVkIGZvcmNlCisrCQkvLyBleHRlcm5hbCBsaW5raW5nIG1vZGUsIGFzIG9mIGNvdXJzZSBkb2VzCisgCQkvLyAtbGRmbGFncz0tbGlua21vZGU9ZXh0ZXJuYWwuIEV4dGVybmFsIGxpbmtpbmcgbW9kZSBmb3JjZXMKKyAJCS8vIGFuIGltcG9ydCBvZiBydW50aW1lL2Nnby4KKy0JCXBpZUNnbyA6PSBjZmcuQnVpbGRCdWlsZG1vZGUgPT0gInBpZSIgJiYgKGNmZy5CdWlsZENvbnRleHQuR09PUyAhPSAibGludXgiIHx8IGNmZy5CdWlsZENvbnRleHQuR09BUkNIICE9ICJhbWQ2NCIpCisrCQlwaWVDZ28gOj0gY2ZnLkJ1aWxkQnVpbGRtb2RlID09ICJwaWUiCisgCQlsaW5rbW9kZUV4dGVybmFsIDo9IGZhbHNlCisgCQlmb3IgaSwgYSA6PSByYW5nZSBjZmcuQnVpbGRMZGZsYWdzIHsKKyAJCQlpZiBhID09ICItbGlua21vZGU9ZXh0ZXJuYWwiIHsKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS45LzAwMTAtbWFrZS5iYXNoLW92ZXJyaWRlLUNDLXdoZW4tYnVpbGRpbmctZGlzdC1hbmQtZ29fYm9vdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS45LzAwMTAtbWFrZS5iYXNoLW92ZXJyaWRlLUNDLXdoZW4tYnVpbGRpbmctZGlzdC1hbmQtZ29fYm9vdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44M2ZkNzhjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjkvMDAxMC1tYWtlLmJhc2gtb3ZlcnJpZGUtQ0Mtd2hlbi1idWlsZGluZy1kaXN0LWFuZC1nb19ib290LnBhdGNoCkBAIC0wLDAgKzEsNDMgQEAKK0Zyb20gMjFkODNkZDk0OTllNWJlMzBlZWEyOGRkNzAzNGQxZWEyYTAxYzgzOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+CitEYXRlOiBUdWUsIDE0IE5vdiAyMDE3IDA3OjM4OjQyIC0wODAwCitTdWJqZWN0OiBbUEFUQ0ggMTAvMTBdIG1ha2UuYmFzaDogb3ZlcnJpZGUgQ0Mgd2hlbiBidWlsZGluZyBkaXN0IGFuZAorIGdvX2Jvb3RzdHJhcAorCitGb3IgY3Jvc3MtY2FuYWRpYW4gYnVpbGRzLCBkaXN0IGFuZCBnb19ib290c3RyYXAKK3J1biBvbiB0aGUgYnVpbGQgaG9zdCwgc28gQ0MgbmVlZHMgdG8gcG9pbnQgdG8gdGhlCitidWlsZCBob3N0J3MgQyBjb21waWxlci4gIEFkZCBhIEJVSUxEX0NDIGVudmlyb25tZW50Citmb3IgdGhpcywgZmFsbGluZyBiYWNrIHRvICRDQyBpZiBub3QgcHJlc2VudC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+CistLS0KKyBzcmMvbWFrZS5iYXNoIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9tYWtlLmJhc2ggYi9zcmMvbWFrZS5iYXNoCitpbmRleCAwYmRhZGM2Li5mMTk5MzQ5IDEwMDc1NQorLS0tIGEvc3JjL21ha2UuYmFzaAorKysrIGIvc3JjL21ha2UuYmFzaAorQEAgLTEzMSw3ICsxMzEsNyBAQCBpZiBbICIkR09ST09UX0JPT1RTVFJBUCIgPSAiJEdPUk9PVCIgXTsgdGhlbgorIAlleGl0IDEKKyBmaQorIHJtIC1mIGNtZC9kaXN0L2Rpc3QKKy1HT1JPT1Q9IiRHT1JPT1RfQk9PVFNUUkFQIiBHT09TPSIiIEdPQVJDSD0iIiAiJEdPUk9PVF9CT09UU1RSQVAvYmluL2dvIiBidWlsZCAtbyBjbWQvZGlzdC9kaXN0IC4vY21kL2Rpc3QKKytDQz0ke0JVSUxEX0NDOi0ke0NDfX0gR09ST09UPSIkR09ST09UX0JPT1RTVFJBUCIgR09PUz0iIiBHT0FSQ0g9IiIgIiRHT1JPT1RfQk9PVFNUUkFQL2Jpbi9nbyIgYnVpbGQgLW8gY21kL2Rpc3QvZGlzdCAuL2NtZC9kaXN0CisgCisgIyAtZSBkb2Vzbid0IHByb3BhZ2F0ZSBvdXQgb2YgZXZhbCwgc28gY2hlY2sgc3VjY2VzcyBieSBoYW5kLgorIGV2YWwgJCguL2NtZC9kaXN0L2Rpc3QgZW52IC1wIHx8IGVjaG8gRkFJTD10cnVlKQorQEAgLTE2Nyw3ICsxNjcsNyBAQCBlbGlmIFsgIiQxIiA9ICItLWhvc3Qtb25seSIgXTsgdGhlbgorIGZpCisgCisgaWYgWyAiJGRvX2hvc3RfYnVpbGQiID0gInllcyIgXTsgdGhlbgorLQkuL2NtZC9kaXN0L2Rpc3QgYm9vdHN0cmFwICRidWlsZGFsbCAkR09fRElTVEZMQUdTIC12ICMgYnVpbGRzIGdvX2Jvb3RzdHJhcAorKwlDQz0ke0JVSUxEX0NDOi0ke0NDfX0gLi9jbWQvZGlzdC9kaXN0IGJvb3RzdHJhcCAkYnVpbGRhbGwgJEdPX0RJU1RGTEFHUyAtdiAjIGJ1aWxkcyBnb19ib290c3RyYXAKKyAJIyBEZWxheSBtb3ZlIG9mIGRpc3QgdG9vbCB0byBub3csIGJlY2F1c2UgYm9vdHN0cmFwIG1heSBjbGVhciB0b29sIGRpcmVjdG9yeS4KKyAJbXYgY21kL2Rpc3QvZGlzdCAiJEdPVE9PTERJUiIvZGlzdAorIAllY2hvCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS45L3NldC1leHRlcm5hbC1saW5rZXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOS9zZXQtZXh0ZXJuYWwtbGlua2VyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2YmQ3ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuOS9zZXQtZXh0ZXJuYWwtbGlua2VyLnBhdGNoCkBAIC0wLDAgKzEsMTExIEBACitDaGFuZ2UgdGhlIGR5bmFtaWMgbGlua2VyIGhhcmRjb2RpbmcgdG8gdXNlIG11c2wgd2hlbiBub3QgdXNpbmcgZ2xpYmMKK3RoaXMgc2hvdWxkIGJlIGFwcGxpZWQgY29uZGl0aW9uYWwgdG8gbXVzbCBiZWluZyB0aGUgc3lzdGVtIEMgbGlicmFyeQorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW1JlYWwgRml4IHNob3VsZCBiZSBwb3J0YWJsZSBhY3Jvc3MgbGliY3NdCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK0luZGV4OiBnby9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYW1kNjQvb2JqLmdvCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ28ub3JpZy9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYW1kNjQvb2JqLmdvCisrKysgZ28vc3JjL2NtZC9saW5rL2ludGVybmFsL2FtZDY0L29iai5nbworQEAgLTY3LDcgKzY3LDcgQEAgZnVuYyBJbml0KCkgeworIAlsZC5UaGVhcmNoLkFwcGVuZDY0ID0gbGQuQXBwZW5kNjRsCisgCWxkLlRoZWFyY2guVExTSUV0b0xFID0gdGxzSUV0b0xFCisgCistCWxkLlRoZWFyY2guTGludXhkeW5sZCA9ICIvbGliNjQvbGQtbGludXgteDg2LTY0LnNvLjIiCisrCWxkLlRoZWFyY2guTGludXhkeW5sZCA9ICIvbGliL2xkLW11c2wteDg2XzY0LnNvLjEiCisgCWxkLlRoZWFyY2guRnJlZWJzZGR5bmxkID0gIi9saWJleGVjL2xkLWVsZi5zby4xIgorIAlsZC5UaGVhcmNoLk9wZW5ic2RkeW5sZCA9ICIvdXNyL2xpYmV4ZWMvbGQuc28iCisgCWxkLlRoZWFyY2guTmV0YnNkZHlubGQgPSAiL2xpYmV4ZWMvbGQuZWxmX3NvIgorSW5kZXg6IGdvL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hcm0vb2JqLmdvCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ28ub3JpZy9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtL29iai5nbworKysrIGdvL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hcm0vb2JqLmdvCitAQCAtNjMsNyArNjMsNyBAQCBmdW5jIEluaXQoKSB7CisgCWxkLlRoZWFyY2guQXBwZW5kMzIgPSBsZC5BcHBlbmQzMmwKKyAJbGQuVGhlYXJjaC5BcHBlbmQ2NCA9IGxkLkFwcGVuZDY0bAorIAorLQlsZC5UaGVhcmNoLkxpbnV4ZHlubGQgPSAiL2xpYi9sZC1saW51eC5zby4zIiAvLyAyIGZvciBPQUJJLCAzIGZvciBFQUJJCisrCWxkLlRoZWFyY2guTGludXhkeW5sZCA9ICIvbGliL2xkLW11c2wtYXJtaGYuc28uMSIKKyAJbGQuVGhlYXJjaC5GcmVlYnNkZHlubGQgPSAiL3Vzci9saWJleGVjL2xkLWVsZi5zby4xIgorIAlsZC5UaGVhcmNoLk9wZW5ic2RkeW5sZCA9ICIvdXNyL2xpYmV4ZWMvbGQuc28iCisgCWxkLlRoZWFyY2guTmV0YnNkZHlubGQgPSAiL2xpYmV4ZWMvbGQuZWxmX3NvIgorSW5kZXg6IGdvL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hcm02NC9vYmouZ28KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnby5vcmlnL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hcm02NC9vYmouZ28KKysrKyBnby9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtNjQvb2JqLmdvCitAQCAtNjIsNyArNjIsNyBAQCBmdW5jIEluaXQoKSB7CisgCWxkLlRoZWFyY2guQXBwZW5kMzIgPSBsZC5BcHBlbmQzMmwKKyAJbGQuVGhlYXJjaC5BcHBlbmQ2NCA9IGxkLkFwcGVuZDY0bAorIAorLQlsZC5UaGVhcmNoLkxpbnV4ZHlubGQgPSAiL2xpYi9sZC1saW51eC1hYXJjaDY0LnNvLjEiCisrCWxkLlRoZWFyY2guTGludXhkeW5sZCA9ICIvbGliL2xkLW11c2wtYWFyY2g2NC5zby4xIgorIAorIAlsZC5UaGVhcmNoLkZyZWVic2RkeW5sZCA9ICJYWFgiCisgCWxkLlRoZWFyY2guT3BlbmJzZGR5bmxkID0gIlhYWCIKK0luZGV4OiBnby9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbWlwcy9vYmouZ28KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnby5vcmlnL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzL29iai5nbworKysrIGdvL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzL29iai5nbworQEAgLTc3LDcgKzc3LDcgQEAgZnVuYyBJbml0KCkgeworIAkJbGQuVGhlYXJjaC5BcHBlbmQ2NCA9IGxkLkFwcGVuZDY0YgorIAl9CisgCistCWxkLlRoZWFyY2guTGludXhkeW5sZCA9ICIvbGliL2xkLnNvLjEiCisrCWxkLlRoZWFyY2guTGludXhkeW5sZCA9ICIvbGliL2xkLW11c2wtbWlwc2xlLnNvLjEiCisgCisgCWxkLlRoZWFyY2guRnJlZWJzZGR5bmxkID0gIlhYWCIKKyAJbGQuVGhlYXJjaC5PcGVuYnNkZHlubGQgPSAiWFhYIgorSW5kZXg6IGdvL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzNjQvb2JqLmdvCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ28ub3JpZy9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbWlwczY0L29iai5nbworKysrIGdvL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzNjQvb2JqLmdvCitAQCAtNzUsNyArNzUsNyBAQCBmdW5jIEluaXQoKSB7CisgCQlsZC5UaGVhcmNoLkFwcGVuZDY0ID0gbGQuQXBwZW5kNjRiCisgCX0KKyAKKy0JbGQuVGhlYXJjaC5MaW51eGR5bmxkID0gIi9saWI2NC9sZDY0LnNvLjEiCisrCWxkLlRoZWFyY2guTGludXhkeW5sZCA9ICIvbGliNjQvbGQtbXVzbC1taXBzNjRsZS5zby4xIgorIAorIAlsZC5UaGVhcmNoLkZyZWVic2RkeW5sZCA9ICJYWFgiCisgCWxkLlRoZWFyY2guT3BlbmJzZGR5bmxkID0gIlhYWCIKK0luZGV4OiBnby9zcmMvY21kL2xpbmsvaW50ZXJuYWwvcHBjNjQvb2JqLmdvCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ28ub3JpZy9zcmMvY21kL2xpbmsvaW50ZXJuYWwvcHBjNjQvb2JqLmdvCisrKysgZ28vc3JjL2NtZC9saW5rL2ludGVybmFsL3BwYzY0L29iai5nbworQEAgLTc3LDcgKzc3LDcgQEAgZnVuYyBJbml0KCkgeworIAl9CisgCisgCS8vIFRPRE8oYXVzdGluKTogQUJJIHYxIHVzZXMgL3Vzci9saWIvbGQuc28uMQorLQlsZC5UaGVhcmNoLkxpbnV4ZHlubGQgPSAiL2xpYjY0L2xkNjQuc28uMSIKKysJbGQuVGhlYXJjaC5MaW51eGR5bmxkID0gIi9saWIvbGQtbXVzbC1wb3dlcnBjNjRsZS5zby4xIgorIAorIAlsZC5UaGVhcmNoLkZyZWVic2RkeW5sZCA9ICJYWFgiCisgCWxkLlRoZWFyY2guT3BlbmJzZGR5bmxkID0gIlhYWCIKK0luZGV4OiBnby9zcmMvY21kL2xpbmsvaW50ZXJuYWwvczM5MHgvb2JqLmdvCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ28ub3JpZy9zcmMvY21kL2xpbmsvaW50ZXJuYWwvczM5MHgvb2JqLmdvCisrKysgZ28vc3JjL2NtZC9saW5rL2ludGVybmFsL3MzOTB4L29iai5nbworQEAgLTYyLDcgKzYyLDcgQEAgZnVuYyBJbml0KCkgeworIAlsZC5UaGVhcmNoLkFwcGVuZDMyID0gbGQuQXBwZW5kMzJiCisgCWxkLlRoZWFyY2guQXBwZW5kNjQgPSBsZC5BcHBlbmQ2NGIKKyAKKy0JbGQuVGhlYXJjaC5MaW51eGR5bmxkID0gIi9saWI2NC9sZDY0LnNvLjEiCisrCWxkLlRoZWFyY2guTGludXhkeW5sZCA9ICIvbGliL2xkLW11c2wtczM5MHguc28uMSIKKyAKKyAJLy8gbm90IHJlbGV2YW50IGZvciBzMzkweAorIAlsZC5UaGVhcmNoLkZyZWVic2RkeW5sZCA9ICJYWFgiCitJbmRleDogZ28vc3JjL2NtZC9saW5rL2ludGVybmFsL3g4Ni9vYmouZ28KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnby5vcmlnL3NyYy9jbWQvbGluay9pbnRlcm5hbC94ODYvb2JqLmdvCisrKysgZ28vc3JjL2NtZC9saW5rL2ludGVybmFsL3g4Ni9vYmouZ28KK0BAIC02Myw3ICs2Myw3IEBAIGZ1bmMgSW5pdCgpIHsKKyAJbGQuVGhlYXJjaC5BcHBlbmQzMiA9IGxkLkFwcGVuZDMybAorIAlsZC5UaGVhcmNoLkFwcGVuZDY0ID0gbGQuQXBwZW5kNjRsCisgCistCWxkLlRoZWFyY2guTGludXhkeW5sZCA9ICIvbGliL2xkLWxpbnV4LnNvLjIiCisrCWxkLlRoZWFyY2guTGludXhkeW5sZCA9ICIvbGliL2xkLW11c2wtaTM4Ni5zby4xIgorIAlsZC5UaGVhcmNoLkZyZWVic2RkeW5sZCA9ICIvdXNyL2xpYmV4ZWMvbGQtZWxmLnNvLjEiCisgCWxkLlRoZWFyY2guT3BlbmJzZGR5bmxkID0gIi91c3IvbGliZXhlYy9sZC5zbyIKKyAJbGQuVGhlYXJjaC5OZXRic2RkeW5sZCA9ICIvdXNyL2xpYmV4ZWMvbGQuZWxmX3NvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1ib290c3RyYXAtbmF0aXZlXzEuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tYm9vdHN0cmFwLW5hdGl2ZV8xLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkNDE0MWUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1ib290c3RyYXAtbmF0aXZlXzEuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotQk9PVFNUUkFQID0gIjEuNCIKLXJlcXVpcmUgZ28tbmF0aXZlLmluYwotcmVxdWlyZSBnby0ke1BWfS5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY29tbW9uLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY29tbW9uLmluYwppbmRleCBmNzRiOGI3Li45YWY2ODczIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNvbW1vbi5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jb21tb24uaW5jCkBAIC0xNCw5ICsxNCwxMyBAQAogCiBpbmhlcml0IGdvYXJjaAogCi1TUkNfVVJJID0gImh0dHA6Ly9nb2xhbmcub3JnL2RsL2dvJHtQVn0uc3JjLnRhci5neiIKK1NSQ19VUkkgPSAiaHR0cDovL2dvbGFuZy5vcmcvZGwvZ28ke1BWfS5zcmMudGFyLmd6O25hbWU9bWFpbiIKIFMgPSAiJHtXT1JLRElSfS9nbyIKIEIgPSAiJHtTfSIKIAogSU5ISUJJVF9QQUNLQUdFX0RFQlVHX1NQTElUID0gIjEiCiBTU1RBVEVfU0NBTl9DTUQgPSAidHJ1ZSIKKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworCUJVSUxEX0NDPSR7QlVJTERfQ0N9Cit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzLWNhbmFkaWFuLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MtY2FuYWRpYW4uaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhZmRhNmIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzLWNhbmFkaWFuLmluYwpAQCAtMCwwICsxLDYyIEBACitpbmhlcml0IGNyb3NzLWNhbmFkaWFuCisKK0RFUEVORFMgPSAiZ28tbmF0aXZlIHZpcnR1YWwvJHtIT1NUX1BSRUZJWH1nby1jcm9zc3NkayB2aXJ0dWFsL25hdGl2ZXNkay0ke0hPU1RfUFJFRklYfWdvLXJ1bnRpbWUgXAorICAgICAgICAgICB2aXJ0dWFsLyR7SE9TVF9QUkVGSVh9Z2NjLWNyb3Nzc2RrIHZpcnR1YWwvbmF0aXZlc2RrLSR7SE9TVF9QUkVGSVh9bGliYy1mb3ItZ2NjIFwKKyAgICAgICAgICAgdmlydHVhbC9uYXRpdmVzZGstJHtIT1NUX1BSRUZJWH1jb21waWxlcmxpYnMiCitQTiA9ICJnby1jcm9zcy1jYW5hZGlhbi0ke1RSQU5TTEFURURfVEFSR0VUX0FSQ0h9IgorCitleHBvcnQgR09IT1NUT1MgPSAiJHtCVUlMRF9HT09TfSIKK2V4cG9ydCBHT0hPU1RBUkNIID0gIiR7QlVJTERfR09BUkNIfSIKK2V4cG9ydCBHT0hPU1RPU19DUk9TUyA9ICIke0hPU1RfR09PU30iCitleHBvcnQgR09IT1NUQVJDSF9DUk9TUyA9ICIke0hPU1RfR09BUkNIfSIKK2V4cG9ydCBHT1JPT1RfQk9PVFNUUkFQID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nbyIKK2V4cG9ydCBHT1RPT0xESVJfQk9PVFNUUkFQID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS8ke0hPU1RfU1lTfS9nby9wa2cvdG9vbC8ke0JVSUxEX0dPVFVQTEV9IgorZXhwb3J0IEdPUk9PVF9GSU5BTCA9ICIke2xpYmRpcn0vZ28iCitleHBvcnQgQ0dPX0VOQUJMRUQgPSAiMSIKK2V4cG9ydCBDQ19GT1JfVEFSR0VUID0gIiR7VEFSR0VUX1BSRUZJWH1nY2MiCitleHBvcnQgQ1hYX0ZPUl9UQVJHRVQgPSAiJHtUQVJHRVRfUFJFRklYfWcrKyIKK0NDID0gIiR7SE9TVF9QUkVGSVh9Z2NjIgorZXhwb3J0IENHT19DRkxBR1MgPSAiLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSAke0hPU1RfQ0NfQVJDSH0gJHtDRkxBR1N9IgorZXhwb3J0IENHT19MREZMQUdTID0gIi0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0gJHtIT1NUX0NDX0FSQ0h9ICR7TERGTEFHU30iCitleHBvcnQgR09fTERGTEFHUyA9ICctbGlua21vZGUgZXh0ZXJuYWwgLWV4dGxkICR7SE9TVF9QUkVGSVh9Z2NjIC1leHRsZGZsYWdzICItLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9ICR7SE9TVF9DQ19BUkNIfSAke0xERkxBR1N9IicKKworZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKKworZG9fY29tcGlsZSgpIHsKKwlleHBvcnQgR09CSU49IiR7Qn0vYmluIgorCXJtIC1yZiAke0dPQklOfSAke0J9L3BrZworCW1rZGlyICR7R09CSU59CisJY2Qgc3JjCisJLi9tYWtlLmJhc2ggLS1ob3N0LW9ubHkgLS1uby1iYW5uZXIKKwljZCAke0J9Cit9CisKKworbWFrZV93cmFwcGVyKCkgeworICAgIHJtIC1mICR7RH0ke2JpbmRpcn0vJDIKKyAgICBjYXQgPDxFTkQgPiR7RH0ke2JpbmRpcn0vJDIKKyMhL2Jpbi9zaAoraGVyZT1cYGRpcm5hbWUgXCQwXGAKK25hdGl2ZV9nb3Jvb3Q9XGByZWFkbGluayAtZiBcJGhlcmUvLi4vLi4vbGliLyR7VEFSR0VUX1NZU30vZ29cYAorZXhwb3J0IEdPQVJDSD0iJHtUQVJHRVRfR09BUkNIfSIKK2V4cG9ydCBHT09TPSIke1RBUkdFVF9HT09TfSIKK3Rlc3QgLW4gIlwkR09BUk0iIHx8IGV4cG9ydCBHT0FSTT0iJHtUQVJHRVRfR09BUk19IgordGVzdCAtbiAiXCRHTzM4NiIgfHwgZXhwb3J0IEdPMzg2PSIke1RBUkdFVF9HTzM4Nn0iCitleHBvcnQgR09UT09MRElSPSJcJG5hdGl2ZV9nb3Jvb3QvcGtnL3Rvb2wvJHtIT1NUX0dPVFVQTEV9IgordGVzdCAtbiAiXCRHT1JPT1QiIHx8IGV4cG9ydCBHT1JPT1Q9IlwkT0VDT1JFX1RBUkdFVF9TWVNST09ULyR7dGFyZ2V0X2xpYmRpcn0vZ28iCitcJGhlcmUvLi4vLi4vbGliLyR7VEFSR0VUX1NZU30vZ28vYmluLyQxICJcJEAiCitFTkQKKyAgICBjaG1vZCAreCAke0R9JHtiaW5kaXJ9LyQyCit9CisKK2RvX2luc3RhbGwoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L2dvL3BrZy90b29sCisJY3AgLS1wcmVzZXJ2ZT1tb2RlLHRpbWVzdGFtcHMgLVIgJHtCfS9wa2cvdG9vbC8ke0hPU1RfR09UVVBMRX0gJHtEfSR7bGliZGlyfS9nby9wa2cvdG9vbC8KKwlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0gJHtEfSR7bGliZGlyfS9nby9iaW4KKwlmb3IgZiBpbiAke0J9LyR7R09fQlVJTERfQklORElSfS8qCisJZG8KKwkJYmFzZT1gYmFzZW5hbWUgJGZgCisJCWluc3RhbGwgLW03NTUgJGYgJHtEfSR7bGliZGlyfS9nby9iaW4KKwkJbWFrZV93cmFwcGVyICRiYXNlICR7VEFSR0VUX1BSRUZJWH0kYmFzZQorCWRvbmUKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MtY2FuYWRpYW5fMS45LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zcy1jYW5hZGlhbl8xLjkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2FjOTQ0OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MtY2FuYWRpYW5fMS45LmJiCkBAIC0wLDAgKzEsMiBAQAorcmVxdWlyZSBnby1jcm9zcy1jYW5hZGlhbi5pbmMKK3JlcXVpcmUgZ28tJHtQVn0uaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MuaW5jCmluZGV4IDkzMjA2YTUuLjNhYzcyMTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MuaW5jCkBAIC0xLDE4ICsxLDYyIEBACiBpbmhlcml0IGNyb3NzCiAKLURFUEVORFMgKz0gImdjYy1jcm9zcy0ke1RBUkdFVF9BUkNIfSIKK1BST1ZJREVTID0gInZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdvIgorREVQRU5EUyArPSAiZ28tbmF0aXZlIgogCiBQTiA9ICJnby1jcm9zcy0ke1RBUkdFVF9BUkNIfSIKIAotIyBJZ25vcmUgaG93IFRBUkdFVF9BUkNIIGlzIGNvbXB1dGVkLgotVEFSR0VUX0FSQ0hbdmFyZGVwdmFsdWVdID0gIiR7VEFSR0VUX0FSQ0h9IgorZXhwb3J0IEdPSE9TVE9TID0gIiR7QlVJTERfR09PU30iCitleHBvcnQgR09IT1NUQVJDSCA9ICIke0JVSUxEX0dPQVJDSH0iCitleHBvcnQgR09PUyA9ICIke1RBUkdFVF9HT09TfSIKK2V4cG9ydCBHT0FSQ0ggPSAiJHtUQVJHRVRfR09BUkNIfSIKK2V4cG9ydCBHT0FSTSA9ICIke1RBUkdFVF9HT0FSTX0iCitleHBvcnQgR08zODYgPSAiJHtUQVJHRVRfR08zODZ9IgorZXhwb3J0IEdPUk9PVF9CT09UU1RSQVAgPSAiJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dvIgorZXhwb3J0IEdPUk9PVF9GSU5BTCA9ICIke2xpYmRpcn0vZ28iCitleHBvcnQgQ0dPX0VOQUJMRUQgPSAiMSIKK2V4cG9ydCBDQ19GT1JfVEFSR0VUPSIke1RBUkdFVF9QUkVGSVh9Z2NjICR7VEFSR0VUX0NDX0FSQ0h9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0iCitleHBvcnQgQ1hYX0ZPUl9UQVJHRVQ9IiR7VEFSR0VUX1BSRUZJWH1nKysgJHtUQVJHRVRfQ0NfQVJDSH0gLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSIKK0NDID0gIiR7QGQuZ2V0VmFyKCdCVUlMRF9DQycpLnN0cmlwKCl9IgogCi1GSUxFU0VYVFJBUEFUSFMgPS4gIiR7RklMRV9ESVJOQU1FfS9nby1jcm9zczoiCitkb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgogCi1HT1JPT1RfRklOQUwgPSAiJHtsaWJkaXJ9L2dvIgotZXhwb3J0IEdPUk9PVF9GSU5BTAorZG9fY29tcGlsZSgpIHsKKyAgICBleHBvcnQgR09CSU49IiR7Qn0vYmluIgorICAgIHJtIC1yZiAke0dPQklOfSAke0J9L3BrZworICAgIG1rZGlyICR7R09CSU59CisgICAgY2Qgc3JjCisgICAgLi9tYWtlLmJhc2ggLS1ob3N0LW9ubHkKKyAgICBjZCAke0J9Cit9CiAKLSMgeDMyIEFCSSBpcyBub3Qgc3VwcG9ydGVkIG9uIGdvIGNvbXBpbGVyIHNvIGZhcgotQ09NUEFUSUJMRV9IT1NUX2xpbnV4LWdudXgzMiA9ICJudWxsIgotIyBwcGMzMiBpcyBub3Qgc3VwcG9ydGVkIGluIGdvIGNvbXBpbGVycwotQ09NUEFUSUJMRV9IT1NUX3Bvd2VycGMgPSAibnVsbCIKKworbWFrZV93cmFwcGVyKCkgeworICAgIHJtIC1mICR7RH0ke2JpbmRpcn0vJDIKKyAgICBjYXQgPDxFTkQgPiR7RH0ke2JpbmRpcn0vJDIKKyMhL2Jpbi9iYXNoCitoZXJlPVxgZGlybmFtZSBcJDBcYAorZXhwb3J0IEdPQVJDSD0iJHtUQVJHRVRfR09BUkNIfSIKK2V4cG9ydCBHT09TPSIke1RBUkdFVF9HT09TfSIKK2V4cG9ydCBHT0FSTT0iXCR7R09BUk06LSR7VEFSR0VUX0dPQVJNfX0iCitleHBvcnQgR08zODY9Ilwke0dPMzg2Oi0ke1RBUkdFVF9HTzM4Nn19IgorXCRoZXJlLy4uLy4uL2xpYi8ke0NST1NTX1RBUkdFVF9TWVNfRElSfS9nby9iaW4vJDEgIlwkQCIKK0VORAorICAgIGNobW9kICt4ICR7RH0ke2JpbmRpcn0vJDIKK30KKworZG9faW5zdGFsbCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vZ28KKyAgICBjcCAtLXByZXNlcnZlPW1vZGUsdGltZXN0YW1wcyAtUiAke0J9L3BrZyAke0R9JHtsaWJkaXJ9L2dvLworICAgIGluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9nby9zcmMKKyAgICAoY2QgJHtTfS9zcmM7IGZvciBkIGluICo7IGRvIFwKKyAgICAgICAgWyAhIC1kICRkIF0gfHwgY3AgLS1wcmVzZXJ2ZT1tb2RlLHRpbWVzdGFtcHMgLVIgJHtTfS9zcmMvJGQgJHtEfSR7bGliZGlyfS9nby9zcmMvOyBcCisgICAgZG9uZSkKKyAgICBybSAtcmYgJHtEfSR7bGliZGlyfS9nby9zcmMvcnVudGltZS9wcHJvZi90ZXN0ZGF0YQorICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfSAke0R9JHtsaWJkaXJ9L2dvL2JpbgorICAgIGZvciBmIGluICR7Qn0vYmluLyoKKyAgICBkbworICAgICAgICBiYXNlPWBiYXNlbmFtZSAkZmAKKyAgICAgICAgaW5zdGFsbCAtbTc1NSAkZiAke0R9JHtsaWJkaXJ9L2dvL2JpbgorICAgICAgICBtYWtlX3dyYXBwZXIgJGJhc2UgJHtUQVJHRVRfUFJFRklYfSRiYXNlCisgICAgZG9uZQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc18xLjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzXzEuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTZlZTA4NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzXzEuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotcmVxdWlyZSBnby1jcm9zcy5pbmMKLXJlcXVpcmUgZ29fJHtQVn0uYmIKLQotIyBHbyBiaW5hcmllcyBhcmUgbm90IHVuZGVyc3Rvb2QgYnkgdGhlIHN0cmlwIHRvb2wuCi1JTkhJQklUX1NZU1JPT1RfU1RSSVAgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NfMS44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc18xLjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2ZWUwODQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc18xLjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLXJlcXVpcmUgZ28tY3Jvc3MuaW5jCi1yZXF1aXJlIGdvXyR7UFZ9LmJiCi0KLSMgR28gYmluYXJpZXMgYXJlIG5vdCB1bmRlcnN0b29kIGJ5IHRoZSBzdHJpcCB0b29sLgotSU5ISUJJVF9TWVNST09UX1NUUklQID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzXzEuOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NfMS45LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwYjVhMDMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzXzEuOS5iYgpAQCAtMCwwICsxLDIgQEAKK3JlcXVpcmUgZ28tY3Jvc3MuaW5jCityZXF1aXJlIGdvLSR7UFZ9LmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc3Nkay5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3Nzc2RrLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjdlNGI5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc3Nkay5pbmMKQEAgLTAsMCArMSw1NCBAQAoraW5oZXJpdCBjcm9zc3NkaworCitERVBFTkRTID0gImdvLW5hdGl2ZSB2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nY2MtY3Jvc3NzZGsgdmlydHVhbC9uYXRpdmVzZGstJHtUQVJHRVRfUFJFRklYfWNvbXBpbGVybGlicyB2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1iaW51dGlscy1jcm9zc3NkayIKK1BOID0gImdvLWNyb3Nzc2RrLSR7VEFSR0VUX0FSQ0h9IgorUFJPVklERVMgPSAidmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Z28tY3Jvc3NzZGsiCisKK2V4cG9ydCBHT0hPU1RPUyA9ICIke0JVSUxEX0dPT1N9IgorZXhwb3J0IEdPSE9TVEFSQ0ggPSAiJHtCVUlMRF9HT0FSQ0h9IgorZXhwb3J0IEdPT1MgPSAiJHtUQVJHRVRfR09PU30iCitleHBvcnQgR09BUkNIID0gIiR7VEFSR0VUX0dPQVJDSH0iCitleHBvcnQgR09ST09UX0JPT1RTVFJBUCA9ICIke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ28iCitleHBvcnQgR09ST09UX0ZJTkFMID0gIiR7bGliZGlyfS9nbyIKK2V4cG9ydCBDR09fRU5BQkxFRCA9ICIxIgorZXhwb3J0IENDX0ZPUl9UQVJHRVQ9IiR7VEFSR0VUX1BSRUZJWH1nY2MgJHtUQVJHRVRfQ0NfQVJDSH0gLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7U0RLUEFUSE5BVElWRX0iCitleHBvcnQgQ1hYX0ZPUl9UQVJHRVQ9IiR7VEFSR0VUX1BSRUZJWH1nKysgJHtUQVJHRVRfQ0NfQVJDSH0gLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7U0RLUEFUSE5BVElWRX0iCitleHBvcnQgR09fSU5TVEFMTCA9ICJjbWQiCitDQyA9ICIke0BkLmdldFZhcignQlVJTERfQ0MnKS5zdHJpcCgpfSIKKworZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKKworZG9fY29tcGlsZSgpIHsKKwlleHBvcnQgR09CSU49IiR7Qn0vYmluIgorCXJtIC1yZiAke0dPQklOfSAke0J9L3BrZworCW1rZGlyICR7R09CSU59CisJY2Qgc3JjCisJLi9tYWtlLmJhc2ggLS1ob3N0LW9ubHkKKwljZCAke0J9Cit9CisKK21ha2Vfd3JhcHBlcigpIHsKKyAgICBybSAtZiAke0R9JHtiaW5kaXJ9LyQyCisgICAgY2F0IDw8RU5EID4ke0R9JHtiaW5kaXJ9LyQyCisjIS9iaW4vYmFzaAoraGVyZT1cYGRpcm5hbWUgXCQwXGAKK2V4cG9ydCBHT0FSQ0g9IiR7VEFSR0VUX0dPQVJDSH0iCitleHBvcnQgR09PUz0iJHtUQVJHRVRfR09PU30iCitcJGhlcmUvLi4vLi4vbGliLyR7Q1JPU1NfVEFSR0VUX1NZU19ESVJ9L2dvL2Jpbi8kMSAiXCRAIgorRU5ECisgICAgY2htb2QgK3ggJHtEfSR7YmluZGlyfS8kMgorfQorCitkb19pbnN0YWxsKCkgeworCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9nbworCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9nby9iaW4KKwlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vZ28vcGtnL3Rvb2wKKwlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KKwljcCAtLXByZXNlcnZlPW1vZGUsdGltZXN0YW1wcyAtUiAke1N9L3BrZy90b29sLyR7QlVJTERfR09UVVBMRX0gJHtEfSR7bGliZGlyfS9nby9wa2cvdG9vbC8KKwlmb3IgZiBpbiAke0J9L2Jpbi8qCisJZG8KKwkJYmFzZT1gYmFzZW5hbWUgJGZgCisJCWluc3RhbGwgLW03NTUgJGYgJHtEfSR7bGliZGlyfS9nby9iaW4KKwkJbWFrZV93cmFwcGVyICRiYXNlICR7VEFSR0VUX1BSRUZJWH0kYmFzZQorCWRvbmUKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NzZGtfMS45LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc3Nka18xLjkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTg1N2M4YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NzZGtfMS45LmJiCkBAIC0wLDAgKzEsMiBAQAorcmVxdWlyZSBnby1jcm9zc3Nkay5pbmMKK3JlcXVpcmUgZ28tJHtQVn0uaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWRlcF8wLjMuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tZGVwXzAuMy4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiZmViNDgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWRlcF8wLjMuMC5iYgpAQCAtMCwwICsxLDE2IEBACitTVU1NQVJZID0gIkRlcGVuZGVuY3kgbWFuYWdlbWVudCB0b29sIGZvciBHb2xhbmciCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vZ29sYW5nL2RlcCIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc3JjLyR7R09fSU1QT1JUfS9MSUNFTlNFO21kNT0xYmFkMzE1NjQ3NzUxZmFiMDAwNzgxMmY3MGQ0MmMwZCIKKworR09fSU1QT1JUID0gImdpdGh1Yi5jb20vZ29sYW5nL2RlcCIKK1NSQ19VUkkgPSAiZ2l0Oi8vJHtHT19JTVBPUlR9IgorCisjIFBvaW50cyB0byAwLjMuMCB0YWcKK1NSQ1JFViA9ICI3YTkxYjc5NGJiZmJmMWYzYjhiNzk4MjM3OTkzMTY0NTExMjc4MDFiIgorCitpbmhlcml0IGdvCisKK0dPX0lOU1RBTEwgPSAiJHtHT19JTVBPUlR9L2NtZC9kZXAiCisKK1JERVBFTkRTXyR7UE59LWRldiArPSAiYmFzaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tbmF0aXZlLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tbmF0aXZlLmluYwppbmRleCBjMjFmOGZkLi45NWRiMWMyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLW5hdGl2ZS5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1uYXRpdmUuaW5jCkBAIC0xLDE2ICsxLDI4IEBACisjIFVzZSBpbW1lZGlhdGUgYXNzaW5nbWVudCBoZXJlIHRvIGdldCB0aGUgb3JpZ2luYWwgKC91c3IvbGliKQorIyBpbnN0ZWFkIG9mIHRoZSBvbmUgcmV3cml0dGVuIGJ5IG5hdGl2ZS5iYmNsYXNzLgorbm9uc3RhZ2luZ19saWJkaXIgOj0gIiR7bGliZGlyfSIKKwogaW5oZXJpdCBuYXRpdmUKIAotQk9PVFNUUkFQID89ICIiCitTUkNfVVJJX2FwcGVuZCA9ICIgaHR0cDovL2dvbGFuZy5vcmcvZGwvZ28xLjQuMy5zcmMudGFyLmd6O25hbWU9Ym9vdHN0cmFwO3N1YmRpcj1nbzEuNCIKK1NSQ19VUklbYm9vdHN0cmFwLm1kNXN1bV0gPSAiZGZiNjA0NTExMTE1ZGQ0MDJhNzdhNTUzYTU5MjNhMDQiCitTUkNfVVJJW2Jvb3RzdHJhcC5zaGEyNTZzdW1dID0gIjk5NDdmYzcwNWIwYjg0MWI1OTM4YzQ4YjIyZGMzM2U5NjQ3ZWMwNzUyYmFlNjZlNTAyNzhkZjRmMjNmNjQ5NTkiCisKIGV4cG9ydCBHT09TID0gIiR7QlVJTERfR09PU30iCiBleHBvcnQgR09BUkNIID0gIiR7QlVJTERfR09BUkNIfSIKLWV4cG9ydCBHT1JPT1RfRklOQUwgPSAiJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dvJHtCT09UU1RSQVB9IgotZXhwb3J0IEdPUk9PVF9CT09UU1RSQVAgPSAiJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dvMS40IgorQ0MgPSAiJHtAZC5nZXRWYXIoJ0JVSUxEX0NDJykuc3RyaXAoKX0iCisKIGV4cG9ydCBDR09fRU5BQkxFRCA9ICIxIgogCi1kb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgorZG9fY29uZmlndXJlKCkgeworICAgIGNkICR7V09SS0RJUn0vZ28xLjQvZ28vc3JjCisgICAgQ0dPX0VOQUJMRUQ9MCBHT1JPT1Q9JHtXT1JLRElSfS9nbzEuNC9nbyAuL21ha2UuYmFzaAorfQogCiBkb19jb21waWxlKCkgewogCWV4cG9ydCBHT0JJTj0iJHtCfS9iaW4iCisJZXhwb3J0IEdPUk9PVF9GSU5BTD0iJHtub25zdGFnaW5nX2xpYmRpcn0vZ28iCisJZXhwb3J0IEdPUk9PVF9CT09UU1RSQVA9IiR7V09SS0RJUn0vZ28xLjQvZ28iCiAJcm0gLXJmICR7R09CSU59CiAJbWtkaXIgJHtHT0JJTn0KIApAQCAtMTgsNyArMzAsNyBAQAogCW1rZGlyIC1wICR7V09SS0RJUn0vYnVpbGQtdG1wCiAKIAljZCBzcmMKLQlDR09fRU5BQkxFRD0wIC4vbWFrZS5iYXNoIC0taG9zdC1vbmx5CisJLi9tYWtlLmJhc2ggLS1ob3N0LW9ubHkKIH0KIAogbWFrZV93cmFwcGVyKCkgewpAQCAtMjYsMzEgKzM4LDI1IEBACiAJY2F0IDw8RU5EID4ke0R9JHtiaW5kaXJ9LyQyJDMKICMhL2Jpbi9iYXNoCiBoZXJlPVxgZGlybmFtZSBcJDBcYAotZXhwb3J0IEdPUk9PVD0iJHtHT1JPT1Q6LVxgcmVhZGxpbmsgLWYgXCRoZXJlLy4uL2xpYi9nbyQzXGB9IgotXCRoZXJlLy4uL2xpYi9nbyQzL2Jpbi8kMSAiXCRAIgorZXhwb3J0IEdPUk9PVD0iJHtHT1JPT1Q6LVxgcmVhZGxpbmsgLWYgXCRoZXJlLy4uL2xpYi9nb1xgfSIKK1wkaGVyZS8uLi9saWIvZ28vYmluLyQxICJcJEAiCiBFTkQKLQljaG1vZCAreCAke0R9JHtiaW5kaXJ9LyQyJDMKKwljaG1vZCAreCAke0R9JHtiaW5kaXJ9LyQyCiB9CiAKIGRvX2luc3RhbGwoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L2dvJHtCT09UU1RSQVB9Ci0JY3AgLWEgJHtCfS9wa2cgJHtEfSR7bGliZGlyfS9nbyR7Qk9PVFNUUkFQfS8KLQlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vZ28ke0JPT1RTVFJBUH0vc3JjCisJaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L2dvCisJY3AgLS1wcmVzZXJ2ZT1tb2RlLHRpbWVzdGFtcHMgLVIgJHtCfS9wa2cgJHtEfSR7bGliZGlyfS9nby8KKwlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vZ28vc3JjCiAJKGNkICR7U30vc3JjOyBmb3IgZCBpbiAqOyBkbyBcCi0JCVsgLWQgJGQgXSAmJiBjcCAtYSAke1N9L3NyYy8kZCAke0R9JHtsaWJkaXJ9L2dvJHtCT09UU1RSQVB9L3NyYy87IFwKKwkJWyAtZCAkZCBdICYmIGNwIC1hICR7U30vc3JjLyRkICR7RH0ke2xpYmRpcn0vZ28vc3JjLzsgXAogCWRvbmUpCi0KLQlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0gJHtEfSR7bGliZGlyfS9nbyR7Qk9PVFNUUkFQfS9iaW4KKwlybSAtcmYgJHtEfSR7bGliZGlyfS9nby9zcmMvcnVudGltZS9wcHJvZi90ZXN0ZGF0YQorCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfSAke0R9JHtsaWJkaXJ9L2dvL2JpbgogCWZvciBmIGluICR7Qn0vYmluLyoKIAlkbwogCQliYXNlPWBiYXNlbmFtZSAkZmAKLQkJaW5zdGFsbCAtbTc1NSAkZiAke0R9JHtsaWJkaXJ9L2dvJHtCT09UU1RSQVB9L2JpbgotCQltYWtlX3dyYXBwZXIgJGJhc2UgJGJhc2UgJHtCT09UU1RSQVB9CisJCWluc3RhbGwgLW03NTUgJGYgJHtEfSR7bGliZGlyfS9nby9iaW4KKwkJbWFrZV93cmFwcGVyICRiYXNlICRiYXNlCiAJZG9uZQogfQotCi1kb19wYWNrYWdlW25vZXhlY10gPSAiMSIKLWRvX3BhY2thZ2VkYXRhW25vZXhlY10gPSAiMSIKLWRvX3BhY2thZ2Vfd3JpdGVfaXBrW25vZXhlY10gPSAiMSIKLWRvX3BhY2thZ2Vfd3JpdGVfZGViW25vZXhlY10gPSAiMSIKLWRvX3BhY2thZ2Vfd3JpdGVfcnBtW25vZXhlY10gPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tbmF0aXZlXzEuOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tbmF0aXZlXzEuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTgyZmNhMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLW5hdGl2ZV8xLjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLXJlcXVpcmUgJHtQTn0uaW5jCi1yZXF1aXJlIGdvLSR7UFZ9LmluYwotREVQRU5EUyArPSAiZ28tYm9vdHN0cmFwLW5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tbmF0aXZlXzEuOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tbmF0aXZlXzEuOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYmYzYzBkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1uYXRpdmVfMS45LmJiCkBAIC0wLDAgKzEsMiBAQAorcmVxdWlyZSAke1BOfS5pbmMKK3JlcXVpcmUgZ28tJHtQVn0uaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXJ1bnRpbWUuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1ydW50aW1lLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOWFlODZlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1ydW50aW1lLmluYwpAQCAtMCwwICsxLDk4IEBACitERVBFTkRTID0gInZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdvIGdvLW5hdGl2ZSIKK0RFUEVORFNfY2xhc3MtbmF0aXZlc2RrID0gInZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdvLWNyb3Nzc2RrIgorUFJPVklERVMgPSAidmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Z28tcnVudGltZSIKKworZXhwb3J0IEdPSE9TVE9TID0gIiR7QlVJTERfR09PU30iCitleHBvcnQgR09IT1NUQVJDSCA9ICIke0JVSUxEX0dPQVJDSH0iCitleHBvcnQgR09PUyA9ICIke1RBUkdFVF9HT09TfSIKK2V4cG9ydCBHT0FSQ0ggPSAiJHtUQVJHRVRfR09BUkNIfSIKK2V4cG9ydCBHT0FSTSA9ICIke1RBUkdFVF9HT0FSTX0iCitleHBvcnQgR08zODYgPSAiJHtUQVJHRVRfR08zODZ9IgorZXhwb3J0IEdPUk9PVF9CT09UU1RSQVAgPSAiJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dvIgorZXhwb3J0IEdPUk9PVF9GSU5BTCA9ICIke2xpYmRpcn0vZ28iCitleHBvcnQgR09fVEFSR0VUX0lOU1RBTEwgPSAic3RkIgorZXhwb3J0IENHT19FTkFCTEVEID0gIjEiCitleHBvcnQgQ0NfRk9SX1RBUkdFVD0iJHtDQ30iCitleHBvcnQgQ1hYX0ZPUl9UQVJHRVQ9IiR7Q1hYfSIKK2V4cG9ydCBHT1JPT1RfT1ZFUlJJREUgPSAiMSIKKworZG9fY29uZmlndXJlKCkgeworCToKK30KKworZG9fY29uZmlndXJlX2xpYmMtbXVzbCgpIHsKKwlybSAtZiAke1N9L3NyYy9ydW50aW1lL3JhY2UvKi5zeXNvCit9CisKK2RvX2NvbXBpbGUoKSB7CisJZXhwb3J0IEdPQklOPSIke0J9L2JpbiIKKwlleHBvcnQgQ0M9IiR7QGQuZ2V0VmFyKCdCVUlMRF9DQycpLnN0cmlwKCl9IgorCXJtIC1yZiAke0dPQklOfSAke0J9L3BrZworCW1rZGlyICR7R09CSU59CisJY2Qgc3JjCisJLi9tYWtlLmJhc2ggLS1ob3N0LW9ubHkKKwljcCAke0J9L3BrZy90b29sLyR7QlVJTERfR09UVVBMRX0vZ29fYm9vdHN0cmFwICR7Qn0KKwlybSAtcmYgJHtCfS9wa2cvJHtUQVJHRVRfR09UVVBMRX0KKwkuL21ha2UuYmFzaCAtLXRhcmdldC1vbmx5CisJaWYgWyAtbiAiJHtHT19EWU5MSU5LfSIgXTsgdGhlbgorCQljcCAke0J9L2dvX2Jvb3RzdHJhcCAke0J9L3BrZy90b29sLyR7QlVJTERfR09UVVBMRX0KKwkJR09fRkxBR1M9Ii1idWlsZG1vZGU9c2hhcmVkIiBHT19MREZMQUdTPSItZXh0bGRmbGFncyBcIiR7TERGTEFHU31cIiIgLi9tYWtlLmJhc2ggLS10YXJnZXQtb25seQorCWZpCisJY2QgJHtCfQorfQorCitkb19pbnN0YWxsKCkgeworCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9nby9zcmMKKwljcCAtLXByZXNlcnZlPW1vZGUsdGltZXN0YW1wcyAtUiAke0J9L3BrZyAke0R9JHtsaWJkaXJ9L2dvLworCWlmIFsgIiR7QlVJTERfR09UVVBMRX0iICE9ICIke1RBUkdFVF9HT1RVUExFfSIgXTsgdGhlbgorCQlybSAtcmYgJHtEfSR7bGliZGlyfS9nby9wa2cvJHtCVUlMRF9HT1RVUExFfQorCQlybSAtcmYgJHtEfSR7bGliZGlyfS9nby9wa2cvb2JqLyR7QlVJTERfR09UVVBMRX0KKwlmaQorCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2dvL3BrZy90b29sCisJcm0gLXJmICR7RH0ke2xpYmRpcn0vZ28vcGtnL29iagorCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2dvL3BrZy9ib290c3RyYXAKKwlmaW5kIHNyYyAtbWluZGVwdGggMSAtbWF4ZGVwdGggMSAtdHlwZSBkIHwgd2hpbGUgcmVhZCBzcmNkaXI7IGRvCisJCWNwIC0tcHJlc2VydmU9bW9kZSx0aW1lc3RhbXBzIC1SICRzcmNkaXIgJHtEfSR7bGliZGlyfS9nby9zcmMvCisJZG9uZQorCXJtIC1mICR7RH0ke2xpYmRpcn0vZ28vc3JjL2NtZC9kaXN0L2Rpc3QKK30KKworIyBSZW1vdmUgdGVzdCBiaW5hcmllcyB0aGF0IGNhbm5vdCBiZSByZWxvY2F0ZWQKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKKwlybSAtcmYgJHtEfSR7bGliZGlyfS9nby9zcmMvcnVudGltZS9wcHJvZi90ZXN0ZGF0YQorfQorCisjIFRoZXNlIHRlc3RkYXRhIGRpcmVjdG9yaWVzIGFyZW4ndCBuZWVkZWQgZm9yIGJ1aWxkcyBhbmQgY29udGFpbiBiaW5hcmllcworIyB0aGF0IGNhbiBjYXVzZSBlcnJvcnMgaW4gc3lzcm9vdF9zdHJpcCgpLCBzbyBqdXN0IHJlbW92ZSB0aGVtLgorc3lzcm9vdF9zdGFnZV9hbGxfYXBwZW5kKCkgeworCWZpbmQgJHtTWVNST09UX0RFU1RESVJ9JHtsaWJkaXJ9L2dvL3NyYyAtZGVwdGggLXR5cGUgZCAtbmFtZSAndGVzdGRhdGEnIC1leGVjIHJtIC1yZiB7fSBcOworfQorCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgorRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2dvL3BrZy8ke1RBUkdFVF9HT1RVUExFfV9keW5saW5rLyoke1NPTElCU0RFVn0iCitGSUxFU18ke1BOfS1kZXYgPSAiJHtsaWJkaXJ9L2dvL3NyYyAke2xpYmRpcn0vZ28vcGtnL2luY2x1ZGUgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9nby9wa2cvJHtUQVJHRVRfR09UVVBMRX1fZHlubGluay8qLnNobGlibmFtZSBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2dvL3BrZy8ke1RBUkdFVF9HT1RVUExFfV9keW5saW5rLyovKi5zaGxpYm5hbWUgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9nby9wa2cvJHtUQVJHRVRfR09UVVBMRX1fZHlubGluay8qLyovKi5zaGxpYm5hbWUgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9nby9wa2cvJHtUQVJHRVRfR09UVVBMRX1fZHlubGluay8qLyovKi8qLnNobGlibmFtZSBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2dvL3BrZy8ke1RBUkdFVF9HT1RVUExFfV9keW5saW5rLyovKi8qLyovKi5zaGxpYm5hbWUgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9nby9wa2cvJHtUQVJHRVRfR09UVVBMRX1fZHlubGluay8qLyovKi8qLyovKi5zaGxpYm5hbWUgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9nby9wa2cvJHtUQVJHRVRfR09UVVBMRX1fZHlubGluay8qLyovKi8qLyovKi8qLnNobGlibmFtZSBcCisiCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgPSAiJHtsaWJkaXJ9L2dvL3BrZy8ke1RBUkdFVF9HT1RVUExFfSBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2dvL3BrZy8ke1RBUkdFVF9HT1RVUExFfV9keW5saW5rLyouYSBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2dvL3BrZy8ke1RBUkdFVF9HT1RVUExFfV9keW5saW5rLyovKi5hIFwKKyAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vZ28vcGtnLyR7VEFSR0VUX0dPVFVQTEV9X2R5bmxpbmsvKi8qLyouYSBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2dvL3BrZy8ke1RBUkdFVF9HT1RVUExFfV9keW5saW5rLyovKi8qLyouYSBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2dvL3BrZy8ke1RBUkdFVF9HT1RVUExFfV9keW5saW5rLyovKi8qLyovKi5hIFwKKyAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vZ28vcGtnLyR7VEFSR0VUX0dPVFVQTEV9X2R5bmxpbmsvKi8qLyovKi8qLyouYSBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2dvL3BrZy8ke1RBUkdFVF9HT1RVUExFfV9keW5saW5rLyovKi8qLyovKi8qLyouYSBcCisiCisjIFRoZSB0ZXN0ZGF0YSBkaXJlY3RvcmllcyBpbiB0aGUgc291cmNlIHRyZWUgaW5jbHVkZSBzb21lIGJpbmFyaWVzIGZvciB2YXJpb3VzCisjIGFyY2hpdGVjdHVyZXMsIHNjcmlwdHMsIGFuZCAuYSBmaWxlcworSU5TQU5FX1NLSVBfJHtQTn0tZGV2ID0gInN0YXRpY2RldiBsZGZsYWdzIGZpbGUtcmRlcHMgYXJjaCIKKworSU5ISUJJVF9QQUNLQUdFX1NUUklQID0gIjEiCitJTkhJQklUX1BBQ0tBR0VfREVCVUdfU1BMSVQgPSAiMSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXJ1bnRpbWVfMS45LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1ydW50aW1lXzEuOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40M2I2OGI0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1ydW50aW1lXzEuOS5iYgpAQCAtMCwwICsxLDIgQEAKK3JlcXVpcmUgZ28tJHtQVn0uaW5jCityZXF1aXJlIGdvLXJ1bnRpbWUuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXRhcmdldC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXRhcmdldC5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2FjNWQ3OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tdGFyZ2V0LmluYwpAQCAtMCwwICsxLDYxIEBACitpbmhlcml0IGdvYXJjaAorREVQRU5EUyA9ICJ2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nbyBnby1uYXRpdmUiCitERVBFTkRTX2NsYXNzLW5hdGl2ZXNkayA9ICJ2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nby1jcm9zc3NkayBnby1uYXRpdmUiCisKK2V4cG9ydCBHT0hPU1RPUyA9ICIke0JVSUxEX0dPT1N9IgorZXhwb3J0IEdPSE9TVEFSQ0ggPSAiJHtCVUlMRF9HT0FSQ0h9IgorZXhwb3J0IEdPT1MgPSAiJHtUQVJHRVRfR09PU30iCitleHBvcnQgR09BUkNIID0gIiR7VEFSR0VUX0dPQVJDSH0iCitleHBvcnQgR09BUk0gPSAiJHtUQVJHRVRfR09BUk19IgorZXhwb3J0IEdPMzg2ID0gIiR7VEFSR0VUX0dPMzg2fSIKK2V4cG9ydCBHT1JPT1RfQk9PVFNUUkFQID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nbyIKK2V4cG9ydCBHT1JPT1RfRklOQUwgPSAiJHtsaWJkaXJ9L2dvIgorZXhwb3J0IENHT19FTkFCTEVEID0gIjEiCitleHBvcnQgQ0NfRk9SX1RBUkdFVCA9ICIke0NDfSIKK2V4cG9ydCBDWFhfRk9SX1RBUkdFVCA9ICIke0NYWH0iCitleHBvcnQgR09fVEFSR0VUX0lOU1RBTEwgPSAiY21kIgorZXhwb3J0IEdPX0ZMQUdTID0gIi1hIgorR09fTERGTEFHUyA9ICIiCitHT19MREZMQUdTX2NsYXNzLW5hdGl2ZXNkayA9ICItbGlua21vZGUgZXh0ZXJuYWwiCitleHBvcnQgR09fTERGTEFHUworCitTRUNVUklUWV9DRkxBR1MgPSAiJHtTRUNVUklUWV9OT1BJRV9DRkxBR1N9IgorU0VDVVJJVFlfTERGTEFHUyA9ICIiCisKK2RvX2NvbmZpZ3VyZVtub2V4ZWNdID0gIjEiCisKK2RvX2NvbXBpbGUoKSB7CisJZXhwb3J0IEdPQklOPSIke0J9L2JpbiIKKwlleHBvcnQgQ0M9IiR7QGQuZ2V0VmFyKCdCVUlMRF9DQycpLnN0cmlwKCl9IgorCXJtIC1yZiAke0dPQklOfSAke0J9L3BrZworCW1rZGlyICR7R09CSU59CisKKwlleHBvcnQgVE1QRElSPSR7V09SS0RJUn0vYnVpbGQtdG1wCisJbWtkaXIgLXAgJHtXT1JLRElSfS9idWlsZC10bXAKKworCWNkIHNyYworCS4vbWFrZS5iYXNoCisJY2QgJHtCfQorfQorCitkb19pbnN0YWxsKCkgeworCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9nby9wa2cvdG9vbAorCWNwIC0tcHJlc2VydmU9bW9kZSx0aW1lc3RhbXBzIC1SICR7Qn0vcGtnL3Rvb2wvJHtUQVJHRVRfR09UVVBMRX0gJHtEfSR7bGliZGlyfS9nby9wa2cvdG9vbC8KKwlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vZ28vc3JjCisJY3AgLS1wcmVzZXJ2ZT1tb2RlLHRpbWVzdGFtcHMgLVIgJHtTfS9zcmMvY21kICR7RH0ke2xpYmRpcn0vZ28vc3JjLworCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9nby9iaW4KKwlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KKwlmb3IgZiBpbiAke0J9LyR7R09fQlVJTERfQklORElSfS8qOyBkbworCQluYW1lPWBiYXNlbmFtZSAkZmAKKwkJaW5zdGFsbCAtbSAwNzU1ICRmICR7RH0ke2xpYmRpcn0vZ28vYmluLworCQlsbiAtc2YgLi4vJHtCQVNFTElCfS9nby9iaW4vJG5hbWUgJHtEfSR7YmluZGlyfS8KKwlkb25lCit9CisKK1BBQ0tBR0VTID0gIiR7UE59ICR7UE59LWRldiIKK0ZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS9nby9iaW4gJHtsaWJkaXJ9L2dvL3BrZy90b29sLyR7VEFSR0VUX0dPVFVQTEV9ICR7YmluZGlyfSIKK0ZJTEVTXyR7UE59LWRldiA9ICIke2xpYmRpcn0vZ28iCitSREVQRU5EU18ke1BOfS1kZXYgPSAicGVybCBiYXNoIgorSU5TQU5FX1NLSVBfJHtQTn0gPSAibGRmbGFncyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28uaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNTQzN2RkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28uaW5jCisrKyAvZGV2L251bGwKQEAgLTEsODYgKzAsMCBAQAotaW5oZXJpdCBnb2FyY2gKLURFUEVORFMgKz0gImdvLWJvb3RzdHJhcC1uYXRpdmUiCi0KLSMgbGliZ2NjIGlzIHJlcXVpcmVkIGZvciB0aGUgdGFyZ2V0IHNwZWNpZmljIGxpYnJhcmllcyB0byBidWlsZAotIyBwcm9wZXJseSwgYnV0IGFwcGFyZW50bHkgbm90IGZvciBnby1jcm9zcyBhbmQsIG1vcmUgaW1wb3J0YW50bHksCi0jIGFsc28gY2FuJ3QgYmUgdXNlZCB0aGVyZSBiZWNhdXNlIGdvLWNyb3NzIGNhbm5vdCBkZXBlbmQgb24KLSMgdGhlIHR1bmUtc3BlY2lmaWMgbGliZ2NjLiBPdGhlcndpc2UgZ28tY3Jvc3MgYWxzbyB3b3VsZCBoYXZlCi0jIHRvIGJlIHR1bmUtc3BlY2lmaWMuCi1ERVBFTkRTICs9ICIke0AgJ2xpYmdjYycgaWYgbm90IG9lLnV0aWxzLmluaGVyaXRzKGQsICdjcm9zcycpIGVsc2UgJyd9IgotCi0jIFByZXZlbnQgcnVuc3RyaXAgZnJvbSBydW5uaW5nIGJlY2F1c2UgeW91IGdldCBlcnJvcnMgd2hlbiB0aGUgaG9zdCBhcmNoICE9IHRhcmdldCBhcmNoCi1JTkhJQklUX1BBQ0tBR0VfU1RSSVAgPSAiMSIKLUlOSElCSVRfU1lTUk9PVF9TVFJJUCA9ICIxIgotCi0jIHgzMiBBQkkgaXMgbm90IHN1cHBvcnRlZCBvbiBnbyBjb21waWxlciBzbyBmYXIKLUNPTVBBVElCTEVfSE9TVF9saW51eC1nbnV4MzIgPSAibnVsbCIKLSMgcHBjMzIgaXMgbm90IHN1cHBvcnRlZCBpbiBnbyBjb21waWxlcnMKLUNPTVBBVElCTEVfSE9TVF9wb3dlcnBjID0gIm51bGwiCi0KLWV4cG9ydCBHT0hPU1RPUyA9ICIke0JVSUxEX0dPT1N9IgotZXhwb3J0IEdPSE9TVEFSQ0ggPSAiJHtCVUlMRF9HT0FSQ0h9IgotZXhwb3J0IEdPT1MgPSAiJHtUQVJHRVRfR09PU30iCi1leHBvcnQgR09BUkNIID0gIiR7VEFSR0VUX0dPQVJDSH0iCi1leHBvcnQgR09BUk0gPSAiJHtUQVJHRVRfR09BUk19IgotZXhwb3J0IEdPUk9PVF9CT09UU1RSQVAgPSAiJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dvMS40IgotZXhwb3J0IEdPUk9PVF9GSU5BTCA9ICIke2xpYmRpcn0vZ28iCi1leHBvcnQgQ0dPX0VOQUJMRUQgPSAiMSIKLWV4cG9ydCBDQ19GT1JfVEFSR0VUID0gIiR7Q0N9IgotZXhwb3J0IENYWF9GT1JfVEFSR0VUID0gIiR7Q1hYfSIKLQotZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKLQotZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLWNyb3NzKCkgewotCWV4cG9ydCBDR09fRU5BQkxFRD0wCi19Ci0KLWRvX2NvbXBpbGUoKSB7Ci0JZXhwb3J0IEdPQklOPSIke0J9L2JpbiIKLQlleHBvcnQgQ0M9IiR7QGQuZ2V0VmFyKCdCVUlMRF9DQycsIFRydWUpLnN0cmlwKCl9IgotCXJtIC1yZiAke0dPQklOfSAke0J9L3BrZwotCW1rZGlyICR7R09CSU59Ci0KLQlleHBvcnQgVE1QRElSPSR7V09SS0RJUn0vYnVpbGQtdG1wCi0JbWtkaXIgLXAgJHtXT1JLRElSfS9idWlsZC10bXAKLQotCWNkIHNyYwotCS4vbWFrZS5iYXNoIC0taG9zdC1vbmx5Ci0JIyBFbnN1cmUgY2dvLmEgaXMgYnVpbHQgd2l0aCB0aGUgdGFyZ2V0IHRvb2xjaGFpbgotCWV4cG9ydCBHT0JJTj0iJHtCfS90YXJnZXQvYmluIgotCXJtIC1yZiAke0dPQklOfQotCW1rZGlyIC1wICR7R09CSU59Ci0JR09fRkxBR1M9Ii1hIiAuL21ha2UuYmFzaAotfQotCi1kb19pbnN0YWxsX2NsYXNzLXRhcmdldCgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vZ28KLQljcCAtYSAke0J9L3BrZyAke0R9JHtsaWJkaXJ9L2dvLwotCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9nby9zcmMKLQkoY2QgJHtTfS9zcmM7IGZvciBkIGluICo7IGRvIFwKLQkJWyAtZCAkZCBdICYmIGNwIC1hICR7U30vc3JjLyRkICR7RH0ke2xpYmRpcn0vZ28vc3JjLzsgXAotCWRvbmUpCi0JaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9Ci0JaWYgWyAtZCAke0J9L2Jpbi8ke0dPT1N9XyR7R09BUkNIfSBdCi0JdGhlbgotCQlpbnN0YWxsIC1tIDA3NTUgJHtCfS9iaW4vJHtHT09TfV8ke0dPQVJDSH0vKiAke0R9JHtiaW5kaXJ9Ci0JZWxzZQotCQlpbnN0YWxsIC1tIDA3NTUgJHtCfS9iaW4vKiAke0R9JHtiaW5kaXJ9Ci0JZmkKLX0KLQotZG9faW5zdGFsbF9jbGFzcy1jcm9zcygpIHsKLQlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vZ28KLQljcCAtYSAke0J9L3BrZyAke0R9JHtsaWJkaXJ9L2dvLwotCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9nby9zcmMKLQkoY2QgJHtTfS9zcmM7IGZvciBkIGluICo7IGRvIFwKLQkJWyAtZCAkZCBdICYmIGNwIC1hICR7U30vc3JjLyRkICR7RH0ke2xpYmRpcn0vZ28vc3JjLzsgXAotCWRvbmUpCi0JaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9Ci0JZm9yIGYgaW4gJHtCfS9iaW4vZ28qCi0JZG8KLQkJaW5zdGFsbCAtbTc1NSAkZiAke0R9JHtiaW5kaXJ9Ci0JZG9uZQotfQotZG9fcGFja2FnZV9xYVtub2V4ZWNdID0gIjEiCi0KLVJERVBFTkRTXyR7UE59ICs9ICJwZXJsIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nb18xLjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvXzEuNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmY1OTAzMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvXzEuNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotcmVxdWlyZSBnby5pbmMKLXJlcXVpcmUgZ28tJHtQVn0uaW5jCi0KLUJCQ0xBU1NFWFRFTkQgPSAiY3Jvc3MiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvXzEuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ29fMS43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlN2E2YWIyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ29fMS43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1yZXF1aXJlIGdvLSR7UFZ9LmluYwotcmVxdWlyZSBnby5pbmMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ29fMS44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nb18xLjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5MWIxMzEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nb18xLjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLXJlcXVpcmUgZ28tJHtQVn0uaW5jCi1yZXF1aXJlIGdvLmluYwotVFVORV9DQ0FSR1NfcmVtb3ZlID0gIi1tYXJjaD1taXBzMzJyMiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ29fMS45LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nb18xLjkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzY3ZTJjYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ29fMS45LmJiCkBAIC0wLDAgKzEsMiBAQAorcmVxdWlyZSBnby0ke1BWfS5pbmMKK3JlcXVpcmUgZ28tdGFyZ2V0LmluYwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ndWlsZS9maWxlcy9hcm1fYWFyY2g2NC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ3VpbGUvZmlsZXMvYXJtX2FhcmNoNjQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxNzg4YjYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ndWlsZS9maWxlcy9hcm1fYWFyY2g2NC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLWd1aWxlOiBhZGQgYWFyY2g2NCByZWNvZ25pdGlvbgotCi1Bc3N1bWUgbGl0dGxlLWVuZGlhbi4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IGpvZS5zbGF0ZXJAd2luZHJpdmVyLmNvbQotCi0tLS0gYS9tb2R1bGUvc3lzdGVtL2Jhc2UvdGFyZ2V0LnNjbQotKysrIGIvbW9kdWxlL3N5c3RlbS9iYXNlL3RhcmdldC5zY20KLUBAIC03MCw2ICs3MCw4IEBACi0gICAgICAgICAgICAgKChtZW1iZXIgY3B1ICcoInNwYXJjIiAic3BhcmM2NCIgInBvd2VycGMiICJwb3dlcnBjNjQiICJzcHUiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1pcHMiICJtaXBzNjQiKSkKLSAgICAgICAgICAgICAgKGVuZGlhbm5lc3MgYmlnKSkKLSsgICAgICAgICAgICAoKHN0cmluZy1tYXRjaCAiXmFhcmNoNjQiIGNwdSkKLSsgICAgICAgICAgICAgKGVuZGlhbm5lc3MgbGl0dGxlKSkKLSAgICAgICAgICAgICAoKHN0cmluZy1tYXRjaCAiXmFybS4qZWIiIGNwdSkKLSAgICAgICAgICAgICAgKGVuZGlhbm5lc3MgYmlnKSkKLSAgICAgICAgICAgICAoKHN0cmluZy1tYXRjaCAiXmFybS4qIiBjcHUpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2d1aWxlL2ZpbGVzL2FybV9lbmRpYW5uZXNzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ndWlsZS9maWxlcy9hcm1fZW5kaWFubmVzcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWE0MzI4Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2d1aWxlL2ZpbGVzL2FybV9lbmRpYW5uZXNzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotU3VwcG9ydCBmb3JtIEFSTSBlbmRpYW5uZXNzCi0KLUZpeGVzIFlvY3RvIGJ1ZyMgMjcyOQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotSW5kZXg6IGd1aWxlLTIuMC41L21vZHVsZS9zeXN0ZW0vYmFzZS90YXJnZXQuc2NtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3VpbGUtMi4wLjUub3JpZy9tb2R1bGUvc3lzdGVtL2Jhc2UvdGFyZ2V0LnNjbQkyMDEyLTAxLTI0IDAzOjA2OjA2LjAwMDAwMDAwMCAtMDgwMAotKysrIGd1aWxlLTIuMC41L21vZHVsZS9zeXN0ZW0vYmFzZS90YXJnZXQuc2NtCTIwMTItMDctMTIgMTM6MDU6NDQuMzcyMzY0MTAzIC0wNzAwCi1AQCAtNzAsNyArNzAsOSBAQAotICAgICAgICAgICAgICgobWVtYmVyIGNwdSAnKCJzcGFyYyIgInNwYXJjNjQiICJwb3dlcnBjIiAicG93ZXJwYzY0IiAic3B1IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtaXBzIiAibWlwczY0IikpCi0gICAgICAgICAgICAgIChlbmRpYW5uZXNzIGJpZykpCi0tICAgICAgICAgICAgKChzdHJpbmctbWF0Y2ggIl5hcm0uKmVsIiBjcHUpCi0rICAgICAgICAgICAgKChzdHJpbmctbWF0Y2ggIl5hcm0uKmViIiBjcHUpCi0rICAgICAgICAgICAgIChlbmRpYW5uZXNzIGJpZykpCi0rICAgICAgICAgICAgKChzdHJpbmctbWF0Y2ggIl5hcm0uKiIgY3B1KQotICAgICAgICAgICAgICAoZW5kaWFubmVzcyBsaXR0bGUpKQotICAgICAgICAgICAgIChlbHNlCi0gICAgICAgICAgICAgIChlcnJvciAidW5rbm93biBDUFUgZW5kaWFubmVzcyIgY3B1KSkpKSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ3VpbGUvZmlsZXMvZGViaWFuLzAwMDItTWFyay1VbnVzZWQtbW9kdWxlcy1hcmUtcmVtb3ZlZC1nYy10ZXN0LWFzLXVucmVzb2x2ZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ3VpbGUvZmlsZXMvZGViaWFuLzAwMDItTWFyay1VbnVzZWQtbW9kdWxlcy1hcmUtcmVtb3ZlZC1nYy10ZXN0LWFzLXVucmVzb2x2ZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzdiZjYzNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2d1aWxlL2ZpbGVzL2RlYmlhbi8wMDAyLU1hcmstVW51c2VkLW1vZHVsZXMtYXJlLXJlbW92ZWQtZ2MtdGVzdC1hcy11bnJlc29sdmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2RlYmlhbiBwYXRjaF0KLQotU2lnbmVkLW9mZi1ieTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KLQotRnJvbSBlNTJiZmNkYmFjYTVkY2U0OTg2NzhkOGY1MTIzODFlM2UzOWE0MDY2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9iIEJyb3duaW5nIDxybGJAZGVmYXVsdHZhbHVlLm9yZz4KLURhdGU6IFN1biwgMTggTWFyIDIwMTIgMTE6NDA6NTUgLTA1MDAKLVN1YmplY3Q6IE1hcmsgIlVudXNlZCBtb2R1bGVzIGFyZSByZW1vdmVkIiBnYyB0ZXN0IGFzIHVucmVzb2x2ZWQuCi0KLUFzIHBlciBkaXNjdXNzaW9uIHdpdGggdXBzdHJlYW0sIG1hcmsgdGhpcyB0ZXN0IGFzIHVucmVzb2x2ZWQgc2luY2UgaXQKLW1heSBwcm9kdWNlIGZhbHNlIG5lZ2F0aXZlcywgZGVwZW5kaW5nIG9uIHRoZSBiZWhhdmlvci90aW1pbmcgb2YgdGhlCi1nYXJiYWdlIGNvbGxlY3Rvci4KLS0tLQotIHRlc3Qtc3VpdGUvdGVzdHMvZ2MudGVzdCB8ICAgMTEgKysrKysrLS0tLS0KLSAxIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3Rlc3Qtc3VpdGUvdGVzdHMvZ2MudGVzdCBiL3Rlc3Qtc3VpdGUvdGVzdHMvZ2MudGVzdAotaW5kZXggYTk2OTc1Mi4uOGM4ZTEzZSAxMDA2NDQKLS0tLSBhL3Rlc3Qtc3VpdGUvdGVzdHMvZ2MudGVzdAotKysrIGIvdGVzdC1zdWl0ZS90ZXN0cy9nYy50ZXN0Ci1AQCAtODQsMTEgKzg0LDEzIEBACi0gICAgICAgOzsgb25lIGdjIHJvdW5kLiBub3Qgc3VyZSB3aHkuCi0gCi0gICAgICAgKG1heWJlLWdjLWZsYWtpbmVzcwotLSAgICAgICAoPSAobGV0IGxwICgoaSAwKSkKLS0gICAgICAgICAgICAoaWYgKGd1YXJkKQotLSAgICAgICAgICAgICAgICAobHAgKDErIGkpKQotLSAgICAgICAgICAgICAgICBpKSkKLS0gICAgICAgICAgdG90YWwpKSkpCi0rICAgICAgIChvciAoPSAobGV0IGxwICgoaSAwKSkKLSsgICAgICAgICAgICAgICAgKGlmIChndWFyZCkKLSsgICAgICAgICAgICAgICAgICAgIChscCAoMSsgaSkpCi0rICAgICAgICAgICAgICAgICAgICBpKSkKLSsgICAgICAgICAgICAgIHRvdGFsKQotKyAgICAgICAgICAgKHRocm93ICd1bnJlc29sdmVkKSkpKSkKLSsKLSAKLSAgIChwYXNzLWlmICJMZXhpY2FsIHZhcnMgYXJlIGNvbGxlY3RhYmxlIgotICAgICAobGV0ICgobCAoY29tcGlsZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ndWlsZS9maWxlcy9kZWJpYW4vMDAwMy1NYXJrLW11dGV4LXdpdGgtb3duZXItbm90LXJldGFpbmVkLXRocmVhZHMtdGVzdC1hcy11LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ndWlsZS9maWxlcy9kZWJpYW4vMDAwMy1NYXJrLW11dGV4LXdpdGgtb3duZXItbm90LXJldGFpbmVkLXRocmVhZHMtdGVzdC1hcy11LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkM2ZhZjNlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ3VpbGUvZmlsZXMvZGViaWFuLzAwMDMtTWFyay1tdXRleC13aXRoLW93bmVyLW5vdC1yZXRhaW5lZC10aHJlYWRzLXRlc3QtYXMtdS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZGViaWFuIHBhdGNoXQotCi1TaWduZWQtb2ZmLWJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgotCi1Gcm9tIDg0ODU0MzA5MWQ1NWRkZGI1NGE4NTYxMjE1NTk2NDUwNmQ3MTI4NTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb2IgQnJvd25pbmcgPHJsYkBkZWZhdWx0dmFsdWUub3JnPgotRGF0ZTogU3VuLCAxOCBNYXIgMjAxMiAxMzoyODoyNCAtMDUwMAotU3ViamVjdDogTWFyayAibXV0ZXggd2l0aCBvd25lciBub3QgcmV0YWluZWQiIHRocmVhZHMgdGVzdCBhcyB1bnJlc29sdmVkLgotCi1BcyBwZXIgZGlzY3Vzc2lvbiB3aXRoIHVwc3RyZWFtLCBtYXJrIHRoaXMgdGVzdCBhcyB1bnJlc29sdmVkIHNpbmNlIGl0Ci1tYXkgcHJvZHVjZSBmYWxzZSBuZWdhdGl2ZXMsIGRlcGVuZGluZyBvbiB0aGUgYmVoYXZpb3IvdGltaW5nIG9mIHRoZQotZ2FyYmFnZSBjb2xsZWN0b3IuCi0tLS0KLSB0ZXN0LXN1aXRlL3Rlc3RzL3RocmVhZHMudGVzdCB8ICAgIDYgKysrKy0tCi0gMSBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS90ZXN0LXN1aXRlL3Rlc3RzL3RocmVhZHMudGVzdCBiL3Rlc3Qtc3VpdGUvdGVzdHMvdGhyZWFkcy50ZXN0Ci1pbmRleCA4NWE3YzM4Li41MDg5OWNiIDEwMDY0NAotLS0tIGEvdGVzdC1zdWl0ZS90ZXN0cy90aHJlYWRzLnRlc3QKLSsrKyBiL3Rlc3Qtc3VpdGUvdGVzdHMvdGhyZWFkcy50ZXN0Ci1AQCAtNDE0LDggKzQxNCwxMCBAQAotIAotICAgICAgICAgICAgIChnYykgKGdjKQotICAgICAgICAgICAgIChsZXQgKChtIChnKSkpCi0tICAgICAgICAgICAgICAoYW5kIChtdXRleD8gbSkKLS0gICAgICAgICAgICAgICAgICAgKGVxPyAobXV0ZXgtb3duZXIgbSkgKGN1cnJlbnQtdGhyZWFkKSkpKSkpKQotKyAgICAgICAgICAgICAgKG9yCi0rICAgICAgICAgICAgICAgKGFuZCAobXV0ZXg/IG0pCi0rICAgICAgICAgICAgICAgICAgICAoZXE/IChtdXRleC1vd25lciBtKSAoY3VycmVudC10aHJlYWQpKSkKLSsgICAgICAgICAgICAgICAodGhyb3cgJ3VucmVzb2x2ZWQpKSkpKSkKLSAKLSAgICAgICA7OwotICAgICAgIDs7IG11dGV4IGxvY2sgbGV2ZWxzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2d1aWxlL2ZpbGVzL2d1aWxlXzIuMC42X2ZpeF9zZWRfZXJyb3IucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2d1aWxlL2ZpbGVzL2d1aWxlXzIuMC42X2ZpeF9zZWRfZXJyb3IucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1OTdiYjIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ndWlsZS9maWxlcy9ndWlsZV8yLjAuNl9maXhfc2VkX2Vycm9yLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVRoaXMgZml4ZXMgc2VkIGlzc3VlIHdoZW4gcHJlZml4IGhhcyAvIGluIGl0LCBsaWtlIC91c3IvbG9jYWwKLQotYXV0b3JlY29uZiBlcnJvciBhdm9pZGVkOgotfCBzZWQ6IC1lIGV4cHJlc3Npb24gIzEsIGNoYXIgOTogdW5rbm93biBvcHRpb24gdG8gYHMnCi18IGNvbmZpZ3VyZS5hYzozOTogZXJyb3I6IEFDX0lOSVQgc2hvdWxkIGJlIGNhbGxlZCB3aXRoIHBhY2thZ2UgYW5kIHZlcnNpb24gYXJndW1lbnRzCi0KLVNpZ25lZC1vZmYtYnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+Ci0yMDEyLzA1LzAxCi0KLUluZGV4OiBndWlsZS0yLjAuNS9idWlsZC1hdXgvZ2l0LXZlcnNpb24tZ2VuCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3VpbGUtMi4wLjUub3JpZy9idWlsZC1hdXgvZ2l0LXZlcnNpb24tZ2VuCi0rKysgZ3VpbGUtMi4wLjUvYnVpbGQtYXV4L2dpdC12ZXJzaW9uLWdlbgotQEAgLTE4Nyw3ICsxODcsNyBAQCBlbHNlCi0gICAgIHY9VU5LTk9XTgotIGZpCi0gCi0tdj1gZWNobyAiJHYiIHxzZWQgInMvXiRwcmVmaXgvLyJgCi0rdj1gZWNobyAiJHYiIHxzZWQgInMjXiRwcmVmaXgjIyJgCi0gCi0gIyBUZXN0IHdoZXRoZXIgdG8gYXBwZW5kIHRoZSAiLWRpcnR5IiBzdWZmaXggb25seSBpZiB0aGUgdmVyc2lvbgotICMgc3RyaW5nIHdlJ3JlIHVzaW5nIGNhbWUgZnJvbSBnaXQuICBJLmUuLCBza2lwIHRoZSB0ZXN0IGlmIGl0J3MgIlVOS05PV04iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2d1aWxlL2ZpbGVzL2xpYmd1aWxlLU1ha2VmaWxlLmFtLWhvb2sucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2d1aWxlL2ZpbGVzL2xpYmd1aWxlLU1ha2VmaWxlLmFtLWhvb2sucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5MGI5ZDQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ndWlsZS9maWxlcy9saWJndWlsZS1NYWtlZmlsZS5hbS1ob29rLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotRnJvbSA5YzRlMTIwYTdhODdkYjM0ZDIyYTUwODgzYTVhNTI1MTcwYjQ4MGQ3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUdWUsIDYgSmFuIDIwMTUgMjM6MTA6NTEgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gbGliZ3VpbGUvTWFrZWZpbGUuYW06IGluc3RhbGwtZGF0YS1ob29rIC0+IGluc3RhbGwtZXhlYy1ob29rCi0KLUl0IG1heSBpbnN0YWxsIHN1Y2ggYSBmaWxlOgotL3Vzci9saWI2NC9saWJndWlsZS0yLjAqLWdkYi5zY20KLQotVGhpcyBpcyBiZWNhdXNlIHdoZW4gdGhlcmUgaXMgbm8gZmlsZSBpbiB0aGUgZGlyZWN0b3J5OgotZm9yIGYgaW4gbGliZ3VpbGUtMi4wKjsgZG8KLSAgICBbc25pcF0KLWRvbmUKLQotVGhlIGYgd291bGQgYmUgbGliZ3VpbGUtMi4wKiBpdHNlbGYsIHVzZSBpbnN0YWxsLWV4ZWMtaG9vayB3aWxsIGZpeCB0aGUKLXByb2JsZW0gc2luY2UgaXQgZGVwZW5kcyBvbiBpbnN0YWxsLWxpYkxUTElCUkFSSUVTLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWJndWlsZS9NYWtlZmlsZS5hbSB8ICAgIDQgKy0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmd1aWxlL01ha2VmaWxlLmFtIGIvbGliZ3VpbGUvTWFrZWZpbGUuYW0KLWluZGV4IDVkZWNkOTkuLjUyNjQ1YjcgMTAwNjQ0Ci0tLS0gYS9saWJndWlsZS9NYWtlZmlsZS5hbQotKysrIGIvbGliZ3VpbGUvTWFrZWZpbGUuYW0KLUBAIC00NDYsMTAgKzQ0Niw4IEBAIEVYVFJBX2xpYmd1aWxlX0BHVUlMRV9FRkZFQ1RJVkVfVkVSU0lPTkBfbGFfU09VUkNFUyA9IF9zY20uaAkJXAotICMjIGRlbGV0ZSBndWlsZS1zbmFyZi5hd2sgZnJvbSB0aGUgaW5zdGFsbGF0aW9uIGJpbmRpciwgaW4gY2FzZSBpdCdzCi0gIyMgbGluZ2VyaW5nIHRoZXJlIGR1ZSB0byBhbiBlYXJsaWVyIGd1aWxlIHZlcnNpb24gbm90IGhhdmluZyBiZWVuCi0gIyMgd2lwZWQgb3V0LgotLWluc3RhbGwtZXhlYy1ob29rOgotK2luc3RhbGwtZXhlYy1ob29rOiBsaWJndWlsZS0yLjAtZ2RiLnNjbQotIAlybSAtZiAkKERFU1RESVIpJChiaW5kaXIpL2d1aWxlLXNuYXJmLmF3awotLQotLWluc3RhbGwtZGF0YS1ob29rOiBsaWJndWlsZS0yLjAtZ2RiLnNjbQotIAlAJChNS0RJUl9QKSAkKERFU1RESVIpJChsaWJkaXIpCi0gIyMgV2Ugd2FudCB0byBpbnN0YWxsIGxpYmd1aWxlLTIuMC1nZGIuc2NtIGFzIFNPTUVUSElORy1nZGIuc2NtLgotICMjIFNPTUVUSElORyBpcyB0aGUgZnVsbCBuYW1lIG9mIHRoZSBmaW5hbCBsaWJyYXJ5LiAgV2Ugd2FudCB0byBpZ25vcmUKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2d1aWxlL2ZpbGVzL29wZW5zdXNlL2d1aWxlLTY0Yml0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ndWlsZS9maWxlcy9vcGVuc3VzZS9ndWlsZS02NGJpdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGE2OWI1Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2d1aWxlL2ZpbGVzL29wZW5zdXNlL2d1aWxlLTY0Yml0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvcGVuc3VzZSBwYXRjaF0KLQotU2lnbmVkLW9mZi1ieTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KLQotSW5kZXg6IGd1aWxlLTIuMC4zL2xpYmd1aWxlL2hhc2guYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGd1aWxlLTIuMC4zLm9yaWcvbGliZ3VpbGUvaGFzaC5jCTIwMTEtMDctMDYgMTU6NDk6NTkuMDAwMDAwMDAwIC0wNzAwCi0rKysgZ3VpbGUtMi4wLjMvbGliZ3VpbGUvaGFzaC5jCTIwMTItMDEtMTMgMjE6NDk6NDMuMzMyODQ0ODg0IC0wODAwCi1AQCAtMjcwLDcgKzI3MCw3IEBAIHNjbV9oYXNoZXIoU0NNIG9iaiwgdW5zaWduZWQgbG9uZyBuLCBzaXoKLSB1bnNpZ25lZCBsb25nCi0gc2NtX2loYXNocSAoU0NNIG9iaiwgdW5zaWduZWQgbG9uZyBuKQotIHsKLS0gIHJldHVybiAoU0NNX1VOUEFDSyAob2JqKSA+PiAxKSAlIG47Ci0rICByZXR1cm4gKCh1bnNpZ25lZCBsb25nKSBTQ01fVU5QQUNLIChvYmopID4+IDEpICUgbjsKLSB9Ci0gCi0gCi1AQCAtMzA2LDcgKzMwNiw3IEBAIHNjbV9paGFzaHYgKFNDTSBvYmosIHVuc2lnbmVkIGxvbmcgbikKLSAgIGlmIChTQ01fTlVNUChvYmopKQotICAgICByZXR1cm4gKHVuc2lnbmVkIGxvbmcpIHNjbV9oYXNoZXIob2JqLCBuLCAxMCk7Ci0gICBlbHNlCi0tICAgIHJldHVybiBTQ01fVU5QQUNLIChvYmopICUgbjsKLSsgICAgcmV0dXJuICh1bnNpZ25lZCBsb25nKSBTQ01fVU5QQUNLIChvYmopICUgbjsKLSB9Ci0gCi0gCi1JbmRleDogZ3VpbGUtMi4wLjMvbGliZ3VpbGUvc3RydWN0LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBndWlsZS0yLjAuMy5vcmlnL2xpYmd1aWxlL3N0cnVjdC5jCTIwMTEtMDctMDYgMTU6NTA6MDAuMDAwMDAwMDAwIC0wNzAwCi0rKysgZ3VpbGUtMi4wLjMvbGliZ3VpbGUvc3RydWN0LmMJMjAxMi0wMS0xMyAyMTo0OTo0My4zMzI4NDQ4ODQgLTA4MDAKLUBAIC05NDIsNyArOTQyLDcgQEAgc2NtX3N0cnVjdF9paGFzaHEgKFNDTSBvYmosIHVuc2lnbmVkIGxvbgotIHsKLSAgIC8qIFRoZSBsZW5ndGggb2YgdGhlIGhhc2ggdGFibGUgc2hvdWxkIGJlIGEgcmVsYXRpdmUgcHJpbWUgaXQncyBub3QKLSAgICAgIG5lY2Vzc2FyeSB0byBzaGlmdCBkb3duIHRoZSBhZGRyZXNzLiAgKi8KLS0gIHJldHVybiBTQ01fVU5QQUNLIChvYmopICUgbjsKLSsgIHJldHVybiAodW5zaWduZWQgbG9uZykgU0NNX1VOUEFDSyAob2JqKSAlIG47Ci0gfQotIAotIFNDTV9ERUZJTkUgKHNjbV9zdHJ1Y3RfdnRhYmxlX25hbWUsICJzdHJ1Y3QtdnRhYmxlLW5hbWUiLCAxLCAwLCAwLCAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ3VpbGUvZmlsZXMvd29ya2Fyb3VuZC1pY2Utc3NhLWNvcnJ1cHRpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2d1aWxlL2ZpbGVzL3dvcmthcm91bmQtaWNlLXNzYS1jb3JydXB0aW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YzM0ODM4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ3VpbGUvZmlsZXMvd29ya2Fyb3VuZC1pY2Utc3NhLWNvcnJ1cHRpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi1saWJndWlsZS92bS1pLXN5c3RlbS5jOiB3b3JrYXJvdW5kIGljZSBzc2EgY29ycnVwdGlvbiB3aGlsZSBjb21waWxpbmcgd2l0aCBvcHRpb24gLWcgLU8KLQotV2hpbGUgY29tcGlsaW5nIHdpdGggb3B0aW9uIC1nIC1PLCB0aGVyZSB3YXMgYSBzc2EgY29ycnVwdGlvbjoKLS4uCi1VbmFibGUgdG8gY29hbGVzY2Ugc3NhX25hbWVzIDQ4IGFuZCAzNDc2IHdoaWNoIGFyZSBtYXJrZWQgYXMgTVVTVCBDT0FMRVNDRS4KLXNwXzQ4KGFiKSBhbmQgIHNwXzM0NzYoYWIpCi1ndWlsZS0yLjAuMTEvbGliZ3VpbGUvdm0tZW5naW5lLmM6IEluIGZ1bmN0aW9uICd2bV9kZWJ1Z19lbmdpbmUnOgotZ3VpbGUtMi4wLjExL2xpYmd1aWxlL3ZtLmM6NjczOjE5OiBpbnRlcm5hbCBjb21waWxlciBlcnJvcjogU1NBIGNvcnJ1cHRpb24KLSAjZGVmaW5lIFZNX05BTUUgICB2bV9kZWJ1Z19lbmdpbmUKLSAgICAgICAgICAgICAgICAgICBeCi1ndWlsZS0yLjAuMTEvbGliZ3VpbGUvdm0tZW5naW5lLmM6Mzk6MTogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvICdWTV9OQU1FJwotIFZNX05BTUUgKFNDTSB2bSwgU0NNIHByb2dyYW0sIFNDTSAqYXJndiwgaW50IG5hcmdzKQotIF4KLVBsZWFzZSBzdWJtaXQgYSBmdWxsIGJ1ZyByZXBvcnQsCi13aXRoIHByZXByb2Nlc3NlZCBzb3VyY2UgaWYgYXBwcm9wcmlhdGUuCi1TZWUgPGh0dHA6Ly9nY2MuZ251Lm9yZy9idWdzLmh0bWw+IGZvciBpbnN0cnVjdGlvbnMuCi0uLi4KLQotVHdlYWsgbGliZ3VpbGUvdm0taS1zeXN0ZW0uYyB0byBhZGQgYm91bmRhcnkgdmFsdWUgY2hlY2sgdG8gd29ya2Fyb3VuZCBpdC4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIGxpYmd1aWxlL3ZtLWktc3lzdGVtLmMgfCAyMCArKysrKysrKysrKysrKysrLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliZ3VpbGUvdm0taS1zeXN0ZW0uYyBiL2xpYmd1aWxlL3ZtLWktc3lzdGVtLmMKLS0tLSBhL2xpYmd1aWxlL3ZtLWktc3lzdGVtLmMKLSsrKyBiL2xpYmd1aWxlL3ZtLWktc3lzdGVtLmMKLUBAIC02MjUsMTAgKzYyNSwyMiBAQCBWTV9ERUZJTkVfSU5TVFJVQ1RJT04gKDQ3LCBiaW5kX29wdGlvbmFsc19zaHVmZmxlLCAiYmluZC1vcHRpb25hbHMvc2h1ZmZsZSIsIDYsCi0gICAvKiBub3cgc2h1ZmZsZSB1cCwgZnJvbSB3YWxrIHRvIG50b3RhbCAqLwotICAgewotICAgICBzY21fdF9wdHJkaWZmIG5zaHVmID0gc3AgLSB3YWxrICsgMSwgaTsKLS0gICAgc3AgPSAoZnAgLSAxKSArIG50b3RhbCArIG5zaHVmOwotLSAgICBDSEVDS19PVkVSRkxPVyAoKTsKLS0gICAgZm9yIChpID0gMDsgaSA8IG5zaHVmOyBpKyspCi0tICAgICAgc3BbLWldID0gd2Fsa1tuc2h1Zi1pLTFdOwotKyAgICAvKiBjaGVjayB0aGUgdmFsdWUgb2YgbnNodWYgdG8gd29ya2Fyb3VuZCBpY2Ugc3NhIGNvcnJ1cHRpb24gKi8KLSsgICAgLyogd2hpbGUgY29tcGlsaW5nIHdpdGggLU8gLWcgKi8KLSsgICAgaWYgKG5zaHVmID4gMCkKLSsgICAgewotKyAgICAgIHNwID0gKGZwIC0gMSkgKyBudG90YWwgKyBuc2h1ZjsKLSsgICAgICBDSEVDS19PVkVSRkxPVyAoKTsKLSsgICAgICBmb3IgKGkgPSAwOyBpIDwgbnNodWY7IGkrKykKLSsgICAgICAgIHNwWy1pXSA9IHdhbGtbbnNodWYtaS0xXTsKLSsgICAgfQotKyAgICBlbHNlCi0rICAgIHsKLSsgICAgICBzcCA9IChmcCAtIDEpICsgbnRvdGFsICsgbnNodWY7Ci0rICAgICAgQ0hFQ0tfT1ZFUkZMT1cgKCk7Ci0rICAgICAgZm9yIChpID0gMDsgaSA8IG5zaHVmOyBpKyspCi0rICAgICAgICBzcFstaV0gPSB3YWxrW25zaHVmLWktMV07Ci0rICAgIH0KLSAgIH0KLSAgIC8qIGFuZCBmaWxsIG9wdGlvbmFscyAmIGtleXdvcmQgYXJncyB3aXRoIFNDTV9VTkRFRklORUQgKi8KLSAgIHdoaWxlICh3YWxrIDw9IChmcCAtIDEpICsgbnRvdGFsKQotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2d1aWxlL2d1aWxlXzIuMC4xNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ3VpbGUvZ3VpbGVfMi4wLjE0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YTAxZDBmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ3VpbGUvZ3VpbGVfMi4wLjE0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTI1ICswLDAgQEAKLVNVTU1BUlkgPSAiR3VpbGUgaXMgdGhlIEdOVSBVYmlxdWl0b3VzIEludGVsbGlnZW50IExhbmd1YWdlIGZvciBFeHRlbnNpb25zIgotREVTQ1JJUFRJT04gPSAiR3VpbGUgaXMgdGhlIEdOVSBVYmlxdWl0b3VzIEludGVsbGlnZW50IExhbmd1YWdlIGZvciBFeHRlbnNpb25zLFwKLSB0aGUgb2ZmaWNpYWwgZXh0ZW5zaW9uIGxhbmd1YWdlIGZvciB0aGUgR05VIG9wZXJhdGluZyBzeXN0ZW0uXAotIEd1aWxlIGlzIGEgbGlicmFyeSBkZXNpZ25lZCB0byBoZWxwIHByb2dyYW1tZXJzIGNyZWF0ZSBmbGV4aWJsZSBhcHBsaWNhdGlvbnMuXAotIFVzaW5nIEd1aWxlIGluIGFuIGFwcGxpY2F0aW9uIGFsbG93cyB0aGUgYXBwbGljYXRpb24ncyBmdW5jdGlvbmFsaXR5IHRvIGJlXAotIGV4dGVuZGVkIGJ5IHVzZXJzIG9yIG90aGVyIHByb2dyYW1tZXJzIHdpdGggcGx1Zy1pbnMsIG1vZHVsZXMsIG9yIHNjcmlwdHMuXAotIEd1aWxlIHByb3ZpZGVzIHdoYXQgbWlnaHQgYmUgZGVzY3JpYmVkIGFzICdwcmFjdGljYWwgc29mdHdhcmUgZnJlZWRvbSwnXAotIG1ha2luZyBpdCBwb3NzaWJsZSBmb3IgdXNlcnMgdG8gY3VzdG9taXplIGFuIGFwcGxpY2F0aW9uIHRvIG1lZXQgdGhlaXJcCi0gbmVlZHMgd2l0aG91dCBkaWdnaW5nIGludG8gdGhlIGFwcGxpY2F0aW9uJ3MgaW50ZXJuYWxzLiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2d1aWxlLyIKLVNFQ1RJT04gPSAiZGV2ZWwiCi1MSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi0KLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9ndWlsZS9ndWlsZS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuLzAwMDItTWFyay1VbnVzZWQtbW9kdWxlcy1hcmUtcmVtb3ZlZC1nYy10ZXN0LWFzLXVucmVzb2x2ZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vMDAwMy1NYXJrLW11dGV4LXdpdGgtb3duZXItbm90LXJldGFpbmVkLXRocmVhZHMtdGVzdC1hcy11LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL29wZW5zdXNlL2d1aWxlLTY0Yml0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2d1aWxlXzIuMC42X2ZpeF9zZWRfZXJyb3IucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYXJtX2VuZGlhbm5lc3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYXJtX2FhcmNoNjQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vd29ya2Fyb3VuZC1pY2Utc3NhLWNvcnJ1cHRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbGliZ3VpbGUtTWFrZWZpbGUuYW0taG9vay5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImM2NDk3N2M3NzVlZmZkMTkzOTMzNjRiMzAxOGZkOGNkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImU4NDQyNTY2MjU2ZTFiZTE0ZTUxZmMxODgzOWNkNzk5Yjk2NmJjNWIxNmM2YTFkN2E3YzM1MTU1YTg2MTlkODIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnIHRleGluZm8KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi0jIEZpeCAiQXJndW1lbnQgbGlzdCB0b28gbG9uZyIgZXJyb3Igd2hlbiBsZW4oVE1QRElSKSA9IDQxMAotYWNwYXRocyA9ICItSSAuL200IgotCi1ERVBFTkRTID0gImxpYnVuaXN0cmluZyBiZHdnYyBnbXAgbGlidG9vbCBsaWJmZmkgbmN1cnNlcyByZWFkbGluZSIKLSMgYWRkIGd1aWxlLW5hdGl2ZSBvbmx5IHRvIHRoZSB0YXJnZXQgcmVjaXBlJ3MgREVQRU5EUwotREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBndWlsZS1uYXRpdmUgbGliYXRvbWljLW9wcyIKLQotIyBUaGUgY29tbWVudCBvZiB0aGUgc2NyaXB0IGd1aWxlLWNvbmZpZyBzYWlkIGl0IGhhcyBiZWVuIGRlcHJlY2F0ZWQgYnV0IHdlIHNob3VsZAotIyBhdCBsZWFzdCBhZGQgdGhlIHJlcXVpcmVkIGRlcGVuZGVuY3kgdG8gbWFrZSBpdCB3b3JrIHNpbmNlIHdlIHN0aWxsIHByb3ZpZGUgdGhlIHNjcmlwdC4KLVJERVBFTkRTXyR7UE59ID0gInBrZ2NvbmZpZyIKLQotUkRFUEVORFNfJHtQTn1fYXBwZW5kX2xpYmMtZ2xpYmNfY2xhc3MtdGFyZ2V0ID0gIiBnbGliYy1nY29udi1pc284ODU5LTEiCi0KLUVYVFJBX09FQ09ORiArPSAiJHtAWyctLXdpdGhvdXQtbGlibHRkbC1wcmVmaXggLS13aXRob3V0LWxpYmdtcC1wcmVmaXggLS13aXRob3V0LWxpYnJlYWRsaW5lLXByZWZpeCcsICcnXVtiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCduYXRpdmUnLGQpXX0iCi0KLUVYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAtLXdpdGgtbGlidW5pc3RyaW5nLXByZWZpeD0ke1NUQUdJTkdfTElCRElSfSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS13aXRoLWxpYmdtcC1wcmVmaXg9JHtTVEFHSU5HX0xJQkRJUn0gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aC1saWJsdGRsLXByZWZpeD0ke1NUQUdJTkdfTElCRElSfSIKLUVYVFJBX09FQ09ORl9hcHBlbmRfbGliYy11Y2xpYmMgPSAiIGd1aWxlX2N2X3VzZV9jc3FydD1ubyAiCi0KLUNGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtREhBVkVfR0NfU0VUX0ZJTkFMSVpFUl9OT1RJRklFUiBcCi0JICAgICAgICAgICAgICAgICAgICAtREhBVkVfR0NfR0VUX0hFQVBfVVNBR0VfU0FGRSBcCi0JICAgICAgICAgICAgICAgICAgICAtREhBVkVfR0NfR0VUX0ZSRUVfU1BBQ0VfRElWSVNPUiBcCi0JICAgICAgICAgICAgICAgICAgICAtREhBVkVfR0NfU0VUX0ZJTkFMSVpFX09OX0RFTUFORCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotCW1rZGlyIC1wIHBvCi19Ci0KLWV4cG9ydCBHVUlMRV9GT1JfQlVJTEQ9IiR7QlVJTERfU1lTfS1ndWlsZSIKLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotCWluc3RhbGwgLW0gMDc1NSAgJHtEfSR7YmluZGlyfS9ndWlsZSAke0R9JHtiaW5kaXJ9LyR7SE9TVF9TWVN9LWd1aWxlCi0KLQljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9ndWlsZSBcCi0JCUdVSUxFX0xPQURfUEFUSD0ke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2d1aWxlLzIuMCBcCi0JCUdVSUxFX0xPQURfQ09NUElMRURfUEFUSD0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ3VpbGUvMi4wL2NjYWNoZQotCWNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vJHtIT1NUX1NZU30tZ3VpbGUgXAotCQlHVUlMRV9MT0FEX1BBVEg9JHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9ndWlsZS8yLjAgXAotCQlHVUlMRV9MT0FEX0NPTVBJTEVEX1BBVEg9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2d1aWxlLzIuMC9jY2FjaGUKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgewotCSMgY2xlYW51cCBidWlsZHBhdGhzIGluIHNjcmlwdHMKLQlzZWQgLWkgLWUgJ3M6JHtTVEFHSU5HX0RJUl9OQVRJVkV9OjonICR7RH0ke2JpbmRpcn0vZ3VpbGUtY29uZmlnCi0Jc2VkIC1pIC1lICdzOiR7U1RBR0lOR19ESVJfSE9TVH06OicgJHtEfSR7YmluZGlyfS9ndWlsZS1zbmFyZgotCi0Jc2VkIC1pIC1lICdzOiR7U1RBR0lOR19ESVJfVEFSR0VUfTo6ZycgJHtEfSR7bGliZGlyfS9wa2djb25maWcvZ3VpbGUtMi4wLnBjCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2xpYmMtbXVzbCgpIHsKLQlybSAtZiAke0R9JHtsaWJkaXJ9L2NoYXJzZXQuYWxpYXMKLX0KLQotU1lTUk9PVF9QUkVQUk9DRVNTX0ZVTkNTID0gImd1aWxlX2Nyb3NzX2NvbmZpZyIKLQotZ3VpbGVfY3Jvc3NfY29uZmlnKCkgewotCSMgdGhpcyBpcyBvbmx5IGZvciB0YXJnZXQgcmVjaXBlCi0JaWYgWyAiJHtQTn0iID0gImd1aWxlIiBdCi0JdGhlbgotCSAgICAgICAgIyBDcmVhdGUgZ3VpbGUtY29uZmlnIHJldHVybmluZyB0YXJnZXQgdmFsdWVzIGluc3RlYWQgb2YgbmF0aXZlIHZhbHVlcwotCSAgICAgICAgaW5zdGFsbCAtZCAke1NZU1JPT1RfREVTVERJUn0ke1NUQUdJTkdfQklORElSX0NST1NTfQotICAgICAgICAJcHJpbnRmICcjISVzIFxcXG4tLW5vLWF1dG8tY29tcGlsZSAtZSBtYWluIC1zXG4hI1xuKGRlZmluZSAlJWd1aWxlLWJ1aWxkLWluZm8gJXMoXG4nICQod2hpY2ggJHtCVUlMRF9TWVN9LWd1aWxlKSAiJyIgXAotCQkJPiAke0J9L2d1aWxlLWNvbmZpZy5jcm9zcwotCSAgICAgICAgc2VkIC1uIC1lICdzOl5bIFx0XSp7WyBcdF0qIjogICg6JyBcCi0JCQktZSAnczoiLFsgXHRdKiI6IC4gIjonIFwKLQkJCS1lICdzOiIgKn0sICpcXDoiKTonIFwKLQkJCS1lICdzOl4uKmNhY2hlZGlyLiokOjonIFwKLQkJCS1lICcvXiAgKC9wJyBcCi0JCQk8ICR7Qn0vbGliZ3VpbGUvbGlicGF0aC5oID4+ICR7Qn0vZ3VpbGUtY29uZmlnLmNyb3NzCi0JICAgICAgICBlY2hvICcpKScgPj4gJHtCfS9ndWlsZS1jb25maWcuY3Jvc3MKLQkgICAgICAgIGNhdCAke0J9L21ldGEvZ3VpbGUtY29uZmlnID4+ICR7Qn0vZ3VpbGUtY29uZmlnLmNyb3NzCi0JICAgICAgICBpbnN0YWxsICR7Qn0vZ3VpbGUtY29uZmlnLmNyb3NzICR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L2d1aWxlLWNvbmZpZwotCWZpCi19Ci0KLSMgR3VpbGUgbmVlZHMgdGhlIGNvbXBpbGVkIGZpbGVzIHRvIGJlIG5ld2VyIHRoYW4gdGhlIHNvdXJjZSwgYW5kIGl0IHdvbid0Ci0jIGF1dG8tY29tcGlsZSBpbnRvIHRoZSBwcmVmaXggZXZlbiBpZiBpdCBjYW4gd3JpdGUgdGhlcmUsIHNvIHRvdWNoIHRoZW0gaGVyZSBhcwotIyBzeXNyb290IGlzIG1hbmFnZWQuCi1TU1RBVEVQT1NUSU5TVEZVTkNTICs9ICJndWlsZV9zc3RhdGVfcG9zdGluc3QiCi1HVUlMRVNTVEFURURJUiA9ICIke0NPTVBPTkVOVFNfRElSfS8ke1RVTkVfUEtHQVJDSH0vJHtQTn0vJHtsaWJkaXJ9L2d1aWxlLzIuMC9jY2FjaGUiCi1HVUlMRVNTVEFURURJUl9jbGFzcy1uYXRpdmUgPSAiJHtDT01QT05FTlRTX0RJUn0vJHtCVUlMRF9BUkNIfS8ke1BOfS8ke2xpYmRpcl9uYXRpdmV9L2d1aWxlLzIuMC9jY2FjaGUiCi1ndWlsZV9zc3RhdGVfcG9zdGluc3QoKSB7Ci0JaWYgWyAiJHtCQl9DVVJSRU5UVEFTS30iID0gInBvcHVsYXRlX3N5c3Jvb3QiIC1vICIke0JCX0NVUlJFTlRUQVNLfSIgPSAicG9wdWxhdGVfc3lzcm9vdF9zZXRzY2VuZSIgXQotCXRoZW4KLSAgICAgICAgICAgICAgICBmaW5kICR7R1VJTEVTU1RBVEVESVJ9IC10eXBlIGYgfCB4YXJncyB0b3VjaAotCWZpCi19Ci0KLSMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzIwNDkxLwotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaTJjLXRvb2xzL2kyYy10b29sc18zLjEuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaTJjLXRvb2xzL2kyYy10b29sc18zLjEuMi5iYgppbmRleCA0ZDI1NTQyLi5jMDE3MjUyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2kyYy10b29scy9pMmMtdG9vbHNfMy4xLjIuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pMmMtdG9vbHMvaTJjLXRvb2xzXzMuMS4yLmJiCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJTZXQgb2YgaTJjIHRvb2xzIGZvciBsaW51eCIKK0hPTUVQQUdFID0gImh0dHBzOi8vaTJjLndpa2kua2VybmVsLm9yZy9pbmRleC5waHAvSTJDX1Rvb2xzIgogU0VDVElPTiA9ICJiYXNlIgogTElDRU5TRSA9ICJHUEx2MisiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaW50bHRvb2wvaW50bHRvb2xfMC41MS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pbnRsdG9vbC9pbnRsdG9vbF8wLjUxLjAuYmIKaW5kZXggNTUxYmRmMC4uZWNmZjJmYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pbnRsdG9vbC9pbnRsdG9vbF8wLjUxLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9pbnRsdG9vbC9pbnRsdG9vbF8wLjUxLjAuYmIKQEAgLTE2LDcgKzE2LDcgQEAKIAogREVQRU5EUyA9ICJsaWJ4bWwtcGFyc2VyLXBlcmwtbmF0aXZlIgogUkRFUEVORFNfJHtQTn0gPSAiZ2V0dGV4dC1kZXYgbGlieG1sLXBhcnNlci1wZXJsIgotREVQRU5EU19jbGFzcy1uYXRpdmUgPSAibGlieG1sLXBhcnNlci1wZXJsLW5hdGl2ZSIKK0RFUEVORFNfY2xhc3MtbmF0aXZlID0gImxpYnhtbC1wYXJzZXItcGVybC1uYXRpdmUgZ2V0dGV4dC1uYXRpdmUiCiAKIGluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBwZXJsbmF0aXZlCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvanNvbi1jL2pzb24tYy8wMDAxLUFkZC1GQUxMVEhSVS1jb21tZW50LXRvLWhhbmRsZS1HQ0M3LXdhcm5pbmdzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9qc29uLWMvanNvbi1jLzAwMDEtQWRkLUZBTExUSFJVLWNvbW1lbnQtdG8taGFuZGxlLUdDQzctd2FybmluZ3MucGF0Y2gKaW5kZXggZGYzYjYwMC4uNTM3YmU1ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9qc29uLWMvanNvbi1jLzAwMDEtQWRkLUZBTExUSFJVLWNvbW1lbnQtdG8taGFuZGxlLUdDQzctd2FybmluZ3MucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9qc29uLWMvanNvbi1jLzAwMDEtQWRkLUZBTExUSFJVLWNvbW1lbnQtdG8taGFuZGxlLUdDQzctd2FybmluZ3MucGF0Y2gKQEAgLTEsMTQgKzEsMTEgQEAKLUZyb20gOTUyMmFjOGU1ZDViMjBhNDcyZjNmZmMzNTZkMzg4ZDM2ZjdmNTgyYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gN2IyNGY4YmQ5NWFkNGY3ZDAwYzkzY2EyYWQ5OThjMTRhMDI2NmRiZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IG1hcnhpbiA8bWxpc2thQHN1c2UuY3o+CiBEYXRlOiBUdWUsIDIxIE1hciAyMDE3IDA4OjQyOjExICswMTAwCiBTdWJqZWN0OiBbUEFUQ0hdIEFkZCBGQUxMVEhSVSBjb21tZW50IHRvIGhhbmRsZSBHQ0M3IHdhcm5pbmdzLgotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAogCiAtLS0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9qc29uLWMvanNvbi1jL2NvbW1pdC8wMTQ5MjRiYTg5OWY2NTk5MTdiYjY0MzkyYmJmZjdkM2M4MDNhZmMyXQotU2lnbmVkLW9mZi1ieTogQW5kcsOpIERyYXN6aWsgPGFkcmFzemlrQHR5Y29pbnQuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIAogIGpzb25fb2JqZWN0LmMgIHwgIDEgKwogIGpzb25fdG9rZW5lci5jIHwgIDEgKwpAQCAtMjgsMTAgKzI1LDEwIEBACiAgICAgIHJldHVybiAwOwogICAgfQogZGlmZiAtLWdpdCBhL2pzb25fdG9rZW5lci5jIGIvanNvbl90b2tlbmVyLmMKLWluZGV4IDdmYTMyYWUuLmIzMmQ2NTcgMTAwNjQ0CitpbmRleCA5YTc2MjkzLi5hZTdiMWFlIDEwMDY0NAogLS0tIGEvanNvbl90b2tlbmVyLmMKICsrKyBiL2pzb25fdG9rZW5lci5jCi1AQCAtMzA2LDYgKzMwNiw3IEBAIHN0cnVjdCBqc29uX29iamVjdCoganNvbl90b2tlbmVyX3BhcnNlX2V4KHN0cnVjdCBqc29uX3Rva2VuZXIgKnRvaywKK0BAIC0zMDUsNiArMzA1LDcgQEAgc3RydWN0IGpzb25fb2JqZWN0KiBqc29uX3Rva2VuZXJfcGFyc2VfZXgoc3RydWN0IGpzb25fdG9rZW5lciAqdG9rLAogICAgICAgICAgICAgIHRvay0+ZXJyID0ganNvbl90b2tlbmVyX2Vycm9yX3BhcnNlX3VuZXhwZWN0ZWQ7CiAgICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgICAgICB9CkBAIC03Myw1ICs3MCw1IEBACiAgICAgICAgICAgICAgIGJyZWFrOwogICAgICBjYXNlIDAgOiByZXR1cm4gYzsKIC0tIAotMi4xNC4xCisyLjEyLjIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9qc29uLWMvanNvbi1jLzAwMDEtTGluay1hZ2FpbnN0LWxpYm0td2hlbi1uZWVkZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2pzb24tYy9qc29uLWMvMDAwMS1MaW5rLWFnYWluc3QtbGlibS13aGVuLW5lZWRlZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmZlOWQ3Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2pzb24tYy9qc29uLWMvMDAwMS1MaW5rLWFnYWluc3QtbGlibS13aGVuLW5lZWRlZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLUZyb20gOTM1ODJhZDg1ZWY0OGMxOGFjMTJmMDBhOWE5ZTEyNDk4OWIxZmNhYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFRob21hcyBQZXRhenpvbmkgPHRob21hcy5wZXRhenpvbmlAZnJlZS1lbGVjdHJvbnMuY29tPgotRGF0ZTogRnJpLCAxIE1heSAyMDE1IDEyOjUyOjE4ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIExpbmsgYWdhaW5zdCBsaWJtIHdoZW4gbmVlZGVkCi0KLUluIGNlcnRhaW4gQyBsaWJyYXJpZXMgKGUuZyB1Q2xpYmMpLCBpc25hbigpIGFuZCByZWxhdGVkIGZ1bmN0aW9ucyBhcmUKLWltcGxlbWVudGVkIGluIGxpYm0sIHNvIGpzb24tYyBuZWVkcyB0byBsaW5rIGFnYWluc3QgaXQuIFRoaXMgY29tbWl0Ci10aGVyZWZvcmUgYWRkcyBhbiBBQ19UUllfTElOSygpIHRlc3QgdG8gY2hlY2sgd2hldGhlciBhIHByb2dyYW0KLWNhbGxpbmcgaXNuYW4oKSBjYW4gYmUgcHJvcGVybHkgbGlua2VkIHdpdGggbm8gc3BlY2lhbCBmbGFncy4gSWYgbm90LAotd2UgYXNzdW1lIGxpbmtpbmcgYWdhaW5zdCBsaWJtIGlzIG5lZWRlZC4KLQotVGhlIGpzb24tYy5wYy5pbiBmaWxlIGlzIGFsc28gYWRqdXN0ZWQgc28gdGhhdCBpbiB0aGUgY2FzZSBvZiBzdGF0aWMKLWxpbmtpbmcgYWdhaW5zdCBqc29uLWMsIC1sbSBpcyBhbHNvIHVzZWQuCi0KLVNpZ25lZC1vZmYtYnk6IFRob21hcyBQZXRhenpvbmkgPHRob21hcy5wZXRhenpvbmlAZnJlZS1lbGVjdHJvbnMuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLSBjb25maWd1cmUuYWMgfCA0ICsrKysKLSBqc29uLWMucGMuaW4gfCAzICsrLQotIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGM1MGY4MWIuLjMwZTcxNzQgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTUwLDYgKzUwLDEwIEBAIEFDX0NIRUNLX0RFQ0xTKFtpc2luZl0sIFtdLCBbXSwgW1sjaW5jbHVkZSA8bWF0aC5oPl1dKQotIEFDX0NIRUNLX0RFQ0xTKFtfaXNuYW5dLCBbXSwgW10sIFtbI2luY2x1ZGUgPGZsb2F0Lmg+XV0pCi0gQUNfQ0hFQ0tfREVDTFMoW19maW5pdGVdLCBbXSwgW10sIFtbI2luY2x1ZGUgPGZsb2F0Lmg+XV0pCi0gCi0raWYgdGVzdCAiJGFjX2N2X2hhdmVfZGVjbF9pc25hbiIgPSAieWVzIiA7IHRoZW4KLSsgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPG1hdGguaD5dLCBbZmxvYXQgZiA9IDAuMDsgcmV0dXJuIGlzbmFuKGYpXSwgW10sIFtMSUJTPSIkTElCUyAtbG0iXSkKLStmaQotKwotICNjaGVjayBpZiAuc2VjdGlvbi5nbnUud2FybmluZyBhY2NlcHRzIGxvbmcgc3RyaW5ncyAoZm9yIF9fd2Fybl9yZWZlcmVuY2VzKQotIEFDX0xBTkdfUFVTSChbQ10pCi0gCi1kaWZmIC0tZ2l0IGEvanNvbi1jLnBjLmluIGIvanNvbi1jLnBjLmluCi1pbmRleCAwMzc3MzlkLi4wNWJmYmM4IDEwMDY0NAotLS0tIGEvanNvbi1jLnBjLmluCi0rKysgYi9qc29uLWMucGMuaW4KLUBAIC02LDYgKzYsNyBAQCBpbmNsdWRlZGlyPUBpbmNsdWRlZGlyQAotIE5hbWU6IGpzb24tYwotIERlc2NyaXB0aW9uOiBKU09OIGltcGxlbWVudGF0aW9uIGluIEMKLSBWZXJzaW9uOiBAVkVSU0lPTkAKLS1SZXF1aXJlczogCi0rUmVxdWlyZXM6Ci0rTGlicy5wcml2YXRlOiBATElCU0AKLSBMaWJzOiAgLUwke2xpYmRpcn0gLWxqc29uLWMKLSBDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfS9qc29uLWMKLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9qc29uLWMvanNvbi1jLzAwMDEtanNvbl90b2tlbmVyLXJlcXVpcmVzLUlORi1hbmQtTkFOLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9qc29uLWMvanNvbi1jLzAwMDEtanNvbl90b2tlbmVyLXJlcXVpcmVzLUlORi1hbmQtTkFOLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMjlkOTExLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvanNvbi1jL2pzb24tYy8wMDAxLWpzb25fdG9rZW5lci1yZXF1aXJlcy1JTkYtYW5kLU5BTi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLUZyb20gOWJlNzE3MDBlYjU4MGM4MTU2ODg1ODRhNjQ2MjFhMzg4NjdjM2ZkZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEphbWVzIE15YXR0IDxqYW1lcy5teWF0dEB0ZXNzZWxsYS5jb20+Ci1EYXRlOiBUaHUsIDUgRmViIDIwMTUgMTU6NTc6MTQgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0ganNvbl90b2tlbmVyIHJlcXVpcmVzIElORiBhbmQgTkFOCi0KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi0ganNvbl90b2tlbmVyLmMgfCAzICsrLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotSW5kZXg6IGpzb24tYy0wLjEyL2pzb25fdG9rZW5lci5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0ganNvbi1jLTAuMTIub3JpZy9qc29uX3Rva2VuZXIuYwotKysrIGpzb24tYy0wLjEyL2pzb25fdG9rZW5lci5jCi1AQCAtMTYsNiArMTYsNyBAQAotICNpbmNsdWRlICJjb25maWcuaCIKLSAKLSAjaW5jbHVkZSA8bWF0aC5oPgotKyNpbmNsdWRlICJtYXRoX2NvbXBhdC5oIgotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3RkZGVmLmg+Ci1AQCAtMzUyLDEyICszNTMsMTAgQEAgc3RydWN0IGpzb25fb2JqZWN0KiBqc29uX3Rva2VuZXJfcGFyc2VfZQotIAotICAgICBjYXNlIGpzb25fdG9rZW5lcl9zdGF0ZV9pbmY6IC8qIGFrYSBzdGFydHMgd2l0aCAnaScgKi8KLSAgICAgICB7Ci0tCWludCBzaXplOwotLQlpbnQgc2l6ZV9pbmY7Ci0rCXNpemVfdCBzaXplX2luZjsKLSAJaW50IGlzX25lZ2F0aXZlID0gMDsKLSAKLSAJcHJpbnRidWZfbWVtYXBwZW5kX2Zhc3QodG9rLT5wYiwgJmMsIDEpOwotLQlzaXplID0ganNvbl9taW4odG9rLT5zdF9wb3MrMSwganNvbl9udWxsX3N0cl9sZW4pOwotIAlzaXplX2luZiA9IGpzb25fbWluKHRvay0+c3RfcG9zKzEsIGpzb25faW5mX3N0cl9sZW4pOwotIAljaGFyICppbmZidWYgPSB0b2stPnBiLT5idWY7Ci0gCWlmICgqaW5mYnVmID09ICctJykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvanNvbi1jL2pzb24tY18wLjEyLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2pzb24tYy9qc29uLWNfMC4xMi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwMWNmMTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2pzb24tYy9qc29uLWNfMC4xMi4xLmJiCkBAIC0wLDAgKzEsMzIgQEAKK1NVTU1BUlkgPSAiQyBiaW5kaW5ncyBmb3IgYXBwcyB3aGljaCB3aWxsIG1hbmlwdWxhdGUgSlNPTiBkYXRhIgorREVTQ1JJUFRJT04gPSAiSlNPTi1DIGltcGxlbWVudHMgYSByZWZlcmVuY2UgY291bnRpbmcgb2JqZWN0IG1vZGVsIHRoYXQgYWxsb3dzIHlvdSB0byBlYXNpbHkgY29uc3RydWN0IEpTT04gb2JqZWN0cyBpbiBDLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9qc29uLWMvanNvbi1jL3dpa2kiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWRlNTRiNjBmYmJjMzUxMjNiYTE5M2ZlYThlZTIxNmYyIgorCitTUkNfVVJJID0gImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS9qc29uLWNfcmVsZWFzZXMvcmVsZWFzZXMvJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLUZBTExUSFJVLWNvbW1lbnQtdG8taGFuZGxlLUdDQzctd2FybmluZ3MucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiNTVmNzg1M2Y3ZDhjZjY2NDU1NGNlM2ZhNzFiZjFjN2QiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmExMzY0NTFhNzkzMmQ4MGI3ZDE5N2IxMDQ0MWUyNmUzOTQyOGQ2N2IxNDQzZWM0M2JiYmE4MjQ3MDVlMTEyMyIKKworVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAianNvbi1jLSg/UDxwdmVyPlxkKyhcLlxkKykrKS50YXIiCisjIGpzb24tYyByZWxlYXNlcyBwYWdlIGlzIGZldGNoaW5nIHRoZSBsaXN0IG9mIHJlbGVhc2VzIGluIHNvbWUgd2VpcmQgWE1MIGZvcm1hdAorIyBmcm9tIGh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS9qc29uLWNfcmVsZWFzZXMgYW5kIHByb2Nlc3NlcyBpdCB3aXRoIGphdmFzY3JpcHQgOi0vCisjVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS9qc29uLWNfcmVsZWFzZXMvcmVsZWFzZXMvaW5kZXguaHRtbCIKK1JFQ0lQRV9VUFNUUkVBTV9WRVJTSU9OID0gIjAuMTIuMSIKK1JFQ0lQRV9VUFNUUkVBTV9EQVRFID0gIkp1biAwNywgMjAxNiIKK0NIRUNLX0RBVEUgPSAiQXByIDE5LCAyMDE3IgorCitSUFJPVklERVNfJHtQTn0gPSAibGlianNvbiIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXJkcmFuZCIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgIyBDbGVhbiB1cCBhdXRvY29uZiBjcnVmdCB0aGF0IHNob3VsZCBub3QgYmUgaW4gdGhlIHRhcmJhbGwKKyAgICBybSAtZiAke1N9L2NvbmZpZy5zdGF0dXMKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9qc29uLWMvanNvbi1jXzAuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2pzb24tYy9qc29uLWNfMC4xMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDcyYzA5Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2pzb24tYy9qc29uLWNfMC4xMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLVNVTU1BUlkgPSAiQyBiaW5kaW5ncyBmb3IgYXBwcyB3aGljaCB3aWxsIG1hbmlwdWxhdGUgSlNPTiBkYXRhIgotREVTQ1JJUFRJT04gPSAiSlNPTi1DIGltcGxlbWVudHMgYSByZWZlcmVuY2UgY291bnRpbmcgb2JqZWN0IG1vZGVsIHRoYXQgYWxsb3dzIHlvdSB0byBlYXNpbHkgY29uc3RydWN0IEpTT04gb2JqZWN0cyBpbiBDLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9qc29uLWMvanNvbi1jL3dpa2kiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWRlNTRiNjBmYmJjMzUxMjNiYTE5M2ZlYThlZTIxNmYyIgotCi1TUkNfVVJJID0gImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS9qc29uLWNfcmVsZWFzZXMvcmVsZWFzZXMvJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtanNvbl90b2tlbmVyLXJlcXVpcmVzLUlORi1hbmQtTkFOLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtTGluay1hZ2FpbnN0LWxpYm0td2hlbi1uZWVkZWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtRkFMTFRIUlUtY29tbWVudC10by1oYW5kbGUtR0NDNy13YXJuaW5ncy5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiM2NhNGJiYjg4MWRmYzQwMTdlODAyMWI1ZTBhOGM0OTEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDAwYzAxYjJiM2Y4MmRjYjQyNjE3NTFlYjcxZjFiMDg0NDA0ZmI3ZDZhMjgyZjA2MDc0ZDNjMTcwNzhiOWYzZiIKLQotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAianNvbi1jLSg/UDxwdmVyPlxkKyhcLlxkKykrKS50YXIiCi0jIGpzb24tYyByZWxlYXNlcyBwYWdlIGlzIGZldGNoaW5nIHRoZSBsaXN0IG9mIHJlbGVhc2VzIGluIHNvbWUgd2VpcmQgWE1MIGZvcm1hdAotIyBmcm9tIGh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS9qc29uLWNfcmVsZWFzZXMgYW5kIHByb2Nlc3NlcyBpdCB3aXRoIGphdmFzY3JpcHQgOi0vCi0jVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vczMuYW1hem9uYXdzLmNvbS9qc29uLWNfcmVsZWFzZXMvcmVsZWFzZXMvaW5kZXguaHRtbCIKLVJFQ0lQRV9VUFNUUkVBTV9WRVJTSU9OID0gIjAuMTIiCi1SRUNJUEVfVVBTVFJFQU1fREFURSA9ICJBcHIgMTEsIDIwMTQiCi1DSEVDS19EQVRFID0gIkRlYyAwNCwgMjAxNSIKLQotUlBST1ZJREVTXyR7UE59ID0gImxpYmpzb24iCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgICMgQ2xlYW4gdXAgYXV0b2NvbmYgY3J1ZnQgdGhhdCBzaG91bGQgbm90IGJlIGluIHRoZSB0YXJiYWxsCi0gICAgcm0gLWYgJHtTfS9jb25maWcuc3RhdHVzCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMva2NvbmZpZy1mcm9udGVuZHMva2NvbmZpZy1mcm9udGVuZHNfMy4xMi4wLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2tjb25maWctZnJvbnRlbmRzL2tjb25maWctZnJvbnRlbmRzXzMuMTIuMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0Y2EwZTRkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMva2NvbmZpZy1mcm9udGVuZHMva2NvbmZpZy1mcm9udGVuZHNfMy4xMi4wLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxMiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCBmb3IgdGhlIHRlcm1zKQotCi1TVU1NQVJZID0gIkxpbnV4IGtlcm5lbCBzdHlsZSBjb25maWd1cmF0aW9uIGZyYW1ld29yayBmb3Igb3RoZXIgcHJvamVjdHMiCi1ERVNDUklQVElPTiA9ICJUaGUga2NvbmZpZy1mcm9udGVuZHMgcHJvamVjdCBhaW1zIGF0IGNlbnRyYWxpc2luZyBcCi10aGUgZWZmb3J0IG9mIGtlZXBpbmcgYW4gdXAtdG8tZGF0ZSwgb3V0LW9mLXRyZWUsIHBhY2thZ2luZyBvZiB0aGUgXAota2NvbmZpZyBpbmZyYXN0cnVjdHVyZSwgcmVhZHkgZm9yIHVzZSBieSB0aGlyZC1wYXJ0eSBwcm9qZWN0cy4gXAotVGhlIGtjb25maWctZnJvbnRlbmRzIHBhY2thZ2UgcHJvdmlkZXMgdGhlIGtjb25maWcgcGFyc2VyLCBhcyB3ZWxsIGFzIGFsbCBcCi10aGUgZnJvbnRlbmRzIgotSE9NRVBBR0UgPSAiaHR0cDovL3ltb3Jpbi5pcy1hLWdlZWsub3JnL3Byb2plY3RzL2tjb25maWctZnJvbnRlbmRzIgotTElDRU5TRSA9ICJHUEwtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OWI4Y2Y2MGZmMzk3NjdmZjA0YjY3MWZjYTgzMDI0MDgiCi1TRUNUSU9OID0gImRldmVsIgotREVQRU5EUyArPSAibmN1cnNlcyBmbGV4IGJpc29uIGdwZXJmLW5hdGl2ZSIKLVJERVBFTkRTXyR7UE59ICs9ICJweXRob24gYmFzaCIKLVNSQ19VUkkgPSAiZ2l0Oi8veW1vcmluLmlzLWEtZ2Vlay5vcmcva2NvbmZpZy1mcm9udGVuZHMiCi0KLVNSQ1JFViA9ICI3NWQzNWIxNzJmYzBmN2I2NjIwZGQ2NTlhZjQxZjJjZTA0ZWRjNGU2IgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLQlta2RpciAtcCAke1N9L3NjcmlwdHMvLmF1dG9zdHVmZi9tNAotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlsbiAtcyBrY29uZmlnLWNvbmYgJHtEfSR7YmluZGlyfS9jb25mCi0JbG4gLXMga2NvbmZpZy1tY29uZiAke0R9JHtiaW5kaXJ9L21jb25mCi19Ci0KLUVYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLWdjb25mIC0tZGlzYWJsZS1xY29uZiIKLQotIyBTb21lIHBhY2thZ2VzIGhhdmUgdGhlIHZlcnNpb24gcHJlY2VlZGluZyB0aGUgLnNvIGluc3RlYWQgcHJvcGVybHkKLSMgdmVyc2lvbmVkIC5zby48dmVyc2lvbj4sIHNvIHdlIG5lZWQgdG8gcmVvcmRlciBhbmQgcmVwYWNrYWdlLgotU09MSUJTID0gIi0ke0BkLmdldFZhcignUFYnKVs6LTJdfS5zbyIKLUZJTEVTX1NPTElCU0RFViA9ICIke2xpYmRpcn0vbGlia2NvbmZpZy1wYXJzZXIuc28iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJjb21wcy9saWJjb21wcy8wMDAyLVNldC1saWJyYXJ5LWluc3RhbGxhdGlvbi1wYXRoLWNvcnJlY3RseS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliY29tcHMvbGliY29tcHMvMDAwMi1TZXQtbGlicmFyeS1pbnN0YWxsYXRpb24tcGF0aC1jb3JyZWN0bHkucGF0Y2gKaW5kZXggZWMxZmRjNC4uZGMzZDk3NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJjb21wcy9saWJjb21wcy8wMDAyLVNldC1saWJyYXJ5LWluc3RhbGxhdGlvbi1wYXRoLWNvcnJlY3RseS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmNvbXBzL2xpYmNvbXBzLzAwMDItU2V0LWxpYnJhcnktaW5zdGFsbGF0aW9uLXBhdGgtY29ycmVjdGx5LnBhdGNoCkBAIC0zLDcgKzMsNyBAQAogRGF0ZTogRnJpLCAzMCBEZWMgMjAxNiAxODoyNjowMCArMDIwMAogU3ViamVjdDogW1BBVENIIDIvMl0gU2V0IGxpYnJhcnkgaW5zdGFsbGF0aW9uIHBhdGggY29ycmVjdGx5CiAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9saWJjb21wcy9wdWxsLzMyXQogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiAtLS0KICBsaWJjb21wcy9zcmMvQ01ha2VMaXN0cy50eHQgfCAyICstCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmYvMDAwMS1GaW5kR3RrRG9jLmNtYWtlLWRyb3AtdGhlLXJlcXVpcmVtZW50LWZvci1HVEtET0NfU0NBLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJkbmYvbGliZG5mLzAwMDEtRmluZEd0a0RvYy5jbWFrZS1kcm9wLXRoZS1yZXF1aXJlbWVudC1mb3ItR1RLRE9DX1NDQS5wYXRjaAppbmRleCA3M2FjZGE2Li43OTFhMzJlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmYvMDAwMS1GaW5kR3RrRG9jLmNtYWtlLWRyb3AtdGhlLXJlcXVpcmVtZW50LWZvci1HVEtET0NfU0NBLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZi8wMDAxLUZpbmRHdGtEb2MuY21ha2UtZHJvcC10aGUtcmVxdWlyZW1lbnQtZm9yLUdUS0RPQ19TQ0EucGF0Y2gKQEAgLTcsNyArNyw3IEBACiBGb3Igc29tZSByZWFzb24gY21ha2UgaXMgbm90IGFibGUgdG8gZmluZCBpdCB3aGVuIGJ1aWxkaW5nIGluIG9wZW5lbWJlZGRlZCwKIGFuZCBpdCdzIGJ1bmRsZWQgd2l0aCB0aGUgc291cmNlIGNvZGUgYW55d2F5LgogCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvbGliZG5mL3B1bGwvMzEyXQogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiAtLS0KICBjbWFrZS9tb2R1bGVzL0ZpbmRHdGtEb2MuY21ha2UgfCAyICstCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmYvMDAwMS1HZXQtcGFyYW1ldGVycy1mb3ItYm90aC1saWJzb2x2LWFuZC1saWJzb2x2ZXh0LWxpYmRuLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJkbmYvbGliZG5mLzAwMDEtR2V0LXBhcmFtZXRlcnMtZm9yLWJvdGgtbGlic29sdi1hbmQtbGlic29sdmV4dC1saWJkbi5wYXRjaAppbmRleCA5NTRhZGQ2Li4yODBlZGI3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmYvMDAwMS1HZXQtcGFyYW1ldGVycy1mb3ItYm90aC1saWJzb2x2LWFuZC1saWJzb2x2ZXh0LWxpYmRuLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZi8wMDAxLUdldC1wYXJhbWV0ZXJzLWZvci1ib3RoLWxpYnNvbHYtYW5kLWxpYnNvbHZleHQtbGliZG4ucGF0Y2gKQEAgLTEsMjggKzEsMjkgQEAKLUZyb20gNTk1OGIxNTFhNGRiYjg5MTE0ZTkwYzk3MWEzNGI3NGY4NzNiN2JlYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMzAxMmE5Mzc0NTIyMzc1MWNjOTc5ZTM3NzAyMDdhMDlhMDc1YmVjNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogRGF0ZTogVHVlLCA3IEZlYiAyMDE3IDEyOjE2OjAzICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIEdldCBwYXJhbWV0ZXJzIGZvciBib3RoIGxpYnNvbHYgYW5kIGxpYnNvbHZleHQgKGxpYmRuZiBpcworU3ViamVjdDogW1BBVENIIDUvNV0gR2V0IHBhcmFtZXRlcnMgZm9yIGJvdGggbGlic29sdiBhbmQgbGlic29sdmV4dCAobGliZG5mIGlzCiAgdXNpbmcgYm90aCkKIAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtkZXBlbmRzIG9uIHdoZXRoZXIgaHR0cHM6Ly9naXRodWIuY29tL29wZW5TVVNFL2xpYnNvbHYvcHVsbC8xNzcgaXMgYWNjZXB0ZWRdCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L2xpYmRuZi9wdWxsLzMxMl0KIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorCiAtLS0KICBDTWFrZUxpc3RzLnR4dCB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKLWluZGV4IGI1MzFkYTEuLmU1MTJkYTAgMTAwNjQ0CitpbmRleCA4YjJhYjlhLi5lMmQzM2Q3IDEwMDY0NAogLS0tIGEvQ01ha2VMaXN0cy50eHQKICsrKyBiL0NNYWtlTGlzdHMudHh0Ci1AQCAtMjgsNyArMjgsNyBAQCBmaW5kX3BhY2thZ2UgKFBrZ0NvbmZpZyBSRVFVSVJFRCkKK0BAIC0yOSw3ICsyOSw3IEBAIGZpbmRfcGFja2FnZSAoUGtnQ29uZmlnIFJFUVVJUkVEKQogIFNFVCAoQ01BS0VfTU9EVUxFX1BBVEggJHtDTUFLRV9TT1VSQ0VfRElSfS9jbWFrZS9tb2R1bGVzKQogIFBLR19DSEVDS19NT0RVTEVTKEdMSUIgZ2lvLXVuaXgtMi4wPj0yLjQ0LjAgUkVRVUlSRUQpCiAgRklORF9MSUJSQVJZIChSUE1EQl9MSUJSQVJZIE5BTUVTIHJwbWRiKQogLVBLR19DSEVDS19NT0RVTEVTIChMSUJTT0xWIFJFUVVJUkVEIGxpYnNvbHYpCiArUEtHX0NIRUNLX01PRFVMRVMgKExJQlNPTFYgUkVRVUlSRUQgbGlic29sdiBsaWJzb2x2ZXh0KQogIHNldChMSUJTT0xWX0xJQlJBUlkgJHtMSUJTT0xWX0xJQlJBUklFU30pCi0gcGtnX2NoZWNrX21vZHVsZXMgKENIRUNLIFJFUVVJUkVEIGNoZWNrKQotIHBrZ19jaGVja19tb2R1bGVzIChSRVBPIFJFUVVJUkVEIGxpYnJlcG8pCisgaWYgKEVOQUJMRV9SSFNNX1NVUFBPUlQpCisgICAgIHBrZ19jaGVja19tb2R1bGVzIChSSFNNIFJFUVVJUkVEIGxpYnJoc20pCiAtLSAKIDIuMTEuMAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmYvMDAwMi1QcmVmaXgtc3lzcm9vdC1wYXRoLXRvLWludHJvc3BlY3Rpb24tdG9vbHMtcGF0aC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZi8wMDAyLVByZWZpeC1zeXNyb290LXBhdGgtdG8taW50cm9zcGVjdGlvbi10b29scy1wYXRoLnBhdGNoCmluZGV4IDNkNzcyYTUuLjdlZWNjM2QgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZi8wMDAyLVByZWZpeC1zeXNyb290LXBhdGgtdG8taW50cm9zcGVjdGlvbi10b29scy1wYXRoLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZi8wMDAyLVByZWZpeC1zeXNyb290LXBhdGgtdG8taW50cm9zcGVjdGlvbi10b29scy1wYXRoLnBhdGNoCkBAIC0zLDcgKzMsNyBAQAogRGF0ZTogRnJpLCAzMCBEZWMgMjAxNiAxODoxNzoxOSArMDIwMAogU3ViamVjdDogW1BBVENIIDIvNF0gUHJlZml4IHN5c3Jvb3QgcGF0aCB0byBpbnRyb3NwZWN0aW9uIHRvb2xzIHBhdGguCiAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9saWJkbmYvcHVsbC8zMTJdCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIC0tLQogIGxpYmRuZi9DTWFrZUxpc3RzLnR4dCB8IDQgKystLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJkbmYvbGliZG5mLzAwMDMtU2V0LXRoZS1saWJyYXJ5LWluc3RhbGxhdGlvbi1kaXJlY3RvcnktY29ycmVjdGx5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJkbmYvbGliZG5mLzAwMDMtU2V0LXRoZS1saWJyYXJ5LWluc3RhbGxhdGlvbi1kaXJlY3RvcnktY29ycmVjdGx5LnBhdGNoCmluZGV4IGQ3ZTU5ZDguLjgxMjY0MDkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZi8wMDAzLVNldC10aGUtbGlicmFyeS1pbnN0YWxsYXRpb24tZGlyZWN0b3J5LWNvcnJlY3RseS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmYvMDAwMy1TZXQtdGhlLWxpYnJhcnktaW5zdGFsbGF0aW9uLWRpcmVjdG9yeS1jb3JyZWN0bHkucGF0Y2gKQEAgLTMsNyArMyw3IEBACiBEYXRlOiBGcmksIDMwIERlYyAyMDE2IDE4OjIwOjAxICswMjAwCiBTdWJqZWN0OiBbUEFUQ0ggMy80XSBTZXQgdGhlIGxpYnJhcnkgaW5zdGFsbGF0aW9uIGRpcmVjdG9yeSBjb3JyZWN0bHkuCiAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9saWJkbmYvcHVsbC8zMTJdCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIC0tLQogIENNYWtlTGlzdHMudHh0IHwgNCArKystCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmYvMDAwNC1TZXQtbGlic29sdi12YXJpYWJsZXMtd2l0aC1wa2ctY29uZmlnLWNtYWtlLXMtb3duLW1vLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJkbmYvbGliZG5mLzAwMDQtU2V0LWxpYnNvbHYtdmFyaWFibGVzLXdpdGgtcGtnLWNvbmZpZy1jbWFrZS1zLW93bi1tby5wYXRjaAppbmRleCA5MzE5NTliLi4xZWE5MzEwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmYvMDAwNC1TZXQtbGlic29sdi12YXJpYWJsZXMtd2l0aC1wa2ctY29uZmlnLWNtYWtlLXMtb3duLW1vLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZi8wMDA0LVNldC1saWJzb2x2LXZhcmlhYmxlcy13aXRoLXBrZy1jb25maWctY21ha2Utcy1vd24tbW8ucGF0Y2gKQEAgLTEsMjkgKzEsMzAgQEAKLUZyb20gNmQyNzE4YjkyNTQ1M2Y5YTY5MTUwMDFmNDg5NjA2ZWI4ZTQwODZjOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNTVjYmU2ZjQwZmUwODM2Mzg1ZTFhNzI0MWVjODExY2JlOTllNTg0MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogRGF0ZTogRnJpLCAzMCBEZWMgMjAxNiAxODoyNDo1MCArMDIwMAotU3ViamVjdDogW1BBVENIIDQvNF0gU2V0IGxpYnNvbHYgdmFyaWFibGVzIHdpdGggcGtnLWNvbmZpZyAoY21ha2UncyBvd24gbW9kdWxlCitTdWJqZWN0OiBbUEFUQ0ggNC81XSBTZXQgbGlic29sdiB2YXJpYWJsZXMgd2l0aCBwa2ctY29uZmlnIChjbWFrZSdzIG93biBtb2R1bGUKICBkb2Vzbid0IHdvcmsgcHJvcGVybHkpLgogCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvbGliZG5mL3B1bGwvMzEyXQogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CisKIC0tLQogIENNYWtlTGlzdHMudHh0IHwgMyArKy0KICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0Ci1pbmRleCA4ZWRiNjI3Li5iNTMxZGExIDEwMDY0NAoraW5kZXggYTc1ZGYwNC4uOGIyYWI5YSAxMDA2NDQKIC0tLSBhL0NNYWtlTGlzdHMudHh0CiArKysgYi9DTWFrZUxpc3RzLnR4dAotQEAgLTI4LDcgKzI4LDggQEAgZmluZF9wYWNrYWdlIChQa2dDb25maWcgUkVRVUlSRUQpCitAQCAtMjksNyArMjksOCBAQCBmaW5kX3BhY2thZ2UgKFBrZ0NvbmZpZyBSRVFVSVJFRCkKICBTRVQgKENNQUtFX01PRFVMRV9QQVRIICR7Q01BS0VfU09VUkNFX0RJUn0vY21ha2UvbW9kdWxlcykKICBQS0dfQ0hFQ0tfTU9EVUxFUyhHTElCIGdpby11bml4LTIuMD49Mi40NC4wIFJFUVVJUkVEKQogIEZJTkRfTElCUkFSWSAoUlBNREJfTElCUkFSWSBOQU1FUyBycG1kYikKIC1maW5kX3BhY2thZ2UgKExpYlNvbHYgMC42LjIxIFJFUVVJUkVEIENPTVBPTkVOVFMgZXh0KQogK1BLR19DSEVDS19NT0RVTEVTIChMSUJTT0xWIFJFUVVJUkVEIGxpYnNvbHYpCiArc2V0KExJQlNPTFZfTElCUkFSWSAke0xJQlNPTFZfTElCUkFSSUVTfSkKLSBwa2dfY2hlY2tfbW9kdWxlcyAoQ0hFQ0sgUkVRVUlSRUQgY2hlY2spCi0gcGtnX2NoZWNrX21vZHVsZXMgKFJFUE8gUkVRVUlSRUQgbGlicmVwbykKLSBGSU5EX1BST0dSQU0gKFZBTEdSSU5EX1BST0dSQU0gTkFNRVMgdmFsZ3JpbmQgUEFUSCAvdXNyL2JpbiAvdXNyL2xvY2FsL2JpbikKKyBpZiAoRU5BQkxFX1JIU01fU1VQUE9SVCkKKyAgICAgcGtnX2NoZWNrX21vZHVsZXMgKFJIU00gUkVRVUlSRUQgbGlicmhzbSkKKyAgICAgaW5jbHVkZV9kaXJlY3RvcmllcyAoJHtSSFNNX0lOQ0xVREVfRElSU30pCiAtLSAKIDIuMTEuMAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmZfMC45LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmZfMC45LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDFkOTM0NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZl8wLjkuMy5iYgpAQCAtMCwwICsxLDI4IEBACitTVU1NQVJZID0gIkxpYnJhcnkgcHJvdmlkaW5nIHNpbXBsaWZpZWQgQyBhbmQgUHl0aG9uIEFQSSB0byBsaWJzb2x2IgorTElDRU5TRSA9ICJMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvbGliZG5mIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRmluZEd0a0RvYy5jbWFrZS1kcm9wLXRoZS1yZXF1aXJlbWVudC1mb3ItR1RLRE9DX1NDQS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLVByZWZpeC1zeXNyb290LXBhdGgtdG8taW50cm9zcGVjdGlvbi10b29scy1wYXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtU2V0LXRoZS1saWJyYXJ5LWluc3RhbGxhdGlvbi1kaXJlY3RvcnktY29ycmVjdGx5LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtU2V0LWxpYnNvbHYtdmFyaWFibGVzLXdpdGgtcGtnLWNvbmZpZy1jbWFrZS1zLW93bi1tby5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUdldC1wYXJhbWV0ZXJzLWZvci1ib3RoLWxpYnNvbHYtYW5kLWxpYnNvbHZleHQtbGliZG4ucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ1JFViA9ICIxYjE5OTUwZTgyZDg4ZWVjMjhkMDFiNGU3YzFkYTcxMmM5NDEyMDFkIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitERVBFTkRTID0gImdsaWItMi4wIGxpYnNvbHYgbGliY2hlY2sgbGlicmVwbyBycG0gZ3RrLWRvYyIKKworaW5oZXJpdCBndGstZG9jIGdvYmplY3QtaW50cm9zcGVjdGlvbiBjbWFrZSBwa2djb25maWcgZGlzdHV0aWxzMy1iYXNlCisKK0VYVFJBX09FQ01BS0UgPSAiIC1EUFlUSE9OX0lOU1RBTExfRElSPSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IC1EV0lUSF9NQU49T0ZGIC1EUFlUSE9OX0RFU0lSRUQ9MyBcCisgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnR0lfREFUQV9FTkFCTEVEJywgJ1RydWUnLCAnLURXSVRIX0dJUj1PTicsICctRFdJVEhfR0lSPU9GRicsIGQpfSBcCisgICAgICAgICAgICAgICAgIgorRVhUUkFfT0VDTUFLRV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtRFdJVEhfR0lSPU9GRiIKK0VYVFJBX09FQ01BS0VfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgLURXSVRIX0dJUj1PRkYiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJkbmYvbGliZG5mX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZl9naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmMjg2MTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJkbmYvbGliZG5mX2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLVNVTU1BUlkgPSAiTGlicmFyeSBwcm92aWRpbmcgc2ltcGxpZmllZCBDIGFuZCBQeXRob24gQVBJIHRvIGxpYnNvbHYiCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9saWJkbmYgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaW5kR3RrRG9jLmNtYWtlLWRyb3AtdGhlLXJlcXVpcmVtZW50LWZvci1HVEtET0NfU0NBLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItUHJlZml4LXN5c3Jvb3QtcGF0aC10by1pbnRyb3NwZWN0aW9uLXRvb2xzLXBhdGgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1TZXQtdGhlLWxpYnJhcnktaW5zdGFsbGF0aW9uLWRpcmVjdG9yeS1jb3JyZWN0bHkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1TZXQtbGlic29sdi12YXJpYWJsZXMtd2l0aC1wa2ctY29uZmlnLWNtYWtlLXMtb3duLW1vLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtR2V0LXBhcmFtZXRlcnMtZm9yLWJvdGgtbGlic29sdi1hbmQtbGlic29sdmV4dC1saWJkbi5wYXRjaCBcCi0gICAgICAgICAgICIKLQotUFYgPSAiMC4yLjMrZ2l0JHtTUkNQVn0iCi1TUkNSRVYgPSAiMzY3NTQ1NjI5Y2MwMWE4ZTYyMjg5MGQ4OWJkMTNkMDYyY2U2MGQ3YiIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotREVQRU5EUyA9ICJnbGliLTIuMCBsaWJzb2x2IGxpYmNoZWNrIGxpYnJlcG8gcnBtIGd0ay1kb2MiCi0KLWluaGVyaXQgZ3RrLWRvYyBnb2JqZWN0LWludHJvc3BlY3Rpb24gY21ha2UgcGtnY29uZmlnIGRpc3R1dGlsczMtYmFzZQotCi1FWFRSQV9PRUNNQUtFID0gIiAtRFBZVEhPTl9JTlNUQUxMX0RJUj0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSAtRFdJVEhfTUFOPU9GRiAtRFBZVEhPTl9ERVNJUkVEPTMgXAotICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0dJX0RBVEFfRU5BQkxFRCcsICdUcnVlJywgJy1EV0lUSF9HSVI9T04nLCAnLURXSVRIX0dJUj1PRkYnLCBkKX0gXAotICAgICAgICAgICAgICAgICIKLUVYVFJBX09FQ01BS0VfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLURXSVRIX0dJUj1PRkYiCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIC1EV0lUSF9HSVI9T0ZGIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlicmVwby9saWJyZXBvLzAwMDEtQ29ycmVjdGx5LXNldC10aGUtbGlicmFyeS1pbnN0YWxsYXRpb24tZGlyZWN0b3J5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJyZXBvL2xpYnJlcG8vMDAwMS1Db3JyZWN0bHktc2V0LXRoZS1saWJyYXJ5LWluc3RhbGxhdGlvbi1kaXJlY3RvcnkucGF0Y2gKaW5kZXggMDFmZWE0MC4uMDhhNThmMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJyZXBvL2xpYnJlcG8vMDAwMS1Db3JyZWN0bHktc2V0LXRoZS1saWJyYXJ5LWluc3RhbGxhdGlvbi1kaXJlY3RvcnkucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJyZXBvL2xpYnJlcG8vMDAwMS1Db3JyZWN0bHktc2V0LXRoZS1saWJyYXJ5LWluc3RhbGxhdGlvbi1kaXJlY3RvcnkucGF0Y2gKQEAgLTMsNyArMyw3IEBACiBEYXRlOiBGcmksIDMwIERlYyAyMDE2IDE4OjA0OjM1ICswMjAwCiBTdWJqZWN0OiBbUEFUQ0ggMS80XSBDb3JyZWN0bHkgc2V0IHRoZSBsaWJyYXJ5IGluc3RhbGxhdGlvbiBkaXJlY3RvcnkKIAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L2xpYnJlcG8vcHVsbC8xMTBdCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIC0tLQogIGxpYnJlcG8vQ01ha2VMaXN0cy50eHQgfCAzICsrLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJyZXBvL2xpYnJlcG8vMDAwMy10ZXN0cy1maXgtYS1yYWNlLXdoZW4tZGVsZXRpbmctdGVtcG9yYXJ5LWRpcmVjdG9yaWVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJyZXBvL2xpYnJlcG8vMDAwMy10ZXN0cy1maXgtYS1yYWNlLXdoZW4tZGVsZXRpbmctdGVtcG9yYXJ5LWRpcmVjdG9yaWVzLnBhdGNoCmluZGV4IDBkMmZhZTQuLjg5Y2E2MGUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlicmVwby9saWJyZXBvLzAwMDMtdGVzdHMtZml4LWEtcmFjZS13aGVuLWRlbGV0aW5nLXRlbXBvcmFyeS1kaXJlY3Rvcmllcy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwby8wMDAzLXRlc3RzLWZpeC1hLXJhY2Utd2hlbi1kZWxldGluZy10ZW1wb3JhcnktZGlyZWN0b3JpZXMucGF0Y2gKQEAgLTMsNyArMyw3IEBACiBEYXRlOiBGcmksIDMwIERlYyAyMDE2IDE4OjA2OjI0ICswMjAwCiBTdWJqZWN0OiBbUEFUQ0ggMy80XSB0ZXN0czogZml4IGEgcmFjZSB3aGVuIGRlbGV0aW5nIHRlbXBvcmFyeSBkaXJlY3RvcmllcwogCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvbGlicmVwby9wdWxsLzExMF0KIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogLS0tCiAgdGVzdHMvcHl0aG9uL3Rlc3RzL3Rlc3RfeXVtX3JlcG9fZG93bmxvYWRpbmcucHkgfCAyICstCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwby8wMDA0LVNldC1ncGdtZS12YXJpYWJsZXMtd2l0aC1wa2ctY29uZmlnLW5vdC13aXRoLWNtYWtlLW0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwby8wMDA0LVNldC1ncGdtZS12YXJpYWJsZXMtd2l0aC1wa2ctY29uZmlnLW5vdC13aXRoLWNtYWtlLW0ucGF0Y2gKaW5kZXggNjY2NWIzMS4uZjdkN2FiMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJyZXBvL2xpYnJlcG8vMDAwNC1TZXQtZ3BnbWUtdmFyaWFibGVzLXdpdGgtcGtnLWNvbmZpZy1ub3Qtd2l0aC1jbWFrZS1tLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlicmVwby9saWJyZXBvLzAwMDQtU2V0LWdwZ21lLXZhcmlhYmxlcy13aXRoLXBrZy1jb25maWctbm90LXdpdGgtY21ha2UtbS5wYXRjaApAQCAtNCw3ICs0LDcgQEAKIFN1YmplY3Q6IFtQQVRDSCA0LzRdIFNldCBncGdtZSB2YXJpYWJsZXMgd2l0aCBwa2ctY29uZmlnLCBub3Qgd2l0aCBjbWFrZQogIG1vZHVsZSAod2hpY2ggZG9lc24ndCB3b3JrIHByb3Blcmx5KQogCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZ3BnbWUgdXBzdHJlYW0gZG9lcyBub3QgaGF2ZSBwa2ctY29uZmlnIHN1cHBvcnQgYW5kIGlzIG5vdCBpbnRlcmVzdGVkIGluIGl0XQogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiAtLS0KICBDTWFrZUxpc3RzLnR4dCB8IDMgKystCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwby8wMDA1LUZpeC10eXBvLWNvcnJlY3QtTFJPX1NTTFZFUklGWUhPU1Qtd2l0aC1DVVJMT1BUX1NTTF8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwby8wMDA1LUZpeC10eXBvLWNvcnJlY3QtTFJPX1NTTFZFUklGWUhPU1Qtd2l0aC1DVVJMT1BUX1NTTF8ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjBjN2QxYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlicmVwby9saWJyZXBvLzAwMDUtRml4LXR5cG8tY29ycmVjdC1MUk9fU1NMVkVSSUZZSE9TVC13aXRoLUNVUkxPUFRfU1NMXy5wYXRjaApAQCAtMCwwICsxLDQwIEBACitGcm9tIGE0YmJiY2NjZTZlZGMxYTJkMWJkNDc1NTA2ZTI5NzVmZDc2OTZjODggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDggSnVuIDIwMTcgMTY6MzE6MzAgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IHR5cG86IGNvcnJlY3QgTFJPX1NTTFZFUklGWUhPU1Qgd2l0aAorIENVUkxPUFRfU1NMX1ZFUklGWUhPU1QKKworSW4gY29tbWl0IDUxZDMyYzZjZDg4YmEwMTM5YzMyNzkzMTgzZmQ2YTIzNmMxZWY0NTYKKy0tLQorQXV0aG9yOiBUb21hcyBNbGNvY2ggPHRtbGNvY2hAcmVkaGF0LmNvbT4KK0RhdGU6ICAgTW9uIE1heSA1IDE0OjMxOjM1IDIwMTQgKzAyMDAKKworICAgIEFkZCBMUk9fU1NMVkVSSUZZUEVFUiBhbmQgTFJPX1NTTFZFUklGWUhPU1Qgb3B0aW9ucyAoUmhCdWc6IDEwOTMwMTQpCistLS0KKworSXQgaW5jb3JyZWN0bHkgc2V0b3B0IENVUkxPUFRfU1NMX1ZFUklGWVBFRVIgZm9yIExST19TU0xWRVJJRllIT1NULgorVXNlIENVUkxPUFRfU1NMX1ZFUklGWUhPU1QgdG8gY29ycmVjdC4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgbGlicmVwby9oYW5kbGUuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2xpYnJlcG8vaGFuZGxlLmMgYi9saWJyZXBvL2hhbmRsZS5jCitpbmRleCBjY2VhNzliLi5mZjM5ZGI0IDEwMDY0NAorLS0tIGEvbGlicmVwby9oYW5kbGUuYworKysrIGIvbGlicmVwby9oYW5kbGUuYworQEAgLTYyOSw3ICs2MjksNyBAQCBscl9oYW5kbGVfc2V0b3B0KExySGFuZGxlICpoYW5kbGUsCisgCisgICAgIGNhc2UgTFJPX1NTTFZFUklGWUhPU1Q6CisgICAgICAgICBoYW5kbGUtPnNzbHZlcmlmeWhvc3QgPSB2YV9hcmcoYXJnLCBsb25nKSA/IDIgOiAwOworLSAgICAgICAgY19yYyA9IGN1cmxfZWFzeV9zZXRvcHQoY19oLCBDVVJMT1BUX1NTTF9WRVJJRllQRUVSLCBoYW5kbGUtPnNzbHZlcmlmeWhvc3QpOworKyAgICAgICAgY19yYyA9IGN1cmxfZWFzeV9zZXRvcHQoY19oLCBDVVJMT1BUX1NTTF9WRVJJRllIT1NULCBoYW5kbGUtPnNzbHZlcmlmeWhvc3QpOworICAgICAgICAgYnJlYWs7CisgCisgICAgIGNhc2UgTFJPX1NTTENMSUVOVENFUlQ6CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlicmVwby9saWJyZXBvX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlicmVwby9saWJyZXBvX2dpdC5iYgppbmRleCAyZjE5NGYxLi4zMjM4YjE0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwb19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJyZXBvL2xpYnJlcG9fZ2l0LmJiCkBAIC03LDYgKzcsNyBAQAogICAgICAgICAgICBmaWxlOi8vMDAwMi1Eby1ub3QtdHJ5LXRvLW9idGFpbi1QWVRIT05fSU5TVEFMTF9ESVItYnktcnVubmluZy1wLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDMtdGVzdHMtZml4LWEtcmFjZS13aGVuLWRlbGV0aW5nLXRlbXBvcmFyeS1kaXJlY3Rvcmllcy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDA0LVNldC1ncGdtZS12YXJpYWJsZXMtd2l0aC1wa2ctY29uZmlnLW5vdC13aXRoLWNtYWtlLW0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1GaXgtdHlwby1jb3JyZWN0LUxST19TU0xWRVJJRllIT1NULXdpdGgtQ1VSTE9QVF9TU0xfLnBhdGNoIFwKICAgICAgICAgICAgIgogCiBQViA9ICIxLjcuMjArZ2l0JHtTUkNQVn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnRvb2wvbGlidG9vbC9ub2hhcmRjb2RlcGF0aHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnRvb2wvbGlidG9vbC9ub2hhcmRjb2RlcGF0aHMucGF0Y2gKaW5kZXggYjIyMzlmYi4uZmNiY2U3MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJ0b29sL2xpYnRvb2wvbm9oYXJkY29kZXBhdGhzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlidG9vbC9saWJ0b29sL25vaGFyZGNvZGVwYXRocy5wYXRjaApAQCAtNCw2ICs0LDggQEAKIAogUlAgMjAxNS8yLzMKIAorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCisKIEluZGV4OiBsaWJ0b29sLTIuNC41L2xpYnRvb2xpemUuaW4KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSBsaWJ0b29sLTIuNC41Lm9yaWcvbGlidG9vbGl6ZS5pbgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJ0b29sL2xpYnRvb2xfMi40LjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnRvb2wvbGlidG9vbF8yLjQuNi5iYgppbmRleCAwNmFiYjA1Li5iMDI2MjBiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnRvb2wvbGlidG9vbF8yLjQuNi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnRvb2wvbGlidG9vbF8yLjQuNi5iYgpAQCAtMTUsNiArMTUsNyBAQAogCiBkb19pbnN0YWxsX2FwcGVuZCAoKSB7CiAgICAgICAgIHNlZCAtZSAnc0AtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9IT1NUfUBAZycgXAorICAgICAgICAgICAgLWUgInNAJHtERUJVR19QUkVGSVhfTUFQfUBAZyIgXAogICAgICAgICAgICAgLWUgJ3NAJHtTVEFHSU5HX0RJUl9IT1NUfUBAZycgXAogICAgICAgICAgICAgLWUgJ3NAJHtTVEFHSU5HX0RJUl9OQVRJVkV9QEBnJyBcCiAgICAgICAgICAgICAtZSAnc0BeXChzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IlwpLipAXDEke2xpYmRpcn0gJHtiYXNlX2xpYmRpcn0iQCcgXApAQCAtMjIsNSArMjMsNiBAQAogICAgICAgICAgICAgLWUgJ3NAXlwoY29tcGlsZXJfbGliX3NlYXJjaF9wYXRoPSJcKS4qQFwxJHtsaWJkaXJ9ICR7YmFzZV9saWJkaXJ9IkAnIFwKICAgICAgICAgICAgIC1lICdzQF5cKHByZWRlcF9vYmplY3RzPSJcKS4qQFwxIkAnIFwKICAgICAgICAgICAgIC1lICdzQF5cKHBvc3RkZXBfb2JqZWN0cz0iXCkuKkBcMSJAJyBcCisgICAgICAgICAgICAtZSAic0Ake0hPU1RUT09MU19ESVJ9L0BAZyIgXAogICAgICAgICAgICAgLWkgJHtEfSR7YmluZGlyfS9saWJ0b29sCiB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xsdm0vbGx2bS8wMDAxLWxsdm0tVGFyZ2V0TGlicmFyeUluZm8tVW5kZWZpbmUtbGliYy1mdW5jdGlvbnMtaWYtdGgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xsdm0vbGx2bS8wMDAxLWxsdm0tVGFyZ2V0TGlicmFyeUluZm8tVW5kZWZpbmUtbGliYy1mdW5jdGlvbnMtaWYtdGgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTI1MTc5OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGx2bS9sbHZtLzAwMDEtbGx2bS1UYXJnZXRMaWJyYXJ5SW5mby1VbmRlZmluZS1saWJjLWZ1bmN0aW9ucy1pZi10aC5wYXRjaApAQCAtMCwwICsxLDkzIEBACitGcm9tIDI4MjkzZTQ4Y2YxYTUyMDA0YzZhNzhkZTQ0ODcxODQ0MWY5ZTA1ZjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCAyMSBNYXkgMjAxNiAwMDozMzoyMCArMDAwMAorU3ViamVjdDogW1BBVENIIDEvMl0gbGx2bTogVGFyZ2V0TGlicmFyeUluZm86IFVuZGVmaW5lIGxpYmMgZnVuY3Rpb25zIGlmIHRoZXkKKyBhcmUgbWFjcm9zCisKK211c2wgZGVmaW5lcyBzb21lIGZ1bmN0aW9ucyBhcyBtYWNyb3MgYW5kIG5vdCBpbmxpbmUgZnVuY3Rpb25zCitpZiB0aGlzIGlzIHRoZSBjYXNlIHRoZW4gbWFrZSBzdXJlIHRvIHVuZGVmaW5lIHRoZW0KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBpbmNsdWRlL2xsdm0vQW5hbHlzaXMvVGFyZ2V0TGlicmFyeUluZm8uZGVmIHwgMjEgKysrKysrKysrKysrKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9UYXJnZXRMaWJyYXJ5SW5mby5kZWYgYi9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvVGFyZ2V0TGlicmFyeUluZm8uZGVmCitpbmRleCA5Y2JlOTE3YzE0Ni4uYWZmODQxOWNmNTQgMTAwNjQ0CistLS0gYS9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvVGFyZ2V0TGlicmFyeUluZm8uZGVmCisrKysgYi9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvVGFyZ2V0TGlicmFyeUluZm8uZGVmCitAQCAtNjU2LDYgKzY1Niw5IEBAIFRMSV9ERUZJTkVfU1RSSU5HX0lOVEVSTkFMKCJmbW9kbCIpCisgVExJX0RFRklORV9FTlVNX0lOVEVSTkFMKGZvcGVuKQorIFRMSV9ERUZJTkVfU1RSSU5HX0lOVEVSTkFMKCJmb3BlbiIpCisgLy8vIEZJTEUgKmZvcGVuNjQoY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKm9wZW50eXBlKQorKyNpZmRlZiBmb3BlbjY0CisrI3VuZGVmIGZvcGVuNjQKKysjZW5kaWYKKyBUTElfREVGSU5FX0VOVU1fSU5URVJOQUwoZm9wZW42NCkKKyBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgiZm9wZW42NCIpCisgLy8vIGludCBmcHJpbnRmKEZJTEUgKnN0cmVhbSwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pOworQEAgLTY5MSw2ICs2OTQsOSBAQCBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgiZnNlZWsiKQorIC8vLyBpbnQgZnNlZWtvKEZJTEUgKnN0cmVhbSwgb2ZmX3Qgb2Zmc2V0LCBpbnQgd2hlbmNlKTsKKyBUTElfREVGSU5FX0VOVU1fSU5URVJOQUwoZnNlZWtvKQorIFRMSV9ERUZJTkVfU1RSSU5HX0lOVEVSTkFMKCJmc2Vla28iKQorKyNpZmRlZiBmc2Vla282NAorKyN1bmRlZiBmc2Vla282NAorKyNlbmRpZgorIC8vLyBpbnQgZnNlZWtvNjQoRklMRSAqc3RyZWFtLCBvZmY2NF90IG9mZnNldCwgaW50IHdoZW5jZSkKKyBUTElfREVGSU5FX0VOVU1fSU5URVJOQUwoZnNlZWtvNjQpCisgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoImZzZWVrbzY0IikKK0BAIC03MDEsNiArNzA3LDkgQEAgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoImZzZXRwb3MiKQorIFRMSV9ERUZJTkVfRU5VTV9JTlRFUk5BTChmc3RhdCkKKyBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgiZnN0YXQiKQorIC8vLyBpbnQgZnN0YXQ2NChpbnQgZmlsZWRlcywgc3RydWN0IHN0YXQ2NCAqYnVmKQorKyNpZmRlZiBmc3RhdDY0CisrI3VuZGVmIGZzdGF0NjQKKysjZW5kaWYKKyBUTElfREVGSU5FX0VOVU1fSU5URVJOQUwoZnN0YXQ2NCkKKyBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgiZnN0YXQ2NCIpCisgLy8vIGludCBmc3RhdHZmcyhpbnQgZmlsZGVzLCBzdHJ1Y3Qgc3RhdHZmcyAqYnVmKTsKK0BAIC03MTYsNiArNzI1LDkgQEAgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoImZ0ZWxsIikKKyBUTElfREVGSU5FX0VOVU1fSU5URVJOQUwoZnRlbGxvKQorIFRMSV9ERUZJTkVfU1RSSU5HX0lOVEVSTkFMKCJmdGVsbG8iKQorIC8vLyBvZmY2NF90IGZ0ZWxsbzY0KEZJTEUgKnN0cmVhbSkKKysjaWZkZWYgZnRlbGxvNjQKKysjdW5kZWYgZnRlbGxvNjQKKysjZW5kaWYKKyBUTElfREVGSU5FX0VOVU1fSU5URVJOQUwoZnRlbGxvNjQpCisgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoImZ0ZWxsbzY0IikKKyAvLy8gaW50IGZ0cnlsb2NrZmlsZShGSUxFICpmaWxlKTsKK0BAIC04MzYsNiArODQ4LDkgQEAgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoImxvZ2wiKQorIFRMSV9ERUZJTkVfRU5VTV9JTlRFUk5BTChsc3RhdCkKKyBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgibHN0YXQiKQorIC8vLyBpbnQgbHN0YXQ2NChjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3Qgc3RhdDY0ICpidWYpOworKyNpZmRlZiBsc3RhdDY0CisrI3VuZGVmIGxzdGF0NjQKKysjZW5kaWYKKyBUTElfREVGSU5FX0VOVU1fSU5URVJOQUwobHN0YXQ2NCkKKyBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgibHN0YXQ2NCIpCisgLy8vIHZvaWQgKm1hbGxvYyhzaXplX3Qgc2l6ZSk7CitAQCAtMTA1NSw2ICsxMDcwLDkgQEAgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoInNzY2FuZiIpCisgVExJX0RFRklORV9FTlVNX0lOVEVSTkFMKHN0YXQpCisgVExJX0RFRklORV9TVFJJTkdfSU5URVJOQUwoInN0YXQiKQorIC8vLyBpbnQgc3RhdDY0KGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBzdGF0NjQgKmJ1Zik7CisrI2lmZGVmIHN0YXQ2NAorKyN1bmRlZiBzdGF0NjQKKysjZW5kaWYKKyBUTElfREVGSU5FX0VOVU1fSU5URVJOQUwoc3RhdDY0KQorIFRMSV9ERUZJTkVfU1RSSU5HX0lOVEVSTkFMKCJzdGF0NjQiKQorIC8vLyBpbnQgc3RhdHZmcyhjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3Qgc3RhdHZmcyAqYnVmKTsKK0BAIC0xMTg0LDYgKzEyMDIsOSBAQCBUTElfREVGSU5FX1NUUklOR19JTlRFUk5BTCgidGltZXMiKQorIFRMSV9ERUZJTkVfRU5VTV9JTlRFUk5BTCh0bXBmaWxlKQorIFRMSV9ERUZJTkVfU1RSSU5HX0lOVEVSTkFMKCJ0bXBmaWxlIikKKyAvLy8gRklMRSAqdG1wZmlsZTY0KHZvaWQpCisrI2lmZGVmIHRtcGZpbGU2NAorKyN1bmRlZiB0bXBmaWxlNjQKKysjZW5kaWYKKyBUTElfREVGSU5FX0VOVU1fSU5URVJOQUwodG1wZmlsZTY0KQorIFRMSV9ERUZJTkVfU1RSSU5HX0lOVEVSTkFMKCJ0bXBmaWxlNjQiKQorIC8vLyBpbnQgdG9hc2NpaShpbnQgYyk7CistLSAKKzIuMTMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xsdm0vbGx2bS8wMDAyLWxsdm0tYWxsb3ctZW52LW92ZXJyaWRlLW9mLWV4ZS1wYXRoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9sbHZtL2xsdm0vMDAwMi1sbHZtLWFsbG93LWVudi1vdmVycmlkZS1vZi1leGUtcGF0aC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzJiZDcyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9sbHZtL2xsdm0vMDAwMi1sbHZtLWFsbG93LWVudi1vdmVycmlkZS1vZi1leGUtcGF0aC5wYXRjaApAQCAtMCwwICsxLDM5IEBACitGcm9tIGQ3NzY0ODdiYWMxNzY1MDcwNDYxNDI0OGQxOWQxZTZiMzU3NzUwMDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXJ0aW4gS2VsbHkgPG1rZWxseUB4ZXZvLmNvbT4KK0RhdGU6IEZyaSwgMTkgTWF5IDIwMTcgMDA6MjI6NTcgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIGxsdm06IGFsbG93IGVudiBvdmVycmlkZSBvZiBleGUgcGF0aAorCitXaGVuIHVzaW5nIGEgbmF0aXZlIGxsdm0tY29uZmlnIGZyb20gaW5zaWRlIGEgc3lzcm9vdCwgd2UgbmVlZCBsbHZtLWNvbmZpZyB0bworcmV0dXJuIHRoZSBsaWJyYXJpZXMsIGluY2x1ZGUgZGlyZWN0b3JpZXMsIGV0Yy4gZnJvbSBpbnNpZGUgdGhlIHN5c3Jvb3QgcmF0aGVyCit0aGFuIGZyb20gdGhlIG5hdGl2ZSBzeXNyb290LiBUaHVzIHByb3ZpZGUgYW4gZW52IG92ZXJyaWRlIGZvciBjYWxsaW5nCitsbHZtLWNvbmZpZyBmcm9tIGEgdGFyZ2V0IHN5c3Jvb3QuCisKK1NpZ25lZC1vZmYtYnk6IE1hcnRpbiBLZWxseSA8bWtlbGx5QHhldm8uY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyB0b29scy9sbHZtLWNvbmZpZy9sbHZtLWNvbmZpZy5jcHAgfCA3ICsrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS90b29scy9sbHZtLWNvbmZpZy9sbHZtLWNvbmZpZy5jcHAgYi90b29scy9sbHZtLWNvbmZpZy9sbHZtLWNvbmZpZy5jcHAKK2luZGV4IDA4YjA5NmFmYjA1Li5kOGQ3NzQyNzQ0ZSAxMDA2NDQKKy0tLSBhL3Rvb2xzL2xsdm0tY29uZmlnL2xsdm0tY29uZmlnLmNwcAorKysrIGIvdG9vbHMvbGx2bS1jb25maWcvbGx2bS1jb25maWcuY3BwCitAQCAtMjI1LDYgKzIyNSwxMyBAQCBUeXBpY2FsIGNvbXBvbmVudHM6XG5cCisgCisgLy8vIFxicmllZiBDb21wdXRlIHRoZSBwYXRoIHRvIHRoZSBtYWluIGV4ZWN1dGFibGUuCisgc3RkOjpzdHJpbmcgR2V0RXhlY3V0YWJsZVBhdGgoY29uc3QgY2hhciAqQXJndjApIHsKKysgIC8vIEhhY2sgZm9yIFlvY3RvOiB3ZSBuZWVkIHRvIG92ZXJyaWRlIHRoZSByb290IHBhdGggd2hlbiB3ZSBhcmUgdXNpbmcKKysgIC8vIGxsdm0tY29uZmlnIGZyb20gd2l0aGluIGEgdGFyZ2V0IHN5c3Jvb3QuCisrICBjb25zdCBjaGFyICpTeXNyb290ID0gc3RkOjpnZXRlbnYoIllPQ1RPX0FMVEVSTkFURV9FWEVfUEFUSCIpOworKyAgaWYgKFN5c3Jvb3QgIT0gbnVsbHB0cikgeworKyAgICByZXR1cm4gU3lzcm9vdDsKKysgIH0KKysKKyAgIC8vIFRoaXMganVzdCBuZWVkcyB0byBiZSBzb21lIHN5bWJvbCBpbiB0aGUgYmluYXJ5OyBDKysgZG9lc24ndAorICAgLy8gYWxsb3cgdGFraW5nIHRoZSBhZGRyZXNzIG9mIDo6bWFpbiBob3dldmVyLgorICAgdm9pZCAqUCA9ICh2b2lkICopKGludHB0cl90KUdldEV4ZWN1dGFibGVQYXRoOworLS0gCisyLjEzLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9sbHZtL2xsdm1fZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9sbHZtL2xsdm1fZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwNmZhNDkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xsdm0vbGx2bV9naXQuYmIKQEAgLTAsMCArMSwxODUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE3IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisjIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUIGZvciB0aGUgdGVybXMpCisKK0RFU0NSSVBUSU9OID0gIlRoZSBMTFZNIENvbXBpbGVyIEluZnJhc3RydWN0dXJlIgorSE9NRVBBR0UgPSAiaHR0cDovL2xsdm0ub3JnIgorTElDRU5TRSA9ICJOQ1NBIgorU0VDVElPTiA9ICJkZXZlbCIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5UWFQ7bWQ1PWU4MjVlMDE3ZWRjMzVjZmQ1OGUyNjExNmU1MjUxNzcxIgorCitERVBFTkRTID0gImxpYmZmaSBsaWJ4bWwyLW5hdGl2ZSB6bGliIG5pbmphLW5hdGl2ZSBsbHZtLW5hdGl2ZSIKKworUkRFUEVORFNfJHtQTn1fYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgbmN1cnNlcy10ZXJtaW5mbyIKKworaW5oZXJpdCBwZXJsbmF0aXZlIHB5dGhvbm5hdGl2ZSBjbWFrZSBwa2djb25maWcKKworUFJPVklERVMgKz0gImxsdm0ke1BWfSIKKworTExWTV9SRUxFQVNFID0gIiR7UFZ9IgorTExWTV9ESVIgPSAibGx2bSR7TExWTV9SRUxFQVNFfSIKKworU1JDUkVWID0gIjlhNWMzMzMzODhjYmI1NGEwY2UzYTY3YzRmNTM5ZjVlNTkwYTA4OWIiCitQViA9ICI1LjAiCitQQVRDSF9WRVJTSU9OID0gIjAiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbGx2bS1taXJyb3IvbGx2bS5naXQ7YnJhbmNoPXJlbGVhc2VfNTA7cHJvdG9jb2w9aHR0cCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWxsdm0tVGFyZ2V0TGlicmFyeUluZm8tVW5kZWZpbmUtbGliYy1mdW5jdGlvbnMtaWYtdGgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1sbHZtLWFsbG93LWVudi1vdmVycmlkZS1vZi1leGUtcGF0aC5wYXRjaCBcCisgICAgICAgICAgIgorVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitMTFZNX0lOU1RBTExfRElSID0gIiR7V09SS0RJUn0vbGx2bS1pbnN0YWxsIgorZGVmIGdldF9sbHZtX2FyY2goYmIsIGQsIGFyY2hfdmFyKToKKyAgICBpbXBvcnQgcmUKKyAgICBhID0gZC5nZXRWYXIoYXJjaF92YXIpCisgICAgaWYgICByZS5tYXRjaCgnKGkuODZ8YXRobG9ufHg4Ni42NCkkJywgYSk6ICAgICAgICAgcmV0dXJuICdYODYnCisgICAgZWxpZiByZS5tYXRjaCgnYXJtJCcsIGEpOiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdBUk0nCisgICAgZWxpZiByZS5tYXRjaCgnYXJtZWIkJywgYSk6ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdBUk0nCisgICAgZWxpZiByZS5tYXRjaCgnYWFyY2g2NCQnLCBhKTogICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdBQXJjaDY0JworICAgIGVsaWYgcmUubWF0Y2goJ2FhcmNoNjRfYmUkJywgYSk6ICAgICAgICAgICAgICAgICAgIHJldHVybiAnQUFyY2g2NCcKKyAgICBlbGlmIHJlLm1hdGNoKCdtaXBzKGlzYXwpKDMyfDY0fCkocjZ8KShlbHwpJCcsIGEpOiByZXR1cm4gJ01pcHMnCisgICAgZWxpZiByZS5tYXRjaCgncChwY3xvd2VycGMpKHw2NCknLCBhKTogICAgICAgICAgICAgcmV0dXJuICdQb3dlclBDJworICAgIGVsc2U6CisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoIkNhbm5vdCBtYXAgJyVzJyB0byBhIHN1cHBvcnRlZCBMTFZNIGFyY2hpdGVjdHVyZSIgJSBhKQorCitkZWYgZ2V0X2xsdm1fdGFyZ2V0X2FyY2goYmIsIGQpOgorICAgIHJldHVybiBnZXRfbGx2bV9hcmNoKGJiLCBkLCAnVEFSR0VUX0FSQ0gnKQorIworIyBEZWZhdWx0IHRvIGJ1aWxkIGFsbCBPRS1Db3JlIHN1cHBvcnRlZCB0YXJnZXQgYXJjaGVzICh1c2VyIG92ZXJyaWRhYmxlKS4KKyMKK0xMVk1fVEFSR0VUUyA/PSAiJHtAZ2V0X2xsdm1fdGFyZ2V0X2FyY2goYmIsIGQpfSIKK0xMVk1fVEFSR0VUU19wcmVwZW5kX3g4NiA9ICJBTURHUFU7IgorTExWTV9UQVJHRVRTX3ByZXBlbmRfeDg2LTY0ID0gIkFNREdQVTsiCisKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NHQgPSAiYXJtIgorCitFWFRSQV9PRUNNQUtFICs9ICItRExMVk1fRU5BQkxFX0FTU0VSVElPTlM9T0ZGIFwKKyAgICAgICAgICAgICAgICAgIC1ETExWTV9FTkFCTEVfRVhQRU5TSVZFX0NIRUNLUz1PRkYgXAorICAgICAgICAgICAgICAgICAgLURMTFZNX0VOQUJMRV9QSUM9T04gXAorICAgICAgICAgICAgICAgICAgLURMTFZNX0JJTkRJTkdTX0xJU1Q9JycgXAorICAgICAgICAgICAgICAgICAgLURMTFZNX0xJTktfTExWTV9EWUxJQj1PTiBcCisgICAgICAgICAgICAgICAgICAtRExMVk1fRU5BQkxFX0ZGST1PTiBcCisgICAgICAgICAgICAgICAgICAtREZGSV9JTkNMVURFX0RJUj0kKHBrZy1jb25maWcgLS12YXJpYWJsZT1pbmNsdWRlZGlyIGxpYmZmaSkgXAorICAgICAgICAgICAgICAgICAgLURMTFZNX09QVElNSVpFRF9UQUJMRUdFTj1PTiBcCisgICAgICAgICAgICAgICAgICAtRExMVk1fVEFSR0VUU19UT19CVUlMRD0iJHtMTFZNX1RBUkdFVFN9IiBcCisgICAgICAgICAgICAgICAgICAtRyBOaW5qYSIKKworRVhUUkFfT0VDTUFLRV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIlwKKyAgICAgICAgICAgICAgICAgIC1EQ01BS0VfQ1JPU1NDT01QSUxJTkc6Qk9PTD1PTiBcCisgICAgICAgICAgICAgICAgICAtRExMVk1fVEFCTEVHRU49JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2xsdm0tdGJsZ2VuJHtQVn0gXAorICAgICAgICAgICAgICAgICAiCisKK0VYVFJBX09FQ01BS0VfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICJcCisgICAgICAgICAgICAgICAgICAtRENNQUtFX0NST1NTQ09NUElMSU5HOkJPT0w9T04gXAorICAgICAgICAgICAgICAgICAgLURMTFZNX1RBQkxFR0VOPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9sbHZtLXRibGdlbiR7UFZ9IFwKKyAgICAgICAgICAgICAgICAgIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyMgRml4IHBhdGhzIGluIGxsdm0tY29uZmlnCisJc2VkIC1pICJzfHN5czo6cGF0aDo6cGFyZW50X3BhdGgoQ3VycmVudFBhdGgpKVwuc3RyKCl8c3lzOjpwYXRoOjpwYXJlbnRfcGF0aChzeXM6OnBhdGg6OnBhcmVudF9wYXRoKEN1cnJlbnRQYXRoKSkpLnN0cigpfGciICR7U30vdG9vbHMvbGx2bS1jb25maWcvbGx2bS1jb25maWcuY3BwCisJc2VkIC1yaSAicyMvKGJpbnxpbmNsdWRlfGxpYikoLz9cIikjL1wxLyR7TExWTV9ESVJ9XDIjZyIgJHtTfS90b29scy9sbHZtLWNvbmZpZy9sbHZtLWNvbmZpZy5jcHAKKwlzZWQgLXJpICJzI2xpYi8ke0xMVk1fRElSfSMke2Jhc2VsaWJ9LyR7TExWTV9ESVJ9I2ciICR7U30vdG9vbHMvbGx2bS1jb25maWcvbGx2bS1jb25maWcuY3BwCit9CisKK2RvX2NvbXBpbGUoKSB7CisJTklOSkFfU1RBVFVTPSJbJXBdICIgbmluamEgLXYgJHtQQVJBTExFTF9NQUtFfQorfQorCitkb19jb21waWxlX2NsYXNzLW5hdGl2ZSgpIHsKKwlOSU5KQV9TVEFUVVM9IlslcF0gIiBuaW5qYSAtdiAke1BBUkFMTEVMX01BS0V9IGxsdm0tY29uZmlnIGxsdm0tdGJsZ2VuCit9CisKK2RvX2luc3RhbGwoKSB7CisJTklOSkFfU1RBVFVTPSJbJXBdICIgREVTVERJUj0ke0xMVk1fSU5TVEFMTF9ESVJ9IG5pbmphIC12IGluc3RhbGwKKwlpbnN0YWxsIC1EIC1tIDA3NTUgJHtCfS9iaW4vbGx2bS1jb25maWcgJHtEfSR7bGliZGlyfS8ke0xMVk1fRElSfS9sbHZtLWNvbmZpZworCisJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9LyR7TExWTV9ESVJ9CisJY3AgLXIgJHtMTFZNX0lOU1RBTExfRElSfSR7YmluZGlyfS8qICR7RH0ke2JpbmRpcn0vJHtMTFZNX0RJUn0vCisKKwlpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9LyR7TExWTV9ESVJ9CisJY3AgLXIgJHtMTFZNX0lOU1RBTExfRElSfSR7aW5jbHVkZWRpcn0vKiAke0R9JHtpbmNsdWRlZGlyfS8ke0xMVk1fRElSfS8KKworCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS8ke0xMVk1fRElSfQorCisJIyBUaGUgTExWTSBzb3VyY2VzIGhhdmUgIi9saWIiIGVtYmVkZGVkIGFuZCBzbyB3ZSBjYW5ub3QgY29tcGxldGVseSByZWx5IG9uIHRoZSAke2xpYmRpcn0gdmFyaWFibGUKKwlpZiBbIC1kICR7TExWTV9JTlNUQUxMX0RJUn0ke2xpYmRpcn0vIF07IHRoZW4KKwkJY3AgLXIgJHtMTFZNX0lOU1RBTExfRElSfSR7bGliZGlyfS8qICR7RH0ke2xpYmRpcn0vJHtMTFZNX0RJUn0vCisJZWxpZiBbIC1kICR7TExWTV9JTlNUQUxMX0RJUn0ke3ByZWZpeH0vbGliIF07IHRoZW4KKwkJY3AgLXIgJHtMTFZNX0lOU1RBTExfRElSfSR7cHJlZml4fS9saWIvKiAke0R9JHtsaWJkaXJ9LyR7TExWTV9ESVJ9LworCWVsaWYgWyAtZCAke0xMVk1fSU5TVEFMTF9ESVJ9JHtwcmVmaXh9L2xpYjY0IF07IHRoZW4KKwkJY3AgLXIgJHtMTFZNX0lOU1RBTExfRElSfSR7cHJlZml4fS9saWI2NC8qICR7RH0ke2xpYmRpcn0vJHtMTFZNX0RJUn0vCisJZmkKKworCSMgUmVtb3ZlIHVubmVjZXNzYXJ5IGNtYWtlIGZpbGVzCisJcm0gLXJmICR7RH0ke2xpYmRpcn0vJHtMTFZNX0RJUn0vY21ha2UKKworCWxuIC1zICR7TExWTV9ESVJ9L2xpYkxMVk0tJHtQVn0ke1NPTElCU0RFVn0gJHtEfSR7bGliZGlyfS9saWJMTFZNLSR7UFZ9JHtTT0xJQlNERVZ9CisKKwkjIFdlJ2xsIGhhdmUgdG8gZGVsZXRlIHRoZSBsaWJMTFZNLnNvIGR1ZSB0byBtdWx0aXBsZSByZWFzb25zLi4uCisJcm0gLXJmICR7RH0ke2xpYmRpcn0vJHtMTFZNX0RJUn0vbGliTExWTS5zbworCXJtIC1yZiAke0R9JHtsaWJkaXJ9LyR7TExWTV9ESVJ9L2xpYkxUTy5zbworfQorZG9faW5zdGFsbF9jbGFzcy1uYXRpdmUoKSB7CisJaW5zdGFsbCAtRCAtbSAwNzU1ICR7Qn0vYmluL2xsdm0tdGJsZ2VuICR7RH0ke2JpbmRpcn0vbGx2bS10YmxnZW4ke1BWfQorCWluc3RhbGwgLUQgLW0gMDc1NSAke0J9L2Jpbi9sbHZtLWNvbmZpZyAke0R9JHtiaW5kaXJ9L2xsdm0tY29uZmlnJHtQVn0KKwlpbnN0YWxsIC1EIC1tIDA3NTUgJHtCfS9saWIvbGliTExWTS0ke1BWfS5zbyAke0R9JHtsaWJkaXJ9L2xpYkxMVk0tJHtQVn0uc28KK30KKworUEFDS0FHRVMgKz0gIiR7UE59LWJ1Z3BvaW50cGFzc2VzICR7UE59LWxsdm1oZWxsbyIKK0FMTE9XX0VNUFRZXyR7UE59ID0gIjEiCitBTExPV19FTVBUWV8ke1BOfS1zdGF0aWNkZXYgPSAiMSIKK0ZJTEVTXyR7UE59ID0gIiIKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiA9ICIiCitGSUxFU18ke1BOfS1kYmcgPSAiIFwKKyAgICAke2JpbmRpcn0vJHtMTFZNX0RJUn0vLmRlYnVnIFwKKyAgICAke2xpYmRpcn0vJHtMTFZNX0RJUn0vLmRlYnVnL0J1Z3BvaW50UGFzc2VzLnNvIFwKKyAgICAke2xpYmRpcn0vJHtMTFZNX0RJUn0vLmRlYnVnL0xMVk1IZWxsby5zbyBcCisgICAgJHtsaWJkaXJ9LyR7TExWTV9ESVJ9Ly5kZWJ1Zy9saWJMVE8uc28qIFwKKyAgICAke2xpYmRpcn0vJHtMTFZNX0RJUn0vLmRlYnVnL2xsdm0tY29uZmlnIFwKKyAgICAvdXNyL3NyYy9kZWJ1ZyBcCisiCisKK0ZJTEVTXyR7UE59LWRldiA9ICIgXAorICAgICR7YmluZGlyfS8ke0xMVk1fRElSfSBcCisgICAgJHtpbmNsdWRlZGlyfS8ke0xMVk1fRElSfSBcCisgICAgJHtsaWJkaXJ9LyR7TExWTV9ESVJ9L2xsdm0tY29uZmlnIFwKKyIKKworUlJFQ09NTUVORFNfJHtQTn0tZGV2ICs9ICIke1BOfS1idWdwb2ludHBhc3NlcyAke1BOfS1sbHZtaGVsbG8iCisKK0ZJTEVTXyR7UE59LWJ1Z3BvaW50cGFzc2VzID0gIlwKKyAgICAke2xpYmRpcn0vJHtMTFZNX0RJUn0vQnVncG9pbnRQYXNzZXMuc28gXAorIgorRklMRVNfJHtQTn0gKz0gIlwKKyAgICAke2xpYmRpcn0vJHtMTFZNX0RJUn0vbGliTFRPLnNvLiogXAorIgorCitGSUxFU18ke1BOfS1sbHZtaGVsbG8gPSAiXAorICAgICR7bGliZGlyfS8ke0xMVk1fRElSfS9MTFZNSGVsbG8uc28gXAorIgorCitQQUNLQUdFU19EWU5BTUlDID0gIl5saWJsbHZtJHtMTFZNX1JFTEVBU0V9LS4qJCIKK05PQVVUT1BBQ0tBR0VERUJVRyA9ICIxIgorCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmxsdm0ke0xMVk1fUkVMRUFTRX0tbGx2bS0ke0xMVk1fUkVMRUFTRX0uJHtQQVRDSF9WRVJTSU9OfSArPSAiZGV2LXNvIgorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJsbHZtJHtMTFZNX1JFTEVBU0V9LWxsdm0tJHtMTFZNX1JFTEVBU0V9ICs9ICJkZXYtc28iCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmxsdm0ke0xMVk1fUkVMRUFTRX0tbGx2bSArPSAiZGV2LXNvIgorCitweXRob24gbGx2bV9wb3B1bGF0ZV9wYWNrYWdlcygpIHsKKyAgICBsaWJkaXIgPSBiYi5kYXRhLmV4cGFuZCgnJHtsaWJkaXJ9JywgZCkKKyAgICBsaWJsbHZtX2xpYmRpciA9IGJiLmRhdGEuZXhwYW5kKCcke2xpYmRpcn0vJHtMTFZNX0RJUn0nLCBkKQorICAgIHNwbGl0X2RiZ19wYWNrYWdlcyA9IGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpYmxsdm1fbGliZGlyKycvLmRlYnVnJywgJ15saWIoLiopXC5zbyQnLCAnbGlibGx2bSR7TExWTV9SRUxFQVNFfS0lcy1kYmcnLCAnU3BsaXQgZGVidWcgcGFja2FnZSBmb3IgJXMnLCBhbGxvd19kaXJzPVRydWUpCisgICAgc3BsaXRfcGFja2FnZXMgPSBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJkaXIsICdebGliKC4qKVwuc28kJywgJ2xpYmxsdm0ke0xMVk1fUkVMRUFTRX0tJXMnLCAnU3BsaXQgcGFja2FnZSBmb3IgJXMnLCBhbGxvd19kaXJzPVRydWUsIGFsbG93X2xpbmtzPVRydWUsIHJlY3Vyc2l2ZT1UcnVlKQorICAgIHNwbGl0X3N0YXRpY2Rldl9wYWNrYWdlcyA9IGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpYmxsdm1fbGliZGlyLCAnXmxpYiguKilcLmEkJywgJ2xpYmxsdm0ke0xMVk1fUkVMRUFTRX0tJXMtc3RhdGljZGV2JywgJ1NwbGl0IHN0YXRpY2RldiBwYWNrYWdlIGZvciAlcycsIGFsbG93X2RpcnM9VHJ1ZSkKKyAgICBpZiBzcGxpdF9wYWNrYWdlczoKKyAgICAgICAgcG4gPSBkLmdldFZhcignUE4nKQorICAgICAgICBkLmFwcGVuZFZhcignUkRFUEVORFNfJyArIHBuLCAnICcrJyAnLmpvaW4oc3BsaXRfcGFja2FnZXMpKQorICAgICAgICBkLmFwcGVuZFZhcignUkRFUEVORFNfJyArIHBuICsgJy1kYmcnLCAnICcrJyAnLmpvaW4oc3BsaXRfZGJnX3BhY2thZ2VzKSkKKyAgICAgICAgZC5hcHBlbmRWYXIoJ1JERVBFTkRTXycgKyBwbiArICctc3RhdGljZGV2JywgJyAnKycgJy5qb2luKHNwbGl0X3N0YXRpY2Rldl9wYWNrYWdlcykpCit9CisKK1BBQ0tBR0VTUExJVEZVTkNTX3ByZXBlbmQgPSAibGx2bV9wb3B1bGF0ZV9wYWNrYWdlcyAiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbTQvbTQuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tNC9tNC5pbmMKaW5kZXggNGE4MzkyOS4uMjAwMjU5NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tNC9tNC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tNC9tNC5pbmMKQEAgLTEsNCArMSw1IEBACiBTVU1NQVJZID0gIlRyYWRpdGlvbmFsIFVuaXggbWFjcm8gcHJvY2Vzc29yIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9tNC9tNC5odG1sIgogREVTQ1JJUFRJT04gPSAiR05VIG00IGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSB0cmFkaXRpb25hbCBVbml4IG1hY3JvIHByb2Nlc3Nvci4gIEl0IGlzIG1vc3RseSBTVlI0IFwKIGNvbXBhdGlibGUgYWx0aG91Z2ggaXQgaGFzIHNvbWUgZXh0ZW5zaW9ucyAoZm9yIGV4YW1wbGUsIGhhbmRsaW5nIG1vcmUgdGhhbiA5IHBvc2l0aW9uYWwgcGFyYW1ldGVycyB0byBtYWNyb3MpLiBcCiBHTlUgTTQgYWxzbyBoYXMgYnVpbHQtaW4gZnVuY3Rpb25zIGZvciBpbmNsdWRpbmcgZmlsZXMsIHJ1bm5pbmcgc2hlbGwgY29tbWFuZHMsIGRvaW5nIGFyaXRobWV0aWMsIGV0Yy4iCkBAIC02LDUgKzcsNCBAQAogaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbwogCiBFWFRSQV9PRU1BS0UgKz0gIidpbmZvZGlyPSR7aW5mb2Rpcn0nIgotTERGTEFHU19wcmVwZW5kX2xpYmMtdWNsaWJjID0gIiAtbHJ0ICIKIFNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9tNC9tNC0ke1BWfS50YXIuZ3oiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21rZWxmaW1hZ2UvbWtlbGZpbWFnZS9jb252ZXJ0LmJpbi5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ta2VsZmltYWdlL21rZWxmaW1hZ2UvY29udmVydC5iaW4uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjZmYWE4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ta2VsZmltYWdlL21rZWxmaW1hZ2UvY29udmVydC5iaW4uYwpAQCAtMCwwICsxLDM0OCBAQAorMHhmYywgMHhmYSwgMHhhMywgMHg5YywgMHgwMiwgMHgwMSwgMHgwMCwgMHg4OSwgMHgxZCwgMHhhMCwgMHgwMiwgMHgwMSwgMHgwMCwgMHg4MywgMHhmYywgMHgwMCwKKzB4NzQsIDB4MDksIDB4OGIsIDB4NDQsIDB4MjQsIDB4MDQsIDB4YTMsIDB4YTQsIDB4MDIsIDB4MDEsIDB4MDAsIDB4OGIsIDB4MjUsIDB4ODAsIDB4MTQsIDB4MDEsCisweDAwLCAweDZhLCAweDAwLCAweDlkLCAweDMxLCAweGMwLCAweGJmLCAweGI4LCAweDE1LCAweDAxLCAweDAwLCAweGI5LCAweDQ0LCAweDU4LCAweDAxLCAweDAwLAorMHgyOSwgMHhmOSwgMHhmYywgMHhmMywgMHhhYSwgMHhiZSwgMHhiYSwgMHgwMiwgMHgwMSwgMHgwMCwgMHhiZiwgMHgwMCwgMHgxMCwgMHgwMiwgMHgwMCwgMHhiOSwKKzB4NzAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZjMsIDB4YTQsIDB4MGYsIDB4MDEsIDB4MTUsIDB4YjQsIDB4MDIsIDB4MDEsIDB4MDAsIDB4MGYsIDB4MDEsIDB4MWQsCisweGFlLCAweDAyLCAweDAxLCAweDAwLCAweGI4LCAweDE4LCAweDAwLCAweDAwLCAweDAwLCAweDhlLCAweGQ4LCAweDhlLCAweGMwLCAweDhlLCAweGUwLCAweDhlLAorMHhlOCwgMHg4ZSwgMHhkMCwgMHg2OCwgMHg5MCwgMHgxNCwgMHgwMSwgMHgwMCwgMHhmZiwgMHgzNSwgMHhhNCwgMHgwMiwgMHgwMSwgMHgwMCwgMHhmZiwgMHgzNSwKKzB4YTAsIDB4MDIsIDB4MDEsIDB4MDAsIDB4ZmYsIDB4MzUsIDB4OWMsIDB4MDIsIDB4MDEsIDB4MDAsIDB4ZTgsIDB4ZTMsIDB4MDgsIDB4MDAsIDB4MDAsIDB4ODksCisweGM2LCAweDgzLCAweGM0LCAweDEwLCAweDZhLCAweDAwLCAweDlkLCAweDMxLCAweGRiLCAweGExLCAweGFjLCAweDE0LCAweDAxLCAweDAwLCAweDgzLCAweGY4LAorMHgwMSwgMHg3NCwgMHgxMywgMHgzMSwgMHhjMCwgMHgzMSwgMHhjOSwgMHgzMSwgMHhkMiwgMHgzMSwgMHhmZiwgMHgzMSwgMHhlZCwgMHg2YSwgMHgxMCwgMHhhMSwKKzB4YTgsIDB4MTQsIDB4MDEsIDB4MDAsIDB4NTAsIDB4Y2IsIDB4ODksIDB4ZjAsIDB4YmUsIDB4MmEsIDB4MDMsIDB4MDEsIDB4MDAsIDB4YmYsIDB4MDAsIDB4MjAsCisweDAyLCAweDAwLCAweGI5LCAweDIwLCAweDAwLCAweDAwLCAweDAwLCAweGYzLCAweGE0LCAweDg5LCAweGM2LCAweDBmLCAweDAxLCAweDE1LCAweDJhLCAweDAzLAorMHgwMSwgMHgwMCwgMHgzMSwgMHhjMCwgMHgwZiwgMHhiYSwgMHhlOCwgMHgwNSwgMHgwZiwgMHgyMiwgMHhlMCwgMHhiZiwgMHgwMCwgMHgzMCwgMHgwMiwgMHgwMCwKKzB4MzEsIDB4YzAsIDB4YjksIDB4MDAsIDB4MTgsIDB4MDAsIDB4MDAsIDB4ZjMsIDB4YWIsIDB4YmYsIDB4MDAsIDB4MzAsIDB4MDIsIDB4MDAsIDB4OGQsIDB4ODcsCisweDA3LCAweDEwLCAweDAwLCAweDAwLCAweDg5LCAweDA3LCAweGJmLCAweDAwLCAweDQwLCAweDAyLCAweDAwLCAweDhkLCAweDg3LCAweDA3LCAweDEwLCAweDAwLAorMHgwMCwgMHhiOSwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4OSwgMHgwNywgMHgwNSwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHg4MywgMHhjNywgMHgwOCwKKzB4NDksIDB4NzUsIDB4ZjMsIDB4YmYsIDB4MDAsIDB4NTAsIDB4MDIsIDB4MDAsIDB4YjgsIDB4ODMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4YjksIDB4MDAsIDB4MDgsCisweDAwLCAweDAwLCAweDg5LCAweDA3LCAweDA1LCAweDAwLCAweDAwLCAweDIwLCAweDAwLCAweDgzLCAweGM3LCAweDA4LCAweDQ5LCAweDc1LCAweGYzLCAweGI4LAorMHgwMCwgMHgzMCwgMHgwMiwgMHgwMCwgMHgwZiwgMHgyMiwgMHhkOCwgMHhiOSwgMHg4MCwgMHgwMCwgMHgwMCwgMHhjMCwgMHgwZiwgMHgzMiwgMHgwZiwgMHhiYSwKKzB4ZTgsIDB4MDgsIDB4MGYsIDB4MzAsIDB4NmEsIDB4MTAsIDB4YTEsIDB4YTgsIDB4MTQsIDB4MDEsIDB4MDAsIDB4NTAsIDB4MzEsIDB4YzAsIDB4MGYsIDB4YmEsCisweGU4LCAweDFmLCAweDBmLCAweGJhLCAweGU4LCAweDAwLCAweDBmLCAweDIyLCAweGMwLCAweGNiLCAweDU1LCAweDg5LCAweGU1LCAweDUzLCAweDU2LCAweDU3LAorMHg4YiwgMHg3ZCwgMHgwOCwgMHg4MSwgMHhlZiwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHg4YiwgMHg3NSwgMHgwYywgMHg1NiwgMHhlOCwgMHhmYywgMHgwMCwKKzB4MDAsIDB4MDAsIDB4NjYsIDB4MzEsIDB4ZGIsIDB4NjYsIDB4YjgsIDB4MjAsIDB4ZTgsIDB4MDAsIDB4MDAsIDB4NjYsIDB4YmEsIDB4NTAsIDB4NDEsIDB4NGQsCisweDUzLCAweDY2LCAweGI5LCAweDE0LCAweDAwLCAweDAwLCAweDAwLCAweGNkLCAweDE1LCAweDcyLCAweDE4LCAweDY2LCAweDNkLCAweDUwLCAweDQxLCAweDRkLAorMHg1MywgMHg3NSwgMHgxMCwgMHg2NiwgMHg0ZSwgMHg2NiwgMHg4NSwgMHhmNiwgMHg3NCwgMHgwOSwgMHg4MywgMHhjNywgMHgxNCwgMHg2NiwgMHg4MywgMHhmYiwKKzB4MDAsIDB4NzUsIDB4ZDIsIDB4NjYsIDB4ZTgsIDB4ODIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTgsIDB4MjksIDB4ZjAsIDB4NWYsIDB4NWUsIDB4NWIsIDB4ODksCisweGVjLCAweDVkLCAweGMzLCAweDUzLCAweDU2LCAweDU3LCAweGU4LCAweGIzLCAweDAwLCAweDAwLCAweDAwLCAweGY5LCAweDMxLCAweGM5LCAweDMxLCAweGQyLAorMHhiOCwgMHgwMSwgMHhlOCwgMHhjZCwgMHgxNSwgMHg3MiwgMHgyOCwgMHg4MywgMHhmOSwgMHgwMCwgMHg3NSwgMHgwOSwgMHg4MywgMHhmYSwgMHgwMCwgMHg3NSwKKzB4MDQsIDB4ODksIDB4YzEsIDB4ODksIDB4ZGEsIDB4NjYsIDB4ODEsIDB4ZTIsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4NjYsIDB4YzEsIDB4ZTIsIDB4MDYsCisweDY2LCAweDg5LCAweGQwLCAweDY2LCAweDgxLCAweGUxLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDY2LCAweDAxLCAweGM4LCAweGViLCAweDAzLCAweDY2LAorMHgzMSwgMHhjMCwgMHg2NiwgMHhlOCwgMHgzMywgMHgwMCwgMHgwMCwgMHgwMCwgMHg1ZiwgMHg1ZSwgMHg1YiwgMHhjMywgMHg1MywgMHg1NiwgMHg1NywgMHhlOCwKKzB4NmEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YjQsIDB4ODgsIDB4Y2QsIDB4MTUsIDB4NjYsIDB4MjUsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4NjYsIDB4ZTgsCisweDE3LCAweDAwLCAweDAwLCAweDAwLCAweDVmLCAweDVlLCAweDViLCAweGMzLCAweGU4LCAweDUxLCAweDAwLCAweDAwLCAweDAwLCAweGNkLCAweDEyLCAweDg5LAorMHhjMSwgMHg2NiwgMHhlOCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2NiwgMHg4OSwgMHhjOCwgMHhjMywgMHhmYSwgMHgyZSwgMHg2NywgMHgwZiwgMHgwMSwKKzB4MTUsIDB4YjQsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MGYsIDB4MjAsIDB4YzAsIDB4NjYsIDB4ODMsIDB4YzgsIDB4MDEsIDB4MGYsIDB4MjIsIDB4YzAsIDB4NjYsCisweGVhLCAweDM3LCAweDAyLCAweDAxLCAweDAwLCAweDEwLCAweDAwLCAweGI4LCAweDE4LCAweDAwLCAweDAwLCAweDAwLCAweDhlLCAweGQ4LCAweDhlLCAweGMwLAorMHg4ZSwgMHhkMCwgMHg4MSwgMHhjNCwgMHgwMCwgMHgwMCwgMHgwMSwgMHgwMCwgMHgzMSwgMHhjMCwgMHg4ZSwgMHhlMCwgMHg4ZSwgMHhlOCwgMHg1OCwgMHgwNSwKKzB4MDAsIDB4MDAsIDB4MDEsIDB4MDAsIDB4NTAsIDB4MmUsIDB4MGYsIDB4MDEsIDB4MWQsIDB4YWUsIDB4MDIsIDB4MDEsIDB4MDAsIDB4YzMsIDB4NTgsIDB4MmQsCisweDAwLCAweDAwLCAweDAxLCAweDAwLCAweDUwLCAweDgxLCAweGVjLCAweDAwLCAweDAwLCAweDAxLCAweDAwLCAweGVhLCAweDcyLCAweDAyLCAweDAwLCAweDAwLAorMHgwOCwgMHgwMCwgMHgwZiwgMHgyMCwgMHhjMCwgMHg2NiwgMHg4MywgMHhlMCwgMHhmZSwgMHgwZiwgMHgyMiwgMHhjMCwgMHg2NiwgMHhlYSwgMHg4NCwgMHgwMiwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MTAsIDB4OGMsIDB4YzgsIDB4OGUsIDB4ZDgsIDB4OGUsIDB4YzAsIDB4OGUsIDB4ZDAsIDB4OGUsIDB4ZTAsIDB4OGUsIDB4ZTgsCisweDJlLCAweDY3LCAweDBmLCAweDAxLCAweDFkLCAweGE4LCAweDAyLCAweDAwLCAweDAwLCAweGZiLCAweDY2LCAweGMzLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NmYsIDB4MDAsIDB4MDAsIDB4MTAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDAxLCAweDliLCAweDAwLCAweDAwLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDAwLCAweDlhLAorMHhjZiwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5MiwgMHhjZiwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHgwMCwgMHgwMSwgMHg5MywKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OWEsCisweGNmLCAweDAwLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDAwLCAweDkyLCAweGNmLCAweDAwLCAweDIwLCAweDAwLCAweDAwLCAweDIwLCAweDAyLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhmZiwgMHhmZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5YSwKKzB4YWYsIDB4MDAsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OTIsIDB4Y2YsIDB4MDAsIDB4NTUsIDB4ODksIDB4YzEsIDB4ODksIDB4ZTUsIDB4YmEsCisweGZkLCAweDAzLCAweDAwLCAweDAwLCAweGVjLCAweGE4LCAweDIwLCAweDc0LCAweGZiLCAweGJhLCAweGY4LCAweDAzLCAweDAwLCAweDAwLCAweDg4LCAweGM4LAorMHhlZSwgMHhiYSwgMHhmZCwgMHgwMywgMHgwMCwgMHgwMCwgMHhlYywgMHhhOCwgMHg0MCwgMHg3NCwgMHhmYiwgMHg1ZCwgMHhjMywgMHg1NSwgMHg4MywgMHhmOCwKKzB4MGEsIDB4ODksIDB4ZTUsIDB4NTMsIDB4ODksIDB4YzMsIDB4NzUsIDB4MGEsIDB4YjgsIDB4MGQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTgsIDB4YzgsIDB4ZmYsCisweGZmLCAweGZmLCAweDg5LCAweGQ4LCAweDViLCAweDVkLCAweGViLCAweGMyLCAweDU1LCAweDg5LCAweGU1LCAweDU3LCAweDU2LCAweDUzLCAweDgzLCAweGVjLAorMHg0NCwgMHg4ZCwgMHg1ZCwgMHgwYywgMHg4YiwgMHg3ZCwgMHgwOCwgMHgwZiwgMHhiZSwgMHgwNywgMHg4NCwgMHhjMCwgMHgwZiwgMHg4NCwgMHg2OCwgMHgwMSwKKzB4MDAsIDB4MDAsIDB4M2MsIDB4MjUsIDB4NzQsIDB4MGQsIDB4ZTgsIDB4YzIsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ODksIDB4N2QsIDB4YmMsIDB4ZTksIDB4NGUsCisweDAxLCAweDAwLCAweDAwLCAweDhkLCAweDQ3LCAweDAxLCAweDg5LCAweDQ1LCAweGJjLCAweDhhLCAweDQ3LCAweDAxLCAweDNjLCAweDczLCAweDc1LCAweDFhLAorMHg4OSwgMHhkOCwgMHg4MywgMHhjMywgMHgwNCwgMHg4YiwgMHgzMCwgMHgwZiwgMHhiZSwgMHgwNiwgMHg4NCwgMHhjMCwgMHgwZiwgMHg4NCwgMHgyZiwgMHgwMSwKKzB4MDAsIDB4MDAsIDB4ZTgsIDB4OTYsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4NDYsIDB4ZWIsIDB4ZWQsIDB4M2MsIDB4NGMsIDB4NzUsIDB4MGQsIDB4OGQsIDB4NDcsCisweDAyLCAweGJlLCAweDNjLCAweDAwLCAweDAwLCAweDAwLCAweDg5LCAweDQ1LCAweGJjLCAweGViLCAweDM4LCAweDNjLCAweDZjLCAweDc1LCAweDBkLCAweDhkLAorMHg0NywgMHgwMiwgMHhiZSwgMHgxYywgMHgwMCwgMHgwMCwgMHgwMCwgMHg4OSwgMHg0NSwgMHhiYywgMHhlYiwgMHgyNywgMHhiZSwgMHgxYywgMHgwMCwgMHgwMCwKKzB4MDAsIDB4M2MsIDB4NjgsIDB4NzUsIDB4MWUsIDB4ODAsIDB4N2YsIDB4MDIsIDB4NjgsIDB4NzQsIDB4MGQsIDB4OGQsIDB4NDcsIDB4MDIsIDB4YmUsIDB4MGMsCisweDAwLCAweDAwLCAweDAwLCAweDg5LCAweDQ1LCAweGJjLCAweGViLCAweDBiLCAweDhkLCAweDQ3LCAweDAzLCAweGJlLCAweDA0LCAweDAwLCAweDAwLCAweDAwLAorMHg4OSwgMHg0NSwgMHhiYywgMHg4YiwgMHg0NSwgMHhiYywgMHg4YSwgMHgwMCwgMHg4OCwgMHhjMiwgMHg4MywgMHhjYSwgMHgyMCwgMHg4MCwgMHhmYSwgMHg3OCwKKzB4NzUsIDB4NWIsIDB4OGIsIDB4MTMsIDB4ODMsIDB4ZmUsIDB4MWMsIDB4N2UsIDB4MGUsIDB4OGIsIDB4NGIsIDB4MDQsIDB4ODksIDB4NTUsIDB4YjAsIDB4ODksCisweDRkLCAweGI0LCAweDgzLCAweGMzLCAweDA4LCAweGViLCAweDBiLCAweDMxLCAweGM5LCAweDg5LCAweDU1LCAweGIwLCAweDg5LCAweDRkLCAweGI0LCAweDgzLAorMHhjMywgMHgwNCwgMHg4MywgMHhlMCwgMHgyMCwgMHg4ZCwgMHg3ZCwgMHhjOCwgMHg4OCwgMHg0NSwgMHhiYiwgMHg4OSwgMHhmMSwgMHg4YiwgMHg1NSwgMHhiNCwKKzB4OGIsIDB4NDUsIDB4YjAsIDB4MGYsIDB4YWQsIDB4ZDAsIDB4ZDMsIDB4ZWEsIDB4ZjYsIDB4YzEsIDB4MjAsIDB4NzQsIDB4MDIsIDB4ODksIDB4ZDAsIDB4ODMsCisweGUwLCAweDBmLCAweDhhLCAweDU1LCAweGJiLCAweDQ3LCAweDBhLCAweDkwLCAweDE0LCAweDEwLCAweDAxLCAweDAwLCAweDg4LCAweDU3LCAweGZmLCAweDgzLAorMHhlOSwgMHgwNCwgMHg3OSwgMHhkOSwgMHhjMSwgMHhlZSwgMHgwMiwgMHg4ZCwgMHg3NCwgMHgzNSwgMHhjOSwgMHhlYiwgMHg2MiwgMHgzYywgMHg2NCwgMHg3NSwKKzB4NGEsIDB4OGIsIDB4MDMsIDB4ODMsIDB4ZmUsIDB4MWMsIDB4N2UsIDB4MDUsIDB4ODMsIDB4YzMsIDB4MDgsIDB4ZWIsIDB4MDMsIDB4ODMsIDB4YzMsIDB4MDQsCisweDhkLCAweDRkLCAweGM4LCAweDg1LCAweGMwLCAweDc5LCAweDA5LCAweGM2LCAweDQ1LCAweGM4LCAweDJkLCAweDhkLCAweDRkLCAweGM5LCAweGY3LCAweGQ4LAorMHg4OSwgMHhjZSwgMHhiZiwgMHgwYSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5OSwgMHg0NiwgMHhmNywgMHhmZiwgMHg4MywgMHhjMiwgMHgzMCwgMHg4NSwgMHhjMCwKKzB4ODgsIDB4NTYsIDB4ZmYsIDB4NzUsIDB4ZjIsIDB4ODksIDB4ZjAsIDB4NDgsIDB4MzksIDB4YzEsIDB4NzMsIDB4MjMsIDB4MGYsIDB4YjYsIDB4MzgsIDB4OGEsCisweDExLCAweDQxLCAweDg4LCAweDEwLCAweDg5LCAweGZhLCAweDg4LCAweDUxLCAweGZmLCAweGViLCAweGVjLCAweDNjLCAweDYzLCAweDc1LCAweDBhLCAweDhiLAorMHgwMywgMHg4MywgMHhjMywgMHgwNCwgMHg4OCwgMHg0NSwgMHhjOCwgMHhlYiwgMHgwMywgMHg4OCwgMHg0NSwgMHhjOCwgMHg4ZCwgMHg3NSwgMHhjOSwgMHg4ZCwKKzB4N2QsIDB4YzgsIDB4MzksIDB4ZjcsIDB4NzMsIDB4MGIsIDB4MGYsIDB4YmUsIDB4MDcsIDB4NDcsIDB4ZTgsIDB4NmUsIDB4ZmUsIDB4ZmYsIDB4ZmYsIDB4ZWIsCisweGYxLCAweDhiLCAweDdkLCAweGJjLCAweDQ3LCAweGU5LCAweDhkLCAweGZlLCAweGZmLCAweGZmLCAweDgzLCAweGM0LCAweDQ0LCAweDViLCAweDVlLCAweDVmLAorMHg1ZCwgMHhjMywgMHg1NSwgMHgzMSwgMHhjOSwgMHg4OSwgMHhlNSwgMHg1NiwgMHg1MywgMHgzMSwgMHhkYiwgMHg4MywgMHhlYywgMHgxMCwgMHgzOSwgMHhkMywKKzB4NzQsIDB4MjMsIDB4MGYsIDB4YjYsIDB4MzQsIDB4MTgsIDB4ZjYsIDB4YzMsIDB4MDEsIDB4NzQsIDB4MDMsIDB4YzEsIDB4ZTYsIDB4MDgsIDB4MDEsIDB4ZjEsCisweDgxLCAweGY5LCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDc2LCAweDBhLCAweDg5LCAweGNlLCAweGMxLCAweGVlLCAweDEwLCAweDAxLCAweGYxLCAweDBmLAorMHhiNywgMHhjOSwgMHg0MywgMHhlYiwgMHhkOSwgMHg4OCwgMHg0ZCwgMHhmNiwgMHhjMSwgMHhlOSwgMHgwOCwgMHg4OCwgMHg0ZCwgMHhmNywgMHgwZiwgMHhiNywKKzB4NDUsIDB4ZjYsIDB4ODMsIDB4YzQsIDB4MTAsIDB4NWIsIDB4NWUsIDB4NWQsIDB4YzMsIDB4NTUsIDB4ODksIDB4ZTUsIDB4NTcsIDB4NTYsIDB4NTMsIDB4ODksCisweGMzLCAweDUxLCAweDg5LCAweDU1LCAweGYwLCAweDNiLCAweDVkLCAweGYwLCAweDczLCAweDVmLCAweDgxLCAweDNiLCAweDRjLCAweDQyLCAweDQ5LCAweDRmLAorMHg3NCwgMHgwNSwgMHg4MywgMHhjMywgMHgxMCwgMHhlYiwgMHhlZSwgMHg4MywgMHg3YiwgMHgwNCwgMHgxOCwgMHg3NSwgMHhmNSwgMHhiYSwgMHgxOCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4ODksIDB4ZDgsIDB4ZTgsIDB4ODksIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZjcsIDB4ZDAsIDB4NjYsIDB4ODUsIDB4YzAsIDB4NzUsIDB4ZTIsCisweDhkLCAweDczLCAweDE4LCAweDhiLCAweDUzLCAweDBjLCAweDg5LCAweGYwLCAweGU4LCAweDc1LCAweGZmLCAweGZmLCAweGZmLCAweGY3LCAweGQwLCAweDBmLAorMHhiNywgMHhjMCwgMHgzOSwgMHg0MywgMHgxMCwgMHg3NSwgMHhjYiwgMHg4YiwgMHg0YiwgMHgwYywgMHgzMSwgMHhjMCwgMHgwMSwgMHhmMSwgMHgzOSwgMHhmMSwKKzB4NzYsIDB4MTAsIDB4ODksIDB4Y2YsIDB4OGIsIDB4NTYsIDB4MDQsIDB4MjksIDB4ZjcsIDB4MzksIDB4ZmEsIDB4NzcsIDB4MDUsIDB4NDAsIDB4MDEsIDB4ZDYsCisweGViLCAweGVjLCAweDM5LCAweDQzLCAweDE0LCAweDc1LCAweGFiLCAweGViLCAweDAyLCAweDMxLCAweGRiLCAweDVhLCAweDg5LCAweGQ4LCAweDViLCAweDVlLAorMHg1ZiwgMHg1ZCwgMHhjMywgMHg1NSwgMHhiYSwgMHgwMCwgMHgxMCwgMHgwMCwgMHgwMCwgMHg4OSwgMHhlNSwgMHg1NywgMHg1NiwgMHg1MywgMHg4OSwgMHhjMywKKzB4MzEsIDB4YzAsIDB4NTEsIDB4ZTgsIDB4NzEsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ODUsIDB4YzAsIDB4NzUsIDB4MTcsIDB4YmEsIDB4MDAsIDB4MDAsIDB4MTAsCisweDAwLCAweGI4LCAweDAwLCAweDAwLCAweDBmLCAweDAwLCAweGU4LCAweDVlLCAweGZmLCAweGZmLCAweGZmLCAweDg1LCAweGMwLCAweDc1LCAweDA0LCAweDMxLAorMHhjMCwgMHhlYiwgMHgyZiwgMHg4YiwgMHg1MCwgMHgwNCwgMHgwMSwgMHhjMiwgMHg4MywgMHgzYSwgMHgxMSwgMHg3NSwgMHgxNiwgMHg4YiwgMHg3MiwgMHgwOCwKKzB4ODksIDB4ZjIsIDB4ODksIDB4ZjAsIDB4ODEsIDB4YzIsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4ZTgsIDB4M2EsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ODUsCisweGMwLCAweDc0LCAweGRjLCAweDg5LCAweDQzLCAweDI4LCAweGM3LCAweDQzLCAweDI0LCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweGI4LCAweDAxLCAweDAwLAorMHgwMCwgMHgwMCwgMHg1YSwgMHg1YiwgMHg1ZSwgMHg1ZiwgMHg1ZCwgMHhjMywgMHg1NSwgMHg4OSwgMHhlNSwgMHg1NywgMHg1NiwgMHg1MywgMHg4MywgMHhlYywKKzB4MTQsIDB4ODksIDB4NTUsIDB4ZTgsIDB4OGIsIDB4NzUsIDB4MGMsIDB4OGIsIDB4NWQsIDB4MDgsIDB4ODksIDB4NzUsIDB4ZTQsIDB4ODksIDB4NGQsIDB4ZWMsCisweDBmLCAweGI2LCAweGIwLCAweGU4LCAweDAxLCAweDAwLCAweDAwLCAweDg5LCAweDVkLCAweGUwLCAweDhiLCAweDdkLCAweDEwLCAweDgzLCAweGZlLCAweDFmLAorMHg3ZiwgMHgzMiwgMHg4OSwgMHhmMywgMHg2YiwgMHhmNiwgMHgxNCwgMHgwMSwgMHhjNiwgMHg0MywgMHg4OSwgMHg5NiwgMHhkMCwgMHgwMiwgMHgwMCwgMHgwMCwKKzB4ODksIDB4OGUsIDB4ZDQsIDB4MDIsIDB4MDAsIDB4MDAsIDB4OGIsIDB4NTUsIDB4ZTAsIDB4OGIsIDB4NGQsIDB4ZTQsIDB4ODksIDB4OTYsIDB4ZDgsIDB4MDIsCisweDAwLCAweDAwLCAweDg5LCAweDhlLCAweGRjLCAweDAyLCAweDAwLCAweDAwLCAweDg5LCAweGJlLCAweGUwLCAweDAyLCAweDAwLCAweDAwLCAweDg4LCAweDk4LAorMHhlOCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg0ZiwgMHg3NSwgMHg2NSwgMHg4YiwgMHg1ZCwgMHhlMCwgMHg4YiwgMHg3NSwgMHhlNCwgMHgwMywgMHg1ZCwgMHhlOCwKKzB4MTMsIDB4NzUsIDB4ZWMsIDB4ODksIDB4ZDksIDB4ODksIDB4ZjMsIDB4YmUsIDB4ZmYsIDB4ZmYsIDB4M2YsIDB4MDAsIDB4ODEsIDB4ZmIsIDB4ZmYsIDB4MDMsCisweDAwLCAweDAwLCAweDc3LCAweDEzLCAweDBmLCAweGFjLCAweGQ5LCAweDBhLCAweDg5LCAweGNlLCAweDgxLCAweGY5LCAweGZmLCAweGZmLCAweDNmLCAweDAwLAorMHg3NiwgMHgwNSwgMHhiZSwgMHhmZiwgMHhmZiwgMHgzZiwgMHgwMCwgMHg4YiwgMHhiOCwgMHhlMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4ZCwgMHg5NywgMHgwMCwKKzB4MDQsIDB4MDAsIDB4MDAsIDB4MzksIDB4ZjIsIDB4NzMsIDB4MjUsIDB4OGQsIDB4OTYsIDB4MDAsIDB4ZmMsIDB4ZmYsIDB4ZmYsIDB4ODksIDB4OTAsIDB4ZTAsCisweDAxLCAweDAwLCAweDAwLCAweDgxLCAweGZhLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDc3LCAweDBiLCAweDY2LCAweDgxLCAweGVlLCAweDAwLCAweDA0LAorMHg2NiwgMHg4OSwgMHg3MCwgMHgwMiwgMHhlYiwgMHgwNiwgMHg2NiwgMHhjNywgMHg0MCwgMHgwMiwgMHgwMCwgMHhmYywgMHg4MywgMHhjNCwgMHgxNCwgMHg1YiwKKzB4NWUsIDB4NWYsIDB4NWQsIDB4YzMsIDB4NTUsIDB4ODksIDB4ZTUsIDB4OGIsIDB4NTUsIDB4MDgsIDB4ZWMsIDB4NWQsIDB4YzMsIDB4NTUsIDB4ODksIDB4ZTUsCisweDhiLCAweDU1LCAweDA4LCAweDY2LCAweGVkLCAweDVkLCAweGMzLCAweDU1LCAweDg5LCAweGU1LCAweDhiLCAweDU1LCAweDA4LCAweGVkLCAweDVkLCAweGMzLAorMHg1NSwgMHg4OSwgMHhlNSwgMHg4YiwgMHg0NSwgMHgwOCwgMHg4YiwgMHg1NSwgMHgwYywgMHhlZSwgMHg1ZCwgMHhjMywgMHg1NSwgMHg4OSwgMHhlNSwgMHg4YiwKKzB4NDUsIDB4MDgsIDB4OGIsIDB4NTUsIDB4MGMsIDB4NjYsIDB4ZWYsIDB4NWQsIDB4YzMsIDB4NTUsIDB4ODksIDB4ZTUsIDB4OGIsIDB4NDUsIDB4MDgsIDB4OGIsCisweDU1LCAweDBjLCAweGVmLCAweDVkLCAweGMzLCAweDU1LCAweDMxLCAweGMwLCAweDg5LCAweGU1LCAweDhiLCAweDU1LCAweDA4LCAweDNiLCAweDQ1LCAweDBjLAorMHg3NCwgMHgwOSwgMHg4MCwgMHgzYywgMHgwMiwgMHgwMCwgMHg3NCwgMHgwMywgMHg0MCwgMHhlYiwgMHhmMiwgMHg1ZCwgMHhjMywgMHg1NSwgMHgzMSwgMHhkMiwKKzB4ODksIDB4ZTUsIDB4OGIsIDB4NDUsIDB4MDgsIDB4OGIsIDB4NGQsIDB4MGMsIDB4M2IsIDB4NTUsIDB4MTAsIDB4NzQsIDB4MDYsIDB4ODgsIDB4MGMsIDB4MTAsCisweDQyLCAweGViLCAweGY1LCAweDVkLCAweGMzLCAweDU1LCAweDMxLCAweGQyLCAweDg5LCAweGU1LCAweDUzLCAweDhiLCAweDQ1LCAweDA4LCAweDhiLCAweDRkLAorMHgwYywgMHgzYiwgMHg1NSwgMHgxMCwgMHg3NCwgMHgwOSwgMHg4YSwgMHgxYywgMHgxMSwgMHg4OCwgMHgxYywgMHgxMCwgMHg0MiwgMHhlYiwgMHhmMiwgMHg1YiwKKzB4NWQsIDB4YzMsIDB4NTUsIDB4MzEsIDB4YzksIDB4ODksIDB4ZTUsIDB4M2IsIDB4NGQsIDB4MTAsIDB4NzQsIDB4MTcsIDB4OGIsIDB4NDUsIDB4MDgsIDB4MGYsCisweGI2LCAweDEwLCAweDhiLCAweDQ1LCAweDBjLCAweDBmLCAweGI2LCAweDAwLCAweDM4LCAweGMyLCAweDc0LCAweDA0LCAweDI5LCAweGQwLCAweGViLCAweDA1LAorMHg0MSwgMHhlYiwgMHhlNCwgMHgzMSwgMHhjMCwgMHg1ZCwgMHhjMywgMHg1NSwgMHg4OSwgMHhlNSwgMHg1NywgMHg1NiwgMHg1MywgMHg4YiwgMHg0NSwgMHgwOCwKKzB4NjgsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4OGIsIDB4NGQsIDB4MTAsIDB4OGQsIDB4OTgsIDB4MDAsIDB4MDgsIDB4MDAsIDB4MDAsIDB4NTMsIDB4ZTgsCisweDcxLCAweGZmLCAweGZmLCAweGZmLCAweDAxLCAweGMzLCAweDVlLCAweDgxLCAweGY5LCAweGZlLCAweDAwLCAweDAwLCAweDAwLCAweDVmLCAweDhkLCAweDczLAorMHgwMSwgMHhjNiwgMHgwMywgMHgyMCwgMHg3ZSwgMHgwNSwgMHhiOSwgMHhmZiwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1MSwgMHhmZiwgMHg3NSwgMHgwYywgMHhlOCwKKzB4NTEsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4NWEsIDB4NTksIDB4NTAsIDB4ZmYsIDB4NzUsIDB4MGMsIDB4ODksIDB4YzcsIDB4NTYsIDB4ZTgsIDB4NzMsIDB4ZmYsCisweGZmLCAweGZmLCAweDgzLCAweGM0LCAweDBjLCAweGM2LCAweDQ0LCAweDNiLCAweDAxLCAweDAwLCAweDhkLCAweDY1LCAweGY0LCAweDViLCAweDVlLCAweDVmLAorMHg1ZCwgMHhjMywgMHg1NSwgMHg4OSwgMHhlNSwgMHg4YiwgMHg0NSwgMHgxMCwgMHg4YiwgMHg1NSwgMHgwYywgMHg4OSwgMHg0NSwgMHgwYywgMHg4YiwgMHg0NSwKKzB4MDgsIDB4ODksIDB4NTUsIDB4MTAsIDB4OGIsIDB4NDAsIDB4MTAsIDB4ODksIDB4NDUsIDB4MDgsIDB4NWQsIDB4ZWIsIDB4OGEsIDB4NTUsIDB4ODksIDB4ZTUsCisweDU3LCAweDU2LCAweDUzLCAweDhiLCAweDVkLCAweDA4LCAweDY4LCAweDAwLCAweDEwLCAweDAwLCAweDAwLCAweDZhLCAweDAwLCAweGZmLCAweDczLCAweDEwLAorMHhlOCwgMHgxOCwgMHhmZiwgMHhmZiwgMHhmZiwgMHg4YiwgMHg0MywgMHgxMCwgMHhjNywgMHg0MCwgMHgwZSwgMHgxOSwgMHgwMSwgMHgxMCwgMHgwMCwgMHhjNywKKzB4MDAsIDB4MDAsIDB4MTksIDB4MDAsIDB4MDAsIDB4YzcsIDB4NDAsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NTAsIDB4YzYsIDB4ODAsIDB4ZTgsIDB4MDEsCisweDAwLCAweDAwLCAweDAwLCAweDhkLCAweGI4LCAweDAwLCAweDA4LCAweDAwLCAweDAwLCAweDY2LCAweGM3LCAweDQwLCAweDBhLCAweDAwLCAweDAwLCAweGM3LAorMHg0MCwgMHgyMCwgMHgzZiwgMHhhMywgMHgwMCwgMHgwOCwgMHg4OSwgMHhiOCwgMHgyOCwgMHgwMiwgMHgwMCwgMHgwMCwgMHg4YiwgMHg0MywgMHgwYywgMHg2OCwKKzB4ZmYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OGQsIDB4NDgsIDB4MjgsIDB4NTEsIDB4ZTgsIDB4YjgsIDB4ZmUsIDB4ZmYsIDB4ZmYsIDB4NWEsIDB4NWUsIDB4ODksCisweGM2LCAweDUwLCAweDUxLCAweDU3LCAweGU4LCAweGRjLCAweGZlLCAweGZmLCAweGZmLCAweDhiLCAweDQzLCAweDEwLCAweDgzLCAweGMwLCAweDQwLCAweGM2LAorMHg4NCwgMHgzMCwgMHhjMCwgMHgwNywgMHgwMCwgMHgwMCwgMHgwMCwgMHg2YSwgMHg0MCwgMHg2YSwgMHgwMCwgMHg1MCwgMHhlOCwgMHhhYywgMHhmZSwgMHhmZiwKKzB4ZmYsIDB4ODMsIDB4YzQsIDB4MjQsIDB4OGIsIDB4NDMsIDB4MTAsIDB4ODMsIDB4ZTgsIDB4ODAsIDB4NmEsIDB4MjAsIDB4NmEsIDB4MDAsIDB4NTAsIDB4ZTgsCisweDk5LCAweGZlLCAweGZmLCAweGZmLCAweDhiLCAweDUzLCAweDBjLCAweDhiLCAweDQzLCAweDEwLCAweDA1LCAweDAyLCAweDAyLCAweDAwLCAweDAwLCAweDhiLAorMHg0YSwgMHgxNCwgMHg2NiwgMHg4YiwgMHg1MiwgMHgxNiwgMHg2NiwgMHg4OSwgMHg0OCwgMHhmNiwgMHg2NiwgMHg4OSwgMHg1MCwgMHhmYSwgMHg2NiwgMHhjNywKKzB4ODAsIDB4OWUsIDB4ZmUsIDB4ZmYsIDB4ZmYsIDB4MDAsIDB4MDAsIDB4YzcsIDB4NDAsIDB4ZGUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjYsIDB4YzcsCisweDgwLCAweDAwLCAweGZlLCAweGZmLCAweGZmLCAweDAwLCAweDAwLCAweDY2LCAweGM3LCAweDQwLCAweGYwLCAweGZmLCAweGZmLCAweGM2LCAweDQwLCAweGZkLAorMHgwMCwgMHg2YSwgMHgwNCwgMHg2OCwgMHgyNSwgMHgxMCwgMHgwMSwgMHgwMCwgMHg1MCwgMHhlOCwgMHg2NywgMHhmZSwgMHhmZiwgMHhmZiwgMHg4YiwgMHg0MywKKzB4MTAsIDB4NjYsIDB4YzcsIDB4ODAsIDB4MTAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4NTAsIDB4MDAsIDB4ODMsIDB4YzQsIDB4MTgsIDB4OGIsIDB4NGIsIDB4MGMsCisweDY2LCAweGM3LCAweDgwLCAweDA2LCAweDAyLCAweDAwLCAweDAwLCAweDAxLCAweDAyLCAweGM3LCAweDgwLCAweDE4LCAweDAyLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHhjNywgMHg4MCwgMHgxYywgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4YiwgMHg1MSwgMHgyNCwKKzB4ODUsIDB4ZDIsIDB4NzQsIDB4MGYsIDB4OGIsIDB4NDksIDB4MjAsIDB4ODksIDB4OTAsIDB4MWMsIDB4MDIsIDB4MDAsIDB4MDAsIDB4ODksIDB4ODgsIDB4MTgsCisweDAyLCAweDAwLCAweDAwLCAweGM3LCAweDQzLCAweDJjLCAweDAxLCAweDAwLCAweDAwLCAweDAwLCAweDhkLCAweDY1LCAweGY0LCAweDViLCAweDVlLCAweDVmLAorMHg1ZCwgMHhjMywgMHg1NSwgMHg4OSwgMHhlNSwgMHg1NywgMHg1NiwgMHg1MywgMHg4MywgMHhlYywgMHg0YywgMHhjNywgMHg0NSwgMHhjOCwgMHgwMCwgMHgwMCwKKzB4MDIsIDB4MDAsIDB4OGIsIDB4NDUsIDB4MDgsIDB4ODksIDB4NDUsIDB4YjgsIDB4OGIsIDB4NDUsIDB4MGMsIDB4ODksIDB4NDUsIDB4YmMsIDB4OGIsIDB4NDUsCisweDEwLCAweDg5LCAweDQ1LCAweGMwLCAweDhiLCAweDQ1LCAweDE0LCAweDg5LCAweDQ1LCAweGM0LCAweDhkLCAweDQ1LCAweGI4LCAweDUwLCAweGU4LCAweDlhLAorMHhmZSwgMHhmZiwgMHhmZiwgMHg4YiwgMHg0NSwgMHhiOCwgMHg1OSwgMHgzZCwgMHgwMiwgMHhiMCwgMHhhZCwgMHgyYiwgMHg3NSwgMHgwOSwgMHhjNywgMHg0NSwKKzB4Y2MsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZWIsIDB4MjEsIDB4MzEsIDB4ZjYsIDB4M2QsIDB4MDcsIDB4YjAsIDB4MTEsIDB4MGEsIDB4NzUsIDB4MmMsCisweDhiLCAweDQ1LCAweGJjLCAweDhiLCAweDEwLCAweGU4LCAweDU4LCAweGZiLCAweGZmLCAweGZmLCAweGY3LCAweGQwLCAweDY2LCAweDg1LCAweGMwLCAweDc1LAorMHgwZSwgMHhjNywgMHg0NSwgMHhkMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhiZSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhlYiwgMHgwZCwgMHg1MCwKKzB4NjgsIDB4MmEsIDB4MTAsIDB4MDEsIDB4MDAsIDB4ZTgsIDB4YWUsIDB4ZjksIDB4ZmYsIDB4ZmYsIDB4NTgsIDB4NWEsIDB4MzEsIDB4ZGIsIDB4ODEsIDB4N2QsCisweGI4LCAweDA3LCAweGIwLCAweDFmLCAweDBlLCAweDc1LCAweDAzLCAweDhiLCAweDVkLCAweGJjLCAweDhiLCAweDQ1LCAweGMwLCAweDg1LCAweGMwLCAweDc0LAorMHgwYSwgMHg4MSwgMHgzOCwgMHgwNywgMHhiMCwgMHgxZiwgMHgwZSwgMHg3NSwgMHgwMiwgMHg4OSwgMHhjMywgMHg4NSwgMHhmNiwgMHgwZiwgMHg4NSwgMHhjZSwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4ODUsIDB4ZGIsIDB4MGYsIDB4ODQsIDB4YzYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NjYsIDB4ODMsIDB4N2IsIDB4MDgsIDB4MDAsCisweDc0LCAweDBmLCAweDhiLCAweDUzLCAweDA0LCAweDg5LCAweGQ4LCAweGU4LCAweGY2LCAweGZhLCAweGZmLCAweGZmLCAweGY3LCAweGQwLCAweDBmLCAweGI3LAorMHhmMCwgMHg4YiwgMHg0YiwgMHgwNCwgMHg4ZCwgMHg0MywgMHgwYywgMHgwMSwgMHhkOSwgMHgzMSwgMHhmZiwgMHg4OSwgMHg0ZCwgMHhiNCwgMHgzOSwgMHg0NSwKKzB4YjQsIDB4NzYsIDB4MWYsIDB4OGIsIDB4MDgsIDB4OGIsIDB4NTAsIDB4MDQsIDB4ODMsIDB4YzEsIDB4MDMsIDB4ODMsIDB4YzIsIDB4MDMsIDB4ODMsIDB4ZTEsCisweGZjLCAweDgzLCAweGUyLCAweGZjLCAweDhkLCAweDU0LCAweDExLCAweDBjLCAweDAxLCAweGQwLCAweDM5LCAweDQ1LCAweGI0LCAweDcyLCAweDAzLCAweDQ3LAorMHhlYiwgMHhkYywgMHg4MSwgMHgzYiwgMHgwNywgMHhiMCwgMHgxZiwgMHgwZSwgMHg3NSwgMHgxYiwgMHg4NSwgMHhmNiwgMHg3NSwgMHgxNywgMHgwZiwgMHhiNywKKzB4NDMsIDB4MGEsIDB4MzksIDB4ZjgsIDB4NzUsIDB4MGYsIDB4YzcsIDB4NDUsIDB4ZDQsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODksIDB4NWQsIDB4YzAsCisweGU5LCAweDk1LCAweDAwLCAweDAwLCAweDAwLCAweDUwLCAweDY4LCAweDRkLCAweDEwLCAweDAxLCAweDAwLCAweGU4LCAweDA4LCAweGY5LCAweGZmLCAweGZmLAorMHg1NiwgMHg2OCwgMHg2NywgMHgxMCwgMHgwMSwgMHgwMCwgMHhlOCwgMHhmZCwgMHhmOCwgMHhmZiwgMHhmZiwgMHg1NywgMHg2OCwgMHg3OSwgMHgxMCwgMHgwMSwKKzB4MDAsIDB4ZTgsIDB4ZjIsIDB4ZjgsIDB4ZmYsIDB4ZmYsIDB4NTMsIDB4NjgsIDB4OGIsIDB4MTAsIDB4MDEsIDB4MDAsIDB4ZTgsIDB4ZTcsIDB4ZjgsIDB4ZmYsCisweGZmLCAweDgzLCAweGM0LCAweDIwLCAweGZmLCAweDczLCAweDA0LCAweDY4LCAweDlkLCAweDEwLCAweDAxLCAweDAwLCAweGU4LCAweGQ3LCAweGY4LCAweGZmLAorMHhmZiwgMHhmZiwgMHgzMywgMHg2OCwgMHhhZiwgMHgxMCwgMHgwMSwgMHgwMCwgMHhlOCwgMHhjYiwgMHhmOCwgMHhmZiwgMHhmZiwgMHgwZiwgMHhiNywgMHg0MywKKzB4MGEsIDB4NTAsIDB4NjgsIDB4YzEsIDB4MTAsIDB4MDEsIDB4MDAsIDB4ZTgsIDB4YmMsIDB4ZjgsIDB4ZmYsIDB4ZmYsIDB4ODMsIDB4YzQsIDB4MTgsIDB4ZWIsCisweDA0LCAweDg1LCAweGY2LCAweDc1LCAweDM1LCAweDUxLCAweDY4LCAweGQzLCAweDEwLCAweDAxLCAweDAwLCAweGU4LCAweGE4LCAweGY4LCAweGZmLCAweGZmLAorMHhmZiwgMHg3NSwgMHhiOCwgMHg2OCwgMHhlZSwgMHgxMCwgMHgwMSwgMHgwMCwgMHhlOCwgMHg5YiwgMHhmOCwgMHhmZiwgMHhmZiwgMHhmZiwgMHg3NSwgMHhiYywKKzB4NjgsIDB4ZjcsIDB4MTAsIDB4MDEsIDB4MDAsIDB4ZTgsIDB4OGUsIDB4ZjgsIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4NzUsIDB4YzAsIDB4NjgsIDB4MDAsIDB4MTEsCisweDAxLCAweDAwLCAweGU4LCAweDgxLCAweGY4LCAweGZmLCAweGZmLCAweDgzLCAweGM0LCAweDIwLCAweGM3LCAweDQ1LCAweGQ4LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHhjNywgMHg0NSwgMHhkYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4MywgMHg3ZCwgMHhkNCwgMHgwMCwgMHgwZiwgMHg4NCwgMHhmYywgMHgwMCwKKzB4MDAsIDB4MDAsIDB4OGIsIDB4N2QsIDB4YzAsIDB4OGQsIDB4NTcsIDB4MGMsIDB4MDMsIDB4N2YsIDB4MDQsIDB4MzksIDB4ZDcsIDB4NzYsIDB4NTEsIDB4OGIsCisweDMyLCAweDhiLCAweDVhLCAweDA0LCAweDg5LCAweDVkLCAweGI0LCAweDgzLCAweGMzLCAweDAzLCAweDhkLCAweDRlLCAweDAzLCAweDgzLCAweGUzLCAweGZjLAorMHg4MywgMHhlMSwgMHhmYywgMHg4ZCwgMHg0MiwgMHgwYywgMHgwMSwgMHhjYiwgMHgwMSwgMHhjMywgMHgzOSwgMHhkZiwgMHg3MiwgMHgzMiwgMHg4MywgMHg3YSwKKzB4MDgsIDB4MDEsIDB4NzUsIDB4MjgsIDB4ODUsIDB4ZjYsIDB4NzUsIDB4MjQsIDB4ODksIDB4NTUsIDB4YjAsIDB4ODksIDB4NGQsIDB4YWMsIDB4NTIsIDB4NmEsCisweDAwLCAweDZhLCAweDAwLCAweDUwLCAweGU4LCAweDI5LCAweGZjLCAweGZmLCAweGZmLCAweDgzLCAweGM0LCAweDEwLCAweDg5LCAweGM2LCAweDg1LCAweGMwLAorMHg4YiwgMHg1NSwgMHhiMCwgMHg4YiwgMHg0ZCwgMHhhYywgMHgwZiwgMHg4NCwgMHgxZCwgMHgwNCwgMHgwMCwgMHgwMCwgMHg4OSwgMHhkYSwgMHhlYiwgMHhhYiwKKzB4MzEsIDB4ZDIsIDB4MzEsIDB4ZmYsIDB4MzEsIDB4ZjYsIDB4ODUsIDB4ZDIsIDB4MGYsIDB4OTUsIDB4YzMsIDB4ZjcsIDB4YzYsIDB4MDEsIDB4MDAsIDB4MDAsCisweDAwLCAweDc1LCAweDM0LCAweDg0LCAweGRiLCAweDc0LCAweDMwLCAweDMxLCAweGY2LCAweDgzLCAweDdhLCAweDA0LCAweDBhLCAweDc1LCAweDI4LCAweDg5LAorMHg1NSwgMHhiNCwgMHg1MCwgMHg2YSwgMHgwYSwgMHg2OCwgMHgzNSwgMHgxMSwgMHgwMSwgMHgwMCwgMHg1NywgMHhlOCwgMHhlMiwgMHhmYiwgMHhmZiwgMHhmZiwKKzB4ODMsIDB4YzQsIDB4MTAsIDB4OGIsIDB4NTUsIDB4YjQsIDB4ODUsIDB4YzAsIDB4NzUsIDB4MGQsIDB4OGQsIDB4NDUsIDB4YjgsIDB4ZTgsIDB4MTEsIDB4ZmEsCisweGZmLCAweGZmLCAweDhiLCAweDU1LCAweGI0LCAweDg5LCAweGM2LCAweDg1LCAweGY2LCAweDc1LCAweDBmLCAweDg0LCAweGRiLCAweDc0LCAweDBiLCAweDMxLAorMHhjMCwgMHg4MywgMHg3YSwgMHgwNCwgMHgwMCwgMHgwZiwgMHg5NCwgMHhjMCwgMHg4OSwgMHhjNiwgMHg4NSwgMHhmNiwgMHg3NSwgMHgyNSwgMHg4NCwgMHhkYiwKKzB4NzQsIDB4MjEsIDB4ODMsIDB4N2EsIDB4MDQsIDB4MDEsIDB4NzUsIDB4MWIsIDB4NTAsIDB4NmEsIDB4MDEsIDB4NjgsIDB4NjYsIDB4MTAsIDB4MDEsIDB4MDAsCisweDU3LCAweGU4LCAweDljLCAweGZiLCAweGZmLCAweGZmLCAweDgzLCAweGM0LCAweDEwLCAweDg1LCAweGMwLCAweDBmLCAweDk0LCAweGMwLCAweDBmLCAweGI2LAorMHhjMCwgMHg4OSwgMHhjNiwgMHg4NSwgMHhmNiwgMHg3NSwgMHgxMywgMHg4NCwgMHhkYiwgMHg3NCwgMHgwZiwgMHg1NywgMHg2OCwgMHgwYSwgMHgxMSwgMHgwMSwKKzB4MDAsIDB4ZTgsIDB4NzIsIDB4ZjcsIDB4ZmYsIDB4ZmYsIDB4NWYsIDB4NTgsIDB4ZWIsIDB4MDQsIDB4ODUsIDB4ZjYsIDB4NzUsIDB4MTMsIDB4OGQsIDB4NDUsCisweGI4LCAweGU4LCAweGFkLCAweGY5LCAweGZmLCAweGZmLCAweDg1LCAweGMwLCAweDc1LCAweDA3LCAweGM3LCAweDQ1LCAweGQ4LCAweDAxLCAweDAwLCAweDAwLAorMHgwMCwgMHg1MSwgMHg2OCwgMHgyNSwgMHgxMSwgMHgwMSwgMHgwMCwgMHhlOCwgMHg0YywgMHhmNywgMHhmZiwgMHhmZiwgMHg1YiwgMHg4MywgMHg3ZCwgMHhkYywKKzB4MDAsIDB4NWUsIDB4NzQsIDB4MGQsIDB4NTAsIDB4NjgsIDB4MzQsIDB4MTEsIDB4MDEsIDB4MDAsIDB4ZTgsIDB4MzksIDB4ZjcsIDB4ZmYsIDB4ZmYsIDB4NTgsCisweDVhLCAweDgzLCAweDdkLCAweGQ4LCAweDAwLCAweDc0LCAweDBkLCAweDUzLCAweDY4LCAweDNmLCAweDExLCAweDAxLCAweDAwLCAweGU4LCAweDI2LCAweGY3LAorMHhmZiwgMHhmZiwgMHg1ZSwgMHg1ZiwgMHg1MCwgMHg2OCwgMHg2NSwgMHgxMCwgMHgwMSwgMHgwMCwgMHhlOCwgMHgxOSwgMHhmNywgMHhmZiwgMHhmZiwgMHg1YSwKKzB4ODMsIDB4N2QsIDB4ZGMsIDB4MDAsIDB4NTksIDB4NzUsIDB4MzEsIDB4ODMsIDB4N2QsIDB4ZDgsIDB4MDAsIDB4MGYsIDB4ODQsIDB4MTYsIDB4MDEsIDB4MDAsCisweDAwLCAweDUwLCAweDUwLCAweDZhLCAweDIwLCAweDY4LCAweGM0LCAweDU1LCAweDAxLCAweDAwLCAweGU4LCAweGJiLCAweGY0LCAweGZmLCAweGZmLCAweGJiLAorMHhjMCwgMHg1NSwgMHgwMSwgMHgwMCwgMHhhMywgMHhjMCwgMHg1NSwgMHgwMSwgMHgwMCwgMHg4MywgMHhjNCwgMHgxMCwgMHhjNywgMHg0NSwgMHhiNCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4ZTksIDB4YWEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OGIsIDB4NDUsIDB4ZTAsIDB4OGQsIDB4NTgsIDB4MTgsIDB4OGIsIDB4NDgsCisweDBjLCAweDAxLCAweGQ5LCAweDg5LCAweDRkLCAweGI0LCAweDM5LCAweDVkLCAweGI0LCAweDc2LCAweGJjLCAweDhiLCAweDU1LCAweGI0LCAweDhiLCAweDQzLAorMHgwNCwgMHgyOSwgMHhkYSwgMHgzOSwgMHhkMCwgMHg3NywgMHhiMCwgMHg4MywgMHgzYiwgMHgwMSwgMHg3NSwgMHg0ZiwgMHg4MywgMHhlOCwgMHgwOCwgMHhiOSwKKzB4MTQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MzEsIDB4ZDIsIDB4OGQsIDB4NzMsIDB4MDgsIDB4ZjcsIDB4ZjEsIDB4ODksIDB4NDUsIDB4YjAsIDB4MzEsIDB4ZmYsCisweDM5LCAweDdkLCAweGIwLCAweDdlLCAweDJmLCAweDgzLCAweGZmLCAweDFmLCAweDdmLCAweDJhLCAweDMxLCAweGMwLCAweDhiLCAweDE2LCAweDgzLCAweDdlLAorMHgxMCwgMHgwMSwgMHgwZiwgMHg5NSwgMHhjMCwgMHg4MywgMHhlYywgMHgwNCwgMHg0MCwgMHg4YiwgMHg0ZSwgMHgwNCwgMHg0NywgMHg1MCwgMHg4YiwgMHg0NSwKKzB4YzgsIDB4ZmYsIDB4NzYsIDB4MGMsIDB4ZmYsIDB4NzYsIDB4MDgsIDB4ODMsIDB4YzYsIDB4MTQsIDB4ZTgsIDB4MjksIDB4ZjksIDB4ZmYsIDB4ZmYsIDB4ODMsCisweGM0LCAweDEwLCAweGViLCAweGNjLCAweGM3LCAweDQ1LCAweGU0LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAzLCAweDViLCAweDA0LCAweGViLCAweDk2LAorMHg4YiwgMHg0MywgMHgxNCwgMHg4YiwgMHg1MywgMHgwNCwgMHg4YiwgMHg0YiwgMHgwOCwgMHg4YiwgMHg3MywgMHgwYywgMHg4YiwgMHg3YiwgMHgxMCwgMHg4MywKKzB4ZjgsIDB4MDEsIDB4NzUsIDB4MDcsIDB4YzcsIDB4NDUsIDB4ZTQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODMsIDB4ZWMsIDB4MDQsIDB4ODMsIDB4YzMsCisweDE0LCAweDUwLCAweDhiLCAweDQ1LCAweGIwLCAweDU3LCAweDU2LCAweGU4LCAweGVjLCAweGY4LCAweGZmLCAweGZmLCAweGZmLCAweDQ1LCAweGI0LCAweDgzLAorMHhjNCwgMHgxMCwgMHg4YiwgMHg0NSwgMHhiNCwgMHgzYiwgMHgwNSwgMHhjMCwgMHg1NSwgMHgwMSwgMHgwMCwgMHg4YiwgMHg0NSwgMHhjOCwgMHg4OSwgMHg0NSwKKzB4YjAsIDB4N2MsIDB4YmQsIDB4ZTgsIDB4M2IsIDB4ZjQsIDB4ZmYsIDB4ZmYsIDB4OGIsIDB4N2QsIDB4YjAsIDB4ODksIDB4ODcsIDB4ZTAsIDB4MDEsIDB4MDAsCisweDAwLCAweDhiLCAweDVkLCAweGM4LCAweGU4LCAweDczLCAweGY0LCAweGZmLCAweGZmLCAweDY2LCAweDg5LCAweDQzLCAweDAyLCAweDhiLCAweDQ1LCAweGM4LAorMHg4MywgMHhiOCwgMHhlMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3NSwgMHgwNywgMHg2NiwgMHg4MywgMHg3OCwgMHgwMiwgMHgwMCwgMHg3NCwgMHgwNywKKzB4YzcsIDB4NDUsIDB4ZTQsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODMsIDB4N2QsIDB4Y2MsIDB4MDAsIDB4MGYsIDB4ODQsIDB4YjksIDB4MDAsIDB4MDAsCisweDAwLCAweDhiLCAweDc1LCAweGJjLCAweDhiLCAweDU1LCAweGM4LCAweDgzLCAweDdkLCAweGU0LCAweDAwLCAweDhiLCAweDFlLCAweDc0LCAweDRkLCAweGY2LAorMHhjMywgMHgwMSwgMHg3NCwgMHg0OCwgMHg4YiwgMHg0NiwgMHgwOCwgMHgwNSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgzZCwgMHhmZiwgMHhmZiwgMHgzZiwKKzB4MDAsIDB4NzYsIDB4MDUsIDB4YjgsIDB4ZmYsIDB4ZmYsIDB4M2YsIDB4MDAsIDB4OGIsIDB4YmEsIDB4ZTAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4OGQsIDB4OGYsCisweDAwLCAweDA0LCAweDAwLCAweDAwLCAweDM5LCAweGMxLCAweDczLCAweDI0LCAweDhkLCAweDg4LCAweDAwLCAweGZjLCAweGZmLCAweGZmLCAweDg5LCAweDhhLAorMHhlMCwgMHgwMSwgMHgwMCwgMHgwMCwgMHg4MSwgMHhmOSwgMHhmZiwgMHhmZiwgMHgwMCwgMHgwMCwgMHg3NywgMHgwYSwgMHg2NiwgMHgyZCwgMHgwMCwgMHgwNCwKKzB4NjYsIDB4ODksIDB4NDIsIDB4MDIsIDB4ZWIsIDB4MDYsIDB4NjYsIDB4YzcsIDB4NDIsIDB4MDIsIDB4MDAsIDB4ZmMsIDB4ODAsIDB4ZTMsIDB4MDQsIDB4NzQsCisweDBmLCAweDUwLCAweDZhLCAweGZmLCAweGZmLCAweDc2LCAweDEwLCAweDUyLCAweGU4LCAweGFhLCAweGY5LCAweGZmLCAweGZmLCAweDgzLCAweGM0LCAweDEwLAorMHg4MywgMHg3ZCwgMHhlNCwgMHgwMCwgMHgwZiwgMHg4NCwgMHhiZCwgMHgwMSwgMHgwMCwgMHgwMCwgMHhmNiwgMHgwNiwgMHg0MCwgMHgwZiwgMHg4NCwgMHhiNCwKKzB4MDEsIDB4MDAsIDB4MDAsIDB4OGIsIDB4NWUsIDB4MzAsIDB4OGIsIDB4NDYsIDB4MmMsIDB4MDEsIDB4ZDgsIDB4OGIsIDB4N2QsIDB4YzgsIDB4ODksIDB4NDUsCisweGI0LCAweDhiLCAweDczLCAweGZjLCAweDM5LCAweDVkLCAweGI0LCAweDBmLCAweDg2LCAweDlhLCAweDAxLCAweDAwLCAweDAwLCAweDhiLCAweDEzLCAweDhiLAorMHg0YiwgMHgwNCwgMHg1MCwgMHg4OSwgMHhmOCwgMHhmZiwgMHg3MywgMHgxMCwgMHhmZiwgMHg3MywgMHgwYywgMHhmZiwgMHg3MywgMHgwOCwgMHgwMSwgMHhmMywKKzB4ZTgsIDB4ZTMsIDB4ZjcsIDB4ZmYsIDB4ZmYsIDB4ODMsIDB4YzQsIDB4MTAsIDB4ZWIsIDB4ZGEsIDB4ODMsIDB4N2QsIDB4ZDAsIDB4MDAsIDB4MGYsIDB4ODQsCisweGFhLCAweDAwLCAweDAwLCAweDAwLCAweDhiLCAweDc1LCAweGJjLCAweDhiLCAweDQ2LCAweDBjLCAweDg1LCAweGMwLCAweDc0LCAweDEwLCAweDUyLCAweDUwLAorMHhmZiwgMHg3NiwgMHgwOCwgMHhmZiwgMHg3NSwgMHhjOCwgMHhlOCwgMHgzYywgMHhmOSwgMHhmZiwgMHhmZiwgMHg4MywgMHhjNCwgMHgxMCwgMHg4YiwgMHg0NiwKKzB4MTQsIDB4OGIsIDB4NWUsIDB4MTAsIDB4ODksIDB4NDUsIDB4YjQsIDB4ODMsIDB4N2QsIDB4YjQsIDB4MDAsIDB4MGYsIDB4ODQsIDB4NDYsIDB4MDEsIDB4MDAsCisweDAwLCAweDgzLCAweDNiLCAweDAxLCAweDc1LCAweDZiLCAweDgzLCAweDdkLCAweGU0LCAweDAwLCAweDc0LCAweDY1LCAweDhiLCAweDQ1LCAweGM4LCAweGI5LAorMHgxNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg4OSwgMHg0NSwgMHhiMCwgMHg4YiwgMHg0MywgMHgwNCwgMHg4MywgMHhlOCwgMHgwOCwgMHgzMSwgMHhkMiwgMHhmNywKKzB4ZjEsIDB4ODksIDB4NDUsIDB4YWMsIDB4OGQsIDB4NzMsIDB4MDgsIDB4MzEsIDB4ZmYsIDB4MzksIDB4N2QsIDB4YWMsIDB4N2UsIDB4M2MsIDB4ODMsIDB4ZmYsCisweDFmLCAweDdmLCAweDM3LCAweDhiLCAweDQ2LCAweDEwLCAweDhkLCAweDUwLCAweGZmLCAweGI4LCAweDAyLCAweDAwLCAweDAwLCAweDAwLCAweDgzLCAweGZhLAorMHgwMywgMHg3NywgMHgwNywgMHgwZiwgMHhiNiwgMHg4MiwgMHgxMCwgMHgxMCwgMHgwMSwgMHgwMCwgMHg4MywgMHhlYywgMHgwNCwgMHg4YiwgMHgxNiwgMHg4YiwKKzB4NGUsIDB4MDQsIDB4NDcsIDB4NTAsIDB4OGIsIDB4NDUsIDB4YjAsIDB4ZmYsIDB4NzYsIDB4MGMsIDB4ZmYsIDB4NzYsIDB4MDgsIDB4ODMsIDB4YzYsIDB4MTQsCisweGU4LCAweDQzLCAweGY3LCAweGZmLCAweGZmLCAweDgzLCAweGM0LCAweDEwLCAweGViLCAweGJmLCAweGM3LCAweDQ1LCAweGU0LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHg4YiwgMHg0MywgMHgwNCwgMHgwMSwgMHhjMywgMHgyOSwgMHg0NSwgMHhiNCwgMHhlOSwgMHg3OSwgMHhmZiwgMHhmZiwgMHhmZiwgMHg4MywgMHg3ZCwKKzB4ZDQsIDB4MDAsIDB4MGYsIDB4ODQsIDB4YmYsIDB4MDAsIDB4MDAsIDB4MDAsIDB4OGIsIDB4NTUsIDB4YzAsIDB4OGIsIDB4N2EsIDB4MDQsIDB4OGQsIDB4NDIsCisweDBjLCAweDAxLCAweGQ3LCAweDM5LCAweGM3LCAweDBmLCAweDg2LCAweGFjLCAweDAwLCAweDAwLCAweDAwLCAweDhiLCAweDEwLCAweDhkLCAweDQ4LCAweDBjLAorMHg4ZCwgMHg1YSwgMHgwMywgMHg4MywgMHhlMywgMHhmYywgMHg4ZCwgMHgzNCwgMHgxOSwgMHg4YiwgMHg1OCwgMHgwNCwgMHg4OSwgMHg3NSwgMHhiNCwgMHg4ZCwKKzB4NzMsIDB4MDMsIDB4ODMsIDB4ZTYsIDB4ZmMsIDB4MDMsIDB4NzUsIDB4YjQsIDB4ODksIDB4NzUsIDB4YjAsIDB4MzksIDB4ZjcsIDB4MGYsIDB4ODIsIDB4ODQsCisweDAwLCAweDAwLCAweDAwLCAweDhiLCAweDM1LCAweDcwLCAweDE0LCAweDAxLCAweDAwLCAweDhiLCAweDQwLCAweDA4LCAweDg5LCAweDc1LCAweGFjLCAweDM5LAorMHgwNSwgMHg3OCwgMHgxNCwgMHgwMSwgMHgwMCwgMHg4YiwgMHgzNSwgMHg3NCwgMHgxNCwgMHgwMSwgMHgwMCwgMHg3NSwgMHgyNywgMHgzYiwgMHg1NSwgMHhhYywKKzB4NzUsIDB4MjIsIDB4NTAsIDB4NTIsIDB4NTYsIDB4NTEsIDB4ZTgsIDB4MTcsIDB4ZjgsIDB4ZmYsIDB4ZmYsIDB4ODMsIDB4YzQsIDB4MTAsIDB4ODUsIDB4YzAsCisweDc1LCAweDEyLCAweDUyLCAweDhkLCAweDQ1LCAweGI4LCAweGZmLCAweDc1LCAweGI0LCAweDUzLCAweDUwLCAweGZmLCAweDE1LCAweDdjLCAweDE0LCAweDAxLAorMHgwMCwgMHg4MywgMHhjNCwgMHgxMCwgMHg4YiwgMHg0NSwgMHhiMCwgMHhlYiwgMHg4YSwgMHg4ZCwgMHg3YywgMHgwYSwgMHgwYywgMHg4MywgMHg3ZCwgMHhiNCwKKzB4MDcsIDB4MGYsIDB4ODUsIDB4ZGYsIDB4ZmIsIDB4ZmYsIDB4ZmYsIDB4ODksIDB4NTUsIDB4YjQsIDB4NTAsIDB4NmEsIDB4MDcsIDB4NjgsIDB4NDAsIDB4MTEsCisweDAxLCAweDAwLCAweDU3LCAweGU4LCAweGRhLCAweGY3LCAweGZmLCAweGZmLCAweDgzLCAweGM0LCAweDEwLCAweDhiLCAweDU1LCAweGI0LCAweDg1LCAweGMwLAorMHgwZiwgMHg4NSwgMHhjMCwgMHhmYiwgMHhmZiwgMHhmZiwgMHhjNywgMHg0NSwgMHhkOCwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhiZSwgMHgwMSwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4ZTksIDB4YWYsIDB4ZmIsIDB4ZmYsIDB4ZmYsIDB4YjAsIDB4ODAsIDB4ZTYsIDB4NzAsIDB4MzEsIDB4YzAsIDB4ZTYsIDB4ZjAsIDB4ZTYsCisweGYxLCAweGIwLCAweDExLCAweGU2LCAweDIwLCAweGU2LCAweGEwLCAweGIwLCAweDIwLCAweGU2LCAweDIxLCAweGIwLCAweDI4LCAweGU2LCAweGExLCAweGIwLAorMHgwNCwgMHhlNiwgMHgyMSwgMHhiMCwgMHgwMiwgMHhlNiwgMHhhMSwgMHhiMCwgMHgwMSwgMHhlNiwgMHgyMSwgMHhlNiwgMHhhMSwgMHhiMCwgMHhmZiwgMHhlNiwKKzB4YTEsIDB4YjAsIDB4ZmIsIDB4ZTYsIDB4MjEsIDB4OGIsIDB4NDUsIDB4YzgsIDB4OGQsIDB4NjUsIDB4ZjQsIDB4NWIsIDB4NWUsIDB4NWYsIDB4NWQsIDB4YzMsCisweDAxLCAweDAyLCAweDAzLCAweDA0LCAweDMwLCAweDMxLCAweDMyLCAweDMzLCAweDM0LCAweDM1LCAweDM2LCAweDM3LCAweDM4LCAweDM5LCAweDQxLCAweDQyLAorMHg0MywgMHg0NCwgMHg0NSwgMHg0NiwgMHgwMCwgMHg0OCwgMHg2NCwgMHg3MiwgMHg1MywgMHgwMCwgMHg0MiwgMHg2MSwgMHg2NCwgMHgyMCwgMHg3NSwgMHg2ZSwKKzB4NjksIDB4NjYsIDB4NmYsIDB4NzIsIDB4NmQsIDB4MjAsIDB4NjIsIDB4NmYsIDB4NmYsIDB4NzQsIDB4MjAsIDB4NjgsIDB4NjUsIDB4NjEsIDB4NjQsIDB4NjUsCisweDcyLCAweDIwLCAweDYzLCAweDY4LCAweDY1LCAweDYzLCAweDZiLCAweDczLCAweDc1LCAweDZkLCAweDIxLCAweDBhLCAweDAwLCAweDQyLCAweDYxLCAweDY0LAorMHgyMCwgMHg0NSwgMHg0YywgMHg0NiwgMHgyMCwgMHg3MCwgMHg2MSwgMHg3MiwgMHg2MSwgMHg2ZCwgMHg2NSwgMHg3NCwgMHg2NSwgMHg3MiwgMHgyMCwgMHg3NCwKKzB4NjEsIDB4NjIsIDB4NmMsIDB4NjUsIDB4MjEsIDB4MGEsIDB4MDAsIDB4MjAsIDB4MjAsIDB4MjAsIDB4NjMsIDB4NjgsIDB4NjUsIDB4NjMsIDB4NmIsIDB4NzMsCisweDc1LCAweDZkLCAweDIwLCAweDNkLCAweDIwLCAweDI1LCAweDc4LCAweDBhLCAweDAwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDIwLCAweDYzLAorMHg2ZiwgMHg3NSwgMHg2ZSwgMHg3NCwgMHgyMCwgMHgzZCwgMHgyMCwgMHgyNSwgMHg3OCwgMHgwYSwgMHgwMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwgMHgyMCwKKzB4MjAsIDB4MjAsIDB4MjAsIDB4NjgsIDB4NjQsIDB4NzIsIDB4MjAsIDB4M2QsIDB4MjAsIDB4MjUsIDB4NzgsIDB4MGEsIDB4MDAsIDB4MjAsIDB4MjAsIDB4MjAsCisweDIwLCAweDIwLCAweDYyLCAweDVmLCAweDczLCAweDY5LCAweDdhLCAweDY1LCAweDIwLCAweDNkLCAweDIwLCAweDI1LCAweDc4LCAweDBhLCAweDAwLCAweDYyLAorMHg1ZiwgMHg3MywgMHg2OSwgMHg2NywgMHg2ZSwgMHg2MSwgMHg3NCwgMHg3NSwgMHg3MiwgMHg2NSwgMHgyMCwgMHgzZCwgMHgyMCwgMHgyNSwgMHg3OCwgMHgwYSwKKzB4MDAsIDB4MjAsIDB4MjAsIDB4NjIsIDB4NWYsIDB4NzIsIDB4NjUsIDB4NjMsIDB4NmYsIDB4NzIsIDB4NjQsIDB4NzMsIDB4MjAsIDB4M2QsIDB4MjAsIDB4MjUsCisweDc4LCAweDBhLCAweDAwLCAweDU1LCAweDZlLCAweDZiLCAweDZlLCAweDZmLCAweDc3LCAweDZlLCAweDIwLCAweDYyLCAweDZmLCAweDZmLCAweDc0LCAweDZjLAorMHg2ZiwgMHg2MSwgMHg2NCwgMHg2NSwgMHg3MiwgMHgyMCwgMHg2MywgMHg2YywgMHg2MSwgMHg3MywgMHg3MywgMHgyMSwgMHgwYSwgMHgwMCwgMHg3NCwgMHg3OSwKKzB4NzAsIDB4NjUsIDB4M2QsIDB4MjUsIDB4NzgsIDB4MGEsIDB4MDAsIDB4NjQsIDB4NjEsIDB4NzQsIDB4NjEsIDB4M2QsIDB4MjUsIDB4NzgsIDB4MGEsIDB4MDAsCisweDcwLCAweDYxLCAweDcyLCAweDYxLCAweDZkLCAweDNkLCAweDI1LCAweDc4LCAweDBhLCAweDAwLCAweDU1LCAweDZlLCAweDZiLCAweDZlLCAweDZmLCAweDc3LAorMHg2ZSwgMHgyMCwgMHg2NiwgMHg2OSwgMHg3MiwgMHg2ZCwgMHg3NywgMHg2MSwgMHg3MiwgMHg2NSwgMHgyMCwgMHg3NCwgMHg3OSwgMHg3MCwgMHg2NSwgMHgzYSwKKzB4MjAsIDB4MjUsIDB4NzMsIDB4MGEsIDB4MDAsIDB4NDYsIDB4NjksIDB4NzIsIDB4NmQsIDB4NzcsIDB4NjEsIDB4NzIsIDB4NjUsIDB4MjAsIDB4NzQsIDB4NzksCisweDcwLCAweDY1LCAweDNhLCAweDAwLCAweDIwLCAweDRjLCAweDY5LCAweDZlLCAweDc1LCAweDc4LCAweDQyLCAweDQ5LCAweDRmLCAweDUzLCAweDAwLCAweDIwLAorMHg1MCwgMHg0MywgMHg0MiwgMHg0OSwgMHg0ZiwgMHg1MywgMHgwMCwgMHgwMCwgMHgxNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDEsIDB4N2EsIDB4NTIsIDB4MDAsIDB4MDEsIDB4N2MsIDB4MDgsIDB4MDEsIDB4MWIsIDB4MGMsIDB4MDQsIDB4MDQsIDB4ODgsIDB4MDEsIDB4MDAsIDB4MDAsCisweDFjLCAweDAwLCAweDAwLCAweDAwLCAweDFjLCAweDAwLCAweDAwLCAweDAwLCAweGUyLCAweGYxLCAweGZmLCAweGZmLCAweDIzLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHg0MSwgMHgwZSwgMHgwOCwgMHg4NSwgMHgwMiwgMHg0NCwgMHgwZCwgMHgwNSwgMHg1ZCwgMHhjNSwgMHgwYywgMHgwNCwgMHgwNCwgMHgwMCwgMHgwMCwKKzB4MjAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4M2MsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ZTUsIDB4ZjEsIDB4ZmYsIDB4ZmYsIDB4MWIsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDQxLCAweDBlLCAweDA4LCAweDg1LCAweDAyLCAweDQ1LCAweDBkLCAweDA1LCAweDQxLCAweDgzLCAweDAzLCAweDUxLCAweGMzLCAweDQxLCAweGM1LAorMHgwYywgMHgwNCwgMHgwNCwgMHgwMCwgMHgyYywgMHgwMCwgMHgwMCwgMHgwMCwgMHg2MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhkYywgMHhmMSwgMHhmZiwgMHhmZiwKKzB4OGEsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4MGUsIDB4MDgsIDB4ODUsIDB4MDIsIDB4NDIsIDB4MGQsIDB4MDUsIDB4NDYsIDB4ODcsIDB4MDMsCisweDg2LCAweDA0LCAweDgzLCAweDA1LCAweDAzLCAweDdkLCAweDAxLCAweGMzLCAweDQxLCAweGM2LCAweDQxLCAweGM3LCAweDQxLCAweGM1LCAweDBjLCAweDA0LAorMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgyNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg5MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzNiwgMHhmMywgMHhmZiwgMHhmZiwKKzB4NDcsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDEsIDB4MGUsIDB4MDgsIDB4ODUsIDB4MDIsIDB4NDQsIDB4MGQsIDB4MDUsIDB4NDIsIDB4ODYsIDB4MDMsCisweDgzLCAweDA0LCAweDdkLCAweGMzLCAweDQxLCAweGM2LCAweDQxLCAweGM1LCAweDBjLCAweDA0LCAweDA0LCAweDAwLCAweDI4LCAweDAwLCAweDAwLCAweDAwLAorMHhiOCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg1NSwgMHhmMywgMHhmZiwgMHhmZiwgMHg3YSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgwZSwgMHgwOCwKKzB4ODUsIDB4MDIsIDB4NDIsIDB4MGQsIDB4MDUsIDB4NDMsIDB4ODcsIDB4MDMsIDB4ODYsIDB4MDQsIDB4ODMsIDB4MDUsIDB4MDIsIDB4NzAsIDB4YzMsIDB4NDEsCisweGM2LCAweDQxLCAweGM3LCAweDQxLCAweGM1LCAweDBjLCAweDA0LCAweDA0LCAweDI4LCAweDAwLCAweDAwLCAweDAwLCAweGU0LCAweDAwLCAweDAwLCAweDAwLAorMHhhMywgMHhmMywgMHhmZiwgMHhmZiwgMHg2NSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgwZSwgMHgwOCwgMHg4NSwgMHgwMiwgMHg0NywgMHgwZCwKKzB4MDUsIDB4NDMsIDB4ODcsIDB4MDMsIDB4ODYsIDB4MDQsIDB4ODMsIDB4MDUsIDB4MDIsIDB4NTYsIDB4YzMsIDB4NDEsIDB4YzYsIDB4NDEsIDB4YzcsIDB4NDEsCisweGM1LCAweDBjLCAweDA0LCAweDA0LCAweDI4LCAweDAwLCAweDAwLCAweDAwLCAweDEwLCAweDAxLCAweDAwLCAweDAwLCAweGRjLCAweGYzLCAweGZmLCAweGZmLAorMHhjYywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgwZSwgMHgwOCwgMHg4NSwgMHgwMiwgMHg0MiwgMHgwZCwgMHgwNSwgMHg0NiwgMHg4NywgMHgwMywKKzB4ODYsIDB4MDQsIDB4ODMsIDB4MDUsIDB4MDIsIDB4YmYsIDB4YzMsIDB4NDEsIDB4YzYsIDB4NDEsIDB4YzcsIDB4NDEsIDB4YzUsIDB4MGMsIDB4MDQsIDB4MDQsCisweDFjLCAweDAwLCAweDAwLCAweDAwLCAweDNjLCAweDAxLCAweDAwLCAweDAwLCAweDdjLCAweGY0LCAweGZmLCAweGZmLCAweDA5LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHg0MSwgMHgwZSwgMHgwOCwgMHg4NSwgMHgwMiwgMHg0MiwgMHgwZCwgMHgwNSwgMHg0NSwgMHhjNSwgMHgwYywgMHgwNCwgMHgwNCwgMHgwMCwgMHgwMCwKKzB4MWMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NWMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4NjUsIDB4ZjQsIDB4ZmYsIDB4ZmYsIDB4MGEsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDQxLCAweDBlLCAweDA4LCAweDg1LCAweDAyLCAweDQyLCAweDBkLCAweDA1LCAweDQ2LCAweGM1LCAweDBjLCAweDA0LCAweDA0LCAweDAwLCAweDAwLAorMHgxYywgMHgwMCwgMHgwMCwgMHgwMCwgMHg3YywgMHgwMSwgMHgwMCwgMHgwMCwgMHg0ZiwgMHhmNCwgMHhmZiwgMHhmZiwgMHgwOSwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4NDEsIDB4MGUsIDB4MDgsIDB4ODUsIDB4MDIsIDB4NDIsIDB4MGQsIDB4MDUsIDB4NDUsIDB4YzUsIDB4MGMsIDB4MDQsIDB4MDQsIDB4MDAsIDB4MDAsCisweDFjLCAweDAwLCAweDAwLCAweDAwLCAweDljLCAweDAxLCAweDAwLCAweDAwLCAweDM4LCAweGY0LCAweGZmLCAweGZmLCAweDBjLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHg0MSwgMHgwZSwgMHgwOCwgMHg4NSwgMHgwMiwgMHg0MiwgMHgwZCwgMHgwNSwgMHg0OCwgMHhjNSwgMHgwYywgMHgwNCwgMHgwNCwgMHgwMCwgMHgwMCwKKzB4MWMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YmMsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MjQsIDB4ZjQsIDB4ZmYsIDB4ZmYsIDB4MGQsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDQxLCAweDBlLCAweDA4LCAweDg1LCAweDAyLCAweDQyLCAweDBkLCAweDA1LCAweDQ5LCAweGM1LCAweDBjLCAweDA0LCAweDA0LCAweDAwLCAweDAwLAorMHgxYywgMHgwMCwgMHgwMCwgMHgwMCwgMHhkYywgMHgwMSwgMHgwMCwgMHgwMCwgMHgxMSwgMHhmNCwgMHhmZiwgMHhmZiwgMHgwYywgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4NDEsIDB4MGUsIDB4MDgsIDB4ODUsIDB4MDIsIDB4NDIsIDB4MGQsIDB4MDUsIDB4NDgsIDB4YzUsIDB4MGMsIDB4MDQsIDB4MDQsIDB4MDAsIDB4MDAsCisweDFjLCAweDAwLCAweDAwLCAweDAwLCAweGZjLCAweDAxLCAweDAwLCAweDAwLCAweGZkLCAweGYzLCAweGZmLCAweGZmLCAweDE4LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHg0MSwgMHgwZSwgMHgwOCwgMHg4NSwgMHgwMiwgMHg0NCwgMHgwZCwgMHgwNSwgMHg1MiwgMHhjNSwgMHgwYywgMHgwNCwgMHgwNCwgMHgwMCwgMHgwMCwKKzB4MWMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MWMsIDB4MDIsIDB4MDAsIDB4MDAsIDB4ZjUsIDB4ZjMsIDB4ZmYsIDB4ZmYsIDB4MTgsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDQxLCAweDBlLCAweDA4LCAweDg1LCAweDAyLCAweDQ0LCAweDBkLCAweDA1LCAweDUyLCAweGM1LCAweDBjLCAweDA0LCAweDA0LCAweDAwLCAweDAwLAorMHgyMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgzYywgMHgwMiwgMHgwMCwgMHgwMCwgMHhlZCwgMHhmMywgMHhmZiwgMHhmZiwgMHgxZCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4NDEsIDB4MGUsIDB4MDgsIDB4ODUsIDB4MDIsIDB4NDQsIDB4MGQsIDB4MDUsIDB4NDEsIDB4ODMsIDB4MDMsIDB4NTUsIDB4YzMsIDB4NDEsIDB4YzUsCisweDBjLCAweDA0LCAweDA0LCAweDAwLCAweDFjLCAweDAwLCAweDAwLCAweDAwLCAweDYwLCAweDAyLCAweDAwLCAweDAwLCAweGU2LCAweGYzLCAweGZmLCAweGZmLAorMHgyNSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg0MSwgMHgwZSwgMHgwOCwgMHg4NSwgMHgwMiwgMHg0NCwgMHgwZCwgMHgwNSwgMHg1ZiwgMHhjNSwgMHgwYywKKzB4MDQsIDB4MDQsIDB4MDAsIDB4MDAsIDB4MjgsIDB4MDAsIDB4MDAsIDB4MDAsIDB4ODAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4ZWIsIDB4ZjMsIDB4ZmYsIDB4ZmYsCisweDViLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDQxLCAweDBlLCAweDA4LCAweDg1LCAweDAyLCAweDQyLCAweDBkLCAweDA1LCAweDQzLCAweDg3LCAweDAzLAorMHg4NiwgMHgwNCwgMHg4MywgMHgwNSwgMHgwMiwgMHg1MSwgMHhjMywgMHg0MSwgMHhjNiwgMHg0MSwgMHhjNywgMHg0MSwgMHhjNSwgMHgwYywgMHgwNCwgMHgwNCwKKzB4MWMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4YWMsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MWEsIDB4ZjQsIDB4ZmYsIDB4ZmYsIDB4MWIsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDQxLCAweDBlLCAweDA4LCAweDg1LCAweDAyLCAweDQyLCAweDBkLCAweDA1LCAweDU2LCAweGM1LCAweDBjLCAweDA0LCAweDA0LCAweDAwLCAweDAwLAorMHgyYywgMHgwMCwgMHgwMCwgMHgwMCwgMHhjYywgMHgwMiwgMHgwMCwgMHgwMCwgMHgxNSwgMHhmNCwgMHhmZiwgMHhmZiwgMHgzNSwgMHgwMSwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4NDEsIDB4MGUsIDB4MDgsIDB4ODUsIDB4MDIsIDB4NDIsIDB4MGQsIDB4MDUsIDB4NDMsIDB4ODcsIDB4MDMsIDB4ODYsIDB4MDQsIDB4ODMsIDB4MDUsCisweDAzLCAweDJiLCAweDAxLCAweGMzLCAweDQxLCAweGM2LCAweDQxLCAweGM3LCAweDQxLCAweGM1LCAweDBjLCAweDA0LCAweDA0LCAweDAwLCAweDAwLCAweDAwLAorMHgyYywgMHgwMCwgMHgwMCwgMHgwMCwgMHhmYywgMHgwMiwgMHgwMCwgMHgwMCwgMHgxYSwgMHhmNSwgMHhmZiwgMHhmZiwgMHhhZSwgMHgwNiwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4NDEsIDB4MGUsIDB4MDgsIDB4ODUsIDB4MDIsIDB4NDIsIDB4MGQsIDB4MDUsIDB4NDYsIDB4ODcsIDB4MDMsIDB4ODYsIDB4MDQsIDB4ODMsIDB4MDUsCisweDAzLCAweGExLCAweDA2LCAweGMzLCAweDQxLCAweGM2LCAweDQxLCAweGM3LCAweDQxLCAweGM1LCAweDBjLCAweDA0LCAweDA0LCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHg2NiwgMHgxMCwgMHgwMSwgMHgwMCwgMHgwNCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgxMiwgMHgwOCwgMHgwMSwgMHgwMCwKKzB4YzAsIDB4NTUsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweGE1LCAweGE1LCAweGE1LCAweGE1LCAweDcwLCAweDAwLCAweDAwLCAweDAwLCAweDIwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDYwLCAweDAwLCAweDAwLAorMHg4YywgMHg0MiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDIsIDB4NGYsIDB4NGYsIDB4NTQsIDB4NWYsIDB4NDksIDB4NGQsIDB4NDEsCisweDQ3LCAweDQ1LCAweDNkLCAweDY4LCAweDY1LCAweDYxLCAweDY0LCAweDJlLCAweDUzLCAweDIwLCAweDYzLCAweDZmLCAweDZlLCAweDczLCAweDZmLCAweDZjLAorMHg2NSwgMHgzZCwgMHg3NCwgMHg3NCwgMHg3OSwgMHg1MywgMHgzMCwgMHgyMCwgMHg2OSwgMHg3MCwgMHgzZCwgMHg2NCwgMHg2OCwgMHg2MywgMHg3MCwgMHgyMCwKKzB4NzIsIDB4NmYsIDB4NmYsIDB4NzQsIDB4M2QsIDB4MmYsIDB4NjQsIDB4NjUsIDB4NzYsIDB4MmYsIDB4NmUsIDB4NjYsIDB4NzMsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAorMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKzB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ta2VsZmltYWdlL21rZWxmaW1hZ2VfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ta2VsZmltYWdlL21rZWxmaW1hZ2VfZ2l0LmJiCmluZGV4IDJiY2M4ZDcuLjMzMGZhN2MgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWtlbGZpbWFnZS9ta2VsZmltYWdlX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21rZWxmaW1hZ2UvbWtlbGZpbWFnZV9naXQuYmIKQEAgLTE3LDIxICsxNywyOCBAQAogICAgICAgICAgICAiCiBTUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIFwKICAgICAgICAgICAgZmlsZTovL2ZpeC1tYWtlZmlsZS10by1maW5kLWxpYnoucGF0Y2ggICBcCisgICAgICAgICAgIGZpbGU6Ly9jb252ZXJ0LmJpbi5jIFwKICIKIAogQ0xFQU5CUk9LRU4gPSAiMSIKIAogUyA9ICIke1dPUktESVJ9L2dpdC91dGlsL21rZWxmSW1hZ2UiCiAKLUNGTEFHUyArPSAiLWZuby1zdGFjay1wcm90ZWN0b3IiCiBDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiXAogICAgIEhPU1RfQ0M9JyR7QlVJTERfQ0N9JyBcCiAgICAgSE9TVF9DRkxBR1M9JyR7QlVJTERfQ0ZMQUdTfScgXAogICAgIEhPU1RfQ1BQRkxBR1M9JyR7QlVJTERfQ1BQRkxBR1N9JyBcCisgICAgSTM4Nl9DRkxBR1M9Jy1mbm8tc3RhY2stcHJvdGVjdG9yJyBcCisgICAgSUE2NF9DRkxBR1M9Jy1mbm8tc3RhY2stcHJvdGVjdG9yJyBcCiAiCitFWFRSQV9PRUNPTkZfYXBwZW5kX3g4Ni02NCA9ICIgLS13aXRoLWkzODY9JHtIT1NUX1NZU30iCiAKIGluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAogCitkb19jb25maWd1cmVfcHJlcGVuZC1jbGFzcy1uYXRpdmUoKSB7CisJY3AgJHtXT1JLRElSfS9jb252ZXJ0LmJpbi5jICR7U30vbGludXgtaTM4Ni8KK30KKwogZG9faW5zdGFsbF9hcHBlbmQoKSB7CiAJcm1kaXIgJHtEfSR7ZGF0YWRpcn0vbWtlbGZJbWFnZS9lbGYzMi1pMzg2CiAJcm1kaXIgJHtEfSR7ZGF0YWRpcn0vbWtlbGZJbWFnZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ta2xpYnMvbWtsaWJzLW5hdGl2ZV8wLjEuNDMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21rbGlicy9ta2xpYnMtbmF0aXZlXzAuMS40My5iYgppbmRleCBiOWM2YzZmLi5hMTYxNDc2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21rbGlicy9ta2xpYnMtbmF0aXZlXzAuMS40My5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21rbGlicy9ta2xpYnMtbmF0aXZlXzAuMS40My5iYgpAQCAtNCw3ICs0LDYgQEAKIFNFQ1RJT04gPSAiZGV2ZWwiCiBMSUNFTlNFID0gIkdQTHYyKyIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RlYmlhbi9jb3B5cmlnaHQ7bWQ1PTk4ZDMxMDM3YjEzZDg5NmUzMzg5MDczOGVmMDFhZjY0IgotREVQRU5EUyA9ICJweXRob24tbmF0aXZlIgogCiBTUkNfVVJJID0gImh0dHA6Ly9zbmFwc2hvdC5kZWJpYW4ub3JnL2FyY2hpdmUvZGViaWFuLzIwMTYxMTIzVDE1MjAxMVovcG9vbC9tYWluL20vbWtsaWJzL21rbGlic18ke1BWfS50YXIueHogXAogCWZpbGU6Ly9hY19pbml0X2ZpeC5wYXRjaFwKQEAgLTIwLDYgKzE5LDYgQEAKIAogVVBTVFJFQU1fQ0hFQ0tfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi9tL21rbGlicy8iCiAKLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgbmF0aXZlIHB5dGhvbm5hdGl2ZQoraW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBuYXRpdmUKIAogUyA9ICIke1dPUktESVJ9L21rbGlicyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbW1jL21tYy11dGlsc19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21tYy9tbWMtdXRpbHNfZ2l0LmJiCmluZGV4IDc4NTg4MTkuLjUwYWNkYjEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbW1jL21tYy11dGlsc19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tbWMvbW1jLXV0aWxzX2dpdC5iYgpAQCAtNCwxMSArNCwxMiBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vbW1jLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMDttZDU9ZmFlMzI3OTJlMjBmNGQyN2FkZTFjNWE3NjJkMTZiN2QiCiAKIFNSQ0JSQU5DSCA/PSAibWFzdGVyIgotU1JDUkVWID0gIjJjYjY2OTVlOGRlYzAwZDg4N2JkZDUzMDlkMWI1N2Q4MzZmY2QyMTQiCitTUkNSRVYgPSAiMzdjODZlNjBjMDQ0MmZlZjU3MGI3NWNkODFhZWIxZGI0ZDBjYmFmZCIKIAogUFYgPSAiMC4xIgogCiBTUkNfVVJJID0gImdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9jamIvbW1jLXV0aWxzLmdpdDticmFuY2g9JHtTUkNCUkFOQ0h9IgorVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRkL210ZC11dGlsc19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210ZC9tdGQtdXRpbHNfZ2l0LmJiCmluZGV4IDRmYmM1NGYuLjQ4YmEyZWUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRkL210ZC11dGlsc19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tdGQvbXRkLXV0aWxzX2dpdC5iYgpAQCAtNSw3ICs1LDcgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTA2MzZlNzNmZjAyMTVlOGQ2NzJkYzRjMzJjMzE3YmIzIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvY29tbW9uLmg7YmVnaW5saW5lPTE7ZW5kbGluZT0xNzttZDU9YmEwNWIwNzkxMmE0NGVhMmJmODFjZTQwOTM4MDA0OWMiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKIAogREVQRU5EUyA9ICJ6bGliIGx6byBlMmZzcHJvZ3MgdXRpbC1saW51eCIKIApAQCAtMzAsNiArMzAsMTEgQEAKIAogRVhUUkFfT0VNQUtFID0gIidDQz0ke0NDfScgJ1JBTkxJQj0ke1JBTkxJQn0nICdBUj0ke0FSfScgJ0NGTEFHUz0ke0NGTEFHU30gJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAneGF0dHInLCAnJywgJy1EV0lUSE9VVF9YQVRUUicsIGQpfSAtSSR7U30vaW5jbHVkZScgJ0JVSUxERElSPSR7U30nIgogCitBTFRFUk5BVElWRV8ke1BOfSA9ICJmbGFzaF9lcmFzZWFsbCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtmbGFzaF9lcmFzZWFsbF0gPSAiJHtzYmluZGlyfS9mbGFzaF9lcmFzZWFsbCIKKyMgVXNlIGhpZ2hlciBwcmlvcml0eSB0aGFuIGJ1c3lib3gncyBmbGFzaF9lcmFzZWFsbCAoY3JlYXRlZCB3aGVuIGJ1aWx0IHdpdGggQ09ORklHX0ZMQVNIX0VSQVNFQUxMKQorQUxURVJOQVRJVkVfUFJJT1JJVFlbZmxhc2hfZXJhc2VhbGxdID0gIjEwMCIKKwogZG9faW5zdGFsbCAoKSB7CiAJb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfSBTQklORElSPSR7c2JpbmRpcn0gTUFORElSPSR7bWFuZGlyfSBJTkNMVURFRElSPSR7aW5jbHVkZWRpcn0KIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRvb2xzL210b29scy9kaXNhYmxlLWhhcmRjb2RlZC1jb25maWdzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tdG9vbHMvbXRvb2xzL2Rpc2FibGUtaGFyZGNvZGVkLWNvbmZpZ3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDE0NTVmMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRvb2xzL210b29scy9kaXNhYmxlLWhhcmRjb2RlZC1jb25maWdzLnBhdGNoCkBAIC0wLDAgKzEsMjMgQEAKK0Rpc2FibGVkIHJlYWRpbmcgaG9zdCBjb25maWdzLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW25hdGl2ZV0KKworU2lnbmVkLW9mZi1ieTogRWQgQmFydG9zaCA8ZWQuYmFydG9zaEBsaW51eC5pbnRlbC5jb20+CisKKy0tLSBtdG9vbHMtNC4wLjE4L2NvbmZpZy5jLm9yaWcJMjAxNy0wNi0xMyAxMjoyNzozOC42NDQwMDAwMDAgKzAzMDAKKysrKyBtdG9vbHMtNC4wLjE4L2NvbmZpZy5jCTIwMTctMDYtMTMgMTI6Mjg6NDcuNTc2MDAwMDAwICswMzAwCitAQCAtNzAxLDE0ICs3MDEsNiBAQAorIAltZW1jcHkoZGV2aWNlcywgY29uc3RfZGV2aWNlcywKKyAJICAgICAgIG5yX2NvbnN0X2RldmljZXMqc2l6ZW9mKHN0cnVjdCBkZXZpY2UpKTsKKyAKKy0gICAgKHZvaWQpICgocGFyc2UoQ09ORl9GSUxFLDEpIHwKKy0JICAgICBwYXJzZShMT0NBTF9DT05GX0ZJTEUsMSkgfAorLQkgICAgIHBhcnNlKFNZU19DT05GX0ZJTEUsMSkpIHx8CistCSAgICAocGFyc2UoT0xEX0NPTkZfRklMRSwxKSB8CistCSAgICAgcGFyc2UoT0xEX0xPQ0FMX0NPTkZfRklMRSwxKSkpOworLSAgICAvKiB0aGUgb2xkLW5hbWUgY29uZmlndXJhdGlvbiBmaWxlcyBvbmx5IGdldCBleGVjdXRlZCBpZiBub25lIG9mIHRoZQorLSAgICAgKiBuZXctbmFtZSBjb25maWcgZmlsZXMgd2VyZSB1c2VkICovCistCisgICAgIGhvbWVkaXIgPSBnZXRfaG9tZWRpcigpOworICAgICBpZiAoIGhvbWVkaXIgKXsKKyAJc3RybmNweShjb25mX2ZpbGUsIGhvbWVkaXIsIE1BWFBBVEhMRU4gKTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRvb2xzL210b29sc180LjAuMTguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL210b29scy9tdG9vbHNfNC4wLjE4LmJiCmluZGV4IGIwZWZjOWUuLmRjZDMyZWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbXRvb2xzL210b29sc180LjAuMTguYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tdG9vbHMvbXRvb2xzXzQuMC4xOC5iYgpAQCAtMzMsMTMgKzMzLDEyIEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUNvbnRpbnVlLWV2ZW4taWYtZnMtc2l6ZS1pcy1ub3QtZGl2aXNpYmxlLWJ5LXNlY3RvcnMucGF0Y2ggXAogICAgICAgICAgICAiCiAKK1NSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZTovL2Rpc2FibGUtaGFyZGNvZGVkLWNvbmZpZ3MucGF0Y2giCiAKIGluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8KIAogRVhUUkFfT0VDT05GID0gIi0td2l0aG91dC14IgogCi1MREZMQUdTX2FwcGVuZF9saWJjLXVjbGliYyA9ICIgLWxpY29udiAiCi0KIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKIAogUEFDS0FHRUNPTkZJRyA/Pz0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmFzbS9uYXNtXzIuMTIuMDIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25hc20vbmFzbV8yLjEyLjAyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMjgwYjg0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmFzbS9uYXNtXzIuMTIuMDIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1TVU1NQVJZID0gIkdlbmVyYWwtcHVycG9zZSB4ODYgYXNzZW1ibGVyIgotU0VDVElPTiA9ICJkZXZlbCIKLUxJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OTA5MDQ0ODZmOGZiZjE4NjFjZjQyNzUyZTFhMzllZmUiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5uYXNtLnVzL3B1Yi9uYXNtL3JlbGVhc2VidWlsZHMvJHtQVn0vbmFzbS0ke1BWfS50YXIuYnoyICIKLQotU1JDX1VSSVttZDVzdW1dID0gImQxNTg0M2MzZmI3ZGIzOWFmODA1NzFlZTI3ZWM2ZmFkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAwYjA4OTFjNjc4YzA2NTQ0NmNhNTliY2VlNjQ3MTlkMDA5NmQ1NGQ2ODg2ZTZlNDcyYWVlZTJlMTcwYWUzMjQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0JaWYgWyAtZiAke1N9L2FjbG9jYWwubTQgXSAmJiBbICEgLWYgJHtTfS9hY2luY2x1ZGUubTQgXTsgdGhlbgotCQltdiAke1N9L2FjbG9jYWwubTQgJHtTfS9hY2luY2x1ZGUubTQKLQlmaQotfQotCi1kb19pbnN0YWxsKCkgewotCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotCWluc3RhbGwgLWQgJHtEfSR7bWFuZGlyfS9tYW4xCi0KLQlvZV9ydW5tYWtlICdJTlNUQUxMUk9PVD0ke0R9JyBpbnN0YWxsCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi1ERVBFTkRTID0gImdyb2ZmLW5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmFzbS9uYXNtXzIuMTMuMDEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25hc20vbmFzbV8yLjEzLjAxLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmMThjZDYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25hc20vbmFzbV8yLjEzLjAxLmJiCkBAIC0wLDAgKzEsMjggQEAKK1NVTU1BUlkgPSAiR2VuZXJhbC1wdXJwb3NlIHg4NiBhc3NlbWJsZXIiCitTRUNUSU9OID0gImRldmVsIgorTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT05MDkwNDQ4NmY4ZmJmMTg2MWNmNDI3NTJlMWEzOWVmZSIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm5hc20udXMvcHViL25hc20vcmVsZWFzZWJ1aWxkcy8ke1BWfS9uYXNtLSR7UFZ9LnRhci5iejIgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMWY3ZDQ2NjIwNDBkMjQzNTFkZjdkNjcxOWVkNGY5N2EiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDhmOTdiYWYwYTdmODkyMTI4YzY0MTNjZmE5M2I2OWRjNTgyNWZiYmQwNmM3MDkyOGFlYTAyODgzNWQxOThmYSIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwlpZiBbIC1mICR7U30vYWNsb2NhbC5tNCBdICYmIFsgISAtZiAke1N9L2FjaW5jbHVkZS5tNCBdOyB0aGVuCisJCW12ICR7U30vYWNsb2NhbC5tNCAke1N9L2FjaW5jbHVkZS5tNAorCWZpCit9CisKK2RvX2luc3RhbGwoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CisJaW5zdGFsbCAtZCAke0R9JHttYW5kaXJ9L21hbjEKKworCW9lX3J1bm1ha2UgJ0lOU1RBTExST09UPSR7RH0nIGluc3RhbGwKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKK0RFUEVORFMgPSAiZ3JvZmYtbmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uaW5qYS9uaW5qYV8xLjcuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmluamEvbmluamFfMS43LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQzYjI3MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmluamEvbmluamFfMS43LjIuYmIKQEAgLTAsMCArMSwzMCBAQAorU1VNTUFSWSA9ICJOaW5qYSBpcyBhIHNtYWxsIGJ1aWxkIHN5c3RlbSB3aXRoIGEgZm9jdXMgb24gc3BlZWQuIgorSE9NRVBBR0UgPSAiaHR0cDovL21hcnRpbmUuZ2l0aHViLmNvbS9uaW5qYS8iCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hODE1ODZhNjRhZDRlNDc2Yzc5MWNkYTdlMmYyYzUyZSIKKworREVQRU5EUyA9ICJyZTJjLW5hdGl2ZSBuaW5qYS1uYXRpdmUiCisKK1NSQ1JFViA9ICI3MTdiN2I0YTMxZGI2MDI3MjA3NTg4YzBmYjg5YzNlYWQzODQ3NDdiIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbWFydGluZS9uaW5qYS5naXQ7YnJhbmNoPXJlbGVhc2UiCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJ2KD9QPHB2ZXI+LiopIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitkb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgorCitkb19jb21waWxlX2NsYXNzLW5hdGl2ZSgpIHsKKwkuL2NvbmZpZ3VyZS5weSAtLWJvb3RzdHJhcAorfQorCitkb19jb21waWxlKCkgeworCS4vY29uZmlndXJlLnB5CisJbmluamEKK30KKworZG9faW5zdGFsbCgpIHsKKwlpbnN0YWxsIC1EIC1tIDA3NTUgICR7U30vbmluamEgJHtEfSR7YmluZGlyfS9uaW5qYQorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlscy8wMDAxLVN3aXRjaC1hbGwtc2NyaXB0cy10by11c2UtUHl0aG9uLTMueC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzLzAwMDEtU3dpdGNoLWFsbC1zY3JpcHRzLXRvLXVzZS1QeXRob24tMy54LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzNmFlMmYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlscy8wMDAxLVN3aXRjaC1hbGwtc2NyaXB0cy10by11c2UtUHl0aG9uLTMueC5wYXRjaApAQCAtMCwwICsxLDExMiBAQAorRnJvbSBkNDJiMjNmNGZiNWQ2YmQ1OGU5MmU5OTVmZTViZWZjNzZlZmJhZTBjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDI3IEFwciAyMDE3IDE1OjQ3OjU4ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIFN3aXRjaCBhbGwgc2NyaXB0cyB0byB1c2UgUHl0aG9uIDMueAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgbWFrZVBhY2thZ2UgICAgICAgICAgfCAyICstCisgb3BrZy1jb21wYXJlLWluZGV4ZXMgfCAyICstCisgb3BrZy1ncmFwaC1kZXBzICAgICAgfCAyICstCisgb3BrZy1saXN0LWZpZWxkcyAgICAgfCAyICstCisgb3BrZy1tYWtlLWluZGV4ICAgICAgfCAyICstCisgb3BrZy1zaG93LWRlcHMgICAgICAgfCAyICstCisgb3BrZy11bmJ1aWxkICAgICAgICAgfCAyICstCisgb3BrZy11cGRhdGUtaW5kZXggICAgfCAyICstCisgb3BrZy5weSAgICAgICAgICAgICAgfCAyICstCisgOSBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9tYWtlUGFja2FnZSBiL21ha2VQYWNrYWdlCitpbmRleCA0YmRmYzU2Li4wMjEyNGRkIDEwMDc1NQorLS0tIGEvbWFrZVBhY2thZ2UKKysrKyBiL21ha2VQYWNrYWdlCitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL3B5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAKKyAjIFRoZSBnZW5lcmFsIGFsZ29yaXRobSB0aGlzIHByb2dyYW0gZm9sbG93cyBnb2VzIGxpa2UgdGhpczoKKyAjICAgUnVuIHRhciB0byBleHRyYWN0IGNvbnRyb2wgZnJvbSBjb250cm9sLnRhci5neiBmcm9tIHRoZSBwYWNrYWdlLgorZGlmZiAtLWdpdCBhL29wa2ctY29tcGFyZS1pbmRleGVzIGIvb3BrZy1jb21wYXJlLWluZGV4ZXMKK2luZGV4IGI2MGQyMGEuLjgwYzEyNjMgMTAwNzU1CistLS0gYS9vcGtnLWNvbXBhcmUtaW5kZXhlcworKysrIGIvb3BrZy1jb21wYXJlLWluZGV4ZXMKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAorIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KKyAKK2RpZmYgLS1naXQgYS9vcGtnLWdyYXBoLWRlcHMgYi9vcGtnLWdyYXBoLWRlcHMKK2luZGV4IDY2NTNmZDUuLmYxZTM3NmEgMTAwNzU1CistLS0gYS9vcGtnLWdyYXBoLWRlcHMKKysrKyBiL29wa2ctZ3JhcGgtZGVwcworQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CisgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgorIAorZGlmZiAtLWdpdCBhL29wa2ctbGlzdC1maWVsZHMgYi9vcGtnLWxpc3QtZmllbGRzCitpbmRleCBjMTRhOTBmLi4yNGY3OTU1IDEwMDc1NQorLS0tIGEvb3BrZy1saXN0LWZpZWxkcworKysrIGIvb3BrZy1saXN0LWZpZWxkcworQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CisgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgorIAorZGlmZiAtLWdpdCBhL29wa2ctbWFrZS1pbmRleCBiL29wa2ctbWFrZS1pbmRleAoraW5kZXggM2Y3NTdmNi4uMjk4OGY5ZiAxMDA3NTUKKy0tLSBhL29wa2ctbWFrZS1pbmRleAorKysrIGIvb3BrZy1tYWtlLWluZGV4CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKKyBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCisgCitkaWZmIC0tZ2l0IGEvb3BrZy1zaG93LWRlcHMgYi9vcGtnLXNob3ctZGVwcworaW5kZXggMTUzZjIxZS4uNGUxOGI0ZiAxMDA3NTUKKy0tLSBhL29wa2ctc2hvdy1kZXBzCisrKysgYi9vcGtnLXNob3ctZGVwcworQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CisgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgorIAorZGlmZiAtLWdpdCBhL29wa2ctdW5idWlsZCBiL29wa2ctdW5idWlsZAoraW5kZXggNGYzNmJlYy4uNTc2NDJjOSAxMDA3NTUKKy0tLSBhL29wa2ctdW5idWlsZAorKysrIGIvb3BrZy11bmJ1aWxkCitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKKyBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCisgCitkaWZmIC0tZ2l0IGEvb3BrZy11cGRhdGUtaW5kZXggYi9vcGtnLXVwZGF0ZS1pbmRleAoraW5kZXggMzQxYzFjMi4uN2JmZjhhMSAxMDA3NTUKKy0tLSBhL29wa2ctdXBkYXRlLWluZGV4CisrKysgYi9vcGtnLXVwZGF0ZS1pbmRleAorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CisgCisgaW1wb3J0IHN5cywgb3MKK2RpZmYgLS1naXQgYS9vcGtnLnB5IGIvb3BrZy5weQoraW5kZXggMmVjYWM4YS4uN2U2NGRlNCAxMDA2NDQKKy0tLSBhL29wa2cucHkKKysrKyBiL29wa2cucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAjICAgQ29weXJpZ2h0IChDKSAyMDAxIEFsZXhhbmRlciBTLiBHdXkgPGE3ckBhbmRlcm4ub3JnPgorICMgICAgICAgICAgICAgICAgICAgICAgQW5kZXJuIFJlc2VhcmNoIExhYnMKKyAjCistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlsc18wLjMuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzXzAuMy41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0NmNjOGYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlsc18wLjMuNS5iYgpAQCAtMCwwICsxLDYyIEBACitTVU1NQVJZID0gIkFkZGl0aW9uYWwgdXRpbGl0aWVzIGZvciB0aGUgb3BrZyBwYWNrYWdlIG1hbmFnZXIiCitTVU1NQVJZX3VwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZyA9ICJVdGlsaXR5IGZvciBtYW5hZ2luZyB0aGUgYWx0ZXJuYXRpdmVzIHN5c3RlbSIKK1NFQ1RJT04gPSAiYmFzZSIKK0hPTUVQQUdFID0gImh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL29wa2ctdXRpbHMiCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL29wa2cucHk7YmVnaW5saW5lPTI7ZW5kbGluZT0xODttZDU9NjNjZTllNmJjYzQ0NTE4MWNkOWU0YmFmNGI0Y2NjMzUiCitQUk9WSURFUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndXBkYXRlLWFsdGVybmF0aXZlcycsICd2aXJ0dWFsL3VwZGF0ZS1hbHRlcm5hdGl2ZXMnLCAnJywgZCl9IgorCitTUkNfVVJJID0gImh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpLyR7QlBOfS9zbmFwc2hvdC8ke0JQTn0tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtU3dpdGNoLWFsbC1zY3JpcHRzLXRvLXVzZS1QeXRob24tMy54LnBhdGNoIFwKKyIKK1NSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZTovL3Rhcl9pZ25vcmVfZXJyb3IucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJhMTllMDljNzliZjExNTJhYWM2MmU4YTEyMGQ2NzlmZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZjRiMDg5MTJlMjZhM2Y0ZjZmNDIzZjNiNGU3MTU3YTczYjFmM2E3NDgzZmM1OWIyMTZkMWE4MGI1MGIwYzM4IgorCitUQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKKworIyBGb3IgbmF0aXZlIGJ1aWxkcyB3ZSB1c2UgdGhlIGhvc3QgUHl0aG9uCitQWVRIT05SREVQUyA9ICJweXRob24zIHB5dGhvbjMtc2hlbGwgcHl0aG9uMy1pbyBweXRob24zLW1hdGggcHl0aG9uMy1jcnlwdCBweXRob24zLWxvZ2dpbmcgcHl0aG9uMy1mY250bCBweXRob24zLXN1YnByb2Nlc3MgcHl0aG9uMy1waWNrbGUgcHl0aG9uMy1jb21wcmVzc2lvbiBweXRob24zLXRleHR1dGlscyBweXRob24zLXN0cmluZ29sZCIKK1BZVEhPTlJERVBTX2NsYXNzLW5hdGl2ZSA9ICIiCisKK1BBQ0tBR0VDT05GSUcgPSAicHl0aG9uIHVwZGF0ZS1hbHRlcm5hdGl2ZXMiCitQQUNLQUdFQ09ORklHW3B5dGhvbl0gPSAiLCwsJHtQWVRIT05SREVQU30iCitQQUNLQUdFQ09ORklHW3VwZGF0ZS1hbHRlcm5hdGl2ZXNdID0gIiwsLCIKKworZG9faW5zdGFsbCgpIHsKKwlvZV9ydW5tYWtlIFBSRUZJWD0ke3ByZWZpeH0gREVTVERJUj0ke0R9IGluc3RhbGwKKwlpZiAhICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3VwZGF0ZS1hbHRlcm5hdGl2ZXMnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorCQlybSAtZiAiJHtEfSR7YmluZGlyfS91cGRhdGUtYWx0ZXJuYXRpdmVzIgorCWZpCisKKyAgICBpZiAhICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgIGdyZXAgLWxaICIvdXNyL2Jpbi9lbnYuKnB5dGhvbiIgJHtEfSR7YmluZGlyfS8qIHwgeGFyZ3MgLTAgcm0KKyAgICBmaQorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7CisJaWYgWyAtZSAiJHtEfSR7YmluZGlyfS91cGRhdGUtYWx0ZXJuYXRpdmVzIiBdOyB0aGVuCisJCXNlZCAtaSAke0R9JHtiaW5kaXJ9L3VwZGF0ZS1hbHRlcm5hdGl2ZXMgLWUgJ3MsL3Vzci9iaW4sJHtiaW5kaXJ9LGc7IHMsL3Vzci9saWIsJHtub25hcmNoX2xpYmRpcn0sZycKKwlmaQorfQorCisjIFRoZXNlIGFyZSBlbXB0eSBhbmQgd2lsbCBwdWxsIHB5dGhvbjMtZGV2IGludG8gaW1hZ2VzIHdoZXJlIGl0IHdvdWxkbid0CisjIGhhdmUgYmVlbiBvdGhlcndpc2UsIHNvIGRvbid0IGdlbmVyYXRlIHRoZW0uCitQQUNLQUdFU19yZW1vdmUgPSAiJHtQTn0tZGV2ICR7UE59LXN0YXRpY2RldiIKKworUEFDS0FHRVMgPSsgInVwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZyIKK0ZJTEVTX3VwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZyA9ICIke2JpbmRpcn0vdXBkYXRlLWFsdGVybmF0aXZlcyIKK1JQUk9WSURFU191cGRhdGUtYWx0ZXJuYXRpdmVzLW9wa2cgPSAidXBkYXRlLWFsdGVybmF0aXZlcyB1cGRhdGUtYWx0ZXJuYXRpdmVzLWN3b3J0aCIKK1JSRVBMQUNFU191cGRhdGUtYWx0ZXJuYXRpdmVzLW9wa2cgPSAidXBkYXRlLWFsdGVybmF0aXZlcy1jd29ydGgiCitSQ09ORkxJQ1RTX3VwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZyA9ICJ1cGRhdGUtYWx0ZXJuYXRpdmVzLWN3b3J0aCIKKworcGtnX3Bvc3RybV91cGRhdGUtYWx0ZXJuYXRpdmVzLW9wa2coKSB7CisJcm0gLXJmICREJHtub25hcmNoX2xpYmRpcn0vb3BrZy9hbHRlcm5hdGl2ZXMKKwlybWRpciAkRCR7bm9uYXJjaF9saWJkaXJ9L29wa2cgfHwgdHJ1ZQorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK0NMRUFOQlJPS0VOID0gIjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlsc19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlsc19naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkZWVhMGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHNfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotU1VNTUFSWSA9ICJBZGRpdGlvbmFsIHV0aWxpdGllcyBmb3IgdGhlIG9wa2cgcGFja2FnZSBtYW5hZ2VyIgotU1VNTUFSWV91cGRhdGUtYWx0ZXJuYXRpdmVzLW9wa2cgPSAiVXRpbGl0eSBmb3IgbWFuYWdpbmcgdGhlIGFsdGVybmF0aXZlcyBzeXN0ZW0iCi1TRUNUSU9OID0gImJhc2UiCi1IT01FUEFHRSA9ICJodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9vcGtnLXV0aWxzIgotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9vcGtnLnB5O2JlZ2lubGluZT0xO2VuZGxpbmU9MTg7bWQ1PTE1OTE3NDkxYWQ2YmY3YWNjNjY2Y2E1ZjdjYzFlMDgzIgotUFJPVklERVMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3VwZGF0ZS1hbHRlcm5hdGl2ZXMnLCAndmlydHVhbC91cGRhdGUtYWx0ZXJuYXRpdmVzJywgJycsIGQpfSIKLQotU1JDUkVWID0gIjFhNzA4ZmQ3M2QxMGMyYjc2NzdkZDRjYzRlMDE3NzQ2ZWJiYjkxNjYiCi1QViA9ICIwLjMuNCtnaXQke1NSQ1BWfSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9vcGtnLXV0aWxzIFwKLSIKLVNSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZTovL3Rhcl9pZ25vcmVfZXJyb3IucGF0Y2giCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLVRBUkdFVF9DQ19BUkNIICs9ICIke0xERkxBR1N9IgotCi1QWVRIT05SREVQUyA9ICJweXRob24gcHl0aG9uLXNoZWxsIHB5dGhvbi1pbyBweXRob24tbWF0aCBweXRob24tY3J5cHQgcHl0aG9uLWxvZ2dpbmcgcHl0aG9uLWZjbnRsIHB5dGhvbi1zdWJwcm9jZXNzIHB5dGhvbi1waWNrbGUgcHl0aG9uLWNvbXByZXNzaW9uIHB5dGhvbi10ZXh0dXRpbHMgcHl0aG9uLXN0cmluZ29sZCIKLVBZVEhPTlJERVBTX2NsYXNzLW5hdGl2ZSA9ICIiCi0KLVBBQ0tBR0VDT05GSUcgPSAicHl0aG9uIHVwZGF0ZS1hbHRlcm5hdGl2ZXMiCi1QQUNLQUdFQ09ORklHW3B5dGhvbl0gPSAiLCwsJHtQWVRIT05SREVQU30iCi1QQUNLQUdFQ09ORklHW3VwZGF0ZS1hbHRlcm5hdGl2ZXNdID0gIiwsLCIKLQotZG9faW5zdGFsbCgpIHsKLQlvZV9ydW5tYWtlIFBSRUZJWD0ke3ByZWZpeH0gREVTVERJUj0ke0R9IGluc3RhbGwKLQlpZiAhICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3VwZGF0ZS1hbHRlcm5hdGl2ZXMnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotCQlybSAtZiAiJHtEfSR7YmluZGlyfS91cGRhdGUtYWx0ZXJuYXRpdmVzIgotCWZpCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLQlpZiBbIC1lICIke0R9JHtiaW5kaXJ9L3VwZGF0ZS1hbHRlcm5hdGl2ZXMiIF07IHRoZW4KLQkJc2VkIC1pICR7RH0ke2JpbmRpcn0vdXBkYXRlLWFsdGVybmF0aXZlcyAtZSAncywvdXNyL2Jpbiwke2JpbmRpcn0sZzsgcywvdXNyL2xpYiwke25vbmFyY2hfbGliZGlyfSxnJwotCWZpCi19Ci0KLVBBQ0tBR0VTID0rICJ1cGRhdGUtYWx0ZXJuYXRpdmVzLW9wa2ciCi1GSUxFU191cGRhdGUtYWx0ZXJuYXRpdmVzLW9wa2cgPSAiJHtiaW5kaXJ9L3VwZGF0ZS1hbHRlcm5hdGl2ZXMiCi1SUFJPVklERVNfdXBkYXRlLWFsdGVybmF0aXZlcy1vcGtnID0gInVwZGF0ZS1hbHRlcm5hdGl2ZXMgdXBkYXRlLWFsdGVybmF0aXZlcy1jd29ydGgiCi1SUkVQTEFDRVNfdXBkYXRlLWFsdGVybmF0aXZlcy1vcGtnID0gInVwZGF0ZS1hbHRlcm5hdGl2ZXMtY3dvcnRoIgotUkNPTkZMSUNUU191cGRhdGUtYWx0ZXJuYXRpdmVzLW9wa2cgPSAidXBkYXRlLWFsdGVybmF0aXZlcy1jd29ydGgiCi0KLXBrZ19wb3N0cm1fdXBkYXRlLWFsdGVybmF0aXZlcy1vcGtnKCkgewotCXJtIC1yZiAkRCR7bm9uYXJjaF9saWJkaXJ9L29wa2cvYWx0ZXJuYXRpdmVzCi0Jcm1kaXIgJEQke25vbmFyY2hfbGliZGlyfS9vcGtnIHx8IHRydWUKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1DTEVBTkJST0tFTiA9ICIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnL29wa2ctYXJjaC1jb25maWdfMS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnL29wa2ctYXJjaC1jb25maWdfMS4wLmJiCmluZGV4IDY4MjE0MmEuLjBjMmRiYzkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnLWFyY2gtY29uZmlnXzEuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZy1hcmNoLWNvbmZpZ18xLjAuYmIKQEAgLTEsNCArMSw1IEBACiBTVU1NQVJZID0gIkFyY2hpdGVjdHVyZS1kZXBlbmRlbnQgY29uZmlndXJhdGlvbiBmb3Igb3BrZyIKK0hPTUVQQUdFID0gImh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9vcGtnLyIKIExJQ0VOU0UgPSAiTUlUIgogUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKIFBSID0gInIxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnL29wa2cvb3BrZy1jb25maWd1cmUuc2VydmljZSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnL29wa2ctY29uZmlndXJlLnNlcnZpY2UKaW5kZXggOGU3NDAyNi4uNDMyYzNkZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnL29wa2cvb3BrZy1jb25maWd1cmUuc2VydmljZQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZy9vcGtnLWNvbmZpZ3VyZS5zZXJ2aWNlCkBAIC04LDcgKzgsNyBAQAogVHlwZT1vbmVzaG90CiBFbnZpcm9ubWVudEZpbGU9LUBTWVNDT05GRElSQC9kZWZhdWx0L3Bvc3RpbnN0CiBFeGVjU3RhcnQ9LUBCQVNFX0JJTkRJUkAvc2ggLWMgIiBpZiBbICRQT1NUSU5TVF9MT0dHSU5HID0gJzEnIF07IHRoZW4gQEJJTkRJUkAvb3BrZyBjb25maWd1cmUgPiAkTE9HRklMRSAyPiYxOyBlbHNlIEBCSU5ESVJAL29wa2cgY29uZmlndXJlOyBmaSIKLUV4ZWNTdGFydFBvc3Q9QEJBU0VfQklORElSQC9zeXN0ZW1jdGwgZGlzYWJsZSBvcGtnLWNvbmZpZ3VyZS5zZXJ2aWNlCitFeGVjU3RhcnRQb3N0PUBCQVNFX0JJTkRJUkAvc3lzdGVtY3RsIC0tbm8tcmVsb2FkIGRpc2FibGUgb3BrZy1jb25maWd1cmUuc2VydmljZQogU3RhbmRhcmRPdXRwdXQ9c3lzbG9nCiBSZW1haW5BZnRlckV4aXQ9Tm8KIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnL29wa2cvc3RhdHVzLWNvbmZmaWxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnL29wa2cvc3RhdHVzLWNvbmZmaWxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZmM0MDViLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnL3N0YXR1cy1jb25mZmlsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1Gcm9tIDA4NmQ1MDgzZGZlMDEwMjM2OGNiN2M4Y2U4OWIwYzA2YjY0Y2E3NzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotRGF0ZTogVHVlLCAxMCBKYW4gMjAxNyAxNToyNDo1OSArMDAwMAotU3ViamVjdDogW1BBVENIIDEvMl0gb3BrZ19jbWQ6IG9ubHkgbG9vayBhdCBjb25mZmlsZSBzdGF0dXMgaWYgd2UncmUgZ29pbmcgdG8KLSBvdXRwdXQgaXQKLQotVGhlIGxvb3AgdG8gY29tcGFyZSB0aGUgcmVjb3JkZWQgY29uZmZpbGUgaGFzaCB3aXRoIHRoZWlyIGhhc2ggb24gZGlzayBpcwotb3V0cHV0dGVkIGF0IGxldmVsIElORk8gYnV0IHRoZSBsb29wIHdhcyBleGVjdXRlZCBhdCBsZXZlbCBOT1RJQ0UgYW5kIGhpZ2hlci4KLQotVGhpcyBtZWFucyB0aGF0IGlmIGEgY29uZmZpbGUgaGFkIGJlZW4gZGVsZXRlZCB0aGUgc3RhdHVzIG9wZXJhdGlvbiB3b3VsZAotcHJvZHVjZSBlcnJvciBtZXNzYWdlcyBmb3Igb3V0cHV0IGl0IGlzbid0IGRpc3BsYXlpbmcuCi0KLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0tLS0KLSBsaWJvcGtnL29wa2dfY21kLmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9saWJvcGtnL29wa2dfY21kLmMgYi9saWJvcGtnL29wa2dfY21kLmMKLWluZGV4IGJhNTdjNmEuLjM3NDE2ZmQgMTAwNjQ0Ci0tLS0gYS9saWJvcGtnL29wa2dfY21kLmMKLSsrKyBiL2xpYm9wa2cvb3BrZ19jbWQuYwotQEAgLTYzOCw3ICs2MzgsNyBAQCBzdGF0aWMgaW50IG9wa2dfaW5mb19zdGF0dXNfY21kKGludCBhcmdjLCBjaGFyICoqYXJndiwgaW50IGluc3RhbGxlZF9vbmx5KQotIAotICAgICAgICAgcGtnX2Zvcm1hdHRlZF9pbmZvKHN0ZG91dCwgcGtnKTsKLSAKLS0gICAgICAgIGlmIChvcGtnX2NvbmZpZy0+dmVyYm9zaXR5ID49IE5PVElDRSkgewotKyAgICAgICAgaWYgKG9wa2dfY29uZmlnLT52ZXJib3NpdHkgPj0gSU5GTykgewotICAgICAgICAgICAgIGNvbmZmaWxlX2xpc3RfZWx0X3QgKml0ZXI7Ci0gICAgICAgICAgICAgZm9yIChpdGVyID0gbnZfcGFpcl9saXN0X2ZpcnN0KCZwa2ctPmNvbmZmaWxlcyk7IGl0ZXI7Ci0gICAgICAgICAgICAgICAgICBpdGVyID0gbnZfcGFpcl9saXN0X25leHQoJnBrZy0+Y29uZmZpbGVzLCBpdGVyKSkgewotLS0gCi0yLjguMQotCi1Gcm9tIDIyNWUzMGUwZjlmYTdjZmVhYTNmODllMjcxM2U1MTQ3YWIzNzFkZWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotRGF0ZTogVHVlLCAxMCBKYW4gMjAxNyAxNToyODo0NyArMDAwMAotU3ViamVjdDogW1BBVENIIDIvMl0gY29uZmZpbGU6IGdyYWNlZnVsbHkgaGFuZGxlIGRlbGV0ZWQgY29uZmZpbGVzIGluCi0gY29uZmZpbGVfaGFzX2JlZW5fbW9kaWZpZWQKLQotSGFuZGxlIGNvbmZmaWxlcyB0aGF0IGRvbid0IGV4aXN0IGdyYWNlZnVsbHkgc28gdGhhdCBpbnN0ZWFkIG9mIHNob3dpbmcgYW4gZXJyb3IKLW1lc3NhZ2UgZnJvbSBmaWxlX21kNXN1bV9hbGxvYygpIGEgbm90aWNlIHRoYXQgdGhlIGZpbGUgaGFzIGJlZW4gZGVsZXRlZCBpcwotc2hvd24gaW5zdGVhZC4KLQotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLS0tLQotIGxpYm9wa2cvY29uZmZpbGUuYyB8IDUgKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9saWJvcGtnL2NvbmZmaWxlLmMgYi9saWJvcGtnL2NvbmZmaWxlLmMKLWluZGV4IGIyZjI0NjkuLjdiNGI4N2IgMTAwNjQ0Ci0tLS0gYS9saWJvcGtnL2NvbmZmaWxlLmMKLSsrKyBiL2xpYm9wa2cvY29uZmZpbGUuYwotQEAgLTUxLDYgKzUxLDExIEBAIGludCBjb25mZmlsZV9oYXNfYmVlbl9tb2RpZmllZChjb25mZmlsZV90ICogY29uZmZpbGUpCi0gICAgIH0KLSAKLSAgICAgcm9vdF9maWxlbmFtZSA9IHJvb3RfZmlsZW5hbWVfYWxsb2MoZmlsZW5hbWUpOwotKyAgICBpZiAoIWZpbGVfZXhpc3RzKHJvb3RfZmlsZW5hbWUpKSB7Ci0rICAgICAgICBvcGtnX21zZyhJTkZPLCAiQ29uZmZpbGUgJXMgZGVsZXRlZFxuIiwgY29uZmZpbGUtPm5hbWUpOwotKyAgICAgICAgZnJlZShyb290X2ZpbGVuYW1lKTsKLSsgICAgICAgIHJldHVybiAxOwotKyAgICB9Ci0gCi0gICAgIG1kNXN1bSA9IGZpbGVfbWQ1c3VtX2FsbG9jKHJvb3RfZmlsZW5hbWUpOwotIAotLS0gCi0yLjguMQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnL29wa2dfMC4zLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZ18wLjMuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTIxZmRlMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZ18wLjMuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAKLVNVTU1BUlkgPSAiT3BlbiBQYWNrYWdlIE1hbmFnZXIiCi1TVU1NQVJZX2xpYm9wa2cgPSAiT3BlbiBQYWNrYWdlIE1hbmFnZXIgbGlicmFyeSIKLVNFQ1RJT04gPSAiYmFzZSIKLUhPTUVQQUdFID0gImh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9vcGtnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL29wa2cvaXNzdWVzL2xpc3QiCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9vcGtnLmM7YmVnaW5saW5lPTI7ZW5kbGluZT0yMTttZDU9OTA0MzVhNTE5YzZlYTY5ZWYyMmU0YTg4YmNjNTJmYTAiCi0KLURFUEVORFMgPSAibGliYXJjaGl2ZSIKLQotUEUgPSAiMSIKLQotU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMvJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vb3BrZy1jb25maWd1cmUuc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly9vcGtnLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1vcGtnX2NvbmYtY3JlYXRlLW9wa2cubG9jay1pbi1ydW4taW5zdGVhZC1vZi12YXItcnVuLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3N0YXR1cy1jb25mZmlsZS5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2YzUyYTA2NTQ5OTA1NmExOTZlMGI0NWEyN2UzOTJkZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3NTBiOTAwYjUzYjYyYTliMjgwYjYwMWExOTZmMDJkYTgxMDkxZWRhMmYzNDc4YzUwOTUxMmFhNWExZWM5M2JlIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgc3lzdGVtZAotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAib3BrZy1jb25maWd1cmUuc2VydmljZSIKLQotdGFyZ2V0X2xvY2Fsc3RhdGVkaXIgOj0gIiR7bG9jYWxzdGF0ZWRpcn0iCi1PUEtHTElCRElSID0gIiR7dGFyZ2V0X2xvY2Fsc3RhdGVkaXJ9L2xpYiIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImxpYnNvbHYiCi0KLVBBQ0tBR0VDT05GSUdbZ3BnXSA9ICItLWVuYWJsZS1ncGcsLS1kaXNhYmxlLWdwZyxncGdtZSBsaWJncGctZXJyb3IsZ251cGciCi1QQUNLQUdFQ09ORklHW2N1cmxdID0gIi0tZW5hYmxlLWN1cmwsLS1kaXNhYmxlLWN1cmwsY3VybCIKLVBBQ0tBR0VDT05GSUdbc3NsLWN1cmxdID0gIi0tZW5hYmxlLXNzbC1jdXJsLC0tZGlzYWJsZS1zc2wtY3VybCxjdXJsIG9wZW5zc2wiCi1QQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0tZW5hYmxlLW9wZW5zc2wsLS1kaXNhYmxlLW9wZW5zc2wsb3BlbnNzbCIKLVBBQ0tBR0VDT05GSUdbc2hhMjU2XSA9ICItLWVuYWJsZS1zaGEyNTYsLS1kaXNhYmxlLXNoYTI1NiIKLVBBQ0tBR0VDT05GSUdbcGF0aGZpbmRlcl0gPSAiLS1lbmFibGUtcGF0aGZpbmRlciwtLWRpc2FibGUtcGF0aGZpbmRlcixwYXRoZmluZGVyIgotUEFDS0FHRUNPTkZJR1tsaWJzb2x2XSA9ICItLXdpdGgtbGlic29sdiwtLXdpdGhvdXQtbGlic29sdixsaWJzb2x2IgotCi1FWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIi0tbG9jYWxzdGF0ZWRpcj0vJHtAb3MucGF0aC5yZWxwYXRoKCcke2xvY2Fsc3RhdGVkaXJ9JywgJyR7U1RBR0lOR19ESVJfTkFUSVZFfScpfSAtLXN5c2NvbmZkaXI9LyR7QG9zLnBhdGgucmVscGF0aCgnJHtzeXNjb25mZGlyfScsICcke1NUQUdJTkdfRElSX05BVElWRX0nKX0iCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L29wa2cKLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9vcGtnLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vb3BrZy9vcGtnLmNvbmYKLQllY2hvICJvcHRpb24gbGlzdHNfZGlyICR7T1BLR0xJQkRJUn0vb3BrZy9saXN0cyIgPj4ke0R9JHtzeXNjb25mZGlyfS9vcGtnL29wa2cuY29uZgotCi0JIyBXZSBuZWVkIHRvIGNyZWF0ZSB0aGUgbG9jayBkaXJlY3RvcnkKLQlpbnN0YWxsIC1kICR7RH0ke09QS0dMSUJESVJ9L29wa2cKLQotCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07dGhlbgotCQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0JCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L29wa2ctY29uZmlndXJlLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCi0JCXNlZCAtaSAtZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnIFwKLQkJCS1lICdzLEBTWVNDT05GRElSQCwke3N5c2NvbmZkaXJ9LGcnIFwKLQkJCS1lICdzLEBCSU5ESVJALCR7YmluZGlyfSxnJyBcCi0JCQktZSAncyxAU1lTVEVNRF9VTklURElSQCwke3N5c3RlbWRfdW5pdGRpcn0sZycgXAotCQkJJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vb3BrZy1jb25maWd1cmUuc2VydmljZQotCWZpCi19Ci0KLVJERVBFTkRTXyR7UE59ID0gIiR7VklSVFVBTC1SVU5USU1FX3VwZGF0ZS1hbHRlcm5hdGl2ZXN9IG9wa2ctYXJjaC1jb25maWcgbGliYXJjaGl2ZSIKLVJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCi1SREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmVzZGsgPSAiIgotUlJFUExBQ0VTXyR7UE59ID0gIm9wa2ctbm9ncGcgb3BrZy1jb2xsYXRlcmFsIgotUkNPTkZMSUNUU18ke1BOfSA9ICJvcGtnLWNvbGxhdGVyYWwiCi1SUFJPVklERVNfJHtQTn0gPSAib3BrZy1jb2xsYXRlcmFsIgotCi1QQUNLQUdFUyA9KyAibGlib3BrZyIKLQotRklMRVNfbGlib3BrZyA9ICIke2xpYmRpcn0vKi5zby4qICR7T1BLR0xJQkRJUn0vb3BrZy8iCi1GSUxFU18ke1BOfSArPSAiJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vb3BrZy9vcGtnLmNvbmYiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZ18wLjMuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnXzAuMy41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlNTExYjYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZ18wLjMuNS5iYgpAQCAtMCwwICsxLDc1IEBACitTVU1NQVJZID0gIk9wZW4gUGFja2FnZSBNYW5hZ2VyIgorU1VNTUFSWV9saWJvcGtnID0gIk9wZW4gUGFja2FnZSBNYW5hZ2VyIGxpYnJhcnkiCitTRUNUSU9OID0gImJhc2UiCitIT01FUEFHRSA9ICJodHRwOi8vY29kZS5nb29nbGUuY29tL3Avb3BrZy8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9vcGtnL2lzc3Vlcy9saXN0IgorTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvb3BrZy5jO2JlZ2lubGluZT0yO2VuZGxpbmU9MjE7bWQ1PTkwNDM1YTUxOWM2ZWE2OWVmMjJlNGE4OGJjYzUyZmEwIgorCitERVBFTkRTID0gImxpYmFyY2hpdmUiCisKK1BFID0gIjEiCisKK1NSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL3JlbGVhc2VzLyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL29wa2ctY29uZmlndXJlLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vb3BrZy5jb25mIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtb3BrZ19jb25mLWNyZWF0ZS1vcGtnLmxvY2staW4tcnVuLWluc3RlYWQtb2YtdmFyLXJ1bi5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkMjAyZDA5ZWEwOTMyOTQzMDcxYjg0MjYyNmNhYjEzYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3MzRiYzIxZGVhMTEyNjIxMTNmYTg2YjkyOGQwOTgxMjYxOGIzOTY2ZjM1MjM1MGNmOTE2YTZhZTBkMzQzZjMyIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgc3lzdGVtZAorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAib3BrZy1jb25maWd1cmUuc2VydmljZSIKKwordGFyZ2V0X2xvY2Fsc3RhdGVkaXIgOj0gIiR7bG9jYWxzdGF0ZWRpcn0iCitPUEtHTElCRElSID0gIiR7dGFyZ2V0X2xvY2Fsc3RhdGVkaXJ9L2xpYiIKKworUEFDS0FHRUNPTkZJRyA/Pz0gImxpYnNvbHYiCisKK1BBQ0tBR0VDT05GSUdbZ3BnXSA9ICItLWVuYWJsZS1ncGcsLS1kaXNhYmxlLWdwZyxncGdtZSBsaWJncGctZXJyb3IsZ251cGciCitQQUNLQUdFQ09ORklHW2N1cmxdID0gIi0tZW5hYmxlLWN1cmwsLS1kaXNhYmxlLWN1cmwsY3VybCIKK1BBQ0tBR0VDT05GSUdbc3NsLWN1cmxdID0gIi0tZW5hYmxlLXNzbC1jdXJsLC0tZGlzYWJsZS1zc2wtY3VybCxjdXJsIG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0tZW5hYmxlLW9wZW5zc2wsLS1kaXNhYmxlLW9wZW5zc2wsb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdbc2hhMjU2XSA9ICItLWVuYWJsZS1zaGEyNTYsLS1kaXNhYmxlLXNoYTI1NiIKK1BBQ0tBR0VDT05GSUdbcGF0aGZpbmRlcl0gPSAiLS1lbmFibGUtcGF0aGZpbmRlciwtLWRpc2FibGUtcGF0aGZpbmRlcixwYXRoZmluZGVyIgorUEFDS0FHRUNPTkZJR1tsaWJzb2x2XSA9ICItLXdpdGgtbGlic29sdiwtLXdpdGhvdXQtbGlic29sdixsaWJzb2x2IgorCitFWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIi0tbG9jYWxzdGF0ZWRpcj0vJHtAb3MucGF0aC5yZWxwYXRoKCcke2xvY2Fsc3RhdGVkaXJ9JywgJyR7U1RBR0lOR19ESVJfTkFUSVZFfScpfSAtLXN5c2NvbmZkaXI9LyR7QG9zLnBhdGgucmVscGF0aCgnJHtzeXNjb25mZGlyfScsICcke1NUQUdJTkdfRElSX05BVElWRX0nKX0iCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L29wa2cKKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9vcGtnLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vb3BrZy9vcGtnLmNvbmYKKwllY2hvICJvcHRpb24gbGlzdHNfZGlyICR7T1BLR0xJQkRJUn0vb3BrZy9saXN0cyIgPj4ke0R9JHtzeXNjb25mZGlyfS9vcGtnL29wa2cuY29uZgorCisJIyBXZSBuZWVkIHRvIGNyZWF0ZSB0aGUgbG9jayBkaXJlY3RvcnkKKwlpbnN0YWxsIC1kICR7RH0ke09QS0dMSUJESVJ9L29wa2cKKworCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07dGhlbgorCQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L29wa2ctY29uZmlndXJlLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCisJCXNlZCAtaSAtZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnIFwKKwkJCS1lICdzLEBTWVNDT05GRElSQCwke3N5c2NvbmZkaXJ9LGcnIFwKKwkJCS1lICdzLEBCSU5ESVJALCR7YmluZGlyfSxnJyBcCisJCQktZSAncyxAU1lTVEVNRF9VTklURElSQCwke3N5c3RlbWRfdW5pdGRpcn0sZycgXAorCQkJJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vb3BrZy1jb25maWd1cmUuc2VydmljZQorCWZpCit9CisKK1JERVBFTkRTXyR7UE59ID0gIiR7VklSVFVBTC1SVU5USU1FX3VwZGF0ZS1hbHRlcm5hdGl2ZXN9IG9wa2ctYXJjaC1jb25maWcgbGliYXJjaGl2ZSIKK1JERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCitSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmVzZGsgPSAiIgorUlJFUExBQ0VTXyR7UE59ID0gIm9wa2ctbm9ncGcgb3BrZy1jb2xsYXRlcmFsIgorUkNPTkZMSUNUU18ke1BOfSA9ICJvcGtnLWNvbGxhdGVyYWwiCitSUFJPVklERVNfJHtQTn0gPSAib3BrZy1jb2xsYXRlcmFsIgorCitQQUNLQUdFUyA9KyAibGlib3BrZyIKKworRklMRVNfbGlib3BrZyA9ICIke2xpYmRpcn0vKi5zby4qICR7T1BLR0xJQkRJUn0vb3BrZy8iCitGSUxFU18ke1BOfSArPSAiJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vb3BrZy9vcGtnLmNvbmYiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29yYy9vcmNfMC40LjI2LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcmMvb3JjXzAuNC4yNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQ3MzQyZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29yYy9vcmNfMC40LjI2LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotU1VNTUFSWSA9ICJPcHRpbWlzZWQgSW5uZXIgTG9vcCBSdW50aW1lIENvbXBpbGVyIgotSE9NRVBBR0UgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvbW9kdWxlcy9vcmMuaHRtbCIKLUxJQ0VOU0UgPSAiQlNELTItQ2xhdXNlICYgQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTQwMGJkOWQwOWU4YWY1NmI5ZWM5ODJiM2Q4NTc5N2UiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL29yYy9vcmMtJHtQVn0udGFyLnh6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOGU5YmVmNjc3YmFlMjg5ZDMzMjRkODFjMzM3YTQ1MDciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2Q1MmZhODBlZjg0OTg4MzU5YzM0MzRlMWVlYTMwMmQwNzdhMDg5ODdhYmRkZTY5MDU2NzhlYmNhZDRmYTY0OSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGd0ay1kb2MKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1QQUNLQUdFUyA9KyAib3JjLWV4YW1wbGVzIgotUEFDS0FHRVNfRFlOQU1JQyArPSAiXmxpYm9yYy0uKiIKLUZJTEVTX29yYy1leGFtcGxlcyA9ICIke2xpYmRpcn0vb3JjLyoiCi1GSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vKiIKLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgewotICAgIGxpYmRpciA9IGQuZXhwYW5kKCcke2xpYmRpcn0nKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpYmRpciwgJ15saWIoLiopXC5zb1wuKicsICdsaWIlcycsICdPUkMgJXMgbGlicmFyeScsIGV4dHJhX2RlcGVuZHM9JycsIGFsbG93X2xpbmtzPVRydWUpCi19Ci0KLWRvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy1uYXRpdmUgKCkgewotICAgIHNlZCAtaSAtZSAncyMvdG1wIy4jZycgJHtTfS9vcmMvb3JjY29kZW1lbS5jCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29yYy9vcmNfMC40LjI3LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcmMvb3JjXzAuNC4yNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDNmOTkxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcmMvb3JjXzAuNC4yNy5iYgpAQCAtMCwwICsxLDI3IEBACitTVU1NQVJZID0gIk9wdGltaXNlZCBJbm5lciBMb29wIFJ1bnRpbWUgQ29tcGlsZXIiCitIT01FUEFHRSA9ICJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9tb2R1bGVzL29yYy5odG1sIgorTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UgJiBCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xNDAwYmQ5ZDA5ZThhZjU2YjllYzk4MmIzZDg1Nzk3ZSIKKworU1JDX1VSSSA9ICJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvb3JjL29yYy0ke1BWfS50YXIueHoiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1ODM3ZGMyMGRhY2I1YjY2ODkzNWJiZGVkMTBjYmI2MSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1MWU1M2U1OGZjODE1OGU1OTg2YTFmMWE0OWE2ZDk3MGM1YjE2NDkzODQxY2Y3YjlkZTJjMmJkZTdjZTM2YjkzIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ3RrLWRvYworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK1BBQ0tBR0VTID0rICJvcmMtZXhhbXBsZXMiCitQQUNLQUdFU19EWU5BTUlDICs9ICJebGlib3JjLS4qIgorRklMRVNfb3JjLWV4YW1wbGVzID0gIiR7bGliZGlyfS9vcmMvKiIKK0ZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS8qIgorCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7CisgICAgbGliZGlyID0gZC5leHBhbmQoJyR7bGliZGlyfScpCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgbGliZGlyLCAnXmxpYiguKilcLnNvXC4qJywgJ2xpYiVzJywgJ09SQyAlcyBsaWJyYXJ5JywgZXh0cmFfZGVwZW5kcz0nJywgYWxsb3dfbGlua3M9VHJ1ZSkKK30KKworZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7CisgICAgc2VkIC1pIC1lICdzIy90bXAjLiNnJyAke1N9L29yYy9vcmNjb2RlbWVtLmMKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3NzcC11dWlkL29zc3AtdXVpZC9saWJ0b29sLXRhZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3NzcC11dWlkL29zc3AtdXVpZC9saWJ0b29sLXRhZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZjYwMWFmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vc3NwLXV1aWQvb3NzcC11dWlkL2xpYnRvb2wtdGFnLnBhdGNoCkBAIC0wLDAgKzEsMjEgQEAKK1JlcGVjdCBMSUJUT09MRkxBR1MKKworVGhpcyBhZGQgYSBrbm9iIHRoYXQgY2FuIGJlIGNvbnRyb2xsZWQgZnJvbSBlbnYgdG8gc2V0IGdlbmVyaWMgb3B0aW9ucworZm9yIGxpYnRvb2wKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitJbmRleDogdXVpZC0xLjYuMi9NYWtlZmlsZS5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHV1aWQtMS42LjIub3JpZy9NYWtlZmlsZS5pbgorKysrIHV1aWQtMS42LjIvTWFrZWZpbGUuaW4KK0BAIC01Niw3ICs1Niw3IEBAIFJNICAgICAgICAgID0gcm0gLWYKKyBDUCAgICAgICAgICA9IGNwCisgUk1ESVIgICAgICAgPSBybWRpcgorIFNIVE9PTCAgICAgID0gJChTKS9zaHRvb2wKKy1MSUJUT09MICAgICA9IEBMSUJUT09MQAorK0xJQlRPT0wgICAgID0gQExJQlRPT0xAICQoTElCVE9PTEZMQUdTKQorIFRSVUUgICAgICAgID0gdHJ1ZQorIFBPRDJNQU4gICAgID0gcG9kMm1hbgorIFBFUkwgICAgICAgID0gQFBFUkxACmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29zc3AtdXVpZC9vc3NwLXV1aWRfMS42LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29zc3AtdXVpZC9vc3NwLXV1aWRfMS42LjIuYmIKaW5kZXggODVhMWJjZi4uNWQ5Y2E3OSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vc3NwLXV1aWQvb3NzcC11dWlkXzEuNi4yLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3NzcC11dWlkL29zc3AtdXVpZF8xLjYuMi5iYgpAQCAtMjcsNiArMjcsNyBAQAogCSAgIGZpbGU6Ly91dWlkLW5vc3RyaXAucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vaW5zdGFsbC1wYy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9sZGZsYWdzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2xpYnRvb2wtdGFnLnBhdGNoIFwKIAkgICIKIFNSQ19VUklbbWQ1c3VtXSA9ICI1ZGIwZDQzYTkwMjJhNmViYmJjMjUzMzdhZTI4OTQyZiIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIxMWE2MTUyMjViYWE1ZjhiYjY4NjgyNDQyM2Y1MGU0NDI3YWNkM2Y3MGQzOTQ3NjViZGZmMzI4MDFmMGZkNWIwIgpAQCAtMzcsNiArMzgsNyBAQAogCiBFWFRSQV9PRUNPTkYgPSAiLS13aXRob3V0LWRjZSAtLXdpdGhvdXQtY3h4IC0td2l0aG91dC1wZXJsIC0td2l0aG91dC1wZXJsLWNvbXBhdCAtLXdpdGhvdXQtcGhwIC0td2l0aG91dC1wZ3NxbCIKIEVYVFJBX09FQ09ORiA9ICItLWluY2x1ZGVkaXI9JHtpbmNsdWRlZGlyfS9vc3NwIgorRVhUUkFfT0VNQUtFX2NsYXNzLXRhcmdldCA9ICJMSUJUT09MRkxBR1M9Jy0tdGFnPUNDJyIKIAogZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CiAgICMgVGhpcyBwYWNrYWdlIGhhcyBhIGNvbXBsZXRlbHkgY3VzdG9tIGFjbG9jYWwubTQsIHdoaWNoIHNob3VsZCBiZSBhY2luY2x1ZGUubTQuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoZWxmL3BhdGNoZWxmL2F2b2lkaG9sZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoZWxmL3BhdGNoZWxmL2F2b2lkaG9sZXMucGF0Y2gKaW5kZXggYTI3MzY4OC4uMGI0NWMzOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wYXRjaGVsZi9wYXRjaGVsZi9hdm9pZGhvbGVzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF0Y2hlbGYvcGF0Y2hlbGYvYXZvaWRob2xlcy5wYXRjaApAQCAtMzEsNyArMzEsNyBAQAogUlAKIDIwMTcvMy83CiAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZworVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZAogCiBJbmRleDogcGF0Y2hlbGYtMC45L3NyYy9wYXRjaGVsZi5jYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wYXRjaGVsZi9wYXRjaGVsZi9maXgtYWRqdXN0aW5nLXN0YXJ0UGFnZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF0Y2hlbGYvcGF0Y2hlbGYvZml4LWFkanVzdGluZy1zdGFydFBhZ2UucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjY0Y2JlZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF0Y2hlbGYvcGF0Y2hlbGYvZml4LWFkanVzdGluZy1zdGFydFBhZ2UucGF0Y2gKQEAgLTAsMCArMSwzOCBAQAorY29tbWl0IDFjYzIzNGZlYTU2MDAxOTBkODcyMzI5YWNhNjBlMjM2NWNlZmMzOWUKK0F1dGhvcjogRWQgQmFydG9zaCA8ZWQuYmFydG9zaEBsaW51eC5pbnRlbC5jb20+CitEYXRlOiAgIEZyaSBKdWwgMjEgMTI6MzM6NTMgMjAxNyArMDMwMAorCitmaXggYWRqdXN0aW5nIHN0YXJ0UGFnZQorCitzdGFydFBhZ2UgaXMgYWRqdXN0ZWQgdW5jb25kaXRpb25hbGx5IGZvciBhbGwgZXhlY3V0YWJsZXMuCitUaGlzIHJlc3VsdHMgaW4gaW5jb3JyZWN0IGFkZHJlc3NlcyBhc3NpZ25lZCB0byBJTlRFUlAgYW5kIExPQUQKK3Byb2dyYW0gaGVhZGVycywgd2hpY2ggYnJlYWtzIHBhdGNoZWQgZXhlY3V0YWJsZS4KKworQWRqdXN0aW5nIHN0YXJ0UGFnZSB2YXJpYWJsZSBvbmx5IHdoZW4gc3RhcnRPZmZzZXQgPiBzdGFydFBhZ2UKK3Nob3VsZCBmaXggdGhpcy4KKworVGhpcyBjaGFuZ2UgaXMgcmVsYXRlZCB0byB0aGUgaXNzdWUgTml4T1MjMTAKKworU2lnbmVkLW9mZi1ieTogRWQgQmFydG9zaCA8ZWQuYmFydG9zaEBsaW51eC5pbnRlbC5jb20+CisKK0dpdGh1YiBQUjogaHR0cHM6Ly9naXRodWIuY29tL05peE9TL3BhdGNoZWxmL3B1bGwvMTI3CisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCisKK2RpZmYgLS1naXQgYS9zcmMvcGF0Y2hlbGYuY2MgYi9zcmMvcGF0Y2hlbGYuY2MKK2luZGV4IGNiZDM2YzAuLmU5ZDdlYTUgMTAwNjQ0CistLS0gYS9zcmMvcGF0Y2hlbGYuY2MKKysrKyBiL3NyYy9wYXRjaGVsZi5jYworQEAgLTcyMCwxMCArNzIwLDggQEAgdm9pZCBFbGZGaWxlPEVsZkZpbGVQYXJhbU5hbWVzPjo6cmV3cml0ZVNlY3Rpb25zTGlicmFyeSgpCisgICAgICAgIHNpbmNlIERZTiBleGVjdXRhYmxlcyB0ZW5kIHRvIHN0YXJ0IGF0IHZpcnR1YWwgYWRkcmVzcyAwLCBzbworICAgICAgICByZXdyaXRlU2VjdGlvbnNFeGVjdXRhYmxlKCkgd29uJ3Qgd29yayBiZWNhdXNlIGl0IGRvZXNuJ3QgaGF2ZQorICAgICAgICBhbnkgdmlydHVhbCBhZGRyZXNzIHNwYWNlIHRvIGdyb3cgZG93bndhcmRzIGludG8uICovCistICAgIGlmIChpc0V4ZWN1dGFibGUpIHsKKy0gICAgICAgIGlmIChzdGFydE9mZnNldCA+PSBzdGFydFBhZ2UpIHsKKy0gICAgICAgICAgICBkZWJ1Zygic2hpZnRpbmcgbmV3IFBUX0xPQUQgc2VnbWVudCBieSAlZCBieXRlcyB0byB3b3JrIGFyb3VuZCBhIExpbnV4IGtlcm5lbCBidWdcbiIsIHN0YXJ0T2Zmc2V0IC0gc3RhcnRQYWdlKTsKKy0gICAgICAgIH0KKysgICAgaWYgKGlzRXhlY3V0YWJsZSAmJiBzdGFydE9mZnNldCA+IHN0YXJ0UGFnZSkgeworKyAgICAgICAgZGVidWcoInNoaWZ0aW5nIG5ldyBQVF9MT0FEIHNlZ21lbnQgYnkgJWQgYnl0ZXMgdG8gd29yayBhcm91bmQgYSBMaW51eCBrZXJuZWwgYnVnXG4iLCBzdGFydE9mZnNldCAtIHN0YXJ0UGFnZSk7CisgICAgICAgICBzdGFydFBhZ2UgPSBzdGFydE9mZnNldDsKKyAgICAgfQorIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wYXRjaGVsZi9wYXRjaGVsZl8wLjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoZWxmL3BhdGNoZWxmXzAuOS5iYgppbmRleCAwMWYwZTYyLi5kNzAzMDM5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoZWxmL3BhdGNoZWxmXzAuOS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoZWxmL3BhdGNoZWxmXzAuOS5iYgpAQCAtMyw2ICszLDcgQEAKICAgICAgICAgICAgZmlsZTovL2hhbmRsZS1yZWFkLW9ubHktZmlsZXMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vSW5jcmVhc2UtbWF4U2l6ZS10by02NE1CLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2F2b2lkaG9sZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZml4LWFkanVzdGluZy1zdGFydFBhZ2UucGF0Y2ggXAogIgogCiBMSUNFTlNFID0gIkdQTHYzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wYXgtdXRpbHMvcGF4LXV0aWxzXzEuMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wYXgtdXRpbHMvcGF4LXV0aWxzXzEuMi4yLmJiCmluZGV4IDQ3NmZhNmYuLjk2MzVhNWUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF4LXV0aWxzL3BheC11dGlsc18xLjIuMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BheC11dGlscy9wYXgtdXRpbHNfMS4yLjIuYmIKQEAgLTcsOSArNyw3IEBACiBMSUNFTlNFID0gIkdQTHYyKyIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWViNzIzYjYxNTM5ZmVlZjAxM2RlNDc2ZTY4YjVjNTBhIgogCi1TUkNfVVJJID0gImh0dHA6Ly9nZW50b28ub3N1b3NsLm9yZy9kaXN0ZmlsZXMvcGF4LXV0aWxzLSR7UFZ9LnRhci54eiBcCi0iCi0KK1NSQ19VUkkgPSAiaHR0cHM6Ly9kZXYuZ2VudG9vLm9yZy9+dmFwaWVyL2Rpc3QvcGF4LXV0aWxzLSR7UFZ9LnRhci54eiIKIFNSQ19VUklbbWQ1c3VtXSA9ICJhNTgwNDY4MzE4ZjBmZjQyZWRmNGE4Y2QzMTRjYzk0MiIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZjRhN2Y4ZGI2YjQ3NDNhZGRlNzU4MmZhNDg5OTJhZDAxNzc2Nzk2ZmNkZTAzMDY4MzczMmY1NjIyMTMzN2Q5IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlidXJpLXBlcmxfMS43MS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ1cmktcGVybF8xLjcxLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MzI4MDNjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ1cmktcGVybF8xLjcxLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotU1VNTUFSWSA9ICJQZXJsIG1vZHVsZSB0byBtYW5pcHVsYXRlIGFuZCBhY2Nlc3MgVVJJIHN0cmluZ3MiCi1ERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgY29udGFpbnMgdGhlIFVSSS5wbSBtb2R1bGUgd2l0aCBmcmllbmRzLiBcCi1UaGUgbW9kdWxlIGltcGxlbWVudHMgdGhlIFVSSSBjbGFzcy4gVVJJIG9iamVjdHMgY2FuIGJlIHVzZWQgdG8gYWNjZXNzIFwKLWFuZCBtYW5pcHVsYXRlIHRoZSB2YXJpb3VzIGNvbXBvbmVudHMgdGhhdCBtYWtlIHVwIHRoZXNlIHN0cmluZ3MuIgotCi1IT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL2Rpc3QvVVJJLyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWM0NTNlOTRmYWU2NzI4MDBmODNiYzFiZDdhMzhiNTNmIgotCi1ERVBFTkRTICs9ICJwZXJsIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWlycm9yL3NvdXJjZXMvVVJJLSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjI0N2MzZGEyOWE3OTRmNzI3MzBlMDFhYTVhNzE1ZGFmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjljOGVjYTBkN2YzOWU3NGJiYzE0NzA2MjkzZTY1M2I2OTkyMzhlZWIxYTc2OTBjYzljMTM2ZmI4YzI2NDQxMTUiCi0KLVMgPSAiJHtXT1JLRElSfS9VUkktJHtQVn0iCi0KLUVYVFJBX0NQQU5GTEFHUyA9ICJFWFBBVExJQlBBVEg9JHtTVEFHSU5HX0xJQkRJUn0gRVhQQVRJTkNQQVRIPSR7U1RBR0lOR19JTkNESVJ9IgotCi1pbmhlcml0IGNwYW4KLQotZG9fY29tcGlsZSgpIHsKLQlleHBvcnQgTElCQz0iJChmaW5kICR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke2Jhc2VfbGliZGlyfS8gLW5hbWUgJ2xpYmMtKi5zbycpIgotCWNwYW5fZG9fY29tcGlsZQotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ1cmktcGVybF8xLjcyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnVyaS1wZXJsXzEuNzIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTM5OWMxMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ1cmktcGVybF8xLjcyLmJiCkBAIC0wLDAgKzEsMzAgQEAKK1NVTU1BUlkgPSAiUGVybCBtb2R1bGUgdG8gbWFuaXB1bGF0ZSBhbmQgYWNjZXNzIFVSSSBzdHJpbmdzIgorREVTQ1JJUFRJT04gPSAiVGhpcyBwYWNrYWdlIGNvbnRhaW5zIHRoZSBVUkkucG0gbW9kdWxlIHdpdGggZnJpZW5kcy4gXAorVGhlIG1vZHVsZSBpbXBsZW1lbnRzIHRoZSBVUkkgY2xhc3MuIFVSSSBvYmplY3RzIGNhbiBiZSB1c2VkIHRvIGFjY2VzcyBcCithbmQgbWFuaXB1bGF0ZSB0aGUgdmFyaW91cyBjb21wb25lbnRzIHRoYXQgbWFrZSB1cCB0aGVzZSBzdHJpbmdzLiIKKworSE9NRVBBR0UgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9kaXN0L1VSSS8iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jNDUzZTk0ZmFlNjcyODAwZjgzYmMxYmQ3YTM4YjUzZiIKKworREVQRU5EUyArPSAicGVybCIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmNwYW4ub3JnL2F1dGhvcnMvaWQvRS9FVC9FVEhFUi9VUkktJHtQVn0udGFyLmd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiY2Q1NmQ4MWVkNDI5ZWZhYTk3ZTdmM2ZmMDg4NTFiNDgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzVmMTQ0MzFkNGIzMDBkZTRiZTExNjNiMGI1MzMyZGUyZDdmYmRhNGYwNWZmMWVkMTk4YThlOTMzMGQ0MGEzMiIKKworUyA9ICIke1dPUktESVJ9L1VSSS0ke1BWfSIKKworRVhUUkFfQ1BBTkZMQUdTID0gIkVYUEFUTElCUEFUSD0ke1NUQUdJTkdfTElCRElSfSBFWFBBVElOQ1BBVEg9JHtTVEFHSU5HX0lOQ0RJUn0iCisKK2luaGVyaXQgY3BhbgorCitkb19jb21waWxlKCkgeworCWV4cG9ydCBMSUJDPSIkKGZpbmQgJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7YmFzZV9saWJkaXJ9LyAtbmFtZSAnbGliYy0qLnNvJykiCisJY3Bhbl9kb19jb21waWxlCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnhtbC1wYXJzZXItcGVybF8yLjQ0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnhtbC1wYXJzZXItcGVybF8yLjQ0LmJiCmluZGV4IGQ5YmJmNzEuLmNjM2E2NjAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ4bWwtcGFyc2VyLXBlcmxfMi40NC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlieG1sLXBhcnNlci1wZXJsXzIuNDQuYmIKQEAgLTEsNCArMSw1IEBACiBTVU1NQVJZID0gIlhNTDo6UGFyc2VyIC0gQSBwZXJsIG1vZHVsZSBmb3IgcGFyc2luZyBYTUwgZG9jdW1lbnRzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9saWJleHBhdC5naXRodWIuaW8vIgogU0VDVElPTiA9ICJsaWJzIgogTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9MjtlbmRsaW5lPTY7bWQ1PWM4NzY3ZDc1MTYyMjlmMDdiMjZlNDJkMWNmOGI1MWYxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnhtbC1wZXJsXzAuMDguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlieG1sLXBlcmxfMC4wOC5iYgppbmRleCAyYzAxOTc2Li4wNDc4NDI3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlieG1sLXBlcmxfMC4wOC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlieG1sLXBlcmxfMC4wOC5iYgpAQCAtMiw2ICsyLDcgQEAKIGRvY3VtZW50cyBmb3Igd29ya2luZyB3aXRoIFhNTCBpbiBQZXJsLiAgbGlieG1sLXBlcmwgc29mdHdhcmUgXAogd29ya3MgaW4gY29tYmluYXRpb24gd2l0aCBYTUw6OlBhcnNlciwgUGVybFNBWCwgWE1MOjpET00sIFwKIFhNTDo6R3JvdmUgYW5kIG90aGVycy4iCitIT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL2Rpc3QvbGlieG1sLXBlcmwvIgogU1VNTUFSWSA9ICJDb2xsZWN0aW9uIG9mIFBlcmwgbW9kdWxlcyBmb3Igd29ya2luZyB3aXRoIFhNTCIKIFNFQ1RJT04gPSAibGlicyIKIExJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlieG1sLXNpbXBsZS1wZXJsXzIuMjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlieG1sLXNpbXBsZS1wZXJsXzIuMjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyNDNiYjIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnhtbC1zaW1wbGUtcGVybF8yLjIyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotU1VNTUFSWSA9ICJQZXJsIG1vZHVsZSBmb3IgcmVhZGluZyBhbmQgd3JpdGluZyBYTUwiCi1ERVNDUklQVElPTiA9ICJUaGUgWE1MOjpTaW1wbGUgUGVybCBtb2R1bGUgcHJvdmlkZXMgYSBzaW1wbGUgQVBJIGxheWVyIFwKLW9uIHRvcCBvZiBhbiB1bmRlcmx5aW5nIFhNTCBwYXJzaW5nIG1vZHVsZSB0byBtYWludGFpbiBYTUwgZmlsZXMgXAotKGVzcGVjaWFsbHkgY29uZmlndXJhdGlvbiBmaWxlcykuIEl0IGlzIGEgYmx1bnQgcmV3cml0ZSBvZiBYTUw6OlNpbXBsZSBcCi0oYnkgR3JhbnQgTWNMZWFuKSB0byB1c2UgdGhlIFhNTDo6TGliWE1MIHBhcnNlciBmb3IgWE1MIHN0cnVjdHVyZXMsIFwKLXdoZXJlIHRoZSBvcmlnaW5hbCB1c2VzIHBsYWluIFBlcmwgb3IgU0FYIHBhcnNlcnMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9+bWFya292L1hNTC1MaWJYTUwtU2ltcGxlLTAuOTMvbGliL1hNTC9MaWJYTUwvU2ltcGxlLnBvZCIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1mYTExODdmY2VkYTAwZWVlMTBiNjI5NjE0MDdlYTdiZSIKLURFUEVORFMgKz0gImxpYnhtbC1wYXJzZXItcGVybCIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmNwYW4ub3JnL21vZHVsZXMvYnktbW9kdWxlL1hNTC9YTUwtU2ltcGxlLSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjA5MTRhYmRkZmNlNzQ5NDUzZWQ4OWI1NDAyOWYyNjQzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImI5NDUwZWYyMmVhOTY0NGFlNWQ2YWRhMDg2ZGM0MzAwZmExMDViZTA1MGEyMDMwZWJkNGVmZDI4YzE5OGViNDkiCi0KLVMgPSAiJHtXT1JLRElSfS9YTUwtU2ltcGxlLSR7UFZ9IgotCi1FWFRSQV9QRVJMRkxBR1MgPSAiLUkgJHtQRVJMSE9TVExJQn0iCi0KLWluaGVyaXQgY3BhbgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ4bWwtc2ltcGxlLXBlcmxfMi4yNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ4bWwtc2ltcGxlLXBlcmxfMi4yNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wY2YyZWViCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYnhtbC1zaW1wbGUtcGVybF8yLjI0LmJiCkBAIC0wLDAgKzEsMjQgQEAKK1NVTU1BUlkgPSAiUGVybCBtb2R1bGUgZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcgWE1MIgorREVTQ1JJUFRJT04gPSAiVGhlIFhNTDo6U2ltcGxlIFBlcmwgbW9kdWxlIHByb3ZpZGVzIGEgc2ltcGxlIEFQSSBsYXllciBcCitvbiB0b3Agb2YgYW4gdW5kZXJseWluZyBYTUwgcGFyc2luZyBtb2R1bGUgdG8gbWFpbnRhaW4gWE1MIGZpbGVzIFwKKyhlc3BlY2lhbGx5IGNvbmZpZ3VyYXRpb24gZmlsZXMpLiBJdCBpcyBhIGJsdW50IHJld3JpdGUgb2YgWE1MOjpTaW1wbGUgXAorKGJ5IEdyYW50IE1jTGVhbikgdG8gdXNlIHRoZSBYTUw6OkxpYlhNTCBwYXJzZXIgZm9yIFhNTCBzdHJ1Y3R1cmVzLCBcCit3aGVyZSB0aGUgb3JpZ2luYWwgdXNlcyBwbGFpbiBQZXJsIG9yIFNBWCBwYXJzZXJzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvfm1hcmtvdi9YTUwtTGliWE1MLVNpbXBsZS0wLjkzL2xpYi9YTUwvTGliWE1ML1NpbXBsZS5wb2QiCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MjM0NzdlMThhMGQwNDM5MmNkZjQ0YWU3MGU0OWI0OTUiCitERVBFTkRTICs9ICJsaWJ4bWwtcGFyc2VyLXBlcmwiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5jcGFuLm9yZy9tb2R1bGVzL2J5LW1vZHVsZS9YTUwvWE1MLVNpbXBsZS0ke1BWfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIxY2QyZThlMzQyMTE2MGM0MjI3NzUyM2Q1YjJmNGRkMiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5YTE0ODE5ZmQxN2M3NWZiYjkwYWRjZWMwNDQ2Y2VhYjM1NmNhYjBjY2FmZjg3MGYyZTE2NTkyMDVkYzI0MjRmIgorCitTID0gIiR7V09SS0RJUn0vWE1MLVNpbXBsZS0ke1BWfSIKKworRVhUUkFfUEVSTEZMQUdTID0gIi1JICR7UEVSTEhPU1RMSUJ9IgorCitpbmhlcml0IGNwYW4KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC1uYXRpdmVfNS4yNC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwtbmF0aXZlXzUuMjQuMS5iYgppbmRleCBlMDFkMTFmLi42YzU2YTdkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC1uYXRpdmVfNS4yNC4xLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsLW5hdGl2ZV81LjI0LjEuYmIKQEAgLTMyLDYgKzMyLDcgQEAKIAkJLURjYz0iJHtDQ30iIFwKIAkJLURjZmxhZ3M9IiR7Q0ZMQUdTfSIgXAogCQktRGxkZmxhZ3M9IiR7TERGTEFHU30iIFwKKwkJLURsZGRsZmxhZ3M9IiR7TERGTEFHU30gLXNoYXJlZCIgXAogCQktRGNmX2J5PSJPcGVuIEVtYmVkZGVkIiBcCiAJCS1EcHJlZml4PSR7cHJlZml4fSBcCiAJCS1EdmVuZG9ycHJlZml4PSR7cHJlZml4fSBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC8wMDAxLUNvbmZpZ3VyZS1SZW1vdmUtZnN0YWNrLXByb3RlY3Rvci1zdHJvbmctZm9yLW5hdGl2ZS0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC8wMDAxLUNvbmZpZ3VyZS1SZW1vdmUtZnN0YWNrLXByb3RlY3Rvci1zdHJvbmctZm9yLW5hdGl2ZS0ucGF0Y2gKaW5kZXggNzM5MWFjNS4uMTRhMDVkMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvMDAwMS1Db25maWd1cmUtUmVtb3ZlLWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nLWZvci1uYXRpdmUtLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsLzAwMDEtQ29uZmlndXJlLVJlbW92ZS1mc3RhY2stcHJvdGVjdG9yLXN0cm9uZy1mb3ItbmF0aXZlLS5wYXRjaApAQCAtMTAsNyArMTAsNyBAQAogCiBbWU9DVE8gIzEwMzM4XQogCi1VcHN0cmVhbS1zdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCiAKIFsxXSBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMTA5NTg5LwogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vY3Bhbi1taXNzaW5nLXNpdGUtZGlycy5kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2NwYW4tbWlzc2luZy1zaXRlLWRpcnMuZGlmZgppbmRleCBhNjNiOTY4Li5jNTk3NzAxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vY3Bhbi1taXNzaW5nLXNpdGUtZGlycy5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9jcGFuLW1pc3Npbmctc2l0ZS1kaXJzLmRpZmYKQEAgLTEzLDYgKzEzLDcgQEAKIAogQnVnLURlYmlhbjogaHR0cDovL2J1Z3MuZGViaWFuLm9yZy82ODg4NDIKIFBhdGNoLU5hbWU6IGRlYmlhbi9jcGFuLW1pc3Npbmctc2l0ZS1kaXJzLmRpZmYKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgY3Bhbi9DUEFOL2xpYi9DUEFOL0ZpcnN0VGltZS5wbSB8IDMxICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0KICAxIGZpbGUgY2hhbmdlZCwgMjcgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9jcGFuX2RlZmluc3RhbGxkaXJzLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vY3Bhbl9kZWZpbnN0YWxsZGlycy5kaWZmCmluZGV4IDZiNTI5NTAuLjU3MmYxNDkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9jcGFuX2RlZmluc3RhbGxkaXJzLmRpZmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2NwYW5fZGVmaW5zdGFsbGRpcnMuZGlmZgpAQCAtOSw2ICs5LDcgQEAKIG9yZGVyaW5nLCBidXQgbm90IG91cnMuCiAKIFBhdGNoLU5hbWU6IGRlYmlhbi9jcGFuX2RlZmluc3RhbGxkaXJzLmRpZmYKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgY3Bhbi9DUEFOL2xpYi9DUEFOL0ZpcnN0VGltZS5wbSB8IDQgKystLQogIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZGJfZmlsZV92ZXIuZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9kYl9maWxlX3Zlci5kaWZmCmluZGV4IDI4MGJmMTEuLjA4NjE2NTAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9kYl9maWxlX3Zlci5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9kYl9maWxlX3Zlci5kaWZmCkBAIC04LDYgKzgsNyBAQAogUGFja2FnZSBkZXBlbmRlbmNpZXMgZW5zdXJlIHRoZSBjb3JyZWN0IGxpYnJhcnkgaXMgbGlua2VkIGF0IHJ1bi10aW1lLgogCiBQYXRjaC1OYW1lOiBkZWJpYW4vZGJfZmlsZV92ZXIuZGlmZgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICBjcGFuL0RCX0ZpbGUvdmVyc2lvbi5jIHwgMiArKwogIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9kZXByZWNhdGUtd2l0aC1hcHQuZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9kZXByZWNhdGUtd2l0aC1hcHQuZGlmZgppbmRleCA2MDFlZTRjLi5jMmFjNGEzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZGVwcmVjYXRlLXdpdGgtYXB0LmRpZmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2RlcHJlY2F0ZS13aXRoLWFwdC5kaWZmCkBAIC0xNSw2ICsxNSw3IEBACiBzZXBhcmF0ZSBwYWNrYWdlcyBpbnN0ZWFkLgogCiBQYXRjaC1OYW1lOiBkZWJpYW4vZGVwcmVjYXRlLXdpdGgtYXB0LmRpZmYKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgbGliL2RlcHJlY2F0ZS5wbSB8IDE1ICsrKysrKysrKysrKysrLQogIDEgZmlsZSBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZG9jX2luZm8uZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9kb2NfaW5mby5kaWZmCmluZGV4IGZiZWEyZWUuLjQ2NjJlY2QgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9kb2NfaW5mby5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9kb2NfaW5mby5kaWZmCkBAIC02LDYgKzYsNyBAQAogSW5kaWNhdGUgdGhhdCB0aGUgdXNlciBuZWVkcyB0byBpbnN0YWxsIHRoZSBwZXJsLWRvYyBwYWNrYWdlLgogCiBQYXRjaC1OYW1lOiBkZWJpYW4vZG9jX2luZm8uZGlmZgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICBwb2QvcGVybC5wb2QgfCAxMiArKysrKysrKysrLS0KICAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9lbmMyeHNfaW5jLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZW5jMnhzX2luYy5kaWZmCmluZGV4IGUwNzRiMjAuLmIzYmQ1OGMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9lbmMyeHNfaW5jLmRpZmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2VuYzJ4c19pbmMuZGlmZgpAQCAtMTEsNiArMTEsNyBAQAogICBpc3N1ZXMgd2l0aCBmb2xsb3cgPT4gMSAoc2VlICM2MDM2ODYgYW5kIFtydC5jcGFuLm9yZyAjNjQ1ODVdKQogCiBQYXRjaC1OYW1lOiBkZWJpYW4vZW5jMnhzX2luYy5kaWZmCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIGNwYW4vRW5jb2RlL2Jpbi9lbmMyeHMgfCA4ICsrKystLS0tCiAgdC9wb3J0aW5nL2N1c3RvbWl6ZWQudCB8IDMgKysrCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZXJybm9fdmVyLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZXJybm9fdmVyLmRpZmYKaW5kZXggM2QwOTIyOS4uYTk2NWZiZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2Vycm5vX3Zlci5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9lcnJub192ZXIuZGlmZgpAQCAtMTEsNyArMTEsNyBAQAogY29tcGF0aWJsZSwgYnV0IGJ1aWx0IG9uIGEgZGlmZmVyZW50IG1hY2hpbmUuCiAKIFBhdGNoLU5hbWU6IGRlYmlhbi9lcnJub192ZXIuZGlmZgotCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIGV4dC9FcnJuby9FcnJub19wbS5QTCB8IDUgLS0tLS0KICAxIGZpbGUgY2hhbmdlZCwgNSBkZWxldGlvbnMoLSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9leHR1dGlsc19zZXRfbGlicGVybF9wYXRoLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZXh0dXRpbHNfc2V0X2xpYnBlcmxfcGF0aC5kaWZmCmluZGV4IGFkYjRiZDkuLmUwMjMwMzggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9leHR1dGlsc19zZXRfbGlicGVybF9wYXRoLmRpZmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2V4dHV0aWxzX3NldF9saWJwZXJsX3BhdGguZGlmZgpAQCAtNyw2ICs3LDcgQEAKIENPUkUgZGlyZWN0b3J5IHRvIG1hdGNoIG90aGVyIHN0YXRpYyBsaWJyYXJpZXMuCiAKIFBhdGNoLU5hbWU6IGRlYmlhbi9leHR1dGlsc19zZXRfbGlicGVybF9wYXRoLmRpZmYKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvbGliL0V4dFV0aWxzL01NX1VuaXgucG0gfCAyICstCiAgcHAuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZmFrZXJvb3QuZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9mYWtlcm9vdC5kaWZmCmluZGV4IGVjNDYxY2YuLmJkZjM0ZDEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9mYWtlcm9vdC5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9mYWtlcm9vdC5kaWZmCkBAIC0xMSw2ICsxMSw3IEBACiBydWxlIHdoZXJlIHRoZSBNYWtlZmlsZSBpcyBjcmVhdGVkLCBidXQgaXMgZm9yIHRoZSBjbGVhbi9iaW5hcnkqIHRhcmdldHMuCiAKIFBhdGNoLU5hbWU6IGRlYmlhbi9mYWtlcm9vdC5kaWZmCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIE1ha2VmaWxlLlNIIHwgNyArKy0tLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9maW5kX2h0bWwydGV4dC5kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpbmRfaHRtbDJ0ZXh0LmRpZmYKaW5kZXggZDMxOWU3NS4uMDgyNzA5MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpbmRfaHRtbDJ0ZXh0LmRpZmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpbmRfaHRtbDJ0ZXh0LmRpZmYKQEAgLTE2LDYgKzE2LDcgQEAKIFtNYWludGFpbmVyJ3Mgbm90ZTogaHRtbDJ0ZXh0IGluIERlYmlhbiBpcyBub3QgdGhlIHNhbWUgaW1wbGVtZW50YXRpb24KIGFzIHRoZSBodG1sMnRleHQucGwgd2hpY2ggaXMgZXhwZWN0ZWQsIGJ1dCBzaG91bGQgcHJvdmlkZSBzaW1pbGFyCiBmdW5jdGlvbmFsaXR5XS4KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgY3Bhbi9DUEFOL2xpYi9DUEFOL0Rpc3RyaWJ1dGlvbi5wbSB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9maXhlcy9kb2N1bWVudF9tYWtlbWFrZXJfY2NmbGFncy5kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpeGVzL2RvY3VtZW50X21ha2VtYWtlcl9jY2ZsYWdzLmRpZmYKaW5kZXggNjFhOTI3MS4uZjNkOTI1OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpeGVzL2RvY3VtZW50X21ha2VtYWtlcl9jY2ZsYWdzLmRpZmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpeGVzL2RvY3VtZW50X21ha2VtYWtlcl9jY2ZsYWdzLmRpZmYKQEAgLTEwLDYgKzEwLDcgQEAKIGJpbmFyeSBpbnRlcmZhY2Ugb24gc29tZSBwbGF0Zm9ybXMuCiAKIFBhdGNoLU5hbWU6IGZpeGVzL2RvY3VtZW50X21ha2VtYWtlcl9jY2ZsYWdzLmRpZmYKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvbGliL0V4dFV0aWxzL01ha2VNYWtlci5wbSB8IDQgKysrKwogIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9maXhlcy9tZW1vaXplX3N0b3JhYmxlX25zdG9yZS5kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpeGVzL21lbW9pemVfc3RvcmFibGVfbnN0b3JlLmRpZmYKaW5kZXggNTI1Zjk2Mi4uZDliMzZmNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpeGVzL21lbW9pemVfc3RvcmFibGVfbnN0b3JlLmRpZmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpeGVzL21lbW9pemVfc3RvcmFibGVfbnN0b3JlLmRpZmYKQEAgLTQ3LDYgKzQ3LDcgQEAKIEJ1ZzogaHR0cHM6Ly9ydC5jcGFuLm9yZy9QdWJsaWMvQnVnL0Rpc3BsYXkuaHRtbD9pZD03Nzc5MAogRm9yd2FyZGVkOiBodHRwczovL3J0LmNwYW4ub3JnL1B1YmxpYy9CdWcvRGlzcGxheS5odG1sP2lkPTc3NzkwCiBQYXRjaC1OYW1lOiBmaXhlcy9tZW1vaXplX3N0b3JhYmxlX25zdG9yZS5kaWZmCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIGNwYW4vTWVtb2l6ZS9NZW1vaXplL1N0b3JhYmxlLnBtIHwgIDIgKy0KICBjcGFuL01lbW9pemUvdC90aWVfc3RvcmFibGUudCAgICB8IDI0ICsrKysrKysrKysrKysrKysrKysrLS0tLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpeGVzL25ldF9zbXRwX2RvY3MuZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9maXhlcy9uZXRfc210cF9kb2NzLmRpZmYKaW5kZXggM2MzMTk3Mi4uYWZjZjdmYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpeGVzL25ldF9zbXRwX2RvY3MuZGlmZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZml4ZXMvbmV0X3NtdHBfZG9jcy5kaWZmCkBAIC03LDYgKzcsNyBAQAogQnVnOiBodHRwOi8vcnQuY3Bhbi5vcmcvUHVibGljL0J1Zy9EaXNwbGF5Lmh0bWw/aWQ9MzYwMzgKIAogUGF0Y2gtTmFtZTogZml4ZXMvbmV0X3NtdHBfZG9jcy5kaWZmCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIGNwYW4vbGlibmV0L2xpYi9OZXQvU01UUC5wbSB8IDEgKwogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpeGVzL3BlcmwtQ25uLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZml4ZXMvcGVybC1Dbm4uZGlmZgppbmRleCBiNTU2NGZkLi45YmRmNDFiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZml4ZXMvcGVybC1Dbm4uZGlmZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZml4ZXMvcGVybC1Dbm4uZGlmZgpAQCAtMTIsNiArMTIsNyBAQAogQnVnLURlYmlhbjogaHR0cHM6Ly9idWdzLmRlYmlhbi5vcmcvNzg4NjM2CiBPcmlnaW46IHVwc3RyZWFtLCBodHRwOi8vcGVybDUuZ2l0LnBlcmwub3JnL3BlcmwuZ2l0L2NvbW1pdC84OWQ4NGZmOTY1CiBQYXRjaC1OYW1lOiBmaXhlcy9wZXJsLUNubi5kaWZmCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIHQvcnVuL3N3aXRjaEMudCB8ICA3ICsrKysrKy0KICB1dGlsLmMgICAgICAgICAgfCAxNyArKysrKysrKy0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpeGVzL3BvZF9tYW5fcmVwcm9kdWNpYmxlX2RhdGUuZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9maXhlcy9wb2RfbWFuX3JlcHJvZHVjaWJsZV9kYXRlLmRpZmYKaW5kZXggN2M5Y2E4Ni4uZDIzNTczZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpeGVzL3BvZF9tYW5fcmVwcm9kdWNpYmxlX2RhdGUuZGlmZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZml4ZXMvcG9kX21hbl9yZXByb2R1Y2libGVfZGF0ZS5kaWZmCkBAIC0xMyw2ICsxMyw3IEBACiBCdWctRGViaWFuOiBodHRwOi8vYnVncy5kZWJpYW4ub3JnLzc1OTQwNQogT3JpZ2luOiB1cHN0cmVhbQogUGF0Y2gtTmFtZTogZml4ZXMvcG9kX21hbl9yZXByb2R1Y2libGVfZGF0ZS5kaWZmCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIGNwYW4vcG9kbGF0b3JzL2xpYi9Qb2QvTWFuLnBtICB8IDY5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQogIGNwYW4vcG9kbGF0b3JzL3QvZGV2aXNlLWRhdGUudCB8IDI5ICsrKysrKysrKysrKystLS0tLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpeGVzL3BvZG1hbi1lbXB0eS1kYXRlLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZml4ZXMvcG9kbWFuLWVtcHR5LWRhdGUuZGlmZgppbmRleCA3ZWJiZjljLi45ZGUyOWI4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZml4ZXMvcG9kbWFuLWVtcHR5LWRhdGUuZGlmZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZml4ZXMvcG9kbWFuLWVtcHR5LWRhdGUuZGlmZgpAQCAtMTAsNiArMTAsNyBAQAogT3JpZ2luOiB1cHN0cmVhbSwgaHR0cDovL2dpdC5leXJpZS5vcmcvP3A9cGVybC9wb2RsYXRvcnMuZ2l0O2E9Y29tbWl0ZGlmZjtoPWUwZTlmY2I1M2U4ZmM5NTRiMmIxOTU1Mzg1ZWVhMThjMjdmODY5YWYKIEJ1Zy1EZWJpYW46IGh0dHBzOi8vYnVncy5kZWJpYW4ub3JnLzc4MDI1OQogUGF0Y2gtTmFtZTogZml4ZXMvcG9kbWFuLWVtcHR5LWRhdGUuZGlmZgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICBjcGFuL3BvZGxhdG9ycy9saWIvUG9kL01hbi5wbSAgfCAyICstCiAgY3Bhbi9wb2RsYXRvcnMvdC9kZXZpc2UtZGF0ZS50IHwgNiArKysrKy0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9maXhlcy9wb2RtYW4tcGlwZS5kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpeGVzL3BvZG1hbi1waXBlLmRpZmYKaW5kZXggMWE2MDM2MS4uZDg4NThkOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpeGVzL3BvZG1hbi1waXBlLmRpZmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpeGVzL3BvZG1hbi1waXBlLmRpZmYKQEAgLTE0LDYgKzE0LDcgQEAKIE9yaWdpbjogdXBzdHJlYW0sIGh0dHA6Ly9naXQuZXlyaWUub3JnLz9wPXBlcmwvcG9kbGF0b3JzLmdpdDthPWNvbW1pdGRpZmY7aD1kOTg4NzJlNDZjOTM4NjFiN2FiYTE0OTQ5ZTEyNTg3MTIwODdkYzU1CiBCdWctRGViaWFuOiBodHRwczovL2J1Z3MuZGViaWFuLm9yZy83Nzc0MDUKIFBhdGNoLU5hbWU6IGZpeGVzL3BvZG1hbi1waXBlLmRpZmYKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgY3Bhbi9wb2RsYXRvcnMvbGliL1BvZC9NYW4ucG0gICAgIHwgMTUgKysrKysrKysrKysrKysrCiAgY3Bhbi9wb2RsYXRvcnMvc2NyaXB0cy9wb2QybWFuLlBMIHwgIDQgKysrKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpeGVzL3BvZG1hbi11dGMtZG9jcy5kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpeGVzL3BvZG1hbi11dGMtZG9jcy5kaWZmCmluZGV4IDBjZGZlZmYuLmI2YWU0MDkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9maXhlcy9wb2RtYW4tdXRjLWRvY3MuZGlmZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZml4ZXMvcG9kbWFuLXV0Yy1kb2NzLmRpZmYKQEAgLTEyLDYgKzEyLDcgQEAKIE9yaWdpbjogdXBzdHJlYW0sIGh0dHA6Ly9naXQuZXlyaWUub3JnLz9wPXBlcmwvcG9kbGF0b3JzLmdpdDthPWNvbW1pdGRpZmY7aD01MmRiOTNiZjgwZTRhMDZmODQ5N2U0ZWJhZGUwNTA2YjZlZTBlNzBkCiBCdWctRGViaWFuOiBodHRwczovL2J1Z3MuZGViaWFuLm9yZy83ODAyNTkKIFBhdGNoLU5hbWU6IGZpeGVzL3BvZG1hbi11dGMtZG9jcy5kaWZmCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIGNwYW4vcG9kbGF0b3JzL2xpYi9Qb2QvTWFuLnBtICAgICB8ICA2ICsrKysrLQogIGNwYW4vcG9kbGF0b3JzL3NjcmlwdHMvcG9kMm1hbi5QTCB8IDExICsrKysrKy0tLS0tCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZml4ZXMvcG9kbWFuLXV0Yy5kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpeGVzL3BvZG1hbi11dGMuZGlmZgppbmRleCBmYmQ3YjlkLi4zZmI3YzIwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZml4ZXMvcG9kbWFuLXV0Yy5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9maXhlcy9wb2RtYW4tdXRjLmRpZmYKQEAgLTE0LDYgKzE0LDcgQEAKIE9yaWdpbjogdXBzdHJlYW0sIGh0dHA6Ly9naXQuZXlyaWUub3JnLz9wPXBlcmwvcG9kbGF0b3JzLmdpdDthPWNvbW1pdGRpZmY7aD05MTNmYmIyYmQyY2UwNzFlMjAxMjg2MjkzMDJhZTI4NTI1NTRjYWQ0CiBCdWctRGViaWFuOiBodHRwczovL2J1Z3MuZGViaWFuLm9yZy83ODAyNTkKIFBhdGNoLU5hbWU6IGZpeGVzL3BvZG1hbi11dGMuZGlmZgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICBjcGFuL3BvZGxhdG9ycy9saWIvUG9kL01hbi5wbSB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9maXhlcy9yZXNwZWN0X3VtYXNrLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vZml4ZXMvcmVzcGVjdF91bWFzay5kaWZmCmluZGV4IGQxYjQ5OGIuLmM4NjYzZjUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9maXhlcy9yZXNwZWN0X3VtYXNrLmRpZmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2ZpeGVzL3Jlc3BlY3RfdW1hc2suZGlmZgpAQCAtNyw2ICs3LDcgQEAKIHNpdGUgZGlyZWN0b3JpZXMuCiAKIFBhdGNoLU5hbWU6IGZpeGVzL3Jlc3BlY3RfdW1hc2suZGlmZgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICBjcGFuL0V4dFV0aWxzLUluc3RhbGwvbGliL0V4dFV0aWxzL0luc3RhbGwucG0gICB8IDE4ICsrKysrKysrKy0tLS0tLS0tLQogIGNwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL2xpYi9FeHRVdGlscy9NTV9Vbml4LnBtIHwgMTggKysrKysrKysrLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vaW5zdG1vZHNoX2RvYy5kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2luc3Rtb2RzaF9kb2MuZGlmZgppbmRleCBhNjJjNzQ2Li43ZTFmZDY5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vaW5zdG1vZHNoX2RvYy5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9pbnN0bW9kc2hfZG9jLmRpZmYKQEAgLTQsNiArNCw3IEBACiBTdWJqZWN0OiBEZWJpYW4gcG9saWN5IGRvZXNuJ3QgaW5zdGFsbCAucGFja2xpc3QgZmlsZXMgZm9yIGNvcmUgb3IgdmVuZG9yLgogCiBQYXRjaC1OYW1lOiBkZWJpYW4vaW5zdG1vZHNoX2RvYy5kaWZmCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIGNwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL2Jpbi9pbnN0bW9kc2ggfCA0ICsrKy0KICAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vbGRfcnVuX3BhdGguZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9sZF9ydW5fcGF0aC5kaWZmCmluZGV4IGQ4MGY4NmMuLmZmMGIyODcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9sZF9ydW5fcGF0aC5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9sZF9ydW5fcGF0aC5kaWZmCkBAIC00LDYgKzQsNyBAQAogU3ViamVjdDogUmVtb3ZlIHN0YW5kYXJkIGxpYnMgZnJvbSBMRF9SVU5fUEFUSCBhcyBwZXIgRGViaWFuIHBvbGljeS4KIAogUGF0Y2gtTmFtZTogZGViaWFuL2xkX3J1bl9wYXRoLmRpZmYKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvbGliL0V4dFV0aWxzL0xpYmxpc3QvS2lkLnBtIHwgMyArKysKICAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vbGlibmV0X2NvbmZpZ19wYXRoLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vbGlibmV0X2NvbmZpZ19wYXRoLmRpZmYKaW5kZXggNTRlZjk2NC4uZDUzNDc0MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2xpYm5ldF9jb25maWdfcGF0aC5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9saWJuZXRfY29uZmlnX3BhdGguZGlmZgpAQCAtNSw2ICs1LDcgQEAKICB3cml0YWJsZS4KIAogUGF0Y2gtTmFtZTogZGViaWFuL2xpYm5ldF9jb25maWdfcGF0aC5kaWZmCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIGNwYW4vbGlibmV0L2xpYi9OZXQvQ29uZmlnLnBtIHwgNyArKystLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9saWJwZXJsX2VtYmVkX2RvYy5kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2xpYnBlcmxfZW1iZWRfZG9jLmRpZmYKaW5kZXggNzZiODA1NC4uMGNkYzBkMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2xpYnBlcmxfZW1iZWRfZG9jLmRpZmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2xpYnBlcmxfZW1iZWRfZG9jLmRpZmYKQEAgLTYsNiArNiw3IEBACiBCdWctRGViaWFuOiBodHRwOi8vYnVncy5kZWJpYW4ub3JnLzE4Njc3OAogCiBQYXRjaC1OYW1lOiBkZWJpYW4vbGlicGVybF9lbWJlZF9kb2MuZGlmZgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICBsaWIvRXh0VXRpbHMvRW1iZWQucG0gfCAzICsrKwogIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9sb2NhbGUtcm9idXN0bmVzcy5kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2xvY2FsZS1yb2J1c3RuZXNzLmRpZmYKaW5kZXggZmQ0NzFlZC4uN2NmMTI0MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2xvY2FsZS1yb2J1c3RuZXNzLmRpZmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL2xvY2FsZS1yb2J1c3RuZXNzLmRpZmYKQEAgLTE0LDYgKzE0LDcgQEAKIEJ1ZzogaHR0cHM6Ly9ydC5wZXJsLm9yZy9UaWNrZXQvRGlzcGxheS5odG1sP2lkPTEyNDMxMAogQnVnLURlYmlhbjogaHR0cHM6Ly9idWdzLmRlYmlhbi5vcmcvNzgyMDY4CiBQYXRjaC1OYW1lOiBkZWJpYW4vbG9jYWxlLXJvYnVzdG5lc3MuZGlmZgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICB0L3J1bi9sb2NhbGUudCB8IDcgKysrLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vbWFrZW1ha2VyLXBhc3RocnUuZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9tYWtlbWFrZXItcGFzdGhydS5kaWZmCmluZGV4IGZhMGY5ZGEuLjVmMDcxODAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9tYWtlbWFrZXItcGFzdGhydS5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9tYWtlbWFrZXItcGFzdGhydS5kaWZmCkBAIC0xMSw2ICsxMSw3IEBACiAKIEJ1Zy1EZWJpYW46IGh0dHBzOi8vYnVncy5kZWJpYW4ub3JnLzc1ODQ3MQogUGF0Y2gtTmFtZTogZGViaWFuL21ha2VtYWtlci1wYXN0aHJ1LmRpZmYKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvbGliL0V4dFV0aWxzL01NX1VuaXgucG0gfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vbWFrZW1ha2VyX2N1c3RvbWl6ZWQuZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9tYWtlbWFrZXJfY3VzdG9taXplZC5kaWZmCmluZGV4IGIxYjRjYjkuLmQ4NzBiNjAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9tYWtlbWFrZXJfY3VzdG9taXplZC5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9tYWtlbWFrZXJfY3VzdG9taXplZC5kaWZmCkBAIC00LDYgKzQsNyBAQAogU3ViamVjdDogVXBkYXRlIHQvcG9ydGluZy9jdXN0b21pemVkLmRhdCBmb3IgZmlsZXMgcGF0Y2hlZCBpbiBEZWJpYW4KIAogUGF0Y2gtTmFtZTogZGViaWFuL21ha2VtYWtlcl9jdXN0b21pemVkLmRpZmYKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgdC9wb3J0aW5nL2N1c3RvbWl6ZWQuZGF0IHwgOCArKysrLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vbW9kX3BhdGhzLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vbW9kX3BhdGhzLmRpZmYKaW5kZXggYWUxNTkwNy4uN2UyMjQ4NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL21vZF9wYXRocy5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9tb2RfcGF0aHMuZGlmZgpAQCAtMTcsNiArMTcsNyBAQAogdmVyc2lvbiB0aGFuIGlzIGluY2x1ZGVkIGluIGNvcmUuCiAKIFBhdGNoLU5hbWU6IGRlYmlhbi9tb2RfcGF0aHMuZGlmZgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICBwZXJsLmMgfCA1OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAgMSBmaWxlIGNoYW5nZWQsIDU4IGluc2VydGlvbnMoKykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9ub19wYWNrbGlzdF9wZXJsbG9jYWwuZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9ub19wYWNrbGlzdF9wZXJsbG9jYWwuZGlmZgppbmRleCBiOTExZmQyLi43NDg0YmVjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vbm9fcGFja2xpc3RfcGVybGxvY2FsLmRpZmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL25vX3BhY2tsaXN0X3Blcmxsb2NhbC5kaWZmCkBAIC00LDYgKzQsNyBAQAogU3ViamVjdDogRG9uJ3QgaW5zdGFsbCAucGFja2xpc3Qgb3IgcGVybGxvY2FsLnBvZCBmb3IgcGVybCBvciB2ZW5kb3IKIAogUGF0Y2gtTmFtZTogZGViaWFuL25vX3BhY2tsaXN0X3Blcmxsb2NhbC5kaWZmCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIGNwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL2xpYi9FeHRVdGlscy9NTV9Vbml4LnBtIHwgMzUgKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMyIGRlbGV0aW9ucygtKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL3BhdGNobGV2ZWwuZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9wYXRjaGxldmVsLmRpZmYKaW5kZXggODY1NmIwMi4uMmQwNWFlNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL3BhdGNobGV2ZWwuZGlmZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vcGF0Y2hsZXZlbC5kaWZmCkBAIC0xMCw2ICsxMCw3IEBACiBmcm9tIHRoZSBkZWJpYW4vcGF0Y2hlcy8gZGlyZWN0b3J5IHdoZW4gYnVpbGRpbmcgdGhlIHBhY2thZ2UuCiAKIFBhdGNoLU5hbWU6IGRlYmlhbi9wYXRjaGxldmVsLmRpZmYKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgcGF0Y2hsZXZlbC5oIHwgMyArKysKICAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vcGVybDVkYi14LXRlcm1pbmFsLWVtdWxhdG9yLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL3Blcmw1ZGIteC10ZXJtaW5hbC1lbXVsYXRvci5wYXRjaAppbmRleCA1MzM5NTJjLi42ZjE2MjViIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vcGVybDVkYi14LXRlcm1pbmFsLWVtdWxhdG9yLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9wZXJsNWRiLXgtdGVybWluYWwtZW11bGF0b3IucGF0Y2gKQEAgLTEwLDYgKzEwLDcgQEAKIEZvcndhcmRlZDogbm90LW5lZWRlZAogCiBQYXRjaC1OYW1lOiBkZWJpYW4vcGVybDVkYi14LXRlcm1pbmFsLWVtdWxhdG9yLnBhdGNoCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIGxpYi9wZXJsNWRiLnBsIHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL3BlcmxpdnAuZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9wZXJsaXZwLmRpZmYKaW5kZXggMmMxZWFiOS4uNWM3NDEzYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL3BlcmxpdnAuZGlmZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vcGVybGl2cC5kaWZmCkBAIC0yMSw2ICsyMSw3IEBACiBTaWduZWQtb2ZmLWJ5OiBOaWtvIFR5bmkgPG50eW5pQGRlYmlhbi5vcmc+CiAKIFBhdGNoLU5hbWU6IGRlYmlhbi9wZXJsaXZwLmRpZmYKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgdXRpbHMvcGVybGl2cC5QTCB8IDEgKwogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL3BvZDJtYW4tY3VzdG9taXplZC5kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL3BvZDJtYW4tY3VzdG9taXplZC5kaWZmCmluZGV4IDYyNzBiODcuLjQ3MDc1NjIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9wb2QybWFuLWN1c3RvbWl6ZWQuZGlmZgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vcG9kMm1hbi1jdXN0b21pemVkLmRpZmYKQEAgLTQsNiArNCw3IEBACiBTdWJqZWN0OiBVcGRhdGUgcG9ydGluZy9jdXN0b21pemVkLmRhdCBmb3IgcG9kMm1hbiBtb2RpZmljYXRpb25zCiAKIFBhdGNoLU5hbWU6IGRlYmlhbi9wb2QybWFuLWN1c3RvbWl6ZWQuZGlmZgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICB0L3BvcnRpbmcvY3VzdG9taXplZC5kYXQgfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vcHJlZml4X2NoYW5nZXMuZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9wcmVmaXhfY2hhbmdlcy5kaWZmCmluZGV4IGM0MWVmYmUuLmI2ODFjM2UgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9wcmVmaXhfY2hhbmdlcy5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9wcmVmaXhfY2hhbmdlcy5kaWZmCkBAIC05LDYgKzksNyBAQAogbW9kdWxlcykuCiAKIFBhdGNoLU5hbWU6IGRlYmlhbi9wcmVmaXhfY2hhbmdlcy5kaWZmCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIGNwYW4vRXh0VXRpbHMtTWFrZU1ha2VyL2xpYi9FeHRVdGlscy9NTV9BbnkucG0gIHwgMTIgKysrKysrLS0tLS0tCiAgY3Bhbi9FeHRVdGlscy1NYWtlTWFrZXIvbGliL0V4dFV0aWxzL01NX1VuaXgucG0gfCAgMyArLS0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9wcnVuZV9saWJzLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vcHJ1bmVfbGlicy5kaWZmCmluZGV4IGQxNTNlMGUuLmEyZWQ1MmEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9wcnVuZV9saWJzLmRpZmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL3BydW5lX2xpYnMuZGlmZgpAQCAtMTAsNyArMTAsNyBAQAogYW5kIHNvbWUgb2YgdGhlIG9yaWdpbmFsIGxpc3QgbWF5IGJlIHByZXNlbnQgb24gYnVpbGRkcyAoc2VlIEJ1ZyMxMjgzNTUpLgogCiBQYXRjaC1OYW1lOiBkZWJpYW4vcHJ1bmVfbGlicy5kaWZmCi0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgQ29uZmlndXJlIHwgNSArKy0tLQogIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vcmVnZW4tc2tpcC5kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL3JlZ2VuLXNraXAuZGlmZgppbmRleCA4YTNmYzk5Li41ZDlhN2M0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vcmVnZW4tc2tpcC5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9yZWdlbi1za2lwLmRpZmYKQEAgLTgsNiArOCw3IEBACiB0aGUgcmVnZW5lcmF0aW9uIGNoZWNrIGlzIGJyb2tlbiBiZWNhdXNlIGxpYi8uZ2l0aWdub3JlIGlzIG1pc3NpbmcuCiAKIFBhdGNoLU5hbWU6IGRlYmlhbi9yZWdlbi1za2lwLmRpZmYKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgcmVnZW4vbGliX2NsZWFudXAucGwgfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vc2tpcC1rZnJlZWJzZC1jcmFzaC5kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL3NraXAta2ZyZWVic2QtY3Jhc2guZGlmZgppbmRleCBlY2ZjMGJjLi4zYjM3NDUyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vc2tpcC1rZnJlZWJzZC1jcmFzaC5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9za2lwLWtmcmVlYnNkLWNyYXNoLmRpZmYKQEAgLTEyLDYgKzEyLDcgQEAKIFNraXAgdGhlIHRlc3QgdW50aWwgdGhlIGN1bHByaXQgaXMgZm91bmQuCiAKIFBhdGNoLU5hbWU6IGRlYmlhbi9za2lwLWtmcmVlYnNkLWNyYXNoLmRpZmYKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgdC9vcC90aHJlYWRzLnQgfCA0ICsrKysKICAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vc2tpcC11cHN0cmVhbS1naXQtdGVzdHMuZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9za2lwLXVwc3RyZWFtLWdpdC10ZXN0cy5kaWZmCmluZGV4IDRjODcxMDQuLjI3OWY0YWIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9za2lwLXVwc3RyZWFtLWdpdC10ZXN0cy5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9za2lwLXVwc3RyZWFtLWdpdC10ZXN0cy5kaWZmCkBAIC05LDYgKzksNyBAQAogU2tpcCB0aGUgdGVzdHMgYWx0b2dldGhlciBldmVuIGlmIHRoZSAuZ2l0IGRpcmVjdG9yeSBleGlzdHMuCiAKIFBhdGNoLU5hbWU6IGRlYmlhbi9za2lwLXVwc3RyZWFtLWdpdC10ZXN0cy5kaWZmCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIHQvdGVzdC5wbCB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi9zcXVlbGNoLWxvY2FsZS13YXJuaW5ncy5kaWZmIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL3NxdWVsY2gtbG9jYWxlLXdhcm5pbmdzLmRpZmYKaW5kZXggY2IzMTQ1Ny4uNDk2NGU0OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL3NxdWVsY2gtbG9jYWxlLXdhcm5pbmdzLmRpZmYKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL3NxdWVsY2gtbG9jYWxlLXdhcm5pbmdzLmRpZmYKQEAgLTE0LDYgKzE0LDcgQEAKIHRoZSB3YXJuaW5nIHdpbGwgYmUgdHJpZ2dlcmVkIG5vcm1hbGx5IGFnYWluIGF0IHRoYXQgcG9pbnQuCiAKIFBhdGNoLU5hbWU6IGRlYmlhbi9zcXVlbGNoLWxvY2FsZS13YXJuaW5ncy5kaWZmCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIGxvY2FsZS5jICAgICAgICAgICB8IDUgKysrKy0KICBwb2QvcGVybGxvY2FsZS5wb2QgfCA4ICsrKysrKysrCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vd3JpdGFibGVfc2l0ZV9kaXJzLmRpZmYgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9kZWJpYW4vd3JpdGFibGVfc2l0ZV9kaXJzLmRpZmYKaW5kZXggNTNhZGMyZi4uYWIzNzNiMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZGViaWFuL3dyaXRhYmxlX3NpdGVfZGlycy5kaWZmCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2RlYmlhbi93cml0YWJsZV9zaXRlX2RpcnMuZGlmZgpAQCAtNiw2ICs2LDcgQEAKIFBvbGljeSByZXF1aXJlcyBncm91cCB3cml0YWJsZSBzaXRlIGRpcmVjdG9yaWVzCiAKIFBhdGNoLU5hbWU6IGRlYmlhbi93cml0YWJsZV9zaXRlX2RpcnMuZGlmZgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICBjcGFuL0V4dFV0aWxzLU1ha2VNYWtlci9saWIvRXh0VXRpbHMvTU1fVW5peC5wbSB8IDYgKysrLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2V4dC1PREJNX0ZpbGUtdC1vZGJtLnQtZml4LXRoZS1wYXRoLW9mLWRibXRfY29tbW9uLnAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC9leHQtT0RCTV9GaWxlLXQtb2RibS50LWZpeC10aGUtcGF0aC1vZi1kYm10X2NvbW1vbi5wLnBhdGNoCmluZGV4IDZiMDViODcuLmI4NWI1MGMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsL2V4dC1PREJNX0ZpbGUtdC1vZGJtLnQtZml4LXRoZS1wYXRoLW9mLWRibXRfY29tbW9uLnAucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwvZXh0LU9EQk1fRmlsZS10LW9kYm0udC1maXgtdGhlLXBhdGgtb2YtZGJtdF9jb21tb24ucC5wYXRjaApAQCAtOSw2ICs5LDggQEAKIENhbid0IGxvY2F0ZSAuLi8uLi90L2xpYi9kYm10X2NvbW1vbi5wbCBpbiBASU5DCiAKIFNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIGV4dC9PREJNX0ZpbGUvdC9vZGJtLnQgfCAgICAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybF81LjI0LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybF81LjI0LjEuYmIKaW5kZXggY2Y3YThlMS4uYjU1ZDIyMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmxfNS4yNC4xLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsXzUuMjQuMS5iYgpAQCAtMTI0LDMwICsxMjQsOCBAQAogICAgICAgICAgICAgY2F0ICRpID4+IGNvbmZpZy5zaC0ke1RBUkdFVF9BUkNIfS0ke1RBUkdFVF9PU30KICAgICAgICAgZG9uZQogCi0gICAgICAgICMgRml4dXBzIGZvciB1Y2xpYmMKLSAgICAgICAgaWYgWyAiJHtUQVJHRVRfT1N9IiA9ICJsaW51eC11Y2xpYmMiIC1vICIke1RBUkdFVF9PU30iID0gImxpbnV4LXVjbGliY2VhYmkiIF07IHRoZW4KLSAgICAgICAgICAgICAgICBzZWQgLWkgLWUgInMsXChkX2NyeXB0X3I9XCknZGVmaW5lJyxcMSd1bmRlZicsZyIgXAotICAgICAgICAgICAgICAgICAgICAgICAtZSAicyxcKGRfZnV0aW1lcz1cKSdkZWZpbmUnLFwxJ3VuZGVmJyxnIiBcCi0gICAgICAgICAgICAgICAgICAgICAgIC1lICJzLFwoZF9maW5pdGVsPVwpJ2RlZmluZScsXDEndW5kZWYnLGciIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLWUgInMsXChjcnlwdF9yX3Byb3RvPVwpJ1x3KycsXDEnMCcsZyIgXAotICAgICAgICAgICAgICAgICAgICAgICAtZSAicyxcKGRfZ2V0bmV0YnluYW1lX3I9XCknZGVmaW5lJyxcMSd1bmRlZicsZyIgXAotICAgICAgICAgICAgICAgICAgICAgICAtZSAicyxcKGdldG5ldGJ5bmFtZV9yX3Byb3RvPVwpJ1x3KycsXDEnMCcsZyIgXAotICAgICAgICAgICAgICAgICAgICAgICAtZSAicyxcKGRfZ2V0bmV0YnlhZGRyX3I9XCknZGVmaW5lJyxcMSd1bmRlZicsZyIgXAotICAgICAgICAgICAgICAgICAgICAgICAtZSAicyxcKGdldG5ldGJ5YWRkcl9yX3Byb3RvPVwpJ1x3KycsXDEnMCcsZyIgXAotICAgICAgICAgICAgICAgICAgICAgICAtZSAicyxcKGRfZ2V0bmV0ZW50X3I9XCknZGVmaW5lJyxcMSd1bmRlZicsZyIgXAotICAgICAgICAgICAgICAgICAgICAgICAtZSAicyxcKGdldG5ldGVudF9yX3Byb3RvPVwpJ1x3KycsXDEnMCcsZyIgXAotICAgICAgICAgICAgICAgICAgICAgICAtZSAicyxcKGRfc29ja2F0bWFyaz1cKSdkZWZpbmUnLFwxJ3VuZGVmJyxnIiBcCi0gICAgICAgICAgICAgICAgICAgICAgIC1lICJzLFwoZF9zb2NrYXRtYXJrcHJvdG89XCknXHcrJyxcMScwJyxnIiBcCi0gICAgICAgICAgICAgICAgICAgICAgIC1lICJzLFwoZF9lYWNjZXNzPVwpJ2RlZmluZScsXDEndW5kZWYnLGciIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLWUgInMsXChkX3N0ZGlvX3B0cl9sdmFsPVwpJ2RlZmluZScsXDEndW5kZWYnLGciIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLWUgInMsXChkX3N0ZGlvX3B0cl9sdmFsX3NldHNfY250PVwpJ2RlZmluZScsXDEndW5kZWYnLGciIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLWUgInMsXChkX3N0ZGlvYmFzZT1cKSdkZWZpbmUnLFwxJ3VuZGVmJyxnIiBcCi0gICAgICAgICAgICAgICAgICAgICAgIC1lICJzLFwoZF9zdGRzdGRpbz1cKSdkZWZpbmUnLFwxJ3VuZGVmJyxnIiBcCi0gICAgICAgICAgICAgICAgICAgICAgIC1lICJzLC1mc3RhY2stcHJvdGVjdG9yLC1mbm8tc3RhY2stcHJvdGVjdG9yLGciIFwKLSAgICAgICAgICAgICAgICAgICAgY29uZmlnLnNoLSR7VEFSR0VUX0FSQ0h9LSR7VEFSR0VUX09TfQotICAgICAgICBmaQogICAgICAgICAjIEZpeHVwcyBmb3IgbXVzbAotICAgICAgICBpZiBbICIke1RBUkdFVF9PU30iID0gImxpbnV4LW11c2wiIC1vICIke1RBUkdFVF9PU30iID0gImxpbnV4LW11c2xlYWJpIiBdOyB0aGVuCisgICAgICAgIGlmIFsgIiR7VEFSR0VUX09TfSIgPSAibGludXgtbXVzbCIgLW8gIiR7VEFSR0VUX09TfSIgPSAibGludXgtbXVzbGVhYmkiIC1vICIke1RBUkdFVF9PU30iID0gImxpbnV4LW11c2x4MzIiIF07IHRoZW4KICAgICAgICAgICAgICAgICBzZWQgLWkgLWUgInMsXChkX2xpYm1fbGliX3ZlcnNpb249XCknZGVmaW5lJyxcMSd1bmRlZicsZyIgXAogICAgICAgICAgICAgICAgICAgICAgICAtZSAicyxcKGRfc3RkaW9fcHRyX2x2YWw9XCknZGVmaW5lJyxcMSd1bmRlZicsZyIgXAogICAgICAgICAgICAgICAgICAgICAgICAtZSAicyxcKGRfc3RkaW9fcHRyX2x2YWxfc2V0c19jbnQ9XCknZGVmaW5lJyxcMSd1bmRlZicsZyIgXApAQCAtMTkzLDcgKzE3MSw3IEBACiAJCQk7OwogCWVzYWMKICAgICAgICAgIyBUaGVzZSBhcmUgc3RyZXduIGFsbCBvdmVyIHRoZSBzb3VyY2UgdHJlZQotICAgICAgICBmb3IgZm9vIGluIGBncmVwIC1JIC0tZXhjbHVkZT0iKi5wYXRjaCIgLS1leGNsdWRlPSIqLmRpZmYiIC0tZXhjbHVkZT0iKi5wb2QiIC0tZXhjbHVkZT0iUkVBRE1FKiIgLW0xICIvdXNyL2luY2x1ZGUvLipcLmgiICR7U30vKiAtciAtbGAgJHtTfS91dGlscy9oMnhzLlBMIDsgZG8KKyAgICAgICAgZm9yIGZvbyBpbiBgZ3JlcCAtSSAtLWV4Y2x1ZGU9IioucGF0Y2giIC0tZXhjbHVkZT0iKi5kaWZmIiAtLWV4Y2x1ZGU9IioucG9kIiAtLWV4Y2x1ZGU9IlJFQURNRSoiIC0tZXhjbHVkZT0iR2xvc3NhcnkiIC1tMSAiL3Vzci9pbmNsdWRlLy4qXC5oIiAke1N9LyogLXIgLWxgICR7U30vdXRpbHMvaDJ4cy5QTCA7IGRvCiAgICAgICAgICAgICBlY2hvIEZpeGluZzogJGZvbwogICAgICAgICAgICAgc2VkIC1lICdzfFwoWyAiXidcJydJXVwrXCkvdXNyL2luY2x1ZGUvfFwxJHtTVEFHSU5HX0lOQ0RJUn0vfGcnIC1pICRmb28KICAgICAgICAgZG9uZQpAQCAtMjQ1LDYgKzIyMyw3IEBACiBwZXJsX3BhY2thZ2VfcHJlcHJvY2VzcyAoKSB7CiAgICAgICAgICMgRml4IHVwIGluc3RhbGxlZCBjb25maWd1cmF0aW9uCiAgICAgICAgIHNlZCAtaSAtZSAicywke0R9LCxnIiBcCisgICAgICAgICAgICAgICAtZSAicywke0RFQlVHX1BSRUZJWF9NQVB9LCxnIiBcCiAgICAgICAgICAgICAgICAtZSAicywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9IT1NUfSwsZyIgXAogICAgICAgICAgICAgICAgLWUgInMsLWlzeXN0ZW0ke1NUQUdJTkdfSU5DRElSfSAsLGciIFwKICAgICAgICAgICAgICAgIC1lICJzLCR7U1RBR0lOR19MSUJESVJ9LCR7bGliZGlyfSxnIiBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmYvcGtnY29uZi8wMDAxLU1pbmltYWwtdHdlYWtzLXRvLWNvbXBpbGUtd2l0aC1WaXN1YWwtQy0yMDE1LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25mL3BrZ2NvbmYvMDAwMS1NaW5pbWFsLXR3ZWFrcy10by1jb21waWxlLXdpdGgtVmlzdWFsLUMtMjAxNS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zODA1YWQzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25mL3BrZ2NvbmYvMDAwMS1NaW5pbWFsLXR3ZWFrcy10by1jb21waWxlLXdpdGgtVmlzdWFsLUMtMjAxNS5wYXRjaApAQCAtMCwwICsxLDIyNCBAQAorRnJvbSA0ZDdiNGQ3YzhlOTk2NmM1OTNmNDcyMzU1NjA3MjA0YzZjODBmZWNiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRGFuIEtlZ2VsIDxkYW5rQGtlZ2VsLmNvbT4KK0RhdGU6IFN1biwgNCBKdW4gMjAxNyAxOToxOTo1NSAtMDcwMAorU3ViamVjdDogW1BBVENIXSBNaW5pbWFsIHR3ZWFrcyB0byBjb21waWxlIHdpdGggVmlzdWFsIEMgMjAxNQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPgorLS0tCisgZ2V0b3B0X2xvbmcuYyAgICAgICAgICAgfCAgMiArKworIGxpYnBrZ2NvbmYvYnNkc3R1YnMuYyAgIHwgIDEgKworIGxpYnBrZ2NvbmYvbGlicGtnY29uZi5oIHwgIDIgKy0KKyBsaWJwa2djb25mL3BhdGguYyAgICAgICB8IDEwICsrKysrLS0tLS0KKyBsaWJwa2djb25mL3BrZy5jICAgICAgICB8IDI4ICsrKysrKysrKysrKysrKysrKystLS0tLS0tLS0KKyBsaWJwa2djb25mL3N0ZGluYy5oICAgICB8ICA5ICsrKysrKystLQorIDYgZmlsZXMgY2hhbmdlZCwgMzUgaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nZXRvcHRfbG9uZy5jIGIvZ2V0b3B0X2xvbmcuYworaW5kZXggYWZlYjY4ZC4uNWNlOWJmZCAxMDA2NDQKKy0tLSBhL2dldG9wdF9sb25nLmMKKysrKyBiL2dldG9wdF9sb25nLmMKK0BAIC02Miw3ICs2Miw5IEBACisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKysjaWZuZGVmIF9XSU4zMgorICNpbmNsdWRlIDx1bmlzdGQuaD4KKysjZW5kaWYKKyAKKyAjZGVmaW5lIFBLR0NPTkZfSEFDS19MT0dJQ0FMX09SX0FMTF9WQUxVRVMKKyAKK2RpZmYgLS1naXQgYS9saWJwa2djb25mL2JzZHN0dWJzLmMgYi9saWJwa2djb25mL2JzZHN0dWJzLmMKK2luZGV4IDhmNzBmZjMuLjJjMDAwYWMgMTAwNjQ0CistLS0gYS9saWJwa2djb25mL2JzZHN0dWJzLmMKKysrKyBiL2xpYnBrZ2NvbmYvYnNkc3R1YnMuYworQEAgLTE3LDYgKzE3LDcgQEAKKyAgKiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgorICAqLworIAorKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorIAorZGlmZiAtLWdpdCBhL2xpYnBrZ2NvbmYvbGlicGtnY29uZi5oIGIvbGlicGtnY29uZi9saWJwa2djb25mLmgKK2luZGV4IDQwNGJmMGMuLjU1MWQ4NWQgMTAwNjQ0CistLS0gYS9saWJwa2djb25mL2xpYnBrZ2NvbmYuaAorKysrIGIvbGlicGtnY29uZi9saWJwa2djb25mLmgKK0BAIC0zMTAsNyArMzEwLDcgQEAgdm9pZCBwa2djb25mX2F1ZGl0X2xvZ19kZXBlbmRlbmN5KHBrZ2NvbmZfY2xpZW50X3QgKmNsaWVudCwgY29uc3QgcGtnY29uZl9wa2dfdAorIC8qIHBhdGguYyAqLworIHZvaWQgcGtnY29uZl9wYXRoX2FkZChjb25zdCBjaGFyICp0ZXh0LCBwa2djb25mX2xpc3RfdCAqZGlybGlzdCwgYm9vbCBmaWx0ZXIpOworIHNpemVfdCBwa2djb25mX3BhdGhfc3BsaXQoY29uc3QgY2hhciAqdGV4dCwgcGtnY29uZl9saXN0X3QgKmRpcmxpc3QsIGJvb2wgZmlsdGVyKTsKKy1zaXplX3QgcGtnY29uZl9wYXRoX2J1aWxkX2Zyb21fZW52aXJvbihjb25zdCBjaGFyICplbnZpcm9uLCBjb25zdCBjaGFyICpmYWxsYmFjaywgcGtnY29uZl9saXN0X3QgKmRpcmxpc3QsIGJvb2wgZmlsdGVyKTsKKytzaXplX3QgcGtnY29uZl9wYXRoX2J1aWxkX2Zyb21fZW52aXJvbihjb25zdCBjaGFyICplbnZ2YXJuYW1lLCBjb25zdCBjaGFyICpmYWxsYmFjaywgcGtnY29uZl9saXN0X3QgKmRpcmxpc3QsIGJvb2wgZmlsdGVyKTsKKyBib29sIHBrZ2NvbmZfcGF0aF9tYXRjaF9saXN0KGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IHBrZ2NvbmZfbGlzdF90ICpkaXJsaXN0KTsKKyB2b2lkIHBrZ2NvbmZfcGF0aF9mcmVlKHBrZ2NvbmZfbGlzdF90ICpkaXJsaXN0KTsKKyBib29sIHBrZ2NvbmZfcGF0aF9yZWxvY2F0ZShjaGFyICpidWYsIHNpemVfdCBidWZsZW4pOworZGlmZiAtLWdpdCBhL2xpYnBrZ2NvbmYvcGF0aC5jIGIvbGlicGtnY29uZi9wYXRoLmMKK2luZGV4IGRkZGIzYmYuLjU5ZTAwM2UgMTAwNjQ0CistLS0gYS9saWJwa2djb25mL3BhdGguYworKysrIGIvbGlicGtnY29uZi9wYXRoLmMKK0BAIC0yMCw3ICsyMCw3IEBACisgIyBpbmNsdWRlIDxzeXMvY3lnd2luLmg+CisgI2VuZGlmCisgCistI2lmZGVmIEhBVkVfU1lTX1NUQVRfSAorKyNpZiBkZWZpbmVkKEhBVkVfU1lTX1NUQVRfSCkgJiYgISBkZWZpbmVkKF9XSU4zMikKKyAjIGluY2x1ZGUgPHN5cy9zdGF0Lmg+CisgIyBkZWZpbmUgUEtHQ09ORl9DQUNIRV9JTk9ERVMKKyAjZW5kaWYKK0BAIC0xNTYsMTIgKzE1NiwxMiBAQCBwa2djb25mX3BhdGhfc3BsaXQoY29uc3QgY2hhciAqdGV4dCwgcGtnY29uZl9saXN0X3QgKmRpcmxpc3QsIGJvb2wgZmlsdGVyKQorIC8qCisgICogIWRvYworICAqCistICogLi4gYzpmdW5jdGlvbjo6IHNpemVfdCBwa2djb25mX3BhdGhfYnVpbGRfZnJvbV9lbnZpcm9uKGNvbnN0IGNoYXIgKmVudmlyb24sIGNvbnN0IGNoYXIgKmZhbGxiYWNrLCBwa2djb25mX2xpc3RfdCAqZGlybGlzdCkKKysgKiAuLiBjOmZ1bmN0aW9uOjogc2l6ZV90IHBrZ2NvbmZfcGF0aF9idWlsZF9mcm9tX2Vudmlyb24oY29uc3QgY2hhciAqZW52dmFybmFtZSwgY29uc3QgY2hhciAqZmFsbGJhY2ssIHBrZ2NvbmZfbGlzdF90ICpkaXJsaXN0KQorICAqCisgICogICAgQWRkcyB0aGUgcGF0aHMgc3BlY2lmaWVkIGluIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGEgcGF0aCBsaXN0LiAgSWYgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIG5vdCBzZXQsCisgICogICAgYW4gb3B0aW9uYWwgZGVmYXVsdCBzZXQgb2YgcGF0aHMgaXMgYWRkZWQuCisgICoKKy0gKiAgICA6cGFyYW0gY2hhciogZW52aXJvbjogVGhlIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGxvb2sgdXAuCisrICogICAgOnBhcmFtIGNoYXIqIGVudnZhcm5hbWU6IFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBsb29rIHVwLgorICAqICAgIDpwYXJhbSBjaGFyKiBmYWxsYmFjazogVGhlIGZhbGxiYWNrIHBhdGhzIHRvIHVzZSBpZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IHNldC4KKyAgKiAgICA6cGFyYW0gcGtnY29uZl9saXN0X3QqIGRpcmxpc3Q6IFRoZSBwYXRoIGxpc3QgdG8gYWRkIHRoZSBwYXRoIG5vZGVzIHRvLgorICAqICAgIDpwYXJhbSBib29sIGZpbHRlcjogV2hldGhlciB0byBwZXJmb3JtIGR1cGxpY2F0ZSBmaWx0ZXJpbmcuCitAQCAtMTY5LDExICsxNjksMTEgQEAgcGtnY29uZl9wYXRoX3NwbGl0KGNvbnN0IGNoYXIgKnRleHQsIHBrZ2NvbmZfbGlzdF90ICpkaXJsaXN0LCBib29sIGZpbHRlcikKKyAgKiAgICA6cnR5cGU6IHNpemVfdAorICAqLworIHNpemVfdAorLXBrZ2NvbmZfcGF0aF9idWlsZF9mcm9tX2Vudmlyb24oY29uc3QgY2hhciAqZW52aXJvbiwgY29uc3QgY2hhciAqZmFsbGJhY2ssIHBrZ2NvbmZfbGlzdF90ICpkaXJsaXN0LCBib29sIGZpbHRlcikKKytwa2djb25mX3BhdGhfYnVpbGRfZnJvbV9lbnZpcm9uKGNvbnN0IGNoYXIgKmVudnZhcm5hbWUsIGNvbnN0IGNoYXIgKmZhbGxiYWNrLCBwa2djb25mX2xpc3RfdCAqZGlybGlzdCwgYm9vbCBmaWx0ZXIpCisgeworIAljb25zdCBjaGFyICpkYXRhOworIAorLQlkYXRhID0gZ2V0ZW52KGVudmlyb24pOworKwlkYXRhID0gZ2V0ZW52KGVudnZhcm5hbWUpOworIAlpZiAoZGF0YSAhPSBOVUxMKQorIAkJcmV0dXJuIHBrZ2NvbmZfcGF0aF9zcGxpdChkYXRhLCBkaXJsaXN0LCBmaWx0ZXIpOworIAorZGlmZiAtLWdpdCBhL2xpYnBrZ2NvbmYvcGtnLmMgYi9saWJwa2djb25mL3BrZy5jCitpbmRleCA3YWViZDYxLi41ZGFjYWUzIDEwMDY0NAorLS0tIGEvbGlicGtnY29uZi9wa2cuYworKysrIGIvbGlicGtnY29uZi9wa2cuYworQEAgLTMwLDYgKzMwLDggQEAKKyAjCWRlZmluZSBQS0dfQ09ORklHX1JFR19LRVkgIlNvZnR3YXJlXFxwa2djb25maWdcXFBLR19DT05GSUdfUEFUSCIKKyAjCXVuZGVmIFBLR19ERUZBVUxUX1BBVEgKKyAjCWRlZmluZSBQS0dfREVGQVVMVF9QQVRIICIuLi9saWIvcGtnY29uZmlnOy4uL3NoYXJlL3BrZ2NvbmZpZyIKKysjZGVmaW5lIHN0cm5jYXNlY21wIF9zdHJuaWNtcAorKyNkZWZpbmUgc3RyY2FzZWNtcCBfc3RyaWNtcAorICNlbmRpZgorIAorICNkZWZpbmUgUEtHX0NPTkZJR19FWFQJCSIucGMiCitAQCAtMTM0LDIxICsxMzYsMjEgQEAgc3RhdGljIGludCBwa2djb25mX3BrZ19wYXJzZXJfa2V5d29yZF9wYWlyX2NtcChjb25zdCB2b2lkICprZXksIGNvbnN0IHZvaWQgKnB0cikKKyBzdGF0aWMgdm9pZAorIHBrZ2NvbmZfcGtnX3BhcnNlcl90dXBsZV9mdW5jKGNvbnN0IHBrZ2NvbmZfY2xpZW50X3QgKmNsaWVudCwgcGtnY29uZl9wa2dfdCAqcGtnLCBjb25zdCBwdHJkaWZmX3Qgb2Zmc2V0LCBjaGFyICp2YWx1ZSkKKyB7CistCWNoYXIgKipkZXN0ID0gKCh2b2lkICopIHBrZyArIG9mZnNldCk7CisrCWNoYXIgKipkZXN0ID0gKGNoYXIgKiopKChjaGFyICopIHBrZyArIG9mZnNldCk7CisgCSpkZXN0ID0gcGtnY29uZl90dXBsZV9wYXJzZShjbGllbnQsICZwa2ctPnZhcnMsIHZhbHVlKTsKKyB9CisgCisgc3RhdGljIHZvaWQKKyBwa2djb25mX3BrZ19wYXJzZXJfZnJhZ21lbnRfZnVuYyhjb25zdCBwa2djb25mX2NsaWVudF90ICpjbGllbnQsIHBrZ2NvbmZfcGtnX3QgKnBrZywgY29uc3QgcHRyZGlmZl90IG9mZnNldCwgY2hhciAqdmFsdWUpCisgeworLQlwa2djb25mX2xpc3RfdCAqZGVzdCA9ICgodm9pZCAqKSBwa2cgKyBvZmZzZXQpOworKwlwa2djb25mX2xpc3RfdCAqZGVzdCA9IChwa2djb25mX2xpc3RfdCAqKSgoY2hhciAqKSBwa2cgKyBvZmZzZXQpOworIAlwa2djb25mX2ZyYWdtZW50X3BhcnNlKGNsaWVudCwgZGVzdCwgJnBrZy0+dmFycywgdmFsdWUpOworIH0KKyAKKyBzdGF0aWMgdm9pZAorIHBrZ2NvbmZfcGtnX3BhcnNlcl9kZXBlbmRlbmN5X2Z1bmMoY29uc3QgcGtnY29uZl9jbGllbnRfdCAqY2xpZW50LCBwa2djb25mX3BrZ190ICpwa2csIGNvbnN0IHB0cmRpZmZfdCBvZmZzZXQsIGNoYXIgKnZhbHVlKQorIHsKKy0JcGtnY29uZl9saXN0X3QgKmRlc3QgPSAoKHZvaWQgKikgcGtnICsgb2Zmc2V0KTsKKysJcGtnY29uZl9saXN0X3QgKmRlc3QgPSAocGtnY29uZl9saXN0X3QgKikoKGNoYXIgKikgcGtnICsgb2Zmc2V0KTsKKyAJcGtnY29uZl9kZXBlbmRlbmN5X3BhcnNlKGNsaWVudCwgcGtnLCBkZXN0LCB2YWx1ZSk7CisgfQorIAorQEAgLTIzOCw3ICsyNDAsNyBAQCBwa2djb25mX3BrZ192YWxpZGF0ZShjb25zdCBwa2djb25mX2NsaWVudF90ICpjbGllbnQsIGNvbnN0IHBrZ2NvbmZfcGtnX3QgKnBrZykKKyAKKyAJZm9yIChpID0gMDsgaSA8IFBLR0NPTkZfQVJSQVlfU0laRShwa2djb25mX3BrZ192YWxpZGF0aW9ucyk7IGkrKykKKyAJeworLQkJY2hhciAqKnAgPSAoKHZvaWQgKikgcGtnICsgcGtnY29uZl9wa2dfdmFsaWRhdGlvbnNbaV0ub2Zmc2V0KTsKKysJCWNoYXIgKipwID0gKGNoYXIgKiopKChjaGFyICopIHBrZyArIHBrZ2NvbmZfcGtnX3ZhbGlkYXRpb25zW2ldLm9mZnNldCk7CisgCisgCQlpZiAoKnAgIT0gTlVMTCkKKyAJCQljb250aW51ZTsKK0BAIC01ODcsNyArNTg5LDcgQEAgcGtnY29uZl9zY2FuX2FsbChwa2djb25mX2NsaWVudF90ICpjbGllbnQsIHZvaWQgKmRhdGEsIHBrZ2NvbmZfcGtnX2l0ZXJhdGlvbl9mdW4KKyAKKyAjaWZkZWYgX1dJTjMyCisgc3RhdGljIHBrZ2NvbmZfcGtnX3QgKgorLXBrZ2NvbmZfcGtnX2ZpbmRfaW5fcmVnaXN0cnlfa2V5KGNvbnN0IHBrZ2NvbmZfY2xpZW50X3QgKmNsaWVudCwgSEtFWSBoa2V5LCBjb25zdCBjaGFyICpuYW1lKQorK3BrZ2NvbmZfcGtnX2ZpbmRfaW5fcmVnaXN0cnlfa2V5KHBrZ2NvbmZfY2xpZW50X3QgKmNsaWVudCwgSEtFWSBoa2V5LCBjb25zdCBjaGFyICpuYW1lKQorIHsKKyAJcGtnY29uZl9wa2dfdCAqcGtnID0gTlVMTDsKKyAKK0BAIC0xMDQ4LDggKzEwNTAsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgeworIAorIHN0YXRpYyBjb25zdCBwa2djb25mX3BrZ19wcm92aWRlc192ZXJtYXRjaF9ydWxlX3QgcGtnY29uZl9wa2dfcHJvdmlkZXNfdmVybWF0Y2hfcnVsZXNbXSA9IHsKKyAJW1BLR0NPTkZfQ01QX0FOWV0gPSB7CistCQkucnVsZWNtcCA9IHt9LAorLQkJLmRlcGNtcCA9IHt9LAorKwkJLnJ1bGVjbXAgPSB7CisrCQkJW1BLR0NPTkZfQ01QX0FOWV0JCQk9IHBrZ2NvbmZfcGtnX2NvbXBhcmF0b3Jfbm9uZSwKKysgICAgICAgICAgICAgICAgfSwKKysJCS5kZXBjbXAgPSB7CisrCQkJW1BLR0NPTkZfQ01QX0FOWV0JCQk9IHBrZ2NvbmZfcGtnX2NvbXBhcmF0b3Jfbm9uZSwKKysgICAgICAgICAgICAgICAgfSwKKyAJfSwKKyAJW1BLR0NPTkZfQ01QX0xFU1NfVEhBTl0gPSB7CisgCQkucnVsZWNtcCA9IHsKK0BAIC0xMTIxLDcgKzExMjcsOSBAQCBzdGF0aWMgY29uc3QgcGtnY29uZl9wa2dfcHJvdmlkZXNfdmVybWF0Y2hfcnVsZV90IHBrZ2NvbmZfcGtnX3Byb3ZpZGVzX3Zlcm1hdGNoXworIAkJCVtQS0dDT05GX0NNUF9FUVVBTF0JCQk9IHBrZ2NvbmZfcGtnX2NvbXBhcmF0b3JfZXEsCisgCQkJW1BLR0NPTkZfQ01QX05PVF9FUVVBTF0JCQk9IHBrZ2NvbmZfcGtnX2NvbXBhcmF0b3JfbmUKKyAJCX0sCistCQkuZGVwY21wID0ge30sCisrCQkuZGVwY21wID0geworKwkJCVtQS0dDT05GX0NNUF9BTlldCQkJPSBwa2djb25mX3BrZ19jb21wYXJhdG9yX25vbmUsCisrICAgICAgICAgICAgICAgIH0sCisgCX0sCisgCVtQS0dDT05GX0NNUF9OT1RfRVFVQUxdID0geworIAkJLnJ1bGVjbXAgPSB7CitAQCAtMTEzMyw3ICsxMTQxLDkgQEAgc3RhdGljIGNvbnN0IHBrZ2NvbmZfcGtnX3Byb3ZpZGVzX3Zlcm1hdGNoX3J1bGVfdCBwa2djb25mX3BrZ19wcm92aWRlc192ZXJtYXRjaF8KKyAJCQlbUEtHQ09ORl9DTVBfRVFVQUxdCQkJPSBwa2djb25mX3BrZ19jb21wYXJhdG9yX25lLAorIAkJCVtQS0dDT05GX0NNUF9OT1RfRVFVQUxdCQkJPSBwa2djb25mX3BrZ19jb21wYXJhdG9yX2VxCisgCQl9LAorLQkJLmRlcGNtcCA9IHt9LAorKwkJLmRlcGNtcCA9IHsKKysJCQlbUEtHQ09ORl9DTVBfQU5ZXQkJCT0gcGtnY29uZl9wa2dfY29tcGFyYXRvcl9ub25lLAorKyAgICAgICAgICAgICAgICB9LAorIAl9LAorIH07CisgCitkaWZmIC0tZ2l0IGEvbGlicGtnY29uZi9zdGRpbmMuaCBiL2xpYnBrZ2NvbmYvc3RkaW5jLmgKK2luZGV4IDU4Y2M2YzcuLmFjN2U1M2MgMTAwNjQ0CistLS0gYS9saWJwa2djb25mL3N0ZGluYy5oCisrKysgYi9saWJwa2djb25mL3N0ZGluYy5oCitAQCAtMjQsOSArMjQsNyBAQAorICNpbmNsdWRlIDxzdGRib29sLmg+CisgI2luY2x1ZGUgPHN0ZGFyZy5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKy0jaW5jbHVkZSA8ZGlyZW50Lmg+CisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorLSNpbmNsdWRlIDx1bmlzdGQuaD4KKyAjaW5jbHVkZSA8c3RkaW50Lmg+CisgCisgI2lmZGVmIF9XSU4zMgorQEAgLTM0LDggKzMyLDE1IEBACisgIyBpbmNsdWRlIDx3aW5kb3dzLmg+CisgIyBpbmNsdWRlIDxtYWxsb2MuaD4KKyAjIGRlZmluZSBQQVRIX0RFVl9OVUxMCSJudWwiCisrIyBpZm5kZWYgc3NpemVfdAorKyMgIGluY2x1ZGUgPEJhc2VUc2QuaD4KKysjICBkZWZpbmUgc3NpemVfdCBTU0laRV9UCisrIyBlbmRpZgorKyMgaW5jbHVkZSAid2luLWRpcmVudC5oIgorICNlbHNlCisgIyBkZWZpbmUgUEFUSF9ERVZfTlVMTAkiL2Rldi9udWxsIgorKyMgaW5jbHVkZSA8ZGlyZW50Lmg+CisrIyBpbmNsdWRlIDx1bmlzdGQuaD4KKyAjZW5kaWYKKyAKKyAjZW5kaWYKKy0tIAorMi40LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25mL3BrZ2NvbmYvMDAwMS1zdGRpbmMuaC1maXgtYnVpbGQtd2l0aC1taW5ndy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZi9wa2djb25mLzAwMDEtc3RkaW5jLmgtZml4LWJ1aWxkLXdpdGgtbWluZ3cucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDllYmUzMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZi9wa2djb25mLzAwMDEtc3RkaW5jLmgtZml4LWJ1aWxkLXdpdGgtbWluZ3cucGF0Y2gKQEAgLTAsMCArMSw0OCBAQAorRnJvbSBlYTI4YzViMzQ0NTdjZjc2NzYxODFiMjg0ZTIyZWE1Zjc5YTMwZDg1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogIk1heGluIEIuIEpvaG4iIDxtYXhpbi5qb2huQGludGVsLmNvbT4KK0RhdGU6IFRodSwgMTMgSnVsIDIwMTcgMTQ6NDc6MzEgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gc3RkaW5jLmg6IGZpeCBidWlsZCB3aXRoIG1pbmd3CisKK0ZpeGVzIHRoaXMgYnVpbGQgZXJyb3Igd2l0aCBtaW5ndzoKKy4uLgorfCBjb21waWxhdGlvbiB0ZXJtaW5hdGVkLgorfCBJbiBmaWxlIGluY2x1ZGVkIGZyb20gLi4vcGtnY29uZi0xLjMuNy9saWJwa2djb25mL2xpYnBrZ2NvbmYuaDoxOTowLAorfCBmcm9tIC4uL3BrZ2NvbmYtMS4zLjcvbGlicGtnY29uZi9hdWRpdC5jOjE2OgorfCAuLi9wa2djb25mLTEuMy43L2xpYnBrZ2NvbmYvc3RkaW5jLmg6MzY6MTI6IGZhdGFsIGVycm9yOiBCYXNlVHNkLmg6IE5vCitzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Cit8ICMgaW5jbHVkZSA8QmFzZVRzZC5oPgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorCitTaWduZWQtb2ZmLWJ5OiBNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4KKy0tLQorIGxpYnBrZ2NvbmYvc3RkaW5jLmggfCAxMCArKysrKysrKystCisgMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbGlicGtnY29uZi9zdGRpbmMuaCBiL2xpYnBrZ2NvbmYvc3RkaW5jLmgKK2luZGV4IGFjN2U1M2MuLmQ4ZWZjZjUgMTAwNjQ0CistLS0gYS9saWJwa2djb25mL3N0ZGluYy5oCisrKysgYi9saWJwa2djb25mL3N0ZGluYy5oCitAQCAtMzMsMTAgKzMzLDE4IEBACisgIyBpbmNsdWRlIDxtYWxsb2MuaD4KKyAjIGRlZmluZSBQQVRIX0RFVl9OVUxMCSJudWwiCisgIyBpZm5kZWYgc3NpemVfdAorKyMgaWZuZGVmIF9fTUlOR1czMl9fCisgIyAgaW5jbHVkZSA8QmFzZVRzZC5oPgorKyMgZWxzZQorKyMgIGluY2x1ZGUgPGJhc2V0c2QuaD4KKysjIGVuZGlmCisgIyAgZGVmaW5lIHNzaXplX3QgU1NJWkVfVAorICMgZW5kaWYKKy0jIGluY2x1ZGUgIndpbi1kaXJlbnQuaCIKKysjIGlmbmRlZiBfX01JTkdXMzJfXworKyMgIGluY2x1ZGUgIndpbi1kaXJlbnQuaCIKKysjIGVsc2UKKysjIGluY2x1ZGUgPGRpcmVudC5oPgorKyMgZW5kaWYKKyAjZWxzZQorICMgZGVmaW5lIFBBVEhfREVWX05VTEwJIi9kZXYvbnVsbCIKKyAjIGluY2x1ZGUgPGRpcmVudC5oPgorLS0gCisyLjQuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmYvcGtnY29uZi9wa2ctY29uZmlnLWVzZGsuaW4gYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmYvcGtnY29uZi9wa2ctY29uZmlnLWVzZGsuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGZjOWIwYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZi9wa2djb25mL3BrZy1jb25maWctZXNkay5pbgpAQCAtMCwwICsxLDI0IEBACisjISAvYmluL3NoCisKKyMgT3JpZ25hbCBwa2ctY29uZmlnLW5hdGl2ZSBhY3Rpb24gd2hlbiBjYWxsZWQgYXMgcGtnLWNvbmZpZy1uYXRpdmUKKyMgTk8gQ2hhbmdlIGhlcmUKK2lmIFsgInBrZy1jb25maWctbmF0aXZlIiA9ICJgYmFzZW5hbWUgJDBgIiBdIDsgdGhlbgorCVBLR19DT05GSUdfUEFUSD0iQFBBVEhfTkFUSVZFQCIKKwlQS0dfQ09ORklHX0xJQkRJUj0iQExJQkRJUl9OQVRJVkVAIgorCXVuc2V0IFBLR19DT05GSUdfU1lTUk9PVF9ESVIKK2Vsc2UKKwkjIGluIHRoaXMgY2FzZSBjaGVjayBpZiB3ZSBhcmUgaW4gdGhlIGVzZGsKKwlpZiBbICIkT0VfU0tJUF9TREtfQ0hFQ0siID0gIjEiIF0gOyB0aGVuCisJCXBhcmVudHBpZD1gcHMgLW8gcHBpZD0gLXAgJCRgCisJCXBhcmVudHBpZF9pbmZvPWBwcyAtd28gY29tbT0gLW8gYXJncz0gLXAgJHBhcmVudHBpZGAKKworCQkjIGNoZWNrIGlmIHdlIGFyZSBiZWluZyBjYWxsZWQgZnJvbSAgdGhlIGtlcm5lbCdzIG1ha2UgbWVudWNvbmZpZworCQlpZiAoIGVjaG8gJHBhcmVudHBpZF9pbmZvIHwgZ3JlcCAtcSBjaGVjay1seGRpYWxvZyApIDsgdGhlbgorCQkJUEtHX0NPTkZJR19QQVRIPSJAUEFUSF9OQVRJVkVAIgorCQkJUEtHX0NPTkZJR19MSUJESVI9IkBMSUJESVJfTkFUSVZFQCIKKwkJCXVuc2V0IFBLR19DT05GSUdfU1lTUk9PVF9ESVIKKwkJZmkKKwlmaQorZmkKKworcGtnLWNvbmZpZy5yZWFsICIkQCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZi9wa2djb25mL3BrZy1jb25maWctbmF0aXZlLmluIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25mL3BrZ2NvbmYvcGtnLWNvbmZpZy1uYXRpdmUuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWVkMzBhMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZi9wa2djb25mL3BrZy1jb25maWctbmF0aXZlLmluCkBAIC0wLDAgKzEsNiBAQAorIyEgL2Jpbi9zaAorCitQS0dfQ09ORklHX1BBVEg9IkBQQVRIX05BVElWRUAiCit1bnNldCBQS0dfQ09ORklHX1NZU1JPT1RfRElSCisKK3BrZy1jb25maWcgIiRAIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25mL3BrZ2NvbmYvcGtnLWNvbmZpZy13cmFwcGVyIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25mL3BrZ2NvbmYvcGtnLWNvbmZpZy13cmFwcGVyCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjY5NWYzNDkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmYvcGtnY29uZi9wa2ctY29uZmlnLXdyYXBwZXIKQEAgLTAsMCArMSwxNiBAQAorIyEvYmluL3NoCisjIHBrZ2NvbmYgd3JhcHBlciB0byBkZWFsIHdpdGggcGtnLWNvbmZpZy9wa2djb25mIGNvbXBhdGliaWxpdHkgaXNzdWVzCisjCisjIENvcHlyaWdodCAoQykgMjAxNSBDaHJpc3RvcGhlciBMYXJzb24gPGNocmlzX2xhcnNvbkBtZW50b3IuY29tPgorIyBMaWNlbnNlOiBNSVQgKHNlZSBDT1BZSU5HLk1JVCBhdCB0aGUgcm9vdCBvZiB0aGUgcmVwb3NpdG9yeSBmb3IgdGVybXMpCisKK2ZvciBhcmc7IGRvCisgICAgY2FzZSAiJGFyZyIgaW4KKyAgICAgICAgLS12YXJpYWJsZXwtLXZhcmlhYmxlPSopCisgICAgICAgICAgICAjIHBrZy1jb25maWcgZG9lc24ndCBzeXNyb290LXByZWZpeCB1c2VyIHZhcmlhYmxlcworICAgICAgICAgICAgdW5zZXQgUEtHX0NPTkZJR19TWVNST09UX0RJUgorICAgICAgICAgICAgOzsKKyAgICBlc2FjCitkb25lCisKK2V4ZWMgcGtnY29uZiAiJEAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmYvcGtnY29uZl8xLjMuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZi9wa2djb25mXzEuMy43LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkYTBkZDEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmYvcGtnY29uZl8xLjMuNy5iYgpAQCAtMCwwICsxLDczIEBACitTVU1NQVJZID0gInBrZ2NvbmYgcHJvdmlkZXMgY29tcGlsZXIgYW5kIGxpbmtlciBjb25maWd1cmF0aW9uIGZvciBkZXZlbG9wbWVudCBmcmFtZXdvcmtzLiIKK0RFU0NSSVBUSU9OID0gInBrZ2NvbmYgaXMgYSBwcm9ncmFtIHdoaWNoIGhlbHBzIHRvIGNvbmZpZ3VyZSBjb21waWxlciBhbmQgbGlua2VyIFwKK2ZsYWdzIGZvciBkZXZlbG9wbWVudCBmcmFtZXdvcmtzLiBJdCBpcyBzaW1pbGFyIHRvIHBrZy1jb25maWcgZnJvbSBcCitmcmVlZGVza3RvcC5vcmcsIHByb3ZpZGluZyBhZGRpdGlvbmFsIGZ1bmN0aW9uYWxpdHkgd2hpbGUgYWxzbyBtYWludGFpbmluZyBcCitjb21wYXRpYmlsaXR5LiIKK0hPTUVQQUdFID0gImh0dHA6Ly9wa2djb25mLm9yZyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL3BrZ2NvbmYvcGtnY29uZi9pc3N1ZXMiCitTRUNUSU9OID0gImRldmVsIgorUFJPVklERVMgKz0gInBrZ2NvbmZpZyIKK1JQUk9WSURFU18ke1BOfSArPSAicGtnY29uZmlnIgorREVGQVVMVF9QUkVGRVJFTkNFID0gIi0xIgorCisjIFRoZSBwa2djb25mIGxpY2Vuc2Ugc2VlbXMgdG8gYmUgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgdG8gQlNELTItQ2xhdXNlIG9yCisjIElTQywgYnV0IGhhcyBkaWZmZXJlbnQgd29yZGluZywgc28gbmVlZHMgaXRzIG93biBuYW1lLgorTElDRU5TRSA9ICJwa2djb25mIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTQ4YTlkMWRiMTBjYzBhODQ4MTBjMzEzYTBlOTI2NmYiCisKK1NSQ19VUkkgPSAiXAorICAgIGh0dHBzOi8vZGlzdGZpbGVzLmRlcmVmZXJlbmNlZC5vcmcvcGtnY29uZi9wa2djb25mLSR7UFZ9LnRhci54eiBcCisgICAgZmlsZTovLzAwMDEtTWluaW1hbC10d2Vha3MtdG8tY29tcGlsZS13aXRoLVZpc3VhbC1DLTIwMTUucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLXN0ZGluYy5oLWZpeC1idWlsZC13aXRoLW1pbmd3LnBhdGNoIFwKKyAgICBmaWxlOi8vcGtnLWNvbmZpZy13cmFwcGVyIFwKKyAgICBmaWxlOi8vcGtnLWNvbmZpZy1uYXRpdmUuaW4gXAorICAgIGZpbGU6Ly9wa2ctY29uZmlnLWVzZGsuaW4gXAorIgorU1JDX1VSSVttZDVzdW1dID0gImFjMzVjMzRkODRlZWI2YTAzZDRkNjFiODU1NWQ2MTk3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFiZTdlNDA5MDBjNzQ2Nzg5M2M2NWY4MTAyMTFiMWU2OGRhM2Y4ZDVlNzBmZGRiODgzZmMyNDgzOWNhZDAzMzkiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworRVhUUkFfT0VDT05GICs9ICItLXdpdGgtcGtnLWNvbmZpZy1kaXI9JyR7bGliZGlyfS9wa2djb25maWc6JHtkYXRhZGlyfS9wa2djb25maWcnIgorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgIyBJbnN0YWxsIGEgd3JhcHBlciB3aGljaCBkZWFscywgYXMgbXVjaCBhcyBwb3NzaWJsZSB3aXRoIHBrZ2NvbmYgdnMKKyAgICAjIHBrZy1jb25maWcgY29tcGF0aWJpbGl0eSBpc3N1ZXMuCisgICAgaW5zdGFsbCAtbSAwNzU1ICIke1dPUktESVJ9L3BrZy1jb25maWctd3JhcHBlciIgIiR7RH0ke2JpbmRpcn0vcGtnLWNvbmZpZyIKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlICgpIHsKKyAgICAjIEluc3RhbGwgYSBwa2ctY29uZmlnLW5hdGl2ZSB3cmFwcGVyIHRoYXQgd2lsbCB1c2UgdGhlIG5hdGl2ZSBzeXNyb290IGluc3RlYWQKKyAgICAjIG9mIHRoZSBNQUNISU5FIHN5c3Jvb3QsIGZvciB1c2luZyBwa2ctY29uZmlnIHdoZW4gYnVpbGRpbmcgbmF0aXZlIHRvb2xzLgorICAgIHNlZCAtZSAic3xAUEFUSF9OQVRJVkVAfCR7UEtHX0NPTkZJR19QQVRIfXwiIFwKKyAgICAgICAgPCAke1dPUktESVJ9L3BrZy1jb25maWctbmF0aXZlLmluID4gJHtCfS9wa2ctY29uZmlnLW5hdGl2ZQorICAgIGluc3RhbGwgLW03NTUgJHtCfS9wa2ctY29uZmlnLW5hdGl2ZSAke0R9JHtiaW5kaXJ9L3BrZy1jb25maWctbmF0aXZlCisgICAgc2VkIC1lICJzfEBQQVRIX05BVElWRUB8JHtQS0dfQ09ORklHX1BBVEh9fCIgXAorICAgICAgICAtZSAic3xATElCRElSX05BVElWRUB8JHtQS0dfQ09ORklHX0xJQkRJUn18IiBcCisgICAgICAgIDwgJHtXT1JLRElSfS9wa2ctY29uZmlnLWVzZGsuaW4gPiAke0J9L3BrZy1jb25maWctZXNkaworICAgIGluc3RhbGwgLW03NTUgJHtCfS9wa2ctY29uZmlnLWVzZGsgJHtEfSR7YmluZGlyfS9wa2ctY29uZmlnLWVzZGsKK30KKworQUxURVJOQVRJVkVfJHtQTn0gPSAicGtnLWNvbmZpZyIKKworIyBXaGVuIHVzaW5nIHRoZSBSUE0gZ2VuZXJhdGVkIGF1dG9tYXRpYyBwYWNrYWdlIGRlcGVuZGVuY2llcywgc29tZSBwYWNrYWdlcworIyB3aWxsIGVuZCB1cCByZXF1aXJpbmcgJ3BrZ2NvbmZpZyhwa2ctY29uZmlnKScuICBBbGxvdyB0aGlzIGJlaGF2aW9yIGJ5CisjIHNwZWNpZnlpbmcgYW4gYXBwcm9wcmlhdGUgcHJvdmlkZS4KK1JQUk9WSURFU18ke1BOfSArPSAicGtnY29uZmlnKHBrZy1jb25maWcpIgorCisjIEluY2x1ZGUgcGtnLm00IGluIHRoZSBtYWluIHBhY2thZ2UsIGxlYXZpbmcgbGlicGtnY29uZiBkZXYgZmlsZXMgaW4gLWRldgorRklMRVNfJHtQTn0tZGV2X3JlbW92ZSA9ICIke2RhdGFkaXJ9L2FjbG9jYWwiCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9hY2xvY2FsIgorCitCQkNMQVNTRVhURU5EICs9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitwa2djb25mX3NzdGF0ZV9maXh1cF9lc2RrICgpIHsKKyAgIGlmIFsgIiR7QkJfQ1VSUkVOVFRBU0t9IiA9ICJwb3B1bGF0ZV9zeXNyb290X3NldHNjZW5lIiAtYSAiJHtXSVRISU5fRVhUX1NES30iID0gIjEiIF0gOyB0aGVuCisgICAgICAgcGtnY29uZmRpcj0iJHtTU1RBVEVfSU5TVERJUn0vcmVjaXBlLXN5c3Jvb3QtbmF0aXZlLyR7YmluZGlyX25hdGl2ZX0iCisgICAgICAgbXYgJHBrZ2NvbmZkaXIvcGtnLWNvbmZpZyAkcGtnY29uZmRpci9wa2ctY29uZmlnLnJlYWwKKyAgICAgICBsbnIgJHBrZ2NvbmZkaXIvcGtnLWNvbmZpZy1lc2RrICRwa2djb25mZGlyL3BrZy1jb25maWcKKyAgICAgICBzZWQgLWkgLWUgInN8XnBrZy1jb25maWd8cGtnLWNvbmZpZy5yZWFsfCIgJHBrZ2NvbmZkaXIvcGtnLWNvbmZpZy1uYXRpdmUKKyAgIGZpCit9CisKK1NTVEFURVBPU1RVTlBBQ0tGVU5DU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBwa2djb25mX3NzdGF0ZV9maXh1cF9lc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25maWcvcGtnY29uZmlnLzAwMDEtZ2RhdGUtTW92ZS13YXJuaW5nLXByYWdtYS1vdXRzaWRlLW9mLWZ1bmN0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25maWcvcGtnY29uZmlnLzAwMDEtZ2RhdGUtTW92ZS13YXJuaW5nLXByYWdtYS1vdXRzaWRlLW9mLWZ1bmN0aW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNGM4MjkzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZmlnL3BrZ2NvbmZpZy8wMDAxLWdkYXRlLU1vdmUtd2FybmluZy1wcmFnbWEtb3V0c2lkZS1vZi1mdW5jdGlvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLUZyb20gOTQ2ZDM2MjY2ZDhhMzBmMDRmZTM0ZDMxODNiZjQ5MjkxNDE5MzRkMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGNveXB1IDxjb3lwdUBzZGYub3JnPgotRGF0ZTogV2VkLCAyIE1hciAyMDE2IDE5OjM4OjQ4ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGdkYXRlOiBNb3ZlIHdhcm5pbmcgcHJhZ21hIG91dHNpZGUgb2YgZnVuY3Rpb24KLQotQ29tbWl0IDA4MTdhZjQwZThjNzRjNzIxYzMwZjZlZjQ4MmIxZjUzZDEyMDQ0YzcgYnJlYWtzIHRoZSBidWlsZCBvbgotb2xkZXIgdmVyc2lvbnMgb2YgR0NDLCB3aGljaCBkb24ndCBhbGxvdyBwcmFnbWEgaW5zaWRlIGZ1bmN0aW9ucy4KLQotaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvNzYxNTUwCi0tLS0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLSBnbGliL2dsaWIvZ2RhdGUuYyB8IDUgKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9nbGliL2dsaWIvZ2RhdGUuYyBiL2dsaWIvZ2xpYi9nZGF0ZS5jCi1pbmRleCAxOTc4Y2Y3Li4yMGU2YzRhIDEwMDY0NAotLS0tIGEvZ2xpYi9nbGliL2dkYXRlLmMKLSsrKyBiL2dsaWIvZ2xpYi9nZGF0ZS5jCi1AQCAtMjQzOSw2ICsyNDM5LDkgQEAgd2luMzJfc3RyZnRpbWVfaGVscGVyIChjb25zdCBHRGF0ZSAgICAgKmQsCi0gICoKLSAgKiBSZXR1cm5zOiBudW1iZXIgb2YgY2hhcmFjdGVycyB3cml0dGVuIHRvIHRoZSBidWZmZXIsIG9yIDAgdGhlIGJ1ZmZlciB3YXMgdG9vIHNtYWxsCi0gICovCi0rI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCi0rI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV2Zvcm1hdC1ub25saXRlcmFsIgotKwotIGdzaXplICAgICAKLSBnX2RhdGVfc3RyZnRpbWUgKGdjaGFyICAgICAgICpzLCAKLSAgICAgICAgICAgICAgICAgIGdzaXplICAgICAgICBzbGVuLCAKLUBAIC0yNTQ5LDMgKzI1NTIsNSBAQCBnX2RhdGVfc3RyZnRpbWUgKGdjaGFyICAgICAgICpzLAotICAgcmV0dXJuIHJldHZhbDsKLSAjZW5kaWYKLSB9Ci0rCi0rI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwb3AKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25maWcvcGtnY29uZmlnL3BrZy1jb25maWctZXNkay5pbiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZmlnL3BrZ2NvbmZpZy9wa2ctY29uZmlnLWVzZGsuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGZjOWIwYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZmlnL3BrZ2NvbmZpZy9wa2ctY29uZmlnLWVzZGsuaW4KQEAgLTAsMCArMSwyNCBAQAorIyEgL2Jpbi9zaAorCisjIE9yaWduYWwgcGtnLWNvbmZpZy1uYXRpdmUgYWN0aW9uIHdoZW4gY2FsbGVkIGFzIHBrZy1jb25maWctbmF0aXZlCisjIE5PIENoYW5nZSBoZXJlCitpZiBbICJwa2ctY29uZmlnLW5hdGl2ZSIgPSAiYGJhc2VuYW1lICQwYCIgXSA7IHRoZW4KKwlQS0dfQ09ORklHX1BBVEg9IkBQQVRIX05BVElWRUAiCisJUEtHX0NPTkZJR19MSUJESVI9IkBMSUJESVJfTkFUSVZFQCIKKwl1bnNldCBQS0dfQ09ORklHX1NZU1JPT1RfRElSCitlbHNlCisJIyBpbiB0aGlzIGNhc2UgY2hlY2sgaWYgd2UgYXJlIGluIHRoZSBlc2RrCisJaWYgWyAiJE9FX1NLSVBfU0RLX0NIRUNLIiA9ICIxIiBdIDsgdGhlbgorCQlwYXJlbnRwaWQ9YHBzIC1vIHBwaWQ9IC1wICQkYAorCQlwYXJlbnRwaWRfaW5mbz1gcHMgLXdvIGNvbW09IC1vIGFyZ3M9IC1wICRwYXJlbnRwaWRgCisKKwkJIyBjaGVjayBpZiB3ZSBhcmUgYmVpbmcgY2FsbGVkIGZyb20gIHRoZSBrZXJuZWwncyBtYWtlIG1lbnVjb25maWcKKwkJaWYgKCBlY2hvICRwYXJlbnRwaWRfaW5mbyB8IGdyZXAgLXEgY2hlY2stbHhkaWFsb2cgKSA7IHRoZW4KKwkJCVBLR19DT05GSUdfUEFUSD0iQFBBVEhfTkFUSVZFQCIKKwkJCVBLR19DT05GSUdfTElCRElSPSJATElCRElSX05BVElWRUAiCisJCQl1bnNldCBQS0dfQ09ORklHX1NZU1JPT1RfRElSCisJCWZpCisJZmkKK2ZpCisKK3BrZy1jb25maWcucmVhbCAiJEAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmZpZy9wa2djb25maWdfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25maWcvcGtnY29uZmlnX2dpdC5iYgppbmRleCBkYzQ0OTkyLi41MmVmMmE5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmZpZy9wa2djb25maWdfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZmlnL3BrZ2NvbmZpZ19naXQuYmIKQEAgLTgsMTMgKzgsMTMgQEAKIExJQ0VOU0UgPSAiR1BMdjIrIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCiAKLVNSQ1JFViA9ICI4NzE1MmMwNWJlODhjYThiZTcxYTNhNTYzZjI3NWIzNjg2ZDMyYzI4IgotUFYgPSAiMC4yOS4xK2dpdCR7U1JDUFZ9IgorU1JDUkVWID0gImVkZjhlNmYwZWE3N2VkZTA3M2YwN2JmZjBkMmFlMWZjN2EzODEwM2IiCitQViA9ICIwLjI5LjIrZ2l0JHtTUkNQVn0iCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vYW5vbmdpdC5mcmVlZGVza3RvcC5vcmcvcGtnLWNvbmZpZyBcCisgICAgICAgICAgIGZpbGU6Ly9wa2ctY29uZmlnLWVzZGsuaW4gXAogICAgICAgICAgICBmaWxlOi8vcGtnLWNvbmZpZy1uYXRpdmUuaW4gXAogICAgICAgICAgICBmaWxlOi8vZml4LWdsaWItY29uZmlndXJlLWxpYnRvb2wtdXNhZ2UucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1nZGF0ZS1Nb3ZlLXdhcm5pbmctcHJhZ21hLW91dHNpZGUtb2YtZnVuY3Rpb24ucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1nbGliLWdldHRleHQubTQtVXBkYXRlLUFNX0dMSUJfR05VX0dFVFRFWFQtdG8tbWF0Y2gtLnBhdGNoIFwKICAgICAgICAgICAgIgogCkBAIC01NSw0ICs1NSwxOSBAQAogICAgICAgICAtZSAic3xATElCRElSX05BVElWRUB8JHtQS0dfQ09ORklHX0xJQkRJUn18IiBcCiAgICAgICAgIDwgJHtXT1JLRElSfS9wa2ctY29uZmlnLW5hdGl2ZS5pbiA+ICR7Qn0vcGtnLWNvbmZpZy1uYXRpdmUKICAgICBpbnN0YWxsIC1tNzU1ICR7Qn0vcGtnLWNvbmZpZy1uYXRpdmUgJHtEfSR7YmluZGlyfS9wa2ctY29uZmlnLW5hdGl2ZQorICAgIHNlZCAtZSAic3xAUEFUSF9OQVRJVkVAfCR7UEtHX0NPTkZJR19QQVRIfXwiIFwKKyAgICAgICAgLWUgInN8QExJQkRJUl9OQVRJVkVAfCR7UEtHX0NPTkZJR19MSUJESVJ9fCIgXAorICAgICAgICA8ICR7V09SS0RJUn0vcGtnLWNvbmZpZy1lc2RrLmluID4gJHtCfS9wa2ctY29uZmlnLWVzZGsKKyAgICBpbnN0YWxsIC1tNzU1ICR7Qn0vcGtnLWNvbmZpZy1lc2RrICR7RH0ke2JpbmRpcn0vcGtnLWNvbmZpZy1lc2RrCiB9CisKK3BrZ2NvbmZpZ19zc3RhdGVfZml4dXBfZXNkayAoKSB7CisJaWYgWyAiJHtCQl9DVVJSRU5UVEFTS30iID0gInBvcHVsYXRlX3N5c3Jvb3Rfc2V0c2NlbmUiIC1hICIke1dJVEhJTl9FWFRfU0RLfSIgPSAiMSIgXSA7IHRoZW4KKwkJcGtnY29uZmRpcj0iJHtTU1RBVEVfSU5TVERJUn0vcmVjaXBlLXN5c3Jvb3QtbmF0aXZlLyR7YmluZGlyX25hdGl2ZX0iCisJCW12ICRwa2djb25mZGlyL3BrZy1jb25maWcgJHBrZ2NvbmZkaXIvcGtnLWNvbmZpZy5yZWFsCisJCWxuciAkcGtnY29uZmRpci9wa2ctY29uZmlnLWVzZGsgJHBrZ2NvbmZkaXIvcGtnLWNvbmZpZworCQlzZWQgLWkgLWUgInN8XnBrZy1jb25maWd8cGtnLWNvbmZpZy5yZWFsfCIgJHBrZ2NvbmZkaXIvcGtnLWNvbmZpZy1uYXRpdmUKKwlmaQorfQorCitTU1RBVEVQT1NUVU5QQUNLRlVOQ1NfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgcGtnY29uZmlnX3NzdGF0ZV9maXh1cF9lc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wcmVsaW5rL3ByZWxpbmtfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wcmVsaW5rL3ByZWxpbmtfZ2l0LmJiCmluZGV4IDQ1MjlkYmYuLjU3MGVmMzYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHJlbGluay9wcmVsaW5rX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ByZWxpbmsvcHJlbGlua19naXQuYmIKQEAgLTMsNiArMyw3IEBACiAjIFdvdWxkIG5lZWQgdHJhbnNmaWctbmF0aXZlIGZvciBkb2N1bWVudGF0aW9uIGlmIGl0IHdhc24ndCBkaXNhYmxlZAogREVQRU5EUyA9ICJlbGZ1dGlscyBiaW51dGlscyIKIFNVTU1BUlkgPSAiQW4gRUxGIHByZWxpbmtpbmcgdXRpbGl0eSIKK0hPTUVQQUdFID0gImh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0LmNnaS9wcmVsaW5rLWNyb3NzL2Fib3V0LyIKIERFU0NSSVBUSU9OID0gIlRoZSBwcmVsaW5rIHBhY2thZ2UgY29udGFpbnMgYSB1dGlsaXR5IHdoaWNoIG1vZGlmaWVzIEVMRiBzaGFyZWQgbGlicmFyaWVzIFwKIGFuZCBleGVjdXRhYmxlcywgc28gdGhhdCBmYXIgZmV3ZXIgcmVsb2NhdGlvbnMgbmVlZCB0byBiZSByZXNvbHZlZCBhdCBcCiBydW50aW1lIGFuZCB0aHVzIHByb2dyYW1zIGNvbWUgdXAgZmFzdGVyLiIKQEAgLTMxLDYgKzMyLDggQEAKICAgICAgICAgICAgZmlsZTovL3ByZWxpbmsuY3Jvbi5kYWlseSBcCiAgICAgICAgICAgIGZpbGU6Ly9wcmVsaW5rLmRlZmF1bHQgXAogCSAgIGZpbGU6Ly9tYWNyb3MucHJlbGluayIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gInVwc3RyZWFtIGhhcyBubyB1c2FibGUgdGFncyIKK1VQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgogCiBUQVJHRVRfT1NfT1JJRyA6PSAiJHtUQVJHRVRfT1N9IgogT1ZFUlJJREVTX2FwcGVuZCA9ICI6JHtUQVJHRVRfT1NfT1JJR30iCkBAIC0xNTAsMTMgKzE1MywxNSBAQAogCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L21hY3Jvcy5wcmVsaW5rICR7RH0ke3N5c2NvbmZkaXJ9L3JwbS9tYWNyb3MucHJlbGluawogfQogCi0jIElmIHdlJ3JlIHVzaW5nIGltYWdlLXByZWxpbmssIHdlIHdhbnQgdG8gc2tpcCB0aGlzIG9uIHRoZSBob3N0IHNpZGUKLSMgYnV0IHN0aWxsIGRvIGl0IGlmIHRoZSBwYWNrYWdlIGlzIGluc3RhbGxlZCBvbiB0aGUgdGFyZ2V0Li4uCisjIElmIHdlIGFlIGRvaW5nIGEgY3Jvc3MgaW5zdGFsbCwgd2Ugd2FudCB0byBhdm9pZCBwcmVsaW5raW5nLgorIyBQcmVsaW5raW5nIGR1cmluZyBhIGNyb3NzIGluc3RhbGwgc2hvdWxkIGJlIGhhbmRsZWQgYnkgdGhlIGltYWdlLXByZWxpbmsKKyMgYmJjbGFzcy4gIElmIHRoZSB1c2VyIGRlc2lyZXMgdGhpcyB0byBydW4gb24gdGhlIHRhcmdldCBhdCBmaXJzdCBib290CisjIHRoZXkgd2lsbCBuZWVkIHRvIGNyZWF0ZSBhIGN1c3RvbSBib290IHNjcmlwdC4KIHBrZ19wb3N0aW5zdF9wcmVsaW5rKCkgewogIyEvYmluL3NoCiAKIGlmIFsgIngkRCIgIT0gIngiIF07IHRoZW4KLSAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1VTRVJfQ0xBU1NFUycsICdpbWFnZS1wcmVsaW5rJywgJ2V4aXQgMCcsICdleGl0IDEnLCBkKX0KKyAgZXhpdCAwCiBmaQogCiBwcmVsaW5rIC1hCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy8wMDAxLVVzZS1lcG9sbC1BUEktb24tTGludXgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy8wMDAxLVVzZS1lcG9sbC1BUEktb24tTGludXgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDI1NTdiMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzLzAwMDEtVXNlLWVwb2xsLUFQSS1vbi1MaW51eC5wYXRjaApAQCAtMCwwICsxLDI5MiBAQAorRnJvbSA5ZTQwN2UwYmUwMTY5NWU3YjkyN2Y1ODIwYWRlODdlZTk2MDJjMjQ4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBGcmksIDE1IFNlcCAyMDE3IDE3OjAwOjE0ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIFVzZSBlcG9sbCBBUEkgb24gTGludXgKKworQWxzbyBhIGNvdXBsZSBvZiBvdGhlciBtb2RpZmljYXRpb25zIGR1ZSB0byBlcG9sbCBoYXZpbmcKK2EgZGlmZmVyZW50IGFwcHJvYWNoIHRvIGhvdyB0aGUgd29ya2luZyBzZXQgb2YgZmRzIGlzIGRlZmluZWQKK2FuZCB1c2VkOgorMSkgb3Blbl9jbGllbnQoKSByZXR1cm5zIGFuIGluZGV4IGludG8gdGhlIGFycmF5IG9mIGNsaWVudHMKKzIpIGNsb3NlX2NsaWVudCgpIGhhcyBhIHByb3RlY3Rpb24gYWdhaW5zdCBiZWluZyBjYWxsZWQgdHdpY2UKK3dpdGggdGhlIHNhbWUgY2xpZW50ICh3aGljaCB3b3VsZCBtZXNzIHVwIHRoZSBhY3RpdmVfY2xpZW50cworY291bnRlcikKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW1NlZWJzIENDJ2QgYnkgZW1haWxdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKworLS0tCisgZW51bXMvZXhpdF9zdGF0dXMuaW4gfCAgIDMgKworIHBzZXVkb19zZXJ2ZXIuYyAgICAgIHwgMTg5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQorIDIgZmlsZXMgY2hhbmdlZCwgMTkwIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9lbnVtcy9leGl0X3N0YXR1cy5pbiBiL2VudW1zL2V4aXRfc3RhdHVzLmluCitpbmRleCA2YmU0NGQzLi44OGY5NGNkIDEwMDY0NAorLS0tIGEvZW51bXMvZXhpdF9zdGF0dXMuaW4KKysrKyBiL2VudW1zL2V4aXRfc3RhdHVzLmluCitAQCAtMTgsMyArMTgsNiBAQCBsaXN0ZW5fZmQsICJzZXJ2ZXIgbG9vcCBoYWQgbm8gdmFsaWQgbGlzdGVuIGZkIgorIHBzZXVkb19sb2FkZWQsICJzZXJ2ZXIgY291bGRuJ3QgZ2V0IG91dCBvZiBwc2V1ZG8gZW52aXJvbm1lbnQiCisgcHNldWRvX3ByZWZpeCwgImNvdWxkbid0IGdldCB2YWxpZCBwc2V1ZG8gcHJlZml4IgorIHBzZXVkb19pbnZvY2F0aW9uLCAiaW52YWxpZCBzZXJ2ZXIgY29tbWFuZCBhcmd1bWVudHMiCisrZXBvbGxfY3JlYXRlLCAiZXBvbGxfY3JlYXRlKCkgZmFpbGVkIgorK2Vwb2xsX2N0bCwgImVwb2xsX2N0bCgpIGZhaWxlZCIKKysKK2RpZmYgLS1naXQgYS9wc2V1ZG9fc2VydmVyLmMgYi9wc2V1ZG9fc2VydmVyLmMKK2luZGV4IGZmMTZlZmQuLjE0ZDM0ZGUgMTAwNjQ0CistLS0gYS9wc2V1ZG9fc2VydmVyLmMKKysrKyBiL3BzZXVkb19zZXJ2ZXIuYworQEAgLTQwLDYgKzQwLDEyIEBACisgI2luY2x1ZGUgInBzZXVkb19jbGllbnQuaCIKKyAjaW5jbHVkZSAicHNldWRvX2RiLmgiCisgCisrLy8gVGhpcyBoYXMgdG8gY29tZSBhZnRlciBwc2V1ZG8gaW5jbHVkZXMsIGFzIHRoYXQncyB3aGVyZSBQU0VVRE9fUE9SVCBkZWZpbmVzIGFyZQorKyNpZmRlZiBQU0VVRE9fUE9SVF9MSU5VWAorKyNpbmNsdWRlIDxzeXMvZXBvbGwuaD4KKysjZW5kaWYKKysKKysKKyBzdGF0aWMgaW50IGxpc3Rlbl9mZCA9IC0xOworIAorIHR5cGVkZWYgc3RydWN0IHsKK0BAIC01OSw2ICs2NSw3IEBAIHN0YXRpYyBpbnQgYWN0aXZlX2NsaWVudHMgPSAwLCBoaWdoZXN0X2NsaWVudCA9IDAsIG1heF9jbGllbnRzID0gMDsKKyAKKyAjZGVmaW5lIExPT1BfREVMQVkgMgorICNkZWZpbmUgREVGQVVMVF9QU0VVRE9fU0VSVkVSX1RJTUVPVVQgMzAKKysjZGVmaW5lIEVQT0xMX01BWF9FVkVOVFMgMTAKKyBpbnQgcHNldWRvX3NlcnZlcl90aW1lb3V0ID0gREVGQVVMVF9QU0VVRE9fU0VSVkVSX1RJTUVPVVQ7Cisgc3RhdGljIGludCBkaWVfcGVhY2VmdWxseSA9IDA7Cisgc3RhdGljIGludCBkaWVfZm9yY2VmdWxseSA9IDA7CitAQCAtODAsNiArODcsOSBAQCBxdWl0X25vdyhpbnQgc2lnbmFsKSB7Cisgc3RhdGljIGludCBtZXNzYWdlcyA9IDAsIHJlc3BvbnNlcyA9IDA7Cisgc3RhdGljIHN0cnVjdCB0aW1ldmFsIG1lc3NhZ2VfdGltZSA9IHsgLnR2X3NlYyA9IDAgfTsKKyAKKysjaWZkZWYgUFNFVURPX1BPUlRfTElOVVgKKytzdGF0aWMgdm9pZCBwc2V1ZG9fc2VydmVyX2xvb3BfZXBvbGwodm9pZCk7CisrI2VuZGlmCisgc3RhdGljIHZvaWQgcHNldWRvX3NlcnZlcl9sb29wKHZvaWQpOworIAorIC8qIGhlbHBlciBmdW5jdGlvbiB0byBtYWtlIGEgZGlyZWN0b3J5LCBqdXN0IGxpa2UgbWtkaXIgLXAuCitAQCAtMzY5LDEyICszNzksMTYgQEAgcHNldWRvX3NlcnZlcl9zdGFydChpbnQgZGFlbW9uaXplKSB7CisgCQkJa2lsbChwcGlkLCBTSUdVU1IxKTsKKyAJCX0KKyAJfQorKyNpZmRlZiBQU0VVRE9fUE9SVF9MSU5VWAorKwlwc2V1ZG9fc2VydmVyX2xvb3BfZXBvbGwoKTsKKysjZWxzZQorIAlwc2V1ZG9fc2VydmVyX2xvb3AoKTsKKysjZW5kaWYKKyAJcmV0dXJuIDA7CisgfQorIAorIC8qIG1lc3Mgd2l0aCBpbnRlcm5hbCB0YWJsZXMgYXMgbmVlZGVkICovCistc3RhdGljIHZvaWQKKytzdGF0aWMgdW5zaWduZWQgaW50Cisgb3Blbl9jbGllbnQoaW50IGZkKSB7CisgCXBzZXVkb19jbGllbnRfdCAqbmV3X2NsaWVudHM7CisgCWludCBpOworQEAgLTM5MCw3ICs0MDQsNyBAQCBvcGVuX2NsaWVudChpbnQgZmQpIHsKKyAJCQkrK2FjdGl2ZV9jbGllbnRzOworIAkJCWlmIChpID4gaGlnaGVzdF9jbGllbnQpCisgCQkJCWhpZ2hlc3RfY2xpZW50ID0gaTsKKy0JCQlyZXR1cm47CisrCQkJcmV0dXJuIGk7CisgCQl9CisgCX0KKyAKK0BAIC00MTQsOSArNDI4LDExIEBAIG9wZW5fY2xpZW50KGludCBmZCkgeworIAorIAkJbWF4X2NsaWVudHMgKz0gMTY7CisgCQkrK2FjdGl2ZV9jbGllbnRzOworKwkJcmV0dXJuIG1heF9jbGllbnRzIC0gMTY7CisgCX0gZWxzZSB7CisgCQlwc2V1ZG9fZGlhZygiZXJyb3IgYWxsb2NhdGluZyBuZXcgY2xpZW50LCBmZCAlZFxuIiwgZmQpOworIAkJY2xvc2UoZmQpOworKwkJcmV0dXJuIDA7CisgCX0KKyB9CisgCitAQCAtNDMzLDYgKzQ0OSwxMCBAQCBjbG9zZV9jbGllbnQoaW50IGNsaWVudCkgeworIAkJCWNsaWVudCwgaGlnaGVzdF9jbGllbnQpOworIAkJcmV0dXJuOworIAl9CisrCWlmIChjbGllbnRzW2NsaWVudF0uZmQgPT0gLTEpIHsKKysJCXBzZXVkb19kZWJ1ZyhQREJHRl9TRVJWRVIsICJjbGllbnQgJWQgYWxyZWFkeSBjbG9zZWRcbiIsIGNsaWVudCk7CisrCQlyZXR1cm47CisrCX0KKyAJY2xvc2UoY2xpZW50c1tjbGllbnRdLmZkKTsKKyAJY2xpZW50c1tjbGllbnRdLmZkID0gLTE7CisgCWZyZWUoY2xpZW50c1tjbGllbnRdLnRhZyk7CitAQCAtNTY2LDYgKzU4NiwxNzEgQEAgc2VydmVfY2xpZW50KGludCBpKSB7CisgCX0KKyB9CisgCisrI2lmZGVmIFBTRVVET19QT1JUX0xJTlVYCisrc3RhdGljIHZvaWQgcHNldWRvX3NlcnZlcl9sb29wX2Vwb2xsKHZvaWQpCisreworKwlzdHJ1Y3Qgc29ja2FkZHJfdW4gY2xpZW50OworKwlzb2NrbGVuX3QgbGVuOworKyAgICAgICAgaW50IGk7CisrICAgICAgICBpbnQgcmM7CisrICAgICAgICBpbnQgZmQ7CisrCWludCB0aW1lb3V0OworKwlzdHJ1Y3QgZXBvbGxfZXZlbnQgZXYsIGV2ZW50c1tFUE9MTF9NQVhfRVZFTlRTXTsKKysJaW50IGxvb3BfdGltZW91dCA9IHBzZXVkb19zZXJ2ZXJfdGltZW91dDsKKysKKysJY2xpZW50cyA9IG1hbGxvYygxNiAqIHNpemVvZigqY2xpZW50cykpOworKworKwljbGllbnRzWzBdLmZkID0gbGlzdGVuX2ZkOworKwljbGllbnRzWzBdLnBpZCA9IGdldHBpZCgpOworKworKwlmb3IgKGkgPSAxOyBpIDwgMTY7ICsraSkgeworKwkJY2xpZW50c1tpXS5mZCA9IC0xOworKwkJY2xpZW50c1tpXS5waWQgPSAwOworKwkJY2xpZW50c1tpXS50YWcgPSBOVUxMOworKwkJY2xpZW50c1tpXS5wcm9ncmFtID0gTlVMTDsKKysJfQorKworKwlhY3RpdmVfY2xpZW50cyA9IDE7CisrCW1heF9jbGllbnRzID0gMTY7CisrCWhpZ2hlc3RfY2xpZW50ID0gMDsKKysKKysJcHNldWRvX2RlYnVnKFBEQkdGX1NFUlZFUiwgInNlcnZlciBsb29wIHN0YXJ0ZWQuXG4iKTsKKysJaWYgKGxpc3Rlbl9mZCA8IDApIHsKKysJCXBzZXVkb19kaWFnKCJnb3QgaW50byBsb29wIHdpdGggbm8gdmFsaWQgbGlzdGVuIGZkLlxuIik7CisrCQlleGl0KFBTRVVET19FWElUX0xJU1RFTl9GRCk7CisrCX0KKysKKysJdGltZW91dCA9IExPT1BfREVMQVkgKiAxMDAwOworKworKwlpbnQgZXBvbGxmZCA9IGVwb2xsX2NyZWF0ZTEoMCk7CisrCWlmIChlcG9sbGZkID09IC0xKSB7CisrCQlwc2V1ZG9fZGlhZygiZXBvbGxfY3JlYXRlMSgpIGZhaWxlZC5cbiIpOworKwkJZXhpdChQU0VVRE9fRVhJVF9FUE9MTF9DUkVBVEUpOworKwl9CisrCWV2LmV2ZW50cyA9IEVQT0xMSU47CisrCWV2LmRhdGEudTY0ID0gMDsKKysJaWYgKGVwb2xsX2N0bChlcG9sbGZkLCBFUE9MTF9DVExfQURELCBjbGllbnRzWzBdLmZkLCAmZXYpID09IC0xKSB7CisrCQlwc2V1ZG9fZGlhZygiZXBvbGxfY3RsKCkgZmFpbGVkIHdpdGggbGlzdGVuaW5nIHNvY2tldC5cbiIpOworKwkJZXhpdChQU0VVRE9fRVhJVF9FUE9MTF9DVEwpOworKwl9CisrCisrCXBkYl9sb2dfbXNnKFNFVkVSSVRZX0lORk8sIE5VTEwsIE5VTEwsIE5VTEwsICJzZXJ2ZXIgc3RhcnRlZCAocGlkICVkKSIsIGdldHBpZCgpKTsKKysKKysgICAgICAgIGZvciAoOzspIHsKKysJCXJjID0gZXBvbGxfd2FpdChlcG9sbGZkLCBldmVudHMsIEVQT0xMX01BWF9FVkVOVFMsIHRpbWVvdXQpOworKwkJaWYgKHJjID09IDAgfHwgKHJjID09IC0xICYmIGVycm5vID09IEVJTlRSKSkgeworKwkJCS8qIElmIHRoZXJlJ3Mgbm8gY2xpZW50cywgc3RhcnQgdGltaW5nIG91dC4gIElmIHRoZXJlCisrCQkJICogYXJlIGFjdGl2ZSBjbGllbnRzLCBuZXZlciB0aW1lIG91dC4KKysJCQkgKi8KKysJCQlpZiAoYWN0aXZlX2NsaWVudHMgPT0gMSkgeworKwkJCQlsb29wX3RpbWVvdXQgLT0gTE9PUF9ERUxBWTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1heWJlIGZsdXNoIGRhdGFiYXNlIHRvIGRpc2sgKi8KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBkYl9tYXliZV9iYWNrdXAoKTsKKysJCQkJaWYgKGxvb3BfdGltZW91dCA8PSAwKSB7CisrCQkJCQlwc2V1ZG9fZGVidWcoUERCR0ZfU0VSVkVSLCAibm8gbW9yZSBjbGllbnRzLCBnb3QgYm9yZWQuXG4iKTsKKysJCQkJCWRpZV9wZWFjZWZ1bGx5ID0gMTsKKysJCQkJfSBlbHNlIHsKKysJCQkJCS8qIGRpc3BsYXkgdGhpcyBpZiBub3QgZXhpdGluZyAqLworKwkJCQkJcHNldWRvX2RlYnVnKFBEQkdGX1NFUlZFUiB8IFBEQkdGX0JFTkNITUFSSywgIiVkIG1lc3NhZ2VzIGhhbmRsZWQgaW4gJS40ZiBzZWNvbmRzLCAlZCByZXNwb25zZXNcbiIsCisrCQkJCQkJbWVzc2FnZXMsCisrCQkJCQkJKGRvdWJsZSkgbWVzc2FnZV90aW1lLnR2X3NlYyArCisrCQkJCQkJKGRvdWJsZSkgbWVzc2FnZV90aW1lLnR2X3VzZWMgLyAxMDAwMDAwLjAsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VzKTsKKysJCQkJfQorKwkJCX0KKysJCX0gZWxzZSBpZiAocmMgPiAwKSB7CisrCQkJbG9vcF90aW1lb3V0ID0gcHNldWRvX3NlcnZlcl90aW1lb3V0OworKwkJCWZvciAoaSA9IDA7IGkgPCByYzsgKytpKSB7CisrCQkJCWlmIChjbGllbnRzW2V2ZW50c1tpXS5kYXRhLnU2NF0uZmQgPT0gbGlzdGVuX2ZkKSB7CisrCQkJCQlpZiAoIWRpZV9mb3JjZWZ1bGx5KSB7CisrCQkJCQkJbGVuID0gc2l6ZW9mKGNsaWVudCk7CisrCQkJCQkJaWYgKChmZCA9IGFjY2VwdChsaXN0ZW5fZmQsIChzdHJ1Y3Qgc29ja2FkZHIgKikgJmNsaWVudCwgJmxlbikpICE9IC0xKSB7CisrCQkJCQkJLyogRG9uJ3QgYWxsb3cgY2xpZW50cyB0byBlbmQgdXAgb24gZmQgMiwgYmVjYXVzZSBnbGliYydzCisrCQkJCQkJICogbWFsbG9jIGRlYnVnIHVzZXMgdGhhdCBmZCB1bmNvbmRpdGlvbmFsbHkuCisrCQkJCQkJICovCisrCQkJCQkJCWlmIChmZCA9PSAyKSB7CisrCQkJCQkJCQlpbnQgbmV3ZmQgPSBmY250bChmZCwgRl9EVVBGRCwgMyk7CisrCQkJCQkJCQljbG9zZShmZCk7CisrCQkJCQkJCQlmZCA9IG5ld2ZkOworKwkJCQkJCQl9CisrCQkJCQkJCXBzZXVkb19kZWJ1ZyhQREJHRl9TRVJWRVIsICJuZXcgY2xpZW50IGZkICVkXG4iLCBmZCk7CisrCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQSBuZXcgY2xpZW50IGltcGxpY2l0bHkgY2FuY2VscyBhbnkKKysJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBwcmV2aW91cyBzaHV0ZG93biByZXF1ZXN0LCBvciBhCisrCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogc2h1dGRvd24gZm9yIGxhY2sgb2YgY2xpZW50cy4KKysJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKysJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwc2V1ZG9fc2VydmVyX3RpbWVvdXQgPSBERUZBVUxUX1BTRVVET19TRVJWRVJfVElNRU9VVDsKKysJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWVfcGVhY2VmdWxseSA9IDA7CisrCisrCQkJCQkJCWV2LmV2ZW50cyA9IEVQT0xMSU47CisrCQkJCQkJCWV2LmRhdGEudTY0ID0gb3Blbl9jbGllbnQoZmQpOworKwkJCQkJCQlpZiAoZXYuZGF0YS51NjQgIT0gMCAmJiBlcG9sbF9jdGwoZXBvbGxmZCwgRVBPTExfQ1RMX0FERCwgY2xpZW50c1tldi5kYXRhLnU2NF0uZmQsICZldikgPT0gLTEpIHsKKysJCQkJCQkJCXBzZXVkb19kaWFnKCJlcG9sbF9jdGwoKSBmYWlsZWQgd2l0aCBhY2NlcHRlZCBzb2NrZXQuXG4iKTsKKysJCQkJCQkJCWV4aXQoUFNFVURPX0VYSVRfRVBPTExfQ1RMKTsKKysJCQkJCQkJfQorKwkJCQkJCX0gZWxzZSBpZiAoZXJybm8gPT0gRU1GSUxFKSB7CisrCQkJCQkJCXBzZXVkb19kZWJ1ZyhQREJHRl9TRVJWRVIsICJIaXQgbWF4IG9wZW4gZmlsZXMsIGRyb3BwaW5nIGEgY2xpZW50LlxuIik7CisrCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSW4gdGhlb3J5IHRoZXJlIGlzIGEgcG90ZW50aWFsIHJhY2UgaGVyZSB3aGVyZSBpZiB3ZSBjbG9zZSBhIGNsaWVudCwgCisrCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQgbWF5IGhhdmUgc2VudCB1cyBhIGZhc3RvcCBtZXNzYWdlIHdoaWNoIHdlIGRvbid0IGFjdCB1cG9uLgorKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHdlIGRvbid0IGNsb3NlIGEgZmlsZWhhbmRsZSB3ZSdsbCBsb29wIGluZGVmaW5pdGVseSB0aG91Z2h0LiAKKysJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPbmx5IGNsb3NlIG9uZSBwZXIgbG9vcCBpdGVyYXRpb24gaW4gdGhlIGludGVyZXN0cyBvZiBjYXV0aW9uICovCisrCQkJCSAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAxOyBqIDw9IGhpZ2hlc3RfY2xpZW50OyArK2opIHsKKysJCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2xpZW50c1tqXS5mZCAhPSAtMSkgeworKwkJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VfY2xpZW50KGopOworKwkJCQkJCQkJCWJyZWFrOworKwkJCQkJCQkJfQorKwkJCQkJCQl9CisrCQkJCQkJfQorKwkJCQkJfQorKwkJCQl9IGVsc2UgeworKwkJCQkJc3RydWN0IHRpbWV2YWwgdHYxLCB0djI7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCByYzsKKysJCQkJCWdldHRpbWVvZmRheSgmdHYxLCBOVUxMKTsKKysJCQkJCXJjID0gc2VydmVfY2xpZW50KGV2ZW50c1tpXS5kYXRhLnU2NCk7CisrCQkJCQlnZXR0aW1lb2ZkYXkoJnR2MiwgTlVMTCk7CisrCQkJCQkrK21lc3NhZ2VzOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmMgPT0gMCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArK3Jlc3BvbnNlczsKKysJCQkJCW1lc3NhZ2VfdGltZS50dl9zZWMgKz0gKHR2Mi50dl9zZWMgLSB0djEudHZfc2VjKTsKKysJCQkJCW1lc3NhZ2VfdGltZS50dl91c2VjICs9ICh0djIudHZfdXNlYyAtIHR2MS50dl91c2VjKTsKKysJCQkJCWlmIChtZXNzYWdlX3RpbWUudHZfdXNlYyA8IDApIHsKKysJCQkJCQltZXNzYWdlX3RpbWUudHZfdXNlYyArPSAxMDAwMDAwOworKwkJCQkJCS0tbWVzc2FnZV90aW1lLnR2X3NlYzsKKysJCQkJCX0gZWxzZSB3aGlsZSAobWVzc2FnZV90aW1lLnR2X3VzZWMgPiAxMDAwMDAwKSB7CisrCQkJCQkJbWVzc2FnZV90aW1lLnR2X3VzZWMgLT0gMTAwMDAwMDsKKysJCQkJCQkrK21lc3NhZ2VfdGltZS50dl9zZWM7CisrCQkJCQl9CisrCQkJCX0KKysJCQkJaWYgKGRpZV9mb3JjZWZ1bGx5KQorKwkJCQkJYnJlYWs7CisrCQkJfQorKwkJCXBzZXVkb19kZWJ1ZyhQREJHRl9TRVJWRVIsICJzZXJ2ZXIgbG9vcCBjb21wbGV0ZSBbJWQgY2xpZW50cyBsZWZ0XVxuIiwgYWN0aXZlX2NsaWVudHMpOworKwkJfSBlbHNlIHsKKysJCQlwc2V1ZG9fZGlhZygiZXBvbGxfd2FpdCBmYWlsZWQ6ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOworKwkJCWJyZWFrOworKwkJfQorKwkJaWYgKGRpZV9wZWFjZWZ1bGx5IHx8IGRpZV9mb3JjZWZ1bGx5KSB7CisrCQkJcHNldWRvX2RlYnVnKFBEQkdGX1NFUlZFUiwgInF1aXR0aW5nLlxuIik7CisrCQkJcHNldWRvX2RlYnVnKFBEQkdGX1NFUlZFUiB8IFBEQkdGX0JFTkNITUFSSywgInNlcnZlciAlZCBleGl0aW5nOiBoYW5kbGVkICVkIG1lc3NhZ2VzIGluICUuNGYgc2Vjb25kc1xuIiwKKysJCQkJZ2V0cGlkKCksIG1lc3NhZ2VzLAorKwkJCQkoZG91YmxlKSBtZXNzYWdlX3RpbWUudHZfc2VjICsKKysJCQkJKGRvdWJsZSkgbWVzc2FnZV90aW1lLnR2X3VzZWMgLyAxMDAwMDAwLjApOworKwkJCXBkYl9sb2dfbXNnKFNFVkVSSVRZX0lORk8sIE5VTEwsIE5VTEwsIE5VTEwsICJzZXJ2ZXIgJWQgZXhpdGluZzogaGFuZGxlZCAlZCBtZXNzYWdlcyBpbiAlLjRmIHNlY29uZHMiLAorKwkJCQlnZXRwaWQoKSwgbWVzc2FnZXMsCisrCQkJCShkb3VibGUpIG1lc3NhZ2VfdGltZS50dl9zZWMgKworKwkJCQkoZG91YmxlKSBtZXNzYWdlX3RpbWUudHZfdXNlYyAvIDEwMDAwMDAuMCk7CisrCQkJLyogYW5kIGF0IHRoaXMgcG9pbnQsIHdlJ2xsIHN0YXJ0IHJlZnVzaW5nIGNvbm5lY3Rpb25zICovCisrCQkJY2xvc2UoY2xpZW50c1swXS5mZCk7CisrCQkJLyogVGhpcyBpcyBhIGdvb2QgcGxhY2UgdG8gaW5zZXJ0IGEgZGVsYXkgZm9yCisrCQkJICogZGVidWdnaW5nIHJhY2UgY29uZGl0aW9ucyBkdXJpbmcgc3RhcnR1cC4gKi8KKysJCQkvKiB1c2xlZXAoMzAwMDAwKTsgKi8KKysJCQlleGl0KDApOworKwkJfQorKwl9CisrCisrfQorKworKyNlbmRpZgorKworIC8qIGdldCBjbGllbnRzLCBoYW5kbGUgbWVzc2FnZXMsIHNodXQgZG93bi4KKyAgKiBUaGlzIGRvZXNuJ3QgYWN0dWFsbHkgZG8gYW55IHdvcmssIGl0IGp1c3QgY2FsbHMgYSB0b24gb2YgdGhpbmdzIHdoaWNoCisgICogZG8gd29yay4KKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzL2Zhc3RvcHJlcGx5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvZmFzdG9wcmVwbHkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTA0YzJkMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzL2Zhc3RvcHJlcGx5LnBhdGNoCkBAIC0wLDAgKzEsNzYgQEAKK0Vuc3VyZSBGQVNUT1AgbWVzc2FnZXMgZ2V0IGFuIEFDSyByZXBseSBzbyB0aGF0IHRoZSBjbGllbnQgY2FuIGJlIHN1cmUgdGhlIHNlcnZlcgorcmVjaWV2ZWQgdGhlbS4gVGhpcyBtZWFucyBpZiBjb25uZWN0aW9ucyBhcmUgdGVybWluYXRlZCwgZGF0YSBpc24ndCBsb3N0LgorCitSUCAyMDE3LzkvMjIKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKKworSW5kZXg6IHBzZXVkby0xLjguMi9wc2V1ZG9fY2xpZW50LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBwc2V1ZG8tMS44LjIub3JpZy9wc2V1ZG9fY2xpZW50LmMKKysrKyBwc2V1ZG8tMS44LjIvcHNldWRvX2NsaWVudC5jCitAQCAtMTMzMSwyMSArMTMzMSwxOSBAQCBwc2V1ZG9fY2xpZW50X3JlcXVlc3QocHNldWRvX21zZ190ICptc2csCisgCQkgKiBpbmRpY2F0aW5nIGEgc3VjY2Vzc2Z1bCBzZW5kLgorIAkJICovCisgCQlwc2V1ZG9fZGVidWcoUERCR0ZfQ0xJRU5UIHwgUERCR0ZfVkVSQk9TRSwgInNlbnQhXG4iKTsKKy0JCWlmIChtc2ctPnR5cGUgIT0gUFNFVURPX01TR19GQVNUT1ApIHsKKy0JCQlyZXNwb25zZSA9IHBzZXVkb19tc2dfcmVjZWl2ZShjb25uZWN0X2ZkKTsKKy0JCQlpZiAoIXJlc3BvbnNlKSB7CistCQkJCXBzZXVkb19kZWJ1ZyhQREJHRl9DTElFTlQsICJleHBlY3RlZCByZXNwb25zZSBkaWQgbm90IG9jY3VyOyByZXRyeWluZ1xuIik7CisrCQlyZXNwb25zZSA9IHBzZXVkb19tc2dfcmVjZWl2ZShjb25uZWN0X2ZkKTsKKysJCWlmICghcmVzcG9uc2UpIHsKKysJCQlwc2V1ZG9fZGVidWcoUERCR0ZfQ0xJRU5ULCAiZXhwZWN0ZWQgcmVzcG9uc2UgZGlkIG5vdCBvY2N1cjsgcmV0cnlpbmdcbiIpOworKwkJfSBlbHNlIHsKKysJCQlpZiAocmVzcG9uc2UtPnR5cGUgIT0gUFNFVURPX01TR19BQ0spIHsKKysJCQkJcHNldWRvX2RlYnVnKFBEQkdGX0NMSUVOVCwgImdvdCBub24tYWNrIHJlc3BvbnNlICVkXG4iLCByZXNwb25zZS0+dHlwZSk7CisrCQkJCXJldHVybiAwOworKwkJCX0gZWxzZSBpZiAobXNnLT50eXBlICE9IFBTRVVET19NU0dfRkFTVE9QKSB7CisrCQkJCXBzZXVkb19kZWJ1ZyhQREJHRl9DTElFTlQgfCBQREJHRl9WRVJCT1NFLCAiZ290IHJlc3BvbnNlIHR5cGUgJWRcbiIsIHJlc3BvbnNlLT50eXBlKTsKKysJCQkJcmV0dXJuIHJlc3BvbnNlOworIAkJCX0gZWxzZSB7CistCQkJCWlmIChyZXNwb25zZS0+dHlwZSAhPSBQU0VVRE9fTVNHX0FDSykgeworLQkJCQkJcHNldWRvX2RlYnVnKFBEQkdGX0NMSUVOVCwgImdvdCBub24tYWNrIHJlc3BvbnNlICVkXG4iLCByZXNwb25zZS0+dHlwZSk7CistCQkJCQlyZXR1cm4gMDsKKy0JCQkJfSBlbHNlIHsKKy0JCQkJCXBzZXVkb19kZWJ1ZyhQREJHRl9DTElFTlQgfCBQREJHRl9WRVJCT1NFLCAiZ290IHJlc3BvbnNlIHR5cGUgJWRcbiIsIHJlc3BvbnNlLT50eXBlKTsKKy0JCQkJCXJldHVybiByZXNwb25zZTsKKy0JCQkJfQorKwkJCQlyZXR1cm4gMDsKKyAJCQl9CistCQl9IGVsc2UgeworLQkJCXJldHVybiAwOworIAkJfQorIAl9CisgCXBzZXVkb19kaWFnKCJwc2V1ZG86IHNlcnZlciBjb25uZWN0aW9uIHBlcnNpc3RlbnRseSBmYWlsZWQsIGFib3J0aW5nLlxuIik7CitJbmRleDogcHNldWRvLTEuOC4yL3BzZXVkb19zZXJ2ZXIuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHBzZXVkby0xLjguMi5vcmlnL3BzZXVkb19zZXJ2ZXIuYworKysrIHBzZXVkby0xLjguMi9wc2V1ZG9fc2VydmVyLmMKK0BAIC00NjMsNiArNDYzLDExIEBAIGNsb3NlX2NsaWVudChpbnQgY2xpZW50KSB7CisgCQkJLS1oaWdoZXN0X2NsaWVudDsKKyB9CisgCisrc3RhdGljIHBzZXVkb19tc2dfdCBzZXJ2ZXJfZmFzdG9wX3JlcGx5ID0geyAKKysgICAgICAgIC50eXBlID0gUFNFVURPX01TR19BQ0ssCisrICAgICAgICAub3AgPSBPUF9OT05FLAorK307CisrCisgLyogQWN0dWFsbHkgcHJvY2VzcyBhIHJlcXVlc3QuCisgICovCisgc3RhdGljIGludAorQEAgLTUxNSw4ICs1MjAsMTQgQEAgc2VydmVfY2xpZW50KGludCBpKSB7CisgCQkgKiBwc2V1ZG9fc2VydmVyX3Jlc3BvbnNlLgorIAkJICovCisgCQlpZiAoaW4tPnR5cGUgIT0gUFNFVURPX01TR19TSFVURE9XTikgeworLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbi0+dHlwZSA9PSBQU0VVRE9fTVNHX0ZBU1RPUCkKKysgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW4tPnR5cGUgPT0gUFNFVURPX01TR19GQVNUT1ApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRfcmVzcG9uc2UgPSAwOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRm9yIGZhc3RvcHMgd2UgcmVwbHkgbm93IHRvIHNheSB3ZSBnb3QgdGhlIGRhdGEgKi8KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgocmMgPSBwc2V1ZG9fbXNnX3NlbmQoY2xpZW50c1tpXS5mZCwgJnNlcnZlcl9mYXN0b3BfcmVwbHksIDAsIE5VTEwpKSAhPSAwKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwc2V1ZG9fZGVidWcoUERCR0ZfU0VSVkVSLCAiZmFpbGVkIHRvIHNlbmQgZmFzdG9wIGFjayB0byBjbGllbnQgJWQgWyVkXTogJWQgKCVzKVxuIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSwgKGludCkgY2xpZW50c1tpXS5waWQsIHJjLCBzdHJlcnJvcihlcnJubykpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAJCQkvKiBtb3N0IG1lc3NhZ2VzIGRvbid0IG5lZWQgdGhlc2UsIGJ1dCB4YXR0ciBtYXkgKi8KKyAJCQlyZXNwb25zZV9wYXRoID0gMDsKKyAJCQlyZXNwb25zZV9wYXRobGVuID0gLTE7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy90b29tYW55ZmlsZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy90b29tYW55ZmlsZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjA4NWE0NQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzL3Rvb21hbnlmaWxlcy5wYXRjaApAQCAtMCwwICsxLDU5IEBACitDdXJyZW50bHkgaWYgd2UgbWF4IG91dCB0aGUgbWF4aW11bSBudW1iZXIgb2YgZmlsZXMsIHBzZXVkbyBjYW4gZGVhZGxvY2ssIHVuYWJsZSB0bworYWNjZXB0IG5ldyBjb25uZWN0aW9ucyB5ZXQgdW5hYmxlIHRvIG1vdmUgZm9yd2FyZCBhbmQgdW5ibG9jayB0aGUgb3RoZXIgcHJvY2Vzc2VzCit3YWl0aW5nIGVpdGhlci4KKworUmF0aGVyIHRoYW4gaGFuZywgd2hlbiB0aGlzIGhhcHBlbnMsIGNsb3NlIG91dCBpbmFjdGl2ZSBjb25uZWN0aW9ucywgYWxsb3dpbmcgdXMKK3RvIGFjY2VwdCB0aGUgbmV3IG9uZXMuIFRoZSBkaXNjb25uZWN0ZWQgY2xpZW50cyB3aWxsIHNpbXBseSByZWNvbm5lY3QuIFRoZXJlIGlzCithIHNtYWxsIHJpc2sgb2YgZGF0YSBsb3NzIGhlcmUgc2FkbHkgYnV0IGl0cyBiZXR0ZXIgdGhhbiBoYW5naW5nLgorCitSUAorMjAxNy80LzI1CisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtQZXRlciBpcyBhd2FyZSBvZiB0aGUgaXNzdWVdCisKK0luZGV4OiBwc2V1ZG8tMS44LjIvcHNldWRvX3NlcnZlci5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gcHNldWRvLTEuOC4yLm9yaWcvcHNldWRvX3NlcnZlci5jCisrKysgcHNldWRvLTEuOC4yL3BzZXVkb19zZXJ2ZXIuYworQEAgLTU4MSw2ICs1ODEsNyBAQCBwc2V1ZG9fc2VydmVyX2xvb3Aodm9pZCkgeworIAlpbnQgcmM7CisgCWludCBmZDsKKyAJaW50IGxvb3BfdGltZW91dCA9IHBzZXVkb19zZXJ2ZXJfdGltZW91dDsKKysJaW50IGhpdG1heGZpbGVzOworIAorIAljbGllbnRzID0gbWFsbG9jKDE2ICogc2l6ZW9mKCpjbGllbnRzKSk7CisgCitAQCAtNTk3LDYgKzU5OCw3IEBAIHBzZXVkb19zZXJ2ZXJfbG9vcCh2b2lkKSB7CisgCWFjdGl2ZV9jbGllbnRzID0gMTsKKyAJbWF4X2NsaWVudHMgPSAxNjsKKyAJaGlnaGVzdF9jbGllbnQgPSAwOworKwloaXRtYXhmaWxlcyA9IDA7CisgCisgCXBzZXVkb19kZWJ1ZyhQREJHRl9TRVJWRVIsICJzZXJ2ZXIgbG9vcCBzdGFydGVkLlxuIik7CisgCWlmIChsaXN0ZW5fZmQgPCAwKSB7CitAQCAtNjYzLDEwICs2NjUsMTUgQEAgcHNldWRvX3NlcnZlcl9sb29wKHZvaWQpIHsKKyAJCQkJCQltZXNzYWdlX3RpbWUudHZfdXNlYyAtPSAxMDAwMDAwOworIAkJCQkJCSsrbWVzc2FnZV90aW1lLnR2X3NlYzsKKyAJCQkJCX0KKysJCQkJfSBlbHNlIGlmIChoaXRtYXhmaWxlcykgeworKwkJCQkJLyogT25seSBjbG9zZSBvbmUgcGVyIGxvb3AgaXRlcmF0aW9uIGluIHRoZSBpbnRlcmVzdHMgb2YgY2F1dGlvbiAqLworKwkJCQkJY2xvc2VfY2xpZW50KGkpOworKwkJCQkJaGl0bWF4ZmlsZXMgPSAwOworIAkJCQl9CisgCQkJCWlmIChkaWVfZm9yY2VmdWxseSkKKyAJCQkJCWJyZWFrOworIAkJCX0KKysJCQloaXRtYXhmaWxlcyA9IDA7CisgCQkJaWYgKCFkaWVfZm9yY2VmdWxseSAmJiAKKyAJCQkgICAgKEZEX0lTU0VUKGNsaWVudHNbMF0uZmQsICZldmVudHMpIHx8CisgCQkJICAgICBGRF9JU1NFVChjbGllbnRzWzBdLmZkLCAmcmVhZHMpKSkgeworQEAgLTY4OCw2ICs2OTgsOSBAQCBwc2V1ZG9fc2VydmVyX2xvb3Aodm9pZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHNldWRvX3NlcnZlcl90aW1lb3V0ID0gREVGQVVMVF9QU0VVRE9fU0VSVkVSX1RJTUVPVVQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZV9wZWFjZWZ1bGx5ID0gMDsKKysJCQkJfSBlbHNlIGlmIChlcnJubyA9PSBFTUZJTEUpIHsKKysJCQkJCWhpdG1heGZpbGVzID0gMTsKKysJCQkJCXBzZXVkb19kZWJ1ZyhQREJHRl9TRVJWRVIsICJIaXQgbWF4IG9wZW4gZmlsZXMsIGRyb3BwaW5nIGEgY2xpZW50LlxuIik7CisgCQkJCX0KKyAJCQl9CisgCQkJcHNldWRvX2RlYnVnKFBEQkdGX1NFUlZFUiwgInNlcnZlciBsb29wIGNvbXBsZXRlIFslZCBjbGllbnRzIGxlZnRdXG4iLCBhY3RpdmVfY2xpZW50cyk7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9wc2V1ZG9fMS44LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9wc2V1ZG9fMS44LjIuYmIKaW5kZXggYjQyN2I5YS4uNzNlZjU3MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vcHNldWRvXzEuOC4yLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL3BzZXVkb18xLjguMi5iYgpAQCAtNyw2ICs3LDkgQEAKICAgICAgICAgICAgZmlsZTovL21vcmVyZXRyaWVzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2VmZTBiZTI3OTkwMTAwNmY5MzljZDM1N2NjZWU0N2I2NTFjNzg2ZGEucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vYjZiNjhkYjg5NmY5OTYzNTU4MzM0YWZmN2ZjYTYxYWRkZTRlYzEwZi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9mYXN0b3ByZXBseS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly90b29tYW55ZmlsZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtZXBvbGwtQVBJLW9uLUxpbnV4LnBhdGNoIFwKICAgICAgICAgICAgIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiN2Q0MWU3MjE4OGZiZWExZjY5NmMzOTljMWE0MzU2NzUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy8wMDAxLUJVRy1maXgtaW5maW5pdGUtbG9vcC13aGVuLWNyZWF0aW5nLW5wLnBhZC1vbi1hbi1lbXAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy8wMDAxLUJVRy1maXgtaW5maW5pdGUtbG9vcC13aGVuLWNyZWF0aW5nLW5wLnBhZC1vbi1hbi1lbXAucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjllNTg1NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzLzAwMDEtQlVHLWZpeC1pbmZpbml0ZS1sb29wLXdoZW4tY3JlYXRpbmctbnAucGFkLW9uLWFuLWVtcC5wYXRjaApAQCAtMCwwICsxLDQ1IEBACitGcm9tIDQxNzBiOThlMGQ1ODY0ZWY0ZGIxYzU3MDRhNmU5NDI4YzNiZTlmYjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBJcnluYSBTaGNoZXJiaW5hIDxpc2hjaGVyYkByZWRoYXQuY29tPgorRGF0ZTogVGh1LCAyNCBBdWcgMjAxNyAxODowMTo0MyArMDIwMAorU3ViamVjdDogW1BBVENIXSBCVUc6IGZpeCBpbmZpbml0ZSBsb29wIHdoZW4gY3JlYXRpbmcgbnAucGFkIG9uIGFuIGVtcHR5IGFycmF5CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9udW1weS9udW1weS9wdWxsLzk1OTkvY29tbWl0cy82ZjllYTBhYmJkMzA1ZDUzZjkwMTdkZWJhYjNhM2E1OTFmZTBlMjQ5XQorQ1ZFOiBDVkUtMjAxNy0xMjg1MgorU2lnbmVkLW9mZi1ieTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KKy0tLQorIG51bXB5L2xpYi9hcnJheXBhZC5weSAgICAgICAgICAgIHwgMyArKysKKyBudW1weS9saWIvdGVzdHMvdGVzdF9hcnJheXBhZC5weSB8IDQgKysrKworIDIgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9udW1weS9saWIvYXJyYXlwYWQucHkgYi9udW1weS9saWIvYXJyYXlwYWQucHkKK2luZGV4IDJkYWQ5OWMuLjI5NGE2ODkgMTAwNjQ0CistLS0gYS9udW1weS9saWIvYXJyYXlwYWQucHkKKysrKyBiL251bXB5L2xpYi9hcnJheXBhZC5weQorQEAgLTE0MDYsNiArMTQwNiw5IEBAIGRlZiBwYWQoYXJyYXksIHBhZF93aWR0aCwgbW9kZSwgKiprd2FyZ3MpOgorICAgICAgICAgICAgIG5ld21hdCA9IF9hcHBlbmRfbWluKG5ld21hdCwgcGFkX2FmdGVyLCBjaHVua19hZnRlciwgYXhpcykKKyAKKyAgICAgZWxpZiBtb2RlID09ICdyZWZsZWN0JzoKKysgICAgICAgIGlmIG5hcnJheS5zaXplID09IDA6CisrICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiVGhlcmUgYXJlbid0IGFueSBlbGVtZW50cyB0byByZWZsZWN0IGluIGBhcnJheWAiKQorKworICAgICAgICAgZm9yIGF4aXMsIChwYWRfYmVmb3JlLCBwYWRfYWZ0ZXIpIGluIGVudW1lcmF0ZShwYWRfd2lkdGgpOgorICAgICAgICAgICAgICMgUmVjdXJzaXZlIHBhZGRpbmcgYWxvbmcgYW55IGF4aXMgd2hlcmUgYHBhZF9hbXRgIGlzIHRvbyBsYXJnZQorICAgICAgICAgICAgICMgZm9yIGluZGV4aW5nIHRyaWNrcy4gV2UgY2FuIG9ubHkgc2FmZWx5IHBhZCB0aGUgb3JpZ2luYWwgYXhpcworZGlmZiAtLWdpdCBhL251bXB5L2xpYi90ZXN0cy90ZXN0X2FycmF5cGFkLnB5IGIvbnVtcHkvbGliL3Rlc3RzL3Rlc3RfYXJyYXlwYWQucHkKK2luZGV4IDA1NmFhNDUuLjBmNzFkMzIgMTAwNjQ0CistLS0gYS9udW1weS9saWIvdGVzdHMvdGVzdF9hcnJheXBhZC5weQorKysrIGIvbnVtcHkvbGliL3Rlc3RzL3Rlc3RfYXJyYXlwYWQucHkKK0BAIC0xMDE0LDYgKzEwMTQsMTAgQEAgY2xhc3MgVmFsdWVFcnJvcjEoVGVzdENhc2UpOgorICAgICAgICAgYXNzZXJ0X3JhaXNlcyhWYWx1ZUVycm9yLCBwYWQsIGFyciwgKCgtMiwgMyksICgzLCAyKSksCisgICAgICAgICAgICAgICAgICAgICAgICoqa3dhcmdzKQorIAorKyAgICBkZWYgdGVzdF9jaGVja19lbXB0eV9hcnJheShzZWxmKToKKysgICAgICAgIGFzc2VydF9yYWlzZXMoVmFsdWVFcnJvciwgcGFkLCBbXSwgNCwgbW9kZT0ncmVmbGVjdCcpCisrICAgICAgICBhc3NlcnRfcmFpc2VzKFZhbHVlRXJyb3IsIHBhZCwgbnAubmRhcnJheSgwKSwgNCwgbW9kZT0ncmVmbGVjdCcpCisrCisgCisgY2xhc3MgVmFsdWVFcnJvcjIoVGVzdENhc2UpOgorICAgICBkZWYgdGVzdF9jaGVja19uZWdhdGl2ZV9wYWRfYW1vdW50KHNlbGYpOgorLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy8wMDAxLURvbi10LXNlYXJjaC11c3ItYW5kLXNvLW9uLWZvci1saWJyYXJpZXMtYnktZGVmYXVsdC0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy8wMDAxLURvbi10LXNlYXJjaC11c3ItYW5kLXNvLW9uLWZvci1saWJyYXJpZXMtYnktZGVmYXVsdC0ucGF0Y2gKaW5kZXggNWIxMzRlZC4uZmZkNmNlZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvMDAwMS1Eb24tdC1zZWFyY2gtdXNyLWFuZC1zby1vbi1mb3ItbGlicmFyaWVzLWJ5LWRlZmF1bHQtLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzLzAwMDEtRG9uLXQtc2VhcmNoLXVzci1hbmQtc28tb24tZm9yLWxpYnJhcmllcy1ieS1kZWZhdWx0LS5wYXRjaApAQCAtMTEsMTEgKzExLDExIEBACiAgbnVtcHkvZGlzdHV0aWxzL3N5c3RlbV9pbmZvLnB5IHwgNTAgKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNDQgZGVsZXRpb25zKC0pCiAKLWRpZmYgLS1naXQgYS9udW1weS9kaXN0dXRpbHMvc3lzdGVtX2luZm8ucHkgYi9udW1weS9kaXN0dXRpbHMvc3lzdGVtX2luZm8ucHkKLWluZGV4IDlkZDQ4ZTIuLjgwZTE5N2EgMTAwNjQ0Ci0tLS0gYS9udW1weS9kaXN0dXRpbHMvc3lzdGVtX2luZm8ucHkKLSsrKyBiL251bXB5L2Rpc3R1dGlscy9zeXN0ZW1faW5mby5weQotQEAgLTIwNCw1MSArMjA0LDEzIEBAIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorSW5kZXg6IG51bXB5LTEuMTMuMS9udW1weS9kaXN0dXRpbHMvc3lzdGVtX2luZm8ucHkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBudW1weS0xLjEzLjEub3JpZy9udW1weS9kaXN0dXRpbHMvc3lzdGVtX2luZm8ucHkKKysrKyBudW1weS0xLjEzLjEvbnVtcHkvZGlzdHV0aWxzL3N5c3RlbV9pbmZvLnB5CitAQCAtMjExLDUxICsyMTEsMTMgQEAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CiAgICAgIGRlZmF1bHRfeDExX2xpYl9kaXJzID0gW10KICAgICAgZGVmYXVsdF94MTFfaW5jbHVkZV9kaXJzID0gW10KICBlbHNlOgpAQCAtMjksNyArMjksMTAgQEAKIC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJy9vcHQvbG9jYWwvaW5jbHVkZScsICcvc3cvaW5jbHVkZScsCiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvdXNyL2luY2x1ZGUvc3VpdGVzcGFyc2UnXQogLSAgICBkZWZhdWx0X3NyY19kaXJzID0gWycuJywgJy91c3IvbG9jYWwvc3JjJywgJy9vcHQvc3JjJywgJy9zdy9zcmMnXQotLQorKyAgICBkZWZhdWx0X2xpYl9kaXJzID0gbGlicGF0aHMoWycvZGVhZGlyL2xpYiddLCBwbGF0Zm9ybV9iaXRzKQorKyAgICBkZWZhdWx0X2luY2x1ZGVfZGlycyA9IFsnL2RlYWRkaXIvaW5jbHVkZSddCisrICAgIGRlZmF1bHRfc3JjX2RpcnMgPSBbJy4nLCAnL2RlYWRkaXIvc3JjJ10KKyAKIC0gICAgZGVmYXVsdF94MTFfbGliX2RpcnMgPSBsaWJwYXRocyhbJy91c3IvWDExUjYvbGliJywgJy91c3IvWDExL2xpYicsCiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvdXNyL2xpYiddLCBwbGF0Zm9ybV9iaXRzKQogLSAgICBkZWZhdWx0X3gxMV9pbmNsdWRlX2RpcnMgPSBbJy91c3IvWDExUjYvaW5jbHVkZScsICcvdXNyL1gxMS9pbmNsdWRlJywKQEAgLTUwLDcgKzUzLDcgQEAKIC0gICAgICAgICMgdGVzdHMgYXJlIHJ1biBpbiBkZWJ1ZyBtb2RlIFB5dGhvbiAzLgogLSAgICAgICAgdG1wID0gb3Blbihvcy5kZXZudWxsLCAndycpCiAtICAgICAgICBwID0gc3AuUG9wZW4oWyJnY2MiLCAiLXByaW50LW11bHRpYXJjaCJdLCBzdGRvdXQ9c3AuUElQRSwKLS0gICAgICAgICAgICAgICAgc3RkZXJyPXRtcCkKKy0gICAgICAgICAgICAgICAgICAgICBzdGRlcnI9dG1wKQogLSAgICBleGNlcHQgKE9TRXJyb3IsIERpc3R1dGlsc0Vycm9yKToKIC0gICAgICAgICMgT1NFcnJvciBpZiBnY2MgaXMgbm90IGluc3RhbGxlZCwgb3IgU2FuZGJveFZpb2xhdGlvbiAoRGlzdHV0aWxzRXJyb3IKIC0gICAgICAgICMgc3ViY2xhc3MpIGlmIGFuIG9sZCBzZXR1cHRvb2xzIGJ1ZyBpcyB0cmlnZ2VyZWQgKHNlZSBnaC0zMTYwKS4KQEAgLTY0LDE1ICs2Nyw4IEBACiAtICAgIGZpbmFsbHk6CiAtICAgICAgICBpZiB0bXAgaXMgbm90IE5vbmU6CiAtICAgICAgICAgICAgdG1wLmNsb3NlKCkKLSsgICAgZGVmYXVsdF9saWJfZGlycyA9IGxpYnBhdGhzKFsnL2RlYWRpci9saWInXSwgcGxhdGZvcm1fYml0cykKLSsgICAgZGVmYXVsdF9pbmNsdWRlX2RpcnMgPSBbJy9kZWFkZGlyL2luY2x1ZGUnXQotKyAgICBkZWZhdWx0X3NyY19kaXJzID0gWycuJywgJy9kZWFkZGlyL3NyYyddCi0rCiArICAgIGRlZmF1bHRfeDExX2xpYl9kaXJzID0gbGlicGF0aHMoWycvZGVhZGRpci9saWInXSwgcGxhdGZvcm1fYml0cykKICsgICAgZGVmYXVsdF94MTFfaW5jbHVkZV9kaXJzID0gWycvZGVhZGRpci9pbmNsdWRlJ10KICAKICBpZiBvcy5wYXRoLmpvaW4oc3lzLnByZWZpeCwgJ2xpYicpIG5vdCBpbiBkZWZhdWx0X2xpYl9kaXJzOgogICAgICBkZWZhdWx0X2xpYl9kaXJzLmluc2VydCgwLCBvcy5wYXRoLmpvaW4oc3lzLnByZWZpeCwgJ2xpYicpKQotLS0gCi0yLjYuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy9kNzBkMzdiN2M0YWEyYWYzZmU4NzlhMGQ4NThjNTRmMmFhMzJhNzI1LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvZDcwZDM3YjdjNGFhMmFmM2ZlODc5YTBkODU4YzU0ZjJhYTMyYTcyNS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDhjYjA3OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy9kNzBkMzdiN2M0YWEyYWYzZmU4NzlhMGQ4NThjNTRmMmFhMzJhNzI1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotRnJvbSAxNTRiMmMxOWYzOTI4MTdhOTM2YWVhMDE5MGUyNzZmODIyOGNiNDg5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogIkVyaWsgTS4gQnJheSIgPGVyaWsuYnJheUBscmkuZnI+Ci1EYXRlOiBNb24sIDEyIERlYyAyMDE2IDEzOjA3OjE2ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEJVRzogeGxvY2FsZS5oIGlzIG5vdCBhdmFpbGFibGUgaW4gbmV3bGliLS1hbGwgdGhlIGRlZmluZXMKLSB1c2VkIGhlcmUgZnJvbSB4bG9jYWxlLmggYXJlIGluc3RlYWQgZm91bmQgaW4gbG9jYWxlLmgKLQotQWRkZWQgYSBmZWF0dXJlIGNoZWNrIGZvciB4bG9jYWxlLmgsIHdpdGggZmFsbGJhY2sgdG8gbG9jYWxlLmggaWYgaXQgaXMKLW1pc3NpbmcuCi0tLS0KLSBudW1weS9jb3JlL3NldHVwX2NvbW1vbi5weSAgICAgICAgICB8IDEgKwotIG51bXB5L2NvcmUvc3JjL211bHRpYXJyYXkvbnVtcHlvcy5jIHwgOCArKysrKysrLQotIDIgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVJQIDIwMTcvOS82Ci0KLWRpZmYgLS1naXQgYS9udW1weS9jb3JlL3NldHVwX2NvbW1vbi5weSBiL251bXB5L2NvcmUvc2V0dXBfY29tbW9uLnB5Ci1pbmRleCBiYTc1MjFlMzA0My4uYTE3MjllNjU2NTYgMTAwNjQ0Ci0tLS0gYS9udW1weS9jb3JlL3NldHVwX2NvbW1vbi5weQotKysrIGIvbnVtcHkvY29yZS9zZXR1cF9jb21tb24ucHkKLUBAIC0xMTMsNiArMTEzLDcgQEAgZGVmIGNoZWNrX2FwaV92ZXJzaW9uKGFwaXZlcnNpb24sIGNvZGVnZW5fZGlyKToKLSAgICAgICAgICAgICAgICAgInhtbWludHJpbi5oIiwgICMgU1NFCi0gICAgICAgICAgICAgICAgICJlbW1pbnRyaW4uaCIsICAjIFNTRTIKLSAgICAgICAgICAgICAgICAgImZlYXR1cmVzLmgiLCAgIyBmb3IgZ2xpYmMgdmVyc2lvbiBsaW51eAotKyAgICAgICAgICAgICAgICAieGxvY2FsZS5oIiAgIyBzZWUgR0gjODM2NwotIF0KLSAKLSAjIG9wdGlvbmFsIGdjYyBjb21waWxlciBidWlsdGlucyBhbmQgdGhlaXIgY2FsbCBhcmd1bWVudHMgYW5kIG9wdGlvbmFsIGEKLWRpZmYgLS1naXQgYS9udW1weS9jb3JlL3NyYy9tdWx0aWFycmF5L251bXB5b3MuYyBiL251bXB5L2NvcmUvc3JjL211bHRpYXJyYXkvbnVtcHlvcy5jCi1pbmRleCA0NTBlYzQwYjZlMC4uODQ2MTdlYTc4YzMgMTAwNjQ0Ci0tLS0gYS9udW1weS9jb3JlL3NyYy9tdWx0aWFycmF5L251bXB5b3MuYwotKysrIGIvbnVtcHkvY29yZS9zcmMvbXVsdGlhcnJheS9udW1weW9zLmMKLUBAIC0xNSw3ICsxNSwxMyBAQAotIAotICNpZmRlZiBIQVZFX1NUUlRPTERfTAotICNpbmNsdWRlIDxzdGRsaWIuaD4KLS0jaW5jbHVkZSA8eGxvY2FsZS5oPgotKyNpZmRlZiBIQVZFX1hMT0NBTEVfSAotKyAgICAvKgotKyAgICAgKiB0aGUgZGVmaW5lcyBmcm9tIHhsb2NhbGUuaCBhcmUgaW5jbHVkZWQgaW4gbG9jYWxlLmggb24gc29tZSBzeXRlbXM7Ci0rICAgICAqIHNlZSBnaC04MzY3Ci0rICAgICAqLwotKyAgICAjaW5jbHVkZSA8eGxvY2FsZS5oPgotKyNlbmRpZgotICNlbmRpZgotIAotIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uLW51bXB5XzEuMTEuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L3B5dGhvbi1udW1weV8xLjExLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0Yzk2ZDcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uLW51bXB5XzEuMTEuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExMyArMCwwIEBACi1TVU1NQVJZID0gIkEgc29waGlzdGljYXRlZCBOdW1lcmljIFByb2Nlc3NpbmcgUGFja2FnZSBmb3IgUHl0aG9uIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIlBTRiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT03ZTUxYTU2NzdiMjJiODY1YWJiZmIzZGZmNmZmYjJkMCIKLQotU1JDTkFNRSA9ICJudW1weSIKLQotU1JDX1VSSSA9ICJodHRwczovL2ZpbGVzLnB5dGhvbmhvc3RlZC5vcmcvcGFja2FnZXMvc291cmNlL24vJHtTUkNOQU1FfS8ke1NSQ05BTUV9LSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvbi10LXNlYXJjaC11c3ItYW5kLXNvLW9uLWZvci1saWJyYXJpZXMtYnktZGVmYXVsdC0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLWJ1aWxkLXBhdGgtaW4tY29tbWVudHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4X3NoZWJhbmdfZjJweS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kNzBkMzdiN2M0YWEyYWYzZmU4NzlhMGQ4NThjNTRmMmFhMzJhNzI1LnBhdGNoIFwKLSAgICAgICAgICAgJHtDT05GSUdGSUxFU1VSSX0gIgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL251bXB5L2ZpbGVzLyIKLQotQ09ORklHRklMRVNVUkkgPz0gIiIKLQotQ09ORklHRklMRVNVUklfYWFyY2g2NCA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX2FybSA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL251bXB5Y29uZmlnLmggXAotIgotQ09ORklHRklMRVNVUklfYXJtZWIgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX21pcHNhcmNobzMyZWwgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX3g4NiA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL251bXB5Y29uZmlnLmggXAotIgotQ09ORklHRklMRVNVUklfeDg2LTY0ID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAotIgotQ09ORklHRklMRVNVUklfbWlwc2FyY2hvMzJlYiA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX3Bvd2VycGMgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCi0iCi1DT05GSUdGSUxFU1VSSV9wb3dlcnBjNjQgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCi0iCi1DT05GSUdGSUxFU1VSSV9taXBzYXJjaG42NGViID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAotIgotQ09ORklHRklMRVNVUklfbWlwc2FyY2huNjRlbCA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX21pcHNhcmNobjMyZWIgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCi0iCi1DT05GSUdGSUxFU1VSSV9taXBzYXJjaG4zMmVsID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAotIgotCi1TID0gIiR7V09SS0RJUn0vbnVtcHktJHtQVn0iCi0KLWluaGVyaXQgc2V0dXB0b29scwotCi0jIE1ha2UgdGhlIGJ1aWxkIGZhaWwgYW5kIHJlcGxhY2UgKmNvbmZpZy5oIHdpdGggcHJvcGVyIG9uZQotIyBUaGlzIGlzIGEgdWdseSwgdWdseSBoYWNrIC0gS29lbgotZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLXRhcmdldCgpIHsKLSAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uLW5hdGl2ZS9weXRob24gc2V0dXAucHkgYnVpbGQgJHtESVNUVVRJTFNfQlVJTERfQVJHU30gfHwgXAotICAgIHRydWUKLSAgICBjcCAke1dPUktESVJ9Lypjb25maWcuaCAke1N9L2J1aWxkLyQobHMgJHtTfS9idWlsZCB8IGdyZXAgc3JjKS9udW1weS9jb3JlL2luY2x1ZGUvbnVtcHkvCi19Ci0KLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vbnVtcHkvY29yZS9saWIvKi5hIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMDNiZDc5MjdjMzE0YzQzNzgwMjcxYmYxYWI3OTVlYmMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDRkYjJmYmQ2NGUyZTdjNjhlNzQwYjE0NDAyYjI1YWY1MTQxOGZjNDNhNTlkOWU1NDE3MmIzOGI5MDZiMGY2OSIKLQotIyBpbnN0YWxsIHdoYXQgaXMgbmVlZGVkIGZvciBudW1weS50ZXN0KCkKLVJERVBFTkRTXyR7UE59ID0gInB5dGhvbi11bml0dGVzdCBcCi0gICAgICAgICAgICAgICAgICBweXRob24tZGlmZmxpYiBcCi0gICAgICAgICAgICAgICAgICBweXRob24tcHByaW50IFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1waWNrbGUgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLXNoZWxsIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1ub3NlIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1kb2N0ZXN0IFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1kYXRldGltZSBcCi0gICAgICAgICAgICAgICAgICBweXRob24tZGlzdHV0aWxzIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1taXNjIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1tbWFwIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1uZXRjbGllbnQgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLW51bWJlcnMgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLXB5ZG9jIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1wa2d1dGlsIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1lbWFpbCBcCi0gICAgICAgICAgICAgICAgICBweXRob24tc3VicHJvY2VzcyBcCi0gICAgICAgICAgICAgICAgICBweXRob24tY29tcHJlc3Npb24gXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLWN0eXBlcyBcCi0gICAgICAgICAgICAgICAgICBweXRob24tdGhyZWFkaW5nIFwKLSIKLQotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uLW51bXB5XzEuMTMuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L3B5dGhvbi1udW1weV8xLjEzLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTNlOGY0ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L3B5dGhvbi1udW1weV8xLjEzLjEuYmIKQEAgLTAsMCArMSwxMTQgQEAKK1NVTU1BUlkgPSAiQSBzb3BoaXN0aWNhdGVkIE51bWVyaWMgUHJvY2Vzc2luZyBQYWNrYWdlIGZvciBQeXRob24iCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTEwMDJiMDljZDY1NGZjYWEyZGNjODc1MzVhY2Q5YTk2IgorCitTUkNOQU1FID0gIm51bXB5IgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS8ke1NSQ05BTUV9LyR7U1JDTkFNRX0vcmVsZWFzZXMvZG93bmxvYWQvdiR7UFZ9LyR7U1JDTkFNRX0tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG9uLXQtc2VhcmNoLXVzci1hbmQtc28tb24tZm9yLWxpYnJhcmllcy1ieS1kZWZhdWx0LS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtYnVpbGQtcGF0aC1pbi1jb21tZW50cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXhfc2hlYmFuZ19mMnB5LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQlVHLWZpeC1pbmZpbml0ZS1sb29wLXdoZW4tY3JlYXRpbmctbnAucGFkLW9uLWFuLWVtcC5wYXRjaCBcCisgICAgICAgICAgICR7Q09ORklHRklMRVNVUkl9ICIKKworU1JDX1VSSVttZDVzdW1dID0gIjZkNDU5ZTRhMjRmNTAzNWY3MjBkZGEzYzU3NzE2YTkyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImRlMDIwZWMwNmYxZTljZTExMTVhNTAxNjFhMzhiZjhkNGMyNTI1Mzc5OTAwZjljYjQ3OGNjNjEzYTFlN2NkOTMiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbnVtcHkvbnVtcHkvcmVsZWFzZXMiCisKK0NPTkZJR0ZJTEVTVVJJID89ICIiCisKK0NPTkZJR0ZJTEVTVVJJX2FhcmNoNjQgPSAiIFwKKyAgICBmaWxlOi8vY29uZmlnLmggXAorICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCisiCitDT05GSUdGSUxFU1VSSV9hcm0gPSAiIFwKKyAgICBmaWxlOi8vY29uZmlnLmggXAorICAgIGZpbGU6Ly9udW1weWNvbmZpZy5oIFwKKyIKK0NPTkZJR0ZJTEVTVVJJX2FybWViID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vbnVtcHljb25maWcuaCBcCisiCitDT05GSUdGSUxFU1VSSV9taXBzYXJjaG8zMmVsID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vbnVtcHljb25maWcuaCBcCisiCitDT05GSUdGSUxFU1VSSV94ODYgPSAiIFwKKyAgICBmaWxlOi8vY29uZmlnLmggXAorICAgIGZpbGU6Ly9udW1weWNvbmZpZy5oIFwKKyIKK0NPTkZJR0ZJTEVTVVJJX3g4Ni02NCA9ICIgXAorICAgIGZpbGU6Ly9jb25maWcuaCBcCisgICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKKyIKK0NPTkZJR0ZJTEVTVVJJX21pcHNhcmNobzMyZWIgPSAiIFwKKyAgICBmaWxlOi8vY29uZmlnLmggXAorICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCisiCitDT05GSUdGSUxFU1VSSV9wb3dlcnBjID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAorIgorQ09ORklHRklMRVNVUklfcG93ZXJwYzY0ID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAorIgorQ09ORklHRklMRVNVUklfbWlwc2FyY2huNjRlYiA9ICIgXAorICAgIGZpbGU6Ly9jb25maWcuaCBcCisgICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKKyIKK0NPTkZJR0ZJTEVTVVJJX21pcHNhcmNobjY0ZWwgPSAiIFwKKyAgICBmaWxlOi8vY29uZmlnLmggXAorICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCisiCitDT05GSUdGSUxFU1VSSV9taXBzYXJjaG4zMmViID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAorIgorQ09ORklHRklMRVNVUklfbWlwc2FyY2huMzJlbCA9ICIgXAorICAgIGZpbGU6Ly9jb25maWcuaCBcCisgICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKKyIKKworUyA9ICIke1dPUktESVJ9L251bXB5LSR7UFZ9IgorCitpbmhlcml0IHNldHVwdG9vbHMKKworIyBNYWtlIHRoZSBidWlsZCBmYWlsIGFuZCByZXBsYWNlICpjb25maWcuaCB3aXRoIHByb3BlciBvbmUKKyMgVGhpcyBpcyBhIHVnbHksIHVnbHkgaGFjayAtIEtvZW4KK2RvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy10YXJnZXQoKSB7CisgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbi1uYXRpdmUvcHl0aG9uIHNldHVwLnB5IGJ1aWxkICR7RElTVFVUSUxTX0JVSUxEX0FSR1N9IHx8IFwKKyAgICB0cnVlCisgICAgY3AgJHtXT1JLRElSfS8qY29uZmlnLmggJHtTfS9idWlsZC8kKGxzICR7U30vYnVpbGQgfCBncmVwIHNyYykvbnVtcHkvY29yZS9pbmNsdWRlL251bXB5LworfQorCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L251bXB5L2NvcmUvbGliLyouYSIKKworIyBpbnN0YWxsIHdoYXQgaXMgbmVlZGVkIGZvciBudW1weS50ZXN0KCkKK1JERVBFTkRTXyR7UE59ID0gInB5dGhvbi11bml0dGVzdCBcCisgICAgICAgICAgICAgICAgICBweXRob24tZGlmZmxpYiBcCisgICAgICAgICAgICAgICAgICBweXRob24tcHByaW50IFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbi1waWNrbGUgXAorICAgICAgICAgICAgICAgICAgcHl0aG9uLXNoZWxsIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbi1ub3NlIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbi1kb2N0ZXN0IFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbi1kYXRldGltZSBcCisgICAgICAgICAgICAgICAgICBweXRob24tZGlzdHV0aWxzIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbi1taXNjIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbi1tbWFwIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbi1uZXRjbGllbnQgXAorICAgICAgICAgICAgICAgICAgcHl0aG9uLW51bWJlcnMgXAorICAgICAgICAgICAgICAgICAgcHl0aG9uLXB5ZG9jIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbi1wa2d1dGlsIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbi1lbWFpbCBcCisgICAgICAgICAgICAgICAgICBweXRob24tc3VicHJvY2VzcyBcCisgICAgICAgICAgICAgICAgICBweXRob24tY29tcHJlc3Npb24gXAorICAgICAgICAgICAgICAgICAgcHl0aG9uLWN0eXBlcyBcCisgICAgICAgICAgICAgICAgICBweXRob24tdGhyZWFkaW5nIFwKKyIKKworUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uMy1udW1weV8xLjExLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24zLW51bXB5XzEuMTEuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGY5NjY1Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24zLW51bXB5XzEuMTEuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExNCArMCwwIEBACi1TVU1NQVJZID0gIkEgc29waGlzdGljYXRlZCBOdW1lcmljIFByb2Nlc3NpbmcgUGFja2FnZSBmb3IgUHl0aG9uIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIlBTRiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT03ZTUxYTU2NzdiMjJiODY1YWJiZmIzZGZmNmZmYjJkMCIKLQotU1JDTkFNRSA9ICJudW1weSIKLQotU1JDX1VSSSA9ICJodHRwczovL2ZpbGVzLnB5dGhvbmhvc3RlZC5vcmcvcGFja2FnZXMvc291cmNlL24vJHtTUkNOQU1FfS8ke1NSQ05BTUV9LSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvbi10LXNlYXJjaC11c3ItYW5kLXNvLW9uLWZvci1saWJyYXJpZXMtYnktZGVmYXVsdC0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLWJ1aWxkLXBhdGgtaW4tY29tbWVudHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4X3NoZWJhbmdfZjJweS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kNzBkMzdiN2M0YWEyYWYzZmU4NzlhMGQ4NThjNTRmMmFhMzJhNzI1LnBhdGNoIFwKLSAgICAgICAgICAgJHtDT05GSUdGSUxFU1VSSX0gIgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL251bXB5L2ZpbGVzLyIKLQotQ09ORklHRklMRVNVUkkgPz0gIiIKLQotQ09ORklHRklMRVNVUklfYWFyY2g2NCA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX2FybSA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL251bXB5Y29uZmlnLmggXAotIgotQ09ORklHRklMRVNVUklfYXJtZWIgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX21pcHNhcmNobzMyZWwgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX3g4NiA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL251bXB5Y29uZmlnLmggXAotIgotQ09ORklHRklMRVNVUklfeDg2LTY0ID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAotIgotQ09ORklHRklMRVNVUklfbWlwc2FyY2hvMzJlYiA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX3Bvd2VycGMgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCi0iCi1DT05GSUdGSUxFU1VSSV9wb3dlcnBjNjQgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCi0iCi1DT05GSUdGSUxFU1VSSV9taXBzYXJjaG42NGViID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAotIgotQ09ORklHRklMRVNVUklfbWlwc2FyY2huNjRlbCA9ICIgXAotICAgIGZpbGU6Ly9jb25maWcuaCBcCi0gICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKLSIKLUNPTkZJR0ZJTEVTVVJJX21pcHNhcmNobjMyZWIgPSAiIFwKLSAgICBmaWxlOi8vY29uZmlnLmggXAotICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCi0iCi1DT05GSUdGSUxFU1VSSV9taXBzYXJjaG4zMmVsID0gIiBcCi0gICAgZmlsZTovL2NvbmZpZy5oIFwKLSAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAotIgotCi1TID0gIiR7V09SS0RJUn0vbnVtcHktJHtQVn0iCi0KLWluaGVyaXQgc2V0dXB0b29sczMKLQotIyBNYWtlIHRoZSBidWlsZCBmYWlsIGFuZCByZXBsYWNlICpjb25maWcuaCB3aXRoIHByb3BlciBvbmUKLSMgVGhpcyBpcyBhIHVnbHksIHVnbHkgaGFjayAtIEtvZW4KLWRvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy10YXJnZXQoKSB7Ci0gICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3B5dGhvbjMgc2V0dXAucHkgYnVpbGQgJHtESVNUVVRJTFNfQlVJTERfQVJHU30gfHwgXAotICAgIHRydWUKLSAgICBjcCAke1dPUktESVJ9Lypjb25maWcuaCAke1N9L2J1aWxkLyQobHMgJHtTfS9idWlsZCB8IGdyZXAgc3JjKS9udW1weS9jb3JlL2luY2x1ZGUvbnVtcHkvCi19Ci0KLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vbnVtcHkvY29yZS9saWIvKi5hIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMDNiZDc5MjdjMzE0YzQzNzgwMjcxYmYxYWI3OTVlYmMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDRkYjJmYmQ2NGUyZTdjNjhlNzQwYjE0NDAyYjI1YWY1MTQxOGZjNDNhNTlkOWU1NDE3MmIzOGI5MDZiMGY2OSIKLQotIyBpbnN0YWxsIHdoYXQgaXMgbmVlZGVkIGZvciBudW1weS50ZXN0KCkKLVJERVBFTkRTXyR7UE59ID0gInB5dGhvbjMtdW5pdHRlc3QgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uMy1kaWZmbGliIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbjMtcHByaW50IFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbjMtcGlja2xlIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbjMtc2hlbGwgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uMy1ub3NlIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbjMtZG9jdGVzdCBcCi0gICAgICAgICAgICAgICAgICBweXRob24zLWRhdGV0aW1lIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbjMtZGlzdHV0aWxzIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbjMtbWlzYyBcCi0gICAgICAgICAgICAgICAgICBweXRob24zLW1tYXAgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uMy1uZXRjbGllbnQgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uMy1udW1iZXJzIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbjMtcHlkb2MgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uMy1wa2d1dGlsIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbjMtZW1haWwgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uMy1zdWJwcm9jZXNzIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbjMtY29tcHJlc3Npb24gXAotICAgICAgICAgICAgICAgICAgcHl0aG9uMy1jdHlwZXMgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uMy10aHJlYWRpbmcgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uMy10ZXh0dXRpbHMgXAotIgotCi1SREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24zLW51bXB5XzEuMTMuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L3B5dGhvbjMtbnVtcHlfMS4xMy4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5ODc0YjgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24zLW51bXB5XzEuMTMuMS5iYgpAQCAtMCwwICsxLDExNCBAQAorU1VNTUFSWSA9ICJBIHNvcGhpc3RpY2F0ZWQgTnVtZXJpYyBQcm9jZXNzaW5nIFBhY2thZ2UgZm9yIFB5dGhvbiIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9MTAwMmIwOWNkNjU0ZmNhYTJkY2M4NzUzNWFjZDlhOTYiCisKK1NSQ05BTUUgPSAibnVtcHkiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLyR7U1JDTkFNRX0vJHtTUkNOQU1FfS9yZWxlYXNlcy9kb3dubG9hZC92JHtQVn0vJHtTUkNOQU1FfS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Eb24tdC1zZWFyY2gtdXNyLWFuZC1zby1vbi1mb3ItbGlicmFyaWVzLWJ5LWRlZmF1bHQtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3JlbW92ZS1idWlsZC1wYXRoLWluLWNvbW1lbnRzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeF9zaGViYW5nX2YycHkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1CVUctZml4LWluZmluaXRlLWxvb3Atd2hlbi1jcmVhdGluZy1ucC5wYWQtb24tYW4tZW1wLnBhdGNoIFwKKyAgICAgICAgICAgJHtDT05GSUdGSUxFU1VSSX0gIgorU1JDX1VSSVttZDVzdW1dID0gIjZkNDU5ZTRhMjRmNTAzNWY3MjBkZGEzYzU3NzE2YTkyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImRlMDIwZWMwNmYxZTljZTExMTVhNTAxNjFhMzhiZjhkNGMyNTI1Mzc5OTAwZjljYjQ3OGNjNjEzYTFlN2NkOTMiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbnVtcHkvbnVtcHkvcmVsZWFzZXMiCisKK0NPTkZJR0ZJTEVTVVJJID89ICIiCisKK0NPTkZJR0ZJTEVTVVJJX2FhcmNoNjQgPSAiIFwKKyAgICBmaWxlOi8vY29uZmlnLmggXAorICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCisiCitDT05GSUdGSUxFU1VSSV9hcm0gPSAiIFwKKyAgICBmaWxlOi8vY29uZmlnLmggXAorICAgIGZpbGU6Ly9udW1weWNvbmZpZy5oIFwKKyIKK0NPTkZJR0ZJTEVTVVJJX2FybWViID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vbnVtcHljb25maWcuaCBcCisiCitDT05GSUdGSUxFU1VSSV9taXBzYXJjaG8zMmVsID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vbnVtcHljb25maWcuaCBcCisiCitDT05GSUdGSUxFU1VSSV94ODYgPSAiIFwKKyAgICBmaWxlOi8vY29uZmlnLmggXAorICAgIGZpbGU6Ly9udW1weWNvbmZpZy5oIFwKKyIKK0NPTkZJR0ZJTEVTVVJJX3g4Ni02NCA9ICIgXAorICAgIGZpbGU6Ly9jb25maWcuaCBcCisgICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKKyIKK0NPTkZJR0ZJTEVTVVJJX21pcHNhcmNobzMyZWIgPSAiIFwKKyAgICBmaWxlOi8vY29uZmlnLmggXAorICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCisiCitDT05GSUdGSUxFU1VSSV9wb3dlcnBjID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAorIgorQ09ORklHRklMRVNVUklfcG93ZXJwYzY0ID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAorIgorQ09ORklHRklMRVNVUklfbWlwc2FyY2huNjRlYiA9ICIgXAorICAgIGZpbGU6Ly9jb25maWcuaCBcCisgICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKKyIKK0NPTkZJR0ZJTEVTVVJJX21pcHNhcmNobjY0ZWwgPSAiIFwKKyAgICBmaWxlOi8vY29uZmlnLmggXAorICAgIGZpbGU6Ly9fbnVtcHljb25maWcuaCBcCisiCitDT05GSUdGSUxFU1VSSV9taXBzYXJjaG4zMmViID0gIiBcCisgICAgZmlsZTovL2NvbmZpZy5oIFwKKyAgICBmaWxlOi8vX251bXB5Y29uZmlnLmggXAorIgorQ09ORklHRklMRVNVUklfbWlwc2FyY2huMzJlbCA9ICIgXAorICAgIGZpbGU6Ly9jb25maWcuaCBcCisgICAgZmlsZTovL19udW1weWNvbmZpZy5oIFwKKyIKKworUyA9ICIke1dPUktESVJ9L251bXB5LSR7UFZ9IgorCitpbmhlcml0IHNldHVwdG9vbHMzCisKKyMgTWFrZSB0aGUgYnVpbGQgZmFpbCBhbmQgcmVwbGFjZSAqY29uZmlnLmggd2l0aCBwcm9wZXIgb25lCisjIFRoaXMgaXMgYSB1Z2x5LCB1Z2x5IGhhY2sgLSBLb2VuCitkb19jb21waWxlX3ByZXBlbmRfY2xhc3MtdGFyZ2V0KCkgeworICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9weXRob24zIHNldHVwLnB5IGJ1aWxkICR7RElTVFVUSUxTX0JVSUxEX0FSR1N9IHx8IFwKKyAgICB0cnVlCisgICAgY3AgJHtXT1JLRElSfS8qY29uZmlnLmggJHtTfS9idWlsZC8kKGxzICR7U30vYnVpbGQgfCBncmVwIHNyYykvbnVtcHkvY29yZS9pbmNsdWRlL251bXB5LworfQorCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L251bXB5L2NvcmUvbGliLyouYSIKKworIyBpbnN0YWxsIHdoYXQgaXMgbmVlZGVkIGZvciBudW1weS50ZXN0KCkKK1JERVBFTkRTXyR7UE59ID0gInB5dGhvbjMtdW5pdHRlc3QgXAorICAgICAgICAgICAgICAgICAgcHl0aG9uMy1kaWZmbGliIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbjMtcHByaW50IFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbjMtcGlja2xlIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbjMtc2hlbGwgXAorICAgICAgICAgICAgICAgICAgcHl0aG9uMy1ub3NlIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbjMtZG9jdGVzdCBcCisgICAgICAgICAgICAgICAgICBweXRob24zLWRhdGV0aW1lIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbjMtZGlzdHV0aWxzIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbjMtbWlzYyBcCisgICAgICAgICAgICAgICAgICBweXRob24zLW1tYXAgXAorICAgICAgICAgICAgICAgICAgcHl0aG9uMy1uZXRjbGllbnQgXAorICAgICAgICAgICAgICAgICAgcHl0aG9uMy1udW1iZXJzIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbjMtcHlkb2MgXAorICAgICAgICAgICAgICAgICAgcHl0aG9uMy1wa2d1dGlsIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbjMtZW1haWwgXAorICAgICAgICAgICAgICAgICAgcHl0aG9uMy1zdWJwcm9jZXNzIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbjMtY29tcHJlc3Npb24gXAorICAgICAgICAgICAgICAgICAgcHl0aG9uMy1jdHlwZXMgXAorICAgICAgICAgICAgICAgICAgcHl0aG9uMy10aHJlYWRpbmcgXAorICAgICAgICAgICAgICAgICAgcHl0aG9uMy10ZXh0dXRpbHMgXAorIgorCitSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tMi43LW1hbmlmZXN0LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi0yLjctbWFuaWZlc3QuaW5jCmluZGV4IDdlZDI1NGIuLjU3ZDQ4MzQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi0yLjctbWFuaWZlc3QuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi0yLjctbWFuaWZlc3QuaW5jCkBAIC0yODEsNyArMjgxLDcgQEAKIEZJTEVTXyR7UE59LXpsaWI9IiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvemxpYi5zbyAiCiAKIFNVTU1BUllfJHtQTn0tbW9kdWxlcz0iQWxsIFB5dGhvbiBtb2R1bGVzIgotUkRFUEVORFNfJHtQTn0tbW9kdWxlcz0iJHtQTn0tMnRvMyAke1BOfS1hcmdwYXJzZSAke1BOfS1hdWRpbyAke1BOfS1ic2RkYiAke1BOfS1jb2RlY3MgJHtQTn0tY29tcGlsZSAke1BOfS1jb21waWxlciAke1BOfS1jb21wcmVzc2lvbiAke1BOfS1jb250ZXh0bGliICR7UE59LWNvcmUgJHtQTn0tY3J5cHQgJHtQTn0tY3R5cGVzICR7UE59LWN1cnNlcyAke1BOfS1kYXRldGltZSAke1BOfS1kYiAke1BOfS1kZWJ1Z2dlciAke1BOfS1kaWZmbGliICR7UE59LWRpc3R1dGlscyAke1BOfS1kb2N0ZXN0ICR7UE59LWVtYWlsICR7UE59LWZjbnRsICR7UE59LWdkYm0gJHtQTn0taG90c2hvdCAke1BOfS1odG1sICR7UE59LWlkbGUgJHtQTn0taW1hZ2UgJHtQTn0taW1wb3J0bGliICR7UE59LWlvICR7UE59LWpzb24gJHtQTn0tbGFuZyAke1BOfS1sb2dnaW5nICR7UE59LW1haWxib3ggJHtQTn0tbWF0aCAke1BOfS1taW1lICR7UE59LW1tYXAgJHtQTn0tbXVsdGlwcm9jZXNzaW5nICR7UE59LW5ldGNsaWVudCAke1BOfS1uZXRzZXJ2ZXIgJHtQTn0tbnVtYmVycyAke1BOfS1waWNrbGUgJHtQTn0tcGtndXRpbCAke1BOfS1wbGlzdGxpYiAke1BOfS1wcHJpbnQgJHtQTn0tcHJvZmlsZSAke1BOfS1weWRvYyAke1BOfS1yZSAke1BOfS1yZWFkbGluZSAke1BOfS1yZXNvdXJjZSAke1BOfS1yb2JvdHBhcnNlciAke1BOfS1zaGVsbCAke1BOfS1zbXRwZCAke1BOfS1zcWxpdGUzICR7UE59LXNxbGl0ZTMtdGVzdHMgJHtQTn0tc3RyaW5nb2xkICR7UE59LXN1YnByb2Nlc3MgJHtQTn0tc3lzbG9nICR7UE59LXRlcm1pbmFsICR7UE59LXRlc3RzICR7UE59LXRleHR1dGlscyAke1BOfS10aHJlYWRpbmcgJHtQTn0tdGtpbnRlciAke1BOfS11bml0dGVzdCAke1BOfS11bml4YWRtaW4gJHtQTn0teG1sICR7UE59LXhtbHJwYyAke1BOfS16bGliICAiCitSREVQRU5EU18ke1BOfS1tb2R1bGVzPSIke1BOfS0ydG8zICR7UE59LWFyZ3BhcnNlICR7UE59LWF1ZGlvICR7UE59LWJzZGRiICR7UE59LWNvZGVjcyAke1BOfS1jb21waWxlICR7UE59LWNvbXBpbGVyICR7UE59LWNvbXByZXNzaW9uICR7UE59LWNvbnRleHRsaWIgJHtQTn0tY29yZSAke1BOfS1jcnlwdCAke1BOfS1jdHlwZXMgJHtQTn0tY3Vyc2VzICR7UE59LWRhdGV0aW1lICR7UE59LWRiICR7UE59LWRlYnVnZ2VyICR7UE59LWRpZmZsaWIgJHtQTn0tZGlzdHV0aWxzICR7UE59LWRvY3Rlc3QgJHtQTn0tZW1haWwgJHtQTn0tZmNudGwgJHtQTn0tZ2RibSAke1BOfS1ob3RzaG90ICR7UE59LWh0bWwgJHtQTn0taWRsZSAke1BOfS1pbWFnZSAke1BOfS1pbXBvcnRsaWIgJHtQTn0taW8gJHtQTn0tanNvbiAke1BOfS1sYW5nICR7UE59LWxvZ2dpbmcgJHtQTn0tbWFpbGJveCAke1BOfS1tYXRoICR7UE59LW1pbWUgJHtQTn0tbW1hcCAke1BOfS1tdWx0aXByb2Nlc3NpbmcgJHtQTn0tbmV0Y2xpZW50ICR7UE59LW5ldHNlcnZlciAke1BOfS1udW1iZXJzICR7UE59LXBpY2tsZSAke1BOfS1wa2d1dGlsICR7UE59LXBsaXN0bGliICR7UE59LXBwcmludCAke1BOfS1wcm9maWxlICR7UE59LXB5ZG9jICR7UE59LXJlICR7UE59LXJlYWRsaW5lICR7UE59LXJlc291cmNlICR7UE59LXJvYm90cGFyc2VyICR7UE59LXNoZWxsICR7UE59LXNtdHBkICR7UE59LXNxbGl0ZTMgJHtQTn0tc3FsaXRlMy10ZXN0cyAke1BOfS1zdHJpbmdvbGQgJHtQTn0tc3VicHJvY2VzcyAke1BOfS1zeXNsb2cgJHtQTn0tdGVybWluYWwgJHtQTn0tdGV4dHV0aWxzICR7UE59LXRocmVhZGluZyAke1BOfS10a2ludGVyICR7UE59LXVuaXR0ZXN0ICR7UE59LXVuaXhhZG1pbiAke1BOfS14bWwgJHtQTn0teG1scnBjICR7UE59LXpsaWIgICIKIEFMTE9XX0VNUFRZXyR7UE59LW1vZHVsZXMgPSAiMSIKIAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tMy41LW1hbmlmZXN0LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi0zLjUtbWFuaWZlc3QuaW5jCmluZGV4IDFlMjBmMDAuLjAyNjBlODcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi0zLjUtbWFuaWZlc3QuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi0zLjUtbWFuaWZlc3QuaW5jCkBAIC0xLDYgKzEsNiBAQAogCiAjIFdBUk5JTkc6IFRoaXMgZmlsZSBpcyBBVVRPIEdFTkVSQVRFRDogTWFudWFsIGVkaXRzIHdpbGwgYmUgbG9zdCBuZXh0IHRpbWUgSSByZWdlbmVyYXRlIHRoZSBmaWxlLgotIyBHZW5lcmF0b3I6ICcuLi8uLi8uLi9zY3JpcHRzL2NvbnRyaWIvcHl0aG9uL2dlbmVyYXRlLW1hbmlmZXN0LTMuNS5weScgVmVyc2lvbiAyMDE0MDEzMSAoQykgMjAwMi0yMDEwIE1pY2hhZWwgJ01pY2tleScgTGF1ZXIgPG1sYXVlckB2YW5pbGxlLW1lZGlhLmRlPgorIyBHZW5lcmF0b3I6ICdzY3JpcHRzL2NvbnRyaWIvcHl0aG9uL2dlbmVyYXRlLW1hbmlmZXN0LTMuNS5weScgVmVyc2lvbiAyMDE0MDEzMSAoQykgMjAwMi0yMDEwIE1pY2hhZWwgJ01pY2tleScgTGF1ZXIgPG1sYXVlckB2YW5pbGxlLW1lZGlhLmRlPgogCiAgCiAKQEAgLTM0LDcgKzM0LDcgQEAKIAogU1VNTUFSWV8ke1BOfS1jb21wcmVzc2lvbj0iUHl0aG9uIGhpZ2gtbGV2ZWwgY29tcHJlc3Npb24gc3VwcG9ydCIKIFJERVBFTkRTXyR7UE59LWNvbXByZXNzaW9uPSIke1BOfS1jb3JlICR7UE59LWNvZGVjcyAke1BOfS1pbXBvcnRsaWIgJHtQTn0tdGhyZWFkaW5nICR7UE59LXNoZWxsIgotRklMRVNfJHtQTn0tY29tcHJlc3Npb249IiR7bGliZGlyfS9weXRob24zLjUvZ3ppcC4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vZ3ppcC4qICR7bGliZGlyfS9weXRob24zLjUvemlwZmlsZS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vemlwZmlsZS4qICR7bGliZGlyfS9weXRob24zLjUvdGFyZmlsZS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vdGFyZmlsZS4qICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvYnoyLiouc28gJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy9iejIuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL3psaWIuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL3psaWIuKi5zbyAiCitGSUxFU18ke1BOfS1jb21wcmVzc2lvbj0iJHtsaWJkaXJ9L3B5dGhvbjMuNS9nemlwLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9nemlwLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS96aXBmaWxlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy96aXBmaWxlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS90YXJmaWxlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy90YXJmaWxlLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9saWItZHlubG9hZC9iejIuKi5zbyAke2xpYmRpcn0vcHl0aG9uMy41L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL2J6Mi4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvemxpYi4qLnNvICR7bGliZGlyfS9weXRob24zLjUvbGliLWR5bmxvYWQvX19weWNhY2hlX18vemxpYi4qLnNvICR7bGliZGlyfS9weXRob24zLjUvYnoyLnB5ICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vYnoyLnB5ICR7bGliZGlyfS9weXRob24zLjUvbHptYS5weSAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL2x6bWEucHkgJHtsaWJkaXJ9L3B5dGhvbjMuNS9fY29tcHJlc3Npb24ucHkgJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9fY29tcHJlc3Npb24ucHkgIgogCiBTVU1NQVJZXyR7UE59LWNvcmU9IlB5dGhvbiBpbnRlcnByZXRlciBhbmQgY29yZSBtb2R1bGVzIgogUkRFUEVORFNfJHtQTn0tY29yZT0iJHtQTn0tbGFuZyAke1BOfS1yZSAke1BOfS1yZXBybGliICR7UE59LWNvZGVjcyAke1BOfS1pbyAke1BOfS1tYXRoIgpAQCAtNjYsNyArNjYsNyBAQAogCiBTVU1NQVJZXyR7UE59LWRldj0iUHl0aG9uIGRldmVsb3BtZW50IHBhY2thZ2UiCiBSREVQRU5EU18ke1BOfS1kZXY9IiR7UE59LWNvcmUiCi1GSUxFU18ke1BOfS1kZXY9IiR7aW5jbHVkZWRpcn0gJHtsaWJkaXJ9L2xpYioke1NPTElCU0RFVn0gJHtsaWJkaXJ9LyoubGEgJHtsaWJkaXJ9LyouYSAke2xpYmRpcn0vKi5vICR7bGliZGlyfS9wa2djb25maWcgJHtiYXNlX2xpYmRpcn0vKi5hICR7YmFzZV9saWJkaXJ9LyoubyAke2RhdGFkaXJ9L2FjbG9jYWwgJHtkYXRhZGlyfS9wa2djb25maWcgJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb25maWcvTWFrZWZpbGUgJHtsaWJkaXJ9L3B5dGhvbjMuNS9jb25maWcvTWFrZWZpbGUvX19weWNhY2hlX18gIgorRklMRVNfJHtQTn0tZGV2PSIke2luY2x1ZGVkaXJ9ICR7bGliZGlyfS9saWIqJHtTT0xJQlNERVZ9ICR7bGliZGlyfS8qLmxhICR7bGliZGlyfS8qLmEgJHtsaWJkaXJ9LyoubyAke2xpYmRpcn0vcGtnY29uZmlnICR7YmFzZV9saWJkaXJ9LyouYSAke2Jhc2VfbGliZGlyfS8qLm8gJHtkYXRhZGlyfS9hY2xvY2FsICR7ZGF0YWRpcn0vcGtnY29uZmlnICR7bGliZGlyfS9weXRob24zLjUvY29uZmlnKi9NYWtlZmlsZSAke2xpYmRpcn0vcHl0aG9uMy41L2NvbmZpZyovTWFrZWZpbGUvX19weWNhY2hlX18gIgogCiBTVU1NQVJZXyR7UE59LWRpZmZsaWI9IlB5dGhvbiBoZWxwZXJzIGZvciBjb21wdXRpbmcgZGVsdGFzIGJldHdlZW4gb2JqZWN0cyIKIFJERVBFTkRTXyR7UE59LWRpZmZsaWI9IiR7UE59LWxhbmcgJHtQTn0tcmUiCkBAIC0yNDEsNyArMjQxLDcgQEAKIEZJTEVTXyR7UE59LXRlcm1pbmFsPSIke2xpYmRpcn0vcHl0aG9uMy41L3B0eS4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vcHR5LiogJHtsaWJkaXJ9L3B5dGhvbjMuNS90dHkuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3R0eS4qICIKIAogU1VNTUFSWV8ke1BOfS10ZXN0cz0iUHl0aG9uIHRlc3RzIgotUkRFUEVORFNfJHtQTn0tdGVzdHM9IiR7UE59LWNvcmUiCitSREVQRU5EU18ke1BOfS10ZXN0cz0iJHtQTn0tY29yZSAke1BOfS1jb21wcmVzc2lvbiIKIEZJTEVTXyR7UE59LXRlc3RzPSIke2xpYmRpcn0vcHl0aG9uMy41L3Rlc3QgJHtsaWJkaXJ9L3B5dGhvbjMuNS90ZXN0L19fcHljYWNoZV9fICIKIAogU1VNTUFSWV8ke1BOfS10ZXh0dXRpbHM9IlB5dGhvbiBvcHRpb24gcGFyc2luZywgdGV4dCB3cmFwcGluZyBhbmQgQ1NWIHN1cHBvcnQiCkBAIC0yNzcsNyArMjc3LDcgQEAKIEZJTEVTXyR7UE59LXhtbHJwYz0iJHtsaWJkaXJ9L3B5dGhvbjMuNS94bWxycGNsaWIuKiAke2xpYmRpcn0vcHl0aG9uMy41L19fcHljYWNoZV9fL3htbHJwY2xpYi4qICR7bGliZGlyfS9weXRob24zLjUvU2ltcGxlWE1MUlBDU2VydmVyLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS9fX3B5Y2FjaGVfXy9TaW1wbGVYTUxSUENTZXJ2ZXIuKiAke2xpYmRpcn0vcHl0aG9uMy41L0RvY1hNTFJQQ1NlcnZlci4qICR7bGliZGlyfS9weXRob24zLjUvX19weWNhY2hlX18vRG9jWE1MUlBDU2VydmVyLiogJHtsaWJkaXJ9L3B5dGhvbjMuNS94bWxycGMgJHtsaWJkaXJ9L3B5dGhvbjMuNS94bWxycGMvX19weWNhY2hlX18gIgogCiBTVU1NQVJZXyR7UE59LW1vZHVsZXM9IkFsbCBQeXRob24gbW9kdWxlcyIKLVJERVBFTkRTXyR7UE59LW1vZHVsZXM9IiR7UE59LTJ0bzMgJHtQTn0tYXJncGFyc2UgJHtQTn0tYXN5bmNpbyAke1BOfS1hdWRpbyAke1BOfS1jb2RlY3MgJHtQTn0tY29tcGlsZSAke1BOfS1jb21wcmVzc2lvbiAke1BOfS1jb3JlICR7UE59LWNyeXB0ICR7UE59LWN0eXBlcyAke1BOfS1jdXJzZXMgJHtQTn0tZGF0ZXRpbWUgJHtQTn0tZGIgJHtQTn0tZGVidWdnZXIgJHtQTn0tZGlmZmxpYiAke1BOfS1kaXN0dXRpbHMgJHtQTn0tZG9jdGVzdCAke1BOfS1lbWFpbCAke1BOfS1lbnVtICR7UE59LWZjbnRsICR7UE59LWdkYm0gJHtQTn0taHRtbCAke1BOfS1pZGxlICR7UE59LWltYWdlICR7UE59LWltcG9ydGxpYiAke1BOfS1pbyAke1BOfS1qc29uICR7UE59LWxhbmcgJHtQTn0tbG9nZ2luZyAke1BOfS1tYWlsYm94ICR7UE59LW1hdGggJHtQTn0tbWltZSAke1BOfS1tbWFwICR7UE59LW11bHRpcHJvY2Vzc2luZyAke1BOfS1uZXRjbGllbnQgJHtQTn0tbmV0c2VydmVyICR7UE59LW51bWJlcnMgJHtQTn0tcGlja2xlICR7UE59LXBrZ3V0aWwgJHtQTn0tcHByaW50ICR7UE59LXByb2ZpbGUgJHtQTn0tcHlkb2MgJHtQTn0tcmUgJHtQTn0tcmVhZGxpbmUgJHtQTn0tcmVwcmxpYiAke1BOfS1yZXNvdXJjZSAke1BOfS1zZWxlY3RvcnMgJHtQTn0tc2hlbGwgJHtQTn0tc2lnbmFsICR7UE59LXNtdHBkICR7UE59LXNxbGl0ZTMgJHtQTn0tc3FsaXRlMy10ZXN0cyAke1BOfS1zdHJpbmdvbGQgJHtQTn0tc3VicHJvY2VzcyAke1BOfS1zeXNsb2cgJHtQTn0tdGVybWluYWwgJHtQTn0tdGVzdHMgJHtQTn0tdGV4dHV0aWxzICR7UE59LXRocmVhZGluZyAke1BOfS10a2ludGVyICR7UE59LXR5cGluZyAke1BOfS11bml0dGVzdCAke1BOfS11bml4YWRtaW4gJHtQTn0teG1sICR7UE59LXhtbHJwYyAgIgorUkRFUEVORFNfJHtQTn0tbW9kdWxlcz0iJHtQTn0tMnRvMyAke1BOfS1hcmdwYXJzZSAke1BOfS1hc3luY2lvICR7UE59LWF1ZGlvICR7UE59LWNvZGVjcyAke1BOfS1jb21waWxlICR7UE59LWNvbXByZXNzaW9uICR7UE59LWNvcmUgJHtQTn0tY3J5cHQgJHtQTn0tY3R5cGVzICR7UE59LWN1cnNlcyAke1BOfS1kYXRldGltZSAke1BOfS1kYiAke1BOfS1kZWJ1Z2dlciAke1BOfS1kaWZmbGliICR7UE59LWRpc3R1dGlscyAke1BOfS1kb2N0ZXN0ICR7UE59LWVtYWlsICR7UE59LWVudW0gJHtQTn0tZmNudGwgJHtQTn0tZ2RibSAke1BOfS1odG1sICR7UE59LWlkbGUgJHtQTn0taW1hZ2UgJHtQTn0taW1wb3J0bGliICR7UE59LWlvICR7UE59LWpzb24gJHtQTn0tbGFuZyAke1BOfS1sb2dnaW5nICR7UE59LW1haWxib3ggJHtQTn0tbWF0aCAke1BOfS1taW1lICR7UE59LW1tYXAgJHtQTn0tbXVsdGlwcm9jZXNzaW5nICR7UE59LW5ldGNsaWVudCAke1BOfS1uZXRzZXJ2ZXIgJHtQTn0tbnVtYmVycyAke1BOfS1waWNrbGUgJHtQTn0tcGtndXRpbCAke1BOfS1wcHJpbnQgJHtQTn0tcHJvZmlsZSAke1BOfS1weWRvYyAke1BOfS1yZSAke1BOfS1yZWFkbGluZSAke1BOfS1yZXBybGliICR7UE59LXJlc291cmNlICR7UE59LXNlbGVjdG9ycyAke1BOfS1zaGVsbCAke1BOfS1zaWduYWwgJHtQTn0tc210cGQgJHtQTn0tc3FsaXRlMyAke1BOfS1zcWxpdGUzLXRlc3RzICR7UE59LXN0cmluZ29sZCAke1BOfS1zdWJwcm9jZXNzICR7UE59LXN5c2xvZyAke1BOfS10ZXJtaW5hbCAke1BOfS10ZXh0dXRpbHMgJHtQTn0tdGhyZWFkaW5nICR7UE59LXRraW50ZXIgJHtQTn0tdHlwaW5nICR7UE59LXVuaXR0ZXN0ICR7UE59LXVuaXhhZG1pbiAke1BOfS14bWwgJHtQTn0teG1scnBjICAiCiBBTExPV19FTVBUWV8ke1BOfS1tb2R1bGVzID0gIjEiCiAKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFzeW5jXzAuNi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFzeW5jXzAuNi4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODU1ZTQyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hc3luY18wLjYuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotcmVxdWlyZSBweXRob24tYXN5bmMuaW5jCi0KLWluaGVyaXQgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSArPSAicHl0aG9uLXRocmVhZGluZyBweXRob24tbGFuZyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1naXQuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdpdC5pbmMKaW5kZXggZmVkZGYyNy4uNzc3NjA4YyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdpdC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdpdC5pbmMKQEAgLTEwLDggKzEwLDggQEAKIAogU1JDX1VSSSA9ICJodHRwczovL2ZpbGVzLnB5dGhvbmhvc3RlZC5vcmcvcGFja2FnZXMvc291cmNlL0cvR2l0UHl0aG9uL0dpdFB5dGhvbi0ke1BWfS50YXIuZ3oiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICI3N2Y4MzM5ZTY4ZGVkYjZkN2M0ZTI2MzcxYTU4OGVkOSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlOTZmOGU5NTNjZjlmZWUwYTc1OTlmYzU4NzY2NzU5MTMyODc2MGI2MzQxYTAwODFlZjMxMWE5NDJmYzk2MjA0IgorU1JDX1VSSVttZDVzdW1dID0gImRmOTQyMTJiMTlkMjcwYTYyNWI2N2I0Yzg0YWM5YTQxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVjMDBjYmQyNTZlMmIxZDAzOTM4MWQ0ZjdkNzFmY2I3ZWU1Y2MxOTZjYTEwYzEwMWZmNzE5MWJkODJhYjVkOWMiCiAKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL0dpdFB5dGhvbi8iCiBVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIvR2l0UHl0aG9uLyg/UDxwdmVyPihcZCtbXC5cLV9dKikrKSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1naXRfMi4xLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2l0XzIuMS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNDlkYmVhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1naXRfMi4xLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLWdpdC5pbmMKLQotREVQRU5EUyA9ICJweXRob24tZ2l0ZGIiCi0KLWluaGVyaXQgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSArPSAicHl0aG9uLWdpdGRiIHB5dGhvbi1sYW5nIHB5dGhvbi1pbyBweXRob24tc2hlbGwgcHl0aG9uLW1hdGggcHl0aG9uLXJlIHB5dGhvbi1zdWJwcm9jZXNzIHB5dGhvbi1zdHJpbmdvbGQgcHl0aG9uLXVuaXhhZG1pbiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1naXRkYl8wLjYuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1naXRkYl8wLjYuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTc3NzM5NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2l0ZGJfMC42LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLWdpdGRiLmluYwotCi1ERVBFTkRTID0gInB5dGhvbi1hc3luYyBweXRob24tc21tYXAiCi0KLWluaGVyaXQgZGlzdHV0aWxzCi0KLVJERVBFTkRTXyR7UE59ICs9ICJweXRob24tc21tYXAgcHl0aG9uLWFzeW5jIHB5dGhvbi1tbWFwIHB5dGhvbi1sYW5nIHB5dGhvbi16bGliIHB5dGhvbi1pbyBweXRob24tc2hlbGwiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbWFrby5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbWFrby5pbmMKaW5kZXggMTAzNjRkYi4uMWM4M2FmNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1ha28uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tYWtvLmluYwpAQCAtMSwxMiArMSwxMyBAQAogU1VNTUFSWSA9ICJUZW1wbGF0aW5nIGxpYnJhcnkgZm9yIFB5dGhvbiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubWFrb3RlbXBsYXRlcy5vcmcvIgogU0VDVElPTiA9ICJkZXZlbC9weXRob24iCiBMSUNFTlNFID0gIk1JVCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTFiYjIxZmEyZDJmN2E1MzRjODg0Yjk5MDQzMGE2ODYzIgogCiBTUkNfVVJJID0gImh0dHBzOi8vZmlsZXMucHl0aG9uaG9zdGVkLm9yZy9wYWNrYWdlcy9zb3VyY2UvTS9NYWtvL01ha28tJHtQVn0udGFyLmd6IgogCi1TUkNfVVJJW21kNXN1bV0gPSAiYTI4ZTIyYTMzOTA4MDMxNmIyYWNjMzUyYjllZTYzMWMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDg1NTllYmQ4NzJhOGU3N2Y5MjAwNTg4NGIzZDg4ZmZhZTU1MjgxMmNkZjE3ZGI2NzY4ZTVjM2JlNWViYmUwZCIKK1NSQ19VUklbbWQ1c3VtXSA9ICI1ODM2Y2M5OTdiMWI3NzNlZjM4OWJmNjYyOWMzMGU2NSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0ZTAyZmRlNTdiZDRhYmI1ZWM0MDAxODFlNGMzMTRmNTZhYzNlNDliYTRmYjhiMGQ1MGJiYTE4Y2IyN2QyNWFlIgogCiBVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9tYWtvLyIKIFVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIi9NYWtvLyg/UDxwdmVyPihcZCtbXC5cLV9dKikrKSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tYWtvXzEuMC42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1ha29fMS4wLjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIzMDA0NGUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1ha29fMS4wLjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi1tYWtvLmluYwotCi1pbmhlcml0IHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uLXRocmVhZGluZyBcCi0gICAgICAgICAgICAgICAgICBweXRob24tbmV0Y2xpZW50IFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1odG1sIFwKLSIKLVJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotIyBUaGUgc2FtZSB1dGlsaXR5IGlzIHBhY2thZ2VkIGluIHB5dGhvbjMtbWFrbywgc28gaXQgd291bGQgY29uZmxpY3QKLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIHJtIC1mICR7RH0ke2JpbmRpcn0vbWFrby1yZW5kZXIKLSAgICBybWRpciAke0R9JHtiaW5kaXJ9Ci19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlLTIuNy1tYW5pZmVzdC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlLTIuNy1tYW5pZmVzdC5pbmMKaW5kZXggNTgxYTM3YS4uYjA1YWFlMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZS0yLjctbWFuaWZlc3QuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUtMi43LW1hbmlmZXN0LmluYwpAQCAtMSwxMCArMSw5IEBACiAKICMgV0FSTklORzogVGhpcyBmaWxlIGlzIEFVVE8gR0VORVJBVEVEOiBNYW51YWwgZWRpdHMgd2lsbCBiZSBsb3N0IG5leHQgdGltZSBJIHJlZ2VuZXJhdGUgdGhlIGZpbGUuCi0jIEdlbmVyYXRvcjogJy4uLy4uLy4uL3NjcmlwdHMvY29udHJpYi9weXRob24vZ2VuZXJhdGUtbWFuaWZlc3QtMi43LnB5IC0tbmF0aXZlJyBWZXJzaW9uIDIwMTEwMjIyLjIgKEMpIDIwMDItMjAxMCBNaWNoYWVsICdNaWNrZXknIExhdWVyIDxtbGF1ZXJAdmFuaWxsZS1tZWRpYS5kZT4KKyMgR2VuZXJhdG9yOiAnLi4vc2NyaXB0cy9jb250cmliL3B5dGhvbi9nZW5lcmF0ZS1tYW5pZmVzdC0yLjcucHkgLS1uYXRpdmUnIFZlcnNpb24gMjAxMTAyMjIuMiAoQykgMjAwMi0yMDEwIE1pY2hhZWwgJ01pY2tleScgTGF1ZXIgPG1sYXVlckB2YW5pbGxlLW1lZGlhLmRlPgogCiAgCiAKLVJQUk9WSURFUys9InB5dGhvbi0ydG8zLW5hdGl2ZSBweXRob24tYXJncGFyc2UtbmF0aXZlIHB5dGhvbi1hdWRpby1uYXRpdmUgcHl0aG9uLWJzZGRiLW5hdGl2ZSBweXRob24tY29kZWNzLW5hdGl2ZSBweXRob24tY29tcGlsZS1uYXRpdmUgcHl0aG9uLWNvbXBpbGVyLW5hdGl2ZSBweXRob24tY29tcHJlc3Npb24tbmF0aXZlIHB5dGhvbi1jb250ZXh0bGliLW5hdGl2ZSBweXRob24tY29yZS1uYXRpdmUgcHl0aG9uLWNyeXB0LW5hdGl2ZSBweXRob24tY3R5cGVzLW5hdGl2ZSBweXRob24tY3Vyc2VzLW5hdGl2ZSBweXRob24tZGF0ZXRpbWUtbmF0aXZlIHB5dGhvbi1kYi1uYXRpdmUgcHl0aG9uLWRlYnVnZ2VyLW5hdGl2ZSBweXRob24tZGV2LW5hdGl2ZSBweXRob24tZGlmZmxpYi1uYXRpdmUgcHl0aG9uLWRpc3R1dGlscy1uYXRpdmUgcHl0aG9uLWRpc3R1dGlscy1zdGF0aWNkZXYtbmF0aXZlIHB5dGhvbi1kb2N0ZXN0LW5hdGl2ZSBweXRob24tZW1haWwtbmF0aXZlIHB5dGhvbi1mY250bC1uYXRpdmUgcHl0aG9uLWdkYm0tbmF0aXZlIHB5dGhvbi1ob3RzaG90LW5hdGl2ZSBweXRob24taHRtbC1uYXRpdmUgcHl0aG9uLWlkbGUtbmF0aXZlIHB5dGhvbi1pbWFnZS1uYXRpdmUgcHl0aG9uLWltcG9ydGxpYi1uYXRpdmUgcHl0aG9uLWlvLW5hdGl2ZSBweXRob24tanNvbi1uYXRpdmUgcHl0aG9uLWxhbmctbmF0aXZlIHB5dGhvbi1sb2dnaW5nLW5hdGl2ZSBweXRob24tbWFpbGJveC1uYXRpdmUgcHl0aG9uLW1hdGgtbmF0aXZlIHB5dGhvbi1taW1lLW5hdGl2ZSBweXRob24tbW1hcC1uYXRpdmUgcHl0aG9uLW11bHRpcHJvY2Vzc2luZy1uYXRpdmUgcHl0aG9uLW5ldGNsaWVudC1uYXRpdmUgcHl0aG9uLW5ldHNlcnZlci1uYXRpdmUgcHl0aG9uLW51bWJlcnMtbmF0aXZlIHB5dGhvbi1waWNrbGUtbmF0aXZlIHB5dGhvbi1wa2d1dGlsLW5hdGl2ZSBweXRob24tcGxpc3RsaWItbmF0aXZlIHB5dGhvbi1wcHJpbnQtbmF0aXZlIHB5dGhvbi1wcm9maWxlLW5hdGl2ZSBweXRob24tcHlkb2MtbmF0aXZlIHB5dGhvbi1yZS1uYXRpdmUgcHl0aG9uLXJlYWRsaW5lLW5hdGl2ZSBweXRob24tcmVzb3VyY2UtbmF0aXZlIHB5dGhvbi1yb2JvdHBhcnNlci1uYXRpdmUgcHl0aG9uLXNoZWxsLW5hdGl2ZSBweXRob24tc210cGQtbmF0aXZlIHB5dGhvbi1zcWxpdGUzLW5hdGl2ZSBweXRob24tc3FsaXRlMy10ZXN0cy1uYXRpdmUgcHl0aG9uLXN0cmluZ29sZC1uYXRpdmUgcHl0aG9uLXN1YnByb2Nlc3MtbmF0aXZlIHB5dGhvbi1zeXNsb2ctbmF0aXZlIHB5dGhvbi10ZXJtaW5hbC1uYXRpdmUgcHl0aG9uLXRlc3RzLW5hdGl2ZSBweXRob24tdGV4dHV0aWxzLW5hdGl2ZSBweXRob24tdGhyZWFkaW5nLW5hdGl2ZSBweXRob24tdGtpbnRlci1uYXRpdmUgcHl0aG9uLXVuaXR0ZXN0LW5hdGl2ZSBweXRob24tdW5peGFkbWluLW5hdGl2ZSBweXRob24teG1sLW5hdGl2ZSBweXRob24teG1scnBjLW5hdGl2ZSBweXRob24temxpYi1uYXRpdmUgIgotCitSUFJPVklERVMgKz0gInB5dGhvbi1tb2R1bGVzLW5hdGl2ZSBweXRob24tMnRvMy1uYXRpdmUgcHl0aG9uLWFyZ3BhcnNlLW5hdGl2ZSBweXRob24tYXVkaW8tbmF0aXZlIHB5dGhvbi1ic2RkYi1uYXRpdmUgcHl0aG9uLWNvZGVjcy1uYXRpdmUgcHl0aG9uLWNvbXBpbGUtbmF0aXZlIHB5dGhvbi1jb21waWxlci1uYXRpdmUgcHl0aG9uLWNvbXByZXNzaW9uLW5hdGl2ZSBweXRob24tY29udGV4dGxpYi1uYXRpdmUgcHl0aG9uLWNvcmUtbmF0aXZlIHB5dGhvbi1jcnlwdC1uYXRpdmUgcHl0aG9uLWN0eXBlcy1uYXRpdmUgcHl0aG9uLWN1cnNlcy1uYXRpdmUgcHl0aG9uLWRhdGV0aW1lLW5hdGl2ZSBweXRob24tZGItbmF0aXZlIHB5dGhvbi1kZWJ1Z2dlci1uYXRpdmUgcHl0aG9uLWRldi1uYXRpdmUgcHl0aG9uLWRpZmZsaWItbmF0aXZlIHB5dGhvbi1kaXN0dXRpbHMtbmF0aXZlIHB5dGhvbi1kaXN0dXRpbHMtc3RhdGljZGV2LW5hdGl2ZSBweXRob24tZG9jdGVzdC1uYXRpdmUgcHl0aG9uLWVtYWlsLW5hdGl2ZSBweXRob24tZmNudGwtbmF0aXZlIHB5dGhvbi1nZGJtLW5hdGl2ZSBweXRob24taG90c2hvdC1uYXRpdmUgcHl0aG9uLWh0bWwtbmF0aXZlIHB5dGhvbi1pZGxlLW5hdGl2ZSBweXRob24taW1hZ2UtbmF0aXZlIHB5dGhvbi1pbXBvcnRsaWItbmF0aXZlIHB5dGhvbi1pby1uYXRpdmUgcHl0aG9uLWpzb24tbmF0aXZlIHB5dGhvbi1sYW5nLW5hdGl2ZSBweXRob24tbG9nZ2luZy1uYXRpdmUgcHl0aG9uLW1haWxib3gtbmF0aXZlIHB5dGhvbi1tYXRoLW5hdGl2ZSBweXRob24tbWltZS1uYXRpdmUgcHl0aG9uLW1tYXAtbmF0aXZlIHB5dGhvbi1tdWx0aXByb2Nlc3NpbmctbmF0aXZlIHB5dGhvbi1uZXRjbGllbnQtbmF0aXZlIHB5dGhvbi1uZXRzZXJ2ZXItbmF0aXZlIHB5dGhvbi1udW1iZXJzLW5hdGl2ZSBweXRob24tcGlja2xlLW5hdGl2ZSBweXRob24tcGtndXRpbC1uYXRpdmUgcHl0aG9uLXBsaXN0bGliLW5hdGl2ZSBweXRob24tcHByaW50LW5hdGl2ZSBweXRob24tcHJvZmlsZS1uYXRpdmUgcHl0aG9uLXB5ZG9jLW5hdGl2ZSBweXRob24tcmUtbmF0aXZlIHB5dGhvbi1yZWFkbGluZS1uYXRpdmUgcHl0aG9uLXJlc291cmNlLW5hdGl2ZSBweXRob24tcm9ib3RwYXJzZXItbmF0aXZlIHB5dGhvbi1zaGVsbC1uYXRpdmUgcHl0aG9uLXNtdHBkLW5hdGl2ZSBweXRob24tc3FsaXRlMy1uYXRpdmUgcHl0aG9uLXNxbGl0ZTMtdGVzdHMtbmF0aXZlIHB5dGhvbi1zdHJpbmdvbGQtbmF0aXZlIHB5dGhvbi1zdWJwcm9jZXNzLW5hdGl2ZSBweXRob24tc3lzbG9nLW5hdGl2ZSBweXRob24tdGVybWluYWwtbmF0aXZlIHB5dGhvbi10ZXN0cy1uYXRpdmUgcHl0aG9uLXRleHR1dGlscy1uYXRpdmUgcHl0aG9uLXRocmVhZGluZy1uYXRpdmUgcHl0aG9uLXRraW50ZXItbmF0aXZlIHB5dGhvbi11bml0dGVzdC1uYXRpdmUgcHl0aG9uLXVuaXhhZG1pbi1uYXRpdmUgcHl0aG9uLXhtbC1uYXRpdmUgcHl0aG9uLXhtbHJwYy1uYXRpdmUgcHl0aG9uLXpsaWItbmF0aXZlIgogCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUtMy41LW1hbmlmZXN0LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUtMy41LW1hbmlmZXN0LmluYwppbmRleCAxMGJlM2U5Li5mMWY3MzJlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlLTMuNS1tYW5pZmVzdC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZS0zLjUtbWFuaWZlc3QuaW5jCkBAIC0xLDEwICsxLDEwIEBACiAKICMgV0FSTklORzogVGhpcyBmaWxlIGlzIEFVVE8gR0VORVJBVEVEOiBNYW51YWwgZWRpdHMgd2lsbCBiZSBsb3N0IG5leHQgdGltZSBJIHJlZ2VuZXJhdGUgdGhlIGZpbGUuCi0jIEdlbmVyYXRvcjogJy4uLy4uLy4uL3NjcmlwdHMvY29udHJpYi9weXRob24vZ2VuZXJhdGUtbWFuaWZlc3QtMy41LnB5IC0tbmF0aXZlJyBWZXJzaW9uIDIwMTQwMTMxIChDKSAyMDAyLTIwMTAgTWljaGFlbCAnTWlja2V5JyBMYXVlciA8bWxhdWVyQHZhbmlsbGUtbWVkaWEuZGU+CisjIEdlbmVyYXRvcjogJy4uL3NjcmlwdHMvY29udHJpYi9weXRob24vZ2VuZXJhdGUtbWFuaWZlc3QtMy41LnB5IC0tbmF0aXZlJyBWZXJzaW9uIDIwMTQwMTMxIChDKSAyMDAyLTIwMTAgTWljaGFlbCAnTWlja2V5JyBMYXVlciA8bWxhdWVyQHZhbmlsbGUtbWVkaWEuZGU+CiAKICAKIAotUlBST1ZJREVTKz0icHl0aG9uMy0ydG8zLW5hdGl2ZSBweXRob24zLWFyZ3BhcnNlLW5hdGl2ZSBweXRob24zLWFzeW5jaW8tbmF0aXZlIHB5dGhvbjMtYXVkaW8tbmF0aXZlIHB5dGhvbjMtY29kZWNzLW5hdGl2ZSBweXRob24zLWNvbXBpbGUtbmF0aXZlIHB5dGhvbjMtY29tcHJlc3Npb24tbmF0aXZlIHB5dGhvbjMtY29yZS1uYXRpdmUgcHl0aG9uMy1jcnlwdC1uYXRpdmUgcHl0aG9uMy1jdHlwZXMtbmF0aXZlIHB5dGhvbjMtY3Vyc2VzLW5hdGl2ZSBweXRob24zLWRhdGV0aW1lLW5hdGl2ZSBweXRob24zLWRiLW5hdGl2ZSBweXRob24zLWRlYnVnZ2VyLW5hdGl2ZSBweXRob24zLWRldi1uYXRpdmUgcHl0aG9uMy1kaWZmbGliLW5hdGl2ZSBweXRob24zLWRpc3R1dGlscy1uYXRpdmUgcHl0aG9uMy1kaXN0dXRpbHMtc3RhdGljZGV2LW5hdGl2ZSBweXRob24zLWRvY3Rlc3QtbmF0aXZlIHB5dGhvbjMtZW1haWwtbmF0aXZlIHB5dGhvbjMtZW51bS1uYXRpdmUgcHl0aG9uMy1mY250bC1uYXRpdmUgcHl0aG9uMy1nZGJtLW5hdGl2ZSBweXRob24zLWh0bWwtbmF0aXZlIHB5dGhvbjMtaWRsZS1uYXRpdmUgcHl0aG9uMy1pbWFnZS1uYXRpdmUgcHl0aG9uMy1pbXBvcnRsaWItbmF0aXZlIHB5dGhvbjMtaW8tbmF0aXZlIHB5dGhvbjMtanNvbi1uYXRpdmUgcHl0aG9uMy1sYW5nLW5hdGl2ZSBweXRob24zLWxvZ2dpbmctbmF0aXZlIHB5dGhvbjMtbWFpbGJveC1uYXRpdmUgcHl0aG9uMy1tYXRoLW5hdGl2ZSBweXRob24zLW1pbWUtbmF0aXZlIHB5dGhvbjMtbW1hcC1uYXRpdmUgcHl0aG9uMy1tdWx0aXByb2Nlc3NpbmctbmF0aXZlIHB5dGhvbjMtbmV0Y2xpZW50LW5hdGl2ZSBweXRob24zLW5ldHNlcnZlci1uYXRpdmUgcHl0aG9uMy1udW1iZXJzLW5hdGl2ZSBweXRob24zLXBpY2tsZS1uYXRpdmUgcHl0aG9uMy1wa2d1dGlsLW5hdGl2ZSBweXRob24zLXBwcmludC1uYXRpdmUgcHl0aG9uMy1wcm9maWxlLW5hdGl2ZSBweXRob24zLXB5ZG9jLW5hdGl2ZSBweXRob24zLXJlLW5hdGl2ZSBweXRob24zLXJlYWRsaW5lLW5hdGl2ZSBweXRob24zLXJlcHJsaWItbmF0aXZlIHB5dGhvbjMtcmVzb3VyY2UtbmF0aXZlIHB5dGhvbjMtc2VsZWN0b3JzLW5hdGl2ZSBweXRob24zLXNoZWxsLW5hdGl2ZSBweXRob24zLXNpZ25hbC1uYXRpdmUgcHl0aG9uMy1zbXRwZC1uYXRpdmUgcHl0aG9uMy1zcWxpdGUzLW5hdGl2ZSBweXRob24zLXNxbGl0ZTMtdGVzdHMtbmF0aXZlIHB5dGhvbjMtc3RyaW5nb2xkLW5hdGl2ZSBweXRob24zLXN1YnByb2Nlc3MtbmF0aXZlIHB5dGhvbjMtc3lzbG9nLW5hdGl2ZSBweXRob24zLXRlcm1pbmFsLW5hdGl2ZSBweXRob24zLXRlc3RzLW5hdGl2ZSBweXRob24zLXRleHR1dGlscy1uYXRpdmUgcHl0aG9uMy10aHJlYWRpbmctbmF0aXZlIHB5dGhvbjMtdGtpbnRlci1uYXRpdmUgcHl0aG9uMy10eXBpbmctbmF0aXZlIHB5dGhvbjMtdW5pdHRlc3QtbmF0aXZlIHB5dGhvbjMtdW5peGFkbWluLW5hdGl2ZSBweXRob24zLXhtbC1uYXRpdmUgcHl0aG9uMy14bWxycGMtbmF0aXZlICIKK1JQUk9WSURFUyArPSAicHl0aG9uMy1tb2R1bGVzLW5hdGl2ZSBweXRob24zLTJ0bzMtbmF0aXZlIHB5dGhvbjMtYXJncGFyc2UtbmF0aXZlIHB5dGhvbjMtYXN5bmNpby1uYXRpdmUgcHl0aG9uMy1hdWRpby1uYXRpdmUgcHl0aG9uMy1jb2RlY3MtbmF0aXZlIHB5dGhvbjMtY29tcGlsZS1uYXRpdmUgcHl0aG9uMy1jb21wcmVzc2lvbi1uYXRpdmUgcHl0aG9uMy1jb3JlLW5hdGl2ZSBweXRob24zLWNyeXB0LW5hdGl2ZSBweXRob24zLWN0eXBlcy1uYXRpdmUgcHl0aG9uMy1jdXJzZXMtbmF0aXZlIHB5dGhvbjMtZGF0ZXRpbWUtbmF0aXZlIHB5dGhvbjMtZGItbmF0aXZlIHB5dGhvbjMtZGVidWdnZXItbmF0aXZlIHB5dGhvbjMtZGV2LW5hdGl2ZSBweXRob24zLWRpZmZsaWItbmF0aXZlIHB5dGhvbjMtZGlzdHV0aWxzLW5hdGl2ZSBweXRob24zLWRpc3R1dGlscy1zdGF0aWNkZXYtbmF0aXZlIHB5dGhvbjMtZG9jdGVzdC1uYXRpdmUgcHl0aG9uMy1lbWFpbC1uYXRpdmUgcHl0aG9uMy1lbnVtLW5hdGl2ZSBweXRob24zLWZjbnRsLW5hdGl2ZSBweXRob24zLWdkYm0tbmF0aXZlIHB5dGhvbjMtaHRtbC1uYXRpdmUgcHl0aG9uMy1pZGxlLW5hdGl2ZSBweXRob24zLWltYWdlLW5hdGl2ZSBweXRob24zLWltcG9ydGxpYi1uYXRpdmUgcHl0aG9uMy1pby1uYXRpdmUgcHl0aG9uMy1qc29uLW5hdGl2ZSBweXRob24zLWxhbmctbmF0aXZlIHB5dGhvbjMtbG9nZ2luZy1uYXRpdmUgcHl0aG9uMy1tYWlsYm94LW5hdGl2ZSBweXRob24zLW1hdGgtbmF0aXZlIHB5dGhvbjMtbWltZS1uYXRpdmUgcHl0aG9uMy1tbWFwLW5hdGl2ZSBweXRob24zLW11bHRpcHJvY2Vzc2luZy1uYXRpdmUgcHl0aG9uMy1uZXRjbGllbnQtbmF0aXZlIHB5dGhvbjMtbmV0c2VydmVyLW5hdGl2ZSBweXRob24zLW51bWJlcnMtbmF0aXZlIHB5dGhvbjMtcGlja2xlLW5hdGl2ZSBweXRob24zLXBrZ3V0aWwtbmF0aXZlIHB5dGhvbjMtcHByaW50LW5hdGl2ZSBweXRob24zLXByb2ZpbGUtbmF0aXZlIHB5dGhvbjMtcHlkb2MtbmF0aXZlIHB5dGhvbjMtcmUtbmF0aXZlIHB5dGhvbjMtcmVhZGxpbmUtbmF0aXZlIHB5dGhvbjMtcmVwcmxpYi1uYXRpdmUgcHl0aG9uMy1yZXNvdXJjZS1uYXRpdmUgcHl0aG9uMy1zZWxlY3RvcnMtbmF0aXZlIHB5dGhvbjMtc2hlbGwtbmF0aXZlIHB5dGhvbjMtc2lnbmFsLW5hdGl2ZSBweXRob24zLXNtdHBkLW5hdGl2ZSBweXRob24zLXNxbGl0ZTMtbmF0aXZlIHB5dGhvbjMtc3FsaXRlMy10ZXN0cy1uYXRpdmUgcHl0aG9uMy1zdHJpbmdvbGQtbmF0aXZlIHB5dGhvbjMtc3VicHJvY2Vzcy1uYXRpdmUgcHl0aG9uMy1zeXNsb2ctbmF0aXZlIHB5dGhvbjMtdGVybWluYWwtbmF0aXZlIHB5dGhvbjMtdGVzdHMtbmF0aXZlIHB5dGhvbjMtdGV4dHV0aWxzLW5hdGl2ZSBweXRob24zLXRocmVhZGluZy1uYXRpdmUgcHl0aG9uMy10a2ludGVyLW5hdGl2ZSBweXRob24zLXR5cGluZy1uYXRpdmUgcHl0aG9uMy11bml0dGVzdC1uYXRpdmUgcHl0aG9uMy11bml4YWRtaW4tbmF0aXZlIHB5dGhvbjMteG1sLW5hdGl2ZSBweXRob24zLXhtbHJwYy1uYXRpdmUiCiAKIAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbm9zZV8xLjMuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ub3NlXzEuMy43LmJiCmluZGV4IDM3NTdmM2EuLjliMzUwOWMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ub3NlXzEuMy43LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ub3NlXzEuMy43LmJiCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJFeHRlbmRzIFB5dGhvbiB1bml0dGVzdCB0byBtYWtlIHRlc3RpbmcgZWFzaWVyIgorSE9NRVBBR0UgPSAiaHR0cDovL3JlYWR0aGVkb2NzLm9yZy9kb2NzL25vc2UvIgogREVTQ1JJUFRJT04gPSAibm9zZSBleHRlbmRzIHRoZSB0ZXN0IGxvYWRpbmcgYW5kIHJ1bm5pbmcgZmVhdHVyZXMgb2YgdW5pdHRlc3QsIFwKIG1ha2luZyBpdCBlYXNpZXIgdG8gd3JpdGUsIGZpbmQgYW5kIHJ1biB0ZXN0cy4iCiBTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wZXhwZWN0XzQuMi4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBleHBlY3RfNC4yLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzMjE3OTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBleHBlY3RfNC4yLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1TVU1NQVJZID0gIkEgUHVyZSBQeXRob24gRXhwZWN0IGxpa2UgTW9kdWxlIGZvciBQeXRob24iCi1IT01FUEFHRSA9ICJodHRwOi8vcGV4cGVjdC5yZWFkdGhlZG9jcy5vcmcvIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIklTQyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTFjN2E3MjUyNTE4ODBhZjhjNmExNDgxODE2NjUzODViIgotCi1TUkNOQU1FID0gInBleHBlY3QiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9maWxlcy5weXRob25ob3N0ZWQub3JnL3BhY2thZ2VzL3NvdXJjZS9wLyR7U1JDTkFNRX0vJHtTUkNOQU1FfS0ke1BWfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiMzY5NDQxMDAwMWE5OWRmZjgzZjBiNTAwYTFjYTFjOTUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2QxMzI0NjVhNzViNTdhYTgxODM0MWM2NTIxMzkyYTA2Y2M2NjBmZWIzOTg4ZDdmMTA3NGYzOWJkMjNjOWE5MiIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvcGV4cGVjdCIKLQotUyA9ICIke1dPUktESVJ9L3BleHBlY3QtJHtQVn0iCi0KLWluaGVyaXQgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSA9ICJcCi0gICAgcHl0aG9uLWNvcmUgXAotICAgIHB5dGhvbi1pbyBcCi0gICAgcHl0aG9uLXRlcm1pbmFsIFwKLSAgICBweXRob24tcmVzb3VyY2UgXAotICAgIHB5dGhvbi1mY250bCBcCi0gICAgcHl0aG9uLXB0eXByb2Nlc3MgXAotIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHR5cHJvY2Vzc18wLjUuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wdHlwcm9jZXNzXzAuNS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZWQyNGFkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wdHlwcm9jZXNzXzAuNS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotU1VNTUFSWSA9ICJSdW4gYSBzdWJwcm9jZXNzIGluIGEgcHNldWRvIHRlcm1pbmFsIgotSE9NRVBBR0UgPSAiaHR0cDovL3B0eXByb2Nlc3MucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0LyIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJJU0MiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jZmRjZDUxZmE3ZDU4MDhkYTRlNzQzNDZlZTM5NDQ5MCIKLQotU1JDTkFNRSA9ICJwdHlwcm9jZXNzIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZmlsZXMucHl0aG9uaG9zdGVkLm9yZy9wYWNrYWdlcy9zb3VyY2UvcC8ke1NSQ05BTUV9LyR7U1JDTkFNRX0tJHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gIjk0ZTUzNzEyMjkxNGNjOWVjOWMxZWFkY2QzNmU3M2ExIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA1MzBjZTYzYTkyOTViZmFlN2JkMDZlZGMwMmI2YWE5MzU2MTlmNDg2ZjBmMWRjMDk3MmY1MTYyNjVlZTgxYTYiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3B0eXByb2Nlc3MiCi0KLVMgPSAiJHtXT1JLRElSfS8ke1NSQ05BTUV9LSR7UFZ9IgotCi1pbmhlcml0IHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gPSAiXAotICAgIHB5dGhvbi1jb3JlIFwKLSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Y3VybC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHljdXJsLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDI2MzE4Yi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHljdXJsLmluYworKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVNVTU1BUlkgPSAiUHl0aG9uIGJpbmRpbmdzIGZvciBsaWJjdXJsIgotSE9NRVBBR0UgPSAiaHR0cDovL3B5Y3VybC5zb3VyY2Vmb3JnZS5uZXQvIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIkxHUEx2Mi4xKyB8IE1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRS5yc3Q7YmVnaW5saW5lPTE2NjtlbmRsaW5lPTE4MjttZDU9YTg0YTFjYWE2NWI4OWQ0NTg0YjY5M2QzNjgwMDYyZmIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy1MR1BMO21kNT0zNTc5YTlmZDAyMjFkNDlhMjM3YWFhMzM0OTJmOTg4YyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLU1JVDttZDU9YjdlNDM0YWViMjI4ZWQ3MzFjMDBiY2YxNzdlNzliMTkiCi0KLURFUEVORFMgPSAiY3VybCAke1BZVEhPTl9QTn0iCi1SREVQRU5EU18ke1BOfSA9ICIke1BZVEhPTl9QTn0tY29yZSBjdXJsIgotU1JDTkFNRSA9ICJweWN1cmwiCi0KLVNSQ19VUkkgPSAiXAotICBodHRwOi8vJHtTUkNOQU1FfS5zb3VyY2Vmb3JnZS5uZXQvZG93bmxvYWQvJHtTUkNOQU1FfS0ke1BWfS50YXIuZ3o7bmFtZT1hcmNoaXZlIFwKLSAgZmlsZTovL25vLXN0YXRpYy1saW5rLnBhdGNoIFwKLSIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiYmNhN2JmNDczMjAwODI1ODhkYjU0NGNlZDJiYTg3MTciCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI4YTFlMGViNTU1NzMzODgyNzVhMWQ2YzI1MzRjYTRjZmNhNWQ3ZmE3NzJiOTliNTA1YzA4ZmExNDliMjdhZWQwIgotUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0tJHtQVn0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi0jIEVuc3VyZSB0aGUgZG9jc3RyaW5ncyBhcmUgZ2VuZXJhdGVkIGFzIG1ha2UgY2xlYW4gd2lsbCByZW1vdmUgdGhlbQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotCSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BZVEhPTl9QTn0tbmF0aXZlLyR7UFlUSE9OX1BOfSBzZXR1cC5weSBkb2NzdHJpbmdzCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCXJtIC1yZiAke0R9JHtkYXRhZGlyfS9zaGFyZQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Y3VybC9uby1zdGF0aWMtbGluay5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWN1cmwvbm8tc3RhdGljLWxpbmsucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxMjc3OWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Y3VybC9uby1zdGF0aWMtbGluay5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBMYXVyZW50aXUgUGFsY3UgPGxhdXJlbnRpdS5wYWxjdUBpbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4KLS0tLQotZGlmZiAtTmF1ciBweWN1cmwtNy4xOS41LjItb3JpZy9zZXR1cC5weSBweWN1cmwtNy4xOS41LjIvc2V0dXAucHkKLS0tLSBweWN1cmwtNy4xOS41LjItb3JpZy9zZXR1cC5weQkyMDE1LTExLTAyIDE1OjQyOjI0LjAwMDAwMDAwMCArMDIwMAotKysrIHB5Y3VybC03LjE5LjUuMi9zZXR1cC5weQkyMDE1LTExLTAyIDE3OjU5OjM2LjEyMTUyNzI3MyArMDIwMAotQEAgLTE1NCw3ICsxNTQsNyBAQAotICAgICAgICAgb3B0YnVmID0gJycKLSAgICAgICAgIHNzbGhpbnRidWYgPSAnJwotICAgICAgICAgZXJydGV4dCA9ICcnCi0tICAgICAgICBmb3Igb3B0aW9uIGluIFsiLS1saWJzIiwgIi0tc3RhdGljLWxpYnMiXToKLSsgICAgICAgIGZvciBvcHRpb24gaW4gWyItLWxpYnMiXToKLSAgICAgICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbigoQ1VSTF9DT05GSUcsIG9wdGlvbiksCi0gICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCi0gICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwLmNvbW11bmljYXRlKCkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWN1cmxfNy4yMS41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Y3VybF83LjIxLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViNzBjZWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Y3VybF83LjIxLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLXB5Y3VybC5pbmMKLQotaW5oZXJpdCBkaXN0dXRpbHMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzLmluYwppbmRleCA0MGY0N2Q0Li5jYTUyMWE5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29scy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNldHVwdG9vbHMuaW5jCkBAIC0zLDE0ICszLDE0IEBACiBTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKIExJQ0VOU0UgPSAiTUlUIgogCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zZXR1cC5weTtiZWdpbmxpbmU9MTQ2O2VuZGxpbmU9MTQ2O21kNT0zZThkZjAyNGQ2YzE0NDJkMThlODRhY2Y4ZmJiYzQ3NSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7YmVnaW5saW5lPTE7ZW5kbGluZT0xOTttZDU9OWEzMzg5N2YxYmNhMTE2MGQ3YWFkMzgzNTE1MmUxNTgiCiAKIFNSQ05BTUUgPSAic2V0dXB0b29scyIKIAotU1JDX1VSSSA9ICJodHRwczovL2ZpbGVzLnB5dGhvbmhvc3RlZC5vcmcvcGFja2FnZXMvc291cmNlL3MvJHtTUkNOQU1FfS8ke1NSQ05BTUV9LSR7UFZ9LnRhci5neiIKK1NSQ19VUkkgPSAiaHR0cHM6Ly9maWxlcy5weXRob25ob3N0ZWQub3JnL3BhY2thZ2VzL3NvdXJjZS9zLyR7U1JDTkFNRX0vJHtTUkNOQU1FfS0ke1BWfS56aXAiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICI4YjY3ODY4YzM0MzBlOTc4ODMzZWJkMGQxYjc2NjY5NCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4MzAzZmIyNDMwNjM4NWYwOWJmOGIwZTVhMzg1YzE1NDhlNDJlOGVmYzA4NTU4ZDY0MDQ5YmMwZDU1ZWEwMTJkIgorU1JDX1VSSVttZDVzdW1dID0gImI5ZTZjMDQ5NjE3YmFjMGY5ZTkwOGE0MWFiNGEyOWFjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImIwZmU1ZDQzMmQ5MjJkZjU5NWU5MTg1NzdjNTE0NThkNjNmMjQ1MTE1ZDE0MWIzMDlhYzMyZWNmY2EzMjlkZjUiCiAKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3NldHVwdG9vbHMiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzXzMyLjEuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzXzMyLjEuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTI2NDc0Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29sc18zMi4xLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi1zZXR1cHRvb2xzLmluYwotCi1QUk9WSURFUyA9ICJweXRob24tZGlzdHJpYnV0ZSIKLQotREVQRU5EUyArPSAicHl0aG9uIgotREVQRU5EU19jbGFzcy1uYXRpdmUgKz0gInB5dGhvbi1uYXRpdmUiCi0KLWluaGVyaXQgZGlzdHV0aWxzCi0KLURJU1RVVElMU19JTlNUQUxMX0FSR1MgKz0gIi0taW5zdGFsbC1saWI9JHtEfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgotCi1SREVQRU5EU18ke1BOfSA9ICJcCi0gIHB5dGhvbi1zdHJpbmdvbGQgXAotICBweXRob24tZW1haWwgXAotICBweXRob24tc2hlbGwgXAotICBweXRob24tZGlzdHV0aWxzIFwKLSAgcHl0aG9uLWNvbXByZXNzaW9uIFwKLSAgcHl0aG9uLXBrZ3V0aWwgXAotICBweXRob24tcGxpc3RsaWIgXAotICBweXRob24tbnVtYmVycyBcCi0gIHB5dGhvbi1odG1sIFwKLSAgcHl0aG9uLW5ldHNlcnZlciBcCi0gIHB5dGhvbi1jdHlwZXMgXAotICBweXRob24tc3VicHJvY2VzcyBcCi0gIHB5dGhvbi11bml0dGVzdCBcCi0gIHB5dGhvbi1jb21waWxlIFwKLSIKLQotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIlwKLSAgcHl0aG9uLWRpc3R1dGlscyBcCi0gIHB5dGhvbi1jb21wcmVzc2lvbiBcCi0iCi0KLVJSRVBMQUNFU18ke1BOfSA9ICJweXRob24tZGlzdHJpYnV0ZSIKLVJQUk9WSURFU18ke1BOfSA9ICJweXRob24tZGlzdHJpYnV0ZSIKLVJDT05GTElDVFNfJHtQTn0gPSAicHl0aG9uLWRpc3RyaWJ1dGUiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzXzM2LjIuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzXzM2LjIuNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZWZhY2MxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNldHVwdG9vbHNfMzYuMi43LmJiCkBAIC0wLDAgKzEsMzYgQEAKK3JlcXVpcmUgcHl0aG9uLXNldHVwdG9vbHMuaW5jCisKK1BST1ZJREVTID0gInB5dGhvbi1kaXN0cmlidXRlIgorCitERVBFTkRTICs9ICJweXRob24iCitERVBFTkRTX2NsYXNzLW5hdGl2ZSArPSAicHl0aG9uLW5hdGl2ZSIKKworaW5oZXJpdCBzZXR1cHRvb2xzCisKK1JERVBFTkRTXyR7UE59ID0gIlwKKyAgcHl0aG9uLXN0cmluZ29sZCBcCisgIHB5dGhvbi1lbWFpbCBcCisgIHB5dGhvbi1zaGVsbCBcCisgIHB5dGhvbi1kaXN0dXRpbHMgXAorICBweXRob24tY29tcHJlc3Npb24gXAorICBweXRob24tcGtndXRpbCBcCisgIHB5dGhvbi1wbGlzdGxpYiBcCisgIHB5dGhvbi1udW1iZXJzIFwKKyAgcHl0aG9uLWh0bWwgXAorICBweXRob24tbmV0c2VydmVyIFwKKyAgcHl0aG9uLWN0eXBlcyBcCisgIHB5dGhvbi1zdWJwcm9jZXNzIFwKKyAgcHl0aG9uLXVuaXR0ZXN0IFwKKyAgcHl0aG9uLWNvbXBpbGUgXAorIgorCitSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiXAorICBweXRob24tZGlzdHV0aWxzIFwKKyAgcHl0aG9uLWNvbXByZXNzaW9uIFwKKyIKKworUlJFUExBQ0VTXyR7UE59ID0gInB5dGhvbi1kaXN0cmlidXRlIgorUlBST1ZJREVTXyR7UE59ID0gInB5dGhvbi1kaXN0cmlidXRlIgorUkNPTkZMSUNUU18ke1BOfSA9ICJweXRob24tZGlzdHJpYnV0ZSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNpeF8xLjEwLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2l4XzEuMTAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDM1MDQ4NS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2l4XzEuMTAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1zaXguaW5jCi0KLVJERVBFTkRTXyR7UE59ICs9ICJweXRob24taW8iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc21tYXBfMC45LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc21tYXBfMC45LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxMThkZDguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNtbWFwXzAuOS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi1zbW1hcC5pbmMKLQotaW5oZXJpdCBzZXR1cHRvb2xzCi0KLVJERVBFTkRTXyR7UE59ICs9ICJweXRob24tY29kZWNzIHB5dGhvbi1tbWFwIHB5dGhvbi1sYW5nIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL211bHRpbGliLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL211bHRpbGliLnBhdGNoCmluZGV4IDUwY2M1OTEuLmY1NTY4ZDIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9tdWx0aWxpYi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vbXVsdGlsaWIucGF0Y2gKQEAgLTEsNiArMSw2IEBACiBSZWJhc2VkIGZvciBweXRob24tMi43LjkKIFNpZ25lZC1vZmYtYnk6IEFsZWphbmRybyBIZXJuYW5kZXogPGFsZWphbmRyby5oZXJuYW5kZXpAbGludXguaW50ZWwuY29tPgotCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIEluZGV4OiBQeXRob24tMi43LjEzL2NvbmZpZ3VyZS5hYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIFB5dGhvbi0yLjcuMTMub3JpZy9jb25maWd1cmUuYWMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9wYXNzLW1pc3NpbmctbGlicmFyaWVzLXRvLUV4dGVuc2lvbi1mb3ItbXVsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3Bhc3MtbWlzc2luZy1saWJyYXJpZXMtdG8tRXh0ZW5zaW9uLWZvci1tdWwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDRmY2FhYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9wYXNzLW1pc3NpbmctbGlicmFyaWVzLXRvLUV4dGVuc2lvbi1mb3ItbXVsLnBhdGNoCkBAIC0wLDAgKzEsODIgQEAKK0Zyb20gNzE0NDdmMDQ5NzliMjY3Zjg4NjY1NzNiNjdhNDM0MGIyNzE5ZDc5OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IEZyaSwgNCBBdWcgMjAxNyAxNDoxMDo0MyArMDgwMAorU3ViamVjdDogW1BBVENIXSBzZXR1cC5weTogcGFzcyBtaXNzaW5nIGxpYnJhcmllcyB0byBFeHRlbnNpb24gZm9yIG11bHRpcHJvY2Vzc2luZyBtb2R1bGUKKworSW4gdGhlIGZvbGxvd2luZyBjb21taXQ6CisuLi4KK2NvbW1pdCBlNzExY2FmYWIxM2VmYzljMWZlNmM1Y2Q3NTgyNjQwMTQ0NWViNTg1CitBdXRob3I6IEJlbmphbWluIFBldGVyc29uIDxiZW5qYW1pbkBweXRob24ub3JnPgorRGF0ZTogICBXZWQgSnVuIDExIDE2OjQ0OjA0IDIwMDggKzAwMDAKKworICAgIE1lcmdlZCByZXZpc2lvbnMgNjQxMDQsNjQxMTcgdmlhIHN2bm1lcmdlIGZyb20KKyAgICBzdm4rc3NoOi8vcHl0aG9uZGV2QHN2bi5weXRob24ub3JnL3B5dGhvbi90cnVuaworLi4uCisoc2VlIGRpZmYgaW4gc2V0dXAucHkpCitJdCBhc3NpZ25lZCBsaWJyYXJpZXMgZm9yIG11bHRpcHJvY2Vzc2luZyBtb2R1bGUgYWNjb3JkaW5nCit0aGUgaG9zdF9wbGF0Zm9ybSwgYnV0IG5vdCBwYXNzIGl0IHRvIEV4dGVuc2lvbi4KKworSW4gZ2xpYmMsIHRoZSBmb2xsb3dpbmcgY29tbWl0IGNhdXNlZCB0d28gZGVmaW5pdGlvbiBvZgorc2VtX2dldHZhbHVlIGFyZSBkaWZmZXJlbnQuCitodHRwczovL3NvdXJjZXdhcmUub3JnL2dpdC8/cD1nbGliYy5naXQ7YT1jb21taXQ7aD0wNDJlMTUyMWM3OTRhOTQ1ZWRjNDNiNWJmYTdlNjlhZDcwNDIwNTI0Cisoc2VlIGRpZmYgaW4gbnB0bC9zZW1fZ2V0dmFsdWUuYyBmb3IgZGV0YWlsKQorYF9fbmV3X3NlbV9nZXR2YWx1ZScgaXMgdGhlIGxhdGVzdCBzZW1fZ2V0dmFsdWVAQEdMSUJDXzIuMQorYW5kIGBfX29sZF9zZW1fZ2V0dmFsdWUnIGlzIHRvIGNvbXBhdCB0aGUgb2xkIHZlcnNpb24KK3NlbV9nZXR2YWx1ZUBHTElCQ18yLjAuCisKK1RvIGJ1aWxkIHB5dGhvbiBmb3IgZW1iZWRkZWQgTGludXggc3lzdGVtczoKK2h0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzIuMy4xL3lvY3RvLXByb2plY3QtcXMveW9jdG8tcHJvamVjdC1xcy5odG1sCitJZiBub3QgZXhwbGljaXRseSBsaW5rIHRvIGxpYnJhcnkgcHRocmVhZCAoLWxwdGhyZWFkKSwgaXQgd2lsbAorbG9hZCBnbGliYydzIHNlbV9nZXR2YWx1ZSByYW5kb21seSBhdCBydW50aW1lLgorCitTdWNoIGFzIGJ1aWxkIHB5dGhvbiBvbiBsaW51eCB4ODZfNjQgaG9zdCBhbmQgcnVuIHRoZSBweXRob24KK29uIGxpbnV4IHg4Nl8zMiB0YXJnZXQuIElmIG5vdCBsaW5rIGxpYnJhcnkgcHRocmVhZCwgaXQgY2F1c2VkCittdWx0aXByb2Nlc3NpbmcgYm91bmRlZCBzZW1hcGhvcmUgY291bGQgbm90IHdvcmsgY29ycmVjdGx5LgorLi4uCis+Pj4gaW1wb3J0IG11bHRpcHJvY2Vzc2luZworPj4+IHBvb2xfc2VtYSA9IG11bHRpcHJvY2Vzc2luZy5Cb3VuZGVkU2VtYXBob3JlKHZhbHVlPTEpCis+Pj4gcG9vbF9zZW1hLmFjcXVpcmUoKQorVHJ1ZQorPj4+IHBvb2xfc2VtYS5yZWxlYXNlKCkKK1RyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KK1ZhbHVlRXJyb3I6IHNlbWFwaG9yZSBvciBsb2NrIHJlbGVhc2VkIHRvbyBtYW55IHRpbWVzCisuLi4KKworQW5kIHRoZSBzZW1hcGhvcmUgaXNzdWUgYWxzbyBjYXVzZWQgbXVsdGlwcm9jZXNzaW5nLlF1ZXVlKCkucHV0KCkgaHVuZy4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vY3B5dGhvbi9wdWxsLzI5OTldCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIHNldHVwLnB5IHwgNyArKysrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0dXAucHkKK2luZGV4IDU0MDU0YzIuLjk2NDZiZmMgMTAwNjQ0CistLS0gYS9zZXR1cC5weQorKysrIGIvc2V0dXAucHkKK0BAIC0xNTg2LDggKzE1ODYsMTAgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgorICAgICAgICAgZWxpZiBob3N0X3BsYXRmb3JtLnN0YXJ0c3dpdGgoJ25ldGJzZCcpOgorICAgICAgICAgICAgIG1hY3JvcyA9IGRpY3QoKQorICAgICAgICAgICAgIGxpYnJhcmllcyA9IFtdCistCistICAgICAgICBlbHNlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBMaW51eCBhbmQgb3RoZXIgdW5pY2VzCisrICAgICAgICBlbGlmIGhvc3RfcGxhdGZvcm0uc3RhcnRzd2l0aCgoJ2xpbnV4JykpOgorKyAgICAgICAgICAgIG1hY3JvcyA9IGRpY3QoKQorKyAgICAgICAgICAgIGxpYnJhcmllcyA9IFsncHRocmVhZCddCisrICAgICAgICBlbHNlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBPdGhlciB1bmljZXMKKyAgICAgICAgICAgICBtYWNyb3MgPSBkaWN0KCkKKyAgICAgICAgICAgICBsaWJyYXJpZXMgPSBbJ3J0J10KKyAKK0BAIC0xNjEwLDYgKzE2MTIsNyBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6CisgICAgICAgICBpZiBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1dJVEhfVEhSRUFEJyk6CisgICAgICAgICAgICAgZXh0cy5hcHBlbmQgKCBFeHRlbnNpb24oJ19tdWx0aXByb2Nlc3NpbmcnLCBtdWx0aXByb2Nlc3Npbmdfc3JjcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zPW1hY3Jvcy5pdGVtcygpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcz1saWJyYXJpZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZV9kaXJzPVsiTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nIl0pKQorICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICBtaXNzaW5nLmFwcGVuZCgnX211bHRpcHJvY2Vzc2luZycpCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9zdXBwb3J0X1NPVVJDRV9EQVRFX0VQT0NIX2luX3B5X2NvbXBpbGVfMi43LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3N1cHBvcnRfU09VUkNFX0RBVEVfRVBPQ0hfaW5fcHlfY29tcGlsZV8yLjcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTI2NTE3OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9zdXBwb3J0X1NPVVJDRV9EQVRFX0VQT0NIX2luX3B5X2NvbXBpbGVfMi43LnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKK1RoZSBjb21waWxlZCAucHljIGZpbGVzIGNvbnRhaW4gdGltZSBzdGFtcCBjb3JyZXNwb25kaW5nIHRvIHRoZSBjb21waWxlIHRpbWUuCitUaGlzIHByZXZlbnRzIGJpbmFyeSByZXByb2R1Y2liaWxpdHkuIFRoaXMgcGF0Y2ggYWxsb3dzIHRvIGFjaGlldmUgYmluYXJ5CityZXByb2R1Y2liaWxpdHkgYnkgb3ZlcnJpZGluZyB0aGUgYnVpbGQgdGltZSBzdGFtcCBieSB0aGUgdmFsdWUgCitleHBvcnRlZCB2aWEgU09VUkNFX0RBVEVfRVBPQ0guIAorCitQYXRjaCBieSBCZXJuaGFyZCBNLiBXaWVkZW1hbm4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitTaWduZWQtb2ZmLWJ5OiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgorCitGcmkgRmViIDI0IDE3OjA4OjI1IFVUQyAyMDE3IC0gYndpZWRlbWFubkBzdXNlLmNvbQorCistIEFkZCByZXByb2R1Y2libGUucGF0Y2ggdG8gYWxsb3cgcmVwcm9kdWNpYmxlIGJ1aWxkcyBvZiB2YXJpb3VzCisgIHB5dGhvbiBwYWNrYWdlcyBsaWtlIHB5dGhvbi1hbXFwCisgIFVwc3RyZWFtOiBodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL2NweXRob24vcHVsbC8yOTYKKworCitAQCAtMCwwICsxLDE1IEBACitJbmRleDogUHl0aG9uLTIuNy4xMy9MaWIvcHlfY29tcGlsZS5weQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIFB5dGhvbi0yLjcuMTMub3JpZy9MaWIvcHlfY29tcGlsZS5weQorKysrIFB5dGhvbi0yLjcuMTMvTGliL3B5X2NvbXBpbGUucHkKK0BAIC0xMDgsNiArMTA4LDEwIEBAIGRlZiBjb21waWxlKGZpbGUsIGNmaWxlPU5vbmUsIGRmaWxlPU5vbmUKKyAgICAgICAgICAgICB0aW1lc3RhbXAgPSBsb25nKG9zLmZzdGF0KGYuZmlsZW5vKCkpLnN0X210aW1lKQorICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgIHRpbWVzdGFtcCA9IGxvbmcob3Muc3RhdChmaWxlKS5zdF9tdGltZSkKKysgICAgICAgIHNkZSA9IG9zLmVudmlyb24uZ2V0KCdTT1VSQ0VfREFURV9FUE9DSCcpCisrICAgICAgICBpZiBzZGUgYW5kIHRpbWVzdGFtcCA+IGludChzZGUpOgorKyAgICAgICAgICAgIHRpbWVzdGFtcCA9IGludChzZGUpCisrICAgICAgICAgICAgb3MudXRpbWUoZmlsZSwgKHRpbWVzdGFtcCwgdGltZXN0YW1wKSkKKyAgICAgICAgIGNvZGVzdHJpbmcgPSBmLnJlYWQoKQorICAgICB0cnk6CisgICAgICAgICBjb2Rlb2JqZWN0ID0gX19idWlsdGluX18uY29tcGlsZShjb2Rlc3RyaW5nLCBkZmlsZSBvciBmaWxlLCdleGVjJykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi91c2Vfc3lzcm9vdF9uY3Vyc2VzX2luc3RlYWRfb2ZfaG9zdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi91c2Vfc3lzcm9vdF9uY3Vyc2VzX2luc3RlYWRfb2ZfaG9zdC5wYXRjaAppbmRleCAyYzY1Nzg2Li5mYjRhM2JjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vdXNlX3N5c3Jvb3RfbmN1cnNlc19pbnN0ZWFkX29mX2hvc3QucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3VzZV9zeXNyb290X25jdXJzZXNfaW5zdGVhZF9vZl9ob3N0LnBhdGNoCkBAIC0yLDYgKzIsNyBAQAogaWYgaXQgaXMgbm90IGZvdW5kIGNhdXNlcyBhbiBlcnJvciBvbiBjb25maWd1cmUsCiB3ZSBzaG91bGQgdXNlIG5jdXJzZXN3IGZyb20gc3lzcm9vdCBpbnN0ZWFkCiAKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCiBTaWduZWQtb2ZmLWJ5OiBBbGVqYW5kcm8gSGVybmFuZGV6IDxhbGVqYW5kcm8uaGVybmFuZGV6QGxpbnV4LmludGVsLmNvbT4KIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kb2N1dGlsc18wLjEzLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRvY3V0aWxzXzAuMTMuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTM2Mzg4Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRvY3V0aWxzXzAuMTMuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVNVTU1BUlkgPSAiVGV4dCBwcm9jZXNzaW5nIHN5c3RlbSBmb3IgZG9jdW1lbnRhdGlvbiIKLUhPTUVQQUdFID0gImh0dHA6Ly9kb2N1dGlscy5zb3VyY2Vmb3JnZS5uZXQiCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiUFNGICYgQlNELTItQ2xhdXNlICYgR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLnR4dDttZDU9N2E0NjQ2OTA3YWI5MDgzYzgyNjI4MGIxOWUxMDMxMDYiCi0KLURFUEVORFMgPSAicHl0aG9uMyIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vZG9jdXRpbHMvZG9jdXRpbHMtJHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gImVhNGE4OTNjNjMzYzc4OGJlOWI4MDc4YjZiMzA1ZDUzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjcxOGMwZjVmYjY3N2JlMGYzNGI3ODFlMDQyNDFjNDA2N2NiZDkzMjdiNjZiZGQ4ZTc2MzIwMTEzMGY1MTc1YmUiCi0KLVMgPSAiJHtXT1JLRElSfS9kb2N1dGlscy0ke1BWfSIKLQotaW5oZXJpdCBkaXN0dXRpbHMzCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRvY3V0aWxzXzAuMTQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRvY3V0aWxzXzAuMTQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODFhNDQ5ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZG9jdXRpbHNfMC4xNC5iYgpAQCAtMCwwICsxLDE4IEBACitTVU1NQVJZID0gIlRleHQgcHJvY2Vzc2luZyBzeXN0ZW0gZm9yIGRvY3VtZW50YXRpb24iCitIT01FUEFHRSA9ICJodHRwOi8vZG9jdXRpbHMuc291cmNlZm9yZ2UubmV0IgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIlBTRiAmIEJTRC0yLUNsYXVzZSAmIEdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy50eHQ7bWQ1PTM1YTIzZDQyYjYxNTQ3MDU4MzU2MzEzMjg3MmM5N2Q2IgorCitERVBFTkRTID0gInB5dGhvbjMiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2RvY3V0aWxzL2RvY3V0aWxzLSR7UFZ9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJjNTM3NjhkNjNkYjM4NzNiN2Q0NTI4MzM1NTM0NjlkZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1MWU2NGVmMmViZmIyOWNhZTFmYWExMzNiMzcxMDE0MzQ5NmVjYTIxYzUzMGYzZjcxNDI0ZDc3Njg3NzY0Mjc0IgorCitTID0gIiR7V09SS0RJUn0vZG9jdXRpbHMtJHtQVn0iCisKK2luaGVyaXQgZGlzdHV0aWxzMworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1naXRfMi4xLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdpdF8yLjEuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2EyZDQ1Mi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdpdF8yLjEuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotcmVxdWlyZSBweXRob24tZ2l0LmluYwotCi1ERVBFTkRTID0gInB5dGhvbjMtZ2l0ZGIiCi0KLWluaGVyaXQgc2V0dXB0b29sczMKLQotUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbjMtZ2l0ZGIgcHl0aG9uMy1sYW5nIHB5dGhvbjMtaW8gcHl0aG9uMy1zaGVsbCBweXRob24zLW1hdGggcHl0aG9uMy1yZSBweXRob24zLXN1YnByb2Nlc3MgcHl0aG9uMy1zdHJpbmdvbGQgcHl0aG9uMy11bml4YWRtaW4gcHl0aG9uMy1lbnVtIHB5dGhvbjMtbG9nZ2luZyBweXRob24zLWRhdGV0aW1lIHB5dGhvbjMtbmV0Y2xpZW50IHB5dGhvbjMtdW5pdHRlc3QgcHl0aG9uMy1hcmdwYXJzZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ2l0XzIuMS41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1naXRfMi4xLjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGFjMmEwZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ2l0XzIuMS41LmJiCkBAIC0wLDAgKzEsNyBAQAorcmVxdWlyZSBweXRob24tZ2l0LmluYworCitERVBFTkRTID0gInB5dGhvbjMtZ2l0ZGIiCisKK2luaGVyaXQgc2V0dXB0b29sczMKKworUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbjMtZ2l0ZGIgcHl0aG9uMy1sYW5nIHB5dGhvbjMtaW8gcHl0aG9uMy1zaGVsbCBweXRob24zLW1hdGggcHl0aG9uMy1yZSBweXRob24zLXN1YnByb2Nlc3MgcHl0aG9uMy1zdHJpbmdvbGQgcHl0aG9uMy11bml4YWRtaW4gcHl0aG9uMy1lbnVtIHB5dGhvbjMtbG9nZ2luZyBweXRob24zLWRhdGV0aW1lIHB5dGhvbjMtbmV0Y2xpZW50IHB5dGhvbjMtdW5pdHRlc3QgcHl0aG9uMy1hcmdwYXJzZSBnaXQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW1ha29fMS4wLjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW1ha29fMS4wLjcuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbWFrb18xLjAuNi5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tYWtvXzEuMC43LmJiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW5hdGl2ZV8zLjUuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbmF0aXZlXzMuNS4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ODJlMmNkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbmF0aXZlXzMuNS4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsODMgKzAsMCBAQAotcmVxdWlyZSByZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24uaW5jCi0KLVBSID0gIiR7SU5DX1BSfS4wIgotUFlUSE9OX01BSk1JTiA9ICIzLjUiCi1ESVNUUk9fU1JDX1VSSSA/PSAiZmlsZTovL3NpdGVjdXN0b21pemUucHkiCi1ESVNUUk9fU1JDX1VSSV9saW51eHN0ZGJhc2UgPSAiIgotU1JDX1VSSSA9ICJodHRwOi8vd3d3LnB5dGhvbi5vcmcvZnRwL3B5dGhvbi8ke1BWfS9QeXRob24tJHtQVn0udGFyLnh6IFwKLWZpbGU6Ly8xMi1kaXN0dXRpbHMtcHJlZml4LWlzLWluc2lkZS1zdGFnaW5nLWFyZWEucGF0Y2ggXAotZmlsZTovL3B5dGhvbi1jb25maWcucGF0Y2ggXAotZmlsZTovLzAwMC1jcm9zcy1jb21waWxlLnBhdGNoIFwKLWZpbGU6Ly8wMzAtZml4dXAtaW5jbHVkZS1kaXJzLnBhdGNoIFwKLWZpbGU6Ly8wNzAtZG9udC1jbGVhbi1pcGtnLWluc3RhbGwucGF0Y2ggXAotZmlsZTovLzA4MC1kaXN0dXRpbHMtZG9udF9hZGp1c3RfZmlsZXMucGF0Y2ggXAotZmlsZTovLzEzMC1yZWFkbGluZS1zZXR1cC5wYXRjaCBcCi1maWxlOi8vMTUwLWZpeC1zZXR1cHRlcm0ucGF0Y2ggXAotZmlsZTovL3B5dGhvbi0zLjMtbXVsdGlsaWIucGF0Y2ggXAotZmlsZTovLzAzLWZpeC10a2ludGVyLWRldGVjdGlvbi5wYXRjaCBcCi1maWxlOi8vYXZvaWRfd2FybmluZ19hYm91dF90a2ludGVyLnBhdGNoIFwKLWZpbGU6Ly9zaHV0aWwtZm9sbG93LXN5bWxpbmstZml4LnBhdGNoIFwKLWZpbGU6Ly8wMDAxLWgycHktRml4LWlzc3VlLTEzMDMyLXdoZXJlLWl0LWZhaWxzLXdpdGgtVW5pY29kZURlY28ucGF0Y2ggXAotZmlsZTovL3N5c3Jvb3QtaW5jbHVkZS1oZWFkZXJzLnBhdGNoIFwKLWZpbGU6Ly91bml4Y2NvbXBpbGVyLnBhdGNoIFwKLSR7RElTVFJPX1NSQ19VUkl9IFwKLWZpbGU6Ly9zeXNjb25maWcucHktYWRkLV9QWVRIT05fUFJPSkVDVF9TUkMucGF0Y2ggXAotZmlsZTovL3NldHVwLnB5LWNoZWNrLWNyb3NzX2NvbXBpbGluZy13aGVuLWdldC1GTEFHUy5wYXRjaCBcCi1maWxlOi8vMDAwMS1Eby1ub3QtdXNlLXRoZS1zaGVsbC12ZXJzaW9uLW9mLXB5dGhvbi1jb25maWctdGhhdC13LnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjg5MDZlZmJhY2ZjZGM3YzNjOTE5OGFlZWZhZmQxNTllIiAgCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDAxMGY1NjEwMGI5Yjc0MjU5ZWJjZDVkNGIyOTVhMzIzMjRiNThiNTE3NDAzYTEwZDFhMmFhN2NiMjJiY2E0MCIgCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTZiNjAyNTgxMzBlNGVkMTBkMzEwMTUxN2ViNWI5Mzg1IgotCi0jIGV4Y2x1ZGUgcHJlLXJlbGVhc2VzIGZvciBib3RoIHB5dGhvbiAyLnggYW5kIDMueAotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiW1BwXXl0aG9uLSg/UDxwdmVyPlxkKyhcLlxkKykrKS50YXIiCi0KLVMgPSAiJHtXT1JLRElSfS9QeXRob24tJHtQVn0iCi0KLUVYVFJBTkFUSVZFUEFUSCArPSAiYnppcDItbmF0aXZlIgotREVQRU5EUyA9ICJvcGVuc3NsLW5hdGl2ZSBiemlwMi1yZXBsYWNlbWVudC1uYXRpdmUgemxpYi1uYXRpdmUgcmVhZGxpbmUtbmF0aXZlIHNxbGl0ZTMtbmF0aXZlIgotCi1pbmhlcml0IG5hdGl2ZQotCi1yZXF1aXJlIHB5dGhvbi1uYXRpdmUtJHtQWVRIT05fTUFKTUlOfS1tYW5pZmVzdC5pbmMKLQotIyB1bmluYXRpdmUgbWF5IGJlIHVzZWQgb24gcHJlIGdsaWJjIDIuMjUgc3lzdGVtcyB3aGljaCBkb24ndCBoYXZlIGdldGVudHJvcHkKLUVYVFJBX09FQ09ORl9hcHBlbmQgPSAiIC0tYmluZGlyPSR7YmluZGlyfS8ke1BOfSAtLXdpdGhvdXQtZW5zdXJlcGlwIGFjX2N2X2Z1bmNfZ2V0ZW50cm9weT1ubyIKLQotRVhUUkFfT0VNQUtFID0gJ1wKLSAgTElCQz0iIiBcCi0gIFNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfSBcCi0gIFNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJfTkFUSVZFfSBcCi0gIExJQj0ke2Jhc2VsaWJ9IFwKLSAgQVJDSD0ke1RBUkdFVF9BUkNIfSBcCi0nCi0KLSMgTm8gY3R5cGVzIG9wdGlvbiBmb3IgcHl0aG9uIDMKLVBZVEhPTkxTQk9QVFMgPSAiIgotCi1kb19jb25maWd1cmVfYXBwZW5kKCkgewotCWF1dG9yZWNvbmYgLS12ZXJib3NlIC0taW5zdGFsbCAtLWZvcmNlIC0tZXhjbHVkZT1hdXRvcG9pbnQgLi4vUHl0aG9uLSR7UFZ9L01vZHVsZXMvX2N0eXBlcy9saWJmZmkKLQlzZWQgLWkgLWUgJ3MsI2RlZmluZSBIQVZFX0dFVFJBTkRPTSAxLC9cKiAjdW5kZWYgSEFWRV9HRVRSQU5ET00gXCovLCcgJHtCfS9weWNvbmZpZy5oCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZwotCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAotCWlmIFsgLWUgJHtXT1JLRElSfS9zaXRlY3VzdG9taXplLnB5IF07IHRoZW4KLQkJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc2l0ZWN1c3RvbWl6ZS5weSAke0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59Ci0JZmkKLQlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0vJHtQTn0KLQlpbnN0YWxsIC1tIDA3NTUgUGFyc2VyL3BnZW4gJHtEfSR7YmluZGlyfS8ke1BOfQotCi0JIyBNYWtlIHN1cmUgd2UgdXNlIC91c3IvYmluL2VudiBweXRob24KLQlmb3IgUFlUSFNDUklQVCBpbiBgZ3JlcCAtcklsICR7YmluZGlyfS8ke1BOfS9weXRob24gJHtEfSR7YmluZGlyfS8ke1BOfWA7IGRvCi0JCXNlZCAtaSAtZSAnMXN8XiMhLip8IyEvdXNyL2Jpbi9lbnYgcHl0aG9uM3wnICRQWVRIU0NSSVBUCi0JZG9uZQotCi0JIyBUZXN0cyBhcmUgbGFyZ2UgYW5kIHdlIGRvbid0IG5lZWQgdGhlbSBpbiB0aGUgbmF0aXZlIHN5c3Jvb3QKLQlybSAke0R9JHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vdGVzdCAtcmYKLX0KLQotUlBST1ZJREVTICs9ICJweXRob24zLW1pc2MtbmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1uYXRpdmVfMy41LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW5hdGl2ZV8zLjUuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Y2Q5Yzg4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1uYXRpdmVfMy41LjMuYmIKQEAgLTAsMCArMSw4NCBAQAorcmVxdWlyZSByZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24uaW5jCisKK1BSID0gIiR7SU5DX1BSfS4wIgorUFlUSE9OX01BSk1JTiA9ICIzLjUiCitESVNUUk9fU1JDX1VSSSA/PSAiZmlsZTovL3NpdGVjdXN0b21pemUucHkiCitESVNUUk9fU1JDX1VSSV9saW51eHN0ZGJhc2UgPSAiIgorU1JDX1VSSSA9ICJodHRwOi8vd3d3LnB5dGhvbi5vcmcvZnRwL3B5dGhvbi8ke1BWfS9QeXRob24tJHtQVn0udGFyLnh6IFwKK2ZpbGU6Ly8xMi1kaXN0dXRpbHMtcHJlZml4LWlzLWluc2lkZS1zdGFnaW5nLWFyZWEucGF0Y2ggXAorZmlsZTovL3B5dGhvbi1jb25maWcucGF0Y2ggXAorZmlsZTovLzAwMDEtY3Jvc3MtY29tcGlsZS1zdXBwb3J0LnBhdGNoIFwKK2ZpbGU6Ly8wMzAtZml4dXAtaW5jbHVkZS1kaXJzLnBhdGNoIFwKK2ZpbGU6Ly8wNzAtZG9udC1jbGVhbi1pcGtnLWluc3RhbGwucGF0Y2ggXAorZmlsZTovLzA4MC1kaXN0dXRpbHMtZG9udF9hZGp1c3RfZmlsZXMucGF0Y2ggXAorZmlsZTovLzEzMC1yZWFkbGluZS1zZXR1cC5wYXRjaCBcCitmaWxlOi8vMTUwLWZpeC1zZXR1cHRlcm0ucGF0Y2ggXAorZmlsZTovL3B5dGhvbi0zLjMtbXVsdGlsaWIucGF0Y2ggXAorZmlsZTovLzAzLWZpeC10a2ludGVyLWRldGVjdGlvbi5wYXRjaCBcCitmaWxlOi8vYXZvaWRfd2FybmluZ19hYm91dF90a2ludGVyLnBhdGNoIFwKK2ZpbGU6Ly9zaHV0aWwtZm9sbG93LXN5bWxpbmstZml4LnBhdGNoIFwKK2ZpbGU6Ly8wMDAxLWgycHktRml4LWlzc3VlLTEzMDMyLXdoZXJlLWl0LWZhaWxzLXdpdGgtVW5pY29kZURlY28ucGF0Y2ggXAorZmlsZTovL3N5c3Jvb3QtaW5jbHVkZS1oZWFkZXJzLnBhdGNoIFwKK2ZpbGU6Ly91bml4Y2NvbXBpbGVyLnBhdGNoIFwKKyR7RElTVFJPX1NSQ19VUkl9IFwKK2ZpbGU6Ly9zeXNjb25maWcucHktYWRkLV9QWVRIT05fUFJPSkVDVF9TUkMucGF0Y2ggXAorZmlsZTovL3NldHVwLnB5LWNoZWNrLWNyb3NzX2NvbXBpbGluZy13aGVuLWdldC1GTEFHUy5wYXRjaCBcCitmaWxlOi8vMDAwMS1Eby1ub3QtdXNlLXRoZS1zaGVsbC12ZXJzaW9uLW9mLXB5dGhvbi1jb25maWctdGhhdC13LnBhdGNoIFwKK2ZpbGU6Ly9zdXBwb3J0X1NPVVJDRV9EQVRFX0VQT0NIX2luX3B5X2NvbXBpbGUucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNTdkMWY4YmZiYWJmNGYyNTAwMjczZmIwNzA2ZTZmMjEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWVmZTJhZDY1NzU4NTU0MjNhYjYzMGY1YjUxYThlZjZlNTU1NmY3NzQ1ODRjMDZiZWFiNDkyNmY5MzBkZGJiMCIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YjY4MGVkOTlhYTYwZDM1MGM2NWE2NTkxNDQ5NDIwN2UiCisKKyMgZXhjbHVkZSBwcmUtcmVsZWFzZXMgZm9yIGJvdGggcHl0aG9uIDIueCBhbmQgMy54CitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJbUHBdeXRob24tKD9QPHB2ZXI+XGQrKFwuXGQrKSspLnRhciIKKworUyA9ICIke1dPUktESVJ9L1B5dGhvbi0ke1BWfSIKKworRVhUUkFOQVRJVkVQQVRIICs9ICJiemlwMi1uYXRpdmUiCitERVBFTkRTID0gIm9wZW5zc2wtbmF0aXZlIGJ6aXAyLXJlcGxhY2VtZW50LW5hdGl2ZSB6bGliLW5hdGl2ZSByZWFkbGluZS1uYXRpdmUgc3FsaXRlMy1uYXRpdmUiCisKK2luaGVyaXQgbmF0aXZlCisKK3JlcXVpcmUgcHl0aG9uLW5hdGl2ZS0ke1BZVEhPTl9NQUpNSU59LW1hbmlmZXN0LmluYworCisjIHVuaW5hdGl2ZSBtYXkgYmUgdXNlZCBvbiBwcmUgZ2xpYmMgMi4yNSBzeXN0ZW1zIHdoaWNoIGRvbid0IGhhdmUgZ2V0ZW50cm9weQorRVhUUkFfT0VDT05GX2FwcGVuZCA9ICIgLS1iaW5kaXI9JHtiaW5kaXJ9LyR7UE59IC0td2l0aG91dC1lbnN1cmVwaXAgYWNfY3ZfZnVuY19nZXRlbnRyb3B5PW5vIgorCitFWFRSQV9PRU1BS0UgPSAnXAorICBMSUJDPSIiIFwKKyAgU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9IFwKKyAgU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUl9OQVRJVkV9IFwKKyAgTElCPSR7YmFzZWxpYn0gXAorICBBUkNIPSR7VEFSR0VUX0FSQ0h9IFwKKycKKworIyBObyBjdHlwZXMgb3B0aW9uIGZvciBweXRob24gMworUFlUSE9OTFNCT1BUUyA9ICIiCisKK2RvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7CisJYXV0b3JlY29uZiAtLXZlcmJvc2UgLS1pbnN0YWxsIC0tZm9yY2UgLS1leGNsdWRlPWF1dG9wb2ludCAuLi9QeXRob24tJHtQVn0vTW9kdWxlcy9fY3R5cGVzL2xpYmZmaQorCXNlZCAtaSAtZSAncywjZGVmaW5lIEhBVkVfR0VUUkFORE9NIDEsL1wqICN1bmRlZiBIQVZFX0dFVFJBTkRPTSBcKi8sJyAke0J9L3B5Y29uZmlnLmgKK30KKworZG9faW5zdGFsbCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnCisJb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCisJaWYgWyAtZSAke1dPUktESVJ9L3NpdGVjdXN0b21pemUucHkgXTsgdGhlbgorCQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zaXRlY3VzdG9taXplLnB5ICR7RH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0KKwlmaQorCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfS8ke1BOfQorCWluc3RhbGwgLW0gMDc1NSBQYXJzZXIvcGdlbiAke0R9JHtiaW5kaXJ9LyR7UE59CisKKwkjIE1ha2Ugc3VyZSB3ZSB1c2UgL3Vzci9iaW4vZW52IHB5dGhvbgorCWZvciBQWVRIU0NSSVBUIGluIGBncmVwIC1ySWwgJHtiaW5kaXJ9LyR7UE59L3B5dGhvbiAke0R9JHtiaW5kaXJ9LyR7UE59YDsgZG8KKwkJc2VkIC1pIC1lICcxc3xeIyEuKnwjIS91c3IvYmluL2VudiBweXRob24zfCcgJFBZVEhTQ1JJUFQKKwlkb25lCisKKwkjIFRlc3RzIGFyZSBsYXJnZSBhbmQgd2UgZG9uJ3QgbmVlZCB0aGVtIGluIHRoZSBuYXRpdmUgc3lzcm9vdAorCXJtICR7RH0ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS90ZXN0IC1yZgorfQorCitSUFJPVklERVMgKz0gInB5dGhvbjMtbWlzYy1uYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW5vc2VfMS4zLjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW5vc2VfMS4zLjcuYmIKaW5kZXggOTliYmE0NC4uMWUyZmY3NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1ub3NlXzEuMy43LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbm9zZV8xLjMuNy5iYgpAQCAtMTcsNiArMTcsMTAgQEAKIAogaW5oZXJpdCBzZXR1cHRvb2xzMwogCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBtdiAke0R9JHtiaW5kaXJ9L25vc2V0ZXN0cyAke0R9JHtiaW5kaXJ9L25vc2V0ZXN0czMKK30KKwogUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ID0gIlwKICAgcHl0aG9uMy11bml0dGVzdCBcCiAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGlwXzkuMC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1waXBfOS4wLjEuYmIKaW5kZXggNDQ1NmI5Yi4uOWI5MDdhMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1waXBfOS4wLjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1waXBfOS4wLjEuYmIKQEAgLTUzLDQgKzUzLDQgQEAKICAgcHl0aG9uMy14bWxycGMgXAogIgogCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHljYWlyb18xLjEwLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Y2Fpcm9fMS4xMC4wLmJiCmluZGV4IGY5MDMxYjMuLjkyNThiYTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHljYWlyb18xLjEwLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWNhaXJvXzEuMTAuMC5iYgpAQCAtMTksNiArMTksOCBAQAogCiBpbmhlcml0IGRpc3R1dGlsczMgcGtnY29uZmlnCiAKK0NGTEFHUyArPSAiLWZQSUMiCisKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgogCiBkb19jb25maWd1cmUoKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Y3VybF83LjIxLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Y3VybF83LjIxLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkMTExOTIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWN1cmxfNy4yMS41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9weXRob24tcHljdXJsOiIKLQotcmVxdWlyZSBweXRob24tcHljdXJsLmluYwotCi1pbmhlcml0IGRpc3R1dGlsczMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlnb2JqZWN0LzAwMDEtY29uZmlndXJlLmFjLURvbi10LXVzZS1nbm9tZS1jb21tb24tbWFjcm9zLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWdvYmplY3QvMDAwMS1jb25maWd1cmUuYWMtRG9uLXQtdXNlLWdub21lLWNvbW1vbi1tYWNyb3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWFlZGI1OAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlnb2JqZWN0LzAwMDEtY29uZmlndXJlLmFjLURvbi10LXVzZS1nbm9tZS1jb21tb24tbWFjcm9zLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gMjA2MzYwNzQ0Y2VkZmYyMGVhZTNjOGZjZmRlOTkzOGZkYWU5OTU5MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CitEYXRlOiBUaHUsIDYgSnVsIDIwMTcgMTE6NDc6MjEgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmFjOiBEb24ndCB1c2UgZ25vbWUtY29tbW9uIG1hY3JvcworCityZW1vdmUgR05PTUVfQ09NUElMRV9XQVJOSU5HUygpIGNhbGw6IGl0J3MgZnJvbSBnbm9tZS1jb21tb24gd2hpY2gKK2lzIGRlcHJlY2F0ZWQuCisKK1RoaXMgcGF0Y2ggY2FuIGJlIHJlbW92ZWQgd2hlbiB1cGdyYWRpbmcgdG8gMy4yNS4xOiBhdCB0aGF0IHBvaW50CitweWdvYmplY3QgbmVlZHMgYXV0b2NvbmYtYXJjaGl2ZSBpbnN0ZWFkLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW0FscmVhZHkgaGFuZGxlZCB1cHN0cmVhbV0KK1NpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCAyIC0tCisgMSBmaWxlIGNoYW5nZWQsIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDFmMTViM2MuLjVjYjE3MGYgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTIyMSw4ICsyMjEsNiBAQCBBQ19BUkdfV0lUSChjb21tb24sCisgICAgIHdpdGhfY29tbW9uPXllcykKKyBBTV9DT05ESVRJT05BTChXSVRIX0NPTU1PTiwgdGVzdCAiJHdpdGhfY29tbW9uIiA9ICJ5ZXMiKQorIAorLSMgY29tcGlsZXIgd2FybmluZ3MsIGVycm9ycywgcmVxdWlyZWQgY2ZsYWdzLCBhbmQgY29kZSBjb3ZlcmFnZSBzdXBwb3J0CistR05PTUVfQ09NUElMRV9XQVJOSU5HUyhbbWF4aW11bV0sIFstV25vLWVycm9yPW1pc3NpbmctcHJvdG90eXBlc10pCisgQUNfTVNHX0NIRUNLSU5HKGZvciBHbm9tZSBjb2RlIGNvdmVyYWdlIHN1cHBvcnQpCisgbTRfaWZkZWYoW0dOT01FX0NPREVfQ09WRVJBR0VdLAorICAgICAgICAgIFtBQ19NU0dfUkVTVUxUKHllcykKKy0tIAorMi4xLjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWdvYmplY3RfMy4yMi4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWdvYmplY3RfMy4yMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNDMwNDhkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlnb2JqZWN0XzMuMjIuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVNVTU1BUlkgPSAiUHl0aG9uIEdPYmplY3QgYmluZGluZ3MiCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hOTE2NDY3YjkxMDc2ZTYzMWRkOGVkYjc0MjQ3NjljNyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdub21lYmFzZSBkaXN0dXRpbHMzLWJhc2UgZ29iamVjdC1pbnRyb3NwZWN0aW9uIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgotCi1ERVBFTkRTICs9ICJnbm9tZS1jb21tb24tbmF0aXZlIHB5dGhvbjMgZ2xpYi0yLjAiCi0KLVNSQ05BTUU9InB5Z29iamVjdCIKLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvR05PTUUvc291cmNlcy8ke1NSQ05BTUV9LyR7QGdub21lX3ZlcmRpcigiJHtQVn0iKX0vJHtTUkNOQU1FfS0ke1BWfS50YXIueHogXAotICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1hZGQtc3lzcm9vdC1wYXRoLXRvLUdJX0RBVEFESVItZG9uLXQtc2UucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZWQ0MTE3ZWQ1ZDU1NGQyNWZkNzcxODgwN2ZiZjgxOWYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDhiMjljZmIwOGVmYzgwZjdhODYzMGEyNzM0ZGVjNjVhOTljMWI1OWYxZTU3NzFjNjcxZDJlNGVkOGE1Y2JlNyIKLQotUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0tJHtQVn0iCi0KLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnRElTVFJPX0ZFQVRVUkVTJywgWyAnZGlyZWN0ZmInLCAnd2F5bGFuZCcsICd4MTEnIF0sICdjYWlybycsICcnLCBkKX0iCi0KLSMgcHl0aG9uMy1weWNhaXJvIGlzIGNoZWNrZWQgb24gY29uZmlndXJhdGlvbiAtPiBERVBFTkRTCi0jIHdlIGRvbid0IGxpbmsgYWdhaW5zdCBweXRob24zLXB5Y2Fpcm8gLT4gUkRFUEVORFMKLVBBQ0tBR0VDT05GSUdbY2Fpcm9dID0gIi0tZW5hYmxlLWNhaXJvLC0tZGlzYWJsZS1jYWlybyxjYWlybyBweXRob24zLXB5Y2Fpcm8sIHB5dGhvbjMtcHljYWlybyIKLQotUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbjMtc2V0dXB0b29scyBweXRob24zLWltcG9ydGxpYiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Z29iamVjdF8zLjI0LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Z29iamVjdF8zLjI0LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWQxMGFmMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlnb2JqZWN0XzMuMjQuMS5iYgpAQCAtMCwwICsxLDMyIEBACitTVU1NQVJZID0gIlB5dGhvbiBHT2JqZWN0IGJpbmRpbmdzIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTkxNjQ2N2I5MTA3NmU2MzFkZDhlZGI3NDI0NzY5YzciCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnbm9tZWJhc2UgZGlzdHV0aWxzMy1iYXNlIGdvYmplY3QtaW50cm9zcGVjdGlvbiB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KKworREVQRU5EUyArPSAicHl0aG9uMyBnbGliLTIuMCIKKworU1JDTkFNRT0icHlnb2JqZWN0IgorU1JDX1VSSSA9ICIgXAorICAgIGh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9HTk9NRS9zb3VyY2VzLyR7U1JDTkFNRX0vJHtAZ25vbWVfdmVyZGlyKCIke1BWfSIpfS8ke1NSQ05BTUV9LSR7UFZ9LnRhci54eiBcCisgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLWFkZC1zeXNyb290LXBhdGgtdG8tR0lfREFUQURJUi1kb24tdC1zZS5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLURvbi10LXVzZS1nbm9tZS1jb21tb24tbWFjcm9zLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjY5YTg0MzMxMWQwZjAzODVkZmYzNzZlMTFhMmQ4M2QyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImE2MjhhOTVhYTA5MDllMTNmYjA4MjMwYjFiOThmYzQ4YWRlZjEwYjIyMDkzMmY3NmQ2MmY2ODIxYjNmZGJmZmQiCisKK1MgPSAiJHtXT1JLRElSfS8ke1NSQ05BTUV9LSR7UFZ9IgorCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWluc19hbnkoJ0RJU1RST19GRUFUVVJFUycsIFsgJ2RpcmVjdGZiJywgJ3dheWxhbmQnLCAneDExJyBdLCAnY2Fpcm8nLCAnJywgZCl9IgorCisjIHB5dGhvbjMtcHljYWlybyBpcyBjaGVja2VkIG9uIGNvbmZpZ3VyYXRpb24gLT4gREVQRU5EUworIyB3ZSBkb24ndCBsaW5rIGFnYWluc3QgcHl0aG9uMy1weWNhaXJvIC0+IFJERVBFTkRTCitQQUNLQUdFQ09ORklHW2NhaXJvXSA9ICItLWVuYWJsZS1jYWlybywtLWRpc2FibGUtY2Fpcm8sY2Fpcm8gcHl0aG9uMy1weWNhaXJvLCBweXRob24zLXB5Y2Fpcm8iCisKK1JERVBFTkRTXyR7UE59ICs9ICJweXRob24zLXNldHVwdG9vbHMgcHl0aG9uMy1pbXBvcnRsaWIiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWdwZ21lXzAuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlncGdtZV8wLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5NWY2NzcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWdwZ21lXzAuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBQeXRob24gbW9kdWxlIGZvciB3b3JraW5nIHdpdGggT3BlblBHUCBtZXNzYWdlcyIKLUhPTUVQQUdFID0gImh0dHBzOi8vbGF1bmNocGFkLm5ldC9weWdwZ21lIgotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTttZDU9MmRjMTVhNzZhY2YwMWUxMjYxODhjOGRlNjM0YWU0YjMiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9sYXVuY2hwYWQubmV0L3B5Z3BnbWUvdHJ1bmsvJHtQVn0vK2Rvd25sb2FkL3B5Z3BnbWUtJHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gImQzODM1NWFmNzNmMDM1MmNkZTNkNDEwYjI1ZjM0ZmQwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVmZDg4N2M0MDcwMTUyOTZhOGZkM2Y0Yjg2N2ZlMGZjY2EzMTc5ZGU5N2NjZGU5MDQ0OTg1M2EzZGZiODAyZTEiCi0KLVMgPSAiJHtXT1JLRElSfS9weWdwZ21lLSR7UFZ9IgotCi1pbmhlcml0IGRpc3R1dGlsczMKLQotREVQRU5EUyA9ICJncGdtZSBweXRob24zIgotCi1SREVQRU5EU18ke1BOfSArPSAicHl0aG9uMy1jb3JlIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNldHVwdG9vbHNfMzIuMS4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXR1cHRvb2xzXzMyLjEuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjVhZjZmMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNldHVwdG9vbHNfMzIuMS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotcmVxdWlyZSBweXRob24tc2V0dXB0b29scy5pbmMKLQotREVQRU5EUyArPSAicHl0aG9uMyIKLURFUEVORFNfY2xhc3MtbmF0aXZlICs9ICJweXRob24zLW5hdGl2ZSIKLQotaW5oZXJpdCBkaXN0dXRpbHMzCi0KLURJU1RVVElMU19JTlNUQUxMX0FSR1MgKz0gIi0taW5zdGFsbC1saWI9JHtEfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgotCi0jIFRoZSBpbnN0YWxsZXIgcHV0cyB0aGUgd3JvbmcgcGF0aCBpbiB0aGUgc2V0dXB0b29scy5wdGggZmlsZS4gIENvcnJlY3QgaXQuCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBybSAke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vc2V0dXB0b29scy5wdGgKLSAgICBtdiAke0R9JHtiaW5kaXJ9L2Vhc3lfaW5zdGFsbCAke0R9JHtiaW5kaXJ9L2Vhc3kzX2luc3RhbGwKLSAgICBlY2hvICIuLyR7U1JDTkFNRX0tJHtQVn0tcHkke1BZVEhPTl9CQVNFVkVSU0lPTn0uZWdnIiA+ICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9zZXR1cHRvb2xzLnB0aAotfQotCi1SREVQRU5EU18ke1BOfSA9ICJcCi0gIHB5dGhvbjMtZGlzdHV0aWxzIFwKLSAgcHl0aG9uMy1jb21wcmVzc2lvbiBcCi0iCi1SREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgPSAiXAotICBweXRob24zLWN0eXBlcyBcCi0gIHB5dGhvbjMtZGlzdHV0aWxzIFwKLSAgcHl0aG9uMy1lbWFpbCBcCi0gIHB5dGhvbjMtaW1wb3J0bGliIFwKLSAgcHl0aG9uMy1udW1iZXJzIFwKLSAgcHl0aG9uMy1jb21wcmVzc2lvbiBcCi0gIHB5dGhvbjMtc2hlbGwgXAotICBweXRob24zLXN1YnByb2Nlc3MgXAotICBweXRob24zLXRleHR1dGlscyBcCi0gIHB5dGhvbjMtcGtndXRpbCBcCi0gIHB5dGhvbjMtdGhyZWFkaW5nIFwKLSAgcHl0aG9uMy1taXNjIFwKLSAgcHl0aG9uMy11bml0dGVzdCBcCi0gIHB5dGhvbjMteG1sIFwKLSIKLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXR1cHRvb2xzXzM2LjIuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2V0dXB0b29sc18zNi4yLjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTdiY2E5NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2V0dXB0b29sc18zNi4yLjcuYmIKQEAgLTAsMCArMSwzMyBAQAorcmVxdWlyZSBweXRob24tc2V0dXB0b29scy5pbmMKKworREVQRU5EUyArPSAicHl0aG9uMyIKK0RFUEVORFNfY2xhc3MtbmF0aXZlICs9ICJweXRob24zLW5hdGl2ZSIKK0RFUEVORFNfY2xhc3MtbmF0aXZlc2RrICs9ICJuYXRpdmVzZGstcHl0aG9uMyIKKworaW5oZXJpdCBzZXR1cHRvb2xzMworCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBtdiAke0R9JHtiaW5kaXJ9L2Vhc3lfaW5zdGFsbCAke0R9JHtiaW5kaXJ9L2Vhc3kzX2luc3RhbGwKK30KKworUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIlwKKyAgcHl0aG9uMy1kaXN0dXRpbHMgXAorICBweXRob24zLWNvbXByZXNzaW9uIFwKKyIKK1JERVBFTkRTXyR7UE59ID0gIlwKKyAgcHl0aG9uMy1jdHlwZXMgXAorICBweXRob24zLWRpc3R1dGlscyBcCisgIHB5dGhvbjMtZW1haWwgXAorICBweXRob24zLWltcG9ydGxpYiBcCisgIHB5dGhvbjMtbnVtYmVycyBcCisgIHB5dGhvbjMtY29tcHJlc3Npb24gXAorICBweXRob24zLXNoZWxsIFwKKyAgcHl0aG9uMy1zdWJwcm9jZXNzIFwKKyAgcHl0aG9uMy10ZXh0dXRpbHMgXAorICBweXRob24zLXBrZ3V0aWwgXAorICBweXRob24zLXRocmVhZGluZyBcCisgIHB5dGhvbjMtbWlzYyBcCisgIHB5dGhvbjMtdW5pdHRlc3QgXAorICBweXRob24zLXhtbCBcCisiCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMC1jcm9zcy1jb21waWxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAtY3Jvc3MtY29tcGlsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmQ4MjIyMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMC1jcm9zcy1jb21waWxlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODUgKzAsMCBAQAotV2UgY3Jvc3MgY29tcGlsZSBweXRob24uIFRoaXMgcGF0Y2ggdXNlcyB0b29scyBmcm9tIGhvc3QvbmF0aXZlCi1weXRob24gaW5zdGVhZCBvZiBpbi10cmVlIHRvb2xzCi0KLS1LaGVtCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZVtDb25maWd1cmF0aW9uIFNwZWNpZmljXQotCi0tLS0KLSBNYWtlZmlsZS5wcmUuaW4gfCAgIDI1ICsrKysrKysrKysrKystLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBQeXRob24tMy41LjIvTWFrZWZpbGUucHJlLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTMuNS4yLm9yaWcvTWFrZWZpbGUucHJlLmluCi0rKysgUHl0aG9uLTMuNS4yL01ha2VmaWxlLnByZS5pbgotQEAgLTIyMCw2ICsyMjAsNyBAQCBMSUJPQkpTPQlATElCT0JKU0AKLSAKLSBQWVRIT049CQlweXRob24kKEVYRSkKLSBCVUlMRFBZVEhPTj0JcHl0aG9uJChCVUlMREVYRSkKLStIT1NUUFlUSE9OPQkkKEJVSUxEUFlUSE9OKQotIAotIGNyb3NzX2NvbXBpbGluZz1AY3Jvc3NfY29tcGlsaW5nQAotIFBZVEhPTl9GT1JfQlVJTEQ9QFBZVEhPTl9GT1JfQlVJTERACi1AQCAtMjc5LDYgKzI4MCw3IEBAIExJQkZGSV9JTkNMVURFRElSPQlATElCRkZJX0lOQ0xVREVESVJACi0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSAjIFBhcnNlcgotIFBHRU49CQlQYXJzZXIvcGdlbiQoRVhFKQotK0hPU1RQR0VOPQkkKFBHRU4pJChFWEUpCi0gCi0gUFNSQ1M9CQlcCi0gCQlQYXJzZXIvYWNjZWxlci5jIFwKLUBAIC01MDksNyArNTExLDcgQEAgYnVpbGRfYWxsX2dlbmVyYXRlX3Byb2ZpbGU6Ci0gCi0gcnVuX3Byb2ZpbGVfdGFzazoKLSAJOiAjIEZJWE1FOiBjYW4ndCBydW4gZm9yIGEgY3Jvc3MgYnVpbGQKLS0JJChMTFZNX1BST0ZfRklMRSkgJChSVU5TSEFSRUQpIC4vJChCVUlMRFBZVEhPTikgJChQUk9GSUxFX1RBU0spIHx8IHRydWUKLSsJJChMTFZNX1BST0ZfRklMRSkgJChSVU5TSEFSRUQpICQoSE9TVFBZVEhPTikgJChQUk9GSUxFX1RBU0spIHx8IHRydWUKLSAKLSBidWlsZF9hbGxfbWVyZ2VfcHJvZmlsZToKLSAJJChMTFZNX1BST0ZfTUVSR0VSKQotQEAgLTc5Miw3ICs3OTQsNyBAQCAkKEdSQU1NQVJfSCk6ICQoR1JBTU1BUl9JTlBVVCkgJChQR0VOKQotIAlAJChNS0RJUl9QKSBJbmNsdWRlCi0gCSMgQXZvaWQgY29weWluZyB0aGUgZmlsZSBvbnRvIGl0c2VsZiBmb3IgYW4gaW4tdHJlZSBidWlsZAotIAlpZiB0ZXN0ICIkKGNyb3NzX2NvbXBpbGluZykiICE9ICJ5ZXMiOyB0aGVuIFwKLS0JCSQoUEdFTikgJChHUkFNTUFSX0lOUFVUKSAkKEdSQU1NQVJfSCkgJChHUkFNTUFSX0MpOyBcCi0rCQkkKEhPU1RQR0VOKSAkKEdSQU1NQVJfSU5QVVQpICQoR1JBTU1BUl9IKSAkKEdSQU1NQVJfQyk7IFwKLSAJZWxzZSBcCi0gCQljcCAkKHNyY2RpcikvSW5jbHVkZS9ncmFtaW5pdC5oICQoR1JBTU1BUl9IKS50bXA7IFwKLSAJCW12ICQoR1JBTU1BUl9IKS50bXAgJChHUkFNTUFSX0gpOyBcCi1AQCAtOTkwLDcgKzk5Miw3IEBAICQoTElCUkFSWV9PQkpTKSAkKE1PRE9CSlMpIFByb2dyYW1zL3B5dGgKLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gCi0gVEVTVE9QVFM9CSQoRVhUUkFURVNUT1BUUykKLS1URVNUUFlUSE9OPQkkKFJVTlNIQVJFRCkgLi8kKEJVSUxEUFlUSE9OKSAkKFRFU1RQWVRIT05PUFRTKQotK1RFU1RQWVRIT049CSQoUlVOU0hBUkVEKSAkKEhPU1RQWVRIT04pICQoVEVTVFBZVEhPTk9QVFMpCi0gVEVTVFJVTk5FUj0JJChURVNUUFlUSE9OKSAkKHNyY2RpcikvVG9vbHMvc2NyaXB0cy9ydW5fdGVzdHMucHkKLSBURVNUVElNRU9VVD0JMzYwMAotIAotQEAgLTE0ODEsNyArMTQ4Myw3IEBAIGZyYW1ld29ya2luc3RhbGxzdHJ1Y3R1cmU6CSQoTERMSUJSQVJZKQotIAkJZmk7IFwKLSAJZG9uZQotIAkkKExOKSAtZnNuIGluY2x1ZGUvcHl0aG9uJChMRFZFUlNJT04pICQoREVTVERJUikkKHByZWZpeCkvSGVhZGVycwotLQlzZWQgJ3MvJVZFUlNJT04lLyciYCQoUlVOU0hBUkVEKSAuLyQoQlVJTERQWVRIT04pIC1jICdpbXBvcnQgcGxhdGZvcm07IHByaW50KHBsYXRmb3JtLnB5dGhvbl92ZXJzaW9uKCkpJ2AiJy9nJyA8ICQoUkVTU1JDRElSKS9JbmZvLnBsaXN0ID4gJChERVNURElSKSQocHJlZml4KS9SZXNvdXJjZXMvSW5mby5wbGlzdAotKwlzZWQgJ3MvJVZFUlNJT04lLyciYCQoUlVOU0hBUkVEKSAkKEhPU1RQWVRIT04pIC1jICdpbXBvcnQgcGxhdGZvcm07IHByaW50KHBsYXRmb3JtLnB5dGhvbl92ZXJzaW9uKCkpJ2AiJy9nJyA8ICQoUkVTU1JDRElSKS9JbmZvLnBsaXN0ID4gJChERVNURElSKSQocHJlZml4KS9SZXNvdXJjZXMvSW5mby5wbGlzdAotIAkkKExOKSAtZnNuICQoVkVSU0lPTikgJChERVNURElSKSQoUFlUSE9ORlJBTUVXT1JLSU5TVEFMTERJUikvVmVyc2lvbnMvQ3VycmVudAotIAkkKExOKSAtZnNuIFZlcnNpb25zL0N1cnJlbnQvJChQWVRIT05GUkFNRVdPUkspICQoREVTVERJUikkKFBZVEhPTkZSQU1FV09SS0lOU1RBTExESVIpLyQoUFlUSE9ORlJBTUVXT1JLKQotIAkkKExOKSAtZnNuIFZlcnNpb25zL0N1cnJlbnQvSGVhZGVycyAkKERFU1RESVIpJChQWVRIT05GUkFNRVdPUktJTlNUQUxMRElSKS9IZWFkZXJzCi1AQCAtMTU0Nyw3ICsxNTQ5LDcgQEAgY29uZmlnLnN0YXR1czoJJChzcmNkaXIpL2NvbmZpZ3VyZQotIAotICMgUnVuIHJlaW5kZW50IG9uIHRoZSBsaWJyYXJ5Ci0gcmVpbmRlbnQ6Ci0tCS4vJChCVUlMRFBZVEhPTikgJChzcmNkaXIpL1Rvb2xzL3NjcmlwdHMvcmVpbmRlbnQucHkgLXIgJChzcmNkaXIpL0xpYgotKwkkKEhPU1RQWVRIT04pICQoc3JjZGlyKS9Ub29scy9zY3JpcHRzL3JlaW5kZW50LnB5IC1yICQoc3JjZGlyKS9MaWIKLSAKLSAjIFJlcnVuIGNvbmZpZ3VyZSB3aXRoIHRoZSBzYW1lIG9wdGlvbnMgYXMgaXQgd2FzIHJ1biBsYXN0IHRpbWUsCi0gIyBwcm92aWRlZCB0aGUgY29uZmlnLnN0YXR1cyBzY3JpcHQgZXhpc3RzCi1AQCAtMTY4Myw3ICsxNjg1LDcgQEAgZnVubnk6Ci0gCi0gIyBQZXJmb3JtIHNvbWUgdmVyaWZpY2F0aW9uIGNoZWNrcyBvbiBhbnkgbW9kaWZpZWQgZmlsZXMuCi0gcGF0Y2hjaGVjazogYWxsCi0tCSQoUlVOU0hBUkVEKSAuLyQoQlVJTERQWVRIT04pICQoc3JjZGlyKS9Ub29scy9zY3JpcHRzL3BhdGNoY2hlY2sucHkKLSsJJChSVU5TSEFSRUQpIC4vJChIT1NUUFlUSE9OKSAkKHNyY2RpcikvVG9vbHMvc2NyaXB0cy9wYXRjaGNoZWNrLnB5Ci0gCi0gIyBEZXBlbmRlbmNpZXMKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1Eby1ub3QtdXNlLXRoZS1zaGVsbC12ZXJzaW9uLW9mLXB5dGhvbi1jb25maWctdGhhdC13LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLURvLW5vdC11c2UtdGhlLXNoZWxsLXZlcnNpb24tb2YtcHl0aG9uLWNvbmZpZy10aGF0LXcucGF0Y2gKaW5kZXggYjdlMGFjNi4uOGVhM2YwMyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLURvLW5vdC11c2UtdGhlLXNoZWxsLXZlcnNpb24tb2YtcHl0aG9uLWNvbmZpZy10aGF0LXcucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLURvLW5vdC11c2UtdGhlLXNoZWxsLXZlcnNpb24tb2YtcHl0aG9uLWNvbmZpZy10aGF0LXcucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDA0NWM5OWI1ZjFlYjZlNGUwZDhhZDFlZjlmMGJhNjU3NGY3MzgxNTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDA0ZGY5NTkzNjVlMmI1NGQ3NTAzZWRmMGU1NTM0ZmYwOTQyODRmMmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IEZyaSwgMjMgT2N0IDIwMTUgMTI6MjU6MDkgKzAzMDAKIFN1YmplY3Q6IFtQQVRDSF0gRG8gbm90IHVzZSB0aGUgc2hlbGwgdmVyc2lvbiBvZiBweXRob24tY29uZmlnIHRoYXQgd2FzCkBAIC0xNCwxMyArMTQsMTMgQEAKICAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUucHJlLmluIGIvTWFrZWZpbGUucHJlLmluCi1pbmRleCBkN2ZjOWEwLi40N2U2MGJjIDEwMDY0NAoraW5kZXggMjM2ZjAwNS4uNWM0MzM3ZiAxMDA2NDQKIC0tLSBhL01ha2VmaWxlLnByZS5pbgogKysrIGIvTWFrZWZpbGUucHJlLmluCi1AQCAtMTI3MCwxMiArMTI3MCw5IEBAIHB5dGhvbi1jb25maWc6ICQoc3JjZGlyKS9NaXNjL3B5dGhvbi1jb25maWcuaW4gTWlzYy9weXRob24tY29uZmlnLnNoCitAQCAtMTM0OCwxMiArMTM0OCw5IEBAIHB5dGhvbi1jb25maWc6ICQoc3JjZGlyKS9NaXNjL3B5dGhvbi1jb25maWcuaW4gTWlzYy9weXRob24tY29uZmlnLnNoCiAgCXNlZCAtZSAicyxARVhFTkFNRUAsJChCSU5ESVIpL3B5dGhvbiQoTERWRVJTSU9OKSQoRVhFKSwiIDwgJChzcmNkaXIpL01pc2MvcHl0aG9uLWNvbmZpZy5pbiA+cHl0aG9uLWNvbmZpZy5weQogIAkjIFJlcGxhY2UgbWFrZWZpbGUgY29tcGF0LiB2YXJpYWJsZSByZWZlcmVuY2VzIHdpdGggc2hlbGwgc2NyaXB0IGNvbXBhdC4gb25lczsgJChWQVIpIC0+ICR7VkFSfQotIAlzZWQgLWUgJ3MsXCQkKFwoW0EtWmEtejAtOV9dKlwpKSxcJCRce1wxXH0sZycgPCBNaXNjL3B5dGhvbi1jb25maWcuc2ggPnB5dGhvbi1jb25maWcKKyAJTENfQUxMPUMgc2VkIC1lICdzLFwkJChcKFtBLVphLXowLTlfXSpcKSksXCQkXHtcMVx9LGcnIDwgTWlzYy9weXRob24tY29uZmlnLnNoID5weXRob24tY29uZmlnCiAtCSMgT24gRGFyd2luLCBhbHdheXMgdXNlIHRoZSBweXRob24gdmVyc2lvbiBvZiB0aGUgc2NyaXB0LCB0aGUgc2hlbGwKIC0JIyB2ZXJzaW9uIGRvZXNuJ3QgdXNlIHRoZSBjb21waWxlciBjdXN0b21pemF0aW9ucyB0aGF0IGFyZSBwcm92aWRlZAogLQkjIGluIHB5dGhvbiAoX29zeF9zdXBwb3J0LnB5KS4KQEAgLTM0LDUgKzM0LDUgQEAKICAKICAjIEluc3RhbGwgdGhlIGluY2x1ZGUgZmlsZXMKIC0tIAotMi4xLjQKKzIuMTEuMAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtSXNzdWUtMjEyNzItVXNlLV9zeXNjb25maWdkYXRhLnB5LXRvLWluaXRpYWxpemUtZGlzdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1Jc3N1ZS0yMTI3Mi1Vc2UtX3N5c2NvbmZpZ2RhdGEucHktdG8taW5pdGlhbGl6ZS1kaXN0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxYzkyZTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtSXNzdWUtMjEyNzItVXNlLV9zeXNjb25maWdkYXRhLnB5LXRvLWluaXRpYWxpemUtZGlzdC5wYXRjaApAQCAtMCwwICsxLDY2IEBACitGcm9tIGJjZGRiZjQwYzdmMWI4MDMzNjI2OGNkZGRhY2MxNzM2OWZiMGNjZWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBMaWJpbiBEYW5nIDxsaWJpbi5kYW5nQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDExIEFwciAyMDE3IDE0OjEyOjE1ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIElzc3VlICMyMTI3MjogVXNlIF9zeXNjb25maWdkYXRhLnB5IHRvIGluaXRpYWxpemUKKyBkaXN0dXRpbHMuc3lzY29uZmlnCisKK0JhY2twb3J0IHVwc3RyZWFtIGNvbW1pdAoraHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uL2NvbW1pdC80MDk0ODIyNTFiMDZmZTc1YzRlZTU2ZTg1ZmZiYjRiMjNkOTM0MTU5CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogTGkgWmhvdSA8bGkuemhvdUB3aW5kcml2ZXIuY29tPgorLS0tCisgTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkgfCAzNSArKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDMxIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkgYi9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQoraW5kZXggNmQ1Y2ZkMC4uOTkyNWQyNCAxMDA2NDQKKy0tLSBhL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5CisrKysgYi9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQorQEAgLTQyNCwzOCArNDI0LDExIEBAIF9jb25maWdfdmFycyA9IE5vbmUKKyAKKyBkZWYgX2luaXRfcG9zaXgoKToKKyAgICAgIiIiSW5pdGlhbGl6ZSB0aGUgbW9kdWxlIGFzIGFwcHJvcHJpYXRlIGZvciBQT1NJWCBzeXN0ZW1zLiIiIgorLSAgICBnID0ge30KKy0gICAgIyBsb2FkIHRoZSBpbnN0YWxsZWQgTWFrZWZpbGU6CistICAgIHRyeToKKy0gICAgICAgIGZpbGVuYW1lID0gZ2V0X21ha2VmaWxlX2ZpbGVuYW1lKCkKKy0gICAgICAgIHBhcnNlX21ha2VmaWxlKGZpbGVuYW1lLCBnKQorLSAgICBleGNlcHQgT1NFcnJvciBhcyBtc2c6CistICAgICAgICBteV9tc2cgPSAiaW52YWxpZCBQeXRob24gaW5zdGFsbGF0aW9uOiB1bmFibGUgdG8gb3BlbiAlcyIgJSBmaWxlbmFtZQorLSAgICAgICAgaWYgaGFzYXR0cihtc2csICJzdHJlcnJvciIpOgorLSAgICAgICAgICAgIG15X21zZyA9IG15X21zZyArICIgKCVzKSIgJSBtc2cuc3RyZXJyb3IKKy0KKy0gICAgICAgIHJhaXNlIERpc3R1dGlsc1BsYXRmb3JtRXJyb3IobXlfbXNnKQorLQorLSAgICAjIGxvYWQgdGhlIGluc3RhbGxlZCBweWNvbmZpZy5oOgorLSAgICB0cnk6CistICAgICAgICBmaWxlbmFtZSA9IGdldF9jb25maWdfaF9maWxlbmFtZSgpCistICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUpIGFzIGZpbGU6CistICAgICAgICAgICAgcGFyc2VfY29uZmlnX2goZmlsZSwgZykKKy0gICAgZXhjZXB0IE9TRXJyb3IgYXMgbXNnOgorLSAgICAgICAgbXlfbXNnID0gImludmFsaWQgUHl0aG9uIGluc3RhbGxhdGlvbjogdW5hYmxlIHRvIG9wZW4gJXMiICUgZmlsZW5hbWUKKy0gICAgICAgIGlmIGhhc2F0dHIobXNnLCAic3RyZXJyb3IiKToKKy0gICAgICAgICAgICBteV9tc2cgPSBteV9tc2cgKyAiICglcykiICUgbXNnLnN0cmVycm9yCistCistICAgICAgICByYWlzZSBEaXN0dXRpbHNQbGF0Zm9ybUVycm9yKG15X21zZykKKy0KKy0gICAgIyBPbiBBSVgsIHRoZXJlIGFyZSB3cm9uZyBwYXRocyB0byB0aGUgbGlua2VyIHNjcmlwdHMgaW4gdGhlIE1ha2VmaWxlCistICAgICMgLS0gdGhlc2UgcGF0aHMgYXJlIHJlbGF0aXZlIHRvIHRoZSBQeXRob24gc291cmNlLCBidXQgd2hlbiBpbnN0YWxsZWQKKy0gICAgIyB0aGUgc2NyaXB0cyBhcmUgaW4gYW5vdGhlciBkaXJlY3RvcnkuCistICAgIGlmIHB5dGhvbl9idWlsZDoKKy0gICAgICAgIGdbJ0xEU0hBUkVEJ10gPSBnWydCTERTSEFSRUQnXQorLQorKyAgICAjIF9zeXNjb25maWdkYXRhIGlzIGdlbmVyYXRlZCBhdCBidWlsZCB0aW1lLCBzZWUgdGhlIHN5c2NvbmZpZyBtb2R1bGUKKysgICAgZnJvbSBfc3lzY29uZmlnZGF0YSBpbXBvcnQgYnVpbGRfdGltZV92YXJzCisgICAgIGdsb2JhbCBfY29uZmlnX3ZhcnMKKy0gICAgX2NvbmZpZ192YXJzID0gZworKyAgICBfY29uZmlnX3ZhcnMgPSB7fQorKyAgICBfY29uZmlnX3ZhcnMudXBkYXRlKGJ1aWxkX3RpbWVfdmFycykKKyAKKyAKKyBkZWYgX2luaXRfbnQoKToKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtY3Jvc3MtY29tcGlsZS1zdXBwb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLWNyb3NzLWNvbXBpbGUtc3VwcG9ydC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMThkNzVkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLWNyb3NzLWNvbXBpbGUtc3VwcG9ydC5wYXRjaApAQCAtMCwwICsxLDkzIEBACitGcm9tIDYyNGMwMjlhYmNjNzNjNzI0MDIwY2NlYTlhMmI0YjViNWMwMGYyYTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMzEgTWFyIDIwMTcgMTU6NDI6NDYgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gY3Jvc3MtY29tcGlsZSBzdXBwb3J0CisKK1dlIGNyb3NzIGNvbXBpbGUgcHl0aG9uLiBUaGlzIHBhdGNoIHVzZXMgdG9vbHMgZnJvbSBob3N0L25hdGl2ZQorcHl0aG9uIGluc3RlYWQgb2YgaW4tdHJlZSB0b29scworCistS2hlbQorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGVbQ29uZmlndXJhdGlvbiBTcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgTWFrZWZpbGUucHJlLmluIHwgMTQgKysrKysrKystLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUucHJlLmluIGIvTWFrZWZpbGUucHJlLmluCitpbmRleCBhODhiN2Q1Li43Y2I4YmIzIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUucHJlLmluCisrKysgYi9NYWtlZmlsZS5wcmUuaW4KK0BAIC0yMjEsNiArMjIxLDcgQEAgTElCT0JKUz0JQExJQk9CSlNACisgCisgUFlUSE9OPQkJcHl0aG9uJChFWEUpCisgQlVJTERQWVRIT049CXB5dGhvbiQoQlVJTERFWEUpCisrSE9TVFBZVEhPTj0gICAgJChCVUlMRFBZVEhPTikKKyAKKyBQWVRIT05fRk9SX0dFTj1AUFlUSE9OX0ZPUl9HRU5ACisgUFlUSE9OX0ZPUl9CVUlMRD1AUFlUSE9OX0ZPUl9CVUlMREAKK0BAIC0yODAsNiArMjgxLDcgQEAgTElCRkZJX0lOQ0xVREVESVI9CUBMSUJGRklfSU5DTFVERURJUkAKKyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworICMgUGFyc2VyCisgUEdFTj0JCVBhcnNlci9wZ2VuJChFWEUpCisrSE9TVFBHRU49CSQoUEdFTikkKEVYRSkKKyAKKyBQU1JDUz0JCVwKKyAJCVBhcnNlci9hY2NlbGVyLmMgXAorQEAgLTUxMCw3ICs1MTIsNyBAQCBidWlsZF9hbGxfZ2VuZXJhdGVfcHJvZmlsZToKKyAKKyBydW5fcHJvZmlsZV90YXNrOgorIAk6ICMgRklYTUU6IGNhbid0IHJ1biBmb3IgYSBjcm9zcyBidWlsZAorLQkkKExMVk1fUFJPRl9GSUxFKSAkKFJVTlNIQVJFRCkgLi8kKEJVSUxEUFlUSE9OKSAkKFBST0ZJTEVfVEFTSykgfHwgdHJ1ZQorKwkkKExMVk1fUFJPRl9GSUxFKSAkKFJVTlNIQVJFRCkgJChIT1NUUFlUSE9OKSAkKFBST0ZJTEVfVEFTSykgfHwgdHJ1ZQorIAorIGJ1aWxkX2FsbF9tZXJnZV9wcm9maWxlOgorIAkkKExMVk1fUFJPRl9NRVJHRVIpCitAQCAtNzg3LDcgKzc4OSw3IEBAICQoSU9fT0JKUyk6ICQoSU9fSCkKKyAKKyAkKEdSQU1NQVJfSCk6IEBHRU5FUkFURURfQ09NTUVOVEAgJChHUkFNTUFSX0lOUFVUKSAkKFBHRU4pCisgCUAkKE1LRElSX1ApIEluY2x1ZGUKKy0JJChQR0VOKSAkKEdSQU1NQVJfSU5QVVQpICQoR1JBTU1BUl9IKSAkKEdSQU1NQVJfQykKKysJJChIT1NUUEdFTikgJChHUkFNTUFSX0lOUFVUKSAkKEdSQU1NQVJfSCkgJChHUkFNTUFSX0MpCisgJChHUkFNTUFSX0MpOiBAR0VORVJBVEVEX0NPTU1FTlRAICQoR1JBTU1BUl9IKQorIAl0b3VjaCAkKEdSQU1NQVJfQykKKyAKK0BAIC05NzYsNyArOTc4LDcgQEAgJChMSUJSQVJZX09CSlMpICQoTU9ET0JKUykgUHJvZ3JhbXMvcHl0aG9uLm86ICQoUFlUSE9OX0hFQURFUlMpCisgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIAorIFRFU1RPUFRTPQkkKEVYVFJBVEVTVE9QVFMpCistVEVTVFBZVEhPTj0JJChSVU5TSEFSRUQpIC4vJChCVUlMRFBZVEhPTikgJChURVNUUFlUSE9OT1BUUykKKytURVNUUFlUSE9OPQkkKFJVTlNIQVJFRCkgJChIT1NUUFlUSE9OKSAkKFRFU1RQWVRIT05PUFRTKQorIFRFU1RSVU5ORVI9CSQoVEVTVFBZVEhPTikgJChzcmNkaXIpL1Rvb2xzL3NjcmlwdHMvcnVuX3Rlc3RzLnB5CisgVEVTVFRJTUVPVVQ9CTM2MDAKKyAKK0BAIC0xNDY4LDcgKzE0NzAsNyBAQCBmcmFtZXdvcmtpbnN0YWxsc3RydWN0dXJlOgkkKExETElCUkFSWSkKKyAJCWZpOyBcCisgCWRvbmUKKyAJJChMTikgLWZzbiBpbmNsdWRlL3B5dGhvbiQoTERWRVJTSU9OKSAkKERFU1RESVIpJChwcmVmaXgpL0hlYWRlcnMKKy0Jc2VkICdzLyVWRVJTSU9OJS8nImAkKFJVTlNIQVJFRCkgLi8kKEJVSUxEUFlUSE9OKSAtYyAnaW1wb3J0IHBsYXRmb3JtOyBwcmludChwbGF0Zm9ybS5weXRob25fdmVyc2lvbigpKSdgIicvZycgPCAkKFJFU1NSQ0RJUikvSW5mby5wbGlzdCA+ICQoREVTVERJUikkKHByZWZpeCkvUmVzb3VyY2VzL0luZm8ucGxpc3QKKysJc2VkICdzLyVWRVJTSU9OJS8nImAkKFJVTlNIQVJFRCkgJChIT1NUUFlUSE9OKSAtYyAnaW1wb3J0IHBsYXRmb3JtOyBwcmludChwbGF0Zm9ybS5weXRob25fdmVyc2lvbigpKSdgIicvZycgPCAkKFJFU1NSQ0RJUikvSW5mby5wbGlzdCA+ICQoREVTVERJUikkKHByZWZpeCkvUmVzb3VyY2VzL0luZm8ucGxpc3QKKyAJJChMTikgLWZzbiAkKFZFUlNJT04pICQoREVTVERJUikkKFBZVEhPTkZSQU1FV09SS0lOU1RBTExESVIpL1ZlcnNpb25zL0N1cnJlbnQKKyAJJChMTikgLWZzbiBWZXJzaW9ucy9DdXJyZW50LyQoUFlUSE9ORlJBTUVXT1JLKSAkKERFU1RESVIpJChQWVRIT05GUkFNRVdPUktJTlNUQUxMRElSKS8kKFBZVEhPTkZSQU1FV09SSykKKyAJJChMTikgLWZzbiBWZXJzaW9ucy9DdXJyZW50L0hlYWRlcnMgJChERVNURElSKSQoUFlUSE9ORlJBTUVXT1JLSU5TVEFMTERJUikvSGVhZGVycworQEAgLTE1MzQsNyArMTUzNiw3IEBAIGNvbmZpZy5zdGF0dXM6CSQoc3JjZGlyKS9jb25maWd1cmUKKyAKKyAjIFJ1biByZWluZGVudCBvbiB0aGUgbGlicmFyeQorIHJlaW5kZW50OgorLQkuLyQoQlVJTERQWVRIT04pICQoc3JjZGlyKS9Ub29scy9zY3JpcHRzL3JlaW5kZW50LnB5IC1yICQoc3JjZGlyKS9MaWIKKysJJChIT1NUUFlUSE9OKSAkKHNyY2RpcikvVG9vbHMvc2NyaXB0cy9yZWluZGVudC5weSAtciAkKHNyY2RpcikvTGliCisgCisgIyBSZXJ1biBjb25maWd1cmUgd2l0aCB0aGUgc2FtZSBvcHRpb25zIGFzIGl0IHdhcyBydW4gbGFzdCB0aW1lLAorICMgcHJvdmlkZWQgdGhlIGNvbmZpZy5zdGF0dXMgc2NyaXB0IGV4aXN0cworQEAgLTE2NzQsNyArMTY3Niw3IEBAIGZ1bm55OgorIAorICMgUGVyZm9ybSBzb21lIHZlcmlmaWNhdGlvbiBjaGVja3Mgb24gYW55IG1vZGlmaWVkIGZpbGVzLgorIHBhdGNoY2hlY2s6IGFsbAorLQkkKFJVTlNIQVJFRCkgLi8kKEJVSUxEUFlUSE9OKSAkKHNyY2RpcikvVG9vbHMvc2NyaXB0cy9wYXRjaGNoZWNrLnB5CisrCSQoUlVOU0hBUkVEKSAuLyQoSE9TVFBZVEhPTikgJChzcmNkaXIpL1Rvb2xzL3NjcmlwdHMvcGF0Y2hjaGVjay5weQorIAorICMgRGVwZW5kZW5jaWVzCisgCistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL0ZpeC0yOTUxOS13ZWFrcmVmLXNwZXdpbmctZXhjZXB0aW9ucy1kdXJpbmctaW50ZXJwLWYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL0ZpeC0yOTUxOS13ZWFrcmVmLXNwZXdpbmctZXhjZXB0aW9ucy1kdXJpbmctaW50ZXJwLWYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzIxN2M2ZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvRml4LTI5NTE5LXdlYWtyZWYtc3Bld2luZy1leGNlcHRpb25zLWR1cmluZy1pbnRlcnAtZi5wYXRjaApAQCAtMCwwICsxLDU2IEBACitGcm9tIDYyZGNmMzQ5ODdiNjgwZTk1ODczZWI5NDdiM2Y0ZDgwMjE5OWM2NjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/PUM1PTgxdWthc3o9MjBMYW5nYT89IDxsdWthc3pAbGFuZ2EucGw+CitEYXRlOiBGcmksIDEwIEZlYiAyMDE3IDAwOjE0OjU1IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCAjMjk1MTk6IHdlYWtyZWYgc3Bld2luZyBleGNlcHRpb25zIGR1cmluZyBpbnRlcnAKKyBmaW5hbGl6YXRpb24KKworY29tbWl0IDljZDdlMTc2NDBhNDk2MzVkMWMxZjhjMjk4OTU3OGE4ZmMyYzFkZTYKK2Zyb20gaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogTHVrYXN6IExhbmdhIDxsdWthc3pAbGFuZ2EucGw+CistLS0KKyBMaWIvd2Vha3JlZi5weSB8IDQgKystLQorIE1pc2MvTkVXUyAgICAgIHwgMyArKysKKyAyIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL0xpYi93ZWFrcmVmLnB5IGIvTGliL3dlYWtyZWYucHkKK2luZGV4IGFhZWJkMGMuLjc4N2UzM2EgMTAwNjQ0CistLS0gYS9MaWIvd2Vha3JlZi5weQorKysrIGIvTGliL3dlYWtyZWYucHkKK0BAIC0xMDYsNyArMTA2LDcgQEAgY2xhc3MgV2Vha1ZhbHVlRGljdGlvbmFyeShjb2xsZWN0aW9ucy5NdXRhYmxlTWFwcGluZyk6CisgICAgICAgICBzZWxmLCAqYXJncyA9IGFyZ3MKKyAgICAgICAgIGlmIGxlbihhcmdzKSA+IDE6CisgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdleHBlY3RlZCBhdCBtb3N0IDEgYXJndW1lbnRzLCBnb3QgJWQnICUgbGVuKGFyZ3MpKQorLSAgICAgICAgZGVmIHJlbW92ZSh3ciwgc2VsZnJlZj1yZWYoc2VsZikpOgorKyAgICAgICAgZGVmIHJlbW92ZSh3ciwgc2VsZnJlZj1yZWYoc2VsZiksIF9hdG9taWNfcmVtb3ZhbD1fcmVtb3ZlX2RlYWRfd2Vha3JlZik6CisgICAgICAgICAgICAgc2VsZiA9IHNlbGZyZWYoKQorICAgICAgICAgICAgIGlmIHNlbGYgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgIGlmIHNlbGYuX2l0ZXJhdGluZzoKK0BAIC0xMTQsNyArMTE0LDcgQEAgY2xhc3MgV2Vha1ZhbHVlRGljdGlvbmFyeShjb2xsZWN0aW9ucy5NdXRhYmxlTWFwcGluZyk6CisgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAjIEF0b21pYyByZW1vdmFsIGlzIG5lY2Vzc2FyeSBzaW5jZSB0aGlzIGZ1bmN0aW9uCisgICAgICAgICAgICAgICAgICAgICAjIGNhbiBiZSBjYWxsZWQgYXN5bmNocm9ub3VzbHkgYnkgdGhlIEdDCistICAgICAgICAgICAgICAgICAgICBfcmVtb3ZlX2RlYWRfd2Vha3JlZihkLCB3ci5rZXkpCisrICAgICAgICAgICAgICAgICAgICBfYXRvbWljX3JlbW92YWwoZCwgd3Iua2V5KQorICAgICAgICAgc2VsZi5fcmVtb3ZlID0gcmVtb3ZlCisgICAgICAgICAjIEEgbGlzdCBvZiBrZXlzIHRvIGJlIHJlbW92ZWQKKyAgICAgICAgIHNlbGYuX3BlbmRpbmdfcmVtb3ZhbHMgPSBbXQorZGlmZiAtLWdpdCBhL01pc2MvTkVXUyBiL01pc2MvTkVXUworaW5kZXggNDFjZmRiYS4uNmQ4OWY1MiAxMDA2NDQKKy0tLSBhL01pc2MvTkVXUworKysrIGIvTWlzYy9ORVdTCitAQCAtNTcxOSw2ICs1NzE5LDkgQEAgQ29yZSBhbmQgQnVpbHRpbnMKKyBMaWJyYXJ5CisgLS0tLS0tLQorIAorKy0gSXNzdWUgIzI5NTE5OiBGaXggd2Vha3JlZiBzcGV3aW5nIGV4Y2VwdGlvbnMgZHVyaW5nIGludGVycHJldGVyIHNodXRkb3duCisrICB3aGVuIHVzZWQgd2l0aCBhIHJhcmUgY29tYmluYXRpb24gb2YgbXVsdGlwcm9jZXNzaW5nIGFuZCBjdXN0b20gY29kZWNzLgorKworIC0gSXNzdWUgIzIwMTU0OiBEZWFkbG9jayBpbiBhc3luY2lvLlN0cmVhbVJlYWRlci5yZWFkZXhhY3RseSgpLgorIAorIC0gSXNzdWUgIzE2MTEzOiBSZW1vdmUgc2hhMyBtb2R1bGUgYWdhaW4uCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcGFzcy1taXNzaW5nLWxpYnJhcmllcy10by1FeHRlbnNpb24tZm9yLW11bC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcGFzcy1taXNzaW5nLWxpYnJhcmllcy10by1FeHRlbnNpb24tZm9yLW11bC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YzNhZjZiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9wYXNzLW1pc3NpbmctbGlicmFyaWVzLXRvLUV4dGVuc2lvbi1mb3ItbXVsLnBhdGNoCkBAIC0wLDAgKzEsODIgQEAKK0Zyb20gYTc4NGI3MGQ0N2JhMjEwNGFmYmNmZDgwNWUyYTY2Y2RjMjEwOWVjNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IEZyaSwgNCBBdWcgMjAxNyAxMToxNjoxNCArMDgwMAorU3ViamVjdDogW1BBVENIXSBzZXR1cC5weTogcGFzcyBtaXNzaW5nIGxpYnJhcmllcyB0byBFeHRlbnNpb24gZm9yIG11bHRpcHJvY2Vzc2luZyBtb2R1bGUKKworSW4gdGhlIGZvbGxvd2luZyBjb21taXQ6CisuLi4KK2NvbW1pdCBlNzExY2FmYWIxM2VmYzljMWZlNmM1Y2Q3NTgyNjQwMTQ0NWViNTg1CitBdXRob3I6IEJlbmphbWluIFBldGVyc29uIDxiZW5qYW1pbkBweXRob24ub3JnPgorRGF0ZTogICBXZWQgSnVuIDExIDE2OjQ0OjA0IDIwMDggKzAwMDAKKworICAgIE1lcmdlZCByZXZpc2lvbnMgNjQxMDQsNjQxMTcgdmlhIHN2bm1lcmdlIGZyb20KKyAgICBzdm4rc3NoOi8vcHl0aG9uZGV2QHN2bi5weXRob24ub3JnL3B5dGhvbi90cnVuaworLi4uCisoc2VlIGRpZmYgaW4gc2V0dXAucHkpCitJdCBhc3NpZ25lZCBsaWJyYXJpZXMgZm9yIG11bHRpcHJvY2Vzc2luZyBtb2R1bGUgYWNjb3JkaW5nCit0aGUgaG9zdF9wbGF0Zm9ybSwgYnV0IG5vdCBwYXNzIGl0IHRvIEV4dGVuc2lvbi4KKworSW4gZ2xpYmMsIHRoZSBmb2xsb3dpbmcgY29tbWl0IGNhdXNlZCB0d28gZGVmaW5pdGlvbiBvZgorc2VtX2dldHZhbHVlIGFyZSBkaWZmZXJlbnQuCitodHRwczovL3NvdXJjZXdhcmUub3JnL2dpdC8/cD1nbGliYy5naXQ7YT1jb21taXQ7aD0wNDJlMTUyMWM3OTRhOTQ1ZWRjNDNiNWJmYTdlNjlhZDcwNDIwNTI0Cisoc2VlIGRpZmYgaW4gbnB0bC9zZW1fZ2V0dmFsdWUuYyBmb3IgZGV0YWlsKQorYF9fbmV3X3NlbV9nZXR2YWx1ZScgaXMgdGhlIGxhdGVzdCBzZW1fZ2V0dmFsdWVAQEdMSUJDXzIuMQorYW5kIGBfX29sZF9zZW1fZ2V0dmFsdWUnIGlzIHRvIGNvbXBhdCB0aGUgb2xkIHZlcnNpb24KK3NlbV9nZXR2YWx1ZUBHTElCQ18yLjAuCisKK1RvIGJ1aWxkIHB5dGhvbiBmb3IgZW1iZWRkZWQgTGludXggc3lzdGVtczoKK2h0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzIuMy4xL3lvY3RvLXByb2plY3QtcXMveW9jdG8tcHJvamVjdC1xcy5odG1sCitJZiBub3QgZXhwbGljaXRseSBsaW5rIHRvIGxpYnJhcnkgcHRocmVhZCAoLWxwdGhyZWFkKSwgaXQgd2lsbAorbG9hZCBnbGliYydzIHNlbV9nZXR2YWx1ZSByYW5kb21seSBhdCBydW50aW1lLgorCitTdWNoIGFzIGJ1aWxkIHB5dGhvbiBvbiBsaW51eCB4ODZfNjQgaG9zdCBhbmQgcnVuIHRoZSBweXRob24KK29uIGxpbnV4IHg4Nl8zMiB0YXJnZXQuIElmIG5vdCBsaW5rIGxpYnJhcnkgcHRocmVhZCwgaXQgY2F1c2VkCittdWx0aXByb2Nlc3NpbmcgYm91bmRlZCBzZW1hcGhvcmUgY291bGQgbm90IHdvcmsgY29ycmVjdGx5LgorLi4uCis+Pj4gaW1wb3J0IG11bHRpcHJvY2Vzc2luZworPj4+IHBvb2xfc2VtYSA9IG11bHRpcHJvY2Vzc2luZy5Cb3VuZGVkU2VtYXBob3JlKHZhbHVlPTEpCis+Pj4gcG9vbF9zZW1hLmFjcXVpcmUoKQorVHJ1ZQorPj4+IHBvb2xfc2VtYS5yZWxlYXNlKCkKK1RyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KK1ZhbHVlRXJyb3I6IHNlbWFwaG9yZSBvciBsb2NrIHJlbGVhc2VkIHRvbyBtYW55IHRpbWVzCisuLi4KKworQW5kIHRoZSBzZW1hcGhvcmUgaXNzdWUgYWxzbyBjYXVzZWQgbXVsdGlwcm9jZXNzaW5nLlF1ZXVlKCkucHV0KCkgaHVuZy4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vY3B5dGhvbi9wdWxsLzI5OTldCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIHNldHVwLnB5IHwgNyArKysrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0dXAucHkKK2luZGV4IDRmMGY1MjIuLmQwNTcwN2QgMTAwNjQ0CistLS0gYS9zZXR1cC5weQorKysrIGIvc2V0dXAucHkKK0BAIC0xNjA2LDggKzE2MDYsMTAgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgorICAgICAgICAgZWxpZiBob3N0X3BsYXRmb3JtLnN0YXJ0c3dpdGgoJ25ldGJzZCcpOgorICAgICAgICAgICAgIG1hY3JvcyA9IGRpY3QoKQorICAgICAgICAgICAgIGxpYnJhcmllcyA9IFtdCistCistICAgICAgICBlbHNlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBMaW51eCBhbmQgb3RoZXIgdW5pY2VzCisrICAgICAgICBlbGlmIGhvc3RfcGxhdGZvcm0uc3RhcnRzd2l0aCgoJ2xpbnV4JykpOgorKyAgICAgICAgICAgIG1hY3JvcyA9IGRpY3QoKQorKyAgICAgICAgICAgIGxpYnJhcmllcyA9IFsncHRocmVhZCddCisrICAgICAgICBlbHNlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBPdGhlciB1bmljZXMKKyAgICAgICAgICAgICBtYWNyb3MgPSBkaWN0KCkKKyAgICAgICAgICAgICBsaWJyYXJpZXMgPSBbJ3J0J10KKyAKK0BAIC0xNjI2LDYgKzE2MjgsNyBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6CisgICAgICAgICBpZiBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1dJVEhfVEhSRUFEJyk6CisgICAgICAgICAgICAgZXh0cy5hcHBlbmQgKCBFeHRlbnNpb24oJ19tdWx0aXByb2Nlc3NpbmcnLCBtdWx0aXByb2Nlc3Npbmdfc3JjcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zPWxpc3QobWFjcm9zLml0ZW1zKCkpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcz1saWJyYXJpZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZV9kaXJzPVsiTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nIl0pKQorICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICBtaXNzaW5nLmFwcGVuZCgnX211bHRpcHJvY2Vzc2luZycpCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcHl0aG9uMy1maXgtQ1ZFLTIwMTYtMTAwMDExMC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcHl0aG9uMy1maXgtQ1ZFLTIwMTYtMTAwMDExMC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWIxYjcyMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3B5dGhvbjMtZml4LUNWRS0yMDE2LTEwMDAxMTAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNDggKzAsMCBAQAotRnJvbSBhYWIzZThjNDMyYjkwNTA4YWMxNDc1NTEyOGY1YTY4N2JlMmZkZjQzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWluZ2xpIFl1IDxNaW5nbGkuWXVAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgMjIgU2VwIDIwMTYgMTY6Mzk6NDkgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gcHl0aG9uMzogZml4IENWRS0yMDE2LTEwMDAxMTAKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotSWdub3JlIHRoZSBIVFRQX1BST1hZIHZhcmlhYmxlIHdoZW4gUkVRVUVTVF9NRVRIT0QgZW52aXJvbm1lbnQgaXMgc2V0LCB3aGljaAotaW5kaWNhdGVzIHRoYXQgdGhlIHNjcmlwdCBpcyBpbiBDR0kgbW9kZS4KLQotSXNzdWUgIzI3NTY4IFJlcG9ydGVkIGFuZCBwYXRjaCBjb250cmlidXRlZCBieSBSw6ltaSBSYW1waW4uIFsjMjc1NjhdCi0KLUJhY2twb3J0IHBhdGNoIGZyb20gaHR0cHM6Ly9oZy5weXRob24ub3JnL2NweXRob24vcmV2L2EwYWM1MmVkOGY3OQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE2LTEwMDAxMTAKLVNpZ25lZC1vZmYtYnk6IE1pbmdsaSBZdSA8TWluZ2xpLll1QHdpbmRyaXZlci5jb20+Ci0tLS0KLSBEb2MvaG93dG8vdXJsbGliMi5yc3QgICAgICAgICAgfCAgNSArKysrKwotIERvYy9saWJyYXJ5L3VybGxpYi5yZXF1ZXN0LnJzdCB8IDE3ICsrKysrKysrKysrKysrKystCi0gTGliL3Rlc3QvdGVzdF91cmxsaWIucHkgICAgICAgIHwgMTQgKysrKysrKysrKysrKy0KLSBMaWIvdXJsbGliL3JlcXVlc3QucHkgICAgICAgICAgfCAgNiArKysrKysKLSBNaXNjL05FV1MgICAgICAgICAgICAgICAgICAgICAgfCAgNCArKysrCi0gNSBmaWxlcyBjaGFuZ2VkLCA0NCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvRG9jL2hvd3RvL3VybGxpYjIucnN0IGIvRG9jL2hvd3RvL3VybGxpYjIucnN0Ci1pbmRleCAyNGE0MTU2Li5kMmM3OTkxIDEwMDY0NAotLS0tIGEvRG9jL2hvd3RvL3VybGxpYjIucnN0Ci0rKysgYi9Eb2MvaG93dG8vdXJsbGliMi5yc3QKLUBAIC01MzgsNiArNTM4LDExIEBAIHNldHRpbmcgdXAgYSBgQmFzaWMgQXV0aGVudGljYXRpb25gXyBoYW5kbGVyOiA6OgotICAgICB0aHJvdWdoIGEgcHJveHkuICBIb3dldmVyLCB0aGlzIGNhbiBiZSBlbmFibGVkIGJ5IGV4dGVuZGluZyB1cmxsaWIucmVxdWVzdCBhcwotICAgICBzaG93biBpbiB0aGUgcmVjaXBlIFsjXV8uCi0gCi0rLi4gbm90ZTo6Ci0rCi0rICAgIGBgSFRUUF9QUk9YWWBgIHdpbGwgYmUgaWdub3JlZCBpZiBhIHZhcmlhYmxlIGBgUkVRVUVTVF9NRVRIT0RgYCBpcyBzZXQ7IHNlZQotKyAgICB0aGUgZG9jdW1lbnRhdGlvbiBvbiA6ZnVuYzpgfnVybGxpYi5yZXF1ZXN0LmdldHByb3hpZXNgLgotKwotIAotIFNvY2tldHMgYW5kIExheWVycwotID09PT09PT09PT09PT09PT09PQotZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3VybGxpYi5yZXF1ZXN0LnJzdCBiL0RvYy9saWJyYXJ5L3VybGxpYi5yZXF1ZXN0LnJzdAotaW5kZXggMTMzODkwNi4uMTI5MWFlYiAxMDA2NDQKLS0tLSBhL0RvYy9saWJyYXJ5L3VybGxpYi5yZXF1ZXN0LnJzdAotKysrIGIvRG9jL2xpYnJhcnkvdXJsbGliLnJlcXVlc3QucnN0Ci1AQCAtMTczLDYgKzE3MywxNiBAQCBUaGUgOm1vZDpgdXJsbGliLnJlcXVlc3RgIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOgotICAgIElmIGJvdGggbG93ZXJjYXNlIGFuZCB1cHBlcmNhc2UgZW52aXJvbm1lbnQgdmFyaWFibGVzIGV4aXN0IChhbmQgZGlzYWdyZWUpLAotICAgIGxvd2VyY2FzZSBpcyBwcmVmZXJyZWQuCi0gCi0rICAgIC4uIG5vdGU6OgotKwotKyAgICAgICBJZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgYGBSRVFVRVNUX01FVEhPRGBgIGlzIHNldCwgd2hpY2ggdXN1YWxseQotKyAgICAgICBpbmRpY2F0ZXMgeW91ciBzY3JpcHQgaXMgcnVubmluZyBpbiBhIENHSSBlbnZpcm9ubWVudCwgdGhlIGVudmlyb25tZW50Ci0rICAgICAgIHZhcmlhYmxlIGBgSFRUUF9QUk9YWWBgICh1cHBlcmNhc2UgYGBfUFJPWFlgYCkgd2lsbCBiZSBpZ25vcmVkLiBUaGlzIGlzCi0rICAgICAgIGJlY2F1c2UgdGhhdCB2YXJpYWJsZSBjYW4gYmUgaW5qZWN0ZWQgYnkgYSBjbGllbnQgdXNpbmcgdGhlICJQcm94eToiIEhUVFAKLSsgICAgICAgaGVhZGVyLiBJZiB5b3UgbmVlZCB0byB1c2UgYW4gSFRUUCBwcm94eSBpbiBhIENHSSBlbnZpcm9ubWVudCwgZWl0aGVyIHVzZQotKyAgICAgICBgYFByb3h5SGFuZGxlcmBgIGV4cGxpY2l0bHksIG9yIG1ha2Ugc3VyZSB0aGUgdmFyaWFibGUgbmFtZSBpcyBpbgotKyAgICAgICBsb3dlcmNhc2UgKG9yIGF0IGxlYXN0IHRoZSBgYF9wcm94eWBgIHN1ZmZpeCkuCi0rCi0gCi0gVGhlIGZvbGxvd2luZyBjbGFzc2VzIGFyZSBwcm92aWRlZDoKLSAKLUBAIC0yODAsNiArMjkwLDExIEBAIFRoZSBmb2xsb3dpbmcgY2xhc3NlcyBhcmUgcHJvdmlkZWQ6Ci0gICAgbGlzdCBvZiBob3N0bmFtZSBzdWZmaXhlcywgb3B0aW9uYWxseSB3aXRoIGBgOnBvcnRgYCBhcHBlbmRlZCwgZm9yIGV4YW1wbGUKLSAgICBgYGNlcm4uY2gsbmNzYS51aXVjLmVkdSxzb21lLmhvc3Q6ODA4MGBgLgotIAotKyAgICAuLiBub3RlOjoKLSsKLSsgICAgICAgYGBIVFRQX1BST1hZYGAgd2lsbCBiZSBpZ25vcmVkIGlmIGEgdmFyaWFibGUgYGBSRVFVRVNUX01FVEhPRGBgIGlzIHNldDsKLSsgICAgICAgc2VlIHRoZSBkb2N1bWVudGF0aW9uIG9uIDpmdW5jOmB+dXJsbGliLnJlcXVlc3QuZ2V0cHJveGllc2AuCi0rCi0gCi0gLi4gY2xhc3M6OiBIVFRQUGFzc3dvcmRNZ3IoKQotIAotQEAgLTExMzgsNyArMTE1Myw3IEBAIHRoZSByZXR1cm5lZCBieXRlcyBvYmplY3QgdG8gc3RyaW5nIG9uY2UgaXQgZGV0ZXJtaW5lcyBvciBndWVzc2VzCi0gdGhlIGFwcHJvcHJpYXRlIGVuY29kaW5nLgotIAotIFRoZSBmb2xsb3dpbmcgVzNDIGRvY3VtZW50LCBodHRwczovL3d3dy53My5vcmcvSW50ZXJuYXRpb25hbC9PLWNoYXJzZXRcICwgbGlzdHMKLS10aGUgdmFyaW91cyB3YXlzIGluIHdoaWNoIGEgKFgpSFRNTCBvciBhIFhNTCBkb2N1bWVudCBjb3VsZCBoYXZlIHNwZWNpZmllZCBpdHMKLSt0aGUgdmFyaW91cyB3YXlzIGluIHdoaWNoIGFuIChYKUhUTUwgb3IgYW4gWE1MIGRvY3VtZW50IGNvdWxkIGhhdmUgc3BlY2lmaWVkIGl0cwotIGVuY29kaW5nIGluZm9ybWF0aW9uLgotIAotIEFzIHRoZSBweXRob24ub3JnIHdlYnNpdGUgdXNlcyAqdXRmLTgqIGVuY29kaW5nIGFzIHNwZWNpZmllZCBpbiBpdHMgbWV0YSB0YWcsIHdlCi1kaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91cmxsaWIucHkgYi9MaWIvdGVzdC90ZXN0X3VybGxpYi5weQotaW5kZXggNWQwNWY4ZC4uMjQ3NTk4YSAxMDA2NDQKLS0tLSBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliLnB5Ci0rKysgYi9MaWIvdGVzdC90ZXN0X3VybGxpYi5weQotQEAgLTEsNCArMSw0IEBACi0tIiIiUmVncmVzc3Npb24gdGVzdHMgZm9yIHdoYXQgd2FzIGluIFB5dGhvbiAyJ3MgInVybGxpYiIgbW9kdWxlIiIiCi0rIiIiUmVncmVzc2lvbiB0ZXN0cyBmb3Igd2hhdCB3YXMgaW4gUHl0aG9uIDIncyAidXJsbGliIiBtb2R1bGUiIiIKLSAKLSBpbXBvcnQgdXJsbGliLnBhcnNlCi0gaW1wb3J0IHVybGxpYi5yZXF1ZXN0Ci1AQCAtMjMyLDYgKzIzMiwxOCBAQCBjbGFzcyBQcm94eVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh1cmxsaWIucmVxdWVzdC5wcm94eV9ieXBhc3NfZW52aXJvbm1lbnQoJ2Fub3RoZXJkb21haW4uY29tOjg4ODgnKSkKLSAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh1cmxsaWIucmVxdWVzdC5wcm94eV9ieXBhc3NfZW52aXJvbm1lbnQoJ25ld2RvbWFpbi5jb206MTIzNCcpKQotIAotKyAgICBkZWYgdGVzdF9wcm94eV9jZ2lfaWdub3JlKHNlbGYpOgotKyAgICAgICAgdHJ5OgotKyAgICAgICAgICAgIHNlbGYuZW52LnNldCgnSFRUUF9QUk9YWScsICdodHRwOi8vc29tZXdoZXJlOjMxMjgnKQotKyAgICAgICAgICAgIHByb3hpZXMgPSB1cmxsaWIucmVxdWVzdC5nZXRwcm94aWVzX2Vudmlyb25tZW50KCkKLSsgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdodHRwOi8vc29tZXdoZXJlOjMxMjgnLCBwcm94aWVzWydodHRwJ10pCi0rICAgICAgICAgICAgc2VsZi5lbnYuc2V0KCdSRVFVRVNUX01FVEhPRCcsICdHRVQnKQotKyAgICAgICAgICAgIHByb3hpZXMgPSB1cmxsaWIucmVxdWVzdC5nZXRwcm94aWVzX2Vudmlyb25tZW50KCkKLSsgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdodHRwJywgcHJveGllcykKLSsgICAgICAgIGZpbmFsbHk6Ci0rICAgICAgICAgICAgc2VsZi5lbnYudW5zZXQoJ1JFUVVFU1RfTUVUSE9EJykKLSsgICAgICAgICAgICBzZWxmLmVudi51bnNldCgnSFRUUF9QUk9YWScpCi0rCi0gICAgIGRlZiB0ZXN0X3Byb3h5X2J5cGFzc19lbnZpcm9ubWVudF9ob3N0X21hdGNoKHNlbGYpOgotICAgICAgICAgYnlwYXNzID0gdXJsbGliLnJlcXVlc3QucHJveHlfYnlwYXNzX2Vudmlyb25tZW50Ci0gICAgICAgICBzZWxmLmVudi5zZXQoJ05PX1BST1hZJywKLWRpZmYgLS1naXQgYS9MaWIvdXJsbGliL3JlcXVlc3QucHkgYi9MaWIvdXJsbGliL3JlcXVlc3QucHkKLWluZGV4IDE3MzFmZTMuLjNiZTMyN2QgMTAwNjQ0Ci0tLS0gYS9MaWIvdXJsbGliL3JlcXVlc3QucHkKLSsrKyBiL0xpYi91cmxsaWIvcmVxdWVzdC5weQotQEAgLTI0MTIsNiArMjQxMiwxMiBAQCBkZWYgZ2V0cHJveGllc19lbnZpcm9ubWVudCgpOgotICAgICAgICAgbmFtZSA9IG5hbWUubG93ZXIoKQotICAgICAgICAgaWYgdmFsdWUgYW5kIG5hbWVbLTY6XSA9PSAnX3Byb3h5JzoKLSAgICAgICAgICAgICBwcm94aWVzW25hbWVbOi02XV0gPSB2YWx1ZQotKyAgICAjIENWRS0yMDE2LTEwMDAxMTAgLSBJZiB3ZSBhcmUgcnVubmluZyBhcyBDR0kgc2NyaXB0LCBmb3JnZXQgSFRUUF9QUk9YWQotKyAgICAjIChub24tYWxsLWxvd2VyY2FzZSkgYXMgaXQgbWF5IGJlIHNldCBmcm9tIHRoZSB3ZWIgc2VydmVyIGJ5IGEgIlByb3h5OiIKLSsgICAgIyBoZWFkZXIgZnJvbSB0aGUgY2xpZW50Ci0rICAgICMgSWYgInByb3h5IiBpcyBsb3dlcmNhc2UsIGl0IHdpbGwgc3RpbGwgYmUgdXNlZCB0aGFua3MgdG8gdGhlIG5leHQgYmxvY2sKLSsgICAgaWYgJ1JFUVVFU1RfTUVUSE9EJyBpbiBvcy5lbnZpcm9uOgotKyAgICAgICAgcHJveGllcy5wb3AoJ2h0dHAnLCBOb25lKQotICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gb3MuZW52aXJvbi5pdGVtcygpOgotICAgICAgICAgaWYgbmFtZVstNjpdID09ICdfcHJveHknOgotICAgICAgICAgICAgIG5hbWUgPSBuYW1lLmxvd2VyKCkKLWRpZmYgLS1naXQgYS9NaXNjL05FV1MgYi9NaXNjL05FV1MKLWluZGV4IDRhZDI1NTEuLjJmY2M5NWIgMTAwNjQ0Ci0tLS0gYS9NaXNjL05FV1MKLSsrKyBiL01pc2MvTkVXUwotQEAgLTMyOSw2ICszMjksMTAgQEAgTGlicmFyeQotIC0gSXNzdWUgIzI2NjQ0OiBSYWlzZSBWYWx1ZUVycm9yIHJhdGhlciB0aGFuIFN5c3RlbUVycm9yIHdoZW4gYSBuZWdhdGl2ZQotICAgbGVuZ3RoIGlzIHBhc3NlZCB0byBTU0xTb2NrZXQucmVjdigpIG9yIHJlYWQoKS4KLSAKLSstIElzc3VlICMyNzU2ODogUHJldmVudCBIVFRQb3h5IGF0dGFjayAoQ1ZFLTIwMTYtMTAwMDExMCkuIElnbm9yZSB0aGUKLSsgIEhUVFBfUFJPWFkgdmFyaWFibGUgd2hlbiBSRVFVRVNUX01FVEhPRCBlbnZpcm9ubWVudCBpcyBzZXQsIHdoaWNoIGluZGljYXRlcwotKyAgdGhhdCB0aGUgc2NyaXB0IGlzIGluIENHSSBtb2RlLgotKwotIC0gSXNzdWUgIzIzODA0OiBGaXggU1NMIHJlY3YoMCkgYW5kIHJlYWQoMCkgbWV0aG9kcyB0byByZXR1cm4gemVybyBieXRlcwotICAgaW5zdGVhZCBvZiB1cCB0byAxMDI0LgotIAotLS0gCi0yLjguMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3N1cHBvcnRfU09VUkNFX0RBVEVfRVBPQ0hfaW5fcHlfY29tcGlsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvc3VwcG9ydF9TT1VSQ0VfREFURV9FUE9DSF9pbl9weV9jb21waWxlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyZWNhYjkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3N1cHBvcnRfU09VUkNFX0RBVEVfRVBPQ0hfaW5fcHlfY29tcGlsZS5wYXRjaApAQCAtMCwwICsxLDk3IEBACitUaGUgY29tcGlsZWQgLnB5YyBmaWxlcyBjb250YWluIHRpbWUgc3RhbXAgY29ycmVzcG9uZGluZyB0byB0aGUgY29tcGlsZSB0aW1lLgorVGhpcyBwcmV2ZW50cyBiaW5hcnkgcmVwcm9kdWNpYmlsaXR5LiBUaGlzIHBhdGNoIGFsbG93cyB0byBhY2hpZXZlIGJpbmFyeQorcmVwcm9kdWNpYmlsaXR5IGJ5IG92ZXJyaWRpbmcgdGhlIGJ1aWxkIHRpbWUgc3RhbXAgYnkgdGhlIHZhbHVlIAorZXhwb3J0ZWQgdmlhIFNPVVJDRV9EQVRFX0VQT0NILiAKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitTaWduZWQtb2ZmLWJ5OiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgorCisKK0Zyb20gYWVhYjQ4ODYzMGZkYjFiNTZhOGQwYjBjMTNmYTg4NzA2YjJhZmU5YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ICJCZXJuaGFyZCBNLiBXaWVkZW1hbm4iIDxid2llZGVtYW5uQHN1c2UuZGU+CitEYXRlOiBTYXQsIDI1IEZlYiAyMDE3IDA2OjQyOjI4ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGJwby0yOTcwODogc3VwcG9ydCBTT1VSQ0VfREFURV9FUE9DSCBlbnYgdmFyIGluIHB5X2NvbXBpbGUKKwordG8gYWxsb3cgZm9yIHJlcHJvZHVjaWJsZSBidWlsZHMgb2YgcHl0aG9uIHBhY2thZ2VzCisKK1NlZSBodHRwczovL3JlcHJvZHVjaWJsZS1idWlsZHMub3JnLyBmb3Igd2h5IHRoaXMgaXMgZ29vZAorYW5kIGh0dHBzOi8vcmVwcm9kdWNpYmxlLWJ1aWxkcy5vcmcvc3BlY3Mvc291cmNlLWRhdGUtZXBvY2gvCitmb3IgdGhlIGRlZmluaXRpb24gb2YgdGhpcyB2YXJpYWJsZS4KKworQmFja2dyb3VuZDoKK0luIHNvbWUgZGlzdHJpYnV0aW9ucyBsaWtlIG9wZW5TVVNFLCBiaW5hcnkgcnBtcyBjb250YWluIHByZWNvbXBpbGVkIC5weWMgZmlsZXMuCisKK0FuZCBwYWNrYWdlcyBsaWtlIGFtcXAgb3IgdHdpc3RlZCBkeW5hbWljYWxseSBnZW5lcmF0ZSAucHkgZmlsZXMgYXQgYnVpbGQgdGltZQorc28gdGhvc2UgaGF2ZSB0aGUgY3VycmVudCB0aW1lIGFuZCB0aGF0IHRpbWVzdGFtcCBnZXRzIGVtYmVkZGVkCitpbnRvIHRoZSAucHljIGZpbGUgaGVhZGVyLgorV2hlbiB3ZSB0aGVuIGFkYXB0IGZpbGUgdGltZXN0YW1wcyBpbiBycG1zIHRvIGJlIGNvbnN0YW50LAordGhlIHRpbWVzdGFtcCBpbiB0aGUgLnB5YyBoZWFkZXIgd2lsbCBubyBtb3JlIG1hdGNoCit0aGUgLnB5IHRpbWVzdGFtcCBpbiB0aGUgZmlsZXN5c3RlbS4KK1RoZSBzb2Z0d2FyZSB3aWxsIHN0aWxsIHdvcmssIGJ1dCBpdCB3aWxsIG5vdCB1c2UgdGhlIC5weWMgZmlsZSBhcyBpdCBzaG91bGQuCistLS0KKyBEb2MvbGlicmFyeS9weV9jb21waWxlLnJzdCAgfCAgNCArKysrCisgTGliL3B5X2NvbXBpbGUucHkgICAgICAgICAgIHwgIDQgKysrKworIExpYi90ZXN0L3Rlc3RfcHlfY29tcGlsZS5weSB8IDE5ICsrKysrKysrKysrKysrKysrKysKKyAzIGZpbGVzIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3B5X2NvbXBpbGUucnN0IGIvRG9jL2xpYnJhcnkvcHlfY29tcGlsZS5yc3QKK2luZGV4IDBhZjhmYjEuLjg0MWYzZTggMTAwNjQ0CistLS0gYS9Eb2MvbGlicmFyeS9weV9jb21waWxlLnJzdAorKysrIGIvRG9jL2xpYnJhcnkvcHlfY29tcGlsZS5yc3QKK0BAIC01Myw2ICs1MywxMCBAQCBieXRlLWNvZGUgY2FjaGUgZmlsZXMgaW4gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBzb3VyY2UgY29kZS4KKyAgICA6ZnVuYzpgY29tcGlsZWAgZnVuY3Rpb24uICBUaGUgZGVmYXVsdCBvZiBgYC0xYGAgc2VsZWN0cyB0aGUgb3B0aW1pemF0aW9uCisgICAgbGV2ZWwgb2YgdGhlIGN1cnJlbnQgaW50ZXJwcmV0ZXIuCisgCisrICAgSWYgdGhlIFNPVVJDRV9EQVRFX0VQT0NIIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIHNldCwgdGhlIC5weSBmaWxlIG10aW1lCisrICAgYW5kIHRpbWVzdGFtcCBlbnRyeSBpbiAucHljIGZpbGUgaGVhZGVyLCB3aWxsIGJlIGxpbWl0ZWQgdG8gdGhpcyB2YWx1ZS4KKysgICBTZWUgaHR0cHM6Ly9yZXByb2R1Y2libGUtYnVpbGRzLm9yZy9zcGVjcy9zb3VyY2UtZGF0ZS1lcG9jaC8gZm9yIG1vcmUgaW5mby4KKysKKyAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgorICAgICAgIENoYW5nZWQgZGVmYXVsdCB2YWx1ZSBvZiAqY2ZpbGUqIHRvIGJlIDpQRVA6YDMxNDdgLWNvbXBsaWFudC4gIFByZXZpb3VzCisgICAgICAgZGVmYXVsdCB3YXMgKmZpbGUqICsgYGAnYydgYCAoYGAnbydgYCBpZiBvcHRpbWl6YXRpb24gd2FzIGVuYWJsZWQpLgorZGlmZiAtLWdpdCBhL0xpYi9weV9jb21waWxlLnB5IGIvTGliL3B5X2NvbXBpbGUucHkKK2luZGV4IDExYzViNTAuLjYyZGNkYzcgMTAwNjQ0CistLS0gYS9MaWIvcHlfY29tcGlsZS5weQorKysrIGIvTGliL3B5X2NvbXBpbGUucHkKK0BAIC0xMzcsNiArMTM3LDEwIEBAIGRlZiBjb21waWxlKGZpbGUsIGNmaWxlPU5vbmUsIGRmaWxlPU5vbmUsIGRvcmFpc2U9RmFsc2UsIG9wdGltaXplPS0xKToKKyAgICAgZXhjZXB0IEZpbGVFeGlzdHNFcnJvcjoKKyAgICAgICAgIHBhc3MKKyAgICAgc291cmNlX3N0YXRzID0gbG9hZGVyLnBhdGhfc3RhdHMoZmlsZSkKKysgICAgc2RlID0gb3MuZW52aXJvbi5nZXQoJ1NPVVJDRV9EQVRFX0VQT0NIJykKKysgICAgaWYgc2RlIGFuZCBzb3VyY2Vfc3RhdHNbJ210aW1lJ10gPiBpbnQoc2RlKToKKysgICAgICAgIHNvdXJjZV9zdGF0c1snbXRpbWUnXSA9IGludChzZGUpCisrICAgICAgICBvcy51dGltZShmaWxlLCAoc291cmNlX3N0YXRzWydtdGltZSddLCBzb3VyY2Vfc3RhdHNbJ210aW1lJ10pKQorICAgICBieXRlY29kZSA9IGltcG9ydGxpYi5fYm9vdHN0cmFwX2V4dGVybmFsLl9jb2RlX3RvX2J5dGVjb2RlKAorICAgICAgICAgICAgIGNvZGUsIHNvdXJjZV9zdGF0c1snbXRpbWUnXSwgc291cmNlX3N0YXRzWydzaXplJ10pCisgICAgIG1vZGUgPSBpbXBvcnRsaWIuX2Jvb3RzdHJhcF9leHRlcm5hbC5fY2FsY19tb2RlKGZpbGUpCitkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9weV9jb21waWxlLnB5IGIvTGliL3Rlc3QvdGVzdF9weV9jb21waWxlLnB5CitpbmRleCA0YTZjYWE1Li4zZDA5OTYzIDEwMDY0NAorLS0tIGEvTGliL3Rlc3QvdGVzdF9weV9jb21waWxlLnB5CisrKysgYi9MaWIvdGVzdC90ZXN0X3B5X2NvbXBpbGUucHkKK0BAIC05OCw2ICs5OCwyNSBAQCBkZWYgdGVzdF9iYWRfY29kaW5nKHNlbGYpOgorICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cygKKyAgICAgICAgICAgICBpbXBvcnRsaWIudXRpbC5jYWNoZV9mcm9tX3NvdXJjZShiYWRfY29kaW5nKSkpCisgCisrICAgIGRlZiB0ZXN0X3NvdXJjZV9kYXRlX2Vwb2NoKHNlbGYpOgorKyAgICAgICAgdGVzdHRpbWUgPSAxMjM0NTY3ODkKKysgICAgICAgIG9yaWdfc2RlID0gb3MuZ2V0ZW52KCJTT1VSQ0VfREFURV9FUE9DSCIpCisrICAgICAgICBvcy5lbnZpcm9uWyJTT1VSQ0VfREFURV9FUE9DSCJdID0gc3RyKHRlc3R0aW1lKQorKyAgICAgICAgcHlfY29tcGlsZS5jb21waWxlKHNlbGYuc291cmNlX3BhdGgsIHNlbGYucHljX3BhdGgpCisrICAgICAgICBpZiBvcmlnX3NkZToKKysgICAgICAgICAgICBvcy5lbnZpcm9uWyJTT1VSQ0VfREFURV9FUE9DSCJdID0gb3JpZ19zZGUKKysgICAgICAgIGVsc2U6CisrICAgICAgICAgICAgZGVsIG9zLmVudmlyb25bIlNPVVJDRV9EQVRFX0VQT0NIIl0KKysgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhzZWxmLnB5Y19wYXRoKSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMoc2VsZi5jYWNoZV9wYXRoKSkKKysgICAgICAgIHN0YXRpbmZvID0gb3Muc3RhdChzZWxmLnNvdXJjZV9wYXRoKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0aW5mby5zdF9tdGltZSwgdGVzdHRpbWUpCisrICAgICAgICBmID0gb3BlbihzZWxmLnB5Y19wYXRoLCAicmIiKQorKyAgICAgICAgZi5yZWFkKDQpCisrICAgICAgICB0aW1lYnl0ZXMgPSBmLnJlYWQoNCkgIyByZWFkIHRpbWVzdGFtcCBmcm9tIHB5YyBoZWFkZXIKKysgICAgICAgIGYuY2xvc2UoKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aW1lYnl0ZXMsICh0ZXN0dGltZSkudG9fYnl0ZXMoNCwgJ2xpdHRsZScpKQorKworICAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5mbGFncy5vcHRpbWl6ZSA+IDAsICd0ZXN0IGRvZXMgbm90IHdvcmsgd2l0aCAtTycpCisgICAgIGRlZiB0ZXN0X2RvdWJsZV9kb3Rfbm9fY2xvYmJlcihzZWxmKToKKyAgICAgICAgICMgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTIyOTY2CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3Vwc3RyZWFtLXJhbmRvbS1maXhlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvdXBzdHJlYW0tcmFuZG9tLWZpeGVzLnBhdGNoCmluZGV4IDBkOTE1MmMuLjliNDBlOGEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvdXBzdHJlYW0tcmFuZG9tLWZpeGVzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvdXBzdHJlYW0tcmFuZG9tLWZpeGVzLnBhdGNoCkBAIC0xLDIxICsxLDcgQEAKLVRoaXMgcGF0Y2ggdXBkYXRlcyByYW5kb20uYyB0byBtYXRjaCB1cHN0cmVhbSBweXRob24ncyBjb2RlIGF0IHJldmlzaW9uIAotODEyNWQ5YTgxNTJiLiBUaGlzIGFkZHJlc3NlcyB2YXJpb3VzIGlzc3VlcyBhcm91bmQgcHJvYmxlbXMgd2l0aCBnbGliYyAyLjI0IAotYW5kIDIuMjUgc3VjaCB0aGF0IHB5dGhvbiB3b3VsZCBmYWlsIHRvIHN0YXJ0IHdpdGg6Ci0KLVtycHVyZGllQGNlbnRvczcgfl0kIC90bXAvdDIvc3lzcm9vdHMveDg2XzY0LXBva3lzZGstbGludXgvdXNyL2Jpbi9weXRob24zCi1GYXRhbCBQeXRob24gZXJyb3I6IGdldGVudHJvcHkoKSBmYWlsZWQKLUFib3J0ZWQKLQotKHRha2VuIGZyb20gb3VyIGJ1aWxkdG9vbHMtdGFyYmFsbCBhbHNvIGJyZWFrcyBlU0RLKQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLSMgSEcgY2hhbmdlc2V0IHBhdGNoCi0jIFVzZXIgVmljdG9yIFN0aW5uZXIgPHZpY3Rvci5zdGlubmVyQGdtYWlsLmNvbT4KLSMgRGF0ZSAxNDgzOTU3MTMzIC0zNjAwCi0jIE5vZGUgSUQgODEyNWQ5YTgxNTJiNzllNzEyY2IwOWM3MDk0YjkxMjliOWJjZWE4NgotIyBQYXJlbnQgIDMzNzQ2MTU3NGM5MDI4MTYzMDc1MWI2MDk1YzRlMWJhZjM4MGNmN2QKLUlzc3VlICMyOTE1NzogUHJlZmVyIGdldHJhbmRvbSgpIG92ZXIgZ2V0ZW50cm9weSgpCitGcm9tIDAzNWJhNWRhM2U1M2U0NWM3MTJiMzlmZTFmNmZiNzQzZTY5N2MwMzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBWaWN0b3IgU3Rpbm5lciA8dmljdG9yLnN0aW5uZXJAZ21haWwuY29tPgorRGF0ZTogTW9uLCA5IEphbiAyMDE3IDExOjE4OjUzICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIElzc3VlICMyOTE1NzogUHJlZmVyIGdldHJhbmRvbSgpIG92ZXIgZ2V0ZW50cm9weSgpCiAKIENvcHkgYW5kIHRoZW4gYWRhcHQgUHl0aG9uL3JhbmRvbS5jIGZyb20gZGVmYXVsdCBicmFuY2guIERpZmZlcmVuY2UgYmV0d2VlbiAzLjUKIGFuZCBkZWZhdWx0IGJyYW5jaGVzOgpAQCAtMjYsMTIgKzEyLDE3IEBACiAqIFB5dGhvbiAzLjUgaGFzIG5vIF9QeU9TX1VSYW5kb21Ob25ibG9jaygpIGZ1bmN0aW9uOiBfUHlPU19VUmFuZG9tKCkKICAgd29ya3MgaW4gbm9uLWJsb2NraW5nIG1vZGUgb24gUHl0aG9uIDMuNQogCi1SUCAyMDE3LzEvMjIKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vY3B5dGhvbi9jb21taXQvMDM1YmE1ZGEzZTUzZTQ1YzcxMmIzOWZlMWY2ZmI3NDNlNjk3YzAzMl0KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4YW5kZXIua2FuYXZpbkBpbnRlbC5jb20+CiAKLUluZGV4OiBQeXRob24tMy41LjIvUHl0aG9uL3JhbmRvbS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTMuNS4yLm9yaWcvUHl0aG9uL3JhbmRvbS5jCi0rKysgUHl0aG9uLTMuNS4yL1B5dGhvbi9yYW5kb20uYworLS0tCisgUHl0aG9uL3JhbmRvbS5jIHwgNDk0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDI5NCBpbnNlcnRpb25zKCspLCAyMDAgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9QeXRob24vcmFuZG9tLmMgYi9QeXRob24vcmFuZG9tLmMKK2luZGV4IGQyMDM5MzkuLjMxZjYxZDAgMTAwNjQ0CistLS0gYS9QeXRob24vcmFuZG9tLmMKKysrKyBiL1B5dGhvbi9yYW5kb20uYwogQEAgLTEsNiArMSw5IEBACiAgI2luY2x1ZGUgIlB5dGhvbi5oIgogICNpZmRlZiBNU19XSU5ET1dTCkBAIC00Miw3ICszMyw3IEBACiAgI2Vsc2UKICAjICBpbmNsdWRlIDxmY250bC5oPgogICMgIGlmZGVmIEhBVkVfU1lTX1NUQVRfSAotQEAgLTM2LDEwICszOSw5IEBAIHdpbjMyX3VyYW5kb21faW5pdChpbnQgcmFpc2UpCitAQCAtMzcsMTAgKzQwLDkgQEAgd2luMzJfdXJhbmRvbV9pbml0KGludCByYWlzZSkKICAgICAgcmV0dXJuIDA7CiAgCiAgZXJyb3I6CkBAIC01NSw3ICs0Niw3IEBACiAgICAgIHJldHVybiAtMTsKICB9CiAgCi1AQCAtNTIsOCArNTQsOSBAQCB3aW4zMl91cmFuZG9tKHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciwgUHlfCitAQCAtNTMsOCArNTUsOSBAQCB3aW4zMl91cmFuZG9tKHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplLCBpbnQgcmFpc2UpCiAgCiAgICAgIGlmIChoQ3J5cHRQcm92ID09IDApCiAgICAgIHsKQEAgLTY2LDcgKzU3LDcgQEAKICAgICAgfQogIAogICAgICB3aGlsZSAoc2l6ZSA+IDApCi1AQCAtNjIsMTEgKzY1LDkgQEAgd2luMzJfdXJhbmRvbSh1bnNpZ25lZCBjaGFyICpidWZmZXIsIFB5XworQEAgLTYzLDExICs2Niw5IEBAIHdpbjMyX3VyYW5kb20odW5zaWduZWQgY2hhciAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUsIGludCByYWlzZSkKICAgICAgICAgIGlmICghQ3J5cHRHZW5SYW5kb20oaENyeXB0UHJvdiwgKERXT1JEKWNodW5rLCBidWZmZXIpKQogICAgICAgICAgewogICAgICAgICAgICAgIC8qIENyeXB0R2VuUmFuZG9tKCkgZmFpbGVkICovCkBAIC04MCw3ICs3MSw3IEBACiAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgfQogICAgICAgICAgYnVmZmVyICs9IGNodW5rOwotQEAgLTc1LDU1ICs3NiwyOSBAQCB3aW4zMl91cmFuZG9tKHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciwgUHlfCitAQCAtNzYsNTggKzc3LDIzIEBAIHdpbjMyX3VyYW5kb20odW5zaWduZWQgY2hhciAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUsIGludCByYWlzZSkKICAgICAgcmV0dXJuIDA7CiAgfQogIApAQCAtMTI5LDEzICsxMjAsMTkgQEAKICAjaWYgZGVmaW5lZChIQVZFX0dFVFJBTkRPTSkgfHwgZGVmaW5lZChIQVZFX0dFVFJBTkRPTV9TWVNDQUxMKQogICNkZWZpbmUgUFlfR0VUUkFORE9NIDEKICAKKy0vKiBDYWxsIGdldHJhbmRvbSgpCiArLyogQ2FsbCBnZXRyYW5kb20oKSB0byBnZXQgcmFuZG9tIGJ5dGVzOgogKwotKyAgIC0gUmV0dXJuIDEgb24gc3VjY2VzcworICAgIC0gUmV0dXJuIDEgb24gc3VjY2VzcworLSAgIC0gUmV0dXJuIDAgaWYgZ2V0cmFuZG9tKCkgc3lzY2FsbCBpcyBub3QgYXZhaWxhYmxlIChmYWlsZWQgd2l0aCBFTk9TWVMgb3IKKy0gICAgIEVQRVJNKSBvciBpZiBnZXRyYW5kb20oR1JORF9OT05CTE9DSykgZmFpbGVkIHdpdGggRUFHQUlOIChzeXN0ZW0gdXJhbmRvbQorLSAgICAgbm90IGluaXRpYWxpemVkIHlldCkgYW5kIHJhaXNlPTAuCiArICAgLSBSZXR1cm4gMCBpZiBnZXRyYW5kb20oKSBpcyBub3QgYXZhaWxhYmxlIChmYWlsZWQgd2l0aCBFTk9TWVMgb3IgRVBFUk0pLAogKyAgICAgb3IgaWYgZ2V0cmFuZG9tKEdSTkRfTk9OQkxPQ0spIGZhaWxlZCB3aXRoIEVBR0FJTiAoc3lzdGVtIHVyYW5kb20gbm90CiArICAgICBpbml0aWFsaXplZCB5ZXQpLgotKyAgIC0gUmFpc2UgYW4gZXhjZXB0aW9uIChpZiByYWlzZSBpcyBub24temVybykgYW5kIHJldHVybiAtMSBvbiBlcnJvcjoKKyAgICAtIFJhaXNlIGFuIGV4Y2VwdGlvbiAoaWYgcmFpc2UgaXMgbm9uLXplcm8pIGFuZCByZXR1cm4gLTEgb24gZXJyb3I6CistICAgICBnZXRyYW5kb20oKSBmYWlsZWQgd2l0aCBFSU5UUiBhbmQgdGhlIFB5dGhvbiBzaWduYWwgaGFuZGxlciByYWlzZWQgYW4KKy0gICAgIGV4Y2VwdGlvbiwgb3IgZ2V0cmFuZG9tKCkgZmFpbGVkIHdpdGggYSBkaWZmZXJlbnQgZXJyb3IuICovCiArICAgICBpZiBnZXRyYW5kb20oKSBmYWlsZWQgd2l0aCBFSU5UUiwgcmFpc2UgaXMgbm9uLXplcm8gYW5kIHRoZSBQeXRob24gc2lnbmFsCiArICAgICBoYW5kbGVyIHJhaXNlZCBhbiBleGNlcHRpb24sIG9yIGlmIGdldHJhbmRvbSgpIGZhaWxlZCB3aXRoIGEgZGlmZmVyZW50CiArICAgICBlcnJvci4KQEAgLTE0NCwyNiArMTQxLDE2IEBACiAgc3RhdGljIGludAogIHB5X2dldHJhbmRvbSh2b2lkICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IHJhaXNlKQogIHsKLS0gICAgLyogSXMgZ2V0cmFuZG9tKCkgc3VwcG9ydGVkIGJ5IHRoZSBydW5uaW5nIGtlcm5lbD8KLS0gICAgICogTmVlZCBMaW51eCBrZXJuZWwgMy4xNyBvciBuZXdlciwgb3IgU29sYXJpcyAxMS4zIG9yIG5ld2VyICovCi0rICAgIC8qIElzIGdldHJhbmRvbSgpIHN1cHBvcnRlZCBieSB0aGUgcnVubmluZyBrZXJuZWw/IFNldCB0byAwIGlmIGdldHJhbmRvbSgpCi0rICAgICAgIGZhaWxlZCB3aXRoIEVOT1NZUyBvciBFUEVSTS4gTmVlZCBMaW51eCBrZXJuZWwgMy4xNyBvciBuZXdlciwgb3IgU29sYXJpcwotKyAgICAgICAxMS4zIG9yIG5ld2VyICovCi0gICAgIHN0YXRpYyBpbnQgZ2V0cmFuZG9tX3dvcmtzID0gMTsKLSAKLSAgICAgLyogZ2V0cmFuZG9tKCkgb24gTGludXggd2lsbCBibG9jayBpZiBjYWxsZWQgYmVmb3JlIHRoZSBrZXJuZWwgaGFzCi1AQCAtMTMyLDg0ICsxMDcsMTY1IEBAIHB5X2dldHJhbmRvbSh2b2lkICpidWZmZXIsIFB5X3NzaXplX3Qgc2kKK0BAIC0xNDIsMTYgKzEwOCwxOSBAQCBweV9nZXRyYW5kb20odm9pZCAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUsIGludCByYWlzZSkKICAgICAgICogc2VlIGh0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjY4MzkuIFRvIGF2b2lkIHRoaXMsIHVzZSB0aGUKICAgICAgICogR1JORF9OT05CTE9DSyBmbGFnLiAqLwogICAgICBjb25zdCBpbnQgZmxhZ3MgPSBHUk5EX05PTkJMT0NLOwotLSAgICBpbnQgbjsKICsgICAgY2hhciAqZGVzdDsKLSsgICAgbG9uZyBuOworICAgICBsb25nIG47CiAgCi0tICAgIGlmICghZ2V0cmFuZG9tX3dvcmtzKQotKyAgICBpZiAoIWdldHJhbmRvbV93b3JrcykgeworICAgICBpZiAoIWdldHJhbmRvbV93b3JrcykgewogICAgICAgICAgcmV0dXJuIDA7Ci0rICAgIH0KKyAgICAgfQogIAogKyAgICBkZXN0ID0gYnVmZmVyOwogICAgICB3aGlsZSAoMCA8IHNpemUpIHsKQEAgLTE3NCwxMSArMTYxLDggQEAKICsgICAgICAgICAgIHJlcXVlc3RlZC4gKi8KICAgICAgICAgIG4gPSBQeV9NSU4oc2l6ZSwgMTAyNCk7CiAgI2Vsc2UKLS0gICAgICAgIG4gPSBzaXplOwotKyAgICAgICAgbiA9IFB5X01JTihzaXplLCBMT05HX01BWCk7Ci0gI2VuZGlmCi0gCi0gICAgICAgICBlcnJubyA9IDA7CisgICAgICAgICBuID0gUHlfTUlOKHNpemUsIExPTkdfTUFYKTsKK0BAIC0xNjEsMzQgKzEzMCwzNSBAQCBweV9nZXRyYW5kb20odm9pZCAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUsIGludCByYWlzZSkKICAjaWZkZWYgSEFWRV9HRVRSQU5ET00KICAgICAgICAgIGlmIChyYWlzZSkgewogICAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKQEAgLTIwOSw1NiArMTkzLDQ1IEBACiAgI2VuZGlmCiAgCiAgICAgICAgICBpZiAobiA8IDApIHsKLS0gICAgICAgICAgICBpZiAoZXJybm8gPT0gRU5PU1lTKSB7CistICAgICAgICAgICAgLyogRU5PU1lTOiBnZXRyYW5kb20oKSBzeXNjYWxsIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGtlcm5lbCAoYnV0CistICAgICAgICAgICAgICogbWF5YmUgc3VwcG9ydGVkIGJ5IHRoZSBob3N0IHdoaWNoIGJ1aWx0IFB5dGhvbikuIEVQRVJNOgorLSAgICAgICAgICAgICAqIGdldHJhbmRvbSgpIHN5c2NhbGwgYmxvY2tlZCBieSBTRUNDT01QIG9yIHNvbWV0aGluZyBlbHNlLiAqLwogKyAgICAgICAgICAgIC8qIEVOT1NZUzogdGhlIHN5c2NhbGwgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUga2VybmVsLgogKyAgICAgICAgICAgICAgIEVQRVJNOiB0aGUgc3lzY2FsbCBpcyBibG9ja2VkIGJ5IGEgc2VjdXJpdHkgcG9saWN5IChleDogU0VDQ09NUCkKICsgICAgICAgICAgICAgICBvciBzb21ldGhpbmcgZWxzZS4gKi8KLSsgICAgICAgICAgICBpZiAoZXJybm8gPT0gRU5PU1lTIHx8IGVycm5vID09IEVQRVJNKSB7CisgICAgICAgICAgICAgaWYgKGVycm5vID09IEVOT1NZUyB8fCBlcnJubyA9PSBFUEVSTSkgewogICAgICAgICAgICAgICAgICBnZXRyYW5kb21fd29ya3MgPSAwOwogICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICB9CiArCiAgICAgICAgICAgICAgaWYgKGVycm5vID09IEVBR0FJTikgewotLSAgICAgICAgICAgICAgICAvKiBJZiB3ZSBmYWlsZWQgd2l0aCBFQUdBSU4sIHRoZSBlbnRyb3B5IHBvb2wgd2FzCi0tICAgICAgICAgICAgICAgICAqIHVuaW5pdGlhbGl6ZWQuIEluIHRoaXMgY2FzZSwgd2UgcmV0dXJuIGZhaWx1cmUgdG8gZmFsbAotLSAgICAgICAgICAgICAgICAgKiBiYWNrIHRvIHJlYWRpbmcgZnJvbSAvZGV2L3VyYW5kb20uCi0tICAgICAgICAgICAgICAgICAqCi0tICAgICAgICAgICAgICAgICAqIE5vdGU6IEluIHRoaXMgY2FzZSB0aGUgZGF0YSByZWFkIHdpbGwgbm90IGJlIHJhbmRvbSBzbwotLSAgICAgICAgICAgICAgICAgKiBzaG91bGQgbm90IGJlIHVzZWQgZm9yIGNyeXB0b2dyYXBoaWMgcHVycG9zZXMuIFJldGFpbmluZwotLSAgICAgICAgICAgICAgICAgKiB0aGUgZXhpc3Rpbmcgc2VtYW50aWNzIGZvciBwcmFjdGljYWwgcHVycG9zZXMuICovCi0rICAgICAgICAgICAgICAgIC8qIGdldHJhbmRvbShHUk5EX05PTkJMT0NLKSBmYWlscyB3aXRoIEVBR0FJTiBpZiB0aGUgc3lzdGVtCi0rICAgICAgICAgICAgICAgICAgIHVyYW5kb20gaXMgbm90IGluaXRpYWxpYXplZCB5ZXQuIEluIHRoaXMgY2FzZSwgZmFsbCBiYWNrIG9uCi0rICAgICAgICAgICAgICAgICAgIHJlYWRpbmcgZnJvbSAvZGV2L3VyYW5kb20uCi0rCi0rICAgICAgICAgICAgICAgICAgIE5vdGU6IEluIHRoaXMgY2FzZSB0aGUgZGF0YSByZWFkIHdpbGwgbm90IGJlIHJhbmRvbSBzbwotKyAgICAgICAgICAgICAgICAgICBzaG91bGQgbm90IGJlIHVzZWQgZm9yIGNyeXB0b2dyYXBoaWMgcHVycG9zZXMuIFJldGFpbmluZwotKyAgICAgICAgICAgICAgICAgICB0aGUgZXhpc3Rpbmcgc2VtYW50aWNzIGZvciBwcmFjdGljYWwgcHVycG9zZXMuICovCi0gICAgICAgICAgICAgICAgIGdldHJhbmRvbV93b3JrcyA9IDA7Ci0gICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgICAvKiBnZXRyYW5kb20oR1JORF9OT05CTE9DSykgZmFpbHMgd2l0aCBFQUdBSU4gaWYgdGhlIHN5c3RlbQorICAgICAgICAgICAgICAgICAgICB1cmFuZG9tIGlzIG5vdCBpbml0aWFsaWF6ZWQgeWV0LiBJbiB0aGlzIGNhc2UsIGZhbGwgYmFjayBvbgorQEAgLTIwMiwxNjkgKzE3MiwyMjUgQEAgcHlfZ2V0cmFuZG9tKHZvaWQgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplLCBpbnQgcmFpc2UpCiAgICAgICAgICAgICAgfQogIAogICAgICAgICAgICAgIGlmIChlcnJubyA9PSBFSU5UUikgewogLSAgICAgICAgICAgICAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpIHsKLS0gICAgICAgICAgICAgICAgICAgIGlmICghcmFpc2UpCistICAgICAgICAgICAgICAgICAgICBpZiAoIXJhaXNlKSB7CiAtICAgICAgICAgICAgICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiZ2V0cmFuZG9tKCkgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwiKTsKLS0gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICsgICAgICAgICAgICAgICAgaWYgKHJhaXNlKSB7CiArICAgICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpIHsKICsgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0rICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICB9CistICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICAgICAgIH0KKyAKIC0gICAgICAgICAgICAgICAgLyogcmV0cnkgZ2V0cmFuZG9tKCkgKi8KLSsKICsgICAgICAgICAgICAgICAgLyogcmV0cnkgZ2V0cmFuZG9tKCkgaWYgaXQgd2FzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsICovCiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgIH0KICAKLS0gICAgICAgICAgICBpZiAocmFpc2UpCi0rICAgICAgICAgICAgaWYgKHJhaXNlKSB7CisgICAgICAgICAgICAgaWYgKHJhaXNlKSB7CiAgICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKLS0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgfQorLSAgICAgICAgICAgIGVsc2UgewogLSAgICAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJnZXRyYW5kb20oKSBmYWlsZWQiKTsKLSsgICAgICAgICAgICB9CistICAgICAgICAgICAgfQogICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgIH0KICAKQEAgLTI2OSwxMiArMjQyLDE5IEBACiAgICAgIHJldHVybiAxOwogIH0KIC0jZW5kaWYKLSsKKyAKKy1zdGF0aWMgc3RydWN0IHsKKy0gICAgaW50IGZkOworLSAgICBkZXZfdCBzdF9kZXY7CistICAgIGlub190IHN0X2lubzsKKy19IHVyYW5kb21fY2FjaGUgPSB7IC0xIH07CiArI2VsaWYgZGVmaW5lZChIQVZFX0dFVEVOVFJPUFkpCiArI2RlZmluZSBQWV9HRVRFTlRST1BZIDEKLSsKKyAKICsvKiBGaWxsIGJ1ZmZlciB3aXRoIHNpemUgcHNldWRvLXJhbmRvbSBieXRlcyBnZW5lcmF0ZWQgYnkgZ2V0ZW50cm9weSgpOgotKworIAorLS8qIFJlYWQgJ3NpemUnIHJhbmRvbSBieXRlcyBmcm9tIHB5X2dldHJhbmRvbSgpLiBGYWxsIGJhY2sgb24gcmVhZGluZyBmcm9tCistICAgL2Rldi91cmFuZG9tIGlmIGdldHJhbmRvbSgpIGlzIG5vdCBhdmFpbGFibGUuCiArICAgLSBSZXR1cm4gMSBvbiBzdWNjZXNzCiArICAgLSBSZXR1cm4gMCBpZiBnZXRlbnRyb3B5KCkgc3lzY2FsbCBpcyBub3QgYXZhaWxhYmxlIChmYWlsZWQgd2l0aCBFTk9TWVMgb3IKICsgICAgIEVQRVJNKS4KQEAgLTI4MiwyNSArMjYyLDQ3IEBACiArICAgICBpZiBnZXRlbnRyb3B5KCkgZmFpbGVkIHdpdGggRUlOVFIsIHJhaXNlIGlzIG5vbi16ZXJvIGFuZCB0aGUgUHl0aG9uIHNpZ25hbAogKyAgICAgaGFuZGxlciByYWlzZWQgYW4gZXhjZXB0aW9uLCBvciBpZiBnZXRlbnRyb3B5KCkgZmFpbGVkIHdpdGggYSBkaWZmZXJlbnQKICsgICAgIGVycm9yLgotKworIAorLSAgIENhbGwgUHlfRmF0YWxFcnJvcigpIG9uIGVycm9yLiAqLworLXN0YXRpYyB2b2lkCistZGV2X3VyYW5kb21fbm9yYWlzZSh1bnNpZ25lZCBjaGFyICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSkKICsgICBnZXRlbnRyb3B5KCkgaXMgcmV0cmllZCBpZiBpdCBmYWlsZWQgd2l0aCBFSU5UUjogaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwuICovCiArc3RhdGljIGludAogK3B5X2dldGVudHJvcHkoY2hhciAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUsIGludCByYWlzZSkKLSt7CisgeworLSAgICBpbnQgZmQ7CistICAgIFB5X3NzaXplX3QgbjsKICsgICAgLyogSXMgZ2V0ZW50cm9weSgpIHN1cHBvcnRlZCBieSB0aGUgcnVubmluZyBrZXJuZWw/IFNldCB0byAwIGlmCiArICAgICAgIGdldGVudHJvcHkoKSBmYWlsZWQgd2l0aCBFTk9TWVMgb3IgRVBFUk0uICovCiArICAgIHN0YXRpYyBpbnQgZ2V0ZW50cm9weV93b3JrcyA9IDE7Ci0rCisgCistICAgIGFzc2VydCAoMCA8IHNpemUpOworLQorLSNpZmRlZiBQWV9HRVRSQU5ET00KKy0gICAgaWYgKHB5X2dldHJhbmRvbShidWZmZXIsIHNpemUsIDApID09IDEpIHsKKy0gICAgICAgIHJldHVybjsKICsgICAgaWYgKCFnZXRlbnRyb3B5X3dvcmtzKSB7CiArICAgICAgICByZXR1cm4gMDsKLSsgICAgfQotKworICAgICB9CistICAgIC8qIGdldHJhbmRvbSgpIGZhaWxlZCB3aXRoIEVOT1NZUyBvciBFUEVSTSwKKy0gICAgICAgZmFsbCBiYWNrIG9uIHJlYWRpbmcgL2Rldi91cmFuZG9tICovCistI2VuZGlmCisgCistICAgIGZkID0gX1B5X29wZW5fbm9yYWlzZSgiL2Rldi91cmFuZG9tIiwgT19SRE9OTFkpOworLSAgICBpZiAoZmQgPCAwKSB7CistICAgICAgICBQeV9GYXRhbEVycm9yKCJGYWlsZWQgdG8gb3BlbiAvZGV2L3VyYW5kb20iKTsKKy0gICAgfQogKyAgICB3aGlsZSAoc2l6ZSA+IDApIHsKICsgICAgICAgIC8qIGdldGVudHJvcHkoKSBpcyBsaW1pdGVkIHRvIHJldHVybmluZyB1cCB0byAyNTYgYnl0ZXMuIENhbGwgaXQKICsgICAgICAgICAgIG11bHRpcGxlIHRpbWVzIGlmIG1vcmUgYnl0ZXMgYXJlIHJlcXVlc3RlZC4gKi8KICsgICAgICAgIFB5X3NzaXplX3QgbGVuID0gUHlfTUlOKHNpemUsIDI1Nik7CiArICAgICAgICBpbnQgcmVzOwotKworIAorLSAgICB3aGlsZSAoMCA8IHNpemUpCistICAgIHsKKy0gICAgICAgIGRvIHsKKy0gICAgICAgICAgICBuID0gcmVhZChmZCwgYnVmZmVyLCAoc2l6ZV90KXNpemUpOworLSAgICAgICAgfSB3aGlsZSAobiA8IDAgJiYgZXJybm8gPT0gRUlOVFIpOwogKyAgICAgICAgaWYgKHJhaXNlKSB7CiArICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogKyAgICAgICAgICAgIHJlcyA9IGdldGVudHJvcHkoYnVmZmVyLCBsZW4pOwpAQCAtMzA5LDcgKzMxMSwxMSBAQAogKyAgICAgICAgZWxzZSB7CiArICAgICAgICAgICAgcmVzID0gZ2V0ZW50cm9weShidWZmZXIsIGxlbik7CiArICAgICAgICB9Ci0rCisgCistICAgICAgICBpZiAobiA8PSAwKSB7CistICAgICAgICAgICAgLyogcmVhZCgpIGZhaWxlZCBvciByZXR1cm5lZCAwIGJ5dGVzICovCistICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiRmFpbGVkIHRvIHJlYWQgYnl0ZXMgZnJvbSAvZGV2L3VyYW5kb20iKTsKKy0gICAgICAgICAgICBicmVhazsKICsgICAgICAgIGlmIChyZXMgPCAwKSB7CiArICAgICAgICAgICAgLyogRU5PU1lTOiB0aGUgc3lzY2FsbCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBydW5uaW5nIGtlcm5lbC4KICsgICAgICAgICAgICAgICBFUEVSTTogdGhlIHN5c2NhbGwgaXMgYmxvY2tlZCBieSBhIHNlY3VyaXR5IHBvbGljeSAoZXg6IFNFQ0NPTVApCkBAIC0zMzQsNzEgKzM0MCw0NCBAQAogKyAgICAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiArICAgICAgICAgICAgfQogKyAgICAgICAgICAgIHJldHVybiAtMTsKLSsgICAgICAgIH0KKyAgICAgICAgIH0KKy0gICAgICAgIGJ1ZmZlciArPSBuOworLSAgICAgICAgc2l6ZSAtPSBuOwogKwogKyAgICAgICAgYnVmZmVyICs9IGxlbjsKICsgICAgICAgIHNpemUgLT0gbGVuOwotKyAgICB9CisgICAgIH0KKy0gICAgY2xvc2UoZmQpOwogKyAgICByZXR1cm4gMTsKLSt9CisgfQogKyNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfR0VURU5UUk9QWSkgJiYgIWRlZmluZWQoc3VuKSAqLworIAorLS8qIFJlYWQgJ3NpemUnIHJhbmRvbSBieXRlcyBmcm9tIHB5X2dldHJhbmRvbSgpLiBGYWxsIGJhY2sgb24gcmVhZGluZyBmcm9tCistICAgL2Rldi91cmFuZG9tIGlmIGdldHJhbmRvbSgpIGlzIG5vdCBhdmFpbGFibGUuCisgCistICAgUmV0dXJuIDAgb24gc3VjY2Vzcy4gUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IuICovCisrc3RhdGljIHN0cnVjdCB7CisrICAgIGludCBmZDsKKysgICAgZGV2X3Qgc3RfZGV2OworKyAgICBpbm9fdCBzdF9pbm87CisrfSB1cmFuZG9tX2NhY2hlID0geyAtMSB9OwogKwotIAotIHN0YXRpYyBzdHJ1Y3QgewotICAgICBpbnQgZmQ7Ci1AQCAtMjE3LDEyNyArMjczLDEyMyBAQCBzdGF0aWMgc3RydWN0IHsKLSAgICAgaW5vX3Qgc3RfaW5vOwotIH0gdXJhbmRvbV9jYWNoZSA9IHsgLTEgfTsKLSAKICsvKiBSZWFkIHJhbmRvbSBieXRlcyBmcm9tIHRoZSAvZGV2L3VyYW5kb20gZGV2aWNlOgotIAotLS8qIFJlYWQgc2l6ZSBieXRlcyBmcm9tIC9kZXYvdXJhbmRvbSBpbnRvIGJ1ZmZlci4KLS0gICBDYWxsIFB5X0ZhdGFsRXJyb3IoKSBvbiBlcnJvci4gKi8KLS1zdGF0aWMgdm9pZAotLWRldl91cmFuZG9tX25vcmFpc2UodW5zaWduZWQgY2hhciAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUpCi0tewotLSAgICBpbnQgZmQ7Ci0tICAgIFB5X3NzaXplX3QgbjsKKysKICsgICAtIFJldHVybiAwIG9uIHN1Y2Nlc3MKICsgICAtIFJhaXNlIGFuIGV4Y2VwdGlvbiAoaWYgcmFpc2UgaXMgbm9uLXplcm8pIGFuZCByZXR1cm4gLTEgb24gZXJyb3IKLSAKLS0gICAgYXNzZXJ0ICgwIDwgc2l6ZSk7CisrCiArICAgUG9zc2libGUgY2F1c2VzIG9mIGVycm9yczoKLSAKLS0jaWZkZWYgUFlfR0VUUkFORE9NCi0tICAgIGlmIChweV9nZXRyYW5kb20oYnVmZmVyLCBzaXplLCAwKSA9PSAxKQotLSAgICAgICAgcmV0dXJuOwotLSAgICAvKiBnZXRyYW5kb20oKSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBydW5uaW5nIGtlcm5lbCwgZmFsbCBiYWNrCi0tICAgICAqIG9uIHJlYWRpbmcgL2Rldi91cmFuZG9tICovCi0tI2VuZGlmCisrCiArICAgLSBvcGVuKCkgZmFpbGVkIHdpdGggRU5PRU5ULCBFTlhJTywgRU5PREVWLCBFQUNDRVM6IHRoZSAvZGV2L3VyYW5kb20gZGV2aWNlCiArICAgICB3YXMgbm90IGZvdW5kLiBGb3IgZXhhbXBsZSwgaXQgd2FzIHJlbW92ZWQgbWFudWFsbHkgb3Igbm90IGV4cG9zZWQgaW4gYQogKyAgICAgY2hyb290IG9yIGNvbnRhaW5lci4KICsgICAtIG9wZW4oKSBmYWlsZWQgd2l0aCBhIGRpZmZlcmVudCBlcnJvcgogKyAgIC0gZnN0YXQoKSBmYWlsZWQKICsgICAtIHJlYWQoKSBmYWlsZWQgb3IgcmV0dXJuZWQgMAotIAotLSAgICBmZCA9IF9QeV9vcGVuX25vcmFpc2UoIi9kZXYvdXJhbmRvbSIsIE9fUkRPTkxZKTsKLS0gICAgaWYgKGZkIDwgMCkKLS0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIkZhaWxlZCB0byBvcGVuIC9kZXYvdXJhbmRvbSIpOworKwogKyAgIHJlYWQoKSBpcyByZXRyaWVkIGlmIGl0IGZhaWxlZCB3aXRoIEVJTlRSOiBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbC4KLSAKLS0gICAgd2hpbGUgKDAgPCBzaXplKQotLSAgICB7Ci0tICAgICAgICBkbyB7Ci0tICAgICAgICAgICAgbiA9IHJlYWQoZmQsIGJ1ZmZlciwgKHNpemVfdClzaXplKTsKLS0gICAgICAgIH0gd2hpbGUgKG4gPCAwICYmIGVycm5vID09IEVJTlRSKTsKLS0gICAgICAgIGlmIChuIDw9IDApCi0tICAgICAgICB7Ci0tICAgICAgICAgICAgLyogc3RvcCBvbiBlcnJvciBvciBpZiByZWFkKHNpemUpIHJldHVybmVkIDAgKi8KLS0gICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJGYWlsZWQgdG8gcmVhZCBieXRlcyBmcm9tIC9kZXYvdXJhbmRvbSIpOwotLSAgICAgICAgICAgIGJyZWFrOwotLSAgICAgICAgfQotLSAgICAgICAgYnVmZmVyICs9IG47Ci0tICAgICAgICBzaXplIC09IChQeV9zc2l6ZV90KW47Ci0tICAgIH0KLS0gICAgY2xvc2UoZmQpOwotLX0KKysKICsgICBUaGUgZmlsZSBkZXNjcmlwdG9yIG9mIHRoZSBkZXZpY2UgaXMga2VwdCBvcGVuIGJldHdlZW4gY2FsbHMgdG8gYXZvaWQgdXNpbmcKICsgICBtYW55IGZpbGUgZGVzY3JpcHRvcnMgd2hlbiBydW4gaW4gcGFyYWxsZWwgZnJvbSBtdWx0aXBsZSB0aHJlYWRzOgogKyAgIHNlZSB0aGUgaXNzdWUgIzE4NzU2LgpAQCAtNDA2LDkgKzM4NSw3IEBACiArICAgc3RfZGV2IGFuZCBzdF9pbm8gZmllbGRzIG9mIHRoZSBmaWxlIGRlc2NyaXB0b3IgKGZyb20gZnN0YXQoKSkgYXJlIGNhY2hlZCB0bwogKyAgIGNoZWNrIGlmIHRoZSBmaWxlIGRlc2NyaXB0b3Igd2FzIHJlcGxhY2VkIGJ5IGEgZGlmZmVyZW50IGZpbGUgKHdoaWNoIGlzCiArICAgbGlrZWx5IGEgYnVnIGluIHRoZSBhcHBsaWNhdGlvbik6IHNlZSB0aGUgaXNzdWUgIzIxMjA3LgotIAotLS8qIFJlYWQgc2l6ZSBieXRlcyBmcm9tIC9kZXYvdXJhbmRvbSBpbnRvIGJ1ZmZlci4KLS0gICBSZXR1cm4gMCBvbiBzdWNjZXNzLCByYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBlcnJvci4gKi8KKysKICsgICBJZiB0aGUgZmlsZSBkZXNjcmlwdG9yIHdhcyBjbG9zZWQgb3IgcmVwbGFjZWQsIG9wZW4gYSBuZXcgZmlsZSBkZXNjcmlwdG9yCiArICAgYnV0IGRvbid0IGNsb3NlIHRoZSBvbGQgZmlsZSBkZXNjcmlwdG9yOiBpdCBwcm9iYWJseSBwb2ludHMgdG8gc29tZXRoaW5nCiArICAgaW1wb3J0YW50IGZvciBzb21lIHRoaXJkLXBhcnR5IGNvZGUuICovCkBAIC00MjIsMjIgKzM5OSwyNCBAQAogLSNpZmRlZiBQWV9HRVRSQU5ET00KIC0gICAgaW50IHJlczsKIC0jZW5kaWYKLSAKKy0KIC0gICAgaWYgKHNpemUgPD0gMCkKIC0gICAgICAgIHJldHVybiAwOwotKyAgICBpZiAocmFpc2UpIHsKLSsgICAgICAgIHN0cnVjdCBfUHlfc3RhdF9zdHJ1Y3Qgc3Q7CiAgCiAtI2lmZGVmIFBZX0dFVFJBTkRPTQogLSAgICByZXMgPSBweV9nZXRyYW5kb20oYnVmZmVyLCBzaXplLCAxKTsKLS0gICAgaWYgKHJlcyA8IDApCistICAgIGlmIChyZXMgPCAwKSB7CiAtICAgICAgICByZXR1cm4gLTE7Ci0tICAgIGlmIChyZXMgPT0gMSkKKy0gICAgfQorLSAgICBpZiAocmVzID09IDEpIHsKIC0gICAgICAgIHJldHVybiAwOwotLSAgICAvKiBnZXRyYW5kb20oKSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBydW5uaW5nIGtlcm5lbCwgZmFsbCBiYWNrCi0tICAgICAqIG9uIHJlYWRpbmcgL2Rldi91cmFuZG9tICovCistICAgIH0KKy0gICAgLyogZ2V0cmFuZG9tKCkgZmFpbGVkIHdpdGggRU5PU1lTIG9yIEVQRVJNLAorLSAgICAgICBmYWxsIGJhY2sgb24gcmVhZGluZyAvZGV2L3VyYW5kb20gKi8KIC0jZW5kaWYKLS0KKysgICAgaWYgKHJhaXNlKSB7CisrICAgICAgICBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0IHN0OworIAogLSAgICBpZiAodXJhbmRvbV9jYWNoZS5mZCA+PSAwKSB7CiAtICAgICAgICAvKiBEb2VzIHRoZSBmZCBwb2ludCB0byB0aGUgc2FtZSB0aGluZyBhcyBiZWZvcmU/IChpc3N1ZSAjMjEyMDcpICovCiAtICAgICAgICBpZiAoX1B5X2ZzdGF0X25vcmFpc2UodXJhbmRvbV9jYWNoZS5mZCwgJnN0KQpAQCAtNTE2LDggKzQ5NSw5IEBACiAgCiAtICAgIGRvIHsKIC0gICAgICAgIG4gPSBfUHlfcmVhZChmZCwgYnVmZmVyLCAoc2l6ZV90KXNpemUpOwotLSAgICAgICAgaWYgKG4gPT0gLTEpCistICAgICAgICBpZiAobiA9PSAtMSkgewogLSAgICAgICAgICAgIHJldHVybiAtMTsKKy0gICAgICAgIH0KIC0gICAgICAgIGlmIChuID09IDApIHsKIC0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfUnVudGltZUVycm9yLAogLSAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byByZWFkICV6aSBieXRlcyBmcm9tIC9kZXYvdXJhbmRvbSIsCkBAIC01NjYsNyArNTQ2LDcgQEAKICAgICAgcmV0dXJuIDA7CiAgfQogIAotQEAgLTM0OSw4ICs0MDEsOCBAQCBkZXZfdXJhbmRvbV9jbG9zZSh2b2lkKQorQEAgLTM3Niw4ICs0MDIsOCBAQCBkZXZfdXJhbmRvbV9jbG9zZSh2b2lkKQogICAgICAgICAgdXJhbmRvbV9jYWNoZS5mZCA9IC0xOwogICAgICB9CiAgfQpAQCAtNTc2LDcgKzU1Niw3IEBACiAgCiAgLyogRmlsbCBidWZmZXIgd2l0aCBwc2V1ZG8tcmFuZG9tIGJ5dGVzIGdlbmVyYXRlZCBieSBhIGxpbmVhciBjb25ncnVlbnQKICAgICBnZW5lcmF0b3IgKExDRyk6Ci1AQCAtMzczLDI5ICs0MjUsOTggQEAgbGNnX3VyYW5kb20odW5zaWduZWQgaW50IHgwLCB1bnNpZ25lZCBjaAorQEAgLTQwMCwzMSArNDI2LDEwMCBAQCBsY2dfdXJhbmRvbSh1bnNpZ25lZCBpbnQgeDAsIHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciwgc2l6ZV90IHNpemUpCiAgICAgIH0KICB9CiAgCkBAIC02NjEsNyArNjQxLDcgQEAKICAjZWxzZQogLSAgICByZXR1cm4gZGV2X3VyYW5kb21fcHl0aG9uKChjaGFyKilidWZmZXIsIHNpemUpOwogKyAgICByZXMgPSBweV9nZXRlbnRyb3B5KGJ1ZmZlciwgc2l6ZSwgcmFpc2UpOwotICNlbmRpZgorKyNlbmRpZgogKyAgICBpZiAocmVzIDwgMCkgewogKyAgICAgICAgcmV0dXJuIC0xOwogKyAgICB9CkBAIC02NzMsOSArNjUzLDkgQEAKICsjZW5kaWYKICsKICsgICAgcmV0dXJuIGRldl91cmFuZG9tKGJ1ZmZlciwgc2l6ZSwgcmFpc2UpOwotKyNlbmRpZgotK30KLSsKKyAjZW5kaWYKKyB9CisgCiArLyogRmlsbCBidWZmZXIgd2l0aCBzaXplIHBzZXVkby1yYW5kb20gYnl0ZXMgZnJvbSB0aGUgb3BlcmF0aW5nIHN5c3RlbSByYW5kb20KICsgICBudW1iZXIgZ2VuZXJhdG9yIChSTkcpLiBJdCBpcyBzdWl0YWJsZSBmb3IgbW9zdCBjcnlwdG9ncmFwaGljIHB1cnBvc2VzCiArICAgZXhjZXB0IGxvbmcgbGl2aW5nIHByaXZhdGUga2V5cyBmb3IgYXN5bW1ldHJpYyBlbmNyeXB0aW9uLgpAQCAtNjg1LDEwICs2NjUsMTIgQEAKICtfUHlPU19VUmFuZG9tKHZvaWQgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplKQogK3sKICsgICAgcmV0dXJuIHB5dXJhbmRvbShidWZmZXIsIHNpemUsIDEpOwotIH0KLSAKKyt9CisrCiAgdm9pZAotQEAgLTQzNiwxMyArNTU3LDE0IEBAIF9QeVJhbmRvbV9Jbml0KHZvaWQpCisgX1B5UmFuZG9tX0luaXQodm9pZCkKKyB7CitAQCAtNDYzLDEzICs1NTgsMTQgQEAgX1B5UmFuZG9tX0luaXQodm9pZCkKICAgICAgICAgIH0KICAgICAgfQogICAgICBlbHNlIHsKQEAgLTcxMCw3ICs2OTIsNyBAQAogICAgICB9CiAgfQogIAotQEAgLTQ1NCw4ICs1NzYsNiBAQCBfUHlSYW5kb21fRmluaSh2b2lkKQorQEAgLTQ4MSw4ICs1NzcsNiBAQCBfUHlSYW5kb21fRmluaSh2b2lkKQogICAgICAgICAgQ3J5cHRSZWxlYXNlQ29udGV4dChoQ3J5cHRQcm92LCAwKTsKICAgICAgICAgIGhDcnlwdFByb3YgPSAwOwogICAgICB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zXzMuNS4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uM18zLjUuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmZmN2M5ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zXzMuNS4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjI0ICswLDAgQEAKLXJlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLmluYwotCi1ERVBFTkRTID0gInB5dGhvbjMtbmF0aXZlIGxpYmZmaSBiemlwMiBkYiBnZGJtIG9wZW5zc2wgcmVhZGxpbmUgc3FsaXRlMyB6bGliIHZpcnR1YWwvbGliaW50bCB4eiIKLVBSID0gIiR7SU5DX1BSfS4wIgotUFlUSE9OX01BSk1JTiA9ICIzLjUiCi1QWVRIT05fQklOQUJJPSAiJHtQWVRIT05fTUFKTUlOfW0iCi1ESVNUUk9fU1JDX1VSSSA/PSAiZmlsZTovL3NpdGVjdXN0b21pemUucHkiCi1ESVNUUk9fU1JDX1VSSV9saW51eHN0ZGJhc2UgPSAiIgotU1JDX1VSSSA9ICJodHRwOi8vd3d3LnB5dGhvbi5vcmcvZnRwL3B5dGhvbi8ke1BWfS9QeXRob24tJHtQVn0udGFyLnh6IFwKLWZpbGU6Ly9weXRob24tY29uZmlnLnBhdGNoIFwKLWZpbGU6Ly8wMDAtY3Jvc3MtY29tcGlsZS5wYXRjaCBcCi1maWxlOi8vMDMwLWZpeHVwLWluY2x1ZGUtZGlycy5wYXRjaCBcCi1maWxlOi8vMDcwLWRvbnQtY2xlYW4taXBrZy1pbnN0YWxsLnBhdGNoIFwKLWZpbGU6Ly8wODAtZGlzdHV0aWxzLWRvbnRfYWRqdXN0X2ZpbGVzLnBhdGNoIFwKLWZpbGU6Ly8xMzAtcmVhZGxpbmUtc2V0dXAucGF0Y2ggXAotZmlsZTovLzE1MC1maXgtc2V0dXB0ZXJtLnBhdGNoIFwKLWZpbGU6Ly8wMDAxLWgycHktRml4LWlzc3VlLTEzMDMyLXdoZXJlLWl0LWZhaWxzLXdpdGgtVW5pY29kZURlY28ucGF0Y2ggXAotZmlsZTovL3R3ZWFrLU1VTFRJQVJDSC1mb3ItcG93ZXJwYy1saW51eC1nbnVzcGUucGF0Y2ggXAotJHtESVNUUk9fU1JDX1VSSX0gXAotIgotCi1TUkNfVVJJICs9ICJcCi0gICAgICAgICAgICBmaWxlOi8vMDMtZml4LXRraW50ZXItZGV0ZWN0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9hdm9pZF93YXJuaW5nX2Fib3V0X3RraW50ZXIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2NnaV9weS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vaG9zdF9pbmNsdWRlX2NvbnRhbWluYXRpb24ucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3B5dGhvbi0zLjMtbXVsdGlsaWIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3NodXRpbC1mb2xsb3ctc3ltbGluay1maXgucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3N5c3Jvb3QtaW5jbHVkZS1oZWFkZXJzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly91bml4Y2NvbXBpbGVyLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9hdm9pZC1uY3Vyc2Vzdy1pbmNsdWRlLXBhdGgucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3B5dGhvbjMtdXNlLUNST1NTUFlUSE9OUEFUSC1mb3ItUFlUSE9OX0ZPUl9CVUlMRC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcHl0aG9uMy1zZXR1cC5weS1uby1ob3N0LWhlYWRlcnMtbGlicy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vc3lzY29uZmlnLnB5LWFkZC1fUFlUSE9OX1BST0pFQ1RfU1JDLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9zZXR1cC5weS1jaGVjay1jcm9zc19jb21waWxpbmctd2hlbi1nZXQtRkxBR1MucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3NldHVwLnB5LWZpbmQtbGlicmFyaWVzLWluLXN0YWdpbmctZGlycy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLmFjLWZpeC1MSUJQTC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcHl0aG9uMy1maXgtQ1ZFLTIwMTYtMTAwMDExMC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vdXBzdHJlYW0tcmFuZG9tLWZpeGVzLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjg5MDZlZmJhY2ZjZGM3YzNjOTE5OGFlZWZhZmQxNTllIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAwMTBmNTYxMDBiOWI3NDI1OWViY2Q1ZDRiMjk1YTMyMzI0YjU4YjUxNzQwM2ExMGQxYTJhYTdjYjIyYmNhNDAiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTZiNjAyNTgxMzBlNGVkMTBkMzEwMTUxN2ViNWI5Mzg1IgotCi0jIGV4Y2x1ZGUgcHJlLXJlbGVhc2VzIGZvciBib3RoIHB5dGhvbiAyLnggYW5kIDMueAotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiW1BwXXl0aG9uLSg/UDxwdmVyPlxkKyhcLlxkKykrKS50YXIiCi0KLVMgPSAiJHtXT1JLRElSfS9QeXRob24tJHtQVn0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIG11bHRpbGliX2hlYWRlciBweXRob24zbmF0aXZlIHBrZ2NvbmZpZwotCi1DT05GSUdVUkVPUFRTICs9ICIgLS13aXRoLXN5c3RlbS1mZmkgIgotCi1DQUNIRURfQ09ORklHVVJFVkFSUyA9ICJhY19jdl9oYXZlX2NoZmxhZ3M9bm8gXAotICAgICAgICAgICAgICAgIGFjX2N2X2hhdmVfbGNoZmxhZ3M9bm8gXAotICAgICAgICAgICAgICAgIGFjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdD15ZXMgXAotICAgICAgICAgICAgICAgIGFjX2N2X2J1Z2d5X2dldGFkZHJpbmZvPW5vIFwKLSAgICAgICAgICAgICAgICBhY19jdl9maWxlX19kZXZfcHRteD15ZXMgXAotICAgICAgICAgICAgICAgIGFjX2N2X2ZpbGVfX2Rldl9wdGM9bm8gXAotIgotCi1UQVJHRVRfQ0NfQVJDSCArPSAiLUROREVCVUcgLWZuby1pbmxpbmUiCi1TREtfQ0NfQVJDSCArPSAiLUROREVCVUcgLWZuby1pbmxpbmUiCi1FWFRSQV9PRU1BS0UgKz0gIkNST1NTX0NPTVBJTEU9eWVzIgotRVhUUkFfT0VDT05GICs9ICJDUk9TU1BZVEhPTlBBVEg9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvIC0td2l0aG91dC1lbnN1cmVwaXAiCi0KLWV4cG9ydCBDUk9TU19DT01QSUxFID0gIiR7VEFSR0VUX1BSRUZJWH0iCi1leHBvcnQgX1BZVEhPTl9QUk9KRUNUX0JBU0UgPSAiJHtCfSIKLWV4cG9ydCBfUFlUSE9OX1BST0pFQ1RfU1JDID0gIiR7U30iCi1leHBvcnQgQ0NTSEFSRUQgPSAiLWZQSUMiCi0KLSMgRml4IGNyb3NzIGNvbXBpbGF0aW9uIG9mIGRpZmZlcmVudCBtb2R1bGVzCi1leHBvcnQgQ1JPU1NQWVRIT05QQVRIID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkLzoke0J9L2J1aWxkL2xpYi5saW51eC0ke1RBUkdFVF9BUkNIfS0ke1BZVEhPTl9NQUpNSU59OiR7U30vTGliOiR7U30vTGliL3BsYXQtbGludXgiCi0KLSMgTm8gY3R5cGVzIG9wdGlvbiBmb3IgcHl0aG9uIDMKLVBZVEhPTkxTQk9QVFMgPSAiIgotCi1kb19jb25maWd1cmVfYXBwZW5kKCkgewotCXJtIC1mICR7U30vTWFrZWZpbGUub3JpZwotCWF1dG9yZWNvbmYgLVdjcm9zcyAtLXZlcmJvc2UgLS1pbnN0YWxsIC0tZm9yY2UgLS1leGNsdWRlPWF1dG9wb2ludCAuLi9QeXRob24tJHtQVn0vTW9kdWxlcy9fY3R5cGVzL2xpYmZmaQotfQotCi1kb19jb21waWxlKCkgewotICAgICAgICAjIHJlZ2VuZXJhdGUgcGxhdGZvcm0gc3BlY2lmaWMgZmlsZXMsIGJlY2F1c2UgdGhleSBkZXBlbmQgb24gc3lzdGVtIGhlYWRlcnMKLSAgICAgICAgY2QgJHtTfS9MaWIvcGxhdC1saW51eCoKLSAgICAgICAgaW5jbHVkZT0ke1NUQUdJTkdfSU5DRElSfSAke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMyBcCi0gICAgICAgICAgICAgICAgJHtTfS9Ub29scy9zY3JpcHRzL2gycHkucHkgLWkgJyh1X2xvbmcpJyBcCi0gICAgICAgICAgICAgICAgJHtTVEFHSU5HX0lOQ0RJUn0vZGxmY24uaCBcCi0gICAgICAgICAgICAgICAgJHtTVEFHSU5HX0lOQ0RJUn0vbGludXgvY2Ryb20uaCBcCi0gICAgICAgICAgICAgICAgJHtTVEFHSU5HX0lOQ0RJUn0vbmV0aW5ldC9pbi5oIFwKLSAgICAgICAgICAgICAgICAke1NUQUdJTkdfSU5DRElSfS9zeXMvdHlwZXMuaAotICAgICAgICBzZWQgLWUgJ3MsJHtTVEFHSU5HX0RJUl9IT1NUfSwsZycgLWkgKi5weQotICAgICAgICBjZCAtCi0KLQotCSMgcmVtb3ZlIGFueSBib2d1cyBMRF9MSUJSQVJZX1BBVEgKLQlzZWQgLWkgLWUgcyxSVU5TSEFSRUQ9LiosUlVOU0hBUkVEPSwgTWFrZWZpbGUKLQotCWlmIFsgISAtZiBNYWtlZmlsZS5vcmlnIF07IHRoZW4KLQkJaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlIE1ha2VmaWxlLm9yaWcKLQlmaQotCXNlZCAtaSAtZSAncyxeQ09ORklHVVJFX0xERkxBR1M9LiosQ09ORklHVVJFX0xERkxBR1M9LUwuIC1MJHtTVEFHSU5HX0xJQkRJUn0sZycgXAotCQktZSAncyxsaWJkaXI9JHtsaWJkaXJ9LGxpYmRpcj0ke1NUQUdJTkdfTElCRElSfSxnJyBcCi0JCS1lICdzLGxpYmV4ZWNkaXI9JHtsaWJleGVjZGlyfSxsaWJleGVjZGlyPSR7U1RBR0lOR19ESVJfSE9TVH0ke2xpYmV4ZWNkaXJ9LGcnIFwKLQkJLWUgJ3MsXkxJQkRJUj0uKixMSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0sZycgXAotCQktZSAncyxpbmNsdWRlZGlyPSR7aW5jbHVkZWRpcn0saW5jbHVkZWRpcj0ke1NUQUdJTkdfSU5DRElSfSxnJyBcCi0JCS1lICdzLF5JTkNMVURFRElSPS4qLElOQ0xVREU9JHtTVEFHSU5HX0lOQ0RJUn0sZycgXAotCQktZSAncyxeQ09ORklOQ0xVREVESVI9LiosQ09ORklOQ0xVREU9JHtTVEFHSU5HX0lOQ0RJUn0sZycgXAotCQlNYWtlZmlsZQotCSMgc2F2ZSBjb3B5IG9mIGl0IG5vdywgYmVjYXVzZSBpZiB3ZSBkbyBpdCBpbiBkb19pbnN0YWxsIGFuZCAKLQkjIHRoZW4gY2FsbCBkb19pbnN0YWxsIHR3aWNlIHdlIGdldCBNYWtlZmlsZS5vcmlnID09IE1ha2VmaWxlLnN5c3Jvb3QKLQlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUgTWFrZWZpbGUuc3lzcm9vdAotCi0Jb2VfcnVubWFrZSBIT1NUUEdFTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcGdlbiBcCi0JCUhPU1RQWVRIT049JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3B5dGhvbjMgXAotCQlTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCi0JCVNUQUdJTkdfQkFTRUxJQkRJUj0ke1NUQUdJTkdfQkFTRUxJQkRJUn0gXAotCQlTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCi0JCUxJQj0ke2Jhc2VsaWJ9IFwKLQkJQVJDSD0ke1RBUkdFVF9BUkNIfSBcCi0JCU9QVD0iJHtDRkxBR1N9IiBsaWJweXRob24zLnNvCi0KLQlvZV9ydW5tYWtlIEhPU1RQR0VOPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9wZ2VuIFwKLQkJSE9TVFBZVEhPTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMyBcCi0JCVNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKLQkJU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAotCQlTVEFHSU5HX0JBU0VMSUJESVI9JHtTVEFHSU5HX0JBU0VMSUJESVJ9IFwKLQkJTElCPSR7YmFzZWxpYn0gXAotCQlBUkNIPSR7VEFSR0VUX0FSQ0h9IFwKLQkJT1BUPSIke0NGTEFHU30iCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0JIyBtYWtlIGluc3RhbGwgbmVlZHMgdGhlIG9yaWdpbmFsIE1ha2VmaWxlLCBvciBvdGhlcndpc2UgdGhlIGluY2x1ZXMgd291bGQKLQkjIGdvIHRvICR7RH0ke1NUQUdJTkcuLi59Ly4uLgotCWluc3RhbGwgLW0gMDY0NCBNYWtlZmlsZS5vcmlnIE1ha2VmaWxlCi0KLQlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnCi0JaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnCi0KLQkjIHJlcnVuIHRoZSBidWlsZCBvbmNlIGFnYWluIHdpdGggb3JpZ2luYWwgbWFrZWZpbGUgdGhpcyB0aW1lCi0JIyBydW4gaW5zdGFsbCBpbiBhIHNlcGFyYXRlIHN0ZXAgdG8gYXZvaWQgY29tcGlsZS9pbnN0YWxsIHJhY2UKLQlvZV9ydW5tYWtlIEhPU1RQR0VOPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9wZ2VuIFwKLQkJSE9TVFBZVEhPTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMyBcCi0JCVNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKLQkJU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAotCQlTVEFHSU5HX0JBU0VMSUJESVI9JHtTVEFHSU5HX0JBU0VMSUJESVJ9IFwKLQkJTElCPSR7YmFzZWxpYn0gXAotCQlBUkNIPSR7VEFSR0VUX0FSQ0h9IFwKLQkJREVTVERJUj0ke0R9IExJQkRJUj0ke2xpYmRpcn0KLQkKLQlvZV9ydW5tYWtlIEhPU1RQR0VOPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9wZ2VuIFwKLQkJSE9TVFBZVEhPTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMyBcCi0JCVNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKLQkJU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAotCQlTVEFHSU5HX0JBU0VMSUJESVI9JHtTVEFHSU5HX0JBU0VMSUJESVJ9IFwKLQkJTElCPSR7YmFzZWxpYn0gXAotCQlBUkNIPSR7VEFSR0VUX0FSQ0h9IFwKLQkJREVTVERJUj0ke0R9IExJQkRJUj0ke2xpYmRpcn0gaW5zdGFsbAotCi0JIyBhdm9pZCBjb25mbGljdCB3aXRoIDJ0bzMgZnJvbSBQeXRob24gMgotCXJtIC1mICR7RH0vJHtiaW5kaXJ9LzJ0bzMKLQotCWluc3RhbGwgLW0gMDY0NCBNYWtlZmlsZS5zeXNyb290ICR7RH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnL01ha2VmaWxlCi0JaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlLnN5c3Jvb3QgJHtEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWctJHtQWVRIT05fTUFKTUlOfSR7UFlUSE9OX0FCSX0vTWFrZWZpbGUKLQotCWlmIFsgLWUgJHtXT1JLRElSfS9zaXRlY3VzdG9taXplLnB5IF07IHRoZW4KLQkJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc2l0ZWN1c3RvbWl6ZS5weSAke0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59Ci0JZmkKLQotCW9lX211bHRpbGliX2hlYWRlciBweXRob24ke1BZVEhPTl9CSU5BQkl9L3B5Y29uZmlnLmgKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrICgpIHsKLQljcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0gVEVSTUlORk9fRElSUz0nJHtzeXNjb25mZGlyfS90ZXJtaW5mbzovZXRjL3Rlcm1pbmZvOi91c3Ivc2hhcmUvdGVybWluZm86L3Vzci9zaGFyZS9taXNjL3Rlcm1pbmZvOi9saWIvdGVybWluZm8nCi19Ci0KLVNTVEFURV9TQ0FOX0ZJTEVTICs9ICJNYWtlZmlsZSIKLVBBQ0tBR0VfUFJFUFJPQ0VTU19GVU5DUyArPSAicHlfcGFja2FnZV9wcmVwcm9jZXNzIgotCi1weV9wYWNrYWdlX3ByZXByb2Nlc3MgKCkgewotCSMgY29weSBiYWNrIHRoZSBvbGQgTWFrZWZpbGUgdG8gZml4IHRhcmdldCBwYWNrYWdlCi0JaW5zdGFsbCAtbSAwNjQ0ICR7Qn0vTWFrZWZpbGUub3JpZyAke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy9NYWtlZmlsZQotCWluc3RhbGwgLW0gMDY0NCAke0J9L01ha2VmaWxlLm9yaWcgJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWctJHtQWVRIT05fTUFKTUlOfSR7UFlUSE9OX0FCSX0vTWFrZWZpbGUKLQkjIFJlbW92ZSByZWZlcmVuY2VzIHRvIGJ1aWxkbWFjaGluZSBwYXRocyBpbiB0YXJnZXQgTWFrZWZpbGUgYW5kIF9zeXNjb25maWdkYXRhCi0Jc2VkIC1pIC1lICdzOi0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH06OmcnIC1lIHM6Jy0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9Jzo6ZyBcCi0JCSR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnL01ha2VmaWxlIFwKLQkJJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWctJHtQWVRIT05fTUFKTUlOfSR7UFlUSE9OX0FCSX0vTWFrZWZpbGUgXAotCQkke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19zeXNjb25maWdkYXRhLnB5Ci19Ci0KLXJlcXVpcmUgcHl0aG9uLSR7UFlUSE9OX01BSk1JTn0tbWFuaWZlc3QuaW5jCi0KLSMgbWFudWFsIGRlcGVuZGVuY3kgYWRkaXRpb25zCi1SUFJPVklERVNfJHtQTn0tY29yZSA9ICIke1BOfSIKLVJSRUNPTU1FTkRTXyR7UE59LWNvcmUgPSAiJHtQTn0tcmVhZGxpbmUiCi1SUkVDT01NRU5EU18ke1BOfS1jcnlwdCA9ICJvcGVuc3NsIgotUlJFQ09NTUVORFNfJHtQTn0tY3J5cHRfY2xhc3MtbmF0aXZlc2RrID0gIm5hdGl2ZXNkay1vcGVuc3NsIgotCi1GSUxFU18ke1BOfS0ydG8zICs9ICIke2JpbmRpcn0vMnRvMy0ke1BZVEhPTl9NQUpNSU59IgotRklMRVNfJHtQTn0tcHlkb2MgKz0gIiR7YmluZGlyfS9weWRvYyR7UFlUSE9OX01BSk1JTn0gJHtiaW5kaXJ9L3B5ZG9jMyIKLUZJTEVTXyR7UE59LWlkbGUgKz0gIiR7YmluZGlyfS9pZGxlMyAke2JpbmRpcn0vaWRsZSR7UFlUSE9OX01BSk1JTn0iCi0KLVBBQ0tBR0VTID0rICIke1BOfS1weXZlbnYiCi1GSUxFU18ke1BOfS1weXZlbnYgKz0gIiR7YmluZGlyfS9weXZlbnYtJHtQWVRIT05fTUFKTUlOfSAke2JpbmRpcn0vcHl2ZW52IgotCi0jIHBhY2thZ2UgbGlicHl0aG9uMwotUEFDS0FHRVMgPSsgImxpYnB5dGhvbjMgbGlicHl0aG9uMy1zdGF0aWNkZXYiCi1GSUxFU19saWJweXRob24zID0gIiR7bGliZGlyfS9saWJweXRob24qLnNvLioiCi1GSUxFU19saWJweXRob24zLXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnLSR7UFlUSE9OX0JJTkFCSX0vbGlicHl0aG9uJHtQWVRIT05fQklOQUJJfS5hIgotSU5TQU5FX1NLSVBfJHtQTn0tZGV2ICs9ICJkZXYtZWxmIgotCi0jIGNhdGNoIGFsbCB0aGUgcmVzdCAodW5zb3J0ZWQpCi1QQUNLQUdFUyArPSAiJHtQTn0tbWlzYyIKLVJERVBFTkRTXyR7UE59LW1pc2MgKz0gIiR7UE59LWNvcmUgJHtQTn0tZW1haWwgJHtQTn0tY29kZWNzICR7UE59LXRleHR1dGlscyAke1BOfS1hcmdwYXJzZSIKLVJERVBFTkRTXyR7UE59LW1vZHVsZXMgKz0gIiR7UE59LW1pc2MiCi1GSUxFU18ke1BOfS1taXNjID0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59IgotCi0jIGNhdGNoIG1hbnBhZ2UKLVBBQ0tBR0VTICs9ICIke1BOfS1tYW4iCi1GSUxFU18ke1BOfS1tYW4gPSAiJHtkYXRhZGlyfS9tYW4iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uM18zLjUuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjNfMy41LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTNkZjEyZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjNfMy41LjMuYmIKQEAgLTAsMCArMSwyMjcgQEAKK3JlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLmluYworCitERVBFTkRTID0gInB5dGhvbjMtbmF0aXZlIGxpYmZmaSBiemlwMiBkYiBnZGJtIG9wZW5zc2wgcmVhZGxpbmUgc3FsaXRlMyB6bGliIHZpcnR1YWwvbGliaW50bCB4eiIKK1BSID0gIiR7SU5DX1BSfS4wIgorUFlUSE9OX01BSk1JTiA9ICIzLjUiCitQWVRIT05fQklOQUJJPSAiJHtQWVRIT05fTUFKTUlOfW0iCitESVNUUk9fU1JDX1VSSSA/PSAiZmlsZTovL3NpdGVjdXN0b21pemUucHkiCitESVNUUk9fU1JDX1VSSV9saW51eHN0ZGJhc2UgPSAiIgorU1JDX1VSSSA9ICJodHRwOi8vd3d3LnB5dGhvbi5vcmcvZnRwL3B5dGhvbi8ke1BWfS9QeXRob24tJHtQVn0udGFyLnh6IFwKK2ZpbGU6Ly9weXRob24tY29uZmlnLnBhdGNoIFwKK2ZpbGU6Ly8wMDAxLWNyb3NzLWNvbXBpbGUtc3VwcG9ydC5wYXRjaCBcCitmaWxlOi8vMDMwLWZpeHVwLWluY2x1ZGUtZGlycy5wYXRjaCBcCitmaWxlOi8vMDcwLWRvbnQtY2xlYW4taXBrZy1pbnN0YWxsLnBhdGNoIFwKK2ZpbGU6Ly8wODAtZGlzdHV0aWxzLWRvbnRfYWRqdXN0X2ZpbGVzLnBhdGNoIFwKK2ZpbGU6Ly8xMzAtcmVhZGxpbmUtc2V0dXAucGF0Y2ggXAorZmlsZTovLzE1MC1maXgtc2V0dXB0ZXJtLnBhdGNoIFwKK2ZpbGU6Ly8wMDAxLWgycHktRml4LWlzc3VlLTEzMDMyLXdoZXJlLWl0LWZhaWxzLXdpdGgtVW5pY29kZURlY28ucGF0Y2ggXAorZmlsZTovL3R3ZWFrLU1VTFRJQVJDSC1mb3ItcG93ZXJwYy1saW51eC1nbnVzcGUucGF0Y2ggXAorZmlsZTovL3N1cHBvcnRfU09VUkNFX0RBVEVfRVBPQ0hfaW5fcHlfY29tcGlsZS5wYXRjaCBcCiske0RJU1RST19TUkNfVVJJfSBcCisiCisKK1NSQ19VUkkgKz0gIlwKKyAgICAgICAgICAgIGZpbGU6Ly8wMy1maXgtdGtpbnRlci1kZXRlY3Rpb24ucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2F2b2lkX3dhcm5pbmdfYWJvdXRfdGtpbnRlci5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vY2dpX3B5LnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9ob3N0X2luY2x1ZGVfY29udGFtaW5hdGlvbi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcHl0aG9uLTMuMy1tdWx0aWxpYi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vc2h1dGlsLWZvbGxvdy1zeW1saW5rLWZpeC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vc3lzcm9vdC1pbmNsdWRlLWhlYWRlcnMucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3VuaXhjY29tcGlsZXIucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2F2b2lkLW5jdXJzZXN3LWluY2x1ZGUtcGF0aC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcHl0aG9uMy11c2UtQ1JPU1NQWVRIT05QQVRILWZvci1QWVRIT05fRk9SX0JVSUxELnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9weXRob24zLXNldHVwLnB5LW5vLWhvc3QtaGVhZGVycy1saWJzLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9zeXNjb25maWcucHktYWRkLV9QWVRIT05fUFJPSkVDVF9TUkMucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3NldHVwLnB5LWNoZWNrLWNyb3NzX2NvbXBpbGluZy13aGVuLWdldC1GTEFHUy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vc2V0dXAucHktZmluZC1saWJyYXJpZXMtaW4tc3RhZ2luZy1kaXJzLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUuYWMtZml4LUxJQlBMLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly91cHN0cmVhbS1yYW5kb20tZml4ZXMucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtSXNzdWUtMjEyNzItVXNlLV9zeXNjb25maWdkYXRhLnB5LXRvLWluaXRpYWxpemUtZGlzdC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vRml4LTI5NTE5LXdlYWtyZWYtc3Bld2luZy1leGNlcHRpb25zLWR1cmluZy1pbnRlcnAtZi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcGFzcy1taXNzaW5nLWxpYnJhcmllcy10by1FeHRlbnNpb24tZm9yLW11bC5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI1N2QxZjhiZmJhYmY0ZjI1MDAyNzNmYjA3MDZlNmYyMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlZWZlMmFkNjU3NTg1NTQyM2FiNjMwZjViNTFhOGVmNmU1NTU2Zjc3NDU4NGMwNmJlYWI0OTI2ZjkzMGRkYmIwIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1iNjgwZWQ5OWFhNjBkMzUwYzY1YTY1OTE0NDk0MjA3ZSIKKworIyBleGNsdWRlIHByZS1yZWxlYXNlcyBmb3IgYm90aCBweXRob24gMi54IGFuZCAzLngKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIltQcF15dGhvbi0oP1A8cHZlcj5cZCsoXC5cZCspKykudGFyIgorCitTID0gIiR7V09SS0RJUn0vUHl0aG9uLSR7UFZ9IgorCitpbmhlcml0IGF1dG90b29scyBtdWx0aWxpYl9oZWFkZXIgcHl0aG9uM25hdGl2ZSBwa2djb25maWcKKworQ09ORklHVVJFT1BUUyArPSAiIC0td2l0aC1zeXN0ZW0tZmZpICIKKworQ0FDSEVEX0NPTkZJR1VSRVZBUlMgPSAiYWNfY3ZfaGF2ZV9jaGZsYWdzPW5vIFwKKyAgICAgICAgICAgICAgICBhY19jdl9oYXZlX2xjaGZsYWdzPW5vIFwKKyAgICAgICAgICAgICAgICBhY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQ9eWVzIFwKKyAgICAgICAgICAgICAgICBhY19jdl9idWdneV9nZXRhZGRyaW5mbz1ubyBcCisgICAgICAgICAgICAgICAgYWNfY3ZfZmlsZV9fZGV2X3B0bXg9eWVzIFwKKyAgICAgICAgICAgICAgICBhY19jdl9maWxlX19kZXZfcHRjPW5vIFwKKyIKKworVEFSR0VUX0NDX0FSQ0ggKz0gIi1ETkRFQlVHIC1mbm8taW5saW5lIgorU0RLX0NDX0FSQ0ggKz0gIi1ETkRFQlVHIC1mbm8taW5saW5lIgorRVhUUkFfT0VNQUtFICs9ICJDUk9TU19DT01QSUxFPXllcyIKK0VYVFJBX09FQ09ORiArPSAiQ1JPU1NQWVRIT05QQVRIPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkLyAtLXdpdGhvdXQtZW5zdXJlcGlwIgorCitleHBvcnQgQ1JPU1NfQ09NUElMRSA9ICIke1RBUkdFVF9QUkVGSVh9IgorZXhwb3J0IF9QWVRIT05fUFJPSkVDVF9CQVNFID0gIiR7Qn0iCitleHBvcnQgX1BZVEhPTl9QUk9KRUNUX1NSQyA9ICIke1N9IgorZXhwb3J0IENDU0hBUkVEID0gIi1mUElDIgorCisjIEZpeCBjcm9zcyBjb21waWxhdGlvbiBvZiBkaWZmZXJlbnQgbW9kdWxlcworZXhwb3J0IENST1NTUFlUSE9OUEFUSCA9ICIke1NUQUdJTkdfTElCRElSX05BVElWRX0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC86JHtCfS9idWlsZC9saWIubGludXgtJHtUQVJHRVRfQVJDSH0tJHtQWVRIT05fTUFKTUlOfToke1N9L0xpYjoke1N9L0xpYi9wbGF0LWxpbnV4IgorCisjIE5vIGN0eXBlcyBvcHRpb24gZm9yIHB5dGhvbiAzCitQWVRIT05MU0JPUFRTID0gIiIKKworZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKKwlybSAtZiAke1N9L01ha2VmaWxlLm9yaWcKKwlhdXRvcmVjb25mIC1XY3Jvc3MgLS12ZXJib3NlIC0taW5zdGFsbCAtLWZvcmNlIC0tZXhjbHVkZT1hdXRvcG9pbnQgLi4vUHl0aG9uLSR7UFZ9L01vZHVsZXMvX2N0eXBlcy9saWJmZmkKK30KKworZG9fY29tcGlsZSgpIHsKKyAgICAgICAgIyByZWdlbmVyYXRlIHBsYXRmb3JtIHNwZWNpZmljIGZpbGVzLCBiZWNhdXNlIHRoZXkgZGVwZW5kIG9uIHN5c3RlbSBoZWFkZXJzCisgICAgICAgIGNkICR7U30vTGliL3BsYXQtbGludXgqCisgICAgICAgIGluY2x1ZGU9JHtTVEFHSU5HX0lOQ0RJUn0gJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3B5dGhvbjMgXAorICAgICAgICAgICAgICAgICR7U30vVG9vbHMvc2NyaXB0cy9oMnB5LnB5IC1pICcodV9sb25nKScgXAorICAgICAgICAgICAgICAgICR7U1RBR0lOR19JTkNESVJ9L2RsZmNuLmggXAorICAgICAgICAgICAgICAgICR7U1RBR0lOR19JTkNESVJ9L2xpbnV4L2Nkcm9tLmggXAorICAgICAgICAgICAgICAgICR7U1RBR0lOR19JTkNESVJ9L25ldGluZXQvaW4uaCBcCisgICAgICAgICAgICAgICAgJHtTVEFHSU5HX0lOQ0RJUn0vc3lzL3R5cGVzLmgKKyAgICAgICAgc2VkIC1lICdzLCR7U1RBR0lOR19ESVJfSE9TVH0sLGcnIC1pICoucHkKKyAgICAgICAgY2QgLQorCisKKwkjIHJlbW92ZSBhbnkgYm9ndXMgTERfTElCUkFSWV9QQVRICisJc2VkIC1pIC1lIHMsUlVOU0hBUkVEPS4qLFJVTlNIQVJFRD0sIE1ha2VmaWxlCisKKwlpZiBbICEgLWYgTWFrZWZpbGUub3JpZyBdOyB0aGVuCisJCWluc3RhbGwgLW0gMDY0NCBNYWtlZmlsZSBNYWtlZmlsZS5vcmlnCisJZmkKKwlzZWQgLWkgLWUgJ3MsXkNPTkZJR1VSRV9MREZMQUdTPS4qLENPTkZJR1VSRV9MREZMQUdTPS1MLiAtTCR7U1RBR0lOR19MSUJESVJ9LGcnIFwKKwkJLWUgJ3MsbGliZGlyPSR7bGliZGlyfSxsaWJkaXI9JHtTVEFHSU5HX0xJQkRJUn0sZycgXAorCQktZSAncyxsaWJleGVjZGlyPSR7bGliZXhlY2Rpcn0sbGliZXhlY2Rpcj0ke1NUQUdJTkdfRElSX0hPU1R9JHtsaWJleGVjZGlyfSxnJyBcCisJCS1lICdzLF5MSUJESVI9LiosTElCRElSPSR7U1RBR0lOR19MSUJESVJ9LGcnIFwKKwkJLWUgJ3MsaW5jbHVkZWRpcj0ke2luY2x1ZGVkaXJ9LGluY2x1ZGVkaXI9JHtTVEFHSU5HX0lOQ0RJUn0sZycgXAorCQktZSAncyxeSU5DTFVERURJUj0uKixJTkNMVURFPSR7U1RBR0lOR19JTkNESVJ9LGcnIFwKKwkJLWUgJ3MsXkNPTkZJTkNMVURFRElSPS4qLENPTkZJTkNMVURFPSR7U1RBR0lOR19JTkNESVJ9LGcnIFwKKwkJTWFrZWZpbGUKKwkjIHNhdmUgY29weSBvZiBpdCBub3csIGJlY2F1c2UgaWYgd2UgZG8gaXQgaW4gZG9faW5zdGFsbCBhbmQgCisJIyB0aGVuIGNhbGwgZG9faW5zdGFsbCB0d2ljZSB3ZSBnZXQgTWFrZWZpbGUub3JpZyA9PSBNYWtlZmlsZS5zeXNyb290CisJaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlIE1ha2VmaWxlLnN5c3Jvb3QKKworCW9lX3J1bm1ha2UgSE9TVFBHRU49JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3BnZW4gXAorCQlIT1NUUFlUSE9OPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9weXRob24zIFwKKwkJU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAorCQlTVEFHSU5HX0JBU0VMSUJESVI9JHtTVEFHSU5HX0JBU0VMSUJESVJ9IFwKKwkJU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAorCQlMSUI9JHtiYXNlbGlifSBcCisJCUFSQ0g9JHtUQVJHRVRfQVJDSH0gXAorCQlPUFQ9IiR7Q0ZMQUdTfSIgbGlicHl0aG9uMy5zbworCisJb2VfcnVubWFrZSBIT1NUUEdFTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcGdlbiBcCisJCUhPU1RQWVRIT049JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3B5dGhvbjMgXAorCQlTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCisJCVNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKKwkJU1RBR0lOR19CQVNFTElCRElSPSR7U1RBR0lOR19CQVNFTElCRElSfSBcCisJCUxJQj0ke2Jhc2VsaWJ9IFwKKwkJQVJDSD0ke1RBUkdFVF9BUkNIfSBcCisJCU9QVD0iJHtDRkxBR1N9IgorfQorCitkb19pbnN0YWxsKCkgeworCSMgbWFrZSBpbnN0YWxsIG5lZWRzIHRoZSBvcmlnaW5hbCBNYWtlZmlsZSwgb3Igb3RoZXJ3aXNlIHRoZSBpbmNsdWVzIHdvdWxkCisJIyBnbyB0byAke0R9JHtTVEFHSU5HLi4ufS8uLi4KKwlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUub3JpZyBNYWtlZmlsZQorCisJaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZworCWluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZworCisJIyByZXJ1biB0aGUgYnVpbGQgb25jZSBhZ2FpbiB3aXRoIG9yaWdpbmFsIG1ha2VmaWxlIHRoaXMgdGltZQorCSMgcnVuIGluc3RhbGwgaW4gYSBzZXBhcmF0ZSBzdGVwIHRvIGF2b2lkIGNvbXBpbGUvaW5zdGFsbCByYWNlCisJb2VfcnVubWFrZSBIT1NUUEdFTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcGdlbiBcCisJCUhPU1RQWVRIT049JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3B5dGhvbjMgXAorCQlTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCisJCVNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKKwkJU1RBR0lOR19CQVNFTElCRElSPSR7U1RBR0lOR19CQVNFTElCRElSfSBcCisJCUxJQj0ke2Jhc2VsaWJ9IFwKKwkJQVJDSD0ke1RBUkdFVF9BUkNIfSBcCisJCURFU1RESVI9JHtEfSBMSUJESVI9JHtsaWJkaXJ9CisJCisJb2VfcnVubWFrZSBIT1NUUEdFTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcGdlbiBcCisJCUhPU1RQWVRIT049JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3B5dGhvbjMgXAorCQlTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCisJCVNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKKwkJU1RBR0lOR19CQVNFTElCRElSPSR7U1RBR0lOR19CQVNFTElCRElSfSBcCisJCUxJQj0ke2Jhc2VsaWJ9IFwKKwkJQVJDSD0ke1RBUkdFVF9BUkNIfSBcCisJCURFU1RESVI9JHtEfSBMSUJESVI9JHtsaWJkaXJ9IGluc3RhbGwKKworCSMgYXZvaWQgY29uZmxpY3Qgd2l0aCAydG8zIGZyb20gUHl0aG9uIDIKKwlybSAtZiAke0R9LyR7YmluZGlyfS8ydG8zCisKKwlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUuc3lzcm9vdCAke0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy9NYWtlZmlsZQorCWluc3RhbGwgLW0gMDY0NCBNYWtlZmlsZS5zeXNyb290ICR7RH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnLSR7UFlUSE9OX01BSk1JTn0ke1BZVEhPTl9BQkl9L01ha2VmaWxlCisKKwlpZiBbIC1lICR7V09SS0RJUn0vc2l0ZWN1c3RvbWl6ZS5weSBdOyB0aGVuCisJCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3NpdGVjdXN0b21pemUucHkgJHtEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfQorCWZpCisKKwlvZV9tdWx0aWxpYl9oZWFkZXIgcHl0aG9uJHtQWVRIT05fQklOQUJJfS9weWNvbmZpZy5oCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayAoKSB7CisJY3JlYXRlX3dyYXBwZXIgJHtEfSR7YmluZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59IFRFUk1JTkZPX0RJUlM9JyR7c3lzY29uZmRpcn0vdGVybWluZm86L2V0Yy90ZXJtaW5mbzovdXNyL3NoYXJlL3Rlcm1pbmZvOi91c3Ivc2hhcmUvbWlzYy90ZXJtaW5mbzovbGliL3Rlcm1pbmZvJworfQorCitTU1RBVEVfU0NBTl9GSUxFUyArPSAiTWFrZWZpbGUiCitQQUNLQUdFX1BSRVBST0NFU1NfRlVOQ1MgKz0gInB5X3BhY2thZ2VfcHJlcHJvY2VzcyIKKworcHlfcGFja2FnZV9wcmVwcm9jZXNzICgpIHsKKwkjIGNvcHkgYmFjayB0aGUgb2xkIE1ha2VmaWxlIHRvIGZpeCB0YXJnZXQgcGFja2FnZQorCWluc3RhbGwgLW0gMDY0NCAke0J9L01ha2VmaWxlLm9yaWcgJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWcvTWFrZWZpbGUKKwlpbnN0YWxsIC1tIDA2NDQgJHtCfS9NYWtlZmlsZS5vcmlnICR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnLSR7UFlUSE9OX01BSk1JTn0ke1BZVEhPTl9BQkl9L01ha2VmaWxlCisJIyBSZW1vdmUgcmVmZXJlbmNlcyB0byBidWlsZG1hY2hpbmUgcGF0aHMgaW4gdGFyZ2V0IE1ha2VmaWxlIGFuZCBfc3lzY29uZmlnZGF0YQorCXNlZCAtaSAtZSAnczotLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9OjpnJyAtZSBzOictLXdpdGgtbGlidG9vbC1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSc6OmcgXAorCQkke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy9NYWtlZmlsZSBcCisJCSR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnLSR7UFlUSE9OX01BSk1JTn0ke1BZVEhPTl9BQkl9L01ha2VmaWxlIFwKKwkJJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fc3lzY29uZmlnZGF0YS5weQorfQorCityZXF1aXJlIHB5dGhvbi0ke1BZVEhPTl9NQUpNSU59LW1hbmlmZXN0LmluYworCisjIG1hbnVhbCBkZXBlbmRlbmN5IGFkZGl0aW9ucworUlBST1ZJREVTXyR7UE59LW1vZHVsZXMgPSAiJHtQTn0iCitSUkVDT01NRU5EU18ke1BOfS1jb3JlID0gIiR7UE59LXJlYWRsaW5lIgorUlJFQ09NTUVORFNfJHtQTn0tY3J5cHQgPSAib3BlbnNzbCIKK1JSRUNPTU1FTkRTXyR7UE59LWNyeXB0X2NsYXNzLW5hdGl2ZXNkayA9ICJuYXRpdmVzZGstb3BlbnNzbCIKKworRklMRVNfJHtQTn0tMnRvMyArPSAiJHtiaW5kaXJ9LzJ0bzMtJHtQWVRIT05fTUFKTUlOfSIKK0ZJTEVTXyR7UE59LXB5ZG9jICs9ICIke2JpbmRpcn0vcHlkb2Mke1BZVEhPTl9NQUpNSU59ICR7YmluZGlyfS9weWRvYzMiCitGSUxFU18ke1BOfS1pZGxlICs9ICIke2JpbmRpcn0vaWRsZTMgJHtiaW5kaXJ9L2lkbGUke1BZVEhPTl9NQUpNSU59IgorCitQQUNLQUdFUyA9KyAiJHtQTn0tcHl2ZW52IgorRklMRVNfJHtQTn0tcHl2ZW52ICs9ICIke2JpbmRpcn0vcHl2ZW52LSR7UFlUSE9OX01BSk1JTn0gJHtiaW5kaXJ9L3B5dmVudiIKKworIyBwYWNrYWdlIGxpYnB5dGhvbjMKK1BBQ0tBR0VTID0rICJsaWJweXRob24zIGxpYnB5dGhvbjMtc3RhdGljZGV2IgorRklMRVNfbGlicHl0aG9uMyA9ICIke2xpYmRpcn0vbGlicHl0aG9uKi5zby4qIgorRklMRVNfbGlicHl0aG9uMy1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy0ke1BZVEhPTl9CSU5BQkl9L2xpYnB5dGhvbiR7UFlUSE9OX0JJTkFCSX0uYSIKK0lOU0FORV9TS0lQXyR7UE59LWRldiArPSAiZGV2LWVsZiIKKworIyBjYXRjaCBhbGwgdGhlIHJlc3QgKHVuc29ydGVkKQorUEFDS0FHRVMgKz0gIiR7UE59LW1pc2MiCitSREVQRU5EU18ke1BOfS1taXNjICs9ICIke1BOfS1jb3JlICR7UE59LWVtYWlsICR7UE59LWNvZGVjcyAke1BOfS10ZXh0dXRpbHMgJHtQTn0tYXJncGFyc2UiCitSREVQRU5EU18ke1BOfS1tb2R1bGVzICs9ICIke1BOfS1taXNjIgorRklMRVNfJHtQTn0tbWlzYyA9ICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfSIKKworIyBjYXRjaCBtYW5wYWdlCitQQUNLQUdFUyArPSAiJHtQTn0tbWFuIgorRklMRVNfJHtQTn0tbWFuID0gIiR7ZGF0YWRpcn0vbWFuIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbl8yLjcuMTMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob25fMi43LjEzLmJiCmluZGV4IDRlZjk5NTIuLjc1NGMwMjkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbl8yLjcuMTMuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uXzIuNy4xMy5iYgpAQCAtMSw1ICsxLDUgQEAKIHJlcXVpcmUgcHl0aG9uLmluYwotREVQRU5EUyA9ICJweXRob24tbmF0aXZlIGxpYmZmaSBiemlwMiBkYiBnZGJtIG9wZW5zc2wgcmVhZGxpbmUgc3FsaXRlMyB6bGliIgorREVQRU5EUyA9ICJweXRob24tbmF0aXZlIGxpYmZmaSBiemlwMiBnZGJtIG9wZW5zc2wgcmVhZGxpbmUgc3FsaXRlMyB6bGliIgogUFIgPSAiJHtJTkNfUFJ9IgogCiBESVNUUk9fU1JDX1VSSSA/PSAiZmlsZTovL3NpdGVjdXN0b21pemUucHkiCkBAIC0yNyw2ICsyNyw4IEBACiAgIGZpbGU6Ly91c2Vfc3lzcm9vdF9uY3Vyc2VzX2luc3RlYWRfb2ZfaG9zdC5wYXRjaCBcCiAgIGZpbGU6Ly9hZGQtQ1JPU1NQWVRIT05QQVRILWZvci1QWVRIT05fRk9SX0JVSUxELnBhdGNoIFwKICAgZmlsZTovL0Rvbi10LXVzZS1nZXRlbnRyb3B5LW9uLUxpbnV4LnBhdGNoIFwKKyAgZmlsZTovL3Bhc3MtbWlzc2luZy1saWJyYXJpZXMtdG8tRXh0ZW5zaW9uLWZvci1tdWwucGF0Y2ggXAorICBmaWxlOi8vc3VwcG9ydF9TT1VSQ0VfREFURV9FUE9DSF9pbl9weV9jb21waWxlXzIuNy5wYXRjaCBcCiAiCiAKIFMgPSAiJHtXT1JLRElSfS9QeXRob24tJHtQVn0iCkBAIC0zNyw2ICszOSw5IEBACiAKIEVYVFJBX09FQ09ORiArPSAiYWNfY3ZfZmlsZV9fZGV2X3B0bXg9eWVzIGFjX2N2X2ZpbGVfX2Rldl9wdGM9bm8iCiAKK1BBQ0tBR0VDT05GSUcgPz89ICJiZGIiCitQQUNLQUdFQ09ORklHW2JkYl0gPSAiLCxkYiIKKwogZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKIAlybSAtZiAke1N9L01ha2VmaWxlLm9yaWcKICAgICAgICAgYXV0b3JlY29uZiAtV2Nyb3NzIC0tdmVyYm9zZSAtLWluc3RhbGwgLS1mb3JjZSAtLWV4Y2x1ZGU9YXV0b3BvaW50IC4uL1B5dGhvbi0ke1BWfS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpCkBAIC0xMTYsNiArMTIxLDEwIEBACiAJZmkKIAogCW9lX211bHRpbGliX2hlYWRlciBweXRob24ke1BZVEhPTl9NQUpNSU59L3B5Y29uZmlnLmgKKworICAgIGlmIFsgLXogIiR7QGJiLnV0aWxzLmZpbHRlcignUEFDS0FHRUNPTkZJRycsICdiZGInLCBkKX0iIF07IHRoZW4KKyAgICAgICAgcm0gLXJmICR7RH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vYnNkZGIKKyAgICBmaQogfQogCiBkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgKCkgewpAQCAtMTUyLDcgKzE2MSw5IEBACiBQQUNLQUdFUyArPSAiJHtQTn0tbWlzYyIKIEZJTEVTXyR7UE59LW1pc2MgPSAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0iCiBSREVQRU5EU18ke1BOfS1tb2R1bGVzICs9ICIke1BOfS1taXNjIgotUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiJHtQTn0tbW9kdWxlcyIKKworIyBwdGVzdAorUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiJHtQTn0tbW9kdWxlcyAke1BOfS10ZXN0cyIKICNpbmhlcml0IHB0ZXN0IGFmdGVyICJyZXF1aXJlIHB5dGhvbi0ke1BZVEhPTl9NQUpNSU59LW1hbmlmZXN0LmluYyIgc28gUEFDS0FHRVMgZG9lc24ndCBnZXQgb3ZlcndyaXR0ZW4KIGluaGVyaXQgcHRlc3QKIApAQCAtMTYyLDEwICsxNzMsMjMgQEAKIAlzZWQgLWUgczpMSUJESVIvcHl0aG9uL3B0ZXN0OiR7UFRFU1RfUEFUSH06ZyBcCiAJIC1lIHM6TElCRElSOiR7bGliZGlyfTpnIFwKIAkgLWkgJHtEfSR7UFRFU1RfUEFUSH0vcnVuLXB0ZXN0CisKKwkjUmVtb3ZlIGJ1aWxkIGhvc3QgcmVmZXJlbmNlcworCXNlZCAtaSBcCisJCS1lICdzOi0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9Jzo6ZyBcCisJICAgIC1lICdzOi0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH06OmcnIFwKKwkgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAorCSAgICAtZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgXAorCSAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UfTo6ZycgXAorCSAgICAtZSAnczoke0JBU0VfV09SS0RJUn0vJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU306OmcnIFwKKwkke0R9LyR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKIH0KIAogIyBjYXRjaCBtYW5wYWdlCiBQQUNLQUdFUyArPSAiJHtQTn0tbWFuIgogRklMRVNfJHtQTn0tbWFuID0gIiR7ZGF0YWRpcn0vbWFuIgogCisjIE5hc3R5IGJ1dCBpZiBiZGIgaXNuJ3QgZW5hYmxlZCB0aGUgcGFja2FnZSB3b24ndCBiZSBnZW5lcmF0ZWQKK1JERVBFTkRTXyR7UE59LW1vZHVsZXNfcmVtb3ZlID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2JkYicsICcnLCAnJHtQTn0tYnNkZGInLCBkKX0iCisKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUtaGVscGVyLW5hdGl2ZV8xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS1oZWxwZXItbmF0aXZlXzEuMC5iYgppbmRleCAyN2Q1MzE1Li5kODZiMTU1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS1oZWxwZXItbmF0aXZlXzEuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS1oZWxwZXItbmF0aXZlXzEuMC5iYgpAQCAtMjAsNiArMjAsNSBAQAogCWluc3RhbGwgdHVuY3RsICR7RH0ke2JpbmRpcn0vCiB9CiAKLVJNX1dPUktfRVhDTFVERV9JVEVNUyArPSAicmVjaXBlLXN5c3Jvb3QtbmF0aXZlIgogREVQRU5EUyArPSAicWVtdS1uYXRpdmUiCiBhZGR0YXNrIGFkZHRvX3JlY2lwZV9zeXNyb290IGFmdGVyIGRvX3BvcHVsYXRlX3N5c3Jvb3QgYmVmb3JlIGRvX2J1aWxkCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS5pbmMKaW5kZXggMGUxNDExYS4uMmExZDE0YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LmluYwpAQCAtMjYsNyArMjYsNiBAQAogICAgIC0tZGlzYWJsZS1zdHJpcCBcCiAgICAgLS1kaXNhYmxlLXdlcnJvciBcCiAgICAgLS10YXJnZXQtbGlzdD0ke0BnZXRfcWVtdV90YXJnZXRfbGlzdChkKX0gXAotICAgIC0td2l0aC1zeXN0ZW0tcGl4bWFuIFwKICAgICAtLWV4dHJhLWNmbGFncz0nJHtDRkxBR1N9JyBcCiAgICAgIgogRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC0tcHl0aG9uPSR7VVNSQklOUEFUSH0vcHl0aG9uMi43IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwNC1BZGQtc3VwcG9ydC1mb3ItVk0tc3VzcGVuZC1yZXN1bWUtZm9yLVRQTS1USVMtdjIuOS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDQtQWRkLXN1cHBvcnQtZm9yLVZNLXN1c3BlbmQtcmVzdW1lLWZvci1UUE0tVElTLXYyLjkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjFkYmFmZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDQtQWRkLXN1cHBvcnQtZm9yLVZNLXN1c3BlbmQtcmVzdW1lLWZvci1UUE0tVElTLXYyLjkucGF0Y2gKQEAgLTAsMCArMSw3MTkgQEAKK0Zyb20gNWU5ZGQ5MDYzZjUxNDQ0N2VhNGY1NDA0Njc5M2Y0ZjAxYzI5N2VkNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFN0ZWZhbiBCZXJnZXIgPHN0ZWZhbmJAbGludXgudm5ldC5pYm0uY29tPgorRGF0ZTogU2F0LCAzMSBEZWMgMjAxNiAxMToyMzozMiAtMDUwMAorU3ViamVjdDogW1BBVENIIDQvNF0gQWRkIHN1cHBvcnQgZm9yIFZNIHN1c3BlbmQvcmVzdW1lIGZvciBUUE0gVElTCisKK0V4dGVuZCB0aGUgVFBNIFRJUyBjb2RlIHRvIHN1cHBvcnQgc3VzcGVuZC9yZXN1bWUuIEluIGNhc2UgYSBjb21tYW5kCitpcyBiZWluZyBwcm9jZXNzZWQgYnkgdGhlIGV4dGVybmFsIFRQTSB3aGVuIHN1c3BlbmRpbmcsIHdhaXQgZm9yIHRoZSBjb21tYW5kCit0byBjb21wbGV0ZSB0byBjYXRjaCB0aGUgcmVzdWx0LiBJbiBjYXNlIHRoZSBib3R0b20gaGFsZiBkaWQgbm90IHJ1biwKK3J1biB0aGUgb25lIGZ1bmN0aW9uIHRoZSBib3R0b20gaGFsZiBpcyBzdXBwb3NlZCB0byBydW4uIFRoaXMgdGhlbgorbWFrZXMgdGhlIHJlc3VtZSBvcGVyYXRpb24gd29yay4KKworVGhlIHBhc3N0aHJvdWdoIGJhY2tlbmQgZG9lcyBub3Qgc3VwcG9ydCBzdXNwZW5kL3Jlc3VtZSBvcGVyYXRpb24KK2FuZCBpcyB0aGVyZWZvcmUgYmxvY2tlZCBmcm9tIHN1c3BlbmQvcmVzdW1lIGFuZCBtaWdyYXRpb24uCisKK1RoZSBDVVNFIFRQTSdzIHN1cHBvcnRlZCBjYXBhYmlsaXRpZXMgYXJlIHRlc3RlZCBhbmQgaWYgc3VmZmljaWVudAorY2FwYWJpbGl0aWVzIGFyZSBpbXBsZW1lbnRlZCwgc3VzcGVuZC9yZXN1bWUsIHNuYXBzaG90dGluZyBhbmQKK21pZ3JhdGlvbiBhcmUgc3VwcG9ydGVkIGJ5IHRoZSBDVVNFIFRQTS4KKworU2lnbmVkLW9mZi1ieTogU3RlZmFuIEJlcmdlciA8c3RlZmFuYkBsaW51eC52bmV0LmlibS5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbaHR0cHM6Ly9saXN0cy5ub25nbnUub3JnL2FyY2hpdmUvaHRtbC9xZW11LWRldmVsLzIwMTYtMDYvbXNnMDAyNTIuaHRtbF0KK1NpZ25lZC1vZmYtYnk6IFBhdHJpY2sgT2hseSA8cGF0cmljay5vaGx5QGludGVsLmNvbT4KKy0tLQorIGh3L3RwbS90cG1fcGFzc3Rocm91Z2guYyAgICAgfCAxMzAgKysrKysrKysrKysrKysrKysrKysrKystLQorIGh3L3RwbS90cG1fdGlzLmMgICAgICAgICAgICAgfCAxMzcgKysrKysrKysrKysrKysrKysrKysrKysrKy0KKyBody90cG0vdHBtX3Rpcy5oICAgICAgICAgICAgIHwgICAyICsKKyBody90cG0vdHBtX3V0aWwuYyAgICAgICAgICAgIHwgMjIzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBody90cG0vdHBtX3V0aWwuaCAgICAgICAgICAgIHwgICA3ICsrCisgaW5jbHVkZS9zeXNlbXUvdHBtX2JhY2tlbmQuaCB8ICAxMiArKysKKyA2IGZpbGVzIGNoYW5nZWQsIDUwMyBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvaHcvdHBtL3RwbV9wYXNzdGhyb3VnaC5jIGIvaHcvdHBtL3RwbV9wYXNzdGhyb3VnaC5jCitpbmRleCA0NDczOWViYWQyLi5iYzgwNzJkMGJjIDEwMDY0NAorLS0tIGEvaHcvdHBtL3RwbV9wYXNzdGhyb3VnaC5jCisrKysgYi9ody90cG0vdHBtX3Bhc3N0aHJvdWdoLmMKK0BAIC0zNCw2ICszNCw4IEBACisgI2luY2x1ZGUgInRwbV90aXMuaCIKKyAjaW5jbHVkZSAidHBtX3V0aWwuaCIKKyAjaW5jbHVkZSAidHBtX2lvY3RsLmgiCisrI2luY2x1ZGUgIm1pZ3JhdGlvbi9taWdyYXRpb24uaCIKKysjaW5jbHVkZSAicWFwaS9lcnJvci5oIgorIAorICNkZWZpbmUgREVCVUdfVFBNIDAKKyAKK0BAIC00OSw2ICs1MSw3IEBACisgI2RlZmluZSBUWVBFX1RQTV9DVVNFICJ0cG0tY3VzZSIKKyAKKyBzdGF0aWMgY29uc3QgVFBNRHJpdmVyT3BzIHRwbV9wYXNzdGhyb3VnaF9kcml2ZXI7Cisrc3RhdGljIGNvbnN0IFZNU3RhdGVEZXNjcmlwdGlvbiB2bXN0YXRlX3RwbV9jdXNlOworIAorIC8qIGRhdGEgc3RydWN0dXJlcyAqLworIHR5cGVkZWYgc3RydWN0IFRQTVBhc3N0aHJ1VGhyZWFkUGFyYW1zIHsKK0BAIC03OSw2ICs4MiwxMCBAQCBzdHJ1Y3QgVFBNUGFzc3RocnVTdGF0ZSB7CisgICAgIFFlbXVNdXRleCBzdGF0ZV9sb2NrOworICAgICBRZW11Q29uZCBjbWRfY29tcGxldGU7ICAvKiBzaW5nbmFsZWQgb25jZSB0cG1fYnVzeSBpcyBmYWxzZSAqLworICAgICBib29sIHRwbV9idXN5OworKworKyAgICBFcnJvciAqbWlncmF0aW9uX2Jsb2NrZXI7CisrCisrICAgIFRQTUJsb2JCdWZmZXJzIHRwbV9ibG9iczsKKyB9OworIAorIHR5cGVkZWYgc3RydWN0IFRQTVBhc3N0aHJ1U3RhdGUgVFBNUGFzc3RocnVTdGF0ZTsKK0BAIC0zMDYsNiArMzEzLDEwIEBAIHN0YXRpYyB2b2lkIHRwbV9wYXNzdGhyb3VnaF9zaHV0ZG93bihUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgICB9CisgICAgIH0KKysgICAgaWYgKHRwbV9wdC0+bWlncmF0aW9uX2Jsb2NrZXIpIHsKKysgICAgICAgIG1pZ3JhdGVfZGVsX2Jsb2NrZXIodHBtX3B0LT5taWdyYXRpb25fYmxvY2tlcik7CisrICAgICAgICBlcnJvcl9mcmVlKHRwbV9wdC0+bWlncmF0aW9uX2Jsb2NrZXIpOworKyAgICB9CisgfQorIAorIC8qCitAQCAtMzYwLDEyICszNzEsMTQgQEAgc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfY3VzZV9jaGVja19jYXBzKFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCkKKyAvKgorICAqIEluaXRpYWxpemUgdGhlIGV4dGVybmFsIENVU0UgVFBNCisgICovCistc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfY3VzZV9pbml0KFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCkKKytzdGF0aWMgaW50IHRwbV9wYXNzdGhyb3VnaF9jdXNlX2luaXQoVFBNUGFzc3RocnVTdGF0ZSAqdHBtX3B0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzX3Jlc3VtZSkKKyB7CisgICAgIGludCByYyA9IDA7CistICAgIHB0bV9pbml0IGluaXQgPSB7CistICAgICAgICAudS5yZXEuaW5pdF9mbGFncyA9IFBUTV9JTklUX0ZMQUdfREVMRVRFX1ZPTEFUSUxFLAorLSAgICB9OworKyAgICBwdG1faW5pdCBpbml0OworKyAgICBpZiAoaXNfcmVzdW1lKSB7CisrICAgICAgICBpbml0LnUucmVxLmluaXRfZmxhZ3MgPSBQVE1fSU5JVF9GTEFHX0RFTEVURV9WT0xBVElMRTsKKysgICAgfQorIAorICAgICBpZiAoVFBNX1BBU1NUSFJPVUdIX1VTRVNfQ1VTRV9UUE0odHBtX3B0KSkgeworICAgICAgICAgaWYgKGlvY3RsKHRwbV9wdC0+dHBtX2ZkLCBQVE1fSU5JVCwgJmluaXQpIDwgMCkgeworQEAgLTM5NCw3ICs0MDcsNyBAQCBzdGF0aWMgaW50IHRwbV9wYXNzdGhyb3VnaF9zdGFydHVwX3RwbShUUE1CYWNrZW5kICp0YikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cG1fcGFzc3Rocm91Z2hfd29ya2VyX3RocmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHBtX3B0LT50cG1fdGhyZWFkX3BhcmFtcyk7CisgCistICAgIHRwbV9wYXNzdGhyb3VnaF9jdXNlX2luaXQodHBtX3B0KTsKKysgICAgdHBtX3Bhc3N0aHJvdWdoX2N1c2VfaW5pdCh0cG1fcHQsIGZhbHNlKTsKKyAKKyAgICAgcmV0dXJuIDA7CisgfQorQEAgLTQ2Niw2ICs0NzksMzIgQEAgc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfcmVzZXRfdHBtX2VzdGFibGlzaGVkX2ZsYWcoVFBNQmFja2VuZCAqdGIsCisgICAgIHJldHVybiByYzsKKyB9CisgCisrc3RhdGljIGludCB0cG1fY3VzZV9nZXRfc3RhdGVfYmxvYnMoVFBNQmFja2VuZCAqdGIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkZWNyeXB0ZWRfYmxvYnMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFBNQmxvYkJ1ZmZlcnMgKnRwbV9ibG9icykKKyt7CisrICAgIFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCA9IFRQTV9QQVNTVEhST1VHSCh0Yik7CisrCisrICAgIGFzc2VydChUUE1fUEFTU1RIUk9VR0hfVVNFU19DVVNFX1RQTSh0cG1fcHQpKTsKKysKKysgICAgcmV0dXJuIHRwbV91dGlsX2N1c2VfZ2V0X3N0YXRlX2Jsb2JzKHRwbV9wdC0+dHBtX2ZkLCBkZWNyeXB0ZWRfYmxvYnMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cG1fYmxvYnMpOworK30KKysKKytzdGF0aWMgaW50IHRwbV9jdXNlX3NldF9zdGF0ZV9ibG9icyhUUE1CYWNrZW5kICp0YiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUE1CbG9iQnVmZmVycyAqdHBtX2Jsb2JzKQorK3sKKysgICAgVFBNUGFzc3RocnVTdGF0ZSAqdHBtX3B0ID0gVFBNX1BBU1NUSFJPVUdIKHRiKTsKKysKKysgICAgYXNzZXJ0KFRQTV9QQVNTVEhST1VHSF9VU0VTX0NVU0VfVFBNKHRwbV9wdCkpOworKworKyAgICBpZiAodHBtX3V0aWxfY3VzZV9zZXRfc3RhdGVfYmxvYnModHBtX3B0LT50cG1fZmQsIHRwbV9ibG9icykpIHsKKysgICAgICAgIHJldHVybiAxOworKyAgICB9CisrCisrICAgIHJldHVybiB0cG1fcGFzc3Rocm91Z2hfY3VzZV9pbml0KHRwbV9wdCwgdHJ1ZSk7CisrfQorKworIHN0YXRpYyBib29sIHRwbV9wYXNzdGhyb3VnaF9nZXRfc3RhcnR1cF9lcnJvcihUUE1CYWNrZW5kICp0YikKKyB7CisgICAgIFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCA9IFRQTV9QQVNTVEhST1VHSCh0Yik7CitAQCAtNDg4LDcgKzUyNyw3IEBAIHN0YXRpYyB2b2lkIHRwbV9wYXNzdGhyb3VnaF9kZWxpdmVyX3JlcXVlc3QoVFBNQmFja2VuZCAqdGIpCisgeworICAgICBUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQgPSBUUE1fUEFTU1RIUk9VR0godGIpOworIAorLSAgICAvKiBUUE0gY29uc2lkZXJlZCBidXN5IG9uY2UgVFBNIFJlcXVlc3Qgc2NoZWR1bGVkIGZvciBwcm9jZXNzaW5nICovCisrICAgIC8qIFRQTSBjb25zaWRlcmVkIGJ1c3kgb25jZSBUUE0gcmVxdWVzdCBzY2hlZHVsZWQgZm9yIHByb2Nlc3NpbmcgKi8KKyAgICAgcWVtdV9tdXRleF9sb2NrKCZ0cG1fcHQtPnN0YXRlX2xvY2spOworICAgICB0cG1fcHQtPnRwbV9idXN5ID0gdHJ1ZTsKKyAgICAgcWVtdV9tdXRleF91bmxvY2soJnRwbV9wdC0+c3RhdGVfbG9jayk7CitAQCAtNjAxLDYgKzY0MCwyNSBAQCBzdGF0aWMgaW50IHRwbV9wYXNzdGhyb3VnaF9vcGVuX3N5c2ZzX2NhbmNlbChUUE1CYWNrZW5kICp0YikKKyAgICAgcmV0dXJuIGZkOworIH0KKyAKKytzdGF0aWMgdm9pZCB0cG1fcGFzc3Rocm91Z2hfYmxvY2tfbWlncmF0aW9uKFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCkKKyt7CisrICAgIHB0bV9jYXAgY2FwczsKKysKKysgICAgaWYgKFRQTV9QQVNTVEhST1VHSF9VU0VTX0NVU0VfVFBNKHRwbV9wdCkpIHsKKysgICAgICAgIGNhcHMgPSBQVE1fQ0FQX0dFVF9TVEFURUJMT0IgfCBQVE1fQ0FQX1NFVF9TVEFURUJMT0IgfAorKyAgICAgICAgICAgICAgIFBUTV9DQVBfU1RPUDsKKysgICAgICAgIGlmICghVFBNX0NVU0VfSU1QTEVNRU5UU19BTEwodHBtX3B0LCBjYXBzKSkgeworKyAgICAgICAgICAgIGVycm9yX3NldGcoJnRwbV9wdC0+bWlncmF0aW9uX2Jsb2NrZXIsCisrICAgICAgICAgICAgICAgICAgICAgICAiTWlncmF0aW9uIGRpc2FibGVkOiBDVVNFIFRQTSBsYWNrcyBuZWNlc3NhcnkgY2FwYWJpbGl0aWVzIik7CisrICAgICAgICAgICAgbWlncmF0ZV9hZGRfYmxvY2tlcih0cG1fcHQtPm1pZ3JhdGlvbl9ibG9ja2VyKTsKKysgICAgICAgIH0KKysgICAgfSBlbHNlIHsKKysgICAgICAgIGVycm9yX3NldGcoJnRwbV9wdC0+bWlncmF0aW9uX2Jsb2NrZXIsCisrICAgICAgICAgICAgICAgICAgICJNaWdyYXRpb24gZGlzYWJsZWQ6IFBhc3N0aHJvdWdoIFRQTSBkb2VzIG5vdCBzdXBwb3J0IG1pZ3JhdGlvbiIpOworKyAgICAgICAgbWlncmF0ZV9hZGRfYmxvY2tlcih0cG1fcHQtPm1pZ3JhdGlvbl9ibG9ja2VyKTsKKysgICAgfQorK30KKysKKyBzdGF0aWMgaW50IHRwbV9wYXNzdGhyb3VnaF9oYW5kbGVfZGV2aWNlX29wdHMoUWVtdU9wdHMgKm9wdHMsIFRQTUJhY2tlbmQgKnRiKQorIHsKKyAgICAgVFBNUGFzc3RocnVTdGF0ZSAqdHBtX3B0ID0gVFBNX1BBU1NUSFJPVUdIKHRiKTsKK0BAIC02NDIsNyArNzAwLDcgQEAgc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfaGFuZGxlX2RldmljZV9vcHRzKFFlbXVPcHRzICpvcHRzLCBUUE1CYWNrZW5kICp0YikKKyAgICAgICAgICAgICBnb3RvIGVycl9jbG9zZV90cG1kZXY7CisgICAgICAgICB9CisgICAgICAgICAvKiBpbml0IFRQTSBmb3IgcHJvYmluZyAqLworLSAgICAgICAgaWYgKHRwbV9wYXNzdGhyb3VnaF9jdXNlX2luaXQodHBtX3B0KSkgeworKyAgICAgICAgaWYgKHRwbV9wYXNzdGhyb3VnaF9jdXNlX2luaXQodHBtX3B0LCBmYWxzZSkpIHsKKyAgICAgICAgICAgICBnb3RvIGVycl9jbG9zZV90cG1kZXY7CisgICAgICAgICB9CisgICAgIH0KK0BAIC02NTksNiArNzE3LDcgQEAgc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfaGFuZGxlX2RldmljZV9vcHRzKFFlbXVPcHRzICpvcHRzLCBUUE1CYWNrZW5kICp0YikKKyAgICAgICAgIH0KKyAgICAgfQorIAorKyAgICB0cG1fcGFzc3Rocm91Z2hfYmxvY2tfbWlncmF0aW9uKHRwbV9wdCk7CisgCisgICAgIHJldHVybiAwOworIAorQEAgLTc2NiwxMCArODI1LDEzIEBAIHN0YXRpYyB2b2lkIHRwbV9wYXNzdGhyb3VnaF9pbnN0X2luaXQoT2JqZWN0ICpvYmopCisgCisgICAgIHFlbXVfbXV0ZXhfaW5pdCgmdHBtX3B0LT5zdGF0ZV9sb2NrKTsKKyAgICAgcWVtdV9jb25kX2luaXQoJnRwbV9wdC0+Y21kX2NvbXBsZXRlKTsKKysKKysgICAgdm1zdGF0ZV9yZWdpc3RlcihOVUxMLCAtMSwgJnZtc3RhdGVfdHBtX2N1c2UsIG9iaik7CisgfQorIAorIHN0YXRpYyB2b2lkIHRwbV9wYXNzdGhyb3VnaF9pbnN0X2ZpbmFsaXplKE9iamVjdCAqb2JqKQorIHsKKysgICAgdm1zdGF0ZV91bnJlZ2lzdGVyKE5VTEwsICZ2bXN0YXRlX3RwbV9jdXNlLCBvYmopOworIH0KKyAKKyBzdGF0aWMgdm9pZCB0cG1fcGFzc3Rocm91Z2hfY2xhc3NfaW5pdChPYmplY3RDbGFzcyAqa2xhc3MsIHZvaWQgKmRhdGEpCitAQCAtODAyLDYgKzg2NCw2MCBAQCBzdGF0aWMgY29uc3QgY2hhciAqdHBtX3Bhc3N0aHJvdWdoX2N1c2VfY3JlYXRlX2Rlc2Modm9pZCkKKyAgICAgcmV0dXJuICJDVVNFIFRQTSBiYWNrZW5kIGRyaXZlciI7CisgfQorIAorK3N0YXRpYyB2b2lkIHRwbV9jdXNlX3ByZV9zYXZlKHZvaWQgKm9wYXF1ZSkKKyt7CisrICAgIFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCA9IG9wYXF1ZTsKKysgICAgVFBNQmFja2VuZCAqdGIgPSAmdHBtX3B0LT5wYXJlbnQ7CisrCisrICAgICBxZW11X211dGV4X2xvY2soJnRwbV9wdC0+c3RhdGVfbG9jayk7CisrICAgICAvKiB3YWl0IGZvciBUUE0gdG8gZmluaXNoIHByb2Nlc3NpbmcgKi8KKysgICAgIGlmICh0cG1fcHQtPnRwbV9idXN5KSB7CisrICAgICAgICBxZW11X2NvbmRfd2FpdCgmdHBtX3B0LT5jbWRfY29tcGxldGUsICZ0cG1fcHQtPnN0YXRlX2xvY2spOworKyAgICAgfQorKyAgICAgcWVtdV9tdXRleF91bmxvY2soJnRwbV9wdC0+c3RhdGVfbG9jayk7CisrCisrICAgIC8qIGdldCB0aGUgZGVjcnlwdGVkIHN0YXRlIGJsb2JzIGZyb20gdGhlIFRQTSAqLworKyAgICB0cG1fY3VzZV9nZXRfc3RhdGVfYmxvYnModGIsIFRSVUUsICZ0cG1fcHQtPnRwbV9ibG9icyk7CisrfQorKworK3N0YXRpYyBpbnQgdHBtX2N1c2VfcG9zdF9sb2FkKHZvaWQgKm9wYXF1ZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdmVyc2lvbl9pZCBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSkKKyt7CisrICAgIFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCA9IG9wYXF1ZTsKKysgICAgVFBNQmFja2VuZCAqdGIgPSAmdHBtX3B0LT5wYXJlbnQ7CisrCisrICAgIHJldHVybiB0cG1fY3VzZV9zZXRfc3RhdGVfYmxvYnModGIsICZ0cG1fcHQtPnRwbV9ibG9icyk7CisrfQorKworK3N0YXRpYyBjb25zdCBWTVN0YXRlRGVzY3JpcHRpb24gdm1zdGF0ZV90cG1fY3VzZSA9IHsKKysgICAgLm5hbWUgPSAiY3VzZS10cG0iLAorKyAgICAudmVyc2lvbl9pZCA9IDEsCisrICAgIC5taW5pbXVtX3ZlcnNpb25faWQgPSAwLAorKyAgICAubWluaW11bV92ZXJzaW9uX2lkX29sZCA9IDAsCisrICAgIC5wcmVfc2F2ZSAgPSB0cG1fY3VzZV9wcmVfc2F2ZSwKKysgICAgLnBvc3RfbG9hZCA9IHRwbV9jdXNlX3Bvc3RfbG9hZCwKKysgICAgLmZpZWxkcyA9IChWTVN0YXRlRmllbGRbXSkgeworKyAgICAgICAgVk1TVEFURV9VSU5UMzIodHBtX2Jsb2JzLnBlcm1hbmVudF9mbGFncywgVFBNUGFzc3RocnVTdGF0ZSksCisrICAgICAgICBWTVNUQVRFX1VJTlQzMih0cG1fYmxvYnMucGVybWFuZW50LnNpemUsIFRQTVBhc3N0aHJ1U3RhdGUpLAorKyAgICAgICAgVk1TVEFURV9WQlVGRkVSX0FMTE9DX1VJTlQzMih0cG1fYmxvYnMucGVybWFuZW50LmJ1ZmZlciwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFBNUGFzc3RocnVTdGF0ZSwgMSwgTlVMTCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHBtX2Jsb2JzLnBlcm1hbmVudC5zaXplKSwKKysKKysgICAgICAgIFZNU1RBVEVfVUlOVDMyKHRwbV9ibG9icy52b2xhdGlsX2ZsYWdzLCBUUE1QYXNzdGhydVN0YXRlKSwKKysgICAgICAgIFZNU1RBVEVfVUlOVDMyKHRwbV9ibG9icy52b2xhdGlsLnNpemUsIFRQTVBhc3N0aHJ1U3RhdGUpLAorKyAgICAgICAgVk1TVEFURV9WQlVGRkVSX0FMTE9DX1VJTlQzMih0cG1fYmxvYnMudm9sYXRpbC5idWZmZXIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTVBhc3N0aHJ1U3RhdGUsIDEsIE5VTEwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwbV9ibG9icy52b2xhdGlsLnNpemUpLAorKworKyAgICAgICAgVk1TVEFURV9VSU5UMzIodHBtX2Jsb2JzLnNhdmVzdGF0ZV9mbGFncywgVFBNUGFzc3RocnVTdGF0ZSksCisrICAgICAgICBWTVNUQVRFX1VJTlQzMih0cG1fYmxvYnMuc2F2ZXN0YXRlLnNpemUsIFRQTVBhc3N0aHJ1U3RhdGUpLAorKyAgICAgICAgVk1TVEFURV9WQlVGRkVSX0FMTE9DX1VJTlQzMih0cG1fYmxvYnMuc2F2ZXN0YXRlLmJ1ZmZlciwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFBNUGFzc3RocnVTdGF0ZSwgMSwgTlVMTCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHBtX2Jsb2JzLnNhdmVzdGF0ZS5zaXplKSwKKysgICAgICAgIFZNU1RBVEVfRU5EX09GX0xJU1QoKQorKyAgICB9CisrfTsKKysKKyBzdGF0aWMgY29uc3QgVFBNRHJpdmVyT3BzIHRwbV9jdXNlX2RyaXZlciA9IHsKKyAgICAgLnR5cGUgICAgICAgICAgICAgICAgICAgICA9IFRQTV9UWVBFX0NVU0VfVFBNLAorICAgICAub3B0cyAgICAgICAgICAgICAgICAgICAgID0gdHBtX3Bhc3N0aHJvdWdoX2NtZGxpbmVfb3B0cywKK2RpZmYgLS1naXQgYS9ody90cG0vdHBtX3Rpcy5jIGIvaHcvdHBtL3RwbV90aXMuYworaW5kZXggMTRkOWU4M2VhMi4uOWI2NjBjZjczNyAxMDA2NDQKKy0tLSBhL2h3L3RwbS90cG1fdGlzLmMKKysrKyBiL2h3L3RwbS90cG1fdGlzLmMKK0BAIC0zNjgsNiArMzY4LDggQEAgc3RhdGljIHZvaWQgdHBtX3Rpc19yZWNlaXZlX2JoKHZvaWQgKm9wYXF1ZSkKKyAgICAgVFBNVElTRW11U3RhdGUgKnRpcyA9ICZzLT5zLnRpczsKKyAgICAgdWludDhfdCBsb2N0eSA9IHMtPmxvY3R5X251bWJlcjsKKyAKKysgICAgdGlzLT5iaF9zY2hlZHVsZWQgPSBmYWxzZTsKKysKKyAgICAgcWVtdV9tdXRleF9sb2NrKCZzLT5zdGF0ZV9sb2NrKTsKKyAKKyAgICAgdHBtX3Rpc19zdHNfc2V0KCZ0aXMtPmxvY1tsb2N0eV0sCitAQCAtNDE1LDYgKzQxNyw4IEBAIHN0YXRpYyB2b2lkIHRwbV90aXNfcmVjZWl2ZV9jYihUUE1TdGF0ZSAqcywgdWludDhfdCBsb2N0eSwKKyAgICAgcWVtdV9tdXRleF91bmxvY2soJnMtPnN0YXRlX2xvY2spOworIAorICAgICBxZW11X2JoX3NjaGVkdWxlKHRpcy0+YmgpOworKworKyAgICB0aXMtPmJoX3NjaGVkdWxlZCA9IHRydWU7CisgfQorIAorIC8qCitAQCAtMTAzMCw5ICsxMDM0LDE0MCBAQCBzdGF0aWMgdm9pZCB0cG1fdGlzX3Jlc2V0KERldmljZVN0YXRlICpkZXYpCisgICAgIHRwbV90aXNfZG9fc3RhcnR1cF90cG0ocyk7CisgfQorIAorKworKy8qIHBlcnNpc3RlbnQgc3RhdGUgaGFuZGxpbmcgKi8KKysKKytzdGF0aWMgdm9pZCB0cG1fdGlzX3ByZV9zYXZlKHZvaWQgKm9wYXF1ZSkKKyt7CisrICAgIFRQTVN0YXRlICpzID0gb3BhcXVlOworKyAgICBUUE1USVNFbXVTdGF0ZSAqdGlzID0gJnMtPnMudGlzOworKyAgICB1aW50OF90IGxvY3R5ID0gdGlzLT5hY3RpdmVfbG9jdHk7CisrCisrICAgIERQUklOVEYoInRwbV90aXM6IHN1c3BlbmQ6IGxvY3R5ID0gJWQgOiByX29mZnNldCA9ICVkLCB3X29mZnNldCA9ICVkXG4iLAorKyAgICAgICAgICAgIGxvY3R5LCB0aXMtPmxvY1swXS5yX29mZnNldCwgdGlzLT5sb2NbMF0ud19vZmZzZXQpOworKyNpZmRlZiBERUJVR19USVMKKysgICAgdHBtX3Rpc19kdW1wX3N0YXRlKG9wYXF1ZSwgMCk7CisrI2VuZGlmCisrCisrICAgIHFlbXVfbXV0ZXhfbG9jaygmcy0+c3RhdGVfbG9jayk7CisrCisrICAgIC8qIHdhaXQgZm9yIG91dHN0YW5kaW5nIHJlcXVlc3QgdG8gY29tcGxldGUgKi8KKysgICAgaWYgKFRQTV9USVNfSVNfVkFMSURfTE9DVFkobG9jdHkpICYmCisrICAgICAgICB0aXMtPmxvY1tsb2N0eV0uc3RhdGUgPT0gVFBNX1RJU19TVEFURV9FWEVDVVRJT04pIHsKKysgICAgICAgIC8qCisrICAgICAgICAgKiBJZiB3ZSBnZXQgaGVyZSB3aGVuIHRoZSBiaCBpcyBzY2hlZHVsZWQgYnV0IGRpZCBub3QgcnVuLAorKyAgICAgICAgICogd2Ugd29uJ3QgZ2V0IG5vdGlmaWVkLi4uCisrICAgICAgICAgKi8KKysgICAgICAgIGlmICghdGlzLT5iaF9zY2hlZHVsZWQpIHsKKysgICAgICAgICAgICAvKiBiYWNrZW5kIHRocmVhZCB0byBub3RpZnkgdXMgKi8KKysgICAgICAgICAgICBxZW11X2NvbmRfd2FpdCgmcy0+Y21kX2NvbXBsZXRlLCAmcy0+c3RhdGVfbG9jayk7CisrICAgICAgICB9CisrICAgICAgICBpZiAodGlzLT5sb2NbbG9jdHldLnN0YXRlID09IFRQTV9USVNfU1RBVEVfRVhFQ1VUSU9OKSB7CisrICAgICAgICAgICAgLyogYm90dG9tIGhhbGYgZGlkIG5vdCBydW4gLSBydW4gaXRzIGZ1bmN0aW9uICovCisrICAgICAgICAgICAgcWVtdV9tdXRleF91bmxvY2soJnMtPnN0YXRlX2xvY2spOworKyAgICAgICAgICAgIHRwbV90aXNfcmVjZWl2ZV9iaChvcGFxdWUpOworKyAgICAgICAgICAgIHFlbXVfbXV0ZXhfbG9jaygmcy0+c3RhdGVfbG9jayk7CisrICAgICAgICB9CisrICAgIH0KKysKKysgICAgcWVtdV9tdXRleF91bmxvY2soJnMtPnN0YXRlX2xvY2spOworKworKyAgICAvKiBjb3B5IGN1cnJlbnQgYWN0aXZlIHJlYWQgb3Igd3JpdGUgYnVmZmVyIGludG8gdGhlIGJ1ZmZlcgorKyAgICAgICB3cml0dGVuIHRvIGRpc2sgKi8KKysgICAgaWYgKFRQTV9USVNfSVNfVkFMSURfTE9DVFkobG9jdHkpKSB7CisrICAgICAgICBzd2l0Y2ggKHRpcy0+bG9jW2xvY3R5XS5zdGF0ZSkgeworKyAgICAgICAgY2FzZSBUUE1fVElTX1NUQVRFX1JFQ0VQVElPTjoKKysgICAgICAgICAgICBtZW1jcHkodGlzLT5idWYsCisrICAgICAgICAgICAgICAgICAgIHRpcy0+bG9jW2xvY3R5XS53X2J1ZmZlci5idWZmZXIsCisrICAgICAgICAgICAgICAgICAgIE1JTihzaXplb2YodGlzLT5idWYpLAorKyAgICAgICAgICAgICAgICAgICAgICAgdGlzLT5sb2NbbG9jdHldLndfYnVmZmVyLnNpemUpKTsKKysgICAgICAgICAgICB0aXMtPm9mZnNldCA9IHRpcy0+bG9jW2xvY3R5XS53X29mZnNldDsKKysgICAgICAgIGJyZWFrOworKyAgICAgICAgY2FzZSBUUE1fVElTX1NUQVRFX0NPTVBMRVRJT046CisrICAgICAgICAgICAgbWVtY3B5KHRpcy0+YnVmLAorKyAgICAgICAgICAgICAgICAgICB0aXMtPmxvY1tsb2N0eV0ucl9idWZmZXIuYnVmZmVyLAorKyAgICAgICAgICAgICAgICAgICBNSU4oc2l6ZW9mKHRpcy0+YnVmKSwKKysgICAgICAgICAgICAgICAgICAgICAgIHRpcy0+bG9jW2xvY3R5XS5yX2J1ZmZlci5zaXplKSk7CisrICAgICAgICAgICAgdGlzLT5vZmZzZXQgPSB0aXMtPmxvY1tsb2N0eV0ucl9vZmZzZXQ7CisrICAgICAgICBicmVhazsKKysgICAgICAgIGRlZmF1bHQ6CisrICAgICAgICAgICAgLyogbGVhayBub3RoaW5nICovCisrICAgICAgICAgICAgbWVtc2V0KHRpcy0+YnVmLCAweDAsIHNpemVvZih0aXMtPmJ1ZikpOworKyAgICAgICAgYnJlYWs7CisrICAgICAgICB9CisrICAgIH0KKyt9CisrCisrc3RhdGljIGludCB0cG1fdGlzX3Bvc3RfbG9hZCh2b2lkICpvcGFxdWUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdmVyc2lvbl9pZCBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSkKKyt7CisrICAgIFRQTVN0YXRlICpzID0gb3BhcXVlOworKyAgICBUUE1USVNFbXVTdGF0ZSAqdGlzID0gJnMtPnMudGlzOworKworKyAgICB1aW50OF90IGxvY3R5ID0gdGlzLT5hY3RpdmVfbG9jdHk7CisrCisrICAgIGlmIChUUE1fVElTX0lTX1ZBTElEX0xPQ1RZKGxvY3R5KSkgeworKyAgICAgICAgc3dpdGNoICh0aXMtPmxvY1tsb2N0eV0uc3RhdGUpIHsKKysgICAgICAgIGNhc2UgVFBNX1RJU19TVEFURV9SRUNFUFRJT046CisrICAgICAgICAgICAgbWVtY3B5KHRpcy0+bG9jW2xvY3R5XS53X2J1ZmZlci5idWZmZXIsCisrICAgICAgICAgICAgICAgICAgIHRpcy0+YnVmLAorKyAgICAgICAgICAgICAgICAgICBNSU4oc2l6ZW9mKHRpcy0+YnVmKSwKKysgICAgICAgICAgICAgICAgICAgICAgIHRpcy0+bG9jW2xvY3R5XS53X2J1ZmZlci5zaXplKSk7CisrICAgICAgICAgICAgdGlzLT5sb2NbbG9jdHldLndfb2Zmc2V0ID0gdGlzLT5vZmZzZXQ7CisrICAgICAgICBicmVhazsKKysgICAgICAgIGNhc2UgVFBNX1RJU19TVEFURV9DT01QTEVUSU9OOgorKyAgICAgICAgICAgIG1lbWNweSh0aXMtPmxvY1tsb2N0eV0ucl9idWZmZXIuYnVmZmVyLAorKyAgICAgICAgICAgICAgICAgICB0aXMtPmJ1ZiwKKysgICAgICAgICAgICAgICAgICAgTUlOKHNpemVvZih0aXMtPmJ1ZiksCisrICAgICAgICAgICAgICAgICAgICAgICB0aXMtPmxvY1tsb2N0eV0ucl9idWZmZXIuc2l6ZSkpOworKyAgICAgICAgICAgIHRpcy0+bG9jW2xvY3R5XS5yX29mZnNldCA9IHRpcy0+b2Zmc2V0OworKyAgICAgICAgYnJlYWs7CisrICAgICAgICBkZWZhdWx0OgorKyAgICAgICAgYnJlYWs7CisrICAgICAgICB9CisrICAgIH0KKysKKysgICAgRFBSSU5URigidHBtX3RpczogcmVzdW1lIDogbG9jdHkgPSAlZCA6IHJfb2Zmc2V0ID0gJWQsIHdfb2Zmc2V0ID0gJWRcbiIsCisrICAgICAgICAgICAgbG9jdHksIHRpcy0+bG9jWzBdLnJfb2Zmc2V0LCB0aXMtPmxvY1swXS53X29mZnNldCk7CisrCisrICAgIHJldHVybiAwOworK30KKysKKytzdGF0aWMgY29uc3QgVk1TdGF0ZURlc2NyaXB0aW9uIHZtc3RhdGVfbG9jdHkgPSB7CisrICAgIC5uYW1lID0gImxvYyIsCisrICAgIC52ZXJzaW9uX2lkID0gMSwKKysgICAgLm1pbmltdW1fdmVyc2lvbl9pZCA9IDAsCisrICAgIC5taW5pbXVtX3ZlcnNpb25faWRfb2xkID0gMCwKKysgICAgLmZpZWxkcyAgICAgID0gKFZNU3RhdGVGaWVsZFtdKSB7CisrICAgICAgICBWTVNUQVRFX1VJTlQzMihzdGF0ZSwgVFBNTG9jYWxpdHkpLAorKyAgICAgICAgVk1TVEFURV9VSU5UMzIoaW50ZSwgVFBNTG9jYWxpdHkpLAorKyAgICAgICAgVk1TVEFURV9VSU5UMzIoaW50cywgVFBNTG9jYWxpdHkpLAorKyAgICAgICAgVk1TVEFURV9VSU5UOChhY2Nlc3MsIFRQTUxvY2FsaXR5KSwKKysgICAgICAgIFZNU1RBVEVfVUlOVDMyKHN0cywgVFBNTG9jYWxpdHkpLAorKyAgICAgICAgVk1TVEFURV9VSU5UMzIoaWZhY2VfaWQsIFRQTUxvY2FsaXR5KSwKKysgICAgICAgIFZNU1RBVEVfRU5EX09GX0xJU1QoKSwKKysgICAgfQorK307CisrCisgc3RhdGljIGNvbnN0IFZNU3RhdGVEZXNjcmlwdGlvbiB2bXN0YXRlX3RwbV90aXMgPSB7CisgICAgIC5uYW1lID0gInRwbSIsCistICAgIC51bm1pZ3JhdGFibGUgPSAxLAorKyAgICAudmVyc2lvbl9pZCA9IDEsCisrICAgIC5taW5pbXVtX3ZlcnNpb25faWQgPSAwLAorKyAgICAubWluaW11bV92ZXJzaW9uX2lkX29sZCA9IDAsCisrICAgIC5wcmVfc2F2ZSAgPSB0cG1fdGlzX3ByZV9zYXZlLAorKyAgICAucG9zdF9sb2FkID0gdHBtX3Rpc19wb3N0X2xvYWQsCisrICAgIC5maWVsZHMgPSAoVk1TdGF0ZUZpZWxkW10pIHsKKysgICAgICAgIFZNU1RBVEVfVUlOVDMyKHMudGlzLm9mZnNldCwgVFBNU3RhdGUpLAorKyAgICAgICAgVk1TVEFURV9CVUZGRVIocy50aXMuYnVmLCBUUE1TdGF0ZSksCisrICAgICAgICBWTVNUQVRFX1VJTlQ4KHMudGlzLmFjdGl2ZV9sb2N0eSwgVFBNU3RhdGUpLAorKyAgICAgICAgVk1TVEFURV9VSU5UOChzLnRpcy5hYm9ydGluZ19sb2N0eSwgVFBNU3RhdGUpLAorKyAgICAgICAgVk1TVEFURV9VSU5UOChzLnRpcy5uZXh0X2xvY3R5LCBUUE1TdGF0ZSksCisrCisrICAgICAgICBWTVNUQVRFX1NUUlVDVF9BUlJBWShzLnRpcy5sb2MsIFRQTVN0YXRlLCBUUE1fVElTX05VTV9MT0NBTElUSUVTLCAxLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm1zdGF0ZV9sb2N0eSwgVFBNTG9jYWxpdHkpLAorKworKyAgICAgICAgVk1TVEFURV9FTkRfT0ZfTElTVCgpCisrICAgIH0KKyB9OworIAorIHN0YXRpYyBQcm9wZXJ0eSB0cG1fdGlzX3Byb3BlcnRpZXNbXSA9IHsKK2RpZmYgLS1naXQgYS9ody90cG0vdHBtX3Rpcy5oIGIvaHcvdHBtL3RwbV90aXMuaAoraW5kZXggYTFkZjQxZmEyMS4uYjdmYzBlYTFhOSAxMDA2NDQKKy0tLSBhL2h3L3RwbS90cG1fdGlzLmgKKysrKyBiL2h3L3RwbS90cG1fdGlzLmgKK0BAIC01NCw2ICs1NCw4IEBAIHR5cGVkZWYgc3RydWN0IFRQTUxvY2FsaXR5IHsKKyAKKyB0eXBlZGVmIHN0cnVjdCBUUE1USVNFbXVTdGF0ZSB7CisgICAgIFFFTVVCSCAqYmg7CisrICAgIGJvb2wgYmhfc2NoZWR1bGVkOyAvKiBiaCBzY2hlZHVsZWQgYnV0IGRpZCBub3QgcnVuIHlldCAqLworKworICAgICB1aW50MzJfdCBvZmZzZXQ7CisgICAgIHVpbnQ4X3QgYnVmW1RQTV9USVNfQlVGRkVSX01BWF07CisgCitkaWZmIC0tZ2l0IGEvaHcvdHBtL3RwbV91dGlsLmMgYi9ody90cG0vdHBtX3V0aWwuYworaW5kZXggN2IzNTQyOTcyNS4uYjZmZjc0ZDk0NiAxMDA2NDQKKy0tLSBhL2h3L3RwbS90cG1fdXRpbC5jCisrKysgYi9ody90cG0vdHBtX3V0aWwuYworQEAgLTIyLDYgKzIyLDE3IEBACisgI2luY2x1ZGUgInFlbXUvb3NkZXAuaCIKKyAjaW5jbHVkZSAidHBtX3V0aWwuaCIKKyAjaW5jbHVkZSAidHBtX2ludC5oIgorKyNpbmNsdWRlICJ0cG1faW9jdGwuaCIKKysjaW5jbHVkZSAicWVtdS9lcnJvci1yZXBvcnQuaCIKKysKKysjZGVmaW5lIERFQlVHX1RQTSAwCisrCisrI2RlZmluZSBEUFJJTlRGKGZtdCwgLi4uKSBkbyB7IFwKKysgICAgaWYgKERFQlVHX1RQTSkgeyBcCisrICAgICAgICBmcHJpbnRmKHN0ZGVyciwgZm10LCAjIyBfX1ZBX0FSR1NfXyk7IFwKKysgICAgfSBcCisrfSB3aGlsZSAoMCkKKysKKyAKKyAvKgorICAqIEEgYmFzaWMgdGVzdCBvZiBhIFRQTSBkZXZpY2UuIFdlIGV4cGVjdCBhIHdlbGwgZm9ybWF0dGVkIHJlc3BvbnNlIGhlYWRlcgorQEAgLTEyNSwzICsxMzYsMjE1IEBAIGludCB0cG1fdXRpbF90ZXN0X3RwbWRldihpbnQgdHBtX2ZkLCBUUE1WZXJzaW9uICp0cG1fdmVyc2lvbikKKyAKKyAgICAgcmV0dXJuIDE7CisgfQorKworK3N0YXRpYyB2b2lkIHRwbV9zaXplZF9idWZmZXJfcmVzZXQoVFBNU2l6ZWRCdWZmZXIgKnRzYikKKyt7CisrICAgIGdfZnJlZSh0c2ItPmJ1ZmZlcik7CisrICAgIHRzYi0+YnVmZmVyID0gTlVMTDsKKysgICAgdHNiLT5zaXplID0gMDsKKyt9CisrCisrLyoKKysgKiBUcmFuc2ZlciBhIFRQTSBzdGF0ZSBibG9iIGZyb20gdGhlIFRQTSBpbnRvIGEgcHJvdmlkZWQgYnVmZmVyLgorKyAqCisrICogQGZkOiBmaWxlIGRlc2NyaXB0b3IgdG8gdGFsayB0byB0aGUgQ1VTRSBUUE0KKysgKiBAdHlwZTogdGhlIHR5cGUgb2YgYmxvYiB0byB0cmFuc2ZlcgorKyAqIEBkZWNyeXB0ZWRfYmxvYjogd2hldGhlciB3ZSByZXF1ZXN0IHRvIHJlY2VpdmUgZGVjcnlwdGVkIGJsb2JzCisrICogQHRzYjogdGhlIFRQTVNpemVCdWZmZXIgdG8gZmlsbCB3aXRoIHRoZSBibG9iCisrICogQGZsYWdzOiB0aGUgZmxhZ3MgdG8gcmV0dXJuIHRvIHRoZSBjYWxsZXIKKysgKi8KKytzdGF0aWMgaW50IHRwbV91dGlsX2N1c2VfZ2V0X3N0YXRlX2Jsb2IoaW50IGZkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IHR5cGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZGVjcnlwdGVkX2Jsb2IsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTVNpemVkQnVmZmVyICp0c2IsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICpmbGFncykKKyt7CisrICAgIHB0bV9nZXRzdGF0ZSBwZ3M7CisrICAgIHVpbnQxNl90IG9mZnNldCA9IDA7CisrICAgIHB0bV9yZXMgcmVzOworKyAgICBzc2l6ZV90IG47CisrICAgIHNpemVfdCB0b19yZWFkOworKworKyAgICB0cG1fc2l6ZWRfYnVmZmVyX3Jlc2V0KHRzYik7CisrCisrICAgIHBncy51LnJlcS5zdGF0ZV9mbGFncyA9IChkZWNyeXB0ZWRfYmxvYikgPyBQVE1fU1RBVEVfRkxBR19ERUNSWVBURUQgOiAwOworKyAgICBwZ3MudS5yZXEudHlwZSA9IHR5cGU7CisrICAgIHBncy51LnJlcS5vZmZzZXQgPSBvZmZzZXQ7CisrCisrICAgIGlmIChpb2N0bChmZCwgUFRNX0dFVF9TVEFURUJMT0IsICZwZ3MpIDwgMCkgeworKyAgICAgICAgZXJyb3JfcmVwb3J0KCJDVVNFIFRQTSBQVE1fR0VUX1NUQVRFQkxPQiBpb2N0bCBmYWlsZWQ6ICVzIiwKKysgICAgICAgICAgICAgICAgICAgICBzdHJlcnJvcihlcnJubykpOworKyAgICAgICAgZ290byBlcnJfZXhpdDsKKysgICAgfQorKyAgICByZXMgPSBwZ3MudS5yZXNwLnRwbV9yZXN1bHQ7CisrICAgIGlmIChyZXMgIT0gMCAmJiAocmVzICYgMHg4MDApID09IDApIHsKKysgICAgICAgIGVycm9yX3JlcG9ydCgiR2V0dGluZyB0aGUgc3RhdGVibG9iICh0eXBlICVkKSBmYWlsZWQgd2l0aCBhIFRQTSAiCisrICAgICAgICAgICAgICAgICAgICAgImVycm9yIDB4JXgiLCB0eXBlLCByZXMpOworKyAgICAgICAgZ290byBlcnJfZXhpdDsKKysgICAgfQorKworKyAgICAqZmxhZ3MgPSBwZ3MudS5yZXNwLnN0YXRlX2ZsYWdzOworKworKyAgICB0c2ItPmJ1ZmZlciA9IGdfbWFsbG9jKHBncy51LnJlc3AudG90bGVuZ3RoKTsKKysgICAgbWVtY3B5KHRzYi0+YnVmZmVyLCBwZ3MudS5yZXNwLmRhdGEsIHBncy51LnJlc3AubGVuZ3RoKTsKKysgICAgdHNiLT5zaXplID0gcGdzLnUucmVzcC5sZW5ndGg7CisrCisrICAgIC8qIGlmIHRoZXJlIGFyZSBieXRlcyBsZWZ0IHRvIGdldCB1c2UgcmVhZCgpIGludGVyZmFjZSAqLworKyAgICB3aGlsZSAodHNiLT5zaXplIDwgcGdzLnUucmVzcC50b3RsZW5ndGgpIHsKKysgICAgICAgIHRvX3JlYWQgPSBwZ3MudS5yZXNwLnRvdGxlbmd0aCAtIHRzYi0+c2l6ZTsKKysgICAgICAgIGlmICh1bmxpa2VseSh0b19yZWFkID4gU1NJWkVfTUFYKSkgeworKyAgICAgICAgICAgIHRvX3JlYWQgPSBTU0laRV9NQVg7CisrICAgICAgICB9CisrCisrICAgICAgICBuID0gcmVhZChmZCwgJnRzYi0+YnVmZmVyW3RzYi0+c2l6ZV0sIHRvX3JlYWQpOworKyAgICAgICAgaWYgKG4gIT0gdG9fcmVhZCkgeworKyAgICAgICAgICAgIGVycm9yX3JlcG9ydCgiQ291bGQgbm90IHJlYWQgc3RhdGVibG9iICh0eXBlICVkKSA6ICVzIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSwgc3RyZXJyb3IoZXJybm8pKTsKKysgICAgICAgICAgICBnb3RvIGVycl9leGl0OworKyAgICAgICAgfQorKyAgICAgICAgdHNiLT5zaXplICs9IHRvX3JlYWQ7CisrICAgIH0KKysKKysgICAgRFBSSU5URigidHBtX3V0aWw6IGdvdCBzdGF0ZSBibG9iIHR5cGUgJWQsICVkIGJ5dGVzLCBmbGFncyAweCUwOHgsICIKKysgICAgICAgICAgICAiZGVjcnlwdGVkPSVkXG4iLCB0eXBlLCB0c2ItPnNpemUsICpmbGFncywgZGVjcnlwdGVkX2Jsb2IpOworKworKyAgICByZXR1cm4gMDsKKysKKytlcnJfZXhpdDoKKysgICAgcmV0dXJuIDE7CisrfQorKworK2ludCB0cG1fdXRpbF9jdXNlX2dldF9zdGF0ZV9ibG9icyhpbnQgdHBtX2ZkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRlY3J5cHRlZF9ibG9icywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFBNQmxvYkJ1ZmZlcnMgKnRwbV9ibG9icykKKyt7CisrICAgIGlmICh0cG1fdXRpbF9jdXNlX2dldF9zdGF0ZV9ibG9iKHRwbV9mZCwgUFRNX0JMT0JfVFlQRV9QRVJNQU5FTlQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY3J5cHRlZF9ibG9icywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRwbV9ibG9icy0+cGVybWFuZW50LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHBtX2Jsb2JzLT5wZXJtYW5lbnRfZmxhZ3MpIHx8CisrICAgICAgIHRwbV91dGlsX2N1c2VfZ2V0X3N0YXRlX2Jsb2IodHBtX2ZkLCBQVE1fQkxPQl9UWVBFX1ZPTEFUSUxFLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNyeXB0ZWRfYmxvYnMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0cG1fYmxvYnMtPnZvbGF0aWwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0cG1fYmxvYnMtPnZvbGF0aWxfZmxhZ3MpIHx8CisrICAgICAgIHRwbV91dGlsX2N1c2VfZ2V0X3N0YXRlX2Jsb2IodHBtX2ZkLCBQVE1fQkxPQl9UWVBFX1NBVkVTVEFURSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjcnlwdGVkX2Jsb2JzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHBtX2Jsb2JzLT5zYXZlc3RhdGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0cG1fYmxvYnMtPnNhdmVzdGF0ZV9mbGFncykpIHsKKysgICAgICAgIGdvdG8gZXJyX2V4aXQ7CisrICAgIH0KKysKKysgICAgcmV0dXJuIDA7CisrCisrIGVycl9leGl0OgorKyAgICB0cG1fc2l6ZWRfYnVmZmVyX3Jlc2V0KCZ0cG1fYmxvYnMtPnZvbGF0aWwpOworKyAgICB0cG1fc2l6ZWRfYnVmZmVyX3Jlc2V0KCZ0cG1fYmxvYnMtPnBlcm1hbmVudCk7CisrICAgIHRwbV9zaXplZF9idWZmZXJfcmVzZXQoJnRwbV9ibG9icy0+c2F2ZXN0YXRlKTsKKysKKysgICAgcmV0dXJuIDE7CisrfQorKworK3N0YXRpYyBpbnQgdHBtX3V0aWxfY3VzZV9kb19zZXRfc3RhdGVibG9iX2lvY3RsKGludCBmZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBmbGFncywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB0eXBlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGxlbmd0aCkKKyt7CisrICAgIHB0bV9zZXRzdGF0ZSBwc3M7CisrCisrICAgIHBzcy51LnJlcS5zdGF0ZV9mbGFncyA9IGZsYWdzOworKyAgICBwc3MudS5yZXEudHlwZSA9IHR5cGU7CisrICAgIHBzcy51LnJlcS5sZW5ndGggPSBsZW5ndGg7CisrCisrICAgIGlmIChpb2N0bChmZCwgUFRNX1NFVF9TVEFURUJMT0IsICZwc3MpIDwgMCkgeworKyAgICAgICAgZXJyb3JfcmVwb3J0KCJDVVNFIFRQTSBQVE1fU0VUX1NUQVRFQkxPQiBpb2N0bCBmYWlsZWQ6ICVzIiwKKysgICAgICAgICAgICAgICAgICAgICBzdHJlcnJvcihlcnJubykpOworKyAgICAgICAgcmV0dXJuIDE7CisrICAgIH0KKysKKysgICAgaWYgKHBzcy51LnJlc3AudHBtX3Jlc3VsdCAhPSAwKSB7CisrICAgICAgICBlcnJvcl9yZXBvcnQoIlNldHRpbmcgdGhlIHN0YXRlYmxvYiAodHlwZSAlZCkgZmFpbGVkIHdpdGggYSBUUE0gIgorKyAgICAgICAgICAgICAgICAgICAgICJlcnJvciAweCV4IiwgdHlwZSwgcHNzLnUucmVzcC50cG1fcmVzdWx0KTsKKysgICAgICAgIHJldHVybiAxOworKyAgICB9CisrCisrICAgIHJldHVybiAwOworK30KKysKKysKKysvKgorKyAqIFRyYW5zZmVyIGEgVFBNIHN0YXRlIGJsb2IgdG8gdGhlIENVU0UgVFBNLgorKyAqCisrICogQGZkOiBmaWxlIGRlc2NyaXB0b3IgdG8gdGFsayB0byB0aGUgQ1VTRSBUUE0KKysgKiBAdHlwZTogdGhlIHR5cGUgb2YgVFBNIHN0YXRlIGJsb2IgdG8gdHJhbnNmZXIKKysgKiBAdHNiOiBUUE1TaXplQnVmZmVyIGNvbnRhaW5pbmcgdGhlIFRQTSBzdGF0ZSBibG9iCisrICogQGZsYWdzOiBGbGFncyBkZXNjcmliaW5nIHRoZSAoZW5jcnlwdGlvbikgc3RhdGUgb2YgdGhlIFRQTSBzdGF0ZSBibG9iCisrICovCisrc3RhdGljIGludCB0cG1fdXRpbF9jdXNlX3NldF9zdGF0ZV9ibG9iKGludCBmZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdHlwZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFBNU2l6ZWRCdWZmZXIgKnRzYiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZmxhZ3MpCisreworKyAgICB1aW50MzJfdCBvZmZzZXQgPSAwOworKyAgICBzc2l6ZV90IG47CisrICAgIHNpemVfdCB0b193cml0ZTsKKysKKysgICAgLyogaW5pdGlhdGUgdGhlIHRyYW5zZmVyIHRvIHRoZSBDVVNFIFRQTSAqLworKyAgICBpZiAodHBtX3V0aWxfY3VzZV9kb19zZXRfc3RhdGVibG9iX2lvY3RsKGZkLCBmbGFncywgdHlwZSwgMCkpIHsKKysgICAgICAgIHJldHVybiAxOworKyAgICB9CisrCisrICAgIC8qIHVzZSB0aGUgd3JpdGUoKSBpbnRlcmZhY2UgZm9yIHRyYW5zZmVycmluZyB0aGUgc3RhdGUgYmxvYiAqLworKyAgICB3aGlsZSAob2Zmc2V0IDwgdHNiLT5zaXplKSB7CisrICAgICAgICB0b193cml0ZSA9IHRzYi0+c2l6ZSAtIG9mZnNldDsKKysgICAgICAgIGlmICh1bmxpa2VseSh0b193cml0ZSA+IFNTSVpFX01BWCkpIHsKKysgICAgICAgICAgICB0b193cml0ZSA9IFNTSVpFX01BWDsKKysgICAgICAgIH0KKysKKysgICAgICAgIG4gPSB3cml0ZShmZCwgJnRzYi0+YnVmZmVyW29mZnNldF0sIHRvX3dyaXRlKTsKKysgICAgICAgIGlmIChuICE9IHRvX3dyaXRlKSB7CisrICAgICAgICAgICAgZXJyb3JfcmVwb3J0KCJXcml0aW5nIHRoZSBzdGF0ZWJsb2IgKHR5cGUgJWQpIGZhaWxlZDogJXMiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlLCBzdHJlcnJvcihlcnJubykpOworKyAgICAgICAgICAgIGdvdG8gZXJyX2V4aXQ7CisrICAgICAgICB9CisrICAgICAgICBvZmZzZXQgKz0gdG9fd3JpdGU7CisrICAgIH0KKysKKysgICAgLyogaW5pZGljYXRlIHRoYXQgdGhlIHRyYW5zZmVyIGlzIGZpbmlzaGVkICovCisrICAgIGlmICh0cG1fdXRpbF9jdXNlX2RvX3NldF9zdGF0ZWJsb2JfaW9jdGwoZmQsIGZsYWdzLCB0eXBlLCAwKSkgeworKyAgICAgICAgZ290byBlcnJfZXhpdDsKKysgICAgfQorKworKyAgICBEUFJJTlRGKCJ0cG1fdXRpbDogc2V0IHRoZSBzdGF0ZSBibG9iIHR5cGUgJWQsICVkIGJ5dGVzLCBmbGFncyAweCUwOHhcbiIsCisrICAgICAgICAgICAgdHlwZSwgdHNiLT5zaXplLCBmbGFncyk7CisrCisrICAgIHJldHVybiAwOworKworK2Vycl9leGl0OgorKyAgICByZXR1cm4gMTsKKyt9CisrCisraW50IHRwbV91dGlsX2N1c2Vfc2V0X3N0YXRlX2Jsb2JzKGludCB0cG1fZmQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTUJsb2JCdWZmZXJzICp0cG1fYmxvYnMpCisreworKyAgICBwdG1fcmVzIHJlczsKKysKKysgICAgaWYgKGlvY3RsKHRwbV9mZCwgUFRNX1NUT1AsICZyZXMpIDwgMCkgeworKyAgICAgICAgZXJyb3JfcmVwb3J0KCJ0cG1fcGFzc3Rocm91Z2g6IENvdWxkIG5vdCBzdG9wICIKKysgICAgICAgICAgICAgICAgICAgICAidGhlIENVU0UgVFBNOiAlcyAoJWkpIiwKKysgICAgICAgICAgICAgICAgICAgICBzdHJlcnJvcihlcnJubyksIGVycm5vKTsKKysgICAgICAgIHJldHVybiAxOworKyAgICB9CisrCisrICAgIGlmICh0cG1fdXRpbF9jdXNlX3NldF9zdGF0ZV9ibG9iKHRwbV9mZCwgUFRNX0JMT0JfVFlQRV9QRVJNQU5FTlQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0cG1fYmxvYnMtPnBlcm1hbmVudCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHBtX2Jsb2JzLT5wZXJtYW5lbnRfZmxhZ3MpIHx8CisrICAgICAgICB0cG1fdXRpbF9jdXNlX3NldF9zdGF0ZV9ibG9iKHRwbV9mZCwgUFRNX0JMT0JfVFlQRV9WT0xBVElMRSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRwbV9ibG9icy0+dm9sYXRpbCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHBtX2Jsb2JzLT52b2xhdGlsX2ZsYWdzKSB8fAorKyAgICAgICAgdHBtX3V0aWxfY3VzZV9zZXRfc3RhdGVfYmxvYih0cG1fZmQsIFBUTV9CTE9CX1RZUEVfU0FWRVNUQVRFLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHBtX2Jsb2JzLT5zYXZlc3RhdGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwbV9ibG9icy0+c2F2ZXN0YXRlX2ZsYWdzKSkgeworKyAgICAgICAgcmV0dXJuIDE7CisrICAgIH0KKysKKysgICAgcmV0dXJuIDA7CisrfQorZGlmZiAtLWdpdCBhL2h3L3RwbS90cG1fdXRpbC5oIGIvaHcvdHBtL3RwbV91dGlsLmgKK2luZGV4IGRmNzYyNDVlNmUuLmMyNDA3MWQ4MTIgMTAwNjQ0CistLS0gYS9ody90cG0vdHBtX3V0aWwuaAorKysrIGIvaHcvdHBtL3RwbV91dGlsLmgKK0BAIC0yNiw0ICsyNiwxMSBAQAorIAorIGludCB0cG1fdXRpbF90ZXN0X3RwbWRldihpbnQgdHBtX2ZkLCBUUE1WZXJzaW9uICp0cG1fdmVyc2lvbik7CisgCisraW50IHRwbV91dGlsX2N1c2VfZ2V0X3N0YXRlX2Jsb2JzKGludCB0cG1fZmQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZGVjcnlwdGVkX2Jsb2JzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUE1CbG9iQnVmZmVycyAqdHBtX2Jsb2JzKTsKKysKKytpbnQgdHBtX3V0aWxfY3VzZV9zZXRfc3RhdGVfYmxvYnMoaW50IHRwbV9mZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFBNQmxvYkJ1ZmZlcnMgKnRwbV9ibG9icyk7CisrCisgI2VuZGlmIC8qIFRQTV9UUE1fVVRJTF9IICovCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zeXNlbXUvdHBtX2JhY2tlbmQuaCBiL2luY2x1ZGUvc3lzZW11L3RwbV9iYWNrZW5kLmgKK2luZGV4IGI1OGY1MmQzOWYuLjM0MDM4MjFiOWQgMTAwNjQ0CistLS0gYS9pbmNsdWRlL3N5c2VtdS90cG1fYmFja2VuZC5oCisrKysgYi9pbmNsdWRlL3N5c2VtdS90cG1fYmFja2VuZC5oCitAQCAtNjIsNiArNjIsMTggQEAgdHlwZWRlZiBzdHJ1Y3QgVFBNU2l6ZWRCdWZmZXIgeworICAgICB1aW50OF90ICAqYnVmZmVyOworIH0gVFBNU2l6ZWRCdWZmZXI7CisgCisrLyogYmxvYnMgZnJvbSB0aGUgVFBNOyBwYXJ0IG9mIFZNIHN0YXRlIHdoZW4gbWlncmF0aW5nICovCisrdHlwZWRlZiBzdHJ1Y3QgVFBNQmxvYkJ1ZmZlcnMgeworKyAgICB1aW50MzJfdCBwZXJtYW5lbnRfZmxhZ3M7CisrICAgIFRQTVNpemVkQnVmZmVyIHBlcm1hbmVudDsKKysKKysgICAgdWludDMyX3Qgdm9sYXRpbF9mbGFnczsKKysgICAgVFBNU2l6ZWRCdWZmZXIgdm9sYXRpbDsKKysKKysgICAgdWludDMyX3Qgc2F2ZXN0YXRlX2ZsYWdzOworKyAgICBUUE1TaXplZEJ1ZmZlciBzYXZlc3RhdGU7CisrfSBUUE1CbG9iQnVmZmVyczsKKysKKyBzdHJ1Y3QgVFBNRHJpdmVyT3BzIHsKKyAgICAgZW51bSBUcG1UeXBlIHR5cGU7CisgICAgIGNvbnN0IFFlbXVPcHREZXNjICpvcHRzOworLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwNC1BZGQtc3VwcG9ydC1mb3ItVk0tc3VzcGVuZC1yZXN1bWUtZm9yLVRQTS1USVMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA0LUFkZC1zdXBwb3J0LWZvci1WTS1zdXNwZW5kLXJlc3VtZS1mb3ItVFBNLVRJUy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjhhNzgzZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA0LUFkZC1zdXBwb3J0LWZvci1WTS1zdXNwZW5kLXJlc3VtZS1mb3ItVFBNLVRJUy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcxOSArMCwwIEBACi1Gcm9tIDVlOWRkOTA2M2Y1MTQ0NDdlYTRmNTQwNDY3OTNmNGYwMWMyOTdlZDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTdGVmYW4gQmVyZ2VyIDxzdGVmYW5iQGxpbnV4LnZuZXQuaWJtLmNvbT4KLURhdGU6IFNhdCwgMzEgRGVjIDIwMTYgMTE6MjM6MzIgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSCA0LzRdIEFkZCBzdXBwb3J0IGZvciBWTSBzdXNwZW5kL3Jlc3VtZSBmb3IgVFBNIFRJUwotCi1FeHRlbmQgdGhlIFRQTSBUSVMgY29kZSB0byBzdXBwb3J0IHN1c3BlbmQvcmVzdW1lLiBJbiBjYXNlIGEgY29tbWFuZAotaXMgYmVpbmcgcHJvY2Vzc2VkIGJ5IHRoZSBleHRlcm5hbCBUUE0gd2hlbiBzdXNwZW5kaW5nLCB3YWl0IGZvciB0aGUgY29tbWFuZAotdG8gY29tcGxldGUgdG8gY2F0Y2ggdGhlIHJlc3VsdC4gSW4gY2FzZSB0aGUgYm90dG9tIGhhbGYgZGlkIG5vdCBydW4sCi1ydW4gdGhlIG9uZSBmdW5jdGlvbiB0aGUgYm90dG9tIGhhbGYgaXMgc3VwcG9zZWQgdG8gcnVuLiBUaGlzIHRoZW4KLW1ha2VzIHRoZSByZXN1bWUgb3BlcmF0aW9uIHdvcmsuCi0KLVRoZSBwYXNzdGhyb3VnaCBiYWNrZW5kIGRvZXMgbm90IHN1cHBvcnQgc3VzcGVuZC9yZXN1bWUgb3BlcmF0aW9uCi1hbmQgaXMgdGhlcmVmb3JlIGJsb2NrZWQgZnJvbSBzdXNwZW5kL3Jlc3VtZSBhbmQgbWlncmF0aW9uLgotCi1UaGUgQ1VTRSBUUE0ncyBzdXBwb3J0ZWQgY2FwYWJpbGl0aWVzIGFyZSB0ZXN0ZWQgYW5kIGlmIHN1ZmZpY2llbnQKLWNhcGFiaWxpdGllcyBhcmUgaW1wbGVtZW50ZWQsIHN1c3BlbmQvcmVzdW1lLCBzbmFwc2hvdHRpbmcgYW5kCi1taWdyYXRpb24gYXJlIHN1cHBvcnRlZCBieSB0aGUgQ1VTRSBUUE0uCi0KLVNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBCZXJnZXIgPHN0ZWZhbmJAbGludXgudm5ldC5pYm0uY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW2h0dHBzOi8vbGlzdHMubm9uZ251Lm9yZy9hcmNoaXZlL2h0bWwvcWVtdS1kZXZlbC8yMDE2LTA2L21zZzAwMjUyLmh0bWxdCi1TaWduZWQtb2ZmLWJ5OiBQYXRyaWNrIE9obHkgPHBhdHJpY2sub2hseUBpbnRlbC5jb20+Ci0tLS0KLSBody90cG0vdHBtX3Bhc3N0aHJvdWdoLmMgICAgIHwgMTMwICsrKysrKysrKysrKysrKysrKysrKysrLS0KLSBody90cG0vdHBtX3Rpcy5jICAgICAgICAgICAgIHwgMTM3ICsrKysrKysrKysrKysrKysrKysrKysrKystCi0gaHcvdHBtL3RwbV90aXMuaCAgICAgICAgICAgICB8ICAgMiArCi0gaHcvdHBtL3RwbV91dGlsLmMgICAgICAgICAgICB8IDIyMyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gaHcvdHBtL3RwbV91dGlsLmggICAgICAgICAgICB8ICAgNyArKwotIGluY2x1ZGUvc3lzZW11L3RwbV9iYWNrZW5kLmggfCAgMTIgKysrCi0gNiBmaWxlcyBjaGFuZ2VkLCA1MDMgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2h3L3RwbS90cG1fcGFzc3Rocm91Z2guYyBiL2h3L3RwbS90cG1fcGFzc3Rocm91Z2guYwotaW5kZXggNDQ3MzllYmFkMi4uYmM4MDcyZDBiYyAxMDA2NDQKLS0tLSBhL2h3L3RwbS90cG1fcGFzc3Rocm91Z2guYwotKysrIGIvaHcvdHBtL3RwbV9wYXNzdGhyb3VnaC5jCi1AQCAtMzQsNiArMzQsOCBAQAotICNpbmNsdWRlICJ0cG1fdGlzLmgiCi0gI2luY2x1ZGUgInRwbV91dGlsLmgiCi0gI2luY2x1ZGUgInRwbV9pb2N0bC5oIgotKyNpbmNsdWRlICJtaWdyYXRpb24vbWlncmF0aW9uLmgiCi0rI2luY2x1ZGUgInFhcGkvZXJyb3IuaCIKLSAKLSAjZGVmaW5lIERFQlVHX1RQTSAwCi0gCi1AQCAtNDksNiArNTEsNyBAQAotICNkZWZpbmUgVFlQRV9UUE1fQ1VTRSAidHBtLWN1c2UiCi0gCi0gc3RhdGljIGNvbnN0IFRQTURyaXZlck9wcyB0cG1fcGFzc3Rocm91Z2hfZHJpdmVyOwotK3N0YXRpYyBjb25zdCBWTVN0YXRlRGVzY3JpcHRpb24gdm1zdGF0ZV90cG1fY3VzZTsKLSAKLSAvKiBkYXRhIHN0cnVjdHVyZXMgKi8KLSB0eXBlZGVmIHN0cnVjdCBUUE1QYXNzdGhydVRocmVhZFBhcmFtcyB7Ci1AQCAtNzksNiArODIsMTAgQEAgc3RydWN0IFRQTVBhc3N0aHJ1U3RhdGUgewotICAgICBRZW11TXV0ZXggc3RhdGVfbG9jazsKLSAgICAgUWVtdUNvbmQgY21kX2NvbXBsZXRlOyAgLyogc2luZ25hbGVkIG9uY2UgdHBtX2J1c3kgaXMgZmFsc2UgKi8KLSAgICAgYm9vbCB0cG1fYnVzeTsKLSsKLSsgICAgRXJyb3IgKm1pZ3JhdGlvbl9ibG9ja2VyOwotKwotKyAgICBUUE1CbG9iQnVmZmVycyB0cG1fYmxvYnM7Ci0gfTsKLSAKLSB0eXBlZGVmIHN0cnVjdCBUUE1QYXNzdGhydVN0YXRlIFRQTVBhc3N0aHJ1U3RhdGU7Ci1AQCAtMzA2LDYgKzMxMywxMCBAQCBzdGF0aWMgdm9pZCB0cG1fcGFzc3Rocm91Z2hfc2h1dGRvd24oVFBNUGFzc3RocnVTdGF0ZSAqdHBtX3B0KQotICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlcnJvcihlcnJubykpOwotICAgICAgICAgfQotICAgICB9Ci0rICAgIGlmICh0cG1fcHQtPm1pZ3JhdGlvbl9ibG9ja2VyKSB7Ci0rICAgICAgICBtaWdyYXRlX2RlbF9ibG9ja2VyKHRwbV9wdC0+bWlncmF0aW9uX2Jsb2NrZXIpOwotKyAgICAgICAgZXJyb3JfZnJlZSh0cG1fcHQtPm1pZ3JhdGlvbl9ibG9ja2VyKTsKLSsgICAgfQotIH0KLSAKLSAvKgotQEAgLTM2MCwxMiArMzcxLDE0IEBAIHN0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX2N1c2VfY2hlY2tfY2FwcyhUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQpCi0gLyoKLSAgKiBJbml0aWFsaXplIHRoZSBleHRlcm5hbCBDVVNFIFRQTQotICAqLwotLXN0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX2N1c2VfaW5pdChUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQpCi0rc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfY3VzZV9pbml0KFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc19yZXN1bWUpCi0gewotICAgICBpbnQgcmMgPSAwOwotLSAgICBwdG1faW5pdCBpbml0ID0gewotLSAgICAgICAgLnUucmVxLmluaXRfZmxhZ3MgPSBQVE1fSU5JVF9GTEFHX0RFTEVURV9WT0xBVElMRSwKLS0gICAgfTsKLSsgICAgcHRtX2luaXQgaW5pdDsKLSsgICAgaWYgKGlzX3Jlc3VtZSkgewotKyAgICAgICAgaW5pdC51LnJlcS5pbml0X2ZsYWdzID0gUFRNX0lOSVRfRkxBR19ERUxFVEVfVk9MQVRJTEU7Ci0rICAgIH0KLSAKLSAgICAgaWYgKFRQTV9QQVNTVEhST1VHSF9VU0VTX0NVU0VfVFBNKHRwbV9wdCkpIHsKLSAgICAgICAgIGlmIChpb2N0bCh0cG1fcHQtPnRwbV9mZCwgUFRNX0lOSVQsICZpbml0KSA8IDApIHsKLUBAIC0zOTQsNyArNDA3LDcgQEAgc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfc3RhcnR1cF90cG0oVFBNQmFja2VuZCAqdGIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHBtX3Bhc3N0aHJvdWdoX3dvcmtlcl90aHJlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRwbV9wdC0+dHBtX3RocmVhZF9wYXJhbXMpOwotIAotLSAgICB0cG1fcGFzc3Rocm91Z2hfY3VzZV9pbml0KHRwbV9wdCk7Ci0rICAgIHRwbV9wYXNzdGhyb3VnaF9jdXNlX2luaXQodHBtX3B0LCBmYWxzZSk7Ci0gCi0gICAgIHJldHVybiAwOwotIH0KLUBAIC00NjYsNiArNDc5LDMyIEBAIHN0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX3Jlc2V0X3RwbV9lc3RhYmxpc2hlZF9mbGFnKFRQTUJhY2tlbmQgKnRiLAotICAgICByZXR1cm4gcmM7Ci0gfQotIAotK3N0YXRpYyBpbnQgdHBtX2N1c2VfZ2V0X3N0YXRlX2Jsb2JzKFRQTUJhY2tlbmQgKnRiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZGVjcnlwdGVkX2Jsb2JzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTUJsb2JCdWZmZXJzICp0cG1fYmxvYnMpCi0rewotKyAgICBUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQgPSBUUE1fUEFTU1RIUk9VR0godGIpOwotKwotKyAgICBhc3NlcnQoVFBNX1BBU1NUSFJPVUdIX1VTRVNfQ1VTRV9UUE0odHBtX3B0KSk7Ci0rCi0rICAgIHJldHVybiB0cG1fdXRpbF9jdXNlX2dldF9zdGF0ZV9ibG9icyh0cG1fcHQtPnRwbV9mZCwgZGVjcnlwdGVkX2Jsb2JzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHBtX2Jsb2JzKTsKLSt9Ci0rCi0rc3RhdGljIGludCB0cG1fY3VzZV9zZXRfc3RhdGVfYmxvYnMoVFBNQmFja2VuZCAqdGIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFBNQmxvYkJ1ZmZlcnMgKnRwbV9ibG9icykKLSt7Ci0rICAgIFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCA9IFRQTV9QQVNTVEhST1VHSCh0Yik7Ci0rCi0rICAgIGFzc2VydChUUE1fUEFTU1RIUk9VR0hfVVNFU19DVVNFX1RQTSh0cG1fcHQpKTsKLSsKLSsgICAgaWYgKHRwbV91dGlsX2N1c2Vfc2V0X3N0YXRlX2Jsb2JzKHRwbV9wdC0+dHBtX2ZkLCB0cG1fYmxvYnMpKSB7Ci0rICAgICAgICByZXR1cm4gMTsKLSsgICAgfQotKwotKyAgICByZXR1cm4gdHBtX3Bhc3N0aHJvdWdoX2N1c2VfaW5pdCh0cG1fcHQsIHRydWUpOwotK30KLSsKLSBzdGF0aWMgYm9vbCB0cG1fcGFzc3Rocm91Z2hfZ2V0X3N0YXJ0dXBfZXJyb3IoVFBNQmFja2VuZCAqdGIpCi0gewotICAgICBUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQgPSBUUE1fUEFTU1RIUk9VR0godGIpOwotQEAgLTQ4OCw3ICs1MjcsNyBAQCBzdGF0aWMgdm9pZCB0cG1fcGFzc3Rocm91Z2hfZGVsaXZlcl9yZXF1ZXN0KFRQTUJhY2tlbmQgKnRiKQotIHsKLSAgICAgVFBNUGFzc3RocnVTdGF0ZSAqdHBtX3B0ID0gVFBNX1BBU1NUSFJPVUdIKHRiKTsKLSAKLS0gICAgLyogVFBNIGNvbnNpZGVyZWQgYnVzeSBvbmNlIFRQTSBSZXF1ZXN0IHNjaGVkdWxlZCBmb3IgcHJvY2Vzc2luZyAqLwotKyAgICAvKiBUUE0gY29uc2lkZXJlZCBidXN5IG9uY2UgVFBNIHJlcXVlc3Qgc2NoZWR1bGVkIGZvciBwcm9jZXNzaW5nICovCi0gICAgIHFlbXVfbXV0ZXhfbG9jaygmdHBtX3B0LT5zdGF0ZV9sb2NrKTsKLSAgICAgdHBtX3B0LT50cG1fYnVzeSA9IHRydWU7Ci0gICAgIHFlbXVfbXV0ZXhfdW5sb2NrKCZ0cG1fcHQtPnN0YXRlX2xvY2spOwotQEAgLTYwMSw2ICs2NDAsMjUgQEAgc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfb3Blbl9zeXNmc19jYW5jZWwoVFBNQmFja2VuZCAqdGIpCi0gICAgIHJldHVybiBmZDsKLSB9Ci0gCi0rc3RhdGljIHZvaWQgdHBtX3Bhc3N0aHJvdWdoX2Jsb2NrX21pZ3JhdGlvbihUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQpCi0rewotKyAgICBwdG1fY2FwIGNhcHM7Ci0rCi0rICAgIGlmIChUUE1fUEFTU1RIUk9VR0hfVVNFU19DVVNFX1RQTSh0cG1fcHQpKSB7Ci0rICAgICAgICBjYXBzID0gUFRNX0NBUF9HRVRfU1RBVEVCTE9CIHwgUFRNX0NBUF9TRVRfU1RBVEVCTE9CIHwKLSsgICAgICAgICAgICAgICBQVE1fQ0FQX1NUT1A7Ci0rICAgICAgICBpZiAoIVRQTV9DVVNFX0lNUExFTUVOVFNfQUxMKHRwbV9wdCwgY2FwcykpIHsKLSsgICAgICAgICAgICBlcnJvcl9zZXRnKCZ0cG1fcHQtPm1pZ3JhdGlvbl9ibG9ja2VyLAotKyAgICAgICAgICAgICAgICAgICAgICAgIk1pZ3JhdGlvbiBkaXNhYmxlZDogQ1VTRSBUUE0gbGFja3MgbmVjZXNzYXJ5IGNhcGFiaWxpdGllcyIpOwotKyAgICAgICAgICAgIG1pZ3JhdGVfYWRkX2Jsb2NrZXIodHBtX3B0LT5taWdyYXRpb25fYmxvY2tlcik7Ci0rICAgICAgICB9Ci0rICAgIH0gZWxzZSB7Ci0rICAgICAgICBlcnJvcl9zZXRnKCZ0cG1fcHQtPm1pZ3JhdGlvbl9ibG9ja2VyLAotKyAgICAgICAgICAgICAgICAgICAiTWlncmF0aW9uIGRpc2FibGVkOiBQYXNzdGhyb3VnaCBUUE0gZG9lcyBub3Qgc3VwcG9ydCBtaWdyYXRpb24iKTsKLSsgICAgICAgIG1pZ3JhdGVfYWRkX2Jsb2NrZXIodHBtX3B0LT5taWdyYXRpb25fYmxvY2tlcik7Ci0rICAgIH0KLSt9Ci0rCi0gc3RhdGljIGludCB0cG1fcGFzc3Rocm91Z2hfaGFuZGxlX2RldmljZV9vcHRzKFFlbXVPcHRzICpvcHRzLCBUUE1CYWNrZW5kICp0YikKLSB7Ci0gICAgIFRQTVBhc3N0aHJ1U3RhdGUgKnRwbV9wdCA9IFRQTV9QQVNTVEhST1VHSCh0Yik7Ci1AQCAtNjQyLDcgKzcwMCw3IEBAIHN0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX2hhbmRsZV9kZXZpY2Vfb3B0cyhRZW11T3B0cyAqb3B0cywgVFBNQmFja2VuZCAqdGIpCi0gICAgICAgICAgICAgZ290byBlcnJfY2xvc2VfdHBtZGV2OwotICAgICAgICAgfQotICAgICAgICAgLyogaW5pdCBUUE0gZm9yIHByb2JpbmcgKi8KLS0gICAgICAgIGlmICh0cG1fcGFzc3Rocm91Z2hfY3VzZV9pbml0KHRwbV9wdCkpIHsKLSsgICAgICAgIGlmICh0cG1fcGFzc3Rocm91Z2hfY3VzZV9pbml0KHRwbV9wdCwgZmFsc2UpKSB7Ci0gICAgICAgICAgICAgZ290byBlcnJfY2xvc2VfdHBtZGV2OwotICAgICAgICAgfQotICAgICB9Ci1AQCAtNjU5LDYgKzcxNyw3IEBAIHN0YXRpYyBpbnQgdHBtX3Bhc3N0aHJvdWdoX2hhbmRsZV9kZXZpY2Vfb3B0cyhRZW11T3B0cyAqb3B0cywgVFBNQmFja2VuZCAqdGIpCi0gICAgICAgICB9Ci0gICAgIH0KLSAKLSsgICAgdHBtX3Bhc3N0aHJvdWdoX2Jsb2NrX21pZ3JhdGlvbih0cG1fcHQpOwotIAotICAgICByZXR1cm4gMDsKLSAKLUBAIC03NjYsMTAgKzgyNSwxMyBAQCBzdGF0aWMgdm9pZCB0cG1fcGFzc3Rocm91Z2hfaW5zdF9pbml0KE9iamVjdCAqb2JqKQotIAotICAgICBxZW11X211dGV4X2luaXQoJnRwbV9wdC0+c3RhdGVfbG9jayk7Ci0gICAgIHFlbXVfY29uZF9pbml0KCZ0cG1fcHQtPmNtZF9jb21wbGV0ZSk7Ci0rCi0rICAgIHZtc3RhdGVfcmVnaXN0ZXIoTlVMTCwgLTEsICZ2bXN0YXRlX3RwbV9jdXNlLCBvYmopOwotIH0KLSAKLSBzdGF0aWMgdm9pZCB0cG1fcGFzc3Rocm91Z2hfaW5zdF9maW5hbGl6ZShPYmplY3QgKm9iaikKLSB7Ci0rICAgIHZtc3RhdGVfdW5yZWdpc3RlcihOVUxMLCAmdm1zdGF0ZV90cG1fY3VzZSwgb2JqKTsKLSB9Ci0gCi0gc3RhdGljIHZvaWQgdHBtX3Bhc3N0aHJvdWdoX2NsYXNzX2luaXQoT2JqZWN0Q2xhc3MgKmtsYXNzLCB2b2lkICpkYXRhKQotQEAgLTgwMiw2ICs4NjQsNjAgQEAgc3RhdGljIGNvbnN0IGNoYXIgKnRwbV9wYXNzdGhyb3VnaF9jdXNlX2NyZWF0ZV9kZXNjKHZvaWQpCi0gICAgIHJldHVybiAiQ1VTRSBUUE0gYmFja2VuZCBkcml2ZXIiOwotIH0KLSAKLStzdGF0aWMgdm9pZCB0cG1fY3VzZV9wcmVfc2F2ZSh2b2lkICpvcGFxdWUpCi0rewotKyAgICBUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQgPSBvcGFxdWU7Ci0rICAgIFRQTUJhY2tlbmQgKnRiID0gJnRwbV9wdC0+cGFyZW50OwotKwotKyAgICAgcWVtdV9tdXRleF9sb2NrKCZ0cG1fcHQtPnN0YXRlX2xvY2spOwotKyAgICAgLyogd2FpdCBmb3IgVFBNIHRvIGZpbmlzaCBwcm9jZXNzaW5nICovCi0rICAgICBpZiAodHBtX3B0LT50cG1fYnVzeSkgewotKyAgICAgICAgcWVtdV9jb25kX3dhaXQoJnRwbV9wdC0+Y21kX2NvbXBsZXRlLCAmdHBtX3B0LT5zdGF0ZV9sb2NrKTsKLSsgICAgIH0KLSsgICAgIHFlbXVfbXV0ZXhfdW5sb2NrKCZ0cG1fcHQtPnN0YXRlX2xvY2spOwotKwotKyAgICAvKiBnZXQgdGhlIGRlY3J5cHRlZCBzdGF0ZSBibG9icyBmcm9tIHRoZSBUUE0gKi8KLSsgICAgdHBtX2N1c2VfZ2V0X3N0YXRlX2Jsb2JzKHRiLCBUUlVFLCAmdHBtX3B0LT50cG1fYmxvYnMpOwotK30KLSsKLStzdGF0aWMgaW50IHRwbV9jdXNlX3Bvc3RfbG9hZCh2b2lkICpvcGFxdWUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZlcnNpb25faWQgX19hdHRyaWJ1dGVfXygodW51c2VkKSkpCi0rewotKyAgICBUUE1QYXNzdGhydVN0YXRlICp0cG1fcHQgPSBvcGFxdWU7Ci0rICAgIFRQTUJhY2tlbmQgKnRiID0gJnRwbV9wdC0+cGFyZW50OwotKwotKyAgICByZXR1cm4gdHBtX2N1c2Vfc2V0X3N0YXRlX2Jsb2JzKHRiLCAmdHBtX3B0LT50cG1fYmxvYnMpOwotK30KLSsKLStzdGF0aWMgY29uc3QgVk1TdGF0ZURlc2NyaXB0aW9uIHZtc3RhdGVfdHBtX2N1c2UgPSB7Ci0rICAgIC5uYW1lID0gImN1c2UtdHBtIiwKLSsgICAgLnZlcnNpb25faWQgPSAxLAotKyAgICAubWluaW11bV92ZXJzaW9uX2lkID0gMCwKLSsgICAgLm1pbmltdW1fdmVyc2lvbl9pZF9vbGQgPSAwLAotKyAgICAucHJlX3NhdmUgID0gdHBtX2N1c2VfcHJlX3NhdmUsCi0rICAgIC5wb3N0X2xvYWQgPSB0cG1fY3VzZV9wb3N0X2xvYWQsCi0rICAgIC5maWVsZHMgPSAoVk1TdGF0ZUZpZWxkW10pIHsKLSsgICAgICAgIFZNU1RBVEVfVUlOVDMyKHRwbV9ibG9icy5wZXJtYW5lbnRfZmxhZ3MsIFRQTVBhc3N0aHJ1U3RhdGUpLAotKyAgICAgICAgVk1TVEFURV9VSU5UMzIodHBtX2Jsb2JzLnBlcm1hbmVudC5zaXplLCBUUE1QYXNzdGhydVN0YXRlKSwKLSsgICAgICAgIFZNU1RBVEVfVkJVRkZFUl9BTExPQ19VSU5UMzIodHBtX2Jsb2JzLnBlcm1hbmVudC5idWZmZXIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTVBhc3N0aHJ1U3RhdGUsIDEsIE5VTEwsIDAsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwbV9ibG9icy5wZXJtYW5lbnQuc2l6ZSksCi0rCi0rICAgICAgICBWTVNUQVRFX1VJTlQzMih0cG1fYmxvYnMudm9sYXRpbF9mbGFncywgVFBNUGFzc3RocnVTdGF0ZSksCi0rICAgICAgICBWTVNUQVRFX1VJTlQzMih0cG1fYmxvYnMudm9sYXRpbC5zaXplLCBUUE1QYXNzdGhydVN0YXRlKSwKLSsgICAgICAgIFZNU1RBVEVfVkJVRkZFUl9BTExPQ19VSU5UMzIodHBtX2Jsb2JzLnZvbGF0aWwuYnVmZmVyLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUE1QYXNzdGhydVN0YXRlLCAxLCBOVUxMLCAwLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cG1fYmxvYnMudm9sYXRpbC5zaXplKSwKLSsKLSsgICAgICAgIFZNU1RBVEVfVUlOVDMyKHRwbV9ibG9icy5zYXZlc3RhdGVfZmxhZ3MsIFRQTVBhc3N0aHJ1U3RhdGUpLAotKyAgICAgICAgVk1TVEFURV9VSU5UMzIodHBtX2Jsb2JzLnNhdmVzdGF0ZS5zaXplLCBUUE1QYXNzdGhydVN0YXRlKSwKLSsgICAgICAgIFZNU1RBVEVfVkJVRkZFUl9BTExPQ19VSU5UMzIodHBtX2Jsb2JzLnNhdmVzdGF0ZS5idWZmZXIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTVBhc3N0aHJ1U3RhdGUsIDEsIE5VTEwsIDAsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwbV9ibG9icy5zYXZlc3RhdGUuc2l6ZSksCi0rICAgICAgICBWTVNUQVRFX0VORF9PRl9MSVNUKCkKLSsgICAgfQotK307Ci0rCi0gc3RhdGljIGNvbnN0IFRQTURyaXZlck9wcyB0cG1fY3VzZV9kcml2ZXIgPSB7Ci0gICAgIC50eXBlICAgICAgICAgICAgICAgICAgICAgPSBUUE1fVFlQRV9DVVNFX1RQTSwKLSAgICAgLm9wdHMgICAgICAgICAgICAgICAgICAgICA9IHRwbV9wYXNzdGhyb3VnaF9jbWRsaW5lX29wdHMsCi1kaWZmIC0tZ2l0IGEvaHcvdHBtL3RwbV90aXMuYyBiL2h3L3RwbS90cG1fdGlzLmMKLWluZGV4IDE0ZDllODNlYTIuLjliNjYwY2Y3MzcgMTAwNjQ0Ci0tLS0gYS9ody90cG0vdHBtX3Rpcy5jCi0rKysgYi9ody90cG0vdHBtX3Rpcy5jCi1AQCAtMzY4LDYgKzM2OCw4IEBAIHN0YXRpYyB2b2lkIHRwbV90aXNfcmVjZWl2ZV9iaCh2b2lkICpvcGFxdWUpCi0gICAgIFRQTVRJU0VtdVN0YXRlICp0aXMgPSAmcy0+cy50aXM7Ci0gICAgIHVpbnQ4X3QgbG9jdHkgPSBzLT5sb2N0eV9udW1iZXI7Ci0gCi0rICAgIHRpcy0+Ymhfc2NoZWR1bGVkID0gZmFsc2U7Ci0rCi0gICAgIHFlbXVfbXV0ZXhfbG9jaygmcy0+c3RhdGVfbG9jayk7Ci0gCi0gICAgIHRwbV90aXNfc3RzX3NldCgmdGlzLT5sb2NbbG9jdHldLAotQEAgLTQxNSw2ICs0MTcsOCBAQCBzdGF0aWMgdm9pZCB0cG1fdGlzX3JlY2VpdmVfY2IoVFBNU3RhdGUgKnMsIHVpbnQ4X3QgbG9jdHksCi0gICAgIHFlbXVfbXV0ZXhfdW5sb2NrKCZzLT5zdGF0ZV9sb2NrKTsKLSAKLSAgICAgcWVtdV9iaF9zY2hlZHVsZSh0aXMtPmJoKTsKLSsKLSsgICAgdGlzLT5iaF9zY2hlZHVsZWQgPSB0cnVlOwotIH0KLSAKLSAvKgotQEAgLTEwMzAsOSArMTAzNCwxNDAgQEAgc3RhdGljIHZvaWQgdHBtX3Rpc19yZXNldChEZXZpY2VTdGF0ZSAqZGV2KQotICAgICB0cG1fdGlzX2RvX3N0YXJ0dXBfdHBtKHMpOwotIH0KLSAKLSsKLSsvKiBwZXJzaXN0ZW50IHN0YXRlIGhhbmRsaW5nICovCi0rCi0rc3RhdGljIHZvaWQgdHBtX3Rpc19wcmVfc2F2ZSh2b2lkICpvcGFxdWUpCi0rewotKyAgICBUUE1TdGF0ZSAqcyA9IG9wYXF1ZTsKLSsgICAgVFBNVElTRW11U3RhdGUgKnRpcyA9ICZzLT5zLnRpczsKLSsgICAgdWludDhfdCBsb2N0eSA9IHRpcy0+YWN0aXZlX2xvY3R5OwotKwotKyAgICBEUFJJTlRGKCJ0cG1fdGlzOiBzdXNwZW5kOiBsb2N0eSA9ICVkIDogcl9vZmZzZXQgPSAlZCwgd19vZmZzZXQgPSAlZFxuIiwKLSsgICAgICAgICAgICBsb2N0eSwgdGlzLT5sb2NbMF0ucl9vZmZzZXQsIHRpcy0+bG9jWzBdLndfb2Zmc2V0KTsKLSsjaWZkZWYgREVCVUdfVElTCi0rICAgIHRwbV90aXNfZHVtcF9zdGF0ZShvcGFxdWUsIDApOwotKyNlbmRpZgotKwotKyAgICBxZW11X211dGV4X2xvY2soJnMtPnN0YXRlX2xvY2spOwotKwotKyAgICAvKiB3YWl0IGZvciBvdXRzdGFuZGluZyByZXF1ZXN0IHRvIGNvbXBsZXRlICovCi0rICAgIGlmIChUUE1fVElTX0lTX1ZBTElEX0xPQ1RZKGxvY3R5KSAmJgotKyAgICAgICAgdGlzLT5sb2NbbG9jdHldLnN0YXRlID09IFRQTV9USVNfU1RBVEVfRVhFQ1VUSU9OKSB7Ci0rICAgICAgICAvKgotKyAgICAgICAgICogSWYgd2UgZ2V0IGhlcmUgd2hlbiB0aGUgYmggaXMgc2NoZWR1bGVkIGJ1dCBkaWQgbm90IHJ1biwKLSsgICAgICAgICAqIHdlIHdvbid0IGdldCBub3RpZmllZC4uLgotKyAgICAgICAgICovCi0rICAgICAgICBpZiAoIXRpcy0+Ymhfc2NoZWR1bGVkKSB7Ci0rICAgICAgICAgICAgLyogYmFja2VuZCB0aHJlYWQgdG8gbm90aWZ5IHVzICovCi0rICAgICAgICAgICAgcWVtdV9jb25kX3dhaXQoJnMtPmNtZF9jb21wbGV0ZSwgJnMtPnN0YXRlX2xvY2spOwotKyAgICAgICAgfQotKyAgICAgICAgaWYgKHRpcy0+bG9jW2xvY3R5XS5zdGF0ZSA9PSBUUE1fVElTX1NUQVRFX0VYRUNVVElPTikgewotKyAgICAgICAgICAgIC8qIGJvdHRvbSBoYWxmIGRpZCBub3QgcnVuIC0gcnVuIGl0cyBmdW5jdGlvbiAqLwotKyAgICAgICAgICAgIHFlbXVfbXV0ZXhfdW5sb2NrKCZzLT5zdGF0ZV9sb2NrKTsKLSsgICAgICAgICAgICB0cG1fdGlzX3JlY2VpdmVfYmgob3BhcXVlKTsKLSsgICAgICAgICAgICBxZW11X211dGV4X2xvY2soJnMtPnN0YXRlX2xvY2spOwotKyAgICAgICAgfQotKyAgICB9Ci0rCi0rICAgIHFlbXVfbXV0ZXhfdW5sb2NrKCZzLT5zdGF0ZV9sb2NrKTsKLSsKLSsgICAgLyogY29weSBjdXJyZW50IGFjdGl2ZSByZWFkIG9yIHdyaXRlIGJ1ZmZlciBpbnRvIHRoZSBidWZmZXIKLSsgICAgICAgd3JpdHRlbiB0byBkaXNrICovCi0rICAgIGlmIChUUE1fVElTX0lTX1ZBTElEX0xPQ1RZKGxvY3R5KSkgewotKyAgICAgICAgc3dpdGNoICh0aXMtPmxvY1tsb2N0eV0uc3RhdGUpIHsKLSsgICAgICAgIGNhc2UgVFBNX1RJU19TVEFURV9SRUNFUFRJT046Ci0rICAgICAgICAgICAgbWVtY3B5KHRpcy0+YnVmLAotKyAgICAgICAgICAgICAgICAgICB0aXMtPmxvY1tsb2N0eV0ud19idWZmZXIuYnVmZmVyLAotKyAgICAgICAgICAgICAgICAgICBNSU4oc2l6ZW9mKHRpcy0+YnVmKSwKLSsgICAgICAgICAgICAgICAgICAgICAgIHRpcy0+bG9jW2xvY3R5XS53X2J1ZmZlci5zaXplKSk7Ci0rICAgICAgICAgICAgdGlzLT5vZmZzZXQgPSB0aXMtPmxvY1tsb2N0eV0ud19vZmZzZXQ7Ci0rICAgICAgICBicmVhazsKLSsgICAgICAgIGNhc2UgVFBNX1RJU19TVEFURV9DT01QTEVUSU9OOgotKyAgICAgICAgICAgIG1lbWNweSh0aXMtPmJ1ZiwKLSsgICAgICAgICAgICAgICAgICAgdGlzLT5sb2NbbG9jdHldLnJfYnVmZmVyLmJ1ZmZlciwKLSsgICAgICAgICAgICAgICAgICAgTUlOKHNpemVvZih0aXMtPmJ1ZiksCi0rICAgICAgICAgICAgICAgICAgICAgICB0aXMtPmxvY1tsb2N0eV0ucl9idWZmZXIuc2l6ZSkpOwotKyAgICAgICAgICAgIHRpcy0+b2Zmc2V0ID0gdGlzLT5sb2NbbG9jdHldLnJfb2Zmc2V0OwotKyAgICAgICAgYnJlYWs7Ci0rICAgICAgICBkZWZhdWx0OgotKyAgICAgICAgICAgIC8qIGxlYWsgbm90aGluZyAqLwotKyAgICAgICAgICAgIG1lbXNldCh0aXMtPmJ1ZiwgMHgwLCBzaXplb2YodGlzLT5idWYpKTsKLSsgICAgICAgIGJyZWFrOwotKyAgICAgICAgfQotKyAgICB9Ci0rfQotKwotK3N0YXRpYyBpbnQgdHBtX3Rpc19wb3N0X2xvYWQodm9pZCAqb3BhcXVlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZlcnNpb25faWQgX19hdHRyaWJ1dGVfXygodW51c2VkKSkpCi0rewotKyAgICBUUE1TdGF0ZSAqcyA9IG9wYXF1ZTsKLSsgICAgVFBNVElTRW11U3RhdGUgKnRpcyA9ICZzLT5zLnRpczsKLSsKLSsgICAgdWludDhfdCBsb2N0eSA9IHRpcy0+YWN0aXZlX2xvY3R5OwotKwotKyAgICBpZiAoVFBNX1RJU19JU19WQUxJRF9MT0NUWShsb2N0eSkpIHsKLSsgICAgICAgIHN3aXRjaCAodGlzLT5sb2NbbG9jdHldLnN0YXRlKSB7Ci0rICAgICAgICBjYXNlIFRQTV9USVNfU1RBVEVfUkVDRVBUSU9OOgotKyAgICAgICAgICAgIG1lbWNweSh0aXMtPmxvY1tsb2N0eV0ud19idWZmZXIuYnVmZmVyLAotKyAgICAgICAgICAgICAgICAgICB0aXMtPmJ1ZiwKLSsgICAgICAgICAgICAgICAgICAgTUlOKHNpemVvZih0aXMtPmJ1ZiksCi0rICAgICAgICAgICAgICAgICAgICAgICB0aXMtPmxvY1tsb2N0eV0ud19idWZmZXIuc2l6ZSkpOwotKyAgICAgICAgICAgIHRpcy0+bG9jW2xvY3R5XS53X29mZnNldCA9IHRpcy0+b2Zmc2V0OwotKyAgICAgICAgYnJlYWs7Ci0rICAgICAgICBjYXNlIFRQTV9USVNfU1RBVEVfQ09NUExFVElPTjoKLSsgICAgICAgICAgICBtZW1jcHkodGlzLT5sb2NbbG9jdHldLnJfYnVmZmVyLmJ1ZmZlciwKLSsgICAgICAgICAgICAgICAgICAgdGlzLT5idWYsCi0rICAgICAgICAgICAgICAgICAgIE1JTihzaXplb2YodGlzLT5idWYpLAotKyAgICAgICAgICAgICAgICAgICAgICAgdGlzLT5sb2NbbG9jdHldLnJfYnVmZmVyLnNpemUpKTsKLSsgICAgICAgICAgICB0aXMtPmxvY1tsb2N0eV0ucl9vZmZzZXQgPSB0aXMtPm9mZnNldDsKLSsgICAgICAgIGJyZWFrOwotKyAgICAgICAgZGVmYXVsdDoKLSsgICAgICAgIGJyZWFrOwotKyAgICAgICAgfQotKyAgICB9Ci0rCi0rICAgIERQUklOVEYoInRwbV90aXM6IHJlc3VtZSA6IGxvY3R5ID0gJWQgOiByX29mZnNldCA9ICVkLCB3X29mZnNldCA9ICVkXG4iLAotKyAgICAgICAgICAgIGxvY3R5LCB0aXMtPmxvY1swXS5yX29mZnNldCwgdGlzLT5sb2NbMF0ud19vZmZzZXQpOwotKwotKyAgICByZXR1cm4gMDsKLSt9Ci0rCi0rc3RhdGljIGNvbnN0IFZNU3RhdGVEZXNjcmlwdGlvbiB2bXN0YXRlX2xvY3R5ID0gewotKyAgICAubmFtZSA9ICJsb2MiLAotKyAgICAudmVyc2lvbl9pZCA9IDEsCi0rICAgIC5taW5pbXVtX3ZlcnNpb25faWQgPSAwLAotKyAgICAubWluaW11bV92ZXJzaW9uX2lkX29sZCA9IDAsCi0rICAgIC5maWVsZHMgICAgICA9IChWTVN0YXRlRmllbGRbXSkgewotKyAgICAgICAgVk1TVEFURV9VSU5UMzIoc3RhdGUsIFRQTUxvY2FsaXR5KSwKLSsgICAgICAgIFZNU1RBVEVfVUlOVDMyKGludGUsIFRQTUxvY2FsaXR5KSwKLSsgICAgICAgIFZNU1RBVEVfVUlOVDMyKGludHMsIFRQTUxvY2FsaXR5KSwKLSsgICAgICAgIFZNU1RBVEVfVUlOVDgoYWNjZXNzLCBUUE1Mb2NhbGl0eSksCi0rICAgICAgICBWTVNUQVRFX1VJTlQzMihzdHMsIFRQTUxvY2FsaXR5KSwKLSsgICAgICAgIFZNU1RBVEVfVUlOVDMyKGlmYWNlX2lkLCBUUE1Mb2NhbGl0eSksCi0rICAgICAgICBWTVNUQVRFX0VORF9PRl9MSVNUKCksCi0rICAgIH0KLSt9OwotKwotIHN0YXRpYyBjb25zdCBWTVN0YXRlRGVzY3JpcHRpb24gdm1zdGF0ZV90cG1fdGlzID0gewotICAgICAubmFtZSA9ICJ0cG0iLAotLSAgICAudW5taWdyYXRhYmxlID0gMSwKLSsgICAgLnZlcnNpb25faWQgPSAxLAotKyAgICAubWluaW11bV92ZXJzaW9uX2lkID0gMCwKLSsgICAgLm1pbmltdW1fdmVyc2lvbl9pZF9vbGQgPSAwLAotKyAgICAucHJlX3NhdmUgID0gdHBtX3Rpc19wcmVfc2F2ZSwKLSsgICAgLnBvc3RfbG9hZCA9IHRwbV90aXNfcG9zdF9sb2FkLAotKyAgICAuZmllbGRzID0gKFZNU3RhdGVGaWVsZFtdKSB7Ci0rICAgICAgICBWTVNUQVRFX1VJTlQzMihzLnRpcy5vZmZzZXQsIFRQTVN0YXRlKSwKLSsgICAgICAgIFZNU1RBVEVfQlVGRkVSKHMudGlzLmJ1ZiwgVFBNU3RhdGUpLAotKyAgICAgICAgVk1TVEFURV9VSU5UOChzLnRpcy5hY3RpdmVfbG9jdHksIFRQTVN0YXRlKSwKLSsgICAgICAgIFZNU1RBVEVfVUlOVDgocy50aXMuYWJvcnRpbmdfbG9jdHksIFRQTVN0YXRlKSwKLSsgICAgICAgIFZNU1RBVEVfVUlOVDgocy50aXMubmV4dF9sb2N0eSwgVFBNU3RhdGUpLAotKwotKyAgICAgICAgVk1TVEFURV9TVFJVQ1RfQVJSQVkocy50aXMubG9jLCBUUE1TdGF0ZSwgVFBNX1RJU19OVU1fTE9DQUxJVElFUywgMSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZtc3RhdGVfbG9jdHksIFRQTUxvY2FsaXR5KSwKLSsKLSsgICAgICAgIFZNU1RBVEVfRU5EX09GX0xJU1QoKQotKyAgICB9Ci0gfTsKLSAKLSBzdGF0aWMgUHJvcGVydHkgdHBtX3Rpc19wcm9wZXJ0aWVzW10gPSB7Ci1kaWZmIC0tZ2l0IGEvaHcvdHBtL3RwbV90aXMuaCBiL2h3L3RwbS90cG1fdGlzLmgKLWluZGV4IGExZGY0MWZhMjEuLmI3ZmMwZWExYTkgMTAwNjQ0Ci0tLS0gYS9ody90cG0vdHBtX3Rpcy5oCi0rKysgYi9ody90cG0vdHBtX3Rpcy5oCi1AQCAtNTQsNiArNTQsOCBAQCB0eXBlZGVmIHN0cnVjdCBUUE1Mb2NhbGl0eSB7Ci0gCi0gdHlwZWRlZiBzdHJ1Y3QgVFBNVElTRW11U3RhdGUgewotICAgICBRRU1VQkggKmJoOwotKyAgICBib29sIGJoX3NjaGVkdWxlZDsgLyogYmggc2NoZWR1bGVkIGJ1dCBkaWQgbm90IHJ1biB5ZXQgKi8KLSsKLSAgICAgdWludDMyX3Qgb2Zmc2V0OwotICAgICB1aW50OF90IGJ1ZltUUE1fVElTX0JVRkZFUl9NQVhdOwotIAotZGlmZiAtLWdpdCBhL2h3L3RwbS90cG1fdXRpbC5jIGIvaHcvdHBtL3RwbV91dGlsLmMKLWluZGV4IDdiMzU0Mjk3MjUuLmI2ZmY3NGQ5NDYgMTAwNjQ0Ci0tLS0gYS9ody90cG0vdHBtX3V0aWwuYwotKysrIGIvaHcvdHBtL3RwbV91dGlsLmMKLUBAIC0yMiw2ICsyMiwxNyBAQAotICNpbmNsdWRlICJxZW11L29zZGVwLmgiCi0gI2luY2x1ZGUgInRwbV91dGlsLmgiCi0gI2luY2x1ZGUgInRwbV9pbnQuaCIKLSsjaW5jbHVkZSAidHBtX2lvY3RsLmgiCi0rI2luY2x1ZGUgInFlbXUvZXJyb3ItcmVwb3J0LmgiCi0rCi0rI2RlZmluZSBERUJVR19UUE0gMAotKwotKyNkZWZpbmUgRFBSSU5URihmbXQsIC4uLikgZG8geyBcCi0rICAgIGlmIChERUJVR19UUE0pIHsgXAotKyAgICAgICAgZnByaW50ZihzdGRlcnIsIGZtdCwgIyMgX19WQV9BUkdTX18pOyBcCi0rICAgIH0gXAotK30gd2hpbGUgKDApCi0rCi0gCi0gLyoKLSAgKiBBIGJhc2ljIHRlc3Qgb2YgYSBUUE0gZGV2aWNlLiBXZSBleHBlY3QgYSB3ZWxsIGZvcm1hdHRlZCByZXNwb25zZSBoZWFkZXIKLUBAIC0xMjUsMyArMTM2LDIxNSBAQCBpbnQgdHBtX3V0aWxfdGVzdF90cG1kZXYoaW50IHRwbV9mZCwgVFBNVmVyc2lvbiAqdHBtX3ZlcnNpb24pCi0gCi0gICAgIHJldHVybiAxOwotIH0KLSsKLStzdGF0aWMgdm9pZCB0cG1fc2l6ZWRfYnVmZmVyX3Jlc2V0KFRQTVNpemVkQnVmZmVyICp0c2IpCi0rewotKyAgICBnX2ZyZWUodHNiLT5idWZmZXIpOwotKyAgICB0c2ItPmJ1ZmZlciA9IE5VTEw7Ci0rICAgIHRzYi0+c2l6ZSA9IDA7Ci0rfQotKwotKy8qCi0rICogVHJhbnNmZXIgYSBUUE0gc3RhdGUgYmxvYiBmcm9tIHRoZSBUUE0gaW50byBhIHByb3ZpZGVkIGJ1ZmZlci4KLSsgKgotKyAqIEBmZDogZmlsZSBkZXNjcmlwdG9yIHRvIHRhbGsgdG8gdGhlIENVU0UgVFBNCi0rICogQHR5cGU6IHRoZSB0eXBlIG9mIGJsb2IgdG8gdHJhbnNmZXIKLSsgKiBAZGVjcnlwdGVkX2Jsb2I6IHdoZXRoZXIgd2UgcmVxdWVzdCB0byByZWNlaXZlIGRlY3J5cHRlZCBibG9icwotKyAqIEB0c2I6IHRoZSBUUE1TaXplQnVmZmVyIHRvIGZpbGwgd2l0aCB0aGUgYmxvYgotKyAqIEBmbGFnczogdGhlIGZsYWdzIHRvIHJldHVybiB0byB0aGUgY2FsbGVyCi0rICovCi0rc3RhdGljIGludCB0cG1fdXRpbF9jdXNlX2dldF9zdGF0ZV9ibG9iKGludCBmZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCB0eXBlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRlY3J5cHRlZF9ibG9iLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUE1TaXplZEJ1ZmZlciAqdHNiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqZmxhZ3MpCi0rewotKyAgICBwdG1fZ2V0c3RhdGUgcGdzOwotKyAgICB1aW50MTZfdCBvZmZzZXQgPSAwOwotKyAgICBwdG1fcmVzIHJlczsKLSsgICAgc3NpemVfdCBuOwotKyAgICBzaXplX3QgdG9fcmVhZDsKLSsKLSsgICAgdHBtX3NpemVkX2J1ZmZlcl9yZXNldCh0c2IpOwotKwotKyAgICBwZ3MudS5yZXEuc3RhdGVfZmxhZ3MgPSAoZGVjcnlwdGVkX2Jsb2IpID8gUFRNX1NUQVRFX0ZMQUdfREVDUllQVEVEIDogMDsKLSsgICAgcGdzLnUucmVxLnR5cGUgPSB0eXBlOwotKyAgICBwZ3MudS5yZXEub2Zmc2V0ID0gb2Zmc2V0OwotKwotKyAgICBpZiAoaW9jdGwoZmQsIFBUTV9HRVRfU1RBVEVCTE9CLCAmcGdzKSA8IDApIHsKLSsgICAgICAgIGVycm9yX3JlcG9ydCgiQ1VTRSBUUE0gUFRNX0dFVF9TVEFURUJMT0IgaW9jdGwgZmFpbGVkOiAlcyIsCi0rICAgICAgICAgICAgICAgICAgICAgc3RyZXJyb3IoZXJybm8pKTsKLSsgICAgICAgIGdvdG8gZXJyX2V4aXQ7Ci0rICAgIH0KLSsgICAgcmVzID0gcGdzLnUucmVzcC50cG1fcmVzdWx0OwotKyAgICBpZiAocmVzICE9IDAgJiYgKHJlcyAmIDB4ODAwKSA9PSAwKSB7Ci0rICAgICAgICBlcnJvcl9yZXBvcnQoIkdldHRpbmcgdGhlIHN0YXRlYmxvYiAodHlwZSAlZCkgZmFpbGVkIHdpdGggYSBUUE0gIgotKyAgICAgICAgICAgICAgICAgICAgICJlcnJvciAweCV4IiwgdHlwZSwgcmVzKTsKLSsgICAgICAgIGdvdG8gZXJyX2V4aXQ7Ci0rICAgIH0KLSsKLSsgICAgKmZsYWdzID0gcGdzLnUucmVzcC5zdGF0ZV9mbGFnczsKLSsKLSsgICAgdHNiLT5idWZmZXIgPSBnX21hbGxvYyhwZ3MudS5yZXNwLnRvdGxlbmd0aCk7Ci0rICAgIG1lbWNweSh0c2ItPmJ1ZmZlciwgcGdzLnUucmVzcC5kYXRhLCBwZ3MudS5yZXNwLmxlbmd0aCk7Ci0rICAgIHRzYi0+c2l6ZSA9IHBncy51LnJlc3AubGVuZ3RoOwotKwotKyAgICAvKiBpZiB0aGVyZSBhcmUgYnl0ZXMgbGVmdCB0byBnZXQgdXNlIHJlYWQoKSBpbnRlcmZhY2UgKi8KLSsgICAgd2hpbGUgKHRzYi0+c2l6ZSA8IHBncy51LnJlc3AudG90bGVuZ3RoKSB7Ci0rICAgICAgICB0b19yZWFkID0gcGdzLnUucmVzcC50b3RsZW5ndGggLSB0c2ItPnNpemU7Ci0rICAgICAgICBpZiAodW5saWtlbHkodG9fcmVhZCA+IFNTSVpFX01BWCkpIHsKLSsgICAgICAgICAgICB0b19yZWFkID0gU1NJWkVfTUFYOwotKyAgICAgICAgfQotKwotKyAgICAgICAgbiA9IHJlYWQoZmQsICZ0c2ItPmJ1ZmZlclt0c2ItPnNpemVdLCB0b19yZWFkKTsKLSsgICAgICAgIGlmIChuICE9IHRvX3JlYWQpIHsKLSsgICAgICAgICAgICBlcnJvcl9yZXBvcnQoIkNvdWxkIG5vdCByZWFkIHN0YXRlYmxvYiAodHlwZSAlZCkgOiAlcyIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUsIHN0cmVycm9yKGVycm5vKSk7Ci0rICAgICAgICAgICAgZ290byBlcnJfZXhpdDsKLSsgICAgICAgIH0KLSsgICAgICAgIHRzYi0+c2l6ZSArPSB0b19yZWFkOwotKyAgICB9Ci0rCi0rICAgIERQUklOVEYoInRwbV91dGlsOiBnb3Qgc3RhdGUgYmxvYiB0eXBlICVkLCAlZCBieXRlcywgZmxhZ3MgMHglMDh4LCAiCi0rICAgICAgICAgICAgImRlY3J5cHRlZD0lZFxuIiwgdHlwZSwgdHNiLT5zaXplLCAqZmxhZ3MsIGRlY3J5cHRlZF9ibG9iKTsKLSsKLSsgICAgcmV0dXJuIDA7Ci0rCi0rZXJyX2V4aXQ6Ci0rICAgIHJldHVybiAxOwotK30KLSsKLStpbnQgdHBtX3V0aWxfY3VzZV9nZXRfc3RhdGVfYmxvYnMoaW50IHRwbV9mZCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkZWNyeXB0ZWRfYmxvYnMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTUJsb2JCdWZmZXJzICp0cG1fYmxvYnMpCi0rewotKyAgICBpZiAodHBtX3V0aWxfY3VzZV9nZXRfc3RhdGVfYmxvYih0cG1fZmQsIFBUTV9CTE9CX1RZUEVfUEVSTUFORU5ULAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNyeXB0ZWRfYmxvYnMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0cG1fYmxvYnMtPnBlcm1hbmVudCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRwbV9ibG9icy0+cGVybWFuZW50X2ZsYWdzKSB8fAotKyAgICAgICB0cG1fdXRpbF9jdXNlX2dldF9zdGF0ZV9ibG9iKHRwbV9mZCwgUFRNX0JMT0JfVFlQRV9WT0xBVElMRSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjcnlwdGVkX2Jsb2JzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHBtX2Jsb2JzLT52b2xhdGlsLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHBtX2Jsb2JzLT52b2xhdGlsX2ZsYWdzKSB8fAotKyAgICAgICB0cG1fdXRpbF9jdXNlX2dldF9zdGF0ZV9ibG9iKHRwbV9mZCwgUFRNX0JMT0JfVFlQRV9TQVZFU1RBVEUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY3J5cHRlZF9ibG9icywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRwbV9ibG9icy0+c2F2ZXN0YXRlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHBtX2Jsb2JzLT5zYXZlc3RhdGVfZmxhZ3MpKSB7Ci0rICAgICAgICBnb3RvIGVycl9leGl0OwotKyAgICB9Ci0rCi0rICAgIHJldHVybiAwOwotKwotKyBlcnJfZXhpdDoKLSsgICAgdHBtX3NpemVkX2J1ZmZlcl9yZXNldCgmdHBtX2Jsb2JzLT52b2xhdGlsKTsKLSsgICAgdHBtX3NpemVkX2J1ZmZlcl9yZXNldCgmdHBtX2Jsb2JzLT5wZXJtYW5lbnQpOwotKyAgICB0cG1fc2l6ZWRfYnVmZmVyX3Jlc2V0KCZ0cG1fYmxvYnMtPnNhdmVzdGF0ZSk7Ci0rCi0rICAgIHJldHVybiAxOwotK30KLSsKLStzdGF0aWMgaW50IHRwbV91dGlsX2N1c2VfZG9fc2V0X3N0YXRlYmxvYl9pb2N0bChpbnQgZmQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZmxhZ3MsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdHlwZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsZW5ndGgpCi0rewotKyAgICBwdG1fc2V0c3RhdGUgcHNzOwotKwotKyAgICBwc3MudS5yZXEuc3RhdGVfZmxhZ3MgPSBmbGFnczsKLSsgICAgcHNzLnUucmVxLnR5cGUgPSB0eXBlOwotKyAgICBwc3MudS5yZXEubGVuZ3RoID0gbGVuZ3RoOwotKwotKyAgICBpZiAoaW9jdGwoZmQsIFBUTV9TRVRfU1RBVEVCTE9CLCAmcHNzKSA8IDApIHsKLSsgICAgICAgIGVycm9yX3JlcG9ydCgiQ1VTRSBUUE0gUFRNX1NFVF9TVEFURUJMT0IgaW9jdGwgZmFpbGVkOiAlcyIsCi0rICAgICAgICAgICAgICAgICAgICAgc3RyZXJyb3IoZXJybm8pKTsKLSsgICAgICAgIHJldHVybiAxOwotKyAgICB9Ci0rCi0rICAgIGlmIChwc3MudS5yZXNwLnRwbV9yZXN1bHQgIT0gMCkgewotKyAgICAgICAgZXJyb3JfcmVwb3J0KCJTZXR0aW5nIHRoZSBzdGF0ZWJsb2IgKHR5cGUgJWQpIGZhaWxlZCB3aXRoIGEgVFBNICIKLSsgICAgICAgICAgICAgICAgICAgICAiZXJyb3IgMHgleCIsIHR5cGUsIHBzcy51LnJlc3AudHBtX3Jlc3VsdCk7Ci0rICAgICAgICByZXR1cm4gMTsKLSsgICAgfQotKwotKyAgICByZXR1cm4gMDsKLSt9Ci0rCi0rCi0rLyoKLSsgKiBUcmFuc2ZlciBhIFRQTSBzdGF0ZSBibG9iIHRvIHRoZSBDVVNFIFRQTS4KLSsgKgotKyAqIEBmZDogZmlsZSBkZXNjcmlwdG9yIHRvIHRhbGsgdG8gdGhlIENVU0UgVFBNCi0rICogQHR5cGU6IHRoZSB0eXBlIG9mIFRQTSBzdGF0ZSBibG9iIHRvIHRyYW5zZmVyCi0rICogQHRzYjogVFBNU2l6ZUJ1ZmZlciBjb250YWluaW5nIHRoZSBUUE0gc3RhdGUgYmxvYgotKyAqIEBmbGFnczogRmxhZ3MgZGVzY3JpYmluZyB0aGUgKGVuY3J5cHRpb24pIHN0YXRlIG9mIHRoZSBUUE0gc3RhdGUgYmxvYgotKyAqLwotK3N0YXRpYyBpbnQgdHBtX3V0aWxfY3VzZV9zZXRfc3RhdGVfYmxvYihpbnQgZmQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHR5cGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTVNpemVkQnVmZmVyICp0c2IsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZsYWdzKQotK3sKLSsgICAgdWludDMyX3Qgb2Zmc2V0ID0gMDsKLSsgICAgc3NpemVfdCBuOwotKyAgICBzaXplX3QgdG9fd3JpdGU7Ci0rCi0rICAgIC8qIGluaXRpYXRlIHRoZSB0cmFuc2ZlciB0byB0aGUgQ1VTRSBUUE0gKi8KLSsgICAgaWYgKHRwbV91dGlsX2N1c2VfZG9fc2V0X3N0YXRlYmxvYl9pb2N0bChmZCwgZmxhZ3MsIHR5cGUsIDApKSB7Ci0rICAgICAgICByZXR1cm4gMTsKLSsgICAgfQotKwotKyAgICAvKiB1c2UgdGhlIHdyaXRlKCkgaW50ZXJmYWNlIGZvciB0cmFuc2ZlcnJpbmcgdGhlIHN0YXRlIGJsb2IgKi8KLSsgICAgd2hpbGUgKG9mZnNldCA8IHRzYi0+c2l6ZSkgewotKyAgICAgICAgdG9fd3JpdGUgPSB0c2ItPnNpemUgLSBvZmZzZXQ7Ci0rICAgICAgICBpZiAodW5saWtlbHkodG9fd3JpdGUgPiBTU0laRV9NQVgpKSB7Ci0rICAgICAgICAgICAgdG9fd3JpdGUgPSBTU0laRV9NQVg7Ci0rICAgICAgICB9Ci0rCi0rICAgICAgICBuID0gd3JpdGUoZmQsICZ0c2ItPmJ1ZmZlcltvZmZzZXRdLCB0b193cml0ZSk7Ci0rICAgICAgICBpZiAobiAhPSB0b193cml0ZSkgewotKyAgICAgICAgICAgIGVycm9yX3JlcG9ydCgiV3JpdGluZyB0aGUgc3RhdGVibG9iICh0eXBlICVkKSBmYWlsZWQ6ICVzIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSwgc3RyZXJyb3IoZXJybm8pKTsKLSsgICAgICAgICAgICBnb3RvIGVycl9leGl0OwotKyAgICAgICAgfQotKyAgICAgICAgb2Zmc2V0ICs9IHRvX3dyaXRlOwotKyAgICB9Ci0rCi0rICAgIC8qIGluaWRpY2F0ZSB0aGF0IHRoZSB0cmFuc2ZlciBpcyBmaW5pc2hlZCAqLwotKyAgICBpZiAodHBtX3V0aWxfY3VzZV9kb19zZXRfc3RhdGVibG9iX2lvY3RsKGZkLCBmbGFncywgdHlwZSwgMCkpIHsKLSsgICAgICAgIGdvdG8gZXJyX2V4aXQ7Ci0rICAgIH0KLSsKLSsgICAgRFBSSU5URigidHBtX3V0aWw6IHNldCB0aGUgc3RhdGUgYmxvYiB0eXBlICVkLCAlZCBieXRlcywgZmxhZ3MgMHglMDh4XG4iLAotKyAgICAgICAgICAgIHR5cGUsIHRzYi0+c2l6ZSwgZmxhZ3MpOwotKwotKyAgICByZXR1cm4gMDsKLSsKLStlcnJfZXhpdDoKLSsgICAgcmV0dXJuIDE7Ci0rfQotKwotK2ludCB0cG1fdXRpbF9jdXNlX3NldF9zdGF0ZV9ibG9icyhpbnQgdHBtX2ZkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUE1CbG9iQnVmZmVycyAqdHBtX2Jsb2JzKQotK3sKLSsgICAgcHRtX3JlcyByZXM7Ci0rCi0rICAgIGlmIChpb2N0bCh0cG1fZmQsIFBUTV9TVE9QLCAmcmVzKSA8IDApIHsKLSsgICAgICAgIGVycm9yX3JlcG9ydCgidHBtX3Bhc3N0aHJvdWdoOiBDb3VsZCBub3Qgc3RvcCAiCi0rICAgICAgICAgICAgICAgICAgICAgInRoZSBDVVNFIFRQTTogJXMgKCVpKSIsCi0rICAgICAgICAgICAgICAgICAgICAgc3RyZXJyb3IoZXJybm8pLCBlcnJubyk7Ci0rICAgICAgICByZXR1cm4gMTsKLSsgICAgfQotKwotKyAgICBpZiAodHBtX3V0aWxfY3VzZV9zZXRfc3RhdGVfYmxvYih0cG1fZmQsIFBUTV9CTE9CX1RZUEVfUEVSTUFORU5ULAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHBtX2Jsb2JzLT5wZXJtYW5lbnQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwbV9ibG9icy0+cGVybWFuZW50X2ZsYWdzKSB8fAotKyAgICAgICAgdHBtX3V0aWxfY3VzZV9zZXRfc3RhdGVfYmxvYih0cG1fZmQsIFBUTV9CTE9CX1RZUEVfVk9MQVRJTEUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0cG1fYmxvYnMtPnZvbGF0aWwsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwbV9ibG9icy0+dm9sYXRpbF9mbGFncykgfHwKLSsgICAgICAgIHRwbV91dGlsX2N1c2Vfc2V0X3N0YXRlX2Jsb2IodHBtX2ZkLCBQVE1fQkxPQl9UWVBFX1NBVkVTVEFURSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRwbV9ibG9icy0+c2F2ZXN0YXRlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cG1fYmxvYnMtPnNhdmVzdGF0ZV9mbGFncykpIHsKLSsgICAgICAgIHJldHVybiAxOwotKyAgICB9Ci0rCi0rICAgIHJldHVybiAwOwotK30KLWRpZmYgLS1naXQgYS9ody90cG0vdHBtX3V0aWwuaCBiL2h3L3RwbS90cG1fdXRpbC5oCi1pbmRleCBkZjc2MjQ1ZTZlLi5jMjQwNzFkODEyIDEwMDY0NAotLS0tIGEvaHcvdHBtL3RwbV91dGlsLmgKLSsrKyBiL2h3L3RwbS90cG1fdXRpbC5oCi1AQCAtMjYsNCArMjYsMTEgQEAKLSAKLSBpbnQgdHBtX3V0aWxfdGVzdF90cG1kZXYoaW50IHRwbV9mZCwgVFBNVmVyc2lvbiAqdHBtX3ZlcnNpb24pOwotIAotK2ludCB0cG1fdXRpbF9jdXNlX2dldF9zdGF0ZV9ibG9icyhpbnQgdHBtX2ZkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRlY3J5cHRlZF9ibG9icywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFBNQmxvYkJ1ZmZlcnMgKnRwbV9ibG9icyk7Ci0rCi0raW50IHRwbV91dGlsX2N1c2Vfc2V0X3N0YXRlX2Jsb2JzKGludCB0cG1fZmQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQTUJsb2JCdWZmZXJzICp0cG1fYmxvYnMpOwotKwotICNlbmRpZiAvKiBUUE1fVFBNX1VUSUxfSCAqLwotZGlmZiAtLWdpdCBhL2luY2x1ZGUvc3lzZW11L3RwbV9iYWNrZW5kLmggYi9pbmNsdWRlL3N5c2VtdS90cG1fYmFja2VuZC5oCi1pbmRleCBiNThmNTJkMzlmLi4zNDAzODIxYjlkIDEwMDY0NAotLS0tIGEvaW5jbHVkZS9zeXNlbXUvdHBtX2JhY2tlbmQuaAotKysrIGIvaW5jbHVkZS9zeXNlbXUvdHBtX2JhY2tlbmQuaAotQEAgLTYyLDYgKzYyLDE4IEBAIHR5cGVkZWYgc3RydWN0IFRQTVNpemVkQnVmZmVyIHsKLSAgICAgdWludDhfdCAgKmJ1ZmZlcjsKLSB9IFRQTVNpemVkQnVmZmVyOwotIAotKy8qIGJsb2JzIGZyb20gdGhlIFRQTTsgcGFydCBvZiBWTSBzdGF0ZSB3aGVuIG1pZ3JhdGluZyAqLwotK3R5cGVkZWYgc3RydWN0IFRQTUJsb2JCdWZmZXJzIHsKLSsgICAgdWludDMyX3QgcGVybWFuZW50X2ZsYWdzOwotKyAgICBUUE1TaXplZEJ1ZmZlciBwZXJtYW5lbnQ7Ci0rCi0rICAgIHVpbnQzMl90IHZvbGF0aWxfZmxhZ3M7Ci0rICAgIFRQTVNpemVkQnVmZmVyIHZvbGF0aWw7Ci0rCi0rICAgIHVpbnQzMl90IHNhdmVzdGF0ZV9mbGFnczsKLSsgICAgVFBNU2l6ZWRCdWZmZXIgc2F2ZXN0YXRlOwotK30gVFBNQmxvYkJ1ZmZlcnM7Ci0rCi0gc3RydWN0IFRQTURyaXZlck9wcyB7Ci0gICAgIGVudW0gVHBtVHlwZSB0eXBlOwotICAgICBjb25zdCBRZW11T3B0RGVzYyAqb3B0czsKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzA0YjMzZTIxODY2NDEyNjg5ZjE4YjdhZDZkYWYwYTU0ZDhmOTU5YTcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wNGIzM2UyMTg2NjQxMjY4OWYxOGI3YWQ2ZGFmMGE1NGQ4Zjk1OWE3LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOTQ3ZThjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzA0YjMzZTIxODY2NDEyNjg5ZjE4YjdhZDZkYWYwYTU0ZDhmOTU5YTcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyODIgKzAsMCBAQAotRnJvbSAwNGIzM2UyMTg2NjQxMjY4OWYxOGI3YWQ2ZGFmMGE1NGQ4Zjk1OWE3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMjggSnVuIDIwMTcgMTM6NDQ6NTIgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gUmVwbGFjZSAnc3RydWN0IHVjb250ZXh0JyB3aXRoICd1Y29udGV4dF90JyB0eXBlCi0KLWdsaWJjIHVzZWQgdG8gaGF2ZToKLQotICAgdHlwZWRlZiBzdHJ1Y3QgdWNvbnRleHQgeyAuLi4gfSB1Y29udGV4dF90OwotCi1nbGliYyBub3cgaGFzOgotCi0gICB0eXBlZGVmIHN0cnVjdCB1Y29udGV4dF90IHsgLi4uIH0gdWNvbnRleHRfdDsKLQotKFNlZSBodHRwczovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yMTQ1NwotIGZvciBkZXRhaWwgYW5kIHJhdGlvbmFsZSBmb3IgdGhlIGdsaWJjIGNoYW5nZSkKLQotSG93ZXZlciwgUUVNVSB1c2VkICJzdHJ1Y3QgdWNvbnRleHQiIGluIGRlY2xhcmF0aW9ucy4gVGhpcyBpcyBhCi1wcml2YXRlIG5hbWUgYW5kIGNvbXBhdGliaWxpdHkgY2Fubm90IGJlIGd1YXJhbnRlZWQuIFN3aXRjaCB0bwotb25seSB1c2luZyB0aGUgc3RhbmRhcmRpemVkIHR5cGUgbmFtZS4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLU1lc3NhZ2UtaWQ6IDIwMTcwNjI4MjA0NDUyLjQxMjMwLTEtcmFqLmtoZW1AZ21haWwuY29tCi1DYzogS2FtaWwgUnl0YXJvd3NraSA8a2FtaWxAbmV0YnNkLm9yZz4KLUNjOiBSaWt1IFZvaXBpbyA8cmlrdS52b2lwaW9AaWtpLmZpPgotQ2M6IExhdXJlbnQgVml2aWVyIDxsYXVyZW50QHZpdmllci5ldT4KLUNjOiBQYW9sbyBCb256aW5pIDxwYm9uemluaUByZWRoYXQuY29tPgotUmV2aWV3ZWQtYnk6IEVyaWMgQmxha2UgPGVibGFrZUByZWRoYXQuY29tPgotW1BNTTogUmV3cm90ZSBjb21taXQgbWVzc2FnZSwgYmFzZWQgbW9zdGx5IG9uIHRoZSBvbmUgZnJvbQotIE5hdGhhbmllbCBNY0NhbGx1bV0KLVNpZ25lZC1vZmYtYnk6IFBldGVyIE1heWRlbGwgPHBldGVyLm1heWRlbGxAbGluYXJvLm9yZz4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotUlAgMjAxNy85LzYKLS0tLQotIGxpbnV4LXVzZXIvaG9zdC9hYXJjaDY0L2hvc3RkZXAuaCB8ICAyICstCi0gbGludXgtdXNlci9ob3N0L2FybS9ob3N0ZGVwLmggICAgIHwgIDIgKy0KLSBsaW51eC11c2VyL2hvc3QvaTM4Ni9ob3N0ZGVwLmggICAgfCAgMiArLQotIGxpbnV4LXVzZXIvaG9zdC9wcGM2NC9ob3N0ZGVwLmggICB8ICAyICstCi0gbGludXgtdXNlci9ob3N0L3MzOTB4L2hvc3RkZXAuaCAgIHwgIDIgKy0KLSBsaW51eC11c2VyL2hvc3QveDg2XzY0L2hvc3RkZXAuaCAgfCAgMiArLQotIGxpbnV4LXVzZXIvc2lnbmFsLmMgICAgICAgICAgICAgICB8IDEwICsrKysrLS0tLS0KLSB0ZXN0cy90Y2cvdGVzdC1pMzg2LmMgICAgICAgICAgICAgfCAgNCArKy0tCi0gdXNlci1leGVjLmMgICAgICAgICAgICAgICAgICAgICAgIHwgMTggKysrKysrKysrLS0tLS0tLS0tCi0gOSBmaWxlcyBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCspLCAyMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpbnV4LXVzZXIvaG9zdC9hYXJjaDY0L2hvc3RkZXAuaCBiL2xpbnV4LXVzZXIvaG9zdC9hYXJjaDY0L2hvc3RkZXAuaAotaW5kZXggNjRmNzVjZS4uYThkNDFhMiAxMDA2NDQKLS0tLSBhL2xpbnV4LXVzZXIvaG9zdC9hYXJjaDY0L2hvc3RkZXAuaAotKysrIGIvbGludXgtdXNlci9ob3N0L2FhcmNoNjQvaG9zdGRlcC5oCi1AQCAtMjQsNyArMjQsNyBAQCBleHRlcm4gY2hhciBzYWZlX3N5c2NhbGxfZW5kW107Ci0gLyogQWRqdXN0IHRoZSBzaWduYWwgY29udGV4dCB0byByZXdpbmQgb3V0IG9mIHNhZmUtc3lzY2FsbCBpZiB3ZSdyZSBpbiBpdCAqLwotIHN0YXRpYyBpbmxpbmUgdm9pZCByZXdpbmRfaWZfaW5fc2FmZV9zeXNjYWxsKHZvaWQgKnB1YykKLSB7Ci0tICAgIHN0cnVjdCB1Y29udGV4dCAqdWMgPSBwdWM7Ci0rICAgIHVjb250ZXh0X3QgKnVjID0gcHVjOwotICAgICBfX3U2NCAqcGNyZWcgPSAmdWMtPnVjX21jb250ZXh0LnBjOwotIAotICAgICBpZiAoKnBjcmVnID4gKHVpbnRwdHJfdClzYWZlX3N5c2NhbGxfc3RhcnQKLWRpZmYgLS1naXQgYS9saW51eC11c2VyL2hvc3QvYXJtL2hvc3RkZXAuaCBiL2xpbnV4LXVzZXIvaG9zdC9hcm0vaG9zdGRlcC5oCi1pbmRleCA1YzFhZTYwLi45Mjc2ZmU2IDEwMDY0NAotLS0tIGEvbGludXgtdXNlci9ob3N0L2FybS9ob3N0ZGVwLmgKLSsrKyBiL2xpbnV4LXVzZXIvaG9zdC9hcm0vaG9zdGRlcC5oCi1AQCAtMjQsNyArMjQsNyBAQCBleHRlcm4gY2hhciBzYWZlX3N5c2NhbGxfZW5kW107Ci0gLyogQWRqdXN0IHRoZSBzaWduYWwgY29udGV4dCB0byByZXdpbmQgb3V0IG9mIHNhZmUtc3lzY2FsbCBpZiB3ZSdyZSBpbiBpdCAqLwotIHN0YXRpYyBpbmxpbmUgdm9pZCByZXdpbmRfaWZfaW5fc2FmZV9zeXNjYWxsKHZvaWQgKnB1YykKLSB7Ci0tICAgIHN0cnVjdCB1Y29udGV4dCAqdWMgPSBwdWM7Ci0rICAgIHVjb250ZXh0X3QgKnVjID0gcHVjOwotICAgICB1bnNpZ25lZCBsb25nICpwY3JlZyA9ICZ1Yy0+dWNfbWNvbnRleHQuYXJtX3BjOwotIAotICAgICBpZiAoKnBjcmVnID4gKHVpbnRwdHJfdClzYWZlX3N5c2NhbGxfc3RhcnQKLWRpZmYgLS1naXQgYS9saW51eC11c2VyL2hvc3QvaTM4Ni9ob3N0ZGVwLmggYi9saW51eC11c2VyL2hvc3QvaTM4Ni9ob3N0ZGVwLmgKLWluZGV4IGQ4MzRiZDguLjA3M2JlNzQgMTAwNjQ0Ci0tLS0gYS9saW51eC11c2VyL2hvc3QvaTM4Ni9ob3N0ZGVwLmgKLSsrKyBiL2xpbnV4LXVzZXIvaG9zdC9pMzg2L2hvc3RkZXAuaAotQEAgLTI0LDcgKzI0LDcgQEAgZXh0ZXJuIGNoYXIgc2FmZV9zeXNjYWxsX2VuZFtdOwotIC8qIEFkanVzdCB0aGUgc2lnbmFsIGNvbnRleHQgdG8gcmV3aW5kIG91dCBvZiBzYWZlLXN5c2NhbGwgaWYgd2UncmUgaW4gaXQgKi8KLSBzdGF0aWMgaW5saW5lIHZvaWQgcmV3aW5kX2lmX2luX3NhZmVfc3lzY2FsbCh2b2lkICpwdWMpCi0gewotLSAgICBzdHJ1Y3QgdWNvbnRleHQgKnVjID0gcHVjOwotKyAgICB1Y29udGV4dF90ICp1YyA9IHB1YzsKLSAgICAgZ3JlZ190ICpwY3JlZyA9ICZ1Yy0+dWNfbWNvbnRleHQuZ3JlZ3NbUkVHX0VJUF07Ci0gCi0gICAgIGlmICgqcGNyZWcgPiAodWludHB0cl90KXNhZmVfc3lzY2FsbF9zdGFydAotZGlmZiAtLWdpdCBhL2xpbnV4LXVzZXIvaG9zdC9wcGM2NC9ob3N0ZGVwLmggYi9saW51eC11c2VyL2hvc3QvcHBjNjQvaG9zdGRlcC5oCi1pbmRleCAwYjBmNWY3Li45ODk3OWFkIDEwMDY0NAotLS0tIGEvbGludXgtdXNlci9ob3N0L3BwYzY0L2hvc3RkZXAuaAotKysrIGIvbGludXgtdXNlci9ob3N0L3BwYzY0L2hvc3RkZXAuaAotQEAgLTI0LDcgKzI0LDcgQEAgZXh0ZXJuIGNoYXIgc2FmZV9zeXNjYWxsX2VuZFtdOwotIC8qIEFkanVzdCB0aGUgc2lnbmFsIGNvbnRleHQgdG8gcmV3aW5kIG91dCBvZiBzYWZlLXN5c2NhbGwgaWYgd2UncmUgaW4gaXQgKi8KLSBzdGF0aWMgaW5saW5lIHZvaWQgcmV3aW5kX2lmX2luX3NhZmVfc3lzY2FsbCh2b2lkICpwdWMpCi0gewotLSAgICBzdHJ1Y3QgdWNvbnRleHQgKnVjID0gcHVjOwotKyAgICB1Y29udGV4dF90ICp1YyA9IHB1YzsKLSAgICAgdW5zaWduZWQgbG9uZyAqcGNyZWcgPSAmdWMtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfTklQXTsKLSAKLSAgICAgaWYgKCpwY3JlZyA+ICh1aW50cHRyX3Qpc2FmZV9zeXNjYWxsX3N0YXJ0Ci1kaWZmIC0tZ2l0IGEvbGludXgtdXNlci9ob3N0L3MzOTB4L2hvc3RkZXAuaCBiL2xpbnV4LXVzZXIvaG9zdC9zMzkweC9ob3N0ZGVwLmgKLWluZGV4IDZmOWRhOWMuLjRmMDE3MWYgMTAwNjQ0Ci0tLS0gYS9saW51eC11c2VyL2hvc3QvczM5MHgvaG9zdGRlcC5oCi0rKysgYi9saW51eC11c2VyL2hvc3QvczM5MHgvaG9zdGRlcC5oCi1AQCAtMjQsNyArMjQsNyBAQCBleHRlcm4gY2hhciBzYWZlX3N5c2NhbGxfZW5kW107Ci0gLyogQWRqdXN0IHRoZSBzaWduYWwgY29udGV4dCB0byByZXdpbmQgb3V0IG9mIHNhZmUtc3lzY2FsbCBpZiB3ZSdyZSBpbiBpdCAqLwotIHN0YXRpYyBpbmxpbmUgdm9pZCByZXdpbmRfaWZfaW5fc2FmZV9zeXNjYWxsKHZvaWQgKnB1YykKLSB7Ci0tICAgIHN0cnVjdCB1Y29udGV4dCAqdWMgPSBwdWM7Ci0rICAgIHVjb250ZXh0X3QgKnVjID0gcHVjOwotICAgICB1bnNpZ25lZCBsb25nICpwY3JlZyA9ICZ1Yy0+dWNfbWNvbnRleHQucHN3LmFkZHI7Ci0gCi0gICAgIGlmICgqcGNyZWcgPiAodWludHB0cl90KXNhZmVfc3lzY2FsbF9zdGFydAotZGlmZiAtLWdpdCBhL2xpbnV4LXVzZXIvaG9zdC94ODZfNjQvaG9zdGRlcC5oIGIvbGludXgtdXNlci9ob3N0L3g4Nl82NC9ob3N0ZGVwLmgKLWluZGV4IDNiNDI1OTYuLmE0ZmVmYjUgMTAwNjQ0Ci0tLS0gYS9saW51eC11c2VyL2hvc3QveDg2XzY0L2hvc3RkZXAuaAotKysrIGIvbGludXgtdXNlci9ob3N0L3g4Nl82NC9ob3N0ZGVwLmgKLUBAIC0yNCw3ICsyNCw3IEBAIGV4dGVybiBjaGFyIHNhZmVfc3lzY2FsbF9lbmRbXTsKLSAvKiBBZGp1c3QgdGhlIHNpZ25hbCBjb250ZXh0IHRvIHJld2luZCBvdXQgb2Ygc2FmZS1zeXNjYWxsIGlmIHdlJ3JlIGluIGl0ICovCi0gc3RhdGljIGlubGluZSB2b2lkIHJld2luZF9pZl9pbl9zYWZlX3N5c2NhbGwodm9pZCAqcHVjKQotIHsKLS0gICAgc3RydWN0IHVjb250ZXh0ICp1YyA9IHB1YzsKLSsgICAgdWNvbnRleHRfdCAqdWMgPSBwdWM7Ci0gICAgIGdyZWdfdCAqcGNyZWcgPSAmdWMtPnVjX21jb250ZXh0LmdyZWdzW1JFR19SSVBdOwotIAotICAgICBpZiAoKnBjcmVnID4gKHVpbnRwdHJfdClzYWZlX3N5c2NhbGxfc3RhcnQKLWRpZmYgLS1naXQgYS9saW51eC11c2VyL3NpZ25hbC5jIGIvbGludXgtdXNlci9zaWduYWwuYwotaW5kZXggZDY4YmQyNi4uY2MwYzNmYyAxMDA2NDQKLS0tLSBhL2xpbnV4LXVzZXIvc2lnbmFsLmMKLSsrKyBiL2xpbnV4LXVzZXIvc2lnbmFsLmMKLUBAIC0zMzQ2LDcgKzMzNDYsNyBAQCBzdGF0aWMgdm9pZCBzZXR1cF9ydF9mcmFtZShpbnQgc2lnLCBzdHJ1Y3QgdGFyZ2V0X3NpZ2FjdGlvbiAqa2EsCi0gICAgICoKLSAgICAgKiAgIGEwID0gc2lnbmFsIG51bWJlcgotICAgICAqICAgYTEgPSBwb2ludGVyIHRvIHNpZ2luZm9fdAotLSAgICAqICAgYTIgPSBwb2ludGVyIHRvIHN0cnVjdCB1Y29udGV4dAotKyAgICAqICAgYTIgPSBwb2ludGVyIHRvIHVjb250ZXh0X3QKLSAgICAgKgotICAgICAqICQyNSBhbmQgUEMgcG9pbnQgdG8gdGhlIHNpZ25hbCBoYW5kbGVyLCAkMjkgcG9pbnRzIHRvIHRoZQotICAgICAqIHN0cnVjdCBzaWdmcmFtZS4KLUBAIC0zNzY0LDcgKzM3NjQsNyBAQCBzdHJ1Y3QgdGFyZ2V0X3NpZ25hbF9mcmFtZSB7Ci0gCi0gc3RydWN0IHJ0X3NpZ25hbF9mcmFtZSB7Ci0gICAgIHNpZ2luZm9fdCBpbmZvOwotLSAgICBzdHJ1Y3QgdWNvbnRleHQgdWM7Ci0rICAgIHVjb250ZXh0X3QgdWM7Ci0gICAgIHVpbnQzMl90IHRyYW1wWzJdOwotIH07Ci0gCi1AQCAtMzk4MCw3ICszOTgwLDcgQEAgc3RydWN0IHJ0X3NpZ25hbF9mcmFtZSB7Ci0gICAgIHNpZ2luZm9fdCAqcGluZm87Ci0gICAgIHZvaWQgKnB1YzsKLSAgICAgc2lnaW5mb190IGluZm87Ci0tICAgIHN0cnVjdCB1Y29udGV4dCB1YzsKLSsgICAgdWNvbnRleHRfdCB1YzsKLSAgICAgdWludDE2X3QgcmV0Y29kZVs0XTsgICAgICAvKiBUcmFtcG9saW5lIGNvZGUuICovCi0gfTsKLSAKLUBAIC00NTE1LDcgKzQ1MTUsNyBAQCBzdGF0aWMgdm9pZCBzZXR1cF9ydF9mcmFtZShpbnQgc2lnLCBzdHJ1Y3QgdGFyZ2V0X3NpZ2FjdGlvbiAqa2EsCi0gICAgICAgICB0c3dhcF9zaWdpbmZvKCZmcmFtZS0+aW5mbywgaW5mbyk7Ci0gICAgIH0KLSAKLS0gICAgLyplcnIgfD0gX19jbGVhcl91c2VyKCZmcmFtZS0+dWMsIG9mZnNldG9mKHN0cnVjdCB1Y29udGV4dCwgdWNfbWNvbnRleHQpKTsqLwotKyAgICAvKmVyciB8PSBfX2NsZWFyX3VzZXIoJmZyYW1lLT51Yywgb2Zmc2V0b2YodWNvbnRleHRfdCwgdWNfbWNvbnRleHQpKTsqLwotICAgICBfX3B1dF91c2VyKDAsICZmcmFtZS0+dWMudHVjX2ZsYWdzKTsKLSAgICAgX19wdXRfdXNlcigwLCAmZnJhbWUtPnVjLnR1Y19saW5rKTsKLSAgICAgX19wdXRfdXNlcih0YXJnZXRfc2lnYWx0c3RhY2tfdXNlZC5zc19zcCwKLUBAIC01MDA3LDcgKzUwMDcsNyBAQCBlbnVtIHsKLSAKLSBzdHJ1Y3QgdGFyZ2V0X3Vjb250ZXh0IHsKLSAgICAgdGFyZ2V0X3Vsb25nIHR1Y19mbGFnczsKLS0gICAgdGFyZ2V0X3Vsb25nIHR1Y19saW5rOyAgICAvKiBzdHJ1Y3QgdWNvbnRleHQgX191c2VyICogKi8KLSsgICAgdGFyZ2V0X3Vsb25nIHR1Y19saW5rOyAgICAvKiB1Y29udGV4dF90IF9fdXNlciAqICovCi0gICAgIHN0cnVjdCB0YXJnZXRfc2lnYWx0c3RhY2sgdHVjX3N0YWNrOwotICNpZiAhZGVmaW5lZChUQVJHRVRfUFBDNjQpCi0gICAgIGludDMyX3QgdHVjX3BhZFs3XTsKLWRpZmYgLS1naXQgYS90ZXN0cy90Y2cvdGVzdC1pMzg2LmMgYi90ZXN0cy90Y2cvdGVzdC1pMzg2LmMKLWluZGV4IDBmN2I5NDMuLjk1OTkyMDQgMTAwNjQ0Ci0tLS0gYS90ZXN0cy90Y2cvdGVzdC1pMzg2LmMKLSsrKyBiL3Rlc3RzL3RjZy90ZXN0LWkzODYuYwotQEAgLTE3MjAsNyArMTcyMCw3IEBAIGludCB0YWJbMl07Ci0gCi0gdm9pZCBzaWdfaGFuZGxlcihpbnQgc2lnLCBzaWdpbmZvX3QgKmluZm8sIHZvaWQgKnB1YykKLSB7Ci0tICAgIHN0cnVjdCB1Y29udGV4dCAqdWMgPSBwdWM7Ci0rICAgIHVjb250ZXh0X3QgKnVjID0gcHVjOwotIAotICAgICBwcmludGYoInNpX3NpZ25vPSVkIHNpX2Vycm5vPSVkIHNpX2NvZGU9JWQiLAotICAgICAgICAgICAgaW5mby0+c2lfc2lnbm8sIGluZm8tPnNpX2Vycm5vLCBpbmZvLT5zaV9jb2RlKTsKLUBAIC0xOTEyLDcgKzE5MTIsNyBAQCB2b2lkIHRlc3RfZXhjZXB0aW9ucyh2b2lkKQotIC8qIHNwZWNpZmljIHByZWNpc2Ugc2luZ2xlIHN0ZXAgdGVzdCAqLwotIHZvaWQgc2lnX3RyYXBfaGFuZGxlcihpbnQgc2lnLCBzaWdpbmZvX3QgKmluZm8sIHZvaWQgKnB1YykKLSB7Ci0tICAgIHN0cnVjdCB1Y29udGV4dCAqdWMgPSBwdWM7Ci0rICAgIHVjb250ZXh0X3QgKnVjID0gcHVjOwotICAgICBwcmludGYoIkVJUD0iIEZNVExYICJcbiIsIChsb25nKXVjLT51Y19tY29udGV4dC5ncmVnc1tSRUdfRUlQXSk7Ci0gfQotIAotZGlmZiAtLWdpdCBhL3VzZXItZXhlYy5jIGIvdXNlci1leGVjLmMKLWluZGV4IGE4Zjk1ZmEuLjJhOTc1ZWEgMTAwNjQ0Ci0tLS0gYS91c2VyLWV4ZWMuYwotKysrIGIvdXNlci1leGVjLmMKLUBAIC0xNjcsNyArMTY3LDcgQEAgaW50IGNwdV9zaWduYWxfaGFuZGxlcihpbnQgaG9zdF9zaWdudW0sIHZvaWQgKnBpbmZvLAotICNlbGlmIGRlZmluZWQoX19PcGVuQlNEX18pCi0gICAgIHN0cnVjdCBzaWdjb250ZXh0ICp1YyA9IHB1YzsKLSAjZWxzZQotLSAgICBzdHJ1Y3QgdWNvbnRleHQgKnVjID0gcHVjOwotKyAgICB1Y29udGV4dF90ICp1YyA9IHB1YzsKLSAjZW5kaWYKLSAgICAgdW5zaWduZWQgbG9uZyBwYzsKLSAgICAgaW50IHRyYXBubzsKLUBAIC0yMjIsNyArMjIyLDcgQEAgaW50IGNwdV9zaWduYWxfaGFuZGxlcihpbnQgaG9zdF9zaWdudW0sIHZvaWQgKnBpbmZvLAotICNlbGlmIGRlZmluZWQoX19PcGVuQlNEX18pCi0gICAgIHN0cnVjdCBzaWdjb250ZXh0ICp1YyA9IHB1YzsKLSAjZWxzZQotLSAgICBzdHJ1Y3QgdWNvbnRleHQgKnVjID0gcHVjOwotKyAgICB1Y29udGV4dF90ICp1YyA9IHB1YzsKLSAjZW5kaWYKLSAKLSAgICAgcGMgPSBQQ19zaWcodWMpOwotQEAgLTI4OSw3ICsyODksNyBAQCBpbnQgY3B1X3NpZ25hbF9oYW5kbGVyKGludCBob3N0X3NpZ251bSwgdm9pZCAqcGluZm8sCi0gI2lmIGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19GcmVlQlNEX2tlcm5lbF9fKQotICAgICB1Y29udGV4dF90ICp1YyA9IHB1YzsKLSAjZWxzZQotLSAgICBzdHJ1Y3QgdWNvbnRleHQgKnVjID0gcHVjOwotKyAgICB1Y29udGV4dF90ICp1YyA9IHB1YzsKLSAjZW5kaWYKLSAgICAgdW5zaWduZWQgbG9uZyBwYzsKLSAgICAgaW50IGlzX3dyaXRlOwotQEAgLTMxNiw3ICszMTYsNyBAQCBpbnQgY3B1X3NpZ25hbF9oYW5kbGVyKGludCBob3N0X3NpZ251bSwgdm9pZCAqcGluZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqcHVjKQotIHsKLSAgICAgc2lnaW5mb190ICppbmZvID0gcGluZm87Ci0tICAgIHN0cnVjdCB1Y29udGV4dCAqdWMgPSBwdWM7Ci0rICAgIHVjb250ZXh0X3QgKnVjID0gcHVjOwotICAgICB1aW50MzJfdCAqcGMgPSB1Yy0+dWNfbWNvbnRleHQuc2NfcGM7Ci0gICAgIHVpbnQzMl90IGluc24gPSAqcGM7Ci0gICAgIGludCBpc193cml0ZSA9IDA7Ci1AQCAtNDE0LDcgKzQxNCw3IEBAIGludCBjcHVfc2lnbmFsX2hhbmRsZXIoaW50IGhvc3Rfc2lnbnVtLCB2b2lkICpwaW5mbywKLSAjaWYgZGVmaW5lZChfX05ldEJTRF9fKQotICAgICB1Y29udGV4dF90ICp1YyA9IHB1YzsKLSAjZWxzZQotLSAgICBzdHJ1Y3QgdWNvbnRleHQgKnVjID0gcHVjOwotKyAgICB1Y29udGV4dF90ICp1YyA9IHB1YzsKLSAjZW5kaWYKLSAgICAgdW5zaWduZWQgbG9uZyBwYzsKLSAgICAgaW50IGlzX3dyaXRlOwotQEAgLTQ0MSw3ICs0NDEsNyBAQCBpbnQgY3B1X3NpZ25hbF9oYW5kbGVyKGludCBob3N0X3NpZ251bSwgdm9pZCAqcGluZm8sCi0gaW50IGNwdV9zaWduYWxfaGFuZGxlcihpbnQgaG9zdF9zaWdudW0sIHZvaWQgKnBpbmZvLCB2b2lkICpwdWMpCi0gewotICAgICBzaWdpbmZvX3QgKmluZm8gPSBwaW5mbzsKLS0gICAgc3RydWN0IHVjb250ZXh0ICp1YyA9IHB1YzsKLSsgICAgdWNvbnRleHRfdCAqdWMgPSBwdWM7Ci0gICAgIHVpbnRwdHJfdCBwYyA9IHVjLT51Y19tY29udGV4dC5wYzsKLSAgICAgdWludDMyX3QgaW5zbiA9ICoodWludDMyX3QgKilwYzsKLSAgICAgYm9vbCBpc193cml0ZTsKLUBAIC00NzQsNyArNDc0LDcgQEAgaW50IGNwdV9zaWduYWxfaGFuZGxlcihpbnQgaG9zdF9zaWdudW0sIHZvaWQgKnBpbmZvLCB2b2lkICpwdWMpCi0gaW50IGNwdV9zaWduYWxfaGFuZGxlcihpbnQgaG9zdF9zaWdudW0sIHZvaWQgKnBpbmZvLCB2b2lkICpwdWMpCi0gewotICAgICBzaWdpbmZvX3QgKmluZm8gPSBwaW5mbzsKLS0gICAgc3RydWN0IHVjb250ZXh0ICp1YyA9IHB1YzsKLSsgICAgdWNvbnRleHRfdCAqdWMgPSBwdWM7Ci0gICAgIHVuc2lnbmVkIGxvbmcgaXA7Ci0gICAgIGludCBpc193cml0ZSA9IDA7Ci0gCi1AQCAtNTA1LDcgKzUwNSw3IEBAIGludCBjcHVfc2lnbmFsX2hhbmRsZXIoaW50IGhvc3Rfc2lnbnVtLCB2b2lkICpwaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnB1YykKLSB7Ci0gICAgIHNpZ2luZm9fdCAqaW5mbyA9IHBpbmZvOwotLSAgICBzdHJ1Y3QgdWNvbnRleHQgKnVjID0gcHVjOwotKyAgICB1Y29udGV4dF90ICp1YyA9IHB1YzsKLSAgICAgdW5zaWduZWQgbG9uZyBwYzsKLSAgICAgdWludDE2X3QgKnBpbnNuOwotICAgICBpbnQgaXNfd3JpdGUgPSAwOwotQEAgLTU1OCw3ICs1NTgsNyBAQCBpbnQgY3B1X3NpZ25hbF9oYW5kbGVyKGludCBob3N0X3NpZ251bSwgdm9pZCAqcGluZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpwdWMpCi0gewotICAgICBzaWdpbmZvX3QgKmluZm8gPSBwaW5mbzsKLS0gICAgc3RydWN0IHVjb250ZXh0ICp1YyA9IHB1YzsKLSsgICAgdWNvbnRleHRfdCAqdWMgPSBwdWM7Ci0gICAgIGdyZWdfdCBwYyA9IHVjLT51Y19tY29udGV4dC5wYzsKLSAgICAgaW50IGlzX3dyaXRlOwotIAotLS0gCi0xLjguMy4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDE2LTk5MDgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxNi05OTA4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMGY3YTFhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDE2LTk5MDgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1Gcm9tIDcxMzljY2JjOTA3NDQxMzM3YjRiNTljZGUyYzViNWE1NGNiNWIyY2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTb25hIFNhcm1hZGkgPHNvbmEuc2FybWFkaUBlbmVhLmNvbT4KLQotdmlydGlvLWdwdTogZml4IGluZm9ybWF0aW9uIGxlYWsgaW4gY2Fwc2V0IGdldCBkaXNwYXRjaAotCi1JbiB2aXJnbF9jbWRfZ2V0X2NhcHNldCBmdW5jdGlvbiwgaXQgdXNlcyBnX21hbGxvYyB0byBhbGxvY2F0ZQotYSByZXNwb25zZSBzdHJ1Y3QgdG8gdGhlIGd1ZXN0LiBBcyB0aGUgJ3Jlc3Anc3RydWN0IGhhc24ndCBiZWVuIGZ1bGwKLWluaXRpYWxpemVkIGl0IHdpbGwgbGVhZCB0aGUgJ3Jlc3AtPnBhZGRpbmcnIGZpZWxkIHRvIHRoZSBndWVzdC4KLVVzZSBnX21hbGxvYzAgdG8gYXZvaWQgdGhpcy4KLQotU2lnbmVkLW9mZi1ieTogTGkgUWlhbmcgPGxpcWlhbmc2LXNAMzYwLmNuPgotUmV2aWV3ZWQtYnk6IE1hcmMtQW5kcsOpIEx1cmVhdSA8bWFyY2FuZHJlLmx1cmVhdUByZWRoYXQuY29tPgotTWVzc2FnZS1pZDogNTgxODhjYWUuNGE2ZWMyMGEuM2QyZDEuYWZmMkBteC5nb29nbGUuY29tCi0KLVtTb25hOiBiYWNrcG9ydGVkIGZyb20gbWFzdGVyIHRvIHYyLjguMCBhbmQgcmVzb2x2ZWQgY29uZmxpY3RdCi0KLVJlZmVyZW5jZSB0byB1cHN0cmVhbSBwYXRjaDoKLWh0dHA6Ly9naXQucWVtdS1wcm9qZWN0Lm9yZy8/cD1xZW11LmdpdDthPWNvbW1pdDtoPTg1ZDlkMDQ0NDcxZjkzYzQ4YzVjMzk2ZjdlMjE3YjRlZjEyZjY5ZjgKLQotQ1ZFOiBDVkUtMjAxNi05OTA4Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IEdlcmQgSG9mZm1hbm4gPGtyYXhlbEByZWRoYXQuY29tPgotU2lnbmVkLW9mZi1ieTogU29uYSBTYXJtYWRpIDxzb25hLnNhcm1hZGlAZW5lYS5jb20+Ci0tLS0KLSBody9kaXNwbGF5L3ZpcnRpby1ncHUtM2QuYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2h3L2Rpc3BsYXkvdmlydGlvLWdwdS0zZC5jIGIvaHcvZGlzcGxheS92aXJ0aW8tZ3B1LTNkLmMKLWluZGV4IDIzZjM5ZGUuLmQ5OGIxNDAgMTAwNjQ0Ci0tLS0gYS9ody9kaXNwbGF5L3ZpcnRpby1ncHUtM2QuYwotKysrIGIvaHcvZGlzcGxheS92aXJ0aW8tZ3B1LTNkLmMKLUBAIC0zNzEsNyArMzcxLDcgQEAgc3RhdGljIHZvaWQgdmlyZ2xfY21kX2dldF9jYXBzZXQoVmlydElPR1BVICpnLAotIAotICAgICB2aXJnbF9yZW5kZXJlcl9nZXRfY2FwX3NldChnYy5jYXBzZXRfaWQsICZtYXhfdmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbWF4X3NpemUpOwotLSAgICByZXNwID0gZ19tYWxsb2Moc2l6ZW9mKCpyZXNwKSArIG1heF9zaXplKTsKLSsgICAgcmVzcCA9IGdfbWFsbG9jMChzaXplb2YoKnJlc3ApICsgbWF4X3NpemUpOwotIAotICAgICByZXNwLT5oZHIudHlwZSA9IFZJUlRJT19HUFVfUkVTUF9PS19DQVBTRVQ7Ci0gICAgIHZpcmdsX3JlbmRlcmVyX2ZpbGxfY2FwcyhnYy5jYXBzZXRfaWQsCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDE2LTk5MTIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxNi05OTEyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMDA5ZmZkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDE2LTk5MTIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi1Gcm9tIGI4ZTIzOTI2YzU2OGYyZTk2M2FmMzkwMjhiNzFjNDcyZTMwMjM3OTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBMaSBRaWFuZyA8bGlxM2VhQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMjggTm92IDIwMTYgMjE6Mjk6MjUgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSF0gdmlydGlvLWdwdTogY2FsbCBjbGVhbnVwIG1hcHBpbmcgZnVuY3Rpb24gaW4gcmVzb3VyY2UgZGVzdHJveQotCi1JZiB0aGUgZ3Vlc3QgZGVzdHJveSB0aGUgcmVzb3VyY2UgYmVmb3JlIGRldGFjaCBiYW5raW5nLCB0aGUgJ2lvdicKLWFuZCAnYWRkcnMnIGZpZWxkIGluIHJlc291cmNlIGlzIG5vdCBmcmVlZCB0aHVzIGxlYWRpbmcgbWVtb3J5Ci1sZWFrIGlzc3VlLiBUaGlzIHBhdGNoIGF2b2lkIHRoaXMuCi0KLUNWRTogQ1ZFLTIwMTYtOTkxMgotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBMaSBRaWFuZyA8bGlxM2VhQGdtYWlsLmNvbT4KLVJldmlld2VkLWJ5OiBNYXJjLUFuZHLDqSBMdXJlYXUgPG1hcmNhbmRyZS5sdXJlYXVAcmVkaGF0LmNvbT4KLU1lc3NhZ2UtaWQ6IDE0ODAzODY1NjUtMTAwNzctMS1naXQtc2VuZC1lbWFpbC1saXEzZWFAZ21haWwuY29tCi1TaWduZWQtb2ZmLWJ5OiBHZXJkIEhvZmZtYW5uIDxrcmF4ZWxAcmVkaGF0LmNvbT4KLVNpZ25lZC1vZmYtYnk6IFNvbmEgU2FybWFkaSA8c29uYS5zYXJtYWRpQGVuZWEuY29tPgotLS0tCi0gaHcvZGlzcGxheS92aXJ0aW8tZ3B1LmMgfCAzICsrKwotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2h3L2Rpc3BsYXkvdmlydGlvLWdwdS5jIGIvaHcvZGlzcGxheS92aXJ0aW8tZ3B1LmMKLWluZGV4IGVkMmI2ZDMuLjZhMjYyNTggMTAwNjQ0Ci0tLS0gYS9ody9kaXNwbGF5L3ZpcnRpby1ncHUuYwotKysrIGIvaHcvZGlzcGxheS92aXJ0aW8tZ3B1LmMKLUBAIC0yOCw2ICsyOCw4IEBACi0gc3RhdGljIHN0cnVjdCB2aXJ0aW9fZ3B1X3NpbXBsZV9yZXNvdXJjZSoKLSB2aXJ0aW9fZ3B1X2ZpbmRfcmVzb3VyY2UoVmlydElPR1BVICpnLCB1aW50MzJfdCByZXNvdXJjZV9pZCk7Ci0gCi0rc3RhdGljIHZvaWQgdmlydGlvX2dwdV9jbGVhbnVwX21hcHBpbmcoc3RydWN0IHZpcnRpb19ncHVfc2ltcGxlX3Jlc291cmNlICpyZXMpOwotKwotICNpZmRlZiBDT05GSUdfVklSR0wKLSAjaW5jbHVkZSA8dmlyZ2xyZW5kZXJlci5oPgotICNkZWZpbmUgVklSR0woX2csIF92aXJnbCwgX3NpbXBsZSwgLi4uKSAgICAgICAgICAgICAgICAgICAgIFwKLUBAIC0zNjQsNiArMzY2LDcgQEAgc3RhdGljIHZvaWQgdmlydGlvX2dwdV9yZXNvdXJjZV9kZXN0cm95KFZpcnRJT0dQVSAqZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHZpcnRpb19ncHVfc2ltcGxlX3Jlc291cmNlICpyZXMpCi0gewotICAgICBwaXhtYW5faW1hZ2VfdW5yZWYocmVzLT5pbWFnZSk7Ci0rICAgIHZpcnRpb19ncHVfY2xlYW51cF9tYXBwaW5nKHJlcyk7Ci0gICAgIFFUQUlMUV9SRU1PVkUoJmctPnJlc2xpc3QsIHJlcywgbmV4dCk7Ci0gICAgIGctPmhvc3RtZW0gLT0gcmVzLT5ob3N0bWVtOwotICAgICBnX2ZyZWUocmVzKTsKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTctMTM2NzIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxNy0xMzY3Mi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTBiMWVlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTctMTM2NzIucGF0Y2gKQEAgLTAsMCArMSw1MDQgQEAKK0Zyb20gM2Q5MGM2MjU0ODYzNjkzYTZiMTNkOTE4ZDJiODY4MmUwOGJiYzY4MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEdlcmQgSG9mZm1hbm4gPGtyYXhlbEByZWRoYXQuY29tPgorRGF0ZTogTW9uLCAyOCBBdWcgMjAxNyAxNDoyOTowNiArMDIwMAorU3ViamVjdDogW1BBVENIXSB2Z2E6IHN0b3AgcGFzc2luZyBwb2ludGVycyB0byB2Z2FfZHJhd19saW5lKiBmdW5jdGlvbnMKKworSW5zdGVhZCBwYXNzIGFyb3VuZCB0aGUgYWRkcmVzcyAoYWthIG9mZnNldCBpbnRvIHZnYSBtZW1vcnkpLgorQWRkIHZnYV9yZWFkXyogaGVscGVyIGZ1bmN0aW9ucyB3aGljaCBhcHBseSB2YmVfc2l6ZV9tYXNrIHRvCit0aGUgYWRkcmVzcywgdG8gbWFrZSBzdXJlIHRoZSBhZGRyZXNzIHN0YXlzIHdpdGhpbiB0aGUgdmFsaWQKK3JhbmdlLCBzaW1pbGFyIHRvIHRoZSBjaXJydXMgYmxpdHRlciBmaXhlcyAoY29tbWl0cyBmZmFmODU3Nzc4CithbmQgMDI2YWVmZmNiNCkuCisKK0ltcGFjdDogIERvUyBmb3IgcHJpdmlsZWdlZCBndWVzdCB1c2Vycy4gIHFlbXUgY3Jhc2hlcyB3aXRoCithIHNlZ2ZhdWx0LCB3aGVuIGhpdHRpbmcgdGhlIGd1YXJkIHBhZ2UgYWZ0ZXIgdmdhIG1lbW9yeQorYWxsb2NhdGlvbiwgd2hpbGUgcmVhZGluZyB2Z2EgbWVtb3J5IGZvciBkaXNwbGF5IHVwZGF0ZXMuCisKK0ZpeGVzOiBDVkUtMjAxNy0xMzY3MgorQ2M6IFAgSiBQIDxwcGFuZGl0QHJlZGhhdC5jb20+CitSZXBvcnRlZC1ieTogRGF2aWQgQnVjaGFuYW4gPGRAdmlkYnVjaGFuYW4uY28udWs+CitTaWduZWQtb2ZmLWJ5OiBHZXJkIEhvZmZtYW5uIDxrcmF4ZWxAcmVkaGF0LmNvbT4KK01lc3NhZ2UtaWQ6IDIwMTcwODI4MTIyOTA2LjE4OTkzLTEta3JheGVsQHJlZGhhdC5jb20KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorW2h0dHBzOi8vZ2l0LnFlbXUub3JnLz9wPXFlbXUuZ2l0O2E9Y29tbWl0O2g9M2Q5MGM2MjU0ODYzNjkzYTZiMTNkOTE4ZDJiODY4MmUwOGJiYzY4MV0KKworQ1ZFOiBDVkUtMjAxNy0xMzY3MgorCitTaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CistLS0KKyBody9kaXNwbGF5L3ZnYS1oZWxwZXJzLmggfCAyMDIgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBody9kaXNwbGF5L3ZnYS5jICAgICAgICAgfCAgIDUgKy0KKyBody9kaXNwbGF5L3ZnYV9pbnQuaCAgICAgfCAgIDEgKworIDMgZmlsZXMgY2hhbmdlZCwgMTE0IGluc2VydGlvbnMoKyksIDk0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvaHcvZGlzcGxheS92Z2EtaGVscGVycy5oIGIvaHcvZGlzcGxheS92Z2EtaGVscGVycy5oCitpbmRleCA5NGY2ZGUyLi41YTc1MmIzIDEwMDY0NAorLS0tIGEvaHcvZGlzcGxheS92Z2EtaGVscGVycy5oCisrKysgYi9ody9kaXNwbGF5L3ZnYS1oZWxwZXJzLmgKK0BAIC05NSwyMCArOTUsNDYgQEAgc3RhdGljIHZvaWQgdmdhX2RyYXdfZ2x5cGg5KHVpbnQ4X3QgKmQsIGludCBsaW5lc2l6ZSwKKyAgICAgfSB3aGlsZSAoLS1oKTsKKyB9CisgCisrc3RhdGljIGlubGluZSB1aW50OF90IHZnYV9yZWFkX2J5dGUoVkdBQ29tbW9uU3RhdGUgKnZnYSwgdWludDMyX3QgYWRkcikKKyt7CisrICAgIHJldHVybiB2Z2EtPnZyYW1fcHRyW2FkZHIgJiB2Z2EtPnZiZV9zaXplX21hc2tdOworK30KKysKKytzdGF0aWMgaW5saW5lIHVpbnQxNl90IHZnYV9yZWFkX3dvcmRfbGUoVkdBQ29tbW9uU3RhdGUgKnZnYSwgdWludDMyX3QgYWRkcikKKyt7CisrICAgIHVpbnQzMl90IG9mZnNldCA9IGFkZHIgJiB2Z2EtPnZiZV9zaXplX21hc2sgJiB+MTsKKysgICAgdWludDE2X3QgKnB0ciA9ICh1aW50MTZfdCAqKSh2Z2EtPnZyYW1fcHRyICsgb2Zmc2V0KTsKKysgICAgcmV0dXJuIGxkdXdfbGVfcChwdHIpOworK30KKysKKytzdGF0aWMgaW5saW5lIHVpbnQxNl90IHZnYV9yZWFkX3dvcmRfYmUoVkdBQ29tbW9uU3RhdGUgKnZnYSwgdWludDMyX3QgYWRkcikKKyt7CisrICAgIHVpbnQzMl90IG9mZnNldCA9IGFkZHIgJiB2Z2EtPnZiZV9zaXplX21hc2sgJiB+MTsKKysgICAgdWludDE2X3QgKnB0ciA9ICh1aW50MTZfdCAqKSh2Z2EtPnZyYW1fcHRyICsgb2Zmc2V0KTsKKysgICAgcmV0dXJuIGxkdXdfYmVfcChwdHIpOworK30KKysKKytzdGF0aWMgaW5saW5lIHVpbnQzMl90IHZnYV9yZWFkX2R3b3JkX2xlKFZHQUNvbW1vblN0YXRlICp2Z2EsIHVpbnQzMl90IGFkZHIpCisreworKyAgICB1aW50MzJfdCBvZmZzZXQgPSBhZGRyICYgdmdhLT52YmVfc2l6ZV9tYXNrICYgfjM7CisrICAgIHVpbnQzMl90ICpwdHIgPSAodWludDMyX3QgKikodmdhLT52cmFtX3B0ciArIG9mZnNldCk7CisrICAgIHJldHVybiBsZGxfbGVfcChwdHIpOworK30KKysKKyAvKgorICAqIDQgY29sb3IgbW9kZQorICAqLworLXN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUyKFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzLCBpbnQgd2lkdGgpCisrc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTIoVkdBQ29tbW9uU3RhdGUgKnZnYSwgdWludDhfdCAqZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBhZGRyLCBpbnQgd2lkdGgpCisgeworICAgICB1aW50MzJfdCBwbGFuZV9tYXNrLCAqcGFsZXR0ZSwgZGF0YSwgdjsKKyAgICAgaW50IHg7CisgCistICAgIHBhbGV0dGUgPSBzMS0+bGFzdF9wYWxldHRlOworLSAgICBwbGFuZV9tYXNrID0gbWFzazE2W3MxLT5hcltWR0FfQVRDX1BMQU5FX0VOQUJMRV0gJiAweGZdOworKyAgICBwYWxldHRlID0gdmdhLT5sYXN0X3BhbGV0dGU7CisrICAgIHBsYW5lX21hc2sgPSBtYXNrMTZbdmdhLT5hcltWR0FfQVRDX1BMQU5FX0VOQUJMRV0gJiAweGZdOworICAgICB3aWR0aCA+Pj0gMzsKKyAgICAgZm9yKHggPSAwOyB4IDwgd2lkdGg7IHgrKykgeworLSAgICAgICAgZGF0YSA9ICgodWludDMyX3QgKilzKVswXTsKKysgICAgICAgIGRhdGEgPSB2Z2FfcmVhZF9kd29yZF9sZSh2Z2EsIGFkZHIpOworICAgICAgICAgZGF0YSAmPSBwbGFuZV9tYXNrOworICAgICAgICAgdiA9IGV4cGFuZDJbR0VUX1BMQU5FKGRhdGEsIDApXTsKKyAgICAgICAgIHYgfD0gZXhwYW5kMltHRVRfUExBTkUoZGF0YSwgMildIDw8IDI7CitAQCAtMTI0LDcgKzE1MCw3IEBAIHN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUyKFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKKyAgICAgICAgICgodWludDMyX3QgKilkKVs2XSA9IHBhbGV0dGVbKHYgPj4gNCkgJiAweGZdOworICAgICAgICAgKCh1aW50MzJfdCAqKWQpWzddID0gcGFsZXR0ZVsodiA+PiAwKSAmIDB4Zl07CisgICAgICAgICBkICs9IDMyOworLSAgICAgICAgcyArPSA0OworKyAgICAgICAgYWRkciArPSA0OworICAgICB9CisgfQorIAorQEAgLTEzNCwxNyArMTYwLDE3IEBAIHN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUyKFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKKyAvKgorICAqIDQgY29sb3IgbW9kZSwgZHVwMiBob3Jpem9udGFsCisgICovCistc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTJkMihWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzLCBpbnQgd2lkdGgpCisrc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTJkMihWR0FDb21tb25TdGF0ZSAqdmdhLCB1aW50OF90ICpkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYWRkciwgaW50IHdpZHRoKQorIHsKKyAgICAgdWludDMyX3QgcGxhbmVfbWFzaywgKnBhbGV0dGUsIGRhdGEsIHY7CisgICAgIGludCB4OworIAorLSAgICBwYWxldHRlID0gczEtPmxhc3RfcGFsZXR0ZTsKKy0gICAgcGxhbmVfbWFzayA9IG1hc2sxNltzMS0+YXJbVkdBX0FUQ19QTEFORV9FTkFCTEVdICYgMHhmXTsKKysgICAgcGFsZXR0ZSA9IHZnYS0+bGFzdF9wYWxldHRlOworKyAgICBwbGFuZV9tYXNrID0gbWFzazE2W3ZnYS0+YXJbVkdBX0FUQ19QTEFORV9FTkFCTEVdICYgMHhmXTsKKyAgICAgd2lkdGggPj49IDM7CisgICAgIGZvcih4ID0gMDsgeCA8IHdpZHRoOyB4KyspIHsKKy0gICAgICAgIGRhdGEgPSAoKHVpbnQzMl90ICopcylbMF07CisrICAgICAgICBkYXRhID0gdmdhX3JlYWRfZHdvcmRfbGUodmdhLCBhZGRyKTsKKyAgICAgICAgIGRhdGEgJj0gcGxhbmVfbWFzazsKKyAgICAgICAgIHYgPSBleHBhbmQyW0dFVF9QTEFORShkYXRhLCAwKV07CisgICAgICAgICB2IHw9IGV4cGFuZDJbR0VUX1BMQU5FKGRhdGEsIDIpXSA8PCAyOworQEAgLTE2MCwyNCArMTg2LDI0IEBAIHN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUyZDIoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAorICAgICAgICAgUFVUX1BJWEVMMihkLCA2LCBwYWxldHRlWyh2ID4+IDQpICYgMHhmXSk7CisgICAgICAgICBQVVRfUElYRUwyKGQsIDcsIHBhbGV0dGVbKHYgPj4gMCkgJiAweGZdKTsKKyAgICAgICAgIGQgKz0gNjQ7CistICAgICAgICBzICs9IDQ7CisrICAgICAgICBhZGRyICs9IDQ7CisgICAgIH0KKyB9CisgCisgLyoKKyAgKiAxNiBjb2xvciBtb2RlCisgICovCistc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTQoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnMsIGludCB3aWR0aCkKKytzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lNChWR0FDb21tb25TdGF0ZSAqdmdhLCB1aW50OF90ICpkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFkZHIsIGludCB3aWR0aCkKKyB7CisgICAgIHVpbnQzMl90IHBsYW5lX21hc2ssIGRhdGEsIHYsICpwYWxldHRlOworICAgICBpbnQgeDsKKyAKKy0gICAgcGFsZXR0ZSA9IHMxLT5sYXN0X3BhbGV0dGU7CistICAgIHBsYW5lX21hc2sgPSBtYXNrMTZbczEtPmFyW1ZHQV9BVENfUExBTkVfRU5BQkxFXSAmIDB4Zl07CisrICAgIHBhbGV0dGUgPSB2Z2EtPmxhc3RfcGFsZXR0ZTsKKysgICAgcGxhbmVfbWFzayA9IG1hc2sxNlt2Z2EtPmFyW1ZHQV9BVENfUExBTkVfRU5BQkxFXSAmIDB4Zl07CisgICAgIHdpZHRoID4+PSAzOworICAgICBmb3IoeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7CistICAgICAgICBkYXRhID0gKCh1aW50MzJfdCAqKXMpWzBdOworKyAgICAgICAgZGF0YSA9IHZnYV9yZWFkX2R3b3JkX2xlKHZnYSwgYWRkcik7CisgICAgICAgICBkYXRhICY9IHBsYW5lX21hc2s7CisgICAgICAgICB2ID0gZXhwYW5kNFtHRVRfUExBTkUoZGF0YSwgMCldOworICAgICAgICAgdiB8PSBleHBhbmQ0W0dFVF9QTEFORShkYXRhLCAxKV0gPDwgMTsKK0BAIC0xOTIsMjQgKzIxOCwyNCBAQCBzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lNChWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCisgICAgICAgICAoKHVpbnQzMl90ICopZClbNl0gPSBwYWxldHRlWyh2ID4+IDQpICYgMHhmXTsKKyAgICAgICAgICgodWludDMyX3QgKilkKVs3XSA9IHBhbGV0dGVbKHYgPj4gMCkgJiAweGZdOworICAgICAgICAgZCArPSAzMjsKKy0gICAgICAgIHMgKz0gNDsKKysgICAgICAgIGFkZHIgKz0gNDsKKyAgICAgfQorIH0KKyAKKyAvKgorICAqIDE2IGNvbG9yIG1vZGUsIGR1cDIgaG9yaXpvbnRhbAorICAqLworLXN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmU0ZDIoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcywgaW50IHdpZHRoKQorK3N0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmU0ZDIoVkdBQ29tbW9uU3RhdGUgKnZnYSwgdWludDhfdCAqZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFkZHIsIGludCB3aWR0aCkKKyB7CisgICAgIHVpbnQzMl90IHBsYW5lX21hc2ssIGRhdGEsIHYsICpwYWxldHRlOworICAgICBpbnQgeDsKKyAKKy0gICAgcGFsZXR0ZSA9IHMxLT5sYXN0X3BhbGV0dGU7CistICAgIHBsYW5lX21hc2sgPSBtYXNrMTZbczEtPmFyW1ZHQV9BVENfUExBTkVfRU5BQkxFXSAmIDB4Zl07CisrICAgIHBhbGV0dGUgPSB2Z2EtPmxhc3RfcGFsZXR0ZTsKKysgICAgcGxhbmVfbWFzayA9IG1hc2sxNlt2Z2EtPmFyW1ZHQV9BVENfUExBTkVfRU5BQkxFXSAmIDB4Zl07CisgICAgIHdpZHRoID4+PSAzOworICAgICBmb3IoeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7CistICAgICAgICBkYXRhID0gKCh1aW50MzJfdCAqKXMpWzBdOworKyAgICAgICAgZGF0YSA9IHZnYV9yZWFkX2R3b3JkX2xlKHZnYSwgYWRkcik7CisgICAgICAgICBkYXRhICY9IHBsYW5lX21hc2s7CisgICAgICAgICB2ID0gZXhwYW5kNFtHRVRfUExBTkUoZGF0YSwgMCldOworICAgICAgICAgdiB8PSBleHBhbmQ0W0dFVF9QTEFORShkYXRhLCAxKV0gPDwgMTsKK0BAIC0yMjQsNyArMjUwLDcgQEAgc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTRkMihWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCisgICAgICAgICBQVVRfUElYRUwyKGQsIDYsIHBhbGV0dGVbKHYgPj4gNCkgJiAweGZdKTsKKyAgICAgICAgIFBVVF9QSVhFTDIoZCwgNywgcGFsZXR0ZVsodiA+PiAwKSAmIDB4Zl0pOworICAgICAgICAgZCArPSA2NDsKKy0gICAgICAgIHMgKz0gNDsKKysgICAgICAgIGFkZHIgKz0gNDsKKyAgICAgfQorIH0KKyAKK0BAIC0yMzMsMjEgKzI1OSwyMSBAQCBzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lNGQyKFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKKyAgKgorICAqIFhYWDogYWRkIHBsYW5lX21hc2sgc3VwcG9ydCAobmV2ZXIgdXNlZCBpbiBzdGFuZGFyZCBWR0EgbW9kZXMpCisgICovCistc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZThkMihWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzLCBpbnQgd2lkdGgpCisrc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZThkMihWR0FDb21tb25TdGF0ZSAqdmdhLCB1aW50OF90ICpkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYWRkciwgaW50IHdpZHRoKQorIHsKKyAgICAgdWludDMyX3QgKnBhbGV0dGU7CisgICAgIGludCB4OworIAorLSAgICBwYWxldHRlID0gczEtPmxhc3RfcGFsZXR0ZTsKKysgICAgcGFsZXR0ZSA9IHZnYS0+bGFzdF9wYWxldHRlOworICAgICB3aWR0aCA+Pj0gMzsKKyAgICAgZm9yKHggPSAwOyB4IDwgd2lkdGg7IHgrKykgeworLSAgICAgICAgUFVUX1BJWEVMMihkLCAwLCBwYWxldHRlW3NbMF1dKTsKKy0gICAgICAgIFBVVF9QSVhFTDIoZCwgMSwgcGFsZXR0ZVtzWzFdXSk7CistICAgICAgICBQVVRfUElYRUwyKGQsIDIsIHBhbGV0dGVbc1syXV0pOworLSAgICAgICAgUFVUX1BJWEVMMihkLCAzLCBwYWxldHRlW3NbM11dKTsKKysgICAgICAgIFBVVF9QSVhFTDIoZCwgMCwgcGFsZXR0ZVt2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDApXSk7CisrICAgICAgICBQVVRfUElYRUwyKGQsIDEsIHBhbGV0dGVbdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyAxKV0pOworKyAgICAgICAgUFVUX1BJWEVMMihkLCAyLCBwYWxldHRlW3ZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgMildKTsKKysgICAgICAgIFBVVF9QSVhFTDIoZCwgMywgcGFsZXR0ZVt2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDMpXSk7CisgICAgICAgICBkICs9IDMyOworLSAgICAgICAgcyArPSA0OworKyAgICAgICAgYWRkciArPSA0OworICAgICB9CisgfQorIAorQEAgLTI1Niw2MyArMjgyLDYzIEBAIHN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmU4ZDIoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAorICAqCisgICogWFhYOiBhZGQgcGxhbmVfbWFzayBzdXBwb3J0IChuZXZlciB1c2VkIGluIHN0YW5kYXJkIFZHQSBtb2RlcykKKyAgKi8KKy1zdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lOChWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcywgaW50IHdpZHRoKQorK3N0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmU4KFZHQUNvbW1vblN0YXRlICp2Z2EsIHVpbnQ4X3QgKmQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYWRkciwgaW50IHdpZHRoKQorIHsKKyAgICAgdWludDMyX3QgKnBhbGV0dGU7CisgICAgIGludCB4OworIAorLSAgICBwYWxldHRlID0gczEtPmxhc3RfcGFsZXR0ZTsKKysgICAgcGFsZXR0ZSA9IHZnYS0+bGFzdF9wYWxldHRlOworICAgICB3aWR0aCA+Pj0gMzsKKyAgICAgZm9yKHggPSAwOyB4IDwgd2lkdGg7IHgrKykgeworLSAgICAgICAgKCh1aW50MzJfdCAqKWQpWzBdID0gcGFsZXR0ZVtzWzBdXTsKKy0gICAgICAgICgodWludDMyX3QgKilkKVsxXSA9IHBhbGV0dGVbc1sxXV07CistICAgICAgICAoKHVpbnQzMl90ICopZClbMl0gPSBwYWxldHRlW3NbMl1dOworLSAgICAgICAgKCh1aW50MzJfdCAqKWQpWzNdID0gcGFsZXR0ZVtzWzNdXTsKKy0gICAgICAgICgodWludDMyX3QgKilkKVs0XSA9IHBhbGV0dGVbc1s0XV07CistICAgICAgICAoKHVpbnQzMl90ICopZClbNV0gPSBwYWxldHRlW3NbNV1dOworLSAgICAgICAgKCh1aW50MzJfdCAqKWQpWzZdID0gcGFsZXR0ZVtzWzZdXTsKKy0gICAgICAgICgodWludDMyX3QgKilkKVs3XSA9IHBhbGV0dGVbc1s3XV07CisrICAgICAgICAoKHVpbnQzMl90ICopZClbMF0gPSBwYWxldHRlW3ZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgMCldOworKyAgICAgICAgKCh1aW50MzJfdCAqKWQpWzFdID0gcGFsZXR0ZVt2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDEpXTsKKysgICAgICAgICgodWludDMyX3QgKilkKVsyXSA9IHBhbGV0dGVbdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyAyKV07CisrICAgICAgICAoKHVpbnQzMl90ICopZClbM10gPSBwYWxldHRlW3ZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgMyldOworKyAgICAgICAgKCh1aW50MzJfdCAqKWQpWzRdID0gcGFsZXR0ZVt2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDQpXTsKKysgICAgICAgICgodWludDMyX3QgKilkKVs1XSA9IHBhbGV0dGVbdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyA1KV07CisrICAgICAgICAoKHVpbnQzMl90ICopZClbNl0gPSBwYWxldHRlW3ZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgNildOworKyAgICAgICAgKCh1aW50MzJfdCAqKWQpWzddID0gcGFsZXR0ZVt2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDcpXTsKKyAgICAgICAgIGQgKz0gMzI7CistICAgICAgICBzICs9IDg7CisrICAgICAgICBhZGRyICs9IDg7CisgICAgIH0KKyB9CisgCisgLyoKKyAgKiAxNSBiaXQgY29sb3IKKyAgKi8KKy1zdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMTVfbGUoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzLCBpbnQgd2lkdGgpCisrc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTE1X2xlKFZHQUNvbW1vblN0YXRlICp2Z2EsIHVpbnQ4X3QgKmQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFkZHIsIGludCB3aWR0aCkKKyB7CisgICAgIGludCB3OworICAgICB1aW50MzJfdCB2LCByLCBnLCBiOworIAorICAgICB3ID0gd2lkdGg7CisgICAgIGRvIHsKKy0gICAgICAgIHYgPSBsZHV3X2xlX3AoKHZvaWQgKilzKTsKKysgICAgICAgIHYgPSB2Z2FfcmVhZF93b3JkX2xlKHZnYSwgYWRkcik7CisgICAgICAgICByID0gKHYgPj4gNykgJiAweGY4OworICAgICAgICAgZyA9ICh2ID4+IDIpICYgMHhmODsKKyAgICAgICAgIGIgPSAodiA8PCAzKSAmIDB4Zjg7CisgICAgICAgICAoKHVpbnQzMl90ICopZClbMF0gPSByZ2JfdG9fcGl4ZWwzMihyLCBnLCBiKTsKKy0gICAgICAgIHMgKz0gMjsKKysgICAgICAgIGFkZHIgKz0gMjsKKyAgICAgICAgIGQgKz0gNDsKKyAgICAgfSB3aGlsZSAoLS13ICE9IDApOworIH0KKyAKKy1zdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMTVfYmUoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzLCBpbnQgd2lkdGgpCisrc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTE1X2JlKFZHQUNvbW1vblN0YXRlICp2Z2EsIHVpbnQ4X3QgKmQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFkZHIsIGludCB3aWR0aCkKKyB7CisgICAgIGludCB3OworICAgICB1aW50MzJfdCB2LCByLCBnLCBiOworIAorICAgICB3ID0gd2lkdGg7CisgICAgIGRvIHsKKy0gICAgICAgIHYgPSBsZHV3X2JlX3AoKHZvaWQgKilzKTsKKysgICAgICAgIHYgPSB2Z2FfcmVhZF93b3JkX2JlKHZnYSwgYWRkcik7CisgICAgICAgICByID0gKHYgPj4gNykgJiAweGY4OworICAgICAgICAgZyA9ICh2ID4+IDIpICYgMHhmODsKKyAgICAgICAgIGIgPSAodiA8PCAzKSAmIDB4Zjg7CisgICAgICAgICAoKHVpbnQzMl90ICopZClbMF0gPSByZ2JfdG9fcGl4ZWwzMihyLCBnLCBiKTsKKy0gICAgICAgIHMgKz0gMjsKKysgICAgICAgIGFkZHIgKz0gMjsKKyAgICAgICAgIGQgKz0gNDsKKyAgICAgfSB3aGlsZSAoLS13ICE9IDApOworIH0KK0BAIC0zMjAsMzggKzM0NiwzOCBAQCBzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMTVfYmUoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAorIC8qCisgICogMTYgYml0IGNvbG9yCisgICovCistc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTE2X2xlKFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcywgaW50IHdpZHRoKQorK3N0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUxNl9sZShWR0FDb21tb25TdGF0ZSAqdmdhLCB1aW50OF90ICpkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBhZGRyLCBpbnQgd2lkdGgpCisgeworICAgICBpbnQgdzsKKyAgICAgdWludDMyX3QgdiwgciwgZywgYjsKKyAKKyAgICAgdyA9IHdpZHRoOworICAgICBkbyB7CistICAgICAgICB2ID0gbGR1d19sZV9wKCh2b2lkICopcyk7CisrICAgICAgICB2ID0gdmdhX3JlYWRfd29yZF9sZSh2Z2EsIGFkZHIpOworICAgICAgICAgciA9ICh2ID4+IDgpICYgMHhmODsKKyAgICAgICAgIGcgPSAodiA+PiAzKSAmIDB4ZmM7CisgICAgICAgICBiID0gKHYgPDwgMykgJiAweGY4OworICAgICAgICAgKCh1aW50MzJfdCAqKWQpWzBdID0gcmdiX3RvX3BpeGVsMzIociwgZywgYik7CistICAgICAgICBzICs9IDI7CisrICAgICAgICBhZGRyICs9IDI7CisgICAgICAgICBkICs9IDQ7CisgICAgIH0gd2hpbGUgKC0tdyAhPSAwKTsKKyB9CisgCistc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTE2X2JlKFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcywgaW50IHdpZHRoKQorK3N0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUxNl9iZShWR0FDb21tb25TdGF0ZSAqdmdhLCB1aW50OF90ICpkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBhZGRyLCBpbnQgd2lkdGgpCisgeworICAgICBpbnQgdzsKKyAgICAgdWludDMyX3QgdiwgciwgZywgYjsKKyAKKyAgICAgdyA9IHdpZHRoOworICAgICBkbyB7CistICAgICAgICB2ID0gbGR1d19iZV9wKCh2b2lkICopcyk7CisrICAgICAgICB2ID0gdmdhX3JlYWRfd29yZF9iZSh2Z2EsIGFkZHIpOworICAgICAgICAgciA9ICh2ID4+IDgpICYgMHhmODsKKyAgICAgICAgIGcgPSAodiA+PiAzKSAmIDB4ZmM7CisgICAgICAgICBiID0gKHYgPDwgMykgJiAweGY4OworICAgICAgICAgKCh1aW50MzJfdCAqKWQpWzBdID0gcmdiX3RvX3BpeGVsMzIociwgZywgYik7CistICAgICAgICBzICs9IDI7CisrICAgICAgICBhZGRyICs9IDI7CisgICAgICAgICBkICs9IDQ7CisgICAgIH0gd2hpbGUgKC0tdyAhPSAwKTsKKyB9CitAQCAtMzU5LDM2ICszODUsMzYgQEAgc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTE2X2JlKFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKKyAvKgorICAqIDI0IGJpdCBjb2xvcgorICAqLworLXN0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUyNF9sZShWR0FDb21tb25TdGF0ZSAqczEsIHVpbnQ4X3QgKmQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnMsIGludCB3aWR0aCkKKytzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMjRfbGUoVkdBQ29tbW9uU3RhdGUgKnZnYSwgdWludDhfdCAqZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYWRkciwgaW50IHdpZHRoKQorIHsKKyAgICAgaW50IHc7CisgICAgIHVpbnQzMl90IHIsIGcsIGI7CisgCisgICAgIHcgPSB3aWR0aDsKKyAgICAgZG8geworLSAgICAgICAgYiA9IHNbMF07CistICAgICAgICBnID0gc1sxXTsKKy0gICAgICAgIHIgPSBzWzJdOworKyAgICAgICAgYiA9IHZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgMCk7CisrICAgICAgICBnID0gdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyAxKTsKKysgICAgICAgIHIgPSB2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDIpOworICAgICAgICAgKCh1aW50MzJfdCAqKWQpWzBdID0gcmdiX3RvX3BpeGVsMzIociwgZywgYik7CistICAgICAgICBzICs9IDM7CisrICAgICAgICBhZGRyICs9IDM7CisgICAgICAgICBkICs9IDQ7CisgICAgIH0gd2hpbGUgKC0tdyAhPSAwKTsKKyB9CisgCistc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTI0X2JlKFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcywgaW50IHdpZHRoKQorK3N0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUyNF9iZShWR0FDb21tb25TdGF0ZSAqdmdhLCB1aW50OF90ICpkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBhZGRyLCBpbnQgd2lkdGgpCisgeworICAgICBpbnQgdzsKKyAgICAgdWludDMyX3QgciwgZywgYjsKKyAKKyAgICAgdyA9IHdpZHRoOworICAgICBkbyB7CistICAgICAgICByID0gc1swXTsKKy0gICAgICAgIGcgPSBzWzFdOworLSAgICAgICAgYiA9IHNbMl07CisrICAgICAgICByID0gdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyAwKTsKKysgICAgICAgIGcgPSB2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDEpOworKyAgICAgICAgYiA9IHZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgMik7CisgICAgICAgICAoKHVpbnQzMl90ICopZClbMF0gPSByZ2JfdG9fcGl4ZWwzMihyLCBnLCBiKTsKKy0gICAgICAgIHMgKz0gMzsKKysgICAgICAgIGFkZHIgKz0gMzsKKyAgICAgICAgIGQgKz0gNDsKKyAgICAgfSB3aGlsZSAoLS13ICE9IDApOworIH0KK0BAIC0zOTYsNDQgKzQyMiwzNiBAQCBzdGF0aWMgdm9pZCB2Z2FfZHJhd19saW5lMjRfYmUoVkdBQ29tbW9uU3RhdGUgKnMxLCB1aW50OF90ICpkLAorIC8qCisgICogMzIgYml0IGNvbG9yCisgICovCistc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTMyX2xlKFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcywgaW50IHdpZHRoKQorK3N0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUzMl9sZShWR0FDb21tb25TdGF0ZSAqdmdhLCB1aW50OF90ICpkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBhZGRyLCBpbnQgd2lkdGgpCisgeworLSNpZm5kZWYgSE9TVF9XT1JEU19CSUdFTkRJQU4KKy0gICAgbWVtY3B5KGQsIHMsIHdpZHRoICogNCk7CistI2Vsc2UKKyAgICAgaW50IHc7CisgICAgIHVpbnQzMl90IHIsIGcsIGI7CisgCisgICAgIHcgPSB3aWR0aDsKKyAgICAgZG8geworLSAgICAgICAgYiA9IHNbMF07CistICAgICAgICBnID0gc1sxXTsKKy0gICAgICAgIHIgPSBzWzJdOworKyAgICAgICAgYiA9IHZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgMCk7CisrICAgICAgICBnID0gdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyAxKTsKKysgICAgICAgIHIgPSB2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDIpOworICAgICAgICAgKCh1aW50MzJfdCAqKWQpWzBdID0gcmdiX3RvX3BpeGVsMzIociwgZywgYik7CistICAgICAgICBzICs9IDQ7CisrICAgICAgICBhZGRyICs9IDQ7CisgICAgICAgICBkICs9IDQ7CisgICAgIH0gd2hpbGUgKC0tdyAhPSAwKTsKKy0jZW5kaWYKKyB9CisgCistc3RhdGljIHZvaWQgdmdhX2RyYXdfbGluZTMyX2JlKFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcywgaW50IHdpZHRoKQorK3N0YXRpYyB2b2lkIHZnYV9kcmF3X2xpbmUzMl9iZShWR0FDb21tb25TdGF0ZSAqdmdhLCB1aW50OF90ICpkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBhZGRyLCBpbnQgd2lkdGgpCisgeworLSNpZmRlZiBIT1NUX1dPUkRTX0JJR0VORElBTgorLSAgICBtZW1jcHkoZCwgcywgd2lkdGggKiA0KTsKKy0jZWxzZQorICAgICBpbnQgdzsKKyAgICAgdWludDMyX3QgciwgZywgYjsKKyAKKyAgICAgdyA9IHdpZHRoOworICAgICBkbyB7CistICAgICAgICByID0gc1sxXTsKKy0gICAgICAgIGcgPSBzWzJdOworLSAgICAgICAgYiA9IHNbM107CisrICAgICAgICByID0gdmdhX3JlYWRfYnl0ZSh2Z2EsIGFkZHIgKyAxKTsKKysgICAgICAgIGcgPSB2Z2FfcmVhZF9ieXRlKHZnYSwgYWRkciArIDIpOworKyAgICAgICAgYiA9IHZnYV9yZWFkX2J5dGUodmdhLCBhZGRyICsgMyk7CisgICAgICAgICAoKHVpbnQzMl90ICopZClbMF0gPSByZ2JfdG9fcGl4ZWwzMihyLCBnLCBiKTsKKy0gICAgICAgIHMgKz0gNDsKKysgICAgICAgIGFkZHIgKz0gNDsKKyAgICAgICAgIGQgKz0gNDsKKyAgICAgfSB3aGlsZSAoLS13ICE9IDApOworLSNlbmRpZgorIH0KK2RpZmYgLS1naXQgYS9ody9kaXNwbGF5L3ZnYS5jIGIvaHcvZGlzcGxheS92Z2EuYworaW5kZXggYWQ3YTQ2NS4uNmZjOGM4NyAxMDA2NDQKKy0tLSBhL2h3L2Rpc3BsYXkvdmdhLmMKKysrKyBiL2h3L2Rpc3BsYXkvdmdhLmMKK0BAIC0xMDA1LDcgKzEwMDUsNyBAQCB2b2lkIHZnYV9tZW1fd3JpdGViKFZHQUNvbW1vblN0YXRlICpzLCBod2FkZHIgYWRkciwgdWludDMyX3QgdmFsKQorIH0KKyAKKyB0eXBlZGVmIHZvaWQgdmdhX2RyYXdfbGluZV9mdW5jKFZHQUNvbW1vblN0YXRlICpzMSwgdWludDhfdCAqZCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnMsIGludCB3aWR0aCk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBzcmNhZGRyLCBpbnQgd2lkdGgpOworIAorICNpbmNsdWRlICJ2Z2EtaGVscGVycy5oIgorIAorQEAgLTE2NjYsNyArMTY2Niw3IEBAIHN0YXRpYyB2b2lkIHZnYV9kcmF3X2dyYXBoaWMoVkdBQ29tbW9uU3RhdGUgKnMsIGludCBmdWxsX3VwZGF0ZSkKKyAgICAgICAgICAgICBpZiAoeV9zdGFydCA8IDApCisgICAgICAgICAgICAgICAgIHlfc3RhcnQgPSB5OworICAgICAgICAgICAgIGlmICghKGlzX2J1ZmZlcl9zaGFyZWQoc3VyZmFjZSkpKSB7CistICAgICAgICAgICAgICAgIHZnYV9kcmF3X2xpbmUocywgZCwgcy0+dnJhbV9wdHIgKyBhZGRyLCB3aWR0aCk7CisrICAgICAgICAgICAgICAgIHZnYV9kcmF3X2xpbmUocywgZCwgYWRkciwgd2lkdGgpOworICAgICAgICAgICAgICAgICBpZiAocy0+Y3Vyc29yX2RyYXdfbGluZSkKKyAgICAgICAgICAgICAgICAgICAgIHMtPmN1cnNvcl9kcmF3X2xpbmUocywgZCwgeSk7CisgICAgICAgICAgICAgfQorQEAgLTIxNzAsNiArMjE3MCw3IEBAIHZvaWQgdmdhX2NvbW1vbl9pbml0KFZHQUNvbW1vblN0YXRlICpzLCBPYmplY3QgKm9iaiwgYm9vbCBnbG9iYWxfdm1zdGF0ZSkKKyAgICAgaWYgKCFzLT52YmVfc2l6ZSkgeworICAgICAgICAgcy0+dmJlX3NpemUgPSBzLT52cmFtX3NpemU7CisgICAgIH0KKysgICAgcy0+dmJlX3NpemVfbWFzayA9IHMtPnZiZV9zaXplIC0gMTsKKyAKKyAgICAgcy0+aXNfdmJlX3Ztc3RhdGUgPSAxOworICAgICBtZW1vcnlfcmVnaW9uX2luaXRfcmFtX25vbWlncmF0ZSgmcy0+dnJhbSwgb2JqLCAidmdhLnZyYW0iLCBzLT52cmFtX3NpemUsCitkaWZmIC0tZ2l0IGEvaHcvZGlzcGxheS92Z2FfaW50LmggYi9ody9kaXNwbGF5L3ZnYV9pbnQuaAoraW5kZXggZGQ2Yzk1OC4uYWQzNGExZiAxMDA2NDQKKy0tLSBhL2h3L2Rpc3BsYXkvdmdhX2ludC5oCisrKysgYi9ody9kaXNwbGF5L3ZnYV9pbnQuaAorQEAgLTk0LDYgKzk0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgVkdBQ29tbW9uU3RhdGUgeworICAgICB1aW50MzJfdCB2cmFtX3NpemU7CisgICAgIHVpbnQzMl90IHZyYW1fc2l6ZV9tYjsgLyogcHJvcGVydHkgKi8KKyAgICAgdWludDMyX3QgdmJlX3NpemU7CisrICAgIHVpbnQzMl90IHZiZV9zaXplX21hc2s7CisgICAgIHVpbnQzMl90IGxhdGNoOworICAgICBib29sIGhhc19jaGFpbjRfYWxpYXM7CisgICAgIE1lbW9yeVJlZ2lvbiBjaGFpbjRfYWxpYXM7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDE3LTEzNjczLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTctMTM2NzMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2QwNjk1ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDE3LTEzNjczLnBhdGNoCkBAIC0wLDAgKzEsNTMgQEAKK0Zyb20gZTY1Mjk0MTU3ZDRiNjkzOTNiM2Y4MTljOTlmNGY2NDc0NTJiNDhlMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEdlcmQgSG9mZm1hbm4gPGtyYXhlbEByZWRoYXQuY29tPgorRGF0ZTogTW9uLCAyOCBBdWcgMjAxNyAxNDozMzowNyArMDIwMAorU3ViamVjdDogW1BBVENIXSB2Z2E6IGZpeCBkaXNwbGF5IHVwZGF0ZSByZWdpb24gY2FsY3VsYXRpb24gKHNwbGl0IHNjcmVlbikKKwordmdhIGRpc3BsYXkgdXBkYXRlIG1pcy1jYWxjdWxhdGVkIHRoZSByZWdpb24gZm9yIHRoZSBkaXJ0eSBiaXRtYXAKK3NuYXBzaG90IGluIGNhc2Ugc3BsaXQgc2NyZWVuIG1vZGUgaXMgdXNlZC4gIFRoaXMgY2FuIHRyaWdnZXIgYW4KK2Fzc2VydCBpbiBjcHVfcGh5c2ljYWxfbWVtb3J5X3NuYXBzaG90X2dldF9kaXJ0eSgpLgorCitJbXBhY3Q6ICBEb1MgZm9yIHByaXZpbGVnZWQgZ3Vlc3QgdXNlcnMuCisKK0ZpeGVzOiBDVkUtMjAxNy0xMzY3MworRml4ZXM6IGZlYzVlOGM5MmJlY2FkMjIzZGY5ZDk3Mjc3MDUyMmY2NGFhZmRiNzIKK0NjOiBQIEogUCA8cHBhbmRpdEByZWRoYXQuY29tPgorUmVwb3J0ZWQtYnk6IERhdmlkIEJ1Y2hhbmFuIDxkQHZpZGJ1Y2hhbmFuLmNvLnVrPgorU2lnbmVkLW9mZi1ieTogR2VyZCBIb2ZmbWFubiA8a3JheGVsQHJlZGhhdC5jb20+CitNZXNzYWdlLWlkOiAyMDE3MDgyODEyMzMwNy4xNTM5Mi0xLWtyYXhlbEByZWRoYXQuY29tCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1todHRwczovL2dpdC5xZW11Lm9yZy8/cD1xZW11LmdpdDthPWNvbW1pdDtoPWU2NTI5NDE1N2Q0YjY5MzkzYjNmODE5Yzk5ZjRmNjQ3NDUyYjQ4ZTNdCisKK0NWRTogQ1ZFLTIwMTctMTM2NzMKKworU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgorLS0tCisgaHcvZGlzcGxheS92Z2EuYyB8IDEwICsrKysrKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvaHcvZGlzcGxheS92Z2EuYyBiL2h3L2Rpc3BsYXkvdmdhLmMKK2luZGV4IDM0MzMxMDIuLmFkN2E0NjUgMTAwNjQ0CistLS0gYS9ody9kaXNwbGF5L3ZnYS5jCisrKysgYi9ody9kaXNwbGF5L3ZnYS5jCitAQCAtMTYyOCw5ICsxNjI4LDE1IEBAIHN0YXRpYyB2b2lkIHZnYV9kcmF3X2dyYXBoaWMoVkdBQ29tbW9uU3RhdGUgKnMsIGludCBmdWxsX3VwZGF0ZSkKKyAgICAgeTEgPSAwOworIAorICAgICBpZiAoIWZ1bGxfdXBkYXRlKSB7CisrICAgICAgICByYW1fYWRkcl90IHJlZ2lvbl9zdGFydCA9IGFkZHIxOworKyAgICAgICAgcmFtX2FkZHJfdCByZWdpb25fZW5kID0gYWRkcjEgKyBsaW5lX29mZnNldCAqIGhlaWdodDsKKyAgICAgICAgIHZnYV9zeW5jX2RpcnR5X2JpdG1hcChzKTsKKy0gICAgICAgIHNuYXAgPSBtZW1vcnlfcmVnaW9uX3NuYXBzaG90X2FuZF9jbGVhcl9kaXJ0eSgmcy0+dnJhbSwgYWRkcjEsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZV9vZmZzZXQgKiBoZWlnaHQsCisrICAgICAgICBpZiAocy0+bGluZV9jb21wYXJlIDwgaGVpZ2h0KSB7CisrICAgICAgICAgICAgLyogc3BsaXQgc2NyZWVuIG1vZGUgKi8KKysgICAgICAgICAgICByZWdpb25fc3RhcnQgPSAwOworKyAgICAgICAgfQorKyAgICAgICAgc25hcCA9IG1lbW9yeV9yZWdpb25fc25hcHNob3RfYW5kX2NsZWFyX2RpcnR5KCZzLT52cmFtLCByZWdpb25fc3RhcnQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaW9uX2VuZCAtIHJlZ2lvbl9zdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBESVJUWV9NRU1PUllfVkdBKTsKKyAgICAgfQorIAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxNy0xMzcxMS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDE3LTEzNzExLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1MmY3M2YKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxNy0xMzcxMS5wYXRjaApAQCAtMCwwICsxLDg3IEBACitGcm9tIDEyMDFkMzA4NTE5ZjFlOTE1ODY2ZDc1ODNkNTEzNmQwM2NjMWQzODQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBTYW11ZWwgVGhpYmF1bHQgPHNhbXVlbC50aGliYXVsdEBlbnMtbHlvbi5vcmc+CitEYXRlOiBGcmksIDI1IEF1ZyAyMDE3IDAxOjM1OjUzICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIHNsaXJwOiBmaXggY2xlYXJpbmcgaWZxX3NvIGZyb20gcGVuZGluZyBwYWNrZXRzCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK1RoZSBpZl9mYXN0cSBhbmQgaWZfYmF0Y2hxIGNvbnRhaW4gbm90IG9ubHkgcGFja2V0cywgYnV0IHF1ZXVlcyBvZiBwYWNrZXRzCitmb3IgdGhlIHNhbWUgc29ja2V0LiBXaGVuIHNvZnJlZSBmcmVlcyBhIHNvY2tldCwgaXQgdGh1cyBoYXMgdG8gY2xlYXIgaWZxX3NvCitmcm9tIGFsbCB0aGUgcGFja2V0cyBmcm9tIHRoZSBxdWV1ZXMsIG5vdCBvbmx5IHRoZSBmaXJzdC4KKworU2lnbmVkLW9mZi1ieTogU2FtdWVsIFRoaWJhdWx0IDxzYW11ZWwudGhpYmF1bHRAZW5zLWx5b24ub3JnPgorUmV2aWV3ZWQtYnk6IFBoaWxpcHBlIE1hdGhpZXUtRGF1ZMOpIDxmNGJ1Z0BhbXNhdC5vcmc+CitDYzogcWVtdS1zdGFibGVAbm9uZ251Lm9yZworU2lnbmVkLW9mZi1ieTogUGV0ZXIgTWF5ZGVsbCA8cGV0ZXIubWF5ZGVsbEBsaW5hcm8ub3JnPgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitbaHR0cHM6Ly9naXQucWVtdS5vcmcvP3A9cWVtdS5naXQ7YT1jb21taXQ7aD0xMjAxZDMwODUxOWYxZTkxNTg2NmQ3NTgzZDUxMzZkMDNjYzFkMzg0XQorCitDVkU6IENWRS0yMDE3LTEzNzExCisKK1NpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KKy0tLQorIHNsaXJwL3NvY2tldC5jIHwgMzkgKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDIzIGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc2xpcnAvc29ja2V0LmMgYi9zbGlycC9zb2NrZXQuYworaW5kZXggZWNlYzAyOS4uY2I3YjViNiAxMDA2NDQKKy0tLSBhL3NsaXJwL3NvY2tldC5jCisrKysgYi9zbGlycC9zb2NrZXQuYworQEAgLTYwLDI5ICs2MCwzNiBAQCBzb2NyZWF0ZShTbGlycCAqc2xpcnApCisgfQorIAorIC8qCisrICogUmVtb3ZlIHJlZmVyZW5jZXMgdG8gc28gZnJvbSB0aGUgZ2l2ZW4gbWVzc2FnZSBxdWV1ZS4KKysgKi8KKytzdGF0aWMgdm9pZAorK3NvcWZyZWUoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBxdWVoZWFkICpxaCkKKyt7CisrICAgIHN0cnVjdCBtYnVmICppZnE7CisrCisrICAgIGZvciAoaWZxID0gKHN0cnVjdCBtYnVmICopIHFoLT5xaF9saW5rOworKyAgICAgICAgICAgICAoc3RydWN0IHF1ZWhlYWQgKikgaWZxICE9IHFoOworKyAgICAgICAgICAgICBpZnEgPSBpZnEtPmlmcV9uZXh0KSB7CisrICAgICAgICBpZiAoaWZxLT5pZnFfc28gPT0gc28pIHsKKysgICAgICAgICAgICBzdHJ1Y3QgbWJ1ZiAqaWZtOworKyAgICAgICAgICAgIGlmcS0+aWZxX3NvID0gTlVMTDsKKysgICAgICAgICAgICBmb3IgKGlmbSA9IGlmcS0+aWZzX25leHQ7IGlmbSAhPSBpZnE7IGlmbSA9IGlmbS0+aWZzX25leHQpIHsKKysgICAgICAgICAgICAgICAgaWZtLT5pZnFfc28gPSBOVUxMOworKyAgICAgICAgICAgIH0KKysgICAgICAgIH0KKysgICAgfQorK30KKysKKysvKgorICAqIHJlbXF1ZSBhbmQgZnJlZSBhIHNvY2tldCwgY2xvYmJlciBjYWNoZQorICAqLworIHZvaWQKKyBzb2ZyZWUoc3RydWN0IHNvY2tldCAqc28pCisgeworICAgU2xpcnAgKnNsaXJwID0gc28tPnNsaXJwOworLSAgc3RydWN0IG1idWYgKmlmbTsKKyAKKy0gIGZvciAoaWZtID0gKHN0cnVjdCBtYnVmICopIHNsaXJwLT5pZl9mYXN0cS5xaF9saW5rOworLSAgICAgICAoc3RydWN0IHF1ZWhlYWQgKikgaWZtICE9ICZzbGlycC0+aWZfZmFzdHE7CistICAgICAgIGlmbSA9IGlmbS0+aWZxX25leHQpIHsKKy0gICAgaWYgKGlmbS0+aWZxX3NvID09IHNvKSB7CistICAgICAgaWZtLT5pZnFfc28gPSBOVUxMOworLSAgICB9CistICB9CistCistICBmb3IgKGlmbSA9IChzdHJ1Y3QgbWJ1ZiAqKSBzbGlycC0+aWZfYmF0Y2hxLnFoX2xpbms7CistICAgICAgIChzdHJ1Y3QgcXVlaGVhZCAqKSBpZm0gIT0gJnNsaXJwLT5pZl9iYXRjaHE7CistICAgICAgIGlmbSA9IGlmbS0+aWZxX25leHQpIHsKKy0gICAgaWYgKGlmbS0+aWZxX3NvID09IHNvKSB7CistICAgICAgaWZtLT5pZnFfc28gPSBOVUxMOworLSAgICB9CistICB9CisrICBzb3FmcmVlKHNvLCAmc2xpcnAtPmlmX2Zhc3RxKTsKKysgIHNvcWZyZWUoc28sICZzbGlycC0+aWZfYmF0Y2hxKTsKKyAKKyAgIGlmIChzby0+c29fZW11PT1FTVVfUlNIICYmIHNvLT5leHRyYSkgeworIAlzb2ZyZWUoc28tPmV4dHJhKTsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTctMTQxNjcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxNy0xNDE2Ny5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjlhZDg3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTctMTQxNjcucGF0Y2gKQEAgLTAsMCArMSw3MCBAQAorRnJvbSBlZDRmODZlOGI2ZWZmOGU2MDBjNjlhZGVlNjhjN2NkMzRkZDJjY2NiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUHJhc2FkIEogUGFuZGl0IDxwanBAZmVkb3JhcHJvamVjdC5vcmc+CitEYXRlOiBUaHUsIDcgU2VwIDIwMTcgMTI6MDI6NTYgKzA1MzAKK1N1YmplY3Q6IFtQQVRDSF0gbXVsdGlib290OiB2YWxpZGF0ZSBtdWx0aWJvb3QgaGVhZGVyIGFkZHJlc3MgdmFsdWVzCisKK1doaWxlIGxvYWRpbmcga2VybmVsIHZpYSBtdWx0aWJvb3QtdjEgaW1hZ2UsIChmbGFncyAmIDB4MDAwMTAwMDApCitpbmRpY2F0ZXMgdGhhdCBtdWx0aWJvb3QgaGVhZGVyIGNvbnRhaW5zIHZhbGlkIGFkZHJlc3NlcyB0byBsb2FkCit0aGUga2VybmVsIGltYWdlLiBUaGVzZSBhZGRyZXNzZXMgYXJlIHVzZWQgdG8gY29tcHV0ZSBrZXJuZWwKK3NpemUgYW5kIGtlcm5lbCB0ZXh0IG9mZnNldCBpbiB0aGUgT1MgaW1hZ2UuIFZhbGlkYXRlIHRoZXNlCithZGRyZXNzIHZhbHVlcyB0byBhdm9pZCBhbiBPT0IgYWNjZXNzIGlzc3VlLgorCitUaGlzIGlzIENWRS0yMDE3LTE0MTY3LgorCitSZXBvcnRlZC1ieTogVGhvbWFzIEdhcm5pZXIgPHRoZ2FybmllQGdvb2dsZS5jb20+CitTaWduZWQtb2ZmLWJ5OiBQcmFzYWQgSiBQYW5kaXQgPHBqcEBmZWRvcmFwcm9qZWN0Lm9yZz4KK01lc3NhZ2UtSWQ6IDwyMDE3MDkwNzA2MzI1Ni43NDE4LTEtcHBhbmRpdEByZWRoYXQuY29tPgorU2lnbmVkLW9mZi1ieTogUGFvbG8gQm9uemluaSA8cGJvbnppbmlAcmVkaGF0LmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorW2h0dHBzOi8vZ2l0LnFlbXUub3JnLz9wPXFlbXUuZ2l0O2E9Y29tbWl0O2g9ZWQ0Zjg2ZThiNmVmZjhlNjAwYzY5YWRlZTY4YzdjZDM0ZGQyY2NjYl0KKworQ1ZFOiBDVkUtMjAxNy0xNDE2NworCitTaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CistLS0KKyBody9pMzg2L211bHRpYm9vdC5jIHwgMTkgKysrKysrKysrKysrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9ody9pMzg2L211bHRpYm9vdC5jIGIvaHcvaTM4Ni9tdWx0aWJvb3QuYworaW5kZXggNjAwMWY0Yy4uYzdiNzBjOSAxMDA2NDQKKy0tLSBhL2h3L2kzODYvbXVsdGlib290LmMKKysrKyBiL2h3L2kzODYvbXVsdGlib290LmMKK0BAIC0yMjEsMTUgKzIyMSwzNCBAQCBpbnQgbG9hZF9tdWx0aWJvb3QoRldDZmdTdGF0ZSAqZndfY2ZnLAorICAgICAgICAgdWludDMyX3QgbWhfaGVhZGVyX2FkZHIgPSBsZGxfcChoZWFkZXIraSsxMik7CisgICAgICAgICB1aW50MzJfdCBtaF9sb2FkX2VuZF9hZGRyID0gbGRsX3AoaGVhZGVyK2krMjApOworICAgICAgICAgdWludDMyX3QgbWhfYnNzX2VuZF9hZGRyID0gbGRsX3AoaGVhZGVyK2krMjQpOworKworICAgICAgICAgbWhfbG9hZF9hZGRyID0gbGRsX3AoaGVhZGVyK2krMTYpOworKyAgICAgICAgaWYgKG1oX2hlYWRlcl9hZGRyIDwgbWhfbG9hZF9hZGRyKSB7CisrICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJpbnZhbGlkIG1oX2xvYWRfYWRkciBhZGRyZXNzXG4iKTsKKysgICAgICAgICAgICBleGl0KDEpOworKyAgICAgICAgfQorKworICAgICAgICAgdWludDMyX3QgbWJfa2VybmVsX3RleHRfb2Zmc2V0ID0gaSAtIChtaF9oZWFkZXJfYWRkciAtIG1oX2xvYWRfYWRkcik7CisgICAgICAgICB1aW50MzJfdCBtYl9sb2FkX3NpemUgPSAwOworICAgICAgICAgbWhfZW50cnlfYWRkciA9IGxkbF9wKGhlYWRlcitpKzI4KTsKKyAKKyAgICAgICAgIGlmIChtaF9sb2FkX2VuZF9hZGRyKSB7CisrICAgICAgICAgICAgaWYgKG1oX2Jzc19lbmRfYWRkciA8IG1oX2xvYWRfYWRkcikgeworKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImludmFsaWQgbWhfYnNzX2VuZF9hZGRyIGFkZHJlc3NcbiIpOworKyAgICAgICAgICAgICAgICBleGl0KDEpOworKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICBtYl9rZXJuZWxfc2l6ZSA9IG1oX2Jzc19lbmRfYWRkciAtIG1oX2xvYWRfYWRkcjsKKysKKysgICAgICAgICAgICBpZiAobWhfbG9hZF9lbmRfYWRkciA8IG1oX2xvYWRfYWRkcikgeworKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImludmFsaWQgbWhfbG9hZF9lbmRfYWRkciBhZGRyZXNzXG4iKTsKKysgICAgICAgICAgICAgICAgZXhpdCgxKTsKKysgICAgICAgICAgICB9CisgICAgICAgICAgICAgbWJfbG9hZF9zaXplID0gbWhfbG9hZF9lbmRfYWRkciAtIG1oX2xvYWRfYWRkcjsKKyAgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgaWYgKGtlcm5lbF9maWxlX3NpemUgPCBtYl9rZXJuZWxfdGV4dF9vZmZzZXQpIHsKKysgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJpbnZhbGlkIGtlcm5lbF9maWxlX3NpemVcbiIpOworKyAgICAgICAgICAgICAgICBleGl0KDEpOworKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICBtYl9rZXJuZWxfc2l6ZSA9IGtlcm5lbF9maWxlX3NpemUgLSBtYl9rZXJuZWxfdGV4dF9vZmZzZXQ7CisgICAgICAgICAgICAgbWJfbG9hZF9zaXplID0gbWJfa2VybmVsX3NpemU7CisgICAgICAgICB9CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L2FkZC1wdGVzdC1pbi1tYWtlZmlsZS12MTAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9hZGQtcHRlc3QtaW4tbWFrZWZpbGUtdjEwLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5NjM5ODIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9hZGQtcHRlc3QtaW4tbWFrZWZpbGUtdjEwLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gNDIwMWE1NzkxZmM0Nzk4YTQ1YTliOWY4ODE2MDJkN2JhY2I3NGVkMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEp1cm8gQnlzdHJpY2t5IDxqdXJvLmJ5c3RyaWNreUBpbnRlbC5jb20+CitEYXRlOiBUaHUsIDMxIEF1ZyAyMDE3IDExOjA2OjU2IC0wNzAwCitTdWJqZWN0OiBBZGQgc3VicGFja2FnZSAtcHRlc3Qgd2hpY2ggcnVucyBhbGwgdW5pdCB0ZXN0IGNhc2VzIGZvciBxZW11LgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CisKK1NpZ25lZC1vZmYtYnk6IEp1cm8gQnlzdHJpY2t5IDxqdXJvLmJ5c3RyaWNreUBpbnRlbC5jb20+CisKK2RpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5pbmNsdWRlIGIvdGVzdHMvTWFrZWZpbGUuaW5jbHVkZQoraW5kZXggZjA4Yjc0MS4uM2QxYjNlOSAxMDA2NDQKKy0tLSBhL3Rlc3RzL01ha2VmaWxlLmluY2x1ZGUKKysrKyBiL3Rlc3RzL01ha2VmaWxlLmluY2x1ZGUKK0BAIC05MjQsNCArOTI0LDEyIEBAIGFsbDogJChRRU1VX0lPVEVTVFNfSEVMUEVSUy15KQorIC1pbmNsdWRlICQod2lsZGNhcmQgdGVzdHMvKi5kKQorIC1pbmNsdWRlICQod2lsZGNhcmQgdGVzdHMvbGlicW9zLyouZCkKKyAKKytidWlsZHRlc3QtVEVTVFM6ICQoY2hlY2stdW5pdC15KQorKworK3J1bnRlc3QtVEVTVFM6CisrCWZvciBmIGluICQoY2hlY2stdW5pdC15KTsgZG8gXAorKwkJbmY9JCQoZWNobyAkJGYgfCBzZWQgJ3MvdGVzdHNcLy9cLlwvL2cnKTsgXAorKwkJJCRuZjsgXAorKwlkb25lCisrCisgZW5kaWYKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L2FkZC1wdGVzdC1pbi1tYWtlZmlsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L2FkZC1wdGVzdC1pbi1tYWtlZmlsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmNlMzQ3OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9hZGQtcHRlc3QtaW4tbWFrZWZpbGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotQWRkIHN1YnBhY2thZ2UgLXB0ZXN0IHdoaWNoIHJ1bnMgYWxsIHVuaXQgdGVzdCBjYXNlcyBmb3IgcWVtdS4KLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSB0ZXN0cy9NYWtlZmlsZS5pbmNsdWRlIHwgOCArKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLmluY2x1ZGUgYi90ZXN0cy9NYWtlZmlsZS5pbmNsdWRlCi1pbmRleCAxNGJlNDkxLi4wZmNlMzdhIDEwMDY0NAotLS0tIGEvdGVzdHMvTWFrZWZpbGUuaW5jbHVkZQotKysrIGIvdGVzdHMvTWFrZWZpbGUuaW5jbHVkZQotQEAgLTc3NiwzICs3NzYsMTEgQEAgYWxsOiAkKFFFTVVfSU9URVNUU19IRUxQRVJTLXkpCi0gCi0gLWluY2x1ZGUgJCh3aWxkY2FyZCB0ZXN0cy8qLmQpCi0gLWluY2x1ZGUgJCh3aWxkY2FyZCB0ZXN0cy9saWJxb3MvKi5kKQotKwotK2J1aWxkdGVzdC1URVNUUzogJChjaGVjay11bml0LXkpCi0rCi0rcnVudGVzdC1URVNUUzoKLSsJZm9yIGYgaW4gJChjaGVjay11bml0LXkpOyBkbyBcCi0rCQluZj0kJChlY2hvICQkZiB8IHNlZCAncy90ZXN0c1wvL1wuXC8vZycpOyBcCi0rCQkkJG5mOyBcCi0rCWRvbmUKLS0tIAotMi45LjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvYXBpYy1maXh1cC1mYWxsdGhyb3VnaC10by1QSUMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9hcGljLWZpeHVwLWZhbGx0aHJvdWdoLXRvLVBJQy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YmJiYzZmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvYXBpYy1maXh1cC1mYWxsdGhyb3VnaC10by1QSUMucGF0Y2gKQEAgLTAsMCArMSw0NiBAQAorRnJvbSBiZWY5M2JiODE1ODhiNTMyM2E1MmQyZTE4ODZmMmE3N2I2NGE5NzZiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWFyayBBc3NlbHN0aW5lIDxtYXJrLmFzc2Vsc3RpbmVAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgMjYgRmViIDIwMTMgMTE6NDM6MjggLTA1MDAKK1N1YmplY3Q6IFtQQVRDSCAwMy8xOF0gYXBpYzogZml4dXAgZmFsbHRocm91Z2ggdG8gUElDCisKK0NvbW1pdCAwZTIxZTEyYmIzMTFjNGMxMDk1ZDAyNjlkYzJlZjgxMTk2Y2NiNjBhIFtEb24ndCByb3V0ZSBQSUMKK2ludGVycnVwdHMgdGhyb3VnaCB0aGUgbG9jYWwgQVBJQyBpZiB0aGUgbG9jYWwgQVBJQyBjb25maWcgc2F5cyBzby5dCittaXNzZWQgYSBjaGVjayB0byBlbnN1cmUgdGhlIGxvY2FsIEFQSUMgaXMgZW5hYmxlZC4gU2luY2UgaWYgdGhlIGxvY2FsCitBUElDIGlzIGRpc2FibGVkIGl0IGRvZXNuJ3QgbWF0dGVyIHdoYXQgdGhlIGxvY2FsIEFQSUMgY29uZmlnIHNheXMuCisKK0lmIHRoaXMgY2hlY2sgaXNuJ3QgZG9uZSBhbmQgdGhlIGd1ZXN0IGhhcyBkaXNhYmxlZCB0aGUgbG9jYWwgQVBJQyB0aGUKK2d1ZXN0IHdpbGwgcmVjZWl2ZSBhIGdlbmVyYWwgcHJvdGVjdGlvbiBmYXVsdCwgc2ltaWxhciB0byB3aGF0IGlzIHNlZW4KK2hlcmU6CisKK2h0dHBzOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvcWVtdS1kZXZlbC8yMDEyLTEyL21zZzAyMzA0Lmh0bWwKKworVGhlIEdQRiBpcyBjYXVzZWQgYnkgYW4gYXR0ZW1wdCB0byBzZXJ2aWNlIGludGVycnVwdCAweGZmZmZmZmZmLiBUaGlzCitjb21lcyBhYm91dCBzaW5jZSBjcHVfZ2V0X3BpY19pbnRlcnJ1cHQoKSBjYWxscyBhcGljX2FjY2VwdF9waWNfaW50cigpCisod2l0aCB0aGUgbG9jYWwgQVBJQyBkaXNhYmxlZCBhcGljX2dldF9pbnRlcnJ1cHQoKSByZXR1cm5zIC0xKS4KK2FwaWNfYWNjZXB0X3BpY19pbnRyKCkgcmV0dXJucyAwIGFuZCB0aHVzIHRoZSBpbnRlcnJ1cHQgbnVtYmVyIHdoaWNoCitpcyByZXR1cm5lZCBmcm9tIGNwdV9nZXRfcGljX2ludGVycnVwdCgpLCBhbmQgd2hpY2ggaXMgYXR0ZW1wdGVkIHRvIGJlCitzZXJ2aWNlZCwgaXMgLTEuCisKK1NpZ25lZC1vZmYtYnk6IE1hcmsgQXNzZWxzdGluZSA8bWFyay5hc3NlbHN0aW5lQHdpbmRyaXZlci5jb20+CitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9xZW11LWRldmVsLzIwMTMtMDQvbXNnMDA4NzguaHRtbF0KK1NpZ25lZC1vZmYtYnk6IEhlIFpoZSA8emhlLmhlQHdpbmRyaXZlci5jb20+CistLS0KKyBody9pbnRjL2FwaWMuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2h3L2ludGMvYXBpYy5jIGIvaHcvaW50Yy9hcGljLmMKK2luZGV4IDQ1ODg3ZDk5Li5jNWFlNDA4NyAxMDA2NDQKKy0tLSBhL2h3L2ludGMvYXBpYy5jCisrKysgYi9ody9pbnRjL2FwaWMuYworQEAgLTU4Nyw3ICs1ODcsNyBAQCBpbnQgYXBpY19hY2NlcHRfcGljX2ludHIoRGV2aWNlU3RhdGUgKmRldikKKyAgICAgQVBJQ0NvbW1vblN0YXRlICpzID0gQVBJQ19DT01NT04oZGV2KTsKKyAgICAgdWludDMyX3QgbHZ0MDsKKyAKKy0gICAgaWYgKCFzKQorKyAgICBpZiAoIXMgfHwgIShzLT5zcHVyaW91c192ZWMgJiBBUElDX1NWX0VOQUJMRSkpCisgICAgICAgICByZXR1cm4gLTE7CisgCisgICAgIGx2dDAgPSBzLT5sdnRbQVBJQ19MVlRfTElOVDBdOworLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvY29uZmlndXJlLWZpeC1EYXJ3aW4tdGFyZ2V0LWRldGVjdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L2NvbmZpZ3VyZS1maXgtRGFyd2luLXRhcmdldC1kZXRlY3Rpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5Y2RjMWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvY29uZmlndXJlLWZpeC1EYXJ3aW4tdGFyZ2V0LWRldGVjdGlvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogQ3Jpc3RpYW4gSW9yZ2EgPGNyaXN0aWFuLmlvcmdhQGludGVsLmNvbT4KLQotRnJvbSA5YWMwOTZkOGVjY2YyZDU2ZWNlNjQ2MzIwYzI4MmM4MzY5ZjgzMzdjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ3Jpc3RpYW4gSW9yZ2EgPGNyaXN0aWFuLmlvcmdhQGludGVsLmNvbT4KLURhdGU6IFR1ZSwgMjkgSnVsIDIwMTQgMTg6MzU6NTkgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlOiBmaXggRGFyd2luIHRhcmdldCBkZXRlY3Rpb24KLQotZml4IERhcndpbiB0YXJnZXQgZGV0ZWN0aW9uIGZvciBxZW11Ci1jcm9zcy1jb21waWxhdGlvbi4KLQotU2lnbmVkLW9mZi1ieTogQ3Jpc3RpYW4gSW9yZ2EgPGNyaXN0aWFuLmlvcmdhQGludGVsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZSB8IDIgKysKLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKLWluZGV4IDI4M2M3MWMuLjFjNjZhMTEgMTAwNzU1Ci0tLS0gYS9jb25maWd1cmUKLSsrKyBiL2NvbmZpZ3VyZQotQEAgLTQ0NCw2ICs0NDQsOCBAQCBlbGlmIGNoZWNrX2RlZmluZSBfX3N1bl9fIDsgdGhlbgotICAgdGFyZ2V0b3M9J1N1bk9TJwotIGVsaWYgY2hlY2tfZGVmaW5lIF9fSEFJS1VfXyA7IHRoZW4KLSAgIHRhcmdldG9zPSdIYWlrdScKLStlbGlmIGNoZWNrX2RlZmluZSBfX0FQUExFX18gOyB0aGVuCi0rICB0YXJnZXRvcz0nRGFyd2luJwotIGVsc2UKLSAgIHRhcmdldG9zPWB1bmFtZSAtc2AKLSBmaQotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9wcGNfbG9ja2luZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L3BwY19sb2NraW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmNzIyNDMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9wcGNfbG9ja2luZy5wYXRjaApAQCAtMCwwICsxLDEwNSBAQAorSSd2ZSB0cmFja2VkIGRvd24gd2hhdCBJIHRoaW5rIGlzIGEgcHJvYmxlbSBjYXVzaW5nIHFlbXUtc3lzdGVtLXBwYwordG8gaGFuZyB3aGlsc3QgYm9vdGluZyBpbWFnZXMuCisKK0kgYmVsaWV2ZSB0aGUgZGVjcmVtZW50ZXIgdGltZXIgc3RvcHMgcmVjZWl2aW5nIGludGVycnVwdHMgc28KK3Rhc2tzIGluIG91ciBpbWFnZXMgaGFuZyBpbmRlZmluaXRlbHkgYXMgdGhlIHRpbWVyIHN0b3BwZWQuIAorCitJdCBjYW4gYmUgc3VtbWVkIHVwIHdpdGggdGhpcyBsaW5lIG9mIGRlYnVnOgorCitwcGNfc2V0X2lycTogMHg1NWI0ZTBkNTYyZjAgbl9JUlEgOCBsZXZlbCAxID0+IHBlbmRpbmcgMDAwMDAxMDByZXEgMDAwMDAwMDQKKworSXQgc2hvdWxkIG5vcm1hbGx5IHJlYWQ6CisKK3BwY19zZXRfaXJxOiAweDU1YjRlMGQ1NjJmMCBuX0lSUSA4IGxldmVsIDEgPT4gcGVuZGluZyAwMDAwMDEwMHJlcSAwMDAwMDAwMgorCitUaGUgcXVlc3Rpb24gaXMgd2h5IENQVV9JTlRFUlJVUFRfRVhJVFRCIGVuZHMgdXAgYmVpbmcgc2V0IHdoZW4gdGhlCitsaW5lcyBhYm92ZSB0aGlzIGxvZyBtZXNzYWdlIGNsZWFybHkgc2V0cyBDUFVfSU5URVJSVVBUX0hBUkQgKHZpYSAKK2NwdV9pbnRlcnJ1cHQoKSApLgorCitJIG5vdGUgaW4gY3B1Lmg6CisKKyAgICAvKiB1cGRhdGVzIHByb3RlY3RlZCBieSBCUUwgKi8KKyAgICB1aW50MzJfdCBpbnRlcnJ1cHRfcmVxdWVzdDsKKworKGZvciBzdHJ1Y3QgQ1BVU3RhdGUpCisKK1RoZSBwcGMgY29kZSBkb2VzICJjcy0+aW50ZXJydXB0X3JlcXVlc3QgfD0gQ1BVX0lOVEVSUlVQVF9FWElUVEIiIGluIDUKK3BsYWNlcywgMyBpbiBleGNwX2hlbHBlci5jIGFuZCAyIGluIGhlbHBlcl9yZWdzLmguIEluIGFsbCBjYXNlcywgIAorZ19hc3NlcnQocWVtdV9tdXRleF9pb3RocmVhZF9sb2NrZWQoKSk7IGZhaWxzLiBJZiBJIGRvIHNvbWV0aGluZyBsaWtlOgorCitpZiAoIXFlbXVfbXV0ZXhfaW90aHJlYWRfbG9ja2VkKCkpIHsKKyAgICBxZW11X211dGV4X2xvY2tfaW90aHJlYWQoKTsKKyAgICBjcHVfaW50ZXJydXB0KGNzLCBDUFVfSU5URVJSVVBUX0VYSVRUQik7CisgICAgcWVtdV9tdXRleF91bmxvY2tfaW90aHJlYWQoKTsKK30gZWxzZSB7CisgICAgY3B1X2ludGVycnVwdChjcywgQ1BVX0lOVEVSUlVQVF9FWElUVEIpOworfQorCitpbiB0aGVzZSBjYWxsIHNpdGVzIHRoZW4gSSBjYW4gbm8gbG9uZ2VyIGxvY2sgcWVtdSB1cCB3aXRoIG15IHRlc3QKK2Nhc2UuCisKK0kgc3VzcGVjdCB0aGUgX0hBUkQgc2V0dGluZyBnZXRzIG92ZXJ3cml0dGVuIHdoaWNoIHN0b3BzIHRoZSAKK2RlY3JlbWVudGVyIGludGVycnVwdHMgYmVpbmcgZGVsaXZlcmVkLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbSXNzdWUgZGlzY3Vzc2VkIG9uIHFlbXUgbWFpbGluZyBsaXN0IDIwMTcvMTEvMjBdCitSUCAyMDE3LzExLzIwCisKK0luZGV4OiBxZW11LTIuMTAuMS90YXJnZXQvcHBjL2V4Y3BfaGVscGVyLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBxZW11LTIuMTAuMS5vcmlnL3RhcmdldC9wcGMvZXhjcF9oZWxwZXIuYworKysrIHFlbXUtMi4xMC4xL3RhcmdldC9wcGMvZXhjcF9oZWxwZXIuYworQEAgLTIwNyw3ICsyMDcsOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcG93ZXJwY19leGNwKFBvd2VyUENDCisgICAgICAgICAgICAgICAgICAgICAgICAgIkVudGVyaW5nIGNoZWNrc3RvcCBzdGF0ZVxuIik7CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIGNzLT5oYWx0ZWQgPSAxOworLSAgICAgICAgICAgIGNzLT5pbnRlcnJ1cHRfcmVxdWVzdCB8PSBDUFVfSU5URVJSVVBUX0VYSVRUQjsKKysgICAgICAgICAgICBxZW11X211dGV4X2xvY2tfaW90aHJlYWQoKTsKKysgICAgICAgICAgICBjcHVfaW50ZXJydXB0KGNzLCBDUFVfSU5URVJSVVBUX0VYSVRUQik7CisrICAgICAgICAgICAgcWVtdV9tdXRleF91bmxvY2tfaW90aHJlYWQoKTsKKyAgICAgICAgIH0KKyAgICAgICAgIGlmIChlbnYtPm1zcl9tYXNrICYgTVNSX0hWQikgeworICAgICAgICAgICAgIC8qIElTQSBzcGVjaWZpZXMgSFYsIGJ1dCBjYW4gYmUgZGVsaXZlcmVkIHRvIGd1ZXN0IHdpdGggSFYgY2xlYXIKK0BAIC05NDAsNyArOTQyLDkgQEAgdm9pZCBoZWxwZXJfc3RvcmVfbXNyKENQVVBQQ1N0YXRlICplbnYsCisgCisgICAgIGlmIChleGNwICE9IDApIHsKKyAgICAgICAgIENQVVN0YXRlICpjcyA9IENQVShwcGNfZW52X2dldF9jcHUoZW52KSk7CistICAgICAgICBjcy0+aW50ZXJydXB0X3JlcXVlc3QgfD0gQ1BVX0lOVEVSUlVQVF9FWElUVEI7CisrICAgICAgICBxZW11X211dGV4X2xvY2tfaW90aHJlYWQoKTsKKysgICAgICAgIGNwdV9pbnRlcnJ1cHQoY3MsIENQVV9JTlRFUlJVUFRfRVhJVFRCKTsKKysgICAgICAgIHFlbXVfbXV0ZXhfdW5sb2NrX2lvdGhyZWFkKCk7CisgICAgICAgICByYWlzZV9leGNlcHRpb24oZW52LCBleGNwKTsKKyAgICAgfQorIH0KK0BAIC05OTUsNyArOTk5LDkgQEAgc3RhdGljIGlubGluZSB2b2lkIGRvX3JmaShDUFVQUENTdGF0ZSAqZQorICAgICAvKiBObyBuZWVkIHRvIHJhaXNlIGFuIGV4Y2VwdGlvbiBoZXJlLAorICAgICAgKiBhcyByZmkgaXMgYWx3YXlzIHRoZSBsYXN0IGluc24gb2YgYSBUQgorICAgICAgKi8KKy0gICAgY3MtPmludGVycnVwdF9yZXF1ZXN0IHw9IENQVV9JTlRFUlJVUFRfRVhJVFRCOworKyAgICBxZW11X211dGV4X2xvY2tfaW90aHJlYWQoKTsKKysgICAgY3B1X2ludGVycnVwdChjcywgQ1BVX0lOVEVSUlVQVF9FWElUVEIpOworKyAgICBxZW11X211dGV4X3VubG9ja19pb3RocmVhZCgpOworIAorICAgICAvKiBSZXNldCB0aGUgcmVzZXJ2YXRpb24gKi8KKyAgICAgZW52LT5yZXNlcnZlX2FkZHIgPSAtMTsKK0luZGV4OiBxZW11LTIuMTAuMS90YXJnZXQvcHBjL2hlbHBlcl9yZWdzLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBxZW11LTIuMTAuMS5vcmlnL3RhcmdldC9wcGMvaGVscGVyX3JlZ3MuaAorKysrIHFlbXUtMi4xMC4xL3RhcmdldC9wcGMvaGVscGVyX3JlZ3MuaAorQEAgLTExNCwxMSArMTE0LDE1IEBAIHN0YXRpYyBpbmxpbmUgaW50IGhyZWdfc3RvcmVfbXNyKENQVVBQQ1MKKyAgICAgfQorICAgICBpZiAoKCh2YWx1ZSA+PiBNU1JfSVIpICYgMSkgIT0gbXNyX2lyIHx8CisgICAgICAgICAoKHZhbHVlID4+IE1TUl9EUikgJiAxKSAhPSBtc3JfZHIpIHsKKy0gICAgICAgIGNzLT5pbnRlcnJ1cHRfcmVxdWVzdCB8PSBDUFVfSU5URVJSVVBUX0VYSVRUQjsKKysgICAgICAgIHFlbXVfbXV0ZXhfbG9ja19pb3RocmVhZCgpOworKyAgICAgICAgY3B1X2ludGVycnVwdChjcywgQ1BVX0lOVEVSUlVQVF9FWElUVEIpOworKyAgICAgICAgcWVtdV9tdXRleF91bmxvY2tfaW90aHJlYWQoKTsKKyAgICAgfQorICAgICBpZiAoKGVudi0+bW11X21vZGVsICYgUE9XRVJQQ19NTVVfQk9PS0UpICYmCisgICAgICAgICAoKHZhbHVlID4+IE1TUl9HUykgJiAxKSAhPSBtc3JfZ3MpIHsKKy0gICAgICAgIGNzLT5pbnRlcnJ1cHRfcmVxdWVzdCB8PSBDUFVfSU5URVJSVVBUX0VYSVRUQjsKKysgICAgICAgIHFlbXVfbXV0ZXhfbG9ja19pb3RocmVhZCgpOworKyAgICAgICAgY3B1X2ludGVycnVwdChjcywgQ1BVX0lOVEVSUlVQVF9FWElUVEIpOworKyAgICAgICAgcWVtdV9tdXRleF91bmxvY2tfaW90aHJlYWQoKTsKKyAgICAgfQorICAgICBpZiAodW5saWtlbHkoKGVudi0+ZmxhZ3MgJiBQT1dFUlBDX0ZMQUdfVEdQUikgJiYKKyAgICAgICAgICAgICAgICAgICgodmFsdWUgXiBlbnYtPm1zcikgJiAoMSA8PCBNU1JfVEdQUikpKSkgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvcWVtdS0yLjUuMC1jZmxhZ3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9xZW11LTIuNS4wLWNmbGFncy5wYXRjaAppbmRleCAxNzMzOTRmLi5lYjk5ZDE0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9xZW11LTIuNS4wLWNmbGFncy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9xZW11LTIuNS4wLWNmbGFncy5wYXRjaApAQCAtMSwzICsxLDUgQEAKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCiAtLS0gYS9jb25maWd1cmUKICsrKyBiL2NvbmZpZ3VyZQogQEAgLTQ0NjgsMTAgKzQ0NjgsNiBAQCBmaQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvdGFyZ2V0LXBwYy1maXgtdXNlci1tb2RlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvdGFyZ2V0LXBwYy1maXgtdXNlci1tb2RlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYTIxZTcxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L3RhcmdldC1wcGMtZml4LXVzZXItbW9kZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLVtRZW11LXBwY10gW1BBVENIIDEvMV0gdGFyZ2V0LXBwYywgdGNnOiBmaXggdXNlcm1vZGUgc2VnZmF1bHQgd2l0aCBwdGhyZWFkCi0KLUZyb206IFNhbSBCb2Jyb2ZmCi1TdWJqZWN0OiBbUWVtdS1wcGNdIFtQQVRDSCAxLzFdIHRhcmdldC1wcGMsIHRjZzogZml4IHVzZXJtb2RlIHNlZ2ZhdWx0IHdpdGggcHRocmVhZF9jcmVhdGUoKQotRGF0ZTogTW9uLCAzMCBKYW4gMjAxNyAxNjowODowNyArMTEwMAotUHJvZ3JhbXMgcnVuIHVuZGVyIHFlbXUtcHBjNjQgb24gYW4geDg2XzY0IGhvc3QgY3VycmVudGx5IHNlZ2ZhdWx0Ci1pZiB0aGV5IHVzZSBwdGhyZWFkX2NyZWF0ZSgpIGR1ZSB0byB0aGUgYWRqdXN0bWVudCBtYWRlIHRvIHRoZSBOSVAgaW4KLWNvbW1pdCBiZDZmZWZlNzFjZWM1YTBjN2QyYmU0YWM5NjMwN2YyNWRiNTZhYmY5LgotCi1UaGlzIHBhdGNoIGNoYW5nZXMgY3B1X2xvb3AoKSB0byBzZXQgdGhlIE5JUCBiYWNrIHRvIHRoZQotcHJlLWluY3JlbWVudGVkIHZhbHVlIGJlZm9yZSBjYWxsaW5nIGRvX3N5c2NhbGwoKSwgd2hpY2ggY2F1c2VzIHRoZQotY29ycmVjdCBhZGRyZXNzIHRvIGJlIHVzZWQgZm9yIHRoZSBuZXcgdGhyZWFkIGFuZCBjb3JyZWN0cyB0aGUgZmF1bHQuCi0KLVNpZ25lZC1vZmYtYnk6IFNhbSBCb2Jyb2ZmIDxhZGRyZXNzQGhpZGRlbj4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi0tLS0KLQotbGludXgtdXNlci9tYWluLmMgfCA0ICsrKy0KLTEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2xpbnV4LXVzZXIvbWFpbi5jIGIvbGludXgtdXNlci9tYWluLmMKLWluZGV4IDMwMDQ5NTgxZWYuLmI1ZGVlMDE1NDEgMTAwNjQ0Ci0tLS0gYS9saW51eC11c2VyL21haW4uYwotKysrIGIvbGludXgtdXNlci9tYWluLmMKLUBAIC0xNzEyLDE4ICsxNzEyLDIwIEBAIHZvaWQgY3B1X2xvb3AoQ1BVUFBDU3RhdGUgKmVudikKLSAgICAgICAgICAgICAgKiBpbiBzeXNjYWxscy4KLSAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICBlbnYtPmNyZlswXSAmPSB+MHgxOwotKyAgICAgICAgICAgIGVudi0+bmlwICs9IDQ7Ci0gICAgICAgICAgICAgcmV0ID0gZG9fc3lzY2FsbChlbnYsIGVudi0+Z3ByWzBdLCBlbnYtPmdwclszXSwgZW52LT5ncHJbNF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnYtPmdwcls1XSwgZW52LT5ncHJbNl0sIGVudi0+Z3ByWzddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52LT5ncHJbOF0sIDAsIDApOwotICAgICAgICAgICAgIGlmIChyZXQgPT0gLVRBUkdFVF9FUkVTVEFSVFNZUykgewotKyAgICAgICAgICAgICAgICBlbnYtPm5pcCAtPSA0OwotICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgaWYgKHJldCA9PSAodGFyZ2V0X3Vsb25nKSgtVEFSR0VUX1FFTVVfRVNJR1JFVFVSTikpIHsKLSsgICAgICAgICAgICAgICAgZW52LT5uaXAgLT0gNDsKLSAgICAgICAgICAgICAgICAgLyogUmV0dXJuaW5nIGZyb20gYSBzdWNjZXNzZnVsIHNpZ3JldHVybiBzeXNjYWxsLgotICAgICAgICAgICAgICAgICAgICBBdm9pZCBjb3JydXB0aW5nIHJlZ2lzdGVyIHN0YXRlLiAgKi8KLSAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgfQotLSAgICAgICAgICAgIGVudi0+bmlwICs9IDQ7Ci0gICAgICAgICAgICAgaWYgKHJldCA+ICh0YXJnZXRfdWxvbmcpKC01MTUpKSB7Ci0gICAgICAgICAgICAgICAgIGVudi0+Y3JmWzBdIHw9IDB4MTsKLSAgICAgICAgICAgICAgICAgcmV0ID0gLXJldDsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11XzIuMTAuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11XzIuMTAuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOWI0OTM5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXVfMi4xMC4wLmJiCkBAIC0wLDAgKzEsNjMgQEAKK3JlcXVpcmUgcWVtdS5pbmMKKworaW5oZXJpdCBwdGVzdAorCitSREVQRU5EU18ke1BOfS1wdGVzdCA9ICJiYXNoIG1ha2UiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTQ0MWMyOGQyY2Y4NmUxNWEzN2ZhNDdlMTVhNzJmYmFjIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO2VuZGxpbmU9MjQ7bWQ1PWMwNGRlZjdhZTM4ODUwZTdkM2VmNTQ4NTg4MTU5OTEzIgorCitTUkNfVVJJID0gImh0dHA6Ly93aWtpLnFlbXUtcHJvamVjdC5vcmcvZG93bmxvYWQvJHtCUH0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9wb3dlcnBjX3JvbS5iaW4gXAorICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1ncmFicy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9leGNsdWRlLXNvbWUtYXJtLUVBQkktb2Jzb2xldGUtc3lzY2FsbHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vd2Fjb20ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYWRkLXB0ZXN0LWluLW1ha2VmaWxlLXYxMC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vcWVtdS1lbmxhcmdlLWVudi1lbnRyeS1zaXplLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL25vLXZhbGdyaW5kLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3BhdGhsaW1pdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9xZW11LTIuNS4wLWNmbGFncy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9nbGliYy0yLjI1LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtUHJvdmlkZS1zdXBwb3J0LWZvci10aGUtQ1VTRS1UUE0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1JbnRyb2R1Y2UtY29uZGl0aW9uLXRvLW5vdGlmeS13YWl0ZXJzLW9mLWNvbXBsZXRlZC1jLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtSW50cm9kdWNlLWNvbmRpdGlvbi1pbi1UUE0tYmFja2VuZC1mb3Itbm90aWZpY2F0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtQWRkLXN1cHBvcnQtZm9yLVZNLXN1c3BlbmQtcmVzdW1lLWZvci1UUE0tVElTLXYyLjkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYXBpYy1maXh1cC1mYWxsdGhyb3VnaC10by1QSUMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTM3MTEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTM2NzMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTM2NzIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTQxNjcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcHBjX2xvY2tpbmcucGF0Y2ggXAorICAgICAgICAgICAiCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJxZW11LSg/UDxwdmVyPlxkK1wuLiopXC50YXIiCisKKworU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBcCisgICAgICAgICAgICBmaWxlOi8vZml4LWxpYmNhcC1oZWFkZXItaXNzdWUtb24tc29tZS1kaXN0cm8ucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2NwdXMuYy1xZW11X2NwdV9raWNrX3RocmVhZF9kZWJ1Z2dpbmcucGF0Y2ggXAorICAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiY2E3MzQ0MWRlNzNhOWI1MmM2YzQ5Yzk3MTkwZDIxODUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2U5ZjM5ZTEzMDZlNmRjYzU5NTQ5NGU5MWMxNDY0ZDRiMDNmNTVkZGQyMDUzMTgzZTBlMWI2OWY3Zjc3NmQ0OCIKKworQ09NUEFUSUJMRV9IT1NUX21pcHNhcmNobjMyID0gIm51bGwiCitDT01QQVRJQkxFX0hPU1RfbWlwc2FyY2huNjQgPSAibnVsbCIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgIyBQcmV2ZW50IFFBIHdhcm5pbmdzIGFib3V0IGluc3RhbGxlZCAke2xvY2Fsc3RhdGVkaXJ9L3J1bgorICAgIGlmIFsgLWQgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuIF07IHRoZW4gcm1kaXIgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuOyBmaQorICAgIGluc3RhbGwgLURtIDA3NTUgJHtXT1JLRElSfS9wb3dlcnBjX3JvbS5iaW4gJHtEfSR7ZGF0YWRpcn0vcWVtdQorfQorCitkb19jb21waWxlX3B0ZXN0KCkgeworCW1ha2UgYnVpbGR0ZXN0LVRFU1RTCit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJY3AgLXJMICR7Qn0vdGVzdHMgJHtEfSR7UFRFU1RfUEFUSH0KKwlmaW5kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzIC10eXBlIGYgLW5hbWUgIiouW1NzaGNvZF0iIHwgeGFyZ3MgLWkgcm0gLXJmIHt9CisKKwljcCAke1N9L3Rlc3RzL01ha2VmaWxlLmluY2x1ZGUgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKK30KKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXVfMi44LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdV8yLjguMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmE3MDAwOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdV8yLjguMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLXJlcXVpcmUgcWVtdS5pbmMKLQotaW5oZXJpdCBwdGVzdAotCi1SREVQRU5EU18ke1BOfS1wdGVzdCA9ICJiYXNoIG1ha2UiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTQ0MWMyOGQyY2Y4NmUxNWEzN2ZhNDdlMTVhNzJmYmFjIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO2VuZGxpbmU9MjQ7bWQ1PWMwNGRlZjdhZTM4ODUwZTdkM2VmNTQ4NTg4MTU5OTEzIgotCi1TUkNfVVJJICs9ICIgXAotICAgICAgICAgICAgZmlsZTovL3Bvd2VycGNfcm9tLmJpbiBcCi0gICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1ncmFicy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vZXhjbHVkZS1zb21lLWFybS1FQUJJLW9ic29sZXRlLXN5c2NhbGxzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly93YWNvbS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vYWRkLXB0ZXN0LWluLW1ha2VmaWxlLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS1maXgtRGFyd2luLXRhcmdldC1kZXRlY3Rpb24ucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3FlbXUtZW5sYXJnZS1lbnYtZW50cnktc2l6ZS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vbm8tdmFsZ3JpbmQucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3BhdGhsaW1pdC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcWVtdS0yLjUuMC1jZmxhZ3MucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3RhcmdldC1wcGMtZml4LXVzZXItbW9kZS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vZ2xpYmMtMi4yNS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDRiMzNlMjE4NjY0MTI2ODlmMThiN2FkNmRhZjBhNTRkOGY5NTlhNy5wYXRjaCBcCi0iCi0KLVNSQ19VUkkgKz0gIiBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1Qcm92aWRlLXN1cHBvcnQtZm9yLXRoZS1DVVNFLVRQTS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMi1JbnRyb2R1Y2UtY29uZGl0aW9uLXRvLW5vdGlmeS13YWl0ZXJzLW9mLWNvbXBsZXRlZC1jLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAzLUludHJvZHVjZS1jb25kaXRpb24taW4tVFBNLWJhY2tlbmQtZm9yLW5vdGlmaWNhdGlvbi5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwNC1BZGQtc3VwcG9ydC1mb3ItVk0tc3VzcGVuZC1yZXN1bWUtZm9yLVRQTS1USVMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL0NWRS0yMDE2LTk5MDgucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL0NWRS0yMDE2LTk5MTIucGF0Y2ggXAotIgotCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIFwKLSAgICAgICAgICAgIGZpbGU6Ly9maXgtbGliY2FwLWhlYWRlci1pc3N1ZS1vbi1zb21lLWRpc3Ryby5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vY3B1cy5jLXFlbXVfY3B1X2tpY2tfdGhyZWFkX2RlYnVnZ2luZy5wYXRjaCBcCi0gICAgICAgICAgICAiCi0KLVNSQ19VUkkgPSsgImh0dHA6Ly93aWtpLnFlbXUtcHJvamVjdC5vcmcvZG93bmxvYWQvJHtCUH0udGFyLmJ6MiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjE3OTQwZGNlMDYzYjZjZTQ1MGExMmU3MTlhNmM5YzQzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImRhZmQ1ZDdmNjQ5OTA3YjZiNjE3YjgyMjY5MmY0YzgyZTYwY2YyOWJjMGZjNThiYzIwMzYyMTliNTkxZTVlNjIiCi0KLUNPTVBBVElCTEVfSE9TVF9taXBzYXJjaG4zMiA9ICJudWxsIgotQ09NUEFUSUJMRV9IT1NUX21pcHNhcmNobjY0ID0gIm51bGwiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgICMgUHJldmVudCBRQSB3YXJuaW5ncyBhYm91dCBpbnN0YWxsZWQgJHtsb2NhbHN0YXRlZGlyfS9ydW4KLSAgICBpZiBbIC1kICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biBdOyB0aGVuIHJtZGlyICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1bjsgZmkKLSAgICBpbnN0YWxsIC1EbSAwNzU1ICR7V09SS0RJUn0vcG93ZXJwY19yb20uYmluICR7RH0ke2RhdGFkaXJ9L3FlbXUKLX0KLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLQltYWtlIGJ1aWxkdGVzdC1URVNUUwotfQotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCWNwIC1yTCAke0J9L3Rlc3RzICR7RH0ke1BURVNUX1BBVEh9Ci0JZmluZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cyAtdHlwZSBmIC1uYW1lICIqLltTc2hjb2RdIiB8IHhhcmdzIC1pIHJtIC1yZiB7fQotCi0JY3AgJHtTfS90ZXN0cy9NYWtlZmlsZS5pbmNsdWRlICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCi19Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11d3JhcHBlci1jcm9zc18xLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdXdyYXBwZXItY3Jvc3NfMS4wLmJiCmluZGV4IGU0MGNkYWYuLmM5ODNmYmEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11d3JhcHBlci1jcm9zc18xLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXV3cmFwcGVyLWNyb3NzXzEuMC5iYgpAQCAtMSw0ICsxLDUgQEAKIFNVTU1BUlkgPSAiUUVNVSB3cmFwcGVyIHNjcmlwdCIKK0hPTUVQQUdFID0gImh0dHA6Ly9xZW11Lm9yZyIKIExJQ0VOU0UgPSAiTUlUIgogCiBTID0gIiR7V09SS0RJUn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JlbWFrZS9yZW1ha2UuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9yZW1ha2UvcmVtYWtlLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGY4ODlmYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JlbWFrZS9yZW1ha2UuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotU1VNTUFSWSA9ICJNYWtlZmlsZSBkZWJ1Z2dlciB3aGljaCBpcyBnbnVtYWtlIGNvbXBhdGlibGUiCi1ERVNDUklQVElPTiA9ICJyZW1ha2UgaXMgYSBwYXRjaGVkIGFuZCBtb2Rlcm5pemVkIHZlcnNpb24gb2YgR05VIG1ha2UgXAotdXRpbGl0eSB0aGF0IGFkZHMgaW1wcm92ZWQgZXJyb3IgcmVwb3J0aW5nLCB0aGUgYWJpbGl0eSB0byB0cmFjZSBcCi1leGVjdXRpb24gaW4gYSBjb21wcmVoZW5zaWJsZSB3YXksIGFuZCBhIGRlYnVnZ2VyLiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL2Jhc2hkYi5zb3VyY2Vmb3JnZS5uZXQvcmVtYWtlLyIKLVNFQ1RJT04gPSAiZGV2ZWwiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9yb2NreS9yZW1ha2UuZ2l0IgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMgcGtnY29uZmlnCi0KLUFMVEVSTkFUSVZFXyR7UE59ID0gIm1ha2UiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbbWFrZV0gPSAiJHtiaW5kaXJ9L21ha2UiCi1BTFRFUk5BVElWRV9UQVJHRVRbbWFrZV0gPSAiJHtiaW5kaXJ9L3JlbWFrZSIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcmVtYWtlL3JlbWFrZS92ZXJzaW9uLXJlbWFrZS50ZXhpLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9yZW1ha2UvcmVtYWtlL3ZlcnNpb24tcmVtYWtlLnRleGkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhNjMyOWUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9yZW1ha2UvcmVtYWtlL3ZlcnNpb24tcmVtYWtlLnRleGkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotdmVyc2lvbi1yZW1ha2UudGV4aSBpcyBub3QgdGhlcmUgYnV0IGl0IGlzIHJlcXVpcmVkIGJ5IHJlbWFrZS50ZXhpLAotanVzdCBhZGQgaXQgZm9yIGdldHRpbmcgdGhlICdtYWtlIHJlbWFrZS5pbmZvJyB3b3Jrcy4KLQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLWRpZmYgLS1naXQgYS9kb2MvdmVyc2lvbi1yZW1ha2UudGV4aSBiL2RvYy92ZXJzaW9uLXJlbWFrZS50ZXhpCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMmEzYjcyYgotLS0tIC9kZXYvbnVsbAotKysrIGIvZG9jL3ZlcnNpb24tcmVtYWtlLnRleGkKLUBAIC0wLDAgKzEsNCBAQAotK0BzZXQgVVBEQVRFRCAxMCBKdW5lIDIwMTIKLStAc2V0IFVQREFURUQtTU9OVEggSnVuZSAyMDEyCi0rQHNldCBFRElUSU9OIDMuODIrZGJnLTAuOWdpdAotK0BzZXQgVkVSU0lPTiAzLjgyK2RiZy0wLjlnaXQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcmVtYWtlL3JlbWFrZV80LjErZGJnLTEuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcmVtYWtlL3JlbWFrZV80LjErZGJnLTEuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGVhYjdlMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JlbWFrZS9yZW1ha2VfNC4xK2RiZy0xLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdGVzdHMvQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2xvYi9DT1BZSU5HLkxJQjttZDU9NGE3NzBiNjdlNmJlMGY2MGRhMjQ0YmViMmRlMGZjZTQiCi1yZXF1aXJlIHJlbWFrZS5pbmMKLQotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+KFxkKyhcLlxkKykrKVwrZGJnLispIgotU1JDX1VSSSArPSAiZmlsZTovL3ZlcnNpb24tcmVtYWtlLnRleGkucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNSRVYgPSAiY2Y1NDY0MWQ1MGEwMTY1YmIxNzYyMmIzZTk3NzBmNDI2Y2NiYzU2MSIKLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLURFUEVORFMgKz0gInJlYWRsaW5lIGd1aWxlIgotIyBOZWVkIHRvIGFkZCAiZ2V0dGV4dC1uYXRpdmUiIGRlcGVuZGVuY3kgdG8gcmVtYWtlLW5hdGl2ZS4KLSMgQnkgZGVmYXVsdCBvbmx5ICJnZXR0ZXh0LW1pbmltYWwtbmF0aXZlIiBpcyBhZGRlZAotIyB3aGVuIGluaGVyaXQgZ2V0dGV4dC4KLURFUEVORFNfY2xhc3MtbmF0aXZlICs9ICJnZXR0ZXh0LW5hdGl2ZSIKLVBST1ZJREVTICs9ICJ2aXJ0dWFsL21ha2UiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgICMgcmVtb3ZlIHRoZSBkZWZhdWx0IExJTkdVQVMgc2luY2Ugd2UgYXJlIG5vdCBnb2luZyB0byBnZW5lcmF0ZSBsYW5ndWFnZXMKLSAgICBybSAke1N9L3BvL0xJTkdVQVMKLSAgICB0b3VjaCAke1N9L3BvL0xJTkdVQVMKLSAgICAjIGNyZWF0ZSBjb25maWcucnBhdGggd2hpY2ggcmVxdWlyZWQgYnkgY29uZmlndXJlLmFjCi0gICAgKCBjZCAke1N9OyBhdXRvcG9pbnQgfHwgdG91Y2ggY29uZmlnLnJwYXRoICkKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLURvLW5vdC1oYXJkY29kZS1saWItcnBtLWFzLXRoZS1pbnN0YWxsYXRpb24tcGF0aC1mb3IucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLURvLW5vdC1oYXJkY29kZS1saWItcnBtLWFzLXRoZS1pbnN0YWxsYXRpb24tcGF0aC1mb3IucGF0Y2gKaW5kZXggZDk5ZGRlYi4uMWY2MWFjYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1Eby1ub3QtaGFyZGNvZGUtbGliLXJwbS1hcy10aGUtaW5zdGFsbGF0aW9uLXBhdGgtZm9yLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtRG8tbm90LWhhcmRjb2RlLWxpYi1ycG0tYXMtdGhlLWluc3RhbGxhdGlvbi1wYXRoLWZvci5wYXRjaApAQCAtNCw3ICs0LDcgQEAKIFN1YmplY3Q6IFtQQVRDSF0gRG8gbm90IGhhcmRjb2RlICJsaWIvcnBtIiBhcyB0aGUgaW5zdGFsbGF0aW9uIHBhdGggZm9yCiAgZGVmYXVsdCBjb25maWd1cmF0aW9uIGFuZCBtYWNyb3MuCiAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvcnBtL3B1bGwvMjYzXQogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiAKIC0tLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLUMtbGlicmFyeS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC1DLWxpYnJhcnkucGF0Y2gKaW5kZXggOTVjNzAxMy4uZWRmOWVjMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLUMtbGlicmFyeS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAxLUZpeC1idWlsZC13aXRoLW11c2wtQy1saWJyYXJ5LnBhdGNoCkBAIC0zLDcgKzMsNyBAQAogRGF0ZTogTW9uLCAyNyBGZWIgMjAxNyAxNDo0MzoyMSArMDIwMAogU3ViamVjdDogW1BBVENIXSBGaXggYnVpbGQgd2l0aCBtdXNsIEMgbGlicmFyeS4KIAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW3Byb2JsZW0gYWxyZWFkeSBzb2x2ZWQgaW4gbWFzdGVyIGJyYW5jaF0KIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtU3BsaXQtYmluYXJ5LXBhY2thZ2UtYnVpbGRpbmctaW50by1hLXNlcGFyYXRlLWZ1bmN0aS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtU3BsaXQtYmluYXJ5LXBhY2thZ2UtYnVpbGRpbmctaW50by1hLXNlcGFyYXRlLWZ1bmN0aS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZTQ0ZjBiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1TcGxpdC1iaW5hcnktcGFja2FnZS1idWlsZGluZy1pbnRvLWEtc2VwYXJhdGUtZnVuY3RpLnBhdGNoCkBAIC0wLDAgKzEsODQgQEAKK0Zyb20gNzIxYTY2MGE1MDdkNmQwNjJlN2FlY2FmYWQ4ODZjNjQzOTcwYTVkNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogVGh1LCAyNSBNYXkgMjAxNyAxODoxNToyNyArMDMwMAorU3ViamVjdDogW1BBVENIIDEvNF0gU3BsaXQgYmluYXJ5IHBhY2thZ2UgYnVpbGRpbmcgaW50byBhIHNlcGFyYXRlIGZ1bmN0aW9uCisKK1NvIHRoYXQgaXQgY2FuIGJlIHJ1biBhcyBhIHRocmVhZCBwb29sIHRhc2suCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvcnBtL3B1bGwvMjI2XQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CisKKy0tLQorIGJ1aWxkL3BhY2suYyB8IDMzICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2J1aWxkL3BhY2suYyBiL2J1aWxkL3BhY2suYworaW5kZXggNTE4ZjRlOTJhLi5jY2ZkNjE0Y2MgMTAwNjQ0CistLS0gYS9idWlsZC9wYWNrLmMKKysrKyBiL2J1aWxkL3BhY2suYworQEAgLTU0NiwxOCArNTQ2LDEzIEBAIHN0YXRpYyBycG1SQyBjaGVja1BhY2thZ2VzKGNoYXIgKnBrZ2NoZWNrKQorICAgICByZXR1cm4gUlBNUkNfT0s7CisgfQorIAorLXJwbVJDIHBhY2thZ2VCaW5hcmllcyhycG1TcGVjIHNwZWMsIGNvbnN0IGNoYXIgKmNvb2tpZSwgaW50IGNoZWF0aW5nKQorK3N0YXRpYyBycG1SQyBwYWNrYWdlQmluYXJ5KHJwbVNwZWMgc3BlYywgUGFja2FnZSBwa2csIGNvbnN0IGNoYXIgKmNvb2tpZSwgaW50IGNoZWF0aW5nLCBjaGFyKiogZmlsZW5hbWUpCisgeworLSAgICBycG1SQyByYzsKKy0gICAgY29uc3QgY2hhciAqZXJyb3JTdHJpbmc7CistICAgIFBhY2thZ2UgcGtnOworLSAgICBjaGFyICpwa2dsaXN0ID0gTlVMTDsKKy0KKy0gICAgZm9yIChwa2cgPSBzcGVjLT5wYWNrYWdlczsgcGtnICE9IE5VTEw7IHBrZyA9IHBrZy0+bmV4dCkgeworLQljaGFyICpmbjsKKysJY29uc3QgY2hhciAqZXJyb3JTdHJpbmc7CisrCXJwbVJDIHJjID0gUlBNUkNfT0s7CisgCisgCWlmIChwa2ctPmZpbGVMaXN0ID09IE5VTEwpCistCSAgICBjb250aW51ZTsKKysJICAgIHJldHVybiByYzsKKyAKKyAJaWYgKChyYyA9IHByb2Nlc3NTY3JpcHRGaWxlcyhzcGVjLCBwa2cpKSkKKyAJICAgIHJldHVybiByYzsKK0BAIC01ODcsNyArNTgyLDcgQEAgcnBtUkMgcGFja2FnZUJpbmFyaWVzKHJwbVNwZWMgc3BlYywgY29uc3QgY2hhciAqY29va2llLCBpbnQgY2hlYXRpbmcpCisgCQkgICAgIGhlYWRlckdldFN0cmluZyhwa2ctPmhlYWRlciwgUlBNVEFHX05BTUUpLCBlcnJvclN0cmluZyk7CisgCQlyZXR1cm4gUlBNUkNfRkFJTDsKKyAJICAgIH0KKy0JICAgIGZuID0gcnBtR2V0UGF0aCgiJXtfcnBtZGlyfS8iLCBiaW5ScG0sIE5VTEwpOworKwkgICAgKmZpbGVuYW1lID0gcnBtR2V0UGF0aCgiJXtfcnBtZGlyfS8iLCBiaW5ScG0sIE5VTEwpOworIAkgICAgaWYgKChiaW5EaXIgPSBzdHJjaHIoYmluUnBtLCAnLycpKSAhPSBOVUxMKSB7CisgCQlzdHJ1Y3Qgc3RhdCBzdDsKKyAJCWNoYXIgKmRuOworQEAgLTYwOSwxNCArNjA0LDI4IEBAIHJwbVJDIHBhY2thZ2VCaW5hcmllcyhycG1TcGVjIHNwZWMsIGNvbnN0IGNoYXIgKmNvb2tpZSwgaW50IGNoZWF0aW5nKQorIAkgICAgZnJlZShiaW5ScG0pOworIAl9CisgCistCXJjID0gd3JpdGVSUE0ocGtnLCBOVUxMLCBmbiwgTlVMTCk7CisrCXJjID0gd3JpdGVSUE0ocGtnLCBOVUxMLCAqZmlsZW5hbWUsIE5VTEwpOworIAlpZiAocmMgPT0gUlBNUkNfT0spIHsKKyAJICAgIC8qIERvIGNoZWNrIGVhY2ggd3JpdHRlbiBwYWNrYWdlIGlmIGVuYWJsZWQgKi8KKy0JICAgIGNoYXIgKnBrZ2NoZWNrID0gcnBtRXhwYW5kKCIlez9fYnVpbGRfcGtnY2hlY2t9ICIsIGZuLCBOVUxMKTsKKysJICAgIGNoYXIgKnBrZ2NoZWNrID0gcnBtRXhwYW5kKCIlez9fYnVpbGRfcGtnY2hlY2t9ICIsICpmaWxlbmFtZSwgTlVMTCk7CisgCSAgICBpZiAocGtnY2hlY2tbMF0gIT0gJyAnKSB7CisgCQlyYyA9IGNoZWNrUGFja2FnZXMocGtnY2hlY2spOworIAkgICAgfQorIAkgICAgZnJlZShwa2djaGVjayk7CisrCX0KKysJcmV0dXJuIHJjOworK30KKysKKytycG1SQyBwYWNrYWdlQmluYXJpZXMocnBtU3BlYyBzcGVjLCBjb25zdCBjaGFyICpjb29raWUsIGludCBjaGVhdGluZykKKyt7CisrICAgIHJwbVJDIHJjOworKyAgICBQYWNrYWdlIHBrZzsKKysgICAgY2hhciAqcGtnbGlzdCA9IE5VTEw7CisrCisrICAgIGZvciAocGtnID0gc3BlYy0+cGFja2FnZXM7IHBrZyAhPSBOVUxMOyBwa2cgPSBwa2ctPm5leHQpIHsKKysJY2hhciAqZm4gPSBOVUxMOworKwlyYyA9IHBhY2thZ2VCaW5hcnkoc3BlYywgcGtnLCBjb29raWUsIGNoZWF0aW5nLCAmZm4pOworKwlpZiAocmMgPT0gUlBNUkNfT0spIHsKKyAJICAgIHJzdHJjYXQoJnBrZ2xpc3QsIGZuKTsKKyAJICAgIHJzdHJjYXQoJnBrZ2xpc3QsICIgIik7CisgCX0KKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDItUnVuLWJpbmFyeS1wYWNrYWdlLWNyZWF0aW9uLXZpYS10aHJlYWQtcG9vbHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAyLVJ1bi1iaW5hcnktcGFja2FnZS1jcmVhdGlvbi12aWEtdGhyZWFkLXBvb2xzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxMDA0MWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAyLVJ1bi1iaW5hcnktcGFja2FnZS1jcmVhdGlvbi12aWEtdGhyZWFkLXBvb2xzLnBhdGNoCkBAIC0wLDAgKzEsMTI3IEBACitGcm9tIDUxMzIwMGNmNzY3NThkZTQ2NjgzMTJjNjI4ZDYzNjJiZGFiZmFmNGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMjUgTWF5IDIwMTcgMTk6MzA6MjAgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSCAxLzNdIFJ1biBiaW5hcnkgcGFja2FnZSBjcmVhdGlvbiB2aWEgdGhyZWFkIHBvb2xzLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L3JwbS9wdWxsLzIyNl0KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorCistLS0KKyBidWlsZC9wYWNrLmMgfCA4MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KKyBjb25maWd1cmUuYWMgfCAgMyArKysKKyAyIGZpbGVzIGNoYW5nZWQsIDcwIGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvYnVpbGQvcGFjay5jIGIvYnVpbGQvcGFjay5jCitpbmRleCBjY2ZkNjE0Y2MuLmVkNWI5YWI0ZSAxMDA2NDQKKy0tLSBhL2J1aWxkL3BhY2suYworKysrIGIvYnVpbGQvcGFjay5jCitAQCAtNjE2LDI1ICs2MTYsNzggQEAgc3RhdGljIHJwbVJDIHBhY2thZ2VCaW5hcnkocnBtU3BlYyBzcGVjLCBQYWNrYWdlIHBrZywgY29uc3QgY2hhciAqY29va2llLCBpbnQgY2gKKyAJcmV0dXJuIHJjOworIH0KKyAKKy1ycG1SQyBwYWNrYWdlQmluYXJpZXMocnBtU3BlYyBzcGVjLCBjb25zdCBjaGFyICpjb29raWUsIGludCBjaGVhdGluZykKKytzdHJ1Y3QgYmluYXJ5UGFja2FnZVRhc2tEYXRhCisgeworLSAgICBycG1SQyByYzsKKyAgICAgUGFja2FnZSBwa2c7CisrICAgIGNoYXIgKmZpbGVuYW1lOworKyAgICBycG1SQyByZXN1bHQ7CisrICAgIHN0cnVjdCBiaW5hcnlQYWNrYWdlVGFza0RhdGEgKm5leHQ7CisrfTsKKysKKytzdGF0aWMgc3RydWN0IGJpbmFyeVBhY2thZ2VUYXNrRGF0YSogcnVuQmluYXJ5UGFja2FnZVRhc2tzKHJwbVNwZWMgc3BlYywgY29uc3QgY2hhciAqY29va2llLCBpbnQgY2hlYXRpbmcpCisreworKyAgICBzdHJ1Y3QgYmluYXJ5UGFja2FnZVRhc2tEYXRhICp0YXNrcyA9IE5VTEw7CisrICAgIHN0cnVjdCBiaW5hcnlQYWNrYWdlVGFza0RhdGEgKnRhc2sgPSBOVUxMOworKyAgICBzdHJ1Y3QgYmluYXJ5UGFja2FnZVRhc2tEYXRhICpwcmV2ID0gTlVMTDsKKysKKysgICAgZm9yIChQYWNrYWdlIHBrZyA9IHNwZWMtPnBhY2thZ2VzOyBwa2cgIT0gTlVMTDsgcGtnID0gcGtnLT5uZXh0KSB7CisrICAgICAgICB0YXNrID0gcmNhbGxvYygxLCBzaXplb2YoKnRhc2spKTsKKysgICAgICAgIHRhc2stPnBrZyA9IHBrZzsKKysgICAgICAgIGlmIChwa2cgPT0gc3BlYy0+cGFja2FnZXMpIHsKKysgICAgICAgICAgICAvLyB0aGUgZmlyc3QgcGFja2FnZSBuZWVkcyB0byBiZSBwcm9jZXNzZWQgYWhlYWQgb2Ygb3RoZXJzLCBhcyB0aGV5IGNvcHkKKysgICAgICAgICAgICAvLyBjaGFuZ2Vsb2cgZGF0YSBmcm9tIGl0LCBhbmQgc28gb3RoZXJ3aXNlIGRhdGEgcmFjZXMgd291bGQgaGFwcGVuCisrICAgICAgICAgICAgdGFzay0+cmVzdWx0ID0gcGFja2FnZUJpbmFyeShzcGVjLCBwa2csIGNvb2tpZSwgY2hlYXRpbmcsICYodGFzay0+ZmlsZW5hbWUpKTsKKysgICAgICAgICAgICBycG1sb2coUlBNTE9HX05PVElDRSwgXygiRmluaXNoZWQgYmluYXJ5IHBhY2thZ2Ugam9iLCByZXN1bHQgJWQsIGZpbGVuYW1lICVzXG4iKSwgdGFzay0+cmVzdWx0LCB0YXNrLT5maWxlbmFtZSk7CisrICAgICAgICAgICAgdGFza3MgPSB0YXNrOworKyAgICAgICAgfQorKyAgICAgICAgaWYgKHByZXYgIT0gTlVMTCkgeworKyAgICAgICAgICAgIHByZXYtPm5leHQgPSB0YXNrOworKyAgICAgICAgfQorKyAgICAgICAgcHJldiA9IHRhc2s7CisrICAgIH0KKysKKysgICAgI3ByYWdtYSBvbXAgcGFyYWxsZWwKKysgICAgI3ByYWdtYSBvbXAgc2luZ2xlCisrICAgIC8vIHJlLWRlY2xhcmluZyB0YXNrIHZhcmlhYmxlIGlzIG5lY2Vzc2FyeSwgb3Igb2xkZXIgZ2NjIHZlcnNpb25zIHdpbGwgcHJvZHVjZSBjb2RlIHRoYXQgc2VnZmF1bHRzCisrICAgIGZvciAoc3RydWN0IGJpbmFyeVBhY2thZ2VUYXNrRGF0YSAqdGFzayA9IHRhc2tzOyB0YXNrICE9IE5VTEw7IHRhc2sgPSB0YXNrLT5uZXh0KSB7CisrICAgICAgICBpZiAodGFzayAhPSB0YXNrcykKKysgICAgICAgICNwcmFnbWEgb21wIHRhc2sKKysgICAgICAgIHsKKysgICAgICAgICAgICB0YXNrLT5yZXN1bHQgPSBwYWNrYWdlQmluYXJ5KHNwZWMsIHRhc2stPnBrZywgY29va2llLCBjaGVhdGluZywgJih0YXNrLT5maWxlbmFtZSkpOworKyAgICAgICAgICAgIHJwbWxvZyhSUE1MT0dfTk9USUNFLCBfKCJGaW5pc2hlZCBiaW5hcnkgcGFja2FnZSBqb2IsIHJlc3VsdCAlZCwgZmlsZW5hbWUgJXNcbiIpLCB0YXNrLT5yZXN1bHQsIHRhc2stPmZpbGVuYW1lKTsKKysgICAgICAgIH0KKysgICAgfQorKworKyAgICByZXR1cm4gdGFza3M7CisrfQorKworK3N0YXRpYyB2b2lkIGZyZWVCaW5hcnlQYWNrYWdlVGFza3Moc3RydWN0IGJpbmFyeVBhY2thZ2VUYXNrRGF0YSogdGFza3MpCisreworKyAgICB3aGlsZSAodGFza3MgIT0gTlVMTCkgeworKyAgICAgICAgc3RydWN0IGJpbmFyeVBhY2thZ2VUYXNrRGF0YSogbmV4dCA9IHRhc2tzLT5uZXh0OworKyAgICAgICAgcmZyZWUodGFza3MtPmZpbGVuYW1lKTsKKysgICAgICAgIHJmcmVlKHRhc2tzKTsKKysgICAgICAgIHRhc2tzID0gbmV4dDsKKysgICAgfQorK30KKysKKytycG1SQyBwYWNrYWdlQmluYXJpZXMocnBtU3BlYyBzcGVjLCBjb25zdCBjaGFyICpjb29raWUsIGludCBjaGVhdGluZykKKyt7CisgICAgIGNoYXIgKnBrZ2xpc3QgPSBOVUxMOworIAorLSAgICBmb3IgKHBrZyA9IHNwZWMtPnBhY2thZ2VzOyBwa2cgIT0gTlVMTDsgcGtnID0gcGtnLT5uZXh0KSB7CistCWNoYXIgKmZuID0gTlVMTDsKKy0JcmMgPSBwYWNrYWdlQmluYXJ5KHNwZWMsIHBrZywgY29va2llLCBjaGVhdGluZywgJmZuKTsKKy0JaWYgKHJjID09IFJQTVJDX09LKSB7CistCSAgICByc3RyY2F0KCZwa2dsaXN0LCBmbik7CistCSAgICByc3RyY2F0KCZwa2dsaXN0LCAiICIpOworLQl9CistCWZyZWUoZm4pOworLQlpZiAocmMgIT0gUlBNUkNfT0spIHsKKy0JICAgIHBrZ2xpc3QgPSBfZnJlZShwa2dsaXN0KTsKKy0JICAgIHJldHVybiByYzsKKy0JfQorKyAgICBzdHJ1Y3QgYmluYXJ5UGFja2FnZVRhc2tEYXRhICp0YXNrcyA9IHJ1bkJpbmFyeVBhY2thZ2VUYXNrcyhzcGVjLCBjb29raWUsIGNoZWF0aW5nKTsKKysKKysgICAgZm9yIChzdHJ1Y3QgYmluYXJ5UGFja2FnZVRhc2tEYXRhICp0YXNrID0gdGFza3M7IHRhc2sgIT0gTlVMTDsgdGFzayA9IHRhc2stPm5leHQpIHsKKysgICAgICAgIGlmICh0YXNrLT5yZXN1bHQgPT0gUlBNUkNfT0spIHsKKysgICAgICAgICAgICByc3RyY2F0KCZwa2dsaXN0LCB0YXNrLT5maWxlbmFtZSk7CisrICAgICAgICAgICAgcnN0cmNhdCgmcGtnbGlzdCwgIiAiKTsKKysgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgX2ZyZWUocGtnbGlzdCk7CisrICAgICAgICAgICAgZnJlZUJpbmFyeVBhY2thZ2VUYXNrcyh0YXNrcyk7CisrICAgICAgICAgICAgcmV0dXJuIFJQTVJDX0ZBSUw7CisrICAgICAgICB9CisgICAgIH0KKysgICAgZnJlZUJpbmFyeVBhY2thZ2VUYXNrcyh0YXNrcyk7CisgCisgICAgIC8qIE5vdyBjaGVjayB0aGUgcGFja2FnZSBzZXQgaWYgZW5hYmxlZCAqLworICAgICBpZiAocGtnbGlzdCAhPSBOVUxMKSB7CitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBhNTA2ZWM4MTkuLjU5ZmEwYWNhZiAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMTcsNiArMTcsOSBAQCBBQ19ESVNBQkxFX1NUQVRJQworIAorIFBLR19QUk9HX1BLR19DT05GSUcKKyAKKytBQ19PUEVOTVAKKytSUE1DRkxBR1M9IiRPUEVOTVBfQ0ZMQUdTICRSUE1DRkxBR1MiCisrCisgZG5sIENoZWNrcyBmb3IgcHJvZ3JhbXMuCisgQUNfUFJPR19DWFgKKyBBQ19QUk9HX0FXSworLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMy1ycG1zdHJwb29sLmMtbWFrZS1vcGVyYXRpb25zLW92ZXItc3RyaW5nLXBvb2xzLXRocmVhLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMy1ycG1zdHJwb29sLmMtbWFrZS1vcGVyYXRpb25zLW92ZXItc3RyaW5nLXBvb2xzLXRocmVhLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzNDhhZTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDAzLXJwbXN0cnBvb2wuYy1tYWtlLW9wZXJhdGlvbnMtb3Zlci1zdHJpbmctcG9vbHMtdGhyZWEucGF0Y2gKQEAgLTAsMCArMSwyMDcgQEAKK0Zyb20gYzgwODkyZjE3ZTQ0MzMxMjA2YzgzMThkNTNiNjNiYjZhOTk1NTRkMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogVHVlLCAzMCBNYXkgMjAxNyAxMzo1ODozMCArMDMwMAorU3ViamVjdDogW1BBVENIIDMvNF0gcnBtc3RycG9vbC5jOiBtYWtlIG9wZXJhdGlvbnMgb3ZlciBzdHJpbmcgcG9vbHMKKyB0aHJlYWQtc2FmZQorCitPdGhlcndpc2UgbXVsdGl0aHJlYWRlZCBycG0gYnVpbGRpbmcgZXhwbG9kZXMgaW4gdmFyaW91cyB3YXlzIGR1ZQordG8gZGF0YSByYWNlcy4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9ycG0vcHVsbC8yMjZdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKworLS0tCisgcnBtaW8vcnBtc3RycG9vbC5jIHwgNTYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQ3IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9ycG1pby9ycG1zdHJwb29sLmMgYi9ycG1pby9ycG1zdHJwb29sLmMKK2luZGV4IDMwYTU3ZWIxMC4uNThiYTk1YTAyIDEwMDY0NAorLS0tIGEvcnBtaW8vcnBtc3RycG9vbC5jCisrKysgYi9ycG1pby9ycG1zdHJwb29sLmMKK0BAIC0xMTMsNiArMTEzLDggQEAgc3RhdGljIHBvb2xIYXNoIHBvb2xIYXNoQ3JlYXRlKGludCBudW1CdWNrZXRzKQorICAgICByZXR1cm4gaHQ7CisgfQorIAorK3N0YXRpYyBjb25zdCBjaGFyICogcnBtc3RyUG9vbFN0ck5vTG9jayhycG1zdHJQb29sIHBvb2wsIHJwbXNpZCBzaWQpOworKworIHN0YXRpYyB2b2lkIHBvb2xIYXNoUmVzaXplKHJwbXN0clBvb2wgcG9vbCwgaW50IG51bUJ1Y2tldHMpCisgeworICAgICBwb29sSGFzaCBodCA9IHBvb2wtPmhhc2g7CitAQCAtMTIwLDcgKzEyMiw3IEBAIHN0YXRpYyB2b2lkIHBvb2xIYXNoUmVzaXplKHJwbXN0clBvb2wgcG9vbCwgaW50IG51bUJ1Y2tldHMpCisgCisgICAgIGZvciAoaW50IGk9MDsgaTxodC0+bnVtQnVja2V0czsgaSsrKSB7CisgICAgICAgICBpZiAoIWh0LT5idWNrZXRzW2ldLmtleWlkKSBjb250aW51ZTsKKy0gICAgICAgIHVuc2lnbmVkIGludCBrZXlIYXNoID0gcnN0cmhhc2gocnBtc3RyUG9vbFN0cihwb29sLCBodC0+YnVja2V0c1tpXS5rZXlpZCkpOworKyAgICAgICAgdW5zaWduZWQgaW50IGtleUhhc2ggPSByc3RyaGFzaChycG1zdHJQb29sU3RyTm9Mb2NrKHBvb2wsIGh0LT5idWNrZXRzW2ldLmtleWlkKSk7CisgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBqPTA7O2orKykgeworICAgICAgICAgICAgIHVuc2lnbmVkIGludCBoYXNoID0gaGFzaGJ1Y2tldChrZXlIYXNoLCBqKSAlIG51bUJ1Y2tldHM7CisgICAgICAgICAgICAgaWYgKCFidWNrZXRzW2hhc2hdLmtleWlkKSB7CitAQCAtMTQ5LDcgKzE1MSw3IEBAIHN0YXRpYyB2b2lkIHBvb2xIYXNoQWRkSEVudHJ5KHJwbXN0clBvb2wgcG9vbCwgY29uc3QgY2hhciAqIGtleSwgdW5zaWduZWQgaW50IGtlCisgICAgICAgICAgICAgaHQtPmJ1Y2tldHNbaGFzaF0ua2V5aWQgPSBrZXlpZDsKKyAgICAgICAgICAgICBodC0+a2V5Q291bnQrKzsKKyAgICAgICAgICAgICBicmVhazsKKy0gICAgICAgIH0gZWxzZSBpZiAoIXN0cmNtcChycG1zdHJQb29sU3RyKHBvb2wsIGh0LT5idWNrZXRzW2hhc2hdLmtleWlkKSwga2V5KSkgeworKyAgICAgICAgfSBlbHNlIGlmICghc3RyY21wKHJwbXN0clBvb2xTdHJOb0xvY2socG9vbCwgaHQtPmJ1Y2tldHNbaGFzaF0ua2V5aWQpLCBrZXkpKSB7CisgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgfQorICAgICB9CitAQCAtMTkxLDcgKzE5Myw3IEBAIHN0YXRpYyB2b2lkIHBvb2xIYXNoUHJpbnRTdGF0cyhycG1zdHJQb29sIHBvb2wpCisgICAgIGludCBtYXhjb2xsaXNpb25zID0gMDsKKyAKKyAgICAgZm9yIChpPTA7IGk8aHQtPm51bUJ1Y2tldHM7IGkrKykgeworLSAgICAgICAgdW5zaWduZWQgaW50IGtleUhhc2ggPSByc3RyaGFzaChycG1zdHJQb29sU3RyKHBvb2wsIGh0LT5idWNrZXRzW2ldLmtleWlkKSk7CisrICAgICAgICB1bnNpZ25lZCBpbnQga2V5SGFzaCA9IHJzdHJoYXNoKHJwbXN0clBvb2xTdHJOb0xvY2socG9vbCwgaHQtPmJ1Y2tldHNbaV0ua2V5aWQpKTsKKyAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGo9MDs7aisrKSB7CisgICAgICAgICAgICAgdW5zaWduZWQgaW50IGhhc2ggPSBoYXNoYnVja2V0KGtleUhhc2gsIGkpICUgaHQtPm51bUJ1Y2tldHM7CisgICAgICAgICAgICAgaWYgKGhhc2g9PWkpIHsKK0BAIC0yMjEsNyArMjIzLDcgQEAgc3RhdGljIHZvaWQgcnBtc3RyUG9vbFJlaGFzaChycG1zdHJQb29sIHBvb2wpCisgCisgICAgIHBvb2wtPmhhc2ggPSBwb29sSGFzaENyZWF0ZShzaXplaGludCk7CisgICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IHBvb2wtPm9mZnNfc2l6ZTsgaSsrKQorLQlwb29sSGFzaEFkZEVudHJ5KHBvb2wsIHJwbXN0clBvb2xTdHIocG9vbCwgaSksIGkpOworKwlwb29sSGFzaEFkZEVudHJ5KHBvb2wsIHJwbXN0clBvb2xTdHJOb0xvY2socG9vbCwgaSksIGkpOworIH0KKyAKKyBycG1zdHJQb29sIHJwbXN0clBvb2xDcmVhdGUodm9pZCkKK0BAIC0yNDUsNiArMjQ3LDggQEAgcnBtc3RyUG9vbCBycG1zdHJQb29sQ3JlYXRlKHZvaWQpCisgCisgcnBtc3RyUG9vbCBycG1zdHJQb29sRnJlZShycG1zdHJQb29sIHBvb2wpCisgeworKyAgICAjcHJhZ21hIG9tcCBjcml0aWNhbChycG1zdHJwb29sKQorKyAgICB7CisgICAgIGlmIChwb29sKSB7CisgCWlmIChwb29sLT5ucmVmcyA+IDEpIHsKKyAJICAgIHBvb2wtPm5yZWZzLS07CitAQCAtMjYwLDE4ICsyNjQsMjQgQEAgcnBtc3RyUG9vbCBycG1zdHJQb29sRnJlZShycG1zdHJQb29sIHBvb2wpCisgCSAgICBmcmVlKHBvb2wpOworIAl9CisgICAgIH0KKysgICAgfQorICAgICByZXR1cm4gTlVMTDsKKyB9CisgCisgcnBtc3RyUG9vbCBycG1zdHJQb29sTGluayhycG1zdHJQb29sIHBvb2wpCisgeworKyAgICAjcHJhZ21hIG9tcCBjcml0aWNhbChycG1zdHJwb29sKQorKyAgICB7CisgICAgIGlmIChwb29sKQorIAlwb29sLT5ucmVmcysrOworKyAgICB9CisgICAgIHJldHVybiBwb29sOworIH0KKyAKKyB2b2lkIHJwbXN0clBvb2xGcmVlemUocnBtc3RyUG9vbCBwb29sLCBpbnQga2VlcGhhc2gpCisgeworKyAgICAjcHJhZ21hIG9tcCBjcml0aWNhbChycG1zdHJwb29sKQorKyAgICB7CisgICAgIGlmIChwb29sICYmICFwb29sLT5mcm96ZW4pIHsKKyAJaWYgKCFrZWVwaGFzaCkgeworIAkgICAgcG9vbC0+aGFzaCA9IHBvb2xIYXNoRnJlZShwb29sLT5oYXNoKTsKK0BAIC0yODEsMTYgKzI5MSwyMCBAQCB2b2lkIHJwbXN0clBvb2xGcmVlemUocnBtc3RyUG9vbCBwb29sLCBpbnQga2VlcGhhc2gpCisgCQkJICAgICAgcG9vbC0+b2Zmc19hbGxvY2VkICogc2l6ZW9mKCpwb29sLT5vZmZzKSk7CisgCXBvb2wtPmZyb3plbiA9IDE7CisgICAgIH0KKysgICAgfQorIH0KKyAKKyB2b2lkIHJwbXN0clBvb2xVbmZyZWV6ZShycG1zdHJQb29sIHBvb2wpCisgeworKyAgICAjcHJhZ21hIG9tcCBjcml0aWNhbChycG1zdHJwb29sKQorKyAgICB7CisgICAgIGlmIChwb29sKSB7CisgCWlmIChwb29sLT5oYXNoID09IE5VTEwpIHsKKyAJICAgIHJwbXN0clBvb2xSZWhhc2gocG9vbCk7CisgCX0KKyAJcG9vbC0+ZnJvemVuID0gMDsKKyAgICAgfQorKyAgICB9CisgfQorIAorIHN0YXRpYyBycG1zaWQgcnBtc3RyUG9vbFB1dChycG1zdHJQb29sIHBvb2wsIGNvbnN0IGNoYXIgKnMsIHNpemVfdCBzbGVuLCB1bnNpZ25lZCBpbnQgaGFzaCkKK0BAIC0zNTAsNyArMzY0LDcgQEAgc3RhdGljIHJwbXNpZCBycG1zdHJQb29sR2V0KHJwbXN0clBvb2wgcG9vbCwgY29uc3QgY2hhciAqIGtleSwgc2l6ZV90IGtleWxlbiwKKyAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgIH0KKyAKKy0JcyA9IHJwbXN0clBvb2xTdHIocG9vbCwgaHQtPmJ1Y2tldHNbaGFzaF0ua2V5aWQpOworKwlzID0gcnBtc3RyUG9vbFN0ck5vTG9jayhwb29sLCBodC0+YnVja2V0c1toYXNoXS5rZXlpZCk7CisgCS8qIHBvb2wgc3RyaW5nIGNvdWxkIGJlIGxvbmdlciB0aGFuIGtleWxlbiwgcmVxdWlyZSBleGFjdCBtYXRjaGUgKi8KKyAJaWYgKHN0cm5jbXAocywga2V5LCBrZXlsZW4pID09IDAgJiYgc1trZXlsZW5dID09ICdcMCcpCisgCSAgICByZXR1cm4gaHQtPmJ1Y2tldHNbaGFzaF0ua2V5aWQ7CitAQCAtMzczLDI3ICszODcsMzEgQEAgc3RhdGljIGlubGluZSBycG1zaWQgc3RybjJpZChycG1zdHJQb29sIHBvb2wsIGNvbnN0IGNoYXIgKnMsIHNpemVfdCBzbGVuLAorIHJwbXNpZCBycG1zdHJQb29sSWRuKHJwbXN0clBvb2wgcG9vbCwgY29uc3QgY2hhciAqcywgc2l6ZV90IHNsZW4sIGludCBjcmVhdGUpCisgeworICAgICBycG1zaWQgc2lkID0gMDsKKy0KKysgICAgI3ByYWdtYSBvbXAgY3JpdGljYWwocnBtc3RycG9vbCkKKysgICAgeworICAgICBpZiAocyAhPSBOVUxMKSB7CisgCXVuc2lnbmVkIGludCBoYXNoID0gcnN0cm5oYXNoKHMsIHNsZW4pOworIAlzaWQgPSBzdHJuMmlkKHBvb2wsIHMsIHNsZW4sIGhhc2gsIGNyZWF0ZSk7CisgICAgIH0KKysgICAgfQorICAgICByZXR1cm4gc2lkOworIH0KKyAKKyBycG1zaWQgcnBtc3RyUG9vbElkKHJwbXN0clBvb2wgcG9vbCwgY29uc3QgY2hhciAqcywgaW50IGNyZWF0ZSkKKyB7CisgICAgIHJwbXNpZCBzaWQgPSAwOworLQorKyAgICAjcHJhZ21hIG9tcCBjcml0aWNhbChycG1zdHJwb29sKQorKyAgICB7CisgICAgIGlmIChzICE9IE5VTEwpIHsKKyAJc2l6ZV90IHNsZW47CisgCXVuc2lnbmVkIGludCBoYXNoID0gcnN0cmxlbmhhc2gocywgJnNsZW4pOworIAlzaWQgPSBzdHJuMmlkKHBvb2wsIHMsIHNsZW4sIGhhc2gsIGNyZWF0ZSk7CisgICAgIH0KKysgICAgfQorICAgICByZXR1cm4gc2lkOworIH0KKyAKKy1jb25zdCBjaGFyICogcnBtc3RyUG9vbFN0cihycG1zdHJQb29sIHBvb2wsIHJwbXNpZCBzaWQpCisrc3RhdGljIGNvbnN0IGNoYXIgKiBycG1zdHJQb29sU3RyTm9Mb2NrKHJwbXN0clBvb2wgcG9vbCwgcnBtc2lkIHNpZCkKKyB7CisgICAgIGNvbnN0IGNoYXIgKnMgPSBOVUxMOworICAgICBpZiAocG9vbCAmJiBzaWQgPiAwICYmIHNpZCA8PSBwb29sLT5vZmZzX3NpemUpCitAQCAtNDAxLDEyICs0MTksMjUgQEAgY29uc3QgY2hhciAqIHJwbXN0clBvb2xTdHIocnBtc3RyUG9vbCBwb29sLCBycG1zaWQgc2lkKQorICAgICByZXR1cm4gczsKKyB9CisgCisrY29uc3QgY2hhciAqIHJwbXN0clBvb2xTdHIocnBtc3RyUG9vbCBwb29sLCBycG1zaWQgc2lkKQorK3sKKysgICAgY29uc3QgY2hhciAqcyA9IE5VTEw7CisrICAgICNwcmFnbWEgb21wIGNyaXRpY2FsKHJwbXN0cnBvb2wpCisrICAgIHsKKysgICAgcyA9IHJwbXN0clBvb2xTdHJOb0xvY2socG9vbCwgc2lkKTsKKysgICAgfQorKyAgICByZXR1cm4gczsKKyt9CisrCisgc2l6ZV90IHJwbXN0clBvb2xTdHJsZW4ocnBtc3RyUG9vbCBwb29sLCBycG1zaWQgc2lkKQorIHsKKyAgICAgc2l6ZV90IHNsZW4gPSAwOworKyAgICAjcHJhZ21hIG9tcCBjcml0aWNhbChycG1zdHJwb29sKQorKyAgICB7CisgICAgIGlmIChwb29sICYmIHNpZCA+IDAgJiYgc2lkIDw9IHBvb2wtPm9mZnNfc2l6ZSkgeworIAlzbGVuID0gc3RybGVuKHBvb2wtPm9mZnNbc2lkXSk7CisgICAgIH0KKysgICAgfQorICAgICByZXR1cm4gc2xlbjsKKyB9CisgCitAQCAtNDIxLDUgKzQ1MiwxMiBAQCBpbnQgcnBtc3RyUG9vbFN0cmVxKHJwbXN0clBvb2wgcG9vbEEsIHJwbXNpZCBzaWRBLAorIAorIHJwbXNpZCBycG1zdHJQb29sTnVtU3RyKHJwbXN0clBvb2wgcG9vbCkKKyB7CistICAgIHJldHVybiAocG9vbCAhPSBOVUxMKSA/IHBvb2wtPm9mZnNfc2l6ZSA6IDA7CisrICAgIHJwbXNpZCBpZCA9IDA7CisrICAgICNwcmFnbWEgb21wIGNyaXRpY2FsKHJwbXN0cnBvb2wpCisrICAgIHsKKysgICAgaWYgKHBvb2wpIHsKKysJaWQgPSBwb29sLT5vZmZzX3NpemU7CisrICAgIH0KKysgICAgfQorKyAgICByZXR1cm4gaWQ7CisgfQorLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwNC1idWlsZC1wYWNrLmMtcmVtb3ZlLXN0YXRpYy1sb2NhbC12YXJpYWJsZXMtZnJvbS1idWlsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwNC1idWlsZC1wYWNrLmMtcmVtb3ZlLXN0YXRpYy1sb2NhbC12YXJpYWJsZXMtZnJvbS1idWlsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0YTU2NTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9maWxlcy8wMDA0LWJ1aWxkLXBhY2suYy1yZW1vdmUtc3RhdGljLWxvY2FsLXZhcmlhYmxlcy1mcm9tLWJ1aWwucGF0Y2gKQEAgLTAsMCArMSwzMzcgQEAKK0Zyb20gZWMzMDU3OTVhMzAyZDIyNjM0M2U2OTAzMWZmMjAyNGRmY2RlNjljMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogVGh1LCA4IEp1biAyMDE3IDE3OjA4OjA5ICswMzAwCitTdWJqZWN0OiBbUEFUQ0ggMy8zXSBidWlsZC9wYWNrLmM6IHJlbW92ZSBzdGF0aWMgbG9jYWwgdmFyaWFibGVzIGZyb20KKyBidWlsZEhvc3QoKSBhbmQgZ2V0QnVpbGRUaW1lKCkKKworVGhlaXIgdXNlIGlzIGNhdXNpbmcgZGlmZmljdWx0IHRvIGRpYWdub3plIGRhdGEgcmFjZXMgd2hlbiBidWlsZGluZyBtdWx0aXBsZQorcGFja2FnZXMgaW4gcGFyYWxsZWwsIGFuZCBpcyBhIGJhZCBpZGVhIGluIGdlbmVyYWwsIGFzIGl0IGFsc28gbWFrZXMgaXQgbW9yZQorZGlmZmljdWx0IHRvIHJlYXNvbiBhYm91dCBjb2RlLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L3JwbS9wdWxsLzIyNl0KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorCisKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgYnVpbGQvYnVpbGQuYyAgICAgICAgICAgICB8IDU0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLQorIGJ1aWxkL3BhY2suYyAgICAgICAgICAgICAgfCA4NCArKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGJ1aWxkL3JwbWJ1aWxkX2ludGVybmFsLmggfCAgOCArKystLQorIDMgZmlsZXMgY2hhbmdlZCwgNzQgaW5zZXJ0aW9ucygrKSwgNzIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9idWlsZC9idWlsZC5jIGIvYnVpbGQvYnVpbGQuYworaW5kZXggNWY5OWM4ZGI3Li4wOWExMzExYzUgMTAwNjQ0CistLS0gYS9idWlsZC9idWlsZC5jCisrKysgYi9idWlsZC9idWlsZC5jCitAQCAtNiw2ICs2LDggQEAKKyAjaW5jbHVkZSAic3lzdGVtLmgiCisgCisgI2luY2x1ZGUgPGVycm5vLmg+CisrI2luY2x1ZGUgPG5ldGRiLmg+CisrI2luY2x1ZGUgPHRpbWUuaD4KKyAjaW5jbHVkZSA8c3lzL3dhaXQuaD4KKyAKKyAjaW5jbHVkZSA8cnBtL3JwbWxvZy5oPgorQEAgLTE2LDYgKzE4LDUwIEBACisgCisgI2luY2x1ZGUgImRlYnVnLmgiCisgCisrc3RhdGljIHJwbV90aW1lX3QgZ2V0QnVpbGRUaW1lKHZvaWQpCisreworKyAgICBycG1fdGltZV90IGJ1aWxkVGltZSA9IDA7CisrICAgIGNoYXIgKnNyY2RhdGU7CisrICAgIHRpbWVfdCBlcG9jaDsKKysgICAgY2hhciAqZW5kcHRyOworKworKyAgICBzcmNkYXRlID0gZ2V0ZW52KCJTT1VSQ0VfREFURV9FUE9DSCIpOworKyAgICBpZiAoc3JjZGF0ZSkgeworKyAgICAgICAgZXJybm8gPSAwOworKyAgICAgICAgZXBvY2ggPSBzdHJ0b2woc3JjZGF0ZSwgJmVuZHB0ciwgMTApOworKyAgICAgICAgaWYgKHNyY2RhdGUgPT0gZW5kcHRyIHx8ICplbmRwdHIgfHwgZXJybm8gIT0gMCkKKysgICAgICAgICAgICBycG1sb2coUlBNTE9HX0VSUiwgXygidW5hYmxlIHRvIHBhcnNlIFNPVVJDRV9EQVRFX0VQT0NIXG4iKSk7CisrICAgICAgICBlbHNlCisrICAgICAgICAgICAgYnVpbGRUaW1lID0gKGludDMyX3QpIGVwb2NoOworKyAgICB9IGVsc2UKKysgICAgICAgIGJ1aWxkVGltZSA9IChpbnQzMl90KSB0aW1lKE5VTEwpOworKworKyAgICByZXR1cm4gYnVpbGRUaW1lOworK30KKysKKytzdGF0aWMgY2hhciAqIGJ1aWxkSG9zdCh2b2lkKQorK3sKKysgICAgY2hhciogaG9zdG5hbWU7CisrICAgIHN0cnVjdCBob3N0ZW50ICpoYm47CisrICAgIGNoYXIgKmJoTWFjcm87CisrCisrICAgIGJoTWFjcm8gPSBycG1FeHBhbmQoIiV7P19idWlsZGhvc3R9IiwgTlVMTCk7CisrICAgIGlmIChzdHJjbXAoYmhNYWNybywgIiIpICE9IDApIHsKKysgICAgICAgIHJhc3ByaW50ZigmaG9zdG5hbWUsICIlcyIsIGJoTWFjcm8pOworKyAgICB9IGVsc2UgeworKyAgICAgICAgaG9zdG5hbWUgPSByY2FsbG9jKDEwMjQsIHNpemVvZigqaG9zdG5hbWUpKTsKKysgICAgICAgICh2b2lkKSBnZXRob3N0bmFtZShob3N0bmFtZSwgMTAyNCk7CisrICAgICAgICBoYm4gPSBnZXRob3N0YnluYW1lKGhvc3RuYW1lKTsKKysgICAgICAgIGlmIChoYm4pCisrICAgICAgICAgICAgc3RyY3B5KGhvc3RuYW1lLCBoYm4tPmhfbmFtZSk7CisrICAgICAgICBlbHNlCisrICAgICAgICAgICAgcnBtbG9nKFJQTUxPR19XQVJOSU5HLAorKyAgICAgICAgICAgICAgICAgICAgXygiQ291bGQgbm90IGNhbm9uaWNhbGl6ZSBob3N0bmFtZTogJXNcbiIpLCBob3N0bmFtZSk7CisrICAgIH0KKysgICAgZnJlZShiaE1hY3JvKTsKKysgICAgcmV0dXJuKGhvc3RuYW1lKTsKKyt9CisrCisgLyoqCisgICovCisgc3RhdGljIHJwbVJDIGRvUm1Tb3VyY2UocnBtU3BlYyBzcGVjKQorQEAgLTIwMyw2ICsyNDksOSBAQCBzdGF0aWMgcnBtUkMgYnVpbGRTcGVjKEJUQV90IGJ1aWxkQXJncywgcnBtU3BlYyBzcGVjLCBpbnQgd2hhdCkKKyAgICAgcnBtUkMgcmMgPSBSUE1SQ19PSzsKKyAgICAgaW50IHRlc3QgPSAod2hhdCAmIFJQTUJVSUxEX05PQlVJTEQpOworICAgICBjaGFyICpjb29raWUgPSBidWlsZEFyZ3MtPmNvb2tpZSA/IHhzdHJkdXAoYnVpbGRBcmdzLT5jb29raWUpIDogTlVMTDsKKysgICAgY29uc3QgY2hhciogaG9zdCA9IGJ1aWxkSG9zdCgpOworKyAgICBycG1fdGltZV90IGJ1aWxkVGltZSA9IGdldEJ1aWxkVGltZSgpOworKworIAorICAgICBpZiAocnBtRXhwYW5kTnVtZXJpYygiJXs/c291cmNlX2RhdGVfZXBvY2hfZnJvbV9jaGFuZ2Vsb2d9IikgJiYKKyAJZ2V0ZW52KCJTT1VSQ0VfREFURV9FUE9DSCIpID09IE5VTEwpIHsKK0BAIC0yNzEsMTEgKzMyMCwxMSBAQCBzdGF0aWMgcnBtUkMgYnVpbGRTcGVjKEJUQV90IGJ1aWxkQXJncywgcnBtU3BlYyBzcGVjLCBpbnQgd2hhdCkKKyAJCWdvdG8gZXhpdDsKKyAKKyAJaWYgKCgod2hhdCAmIFJQTUJVSUxEX1BBQ0tBR0VTT1VSQ0UpICYmICF0ZXN0KSAmJgorLQkgICAgKHJjID0gcGFja2FnZVNvdXJjZXMoc3BlYywgJmNvb2tpZSkpKQorKwkgICAgKHJjID0gcGFja2FnZVNvdXJjZXMoc3BlYywgJmNvb2tpZSwgYnVpbGRUaW1lLCBob3N0KSkpCisgCQlyZXR1cm4gcmM7CisgCisgCWlmICgoKHdoYXQgJiBSUE1CVUlMRF9QQUNLQUdFQklOQVJZKSAmJiAhdGVzdCkgJiYKKy0JICAgIChyYyA9IHBhY2thZ2VCaW5hcmllcyhzcGVjLCBjb29raWUsIChkaWRCdWlsZCA9PSAwKSkpKQorKwkgICAgKHJjID0gcGFja2FnZUJpbmFyaWVzKHNwZWMsIGNvb2tpZSwgKGRpZEJ1aWxkID09IDApLCBidWlsZFRpbWUsIGhvc3QpKSkKKyAJCWdvdG8gZXhpdDsKKyAJCisgCWlmICgod2hhdCAmIFJQTUJVSUxEX0NMRUFOKSAmJgorQEAgLTI5NSw2ICszNDQsNyBAQCBzdGF0aWMgcnBtUkMgYnVpbGRTcGVjKEJUQV90IGJ1aWxkQXJncywgcnBtU3BlYyBzcGVjLCBpbnQgd2hhdCkKKyAJKHZvaWQpIHVubGluayhzcGVjLT5zcGVjRmlsZSk7CisgCisgZXhpdDoKKysgICAgZnJlZShob3N0KTsKKyAgICAgZnJlZShjb29raWUpOworICAgICBzcGVjLT5yb290RGlyID0gTlVMTDsKKyAgICAgaWYgKHJjICE9IFJQTVJDX09LICYmIHJwbWxvZ0dldE5yZWNzKCkgPiAwKSB7CitkaWZmIC0tZ2l0IGEvYnVpbGQvcGFjay5jIGIvYnVpbGQvcGFjay5jCitpbmRleCBlZDViOWFiNGUuLjYyNDI3MDY1YSAxMDA2NDQKKy0tLSBhL2J1aWxkL3BhY2suYworKysrIGIvYnVpbGQvcGFjay5jCitAQCAtNiw4ICs2LDYgQEAKKyAjaW5jbHVkZSAic3lzdGVtLmgiCisgCisgI2luY2x1ZGUgPGVycm5vLmg+CistI2luY2x1ZGUgPG5ldGRiLmg+CistI2luY2x1ZGUgPHRpbWUuaD4KKyAjaW5jbHVkZSA8c3lzL3dhaXQuaD4KKyAKKyAjaW5jbHVkZSA8cnBtL3JwbWxpYi5oPgkJCS8qIFJQTVNJR1RBRyosIHJwbVJlYWRQYWNrYWdlRmlsZSAqLworQEAgLTE1MSw1NyArMTQ5LDYgQEAgZXhpdDoKKyAgICAgcmV0dXJuIHJjOworIH0KKyAKKy1zdGF0aWMgcnBtX3RpbWVfdCAqIGdldEJ1aWxkVGltZSh2b2lkKQorLXsKKy0gICAgc3RhdGljIHJwbV90aW1lX3QgYnVpbGRUaW1lWzFdOworLSAgICBjaGFyICpzcmNkYXRlOworLSAgICB0aW1lX3QgZXBvY2g7CistICAgIGNoYXIgKmVuZHB0cjsKKy0KKy0gICAgaWYgKGJ1aWxkVGltZVswXSA9PSAwKSB7CistICAgICAgICBzcmNkYXRlID0gZ2V0ZW52KCJTT1VSQ0VfREFURV9FUE9DSCIpOworLSAgICAgICAgaWYgKHNyY2RhdGUpIHsKKy0gICAgICAgICAgICBlcnJubyA9IDA7CistICAgICAgICAgICAgZXBvY2ggPSBzdHJ0b2woc3JjZGF0ZSwgJmVuZHB0ciwgMTApOworLSAgICAgICAgICAgIGlmIChzcmNkYXRlID09IGVuZHB0ciB8fCAqZW5kcHRyIHx8IGVycm5vICE9IDApCistICAgICAgICAgICAgICAgIHJwbWxvZyhSUE1MT0dfRVJSLCBfKCJ1bmFibGUgdG8gcGFyc2UgU09VUkNFX0RBVEVfRVBPQ0hcbiIpKTsKKy0gICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgICAgIGJ1aWxkVGltZVswXSA9IChpbnQzMl90KSBlcG9jaDsKKy0gICAgICAgIH0gZWxzZQorLSAgICAgICAgICAgIGJ1aWxkVGltZVswXSA9IChpbnQzMl90KSB0aW1lKE5VTEwpOworLSAgICB9CistCistICAgIHJldHVybiBidWlsZFRpbWU7CistfQorLQorLXN0YXRpYyBjb25zdCBjaGFyICogYnVpbGRIb3N0KHZvaWQpCisteworLSAgICBzdGF0aWMgY2hhciBob3N0bmFtZVsxMDI0XTsKKy0gICAgc3RhdGljIGludCBvbmVzaG90ID0gMDsKKy0gICAgc3RydWN0IGhvc3RlbnQgKmhibjsKKy0gICAgY2hhciAqYmhNYWNybzsKKy0KKy0gICAgaWYgKCEgb25lc2hvdCkgeworLSAgICAgICAgYmhNYWNybyA9IHJwbUV4cGFuZCgiJXs/X2J1aWxkaG9zdH0iLCBOVUxMKTsKKy0gICAgICAgIGlmIChzdHJjbXAoYmhNYWNybywgIiIpICE9IDAgJiYgc3RybGVuKGJoTWFjcm8pIDwgMTAyNCkgeworLSAgICAgICAgICAgIHN0cmNweShob3N0bmFtZSwgYmhNYWNybyk7CistICAgICAgICB9IGVsc2UgeworLSAgICAgICAgICAgIGlmIChzdHJjbXAoYmhNYWNybywgIiIpICE9IDApCistICAgICAgICAgICAgICAgIHJwbWxvZyhSUE1MT0dfV0FSTklORywgXygiVGhlIF9idWlsZGhvc3QgbWFjcm8gaXMgdG9vIGxvbmdcbiIpKTsKKy0gICAgICAgICAgICAodm9pZCkgZ2V0aG9zdG5hbWUoaG9zdG5hbWUsIHNpemVvZihob3N0bmFtZSkpOworLSAgICAgICAgICAgIGhibiA9IGdldGhvc3RieW5hbWUoaG9zdG5hbWUpOworLSAgICAgICAgICAgIGlmIChoYm4pCistICAgICAgICAgICAgICAgIHN0cmNweShob3N0bmFtZSwgaGJuLT5oX25hbWUpOworLSAgICAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICAgICAgcnBtbG9nKFJQTUxPR19XQVJOSU5HLAorLSAgICAgICAgICAgICAgICAgICAgICAgIF8oIkNvdWxkIG5vdCBjYW5vbmljYWxpemUgaG9zdG5hbWU6ICVzXG4iKSwgaG9zdG5hbWUpOworLSAgICAgICAgfQorLSAgICAgICAgZnJlZShiaE1hY3JvKTsKKy0gICAgICAgIG9uZXNob3QgPSAxOworLSAgICB9CistICAgIHJldHVybihob3N0bmFtZSk7CistfQorLQorIHN0YXRpYyBycG1SQyBwcm9jZXNzU2NyaXB0RmlsZXMocnBtU3BlYyBzcGVjLCBQYWNrYWdlIHBrZykKKyB7CisgICAgIHN0cnVjdCBUcmlnZ2VyRmlsZUVudHJ5ICpwOworQEAgLTMwOCw3ICsyNTUsOCBAQCBzdGF0aWMgaW50IGhhdmVSaWNoRGVwKFBhY2thZ2UgcGtnKQorIH0KKyAKKyBzdGF0aWMgcnBtUkMgd3JpdGVSUE0oUGFja2FnZSBwa2csIHVuc2lnbmVkIGNoYXIgKiogcGtnaWRwLAorLQkJICAgICAgY29uc3QgY2hhciAqZmlsZU5hbWUsIGNoYXIgKipjb29raWUpCisrCQkgICAgICBjb25zdCBjaGFyICpmaWxlTmFtZSwgY2hhciAqKmNvb2tpZSwKKysJCSAgICAgIHJwbV90aW1lX3QgYnVpbGRUaW1lLCBjb25zdCBjaGFyKiBidWlsZEhvc3QpCisgeworICAgICBGRF90IGZkID0gTlVMTDsKKyAgICAgY2hhciAqIHJwbWlvX2ZsYWdzID0gTlVMTDsKK0BAIC0zOTcsNyArMzQ1LDcgQEAgc3RhdGljIHJwbVJDIHdyaXRlUlBNKFBhY2thZ2UgcGtnLCB1bnNpZ25lZCBjaGFyICoqIHBrZ2lkcCwKKyAKKyAgICAgLyogQ3JlYXRlIGFuZCBhZGQgdGhlIGNvb2tpZSAqLworICAgICBpZiAoY29va2llKSB7CistCXJhc3ByaW50Zihjb29raWUsICIlcyAlZCIsIGJ1aWxkSG9zdCgpLCAoaW50KSAoKmdldEJ1aWxkVGltZSgpKSk7CisrCXJhc3ByaW50Zihjb29raWUsICIlcyAlZCIsIGJ1aWxkSG9zdCwgYnVpbGRUaW1lKTsKKyAJaGVhZGVyUHV0U3RyaW5nKHBrZy0+aGVhZGVyLCBSUE1UQUdfQ09PS0lFLCAqY29va2llKTsKKyAgICAgfQorICAgICAKK0BAIC01NDYsNyArNDk0LDcgQEAgc3RhdGljIHJwbVJDIGNoZWNrUGFja2FnZXMoY2hhciAqcGtnY2hlY2spCisgICAgIHJldHVybiBSUE1SQ19PSzsKKyB9CisgCistc3RhdGljIHJwbVJDIHBhY2thZ2VCaW5hcnkocnBtU3BlYyBzcGVjLCBQYWNrYWdlIHBrZywgY29uc3QgY2hhciAqY29va2llLCBpbnQgY2hlYXRpbmcsIGNoYXIqKiBmaWxlbmFtZSkKKytzdGF0aWMgcnBtUkMgcGFja2FnZUJpbmFyeShycG1TcGVjIHNwZWMsIFBhY2thZ2UgcGtnLCBjb25zdCBjaGFyICpjb29raWUsIGludCBjaGVhdGluZywgY2hhcioqIGZpbGVuYW1lLCBycG1fdGltZV90IGJ1aWxkVGltZSwgY29uc3QgY2hhciogYnVpbGRIb3N0KQorIHsKKyAJY29uc3QgY2hhciAqZXJyb3JTdHJpbmc7CisgCXJwbVJDIHJjID0gUlBNUkNfT0s7CitAQCAtNTY1LDggKzUxMyw4IEBAIHN0YXRpYyBycG1SQyBwYWNrYWdlQmluYXJ5KHJwbVNwZWMgc3BlYywgUGFja2FnZSBwa2csIGNvbnN0IGNoYXIgKmNvb2tpZSwgaW50IGNoCisgCWhlYWRlckNvcHlUYWdzKHNwZWMtPnBhY2thZ2VzLT5oZWFkZXIsIHBrZy0+aGVhZGVyLCBjb3B5VGFncyk7CisgCQorIAloZWFkZXJQdXRTdHJpbmcocGtnLT5oZWFkZXIsIFJQTVRBR19SUE1WRVJTSU9OLCBWRVJTSU9OKTsKKy0JaGVhZGVyUHV0U3RyaW5nKHBrZy0+aGVhZGVyLCBSUE1UQUdfQlVJTERIT1NULCBidWlsZEhvc3QoKSk7CistCWhlYWRlclB1dFVpbnQzMihwa2ctPmhlYWRlciwgUlBNVEFHX0JVSUxEVElNRSwgZ2V0QnVpbGRUaW1lKCksIDEpOworKwloZWFkZXJQdXRTdHJpbmcocGtnLT5oZWFkZXIsIFJQTVRBR19CVUlMREhPU1QsIGJ1aWxkSG9zdCk7CisrCWhlYWRlclB1dFVpbnQzMihwa2ctPmhlYWRlciwgUlBNVEFHX0JVSUxEVElNRSwgJmJ1aWxkVGltZSwgMSk7CisgCisgCWlmIChzcGVjLT5zb3VyY2VQa2dJZCAhPSBOVUxMKSB7CisgCSAgICBoZWFkZXJQdXRCaW4ocGtnLT5oZWFkZXIsIFJQTVRBR19TT1VSQ0VQS0dJRCwgc3BlYy0+c291cmNlUGtnSWQsMTYpOworQEAgLTYwNCw3ICs1NTIsNyBAQCBzdGF0aWMgcnBtUkMgcGFja2FnZUJpbmFyeShycG1TcGVjIHNwZWMsIFBhY2thZ2UgcGtnLCBjb25zdCBjaGFyICpjb29raWUsIGludCBjaAorIAkgICAgZnJlZShiaW5ScG0pOworIAl9CisgCistCXJjID0gd3JpdGVSUE0ocGtnLCBOVUxMLCAqZmlsZW5hbWUsIE5VTEwpOworKwlyYyA9IHdyaXRlUlBNKHBrZywgTlVMTCwgKmZpbGVuYW1lLCBOVUxMLCBidWlsZFRpbWUsIGJ1aWxkSG9zdCk7CisgCWlmIChyYyA9PSBSUE1SQ19PSykgeworIAkgICAgLyogRG8gY2hlY2sgZWFjaCB3cml0dGVuIHBhY2thZ2UgaWYgZW5hYmxlZCAqLworIAkgICAgY2hhciAqcGtnY2hlY2sgPSBycG1FeHBhbmQoIiV7P19idWlsZF9wa2djaGVja30gIiwgKmZpbGVuYW1lLCBOVUxMKTsKK0BAIC02MjQsNyArNTcyLDcgQEAgc3RydWN0IGJpbmFyeVBhY2thZ2VUYXNrRGF0YQorICAgICBzdHJ1Y3QgYmluYXJ5UGFja2FnZVRhc2tEYXRhICpuZXh0OworIH07CisgCistc3RhdGljIHN0cnVjdCBiaW5hcnlQYWNrYWdlVGFza0RhdGEqIHJ1bkJpbmFyeVBhY2thZ2VUYXNrcyhycG1TcGVjIHNwZWMsIGNvbnN0IGNoYXIgKmNvb2tpZSwgaW50IGNoZWF0aW5nKQorK3N0YXRpYyBzdHJ1Y3QgYmluYXJ5UGFja2FnZVRhc2tEYXRhKiBydW5CaW5hcnlQYWNrYWdlVGFza3MocnBtU3BlYyBzcGVjLCBjb25zdCBjaGFyICpjb29raWUsIGludCBjaGVhdGluZywgcnBtX3RpbWVfdCBidWlsZFRpbWUsIGNoYXIqIGJ1aWxkSG9zdCkKKyB7CisgICAgIHN0cnVjdCBiaW5hcnlQYWNrYWdlVGFza0RhdGEgKnRhc2tzID0gTlVMTDsKKyAgICAgc3RydWN0IGJpbmFyeVBhY2thZ2VUYXNrRGF0YSAqdGFzayA9IE5VTEw7CitAQCAtNjM2LDcgKzU4NCw3IEBAIHN0YXRpYyBzdHJ1Y3QgYmluYXJ5UGFja2FnZVRhc2tEYXRhKiBydW5CaW5hcnlQYWNrYWdlVGFza3MocnBtU3BlYyBzcGVjLCBjb25zdCBjCisgICAgICAgICBpZiAocGtnID09IHNwZWMtPnBhY2thZ2VzKSB7CisgICAgICAgICAgICAgLy8gdGhlIGZpcnN0IHBhY2thZ2UgbmVlZHMgdG8gYmUgcHJvY2Vzc2VkIGFoZWFkIG9mIG90aGVycywgYXMgdGhleSBjb3B5CisgICAgICAgICAgICAgLy8gY2hhbmdlbG9nIGRhdGEgZnJvbSBpdCwgYW5kIHNvIG90aGVyd2lzZSBkYXRhIHJhY2VzIHdvdWxkIGhhcHBlbgorLSAgICAgICAgICAgIHRhc2stPnJlc3VsdCA9IHBhY2thZ2VCaW5hcnkoc3BlYywgcGtnLCBjb29raWUsIGNoZWF0aW5nLCAmKHRhc2stPmZpbGVuYW1lKSk7CisrICAgICAgICAgICAgdGFzay0+cmVzdWx0ID0gcGFja2FnZUJpbmFyeShzcGVjLCBwa2csIGNvb2tpZSwgY2hlYXRpbmcsICYodGFzay0+ZmlsZW5hbWUpLCBidWlsZFRpbWUsIGJ1aWxkSG9zdCk7CisgICAgICAgICAgICAgcnBtbG9nKFJQTUxPR19OT1RJQ0UsIF8oIkZpbmlzaGVkIGJpbmFyeSBwYWNrYWdlIGpvYiwgcmVzdWx0ICVkLCBmaWxlbmFtZSAlc1xuIiksIHRhc2stPnJlc3VsdCwgdGFzay0+ZmlsZW5hbWUpOworICAgICAgICAgICAgIHRhc2tzID0gdGFzazsKKyAgICAgICAgIH0KK0BAIC02NTMsNyArNjAxLDcgQEAgc3RhdGljIHN0cnVjdCBiaW5hcnlQYWNrYWdlVGFza0RhdGEqIHJ1bkJpbmFyeVBhY2thZ2VUYXNrcyhycG1TcGVjIHNwZWMsIGNvbnN0IGMKKyAgICAgICAgIGlmICh0YXNrICE9IHRhc2tzKQorICAgICAgICAgI3ByYWdtYSBvbXAgdGFzaworICAgICAgICAgeworLSAgICAgICAgICAgIHRhc2stPnJlc3VsdCA9IHBhY2thZ2VCaW5hcnkoc3BlYywgdGFzay0+cGtnLCBjb29raWUsIGNoZWF0aW5nLCAmKHRhc2stPmZpbGVuYW1lKSk7CisrICAgICAgICAgICAgdGFzay0+cmVzdWx0ID0gcGFja2FnZUJpbmFyeShzcGVjLCB0YXNrLT5wa2csIGNvb2tpZSwgY2hlYXRpbmcsICYodGFzay0+ZmlsZW5hbWUpLCBidWlsZFRpbWUsIGJ1aWxkSG9zdCk7CisgICAgICAgICAgICAgcnBtbG9nKFJQTUxPR19OT1RJQ0UsIF8oIkZpbmlzaGVkIGJpbmFyeSBwYWNrYWdlIGpvYiwgcmVzdWx0ICVkLCBmaWxlbmFtZSAlc1xuIiksIHRhc2stPnJlc3VsdCwgdGFzay0+ZmlsZW5hbWUpOworICAgICAgICAgfQorICAgICB9CitAQCAtNjcxLDExICs2MTksMTEgQEAgc3RhdGljIHZvaWQgZnJlZUJpbmFyeVBhY2thZ2VUYXNrcyhzdHJ1Y3QgYmluYXJ5UGFja2FnZVRhc2tEYXRhKiB0YXNrcykKKyAgICAgfQorIH0KKyAKKy1ycG1SQyBwYWNrYWdlQmluYXJpZXMocnBtU3BlYyBzcGVjLCBjb25zdCBjaGFyICpjb29raWUsIGludCBjaGVhdGluZykKKytycG1SQyBwYWNrYWdlQmluYXJpZXMocnBtU3BlYyBzcGVjLCBjb25zdCBjaGFyICpjb29raWUsIGludCBjaGVhdGluZywgcnBtX3RpbWVfdCBidWlsZFRpbWUsIGNoYXIqIGJ1aWxkSG9zdCkKKyB7CisgICAgIGNoYXIgKnBrZ2xpc3QgPSBOVUxMOworIAorLSAgICBzdHJ1Y3QgYmluYXJ5UGFja2FnZVRhc2tEYXRhICp0YXNrcyA9IHJ1bkJpbmFyeVBhY2thZ2VUYXNrcyhzcGVjLCBjb29raWUsIGNoZWF0aW5nKTsKKysgICAgc3RydWN0IGJpbmFyeVBhY2thZ2VUYXNrRGF0YSAqdGFza3MgPSBydW5CaW5hcnlQYWNrYWdlVGFza3Moc3BlYywgY29va2llLCBjaGVhdGluZywgYnVpbGRUaW1lLCBidWlsZEhvc3QpOworIAorICAgICBmb3IgKHN0cnVjdCBiaW5hcnlQYWNrYWdlVGFza0RhdGEgKnRhc2sgPSB0YXNrczsgdGFzayAhPSBOVUxMOyB0YXNrID0gdGFzay0+bmV4dCkgeworICAgICAgICAgaWYgKHRhc2stPnJlc3VsdCA9PSBSUE1SQ19PSykgeworQEAgLTcwMiwyMiArNjUwLDIyIEBAIHJwbVJDIHBhY2thZ2VCaW5hcmllcyhycG1TcGVjIHNwZWMsIGNvbnN0IGNoYXIgKmNvb2tpZSwgaW50IGNoZWF0aW5nKQorICAgICByZXR1cm4gUlBNUkNfT0s7CisgfQorIAorLXJwbVJDIHBhY2thZ2VTb3VyY2VzKHJwbVNwZWMgc3BlYywgY2hhciAqKmNvb2tpZSkKKytycG1SQyBwYWNrYWdlU291cmNlcyhycG1TcGVjIHNwZWMsIGNoYXIgKipjb29raWUsIHJwbV90aW1lX3QgYnVpbGRUaW1lLCBjaGFyKiBidWlsZEhvc3QpCisgeworICAgICBQYWNrYWdlIHNvdXJjZVBrZyA9IHNwZWMtPnNvdXJjZVBhY2thZ2U7CisgICAgIHJwbVJDIHJjOworIAorICAgICAvKiBBZGQgc29tZSBjcnVmdCAqLworICAgICBoZWFkZXJQdXRTdHJpbmcoc291cmNlUGtnLT5oZWFkZXIsIFJQTVRBR19SUE1WRVJTSU9OLCBWRVJTSU9OKTsKKy0gICAgaGVhZGVyUHV0U3RyaW5nKHNvdXJjZVBrZy0+aGVhZGVyLCBSUE1UQUdfQlVJTERIT1NULCBidWlsZEhvc3QoKSk7CistICAgIGhlYWRlclB1dFVpbnQzMihzb3VyY2VQa2ctPmhlYWRlciwgUlBNVEFHX0JVSUxEVElNRSwgZ2V0QnVpbGRUaW1lKCksIDEpOworKyAgICBoZWFkZXJQdXRTdHJpbmcoc291cmNlUGtnLT5oZWFkZXIsIFJQTVRBR19CVUlMREhPU1QsIGJ1aWxkSG9zdCk7CisrICAgIGhlYWRlclB1dFVpbnQzMihzb3VyY2VQa2ctPmhlYWRlciwgUlBNVEFHX0JVSUxEVElNRSwgJmJ1aWxkVGltZSwgMSk7CisgCisgICAgIC8qIFhYWCB0aGlzIHNob3VsZCBiZSAlX3NycG1kaXIgKi8KKyAgICAgewljaGFyICpmbiA9IHJwbUdldFBhdGgoIiV7X3NyY3JwbWRpcn0vIiwgc3BlYy0+c291cmNlUnBtTmFtZSxOVUxMKTsKKyAJY2hhciAqcGtnY2hlY2sgPSBycG1FeHBhbmQoIiV7P19idWlsZF9wa2djaGVja19zcnBtfSAiLCBmbiwgTlVMTCk7CisgCisgCXNwZWMtPnNvdXJjZVBrZ0lkID0gTlVMTDsKKy0JcmMgPSB3cml0ZVJQTShzb3VyY2VQa2csICZzcGVjLT5zb3VyY2VQa2dJZCwgZm4sIGNvb2tpZSk7CisrCXJjID0gd3JpdGVSUE0oc291cmNlUGtnLCAmc3BlYy0+c291cmNlUGtnSWQsIGZuLCBjb29raWUsIGJ1aWxkVGltZSwgYnVpbGRIb3N0KTsKKyAKKyAJLyogRG8gY2hlY2sgU1JQTSBwYWNrYWdlIGlmIGVuYWJsZWQgKi8KKyAJaWYgKHJjID09IFJQTVJDX09LICYmIHBrZ2NoZWNrWzBdICE9ICcgJykgeworZGlmZiAtLWdpdCBhL2J1aWxkL3JwbWJ1aWxkX2ludGVybmFsLmggYi9idWlsZC9ycG1idWlsZF9pbnRlcm5hbC5oCitpbmRleCA4MzUxYTZhMzQuLjc5NzMzN2NhNyAxMDA2NDQKKy0tLSBhL2J1aWxkL3JwbWJ1aWxkX2ludGVybmFsLmgKKysrKyBiL2J1aWxkL3JwbWJ1aWxkX2ludGVybmFsLmgKK0BAIC00MDgsMTkgKzQwOCwyMyBAQCBycG1SQyBwcm9jZXNzU291cmNlRmlsZXMocnBtU3BlYyBzcGVjLCBycG1CdWlsZFBrZ0ZsYWdzIHBrZ0ZsYWdzKTsKKyAgKiBAcGFyYW0gc3BlYwkJc3BlYyBmaWxlIGNvbnRyb2wgc3RydWN0dXJlCisgICogQHBhcmFtIGNvb2tpZQlidWlsZCBpZGVudGlmaWVyICJjb29raWUiIG9yIE5VTEwKKyAgKiBAcGFyYW0gY2hlYXRpbmcJd2FzIGJ1aWxkIHNob3J0Y2lyY3VpdGVkPworKyAqIEBwYXJhbSBidWlsZFRpbWUJdGhlIGJ1aWxkIHRpbWVzdGFtcCB0aGF0IGdvZXMgaW50byBwYWNrYWdlcworKyAqIEBwYXJhbSBidWlsZEhvc3QJdGhlIGhvc3RuYW1lIHdoZXJlIHRoZSBidWlsZCBpcyBoYXBwZW5pbmcKKyAgKiBAcmV0dXJuCQlSUE1SQ19PSyBvbiBzdWNjZXNzCisgICovCisgUlBNX0dOVUNfSU5URVJOQUwKKy1ycG1SQyBwYWNrYWdlQmluYXJpZXMocnBtU3BlYyBzcGVjLCBjb25zdCBjaGFyICpjb29raWUsIGludCBjaGVhdGluZyk7CisrcnBtUkMgcGFja2FnZUJpbmFyaWVzKHJwbVNwZWMgc3BlYywgY29uc3QgY2hhciAqY29va2llLCBpbnQgY2hlYXRpbmcsIHJwbV90aW1lX3QgYnVpbGRUaW1lLCBjaGFyKiBidWlsZEhvc3QpOworIAorIC8qKiBcaW5ncm91cCBycG1idWlsZAorICAqIEdlbmVyYXRlIHNvdXJjZSBwYWNrYWdlLgorICAqIEBwYXJhbSBzcGVjCQlzcGVjIGZpbGUgY29udHJvbCBzdHJ1Y3R1cmUKKyAgKiBAcmV0dmFsIGNvb2tpZQlidWlsZCBpZGVudGlmaWVyICJjb29raWUiIG9yIE5VTEwKKysgKiBAcGFyYW0gYnVpbGRUaW1lCXRoZSBidWlsZCB0aW1lc3RhbXAgdGhhdCBnb2VzIGludG8gcGFja2FnZXMKKysgKiBAcGFyYW0gYnVpbGRIb3N0CXRoZSBob3N0bmFtZSB3aGVyZSB0aGUgYnVpbGQgaXMgaGFwcGVuaW5nCisgICogQHJldHVybgkJUlBNUkNfT0sgb24gc3VjY2VzcworICAqLworIFJQTV9HTlVDX0lOVEVSTkFMCistcnBtUkMgcGFja2FnZVNvdXJjZXMocnBtU3BlYyBzcGVjLCBjaGFyICoqY29va2llKTsKKytycG1SQyBwYWNrYWdlU291cmNlcyhycG1TcGVjIHNwZWMsIGNoYXIgKipjb29raWUsIHJwbV90aW1lX3QgYnVpbGRUaW1lLCBjaGFyKiBidWlsZEhvc3QpOworIAorIFJQTV9HTlVDX0lOVEVSTkFMCisgaW50IGFkZExhbmdUYWcocnBtU3BlYyBzcGVjLCBIZWFkZXIgaCwgcnBtVGFnVmFsIHRhZywKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL3JwbV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9ycG1fZ2l0LmJiCmluZGV4IGIwZjU3ODAuLjc4NjYzMTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL3JwbV9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vcnBtX2dpdC5iYgpAQCAtMzgsOCArMzgsMTMgQEAKICAgICAgICAgICAgZmlsZTovLzAwMTEtRG8tbm90LXJlcXVpcmUtdGhhdC1FTEYtYmluYXJpZXMtYXJlLWV4ZWN1dGFibGUtdG8tYi5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDEyLVVzZS1jb25kaXRpb25hbC10by1hY2Nlc3MtX2RvY2Rpci1pbi1tYWNyb3MuaW4ucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAxMy1BZGQtYS1uZXctb3B0aW9uLWFsbGRlcHMtdG8tcnBtZGVwcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVNwbGl0LWJpbmFyeS1wYWNrYWdlLWJ1aWxkaW5nLWludG8tYS1zZXBhcmF0ZS1mdW5jdGkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1SdW4tYmluYXJ5LXBhY2thZ2UtY3JlYXRpb24tdmlhLXRocmVhZC1wb29scy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLXJwbXN0cnBvb2wuYy1tYWtlLW9wZXJhdGlvbnMtb3Zlci1zdHJpbmctcG9vbHMtdGhyZWEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1idWlsZC1wYWNrLmMtcmVtb3ZlLXN0YXRpYy1sb2NhbC12YXJpYWJsZXMtZnJvbS1idWlsLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtcGVybC1kaXNhYmxlLWF1dG8tcmVxcy5wYXRjaCBcCiAgICAgICAgICAgICIKK1VQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgogCiBQViA9ICI0LjEzLjkwK2dpdCR7U1JDUFZ9IgogUEUgPSAiMSIKQEAgLTQ3LDggKzUyLDggQEAKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIAotREVQRU5EUyA9ICJuc3MgbGliYXJjaGl2ZSBkYiBmaWxlIHBvcHQgeHogZGJ1cyBlbGZ1dGlscyBweXRob24zIgotREVQRU5EU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlLXJlcGxhY2VtZW50LW5hdGl2ZSIKK0RFUEVORFMgPSAibnNzIGxpYmFyY2hpdmUgZGIgZmlsZSBwb3B0IHh6IGJ6aXAyIGRidXMgZWxmdXRpbHMgcHl0aG9uMyIKK0RFUEVORFNfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZS1yZXBsYWNlbWVudC1uYXRpdmUgYnppcDItcmVwbGFjZW1lbnQtbmF0aXZlIgogCiBpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyBweXRob24zbmF0aXZlCiBleHBvcnQgUFlUSE9OX0FCSQpAQCAtNjgsNiArNzMsOSBAQAogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCiAKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW2ltYWV2bV0gPSAiLS13aXRoLWltYWV2bSwsaW1hLWV2bS11dGlscyIKKwogIyBEaXJlY3QgcnBtLW5hdGl2ZSB0byByZWFkIGNvbmZpZ3VyYXRpb24gZnJvbSBvdXIgc3lzcm9vdCwgbm90IHRoZSBvbmUgaXQgd2FzIGNvbXBpbGVkIGluCiAjIGxpYm1hZ2ljIGFsc28gaGFzIHN5c3Jvb3QgcGF0aCBjb250YW1pbmF0aW9uLCBzbyBvdmVycmlkZSBpdAogZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewpAQCAtOTksNyArMTA3LDggQEAKIH0KIAogZG9faW5zdGFsbF9hcHBlbmQgKCkgewotCXNlZCAtaSAtZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgJHtEfS8ke2xpYmRpcn0vcnBtL21hY3JvcworCXNlZCAtaSAtZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgXAorCSAgICAke0R9LyR7bGliZGlyfS9ycG0vbWFjcm9zCiAKIAlzZWQgLWkgLWUgJ3N8L3Vzci9iaW4vcHl0aG9ufCR7VVNSQklOUEFUSH0vZW52ICR7UFlUSE9OX1BOfXwnIFwKIAkgICAgJHtEfSR7bGliZGlyfS9ycG0vcHl0aG9uZGlzdGRlcHMucHkKQEAgLTExOSwzICsxMjgsMTEgQEAKIFJQUk9WSURFU18ke1BOfSArPSAicnBtLWJ1aWxkIgogCiBSREVQRU5EU18ke1BOfSA9ICJiYXNoIHBlcmwgcHl0aG9uMy1jb3JlIgorCitQQUNLQUdFX1BSRVBST0NFU1NfRlVOQ1MgKz0gInJwbV9wYWNrYWdlX3ByZXByb2Nlc3MiCisKKyMgRG8gbm90IHNwZWNpZnkgYSBzeXNyb290IHdoZW4gY29tcGlsaW5nIG9uIGEgdGFyZ2V0LgorcnBtX3BhY2thZ2VfcHJlcHJvY2VzcyAoKSB7CisJc2VkIC1pIC1lICdzOi0tc3lzcm9vdFteIF0qOjpnJyBcCisJICAgICR7UEtHRH0vJHtsaWJkaXJ9L3JwbS9tYWNyb3MKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5L0NWRS0yMDE3LTE0MDY0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvQ1ZFLTIwMTctMTQwNjQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwMGQxYmMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvQ1ZFLTIwMTctMTQwNjQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNTMgKzAsMCBAQAotRnJvbSBkODZkMjgzZmNiMzVkMTQ0MmExMjFiOTIwMzA4ODQ1MjM5MDhhMzMxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogbmFnYWNoaWthIDxuYWdhY2hpa2FAYjJkZDAzYzgtMzlkNC00ZDhmLTk4ZmYtODIzZmU2OWIwODBlPgotRGF0ZTogU2F0LCAyMiBBcHIgMjAxNyAwNzoyOTowMSArMDAwMAotU3ViamVjdDogW1BBVENIXSBtZXJnZSByZXZpc2lvbihzKSA1ODMyMyw1ODMyNDoKLQotCU1lcmdlIGpzb24tMi4wLjQuCi0KLQkgICogaHR0cHM6Ly9naXRodWIuY29tL2Zsb3JpL2pzb24vcmVsZWFzZXMvdGFnL3YyLjAuNAotCSAgKiBodHRwczovL2dpdGh1Yi5jb20vZmxvcmkvanNvbi9ibG9iLzA5ZmFiZWIwM2U3M2VkODhkYzhjZThmMTlkNzZhYzU5ZTUxZGFlMjAvQ0hBTkdFUy5tZCMyMDE3LTAzLTIzLTIwNAotCVVzZSBgYXNzZXJ0X3JhaXNlYCBpbnN0ZWFkIG9mIGBhc3NlcnRfcmFpc2VzYC4KLQotZ2l0LXN2bi1pZDogc3ZuK3NzaDovL2NpLnJ1YnktbGFuZy5vcmcvcnVieS9icmFuY2hlcy9ydWJ5XzJfNEA1ODQ0NSBiMmRkMDNjOC0zOWQ0LTRkOGYtOThmZi04MjNmZTY5YjA4MGUKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNy0xNDA2NAotCi1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc2EuY29tPgotCi0tLS0KLSBleHQvanNvbi9mYnVmZmVyL2ZidWZmZXIuaCAgICAgICB8ICAgMyAtLS0KLSBleHQvanNvbi9nZW5lcmF0b3IvZ2VuZXJhdG9yLmMgICB8ICAxMiArKysrKy0tLS0tCi0gZXh0L2pzb24vZ2VuZXJhdG9yL2dlbmVyYXRvci5oICAgfCAgIDEgLQotIGV4dC9qc29uL2pzb24uZ2Vtc3BlYyAgICAgICAgICAgIHwgQmluIDU0NzMgLT4gNTQ3NCBieXRlcwotIGV4dC9qc29uL2xpYi9qc29uL3ZlcnNpb24ucmIgICAgIHwgICAyICstCi0gZXh0L2pzb24vcGFyc2VyL3BhcnNlci5jICAgICAgICAgfCAgNDggKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCi0gZXh0L2pzb24vcGFyc2VyL3BhcnNlci5ybCAgICAgICAgfCAgMTQgKysrKysrKysrLS0tCi0gdGVzdC9qc29uL2pzb25fZW5jb2RpbmdfdGVzdC5yYiAgfCAgIDIgKysKLSB0ZXN0L2pzb24vanNvbl9nZW5lcmF0b3JfdGVzdC5yYiB8ICAgMAotIHZlcnNpb24uaCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCi0gMTAgZmlsZXMgY2hhbmdlZCwgNDkgaW5zZXJ0aW9ucygrKSwgMzUgZGVsZXRpb25zKC0pCi0gbW9kZSBjaGFuZ2UgMTAwNzU1ID0+IDEwMDY0NCB0ZXN0L2pzb24vanNvbl9nZW5lcmF0b3JfdGVzdC5yYgotCi1JbmRleDogcnVieS0yLjQuMC9leHQvanNvbi9mYnVmZmVyL2ZidWZmZXIuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHJ1YnktMi40LjAub3JpZy9leHQvanNvbi9mYnVmZmVyL2ZidWZmZXIuaAotKysrIHJ1YnktMi40LjAvZXh0L2pzb24vZmJ1ZmZlci9mYnVmZmVyLmgKLUBAIC0xMiw5ICsxMiw2IEBACi0gI2RlZmluZSBSRkxPQVRfVkFMVUUodmFsKSAoUkZMT0FUKHZhbCktPnZhbHVlKQotICNlbmRpZgotIAotLSNpZm5kZWYgUkFSUkFZX1BUUgotLSNkZWZpbmUgUkFSUkFZX1BUUihBUlJBWSkgUkFSUkFZKEFSUkFZKS0+cHRyCi0tI2VuZGlmCi0gI2lmbmRlZiBSQVJSQVlfTEVOCi0gI2RlZmluZSBSQVJSQVlfTEVOKEFSUkFZKSBSQVJSQVkoQVJSQVkpLT5sZW4KLSAjZW5kaWYKLUluZGV4OiBydWJ5LTIuNC4wL2V4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHJ1YnktMi40LjAub3JpZy9leHQvanNvbi9nZW5lcmF0b3IvZ2VuZXJhdG9yLmMKLSsrKyBydWJ5LTIuNC4wL2V4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuYwotQEAgLTMwOCw3ICszMDgsNyBAQCBzdGF0aWMgY2hhciAqZnN0cm5kdXAoY29uc3QgY2hhciAqcHRyLCB1Ci0gICBjaGFyICpyZXN1bHQ7Ci0gICBpZiAobGVuIDw9IDApIHJldHVybiBOVUxMOwotICAgcmVzdWx0ID0gQUxMT0NfTihjaGFyLCBsZW4pOwotLSAgbWVtY2NweShyZXN1bHQsIHB0ciwgMCwgbGVuKTsKLSsgIG1lbWNweShyZXN1bHQsIHB0ciwgbGVuKTsKLSAgIHJldHVybiByZXN1bHQ7Ci0gfQotIAotQEAgLTEwNjIsNyArMTA2Miw3IEBAIHN0YXRpYyBWQUxVRSBjU3RhdGVfaW5kZW50X3NldChWQUxVRSBzZWwKLSAgICAgICAgIH0KLSAgICAgfSBlbHNlIHsKLSAgICAgICAgIGlmIChzdGF0ZS0+aW5kZW50KSBydWJ5X3hmcmVlKHN0YXRlLT5pbmRlbnQpOwotLSAgICAgICAgc3RhdGUtPmluZGVudCA9IHN0cmR1cChSU1RSSU5HX1BUUihpbmRlbnQpKTsKLSsgICAgICAgIHN0YXRlLT5pbmRlbnQgPSBmc3RybmR1cChSU1RSSU5HX1BUUihpbmRlbnQpLCBsZW4pOwotICAgICAgICAgc3RhdGUtPmluZGVudF9sZW4gPSBsZW47Ci0gICAgIH0KLSAgICAgcmV0dXJuIFFuaWw7Ci1AQCAtMTEwMCw3ICsxMTAwLDcgQEAgc3RhdGljIFZBTFVFIGNTdGF0ZV9zcGFjZV9zZXQoVkFMVUUgc2VsZgotICAgICAgICAgfQotICAgICB9IGVsc2UgewotICAgICAgICAgaWYgKHN0YXRlLT5zcGFjZSkgcnVieV94ZnJlZShzdGF0ZS0+c3BhY2UpOwotLSAgICAgICAgc3RhdGUtPnNwYWNlID0gc3RyZHVwKFJTVFJJTkdfUFRSKHNwYWNlKSk7Ci0rICAgICAgICBzdGF0ZS0+c3BhY2UgPSBmc3RybmR1cChSU1RSSU5HX1BUUihzcGFjZSksIGxlbik7Ci0gICAgICAgICBzdGF0ZS0+c3BhY2VfbGVuID0gbGVuOwotICAgICB9Ci0gICAgIHJldHVybiBRbmlsOwotQEAgLTExMzYsNyArMTEzNiw3IEBAIHN0YXRpYyBWQUxVRSBjU3RhdGVfc3BhY2VfYmVmb3JlX3NldChWQUwKLSAgICAgICAgIH0KLSAgICAgfSBlbHNlIHsKLSAgICAgICAgIGlmIChzdGF0ZS0+c3BhY2VfYmVmb3JlKSBydWJ5X3hmcmVlKHN0YXRlLT5zcGFjZV9iZWZvcmUpOwotLSAgICAgICAgc3RhdGUtPnNwYWNlX2JlZm9yZSA9IHN0cmR1cChSU1RSSU5HX1BUUihzcGFjZV9iZWZvcmUpKTsKLSsgICAgICAgIHN0YXRlLT5zcGFjZV9iZWZvcmUgPSBmc3RybmR1cChSU1RSSU5HX1BUUihzcGFjZV9iZWZvcmUpLCBsZW4pOwotICAgICAgICAgc3RhdGUtPnNwYWNlX2JlZm9yZV9sZW4gPSBsZW47Ci0gICAgIH0KLSAgICAgcmV0dXJuIFFuaWw7Ci1AQCAtMTE3Myw3ICsxMTczLDcgQEAgc3RhdGljIFZBTFVFIGNTdGF0ZV9vYmplY3Rfbmxfc2V0KFZBTFVFCi0gICAgICAgICB9Ci0gICAgIH0gZWxzZSB7Ci0gICAgICAgICBpZiAoc3RhdGUtPm9iamVjdF9ubCkgcnVieV94ZnJlZShzdGF0ZS0+b2JqZWN0X25sKTsKLS0gICAgICAgIHN0YXRlLT5vYmplY3RfbmwgPSBzdHJkdXAoUlNUUklOR19QVFIob2JqZWN0X25sKSk7Ci0rICAgICAgICBzdGF0ZS0+b2JqZWN0X25sID0gZnN0cm5kdXAoUlNUUklOR19QVFIob2JqZWN0X25sKSwgbGVuKTsKLSAgICAgICAgIHN0YXRlLT5vYmplY3RfbmxfbGVuID0gbGVuOwotICAgICB9Ci0gICAgIHJldHVybiBRbmlsOwotQEAgLTEyMDgsNyArMTIwOCw3IEBAIHN0YXRpYyBWQUxVRSBjU3RhdGVfYXJyYXlfbmxfc2V0KFZBTFVFIHMKLSAgICAgICAgIH0KLSAgICAgfSBlbHNlIHsKLSAgICAgICAgIGlmIChzdGF0ZS0+YXJyYXlfbmwpIHJ1YnlfeGZyZWUoc3RhdGUtPmFycmF5X25sKTsKLS0gICAgICAgIHN0YXRlLT5hcnJheV9ubCA9IHN0cmR1cChSU1RSSU5HX1BUUihhcnJheV9ubCkpOwotKyAgICAgICAgc3RhdGUtPmFycmF5X25sID0gZnN0cm5kdXAoUlNUUklOR19QVFIoYXJyYXlfbmwpLCBsZW4pOwotICAgICAgICAgc3RhdGUtPmFycmF5X25sX2xlbiA9IGxlbjsKLSAgICAgfQotICAgICByZXR1cm4gUW5pbDsKLUluZGV4OiBydWJ5LTIuNC4wL2V4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHJ1YnktMi40LjAub3JpZy9leHQvanNvbi9nZW5lcmF0b3IvZ2VuZXJhdG9yLmgKLSsrKyBydWJ5LTIuNC4wL2V4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuaAotQEAgLTEsNyArMSw2IEBACi0gI2lmbmRlZiBfR0VORVJBVE9SX0hfCi0gI2RlZmluZSBfR0VORVJBVE9SX0hfCi0gCi0tI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDxtYXRoLmg+Ci0gI2luY2x1ZGUgPGN0eXBlLmg+Ci0gCi1JbmRleDogcnVieS0yLjQuMC9leHQvanNvbi9saWIvanNvbi92ZXJzaW9uLnJiCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcnVieS0yLjQuMC5vcmlnL2V4dC9qc29uL2xpYi9qc29uL3ZlcnNpb24ucmIKLSsrKyBydWJ5LTIuNC4wL2V4dC9qc29uL2xpYi9qc29uL3ZlcnNpb24ucmIKLUBAIC0xLDcgKzEsNyBAQAotICMgZnJvemVuX3N0cmluZ19saXRlcmFsOiBmYWxzZQotIG1vZHVsZSBKU09OCi0gICAjIEpTT04gdmVyc2lvbgotLSAgVkVSU0lPTiAgICAgICAgID0gJzIuMC4yJwotKyAgVkVSU0lPTiAgICAgICAgID0gJzIuMC40JwotICAgVkVSU0lPTl9BUlJBWSAgID0gVkVSU0lPTi5zcGxpdCgvXC4vKS5tYXAgeyB8eHwgeC50b19pIH0gIyA6bm9kb2M6Ci0gICBWRVJTSU9OX01BSk9SICAgPSBWRVJTSU9OX0FSUkFZWzBdICMgOm5vZG9jOgotICAgVkVSU0lPTl9NSU5PUiAgID0gVkVSU0lPTl9BUlJBWVsxXSAjIDpub2RvYzoKLUluZGV4OiBydWJ5LTIuNC4wL2V4dC9qc29uL3BhcnNlci9wYXJzZXIuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHJ1YnktMi40LjAub3JpZy9leHQvanNvbi9wYXJzZXIvcGFyc2VyLmMKLSsrKyBydWJ5LTIuNC4wL2V4dC9qc29uL3BhcnNlci9wYXJzZXIuYwotQEAgLTE0MzUsMTMgKzE0MzUsMjEgQEAgc3RhdGljIFZBTFVFIGpzb25fc3RyaW5nX3VuZXNjYXBlKFZBTFVFCi0gICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgY2FzZSAndSc6Ci0gICAgICAgICAgICAgICAgICAgICBpZiAocGUgPiBzdHJpbmdFbmQgLSA0KSB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFFuaWw7Ci0rICAgICAgICAgICAgICAgICAgICAgIHJiX2VuY19yYWlzZSgKLSsgICAgICAgICAgICAgICAgICAgICAgICBFWENfRU5DT0RJTkcgZVBhcnNlckVycm9yLAotKyAgICAgICAgICAgICAgICAgICAgICAgICIldTogaW5jb21wbGV0ZSB1bmljb2RlIGNoYXJhY3RlciBlc2NhcGUgc2VxdWVuY2UgYXQgJyVzJyIsIF9fTElORV9fLCBwCi0rICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgIFVURjMyIGNoID0gdW5lc2NhcGVfdW5pY29kZSgodW5zaWduZWQgY2hhciAqKSArK3BlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICBwZSArPSAzOwotICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChVTklfU1VSX0hJR0hfU1RBUlQgPT0gKGNoICYgMHhGQzAwKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZSsrOwotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGUgPiBzdHJpbmdFbmQgLSA2KSByZXR1cm4gUW5pbDsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlID4gc3RyaW5nRW5kIC0gNikgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJiX2VuY19yYWlzZSgKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVYQ19FTkNPRElORyBlUGFyc2VyRXJyb3IsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXU6IGluY29tcGxldGUgc3Vycm9nYXRlIHBhaXIgYXQgJyVzJyIsIF9fTElORV9fLCBwCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZVswXSA9PSAnXFwnICYmIHBlWzFdID09ICd1JykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVRGMzIgc3VyID0gdW5lc2NhcGVfdW5pY29kZSgodW5zaWduZWQgY2hhciAqKSBwZSArIDIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2ggPSAoKChjaCAmIDB4M0YpIDw8IDEwKSB8ICgoKChjaCA+PiA2KSAmIDB4RikgKyAxKSA8PCAxNikKLUBAIC0xNDcxLDcgKzE0NzksNyBAQCBzdGF0aWMgVkFMVUUganNvbl9zdHJpbmdfdW5lc2NhcGUoVkFMVUUKLSB9Ci0gCi0gCi0tI2xpbmUgMTQ3NSAicGFyc2VyLmMiCi0rI2xpbmUgMTQ4MyAicGFyc2VyLmMiCi0gZW51bSB7SlNPTl9zdHJpbmdfc3RhcnQgPSAxfTsKLSBlbnVtIHtKU09OX3N0cmluZ19maXJzdF9maW5hbCA9IDh9OwotIGVudW0ge0pTT05fc3RyaW5nX2Vycm9yID0gMH07Ci1AQCAtMTQ3OSw3ICsxNDg3LDcgQEAgZW51bSB7SlNPTl9zdHJpbmdfZXJyb3IgPSAwfTsKLSBlbnVtIHtKU09OX3N0cmluZ19lbl9tYWluID0gMX07Ci0gCi0gCi0tI2xpbmUgNTA0ICJwYXJzZXIucmwiCi0rI2xpbmUgNTEyICJwYXJzZXIucmwiCi0gCi0gCi0gc3RhdGljIGludAotQEAgLTE1MDEsMTUgKzE1MDksMTUgQEAgc3RhdGljIGNoYXIgKkpTT05fcGFyc2Vfc3RyaW5nKEpTT05fUGFycwotIAotICAgICAqcmVzdWx0ID0gcmJfc3RyX2J1Zl9uZXcoMCk7Ci0gCi0tI2xpbmUgMTUwNSAicGFyc2VyLmMiCi0rI2xpbmUgMTUxMyAicGFyc2VyLmMiCi0gCXsKLSAJY3MgPSBKU09OX3N0cmluZ19zdGFydDsKLSAJfQotIAotLSNsaW5lIDUyNSAicGFyc2VyLnJsIgotKyNsaW5lIDUzMyAicGFyc2VyLnJsIgotICAgICBqc29uLT5tZW1vID0gcDsKLSAKLS0jbGluZSAxNTEzICJwYXJzZXIuYyIKLSsjbGluZSAxNTIxICJwYXJzZXIuYyIKLSAJewotIAlpZiAoIHAgPT0gcGUgKQotIAkJZ290byBfdGVzdF9lb2Y7Ci1AQCAtMTUzNCw3ICsxNTQyLDcgQEAgY2FzZSAyOgotIAkJZ290byBzdDA7Ci0gCWdvdG8gc3QyOwotIHRyMjoKLS0jbGluZSA0OTAgInBhcnNlci5ybCIKLSsjbGluZSA0OTggInBhcnNlci5ybCIKLSAJewotICAgICAgICAgKnJlc3VsdCA9IGpzb25fc3RyaW5nX3VuZXNjYXBlKCpyZXN1bHQsIGpzb24tPm1lbW8gKyAxLCBwKTsKLSAgICAgICAgIGlmIChOSUxfUCgqcmVzdWx0KSkgewotQEAgLTE1NDUsMTQgKzE1NTMsMTQgQEAgdHIyOgotICAgICAgICAgICAgIHtwID0gKCggcCArIDEpKS0xO30KLSAgICAgICAgIH0KLSAgICAgfQotLSNsaW5lIDUwMSAicGFyc2VyLnJsIgotKyNsaW5lIDUwOSAicGFyc2VyLnJsIgotIAl7IHAtLTsge3ArKzsgY3MgPSA4OyBnb3RvIF9vdXQ7fSB9Ci0gCWdvdG8gc3Q4OwotIHN0ODoKLSAJaWYgKCArK3AgPT0gcGUgKQotIAkJZ290byBfdGVzdF9lb2Y4OwotIGNhc2UgODoKLS0jbGluZSAxNTU2ICJwYXJzZXIuYyIKLSsjbGluZSAxNTY0ICJwYXJzZXIuYyIKLSAJZ290byBzdDA7Ci0gc3QzOgotIAlpZiAoICsrcCA9PSBwZSApCi1AQCAtMTYyOCw3ICsxNjM2LDcgQEAgY2FzZSA3OgotIAlfb3V0OiB7fQotIAl9Ci0gCi0tI2xpbmUgNTI3ICJwYXJzZXIucmwiCi0rI2xpbmUgNTM1ICJwYXJzZXIucmwiCi0gCi0gICAgIGlmIChqc29uLT5jcmVhdGVfYWRkaXRpb25zICYmIFJURVNUKG1hdGNoX3N0cmluZyA9IGpzb24tPm1hdGNoX3N0cmluZykpIHsKLSAgICAgICAgICAgVkFMVUUga2xhc3M7Ci1AQCAtMTY3NSw3ICsxNjgzLDcgQEAgc3RhdGljIFZBTFVFIGNvbnZlcnRfZW5jb2RpbmcoVkFMVUUgc291cgotICAgICB9Ci0gICAgIEZPUkNFX1VURjgoc291cmNlKTsKLSAgIH0gZWxzZSB7Ci0tICAgIHNvdXJjZSA9IHJiX3N0cl9jb252X2VuYyhzb3VyY2UsIE5VTEwsIHJiX3V0ZjhfZW5jb2RpbmcoKSk7Ci0rICAgIHNvdXJjZSA9IHJiX3N0cl9jb252X2VuYyhzb3VyY2UsIHJiX2VuY19nZXQoc291cmNlKSwgcmJfdXRmOF9lbmNvZGluZygpKTsKLSAgIH0KLSAjZW5kaWYKLSAgICAgcmV0dXJuIHNvdXJjZTsKLUBAIC0xODA4LDcgKzE4MTYsNyBAQCBzdGF0aWMgVkFMVUUgY1BhcnNlcl9pbml0aWFsaXplKGludCBhcmdjCi0gfQotIAotIAotLSNsaW5lIDE4MTIgInBhcnNlci5jIgotKyNsaW5lIDE4MjAgInBhcnNlci5jIgotIGVudW0ge0pTT05fc3RhcnQgPSAxfTsKLSBlbnVtIHtKU09OX2ZpcnN0X2ZpbmFsID0gMTB9OwotIGVudW0ge0pTT05fZXJyb3IgPSAwfTsKLUBAIC0xODE2LDcgKzE4MjQsNyBAQCBlbnVtIHtKU09OX2Vycm9yID0gMH07Ci0gZW51bSB7SlNPTl9lbl9tYWluID0gMX07Ci0gCi0gCi0tI2xpbmUgNzIwICJwYXJzZXIucmwiCi0rI2xpbmUgNzI4ICJwYXJzZXIucmwiCi0gCi0gCi0gLyoKLUBAIC0xODMzLDE2ICsxODQxLDE2IEBAIHN0YXRpYyBWQUxVRSBjUGFyc2VyX3BhcnNlKFZBTFVFIHNlbGYpCi0gICBHRVRfUEFSU0VSOwotIAotIAotLSNsaW5lIDE4MzcgInBhcnNlci5jIgotKyNsaW5lIDE4NDUgInBhcnNlci5jIgotIAl7Ci0gCWNzID0gSlNPTl9zdGFydDsKLSAJfQotIAotLSNsaW5lIDczNiAicGFyc2VyLnJsIgotKyNsaW5lIDc0NCAicGFyc2VyLnJsIgotICAgcCA9IGpzb24tPnNvdXJjZTsKLSAgIHBlID0gcCArIGpzb24tPmxlbjsKLSAKLS0jbGluZSAxODQ2ICJwYXJzZXIuYyIKLSsjbGluZSAxODU0ICJwYXJzZXIuYyIKLSAJewotIAlpZiAoIHAgPT0gcGUgKQotIAkJZ290byBfdGVzdF9lb2Y7Ci1AQCAtMTg3Niw3ICsxODg0LDcgQEAgc3QwOgotIGNzID0gMDsKLSAJZ290byBfb3V0OwotIHRyMjoKLS0jbGluZSA3MTIgInBhcnNlci5ybCIKLSsjbGluZSA3MjAgInBhcnNlci5ybCIKLSAJewotICAgICAgICAgY2hhciAqbnAgPSBKU09OX3BhcnNlX3ZhbHVlKGpzb24sIHAsIHBlLCAmcmVzdWx0LCAwKTsKLSAgICAgICAgIGlmIChucCA9PSBOVUxMKSB7IHAtLTsge3ArKzsgY3MgPSAxMDsgZ290byBfb3V0O30gfSBlbHNlIHtwID0gKCggbnApKS0xO30KLUBAIC0xODg2LDcgKzE4OTQsNyBAQCBzdDEwOgotIAlpZiAoICsrcCA9PSBwZSApCi0gCQlnb3RvIF90ZXN0X2VvZjEwOwotIGNhc2UgMTA6Ci0tI2xpbmUgMTg5MCAicGFyc2VyLmMiCi0rI2xpbmUgMTg5OCAicGFyc2VyLmMiCi0gCXN3aXRjaCggKCpwKSApIHsKLSAJCWNhc2UgMTM6IGdvdG8gc3QxMDsKLSAJCWNhc2UgMzI6IGdvdG8gc3QxMDsKLUBAIC0xOTc1LDcgKzE5ODMsNyBAQCBjYXNlIDk6Ci0gCV9vdXQ6IHt9Ci0gCX0KLSAKLS0jbGluZSA3MzkgInBhcnNlci5ybCIKLSsjbGluZSA3NDcgInBhcnNlci5ybCIKLSAKLSAgIGlmIChjcyA+PSBKU09OX2ZpcnN0X2ZpbmFsICYmIHAgPT0gcGUpIHsKLSAgICAgcmV0dXJuIHJlc3VsdDsKLUluZGV4OiBydWJ5LTIuNC4wL2V4dC9qc29uL3BhcnNlci9wYXJzZXIucmwKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBydWJ5LTIuNC4wLm9yaWcvZXh0L2pzb24vcGFyc2VyL3BhcnNlci5ybAotKysrIHJ1YnktMi40LjAvZXh0L2pzb24vcGFyc2VyL3BhcnNlci5ybAotQEAgLTQ0NiwxMyArNDQ2LDIxIEBAIHN0YXRpYyBWQUxVRSBqc29uX3N0cmluZ191bmVzY2FwZShWQUxVRQotICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgIGNhc2UgJ3UnOgotICAgICAgICAgICAgICAgICAgICAgaWYgKHBlID4gc3RyaW5nRW5kIC0gNCkgewotLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBRbmlsOwotKyAgICAgICAgICAgICAgICAgICAgICByYl9lbmNfcmFpc2UoCi0rICAgICAgICAgICAgICAgICAgICAgICAgRVhDX0VOQ09ESU5HIGVQYXJzZXJFcnJvciwKLSsgICAgICAgICAgICAgICAgICAgICAgICAiJXU6IGluY29tcGxldGUgdW5pY29kZSBjaGFyYWN0ZXIgZXNjYXBlIHNlcXVlbmNlIGF0ICclcyciLCBfX0xJTkVfXywgcAotKyAgICAgICAgICAgICAgICAgICAgICApOwotICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICBVVEYzMiBjaCA9IHVuZXNjYXBlX3VuaWNvZGUoKHVuc2lnbmVkIGNoYXIgKikgKytwZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgcGUgKz0gMzsKLSAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoVU5JX1NVUl9ISUdIX1NUQVJUID09IChjaCAmIDB4RkMwMCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGUrKzsKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlID4gc3RyaW5nRW5kIC0gNikgcmV0dXJuIFFuaWw7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZSA+IHN0cmluZ0VuZCAtIDYpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYl9lbmNfcmFpc2UoCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFWENfRU5DT0RJTkcgZVBhcnNlckVycm9yLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiV1OiBpbmNvbXBsZXRlIHN1cnJvZ2F0ZSBwYWlyIGF0ICclcyciLCBfX0xJTkVfXywgcAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVbMF0gPT0gJ1xcJyAmJiBwZVsxXSA9PSAndScpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVURjMyIHN1ciA9IHVuZXNjYXBlX3VuaWNvZGUoKHVuc2lnbmVkIGNoYXIgKikgcGUgKyAyKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoID0gKCgoY2ggJiAweDNGKSA8PCAxMCkgfCAoKCgoY2ggPj4gNikgJiAweEYpICsgMSkgPDwgMTYpCi1AQCAtNTcwLDcgKzU3OCw3IEBAIHN0YXRpYyBWQUxVRSBjb252ZXJ0X2VuY29kaW5nKFZBTFVFIHNvdXIKLSAgICAgfQotICAgICBGT1JDRV9VVEY4KHNvdXJjZSk7Ci0gICB9IGVsc2UgewotLSAgICBzb3VyY2UgPSByYl9zdHJfY29udl9lbmMoc291cmNlLCBOVUxMLCByYl91dGY4X2VuY29kaW5nKCkpOwotKyAgICBzb3VyY2UgPSByYl9zdHJfY29udl9lbmMoc291cmNlLCByYl9lbmNfZ2V0KHNvdXJjZSksIHJiX3V0ZjhfZW5jb2RpbmcoKSk7Ci0gICB9Ci0gI2VuZGlmCi0gICAgIHJldHVybiBzb3VyY2U7Ci1JbmRleDogcnVieS0yLjQuMC90ZXN0L2pzb24vanNvbl9lbmNvZGluZ190ZXN0LnJiCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gcnVieS0yLjQuMC5vcmlnL3Rlc3QvanNvbi9qc29uX2VuY29kaW5nX3Rlc3QucmIKLSsrKyBydWJ5LTIuNC4wL3Rlc3QvanNvbi9qc29uX2VuY29kaW5nX3Rlc3QucmIKLUBAIC03OSw2ICs3OSw4IEBAIGNsYXNzIEpTT05FbmNvZGluZ1Rlc3QgPCBUZXN0OjpVbml0OjpUZXMKLSAgICAganNvbiA9ICdbIlx1ZDg0MFx1ZGMwMSJdJwotICAgICBhc3NlcnRfZXF1YWwganNvbiwgZ2VuZXJhdGUodXRmOCwgOmFzY2lpX29ubHkgPT4gdHJ1ZSkKLSAgICAgYXNzZXJ0X2VxdWFsIHV0ZjgsIHBhcnNlKGpzb24pCi0rICAgIGFzc2VydF9yYWlzZShKU09OOjpQYXJzZXJFcnJvcikgeyBwYXJzZSgnIlx1IicpIH0KLSsgICAgYXNzZXJ0X3JhaXNlKEpTT046OlBhcnNlckVycm9yKSB7IHBhcnNlKCciXHVkODAwIicpIH0KLSAgIGVuZAotIAotICAgZGVmIHRlc3RfY2hhcnMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5L2V4dG1rLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvZXh0bWsucGF0Y2gKaW5kZXggOGI2ODQ1MC4uYTViMjE4NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvZXh0bWsucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvZXh0bWsucGF0Y2gKQEAgLTEsMyArMSw0IEBACitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIGRpZmYgLXJ1IHJ1YnktMS44LjctcDI0OC5vcmlnL2V4dC9leHRtay5yYiBydWJ5LTEuOC43LXAyNDgvZXh0L2V4dG1rLnJiCiAtLS0gcnVieS0xLjguNy1wMjQ4Lm9yaWcvZXh0L2V4dG1rLnJiCTIwMDktMTItMjQgMDM6MDE6NTguMDAwMDAwMDAwIC0wNjAwCiArKysgcnVieS0xLjguNy1wMjQ4L2V4dC9leHRtay5yYgkyMDEwLTAyLTEyIDE1OjU1OjI3LjM3MDA2MTU1OCAtMDYwMApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvcnVieS1DVkUtMjAxNy0xNDA2NC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5L3J1YnktQ1ZFLTIwMTctMTQwNjQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODhlNjkzYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5L3J1YnktQ1ZFLTIwMTctMTQwNjQucGF0Y2gKQEAgLTAsMCArMSw4NyBAQAorRnJvbSA4Zjc4MmZkOGUxODFkOWNmZTkzODdkZWQ0M2E1Y2E5NjkyMjY2Yjg1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRmxvcmlhbiBGcmFuayA8ZmxvcmlAcGluZy5kZT4KK0RhdGU6IFRodSwgMiBNYXIgMjAxNyAxMjoxMjozMyArMDEwMAorU3ViamVjdDogW1BBVENIXSBGaXggYXJiaXRyYXJ5IGhlYXAgZXhwb3N1cmUgcHJvYmxlbQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitDVkU6IENWRS0yMDE3LTE0MDY0CisKK1NpZ25lZC1vZmYtYnk6IE92aWRpdSBQYW5haXQgPG92aWRpdS5wYW5haXRAd2luZHJpdmVyLmNvbT4KKy0tLQorIGV4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuYyB8IDEyICsrKysrKy0tLS0tLQorIGV4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuaCB8ICAxIC0KKyAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2V4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuYyBiL2V4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuYworaW5kZXggZWY4NWJiNy4uYzg4ODE4YyAxMDA2NDQKKy0tLSBhL2V4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuYworKysrIGIvZXh0L2pzb24vZ2VuZXJhdG9yL2dlbmVyYXRvci5jCitAQCAtMzA4LDcgKzMwOCw3IEBAIHN0YXRpYyBjaGFyICpmc3RybmR1cChjb25zdCBjaGFyICpwdHIsIHVuc2lnbmVkIGxvbmcgbGVuKSB7CisgICBjaGFyICpyZXN1bHQ7CisgICBpZiAobGVuIDw9IDApIHJldHVybiBOVUxMOworICAgcmVzdWx0ID0gQUxMT0NfTihjaGFyLCBsZW4pOworLSAgbWVtY2NweShyZXN1bHQsIHB0ciwgMCwgbGVuKTsKKysgIG1lbWNweShyZXN1bHQsIHB0ciwgbGVuKTsKKyAgIHJldHVybiByZXN1bHQ7CisgfQorIAorQEAgLTEwNjIsNyArMTA2Miw3IEBAIHN0YXRpYyBWQUxVRSBjU3RhdGVfaW5kZW50X3NldChWQUxVRSBzZWxmLCBWQUxVRSBpbmRlbnQpCisgICAgICAgICB9CisgICAgIH0gZWxzZSB7CisgICAgICAgICBpZiAoc3RhdGUtPmluZGVudCkgcnVieV94ZnJlZShzdGF0ZS0+aW5kZW50KTsKKy0gICAgICAgIHN0YXRlLT5pbmRlbnQgPSBzdHJkdXAoUlNUUklOR19QVFIoaW5kZW50KSk7CisrICAgICAgICBzdGF0ZS0+aW5kZW50ID0gZnN0cm5kdXAoUlNUUklOR19QVFIoaW5kZW50KSwgbGVuKTsKKyAgICAgICAgIHN0YXRlLT5pbmRlbnRfbGVuID0gbGVuOworICAgICB9CisgICAgIHJldHVybiBRbmlsOworQEAgLTExMDAsNyArMTEwMCw3IEBAIHN0YXRpYyBWQUxVRSBjU3RhdGVfc3BhY2Vfc2V0KFZBTFVFIHNlbGYsIFZBTFVFIHNwYWNlKQorICAgICAgICAgfQorICAgICB9IGVsc2UgeworICAgICAgICAgaWYgKHN0YXRlLT5zcGFjZSkgcnVieV94ZnJlZShzdGF0ZS0+c3BhY2UpOworLSAgICAgICAgc3RhdGUtPnNwYWNlID0gc3RyZHVwKFJTVFJJTkdfUFRSKHNwYWNlKSk7CisrICAgICAgICBzdGF0ZS0+c3BhY2UgPSBmc3RybmR1cChSU1RSSU5HX1BUUihzcGFjZSksIGxlbik7CisgICAgICAgICBzdGF0ZS0+c3BhY2VfbGVuID0gbGVuOworICAgICB9CisgICAgIHJldHVybiBRbmlsOworQEAgLTExMzYsNyArMTEzNiw3IEBAIHN0YXRpYyBWQUxVRSBjU3RhdGVfc3BhY2VfYmVmb3JlX3NldChWQUxVRSBzZWxmLCBWQUxVRSBzcGFjZV9iZWZvcmUpCisgICAgICAgICB9CisgICAgIH0gZWxzZSB7CisgICAgICAgICBpZiAoc3RhdGUtPnNwYWNlX2JlZm9yZSkgcnVieV94ZnJlZShzdGF0ZS0+c3BhY2VfYmVmb3JlKTsKKy0gICAgICAgIHN0YXRlLT5zcGFjZV9iZWZvcmUgPSBzdHJkdXAoUlNUUklOR19QVFIoc3BhY2VfYmVmb3JlKSk7CisrICAgICAgICBzdGF0ZS0+c3BhY2VfYmVmb3JlID0gZnN0cm5kdXAoUlNUUklOR19QVFIoc3BhY2VfYmVmb3JlKSwgbGVuKTsKKyAgICAgICAgIHN0YXRlLT5zcGFjZV9iZWZvcmVfbGVuID0gbGVuOworICAgICB9CisgICAgIHJldHVybiBRbmlsOworQEAgLTExNzMsNyArMTE3Myw3IEBAIHN0YXRpYyBWQUxVRSBjU3RhdGVfb2JqZWN0X25sX3NldChWQUxVRSBzZWxmLCBWQUxVRSBvYmplY3RfbmwpCisgICAgICAgICB9CisgICAgIH0gZWxzZSB7CisgICAgICAgICBpZiAoc3RhdGUtPm9iamVjdF9ubCkgcnVieV94ZnJlZShzdGF0ZS0+b2JqZWN0X25sKTsKKy0gICAgICAgIHN0YXRlLT5vYmplY3RfbmwgPSBzdHJkdXAoUlNUUklOR19QVFIob2JqZWN0X25sKSk7CisrICAgICAgICBzdGF0ZS0+b2JqZWN0X25sID0gZnN0cm5kdXAoUlNUUklOR19QVFIob2JqZWN0X25sKSwgbGVuKTsKKyAgICAgICAgIHN0YXRlLT5vYmplY3RfbmxfbGVuID0gbGVuOworICAgICB9CisgICAgIHJldHVybiBRbmlsOworQEAgLTEyMDgsNyArMTIwOCw3IEBAIHN0YXRpYyBWQUxVRSBjU3RhdGVfYXJyYXlfbmxfc2V0KFZBTFVFIHNlbGYsIFZBTFVFIGFycmF5X25sKQorICAgICAgICAgfQorICAgICB9IGVsc2UgeworICAgICAgICAgaWYgKHN0YXRlLT5hcnJheV9ubCkgcnVieV94ZnJlZShzdGF0ZS0+YXJyYXlfbmwpOworLSAgICAgICAgc3RhdGUtPmFycmF5X25sID0gc3RyZHVwKFJTVFJJTkdfUFRSKGFycmF5X25sKSk7CisrICAgICAgICBzdGF0ZS0+YXJyYXlfbmwgPSBmc3RybmR1cChSU1RSSU5HX1BUUihhcnJheV9ubCksIGxlbik7CisgICAgICAgICBzdGF0ZS0+YXJyYXlfbmxfbGVuID0gbGVuOworICAgICB9CisgICAgIHJldHVybiBRbmlsOworZGlmZiAtLWdpdCBhL2V4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuaCBiL2V4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuaAoraW5kZXggOTAwYjRkNS4uYzM2N2E2MiAxMDA2NDQKKy0tLSBhL2V4dC9qc29uL2dlbmVyYXRvci9nZW5lcmF0b3IuaAorKysrIGIvZXh0L2pzb24vZ2VuZXJhdG9yL2dlbmVyYXRvci5oCitAQCAtMSw3ICsxLDYgQEAKKyAjaWZuZGVmIF9HRU5FUkFUT1JfSF8KKyAjZGVmaW5lIF9HRU5FUkFUT1JfSF8KKyAKKy0jaW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUgPG1hdGguaD4KKyAjaW5jbHVkZSA8Y3R5cGUuaD4KKyAKKy0tIAorMi4xMC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5XzIuNC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnlfMi40LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjYzUyZDYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnlfMi40LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi1yZXF1aXJlIHJ1YnkuaW5jCi0KLVNSQ19VUkkgKz0gIiBcCi0gICAgICAgICAgIGZpbGU6Ly9ydWJ5LUNWRS0yMDE3LTkyMjQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVieS1DVkUtMjAxNy05MjI2LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1YnktQ1ZFLTIwMTctOTIyNy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydWJ5LUNWRS0yMDE3LTkyMjgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVieS1DVkUtMjAxNy05MjI5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTE0MDY0LnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiN2U5NDg1ZGNkYjg2ZmY1MjY2MjcyOGRlMjAwM2U2MjUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTUyZmQwYmQxNWE5MGI0YTE4MjEzNDQ4ZjQ4NWQ0YjUzZTlmNzY2MmUxNTA4MTkwYWE1YjcwMjQ0NmIyOWUzZCIKLQotIyBpdCdzIHVua25vd24gdG8gY29uZmlndXJlIHNjcmlwdCwgYnV0IHRoZW4gcGFzc2VkIHRvIGV4dGNvbmYucmIKLSMgbWF5YmUgaXQncyBub3QgcmVhbGx5IG5lZWRlZCBhcyB3ZSdyZSBoYXJkY29kaW5nIHRoZSByZXN1bHQgd2l0aAotIyAwMDAxLXNvY2tldC1leHRjb25mLWhhcmRjb2RlLXdpZGUtZ2V0YWRkci1pbmZvLXRlc3Qtb3V0Y28ucGF0Y2gKLVVOS05PV05fQ09ORklHVVJFX1dISVRFTElTVCArPSAiLS1lbmFibGUtd2lkZS1nZXRhZGRyaW5mbyIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUcgKz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0iCi0KLVBBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gIi0td2l0aC12YWxncmluZD15ZXMsIC0td2l0aC12YWxncmluZD1ubywgdmFsZ3JpbmQiCi1QQUNLQUdFQ09ORklHW2dwbV0gPSAiLS13aXRoLWdtcD15ZXMsIC0td2l0aC1nbXA9bm8sIGdtcCIKLVBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLC0tZW5hYmxlLXdpZGUtZ2V0YWRkcmluZm8sIgotCi1FWFRSQV9BVVRPUkVDT05GICs9ICItLWV4Y2x1ZGU9YWNsb2NhbCIKLQotRVhUUkFfT0VDT05GID0gIlwKLSAgICAtLWRpc2FibGUtdmVyc2lvbmVkLXBhdGhzIFwKLSAgICAtLWRpc2FibGUtcnBhdGggXAotICAgIC0tZGlzYWJsZS1kdHJhY2UgXAotICAgIC0tZW5hYmxlLXNoYXJlZCBcCi0gICAgLS1lbmFibGUtbG9hZC1yZWxhdGl2ZSBcCi0iCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCi19Ci0KLVBBQ0tBR0VTID0rICIke1BOfS1yaS1kb2NzICR7UE59LXJkb2MiCi0KLVNVTU1BUllfJHtQTn0tcmktZG9jcyA9ICJyaSAoUnVieSBJbnRlcmFjdGl2ZSkgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIFJ1Ynkgc3RhbmRhcmQgbGlicmFyeSIKLVJERVBFTkRTXyR7UE59LXJpLWRvY3MgPSAiJHtQTn0iCi1GSUxFU18ke1BOfS1yaS1kb2NzICs9ICIke2RhdGFkaXJ9L3JpIgotCi1TVU1NQVJZXyR7UE59LXJkb2MgPSAiUkRvYyBkb2N1bWVudGF0aW9uIGdlbmVyYXRvciBmcm9tIFJ1Ynkgc291cmNlIgotUkRFUEVORFNfJHtQTn0tcmRvYyA9ICIke1BOfSIKLUZJTEVTXyR7UE59LXJkb2MgKz0gIiR7bGliZGlyfS9ydWJ5LyovcmRvYyAke2JpbmRpcn0vcmRvYyIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vcnVieWdlbXMiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnlfMi40LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieV8yLjQuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDI3YWM4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnlfMi40LjEuYmIKQEAgLTAsMCArMSw1MyBAQAorcmVxdWlyZSBydWJ5LmluYworCitTUkNfVVJJICs9ICIgXAorICAgICAgICAgICBmaWxlOi8vcnVieS1DVkUtMjAxNy05MjI0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1YnktQ1ZFLTIwMTctOTIyNi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydWJ5LUNWRS0yMDE3LTkyMjcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVieS1DVkUtMjAxNy05MjI4LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1YnktQ1ZFLTIwMTctOTIyOS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydWJ5LUNWRS0yMDE3LTE0MDY0LnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNzgyYmNhNTYyZTQ3NGRkMjU5NTZkZDAwMTdkOTI2NzciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTMzMGUxMGQ1Y2I1ZTUzYjNhMDA3ODMyNmM1NzMxODg4YmI1NWUzMmM0YWJmZWIyN2Q5ZTdmOGU1ZDAwMDI1MCIKKworIyBpdCdzIHVua25vd24gdG8gY29uZmlndXJlIHNjcmlwdCwgYnV0IHRoZW4gcGFzc2VkIHRvIGV4dGNvbmYucmIKKyMgbWF5YmUgaXQncyBub3QgcmVhbGx5IG5lZWRlZCBhcyB3ZSdyZSBoYXJkY29kaW5nIHRoZSByZXN1bHQgd2l0aAorIyAwMDAxLXNvY2tldC1leHRjb25mLWhhcmRjb2RlLXdpZGUtZ2V0YWRkci1pbmZvLXRlc3Qtb3V0Y28ucGF0Y2gKK1VOS05PV05fQ09ORklHVVJFX1dISVRFTElTVCArPSAiLS1lbmFibGUtd2lkZS1nZXRhZGRyaW5mbyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUcgKz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0iCisKK1BBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gIi0td2l0aC12YWxncmluZD15ZXMsIC0td2l0aC12YWxncmluZD1ubywgdmFsZ3JpbmQiCitQQUNLQUdFQ09ORklHW2dwbV0gPSAiLS13aXRoLWdtcD15ZXMsIC0td2l0aC1nbXA9bm8sIGdtcCIKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLC0tZW5hYmxlLXdpZGUtZ2V0YWRkcmluZm8sIgorCitFWFRSQV9BVVRPUkVDT05GICs9ICItLWV4Y2x1ZGU9YWNsb2NhbCIKKworRVhUUkFfT0VDT05GID0gIlwKKyAgICAtLWRpc2FibGUtdmVyc2lvbmVkLXBhdGhzIFwKKyAgICAtLWRpc2FibGUtcnBhdGggXAorICAgIC0tZGlzYWJsZS1kdHJhY2UgXAorICAgIC0tZW5hYmxlLXNoYXJlZCBcCisgICAgLS1lbmFibGUtbG9hZC1yZWxhdGl2ZSBcCisiCisKK2RvX2luc3RhbGwoKSB7CisgICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCit9CisKK1BBQ0tBR0VTID0rICIke1BOfS1yaS1kb2NzICR7UE59LXJkb2MiCisKK1NVTU1BUllfJHtQTn0tcmktZG9jcyA9ICJyaSAoUnVieSBJbnRlcmFjdGl2ZSkgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIFJ1Ynkgc3RhbmRhcmQgbGlicmFyeSIKK1JERVBFTkRTXyR7UE59LXJpLWRvY3MgPSAiJHtQTn0iCitGSUxFU18ke1BOfS1yaS1kb2NzICs9ICIke2RhdGFkaXJ9L3JpIgorCitTVU1NQVJZXyR7UE59LXJkb2MgPSAiUkRvYyBkb2N1bWVudGF0aW9uIGdlbmVyYXRvciBmcm9tIFJ1Ynkgc291cmNlIgorUkRFUEVORFNfJHtQTn0tcmRvYyA9ICIke1BOfSIKK0ZJTEVTXyR7UE59LXJkb2MgKz0gIiR7bGliZGlyfS9ydWJ5LyovcmRvYyAke2JpbmRpcn0vcmRvYyIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vcnVieWdlbXMiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHMvcnVuLXBvc3RpbnN0cy5zZXJ2aWNlIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHMvcnVuLXBvc3RpbnN0cy5zZXJ2aWNlCmluZGV4IDg1YTA0MzkuLjFiNzFhMWYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVuLXBvc3RpbnN0cy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHMuc2VydmljZQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1bi1wb3N0aW5zdHMvcnVuLXBvc3RpbnN0cy9ydW4tcG9zdGluc3RzLnNlcnZpY2UKQEAgLTgsNyArOCw3IEBACiBbU2VydmljZV0KIFR5cGU9b25lc2hvdAogRXhlY1N0YXJ0PSNTQklORElSIy9ydW4tcG9zdGluc3RzCi1FeGVjU3RhcnRQb3N0PSNCQVNFX0JJTkRJUiMvc3lzdGVtY3RsIGRpc2FibGUgcnVuLXBvc3RpbnN0cy5zZXJ2aWNlCitFeGVjU3RhcnRQb3N0PSNCQVNFX0JJTkRJUiMvc3lzdGVtY3RsIC0tbm8tcmVsb2FkIGRpc2FibGUgcnVuLXBvc3RpbnN0cy5zZXJ2aWNlCiBSZW1haW5BZnRlckV4aXQ9Tm8KIFRpbWVvdXRTZWM9MAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3NxdWFzaGZzLXRvb2xzL3NxdWFzaGZzLXRvb2xzL3NxdWFzaGZzLXRvb2xzLTQuMy1zeXNtYWNyb3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3NxdWFzaGZzLXRvb2xzL3NxdWFzaGZzLXRvb2xzL3NxdWFzaGZzLXRvb2xzLTQuMy1zeXNtYWNyb3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzk1MjFhNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3F1YXNoZnMtdG9vbHMvc3F1YXNoZnMtdG9vbHMvc3F1YXNoZnMtdG9vbHMtNC4zLXN5c21hY3Jvcy5wYXRjaApAQCAtMCwwICsxLDMyIEBACitGcm9tIGh0dHBzOi8vZ2l0d2ViLmdlbnRvby5vcmcvcmVwby9nZW50b28uZ2l0L3RyZWUvc3lzLWZzL3NxdWFzaGZzLXRvb2xzL2ZpbGVzL3NxdWFzaGZzLXRvb2xzLTQuMy1zeXNtYWNyb3MucGF0Y2gKKworU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworCitzeXMvdHlwZXMuaCBtaWdodCBub3QgYWx3YXlzIGluY2x1ZGUgc3lzL3N5c21hY3Jvcy5oIGZvciBtYWpvci9taW5vci9tYWtlZGV2CisKKy0tLSBhL3NxdWFzaGZzLXRvb2xzL21rc3F1YXNoZnMuYworKysrIGIvc3F1YXNoZnMtdG9vbHMvbWtzcXVhc2hmcy5jCitAQCAtNTksNiArNTksNyBAQAorICNlbHNlCisgI2luY2x1ZGUgPGVuZGlhbi5oPgorICNpbmNsdWRlIDxzeXMvc3lzaW5mby5oPgorKyNpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+CisgI2VuZGlmCisgCisgI2luY2x1ZGUgInNxdWFzaGZzX2ZzLmgiCistLS0gYS9zcXVhc2hmcy10b29scy91bnNxdWFzaGZzLmMKKysrKyBiL3NxdWFzaGZzLXRvb2xzL3Vuc3F1YXNoZnMuYworQEAgLTM4LDYgKzM4LDEwIEBACisgI2luY2x1ZGUgPGxpbWl0cy5oPgorICNpbmNsdWRlIDxjdHlwZS5oPgorIAorKyNpZmRlZiBsaW51eAorKyNpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+CisrI2VuZGlmCisrCisgc3RydWN0IGNhY2hlICpmcmFnbWVudF9jYWNoZSwgKmRhdGFfY2FjaGU7Cisgc3RydWN0IHF1ZXVlICp0b19yZWFkZXIsICp0b19pbmZsYXRlLCAqdG9fd3JpdGVyLCAqZnJvbV93cml0ZXI7CisgcHRocmVhZF90ICp0aHJlYWQsICppbmZsYXRvcl90aHJlYWQ7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3NxdWFzaGZzLXRvb2xzL3NxdWFzaGZzLXRvb2xzX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3F1YXNoZnMtdG9vbHMvc3F1YXNoZnMtdG9vbHNfZ2l0LmJiCmluZGV4IDMzZWQwOWEuLjBmOTkxNzAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3F1YXNoZnMtdG9vbHMvc3F1YXNoZnMtdG9vbHNfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3F1YXNoZnMtdG9vbHMvc3F1YXNoZnMtdG9vbHNfZ2l0LmJiCkBAIC0xMyw4ICsxMywxMCBAQAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3Bsb3VnaGVyL3NxdWFzaGZzLXRvb2xzLmdpdDtwcm90b2NvbD1odHRwcyBcCiAgICAgICAgICAgIGh0dHA6Ly9kb3dubG9hZHMuc291cmNlZm9yZ2UubmV0L3NldmVuemlwL2x6bWE0NjUudGFyLmJ6MjtuYW1lPWx6bWEgXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1ta3NxdWFzaGZzLmMtZ2V0LWlubGluZS1mdW5jdGlvbnMtd29yay13aXRoLUM5OS5wYXRjaDtzdHJpcGxldmVsPTIgXAorICAgICAgICAgICBmaWxlOi8vc3F1YXNoZnMtdG9vbHMtNC4zLXN5c21hY3Jvcy5wYXRjaDtzdHJpcGxldmVsPTIgXAogICAgICAgICAgICBmaWxlOi8vZml4LWNvbXBhdC5wYXRjaCBcCiAiCitVUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKIFNSQ19VUklbbHptYS5tZDVzdW1dID0gIjI5ZDVmZmQwM2E1YTNlNTFhZWY2YTc0ZTllYWZiNzU5IgogU1JDX1VSSVtsem1hLnNoYTI1NnN1bV0gPSAiYzkzNWZkMDRkZDhlMGU4YzY4OGEzMDc4ZjM2NzVkNjk5Njc5YTkwYmU4MWMxMjY4NjgzN2UwODgwYWEwZmExZSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlLzAwMDEtdGVzdHMtc2lnYWN0aW9uLUNoZWNrLWZvci1taXBzLWFuZC1hbHBoYS1iZWZvcmUtdXNpbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS8wMDAxLXRlc3RzLXNpZ2FjdGlvbi1DaGVjay1mb3ItbWlwcy1hbmQtYWxwaGEtYmVmb3JlLXVzaW4ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTIwOTZiMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS8wMDAxLXRlc3RzLXNpZ2FjdGlvbi1DaGVjay1mb3ItbWlwcy1hbmQtYWxwaGEtYmVmb3JlLXVzaW4ucGF0Y2gKQEAgLTAsMCArMSwzNyBAQAorRnJvbSA5ZjNmZDM4OGFlN2M0NjQyMGJjY2JhNDA1NDY4NjkwZWQ0NmQ2NjlhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMTggU2VwIDIwMTcgMjI6NTE6MzIgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gdGVzdHMvc2lnYWN0aW9uOiBDaGVjayBmb3IgbWlwcyBhbmQgYWxwaGEgYmVmb3JlIHVzaW5nCisgc2FfcmVzdG9yZXIKKworbG9jYWwgc3RydWN0dXJlIGRvZXMgbm90IGRlZmluZSByZXN0b3JlciBtZW1iZXIgZm9yIG1pcHMgYW5kIGFscGhhCitpbiBkZWZpbml0aW9uLCB3ZSBuZWVkIHRvIG1hdGNoIHRoYXQgYXNzdW1wdGlvbiBoZXJlIHdoZXJlIHRoZXkgYXJlCitiZWluZyBzZXQKKworRml4ZXMKK3wgLi4vLi4vc3RyYWNlLTQuMTgvdGVzdHMvc2lnYWN0aW9uLmM6MTc3OjM2OiBlcnJvcjogJ3N0cnVjdF9zZXRfc2Ege2FrYSBzdHJ1Y3Qgc2V0X3NhfScgaGFzIG5vIG1lbWJlciBuYW1lZCAncmVzdG9yZXInCit8ICAjIGRlZmluZSBTQV9SRVNUT1JFUl9BUkdTICwgbmV3X2FjdC0+cmVzdG9yZXIKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyB0ZXN0cy9zaWdhY3Rpb24uYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3Rlc3RzL3NpZ2FjdGlvbi5jIGIvdGVzdHMvc2lnYWN0aW9uLmMKK2luZGV4IDdiNDY5NDQuLmY0NmNkYTcgMTAwNjQ0CistLS0gYS90ZXN0cy9zaWdhY3Rpb24uYworKysrIGIvdGVzdHMvc2lnYWN0aW9uLmMKK0BAIC0xNzAsNyArMTcwLDcgQEAgbWFpbih2b2lkKQorIAlzaWdkZWxzZXQobWFzay5saWJjLCBTSUdIVVApOworIAorIAltZW1jcHkobmV3X2FjdC0+bWFzaywgbWFzay5vbGQsIHNpemVvZihtYXNrLm9sZCkpOworLSNpZmRlZiBTQV9SRVNUT1JFUgorKyNpZiBkZWZpbmVkKFNBX1JFU1RPUkVSKSAmJiAhZGVmaW5lZChNSVBTKSAmJiAhZGVmaW5lZChBTFBIQSkKKyAJbmV3X2FjdC0+ZmxhZ3MgPSBTQV9SRVNUT1JFUjsKKyAJbmV3X2FjdC0+cmVzdG9yZXIgPSAodW5zaWduZWQgbG9uZykgMHhkZWFkZmFjZWNhZmVmMDBkVUxMOworICMgZGVmaW5lIFNBX1JFU1RPUkVSX0ZNVCAiLCBzYV9mbGFncz1TQV9SRVNUT1JFUiwgc2FfcmVzdG9yZXI9JSNseCIKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9NYWtlZmlsZS1wdGVzdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9NYWtlZmlsZS1wdGVzdC5wYXRjaAppbmRleCA4NzZjMmQ4Li45N2JjYzkwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvTWFrZWZpbGUtcHRlc3QucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL01ha2VmaWxlLXB0ZXN0LnBhdGNoCkBAIC0xLDE5ICsxLDIzIEBACi1zdHJhY2U6IEFkZCBwdGVzdAorRnJvbSAwNTc0YWU5OTI2MzA4ZGNiY2E3OGJkOGNkMGYwZjE0M2YxOWNiY2I1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogR2FicmllbCBCYXJidSA8Z2FicmllbC5iYXJidUBlbmVhLmNvbT4KK0RhdGU6IFRodSwgMjUgSnVsIDIwMTMgMTU6Mjg6MzMgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCA0LzhdIHN0cmFjZTogQWRkIHB0ZXN0CiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQogCiBTaWduZWQtb2ZmLWJ5OiBHYWJyaWVsIEJhcmJ1IDxnYWJyaWVsLmJhcmJ1QGVuZWEuY29tPgogU2lnbmVkLW9mZi1ieTogQ2hvbmcgTHUgPENob25nLkx1QHdpbmRyaXZlci5jb20+CisKIC0tLQogIGNvbmZpZ3VyZS5hYyAgICAgIHwgIDIgKy0KICB0ZXN0cy9NYWtlZmlsZS5hbSB8IDE4ICsrKysrKysrKysrKysrKysrKwogIDIgZmlsZXMgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBiMmIwM2M2Li40NjRhOWRjIDEwMDY0NAoraW5kZXggNjFkNjQyNS4uNjM4N2MyNCAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMzksNyArMzksNyBAQCBBQ19DT1BZUklHSFQoW0NvcHlyaWdodCAoQykgMTk5OS0yMDE3IFRoZSBzdHJhY2UgZGV2ZWxvcGVycy5dKQorQEAgLTQxLDcgKzQxLDcgQEAgQUNfQ09QWVJJR0hUKFtDb3B5cmlnaHQgKEMpIDE5OTktXWNvcHlyaWdodF95ZWFyWyBUaGUgc3RyYWNlIGRldmVsb3BlcnMuXSkKICBBQ19DT05GSUdfU1JDRElSKFtzdHJhY2UuY10pCiAgQUNfQ09ORklHX0FVWF9ESVIoWy5dKQogIEFDX0NPTkZJR19IRUFERVJTKFtjb25maWcuaF0pCkBAIC0yMywxMSArMjcsMTEgQEAKICBBTV9NQUlOVEFJTkVSX01PREUKICBBQ19DQU5PTklDQUxfSE9TVAogZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLmFtIGIvdGVzdHMvTWFrZWZpbGUuYW0KLWluZGV4IDMxMWQzYmIuLjcyZjkwMjIgMTAwNjQ0CitpbmRleCA1YWE3Zjg5Li5hNTVhMzU1IDEwMDY0NAogLS0tIGEvdGVzdHMvTWFrZWZpbGUuYW0KICsrKyBiL3Rlc3RzL01ha2VmaWxlLmFtCi1AQCAtOTYwLDMgKzk2MCwyMSBAQCAkKG9iamVjdHMpOiBzY25vLmgKLSBDTEVBTkZJTEVTID0ga3N5c2VudC5oICQoVEVTVFM6PS50bXApCitAQCAtMzc5LDMgKzM3OSwyMSBAQCBjbGVhbi1sb2NhbC1jaGVjazoKKyBDTEVBTkZJTEVTID0ga3N5c2VudC5oCiAgCiAgaW5jbHVkZSAuLi9zY25vLmFtCiArCkBAIC00Nyw0ICs1MSw3IEBACiArCQlpbnN0YWxsICQoc3JjZGlyKS8kJGZpbGUgJChERVNURElSKS8kKFRFU1RESVIpOyBcCiArCQlzZWQgLWkgLWUgJ3MvJCR7c3JjZGlyPS59Ly4vZycgJChERVNURElSKS8kKFRFU1RESVIpLyQkZmlsZTsgXAogKwlkb25lCi0rCWZvciBpIGluIG5ldCBuZXQtZmQgc2NtX3JpZ2h0cy1mZCBzaWdhY3Rpb247IGRvIHNlZCAtaSAtZSAncy8kJHNyY2Rpci8uL2cnICQoREVTVERJUikvJChURVNURElSKS8kJGkudGVzdDsgZG9uZQorKwlmb3IgaSBpbiBuZXQgc2NtX3JpZ2h0cy1mZCBydF9zaWdhY3Rpb247IGRvIHNlZCAtaSAtZSAncy8kJHNyY2Rpci8uL2cnICQoREVTVERJUikvJChURVNURElSKS8kJGkudGVzdDsgZG9uZQorLS0gCisyLjEzLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL3VwZGF0ZS1nYXdrLXBhdGhzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL3VwZGF0ZS1nYXdrLXBhdGhzLnBhdGNoCmluZGV4IDk0ZWU1M2MuLmY2ZmZhOGUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS91cGRhdGUtZ2F3ay1wYXRocy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvdXBkYXRlLWdhd2stcGF0aHMucGF0Y2gKQEAgLTEyLDIwICsxMiwyMCBAQAogCiBTaWduZWQtb2ZmLWJ5OiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgogLS0tCi0gbXBlcnMuYXdrICAgICAgICAgICAgICAgIHwgMiArLQotIHRlc3RzLW0zMi9jYXBzLmF3ayAgICAgICB8IDIgKy0KLSB0ZXN0cy1tMzIvbWF0Y2guYXdrICAgICAgfCAyICstCi0gdGVzdHMtbTMyL3NpZ2FjdGlvbi5hd2sgIHwgMiArLQotIHRlc3RzLW14MzIvY2Fwcy5hd2sgICAgICB8IDIgKy0KLSB0ZXN0cy1teDMyL21hdGNoLmF3ayAgICAgfCAyICstCi0gdGVzdHMtbXgzMi9zaWdhY3Rpb24uYXdrIHwgMiArLQotIHRlc3RzL2NhcHMuYXdrICAgICAgICAgICB8IDIgKy0KLSB0ZXN0cy9tYXRjaC5hd2sgICAgICAgICAgfCAyICstCi0gdGVzdHMvc2lnYWN0aW9uLmF3ayAgICAgIHwgMiArLQorIG1wZXJzLmF3ayAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyB0ZXN0cy1tMzIvY2Fwcy5hd2sgICAgICAgICAgfCAyICstCisgdGVzdHMtbTMyL21hdGNoLmF3ayAgICAgICAgIHwgMiArLQorIHRlc3RzLW0zMi9ydF9zaWdhY3Rpb24uYXdrICB8IDIgKy0KKyB0ZXN0cy1teDMyL2NhcHMuYXdrICAgICAgICAgfCAyICstCisgdGVzdHMtbXgzMi9tYXRjaC5hd2sgICAgICAgIHwgMiArLQorIHRlc3RzLW14MzIvcnRfc2lnYWN0aW9uLmF3ayB8IDIgKy0KKyB0ZXN0cy9jYXBzLmF3ayAgICAgICAgICAgICAgfCAyICstCisgdGVzdHMvbWF0Y2guYXdrICAgICAgICAgICAgIHwgMiArLQorIHRlc3RzL3J0X3NpZ2FjdGlvbi5hd2sgICAgICB8IDIgKy0KICAxMCBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL21wZXJzLmF3ayBiL21wZXJzLmF3awotaW5kZXggOTkyNDhjNS4uZmYxMDUyMCAxMDA2NDQKK2luZGV4IGZlNTQ3NjMuLmI1MjM4YTggMTAwNjQ0CiAtLS0gYS9tcGVycy5hd2sKICsrKyBiL21wZXJzLmF3awogQEAgLTEsNCArMSw0IEBACkBAIC0zNSw3ICszNSw3IEBACiAgIyBDb3B5cmlnaHQgKGMpIDIwMTUgRWx2aXJhIEtoYWJpcm92YSA8bGluZXByaW50ZXIwQGdtYWlsLmNvbT4KICAjIENvcHlyaWdodCAoYykgMjAxNS0yMDE2IERtaXRyeSBWLiBMZXZpbiA8bGR2QGFsdGxpbnV4Lm9yZz4KIGRpZmYgLS1naXQgYS90ZXN0cy1tMzIvY2Fwcy5hd2sgYi90ZXN0cy1tMzIvY2Fwcy5hd2sKLWluZGV4IDY3MDAzYWMuLmE2NmYxZjAgMTAwNjQ0CitpbmRleCBjNmUzMWVmLi41ZWZjNmNjIDEwMDY0NAogLS0tIGEvdGVzdHMtbTMyL2NhcHMuYXdrCiArKysgYi90ZXN0cy1tMzIvY2Fwcy5hd2sKIEBAIC0xLDQgKzEsNCBAQApAQCAtNTQsMTggKzU0LDE4IEBACiAgIwogICMgQ29weXJpZ2h0IChjKSAyMDE0LTIwMTUgRG1pdHJ5IFYuIExldmluIDxsZHZAYWx0bGludXgub3JnPgogICMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLWRpZmYgLS1naXQgYS90ZXN0cy1tMzIvc2lnYWN0aW9uLmF3ayBiL3Rlc3RzLW0zMi9zaWdhY3Rpb24uYXdrCi1pbmRleCA1YzZiNmQwLi4zZTE0NDY0IDEwMDY0NAotLS0tIGEvdGVzdHMtbTMyL3NpZ2FjdGlvbi5hd2sKLSsrKyBiL3Rlc3RzLW0zMi9zaWdhY3Rpb24uYXdrCitkaWZmIC0tZ2l0IGEvdGVzdHMtbTMyL3J0X3NpZ2FjdGlvbi5hd2sgYi90ZXN0cy1tMzIvcnRfc2lnYWN0aW9uLmF3aworaW5kZXggOWMzYTllZC4uODQxNDI0MyAxMDA2NDQKKy0tLSBhL3Rlc3RzLW0zMi9ydF9zaWdhY3Rpb24uYXdrCisrKysgYi90ZXN0cy1tMzIvcnRfc2lnYWN0aW9uLmF3awogQEAgLTEsNCArMSw0IEBACiAtIyEvYmluL2dhd2sKICsjIS91c3IvYmluL2dhd2sKICAjCiAgIyBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNSBEbWl0cnkgVi4gTGV2aW4gPGxkdkBhbHRsaW51eC5vcmc+Ci0gIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorICMgQ29weXJpZ2h0IChjKSAyMDE2IEVsdmlyYSBLaGFiaXJvdmEgPGxpbmVwcmludGVyMEBnbWFpbC5jb20+CiBkaWZmIC0tZ2l0IGEvdGVzdHMtbXgzMi9jYXBzLmF3ayBiL3Rlc3RzLW14MzIvY2Fwcy5hd2sKLWluZGV4IDY3MDAzYWMuLmE2NmYxZjAgMTAwNjQ0CitpbmRleCBjNmUzMWVmLi41ZWZjNmNjIDEwMDY0NAogLS0tIGEvdGVzdHMtbXgzMi9jYXBzLmF3awogKysrIGIvdGVzdHMtbXgzMi9jYXBzLmF3awogQEAgLTEsNCArMSw0IEBACkBAIC04NCwxOCArODQsMTggQEAKICAjCiAgIyBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNSBEbWl0cnkgVi4gTGV2aW4gPGxkdkBhbHRsaW51eC5vcmc+CiAgIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotZGlmZiAtLWdpdCBhL3Rlc3RzLW14MzIvc2lnYWN0aW9uLmF3ayBiL3Rlc3RzLW14MzIvc2lnYWN0aW9uLmF3awotaW5kZXggNWM2YjZkMC4uM2UxNDQ2NCAxMDA2NDQKLS0tLSBhL3Rlc3RzLW14MzIvc2lnYWN0aW9uLmF3awotKysrIGIvdGVzdHMtbXgzMi9zaWdhY3Rpb24uYXdrCitkaWZmIC0tZ2l0IGEvdGVzdHMtbXgzMi9ydF9zaWdhY3Rpb24uYXdrIGIvdGVzdHMtbXgzMi9ydF9zaWdhY3Rpb24uYXdrCitpbmRleCA5YzNhOWVkLi44NDE0MjQzIDEwMDY0NAorLS0tIGEvdGVzdHMtbXgzMi9ydF9zaWdhY3Rpb24uYXdrCisrKysgYi90ZXN0cy1teDMyL3J0X3NpZ2FjdGlvbi5hd2sKIEBAIC0xLDQgKzEsNCBAQAogLSMhL2Jpbi9nYXdrCiArIyEvdXNyL2Jpbi9nYXdrCiAgIwogICMgQ29weXJpZ2h0IChjKSAyMDE0LTIwMTUgRG1pdHJ5IFYuIExldmluIDxsZHZAYWx0bGludXgub3JnPgotICMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAjIENvcHlyaWdodCAoYykgMjAxNiBFbHZpcmEgS2hhYmlyb3ZhIDxsaW5lcHJpbnRlcjBAZ21haWwuY29tPgogZGlmZiAtLWdpdCBhL3Rlc3RzL2NhcHMuYXdrIGIvdGVzdHMvY2Fwcy5hd2sKLWluZGV4IDY3MDAzYWMuLmE2NmYxZjAgMTAwNjQ0CitpbmRleCBjNmUzMWVmLi41ZWZjNmNjIDEwMDY0NAogLS0tIGEvdGVzdHMvY2Fwcy5hd2sKICsrKyBiL3Rlc3RzL2NhcHMuYXdrCiBAQCAtMSw0ICsxLDQgQEAKQEAgLTExNCwxMyArMTE0LDEzIEBACiAgIwogICMgQ29weXJpZ2h0IChjKSAyMDE0LTIwMTUgRG1pdHJ5IFYuIExldmluIDxsZHZAYWx0bGludXgub3JnPgogICMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLWRpZmYgLS1naXQgYS90ZXN0cy9zaWdhY3Rpb24uYXdrIGIvdGVzdHMvc2lnYWN0aW9uLmF3awotaW5kZXggNWM2YjZkMC4uM2UxNDQ2NCAxMDA2NDQKLS0tLSBhL3Rlc3RzL3NpZ2FjdGlvbi5hd2sKLSsrKyBiL3Rlc3RzL3NpZ2FjdGlvbi5hd2sKK2RpZmYgLS1naXQgYS90ZXN0cy9ydF9zaWdhY3Rpb24uYXdrIGIvdGVzdHMvcnRfc2lnYWN0aW9uLmF3aworaW5kZXggOWMzYTllZC4uODQxNDI0MyAxMDA2NDQKKy0tLSBhL3Rlc3RzL3J0X3NpZ2FjdGlvbi5hd2sKKysrKyBiL3Rlc3RzL3J0X3NpZ2FjdGlvbi5hd2sKIEBAIC0xLDQgKzEsNCBAQAogLSMhL2Jpbi9nYXdrCiArIyEvdXNyL2Jpbi9nYXdrCiAgIwogICMgQ29weXJpZ2h0IChjKSAyMDE0LTIwMTUgRG1pdHJ5IFYuIExldmluIDxsZHZAYWx0bGludXgub3JnPgotICMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAjIENvcHlyaWdodCAoYykgMjAxNiBFbHZpcmEgS2hhYmlyb3ZhIDxsaW5lcHJpbnRlcjBAZ21haWwuY29tPgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlXzQuMTYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2VfNC4xNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjZjZDJhYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2VfNC4xNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLVNVTU1BUlkgPSAiU3lzdGVtIGNhbGwgdHJhY2luZyB0b29sIgotSE9NRVBBR0UgPSAiaHR0cDovL3N0cmFjZS5zb3VyY2Vmb3JnZS5uZXQiCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTQ4OGFjYjNhYWFmNWQxNGEyZTFhODUyZDEzNjY4YTcwIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9zdHJhY2Uvc3RyYWNlLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWdpdC12ZXJzaW9uLWdlbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tb3JlLXJvYnVzdC10ZXN0LWZvci1tMzItbXgzMi1jb21waWxlLXN1cHBvcnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdXBkYXRlLWdhd2stcGF0aHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGUtcHRlc3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLXdoZW4tdXNpbmctbm9uLWdsaWJjLWxpYmMtaW1wbGVtZW50YXRpb24tby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9taXBzLVNJR0VNVC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNhcHMtYWJicmV2LmF3ay1maXgtZ2F3ay1zLXBhdGgucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyODczMzY2Y2FjOTg3NzBlZmNiZWQ2ZTc0OGQ1ZWYyMyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5ODQ4N2NiNTE3OGVjMTI1OTk4NmNjOWY2ZTJhODQ0ZjUwZTVkMTIwOGMxMTJjYzIyNDMxYTFlNGQ5YWRmMGVmIgotCi1pbmhlcml0IGF1dG90b29scyBwdGVzdCBibHVldG9vdGgKLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UgY29yZXV0aWxzIGdyZXAgZ2F3ayBzZWQiCi0KLVBBQ0tBR0VDT05GSUdfY2xhc3MtdGFyZ2V0ID8/PSAiXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXRvb3RoJywgJ2JsdWV6JywgJycsIGQpfSBcCi0iCi0KLVBBQ0tBR0VDT05GSUdbYmx1ZXpdID0gImFjX2N2X2hlYWRlcl9ibHVldG9vdGhfYmx1ZXRvb3RoX2g9eWVzLGFjX2N2X2hlYWRlcl9ibHVldG9vdGhfYmx1ZXRvb3RoX2g9bm8sJHtCTFVFWn0iCi1QQUNLQUdFQ09ORklHW2xpYnVud2luZF0gPSAiLS13aXRoLWxpYnVud2luZCwtLXdpdGhvdXQtbGlidW53aW5kLGxpYnVud2luZCIKLQotVEVTVERJUiA9ICJ0ZXN0cyIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JIyBXZSBkb24ndCBzaGlwIHN0cmFjZS1ncmFwaCBoZXJlIGJlY2F1c2UgaXQgbmVlZHMgcGVybAotCXJtICR7RH0ke2JpbmRpcn0vc3RyYWNlLWdyYXBoCi19Ci0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0Jb2VfcnVubWFrZSAtQyAke1RFU1RESVJ9IGJ1aWxkdGVzdC1URVNUUwotfQotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCW9lX3J1bm1ha2UgLUMgJHtURVNURElSfSBpbnN0YWxsLXB0ZXN0IEJVSUxERElSPSR7Qn0gREVTVERJUj0ke0R9JHtQVEVTVF9QQVRIfSBURVNURElSPSR7VEVTVERJUn0KLQlzZWQgLWkgLWUgJy9ec3JjL3Mvc3RyYWNlLipbMS05XS9wdGVzdC8nICR7RH0vJHtQVEVTVF9QQVRIfS8ke1RFU1RESVJ9L01ha2VmaWxlCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotVE9PTENIQUlOID0gImdjYyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZV80LjE4LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlXzQuMTguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWIyODkxYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZV80LjE4LmJiCkBAIC0wLDAgKzEsNTkgQEAKK1NVTU1BUlkgPSAiU3lzdGVtIGNhbGwgdHJhY2luZyB0b29sIgorSE9NRVBBR0UgPSAiaHR0cDovL3N0cmFjZS5zb3VyY2Vmb3JnZS5uZXQiCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWYxMzJiNGQyYWRmY2NjNjNkYTQxMzlhNjA5MzY3NzExIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9zdHJhY2Uvc3RyYWNlLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWdpdC12ZXJzaW9uLWdlbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9tb3JlLXJvYnVzdC10ZXN0LWZvci1tMzItbXgzMi1jb21waWxlLXN1cHBvcnQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vdXBkYXRlLWdhd2stcGF0aHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGUtcHRlc3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLXdoZW4tdXNpbmctbm9uLWdsaWJjLWxpYmMtaW1wbGVtZW50YXRpb24tby5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9taXBzLVNJR0VNVC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNhcHMtYWJicmV2LmF3ay1maXgtZ2F3ay1zLXBhdGgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS10ZXN0cy1zaWdhY3Rpb24tQ2hlY2stZm9yLW1pcHMtYW5kLWFscGhhLWJlZm9yZS11c2luLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMzU3OWIzMjY2YmIwOTZjZWJhZWZiZTJjZGIxYTNhNzgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODlhZDg4N2MxZTYyMjZiZGJjYThkYTMxZDU4OWNhZGVhNGJlMDc0NGIxNDJlYjQ3Yjc2ODA4NmM5MzdmY2EwOCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcHRlc3QgYmx1ZXRvb3RoCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJtYWtlIGNvcmV1dGlscyBncmVwIGdhd2sgc2VkIgorCitQQUNLQUdFQ09ORklHX2NsYXNzLXRhcmdldCA/Pz0gIlwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2JsdWV0b290aCcsICdibHVleicsICcnLCBkKX0gXAorIgorCitQQUNLQUdFQ09ORklHW2JsdWV6XSA9ICJhY19jdl9oZWFkZXJfYmx1ZXRvb3RoX2JsdWV0b290aF9oPXllcyxhY19jdl9oZWFkZXJfYmx1ZXRvb3RoX2JsdWV0b290aF9oPW5vLCR7QkxVRVp9IgorUEFDS0FHRUNPTkZJR1tsaWJ1bndpbmRdID0gIi0td2l0aC1saWJ1bndpbmQsLS13aXRob3V0LWxpYnVud2luZCxsaWJ1bndpbmQiCisKK1RFU1RESVIgPSAidGVzdHMiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCSMgV2UgZG9uJ3Qgc2hpcCBzdHJhY2UtZ3JhcGggaGVyZSBiZWNhdXNlIGl0IG5lZWRzIHBlcmwKKwlybSAke0R9JHtiaW5kaXJ9L3N0cmFjZS1ncmFwaAorfQorCitkb19jb21waWxlX3B0ZXN0KCkgeworCW9lX3J1bm1ha2UgLUMgJHtURVNURElSfSBidWlsZHRlc3QtVEVTVFMKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwlvZV9ydW5tYWtlIC1DICR7VEVTVERJUn0gaW5zdGFsbC1wdGVzdCBCVUlMRERJUj0ke0J9IERFU1RESVI9JHtEfSR7UFRFU1RfUEFUSH0gVEVTVERJUj0ke1RFU1RESVJ9CisJc2VkIC1pIC1lICcvXnNyYy9zL3N0cmFjZS4qWzEtOV0vcHRlc3QvJyBcCisJICAgIC1lICdzLC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0sLGcnIFwKKwkgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAorCSAgICAtZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgXAorCSAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX06OmcnIFwKKwkgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVH06OmcnIFwKKwkgICAgLWUgJ3M6JHtCQVNFX1dPUktESVJ9LyR7TVVMVElNQUNIX1RBUkdFVF9TWVN9OjpnJyBcCisJICAgIC1lICcvXkRFQl9DSEFOR0VMT0dUSU1FL2QnIFwKKwkgICAgLWUgJy9eUlBNX0NIQU5HRUxPR1RJTUUvZCcgXAorCSR7RH0vJHtQVEVTVF9QQVRIfS8ke1RFU1RESVJ9L01ha2VmaWxlCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorVE9PTENIQUlOID0gImdjYyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3VidmVyc2lvbi9zdWJ2ZXJzaW9uL0NWRS0yMDE3LTk4MDAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N1YnZlcnNpb24vc3VidmVyc2lvbi9DVkUtMjAxNy05ODAwLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1OTljMmIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N1YnZlcnNpb24vc3VidmVyc2lvbi9DVkUtMjAxNy05ODAwLnBhdGNoCkBAIC0wLDAgKzEsMTM2IEBACistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3IxODA0NjkxIHwgZGFuaWVsc2ggfCAyMDE3LTA4LTEwIDExOjE0OjEzIC0wNzAwIChUaHUsIDEwIEF1ZyAyMDE3KSB8IDE4IGxpbmVzCisKK0ZpeCBDVkUtMjAxNy05ODAwLgorCitTZWU6IGh0dHBzOi8vc3VidmVyc2lvbi5hcGFjaGUub3JnL3NlY3VyaXR5L0NWRS0yMDE3LTA4MDAtYWR2aXNvcnkudHh0CisKKyogc3VidmVyc2lvbi9saWJzdm5fcmFfc3ZuL2NsaWVudC5jCisgIChzdm5fY3R5cGUuaCk6IEluY2x1ZGUuCisgIChmaW5kX3R1bm5lbF9hZ2VudCk6IFBhc3MgYSAiLS0iIGVuZC1vZi1vcHRpb25zIGd1YXJkIHRvIHNzaC4KKyAgICBFeHBlY3QgdGhlICdob3N0aW5mbycgcGFyYW1ldGVyIHRvIGJlIFVSSS1kZWNvZGVkLgorICAoaXNfdmFsaWRfaG9zdGluZm8pOiBOZXcuCisgIChyYV9zdm5fb3Blbik6IFZhbGlkYXRlIHRoZSBob3N0bmFtZSBiZWZvcmUgdXNpbmcgaXQuCisKKyogc3VidmVyc2lvbi9saWJzdm5fc3Vici9jb25maWdfZmlsZS5jCisgIChzdm5fY29uZmlnX2Vuc3VyZSk6IFVwZGF0ZSB0aGUgZXhhbXBsZSBjb25maWd1cmF0aW9uIGxpa2V3aXNlLgorCitQYXRjaCBieTogcGhpbGlwCitSZXZpZXcgYnk6IGRhbmllbHNoCisgICAgICAgICAgIHN0c3AKKyAgICAgICAgICAgYXN0aWVnZXIgKGVhcmxpZXIgdmVyc2lvbikKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAoraHR0cDovL3N2bi5hcGFjaGUub3JnL3ZpZXd2Yz92aWV3PXJldmlzaW9uJmFtcDtzb3J0Ynk9cmV2JmFtcDtyZXZpc2lvbj0xODA0NjkxCisKK0NWRTogQ1ZFLTIwMTctOTgwMAorCitTaWduZWQtb2ZmLWJ5OiBXZW56b25nIEZhbiA8d2Vuem9uZy5mYW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorSW5kZXg6IHN1YnZlcnNpb24vbGlic3ZuX3N1YnIvY29uZmlnX2ZpbGUuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHN1YnZlcnNpb24vbGlic3ZuX3N1YnIvY29uZmlnX2ZpbGUuYwkocmV2aXNpb24gMTgwNDY5MCkKKysrKyBzdWJ2ZXJzaW9uL2xpYnN2bl9zdWJyL2NvbmZpZ19maWxlLmMJKHJldmlzaW9uIDE4MDQ2OTEpCitAQCAtMTQ0OCwxMiArMTQ0OCwxMiBAQAorICAgICAgICAgIiMjIyBwYXNzZWQgdG8gdGhlIHR1bm5lbCBhZ2VudCBhcyA8dXNlcj5APGhvc3RuYW1lPi4pICBJZiB0aGUiICAgICAgTkwKKyAgICAgICAgICIjIyMgYnVpbHQtaW4gc3NoIHNjaGVtZSB3ZXJlIG5vdCBwcmVkZWZpbmVkLCBpdCBjb3VsZCBiZSBkZWZpbmVkIiAgIE5MCisgICAgICAgICAiIyMjIGFzOiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOTAorLSAgICAgICAgIiMgc3NoID0gJFNWTl9TU0ggc3NoIC1xIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkwKKysgICAgICAgICIjIHNzaCA9ICRTVk5fU1NIIHNzaCAtcSAtLSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5MCisgICAgICAgICAiIyMjIElmIHlvdSB3YW50ZWQgdG8gZGVmaW5lIGEgbmV3ICdyc2gnIHNjaGVtZSwgdG8gYmUgdXNlZCB3aXRoIiAgICBOTAorICAgICAgICAgIiMjIyAnc3ZuK3JzaDonIFVSTHMsIHlvdSBjb3VsZCBkbyBzbyBhcyBmb2xsb3dzOiIgICAgICAgICAgICAgICAgICAgTkwKKy0gICAgICAgICIjIHJzaCA9IHJzaCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5MCisrICAgICAgICAiIyByc2ggPSByc2ggLS0iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOTAorICAgICAgICAgIiMjIyBPciwgaWYgeW91IHdhbnRlZCB0byBzcGVjaWZ5IGEgZnVsbCBwYXRoIGFuZCBhcmd1bWVudHM6IiAgICAgICAgTkwKKy0gICAgICAgICIjIHJzaCA9IC9wYXRoL3RvL3JzaCAtbCBteXVzZXJuYW1lIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5MCisrICAgICAgICAiIyByc2ggPSAvcGF0aC90by9yc2ggLWwgbXl1c2VybmFtZSAtLSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOTAorICAgICAgICAgIiMjIyBPbiBXaW5kb3dzLCBpZiB5b3UgYXJlIHNwZWNpZnlpbmcgYSBmdWxsIHBhdGggdG8gYSBjb21tYW5kLCIgICAgTkwKKyAgICAgICAgICIjIyMgdXNlIGEgZm9yd2FyZCBzbGFzaCAoLykgb3IgYSBwYWlyZWQgYmFja3NsYXNoIChcXFxcKSBhcyB0aGUiICAgIE5MCisgICAgICAgICAiIyMjIHBhdGggc2VwYXJhdG9yLiAgQSBzaW5nbGUgYmFja3NsYXNoIHdpbGwgYmUgdHJlYXRlZCBhcyBhbiIgICAgICBOTAorSW5kZXg6IHN1YnZlcnNpb24vbGlic3ZuX3JhX3N2bi9jbGllbnQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHN1YnZlcnNpb24vbGlic3ZuX3JhX3N2bi9jbGllbnQuYwkocmV2aXNpb24gMTgwNDY5MCkKKysrKyBzdWJ2ZXJzaW9uL2xpYnN2bl9yYV9zdm4vY2xpZW50LmMJKHJldmlzaW9uIDE4MDQ2OTEpCitAQCAtNDYsNiArNDYsNyBAQAorICNpbmNsdWRlICJzdm5fcHJvcHMuaCIKKyAjaW5jbHVkZSAic3ZuX21lcmdlaW5mby5oIgorICNpbmNsdWRlICJzdm5fdmVyc2lvbi5oIgorKyNpbmNsdWRlICJzdm5fY3R5cGUuaCIKKyAKKyAjaW5jbHVkZSAic3ZuX3ByaXZhdGVfY29uZmlnLmgiCisgCitAQCAtMzk4LDcgKzM5OSw3IEBACisgICAgICAgICogdmVyc2lvbnMgaGF2ZSBpdCB0b28uIElmIHRoZSB1c2VyIGlzIHVzaW5nIHNvbWUgb3RoZXIgc3NoCisgICAgICAgICogaW1wbGVtZW50YXRpb24gdGhhdCBkb2Vzbid0IGFjY2VwdCBpdCwgdGhleSBjYW4gb3ZlcnJpZGUgaXQKKyAgICAgICAgKiBpbiB0aGUgW3R1bm5lbHNdIHNlY3Rpb24gb2YgdGhlIGNvbmZpZy4gKi8KKy0gICAgICB2YWwgPSAiJFNWTl9TU0ggc3NoIC1xIjsKKysgICAgICB2YWwgPSAiJFNWTl9TU0ggc3NoIC1xIC0tIjsKKyAgICAgfQorIAorICAgaWYgKCF2YWwgfHwgISp2YWwpCitAQCAtNDQzLDcgKzQ0NCw3IEBACisgICBmb3IgKG4gPSAwOyBjbWRfYXJndltuXSAhPSBOVUxMOyBuKyspCisgICAgIGFyZ3Zbbl0gPSBjbWRfYXJndltuXTsKKyAKKy0gIGFyZ3ZbbisrXSA9IHN2bl9wYXRoX3VyaV9kZWNvZGUoaG9zdGluZm8sIHBvb2wpOworKyAgYXJndltuKytdID0gaG9zdGluZm87CisgICBhcmd2W24rK10gPSAic3Zuc2VydmUiOworICAgYXJndltuKytdID0gIi10IjsKKyAgIGFyZ3Zbbl0gPSBOVUxMOworQEAgLTgxMSw3ICs4MTIsMzMgQEAKKyB9CisgCisgCisrLyogQSBzaW1wbGUgd2hpdGVsaXN0IHRvIGVuc3VyZSB0aGUgZm9sbG93aW5nIGFyZSB2YWxpZDoKKysgKiAgIHVzZXJAc2VydmVyCisrICogICBbOjoxXToyMgorKyAqICAgc2VydmVyLW5hbWUKKysgKiAgIHNlcnZlcl9uYW1lCisrICogICAxMjcuMC4wLjEKKysgKiB3aXRoIGFuIGV4dHJhIHJlc3RyaWN0aW9uIHRoYXQgYSBsZWFkaW5nICctJyBpcyBpbnZhbGlkLgorKyAqLworK3N0YXRpYyBzdm5fYm9vbGVhbl90CisraXNfdmFsaWRfaG9zdGluZm8oY29uc3QgY2hhciAqaG9zdGluZm8pCisreworKyAgY29uc3QgY2hhciAqcCA9IGhvc3RpbmZvOworIAorKyAgaWYgKHBbMF0gPT0gJy0nKQorKyAgICByZXR1cm4gRkFMU0U7CisrCisrICB3aGlsZSAoKnApCisrICAgIHsKKysgICAgICBpZiAoIXN2bl9jdHlwZV9pc2FsbnVtKCpwKSAmJiAhc3RyY2hyKCI6Li1fW11AIiwgKnApKQorKyAgICAgICAgcmV0dXJuIEZBTFNFOworKworKyAgICAgICsrcDsKKysgICAgfQorKworKyAgcmV0dXJuIFRSVUU7CisrfQorKworIHN0YXRpYyBzdm5fZXJyb3JfdCAqcmFfc3ZuX29wZW4oc3ZuX3JhX3Nlc3Npb25fdCAqc2Vzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKipjb3JyZWN0ZWRfdXJsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdXJsLAorQEAgLTg0NCw4ICs4NzEsMTggQEAKKyAgICAgICAgICAgfHwgKGNhbGxiYWNrcy0+Y2hlY2tfdHVubmVsX2Z1bmMgJiYgY2FsbGJhY2tzLT5vcGVuX3R1bm5lbF9mdW5jCisgICAgICAgICAgICAgICAmJiAhY2FsbGJhY2tzLT5jaGVja190dW5uZWxfZnVuYyhjYWxsYmFja3MtPnR1bm5lbF9iYXRvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR1bm5lbCkpKSkKKy0gICAgU1ZOX0VSUihmaW5kX3R1bm5lbF9hZ2VudCh0dW5uZWwsIHVyaS5ob3N0aW5mbywgJnR1bm5lbF9hcmd2LCBjb25maWcsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0X3Bvb2wpKTsKKysgICAgeworKyAgICAgIGNvbnN0IGNoYXIgKmRlY29kZWRfaG9zdGluZm87CisrCisrICAgICAgZGVjb2RlZF9ob3N0aW5mbyA9IHN2bl9wYXRoX3VyaV9kZWNvZGUodXJpLmhvc3RpbmZvLCByZXN1bHRfcG9vbCk7CisrCisrICAgICAgaWYgKCFpc192YWxpZF9ob3N0aW5mbyhkZWNvZGVkX2hvc3RpbmZvKSkKKysgICAgICAgIHJldHVybiBzdm5fZXJyb3JfY3JlYXRlZihTVk5fRVJSX0JBRF9VUkwsIE5VTEwsIF8oIkludmFsaWQgaG9zdCAnJXMnIiksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJpLmhvc3RpbmZvKTsKKysKKysgICAgICBTVk5fRVJSKGZpbmRfdHVubmVsX2FnZW50KHR1bm5lbCwgZGVjb2RlZF9ob3N0aW5mbywgJnR1bm5lbF9hcmd2LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLCByZXN1bHRfcG9vbCkpOworKyAgICB9CisgICBlbHNlCisgICAgIHR1bm5lbF9hcmd2ID0gTlVMTDsKKyAKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N1YnZlcnNpb24vc3VidmVyc2lvbl8xLjkuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3VidmVyc2lvbi9zdWJ2ZXJzaW9uXzEuOS41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNWZiYTY3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3VidmVyc2lvbi9zdWJ2ZXJzaW9uXzEuOS41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotU1VNTUFSWSA9ICJTdWJ2ZXJzaW9uIChzdm4pIHZlcnNpb24gY29udHJvbCBzeXN0ZW0gY2xpZW50IgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi1ERVBFTkRTID0gImFwci11dGlsIHNlcmYgc3FsaXRlMyBmaWxlIgotREVQRU5EU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlLXJlcGxhY2VtZW50LW5hdGl2ZSIKLVJERVBFTkRTXyR7UE59ID0gInNlcmYiCi1MSUNFTlNFID0gIkFwYWNoZS0yIgotSE9NRVBBR0UgPSAiaHR0cDovL3N1YnZlcnNpb24udGlncmlzLm9yZyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLWluaGVyaXQgZ2V0dGV4dAotCi1TUkNfVVJJID0gIiR7QVBBQ0hFX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL2Rpc2FibGVfbWFjb3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vc2VyZi5tNC1SZWdleC1tb2RpZmllZC10by1hbGxvdy1ELWluLXBhdGhzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWxpYnRvb2wtbmFtZS1pbi1jb25maWd1cmUuYWMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vc2VyZm1hY3JvLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOWZjYmFlMzUyYTVlZmU3M2Q0NmE4OGM5N2M2YmJhMTQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGE0ZmM2OGFmZjFkMThkY2I0ZGQ5ZTQ2MDY0OGQyNGQ5ZTk4NjU3ZmJlZDQ5NmM1ODI5MjljNmIzY2U1NTVlNSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YWY4MWFlNDliYTM1OWU3MDYyNmMwNWU5YmYzMTM3MDkiCi0KLVBBQ0tBR0VDT05GSUdbc2FzbF0gPSAiLS13aXRoLXNhc2wsLS13aXRob3V0LXNhc2wsY3lydXMtc2FzbCIKLVBBQ0tBR0VDT05GSUdbZ25vbWUta2V5cmluZ10gPSAiLS13aXRoLWdub21lLWtleXJpbmcsLS13aXRob3V0LWdub21lLWtleXJpbmcsZ2xpYi0yLjAgZ25vbWUta2V5cmluZyIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LWJlcmtlbGV5LWRiIC0td2l0aG91dC1hcHhzIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtc3dpZyAtLXdpdGgtYXByPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9IFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtYXByLXV0aWw9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30gXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1rZXljaGFpbiBcCi0gICAgICAgICAgICAgICAgYWNfY3ZfcGF0aF9SVUJZPW5vbmUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLWV4cG9ydCBMREZMQUdTICs9ICIgLUwke1NUQUdJTkdfTElCRElSfSAiCi1DUFBGTEFHUyArPSAiLVAiCi1CVUlMRF9DUFBGTEFHUyArPSAiLVAiCi0KLWFjcGF0aHMgPSAiLUkgYnVpbGQvIC1JIGJ1aWxkL2FjLW1hY3Jvcy8iCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLQlybSAtZiAke1N9L2xpYnRvb2wKLQlybSAtZiAke1N9L2J1aWxkL2xpYnRvb2wubTQgJHtTfS9idWlsZC9sdG1haW4uc2ggJHtTfS9idWlsZC9sdG9wdGlvbnMubTQgJHtTfS9idWlsZC9sdHN1Z2FyLm00ICR7U30vYnVpbGQvbHR2ZXJzaW9uLm00ICR7U30vYnVpbGQvbHR+b2Jzb2xldGUubTQKLQlybSAtZiAke1N9L2FjbG9jYWwubTQKLQlzZWQgLWkgLWUgJ3M6d2l0aF9zYXNsPSIvdXNyL2xvY2FsIjp3aXRoX3Nhc2w9IiR7U1RBR0lOR19ESVJ9IjonICR7U30vYnVpbGQvYWMtbWFjcm9zL3Nhc2wubTQKLX0KLQotI3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IHdhcm5pbmc6IGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC93b3JrL3g4Nl82NC1saW51eC9zdWJ2ZXJzaW9uLW5hdGl2ZS8xLjguOS1yMC9idWlsZC9zdWJ2ZXJzaW9uL2xpYnN2bl9yYV9sb2NhbC9saWJzdm5fcmFfbG9jYWwtMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogd2FybmluZzogYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3dvcmsveDg2XzY0LWxpbnV4L3N1YnZlcnNpb24tbmF0aXZlLzEuOC45LXIwL2J1aWxkL3N1YnZlcnNpb24vbGlic3ZuX3JlcG9zL2xpYnN2bl9yZXBvcy0xLmxhJyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIGluIGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYid8IC91c3IvYmluL2xkOiBjYW5ub3QgZmluZCAtbHN2bl9kZWx0YS0xfCBjb2xsZWN0MjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1c3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IHdhcm5pbmc6IGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC93b3JrL3g4Nl82NC1saW51eC9zdWJ2ZXJzaW9uLW5hdGl2ZS8xLjguOS1yMC9idWlsZC9zdWJ2ZXJzaW9uL2xpYnN2bl9yYV9zdm4vbGlic3ZuX3JhX3N2bi0xLmxhJyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIGluIGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYid8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiB3YXJuaW5nOiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvd29yay94ODZfNjQtbGludXgvc3VidmVyc2lvbi1uYXRpdmUvMS44LjktcjAvYnVpbGQvc3VidmVyc2lvbi9saWJzdm5fcmFfc2VyZi9saWJzdm5fcmFfc2VyZi0xLmxhJyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIGluIGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYicKLSN8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiBlcnJvcjogcmVsaW5rIGBsaWJzdm5fcmFfc2VyZi0xLmxhJyB3aXRoIHRoZSBhYm92ZSBjb21tYW5kIGJlZm9yZSBpbnN0YWxsaW5nIGl0Ci0jfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogd2FybmluZzogYC4uLy4uL3N1YnZlcnNpb24vbGlic3ZuX3JlcG9zL2xpYnN2bl9yZXBvcy0xLmxhJyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIGluIGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYicKLSN8IC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3dvcmsveDg2XzY0LWxpbnV4L3N1YnZlcnNpb24tbmF0aXZlLzEuOC45LXIwL3N1YnZlcnNpb24tMS44LjkvYnVpbGQtb3V0cHV0cy5tazoxMDkwOiByZWNpcGUgZm9yIHRhcmdldCAnaW5zdGFsbC1zZXJmLWxpYicgZmFpbGVkCi0jfCBtYWtlOiAqKiogW2luc3RhbGwtc2VyZi1saWJdIEVycm9yIDEKLVBBUkFMTEVMX01BS0VJTlNUID0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3VidmVyc2lvbi9zdWJ2ZXJzaW9uXzEuOS42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdWJ2ZXJzaW9uL3N1YnZlcnNpb25fMS45LjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTMyZWRlYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3VidmVyc2lvbi9zdWJ2ZXJzaW9uXzEuOS42LmJiCkBAIC0wLDAgKzEsNTYgQEAKK1NVTU1BUlkgPSAiU3VidmVyc2lvbiAoc3ZuKSB2ZXJzaW9uIGNvbnRyb2wgc3lzdGVtIGNsaWVudCIKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorREVQRU5EUyA9ICJhcHItdXRpbCBzZXJmIHNxbGl0ZTMgZmlsZSIKK0RFUEVORFNfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZS1yZXBsYWNlbWVudC1uYXRpdmUiCitSREVQRU5EU18ke1BOfSA9ICJzZXJmIgorTElDRU5TRSA9ICJBcGFjaGUtMiIKK0hPTUVQQUdFID0gImh0dHA6Ly9zdWJ2ZXJzaW9uLnRpZ3Jpcy5vcmciCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCitpbmhlcml0IGdldHRleHQgcGtnY29uZmlnCisKK1NSQ19VUkkgPSAiJHtBUEFDSEVfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vZGlzYWJsZV9tYWNvcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zZXJmLm00LVJlZ2V4LW1vZGlmaWVkLXRvLWFsbG93LUQtaW4tcGF0aHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtbGlidG9vbC1uYW1lLWluLWNvbmZpZ3VyZS5hYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zZXJmbWFjcm8ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctOTgwMC5wYXRjaDtzdHJpcGxldmVsPTAgXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJmMjdlMDAzMzhkNGE5ZjdmOWFlYzlkNGEzZjhiNDE4YiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkYmNiYzUxZmI2MzQwODJmMDA5MTIxZjJjYjY0MzUwY2UzMjE0NjYxMjc4N2ZmYjBmN2NlZDM1MWFhY2FhZTE5IgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hZjgxYWU0OWJhMzU5ZTcwNjI2YzA1ZTliZjMxMzcwOSIKKworUEFDS0FHRUNPTkZJR1tzYXNsXSA9ICItLXdpdGgtc2FzbCwtLXdpdGhvdXQtc2FzbCxjeXJ1cy1zYXNsIgorUEFDS0FHRUNPTkZJR1tnbm9tZS1rZXlyaW5nXSA9ICItLXdpdGgtZ25vbWUta2V5cmluZywtLXdpdGhvdXQtZ25vbWUta2V5cmluZyxnbGliLTIuMCBnbm9tZS1rZXlyaW5nIgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAgICAgICAgICAgICAtLXdpdGhvdXQtYmVya2VsZXktZGIgLS13aXRob3V0LWFweHMgXAorICAgICAgICAgICAgICAgIC0td2l0aG91dC1zd2lnIC0td2l0aC1hcHI9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30gXAorICAgICAgICAgICAgICAgIC0td2l0aC1hcHItdXRpbD0ke1NUQUdJTkdfQklORElSX0NST1NTfSBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWtleWNoYWluIFwKKyAgICAgICAgICAgICAgICBhY19jdl9wYXRoX1JVQlk9bm9uZSIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworZXhwb3J0IExERkxBR1MgKz0gIiAtTCR7U1RBR0lOR19MSUJESVJ9ICIKK0NQUEZMQUdTICs9ICItUCIKK0JVSUxEX0NQUEZMQUdTICs9ICItUCIKKworYWNwYXRocyA9ICItSSBidWlsZC8gLUkgYnVpbGQvYWMtbWFjcm9zLyIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworCXJtIC1mICR7U30vbGlidG9vbAorCXJtIC1mICR7U30vYnVpbGQvbGlidG9vbC5tNCAke1N9L2J1aWxkL2x0bWFpbi5zaCAke1N9L2J1aWxkL2x0b3B0aW9ucy5tNCAke1N9L2J1aWxkL2x0c3VnYXIubTQgJHtTfS9idWlsZC9sdHZlcnNpb24ubTQgJHtTfS9idWlsZC9sdH5vYnNvbGV0ZS5tNAorCXJtIC1mICR7U30vYWNsb2NhbC5tNAorCXNlZCAtaSAtZSAnczp3aXRoX3Nhc2w9Ii91c3IvbG9jYWwiOndpdGhfc2FzbD0iJHtTVEFHSU5HX0RJUn0iOicgJHtTfS9idWlsZC9hYy1tYWNyb3Mvc2FzbC5tNAorfQorCisjfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogd2FybmluZzogYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3dvcmsveDg2XzY0LWxpbnV4L3N1YnZlcnNpb24tbmF0aXZlLzEuOC45LXIwL2J1aWxkL3N1YnZlcnNpb24vbGlic3ZuX3JhX2xvY2FsL2xpYnN2bl9yYV9sb2NhbC0xLmxhJyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIGluIGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYid8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiB3YXJuaW5nOiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvd29yay94ODZfNjQtbGludXgvc3VidmVyc2lvbi1uYXRpdmUvMS44LjktcjAvYnVpbGQvc3VidmVyc2lvbi9saWJzdm5fcmVwb3MvbGlic3ZuX3JlcG9zLTEubGEnIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgaW4gYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliJ3wgL3Vzci9iaW4vbGQ6IGNhbm5vdCBmaW5kIC1sc3ZuX2RlbHRhLTF8IGNvbGxlY3QyOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogd2FybmluZzogYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3dvcmsveDg2XzY0LWxpbnV4L3N1YnZlcnNpb24tbmF0aXZlLzEuOC45LXIwL2J1aWxkL3N1YnZlcnNpb24vbGlic3ZuX3JhX3N2bi9saWJzdm5fcmFfc3ZuLTEubGEnIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgaW4gYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliJ3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IHdhcm5pbmc6IGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC93b3JrL3g4Nl82NC1saW51eC9zdWJ2ZXJzaW9uLW5hdGl2ZS8xLjguOS1yMC9idWlsZC9zdWJ2ZXJzaW9uL2xpYnN2bl9yYV9zZXJmL2xpYnN2bl9yYV9zZXJmLTEubGEnIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgaW4gYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliJworI3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IGVycm9yOiByZWxpbmsgYGxpYnN2bl9yYV9zZXJmLTEubGEnIHdpdGggdGhlIGFib3ZlIGNvbW1hbmQgYmVmb3JlIGluc3RhbGxpbmcgaXQKKyN8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiB3YXJuaW5nOiBgLi4vLi4vc3VidmVyc2lvbi9saWJzdm5fcmVwb3MvbGlic3ZuX3JlcG9zLTEubGEnIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgaW4gYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliJworI3wgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvd29yay94ODZfNjQtbGludXgvc3VidmVyc2lvbi1uYXRpdmUvMS44LjktcjAvc3VidmVyc2lvbi0xLjguOS9idWlsZC1vdXRwdXRzLm1rOjEwOTA6IHJlY2lwZSBmb3IgdGFyZ2V0ICdpbnN0YWxsLXNlcmYtbGliJyBmYWlsZWQKKyN8IG1ha2U6ICoqKiBbaW5zdGFsbC1zZXJmLWxpYl0gRXJyb3IgMQorUEFSQUxMRUxfTUFLRUlOU1QgPSAiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXNsaW51eC9zeXNsaW51eF82LjAzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXNsaW51eC9zeXNsaW51eF82LjAzLmJiCmluZGV4IDY5YmNlMWYuLmY4YjEwOTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzbGludXgvc3lzbGludXhfNi4wMy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c2xpbnV4L3N5c2xpbnV4XzYuMDMuYmIKQEAgLTEsNSArMSw1IEBACiBTVU1NQVJZID0gIk11bHRpLXB1cnBvc2UgbGludXggYm9vdGxvYWRlciIKLUhPTUVQQUdFID0gImh0dHA6Ly9zeXNsaW51eC56eXRvci5jb20vIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5zeXNsaW51eC5vcmcvIgogTElDRU5TRSA9ICJHUEx2MisiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wNjM2ZTczZmYwMjE1ZThkNjcyZGM0YzMyYzMxN2JiMyBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9SRUFETUU7YmVnaW5saW5lPTM1O2VuZGxpbmU9NDE7bWQ1PTU1OGYyYzcxY2IxZmI5YmE1MTFjY2Q0ODU4ZTQ4ZThhIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXN0ZW1kLWJvb3RjaGFydC9maWxlcy8wMDAxLXBhcnNlLXV0aWwtRG9uLXQtdXNlLXhsb2NhbGUuaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzdGVtZC1ib290Y2hhcnQvZmlsZXMvMDAwMS1wYXJzZS11dGlsLURvbi10LXVzZS14bG9jYWxlLmgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWFhMDQ2MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzdGVtZC1ib290Y2hhcnQvZmlsZXMvMDAwMS1wYXJzZS11dGlsLURvbi10LXVzZS14bG9jYWxlLmgucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSBkMzc5MTI2ZDU2ZDBiNmU5MzViMmQ5N2NhNzE1NzllNmNjNTRkMWJiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KK0RhdGU6IFR1ZSwgMTggSnVsIDIwMTcgMTM6Mzc6MjcgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gcGFyc2UtdXRpbDogRG9uJ3QgdXNlIHhsb2NhbGUuaAorCitnbGliYyAyLjI2IG5vIGxvbmdlciBjb250YWlucyB0aGUgbm9uLXN0YW5kYXJkIHhsb2NhbGUuaAorKGh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9nbGliYy93aWtpL1JlbGVhc2UvMi4yNiNSZW1vdmFsX29mXy4yN3hsb2NhbGUuaC4yNykKKworVGhpcyBjaGFuZ2Ugc2hvdWxkbid0IGJyZWFrIGFueXRoaW5nIGFzIHhsb2NhbGUuaCB3YXMgYSBzdWJzZXQgb2YKK2xvY2FsZS5oLgorCitTaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9zeXN0ZW1kL3N5c3RlbWQtYm9vdGNoYXJ0L3B1bGwvMzVdCistLS0KKyBzcmMvcGFyc2UtdXRpbC5jIHwgMSAtCisgMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9wYXJzZS11dGlsLmMgYi9zcmMvcGFyc2UtdXRpbC5jCitpbmRleCA1NjM1YTY4Li4xYjIxNjljIDEwMDY0NAorLS0tIGEvc3JjL3BhcnNlLXV0aWwuYworKysrIGIvc3JjL3BhcnNlLXV0aWwuYworQEAgLTIxLDcgKzIxLDYgQEAKKyAjaW5jbHVkZSA8bG9jYWxlLmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKy0jaW5jbHVkZSA8eGxvY2FsZS5oPgorIAorICNpbmNsdWRlICJtYWNyby5oIgorICNpbmNsdWRlICJwYXJzZS11dGlsLmgiCistLSAKKzIuMTMuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L3N5c3RlbWQtYm9vdGNoYXJ0XzIzMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzdGVtZC1ib290Y2hhcnQvc3lzdGVtZC1ib290Y2hhcnRfMjMxLmJiCmluZGV4IDFkODgwMzYuLjRkYTAwMGUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzdGVtZC1ib290Y2hhcnQvc3lzdGVtZC1ib290Y2hhcnRfMjMxLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzdGVtZC1ib290Y2hhcnQvc3lzdGVtZC1ib290Y2hhcnRfMjMxLmJiCkBAIC0yLDcgKzIsOSBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5MR1BMMi4xO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLkdQTDI7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgogCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vc3lzdGVtZC9zeXN0ZW1kLWJvb3RjaGFydC5naXQ7cHJvdG9jb2w9aHR0cHMiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vc3lzdGVtZC9zeXN0ZW1kLWJvb3RjaGFydC5naXQ7cHJvdG9jb2w9aHR0cHMgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1wYXJzZS11dGlsLURvbi10LXVzZS14bG9jYWxlLmgucGF0Y2ggXAorIgogCiAjIE1vZGlmeSB0aGVzZSBhcyBkZXNpcmVkCiBQViA9ICIyMzErZ2l0JHtTUkNQVn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjZi1hZ2VudC90Y2YtYWdlbnRfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2YtYWdlbnQvdGNmLWFnZW50X2dpdC5iYgppbmRleCBlNWU0MWYxLi45ZGIyNmRjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjZi1hZ2VudC90Y2YtYWdlbnRfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNmLWFnZW50L3RjZi1hZ2VudF9naXQuYmIKQEAgLTE2LDYgKzE2LDcgQEAKICAgICAgICAgICAgZmlsZTovL3RjZi1hZ2VudC5pbml0IFwKICAgICAgICAgICAgZmlsZTovL3RjZi1hZ2VudC5zZXJ2aWNlIFwKICAgICAgICAgICAiCitVUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKIAogREVQRU5EUyA9ICJ1dGlsLWxpbnV4IG9wZW5zc2wiCiBSREVQRU5EU18ke1BOfSA9ICJiYXNoIgpAQCAtMzAsMTYgKzMxLDIyIEBACiBJTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCA5OSAzIDUgLiBzdG9wIDIwIDAgMSAyIDYgLiIKIAogIyBtYW5nbGluZyBuZWVkZWQgZm9yIG1ha2UKLU1BS0VfQVJDSCA9ICJgZWNobyAke1RBUkdFVF9BUkNIfSB8IHNlZCBzLGkuODYsaTY4NixgIgorTUFLRV9BUkNIID0gImBlY2hvICR7VEFSR0VUX0FSQ0h9IHwgc2VkIHMsaS44NixpNjg2LCB8IHNlZCBzLGFhcmNoNjQsYTY0LGAiCiBNQUtFX09TID0gImBlY2hvICR7VEFSR0VUX09TfSB8IHNlZCBzLF5saW51eC4qLEdOVS9MaW51eCxgIgogCiBFWFRSQV9PRU1BS0UgPSAiTUFDSElORT0ke01BS0VfQVJDSH0gT1BTWVM9JHtNQUtFX09TfSAnQ0M9JHtDQ30nICdBUj0ke0FSfSciCiAKLSMgVGhleSBkb24ndCBidWlsZCBvbiBBUk0gYW5kIHdlIGRvbid0IG5lZWQgdGhlbSBhY3R1YWxseS4KLUNGTEFHUyArPSAiLURTRVJWSUNFX1J1bkNvbnRyb2w9MCAtRFNFUlZJQ0VfQnJlYWtwb2ludHM9MCBcCitMQ0xfU1RPUF9TRVJWSUNFUyA9ICItRFNFUlZJQ0VfUnVuQ29udHJvbD0wIC1EU0VSVklDRV9CcmVha3BvaW50cz0wIFwKICAgICAtRFNFUlZJQ0VfTWVtb3J5PTAgLURTRVJWSUNFX1JlZ2lzdGVycz0wIC1EU0VSVklDRV9NZW1vcnlNYXA9MCBcCi0gICAgLURTRVJWSUNFX1N0YWNrVHJhY2U9MCAtRFNFUlZJQ0VfU3ltYm9scz0wIC1EU0VSVklDRV9MaW5lTnVtYmVycz0wIFwKLSAgICAtRFNFUlZJQ0VfRXhwcmVzc2lvbnM9MCIKKyAgICAtRFNFUlZJQ0VfU3RhY2tUcmFjZT0wIC1EU0VSVklDRV9FeHByZXNzaW9ucz0wIgorCisKKyMgVGhlc2UgZmVhdHVyZXMgZG9uJ3QgY29tcGlsZSBmb3Igc2V2ZXJhbCBjYXNlcy4KKyMKK0NGTEFHU19hcHBlbmRfbWlwcyA9ICIgJHtMQ0xfU1RPUF9TRVJWSUNFU30iCitDRkxBR1NfYXBwZW5kX21pcHM2NCA9ICIgJHtMQ0xfU1RPUF9TRVJWSUNFU30iCitDRkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgJHtMQ0xfU1RPUF9TRVJWSUNFU30iCitDRkxBR1NfYXBwZW5kX3Bvd2VycGM2NCA9ICIgJHtMQ0xfU1RPUF9TRVJWSUNFU30iCiAKIGRvX2luc3RhbGwoKSB7CiAJb2VfcnVubWFrZSBpbnN0YWxsIElOU1RBTExST09UPSR7RH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGNsXzguNi42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2x0ay90Y2xfOC42LjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwY2QxOGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2x0ay90Y2xfOC42LjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi1TVU1NQVJZID0gIlRvb2wgQ29tbWFuZCBMYW5ndWFnZSIKLUhPTUVQQUdFID0gImh0dHA6Ly90Y2wuc291cmNlZm9yZ2UubmV0IgotU0VDVElPTiA9ICJkZXZlbC90Y2x0ayIKLQotIyBodHRwOi8vd3d3LnRjbC50ay9zb2Z0d2FyZS90Y2x0ay9saWNlbnNlLmh0bWwKLUxJQ0VOU0UgPSAidGNsICYgQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vLi4vbGljZW5zZS50ZXJtczttZDU9MDU4ZjYyMjk3OTgyODFiYmNhYzQyMzljNzg4Y2ZhMzggXAotICAgIGZpbGU6Ly8uLi9jb21wYXQvbGljZW5zZS50ZXJtczttZDU9MDU4ZjYyMjk3OTgyODFiYmNhYzQyMzljNzg4Y2ZhMzggXAotICAgIGZpbGU6Ly8uLi9saWJyYXJ5L2xpY2Vuc2UudGVybXM7bWQ1PTA1OGY2MjI5Nzk4MjgxYmJjYWM0MjM5Yzc4OGNmYTM4IFwKLSAgICBmaWxlOi8vLi4vbWFjb3N4L2xpY2Vuc2UudGVybXM7bWQ1PTA1OGY2MjI5Nzk4MjgxYmJjYWM0MjM5Yzc4OGNmYTM4IFwKLSAgICBmaWxlOi8vLi4vdGVzdHMvbGljZW5zZS50ZXJtczttZDU9MDU4ZjYyMjk3OTgyODFiYmNhYzQyMzljNzg4Y2ZhMzggXAotICAgIGZpbGU6Ly8uLi93aW4vbGljZW5zZS50ZXJtczttZDU9MDU4ZjYyMjk3OTgyODFiYmNhYzQyMzljNzg4Y2ZhMzggXAotIgotCi1ERVBFTkRTID0gInRjbC1uYXRpdmUgemxpYiIKLQotQkFTRV9TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS90Y2wvJHtCUE59JHtQVn0tc3JjLnRhci5neiBcCi0gICAgICAgICAgICAgICAgZmlsZTovL3RjbC1hZGQtc29uYW1lLnBhdGNoIgotU1JDX1VSSSA9ICIke0JBU0VfU1JDX1VSSX0gXAotICAgICAgICAgICBmaWxlOi8vZml4X25vbl9uYXRpdmVfYnVpbGRfaXNzdWUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4X2lzc3VlX3dpdGhfb2xkX2Rpc3Ryb19nbGliYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ub19wYWNrYWdlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly90Y2wtcmVtb3ZlLWhhcmRjb2RlZC1pbnN0YWxsLXBhdGgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYWx0ZXItaW5jbHVkZWRpci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjUxOTNhZWE4MTA3ODM5YTc5ZGY4YWM3MDk1NTJlY2I3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImEyNjU0MDk3ODFlNGIzZWRjYzRlZjgyMjUzMzA3MWIzNGMzZGM2NzkwYjg5Mzk2MzgwOWI5ZmUyMjFiZWZlMDciCi0KLVNSQ19VUklfY2xhc3MtbmF0aXZlID0gIiR7QkFTRV9TUkNfVVJJfSIKLQotUyA9ICIke1dPUktESVJ9LyR7QlBOfSR7UFZ9L3VuaXgiCi0KLVZFUiA9ICIke1BWfSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcHRlc3QgYmluY29uZmlnCi0KLURFUEVORFNfY2xhc3MtbmF0aXZlID0gInpsaWItbmF0aXZlIgotCi1FWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtdGhyZWFkcyAtLWRpc2FibGUtcnBhdGggLS1saWJkaXI9JHtsaWJkaXJ9IgotCi1kb19jb25maWd1cmUoKSB7Ci0JY2QgJHtTfQotCWdudS1jb25maWdpemUKLQljZCAke0J9Ci0Jb2VfcnVuY29uZgotfQotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0JZWNobyA+ICR7U30vLi4vY29tcGF0L2ZpeHN0cnRvZC5jCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0JYXV0b3Rvb2xzX2RvX2luc3RhbGwgaW5zdGFsbC1wcml2YXRlLWhlYWRlcnMKLQlsbiAtc2YgLi90Y2xzaCR7VkVSfSAke0R9JHtiaW5kaXJ9L3RjbHNoCi0JbG4gLXNmIHRjbHNoOC42ICR7RH0ke2JpbmRpcn0vdGNsc2gke1ZFUn0KLQlzZWQgLWkgInM7LUwke0J9Oy1MJHtTVEFHSU5HX0xJQkRJUn07ZyIgdGNsQ29uZmlnLnNoCi0Jc2VkIC1pICJzOycke1dPUktESVJ9Oycke1NUQUdJTkdfSU5DRElSfTtnIiB0Y2xDb25maWcuc2gKLQlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9Ci0JaW5zdGFsbCAtbSAwNzU1IHRjbENvbmZpZy5zaCAke0R9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfQotCWluc3RhbGwgLW0gMDc1NSB0Y2xDb25maWcuc2ggJHtEfSR7bGliZGlyfQotCWNkIC4uCi0JZm9yIGRpciBpbiBjb21wYXQgZ2VuZXJpYyB1bml4OyBkbwotCQlpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9LyR7QlBOfSR7VkVSfS8kZGlyCi0JCWluc3RhbGwgLW0gMDY0NCAke1N9Ly4uLyRkaXIvKi5oICR7RH0ke2luY2x1ZGVkaXJ9LyR7QlBOfSR7VkVSfS8kZGlyLwotCWRvbmUKLX0KLQotU1lTUk9PVF9ESVJTICs9ICIke2JpbmRpcl9jcm9zc3NjcmlwdHN9IgotCi1QQUNLQUdFUyA9KyAidGNsLWxpYiIKLUZJTEVTX3RjbC1saWIgPSAiJHtsaWJkaXJ9L2xpYnRjbDguNi5zby4qIgotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS90Y2wke1ZFUn0gJHtsaWJkaXJ9L3RjbDguNiAke2xpYmRpcn0vdGNsOCIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3RjbENvbmZpZy5zaCAke2xpYmRpcn0vdGNsb29Db25maWcuc2giCi0KLSMgaXNuJ3QgZ2V0dGluZyBwaWNrZWQgdXAgYnkgc2hsaWJzIGNvZGUKLVJERVBFTkRTXyR7UE59ICs9ICJ0Y2wtbGliIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJsaWJnY2MiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLQlvZV9ydW5tYWtlIHRjbHRlc3QKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQljcCAke0J9L3RjbHRlc3QgJHtEfSR7UFRFU1RfUEFUSH0KLQljcCAtciAke1N9Ly4uL2xpYnJhcnkgJHtEfSR7UFRFU1RfUEFUSH0KLQljcCAtciAke1N9Ly4uL3Rlc3RzICR7RH0ke1BURVNUX1BBVEh9Ci19Ci0KLSMgRml4IHNvbWUgcGF0aHMgdGhhdCBtaWdodCBiZSB1c2VkIGJ5IFRjbCBleHRlbnNpb25zCi1CSU5DT05GSUdfR0xPQiA9ICIqQ29uZmlnLnNoIgotCi0jIEZpeCB0aGUgcGF0aCBpbiBzc3RhdGUKLVNTVEFURV9TQ0FOX0ZJTEVTICs9ICIqQ29uZmlnLnNoIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2x0ay90Y2xfOC42LjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbF84LjYuNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYWM3M2JlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2x0ay90Y2xfOC42LjcuYmIKQEAgLTAsMCArMSwxMDEgQEAKK1NVTU1BUlkgPSAiVG9vbCBDb21tYW5kIExhbmd1YWdlIgorSE9NRVBBR0UgPSAiaHR0cDovL3RjbC5zb3VyY2Vmb3JnZS5uZXQiCitTRUNUSU9OID0gImRldmVsL3RjbHRrIgorCisjIGh0dHA6Ly93d3cudGNsLnRrL3NvZnR3YXJlL3RjbHRrL2xpY2Vuc2UuaHRtbAorTElDRU5TRSA9ICJ0Y2wgJiBCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8uLi9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCisgICAgZmlsZTovLy4uL2NvbXBhdC9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCisgICAgZmlsZTovLy4uL2xpYnJhcnkvbGljZW5zZS50ZXJtczttZDU9MDU4ZjYyMjk3OTgyODFiYmNhYzQyMzljNzg4Y2ZhMzggXAorICAgIGZpbGU6Ly8uLi9tYWNvc3gvbGljZW5zZS50ZXJtczttZDU9MDU4ZjYyMjk3OTgyODFiYmNhYzQyMzljNzg4Y2ZhMzggXAorICAgIGZpbGU6Ly8uLi90ZXN0cy9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCisgICAgZmlsZTovLy4uL3dpbi9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCisiCisKK0RFUEVORFMgPSAidGNsLW5hdGl2ZSB6bGliIgorCitCQVNFX1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3RjbC8ke0JQTn0ke1BWfS1zcmMudGFyLmd6IFwKKyAgICAgICAgICAgICAgICBmaWxlOi8vdGNsLWFkZC1zb25hbWUucGF0Y2giCitTUkNfVVJJID0gIiR7QkFTRV9TUkNfVVJJfSBcCisgICAgICAgICAgIGZpbGU6Ly9maXhfbm9uX25hdGl2ZV9idWlsZF9pc3N1ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXhfaXNzdWVfd2l0aF9vbGRfZGlzdHJvX2dsaWJjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL25vX3BhY2thZ2VzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3RjbC1yZW1vdmUtaGFyZGNvZGVkLWluc3RhbGwtcGF0aC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9hbHRlci1pbmNsdWRlZGlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiNTY3M2FhZjQ1YjVkZTVkOGRkODBiYjNkYWFlYjg4MzgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2M2YjhmODRlMzczMzI0MjNjZmU1YmFlNTAzNDQwZDg4NDUwZGE4Y2MxMjQzNDk2MjQ5ZmFhNTI2ODAyNmJhNSIKKworU1JDX1VSSV9jbGFzcy1uYXRpdmUgPSAiJHtCQVNFX1NSQ19VUkl9IgorCitTID0gIiR7V09SS0RJUn0vJHtCUE59JHtQVn0vdW5peCIKKworVkVSID0gIiR7UFZ9IgorCitpbmhlcml0IGF1dG90b29scyBwdGVzdCBiaW5jb25maWcKKworRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXRocmVhZHMgLS1kaXNhYmxlLXJwYXRoIC0tbGliZGlyPSR7bGliZGlyfSIKKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworCWVjaG8gPiAke1N9Ly4uL2NvbXBhdC9maXhzdHJ0b2QuYworfQorCitkb19pbnN0YWxsKCkgeworCWF1dG90b29sc19kb19pbnN0YWxsCisJb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsLXByaXZhdGUtaGVhZGVycworCWxuIC1zZiAuL3RjbHNoJHtWRVJ9ICR7RH0ke2JpbmRpcn0vdGNsc2gKKwlsbiAtc2YgdGNsc2g4LjYgJHtEfSR7YmluZGlyfS90Y2xzaCR7VkVSfQorCXNlZCAtaSAiczstTCR7Qn07LUwke1NUQUdJTkdfTElCRElSfTtnIiB0Y2xDb25maWcuc2gKKwlzZWQgLWkgInM7JyR7V09SS0RJUn07JyR7U1RBR0lOR19JTkNESVJ9O2ciIHRjbENvbmZpZy5zaAorCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30KKwlpbnN0YWxsIC1tIDA3NTUgdGNsQ29uZmlnLnNoICR7RH0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9CisJaW5zdGFsbCAtbSAwNzU1IHRjbENvbmZpZy5zaCAke0R9JHtsaWJkaXJ9CisJZm9yIGRpciBpbiBjb21wYXQgZ2VuZXJpYyB1bml4OyBkbworCQlpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9LyR7QlBOfSR7VkVSfS8kZGlyCisJCWluc3RhbGwgLW0gMDY0NCAke1N9Ly4uLyRkaXIvKi5oICR7RH0ke2luY2x1ZGVkaXJ9LyR7QlBOfSR7VkVSfS8kZGlyLworCWRvbmUKK30KKworU1lTUk9PVF9ESVJTICs9ICIke2JpbmRpcl9jcm9zc3NjcmlwdHN9IgorCitQQUNLQUdFUyA9KyAidGNsLWxpYiIKK0ZJTEVTX3RjbC1saWIgPSAiJHtsaWJkaXJ9L2xpYnRjbDguNi5zby4qIgorRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS90Y2wke1ZFUn0gJHtsaWJkaXJ9L3RjbDguNiAke2xpYmRpcn0vdGNsOCIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3RjbENvbmZpZy5zaCAke2xpYmRpcn0vdGNsb29Db25maWcuc2giCisKKyMgaXNuJ3QgZ2V0dGluZyBwaWNrZWQgdXAgYnkgc2hsaWJzIGNvZGUKK1JERVBFTkRTXyR7UE59ICs9ICJ0Y2wtbGliIgorUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJsaWJnY2MiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworZG9fY29tcGlsZV9wdGVzdCgpIHsKKwlvZV9ydW5tYWtlIHRjbHRlc3QKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwljcCAke0J9L3RjbHRlc3QgJHtEfSR7UFRFU1RfUEFUSH0KKwljcCAtciAke1N9Ly4uL2xpYnJhcnkgJHtEfSR7UFRFU1RfUEFUSH0KKwljcCAtciAke1N9Ly4uL3Rlc3RzICR7RH0ke1BURVNUX1BBVEh9Cit9CisKKyMgRml4IHNvbWUgcGF0aHMgdGhhdCBtaWdodCBiZSB1c2VkIGJ5IFRjbCBleHRlbnNpb25zCitCSU5DT05GSUdfR0xPQiA9ICIqQ29uZmlnLnNoIgorCisjIEZpeCB0aGUgcGF0aCBpbiBzc3RhdGUKK1NTVEFURV9TQ0FOX0ZJTEVTICs9ICIqQ29uZmlnLnNoIgorCisjIENsZWFudXAgaG9zdCBwYXRoIGZyb20gJHtsaWJkaXJ9L3RjbENvbmZpZy5zaCBhbmQgcmVtb3ZlIHRoZQorIyAke2JpbmRpcl9jcm9zc3NjcmlwdHN9L3RjbENvbmZpZy5zaCBmcm9tIHRhcmdldAorUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTICs9ICJ0Y2xfcGFja2FnZV9wcmVwcm9jZXNzIgordGNsX3BhY2thZ2VfcHJlcHJvY2VzcygpIHsKKwlzZWQgLWkgLWUgInM7JHtERUJVR19QUkVGSVhfTUFQfTs7ZyIgXAorCSAgICAgICAtZSAiczstTCR7U1RBR0lOR19MSUJESVJ9Oy1MJHtsaWJkaXJ9O2ciIFwKKwkgICAgICAgLWUgInM7JHtTVEFHSU5HX0lOQ0RJUn07JHtpbmNsdWRlZGlyfTtnIiBcCisJICAgICAgIC1lICJzOy0tc3lzcm9vdD0ke1JFQ0lQRV9TWVNST09UfTs7ZyIgXAorCSAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3RjbENvbmZpZy5zaAorCisJcm0gLWYgJHtQS0dEfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30vdGNsQ29uZmlnLnNoCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3VuZnMzL3VuZnMzXzAuOS4yMi5yNDk3LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy91bmZzMy91bmZzM18wLjkuMjIucjQ5Ny5iYgppbmRleCA1MmFhMTdlLi5jZWJjODY2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3VuZnMzL3VuZnMzXzAuOS4yMi5yNDk3LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdW5mczMvdW5mczNfMC45LjIyLnI0OTcuYmIKQEAgLTE3LDcgKzE3LDggQEAKICMgT25seSBzdWJ2ZXJzaW9uIHVybCBsZWZ0IGluIE9FLUNvcmUsIHVzZSBhIG1pcnJvciB0YXJiYWxsIGluc3RlYWQgc2luY2UKICMgdGhpcyByYXJlbHkgY2hhbmdlcy4KICMgc3ZuOi8vc3ZuLmNvZGUuc2YubmV0L3AvdW5mczMvY29kZTttb2R1bGU9dHJ1bms7cmV2PSR7TU9EX1BWfTtwcm90b2NvbD1odHRwCi1TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3Ivc291cmNlcy90cnVua19zdm4uY29kZS5zZi5uZXRfLnAudW5mczMuY29kZV80OTdfLnRhci5neiBcCisjIHJlbmFtZSB0aGUgdGFyYmFsbCBpbiBtaXJyb3IgdG8gYXZvaWQgY2xhc2ggd2l0aCB1c2VyIGxvY2FsIHN2biB0YXJiYWxsCitTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3Ivc291cmNlcy91bmZzMy0wLjkuMjIucjQ5Ny50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vdW5mczNfcGFyYWxsZWxfYnVpbGQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vYWx0ZXJuYXRlX3JwY19wb3J0cy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9maXhfcGlkX3JhY2VfcGFyZW50X3dyaXRlc19jaGlsZF9waWQucGF0Y2ggXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxhL3ZhbGEuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxhL3ZhbGEuaW5jCmluZGV4IGIzMzhlYTAuLjEyNjFjMDIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEvdmFsYS5pbmMKQEAgLTIsNyArMiwxMiBAQAogREVTQ1JJUFRJT04gPSAiVmFsYSBpcyBhIEMjLWxpa2UgbGFuZ3VhZ2UgZGVkaWNhdGVkIHRvIGVhc2UgR09iamVjdCBwcm9ncmFtbWluZy4gXAogVmFsYSBjb21waWxlcyB0byBwbGFpbiBDIGFuZCBoYXMgbm8gcnVudGltZSBlbnZpcm9ubWVudCBub3IgcGVuYWxpdGllcyB3aGF0c29ldmVyLiIKIFNFQ1RJT04gPSAiZGV2ZWwiCi1ERVBFTkRTID0gImJpc29uLW5hdGl2ZSBmbGV4LW5hdGl2ZSBsaWJ4c2x0LW5hdGl2ZSBnbGliLTIuMCIKK0RFUEVORFMgPSAiYmlzb24tbmF0aXZlIGZsZXgtbmF0aXZlIGdsaWItMi4wIgorCisjIEFwcGVuZGluZyBsaWJ4c2x0LW5hdGl2ZSB0byBkZXBlbmRlbmNpZXMgaGFzIGFuIGVmZmVjdAorIyBvZiByZWJ1aWxkaW5nIHRoZSBtYW51YWwsIHdoaWNoIGlzIHZlcnkgc2xvdy4gTGV0J3MgZG8gdGhpcworIyBvbmx5IHdoZW4gYXBpLWRvY3VtZW50YXRpb24gZGlzdHJvIGZlYXR1cmUgaXMgZW5hYmxlZC4KK0RFUEVORFNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdhcGktZG9jdW1lbnRhdGlvbicsICdsaWJ4c2x0LW5hdGl2ZScsICcnLCBkKX0iCiAKICMgdmFsYS1uYXRpdmUgY29udGFpbnMgYSBuYXRpdmUgdmVyc2lvbiBvZiB2YXBpZ2VuLCB3aGljaCB3ZSB1c2UgaW5zdGVhZCBvZiB0aGUgdGFyZ2V0IG9uZQogREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiB2YWxhLW5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhXzAuMzQuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhXzAuMzQuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDFiNDlhZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEvdmFsYV8wLjM0LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLXJlcXVpcmUgJHtCUE59LmluYwotCi1TUkNfVVJJICs9ICIgZmlsZTovLzAwMDEtZ2l0LXZlcnNpb24tZ2VuLWRvbi10LWFwcGVuZC1kaXJ0eS1pZi13ZS1yZS1ub3QtaW4tZy5wYXRjaCBcCi0gICAgICAgICAgICAgZmlsZTovLzAwMDEtdmFwaWdlbi5tNC11c2UtUEtHX0NPTkZJR19TWVNST09UX0RJUi5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhODU2OTg5ZDc0OWZjNWU0NzJhMzU5MmI5NmY5Y2E0OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2YjE3YmQzMzk0MTQ1NjNlYmM1MWY2NGIwYjgzNzkxOWVhNzU1MmQ4YThmZmE3MWNkYzgzN2QyNWM5Njk2YjgzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxhL3ZhbGFfMC4zNi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxhL3ZhbGFfMC4zNi40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxMDAwZDkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEvdmFsYV8wLjM2LjQuYmIKQEAgLTAsMCArMSw4IEBACityZXF1aXJlICR7QlBOfS5pbmMKKworU1JDX1VSSSArPSAiIGZpbGU6Ly8wMDAxLWdpdC12ZXJzaW9uLWdlbi1kb24tdC1hcHBlbmQtZGlydHktaWYtd2UtcmUtbm90LWluLWcucGF0Y2ggXAorICAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXZhcGlnZW4ubTQtdXNlLVBLR19DT05GSUdfU1lTUk9PVF9ESVIucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiM2MxOTAxNDA5M2YxYTNkOTk1MzU3MjUzYjQ2MzA4MmMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTlmMjNjZTcxMWMxYTcyY2U2NjRkMTA5NDZmYmM1OTUzZjAxYjBiN2YyYTM1NjJlN2EwMWUzNjJkODZkZTA1OSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMS1maXgtYnVpbGQtZm9yLW11c2wtdGFyZ2V0cy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMS1maXgtYnVpbGQtZm9yLW11c2wtdGFyZ2V0cy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGM2ZmVmZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDEtZml4LWJ1aWxkLWZvci1tdXNsLXRhcmdldHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi1Gcm9tIDFiMWEwMjRlZmQxOGQ0NDI5NGUxODRlNzkyYzFlMDM5Y2FiMDJiZmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU3VuLCAxNCBGZWIgMjAxNiAwOToxNDoxMiArMDAwMAotU3ViamVjdDogW1BBVENIXSBmaXggYnVpbGQgZm9yIG11c2wgdGFyZ2V0cwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICB8IDIgLS0KLSBjb3JlZ3JpbmQvdmdfcHJlbG9hZGVkLmMgfCAyICstCi0gaW5jbHVkZS9wdWJfdG9vbF9yZWRpci5oIHwgNyArKysrKy0tCi0gMyBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDkzNjZkYzcuLjY3OWY1MTQgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTEwNjYsOCArMTA2Niw2IEBAIGNhc2UgIiR7R0xJQkNfVkVSU0lPTn0iIGluCi0gCTs7Ci0gICAgICAyLjB8Mi4xfCopCi0gCUFDX01TR19SRVNVTFQoW3Vuc3VwcG9ydGVkIHZlcnNpb24gJHtHTElCQ19WRVJTSU9OfV0pCi0tCUFDX01TR19FUlJPUihbVmFsZ3JpbmQgcmVxdWlyZXMgZ2xpYmMgdmVyc2lvbiAyLjIgb3IgbGF0ZXIsXSkKLS0JQUNfTVNHX0VSUk9SKFtEYXJ3aW4gbGliYywgQmlvbmljIGxpYmMgb3IgU29sYXJpcyBsaWJjXSkKLSAJOzsKLSBlc2FjCi0gCi1kaWZmIC0tZ2l0IGEvY29yZWdyaW5kL3ZnX3ByZWxvYWRlZC5jIGIvY29yZWdyaW5kL3ZnX3ByZWxvYWRlZC5jCi1pbmRleCAyZWE3YTdhLi5lNDljODMyIDEwMDY0NAotLS0tIGEvY29yZWdyaW5kL3ZnX3ByZWxvYWRlZC5jCi0rKysgYi9jb3JlZ3JpbmQvdmdfcHJlbG9hZGVkLmMKLUBAIC01Niw3ICs1Niw3IEBACi0gdm9pZCBWR19OT1RJRllfT05fTE9BRChmcmVlcmVzKSggdm9pZCApOwotIHZvaWQgVkdfTk9USUZZX09OX0xPQUQoZnJlZXJlcykoIHZvaWQgKQotIHsKLS0jICBpZiAhZGVmaW5lZChfX1VDTElCQ19fKSBcCi0rIyAgaWYgIWRlZmluZWQoX19VQ0xJQkNfXykgJiYgZGVmaW5lZChfX0dMSUJDX18pIFwKLSAgICAgICAmJiAhZGVmaW5lZChWR1BWX2FybV9saW51eF9hbmRyb2lkKSBcCi0gICAgICAgJiYgIWRlZmluZWQoVkdQVl94ODZfbGludXhfYW5kcm9pZCkgXAotICAgICAgICYmICFkZWZpbmVkKFZHUFZfbWlwczMyX2xpbnV4X2FuZHJvaWQpIFwKLWRpZmYgLS1naXQgYS9pbmNsdWRlL3B1Yl90b29sX3JlZGlyLmggYi9pbmNsdWRlL3B1Yl90b29sX3JlZGlyLmgKLWluZGV4IGJhYzAwZDcuLmZiYjJlZjIgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL3B1Yl90b29sX3JlZGlyLmgKLSsrKyBiL2luY2x1ZGUvcHViX3Rvb2xfcmVkaXIuaAotQEAgLTI0Miw4ICsyNDIsNyBAQAotIC8qIC0tLSBTb25hbWUgb2YgdGhlIHN0YW5kYXJkIEMgbGlicmFyeS4gLS0tICovCi0gCi0gI2lmIGRlZmluZWQoVkdPX2xpbnV4KSB8fCBkZWZpbmVkKFZHT19zb2xhcmlzKQotLSMgIGRlZmluZSAgVkdfWl9MSUJDX1NPTkFNRSAgbGliY1pkc29aYSAgICAgICAgICAgICAgLy8gbGliYy5zbyoKLS0KLSsjICBkZWZpbmUgIFZHX1pfTElCQ19TT05BTUUgIGxpYmNaZFphICAgICAgICAgICAgICAgIC8vIGxpYmMuKgotICNlbGlmIGRlZmluZWQoVkdPX2RhcndpbikgJiYgKERBUldJTl9WRVJTIDw9IERBUldJTl8xMF82KQotICMgIGRlZmluZSAgVkdfWl9MSUJDX1NPTkFNRSAgbGliU3lzdGVtWmRaYVpkZHlsaWIgICAgLy8gbGliU3lzdGVtLiouZHlsaWIKLSAKLUBAIC0yNzQsNyArMjczLDExIEBACi0gLyogLS0tIFNvbmFtZSBvZiB0aGUgcHRocmVhZHMgbGlicmFyeS4gLS0tICovCi0gCi0gI2lmIGRlZmluZWQoVkdPX2xpbnV4KQotKyMgaWYgZGVmaW5lZChfX0dMSUJDX18pIHx8IGRlZmluZWQoX19VQ0xJQkNfXykKLSAjICBkZWZpbmUgIFZHX1pfTElCUFRIUkVBRF9TT05BTUUgIGxpYnB0aHJlYWRaZHNvWmQwICAgICAvLyBsaWJwdGhyZWFkLnNvLjAKLSsjIGVsc2UKLSsjICBkZWZpbmUgIFZHX1pfTElCUFRIUkVBRF9TT05BTUUgIGxpYmNaZFphICAgICAgICAgICAgICAvLyBsaWJjLioKLSsjZW5kaWYKLSAjZWxpZiBkZWZpbmVkKFZHT19kYXJ3aW4pCi0gIyAgZGVmaW5lICBWR19aX0xJQlBUSFJFQURfU09OQU1FICBsaWJTeXN0ZW1aZFphWmRkeWxpYiAgLy8gbGliU3lzdGVtLiouZHlsaWIKLSAjZWxpZiBkZWZpbmVkKFZHT19zb2xhcmlzKQotLS0gCi0yLjcuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDEtbWFrZWZpbGVzLURyb3Atc2V0dGluZy1tY3B1LXRvLWNvcnRleC1hOC1vbi1hcm0tYXJjaC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMS1tYWtlZmlsZXMtRHJvcC1zZXR0aW5nLW1jcHUtdG8tY29ydGV4LWE4LW9uLWFybS1hcmNoLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmMWRhN2IKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDEtbWFrZWZpbGVzLURyb3Atc2V0dGluZy1tY3B1LXRvLWNvcnRleC1hOC1vbi1hcm0tYXJjaC5wYXRjaApAQCAtMCwwICsxLDEwOCBAQAorRnJvbSA3MTVjZjEyMjM4OGYzNTI3YWZhNTY0OWNlYmY5ZjE1MjJjMjQwNjkzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMjAgQXByIDIwMTcgMTA6MTE6MTYgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gbWFrZWZpbGVzOiBEcm9wIHNldHRpbmcgLW1jcHUgdG8gY29ydGV4LWE4IG9uIGFybQorIGFyY2hpdGVjdHVyZQorCitXZSBjYW4gbm90IGFzc3VtZSB0aGF0IGFsbCBhcmNoZXMgYXJtdjcrIGFyZSBjb3J0ZXgtYTggb25seQoraXQgZmFpbHMgdG8gYnVpbGQgZm9yIHJwaSB3aGljaCBpcyBhcm12N3ZlIGJhc2VkIChjb3J0ZXgtYTgpIGNwdQoraW1wbGVtZW50YXRpb24uCitGaXhlcworfCBjYzE6IHdhcm5pbmc6IHN3aXRjaCAtbWNwdT1jb3J0ZXgtYTggY29uZmxpY3RzIHdpdGggLW1hcmNoPWFybXY3dmUgc3dpdGNoCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgTWFrZWZpbGUuYWxsLmFtICAgICAgICAgICAgfCAgNiArKystLS0KKyBoZWxncmluZC90ZXN0cy9NYWtlZmlsZS5hbSB8ICA2ICsrKy0tLQorIG5vbmUvdGVzdHMvYXJtL01ha2VmaWxlLmFtIHwgMTggKysrKysrKysrLS0tLS0tLS0tCisgMyBmaWxlcyBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFsbC5hbSBiL01ha2VmaWxlLmFsbC5hbQoraW5kZXggMDIwNTlhMy4uYzdjNDcwMCAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmFsbC5hbQorKysrIGIvTWFrZWZpbGUuYWxsLmFtCitAQCAtMTk3LDExICsxOTcsMTEgQEAgQU1fQ0NBU0ZMQUdTX1BQQzY0TEVfTElOVVggID0gQEZMQUdfTTY0QCAtZworIAorIEFNX0ZMQUdfTTMyNjRfQVJNX0xJTlVYICAgPSBARkxBR19NMzJACisgQU1fQ0ZMQUdTX0FSTV9MSU5VWCAgICAgICA9IEBGTEFHX00zMkAgXAorLQkJCSAJJChBTV9DRkxBR1NfQkFTRSkgLW1hcm0gLW1jcHU9Y29ydGV4LWE4CisrCQkJIAkkKEFNX0NGTEFHU19CQVNFKSAtbWFybQorIEFNX0NGTEFHU19QU09fQVJNX0xJTlVYICAgPSBARkxBR19NMzJAICQoQU1fQ0ZMQUdTX0JBU0UpIFwKKy0JCQkJLW1hcm0gLW1jcHU9Y29ydGV4LWE4ICQoQU1fQ0ZMQUdTX1BTT19CQVNFKQorKwkJCQktbWFybSAkKEFNX0NGTEFHU19QU09fQkFTRSkKKyBBTV9DQ0FTRkxBR1NfQVJNX0xJTlVYICAgID0gQEZMQUdfTTMyQCBcCistCQkJCS1tYXJtIC1tY3B1PWNvcnRleC1hOCAtZworKwkJCQktbWFybSAtZworIAorIEFNX0ZMQUdfTTMyNjRfQVJNNjRfTElOVVggPSBARkxBR19NNjRACisgQU1fQ0ZMQUdTX0FSTTY0X0xJTlVYICAgICA9IEBGTEFHX002NEAgJChBTV9DRkxBR1NfQkFTRSkKK2RpZmYgLS1naXQgYS9oZWxncmluZC90ZXN0cy9NYWtlZmlsZS5hbSBiL2hlbGdyaW5kL3Rlc3RzL01ha2VmaWxlLmFtCitpbmRleCBkZjgyMTY5Li4wN2ViNjZhIDEwMDY0NAorLS0tIGEvaGVsZ3JpbmQvdGVzdHMvTWFrZWZpbGUuYW0KKysrKyBiL2hlbGdyaW5kL3Rlc3RzL01ha2VmaWxlLmFtCitAQCAtMTg5LDkgKzE4OSw5IEBAIGlmICEgVkdDT05GX1BMQVRGT1JNU19JTkNMVURFX1g4Nl9EQVJXSU4KKyBlbmRpZgorIAorIGlmIFZHQ09ORl9QTEFURk9STVNfSU5DTFVERV9BUk1fTElOVVgKKy1hbm5vdGF0ZV9oYmVmb3JlX0NGTEFHUyA9ICQoQU1fQ0ZMQUdTKSAtbWNwdT1jb3J0ZXgtYTgKKy10YzA3X2hibDFfQ0ZMQUdTICAgICAgICA9ICQoQU1fQ0ZMQUdTKSAtbWNwdT1jb3J0ZXgtYTgKKy10YzA4X2hibDJfQ0ZMQUdTICAgICAgICA9ICQoQU1fQ0ZMQUdTKSAtbWNwdT1jb3J0ZXgtYTgKKythbm5vdGF0ZV9oYmVmb3JlX0NGTEFHUyA9ICQoQU1fQ0ZMQUdTKQorK3RjMDdfaGJsMV9DRkxBR1MgICAgICAgID0gJChBTV9DRkxBR1MpCisrdGMwOF9oYmwyX0NGTEFHUyAgICAgICAgPSAkKEFNX0NGTEFHUykKKyBlbHNlCisgYW5ub3RhdGVfaGJlZm9yZV9DRkxBR1MgPSAkKEFNX0NGTEFHUykKKyB0YzA3X2hibDFfQ0ZMQUdTICAgICAgICA9ICQoQU1fQ0ZMQUdTKQorZGlmZiAtLWdpdCBhL25vbmUvdGVzdHMvYXJtL01ha2VmaWxlLmFtIGIvbm9uZS90ZXN0cy9hcm0vTWFrZWZpbGUuYW0KK2luZGV4IDAyNGViNmQuLmNjZWNiOTAgMTAwNjQ0CistLS0gYS9ub25lL3Rlc3RzL2FybS9NYWtlZmlsZS5hbQorKysrIGIvbm9uZS90ZXN0cy9hcm0vTWFrZWZpbGUuYW0KK0BAIC01MiwxMCArNTIsMTAgQEAgYWxsZXhlY19DRkxBR1MJCT0gJChBTV9DRkxBR1MpIEBGTEFHX1dfTk9fTk9OTlVMTEAKKyAjIG5lZWQgc3BlY2lhbCBoZWxwaW5nIHcuci50IC1tZnB1IGFuZCAtbWZsb2F0LWFiaSwgdGhvdWdoLgorICMgQWxzbyBmb3JjZSAtTzAgc2luY2UgLU8gdGFrZXMgaHVuZHJlZHMgb2YgTUIgb2YgbWVtb3J5IAorICMgZm9yIHY2aW50VGh1bWIuYy4KKy12NmludEFSTV9DRkxBR1MgICA9ICQoQU1fQ0ZMQUdTKSAtZyAtTzAgLW1jcHU9Y29ydGV4LWE4IC1tYXJtCistdjZpbnRUaHVtYl9DRkxBR1MgPSAkKEFNX0NGTEFHUykgLWcgLU8wIC1tY3B1PWNvcnRleC1hOCAtbXRodW1iCisrdjZpbnRBUk1fQ0ZMQUdTICAgPSAkKEFNX0NGTEFHUykgLWcgLU8wIC1tYXJtCisrdjZpbnRUaHVtYl9DRkxBR1MgPSAkKEFNX0NGTEFHUykgLWcgLU8wIC1tdGh1bWIKKyAKKy12Nm1lZGlhX0NGTEFHUyAgICA9ICQoQU1fQ0ZMQUdTKSAtZyAtTzAgLW1jcHU9Y29ydGV4LWE4IC1tdGh1bWIKKyt2Nm1lZGlhX0NGTEFHUyAgICA9ICQoQU1fQ0ZMQUdTKSAtZyAtTzAgLW10aHVtYgorIAorIHY4Y3J5cHRvX2FfQ0ZMQUdTID0gJChBTV9DRkxBR1MpIC1nIC1PMCAtbWZwdT1jcnlwdG8tbmVvbi1mcC1hcm12OCAtbWFybQorIHY4Y3J5cHRvX3RfQ0ZMQUdTID0gJChBTV9DRkxBR1MpIC1nIC1PMCAtbWZwdT1jcnlwdG8tbmVvbi1mcC1hcm12OCAtbXRodW1iCitAQCAtNjUsMjMgKzY1LDIzIEBAIHY4bWVtb3J5X2FfQ0ZMQUdTID0gJChBTV9DRkxBR1MpIC1nIC1PMCBcCisgdjhtZW1vcnlfdF9DRkxBR1MgPSAkKEFNX0NGTEFHUykgLWcgLU8wIFwKKyAJCQktbWFyY2g9YXJtdjgtYSAtbWZwdT1jcnlwdG8tbmVvbi1mcC1hcm12OCAtbXRodW1iCisgCistdmZwX0NGTEFHUyAgICAgICAgPSAkKEFNX0NGTEFHUykgLWcgLU8wIC1tY3B1PWNvcnRleC1hOCBcCisrdmZwX0NGTEFHUyAgICAgICAgPSAkKEFNX0NGTEFHUykgLWcgLU8wIFwKKyAJCQktbWZwdT1uZW9uIFwKKyAJCQktbXRodW1iCisgCisgCistbmVvbjEyOF9DRkxBR1MgICAgPSAkKEFNX0NGTEFHUykgLWcgLU8wIC1tY3B1PWNvcnRleC1hOCBcCisrbmVvbjEyOF9DRkxBR1MgICAgPSAkKEFNX0NGTEFHUykgLWcgLU8wIFwKKyAJCQktbWZwdT1uZW9uIFwKKyAJCQktbXRodW1iCisgCistbmVvbjY0X0NGTEFHUyAgICAgPSAkKEFNX0NGTEFHUykgLWcgLU8wIC1tY3B1PWNvcnRleC1hOCBcCisrbmVvbjY0X0NGTEFHUyAgICAgPSAkKEFNX0NGTEFHUykgLWcgLU8wIFwKKyAJCQktbWZwdT1uZW9uIFwKKyAJCQktbXRodW1iCisgCisgaW50ZGl2X0NGTEFHUwkgID0gJChBTV9DRkxBR1MpIC1nIC1tYXJjaD1hcm12N3ZlIC1tY3B1PWNvcnRleC1hMTUgLW10aHVtYgorLWxkcnRfQ0ZMQUdTCSAgPSAkKEFNX0NGTEFHUykgLWcgLW1jcHU9Y29ydGV4LWE4IC1tdGh1bWIKKy1sZHJ0X2FybV9DRkxBR1MJICA9ICQoQU1fQ0ZMQUdTKSAtZyAtbWNwdT1jb3J0ZXgtYTggLW1hcm0KKytsZHJ0X0NGTEFHUwkgID0gJChBTV9DRkxBR1MpIC1nIC1tdGh1bWIKKytsZHJ0X2FybV9DRkxBR1MJICA9ICQoQU1fQ0ZMQUdTKSAtZyAtbWFybQorIAorLXZjdnRfZml4ZWRfZmxvYXRfVkZQX0NGTEFHUyA9ICQoQU1fQ0ZMQUdTKSAtZyAtbWNwdT1jb3J0ZXgtYTggLW1mcHU9dmZwdjMKKyt2Y3Z0X2ZpeGVkX2Zsb2F0X1ZGUF9DRkxBR1MgPSAkKEFNX0NGTEFHUykgLWcgLW1mcHU9dmZwdjMKKyAKKyB2ZnB2NF9mbWFfQ0ZMQUdTICA9ICQoQU1fQ0ZMQUdTKSAtZyAtTzAgLW1hcmNoPWFybXY3dmUgLW1jcHU9Y29ydGV4LWExNSAtbWZwdT12ZnB2NCAtbWFybQorLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAxLW1lbWNoZWNrLWFybTY0LURlZmluZS1fX1RIUk9XLWlmLW5vdC1hbHJlYWR5LWRlZmluZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDEtbWVtY2hlY2stYXJtNjQtRGVmaW5lLV9fVEhST1ctaWYtbm90LWFscmVhZHktZGVmaW5lZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNDhkN2RiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAxLW1lbWNoZWNrLWFybTY0LURlZmluZS1fX1RIUk9XLWlmLW5vdC1hbHJlYWR5LWRlZmluZWQucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSAzNDA5ZGMzNWMxNWJiMTRjOGE1MjUyMzk4MDYzMjI2NDhlMDc5YWIxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgNSBKdWwgMjAxNyAxNzoxMjo0MyAtMDcwMAorU3ViamVjdDogW1BBVENIIDEvM10gbWVtY2hlY2svYXJtNjQ6IERlZmluZSBfX1RIUk9XIGlmIG5vdCBhbHJlYWR5IGRlZmluZWQKKworSGVscHMgY29tcGlsaW5nIHdpdGggbXVzbCB3aGVyZSBfX1RIUk9XIGlzIG5vdCBhdmFpbGFibGUKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKKworIG1lbWNoZWNrL3Rlc3RzL2FybTY0LWxpbnV4L3NjYWxhci5oIHwgNCArKysrCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbWVtY2hlY2svdGVzdHMvYXJtNjQtbGludXgvc2NhbGFyLmggYi9tZW1jaGVjay90ZXN0cy9hcm02NC1saW51eC9zY2FsYXIuaAoraW5kZXggOTAwODgxNi4uOGVmMDUwZiAxMDA2NDQKKy0tLSBhL21lbWNoZWNrL3Rlc3RzL2FybTY0LWxpbnV4L3NjYWxhci5oCisrKysgYi9tZW1jaGVjay90ZXN0cy9hcm02NC1saW51eC9zY2FsYXIuaAorQEAgLTEyLDYgKzEyLDEwIEBACisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICNpbmNsdWRlIDxzeXMvbW1hbi5oPgorIAorKyNpZm5kZWYgX19USFJPVworKyNkZWZpbmUgX19USFJPVworKyNlbmRpZgorKworIC8vIFNpbmNlIHdlIHVzZSB2a2lfdW5pc3RkLmgsIHdlIGNhbid0IGluY2x1ZGUgPHVuaXN0ZC5oPi4gIFNvIHdlIGhhdmUgdG8KKyAvLyBkZWNsYXJlIHRoaXMgb3Vyc2VsdmVzLgorIGV4dGVybiBsb25nIGludCBzeXNjYWxsIChsb25nIGludCBfX3N5c25vLCAuLi4pIF9fVEhST1c7CistLSAKKzIuMTMuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDEtbWVtY2hlY2stdGVzdHMtVXNlLXVjb250ZXh0X3QtaW5zdGVhZC1vZi1zdHJ1Y3QtdWNvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMS1tZW1jaGVjay10ZXN0cy1Vc2UtdWNvbnRleHRfdC1pbnN0ZWFkLW9mLXN0cnVjdC11Y29uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmMTZhMWEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDEtbWVtY2hlY2stdGVzdHMtVXNlLXVjb250ZXh0X3QtaW5zdGVhZC1vZi1zdHJ1Y3QtdWNvbi5wYXRjaApAQCAtMCwwICsxLDMwIEBACitGcm9tIDYyOWFjNDkyYjFkOWJjNzA5ZDE3MzM3ZWI5YjFjMjg2MDNlY2EyNTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAyOCBKdW4gMjAxNyAxMTowMToyNSAtMDcwMAorU3ViamVjdDogW1BBVENIXSBtZW1jaGVjay90ZXN0czogVXNlIHVjb250ZXh0X3QgaW5zdGVhZCBvZiBzdHJ1Y3QgdWNvbnRleHQKKworZ2xpYmMgMi4yNiBkb2VzIG5vdCBleHBvc2Ugc3RydWN0IHVjb250ZXh0IGFueW1vcmUKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vYnVncy5rZGUub3JnL3Nob3dfYnVnLmNnaT9pZD0zODE3NjldCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBtZW1jaGVjay90ZXN0cy9saW51eC9zdGFja19jaGFuZ2VzLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9tZW1jaGVjay90ZXN0cy9saW51eC9zdGFja19jaGFuZ2VzLmMgYi9tZW1jaGVjay90ZXN0cy9saW51eC9zdGFja19jaGFuZ2VzLmMKK2luZGV4IGZmYjQ5YzYuLmFjYzQxMDkgMTAwNjQ0CistLS0gYS9tZW1jaGVjay90ZXN0cy9saW51eC9zdGFja19jaGFuZ2VzLmMKKysrKyBiL21lbWNoZWNrL3Rlc3RzL2xpbnV4L3N0YWNrX2NoYW5nZXMuYworQEAgLTExLDcgKzExLDcgQEAKKyAvLyBjaGVja3MgdGhhdCBWYWxncmluZCBub3RpY2VzIHRoZWlyIHN0YWNrIGNoYW5nZXMgcHJvcGVybHkuCisgCisgI2lmZGVmIF9fR0xJQkNfXworLXR5cGVkZWYgIHN0cnVjdCB1Y29udGV4dCAgbXljb250ZXh0OworK3R5cGVkZWYgdWNvbnRleHRfdCAgbXljb250ZXh0OworIAorIG15Y29udGV4dCBjdHgxLCBjdHgyLCBvbGRjOworIGludCBjb3VudDsKKy0tIAorMi4xMy4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMS1zaWdxdWV1ZS1SZW5hbWUtX3NpZmllbGRzLXRvLV9fc2lfZmllbGRzLW9uLW11c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDEtc2lncXVldWUtUmVuYW1lLV9zaWZpZWxkcy10by1fX3NpX2ZpZWxkcy1vbi1tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3MzY2MTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDEtc2lncXVldWUtUmVuYW1lLV9zaWZpZWxkcy10by1fX3NpX2ZpZWxkcy1vbi1tdXNsLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gNjRhZDI3NDRhY2ZiNGZhNDBiMWMxMTQ2MzNhMDUzZjg3MTI1YTIwMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDEwIEp1biAyMDE3IDAwOjQ2OjM5IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMS82XSBzaWdxdWV1ZTogUmVuYW1lIF9zaWZpZWxkcyB0byBfX3NpX2ZpZWxkcyBvbiBtdXNsCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbWVtY2hlY2svdGVzdHMvbGludXgvc2lncXVldWUuYyB8IDUgKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9tZW1jaGVjay90ZXN0cy9saW51eC9zaWdxdWV1ZS5jIGIvbWVtY2hlY2svdGVzdHMvbGludXgvc2lncXVldWUuYworaW5kZXggZDE4YmQ3Mi4uYWNiN2NiYSAxMDA2NDQKKy0tLSBhL21lbWNoZWNrL3Rlc3RzL2xpbnV4L3NpZ3F1ZXVlLmMKKysrKyBiL21lbWNoZWNrL3Rlc3RzL2xpbnV4L3NpZ3F1ZXVlLmMKK0BAIC04LDYgKzgsMTEgQEAKKyAjaW5jbHVkZSA8c3lzY2FsbC5oPgorICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAKKysvKiBtdXNsIGxpYmMgZGVmaW5lcyBzaWdpbmZvX3QgX19zaV9maWVsZHMgaW5zdGVhZCBvZiBfc2lmaWVsZHMgKi8KKysjaWYgZGVmaW5lZChfX2xpbnV4X18pICYmICFkZWZpbmVkKF9fR0xJQkNfXykKKysjZGVmaW5lIF9zaWZpZWxkcyBfX3NpX2ZpZWxkcworKyNlbmRpZgorKworIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKKyB7CisgICBzaWdpbmZvX3QgKnNpOworLS0gCisyLjEzLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAxLXN0cl90ZXN0ZXIuYy1MaW1pdC1yYXdtZW1jaHItdGVzdC10by1nbGliYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMS1zdHJfdGVzdGVyLmMtTGltaXQtcmF3bWVtY2hyLXRlc3QtdG8tZ2xpYmMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTg1YjhmOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMS1zdHJfdGVzdGVyLmMtTGltaXQtcmF3bWVtY2hyLXRlc3QtdG8tZ2xpYmMucGF0Y2gKQEAgLTAsMCArMSwzOSBAQAorRnJvbSBkZTY5MmUzNTk4MDFhMWYwNDg4Yzc2MjY3ZTRmOTA0ZGQyZWZlNzU0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMTAgSnVuIDIwMTcgMDA6Mzk6MDcgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gc3RyX3Rlc3Rlci5jOiBMaW1pdCByYXdtZW1jaHIoKSB0ZXN0IHRvIGdsaWJjCisKK3Jhd21lbWNocigpIGlzIGEgR05VIGV4dGVudGlvbiB0aGVyZWZvcmUgbWFyayBpdCBzbworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIG1lbWNoZWNrL3Rlc3RzL3N0cl90ZXN0ZXIuYyB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9tZW1jaGVjay90ZXN0cy9zdHJfdGVzdGVyLmMgYi9tZW1jaGVjay90ZXN0cy9zdHJfdGVzdGVyLmMKK2luZGV4IDlmNzc5MGEuLjQ3ZTRiNGEgMTAwNjQ0CistLS0gYS9tZW1jaGVjay90ZXN0cy9zdHJfdGVzdGVyLmMKKysrKyBiL21lbWNoZWNrL3Rlc3RzL3N0cl90ZXN0ZXIuYworQEAgLTUwNCw3ICs1MDQsNyBAQCB0ZXN0X3N0cmNocm51bCAodm9pZCkKKyAjZW5kaWYKKyAKKyAvLyBEREQ6IGJldHRlciBkb25lIGJ5IHRlc3RpbmcgZm9yIHRoZSBmdW5jdGlvbi4KKy0jaWYgIWRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX3N1bikKKysjaWYgIWRlZmluZWQoX19BUFBMRV9fKSAmJiAhZGVmaW5lZChfX3N1bikgJiYgZGVmaW5lZChfX0dMSUJDX18pCisgc3RhdGljIHZvaWQKKyB0ZXN0X3Jhd21lbWNociAodm9pZCkKKyB7CitAQCAtMTQ0Miw3ICsxNDQyLDcgQEAgbWFpbiAodm9pZCkKKyAgIHRlc3Rfc3RyY2hybnVsICgpOworICMgZW5kaWYKKyAKKy0jIGlmICFkZWZpbmVkKF9fQVBQTEVfXykgJiYgIWRlZmluZWQoX19zdW4pCisrIyBpZiAhZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fc3VuKSAmJiBkZWZpbmVkKF9fR0xJQkNfXykKKyAgIC8qIHJhd21lbWNoci4gICovCisgICB0ZXN0X3Jhd21lbWNociAoKTsKKyAjIGVuZGlmCistLSAKKzIuMTMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDItY29udGV4dC1BUElzLWFyZS1ub3QtYXZhaWxhYmxlLW9uLW11c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDItY29udGV4dC1BUElzLWFyZS1ub3QtYXZhaWxhYmxlLW9uLW11c2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Y5ZjMzYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMi1jb250ZXh0LUFQSXMtYXJlLW5vdC1hdmFpbGFibGUtb24tbXVzbC5wYXRjaApAQCAtMCwwICsxLDQ5IEBACitGcm9tIDg2MmI4MDcwNzZkNTdmMmY1OGVkOWQ1NzJkZGFjOGJiNDAyNzc0YTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCAxMCBKdW4gMjAxNyAwMTowMToxMCAtMDcwMAorU3ViamVjdDogW1BBVENIIDIvNl0gY29udGV4dCBBUElzIGFyZSBub3QgYXZhaWxhYmxlIG9uIG11c2wKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBtZW1jaGVjay90ZXN0cy9saW51eC9zdGFja19jaGFuZ2VzLmMgfCA3ICsrKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9tZW1jaGVjay90ZXN0cy9saW51eC9zdGFja19jaGFuZ2VzLmMgYi9tZW1jaGVjay90ZXN0cy9saW51eC9zdGFja19jaGFuZ2VzLmMKK2luZGV4IGE5NzhmYzIuLmZmYjQ5YzYgMTAwNjQ0CistLS0gYS9tZW1jaGVjay90ZXN0cy9saW51eC9zdGFja19jaGFuZ2VzLmMKKysrKyBiL21lbWNoZWNrL3Rlc3RzL2xpbnV4L3N0YWNrX2NoYW5nZXMuYworQEAgLTEwLDYgKzEwLDcgQEAKKyAvLyBUaGlzIHRlc3QgaXMgY2hlY2tpbmcgdGhlIGxpYmMgY29udGV4dCBjYWxscyAoc2V0Y29udGV4dCwgZXRjLikgYW5kCisgLy8gY2hlY2tzIHRoYXQgVmFsZ3JpbmQgbm90aWNlcyB0aGVpciBzdGFjayBjaGFuZ2VzIHByb3Blcmx5LgorIAorKyNpZmRlZiBfX0dMSUJDX18KKyB0eXBlZGVmICBzdHJ1Y3QgdWNvbnRleHQgIG15Y29udGV4dDsKKyAKKyBteWNvbnRleHQgY3R4MSwgY3R4Miwgb2xkYzsKK0BAIC01MSw5ICs1MiwxMSBAQCBpbnQgaW5pdF9jb250ZXh0KG15Y29udGV4dCAqdWMpCisgCisgICAgIHJldHVybiByZXQ7CisgfQorKyNlbmRpZgorIAorIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKKyB7CisrI2lmZGVmIF9fR0xJQkNfXworICAgICBpbnQgYzEgPSBpbml0X2NvbnRleHQoJmN0eDEpOworICAgICBpbnQgYzIgPSBpbml0X2NvbnRleHQoJmN0eDIpOworIAorQEAgLTY2LDYgKzY5LDggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorICAgICAvL2ZyZWUoY3R4MS51Y19zdGFjay5zc19zcCk7CisgICAgIFZBTEdSSU5EX1NUQUNLX0RFUkVHSVNURVIoYzIpOworICAgICAvL2ZyZWUoY3R4Mi51Y19zdGFjay5zc19zcCk7CistCisrI2Vsc2UKKysgICAgcHJpbnRmKCJsaWJjIGNvbnRleHQgY2FsbCBBUElzIGUuZy4gZ2V0Y29udGV4dCgpIGFyZSBkZXByZWNhdGVkIGJ5IHBvc2l4XG4iKTsKKysjZW5kaWYKKyAgICAgcmV0dXJuIDA7CisgfQorLS0gCisyLjEzLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAyLW1lbWNoZWNrLXg4Ni1EZWZpbmUtX19USFJPVy1pZi1ub3QtZGVmaW5lZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMi1tZW1jaGVjay14ODYtRGVmaW5lLV9fVEhST1ctaWYtbm90LWRlZmluZWQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQzMzQ3MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMi1tZW1jaGVjay14ODYtRGVmaW5lLV9fVEhST1ctaWYtbm90LWRlZmluZWQucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSA2N2QxOTlkYmRjYmIzZmVmZjVmODkyOGY4NzcyNWZjNjRjMDMwN2Q3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgNSBKdWwgMjAxNyAxNzozNjo0MiAtMDcwMAorU3ViamVjdDogW1BBVENIIDIvM10gbWVtY2hlY2sveDg2OiBEZWZpbmUgX19USFJPVyBpZiBub3QgZGVmaW5lZAorCittdXNsIGRvZXMgbm90IGhhdmUgX19USFJPVywgdGhlcmVmb3JlIG1ha2UgaXQgbnVsbAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorCisgbWVtY2hlY2svdGVzdHMveDg2LWxpbnV4L3NjYWxhci5oIHwgNCArKysrCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbWVtY2hlY2svdGVzdHMveDg2LWxpbnV4L3NjYWxhci5oIGIvbWVtY2hlY2svdGVzdHMveDg2LWxpbnV4L3NjYWxhci5oCitpbmRleCBlZjI4YjAzLi41MmY3NDJlIDEwMDY0NAorLS0tIGEvbWVtY2hlY2svdGVzdHMveDg2LWxpbnV4L3NjYWxhci5oCisrKysgYi9tZW1jaGVjay90ZXN0cy94ODYtbGludXgvc2NhbGFyLmgKK0BAIC0xMSw2ICsxMSwxMCBAQAorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAjaW5jbHVkZSA8c3lzL21tYW4uaD4KKyAKKysjaWZuZGVmIF9fVEhST1cKKysjZGVmaW5lIF9fVEhST1cKKysjZW5kaWYKKysKKyAvLyBTaW5jZSB3ZSB1c2UgdmtpX3VuaXN0ZC5oLCB3ZSBjYW4ndCBpbmNsdWRlIDx1bmlzdGQuaD4uICBTbyB3ZSBoYXZlIHRvCisgLy8gZGVjbGFyZSB0aGlzIG91cnNlbHZlcy4KKyBleHRlcm4gbG9uZyBpbnQgc3lzY2FsbCAobG9uZyBpbnQgX19zeXNubywgLi4uKSBfX1RIUk9XOworLS0gCisyLjEzLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAzLWNvcnJlY3QtaW5jbHVkZS1kaXJlY3RpdmUtcGF0aC1mb3ItY29uZmlnLmgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDMtY29ycmVjdC1pbmNsdWRlLWRpcmVjdGl2ZS1wYXRoLWZvci1jb25maWcuaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjk2NWM0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAzLWNvcnJlY3QtaW5jbHVkZS1kaXJlY3RpdmUtcGF0aC1mb3ItY29uZmlnLmgucGF0Y2gKQEAgLTAsMCArMSw0NSBAQAorRnJvbSBlY2JkZWE3YmQ4YjA4MjA1ZjFiYzNmNmI3MmQ0YjRhODBmMzEzZmNiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMTAgSnVuIDIwMTcgMDE6MDM6MTcgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAzLzZdIGNvcnJlY3QgaW5jbHVkZSBkaXJlY3RpdmUgcGF0aCBmb3IgY29uZmlnLmgKKword2hlbiBidWlsZGluZyBvdXQgb2Ygc291cmNlIHRyZWUsIGl0IGNhbiBub3QgZmluZAordGhlIGdlbmVyYXRlZCBjb25maWcuaCBvdGhlcndpc2UKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBtZW1jaGVjay90ZXN0cy9saW51eC9zeXNjYWxscy0yMDA3LmMgIHwgMiArLQorIG1lbWNoZWNrL3Rlc3RzL2xpbnV4L3N5c2xvZy1zeXNjYWxsLmMgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9tZW1jaGVjay90ZXN0cy9saW51eC9zeXNjYWxscy0yMDA3LmMgYi9tZW1jaGVjay90ZXN0cy9saW51eC9zeXNjYWxscy0yMDA3LmMKK2luZGV4IGI2MWM2ZDUuLmNjM2ZkNjIgMTAwNjQ0CistLS0gYS9tZW1jaGVjay90ZXN0cy9saW51eC9zeXNjYWxscy0yMDA3LmMKKysrKyBiL21lbWNoZWNrL3Rlc3RzL2xpbnV4L3N5c2NhbGxzLTIwMDcuYworQEAgLTEwLDcgKzEwLDcgQEAKKyAKKyAjZGVmaW5lIF9HTlVfU09VUkNFCisgCistI2luY2x1ZGUgIi4uLy4uL2NvbmZpZy5oIgorKyNpbmNsdWRlICJjb25maWcuaCIKKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8c2lnbmFsLmg+CisgI2luY2x1ZGUgPHN0ZGludC5oPgorZGlmZiAtLWdpdCBhL21lbWNoZWNrL3Rlc3RzL2xpbnV4L3N5c2xvZy1zeXNjYWxsLmMgYi9tZW1jaGVjay90ZXN0cy9saW51eC9zeXNsb2ctc3lzY2FsbC5jCitpbmRleCAxMTQzNzIyLi4yMWU3NThiIDEwMDY0NAorLS0tIGEvbWVtY2hlY2svdGVzdHMvbGludXgvc3lzbG9nLXN5c2NhbGwuYworKysrIGIvbWVtY2hlY2svdGVzdHMvbGludXgvc3lzbG9nLXN5c2NhbGwuYworQEAgLTYsNyArNiw3IEBACisgICogICAga2xvZ2N0bCgpLgorICAqLworIAorLSNpbmNsdWRlICIuLi8uLi9jb25maWcuaCIKKysjaW5jbHVkZSAiY29uZmlnLmgiCisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgI2lmIGRlZmluZWQoSEFWRV9TWVNfS0xPR19IKQorICNpbmNsdWRlIDxzeXMva2xvZy5oPgorLS0gCisyLjEzLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAzLXRlc3RzLXNlZ19vdmVycmlkZS1SZXBsYWNlLV9fbW9kaWZ5X2xkdC13aXRoLXN5c2NhbGwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDMtdGVzdHMtc2VnX292ZXJyaWRlLVJlcGxhY2UtX19tb2RpZnlfbGR0LXdpdGgtc3lzY2FsbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYTEzNDRjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAzLXRlc3RzLXNlZ19vdmVycmlkZS1SZXBsYWNlLV9fbW9kaWZ5X2xkdC13aXRoLXN5c2NhbGwucGF0Y2gKQEAgLTAsMCArMSw2OCBAQAorRnJvbSBkMTAzNDc1ODc1ODU4YWI4YTJlNmI1M2NlMTc4YmIyZjYzODgzZDRjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgNSBKdWwgMjAxNyAxNzozNzo1NiAtMDcwMAorU3ViamVjdDogW1BBVENIIDMvM10gdGVzdHMvc2VnX292ZXJyaWRlOiBSZXBsYWNlIF9fbW9kaWZ5X2xkdCgpIHdpdGggc3lzY2FsbCgpCisKK19fbW9kaWZ5X2xkdCgpIGlzIHNwZWNpZmljIHRvIGdsaWJjLCByZXBsYWNpbmcgaXQgd2l0aCBzeXNjYWxsKCkKK21ha2VzIGl0IG1vcmUgcG9ydGFibGUuCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCisKKyBub25lL3Rlc3RzL3g4Ni1saW51eC9zZWdfb3ZlcnJpZGUuYyB8IDE1ICsrKysrKy0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9ub25lL3Rlc3RzL3g4Ni1saW51eC9zZWdfb3ZlcnJpZGUuYyBiL25vbmUvdGVzdHMveDg2LWxpbnV4L3NlZ19vdmVycmlkZS5jCitpbmRleCBiNzYxOWM5Li5jODk4NzRiIDEwMDY0NAorLS0tIGEvbm9uZS90ZXN0cy94ODYtbGludXgvc2VnX292ZXJyaWRlLmMKKysrKyBiL25vbmUvdGVzdHMveDg2LWxpbnV4L3NlZ19vdmVycmlkZS5jCitAQCAtMiw2ICsyLDggQEAKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisrI2luY2x1ZGUgPHVuaXN0ZC5oPgorKyNpbmNsdWRlIDxzeXNjYWxsLmg+CisgCisgLyogU3R1ZmYgZnJvbSBXaW5lLiAqLworIAorQEAgLTUyLDE0ICs1NCwxMSBAQCBpbmxpbmUgc3RhdGljIHVuc2lnbmVkIGludCB3aW5lX2xkdF9nZXRfbGltaXQoIGNvbnN0IExEVF9FTlRSWSAqZW50ICkKKyAvKiBvdXIgY29weSBvZiB0aGUgbGR0ICovCisgTERUX0VOVFJZIGxkdF9jb3B5WzgxOTJdOworIAorLS8qIFN5c3RlbSBjYWxsIHRvIHNldCBMRFQgZW50cnkuICAqLworLS8vZXh0ZXJuIGludCBfX21vZGlmeV9sZHQgKGludCwgc3RydWN0IG1vZGlmeV9sZHRfbGR0X3MgKiwgc2l6ZV90KTsKKy1leHRlcm4gaW50IF9fbW9kaWZ5X2xkdCAoaW50LCB2b2lkICosIHNpemVfdCk7CistCisgdm9pZCBwcmludF9sZHQgKCB2b2lkICkKKyB7CisgICAgaW50IHJlczsKKy0gICByZXMgPSBfX21vZGlmeV9sZHQoIDAsIGxkdF9jb3B5LCA4MTkyKnNpemVvZihMRFRfRU5UUlkpICk7CisrICAgLyogU3lzdGVtIGNhbGwgdG8gc2V0IExEVCBlbnRyeS4gICovCisrICAgcmVzID0gc3lzY2FsbChTWVNfbW9kaWZ5X2xkdCwgMCwgbGR0X2NvcHksIDgxOTIqc2l6ZW9mKExEVF9FTlRSWSkgKTsKKyAgICBwcmludGYoImdvdCAlZCBieXRlc1xuIiwgcmVzICk7ICAgCisgICAgcGVycm9yKCJlcnJvciBpcyIpOworIH0KK0BAIC04Myw5ICs4Miw2IEBAIHN0cnVjdCBtb2RpZnlfbGR0X2xkdF9zCisgICB1bnNpZ25lZCBpbnQgZW1wdHk6MjU7CisgfTsKKyAKKy0vKiBTeXN0ZW0gY2FsbCB0byBzZXQgTERUIGVudHJ5LiAgKi8KKy0vL2V4dGVybiBpbnQgX19tb2RpZnlfbGR0IChpbnQsIHN0cnVjdCBtb2RpZnlfbGR0X2xkdF9zICosIHNpemVfdCk7CistCisgdm9pZCBzZXRfbGR0MSAoIHZvaWQqIGJhc2UgKQorIHsKKyAgIGludCBzdGF0OworQEAgLTEwMiw3ICs5OCw4IEBAIHZvaWQgc2V0X2xkdDEgKCB2b2lkKiBiYXNlICkKKyAgIGxkdF9lbnRyeS5yZWFkX2V4ZWNfb25seSA9IDA7CisgICBsZHRfZW50cnkubGltaXRfaW5fcGFnZXMgPSAwOworICAgbGR0X2VudHJ5LnNlZ19ub3RfcHJlc2VudCA9IDA7CistICBzdGF0ID0gX19tb2RpZnlfbGR0ICgxLCAmbGR0X2VudHJ5LCBzaXplb2YgKGxkdF9lbnRyeSkpOworKyAgLyogU3lzdGVtIGNhbGwgdG8gc2V0IExEVCBlbnRyeS4gICovCisrICBzdGF0ID0gc3lzY2FsbChTWVNfbW9kaWZ5X2xkdCwgMSwgJmxkdF9lbnRyeSwgc2l6ZW9mIChsZHRfZW50cnkpKTsKKyAgIHByaW50Zigic3RhdCA9ICVkXG4iLCBzdGF0KTsKKyB9CisgCistLSAKKzIuMTMuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDQtRml4LW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwNC1GaXgtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoCmluZGV4IGVkMzEzZDYuLjM5MDIyZDAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwNC1GaXgtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwNC1GaXgtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAzOGFlMjMzYjY4OTNhNGVlYzdmOWVkNmQ4YWQwMjM5MmJjYThlYWVkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA3Mzk0MjFlMjUzZTZlYmEzZWI2NDM4NjUxODIyZjgwZmE5YzA1MDJhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiBEYXRlOiBUdWUsIDE1IERlYyAyMDE1IDE1OjMxOjUwICswMjAwCiBTdWJqZWN0OiBbUEFUQ0ggMS8yXSBGaXggb3V0IG9mIHRyZWUgYnVpbGRzLgpAQCAtMTMsMjEgKzEzLDIxIEBACiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIAogLS0tCi0gY29uZmlndXJlLmFjIHwgNjQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDMyIGluc2VydGlvbnMoKyksIDMyIGRlbGV0aW9ucygtKQorIGNvbmZpZ3VyZS5hYyB8IDY4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzNCBpbnNlcnRpb25zKCspLCAzNCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggOGFiN2Y5Yi4uOTM2NmRjNyAxMDA2NDQKK2luZGV4IDM4NzQyOTZmZGUwYi4uN2E1YmEyYzg1NTdlIDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC0zNzcsNDQgKzM3Nyw0NCBAQCBjYXNlICIke2hvc3Rfb3N9IiBpbgorQEAgLTM3Myw1MCArMzczLDUwIEBAIGNhc2UgIiR7aG9zdF9vc30iIGluCiAgCSAgICAgOS4qKQogIAkJICBBQ19NU0dfUkVTVUxUKFtEYXJ3aW4gOS54ICgke2tlcm5lbH0pIC8gTWFjIE9TIFggMTAuNSBMZW9wYXJkXSkKICAJCSAgQUNfREVGSU5FKFtEQVJXSU5fVkVSU10sIERBUldJTl8xMF81LCBbRGFyd2luIC8gTWFjIE9TIFggdmVyc2lvbl0pCiAtCQkgIERFRkFVTFRfU1VQUD0iZGFyd2luOS5zdXBwICR7REVGQVVMVF9TVVBQfSIKIC0JCSAgREVGQVVMVF9TVVBQPSJkYXJ3aW45LWRyZC5zdXBwICR7REVGQVVMVF9TVVBQfSIKLSsJCSAgREVGQVVMVF9TVVBQPSIkc3JjZGlyL2Rhcndpbjkuc3VwcCAke0RFRkFVTFRfU1VQUH0iCi0rCQkgIERFRkFVTFRfU1VQUD0iJHNyY2Rpci9kYXJ3aW45LWRyZC5zdXBwICR7REVGQVVMVF9TVVBQfSIKKysgCQkgIERFRkFVTFRfU1VQUD0iJHNyY2Rpci9kYXJ3aW45LnN1cHAgJHtERUZBVUxUX1NVUFB9IgorKyAJCSAgREVGQVVMVF9TVVBQPSIkc3JjZGlyL2RhcndpbjktZHJkLnN1cHAgJHtERUZBVUxUX1NVUFB9IgogIAkJICA7OwogIAkgICAgIDEwLiopCiAgCQkgIEFDX01TR19SRVNVTFQoW0RhcndpbiAxMC54ICgke2tlcm5lbH0pIC8gTWFjIE9TIFggMTAuNiBTbm93IExlb3BhcmRdKQpAQCAtNzcsOSArNzcsMTcgQEAKICsJCSAgREVGQVVMVF9TVVBQPSIkc3JjZGlyL2RhcndpbjE1LnN1cHAgJHtERUZBVUxUX1NVUFB9IgogKwkJICBERUZBVUxUX1NVUFA9IiRzcmNkaXIvZGFyd2luMTAtZHJkLnN1cHAgJHtERUZBVUxUX1NVUFB9IgogIAkJICA7OworIAkgICAgIDE2LiopCisgCQkgIEFDX01TR19SRVNVTFQoW0RhcndpbiAxNi54ICgke2tlcm5lbH0pIC8gbWFjT1MgMTAuMTIgU2llcnJhXSkKKyAJCSAgQUNfREVGSU5FKFtEQVJXSU5fVkVSU10sIERBUldJTl8xMF8xMiwgW0RhcndpbiAvIE1hYyBPUyBYIHZlcnNpb25dKQorLQkJICBERUZBVUxUX1NVUFA9ImRhcndpbjE2LnN1cHAgJHtERUZBVUxUX1NVUFB9IgorLQkJICBERUZBVUxUX1NVUFA9ImRhcndpbjEwLWRyZC5zdXBwICR7REVGQVVMVF9TVVBQfSIKKysJCSAgREVGQVVMVF9TVVBQPSIkc3JjZGlyL2RhcndpbjE2LnN1cHAgJHtERUZBVUxUX1NVUFB9IgorKwkJICBERUZBVUxUX1NVUFA9IiRzcmNkaXIvZGFyd2luMTAtZHJkLnN1cHAgJHtERUZBVUxUX1NVUFB9IgorIAkJICA7OwogICAgICAgICAgICAgICAqKSAKICAJCSAgQUNfTVNHX1JFU1VMVChbdW5zdXBwb3J0ZWQgKCR7a2VybmVsfSldKQotQEAgLTQyNiwxMyArNDI2LDEzIEBAIGNhc2UgIiR7aG9zdF9vc30iIGluCitAQCAtNDI4LDEzICs0MjgsMTMgQEAgY2FzZSAiJHtob3N0X29zfSIgaW4KICAgICAgIHNvbGFyaXMyLjExKikKICAgICAgICAgIEFDX01TR19SRVNVTFQoW29rICgke2hvc3Rfb3N9KV0pCiAgICAgICAgICBWR0NPTkZfT1M9InNvbGFyaXMiCkBAIC05NSw3ICsxMDMsNyBAQAogICAgICAgICAgOzsKICAKICAgICAgICopIAotQEAgLTEwMTUsMjkgKzEwMTUsMjkgQEAgQUNfTVNHX0NIRUNLSU5HKFt0aGUgZ2xpYmMgdmVyc2lvbl0pCitAQCAtOTgyLDI5ICs5ODIsMjkgQEAgQUNfTVNHX0NIRUNLSU5HKFt0aGUgZ2xpYmMgdmVyc2lvbl0pCiAgY2FzZSAiJHtHTElCQ19WRVJTSU9OfSIgaW4KICAgICAgIDIuMikKICAJQUNfTVNHX1JFU1VMVCgke0dMSUJDX1ZFUlNJT059IGZhbWlseSkKQEAgLTEzNSw3ICsxNDMsNyBAQAogIAk7OwogICAgICAgMi4qKQogIAlBQ19NU0dfUkVTVUxUKCR7R0xJQkNfVkVSU0lPTn0gZmFtaWx5KQotQEAgLTEwNDYsOCArMTA0Niw4IEBAIGNhc2UgIiR7R0xJQkNfVkVSU0lPTn0iIGluCitAQCAtMTAxMyw4ICsxMDEzLDggQEAgY2FzZSAiJHtHTElCQ19WRVJTSU9OfSIgaW4KICAJQUNfREVGSU5FKFtHTElCQ19NQU5EQVRPUllfSU5ERVhfQU5EX1NUUkxFTl9SRURJUkVDVF0sIDEsCiAgCQkgIFtEZWZpbmUgdG8gMSBpZiBpbmRleCgpIGFuZCBzdHJsZW4oKSBoYXZlIGJlZW4gb3B0aW1pemVkIGhlYXZpbHkgKHg4NiBnbGliYyA+PSAyLjEyKV0pCiAgCURFRkFVTFRfU1VQUD0iZ2xpYmMtMi5YLnN1cHAgJHtERUZBVUxUX1NVUFB9IgpAQCAtMTQ2LDcgKzE1NCw3IEBACiAgCTs7CiAgICAgICBkYXJ3aW4pCiAgCUFDX01TR19SRVNVTFQoRGFyd2luKQotQEAgLTEwNTcsNyArMTA1Nyw3IEBAIGNhc2UgIiR7R0xJQkNfVkVSU0lPTn0iIGluCitAQCAtMTAyNCw3ICsxMDI0LDcgQEAgY2FzZSAiJHtHTElCQ19WRVJTSU9OfSIgaW4KICAgICAgIGJpb25pYykKICAJQUNfTVNHX1JFU1VMVChCaW9uaWMpCiAgCUFDX0RFRklORShbQklPTklDX0xJQkNdLCAxLCBbRGVmaW5lIHRvIDEgaWYgeW91J3JlIHVzaW5nIEJpb25pY10pCkBAIC0xNTUsNyArMTYzLDcgQEAKICAJOzsKICAgICAgIHNvbGFyaXMpCiAgCUFDX01TR19SRVNVTFQoU29sYXJpcykKLUBAIC0xMDc5LDExICsxMDc5LDExIEBAIGlmIHRlc3QgIiRWR0NPTkZfT1MiICE9ICJzb2xhcmlzIjsgdGhlbgorQEAgLTEwNTEsMTEgKzEwNTEsMTEgQEAgaWYgdGVzdCAiJFZHQ09ORl9PUyIgIT0gInNvbGFyaXMiOyB0aGVuCiAgICAgICMgYXR0ZW1wdCB0byBkZXRlY3Qgd2hldGhlciBzdWNoIGxpYnJhcmllcyBhcmUgaW5zdGFsbGVkIG9uIHRoZQogICAgICAjIGJ1aWxkIG1hY2hpbmUgKG9yIGV2ZW4gaWYgYW55IFggZmFjaWxpdGllcyBhcmUgcHJlc2VudCk7IGp1c3QKICAgICAgIyBhZGQgdGhlIHN1cHByZXNzaW9ucyBhbnRpZGlzaXJyZWdhcmRsZXNzLgpAQCAtMTcxLDUgKzE3OSw1IEBACiAgCiAgCiAtLSAKLTIuNi4yCisyLjEzLjIuMy5nNDRjZDg1YzE0CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwNC1wdGhfYXRmb3JrMS5jLURlZmluZS1lcnJvci1BUEktZm9yLW11c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDQtcHRoX2F0Zm9yazEuYy1EZWZpbmUtZXJyb3ItQVBJLWZvci1tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjYjcwNjIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDQtcHRoX2F0Zm9yazEuYy1EZWZpbmUtZXJyb3ItQVBJLWZvci1tdXNsLnBhdGNoCkBAIC0wLDAgKzEsMzcgQEAKK0Zyb20gZmI3N2ZlZjRmODY2ZGFjN2JjYzZkMWFlMDI1ZGE2MDU2NDg2OWY4NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDEwIEp1biAyMDE3IDAxOjA2OjExIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggNC82XSBwdGhfYXRmb3JrMS5jOiBEZWZpbmUgZXJyb3IoKSBBUEkgZm9yIG11c2wKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBub25lL3Rlc3RzL3B0aF9hdGZvcmsxLmMgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbm9uZS90ZXN0cy9wdGhfYXRmb3JrMS5jIGIvbm9uZS90ZXN0cy9wdGhfYXRmb3JrMS5jCitpbmRleCAzNDIwMWVmLi5iN2Y1ZjJkIDEwMDY0NAorLS0tIGEvbm9uZS90ZXN0cy9wdGhfYXRmb3JrMS5jCisrKysgYi9ub25lL3Rlc3RzL3B0aF9hdGZvcmsxLmMKK0BAIC0xOCw3ICsxOCw3IEBACisgICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLworIAorICNpbmNsdWRlIDxlcnJuby5oPgorLSNpZiAhZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fc3VuKQorKyNpZiAhZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9fc3VuKSAmJiBkZWZpbmVkKF9fR0xJQkNfXykKKyAjIGluY2x1ZGUgPGVycm9yLmg+CisgI2VuZGlmCisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorQEAgLTI3LDcgKzI3LDcgQEAKKyAjaW5jbHVkZSA8c3lzL3dhaXQuaD4KKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAKKy0jaWYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19zdW4pCisrI2lmIGRlZmluZWQoX19BUFBMRV9fKSB8fCBkZWZpbmVkKF9fc3VuKSB8fCAoZGVmaW5lZChfX2xpbnV4X18pICYmICFkZWZpbmVkKF9fR0xJQkNfXykpCisgI2luY2x1ZGUgPHN0cmluZy5oPiAgLyogc3RyZXJyb3IgKi8KKyBzdGF0aWMgdm9pZCBlcnJvciAoaW50IHN0YXR1cywgaW50IGVycm51bSwgY2hhciogbXNnKQorIHsKKy0tIAorMi4xMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwNS10YzIwX3ZlcmlmeXdyYXAuYy1GYWtlLV9fR0xJQkNfUFJFUkVRLXdpdGgtbXVzbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwNS10YzIwX3ZlcmlmeXdyYXAuYy1GYWtlLV9fR0xJQkNfUFJFUkVRLXdpdGgtbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MTc2NjQwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDA1LXRjMjBfdmVyaWZ5d3JhcC5jLUZha2UtX19HTElCQ19QUkVSRVEtd2l0aC1tdXNsLnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK0Zyb20gYjRiOWYwNzJjMjJmOTY4NDRlMDJjYjlkNjhmN2ZmMjQwODY4MDgxNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDEwIEp1biAyMDE3IDAxOjA3OjU5IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggNS82XSB0YzIwX3ZlcmlmeXdyYXAuYzogRmFrZSBfX0dMSUJDX1BSRVJFUSB3aXRoIG11c2wKKworc2ltaWxhciB0byBzdW4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBoZWxncmluZC90ZXN0cy90YzIwX3ZlcmlmeXdyYXAuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2hlbGdyaW5kL3Rlc3RzL3RjMjBfdmVyaWZ5d3JhcC5jIGIvaGVsZ3JpbmQvdGVzdHMvdGMyMF92ZXJpZnl3cmFwLmMKK2luZGV4IGMxMTAwMDAuLmEzMTFhNDkgMTAwNjQ0CistLS0gYS9oZWxncmluZC90ZXN0cy90YzIwX3ZlcmlmeXdyYXAuYworKysrIGIvaGVsZ3JpbmQvdGVzdHMvdGMyMF92ZXJpZnl3cmFwLmMKK0BAIC0yMCw3ICsyMCw3IEBACisgCisgI2lmICFkZWZpbmVkKF9fQVBQTEVfXykKKyAKKy0jaWYgZGVmaW5lZChfX3N1bl9fKQorKyNpZiBkZWZpbmVkKF9fc3VuX18pIHx8IChkZWZpbmVkKF9fbGludXhfXykgJiYgIWRlZmluZWQoX19HTElCQ19fKSkKKyAvKiBGYWtlIF9fR0xJQkNfUFJFUkVRIG9uIFNvbGFyaXMuIFByZXRlbmQgZ2xpYmMgPj0gMi40LiAqLworICMgZGVmaW5lIF9fR0xJQkNfUFJFUkVRCisgI2Vsc2UKKy0tIAorMi4xMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwNi1wdGhfZGV0YWNoZWQzLmMtRGVyZWZlcmVuY2UtcHRocmVhZF90LWJlZm9yZS1hZGRpbmctLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDA2LXB0aF9kZXRhY2hlZDMuYy1EZXJlZmVyZW5jZS1wdGhyZWFkX3QtYmVmb3JlLWFkZGluZy0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDU4ODZjNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwNi1wdGhfZGV0YWNoZWQzLmMtRGVyZWZlcmVuY2UtcHRocmVhZF90LWJlZm9yZS1hZGRpbmctLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gYTY1NDdmYzE3YzEyMGRiZDk1Yjg1MmY1MGIwYzRiZGVlNGZlZGI5YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDEwIEp1biAyMDE3IDAxOjIwOjMyIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggNi82XSBwdGhfZGV0YWNoZWQzLmM6IERlcmVmZXJlbmNlIHB0aHJlYWRfdCBiZWZvcmUgYWRkaW5nCisgb2Zmc2V0IHRvIGl0CisKK0ZpeGVzCitlcnJvcjogaW52YWxpZCB1c2Ugb2YgdW5kZWZpbmVkIHR5cGUgJ3N0cnVjdCBfX3B0aHJlYWQnCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZHJkL3Rlc3RzL3B0aF9kZXRhY2hlZDMuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2RyZC90ZXN0cy9wdGhfZGV0YWNoZWQzLmMgYi9kcmQvdGVzdHMvcHRoX2RldGFjaGVkMy5jCitpbmRleCBjMDJlZWYxLi4zNWQ0M2E2IDEwMDY0NAorLS0tIGEvZHJkL3Rlc3RzL3B0aF9kZXRhY2hlZDMuYworKysrIGIvZHJkL3Rlc3RzL3B0aF9kZXRhY2hlZDMuYworQEAgLTIxLDcgKzIxLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQorICAgcHRocmVhZF9kZXRhY2godGhyZWFkKTsKKyAKKyAgIC8qIEludm9rZSBwdGhyZWFkX2RldGFjaCgpIHdpdGggYW4gaW52YWxpZCB0aHJlYWQgSUQuICovCistICBwdGhyZWFkX2RldGFjaCh0aHJlYWQgKyA4KTsKKysgIHB0aHJlYWRfZGV0YWNoKChwdGhyZWFkX3QqKSgmdGhyZWFkICsgOCkpOworIAorICAgZnByaW50ZihzdGRlcnIsICJGaW5pc2hlZC5cbiIpOworIAorLS0gCisyLjEzLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC9saW5rLWd6LXRlc3RzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC9saW5rLWd6LXRlc3RzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiMzIyMzkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kL2xpbmstZ3otdGVzdHMucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorV2hlbiBjaGVja2luZyBpZiB0aGUgY29tcGlsZXIgc3VwcG9ydHMgY29tcHJlc3NlZCBkZWJ1ZyBzZWN0aW9ucyB3ZSBuZWVkIHRvCithY3R1YWxseSBsaW5rIGluc3RlYWQgb2YganVzdCBjb21waWxlLiAgT3RoZXJ3aXNlIHRoZSBjb21waWxlciB0aGlua3MgdGhhdAordGhleSBhcmUgc3VwcG9ydGVkLCBidXQgZ29sZCBkb2VzIG5vdCBzdXBwb3J0IC1nej16bGliLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IChyMTY0NTkpCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCistLS0gYS9jb25maWd1cmUuYWN+CTIwMTctMDctMTEgMTE6NTM6MTYuMDAwMDAwMDAwICswMTAwCisrKysgYi9jb25maWd1cmUuYWMJMjAxNy0wNy0xMSAxODoxNjoxMy42NzQxMzA0ODMgKzAxMDAKK0BAIC0yMTE5LDcgKzIxMTksNyBAQAorIHNhZmVfQ0ZMQUdTPSRDRkxBR1MKKyBDRkxBR1M9Ii1nIC1nej16bGliIgorIAorLUFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sgXV0sIFtbCisrQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWyBdXSwgW1sKKyAgIHJldHVybiAwOworIF1dKV0sIFsKKyBhY19oYXZlX2d6X3psaWI9eWVzCitAQCAtMjEzOSw3ICsyMTM5LDcgQEAKKyBzYWZlX0NGTEFHUz0kQ0ZMQUdTCisgQ0ZMQUdTPSItZyAtZ3o9emxpYi1nbnUiCisgCistQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWyBdXSwgW1sKKytBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbIF1dLCBbWworICAgcmV0dXJuIDA7CisgXV0pXSwgWworIGFjX2hhdmVfZ3pfemxpYl9nbnU9eWVzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kL3BwYy1oZWFkZXJzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC9wcGMtaGVhZGVycy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTI1OWRiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC9wcGMtaGVhZGVycy5wYXRjaApAQCAtMCwwICsxLDg3IEBACitCYWNrcG9ydCBhIHBhdGNoIGZyb20gdXBzdHJlYW0gdG8gZml4IHRlc3QgY29tcGlsYXRpb24gZm9yIFBQQyB3aGVyZQorc3lzdGVtIGhlYWRlcnMgZG9uJ3QgZ2V0IGluY2x1ZGVkLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCityMTY0NTAgfCBtancgfCAyMDE3LTA2LTE2IDEwOjMzOjM1ICswMTAwIChGcmksIDE2IEp1biAyMDE3KSB8IDcgbGluZXMKKworcHBjNjQgZG9lc24ndCBjb21waWxlIHRlc3RfaXNhXzJfMDZfcGFydHguYyB3aXRob3V0IFZTWCBzdXBwb3J0CisKK1RoZSAjaWZkZWYgSEFTX1ZTWCBndWFyZCBpcyB3cm9uZ2x5IHBsYWNlZC4gSXQgbWFrZXMgdGhlIHN0YW5kYXJkCitpbmNsdWRlIGhlYWRlcnMgbm90IGJlIHVzZWQuIENhdXNpbmcgYSBidWlsZCBmYWlsdXJlLiBGaXggYnkgbW92aW5nCit0aGUgI2lmZGVmIEhBU19WU1ggYWZ0ZXIgdGhlIHN0YW5kYXJkIGluY2x1ZGVzLgorCitJbmRleDogbm9uZS90ZXN0cy9wcGMzMi90ZXN0X2lzYV8yXzA2X3BhcnQzLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhL25vbmUvdGVzdHMvcHBjMzIvdGVzdF9pc2FfMl8wNl9wYXJ0My5jCShyZXZpc2lvbiAxNjQ0OSkKKysrKyBiL25vbmUvdGVzdHMvcHBjMzIvdGVzdF9pc2FfMl8wNl9wYXJ0My5jCShyZXZpc2lvbiAxNjQ1MCkKK0BAIC0yMCwxNyArMjAsMTggQEAKKyAgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIGNvbnRhaW5lZCBpbiB0aGUgZmlsZSBDT1BZSU5HLgorICAqLworIAorLSNpZmRlZiBIQVNfVlNYCistCisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgI2luY2x1ZGUgPHN0ZGludC5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUgPG1hbGxvYy5oPgorLSNpbmNsdWRlIDxhbHRpdmVjLmg+CisgI2luY2x1ZGUgPG1hdGguaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+ICAgIC8vIGdldG9wdAorIAorKyNpZmRlZiBIQVNfVlNYCisrCisrI2luY2x1ZGUgPGFsdGl2ZWMuaD4KKysKKyAjaWZuZGVmIF9fcG93ZXJwYzY0X18KKyB0eXBlZGVmIHVpbnQzMl90IEhXb3JkX3Q7CisgI2Vsc2UKK0luZGV4OiBub25lL3Rlc3RzL3BwYzMyL3Rlc3RfaXNhXzJfMDZfcGFydDEuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGEvbm9uZS90ZXN0cy9wcGMzMi90ZXN0X2lzYV8yXzA2X3BhcnQxLmMJKHJldmlzaW9uIDE2NDQ5KQorKysrIGIvbm9uZS90ZXN0cy9wcGMzMi90ZXN0X2lzYV8yXzA2X3BhcnQxLmMJKHJldmlzaW9uIDE2NDUwKQorQEAgLTIwLDEzICsyMCwxNCBAQAorICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgY29udGFpbmVkIGluIHRoZSBmaWxlIENPUFlJTkcuCisgICovCisgCistI2lmZGVmIEhBU19WU1gKKy0KKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8c3RkaW50Lmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAjaW5jbHVkZSA8bWFsbG9jLmg+CisrCisrI2lmZGVmIEhBU19WU1gKKysKKyAjaW5jbHVkZSA8YWx0aXZlYy5oPgorIAorICNpZm5kZWYgX19wb3dlcnBjNjRfXworSW5kZXg6IG5vbmUvdGVzdHMvcHBjMzIvdGVzdF9pc2FfMl8wNl9wYXJ0Mi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYS9ub25lL3Rlc3RzL3BwYzMyL3Rlc3RfaXNhXzJfMDZfcGFydDIuYwkocmV2aXNpb24gMTY0NDkpCisrKysgYi9ub25lL3Rlc3RzL3BwYzMyL3Rlc3RfaXNhXzJfMDZfcGFydDIuYwkocmV2aXNpb24gMTY0NTApCitAQCAtMjAsMTcgKzIwLDE4IEBACisgIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBjb250YWluZWQgaW4gdGhlIGZpbGUgQ09QWUlORy4KKyAgKi8KKyAKKy0jaWZkZWYgSEFTX1ZTWAorLQorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxzdGRpbnQuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorICNpbmNsdWRlIDxtYWxsb2MuaD4KKy0jaW5jbHVkZSA8YWx0aXZlYy5oPgorICNpbmNsdWRlIDxtYXRoLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPiAgICAvLyBnZXRvcHQKKyAKKysjaWZkZWYgSEFTX1ZTWAorKworKyNpbmNsdWRlIDxhbHRpdmVjLmg+CisrCisgI2lmbmRlZiBfX3Bvd2VycGM2NF9fCisgdHlwZWRlZiB1aW50MzJfdCBIV29yZF90OworICNlbHNlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kL3J1bi1wdGVzdCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvcnVuLXB0ZXN0CmluZGV4IGY5YTcyZWMuLjQ0N2QzM2MgMTAwNzU1Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvcnVuLXB0ZXN0CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvcnVuLXB0ZXN0CkBAIC0yLDExICsyLDI0IEBACiAKICMgcnVuLXB0ZXN0IC0gJ3B0ZXN0JyB0ZXN0IGluZnJhc3RydWN0dXJlIHNoZWxsIHNjcmlwdCB0aGF0CiAjICAgd3JhcHMgdGhlIHZhbGdyaW5kIHJlZ3Jlc3Npb24gc2NyaXB0IHZnX3JlZ3Rlc3QuIAotIyAgIE11c3QgYmUgcnVuIGluIHRoZSAvdXNyL2xpYi92YWxncmluZC9wdGVzdCBkaXJlY3RvcnkuIAogIwogIyBEYXZlIExlcm5lciA8ZGF2ZS5sZXJuZXJAd2luZHJpdmVyLmNvbT4KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogVkFMR1JJTkRMSUI9QGxpYmRpckAvdmFsZ3JpbmQKLXRlc3RzL3ZnX3JlZ3Rlc3QgLS1hbGwgXAorTE9HPSIke1ZBTEdSSU5ETElCfS9wdGVzdC92YWxncmluZF9wdGVzdF8kKGRhdGUgKyVZJW0lZC0lSCVNJVMpLmxvZyIKKworY2QgJHtWQUxHUklORExJQn0vcHRlc3QgJiYgLi90ZXN0cy92Z19yZWd0ZXN0IC0tYWxsIFwKICAgICAtLXZhbGdyaW5kPS91c3IvYmluL3ZhbGdyaW5kIC0tdmFsZ3JpbmQtbGliPSRWQUxHUklORExJQiBcCi0JLS15b2N0by1wdGVzdAorICAgIC0teW9jdG8tcHRlc3QgMj4mMXx0ZWUgJHtMT0d9CisKK3Bhc3NlZD1gZ3JlcCBQQVNTOiAke0xPR318d2MgLWxgCitmYWlsZWQ9YGdyZXAgRkFJTDogJHtMT0d9fHdjIC1sYAorc2tpcHBlZD1gZ3JlcCBTS0lQOiAke0xPR318d2MgLWxgCithbGw9JCgocGFzc2VkICsgZmFpbGVkICsgc2tpcHBlZCkpCisKKyggZWNobyAiPT09IFRlc3QgU3VtbWFyeSA9PT0iCisgIGVjaG8gIlRPVEFMOiAke2FsbH0iCisgIGVjaG8gIlBBU1NFRDogJHtwYXNzZWR9IgorICBlY2hvICJGQUlMRUQ6ICR7ZmFpbGVkfSIKKyAgZWNobyAiU0tJUFBFRDogJHtza2lwcGVkfSIKKykgfCB0ZWUgLWEgLyR7TE9HfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZF8zLjEyLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kXzMuMTIuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGY4Y2QzZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kXzMuMTIuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEyNyArMCwwIEBACi1TVU1NQVJZID0gIlZhbGdyaW5kIG1lbW9yeSBkZWJ1Z2dlciBhbmQgaW5zdHJ1bWVudGF0aW9uIGZyYW1ld29yayIKLUhPTUVQQUdFID0gImh0dHA6Ly92YWxncmluZC5vcmcvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vdmFsZ3JpbmQub3JnL3N1cHBvcnQvYnVnX3JlcG9ydHMuaHRtbCIKLUxJQ0VOU0UgPSAiR1BMdjIgJiBHUEx2MisgJiBCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlL3B1Yl90b29sX2Jhc2ljcy5oO2JlZ2lubGluZT0xO2VuZGxpbmU9Mjk7bWQ1PWViYjhlNjQwZWY2MzNmOTQwYzQyNTY4NmM4NzNmOWZhIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvdmFsZ3JpbmQuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTU2O21kNT00YjVlMjQ5MDhlNTMwMTZlYTU2MWM0NWY0MjM0YTMyNyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkRPQ1M7bWQ1PTI0ZWE0YzcwOTIyMzM4NDliNDM5NDY5OTMzM2I1YzU2IgotCi1YMTFERVBFTkRTID0gInZpcnR1YWwvbGlieDExIgotREVQRU5EUyA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICcke1gxMURFUEVORFN9JywgJycsIGQpfSBcCi0gICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncHRlc3QnLCAnYm9vc3QnLCAnJywgZCl9IFwKLSAgICAgICAgIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cudmFsZ3JpbmQub3JnL2Rvd25sb2Fkcy92YWxncmluZC0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeGVkLXBlcmwtcGF0aC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9BZGRlZC1zdXBwb3J0LWZvci1QUEMtaW5zdHJ1Y3Rpb25zLW1mYXRidS1tZmF0YmwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItcmVtb3ZlLXJwYXRoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtRml4LW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA1LU1vZGlmeS12Z190ZXN0LXdyYXBwZXItdG8tc3VwcG9ydC1QVEVTVC1mb3JtYXRzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtUmVtb3ZlLXRlc3RzLXRoYXQtZmFpbC10by1idWlsZC1vbi1zb21lLVBQQzMyLWNvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly91c2UtYXBwcm9wcmlhdGUtbWFyY2gtbWNwdS1tZnB1LWZvci1BUk0tdGVzdC1hcHBzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2F2b2lkLW5lb24tZm9yLXRhcmdldHMtd2hpY2gtZG9uLXQtc3VwcG9ydC1pdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly92YWxncmluZC1tYWtlLWxkLVhYWC5zby1zdHJsZW4taW50ZXJjZXB0LW9wdGlvbmFsLnBhdGNoIFwKLSIKLVNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICJcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1idWlsZC1mb3ItbXVzbC10YXJnZXRzLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICI2ZWIwM2MwYzEwZWE5MTcwMTNhNzYyMmU0ODNkNjFiYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2N2NhNDM5NWIyNTI3MjQ3NzgwZjM2MTQ4YjA4NGY1NzQzYTY4YWIwYzg1MGNiNDNlNGE1YjRiMDEyY2Y3NmExIgotCi1DT01QQVRJQkxFX0hPU1QgPSAnKGkuODZ8eDg2XzY0fGFybXxhYXJjaDY0fG1pcHN8cG93ZXJwY3xwb3dlcnBjNjQpLiotbGludXgnCi0KLSMgdmFsZ3JpbmQgc3VwcG9ydHMgYXJtdjcgYW5kIGFib3ZlCi1DT01QQVRJQkxFX0hPU1RfYXJtdjQgPSAnbnVsbCcKLUNPTVBBVElCTEVfSE9TVF9hcm12NSA9ICdudWxsJwotQ09NUEFUSUJMRV9IT1NUX2FybXY2ID0gJ251bGwnCi0KLSMgWDMyIGlzbid0IHN1cHBvcnRlZCBieSB2YWxncmluZCBhdCB0aGlzIHRpbWUKLUNPTVBBVElCTEVfSE9TVF9saW51eC1nbnV4MzIgPSAnbnVsbCcKLQotIyBEaXNhYmxlIGZvciBzb21lIE1JUFMgdmFyaWFudHMKLUNPTVBBVElCTEVfSE9TVF9taXBzYXJjaG4zMiA9ICdudWxsJwotQ09NUEFUSUJMRV9IT1NUX21pcHNhcmNocjYgPSAnbnVsbCcKLQotaW5oZXJpdCBhdXRvdG9vbHMgcHRlc3QKLQotRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXRscyAtLXdpdGhvdXQtbXBpY2MiCi1FWFRSQV9PRUNPTkYgKz0gIiR7QFsnLS1lbmFibGUtb25seTMyYml0JywnLS1lbmFibGUtb25seTY0Yml0J11bZC5nZXRWYXIoJ1NJVEVJTkZPX0JJVFMnKSAhPSAnMzInXX0iCi0KLSMgdmFsZ3JpbmQgY2hlY2tzIGhvc3RfY3B1ICJhcm12NyopIiwgc28gd2UgbmVlZCB0byBvdmVyLXJpZGUgdGhlIGF1dG90b29scy5iYmNsYXNzIGRlZmF1bHQgLS1ob3N0IG9wdGlvbgotRVhUUkFfT0VDT05GX2FwcGVuZF9hcm0gPSAiIC0taG9zdD1hcm12NyR7SE9TVF9WRU5ET1J9LSR7SE9TVF9PU30iCi0KLUVYVFJBX09FTUFLRSA9ICItdyIKLQotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X3BhdGhfUEVSTD0nL3Vzci9iaW4vZW52IHBlcmwnIgotCi0jIHZhbGdyaW5kIGxpa2VzIHRvIGNvbnRyb2wgaXRzIG93biBvcHRpbWlzYXRpb24gZmxhZ3MuIEl0IGdlbmVyYWxseSBkZWZhdWx0cwotIyB0byAtTzIgYnV0IHVzZXMgLU8wIGZvciBzb21lIHNwZWNpZmljIHRlc3QgYXBwcyBldGMuIFBhc3Npbmcgb3VyIG93biBmbGFncwotIyAodmlhIENGTEFHUykgbWVhbnMgd2UgaW50ZXJmZXJlIHdpdGggdGhhdC4gT25seSBwYXNzIERFQlVHX0ZMQUdTIHRvIGl0Ci0jIHdoaWNoIGZpeGVzIGJ1aWxkIHBhdGggaXNzdWUgaW4gRFdBUkYuCi1TRUxFQ1RFRF9PUFRJTUlaQVRJT04gPSAiJHtERUJVR19GTEFHU30iCi0KLUNGTEFHU19hcHBlbmRfbGliYy11Y2xpYmMgPSAiIC1EX19VQ0xJQkNfXyAiCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLSAgICBpbnN0YWxsIC1tIDY0NCAke0J9L2RlZmF1bHQuc3VwcCAke0R9LyR7bGliZGlyfS92YWxncmluZC8KLX0KLQotUkRFUEVORFNfJHtQTn0gKz0gInBlcmwiCi0KLSMgdmFsZ3JpbmQgbmVlZHMgZGVidWcgaW5mb3JtYXRpb24gZm9yIGxkLnNvIGF0IHJ1bnRpbWUgaW4gb3JkZXIgdG8KLSMgcmVkaXJlY3QgZnVuY3Rpb25zIGxpa2Ugc3RybGVuLgotUlJFQ09NTUVORFNfJHtQTn0gKz0gIiR7VENMSUJDfS1kYmciCi0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIgc2VkIHBlcmwgcGVybC1tb2R1bGUtZmlsZS1nbG9iIgotUkRFUEVORFNfJHtQTn0tcHRlc3RfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGdsaWJjLXV0aWxzIgotCi0jIE9uZSBvZiB0aGUgdGVzdHMgY29udGFpbnMgYSBib2d1cyBpbnRlcnByZXRlciBwYXRoIG9uIHB1cnBvc2UuCi0jIFNraXAgZmlsZSBkZXBlbmRlbmN5IGNoZWNrCi1TS0lQX0ZJTEVERVBTXyR7UE59LXB0ZXN0ID0gJzEnCi0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0gICAgb2VfcnVubWFrZSBjaGVjawotfQotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotICAgIGNobW9kICt4ICR7Qn0vdGVzdHMvdmdfcmVndGVzdAotCi0gICAgIyBUaGUgdGVzdCBhcHBsaWNhdGlvbiBiaW5hcmllcyBhcmUgbm90IGF1dG9tYXRpY2FsbHkgaW5zdGFsbGVkLgotICAgICMgR3JhYiB0aGVtIGZyb20gdGhlIGJ1aWxkIGRpcmVjdG9yeS4KLSAgICAjCi0gICAgIyBUaGUgcmVncmVzc2lvbiB0ZXN0cyByZXF1aXJlIHNjcmlwdHMgYW5kIGRhdGEgZmlsZXMgdGhhdCBhcmUgbm90Ci0gICAgIyBjb3BpZWQgdG8gdGhlIGJ1aWxkIGRpcmVjdG9yeS4gIFRoZXkgbXVzdCBiZSBjb3BpZWQgZnJvbSB0aGUKLSAgICAjIHNvdXJjZSBkaXJlY3RvcnkuIAotICAgIHNhdmVkX2Rpcj0kUFdECi0gICAgZm9yIHBhcmVudF9kaXIgaW4gJHtTfSAke0J9IDsgZG8KLSAgICAgICAgY2QgJHBhcmVudF9kaXIKLQotICAgICAgICAjIGV4Y2x1ZGUgc2hlbGwgb3IgdGhlIHBhY2thZ2Ugd29uJ3QgaW5zdGFsbAotICAgICAgICBybSAtcmYgbm9uZS90ZXN0cy9zaGVsbCogMj4vZGV2L251bGwKLQotICAgICAgICBzdWJkaXJzPSJ0ZXN0cyBjYWNoZWdyaW5kL3Rlc3RzIGNhbGxncmluZC90ZXN0cyBkcmQvdGVzdHMgaGVsZ3JpbmQvdGVzdHMgbWFzc2lmL3Rlc3RzIG1lbWNoZWNrL3Rlc3RzIG5vbmUvdGVzdHMiCi0KLSAgICAgICAgIyBHZXQgdGhlIHZnIHRlc3Qgc2NyaXB0cywgZmlsdGVycywgYW5kIGV4cGVjdGVkIGZpbGVzCi0gICAgICAgIGZvciBkaXIgaW4gJHN1YmRpcnMgOyBkbwotICAgICAgICAgICAgZmluZCAkZGlyIHwgY3BpbyAtcHZkdSAke0R9JHtQVEVTVF9QQVRIfQotICAgICAgICBkb25lCi0gICAgICAgIGNkICRzYXZlZF9kaXIKLSAgICBkb25lCi0KLSAgICAjIGNsZWFuIG91dCBidWlsZCBhcnRpZmFjdHMgYmVmb3JlIGJ1aWxkaW5nIHRoZSBycG0KLSAgICBmaW5kICR7RH0ke1BURVNUX1BBVEh9IFwKLSAgICAgICAgIFwoIC1uYW1lICJNYWtlZmlsZSoiIFwKLSAgICAgICAgLW8gLW5hbWUgIioubyIgXAotICAgICAgICAtbyAtbmFtZSAiKi5jIiBcCi0gICAgICAgIC1vIC1uYW1lICIqLlMiIFwKLSAgICAgICAgLW8gLW5hbWUgIiouaCIgXCkgXAotICAgICAgICAtZXhlYyBybSB7fSBcOwotCi0gICAgIyBuZWVkZWQgYnkgbWFzc2lmIHRlc3RzCi0gICAgY3AgJHtCfS9tYXNzaWYvbXNfcHJpbnQgJHtEfSR7UFRFU1RfUEFUSH0vbWFzc2lmL21zX3ByaW50Ci0KLSAgICAjIGhhbmRsZSBtdWx0aWxpYgotICAgIHNlZCAtaSBzOkBsaWJkaXJAOiR7bGliZGlyfTpnICR7RH0ke1BURVNUX1BBVEh9L3J1bi1wdGVzdAotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZF8zLjEzLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kXzMuMTMuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNWI0MTI2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZF8zLjEzLjAuYmIKQEAgLTAsMCArMSwxNTMgQEAKK1NVTU1BUlkgPSAiVmFsZ3JpbmQgbWVtb3J5IGRlYnVnZ2VyIGFuZCBpbnN0cnVtZW50YXRpb24gZnJhbWV3b3JrIgorSE9NRVBBR0UgPSAiaHR0cDovL3ZhbGdyaW5kLm9yZy8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly92YWxncmluZC5vcmcvc3VwcG9ydC9idWdfcmVwb3J0cy5odG1sIgorTElDRU5TRSA9ICJHUEx2MiAmIEdQTHYyKyAmIEJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvcHViX3Rvb2xfYmFzaWNzLmg7YmVnaW5saW5lPTY7ZW5kbGluZT0yOTttZDU9ZDRkZTA0MDcyMzkzODE0NjNjZjAxZGQyNzZkN2MyMmUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jbHVkZS92YWxncmluZC5oO2JlZ2lubGluZT0xO2VuZGxpbmU9NTY7bWQ1PWFkM2IzMTdmMzI4NmI2YjcwNDU3NWQ5ZWZlNmNhNWRmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuRE9DUzttZDU9MjRlYTRjNzA5MjIzMzg0OWI0Mzk0Njk5MzMzYjVjNTYiCisKK1gxMURFUEVORFMgPSAidmlydHVhbC9saWJ4MTEiCitERVBFTkRTID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJyR7WDExREVQRU5EU30nLCAnJywgZCl9IFwKKyAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwdGVzdCcsICdib29zdCcsICcnLCBkKX0gXAorICAgICAgICAiCisKK1NSQ19VUkkgPSAiZnRwOi8vc291cmNld2FyZS5vcmcvcHViL3ZhbGdyaW5kL3ZhbGdyaW5kLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vZml4ZWQtcGVybC1wYXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0FkZGVkLXN1cHBvcnQtZm9yLVBQQy1pbnN0cnVjdGlvbnMtbWZhdGJ1LW1mYXRibC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1yZW1vdmUtcnBhdGgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1GaXgtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUtTW9kaWZ5LXZnX3Rlc3Qtd3JhcHBlci10by1zdXBwb3J0LVBURVNULWZvcm1hdHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1SZW1vdmUtdGVzdHMtdGhhdC1mYWlsLXRvLWJ1aWxkLW9uLXNvbWUtUFBDMzItY29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3VzZS1hcHByb3ByaWF0ZS1tYXJjaC1tY3B1LW1mcHUtZm9yLUFSTS10ZXN0LWFwcHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYXZvaWQtbmVvbi1mb3ItdGFyZ2V0cy13aGljaC1kb24tdC1zdXBwb3J0LWl0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3ZhbGdyaW5kLW1ha2UtbGQtWFhYLnNvLXN0cmxlbi1pbnRlcmNlcHQtb3B0aW9uYWwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1tYWtlZmlsZXMtRHJvcC1zZXR0aW5nLW1jcHUtdG8tY29ydGV4LWE4LW9uLWFybS1hcmNoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc3RyX3Rlc3Rlci5jLUxpbWl0LXJhd21lbWNoci10ZXN0LXRvLWdsaWJjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc2lncXVldWUtUmVuYW1lLV9zaWZpZWxkcy10by1fX3NpX2ZpZWxkcy1vbi1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItY29udGV4dC1BUElzLWFyZS1ub3QtYXZhaWxhYmxlLW9uLW11c2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1jb3JyZWN0LWluY2x1ZGUtZGlyZWN0aXZlLXBhdGgtZm9yLWNvbmZpZy5oLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtcHRoX2F0Zm9yazEuYy1EZWZpbmUtZXJyb3ItQVBJLWZvci1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUtdGMyMF92ZXJpZnl3cmFwLmMtRmFrZS1fX0dMSUJDX1BSRVJFUS13aXRoLW11c2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNi1wdGhfZGV0YWNoZWQzLmMtRGVyZWZlcmVuY2UtcHRocmVhZF90LWJlZm9yZS1hZGRpbmctLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbWVtY2hlY2stdGVzdHMtVXNlLXVjb250ZXh0X3QtaW5zdGVhZC1vZi1zdHJ1Y3QtdWNvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1lbWNoZWNrLWFybTY0LURlZmluZS1fX1RIUk9XLWlmLW5vdC1hbHJlYWR5LWRlZmluZWQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1tZW1jaGVjay14ODYtRGVmaW5lLV9fVEhST1ctaWYtbm90LWRlZmluZWQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy10ZXN0cy1zZWdfb3ZlcnJpZGUtUmVwbGFjZS1fX21vZGlmeV9sZHQtd2l0aC1zeXNjYWxsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2xpbmstZ3otdGVzdHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcHBjLWhlYWRlcnMucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiODE3ZGQwOGYxZThhNjYzMzZiOWZmMjA2NDAwYTUzNjkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDc2NjgwZWYwM2YwMGNkNWU5NzBiYmRjZDRlNTdmYjFmNmRmN2QyZTJjMDcxNjM1ZWYyYmU3NDc5MDE5MGMzYiIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gInZhbGdyaW5kLSg/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgorCitDT01QQVRJQkxFX0hPU1QgPSAnKGkuODZ8eDg2XzY0fGFybXxhYXJjaDY0fG1pcHN8cG93ZXJwY3xwb3dlcnBjNjQpLiotbGludXgnCisKKyMgdmFsZ3JpbmQgc3VwcG9ydHMgYXJtdjcgYW5kIGFib3ZlCitDT01QQVRJQkxFX0hPU1RfYXJtdjQgPSAnbnVsbCcKK0NPTVBBVElCTEVfSE9TVF9hcm12NSA9ICdudWxsJworQ09NUEFUSUJMRV9IT1NUX2FybXY2ID0gJ251bGwnCisKKyMgWDMyIGlzbid0IHN1cHBvcnRlZCBieSB2YWxncmluZCBhdCB0aGlzIHRpbWUKK0NPTVBBVElCTEVfSE9TVF9saW51eC1nbnV4MzIgPSAnbnVsbCcKK0NPTVBBVElCTEVfSE9TVF9saW51eC1tdXNseDMyID0gJ251bGwnCisKKyMgRGlzYWJsZSBmb3Igc29tZSBNSVBTIHZhcmlhbnRzCitDT01QQVRJQkxFX0hPU1RfbWlwc2FyY2huMzIgPSAnbnVsbCcKK0NPTVBBVElCTEVfSE9TVF9taXBzYXJjaHI2ID0gJ251bGwnCisKK2luaGVyaXQgYXV0b3Rvb2xzIHB0ZXN0CisKK0VYVFJBX09FQ09ORiA9ICItLWVuYWJsZS10bHMgLS13aXRob3V0LW1waWNjIgorRVhUUkFfT0VDT05GICs9ICIke0BbJy0tZW5hYmxlLW9ubHkzMmJpdCcsJy0tZW5hYmxlLW9ubHk2NGJpdCddW2QuZ2V0VmFyKCdTSVRFSU5GT19CSVRTJykgIT0gJzMyJ119IgorCisjIHZhbGdyaW5kIGNoZWNrcyBob3N0X2NwdSAiYXJtdjcqKSIsIHNvIHdlIG5lZWQgdG8gb3Zlci1yaWRlIHRoZSBhdXRvdG9vbHMuYmJjbGFzcyBkZWZhdWx0IC0taG9zdCBvcHRpb24KK0VYVFJBX09FQ09ORl9hcHBlbmRfYXJtID0gIiAtLWhvc3Q9YXJtdjcke0hPU1RfVkVORE9SfS0ke0hPU1RfT1N9IgorVEFSR0VUX0NDX0FSQ0hfcmVtb3ZlX2FybSA9ICIke0BnZXRfbWNwdShkKX0iCisKK0VYVFJBX09FTUFLRSA9ICItdyIKKworQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X3BhdGhfUEVSTD0nL3Vzci9iaW4vZW52IHBlcmwnIgorCisjIHZhbGdyaW5kIGxpa2VzIHRvIGNvbnRyb2wgaXRzIG93biBvcHRpbWlzYXRpb24gZmxhZ3MuIEl0IGdlbmVyYWxseSBkZWZhdWx0cworIyB0byAtTzIgYnV0IHVzZXMgLU8wIGZvciBzb21lIHNwZWNpZmljIHRlc3QgYXBwcyBldGMuIFBhc3Npbmcgb3VyIG93biBmbGFncworIyAodmlhIENGTEFHUykgbWVhbnMgd2UgaW50ZXJmZXJlIHdpdGggdGhhdC4gT25seSBwYXNzIERFQlVHX0ZMQUdTIHRvIGl0CisjIHdoaWNoIGZpeGVzIGJ1aWxkIHBhdGggaXNzdWUgaW4gRFdBUkYuCitTRUxFQ1RFRF9PUFRJTUlaQVRJT04gPSAiJHtERUJVR19GTEFHU30iCisKK2RlZiBnZXRfbWNwdShkKToKKyAgICBmb3IgYXJnIGluIChkLmdldFZhcignVFVORV9DQ0FSR1MnKSBvciAnJykuc3BsaXQoKToKKyAgICAgICAgaWYgYXJnLnN0YXJ0c3dpdGgoJy1tY3B1PScpOgorICAgICAgICAgICAgcmV0dXJuIGFyZworICAgICAgICBlbHNlOgorICAgICAgICAgICAgY29udGludWUKKyAgICByZXR1cm4gIiIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworICAgIHJtIC1yZiAke1N9L2NvbmZpZy5oCit9CisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKyAgICBpbnN0YWxsIC1tIDY0NCAke0J9L2RlZmF1bHQuc3VwcCAke0R9LyR7bGliZGlyfS92YWxncmluZC8KK30KKworVFVORSA9ICIke0BzdHJpcF9tY3B1KGQpfSIKKworUkRFUEVORFNfJHtQTn0gKz0gInBlcmwiCisKKyMgdmFsZ3JpbmQgbmVlZHMgZGVidWcgaW5mb3JtYXRpb24gZm9yIGxkLnNvIGF0IHJ1bnRpbWUgaW4gb3JkZXIgdG8KKyMgcmVkaXJlY3QgZnVuY3Rpb25zIGxpa2Ugc3RybGVuLgorUlJFQ09NTUVORFNfJHtQTn0gKz0gIiR7VENMSUJDfS1kYmciCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIgc2VkIHBlcmwgcGVybC1tb2R1bGUtZmlsZS1nbG9iIgorUkRFUEVORFNfJHtQTn0tcHRlc3RfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGdsaWJjLXV0aWxzIgorCisjIE9uZSBvZiB0aGUgdGVzdHMgY29udGFpbnMgYSBib2d1cyBpbnRlcnByZXRlciBwYXRoIG9uIHB1cnBvc2UuCisjIFNraXAgZmlsZSBkZXBlbmRlbmN5IGNoZWNrCitTS0lQX0ZJTEVERVBTXyR7UE59LXB0ZXN0ID0gJzEnCisKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisgICAgb2VfcnVubWFrZSBjaGVjaworfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworICAgIGNobW9kICt4ICR7Qn0vdGVzdHMvdmdfcmVndGVzdAorCisgICAgIyBUaGUgdGVzdCBhcHBsaWNhdGlvbiBiaW5hcmllcyBhcmUgbm90IGF1dG9tYXRpY2FsbHkgaW5zdGFsbGVkLgorICAgICMgR3JhYiB0aGVtIGZyb20gdGhlIGJ1aWxkIGRpcmVjdG9yeS4KKyAgICAjCisgICAgIyBUaGUgcmVncmVzc2lvbiB0ZXN0cyByZXF1aXJlIHNjcmlwdHMgYW5kIGRhdGEgZmlsZXMgdGhhdCBhcmUgbm90CisgICAgIyBjb3BpZWQgdG8gdGhlIGJ1aWxkIGRpcmVjdG9yeS4gIFRoZXkgbXVzdCBiZSBjb3BpZWQgZnJvbSB0aGUKKyAgICAjIHNvdXJjZSBkaXJlY3RvcnkuIAorICAgIHNhdmVkX2Rpcj0kUFdECisgICAgZm9yIHBhcmVudF9kaXIgaW4gJHtTfSAke0J9IDsgZG8KKyAgICAgICAgY2QgJHBhcmVudF9kaXIKKworICAgICAgICAjIGV4Y2x1ZGUgc2hlbGwgb3IgdGhlIHBhY2thZ2Ugd29uJ3QgaW5zdGFsbAorICAgICAgICBybSAtcmYgbm9uZS90ZXN0cy9zaGVsbCogMj4vZGV2L251bGwKKworICAgICAgICBzdWJkaXJzPSJ0ZXN0cyBjYWNoZWdyaW5kL3Rlc3RzIGNhbGxncmluZC90ZXN0cyBkcmQvdGVzdHMgaGVsZ3JpbmQvdGVzdHMgbWFzc2lmL3Rlc3RzIG1lbWNoZWNrL3Rlc3RzIG5vbmUvdGVzdHMiCisKKyAgICAgICAgIyBHZXQgdGhlIHZnIHRlc3Qgc2NyaXB0cywgZmlsdGVycywgYW5kIGV4cGVjdGVkIGZpbGVzCisgICAgICAgIGZvciBkaXIgaW4gJHN1YmRpcnMgOyBkbworICAgICAgICAgICAgZmluZCAkZGlyIHwgY3BpbyAtcHZkdSAke0R9JHtQVEVTVF9QQVRIfQorICAgICAgICBkb25lCisgICAgICAgIGNkICRzYXZlZF9kaXIKKyAgICBkb25lCisKKyAgICAjIGNsZWFuIG91dCBidWlsZCBhcnRpZmFjdHMgYmVmb3JlIGJ1aWxkaW5nIHRoZSBycG0KKyAgICBmaW5kICR7RH0ke1BURVNUX1BBVEh9IFwKKyAgICAgICAgIFwoIC1uYW1lICJNYWtlZmlsZSoiIFwKKyAgICAgICAgLW8gLW5hbWUgIioubyIgXAorICAgICAgICAtbyAtbmFtZSAiKi5jIiBcCisgICAgICAgIC1vIC1uYW1lICIqLlMiIFwKKyAgICAgICAgLW8gLW5hbWUgIiouaCIgXCkgXAorICAgICAgICAtZXhlYyBybSB7fSBcOworCisgICAgIyBuZWVkZWQgYnkgbWFzc2lmIHRlc3RzCisgICAgY3AgJHtCfS9tYXNzaWYvbXNfcHJpbnQgJHtEfSR7UFRFU1RfUEFUSH0vbWFzc2lmL21zX3ByaW50CisKKyAgICAjIGhhbmRsZSBtdWx0aWxpYgorICAgIHNlZCAtaSBzOkBsaWJkaXJAOiR7bGliZGlyfTpnICR7RH0ke1BURVNUX1BBVEh9L3J1bi1wdGVzdAorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvYWNwaWNhXzIwMTUwNTE1LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvYWNwaWNhXzIwMTUwNTE1LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzI2ZWJkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2FjcGljYV8yMDE1MDUxNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLVNVTU1BUlkgPSAiQUNQSUNBIHRvb2xzIGZvciB0aGUgZGV2ZWxvcG1lbnQgYW5kIGRlYnVnIG9mIEFDUEkgdGFibGVzIgotREVTQ1JJUFRJT04gPSAiVGhlIEFDUEkgQ29tcG9uZW50IEFyY2hpdGVjdHVyZSAoQUNQSUNBKSBwcm9qZWN0IHByb3ZpZGVzIGFuIFwKLU9TLWluZGVwZW5kZW50IHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgQWR2YW5jZWQgQ29uZmlndXJhdGlvbiBhbmQgXAotUG93ZXIgSW50ZXJmYWNlIFNwZWNpZmljYXRpb24gKEFDUEkpLiBBQ1BJQ0EgY29kZSBjb250YWlucyB0aG9zZSBwb3J0aW9ucyBvZiBcCi1BQ1BJIG1lYW50IHRvIGJlIGRpcmVjdGx5IGludGVncmF0ZWQgaW50byB0aGUgaG9zdCBPUyBhcyBhIGtlcm5lbC1yZXNpZGVudCBcCi1zdWJzeXN0ZW0sIGFuZCBhIHNtYWxsIHNldCBvZiB0b29scyB0byBhc3Npc3QgaW4gZGV2ZWxvcGluZyBhbmQgZGVidWdnaW5nIFwKLUFDUEkgdGFibGVzLiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5hY3BpY2Eub3JnLyIKLVNFQ1RJT04gPSAiY29uc29sZS90b29scyIKLQotTElDRU5TRSA9ICJCU0QgfCBHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2dlbmVyYXRlL3VuaXgvcmVhZG1lLnR4dDttZDU9MjA0NDA3ZTE5N2MxYTAxMTU0YTQ4ZjZjNjI4MGMzYWEiCi0KLUNPTVBBVElCTEVfSE9TVCA9ICIoaS44Nnx4ODZfNjR8YXJtfGFhcmNoNjQpLiotbGludXgiCi0KLURFUEVORFMgPSAiYmlzb24gZmxleCIKLQotU1JDX1VSSSA9ICJodHRwczovL2FjcGljYS5vcmcvc2l0ZXMvYWNwaWNhL2ZpbGVzL2FjcGljYS11bml4Mi0ke1BWfS50YXIuZ3ogXAotICAgIGZpbGU6Ly9uby13ZXJyb3IucGF0Y2ggXAotICAgIGZpbGU6Ly9yZW5hbWUteXlfc2Nhbl9zdHJpbmctbWFudWFsbHkucGF0Y2ggXAotICAgIGZpbGU6Ly9tYW5pcHVsYXRlLWZkcy1pbnN0ZWFkLW9mLUZJTEUucGF0Y2ggXAotICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICIyYmM0YTdjY2M4MmRlOWRmOWZhOTY0Zjc4NGVjYjI5YyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2MTIwNGVjNTZkNzFiYzliZmEyZWUyYWRlNGM2NmY3ZTg1NDE3NzJhYzcyZWY4Y2NjMjBiM2YzMzljYzk2Mzc0IgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vYWNwaWNhLm9yZy9kb3dubG9hZHMiCi0KLVMgPSAiJHtXT1JLRElSfS9hY3BpY2EtdW5peDItJHtQVn0iCi0KLUVYVFJBX09FTUFLRSA9ICJDQz0nJHtDQ30nICdPUFRfQ0ZMQUdTPS1XYWxsJyIKLQotZG9faW5zdGFsbCgpIHsKLSAgICBpbnN0YWxsIC1EIC1wIC1tMDc1NSBnZW5lcmF0ZS91bml4L2JpbiovaWFzbCAke0R9JHtiaW5kaXJ9L2lhc2wKLSAgICBpbnN0YWxsIC1EIC1wIC1tMDc1NSBnZW5lcmF0ZS91bml4L2JpbiovYWNwaWJpbiAke0R9JHtiaW5kaXJ9L2FjcGliaW4KLSAgICBpbnN0YWxsIC1EIC1wIC1tMDc1NSBnZW5lcmF0ZS91bml4L2JpbiovYWNwaWV4ZWMgJHtEfSR7YmluZGlyfS9hY3BpZXhlYwotICAgIGluc3RhbGwgLUQgLXAgLW0wNzU1IGdlbmVyYXRlL3VuaXgvYmluKi9hY3BpaGVscCAke0R9JHtiaW5kaXJ9L2FjcGloZWxwCi0gICAgaW5zdGFsbCAtRCAtcCAtbTA3NTUgZ2VuZXJhdGUvdW5peC9iaW4qL2FjcGluYW1lcyAke0R9JHtiaW5kaXJ9L2FjcGluYW1lcwotICAgIGluc3RhbGwgLUQgLXAgLW0wNzU1IGdlbmVyYXRlL3VuaXgvYmluKi9hY3Bpc3JjICR7RH0ke2JpbmRpcn0vYWNwaXNyYwotICAgIGluc3RhbGwgLUQgLXAgLW0wNzU1IGdlbmVyYXRlL3VuaXgvYmluKi9hY3BpeHRyYWN0ICR7RH0ke2JpbmRpcn0vYWNwaXh0cmFjdAotfQotCi0jIGlhc2wqLmJiIGlzIGEgc3Vic2V0IG9mIHRoaXMgcmVjaXBlLCBzbyBSUkVQTEFDRSBpdAotUFJPVklERVMgPSAiaWFzbCIKLVJQUk9WSURFU18ke1BOfSArPSAiaWFzbCIKLVJSRVBMQUNFU18ke1BOfSArPSAiaWFzbCIKLVJDT05GTElHSFRTXyR7UE59ICs9ICJpYXNsIgotCi1OQVRJVkVfSU5TVEFMTF9XT1JLUyA9ICIxIgotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FjcGljYS9hY3BpY2FfMjAxNzAzMDMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FjcGljYS9hY3BpY2FfMjAxNzAzMDMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODY4NTA1YgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2FjcGljYV8yMDE3MDMwMy5iYgpAQCAtMCwwICsxLDU1IEBACitTVU1NQVJZID0gIkFDUElDQSB0b29scyBmb3IgdGhlIGRldmVsb3BtZW50IGFuZCBkZWJ1ZyBvZiBBQ1BJIHRhYmxlcyIKK0RFU0NSSVBUSU9OID0gIlRoZSBBQ1BJIENvbXBvbmVudCBBcmNoaXRlY3R1cmUgKEFDUElDQSkgcHJvamVjdCBwcm92aWRlcyBhbiBcCitPUy1pbmRlcGVuZGVudCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gb2YgdGhlIEFkdmFuY2VkIENvbmZpZ3VyYXRpb24gYW5kIFwKK1Bvd2VyIEludGVyZmFjZSBTcGVjaWZpY2F0aW9uIChBQ1BJKS4gQUNQSUNBIGNvZGUgY29udGFpbnMgdGhvc2UgcG9ydGlvbnMgb2YgXAorQUNQSSBtZWFudCB0byBiZSBkaXJlY3RseSBpbnRlZ3JhdGVkIGludG8gdGhlIGhvc3QgT1MgYXMgYSBrZXJuZWwtcmVzaWRlbnQgXAorc3Vic3lzdGVtLCBhbmQgYSBzbWFsbCBzZXQgb2YgdG9vbHMgdG8gYXNzaXN0IGluIGRldmVsb3BpbmcgYW5kIGRlYnVnZ2luZyBcCitBQ1BJIHRhYmxlcy4iCisKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuYWNwaWNhLm9yZy8iCitTRUNUSU9OID0gImNvbnNvbGUvdG9vbHMiCisKK0xJQ0VOU0UgPSAiQlNEIHwgR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9nZW5lcmF0ZS91bml4L3JlYWRtZS50eHQ7bWQ1PTIwNDQwN2UxOTdjMWEwMTE1NGE0OGY2YzYyODBjM2FhIgorCitDT01QQVRJQkxFX0hPU1QgPSAiKGkuODZ8eDg2XzY0fGFybXxhYXJjaDY0KS4qLWxpbnV4IgorCitERVBFTkRTID0gImJpc29uIGZsZXgiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9hY3BpY2Eub3JnL3NpdGVzL2FjcGljYS9maWxlcy9hY3BpY2EtdW5peDItJHtQVn0udGFyLmd6IFwKKyAgICBmaWxlOi8vbm8td2Vycm9yLnBhdGNoIFwKKyAgICBmaWxlOi8vcmVuYW1lLXl5X3NjYW5fc3RyaW5nLW1hbnVhbGx5LnBhdGNoIFwKKyAgICBmaWxlOi8vbWFuaXB1bGF0ZS1mZHMtaW5zdGVhZC1vZi1GSUxFLnBhdGNoO3N0cmlwbGV2ZWw9MiBcCisgICAgZmlsZTovLzAwMDEtTGludXgtYWRkLXN1cHBvcnQtZm9yLVgzMi1BQkktY29tcGlsYXRpb24ucGF0Y2ggXAorICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI0OGVmNDMxNGZiNGZmZGQwYzk2ZjE0ZGNmMjA1NDRlMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiMmQ4MWU4NDEwN2FjOWEwMmJlODZlYTQzY2JlYTdhZmE4ZmQ0YjQxNTAyNzBiYzg4YzJkNGM5ZmVhMGI4YWFkIgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vYWNwaWNhLm9yZy9kb3dubG9hZHMiCisKK1MgPSAiJHtXT1JLRElSfS9hY3BpY2EtdW5peDItJHtQVn0iCisKK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcworCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCitBTFRFUk5BVElWRV8ke1BOfSA9ICJhY3BpeHRyYWN0IgorCitFWFRSQV9PRU1BS0UgPSAiQ0M9JyR7Q0N9JyAnT1BUX0NGTEFHUz0tV2FsbCciCisKK2RvX2luc3RhbGwoKSB7CisgICAgaW5zdGFsbCAtRCAtcCAtbTA3NTUgZ2VuZXJhdGUvdW5peC9iaW4qL2lhc2wgJHtEfSR7YmluZGlyfS9pYXNsCisgICAgaW5zdGFsbCAtRCAtcCAtbTA3NTUgZ2VuZXJhdGUvdW5peC9iaW4qL2FjcGliaW4gJHtEfSR7YmluZGlyfS9hY3BpYmluCisgICAgaW5zdGFsbCAtRCAtcCAtbTA3NTUgZ2VuZXJhdGUvdW5peC9iaW4qL2FjcGlleGVjICR7RH0ke2JpbmRpcn0vYWNwaWV4ZWMKKyAgICBpbnN0YWxsIC1EIC1wIC1tMDc1NSBnZW5lcmF0ZS91bml4L2JpbiovYWNwaWhlbHAgJHtEfSR7YmluZGlyfS9hY3BpaGVscAorICAgIGluc3RhbGwgLUQgLXAgLW0wNzU1IGdlbmVyYXRlL3VuaXgvYmluKi9hY3BpbmFtZXMgJHtEfSR7YmluZGlyfS9hY3BpbmFtZXMKKyAgICBpbnN0YWxsIC1EIC1wIC1tMDc1NSBnZW5lcmF0ZS91bml4L2JpbiovYWNwaXNyYyAke0R9JHtiaW5kaXJ9L2FjcGlzcmMKKyAgICBpbnN0YWxsIC1EIC1wIC1tMDc1NSBnZW5lcmF0ZS91bml4L2JpbiovYWNwaXh0cmFjdCAke0R9JHtiaW5kaXJ9L2FjcGl4dHJhY3QKK30KKworIyBpYXNsKi5iYiBpcyBhIHN1YnNldCBvZiB0aGlzIHJlY2lwZSwgc28gUlJFUExBQ0UgaXQKK1BST1ZJREVTID0gImlhc2wiCitSUFJPVklERVNfJHtQTn0gKz0gImlhc2wiCitSUkVQTEFDRVNfJHtQTn0gKz0gImlhc2wiCitSQ09ORkxJR0hUU18ke1BOfSArPSAiaWFzbCIKKworTkFUSVZFX0lOU1RBTExfV09SS1MgPSAiMSIKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvYWNwaXRlc3RzL2FhcGl0cy1saW51eC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2FjcGl0ZXN0cy9hYXBpdHMtbGludXgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjNWQ2YjAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvYWNwaXRlc3RzL2FhcGl0cy1saW51eC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzNiArMCwwIEBACi1Gcm9tOiBBbCBTdG9uZSA8YWhzM0BhaHMzLm5ldD4KLURhdGU6IE1vbiwgNyBBcHIgMjAxNCAxOTowOTozNyArMDAwMAotU3ViamVjdDogW1BBVENIIDEvMl0gRml4dXAgYWFwaXRzIGJ1aWxkCi0KLUZyb20gaHR0cDovL2dpdC5saW5hcm8ub3JnL3Blb3BsZS9hbC5zdG9uZS9hY3BpY2EtdG9vbHMuZ2l0Ci1VcHN0cmVhbS1zdGF0dXM6IFVua25vd24KLQotZGlmZiAtdXJOIGFjcGljYS11bml4Mi0yMDEzMDYyNi90ZXN0cy9hYXBpdHMvYXRleGVjLmMgYWNwaWNhLXVuaXgyLTIwMTMwNjI2LWFhcGl0cy90ZXN0cy9hYXBpdHMvYXRleGVjLmMKLS0tLSBhY3BpY2EtdW5peDItMjAxMzA2MjYvdGVzdHMvYWFwaXRzL2F0ZXhlYy5jCTIwMTMtMDEtMTcgMTI6NDg6MjguMDAwMDAwMDAwIC0wNzAwCi0rKysgYWNwaWNhLXVuaXgyLTIwMTMwNjI2LWFhcGl0cy90ZXN0cy9hYXBpdHMvYXRleGVjLmMJMjAxMy0wNy0yNSAxMzo0NDoyMy4wMjM4OTQ0NDEgLTA2MDAKLUBAIC02MzksNiArNjM5LDcgQEAKLSB9Ci0gCi0gCi0rI2lmIEFDUElfTUFDSElORV9XSURUSCA9PSAzMgotIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICoKLSAgKiBGVU5DVElPTjogICAgQXRCdWlsZExvY2FsUlNEVAotQEAgLTc1Nyw4ICs3NTgsOSBAQAotICAgICAgICAgTG9jYWxSU0RULT5IZWFkZXIuQ2hlY2tzdW0gPSAoVUlOVDgpfkxvY2FsUlNEVC0+SGVhZGVyLkNoZWNrc3VtOwotICAgICB9Ci0gfQotKyNlbmRpZgotIAotIAotIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gICoKLSAgKiBGVU5DVElPTjogICAgQXRCdWlsZExvY2FsWFNEVAotQEAgLTE0MjQsNyArMTQyNiw3IEBACi0gICAgICAgICBBQ1BJX1dBUk5JTkcgKChBRV9JTkZPLAotICAgICAgICAgICAgICJSZXF1ZXN0IG9uIFslNC40c10gaXMgYmV5b25kIHJlZ2lvbiBsaW1pdCBSZXEtJVgrJVgsIEJhc2U9JVgsIExlbi0lWFxuIiwKLSAgICAgICAgICAgICAoUmVnaW9uT2JqZWN0LT5SZWdpb24uTm9kZSktPk5hbWUuQXNjaWksIChVSU5UMzIpIEFkZHJlc3MsCi0tICAgICAgICAgICAgQnl0ZVdpZHRoLCAoVUlOVDMyKSBCdWZmZXJBZGRyZXNzLCBMZW5ndGgpKTsKLSsgICAgICAgICAgICBCeXRlV2lkdGgsIChVSU5UMzIpIEJ1ZmZlckFkZHJlc3MsIChVSU5UMzIpIExlbmd0aCkpOwotIAotICAgICAgICAgcmV0dXJuIChBRV9BTUxfUkVHSU9OX0xJTUlUKTsKLSAgICAgfQotQEAgLTE3OTIsNyArMTc5Niw5IEBACi0gICAgICAgICAgICAgUGF0aCwgT2JqLkludGVnZXIuVmFsdWUsIFZhbHVlKTsKLSAjZWxzZQotICAgICAgICAgcHJpbnRmICgiQVBJIEVycm9yOiBWYWx1ZSBvZiAlcyBpcyAweCVsbHggaW5zdGVhZCBvZiBleHBlY3RlZCAweCVsbHhcbiIsCi0tICAgICAgICAgICAgUGF0aCwgT2JqLkludGVnZXIuVmFsdWUsIFZhbHVlKTsKLSsgICAgICAgICAgICBQYXRoLAotKwkgICAgKGxvbmcgbG9uZyB1bnNpZ25lZCBpbnQpIE9iai5JbnRlZ2VyLlZhbHVlLAotKwkgICAgKGxvbmcgbG9uZyB1bnNpZ25lZCBpbnQpIFZhbHVlKTsKLSAjZW5kaWYKLSAgICAgICAgIFN0YXR1cyA9IEFFX0VSUk9SOwotICAgICB9Ci1AQCAtMTg3MSw3ICsxODc3LDcgQEAKLSAgICAgewotICAgICAgICAgVGVzdEVycm9ycysrOwotICAgICAgICAgcHJpbnRmICgiVGVzdCBFcnJvcjogY2Fubm90IGFsbG9jYXRlIGJ1ZmZlciBvZiAlZCBieXRlc1xuIiwKLS0gICAgICAgICAgICBSZXN1bHRzLkxlbmd0aCk7Ci0rICAgICAgICAgICAgICAgIChpbnQpIFJlc3VsdHMuTGVuZ3RoKTsKLSAgICAgICAgIHJldHVybiAoQUVfTk9fTUVNT1JZKTsKLSAgICAgfQotICAgICBSZXN1bHRzLlBvaW50ZXIgPSBPYmplY3Q7Ci1AQCAtMTk1Miw3ICsxOTU2LDggQEAKLSAgICAgewotICAgICAgICAgcHJpbnRmICgiQXRDaGVja0J1ZmZlcjogdW5leHBlY3RlZCBsZW5ndGggJWQgb2YgQnVmZmVyIHZzIgotICAgICAgICAgICAgICIgY2FsY3VsYXRlZCAlZCBieXRlc1xuIiwKLS0gICAgICAgICAgICBSZXN1bHRzLkxlbmd0aCwgQUNQSV9ST1VORF9VUF9UT19OQVRJVkVfV09SRChzaXplb2YgKEFDUElfT0JKRUNUKSArIExlbmd0aCkpOwotKyAgICAgICAgICAgIChpbnQpUmVzdWx0cy5MZW5ndGgsCi0rCSAgICAoaW50KShBQ1BJX1JPVU5EX1VQX1RPX05BVElWRV9XT1JEKHNpemVvZiAoQUNQSV9PQkpFQ1QpICsgTGVuZ3RoKSkpOwotICAgICB9Ci0gCi0gICAgIC8qIEluaXRpYWxpemUgdGhlIHJldHVybiBidWZmZXIgc3RydWN0dXJlICovCi1AQCAtMTk2MSw3ICsxOTY4LDcgQEAKLSAgICAgewotICAgICAgICAgVGVzdEVycm9ycysrOwotICAgICAgICAgcHJpbnRmICgiVGVzdCBFcnJvcjogY2Fubm90IGFsbG9jYXRlIGJ1ZmZlciBvZiAlZCBieXRlc1xuIiwKLS0gICAgICAgICAgICBSZXN1bHRzLkxlbmd0aCk7Ci0rICAgICAgICAgICAgKGludCkgUmVzdWx0cy5MZW5ndGgpOwotICAgICAgICAgcmV0dXJuIChBRV9OT19NRU1PUlkpOwotICAgICB9Ci0gICAgIFJlc3VsdHMuUG9pbnRlciA9IE9iamVjdDsKLWRpZmYgLXVyTiBhY3BpY2EtdW5peDItMjAxMzA2MjYvdGVzdHMvYWFwaXRzL2F0aW5pdC5jIGFjcGljYS11bml4Mi0yMDEzMDYyNi1hYXBpdHMvdGVzdHMvYWFwaXRzL2F0aW5pdC5jCi0tLS0gYWNwaWNhLXVuaXgyLTIwMTMwNjI2L3Rlc3RzL2FhcGl0cy9hdGluaXQuYwkyMDEzLTAxLTE3IDEyOjQ4OjI4LjAwMDAwMDAwMCAtMDcwMAotKysrIGFjcGljYS11bml4Mi0yMDEzMDYyNi1hYXBpdHMvdGVzdHMvYWFwaXRzL2F0aW5pdC5jCTIwMTMtMDctMjUgMTM6MjA6MTkuNzA2NzA1OTYwIC0wNjAwCi1AQCAtMzAyNCw3ICszMDI0LDcgQEAKLSAgICAgICAgICAgICBBYXBpRXJyb3JzKys7Ci0gICAgICAgICAgICAgcHJpbnRmICgiQVBJIEVycm9yOiBBY3BpR2V0U3lzdGVtSW5mbygpIHJldHVybmVkIgotICAgICAgICAgICAgICAgICAiIExlbmd0aCAlZCwgZXhwZWN0ZWQgJWRcbiIsCi0tICAgICAgICAgICAgICAgIE91dEJ1ZmZlci5MZW5ndGgsIHNpemVvZiAoSW5mbykpOwotKyAgICAgICAgICAgICAgICAoaW50KSBPdXRCdWZmZXIuTGVuZ3RoLCAoaW50KSBzaXplb2YgKEluZm8pKTsKLSAgICAgICAgICAgICByZXR1cm4gKEFFX0VSUk9SKTsKLSAgICAgICAgIH0KLSAKLUBAIC0zMDQ2LDcgKzMwNDYsNyBAQAotICAgICAgICAgICAgIEFhcGlFcnJvcnMrKzsKLSAgICAgICAgICAgICBwcmludGYgKCJBUEkgRXJyb3I6IEFjcGlHZXRTeXN0ZW1JbmZvKCkgcmV0dXJuZWQiCi0gICAgICAgICAgICAgICAgICIgTGVuZ3RoICVkLCBleHBlY3RlZCAlZFxuIiwKLS0gICAgICAgICAgICAgICAgT3V0QnVmZmVyLkxlbmd0aCwgc2l6ZW9mIChJbmZvKSk7Ci0rICAgICAgICAgICAgICAgIChpbnQpIE91dEJ1ZmZlci5MZW5ndGgsIChpbnQpIHNpemVvZiAoSW5mbykpOwotICAgICAgICAgICAgIHJldHVybiAoQUVfRVJST1IpOwotICAgICAgICAgfQotIAotQEAgLTMwNjYsNyArMzA2Niw3IEBACi0gICAgICAgICAgICAgQWFwaUVycm9ycysrOwotICAgICAgICAgICAgIHByaW50ZiAoIkFQSSBFcnJvcjogQWNwaUdldFN5c3RlbUluZm8oKSByZXR1cm5lZCIKLSAgICAgICAgICAgICAgICAgIiBMZW5ndGggJWQsIGV4cGVjdGVkICVkXG4iLAotLSAgICAgICAgICAgICAgICBPdXRCdWZmZXIuTGVuZ3RoLCBzaXplb2YgKEluZm8pKTsKLSsgICAgICAgICAgICAgICAgKGludCkgT3V0QnVmZmVyLkxlbmd0aCwgKGludCkgc2l6ZW9mIChJbmZvKSk7Ci0gICAgICAgICAgICAgcmV0dXJuIChBRV9FUlJPUik7Ci0gICAgICAgICB9Ci0gICAgICAgICBlbHNlIGlmIChPdXRCdWZmZXIuUG9pbnRlciAhPSAmSW5mbykKLUBAIC0zMTQ5LDcgKzMxNDksNyBAQAotICAgICAgICAgICAgIEFhcGlFcnJvcnMrKzsKLSAgICAgICAgICAgICBwcmludGYgKCJBUEkgRXJyb3I6IEFjcGlHZXRTeXN0ZW1JbmZvKCkgcmV0dXJuZWQiCi0gICAgICAgICAgICAgICAgICIgTGVuZ3RoICVkLCBleHBlY3RlZCAlZFxuIiwKLS0gICAgICAgICAgICAgICAgT3V0QnVmZmVyLkxlbmd0aCwgc2l6ZW9mIChJbmZvKSk7Ci0rICAgICAgICAgICAgICAgIChpbnQpIE91dEJ1ZmZlci5MZW5ndGgsIChpbnQpIHNpemVvZiAoSW5mbykpOwotICAgICAgICAgICAgIHJldHVybiAoQUVfRVJST1IpOwotICAgICAgICAgfQotICAgICAgICAgZWxzZSBpZiAoT3V0QnVmZmVyLlBvaW50ZXIgIT0gJkluZm8pCi1AQCAtMzIxNCw3ICszMjE0LDcgQEAKLSAgICAgICAgICAgICBBYXBpRXJyb3JzKys7Ci0gICAgICAgICAgICAgcHJpbnRmICgiQVBJIEVycm9yOiBBY3BpR2V0U3lzdGVtSW5mbygpIHJldHVybmVkIgotICAgICAgICAgICAgICAgICAiIExlbmd0aCAlZCwgZXhwZWN0ZWQgJWRcbiIsCi0tICAgICAgICAgICAgICAgIE91dEJ1ZmZlci5MZW5ndGgsIHNpemVvZiAoQUNQSV9TWVNURU1fSU5GTykpOwotKyAgICAgICAgICAgICAgICAoaW50KSBPdXRCdWZmZXIuTGVuZ3RoLCAoaW50KSBzaXplb2YgKEFDUElfU1lTVEVNX0lORk8pKTsKLSAgICAgICAgICAgICByZXR1cm4gKEFFX0VSUk9SKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGVsc2UKLWRpZmYgLXVyTiBhY3BpY2EtdW5peDItMjAxMzA2MjYvdGVzdHMvYWFwaXRzL2F0bWFpbi5jIGFjcGljYS11bml4Mi0yMDEzMDYyNi1hYXBpdHMvdGVzdHMvYWFwaXRzL2F0bWFpbi5jCi0tLS0gYWNwaWNhLXVuaXgyLTIwMTMwNjI2L3Rlc3RzL2FhcGl0cy9hdG1haW4uYwkyMDEzLTAxLTE3IDEyOjQ4OjI4LjAwMDAwMDAwMCAtMDcwMAotKysrIGFjcGljYS11bml4Mi0yMDEzMDYyNi1hYXBpdHMvdGVzdHMvYWFwaXRzL2F0bWFpbi5jCTIwMTMtMDctMjUgMTM6MTg6MjIuMDgzMzIzOTQ4IC0wNjAwCi1AQCAtMzE1LDcgKzMxNSw3IEBACi0gICAgIHsKLSAgICAgICAgIHByaW50ZiAoIkFDUElDQSBBUEkgVFMgZXJyOiB0ZXN0IG51bSAlbGQgb2YgdGVzdCBjYXNlICVsZCIKLSAgICAgICAgICAgICAiIGlzIG5vdCBpbXBsZW1lbnRlZFxuIiwKLS0gICAgICAgICAgICB0ZXN0X251bSwgdGVzdF9jYXNlKTsKLSsgICAgICAgICAgICAobG9uZyBpbnQpIHRlc3RfbnVtLCAobG9uZyBpbnQpIHRlc3RfY2FzZSk7Ci0gICAgICAgICByZXR1cm4gKEF0UmV0Tm90SW1wbCk7Ci0gICAgIH0KLSAKLUBAIC00MzAsNyArNDMyLDcgQEAKLSAgICAgaWYgKHRlc3RfY2FzZSA8IDEgfHwgdGVzdF9jYXNlID4gQVRfVEVTVF9DQVNFX05VTSkKLSAgICAgewotICAgICAgICAgcHJpbnRmICgiQUNQSUNBIEFQSSBUUyBlcnI6IHRlc3QgY2FzZSAlbGQgaXMgb3V0IG9mIHJhbmdlIDEgLSAlZFxuIiwKLS0gICAgICAgICAgICB0ZXN0X2Nhc2UsIEFUX1RFU1RfQ0FTRV9OVU0pOwotKyAgICAgICAgICAgIChsb25nIGludCkgdGVzdF9jYXNlLCAoaW50KSBBVF9URVNUX0NBU0VfTlVNKTsKLSAgICAgICAgIHJldHVybiAoQXRSZXRCYWRQYXJhbSk7Ci0gICAgIH0KLSAKLUBAIC00MzgsNyArNDQwLDcgQEAKLSAgICAgaWYgKHRlc3RfbnVtIDwgMCB8fCB0ZXN0X251bSA+IEF0VGVzdENhc2VbdGVzdF9jYXNlXS5UZXN0c051bSkKLSAgICAgewotICAgICAgICAgcHJpbnRmICgiQUNQSUNBIEFQSSBUUyBlcnI6IHRlc3QgbnVtICVsZCBpcyBvdXQgb2YgcmFuZ2UgMCAtICVkXG4iLAotLSAgICAgICAgICAgIHRlc3RfbnVtLCBBdFRlc3RDYXNlW3Rlc3RfY2FzZV0uVGVzdHNOdW0pOwotKyAgICAgICAgICAgIChsb25nIGludCkgdGVzdF9udW0sIEF0VGVzdENhc2VbdGVzdF9jYXNlXS5UZXN0c051bSk7Ci0gICAgICAgICByZXR1cm4gKEF0UmV0QmFkUGFyYW0pOwotICAgICB9Ci0KLWRpZmYgLXVyTiBhY3BpY2EtdW5peDItMjAxMzA2MjYvdGVzdHMvYWFwaXRzL2F0bmFtZXNwYWNlLmMgYWNwaWNhLXVuaXgyLTIwMTMwNjI2LWFhcGl0cy90ZXN0cy9hYXBpdHMvYXRuYW1lc3BhY2UuYwotLS0tIGFjcGljYS11bml4Mi0yMDEzMDYyNi90ZXN0cy9hYXBpdHMvYXRuYW1lc3BhY2UuYwkyMDEzLTAxLTE3IDEyOjQ4OjI4LjAwMDAwMDAwMCAtMDcwMAotKysrIGFjcGljYS11bml4Mi0yMDEzMDYyNi1hYXBpdHMvdGVzdHMvYWFwaXRzL2F0bmFtZXNwYWNlLmMJMjAxMy0wNy0yNSAxMzoyNDoxNS4zNjY0NjY3MDcgLTA2MDAKLUBAIC0yNTM1LDcgKzI1MzUsOCBAQAotICNlbHNlCi0gICAgICAgICAgICAgICAgIHByaW50ZiAoIkFQSSBFcnJvcjogQWRkcmVzcyBvZiAlcyAoMHglbGxYKSAhPSAoMHglbGxYKVxuIiwKLSAgICAgICAgICAgICAgICAgICAgIFBhdGhOYW1lc1syICogaSArIDFdLAotLSAgICAgICAgICAgICAgICAgICAgSW5mby0+QWRkcmVzcywgRXhwZWN0ZWRJbmZvW2ldLkFkZHJlc3MpOwotKyAgICAgICAgICAgICAgICAgICAgKGxvbmcgbG9uZyB1bnNpZ25lZCBpbnQpIEluZm8tPkFkZHJlc3MsCi0rCQkgICAgKGxvbmcgbG9uZyB1bnNpZ25lZCBpbnQpIEV4cGVjdGVkSW5mb1tpXS5BZGRyZXNzKTsKLSAjZW5kaWYKLSAjZWxzZQotICAgICAgICAgICAgICAgICBwcmludGYgKCJBUEkgRXJyb3I6IEFkZHJlc3Mgb2YgJXMgKDB4JVgpICE9ICgweCVYKVxuIiwKLUBAIC0yOTA4LDcgKzI5MDksOCBAQAotICAgICAgICAgVGVzdEVycm9ycysrOwotICAgICAgICAgcHJpbnRmICgiQXRHZXROZXh0T2JqZWN0VHlwZUNvbW1vbjogZGlmZmVyZW50IG51bWJlcnMgb2YgZW50aXRpZXMiCi0gICAgICAgICAgICAgImluIFR5cGVzTmFtZXMgKCVkKSBhbmQgTGV2ZWxUeXBlczAwMDAgKCVkKVxuIiwKLS0gICAgICAgICAgICBUeXBlc0NvdW50LCBzaXplb2YgKExldmVsVHlwZXMwMDAwKSAvIHNpemVvZiAoQUNQSV9PQkpFQ1RfVFlQRSkpOwotKyAgICAgICAgICAgIFR5cGVzQ291bnQsCi0rCSAgICAoaW50KSAoc2l6ZW9mIChMZXZlbFR5cGVzMDAwMCkgLyBzaXplb2YgKEFDUElfT0JKRUNUX1RZUEUpKSk7Ci0gICAgICAgICByZXR1cm4gKEFFX0VSUk9SKTsKLSAgICAgfQotIAotQEAgLTQxOTIsNyArNDE5NCw5IEBACi0gICAgICAgICAgICAgUGF0aG5hbWUsIE9iai5JbnRlZ2VyLlZhbHVlLCBWYWx1ZSk7Ci0gI2Vsc2UKLSAgICAgICAgIHByaW50ZiAoIkFQSSBFcnJvcjogVmFsdWUgb2YgJXMgaXMgMHglbGx4IGluc3RlYWQgb2YgZXhwZWN0ZWQgMHglbGx4XG4iLAotLSAgICAgICAgICAgIFBhdGhuYW1lLCBPYmouSW50ZWdlci5WYWx1ZSwgVmFsdWUpOwotKyAgICAgICAgICAgIFBhdGhuYW1lLAotKwkgICAgKGxvbmcgbG9uZyB1bnNpZ25lZCBpbnQpIE9iai5JbnRlZ2VyLlZhbHVlLAotKwkgICAgKGxvbmcgbG9uZyB1bnNpZ25lZCBpbnQpIFZhbHVlKTsKLSAjZW5kaWYKLSAgICAgICAgIFN0YXR1cyA9IEFFX0VSUk9SOwotICAgICB9Ci1AQCAtNTE5OSw3ICs1MjAzLDcgQEAKLSAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIEFhcGlFcnJvcnMrKzsKLSAgICAgICAgICAgICAgICAgcHJpbnRmICgiQVBJIEVycm9yOiBBY3BpT3NBbGxvY2F0ZSglZCkgcmV0dXJuZWQgTlVMTFxuIiwKLS0gICAgICAgICAgICAgICAgICAgIE91dE5hbWUuTGVuZ3RoKTsKLSsgICAgICAgICAgICAgICAgICAgIChpbnQpIE91dE5hbWUuTGVuZ3RoKTsKLSAgICAgICAgICAgICAgICAgcmV0dXJuIChBRV9FUlJPUik7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgfQotZGlmZiAtdXJOIGFjcGljYS11bml4Mi0yMDEzMDYyNi90ZXN0cy9hYXBpdHMvYXRvc3hmY3RybC5jIGFjcGljYS11bml4Mi0yMDEzMDYyNi1hYXBpdHMvdGVzdHMvYWFwaXRzL2F0b3N4ZmN0cmwuYwotLS0tIGFjcGljYS11bml4Mi0yMDEzMDYyNi90ZXN0cy9hYXBpdHMvYXRvc3hmY3RybC5jCTIwMTMtMDEtMTcgMTI6NDg6MjguMDAwMDAwMDAwIC0wNzAwCi0rKysgYWNwaWNhLXVuaXgyLTIwMTMwNjI2LWFhcGl0cy90ZXN0cy9hYXBpdHMvYXRvc3hmY3RybC5jCTIwMTMtMDctMjUgMTM6MzA6MDAuMzc1NDkyNzUxIC0wNjAwCi1AQCAtNzM3LDEzICs3MzcsMTUgQEAKLSAjaWYgQUNQSV9NQUNISU5FX1dJRFRIID09IDY0Ci0gI2lmZGVmICAgIF9NU0NfVkVSCi0gICAgICAgICBwcmludGYoIk9zeGZDdHJsRmluZ1JlZzogdW5leHBlY3RlZCBXaWR0aCAlZCBvZiBSZWcgMHglSTY0eFxuIiwKLSsgICAgICAgICAgICBXaWR0aCwgQWRkcmVzcyk7Ci0gI2Vsc2UKLSAgICAgICAgIHByaW50ZigiT3N4ZkN0cmxGaW5nUmVnOiB1bmV4cGVjdGVkIFdpZHRoICVkIG9mIFJlZyAweCVsbHhcbiIsCi0rICAgICAgICAgICAgV2lkdGgsIChsb25nIGxvbmcgdW5zaWduZWQgaW50KSBBZGRyZXNzKTsKLSAjZW5kaWYKLSAjZWxzZQotICAgICAgICAgcHJpbnRmKCJPc3hmQ3RybEZpbmdSZWc6IHVuZXhwZWN0ZWQgV2lkdGggJWQgb2YgUmVnIDB4JXhcbiIsCi0tI2VuZGlmCi0gICAgICAgICAgICAgV2lkdGgsIEFkZHJlc3MpOwotKyNlbmRpZgotICAgICAgICAgcmV0dXJuIChOVUxMKTsKLSAgICAgfQotIAotQEAgLTc2NCwxNSArNzY2LDE5IEBACi0gI2lmZGVmICAgIF9NU0NfVkVSCi0gICAgICAgICAgICAgICAgIHByaW50ZigiT3N4ZkN0cmxGaW5nUmVnOiBpbnRlcnNlY3Rpb24gUmVncyAoMHglSTY0eDogMHgleCkiCi0gICAgICAgICAgICAgICAgICAgICAiIGFuZCAoMHglSTY0eDogMHgleClcbiIsCi0rICAgICAgICAgICAgICAgICAgICBSZWctPkFkZHJlc3MsIFJlZy0+V2lkdGgsIEFkZHJlc3MsIFdpZHRoKTsKLSAjZWxzZQotICAgICAgICAgICAgICAgICBwcmludGYoIk9zeGZDdHJsRmluZ1JlZzogaW50ZXJzZWN0aW9uIFJlZ3MgKDB4JWxseDogMHgleCkiCi0gICAgICAgICAgICAgICAgICAgICAiIGFuZCAoMHglbGx4OiAweCV4KVxuIiwKLSsgICAgICAgICAgICAgICAgICAgIChsb25nIGxvbmcgdW5zaWduZWQgaW50KSBSZWctPkFkZHJlc3MsCi0rCQkgICAgUmVnLT5XaWR0aCwKLSsJCSAgICAobG9uZyBsb25nIHVuc2lnbmVkIGludCkgQWRkcmVzcywgV2lkdGgpOwotICNlbmRpZgotICNlbHNlCi0gICAgICAgICAgICAgICAgIHByaW50ZigiT3N4ZkN0cmxGaW5nUmVnOiBpbnRlcnNlY3Rpb24gUmVncyAoMHgleDogMHgleCkiCi0gICAgICAgICAgICAgICAgICAgICAiIGFuZCAoMHgleDogMHgleClcbiIsCi0tI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICBSZWctPkFkZHJlc3MsIFJlZy0+V2lkdGgsIEFkZHJlc3MsIFdpZHRoKTsKLSsjZW5kaWYKLSAgICAgICAgICAgICAgICAgcmV0dXJuIChOVUxMKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICB9Ci1AQCAtNzg2LDEzICs3OTIsMTUgQEAKLSAjaWYgQUNQSV9NQUNISU5FX1dJRFRIID09IDY0Ci0gI2lmZGVmICAgIF9NU0NfVkVSCi0gICAgICAgICAgICAgcHJpbnRmKCJPc3hmQ3RybEZpbmdSZWc6IG5vIG1lbW9yeSBmb3IgUmVnICgweCVJNjR4OiAweCV4KVxuIiwKLSsgICAgICAgICAgICAgICAgUmVnLT5BZGRyZXNzLCBSZWctPldpZHRoKTsKLSAjZWxzZQotICAgICAgICAgICAgIHByaW50ZigiT3N4ZkN0cmxGaW5nUmVnOiBubyBtZW1vcnkgZm9yIFJlZyAoMHglbGx4OiAweCV4KVxuIiwKLSsgICAgICAgICAgICAgICAgKGxvbmcgbG9uZyB1bnNpZ25lZCBpbnQpIFJlZy0+QWRkcmVzcywgUmVnLT5XaWR0aCk7Ci0gI2VuZGlmCi0gI2Vsc2UKLSAgICAgICAgICAgICBwcmludGYoIk9zeGZDdHJsRmluZ1JlZzogbm8gbWVtb3J5IGZvciBSZWcgKDB4JXg6IDB4JXgpXG4iLAotLSNlbmRpZgotICAgICAgICAgICAgICAgICBSZWctPkFkZHJlc3MsIFJlZy0+V2lkdGgpOwotKyNlbmRpZgotICAgICAgICAgICAgIHJldHVybiAoTlVMTCk7Ci0gICAgICAgICB9Ci0gICAgICAgICBSZWctPlR5cGUgPSBUeXBlOwotQEAgLTkzMiwxNCArOTQwLDE5IEBACi0gI2lmIEFDUElfTUFDSElORV9XSURUSCA9PSA2NAotICNpZmRlZiAgICBfTVNDX1ZFUgotICAgICAgICAgICAgIHByaW50ZigiJS4ydSAoJXMgQWRkcmVzcyAweCVJNjR4OiBXaWR0aCAlLjJ1KSByL3cgY291bnRzOiAldS8ldVxuIiwKLSsgICAgICAgICAgICAgICAgaSwgKFJlZy0+VHlwZSA9PSBFTVVMX1JFR19TWVMpPyAiU1lTIjogIklPIiwKLSsgICAgICAgICAgICAgICAgUmVnLT5BZGRyZXNzLCBSZWctPldpZHRoLCBSZWctPlJlYWRDb3VudCwgUmVnLT5Xcml0ZUNvdW50KTsKLSAjZWxzZQotICAgICAgICAgICAgIHByaW50ZigiJS4ydSAoJXMgQWRkcmVzcyAweCVsbHg6IFdpZHRoICUuMnUpIHIvdyBjb3VudHM6ICV1LyV1XG4iLAotKyAgICAgICAgICAgICAgICBpLCAoUmVnLT5UeXBlID09IEVNVUxfUkVHX1NZUyk/ICJTWVMiOiAiSU8iLAotKyAgICAgICAgICAgICAgICAobG9uZyBsb25nIHVuc2lnbmVkIGludCkgUmVnLT5BZGRyZXNzLAotKwkJUmVnLT5XaWR0aCwgUmVnLT5SZWFkQ291bnQsIFJlZy0+V3JpdGVDb3VudCk7Ci0gI2VuZGlmCi0gI2Vsc2UKLSAgICAgICAgICAgICBwcmludGYoIiUuMnUgKCVzIEFkZHJlc3MgMHglLjR4OiBXaWR0aCAlLjJ1KSByL3cgY291bnRzOiAldS8ldVxuIiwKLS0jZW5kaWYKLSAgICAgICAgICAgICAgICAgaSwgKFJlZy0+VHlwZSA9PSBFTVVMX1JFR19TWVMpPyAiU1lTIjogIklPIiwKLSAgICAgICAgICAgICAgICAgUmVnLT5BZGRyZXNzLCBSZWctPldpZHRoLCBSZWctPlJlYWRDb3VudCwgUmVnLT5Xcml0ZUNvdW50KTsKLSsjZW5kaWYKLSAgICAgICAgICAgICBSZWcgPSBSZWctPk5leHQ7Ci0gICAgICAgICAgICAgaSsrOwotICAgICAgICAgfQotZGlmZiAtdXJOIGFjcGljYS11bml4Mi0yMDEzMDYyNi90ZXN0cy9hYXBpdHMvYXRyZXNvdXJjZS5jIGFjcGljYS11bml4Mi0yMDEzMDYyNi1hYXBpdHMvdGVzdHMvYWFwaXRzL2F0cmVzb3VyY2UuYwotLS0tIGFjcGljYS11bml4Mi0yMDEzMDYyNi90ZXN0cy9hYXBpdHMvYXRyZXNvdXJjZS5jCTIwMTMtMDEtMTcgMTI6NDg6MjkuMDAwMDAwMDAwIC0wNzAwCi0rKysgYWNwaWNhLXVuaXgyLTIwMTMwNjI2LWFhcGl0cy90ZXN0cy9hYXBpdHMvYXRyZXNvdXJjZS5jCTIwMTMtMDctMjUgMTM6MjU6NDkuNDIzNTY1OTQ3IC0wNjAwCi1AQCAtMTc0LDcgKzE3NCw3IEBACi0gICAgICAgICBBYXBpRXJyb3JzKys7Ci0gICAgICAgICBwcmludGYgKCJBUEkgRXJyb3I6IEFjcGlHZXRDdXJyZW50UmVzb3VyY2VzKCVzKSByZXR1cm5lZCBMZW5ndGggJWQsIgotICAgICAgICAgICAgICIgZXhwZWN0ZWQgJWRcbiIsCi0tICAgICAgICAgICAgUGF0aG5hbWUsIE91dEJ1ZmZlci5MZW5ndGgsIFJUMDAwMF9ERVYwX0NSU19MRU4pOwotKyAgICAgICAgICAgIFBhdGhuYW1lLCAoaW50KSBPdXRCdWZmZXIuTGVuZ3RoLCBSVDAwMDBfREVWMF9DUlNfTEVOKTsKLSAgICAgICAgIHJldHVybiAoQUVfRVJST1IpOwotICAgICB9Ci0gCi1AQCAtNDkwLDcgKzQ5MCw3IEBACi0gICAgICAgICBBYXBpRXJyb3JzKys7Ci0gICAgICAgICBwcmludGYgKCJBUEkgRXJyb3I6IEFjcGlHZXRDdXJyZW50UmVzb3VyY2VzKCVzKSByZXR1cm5lZCBMZW5ndGggJWQsIgotICAgICAgICAgICAgICIgZXhwZWN0ZWQgJWRcbiIsCi0tICAgICAgICAgICAgUGF0aG5hbWUsIE91dEJ1ZmZlci5MZW5ndGgsIFJUMDAwMF9ERVYwX0NSU19MRU4pOwotKyAgICAgICAgICAgIFBhdGhuYW1lLCAoaW50KSBPdXRCdWZmZXIuTGVuZ3RoLCBSVDAwMDBfREVWMF9DUlNfTEVOKTsKLSAgICAgICAgIHJldHVybiAoQUVfRVJST1IpOwotICAgICB9Ci0gCi1AQCAtNjg5LDcgKzY4OSw3IEBACi0gICAgICAgICBBYXBpRXJyb3JzKys7Ci0gICAgICAgICBwcmludGYgKCJBcGkgRXJyb3I6IFJlc291cmNlLT5MZW5ndGggKCVkKSAhPSAlZFxuIiwKLSAgICAgICAgICAgICBDdXJyZW50UmVzb3VyY2UtPkxlbmd0aCwKLS0gICAgICAgICAgICBBQ1BJX1JPVU5EX1VQX1RPX05BVElWRV9XT1JEIChBQ1BJX1JTX1NJWkUgKEFDUElfUkVTT1VSQ0VfSVJRKSkpOwotKyAgICAgICAgICAgIChpbnQpIChBQ1BJX1JPVU5EX1VQX1RPX05BVElWRV9XT1JEIChBQ1BJX1JTX1NJWkUgKEFDUElfUkVTT1VSQ0VfSVJRKSkpKTsKLSAgICAgfQotIAotICAgICBpZiAoQ3VycmVudFJlc291cmNlLT5EYXRhLklycS5UcmlnZ2VyaW5nICE9IDApIC8qIExldmVsLVRyaWdnZXJlZCAqLwotQEAgLTk4MSw3ICs5ODEsNyBAQAotICAgICAgICAgQWFwaUVycm9ycysrOwotICAgICAgICAgcHJpbnRmICgiQVBJIEVycm9yOiBBY3BpR2V0UG9zc2libGVSZXNvdXJjZXMoJXMpIHJldHVybmVkIExlbmd0aCAlZCwiCi0gICAgICAgICAgICAgIiBleHBlY3RlZCAlZFxuIiwKLS0gICAgICAgICAgICBQYXRobmFtZSwgT3V0QnVmZmVyLkxlbmd0aCwgUlQwMDAwX0RFVjBfQ1JTX0xFTik7Ci0rICAgICAgICAgICAgUGF0aG5hbWUsIChpbnQpIE91dEJ1ZmZlci5MZW5ndGgsIFJUMDAwMF9ERVYwX0NSU19MRU4pOwotICAgICAgICAgcmV0dXJuIChBRV9FUlJPUik7Ci0gICAgIH0KLSAKLUBAIC0xOTIzLDcgKzE5MjMsNyBAQAotICAgICAgICAgQWFwaUVycm9ycysrOwotICAgICAgICAgcHJpbnRmICgiQVBJIEVycm9yOiBBY3BpR2V0SXJxUm91dGluZ1RhYmxlKCVzKSByZXR1cm5lZCBMZW5ndGggJWQsIgotICAgICAgICAgICAgICIgZXhwZWN0ZWQgJWRcbiIsCi0tICAgICAgICAgICAgUGF0aG5hbWUsIE91dEJ1ZmZlci5MZW5ndGgsIDB4QTQ4KTsKLSsgICAgICAgICAgICBQYXRobmFtZSwgKGludCkgT3V0QnVmZmVyLkxlbmd0aCwgMHhBNDgpOwotICAgICAgICAgcmV0dXJuIChBRV9FUlJPUik7Ci0gICAgIH0KLQotZGlmZiAtdXJOIGFjcGljYS11bml4Mi0yMDEzMDYyNi90ZXN0cy9hYXBpdHMvTWFrZWZpbGUgYWNwaWNhLXVuaXgyLTIwMTMwNjI2LWFhcGl0cy90ZXN0cy9hYXBpdHMvTWFrZWZpbGUKLS0tLSBhY3BpY2EtdW5peDItMjAxMzA2MjYvdGVzdHMvYWFwaXRzL01ha2VmaWxlCTIwMTMtMDEtMTcgMTI6NDg6MjkuMDAwMDAwMDAwIC0wNzAwCi0rKysgYWNwaWNhLXVuaXgyLTIwMTMwNjI2LWFhcGl0cy90ZXN0cy9hYXBpdHMvTWFrZWZpbGUJMjAxMy0wNy0yNSAxNToxNzowOS4zMDkyMzY0MjIgLTA2MDAKLUBAIC0xOTQsNyArMTk0LDcgQEAKLSBDRkxBR1MrPSAtV2FsbCAtZyAtRF9MSU5VWCAtRE5ERUJVRyAtRF9DT05TT0xFIC1EQUNQSV9BUElUUyAtREFDUElfRVhFQ19BUFAgLURfTVVMVElfVEhSRUFERUQgLVdzdHJpY3QtcHJvdG90eXBlcyAtSS4uLy4uL3NvdXJjZS9pbmNsdWRlCi0KLSAKLS1hY3BpZXhlYyA6ICQocGF0c3Vic3QgJS5jLCUubywgJChTUkNTKSkKLSskKFBST0cpIDogJChwYXRzdWJzdCAlLmMsJS5vLCAkKFNSQ1MpKQotIAkkKENDKSAkKExERkxBR1MpICQocGF0c3Vic3QgJS5jLCUubywgJChTUkNTKSkgLW8gJChQUk9HKQotIAotIENMRUFORklMRVM9ICQoUFJPRykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2FjcGl0ZXN0cy9hYXBpdHMtbWFrZWZpbGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FjcGljYS9hY3BpdGVzdHMvYWFwaXRzLW1ha2VmaWxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZDllOTk3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2FjcGl0ZXN0cy9hYXBpdHMtbWFrZWZpbGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1Gcm9tOiBBbCBTdG9uZSA8YWhzM0BhaHMzLm5ldD4KLURhdGU6IE1vbiwgNyBBcHIgMjAxNCAxOTowOTozNyArMDAwMAotU3ViamVjdDogW1BBVENIIDEvMl0gRml4dXAgYWFwaXRzIGJ1aWxkCi0KLUZyb20gaHR0cDovL2dpdC5saW5hcm8ub3JnL3Blb3BsZS9hbC5zdG9uZS9hY3BpY2EtdG9vbHMuZ2l0Ci1VcHN0cmVhbS1zdGF0dXM6IFVua25vd24KLQotZGlmZiAtdXJOIGFjcGljYS11bml4Mi0yMDE0MDMyNS90ZXN0cy9hYXBpdHMvTWFrZWZpbGUgYWNwaWNhLXVuaXgyLTIwMTQwMzI1L3Rlc3RzL2FhcGl0cy9NYWtlZmlsZQotLS0tIGFjcGljYS11bml4Mi0yMDE0MDMyNS90ZXN0cy9hYXBpdHMvTWFrZWZpbGUJMjAxNC0wNC0wNSAxNDoyMzoxNC42ODM2MzY3OTQgLTA2MDAKLSsrKyBhY3BpY2EtdW5peDItMjAxNDAzMjUtYWFwaXRzL3Rlc3RzL2FhcGl0cy9NYWtlZmlsZQkyMDE0LTA0LTA1IDE1OjEwOjU3Ljg3OTE4NDU5OCAtMDYwMAotQEAgLTE2LDYgKzE2LDcgQEAKLSAJYXRvc3hmd3JhcC5jIFwKLSAJb3N1bml4eGYuYyBcCi0gCS4uLy4uL3NvdXJjZS9jb21tb24vYWhpZHMuYyBcCi0rCS4uLy4uL3NvdXJjZS9jb21tb24vYWh1dWlkcy5jIFwKLSAJLi4vLi4vc291cmNlL2NvbW1vbi9jbWZzaXplLmMgXAotIAkuLi8uLi9zb3VyY2UvY29tbW9uL2dldG9wdC5jIFwKLSAJLi4vLi4vc291cmNlL2NvbXBvbmVudHMvaGFyZHdhcmUvaHd0aW1lci5jIFwKLUBAIC0xNzQsNiArMTc1LDcgQEAKLSAJLi4vLi4vc291cmNlL2NvbXBvbmVudHMvdXRpbGl0aWVzL3V0ZXhjZXAuYyBcCi0gCS4uLy4uL3NvdXJjZS9jb21wb25lbnRzL3V0aWxpdGllcy91dGZpbGVpby5jIFwKLSAJLi4vLi4vc291cmNlL2NvbXBvbmVudHMvdXRpbGl0aWVzL3V0Z2xvYmFsLmMgXAotKwkuLi8uLi9zb3VyY2UvY29tcG9uZW50cy91dGlsaXRpZXMvdXRoZXguYyBcCi0gCS4uLy4uL3NvdXJjZS9jb21wb25lbnRzL3V0aWxpdGllcy91dGlkcy5jIFwKLSAJLi4vLi4vc291cmNlL2NvbXBvbmVudHMvdXRpbGl0aWVzL3V0aW5pdC5jIFwKLSAJLi4vLi4vc291cmNlL2NvbXBvbmVudHMvdXRpbGl0aWVzL3V0bG9jay5jIFwKLUBAIC0xODksNiArMTkxLDcgQEAKLSAJLi4vLi4vc291cmNlL2NvbXBvbmVudHMvdXRpbGl0aWVzL3V0c3RhdGUuYyBcCi0gCS4uLy4uL3NvdXJjZS9jb21wb25lbnRzL3V0aWxpdGllcy91dHN0cmluZy5jIFwKLSAJLi4vLi4vc291cmNlL2NvbXBvbmVudHMvdXRpbGl0aWVzL3V0dHJhY2suYyBcCi0rCS4uLy4uL3NvdXJjZS9jb21wb25lbnRzL3V0aWxpdGllcy91dHV1aWQuYyBcCi0gCS4uLy4uL3NvdXJjZS9jb21wb25lbnRzL3V0aWxpdGllcy91dHhmYWNlLmMgXAotIAkuLi8uLi9zb3VyY2UvY29tcG9uZW50cy91dGlsaXRpZXMvdXR4ZmVycm9yLmMgXAotIAkuLi8uLi9zb3VyY2UvY29tcG9uZW50cy91dGlsaXRpZXMvdXR4ZmluaXQuYyBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FjcGljYS9hY3BpdGVzdHNfMjAxNDA4MjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FjcGljYS9hY3BpdGVzdHNfMjAxNDA4MjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1YWMxNTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvYWNwaXRlc3RzXzIwMTQwODI4LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotU1VNTUFSWSA9ICJUZXN0IHN1aXRlIHVzZWQgdG8gdmFsaWRhdGUgQUNQSUNBIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5hY3BpY2Eub3JnLyIKLQotTElDRU5TRSA9ICJJbnRlbCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3Rlc3RzL2FhcGl0cy9hdGV4ZWMuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTExNTttZDU9ZTkyYmNkZmNkMDFkMTE3ZDFiZGEzZTgxNGJiMjAzMGEiCi0KLURFUEVORFMgPSAiYmlzb24gZmxleCIKLQotU1JDX1VSSSA9ICJodHRwczovL2FjcGljYS5vcmcvc2l0ZXMvYWNwaWNhL2ZpbGVzL2FjcGl0ZXN0cy11bml4LSR7UFZ9LnRhci5nejtuYW1lPWFjcGl0ZXN0cyBcCi0gICAgICAgICAgIGh0dHBzOi8vYWNwaWNhLm9yZy9zaXRlcy9hY3BpY2EvZmlsZXMvYWNwaWNhLXVuaXgyLSR7UFZ9LnRhci5nejtuYW1lPWFjcGljYSBcCi0gICAgICAgICAgIGZpbGU6Ly9hYXBpdHMtbGludXgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYWFwaXRzLW1ha2VmaWxlLnBhdGNoIFwKLSIKLVNSQ19VUklbYWNwaXRlc3RzLm1kNXN1bV0gPSAiZGI5ZDZmZGFhOGUzZWIxMDFkNzAwZWU1YmE0OTM4ZWQiCi1TUkNfVVJJW2FjcGl0ZXN0cy5zaGEyNTZzdW1dID0gImU1NzZjNzRiZjFiZjFjOWY3MzQ4YmY5NDE5ZTA1YzhhY2ZlY2U3MTA1YWJjZGMwNTJlNjY2NzBjN2FmMmNmMDAiCi1TUkNfVVJJW2FjcGljYS5tZDVzdW1dID0gIjZmMDVmMGQxMDE2NmExYjFmZjYxMDdmM2QxY2RmMWU1IgotU1JDX1VSSVthY3BpY2Euc2hhMjU2c3VtXSA9ICIwMWQ4ODY3NjU2YzViYTQxZGVjMzA3YzQzODNjZTY3NjE5NmFkNDI4MWFjMmM5ZGVjOWY1YmU1ZmFjNmQ4ODhlIgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vYWNwaWNhLm9yZy9kb3dubG9hZHMiCi0KLVMgPSAiJHtXT1JLRElSfS9hY3BpdGVzdHMtdW5peC0ke1BWfSIKLQotRVhUUkFfT0VNQUtFID0gIidDQz0ke0NDfScgJ09QVF9DRkxBR1M9LVdhbGwnIgotCi0jIFRoZSBNYWtlZmlsZXMgZXhwZWN0IGEgc3BlY2lmaWMgbGF5b3V0Ci1kb19jb21waWxlKCkgewotICAgIGNwIC1hZiAke1dPUktESVJ9L2FjcGljYS11bml4Mi0ke1BWfS9zb3VyY2UgJHtTfQotICAgIGNkIHRlc3RzL2FhcGl0cwotICAgIG9lX3J1bm1ha2UKLX0KLQotZG9faW5zdGFsbCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KLSAgICBpbnN0YWxsIC1tMDc1NSB0ZXN0cy9hYXBpdHMvYmluL2FhcGl0cyAke0R9JHtiaW5kaXJ9Ci19Ci0KLUNPTVBBVElCTEVfSE9TVCA9ICIoaS44Nnx4ODZfNjR8YXJtfGFhcmNoNjQpLiotbGludXgiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FjcGljYS9maWxlcy8wMDAxLUxpbnV4LWFkZC1zdXBwb3J0LWZvci1YMzItQUJJLWNvbXBpbGF0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvZmlsZXMvMDAwMS1MaW51eC1hZGQtc3VwcG9ydC1mb3ItWDMyLUFCSS1jb21waWxhdGlvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZjc0MjAwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvZmlsZXMvMDAwMS1MaW51eC1hZGQtc3VwcG9ydC1mb3ItWDMyLUFCSS1jb21waWxhdGlvbi5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9tIGQyMjI0MWVmYzA3MDhjOTc5OWYxN2EyMGVhYmI1MmE0OGQ2ZDZlYTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgorRGF0ZTogVHVlLCAyIEphbiAyMDE4IDEyOjM1OjMyICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIExpbnV4OiBhZGQgc3VwcG9ydCBmb3IgWDMyIEFCSSBjb21waWxhdGlvbgorCitYMzIgZm9sbG93cyBJTFAzMiBtb2RlbC4gQ2hlY2sgZm9yIElMUDMyIGFzIHdlbGwgd2hlbiBjaGVja2luZyBmb3IKK3g4Nl82NCB0byBlbnN1cmUgdGhlIGRlZmluZXMgYXJlIGNvcnJlY3QgZm9yIFgzMiBBQkkuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vYWNwaWNhL2FjcGljYS9wdWxsLzM0OF0KKworU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KKy0tLQorIHNvdXJjZS9pbmNsdWRlL3BsYXRmb3JtL2FjbGludXguaCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NvdXJjZS9pbmNsdWRlL3BsYXRmb3JtL2FjbGludXguaCBiL3NvdXJjZS9pbmNsdWRlL3BsYXRmb3JtL2FjbGludXguaAoraW5kZXggNzViMWQ4Mi4uNmI4ZmY3MyAxMDA2NDQKKy0tLSBhL3NvdXJjZS9pbmNsdWRlL3BsYXRmb3JtL2FjbGludXguaAorKysrIGIvc291cmNlL2luY2x1ZGUvcGxhdGZvcm0vYWNsaW51eC5oCitAQCAtMzE1LDcgKzMxNSw3IEBACisgI2RlZmluZSBBQ1BJX0ZMVVNIX0NQVV9DQUNIRSgpCisgI2RlZmluZSBBQ1BJX0NBU1RfUFRIUkVBRF9UKFB0aHJlYWQpICgoQUNQSV9USFJFQURfSUQpIChQdGhyZWFkKSkKKyAKKy0jaWYgZGVmaW5lZChfX2lhNjRfXykgICAgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fFwKKysjaWYgZGVmaW5lZChfX2lhNjRfXykgICAgfHwgKGRlZmluZWQoX194ODZfNjRfXykgJiYgIWRlZmluZWQoX19JTFAzMl9fKSkgfHxcCisgICAgIGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19QUEM2NF9fKSB8fFwKKyAgICAgZGVmaW5lZChfX3MzOTB4X18pCisgI2RlZmluZSBBQ1BJX01BQ0hJTkVfV0lEVEggICAgICAgICAgNjQKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvZmlsZXMvbWFuaXB1bGF0ZS1mZHMtaW5zdGVhZC1vZi1GSUxFLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvZmlsZXMvbWFuaXB1bGF0ZS1mZHMtaW5zdGVhZC1vZi1GSUxFLnBhdGNoCmluZGV4IDY5NDRiYjcuLjU2MTBlZDkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2ZpbGVzL21hbmlwdWxhdGUtZmRzLWluc3RlYWQtb2YtRklMRS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FjcGljYS9maWxlcy9tYW5pcHVsYXRlLWZkcy1pbnN0ZWFkLW9mLUZJTEUucGF0Y2gKQEAgLTEsNiArMSw2IEBACi1Gcm9tIDMzYTU3OTc5NzM4ZTVhYjEzOTUwZWMxYzBlNzI5OGU0MWVmNTA5MjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQYXRyaWNrIE9obHkgPHBhdHJpY2sub2hseUBpbnRlbC5jb20+Ci1EYXRlOiBUaHUsIDIzIEZlYiAyMDE3IDE4OjEwOjQ3ICswMTAwCitGcm9tIDY5MTcxYzIyZjM4NzJlY2I0YzFhYjI3OTg1ZTkzY2E0NDA4NDU5NWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBGYW4gWGluIDxmYW4ueGluQGpwLmZ1aml0c3UuY29tPgorRGF0ZTogTW9uLCA1IEp1biAyMDE3IDEzOjI2OjM4ICswOTAwCiBTdWJqZWN0OiBbUEFUQ0hdIGFzbGZpbGVzLmM6IG1hbmlwdWxhdGUgZmRzIGluc3RlYWQgb2YgRklMRQogCiBDb3B5aW5nIHdoYXQgc3Rkb3V0L3N0ZGVyciBwb2ludCB0byBpcyBub3QgcG9ydGFibGUgYW5kIGZhaWxzIHdpdGgKQEAgLTEyLDYwICsxMiw2MSBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KIAogU2lnbmVkLW9mZi1ieTogUGF0cmljayBPaGx5IDxwYXRyaWNrLm9obHlAaW50ZWwuY29tPgotLS0tCi0gc291cmNlL2NvbXBpbGVyL2FzbGZpbGVzLmMgfCAyMCArKysrKysrKysrKy0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvc291cmNlL2NvbXBpbGVyL2FzbGZpbGVzLmMgYi9zb3VyY2UvY29tcGlsZXIvYXNsZmlsZXMuYwotaW5kZXggOTQ3ZTQ2NS4uN2EzNTJiNCAxMDA2NDQKLS0tLSBhL3NvdXJjZS9jb21waWxlci9hc2xmaWxlcy5jCi0rKysgYi9zb3VyY2UvY29tcGlsZXIvYXNsZmlsZXMuYwotQEAgLTQ0LDYgKzQ0LDExIEBACitSZWJhc2Ugb24gYWNwaWNhIDIwMTcwMzAzCisKK1NpZ25lZC1vZmYtYnk6IEZhbiBYaW4gPGZhbi54aW5AanAuZnVqaXRzdS5jb20+CistLS0KKyBhY3BpY2EtdW5peDItMjAxNzAzMDMvc291cmNlL2NvbXBpbGVyL2FzbGZpbGVzLmMgfCAxNCArKysrKysrKysrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvYWNwaWNhLXVuaXgyLTIwMTcwMzAzL3NvdXJjZS9jb21waWxlci9hc2xmaWxlcy5jIGIvYWNwaWNhLXVuaXgyLTIwMTcwMzAzL3NvdXJjZS9jb21waWxlci9hc2xmaWxlcy5jCitpbmRleCA4MDkwOTBjLi45Nzg5OGIxIDEwMDY0NAorLS0tIGEvYWNwaWNhLXVuaXgyLTIwMTcwMzAzL3NvdXJjZS9jb21waWxlci9hc2xmaWxlcy5jCisrKysgYi9hY3BpY2EtdW5peDItMjAxNzAzMDMvc291cmNlL2NvbXBpbGVyL2FzbGZpbGVzLmMKK0BAIC00NCw2ICs0NCwxMCBAQAogICNpbmNsdWRlICJhc2xjb21waWxlci5oIgogICNpbmNsdWRlICJhY2FwcHMuaCIKLSAKKyAjaW5jbHVkZSAiZHRjb21waWxlci5oIgogKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICsjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICsjaW5jbHVkZSA8ZmNudGwuaD4KICsjaW5jbHVkZSA8dW5pc3RkLmg+Ci0rCisgCiAgI2RlZmluZSBfQ09NUE9ORU5UICAgICAgICAgIEFDUElfQ09NUElMRVIKICAgICAgICAgIEFDUElfTU9EVUxFX05BTUUgICAgKCJhc2xmaWxlcyIpCi0gCi1AQCAtNTY5LDYgKzU3NCw4IEBAIEZsT3Blbk1pc2NPdXRwdXRGaWxlcyAoCitAQCAtNjA3LDYgKzYxMSw4IEBAIEZsT3Blbk1pc2NPdXRwdXRGaWxlcyAoCiAgCiAgICAgIGlmIChHYmxfRGVidWdGbGFnKQogICAgICB7Ci0rICAgICAgICBpbnQgZmQ7CisrCWludCBmZDsKICsKICAgICAgICAgIEZpbGVuYW1lID0gRmxHZW5lcmF0ZUZpbGVuYW1lIChGaWxlbmFtZVByZWZpeCwgRklMRV9TVUZGSVhfREVCVUcpOwogICAgICAgICAgaWYgKCFGaWxlbmFtZSkKICAgICAgICAgIHsKLUBAIC01ODIsMjAgKzU4OSwxNSBAQCBGbE9wZW5NaXNjT3V0cHV0RmlsZXMgKAotICAgICAgICAgLyogVEJEOiBoaWRlIHRoaXMgYmVoaW5kIGEgRmxSZW9wZW5GaWxlIGZ1bmN0aW9uICovCitAQCAtNjE4LDEwICs2MjQsMTAgQEAgRmxPcGVuTWlzY091dHB1dEZpbGVzICgKKyAgICAgICAgIC8qIE9wZW4gdGhlIGRlYnVnIGZpbGUgYXMgU1RERVJSLCB0ZXh0IG1vZGUgKi8KICAKICAgICAgICAgIEdibF9GaWxlc1tBU0xfRklMRV9ERUJVR19PVVRQVVRdLkZpbGVuYW1lID0gRmlsZW5hbWU7CiAtICAgICAgICBHYmxfRmlsZXNbQVNMX0ZJTEVfREVCVUdfT1VUUFVUXS5IYW5kbGUgPQogLSAgICAgICAgICAgIGZyZW9wZW4gKEZpbGVuYW1lLCAidyt0Iiwgc3RkZXJyKTsKLS0KKyAKIC0gICAgICAgIGlmICghR2JsX0ZpbGVzW0FTTF9GSUxFX0RFQlVHX09VVFBVVF0uSGFuZGxlKQogKyAgICAgICAgZmQgPSBvcGVuKEZpbGVuYW1lLCBPX0NSRUFUfE9fVFJVTkMsIFNfSVJVU1J8U19JV1VTUnxTX0lSR1JQfFNfSVdHUlB8U19JUk9USHxTX0lXT1RIKTsKICsgICAgICAgIGlmIChmZCA8IDAgfHwKICsgICAgICAgICAgICBkdXAyKGZkLCBmaWxlbm8oc3RkZXJyKSkpCiAgICAgICAgICB7Ci0tICAgICAgICAgICAgLyoKLS0gICAgICAgICAgICAgKiBBIHByb2JsZW0gd2l0aCBmcmVvcGVuIGlzIHRoYXQgb24gZXJyb3IsCi0tICAgICAgICAgICAgICogd2Ugbm8gbG9uZ2VyIGhhdmUgc3RkZXJyLgotLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgIEdibF9EZWJ1Z0ZsYWcgPSBGQUxTRTsKLS0gICAgICAgICAgICBtZW1jcHkgKHN0ZGVyciwgc3Rkb3V0LCBzaXplb2YgKEZJTEUpKTsKLSAgICAgICAgICAgICBGbEZpbGVFcnJvciAoQVNMX0ZJTEVfREVCVUdfT1VUUFVULCBBU0xfTVNHX0RFQlVHX0ZJTEVOQU1FKTsKLSAgICAgICAgICAgICBBc2xBYm9ydCAoKTsKKyAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAqIEEgcHJvYmxlbSB3aXRoIGZyZW9wZW4gaXMgdGhhdCBvbiBlcnJvciwgd2Ugbm8gbG9uZ2VyCitAQCAtNjM1LDYgKzY0MSw4IEBAIEZsT3Blbk1pc2NPdXRwdXRGaWxlcyAoCisgICAgICAgICAgICAgZXhpdCAoMSk7CiAgICAgICAgICB9Ci0rICAgICAgICBHYmxfRmlsZXNbQVNMX0ZJTEVfREVCVUdfT1VUUFVUXS5IYW5kbGUgPSBzdGRlcnI7CiAgCisrICAgICAgICBHYmxfRmlsZXNbQVNMX0ZJTEVfREVCVUdfT1VUUFVUXS5IYW5kbGUgPSBzdGRlcnI7CisrCiAgICAgICAgICBBc2xDb21waWxlclNpZ25vbiAoQVNMX0ZJTEVfREVCVUdfT1VUUFVUKTsKICAgICAgICAgIEFzbENvbXBpbGVyRmlsZUhlYWRlciAoQVNMX0ZJTEVfREVCVUdfT1VUUFVUKTsKKyAgICAgfQogLS0gCi0yLjEuNAorMS45LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvZmlsZXMvbm8td2Vycm9yLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvZmlsZXMvbm8td2Vycm9yLnBhdGNoCmluZGV4IDVkMjhmNDcuLmE2ZTdiNTQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2ZpbGVzL25vLXdlcnJvci5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FjcGljYS9maWxlcy9uby13ZXJyb3IucGF0Y2gKQEAgLTEsNyArMSw3IEBACiBEZXNjcmlwdGlvbjogcmVtb3ZlIC1XZXJyb3IgZmxhZwogRm9yd2FyZGVkOiBub3QtbmVlZGVkCiBBdXRob3I6IEZhdGhpIEJvdWRyYSA8ZmF0aGkuYm91ZHJhQGxpbmFyby5vcmc+Ci0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgZ2VuZXJhdGUvdW5peC9pYXNsL01ha2VmaWxlIHwgICAxMiArKysrKystLS0tLS0KICAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hc2NpaWRvYy9hc2NpaWRvY184LjYuOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXNjaWlkb2MvYXNjaWlkb2NfOC42LjkuYmIKaW5kZXggMWNkMTQ1NC4uMzgxNjRkNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hc2NpaWRvYy9hc2NpaWRvY184LjYuOS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2FzY2lpZG9jL2FzY2lpZG9jXzguNi45LmJiCkBAIC0xNCw3ICsxNCw3IEBACiAKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9hc2NpaWRvYy9maWxlcy8iCiAKLWluaGVyaXQgZGlzdHV0aWxzIGF1dG90b29scy1icm9rZW5zZXAKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAogCiBleHBvcnQgREVTVERJUiA9ICIke0R9IgogREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiZG9jYm9vay14bWwtZHRkNC1uYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2F0L2F0LzAwMDEtcmVtb3ZlLWdsaWJjLWFzc3VtcHRpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2F0L2F0LzAwMDEtcmVtb3ZlLWdsaWJjLWFzc3VtcHRpb24ucGF0Y2gKaW5kZXggNTNhZTI4Yi4uN2ZkZWNjNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hdC9hdC8wMDAxLXJlbW92ZS1nbGliYy1hc3N1bXB0aW9uLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXQvYXQvMDAwMS1yZW1vdmUtZ2xpYmMtYXNzdW1wdGlvbi5wYXRjaApAQCAtMSw2ICsxLDYgQEAKLUZyb20gN2Y4MTFkOWM0ZWJjOTQ0NGU2MTNlMjUxYzMxZDZiZjUzN2EyNGRjMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDEzIEFwciAyMDE1IDE2OjM1OjMwIC0wNzAwCitGcm9tIGY0NDY2ODY5MTZlNTAzZGZiOWZiOTI4MjUyZDFiNzJhMDc1NzNiMjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAxOCBKdWwgMjAxNyAwMzo0Mjo1NiAtMDQwMAogU3ViamVjdDogW1BBVENIXSByZW1vdmUgZ2xpYmMgYXNzdW1wdGlvbgogCiBnbGliYyB0aW1lLmggaGVhZGVyIGhhcyBhbiB1bmRvY3VtZW50ZWQgX19pc2xlYXAgbWFjcm8KQEAgLTksOSArOSwxMSBAQAogb24gYW55IG90aGVyIGxpYmMsIHN0b3AgdXNpbmcgaXQgYW5kIGp1c3QgZGVmaW5lIHRoZSBtYWNybyBpbgogbG9jYWxseSAgaW5zdGVhZC4KIAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbIGh0dHBzOi8vbGlzdHMuZGViaWFuLm9yZy9kZWJpYW4tYWNjZXNzaWJpbGl0eS8yMDE3LzA3L21zZzAwMDQ0Lmh0bWwgXQogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitTaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgogLS0tCiAgcGFyc2V0aW1lLnkgfCAxMSArKysrKysrLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCkBAIC01Myw1ICs1NSw1IEBACiAgCQkJewogIAkJCSAgICB5eWVycm9yKCJFcnJvciBpbiBkYXkgb2YgbW9udGgiKTsKIC0tIAotMi4xLjQKKzIuOC4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYXQvYXRfMy4xLjIwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hdC9hdF8zLjEuMjAuYmIKaW5kZXggOTA0ODk5Zi4uOWI1MzdlZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hdC9hdF8zLjEuMjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hdC9hdF8zLjEuMjAuYmIKQEAgLTEsNCArMSw1IEBACiBTVU1NQVJZID0gIkRlbGF5ZWQgam9iIGV4ZWN1dGlvbiBhbmQgYmF0Y2ggcHJvY2Vzc2luZyIKK0hPTUVQQUdFID0gImh0dHA6Ly9ibG9nLmNhbGhhcml6LmNvbS8iCiBERVNDUklQVElPTiA9ICJBdCBhbGxvd3MgZm9yIGNvbW1hbmRzIHRvIGJlIHJ1biBhdCBhIHBhcnRpY3VsYXIgdGltZS4gIEJhdGNoIHdpbGwgZXhlY3V0ZSBjb21tYW5kcyB3aGVuIFwKIHRoZSBzeXN0ZW0gbG9hZCBsZXZlbHMgZHJvcCB0byBhIHBhcnRpY3VsYXIgbGV2ZWwuIgogU0VDVElPTiA9ICJiYXNlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2guaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2guaW5jCmluZGV4IDNlOWM2NjIuLmY0ZTFmN2EgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaC5pbmMKQEAgLTI1LDkgKzI1LDE0IEBACiBSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmVzZGsgPSAiIgogUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UiCiAKK0RFUEVORFNfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGdsaWJjLWxvY2FsZSIKK1JERVBFTkRTXyR7UE59LXB0ZXN0X2FwcGVuZF9saWJjLWdsaWJjID0gIiBsb2NhbGUtYmFzZS1mci1mciBsb2NhbGUtYmFzZS1kZS1kZSIKKwogVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfS1wdGVzdCIKIFVTRVJBRERfUEFSQU1fJHtQTn0tcHRlc3QgPSAiLS1jcmVhdGUtaG9tZSAtLXVzZXItZ3JvdXAgdGVzdCIKIAorQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImhlYWRlcnNkaXI9JHtpbmNsdWRlZGlyfS8ke1BOfSIKKwogZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewogCWlmIFsgISAtZSAke1N9L2FjaW5jbHVkZS5tNCBdOyB0aGVuCiAJCWNhdCAke1N9L2FjbG9jYWwubTQgPiAke1N9L2FjaW5jbHVkZS5tNApAQCAtNDYsMTYgKzUxLDMyIEBACiAJZmkKIH0KIGRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCAoKSB7Ci0JIyBDbGVhbiBob3N0IHBhdGggaW4gYmFzaGJ1ZworCSMgQ2xlYW4gYnVpbGRob3N0IHJlZmVyZW5jZXMgaW4gYmFzaGJ1ZwogCXNlZCAtaSAtZSAicywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnIiBcCi0JCS1lICJzLC1JJHtXT1JLRElSfS9cUyogLCxnIiAke0R9JHtiaW5kaXJ9L2Jhc2hidWcKKwkJLWUgInMsLUkke1dPUktESVJ9L1xTKiAsLGciIFwKKwkJLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAorCQkke0R9JHtiaW5kaXJ9L2Jhc2hidWcKKworCSMgQ2xlYW4gYnVpbGRob3N0IHJlZmVyZW5jZXMgaW4gYmFzaC5wYworCXNlZCAtaSAtZSAicywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnIiBcCisJICAgICAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9iYXNoLnBjCisKKwkjIENsZWFuIGJ1aWxkaG9zdCByZWZlcmVuY2VzIGluIE1ha2VmaWxlLmluYworCXNlZCAtaSAtZSAicywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnIiBcCisJCS1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKKwkJLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKKwkJLWUgJ3M6JHtCQVNFX1dPUktESVJ9LyR7TVVMVElNQUNIX1RBUkdFVF9TWVN9OjpnJyBcCisJCSR7RH0ke2xpYmRpcn0vYmFzaC9NYWtlZmlsZS5pbmMKIH0KIAogZG9faW5zdGFsbF9wdGVzdCAoKSB7CiAJbWFrZSBJTlNUQUxMX1RFU1RfRElSPSR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzIGluc3RhbGwtdGVzdAogCWNwICR7Qn0vTWFrZWZpbGUgJHtEfSR7UFRFU1RfUEFUSH0KICAgICAgICAgc2VkIC1pIC1lICdzL15NYWtlZmlsZS9fTWFrZWZpbGUvJyAtZSAicywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnIiBcCi0JICAgIC1lICJzLCR7U30sLGciIC1lICJzLCR7Qn0sLGciIC1lICJzLCR7U1RBR0lOR19ESVJfTkFUSVZFfSwsZyIgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKKwkgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAorCSAgICAtZSAicywke1N9LCxnIiAtZSAicywke0J9LCxnIiAtZSAicywke1NUQUdJTkdfRElSX05BVElWRX0sLGciIFwKKwkgICAgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKKwkgICAgICR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlCiB9CiAKIHBrZ19wb3N0aW5zdF8ke1BOfSAoKSB7CkBAIC02OSwzICs5MCw5IEBACiBQQUNLQUdFUyArPSAiJHtQTn0tYmFzaGJ1ZyIKIEZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS9iYXNoICR7YmFzZV9iaW5kaXJ9L2Jhc2guYmFzaCIKIEZJTEVTXyR7UE59LWJhc2hidWcgPSAiJHtiaW5kaXJ9L2Jhc2hidWciCisKK1BBQ0tBR0VfQkVGT1JFX1BOICs9ICIke1BOfS1sb2FkYWJsZSIKK1JERVBFTkRTXyR7UE59LWxvYWRhYmxlICs9ICIke1BOfSIKK0ZJTEVTXyR7UE59LWxvYWRhYmxlICs9ICIke2xpYmRpcn0vYmFzaC8qIgorCitSUFJPVklERVNfJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAndXNybWVyZ2UnLCAnL2Jpbi9zaCAvYmluL2Jhc2gnLCAnJywgZCl9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2gvQ1ZFLTIwMTYtOTQwMS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoL0NWRS0yMDE2LTk0MDEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI4YzkyNzcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2gvQ1ZFLTIwMTYtOTQwMS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLUZyb20gZmE3NDE3NzFlZDQ3YjMwNTQ3YmU2M2I1YjVkYmZiNTE5NzdhY2ExMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENoZXQgUmFtZXkgPGNoZXQucmFtZXlAY2FzZS5lZHU+Ci1EYXRlOiBGcmksIDIwIEphbiAyMDE3IDExOjQ3OjMxIC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEJhc2gtNC40IHBhdGNoIDYKLQotQnVnLVJlZmVyZW5jZS1VUkw6Ci1odHRwczovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2J1Zy1iYXNoLzIwMTYtMTEvbXNnMDAxMTYuaHRtbAotCi1SZWZlcmVuY2UgdG8gdXBzdHJlYW0gcGF0Y2g6Ci1odHRwczovL2Z0cC5nbnUub3JnL3B1Yi9nbnUvYmFzaC9iYXNoLTQuNC1wYXRjaGVzL2Jhc2g0NC0wMDYKLQotQnVnLURlc2NyaXB0aW9uOgotT3V0LW9mLXJhbmdlIG5lZ2F0aXZlIG9mZnNldHMgdG8gcG9wZCBjYW4gY2F1c2UgdGhlIHNoZWxsIHRvIGNyYXNoIGF0dGVtcHRpbmcKLXRvIGZyZWUgYW4gaW52YWxpZCBtZW1vcnkgYmxvY2suCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTYtOTQwMQotU2lnbmVkLW9mZi1ieTogTGkgWmhvdSA8bGkuemhvdUB3aW5kcml2ZXIuY29tPgotLS0tCi0gYnVpbHRpbnMvcHVzaGQuZGVmIHwgNyArKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvYnVpbHRpbnMvcHVzaGQuZGVmIGIvYnVpbHRpbnMvcHVzaGQuZGVmCi1pbmRleCA5YzY1NDhmLi44YTEzYmFlIDEwMDY0NAotLS0tIGEvYnVpbHRpbnMvcHVzaGQuZGVmCi0rKysgYi9idWlsdGlucy9wdXNoZC5kZWYKLUBAIC0zNTksNyArMzU5LDcgQEAgcG9wZF9idWlsdGluIChsaXN0KQotIAlicmVhazsKLSAgICAgfQotIAotLSAgaWYgKHdoaWNoID4gZGlyZWN0b3J5X2xpc3Rfb2Zmc2V0IHx8IChkaXJlY3RvcnlfbGlzdF9vZmZzZXQgPT0gMCAmJiB3aGljaCA9PSAwKSkKLSsgIGlmICh3aGljaCA+IGRpcmVjdG9yeV9saXN0X29mZnNldCB8fCAod2hpY2ggPCAtZGlyZWN0b3J5X2xpc3Rfb2Zmc2V0KSB8fCAoZGlyZWN0b3J5X2xpc3Rfb2Zmc2V0ID09IDAgJiYgd2hpY2ggPT0gMCkpCi0gICAgIHsKLSAgICAgICBwdXNoZF9lcnJvciAoZGlyZWN0b3J5X2xpc3Rfb2Zmc2V0LCB3aGljaF93b3JkID8gd2hpY2hfd29yZCA6ICIiKTsKLSAgICAgICByZXR1cm4gKEVYRUNVVElPTl9GQUlMVVJFKTsKLUBAIC0zODEsNiArMzgxLDExIEBAIHBvcGRfYnVpbHRpbiAobGlzdCkKLSAJIHJlbW92ZSB0aGF0IGRpcmVjdG9yeSBmcm9tIHRoZSBsaXN0IGFuZCBzaGlmdCB0aGUgcmVtYWluZGVyCi0gCSBvZiB0aGUgbGlzdCBpbnRvIHBsYWNlLiAqLwotICAgICAgIGkgPSAoZGlyZWN0aW9uID09ICcrJykgPyBkaXJlY3RvcnlfbGlzdF9vZmZzZXQgLSB3aGljaCA6IHdoaWNoOwotKyAgICAgIGlmIChpIDwgMCB8fCBpID4gZGlyZWN0b3J5X2xpc3Rfb2Zmc2V0KQotKwl7Ci0rCSAgcHVzaGRfZXJyb3IgKGRpcmVjdG9yeV9saXN0X29mZnNldCwgd2hpY2hfd29yZCA/IHdoaWNoX3dvcmQgOiAiIik7Ci0rCSAgcmV0dXJuIChFWEVDVVRJT05fRkFJTFVSRSk7Ci0rCX0KLSAgICAgICBmcmVlIChwdXNoZF9kaXJlY3RvcnlfbGlzdFtpXSk7Ci0gICAgICAgZGlyZWN0b3J5X2xpc3Rfb2Zmc2V0LS07Ci0gCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoL2ZpeC1ydW4tY29wcm9jLXJ1bi1oZXJlZG9jLXJ1bi1leGVjc2NyaXB0LXJ1bi10ZXN0LWYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaC9maXgtcnVuLWNvcHJvYy1ydW4taGVyZWRvYy1ydW4tZXhlY3NjcmlwdC1ydW4tdGVzdC1mLnBhdGNoCmluZGV4IDdmMDk5YWUuLjlhYzI0NjEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoL2ZpeC1ydW4tY29wcm9jLXJ1bi1oZXJlZG9jLXJ1bi1leGVjc2NyaXB0LXJ1bi10ZXN0LWYucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2gvZml4LXJ1bi1jb3Byb2MtcnVuLWhlcmVkb2MtcnVuLWV4ZWNzY3JpcHQtcnVuLXRlc3QtZi5wYXRjaApAQCAtMSwxNSArMSw3IEBACi1Gcm9tIDJjMzBkZmY4ZWE4YjE3YWQ1YmE5ODgxZTM1YWQxZWJhOWM1MTVmMTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGQxY2Q0YzMxZWEwZWQ3NDA2YTNhZDRiZGFhMjExZjU4MTA2M2Y2NTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUaHUsIDI2IE5vdiAyMDE1IDIyOjA5OjA3IC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGZpeCBydW4tY29wcm9jL3J1bi1oZXJlZG9jL3J1bi1leGVjc2NyaXB0L3J1bi10ZXN0LyBmYWlsZWQKLQotRkFJTDogcnVuLWNvcHJvYwotdXBkYXRlIHRlc3QgY2FzZTp0ZXN0cy9jb3Byb2MucmlnaHQsIHRlc3RzL2NvcHJvYy50ZXN0cwotZ2l0Oi8vZ2l0LnN2LmdudS5vcmcvYmFzaC5naXQgYmFzaC00LjQtdGVzdGluZwotCi1GQUlMOiBydW4taGVyZWRvYwotdXBkYXRlIHRlc3QgY2FzZTogdGVzdHMvaGVyZWRvYy5yaWdodCB0ZXN0cy9oZXJlZG9jMy5zdWIKLWdpdDovL2dpdC5zdi5nbnUub3JnL2Jhc2guZ2l0IGJhc2gtNC40LXRlc3RpbmcKK0RhdGU6IFR1ZSwgMTUgQXVnIDIwMTcgMTA6MjE6MjEgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIGZpeCBydW4tZXhlY3NjcmlwdC9ydW4tdGVzdC8gZmFpbGVkCiAKIEZBSUw6IHJ1bi1leGVjc2NyaXB0OgogdGhlIHRlc3Qgc3VpdGUgc2hvdWxkIG5vdCBiZSBydW4gYXMgcm9vdApAQCAtMjEsMTQ5ICsxMywzMyBAQAogCiBTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CiAtLS0KLSB0ZXN0cy9jb3Byb2MucmlnaHQgICB8ICA1ICstLS0tCi0gdGVzdHMvY29wcm9jLnRlc3RzICAgfCAzMCArKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0KLSB0ZXN0cy9oZXJlZG9jLnJpZ2h0ICB8ICA1ICsrLS0tCi0gdGVzdHMvaGVyZWRvYzMuc3ViICAgfCAgMyArKy0KLSB0ZXN0cy9ydW4tZXhlY3NjcmlwdCB8ICAzICsrLQotIHRlc3RzL3J1bi10ZXN0ICAgICAgIHwgIDMgKystCi0gNiBmaWxlcyBjaGFuZ2VkLCAzNCBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKKyB0ZXN0cy9ydW4tZXhlY3NjcmlwdCB8IDMgKystCisgdGVzdHMvcnVuLXRlc3QgICAgICAgfCAzICsrLQorIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvdGVzdHMvY29wcm9jLnJpZ2h0IGIvdGVzdHMvY29wcm9jLnJpZ2h0Ci1pbmRleCA2ZDlkZWFhLi45NGIwMDFjIDEwMDY0NAotLS0tIGEvdGVzdHMvY29wcm9jLnJpZ2h0Ci0rKysgYi90ZXN0cy9jb3Byb2MucmlnaHQKLUBAIC0xLDExICsxLDggQEAKLS04NDU3NQotIDYzIDYwCi0gYSBiIGMKLS04NDU3NwotIDYzIDYwCi0gZmxvcAotLS4vY29wcm9jLnRlc3RzOiBsaW5lIDIyOiA4NDU3NyBUZXJtaW5hdGVkICAgICAgICAgICAgICBjb3Byb2MgUkVGTEVDVCB7IGNhdCAtOyB9Ci0tODQ1NzkKLStjb3Byb2MudGVzdHM6IFJFRkxFQ1Q6IHN0YXR1cyAxNDMKLSA2MyA2MAotIEZPTwotIDYzIDYwCi1kaWZmIC0tZ2l0IGEvdGVzdHMvY29wcm9jLnRlc3RzIGIvdGVzdHMvY29wcm9jLnRlc3RzCi1pbmRleCA4YmUzNTYzLi5kMzQ3ZWI3IDEwMDY0NAotLS0tIGEvdGVzdHMvY29wcm9jLnRlc3RzCi0rKysgYi90ZXN0cy9jb3Byb2MudGVzdHMKLUBAIC0xLDYgKzEsMTMgQEAKLSs6ICR7VE1QRElSOj0vdG1wfQotK1RNUE9VVD0ke1RNUERJUn0vY29wcm9jLXdhaXQtJEJBU0hQSUQKLSsKLSBjb3Byb2MgeyBlY2hvIGEgYiBjOyBzbGVlcCAyOyB9Ci0gCi0tZWNobyAkQ09QUk9DX1BJRAotK2Nhc2UgJENPUFJPQ19QSUQgaW4KLStbMC05XSopCTs7Ci0rKikJZWNobyBDT1BST0NfUElEIG5vdCBpbnRlZ2VyIDs7Ci0rZXNhYwotKwotIGVjaG8gJHtDT1BST0NbQF19Ci0gCi0gcmVhZCBMSU5FIDwmJHtDT1BST0NbMF19Ci1AQCAtMTAsNyArMTcsMTEgQEAgd2FpdCAkQ09QUk9DX1BJRAotIAotIGNvcHJvYyBSRUZMRUNUIHsgY2F0IC0gOyB9Ci0gCi0tZWNobyAkUkVGTEVDVF9QSUQKLStjYXNlICRSRUZMRUNUX1BJRCBpbgotK1swLTldKikJOzsKLSsqKQllY2hvIFJFRkxFQ1RfUElEIG5vdCBpbnRlZ2VyIDs7Ci0rZXNhYwotKwotIGVjaG8gJHtSRUZMRUNUW0BdfQotIAotIGVjaG8gZmxvcCA+JiR7UkVGTEVDVFsxXX0KLUBAIC0xOCwxMiArMjksMjEgQEAgcmVhZCBMSU5FIDwmJHtSRUZMRUNUWzBdfQotIAotIGVjaG8gJExJTkUKLSAKLS1raWxsICRSRUZMRUNUX1BJRAotLXdhaXQgJFJFRkxFQ1RfUElECi0reyBzbGVlcCAxOyBraWxsICRSRUZMRUNUX1BJRDsgfSAmCi0rd2FpdCAkUkVGTEVDVF9QSUQgPiRUTVBPVVQgMj4mMSB8fCBlY2hvICJjb3Byb2MudGVzdHM6IFJFRkxFQ1Q6IHN0YXR1cyAkPyIKLStncmVwICdUZXJtaW5hdGVkLipjb3Byb2MuKlJFRkxFQ1QnIDwgJFRNUE9VVCA+L2Rldi9udWxsIDI+JjEgfHwgewotKwllY2hvICJjb3Byb2MudGVzdHM6IHdhaXQgZm9yIFJFRkxFQ1QgZmFpbGVkIiA+JjIKLSt9Ci0rcm0gLWYgJFRNUE9VVAotK2V4ZWMgMj4mMQotIAotIGNvcHJvYyB4Y2FzZSAtbiAtdQotIAotLWVjaG8gJENPUFJPQ19QSUQKLStjYXNlICRDT1BST0NfUElEIGluCi0rWzAtOV0qKQk7OwotKyopCWVjaG8gQ09QUk9DX1BJRCBub3QgaW50ZWdlciA7OwotK2VzYWMKLSsKLSBlY2hvICR7Q09QUk9DW0BdfQotIAotIGVjaG8gZm9vID4mJHtDT1BST0NbMV19Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvaGVyZWRvYy5yaWdodCBiL3Rlc3RzL2hlcmVkb2MucmlnaHQKLWluZGV4IDZhYmFhMWYuLjhkZjkxYzUgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9oZXJlZG9jLnJpZ2h0Ci0rKysgYi90ZXN0cy9oZXJlZG9jLnJpZ2h0Ci1AQCAtNzYsMTUgKzc2LDE0IEBAIEVOREVORAotIGVuZCBFTkRFTkQKLSBoZWxsbwotIGVuZCBoZWxsbwotLXggc3RhciB4Ci0gZW5kIHgqeAotIGhlbGxvRU5ECi0gZW5kIGhlbGxvRU5ECi0gaGVsbG8KLSBcRU5ECi0gZW5kIGhlbGxvPE5MPlxFTkQKLS0uL2hlcmVkb2MzLnN1YjogbGluZSA3NDogd2FybmluZzogaGVyZS1kb2N1bWVudCBhdCBsaW5lIDcyIGRlbGltaXRlZCBieSBlbmQtb2YtZmlsZSAod2FudGVkIGBFT0YnKQotLS4vaGVyZWRvYzMuc3ViOiBsaW5lIDc1OiBzeW50YXggZXJyb3I6IHVuZXhwZWN0ZWQgZW5kIG9mIGZpbGUKLSsuL2hlcmVkb2MzLnN1YjogbGluZSA3NTogd2FybmluZzogaGVyZS1kb2N1bWVudCBhdCBsaW5lIDczIGRlbGltaXRlZCBieSBlbmQtb2YtZmlsZSAod2FudGVkIGBFT0YnKQotKy4vaGVyZWRvYzMuc3ViOiBsaW5lIDc2OiBzeW50YXggZXJyb3I6IHVuZXhwZWN0ZWQgZW5kIG9mIGZpbGUKLSBjb21zdWIgaGVyZS1zdHJpbmcKLSAuL2hlcmVkb2MudGVzdHM6IGxpbmUgMTA1OiB3YXJuaW5nOiBoZXJlLWRvY3VtZW50IGF0IGxpbmUgMTAzIGRlbGltaXRlZCBieSBlbmQtb2YtZmlsZSAod2FudGVkIGBFT0YnKQotIGhpCi1kaWZmIC0tZ2l0IGEvdGVzdHMvaGVyZWRvYzMuc3ViIGIvdGVzdHMvaGVyZWRvYzMuc3ViCi1pbmRleCA3M2ExMTFlLi45ZDNkODQ2IDEwMDY0NAotLS0tIGEvdGVzdHMvaGVyZWRvYzMuc3ViCi0rKysgYi90ZXN0cy9oZXJlZG9jMy5zdWIKLUBAIC00OSw5ICs0OSwxMCBAQCBoZWxsbwotICAgICBFTkQgICAgCi0gZWNobyBlbmQgaGVsbG8KLSAKLS1jYXQgPDx4KnggJiB0b3VjaCAneCp4JwotK2NhdCA8PHgqeCA+L2Rldi9udWxsICYgdG91Y2ggJ3gqeCcKLSB4IHN0YXIgeAotIHgqeAotK3dhaXQgJCEKLSBlY2hvIGVuZCAneCp4JwotIHJtICd4KngnCi0gCiBkaWZmIC0tZ2l0IGEvdGVzdHMvcnVuLWV4ZWNzY3JpcHQgYi90ZXN0cy9ydW4tZXhlY3NjcmlwdAotaW5kZXggZjk3YWIyMS4uMGQwMGExYiAxMDA2NDQKK2luZGV4IGRlNzg2NDQuLjM4Mzk3YzEgMTAwNjQ0CiAtLS0gYS90ZXN0cy9ydW4tZXhlY3NjcmlwdAogKysrIGIvdGVzdHMvcnVuLWV4ZWNzY3JpcHQKIEBAIC01LDUgKzUsNiBAQCBlY2hvICJ3YXJuaW5nOiBcYC90bXAvYmFzaC1ub3R0aGVyZScgbm90IGJlaW5nIGZvdW5kIG9yIFxgLycgYmVpbmcgYSBkaXJlY3RvcnkiCiAgZWNobyAid2FybmluZzogcHJvZHVjZSBkaWZmIG91dHB1dCwgcGxlYXNlIGRvIG5vdCBjb25zaWRlciB0aGlzIGEgdGVzdCBmYWlsdXJlIiA+JjIKICBlY2hvICJ3YXJuaW5nOiBpZiBkaWZmIG91dHB1dCBkaWZmZXJpbmcgb25seSBpbiB0aGUgbG9jYXRpb24gb2YgdGhlIGJhc2giID4mMgogIGVjaG8gIndhcm5pbmc6IGJpbmFyeSBhcHBlYXJzLCBwbGVhc2UgZG8gbm90IGNvbnNpZGVyIHRoaXMgYSB0ZXN0IGZhaWx1cmUiID4mMgotLSR7VEhJU19TSH0gLi9leGVjc2NyaXB0ID4gL3RtcC94eCAyPiYxCi0rcm0gLWYgL3RtcC94eAotK3N1IC1jICIke1RISVNfU0h9IC4vZXhlY3NjcmlwdCA+IC90bXAveHggMj4mMSIgdGVzdAotIGRpZmYgL3RtcC94eCBleGVjLnJpZ2h0ICYmIHJtIC1mIC90bXAveHgKKy0ke1RISVNfU0h9IC4vZXhlY3NjcmlwdCA+ICR7QkFTSF9UU1RPVVR9IDI+JjEKKytybSAtZiAke0JBU0hfVFNUT1VUfQorK3N1IC1jICIke1RISVNfU0h9IC4vZXhlY3NjcmlwdCA+ICR7QkFTSF9UU1RPVVR9IDI+JjEiIHRlc3QKKyBkaWZmICR7QkFTSF9UU1RPVVR9IGV4ZWMucmlnaHQgJiYgcm0gLWYgJHtCQVNIX1RTVE9VVH0KIGRpZmYgLS1naXQgYS90ZXN0cy9ydW4tdGVzdCBiL3Rlc3RzL3J1bi10ZXN0Ci1pbmRleCBiMjQ4MmMzLi4yZThmMDQ5IDEwMDY0NAoraW5kZXggZDY4NzkxYy4uZDYzMTdkMiAxMDA2NDQKIC0tLSBhL3Rlc3RzL3J1bi10ZXN0CiArKysgYi90ZXN0cy9ydW4tdGVzdAogQEAgLTEsNCArMSw1IEBACiAgdW5zZXQgR1JPVVBTIFVJRCAyPi9kZXYvbnVsbAogIAotLSR7VEhJU19TSH0gLi90ZXN0LnRlc3RzID4vdG1wL3h4IDI+JjEKLStybSAtZiAvdG1wL3h4Ci0rc3UgLWMgIiR7VEhJU19TSH0gLi90ZXN0LnRlc3RzID4vdG1wL3h4IDI+JjEiIHRlc3QKLSBkaWZmIC90bXAveHggdGVzdC5yaWdodCAmJiBybSAtZiAvdG1wL3h4CistJHtUSElTX1NIfSAuL3Rlc3QudGVzdHMgPiR7QkFTSF9UU1RPVVR9IDI+JjEKKytybSAtZiAke0JBU0hfVFNUT1VUfQorK3N1IC1jICIke1RISVNfU0h9IC4vdGVzdC50ZXN0cyA+ICR7QkFTSF9UU1RPVVR9IDI+JjEiIHRlc3QKKyBkaWZmICR7QkFTSF9UU1RPVVR9IHRlc3QucmlnaHQgJiYgcm0gLWYgJHtCQVNIX1RTVE9VVH0KIC0tIAotMS45LjEKKzEuOC4zLjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2gvZml4LXJ1bi1pbnRsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2gvZml4LXJ1bi1pbnRsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNGEzNDA5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoL2ZpeC1ydW4taW50bC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExMCArMCwwIEBACi1Gcm9tIGEwMGQzMTYxZmQ3YjZhNjk4YmRkMmVkNWYwYWM1ZmFhYzU4MGVlMmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCAzIEF1ZyAyMDE2IDIzOjEzOjAwIC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGZpeCBydW4taW50bCBmYWlsZWQKLQotMS4gRmlsdGVyIGV4dHJhIHdoaXRlIHNwYWNlIG9mIGludGwucmlnaHQKLQotICAgRHVlIHRvIHRoZSBleHRyYSB3aGl0ZSBzcGFjZSBvZiBpbnRsLnJpZ2h0LCB3aGVuIHRoZSByZXN1bHQgb2YKLSAgIHN1Yi10ZXN0IHVuaWNvZGUyLnN1YiBvZiBpbnRsLnRlc3RzIGNvbXBhcmVkIHRvIGl0LCB0aGUgdGVzdAotICAgZmFpbGVkLgotCi0gICBTbyB3ZSBuZWVkIHRvIGZpbHRlciB0aGUgZXh0cmEgd2hpdGUgc3BhY2Ugb2YgaW50bC5yaWdodC4KLQotICAgSW1wb3J0IHRoaXMgcGF0Y2ggZm9yIGludGwucmlnaHQgZnJvbSBiYXNoIGRldmVsIGJyYW5jaDoKLQotCWh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9jZ2l0L2Jhc2guZ2l0L2xvZy8/aD1kZXZlbAotCi0gICBjb21taXQgaXM6Ci0KLQk4NWVjMDc3OGY5ZDc3OGUxODIwZmI4YzBlM2U5OTZmMmQxMTAzYjQ1Ci0KLTIuIENoYW5nZSBpbnRsLnJpZ2h0IGNvcnJlc3BvbmQgdG8gdGhlIHVuaWNvZGUzLnN1YidzIG91dHB1dAotCi0gICBJbiBzdWItdGVzdCB1bmljb2RlMy5zdWIgb2YgaW50bC50ZXN0cywgdGhlIHBheWxvYWQgdmFsdWUgaXM6Ci0KLQlwYXlsb2FkPSQnXDA2NVwyNDdcMTAwXDA2M1wyMzFcMDUzXDMwNlwxMjNcMDcwXDIzN1wyNDJcMzUyXDI2MycKLQotICAgSXQgdXNlZCBxdW90ZWQgc3RyaW5nIGV4cGFuc2lvbihlc2NhcGVkIG9jdGFsKSB0byBhc3NpZ24gQVNDSUkKLSAgIGNoYXJhY3RlcnMgdG8gdmFyaWFibGVzLiBTbyB3aGVuIHRoZSB0ZXN0IHJ1biB0aGUgZm9sbG93aW5nOgotCi0JcHJpbnRmICVxICIkcGF5bG9hZCIKLQotICAgSXQgcHJvZHVjZWQ6Ci0KLQkkJzVcMjQ3QDNcMjMxK1wzMDZTOFwyMzdcMjQyXDM1MlwyNjMnCi0KLSAgIFdoZW4gY29tcGFyZWQgdG8gdGhlIGludGwucmlnaHQoY29udGFpbiB0aGUgY29udmVydGVkIGNoYXJhY3RlciksIGl0IGZhaWxlZC4KLQotICAgSW1wb3J0IHBhcnRzIG9mIHBhdGNoIGZvciBpbnRsLnJpZ2h0IGZyb20gYmFzaCBkZXZlbCBicmFuY2g6Ci0KLQlodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvY2dpdC9iYXNoLmdpdC9sb2cvP2g9ZGV2ZWwKLQotICAgY29tbWl0IGlzOgotCi0JNzRiOGNiYjQxMzk4YjQ0NTNkOGJhMDRkMGNkZDFiMjVmOWRjYjllMwotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+Ci0tLS0KLSB0ZXN0cy9pbnRsLnJpZ2h0IHwgMzAgKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdHMvaW50bC5yaWdodCBiL3Rlc3RzL2ludGwucmlnaHQKLWluZGV4IGFjZjEwOGEuLjFlZmRmYmUgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9pbnRsLnJpZ2h0Ci0rKysgYi90ZXN0cy9pbnRsLnJpZ2h0Ci1AQCAtMTgsMzQgKzE4LDM0IEBAIGHDqWIKLSAxLjAwMDAKLSAxLDAwMDAKLSBQYXNzZWQgYWxsIDEzNzggVW5pY29kZSB0ZXN0cwotLTAwMDAwMDAgICAzMDMgMjc3IDAxMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSswMDAwMDAwIDMwMyAyNzcgMDEyCi0gMDAwMDAwMwotLTAwMDAwMDAgICAzMDMgMjc3IDAxMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSswMDAwMDAwIDMwMyAyNzcgMDEyCi0gMDAwMDAwMwotLTAwMDAwMDAgICAzMDMgMjc3IDAxMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSswMDAwMDAwIDMwMyAyNzcgMDEyCi0gMDAwMDAwMwotLTAwMDAwMDAgICAzMDMgMjc3IDAxMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSswMDAwMDAwIDMwMyAyNzcgMDEyCi0gMDAwMDAwMwotLTAwMDAwMDAgICAzNTcgMjc3IDI3NyAwMTIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSswMDAwMDAwIDM1NyAyNzcgMjc3IDAxMgotIDAwMDAwMDQKLS0wMDAwMDAwICAgMzU3IDI3NyAyNzcgMDEyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0rMDAwMDAwMCAzNTcgMjc3IDI3NyAwMTIKLSAwMDAwMDA0Ci0tMDAwMDAwMCAgIDAxMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotKzAwMDAwMDAgMDEyCi0gMDAwMDAwMQotLTAwMDAwMDAgICAwMTIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSswMDAwMDAwIDAxMgotIDAwMDAwMDEKLS0wMDAwMDAwICAgMDEyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0rMDAwMDAwMCAwMTIKLSAwMDAwMDAxCi0tMDAwMDAwMCAgIDAxMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotKzAwMDAwMDAgMDEyCi0gMDAwMDAwMQotLTAwMDAwMDAgICAzMDMgMjc3IDAxMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSswMDAwMDAwIDMwMyAyNzcgMDEyCi0gMDAwMDAwMwotLTAwMDAwMDAgICAzMDMgMjc3IDAxMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSswMDAwMDAwIDMwMyAyNzcgMDEyCi0gMDAwMDAwMwotLTAwMDAwMDAgICAzMDMgMjc3IDAxMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSswMDAwMDAwIDMwMyAyNzcgMDEyCi0gMDAwMDAwMwotLTAwMDAwMDAgICAxMDEgMDQwIDMwMiAyNDMgMDQwIDMwNSAyMjIgMDEyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSswMDAwMDAwIDEwMSAwNDAgMzAyIDI0MyAwNDAgMzA1IDIyMiAwMTIKLSAwMDAwMDEwCi0gLi91bmljb2RlMy5zdWI6IGxpbmUgMjogNadAM5krxlM4n6LqszogY29tbWFuZCBub3QgZm91bmQKLS01p0AzmSvGUzifouqzCi0rJCc1XDI0N0AzXDIzMStcMzA2UzhcMjM3XDI0MlwzNTJcMjYzJwotICsgOiAkJzVcMjQ3QDNcMjMxK1wzMDZTOFwyMzdcMjQyXDM1MlwyNjMnCi0tLSAKLTIuOC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoL3Rlc3Qtb3V0cHV0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2gvdGVzdC1vdXRwdXQucGF0Y2gKaW5kZXggMmIwOWI3ZC4uMGZmY2MyNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2gvdGVzdC1vdXRwdXQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2gvdGVzdC1vdXRwdXQucGF0Y2gKQEAgLTEsMjUgKzEsNDIgQEAKLUFkZCBGQUlML1BBU1Mgb3V0cHV0IHRvIHRlc3Qgb3V0cHV0LgorRnJvbSAyOGViMDYwNDdlYmQyZGVhYThjN2NkMmJmNjY1NWVmNmE0NjlkYzE0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAxNSBBdWcgMjAxNyAxMDowMTo1NiArMDgwMAorU3ViamVjdDogW1BBVENIIDEvMl0gQWRkIEZBSUwvUEFTUyBvdXRwdXQgdG8gdGVzdCBvdXRwdXQuCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CiAKIFNpZ25lZC1vZmYtYnk6IEJqw7ZybiBTdGVuYmVyZyA8YmpzdEBlbmVhLmNvbT4KIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitSZWJhc2UgdG8gNC40CitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CiAtLS0KLWRpZmYgLXVOciBhL3Rlc3RzL3J1bi1hbGwgYi90ZXN0cy9ydW4tYWxsCi0tLS0gYS90ZXN0cy9ydW4tYWxsCTE5OTktMTAtMDggMTc6MDc6NDYuMDAwMDAwMDAwICswMjAwCi0rKysgYi90ZXN0cy9ydW4tYWxsCTIwMTItMTAtMjcgMjE6MDQ6MTguNjYzMzMxODg3ICswMjAwCi1AQCAtMjIsNyArMjIsMTUgQEAKKyB0ZXN0cy9ydW4tYWxsIHwgMTEgKysrKysrKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvdGVzdHMvcnVuLWFsbCBiL3Rlc3RzL3J1bi1hbGwKK2luZGV4IDI4ODJmZTAuLmUyMWQwMjYgMTAwNjQ0CistLS0gYS90ZXN0cy9ydW4tYWxsCisrKysgYi90ZXN0cy9ydW4tYWxsCitAQCAtMzMsNyArMzMsMTYgQEAgZG8KICAJY2FzZSAkeCBpbgogIAkkMHxydW4tbWluaW1hbHxydW4tZ3Byb2YpCTs7CiAgCSoub3JpZ3wqfikgOzsKLS0JKikJZWNobyAkeCA7IHNoICR4IDs7Ci0rICAgICopICBlY2hvICR4Ci0rICAgICAgICAgb3V0cHV0PWBzaCAkeGAKLSsgICAgICAgICBpZiBbIC1uICIkb3V0cHV0IiBdOyB0aGVuCi0rICAgICAgICAgICAgIGVjaG8gIiRvdXRwdXQiCi0rICAgICAgICAgICAgIGVjaG8gIkZBSUw6ICR4IgotKyAgICAgICAgIGVsc2UKLSsgICAgICAgICAgICAgZWNobyAiUEFTUzogJHgiCi0rICAgICAgICAgZmkKLSsgICAgICAgICA7OworLQkqKQllY2hvICR4IDsgc2ggJHggOyBybSAtZiAke0JBU0hfVFNUT1VUfSA7OworKwkqKQllY2hvICR4CisrCQlvdXRwdXQ9YHNoICR4YAorKwkJaWYgWyAtbiAiJG91dHB1dCIgXTsgdGhlbgorKwkJCWVjaG8gIiRvdXRwdXQiCisrCQkJZWNobyAiRkFJTDogJHgiCisrCQllbHNlCisrCQkJZWNobyAiUEFTUzogJHgiCisrCQlmaQorKwkJcm0gLWYgJHtCQVNIX1RTVE9VVH0KKysJCTs7CiAgCWVzYWMKICBkb25lCiAgCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2hfNC4zLjMwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2hfNC4zLjMwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNjQ4ZmFmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoXzQuMy4zMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAKLXJlcXVpcmUgYmFzaC5pbmMKLQotIyBHUEx2MisgKDwgNC4wKSwgR1BMdjMrICg+PSA0LjApCi1MSUNFTlNFID0gIkdQTHYzKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vYmFzaC8ke0JQfS50YXIuZ3o7bmFtZT10YXJiYWxsIFwKLSAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC4zLXBhdGNoZXMvYmFzaDQzLTAzMTthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMzEgXAotICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjMtcGF0Y2hlcy9iYXNoNDMtMDMyO2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAzMiBcCi0gICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuMy1wYXRjaGVzL2Jhc2g0My0wMzM7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDMzIFwKLSAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC4zLXBhdGNoZXMvYmFzaDQzLTAzNDthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMzQgXAotICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjMtcGF0Y2hlcy9iYXNoNDMtMDM1O2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAzNSBcCi0gICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuMy1wYXRjaGVzL2Jhc2g0My0wMzY7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDM2IFwKLSAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC4zLXBhdGNoZXMvYmFzaDQzLTAzNzthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMzcgXAotICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjMtcGF0Y2hlcy9iYXNoNDMtMDM4O2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAzOCBcCi0gICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuMy1wYXRjaGVzL2Jhc2g0My0wMzk7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDM5IFwKLSAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC4zLXBhdGNoZXMvYmFzaDQzLTA0MDthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwNDAgXAotICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjMtcGF0Y2hlcy9iYXNoNDMtMDQxO2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDA0MSBcCi0gICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuMy1wYXRjaGVzL2Jhc2g0My0wNDI7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDQyIFwKLSAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC4zLXBhdGNoZXMvYmFzaDQzLTA0MzthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwNDMgXAotICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjMtcGF0Y2hlcy9iYXNoNDMtMDQ0O2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDA0NCBcCi0gICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuMy1wYXRjaGVzL2Jhc2g0My0wNDU7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDQ1IFwKLSAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC4zLXBhdGNoZXMvYmFzaDQzLTA0NjthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwNDYgXAotICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjMtcGF0Y2hlcy9iYXNoNDMtMDQ3O2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDA0NyBcCi0gICAgICAgICAgIGZpbGU6Ly9leGVjdXRlX2NtZC5wYXRjaDtzdHJpcGxldmVsPTAgXAotICAgICAgICAgICBmaWxlOi8vbWtidWlsdGluc19oYXZlX3N0cmluZ2l6ZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9idWlsZC10ZXN0cy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly90ZXN0LW91dHB1dC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtcnVuLWNvcHJvYy1ydW4taGVyZWRvYy1ydW4tZXhlY3NjcmlwdC1ydW4tdGVzdC1mLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtcnVuLWJ1aWx0aW5zLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtaGVscC1maXgtcHJpbnRmLWZvcm1hdC1zZWN1cml0eS13YXJuaW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1ydW4taW50bC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi05NDAxLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2Jhc2gtbWVtbGVhay1idWctZml4LWZvci1idWlsdGluLWNvbW1hbmQtcmVhZC5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVt0YXJiYWxsLm1kNXN1bV0gPSAiYTI3YjNlZTliZTgzYmQzYmE0NDhjMGZmNTJiMjg0NDciCi1TUkNfVVJJW3RhcmJhbGwuc2hhMjU2c3VtXSA9ICIzMTc4ODEwMTliYmYyMjYyZmI4MTRiN2RkOGU0MDYzMmQxM2MzNjA4ZDJmMjM3ODAwYTg4MjhmYmI4YTY0MGRkIgotCi1TUkNfVVJJW3BhdGNoMDMxLm1kNXN1bV0gPSAiMjM2ZGYxYWMxMTMwYTAzM2VkMGRiZTJkMjExNWYyOGYiCi1TUkNfVVJJW3BhdGNoMDMxLnNoYTI1NnN1bV0gPSAiY2Q1MjlmNTlkZDBmMmZkZDQ5ZDYxOWZlMzQ2OTFkYTZmMGFmZmVkZjg3Y2MzN2NkNDYwYTlmM2ZlODEyYTYxZCIKLVNSQ19VUklbcGF0Y2gwMzIubWQ1c3VtXSA9ICIyMzYwZjdlNzljZmIyODUyNmY4MDAyMTAyNWVhNTkwOSIKLVNSQ19VUklbcGF0Y2gwMzIuc2hhMjU2c3VtXSA9ICI4ODkzNTdkMjlhNjAwNWIyYzMzMDhjYTViNjI4NmNiMjIzYjVlOWMwODMyMTllNWRiMzE1NjI4MmRkNTU0ZjRhIgotU1JDX1VSSVtwYXRjaDAzMy5tZDVzdW1dID0gImI1NTFjNGVlN2I4NzEzNzU5ZTQxNDM0OTlkMGJiZDQ4IgotU1JDX1VSSVtwYXRjaDAzMy5zaGEyNTZzdW1dID0gImZiMmE3Nzg3YTEzZmJlMDI3YTczMzVhY2E2ZWIzYzIxY2RiZDgxM2U5ZWRjMjIxMjc0YjZhOWQ4NjkyZWFhMTYiCi1TUkNfVVJJW3BhdGNoMDM0Lm1kNXN1bV0gPSAiYzlhNTZmYmUwMzQ4ZTA1YTg4NmRmZjk3ZjI4NzJiNzQiCi1TUkNfVVJJW3BhdGNoMDM0LnNoYTI1NnN1bV0gPSAiZjE2OTRmMDRmMTEwZGVmZTEzMzBhODUxY2MyNzY4ZTdlNTdkZGQyZGZkYjBlM2UzNTBjYTBlM2MyMTRmZjg4OSIKLVNSQ19VUklbcGF0Y2gwMzUubWQ1c3VtXSA9ICJlNTY0ZThhYjQ0ZWQxY2EzYTRlMzE1YTlmNmNhYmRjOSIKLVNSQ19VUklbcGF0Y2gwMzUuc2hhMjU2c3VtXSA9ICIzNzBkODVlNTE3ODAwMzZmMjM4NmRjMThjNWVmZTk5NmViYThlNjUyZmMxOTczZjBmNGYyYWI1NWE5OTNjMWUzIgotU1JDX1VSSVtwYXRjaDAzNi5tZDVzdW1dID0gImIwMGZmNjZjNDFhN2MwZjA2ZTE5MTIwMDk4MTk4MGIwIgotU1JDX1VSSVtwYXRjaDAzNi5zaGEyNTZzdW1dID0gImFjNWY4MjQ0NWIzNmVmZGI1NDNkYmZhZTY0YWZlZDYzZjU4NmQ3NTc0YjgzM2U5YWE5Y2Q1MTcwYmM1ZmQyN2MiCi1TUkNfVVJJW3BhdGNoMDM3Lm1kNXN1bV0gPSAiYmUyYTdiMDVmNmFlNTYwMzEzZjNjOWQ1ZjcxMjdiZGEiCi1TUkNfVVJJW3BhdGNoMDM3LnNoYTI1NnN1bV0gPSAiMzNmMTcwZGQ3NDAwYWIzNDE4ZDc0OWM1NWM2MzkxYjFkMTYxZWYyZGU3YWNlZDE4NzM0NTFiM2EzZmNhNTgxMyIKLVNSQ19VUklbcGF0Y2gwMzgubWQ1c3VtXSA9ICI2MWUwNTIyODMwYjI0ZmJlOGMwZDFiMDEwZjEzMjQ3MCIKLVNSQ19VUklbcGF0Y2gwMzguc2hhMjU2c3VtXSA9ICJhZGJlYWE1MDBjYTdhODI1MzVmMGU4OGQ2NzM2NjE5NjNmOGE1ZmNkYzdhZDYzNDQ1ZTY4YmY1YjQ5Nzg2MzY3IgotU1JDX1VSSVtwYXRjaDAzOS5tZDVzdW1dID0gImE0Nzc1NDg3YWJlOTU4NTM2NzUxYzhjZTUzY2RmNmY5IgotU1JDX1VSSVtwYXRjaDAzOS5zaGEyNTZzdW1dID0gImFiOTRkY2VkMjIxNTU0MTA5NzY5MWY2MGMzZWIzMjNjYzI4ZWYyNTQ5NDYzZTZhNTMzNGJiY2MxZTYxZTc0ZWMiCi1TUkNfVVJJW3BhdGNoMDQwLm1kNXN1bV0gPSAiODBkMzU4N2M1ODg1NGUyMjYwNTVlZjA5OWZmZWI1MzUiCi1TUkNfVVJJW3BhdGNoMDQwLnNoYTI1NnN1bV0gPSAiODRiYjM5NmI5MjYyOTkyY2E1NDI0ZmVhYjZlZDNlYzM5ZjE5M2VmNWM3NmRmZTRhNjJiNTUxYmQ4ZGQ5ZDc2YiIKLVNSQ19VUklbcGF0Y2gwNDEubWQ1c3VtXSA9ICIyMGJmNjNlZWY3Y2I0NDFjMGIxY2M0OWVmMzE5MWQwMyIKLVNSQ19VUklbcGF0Y2gwNDEuc2hhMjU2c3VtXSA9ICI0ZWM0MzI5NjZlNDE5ODUyNGE3ZTBjZDY4NWZlMjIyZTk2MDQzNzY5Yzk2MTNlNjY3NDJhYzQ3NWRiMTMyYzFhIgotU1JDX1VSSVtwYXRjaDA0Mi5tZDVzdW1dID0gIjcwNzkwNjQ2YWU2MWUyMDdjOTk1ZTQ0OTMxMzkwZTUwIgotU1JDX1VSSVtwYXRjaDA0Mi5zaGEyNTZzdW1dID0gImFjMjE5MzIyZGIyNzkxZGE4N2E0OTZlZTZlOGU1NTQ0ODQ2NDk0YmRhYWVhMjYyNjI3MGMyZjczYzEwNDQ5MTkiCi1TUkNfVVJJW3BhdGNoMDQzLm1kNXN1bV0gPSAiODU1YTQ2OTU1Y2IyNTE1MzRlODBiNDczMmI3NDhlMzciCi1TUkNfVVJJW3BhdGNoMDQzLnNoYTI1NnN1bV0gPSAiNDdhOGEzYzAwNWI0NmUyNTgyMWY0ZDhmNWNjYjA0YzFkNjUzYjFjODI5Y2I0MDU2OGQ1NTNkYzQ0ZjdhNjE4MCIKLVNSQ19VUklbcGF0Y2gwNDQubWQ1c3VtXSA9ICIyOTYyM2QzMjgyZmNiYjM3ZTExNTgxMzY1MDliNWJiOCIKLVNSQ19VUklbcGF0Y2gwNDQuc2hhMjU2c3VtXSA9ICI5MzM4ODIwNjMwYmY2NzM3M2I0NGQ4ZWE2ODQwOWY2NTE2MmVhN2E0N2I5YjI5YWNlMDZhMGFlZDEyNTY3Zjk5IgotU1JDX1VSSVtwYXRjaDA0NS5tZDVzdW1dID0gIjQ0NzMyNDRjYTVhYmZkNGIwMThlYTI2ZGM3M2U3NDEyIgotU1JDX1VSSVtwYXRjaDA0NS5zaGEyNTZzdW1dID0gImJhNmVjMzk3OGU5ZWFhMWViM2ZhYmRhZjNjYzZmZGY4YzQ2MDZhYzFjNTk5ZmFhZWI0ZTJkNjk4NjQxNTAwMjMiCi1TUkNfVVJJW3BhdGNoMDQ2Lm1kNXN1bV0gPSAiN2U1ZmIwOTk5MWMwNzcwNzZiODZlMGUwNTc3OTg5MTMiCi1TUkNfVVJJW3BhdGNoMDQ2LnNoYTI1NnN1bV0gPSAiYjNiNDU2YTZiNjkwY2QyOTMzNTNmMTdlMjJkOTJhMjAyYjNjOGJjZTU4N2FlNWYyNjY3YzIwYzlhYjZmNjg4ZiIKLVNSQ19VUklbcGF0Y2gwNDcubWQ1c3VtXSA9ICI4NDgzMTUzYmFkMWE2ZjUyY2FkYzNiZDlhOGRmNzgzNSIKLVNSQ19VUklbcGF0Y2gwNDcuc2hhMjU2c3VtXSA9ICJjNjkyNDhkZTdlNzhiYTZiOTJmMTE4ZmUxZWY0N2JjODY0NzlkNTA0MGZlMGIxZjkwOGFjZTFjOWUzYzY3YzRhIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoXzQuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoXzQuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNTQ0ZDA3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2hfNC40LmJiCkBAIC0wLDAgKzEsNTkgQEAKK3JlcXVpcmUgYmFzaC5pbmMKKworIyBHUEx2MisgKDwgNC4wKSwgR1BMdjMrICg+PSA0LjApCitMSUNFTlNFID0gIkdQTHYzKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vYmFzaC8ke0JQfS50YXIuZ3o7bmFtZT10YXJiYWxsIFwKKyAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC40LXBhdGNoZXMvYmFzaDQ0LTAwMTthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMDEgXAorICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjQtcGF0Y2hlcy9iYXNoNDQtMDAyO2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAwMiBcCisgICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuNC1wYXRjaGVzL2Jhc2g0NC0wMDM7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDAzIFwKKyAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC40LXBhdGNoZXMvYmFzaDQ0LTAwNDthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMDQgXAorICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjQtcGF0Y2hlcy9iYXNoNDQtMDA1O2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAwNSBcCisgICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuNC1wYXRjaGVzL2Jhc2g0NC0wMDY7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDA2IFwKKyAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC40LXBhdGNoZXMvYmFzaDQ0LTAwNzthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMDcgXAorICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjQtcGF0Y2hlcy9iYXNoNDQtMDA4O2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAwOCBcCisgICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuNC1wYXRjaGVzL2Jhc2g0NC0wMDk7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDA5IFwKKyAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtNC40LXBhdGNoZXMvYmFzaDQ0LTAxMDthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMTAgXAorICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC00LjQtcGF0Y2hlcy9iYXNoNDQtMDExO2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAxMSBcCisgICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLTQuNC1wYXRjaGVzL2Jhc2g0NC0wMTI7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDEyIFwKKyAgICAgICAgICAgZmlsZTovL2V4ZWN1dGVfY21kLnBhdGNoO3N0cmlwbGV2ZWw9MCBcCisgICAgICAgICAgIGZpbGU6Ly9ta2J1aWx0aW5zX2hhdmVfc3RyaW5naXplLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2J1aWxkLXRlc3RzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3Rlc3Qtb3V0cHV0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1ydW4tY29wcm9jLXJ1bi1oZXJlZG9jLXJ1bi1leGVjc2NyaXB0LXJ1bi10ZXN0LWYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1ydW4tYnVpbHRpbnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1oZWxwLWZpeC1wcmludGYtZm9ybWF0LXNlY3VyaXR5LXdhcm5pbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYmFzaC1tZW1sZWFrLWJ1Zy1maXgtZm9yLWJ1aWx0aW4tY29tbWFuZC1yZWFkLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW3RhcmJhbGwubWQ1c3VtXSA9ICIxNDg4ODhhN2M5NWFjMjM3MDU1NTliNmY0NzdkZmUyNSIKK1NSQ19VUklbdGFyYmFsbC5zaGEyNTZzdW1dID0gImQ4NmIzMzkyYzEyMDJlOGZmNWE0MjNiMzAyZTYyODRkYjdmOGY0MzVlYTlmMzliNWIxYjIwZmQzYWMzNmRmY2IiCisKK1NSQ19VUklbcGF0Y2gwMDEubWQ1c3VtXSA9ICI4MTdkMDFhNmMwYWY2Zjc5MzA4YThiN2I2NDllNTNkOCIKK1NSQ19VUklbcGF0Y2gwMDEuc2hhMjU2c3VtXSA9ICIzZTI4ZDkxNTMxNzUyZGY5YThjYjE2N2FkMDdjYzU0MmFiYWY5NDRkZTkzNTNmZThjNmE1MzVjOWYxZjE3ZjBmIgorU1JDX1VSSVtwYXRjaDAwMi5tZDVzdW1dID0gIjc2NWUxNGNmZjEyYzcyODQwMDk3NzJlOGUyNGYyZmUwIgorU1JDX1VSSVtwYXRjaDAwMi5zaGEyNTZzdW1dID0gIjcwMjBhMDE4M2UxN2E3MjMzZTY2NWI5NzljNzhjMTg0ZWEzNjljZmFmM2U4YjRiMTFmNTU0N2VjYjdjMTNjNTMiCitTUkNfVVJJW3BhdGNoMDAzLm1kNXN1bV0gPSAiNDllN2RhOTNiZjA3ZjUxMGEyZWI2YmI0M2FjM2U1YTIiCitTUkNfVVJJW3BhdGNoMDAzLnNoYTI1NnN1bV0gPSAiNTFkZjVhOTE5MmZkZWZlMGRkY2E0YmRmMjkwOTMyZjc0YmUwM2ZmZDA1MDNhM2QxMTJlNDE5OTkwNWU3MThiMiIKK1NSQ19VUklbcGF0Y2gwMDQubWQ1c3VtXSA9ICI0NTU3ZDY3NGFiNTgzMWE1ZmE5ODA1MmFiMTllZGFmNCIKK1NSQ19VUklbcGF0Y2gwMDQuc2hhMjU2c3VtXSA9ICJhZDA4MGEzMGE0YWM2YzEyNzMzNzM2MTdmMjk2MjhjYzMyMGEzNWM4Y2QwNjkxMzg5NDc5NDI5M2RjNTJjOGIzIgorU1JDX1VSSVtwYXRjaDAwNS5tZDVzdW1dID0gImNjZTk2ZGQ3N2NkZDFkMjkzYmVlYzEwODQ4ZjZjYmI1IgorU1JDX1VSSVtwYXRjaDAwNS5zaGEyNTZzdW1dID0gIjIyMWU0YjcyNWI3NzBhZDBiYjY5MjRkZjNmOGQwNGY4OWVlY2E0NTU4ZjZlNGM3NzdkZmE5M2U5NjcwOTA1MjkiCitTUkNfVVJJW3BhdGNoMDA2Lm1kNXN1bV0gPSAiZDMzNzlmOGQ4YWJjZTVjNmVlMzM4ZjkzMWFkMDA4ZDUiCitTUkNfVVJJW3BhdGNoMDA2LnNoYTI1NnN1bV0gPSAiNmE4ZTJlMmE2MTgwZDBmMWNlMzlkY2Q2NTE2MjJmYjZkMmZkMDVkYjdjNDU5ZjY0YWU0MmQ2NjdmMWUzNDRiOCIKK1NSQ19VUklbcGF0Y2gwMDcubWQ1c3VtXSA9ICJlYzM4Yzc2Y2E0MzljYTdmOWMxNzhlOWJhZWRlODRmYyIKK1NSQ19VUklbcGF0Y2gwMDcuc2hhMjU2c3VtXSA9ICJkZTFjY2MwN2I3YmZjOWUyNTI0M2FkODU0ZjNiYmI1ZDNlYmY5MTU1YjA0NzdkZjE2YWFmMDBhN2IwZDVlZGFmIgorU1JDX1VSSVtwYXRjaDAwOC5tZDVzdW1dID0gImUwYmExOGMxZTNiOTRmOTA1ZGE5YjViZjlkMzhiNThiIgorU1JDX1VSSVtwYXRjaDAwOC5zaGEyNTZzdW1dID0gIjg2MTQ0NzAwNDY1OTMzNjM2ZDdiOTQ1ZTg5Yjc3ZGY5NWQzNjIwMDM0NzI1YmUxNjFjYTBjYTVhNDJlMjM5YmEiCitTUkNfVVJJW3BhdGNoMDA5Lm1kNXN1bV0gPSAiZTk1MmQ0ZjQ0ZTYxMjA0ODkzMGM1NTlkOTBlYjk5YmIiCitTUkNfVVJJW3BhdGNoMDA5LnNoYTI1NnN1bV0gPSAiMGI2YmRkMWExOGEwZDIwZTMzMGNjM2JjNzFlMDQ4ODY0ZTRhMTM2NTJlMjlkYzBlYmYzOTE4YmVhNzI5MzQzYyIKK1NSQ19VUklbcGF0Y2gwMTAubWQ1c3VtXSA9ICI1N2I1YjM1OTU1ZDY4ZjlhMDlkYmVmNmI4NmQyYzc4MiIKK1NSQ19VUklbcGF0Y2gwMTAuc2hhMjU2c3VtXSA9ICI4NDY1YzZmMmM1NmFmZTU1OTQwMjI2NWIzOWQ5ZTk0MzY4OTU0OTMwZjlhYTdmM2RmYTZkMzZkZDY2ODY4ZTA2IgorU1JDX1VSSVtwYXRjaDAxMS5tZDVzdW1dID0gImNjODk2ZTFmYTY5NmI5M2RlZDU2OGU1NTdlMjM5MmQ1IgorU1JDX1VSSVtwYXRjaDAxMS5zaGEyNTZzdW1dID0gImRkNTY0MjZlZjdkNzI5NWUxMTA3YzBiM2QwNmMxOTJlYjkyOThmNDAyM2MyMDJjYTJiYTYyNjZjNjEzZDE3MGQiCitTUkNfVVJJW3BhdGNoMDEyLm1kNXN1bV0gPSAiZmE0N2ZiZmE1NmZiN2U5ZTUzNjdmMTlhOWRmNWZjOWUiCitTUkNfVVJJW3BhdGNoMDEyLnNoYTI1NnN1bV0gPSAiZmFjMjcxZDJiZjYzNzJjOTkwM2UzYjM1M2NiOWVkYTA0NGQ3ZmUzNmI1YWFiNTJmMjFmM2YyMWNkNmEyMDYzZSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2J5YWNjL2J5YWNjLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYnlhY2MvYnlhY2MuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZGIwNzE5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYnlhY2MvYnlhY2MuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotU1VNTUFSWSA9ICJCZXJrZWxleSBMQUxSIFlhY2MgcGFyc2VyIGdlbmVyYXRvciIKLURFU0NSSVBUSU9OID0gIkEgcGFyc2VyIGdlbmVyYXRvciB1dGlsaXR5IHRoYXQgcmVhZHMgYSBncmFtbWFyIHNwZWNpZmljYXRpb24gZnJvbSBhIGZpbGUgYW5kIGdlbmVyYXRlcyBhbiBMUigxKSBcCi1wYXJzZXIgZm9yIGl0LiAgVGhlIHBhcnNlcnMgY29uc2lzdCBvZiBhIHNldCBvZiBMQUxSKDEpIHBhcnNpbmcgdGFibGVzIGFuZCBhIGRyaXZlciByb3V0aW5lIHdyaXR0ZW4gaW4gdGhlIEMgXAotcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UuIgotU0VDVElPTiA9ICJkZXZlbCIKLUxJQ0VOU0UgPSAiUEQiCi0KLVNSQ19VUkkgPSAiZnRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvYnlhY2MvYnlhY2MtJHtQVn0udGd6IFwKLSAgICAgICAgICAgZmlsZTovL2J5YWNjLW9wZW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1ieWFjYy1kby1ub3QtcmVvcmRlci1DQy1hbmQtQ0ZMQUdTLnBhdGNoIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0tcHJvZ3JhbS10cmFuc2Zvcm0tbmFtZT0ncyxeLGIsJyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLWRvX2NvbmZpZ3VyZSgpIHsKLQlpbnN0YWxsIC1tIDA3NTUgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9nbnUtY29uZmlnL2NvbmZpZy5ndWVzcyAke1N9Ci0JaW5zdGFsbCAtbSAwNzU1ICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZ251LWNvbmZpZy9jb25maWcuc3ViICR7U30KLQlvZV9ydW5jb25mCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2J5YWNjL2J5YWNjLzAwMDEtYnlhY2MtZG8tbm90LXJlb3JkZXItQ0MtYW5kLUNGTEFHUy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYnlhY2MvYnlhY2MvMDAwMS1ieWFjYy1kby1ub3QtcmVvcmRlci1DQy1hbmQtQ0ZMQUdTLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3Y2QyNTEwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYnlhY2MvYnlhY2MvMDAwMS1ieWFjYy1kby1ub3QtcmVvcmRlci1DQy1hbmQtQ0ZMQUdTLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTYxICswLDAgQEAKLVN1YmplY3Q6IGJ5YWNjOiBkbyBub3QgcmVvcmRlciAkQ0MgYW5kICRDRkxBR1MKLQotYnlhY2MgdHJpZXMgdG8gcHJvY2VzcyAkQ0MgYW5kIGRlY2lkZSB3aGljaCBwYXJ0IHNob3VsZCBiZWxvbmcgdG8gQ0MgYW5kIHdoaWNoCi1wYXJ0IHNob3VsZCBiZWxvdyB0byBDRkxBR1MgYW5kIHRoZW4gZG8gcmVvcmRlcmluZy4gSXQgZG9lc24ndCBtYWtlIG11Y2ggc2Vuc2UKLWZvciBPRS4gQW5kIGl0IGRvZXNuJ3QgZG8gaXRzIHdvcmsgY29ycmVjdGx5LiBTb21lIG9wdGlvbnMgYXJlIGRyb3BwZWQuCi0KLURlbGV0ZSBhbGwgdGhlc2Ugc3R1ZmYgc28gdGhhdCB3ZSBjb3VsZCBoYXZlIGFsbCBvcHRpb25zIHdlIG5lZWQuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgU3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGFjbG9jYWwubTQgfCAgIDEgLQotIGNvbmZpZ3VyZSAgfCAxMTkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMTIwIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYWNsb2NhbC5tNCBiL2FjbG9jYWwubTQKLWluZGV4IDkxN2E4NDguLjYyZWYyNDEgMTAwNjQ0Ci0tLS0gYS9hY2xvY2FsLm00Ci0rKysgYi9hY2xvY2FsLm00Ci1AQCAtMTAyMSw3ICsxMDIxLDYgQEAgQ0ZfR0NDX1ZFUlNJT04KLSBDRl9BQ1ZFUlNJT05fQ0hFQ0soMi41MiwKLSAJW0FDX1BST0dfQ0NfU1REQ10sCi0gCVtDRl9BTlNJX0NDX1JFUURdKQotLUNGX0NDX0VOVl9GTEFHUwotIF0pZG5sCi0gZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIGRubCBDRl9QUk9HX0dST0ZGIHZlcnNpb246IDIgdXBkYXRlZDogMjAxNS8wNy8wNCAxMToxNjoyNwotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQotaW5kZXggOTcwN2U1MC4uNGYwNDk3YyAxMDA3NTUKLS0tLSBhL2NvbmZpZ3VyZQotKysrIGIvY29uZmlndXJlCi1AQCAtMTk0NiwxMjUgKzE5NDYsNiBAQCBlc2FjCi0gIyBUaGlzIHNob3VsZCBoYXZlIGJlZW4gZGVmaW5lZCBieSBBQ19QUk9HX0NDCi0gOiAke0NDOj1jY30KLSAKLS1lY2hvICIkYXNfbWU6MTk0OTogY2hlY2tpbmcgXCRDQyB2YXJpYWJsZSIgPiY1Ci0tZWNobyAkRUNIT19OICJjaGVja2luZyBcJENDIHZhcmlhYmxlLi4uICRFQ0hPX0MiID4mNgotLWNhc2UgIiRDQyIgaW4KLS0oKltcIFwJXS0qKQotLQllY2hvICIkYXNfbWU6MTk1MzogcmVzdWx0OiBicm9rZW4iID4mNQotLWVjaG8gIiR7RUNIT19UfWJyb2tlbiIgPiY2Ci0tCXsgZWNobyAiJGFzX21lOjE5NTU6IFdBUk5JTkc6IHlvdXIgZW52aXJvbm1lbnQgbWlzdXNlcyB0aGUgQ0MgdmFyaWFibGUgdG8gaG9sZCBDRkxBR1MvQ1BQRkxBR1Mgb3B0aW9ucyIgPiY1Ci0tZWNobyAiJGFzX21lOiBXQVJOSU5HOiB5b3VyIGVudmlyb25tZW50IG1pc3VzZXMgdGhlIENDIHZhcmlhYmxlIHRvIGhvbGQgQ0ZMQUdTL0NQUEZMQUdTIG9wdGlvbnMiID4mMjt9Ci0tCSMgaHVtb3IgaGltLi4uCi0tCWNmX2ZsYWdzPWBlY2hvICIkQ0MiIHwgc2VkIC1lICdzL14uKlsgCV1cKC1bXiAJXVwpL1wxLydgCi0tCUNDPWBlY2hvICIkQ0MgIiB8IHNlZCAtZSAncy9bIAldLVteIAldLiokLy8nIC1lICdzL1sgCV0qJC8vJ2AKLS0JZm9yIGNmX2FyZyBpbiAkY2ZfZmxhZ3MKLS0JZG8KLS0JCWNhc2UgIngkY2ZfYXJnIiBpbgotLQkJKHgtW0lVRGZnT1ddKikKLS0KLS1jZl9maXhfY3BwZmxhZ3M9bm8KLS1jZl9uZXdfY2ZsYWdzPQotLWNmX25ld19jcHBmbGFncz0KLS1jZl9uZXdfZXh0cmFfY3BwZmxhZ3M9Ci0tCi0tZm9yIGNmX2FkZF9jZmxhZ3MgaW4gJGNmX2ZsYWdzCi0tZG8KLS1jYXNlICRjZl9maXhfY3BwZmxhZ3MgaW4KLS0obm8pCi0tCWNhc2UgJGNmX2FkZF9jZmxhZ3MgaW4KLS0JKC11bmRlZnwtbm9zdGRpbmMqfC1JKnwtRCp8LVUqfC1FfC1QfC1DKQotLQkJY2FzZSAkY2ZfYWRkX2NmbGFncyBpbgotLQkJKC1EKikKLS0JCQljZl90c3RfY2ZsYWdzPWBlY2hvICR7Y2ZfYWRkX2NmbGFnc30gfHNlZCAtZSAncy9eLURbXj1dKj0nXCcnXCJbXiJdKi8vJ2AKLS0KLS0JCQl0ZXN0ICJ4JHtjZl9hZGRfY2ZsYWdzfSIgIT0gIngke2NmX3RzdF9jZmxhZ3N9IiBcCi0tCQkJCSYmIHRlc3QgLXogIiR7Y2ZfdHN0X2NmbGFnc30iIFwKLS0JCQkJJiYgY2ZfZml4X2NwcGZsYWdzPXllcwotLQotLQkJCWlmIHRlc3QgJGNmX2ZpeF9jcHBmbGFncyA9IHllcyA7IHRoZW4KLS0JCQkJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgotLQkJCQljb250aW51ZQotLQkJCWVsaWYgdGVzdCAiJHtjZl90c3RfY2ZsYWdzfSIgPSAiXCInIiA7IHRoZW4KLS0JCQkJY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgotLQkJCQljb250aW51ZQotLQkJCWZpCi0tCQkJOzsKLS0JCWVzYWMKLS0JCWNhc2UgIiRDUFBGTEFHUyIgaW4KLS0JCSgqJGNmX2FkZF9jZmxhZ3MpCi0tCQkJOzsKLS0JCSgqKQotLQkJCWNhc2UgJGNmX2FkZF9jZmxhZ3MgaW4KLS0JCQkoLUQqKQotLQkJCQljZl90c3RfY3BwZmxhZ3M9YGVjaG8gIngkY2ZfYWRkX2NmbGFncyIgfCBzZWQgLWUgJ3MvXi4uLi8vJyAtZSAncy89LiovLydgCi0tCi0tQ1BQRkxBR1M9YGVjaG8gIiRDUFBGTEFHUyIgfCBcCi0tCXNlZAktZSAncy8tW1VEXSciJGNmX3RzdF9jcHBmbGFncyInXCg9W14gCV0qXClcP1sgCV0vIC9nJyBcCi0tCQktZSAncy8tW1VEXSciJGNmX3RzdF9jcHBmbGFncyInXCg9W14gCV0qXClcPyQvL2cnYAotLQotLQkJCQk7OwotLQkJCWVzYWMKLS0JCQljZl9uZXdfY3BwZmxhZ3M9IiRjZl9uZXdfY3BwZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCi0tCQkJOzsKLS0JCWVzYWMKLS0JCTs7Ci0tCSgqKQotLQkJY2ZfbmV3X2NmbGFncz0iJGNmX25ld19jZmxhZ3MgJGNmX2FkZF9jZmxhZ3MiCi0tCQk7OwotLQllc2FjCi0tCTs7Ci0tKHllcykKLS0JY2ZfbmV3X2V4dHJhX2NwcGZsYWdzPSIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzICRjZl9hZGRfY2ZsYWdzIgotLQotLQljZl90c3RfY2ZsYWdzPWBlY2hvICR7Y2ZfYWRkX2NmbGFnc30gfHNlZCAtZSAncy9eW14iXSoiJ1wnJy8vJ2AKLS0KLS0JdGVzdCAieCR7Y2ZfYWRkX2NmbGFnc30iICE9ICJ4JHtjZl90c3RfY2ZsYWdzfSIgXAotLQkJJiYgdGVzdCAteiAiJHtjZl90c3RfY2ZsYWdzfSIgXAotLQkJJiYgY2ZfZml4X2NwcGZsYWdzPW5vCi0tCTs7Ci0tZXNhYwotLWRvbmUKLS0KLS1pZiB0ZXN0IC1uICIkY2ZfbmV3X2NmbGFncyIgOyB0aGVuCi0tCi0tCUNGTEFHUz0iJENGTEFHUyAkY2ZfbmV3X2NmbGFncyIKLS1maQotLQotLWlmIHRlc3QgLW4gIiRjZl9uZXdfY3BwZmxhZ3MiIDsgdGhlbgotLQotLQlDUFBGTEFHUz0iJENQUEZMQUdTICRjZl9uZXdfY3BwZmxhZ3MiCi0tZmkKLS0KLS1pZiB0ZXN0IC1uICIkY2ZfbmV3X2V4dHJhX2NwcGZsYWdzIiA7IHRoZW4KLS0KLS0JRVhUUkFfQ1BQRkxBR1M9IiRjZl9uZXdfZXh0cmFfY3BwZmxhZ3MgJEVYVFJBX0NQUEZMQUdTIgotLWZpCi0tCi0tCQkJOzsKLS0JCSgqKQotLQkJCUNDPSIkQ0MgJGNmX2FyZyIKLS0JCQk7OwotLQkJZXNhYwotLQlkb25lCi0tCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJcmVzdWx0aW5nIENDOiAnJENDJyIgMT4mNgotLQotLWVjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06MjA1MTogdGVzdGluZyByZXN1bHRpbmcgQ0M6ICckQ0MnIC4uLiIgMT4mNQotLQotLQl0ZXN0IC1uICIkdmVyYm9zZSIgJiYgZWNobyAiCXJlc3VsdGluZyBDRkxBR1M6ICckQ0ZMQUdTJyIgMT4mNgotLQotLWVjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06MjA1NTogdGVzdGluZyByZXN1bHRpbmcgQ0ZMQUdTOiAnJENGTEFHUycgLi4uIiAxPiY1Ci0tCi0tCXRlc3QgLW4gIiR2ZXJib3NlIiAmJiBlY2hvICIJcmVzdWx0aW5nIENQUEZMQUdTOiAnJENQUEZMQUdTJyIgMT4mNgotLQotLWVjaG8gIiR7YXNfbWU6LWNvbmZpZ3VyZX06MjA1OTogdGVzdGluZyByZXN1bHRpbmcgQ1BQRkxBR1M6ICckQ1BQRkxBR1MnIC4uLiIgMT4mNQotLQotLQk7OwotLSgqKQotLQllY2hvICIkYXNfbWU6MjA2MzogcmVzdWx0OiBvayIgPiY1Ci0tZWNobyAiJHtFQ0hPX1R9b2siID4mNgotLQk7OwotLWVzYWMKLS0KLSBlY2hvICIkYXNfbWU6MjA2ODogY2hlY2tpbmcgd2hldGhlciAke01BS0UtbWFrZX0gc2V0cyBcJHtNQUtFfSIgPiY1Ci0gZWNobyAkRUNIT19OICJjaGVja2luZyB3aGV0aGVyICR7TUFLRS1tYWtlfSBzZXRzIFwke01BS0V9Li4uICRFQ0hPX0MiID4mNgotIHNldCBkdW1teSAke01BS0UtbWFrZX07IGFjX21ha2U9YGVjaG8gIiQyIiB8IHNlZCAneSwuLystLF9fcF8sJ2AKLS0tIAotMi44LjMKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ieWFjYy9ieWFjYy9ieWFjYy1vcGVuLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ieWFjYy9ieWFjYy9ieWFjYy1vcGVuLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDU4MzExLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYnlhY2MvYnlhY2MvYnlhY2Mtb3Blbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLVVidW50dSBkZWZhdWx0cyB0byBwYXNzaW5nIF9GT1JUSUZZX1NPVVJDRT0yIHdoaWNoIGJyZWFrcyBieWFjYyBhcyBpdCBkb2Vzbid0Ci1wYXNzIGVub3VnaCBhcmd1bWVudHMgdG8gb3BlbigpOgotCi0gaW5saW5lZCBmcm9tICdvcGVuX3RtcGZpbGUnIGF0IGJ5YWNjLTIwMTUwNzExL21haW4uYzo1ODg6NToKLSAvdXNyL2luY2x1ZGUveDg2XzY0LWxpbnV4LWdudS9iaXRzL2ZjbnRsMi5oOjUwOjI0OiBlcnJvcjogY2FsbCB0byAnX19vcGVuX21pc3NpbmdfbW9kZScgZGVjbGFyZWQgd2l0aCBhdHRyaWJ1dGUgZXJyb3I6Ci0gb3BlbiB3aXRoIE9fQ1JFQVQgaW4gc2Vjb25kIGFyZ3VtZW50IG5lZWRzIDMgYXJndW1lbnRzCi0KLUFkZCBhIG1vZGUgb2YgMDY2NiB0byBmaXggdGhpcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1kaWZmIC0tZ2l0IGEvbWFpbi5jIGIvbWFpbi5jCi1pbmRleCA2MjBjZTNmLi44MjA3MWE0IDEwMDY0NAotLS0tIGEvbWFpbi5jCi0rKysgYi9tYWluLmMKLUBAIC01MjYsNyArNTI2LDcgQEAgbXlfbWtzdGVtcChjaGFyICp0ZW1wKQotICAgICB9Ci0gICAgIGlmICgobmFtZSA9IHRlbXBuYW0oZG5hbWUsIGZuYW1lKSkgIT0gMCkKLSAgICAgewotLQlmZCA9IG9wZW4obmFtZSwgT19DUkVBVCB8IE9fRVhDTCB8IE9fUkRXUik7Ci0rICAgICAgZmQgPSBvcGVuKG5hbWUsIE9fQ1JFQVQgfCBPX0VYQ0wgfCBPX1JEV1IsIDA2NjYpOwotIAlzdHJjcHkodGVtcCwgbmFtZSk7Ci0gICAgIH0KLSAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ieWFjYy9ieWFjY18yMDE2MTIwMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYnlhY2MvYnlhY2NfMjAxNjEyMDIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1NWY4YWIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ieWFjYy9ieWFjY18yMDE2MTIwMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLSMgU2lnaC4gVGhpcyBpcyBvbmUgb2YgdGhvc2UgcGxhY2VzIHdoZXJlIGV2ZXJ5b25lIGxpY2Vuc2VzIGl0IGRpZmZlcmVudGx5LiBTb21lb25lCi0jIGV2ZW4gYXBwbHkgVUNCIHRvIGl0IChGcmVlL05ldC9PcGVuQlNEKS4gVGhlIG1haW50YWluZXIgc3RhdGVzIHRoYXQ6Ci0jICJJJ3ZlIGZvdW5kIG5vIHJlbGlhYmxlIHNvdXJjZSB3aGljaCBzdGF0ZXMgdGhhdCBieWFjYyBtdXN0IGJlYXIgYSBVQ0IgY29weXJpZ2h0LiIKLSMgU2V0dGluZyB0byBQRCBhcyB0aGlzIGlzIHdoYXQgdGhlIHVwc3RyZWFtIGhhcyBpdCBhcy4KLQotTElDRU5TRSA9ICJQRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3BhY2thZ2UvZGViaWFuL2NvcHlyaWdodDttZDU9NzQ1MzNkMzJmZmQzOGJjYTRjYmYxZjEzMDVmOGJjNjAiCi1yZXF1aXJlIGJ5YWNjLmluYwotCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0OGVmMzg0NDdmMmNjODY0YzcwZWY4NjRiMjZjZjgxNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzMGRjNThjZmNkYjcwOGVlYTdiYTAyMmRiMjliNDFkMmQzOTJmMjA3Mjc0OTFiOTU2OTU0MzY2ZjJmMjExN2YwIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iemlwMi9iemlwMi0xLjAuNi9NYWtlZmlsZS5hbSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYnppcDIvYnppcDItMS4wLjYvTWFrZWZpbGUuYW0KaW5kZXggMDVkMzg5Zi4uZGNmNjQ1OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iemlwMi9iemlwMi0xLjAuNi9NYWtlZmlsZS5hbQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2J6aXAyL2J6aXAyLTEuMC42L01ha2VmaWxlLmFtCkBAIC00OCw3ICs0OCw4IEBACiAJZWxzZSBlY2hvICJGQUlMOiBzYW1wbGUzIGRlY29tcHJlc3MiOyBmaQogCiBpbnN0YWxsLXB0ZXN0OgotCWNwICQoc3JjZGlyKS9NYWtlZmlsZQkJJChERVNURElSKS8KKwlzZWQgIC1uICcvXnJ1bnRlc3Q6LywvXmluc3RhbGwtcHRlc3Q6L3svXmluc3RhbGwtcHRlc3Q6LyFwfScgXAorICAgICAgICAgICAkKHNyY2RpcikvTWFrZWZpbGUuYW0gICAgICA+ICQoREVTVERJUikvTWFrZWZpbGUKIAljcCAkKHNyY2Rpcikvc2FtcGxlMS5yZWYJJChERVNURElSKS8KIAljcCAkKHNyY2Rpcikvc2FtcGxlMi5yZWYJJChERVNURElSKS8KIAljcCAkKHNyY2Rpcikvc2FtcGxlMy5yZWYJJChERVNURElSKS8KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYnppcDIvYnppcDJfMS4wLjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2J6aXAyL2J6aXAyXzEuMC42LmJiCmluZGV4IDA1MTJhNzUuLmRlNjY4ZDYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYnppcDIvYnppcDJfMS4wLjYuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iemlwMi9iemlwMl8xLjAuNi5iYgpAQCAtMzQsNyArMzQsNiBAQAogRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC0tYmluZGlyPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BOfSIKIAogZG9faW5zdGFsbF9wdGVzdCAoKSB7Ci0JY3AgLWYgJHtCfS9NYWtlZmlsZSAke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZQogCXNlZCAtaSAtZSAic3xeTWFrZWZpbGU6fF9NYWtlZmlsZTp8IiAke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZQogfQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy5pbmMKaW5kZXggYzNmYTQ1OS4uYWM0ZDIyNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzLmluYwpAQCAtMSw0ICsxLDUgQEAKIFNVTU1BUlkgPSAiQW4gSW50ZXJuZXQgcHJpbnRpbmcgc3lzdGVtIGZvciBVbml4IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cuY3Vwcy5vcmcvIgogU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgogTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2MiIKIERFUEVORFMgPSAiZ251dGxzIGxpYnBuZyBqcGVnIGRidXMgZGJ1cy1nbGliIHpsaWIgbGlidXNiIgpAQCAtNzksMTMgKzgwLDYgQEAKIAlmaQogfQogCi1weXRob24gZG9fcGFja2FnZV9hcHBlbmQoKSB7Ci0gICAgaW1wb3J0IHN1YnByb2Nlc3MKLSAgICAjIENoYW5nZSBwZXJtaXNzaW9ucyBiYWNrIHRoZSB3YXkgdGhleSB3ZXJlLCB0aGV5IHByb2JhYmx5IGhhZCBhIHJlYXNvbi4uLgotICAgIHdvcmtkaXIgPSBkLmdldFZhcignV09SS0RJUicpCi0gICAgc3VicHJvY2Vzcy5jYWxsKCdjaG1vZCAwNTExICVzL2luc3RhbGwvY3Vwcy92YXIvcnVuL2N1cHMvY2VydHMnICUgd29ya2Rpciwgc2hlbGw9VHJ1ZSkKLX0KLQogUEFDS0FHRVMgPSsgIiR7UE59LWxpYiAke1BOfS1saWJpbWFnZSIKIAogUkRFUEVORFNfJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAncHJvY3BzJywgJycsIGQpfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzXzIuMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHNfMi4yLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxNzRjMzAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHNfMi4yLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLXJlcXVpcmUgY3Vwcy5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PWYyMTJiNDMzOGRiMGRhOGNiODkyZTk0YmYyOTQ5NDYwIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMDM2ZjZiZGE2MjAyYWUzZTI4MGFjMDBjNzEwYjVjYTQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjU4OWJiN2Q1ZDFkYzNhYTA5MTVkN2NmMmI4MDg1NzFlZjJlMTUzMGNkMWE2ZWJlNzZhZThmOWY0OTk0ZTRmNiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzXzIuMi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHNfMi4yLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWQ5NGI2NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzXzIuMi40LmJiCkBAIC0wLDAgKzEsNiBAQAorcmVxdWlyZSBjdXBzLmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9ZjIxMmI0MzM4ZGIwZGE4Y2I4OTJlOTRiZjI5NDk0NjAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkMjZlNWEwYTU3NGE2OWZlMWQwMTA3OWIyOTMxZmM0OSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1OTZkNGRiNzI2NTFjMzM1NDY5YWU1ZjM3YjBkYTcyYWM5Zjk3ZDczZTMwODM4ZDc4NzA2NWY1NTlkZWE5OGNjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzLTMuNS8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzLTMuNi8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2RpZmZ1dGlscy9kaWZmdXRpbHMtMy41LzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2gKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZGlmZnV0aWxzL2RpZmZ1dGlscy0zLjYvMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzLTMuNi8wMDAxLWV4cGxpY2l0bHktZGlzYWJsZS1yZXBsYWNpbmctZ2V0b3B0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzLTMuNi8wMDAxLWV4cGxpY2l0bHktZGlzYWJsZS1yZXBsYWNpbmctZ2V0b3B0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1MWY4N2MKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2RpZmZ1dGlscy9kaWZmdXRpbHMtMy42LzAwMDEtZXhwbGljaXRseS1kaXNhYmxlLXJlcGxhY2luZy1nZXRvcHQucGF0Y2gKQEAgLTAsMCArMSwzMCBAQAorU3ViamVjdDogZXhwbGljaXRseSBkaXNhYmxlIHJlcGxhY2luZyBnZXRvcHQKKworRXhwbGljaXRseSBkaXNhYmxlIHJlcGxhY2luZyBnZXRvcHQgdG8gYXZvaWQgY29tcGlsYXRpb24gZXJyb3IgbGlrZSBiZWxvdy4KKworICB4c3RydG9sLWVycm9yLmM6ODQ6MjY6IGVycm9yOiBpbnZhbGlkIHVzZSBvZiB1bmRlZmluZWQgdHlwZSAnc3RydWN0IHJwbF9vcHRpb24nCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbd29ya2Fyb3VuZF0KK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIG00L2dldG9wdC5tNCB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9tNC9nZXRvcHQubTQgYi9tNC9nZXRvcHQubTQKK2luZGV4IDNlYmM3YjcuLjg5MzQ0MjYgMTAwNjQ0CistLS0gYS9tNC9nZXRvcHQubTQKKysrKyBiL200L2dldG9wdC5tNAorQEAgLTIyLDggKzIyLDggQEAgQUNfREVGVU4oW2dsX0ZVTkNfR0VUT1BUX1BPU0lYXSwKKyAgICAgZmkKKyAgIF0pCisgICBpZiB0ZXN0ICRSRVBMQUNFX0dFVE9QVCA9IDE7IHRoZW4KKy0gICAgZG5sIEFycmFuZ2UgZm9yIGdldG9wdC5oIHRvIGJlIGNyZWF0ZWQuCistICAgIGdsX0dFVE9QVF9TVUJTVElUVVRFX0hFQURFUgorKyAgICBkbmwgRXhwbGljaXRseSBkaXNhYmxlIHJlcGxhY2luZyBnZXRvcHQKKysgICAgOgorICAgZmkKKyBdKQorIAorLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzLTMuNS9ydW4tcHRlc3QgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2RpZmZ1dGlscy9kaWZmdXRpbHMtMy42L3J1bi1wdGVzdApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzLTMuNS9ydW4tcHRlc3QKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZGlmZnV0aWxzL2RpZmZ1dGlscy0zLjYvcnVuLXB0ZXN0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2RpZmZ1dGlscy9kaWZmdXRpbHMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzLmluYwppbmRleCAyNDMzNDFhLi43YzViZTUwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2RpZmZ1dGlscy9kaWZmdXRpbHMuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZGlmZnV0aWxzL2RpZmZ1dGlscy5pbmMKQEAgLTEsNCArMSw1IEBACiBTVU1NQVJZID0gIkRpZmZ1dGlscyBjb250YWlucyB0b29scyB1c2VkIGZvciBmaW5kaW5nIGRpZmZlcmVuY2VzIGJldHdlZW4gZmlsZXMiCitIT01FUEFHRSA9ICJodHRwczovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2RpZmZ1dGlscy9kaWZmdXRpbHMuaHRtbCIKIERFU0NSSVBUSU9OID0gIkRpZmZ1dGlscyBjb250YWlucyB0aGUgR05VIGRpZmYsIGRpZmYzLCBcCiBzZGlmZiwgYW5kIGNtcCB1dGlsaXRpZXMuIFRoZXNlIHByb2dyYW1zIGFyZSB1c3VhbGx5IFwKIHVzZWQgZm9yIGNyZWF0aW5nIHBhdGNoIGZpbGVzLiIKQEAgLTYsMTMgKzcsNiBAQAogCiBpbmhlcml0IGF1dG90b29scyB0ZXhpbmZvIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgZ2V0dGV4dAogCi0jIGRpZmZ1dGlscyBhc3N1bWVzIG5vbi1nbGliYyBjb21waWxhdGlvbiB3aXRoIHVjbGliYyBhbmQKLSMgdGhpcyBjYXVzZXMgaXQgdG8gZ2VuZXJhdGUgaXRzIG93biBpbXBsZW1lbnRhdGlvbnMgb2YKLSMgc3RhbmRhcmQgZnVuY3Rpb25hbGl0eS4gIHJlZ2V4LmMgYWN0dWFsbHkgYnJlYWtzIGNvbXBpbGF0aW9uCi0jIGJlY2F1c2UgaXQgdXNlcyBfX21lbXBjcHksIHRoZXJlIGFyZSBvdGhlciB0aGluZ3MgKFRCRDoKLSMgc2VlIGRpZmZ1dGlscy5tayBpbiBidWlsZHJvb3QpCi1FWFRSQV9PRUNPTkZfbGliYy11Y2xpYmMgPSAiLS13aXRob3V0LWluY2x1ZGVkLXJlZ2V4IgotCiBBTFRFUk5BVElWRV8ke1BOfSA9ICJkaWZmIGNtcCIKIEFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzXzMuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZGlmZnV0aWxzL2RpZmZ1dGlsc18zLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0MzU4NGIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzXzMuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLUxJQ0VOU0UgPSAiR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi0KLXJlcXVpcmUgZGlmZnV0aWxzLmluYwotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZGlmZnV0aWxzL2RpZmZ1dGlscy0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0td2l0aG91dC1saWJzaWdzZWd2LXByZWZpeCIKLQotIyBGaXggIkFyZ3VtZW50IGxpc3QgdG9vIGxvbmciIGVycm9yIHdoZW4gbGVuKFRNUERJUikgPSA0MTAKLWFjcGF0aHMgPSAiLUkgLi9tNCIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCSMgTmVlZCB0byByZW1vdmUgZ2V0dGV4dCBtYWNyb3Mgd2l0aCB3ZWlyZCBtaXggb2YgdmVyc2lvbnMKLQlmb3IgaSBpbiBjb2Rlc2V0Lm00IGdldHRleHRfZ2wubTQgaW50bG1hY29zeC5tNCBpbnR0eXBlcy1wcmkubTQgbGliLWxkX2dsLm00IGxpYi1wcmVmaXhfZ2wubTQgcG9fZ2wubTQgc3NpemVfdC5tNCB3Y2hhcl90Lm00IHdpbnRfdC5tNDsgZG8KLQkJcm0gLWYgJHtTfS9tNC8kaQotCWRvbmUKLX0KLQotU1JDX1VSSVttZDVzdW1dID0gIjU2OTM1NDY5N2ZmMWNmYzlhOWRlMzc4MTM2MTAxNWZhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImRhZDM5OGNjZDViOWZhY2E2YjBhYjIxOWEwMzY0NTNmNjJhNjAyYTU2MjAzYWM2NTliNDNlODg5YmVjMzU1MzMiCi0KLWluaGVyaXQgcHRlc3QKLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQl0PSR7RH0ke1BURVNUX1BBVEh9Ci0JaW5zdGFsbCAtRCAke1N9L2J1aWxkLWF1eC90ZXN0LWRyaXZlciAkdC9idWlsZC1hdXgvdGVzdC1kcml2ZXIKLQljcCAtciAke1N9L3Rlc3RzICR0LwotCWluc3RhbGwgJHtCfS90ZXN0cy9NYWtlZmlsZSAkdC90ZXN0cy8KLQlzZWQgLWUgJ3N8Xk1ha2VmaWxlOnxfTWFrZWZpbGU6fCcgXAotCSAgICAtZSAnc3xiYXNofHNofCcgXAotCSAgICAtZSAnc3xedG9wX3NyY2RpciA9IFwoLipcKXx0b3Bfc3JjZGlyID0gLi5cL3wnIFwKLQkgICAgLWUgJ3N8XnNyY2RpciA9IFwoLipcKXxzcmNkaXIgPSAufCcgXAotCSAgICAtZSAnc3wiYCQoYnVpbHRfcHJvZ3JhbXMpYCJ8ZGlmZnwnIFwKLQkgICAgLWUgJ3N8Z2F3a3xhd2t8ZycgXAotCSAgICAtaSAkdC90ZXN0cy9NYWtlZmlsZQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzXzMuNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZGlmZnV0aWxzL2RpZmZ1dGlsc18zLjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGVhZGQ2MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZGlmZnV0aWxzL2RpZmZ1dGlsc18zLjYuYmIKQEAgLTAsMCArMSwzOSBAQAorTElDRU5TRSA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKworcmVxdWlyZSBkaWZmdXRpbHMuaW5jCisKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9kaWZmdXRpbHMvZGlmZnV0aWxzLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisiCitTUkNfVVJJX2FwcGVuZF9saWJjLWdsaWJjID0gIiBmaWxlOi8vMDAwMS1leHBsaWNpdGx5LWRpc2FibGUtcmVwbGFjaW5nLWdldG9wdC5wYXRjaCIKKworU1JDX1VSSVttZDVzdW1dID0gIjA3Y2YyODY2NzJjZWQyNmZiYTU0Y2QwMzEzYmRjMDcxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ2MjFlOGJkZDRiNTczOTE4YzgxNDVmN2FlNjE4MTdkMWJlOWRlYjRjOGQyMzI4YTY1Y2VhOGUxMWQ3ODNiZDYiCisKK0VYVFJBX09FQ09ORiArPSAiYWNfY3ZfcGF0aF9QUl9QUk9HUkFNPSR7YmluZGlyfS9wciAtLXdpdGhvdXQtbGlic2lnc2Vndi1wcmVmaXgiCisKKyMgRml4ICJBcmd1bWVudCBsaXN0IHRvbyBsb25nIiBlcnJvciB3aGVuIGxlbihUTVBESVIpID0gNDEwCithY3BhdGhzID0gIi1JIC4vbTQiCisKK2luaGVyaXQgcHRlc3QKKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwl0PSR7RH0ke1BURVNUX1BBVEh9CisJaW5zdGFsbCAtRCAke1N9L2J1aWxkLWF1eC90ZXN0LWRyaXZlciAkdC9idWlsZC1hdXgvdGVzdC1kcml2ZXIKKwljcCAtciAke1N9L3Rlc3RzICR0LworCWluc3RhbGwgJHtCfS90ZXN0cy9NYWtlZmlsZSAkdC90ZXN0cy8KKwlzZWQgLWUgJ3MsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAorCSAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCisJICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCisJICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6ZycgXAorCSAgICAtZSAnczoke0JBU0VfV09SS0RJUn0vJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU306OmcnIFwKKwkgICAgLWUgJ3N8Xk1ha2VmaWxlOnxfTWFrZWZpbGU6fCcgXAorCSAgICAtZSAnc3xiYXNofHNofCcgXAorCSAgICAtZSAnc3xedG9wX3NyY2RpciA9IFwoLipcKXx0b3Bfc3JjZGlyID0gLi5cL3wnIFwKKwkgICAgLWUgJ3N8XnNyY2RpciA9IFwoLipcKXxzcmNkaXIgPSAufCcgXAorCSAgICAtZSAnc3wiYCQoYnVpbHRfcHJvZ3JhbXMpYCJ8ZGlmZnwnIFwKKwkgICAgLWUgJ3N8Z2F3a3xhd2t8ZycgXAorCSAgICAtaSAkdC90ZXN0cy9NYWtlZmlsZQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9lZC9lZF8xLjE0LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2VkL2VkXzEuMTQuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2U2YmRlNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2VkL2VkXzEuMTQuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLVNVTU1BUlkgPSAiTGluZS1vcmllbnRlZCB0ZXh0IGVkaXRvciIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9lZC8iCi0KLUxJQ0VOU0UgPSAiR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MGM3MDUxYWVmOTIxOWRjNzIzN2YyMDZjNWM0MTc5YTcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZWQuaDtlbmRsaW5lPTIwO21kNT00ZTM2YjdhNDBlMTM3ZjQyYWVlNzE4MTY1NTkwZDEyNSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9tYWluLmM7ZW5kbGluZT0xNzttZDU9YzViOGY3OGYxMTVkZjE4N2FmNzY4NjhhMmFlYWQxNmEiCi0KLVNFQ1RJT04gPSAiYmFzZSIKLQotIyBMU0Igc3RhdGVzIHRoYXQgZWQgc2hvdWxkIGJlIGluIC9iaW4vCi1iaW5kaXIgPSAiJHtiYXNlX2JpbmRpcn0iCi0KLSMgVXBzdHJlYW0gcmVndWxhcmx5IHJlbW92ZXMgcHJldmlvdXMgcmVsZWFzZXMgZnJvbSBodHRwczovL2Z0cC5nbnUub3JnL2dudS9lZC8KLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzLyR7QlB9LnRhci5seiIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICIke0dOVV9NSVJST1J9L2VkLyIKLQotU1JDX1VSSVttZDVzdW1dID0gIjdmNGE1NGZhN2YzNjY0NzlmMDM2NTRiOGFmNjQ1ZmQwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImZmYjk3ZWI4ZjJhMmI1YTcxYTliOTdlMzg3MmFkY2U5NTNhYTFiODk1OGUwNGM1YjdiZjExZDU1NmYzMjU1MmEiCi0KLUVYVFJBX09FTUFLRSA9ICItZSBNQUtFRkxBR1M9IgotCi1pbmhlcml0IHRleGluZm8KLQotZG9fY29uZmlndXJlKCkgewotCSR7U30vY29uZmlndXJlCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0Jb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCi0JIyBJbmZvIGRpciBsaXN0aW5nIGlzbid0IGludGVyZXN0aW5nIGF0IHRoaXMgcG9pbnQgc28gcmVtb3ZlIGl0IGlmIGl0IGV4aXN0cy4KLQlpZiBbIC1lICIke0R9JHtpbmZvZGlyfS9kaXIiIF07IHRoZW4KLQkJcm0gLWYgJHtEfSR7aW5mb2Rpcn0vZGlyCi0JZmkKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZWQvZWRfMS4xNC4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9lZC9lZF8xLjE0LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODdkMDNiMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZWQvZWRfMS4xNC4yLmJiCkBAIC0wLDAgKzEsMzUgQEAKK1NVTU1BUlkgPSAiTGluZS1vcmllbnRlZCB0ZXh0IGVkaXRvciIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9lZC8iCisKK0xJQ0VOU0UgPSAiR1BMdjMrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MGM3MDUxYWVmOTIxOWRjNzIzN2YyMDZjNWM0MTc5YTcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZWQuaDtlbmRsaW5lPTIwO21kNT00ZTM2YjdhNDBlMTM3ZjQyYWVlNzE4MTY1NTkwZDEyNSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9tYWluLmM7ZW5kbGluZT0xNzttZDU9YzViOGY3OGYxMTVkZjE4N2FmNzY4NjhhMmFlYWQxNmEiCisKK1NFQ1RJT04gPSAiYmFzZSIKKworIyBMU0Igc3RhdGVzIHRoYXQgZWQgc2hvdWxkIGJlIGluIC9iaW4vCitiaW5kaXIgPSAiJHtiYXNlX2JpbmRpcn0iCisKKyMgVXBzdHJlYW0gcmVndWxhcmx5IHJlbW92ZXMgcHJldmlvdXMgcmVsZWFzZXMgZnJvbSBodHRwczovL2Z0cC5nbnUub3JnL2dudS9lZC8KK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9lZC8ke0JQfS50YXIubHoiCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiJHtHTlVfTUlSUk9SfS9lZC8iCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyNzNkMDQ3NzhiMmE1MWY3YzNjYmZjZDIwMDE4NzZiZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmNTc5NjJiYTkzMGQ3MGQwMmZjNzFkNmJlNWM1ZjIzNDZiMTY5OTJhNDU1YWI5YzQzYmU3MDYxZGVjOTgxMGRiIgorCitFWFRSQV9PRU1BS0UgPSAiLWUgTUFLRUZMQUdTPSIKKworaW5oZXJpdCB0ZXhpbmZvCisKK2RvX2NvbmZpZ3VyZSgpIHsKKwkke1N9L2NvbmZpZ3VyZQorfQorCitkb19pbnN0YWxsKCkgeworCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAorCSMgSW5mbyBkaXIgbGlzdGluZyBpc24ndCBpbnRlcmVzdGluZyBhdCB0aGlzIHBvaW50IHNvIHJlbW92ZSBpdCBpZiBpdCBleGlzdHMuCisJaWYgWyAtZSAiJHtEfSR7aW5mb2Rpcn0vZGlyIiBdOyB0aGVuCisJCXJtIC1mICR7RH0ke2luZm9kaXJ9L2RpcgorCWZpCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbF80LjExLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ldGh0b29sL2V0aHRvb2xfNC4xMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZWZlOWI5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ldGh0b29sL2V0aHRvb2xfNC4xMS5iYgpAQCAtMCwwICsxLDMwIEBACitTVU1NQVJZID0gIkRpc3BsYXkgb3IgY2hhbmdlIGV0aGVybmV0IGNhcmQgc2V0dGluZ3MiCitERVNDUklQVElPTiA9ICJBIHNtYWxsIHV0aWxpdHkgZm9yIGV4YW1pbmluZyBhbmQgdHVuaW5nIHRoZSBzZXR0aW5ncyBvZiB5b3VyIGV0aGVybmV0LWJhc2VkIG5ldHdvcmsgaW50ZXJmYWNlcy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lmtlcm5lbC5vcmcvcHViL3NvZnR3YXJlL25ldHdvcmsvZXRodG9vbC8iCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZXRodG9vbC5jO2JlZ2lubGluZT00O2VuZGxpbmU9MTc7bWQ1PWMxOWIzMDU0OGM1ODI1NzdmYzZiNDQzNjI2ZmMxMjE2IgorCitTUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vc29mdHdhcmUvbmV0d29yay9ldGh0b29sL2V0aHRvb2wtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9hdm9pZF9wYXJhbGxlbF90ZXN0cy5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjhmMTA3MjY3OTg4OGM5MzM1ZTQ5YjE3ZWZiNzk4YjRjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImFmMmZkOTY5MmYzMTU5ZDNhYjFlNDFlNmY5YjdkOGRiMmE0NjkzZjFjYjIyMzQ4Yzg4YmE4OWY3MGYwZTY1MDMiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHB0ZXN0CitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSIKKworZG9fY29tcGlsZV9wdGVzdCgpIHsKKyAgIG9lX3J1bm1ha2UgYnVpbGR0ZXN0LVRFU1RTCit9CisKK2RvX2luc3RhbGxfcHRlc3QgKCkgeworICAgY3AgJHtCfS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0KKyAgIGluc3RhbGwgJHtCfS90ZXN0LWNtZGxpbmUgICAgICAgICR7RH0ke1BURVNUX1BBVEh9CisgICBpbnN0YWxsICR7Qn0vdGVzdC1mZWF0dXJlcyAgICAgICAke0R9JHtQVEVTVF9QQVRIfQorICAgaW5zdGFsbCAke0J9L2V0aHRvb2wgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vZXRodG9vbAorICAgc2VkIC1pICdzL15NYWtlZmlsZS9fTWFrZWZpbGUvJyAgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZXRodG9vbC9ldGh0b29sXzQuOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZXRodG9vbC9ldGh0b29sXzQuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWZhZjJlMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbF80LjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1TVU1NQVJZID0gIkRpc3BsYXkgb3IgY2hhbmdlIGV0aGVybmV0IGNhcmQgc2V0dGluZ3MiCi1ERVNDUklQVElPTiA9ICJBIHNtYWxsIHV0aWxpdHkgZm9yIGV4YW1pbmluZyBhbmQgdHVuaW5nIHRoZSBzZXR0aW5ncyBvZiB5b3VyIGV0aGVybmV0LWJhc2VkIG5ldHdvcmsgaW50ZXJmYWNlcy4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lmtlcm5lbC5vcmcvcHViL3NvZnR3YXJlL25ldHdvcmsvZXRodG9vbC8iCi1TRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZXRodG9vbC5jO2JlZ2lubGluZT00O2VuZGxpbmU9MTc7bWQ1PWMxOWIzMDU0OGM1ODI1NzdmYzZiNDQzNjI2ZmMxMjE2IgotCi1TUkNfVVJJID0gImh0dHBzOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWlycm9yL3NvdXJjZXMvZXRodG9vbC0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL2F2b2lkX3BhcmFsbGVsX3Rlc3RzLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMjhjNGE0ZDg1YzMzZjU3M2M0OWZmNmQ4MWVjMDk0ZmQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWJkODJlYmUzZDQxZGUxYjdiMGQ4ZjRmYjE4YThlODQ2NmZiYTkzNGM5NTJiYzVjNTAwMjgzNmZmYThiYjYwNiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcHRlc3QKLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJtYWtlIgotCi1kb19jb21waWxlX3B0ZXN0KCkgewotICAgb2VfcnVubWFrZSBidWlsZHRlc3QtVEVTVFMKLX0KLQotZG9faW5zdGFsbF9wdGVzdCAoKSB7Ci0gICBjcCAke0J9L01ha2VmaWxlICAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfQotICAgaW5zdGFsbCAke0J9L3Rlc3QtY21kbGluZSAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0KLSAgIGluc3RhbGwgJHtCfS90ZXN0LWZlYXR1cmVzICAgICAgICR7RH0ke1BURVNUX1BBVEh9Ci0gICBpbnN0YWxsICR7Qn0vZXRodG9vbCAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9ldGh0b29sCi0gICBzZWQgLWkgJ3MvXk1ha2VmaWxlL19NYWtlZmlsZS8nICAke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9maW5kdXRpbHMvZmluZHV0aWxzLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlscy5pbmMKaW5kZXggYmZlZGY4Ny4uYWQzNjQyOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9maW5kdXRpbHMvZmluZHV0aWxzLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHMuaW5jCkBAIC0xMywxMSArMTMsNCBAQAogQUxURVJOQVRJVkVfJHtQTn0gPSAiZmluZCB4YXJncyIKIEFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKIAotIyBkaWZmdXRpbHMgYXNzdW1lcyBub24tZ2xpYmMgY29tcGlsYXRpb24gd2l0aCB1Y2xpYmMgYW5kCi0jIHRoaXMgY2F1c2VzIGl0IHRvIGdlbmVyYXRlIGl0cyBvd24gaW1wbGVtZW50YXRpb25zIG9mCi0jIHN0YW5kYXJkIGZ1bmN0aW9uYWxpdHkuICByZWdleC5jIGFjdHVhbGx5IGJyZWFrcyBjb21waWxhdGlvbgotIyBiZWNhdXNlIGl0IHVzZXMgX19tZW1wY3B5LCB0aGVyZSBhcmUgb3RoZXIgdGhpbmdzIChUQkQ6Ci0jIHNlZSBkaWZmdXRpbHMubWsgaW4gYnVpbGRyb290KQotRVhUUkFfT0VDT05GX2xpYmMtdWNsaWJjID0gIi0td2l0aG91dC1pbmNsdWRlZC1yZWdleCIKLQogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9mb29tYXRpYy9mb29tYXRpYy1maWx0ZXJzXzQuMC4xNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZm9vbWF0aWMvZm9vbWF0aWMtZmlsdGVyc180LjAuMTcuYmIKaW5kZXggM2Y0MzllNy4uNzQyYzlhNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9mb29tYXRpYy9mb29tYXRpYy1maWx0ZXJzXzQuMC4xNy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Zvb21hdGljL2Zvb21hdGljLWZpbHRlcnNfNC4wLjE3LmJiCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJPcGVuUHJpbnRpbmcgcHJpbnRlciBzdXBwb3J0IC0gZmlsdGVycyIKK0hPTUVQQUdFID0gImh0dHBzOi8vd2lraS5saW51eGZvdW5kYXRpb24ub3JnL29wZW5wcmludGluZy9zdGFydCIKIERFU0NSSVBUSU9OID0gIkZvb21hdGljIGlzIGEgcHJpbnRlciBkYXRhYmFzZSBkZXNpZ25lZCB0byBtYWtlIGl0IGVhc2llciB0byBzZXQgdXAgXAogY29tbW9uIHByaW50ZXJzIGZvciB1c2Ugd2l0aCBVTklYLWxpa2Ugb3BlcmF0aW5nIHN5c3RlbXMuXAogSXQgcHJvdmlkZXMgdGhlICJnbHVlIiBiZXR3ZWVuIGEgcHJpbnQgc3Bvb2xlciAobGlrZSBDVVBTIG9yIGxwcikgYW5kIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2F3ay9nYXdrXzQuMS40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nYXdrL2dhd2tfNC4xLjQuYmIKaW5kZXggZGRhMzhlZi4uOTk1ZDM3ZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nYXdrL2dhd2tfNC4xLjQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nYXdrL2dhd2tfNC4xLjQuYmIKQEAgLTQxLDkgKzQxLDkgQEAKIAogZG9faW5zdGFsbF9wdGVzdCgpIHsKIAlta2RpciAke0R9JHtQVEVTVF9QQVRIfS90ZXN0Ci0JZm9yIGkgaW4gYGdyZXAgLXZFICJAfF4kfCN8R3QtZHVtbXkiICR7U30vdGVzdC9NYWtldGVzdHMgfGF3ayAtRjogJ3twcmludCAkMX0nYCBNYWtldGVzdHM7IFwKKwlmb3IgaSBpbiBgZ3JlcCAtdkUgIkB8XiR8I3xHdC1kdW1teSIgJHtTfS90ZXN0L01ha2V0ZXN0cyB8YXdrIC1GOiAne3ByaW50ICQxfSdgIE1ha2V0ZXN0cyBpbmNsaWIuYXdrOyBcCiAJICBkbyBjcCAke1N9L3Rlc3QvJGkqICR7RH0ke1BURVNUX1BBVEh9L3Rlc3Q7IFwKIAlkb25lCiB9CiAKLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgorQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNi0xMDIxOS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTYtMTAyMTkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3NGFiZTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNi0xMDIxOS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLUZyb20gNGJlZjFhMWQzMmUyOWI2ODg1NTYxNjAyMGRiZmY1NzRiOWNkYTA4ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvYmluIFdhdHRzIDxSb2Jpbi5XYXR0c0BhcnRpZmV4LmNvbT4KLURhdGU6IFRodSwgMjkgRGVjIDIwMTYgMTU6NTc6NDMgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gQnVnIDY5NzQ1MzogQXZvaWQgZGl2aWRlIGJ5IDAgaW4gc2NhbiBjb252ZXJzaW9uIGNvZGUuCi0KLUFyaXRobWV0aWMgb3ZlcmZsb3cgZHVlIHRvIGV4dHJlbWUgdmFsdWVzIGluIHRoZSBzY2FuIGNvbnZlcnNpb24KLWNvZGUgY2FuIGNhdXNlIGEgZGl2aXNpb24gYnkgMC4KLQotQXZvaWQgdGhpcyB3aXRoIGEgc2ltcGxlIGV4dHJhIGNoZWNrLgotCi0gIGR4X29sZD1jZjgxNGQ4MQotICBlbmRwLT54X25leHQ9YjBlODU5YjkKLSAgYWxwLT54X25leHQ9ODA2OWE3M2EKLQotbGVhZHMgdG8gZHhfZGVuID0gMAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE2LTEwMjE5Ci0KLVNpZ25lZC1vZmYtYnk6IENhdGFsaW4gRW5hY2hlIDxjYXRhbGluLmVuYWNoZUB3aW5kcml2ZXIuY29tPgotLS0tCi0gYmFzZS9neGZpbGwuYyB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9iYXNlL2d4ZmlsbC5jIGIvYmFzZS9neGZpbGwuYwotaW5kZXggOTkxOTZjMC4uMmY4MWJiMCAxMDA2NDQKLS0tLSBhL2Jhc2UvZ3hmaWxsLmMKLSsrKyBiL2Jhc2UvZ3hmaWxsLmMKLUBAIC0xNzQxLDcgKzE3NDEsNyBAQCBpbnRlcnNlY3QoYWN0aXZlX2xpbmUgKmVuZHAsIGFjdGl2ZV9saW5lICphbHAsIGZpeGVkIHksIGZpeGVkIHkxLCBmaXhlZCAqcF95X25ldwotICAgICBmaXhlZCBkeF9vbGQgPSBhbHAtPnhfY3VycmVudCAtIGVuZHAtPnhfY3VycmVudDsKLSAgICAgZml4ZWQgZHhfZGVuID0gZHhfb2xkICsgZW5kcC0+eF9uZXh0IC0gYWxwLT54X25leHQ7Ci0gCi0tICAgIGlmIChkeF9kZW4gPD0gZHhfb2xkKQotKyAgICBpZiAoZHhfZGVuIDw9IGR4X29sZCB8fCBkeF9kZW4gPT0gMCkKLSAgICAgICAgIHJldHVybiBmYWxzZTsgLyogSW50ZXJzZWN0aW9uIGlzbid0IHBvc3NpYmxlLiAqLwotICAgICBkeSA9IHkxIC0geTsKLSAgICAgaWZfZGVidWczKCdGJywgIltGXWNyb3NzOiBkeT0lZywgZHhfb2xkPSVnLCBkeF9uZXc9JWdcbiIsCi1AQCAtMTc1MCw3ICsxNzUwLDcgQEAgaW50ZXJzZWN0KGFjdGl2ZV9saW5lICplbmRwLCBhY3RpdmVfbGluZSAqYWxwLCBmaXhlZCB5LCBmaXhlZCB5MSwgZml4ZWQgKnBfeV9uZXcKLSAgICAgLyogRG8gdGhlIGNvbXB1dGF0aW9uIGluIHNpbmdsZSBwcmVjaXNpb24gKi8KLSAgICAgLyogaWYgdGhlIHZhbHVlcyBhcmUgc21hbGwgZW5vdWdoLiAqLwotICAgICB5X25ldyA9Ci0tICAgICAgICAoKGR5IHwgZHhfb2xkKSA8IDFMIDw8IChzaXplX29mKGZpeGVkKSAqIDQgLSAxKSA/Ci0rICAgICAgICAoKCh1Zml4ZWQpKGR5IHwgZHhfb2xkKSkgPCAoMUwgPDwgKHNpemVfb2YoZml4ZWQpICogNCAtIDEpKSA/Ci0gICAgICAgICAgZHkgKiBkeF9vbGQgLyBkeF9kZW4gOgotICAgICAgICAgIChJTkNSX0VYUFIobXFfY3Jvc3MpLCBmaXhlZF9tdWx0X3F1byhkeSwgZHhfb2xkLCBkeF9kZW4pKSkKLSAgICAgICAgICsgeTsKLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTYtMTAyMjAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE2LTEwMjIwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZTFlOGJhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTYtMTAyMjAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi1Gcm9tIGRhZjg1NzAxZGFiMDVmMTdlOTI0YTQ4YTgxZWRjOTE5NWI0YTA0ZTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLZW4gU2hhcnAgPGtlbi5zaGFycEBhcnRpZmV4LmNvbT4KLURhdGU6IFdlZCwgMjEgRGVjIDIwMTYgMTY6NTQ6MTQgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gZml4IGNyYXNoIHdpdGggYmFkIGRhdGEgc3VwcGxpZWQgdG8gbWFrZWltYWdlZGV2aWNlCi0KLUJ1ZyAjNjk3NDUwICJOdWxsIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gZ3hfZGV2aWNlX2ZpbmFsaXplKCkiCi0KLVRoZSBwcm9ibGVtIGhlcmUgaXMgdGhhdCB0aGUgY29kZSB0byBmaW5hbGlzZSBhIGRldmljZSB1bmNvbmRpdGlvbmFsbHkKLWZyZWVzIHRoZSBpY2Nfc3RydWN0IG1lbWJlciBvZiB0aGUgZGV2aWNlIHN0cnVjdHVyZS4gSG93ZXZlciB0aGlzCi1wYXJ0aWN1bGFyICh3ZWlyZCkgZGV2aWNlIGlzIG5vdCBzZXR1cCBhcyBhIG5vcm1hbCBkZXZpY2UsIHByb2JhYmx5Ci1iZWNhdXNlIGl0cyB2ZXJ5LCB2ZXJ5IGFuY2llbnQuIEl0cyBwb3NzaWJsZSBmb3IgdGhlIGluaXRpYWxpc2F0aW9uCi1vZiB0aGUgZGV2aWNlIHRvIGFib3J0IHdpdGggYW4gZXJyb3IgYmVmb3JlIGNhbGxpbmcgZ3NfbWFrZV9tZW1fZGV2aWNlKCkKLXdoaWNoIGlzIHdoZXJlIHRoZSBpY2Nfc3RydWN0IG1lbWJlciBnZXRzIGFsbG9jYXRlZCAob3Igc2V0IHRvIE5VTEwpLgotCi1JZiB0aGF0IGhhcHBlbnMsIHRoZW4gdGhlIGNsZWFudXAgY29kZSB0cmllcyB0byBmcmVlIHRoZSBkZXZpY2UsIHdoaWNoCi1jYWxscyBmaW5hbGl6ZSgpIHdoaWNoIHRyaWVzIHRvIGZyZWUgYSBnYXJiYWdlIHBvaW50ZXIuCi0KLVNldHRpbmcgdGhlIGRldmljZSBtZW1vcnkgdG8gMHgwMCBhZnRlciB3ZSBhbGxvY2F0ZSBpdCBtZWFucyB0aGF0IHRoZQotaWNjX3N0cnVjdCBtZW1iZXIgd2lsbCBiZSBOVUxMPCBhbmQgb3VyIG1lbW9yeSBtYW5hZ2VyIGFsbG93cyBmb3IgdGhhdAotaGFwcGlseSBlbm91Z2gsIHdoaWNoIGF2b2lkcyB0aGUgcHJvYmxlbS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNi0xMDIyMAotCi1TaWduZWQtb2ZmLWJ5OiBDYXRhbGluIEVuYWNoZSA8Y2F0YWxpbi5lbmFjaGVAd2luZHJpdmVyLmNvbT4KLS0tLQotIGJhc2UvZ3NkZXZtZW0uYyB8IDEyICsrKysrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9iYXNlL2dzZGV2bWVtLmMgYi9iYXNlL2dzZGV2bWVtLmMKLWluZGV4IDk3YjljZjQuLmZlNzViY2MgMTAwNjQ0Ci0tLS0gYS9iYXNlL2dzZGV2bWVtLmMKLSsrKyBiL2Jhc2UvZ3NkZXZtZW0uYwotQEAgLTIyNSw2ICsyMjUsMTggQEAgZ3NfbWFrZXdvcmRpbWFnZWRldmljZShneF9kZXZpY2UgKiogcG5ld19kZXYsIGNvbnN0IGdzX21hdHJpeCAqIHBtYXQsCi0gCi0gICAgIGlmIChwbmV3ID09IDApCi0gICAgICAgICByZXR1cm5fZXJyb3IoZ3NfZXJyb3JfVk1lcnJvcik7Ci0rCi0rICAgIC8qIEJ1ZyAjNjk3NDUwICJOdWxsIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gZ3hfZGV2aWNlX2ZpbmFsaXplKCkiCi0rICAgICAqIElmIHdlIGhhdmUgaW5jb3JyZWN0IGRhdGEgcGFzc2VkIHRvIGdzX2luaXRpYWxpc2Vfd29yZGltYWdlZGV2aWNlKCkgdGhlbiB0aGUKLSsgICAgICogaW5pdGlhbGlzYXRpb24gd2lsbCBmYWlsLCBjcnVjaWFsbHkgaXQgd2lsbCBmYWlsICpiZWZvcmUqIGl0IGNhbGxzCi0rICAgICAqIGdzX21ha2VfbWVtX2RldmljZSgpIHdoaWNoIGluaXRpYWxpc2VzIHRoZSBkZXZpY2UuIFRoaXMgbWVhbnMgdGhhdCB0aGUKLSsgICAgICogaWNjX3N0cnVjdCBtZW1iZXIgd2lsbCBiZSB1bmluaXRpYWxzZWQsIGJ1dCB0aGUgZGV2aWNlIGZpbmFsaXNlIG1ldGhvZAotKyAgICAgKiB3aWxsIHVuY29uZGl0aW9uYWxseSBmcmVlIHRoYXQgbWVtb3J5LiBTaW5jZSBpdHMgYSBnYXJiYWdlIHBvaW50ZXIsIGJhZCB0aGluZ3MgaGFwcGVuLgotKyAgICAgKiBBcHBhcmVudGx5IHdlIGRvIHN0aWxsIG5lZWQgbWFrZWltYWdlZGV2aWNlIHRvIGJlIGF2YWlsYWJsZSBmcm9tCi0rICAgICAqIFBvc3RTY3JpcHQsIHNvIGluIGhlcmUganVzdCB6ZXJvIHRoZSBkZXZpY2UgbWVtb3J5LCB3aGljaCBtZWFucyB0aGF0Ci0rICAgICAqIHRoZSBmaW5hbGlzZSByb3V0aW5lIHdvbid0IGhhdmUgYSBwcm9ibGVtLgotKyAgICAgKi8KLSsgICAgbWVtc2V0KHBuZXcsIDB4MDAsIHN0X2RldmljZV9tZW1vcnkuc3NpemUpOwotICAgICBjb2RlID0gZ3NfaW5pdGlhbGl6ZV93b3JkaW1hZ2VkZXZpY2UocG5ldywgcG1hdCwgd2lkdGgsIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9ycywgbnVtX2NvbG9ycywgd29yZF9vcmllbnRlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VfZGV2aWNlLCBtZW0pOwotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNi03OTc4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNi03OTc4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NjhmMjA1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTYtNzk3OC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLUZyb20gNmY3NDljMGM0NGU3YjllMDk3MzdiOWYyOWVkZjI5OTI1YTM0ZjBjZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENocmlzIExpZGRlbGwgPGNocmlzLmxpZGRlbGxAYXJ0aWZleC5jb20+Ci1EYXRlOiBXZWQsIDUgT2N0IDIwMTYgMDk6NTk6MjUgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gQnVnIDY5NzE3OTogUmVmZXJlbmNlIGNvdW50IGRldmljZSBpY2MgcHJvZmlsZQotCi13aGVuIGNvcHlpbmcgYSBkZXZpY2UKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNi03OTc4Ci0KLVNpZ25lZC1vZmYtYnk6IENhdGFsaW4gRW5hY2hlIDxjYXRhbGluLmVuYWNoZUB3aW5kcml2ZXIuY29tPgotLS0tCi0gYmFzZS9nc2RldmljZS5jIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9iYXNlL2dzZGV2aWNlLmMgYi9iYXNlL2dzZGV2aWNlLmMKLWluZGV4IDc3ODEwNmYuLmFlYTk4NmEgMTAwNjQ0Ci0tLS0gYS9iYXNlL2dzZGV2aWNlLmMKLSsrKyBiL2Jhc2UvZ3NkZXZpY2UuYwotQEAgLTYxNCw2ICs2MTQsNyBAQCBneF9kZXZpY2VfaW5pdChneF9kZXZpY2UgKiBkZXYsIGNvbnN0IGd4X2RldmljZSAqIHByb3RvLCBnc19tZW1vcnlfdCAqIG1lbSwKLSAgICAgZGV2LT5tZW1vcnkgPSBtZW07Ci0gICAgIGRldi0+cmV0YWluZWQgPSAhaW50ZXJuYWw7Ci0gICAgIHJjX2luaXQoZGV2LCBtZW0sIChpbnRlcm5hbCA/IDAgOiAxKSk7Ci0rICAgIHJjX2luY3JlbWVudChkZXYtPmljY19zdHJ1Y3QpOwotIH0KLSAKLSB2b2lkCi0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE2LTc5NzkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE2LTc5NzkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllOTMwZDMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNi03OTc5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotRnJvbSA4NzVhMDA5NWYzNzYyNmE3MjFjN2ZmNTdkNjA2YTBmOTVhZjAzOTEzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2VuIFNoYXJwIDxrZW4uc2hhcnBAYXJ0aWZleC5jb20+Ci1EYXRlOiBXZWQsIDUgT2N0IDIwMTYgMTA6MTA6NTggKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gRFNDIHBhcnNlciAtIHZhbGlkYXRlIHBhcmFtZXRlcnMKLQotQnVnICM2OTcxOTAgIi5pbml0aWFsaXplX2RzY19wYXJzZXIgZG9lc24ndCB2YWxpZGF0ZSB0aGUgcGFyYW1ldGVyIGlzIGEgZGljdCB0eXBlIGJlZm9yZSB1c2luZyBpdC4iCi0KLVJlZ2FyZGxlc3Mgb2YgYW55IHNlY3VyaXR5IGltcGxpY2F0aW9ucywgaXRzIHNpbXBseSB3cm9uZyBmb3IgYSBQb3N0U2NyaXB0Ci1vcGVyYXRvciBub3QgdG8gdmFsaWRhdGUgaXRzIHBhcmFtZXRlcihzKS4KLQotTm8gZGlmZmVyZW5jZXMgZXhwZWN0ZWQuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTYtNzk3OQotCi1TaWduZWQtb2ZmLWJ5OiBDYXRhbGluIEVuYWNoZSA8Y2F0YWxpbi5lbmFjaGVAd2luZHJpdmVyLmNvbT4KLS0tLQotIHBzaS96ZHNjcGFycy5jIHwgMTMgKysrKysrKysrLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9wc2kvemRzY3BhcnMuYyBiL3BzaS96ZHNjcGFycy5jCi1pbmRleCBjMDVlMTU0Li45YjRiNjA1IDEwMDY0NAotLS0tIGEvcHNpL3pkc2NwYXJzLmMKLSsrKyBiL3BzaS96ZHNjcGFycy5jCi1AQCAtMTUwLDExICsxNTAsMTYgQEAgemluaXRpYWxpemVfZHNjX3BhcnNlcihpX2N0eF90ICppX2N0eF9wKQotICAgICByZWYgbG9jYWxfcmVmOwotICAgICBpbnQgY29kZTsKLSAgICAgb3NfcHRyIGNvbnN0IG9wID0gb3NwOwotLSAgICBkaWN0ICogY29uc3QgcGRpY3QgPSBvcC0+dmFsdWUucGRpY3Q7Ci0tICAgIGdzX21lbW9yeV90ICogY29uc3QgbWVtID0gKGdzX21lbW9yeV90ICopZGljdF9tZW1vcnkocGRpY3QpOwotLSAgICBkc2NfZGF0YV90ICogY29uc3QgZGF0YSA9Ci0tICAgICAgICBnc19hbGxvY19zdHJ1Y3QobWVtLCBkc2NfZGF0YV90LCAmc3RfZHNjX2RhdGFfdCwgIkRTQyBwYXJzZXIgaW5pdCIpOwotKyAgICBkaWN0ICpwZGljdDsKLSsgICAgZ3NfbWVtb3J5X3QgKm1lbTsKLSsgICAgZHNjX2RhdGFfdCAqZGF0YTsKLSAKLSsgICAgY2hlY2tfcmVhZF90eXBlKCpvcCwgdF9kaWN0aW9uYXJ5KTsKLSsKLSsgICAgcGRpY3QgPSBvcC0+dmFsdWUucGRpY3Q7Ci0rICAgIG1lbSA9IChnc19tZW1vcnlfdCAqKWRpY3RfbWVtb3J5KHBkaWN0KTsKLSsKLSsgICAgZGF0YSA9IGdzX2FsbG9jX3N0cnVjdChtZW0sIGRzY19kYXRhX3QsICZzdF9kc2NfZGF0YV90LCAiRFNDIHBhcnNlciBpbml0Iik7Ci0gICAgIGlmICghZGF0YSkKLSAgICAgICAgIHJldHVybl9lcnJvcihnc19lcnJvcl9WTWVycm9yKTsKLSAgICAgZGF0YS0+ZG9jdW1lbnRfbGV2ZWwgPSAwOwotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNi04NjAyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNi04NjAyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTg1NjdjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTYtODYwMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLUZyb20gZjVjNzU1NWMzMDM5M2U2NGVjMWY1YWIwZGZhZTViNTViM2IzZmM3OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENocmlzIExpZGRlbGwgPGNocmlzLmxpZGRlbGxAYXJ0aWZleC5jb20+Ci1EYXRlOiBTYXQsIDggT2N0IDIwMTYgMTY6MTA6MjcgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gQnVnIDY5NzIwMzogY2hlY2sgZm9yIHN1ZmZpY2llbnQgcGFyYW1zIGluIC5zZXRoYWxmdG9uZTUKLQotYW5kIHBhcmFtIHR5cGVzCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTYtODYwMgotCi1TaWduZWQtb2ZmLWJ5OiBDYXRhbGluIEVuYWNoZSA8Y2F0YWxpbi5lbmFjaGVAd2luZHJpdmVyLmNvbT4KLS0tLQotIHBzaS96aHQyLmMgfCAxMiArKysrKysrKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3BzaS96aHQyLmMgYi9wc2kvemh0Mi5jCi1pbmRleCBmYjRhMjY0Li5kZmEyN2E0IDEwMDY0NAotLS0tIGEvcHNpL3podDIuYwotKysrIGIvcHNpL3podDIuYwotQEAgLTgyLDE0ICs4MiwyMiBAQCB6c2V0aGFsZnRvbmU1KGlfY3R4X3QgKmlfY3R4X3ApCi0gICAgIGdzX21lbW9yeV90ICptZW07Ci0gICAgIHVpbnQgZWRlcHRoID0gcmVmX3N0YWNrX2NvdW50KCZlX3N0YWNrKTsKLSAgICAgaW50IG5wb3AgPSAyOwotLSAgICBpbnQgZGljdF9lbnVtID0gZGljdF9maXJzdChvcCk7Ci0rICAgIGludCBkaWN0X2VudW07Ci0gICAgIHJlZiBydmFsdWVbMl07Ci0gICAgIGludCBjbmFtZSwgY29sb3JhbnRfbnVtYmVyOwotICAgICBieXRlICogcG5hbWU7Ci0gICAgIHVpbnQgbmFtZV9zaXplOwotICAgICBpbnQgaGFsZnRvbmV0eXBlLCB0eXBlID0gMDsKLSAgICAgZ3NfZ3N0YXRlICpwZ3MgPSBpZ3M7Ci0tICAgIGludCBzcGFjZV9pbmRleCA9IHJfc3BhY2VfaW5kZXgob3AgLSAxKTsKLSsgICAgaW50IHNwYWNlX2luZGV4OwotKwotKyAgICBpZiAocmVmX3N0YWNrX2NvdW50KCZvX3N0YWNrKSA8IDIpCi0rICAgICAgICByZXR1cm5fZXJyb3IoZ3NfZXJyb3Jfc3RhY2t1bmRlcmZsb3cpOwotKyAgICBjaGVja190eXBlKCpvcCwgdF9kaWN0aW9uYXJ5KTsKLSsgICAgY2hlY2tfdHlwZSgqKG9wIC0gMSksIHRfZGljdGlvbmFyeSk7Ci0rCi0rICAgIGRpY3RfZW51bSA9IGRpY3RfZmlyc3Qob3ApOwotKyAgICBzcGFjZV9pbmRleCA9IHJfc3BhY2VfaW5kZXgob3AgLSAxKTsKLSAKLSAgICAgbWVtID0gKGdzX21lbW9yeV90ICopIGlkbWVtb3J5LT5zcGFjZXNfaW5kZXhlZFtzcGFjZV9pbmRleF07Ci0gCi0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE3LTc5NzUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE3LTc5NzUucGF0Y2gKaW5kZXggZDA4ODZjOS4uZTQwNjA4NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxNy03OTc1LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTctNzk3NS5wYXRjaApAQCAtMSw2ICsxLDcgQEAKLUZyb20gNWU1N2U0ODMyOThkYWU4YjhkNGVjOWFhYjM3YTUyNjczNmFjMmU5NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFNoYWlsZXNoIE1pc3RyeSA8c2hhaWxlc2gubWlzdHJ5QGhvdG1haWwuY28udWs+Ci1EYXRlOiBXZWQsIDI2IEFwciAyMDE3IDIyOjEyOjE0ICswMTAwCitGcm9tIGIzOWJlMTAxOWI0YWNjMWFhNTBjNjAyNjQ2M2M1NDMzMzJlOTVhMzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDYXRhbGluIEVuYWNoZSA8Y2F0YWxpbi5lbmFjaGVAd2luZHJpdmVyLmNvbT4KK0RhdGU6IE1vbiwgOCBNYXkgMjAxNyAxNjoxODoxNCArMDMwMAorCiBTdWJqZWN0OiBbUEFUQ0hdIEJ1ZyA2OTc2OTM6IFByZXZlbnQgU0VHViBkdWUgdG8gaW50ZWdlciBvdmVyZmxvdy4KIAogV2hpbGUgYnVpbGRpbmcgYSBIdWZmbWFuIHRhYmxlLCB0aGUgc3RhcnQgYW5kIGVuZCBwb2ludHMgd2VyZSBzdXNjZXB0aWJsZQpAQCAtMTIsMTUgKzEzLDE3IEBACiBDVkU6IENWRS0yMDE3LTc5NzUKIAogU2lnbmVkLW9mZi1ieTogQ2F0YWxpbiBFbmFjaGUgPGNhdGFsaW4uZW5hY2hlQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBqYmlnMmRlYy9qYmlnMl9odWZmbWFuLmMgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvamJpZzJkZWMvamJpZzJfaHVmZm1hbi5jIGIvamJpZzJkZWMvamJpZzJfaHVmZm1hbi5jCi1pbmRleCA1MTFlNDYxLi5iNDE4OWExIDEwMDY0NAorQ29udGVudHMgb2YgdGhpcyBwYXRjaCB3ZXJlIGV4dHJhY3RlZCBmcm9tIGEgbGFyZ2VyIHBhdGNoIHdoaWNoIGFkZHJlc3NlZAordHdvIENWRSdzLiAgVGhlIGNvbnRleHQgKGxvY2F0aW9uIG9mIHspIHdhcyBhbHNvIG1vZGlmaWVkIHRvIGFwcGx5IHRvCitnaG9zdHNjcmlwdCA5LjIxLgorCitTaWduZWQtb2ZmLWJ5OiBKb2UgU2xhdGVyIDxqb2Uuc2xhdGVyQHdpbmRyaXZlci5jb20+CisKKwogLS0tIGEvamJpZzJkZWMvamJpZzJfaHVmZm1hbi5jCiArKysgYi9qYmlnMmRlYy9qYmlnMl9odWZmbWFuLmMKLUBAIC00MjEsOCArNDIxLDggQEAgamJpZzJfYnVpbGRfaHVmZm1hbl90YWJsZShKYmlnMkN0eCAqY3R4LCBjb25zdCBKYmlnMkh1ZmZtYW5QYXJhbXMgKnBhcmFtcykKK0BAIC00MjEsOCArNDIxLDggQEAgamJpZzJfYnVpbGRfaHVmZm1hbl90YWJsZShKYmlnMkN0eCAqY3R4LAogIAogICAgICAgICAgICAgIGlmIChQUkVGTEVOID09IENVUkxFTikgewogICAgICAgICAgICAgICAgICBpbnQgUkFOR0VMRU4gPSBsaW5lc1tDVVJURU1QXS5SQU5HRUxFTjsKQEAgLTMxLDYgKzM0LDQgQEAKICAgICAgICAgICAgICAgICAgYnl0ZSBlZmxhZ3MgPSAwOwogIAogICAgICAgICAgICAgICAgICBpZiAoZW5kX2ogPiBtYXhfaikgewotLS0gCi0yLjEwLjIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9hdm9pZC1ob3N0LWNvbnRhbWluYXRpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L2F2b2lkLWhvc3QtY29udGFtaW5hdGlvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDc5NGU3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9hdm9pZC1ob3N0LWNvbnRhbWluYXRpb24ucGF0Y2gKQEAgLTAsMCArMSwxOSBAQAorUmVtb3ZlIGhhcmRjb2RlIHBhdGggcmVmZXIgdG8gaG9zdCB0byBhdm9pZCBob3N0IGNvbnRhbWluYXRpb24uCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgorLS0tCitkaWZmIC0tZ2l0IGEvZGV2aWNlcy9kZXZzLm1hayBiL2RldmljZXMvZGV2cy5tYWsKK2luZGV4IDMwNzBkMmUuLmRmNjYzZjAgMTAwNjQ0CistLS0gYS9kZXZpY2VzL2RldnMubWFrCisrKysgYi9kZXZpY2VzL2RldnMubWFrCitAQCAtNTQ2LDcgKzU0Niw3IEBAICQoREVWT0JKKWdkZXZ4YWx0LiQoT0JKKSA6ICQoREVWU1JDKWdkZXZ4YWx0LmMgJChHREVWWCkgJChtYXRoX19oKSAkKG1lbW9yeV9faClcCisgIyMjIE5PTiBQT1JUQUJMRSwgT05MWSBVTklYIFdJVEggR0NDIFNVUFBPUlQKKyAKKyAkKERFVk9CSilYMTEuc28gOiAkKHgxMWFsdF8pICQoeDExXykgJChERVZTX01BSykgJChNQUtFRElSUykKKy0JJChDQ0xEKSAkKExERkxBR1MpIC1zaGFyZWQgLW8gJChERVZPQkopWDExLnNvICQoeDExYWx0XykgJCh4MTFfKSAtTC91c3IvWDExUjYvbGliIC1sWHQgLWxTTSAtbElDRSAtbFhleHQgLWxYMTEgJChYTElCRElSUykKKysJJChDQ0xEKSAkKExERkxBR1MpIC1zaGFyZWQgLW8gJChERVZPQkopWDExLnNvICQoeDExYWx0XykgJCh4MTFfKSAtbFh0IC1sU00gLWxJQ0UgLWxYZXh0IC1sWDExICQoWExJQkRJUlMpCisgCisgIyMjIyMjIC0tLS0tLS0tLS0tLS0tLSBNZW1vcnktYnVmZmVyZWQgcHJpbnRlciBkZXZpY2VzIC0tLS0tLS0tLS0tLS0tLSAjIyMjIyMKKyAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQtOS4wMi1wcmV2ZW50X3JlY29tcGlsaW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC05LjAyLXByZXZlbnRfcmVjb21waWxpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3MDkxOTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC05LjAyLXByZXZlbnRfcmVjb21waWxpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi1KdXN0IHVzZSBjb21tYW5kcyBwcm92aWRlZCBieSBnaG9zdHNjcmlwdC1uYXRpdmUsIHByZXZlbnRpbmcgcmVjb21waWxlIHRoZW0gd2hlbgotY29tcGlsZSBnaG9zdHNjcmlwdC4KLVdheSB0byBlbmFibGUgY3Jvc3MgY29tcGlsZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEthbmcgS2FpIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogV2Vuem9uZyBGYW4gPHdlbnpvbmcuZmFuQHdpbmRyaXZlci5jb20+Ci0KLVJlYmFzZSB0byA5LjE5Ci1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBiYXNlL3VuaXgtYXV4Lm1hayB8IDY0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMzIgaW5zZXJ0aW9ucygrKSwgMzIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9iYXNlL3VuaXgtYXV4Lm1hayBiL2Jhc2UvdW5peC1hdXgubWFrCi1pbmRleCAwMTEwNjY3Li5lMmViMWExIDEwMDY0NAotLS0tIGEvYmFzZS91bml4LWF1eC5tYWsKLSsrKyBiL2Jhc2UvdW5peC1hdXgubWFrCi1AQCAtNzEsNDQgKzcxLDQ0IEBAICQoR0xPQkopZ3Bfc3lzdi4kKE9CSik6ICQoR0xTUkMpZ3Bfc3lzdi5jICQoc3RkaW9fX2gpICQodGltZV9faCkgJChBSylcCi0gCi0gIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBBdXhpbGlhcnkgcHJvZ3JhbXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKLSAKLS0kKEVDSE9HU19YRSk6ICQoR0xTUkMpZWNob2dzLmMgJChBSykgJChzdGRwcmVfaCkgJChVTklYX0FVWF9NQUspICQoTUFLRURJUlMpCi0tCSQoQ0NBVVhfKSAkKElfKSQoR0xTUkNESVIpJChfSSkgJChPXykkKEVDSE9HU19YRSkgJChHTFNSQyllY2hvZ3MuYyAkKEFVWEVYVFJBTElCUykKLS0KLSsjJChFQ0hPR1NfWEUpOiAkKEdMU1JDKWVjaG9ncy5jICQoQUspICQoc3RkcHJlX2gpICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQotKyMJJChDQ0FVWF8pICQoSV8pJChHTFNSQ0RJUikkKF9JKSAkKE9fKSQoRUNIT0dTX1hFKSAkKEdMU1JDKWVjaG9ncy5jICQoQVVYRVhUUkFMSUJTKQotKyMKLSAjIE9uIHRoZSBSUy82MDAwIChhdCBsZWFzdCksIGNvbXBpbGluZyBnZW5hcmNoLmMgd2l0aCBnY2Mgd2l0aCAtTwotICMgcHJvZHVjZXMgYSBidWdneSBleGVjdXRhYmxlLgotLSQoR0VOQVJDSF9YRSk6ICQoR0xTUkMpZ2VuYXJjaC5jICQoQUspICQoR0VOQVJDSF9ERVBTKSAkKFVOSVhfQVVYX01BSykgJChNQUtFRElSUykKLS0JJChDQ0FVWF8pICQoSV8pJChHTFNSQ0RJUikkKF9JKSAkKE9fKSQoR0VOQVJDSF9YRSkgJChHTFNSQylnZW5hcmNoLmMgJChBVVhFWFRSQUxJQlMpCi0tCi0tJChHRU5DT05GX1hFKTogJChHTFNSQylnZW5jb25mLmMgJChBSykgJChHRU5DT05GX0RFUFMpICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQotLQkkKENDQVVYXykgJChJXykkKEdMU1JDRElSKSQoX0kpICQoT18pJChHRU5DT05GX1hFKSAkKEdMU1JDKWdlbmNvbmYuYyAkKEFVWEVYVFJBTElCUykKLS0KLS0kKEdFTkRFVl9YRSk6ICQoR0xTUkMpZ2VuZGV2LmMgJChBSykgJChHRU5ERVZfREVQUykgJChVTklYX0FVWF9NQUspICQoTUFLRURJUlMpCi0tCSQoQ0NBVVhfKSAkKElfKSQoR0xTUkNESVIpJChfSSkgJChPXykkKEdFTkRFVl9YRSkgJChHTFNSQylnZW5kZXYuYyAkKEFVWEVYVFJBTElCUykKLS0KLS0kKEdFTkhUX1hFKTogJChHTFNSQylnZW5odC5jICQoQUspICQoR0VOSFRfREVQUykgJChVTklYX0FVWF9NQUspICQoTUFLRURJUlMpCi0tCSQoQ0NBVVhfKSAkKEdFTkhUX0NGTEFHUykgJChPXykkKEdFTkhUX1hFKSAkKEdMU1JDKWdlbmh0LmMgJChBVVhFWFRSQUxJQlMpCi0tCi0rIyQoR0VOQVJDSF9YRSk6ICQoR0xTUkMpZ2VuYXJjaC5jICQoQUspICQoR0VOQVJDSF9ERVBTKSAkKFVOSVhfQVVYX01BSykgJChNQUtFRElSUykKLSsjCSQoQ0NBVVhfKSAkKElfKSQoR0xTUkNESVIpJChfSSkgJChPXykkKEdFTkFSQ0hfWEUpICQoR0xTUkMpZ2VuYXJjaC5jICQoQVVYRVhUUkFMSUJTKQotKyMKLSsjJChHRU5DT05GX1hFKTogJChHTFNSQylnZW5jb25mLmMgJChBSykgJChHRU5DT05GX0RFUFMpICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQotKyMJJChDQ0FVWF8pICQoSV8pJChHTFNSQ0RJUikkKF9JKSAkKE9fKSQoR0VOQ09ORl9YRSkgJChHTFNSQylnZW5jb25mLmMgJChBVVhFWFRSQUxJQlMpCi0rIwotKyMkKEdFTkRFVl9YRSk6ICQoR0xTUkMpZ2VuZGV2LmMgJChBSykgJChHRU5ERVZfREVQUykgJChVTklYX0FVWF9NQUspICQoTUFLRURJUlMpCi0rIwkkKENDQVVYXykgJChJXykkKEdMU1JDRElSKSQoX0kpICQoT18pJChHRU5ERVZfWEUpICQoR0xTUkMpZ2VuZGV2LmMgJChBVVhFWFRSQUxJQlMpCi0rIwotKyMkKEdFTkhUX1hFKTogJChHTFNSQylnZW5odC5jICQoQUspICQoR0VOSFRfREVQUykgJChVTklYX0FVWF9NQUspICQoTUFLRURJUlMpCi0rIwkkKENDQVVYXykgJChHRU5IVF9DRkxBR1MpICQoT18pJChHRU5IVF9YRSkgJChHTFNSQylnZW5odC5jICQoQVVYRVhUUkFMSUJTKQotKyMKLSAjIFRvIGdldCBHUyB0byB1c2UgdGhlIHN5c3RlbSB6bGliLCB5b3UgcmVtb3ZlL2hpZGUgdGhlIGdzL3psaWIgZGlyZWN0b3J5Ci0gIyB3aGljaCBtZWFucyB0aGF0IHRoZSBta3JvbWZzIGJ1aWxkIGNhbid0IGZpbmQgdGhlIHpsaWIgc291cmNlIGl0IG5lZWRzLgotICMgU28gaXQncyBzcGxpdCBpbnRvIHR3byB0YXJnZXRzLCBvbmUgdXNpbmcgdGhlIHpsaWIgc291cmNlIGRpcmVjdGx5Li4uLi4KLS1NS1JPTUZTX09CSlNfMD0kKE1LUk9NRlNfWkxJQl9PQkpTKSAkKEFVWClncG1pc2MuJChPQkopICQoQVVYKWdwX2dldG52LiQoT0JKKSBcCi0tICQoQVVYKWdzY2RlZnMuJChPQkopICQoQVVYKWdwX3VuaXguJChPQkopICQoQVVYKWdwX3VuaWZzLiQoT0JKKSAkKEFVWClncF91bmlmbi4kKE9CSikgXAotLSAkKEFVWClncF9zdGRpYS4kKE9CSikgJChBVVgpZ3N1dGlsLiQoT0JKKSAkKEFVWCltZW1lbnRvLiQoT0JKKQotLQotLSQoTUtST01GU19YRSlfMDogJChHTFNSQylta3JvbWZzLmMgJChNS1JPTUZTX0NPTU1PTl9ERVBTKSAkKE1LUk9NRlNfT0JKU18wKSAkKFVOSVhfQVVYX01BSykgJChNQUtFRElSUykKLS0JJChDQ0FVWF8pICQoR0VOT1BUKSAkKENGTEFHUykgJChJXykkKEdMU1JDRElSKSQoX0kpICQoSV8pJChHTE9CSikkKF9JKSAkKElfKSQoWlNSQ0RJUikkKF9JKSAkKEdMU1JDKW1rcm9tZnMuYyAkKE9fKSQoTUtST01GU19YRSlfMCAkKE1LUk9NRlNfT0JKU18wKSAkKEFVWEVYVFJBTElCUykKLS0KLSsjTUtST01GU19PQkpTXzA9JChNS1JPTUZTX1pMSUJfT0JKUykgJChBVVgpZ3BtaXNjLiQoT0JKKSAkKEFVWClncF9nZXRudi4kKE9CSikgXAotKyMgJChBVVgpZ3NjZGVmcy4kKE9CSikgJChBVVgpZ3BfdW5peC4kKE9CSikgJChBVVgpZ3BfdW5pZnMuJChPQkopICQoQVVYKWdwX3VuaWZuLiQoT0JKKSBcCi0rIyAkKEFVWClncF9zdGRpYS4kKE9CSikgJChBVVgpZ3N1dGlsLiQoT0JKKSAkKEFVWCltZW1lbnRvLiQoT0JKKQotKyMKLSsjJChNS1JPTUZTX1hFKV8wOiAkKEdMU1JDKW1rcm9tZnMuYyAkKE1LUk9NRlNfQ09NTU9OX0RFUFMpICQoTUtST01GU19PQkpTXzApICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQotKyMJJChDQ0FVWF8pICQoR0VOT1BUKSAkKENGTEFHUykgJChJXykkKEdMU1JDRElSKSQoX0kpICQoSV8pJChHTE9CSikkKF9JKSAkKElfKSQoWlNSQ0RJUikkKF9JKSAkKEdMU1JDKW1rcm9tZnMuYyAkKE9fKSQoTUtST01GU19YRSlfMCAkKE1LUk9NRlNfT0JKU18wKSAkKEFVWEVYVFJBTElCUykKLSsjCi0gIyAuLi4uIGFuZCBvbmUgdXNpbmcgdGhlIHpsaWIgbGlicmFyeSBsaW5rZWQgdmlhIHRoZSBjb21tYW5kIGxpbmUKLS1NS1JPTUZTX09CSlNfMT0kKEFVWClnc2NkZWZzLiQoT0JKKSBcCi0tICQoQVVYKWdwbWlzYy4kKE9CSikgJChBVVgpZ3BfZ2V0bnYuJChPQkopIFwKLS0gJChBVVgpZ3BfdW5peC4kKE9CSikgJChBVVgpZ3BfdW5pZnMuJChPQkopICQoQVVYKWdwX3VuaWZuLiQoT0JKKSBcCi0tICQoQVVYKWdwX3N0ZGlhLiQoT0JKKSAkKEFVWClnc3V0aWwuJChPQkopCi0tCi0tJChNS1JPTUZTX1hFKV8xOiAkKEdMU1JDKW1rcm9tZnMuYyAkKE1LUk9NRlNfQ09NTU9OX0RFUFMpICQoTUtST01GU19PQkpTXzEpICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQotLQkkKENDQVVYXykgJChHRU5PUFQpICQoQ0ZMQUdTKSAkKElfKSQoR0xTUkNESVIpJChfSSkgJChJXykkKEdMT0JKKSQoX0kpICQoSV8pJChaU1JDRElSKSQoX0kpICQoR0xTUkMpbWtyb21mcy5jICQoT18pJChNS1JPTUZTX1hFKV8xICQoTUtST01GU19PQkpTXzEpICQoQVVYRVhUUkFMSUJTKQotLQotLSQoTUtST01GU19YRSk6ICQoTUtST01GU19YRSlfJChTSEFSRV9aTElCKSAkKFVOSVhfQVVYX01BSykgJChNQUtFRElSUykKLS0JJChDUF8pICQoTUtST01GU19YRSlfJChTSEFSRV9aTElCKSAkKE1LUk9NRlNfWEUpCi0rI01LUk9NRlNfT0JKU18xPSQoQVVYKWdzY2RlZnMuJChPQkopIFwKLSsjICQoQVVYKWdwbWlzYy4kKE9CSikgJChBVVgpZ3BfZ2V0bnYuJChPQkopIFwKLSsjICQoQVVYKWdwX3VuaXguJChPQkopICQoQVVYKWdwX3VuaWZzLiQoT0JKKSAkKEFVWClncF91bmlmbi4kKE9CSikgXAotKyMgJChBVVgpZ3Bfc3RkaWEuJChPQkopICQoQVVYKWdzdXRpbC4kKE9CSikKLSsjCi0rIyQoTUtST01GU19YRSlfMTogJChHTFNSQylta3JvbWZzLmMgJChNS1JPTUZTX0NPTU1PTl9ERVBTKSAkKE1LUk9NRlNfT0JKU18xKSAkKFVOSVhfQVVYX01BSykgJChNQUtFRElSUykKLSsjCSQoQ0NBVVhfKSAkKEdFTk9QVCkgJChDRkxBR1MpICQoSV8pJChHTFNSQ0RJUikkKF9JKSAkKElfKSQoR0xPQkopJChfSSkgJChJXykkKFpTUkNESVIpJChfSSkgJChHTFNSQylta3JvbWZzLmMgJChPXykkKE1LUk9NRlNfWEUpXzEgJChNS1JPTUZTX09CSlNfMSkgJChBVVhFWFRSQUxJQlMpCi0rIwotKyMkKE1LUk9NRlNfWEUpOiAkKE1LUk9NRlNfWEUpXyQoU0hBUkVfWkxJQikgJChVTklYX0FVWF9NQUspICQoTUFLRURJUlMpCi0rIwkkKENQXykgJChNS1JPTUZTX1hFKV8kKFNIQVJFX1pMSUIpICQoTUtST01GU19YRSkKLSAKLSAjIFF1ZXJ5IHRoZSBlbnZpcm9ubWVudCB0byBjb25zdHJ1Y3QgZ2NvbmZpZ18uaC4KLSAjIFRoZXNlIGFyZSBhbGwgZGVmaW5lZCBjb25kaXRpb25hbGx5IChleGNlcHQgdGhlIEphc1BFUiBvbmUpLCBzbyB0aGF0Ci0tLSAKLTIuOC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQtOS4xNS1wYXJhbGxlbC1tYWtlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC05LjE1LXBhcmFsbGVsLW1ha2UucGF0Y2gKaW5kZXggOGZhMmM0MC4uM2VjMzk1NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC05LjE1LXBhcmFsbGVsLW1ha2UucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC05LjE1LXBhcmFsbGVsLW1ha2UucGF0Y2gKQEAgLTEwLDYgKzEwLDcgQEAKIDIwMTUgMDA6NDA6MjIgLTA4MDAgIFN1YmplY3Q6IFtQQVRDSF0gY29udHJpYi5tYWs6IGZpeCBmb3IgcGFyYWxsZWwgYnVpbGQKIAogU2lnbmVkLW9mZi1ieTogSHVhbmcgUWl5dSA8aHVhbmdxeS5mbnN0QGNuLmZ1aml0c3UuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICBjb250cmliL2NvbnRyaWIubWFrIHwgMiArKwogIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQtOS4yMS1uYXRpdmUtZml4LWRpc2FibGUtc3lzdGVtLWxpYnRpZmYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L2dob3N0c2NyaXB0LTkuMjEtbmF0aXZlLWZpeC1kaXNhYmxlLXN5c3RlbS1saWJ0aWZmLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmZjNlNjEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L2dob3N0c2NyaXB0LTkuMjEtbmF0aXZlLWZpeC1kaXNhYmxlLXN5c3RlbS1saWJ0aWZmLnBhdGNoCkBAIC0wLDAgKzEsMzcgQEAKK2dob3N0c2NyaXB0LW5hdGl2ZTpmaXggZGlzYWJsZS1zeXN0ZW0tbGlidGlmZgorCitNb2RpZnkgY29uZmlndXJlIHRvIGFkZCB0aGUgY2hlY2sgdG8gbWFrZSBzdXJlCitnaG9zdHNjcmlwIGNvdWxkIHdvcmsgd2hpbGUgc3lzdGVtLWxpYnRpZmYgaXMKK2Rpc2FibGVkLgorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CisKK1VwZGF0ZWQgdG8gYXBwbHkgdG8gZ2hvc3RzY3JpcHQgOS4yMS4KKworU2lnbmVkLW9mZi1ieTogSm9lIFNsYXRlciA8am9lLnNsYXRlckB3aW5kcml2ZXIuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworCisKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMTI1OSw2ICsxMjU5LDcgQEAgY2FzZSAieCR3aXRoX3N5c3RlbV9saWJ0aWZmIiBpbgorIGVzYWMKKyAKKyBpZiB0ZXN0IHgiJFNIQVJFX0xJQlRJRkYiID0geCIwIiA7IHRoZW4KKysgICAgaWYgdGVzdCAtZSAkTElCVElGRkRJUi9jb25maWd1cmU7IHRoZW4KKyAgICAgICBlY2hvICJSdW5uaW5nIGxpYnRpZmYgY29uZmlndXJlIHNjcmlwdC4uLiIKKyAgICAgICBvbGRkaXI9YHB3ZGAKKyAgICAgICBpZiAhIHRlc3QgLWQgIiRMSUJUSUZGQ09ORkRJUiIgOyB0aGVuCitAQCAtMTI3Miw2ICsxMjczLDEwIEBAIGlmIHRlc3QgeCIkU0hBUkVfTElCVElGRiIgPSB4IjAiIDsgdGhlbgorICAgICAgIGNkICIkb2xkZGlyIgorICAgICAgIGVjaG8KKyAgICAgICBlY2hvICJDb250aW51aW5nIHdpdGggR2hvc3RzY3JpcHQgY29uZmlndXJhdGlvbi4uLiIKKysgICAgZWxzZQorKyAgICAgIEFDX01TR19OT1RJQ0UoW0NvdWxkIG5vdCBmaW5kIGxvY2FsIGNvcHkgb2YgbGlidGlmZi4KKytEaXNhYmxpbmcgdGlmZiBvdXRwdXQgZGV2aWNlcy5dKQorKyAgICBmaQorIGZpCisgCisgQUNfU1VCU1QoU0hBUkVfTElCVElGRikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQtOS4yMS1wcmV2ZW50X3JlY29tcGlsaW5nLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC05LjIxLXByZXZlbnRfcmVjb21waWxpbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjJjNmQwNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQtOS4yMS1wcmV2ZW50X3JlY29tcGlsaW5nLnBhdGNoCkBAIC0wLDAgKzEsOTYgQEAKK0p1c3QgdXNlIGNvbW1hbmRzIHByb3ZpZGVkIGJ5IGdob3N0c2NyaXB0LW5hdGl2ZSwgcHJldmVudGluZyByZWNvbXBpbGUgdGhlbSB3aGVuCitjb21waWxlIGdob3N0c2NyaXB0LgorV2F5IHRvIGVuYWJsZSBjcm9zcyBjb21waWxlLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2FuZyBLYWkgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBXZW56b25nIEZhbiA8d2Vuem9uZy5mYW5Ad2luZHJpdmVyLmNvbT4KKworUmViYXNlIHRvIDkuMTkKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKworUmViYXNlIHRvIDkuMjEKK1NpZ25lZC1vZmYtYnk6IEpvZSBTbGF0ZXIgPGpvZS5zbGF0ZXJAd2luZHJpdmVyLmNvbT4KKworLS0tIGEvYmFzZS91bml4LWF1eC5tYWsKKysrKyBiL2Jhc2UvdW5peC1hdXgubWFrCitAQCAtNjYsNDUgKzY2LDQ1IEBAICQoR0xPQkopZ3Bfc3lzdi4kKE9CSik6ICQoR0xTUkMpZ3Bfc3lzdi4KKyAKKyAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEF1eGlsaWFyeSBwcm9ncmFtcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIworIAorLSQoRUNIT0dTX1hFKTogJChHTFNSQyllY2hvZ3MuYyAkKEFLKSAkKHN0ZHByZV9oKSAkKFVOSVhfQVVYX01BSykgJChNQUtFRElSUykKKy0JJChDQ0FVWF8pICQoSV8pJChHTFNSQ0RJUikkKF9JKSAkKE9fKSQoRUNIT0dTX1hFKSAkKEdMU1JDKWVjaG9ncy5jICQoQVVYRVhUUkFMSUJTKQorLQorKyMkKEVDSE9HU19YRSk6ICQoR0xTUkMpZWNob2dzLmMgJChBSykgJChzdGRwcmVfaCkgJChVTklYX0FVWF9NQUspICQoTUFLRURJUlMpCisrIwkkKENDQVVYXykgJChJXykkKEdMU1JDRElSKSQoX0kpICQoT18pJChFQ0hPR1NfWEUpICQoR0xTUkMpZWNob2dzLmMgJChBVVhFWFRSQUxJQlMpCisrIworICMgT24gdGhlIFJTLzYwMDAgKGF0IGxlYXN0KSwgY29tcGlsaW5nIGdlbmFyY2guYyB3aXRoIGdjYyB3aXRoIC1PCisgIyBwcm9kdWNlcyBhIGJ1Z2d5IGV4ZWN1dGFibGUuCistJChHRU5BUkNIX1hFKTogJChHTFNSQylnZW5hcmNoLmMgJChBSykgJChHRU5BUkNIX0RFUFMpICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQorLQkkKENDQVVYXykgJChJXykkKEdMU1JDRElSKSQoX0kpICQoT18pJChHRU5BUkNIX1hFKSAkKEdMU1JDKWdlbmFyY2guYyAkKEFVWEVYVFJBTElCUykKKy0KKy0kKEdFTkNPTkZfWEUpOiAkKEdMU1JDKWdlbmNvbmYuYyAkKEFLKSAkKEdFTkNPTkZfREVQUykgJChVTklYX0FVWF9NQUspICQoTUFLRURJUlMpCistCSQoQ0NBVVhfKSAkKElfKSQoR0xTUkNESVIpJChfSSkgJChPXykkKEdFTkNPTkZfWEUpICQoR0xTUkMpZ2VuY29uZi5jICQoQVVYRVhUUkFMSUJTKQorLQorLSQoR0VOREVWX1hFKTogJChHTFNSQylnZW5kZXYuYyAkKEFLKSAkKEdFTkRFVl9ERVBTKSAkKFVOSVhfQVVYX01BSykgJChNQUtFRElSUykKKy0JJChDQ0FVWF8pICQoSV8pJChHTFNSQ0RJUikkKF9JKSAkKE9fKSQoR0VOREVWX1hFKSAkKEdMU1JDKWdlbmRldi5jICQoQVVYRVhUUkFMSUJTKQorLQorLSQoR0VOSFRfWEUpOiAkKEdMU1JDKWdlbmh0LmMgJChBSykgJChHRU5IVF9ERVBTKSAkKFVOSVhfQVVYX01BSykgJChNQUtFRElSUykKKy0JJChDQ0FVWF8pICQoR0VOSFRfQ0ZMQUdTKSAkKE9fKSQoR0VOSFRfWEUpICQoR0xTUkMpZ2VuaHQuYyAkKEFVWEVYVFJBTElCUykKKy0KKysjJChHRU5BUkNIX1hFKTogJChHTFNSQylnZW5hcmNoLmMgJChBSykgJChHRU5BUkNIX0RFUFMpICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQorKyMJJChDQ0FVWF8pICQoSV8pJChHTFNSQ0RJUikkKF9JKSAkKE9fKSQoR0VOQVJDSF9YRSkgJChHTFNSQylnZW5hcmNoLmMgJChBVVhFWFRSQUxJQlMpCisrIworKyMkKEdFTkNPTkZfWEUpOiAkKEdMU1JDKWdlbmNvbmYuYyAkKEFLKSAkKEdFTkNPTkZfREVQUykgJChVTklYX0FVWF9NQUspICQoTUFLRURJUlMpCisrIwkkKENDQVVYXykgJChJXykkKEdMU1JDRElSKSQoX0kpICQoT18pJChHRU5DT05GX1hFKSAkKEdMU1JDKWdlbmNvbmYuYyAkKEFVWEVYVFJBTElCUykKKysjCisrIyQoR0VOREVWX1hFKTogJChHTFNSQylnZW5kZXYuYyAkKEFLKSAkKEdFTkRFVl9ERVBTKSAkKFVOSVhfQVVYX01BSykgJChNQUtFRElSUykKKysjCSQoQ0NBVVhfKSAkKElfKSQoR0xTUkNESVIpJChfSSkgJChPXykkKEdFTkRFVl9YRSkgJChHTFNSQylnZW5kZXYuYyAkKEFVWEVYVFJBTElCUykKKysjCisrIyQoR0VOSFRfWEUpOiAkKEdMU1JDKWdlbmh0LmMgJChBSykgJChHRU5IVF9ERVBTKSAkKFVOSVhfQVVYX01BSykgJChNQUtFRElSUykKKysjCSQoQ0NBVVhfKSAkKEdFTkhUX0NGTEFHUykgJChPXykkKEdFTkhUX1hFKSAkKEdMU1JDKWdlbmh0LmMgJChBVVhFWFRSQUxJQlMpCisrIworICMgVG8gZ2V0IEdTIHRvIHVzZSB0aGUgc3lzdGVtIHpsaWIsIHlvdSByZW1vdmUvaGlkZSB0aGUgZ3MvemxpYiBkaXJlY3RvcnkKKyAjIHdoaWNoIG1lYW5zIHRoYXQgdGhlIG1rcm9tZnMgYnVpbGQgY2FuJ3QgZmluZCB0aGUgemxpYiBzb3VyY2UgaXQgbmVlZHMuCisgIyBTbyBpdCdzIHNwbGl0IGludG8gdHdvIHRhcmdldHMsIG9uZSB1c2luZyB0aGUgemxpYiBzb3VyY2UgZGlyZWN0bHkuLi4uLgorLU1LUk9NRlNfT0JKU18wPSQoTUtST01GU19aTElCX09CSlMpICQoQVVYKWdwbWlzYy4kKE9CSikgJChBVVgpZ3BfZ2V0bnYuJChPQkopIFwKKy0gJChBVVgpZ3NjZGVmcy4kKE9CSikgJChBVVgpZ3BfdW5peC4kKE9CSikgJChBVVgpZ3BfdW5pZnMuJChPQkopICQoQVVYKWdwX3VuaWZuLiQoT0JKKSBcCistICQoQVVYKWdwX3N0ZGlhLiQoT0JKKSAkKEFVWClnc3V0aWwuJChPQkopICQoQVVYKW1lbWVudG8uJChPQkopCistCistJChNS1JPTUZTX1hFKV8wOiAkKEdMU1JDKW1rcm9tZnMuYyAkKE1LUk9NRlNfQ09NTU9OX0RFUFMpICQoTUtST01GU19PQkpTXzApICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQorLQkkKENDQVVYXykgJChHRU5PUFRBVVgpICQoSV8pJChHTFNSQ0RJUikkKF9JKSAkKElfKSQoR0xPQkopJChfSSkgJChJXykkKFpTUkNESVIpJChfSSkgJChHTFNSQylta3JvbWZzLmMgJChPXykkKE1LUk9NRlNfWEUpXzAgJChNS1JPTUZTX09CSlNfMCkgJChBVVhFWFRSQUxJQlMpCistCisrI01LUk9NRlNfT0JKU18wPSQoTUtST01GU19aTElCX09CSlMpICQoQVVYKWdwbWlzYy4kKE9CSikgJChBVVgpZ3BfZ2V0bnYuJChPQkopIFwKKysjICQoQVVYKWdzY2RlZnMuJChPQkopICQoQVVYKWdwX3VuaXguJChPQkopICQoQVVYKWdwX3VuaWZzLiQoT0JKKSAkKEFVWClncF91bmlmbi4kKE9CSikgXAorKyMgJChBVVgpZ3Bfc3RkaWEuJChPQkopICQoQVVYKWdzdXRpbC4kKE9CSikgJChBVVgpbWVtZW50by4kKE9CSikKKysjCisrIyQoTUtST01GU19YRSlfMDogJChHTFNSQylta3JvbWZzLmMgJChNS1JPTUZTX0NPTU1PTl9ERVBTKSAkKE1LUk9NRlNfT0JKU18wKSAkKFVOSVhfQVVYX01BSykgJChNQUtFRElSUykKKysjCSQoQ0NBVVhfKSAkKEdFTk9QVEFVWCkgJChJXykkKEdMU1JDRElSKSQoX0kpICQoSV8pJChHTE9CSikkKF9JKSAkKElfKSQoWlNSQ0RJUikkKF9JKSAkKEdMU1JDKW1rcm9tZnMuYyAkKE9fKSQoTUtST01GU19YRSlfMCAkKE1LUk9NRlNfT0JKU18wKSAkKEFVWEVYVFJBTElCUykKKysjCisgIyAuLi4uIGFuZCBvbmUgdXNpbmcgdGhlIHpsaWIgbGlicmFyeSBsaW5rZWQgdmlhIHRoZSBjb21tYW5kIGxpbmUKKy1NS1JPTUZTX09CSlNfMT0kKEFVWClnc2NkZWZzLiQoT0JKKSBcCistICQoQVVYKWdwbWlzYy4kKE9CSikgJChBVVgpZ3BfZ2V0bnYuJChPQkopIFwKKy0gJChBVVgpZ3BfdW5peC4kKE9CSikgJChBVVgpZ3BfdW5pZnMuJChPQkopICQoQVVYKWdwX3VuaWZuLiQoT0JKKSBcCistICQoQVVYKWdwX3N0ZGlhLiQoT0JKKSAkKEFVWClnc3V0aWwuJChPQkopCistCistJChNS1JPTUZTX1hFKV8xOiAkKEdMU1JDKW1rcm9tZnMuYyAkKE1LUk9NRlNfQ09NTU9OX0RFUFMpICQoTUtST01GU19PQkpTXzEpICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQorLQkkKENDQVVYXykgJChHRU5PUFRBVVgpICQoSV8pJChHTFNSQ0RJUikkKF9JKSAkKElfKSQoR0xPQkopJChfSSkgJChJXykkKFpTUkNESVIpJChfSSkgJChHTFNSQylta3JvbWZzLmMgJChPXykkKE1LUk9NRlNfWEUpXzEgJChNS1JPTUZTX09CSlNfMSkgJChBVVhFWFRSQUxJQlMpCistCistJChNS1JPTUZTX1hFKTogJChNS1JPTUZTX1hFKV8kKFNIQVJFX1pMSUIpICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQorLQkkKENQXykgJChNS1JPTUZTX1hFKV8kKFNIQVJFX1pMSUIpICQoTUtST01GU19YRSkKKy0KKysjTUtST01GU19PQkpTXzE9JChBVVgpZ3NjZGVmcy4kKE9CSikgXAorKyMgJChBVVgpZ3BtaXNjLiQoT0JKKSAkKEFVWClncF9nZXRudi4kKE9CSikgXAorKyMgJChBVVgpZ3BfdW5peC4kKE9CSikgJChBVVgpZ3BfdW5pZnMuJChPQkopICQoQVVYKWdwX3VuaWZuLiQoT0JKKSBcCisrIyAkKEFVWClncF9zdGRpYS4kKE9CSikgJChBVVgpZ3N1dGlsLiQoT0JKKQorKyMKKysjJChNS1JPTUZTX1hFKV8xOiAkKEdMU1JDKW1rcm9tZnMuYyAkKE1LUk9NRlNfQ09NTU9OX0RFUFMpICQoTUtST01GU19PQkpTXzEpICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQorKyMJJChDQ0FVWF8pICQoR0VOT1BUQVVYKSAkKElfKSQoR0xTUkNESVIpJChfSSkgJChJXykkKEdMT0JKKSQoX0kpICQoSV8pJChaU1JDRElSKSQoX0kpICQoR0xTUkMpbWtyb21mcy5jICQoT18pJChNS1JPTUZTX1hFKV8xICQoTUtST01GU19PQkpTXzEpICQoQVVYRVhUUkFMSUJTKQorKyMKKysjJChNS1JPTUZTX1hFKTogJChNS1JPTUZTX1hFKV8kKFNIQVJFX1pMSUIpICQoVU5JWF9BVVhfTUFLKSAkKE1BS0VESVJTKQorKyMJJChDUF8pICQoTUtST01GU19YRSlfJChTSEFSRV9aTElCKSAkKE1LUk9NRlNfWEUpCisrIworICMgUXVlcnkgdGhlIGVudmlyb25tZW50IHRvIGNvbnN0cnVjdCBnY29uZmlnXy5oLgorICMgVGhlc2UgYXJlIGFsbCBkZWZpbmVkIGNvbmRpdGlvbmFsbHkgKGV4Y2VwdCB0aGUgSmFzUEVSIG9uZSksIHNvIHRoYXQKKyAjIHRoZXkgY2FuIGJlIG92ZXJyaWRkZW4gYnkgc2V0dGluZ3MgZnJvbSB0aGUgY29uZmlndXJlIHNjcmlwdC4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQtbmF0aXZlLWZpeC1kaXNhYmxlLXN5c3RlbS1saWJ0aWZmLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC1uYXRpdmUtZml4LWRpc2FibGUtc3lzdGVtLWxpYnRpZmYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkxNTgxMTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC1uYXRpdmUtZml4LWRpc2FibGUtc3lzdGVtLWxpYnRpZmYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1naG9zdHNjcmlwdC1uYXRpdmU6Zml4IGRpc2FibGUtc3lzdGVtLWxpYnRpZmYKLQotTW9kaWZ5IGNvbmZpZ3VyZSB0byBhZGQgdGhlIGNoZWNrIHRvIG1ha2Ugc3VyZQotZ2hvc3RzY3JpcCBjb3VsZCB3b3JrIHdoaWxlIHN5c3RlbS1saWJ0aWZmIGlzCi1kaXNhYmxlZC4KLQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBjb25maWd1cmUuYWMgfCA1ICsrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTEwNTUsNiArMTA1NSw3IEBAIERpc2FibGluZyB0aWZmIG91dHB1dCBkZXZpY2VzLl0pCi0gZXNhYwotIAotIGlmIHRlc3QgJFNIQVJFX0xJQlRJRkYgLWVxIDA7IHRoZW4KLSsgICAgaWYgdGVzdCAtZSAkTElCVElGRkRJUi9jb25maWd1cmU7IHRoZW4KLSAgICAgICBlY2hvCi0gICAgICAgZWNobyAiUnVubmluZyBsaWJ0aWZmIGNvbmZpZ3VyZSBzY3JpcHQuLi4iCi0gICAgICAgb2xkZGlyPWBwd2RgCi1AQCAtMTA2OSw2ICsxMDcwLDEwIEBAIGlmIHRlc3QgJFNIQVJFX0xJQlRJRkYgLWVxIDA7IHRoZW4KLSAgICAgICBjZCAiJG9sZGRpciIKLSAgICAgICBlY2hvCi0gICAgICAgZWNobyAiQ29udGludWluZyB3aXRoIEdob3N0c2NyaXB0IGNvbmZpZ3VyYXRpb24uLi4iCi0rICAgIGVsc2UKLSsgICAgICBBQ19NU0dfTk9USUNFKFtDb3VsZCBub3QgZmluZCBsb2NhbCBjb3B5IG9mIGxpYnRpZmYuCi0rRGlzYWJsaW5nIHRpZmYgb3V0cHV0IGRldmljZXMuXSkKLSsgICAgZmkKLSBmaQotIAotIEFDX1NVQlNUKFNIQVJFX0xJQlRJRkYpCi0tLSAKLTEuOC4xLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9ta2Rpci1wLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9ta2Rpci1wLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhN2VhYjEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L21rZGlyLXAucGF0Y2gKQEAgLTAsMCArMSwzNiBAQAorZ2hvc3RzY3JpcHQ6IGFsbG93IGRpcmVjdG9yaWVzIHRvIGJlIGNyZWF0ZWQgbW9yZSB0aGFuIG9uY2UKKworV2hlbiBkb2luZyBwYXJhbGxlbCBidWlsZHMsIHdlIG1pZ2h0IHRyeSB0byBjcmVhdGUgZGlyZWN0b3JpZXMKK21vcmUgdGhhbiBvbmNlLiAgVGhpcyBzaG91bGQgbm90IGNhdXNlIGFuIGVycm9yLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSm9lIFNsYXRlciA8am9lLnNsYXRlckB3aW5kcml2ZXIuY29tPgorCisKKy0tLSBhL2Jhc2UvdW5peC1lbmQubWFrCisrKysgYi9iYXNlL3VuaXgtZW5kLm1haworQEAgLTE3LDE1ICsxNywxNCBAQAorIFVOSVhfRU5EX01BSz0kKEdMU1JDKXVuaXgtZW5kLm1hayAkKFRPUF9NQUtFRklMRVMpCisgIyBEZWZpbmUgdGhlIHJ1bGUgZm9yIGJ1aWxkaW5nIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb25zLgorIGRpcmVjdG9yaWVzOiAkKFVOSVhfRU5EX01BSykKKy0JQGlmIHRlc3QgIiQoQklORElSKSIgICAgIT0gIiIgLWEgISAtZCAkKEJJTkRJUik7ICAgICAgICB0aGVuIG1rZGlyICQoQklORElSKTsgICAgICAgIGZpCistCUBpZiB0ZXN0ICIkKEdMR0VORElSKSIgICE9ICIiIC1hICEgLWQgJChHTEdFTkRJUik7ICAgICAgdGhlbiBta2RpciAkKEdMR0VORElSKTsgICAgICBmaQorLQlAaWYgdGVzdCAiJChHTE9CSkRJUikiICAhPSAiIiAtYSAhIC1kICQoR0xPQkpESVIpOyAgICAgIHRoZW4gbWtkaXIgJChHTE9CSkRJUik7ICAgICAgZmkKKy0JQGlmIHRlc3QgIiQoREVWR0VORElSKSIgIT0gIiIgLWEgISAtZCAkKERFVkdFTkRJUik7ICAgICB0aGVuIG1rZGlyICQoREVWR0VORElSKTsgICAgIGZpCistCUBpZiB0ZXN0ICIkKERFVk9CSkRJUikiICE9ICIiIC1hICEgLWQgJChERVZPQkpESVIpOyAgICAgdGhlbiBta2RpciAkKERFVk9CSkRJUik7ICAgICBmaQorLQlAaWYgdGVzdCAiJChBVVhESVIpIiAgICAhPSAiIiAtYSAhIC1kICQoQVVYRElSKTsgICAgICAgIHRoZW4gbWtkaXIgJChBVVhESVIpOyAgICAgICAgZmkKKy0JQGlmIHRlc3QgIiQoUFNHRU5ESVIpIiAgIT0gIiIgLWEgISAtZCAkKFBTR0VORElSKTsgICAgICB0aGVuIG1rZGlyICQoUFNHRU5ESVIpOyAgICAgIGZpCistCUBpZiB0ZXN0ICIkKFBTR0VORElSKSIgICE9ICIiIC1hICEgLWQgJChQU0dFTkRJUikvY3VwczsgdGhlbiBta2RpciAkKFBTR0VORElSKS9jdXBzOyBmaQorLQlAaWYgdGVzdCAiJChQU09CSkRJUikiICAhPSAiIiAtYSAhIC1kICQoUFNPQkpESVIpOyAgICAgIHRoZW4gbWtkaXIgJChQU09CSkRJUik7ICAgICAgZmkKKysJQGlmIHRlc3QgIiQoQklORElSKSIgICAgIT0gIiIgLWEgISAtZCAkKEJJTkRJUik7ICAgICAgICB0aGVuIG1rZGlyIC1wICQoQklORElSKTsgICAgICAgIGZpCisrCUBpZiB0ZXN0ICIkKEdMR0VORElSKSIgICE9ICIiIC1hICEgLWQgJChHTEdFTkRJUik7ICAgICAgdGhlbiBta2RpciAtcCAkKEdMR0VORElSKTsgICAgICBmaQorKwlAaWYgdGVzdCAiJChHTE9CSkRJUikiICAhPSAiIiAtYSAhIC1kICQoR0xPQkpESVIpOyAgICAgIHRoZW4gbWtkaXIgLXAgJChHTE9CSkRJUik7ICAgICAgZmkKKysJQGlmIHRlc3QgIiQoREVWR0VORElSKSIgIT0gIiIgLWEgISAtZCAkKERFVkdFTkRJUik7ICAgICB0aGVuIG1rZGlyIC1wICQoREVWR0VORElSKTsgICAgIGZpCisrCUBpZiB0ZXN0ICIkKERFVk9CSkRJUikiICE9ICIiIC1hICEgLWQgJChERVZPQkpESVIpOyAgICAgdGhlbiBta2RpciAtcCAkKERFVk9CSkRJUik7ICAgICBmaQorKwlAaWYgdGVzdCAiJChBVVhESVIpIiAgICAhPSAiIiAtYSAhIC1kICQoQVVYRElSKTsgICAgICAgIHRoZW4gbWtkaXIgLXAgJChBVVhESVIpOyAgICAgICAgZmkKKysJQGlmIHRlc3QgIiQoUFNHRU5ESVIpIiAgIT0gIiIgLWEgISAtZCAkKFBTR0VORElSKS9jdXBzOyB0aGVuIG1rZGlyIC1wICQoUFNHRU5ESVIpL2N1cHM7IGZpCisrCUBpZiB0ZXN0ICIkKFBTT0JKRElSKSIgICE9ICIiIC1hICEgLWQgJChQU09CSkRJUik7ICAgICAgdGhlbiBta2RpciAtcCAkKFBTT0JKRElSKTsgICAgICBmaQorIAorIAorIGdzOiAuZ3NzdWJ0YXJnZXQgJChVTklYX0VORF9NQUspCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L3BuZ19tYWsucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L3BuZ19tYWsucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiODQ5ODYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9wbmdfbWFrLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotZ2hvc3RzY3JpcHQ6IGFkZCBkZXBlbmRlbmN5IGZvciBwbmdsaWJjb25mLmgKLQotV2hlbiB1c2luZyBwYXJhbGxlbCBtYWtlIGpvYnMsIHdlIG5lZWQgdG8gYmUgc3VyZSB0aGF0Ci1wbmdsaWJjb25mLmggaXMgY3JlYXRlZCBiZWZvcmUgd2UgdHJ5IHRvIHJlZmVyZW5jZSBpdCwKLXNvIGFkZCBhIHJ1bGUgdG8gcG5nLm1hay4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEpvZSBTbGF0ZXIgPGpzbGF0ZXJAd2luZHJpdmVyLmNvbT4KLQotUmViYXNlIHRvIDkuMTkKLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIGJhc2UvcG5nLm1hayB8IDIgKysKLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9iYXNlL3BuZy5tYWsgYi9iYXNlL3BuZy5tYWsKLWluZGV4IGZlNWM2ZTIuLjhhYmI1M2EgMTAwNjQ0Ci0tLS0gYS9iYXNlL3BuZy5tYWsKLSsrKyBiL2Jhc2UvcG5nLm1hawotQEAgLTc0LDYgKzc0LDggQEAgcG5nLmNsZWFuLW5vdC1jb25maWctY2xlYW4gOgotIAotIHBuZ2xpYmNvbmZfaD0kKFBOR0dFTkRJUikkKEQpcG5nbGliY29uZi5oCi0gCi0rJChNQUtFRElSUykgOiAkKHBuZ2xpYmNvbmZfaCkKLSsKLSBwbmcuY29uZmlnLWNsZWFuIDoKLSAJJChSTV8pICQocG5nbGliY29uZl9oKQotIAkkKFJNXykgJChQTkdHRU4pbHBnKi5kZXYKLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdF85LjIwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdF85LjIwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMWQ5NzAwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHRfOS4yMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi1TVU1NQVJZID0gIlRoZSBHUEwgR2hvc3RzY3JpcHQgUG9zdFNjcmlwdC9QREYgaW50ZXJwcmV0ZXIiCi1ERVNDUklQVElPTiA9ICJHaG9zdHNjcmlwdCBpcyB1c2VkIGZvciBQb3N0U2NyaXB0L1BERiBwcmV2aWV3IGFuZCBwcmludGluZy4gIFVzdWFsbHkgYXMgXAotYSBiYWNrLWVuZCB0byBhIHByb2dyYW0gc3VjaCBhcyBnaG9zdHZpZXcsIGl0IGNhbiBkaXNwbGF5IFBvc3RTY3JpcHQgYW5kIFBERiBcCi1kb2N1bWVudHMgaW4gYW4gWDExIGVudmlyb25tZW50LiBcCi1cCi1GdXJ0aGVybW9yZSwgaXQgY2FuIHJlbmRlciBQb3N0U2NyaXB0IGFuZCBQREYgZmlsZXMgYXMgZ3JhcGhpY3MgdG8gYmUgcHJpbnRlZCBcCi1vbiBub24tUG9zdFNjcmlwdCBwcmludGVycy4gU3VwcG9ydGVkIHByaW50ZXJzIGluY2x1ZGUgY29tbW9uIFwKLWRvdC1tYXRyaXgsIGlua2pldCBhbmQgbGFzZXIgbW9kZWxzLiBcCi0iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lmdob3N0c2NyaXB0LmNvbSIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLQotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTcwZGMyYmFjNGQwY2U0NDQ4ZGE4NzNjZDg2YjEyM2ZjIgotCi1ERVBFTkRTID0gImdob3N0c2NyaXB0LW5hdGl2ZSB0aWZmIGpwZWcgZm9udGNvbmZpZyBjdXBzIGxpYnBuZyIKLURFUEVORFNfY2xhc3MtbmF0aXZlID0gImxpYnBuZy1uYXRpdmUiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vQXJ0aWZleFNvZnR3YXJlL2dob3N0cGRsLWRvd25sb2Fkcy9yZWxlYXNlcyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgotCi1TUkNfVVJJX0JBU0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL0FydGlmZXhTb2Z0d2FyZS9naG9zdHBkbC1kb3dubG9hZHMvcmVsZWFzZXMvZG93bmxvYWQvZ3M5MjAvJHtCUE59LSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgICAgICAgZmlsZTovL2dob3N0c2NyaXB0LTkuMTUtcGFyYWxsZWwtbWFrZS5wYXRjaCBcCi0gICAgICAgICAgICAgICAgZmlsZTovL2dob3N0c2NyaXB0LTkuMTYtV2Vycm9yLXJldHVybi10eXBlLnBhdGNoIFwKLSAgICAgICAgICAgICAgICBmaWxlOi8vcG5nX21hay5wYXRjaCBcCi0gICAgICAgICAgICAgICAgZmlsZTovL2RvLW5vdC1jaGVjay1sb2NhbC1saWJwbmctc291cmNlLnBhdGNoIFwKLSIKLQotU1JDX1VSSSA9ICIke1NSQ19VUklfQkFTRX0gXAotICAgICAgICAgICBmaWxlOi8vZ2hvc3RzY3JpcHQtOS4wMi1wcmV2ZW50X3JlY29tcGlsaW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2dob3N0c2NyaXB0LTkuMDItZ2VuYXJjaC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9vYmphcmNoLmggXAotICAgICAgICAgICBmaWxlOi8vY3Vwcy1uby1nY3J5cHQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctNzIwNy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi0xMDIxOS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi0xMDIyMC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy01OTUxLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE2LTg2MDIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctNzk3NS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNi03OTc3LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE2LTc5NzgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTYtNzk3OS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy05MjE2LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTk2MTEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctOTYxMi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy05NzM5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTk3MjYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctOTcyNy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy05ODM1LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTExNzE0LnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJX2NsYXNzLW5hdGl2ZSA9ICIke1NSQ19VUklfQkFTRX0gXAotICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dob3N0c2NyaXB0LW5hdGl2ZS1maXgtZGlzYWJsZS1zeXN0ZW0tbGlidGlmZi5wYXRjaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYmFzZS1nZW5odC5jLWFkZC1hLXByZXByb2Nlc3Nvci1kZWZpbmUtdG8tYWxsb3ctZm9wZS5wYXRjaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI5M2M1OTg3Y2QzYWIzNDExMDhiZTFlYmJhYWRjMjRmZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5NDliNjRiNDZlY2Y4OTA2ZGI1NGE5NGVjZjgzYWI5NzUzNGViZjk0NmY3NzBkM2MzZjI4M2NiNDY5Y2I2ZTE0IgotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRob3V0LXggLS13aXRoLXN5c3RlbS1saWJ0aWZmIC0td2l0aG91dC1qYmlnMmRlYyBcCi0gICAgICAgICAgICAgICAgLS13aXRoLWZvbnRwYXRoPSR7ZGF0YWRpcn0vZm9udHMgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1saWJpZG4gLS13aXRoLWN1cHMtc2VydmVyYmluPSR7ZXhlY19wcmVmaXh9L2xpYi9jdXBzIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtY3Vwcy1kYXRhZGlyPSR7ZGF0YWRpcn0vY3VwcyBcCi0gICAgICAgICAgICAgICAgIgotCi1FWFRSQV9PRUNPTkZfYXBwZW5kX21pcHNhcmNobzMyID0gIiAtLXdpdGgtbGFyZ2VfY29sb3JfaW5kZXg9MCIKLQotIyBFeHBsaWNpdHkgZGlzYWJsZSBsaWJ0aWZmLCBmb250Y29uZmlnLAotIyBmcmVldHlwZSwgY3VwcyBmb3IgZ2hvc3RzY3JpcHQtbmF0aXZlCi1FWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIi0td2l0aG91dC14IC0td2l0aC1zeXN0ZW0tbGlidGlmZj1ubyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aG91dC1qYmlnMmRlYyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aC1mb250cGF0aD0ke2RhdGFkaXJ9L2ZvbnRzIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS13aXRob3V0LWxpYmlkbiAtLWRpc2FibGUtZm9udGNvbmZpZyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1mcmVldHlwZSAtLWRpc2FibGUtY3VwcyIKLQotIyBUaGlzIGhhcyBiZWVuIGZpeGVkIHVwc3RyZWFtIGJ1dCBmb3Igbm93IHdlIG5lZWQgdG8gc3VidmVydCB0aGUgY2hlY2sgZm9yIHRpbWUuaAotIyBodHRwOi8vYnVncy5naG9zdHNjcmlwdC5jb20vc2hvd19idWcuY2dpP2lkPTY5MjQ0MwotIyBodHRwOi8vYnVncy5naG9zdHNjcmlwdC5jb20vc2hvd19idWcuY2dpP2lkPTY5MjQyNgotQ0ZMQUdTICs9ICItREhBVkVfU1lTX1RJTUVfSD0xIgotQlVJTERfQ0ZMQUdTICs9ICItREhBVkVfU1lTX1RJTUVfSD0xIgotCi1pbmhlcml0IGF1dG90b29scwotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0JbWtkaXIgLXAgb2JqCi0JbWtkaXIgLXAgc29vYmoKLQlpZiBbIC1lICR7V09SS0RJUn0vb2JqYXJjaC5oIF07IHRoZW4KLQkJY3AgJHtXT1JLRElSfS9vYmphcmNoLmggb2JqL2FyY2guaAotCWZpCi19Ci0KLWRvX2NvbmZpZ3VyZV9hcHBlbmQgKCkgewotCSMgY29weSB0b29scyBmcm9tIHRoZSBuYXRpdmUgZ2hvc3RzY3JpcHQgYnVpbGQKLQlpZiBbICIke1BOfSIgIT0gImdob3N0c2NyaXB0LW5hdGl2ZSIgXTsgdGhlbgotCQlta2RpciAtcCBvYmovYXV4IHNvb2JqCi0JCWZvciBpIGluIGdlbmFyY2ggZ2VuY29uZiBta3JvbWZzIGVjaG9ncyBnZW5kZXYgZ2VuaHQ7IGRvCi0JCQljcCAke1NUQUdJTkdfQklORElSX05BVElWRX0vZ2hvc3RzY3JpcHQtJHtQVn0vJGkgb2JqL2F1eC8kaQotCQlkb25lCi0JZmkKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotICAgIG1rZGlyIC1wICR7RH0ke2RhdGFkaXJ9L2dob3N0c2NyaXB0LyR7UFZ9LwotICAgIGNwIC1yICR7U30vUmVzb3VyY2UgJHtEfSR7ZGF0YWRpcn0vZ2hvc3RzY3JpcHQvJHtQVn0vCi0gICAgY3AgLXIgJHtTfS9pY2Nwcm9maWxlcyAke0R9JHtkYXRhZGlyfS9naG9zdHNjcmlwdC8ke1BWfS8KLX0KLQotZG9fY29tcGlsZV9jbGFzcy1uYXRpdmUgKCkgewotICAgIG1rZGlyIC1wIG9iagotICAgIGZvciBpIGluIGdlbmFyY2ggZ2VuY29uZiBta3JvbWZzIGVjaG9ncyBnZW5kZXYgZ2VuaHQ7IGRvCi0gICAgICAgIG9lX3J1bm1ha2Ugb2JqL2F1eC8kaQotICAgIGRvbmUKLX0KLQotZG9faW5zdGFsbF9jbGFzcy1uYXRpdmUgKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfS9naG9zdHNjcmlwdC0ke1BWfQotICAgIGZvciBpIGluIGdlbmFyY2ggZ2VuY29uZiBta3JvbWZzIGVjaG9ncyBnZW5kZXYgZ2VuaHQ7IGRvCi0gICAgICAgIGluc3RhbGwgLW0gNzU1IG9iai9hdXgvJGkgJHtEfSR7YmluZGlyfS9naG9zdHNjcmlwdC0ke1BWfS8kaQotICAgIGRvbmUKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0XzkuMjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0XzkuMjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmY5ODVjNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHRfOS4yMS5iYgpAQCAtMCwwICsxLDEzNyBAQAorU1VNTUFSWSA9ICJUaGUgR1BMIEdob3N0c2NyaXB0IFBvc3RTY3JpcHQvUERGIGludGVycHJldGVyIgorREVTQ1JJUFRJT04gPSAiR2hvc3RzY3JpcHQgaXMgdXNlZCBmb3IgUG9zdFNjcmlwdC9QREYgcHJldmlldyBhbmQgcHJpbnRpbmcuICBVc3VhbGx5IGFzIFwKK2EgYmFjay1lbmQgdG8gYSBwcm9ncmFtIHN1Y2ggYXMgZ2hvc3R2aWV3LCBpdCBjYW4gZGlzcGxheSBQb3N0U2NyaXB0IGFuZCBQREYgXAorZG9jdW1lbnRzIGluIGFuIFgxMSBlbnZpcm9ubWVudC4gXAorXAorRnVydGhlcm1vcmUsIGl0IGNhbiByZW5kZXIgUG9zdFNjcmlwdCBhbmQgUERGIGZpbGVzIGFzIGdyYXBoaWNzIHRvIGJlIHByaW50ZWQgXAorb24gbm9uLVBvc3RTY3JpcHQgcHJpbnRlcnMuIFN1cHBvcnRlZCBwcmludGVycyBpbmNsdWRlIGNvbW1vbiBcCitkb3QtbWF0cml4LCBpbmtqZXQgYW5kIGxhc2VyIG1vZGVscy4gXAorIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5naG9zdHNjcmlwdC5jb20iCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCisKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT03MGRjMmJhYzRkMGNlNDQ0OGRhODczY2Q4NmIxMjNmYyIKKworREVQRU5EUyA9ICJnaG9zdHNjcmlwdC1uYXRpdmUgdGlmZiBqcGVnIGZvbnRjb25maWcgY3VwcyBsaWJwbmciCitERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJsaWJwbmctbmF0aXZlIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL0FydGlmZXhTb2Z0d2FyZS9naG9zdHBkbC1kb3dubG9hZHMvcmVsZWFzZXMiCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKylcLnRhciIKKworU1JDX1VSSV9CQVNFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9BcnRpZmV4U29mdHdhcmUvZ2hvc3RwZGwtZG93bmxvYWRzL3JlbGVhc2VzL2Rvd25sb2FkL2dzOTIxLyR7QlBOfS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICAgICAgIGZpbGU6Ly9naG9zdHNjcmlwdC05LjE1LXBhcmFsbGVsLW1ha2UucGF0Y2ggXAorICAgICAgICAgICAgICAgIGZpbGU6Ly9naG9zdHNjcmlwdC05LjE2LVdlcnJvci1yZXR1cm4tdHlwZS5wYXRjaCBcCisgICAgICAgICAgICAgICAgZmlsZTovL2RvLW5vdC1jaGVjay1sb2NhbC1saWJwbmctc291cmNlLnBhdGNoIFwKKyAgICAgICAgICAgICAgICBmaWxlOi8vYXZvaWQtaG9zdC1jb250YW1pbmF0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgICAgICBmaWxlOi8vbWtkaXItcC5wYXRjaCBcCisiCisKK1NSQ19VUkkgPSAiJHtTUkNfVVJJX0JBU0V9IFwKKyAgICAgICAgICAgZmlsZTovL2dob3N0c2NyaXB0LTkuMjEtcHJldmVudF9yZWNvbXBpbGluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9naG9zdHNjcmlwdC05LjAyLWdlbmFyY2gucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vb2JqYXJjaC5oIFwKKyAgICAgICAgICAgZmlsZTovL2N1cHMtbm8tZ2NyeXB0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE2LTc5NzcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctNzIwNy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy01OTUxLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTc5NzUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctOTIxNi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy05NjExLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTk2MTIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctOTczOS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy05NzI2LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTk3MjcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctOTgzNS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xMTcxNC5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSV9jbGFzcy1uYXRpdmUgPSAiJHtTUkNfVVJJX0JBU0V9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9naG9zdHNjcmlwdC05LjIxLW5hdGl2ZS1maXgtZGlzYWJsZS1zeXN0ZW0tbGlidGlmZi5wYXRjaCBcCisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYmFzZS1nZW5odC5jLWFkZC1hLXByZXByb2Nlc3Nvci1kZWZpbmUtdG8tYWxsb3ctZm9wZS5wYXRjaCBcCisgICAgICAgICAgICAgICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1ZjIxMzI4MTc2MWQyNzUwZmNmMjc0NzZjNDA0ZDE3ZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwMmJjZWFkYmM0ZGRkZWI2ZjJlZWM5YzhiMTYyM2Q5NDVkMzU1Y2ExMWI4YjRkZjAzNTMzMmIyMTdkNThjZTg1IgorCisjIFB1dCBzb21ldGhpbmcgbGlrZQorIworIyAgIFBBQ0tBR0VDT05GSUdfYXBwZW5kX3BuLWdob3N0c2NyaXB0ID0gIiB4MTEiCisjCisjIGluIGxvY2FsLmNvbmYgdG8gZW5hYmxlIGJ1aWxkaW5nIHdpdGggWDExLiAgQmUgY2FyZWZ1bC4gIFRoZSBvcmRlcgorIyBvZiB0aGUgb3ZlcnJpZGVzIG1hdHRlcnMhCisjCisjUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3gxMScsICcnLCBkKX0iCitQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICIiCisKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItLXdpdGgteCAtLXgtaW5jbHVkZXM9JHtTVEFHSU5HX0lOQ0RJUn0gLS14LWxpYnJhcmllcz0ke1NUQUdJTkdfTElCRElSfSwgXAorICAgICAgICAgICAgICAgICAgICAgIC0td2l0aG91dC14LCB2aXJ0dWFsL2xpYngxMSBsaWJ4ZXh0IGxpYnh0IGd0ayszXAorICAgICAgICAgICAgICAgICAgICAgICIKKworRVhUUkFfT0VDT05GID0gIi0td2l0aC1zeXN0ZW0tbGlidGlmZiAtLXdpdGhvdXQtamJpZzJkZWMgXAorICAgICAgICAgICAgICAgIC0td2l0aC1mb250cGF0aD0ke2RhdGFkaXJ9L2ZvbnRzIFwKKyAgICAgICAgICAgICAgICAtLXdpdGhvdXQtbGliaWRuIC0td2l0aC1jdXBzLXNlcnZlcmJpbj0ke2V4ZWNfcHJlZml4fS9saWIvY3VwcyBcCisgICAgICAgICAgICAgICAgLS13aXRoLWN1cHMtZGF0YWRpcj0ke2RhdGFkaXJ9L2N1cHMgXAorICAgICAgICAgICAgICAgIENVUFNDT05GSUc9IiR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L2N1cHMtY29uZmlnIiBcCisgICAgICAgICAgICAgICAgIgorCitFWFRSQV9PRUNPTkZfYXBwZW5kX21pcHNhcmNobzMyID0gIiAtLXdpdGgtbGFyZ2VfY29sb3JfaW5kZXg9MCIKKworIyBFeHBsaWNpdHkgZGlzYWJsZSBsaWJ0aWZmLCBmb250Y29uZmlnLAorIyBmcmVldHlwZSwgY3VwcyBmb3IgZ2hvc3RzY3JpcHQtbmF0aXZlCitFWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIi0td2l0aG91dC14IC0td2l0aC1zeXN0ZW0tbGlidGlmZj1ubyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aG91dC1qYmlnMmRlYyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aC1mb250cGF0aD0ke2RhdGFkaXJ9L2ZvbnRzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS13aXRob3V0LWxpYmlkbiAtLWRpc2FibGUtZm9udGNvbmZpZyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1mcmVldHlwZSAtLWRpc2FibGUtY3VwcyIKKworIyBUaGlzIGhhcyBiZWVuIGZpeGVkIHVwc3RyZWFtIGJ1dCBmb3Igbm93IHdlIG5lZWQgdG8gc3VidmVydCB0aGUgY2hlY2sgZm9yIHRpbWUuaAorIyBodHRwOi8vYnVncy5naG9zdHNjcmlwdC5jb20vc2hvd19idWcuY2dpP2lkPTY5MjQ0MworIyBodHRwOi8vYnVncy5naG9zdHNjcmlwdC5jb20vc2hvd19idWcuY2dpP2lkPTY5MjQyNgorQ0ZMQUdTICs9ICItREhBVkVfU1lTX1RJTUVfSD0xIgorQlVJTERfQ0ZMQUdTICs9ICItREhBVkVfU1lTX1RJTUVfSD0xIgorCitpbmhlcml0IGF1dG90b29scworCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisJbWtkaXIgLXAgb2JqCisJbWtkaXIgLXAgc29vYmoKKwlpZiBbIC1lICR7V09SS0RJUn0vb2JqYXJjaC5oIF07IHRoZW4KKwkJY3AgJHtXT1JLRElSfS9vYmphcmNoLmggb2JqL2FyY2guaAorCWZpCit9CisKK2RvX2NvbmZpZ3VyZV9hcHBlbmQgKCkgeworCSMgY29weSB0b29scyBmcm9tIHRoZSBuYXRpdmUgZ2hvc3RzY3JpcHQgYnVpbGQKKwlpZiBbICIke1BOfSIgIT0gImdob3N0c2NyaXB0LW5hdGl2ZSIgXTsgdGhlbgorCQlta2RpciAtcCBvYmovYXV4IHNvb2JqCisJCWZvciBpIGluIGdlbmFyY2ggZ2VuY29uZiBta3JvbWZzIGVjaG9ncyBnZW5kZXYgZ2VuaHQ7IGRvCisJCQljcCAke1NUQUdJTkdfQklORElSX05BVElWRX0vZ2hvc3RzY3JpcHQtJHtQVn0vJGkgb2JqL2F1eC8kaQorCQlkb25lCisJZmkKK30KKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgIG1rZGlyIC1wICR7RH0ke2RhdGFkaXJ9L2dob3N0c2NyaXB0LyR7UFZ9LworICAgIGNwIC1yICR7U30vUmVzb3VyY2UgJHtEfSR7ZGF0YWRpcn0vZ2hvc3RzY3JpcHQvJHtQVn0vCisgICAgY3AgLXIgJHtTfS9pY2Nwcm9maWxlcyAke0R9JHtkYXRhZGlyfS9naG9zdHNjcmlwdC8ke1BWfS8KK30KKworZG9fY29tcGlsZV9jbGFzcy1uYXRpdmUgKCkgeworICAgIG1rZGlyIC1wIG9iagorICAgIGZvciBpIGluIGdlbmFyY2ggZ2VuY29uZiBta3JvbWZzIGVjaG9ncyBnZW5kZXYgZ2VuaHQ7IGRvCisgICAgICAgIG9lX3J1bm1ha2Ugb2JqL2F1eC8kaQorICAgIGRvbmUKK30KKworZG9faW5zdGFsbF9jbGFzcy1uYXRpdmUgKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfS9naG9zdHNjcmlwdC0ke1BWfQorICAgIGZvciBpIGluIGdlbmFyY2ggZ2VuY29uZiBta3JvbWZzIGVjaG9ncyBnZW5kZXYgZ2VuaHQ7IGRvCisgICAgICAgIGluc3RhbGwgLW0gNzU1IG9iai9hdXgvJGkgJHtEfSR7YmluZGlyfS9naG9zdHNjcmlwdC0ke1BWfS8kaQorICAgIGRvbmUKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKKyMgZ2hvc3RzY3JpcHQgZG9lcyBub3Qgc3VwcG9ydHMgImFyYyIKK0NPTVBBVElCTEVfSE9TVCA9ICJeKD8hYXJjKS4qIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nby1leGFtcGxlcy9maWxlcy9oZWxsb3dvcmxkLmdvIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nby1leGFtcGxlcy9maWxlcy9oZWxsb3dvcmxkLmdvCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjUzYzQwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ28tZXhhbXBsZXMvZmlsZXMvaGVsbG93b3JsZC5nbworKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLS8vIFlvdSBjYW4gZWRpdCB0aGlzIGNvZGUhCi0vLyBDbGljayBoZXJlIGFuZCBzdGFydCB0eXBpbmcuCi0vLyB0YWtlbiBmcm9tIGh0dHBzOi8vZ29sYW5nLm9yZy8KLXBhY2thZ2UgbWFpbgotCi1pbXBvcnQgImZtdCIKLQotZnVuYyBtYWluKCkgewotCWZtdC5QcmludGxuKCJIZWxsbywg5LiW55WMIikKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ28tZXhhbXBsZXMvZ28tZXhhbXBsZXMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nby1leGFtcGxlcy9nby1leGFtcGxlcy5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2MzI2ODEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nby1leGFtcGxlcy9nby1leGFtcGxlcy5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1ERVNDUklQVElPTiA9ICJUaGlzIGlzIGEgc2ltcGxlIGV4YW1wbGUgcmVjaXBlIHRoYXQgY3Jvc3MtY29tcGlsZXMgYSBHbyBwcm9ncmFtLiIKLVNFQ1RJT04gPSAiZXhhbXBsZXMiCi1IT01FUEFHRSA9ICJodHRwczovL2dvbGFuZy5vcmcvIgotCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09NTU9OX0xJQ0VOU0VfRElSfS9NSVQ7bWQ1PTA4MzVhZGU2OThlMGJjZjg1MDZlY2RhMmY3YjRmMzAyIgotCi1TID0gIiR7V09SS0RJUn0iCi0KLWluaGVyaXQgZ28KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ28tZXhhbXBsZXMvZ28taGVsbG93b3JsZF8wLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dvLWV4YW1wbGVzL2dvLWhlbGxvd29ybGRfMC4xLmJiCmluZGV4IDkzMGM1N2QuLjIyMmZjOWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ28tZXhhbXBsZXMvZ28taGVsbG93b3JsZF8wLjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nby1leGFtcGxlcy9nby1oZWxsb3dvcmxkXzAuMS5iYgpAQCAtMSwxMyArMSwxOSBAQAotcmVxdWlyZSBnby1leGFtcGxlcy5pbmMKK0RFU0NSSVBUSU9OID0gIlRoaXMgaXMgYSBzaW1wbGUgZXhhbXBsZSByZWNpcGUgdGhhdCBjcm9zcy1jb21waWxlcyBhIEdvIHByb2dyYW0uIgorU0VDVElPTiA9ICJleGFtcGxlcyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ29sYW5nLm9yZy8iCiAKLVNSQ19VUkkgKz0gIiBcCi0gIGZpbGU6Ly9oZWxsb3dvcmxkLmdvIFwKLSIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT01NT05fTElDRU5TRV9ESVJ9L01JVDttZDU9MDgzNWFkZTY5OGUwYmNmODUwNmVjZGEyZjdiNGYzMDIiCiAKLWRvX2NvbXBpbGUoKSB7Ci0JZ28gYnVpbGQgaGVsbG93b3JsZC5nbwotfQorU1JDX1VSSSA9ICJnaXQ6Ly8ke0dPX0lNUE9SVH0iCitTUkNSRVYgPSAiNDY2OTVkODFkMWZhZTkwNWEyNzBmYjdkYjhhNGQxMWEzMzQ1NjJmZSIKIAotZG9faW5zdGFsbCgpIHsKLQlpbnN0YWxsIC1EIC1tIDA3NTUgJHtTfS9oZWxsb3dvcmxkICR7RH0ke2JpbmRpcn0vaGVsbG93b3JsZAorR09fSU1QT1JUID0gImdpdGh1Yi5jb20vZ29sYW5nL2V4YW1wbGUiCitHT19JTlNUQUxMID0gIiR7R09fSU1QT1JUfS9oZWxsbyIKKworaW5oZXJpdCBnbworCisjIFRoaXMgaXMganVzdCB0byBtYWtlIGNsZWFyIHdoZXJlIHRoaXMgZXhhbXBsZSBpcworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgbXYgJHtEfSR7YmluZGlyfS9oZWxsbyAke0R9JHtiaW5kaXJ9LyR7QlBOfQogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncGVyZi9ncGVyZl8zLjAuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3BlcmYvZ3BlcmZfMy4wLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0MDAzZmMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncGVyZi9ncGVyZl8zLjAuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotcmVxdWlyZSBncGVyZi5pbmMKLQotCi1TUkNfVVJJW21kNXN1bV0gPSAiYzFmMWRiMzJmYjY1OThkNmE5M2U2ZTg4Nzk2YTg2MzIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzY3MTEyYTIwNDQwN2U2MmRiYzMxMDY2NDdjZjgzOWVkNTQ0ZjNjZjVkMGYwNTIzYWFhMjUwODYyM2FhZDYzZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3BlcmYvZ3BlcmZfMy4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncGVyZi9ncGVyZl8zLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQyODIwYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3BlcmYvZ3BlcmZfMy4xLmJiCkBAIC0wLDAgKzEsNSBAQAorcmVxdWlyZSBncGVyZi5pbmMKKworCitTUkNfVVJJW21kNXN1bV0gPSAiOWUyNTFjMGE2MThhZDA4MjRiNTExMTdkNWQ5ZGI4N2UiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTg4NTQ2Yjk0NWJiYTRiNzBiNmEzYTYxNmU4MGI0YWI0NjZlM2YzMzAyNGEzNTJmYzIxOTgxMTJjZGJiM2FlMiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JlcC9ncmVwXzMuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JlcC9ncmVwXzMuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjI5NDBkNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyZXAvZ3JlcF8zLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1TVU1NQVJZID0gIkdOVSBncmVwIHV0aWxpdHkiCi1IT01FUEFHRSA9ICJodHRwOi8vc2F2YW5uYWguZ251Lm9yZy9wcm9qZWN0cy9ncmVwLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL3NhdmFubmFoLmdudS5vcmcvYnVncy8/Z3JvdXA9Z3JlcCIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04MDA2ZDljODE0Mjc3YzFiZmM0Y2EyMmFmOTRiNTllZSIKLQotU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2dyZXAvZ3JlcC0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZmEwN2MxNjE2YWRlYjljMzI2MmJlNTE3N2QxMGFkNGEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTJjODFkYjUwNTZlM2U4YzU5OTVmMGJiNWQwZDBlMWNhZDFmNmY0NWMzYjJmYzc3YjZlODE0MzVhZWQ0OGFiNSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvIHBrZ2NvbmZpZwotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXBlcmwtcmVnZXhwIgotCi0jIEZpeCAiQXJndW1lbnQgbGlzdCB0b28gbG9uZyIgZXJyb3Igd2hlbiBsZW4oVE1QRElSKSA9IDQxMAotYWNwYXRocyA9ICItSSAuL200IgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0Jcm0gLWYgJHtTfS9tNC9pbml0Lm00Ci19Ci0KLWRvX2luc3RhbGwgKCkgewotCWF1dG90b29sc19kb19pbnN0YWxsCi0JaWYgWyAiJHtiYXNlX2JpbmRpcn0iICE9ICIke2JpbmRpcn0iIF07IHRoZW4KLQkJaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KLQkJbXYgJHtEfSR7YmluZGlyfS9ncmVwICR7RH0ke2Jhc2VfYmluZGlyfS9ncmVwCi0JCW12ICR7RH0ke2JpbmRpcn0vZWdyZXAgJHtEfSR7YmFzZV9iaW5kaXJ9L2VncmVwCi0JCW12ICR7RH0ke2JpbmRpcn0vZmdyZXAgJHtEfSR7YmFzZV9iaW5kaXJ9L2ZncmVwCi0JCXJtZGlyICR7RH0ke2JpbmRpcn0vCi0JZmkKLX0KLQotaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLQotQUxURVJOQVRJVkVfJHtQTn0gPSAiZ3JlcCBlZ3JlcCBmZ3JlcCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtncmVwXSA9ICIke2Jhc2VfYmluZGlyfS9ncmVwIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2VncmVwXSA9ICIke2Jhc2VfYmluZGlyfS9lZ3JlcCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtmZ3JlcF0gPSAiJHtiYXNlX2JpbmRpcn0vZmdyZXAiCi0KLWV4cG9ydCBDT05GSUdfU0hFTEw9Ii9iaW4vc2giCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyZXAvZ3JlcF8zLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyZXAvZ3JlcF8zLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDViNmI5MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JlcC9ncmVwXzMuMS5iYgpAQCAtMCwwICsxLDQ2IEBACitTVU1NQVJZID0gIkdOVSBncmVwIHV0aWxpdHkiCitIT01FUEFHRSA9ICJodHRwOi8vc2F2YW5uYWguZ251Lm9yZy9wcm9qZWN0cy9ncmVwLyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL3NhdmFubmFoLmdudS5vcmcvYnVncy8/Z3JvdXA9Z3JlcCIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04MDA2ZDljODE0Mjc3YzFiZmM0Y2EyMmFmOTRiNTllZSIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2dyZXAvZ3JlcC0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZmVjYTdiM2U3YzdmNGFhYjJiNDJlY2JmYzUxM2IwNzAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGI2MjVjN2FiM2JiM2VlNzU3YjM5MjZhNWNmYThkOWUxYzM5OTFhZDI0NzA3YTgzZGRlOGE1ZWYyYmY3YTA3ZSIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvIHBrZ2NvbmZpZworCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXBlcmwtcmVnZXhwIgorCisjIEZpeCAiQXJndW1lbnQgbGlzdCB0b28gbG9uZyIgZXJyb3Igd2hlbiBsZW4oVE1QRElSKSA9IDQxMAorYWNwYXRocyA9ICItSSAuL200IgorCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisJcm0gLWYgJHtTfS9tNC9pbml0Lm00Cit9CisKK2RvX2luc3RhbGwgKCkgeworCWF1dG90b29sc19kb19pbnN0YWxsCisJaWYgWyAiJHtiYXNlX2JpbmRpcn0iICE9ICIke2JpbmRpcn0iIF07IHRoZW4KKwkJaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KKwkJbXYgJHtEfSR7YmluZGlyfS9ncmVwICR7RH0ke2Jhc2VfYmluZGlyfS9ncmVwCisJCW12ICR7RH0ke2JpbmRpcn0vZWdyZXAgJHtEfSR7YmFzZV9iaW5kaXJ9L2VncmVwCisJCW12ICR7RH0ke2JpbmRpcn0vZmdyZXAgJHtEfSR7YmFzZV9iaW5kaXJ9L2ZncmVwCisJCXJtZGlyICR7RH0ke2JpbmRpcn0vCisJZmkKK30KKworaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKKworQUxURVJOQVRJVkVfJHtQTn0gPSAiZ3JlcCBlZ3JlcCBmZ3JlcCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtncmVwXSA9ICIke2Jhc2VfYmluZGlyfS9ncmVwIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2VncmVwXSA9ICIke2Jhc2VfYmluZGlyfS9lZ3JlcCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtmZ3JlcF0gPSAiJHtiYXNlX2JpbmRpcn0vZmdyZXAiCisKK2V4cG9ydCBDT05GSUdfU0hFTEw9Ii9iaW4vc2giCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZmlsZXMvMDAwMS1nemlwLXBvcnQtemRpZmYtemxlc3MtdG8tQnVzeWJveC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9maWxlcy8wMDAxLWd6aXAtcG9ydC16ZGlmZi16bGVzcy10by1CdXN5Ym94LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwZDVhMTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZmlsZXMvMDAwMS1nemlwLXBvcnQtemRpZmYtemxlc3MtdG8tQnVzeWJveC5wYXRjaApAQCAtMCwwICsxLDU5IEBACitGcm9tIDVmNzEyNjIxODI5ZWQ4MWE3NTgwNzc0MzEyMjZhODZkZjM3ZmJjM2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBEZW55cyBaYWdvcnVpIDxkZW55cy56YWdvcnVpQGdsb2JhbGxvZ2ljLmNvbT4KK0RhdGU6IFRodSwgOCBKdW4gMjAxNyAxNjowNTo1MCArMDMwMAorU3ViamVjdDogW1BBVENIXSBnemlwOiBwb3J0IHpkaWZmLCB6bGVzcyB0byBCdXN5Ym94CisKK1Byb2JsZW0gcmVwb3J0ZWQgYnkgRGVueXMgWmFnb3J1aSAoQnVnIzI2MDg4KS4KKyogdGVzdHMvemRpZmY6IENoZWNrIHRoYXQgZGlmZiB1c2VzIFBPU0lYLWZvcm1hdCBvdXRwdXQuCisqIHpsZXNzLmluIChsZXNzX3ZlcnNpb24pOiBEb24ndCBleGl0IG1lcmVseSBiZWNhdXNlICdsZXNzIC1WJworZmFpbHM7IGluc3RlYWQsIGFzc3VtZSAnbGVzcycgaXMgY29tcGF0aWJsZSB3aXRoIGFuIG9sZCB2ZXJzaW9uIG9mCit0aGUgb3JpZ2luYWwgJ2xlc3MnLiAgQnVzeWJveCAnbGVzcyAtVicgZmFpbHMsIGJ1dCBhcHBhcmVudGx5IGl0cworJ2xlc3MnIHdvcmtzIGFueXdheSBzb21laG93LgorCitTaWduZWQtb2ZmLWJ5OiBEZW55cyBaYWdvcnVpIDxkZW55cy56YWdvcnVpQGdsb2JhbGxvZ2ljLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZAorLS0tCisgdGVzdHMvemRpZmYgfCA0ICsrKy0KKyB6bGVzcy5pbiAgICB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3Rlc3RzL3pkaWZmIGIvdGVzdHMvemRpZmYKK2luZGV4IDBiYjdjN2QuLjljZDRmZDQgMTAwNzU1CistLS0gYS90ZXN0cy96ZGlmZgorKysrIGIvdGVzdHMvemRpZmYKK0BAIC0yMiw3ICsyMiw2IEBACisgCisgZWNobyBhID4gYSB8fCBmcmFtZXdvcmtfZmFpbHVyZV8KKyBlY2hvIGIgPiBiIHx8IGZyYW1ld29ya19mYWlsdXJlXworLWd6aXAgYSBiIHx8IGZyYW1ld29ya19mYWlsdXJlXworIAorIGNhdCA8PEVPRiA+IGV4cAorIDFjMQorQEAgLTMxLDcgKzMwLDEwIEBAIGNhdCA8PEVPRiA+IGV4cAorID4gYgorIEVPRgorIAorK2RpZmYgYSBiIHwgZGlmZiBleHAgLSB8fCBza2lwXyAiZGlmZiBvdXRwdXQgZm9ybWF0IGlzIGluY29tcGF0aWJsZSB3aXRoIFBPU0lYIgorKworIGZhaWw9MAorK2d6aXAgYSBiIHx8IGZhaWw9MQorIHpkaWZmIGEuZ3ogYi5neiA+IG91dCAyPiYxCisgdGVzdCAkPyA9IDEgfHwgZmFpbD0xCisgCitkaWZmIC0tZ2l0IGEvemxlc3MuaW4gYi96bGVzcy5pbgoraW5kZXggZTYzNGFmNi4uOTc1OWFlNiAxMDA2NDQKKy0tLSBhL3psZXNzLmluCisrKysgYi96bGVzcy5pbgorQEAgLTQ3LDcgKzQ3LDcgQEAgaWYgdGVzdCAiJHtMRVNTTUVUQUNIQVJTK3NldH0iICE9IHNldDsgdGhlbgorICAgZXhwb3J0IExFU1NNRVRBQ0hBUlMKKyBmaQorIAorLWxlc3NfdmVyc2lvbj1gbGVzcyAtVmAgfHwgZXhpdAorK2xlc3NfdmVyc2lvbj1gbGVzcyAtViAyPi9kZXYvbnVsbGAKKyBjYXNlICRsZXNzX3ZlcnNpb24gaW4KKyBsZXNzJyAnNDVbMS05XSogfCBcCisgbGVzcycgJzRbNi05XVswLTldKiB8IFwKKy0tIAorMS45LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nemlwL2ZpbGVzL3J1bi1wdGVzdCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9maWxlcy9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Y3YzY0OQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9maWxlcy9ydW4tcHRlc3QKQEAgLTAsMCArMSw2IEBACisjIS9iaW4vc2gKKworY2Qgc3JjL3Rlc3RzCisKK21ha2UgY2hlY2sKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nemlwL2d6aXBfMS44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nemlwL2d6aXBfMS44LmJiCmluZGV4IDExYmU4NDYuLmQwOTMyMDcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9nemlwXzEuOC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZ3ppcF8xLjguYmIKQEAgLTIsNyArMiw5IEBACiAKIExJQ0VOU0UgPSAiR1BMdjMrIgogCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZ3ppcC8ke0JQfS50YXIuZ3oiCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZ3ppcC8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtZ3ppcC1wb3J0LXpkaWZmLXpsZXNzLXRvLUJ1c3lib3gucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCIKIFNSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgZmlsZTovL3dyb25nLXBhdGgtZml4LnBhdGNoIgogCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCkBAIC0xMiw2ICsxNCwyNiBAQAogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKIAoraW5oZXJpdCBwdGVzdAorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCW1rZGlyIC1wICR7RH0ke1BURVNUX1BBVEh9L3NyYy9idWlsZC1hdXgKKwljcCAke1N9L2J1aWxkLWF1eC90ZXN0LWRyaXZlciAke0R9JHtQVEVTVF9QQVRIfS9zcmMvYnVpbGQtYXV4LworCW1rZGlyIC1wICR7RH0ke1BURVNUX1BBVEh9L3NyYy90ZXN0cworCWNwIC1yICR7U30vdGVzdHMvKiAke0R9JHtQVEVTVF9QQVRIfS9zcmMvdGVzdHMKKwlzZWQgLWUgJ3MvXmFic19zcmNkaXIgPSAuLiovYWJzX3NyY2RpciA9IFwuXC4vJyBcCisgICAgICAgICAgICAtZSAncy9edG9wX3NyY2RpciA9IC4uKi90b3Bfc3JjZGlyID0gXC5cLi8nIFwKKyAgICAgICAgICAgIC1lICdzL15HUkVQID0gLi4qL0dSRVAgPSBncmVwLycgICAgICAgICAgICAgXAorICAgICAgICAgICAgLWUgJ3MvXkFXSyA9IC4uKi9BV0sgPSBhd2svJyAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAtZSAncy9ec3JjZGlyID0gLi4qL3NyY2RpciA9IFwuLycgICAgICAgICAgIFwKKyAgICAgICAgICAgIC1lICdzL15NYWtlZmlsZTogLi4qL01ha2VmaWxlOiAvJyAgICAgICAgICAgXAorICAgICAgICAgICAgLWUgJ3MsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgICBcCisgICAgICAgICAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCisgICAgICAgICAgICAtZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIC1lICdzOiR7QkFTRV9XT1JLRElSfS8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfTo6ZycgXAorICAgICAgICAgICAgJHtCfS90ZXN0cy9NYWtlZmlsZSA+ICR7RH0ke1BURVNUX1BBVEh9L3NyYy90ZXN0cy9NYWtlZmlsZQorfQorCiBTUkNfVVJJW21kNXN1bV0gPSAiNzMyNTUzMTUyODE0YjIyZGMzNWFhMDI2N2RmNTI4NmMiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWZmN2FlZGIzZDY2YTBkNzNmNDQyZjYyNjFlNGIzODYwZGY2ZmQ2Yzk0MDI1YzJjYjMxYTIwMmM5YzYwZmUwZSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9oZHBhcm0vaGRwYXJtXzkuNTEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2hkcGFybS9oZHBhcm1fOS41MS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmEwMDkyNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2hkcGFybS9oZHBhcm1fOS41MS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLVNVTU1BUlkgPSAiVXRpbGl0eSBmb3Igdmlld2luZy9tYW5pcHVsYXRpbmcgSURFIGRpc2sgZHJpdmUvZHJpdmVyIHBhcmFtZXRlcnMiCi1ERVNDUklQVElPTiA9ICJoZHBhcm0gaXMgYSBMaW51eCBzaGVsbCB1dGlsaXR5IGZvciB2aWV3aW5nIFwKLWFuZCBtYW5pcHVsYXRpbmcgdmFyaW91cyBJREUgZHJpdmUgYW5kIGRyaXZlciBwYXJhbWV0ZXJzLiIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLQotTElDRU5TRSA9ICJCU0QgJiBHUEx2MiIKLUxJQ0VOU0VfJHtQTn0gPSAiQlNEIgotTElDRU5TRV8ke1BOfS1kYmcgPSAiQlNEIgotTElDRU5TRV93aXBlciA9ICJHUEx2MiIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5UWFQ7bWQ1PTkxMGE4YTQyYzk2MmQyMzg2MTljNzVmZGI3OGJkYjI0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RlYmlhbi9jb3B5cmlnaHQ7bWQ1PWE4MmQ3YmEzYWRlOWU4ZWM5MDI3NDlkYjk4YzU5MmYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3dpcGVyL0dQTHYyLnR4dDttZDU9ZmNiMDJkYzU1MmEwNDFkZWUyN2U0Yjg1YzczOTYwNjcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vd2lwZXIvd2lwZXIuc2g7YmVnaW5saW5lPTc7ZW5kbGluZT0zMTttZDU9YjdiYzY0MmFkZGMxNTJlYTMwNzUwNWJmMWEyOTZmMDkiCi0KLQotUEFDS0FHRVMgPSsgIndpcGVyIgotCi1GSUxFU193aXBlciA9ICIke2JpbmRpcn0vd2lwZXIuc2giCi0KLVJERVBFTkRTX3dpcGVyID0gImJhc2ggZ2F3ayBzdGF0IgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9oZHBhcm0vJHtCUH0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOGZlMGE3MWRiMDJmN2ZmYzYwMmQxNGE2OWY3NjZjZmYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWFmYWQ4ODkxZWNiZTY0NGMyODNmN2Q3MjUxNTc2NjBlYmY4YmQ1YjRkOWQ2NzIzMmFmZDQ1ZjgzZDJkNWQ5MSIKLQotRVhUUkFfT0VNQUtFID0gJ1NUUklQPSJlY2hvIiBMREZMQUdTPSIke0xERkxBR1N9IicKLQotaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLUFMVEVSTkFUSVZFXyR7UE59ID0gImhkcGFybSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtoZHBhcm1dID0gIiR7YmFzZV9zYmluZGlyfS9oZHBhcm0iCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCi0KLWRvX2luc3RhbGwgKCkgewotCWluc3RhbGwgLWQgJHtEfS8ke2Jhc2Vfc2JpbmRpcn0gJHtEfS8ke21hbmRpcn0vbWFuOCAke0R9LyR7YmluZGlyfQotCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgJ3NiaW5kaXI9JHtiYXNlX3NiaW5kaXJ9JyBpbnN0YWxsCi0JY3AgJHtTfS93aXBlci93aXBlci5zaCAke0R9LyR7YmluZGlyfQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9oZHBhcm0vaGRwYXJtXzkuNTIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2hkcGFybS9oZHBhcm1fOS41Mi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OWZkYzk0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9oZHBhcm0vaGRwYXJtXzkuNTIuYmIKQEAgLTAsMCArMSw0MSBAQAorU1VNTUFSWSA9ICJVdGlsaXR5IGZvciB2aWV3aW5nL21hbmlwdWxhdGluZyBJREUgZGlzayBkcml2ZS9kcml2ZXIgcGFyYW1ldGVycyIKK0hPTUVQQUdFID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvaGRwYXJtLyIKK0RFU0NSSVBUSU9OID0gImhkcGFybSBpcyBhIExpbnV4IHNoZWxsIHV0aWxpdHkgZm9yIHZpZXdpbmcgXAorYW5kIG1hbmlwdWxhdGluZyB2YXJpb3VzIElERSBkcml2ZSBhbmQgZHJpdmVyIHBhcmFtZXRlcnMuIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorCitMSUNFTlNFID0gIkJTRCAmIEdQTHYyIgorTElDRU5TRV8ke1BOfSA9ICJCU0QiCitMSUNFTlNFXyR7UE59LWRiZyA9ICJCU0QiCitMSUNFTlNFX3dpcGVyID0gIkdQTHYyIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLlRYVDttZDU9NDk1ZDAzZTUwZGM2Yzg5ZDZhMzAxMDdhYjBkZjViMDMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZGViaWFuL2NvcHlyaWdodDttZDU9YTgyZDdiYTNhZGU5ZThlYzkwMjc0OWRiOThjNTkyZjMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vd2lwZXIvR1BMdjIudHh0O21kNT1mY2IwMmRjNTUyYTA0MWRlZTI3ZTRiODVjNzM5NjA2NyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly93aXBlci93aXBlci5zaDtiZWdpbmxpbmU9NztlbmRsaW5lPTMxO21kNT1iN2JjNjQyYWRkYzE1MmVhMzA3NTA1YmYxYTI5NmYwOSIKKworCitQQUNLQUdFUyA9KyAid2lwZXIiCisKK0ZJTEVTX3dpcGVyID0gIiR7YmluZGlyfS93aXBlci5zaCIKKworUkRFUEVORFNfd2lwZXIgPSAiYmFzaCBnYXdrIHN0YXQiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2hkcGFybS8ke0JQfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0MTA1MzlkMGJmM2NjMjQ3MTgxNTk0NTgxZWRiZmI1MyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjMzQyOWNkNDIzZTI3MWZhNTY1YmY1ODQ1OThmZDc1MWRkMmU3NzNiYjcxOTlhNTkyYjA2YjVhNjFjZWM0ZmI2IgorCitFWFRSQV9PRU1BS0UgPSAnU1RSSVA9ImVjaG8iIExERkxBR1M9IiR7TERGTEFHU30iJworCitpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworQUxURVJOQVRJVkVfJHtQTn0gPSAiaGRwYXJtIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2hkcGFybV0gPSAiJHtiYXNlX3NiaW5kaXJ9L2hkcGFybSIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKKworZG9faW5zdGFsbCAoKSB7CisJaW5zdGFsbCAtZCAke0R9LyR7YmFzZV9zYmluZGlyfSAke0R9LyR7bWFuZGlyfS9tYW44ICR7RH0vJHtiaW5kaXJ9CisJb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyAnc2JpbmRpcj0ke2Jhc2Vfc2JpbmRpcn0nIGluc3RhbGwKKwljcCAke1N9L3dpcGVyL3dpcGVyLnNoICR7RH0vJHtiaW5kaXJ9Cit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvZmlsZXMvYXJwaW5nLWZpeC1hcnBpbmctaGFuZy1pZi1TSUdBTFJNLWlzLWJsb2NrZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvZmlsZXMvYXJwaW5nLWZpeC1hcnBpbmctaGFuZy1pZi1TSUdBTFJNLWlzLWJsb2NrZWQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2I1NjI3NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9maWxlcy9hcnBpbmctZml4LWFycGluZy1oYW5nLWlmLVNJR0FMUk0taXMtYmxvY2tlZC5wYXRjaApAQCAtMCwwICsxLDQ0IEBACithcnBpbmc6IGZpeCBhcnBpbmcgaGFuZyBpZiBTSUdBTFJNIGlzIGJsb2NrZWQKKworVW5ibG9jayBTSUdBTFJNIHNvIHRoYXQgdGhlIHByZXZpb3VzbHkgY2FsbGVkIGFsYXJtKCkgY2FuIHByZXZlbnQKK3JlY3Zmcm9tKCkgZnJvbSBibG9ja2luZyBmb3JldmVyIGluIGNhc2UgdGhlIGluaGVyaXRlZCBwcm9jbWFzayBpcworYmxvY2tpbmcgU0lHQUxSTSBhbmQgbm8gcGFja2V0IGlzIHJlY2VpdmVkLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1JlcG9ydGVkLWJ5OiBSdWkgUHJpb3IgPHJwcmlvckBkY2MuZmMudXAucHQ+CitSSC1CdWd6aWxsYTogIzEwODU5NzEKK1NpZ25lZC1vZmYtYnk6IEphbiBTeW5hY2VrIDxqc3luYWNla0ByZWRoYXQuY29tPgorU2lnbmVkLW9mZi1ieTogWmhlbmJvIEdhbyA8emhlbmJvLmdhb0B3aW5kcml2ZXIuY29tPgorCitkaWZmIC0tZ2l0IGEvYXJwaW5nLmMub3JpZyBiL2FycGluZy5jCitpbmRleCAzNTQwOGMxLi4yMDk4MTU5IDEwMDY0NAorLS0tIGEvYXJwaW5nLmMub3JpZworKysrIGIvYXJwaW5nLmMKK0BAIC0xMjE1LDE2ICsxMjE1LDIyIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAkJc29ja2xlbl90IGFsZW4gPSBzaXplb2YoZnJvbSk7CisgCQlpbnQgY2M7CisgCisrCQlzaWdlbXB0eXNldCgmc3NldCk7CisrCQlzaWdhZGRzZXQoJnNzZXQsIFNJR0FMUk0pOworKwkJc2lnYWRkc2V0KCZzc2V0LCBTSUdJTlQpOworKwkJLyogVW5ibG9jayBTSUdBTFJNIHNvIHRoYXQgdGhlIHByZXZpb3VzbHkgY2FsbGVkIGFsYXJtKCkKKysJCSAqIGNhbiBwcmV2ZW50IHJlY3Zmcm9tIGZyb20gYmxvY2tpbmcgZm9yZXZlciBpbiBjYXNlIHRoZQorKwkJICogaW5oZXJpdGVkIHByb2NtYXNrIGlzIGJsb2NraW5nIFNJR0FMUk0gYW5kIG5vIHBhY2tldAorKwkJICogaXMgcmVjZWl2ZWQuICovCisrCQlzaWdwcm9jbWFzayhTSUdfVU5CTE9DSywgJnNzZXQsICZvc3NldCk7CisrCisgCQlpZiAoKGNjID0gcmVjdmZyb20ocywgcGFja2V0LCBzaXplb2YocGFja2V0KSwgMCwKKyAJCQkJICAgKHN0cnVjdCBzb2NrYWRkciAqKSZmcm9tLCAmYWxlbikpIDwgMCkgeworIAkJCXBlcnJvcigiYXJwaW5nOiByZWN2ZnJvbSIpOworIAkJCWNvbnRpbnVlOworIAkJfQorIAorLQkJc2lnZW1wdHlzZXQoJnNzZXQpOworLQkJc2lnYWRkc2V0KCZzc2V0LCBTSUdBTFJNKTsKKy0JCXNpZ2FkZHNldCgmc3NldCwgU0lHSU5UKTsKKy0JCXNpZ3Byb2NtYXNrKFNJR19CTE9DSywgJnNzZXQsICZvc3NldCk7CisrCQlzaWdwcm9jbWFzayhTSUdfQkxPQ0ssICZzc2V0LCBOVUxMKTsKKyAJCXJlY3ZfcGFjayhwYWNrZXQsIGNjLCAoc3RydWN0IHNvY2thZGRyX2xsICopJmZyb20pOworIAkJc2lncHJvY21hc2soU0lHX1NFVE1BU0ssICZvc3NldCwgTlVMTCk7CisgCX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9pcHV0aWxzX3MyMDE1MTIxOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9pcHV0aWxzX3MyMDE1MTIxOC5iYgppbmRleCAwZDRkZDFiLi40NmRlNmZjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvaXB1dGlsc19zMjAxNTEyMTguYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHNfczIwMTUxMjE4LmJiCkBAIC0yMCw2ICsyMCw3IEBACiAgICAgICAgICAgIGZpbGU6Ly9uc2dtbHMtcGF0aC1maXgucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtaGVhZGVyLWluY2x1c2lvbi1mb3ItbXVzbC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUludGlhbGl6ZS1zdHJ1Y3QtZWxlbWVudHMtYnktbmFtZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9hcnBpbmctZml4LWFycGluZy1oYW5nLWlmLVNJR0FMUk0taXMtYmxvY2tlZC5wYXRjaCBcCiAgICAgICAgICAgIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiOGFhYTczOTVmMjdkZmY5ZjU3YWUwMTZkNGJjNzUzY2UiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvZmlsZXMvMDAwMS1hcmNoaXZlX3dyaXRlX2Rpc2tfcG9zaXguYy1tYWtlLV9mc29iai1mdW5jdGlvbnMtbW9yLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2ZpbGVzLzAwMDEtYXJjaGl2ZV93cml0ZV9kaXNrX3Bvc2l4LmMtbWFrZS1fZnNvYmotZnVuY3Rpb25zLW1vci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTkxMWE3Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvZmlsZXMvMDAwMS1hcmNoaXZlX3dyaXRlX2Rpc2tfcG9zaXguYy1tYWtlLV9mc29iai1mdW5jdGlvbnMtbW9yLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjQ1ICswLDAgQEAKLUZyb20gOTA4ODFkMjRkM2Y2ZDVmYjIwN2U5N2RmM2I5MWJiZWE4NTk4ZTg0ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcnRpbiBNYXR1c2thIDxtYXJ0aW5AbWF0dXNrYS5vcmc+Ci1EYXRlOiBUdWUsIDI5IE5vdiAyMDE2IDE2OjQ3OjM3ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8yXSBhcmNoaXZlX3dyaXRlX2Rpc2tfcG9zaXguYzogbWFrZSAqX2Zzb2JqIGZ1bmN0aW9ucyBtb3JlCi0gcmVhZGFibGUKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydGVkCi0KLVNpZ25lZC1vZmYtYnk6IEFtYXJuYXRoIFZhbGx1cmkgPGFtYXJuYXRoLnZhbGx1cmlAaW50ZWwuY29tPgotLS0tCi0gbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX2Rpc2tfcG9zaXguYyB8IDEyMSArKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDYxIGluc2VydGlvbnMoKyksIDYwIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX2Rpc2tfcG9zaXguYyBiL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9kaXNrX3Bvc2l4LmMKLWluZGV4IDE3YzIzYjAuLmQ3ODZiYzIgMTAwNjQ0Ci0tLS0gYS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfZGlza19wb3NpeC5jCi0rKysgYi9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfZGlza19wb3NpeC5jCi1AQCAtMzM2LDYgKzMzNiw4IEBAIHN0cnVjdCBhcmNoaXZlX3dyaXRlX2Rpc2sgewotIAotICNkZWZpbmUgSEZTX0JMT0NLUyhzKQkoKHMpID4+IDEyKQotIAotK3N0YXRpYyB2b2lkCWZzb2JqX2Vycm9yKGludCAqLCBzdHJ1Y3QgYXJjaGl2ZV9zdHJpbmcgKiwgaW50LCBjb25zdCBjaGFyICosCi0rCQkgICAgY29uc3QgY2hhciAqKTsKLSBzdGF0aWMgaW50CWNoZWNrX3N5bWxpbmtzX2Zzb2JqKGNoYXIgKnBhdGgsIGludCAqZXJyb3JfbnVtYmVyLCBzdHJ1Y3QgYXJjaGl2ZV9zdHJpbmcgKmVycm9yX3N0cmluZywgaW50IGZsYWdzKTsKLSBzdGF0aWMgaW50CWNoZWNrX3N5bWxpbmtzKHN0cnVjdCBhcmNoaXZlX3dyaXRlX2Rpc2sgKik7Ci0gc3RhdGljIGludAljcmVhdGVfZmlsZXN5c3RlbV9vYmplY3Qoc3RydWN0IGFyY2hpdmVfd3JpdGVfZGlzayAqKTsKLUBAIC0yMDA1LDggKzIwMDcsOSBAQCByZXN0b3JlX2VudHJ5KHN0cnVjdCBhcmNoaXZlX3dyaXRlX2Rpc2sgKmEpCi0gCi0gCWlmIChlbikgewotIAkJLyogRXZlcnl0aGluZyBmYWlsZWQ7IGdpdmUgdXAgaGVyZS4gKi8KLS0JCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLCBlbiwgIkNhbid0IGNyZWF0ZSAnJXMnIiwKLS0JCSAgICBhLT5uYW1lKTsKLSsJCWlmICgoJmEtPmFyY2hpdmUpLT5lcnJvciA9PSBOVUxMKQotKwkJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLCBlbiwgIkNhbid0IGNyZWF0ZSAnJXMnIiwKLSsJCQkgICAgYS0+bmFtZSk7Ci0gCQlyZXR1cm4gKEFSQ0hJVkVfRkFJTEVEKTsKLSAJfQotIAotQEAgLTIzODgsNiArMjM5MSwxNyBAQCBjdXJyZW50X2ZpeHVwKHN0cnVjdCBhcmNoaXZlX3dyaXRlX2Rpc2sgKmEsIGNvbnN0IGNoYXIgKnBhdGhuYW1lKQotIAlyZXR1cm4gKGEtPmN1cnJlbnRfZml4dXApOwotIH0KLSAKLSsvKiBFcnJvciBoZWxwZXIgZm9yIG5ldyAqX2Zzb2JqIGZ1bmN0aW9ucyAqLwotK3N0YXRpYyB2b2lkCi0rZnNvYmpfZXJyb3IoaW50ICphX2Vubywgc3RydWN0IGFyY2hpdmVfc3RyaW5nICphX2VzdHIsCi0rICAgIGludCBlcnIsIGNvbnN0IGNoYXIgKmVycnN0ciwgY29uc3QgY2hhciAqcGF0aCkKLSt7Ci0rCWlmIChhX2VubykKLSsJCSphX2VubyA9IGVycjsKLSsJaWYgKGFfZXN0cikKLSsJCWFyY2hpdmVfc3RyaW5nX3NwcmludGYoYV9lc3RyLCBlcnJzdHIsIHBhdGgpOwotK30KLSsKLSAvKgotICAqIFRPRE86IFNvbWVkYXksIGludGVncmF0ZSB0aGlzIHdpdGggdGhlIGRlZXAgZGlyIHN1cHBvcnQ7IHRoZXkgYm90aAotICAqIHNjYW4gdGhlIHBhdGggYW5kIGJvdGggY2FuIGJlIG9wdGltaXplZCBieSBjb21wYXJpbmcgYWdhaW5zdCBvdGhlcgotQEAgLTI0MDAsNyArMjQxNCw3IEBAIGN1cnJlbnRfZml4dXAoc3RydWN0IGFyY2hpdmVfd3JpdGVfZGlzayAqYSwgY29uc3QgY2hhciAqcGF0aG5hbWUpCi0gICogQVJDSElWRV9PSyBpZiB0aGVyZSBhcmUgbm9uZSwgb3RoZXJ3aXNlIHB1dHMgYW4gZXJyb3IgaW4gZXJybXNnLgotICAqLwotIHN0YXRpYyBpbnQKLS1jaGVja19zeW1saW5rc19mc29iaihjaGFyICpwYXRoLCBpbnQgKmVycm9yX251bWJlciwgc3RydWN0IGFyY2hpdmVfc3RyaW5nICplcnJvcl9zdHJpbmcsIGludCBmbGFncykKLStjaGVja19zeW1saW5rc19mc29iaihjaGFyICpwYXRoLCBpbnQgKmFfZW5vLCBzdHJ1Y3QgYXJjaGl2ZV9zdHJpbmcgKmFfZXN0ciwgaW50IGZsYWdzKQotIHsKLSAjaWYgIWRlZmluZWQoSEFWRV9MU1RBVCkKLSAJLyogUGxhdGZvcm0gZG9lc24ndCBoYXZlIGxzdGF0LCBzbyB3ZSBjYW4ndCBsb29rIGZvciBzeW1saW5rcy4gKi8KLUBAIC0yNDc0LDE5ICsyNDg4LDIwIEBAIGNoZWNrX3N5bWxpbmtzX2Zzb2JqKGNoYXIgKnBhdGgsIGludCAqZXJyb3JfbnVtYmVyLCBzdHJ1Y3QgYXJjaGl2ZV9zdHJpbmcgKmVycm9yCi0gCQkJaWYgKGVycm5vID09IEVOT0VOVCkgewotIAkJCQlicmVhazsKLSAJCQl9IGVsc2UgewotLQkJCQkvKiBUcmVhdCBhbnkgb3RoZXIgZXJyb3IgYXMgZmF0YWwgLSBiZXN0IHRvIGJlIHBhcmFub2lkIGhlcmUKLS0JCQkJICogTm90ZTogVGhpcyBlZmZlY3RpdmVseSBkaXNhYmxlcyBkZWVwIGRpcmVjdG9yeQotLQkJCQkgKiBzdXBwb3J0IHdoZW4gc2VjdXJpdHkgY2hlY2tzIGFyZSBlbmFibGVkLgotLQkJCQkgKiBPdGhlcndpc2UsIHZlcnkgbG9uZyBwYXRobmFtZXMgdGhhdCB0cmlnZ2VyCi0tCQkJCSAqIGFuIGVycm9yIGhlcmUgY291bGQgZXZhZGUgdGhlIHNhbmRib3guCi0tCQkJCSAqIFRPRE86IFdlIGNvdWxkIGRvIGJldHRlciwgYnV0IGl0IHdvdWxkIHByb2JhYmx5Ci0tCQkJCSAqIHJlcXVpcmUgbWVyZ2luZyB0aGUgc3ltbGluayBjaGVja3Mgd2l0aCB0aGUKLS0JCQkJICogZGVlcC1kaXJlY3RvcnkgZWRpdGluZy4gKi8KLS0JCQkJaWYgKGVycm9yX251bWJlcikgKmVycm9yX251bWJlciA9IGVycm5vOwotLQkJCQlpZiAoZXJyb3Jfc3RyaW5nKQotLQkJCQkJYXJjaGl2ZV9zdHJpbmdfc3ByaW50ZihlcnJvcl9zdHJpbmcsCi0tCQkJCQkJCSJDb3VsZCBub3Qgc3RhdCAlcyIsCi0tCQkJCQkJCXBhdGgpOwotKwkJCQkvKgotKwkJCQkgKiBUcmVhdCBhbnkgb3RoZXIgZXJyb3IgYXMgZmF0YWwgLSBiZXN0IHRvIGJlCi0rCQkJCSAqIHBhcmFub2lkIGhlcmUuCi0rCQkJCSAqIE5vdGU6IFRoaXMgZWZmZWN0aXZlbHkgZGlzYWJsZXMgZGVlcAotKwkJCQkgKiBkaXJlY3Rvcnkgc3VwcG9ydCB3aGVuIHNlY3VyaXR5IGNoZWNrcyBhcmUKLSsJCQkJICogZW5hYmxlZC4gT3RoZXJ3aXNlLCB2ZXJ5IGxvbmcgcGF0aG5hbWVzIHRoYXQKLSsJCQkJICogdHJpZ2dlciBhbiBlcnJvciBoZXJlIGNvdWxkIGV2YWRlIHRoZQotKwkJCQkgKiBzYW5kYm94LgotKwkJCQkgKiBUT0RPOiBXZSBjb3VsZCBkbyBiZXR0ZXIsIGJ1dCBpdCB3b3VsZAotKwkJCQkgKiBwcm9iYWJseSByZXF1aXJlIG1lcmdpbmcgdGhlIHN5bWxpbmsgY2hlY2tzCi0rCQkJCSAqIHdpdGggdGhlIGRlZXAtZGlyZWN0b3J5IGVkaXRpbmcuCi0rCQkJCSAqLwotKwkJCQlmc29ial9lcnJvcihhX2VubywgYV9lc3RyLCBlcnJubywKLSsJCQkJICAgICJDb3VsZCBub3Qgc3RhdCAlcyIsIHBhdGgpOwotIAkJCQlyZXMgPSBBUkNISVZFX0ZBSUxFRDsKLSAJCQkJYnJlYWs7Ci0gCQkJfQotQEAgLTI0OTQsMTEgKzI1MDksOCBAQCBjaGVja19zeW1saW5rc19mc29iaihjaGFyICpwYXRoLCBpbnQgKmVycm9yX251bWJlciwgc3RydWN0IGFyY2hpdmVfc3RyaW5nICplcnJvcgotIAkJCWlmICghbGFzdCkgewotIAkJCQlpZiAoY2hkaXIoaGVhZCkgIT0gMCkgewotIAkJCQkJdGFpbFswXSA9IGM7Ci0tCQkJCQlpZiAoZXJyb3JfbnVtYmVyKSAqZXJyb3JfbnVtYmVyID0gZXJybm87Ci0tCQkJCQlpZiAoZXJyb3Jfc3RyaW5nKQotLQkJCQkJCWFyY2hpdmVfc3RyaW5nX3NwcmludGYoZXJyb3Jfc3RyaW5nLAotLQkJCQkJCQkJIkNvdWxkIG5vdCBjaGRpciAlcyIsCi0tCQkJCQkJCQlwYXRoKTsKLSsJCQkJCWZzb2JqX2Vycm9yKGFfZW5vLCBhX2VzdHIsIGVycm5vLAotKwkJCQkJICAgICJDb3VsZCBub3QgY2hkaXIgJXMiLCBwYXRoKTsKLSAJCQkJCXJlcyA9IChBUkNISVZFX0ZBVEFMKTsKLSAJCQkJCWJyZWFrOwotIAkJCQl9Ci1AQCAtMjUxNCwxMSArMjUyNiw5IEBAIGNoZWNrX3N5bWxpbmtzX2Zzb2JqKGNoYXIgKnBhdGgsIGludCAqZXJyb3JfbnVtYmVyLCBzdHJ1Y3QgYXJjaGl2ZV9zdHJpbmcgKmVycm9yCi0gCQkJCSAqLwotIAkJCQlpZiAodW5saW5rKGhlYWQpKSB7Ci0gCQkJCQl0YWlsWzBdID0gYzsKLS0JCQkJCWlmIChlcnJvcl9udW1iZXIpICplcnJvcl9udW1iZXIgPSBlcnJubzsKLS0JCQkJCWlmIChlcnJvcl9zdHJpbmcpCi0tCQkJCQkJYXJjaGl2ZV9zdHJpbmdfc3ByaW50ZihlcnJvcl9zdHJpbmcsCi0tCQkJCQkJCQkiQ291bGQgbm90IHJlbW92ZSBzeW1saW5rICVzIiwKLS0JCQkJCQkJCXBhdGgpOwotKwkJCQkJZnNvYmpfZXJyb3IoYV9lbm8sIGFfZXN0ciwgZXJybm8sCi0rCQkJCQkgICAgIkNvdWxkIG5vdCByZW1vdmUgc3ltbGluayAlcyIsCi0rCQkJCQkgICAgcGF0aCk7Ci0gCQkJCQlyZXMgPSBBUkNISVZFX0ZBSUxFRDsKLSAJCQkJCWJyZWFrOwotIAkJCQl9Ci1AQCAtMjUyOSwxMyArMjUzOSwxNCBAQCBjaGVja19zeW1saW5rc19mc29iaihjaGFyICpwYXRoLCBpbnQgKmVycm9yX251bWJlciwgc3RydWN0IGFyY2hpdmVfc3RyaW5nICplcnJvcgotIAkJCQkgKiBzeW1saW5rIHdpdGggYW5vdGhlciBzeW1saW5rLgotIAkJCQkgKi8KLSAJCQkJdGFpbFswXSA9IGM7Ci0tCQkJCS8qIEZJWE1FOiAgbm90IHN1cmUgaG93IGltcG9ydGFudCB0aGlzIGlzIHRvIHJlc3RvcmUKLSsJCQkJLyoKLSsJCQkJICogRklYTUU6ICBub3Qgc3VyZSBob3cgaW1wb3J0YW50IHRoaXMgaXMgdG8KLSsJCQkJICogcmVzdG9yZQotKwkJCQkgKi8KLSsJCQkJLyoKLSAJCQkJaWYgKCFTX0lTTE5LKHBhdGgpKSB7Ci0tCQkJCQlpZiAoZXJyb3JfbnVtYmVyKSAqZXJyb3JfbnVtYmVyID0gMDsKLS0JCQkJCWlmIChlcnJvcl9zdHJpbmcpCi0tCQkJCQkJYXJjaGl2ZV9zdHJpbmdfc3ByaW50ZihlcnJvcl9zdHJpbmcsCi0tCQkJCQkJCQkiUmVtb3Zpbmcgc3ltbGluayAlcyIsCi0tCQkJCQkJCQlwYXRoKTsKLSsJCQkJCWZzb2JqX2Vycm9yKGFfZW5vLCBhX2VzdHIsIDAsCi0rCQkJCQkgICAgIlJlbW92aW5nIHN5bWxpbmsgJXMiLCBwYXRoKTsKLSAJCQkJfQotIAkJCQkqLwotIAkJCQkvKiBTeW1saW5rIGdvbmUuICBObyBtb3JlIHByb2JsZW0hICovCi1AQCAtMjU0NSwyMiArMjU1NiwxNyBAQCBjaGVja19zeW1saW5rc19mc29iaihjaGFyICpwYXRoLCBpbnQgKmVycm9yX251bWJlciwgc3RydWN0IGFyY2hpdmVfc3RyaW5nICplcnJvcgotIAkJCQkvKiBVc2VyIGFza2VkIHVzIHRvIHJlbW92ZSBwcm9ibGVtcy4gKi8KLSAJCQkJaWYgKHVubGluayhoZWFkKSAhPSAwKSB7Ci0gCQkJCQl0YWlsWzBdID0gYzsKLS0JCQkJCWlmIChlcnJvcl9udW1iZXIpICplcnJvcl9udW1iZXIgPSAwOwotLQkJCQkJaWYgKGVycm9yX3N0cmluZykKLS0JCQkJCQlhcmNoaXZlX3N0cmluZ19zcHJpbnRmKGVycm9yX3N0cmluZywKLS0JCQkJCQkJCSJDYW5ub3QgcmVtb3ZlIGludGVydmVuaW5nIHN5bWxpbmsgJXMiLAotLQkJCQkJCQkJcGF0aCk7Ci0rCQkJCQlmc29ial9lcnJvcihhX2VubywgYV9lc3RyLCAwLAotKwkJCQkJICAgICJDYW5ub3QgcmVtb3ZlIGludGVydmVuaW5nICIKLSsJCQkJCSAgICAic3ltbGluayAlcyIsIHBhdGgpOwotIAkJCQkJcmVzID0gQVJDSElWRV9GQUlMRUQ7Ci0gCQkJCQlicmVhazsKLSAJCQkJfQotIAkJCQl0YWlsWzBdID0gYzsKLSAJCQl9IGVsc2UgewotIAkJCQl0YWlsWzBdID0gYzsKLS0JCQkJaWYgKGVycm9yX251bWJlcikgKmVycm9yX251bWJlciA9IDA7Ci0tCQkJCWlmIChlcnJvcl9zdHJpbmcpCi0tCQkJCQlhcmNoaXZlX3N0cmluZ19zcHJpbnRmKGVycm9yX3N0cmluZywKLS0JCQkJCQkJIkNhbm5vdCBleHRyYWN0IHRocm91Z2ggc3ltbGluayAlcyIsCi0tCQkJCQkJCXBhdGgpOwotKwkJCQlmc29ial9lcnJvcihhX2VubywgYV9lc3RyLCAwLAotKwkJCQkgICAgIkNhbm5vdCBleHRyYWN0IHRocm91Z2ggc3ltbGluayAlcyIsIHBhdGgpOwotIAkJCQlyZXMgPSBBUkNISVZFX0ZBSUxFRDsKLSAJCQkJYnJlYWs7Ci0gCQkJfQotQEAgLTI1NzcsMTAgKzI1ODMsOCBAQCBjaGVja19zeW1saW5rc19mc29iaihjaGFyICpwYXRoLCBpbnQgKmVycm9yX251bWJlciwgc3RydWN0IGFyY2hpdmVfc3RyaW5nICplcnJvcgotIAlpZiAocmVzdG9yZV9wd2QgPj0gMCkgewotIAkJciA9IGZjaGRpcihyZXN0b3JlX3B3ZCk7Ci0gCQlpZiAociAhPSAwKSB7Ci0tCQkJaWYoZXJyb3JfbnVtYmVyKSAqZXJyb3JfbnVtYmVyID0gZXJybm87Ci0tCQkJaWYoZXJyb3Jfc3RyaW5nKQotLQkJCQlhcmNoaXZlX3N0cmluZ19zcHJpbnRmKGVycm9yX3N0cmluZywKLS0JCQkJCQkiY2hkaXIoKSBmYWlsdXJlIik7Ci0rCQkJZnNvYmpfZXJyb3IoYV9lbm8sIGFfZXN0ciwgZXJybm8sCi0rCQkJICAgICJjaGRpcigpIGZhaWx1cmUiLCAiIik7Ci0gCQl9Ci0gCQljbG9zZShyZXN0b3JlX3B3ZCk7Ci0gCQlyZXN0b3JlX3B3ZCA9IC0xOwotQEAgLTI2ODgsMTcgKzI2OTIsMTYgQEAgY2xlYW51cF9wYXRobmFtZV93aW4oc3RydWN0IGFyY2hpdmVfd3JpdGVfZGlzayAqYSkKLSAgKiBpcyBzZXQpIGlmIHRoZSBwYXRoIGlzIGFic29sdXRlLgotICAqLwotIHN0YXRpYyBpbnQKLS1jbGVhbnVwX3BhdGhuYW1lX2Zzb2JqKGNoYXIgKnBhdGgsIGludCAqZXJyb3JfbnVtYmVyLCBzdHJ1Y3QgYXJjaGl2ZV9zdHJpbmcgKmVycm9yX3N0cmluZywgaW50IGZsYWdzKQotK2NsZWFudXBfcGF0aG5hbWVfZnNvYmooY2hhciAqcGF0aCwgaW50ICphX2Vubywgc3RydWN0IGFyY2hpdmVfc3RyaW5nICphX2VzdHIsCi0rICAgIGludCBmbGFncykKLSB7Ci0gCWNoYXIgKmRlc3QsICpzcmM7Ci0gCWNoYXIgc2VwYXJhdG9yID0gJ1wwJzsKLSAKLSAJZGVzdCA9IHNyYyA9IHBhdGg7Ci0gCWlmICgqc3JjID09ICdcMCcpIHsKLS0JCWlmIChlcnJvcl9udW1iZXIpICplcnJvcl9udW1iZXIgPSBBUkNISVZFX0VSUk5PX01JU0M7Ci0tCQlpZiAoZXJyb3Jfc3RyaW5nKQotLQkJICAgIGFyY2hpdmVfc3RyaW5nX3NwcmludGYoZXJyb3Jfc3RyaW5nLAotLQkJCSAgICAiSW52YWxpZCBlbXB0eSBwYXRobmFtZSIpOwotKwkJZnNvYmpfZXJyb3IoYV9lbm8sIGFfZXN0ciwgQVJDSElWRV9FUlJOT19NSVNDLAotKwkJICAgICJJbnZhbGlkIGVtcHR5ICIsICJwYXRobmFtZSIpOwotIAkJcmV0dXJuIChBUkNISVZFX0ZBSUxFRCk7Ci0gCX0KLSAKLUBAIC0yNzA4LDEwICsyNzExLDggQEAgY2xlYW51cF9wYXRobmFtZV9mc29iaihjaGFyICpwYXRoLCBpbnQgKmVycm9yX251bWJlciwgc3RydWN0IGFyY2hpdmVfc3RyaW5nICplcnIKLSAJLyogU2tpcCBsZWFkaW5nICcvJy4gKi8KLSAJaWYgKCpzcmMgPT0gJy8nKSB7Ci0gCQlpZiAoZmxhZ3MgJiBBUkNISVZFX0VYVFJBQ1RfU0VDVVJFX05PQUJTT0xVVEVQQVRIUykgewotLQkJCWlmIChlcnJvcl9udW1iZXIpICplcnJvcl9udW1iZXIgPSBBUkNISVZFX0VSUk5PX01JU0M7Ci0tCQkJaWYgKGVycm9yX3N0cmluZykKLS0JCQkgICAgYXJjaGl2ZV9zdHJpbmdfc3ByaW50ZihlcnJvcl9zdHJpbmcsCi0tCQkJCSAgICAiUGF0aCBpcyBhYnNvbHV0ZSIpOwotKwkJCWZzb2JqX2Vycm9yKGFfZW5vLCBhX2VzdHIsIEFSQ0hJVkVfRVJSTk9fTUlTQywKLSsJCQkgICAgIlBhdGggaXMgIiwgImFic29sdXRlIik7Ci0gCQkJcmV0dXJuIChBUkNISVZFX0ZBSUxFRCk7Ci0gCQl9Ci0gCi1AQCAtMjczOCwxMSArMjczOSwxMSBAQCBjbGVhbnVwX3BhdGhuYW1lX2Zzb2JqKGNoYXIgKnBhdGgsIGludCAqZXJyb3JfbnVtYmVyLCBzdHJ1Y3QgYXJjaGl2ZV9zdHJpbmcgKmVycgotIAkJCX0gZWxzZSBpZiAoc3JjWzFdID09ICcuJykgewotIAkJCQlpZiAoc3JjWzJdID09ICcvJyB8fCBzcmNbMl0gPT0gJ1wwJykgewotIAkJCQkJLyogQ29uZGl0aW9uYWxseSB3YXJuIGFib3V0ICcuLicgKi8KLS0JCQkJCWlmIChmbGFncyAmIEFSQ0hJVkVfRVhUUkFDVF9TRUNVUkVfTk9ET1RET1QpIHsKLS0JCQkJCQlpZiAoZXJyb3JfbnVtYmVyKSAqZXJyb3JfbnVtYmVyID0gQVJDSElWRV9FUlJOT19NSVNDOwotLQkJCQkJCWlmIChlcnJvcl9zdHJpbmcpCi0tCQkJCQkJICAgIGFyY2hpdmVfc3RyaW5nX3NwcmludGYoZXJyb3Jfc3RyaW5nLAotLQkJCQkJCQkgICAgIlBhdGggY29udGFpbnMgJy4uJyIpOwotKwkJCQkJaWYgKGZsYWdzCi0rCQkJCQkgICAgJiBBUkNISVZFX0VYVFJBQ1RfU0VDVVJFX05PRE9URE9UKSB7Ci0rCQkJCQkJZnNvYmpfZXJyb3IoYV9lbm8sIGFfZXN0ciwKLSsJCQkJCQkgICAgQVJDSElWRV9FUlJOT19NSVNDLAotKwkJCQkJCSAgICAiUGF0aCBjb250YWlucyAiLCAiJy4uJyIpOwotIAkJCQkJCXJldHVybiAoQVJDSElWRV9GQUlMRUQpOwotIAkJCQkJfQotIAkJCQl9Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9maWxlcy8wMDAyLUZpeC1leHRyYWN0aW5nLWhhcmRsaW5rcy1vdmVyLXN5bWxpbmtzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2ZpbGVzLzAwMDItRml4LWV4dHJhY3RpbmctaGFyZGxpbmtzLW92ZXItc3ltbGlua3MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3NDE4NjMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2ZpbGVzLzAwMDItRml4LWV4dHJhY3RpbmctaGFyZGxpbmtzLW92ZXItc3ltbGlua3MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMjAgKzAsMCBAQAotRnJvbSBlY2UyODEwMzg4NWEwNzlhMTI5YTIzYzUwMDEyNTJhMTY0ODUxN2FmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFydGluIE1hdHVza2EgPG1hcnRpbkBtYXR1c2thLm9yZz4KLURhdGU6IFR1ZSwgMjkgTm92IDIwMTYgMTY6NTU6NDEgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSCAyLzJdIEZpeCBleHRyYWN0aW5nIGhhcmRsaW5rcyBvdmVyIHN5bWxpbmtzCi0KLUNsb3NlcyAjODIxCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnRlZAotCi1TaWduZWQtb2ZmLWJ5OiBBbWFybmF0aCBWYWxsdXJpIDxhbWFybmF0aC52YWxsdXJpQGludGVsLmNvbT4KLS0tLQotIGxpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9kaXNrX3Bvc2l4LmMgfCA0MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIHRhci90ZXN0L3Rlc3Rfc3ltbGlua19kaXIuYyAgICAgICAgICAgfCAxOCArKysrKysrKysrKysrKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDYwIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9kaXNrX3Bvc2l4LmMgYi9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfZGlza19wb3NpeC5jCi1pbmRleCBkNzg2YmMyLi44MGIwM2NkIDEwMDY0NAotLS0tIGEvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX2Rpc2tfcG9zaXguYwotKysrIGIvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX2Rpc2tfcG9zaXguYwotQEAgLTI1NjMsNiArMjU2Myw0OSBAQCBjaGVja19zeW1saW5rc19mc29iaihjaGFyICpwYXRoLCBpbnQgKmFfZW5vLCBzdHJ1Y3QgYXJjaGl2ZV9zdHJpbmcgKmFfZXN0ciwgaW50Ci0gCQkJCQlicmVhazsKLSAJCQkJfQotIAkJCQl0YWlsWzBdID0gYzsKLSsJCQl9IGVsc2UgaWYgKChmbGFncyAmCi0rCQkJICAgIEFSQ0hJVkVfRVhUUkFDVF9TRUNVUkVfU1lNTElOS1MpID09IDApIHsKLSsJCQkJLyoKLSsJCQkJICogV2UgYXJlIG5vdCB0aGUgbGFzdCBlbGVtZW50IGFuZCB3ZSB3YW50IHRvCi0rCQkJCSAqIGZvbGxvdyBzeW1saW5rcyBpZiB0aGV5IGFyZSBhIGRpcmVjdG9yeS4KLSsJCQkJICogCi0rCQkJCSAqIFRoaXMgaXMgbmVlZGVkIHRvIGV4dHJhY3QgaGFyZGxpbmtzIG92ZXIKLSsJCQkJICogc3ltbGlua3MuCi0rCQkJCSAqLwotKwkJCQlyID0gc3RhdChoZWFkLCAmc3QpOwotKwkJCQlpZiAociAhPSAwKSB7Ci0rCQkJCQl0YWlsWzBdID0gYzsKLSsJCQkJCWlmIChlcnJubyA9PSBFTk9FTlQpIHsKLSsJCQkJCQlicmVhazsKLSsJCQkJCX0gZWxzZSB7Ci0rCQkJCQkJZnNvYmpfZXJyb3IoYV9lbm8sIGFfZXN0ciwKLSsJCQkJCQkgICAgZXJybm8sCi0rCQkJCQkJICAgICJDb3VsZCBub3Qgc3RhdCAlcyIsIHBhdGgpOwotKwkJCQkJCXJlcyA9IChBUkNISVZFX0ZBSUxFRCk7Ci0rCQkJCQkJYnJlYWs7Ci0rCQkJCQl9Ci0rCQkJCX0gZWxzZSBpZiAoU19JU0RJUihzdC5zdF9tb2RlKSkgewotKwkJCQkJaWYgKGNoZGlyKGhlYWQpICE9IDApIHsKLSsJCQkJCQl0YWlsWzBdID0gYzsKLSsJCQkJCQlmc29ial9lcnJvcihhX2VubywgYV9lc3RyLAotKwkJCQkJCSAgICBlcnJubywKLSsJCQkJCQkgICAgIkNvdWxkIG5vdCBjaGRpciAlcyIsIHBhdGgpOwotKwkJCQkJCXJlcyA9IChBUkNISVZFX0ZBVEFMKTsKLSsJCQkJCQlicmVhazsKLSsJCQkJCX0KLSsJCQkJCS8qCi0rCQkJCQkgKiBPdXIgdmlldyBpcyBub3cgZnJvbSBpbnNpZGUKLSsJCQkJCSAqIHRoaXMgZGlyOgotKwkJCQkJICovCi0rCQkJCQloZWFkID0gdGFpbCArIDE7Ci0rCQkJCX0gZWxzZSB7Ci0rCQkJCQl0YWlsWzBdID0gYzsKLSsJCQkJCWZzb2JqX2Vycm9yKGFfZW5vLCBhX2VzdHIsIDAsCi0rCQkJCQkgICAgIkNhbm5vdCBleHRyYWN0IHRocm91Z2ggIgotKwkJCQkJICAgICJzeW1saW5rICVzIiwgcGF0aCk7Ci0rCQkJCQlyZXMgPSBBUkNISVZFX0ZBSUxFRDsKLSsJCQkJCWJyZWFrOwotKwkJCQl9Ci0gCQkJfSBlbHNlIHsKLSAJCQkJdGFpbFswXSA9IGM7Ci0gCQkJCWZzb2JqX2Vycm9yKGFfZW5vLCBhX2VzdHIsIDAsCi1kaWZmIC0tZ2l0IGEvdGFyL3Rlc3QvdGVzdF9zeW1saW5rX2Rpci5jIGIvdGFyL3Rlc3QvdGVzdF9zeW1saW5rX2Rpci5jCi1pbmRleCAyNWJkOGIxLi44NTJlMDBiIDEwMDY0NAotLS0tIGEvdGFyL3Rlc3QvdGVzdF9zeW1saW5rX2Rpci5jCi0rKysgYi90YXIvdGVzdC90ZXN0X3N5bWxpbmtfZGlyLmMKLUBAIC00NywxMSArNDcsMTggQEAgREVGSU5FX1RFU1QodGVzdF9zeW1saW5rX2RpcikKLSAJYXNzZXJ0TWFrZURpcigic291cmNlL2RpcjMiLCAwNzU1KTsKLSAJYXNzZXJ0TWFrZURpcigic291cmNlL2RpcjMvZDMiLCAwNzU1KTsKLSAJYXNzZXJ0TWFrZUZpbGUoInNvdXJjZS9kaXIzL2YzIiwgMDc1NSwgImFiY2RlIik7Ci0rCWFzc2VydE1ha2VEaXIoInNvdXJjZS9kaXI0IiwgMDc1NSk7Ci0rCWFzc2VydE1ha2VGaWxlKCJzb3VyY2UvZGlyNC9maWxlMyIsIDA3NTUsICJhYmNkZWYiKTsKLSsJYXNzZXJ0TWFrZUhhcmRsaW5rKCJzb3VyY2UvZGlyNC9maWxlNCIsICJzb3VyY2UvZGlyNC9maWxlMyIpOwotIAotIAlhc3NlcnRFcXVhbEludCgwLAotIAkgICAgc3lzdGVtZigiJXMgLWNmIHRlc3QudGFyIC1DIHNvdXJjZSBkaXIgZGlyMiBkaXIzIGZpbGUgZmlsZTIiLAotIAkJdGVzdHByb2cpKTsKLSAKLSsJLyogU2Vjb25kIGFyY2hpdmUgd2l0aCBoYXJkbGlua3MgKi8KLSsJYXNzZXJ0RXF1YWxJbnQoMCwKLSsJICAgIHN5c3RlbWYoIiVzIC1jZiB0ZXN0Mi50YXIgLUMgc291cmNlIGRpcjQiLCB0ZXN0cHJvZykpOwotKwotIAkvKgotIAkgKiBFeHRyYWN0IHdpdGggLXggYW5kIHdpdGhvdXQgLVAuCi0gCSAqLwotQEAgLTExOCw5ICsxMjUsMTUgQEAgREVGSU5FX1RFU1QodGVzdF9zeW1saW5rX2RpcikKLSAJCWFzc2VydE1ha2VTeW1saW5rKCJkZXN0Mi9maWxlMiIsICJyZWFsX2ZpbGUyIik7Ci0gCWFzc2VydEVxdWFsSW50KDAsIHN5c3RlbWYoIiVzIC14UGYgdGVzdC50YXIgLUMgZGVzdDIiLCB0ZXN0cHJvZykpOwotIAotLQkvKiBkZXN0Mi9kaXIgc3ltbGluayBzaG91bGQgYmUgZm9sbG93ZWQgKi8KLSsJLyogImRpcjQiIGlzIGEgc3ltbGluayB0byBleGlzdGluZyAicmVhbF9kaXIiICovCi0rCWlmIChjYW5TeW1saW5rKCkpCi0rCQlhc3NlcnRNYWtlU3ltbGluaygiZGVzdDIvZGlyNCIsICJyZWFsX2RpciIpOwotKwlhc3NlcnRFcXVhbEludCgwLCBzeXN0ZW1mKCIlcyAteFBmIHRlc3QyLnRhciAtQyBkZXN0MiIsIHRlc3Rwcm9nKSk7Ci0rCi0rCS8qIGRlc3QyL2RpciBhbmQgZGVzdDIvZGlyNCBzeW1saW5rcyBzaG91bGQgYmUgZm9sbG93ZWQgKi8KLSAJaWYgKGNhblN5bWxpbmsoKSkgewotIAkJYXNzZXJ0SXNTeW1saW5rKCJkZXN0Mi9kaXIiLCAicmVhbF9kaXIiKTsKLSsJCWFzc2VydElzU3ltbGluaygiZGVzdDIvZGlyNCIsICJyZWFsX2RpciIpOwotIAkJYXNzZXJ0SXNEaXIoImRlc3QyL3JlYWxfZGlyIiwgLTEpOwotIAl9Ci0gCi1AQCAtMTQxLDQgKzE1NCw3IEBAIERFRklORV9URVNUKHRlc3Rfc3ltbGlua19kaXIpCi0gCS8qIGRlc3QyL2ZpbGUyIHN5bWxpbmsgc2hvdWxkIGJlIHJlbW92ZWQgKi8KLSAJZmFpbHVyZSgiU3ltbGluayB0byBub24tZXhpc3RpbmcgZmlsZSBzaG91bGQgYmUgcmVtb3ZlZCIpOwotIAlhc3NlcnRJc1JlZygiZGVzdDIvZmlsZTIiLCAtMSk7Ci0rCi0rCS8qIGRlc3QyL2RpcjQvZmlsZTMgYW5kIGRlc3QyL2RpcjQvZmlsZTQgc2hvdWxkIGJlIGhhcmQgbGlua3MgKi8KLSsJYXNzZXJ0SXNIYXJkbGluaygiZGVzdDIvZGlyNC9maWxlMyIsICJkZXN0Mi9kaXI0L2ZpbGU0Iik7Ci0gfQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvZmlsZXMvbm9uLXJlY3Vyc2l2ZS1leHRyYWN0LWFuZC1saXN0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2ZpbGVzL25vbi1yZWN1cnNpdmUtZXh0cmFjdC1hbmQtbGlzdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjFmOGYzZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvZmlsZXMvbm9uLXJlY3Vyc2l2ZS1leHRyYWN0LWFuZC1saXN0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTUzICswLDAgQEAKLUZyb20gZDYyNzE3MDlkMmRlYjk4MDgwNGY5MmU3NWY5YjVjYjYwMGRjNDJlZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFBhdHJpY2sgT2hseSA8cGF0cmljay5vaGx5QGludGVsLmNvbT4KLURhdGU6IE1vbiwgMjQgT2N0IDIwMTYgMTI6NTQ6NDggKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzJdIG5vbi1yZWN1cnNpdmUgZXh0cmFjdCBhbmQgbGlzdAotCi1Tb21ldGltZXMgaXQgbWFrZXMgc2Vuc2UgdG8gZXh0cmFjdCBvciBsaXN0IGEgZGlyZWN0b3J5IGNvbnRhaW5lZCBpbgotYW4gYXJjaGl2ZSB3aXRob3V0IGFsc28gZG9pbmcgdGhlIHNhbWUgZm9yIHRoZSBjb250ZW50IG9mIHRoZQotZGlyZWN0b3J5LCBpLmUuIGFsbG93aW5nIC1uICg9IC0tbm8tcmVjdXJzaW9uKSBpbiBjb21iaW5hdGlvbiB3aXRoIHRoZQoteCBhbmQgdCBtb2Rlcy4KLQotYnNkdGFyIHVzZXMgdGhlIG1hdGNoIGZ1bmN0aW9uYWxpdHkgaW4gbGliYXJjaGl2ZSB0byB0cmFjayBpbmNsdWRlCi1tYXRjaGVzLiBBIG5ldyBsaWJhcmNoaXZlIEFQSSBjYWxsCi1hcmNoaXZlX21hdGNoX2luY2x1ZGVfZGlyZWN0b3JpZXNfcmVjdXJzaXZlbHkoKSBnZXRzIGludHJvZHVjZWQgdG8KLWluZmx1ZW5jZSB0aGUgbWF0Y2hpbmcgYmVoYXZpb3IsIHdpdGggdGhlIGRlZmF1bHQgYmVoYXZpb3IgYXMgYmVmb3JlLgotCi1Ob24tcmVjdXJzaXZlIG1hdGNoaW5nIGNhbiBiZSBhY2hpZXZlZCBieSBhbmNob3JpbmcgdGhlIHBhdGggbWF0Y2ggYXQKLWJvdGggc3RhcnQgYW5kIGVuZC4gQXNraW5nIGZvciBhIGRpcmVjdG9yeSB3aGljaCBpdHNlbGYgaXNuJ3QgaW4gdGhlCi1hcmNoaXZlIHdoZW4gaW4gbm9uLXJlY3Vyc2l2ZSBtb2RlIGlzIGFuIGVycm9yIGFuZCBoYW5kbGVkIGJ5IHRoZQotZXhpc3RpbmcgbWVjaGFuaXNtIGZvciB0cmFja2luZyB1bnVzZWQgaW5jbHVzaW9uIGVudHJpZXMuCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vbGliYXJjaGl2ZS9saWJhcmNoaXZlL3B1bGwvODEyXQotCi1TaWduZWQtb2ZmLWJ5OiBQYXRyaWNrIE9obHkgPHBhdHJpY2sub2hseUBpbnRlbC5jb20+Ci0KLS0tLQotIGxpYmFyY2hpdmUvYXJjaGl2ZS5oICAgICAgIHwgIDIgKysKLSBsaWJhcmNoaXZlL2FyY2hpdmVfbWF0Y2guYyB8IDMwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQotIHRhci9ic2R0YXIuMSAgICAgICAgICAgICAgIHwgIDMgKy0tCi0gdGFyL2JzZHRhci5jICAgICAgICAgICAgICAgfCAxMiArKysrKysrKysrLS0KLSA0IGZpbGVzIGNoYW5nZWQsIDQyIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJhcmNoaXZlL2FyY2hpdmUuaCBiL2xpYmFyY2hpdmUvYXJjaGl2ZS5oCi1pbmRleCBmZjQwMWU5Li4zOGQ4NzQ2IDEwMDY0NAotLS0tIGEvbGliYXJjaGl2ZS9hcmNoaXZlLmgKLSsrKyBiL2xpYmFyY2hpdmUvYXJjaGl2ZS5oCi1AQCAtMTA4NSw2ICsxMDg1LDggQEAgX19MQV9ERUNMIGludAlhcmNoaXZlX21hdGNoX2V4Y2x1ZGVkKHN0cnVjdCBhcmNoaXZlICosCi0gICovCi0gX19MQV9ERUNMIGludAlhcmNoaXZlX21hdGNoX3BhdGhfZXhjbHVkZWQoc3RydWN0IGFyY2hpdmUgKiwKLSAJCSAgICBzdHJ1Y3QgYXJjaGl2ZV9lbnRyeSAqKTsKLSsvKiBDb250cm9sIHJlY3Vyc2l2ZSBpbmNsdXNpb24gb2YgZGlyZWN0b3J5IGNvbnRlbnQgd2hlbiBkaXJlY3RvcnkgaXMgaW5jbHVkZWQuIERlZmF1bHQgb24uICovCi0rX19MQV9ERUNMIGludAlhcmNoaXZlX21hdGNoX2luY2x1ZGVfZGlyZWN0b3JpZXNfcmVjdXJzaXZlbHkoc3RydWN0IGFyY2hpdmUgKiwgaW50IF9lbmFibGVkKTsKLSAvKiBBZGQgZXhjbHVzaW9uIHBhdGhuYW1lIHBhdHRlcm4uICovCi0gX19MQV9ERUNMIGludAlhcmNoaXZlX21hdGNoX2V4Y2x1ZGVfcGF0dGVybihzdHJ1Y3QgYXJjaGl2ZSAqLCBjb25zdCBjaGFyICopOwotIF9fTEFfREVDTCBpbnQJYXJjaGl2ZV9tYXRjaF9leGNsdWRlX3BhdHRlcm5fdyhzdHJ1Y3QgYXJjaGl2ZSAqLAotZGlmZiAtLWdpdCBhL2xpYmFyY2hpdmUvYXJjaGl2ZV9tYXRjaC5jIGIvbGliYXJjaGl2ZS9hcmNoaXZlX21hdGNoLmMKLWluZGV4IDA3MTljYmQuLjZkMDNhNjUgMTAwNjQ0Ci0tLS0gYS9saWJhcmNoaXZlL2FyY2hpdmVfbWF0Y2guYwotKysrIGIvbGliYXJjaGl2ZS9hcmNoaXZlX21hdGNoLmMKLUBAIC05Myw2ICs5Myw5IEBAIHN0cnVjdCBhcmNoaXZlX21hdGNoIHsKLSAJLyogZXhjbHVzaW9uL2luY2x1c2lvbiBzZXQgZmxhZy4gKi8KLSAJaW50CQkJIHNldGZsYWc7Ci0gCi0rCS8qIFJlY3Vyc2l2ZWx5IGluY2x1ZGUgZGlyZWN0b3J5IGNvbnRlbnQ/ICovCi0rCWludAkJCSByZWN1cnNpdmVfaW5jbHVkZTsKLSsKLSAJLyoKLSAJICogTWF0Y2hpbmcgZmlsZW5hbWUgcGF0dGVybnMuCi0gCSAqLwotQEAgLTIyMyw2ICsyMjYsNyBAQCBhcmNoaXZlX21hdGNoX25ldyh2b2lkKQotIAkJcmV0dXJuIChOVUxMKTsKLSAJYS0+YXJjaGl2ZS5tYWdpYyA9IEFSQ0hJVkVfTUFUQ0hfTUFHSUM7Ci0gCWEtPmFyY2hpdmUuc3RhdGUgPSBBUkNISVZFX1NUQVRFX05FVzsKLSsJYS0+cmVjdXJzaXZlX2luY2x1ZGUgPSAxOwotIAltYXRjaF9saXN0X2luaXQoJihhLT5pbmNsdXNpb25zKSk7Ci0gCW1hdGNoX2xpc3RfaW5pdCgmKGEtPmV4Y2x1c2lvbnMpKTsKLSAJX19hcmNoaXZlX3JiX3RyZWVfaW5pdCgmKGEtPmV4Y2x1c2lvbl90cmVlKSwgJnJiX29wc19tYnMpOwotQEAgLTQ3MSw2ICs0NzUsMjggQEAgYXJjaGl2ZV9tYXRjaF9wYXRoX2V4Y2x1ZGVkKHN0cnVjdCBhcmNoaXZlICpfYSwKLSB9Ci0gCi0gLyoKLSsgKiBXaGVuIHJlY3Vyc2l2ZSBpbmNsdXNpb24gb2YgZGlyZWN0b3J5IGNvbnRlbnQgaXMgZW5hYmxlZCwKLSsgKiBhbiBpbmNsdXNpb24gcGF0dGVybiB0aGF0IG1hdGNoZXMgYSBkaXJlY3Rvcnkgd2lsbCBhbHNvCi0rICogaW5jbHVkZSBldmVyeXRoaW5nIGJlbmVhdGggdGhhdCBkaXJlY3RvcnkuIEVuYWJsZWQgYnkgZGVmYXVsdC4KLSsgKgotKyAqIEZvciBjb21wYXRpYmlsaXR5IHdpdGggR05VIHRhciwgZXhjbHVzaW9uIHBhdHRlcm5zIGFsd2F5cwotKyAqIG1hdGNoIGlmIGEgc3Vic2V0IG9mIHRoZSBmdWxsIHBhdGNoIG1hdGNoZXMgKGkuZS4sIHRoZXkgYXJlCi0rICogYXJlIG5vdCByb290ZWQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgcGF0aCkgYW5kIHRodXMgdGhlcmUKLSsgKiBpcyBubyBjb3JyZXNwb25kaW5nIG5vbi1yZWN1cnNpdmUgZXhjbHVzaW9uIG1vZGUuCi0rICovCi0raW50Ci0rYXJjaGl2ZV9tYXRjaF9pbmNsdWRlX2RpcmVjdG9yaWVzX3JlY3Vyc2l2ZWx5KHN0cnVjdCBhcmNoaXZlICpfYSwgaW50IF9lbmFibGVkKQotK3sKLSsJc3RydWN0IGFyY2hpdmVfbWF0Y2ggKmE7Ci0rCi0rCWFyY2hpdmVfY2hlY2tfbWFnaWMoX2EsIEFSQ0hJVkVfTUFUQ0hfTUFHSUMsCi0rCSAgICBBUkNISVZFX1NUQVRFX05FVywgImFyY2hpdmVfbWF0Y2hfaW5jbHVkZV9kaXJlY3Rvcmllc19yZWN1cnNpdmVseSIpOwotKwlhID0gKHN0cnVjdCBhcmNoaXZlX21hdGNoICopX2E7Ci0rCWEtPnJlY3Vyc2l2ZV9pbmNsdWRlID0gX2VuYWJsZWQ7Ci0rCXJldHVybiAoQVJDSElWRV9PSyk7Ci0rfQotKwotKy8qCi0gICogVXRpbHR5IGZ1bmN0aW9ucyB0byBnZXQgc3RhdGlzdGljIGluZm9ybWF0aW9uIGZvciBpbmNsdXNpb24gcGF0dGVybnMuCi0gICovCi0gaW50Ci1AQCAtNzgxLDcgKzgwNyw5IEBAIHN0YXRpYyBpbnQKLSBtYXRjaF9wYXRoX2luY2x1c2lvbihzdHJ1Y3QgYXJjaGl2ZV9tYXRjaCAqYSwgc3RydWN0IG1hdGNoICptLAotICAgICBpbnQgbWJzLCBjb25zdCB2b2lkICpwbikKLSB7Ci0tCWludCBmbGFnID0gUEFUSE1BVENIX05PX0FOQ0hPUl9FTkQ7Ci0rCWludCBmbGFnID0gYS0+cmVjdXJzaXZlX2luY2x1ZGUgPwotKwkJUEFUSE1BVENIX05PX0FOQ0hPUl9FTkQgOiAvKiBQcmVmaXggbWF0Y2ggaXMgZ29vZCBlbm91Z2guICovCi0rCQkwOyAvKiBGdWxsIG1hdGNoIHJlcXVpcmVkLiAqLwotIAlpbnQgcjsKLSAKLSAJaWYgKG1icykgewotZGlmZiAtLWdpdCBhL3Rhci9ic2R0YXIuMSBiL3Rhci9ic2R0YXIuMQotaW5kZXggOWVhZGFhZi4uZjVkNjQ1NyAxMDA2NDQKLS0tLSBhL3Rhci9ic2R0YXIuMQotKysrIGIvdGFyL2JzZHRhci4xCi1AQCAtMzQ2LDggKzM0Niw3IEBAIEluIGV4dHJhY3Qgb3IgbGlzdCBtb2RlcywgdGhpcyBvcHRpb24gaXMgaWdub3JlZC4KLSBEbyBub3QgZXh0cmFjdCBtb2RpZmljYXRpb24gdGltZS4KLSBCeSBkZWZhdWx0LCB0aGUgbW9kaWZpY2F0aW9uIHRpbWUgaXMgc2V0IHRvIHRoZSB0aW1lIHN0b3JlZCBpbiB0aGUgYXJjaGl2ZS4KLSAuSXQgRmwgbiAsIEZsIEZsIG5vcmVjdXJzZSAsIEZsIEZsIG5vLXJlY3Vyc2lvbgotLShjLCByLCB1IG1vZGVzIG9ubHkpCi0tRG8gbm90IHJlY3Vyc2l2ZWx5IGFyY2hpdmUgdGhlIGNvbnRlbnRzIG9mIGRpcmVjdG9yaWVzLgotK0RvIG5vdCByZWN1cnNpdmVseSBhcmNoaXZlIChjLCByLCB1KSwgZXh0cmFjdCAoeCkgb3IgbGlzdCAodCkgdGhlIGNvbnRlbnRzIG9mIGRpcmVjdG9yaWVzLgotIC5JdCBGbCBGbCBuZXdlciBBciBkYXRlCi0gKGMsIHIsIHUgbW9kZXMgb25seSkKLSBPbmx5IGluY2x1ZGUgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIG5ld2VyIHRoYW4gdGhlIHNwZWNpZmllZCBkYXRlLgotZGlmZiAtLWdpdCBhL3Rhci9ic2R0YXIuYyBiL3Rhci9ic2R0YXIuYwotaW5kZXggOTNiZjYwYS4uMDAxZDVlZCAxMDA2NDQKLS0tLSBhL3Rhci9ic2R0YXIuYwotKysrIGIvdGFyL2JzZHRhci5jCi1AQCAtNzM4LDggKzczOCw2IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJCWJyZWFrOwotIAkJfQotIAl9Ci0tCWlmIChic2R0YXItPm9wdGlvbl9ub19zdWJkaXJzKQotLQkJb25seV9tb2RlKGJzZHRhciwgIi1uIiwgImNydSIpOwotIAlpZiAoYnNkdGFyLT5vcHRpb25fc3Rkb3V0KQotIAkJb25seV9tb2RlKGJzZHRhciwgIi1PIiwgInh0Iik7Ci0gCWlmIChic2R0YXItPm9wdGlvbl91bmxpbmtfZmlyc3QpCi1AQCAtNzg4LDYgKzc4NiwxNiBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJCW9ubHlfbW9kZShic2R0YXIsIGJ1ZmYsICJjcnUiKTsKLSAJfQotIAotKwkvKgotKwkgKiBXaGVuIGNyZWF0aW5nIGFuIGFyY2hpdmUgZnJvbSBhIGRpcmVjdG9yeSB0cmVlLCB0aGUgZGlyZWN0b3J5Ci0rCSAqIHdhbGtpbmcgY29kZSB3aWxsIGFscmVhZHkgYXZvaWQgZW50ZXJpbmcgZGlyZWN0b3JpZXMgd2hlbgotKwkgKiByZWN1cnNpdmUgaW5jbHVzaW9uIG9mIGRpcmVjdG9yeSBjb250ZW50IGlzIGRpc2FibGVkLCB0aGVyZWZvcmUKLSsJICogY2hhbmdpbmcgdGhlIG1hdGNoaW5nIGJlaGF2aW9yIGhhcyBubyBlZmZlY3QgZm9yIGNyZWF0aW9uIG1vZGVzLgotKwkgKiBJdCBpcyByZWxldmFudCBmb3IgZXh0cmFjdGlvbiBvciBsaXN0aW5nLgotKwkgKi8KLSsJYXJjaGl2ZV9tYXRjaF9pbmNsdWRlX2RpcmVjdG9yaWVzX3JlY3Vyc2l2ZWx5KGJzZHRhci0+bWF0Y2hpbmcsCi0rCQkJCQkJICAgICAgIWJzZHRhci0+b3B0aW9uX25vX3N1YmRpcnMpOwotKwotIAkvKiBGaWxlbmFtZSAiLSIgaW1wbGllcyBzdGRpby4gKi8KLSAJaWYgKHN0cmNtcChic2R0YXItPmZpbGVuYW1lLCAiLSIpID09IDApCi0gCQlic2R0YXItPmZpbGVuYW1lID0gTlVMTDsKLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmUvQ1ZFLTIwMTctMTQxNjYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9DVkUtMjAxNy0xNDE2Ni5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODVmZWM0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmUvQ1ZFLTIwMTctMTQxNjYucGF0Y2gKQEAgLTAsMCArMSwzNyBAQAorbGliYXJjaGl2ZS0zLjMuMjogRml4IENWRS0yMDE3LTE0MTY2CisKK1tObyB1cHN0cmVhbSB0cmFja2luZ10gLS0gaHR0cHM6Ly9naXRodWIuY29tL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9wdWxsLzkzNQorCithcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfeGFyOiBoZWFwLWJhc2VkIGJ1ZmZlciBvdmVyZmxvdyBpbiB4bWxfZGF0YQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vbGliYXJjaGl2ZS9saWJhcmNoaXZlL2NvbW1pdC9mYTc0MzhhMGZmNDAzM2U0NzQxYzgwNzM5NGE5YWY2MjA3OTQwZDcxXQorQ1ZFOiBDVkUtMjAxNy0xNDE2NgorQnVnOiA5MzUKK1NpZ25lZC1vZmYtYnk6IEFuZHJlaiBWYWxlayA8YW5kcmVqLnZhbGVrQHNpZW1lbnMuY29tPgorCitkaWZmIC0tZ2l0IGEvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfeGFyLmMgYi9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF94YXIuYworaW5kZXggN2EyMmJlYi4uOTNlZWFjYyAxMDA2NDQKKy0tLSBhL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X3hhci5jCisrKysgYi9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF94YXIuYworQEAgLTEwNDAsNiArMTA0MCw5IEBAIGF0b2wxMChjb25zdCBjaGFyICpwLCBzaXplX3QgY2hhcl9jbnQpCisgCXVpbnQ2NF90IGw7CisgCWludCBkaWdpdDsKKyAKKysJaWYgKGNoYXJfY250ID09IDApCisrCQlyZXR1cm4gKDApOworKworIAlsID0gMDsKKyAJZGlnaXQgPSAqcCAtICcwJzsKKyAJd2hpbGUgKGRpZ2l0ID49IDAgJiYgZGlnaXQgPCAxMCAgJiYgY2hhcl9jbnQtLSA+IDApIHsKK0BAIC0xMDU0LDcgKzEwNTcsMTAgQEAgYXRvbDgoY29uc3QgY2hhciAqcCwgc2l6ZV90IGNoYXJfY250KQorIHsKKyAJaW50NjRfdCBsOworIAlpbnQgZGlnaXQ7CistICAgICAgICAKKysKKysJaWYgKGNoYXJfY250ID09IDApCisrCQlyZXR1cm4gKDApOworKworIAlsID0gMDsKKyAJd2hpbGUgKGNoYXJfY250LS0gPiAwKSB7CisgCQlpZiAoKnAgPj0gJzAnICYmICpwIDw9ICc3JykKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL0NWRS0yMDE3LTE0NTAyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmUvQ1ZFLTIwMTctMTQ1MDIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzJlMTU0NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL0NWRS0yMDE3LTE0NTAyLnBhdGNoCkBAIC0wLDAgKzEsMzcgQEAKK0Zyb20gNTU2MjU0NWI1NTYyZjZkMTJhNGVmOTkxZmFlMTU4YmY0Y2NmOTJiNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEpvZXJnIFNvbm5lbmJlcmdlciA8am9lcmdAYmVjLmRlPgorRGF0ZTogU2F0LCA5IFNlcCAyMDE3IDE3OjQ3OjMyICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIEF2b2lkIGEgcmVhZCBvZmYtYnktb25lIGVycm9yIGZvciBVVEYxNiBuYW1lcyBpbiBSQVIKKyBhcmNoaXZlcy4KKworUmVwb3J0ZWQtQnk6IE9TUy1GdXp6IGlzc3VlIDU3MworCitDVkU6IENWRS0yMDE3LTE0NTAyCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogWmhpeGlvbmcgQ2hpIDx6aGl4aW9uZy5jaGlAd2luZHJpdmVyLmNvbT4KKy0tLQorIGxpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X3Jhci5jIHwgNiArKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9yYXIuYyBiL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X3Jhci5jCitpbmRleCBjYmIxNGMzLi43NTFkZTY5IDEwMDY0NAorLS0tIGEvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfcmFyLmMKKysrKyBiL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X3Jhci5jCitAQCAtMTQ5Niw3ICsxNDk2LDExIEBAIHJlYWRfaGVhZGVyKHN0cnVjdCBhcmNoaXZlX3JlYWQgKmEsIHN0cnVjdCBhcmNoaXZlX2VudHJ5ICplbnRyeSwKKyAgICAgICAgIHJldHVybiAoQVJDSElWRV9GQVRBTCk7CisgICAgICAgfQorICAgICAgIGZpbGVuYW1lW2ZpbGVuYW1lX3NpemUrK10gPSAnXDAnOworLSAgICAgIGZpbGVuYW1lW2ZpbGVuYW1lX3NpemUrK10gPSAnXDAnOworKyAgICAgIC8qCisrICAgICAgICogRG8gbm90IGluY3JlbWVudCBmaWxlbmFtZV9zaXplIGhlcmUgYXMgdGhlIGNvbXB1dGF0aW9ucyBiZWxvdworKyAgICAgICAqIGFkZCB0aGUgc3BhY2UgZm9yIHRoZSB0ZXJtaW5hdGluZyBOVUwgZXhwbGljaXRseS4KKysgICAgICAgKi8KKysgICAgICBmaWxlbmFtZVtmaWxlbmFtZV9zaXplXSA9ICdcMCc7CisgCisgICAgICAgLyogRGVjb2RlZCB1bmljb2RlIGZvcm0gaXMgVVRGLTE2QkUsIHNvIHdlIGhhdmUgdG8gdXBkYXRlIGEgc3RyaW5nCisgICAgICAgICogY29udmVyc2lvbiBvYmplY3QgZm9yIGl0LiAqLworLS0gCisxLjkuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9idWc5MjkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9idWc5MjkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmYzMjU0YwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL2J1ZzkyOS5wYXRjaApAQCAtMCwwICsxLDM4IEBACitsaWJhcmNoaXZlLTMuMy4yOiBGaXggYnVnOTI5CisKK1tObyB1cHN0cmVhbSB0cmFja2luZ10gLS0gaHR0cHM6Ly9naXRodWIuY29tL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9wdWxsLzkyOQorCithcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfY3BpbzogaGVhZGVyX25ld2MoKTogQXZvaWQgb3ZlcmZsb3cgd2hlbiByZWFkaW5nIGNvcnJ1cHQKK2NwaW8gYXJjaGl2ZQorCitBIGNwaW8gIm5ld2MiIGFyY2hpdmUgd2l0aCBhIG5hbWVsZW5ndGggb2YgIkZGRkZGRkZGIiwgaWYgcmVhZCBvbiBhCitzeXN0ZW0gd2l0aCBhIDMyLWJpdCBzaXplX3QsIHdvdWxkIHJlc3VsdCBpbiBuYW1lbGVuZ3RoICsgbmFtZV9wYWQKK292ZXJmbG93aW5nIDMyIGJpdHMgYW5kIGxpYmFyY2hpdmUgYXR0ZW1wdGluZyB0byBjb3B5IDJeMzItMSBieXRlcworZnJvbSBhIDItYnl0ZSBidWZmZXIsIHdpdGggYXBwcm9wcmlhdGVseSBoaWxhcmlvdXMgcmVzdWx0cy4KKworQ2hlY2sgZm9yIHRoaXMgb3ZlcmZsb3cgYW5kIGZhaWw7IHRoZXJlJ3Mgbm8gbGVnaXRpbWF0ZSByZWFzb24gZm9yIGEKK2NwaW8gYXJjaGl2ZSB0byBjb250YWluIGEgZmlsZSB3aXRoIGEgbmFtZSBvdmVyIDQgYmlsbGlvbiBjaGFyYWN0ZXJzCitpbiBsZW5ndGguCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9saWJhcmNoaXZlL2xpYmFyY2hpdmUvY29tbWl0L2JhYzQ2NTllMGI5NzA5OTBlN2UzZjNhM2QyMzkyOTRlOTYzMTE2MzBdCitCdWc6IDkyOQorU2lnbmVkLW9mZi1ieTogQW5kcmVqIFZhbGVrIDxhbmRyZWoudmFsZWtAc2llbWVucy5jb20+CisKK2RpZmYgLS1naXQgYS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9jcGlvLmMgYi9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9jcGlvLmMKK2luZGV4IGFkOWY3ODIuLjFmYWE2NGQgMTAwNjQ0CistLS0gYS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9jcGlvLmMKKysrKyBiL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X2NwaW8uYworQEAgLTYzMyw2ICs2MzMsMTMgQEAgaGVhZGVyX25ld2Moc3RydWN0IGFyY2hpdmVfcmVhZCAqYSwgc3RydWN0IGNwaW8gKmNwaW8sCisgCS8qIFBhZCBuYW1lIHRvIDIgbW9yZSB0aGFuIGEgbXVsdGlwbGUgb2YgNC4gKi8KKyAJKm5hbWVfcGFkID0gKDIgLSAqbmFtZWxlbmd0aCkgJiAzOworIAorKwkvKiBNYWtlIHN1cmUgdGhhdCB0aGUgcGFkZGVkIG5hbWUgbGVuZ3RoIGZpdHMgaW50byBzaXplX3QuICovCisrCWlmICgoc2l6ZV90KSgqbmFtZWxlbmd0aCArICpuYW1lX3BhZCkgPCAqbmFtZWxlbmd0aCkgeworKwkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsIEFSQ0hJVkVfRVJSTk9fRklMRV9GT1JNQVQsCisrCQkgICAgImNwaW8gYXJjaGl2ZSBoYXMgaW52YWxpZCBuYW1lbGVuZ3RoIik7CisrCQlyZXR1cm4gKEFSQ0hJVkVfRkFUQUwpOworKwl9CisrCisgCS8qCisgCSAqIE5vdGU6IGVudHJ5X2J5dGVzX3JlbWFpbmluZyBpcyBhdCBsZWFzdCA2NCBiaXRzIGFuZAorIAkgKiB0aGVyZWZvcmUgZ3VhcmFudGVlZCB0byBiZSBiaWcgZW5vdWdoIGZvciBhIDMzLWJpdCBmaWxlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9ub24tcmVjdXJzaXZlLWV4dHJhY3QtYW5kLWxpc3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9ub24tcmVjdXJzaXZlLWV4dHJhY3QtYW5kLWxpc3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Q3YmU1MQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL25vbi1yZWN1cnNpdmUtZXh0cmFjdC1hbmQtbGlzdC5wYXRjaApAQCAtMCwwICsxLDE1MyBAQAorRnJvbSA0N2Y3NTY2ZjY4MjljMmIxNGUyMWJiYmJhNjk5OTE2ZGU0OTk4YzcyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGF0cmljayBPaGx5IDxwYXRyaWNrLm9obHlAaW50ZWwuY29tPgorRGF0ZTogTW9uLCAyNCBPY3QgMjAxNiAxMjo1NDo0OCArMDIwMAorU3ViamVjdDogW1BBVENIIDEvMV0gbm9uLXJlY3Vyc2l2ZSBleHRyYWN0IGFuZCBsaXN0CisKK1NvbWV0aW1lcyBpdCBtYWtlcyBzZW5zZSB0byBleHRyYWN0IG9yIGxpc3QgYSBkaXJlY3RvcnkgY29udGFpbmVkIGluCithbiBhcmNoaXZlIHdpdGhvdXQgYWxzbyBkb2luZyB0aGUgc2FtZSBmb3IgdGhlIGNvbnRlbnQgb2YgdGhlCitkaXJlY3RvcnksIGkuZS4gYWxsb3dpbmcgLW4gKD0gLS1uby1yZWN1cnNpb24pIGluIGNvbWJpbmF0aW9uIHdpdGggdGhlCit4IGFuZCB0IG1vZGVzLgorCitic2R0YXIgdXNlcyB0aGUgbWF0Y2ggZnVuY3Rpb25hbGl0eSBpbiBsaWJhcmNoaXZlIHRvIHRyYWNrIGluY2x1ZGUKK21hdGNoZXMuIEEgbmV3IGxpYmFyY2hpdmUgQVBJIGNhbGwKK2FyY2hpdmVfbWF0Y2hfaW5jbHVkZV9kaXJlY3Rvcmllc19yZWN1cnNpdmVseSgpIGdldHMgaW50cm9kdWNlZCB0bworaW5mbHVlbmNlIHRoZSBtYXRjaGluZyBiZWhhdmlvciwgd2l0aCB0aGUgZGVmYXVsdCBiZWhhdmlvciBhcyBiZWZvcmUuCisKK05vbi1yZWN1cnNpdmUgbWF0Y2hpbmcgY2FuIGJlIGFjaGlldmVkIGJ5IGFuY2hvcmluZyB0aGUgcGF0aCBtYXRjaCBhdAorYm90aCBzdGFydCBhbmQgZW5kLiBBc2tpbmcgZm9yIGEgZGlyZWN0b3J5IHdoaWNoIGl0c2VsZiBpc24ndCBpbiB0aGUKK2FyY2hpdmUgd2hlbiBpbiBub24tcmVjdXJzaXZlIG1vZGUgaXMgYW4gZXJyb3IgYW5kIGhhbmRsZWQgYnkgdGhlCitleGlzdGluZyBtZWNoYW5pc20gZm9yIHRyYWNraW5nIHVudXNlZCBpbmNsdXNpb24gZW50cmllcy4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9saWJhcmNoaXZlL2xpYmFyY2hpdmUvcHVsbC84MTJdCisKK1NpZ25lZC1vZmYtYnk6IFBhdHJpY2sgT2hseSA8cGF0cmljay5vaGx5QGludGVsLmNvbT4KKworLS0tCisgbGliYXJjaGl2ZS9hcmNoaXZlLmggICAgICAgfCAgMiArKworIGxpYmFyY2hpdmUvYXJjaGl2ZV9tYXRjaC5jIHwgMzAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCisgdGFyL2JzZHRhci4xICAgICAgICAgICAgICAgfCAgMyArLS0KKyB0YXIvYnNkdGFyLmMgICAgICAgICAgICAgICB8IDEyICsrKysrKysrKystLQorIDQgZmlsZXMgY2hhbmdlZCwgNDIgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYmFyY2hpdmUvYXJjaGl2ZS5oIGIvbGliYXJjaGl2ZS9hcmNoaXZlLmgKK2luZGV4IDMyNzEwMjAxLi41OWZiNGFhNiAxMDA2NDQKKy0tLSBhL2xpYmFyY2hpdmUvYXJjaGl2ZS5oCisrKysgYi9saWJhcmNoaXZlL2FyY2hpdmUuaAorQEAgLTEwOTMsNiArMTA5Myw4IEBAIF9fTEFfREVDTCBpbnQJYXJjaGl2ZV9tYXRjaF9leGNsdWRlZChzdHJ1Y3QgYXJjaGl2ZSAqLAorICAqLworIF9fTEFfREVDTCBpbnQJYXJjaGl2ZV9tYXRjaF9wYXRoX2V4Y2x1ZGVkKHN0cnVjdCBhcmNoaXZlICosCisgCQkgICAgc3RydWN0IGFyY2hpdmVfZW50cnkgKik7CisrLyogQ29udHJvbCByZWN1cnNpdmUgaW5jbHVzaW9uIG9mIGRpcmVjdG9yeSBjb250ZW50IHdoZW4gZGlyZWN0b3J5IGlzIGluY2x1ZGVkLiBEZWZhdWx0IG9uLiAqLworK19fTEFfREVDTCBpbnQJYXJjaGl2ZV9tYXRjaF9pbmNsdWRlX2RpcmVjdG9yaWVzX3JlY3Vyc2l2ZWx5KHN0cnVjdCBhcmNoaXZlICosIGludCBfZW5hYmxlZCk7CisgLyogQWRkIGV4Y2x1c2lvbiBwYXRobmFtZSBwYXR0ZXJuLiAqLworIF9fTEFfREVDTCBpbnQJYXJjaGl2ZV9tYXRjaF9leGNsdWRlX3BhdHRlcm4oc3RydWN0IGFyY2hpdmUgKiwgY29uc3QgY2hhciAqKTsKKyBfX0xBX0RFQ0wgaW50CWFyY2hpdmVfbWF0Y2hfZXhjbHVkZV9wYXR0ZXJuX3coc3RydWN0IGFyY2hpdmUgKiwKK2RpZmYgLS1naXQgYS9saWJhcmNoaXZlL2FyY2hpdmVfbWF0Y2guYyBiL2xpYmFyY2hpdmUvYXJjaGl2ZV9tYXRjaC5jCitpbmRleCBiZTcyMDY2ZS4uYmI2YTM0MDcgMTAwNjQ0CistLS0gYS9saWJhcmNoaXZlL2FyY2hpdmVfbWF0Y2guYworKysrIGIvbGliYXJjaGl2ZS9hcmNoaXZlX21hdGNoLmMKK0BAIC05Myw2ICs5Myw5IEBAIHN0cnVjdCBhcmNoaXZlX21hdGNoIHsKKyAJLyogZXhjbHVzaW9uL2luY2x1c2lvbiBzZXQgZmxhZy4gKi8KKyAJaW50CQkJIHNldGZsYWc7CisgCisrCS8qIFJlY3Vyc2l2ZWx5IGluY2x1ZGUgZGlyZWN0b3J5IGNvbnRlbnQ/ICovCisrCWludAkJCSByZWN1cnNpdmVfaW5jbHVkZTsKKysKKyAJLyoKKyAJICogTWF0Y2hpbmcgZmlsZW5hbWUgcGF0dGVybnMuCisgCSAqLworQEAgLTIyMyw2ICsyMjYsNyBAQCBhcmNoaXZlX21hdGNoX25ldyh2b2lkKQorIAkJcmV0dXJuIChOVUxMKTsKKyAJYS0+YXJjaGl2ZS5tYWdpYyA9IEFSQ0hJVkVfTUFUQ0hfTUFHSUM7CisgCWEtPmFyY2hpdmUuc3RhdGUgPSBBUkNISVZFX1NUQVRFX05FVzsKKysJYS0+cmVjdXJzaXZlX2luY2x1ZGUgPSAxOworIAltYXRjaF9saXN0X2luaXQoJihhLT5pbmNsdXNpb25zKSk7CisgCW1hdGNoX2xpc3RfaW5pdCgmKGEtPmV4Y2x1c2lvbnMpKTsKKyAJX19hcmNoaXZlX3JiX3RyZWVfaW5pdCgmKGEtPmV4Y2x1c2lvbl90cmVlKSwgJnJiX29wc19tYnMpOworQEAgLTQ3MSw2ICs0NzUsMjggQEAgYXJjaGl2ZV9tYXRjaF9wYXRoX2V4Y2x1ZGVkKHN0cnVjdCBhcmNoaXZlICpfYSwKKyB9CisgCisgLyoKKysgKiBXaGVuIHJlY3Vyc2l2ZSBpbmNsdXNpb24gb2YgZGlyZWN0b3J5IGNvbnRlbnQgaXMgZW5hYmxlZCwKKysgKiBhbiBpbmNsdXNpb24gcGF0dGVybiB0aGF0IG1hdGNoZXMgYSBkaXJlY3Rvcnkgd2lsbCBhbHNvCisrICogaW5jbHVkZSBldmVyeXRoaW5nIGJlbmVhdGggdGhhdCBkaXJlY3RvcnkuIEVuYWJsZWQgYnkgZGVmYXVsdC4KKysgKgorKyAqIEZvciBjb21wYXRpYmlsaXR5IHdpdGggR05VIHRhciwgZXhjbHVzaW9uIHBhdHRlcm5zIGFsd2F5cworKyAqIG1hdGNoIGlmIGEgc3Vic2V0IG9mIHRoZSBmdWxsIHBhdGNoIG1hdGNoZXMgKGkuZS4sIHRoZXkgYXJlCisrICogYXJlIG5vdCByb290ZWQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgcGF0aCkgYW5kIHRodXMgdGhlcmUKKysgKiBpcyBubyBjb3JyZXNwb25kaW5nIG5vbi1yZWN1cnNpdmUgZXhjbHVzaW9uIG1vZGUuCisrICovCisraW50CisrYXJjaGl2ZV9tYXRjaF9pbmNsdWRlX2RpcmVjdG9yaWVzX3JlY3Vyc2l2ZWx5KHN0cnVjdCBhcmNoaXZlICpfYSwgaW50IF9lbmFibGVkKQorK3sKKysJc3RydWN0IGFyY2hpdmVfbWF0Y2ggKmE7CisrCisrCWFyY2hpdmVfY2hlY2tfbWFnaWMoX2EsIEFSQ0hJVkVfTUFUQ0hfTUFHSUMsCisrCSAgICBBUkNISVZFX1NUQVRFX05FVywgImFyY2hpdmVfbWF0Y2hfaW5jbHVkZV9kaXJlY3Rvcmllc19yZWN1cnNpdmVseSIpOworKwlhID0gKHN0cnVjdCBhcmNoaXZlX21hdGNoICopX2E7CisrCWEtPnJlY3Vyc2l2ZV9pbmNsdWRlID0gX2VuYWJsZWQ7CisrCXJldHVybiAoQVJDSElWRV9PSyk7CisrfQorKworKy8qCisgICogVXRpbGl0eSBmdW5jdGlvbnMgdG8gZ2V0IHN0YXRpc3RpYyBpbmZvcm1hdGlvbiBmb3IgaW5jbHVzaW9uIHBhdHRlcm5zLgorICAqLworIGludAorQEAgLTc4MSw3ICs4MDcsOSBAQCBzdGF0aWMgaW50CisgbWF0Y2hfcGF0aF9pbmNsdXNpb24oc3RydWN0IGFyY2hpdmVfbWF0Y2ggKmEsIHN0cnVjdCBtYXRjaCAqbSwKKyAgICAgaW50IG1icywgY29uc3Qgdm9pZCAqcG4pCisgeworLQlpbnQgZmxhZyA9IFBBVEhNQVRDSF9OT19BTkNIT1JfRU5EOworKwlpbnQgZmxhZyA9IGEtPnJlY3Vyc2l2ZV9pbmNsdWRlID8KKysJCVBBVEhNQVRDSF9OT19BTkNIT1JfRU5EIDogLyogUHJlZml4IG1hdGNoIGlzIGdvb2QgZW5vdWdoLiAqLworKwkJMDsgLyogRnVsbCBtYXRjaCByZXF1aXJlZC4gKi8KKyAJaW50IHI7CisgCisgCWlmIChtYnMpIHsKK2RpZmYgLS1naXQgYS90YXIvYnNkdGFyLjEgYi90YXIvYnNkdGFyLjEKK2luZGV4IDEzMmUxMTQ1Li4xZGQyYTg0NyAxMDA2NDQKKy0tLSBhL3Rhci9ic2R0YXIuMQorKysrIGIvdGFyL2JzZHRhci4xCitAQCAtMzg2LDggKzM4Niw3IEBAIGFuZCB0aGUgZGVmYXVsdCBiZWhhdmlvciBpbiBjLCByLCBhbmQgdSBtb2RlcyBvciBpZgorIC5ObQorIGlzIHJ1biBpbiB4IG1vZGUgYXMgcm9vdC4KKyAuSXQgRmwgbiAsIEZsIEZsIG5vcmVjdXJzZSAsIEZsIEZsIG5vLXJlY3Vyc2lvbgorLShjLCByLCB1IG1vZGVzIG9ubHkpCistRG8gbm90IHJlY3Vyc2l2ZWx5IGFyY2hpdmUgdGhlIGNvbnRlbnRzIG9mIGRpcmVjdG9yaWVzLgorK0RvIG5vdCByZWN1cnNpdmVseSBhcmNoaXZlIChjLCByLCB1KSwgZXh0cmFjdCAoeCkgb3IgbGlzdCAodCkgdGhlIGNvbnRlbnRzIG9mIGRpcmVjdG9yaWVzLgorIC5JdCBGbCBGbCBuZXdlciBBciBkYXRlCisgKGMsIHIsIHUgbW9kZXMgb25seSkKKyBPbmx5IGluY2x1ZGUgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIG5ld2VyIHRoYW4gdGhlIHNwZWNpZmllZCBkYXRlLgorZGlmZiAtLWdpdCBhL3Rhci9ic2R0YXIuYyBiL3Rhci9ic2R0YXIuYworaW5kZXggMTFkZWRiZjkuLmQwMTRjYzNlIDEwMDY0NAorLS0tIGEvdGFyL2JzZHRhci5jCisrKysgYi90YXIvYnNkdGFyLmMKK0BAIC03OTQsOCArNzk0LDYgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCQkJYnJlYWs7CisgCQl9CisgCX0KKy0JaWYgKGJzZHRhci0+ZmxhZ3MgJiBPUFRGTEFHX05PX1NVQkRJUlMpCistCQlvbmx5X21vZGUoYnNkdGFyLCAiLW4iLCAiY3J1Iik7CisgCWlmIChic2R0YXItPmZsYWdzICYgT1BURkxBR19TVERPVVQpCisgCQlvbmx5X21vZGUoYnNkdGFyLCAiLU8iLCAieHQiKTsKKyAJaWYgKGJzZHRhci0+ZmxhZ3MgJiBPUFRGTEFHX1VOTElOS19GSVJTVCkKK0BAIC04NDUsNiArODQzLDE2IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAkJb25seV9tb2RlKGJzZHRhciwgYnVmZiwgImNydSIpOworIAl9CisgCisrCS8qCisrCSAqIFdoZW4gY3JlYXRpbmcgYW4gYXJjaGl2ZSBmcm9tIGEgZGlyZWN0b3J5IHRyZWUsIHRoZSBkaXJlY3RvcnkKKysJICogd2Fsa2luZyBjb2RlIHdpbGwgYWxyZWFkeSBhdm9pZCBlbnRlcmluZyBkaXJlY3RvcmllcyB3aGVuCisrCSAqIHJlY3Vyc2l2ZSBpbmNsdXNpb24gb2YgZGlyZWN0b3J5IGNvbnRlbnQgaXMgZGlzYWJsZWQsIHRoZXJlZm9yZQorKwkgKiBjaGFuZ2luZyB0aGUgbWF0Y2hpbmcgYmVoYXZpb3IgaGFzIG5vIGVmZmVjdCBmb3IgY3JlYXRpb24gbW9kZXMuCisrCSAqIEl0IGlzIHJlbGV2YW50IGZvciBleHRyYWN0aW9uIG9yIGxpc3RpbmcuCisrCSAqLworKwlhcmNoaXZlX21hdGNoX2luY2x1ZGVfZGlyZWN0b3JpZXNfcmVjdXJzaXZlbHkoYnNkdGFyLT5tYXRjaGluZywKKysJCQkJCQkgICAgICAhKGJzZHRhci0+ZmxhZ3MgJiBPUFRGTEFHX05PX1NVQkRJUlMpKTsKKysKKyAJLyogRmlsZW5hbWUgIi0iIGltcGxpZXMgc3RkaW8uICovCisgCWlmIChzdHJjbXAoYnNkdGFyLT5maWxlbmFtZSwgIi0iKSA9PSAwKQorIAkJYnNkdGFyLT5maWxlbmFtZSA9IE5VTEw7CistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZV8zLjIuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlXzMuMi4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTk1OWEyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlXzMuMi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotU1VNTUFSWSA9ICJTdXBwb3J0IGZvciByZWFkaW5nIHZhcmlvdXMgYXJjaGl2ZSBmb3JtYXRzIgotREVTQ1JJUFRJT04gPSAiQyBsaWJyYXJ5IGFuZCBjb21tYW5kLWxpbmUgdG9vbHMgZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcgdGFyLCBjcGlvLCB6aXAsIElTTywgYW5kIG90aGVyIGFyY2hpdmUgZm9ybWF0cyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubGliYXJjaGl2ZS5vcmcvIgotU0VDVElPTiA9ICJkZXZlbCIKLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWQ5OWFjYTAwNmJjMzQ2OTc0YmI3NDVhMzUzMzY0MjUiCi0KLURFUEVORFMgPSAiZTJmc3Byb2dzLW5hdGl2ZSIKLQotUEFDS0FHRUNPTkZJRyA/PSAiemxpYiBiejIiCi0KLVBBQ0tBR0VDT05GSUdfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICJcCi0JbGlieG1sMiBcCi0JJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWNsIHhhdHRyJywgZCl9IFwKLSIKLQotREVQRU5EU19CWklQMiA9ICJiemlwMi1yZXBsYWNlbWVudC1uYXRpdmUiCi1ERVBFTkRTX0JaSVAyX2NsYXNzLXRhcmdldCA9ICJiemlwMiIKLQotUEFDS0FHRUNPTkZJR1thY2xdID0gIi0tZW5hYmxlLWFjbCwtLWRpc2FibGUtYWNsLGFjbCwiCi1QQUNLQUdFQ09ORklHW3hhdHRyXSA9ICItLWVuYWJsZS14YXR0ciwtLWRpc2FibGUteGF0dHIsYXR0ciwiCi1QQUNLQUdFQ09ORklHW3psaWJdID0gIi0td2l0aC16bGliLC0td2l0aG91dC16bGliLHpsaWIsIgotUEFDS0FHRUNPTkZJR1tiejJdID0gIi0td2l0aC1iejJsaWIsLS13aXRob3V0LWJ6MmxpYiwke0RFUEVORFNfQlpJUDJ9LCIKLVBBQ0tBR0VDT05GSUdbeHpdID0gIi0td2l0aC1sem1hZGVjIC0td2l0aC1sem1hLC0td2l0aG91dC1sem1hZGVjIC0td2l0aG91dC1sem1hLHh6LCIKLVBBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS13aXRoLW9wZW5zc2wsLS13aXRob3V0LW9wZW5zc2wsb3BlbnNzbCwiCi1QQUNLQUdFQ09ORklHW2xpYnhtbDJdID0gIi0td2l0aC14bWwyLC0td2l0aG91dC14bWwyLGxpYnhtbDIsIgotUEFDS0FHRUNPTkZJR1tleHBhdF0gPSAiLS13aXRoLWV4cGF0LC0td2l0aG91dC1leHBhdCxleHBhdCwiCi1QQUNLQUdFQ09ORklHW2x6b10gPSAiLS13aXRoLWx6bzIsLS13aXRob3V0LWx6bzIsbHpvLCIKLVBBQ0tBR0VDT05GSUdbbmV0dGxlXSA9ICItLXdpdGgtbmV0dGxlLC0td2l0aG91dC1uZXR0bGUsbmV0dGxlLCIKLVBBQ0tBR0VDT05GSUdbbHo0XSA9ICItLXdpdGgtbHo0LC0td2l0aG91dC1sejQsbHo0LCIKLQotRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1sYXJnZWZpbGUiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2xpYmFyY2hpdmUub3JnL2Rvd25sb2Fkcy9saWJhcmNoaXZlLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9ub24tcmVjdXJzaXZlLWV4dHJhY3QtYW5kLWxpc3QucGF0Y2ggXAotCSAgIGZpbGU6Ly8wMDAxLWFyY2hpdmVfd3JpdGVfZGlza19wb3NpeC5jLW1ha2UtX2Zzb2JqLWZ1bmN0aW9ucy1tb3IucGF0Y2ggXAotCSAgIGZpbGU6Ly8wMDAyLUZpeC1leHRyYWN0aW5nLWhhcmRsaW5rcy1vdmVyLXN5bWxpbmtzLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMWVjMDBiN2RjYWY5NjlkZDJhNTcxMmY4NWYyM2M3NjQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjkxYzE5NGVlMTMyZDFmMGY3YTQyNTQxZjA5MWRiODExYmMyZTU2ZjcxMDdlOTEyMWJlMmJjOGMwNGYxMDYwZiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLWFsdGVybmF0aXZlcyBwa2djb25maWcKLQotQ1BQRkxBR1MgKz0gIi1JJHtXT1JLRElSfS9leHRyYS1pbmNsdWRlcyIKLQotZG9fY29uZmlndXJlW2NsZWFuZGlyc10gKz0gIiR7V09SS0RJUn0vZXh0cmEtaW5jbHVkZXMiCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLQkjIFdlIGp1c3QgbmVlZCB0aGUgaGVhZGVycyBmb3Igc29tZSB0eXBlIGNvbnN0YW50cywgc28gbm8gbmVlZCB0bwotCSMgYnVpbGQgYWxsIG9mIGUyZnNwcm9ncyBmb3IgdGhlIHRhcmdldAotCWNwIC1SICR7U1RBR0lOR19JTkNESVJfTkFUSVZFfS9leHQyZnMgJHtXT1JLRElSfS9leHRyYS1pbmNsdWRlcy8KLX0KLQotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiODAiCi0KLVBBQ0tBR0VTID0rICJic2R0YXIiCi1GSUxFU19ic2R0YXIgPSAiJHtiaW5kaXJ9L2JzZHRhciIKLQotQUxURVJOQVRJVkVfYnNkdGFyID0gInRhciIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVt0YXJdID0gIiR7YmFzZV9iaW5kaXJ9L3RhciIKLUFMVEVSTkFUSVZFX1RBUkdFVFt0YXJdID0gIiR7YmluZGlyfS9ic2R0YXIiCi0KLVBBQ0tBR0VTID0rICJic2RjcGlvIgotRklMRVNfYnNkY3BpbyA9ICIke2JpbmRpcn0vYnNkY3BpbyIKLQotQUxURVJOQVRJVkVfYnNkY3BpbyA9ICJjcGlvIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2NwaW9dID0gIiR7YmFzZV9iaW5kaXJ9L2NwaW8iCi1BTFRFUk5BVElWRV9UQVJHRVRbY3Bpb10gPSAiJHtiaW5kaXJ9L2JzZGNwaW8iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlXzMuMy4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmVfMy4zLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWRhY2EyNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlXzMuMy4yLmJiCkBAIC0wLDAgKzEsNzEgQEAKK1NVTU1BUlkgPSAiU3VwcG9ydCBmb3IgcmVhZGluZyB2YXJpb3VzIGFyY2hpdmUgZm9ybWF0cyIKK0RFU0NSSVBUSU9OID0gIkMgbGlicmFyeSBhbmQgY29tbWFuZC1saW5lIHRvb2xzIGZvciByZWFkaW5nIGFuZCB3cml0aW5nIHRhciwgY3BpbywgemlwLCBJU08sIGFuZCBvdGhlciBhcmNoaXZlIGZvcm1hdHMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmxpYmFyY2hpdmUub3JnLyIKK1NFQ1RJT04gPSAiZGV2ZWwiCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWVkOTlhY2EwMDZiYzM0Njk3NGJiNzQ1YTM1MzM2NDI1IgorCitERVBFTkRTID0gImUyZnNwcm9ncy1uYXRpdmUiCisKK1BBQ0tBR0VDT05GSUcgPz0gInpsaWIgYnoyIHh6IGx6byIKKworUEFDS0FHRUNPTkZJR19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIlwKKwlsaWJ4bWwyIFwKKwkke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdhY2wgeGF0dHInLCBkKX0gXAorIgorCitERVBFTkRTX0JaSVAyID0gImJ6aXAyLXJlcGxhY2VtZW50LW5hdGl2ZSIKK0RFUEVORFNfQlpJUDJfY2xhc3MtdGFyZ2V0ID0gImJ6aXAyIgorCitQQUNLQUdFQ09ORklHW2FjbF0gPSAiLS1lbmFibGUtYWNsLC0tZGlzYWJsZS1hY2wsYWNsLCIKK1BBQ0tBR0VDT05GSUdbeGF0dHJdID0gIi0tZW5hYmxlLXhhdHRyLC0tZGlzYWJsZS14YXR0cixhdHRyLCIKK1BBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS13aXRoLXpsaWIsLS13aXRob3V0LXpsaWIsemxpYiwiCitQQUNLQUdFQ09ORklHW2J6Ml0gPSAiLS13aXRoLWJ6MmxpYiwtLXdpdGhvdXQtYnoybGliLCR7REVQRU5EU19CWklQMn0sIgorUEFDS0FHRUNPTkZJR1t4el0gPSAiLS13aXRoLWx6bWEsLS13aXRob3V0LWx6bWEseHosIgorUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLXdpdGgtb3BlbnNzbCwtLXdpdGhvdXQtb3BlbnNzbCxvcGVuc3NsLCIKK1BBQ0tBR0VDT05GSUdbbGlieG1sMl0gPSAiLS13aXRoLXhtbDIsLS13aXRob3V0LXhtbDIsbGlieG1sMiwiCitQQUNLQUdFQ09ORklHW2V4cGF0XSA9ICItLXdpdGgtZXhwYXQsLS13aXRob3V0LWV4cGF0LGV4cGF0LCIKK1BBQ0tBR0VDT05GSUdbbHpvXSA9ICItLXdpdGgtbHpvMiwtLXdpdGhvdXQtbHpvMixsem8sIgorUEFDS0FHRUNPTkZJR1tuZXR0bGVdID0gIi0td2l0aC1uZXR0bGUsLS13aXRob3V0LW5ldHRsZSxuZXR0bGUsIgorUEFDS0FHRUNPTkZJR1tsejRdID0gIi0td2l0aC1sejQsLS13aXRob3V0LWx6NCxsejQsIgorCitFWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLWxhcmdlZmlsZSIKKworU1JDX1VSSSA9ICJodHRwOi8vbGliYXJjaGl2ZS5vcmcvZG93bmxvYWRzL2xpYmFyY2hpdmUtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2J1ZzkyOS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDE2Ni5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDUwMi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ub24tcmVjdXJzaXZlLWV4dHJhY3QtYW5kLWxpc3QucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjQ1ODNiZDZiMmViZjdlMGU4OTYzZDkwODc5ZWIxYjI3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImVkMmRiZDY5NTQ3OTJiMmMwNTRjY2Y4ZWM0YjMzMGE1NGI4NTkwNGE4MGNlZjQ3N2ExYzc0NjQzZGRhZmEwY2UiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgcGtnY29uZmlnCisKK0NQUEZMQUdTICs9ICItSSR7V09SS0RJUn0vZXh0cmEtaW5jbHVkZXMiCisKK2RvX2NvbmZpZ3VyZVtjbGVhbmRpcnNdICs9ICIke1dPUktESVJ9L2V4dHJhLWluY2x1ZGVzIgorZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisJIyBXZSBqdXN0IG5lZWQgdGhlIGhlYWRlcnMgZm9yIHNvbWUgdHlwZSBjb25zdGFudHMsIHNvIG5vIG5lZWQgdG8KKwkjIGJ1aWxkIGFsbCBvZiBlMmZzcHJvZ3MgZm9yIHRoZSB0YXJnZXQKKwljcCAtUiAke1NUQUdJTkdfSU5DRElSX05BVElWRX0vZXh0MmZzICR7V09SS0RJUn0vZXh0cmEtaW5jbHVkZXMvCit9CisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjgwIgorCitQQUNLQUdFUyA9KyAiYnNkdGFyIgorRklMRVNfYnNkdGFyID0gIiR7YmluZGlyfS9ic2R0YXIiCisKK0FMVEVSTkFUSVZFX2JzZHRhciA9ICJ0YXIiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbdGFyXSA9ICIke2Jhc2VfYmluZGlyfS90YXIiCitBTFRFUk5BVElWRV9UQVJHRVRbdGFyXSA9ICIke2JpbmRpcn0vYnNkdGFyIgorCitQQUNLQUdFUyA9KyAiYnNkY3BpbyIKK0ZJTEVTX2JzZGNwaW8gPSAiJHtiaW5kaXJ9L2JzZGNwaW8iCisKK0FMVEVSTkFUSVZFX2JzZGNwaW8gPSAiY3BpbyIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtjcGlvXSA9ICIke2Jhc2VfYmluZGlyfS9jcGlvIgorQUxURVJOQVRJVkVfVEFSR0VUW2NwaW9dID0gIiR7YmluZGlyfS9ic2RjcGlvIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4vMDAwMS1pZG4tZml4LXByaW50Zi1mb3JtYXQtc2VjdXJpdHktd2FybmluZ3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4vMDAwMS1pZG4tZml4LXByaW50Zi1mb3JtYXQtc2VjdXJpdHktd2FybmluZ3MucGF0Y2gKaW5kZXggNWFkYzdkOS4uMmQ1ZmFhYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuLzAwMDEtaWRuLWZpeC1wcmludGYtZm9ybWF0LXNlY3VyaXR5LXdhcm5pbmdzLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi8wMDAxLWlkbi1maXgtcHJpbnRmLWZvcm1hdC1zZWN1cml0eS13YXJuaW5ncy5wYXRjaApAQCAtMSwxODEgKzEsNjk0IEBACi1Gcm9tIDgyZjk4ZGNiYzQyOWJiZTg5YTk4MzdjNTMzY2JjYmMwMmU3N2M3OTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/QW5kcj1DMz1BOT0yMERyYXN6aWs/PSA8YWRyYXN6aWtAdHljb2ludC5jb20+Ci1EYXRlOiBUdWUsIDI4IEp1biAyMDE2IDEyOjQzOjMxICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGlkbjogZml4IHByaW50ZigpIGZvcm1hdCBzZWN1cml0eSB3YXJuaW5ncwotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorRnJvbSA3MTQ4YWRmMzRkYWUzMDM0NWMyZTRkOWQ0Mzc4MzhhNDViYTZmNmU4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT91dGY4P3E/VGltPTIwUj1DMz1CQ2hzZW4/PSA8dGltLnJ1ZWhzZW5AZ214LmRlPgorRGF0ZTogV2VkLCAxIEZlYiAyMDE3IDExOjA2OjM5ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCAtV2Zvcm1hdCB3YXJuaW5ncwogCi18IC4uLy4uL2xpYmlkbi0xLjMyL3NyYy9pZG4uYzogSW4gZnVuY3Rpb24gJ21haW4nOgotfCAuLi8uLi9saWJpZG4tMS4zMi9zcmMvaWRuLmM6MTcyOjc6IGVycm9yOiBmb3JtYXQgbm90IGEgc3RyaW5nIGxpdGVyYWwgYW5kIG5vIGZvcm1hdCBhcmd1bWVudHMgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQotfCAgICAgICAgZXJyb3IgKDAsIDAsIF8oIm9ubHkgb25lIG9mIC1zLCAtZSwgLWQsIC1hLCAtdSBvciAtbiBjYW4gYmUgc3BlY2lmaWVkIikpOwotfCAgICAgICAgXn5+fn4KLXwgLi4vLi4vbGliaWRuLTEuMzIvc3JjL2lkbi5jOjE4Nzo1OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KLXwgICAgICBmcHJpbnRmIChzdGRlcnIsIF8oIlR5cGUgZWFjaCBpbnB1dCBzdHJpbmcgb24gYSBsaW5lIGJ5IGl0c2VsZiwgIgotfCAgICAgIF5+fn5+fn4KLXwgLi4vLi4vbGliaWRuLTEuMzIvc3JjL2lkbi5jOjIwMjo0OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KLXwgICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIGVycm5vLCBfKCJpbnB1dCBlcnJvciIpKTsKLXwgICAgIF5+fn5+Ci18IC4uLy4uL2xpYmlkbi0xLjMyL3NyYy9pZG4uYzoyMjA6ODogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCi18ICAgICAgICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVVEYtOCB0byBVQ1MtNCIpKTsKLXwgICAgICAgICBeCi18IC4uLy4uL2xpYmlkbi0xLjMyL3NyYy9pZG4uYzoyNDU6ODogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCi18ICAgICAgICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVVEYtOCB0byBVQ1MtNCIpKTsKLXwgICAgICAgICBeCi18IC4uLy4uL2xpYmlkbi0xLjMyL3NyYy9pZG4uYzoyODE6NjogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCi18ICAgICAgIF8oImNvdWxkIG5vdCBjb252ZXJ0IGZyb20gVVRGLTggdG8gVUNTLTQiKSk7Ci18ICAgICAgIF4KLXwgLi4vLi4vbGliaWRuLTEuMzIvc3JjL2lkbi5jOjM0MDo2OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KLXwgICAgICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVQ1MtNCB0byBVVEYtOCIpKTsKLXwgICAgICAgXgotfCAuLi8uLi9saWJpZG4tMS4zMi9zcmMvaWRuLmM6MzY0OjY6IGVycm9yOiBmb3JtYXQgbm90IGEgc3RyaW5nIGxpdGVyYWwgYW5kIG5vIGZvcm1hdCBhcmd1bWVudHMgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQotfCAgICAgICBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVDUy00IHRvIFVURi04IikpOwotfCAgICAgICBeCi18IC4uLy4uL2xpYmlkbi0xLjMyL3NyYy9pZG4uYzo0NDI6ODogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCi18ICAgICAgICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVQ1MtNCB0byBVVEYtOCIpKTsKLXwgICAgICAgICBeCi18IC4uLy4uL2xpYmlkbi0xLjMyL3NyYy9pZG4uYzo0OTg6NjogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCi18ICAgICAgIF8oImNvdWxkIG5vdCBjb252ZXJ0IGZyb20gVVRGLTggdG8gVUNTLTQiKSk7Ci18ICAgICAgIF4KLXwgLi4vLi4vbGliaWRuLTEuMzIvc3JjL2lkbi5jOjUyNzo1OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KLXwgICAgICBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVURi04IHRvIFVDUy00IikpOwotfCAgICAgIF4KLXwgLi4vLi4vbGliaWRuLTEuMzIvc3JjL2lkbi5jOjU0MDo2OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KLXwgICAgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwgXygiY291bGQgbm90IGRvIE5GS0Mgbm9ybWFsaXphdGlvbiIpKTsKLXwgICAgICAgXn5+fn4KLXwgLi4vLi4vbGliaWRuLTEuMzIvc3JjL2lkbi5jOjU1MTo1OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KLXwgICAgICBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVURi04IHRvIFVDUy00IikpOwotfCAgICAgIF4KLQotU2lnbmVkLW9mZi1ieTogQW5kcsOpIERyYXN6aWsgPGFkcmFzemlrQHR5Y29pbnQuY29tPgogLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiAKLSBzcmMvaWRuLmMgfCAyNyArKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCisgZXhhbXBsZXMvZXhhbXBsZS5jICAgICB8ICA2ICsrKy0tLQorIGV4YW1wbGVzL2V4YW1wbGUzLmMgICAgfCAgNCArKy0tCisgZXhhbXBsZXMvZXhhbXBsZTQuYyAgICB8ICA0ICsrLS0KKyBleGFtcGxlcy9leGFtcGxlNS5jICAgIHwgIDIgKy0KKyBzcmMvaWRuLmMgICAgICAgICAgICAgIHwgIDIgKy0KKyB0ZXN0cy90c3RfaWRuYS5jICAgICAgIHwgMjUgKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQorIHRlc3RzL3RzdF9pZG5hMi5jICAgICAgfCAgOCArKysrLS0tLQorIHRlc3RzL3RzdF9pZG5hMy5jICAgICAgfCAgOCArKysrLS0tLQorIHRlc3RzL3RzdF9uZmtjLmMgICAgICAgfCAgOCArKysrLS0tLQorIHRlc3RzL3RzdF9wcjI5LmMgICAgICAgfCAxMiArKysrKystLS0tLS0KKyB0ZXN0cy90c3RfcHVueWNvZGUuYyAgIHwgMTMgKysrKysrKy0tLS0tLQorIHRlc3RzL3RzdF9zdHJlcnJvci5jICAgfCAyMCArKysrKysrKysrLS0tLS0tLS0tLQorIHRlc3RzL3RzdF9zdHJpbmdwcmVwLmMgfCAxMiArKysrKystLS0tLS0KKyB0ZXN0cy90c3RfdGxkLmMgICAgICAgIHwgMjAgKysrKysrKysrKy0tLS0tLS0tLS0KKyB0ZXN0cy91dGlscy5jICAgICAgICAgIHwgIDYgKysrLS0tCisgMTUgZmlsZXMgY2hhbmdlZCwgNzYgaW5zZXJ0aW9ucygrKSwgNzQgZGVsZXRpb25zKC0pCiAKLWRpZmYgLS1naXQgYS9zcmMvaWRuLmMgYi9zcmMvaWRuLmMKLWluZGV4IGJlMWM3ZDEuLjY4ZTQyOTEgMTAwNjQ0Ci0tLS0gYS9zcmMvaWRuLmMKLSsrKyBiL3NyYy9pZG4uYwotQEAgLTE3MCw3ICsxNzAsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQotICAgICAgIChhcmdzX2luZm8uaWRuYV90b191bmljb2RlX2dpdmVuID8gMSA6IDApICsKLSAgICAgICAoYXJnc19pbmZvLm5ma2NfZ2l2ZW4gPyAxIDogMCkgIT0gMSkKK2RpZmYgLS1naXQgYS9leGFtcGxlcy9leGFtcGxlLmMgYi9leGFtcGxlcy9leGFtcGxlLmMKK2luZGV4IDZlOTE3ODMuLjI0ZjY0ZTAgMTAwNjQ0CistLS0gYS9leGFtcGxlcy9leGFtcGxlLmMKKysrKyBiL2V4YW1wbGVzL2V4YW1wbGUuYworQEAgLTU1LDcgKzU1LDcgQEAgbWFpbiAodm9pZCkKKyAKKyAgIHByaW50ZiAoIkJlZm9yZSBsb2NhbGUydXRmOCAobGVuZ3RoICVsZCk6ICIsIChsb25nIGludCkgc3RybGVuIChidWYpKTsKKyAgIGZvciAoaSA9IDA7IGkgPCBzdHJsZW4gKGJ1Zik7IGkrKykKKy0gICAgcHJpbnRmICgiJTAyeCAiLCBidWZbaV0gJiAweEZGKTsKKysgICAgcHJpbnRmICgiJTAyeCAiLCAodW5zaWduZWQpIGJ1ZltpXSAmIDB4RkYpOworICAgcHJpbnRmICgiXG4iKTsKKyAKKyAgIHAgPSBzdHJpbmdwcmVwX2xvY2FsZV90b191dGY4IChidWYpOworQEAgLTY5LDcgKzY5LDcgQEAgbWFpbiAodm9pZCkKKyAKKyAgIHByaW50ZiAoIkJlZm9yZSBzdHJpbmdwcmVwIChsZW5ndGggJWxkKTogIiwgKGxvbmcgaW50KSBzdHJsZW4gKGJ1ZikpOworICAgZm9yIChpID0gMDsgaSA8IHN0cmxlbiAoYnVmKTsgaSsrKQorLSAgICBwcmludGYgKCIlMDJ4ICIsIGJ1ZltpXSAmIDB4RkYpOworKyAgICBwcmludGYgKCIlMDJ4ICIsICh1bnNpZ25lZCkgYnVmW2ldICYgMHhGRik7CisgICBwcmludGYgKCJcbiIpOworIAorICAgcmMgPSBzdHJpbmdwcmVwIChidWYsIEJVRlNJWiwgMCwgc3RyaW5ncHJlcF9uYW1lcHJlcCk7CitAQCAtNzksNyArNzksNyBAQCBtYWluICh2b2lkKQogICAgICB7Ci0tICAgICAgZXJyb3IgKDAsIDAsIF8oIm9ubHkgb25lIG9mIC1zLCAtZSwgLWQsIC1hLCAtdSBvciAtbiBjYW4gYmUgc3BlY2lmaWVkIikpOwotKyAgICAgIGVycm9yICgwLCAwLCAiJXMiLCBfKCJvbmx5IG9uZSBvZiAtcywgLWUsIC1kLCAtYSwgLXUgb3IgLW4gY2FuIGJlIHNwZWNpZmllZCIpKTsKLSAgICAgICB1c2FnZSAoRVhJVF9GQUlMVVJFKTsKKyAgICAgICBwcmludGYgKCJBZnRlciBzdHJpbmdwcmVwIChsZW5ndGggJWxkKTogIiwgKGxvbmcgaW50KSBzdHJsZW4gKGJ1ZikpOworICAgICAgIGZvciAoaSA9IDA7IGkgPCBzdHJsZW4gKGJ1Zik7IGkrKykKKy0JcHJpbnRmICgiJTAyeCAiLCBidWZbaV0gJiAweEZGKTsKKysJcHJpbnRmICgiJTAyeCAiLCAodW5zaWduZWQpIGJ1ZltpXSAmIDB4RkYpOworICAgICAgIHByaW50ZiAoIlxuIik7CiAgICAgIH0KICAKLUBAIC0xODUsNyArMTg1LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAgIGlmICghYXJnc19pbmZvLnF1aWV0X2dpdmVuCi0gICAgICAgJiYgYXJnc19pbmZvLmlucHV0c19udW0gPT0gMAotICAgICAgICYmIGlzYXR0eSAoZmlsZW5vIChzdGRpbikpKQotLSAgICBmcHJpbnRmIChzdGRlcnIsIF8oIlR5cGUgZWFjaCBpbnB1dCBzdHJpbmcgb24gYSBsaW5lIGJ5IGl0c2VsZiwgIgotKyAgICBmcHJpbnRmIChzdGRlcnIsICIlcyIsIF8oIlR5cGUgZWFjaCBpbnB1dCBzdHJpbmcgb24gYSBsaW5lIGJ5IGl0c2VsZiwgIgotIAkJICAgICAgICJ0ZXJtaW5hdGVkIGJ5IGEgbmV3bGluZSBjaGFyYWN0ZXIuXG4iKSk7CitkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvZXhhbXBsZTMuYyBiL2V4YW1wbGVzL2V4YW1wbGUzLmMKK2luZGV4IGZjMTFjMWMuLmZmYjkwNDIgMTAwNjQ0CistLS0gYS9leGFtcGxlcy9leGFtcGxlMy5jCisrKysgYi9leGFtcGxlcy9leGFtcGxlMy5jCitAQCAtNTYsNyArNTYsNyBAQCBtYWluICh2b2lkKQogIAotICAgZG8KLUBAIC0xOTcsNyArMTk3LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJICBpZiAoZmVvZiAoc3RkaW4pKQotIAkgICAgYnJlYWs7CisgICBwcmludGYgKCJSZWFkIHN0cmluZyAobGVuZ3RoICVsZCk6ICIsIChsb25nIGludCkgc3RybGVuIChidWYpKTsKKyAgIGZvciAoaSA9IDA7IGkgPCBzdHJsZW4gKGJ1Zik7IGkrKykKKy0gICAgcHJpbnRmICgiJTAyeCAiLCBidWZbaV0gJiAweEZGKTsKKysgICAgcHJpbnRmICgiJTAyeCAiLCAodW5zaWduZWQpIGJ1ZltpXSAmIDB4RkYpOworICAgcHJpbnRmICgiXG4iKTsKICAKLS0JICBlcnJvciAoRVhJVF9GQUlMVVJFLCBlcnJubywgXygiaW5wdXQgZXJyb3IiKSk7Ci0rCSAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgZXJybm8sICIlcyIsIF8oImlucHV0IGVycm9yIikpOworICAgcmMgPSBpZG5hX3RvX2FzY2lpX2x6IChidWYsICZwLCAwKTsKK0BAIC02OCw3ICs2OCw3IEBAIG1haW4gKHZvaWQpCisgCisgICBwcmludGYgKCJBQ0UgbGFiZWwgKGxlbmd0aCAlbGQpOiAnJXMnXG4iLCAobG9uZyBpbnQpIHN0cmxlbiAocCksIHApOworICAgZm9yIChpID0gMDsgaSA8IHN0cmxlbiAocCk7IGkrKykKKy0gICAgcHJpbnRmICgiJTAyeCAiLCBwW2ldICYgMHhGRik7CisrICAgIHByaW50ZiAoIiUwMnggIiwgKHVuc2lnbmVkKSBwW2ldICYgMHhGRik7CisgICBwcmludGYgKCJcbiIpOworIAorICAgZnJlZSAocCk7CitkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvZXhhbXBsZTQuYyBiL2V4YW1wbGVzL2V4YW1wbGU0LmMKK2luZGV4IDFiMzE5YzkuLmEzMzE1YTEgMTAwNjQ0CistLS0gYS9leGFtcGxlcy9leGFtcGxlNC5jCisrKysgYi9leGFtcGxlcy9leGFtcGxlNC5jCitAQCAtNTYsNyArNTYsNyBAQCBtYWluICh2b2lkKQorIAorICAgcHJpbnRmICgiUmVhZCBzdHJpbmcgKGxlbmd0aCAlbGQpOiAiLCAobG9uZyBpbnQpIHN0cmxlbiAoYnVmKSk7CisgICBmb3IgKGkgPSAwOyBpIDwgc3RybGVuIChidWYpOyBpKyspCistICAgIHByaW50ZiAoIiUwMnggIiwgYnVmW2ldICYgMHhGRik7CisrICAgIHByaW50ZiAoIiUwMnggIiwgKHVuc2lnbmVkKSBidWZbaV0gJiAweEZGKTsKKyAgIHByaW50ZiAoIlxuIik7CisgCisgICByYyA9IGlkbmFfdG9fdW5pY29kZV9semx6IChidWYsICZwLCAwKTsKK0BAIC02OCw3ICs2OCw3IEBAIG1haW4gKHZvaWQpCisgCisgICBwcmludGYgKCJBQ0UgbGFiZWwgKGxlbmd0aCAlbGQpOiAnJXMnXG4iLCAobG9uZyBpbnQpIHN0cmxlbiAocCksIHApOworICAgZm9yIChpID0gMDsgaSA8IHN0cmxlbiAocCk7IGkrKykKKy0gICAgcHJpbnRmICgiJTAyeCAiLCBwW2ldICYgMHhGRik7CisrICAgIHByaW50ZiAoIiUwMnggIiwgKHVuc2lnbmVkKSBwW2ldICYgMHhGRik7CisgICBwcmludGYgKCJcbiIpOworIAorICAgZnJlZSAocCk7CitkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvZXhhbXBsZTUuYyBiL2V4YW1wbGVzL2V4YW1wbGU1LmMKK2luZGV4IGRmNTU3OTguLjI5ZDQwYjkgMTAwNjQ0CistLS0gYS9leGFtcGxlcy9leGFtcGxlNS5jCisrKysgYi9leGFtcGxlcy9leGFtcGxlNS5jCitAQCAtNjgsNyArNjgsNyBAQCBtYWluICh2b2lkKQorIAorICAgcHJpbnRmICgiUmVhZCBzdHJpbmcgKGxlbmd0aCAlbGQpOiAiLCAobG9uZyBpbnQpIHN0cmxlbiAoYnVmKSk7CisgICBmb3IgKGkgPSAwOyBpIDwgc3RybGVuIChidWYpOyBpKyspCistICAgIHByaW50ZiAoIiUwMnggIiwgYnVmW2ldICYgMHhGRik7CisrICAgIHByaW50ZiAoIiUwMnggIiwgKHVuc2lnbmVkKSBidWZbaV0gJiAweEZGKTsKKyAgIHByaW50ZiAoIlxuIik7CisgCisgICBwID0gc3RyaW5ncHJlcF9sb2NhbGVfdG9fdXRmOCAoYnVmKTsKK2RpZmYgLS1naXQgYS9zcmMvaWRuLmMgYi9zcmMvaWRuLmMKK2luZGV4IGJlMWM3ZDEuLjEzZWIzYzkgMTAwNjQ0CistLS0gYS9zcmMvaWRuLmMKKysrKyBiL3NyYy9pZG4uYworQEAgLTQxOSw3ICs0MTksNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQorIAkgICAgICBzaXplX3QgaTsKKyAJICAgICAgZm9yIChpID0gMDsgcFtpXTsgaSsrKQorIAkJZnByaW50ZiAoc3RkZXJyLCAib3V0cHV0WyVsdV0gPSBVKyUwNHhcbiIsCistCQkJICh1bnNpZ25lZCBsb25nKSBpLCBwW2ldKTsKKysJCQkgKHVuc2lnbmVkIGxvbmcpIGksICh1bnNpZ25lZCkgcFtpXSk7CisgCSAgICB9CisgCisgCSAgZnByaW50ZiAoc3Rkb3V0LCAiJXNcbiIsIHApOworZGlmZiAtLWdpdCBhL3Rlc3RzL3RzdF9pZG5hLmMgYi90ZXN0cy90c3RfaWRuYS5jCitpbmRleCA0MTU3NjRlLi40YWMwNDZmIDEwMDY0NAorLS0tIGEvdGVzdHMvdHN0X2lkbmEuYworKysrIGIvdGVzdHMvdHN0X2lkbmEuYworQEAgLTIyMCwxMyArMjIwLDE0IEBAIGRvaXQgKHZvaWQpCisgICBjaGFyIGxhYmVsWzEwMF07CisgICB1aW50MzJfdCAqdWNzNGxhYmVsID0gTlVMTDsKKyAgIHVpbnQzMl90IHRtcFsxMDBdOworLSAgc2l6ZV90IGxlbiwgbGVuMiwgaTsKKysgIHNpemVfdCBsZW4sIGxlbjI7CisgICBpbnQgcmM7CisrICB1bnNpZ25lZCBpOworIAorICAgZm9yIChpID0gMDsgaSA8IHNpemVvZiAoaWRuYSkgLyBzaXplb2YgKGlkbmFbMF0pOyBpKyspCisgICAgIHsKKyAgICAgICBpZiAoZGVidWcpCistCXByaW50ZiAoIklETkEgZW50cnkgJWxkOiAlc1xuIiwgaSwgaWRuYVtpXS5uYW1lKTsKKysJcHJpbnRmICgiSUROQSBlbnRyeSAldTogJXNcbiIsIGksIGlkbmFbaV0ubmFtZSk7CisgCisgICAgICAgaWYgKGRlYnVnKQorIAl7CitAQCAtMjM3LDcgKzIzOCw3IEBAIGRvaXQgKHZvaWQpCisgICAgICAgcmMgPSBpZG5hX3RvX2FzY2lpXzRpIChpZG5hW2ldLmluLCBpZG5hW2ldLmlubGVuLCBsYWJlbCwgaWRuYVtpXS5mbGFncyk7CisgICAgICAgaWYgKHJjICE9IGlkbmFbaV0udG9hc2NpaXJjKQorIAl7CistCSAgZmFpbCAoIklETkEgZW50cnkgJWxkIGZhaWxlZDogJWRcbiIsIGksIHJjKTsKKysJICBmYWlsICgiSUROQSBlbnRyeSAldSBmYWlsZWQ6ICVkXG4iLCBpLCByYyk7CisgCSAgaWYgKGRlYnVnKQorIAkgICAgcHJpbnRmICgiRkFUQUxcbiIpOworIAkgIGNvbnRpbnVlOworQEAgLTI1Niw3ICsyNTcsNyBAQCBkb2l0ICh2b2lkKQorIAkgIGlmIChzdHJsZW4gKGlkbmFbaV0ub3V0KSAhPSBzdHJsZW4gKGxhYmVsKSB8fAorIAkgICAgICBzdHJjYXNlY21wIChpZG5hW2ldLm91dCwgbGFiZWwpICE9IDApCisgCSAgICB7CistCSAgICAgIGZhaWwgKCJJRE5BIGVudHJ5ICVsZCBmYWlsZWRcbiIsIGkpOworKwkgICAgICBmYWlsICgiSUROQSBlbnRyeSAldSBmYWlsZWRcbiIsIGkpOworIAkgICAgICBpZiAoZGVidWcpCisgCQlwcmludGYgKCJFUlJPUlxuIik7CisgCSAgICB9CitAQCAtMjczLDggKzI3NCw4IEBAIGRvaXQgKHZvaWQpCisgCisgICAgICAgaWYgKGRlYnVnKQorIAl7CistCSAgcHJpbnRmICgiaW46ICVzICglbGQ9PSVsZClcbiIsIGlkbmFbaV0ub3V0LCBzdHJsZW4gKGlkbmFbaV0ub3V0KSwKKy0JCSAgbGVuKTsKKysJICBwcmludGYgKCJpbjogJXMgKCVkPT0lZClcbiIsIGlkbmFbaV0ub3V0LCAoaW50KSBzdHJsZW4gKGlkbmFbaV0ub3V0KSwKKysJCSAgKGludCkgbGVuKTsKKyAJICB1Y3M0cHJpbnQgKHVjczRsYWJlbCwgbGVuKTsKICAJfQogIAotICAgICAgIGlmIChzdHJsZW4gKGxpbmUpID4gMCkKLUBAIC0yMTUsNyArMjE1LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJICBpZiAoIXEpCitAQCAtMjgyLDIwICsyODMsMjAgQEAgZG9pdCAodm9pZCkKKyAgICAgICByYyA9IGlkbmFfdG9fdW5pY29kZV80NGkgKHVjczRsYWJlbCwgbGVuLCB0bXAsICZsZW4yLCBpZG5hW2ldLmZsYWdzKTsKKyAgICAgICBpZiAoZGVidWcpCisgCXsKKy0JICBwcmludGYgKCJleHBlY3RlZCBvdXQgKCVsZCk6XG4iLAorKwkgIHByaW50ZiAoImV4cGVjdGVkIG91dCAoJWx1KTpcbiIsCisgCQkgIHJjID09IElETkFfU1VDQ0VTUyA/IGlkbmFbaV0uaW5sZW4gOiBsZW4pOworIAkgIGlmIChyYyA9PSBJRE5BX1NVQ0NFU1MpCisgCSAgICB1Y3M0cHJpbnQgKGlkbmFbaV0uaW4sIGlkbmFbaV0uaW5sZW4pOworIAkgIGVsc2UKKyAJICAgIHVjczRwcmludCAodWNzNGxhYmVsLCBsZW4pOworIAorLQkgIHByaW50ZiAoImNvbXB1dGVkIG91dCAoJWxkKTpcbiIsIGxlbjIpOworKwkgIHByaW50ZiAoImNvbXB1dGVkIG91dCAoJWQpOlxuIiwgKGludCkgbGVuMik7CisgCSAgdWNzNHByaW50ICh0bXAsIGxlbjIpOworIAl9CisgCisgICAgICAgaWYgKHJjICE9IGlkbmFbaV0udG91bmljb2RlcmMpCisgCXsKKy0JICBmYWlsICgiSUROQSBlbnRyeSAlbGQgZmFpbGVkOiAlZFxuIiwgaSwgcmMpOworKwkgIGZhaWwgKCJJRE5BIGVudHJ5ICV1IGZhaWxlZDogJWRcbiIsIGksIHJjKTsKKyAJICBpZiAoZGVidWcpCisgCSAgICBwcmludGYgKCJGQVRBTFxuIik7CisgCSAgY29udGludWU7CitAQCAtMzA5LDExICszMTAsMTEgQEAgZG9pdCAodm9pZCkKKyAJICBpZiAoZGVidWcpCiAgCSAgICB7Ci0gCSAgICAgIGZyZWUgKHApOwotLQkgICAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLAotKwkgICAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLCAiJXMiLAotIAkJICAgICBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVURi04IHRvIFVDUy00IikpOworIAkgICAgICBpZiAocmMgPT0gSUROQV9TVUNDRVNTKQorLQkJcHJpbnRmICgibGVuPSVsZCBsZW4yPSVsZFxuIiwgbGVuMiwgaWRuYVtpXS5pbmxlbik7CisrCQlwcmludGYgKCJsZW49JWQgbGVuMj0lZFxuIiwgKGludCkgbGVuMiwgKGludCkgaWRuYVtpXS5pbmxlbik7CisgCSAgICAgIGVsc2UKKy0JCXByaW50ZiAoImxlbj0lbGQgbGVuMj0lbGRcbiIsIGxlbiwgbGVuMik7CisrCQlwcmludGYgKCJsZW49JWQgbGVuMj0lZFxuIiwgKGludCkgbGVuLCAoaW50KSBsZW4yKTsKICAJICAgIH0KKy0JICBmYWlsICgiSUROQSBlbnRyeSAlbGQgZmFpbGVkXG4iLCBpKTsKKysJICBmYWlsICgiSUROQSBlbnRyeSAldSBmYWlsZWRcbiIsIGkpOworIAkgIGlmIChkZWJ1ZykKKyAJICAgIHByaW50ZiAoIkVSUk9SXG4iKTsKKyAJfQorZGlmZiAtLWdpdCBhL3Rlc3RzL3RzdF9pZG5hMi5jIGIvdGVzdHMvdHN0X2lkbmEyLmMKK2luZGV4IDY1YjNhNGQuLjM4OTMyY2EgMTAwNjQ0CistLS0gYS90ZXN0cy90c3RfaWRuYTIuYworKysrIGIvdGVzdHMvdHN0X2lkbmEyLmMKK0BAIC00NjEsMTQgKzQ2MSwxNCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGlkbmEgaWRuYVtdID0geworIHZvaWQKKyBkb2l0ICh2b2lkKQorIHsKKy0gIHNpemVfdCBpOworKyAgdW5zaWduZWQgaTsKKyAgIGNoYXIgKm91dDsKKyAgIGludCByYzsKICAKLUBAIC0yNDAsNyArMjQwLDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJICBpZiAoIXEpCisgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mIChpZG5hKSAvIHNpemVvZiAoaWRuYVswXSk7IGkrKykKKyAgICAgeworICAgICAgIGlmIChkZWJ1ZykKKy0JcHJpbnRmICgiSUROQTIgZW50cnkgJWxkXG4iLCBpKTsKKysJcHJpbnRmICgiSUROQTIgZW50cnkgJXVcbiIsIGkpOworIAorICAgICAgIGlmIChkZWJ1ZykKKyAJeworQEAgLTQ4Nyw3ICs0ODcsNyBAQCBkb2l0ICh2b2lkKQorIAkJCSAgICAgSUROQV9VU0VfU1REM19BU0NJSV9SVUxFUyk7CisgICAgICAgaWYgKHJjICE9IElETkFfU1VDQ0VTUyAmJiBzdHJsZW4gKGlkbmFbaV0ub3V0KSA+IDApCisgCXsKKy0JICBmYWlsICgiSUROQTIgZW50cnkgJWxkIGZhaWxlZDogJWRcbiIsIGksIHJjKTsKKysJICBmYWlsICgiSUROQTIgZW50cnkgJXUgZmFpbGVkOiAlZFxuIiwgaSwgcmMpOworIAkgIGNvbnRpbnVlOworIAl9CisgCitAQCAtNTA0LDcgKzUwNCw3IEBAIGRvaXQgKHZvaWQpCisgCSAgaWYgKHN0cmxlbiAoaWRuYVtpXS5vdXQpICE9IHN0cmxlbiAob3V0KSB8fAorIAkgICAgICBzdHJjYXNlY21wIChpZG5hW2ldLm91dCwgb3V0KSAhPSAwKQogIAkgICAgewotIAkgICAgICBmcmVlIChyKTsKLS0JICAgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwKLSsJICAgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwgIiVzIiwKLSAJCSAgICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVVEYtOCB0byBVQ1MtNCIpKTsKKy0JICAgICAgZmFpbCAoIklETkEyIGVudHJ5ICVsZCBmYWlsZWRcbiIsIGkpOworKwkgICAgICBmYWlsICgiSUROQTIgZW50cnkgJXUgZmFpbGVkXG4iLCBpKTsKKyAJICAgICAgaWYgKGRlYnVnKQorIAkJcHJpbnRmICgiRVJST1JcbiIpOwogIAkgICAgfQorZGlmZiAtLWdpdCBhL3Rlc3RzL3RzdF9pZG5hMy5jIGIvdGVzdHMvdHN0X2lkbmEzLmMKK2luZGV4IGExODkzNzguLmY2NTYyOGMgMTAwNjQ0CistLS0gYS90ZXN0cy90c3RfaWRuYTMuYworKysrIGIvdGVzdHMvdHN0X2lkbmEzLmMKK0BAIC01OSwxMyArNTksMTMgQEAgZG9pdCAodm9pZCkKKyB7CisgICBpbnQgcmM7CisgICBjaGFyICpvdXQgPSBOVUxMOworLSAgc2l6ZV90IGk7CisrICB1bnNpZ25lZCBpOwogIAotQEAgLTI3Nyw3ICsyNzcsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQotIAkgIHEgPSBzdHJpbmdwcmVwX3V0ZjhfdG9fdWNzNCAocCwgLTEsICZsZW4pOwotIAkgIGZyZWUgKHApOwotIAkgIGlmICghcSkKLS0JICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsCi0rCSAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLCAiJXMiLAotIAkJICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVVEYtOCB0byBVQ1MtNCIpKTsKKyAgIGZvciAoaSA9IDA7IGkgPCBzaXplb2YgKGlkbmEpIC8gc2l6ZW9mIChpZG5hWzBdKTsgaSsrKQorICAgICB7CisgICAgICAgcmMgPSBpZG5hX3RvX3VuaWNvZGVfOHo4eiAoaWRuYVtpXS5pbiwgJm91dCwgMCk7CisgICAgICAgaWYgKHJjICE9IElETkFfU1VDQ0VTUykKKy0JZmFpbCAoIklETkEzWyVsZF0gZmFpbGVkICVkXG4iLCBpLCByYyk7CisrCWZhaWwgKCJJRE5BM1sldV0gZmFpbGVkICVkXG4iLCBpLCByYyk7CiAgCi0gCSAgaWYgKGFyZ3NfaW5mby5kZWJ1Z19naXZlbikKLUBAIC0zMzYsNyArMzM2LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJICByID0gc3RyaW5ncHJlcF91Y3M0X3RvX3V0ZjggKHEsIC0xLCBOVUxMLCBOVUxMKTsKLSAJICBmcmVlIChxKTsKLSAJICBpZiAoIXIpCi0tCSAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLAotKwkgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwgIiVzIiwKLSAJCSAgIF8oImNvdWxkIG5vdCBjb252ZXJ0IGZyb20gVUNTLTQgdG8gVVRGLTgiKSk7CisgICAgICAgaWYgKGRlYnVnICYmIHJjID09IElETkFfU1VDQ0VTUykKKyAJeworQEAgLTc1LDkgKzc1LDkgQEAgZG9pdCAodm9pZCkKKyAJfQogIAotIAkgIHAgPSBzdHJpbmdwcmVwX3V0ZjhfdG9fbG9jYWxlIChyKTsKLUBAIC0zNjAsNyArMzYwLDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJICBxID0gc3RyaW5ncHJlcF91dGY4X3RvX3VjczQgKHAsIC0xLCBOVUxMKTsKLSAJICBmcmVlIChwKTsKLSAJICBpZiAoIXEpCi0tCSAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLAotKwkgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwgIiVzIiwKLSAJCSAgIF8oImNvdWxkIG5vdCBjb252ZXJ0IGZyb20gVUNTLTQgdG8gVVRGLTgiKSk7CisgICAgICAgaWYgKHN0cmNtcCAob3V0LCBpZG5hW2ldLm91dCkgIT0gMCkKKy0JZmFpbCAoIklETkEzWyVsZF0gZmFpbGVkXG4iLCBpKTsKKysJZmFpbCAoIklETkEzWyV1XSBmYWlsZWRcbiIsIGkpOworICAgICAgIGVsc2UgaWYgKGRlYnVnKQorLQlwcmludGYgKCJJRE5BM1slbGRdIHN1Y2Nlc3NcbiIsIGkpOworKwlwcmludGYgKCJJRE5BM1sldV0gc3VjY2Vzc1xuIiwgaSk7CiAgCi0gCSAgaWYgKGFyZ3NfaW5mby5kZWJ1Z19naXZlbikKLUBAIC00MzgsNyArNDM4LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJICBpZiAoIXEpCisgICAgICAgaWYgKG91dCkKKyAJaWRuX2ZyZWUgKG91dCk7CitkaWZmIC0tZ2l0IGEvdGVzdHMvdHN0X25ma2MuYyBiL3Rlc3RzL3RzdF9uZmtjLmMKK2luZGV4IGQxNTBmZWMuLmY1YWY5YzYgMTAwNjQ0CistLS0gYS90ZXN0cy90c3RfbmZrYy5jCisrKysgYi90ZXN0cy90c3RfbmZrYy5jCitAQCAtNjgsMTggKzY4LDE4IEBAIHZvaWQKKyBkb2l0ICh2b2lkKQorIHsKKyAgIGNoYXIgKm91dDsKKy0gIHNpemVfdCBpOworKyAgdW5zaWduZWQgaTsKKyAKKyAgIGZvciAoaSA9IDA7IGkgPCBzaXplb2YgKG5ma2MpIC8gc2l6ZW9mIChuZmtjWzBdKTsgaSsrKQorICAgICB7CisgICAgICAgaWYgKGRlYnVnKQorLQlwcmludGYgKCJORktDIGVudHJ5ICVsZFxuIiwgaSk7CisrCXByaW50ZiAoIk5GS0MgZW50cnkgJXVcbiIsIGkpOworIAorICAgICAgIG91dCA9IHN0cmluZ3ByZXBfdXRmOF9uZmtjX25vcm1hbGl6ZSAobmZrY1tpXS5pbiwKKyAJCQkJCSAgICAoc3NpemVfdCkgc3RybGVuIChuZmtjW2ldLmluKSk7CisgICAgICAgaWYgKG91dCA9PSBOVUxMKQorIAl7CistCSAgZmFpbCAoIk5GS0MgZW50cnkgJWxkIGZhaWxlZCBmYXRhbGx5XG4iLCBpKTsKKysJICBmYWlsICgiTkZLQyBlbnRyeSAldSBmYWlsZWQgZmF0YWxseVxuIiwgaSk7CisgCSAgY29udGludWU7CisgCX0KKyAKK0BAIC0xMTQsNyArMTE0LDcgQEAgZG9pdCAodm9pZCkKKyAgICAgICBpZiAoc3RybGVuIChuZmtjW2ldLm91dCkgIT0gc3RybGVuIChvdXQpIHx8CisgCSAgbWVtY21wIChuZmtjW2ldLm91dCwgb3V0LCBzdHJsZW4gKG91dCkpICE9IDApCisgCXsKKy0JICBmYWlsICgiTkZLQyBlbnRyeSAlbGQgZmFpbGVkXG4iLCBpKTsKKysJICBmYWlsICgiTkZLQyBlbnRyeSAldSBmYWlsZWRcbiIsIGkpOworIAkgIGlmIChkZWJ1ZykKKyAJICAgIHByaW50ZiAoIkVSUk9SXG4iKTsKKyAJfQorZGlmZiAtLWdpdCBhL3Rlc3RzL3RzdF9wcjI5LmMgYi90ZXN0cy90c3RfcHIyOS5jCitpbmRleCAzZGM1NDY2Li4xMWQwZWRlIDEwMDY0NAorLS0tIGEvdGVzdHMvdHN0X3ByMjkuYworKysrIGIvdGVzdHMvdHN0X3ByMjkuYworQEAgLTkxLDcgKzkxLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB0diB0dltdID0geworIHZvaWQKKyBkb2l0ICh2b2lkKQorIHsKKy0gIHNpemVfdCBpOworKyAgdW5zaWduZWQgaTsKKyAgIGludCByYzsKKyAKKyAgIGZvciAoaSA9IDA7IGkgPCBzaXplb2YgKHR2KSAvIHNpemVvZiAodHZbMF0pOyBpKyspCitAQCAtMTAwLDcgKzEwMCw3IEBAIGRvaXQgKHZvaWQpCisgCXsKKyAJICB1aW50MzJfdCAqcCwgKnE7CisgCistCSAgcHJpbnRmICgiUFIyOSBlbnRyeSAlbGQ6ICVzXG4iLCBpLCB0dltpXS5uYW1lKTsKKysJICBwcmludGYgKCJQUjI5IGVudHJ5ICV1OiAlc1xuIiwgaSwgdHZbaV0ubmFtZSk7CisgCisgCSAgcHJpbnRmICgiaW46XG4iKTsKKyAJICB1Y3M0cHJpbnQgKHR2W2ldLmluLCB0dltpXS5pbmxlbik7CitAQCAtMTIwLDcgKzEyMCw3IEBAIGRvaXQgKHZvaWQpCisgICAgICAgcmMgPSBwcjI5XzQgKHR2W2ldLmluLCB0dltpXS5pbmxlbik7CisgICAgICAgaWYgKHJjICE9IHR2W2ldLnJjKQorIAl7CistCSAgZmFpbCAoIlBSMjkgZW50cnkgJWxkIGZhaWxlZCAoZXhwZWN0ZWQgJWQpOiAlZFxuIiwgaSwgdHZbaV0ucmMsIHJjKTsKKysJICBmYWlsICgiUFIyOSBlbnRyeSAldSBmYWlsZWQgKGV4cGVjdGVkICVkKTogJWRcbiIsIGksIHR2W2ldLnJjLCByYyk7CisgCSAgaWYgKGRlYnVnKQorIAkgICAgcHJpbnRmICgiRkFUQUxcbiIpOworIAkgIGNvbnRpbnVlOworQEAgLTEyOSw3ICsxMjksNyBAQCBkb2l0ICh2b2lkKQorICAgICAgIHJjID0gcHIyOV80eiAodHZbaV0uaW4pOworICAgICAgIGlmIChyYyAhPSB0dltpXS5yYykKKyAJeworLQkgIGZhaWwgKCJQUjI5IGVudHJ5ICVsZCBmYWlsZWQgKGV4cGVjdGVkICVkKTogJWRcbiIsIGksIHR2W2ldLnJjLCByYyk7CisrCSAgZmFpbCAoIlBSMjkgZW50cnkgJXUgZmFpbGVkIChleHBlY3RlZCAlZCk6ICVkXG4iLCBpLCB0dltpXS5yYywgcmMpOworIAkgIGlmIChkZWJ1ZykKKyAJICAgIHByaW50ZiAoIkZBVEFMXG4iKTsKKyAJICBjb250aW51ZTsKK0BAIC0xNDIsNyArMTQyLDcgQEAgZG9pdCAodm9pZCkKKyAJcCA9IHN0cmluZ3ByZXBfdWNzNF90b191dGY4ICh0dltpXS5pbiwgKHNzaXplX3QpIHR2W2ldLmlubGVuLAorIAkJCQkgICAgICZpdGVtc19yZWFkLCAmaXRlbXNfd3JpdHRlbik7CisgCWlmIChwID09IE5VTEwpCistCSAgZmFpbCAoIkZBSUw6IHN0cmluZ3ByZXBfdWNzNF90b191dGY4KHR2WyVsZF0pID09IE5VTExcbiIsIGkpOworKwkgIGZhaWwgKCJGQUlMOiBzdHJpbmdwcmVwX3VjczRfdG9fdXRmOCh0dlsldV0pID09IE5VTExcbiIsIGkpOworIAlpZiAoZGVidWcpCisgCSAgaGV4cHJpbnQgKHAsIHN0cmxlbiAocCkpOworIAorQEAgLTE1MCw3ICsxNTAsNyBAQCBkb2l0ICh2b2lkKQorIAlmcmVlIChwKTsKKyAJaWYgKHJjICE9IHR2W2ldLnJjKQorIAkgIHsKKy0JICAgIGZhaWwgKCJQUjI5IGVudHJ5ICVsZCBmYWlsZWQgKGV4cGVjdGVkICVkKTogJWRcbiIsCisrCSAgICBmYWlsICgiUFIyOSBlbnRyeSAldSBmYWlsZWQgKGV4cGVjdGVkICVkKTogJWRcbiIsCisgCQkgIGksIHR2W2ldLnJjLCByYyk7CisgCSAgICBpZiAoZGVidWcpCisgCSAgICAgIHByaW50ZiAoIkZBVEFMXG4iKTsKK2RpZmYgLS1naXQgYS90ZXN0cy90c3RfcHVueWNvZGUuYyBiL3Rlc3RzL3RzdF9wdW55Y29kZS5jCitpbmRleCA0OTNiOGEyLi45OTc3NDRhIDEwMDY0NAorLS0tIGEvdGVzdHMvdHN0X3B1bnljb2RlLmMKKysrKyBiL3Rlc3RzL3RzdF9wdW55Y29kZS5jCitAQCAtMTczLDcgKzE3Myw4IEBAIGRvaXQgKHZvaWQpCisgICBjaGFyICpwOworICAgdWludDMyX3QgKnE7CisgICBpbnQgcmM7CistICBzaXplX3QgaSwgb3V0bGVuOworKyAgc2l6ZV90IG91dGxlbjsKKysgIHVuc2lnbmVkIGk7CisgCisgICBwID0gbWFsbG9jIChzaXplb2YgKCpwKSAqIEJVRlNJWik7CisgICBpZiAocCA9PSBOVUxMKQorQEAgLTE4Niw3ICsxODcsNyBAQCBkb2l0ICh2b2lkKQorICAgZm9yIChpID0gMDsgaSA8IHNpemVvZiAocHVueWNvZGUpIC8gc2l6ZW9mIChwdW55Y29kZVswXSk7IGkrKykKKyAgICAgeworICAgICAgIGlmIChkZWJ1ZykKKy0JcHJpbnRmICgiUFVOWUNPREUgZW50cnkgJWxkOiAlc1xuIiwgaSwgcHVueWNvZGVbaV0ubmFtZSk7CisrCXByaW50ZiAoIlBVTllDT0RFIGVudHJ5ICV1OiAlc1xuIiwgaSwgcHVueWNvZGVbaV0ubmFtZSk7CisgCisgICAgICAgaWYgKGRlYnVnKQorIAl7CitAQCAtMTk5LDcgKzIwMCw3IEBAIGRvaXQgKHZvaWQpCisgCQkJICAgIE5VTEwsICZvdXRsZW4sIHApOworICAgICAgIGlmIChyYyAhPSBwdW55Y29kZVtpXS5yYykKKyAJeworLQkgIGZhaWwgKCJwdW55Y29kZV9lbmNvZGUoKSBlbnRyeSAlbGQgZmFpbGVkOiAlZFxuIiwgaSwgcmMpOworKwkgIGZhaWwgKCJwdW55Y29kZV9lbmNvZGUoKSBlbnRyeSAldSBmYWlsZWQ6ICVkXG4iLCBpLCByYyk7CisgCSAgaWYgKGRlYnVnKQorIAkgICAgcHJpbnRmICgiRkFUQUxcbiIpOworIAkgIGNvbnRpbnVlOworQEAgLTIyMSw3ICsyMjIsNyBAQCBkb2l0ICh2b2lkKQorIAkgIGlmIChzdHJsZW4gKHB1bnljb2RlW2ldLm91dCkgIT0gc3RybGVuIChwKSB8fAorIAkgICAgICBtZW1jbXAgKHB1bnljb2RlW2ldLm91dCwgcCwgc3RybGVuIChwKSkgIT0gMCkKICAJICAgIHsKLSAJICAgICAgZnJlZSAocCk7Ci0tCSAgICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsCi0rCSAgICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsICIlcyIsCi0gCQkgICAgIF8oImNvdWxkIG5vdCBjb252ZXJ0IGZyb20gVUNTLTQgdG8gVVRGLTgiKSk7CistCSAgICAgIGZhaWwgKCJwdW55Y29kZSgpIGVudHJ5ICVsZCBmYWlsZWRcbiIsIGkpOworKwkgICAgICBmYWlsICgicHVueWNvZGUoKSBlbnRyeSAldSBmYWlsZWRcbiIsIGkpOworIAkgICAgICBpZiAoZGVidWcpCisgCQlwcmludGYgKCJFUlJPUlxuIik7CiAgCSAgICB9Ci0gCi1AQCAtNDk0LDcgKzQ5NCw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gCSAgciA9IHN0cmluZ3ByZXBfdWNzNF90b191dGY4IChxLCAtMSwgTlVMTCwgTlVMTCk7Ci0gCSAgZnJlZSAocSk7Ci0gCSAgaWYgKCFyKQotLQkgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwKLSsJICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsICIlcyIsCi0gCQkgICBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVURi04IHRvIFVDUy00IikpOwotIAotIAkgIHAgPSBzdHJpbmdwcmVwX3V0ZjhfdG9fbG9jYWxlIChyKTsKLUBAIC01MjMsNyArNTIzLDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJICAgICAgaWYgKCFxKQotIAkJewotIAkJICBmcmVlIChwKTsKLS0JCSAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwKLSsJCSAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwgIiVzIiwKLSAJCQkgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVVEYtOCB0byBVQ1MtNCIpKTsKLSAJCX0KLSAKLUBAIC01MzcsNyArNTM3LDggQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJICByID0gc3RyaW5ncHJlcF91dGY4X25ma2Nfbm9ybWFsaXplIChwLCAtMSk7Ci0gCSAgZnJlZSAocCk7Ci0gCSAgaWYgKCFyKQotLQkgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwgXygiY291bGQgbm90IGRvIE5GS0Mgbm9ybWFsaXphdGlvbiIpKTsKLSsJICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsICIlcyIsCi0rCQkgICBfKCJjb3VsZCBub3QgZG8gTkZLQyBub3JtYWxpemF0aW9uIikpOwotIAotIAkgIGlmIChhcmdzX2luZm8uZGVidWdfZ2l2ZW4pCitAQCAtMjQxLDcgKzI0Miw3IEBAIGRvaXQgKHZvaWQpCisgCQkJICAgICZvdXRsZW4sIHEsIE5VTEwpOworICAgICAgIGlmIChyYyAhPSBwdW55Y29kZVtpXS5yYykKKyAJeworLQkgIGZhaWwgKCJwdW55Y29kZSgpIGVudHJ5ICVsZCBmYWlsZWQ6ICVkXG4iLCBpLCByYyk7CisrCSAgZmFpbCAoInB1bnljb2RlKCkgZW50cnkgJXUgZmFpbGVkOiAlZFxuIiwgaSwgcmMpOworIAkgIGlmIChkZWJ1ZykKKyAJICAgIHByaW50ZiAoIkZBVEFMXG4iKTsKKyAJICBjb250aW51ZTsKK0BAIC0yNjIsNyArMjYzLDcgQEAgZG9pdCAodm9pZCkKKyAJICBpZiAocHVueWNvZGVbaV0uaW5sZW4gIT0gb3V0bGVuIHx8CisgCSAgICAgIG1lbWNtcCAocHVueWNvZGVbaV0uaW4sIHEsIG91dGxlbikgIT0gMCkKICAJICAgIHsKLUBAIC01NDcsNyArNTQ4LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJICAgICAgaWYgKCFxKQotIAkJewotIAkJICBmcmVlIChyKTsKLS0JCSAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwKLSsJCSAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwgIiVzIiwKLSAJCQkgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVVEYtOCB0byBVQ1MtNCIpKTsKLSAJCX0KKy0JICAgICAgZmFpbCAoInB1bnljb2RlX2RlY29kZSgpIGVudHJ5ICVsZCBmYWlsZWRcbiIsIGkpOworKwkgICAgICBmYWlsICgicHVueWNvZGVfZGVjb2RlKCkgZW50cnkgJXUgZmFpbGVkXG4iLCBpKTsKKyAJICAgICAgaWYgKGRlYnVnKQorIAkJcHJpbnRmICgiRVJST1JcbiIpOworIAkgICAgfQorZGlmZiAtLWdpdCBhL3Rlc3RzL3RzdF9zdHJlcnJvci5jIGIvdGVzdHMvdHN0X3N0cmVycm9yLmMKK2luZGV4IDcxZmZmNTkuLjczMGY1ZTQgMTAwNjQ0CistLS0gYS90ZXN0cy90c3Rfc3RyZXJyb3IuYworKysrIGIvdGVzdHMvdHN0X3N0cmVycm9yLmMKK0BAIC0xMTAsNyArMTEwLDcgQEAgZG9pdCAodm9pZCkKKyAgIC8qIEl0ZXJhdGUgdGhyb3VnaCBhbGwgZXJyb3IgY29kZXMuICovCiAgCisgICB7CistICAgIHNpemVfdCBpOworKyAgICB1bnNpZ25lZCBpOworICAgICBjb25zdCBjaGFyICpsYXN0X3AgPSBOVUxMOworIAorICAgICBmb3IgKGkgPSAwOzsgaSsrKQorQEAgLTEyNiwxMyArMTI2LDEzIEBAIGRvaXQgKHZvaWQpCisgCSAgICBicmVhazsKKyAJICB9CisgCWlmIChkZWJ1ZykKKy0JICBwcmludGYgKCJpZG5hICVsZDogJXNcbiIsIGksIHApOworKwkgIHByaW50ZiAoImlkbmEgJXU6ICVzXG4iLCBpLCBwKTsKKyAJbGFzdF9wID0gcDsKKyAgICAgICB9CisgICB9CisgCisgICB7CistICAgIHNpemVfdCBpOworKyAgICB1bnNpZ25lZCBpOworICAgICBjb25zdCBjaGFyICpsYXN0X3AgPSBOVUxMOworIAorICAgICBmb3IgKGkgPSAwOzsgaSsrKQorQEAgLTE0MSwxMyArMTQxLDEzIEBAIGRvaXQgKHZvaWQpCisgCWlmIChwID09IGxhc3RfcCkKKyAJICBicmVhazsKKyAJaWYgKGRlYnVnKQorLQkgIHByaW50ZiAoInByMjkgJWxkOiAlc1xuIiwgaSwgcCk7CisrCSAgcHJpbnRmICgicHIyOSAldTogJXNcbiIsIGksIHApOworIAlsYXN0X3AgPSBwOworICAgICAgIH0KKyAgIH0KKyAKKyAgIHsKKy0gICAgc2l6ZV90IGk7CisrICAgIHVuc2lnbmVkIGk7CisgICAgIGNvbnN0IGNoYXIgKmxhc3RfcCA9IE5VTEw7CisgCisgICAgIGZvciAoaSA9IDA7OyBpKyspCitAQCAtMTU2LDEzICsxNTYsMTMgQEAgZG9pdCAodm9pZCkKKyAJaWYgKHAgPT0gbGFzdF9wKQorIAkgIGJyZWFrOworIAlpZiAoZGVidWcpCistCSAgcHJpbnRmICgicHVueWNvZGUgJWxkOiAlc1xuIiwgaSwgcCk7CisrCSAgcHJpbnRmICgicHVueWNvZGUgJXU6ICVzXG4iLCBpLCBwKTsKKyAJbGFzdF9wID0gcDsKKyAgICAgICB9CisgICB9CisgCisgICB7CistICAgIHNpemVfdCBpOworKyAgICB1bnNpZ25lZCBpOworICAgICBjb25zdCBjaGFyICpsYXN0X3AgPSBOVUxMOworIAorICAgICBmb3IgKGkgPSAwOzsgaSsrKQorQEAgLTE4MywxMyArMTgzLDEzIEBAIGRvaXQgKHZvaWQpCisgCSAgICBicmVhazsKKyAJICB9CisgCWlmIChkZWJ1ZykKKy0JICBwcmludGYgKCJzdHJpbmdwcmVwICVsZDogJXNcbiIsIGksIHApOworKwkgIHByaW50ZiAoInN0cmluZ3ByZXAgJXU6ICVzXG4iLCBpLCBwKTsKKyAJbGFzdF9wID0gcDsKKyAgICAgICB9CisgICB9CisgCisgICB7CistICAgIHNpemVfdCBpOworKyAgICB1bnNpZ25lZCBpOworICAgICBjb25zdCBjaGFyICpsYXN0X3AgPSBOVUxMOworIAorICAgICBmb3IgKGkgPSAwOzsgaSsrKQorQEAgLTE5OCw3ICsxOTgsNyBAQCBkb2l0ICh2b2lkKQorIAlpZiAocCA9PSBsYXN0X3ApCisgCSAgYnJlYWs7CisgCWlmIChkZWJ1ZykKKy0JICBwcmludGYgKCJ0bGQgJWxkOiAlc1xuIiwgaSwgcCk7CisrCSAgcHJpbnRmICgidGxkICV1OiAlc1xuIiwgaSwgcCk7CisgCWxhc3RfcCA9IHA7CisgICAgICAgfQorICAgfQorZGlmZiAtLWdpdCBhL3Rlc3RzL3RzdF9zdHJpbmdwcmVwLmMgYi90ZXN0cy90c3Rfc3RyaW5ncHJlcC5jCitpbmRleCAxNDljZTZmLi43YzlhYjA2IDEwMDY0NAorLS0tIGEvdGVzdHMvdHN0X3N0cmluZ3ByZXAuYworKysrIGIvdGVzdHMvdHN0X3N0cmluZ3ByZXAuYworQEAgLTIwNSw3ICsyMDUsNyBAQCBkb2l0ICh2b2lkKQorIHsKKyAgIGNoYXIgKnA7CisgICBpbnQgcmM7CistICBzaXplX3QgaTsKKysgIHVuc2lnbmVkIGk7CisgCisgICBpZiAoIXN0cmluZ3ByZXBfY2hlY2tfdmVyc2lvbiAoU1RSSU5HUFJFUF9WRVJTSU9OKSkKKyAgICAgZmFpbCAoInN0cmluZ3ByZXBfY2hlY2tfdmVyc2lvbiBmYWlsZWQgKGhlYWRlciAlcyBydW50aW1lICVzKVxuIiwKK0BAIC0yMjQsNyArMjI0LDcgQEAgZG9pdCAodm9pZCkKKyAgIGZvciAoaSA9IDA7IGkgPCBzaXplb2YgKHN0cnByZXApIC8gc2l6ZW9mIChzdHJwcmVwWzBdKTsgaSsrKQorICAgICB7CisgICAgICAgaWYgKGRlYnVnKQorLQlwcmludGYgKCJTVFJJTkdQUkVQIGVudHJ5ICVsZFxuIiwgaSk7CisrCXByaW50ZiAoIlNUUklOR1BSRVAgZW50cnkgJXVcbiIsIGkpOworIAorICAgICAgIGlmIChkZWJ1ZykKKyAJeworQEAgLTI0NywxMiArMjQ3LDEyIEBAIGRvaXQgKHZvaWQpCisgCSAgY29udGludWU7CisgCWVsc2UgaWYgKGwgPT0gTlVMTCkKKyAJICB7CistCSAgICBmYWlsICgiYmFkIFVURi04IGluIGVudHJ5ICVsZFxuIiwgaSk7CisrCSAgICBmYWlsICgiYmFkIFVURi04IGluIGVudHJ5ICV1XG4iLCBpKTsKKyAJICAgIGNvbnRpbnVlOworIAkgIH0KKyAJZWxzZSBpZiAoc3RyY21wIChzdHJwcmVwW2ldLmluLCB4KSAhPSAwKQorIAkgIHsKKy0JICAgIGZhaWwgKCJiYWQgVVRGLTggaW4gZW50cnkgJWxkXG4iLCBpKTsKKysJICAgIGZhaWwgKCJiYWQgVVRGLTggaW4gZW50cnkgJXVcbiIsIGkpOworIAkgICAgaWYgKGRlYnVnKQorIAkgICAgICB7CisgCQlwdXRzICgiZXhwZWN0ZWQ6Iik7CitAQCAtMjc0LDcgKzI3NCw3IEBAIGRvaXQgKHZvaWQpCisgCQkJICAgICAgICJOYW1lcHJlcCIsIHN0cnByZXBbaV0uZmxhZ3MpOworICAgICAgIGlmIChyYyAhPSBzdHJwcmVwW2ldLnJjKQorIAl7CistCSAgZmFpbCAoInN0cmluZ3ByZXAoKSBlbnRyeSAlbGQgZmFpbGVkOiAlZFxuIiwgaSwgcmMpOworKwkgIGZhaWwgKCJzdHJpbmdwcmVwKCkgZW50cnkgJXUgZmFpbGVkOiAlZFxuIiwgaSwgcmMpOworIAkgIGlmIChkZWJ1ZykKKyAJICAgIHByaW50ZiAoIkZBVEFMXG4iKTsKKyAJICBpZiAocmMgPT0gU1RSSU5HUFJFUF9PSykKK0BAIC0zMDIsNyArMzAyLDcgQEAgZG9pdCAodm9pZCkKKyAJICBpZiAoc3RybGVuIChzdHJwcmVwW2ldLm91dCkgIT0gc3RybGVuIChwKSB8fAorIAkgICAgICBtZW1jbXAgKHN0cnByZXBbaV0ub3V0LCBwLCBzdHJsZW4gKHApKSAhPSAwKQorIAkgICAgeworLQkgICAgICBmYWlsICgic3RyaW5ncHJlcCgpIGVudHJ5ICVsZCBmYWlsZWRcbiIsIGkpOworKwkgICAgICBmYWlsICgic3RyaW5ncHJlcCgpIGVudHJ5ICVsZCBmYWlsZWRcbiIsIChsb25nKSBpKTsKKyAJICAgICAgaWYgKGRlYnVnKQorIAkJcHJpbnRmICgiRVJST1JcbiIpOworIAkgICAgfQorZGlmZiAtLWdpdCBhL3Rlc3RzL3RzdF90bGQuYyBiL3Rlc3RzL3RzdF90bGQuYworaW5kZXggMmY4ZTEyZS4uZDAzOGM3OSAxMDA2NDQKKy0tLSBhL3Rlc3RzL3RzdF90bGQuYworKysrIGIvdGVzdHMvdHN0X3RsZC5jCitAQCAtODAsNyArODAsNyBAQCBjb25zdCBUbGRfdGFibGUgKiBteV90bGRfdGFibGVzW10gPQorIHZvaWQKKyBkb2l0ICh2b2lkKQorIHsKKy0gIHNpemVfdCBpOworKyAgdW5zaWduZWQgaTsKKyAgIGNvbnN0IFRsZF90YWJsZSAqdGxkdGFibGU7CisgICBjaGFyICpvdXQ7CisgICBzaXplX3QgZXJycG9zOworQEAgLTIwNiw3ICsyMDYsNyBAQCBkb2l0ICh2b2lkKQorICAgZm9yIChpID0gMDsgaSA8IHNpemVvZiAodGxkKSAvIHNpemVvZiAodGxkWzBdKTsgaSsrKQorICAgICB7CisgICAgICAgaWYgKGRlYnVnKQorLQlwcmludGYgKCJUTEQgZW50cnkgJWxkOiAlc1xuIiwgaSwgdGxkW2ldLm5hbWUpOworKwlwcmludGYgKCJUTEQgZW50cnkgJXU6ICVzXG4iLCBpLCB0bGRbaV0ubmFtZSk7CisgCisgICAgICAgaWYgKGRlYnVnKQorIAl7CitAQCAtMjE3LDcgKzIxNyw3IEBAIGRvaXQgKHZvaWQpCisgICAgICAgdGxkdGFibGUgPSB0bGRfZGVmYXVsdF90YWJsZSAodGxkW2ldLnRsZCwgTlVMTCk7CisgICAgICAgaWYgKHRsZHRhYmxlID09IE5VTEwpCisgCXsKKy0JICBmYWlsICgiVExEIGVudHJ5ICVsZCB0bGRfZ2V0X3RhYmxlICglcylcbiIsIGksIHRsZFtpXS50bGQpOworKwkgIGZhaWwgKCJUTEQgZW50cnkgJXUgdGxkX2dldF90YWJsZSAoJXMpXG4iLCBpLCB0bGRbaV0udGxkKTsKKyAJICBpZiAoZGVidWcpCisgCSAgICBwcmludGYgKCJGQVRBTFxuIik7CisgCSAgY29udGludWU7CitAQCAtMjI2LDcgKzIyNiw3IEBAIGRvaXQgKHZvaWQpCisgICAgICAgcmMgPSB0bGRfY2hlY2tfNHQgKHRsZFtpXS5pbiwgdGxkW2ldLmlubGVuLCAmZXJycG9zLCB0bGR0YWJsZSk7CisgICAgICAgaWYgKHJjICE9IHRsZFtpXS5yYykKKyAJeworLQkgIGZhaWwgKCJUTEQgZW50cnkgJWxkIGZhaWxlZDogJWRcbiIsIGksIHJjKTsKKysJICBmYWlsICgiVExEIGVudHJ5ICV1IGZhaWxlZDogJWRcbiIsIGksIHJjKTsKKyAJICBpZiAoZGVidWcpCisgCSAgICBwcmludGYgKCJGQVRBTFxuIik7CisgCSAgY29udGludWU7CitAQCAtMjM3LDcgKzIzNyw3IEBAIGRvaXQgKHZvaWQpCisgCisgICAgICAgaWYgKHJjICE9IHRsZFtpXS5yYykKKyAJeworLQkgIGZhaWwgKCJUTEQgZW50cnkgJWxkIGZhaWxlZFxuIiwgaSk7CisrCSAgZmFpbCAoIlRMRCBlbnRyeSAldSBmYWlsZWRcbiIsIGkpOworIAkgIGlmIChkZWJ1ZykKKyAJICAgIHByaW50ZiAoIkVSUk9SXG4iKTsKKyAJfQorQEAgLTI0NSwxMiArMjQ1LDEyIEBAIGRvaXQgKHZvaWQpCisgCXsKKyAJICBpZiAoZGVidWcpCisgCSAgICBwcmludGYgKCJyZXR1cm5lZCBlcnJwb3MgJWxkIGV4cGVjdGVkIGVycnBvcyAlbGRcbiIsCistCQkgICAgZXJycG9zLCB0bGRbaV0uZXJycG9zKTsKKysJCSAgICAobG9uZykgZXJycG9zLCAobG9uZykgdGxkW2ldLmVycnBvcyk7CisgCisgCSAgaWYgKHRsZFtpXS5lcnJwb3MgIT0gZXJycG9zKQorIAkgICAgeworLQkgICAgICBmYWlsICgiVExEIGVudHJ5ICVsZCBmYWlsZWQgYmVjYXVzZSBlcnJwb3MgJWxkICE9ICVsZFxuIiwgaSwKKy0JCSAgICB0bGRbaV0uZXJycG9zLCBlcnJwb3MpOworKwkgICAgICBmYWlsICgiVExEIGVudHJ5ICV1IGZhaWxlZCBiZWNhdXNlIGVycnBvcyAlbGQgIT0gJWxkXG4iLCBpLAorKwkJICAgIChsb25nKSB0bGRbaV0uZXJycG9zLCAobG9uZykgZXJycG9zKTsKKyAJICAgICAgaWYgKGRlYnVnKQorIAkJcHJpbnRmICgiRVJST1JcbiIpOworIAkgICAgfQorQEAgLTI2MiwxMiArMjYyLDEyIEBAIGRvaXQgKHZvaWQpCisgCXJjID0gdGxkX2NoZWNrXzh6ICh0bGRbaV0uZXhhbXBsZSwgJmVycnBvcywgTlVMTCk7CisgCWlmIChyYyAhPSB0bGRbaV0ucmMpCisgCSAgeworLQkgICAgZmFpbCAoIlRMRCBlbnRyeSAlbGQgZmFpbGVkXG4iLCBpKTsKKysJICAgIGZhaWwgKCJUTEQgZW50cnkgJXUgZmFpbGVkXG4iLCBpKTsKKyAJICAgIGlmIChkZWJ1ZykKKyAJICAgICAgcHJpbnRmICgiRVJST1JcbiIpOworIAkgIH0KKyAJaWYgKGRlYnVnKQorLQkgIHByaW50ZiAoIlRMRCBlbnRyeSAlbGQgdGxkX2NoZWNrXzh6ICglcylcbiIsIGksIHRsZFtpXS5leGFtcGxlKTsKKysJICBwcmludGYgKCJUTEQgZW50cnkgJXUgdGxkX2NoZWNrXzh6ICglcylcbiIsIGksIHRsZFtpXS5leGFtcGxlKTsKKyAgICAgICB9CisgICAgIH0KKyB9CitkaWZmIC0tZ2l0IGEvdGVzdHMvdXRpbHMuYyBiL3Rlc3RzL3V0aWxzLmMKK2luZGV4IDcxN2VlMDEuLjU1NzdkYzMgMTAwNjQ0CistLS0gYS90ZXN0cy91dGlscy5jCisrKysgYi90ZXN0cy91dGlscy5jCitAQCAtNDksNyArNDksNyBAQCBlc2NhcGVwcmludCAoY29uc3QgY2hhciAqc3RyLCBzaXplX3QgbGVuKQorIHsKKyAgIHNpemVfdCBpOworIAorLSAgcHJpbnRmICgiIChsZW5ndGggJWxkIGJ5dGVzKTpcblx0IiwgbGVuKTsKKysgIHByaW50ZiAoIiAobGVuZ3RoICVsZCBieXRlcyk6XG5cdCIsIChsb25nKSBsZW4pOworICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQorICAgICB7CisgICAgICAgaWYgKCgoc3RyW2ldICYgMHhGRikgPj0gJ0EnICYmIChzdHJbaV0gJiAweEZGKSA8PSAnWicpIHx8CitAQCAtNTgsNyArNTgsNyBAQCBlc2NhcGVwcmludCAoY29uc3QgY2hhciAqc3RyLCBzaXplX3QgbGVuKQorIAkgIHx8IChzdHJbaV0gJiAweEZGKSA9PSAnICcgfHwgKHN0cltpXSAmIDB4RkYpID09ICcuJykKKyAJcHJpbnRmICgiJWMiLCAoc3RyW2ldICYgMHhGRikpOworICAgICAgIGVsc2UKKy0JcHJpbnRmICgiXFx4JTAyWCIsIChzdHJbaV0gJiAweEZGKSk7CisrCXByaW50ZiAoIlxceCUwMlgiLCAodW5zaWduZWQpIChzdHJbaV0gJiAweEZGKSk7CisgICAgICAgaWYgKChpICsgMSkgJSAxNiA9PSAwICYmIChpICsgMSkgPCBsZW4pCisgCXByaW50ZiAoIidcblx0JyIpOworICAgICB9CitAQCAtNzMsNyArNzMsNyBAQCBoZXhwcmludCAoY29uc3QgY2hhciAqc3RyLCBzaXplX3QgbGVuKQorICAgcHJpbnRmICgiXHQ7OyAiKTsKKyAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykKKyAgICAgeworLSAgICAgIHByaW50ZiAoIiUwMnggIiwgKHN0cltpXSAmIDB4RkYpKTsKKysgICAgICBwcmludGYgKCIlMDJ4ICIsICh1bnNpZ25lZCkgKHN0cltpXSAmIDB4RkYpKTsKKyAgICAgICBpZiAoKGkgKyAxKSAlIDggPT0gMCkKKyAJcHJpbnRmICgiICIpOworICAgICAgIGlmICgoaSArIDEpICUgMTYgPT0gMCAmJiBpICsgMSA8IGxlbikKIC0tIAotMi44LjEKKzEuOS4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi8wMDAxLWlkbi1mb3JtYXQtc2VjdXJpdHktd2FybmluZ3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4vMDAwMS1pZG4tZm9ybWF0LXNlY3VyaXR5LXdhcm5pbmdzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhZGM3ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4vMDAwMS1pZG4tZm9ybWF0LXNlY3VyaXR5LXdhcm5pbmdzLnBhdGNoCkBAIC0wLDAgKzEsMTgxIEBACitGcm9tIDgyZjk4ZGNiYzQyOWJiZTg5YTk4MzdjNTMzY2JjYmMwMmU3N2M3OTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/QW5kcj1DMz1BOT0yMERyYXN6aWs/PSA8YWRyYXN6aWtAdHljb2ludC5jb20+CitEYXRlOiBUdWUsIDI4IEp1biAyMDE2IDEyOjQzOjMxICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGlkbjogZml4IHByaW50ZigpIGZvcm1hdCBzZWN1cml0eSB3YXJuaW5ncworTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCit8IC4uLy4uL2xpYmlkbi0xLjMyL3NyYy9pZG4uYzogSW4gZnVuY3Rpb24gJ21haW4nOgorfCAuLi8uLi9saWJpZG4tMS4zMi9zcmMvaWRuLmM6MTcyOjc6IGVycm9yOiBmb3JtYXQgbm90IGEgc3RyaW5nIGxpdGVyYWwgYW5kIG5vIGZvcm1hdCBhcmd1bWVudHMgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQorfCAgICAgICAgZXJyb3IgKDAsIDAsIF8oIm9ubHkgb25lIG9mIC1zLCAtZSwgLWQsIC1hLCAtdSBvciAtbiBjYW4gYmUgc3BlY2lmaWVkIikpOworfCAgICAgICAgXn5+fn4KK3wgLi4vLi4vbGliaWRuLTEuMzIvc3JjL2lkbi5jOjE4Nzo1OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KK3wgICAgICBmcHJpbnRmIChzdGRlcnIsIF8oIlR5cGUgZWFjaCBpbnB1dCBzdHJpbmcgb24gYSBsaW5lIGJ5IGl0c2VsZiwgIgorfCAgICAgIF5+fn5+fn4KK3wgLi4vLi4vbGliaWRuLTEuMzIvc3JjL2lkbi5jOjIwMjo0OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KK3wgICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIGVycm5vLCBfKCJpbnB1dCBlcnJvciIpKTsKK3wgICAgIF5+fn5+Cit8IC4uLy4uL2xpYmlkbi0xLjMyL3NyYy9pZG4uYzoyMjA6ODogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCit8ICAgICAgICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVVEYtOCB0byBVQ1MtNCIpKTsKK3wgICAgICAgICBeCit8IC4uLy4uL2xpYmlkbi0xLjMyL3NyYy9pZG4uYzoyNDU6ODogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCit8ICAgICAgICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVVEYtOCB0byBVQ1MtNCIpKTsKK3wgICAgICAgICBeCit8IC4uLy4uL2xpYmlkbi0xLjMyL3NyYy9pZG4uYzoyODE6NjogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCit8ICAgICAgIF8oImNvdWxkIG5vdCBjb252ZXJ0IGZyb20gVVRGLTggdG8gVUNTLTQiKSk7Cit8ICAgICAgIF4KK3wgLi4vLi4vbGliaWRuLTEuMzIvc3JjL2lkbi5jOjM0MDo2OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KK3wgICAgICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVQ1MtNCB0byBVVEYtOCIpKTsKK3wgICAgICAgXgorfCAuLi8uLi9saWJpZG4tMS4zMi9zcmMvaWRuLmM6MzY0OjY6IGVycm9yOiBmb3JtYXQgbm90IGEgc3RyaW5nIGxpdGVyYWwgYW5kIG5vIGZvcm1hdCBhcmd1bWVudHMgWy1XZXJyb3I9Zm9ybWF0LXNlY3VyaXR5XQorfCAgICAgICBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVDUy00IHRvIFVURi04IikpOworfCAgICAgICBeCit8IC4uLy4uL2xpYmlkbi0xLjMyL3NyYy9pZG4uYzo0NDI6ODogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCit8ICAgICAgICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVQ1MtNCB0byBVVEYtOCIpKTsKK3wgICAgICAgICBeCit8IC4uLy4uL2xpYmlkbi0xLjMyL3NyYy9pZG4uYzo0OTg6NjogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCit8ICAgICAgIF8oImNvdWxkIG5vdCBjb252ZXJ0IGZyb20gVVRGLTggdG8gVUNTLTQiKSk7Cit8ICAgICAgIF4KK3wgLi4vLi4vbGliaWRuLTEuMzIvc3JjL2lkbi5jOjUyNzo1OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KK3wgICAgICBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVURi04IHRvIFVDUy00IikpOworfCAgICAgIF4KK3wgLi4vLi4vbGliaWRuLTEuMzIvc3JjL2lkbi5jOjU0MDo2OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KK3wgICAgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwgXygiY291bGQgbm90IGRvIE5GS0Mgbm9ybWFsaXphdGlvbiIpKTsKK3wgICAgICAgXn5+fn4KK3wgLi4vLi4vbGliaWRuLTEuMzIvc3JjL2lkbi5jOjU1MTo1OiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KK3wgICAgICBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVURi04IHRvIFVDUy00IikpOworfCAgICAgIF4KKworU2lnbmVkLW9mZi1ieTogQW5kcsOpIERyYXN6aWsgPGFkcmFzemlrQHR5Y29pbnQuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIHNyYy9pZG4uYyB8IDI3ICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9pZG4uYyBiL3NyYy9pZG4uYworaW5kZXggYmUxYzdkMS4uNjhlNDI5MSAxMDA2NDQKKy0tLSBhL3NyYy9pZG4uYworKysrIGIvc3JjL2lkbi5jCitAQCAtMTcwLDcgKzE3MCw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCisgICAgICAgKGFyZ3NfaW5mby5pZG5hX3RvX3VuaWNvZGVfZ2l2ZW4gPyAxIDogMCkgKworICAgICAgIChhcmdzX2luZm8ubmZrY19naXZlbiA/IDEgOiAwKSAhPSAxKQorICAgICB7CistICAgICAgZXJyb3IgKDAsIDAsIF8oIm9ubHkgb25lIG9mIC1zLCAtZSwgLWQsIC1hLCAtdSBvciAtbiBjYW4gYmUgc3BlY2lmaWVkIikpOworKyAgICAgIGVycm9yICgwLCAwLCAiJXMiLCBfKCJvbmx5IG9uZSBvZiAtcywgLWUsIC1kLCAtYSwgLXUgb3IgLW4gY2FuIGJlIHNwZWNpZmllZCIpKTsKKyAgICAgICB1c2FnZSAoRVhJVF9GQUlMVVJFKTsKKyAgICAgfQorIAorQEAgLTE4NSw3ICsxODUsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQorICAgaWYgKCFhcmdzX2luZm8ucXVpZXRfZ2l2ZW4KKyAgICAgICAmJiBhcmdzX2luZm8uaW5wdXRzX251bSA9PSAwCisgICAgICAgJiYgaXNhdHR5IChmaWxlbm8gKHN0ZGluKSkpCistICAgIGZwcmludGYgKHN0ZGVyciwgXygiVHlwZSBlYWNoIGlucHV0IHN0cmluZyBvbiBhIGxpbmUgYnkgaXRzZWxmLCAiCisrICAgIGZwcmludGYgKHN0ZGVyciwgIiVzIiwgXygiVHlwZSBlYWNoIGlucHV0IHN0cmluZyBvbiBhIGxpbmUgYnkgaXRzZWxmLCAiCisgCQkgICAgICAgInRlcm1pbmF0ZWQgYnkgYSBuZXdsaW5lIGNoYXJhY3Rlci5cbiIpKTsKKyAKKyAgIGRvCitAQCAtMTk3LDcgKzE5Nyw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCisgCSAgaWYgKGZlb2YgKHN0ZGluKSkKKyAJICAgIGJyZWFrOworIAorLQkgIGVycm9yIChFWElUX0ZBSUxVUkUsIGVycm5vLCBfKCJpbnB1dCBlcnJvciIpKTsKKysJICBlcnJvciAoRVhJVF9GQUlMVVJFLCBlcnJubywgIiVzIiwgXygiaW5wdXQgZXJyb3IiKSk7CisgCX0KKyAKKyAgICAgICBpZiAoc3RybGVuIChsaW5lKSA+IDApCitAQCAtMjE1LDcgKzIxNSw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCisgCSAgaWYgKCFxKQorIAkgICAgeworIAkgICAgICBmcmVlIChwKTsKKy0JICAgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwKKysJICAgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwgIiVzIiwKKyAJCSAgICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVVEYtOCB0byBVQ1MtNCIpKTsKKyAJICAgIH0KKyAKK0BAIC0yNDAsNyArMjQwLDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAJICBpZiAoIXEpCisgCSAgICB7CisgCSAgICAgIGZyZWUgKHIpOworLQkgICAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLAorKwkgICAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLCAiJXMiLAorIAkJICAgICBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVURi04IHRvIFVDUy00IikpOworIAkgICAgfQorIAorQEAgLTI3Nyw3ICsyNzcsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQorIAkgIHEgPSBzdHJpbmdwcmVwX3V0ZjhfdG9fdWNzNCAocCwgLTEsICZsZW4pOworIAkgIGZyZWUgKHApOworIAkgIGlmICghcSkKKy0JICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsCisrCSAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLCAiJXMiLAorIAkJICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVVEYtOCB0byBVQ1MtNCIpKTsKKyAKKyAJICBpZiAoYXJnc19pbmZvLmRlYnVnX2dpdmVuKQorQEAgLTMzNiw3ICszMzYsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQorIAkgIHIgPSBzdHJpbmdwcmVwX3VjczRfdG9fdXRmOCAocSwgLTEsIE5VTEwsIE5VTEwpOworIAkgIGZyZWUgKHEpOworIAkgIGlmICghcikKKy0JICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsCisrCSAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLCAiJXMiLAorIAkJICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVQ1MtNCB0byBVVEYtOCIpKTsKKyAKKyAJICBwID0gc3RyaW5ncHJlcF91dGY4X3RvX2xvY2FsZSAocik7CitAQCAtMzYwLDcgKzM2MCw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCisgCSAgcSA9IHN0cmluZ3ByZXBfdXRmOF90b191Y3M0IChwLCAtMSwgTlVMTCk7CisgCSAgZnJlZSAocCk7CisgCSAgaWYgKCFxKQorLQkgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwKKysJICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsICIlcyIsCisgCQkgICBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVDUy00IHRvIFVURi04IikpOworIAorIAkgIGlmIChhcmdzX2luZm8uZGVidWdfZ2l2ZW4pCitAQCAtNDM4LDcgKzQzOCw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCisgCSAgaWYgKCFxKQorIAkgICAgeworIAkgICAgICBmcmVlIChwKTsKKy0JICAgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwKKysJICAgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwgIiVzIiwKKyAJCSAgICAgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVQ1MtNCB0byBVVEYtOCIpKTsKKyAJICAgIH0KKyAKK0BAIC00OTQsNyArNDk0LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAJICByID0gc3RyaW5ncHJlcF91Y3M0X3RvX3V0ZjggKHEsIC0xLCBOVUxMLCBOVUxMKTsKKyAJICBmcmVlIChxKTsKKyAJICBpZiAoIXIpCistCSAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLAorKwkgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwgIiVzIiwKKyAJCSAgIF8oImNvdWxkIG5vdCBjb252ZXJ0IGZyb20gVVRGLTggdG8gVUNTLTQiKSk7CisgCisgCSAgcCA9IHN0cmluZ3ByZXBfdXRmOF90b19sb2NhbGUgKHIpOworQEAgLTUyMyw3ICs1MjMsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQorIAkgICAgICBpZiAoIXEpCisgCQl7CisgCQkgIGZyZWUgKHApOworLQkJICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLAorKwkJICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLCAiJXMiLAorIAkJCSBfKCJjb3VsZCBub3QgY29udmVydCBmcm9tIFVURi04IHRvIFVDUy00IikpOworIAkJfQorIAorQEAgLTUzNyw3ICs1MzcsOCBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQorIAkgIHIgPSBzdHJpbmdwcmVwX3V0ZjhfbmZrY19ub3JtYWxpemUgKHAsIC0xKTsKKyAJICBmcmVlIChwKTsKKyAJICBpZiAoIXIpCistCSAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCAwLCBfKCJjb3VsZCBub3QgZG8gTkZLQyBub3JtYWxpemF0aW9uIikpOworKwkgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwgIiVzIiwKKysJCSAgIF8oImNvdWxkIG5vdCBkbyBORktDIG5vcm1hbGl6YXRpb24iKSk7CisgCisgCSAgaWYgKGFyZ3NfaW5mby5kZWJ1Z19naXZlbikKKyAJICAgIHsKK0BAIC01NDcsNyArNTQ4LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAJICAgICAgaWYgKCFxKQorIAkJeworIAkJICBmcmVlIChyKTsKKy0JCSAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwKKysJCSAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwgIiVzIiwKKyAJCQkgXygiY291bGQgbm90IGNvbnZlcnQgZnJvbSBVVEYtOCB0byBVQ1MtNCIpKTsKKyAJCX0KKyAKKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuL2djYzctY29tcGF0aWJpbGl0eS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi9nY2M3LWNvbXBhdGliaWxpdHkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQ2YTZlYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi9nY2M3LWNvbXBhdGliaWxpdHkucGF0Y2gKQEAgLTAsMCArMSwzMzQgQEAKK0Zyb20gMjMwOTMwYjNiYzNlNDMxYjgxOWViNDU0MjBjYjQyNDc1ZDgzY2E5MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/dXRmOD9xP1RpbT0yMFI9QzM9QkNoc2VuPz0gPHRpbS5ydWVoc2VuQGdteC5kZT4KK0RhdGU6IFdlZCwgMSBGZWIgMjAxNyAxMDo0NDozNiArMDEwMAorU3ViamVjdDogW1BBVENIXSBVcGRhdGUgaW50cHJvcHMuaCBmb3IgZ2NjLTcgY29tcGF0aWJpbGl0eQorCistLS0KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKKyBnbC9pbnRwcm9wcy5oICAgICAgICAgIHwgNjUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBsaWIvZ2x0ZXN0cy9pbnRwcm9wcy5oIHwgNjUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDc4IGluc2VydGlvbnMoKyksIDUyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2wvaW50cHJvcHMuaCBiL2dsL2ludHByb3BzLmgKK2luZGV4IGUxZmNlNWMuLmViMDZiNjkgMTAwNjQ0CistLS0gYS9nbC9pbnRwcm9wcy5oCisrKysgYi9nbC9pbnRwcm9wcy5oCitAQCAtMSwxOCArMSwxOCBAQAorIC8qIGludHByb3BzLmggLS0gcHJvcGVydGllcyBvZiBpbnRlZ2VyIHR5cGVzCisgCistICAgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgCisgICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKy0gICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAorLSAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCisrICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgCisgICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysgICBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAKKy0gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKyAKKyAvKiBXcml0dGVuIGJ5IFBhdWwgRWdnZXJ0LiAgKi8KK0BAIC00NywxMiArNDcsMTYgQEAKKyAKKyAvKiBNaW5pbXVtIGFuZCBtYXhpbXVtIHZhbHVlcyBmb3IgaW50ZWdlciB0eXBlcyBhbmQgZXhwcmVzc2lvbnMuICAqLworIAorKy8qIFRoZSB3aWR0aCBpbiBiaXRzIG9mIHRoZSBpbnRlZ2VyIHR5cGUgb3IgZXhwcmVzc2lvbiBULgorKyAgIFBhZGRpbmcgYml0cyBhcmUgbm90IHN1cHBvcnRlZDsgdGhpcyBpcyBjaGVja2VkIGF0IGNvbXBpbGUtdGltZSBiZWxvdy4gICovCisrI2RlZmluZSBUWVBFX1dJRFRIKHQpIChzaXplb2YgKHQpICogQ0hBUl9CSVQpCisrCisgLyogVGhlIG1heGltdW0gYW5kIG1pbmltdW0gdmFsdWVzIGZvciB0aGUgaW50ZWdlciB0eXBlIFQuICAqLworICNkZWZpbmUgVFlQRV9NSU5JTVVNKHQpICgodCkgfiBUWVBFX01BWElNVU0gKHQpKQorICNkZWZpbmUgVFlQRV9NQVhJTVVNKHQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICgodCkgKCEgVFlQRV9TSUdORUQgKHQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICA/ICh0KSAtMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgOiAoKCgodCkgMSA8PCAoc2l6ZW9mICh0KSAqIENIQVJfQklUIC0gMikpIC0gMSkgKiAyICsgMSkpKQorKyAgICAgICAgOiAoKCgodCkgMSA8PCAoVFlQRV9XSURUSCAodCkgLSAyKSkgLSAxKSAqIDIgKyAxKSkpCisgCisgLyogVGhlIG1heGltdW0gYW5kIG1pbmltdW0gdmFsdWVzIGZvciB0aGUgdHlwZSBvZiB0aGUgZXhwcmVzc2lvbiBFLAorICAgIGFmdGVyIGludGVnZXIgcHJvbW90aW9uLiAgRSBzaG91bGQgbm90IGhhdmUgc2lkZSBlZmZlY3RzLiAgKi8KK0BAIC02NSw3ICs2OSwxMyBAQAorICAgID8gX0dMX1NJR05FRF9JTlRfTUFYSU1VTSAoZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICA6IF9HTF9JTlRfTkVHQVRFX0NPTlZFUlQgKGUsIDEpKQorICNkZWZpbmUgX0dMX1NJR05FRF9JTlRfTUFYSU1VTShlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICgoKF9HTF9JTlRfQ09OVkVSVCAoZSwgMSkgPDwgKHNpemVvZiAoKGUpICsgMCkgKiBDSEFSX0JJVCAtIDIpKSAtIDEpICogMiArIDEpCisrICAoKChfR0xfSU5UX0NPTlZFUlQgKGUsIDEpIDw8IChUWVBFX1dJRFRIICgoZSkgKyAwKSAtIDIpKSAtIDEpICogMiArIDEpCisrCisrLyogV29yayBhcm91bmQgT3BlblZNUyBpbmNvbXBhdGliaWxpdHkgd2l0aCBDOTkuICAqLworKyNpZiAhZGVmaW5lZCBMTE9OR19NQVggJiYgZGVmaW5lZCBfX0lOVDY0X01BWAorKyMgZGVmaW5lIExMT05HX01BWCBfX0lOVDY0X01BWAorKyMgZGVmaW5lIExMT05HX01JTiBfX0lOVDY0X01JTgorKyNlbmRpZgorIAorIC8qIFRoaXMgaW5jbHVkZSBmaWxlIGFzc3VtZXMgdGhhdCBzaWduZWQgdHlwZXMgYXJlIHR3bydzIGNvbXBsZW1lbnQgd2l0aG91dAorICAgIHBhZGRpbmcgYml0czsgdGhlIGFib3ZlIG1hY3JvcyBoYXZlIHVuZGVmaW5lZCBiZWhhdmlvciBvdGhlcndpc2UuCitAQCAtODQsMTAgKzk0LDE1IEBAIHZlcmlmeSAoVFlQRV9NQVhJTVVNIChsb25nIGludCkgPT0gTE9OR19NQVgpOworIHZlcmlmeSAoVFlQRV9NSU5JTVVNIChsb25nIGxvbmcgaW50KSA9PSBMTE9OR19NSU4pOworIHZlcmlmeSAoVFlQRV9NQVhJTVVNIChsb25nIGxvbmcgaW50KSA9PSBMTE9OR19NQVgpOworICNlbmRpZgorKy8qIFNpbWlsYXJseSwgc2FuaXR5LWNoZWNrIG9uZSBJU08vSUVDIFRTIDE4NjYxLTE6MjAxNCBtYWNybyBpZiBkZWZpbmVkLiAgKi8KKysjaWZkZWYgVUlOVF9XSURUSAorK3ZlcmlmeSAoVFlQRV9XSURUSCAodW5zaWduZWQgaW50KSA9PSBVSU5UX1dJRFRIKTsKKysjZW5kaWYKKyAKKyAvKiBEb2VzIHRoZSBfX3R5cGVvZl9fIGtleXdvcmQgd29yaz8gIFRoaXMgY291bGQgYmUgZG9uZSBieQorICAgICdjb25maWd1cmUnLCBidXQgZm9yIG5vdyBpdCdzIGVhc2llciB0byBkbyBpdCBieSBoYW5kLiAgKi8KKy0jaWYgKDIgPD0gX19HTlVDX18gfHwgZGVmaW5lZCBfX0lCTV9fVFlQRU9GX18gXAorKyNpZiAoMiA8PSBfX0dOVUNfXyBcCisrICAgICB8fCAoMTIxMCA8PSBfX0lCTUNfXyAmJiBkZWZpbmVkIF9fSUJNX19UWVBFT0ZfXykgXAorICAgICAgfHwgKDB4NTExMCA8PSBfX1NVTlBST19DICYmICFfX1NURENfXykpCisgIyBkZWZpbmUgX0dMX0hBVkVfX19UWVBFT0ZfXyAxCisgI2Vsc2UKK0BAIC0xMTYsOCArMTMxLDcgQEAgdmVyaWZ5IChUWVBFX01BWElNVU0gKGxvbmcgbG9uZyBpbnQpID09IExMT05HX01BWCk7CisgICAgc2lnbmVkLCB0aGlzIG1hY3JvIG1heSBvdmVyZXN0aW1hdGUgdGhlIHRydWUgYm91bmQgYnkgb25lIGJ5dGUgd2hlbgorICAgIGFwcGxpZWQgdG8gdW5zaWduZWQgdHlwZXMgb2Ygc2l6ZSAyLCA0LCAxNiwgLi4uIGJ5dGVzLiAgKi8KKyAjZGVmaW5lIElOVF9TVFJMRU5fQk9VTkQodCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgKElOVF9CSVRTX1NUUkxFTl9CT1VORCAoc2l6ZW9mICh0KSAqIENIQVJfQklUICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgICAgICAgICAgICAtIF9HTF9TSUdORURfVFlQRV9PUl9FWFBSICh0KSkgICAgICAgIFwKKysgIChJTlRfQklUU19TVFJMRU5fQk9VTkQgKFRZUEVfV0lEVEggKHQpIC0gX0dMX1NJR05FRF9UWVBFX09SX0VYUFIgKHQpKSBcCisgICAgKyBfR0xfU0lHTkVEX1RZUEVfT1JfRVhQUiAodCkpCisgCisgLyogQm91bmQgb24gYnVmZmVyIHNpemUgbmVlZGVkIHRvIHJlcHJlc2VudCBhbiBpbnRlZ2VyIHR5cGUgb3IgZXhwcmVzc2lvbiBULAorQEAgLTIyMiwyMCArMjM2LDIzIEBAIHZlcmlmeSAoVFlQRV9NQVhJTVVNIChsb25nIGxvbmcgaW50KSA9PSBMTE9OR19NQVgpOworICAgID8gKGEpIDwgKG1pbikgPj4gKGIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIDogKG1heCkgPj4gKGIpIDwgKGEpKQorIAorLS8qIFRydWUgaWYgX19idWlsdGluX2FkZF9vdmVyZmxvdyAoQSwgQiwgUCkgd29ya3Mgd2hlbiBQIGlzIG51bGwuICAqLworLSNkZWZpbmUgX0dMX0hBU19CVUlMVElOX09WRVJGTE9XX1dJVEhfTlVMTCAoNyA8PSBfX0dOVUNfXykKKysvKiBUcnVlIGlmIF9fYnVpbHRpbl9hZGRfb3ZlcmZsb3cgKEEsIEIsIFApIHdvcmtzIHdoZW4gUCBpcyBub24tbnVsbC4gICovCisrI2RlZmluZSBfR0xfSEFTX0JVSUxUSU5fT1ZFUkZMT1cgKDUgPD0gX19HTlVDX18pCisrCisrLyogVHJ1ZSBpZiBfX2J1aWx0aW5fYWRkX292ZXJmbG93X3AgKEEsIEIsIEMpIHdvcmtzLiAgKi8KKysjZGVmaW5lIF9HTF9IQVNfQlVJTFRJTl9PVkVSRkxPV19QICg3IDw9IF9fR05VQ19fKQorIAorIC8qIFRoZSBfR0wqX09WRVJGTE9XIG1hY3JvcyBoYXZlIHRoZSBzYW1lIHJlc3RyaWN0aW9ucyBhcyB0aGUKKyAgICAqX1JBTkdFX09WRVJGTE9XIG1hY3JvcywgZXhjZXB0IHRoYXQgdGhleSBkbyBub3QgYXNzdW1lIHRoYXQgb3BlcmFuZHMKKyAgICAoZS5nLiwgQSBhbmQgQikgaGF2ZSB0aGUgc2FtZSB0eXBlIGFzIE1JTiBhbmQgTUFYLiAgSW5zdGVhZCwgdGhleSBhc3N1bWUKKyAgICB0aGF0IHRoZSByZXN1bHQgKGUuZy4sIEEgKyBCKSBoYXMgdGhhdCB0eXBlLiAgKi8KKy0jaWYgX0dMX0hBU19CVUlMVElOX09WRVJGTE9XX1dJVEhfTlVMTAorLSMgZGVmaW5lIF9HTF9BRERfT1ZFUkZMT1coYSwgYiwgbWluLCBtYXgpCistICAgX19idWlsdGluX2FkZF9vdmVyZmxvdyAoYSwgYiwgKF9fdHlwZW9mX18gKChhKSArIChiKSkgKikgMCkKKy0jIGRlZmluZSBfR0xfU1VCVFJBQ1RfT1ZFUkZMT1coYSwgYiwgbWluLCBtYXgpCistICAgX19idWlsdGluX3N1Yl9vdmVyZmxvdyAoYSwgYiwgKF9fdHlwZW9mX18gKChhKSAtIChiKSkgKikgMCkKKy0jIGRlZmluZSBfR0xfTVVMVElQTFlfT1ZFUkZMT1coYSwgYiwgbWluLCBtYXgpCistICAgX19idWlsdGluX211bF9vdmVyZmxvdyAoYSwgYiwgKF9fdHlwZW9mX18gKChhKSAqIChiKSkgKikgMCkKKysjaWYgX0dMX0hBU19CVUlMVElOX09WRVJGTE9XX1AKKysjIGRlZmluZSBfR0xfQUREX09WRVJGTE9XKGEsIGIsIG1pbiwgbWF4KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgX19idWlsdGluX2FkZF9vdmVyZmxvd19wIChhLCBiLCAoX190eXBlb2ZfXyAoKGEpICsgKGIpKSkgMCkKKysjIGRlZmluZSBfR0xfU1VCVFJBQ1RfT1ZFUkZMT1coYSwgYiwgbWluLCBtYXgpICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgX19idWlsdGluX3N1Yl9vdmVyZmxvd19wIChhLCBiLCAoX190eXBlb2ZfXyAoKGEpIC0gKGIpKSkgMCkKKysjIGRlZmluZSBfR0xfTVVMVElQTFlfT1ZFUkZMT1coYSwgYiwgbWluLCBtYXgpICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgX19idWlsdGluX211bF9vdmVyZmxvd19wIChhLCBiLCAoX190eXBlb2ZfXyAoKGEpICogKGIpKSkgMCkKKyAjZWxzZQorICMgZGVmaW5lIF9HTF9BRERfT1ZFUkZMT1coYSwgYiwgbWluLCBtYXgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKChtaW4pIDwgMCA/IElOVF9BRERfUkFOR0VfT1ZFUkZMT1cgKGEsIGIsIG1pbiwgbWF4KSAgICAgICAgICAgICAgICAgIFwKK0BAIC0zMTUsNyArMzMyLDcgQEAgdmVyaWZ5IChUWVBFX01BWElNVU0gKGxvbmcgbG9uZyBpbnQpID09IExMT05HX01BWCk7CisgICBfR0xfQklOQVJZX09QX09WRVJGTE9XIChhLCBiLCBfR0xfQUREX09WRVJGTE9XKQorICNkZWZpbmUgSU5UX1NVQlRSQUNUX09WRVJGTE9XKGEsIGIpIFwKKyAgIF9HTF9CSU5BUllfT1BfT1ZFUkZMT1cgKGEsIGIsIF9HTF9TVUJUUkFDVF9PVkVSRkxPVykKKy0jaWYgX0dMX0hBU19CVUlMVElOX09WRVJGTE9XX1dJVEhfTlVMTAorKyNpZiBfR0xfSEFTX0JVSUxUSU5fT1ZFUkZMT1dfUAorICMgZGVmaW5lIElOVF9ORUdBVEVfT1ZFUkZMT1coYSkgSU5UX1NVQlRSQUNUX09WRVJGTE9XICgwLCBhKQorICNlbHNlCisgIyBkZWZpbmUgSU5UX05FR0FURV9PVkVSRkxPVyhhKSBcCitAQCAtMzQ5LDEwICszNjYsNiBAQCB2ZXJpZnkgKFRZUEVfTUFYSU1VTSAobG9uZyBsb25nIGludCkgPT0gTExPTkdfTUFYKTsKKyAjZGVmaW5lIElOVF9NVUxUSVBMWV9XUkFQVihhLCBiLCByKSBcCisgICBfR0xfSU5UX09QX1dSQVBWIChhLCBiLCByLCAqLCBfX2J1aWx0aW5fbXVsX292ZXJmbG93LCBJTlRfTVVMVElQTFlfT1ZFUkZMT1cpCisgCistI2lmbmRlZiBfX2hhc19idWlsdGluCistIyBkZWZpbmUgX19oYXNfYnVpbHRpbih4KSAwCistI2VuZGlmCistCisgLyogTm9uemVybyBpZiB0aGlzIGNvbXBpbGVyIGhhcyBHQ0MgYnVnIDY4MTkzIG9yIENsYW5nIGJ1ZyAyNTM5MC4gIFNlZToKKyAgICBodHRwczovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD02ODE5MworICAgIGh0dHBzOi8vbGx2bS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9MjUzOTAKK0BAIC0zNjksNyArMzgyLDcgQEAgdmVyaWZ5IChUWVBFX01BWElNVU0gKGxvbmcgbG9uZyBpbnQpID09IExMT05HX01BWCk7CisgICAgdGhlIG9wZXJhdGlvbi4gIEJVSUxUSU4gaXMgdGhlIGJ1aWx0aW4gb3BlcmF0aW9uLCBhbmQgT1ZFUkZMT1cgdGhlCisgICAgb3ZlcmZsb3cgcHJlZGljYXRlLiAgUmV0dXJuIDEgaWYgdGhlIHJlc3VsdCBvdmVyZmxvd3MuICBTZWUgYWJvdmUKKyAgICBmb3IgcmVzdHJpY3Rpb25zLiAgKi8KKy0jaWYgNSA8PSBfX0dOVUNfXyB8fCBfX2hhc19idWlsdGluIChfX2J1aWx0aW5fYWRkX292ZXJmbG93KQorKyNpZiBfR0xfSEFTX0JVSUxUSU5fT1ZFUkZMT1cKKyAjIGRlZmluZSBfR0xfSU5UX09QX1dSQVBWKGEsIGIsIHIsIG9wLCBidWlsdGluLCBvdmVyZmxvdykgYnVpbHRpbiAoYSwgYiwgcikKKyAjZWxpZiAyMDExMTIgPD0gX19TVERDX1ZFUlNJT05fXyAmJiAhX0dMX19HRU5FUklDX0JPR1VTCisgIyBkZWZpbmUgX0dMX0lOVF9PUF9XUkFQVihhLCBiLCByLCBvcCwgYnVpbHRpbiwgb3ZlcmZsb3cpIFwKK0BAIC00MTIsNyArNDI1LDcgQEAgdmVyaWZ5IChUWVBFX01BWElNVU0gKGxvbmcgbG9uZyBpbnQpID09IExMT05HX01BWCk7CisgIyBlbHNlCisgIyAgZGVmaW5lIF9HTF9JTlRfT1BfV1JBUFZfTE9OR0lTSChhLCBiLCByLCBvcCwgb3ZlcmZsb3cpIFwKKyAgICAgX0dMX0lOVF9PUF9DQUxDIChhLCBiLCByLCBvcCwgb3ZlcmZsb3csIHVuc2lnbmVkIGxvbmcgaW50LCBcCistICAgICAgICAgICAgICAgICAgICAgbG9uZyBpbnQsIExPTkdfTUlOLCBMT05HX01BWCkpCisrICAgICAgICAgICAgICAgICAgICAgbG9uZyBpbnQsIExPTkdfTUlOLCBMT05HX01BWCkKKyAjIGVuZGlmCisgI2VuZGlmCisgCitkaWZmIC0tZ2l0IGEvbGliL2dsdGVzdHMvaW50cHJvcHMuaCBiL2xpYi9nbHRlc3RzL2ludHByb3BzLmgKK2luZGV4IGUxZmNlNWMuLmViMDZiNjkgMTAwNjQ0CistLS0gYS9saWIvZ2x0ZXN0cy9pbnRwcm9wcy5oCisrKysgYi9saWIvZ2x0ZXN0cy9pbnRwcm9wcy5oCitAQCAtMSwxOCArMSwxOCBAQAorIC8qIGludHByb3BzLmggLS0gcHJvcGVydGllcyBvZiBpbnRlZ2VyIHR5cGVzCisgCistICAgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgCisgICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKy0gICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAorLSAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCisrICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgCisgICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysgICBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAKKy0gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKyAKKyAvKiBXcml0dGVuIGJ5IFBhdWwgRWdnZXJ0LiAgKi8KK0BAIC00NywxMiArNDcsMTYgQEAKKyAKKyAvKiBNaW5pbXVtIGFuZCBtYXhpbXVtIHZhbHVlcyBmb3IgaW50ZWdlciB0eXBlcyBhbmQgZXhwcmVzc2lvbnMuICAqLworIAorKy8qIFRoZSB3aWR0aCBpbiBiaXRzIG9mIHRoZSBpbnRlZ2VyIHR5cGUgb3IgZXhwcmVzc2lvbiBULgorKyAgIFBhZGRpbmcgYml0cyBhcmUgbm90IHN1cHBvcnRlZDsgdGhpcyBpcyBjaGVja2VkIGF0IGNvbXBpbGUtdGltZSBiZWxvdy4gICovCisrI2RlZmluZSBUWVBFX1dJRFRIKHQpIChzaXplb2YgKHQpICogQ0hBUl9CSVQpCisrCisgLyogVGhlIG1heGltdW0gYW5kIG1pbmltdW0gdmFsdWVzIGZvciB0aGUgaW50ZWdlciB0eXBlIFQuICAqLworICNkZWZpbmUgVFlQRV9NSU5JTVVNKHQpICgodCkgfiBUWVBFX01BWElNVU0gKHQpKQorICNkZWZpbmUgVFlQRV9NQVhJTVVNKHQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICgodCkgKCEgVFlQRV9TSUdORUQgKHQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICA/ICh0KSAtMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgICAgICAgOiAoKCgodCkgMSA8PCAoc2l6ZW9mICh0KSAqIENIQVJfQklUIC0gMikpIC0gMSkgKiAyICsgMSkpKQorKyAgICAgICAgOiAoKCgodCkgMSA8PCAoVFlQRV9XSURUSCAodCkgLSAyKSkgLSAxKSAqIDIgKyAxKSkpCisgCisgLyogVGhlIG1heGltdW0gYW5kIG1pbmltdW0gdmFsdWVzIGZvciB0aGUgdHlwZSBvZiB0aGUgZXhwcmVzc2lvbiBFLAorICAgIGFmdGVyIGludGVnZXIgcHJvbW90aW9uLiAgRSBzaG91bGQgbm90IGhhdmUgc2lkZSBlZmZlY3RzLiAgKi8KK0BAIC02NSw3ICs2OSwxMyBAQAorICAgID8gX0dMX1NJR05FRF9JTlRfTUFYSU1VTSAoZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICA6IF9HTF9JTlRfTkVHQVRFX0NPTlZFUlQgKGUsIDEpKQorICNkZWZpbmUgX0dMX1NJR05FRF9JTlRfTUFYSU1VTShlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy0gICgoKF9HTF9JTlRfQ09OVkVSVCAoZSwgMSkgPDwgKHNpemVvZiAoKGUpICsgMCkgKiBDSEFSX0JJVCAtIDIpKSAtIDEpICogMiArIDEpCisrICAoKChfR0xfSU5UX0NPTlZFUlQgKGUsIDEpIDw8IChUWVBFX1dJRFRIICgoZSkgKyAwKSAtIDIpKSAtIDEpICogMiArIDEpCisrCisrLyogV29yayBhcm91bmQgT3BlblZNUyBpbmNvbXBhdGliaWxpdHkgd2l0aCBDOTkuICAqLworKyNpZiAhZGVmaW5lZCBMTE9OR19NQVggJiYgZGVmaW5lZCBfX0lOVDY0X01BWAorKyMgZGVmaW5lIExMT05HX01BWCBfX0lOVDY0X01BWAorKyMgZGVmaW5lIExMT05HX01JTiBfX0lOVDY0X01JTgorKyNlbmRpZgorIAorIC8qIFRoaXMgaW5jbHVkZSBmaWxlIGFzc3VtZXMgdGhhdCBzaWduZWQgdHlwZXMgYXJlIHR3bydzIGNvbXBsZW1lbnQgd2l0aG91dAorICAgIHBhZGRpbmcgYml0czsgdGhlIGFib3ZlIG1hY3JvcyBoYXZlIHVuZGVmaW5lZCBiZWhhdmlvciBvdGhlcndpc2UuCitAQCAtODQsMTAgKzk0LDE1IEBAIHZlcmlmeSAoVFlQRV9NQVhJTVVNIChsb25nIGludCkgPT0gTE9OR19NQVgpOworIHZlcmlmeSAoVFlQRV9NSU5JTVVNIChsb25nIGxvbmcgaW50KSA9PSBMTE9OR19NSU4pOworIHZlcmlmeSAoVFlQRV9NQVhJTVVNIChsb25nIGxvbmcgaW50KSA9PSBMTE9OR19NQVgpOworICNlbmRpZgorKy8qIFNpbWlsYXJseSwgc2FuaXR5LWNoZWNrIG9uZSBJU08vSUVDIFRTIDE4NjYxLTE6MjAxNCBtYWNybyBpZiBkZWZpbmVkLiAgKi8KKysjaWZkZWYgVUlOVF9XSURUSAorK3ZlcmlmeSAoVFlQRV9XSURUSCAodW5zaWduZWQgaW50KSA9PSBVSU5UX1dJRFRIKTsKKysjZW5kaWYKKyAKKyAvKiBEb2VzIHRoZSBfX3R5cGVvZl9fIGtleXdvcmQgd29yaz8gIFRoaXMgY291bGQgYmUgZG9uZSBieQorICAgICdjb25maWd1cmUnLCBidXQgZm9yIG5vdyBpdCdzIGVhc2llciB0byBkbyBpdCBieSBoYW5kLiAgKi8KKy0jaWYgKDIgPD0gX19HTlVDX18gfHwgZGVmaW5lZCBfX0lCTV9fVFlQRU9GX18gXAorKyNpZiAoMiA8PSBfX0dOVUNfXyBcCisrICAgICB8fCAoMTIxMCA8PSBfX0lCTUNfXyAmJiBkZWZpbmVkIF9fSUJNX19UWVBFT0ZfXykgXAorICAgICAgfHwgKDB4NTExMCA8PSBfX1NVTlBST19DICYmICFfX1NURENfXykpCisgIyBkZWZpbmUgX0dMX0hBVkVfX19UWVBFT0ZfXyAxCisgI2Vsc2UKK0BAIC0xMTYsOCArMTMxLDcgQEAgdmVyaWZ5IChUWVBFX01BWElNVU0gKGxvbmcgbG9uZyBpbnQpID09IExMT05HX01BWCk7CisgICAgc2lnbmVkLCB0aGlzIG1hY3JvIG1heSBvdmVyZXN0aW1hdGUgdGhlIHRydWUgYm91bmQgYnkgb25lIGJ5dGUgd2hlbgorICAgIGFwcGxpZWQgdG8gdW5zaWduZWQgdHlwZXMgb2Ygc2l6ZSAyLCA0LCAxNiwgLi4uIGJ5dGVzLiAgKi8KKyAjZGVmaW5lIElOVF9TVFJMRU5fQk9VTkQodCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorLSAgKElOVF9CSVRTX1NUUkxFTl9CT1VORCAoc2l6ZW9mICh0KSAqIENIQVJfQklUICAgICAgICAgICAgICAgICBcCistICAgICAgICAgICAgICAgICAgICAgICAgICAtIF9HTF9TSUdORURfVFlQRV9PUl9FWFBSICh0KSkgICAgICAgIFwKKysgIChJTlRfQklUU19TVFJMRU5fQk9VTkQgKFRZUEVfV0lEVEggKHQpIC0gX0dMX1NJR05FRF9UWVBFX09SX0VYUFIgKHQpKSBcCisgICAgKyBfR0xfU0lHTkVEX1RZUEVfT1JfRVhQUiAodCkpCisgCisgLyogQm91bmQgb24gYnVmZmVyIHNpemUgbmVlZGVkIHRvIHJlcHJlc2VudCBhbiBpbnRlZ2VyIHR5cGUgb3IgZXhwcmVzc2lvbiBULAorQEAgLTIyMiwyMCArMjM2LDIzIEBAIHZlcmlmeSAoVFlQRV9NQVhJTVVNIChsb25nIGxvbmcgaW50KSA9PSBMTE9OR19NQVgpOworICAgID8gKGEpIDwgKG1pbikgPj4gKGIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIDogKG1heCkgPj4gKGIpIDwgKGEpKQorIAorLS8qIFRydWUgaWYgX19idWlsdGluX2FkZF9vdmVyZmxvdyAoQSwgQiwgUCkgd29ya3Mgd2hlbiBQIGlzIG51bGwuICAqLworLSNkZWZpbmUgX0dMX0hBU19CVUlMVElOX09WRVJGTE9XX1dJVEhfTlVMTCAoNyA8PSBfX0dOVUNfXykKKysvKiBUcnVlIGlmIF9fYnVpbHRpbl9hZGRfb3ZlcmZsb3cgKEEsIEIsIFApIHdvcmtzIHdoZW4gUCBpcyBub24tbnVsbC4gICovCisrI2RlZmluZSBfR0xfSEFTX0JVSUxUSU5fT1ZFUkZMT1cgKDUgPD0gX19HTlVDX18pCisrCisrLyogVHJ1ZSBpZiBfX2J1aWx0aW5fYWRkX292ZXJmbG93X3AgKEEsIEIsIEMpIHdvcmtzLiAgKi8KKysjZGVmaW5lIF9HTF9IQVNfQlVJTFRJTl9PVkVSRkxPV19QICg3IDw9IF9fR05VQ19fKQorIAorIC8qIFRoZSBfR0wqX09WRVJGTE9XIG1hY3JvcyBoYXZlIHRoZSBzYW1lIHJlc3RyaWN0aW9ucyBhcyB0aGUKKyAgICAqX1JBTkdFX09WRVJGTE9XIG1hY3JvcywgZXhjZXB0IHRoYXQgdGhleSBkbyBub3QgYXNzdW1lIHRoYXQgb3BlcmFuZHMKKyAgICAoZS5nLiwgQSBhbmQgQikgaGF2ZSB0aGUgc2FtZSB0eXBlIGFzIE1JTiBhbmQgTUFYLiAgSW5zdGVhZCwgdGhleSBhc3N1bWUKKyAgICB0aGF0IHRoZSByZXN1bHQgKGUuZy4sIEEgKyBCKSBoYXMgdGhhdCB0eXBlLiAgKi8KKy0jaWYgX0dMX0hBU19CVUlMVElOX09WRVJGTE9XX1dJVEhfTlVMTAorLSMgZGVmaW5lIF9HTF9BRERfT1ZFUkZMT1coYSwgYiwgbWluLCBtYXgpCistICAgX19idWlsdGluX2FkZF9vdmVyZmxvdyAoYSwgYiwgKF9fdHlwZW9mX18gKChhKSArIChiKSkgKikgMCkKKy0jIGRlZmluZSBfR0xfU1VCVFJBQ1RfT1ZFUkZMT1coYSwgYiwgbWluLCBtYXgpCistICAgX19idWlsdGluX3N1Yl9vdmVyZmxvdyAoYSwgYiwgKF9fdHlwZW9mX18gKChhKSAtIChiKSkgKikgMCkKKy0jIGRlZmluZSBfR0xfTVVMVElQTFlfT1ZFUkZMT1coYSwgYiwgbWluLCBtYXgpCistICAgX19idWlsdGluX211bF9vdmVyZmxvdyAoYSwgYiwgKF9fdHlwZW9mX18gKChhKSAqIChiKSkgKikgMCkKKysjaWYgX0dMX0hBU19CVUlMVElOX09WRVJGTE9XX1AKKysjIGRlZmluZSBfR0xfQUREX09WRVJGTE9XKGEsIGIsIG1pbiwgbWF4KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgX19idWlsdGluX2FkZF9vdmVyZmxvd19wIChhLCBiLCAoX190eXBlb2ZfXyAoKGEpICsgKGIpKSkgMCkKKysjIGRlZmluZSBfR0xfU1VCVFJBQ1RfT1ZFUkZMT1coYSwgYiwgbWluLCBtYXgpICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgX19idWlsdGluX3N1Yl9vdmVyZmxvd19wIChhLCBiLCAoX190eXBlb2ZfXyAoKGEpIC0gKGIpKSkgMCkKKysjIGRlZmluZSBfR0xfTVVMVElQTFlfT1ZFUkZMT1coYSwgYiwgbWluLCBtYXgpICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgX19idWlsdGluX211bF9vdmVyZmxvd19wIChhLCBiLCAoX190eXBlb2ZfXyAoKGEpICogKGIpKSkgMCkKKyAjZWxzZQorICMgZGVmaW5lIF9HTF9BRERfT1ZFUkZMT1coYSwgYiwgbWluLCBtYXgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKChtaW4pIDwgMCA/IElOVF9BRERfUkFOR0VfT1ZFUkZMT1cgKGEsIGIsIG1pbiwgbWF4KSAgICAgICAgICAgICAgICAgIFwKK0BAIC0zMTUsNyArMzMyLDcgQEAgdmVyaWZ5IChUWVBFX01BWElNVU0gKGxvbmcgbG9uZyBpbnQpID09IExMT05HX01BWCk7CisgICBfR0xfQklOQVJZX09QX09WRVJGTE9XIChhLCBiLCBfR0xfQUREX09WRVJGTE9XKQorICNkZWZpbmUgSU5UX1NVQlRSQUNUX09WRVJGTE9XKGEsIGIpIFwKKyAgIF9HTF9CSU5BUllfT1BfT1ZFUkZMT1cgKGEsIGIsIF9HTF9TVUJUUkFDVF9PVkVSRkxPVykKKy0jaWYgX0dMX0hBU19CVUlMVElOX09WRVJGTE9XX1dJVEhfTlVMTAorKyNpZiBfR0xfSEFTX0JVSUxUSU5fT1ZFUkZMT1dfUAorICMgZGVmaW5lIElOVF9ORUdBVEVfT1ZFUkZMT1coYSkgSU5UX1NVQlRSQUNUX09WRVJGTE9XICgwLCBhKQorICNlbHNlCisgIyBkZWZpbmUgSU5UX05FR0FURV9PVkVSRkxPVyhhKSBcCitAQCAtMzQ5LDEwICszNjYsNiBAQCB2ZXJpZnkgKFRZUEVfTUFYSU1VTSAobG9uZyBsb25nIGludCkgPT0gTExPTkdfTUFYKTsKKyAjZGVmaW5lIElOVF9NVUxUSVBMWV9XUkFQVihhLCBiLCByKSBcCisgICBfR0xfSU5UX09QX1dSQVBWIChhLCBiLCByLCAqLCBfX2J1aWx0aW5fbXVsX292ZXJmbG93LCBJTlRfTVVMVElQTFlfT1ZFUkZMT1cpCisgCistI2lmbmRlZiBfX2hhc19idWlsdGluCistIyBkZWZpbmUgX19oYXNfYnVpbHRpbih4KSAwCistI2VuZGlmCistCisgLyogTm9uemVybyBpZiB0aGlzIGNvbXBpbGVyIGhhcyBHQ0MgYnVnIDY4MTkzIG9yIENsYW5nIGJ1ZyAyNTM5MC4gIFNlZToKKyAgICBodHRwczovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD02ODE5MworICAgIGh0dHBzOi8vbGx2bS5vcmcvYnVncy9zaG93X2J1Zy5jZ2k/aWQ9MjUzOTAKK0BAIC0zNjksNyArMzgyLDcgQEAgdmVyaWZ5IChUWVBFX01BWElNVU0gKGxvbmcgbG9uZyBpbnQpID09IExMT05HX01BWCk7CisgICAgdGhlIG9wZXJhdGlvbi4gIEJVSUxUSU4gaXMgdGhlIGJ1aWx0aW4gb3BlcmF0aW9uLCBhbmQgT1ZFUkZMT1cgdGhlCisgICAgb3ZlcmZsb3cgcHJlZGljYXRlLiAgUmV0dXJuIDEgaWYgdGhlIHJlc3VsdCBvdmVyZmxvd3MuICBTZWUgYWJvdmUKKyAgICBmb3IgcmVzdHJpY3Rpb25zLiAgKi8KKy0jaWYgNSA8PSBfX0dOVUNfXyB8fCBfX2hhc19idWlsdGluIChfX2J1aWx0aW5fYWRkX292ZXJmbG93KQorKyNpZiBfR0xfSEFTX0JVSUxUSU5fT1ZFUkZMT1cKKyAjIGRlZmluZSBfR0xfSU5UX09QX1dSQVBWKGEsIGIsIHIsIG9wLCBidWlsdGluLCBvdmVyZmxvdykgYnVpbHRpbiAoYSwgYiwgcikKKyAjZWxpZiAyMDExMTIgPD0gX19TVERDX1ZFUlNJT05fXyAmJiAhX0dMX19HRU5FUklDX0JPR1VTCisgIyBkZWZpbmUgX0dMX0lOVF9PUF9XUkFQVihhLCBiLCByLCBvcCwgYnVpbHRpbiwgb3ZlcmZsb3cpIFwKK0BAIC00MTIsNyArNDI1LDcgQEAgdmVyaWZ5IChUWVBFX01BWElNVU0gKGxvbmcgbG9uZyBpbnQpID09IExMT05HX01BWCk7CisgIyBlbHNlCisgIyAgZGVmaW5lIF9HTF9JTlRfT1BfV1JBUFZfTE9OR0lTSChhLCBiLCByLCBvcCwgb3ZlcmZsb3cpIFwKKyAgICAgX0dMX0lOVF9PUF9DQUxDIChhLCBiLCByLCBvcCwgb3ZlcmZsb3csIHVuc2lnbmVkIGxvbmcgaW50LCBcCistICAgICAgICAgICAgICAgICAgICAgbG9uZyBpbnQsIExPTkdfTUlOLCBMT05HX01BWCkpCisrICAgICAgICAgICAgICAgICAgICAgbG9uZyBpbnQsIExPTkdfTUlOLCBMT05HX01BWCkKKyAjIGVuZGlmCisgI2VuZGlmCisgCistLSAKKzEuOS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbl8xLjMzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuXzEuMzMuYmIKaW5kZXggZDNkMGY1NS4uOWU4YmRiYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuXzEuMzMuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuXzEuMzMuYmIKQEAgLTE5LDYgKzE5LDggQEAKICAgICAgICAgICAgZmlsZTovL2F2b2lkX0FNX1BST0dfTUtESVJfUF93YXJuaW5nX2Vycm9yX3dpdGhfYXV0b21ha2VfMS4xMi5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9kb250LWRlcGVuZC1vbi1oZWxwMm1hbi5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWlkbi1maXgtcHJpbnRmLWZvcm1hdC1zZWN1cml0eS13YXJuaW5ncy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9nY2M3LWNvbXBhdGliaWxpdHkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1pZG4tZm9ybWF0LXNlY3VyaXR5LXdhcm5pbmdzLnBhdGNoIFwKICIKIAogU1JDX1VSSVttZDVzdW1dID0gImE5YWE3ZTAwMzY2NWRlOWM4MmJkM2Y5ZmM2Y2NmMzA4IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJtbmwvbGlibW5sXzEuMC40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJtbmwvbGlibW5sXzEuMC40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0NTg3OTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYm1ubC9saWJtbmxfMS4wLjQuYmIKQEAgLTAsMCArMSwxMyBAQAorU1VNTUFSWSA9ICJNaW5pbWFsaXN0aWMgdXNlci1zcGFjZSBOZXRsaW5rIHV0aWxpdHkgbGlicmFyeSIKK0RFU0NSSVBUSU9OID0gIk1pbmltYWxpc3RpYyB1c2VyLXNwYWNlIGxpYnJhcnkgb3JpZW50ZWQgdG8gTmV0bGluayBkZXZlbG9wZXJzLCBwcm92aWRpbmcgXAorICAgIGZ1bmN0aW9ucyBmb3IgY29tbW9uIHRhc2tzIGluIHBhcnNpbmcsIHZhbGlkYXRpbmcsIGFuZCBjb25zdHJ1Y3RpbmcgYm90aCB0aGUgTmV0bGluayBoZWFkZXIgYW5kIFRMVnMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5uZXRmaWx0ZXIub3JnL3Byb2plY3RzL2xpYm1ubC9pbmRleC5odG1sIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJMR1BMdjIuMSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm5ldGZpbHRlci5vcmcvcHJvamVjdHMvbGlibW5sL2ZpbGVzL2xpYm1ubC0ke1BWfS50YXIuYnoyO25hbWU9dGFyIgorU1JDX1VSSVt0YXIubWQ1c3VtXSA9ICJiZTliNGI1MzI4YzZkYTFiZGE1NjVhYzVkZmZhZGIyZCIKK1NSQ19VUklbdGFyLnNoYTI1NnN1bV0gPSAiMTcxZjg5Njk5ZjI4NmE1ODU0YjcyYjkxZDA2ZThmOGUzNjgzMDY0YzU5MDFmYjA5ZDk1NGE5YWI2ZjU1MWY4MSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYm5zbC9saWJuc2wyLzAwMDEtaW5jbHVkZS1zeXMtY2RlZnMuaC1leHBsaWNpdGx5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJuc2wvbGlibnNsMi8wMDAxLWluY2x1ZGUtc3lzLWNkZWZzLmgtZXhwbGljaXRseS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZDY0N2FjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJuc2wvbGlibnNsMi8wMDAxLWluY2x1ZGUtc3lzLWNkZWZzLmgtZXhwbGljaXRseS5wYXRjaApAQCAtMCwwICsxLDY4IEBACitGcm9tIDUwOGEwZmY2OTBkZmViYzE3YzRmNTVhNWY4MTgyNGVkNTQ5YmVkNjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVHVlLCAxOCBBcHIgMjAxNyAwOToxMzozMyAtMDcwMAorU3ViamVjdDogW1BBVENIIDEvMl0gaW5jbHVkZSBzeXMvY2RlZnMuaCBleHBsaWNpdGx5CisKK2dsaWJjIGluY2x1ZGVzIHRoaXMgaGVhZGVyIGluZGlyZWN0bHkgYnV0IG5vdCBtdXNsCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgc3JjL3JwY3N2Yy9uaXMuaCAgICB8IDEgKworIHNyYy9ycGNzdmMvbmlzbGliLmggfCAxICsKKyBzcmMvcnBjc3ZjL3lwY2xudC5oIHwgMSArCisgc3JjL3JwY3N2Yy95cHVwZC5oICB8IDEgKworIDQgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvcnBjc3ZjL25pcy5oIGIvc3JjL3JwY3N2Yy9uaXMuaAoraW5kZXggOTMzYzRkOS4uODhjYmNhMCAxMDA2NDQKKy0tLSBhL3NyYy9ycGNzdmMvbmlzLmgKKysrKyBiL3NyYy9ycGNzdmMvbmlzLmgKK0BAIC0zMiw2ICszMiw3IEBACisgI2lmbmRlZiBfUlBDU1ZDX05JU19ICisgI2RlZmluZSBfUlBDU1ZDX05JU19IIDEKKyAKKysjaW5jbHVkZSA8c3lzL2NkZWZzLmg+CisgI2luY2x1ZGUgPGZlYXR1cmVzLmg+CisgI2luY2x1ZGUgPHJwYy9ycGMuaD4KKyAjaW5jbHVkZSA8cnBjc3ZjL25pc190YWdzLmg+CitkaWZmIC0tZ2l0IGEvc3JjL3JwY3N2Yy9uaXNsaWIuaCBiL3NyYy9ycGNzdmMvbmlzbGliLmgKK2luZGV4IGE1OWMxOWIuLmE1M2ZhYjMgMTAwNjQ0CistLS0gYS9zcmMvcnBjc3ZjL25pc2xpYi5oCisrKysgYi9zcmMvcnBjc3ZjL25pc2xpYi5oCitAQCAtMTksNiArMTksNyBAQAorICNpZm5kZWYJX19SUENTVkNfTklTTElCX0hfXworICNkZWZpbmUJX19SUENTVkNfTklTTElCX0hfXworIAorKyNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KKyAjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KKyAKKyBfX0JFR0lOX0RFQ0xTCitkaWZmIC0tZ2l0IGEvc3JjL3JwY3N2Yy95cGNsbnQuaCBiL3NyYy9ycGNzdmMveXBjbG50LmgKK2luZGV4IGZlNDNmZDQuLmE2ODZiNjEgMTAwNjQ0CistLS0gYS9zcmMvcnBjc3ZjL3lwY2xudC5oCisrKysgYi9zcmMvcnBjc3ZjL3lwY2xudC5oCitAQCAtMjAsNiArMjAsNyBAQAorICNpZm5kZWYJX19SUENTVkNfWVBDTE5UX0hfXworICNkZWZpbmUJX19SUENTVkNfWVBDTE5UX0hfXworIAorKyNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KKyAjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KKyAKKyAvKiBTb21lIGRlZmluZXMgKi8KK2RpZmYgLS1naXQgYS9zcmMvcnBjc3ZjL3lwdXBkLmggYi9zcmMvcnBjc3ZjL3lwdXBkLmgKK2luZGV4IGQwN2ZkNGQuLjJjNTczMDEgMTAwNjQ0CistLS0gYS9zcmMvcnBjc3ZjL3lwdXBkLmgKKysrKyBiL3NyYy9ycGNzdmMveXB1cGQuaAorQEAgLTMzLDYgKzMzLDcgQEAKKyAjaWZuZGVmIF9fUlBDU1ZDX1lQVVBEX0hfXworICNkZWZpbmUgX19SUENTVkNfWVBVUERfSF9fCisgCisrI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgorICNpbmNsdWRlIDxmZWF0dXJlcy5oPgorIAorICNpbmNsdWRlIDxycGMvcnBjLmg+CistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYm5zbC9saWJuc2wyLzAwMDEtbmlzX2NhbGwuYy1JbmNsdWRlLXN0ZGludC5oLWZvci11aW50cHRyX3QtZGVmaW5pdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlibnNsL2xpYm5zbDIvMDAwMS1uaXNfY2FsbC5jLUluY2x1ZGUtc3RkaW50LmgtZm9yLXVpbnRwdHJfdC1kZWZpbml0aW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5YWU1MTcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYm5zbC9saWJuc2wyLzAwMDEtbmlzX2NhbGwuYy1JbmNsdWRlLXN0ZGludC5oLWZvci11aW50cHRyX3QtZGVmaW5pdGlvbi5wYXRjaApAQCAtMCwwICsxLDI3IEBACitGcm9tIGQ3MWNiZWIzYjc2ZTU0Nzc4YTRkNWVlYzZkMzg3Y2NlNjUzNTM3Y2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCA5IEp1biAyMDE3IDA5OjQ5OjM1IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIG5pc19jYWxsLmM6IEluY2x1ZGUgc3RkaW50LmggZm9yIHVpbnRwdHJfdCBkZWZpbml0aW9uCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgc3JjL25pc3BsdXMvbmlzX2NhbGwuYyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvc3JjL25pc3BsdXMvbmlzX2NhbGwuYyBiL3NyYy9uaXNwbHVzL25pc19jYWxsLmMKK2luZGV4IDFhMmI5MGMuLjFkYzk4MmQgMTAwNjQ0CistLS0gYS9zcmMvbmlzcGx1cy9uaXNfY2FsbC5jCisrKysgYi9zcmMvbmlzcGx1cy9uaXNfY2FsbC5jCitAQCAtMjMsNiArMjMsNyBAQAorICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KKysjaW5jbHVkZSA8c3RkaW50Lmg+CisgI2luY2x1ZGUgPGxpYmludGwuaD4KKyAjaW5jbHVkZSA8cnBjL3JwYy5oPgorICNpbmNsdWRlIDxycGMvYXV0aC5oPgorLS0gCisyLjEzLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJuc2wvbGlibnNsMi8wMDAyLURlZmluZS1nbGliYy1zcGVjaWZpYy1tYWNyb3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYm5zbC9saWJuc2wyLzAwMDItRGVmaW5lLWdsaWJjLXNwZWNpZmljLW1hY3Jvcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NWZkYTRiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJuc2wvbGlibnNsMi8wMDAyLURlZmluZS1nbGliYy1zcGVjaWZpYy1tYWNyb3MucGF0Y2gKQEAgLTAsMCArMSw1NyBAQAorRnJvbSA2MDI4MjUxNGVhMDFhZjAwNGQ3ZjllNjZkZDM5MjkyMjNiN2QyZTdiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMTggQXByIDIwMTcgMDk6MTY6MTIgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIERlZmluZSBnbGliYyBzcGVjaWZpYyBtYWNyb3MKKworQ2hlY2sgYW5kIGRlZmluZQorcmF3bWVtY2hyLCBfX2FzcHJpbnRmLCBfX21lbXBjcHksIF9fc3RydG9rX3IKK19fYWx3YXlzX2lubGluZSwgVEVNUF9GQUlMVVJFX1JFVFJZCisKK2lmIG5vdCBleGlzdGluZy4gSGVscHMgY29tcGlsaW5nIHdpdGggbXVzbAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworZGlmZiAtLWdpdCBhL3NyYy9ycGNzdmMvbmlzLmggYi9zcmMvcnBjc3ZjL25pcy5oCitpbmRleCA4OGNiY2EwLi4yM2ZjMjBjIDEwMDY0NAorLS0tIGEvc3JjL3JwY3N2Yy9uaXMuaAorKysrIGIvc3JjL3JwY3N2Yy9uaXMuaAorQEAgLTU3LDYgKzU3LDM0IEBAIF9fQkVHSU5fREVDTFMKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8a3VrdWtAc3VzZS5kZT4KKyAgKi8KKyAKKysjaWZuZGVmIHJhd21lbWNocgorKyNkZWZpbmUgcmF3bWVtY2hyKHMsYykgbWVtY2hyKChzKSwoc2l6ZV90KS0xLChjKSkKKysjZW5kaWYKKysKKysjaWZuZGVmIF9fYXNwcmludGYKKysjZGVmaW5lIF9fYXNwcmludGYgYXNwcmludGYKKysjZW5kaWYKKysKKysjaWZuZGVmIF9fbWVtcGNweQorKyNkZWZpbmUgX19tZW1wY3B5IG1lbXBjcHkKKysjZW5kaWYKKysKKysjaWZuZGVmIF9fc3RydG9rX3IKKysjZGVmaW5lIF9fc3RydG9rX3Igc3RydG9rX3IKKysjZW5kaWYKKysKKysjaWZuZGVmIF9fYWx3YXlzX2lubGluZQorKyNkZWZpbmUgX19hbHdheXNfaW5saW5lIF9fYXR0cmlidXRlX18oKF9fYWx3YXlzX2lubGluZV9fKSkKKysjZW5kaWYKKysKKysjaWZuZGVmIFRFTVBfRkFJTFVSRV9SRVRSWQorKyNkZWZpbmUgVEVNUF9GQUlMVVJFX1JFVFJZKGV4cCkgKHsgXAorK3R5cGVvZiAoZXhwKSBfcmM7IFwKKysgZG8geyBcCisrICBfcmMgPSAoZXhwKTsgXAorKyB9IHdoaWxlIChfcmMgPT0gLTEgJiYgZXJybm8gPT0gRUlOVFIpOyBcCisrIF9yYzsgfSkKKysjZW5kaWYKKyAKKyAjaWZuZGVmIF9fbmlzX29iamVjdF9oCisgI2RlZmluZSBfX25pc19vYmplY3RfaAorLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJuc2wvbGlibnNsMl9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYm5zbC9saWJuc2wyX2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTM5MTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJuc2wvbGlibnNsMl9naXQuYmIKQEAgLTAsMCArMSwzNyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTcgS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKyMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQgZm9yIHRoZSB0ZXJtcykKKworU1VNTUFSWSA9ICJMaWJyYXJ5IGNvbnRhaW5pbmcgTklTIGZ1bmN0aW9ucyB1c2luZyBUSS1SUEMgKElQdjYgZW5hYmxlZCkiCitERVNDUklQVElPTiA9ICJUaGlzIGxpYnJhcnkgY29udGFpbnMgdGhlIHB1YmxpYyBjbGllbnQgaW50ZXJmYWNlIGZvciBOSVMoWVApIGFuZCBOSVMrXAorICAgICAgICAgICAgICAgaXQgd2FzIHBhcnQgb2YgZ2xpYmMgYW5kIG5vdyBpcyBzdGFuZGFsb25lIHBhY2thZ2VzLiBpdCBhbHNvIHN1cHBvcnRzIElQdjYiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vdGhrdWt1ay9saWJuc2wiCitMSUNFTlNFID0gIkxHUEwtMi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCitTRUNUSU9OID0gImxpYnMiCitERVBFTkRTID0gImxpYnRpcnBjIgorREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBic2QtaGVhZGVycyIKKworUFYgPSAiMS4wLjUrZ2l0JHtTUkNQVn0iCisKK1NSQ1JFViA9ICJkZmEyZjMxMzUyNGFmZjkyNDNjNGQ4Y2UxYmFjZTczNzg2NDc4MzU2IgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vdGhrdWt1ay9saWJuc2wgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLXN5cy1jZGVmcy5oLWV4cGxpY2l0bHkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1EZWZpbmUtZ2xpYmMtc3BlY2lmaWMtbWFjcm9zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbmlzX2NhbGwuYy1JbmNsdWRlLXN0ZGludC5oLWZvci11aW50cHRyX3QtZGVmaW5pdGlvbi5wYXRjaCBcCisgICAgICAgICAgIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dAorCitFWFRSQV9PRUNPTkYgKz0gIi0tbGliZGlyPSR7bGliZGlyfS9uc2wgLS1pbmNsdWRlZGlyPSR7aW5jbHVkZWRpcn0vbnNsIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0KKwltdiAke0R9JHtsaWJkaXJ9L25zbC9wa2djb25maWcgJHtEfSR7bGliZGlyfQorfQorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L25zbC8qLnNvLioiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7aW5jbHVkZWRpcn0vbnNsICR7bGliZGlyfS9uc2wvKi5zbyIKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L25zbC8qLmEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdi8wMDAxLXJlcG9fcnBtZGIuYy1pbmNyZWFzZS1NQVhfSERSX0NOVC1hbmQtTUFYX0hEUl9EU0laRS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2LzAwMDEtcmVwb19ycG1kYi5jLWluY3JlYXNlLU1BWF9IRFJfQ05ULWFuZC1NQVhfSERSX0RTSVpFLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhNGU1Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdi8wMDAxLXJlcG9fcnBtZGIuYy1pbmNyZWFzZS1NQVhfSERSX0NOVC1hbmQtTUFYX0hEUl9EU0laRS5wYXRjaApAQCAtMCwwICsxLDM1IEBACitGcm9tIDFjNGM5MzVjYjczYWMxY2NiOTY5M2RmMWE1MWJhMjE4YTIyZThjYTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNaW5nIExpdSA8bGl1Lm1pbmc1MEBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDMwIFNlcCAyMDE3IDExOjE1OjE2ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIHJlcG9fcnBtZGIuYzogaW5jcmVhc2UgTUFYX0hEUl9DTlQgYW5kIE1BWF9IRFJfRFNJWkUKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9vcGVuU1VTRS9saWJzb2x2L3B1bGwvMjMwXQorCitXZSBlbmNvdW50ZXJlZCAnY29ycnVwdCBycG0nIGlzc3VlcyB3aGVuIGluc3RhbGxpbmcgZXh0cmVtZSBiaWcgUlBNCitwYWNrYWdlcyBsaWtlIHRoZSBrZXJuZWwtZGV2c3JjIHBhY2thZ2Ugb2YgWW9jdG8gcHJvamVjdC4KKworSXQgY2FuIGJlIGZpeGVkIGJ5IGluY3JlYXNpbmcgTUFYX0hEUl9DTlQgYW5kIE1BWF9IRFJfRFNJWkUgcGVyIHRlc3QuCisKK1NpZ25lZC1vZmYtYnk6IE1pbmcgTGl1IDxsaXUubWluZzUwQGdtYWlsLmNvbT4KKy0tLQorIGV4dC9yZXBvX3JwbWRiLmMgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZXh0L3JlcG9fcnBtZGIuYyBiL2V4dC9yZXBvX3JwbWRiLmMKK2luZGV4IGM3MDAwYTkuLjcwMDA4MzUgMTAwNjQ0CistLS0gYS9leHQvcmVwb19ycG1kYi5jCisrKysgYi9leHQvcmVwb19ycG1kYi5jCitAQCAtMTcwLDggKzE3MCw4IEBACisgI2RlZmluZSBNQVhfU0lHX0NOVAkJMHgxMDAwMDAKKyAjZGVmaW5lIE1BWF9TSUdfRFNJWkUJCTB4MTAwMDAwCisgCistI2RlZmluZSBNQVhfSERSX0NOVAkJMHgxMDAwMDAKKy0jZGVmaW5lIE1BWF9IRFJfRFNJWkUJCTB4MjAwMDAwMAorKyNkZWZpbmUgTUFYX0hEUl9DTlQJCTB4MjAwMDAwCisrI2RlZmluZSBNQVhfSERSX0RTSVpFCQkweDQwMDAwMDAKKyAKKyB0eXBlZGVmIHN0cnVjdCBycG1oZWFkIHsKKyAgIGludCBjbnQ7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2XzAuNi4yNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2XzAuNi4yNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDJkNjNhZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdl8wLjYuMjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1TVU1NQVJZID0gIkxpYnJhcnkgZm9yIHNvbHZpbmcgcGFja2FnZXMgYW5kIHJlYWRpbmcgcmVwb3NpdG9yaWVzIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL29wZW5TVVNFL2xpYnNvbHYiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuU1VTRS9saWJzb2x2L2lzc3VlcyIKLVNFQ1RJT04gPSAiZGV2ZWwiCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UuQlNEO21kNT02MjI3MmJkMTFjOTczOTZkNGFhZjFjNDFiYzExZjdkOCIKLQotREVQRU5EUyA9ICJleHBhdCB6bGliIHJwbSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL29wZW5TVVNFL2xpYnNvbHYuZ2l0IFwKLSAgICAgICAgICAgIgotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vMDAwMS1BZGQtZmFsbGJhY2stZm9wZW5jb29raWUtaW1wbGVtZW50YXRpb24ucGF0Y2ggXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vMDAwMi1GaXhlcy10by1pbnRlcm5hbC1mb3BlbmNvb2tpZS1pbXBsZW1lbnRhdGlvbi5wYXRjaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiCi0KLVNSQ1JFViA9ICJiYTMyZjgyODZkM2RlZWM2ZmFhYWJjNzk3NjJhNDc2MGU5YWYwYTA3IgotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGNtYWtlCi0KLUVYVFJBX09FQ01BS0UgPSAiLURMSUI9JHtiYXNlbGlifSAtRE1VTFRJX1NFTUFOVElDUz1PTiAtREVOQUJMRV9SUE1NRD1PTiAtREVOQUJMRV9SUE1EQj1PTiIKLQotUEFDS0FHRVMgPSsgIiR7UE59LXRvb2xzICR7UE59ZXh0IgotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7ZGF0YWRpcn0vY21ha2UvTW9kdWxlcy9GaW5kTGliU29sdi5jbWFrZSIKLUZJTEVTXyR7UE59LXRvb2xzID0gIiR7YmluZGlyfS8qIgotRklMRVNfJHtQTn1leHQgPSAiJHtsaWJkaXJ9LyR7UE59ZXh0LnNvLioiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2XzAuNi4yOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2XzAuNi4yOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YzhmN2ZjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJzb2x2L2xpYnNvbHZfMC42LjI4LmJiCkBAIC0wLDAgKzEsMzIgQEAKK1NVTU1BUlkgPSAiTGlicmFyeSBmb3Igc29sdmluZyBwYWNrYWdlcyBhbmQgcmVhZGluZyByZXBvc2l0b3JpZXMiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vb3BlblNVU0UvbGlic29sdiIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL29wZW5TVVNFL2xpYnNvbHYvaXNzdWVzIgorU0VDVElPTiA9ICJkZXZlbCIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5CU0Q7bWQ1PTYyMjcyYmQxMWM5NzM5NmQ0YWFmMWM0MWJjMTFmN2Q4IgorCitERVBFTkRTID0gImV4cGF0IHpsaWIgcnBtIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vb3BlblNVU0UvbGlic29sdi5naXQgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1yZXBvX3JwbWRiLmMtaW5jcmVhc2UtTUFYX0hEUl9DTlQtYW5kLU1BWF9IRFJfRFNJWkUucGF0Y2ggXAorICAgICAgICAgICIKK1NSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZmlsZTovLzAwMDEtQWRkLWZhbGxiYWNrLWZvcGVuY29va2llLWltcGxlbWVudGF0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovLzAwMDItRml4ZXMtdG8taW50ZXJuYWwtZm9wZW5jb29raWUtaW1wbGVtZW50YXRpb24ucGF0Y2ggXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIgorCitTUkNSRVYgPSAiYjhhOWRkZDg4ZWI0ZTBhYjM1MWViNTVhNTMxODZiNWRjNWFjMDgyNSIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBjbWFrZQorCitFWFRSQV9PRUNNQUtFID0gIi1ETElCPSR7YmFzZWxpYn0gLURNVUxUSV9TRU1BTlRJQ1M9T04gLURFTkFCTEVfUlBNTUQ9T04gLURFTkFCTEVfUlBNREI9T04gLURFTkFCTEVfQ09NUExFWF9ERVBTPU9OIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tdG9vbHMgJHtQTn1leHQiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS9jbWFrZS9Nb2R1bGVzL0ZpbmRMaWJTb2x2LmNtYWtlIgorRklMRVNfJHtQTn0tdG9vbHMgPSAiJHtiaW5kaXJ9LyoiCitGSUxFU18ke1BOfWV4dCA9ICIke2xpYmRpcn0vJHtQTn1leHQuc28uKiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ0aXJwYy9saWJ0aXJwYy8wMDAxLUFkZC1taXNzaW5nLXJ3bG9ja191bmxvY2tzLWluLXhwcnRfcmVnaXN0ZXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjLzAwMDEtQWRkLW1pc3Npbmctcndsb2NrX3VubG9ja3MtaW4teHBydF9yZWdpc3Rlci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTA2MTNiYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjLzAwMDEtQWRkLW1pc3Npbmctcndsb2NrX3VubG9ja3MtaW4teHBydF9yZWdpc3Rlci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLVN1YmplY3Q6IFtQQVRDSF0gQWRkIG1pc3Npbmcgcndsb2NrX3VubG9ja3MgaW4geHBydF9yZWdpc3RlcgotCi1JdCBsb29rcyBsaWtlIGluIGIyYzk0MzBmNDZjNGFjODQ4OTU3ZmI4YWRhYWMxNzZhM2Y2YWMwM2Ygd2hlbiBzdmNfcnVuCi1zd2l0Y2hlZCB0byBwb2xsLCBhbiBlYXJseSByZXR1cm4gd2FzIGFkZGVkLCBidXQgdGhlIHJ3bG9jayB3YXMgbm90Ci11bmxvY2tlZC4KLQotSSBvYnNlcnZlZCB0aGF0IHJwY2JpbmQgYnVpbHQgYWdhaW5zdCBsaWJ0aXJwYy0xLjAuMSB3b3VsZCBoYW5kbGUgb25seQotb25lIHJlcXVlc3QgYmVmb3JlIGhhbmdpbmcsIGFuZCB0cmFja2VkIGl0IGRvd24gdG8gYSBtaXNzaW5nCi1yd2xvY2tfdW5sb2NrIGhlcmUuCi0KLUZpeGVzOiBiMmM5NDMwZjQ2YzQgKCdVc2UgcG9sbCgpIGluc3RlYWQgb2Ygc2VsZWN0KCkgaW4gc3ZjX3J1bigpJykKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIEZvcm5leSA8bWZvcm5leUBtZm9ybmV5Lm9yZz4KLVNpZ25lZC1vZmYtYnk6IFN0ZXZlIERpY2tzb24gPHN0ZXZlZEByZWRoYXQuY29tPgotU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+Ci0tLS0KLSBzcmMvc3ZjLmMgfCA3ICsrKystLS0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3N2Yy5jIGIvc3JjL3N2Yy5jCi1pbmRleCA5YzQxNDQ1Li5iNTk0NjdiIDEwMDY0NAotLS0tIGEvc3JjL3N2Yy5jCi0rKysgYi9zcmMvc3ZjLmMKLUBAIC05OSw3ICs5OSw3IEBAIHhwcnRfcmVnaXN0ZXIgKHhwcnQpCi0gICAgIHsKLSAgICAgICBfX3N2Y194cG9ydHMgPSAoU1ZDWFBSVCAqKikgY2FsbG9jIChfcnBjX2R0YWJsZXNpemUoKSwgc2l6ZW9mIChTVkNYUFJUICopKTsKLSAgICAgICBpZiAoX19zdmNfeHBvcnRzID09IE5VTEwpCi0tCXJldHVybjsKLSsgICAgICAgICAgICBnb3RvIHVubG9jazsKLSAgICAgfQotICAgaWYgKHNvY2sgPCBfcnBjX2R0YWJsZXNpemUoKSkKLSAgICAgewotQEAgLTEyMCwxNCArMTIwLDE0IEBAIHhwcnRfcmVnaXN0ZXIgKHhwcnQpCi0gICAgICAgICAgICAgc3ZjX3BvbGxmZFtpXS5mZCA9IHNvY2s7Ci0gICAgICAgICAgICAgc3ZjX3BvbGxmZFtpXS5ldmVudHMgPSAoUE9MTElOIHwgUE9MTFBSSSB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUE9MTFJETk9STSB8IFBPTExSREJBTkQpOwotLSAgICAgICAgICAgIHJldHVybjsKLSsgICAgICAgICAgICBnb3RvIHVubG9jazsKLSAgICAgICAgICAgfQotIAotICAgICAgIG5ld19zdmNfcG9sbGZkID0gKHN0cnVjdCBwb2xsZmQgKikgcmVhbGxvYyAoc3ZjX3BvbGxmZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZiAoc3RydWN0IHBvbGxmZCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogKHN2Y19tYXhfcG9sbGZkICsgMSkpOwotICAgICAgIGlmIChuZXdfc3ZjX3BvbGxmZCA9PSBOVUxMKSAvKiBPdXQgb2YgbWVtb3J5ICovCi0tICAgICAgICByZXR1cm47Ci0rICAgICAgICBnb3RvIHVubG9jazsKLSAgICAgICBzdmNfcG9sbGZkID0gbmV3X3N2Y19wb2xsZmQ7Ci0gICAgICAgKytzdmNfbWF4X3BvbGxmZDsKLSAKLUBAIC0xMzUsNiArMTM1LDcgQEAgeHBydF9yZWdpc3RlciAoeHBydCkKLSAgICAgICBzdmNfcG9sbGZkW3N2Y19tYXhfcG9sbGZkIC0gMV0uZXZlbnRzID0gKFBPTExJTiB8IFBPTExQUkkgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUE9MTFJETk9STSB8IFBPTExSREJBTkQpOwotICAgICB9Ci0rdW5sb2NrOgotICAgcndsb2NrX3VubG9jayAoJnN2Y19mZF9sb2NrKTsKLSB9Ci0gCi0tLSAKLTIuNS4zCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGMvMDAwMS1pbmNsdWRlLXN0ZGludC5oLWZvci11aW50cHRyX3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjLzAwMDEtaW5jbHVkZS1zdGRpbnQuaC1mb3ItdWludHB0cl90LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmZTk4MzMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjLzAwMDEtaW5jbHVkZS1zdGRpbnQuaC1mb3ItdWludHB0cl90LnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gYjgwZDNiNTczYzFkYWRlMmIyOWIyMmY4YWNjM2I5ZTJjN2RkZWZkNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDIwIE1heSAyMDE3IDEzOjM2OjQzIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGluY2x1ZGUgc3RkaW50LmggZm9yIHVpbnRwdHJfdAorCitGaXhlcworfCAuLi8uLi9saWJ0aXJwYy0xLjAuMS9zcmMveGRyX3NpemVvZi5jOjkzOjEzOiBlcnJvcjogJ3VpbnRwdHJfdCcgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pOyBkaWQgeW91IG1lYW4gJ19faW50cHRyX3QnPworfCAgIGlmIChsZW4gPCAodWludHB0cl90KXhkcnMtPnhfYmFzZSkgeworfCAgICAgICAgICAgICAgXn5+fn5+fn5+CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgc3JjL3hkcl9zaXplb2YuYyB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvc3JjL3hkcl9zaXplb2YuYyBiL3NyYy94ZHJfc2l6ZW9mLmMKK2luZGV4IGQyM2ZiZDEuLjc5ZDY3MDcgMTAwNjQ0CistLS0gYS9zcmMveGRyX3NpemVvZi5jCisrKysgYi9zcmMveGRyX3NpemVvZi5jCitAQCAtMzksNiArMzksNyBAQAorICNpbmNsdWRlIDxycGMveGRyLmg+CisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKysjaW5jbHVkZSA8c3RkaW50Lmg+CisgI2luY2x1ZGUgInVuLW5hbWVzcGFjZS5oIgorIAorIC8qIEFSR1NVU0VEICovCistLSAKKzIuMTMuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjLzAwMDEtcmVwbGFjZS1fX2J6ZXJvLXdpdGgtbWVtc2V0LUFQSS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGMvMDAwMS1yZXBsYWNlLV9fYnplcm8td2l0aC1tZW1zZXQtQVBJLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyYjRkYTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjLzAwMDEtcmVwbGFjZS1fX2J6ZXJvLXdpdGgtbWVtc2V0LUFQSS5wYXRjaApAQCAtMCwwICsxLDMwIEBACitGcm9tIDIwYmFkYzNlMzYwODk1M2ZiNWIzNmJiMmUxNmZhNTFiZDczMWFlYmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVHVlLCAxOCBBcHIgMjAxNyAwOTozNTozNSAtMDcwMAorU3ViamVjdDogW1BBVENIXSByZXBsYWNlIF9fYnplcm8oKSB3aXRoIG1lbXNldCgpIEFQSQorCittZW1zZXQgaXMgYXZhaWxhYmxlIGFjcm9zcyBhbGwgbGliYyBpbXBsZW1lbnRhdGlvbgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIHNyYy9kZXNfaW1wbC5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2Rlc19pbXBsLmMgYi9zcmMvZGVzX2ltcGwuYworaW5kZXggOWRiY2NhZi4uMTViZWMyYSAxMDA2NDQKKy0tLSBhL3NyYy9kZXNfaW1wbC5jCisrKysgYi9zcmMvZGVzX2ltcGwuYworQEAgLTU4OCw3ICs1ODgsNyBAQCBfZGVzX2NyeXB0IChjaGFyICpidWYsIHVuc2lnbmVkIGxlbiwgc3RydWN0IGRlc3BhcmFtcyAqZGVzcCkKKyAgICAgfQorICAgdGluMCA9IHRpbjEgPSB0b3V0MCA9IHRvdXQxID0geG9yMCA9IHhvcjEgPSAwOworICAgdGJ1ZlswXSA9IHRidWZbMV0gPSAwOworLSAgX19iemVybyAoc2NoZWR1bGUsIHNpemVvZiAoc2NoZWR1bGUpKTsKKysgIG1lbXNldCAoc2NoZWR1bGUsIDAsIHNpemVvZiAoc2NoZWR1bGUpKTsKKyAKKyAgIHJldHVybiAoMSk7CisgfQorLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ0aXJwYy9saWJ0aXJwYy9leHBvcnRfa2V5X3NlY3JldGtleV9pc19zZXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjL2V4cG9ydF9rZXlfc2VjcmV0a2V5X2lzX3NldC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjc2YmEyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ0aXJwYy9saWJ0aXJwYy9leHBvcnRfa2V5X3NlY3JldGtleV9pc19zZXQucGF0Y2gKQEAgLTAsMCArMSwyNCBAQAorQWRkIGtleV9zZWNyZXRrZXlfaXNfc2V0IHRvIGV4cG9ydGVkIHN5bWJvbHMgbWFwCisKK2tleV9zZWNyZXRfaXNfc2V0IGlzIGEgdHlwbyBpbiBsaWJ0aXJwYyBtYXAKK1BhdGNoIHRha2VuIGZyb20KKworaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcC9saWJ0aXJwYy9kaXNjdXNzaW9uLzYzNzMyMS90aHJlYWQvZmQ3M2Q0MzEvCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitJbmRleDogbGlidGlycGMtMS4wLjEvc3JjL2xpYnRpcnBjLm1hcAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGxpYnRpcnBjLTEuMC4xLm9yaWcvc3JjL2xpYnRpcnBjLm1hcAorKysrIGxpYnRpcnBjLTEuMC4xL3NyYy9saWJ0aXJwYy5tYXAKK0BAIC0yOTgsNyArMjk4LDcgQEAgVElSUENfMC4zLjIgeworICAgICBrZXlfZ2VuZGVzOworICAgICBrZXlfZ2V0X2NvbnY7CisgICAgIGtleV9zZXRzZWNyZXQ7CistICAgIGtleV9zZWNyZXRfaXNfc2V0OworKyAgICBrZXlfc2VjcmV0a2V5X2lzX3NldDsKKyAgICAga2V5X3NldG5ldDsKKyAgICAgbmV0bmFtZTJob3N0OworICAgICBuZXRuYW1lMnVzZXI7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjL2xpYnRpcnBjLTAuMi4xLWZvcnRpZnkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjL2xpYnRpcnBjLTAuMi4xLWZvcnRpZnkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhNzg1ZDMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ0aXJwYy9saWJ0aXJwYy9saWJ0aXJwYy0wLjIuMS1mb3J0aWZ5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotRml4IGEgcG9zc2libGUgb3ZlcmZsb3cgKHJlcG9ydGVkIGJ5IF9GT1JUSUZZX1NPVVJDRT0yKQotCi1Qb3J0ZWQgZnJvbSBHZW50b28KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLUluZGV4OiBsaWJ0aXJwYy0wLjIuMS9zcmMvZ2V0cnBjcG9ydC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGlidGlycGMtMC4yLjEub3JpZy9zcmMvZ2V0cnBjcG9ydC5jCi0rKysgbGlidGlycGMtMC4yLjEvc3JjL2dldHJwY3BvcnQuYwotQEAgLTU0LDExICs1NCwxMSBAQCBnZXRycGNwb3J0KGhvc3QsIHByb2dudW0sIHZlcnNudW0sIHByb3RvCi0gCi0gCWlmICgoaHAgPSBnZXRob3N0YnluYW1lKGhvc3QpKSA9PSBOVUxMKQotIAkJcmV0dXJuICgwKTsKLSsJaWYgKGhwLT5oX2xlbmd0aCAhPSBzaXplb2YoYWRkci5zaW5fYWRkci5zX2FkZHIpKQotKwkJcmV0dXJuICgwKTsKLSAJbWVtc2V0KCZhZGRyLCAwLCBzaXplb2YoYWRkcikpOwotIAlhZGRyLnNpbl9mYW1pbHkgPSBBRl9JTkVUOwotIAlhZGRyLnNpbl9wb3J0ID0gIDA7Ci0tCWlmIChocC0+aF9sZW5ndGggPiBzaXplb2YoYWRkcikpCi0tCSAgaHAtPmhfbGVuZ3RoID0gc2l6ZW9mKGFkZHIpOwotIAltZW1jcHkoJmFkZHIuc2luX2FkZHIuc19hZGRyLCBocC0+aF9hZGRyLCAoc2l6ZV90KWhwLT5oX2xlbmd0aCk7Ci0gCS8qIEluY29uc2lzdGVudCBpbnRlcmZhY2VzIG5lZWQgY2FzdHMhIDotKCAqLwotIAlyZXR1cm4gKHBtYXBfZ2V0cG9ydCgmYWRkciwgKHVfbG9uZylwcm9nbnVtLCAodV9sb25nKXZlcnNudW0sIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ0aXJwYy9saWJ0aXJwYy9yZW1vdmUtZGVzLWZ1bmN0aW9uYWxpdHkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjL3JlbW92ZS1kZXMtZnVuY3Rpb25hbGl0eS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTEyZTkzNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjL3JlbW92ZS1kZXMtZnVuY3Rpb25hbGl0eS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE0NCArMCwwIEBACi11Y2xpYmMgYW5kIG11c2wgZG9lcyBub3QgcHJvdmlkZSBkZXMgZnVuY3Rpb25hbGl0eS4gTGV0cyBkaXNhYmxlIGl0LgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW3VjbGliYyBhbmQgbXVzbCBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IFRob21hcyBQZXRhenpvbmkgPHRob21hcy5wZXRhenpvbmlAZnJlZS1lbGVjdHJvbnMuY29tPgotU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+Ci0tLS0KLWRpZmYgLU5hdXIgbGlidGlycGMtMS4wLjEtb3JpZy9zcmMvTWFrZWZpbGUuYW0gbGlidGlycGMtMS4wLjEvc3JjL01ha2VmaWxlLmFtCi0tLS0gbGlidGlycGMtMS4wLjEtb3JpZy9zcmMvTWFrZWZpbGUuYW0JMjAxNS0xMC0zMCAxNzoxNToxNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBsaWJ0aXJwYy0xLjAuMS9zcmMvTWFrZWZpbGUuYW0JMjAxNS0xMi0yMSAxNTo1NjoxNy4wOTQ3MDI0MjkgKzAyMDAKLUBAIC0yMiw5ICsyMiw4IEBACi0gICAgICAgICBwbWFwX3Byb3QuYyBwbWFwX3Byb3QyLmMgcG1hcF9ybXQuYyBycGNfcHJvdC5jIHJwY19jb21tb25kYXRhLmMgXAotICAgICAgICAgcnBjX2NhbGxtc2cuYyBycGNfZ2VuZXJpYy5jIHJwY19zb2MuYyBycGNiX2NsbnQuYyBycGNiX3Byb3QuYyBcCi0gICAgICAgICBycGNiX3N0X3hkci5jIHN2Yy5jIHN2Y19hdXRoLmMgc3ZjX2RnLmMgc3ZjX2F1dGhfdW5peC5jIHN2Y19hdXRoX25vbmUuYyBcCi0tCXN2Y19hdXRoX2Rlcy5jIFwKLSAgICAgICAgIHN2Y19nZW5lcmljLmMgc3ZjX3Jhdy5jIHN2Y19ydW4uYyBzdmNfc2ltcGxlLmMgc3ZjX3ZjLmMgZ2V0cGVlcmVpZC5jIFwKLS0gICAgICAgIGF1dGhfdGltZS5jIGF1dGhfZGVzLmMgYXV0aGRlc19wcm90LmMgZGVidWcuYwotKyAgICAgICAgZGVidWcuYwotIAotICMjIFhEUgotIGxpYnRpcnBjX2xhX1NPVVJDRVMgKz0geGRyLmMgeGRyX3JlYy5jIHhkcl9hcnJheS5jIHhkcl9mbG9hdC5jIHhkcl9tZW0uYyB4ZHJfcmVmZXJlbmNlLmMgeGRyX3N0ZGlvLmMgeGRyX3NpemVvZi5jCi1AQCAtNDEsOCArNDAsOCBAQAotICAgICBsaWJ0aXJwY19sYV9DRkxBR1MgPSAtREhBVkVfUlBDU0VDX0dTUyAkKEdTU0FQSV9DRkxBR1MpCi0gZW5kaWYKLSAKLS1saWJ0aXJwY19sYV9TT1VSQ0VTICs9IGtleV9jYWxsLmMga2V5X3Byb3RfeGRyLmMgZ2V0cHVibGlja2V5LmMKLS1saWJ0aXJwY19sYV9TT1VSQ0VTICs9IG5ldG5hbWUuYyBuZXRuYW1lci5jIHJwY2RuYW1lLmMgcnRpbWUuYwotKyNsaWJ0aXJwY19sYV9TT1VSQ0VTICs9IGtleV9jYWxsLmMga2V5X3Byb3RfeGRyLmMgZ2V0cHVibGlja2V5LmMKLSsjbGlidGlycGNfbGFfU09VUkNFUyArPSBuZXRuYW1lLmMgbmV0bmFtZXIuYyBycGNkbmFtZS5jIHJ0aW1lLmMKLSAKLSBDTEVBTkZJTEVTCSAgICAgICA9IGNzY29wZS4qICp+Ci0gRElTVENMRUFORklMRVMJICAgICAgID0gTWFrZWZpbGUuaW4KLWRpZmYgLU5hdXIgbGlidGlycGMtMS4wLjEtb3JpZy9zcmMvcnBjX3NvYy5jIGxpYnRpcnBjLTEuMC4xL3NyYy9ycGNfc29jLmMKLS0tLSBsaWJ0aXJwYy0xLjAuMS1vcmlnL3NyYy9ycGNfc29jLmMJMjAxNS0xMC0zMCAxNzoxNToxNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBsaWJ0aXJwYy0xLjAuMS9zcmMvcnBjX3NvYy5jCTIwMTUtMTItMjEgMTU6NTY6MTcuMDk1NzAyNDE2ICswMjAwCi1AQCAtNjEsNyArNjEsNiBAQAotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0tI2luY2x1ZGUgPHJwY3N2Yy9uaXMuaD4KLSAKLSAjaW5jbHVkZSAicnBjX2NvbS5oIgotIAotQEAgLTUyMiw4NiArNTIxLDYgQEAKLSB9Ci0gCi0gLyoKLS0gKiBDcmVhdGUgdGhlIGNsaWVudCBkZXMgYXV0aGVudGljYXRpb24gb2JqZWN0LiBPYnNvbGV0ZWQgYnkKLS0gKiBhdXRoZGVzX3NlY2NyZWF0ZSgpLgotLSAqLwotLUFVVEggKgotLWF1dGhkZXNfY3JlYXRlKHNlcnZlcm5hbWUsIHdpbmRvdywgc3luY2FkZHIsIGNrZXkpCi0tCWNoYXIgKnNlcnZlcm5hbWU7CQkvKiBuZXR3b3JrIG5hbWUgb2Ygc2VydmVyICovCi0tCXVfaW50IHdpbmRvdzsJCQkvKiB0aW1lIHRvIGxpdmUgKi8KLS0Jc3RydWN0IHNvY2thZGRyICpzeW5jYWRkcjsJLyogb3B0aW9uYWwgaG9zdGFkZHIgdG8gc3luYyB3aXRoICovCi0tCWRlc19ibG9jayAqY2tleTsJCS8qIG9wdGlvbmFsIGNvbnZlcnNhdGlvbiBrZXkgdG8gdXNlICovCi0tewotLQlBVVRIICpuYXV0aDsKLS0JY2hhciBob3N0bmFtZVtOSV9NQVhIT1NUXTsKLS0KLS0JaWYgKHN5bmNhZGRyKSB7Ci0tCQkvKgotLQkJICogQ2hhbmdlIGFkZHIgdG8gaG9zdG5hbWUsIGJlY2F1c2UgdGhhdCBpcyB0aGUgd2F5Ci0tCQkgKiBuZXcgaW50ZXJmYWNlIHRha2VzIGl0LgotLQkJICovCi0tCSAgICAgICAgc3dpdGNoIChzeW5jYWRkci0+c2FfZmFtaWx5KSB7Ci0tCQljYXNlIEFGX0lORVQ6Ci0tCQkgIGlmIChnZXRuYW1laW5mbyhzeW5jYWRkciwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbiksIGhvc3RuYW1lLAotLQkJCQkgIHNpemVvZiBob3N0bmFtZSwgTlVMTCwgMCwgMCkgIT0gMCkKLS0JCSAgICBnb3RvIGZhbGxiYWNrOwotLQkJICBicmVhazsKLS0JCWNhc2UgQUZfSU5FVDY6Ci0tCQkgIGlmIChnZXRuYW1laW5mbyhzeW5jYWRkciwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpLCBob3N0bmFtZSwKLS0JCQkJICBzaXplb2YgaG9zdG5hbWUsIE5VTEwsIDAsIDApICE9IDApCi0tCQkgICAgZ290byBmYWxsYmFjazsKLS0JCSAgYnJlYWs7Ci0tCQlkZWZhdWx0OgotLQkJICBnb3RvIGZhbGxiYWNrOwotLQkJfQotLQkJbmF1dGggPSBhdXRoZGVzX3NlY2NyZWF0ZShzZXJ2ZXJuYW1lLCB3aW5kb3csIGhvc3RuYW1lLCBja2V5KTsKLS0JCXJldHVybiAobmF1dGgpOwotLQl9Ci0tZmFsbGJhY2s6Ci0tCXJldHVybiBhdXRoZGVzX3NlY2NyZWF0ZShzZXJ2ZXJuYW1lLCB3aW5kb3csIE5VTEwsIGNrZXkpOwotLX0KLS0KLS0vKgotLSAqIENyZWF0ZSB0aGUgY2xpZW50IGRlcyBhdXRoZW50aWNhdGlvbiBvYmplY3QuIE9ic29sZXRlZCBieQotLSAqIGF1dGhkZXNfcGtfc2VjY3JlYXRlKCkuCi0tICovCi0tZXh0ZXJuIEFVVEggKmF1dGhkZXNfcGtfc2VjY3JlYXRlKGNvbnN0IGNoYXIgKiwgbmV0b2JqICosIHVfaW50LCBjb25zdCBjaGFyICosCi0tICAgICAgICBjb25zdCBkZXNfYmxvY2sgKiwgbmlzX3NlcnZlciAqKTsKLS0KLS1BVVRIICoKLS1hdXRoZGVzX3BrX2NyZWF0ZShzZXJ2ZXJuYW1lLCBwa2V5LCB3aW5kb3csIHN5bmNhZGRyLCBja2V5KQotLQljaGFyICpzZXJ2ZXJuYW1lOwkJLyogbmV0d29yayBuYW1lIG9mIHNlcnZlciAqLwotLQluZXRvYmogKnBrZXk7CQkJLyogcHVibGljIGtleSAqLwotLQl1X2ludCB3aW5kb3c7CQkJLyogdGltZSB0byBsaXZlICovCi0tCXN0cnVjdCBzb2NrYWRkciAqc3luY2FkZHI7CS8qIG9wdGlvbmFsIGhvc3RhZGRyIHRvIHN5bmMgd2l0aCAqLwotLQlkZXNfYmxvY2sgKmNrZXk7CQkvKiBvcHRpb25hbCBjb252ZXJzYXRpb24ga2V5IHRvIHVzZSAqLwotLXsKLS0JQVVUSCAqbmF1dGg7Ci0tCWNoYXIgaG9zdG5hbWVbTklfTUFYSE9TVF07Ci0tCi0tCWlmIChzeW5jYWRkcikgewotLQkJLyoKLS0JCSAqIENoYW5nZSBhZGRyIHRvIGhvc3RuYW1lLCBiZWNhdXNlIHRoYXQgaXMgdGhlIHdheQotLQkJICogbmV3IGludGVyZmFjZSB0YWtlcyBpdC4KLS0JCSAqLwotLQkgICAgICAgIHN3aXRjaCAoc3luY2FkZHItPnNhX2ZhbWlseSkgewotLQkJY2FzZSBBRl9JTkVUOgotLQkJICBpZiAoZ2V0bmFtZWluZm8oc3luY2FkZHIsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pLCBob3N0bmFtZSwKLS0JCQkJICBzaXplb2YgaG9zdG5hbWUsIE5VTEwsIDAsIDApICE9IDApCi0tCQkgICAgZ290byBmYWxsYmFjazsKLS0JCSAgYnJlYWs7Ci0tCQlkZWZhdWx0OgotLQkJICBnb3RvIGZhbGxiYWNrOwotLQkJfQotLQkJbmF1dGggPSBhdXRoZGVzX3BrX3NlY2NyZWF0ZShzZXJ2ZXJuYW1lLCBwa2V5LCB3aW5kb3csIGhvc3RuYW1lLCBja2V5LCBOVUxMKTsKLS0JCXJldHVybiAobmF1dGgpOwotLQl9Ci0tZmFsbGJhY2s6Ci0tCXJldHVybiBhdXRoZGVzX3BrX3NlY2NyZWF0ZShzZXJ2ZXJuYW1lLCBwa2V5LCB3aW5kb3csIE5VTEwsIGNrZXksIE5VTEwpOwotLX0KLS0KLS0KLS0vKgotICAqIENyZWF0ZSBhIGNsaWVudCBoYW5kbGUgZm9yIGEgdW5peCBjb25uZWN0aW9uLiBPYnNvbGV0ZWQgYnkgY2xudF92Y19jcmVhdGUoKQotICAqLwotIENMSUVOVCAqCi1kaWZmIC1OYXVyIGxpYnRpcnBjLTEuMC4xLW9yaWcvc3JjL3N2Y19hdXRoLmMgbGlidGlycGMtMS4wLjEvc3JjL3N2Y19hdXRoLmMKLS0tLSBsaWJ0aXJwYy0xLjAuMS1vcmlnL3NyYy9zdmNfYXV0aC5jCTIwMTUtMTAtMzAgMTc6MTU6MTQuMDAwMDAwMDAwICswMjAwCi0rKysgbGlidGlycGMtMS4wLjEvc3JjL3N2Y19hdXRoLmMJMjAxNS0xMi0yMSAxNTo1NjoxNy4wOTU3MDI0MTYgKzAyMDAKLUBAIC0xMTQsOSArMTE0LDYgQEAKLSAJY2FzZSBBVVRIX1NIT1JUOgotIAkJZHVtbXkgPSBfc3ZjYXV0aF9zaG9ydChycXN0LCBtc2cpOwotIAkJcmV0dXJuIChkdW1teSk7Ci0tCWNhc2UgQVVUSF9ERVM6Ci0tCQlkdW1teSA9IF9zdmNhdXRoX2RlcyhycXN0LCBtc2cpOwotLQkJcmV0dXJuIChkdW1teSk7Ci0gI2lmZGVmIEhBVkVfUlBDU0VDX0dTUwotIAljYXNlIFJQQ1NFQ19HU1M6Ci0gCQlkdW1teSA9IF9zdmNhdXRoX2dzcyhycXN0LCBtc2csIG5vX2Rpc3BhdGNoKTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGNfMS4wLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjXzEuMC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMzIxZDQ3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGNfMS4wLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1TVU1NQVJZID0gIlRyYW5zcG9ydC1JbmRlcGVuZGVudCBSUEMgbGlicmFyeSIKLURFU0NSSVBUSU9OID0gIkxpYnRpcnBjIGlzIGEgcG9ydCBvZiBTdW5zIFRyYW5zcG9ydC1JbmRlcGVuZGVudCBSUEMgbGlicmFyeSB0byBMaW51eCIKLVNFQ1RJT04gPSAibGlicy9uZXR3b3JrIgotSE9NRVBBR0UgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9saWJ0aXJwYy8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvdHJhY2tlci8/Z3JvdXBfaWQ9MTgzMDc1JmF0aWQ9OTAzNzg0IgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mODM1Y2NlODg1MjQ4MWU0YjJiYmJkZDIzYjVlNDdmMyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvbmV0bmFtZS5jO2JlZ2lubGluZT0xO2VuZGxpbmU9Mjc7bWQ1PWY4YThjZDJjYjI1YWM1YWExNjc2NzM2NGZiMGUzYzI0IgotCi1QUk9WSURFUyA9ICJ2aXJ0dWFsL2xpYnJwYyIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59LyR7QlB9LnRhci5iejI7bmFtZT1saWJ0aXJwYyBcCi0gICAgICAgICAgICR7R0VOVE9PX01JUlJPUn0vJHtCUE59LWdsaWJjLW5mcy50YXIueHo7bmFtZT1nbGliYy1uZnMgXAotICAgICAgICAgICBmaWxlOi8vbGlidGlycGMtMC4yLjEtZm9ydGlmeS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1taXNzaW5nLXJ3bG9ja191bmxvY2tzLWluLXhwcnRfcmVnaXN0ZXIucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSV9hcHBlbmRfbGliYy11Y2xpYmMgPSAiIGZpbGU6Ly9yZW1vdmUtZGVzLWZ1bmN0aW9uYWxpdHkucGF0Y2ggXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCi0KLVNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZmlsZTovL3JlbW92ZS1kZXMtZnVuY3Rpb25hbGl0eS5wYXRjaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9Vc2UtbmV0YnNkLXF1ZXVlLmgucGF0Y2ggXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIgotCi1TUkNfVVJJW2xpYnRpcnBjLm1kNXN1bV0gPSAiMzZjZTFjMGZmODA4NjNiYjA4MzlkNTRhYTBiOTQwMTQiCi1TUkNfVVJJW2xpYnRpcnBjLnNoYTI1NnN1bV0gPSAiNTE1Njk3NGYzMWJlN2NjYmM4YWIxZGUzN2M0NzM5YWY2ZDlkNDJjODdiMWQ1Y2FmNDgzNWRkYTc1ZmNiYjg5ZSIKLVNSQ19VUklbZ2xpYmMtbmZzLm1kNXN1bV0gPSAiNWFlNTAwYjlkMGI2YjcyY2I4NzViYzA0OTQ0Yjk0NDUiCi1TUkNfVVJJW2dsaWJjLW5mcy5zaGEyNTZzdW1dID0gIjI2NzdjZmVkZjYyNmYzZjVhOGY2ZTUwN2FlZDViYjhmNzlhNzQ1M2I1ODlkNjg0ZGJiYzA4NmU3NTUxNzBkODMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWdzc2FwaSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotICAgICAgICBjcCAtciAke1N9Ly4uL3RpcnBjICR7U30KLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgICAgIGNob3duIHJvb3Q6cm9vdCAke0R9JHtzeXNjb25mZGlyfS9uZXRjb25maWcKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGNfMS4wLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjXzEuMC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5NzE4YzUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjXzEuMC4yLmJiCkBAIC0wLDAgKzEsMzggQEAKK1NVTU1BUlkgPSAiVHJhbnNwb3J0LUluZGVwZW5kZW50IFJQQyBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAiTGlidGlycGMgaXMgYSBwb3J0IG9mIFN1bnMgVHJhbnNwb3J0LUluZGVwZW5kZW50IFJQQyBsaWJyYXJ5IHRvIExpbnV4IgorU0VDVElPTiA9ICJsaWJzL25ldHdvcmsiCitIT01FUEFHRSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2xpYnRpcnBjLyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC90cmFja2VyLz9ncm91cF9pZD0xODMwNzUmYXRpZD05MDM3ODQiCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWY4MzVjY2U4ODUyNDgxZTRiMmJiYmRkMjNiNWU0N2YzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9uZXRuYW1lLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yNzttZDU9ZjhhOGNkMmNiMjVhYzVhYTE2NzY3MzY0ZmIwZTNjMjQiCisKK1BST1ZJREVTID0gInZpcnR1YWwvbGlicnBjIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0vJHtCUH0udGFyLmJ6MjtuYW1lPWxpYnRpcnBjIFwKKyAgICAgICAgICAgJHtHRU5UT09fTUlSUk9SfS8ke0JQTn0tZ2xpYmMtbmZzLnRhci54ejtuYW1lPWdsaWJjLW5mcyBcCisgICAgICAgICAgIGZpbGU6Ly9leHBvcnRfa2V5X3NlY3JldGtleV9pc19zZXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1yZXBsYWNlLV9fYnplcm8td2l0aC1tZW1zZXQtQVBJLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtaW5jbHVkZS1zdGRpbnQuaC1mb3ItdWludHB0cl90LnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL1VzZS1uZXRic2QtcXVldWUuaC5wYXRjaCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiCisKK1NSQ19VUklbbGlidGlycGMubWQ1c3VtXSA9ICJkNWEzN2YxZGNjZWM0ODRmOWNhYmUyYjk3ZTU0ZTlhNiIKK1NSQ19VUklbbGlidGlycGMuc2hhMjU2c3VtXSA9ICI3MjNjNWNlOTI3MDZjYmI2MDFhOGRiMDkxMTBkZjFiNGI2OTM5MTY0MzE1OGYyMGZmNTg3ZTIwZTdjNWY5MGY1IgorU1JDX1VSSVtnbGliYy1uZnMubWQ1c3VtXSA9ICI1YWU1MDBiOWQwYjZiNzJjYjg3NWJjMDQ5NDRiOTQ0NSIKK1NSQ19VUklbZ2xpYmMtbmZzLnNoYTI1NnN1bV0gPSAiMjY3N2NmZWRmNjI2ZjNmNWE4ZjZlNTA3YWVkNWJiOGY3OWE3NDUzYjU4OWQ2ODRkYmJjMDg2ZTc1NTE3MGQ4MyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZ3NzYXBpIgorCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisgICAgICAgIGNwIC1yICR7V09SS0RJUn0vdGlycGMgJHtTfQorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAgICAgY2hvd24gcm9vdDpyb290ICR7RH0ke3N5c2NvbmZkaXJ9L25ldGNvbmZpZworfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sb2dyb3RhdGUvbG9ncm90YXRlL2FjdC1hcy1tdi13aGVuLXJvdGF0ZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbG9ncm90YXRlL2xvZ3JvdGF0ZS9hY3QtYXMtbXYtd2hlbi1yb3RhdGUucGF0Y2gKaW5kZXggMmU5MzFhMi4uMDRjYjU4OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sb2dyb3RhdGUvbG9ncm90YXRlL2FjdC1hcy1tdi13aGVuLXJvdGF0ZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xvZ3JvdGF0ZS9sb2dyb3RhdGUvYWN0LWFzLW12LXdoZW4tcm90YXRlLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA2OGYyOWFiNDkwY2Y5ODdhYTM0YjVmNGNhZjE3ODRiNThhMDIxMzA4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA1MTdjYmZmNjZjOGJkYmY0NTViYzNiN2MxYTg1YTRmOTkwZDBmOWE2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CiBEYXRlOiBUdWUsIDE3IEZlYiAyMDE1IDIxOjA4OjA3IC0wODAwCiBTdWJqZWN0OiBbUEFUQ0hdIEFjdCBhcyB0aGUgIm12IiBjb21tYW5kIHdoZW4gcm90YXRlIGxvZwpAQCAtMTAsMTQgKzEwLDE0IEBACiAKIFNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgogLS0tCi0gbG9ncm90YXRlLmMgfCAgIDcxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDU5IGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQorIGxvZ3JvdGF0ZS5jIHwgNzIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA2MCBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2xvZ3JvdGF0ZS5jIGIvbG9ncm90YXRlLmMKLWluZGV4IGQzZGViNmEuLmNmOGJmMmMgMTAwNjQ0CitpbmRleCA0YWQ1OGQ0Li5iYTA1ODg0IDEwMDY0NAogLS0tIGEvbG9ncm90YXRlLmMKICsrKyBiL2xvZ3JvdGF0ZS5jCi1AQCAtMTE1Nyw2ICsxMTU3LDUzIEBAIGludCBmaW5kTmVlZFJvdGF0aW5nKHN0cnVjdCBsb2dJbmZvICpsb2csIGludCBsb2dOdW0sIGludCBmb3JjZSkKK0BAIC0xMzE1LDYgKzEzMTUsNTQgQEAgc3RhdGljIGludCBmaW5kTmVlZFJvdGF0aW5nKHN0cnVjdCBsb2dJbmZvICpsb2csIGludCBsb2dOdW0sIGludCBmb3JjZSkKICAgICAgcmV0dXJuIDA7CiAgfQogIApAQCAtNjgsMTAgKzY4LDExIEBACiArICAgIHJldHVybiAxOwogK30KICsKLSBpbnQgcHJlcm90YXRlU2luZ2xlTG9nKHN0cnVjdCBsb2dJbmZvICpsb2csIGludCBsb2dOdW0sIHN0cnVjdCBsb2dTdGF0ZSAqc3RhdGUsCi0gCQkgICAgICAgc3RydWN0IGxvZ05hbWVzICpyb3ROYW1lcykKKysKKyBzdGF0aWMgaW50IHByZXJvdGF0ZVNpbmdsZUxvZyhzdHJ1Y3QgbG9nSW5mbyAqbG9nLCBpbnQgbG9nTnVtLAorIAkJCSAgICAgIHN0cnVjdCBsb2dTdGF0ZSAqc3RhdGUsIHN0cnVjdCBsb2dOYW1lcyAqcm90TmFtZXMpCiAgewotQEAgLTE1MjMsMTUgKzE1NzAsMTUgQEAgaW50IHByZXJvdGF0ZVNpbmdsZUxvZyhzdHJ1Y3QgbG9nSW5mbyAqbG9nLCBpbnQgbG9nTnVtLCBzdHJ1Y3QgbG9nU3RhdGUgKnN0YXRlLAorQEAgLTE2NzQsMTUgKzE3MjIsMTUgQEAgc3RhdGljIGludCBwcmVyb3RhdGVTaW5nbGVMb2coc3RydWN0IGxvZ0luZm8gKmxvZywgaW50IGxvZ051bSwKICAJCX0KICAKICAJICAgIG1lc3NhZ2UoTUVTU19ERUJVRywKQEAgLTkwLDcgKzkxLDcgQEAKICAJCQkgICAgb2xkTmFtZSwgbmV3TmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKICAJCSAgICBoYXNFcnJvcnMgPSAxOwogIAkJfQotQEAgLTE2NjksMjEgKzE3MTYsMjEgQEAgaW50IHJvdGF0ZVNpbmdsZUxvZyhzdHJ1Y3QgbG9nSW5mbyAqbG9nLCBpbnQgbG9nTnVtLCBzdHJ1Y3QgbG9nU3RhdGUgKnN0YXRlLAorQEAgLTE3NjcsMjEgKzE4MTUsMjEgQEAgc3RhdGljIGludCByb3RhdGVTaW5nbGVMb2coc3RydWN0IGxvZ0luZm8gKmxvZywgaW50IGxvZ051bSwKICAJCQkJcmV0dXJuIDE7CiAgCQkJfQogIApAQCAtMTE1LDE5ICsxMTYsMTkgQEAKIC0JCQkJbWVzc2FnZShNRVNTX0VSUk9SLCAiZmFpbGVkIHRvIHJlbmFtZSAlcyB0byAlczogJXNcbiIsCiArCQkJbXZGaWxlKGxvZy0+ZmlsZXNbbG9nTnVtXSwgcm90TmFtZXMtPmZpbmFsTmFtZSwgbG9nLCBwcmV2X2FjbCkpIHsKICsJCQkJbWVzc2FnZShNRVNTX0VSUk9SLCAiZmFpbGVkIHRvIG1vdmUgJXMgdG8gJXM6ICVzXG4iLAotIAkJCQkJbG9nLT5maWxlc1tsb2dOdW1dLCB0bXBGaWxlbmFtZSwKKyAJCQkJCWxvZy0+ZmlsZXNbbG9nTnVtXSwgcm90TmFtZXMtPmZpbmFsTmFtZSwKICAJCQkJCXN0cmVycm9yKGVycm5vKSk7CiAgCQkJCQloYXNFcnJvcnMgPSAxOwotQEAgLTIwNjMsNyArMjExMCw3IEBAIGludCByb3RhdGVMb2dTZXQoc3RydWN0IGxvZ0luZm8gKmxvZywgaW50IGZvcmNlKQorQEAgLTIxNzAsNyArMjIxOCw3IEBAIHN0YXRpYyBpbnQgcm90YXRlTG9nU2V0KHN0cnVjdCBsb2dJbmZvICpsb2csIGludCBmb3JjZSkKICAgICAgcmV0dXJuIGhhc0Vycm9yczsKICB9CiAgCi0tc3RhdGljIGludCB3cml0ZVN0YXRlKGNoYXIgKnN0YXRlRmlsZW5hbWUpCistc3RhdGljIGludCB3cml0ZVN0YXRlKGNvbnN0IGNoYXIgKnN0YXRlRmlsZW5hbWUpCiArc3RhdGljIGludCB3cml0ZVN0YXRlKHN0cnVjdCBsb2dJbmZvICpsb2csIGNoYXIgKnN0YXRlRmlsZW5hbWUpCiAgewogIAlzdHJ1Y3QgbG9nU3RhdGUgKnA7CiAgCUZJTEUgKmY7Ci1AQCAtMjIyNyw3ICsyMjc0LDcgQEAgc3RhdGljIGludCB3cml0ZVN0YXRlKGNoYXIgKnN0YXRlRmlsZW5hbWUpCitAQCAtMjMyMiw3ICsyMzcwLDcgQEAgc3RhdGljIGludCB3cml0ZVN0YXRlKGNvbnN0IGNoYXIgKnN0YXRlRmlsZW5hbWUpCiAgCQlmY2xvc2UoZik7CiAgCiAgCWlmIChlcnJvciA9PSAwKSB7CkBAIC0xMzYsNyArMTM3LDcgQEAKICAJCQl1bmxpbmsodG1wRmlsZW5hbWUpOwogIAkJCWVycm9yID0gMTsKICAJCQltZXNzYWdlKE1FU1NfRVJST1IsICJlcnJvciByZW5hbWluZyB0ZW1wIHN0YXRlIGZpbGUgJXNcbiIsCi1AQCAtMjUyNSw3ICsyNTcyLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KQorQEAgLTI2NDgsNyArMjY5Niw3IEBAIGludCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndikKICAJCXJjIHw9IHJvdGF0ZUxvZ1NldChsb2csIGZvcmNlKTsKICAKICAJaWYgKCFkZWJ1ZykKQEAgLTE0NSwzICsxNDYsNiBAQAogIAogIAlyZXR1cm4gKHJjICE9IDApOwogIH0KKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xvZ3JvdGF0ZS9sb2dyb3RhdGUvdXBkYXRlLXRoZS1tYW51YWwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xvZ3JvdGF0ZS9sb2dyb3RhdGUvdXBkYXRlLXRoZS1tYW51YWwucGF0Y2gKaW5kZXggNTBkMDM3ZC4uNzI1NTY3ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sb2dyb3RhdGUvbG9ncm90YXRlL3VwZGF0ZS10aGUtbWFudWFsLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbG9ncm90YXRlL2xvZ3JvdGF0ZS91cGRhdGUtdGhlLW1hbnVhbC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gZTBiMGZlMzBlOWM0OTIzNDk5NGEyMGE4NmFhY2ZhZjgwZTY5MDA4NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYmYyMmU4ODA1ZGY2OTM0NGY2ZjIwY2VhMzkwZTgyOWEyMmZhNzQxYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgogRGF0ZTogVHVlLCAxNyBGZWIgMjAxNSAyMToxNDozNyAtMDgwMAogU3ViamVjdDogW1BBVENIXSBVcGRhdGUgdGhlIG1hbnVhbApAQCAtOSwxNCArOSwxNCBAQAogCiBTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KIC0tLQotIGxvZ3JvdGF0ZS44IHwgICAxMCArKysrLS0tLS0tCisgbG9ncm90YXRlLjguaW4gfCAxMCArKysrLS0tLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL2xvZ3JvdGF0ZS44IGIvbG9ncm90YXRlLjgKLWluZGV4IGU0ZTVmNDguLjg0NDA3ZDAgMTAwNjQ0Ci0tLS0gYS9sb2dyb3RhdGUuOAotKysrIGIvbG9ncm90YXRlLjgKLUBAIC00MDUsMTIgKzQwNSwxMCBAQCBEbyBub3Qgcm90YXRlIHRoZSBsb2cgaWYgaXQgaXMgZW1wdHkgKHRoaXMgb3ZlcnJpZGVzIHRoZSBcZkJpZmVtcHR5XGZSIG9wdGlvbikuCitkaWZmIC0tZ2l0IGEvbG9ncm90YXRlLjguaW4gYi9sb2dyb3RhdGUuOC5pbgoraW5kZXggOTUxZTQwNi4uNTgxYmY0OCAxMDA2NDQKKy0tLSBhL2xvZ3JvdGF0ZS44LmluCisrKysgYi9sb2dyb3RhdGUuOC5pbgorQEAgLTQ0NSwxMiArNDQ1LDEwIEBAIERvIG5vdCByb3RhdGUgdGhlIGxvZyBpZiBpdCBpcyBlbXB0eSAodGhpcyBvdmVycmlkZXMgdGhlIFxmQmlmZW1wdHlcZlIgb3B0aW9uKS4KICAKICAuVFAKICBcZkJvbGRkaXIgXGZJZGlyZWN0b3J5XGZSCkBAIC0zNCw1ICszNCw1IEBACiAgCiAgLlRQCiAtLSAKLTEuNy45LjUKKzEuOC4zLjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sb2dyb3RhdGUvbG9ncm90YXRlXzMuMTIuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbG9ncm90YXRlL2xvZ3JvdGF0ZV8zLjEyLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjIwYjIwOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbG9ncm90YXRlL2xvZ3JvdGF0ZV8zLjEyLjMuYmIKQEAgLTAsMCArMSw4NSBAQAorU1VNTUFSWSA9ICJSb3RhdGVzLCBjb21wcmVzc2VzLCByZW1vdmVzIGFuZCBtYWlscyBzeXN0ZW0gbG9nIGZpbGVzIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xvZ3JvdGF0ZS9sb2dyb3RhdGUvaXNzdWVzIgorTElDRU5TRSA9ICJHUEx2MiIKKworIyBUT0RPOiBEb2N1bWVudCBjb3JldXRpbHMgZGVwZW5kZW5jeS4gV2h5IG5vdCBSREVQRU5EUz8gV2h5IG5vdCBidXN5Ym94PworCitERVBFTkRTPSJjb3JldXRpbHMgcG9wdCIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCisKKyMgV2hlbiB1cGRhdGluZyBsb2dyb3RhdGUgdG8gbGF0ZXN0IHVwc3RyZWFtLCBTUkNfVVJJIHNob3VsZCBwb2ludCB0bworIyBhIHByb3BlciByZWxlYXNlIHRhcmJhbGwgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vbG9ncm90YXRlL2xvZ3JvdGF0ZS9yZWxlYXNlcworIyBhbmQgd2UgaGF2ZSB0byB0YWtlIHRoZSBzbmFwc2hvdCBmb3Igbm93IGJlY2F1c2UgdGhlcmUgaXMgbm8gc3VjaAorIyB0YXJiYWxsIGF2YWlsYWJsZSBmb3IgMy45LjEuCisKK1MgPSAiJHtXT1JLRElSfS8ke0JQTn0tJHtQVn0iCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vJHtCUE59LyR7QlBOfS9yZWxlYXNlcyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gImxvZ3JvdGF0ZS0oP1A8cHZlcj5cZCsoXC5cZCspKykudGFyIgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS8ke0JQTn0vJHtCUE59L3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9LyR7QlB9LnRhci54eiBcCisgICAgICAgICAgICBmaWxlOi8vYWN0LWFzLW12LXdoZW4tcm90YXRlLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly91cGRhdGUtdGhlLW1hbnVhbC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1jaGVjay1kaWZmZXJlbnQtZmlsZXN5c3RlbXMucGF0Y2ggXAorICAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYTU2MGM1N2ZhYzg3YzQ1YjJmYzE3NDA2Y2RmNzkyODgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmU2YTQwMWNhYzkwMjRkYjIyODgyOTdlM2JlMWE4YWI2MGU3NDAxYmE4ZTkxMjI1MjE4YWFmNGEyN2U4MmEwNyIKKworUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWNsIHNlbGludXgnLCBkKX0iCisKK1BBQ0tBR0VDT05GSUdbYWNsXSA9ICIsLGFjbCIKK1BBQ0tBR0VDT05GSUdbc2VsaW51eF0gPSAiLCxsaWJzZWxpbnV4IgorCitDT05GRklMRVNfJHtQTn0gKz0gIiR7bG9jYWxzdGF0ZWRpcn0vbGliL2xvZ3JvdGF0ZS5zdGF0dXMgXAorCQkgICAgJHtzeXNjb25mZGlyfS9sb2dyb3RhdGUuY29uZiIKKworIyBJZiBSUE1fT1BUX0ZMQUdTIGlzIHVuc2V0LCBpdCBhZGRzIC1nIGl0c2VsZiByYXRoZXIgdGhhbiBvYmV5aW5nIG91cgorIyBvcHRpbWl6YXRpb24gdmFyaWFibGVzLCBzbyB1c2UgaXQgcmF0aGVyIHRoYW4gRVhUUkFfQ0ZMQUdTLgorRVhUUkFfT0VNQUtFID0gIlwKKyAgICBMRlM9IFwKKyAgICBPU19OQU1FPScke09TX05BTUV9JyBcCisgICAgJ0NDPSR7Q0N9JyBcCisgICAgJ1JQTV9PUFRfRkxBR1M9JHtDRkxBR1N9JyBcCisgICAgJ0VYVFJBX0xERkxBR1M9JHtMREZMQUdTfScgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2FjbCcsICdXSVRIX0FDTD15ZXMnLCAnJywgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzZWxpbnV4JywgJ1dJVEhfU0VMSU5VWD15ZXMnLCAnJywgZCl9IFwKKyIKKworIyBPU19OQU1FIGluIHRoZSBtYWtlZmlsZSBkZWZhdWx0cyB0byBgdW5hbWUgLXNgLiBUaGUgYmVoYXZpb3IgZm9yCisjIGZyZWVic2QvbmV0YnNkIGlzIHF1ZXN0aW9uYWJsZSwgc28gbGVhdmUgaXQgYXMgTGludXgsIHdoaWNoIG9ubHkgc2V0cworIyBJTlNUQUxMPWluc3RhbGwgYW5kIEJBU0VESVI9L3Vzci4KK09TX05BTUUgPSAiTGludXgiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHN5c3RlbWQKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIlwKKyAgICAke0JQTn0uc2VydmljZSBcCisgICAgJHtCUE59LnRpbWVyIFwKKyIKKworTE9HUk9UQVRFX1NZU1RFTURfVElNRVJfQkFTSVMgPz0gImRhaWx5IgorTE9HUk9UQVRFX1NZU1RFTURfVElNRVJfQUNDVVJBQ1kgPz0gIjEyaCIKKworZG9faW5zdGFsbCgpeworICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0gUFJFRklYPSR7RH0gTUFORElSPSR7bWFuZGlyfQorICAgIG1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2xvZ3JvdGF0ZS5kCisgICAgbWtkaXIgLXAgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliCisgICAgaW5zdGFsbCAtcCAtbSA2NDQgJHtTfS9leGFtcGxlcy9sb2dyb3RhdGUtZGVmYXVsdCAke0R9JHtzeXNjb25mZGlyfS9sb2dyb3RhdGUuY29uZgorICAgIHRvdWNoICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9sb2dyb3RhdGUuc3RhdHVzCisKKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9CisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2V4YW1wbGVzL2xvZ3JvdGF0ZS5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2xvZ3JvdGF0ZS5zZXJ2aWNlCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2V4YW1wbGVzL2xvZ3JvdGF0ZS50aW1lciAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9sb2dyb3RhdGUudGltZXIKKyAgICAgICAgc2VkIC1pIC1lICdzLE9uQ2FsZW5kYXI9LiokLE9uQ2FsZW5kYXI9JHtMT0dST1RBVEVfU1lTVEVNRF9USU1FUl9CQVNJU30sZycgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbG9ncm90YXRlLnRpbWVyCisgICAgICAgIHNlZCAtaSAtZSAncyxBY2N1cmFjeVNlYz0uKiQsQWNjdXJhY3lTZWM9JHtMT0dST1RBVEVfU1lTVEVNRF9USU1FUl9BQ0NVUkFDWX0sZycgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbG9ncm90YXRlLnRpbWVyCisgICAgZmkKKworICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorICAgICAgICBta2RpciAtcCAke0R9JHtzeXNjb25mZGlyfS9jcm9uLmRhaWx5CisgICAgICAgIGluc3RhbGwgLXAgLW0gMDc1NSAke1N9L2V4YW1wbGVzL2xvZ3JvdGF0ZS5jcm9uICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uZGFpbHkvbG9ncm90YXRlCisgICAgZmkKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbG9ncm90YXRlL2xvZ3JvdGF0ZV8zLjkuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbG9ncm90YXRlL2xvZ3JvdGF0ZV8zLjkuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzkzOGQ5Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xvZ3JvdGF0ZS9sb2dyb3RhdGVfMy45LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi1TVU1NQVJZID0gIlJvdGF0ZXMsIGNvbXByZXNzZXMsIHJlbW92ZXMgYW5kIG1haWxzIHN5c3RlbSBsb2cgZmlsZXMiCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vbG9ncm90YXRlL2xvZ3JvdGF0ZS9pc3N1ZXMiCi1MSUNFTlNFID0gIkdQTHYyIgotCi0jIFRPRE86IGxvZ3JvdGF0ZSAzLjguOCBhZGRzIGF1dG90b29scy9hdXRvbWFrZSBzdXBwb3J0LCB1cGRhdGUgcmVjaXBlIHRvIHVzZSBpdC4KLSMgVE9ETzogRG9jdW1lbnQgY29yZXV0aWxzIGRlcGVuZGVuY3kuIFdoeSBub3QgUkRFUEVORFM/IFdoeSBub3QgYnVzeWJveD8KLQotREVQRU5EUz0iY29yZXV0aWxzIHBvcHQiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTE4ODEwNjY5ZjEzYjg3MzQ4NDU5ZTYxMWQzMWFiNzYwIgotCi0jIFdoZW4gdXBkYXRpbmcgbG9ncm90YXRlIHRvIGxhdGVzdCB1cHN0cmVhbSwgU1JDX1VSSSBzaG91bGQgcG9pbnQgdG8KLSMgYSBwcm9wZXIgcmVsZWFzZSB0YXJiYWxsIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2xvZ3JvdGF0ZS9sb2dyb3RhdGUvcmVsZWFzZXMKLSMgYW5kIHdlIGhhdmUgdG8gdGFrZSB0aGUgc25hcHNob3QgZm9yIG5vdyBiZWNhdXNlIHRoZXJlIGlzIG5vIHN1Y2gKLSMgdGFyYmFsbCBhdmFpbGFibGUgZm9yIDMuOS4xLgotCi1TID0gIiR7V09SS0RJUn0vJHtCUE59LXIzLTktMSIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS8ke0JQTn0vJHtCUE59L3JlbGVhc2VzIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS8ke0JQTn0vJHtCUE59L2FyY2hpdmUvcjMtOS0xLnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9hY3QtYXMtbXYtd2hlbi1yb3RhdGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdXBkYXRlLXRoZS1tYW51YWwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1jaGVjay1kaWZmZXJlbnQtZmlsZXN5c3RlbXMucGF0Y2ggXAotICAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiODU3MmI3YzJjZjlhZGUwOWE4YThlMTAwOTg1MDBmYjMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWJmOGU0NzhjNDI4ZTc3NDRmZWZhNDY1MTE4ZjgyOTZlN2U3NzFjOTgxZmI2ZGZmYjc1Mjc4NTZhMGVhMzYxNyIKLQotUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWNsIHNlbGludXgnLCBkKX0iCi0KLVBBQ0tBR0VDT05GSUdbYWNsXSA9ICIsLGFjbCIKLVBBQ0tBR0VDT05GSUdbc2VsaW51eF0gPSAiLCxsaWJzZWxpbnV4IgotCi1DT05GRklMRVNfJHtQTn0gKz0gIiR7bG9jYWxzdGF0ZWRpcn0vbGliL2xvZ3JvdGF0ZS5zdGF0dXMgXAotCQkgICAgJHtzeXNjb25mZGlyfS9sb2dyb3RhdGUuY29uZiIKLQotIyBJZiBSUE1fT1BUX0ZMQUdTIGlzIHVuc2V0LCBpdCBhZGRzIC1nIGl0c2VsZiByYXRoZXIgdGhhbiBvYmV5aW5nIG91cgotIyBvcHRpbWl6YXRpb24gdmFyaWFibGVzLCBzbyB1c2UgaXQgcmF0aGVyIHRoYW4gRVhUUkFfQ0ZMQUdTLgotRVhUUkFfT0VNQUtFID0gIlwKLSAgICBMRlM9IFwKLSAgICBPU19OQU1FPScke09TX05BTUV9JyBcCi0gICAgJ0NDPSR7Q0N9JyBcCi0gICAgJ1JQTV9PUFRfRkxBR1M9JHtDRkxBR1N9JyBcCi0gICAgJ0VYVFJBX0xERkxBR1M9JHtMREZMQUdTfScgXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2FjbCcsICdXSVRIX0FDTD15ZXMnLCAnJywgZCl9IFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzZWxpbnV4JywgJ1dJVEhfU0VMSU5VWD15ZXMnLCAnJywgZCl9IFwKLSIKLQotIyBPU19OQU1FIGluIHRoZSBtYWtlZmlsZSBkZWZhdWx0cyB0byBgdW5hbWUgLXNgLiBUaGUgYmVoYXZpb3IgZm9yCi0jIGZyZWVic2QvbmV0YnNkIGlzIHF1ZXN0aW9uYWJsZSwgc28gbGVhdmUgaXQgYXMgTGludXgsIHdoaWNoIG9ubHkgc2V0cwotIyBJTlNUQUxMPWluc3RhbGwgYW5kIEJBU0VESVI9L3Vzci4KLU9TX05BTUUgPSAiTGludXgiCi0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLSAgICAjIE1ha2Ugc3VyZSB0aGUgcmVjb21waWxlIGlzIE9LCi0gICAgcm0gLWYgJHtCfS8uZGVwZW5kCi19Ci0KLWRvX2luc3RhbGwoKXsKLSAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9IFBSRUZJWD0ke0R9IE1BTkRJUj0ke21hbmRpcn0KLSAgICBta2RpciAtcCAke0R9JHtzeXNjb25mZGlyfS9sb2dyb3RhdGUuZAotICAgIG1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uZGFpbHkKLSAgICBta2RpciAtcCAke0R9JHtsb2NhbHN0YXRlZGlyfS9saWIKLSAgICBpbnN0YWxsIC1wIC1tIDY0NCBleGFtcGxlcy9sb2dyb3RhdGUtZGVmYXVsdCAke0R9JHtzeXNjb25mZGlyfS9sb2dyb3RhdGUuY29uZgotICAgIGluc3RhbGwgLXAgLW0gNzU1IGV4YW1wbGVzL2xvZ3JvdGF0ZS5jcm9uICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uZGFpbHkvbG9ncm90YXRlCi0gICAgdG91Y2ggJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL2xvZ3JvdGF0ZS5zdGF0dXMKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYl80LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2JfNC4xLmJiCmluZGV4IGNlZGYzOWUuLjA3ODU2MTAgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYl80LjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiXzQuMS5iYgpAQCAtMjIsNiArMjIsNyBAQAogICAgICAgICAgICBmaWxlOi8vbHNiX3BpZG9mcHJvYyBcCiAgICAgICAgICAgIGZpbGU6Ly9sc2Jfc3RhcnRfZGFlbW9uIFwKICAgICAgICAgICAgIgorVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICIzMDUzN2VmNWEwMWUwY2E5NGI3YjhlYjZhMzZiYjFlNCIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI5OTMyMTI4OGY4ZDYyZTdhMWQ0ODViN2M2YmRjY2YwNjc2NmZiOGNhNjAzYzYxOTU4MDZlNDQ1N2ZkZjE3MTcyIgpAQCAtOTAsMTEgKzkxLDEzIEBACiAgICAgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaW5pdC1mdW5jdGlvbnMgJHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vbHNiCiAKICAgICAgICAjIGNyZWF0ZSBsaW5rcyBmb3IgTFNCIHRlc3QKLSAgICAgICBpZiBbICIke25vbmFyY2hfYmFzZV9saWJkaXJ9IiAhPSAiJHtub25hcmNoX2xpYmRpcn0iIF0gOyB0aGVuCi0gICAgICAgICAgICAgICBpbnN0YWxsIC1kICR7RH0ke25vbmFyY2hfbGliZGlyfS9sc2IKKyAgICAgICBpZiBbIC1lICR7c2JpbmRpcn0vY2hrY29uZmlnIF07IHRoZW4KKyAgICAgICAgICAgICAgIGlmIFsgIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0iICE9ICIke25vbmFyY2hfbGliZGlyfSIgXSA7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtub25hcmNoX2xpYmRpcn0vbHNiCisgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgbG4gLXNmICR7c2JpbmRpcn0vY2hrY29uZmlnICR7RH0ke25vbmFyY2hfbGliZGlyfS9sc2IvaW5zdGFsbF9pbml0ZAorICAgICAgICAgICAgICAgbG4gLXNmICR7c2JpbmRpcn0vY2hrY29uZmlnICR7RH0ke25vbmFyY2hfbGliZGlyfS9sc2IvcmVtb3ZlX2luaXRkCiAgICAgICAgZmkKLSAgICAgICBsbiAtc2YgJHtzYmluZGlyfS9jaGtjb25maWcgJHtEfSR7bm9uYXJjaF9saWJkaXJ9L2xzYi9pbnN0YWxsX2luaXRkCi0gICAgICAgbG4gLXNmICR7c2JpbmRpcn0vY2hrY29uZmlnICR7RH0ke25vbmFyY2hfbGliZGlyfS9sc2IvcmVtb3ZlX2luaXRkCiAKICAgICAgICBpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAieDg2XzY0IiBdOyB0aGVuCiAgICAgICAgICAgICAgICBpZiBbICIke2Jhc2VfbGliZGlyfSIgIT0gIiR7YmFzZV9wcmVmaXh9L2xpYjY0IiBdOyB0aGVuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2Jpbml0c2NyaXB0cy9mdW5jdGlvbnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2Jpbml0c2NyaXB0cy9mdW5jdGlvbnMucGF0Y2gKaW5kZXggYTc1NmQwNC4uOWM1OGQ5MCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiaW5pdHNjcmlwdHMvZnVuY3Rpb25zLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYmluaXRzY3JpcHRzL2Z1bmN0aW9ucy5wYXRjaApAQCAtMSwyNiArMSwzMiBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQorRnJvbSA1NzQ2OGM1ZjRlMzY0YmRhZDU1NjYwNGRjYTA5MDQ2ZTFhZmNhOTI5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRmFuIFhpbiA8ZmFuLnhpbkBqcC5mdWppdHN1LmNvbT4KK0RhdGU6IE1vbiwgNSBKdW4gMjAxNyAxNjoyNjo0NyArMDkwMAorU3ViamVjdDogW1BBVENIXSBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCiAKIFNpZ25lZC1vZmYtYnk6IFhpYW9mZW5nIFlhbiA8eGlhb2ZlbmcueWFuQHdpbmRyaXZlci5jb20+CiBTaWduZWQtb2ZmLWJ5OiBTYXVsIFdvbGQgPHNnd0BsaW51eC5pbnRlbC5jb20+CiAKLUluZGV4OiBpbml0c2NyaXB0cy05LjQzL3JjLmQvaW5pdC5kL2Z1bmN0aW9ucwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGluaXRzY3JpcHRzLTkuNDMub3JpZy9yYy5kL2luaXQuZC9mdW5jdGlvbnMKLSsrKyBpbml0c2NyaXB0cy05LjQzL3JjLmQvaW5pdC5kL2Z1bmN0aW9ucwotQEAgLTEzLDYgKzEzLDcgQEAgdW1hc2sgMDIyCi0gUEFUSD0iL3NiaW46L3Vzci9zYmluOi9iaW46L3Vzci9iaW4iCi0gZXhwb3J0IFBBVEgKLSAKLSsKLSBpZiBbICRQUElEIC1uZSAxIC1hIC16ICIkU1lTVEVNQ1RMX1NLSVBfUkVESVJFQ1QiIF0gJiYgXAotIAkJKCAvYmluL21vdW50cG9pbnQgLXEgL2Nncm91cC9zeXN0ZW1kIHx8IC9iaW4vbW91bnRwb2ludCAtcSAvc3lzL2ZzL2Nncm91cC9zeXN0ZW1kICkgOyB0aGVuCi0gICAgICAgICBjYXNlICIkMCIgaW4KLUBAIC01NCw3ICs1NSw3IEBAIHN5c3RlbWN0bF9yZWRpcmVjdCAoKSB7CitSZWJhc2Ugb24gOS43MgorCitTaWduZWQtb2ZmLWJ5OiBGYW4gWGluIDxmYW4ueGluQGpwLmZ1aml0c3UuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBpbml0c2NyaXB0cy05LjcyL3JjLmQvaW5pdC5kL2Z1bmN0aW9ucyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2luaXRzY3JpcHRzLTkuNzIvcmMuZC9pbml0LmQvZnVuY3Rpb25zIGIvaW5pdHNjcmlwdHMtOS43Mi9yYy5kL2luaXQuZC9mdW5jdGlvbnMKK2luZGV4IDBmNjI3ZjEuLmE2YWEwOTIgMTAwNjQ0CistLS0gYS9pbml0c2NyaXB0cy05LjcyL3JjLmQvaW5pdC5kL2Z1bmN0aW9ucworKysrIGIvaW5pdHNjcmlwdHMtOS43Mi9yYy5kL2luaXQuZC9mdW5jdGlvbnMKK0BAIC01OSw3ICs1OSw3IEBAIHN5c3RlbWN0bF9yZWRpcmVjdCAoKSB7CiAgWyAteiAiJHtDT0xVTU5TOi19IiBdICYmIENPTFVNTlM9ODAKICAKICBpZiBbIC16ICIke0NPTlNPTEVUWVBFOi19IiBdOyB0aGVuCi0tICBpZiBbIC1jICIvZGV2L3N0ZGVyciIgLWEgLXIgIi9kZXYvc3RkZXJyIiBdOyB0aGVuCi0rICBpZiBbIC1jICIvZGV2L3N0ZGVyciIgLWEgLXIgIi9kZXYvc3RkZXJyIiAtYSAtZSAvc2Jpbi9jb25zb2xldHlwZSBdOyB0aGVuCi0gICAgIENPTlNPTEVUWVBFPSIkKC9zYmluL2NvbnNvbGV0eXBlIDwgL2Rldi9zdGRlcnIgMj4vZGV2L251bGwpIgotICAgZWxzZQotICAgICBDT05TT0xFVFlQRT0ic2VyaWFsIgorLSAgICBpZiBbIC1jICIvZGV2L3N0ZGVyciIgLWEgLXIgIi9kZXYvc3RkZXJyIiBdOyB0aGVuCisrICAgIGlmIFsgLWMgIi9kZXYvc3RkZXJyIiAtYSAtciAiL2Rldi9zdGRlcnIiIC1hIC1lIC9zYmluL2NvbnNvbGV0eXBlIF07IHRoZW4KKyAgICAgICAgIENPTlNPTEVUWVBFPSIkKC9zYmluL2NvbnNvbGV0eXBlIDwgL2Rldi9zdGRlcnIgMj4vZGV2L251bGwpIgorICAgICBlbHNlCisgICAgICAgICBDT05TT0xFVFlQRT0ic2VyaWFsIgorLS0gCisxLjkuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2Jpbml0c2NyaXB0c185LjY4LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiaW5pdHNjcmlwdHNfOS42OC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGMwOGZmZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2Jpbml0c2NyaXB0c185LjY4LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotU1VNTUFSWSA9ICJTeXNWIGluaXQgc2NyaXB0cyB3aGljaCBhcmUgb25seSB1c2VkIGluIGFuIExTQiBpbWFnZSIKLVNFQ1RJT04gPSAiYmFzZSIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1ERVBFTkRTID0gInBvcHQgZ2xpYi0yLjAiCi0KLVJERVBFTkRTXyR7UE59ICs9ICJ1dGlsLWxpbnV4IgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lYmY0ZThiNDk3ODBhYjE4N2Q1MWJkMjZhYWEwMjJjNiIKLQotUz0iJHtXT1JLRElSfS9pbml0c2NyaXB0cy0ke1BWfSIKLVNSQ19VUkkgPSAiaHR0cDovL3BrZ3MuZmVkb3JhcHJvamVjdC5vcmcvcmVwby9wa2dzL2luaXRzY3JpcHRzL2luaXRzY3JpcHRzLSR7UFZ9LnRhci5iejIvNmE1MWE1YWYzOGUwMTQ0NWY1Mzk4OWVkMDcyN2MzZTEvaW5pdHNjcmlwdHMtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9mdW5jdGlvbnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1mdW5jdGlvbnMtYXZvaWQtZXhpdC0xLXdoaWNoLWNhdXNlcy1pbml0LXNjcmlwdHMtdG8tLnBhdGNoIFwKLSAgICAgICAgICAiIAotCi1TUkNfVVJJW21kNXN1bV0gPSAiNmE1MWE1YWYzOGUwMTQ0NWY1Mzk4OWVkMDcyN2MzZTEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmExYzZlOWRiYWEzN2E2NzY1MThmNDgwM2I1MDFlMTA3YzA1OGJiMTRlZjdhOGRiMjRjNTJiNzdmYmNiYTUzMSIKLQotaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLUFMVEVSTkFUSVZFXyR7UE59ID0gImZ1bmN0aW9ucyIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtmdW5jdGlvbnNdID0gIiR7c3lzY29uZmRpcn0vaW5pdC5kL2Z1bmN0aW9ucyIKLQotIyBTaW5jZSB3ZSBhcmUgb25seSB0YWtpbmcgdGhlIHBhdGNoZWQgdmVyc2lvbiBvZiBmdW5jdGlvbnMsIG5vIG5lZWQgdG8KLSMgY29uZmlndXJlIG9yIGNvbXBpbGUgYW55dGhpbmcgc28gZG8gbm90IGV4ZWN1dGUgdGhlc2UKLWRvX2NvbmZpZ3VyZVtub2V4ZWNdID0gIjEiIAotZG9fY29tcGlsZVtub2V4ZWNdID0gIjEiIAotCi1kb19pbnN0YWxsKCl7Ci0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvCi0JaW5zdGFsbCAtbSAwNjQ0ICR7U30vcmMuZC9pbml0LmQvZnVuY3Rpb25zICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9mdW5jdGlvbnMKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYmluaXRzY3JpcHRzXzkuNzIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2Jpbml0c2NyaXB0c185LjcyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkNzRhNmYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2Jpbml0c2NyaXB0c185LjcyLmJiCkBAIC0wLDAgKzEsMzAgQEAKK1NVTU1BUlkgPSAiU3lzViBpbml0IHNjcmlwdHMgd2hpY2ggYXJlIG9ubHkgdXNlZCBpbiBhbiBMU0IgaW1hZ2UiCitIT01FUEFHRSA9ICJodHRwczovL3dpa2kuZGViaWFuLm9yZy9MU0JJbml0U2NyaXB0cyIKK1NFQ1RJT04gPSAiYmFzZSIKK0xJQ0VOU0UgPSAiR1BMdjIiCitERVBFTkRTID0gInBvcHQgZ2xpYi0yLjAiCisKK1JQUk9WSURFU18ke1BOfSArPSAiaW5pdGQtZnVuY3Rpb25zIgorUkRFUEVORFNfJHtQTn0gKz0gInV0aWwtbGludXgiCitSQ09ORkxJQ1RTXyR7UE59ID0gImluaXRzY3JpcHRzLWZ1bmN0aW9ucyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWJmNGU4YjQ5NzgwYWIxODdkNTFiZDI2YWFhMDIyYzYiCisKK1M9IiR7V09SS0RJUn0vaW5pdHNjcmlwdHMtJHtQVn0iCitTUkNfVVJJID0gImh0dHA6Ly9wa2dzLmZlZG9yYXByb2plY3Qub3JnL3JlcG8vcGtncy9pbml0c2NyaXB0cy9pbml0c2NyaXB0cy0ke1BWfS50YXIuZ3ovc2hhNTEyL2I2ZWQzOGY5NTc2ZTkyMjdjMmVjZjA0N2UyZDYwZTFlODcyZjQwZDUxZDEzODYxYjBjOTFkZGRiMjgyZjEwZjdlNmI3OTcwNmE0ZDE0MzVkN2E1N2ExNGEwYjczYTFiNzE1NDFjZmU0NGMwMGU4ZTAzZWY5NmIwOGRlMTllYzMyL2luaXRzY3JpcHRzLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9mdW5jdGlvbnMucGF0Y2g7c3RyaXBsZXZlbD0yIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZnVuY3Rpb25zLWF2b2lkLWV4aXQtMS13aGljaC1jYXVzZXMtaW5pdC1zY3JpcHRzLXRvLS5wYXRjaCBcCisgICAgICAgICAgIiAKKworU1JDX1VSSVttZDVzdW1dID0gImQ2Yzc5OGY0MGRjZWIxMTdlMTIxMjZkOTRjYjI1YTlhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE3OTM2NzdiZGQxZjdlZTRjYjAwODc4Y2U0MzM0NjE5NjM3NGY4NDhhNGM4ZTQ1NTllMDg2MDQwZmM3NDg3ZGIiCisKKyMgU2luY2Ugd2UgYXJlIG9ubHkgdGFraW5nIHRoZSBwYXRjaGVkIHZlcnNpb24gb2YgZnVuY3Rpb25zLCBubyBuZWVkIHRvCisjIGNvbmZpZ3VyZSBvciBjb21waWxlIGFueXRoaW5nIHNvIGRvIG5vdCBleGVjdXRlIHRoZXNlCitkb19jb25maWd1cmVbbm9leGVjXSA9ICIxIiAKK2RvX2NvbXBpbGVbbm9leGVjXSA9ICIxIiAKKworZG9faW5zdGFsbCgpeworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kLworCWluc3RhbGwgLW0gMDY0NCAke1N9L3JjLmQvaW5pdC5kL2Z1bmN0aW9ucyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvZnVuY3Rpb25zCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2J0ZXN0XzEuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYnRlc3RfMS4wLmJiCmluZGV4IGVhMTI1MDIuLjM2ZjUyZmQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYnRlc3RfMS4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYnRlc3RfMS4wLmJiCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJBdXRvbWF0ZXMgTGludXggU3RhbmRhcmQgQmFzZSAoTFNCKSB0ZXN0cyIKK0hPTUVQQUdFID0gImh0dHBzOi8vd2lraS5kZWJpYW4ub3JnL0xTQkluaXRTY3JpcHRzIgogU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgogTElDRU5TRSA9ICJHUEx2MiIKIFBSID0gInIzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc29mL2ZpbGVzL2xzb2YtcmVtb3ZlLWhvc3QtaW5mb3JtYXRpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzb2YvZmlsZXMvbHNvZi1yZW1vdmUtaG9zdC1pbmZvcm1hdGlvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iN2QyMzIzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc29mL2ZpbGVzL2xzb2YtcmVtb3ZlLWhvc3QtaW5mb3JtYXRpb24ucGF0Y2gKQEAgLTAsMCArMSw3NiBAQAorUmVtb3ZlIGhvc3QgaW5mb3JtYXRpb24gZnJvbSB2ZXJzaW9uLmgKKworbWFrZSBsc29mIG5vdCBpbmNsdWRlIGhvc3QgaW5mb3JtYXRpb24KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogTGkgV2FuZyA8bGkud2FuZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgZGlhbGVjdHMvbGludXgvTWFrZWZpbGUgfCAgIDUwICsrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgNDEgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9kaWFsZWN0cy9saW51eC9NYWtlZmlsZSBiL2RpYWxlY3RzL2xpbnV4L01ha2VmaWxlCitpbmRleCAyYmVhMTA4Li43OTIxNDJiIDEwMDY0NAorLS0tIGEvZGlhbGVjdHMvbGludXgvTWFrZWZpbGUKKysrKyBiL2RpYWxlY3RzL2xpbnV4L01ha2VmaWxlCitAQCAtNzYsNDggKzc2LDE2IEBAIHZlcnNpb24uaDoJRlJDCisgCUBlY2hvIENvbnN0cnVjdGluZyB2ZXJzaW9uLmgKKyAJQHJtIC1mIHZlcnNpb24uaAorIAlAZWNobyAnI2RlZmluZQlMU09GX0JMRENNVAkiJHtMU09GX0JMRENNVH0iJyA+IHZlcnNpb24uaDsKKy0JQGVjaG8gJyNkZWZpbmUJTFNPRl9DQwkJIiR7Q0N9IicgPj4gdmVyc2lvbi5oCistCUBlY2hvICcjZGVmaW5lCUxTT0ZfQ0NWCSIke0NDVn0iJyA+PiB2ZXJzaW9uLmgKKy0JQGVjaG8gJyNkZWZpbmUJTFNPRl9DQ0RBVEUJIidgZGF0ZWAnIicgPj4gdmVyc2lvbi5oCistCUBlY2hvICcjZGVmaW5lCUxTT0ZfQ0NGTEFHUwkiJ2BlY2hvICR7Q0ZMQUdTfSB8IHNlZCAncy9cXFxcKC9cXCgvZycgfCBzZWQgJ3MvXFxcXCkvXFwpL2cnIHwgc2VkICdzLyIvXFxcXCIvZydgJyInID4+IHZlcnNpb24uaAorKwlAZWNobyAnI2RlZmluZQlMU09GX0NDCQkiIicgPj4gdmVyc2lvbi5oCisrCUBlY2hvICcjZGVmaW5lCUxTT0ZfQ0NWCSIiJyA+PiB2ZXJzaW9uLmgKKysJQGVjaG8gJyNkZWZpbmUJTFNPRl9DQ0RBVEUJIiInID4+IHZlcnNpb24uaAorKwlAZWNobyAnI2RlZmluZQlMU09GX0NDRkxBR1MJIiInID4+IHZlcnNpb24uaAorIAlAZWNobyAnI2RlZmluZQlMU09GX0NJTkZPCSIke0NJTkZPfSInID4+IHZlcnNpb24uaAorLQlAaWYgWyAiWCR7TFNPRl9IT1NUfSIgPSAiWCIgXTsgdGhlbiBcCistCSAgZWNobyAnI2RlZmluZQlMU09GX0hPU1QJIidgdW5hbWUgLW5gJyInID4+IHZlcnNpb24uaDsgXAorLQllbHNlIFwKKy0JICBpZiBbICIke0xTT0ZfSE9TVH0iID0gIm5vbmUiIF07IHRoZW4gXAorLQkgICAgZWNobyAnI2RlZmluZQlMU09GX0hPU1QJIiInID4+IHZlcnNpb24uaDsgXAorLQkgIGVsc2UgXAorLQkgICAgZWNobyAnI2RlZmluZQlMU09GX0hPU1QJIiR7TFNPRl9IT1NUfSInID4+IHZlcnNpb24uaDsgXAorLQkgIGZpIFwKKy0JZmkKKy0JQGVjaG8gJyNkZWZpbmUJTFNPRl9MREZMQUdTCSIke0NGR0x9IicgPj4gdmVyc2lvbi5oCistCUBpZiBbICJYJHtMU09GX0xPR05BTUV9IiA9ICJYIiBdOyB0aGVuIFwKKy0JICBlY2hvICcjZGVmaW5lCUxTT0ZfTE9HTkFNRQkiJHtMT0dOQU1FfSInID4+IHZlcnNpb24uaDsgXAorLQllbHNlIFwKKy0JICBpZiBbICIke0xTT0ZfTE9HTkFNRX0iID0gIm5vbmUiIF07IHRoZW4gXAorLQkgICAgZWNobyAnI2RlZmluZQlMU09GX0xPR05BTUUJIiInID4+IHZlcnNpb24uaDsgXAorLQkgIGVsc2UgXAorLQkgICAgZWNobyAnI2RlZmluZQlMU09GX0xPR05BTUUJIiR7TFNPRl9MT0dOQU1FfSInID4+IHZlcnNpb24uaDsgXAorLQkgIGZpOyBcCistCWZpCistCUBpZiBbICJYJHtMU09GX1NZU0lORk99IiA9ICJYIiBdOyB0aGVuIFwKKy0JICAgIGVjaG8gJyNkZWZpbmUJTFNPRl9TWVNJTkZPCSInYHVuYW1lIC1hYCciJyA+PiB2ZXJzaW9uLmg7IFwKKy0JZWxzZSBcCistCSAgaWYgWyAiJHtMU09GX1NZU0lORk99IiA9ICJub25lIiBdOyB0aGVuIFwKKy0JICAgIGVjaG8gJyNkZWZpbmUJTFNPRl9TWVNJTkZPCSIiJyA+PiB2ZXJzaW9uLmg7IFwKKy0JICBlbHNlIFwKKy0JICAgIGVjaG8gJyNkZWZpbmUJTFNPRl9TWVNJTkZPCSIke0xTT0ZfU1lTSU5GT30iJyA+PiB2ZXJzaW9uLmg7IFwKKy0JICBmaSBcCistCWZpCistCUBpZiBbICJYJHtMU09GX1VTRVJ9IiA9ICJYIiBdOyB0aGVuIFwKKy0JICBlY2hvICcjZGVmaW5lCUxTT0ZfVVNFUgkiJHtVU0VSfSInID4+IHZlcnNpb24uaDsgXAorLQllbHNlIFwKKy0JICBpZiBbICIke0xTT0ZfVVNFUn0iID0gIm5vbmUiIF07IHRoZW4gXAorLQkgICAgZWNobyAnI2RlZmluZQlMU09GX1VTRVIJIiInID4+IHZlcnNpb24uaDsgXAorLQkgIGVsc2UgXAorLQkgICAgZWNobyAnI2RlZmluZQlMU09GX1VTRVIJIiR7TFNPRl9VU0VSfSInID4+IHZlcnNpb24uaDsgXAorLQkgIGZpIFwKKy0JZmkKKysJQGVjaG8gJyNkZWZpbmUJTFNPRl9IT1NUCSIiJyA+PiB2ZXJzaW9uLmg7CisrCUBlY2hvICcjZGVmaW5lCUxTT0ZfTERGTEFHUwkiIicgPj4gdmVyc2lvbi5oCisrCUBlY2hvICcjZGVmaW5lCUxTT0ZfTE9HTkFNRQkiIicgPj4gdmVyc2lvbi5oOworKwlAZWNobyAnI2RlZmluZQlMU09GX1NZU0lORk8JIiInID4+IHZlcnNpb24uaDsKKysJQGVjaG8gJyNkZWZpbmUJTFNPRl9VU0VSCSIiJyA+PiB2ZXJzaW9uLmg7CisgCUBzZWQgJy9WTi9zLy5kcyBWTiBcKC4qXCkvI2RlZmluZQlMU09GX1ZFUlNJT04JIlwxIi8nIDwgdmVyc2lvbiA+PiB2ZXJzaW9uLmgKKyAKKyBGUkM6CistLSAKKzEuNy45LjUKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc29mL2xzb2ZfNC44OS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNvZi9sc29mXzQuODkuYmIKaW5kZXggMjkyNDViMS4uMTQ1NDZkYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc29mL2xzb2ZfNC44OS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzb2YvbHNvZl80Ljg5LmJiCkBAIC0xMSw3ICsxMSw5IEBACiAjIGh0dHBzOi8vcGVvcGxlLmZyZWVic2Qub3JnL35hYmUvICkuIGh0dHA6Ly93d3cubWlycm9yc2VydmljZS5vcmcgc2VlbXMgdG8gYmUKICMgdGhlIG1vc3QgY29tbW9ubHkgdXNlZCBhbHRlcm5hdGl2ZS4KIAotU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm1pcnJvcnNlcnZpY2Uub3JnL3NpdGVzL2xzb2YuaXRhcC5wdXJkdWUuZWR1L3B1Yi90b29scy91bml4L2xzb2YvbHNvZl8ke1BWfS50YXIuYnoyIgorU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm1pcnJvcnNlcnZpY2Uub3JnL3NpdGVzL2xzb2YuaXRhcC5wdXJkdWUuZWR1L3B1Yi90b29scy91bml4L2xzb2YvbHNvZl8ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL2xzb2YtcmVtb3ZlLWhvc3QtaW5mb3JtYXRpb24ucGF0Y2ggXAorICAgICAgICAgICIKIAogU1JDX1VSSVttZDVzdW1dID0gIjFiOWNkMzRmM2ZiODY4NTZhMTI1YWJiZjJiZTNhMzg2IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjgxYWMyZmM1ZmRjOTQ0NzkzYmFmNDFhMTQwMDJiNmRlYjVhMjkwOTZiMzg3NzQ0ZTI4ZjhjMzBhMzYwYTM3MTgiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMi1BZGQta25vYi10by1jb250cm9sLXdoZXRoZXItbnVtYS1zdXBwb3J0LXNob3VsZC1iZS1jLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDItQWRkLWtub2ItdG8tY29udHJvbC13aGV0aGVyLW51bWEtc3VwcG9ydC1zaG91bGQtYmUtYy5wYXRjaAppbmRleCAwNjg0YmVlLi45ODY1MDIwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMi1BZGQta25vYi10by1jb250cm9sLXdoZXRoZXItbnVtYS1zdXBwb3J0LXNob3VsZC1iZS1jLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAyLUFkZC1rbm9iLXRvLWNvbnRyb2wtd2hldGhlci1udW1hLXN1cHBvcnQtc2hvdWxkLWJlLWMucGF0Y2gKQEAgLTksNiArOSw3IEBACiAKIFNpZ25lZC1vZmYtYnk6IFJveS5MaSA8cm9uZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIG00L2x0cC1udW1hLm00IHwgMTAgKysrKysrKysrLQogIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAzLUFkZC1rbm9iLXRvLWNvbnRyb2wtdGlycGMtc3VwcG9ydC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAzLUFkZC1rbm9iLXRvLWNvbnRyb2wtdGlycGMtc3VwcG9ydC5wYXRjaAppbmRleCBiZjExNzZmLi41Y2YxZTA1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMy1BZGQta25vYi10by1jb250cm9sLXRpcnBjLXN1cHBvcnQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDMtQWRkLWtub2ItdG8tY29udHJvbC10aXJwYy1zdXBwb3J0LnBhdGNoCkBAIC04LDYgKzgsNyBAQAogCiBTaWduZWQtb2ZmLWJ5OiBGYXRoaSBCb3VkcmEgPGZhdGhpLmJvdWRyYUBsaW5hcm8ub3JnPgogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgY29uZmlndXJlLmFjIHwgOSArKysrKysrKysKICAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwNC1idWlsZC1BZGQtb3B0aW9uLXRvLXNlbGVjdC1saWJjLWltcGxlbWVudGF0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDQtYnVpbGQtQWRkLW9wdGlvbi10by1zZWxlY3QtbGliYy1pbXBsZW1lbnRhdGlvbi5wYXRjaAppbmRleCAyZGU5MzYzLi5jZjc0NDYzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwNC1idWlsZC1BZGQtb3B0aW9uLXRvLXNlbGVjdC1saWJjLWltcGxlbWVudGF0aW9uLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDA0LWJ1aWxkLUFkZC1vcHRpb24tdG8tc2VsZWN0LWxpYmMtaW1wbGVtZW50YXRpb24ucGF0Y2gKQEAgLTEwLDYgKzEwLDcgQEAKIERpc2FibGUgdGVzdHMgc3BlY2lmaWNhbGx5IG5vdCBidWlsZGluZyBfeWV0XyBvbiBtdXNsIGJhc2VkIHN5c3RlbXMKIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDUgKysrKysKICB0ZXN0Y2FzZXMva2VybmVsL01ha2VmaWxlICAgICAgICAgICAgICAgICAgIHwgNSArKysrLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDUta2VybmVsLWNvbnRyb2xsZXJzLUxpbmstd2l0aC1saWJmdHMtZXhwbGljaXRseS1vbi1tdS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDA1LWtlcm5lbC1jb250cm9sbGVycy1MaW5rLXdpdGgtbGliZnRzLWV4cGxpY2l0bHktb24tbXUucGF0Y2gKaW5kZXggOGRhYjFlZC4uYjkzOTBlMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDUta2VybmVsLWNvbnRyb2xsZXJzLUxpbmstd2l0aC1saWJmdHMtZXhwbGljaXRseS1vbi1tdS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwNS1rZXJuZWwtY29udHJvbGxlcnMtTGluay13aXRoLWxpYmZ0cy1leHBsaWNpdGx5LW9uLW11LnBhdGNoCkBAIC03LDYgKzcsNyBAQAogZXh0ZXJuYWwgaW1wbGVtZW50YXRpb24gZm9yIGFsbCBmdHMgQVBJcwogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICB0ZXN0Y2FzZXMva2VybmVsL2NvbnRyb2xsZXJzL01ha2VmaWxlLmluYyAgICAgICAgfCAzICsrKwogIHRlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvY3B1c2V0L01ha2VmaWxlLmluYyB8IDMgKysrCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwNi1maXgtUEFUSF9NQVgtdW5kZWNsYXJlZC13aGVuLWJ1aWxkaW5nLXdpdGgtbXVzbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDA2LWZpeC1QQVRIX01BWC11bmRlY2xhcmVkLXdoZW4tYnVpbGRpbmctd2l0aC1tdXNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ODc0Yjk1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDA2LWZpeC1QQVRIX01BWC11bmRlY2xhcmVkLXdoZW4tYnVpbGRpbmctd2l0aC1tdXNsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotRnJvbSAzMjY0NGJkZTRkMzNiNjc3NjE0NTM0ZWMzNzAzMGU1Nzg4M2I4ZTE1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgOSBGZWIgMjAxNyAxNjo0MToxMiArMDgwMAotU3ViamVjdDogW1BBVENIIDEvM10gZml4IFBBVEhfTUFYIHVuZGVjbGFyZWQgd2hlbiBidWlsZGluZyB3aXRoIG11c2wKLQotZml4IFBBVEhfTUFYIHVuZGVjbGFyZWQgd2hlbiBidWlsZGluZyB3aXRoIG11c2wuCi0KLVNpZ25lZC1vZmYtYnk6IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGluY2x1ZGUvdHN0X3Rlc3QuaCB8IDMgKysrCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS90c3RfdGVzdC5oIGIvaW5jbHVkZS90c3RfdGVzdC5oCi1pbmRleCA3ZmYzM2IyLi45Nzc5YzBlIDEwMDY0NAotLS0tIGEvaW5jbHVkZS90c3RfdGVzdC5oCi0rKysgYi9pbmNsdWRlL3RzdF90ZXN0LmgKLUBAIC0xOSw2ICsxOSw5IEBACi0gI2RlZmluZSBUU1RfVEVTVF9IX18KLSAKLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0rI2lmbmRlZiBfX0dMSUJDX18KLSsjaW5jbHVkZSA8bGltaXRzLmg+Ci0rI2VuZGlmCi0gCi0gI2luY2x1ZGUgInRzdF9jb21tb24uaCIKLSAjaW5jbHVkZSAidHN0X3Jlc19mbGFncy5oIgotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwNy1maXgtX19XT1JEU0laRS11bmRlY2xhcmVkLXdoZW4tYnVpbGRpbmctd2l0aC1tdXNsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDctZml4LV9fV09SRFNJWkUtdW5kZWNsYXJlZC13aGVuLWJ1aWxkaW5nLXdpdGgtbXVzbC5wYXRjaAppbmRleCA4ZDBlNzM5Li4yZjRjYTYzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwNy1maXgtX19XT1JEU0laRS11bmRlY2xhcmVkLXdoZW4tYnVpbGRpbmctd2l0aC1tdXNsLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDA3LWZpeC1fX1dPUkRTSVpFLXVuZGVjbGFyZWQtd2hlbi1idWlsZGluZy13aXRoLW11c2wucGF0Y2gKQEAgLTEsMzAgKzEsMzEgQEAKLUZyb20gYTI2MzliZDBmMGQzZjlmMzA0OWVlMzNlNjcxMGZlZDA2MjI1ZjU0ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZDFhMjc1NzA0NTdmYjZlMWQ2YmFmZTgxYmZhMGYzNTA3YjEzN2UzMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+CiBEYXRlOiBUaHUsIDkgRmViIDIwMTcgMTg6MjA6NTggKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzJdIGZpeCBfX1dPUkRTSVpFIHVuZGVjbGFyZWQgd2hlbiBidWlsZGluZyB3aXRoIG11c2wKK1N1YmplY3Q6IFtQQVRDSF0gZml4IF9fV09SRFNJWkUgdW5kZWNsYXJlZCB3aGVuIGJ1aWxkaW5nIHdpdGggbXVzbAogCiBmaXggX19XT1JEU0laRSB1bmRlY2xhcmVkIHdoZW4gYnVpbGRpbmcgd2l0aCBtdXNsLgogCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL2xpbnV4LXRlc3QtcHJvamVjdC9sdHAvcHVsbC8xNzddCisKIFNpZ25lZC1vZmYtYnk6IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIGluY2x1ZGUvb2xkL3Rlc3QuaCB8IDMgKysrCiAgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9vbGQvdGVzdC5oIGIvaW5jbHVkZS9vbGQvdGVzdC5oCi1pbmRleCBkNDkyNTYwLi4yNjNlOTJlIDEwMDY0NAoraW5kZXggYjM2NzY0ZDgzLi5jYzZmMWI1NTEgMTAwNjQ0CiAtLS0gYS9pbmNsdWRlL29sZC90ZXN0LmgKICsrKyBiL2luY2x1ZGUvb2xkL3Rlc3QuaAotQEAgLTU4LDYgKzU4LDkgQEAKLSAjaW5jbHVkZSAidHN0X2Nsb25lLmgiCi0gI2luY2x1ZGUgIm9sZF9kZXZpY2UuaCIKLSAjaW5jbHVkZSAib2xkX3RtcGRpci5oIgorQEAgLTQ0LDYgKzQ0LDkgQEAKKyAjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDxzdGRpbnQuaD4KICsjaWZuZGVmIF9fR0xJQkNfXwogKyNpbmNsdWRlIDxiaXRzL3JlZy5oPgogKyNlbmRpZgogIAotIC8qCi0gICogRW5zdXJlIHRoYXQgTlVNU0lHUyBpcyBkZWZpbmVkLgorICNpbmNsdWRlICJ1c2N0ZXN0LmgiCisgCiAtLSAKLTIuNy40CisyLjExLjAKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDgtQ2hlY2staWYtX19HTElCQ19QUkVSRVEtaXMtZGVmaW5lZC1iZWZvcmUtdXNpbmctaXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwOC1DaGVjay1pZi1fX0dMSUJDX1BSRVJFUS1pcy1kZWZpbmVkLWJlZm9yZS11c2luZy1pdC5wYXRjaAppbmRleCA0MWYyNjIzLi5lMzI1Y2U0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwOC1DaGVjay1pZi1fX0dMSUJDX1BSRVJFUS1pcy1kZWZpbmVkLWJlZm9yZS11c2luZy1pdC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwOC1DaGVjay1pZi1fX0dMSUJDX1BSRVJFUS1pcy1kZWZpbmVkLWJlZm9yZS11c2luZy1pdC5wYXRjaApAQCAtOCw2ICs4LDcgQEAKIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIAorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2FjY2VwdDQvYWNjZXB0NF8wMS5jICAgICB8ICA5ICsrKystCiAgdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9nZXRjcHUvZ2V0Y3B1MDEuYyAgICAgICAgfCA0MCArKysrKysrKysrKysrKysrKysrKystCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwOS1maXgtcmVkZWZpbml0aW9uLW9mLXN0cnVjdC1tc2didWYtZXJyb3ItYnVpbGRpbmctd2l0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDktZml4LXJlZGVmaW5pdGlvbi1vZi1zdHJ1Y3QtbXNnYnVmLWVycm9yLWJ1aWxkaW5nLXdpdC5wYXRjaAppbmRleCA2ODg2YzU1Li5kZDdkMjgzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwOS1maXgtcmVkZWZpbml0aW9uLW9mLXN0cnVjdC1tc2didWYtZXJyb3ItYnVpbGRpbmctd2l0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDA5LWZpeC1yZWRlZmluaXRpb24tb2Ytc3RydWN0LW1zZ2J1Zi1lcnJvci1idWlsZGluZy13aXQucGF0Y2gKQEAgLTEsMTggKzEsMTkgQEAKLUZyb20gMmQ3ZWE2N2U4ZWFhNDFjYmQ2ODE2ZjdhYjY1NDI1NGI0MGI1MzBhMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYmY1ZGQyOTMyMjAwZTAxOTlhMzhmMzAyOGQzYmVmMjI1M2YzMmUzOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+CiBEYXRlOiBUaHUsIDkgRmViIDIwMTcgMTc6MTc6MzcgKzA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gZml4IHJlZGVmaW5pdGlvbiBvZiAnc3RydWN0IG1zZ2J1ZicgZXJyb3IgYnVpbGRpbmcgd2l0aCBtdXNsCiAKIFdoZW4gYnVpbGRpbmcgd2l0aCBtdXNsIHRoZSBmaWxlICJzeXMvbXNnLmgiIGFscmVhZHkgY29udGFpbiAnc3RydWN0IG1zZ2J1ZicKIAorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9saW51eC10ZXN0LXByb2plY3QvbHRwL3B1bGwvMTc3XQorCiBTaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2lwYy9tc2dyY3YvbXNncmN2MDguYyB8IDQgKysrLQogIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvaXBjL21zZ3Jjdi9tc2dyY3YwOC5jIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9pcGMvbXNncmN2L21zZ3JjdjA4LmMKLWluZGV4IGE3NTdjMGQuLmUwMjMxMTQgMTAwNjQ0CitpbmRleCBhNzU3YzBkMTguLmUwMjMxMTRkMiAxMDA2NDQKIC0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvaXBjL21zZ3Jjdi9tc2dyY3YwOC5jCiArKysgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2lwYy9tc2dyY3YvbXNncmN2MDguYwogQEAgLTQ3LDExICs0NywxMyBAQCBjb25zdCBjaGFyICpUQ0lEID0gIm1zZ3JjdjA4IjsKQEAgLTMxLDUgKzMyLDUgQEAKICBzdGF0aWMgdm9pZCBtc3IoaW50IG1zcWlkKQogIHsKIC0tIAotMi43LjQKKzIuMTEuMAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAxMC1yZXBsYWNlLV9fQkVHSU5fREVDTFMtYW5kLV9fRU5EX0RFQ0xTLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMTAtcmVwbGFjZS1fX0JFR0lOX0RFQ0xTLWFuZC1fX0VORF9ERUNMUy5wYXRjaAppbmRleCA1YjBjNDQ0Li5iOWZjZTg4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAxMC1yZXBsYWNlLV9fQkVHSU5fREVDTFMtYW5kLV9fRU5EX0RFQ0xTLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDEwLXJlcGxhY2UtX19CRUdJTl9ERUNMUy1hbmQtX19FTkRfREVDTFMucGF0Y2gKQEAgLTEwLDYgKzEwLDggQEAKIGl0cyBub3QgYSBnZW5lcmFsbHkgYXZhaWxhYmxlIHR5cGVkZWYKIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2Vwb2xsMi9pbmNsdWRlL2Vwb2xsLmggfCA4ICsrKysrKy0tCiAgdXRpbHMvc2N0cC9pbmNsdWRlL25ldGluZXQvc2N0cC5oICAgICAgICAgICAgICAgIHwgOSArKysrKysrLS0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDExLVJlbmFtZS1zaWdzZXQtdmFyaWFibGUtdG8tc2lnc2V0MS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDExLVJlbmFtZS1zaWdzZXQtdmFyaWFibGUtdG8tc2lnc2V0MS5wYXRjaAppbmRleCA0YWMxNGRjLi4yNWY2YmE3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAxMS1SZW5hbWUtc2lnc2V0LXZhcmlhYmxlLXRvLXNpZ3NldDEucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMTEtUmVuYW1lLXNpZ3NldC12YXJpYWJsZS10by1zaWdzZXQxLnBhdGNoCkBAIC03LDYgKzcsOCBAQAogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogU2lnbmVkLW9mZi1ieTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICB0ZXN0Y2FzZXMva2VybmVsL21lbS9zaG10L3NobXQwNC5jICAgICAgICAgICAgICAgICAgICB8IDEwICsrKysrLS0tLS0KICB0ZXN0Y2FzZXMva2VybmVsL21lbS9zaG10L3NobXQwNi5jICAgICAgICAgICAgICAgICAgICB8IDEwICsrKysrLS0tLS0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDEyLWZpeC1mYWNjZXNzYXQwMS5jLWJ1aWxkLWZhaWxzLXdpdGgtc2VjdXJpdHktZmxhZ3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAxMi1maXgtZmFjY2Vzc2F0MDEuYy1idWlsZC1mYWlscy13aXRoLXNlY3VyaXR5LWZsYWdzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNjAwYmQ2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDEyLWZpeC1mYWNjZXNzYXQwMS5jLWJ1aWxkLWZhaWxzLXdpdGgtc2VjdXJpdHktZmxhZ3MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi1Gcm9tIDMyZjU2MzAwOGY5NTk3NWQyNmQxYzRmY2IyNjZjNzJjNTZmOTM0YmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCAyMiBGZWIgMjAxNyAwMToyMTo1NSAtMDUwMAotU3ViamVjdDogW1BBVENIXSBmaXggZmFjY2Vzc2F0MDEuYyBidWlsZCBmYWlscyB3aXRoIHNlY3VyaXR5IGZsYWdzCi0KLVdoZW4gdGhlIGRpc3RybyBpcyBwb2t5LWxzYiwgZml4IHRoZSBmb2xsb3dpbmcgZXJyb3I6Ci0KLXwgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC4uLy4uLy4uLy4uL2luY2x1ZGUvb2xkL3Rlc3QuaDo0NzowLAotfCAgICAgICAgICAgICAgICAgIGZyb20gZmFjY2Vzc2F0MDEuYzo0NDoKLXwgZmFjY2Vzc2F0MDEuYzogSW4gZnVuY3Rpb24gJ3NldHVwJzoKLXwgLi4vLi4vLi4vLi4vaW5jbHVkZS9vbGQvb2xkX3NhZmVfZmlsZV9vcHMuaDo1NToyNzogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCi18ICAgICAgICAgICAgICAgICAgICAocGF0aCksIChmbXQpLCAjIyBfX1ZBX0FSR1NfXykKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgotfCBmYWNjZXNzYXQwMS5jOjEzMjoyOiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJ1NBRkVfRklMRV9QUklOVEYnCi18ICAgU0FGRV9GSUxFX1BSSU5URihjbGVhbnVwLCB0ZXN0ZmlsZSwgdGVzdGZpbGUpOwotfCAgIF5+fn5+fn5+fn5+fn5+fn4KLXwgLi4vLi4vLi4vLi4vaW5jbHVkZS9vbGQvb2xkX3NhZmVfZmlsZV9vcHMuaDo1NToyNzogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCi18ICAgICAgICAgICAgICAgICAgICAocGF0aCksIChmbXQpLCAjIyBfX1ZBX0FSR1NfXykKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgotfCBmYWNjZXNzYXQwMS5jOjEzMzoyOiBub3RlOiBpbiBleHBhbnNpb24gb2YgbWFjcm8gJ1NBRkVfRklMRV9QUklOVEYnCi18ICAgU0FGRV9GSUxFX1BSSU5URihjbGVhbnVwLCB0ZXN0ZmlsZTIsIHRlc3RmaWxlMik7Ci18ICAgXn5+fn5+fn5+fn5+fn5+fgotCi1UaGlzIGlzIGJlY2F1c2UgaW4gbWFjcm8gIlNBRkVfRklMRV9QUklOVEYiLCBpdHMgdGhpcmQgYXJndW1lbnQgc2hvdWxkIGJlIGEKLWZvcm1hdCBhcmd1bWVudHMsIGJ1dCBpbiBmaWxlIGZhY2Nlc3NhdDAxLmMsIGl0IHBhc3NlZCB0aGUgc2FtZSBhcmd1bWVudCB0bwotbWFjcm8gIlNBRkVfRklMRV9QUklOVEYiLCBzbyBpdCByZXN1bHRzIGluIHRoZSBmYWlscy4gSXQgc2hvdWxkIHBhc3MgdGhlIGZvcm1hdAotc3RyaW5nIHRvIHRoZSB0aGlyZCBhcmd1bWVudC4KLQotVGhlIHNhbWUgZm9yIGZpbGUgZmNobW9kYXQwMS5jLgotCi1TaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2ZhY2Nlc3NhdC9mYWNjZXNzYXQwMS5jIHwgNCArKy0tCi0gdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9mY2htb2RhdC9mY2htb2RhdDAxLmMgICB8IDQgKystLQotIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9mYWNjZXNzYXQvZmFjY2Vzc2F0MDEuYyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmFjY2Vzc2F0L2ZhY2Nlc3NhdDAxLmMKLWluZGV4IDYyMmRmZDMuLjFjYTkwZTkgMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2ZhY2Nlc3NhdC9mYWNjZXNzYXQwMS5jCi0rKysgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2ZhY2Nlc3NhdC9mYWNjZXNzYXQwMS5jCi1AQCAtMTI5LDggKzEyOSw4IEBAIHZvaWQgc2V0dXAodm9pZCkKLSAJZmRzWzBdID0gU0FGRV9PUEVOKGNsZWFudXAsIHBhdGhuYW1lLCBPX0RJUkVDVE9SWSk7Ci0gCWZkc1sxXSA9IGZkc1s0XSA9IGZkc1swXTsKLSAKLS0JU0FGRV9GSUxFX1BSSU5URihjbGVhbnVwLCB0ZXN0ZmlsZSwgdGVzdGZpbGUpOwotLQlTQUZFX0ZJTEVfUFJJTlRGKGNsZWFudXAsIHRlc3RmaWxlMiwgdGVzdGZpbGUyKTsKLSsJU0FGRV9GSUxFX1BSSU5URihjbGVhbnVwLCB0ZXN0ZmlsZSwgImZhY2Nlc3NhdHRlc3RmaWxlJWQudHh0Iik7Ci0rCVNBRkVfRklMRV9QUklOVEYoY2xlYW51cCwgdGVzdGZpbGUyLCAiJXMvZmFjY2Vzc2F0dGVzdGZpbGUlZC50eHQiKTsKLSAKLSAJZmRzWzJdID0gU0FGRV9PUEVOKGNsZWFudXAsIHRlc3RmaWxlMywgT19DUkVBVCB8IE9fUkRXUiwgMDYwMCk7Ci0gCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9mY2htb2RhdC9mY2htb2RhdDAxLmMgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2ZjaG1vZGF0L2ZjaG1vZGF0MDEuYwotaW5kZXggNmJmNjZkOC4uODlkMDcyYSAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmNobW9kYXQvZmNobW9kYXQwMS5jCi0rKysgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2ZjaG1vZGF0L2ZjaG1vZGF0MDEuYwotQEAgLTEyNyw4ICsxMjcsOCBAQCB2b2lkIHNldHVwKHZvaWQpCi0gCWZkc1swXSA9IFNBRkVfT1BFTihjbGVhbnVwLCBwYXRobmFtZSwgT19ESVJFQ1RPUlkpOwotIAlmZHNbMV0gPSBmZHNbNF0gPSBmZHNbMF07Ci0gCi0tCVNBRkVfRklMRV9QUklOVEYoY2xlYW51cCwgdGVzdGZpbGUsIHRlc3RmaWxlKTsKLS0JU0FGRV9GSUxFX1BSSU5URihjbGVhbnVwLCB0ZXN0ZmlsZTIsIHRlc3RmaWxlMik7Ci0rCVNBRkVfRklMRV9QUklOVEYoY2xlYW51cCwgdGVzdGZpbGUsICJmY2htb2RhdHRlc3QlZC50eHQiKTsKLSsJU0FGRV9GSUxFX1BSSU5URihjbGVhbnVwLCB0ZXN0ZmlsZTIsICIlcy9mY2htb2RhdHRlc3QlZC50eHQiKTsKLSAKLSAJZmRzWzJdID0gU0FGRV9PUEVOKGNsZWFudXAsIHRlc3RmaWxlMywgT19DUkVBVCB8IE9fUkRXUiwgMDYwMCk7Ci0gCWZkc1szXSA9IDEwMDsKLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMTgtZ3VhcmQtbWFsbG9jb3B0LXdpdGgtX19HTElCQ19fLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMTgtZ3VhcmQtbWFsbG9jb3B0LXdpdGgtX19HTElCQ19fLnBhdGNoCmluZGV4IDUxOThmZTkuLmE3OTc2M2QgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDE4LWd1YXJkLW1hbGxvY29wdC13aXRoLV9fR0xJQkNfXy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAxOC1ndWFyZC1tYWxsb2NvcHQtd2l0aC1fX0dMSUJDX18ucGF0Y2gKQEAgLTYsNiArNiw3IEBACiBtYWxsb2NvcHQgaXMgbm90IGF2YWlsYWJsZSBvbiBub24gZ2xpYmMgaW1wbGVtZW50YXRpb25zCiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIHV0aWxzL2JlbmNobWFyay9lYml6enktMC4zL2ViaXp6eS5jIHwgNCArKy0tCiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDIwLWdldGRlbnRzLWRlZmluZS1nZXRkZW50cy1nZXRkZW50czY0LW9ubHktZm9yLWdsaWJjLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMjAtZ2V0ZGVudHMtZGVmaW5lLWdldGRlbnRzLWdldGRlbnRzNjQtb25seS1mb3ItZ2xpYmMucGF0Y2gKaW5kZXggMGU0ZTQ1OC4uNzA2MGE2NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMjAtZ2V0ZGVudHMtZGVmaW5lLWdldGRlbnRzLWdldGRlbnRzNjQtb25seS1mb3ItZ2xpYmMucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMjAtZ2V0ZGVudHMtZGVmaW5lLWdldGRlbnRzLWdldGRlbnRzNjQtb25seS1mb3ItZ2xpYmMucGF0Y2gKQEAgLTcsNiArNyw4IEBACiBmdW5jdGlvbnMgd2l0aCBzYW1lIG5hbWUsIGl0IGVycm9ycyBvdXQuCiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9nZXRkZW50cy9nZXRkZW50cy5oIHwgNiArKysrLS0KICAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMjEtRGVmaW5lLV9HTlVfU09VUkNFLWZvci1NUkVNQVBfTUFZTU9WRS1kZWZpbml0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMjEtRGVmaW5lLV9HTlVfU09VUkNFLWZvci1NUkVNQVBfTUFZTU9WRS1kZWZpbml0aW9uLnBhdGNoCmluZGV4IGM4Y2JlNTguLjNlNzljOWYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDIxLURlZmluZS1fR05VX1NPVVJDRS1mb3ItTVJFTUFQX01BWU1PVkUtZGVmaW5pdGlvbi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyMS1EZWZpbmUtX0dOVV9TT1VSQ0UtZm9yLU1SRU1BUF9NQVlNT1ZFLWRlZmluaXRpb24ucGF0Y2gKQEAgLTEwLDYgKzEwLDggQEAKIGVycm9yOiAnTVJFTUFQX01BWU1PVkUnIHVuZGVjbGFyZWQgKGZpcnN0IHVzZSBpbiB0aGlzIGZ1bmN0aW9uKQogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvbXJlbWFwL21yZW1hcDAxLmMgfCA0ICsrKy0KICB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL21yZW1hcC9tcmVtYXAwMi5jIHwgMiArKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMjMtcHRyYWNlLVVzZS1pbnQtaW5zdGVhZC1vZi1lbnVtLV9fcHRyYWNlX3JlcXVlc3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyMy1wdHJhY2UtVXNlLWludC1pbnN0ZWFkLW9mLWVudW0tX19wdHJhY2VfcmVxdWVzdC5wYXRjaAppbmRleCA0NjgwYzAzLi41MjlmNGVkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyMy1wdHJhY2UtVXNlLWludC1pbnN0ZWFkLW9mLWVudW0tX19wdHJhY2VfcmVxdWVzdC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyMy1wdHJhY2UtVXNlLWludC1pbnN0ZWFkLW9mLWVudW0tX19wdHJhY2VfcmVxdWVzdC5wYXRjaApAQCAtNiw2ICs2LDggQEAKIF9fcHRyYWNlX3JlcXVlc3QgaXMgb25seSBhdmFpbGFibGUgd2l0aCBnbGliYwogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvcHRyYWNlL3B0cmFjZTAzLmMgICAgICAgICAgIHwgNCArKysrCiAgdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9wdHJhY2Uvc3Bhd25fcHRyYWNlX2NoaWxkLmggfCA0ICsrKysKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDI0LXJ0X3NpZ2FjdGlvbi1ydF9zaWdwcm9jbWFyay1EZWZpbmUtX0dOVV9TT1VSQ0UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyNC1ydF9zaWdhY3Rpb24tcnRfc2lncHJvY21hcmstRGVmaW5lLV9HTlVfU09VUkNFLnBhdGNoCmluZGV4IDAzYzY3YTUuLjAzYWE0NWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDI0LXJ0X3NpZ2FjdGlvbi1ydF9zaWdwcm9jbWFyay1EZWZpbmUtX0dOVV9TT1VSQ0UucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMjQtcnRfc2lnYWN0aW9uLXJ0X3NpZ3Byb2NtYXJrLURlZmluZS1fR05VX1NPVVJDRS5wYXRjaApAQCAtNyw2ICs3LDggQEAKIGVycm9yOiAnU0FfTk9NQVNLJyB1bmRlY2xhcmVkIGhlcmUgKG5vdCBpbiBhIGZ1bmN0aW9uKQogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvcnRfc2lnYWN0aW9uL3J0X3NpZ2FjdGlvbjAxLmMgICAgIHwgMSArCiAgdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9ydF9zaWdhY3Rpb24vcnRfc2lnYWN0aW9uMDIuYyAgICAgfCAyICstCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyNS1tY19nZXRob3N0LWluY2x1ZGUtc3lzLXR5cGVzLmgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyNS1tY19nZXRob3N0LWluY2x1ZGUtc3lzLXR5cGVzLmgucGF0Y2gKaW5kZXggYWFkM2NiMC4uYWZjYmE2MyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMjUtbWNfZ2V0aG9zdC1pbmNsdWRlLXN5cy10eXBlcy5oLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDI1LW1jX2dldGhvc3QtaW5jbHVkZS1zeXMtdHlwZXMuaC5wYXRjaApAQCAtNyw2ICs3LDggQEAKIGVycm9yOiB1bmtub3duIHR5cGUgbmFtZSAndV9jaGFyJwogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIHRlc3RjYXNlcy9uZXR3b3JrL211bHRpY2FzdC9tY19nZXRob3N0L21jX2dldGhvc3QuYyB8IDEgKwogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMjYtY3Jhc2gwMS1EZWZpbmUtX0dOVV9TT1VSQ0UucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyNi1jcmFzaDAxLURlZmluZS1fR05VX1NPVVJDRS5wYXRjaAppbmRleCA1OGI4ZWQ0Li5mNjVmYWQxIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyNi1jcmFzaDAxLURlZmluZS1fR05VX1NPVVJDRS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyNi1jcmFzaDAxLURlZmluZS1fR05VX1NPVVJDRS5wYXRjaApAQCAtNyw2ICs3LDggQEAKIGVycm9yOiAnU0FfTk9NQVNLJyB1bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbikKIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICB0ZXN0Y2FzZXMvbWlzYy9jcmFzaC9jcmFzaDAxLmMgfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyNy1zeXNjb25mMDEtVXNlLV9TQ18yX0NfVkVSU0lPTi1jb25kaXRpb25hbGx5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMjctc3lzY29uZjAxLVVzZS1fU0NfMl9DX1ZFUlNJT04tY29uZGl0aW9uYWxseS5wYXRjaAppbmRleCBmNzVlMzNiLi5hZGY2ZjI3IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyNy1zeXNjb25mMDEtVXNlLV9TQ18yX0NfVkVSU0lPTi1jb25kaXRpb25hbGx5LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDI3LXN5c2NvbmYwMS1Vc2UtX1NDXzJfQ19WRVJTSU9OLWNvbmRpdGlvbmFsbHkucGF0Y2gKQEAgLTcsNiArNyw4IEBACiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBTaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvc3lzY29uZi9zeXNjb25mMDEuYyB8IDIgKysKICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyOC1ydF9zaWdhY3Rpb24uaC1Vc2Utc2lnaGFuZGxlcl90LWluc3RlYWQtb2YtX19zaWdoYW5kLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMjgtcnRfc2lnYWN0aW9uLmgtVXNlLXNpZ2hhbmRsZXJfdC1pbnN0ZWFkLW9mLV9fc2lnaGFuZC5wYXRjaAppbmRleCBiMjZhYTEzLi5jNzMwZDQ2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAyOC1ydF9zaWdhY3Rpb24uaC1Vc2Utc2lnaGFuZGxlcl90LWluc3RlYWQtb2YtX19zaWdoYW5kLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDI4LXJ0X3NpZ2FjdGlvbi5oLVVzZS1zaWdoYW5kbGVyX3QtaW5zdGVhZC1vZi1fX3NpZ2hhbmQucGF0Y2gKQEAgLTgsNiArOCw4IEBACiBzaWdoYW5kbGVyX3QgbWFrZXMgaXQgd29yayBvbiBtdXNsIHRvbwogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQogIGluY2x1ZGUvbGFwaS9ydF9zaWdhY3Rpb24uaCAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KICB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3J0X3NpZ3N1c3BlbmQvTWFrZWZpbGUgfCAzICsrKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMzAtbGliLVVzZS1QVEhSRUFEX01VVEVYX1JFQ1VSU0lWRS1pbi1wbGFjZS1vZi1QVEhSRUFEXy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDMwLWxpYi1Vc2UtUFRIUkVBRF9NVVRFWF9SRUNVUlNJVkUtaW4tcGxhY2Utb2YtUFRIUkVBRF8ucGF0Y2gKaW5kZXggYzVmYWM5Yi4uZWZhNmQwNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMzAtbGliLVVzZS1QVEhSRUFEX01VVEVYX1JFQ1VSU0lWRS1pbi1wbGFjZS1vZi1QVEhSRUFEXy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAzMC1saWItVXNlLVBUSFJFQURfTVVURVhfUkVDVVJTSVZFLWluLXBsYWNlLW9mLVBUSFJFQURfLnBhdGNoCkBAIC04LDYgKzgsOCBAQAogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogU2lnbmVkLW9mZi1ieTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICBsaWIvdHN0X3Jlcy5jIHwgNCArKysrCiAgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMzQtcGVyaW9kaWNfb3V0cHV0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMzQtcGVyaW9kaWNfb3V0cHV0LnBhdGNoCmluZGV4IDU5Y2FlZmUuLmMyZWY4OTkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDM0LXBlcmlvZGljX291dHB1dC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAzNC1wZXJpb2RpY19vdXRwdXQucGF0Y2gKQEAgLTEsNCArMSw3IEBACi1BZGQgcGVyaW9kaWMgb3V0cHV0IGZvciBsb25nIHRpbWUgdGVzdC4KK0Zyb20gNWE3N2UyYmRjMDgzZjRmODQyYThiYTdjMmRiMWE3YWM2ZTVmMDY2NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDMxIE1heSAyMDE3IDIxOjI2OjA1IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIEFkZCBwZXJpb2RpYyBvdXRwdXQgZm9yIGxvbmcgdGltZSB0ZXN0LgogCiBUaGlzIGlzIG5lZWRlZCBpbiBjb250ZXh0IG9mIGhhdmluZyBzY3JpcHRzIHJ1bm5pbmcgbHRwIHRlc3RzIGFuZAogd2FpdGluZyB3aXRoIGEgdGltZW91dCBmb3IgdGhlIG91dHB1dCBvZiB0aGUgdGVzdHMuCkBAIC02LDIwICs5LDI2IEBACiBTaWduZWQtb2ZmLWJ5OiBUdWRvciBGbG9yZWEgPHR1ZG9yLmZsb3JlYUBlbmVhLmNvbT4KIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCi1kaWZmIC1ydU4gYS90ZXN0Y2FzZXMva2VybmVsL2NvbnRyb2xsZXJzL21lbWNnL3N0cmVzcy9tZW1jZ19zdHJlc3NfdGVzdC5zaCBiL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvbWVtY2cvc3RyZXNzL21lbWNnX3N0cmVzc190ZXN0LnNoCi0tLS0gYS90ZXN0Y2FzZXMva2VybmVsL2NvbnRyb2xsZXJzL21lbWNnL3N0cmVzcy9tZW1jZ19zdHJlc3NfdGVzdC5zaAkyMDEzLTExLTA4IDE1OjU0OjA5LjUxNTA0OTA4MSArMDEwMAotKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9jb250cm9sbGVycy9tZW1jZy9zdHJlc3MvbWVtY2dfc3RyZXNzX3Rlc3Quc2gJMjAxMy0xMS0wOCAyMjozMjoxNS41ODczNzA0MDYgKzAxMDAKLUBAIC0zNyw3ICszNyw4IEBACitTaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgorLS0tCisgLi4uL2tlcm5lbC9jb250cm9sbGVycy9tZW1jZy9zdHJlc3MvbWVtY2dfc3RyZXNzX3Rlc3Quc2ggICAgICB8IDExICsrKysrKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvbWVtY2cvc3RyZXNzL21lbWNnX3N0cmVzc190ZXN0LnNoIGIvdGVzdGNhc2VzL2tlcm5lbC9jb250cm9sbGVycy9tZW1jZy9zdHJlc3MvbWVtY2dfc3RyZXNzX3Rlc3Quc2gKK2luZGV4IGFmMWE3MDguLjA4NGU2MjggMTAwNzU1CistLS0gYS90ZXN0Y2FzZXMva2VybmVsL2NvbnRyb2xsZXJzL21lbWNnL3N0cmVzcy9tZW1jZ19zdHJlc3NfdGVzdC5zaAorKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9jb250cm9sbGVycy9tZW1jZy9zdHJlc3MvbWVtY2dfc3RyZXNzX3Rlc3Quc2gKK0BAIC0zNyw3ICszNyw4IEBAIGlmIFsgIngkKGdyZXAgLXcgbWVtb3J5IC9wcm9jL2Nncm91cHMgfCBjdXQgLWY0KSIgIT0gIngxIiBdOyB0aGVuCiAgICAgICAgICBleGl0IDAKICBmaQogIAotLVJVTl9USU1FPSQoKCA2MCAqIDYwICkpCistUlVOX1RJTUU9JCgoIDE1ICogNjAgKSkKICtPTkVfTUlOVVRFPTYwCi0rUlVOX1RJTUU9NjAKKytSVU5fVElNRT0xNQogIAogIGNsZWFudXAoKQogIHsKLUBAIC02Miw3ICs2Myw3IEBACitAQCAtNjIsNyArNjMsNyBAQCBkb19tb3VudCgpCiAgIyAkMSAtIE51bWJlciBvZiBjZ3JvdXBzCiAgIyAkMiAtIEFsbG9jYXRlZCBob3cgbXVjaCBtZW1vcnkgaW4gb25lIHByb2Nlc3M/IGluIE1CCiAgIyAkMyAtIFRoZSBpbnRlcnZhbCB0byB0b3VjaCBtZW1vcnkgaW4gYSBwcm9jZXNzCkBAIC0yOCwxNiArMzcsMTkgQEAKICBydW5fc3RyZXNzKCkKICB7CiAgCWRvX21vdW50OwotQEAgLTgxLDcgKzgyLDExIEBACitAQCAtODEsNyArODIsMTEgQEAgcnVuX3N0cmVzcygpCiAgCQlldmFsIC9iaW4va2lsbCAtcyBTSUdVU1IxIFwkcGlkJGkgMj4gL2Rldi9udWxsCiAgCWRvbmUKICAKIC0Jc2xlZXAgJDQKICsJZm9yIGkgaW4gJChzZXEgMCAkKCgkNC0xKSkpCiArCWRvCi0rCQlldmFsIGVjaG8gIlN0YXJ0ZWQgJGkgbWluIGFnby4gU3RpbGwgYWxpdmUuLi4gIiAKKysJCWV2YWwgZWNobyAiU3RhcnRlZCAkaSBtaW4gYWdvLiBTdGlsbCBhbGl2ZS4uLiAiCiArCQlzbGVlcCAkT05FX01JTlVURQogKwlkb25lCiAgCiAgCWZvciBpIGluICQoc2VxIDAgJCgoJDEtMSkpKQogIAlkbworLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAzNy1sdHAtZml4LVBBR0VfU0laRS1yZWRlZmluaXRpb24tYW5kLU9fQ1JFQVQtdW5kZWNsZWFyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMzctbHRwLWZpeC1QQUdFX1NJWkUtcmVkZWZpbml0aW9uLWFuZC1PX0NSRUFULXVuZGVjbGVhci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODczOGFlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMzctbHRwLWZpeC1QQUdFX1NJWkUtcmVkZWZpbml0aW9uLWFuZC1PX0NSRUFULXVuZGVjbGVhci5wYXRjaApAQCAtMCwwICsxLDExMyBAQAorRnJvbSBhOWQ1NTk1ZDJmYTJhYjI1MmYxY2FiZjYzZjRiNjVjM2VmYmFmZWI5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMTAgQXVnIDIwMTcgMTU6Mjc6MDMgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gbHRwOiBmaXggUEFHRV9TSVpFIHJlZGVmaW5pdGlvbiBhbmQgT19DUkVBVCB1bmRlY2xlYXIgd2hlbgorIGJ1aWxkIHdpdGggbXVzbAorCitlcnJvciAxOgorCit8c3RhY2tfY2xhc2guYzo1MDoyMjogZXJyb3I6IGV4cGVjdGVkIGlkZW50aWZpZXIgb3IgJygnIGJlZm9yZSBudW1lcmljIGNvbnN0YW50Cit8IHN0YXRpYyB1bnNpZ25lZCBsb25nIFBBR0VfU0laRTsKKworVGhpcyBpcyBiZWNhdXNlIHRoZSBtdXNsIGxpYmMgYWxyZWFkeSBjb250YWluIFBBR0VfU0laRSBkZWZpbml0aW9uIGluIGxpbWl0cy5jLAord2UgY2FuIGNoZWNrIGl0IGhlcmU6CisKKyAgICBodHRwczovL2dpdC5tdXNsLWxpYmMub3JnL2NnaXQvbXVzbC90cmVlL2luY2x1ZGUvbGltaXRzLmgjbjQzCisKK2Vycm9yIDI6CisKK3xjazAxLmM6MTU3OjIyOiBlcnJvcjogJ09fQ1JFQVQnIHVuZGVjbGFyZWQgKGZpcnN0IHVzZSBpbiB0aGlzIGZ1bmN0aW9uKTsgZGlkIHlvdSBtZWFuICdTX0lSRUFEJz8KK3wgICBmZCA9IG9wZW4oZmlsZW5hbWUsIE9fQ1JFQVQgfCBPX1RSVU5DIHwgT19SRFdSLCAwNjQ0KTsKK3wgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn4KK3wgICAgICAgICAgICAgICAgICAgICAgIFNfSVJFQUQKKworVGhpcyBpcyBiZWNhdXNlIHRoZSBtdXNsIGxpYmMgcHV0IHRob3NlIGluIGZjbnRsLmgsIHNvIHdlIHNob3VsZCBpbmNsdWRlIHRoYXQKK2ZpbGUuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFsgaHR0cHM6Ly9naXRodWIuY29tL2xpbnV4LXRlc3QtcHJvamVjdC9sdHAvcHVsbC8xOTQgXQorCitTaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgorLS0tCisgdGVzdGNhc2VzL2N2ZS9zdGFja19jbGFzaC5jICAgICAgICAgICAgICAgfCAxMiArKysrKystLS0tLS0KKyB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2Zsb2NrL2Zsb2NrMDEuYyB8ICAxICsKKyB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2Zsb2NrL2Zsb2NrMDIuYyB8ICAxICsKKyAzIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9jdmUvc3RhY2tfY2xhc2guYyBiL3Rlc3RjYXNlcy9jdmUvc3RhY2tfY2xhc2guYworaW5kZXggMmVmMWE4Mi4uN2M0NTk5MSAxMDA2NDQKKy0tLSBhL3Rlc3RjYXNlcy9jdmUvc3RhY2tfY2xhc2guYworKysrIGIvdGVzdGNhc2VzL2N2ZS9zdGFja19jbGFzaC5jCitAQCAtNDcsNyArNDcsNyBAQAorICNpbmNsdWRlICJ0c3RfdGVzdC5oIgorICNpbmNsdWRlICJ0c3Rfc2FmZV9zdGRpby5oIgorIAorLXN0YXRpYyB1bnNpZ25lZCBsb25nIFBBR0VfU0laRTsKKytzdGF0aWMgdW5zaWduZWQgbG9uZyBQQUdFX1NJWkVfdHN0OworIHN0YXRpYyB1bnNpZ25lZCBsb25nIFBBR0VfTUFTSzsKKyBzdGF0aWMgdW5zaWduZWQgbG9uZyBHQVBfUEFHRVMgPSAyNTY7Cisgc3RhdGljIHVuc2lnbmVkIGxvbmcgVEhSRVNIT0xEOworQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBleGhhdXN0X3N0YWNrX2ludG9fc2lnc2Vndih2b2lkKQorIAlleGhhdXN0X3N0YWNrX2ludG9fc2lnc2VndigpOworIH0KKyAKKy0jZGVmaW5lIE1BUFBFRF9MRU4gUEFHRV9TSVpFCisrI2RlZmluZSBNQVBQRURfTEVOIFBBR0VfU0laRV90c3QKKyBzdGF0aWMgdW5zaWduZWQgbG9uZyBtYXBwZWRfYWRkcjsKKyAKKyB2b2lkIHNlZ3ZfaGFuZGxlcihpbnQgc2lnLCBzaWdpbmZvX3QgKmluZm8sIHZvaWQgKmRhdGEgTFRQX0FUVFJJQlVURV9VTlVTRUQpCitAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgZG9fY2hpbGQodm9pZCkKKyAJc3RhY2tfdCBzaWduYWxfc3RhY2s7CisgCXN0cnVjdCBzaWdhY3Rpb24gc2Vndl9zaWcgPSB7LnNhX3NpZ2FjdGlvbiA9IHNlZ3ZfaGFuZGxlciwgLnNhX2ZsYWdzID0gU0FfT05TVEFDS3xTQV9TSUdJTkZPfTsKKyAJdm9pZCAqbWFwOworLQl1bnNpZ25lZCBsb25nIGdhcCA9IEdBUF9QQUdFUyAqIFBBR0VfU0laRTsKKysJdW5zaWduZWQgbG9uZyBnYXAgPSBHQVBfUEFHRVMgKiBQQUdFX1NJWkVfdHN0OworIAlzdHJ1Y3QgcmxpbWl0IHJsaW1pdDsKKyAKKyAJcmxpbWl0LnJsaW1fY3VyID0gcmxpbWl0LnJsaW1fbWF4ID0gUkxJTV9JTkZJTklUWTsKK0BAIC0yMDAsOCArMjAwLDggQEAgdm9pZCBzZXR1cCh2b2lkKQorIHsKKyAJY2hhciBidWZbNDA5Nl0sICpwOworIAorLQlQQUdFX1NJWkUgPSBzeXNjb25mKF9TQ19QQUdFU0laRSk7CistCVBBR0VfTUFTSyA9IH4oUEFHRV9TSVpFIC0gMSk7CisrCVBBR0VfU0laRV90c3QgPSBzeXNjb25mKF9TQ19QQUdFU0laRSk7CisrCVBBR0VfTUFTSyA9IH4oUEFHRV9TSVpFX3RzdCAtIDEpOworIAorIAlidWZbNDA5NV0gPSAnXDAnOworIAlTQUZFX0ZJTEVfU0NBTkYoIi9wcm9jL2NtZGxpbmUiLCAiJTQwOTVbXlxuXSIsIGJ1Zik7CitAQCAtMjE0LDcgKzIxNCw3IEBAIHZvaWQgc2V0dXAodm9pZCkKKyAJCXRzdF9yZXMoVElORk8sICJzdGFja19ndWFyZF9nYXAgPSAlbGQiLCBHQVBfUEFHRVMpOworIAl9CisgCistCVRIUkVTSE9MRCA9IChHQVBfUEFHRVMgLSAxKSAqIFBBR0VfU0laRTsKKysJVEhSRVNIT0xEID0gKEdBUF9QQUdFUyAtIDEpICogUEFHRV9TSVpFX3RzdDsKKyAKKyAJeworIAkJdm9sYXRpbGUgaW50ICphID0gYWxsb2NhKDEyOCk7CitkaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9mbG9jay9mbG9jazAxLmMgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2Zsb2NrL2Zsb2NrMDEuYworaW5kZXggM2UxN2JlNC4uMDZkODllMyAxMDA2NDQKKy0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmxvY2svZmxvY2swMS5jCisrKysgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2Zsb2NrL2Zsb2NrMDEuYworQEAgLTY5LDYgKzY5LDcgQEAKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSA8c3lzL3dhaXQuaD4KKyAjaW5jbHVkZSA8c3lzL2ZpbGUuaD4KKysjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSAidGVzdC5oIgorIAorIHZvaWQgc2V0dXAodm9pZCk7CitkaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9mbG9jay9mbG9jazAyLmMgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2Zsb2NrL2Zsb2NrMDIuYworaW5kZXggNDE0ZGY2OC4uOWRkZjcyOSAxMDA2NDQKKy0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmxvY2svZmxvY2swMi5jCisrKysgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2Zsb2NrL2Zsb2NrMDIuYworQEAgLTc1LDYgKzc1LDcgQEAKKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgI2luY2x1ZGUgPHN5cy9maWxlLmg+CisgI2luY2x1ZGUgPHN5cy93YWl0Lmg+CisrI2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgI2luY2x1ZGUgInRlc3QuaCIKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMzgtY29tbWFuZHMtZ2RiMDEtcmVwbGFjZS1zdGRpbi13aXRoLWRldi1udWxsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMzgtY29tbWFuZHMtZ2RiMDEtcmVwbGFjZS1zdGRpbi13aXRoLWRldi1udWxsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3YzBhNGIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAzOC1jb21tYW5kcy1nZGIwMS1yZXBsYWNlLXN0ZGluLXdpdGgtZGV2LW51bGwucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorRnJvbSAyZjZhYjhmNjk0YjI2YjdmMjU2NjYyNGY2ZDFmMjM3ODhkNmFiOGEwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmFuIFN0YW5jZWsgPGpzdGFuY2VrQHJlZGhhdC5jb20+CitEYXRlOiBNb24sIDExIFNlcCAyMDE3IDEyOjU3OjU4ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvbW1hbmRzL2dkYjAxOiByZXBsYWNlIHN0ZGluIHdpdGggL2Rldi9udWxsCisKK0lmIHRoaXMgdGVzdGNhc2UgcnVucyBhcyBiYWNrZ3JvdW5kIHByb2Nlc3MsIGdkYiBjYW4gcmVjZWl2ZQorU0lHVFRPVSBhbmQgdGhlbiB0ZXN0Y2FzZSBnZXRzIHN0dWNrLgorCitTaWduZWQtb2ZmLWJ5OiBKYW4gU3RhbmNlayA8anN0YW5jZWtAcmVkaGF0LmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorW2h0dHBzOi8vZ2l0aHViLmNvbS9saW51eC10ZXN0LXByb2plY3QvbHRwL2NvbW1pdC8yZjZhYjhmNjk0YjI2YjdmMjU2NjYyNGY2ZDFmMjM3ODhkNmFiOGEwXQorCitTaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CistLS0KKyB0ZXN0Y2FzZXMvY29tbWFuZHMvZ2RiL2dkYjAxLnNoIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2NvbW1hbmRzL2dkYi9nZGIwMS5zaCBiL3Rlc3RjYXNlcy9jb21tYW5kcy9nZGIvZ2RiMDEuc2gKK2luZGV4IDA3YWUzNmYuLmUzYTViNTEgMTAwNzU1CistLS0gYS90ZXN0Y2FzZXMvY29tbWFuZHMvZ2RiL2dkYjAxLnNoCisrKysgYi90ZXN0Y2FzZXMvY29tbWFuZHMvZ2RiL2dkYjAxLnNoCitAQCAtMjksNyArMjksNyBAQCBUU1RfTkVFRFNfQ01EUz0iZ2RiIC9iaW4vY2F0IgorIAorIHNpbXBsZV90ZXN0KCkKKyB7CistCWdkYiAvYmluL2NhdCAtZXggInJ1biAvZXRjL3Bhc3N3ZCIgLWV4IHF1aXQKKysJZ2RiIC9iaW4vY2F0IC1leCAicnVuIC9ldGMvcGFzc3dkIiAtZXggcXVpdCA8IC9kZXYvbnVsbAorIAlSQz0kPworIAlpZiBbICRSQyAtZXEgMCBdIDsgdGhlbgorIAkJdHN0X3JlcyBUUEFTUyAiZ2RiIGF0dGFjaGVkIHRvIHByb2Nlc3MgYW5kIGNvbXBsZXRlZCBydW4iCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDM5LWZjbnRsLWZpeC10aGUtdGltZS1kZWYtdG8tdXNlLXRpbWVfdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDM5LWZjbnRsLWZpeC10aGUtdGltZS1kZWYtdG8tdXNlLXRpbWVfdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzBjMWRhZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAzOS1mY250bC1maXgtdGhlLXRpbWUtZGVmLXRvLXVzZS10aW1lX3QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1Gcm9tIDdiY2UzZDIyMzQ5NDgwM2NiMzI4OTdjYWJlNjYxMTkwNzZlNTNkODkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCA4IEZlYiAyMDE3IDE2OjIzOjUxICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggNS81XSBmY250bDogZml4IHRoZSB0aW1lKCkgZGVmIHRvIHVzZSB0aW1lX3QKLQotVGhpcyBmaXhlcyB0aGUgYnVpbGQgb24gWDMyLCB3aGVyZSBsb25nIGlzIDMyLWJpdCByYXRoZXIgdGhhbiA2NC1iaXQuCi0KLVNpZ25lZC1vZmYtYnk6IENocmlzdG9waGVyIExhcnNvbiA8Y2hyaXNfbGFyc29uQG1lbnRvci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgotLS0tCi0gdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9mY250bC9mY250bDE0LmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2ZjbnRsL2ZjbnRsMTQuYyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmNudGwvZmNudGwxNC5jCi1pbmRleCBjNjFlYjI0Li45OWUzODY3IDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9mY250bC9mY250bDE0LmMKLSsrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZmNudGwvZmNudGwxNC5jCi1AQCAtNzc1LDcgKzc3NSw3IEBAIHZvaWQgZG9jaGlsZCh2b2lkKQotIAotIHZvaWQgcnVuX3Rlc3QoaW50IGZpbGVfZmxhZywgaW50IGZpbGVfbW9kZSwgaW50IHNlZWssIGludCBzdGFydCwgaW50IGVuZCkKLSB7Ci0tCWV4dGVybiBsb25nIHRpbWUoKTsKLSsJZXh0ZXJuIHRpbWVfdCB0aW1lKCk7Ci0gCi0gCWZhaWwgPSAwOwotIAotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHBfMjAxNzAxMTYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHBfMjAxNzAxMTYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4YWYxMDQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwXzIwMTcwMTE2LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICswLDAgQEAKLVNVTU1BUlkgPSAiTGludXggVGVzdCBQcm9qZWN0IgotREVTQ1JJUFRJT04gPSAiVGhlIExpbnV4IFRlc3QgUHJvamVjdCBpcyBhIGpvaW50IHByb2plY3Qgd2l0aCBTR0ksIElCTSwgT1NETCwgYW5kIEJ1bGwgd2l0aCBhIGdvYWwgdG8gZGVsaXZlciB0ZXN0IHN1aXRlcyB0byB0aGUgb3BlbiBzb3VyY2UgY29tbXVuaXR5IHRoYXQgdmFsaWRhdGUgdGhlIHJlbGlhYmlsaXR5LCByb2J1c3RuZXNzLCBhbmQgc3RhYmlsaXR5IG9mIExpbnV4LiBUaGUgTGludXggVGVzdCBQcm9qZWN0IGlzIGEgY29sbGVjdGlvbiBvZiB0b29scyBmb3IgdGVzdGluZyB0aGUgTGludXgga2VybmVsIGFuZCByZWxhdGVkIGZlYXR1cmVzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9sdHAuc291cmNlZm9yZ2UubmV0IgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotTElDRU5TRSA9ICJHUEx2MiAmIEdQTHYyKyAmIExHUEx2MisgJiBMR1BMdjIuMSsgJiBCU0QtMi1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gIlwKLSAgICBmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgIGZpbGU6Ly90ZXN0Y2FzZXMva2VybmVsL2NvbnRyb2xsZXJzL2ZyZWV6ZXIvQ09QWUlORzttZDU9MDYzNmU3M2ZmMDIxNWU4ZDY3MmRjNGMzMmMzMTdiYjMgXAotICAgIGZpbGU6Ly90ZXN0Y2FzZXMva2VybmVsL2NvbnRyb2xsZXJzL2ZyZWV6ZXIvcnVuX2ZyZWV6ZXIuc2g7YmVnaW5saW5lPTU7ZW5kbGluZT0xNzttZDU9ODZhNjFkMmMwNDJkNTk4MzZmZmIzNTNhMjE0NTY0OTggXAotICAgIGZpbGU6Ly90ZXN0Y2FzZXMva2VybmVsL2hvdHBsdWcvbWVtb3J5X2hvdHBsdWcvQ09QWUlORzttZDU9ZTA0YTJlNTQyYjJiODYyOWJmOWNkMmJhMjliMGZlNDEgXAotICAgIGZpbGU6Ly90ZXN0Y2FzZXMva2VybmVsL2hvdHBsdWcvY3B1X2hvdHBsdWcvQ09QWUlORzttZDU9ZTA0YTJlNTQyYjJiODYyOWJmOWNkMmJhMjliMGZlNDEgXAotICAgIGZpbGU6Ly90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvQ09QWUlORzttZDU9MjE2ZTQzYjcyZWZiZTRlZDkwMTdjYzE5YzRjNjhiMDEgXAotICAgIGZpbGU6Ly90ZXN0Y2FzZXMvcmVhbHRpbWUvQ09QWUlORzttZDU9MTJmODg0ZDJhZTFmZjg3YzA5ZTViN2NjYzJjNGNhN2UgXAotICAgIGZpbGU6Ly90b29scy9wb3VuZGVyMjEvQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAotICAgIGZpbGU6Ly91dGlscy9iZW5jaG1hcmsva2VybmJlbmNoLTAuNDIvQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAotICAgIGZpbGU6Ly91dGlscy9mZnNiLTYuMC1yYzIvQ09QWUlORzttZDU9YzQ2MDgyMTY3YTMxNGQ3ODVkMDEyYTI0NDc0OGQ4MDMgXAotIgotCi1ERVBFTkRTID0gImF0dHIgbGliYWlvIGxpYmNhcCBhY2wgb3BlbnNzbCB6aXAtbmF0aXZlIgotREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBmdHMgIgotRVhUUkFfT0VNQUtFX2FwcGVuZF9saWJjLW11c2wgPSAiIExJQkM9bXVzbCAiCi1DRkxBR1NfYXBwZW5kX3Bvd2VycGM2NCA9ICIgLURfX1NBTkVfVVNFUlNQQUNFX1RZUEVTX18iCi1DRkxBR1NfYXBwZW5kX21pcHNhcmNobjY0ID0gIiAtRF9fU0FORV9VU0VSU1BBQ0VfVFlQRVNfXyIKLVNSQ1JFViA9ICIyYzg0NTdiMDc2OWZjMDI2ZTRlMTc3MmY0YzJhNmRhMGJlNjNhNjMxIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbGludXgtdGVzdC1wcm9qZWN0L2x0cC5naXQgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1hZGQtX0dOVV9TT1VSQ0UtdG8tcGVjX2xpc3RlbmVyLmMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1BZGQta25vYi10by1jb250cm9sLXdoZXRoZXItbnVtYS1zdXBwb3J0LXNob3VsZC1iZS1jLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtQWRkLWtub2ItdG8tY29udHJvbC10aXJwYy1zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtYnVpbGQtQWRkLW9wdGlvbi10by1zZWxlY3QtbGliYy1pbXBsZW1lbnRhdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA1LWtlcm5lbC1jb250cm9sbGVycy1MaW5rLXdpdGgtbGliZnRzLWV4cGxpY2l0bHktb24tbXUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNi1maXgtUEFUSF9NQVgtdW5kZWNsYXJlZC13aGVuLWJ1aWxkaW5nLXdpdGgtbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA3LWZpeC1fX1dPUkRTSVpFLXVuZGVjbGFyZWQtd2hlbi1idWlsZGluZy13aXRoLW11c2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwOC1DaGVjay1pZi1fX0dMSUJDX1BSRVJFUS1pcy1kZWZpbmVkLWJlZm9yZS11c2luZy1pdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA5LWZpeC1yZWRlZmluaXRpb24tb2Ytc3RydWN0LW1zZ2J1Zi1lcnJvci1idWlsZGluZy13aXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMC1yZXBsYWNlLV9fQkVHSU5fREVDTFMtYW5kLV9fRU5EX0RFQ0xTLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTEtUmVuYW1lLXNpZ3NldC12YXJpYWJsZS10by1zaWdzZXQxLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTItZml4LWZhY2Nlc3NhdDAxLmMtYnVpbGQtZmFpbHMtd2l0aC1zZWN1cml0eS1mbGFncy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE4LWd1YXJkLW1hbGxvY29wdC13aXRoLV9fR0xJQkNfXy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIwLWdldGRlbnRzLWRlZmluZS1nZXRkZW50cy1nZXRkZW50czY0LW9ubHktZm9yLWdsaWJjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjEtRGVmaW5lLV9HTlVfU09VUkNFLWZvci1NUkVNQVBfTUFZTU9WRS1kZWZpbml0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjMtcHRyYWNlLVVzZS1pbnQtaW5zdGVhZC1vZi1lbnVtLV9fcHRyYWNlX3JlcXVlc3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNC1ydF9zaWdhY3Rpb24tcnRfc2lncHJvY21hcmstRGVmaW5lLV9HTlVfU09VUkNFLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjUtbWNfZ2V0aG9zdC1pbmNsdWRlLXN5cy10eXBlcy5oLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjYtY3Jhc2gwMS1EZWZpbmUtX0dOVV9TT1VSQ0UucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNy1zeXNjb25mMDEtVXNlLV9TQ18yX0NfVkVSU0lPTi1jb25kaXRpb25hbGx5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjgtcnRfc2lnYWN0aW9uLmgtVXNlLXNpZ2hhbmRsZXJfdC1pbnN0ZWFkLW9mLV9fc2lnaGFuZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDMwLWxpYi1Vc2UtUFRIUkVBRF9NVVRFWF9SRUNVUlNJVkUtaW4tcGxhY2Utb2YtUFRIUkVBRF8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzMy1zaG1hdDEtQ292ZXItR05VLXNwZWNpZmljLWNvZGUtdW5kZXItX19VU0VfR05VLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzQtcGVyaW9kaWNfb3V0cHV0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzUtZml4LXRlc3RfcHJvY19raWxsLWhhbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzNi10ZXN0Y2FzZXMtbmV0d29yay1uZnN2NC1hY2wtYWNsMS5jLVNlY3VyaXR5LWZpeC1vbi1zLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzktZmNudGwtZml4LXRoZS10aW1lLWRlZi10by11c2UtdGltZV90LnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKLQotVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCi0KLWV4cG9ydCBwcmVmaXggPSAiL29wdC9sdHAiCi1leHBvcnQgZXhlY19wcmVmaXggPSAiL29wdC9sdHAiCi0KLVBBQ0tBR0VDT05GSUdbbnVtYV0gPSAiLS13aXRoLW51bWEsIC0td2l0aG91dC1udW1hLCBudW1hY3RsLCIKLUVYVFJBX0FVVE9SRUNPTkYgKz0gIi1JICR7U30vdGVzdGNhc2VzL3JlYWx0aW1lL200IgotRVhUUkFfT0VDT05GID0gIiAtLXdpdGgtcG93ZXItbWFuYWdlbWVudC10ZXN0c3VpdGUgLS13aXRoLXJlYWx0aW1lLXRlc3RzdWl0ZSAiCi0jIGx0cCBuZXR3b3JrL3JwYyB0ZXN0IGNhc2VzIGZ0YmZzIHdoZW4gbGlidGlycGMgaXMgZm91bmQKLUVYVFJBX09FQ09ORiArPSAiIC0td2l0aG91dC10aXJwYyAiCi0KLSMgVGhlIG1ha2VmaWxlcyBtYWtlIGV4Y2Vzc2l2ZSB1c2Ugb2YgbWFrZSAtQyBhbmQgc2V2ZXJhbCBpbmNsdWRlIHRlc3RjYXNlcy5tawotIyB3aGljaCB0cmlnZ2VycyBhIGJ1aWxkIG9mIHRoZSBzeXNjYWxsIGhlYWRlci4gVG8gcmVwcm9kdWNlLCBidWlsZCBsdHAsCi0jIHRoZW4gZGVsZXRlIHRoZSBoZWFkZXIsIHRoZW4gIm1ha2UgLWogWFgiIGFuZCB3YXRjaCByZWdlbi5zaCBydW4gbXVsdGlwbGUKLSMgdGltZXMuIEl0cyBlYXNpZXIgdG8gZ2VuZXJhdGUgdGhpcyBvbmNlIGhlcmUgaW5zdGVhZC4KLWRvX2NvbXBpbGVfcHJlcGVuZCAoKSB7Ci0JKCBtYWtlIC1DICR7Qn0vdGVzdGNhc2VzL2tlcm5lbCBpbmNsdWRlL2xpbnV4X3N5c2NhbGxfbnVtYmVycy5oICkKLX0KLQotZG9faW5zdGFsbCgpewotICAgIGluc3RhbGwgLWQgJHtEfS9vcHQvbHRwLwotICAgIG9lX3J1bm1ha2UgREVTVERJUj0ke0R9IFNLSVBfSURDSEVDSz0xIGluc3RhbGwKLQotICAgICMgZml4dXAgbm90IGRlcGxveSBTVFBmYWlsdXJlX3JlcG9ydC5wbCB0byBhdm9pZCBjb25mdXNpbmcgYWJvdXQgaXQgZmFpbHMgdG8gcnVuCi0gICAgIyBhcyBpdCBsYWNrcyBkZXBlbmRlbmN5IG9uIHNvbWUgcGVybCBtb3VkbGUgc3VjaCBhcyBMV1A6OlNpbXBsZQotICAgICMgQW5kIHRoaXMgc2NyaXB0IHByZXZpb3VzbHkgd29ya3MgYXMgYSB0b29sIGZvciBhbmFseXppbmcgZmFpbHVyZXMgZnJvbSBMVFAKLSAgICAjIHJ1bnMgb24gdGhlIE9TREwncyBTY2FsZWFibGUgVGVzdCBQbGF0Zm9ybSAoU1RQKSBhbmQgaXQgbWFpbmx5IGFjY2Vzc2VzCi0gICAgIyBodHRwOi8va2hhY2sub3NkbC5vcmcgdG8gcmV0cmlldmUgbHRwIHRlc3QgcmVzdWx0cyBydW4gb24KLSAgICAjIE9TREwncyBTY2FsZWFibGUgVGVzdCBQbGF0Zm9ybSwgYnV0IG5vdyBodHRwOi8va2hhY2sub3NkbC5vcmcgdW5hY2Nlc3NpYmxlCi0gICAgcm0gLXJmICR7RH0vb3B0L2x0cC9iaW4vU1RQZmFpbHVyZV9yZXBvcnQucGwKLQotICAgICMgSW4gb2UtY29yZSwgd2UgZG9lc24ndCBzdXBwb3J0IGtzaCBhbmQgY3NoIG5vdywgc28gcmVtb3ZlIGluLmNzaCBhbmQgaW4ua3NoLgotICAgIHJtICR7RH0vb3B0L2x0cC90ZXN0Y2FzZXMvZGF0YS9maWxlMDEvaW4uY3NoCi0gICAgcm0gJHtEfS9vcHQvbHRwL3Rlc3RjYXNlcy9kYXRhL2ZpbGUwMS9pbi5rc2gKLSAgICAjIENvcHkgUE9TSVggdGVzdCBzdWl0ZSBpbnRvICR7RH0vb3B0L2x0cC90ZXN0Y2FzZXMgYnkgbWFudWFsCi0gICAgY3AgLXIgdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlICR7RH0vb3B0L2x0cC90ZXN0Y2FzZXMKLX0KLQotUkRFUEVORFNfJHtQTn0gPSAicGVybCBlMmZzcHJvZ3MtbWtlMmZzIHB5dGhvbi1jb3JlIGxpYmFpbyBiYXNoIGdhd2sgZXhwZWN0IGxkZCB1bnppcCBnemlwIGNwaW8gY3JvbmllIGxvZ3JvdGF0ZSB3aGljaCBhdCIKLQotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIvb3B0L2x0cC9saWIvbGlibWVtLmEgL29wdC9sdHAvdGVzdGNhc2VzL2RhdGEvbm0wMS9saWIuYSIKLQotRklMRVNfJHtQTn0gKz0gIi9vcHQvbHRwLyogL29wdC9sdHAvcnVudGVzdC8qIC9vcHQvbHRwL3NjZW5hcmlvX2dyb3Vwcy8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9iaW4vKiAvb3B0L2x0cC90ZXN0Y2FzZXMvYmluLyovYmluLyogL29wdC9sdHAvdGVzdHNjcmlwdHMvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvY29uZm9ybWFuY2UvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvRG9jdW1lbnRhdGlvbi8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9mdW5jdGlvbmFsLyogL29wdC9sdHAvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL2luY2x1ZGUvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvc2NyaXB0cy8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9zdHJlc3MvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvdG9vbHMvKiIKLQotIyBBdm9pZCBnZW5lcmF0ZWQgYmluYXJpZXMgc3RyaXBwaW5nLiBPdGhlcndpc2Ugc29tZSBvZiB0aGUgbHRwIHRlc3RzIHN1Y2ggYXMgbGRkMDEgJiBubTAxIGZhaWxzCi1JTkhJQklUX1BBQ0tBR0VfU1RSSVAgPSAiMSIKLUlOSElCSVRfUEFDS0FHRV9ERUJVR19TUExJVCA9ICIxIgotIyBIb3dldmVyLCB0ZXN0X2FyY2hfc3RyaXBwZWQgaXMgYWxyZWFkeSBzdHJpcHBlZCwgc28uLi4KLUlOU0FORV9TS0lQXyR7UE59ICs9ICJhbHJlYWR5LXN0cmlwcGVkIgotCi0jIEF2b2lkIGZpbGUgZGVwZW5kZW5jeSBzY2FucywgYXMgTFRQIGNoZWNrcyBmb3IgdGhpbmdzIHRoYXQgbWF5IG9yIG1heSBub3QKLSMgZXhpc3Qgb24gdGhlIHJ1bm5pbmcgc3lzdGVtLiAgRm9yIGluc3RhbmNlIGl0IGhhcyBzcGVjaWZpYyBjaGVja3MgZm9yCi0jIGNzaCBhbmQga3NoIHdoaWNoIGFyZSBub3QgdHlwaWNhbGx5IHBhcnQgb2YgT3BlbkVtYmVkZGVkIHN5c3RlbXMgKGJ1dAotIyBjYW4gYmUgYWRkZWQgdmlhIGFkZGl0aW9uYWwgbGF5ZXJzLikKLVNLSVBfRklMRURFUFNfJHtQTn0gPSAnMScKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cF8yMDE3MDUxNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cF8yMDE3MDUxNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NTNjYmZkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwXzIwMTcwNTE2LmJiCkBAIC0wLDAgKzEsMTIzIEBACitTVU1NQVJZID0gIkxpbnV4IFRlc3QgUHJvamVjdCIKK0RFU0NSSVBUSU9OID0gIlRoZSBMaW51eCBUZXN0IFByb2plY3QgaXMgYSBqb2ludCBwcm9qZWN0IHdpdGggU0dJLCBJQk0sIE9TREwsIGFuZCBCdWxsIHdpdGggYSBnb2FsIHRvIGRlbGl2ZXIgdGVzdCBzdWl0ZXMgdG8gdGhlIG9wZW4gc291cmNlIGNvbW11bml0eSB0aGF0IHZhbGlkYXRlIHRoZSByZWxpYWJpbGl0eSwgcm9idXN0bmVzcywgYW5kIHN0YWJpbGl0eSBvZiBMaW51eC4gVGhlIExpbnV4IFRlc3QgUHJvamVjdCBpcyBhIGNvbGxlY3Rpb24gb2YgdG9vbHMgZm9yIHRlc3RpbmcgdGhlIExpbnV4IGtlcm5lbCBhbmQgcmVsYXRlZCBmZWF0dXJlcy4iCitIT01FUEFHRSA9ICJodHRwOi8vbHRwLnNvdXJjZWZvcmdlLm5ldCIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBHUEx2MisgJiBMR1BMdjIrICYgTEdQTHYyLjErICYgQlNELTItQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJcCisgICAgZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICBmaWxlOi8vdGVzdGNhc2VzL2tlcm5lbC9jb250cm9sbGVycy9mcmVlemVyL0NPUFlJTkc7bWQ1PTA2MzZlNzNmZjAyMTVlOGQ2NzJkYzRjMzJjMzE3YmIzIFwKKyAgICBmaWxlOi8vdGVzdGNhc2VzL2tlcm5lbC9jb250cm9sbGVycy9mcmVlemVyL3J1bl9mcmVlemVyLnNoO2JlZ2lubGluZT01O2VuZGxpbmU9MTc7bWQ1PTg2YTYxZDJjMDQyZDU5ODM2ZmZiMzUzYTIxNDU2NDk4IFwKKyAgICBmaWxlOi8vdGVzdGNhc2VzL2tlcm5lbC9ob3RwbHVnL21lbW9yeV9ob3RwbHVnL0NPUFlJTkc7bWQ1PWUwNGEyZTU0MmIyYjg2MjliZjljZDJiYTI5YjBmZTQxIFwKKyAgICBmaWxlOi8vdGVzdGNhc2VzL2tlcm5lbC9ob3RwbHVnL2NwdV9ob3RwbHVnL0NPUFlJTkc7bWQ1PWUwNGEyZTU0MmIyYjg2MjliZjljZDJiYTI5YjBmZTQxIFwKKyAgICBmaWxlOi8vdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL0NPUFlJTkc7bWQ1PTQ4YjFjNWVjNjMzZTNlMzBlYzJjZjg4NGFlNjk5OTQ3IFwKKyAgICBmaWxlOi8vdGVzdGNhc2VzL3JlYWx0aW1lL0NPUFlJTkc7bWQ1PTEyZjg4NGQyYWUxZmY4N2MwOWU1YjdjY2MyYzRjYTdlIFwKKyAgICBmaWxlOi8vdG9vbHMvcG91bmRlcjIxL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKKyAgICBmaWxlOi8vdXRpbHMvYmVuY2htYXJrL2tlcm5iZW5jaC0wLjQyL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKKyAgICBmaWxlOi8vdXRpbHMvZmZzYi02LjAtcmMyL0NPUFlJTkc7bWQ1PWM0NjA4MjE2N2EzMTRkNzg1ZDAxMmEyNDQ3NDhkODAzIFwKKyIKKworREVQRU5EUyA9ICJhdHRyIGxpYmFpbyBsaWJjYXAgYWNsIG9wZW5zc2wgemlwLW5hdGl2ZSIKK0RFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZnRzICIKK0VYVFJBX09FTUFLRV9hcHBlbmRfbGliYy1tdXNsID0gIiBMSUJDPW11c2wgIgorQ0ZMQUdTX2FwcGVuZF9wb3dlcnBjNjQgPSAiIC1EX19TQU5FX1VTRVJTUEFDRV9UWVBFU19fIgorQ0ZMQUdTX2FwcGVuZF9taXBzYXJjaG42NCA9ICIgLURfX1NBTkVfVVNFUlNQQUNFX1RZUEVTX18iCitTUkNSRVYgPSAiMTg5MTZhMmU2ZDhjOTk3YjdiMjlkY2ZhOTU1MGQ1YTE1YjIyZWQyMiIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2xpbnV4LXRlc3QtcHJvamVjdC9sdHAuZ2l0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYWRkLV9HTlVfU09VUkNFLXRvLXBlY19saXN0ZW5lci5jLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItQWRkLWtub2ItdG8tY29udHJvbC13aGV0aGVyLW51bWEtc3VwcG9ydC1zaG91bGQtYmUtYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLUFkZC1rbm9iLXRvLWNvbnRyb2wtdGlycGMtc3VwcG9ydC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LWJ1aWxkLUFkZC1vcHRpb24tdG8tc2VsZWN0LWxpYmMtaW1wbGVtZW50YXRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1rZXJuZWwtY29udHJvbGxlcnMtTGluay13aXRoLWxpYmZ0cy1leHBsaWNpdGx5LW9uLW11LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDctZml4LV9fV09SRFNJWkUtdW5kZWNsYXJlZC13aGVuLWJ1aWxkaW5nLXdpdGgtbXVzbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA4LUNoZWNrLWlmLV9fR0xJQkNfUFJFUkVRLWlzLWRlZmluZWQtYmVmb3JlLXVzaW5nLWl0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDktZml4LXJlZGVmaW5pdGlvbi1vZi1zdHJ1Y3QtbXNnYnVmLWVycm9yLWJ1aWxkaW5nLXdpdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEwLXJlcGxhY2UtX19CRUdJTl9ERUNMUy1hbmQtX19FTkRfREVDTFMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMS1SZW5hbWUtc2lnc2V0LXZhcmlhYmxlLXRvLXNpZ3NldDEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxOC1ndWFyZC1tYWxsb2NvcHQtd2l0aC1fX0dMSUJDX18ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMC1nZXRkZW50cy1kZWZpbmUtZ2V0ZGVudHMtZ2V0ZGVudHM2NC1vbmx5LWZvci1nbGliYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIxLURlZmluZS1fR05VX1NPVVJDRS1mb3ItTVJFTUFQX01BWU1PVkUtZGVmaW5pdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIzLXB0cmFjZS1Vc2UtaW50LWluc3RlYWQtb2YtZW51bS1fX3B0cmFjZV9yZXF1ZXN0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjQtcnRfc2lnYWN0aW9uLXJ0X3NpZ3Byb2NtYXJrLURlZmluZS1fR05VX1NPVVJDRS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI1LW1jX2dldGhvc3QtaW5jbHVkZS1zeXMtdHlwZXMuaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI2LWNyYXNoMDEtRGVmaW5lLV9HTlVfU09VUkNFLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjctc3lzY29uZjAxLVVzZS1fU0NfMl9DX1ZFUlNJT04tY29uZGl0aW9uYWxseS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI4LXJ0X3NpZ2FjdGlvbi5oLVVzZS1zaWdoYW5kbGVyX3QtaW5zdGVhZC1vZi1fX3NpZ2hhbmQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzMC1saWItVXNlLVBUSFJFQURfTVVURVhfUkVDVVJTSVZFLWluLXBsYWNlLW9mLVBUSFJFQURfLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzMtc2htYXQxLUNvdmVyLUdOVS1zcGVjaWZpYy1jb2RlLXVuZGVyLV9fVVNFX0dOVS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDM0LXBlcmlvZGljX291dHB1dC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDM1LWZpeC10ZXN0X3Byb2Nfa2lsbC1oYW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzYtdGVzdGNhc2VzLW5ldHdvcmstbmZzdjQtYWNsLWFjbDEuYy1TZWN1cml0eS1maXgtb24tcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDM3LWx0cC1maXgtUEFHRV9TSVpFLXJlZGVmaW5pdGlvbi1hbmQtT19DUkVBVC11bmRlY2xlYXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzOC1jb21tYW5kcy1nZGIwMS1yZXBsYWNlLXN0ZGluLXdpdGgtZGV2LW51bGwucGF0Y2ggXAorICAgICAgICAgICAiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAorCitUQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKKworZXhwb3J0IHByZWZpeCA9ICIvb3B0L2x0cCIKK2V4cG9ydCBleGVjX3ByZWZpeCA9ICIvb3B0L2x0cCIKKworUEFDS0FHRUNPTkZJR1tudW1hXSA9ICItLXdpdGgtbnVtYSwgLS13aXRob3V0LW51bWEsIG51bWFjdGwsIgorRVhUUkFfQVVUT1JFQ09ORiArPSAiLUkgJHtTfS90ZXN0Y2FzZXMvcmVhbHRpbWUvbTQiCitFWFRSQV9PRUNPTkYgPSAiIC0td2l0aC1wb3dlci1tYW5hZ2VtZW50LXRlc3RzdWl0ZSAtLXdpdGgtcmVhbHRpbWUtdGVzdHN1aXRlICIKKyMgbHRwIG5ldHdvcmsvcnBjIHRlc3QgY2FzZXMgZnRiZnMgd2hlbiBsaWJ0aXJwYyBpcyBmb3VuZAorRVhUUkFfT0VDT05GICs9ICIgLS13aXRob3V0LXRpcnBjICIKKworZG9faW5zdGFsbCgpeworICAgIGluc3RhbGwgLWQgJHtEfS9vcHQvbHRwLworICAgIG9lX3J1bm1ha2UgREVTVERJUj0ke0R9IFNLSVBfSURDSEVDSz0xIGluc3RhbGwKKworICAgICMgZml4dXAgbm90IGRlcGxveSBTVFBmYWlsdXJlX3JlcG9ydC5wbCB0byBhdm9pZCBjb25mdXNpbmcgYWJvdXQgaXQgZmFpbHMgdG8gcnVuCisgICAgIyBhcyBpdCBsYWNrcyBkZXBlbmRlbmN5IG9uIHNvbWUgcGVybCBtb3VkbGUgc3VjaCBhcyBMV1A6OlNpbXBsZQorICAgICMgQW5kIHRoaXMgc2NyaXB0IHByZXZpb3VzbHkgd29ya3MgYXMgYSB0b29sIGZvciBhbmFseXppbmcgZmFpbHVyZXMgZnJvbSBMVFAKKyAgICAjIHJ1bnMgb24gdGhlIE9TREwncyBTY2FsZWFibGUgVGVzdCBQbGF0Zm9ybSAoU1RQKSBhbmQgaXQgbWFpbmx5IGFjY2Vzc2VzCisgICAgIyBodHRwOi8va2hhY2sub3NkbC5vcmcgdG8gcmV0cmlldmUgbHRwIHRlc3QgcmVzdWx0cyBydW4gb24KKyAgICAjIE9TREwncyBTY2FsZWFibGUgVGVzdCBQbGF0Zm9ybSwgYnV0IG5vdyBodHRwOi8va2hhY2sub3NkbC5vcmcgdW5hY2Nlc3NpYmxlCisgICAgcm0gLXJmICR7RH0vb3B0L2x0cC9iaW4vU1RQZmFpbHVyZV9yZXBvcnQucGwKKworICAgICMgQ29weSBQT1NJWCB0ZXN0IHN1aXRlIGludG8gJHtEfS9vcHQvbHRwL3Rlc3RjYXNlcyBieSBtYW51YWwKKyAgICBjcCAtciB0ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUgJHtEfS9vcHQvbHRwL3Rlc3RjYXNlcworfQorCitSREVQRU5EU18ke1BOfSA9ICJcCisgICAgYWNsIFwKKyAgICBhdCBcCisgICAgYXR0ciBcCisgICAgYmFzaCBcCisgICAgY3BpbyBcCisgICAgY3JvbmllIFwKKyAgICBjdXJsIFwKKyAgICBlMmZzcHJvZ3MtbWtlMmZzIFwKKyAgICBleHBlY3QgXAorICAgIGdhd2sgXAorICAgIGd6aXAgXAorICAgIGlwcm91dGUyIFwKKyAgICBsZGQgXAorICAgIGxpYmFpbyBcCisgICAgbG9ncm90YXRlIFwKKyAgICBwZXJsIFwKKyAgICBweXRob24tY29yZSBcCisgICAgdW56aXAgXAorICAgIHV0aWwtbGludXggXAorICAgIHdoaWNoIFwKKyIKKworRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIvb3B0L2x0cC9saWIvbGlibWVtLmEgL29wdC9sdHAvdGVzdGNhc2VzL2RhdGEvbm0wMS9saWIuYSIKKworRklMRVNfJHtQTn0gKz0gIi9vcHQvbHRwLyogL29wdC9sdHAvcnVudGVzdC8qIC9vcHQvbHRwL3NjZW5hcmlvX2dyb3Vwcy8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9iaW4vKiAvb3B0L2x0cC90ZXN0Y2FzZXMvYmluLyovYmluLyogL29wdC9sdHAvdGVzdHNjcmlwdHMvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvY29uZm9ybWFuY2UvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvRG9jdW1lbnRhdGlvbi8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9mdW5jdGlvbmFsLyogL29wdC9sdHAvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL2luY2x1ZGUvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvc2NyaXB0cy8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9zdHJlc3MvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvdG9vbHMvKiIKKworIyBBdm9pZCBnZW5lcmF0ZWQgYmluYXJpZXMgc3RyaXBwaW5nLiBPdGhlcndpc2Ugc29tZSBvZiB0aGUgbHRwIHRlc3RzIHN1Y2ggYXMgbGRkMDEgJiBubTAxIGZhaWxzCitJTkhJQklUX1BBQ0tBR0VfU1RSSVAgPSAiMSIKK0lOSElCSVRfUEFDS0FHRV9ERUJVR19TUExJVCA9ICIxIgorIyBIb3dldmVyLCB0ZXN0X2FyY2hfc3RyaXBwZWQgaXMgYWxyZWFkeSBzdHJpcHBlZCwgc28uLi4KK0lOU0FORV9TS0lQXyR7UE59ICs9ICJhbHJlYWR5LXN0cmlwcGVkIgorCisjIEF2b2lkIGZpbGUgZGVwZW5kZW5jeSBzY2FucywgYXMgTFRQIGNoZWNrcyBmb3IgdGhpbmdzIHRoYXQgbWF5IG9yIG1heSBub3QKKyMgZXhpc3Qgb24gdGhlIHJ1bm5pbmcgc3lzdGVtLiAgRm9yIGluc3RhbmNlIGl0IGhhcyBzcGVjaWZpYyBjaGVja3MgZm9yCisjIGNzaCBhbmQga3NoIHdoaWNoIGFyZSBub3QgdHlwaWNhbGx5IHBhcnQgb2YgT3BlbkVtYmVkZGVkIHN5c3RlbXMgKGJ1dAorIyBjYW4gYmUgYWRkZWQgdmlhIGFkZGl0aW9uYWwgbGF5ZXJzLikKK1NLSVBfRklMRURFUFNfJHtQTn0gPSAnMScKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHppcC9semlwXzEuMTguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x6aXAvbHppcF8xLjE4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMWRjOGNlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHppcC9semlwXzEuMTguYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1TVU1NQVJZID0gIkxvc3NsZXNzIGRhdGEgY29tcHJlc3NvciBiYXNlZCBvbiB0aGUgTFpNQSBhbGdvcml0aG0iCi1IT01FUEFHRSA9ICJodHRwOi8vbHppcC5ub25nbnUub3JnL2x6aXAuaHRtbCIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzZkNmUzMDBmZmQ4ZmI5ZDE4YmQ5YjEzNmE5YmJhMTMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZGVjb2Rlci5jYztiZWdpbmxpbmU9MztlbmRsaW5lPTE2O21kNT1kYjA5ZmUzZjk1NzNmOTRkMDA3NmY3ZjA3OTU5ZTZlMSIKLQotU1JDX1VSSSA9ICIke1NBVkFOTkFIX0dOVV9NSVJST1J9L2x6aXAvbHppcC0ke1BWfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzODM4NTY3NDYwY2U0YTEwMTQzZGU0YmNjYzY0ZmUxYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0N2Y5ODgyYTEwNGFiMDU1MzJmNDY3YTdiOGY0ZGRiYjg5OGZhMmYxZThkOWQ0Njg1NTZkNmMyZDA0ZGIxNGRkIgotCi1DT05GSUdVUkVPUFRTID0gIlwKLSAgICAnLS1zcmNkaXI9JHtTfScgXAotICAgICctLXByZWZpeD0ke3ByZWZpeH0nIFwKLSAgICAnLS1leGVjLXByZWZpeD0ke2V4ZWNfcHJlZml4fScgXAotICAgICctLWJpbmRpcj0ke2JpbmRpcn0nIFwKLSAgICAnLS1kYXRhZGlyPSR7ZGF0YWRpcn0nIFwKLSAgICAnLS1pbmZvZGlyPSR7aW5mb2Rpcn0nIFwKLSAgICAnLS1zeXNjb25mZGlyPSR7c3lzY29uZmRpcn0nIFwKLSAgICAnQ1hYPSR7Q1hYfScgXAotICAgICdDUFBGTEFHUz0ke0NQUEZMQUdTfScgXAotICAgICdDWFhGTEFHUz0ke0NYWEZMQUdTfScgXAotICAgICdMREZMQUdTPSR7TERGTEFHU30nIFwKLSIKLUVYVFJBX09FTUFLRSA9ICIiCi0KLUIgPSAiJHtTfS9vYmoiCi1kb19jb25maWd1cmUgKCkgewotICAgICR7U30vY29uZmlndXJlICR7Q09ORklHVVJFT1BUU30KLX0KLQotZG9faW5zdGFsbCAoKSB7Ci0gICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCi0gICAgIyBJbmZvIGRpciBsaXN0aW5nIGlzbid0IGludGVyZXN0aW5nIGF0IHRoaXMgcG9pbnQgc28gcmVtb3ZlIGl0IGlmIGl0IGV4aXN0cy4KLSAgICBpZiBbIC1lICIke0R9JHtpbmZvZGlyfS9kaXIiIF07IHRoZW4KLSAgICAgICAgcm0gLWYgJHtEfSR7aW5mb2Rpcn0vZGlyCi0gICAgZmkKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9semlwL2x6aXBfMS4xOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHppcC9semlwXzEuMTkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDk5YjM2NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHppcC9semlwXzEuMTkuYmIKQEAgLTAsMCArMSw0MSBAQAorU1VNTUFSWSA9ICJMb3NzbGVzcyBkYXRhIGNvbXByZXNzb3IgYmFzZWQgb24gdGhlIExaTUEgYWxnb3JpdGhtIgorSE9NRVBBR0UgPSAiaHR0cDovL2x6aXAubm9uZ251Lm9yZy9semlwLmh0bWwiCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc2ZDZlMzAwZmZkOGZiOWQxOGJkOWIxMzZhOWJiYTEzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RlY29kZXIuY2M7YmVnaW5saW5lPTM7ZW5kbGluZT0xNjttZDU9ZGIwOWZlM2Y5NTczZjk0ZDAwNzZmN2YwNzk1OWU2ZTEiCisKK1NSQ19VUkkgPSAiJHtTQVZBTk5BSF9HTlVfTUlSUk9SfS9semlwL2x6aXAtJHtQVn0udGFyLmd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiNGRkODc5MGQ3NTI4NDQwZDAzNGZjNzEzYTg2ODBiZDMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmZhZGM0ZjU2YmUxYmMwZDNhZTE1NWVjNDUyN2JkMDAzMTMzYmRjNzAzYTc1M2IyY2M2ODNmNjEwZTY0NmJhOSIKKworQ09ORklHVVJFT1BUUyA9ICJcCisgICAgJy0tc3JjZGlyPSR7U30nIFwKKyAgICAnLS1wcmVmaXg9JHtwcmVmaXh9JyBcCisgICAgJy0tZXhlYy1wcmVmaXg9JHtleGVjX3ByZWZpeH0nIFwKKyAgICAnLS1iaW5kaXI9JHtiaW5kaXJ9JyBcCisgICAgJy0tZGF0YWRpcj0ke2RhdGFkaXJ9JyBcCisgICAgJy0taW5mb2Rpcj0ke2luZm9kaXJ9JyBcCisgICAgJy0tc3lzY29uZmRpcj0ke3N5c2NvbmZkaXJ9JyBcCisgICAgJ0NYWD0ke0NYWH0nIFwKKyAgICAnQ1BQRkxBR1M9JHtDUFBGTEFHU30nIFwKKyAgICAnQ1hYRkxBR1M9JHtDWFhGTEFHU30nIFwKKyAgICAnTERGTEFHUz0ke0xERkxBR1N9JyBcCisiCitFWFRSQV9PRU1BS0UgPSAiIgorCitCID0gIiR7U30vb2JqIgorZG9fY29uZmlndXJlICgpIHsKKyAgICAke1N9L2NvbmZpZ3VyZSAke0NPTkZJR1VSRU9QVFN9Cit9CisKK2RvX2luc3RhbGwgKCkgeworICAgIG9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAorICAgICMgSW5mbyBkaXIgbGlzdGluZyBpc24ndCBpbnRlcmVzdGluZyBhdCB0aGlzIHBvaW50IHNvIHJlbW92ZSBpdCBpZiBpdCBleGlzdHMuCisgICAgaWYgWyAtZSAiJHtEfSR7aW5mb2Rpcn0vZGlyIiBdOyB0aGVuCisgICAgICAgIHJtIC1mICR7RH0ke2luZm9kaXJ9L2RpcgorICAgIGZpCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFpbHgvZmlsZXMvMDAwMS1Eb24tdC1yZXVzZS13ZWFrLXN5bWJvbC1vcHRvcHQtdG8tZml4LUZUQkZTLW9uLW1pcHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L2ZpbGVzLzAwMDEtRG9uLXQtcmV1c2Utd2Vhay1zeW1ib2wtb3B0b3B0LXRvLWZpeC1GVEJGUy1vbi1taXBzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3N2RhMzMzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFpbHgvZmlsZXMvMDAwMS1Eb24tdC1yZXVzZS13ZWFrLXN5bWJvbC1vcHRvcHQtdG8tZml4LUZUQkZTLW9uLW1pcHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi1Gcm9tOiBMdWsgQ2xhZXMgPGx1a0BkZWJpYW4ub3JnPgotRGF0ZTogU2F0LCA0IEp1bCAyMDA5IDEwOjU0OjUzICswMjAwCi1TdWJqZWN0OiBEb24ndCByZXVzZSB3ZWFrIHN5bWJvbCBvcHRvcHQgdG8gZml4IEZUQkZTIG9uIG1pcHMqCi0KLVRoaXMgcGF0Y2ggaXMgdGFrZW4gZnJvbSAKLWZ0cDovL2Z0cC5kZWJpYW4ub3JnL2RlYmlhbi9wb29sL21haW4vaC9oZWlybG9vbS1tYWlseC9oZWlybG9vbS1tYWlseF8xMi41LTUuZGViaWFuLnRhci54egotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW3Vwc3RyZWFtIGlzIGRlYWRdCi0tLS0KLSBnZXRvcHQuYyB8ICAgMTAgKysrKystLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nZXRvcHQuYyBiL2dldG9wdC5jCi1pbmRleCA4M2NlNjI4Li44MmU5ODNjIDEwMDY0NAotLS0tIGEvZ2V0b3B0LmMKLSsrKyBiL2dldG9wdC5jCi1AQCAtNDMsNyArNDMsNyBAQCB0eXBlZGVmCWludAlzc2l6ZV90OwotIGNoYXIJKm9wdGFyZzsKLSBpbnQJb3B0aW5kID0gMTsKLSBpbnQJb3B0ZXJyID0gMTsKLS1pbnQJb3B0b3B0OwotK2ludAlvcHRvcHRjOwotIAotIHN0YXRpYyB2b2lkCi0gZXJyb3IoY29uc3QgY2hhciAqcywgaW50IGMpCi1AQCAtNjksNyArNjksNyBAQCBlcnJvcihjb25zdCBjaGFyICpzLCBpbnQgYykKLSAJCSpicCsrID0gKnMrKzsKLSAJd2hpbGUgKCptc2cpCi0gCQkqYnArKyA9ICptc2crKzsKLS0JKmJwKysgPSBvcHRvcHQ7Ci0rCSpicCsrID0gb3B0b3B0YzsKLSAJKmJwKysgPSAnXG4nOwotIAl3cml0ZSgyLCBidWYsIGJwIC0gYnVmKTsKLSAJYWNfZnJlZShidWYpOwotQEAgLTEwMSwxMyArMTAxLDEzIEBAIGdldG9wdChpbnQgYXJnYywgY2hhciAqY29uc3QgYXJndltdLCBjb25zdCBjaGFyICpvcHRzdHJpbmcpCi0gCQl9Ci0gCQljdXJwID0gJmFyZ3Zbb3B0aW5kXVsxXTsKLSAJfQotLQlvcHRvcHQgPSBjdXJwWzBdICYgMDM3NzsKLSsJb3B0b3B0YyA9IGN1cnBbMF0gJiAwMzc3OwotIAl3aGlsZSAob3B0c3RyaW5nWzBdKSB7Ci0gCQlpZiAob3B0c3RyaW5nWzBdID09ICc6JykgewotIAkJCW9wdHN0cmluZysrOwotIAkJCWNvbnRpbnVlOwotIAkJfQotLQkJaWYgKChvcHRzdHJpbmdbMF0gJiAwMzc3KSA9PSBvcHRvcHQpIHsKLSsJCWlmICgob3B0c3RyaW5nWzBdICYgMDM3NykgPT0gb3B0b3B0YykgewotIAkJCWlmIChvcHRzdHJpbmdbMV0gPT0gJzonKSB7Ci0gCQkJCWlmIChjdXJwWzFdICE9ICdcMCcpIHsKLSAJCQkJCW9wdGFyZyA9IChjaGFyICopJmN1cnBbMV07Ci1AQCAtMTI3LDcgKzEyNyw3IEBAIGdldG9wdChpbnQgYXJnYywgY2hhciAqY29uc3QgYXJndltdLCBjb25zdCBjaGFyICpvcHRzdHJpbmcpCi0gCQkJCQlvcHRpbmQrKzsKLSAJCQkJb3B0YXJnID0gMDsKLSAJCQl9Ci0tCQkJcmV0dXJuIG9wdG9wdDsKLSsJCQlyZXR1cm4gb3B0b3B0YzsKLSAJCX0KLSAJCW9wdHN0cmluZysrOwotIAl9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L2ZpbGVzLzAwMDItUGF0Y2hlZC1vdXQtU1NMMi1zdXBwb3J0LXNpbmNlLWl0LWlzLW5vLWxvbmdlci1zdXBwby5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFpbHgvZmlsZXMvMDAwMi1QYXRjaGVkLW91dC1TU0wyLXN1cHBvcnQtc2luY2UtaXQtaXMtbm8tbG9uZ2VyLXN1cHBvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YmFkNDMzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFpbHgvZmlsZXMvMDAwMi1QYXRjaGVkLW91dC1TU0wyLXN1cHBvcnQtc2luY2UtaXQtaXMtbm8tbG9uZ2VyLXN1cHBvLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotRnJvbTogSGlsa28gQmVuZ2VuIDxiZW5nZW5AZGViaWFuLm9yZz4KLURhdGU6IFdlZCwgMjcgQXByIDIwMTEgMDA6MTg6NDIgKzAyMDAKLVN1YmplY3Q6IFBhdGNoZWQgb3V0IFNTTDIgc3VwcG9ydCBzaW5jZSBpdCBpcyBubyBsb25nZXIgc3VwcG9ydGVkIGJ5IE9wZW5TU0wuCi0KLVRoaXMgcGF0Y2ggaXMgdGFrZW4gZnJvbQotZnRwOi8vZnRwLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wvbWFpbi9oL2hlaXJsb29tLW1haWx4L2hlaXJsb29tLW1haWx4XzEyLjUtNS5kZWJpYW4udGFyLnh6Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbdXBzdHJlYW0gaXMgZGVhZF0KLS0tLQotIG1haWx4LjEgICB8ICAgIDIgKy0KLSBvcGVuc3NsLmMgfCAgICA0ICstLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL21haWx4LjEgYi9tYWlseC4xCi1pbmRleCA0MTdlYTA0Li5hMDJlNDMwIDEwMDY0NAotLS0tIGEvbWFpbHguMQotKysrIGIvbWFpbHguMQotQEAgLTM1NzUsNyArMzU3NSw3IEBAIE9ubHkgYXBwbGljYWJsZSBpZiBTU0wvVExTIHN1cHBvcnQgaXMgYnVpbHQgdXNpbmcgT3BlblNTTC4KLSAuVFAKLSAuQiBzc2wtbWV0aG9kCi0gU2VsZWN0cyBhIFNTTC9UTFMgcHJvdG9jb2wgdmVyc2lvbjsKLS12YWxpZCB2YWx1ZXMgYXJlIGBzc2wyJywgYHNzbDMnLCBhbmQgYHRsczEnLgotK3ZhbGlkIHZhbHVlcyBhcmUgYHNzbDMnLCBhbmQgYHRsczEnLgotIElmIHVuc2V0LCB0aGUgbWV0aG9kIGlzIHNlbGVjdGVkIGF1dG9tYXRpY2FsbHksCi0gaWYgcG9zc2libGUuCi0gLlRQCi1kaWZmIC0tZ2l0IGEvb3BlbnNzbC5jIGIvb3BlbnNzbC5jCi1pbmRleCBiNGUzM2ZjLi40NGZlNGU1IDEwMDY0NAotLS0tIGEvb3BlbnNzbC5jCi0rKysgYi9vcGVuc3NsLmMKLUBAIC0yMTYsOSArMjE2LDcgQEAgc3NsX3NlbGVjdF9tZXRob2QoY29uc3QgY2hhciAqdWhwKQotIAotIAljcCA9IHNzbF9tZXRob2Rfc3RyaW5nKHVocCk7Ci0gCWlmIChjcCAhPSBOVUxMKSB7Ci0tCQlpZiAoZXF1YWwoY3AsICJzc2wyIikpCi0tCQkJbWV0aG9kID0gU1NMdjJfY2xpZW50X21ldGhvZCgpOwotLQkJZWxzZSBpZiAoZXF1YWwoY3AsICJzc2wzIikpCi0rCQlpZiAoZXF1YWwoY3AsICJzc2wzIikpCi0gCQkJbWV0aG9kID0gU1NMdjNfY2xpZW50X21ldGhvZCgpOwotIAkJZWxzZSBpZiAoZXF1YWwoY3AsICJ0bHMxIikpCi0gCQkJbWV0aG9kID0gVExTdjFfY2xpZW50X21ldGhvZCgpOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9maWxlcy8wMDAzLUZpeGVkLUxpbnRpYW4td2FybmluZy13YXJuaW5nLW1hY3JvLU4tbm90LWRlZmluZWQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L2ZpbGVzLzAwMDMtRml4ZWQtTGludGlhbi13YXJuaW5nLXdhcm5pbmctbWFjcm8tTi1ub3QtZGVmaW5lZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTNiNzNhZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L2ZpbGVzLzAwMDMtRml4ZWQtTGludGlhbi13YXJuaW5nLXdhcm5pbmctbWFjcm8tTi1ub3QtZGVmaW5lZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLUZyb206IEhpbGtvIEJlbmdlbiA8YmVuZ2VuQGRlYmlhbi5vcmc+Ci1EYXRlOiBTYXQsIDE0IEFwciAyMDEyIDIwOjIyOjQzICswMjAwCi1TdWJqZWN0OiBGaXhlZCBMaW50aWFuIHdhcm5pbmcgKHdhcm5pbmc6IG1hY3JvIGBOJyBub3QgZGVmaW5lZCkKLQotVGhpcyBwYXRjaCBpcyB0YWtlbiBmcm9tCi1mdHA6Ly9mdHAuZGViaWFuLm9yZy9kZWJpYW4vcG9vbC9tYWluL2gvaGVpcmxvb20tbWFpbHgvaGVpcmxvb20tbWFpbHhfMTIuNS01LmRlYmlhbi50YXIueHoKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFt1cHN0cmVhbSBpcyBkZWFkXQotLS0tCi0gbWFpbHguMSB8ICAgIDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL21haWx4LjEgYi9tYWlseC4xCi1pbmRleCBhMDJlNDMwLi5iMDcyM2JkIDEwMDY0NAotLS0tIGEvbWFpbHguMQotKysrIGIvbWFpbHguMQotQEAgLTM3ODEsNyArMzc4MSw3IEBAIHlvdSBjb3VsZCBleGFtaW5lIHRoZSBmaXJzdCBtZXNzYWdlIGJ5IGdpdmluZyB0aGUgY29tbWFuZDoKLSAuc3AKLSAuZmkKLSB3aGljaCBtaWdodCBjYXVzZQotLS5OIG1haWx4Ci0rLkkgbWFpbHgKLSB0byByZXNwb25kIHdpdGgsIGZvciBleGFtcGxlOgotIC5uZgotIC5zcApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9maWxlcy8wMDExLW91dG9mLUludHJvZHVjZS1leHBhbmRhZGRyLWZsYWcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L2ZpbGVzLzAwMTEtb3V0b2YtSW50cm9kdWNlLWV4cGFuZGFkZHItZmxhZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTNiOTU1Yy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L2ZpbGVzLzAwMTEtb3V0b2YtSW50cm9kdWNlLWV4cGFuZGFkZHItZmxhZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLUZyb20gOTk4NGFlNWNiMGVhMGQ2MWRmMTYxMmIwNjk1MmE2MTMyM2MwODNkOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEZsb3JpYW4gV2VpbWVyIDxmd2VpbWVyQHJlZGhhdC5jb20+Ci1EYXRlOiBNb24sIDE3IE5vdiAyMDE0IDExOjEzOjM4ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggMS80XSBvdXRvZjogSW50cm9kdWNlIGV4cGFuZGFkZHIgZmxhZwotCi1Eb2N1bWVudCB0aGF0IGFkZHJlc3MgZXhwYW5zaW9uIGlzIGRpc2FibGVkIHVubGVzcyB0aGUgZXhwYW5kYWRkcgotYmluYXJ5IG9wdGlvbiBpcyBzZXQuCi0KLVRoaXMgaGFzIGJlZW4gYXNzaWduZWQgQ1ZFLTIwMTQtNzg0NCBmb3IgQlNEIG1haWx4LCBidXQgaXQgaXMgbm90Ci1hIHZ1bG5lcmFiaWxpdHkgaW4gSGVpcmxvb20gbWFpbHggYmVjYXVzZSB0aGlzIGZlYXR1cmUgd2FzIGRvY3VtZW50ZWQuCi0KLVRoaXMgcGF0Y2ggaXMgdGFrZW4gZnJvbQotZnRwOi8vZnRwLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wvbWFpbi9oL2hlaXJsb29tLW1haWx4L2hlaXJsb29tLW1haWx4XzEyLjUtNS5kZWJpYW4udGFyLnh6Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbdXBzdHJlYW0gaXMgZGVhZF0KLUNWRTogQ1ZFLTIwMTQtNzg0NAotLS0tCi0gbWFpbHguMSB8IDE0ICsrKysrKysrKysrKysrCi0gbmFtZXMuYyB8ICAzICsrKwotIDIgZmlsZXMgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvbWFpbHguMSBiL21haWx4LjEKLWluZGV4IDcwYTc4NTkuLjIyYTE3MWIgMTAwNjQ0Ci0tLS0gYS9tYWlseC4xCi0rKysgYi9tYWlseC4xCi1AQCAtNjU2LDYgKzY1NiwxNCBAQCBidXQgYW55IHJlcGx5IHJldHVybmVkIHRvIHRoZSBtYWNoaW5lCi0gd2lsbCBoYXZlIHRoZSBzeXN0ZW0gd2lkZSBhbGlhcyBleHBhbmRlZAotIGFzIGFsbCBtYWlsIGdvZXMgdGhyb3VnaCBzZW5kbWFpbC4KLSAuU1MgIlJlY2lwaWVudCBhZGRyZXNzIHNwZWNpZmljYXRpb25zIgotK0lmIHRoZQotKy5JIGV4cGFuZGFkZHIKLStvcHRpb24gaXMgbm90IHNldCAodGhlIGRlZmF1bHQpLCByZWNpcGllbnQgYWRkcmVzc2VzIG11c3QgYmUgbmFtZXMgb2YKLStsb2NhbCBtYWlsYm94ZXMgb3IgSW50ZXJuZXQgbWFpbCBhZGRyZXNzZXMuCi0rLlBQCi0rSWYgdGhlCi0rLkkgZXhwYW5kYWRkcgotK29wdGlvbiBpcyBzZXQsIHRoZSBmb2xsb3dpbmcgcnVsZXMgYXBwbHk6Ci0gV2hlbiBhbiBhZGRyZXNzIGlzIHVzZWQgdG8gbmFtZSBhIHJlY2lwaWVudAotIChpbiBhbnkgb2YgVG8sIENjLCBvciBCY2MpLAotIG5hbWVzIG9mIGxvY2FsIG1haWwgZm9sZGVycwotQEAgLTIzOTEsNiArMjM5OSwxMiBAQCBhbmQgZXhpdHMgaW1tZWRpYXRlbHkuCi0gSWYgdGhpcyBvcHRpb24gaXMgc2V0LAotIFxmSW1haWx4XGZSIHN0YXJ0cyBldmVuIHdpdGggYW4gZW1wdHkgbWFpbGJveC4KLSAuVFAKLSsuQiBleHBhbmRhZGRyCi0rQ2F1c2VzCi0rLkkgbWFpbHgKLSt0byBleHBhbmQgbWVzc2FnZSByZWNpcGllbnQgYWRkcmVzc2VzLCBhcyBleHBsYWluZWQgaW4gdGhlIHNlY3Rpb24sCi0rUmVjaXBpZW50IGFkZHJlc3Mgc3BlY2lmaWNhdGlvbnMuCi0rLlRQCi0gLkIgZmxpcHIKLSBFeGNoYW5nZXMgdGhlCi0gLkkgUmVzcG9uZAotZGlmZiAtLWdpdCBhL25hbWVzLmMgYi9uYW1lcy5jCi1pbmRleCA2NmU5NzZiLi5jNjk1NjBmIDEwMDY0NAotLS0tIGEvbmFtZXMuYwotKysrIGIvbmFtZXMuYwotQEAgLTI2OCw2ICsyNjgsOSBAQCBvdXRvZihzdHJ1Y3QgbmFtZSAqbmFtZXMsIEZJTEUgKmZvLCBzdHJ1Y3QgaGVhZGVyICpocCkKLSAJRklMRSAqZm91dCwgKmZpbjsKLSAJaW50IGlzcGlwZTsKLSAKLSsJaWYgKHZhbHVlKCJleHBhbmRhZGRyIikgPT0gTlVMTCkKLSsJCXJldHVybiBuYW1lczsKLSsKLSAJdG9wID0gbmFtZXM7Ci0gCW5wID0gbmFtZXM7Ci0gCXRpbWUoJm5vdyk7Ci0tLSAKLTEuOS4zCi0KLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9maWxlcy8wMDEyLXVucGFjay1EaXNhYmxlLW9wdGlvbi1wcm9jZXNzaW5nLWZvci1lbWFpbC1hZGRyZXNzZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L2ZpbGVzLzAwMTItdW5wYWNrLURpc2FibGUtb3B0aW9uLXByb2Nlc3NpbmctZm9yLWVtYWlsLWFkZHJlc3Nlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGNkYmZkOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L2ZpbGVzLzAwMTItdW5wYWNrLURpc2FibGUtb3B0aW9uLXByb2Nlc3NpbmctZm9yLWVtYWlsLWFkZHJlc3Nlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAgQEAKLUZyb20gZTM0ZTJhYzY3YjgwNDk3MDgwZWJlY2NjZWM0MGMzYjYxNDU2MTY3ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEZsb3JpYW4gV2VpbWVyIDxmd2VpbWVyQHJlZGhhdC5jb20+Ci1EYXRlOiBNb24sIDE3IE5vdiAyMDE0IDExOjE0OjA2ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggMi80XSB1bnBhY2s6IERpc2FibGUgb3B0aW9uIHByb2Nlc3NpbmcgZm9yIGVtYWlsIGFkZHJlc3NlcwotIHdoZW4gY2FsbGluZyBzZW5kbWFpbAotCi1UaGlzIHBhdGNoIGlzIHRha2VuIGZyb20KLWZ0cDovL2Z0cC5kZWJpYW4ub3JnL2RlYmlhbi9wb29sL21haW4vaC9oZWlybG9vbS1tYWlseC9oZWlybG9vbS1tYWlseF8xMi41LTUuZGViaWFuLnRhci54egotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW3Vwc3RyZWFtIGlzIGRlYWRdCi0tLS0KLSBleHRlcm4uaCAgfCAyICstCi0gbmFtZXMuYyAgIHwgOCArKysrKystLQotIHNlbmRvdXQuYyB8IDIgKy0KLSAzIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2V4dGVybi5oIGIvZXh0ZXJuLmgKLWluZGV4IDZiODViYTAuLjg4NzNmZTggMTAwNjQ0Ci0tLS0gYS9leHRlcm4uaAotKysrIGIvZXh0ZXJuLmgKLUBAIC0zOTYsNyArMzk2LDcgQEAgc3RydWN0IG5hbWUgKm91dG9mKHN0cnVjdCBuYW1lICpuYW1lcywgRklMRSAqZm8sIHN0cnVjdCBoZWFkZXIgKmhwKTsKLSBpbnQgaXNfZmlsZWFkZHIoY2hhciAqbmFtZSk7Ci0gc3RydWN0IG5hbWUgKnVzZXJtYXAoc3RydWN0IG5hbWUgKm5hbWVzKTsKLSBzdHJ1Y3QgbmFtZSAqY2F0KHN0cnVjdCBuYW1lICpuMSwgc3RydWN0IG5hbWUgKm4yKTsKLS1jaGFyICoqdW5wYWNrKHN0cnVjdCBuYW1lICpucCk7Ci0rY2hhciAqKnVucGFjayhzdHJ1Y3QgbmFtZSAqc21vcHRzLCBzdHJ1Y3QgbmFtZSAqbnApOwotIHN0cnVjdCBuYW1lICplbGlkZShzdHJ1Y3QgbmFtZSAqbmFtZXMpOwotIGludCBjb3VudChzdHJ1Y3QgbmFtZSAqbnApOwotIHN0cnVjdCBuYW1lICpkZWxldGVfYWx0ZXJuYXRlcyhzdHJ1Y3QgbmFtZSAqbnApOwotZGlmZiAtLWdpdCBhL25hbWVzLmMgYi9uYW1lcy5jCi1pbmRleCBjNjk1NjBmLi40NWJiYWVkIDEwMDY0NAotLS0tIGEvbmFtZXMuYwotKysrIGIvbmFtZXMuYwotQEAgLTU0OSw3ICs1NDksNyBAQCBjYXQoc3RydWN0IG5hbWUgKm4xLCBzdHJ1Y3QgbmFtZSAqbjIpCi0gICogUmV0dXJuIGFuIGVycm9yIGlmIHRoZSBuYW1lIGxpc3Qgd29uJ3QgZml0LgotICAqLwotIGNoYXIgKioKLS11bnBhY2soc3RydWN0IG5hbWUgKm5wKQotK3VucGFjayhzdHJ1Y3QgbmFtZSAqc21vcHRzLCBzdHJ1Y3QgbmFtZSAqbnApCi0gewotIAljaGFyICoqYXAsICoqdG9wOwotIAlzdHJ1Y3QgbmFtZSAqbjsKLUBAIC01NjQsNyArNTY0LDcgQEAgdW5wYWNrKHN0cnVjdCBuYW1lICpucCkKLSAJICogdGhlIHRlcm1pbmF0aW5nIDAgcG9pbnRlci4gIEFkZGl0aW9uYWwgc3BvdHMgbWF5IGJlIG5lZWRlZAotIAkgKiB0byBwYXNzIGFsb25nIC1mIHRvIHRoZSBob3N0IG1haWxlci4KLSAJICovCi0tCWV4dHJhID0gMjsKLSsJZXh0cmEgPSAzICsgY291bnQoc21vcHRzKTsKLSAJZXh0cmErKzsKLSAJbWV0b28gPSB2YWx1ZSgibWV0b28iKSAhPSBOVUxMOwotIAlpZiAobWV0b28pCi1AQCAtNTgxLDYgKzU4MSwxMCBAQCB1bnBhY2soc3RydWN0IG5hbWUgKm5wKQotIAkJKmFwKysgPSAiLW0iOwotIAlpZiAodmVyYm9zZSkKLSAJCSphcCsrID0gIi12IjsKLSsJZm9yICg7IHNtb3B0cyAhPSBOVUxMOyBzbW9wdHMgPSBzbW9wdHMtPm5fZmxpbmspCi0rCQlpZiAoKHNtb3B0cy0+bl90eXBlICYgR0RFTCkgPT0gMCkKLSsJCQkqYXArKyA9IHNtb3B0cy0+bl9uYW1lOwotKwkqYXArKyA9ICItLSI7Ci0gCWZvciAoOyBuICE9IE5VTEw7IG4gPSBuLT5uX2ZsaW5rKQotIAkJaWYgKChuLT5uX3R5cGUgJiBHREVMKSA9PSAwKQotIAkJCSphcCsrID0gbi0+bl9uYW1lOwotZGlmZiAtLWdpdCBhL3NlbmRvdXQuYyBiL3NlbmRvdXQuYwotaW5kZXggN2I3ZjJlYi4uYzUyZjE1ZCAxMDA2NDQKLS0tLSBhL3NlbmRvdXQuYwotKysrIGIvc2VuZG91dC5jCi1AQCAtODM1LDcgKzgzNSw3IEBAIHN0YXJ0X210YShzdHJ1Y3QgbmFtZSAqdG8sIHN0cnVjdCBuYW1lICptYWlsYXJncywgRklMRSAqaW5wdXQsCi0gI2VuZGlmCS8qIEhBVkVfU09DS0VUUyAqLwotIAotIAlpZiAoKHNtdHAgPSB2YWx1ZSgic210cCIpKSA9PSBOVUxMKSB7Ci0tCQlhcmdzID0gdW5wYWNrKGNhdChtYWlsYXJncywgdG8pKTsKLSsJCWFyZ3MgPSB1bnBhY2sobWFpbGFyZ3MsIHRvKTsKLSAJCWlmIChkZWJ1ZyB8fCB2YWx1ZSgiZGVidWciKSkgewotIAkJCXByaW50ZihjYXRnZXRzKGNhdGQsIENBVFNFVCwgMTgxLAotIAkJCQkJIlNlbmRtYWlsIGFyZ3VtZW50czoiKSk7Ci0tLSAKLTEuOS4zCi0KLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9maWxlcy8wMDEzLWZpby5jLVVuY29uZGl0aW9uYWxseS1yZXF1aXJlLXdvcmRleHAtc3VwcG9ydC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFpbHgvZmlsZXMvMDAxMy1maW8uYy1VbmNvbmRpdGlvbmFsbHktcmVxdWlyZS13b3JkZXhwLXN1cHBvcnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1NThkODYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9maWxlcy8wMDEzLWZpby5jLVVuY29uZGl0aW9uYWxseS1yZXF1aXJlLXdvcmRleHAtc3VwcG9ydC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExMyArMCwwIEBACi1Gcm9tIDJiYWU4ZWNmMDRlYzJiYTZiYjlmMGFmNWI4MDQ4NWRkMGVkYjQyN2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBGbG9yaWFuIFdlaW1lciA8ZndlaW1lckByZWRoYXQuY29tPgotRGF0ZTogTW9uLCAxNyBOb3YgMjAxNCAxMjo0ODoyNSArMDEwMAotU3ViamVjdDogW1BBVENIIDMvNF0gZmlvLmM6IFVuY29uZGl0aW9uYWxseSByZXF1aXJlIHdvcmRleHAgc3VwcG9ydAotCi1UaGlzIHBhdGNoIGlzIHRha2VuIGZyb20KLWZ0cDovL2Z0cC5kZWJpYW4ub3JnL2RlYmlhbi9wb29sL21haW4vaC9oZWlybG9vbS1tYWlseC9oZWlybG9vbS1tYWlseF8xMi41LTUuZGViaWFuLnRhci54egotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW3Vwc3RyZWFtIGlzIGRlYWRdCi0tLS0KLSBmaW8uYyB8IDY3ICsrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA2MiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2Zpby5jIGIvZmlvLmMKLWluZGV4IDY1ZThmMTAuLjE1MjkyMzYgMTAwNjQ0Ci0tLS0gYS9maW8uYwotKysrIGIvZmlvLmMKLUBAIC00MywxMiArNDMsMTUgQEAgc3RhdGljIGNoYXIgc2Njc2lkW10gPSAiQCgjKWZpby5jCTIuNzYgKGdyaXR0ZXIpIDkvMTYvMDkiOwotICNlbmRpZiAvKiBub3QgbGludCAqLwotIAotICNpbmNsdWRlICJyY3YuaCIKLSsKLSsjaWZuZGVmIEhBVkVfV09SREVYUAotKyNlcnJvciB3b3JkZXhwIHN1cHBvcnQgaXMgcmVxdWlyZWQKLSsjZW5kaWYKLSsKLSAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSAjaW5jbHVkZSA8c3lzL2ZpbGUuaD4KLSAjaW5jbHVkZSA8c3lzL3dhaXQuaD4KLS0jaWZkZWYJSEFWRV9XT1JERVhQCi0gI2luY2x1ZGUgPHdvcmRleHAuaD4KLS0jZW5kaWYJLyogSEFWRV9XT1JERVhQICovCi0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotIAotICNpZiBkZWZpbmVkIChVU0VfTlNTKQotQEAgLTQ4MSw3ICs0ODQsNiBAQCBuZXh0OgotIHN0YXRpYyBjaGFyICoKLSBnbG9ibmFtZShjaGFyICpuYW1lKQotIHsKLS0jaWZkZWYJSEFWRV9XT1JERVhQCi0gCXdvcmRleHBfdCB3ZTsKLSAJY2hhciAqY3A7Ci0gCXNpZ3NldF90IG5zZXQ7Ci1AQCAtNTI3LDY1ICs1MjksNiBAQCBnbG9ibmFtZShjaGFyICpuYW1lKQotIAl9Ci0gCXdvcmRmcmVlKCZ3ZSk7Ci0gCXJldHVybiBjcDsKLS0jZWxzZQkvKiAhSEFWRV9XT1JERVhQICovCi0tCWNoYXIgeG5hbWVbUEFUSFNJWkVdOwotLQljaGFyIGNtZGJ1ZltQQVRIU0laRV07CQkvKiBhbHNvIHVzZWQgZm9yIGZpbGUgbmFtZXMgKi8KLS0JaW50IHBpZCwgbDsKLS0JY2hhciAqY3AsICpzaGVsbDsKLS0JaW50IHBpdmVjWzJdOwotLQlleHRlcm4gaW50IHdhaXRfc3RhdHVzOwotLQlzdHJ1Y3Qgc3RhdCBzYnVmOwotLQotLQlpZiAocGlwZShwaXZlYykgPCAwKSB7Ci0tCQlwZXJyb3IoInBpcGUiKTsKLS0JCXJldHVybiBuYW1lOwotLQl9Ci0tCXNucHJpbnRmKGNtZGJ1Ziwgc2l6ZW9mIGNtZGJ1ZiwgImVjaG8gJXMiLCBuYW1lKTsKLS0JaWYgKChzaGVsbCA9IHZhbHVlKCJTSEVMTCIpKSA9PSBOVUxMKQotLQkJc2hlbGwgPSBTSEVMTDsKLS0JcGlkID0gc3RhcnRfY29tbWFuZChzaGVsbCwgMCwgLTEsIHBpdmVjWzFdLCAiLWMiLCBjbWRidWYsIE5VTEwpOwotLQlpZiAocGlkIDwgMCkgewotLQkJY2xvc2UocGl2ZWNbMF0pOwotLQkJY2xvc2UocGl2ZWNbMV0pOwotLQkJcmV0dXJuIE5VTEw7Ci0tCX0KLS0JY2xvc2UocGl2ZWNbMV0pOwotLWFnYWluOgotLQlsID0gcmVhZChwaXZlY1swXSwgeG5hbWUsIHNpemVvZiB4bmFtZSk7Ci0tCWlmIChsIDwgMCkgewotLQkJaWYgKGVycm5vID09IEVJTlRSKQotLQkJCWdvdG8gYWdhaW47Ci0tCQlwZXJyb3IoInJlYWQiKTsKLS0JCWNsb3NlKHBpdmVjWzBdKTsKLS0JCXJldHVybiBOVUxMOwotLQl9Ci0tCWNsb3NlKHBpdmVjWzBdKTsKLS0JaWYgKHdhaXRfY2hpbGQocGlkKSA8IDAgJiYgV1RFUk1TSUcod2FpdF9zdGF0dXMpICE9IFNJR1BJUEUpIHsKLS0JCWZwcmludGYoc3RkZXJyLCBjYXRnZXRzKGNhdGQsIENBVFNFVCwgODEsCi0tCQkJCSJcIiVzXCI6IEV4cGFuc2lvbiBmYWlsZWQuXG4iKSwgbmFtZSk7Ci0tCQlyZXR1cm4gTlVMTDsKLS0JfQotLQlpZiAobCA9PSAwKSB7Ci0tCQlmcHJpbnRmKHN0ZGVyciwgY2F0Z2V0cyhjYXRkLCBDQVRTRVQsIDgyLAotLQkJCQkJIlwiJXNcIjogTm8gbWF0Y2guXG4iKSwgbmFtZSk7Ci0tCQlyZXR1cm4gTlVMTDsKLS0JfQotLQlpZiAobCA9PSBzaXplb2YgeG5hbWUpIHsKLS0JCWZwcmludGYoc3RkZXJyLCBjYXRnZXRzKGNhdGQsIENBVFNFVCwgODMsCi0tCQkJCSJcIiVzXCI6IEV4cGFuc2lvbiBidWZmZXIgb3ZlcmZsb3cuXG4iKSwgbmFtZSk7Ci0tCQlyZXR1cm4gTlVMTDsKLS0JfQotLQl4bmFtZVtsXSA9IDA7Ci0tCWZvciAoY3AgPSAmeG5hbWVbbC0xXTsgKmNwID09ICdcbicgJiYgY3AgPiB4bmFtZTsgY3AtLSkKLS0JCTsKLS0JY3BbMV0gPSAnXDAnOwotLQlpZiAoc3RyY2hyKHhuYW1lLCAnICcpICYmIHN0YXQoeG5hbWUsICZzYnVmKSA8IDApIHsKLS0JCWZwcmludGYoc3RkZXJyLCBjYXRnZXRzKGNhdGQsIENBVFNFVCwgODQsCi0tCQkJCSJcIiVzXCI6IEFtYmlndW91cy5cbiIpLCBuYW1lKTsKLS0JCXJldHVybiBOVUxMOwotLQl9Ci0tCXJldHVybiBzYXZlc3RyKHhuYW1lKTsKLS0jZW5kaWYJLyogIUhBVkVfV09SREVYUCAqLwotIH0KLSAKLSAvKgotLS0gCi0xLjkuMwotCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFpbHgvZmlsZXMvMDAxNC1nbG9ibmFtZS1JbnZva2Utd29yZGV4cC13aXRoLVdSREVfTk9DTUQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L2ZpbGVzLzAwMTQtZ2xvYm5hbWUtSW52b2tlLXdvcmRleHAtd2l0aC1XUkRFX05PQ01ELnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZTE0YjhhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFpbHgvZmlsZXMvMDAxNC1nbG9ibmFtZS1JbnZva2Utd29yZGV4cC13aXRoLVdSREVfTk9DTUQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1Gcm9tIDczZmVmYTBjMWFjNzAwNDNlYzg0ZjJkOGI4ZjlmNjgzMjEzZjE2OGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBGbG9yaWFuIFdlaW1lciA8ZndlaW1lckByZWRoYXQuY29tPgotRGF0ZTogTW9uLCAxNyBOb3YgMjAxNCAxMzoxMTozMiArMDEwMAotU3ViamVjdDogW1BBVENIIDQvNF0gZ2xvYm5hbWU6IEludm9rZSB3b3JkZXhwIHdpdGggV1JERV9OT0NNRCAoQ1ZFLTIwMDQtMjc3MSkKLQotVGhpcyBwYXRjaCBpcyB0YWtlbiBmcm9tCi1mdHA6Ly9mdHAuZGViaWFuLm9yZy9kZWJpYW4vcG9vbC9tYWluL2gvaGVpcmxvb20tbWFpbHgvaGVpcmxvb20tbWFpbHhfMTIuNS01LmRlYmlhbi50YXIueHoKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFt1cHN0cmVhbSBpcyBkZWFkXQotQ1ZFOiBDVkUtMjAwNC0yNzcxCi0tLS0KLSBmaW8uYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2Zpby5jIGIvZmlvLmMKLWluZGV4IDE1MjkyMzYuLjc3NGEyMDQgMTAwNjQ0Ci0tLS0gYS9maW8uYwotKysrIGIvZmlvLmMKLUBAIC00OTcsNyArNDk3LDcgQEAgZ2xvYm5hbWUoY2hhciAqbmFtZSkKLSAJc2lnZW1wdHlzZXQoJm5zZXQpOwotIAlzaWdhZGRzZXQoJm5zZXQsIFNJR0NITEQpOwotIAlzaWdwcm9jbWFzayhTSUdfQkxPQ0ssICZuc2V0LCBOVUxMKTsKLS0JaSA9IHdvcmRleHAobmFtZSwgJndlLCAwKTsKLSsJaSA9IHdvcmRleHAobmFtZSwgJndlLCBXUkRFX05PQ01EKTsKLSAJc2lncHJvY21hc2soU0lHX1VOQkxPQ0ssICZuc2V0LCBOVUxMKTsKLSAJc3dpdGNoIChpKSB7Ci0gCWNhc2UgMDoKLS0tIAotMS45LjMKLQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L2ZpbGVzLzAwMTUtdXNyLXNiaW4tc2VuZG1haWwucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L2ZpbGVzLzAwMTUtdXNyLXNiaW4tc2VuZG1haWwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiNTk5MTQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9maWxlcy8wMDE1LXVzci1zYmluLXNlbmRtYWlsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotRGVzY3JpcHRpb246IFNlbmRtYWlsIGlzIGF0IC91c3Ivc2Jpbi9zZW5kbWFpbAotIEFzIHBlciBEZWJpYW4gUG9saWN5IMKnMTEuNgotQXV0aG9yOiBSeWFuIEthdmFuYWdoIDxyYWtAZGViaWFuLm9yZz4KLU9yaWdpbjogRGViaWFuCi1Gb3J3YXJkZWQ6IG5vCi0tLS0KLVRoaXMgcGF0Y2ggaGVhZGVyIGZvbGxvd3MgREVQLTM6IGh0dHA6Ly9kZXAuZGViaWFuLm5ldC9kZXBzL2RlcDMvCi1JbmRleDogaGVpcmxvb20tbWFpbHgtMTIuNS9NYWtlZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotVGhpcyBwYXRjaCBpcyB0YWtlbiBmcm9tCi1mdHA6Ly9mdHAuZGViaWFuLm9yZy9kZWJpYW4vcG9vbC9tYWluL2gvaGVpcmxvb20tbWFpbHgvaGVpcmxvb20tbWFpbHhfMTIuNS01LmRlYmlhbi50YXIueHoKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFt1cHN0cmVhbSBpcyBkZWFkXQotCi0tLS0gaGVpcmxvb20tbWFpbHgtMTIuNS5vcmlnL01ha2VmaWxlCTIwMTEtMDQtMjYgMTc6MjM6MjIuMDAwMDAwMDAwIC0wNDAwCi0rKysgaGVpcmxvb20tbWFpbHgtMTIuNS9NYWtlZmlsZQkyMDE1LTAxLTI3IDEzOjIwOjA0LjczMzU0MjgwMSAtMDUwMAotQEAgLTEzLDcgKzEzLDcgQEAKLSAKLSBNQUlMUkMJCT0gJChTWVNDT05GRElSKS9uYWlsLnJjCi0gTUFJTFNQT09MCT0gL3Zhci9tYWlsCi0tU0VORE1BSUwJPSAvdXNyL2xpYi9zZW5kbWFpbAotK1NFTkRNQUlMCT0gL3Vzci9zYmluL3NlbmRtYWlsCi0gCi0gREVTVERJUgkJPQotIAotSW5kZXg6IGhlaXJsb29tLW1haWx4LTEyLjUvbWFpbHguMQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGhlaXJsb29tLW1haWx4LTEyLjUub3JpZy9tYWlseC4xCTIwMTUtMDEtMjcgMTM6MTg6NDkuMDAwMDAwMDAwIC0wNTAwCi0rKysgaGVpcmxvb20tbWFpbHgtMTIuNS9tYWlseC4xCTIwMTUtMDEtMjcgMTM6MjA6MzIuMzgyMzM2ODY3IC0wNTAwCi1AQCAtNDkyMiw3ICs0OTIyLDcgQEAKLSB3aGljaCBqdXN0IGFjdHMgYXMgYSBwcm94eS4KLSAuUFAKLSBcZklNYWlseFxmUiBpbW1lZGlhdGVseSBjb250YWN0cyB0aGUgU01UUCBzZXJ2ZXIgKG9yCi0tLklSIFwlL3Vzci9saWIvc2VuZG1haWwgKQotKy5JUiBcJS91c3Ivc2Jpbi9zZW5kbWFpbCApCi0gZXZlbiB3aGVuIG9wZXJhdGluZyBpbgotIC5JIGRpc2Nvbm5lY3RlZAotIG1vZGUuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L2ZpbGVzL2V4cGxpY2l0bHkuZGlzYWJsZS5rcmI1LnN1cHBvcnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L2ZpbGVzL2V4cGxpY2l0bHkuZGlzYWJsZS5rcmI1LnN1cHBvcnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3NGZkMDQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYWlseC9maWxlcy9leHBsaWNpdGx5LmRpc2FibGUua3JiNS5zdXBwb3J0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAota3JiNSBzdXBwb3J0IGlzIGF1dG9kZXRlY3RlZCBmcm9tIHN5c3Jvb3QgbWFraW5nIGJ1aWxkcyB1bmRldGVybWluaXN0aWMKLWZlZWwgZnJlZSB0byBpbXByb3ZlIHRoaXMgdG8gc3VwcG9ydCBleHBsaWNpdGx5IGVuYWJsaW5nL2Rpc2FibGluZyBpdAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotCi0tLS0gYS9tYWtlY29uZmlnCTIwMTMtMDctMjEgMTU6MDY6MTEuMTc3NzkyMzM0ICswMjAwCi0rKysgYi9tYWtlY29uZmlnCTIwMTMtMDctMjEgMTU6MDc6MjAuMDI4NzkzOTk0ICswMjAwCi1AQCAtNDI0LDM2ICs0MjQsNiBAQAotIH0KLSAhCi0gCi0tPCR0bXAyLmMgbGlua19jaGVjayBnc3NhcGkgJ2ZvciBHU1NBUEkgaW4gbGliZ3NzJyBcCi0tCQknI2RlZmluZSBVU0VfR1NTQVBJJyAnLWxnc3MnIHx8Ci0tCTwkdG1wMi5jIGxpbmtfY2hlY2sgZ3NzYXBpICdmb3IgR1NTQVBJIGluIGxpYmdzc2FwaV9rcmI1JyBcCi0tCQkJJyNkZWZpbmUgVVNFX0dTU0FQSScgJy1sZ3NzYXBpX2tyYjUnIHx8Ci0tCQlsaW5rX2NoZWNrIGdzc2FwaSAnZm9yIEdTU0FQSSBpbiBsaWJnc3NhcGlfa3JiNSwgb2xkLXN0eWxlJyBcCi0tCQkJCScjZGVmaW5lIFVTRV9HU1NBUEkKLS0jZGVmaW5lIEdTU0FQSV9PTERfU1RZTEUnICctbGdzc2FwaV9rcmI1JyA8PFwhIHx8IFwKLS0JCQlsaW5rX2NoZWNrIGdzc2FwaSAnZm9yIEdTU0FQSSBpbiBsaWJnc3NhcGknIFwKLS0JCQkJJyNkZWZpbmUgVVNFX0dTU0FQSQotLSNkZWZpbmUJR1NTQVBJX1JFR19JTkNMVURFJyAnLWxnc3NhcGknIDw8XCUKLS0jaW5jbHVkZSA8Z3NzYXBpL2dzc2FwaS5oPgotLSNpbmNsdWRlIDxnc3NhcGkvZ3NzYXBpX2dlbmVyaWMuaD4KLS0KLS1pbnQgbWFpbih2b2lkKQotLXsKLS0JZ3NzX2ltcG9ydF9uYW1lKDAsIDAsIGdzc19udF9zZXJ2aWNlX25hbWUsIDApOwotLQlnc3NfaW5pdF9zZWNfY29udGV4dCgwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwKTsKLS0JcmV0dXJuIDA7Ci0tfQotLSEKLS0jaW5jbHVkZSA8Z3NzYXBpLmg+Ci0tCi0taW50IG1haW4odm9pZCkKLS17Ci0tCWdzc19pbXBvcnRfbmFtZSgwLCAwLCBHU1NfQ19OVF9IT1NUQkFTRURfU0VSVklDRSwgMCk7Ci0tCWdzc19pbml0X3NlY19jb250ZXh0KDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDApOwotLQlyZXR1cm4gMDsKLS19Ci0tJQotLQotIGNhdCA+JHRtcDIuYyA8PFwhCi0gI2luY2x1ZGUgImNvbmZpZy5oIgotICNpZmRlZiBIQVZFX05MX0xBTkdJTkZPCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21haWx4L21haWx4XzEyLjUtNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFpbHgvbWFpbHhfMTIuNS01LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZGQ3MTBhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFpbHgvbWFpbHhfMTIuNS01LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotU1VNTUFSWSA9ICJtYWlseCBpcyB0aGUgdHJhZGl0aW9uYWwgY29tbWFuZC1saW5lLW1vZGUgbWFpbCB1c2VyIGFnZW50IgotCi1ERVNDUklQVElPTiA9ICJNYWlseCBpcyBkZXJpdmVkIGZyb20gQmVya2VsZXkgTWFpbCBhbmQgaXMgaW50ZW5kZWQgcHJvdmlkZSB0aGUgXAotZnVuY3Rpb25hbGl0eSBvZiB0aGUgUE9TSVggbWFpbHggY29tbWFuZCB3aXRoIGFkZGl0aW9uYWwgc3VwcG9ydCBcCi1mb3IgTUlNRSwgSU1BUCwgUE9QMywgU01UUCwgYW5kIFMvTUlNRS4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly9oZWlybG9vbS5zb3VyY2Vmb3JnZS5uZXQvbWFpbHguaHRtbCIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotTElDRU5TRSA9ICJCU0QgJiBNUEwtMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTQyMDJhMGE2MjkxMGNmOTRmN2FmOGEzNDM2YTJhMmRkIgotCi1ERVBFTkRTID0gIm9wZW5zc2wiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3NuYXBzaG90LmRlYmlhbi5vcmcvYXJjaGl2ZS9kZWJpYW4vMjAxNjA3MjhUMDQzNDQzWi9wb29sL21haW4vaC9oZWlybG9vbS1tYWlseC9oZWlybG9vbS1tYWlseF8xMi41Lm9yaWcudGFyLmd6O25hbWU9YXJjaGl2ZSBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvbi10LXJldXNlLXdlYWstc3ltYm9sLW9wdG9wdC10by1maXgtRlRCRlMtb24tbWlwcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLVBhdGNoZWQtb3V0LVNTTDItc3VwcG9ydC1zaW5jZS1pdC1pcy1uby1sb25nZXItc3VwcG8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1GaXhlZC1MaW50aWFuLXdhcm5pbmctd2FybmluZy1tYWNyby1OLW5vdC1kZWZpbmVkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTEtb3V0b2YtSW50cm9kdWNlLWV4cGFuZGFkZHItZmxhZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEyLXVucGFjay1EaXNhYmxlLW9wdGlvbi1wcm9jZXNzaW5nLWZvci1lbWFpbC1hZGRyZXNzZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMy1maW8uYy1VbmNvbmRpdGlvbmFsbHktcmVxdWlyZS13b3JkZXhwLXN1cHBvcnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxNC1nbG9ibmFtZS1JbnZva2Utd29yZGV4cC13aXRoLVdSREVfTk9DTUQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxNS11c3Itc2Jpbi1zZW5kbWFpbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9leHBsaWNpdGx5LmRpc2FibGUua3JiNS5zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjI5YTYwMzNlZjE0MTI4MjRkMDJlYjlkOTIxM2NiMWYyIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiMDE1YmE0MjA5MTM1ODY3ZjM3YTAyNDVkMjIyMzVhMzkyYjhiYmVkOTU2OTEzMjg2Yjg4N2MyZTJhOWE0MjFhZCIKLQotIyBmb3IgdGhpcyBwYWNrYWdlIHdlJ3JlIG1vc3RseSBpbnRlcmVzdGVkIGluIHRyYWNraW5nIGRlYmlhbiBwYXRjaGVzLAotIyBhbmQgbm90IGluIHRoZSB1cHN0cmVhbSB2ZXJzaW9uIHdoZXJlIGFsbCBkZXZlbG9wbWVudCBoYXMgZWZmZWN0aXZlbHkgc3RvcHBlZAotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi9oL2hlaXJsb29tLW1haWx4LyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIig/UDxwdmVyPigoXGQrXC4qKSspLSgoXGQrXC4qKSspKVwuKGRpZmZ8ZGViaWFuXC50YXIpXC4oZ3p8eHopIgotCi1TID0gIiR7V09SS0RJUn0vaGVpcmxvb20tbWFpbHgtMTIuNSIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCi0KLUNGTEFHU19hcHBlbmQgPSAiIC1EX0JTRF9TT1VSQ0UgLURERUJJQU4gLUkke1N9L0VYVCIKLQotIyAiU1RSSVA9dHJ1ZSIgbWVhbnMgdGhhdCAndHJ1ZScgY29tbWFuZCB3aWxsIGJlIHVzZWQgdG8gJ3N0cmlwJyBmaWxlcyB3aGljaCB3aWxsIGFjaGlldmUgdGhlIGVmZmVjdCBvZiBub3Qgc3RyaXBwaW5nIHRoZW0KLSMgbWFpbHgncyBNYWtlZmlsZSBkb2Vzbid0IGFsbG93IGEgbW9yZSBzdHJhaWdodGZvcndhcmQgd2F5IHRvIGF2b2lkIHN0cmlwcGluZwotRVhUUkFfT0VNQUtFID0gIlNFTkRNQUlMPSR7c2JpbmRpcn0vc2VuZG1haWwgSVB2Nj0tREhBVkVfSVB2Nl9GVU5DUyBQUkVGSVg9L3VzciBVQ0JJTlNUQUxMPS91c3IvYmluL2luc3RhbGwgU1RSSVA9dHJ1ZSIKLQotIyBUaGUgbWFrZWNvbmZpZyBjYW4ndCBydW4gcGFyYWxsZWxseSwgb3RoZXJ3aXNlIHRoZSBjaGVja2luZyByZXN1bHRzCi0jIG1pZ2h0IGJlIGluY29ycmVjdCBhbmQgbGVhZCB0byBlcnJvcnM6Ci0jIGZpby5jOjU2OjE3OiBmYXRhbCBlcnJvcjogc3NsLmg6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKLSMgI2luY2x1ZGUgPHNzbC5oPgotUEFSQUxMRUxfTUFLRSA9ICIiCi0KLSMgQ2F1c2VzIGdjYyB0byBnZXQgc3R1Y2sgYW5kIGVhdCBhbGwgYXZhaWxhYmxlIG1lbW9yeSBpbiBxZW11YXJtIGJ1aWxkcwotIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMjA0ODgvCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tcGFnZXMvbWFuLXBhZ2VzXzQuMDkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1wYWdlcy9tYW4tcGFnZXNfNC4wOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTVmYzIxZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1wYWdlcy9tYW4tcGFnZXNfNC4wOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVNVTU1BUlkgPSAiTGludXggbWFuLXBhZ2VzIgotREVTQ1JJUFRJT04gPSAiVGhlIExpbnV4IG1hbi1wYWdlcyBwcm9qZWN0IGRvY3VtZW50cyB0aGUgTGludXgga2VybmVsIGFuZCBDIGxpYnJhcnkgaW50ZXJmYWNlcyB0aGF0IGFyZSBlbXBsb3llZCBieSB1c2VyIHByb2dyYW1zIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5rZXJuZWwub3JnL3B1Yi9saW51eC9kb2NzL21hbi1wYWdlcyIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7bWQ1PThmMmEzZDQzMDU3ZDQ1OGU1MDY2NzE0OTgwNTY3YTYwIgotU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L2RvY3MvJHtCUE59L0FyY2hpdmUvJHtCUH0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOWUzYzdiMTJhNWZlY2RhOWE3MTdhNGJjYzBhZTNhNjciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWZhYzMyNGNlZmNlMGZiZmFlMGRmNmMwNmVmM2Y2ZDZhYjUyMjdiOWFhZDJhOTRmODY1N2EwZTM5MDFmOTE4NSIKLQotUkRFUEVORFNfJHtQTn0gPSAibWFuIgotCi1kb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgotZG9fY29tcGlsZVtub2V4ZWNdID0gIjEiCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0KLX0KLQotIyBPbmx5IGRlbGl2ZXJlcyBtYW4tcGFnZXMgc28gRklMRVNfJHtQTn0gZ2V0cyBldmVyeXRoaW5nCi1GSUxFU18ke1BOfS1kb2MgPSAiIgotRklMRVNfJHtQTn0gPSAiJHttYW5kaXJ9LyoiCi0KLWluaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcwotCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJwYXNzd2QuNSBnZXRzcG5hbS4zIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3Bhc3N3ZC41XSA9ICIke21hbmRpcn0vbWFuNS9wYXNzd2QuNSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtnZXRzcG5hbS4zXSA9ICIke21hbmRpcn0vbWFuMy9nZXRzcG5hbS4zIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tcGFnZXMvbWFuLXBhZ2VzXzQuMTEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1wYWdlcy9tYW4tcGFnZXNfNC4xMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMzA3N2E5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tcGFnZXMvbWFuLXBhZ2VzXzQuMTEuYmIKQEAgLTAsMCArMSwzMSBAQAorU1VNTUFSWSA9ICJMaW51eCBtYW4tcGFnZXMiCitERVNDUklQVElPTiA9ICJUaGUgTGludXggbWFuLXBhZ2VzIHByb2plY3QgZG9jdW1lbnRzIHRoZSBMaW51eCBrZXJuZWwgYW5kIEMgbGlicmFyeSBpbnRlcmZhY2VzIHRoYXQgYXJlIGVtcGxveWVkIGJ5IHVzZXIgcHJvZ3JhbXMiCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lmtlcm5lbC5vcmcvcHViL2xpbnV4L2RvY3MvbWFuLXBhZ2VzIgorTElDRU5TRSA9ICJHUEx2MisiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTttZDU9OGYyYTNkNDMwNTdkNDU4ZTUwNjY3MTQ5ODA1NjdhNjAiCitTUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvZG9jcy8ke0JQTn0vQXJjaGl2ZS8ke0JQfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0MDgzMDBlZDA5ZDFhZDU5MzgwNzAxNThiMjFkYTFkMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlNmRiOTFhMjRlNjhjN2M3NjViN2I4ZTYwZjE1OTFlZDEwNDliYzJkYzMxNDNkYjc3OWVhZTQ4MzhiODlkMTk1IgorCitSREVQRU5EU18ke1BOfSA9ICJtYW4iCisKK2RvX2NvbmZpZ3VyZVtub2V4ZWNdID0gIjEiCitkb19jb21waWxlW25vZXhlY10gPSAiMSIKKworZG9faW5zdGFsbCgpIHsKKyAgICAgICAgb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfQorfQorCisjIE9ubHkgZGVsaXZlcmVzIG1hbi1wYWdlcyBzbyBGSUxFU18ke1BOfSBnZXRzIGV2ZXJ5dGhpbmcKK0ZJTEVTXyR7UE59LWRvYyA9ICIiCitGSUxFU18ke1BOfSA9ICIke21hbmRpcn0vKiIKKworaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKK0FMVEVSTkFUSVZFXyR7UE59ID0gInBhc3N3ZC41IGdldHNwbmFtLjMiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcGFzc3dkLjVdID0gIiR7bWFuZGlyfS9tYW41L3Bhc3N3ZC41IgorQUxURVJOQVRJVkVfTElOS19OQU1FW2dldHNwbmFtLjNdID0gIiR7bWFuZGlyfS9tYW4zL2dldHNwbmFtLjMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21jL2ZpbGVzLzAwMDItVGlja2V0LTM2OTctdHR5X2luaXQtdW5pZnktY3Vyc2VzLWluaXRpYWxpemF0aW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9maWxlcy8wMDAyLVRpY2tldC0zNjk3LXR0eV9pbml0LXVuaWZ5LWN1cnNlcy1pbml0aWFsaXphdGlvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTRkNGQwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9maWxlcy8wMDAyLVRpY2tldC0zNjk3LXR0eV9pbml0LXVuaWZ5LWN1cnNlcy1pbml0aWFsaXphdGlvbi5wYXRjaApAQCAtMCwwICsxLDY2IEBACitGcm9tIDRkNDZhMTA4NjI5YmViNjZhMjkzNjcyZGI3YjQ0Zjg2M2I2NTk4YmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUaG9tYXMgRGlja2V5IDxkaWNrZXlAaGlzLmNvbT4KK0RhdGU6IEZyaSwgMTQgQXByIDIwMTcgMTQ6MDY6MTMgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gVGlja2V0ICMzNjk3OiAodHR5X2luaXQpOiB1bmlmeSBjdXJzZXMgaW5pdGlhbGl6YXRpb24KKworLi4uZm9yIHZhcmlvdXMgY3Vyc2VzIGltcGxlbWVudGF0aW9ucy4KKworU2lnbmVkLW9mZi1ieTogQW5kcmV3IEJvcm9kaW4gPGFib3JvZGluQHZtYWlsLnJ1PgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vTWlkbmlnaHRDb21tYW5kZXIvbWMuZ2l0XQorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CisKKy0tLQorIGxpYi90dHkvdHR5LW5jdXJzZXMuYyB8IDI2ICsrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMTcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWIvdHR5L3R0eS1uY3Vyc2VzLmMgYi9saWIvdHR5L3R0eS1uY3Vyc2VzLmMKK2luZGV4IGE3YTExZjMuLjhlNjliMzkgMTAwNjQ0CistLS0gYS9saWIvdHR5L3R0eS1uY3Vyc2VzLmMKKysrKyBiL2xpYi90dHkvdHR5LW5jdXJzZXMuYworQEAgLTE3OSw2ICsxNzksOCBAQCBtY190dHlfbm9ybWFsaXplX2xpbmVzX2NoYXIgKGNvbnN0IGNoYXIgKmNoKQorIHZvaWQKKyB0dHlfaW5pdCAoZ2Jvb2xlYW4gbW91c2VfZW5hYmxlLCBnYm9vbGVhbiBpc194dGVybSkKKyB7CisrICAgIHN0cnVjdCB0ZXJtaW9zIG1vZGU7CisrCisgICAgIGluaXRzY3IgKCk7CisgCisgI2lmZGVmIEhBVkVfRVNDREVMQVkKK0BAIC0xOTQsMjUgKzE5NiwxNSBAQCB0dHlfaW5pdCAoZ2Jvb2xlYW4gbW91c2VfZW5hYmxlLCBnYm9vbGVhbiBpc194dGVybSkKKyAgICAgRVNDREVMQVkgPSAyMDA7CisgI2VuZGlmIC8qIEhBVkVfRVNDREVMQVkgKi8KKyAKKy0jaWZkZWYgTkNVUlNFU19WRVJTSU9OCisrICAgIHRjZ2V0YXR0ciAoU1RESU5fRklMRU5PLCAmbW9kZSk7CisgICAgIC8qIHVzZSBDdHJsLWcgdG8gZ2VuZXJhdGUgU0lHSU5UICovCistICAgIGN1cl90ZXJtLT5OdHR5Yi5jX2NjW1ZJTlRSXSA9IENUUkwgKCdnJyk7ICAgLyogXmcgKi8KKysgICAgbW9kZS5jX2NjW1ZJTlRSXSA9IENUUkwgKCdnJyk7ICAvKiBeZyAqLworICAgICAvKiBkaXNhYmxlIFNJR1FVSVQgdG8gYWxsb3cgdXNlIEN0cmwtXCBrZXkgKi8KKy0gICAgY3VyX3Rlcm0tPk50dHliLmNfY2NbVlFVSVRdID0gTlVMTF9WQUxVRTsKKy0gICAgdGNzZXRhdHRyIChjdXJfdGVybS0+RmlsZWRlcywgVENTQU5PVywgJmN1cl90ZXJtLT5OdHR5Yik7CistI2Vsc2UKKy0gICAgLyogb3RoZXIgY3Vyc2VzIGltcGxlbWVudGF0aW9uIChic2QgY3Vyc2VzLCAuLi4pICovCistICAgIHsKKy0gICAgICAgIHN0cnVjdCB0ZXJtaW9zIG1vZGU7CistCistICAgICAgICB0Y2dldGF0dHIgKFNURElOX0ZJTEVOTywgJm1vZGUpOworLSAgICAgICAgLyogdXNlIEN0cmwtZyB0byBnZW5lcmF0ZSBTSUdJTlQgKi8KKy0gICAgICAgIG1vZGUuY19jY1tWSU5UUl0gPSBDVFJMICgnZycpOyAgLyogXmcgKi8KKy0gICAgICAgIC8qIGRpc2FibGUgU0lHUVVJVCB0byBhbGxvdyB1c2UgQ3RybC1cIGtleSAqLworLSAgICAgICAgbW9kZS5jX2NjW1ZRVUlUXSA9IE5VTExfVkFMVUU7CistICAgICAgICB0Y3NldGF0dHIgKFNURElOX0ZJTEVOTywgVENTQU5PVywgJm1vZGUpOworLSAgICB9CistI2VuZGlmIC8qIE5DVVJTRVNfVkVSU0lPTiAqLworKyAgICBtb2RlLmNfY2NbVlFVSVRdID0gTlVMTF9WQUxVRTsKKysgICAgdGNzZXRhdHRyIChTVERJTl9GSUxFTk8sIFRDU0FOT1csICZtb2RlKTsKKysKKysgICAgLyogY3Vyc2VzIHJlbWVtYmVycyB0aGUgImluLXByb2dyYW0iIG1vZGVzIGFmdGVyIHRoaXMgY2FsbCAqLworKyAgICBkZWZfcHJvZ19tb2RlICgpOworIAorICAgICB0dHlfc3RhcnRfaW50ZXJydXB0X2tleSAoKTsKKyAKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9tY180LjguMTguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21jL21jXzQuOC4xOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTdmM2Y3My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21jL21jXzQuOC4xOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLVNVTU1BUlkgPSAiTWlkbmlnaHQgQ29tbWFuZGVyIGlzIGFuIG5jdXJzZXMgYmFzZWQgZmlsZSBtYW5hZ2VyIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5taWRuaWdodC1jb21tYW5kZXIub3JnLyIKLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yNzBiYmFmZTM2MGU3M2Y5ODQwYmQ3OTgxNjIxZjljMiIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLURFUEVORFMgPSAibmN1cnNlcyBnbGliLTIuMCB1dGlsLWxpbnV4IgotUkRFUEVORFNfJHtQTn0gPSAibmN1cnNlcy10ZXJtaW5mbyIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm1pZG5pZ2h0LWNvbW1hbmRlci5vcmcvZG93bmxvYWRzLyR7QlBOfS0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbWMtcmVwbGFjZS1wZXJsLXctd2l0aC11c2Utd2FybmluZ3MucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiY2M1NmYwYzlhYmQ2M2M0Y2FhMzYzNmJiYTNhMDhiZmIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWI1OTFlMTBkY2JlYTk1MjMzNDM0ZGE0MGNkYWQ0NjYzZDM2MDIyOWFkZjg5ODI2NTc2YzMxOTY2N2MxMDNjYiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcKLQotIwotIyBCb3RoIFNhbWJhIChzbWIpIGFuZCBzZnRwIHJlcXVpcmUgcGFja2FnZSBkZWxpdmVyZWQgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZAotIwotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbc21iXSA9ICItLWVuYWJsZS12ZnMtc21iLC0tZGlzYWJsZS12ZnMtc21iLHNhbWJhLCIKLVBBQ0tBR0VDT05GSUdbc2Z0cF0gPSAiLS1lbmFibGUtdmZzLXNmdHAsLS1kaXNhYmxlLXZmcy1zZnRwLGxpYnNzaDIsIgotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLXNjcmVlbj1uY3Vyc2VzIC0td2l0aG91dC1ncG0tbW91c2UgLS13aXRob3V0LXgiCi0KLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9wYXRoX1BFUkw9Jy91c3IvYmluL2VudiBwZXJsJyIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotCXNlZCAtaSAtZSAnMXMsIyEuKnBlcmwsIyEke2JpbmRpcn0vZW52IHBlcmwsJyAke0R9JHtsaWJleGVjZGlyfS9tYy9leHRmcy5kLyoKLQlzZWQgLWkgLWUgJzFzLCMhLipweXRob24sIyEke2JpbmRpcn0vZW52IHB5dGhvbiwnICR7RH0ke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvKgotfQotCi1QQUNLQUdFUyA9KyAiJHtCUE59LWhlbHBlcnMtcGVybCAke0JQTn0taGVscGVycy1weXRob24gJHtCUE59LWhlbHBlcnMgJHtCUE59LWZpc2giCi0KLVNVTU1BUllfJHtCUE59LWhlbHBlcnMtcGVybCA9ICJNaWRuaWdodCBDb21tYW5kZXIgUGVybC1iYXNlZCBoZWxwZXIgc2NyaXB0cyIKLUZJTEVTXyR7QlBOfS1oZWxwZXJzLXBlcmwgPSAiJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL2ErICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9hcHQrIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL2RlYiAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvZGViYSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9kZWJkICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9kcGtnKyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9tYWlsZnMgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL3BhdGNoZnMgXCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL3JwbXMrICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC91bGliIFwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC91emlwIgotUkRFUEVORFNfJHtCUE59LWhlbHBlcnMtcGVybCA9ICJwZXJsIgotCi1TVU1NQVJZXyR7QlBOfS1oZWxwZXJzLXB5dGhvbiA9ICJNaWRuaWdodCBDb21tYW5kZXIgUHl0aG9uLWJhc2VkIGhlbHBlciBzY3JpcHRzIgotRklMRVNfJHtCUE59LWhlbHBlcnMtcHl0aG9uID0gIiR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9zMysgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL3VjMTU0MSIKLVJERVBFTkRTXyR7QlBOfS1oZWxwZXJzLXB5dGhvbiA9ICJweXRob24iCi0KLVNVTU1BUllfJHtCUE59LWhlbHBlcnMgPSAiTWlkbmlnaHQgQ29tbWFuZGVyIHNoZWxsIGhlbHBlciBzY3JpcHRzIgotRklMRVNfJHtCUE59LWhlbHBlcnMgPSAiJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kLyogJHtsaWJleGVjZGlyfS9tYy9leHQuZC8qIgotCi1TVU1NQVJZXyR7QlBOfS1maXNoID0gIk1pZG5pZ2h0IENvbW1hbmRlciBGaXNoIHNjcmlwdHMiCi1GSUxFU18ke0JQTn0tZmlzaCA9ICIke2xpYmV4ZWNkaXJ9L21jL2Zpc2giCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21jL21jXzQuOC4xOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWMvbWNfNC44LjE5LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzYTE1NmMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21jL21jXzQuOC4xOS5iYgpAQCAtMCwwICsxLDUwIEBACitTVU1NQVJZID0gIk1pZG5pZ2h0IENvbW1hbmRlciBpcyBhbiBuY3Vyc2VzIGJhc2VkIGZpbGUgbWFuYWdlciIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubWlkbmlnaHQtY29tbWFuZGVyLm9yZy8iCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MjcwYmJhZmUzNjBlNzNmOTg0MGJkNzk4MTYyMWY5YzIiCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitERVBFTkRTID0gIm5jdXJzZXMgZ2xpYi0yLjAgdXRpbC1saW51eCIKK1JERVBFTkRTXyR7UE59ID0gIm5jdXJzZXMtdGVybWluZm8iCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5taWRuaWdodC1jb21tYW5kZXIub3JnL2Rvd25sb2Fkcy8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1jLXJlcGxhY2UtcGVybC13LXdpdGgtdXNlLXdhcm5pbmdzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItVGlja2V0LTM2OTctdHR5X2luaXQtdW5pZnktY3Vyc2VzLWluaXRpYWxpemF0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gImVmNDIzZjViNmY4MGExYTVhNWZjNTNiODMyNGNhYjcwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQwZGRkZmFlNzE0OWZhYzkwM2Y3NGVmNTVjZmNiMmExOThlMGY3MDA0MzQ2YzdiZGVkNDM2NjlkNjFiYTQzNmYiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnCisKKyMKKyMgQm90aCBTYW1iYSAoc21iKSBhbmQgc2Z0cCByZXF1aXJlIHBhY2thZ2UgZGVsaXZlcmVkIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQKKyMKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW3NtYl0gPSAiLS1lbmFibGUtdmZzLXNtYiwtLWRpc2FibGUtdmZzLXNtYixzYW1iYSwiCitQQUNLQUdFQ09ORklHW3NmdHBdID0gIi0tZW5hYmxlLXZmcy1zZnRwLC0tZGlzYWJsZS12ZnMtc2Z0cCxsaWJzc2gyLCIKKworRVhUUkFfT0VDT05GID0gIi0td2l0aC1zY3JlZW49bmN1cnNlcyAtLXdpdGhvdXQtZ3BtLW1vdXNlIC0td2l0aG91dC14IgorCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfcGF0aF9QRVJMPScvdXNyL2Jpbi9lbnYgcGVybCciCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKwlzZWQgLWkgLWUgJzFzLCMhLipwZXJsLCMhJHtiaW5kaXJ9L2VudiBwZXJsLCcgJHtEfSR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC8qCisgICAgICAgIAorICAgICAgICBybSAke0R9JHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL3MzKyAke0R9JHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL3VjMTU0MQorfQorCitQQUNLQUdFUyA9KyAiJHtCUE59LWhlbHBlcnMtcGVybCAke0JQTn0taGVscGVycyAke0JQTn0tZmlzaCIKKworU1VNTUFSWV8ke0JQTn0taGVscGVycy1wZXJsID0gIk1pZG5pZ2h0IENvbW1hbmRlciBQZXJsLWJhc2VkIGhlbHBlciBzY3JpcHRzIgorRklMRVNfJHtCUE59LWhlbHBlcnMtcGVybCA9ICIke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvYSsgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL2FwdCsgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvZGViICR7bGliZXhlY2Rpcn0vbWMvZXh0ZnMuZC9kZWJhIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL2RlYmQgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL2Rwa2crIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL21haWxmcyAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvcGF0Y2hmcyBcIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L21jL2V4dGZzLmQvcnBtcysgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL3VsaWIgXCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kL3V6aXAiCitSREVQRU5EU18ke0JQTn0taGVscGVycy1wZXJsID0gInBlcmwiCisKK1NVTU1BUllfJHtCUE59LWhlbHBlcnMgPSAiTWlkbmlnaHQgQ29tbWFuZGVyIHNoZWxsIGhlbHBlciBzY3JpcHRzIgorRklMRVNfJHtCUE59LWhlbHBlcnMgPSAiJHtsaWJleGVjZGlyfS9tYy9leHRmcy5kLyogJHtsaWJleGVjZGlyfS9tYy9leHQuZC8qIgorCitTVU1NQVJZXyR7QlBOfS1maXNoID0gIk1pZG5pZ2h0IENvbW1hbmRlciBGaXNoIHNjcmlwdHMiCitGSUxFU18ke0JQTn0tZmlzaCA9ICIke2xpYmV4ZWNkaXJ9L21jL2Zpc2giCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzLzAwMDEtVXNlLUNDLXRvLWNoZWNrLWZvci1pbXBsaWNpdC1mYWxsdGhyb3VnaC13YXJuaW5nLXN1cC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vZmlsZXMvMDAwMS1Vc2UtQ0MtdG8tY2hlY2stZm9yLWltcGxpY2l0LWZhbGx0aHJvdWdoLXdhcm5pbmctc3VwLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0YjdiOGEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzLzAwMDEtVXNlLUNDLXRvLWNoZWNrLWZvci1pbXBsaWNpdC1mYWxsdGhyb3VnaC13YXJuaW5nLXN1cC5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9tIGExMjllZTZkODBmM2IyY2RhMGQ4MjdjMzVmYTgxYTUxN2NmNmQ1MDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAxMyBPY3QgMjAxNyAxMDoyNzozNCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBVc2UgQ0MgdG8gY2hlY2sgZm9yIGltcGxpY2l0LWZhbGx0aHJvdWdoIHdhcm5pbmcgc3VwcG9ydAorCitUaGlzIHdhcm5pbmcgaXQgbmV3IGluIGdjYzcgYW5kIGluIGNyb3NzIGNvbXBpbGUgY2FzZQoraXRzIHBvc3NpYmxlIHRoYXQgYnVpbGQgaG9zdCBnY2MgaXMgdmVyc2lvbiA3KyBidXQgdGhlCitjcm9zcyBjb21waWxlIHVzZWQgZm9yIGNvbXBpbGluZyBtZGFkbSBpcyA8IHZlcnNpb24gNworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKyBNYWtlZmlsZSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKK2luZGV4IGQyMDdlZTQuLjk3MWYyNTUgMTAwNjQ0CistLS0gYS9NYWtlZmlsZQorKysrIGIvTWFrZWZpbGUKK0BAIC00OCw3ICs0OCw3IEBAIGlmZGVmIFdBUk5fVU5VU0VECisgQ1dGTEFHUyArPSAtV3AsLURfRk9SVElGWV9TT1VSQ0U9MiAtTzMKKyBlbmRpZgorIAorLUZBTExUSFJPVUdIIDo9ICQoc2hlbGwgZ2NjIC12IC0taGVscCAyPiYxIHwgZ3JlcCAiaW1wbGljaXQtZmFsbHRocm91Z2giIHwgd2MgLWwpCisrRkFMTFRIUk9VR0ggOj0gJChzaGVsbCAke0NDfSAtdiAtLWhlbHAgMj4mMSB8IGdyZXAgImltcGxpY2l0LWZhbGx0aHJvdWdoIiB8IHdjIC1sKQorIGlmbmVxICIkKEZBTExUSFJPVUdIKSIgICIwIgorIENXRkxBR1MgKz0gLVdpbXBsaWNpdC1mYWxsdGhyb3VnaD0wCisgZW5kaWYKKy0tIAorMi4xNC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vZmlsZXMvMDAwMS1tZGFkbS1BZGQtV2ltcGxpY2l0LWZhbGx0aHJvdWdoLTAtaW4tTWFrZWZpbGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzLzAwMDEtbWRhZG0tQWRkLVdpbXBsaWNpdC1mYWxsdGhyb3VnaC0wLWluLU1ha2VmaWxlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlMTUxNzAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzLzAwMDEtbWRhZG0tQWRkLVdpbXBsaWNpdC1mYWxsdGhyb3VnaC0wLWluLU1ha2VmaWxlLnBhdGNoCkBAIC0wLDAgKzEsMzcgQEAKK0Zyb20gYWEwOWFmMGZlMmVjMDczN2ZhMDRmZmQwMDk1NzUzMjY4NGUyNTdiOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFhpYW8gTmkgPHhuaUByZWRoYXQuY29tPgorRGF0ZTogRnJpLCAxNyBNYXIgMjAxNyAxOTo1NTo0MiArMDgwMAorU3ViamVjdDogW1BBVENIIDEvNV0gbWRhZG06IEFkZCBXaW1wbGljaXQtZmFsbHRocm91Z2g9MCBpbiBNYWtlZmlsZQorCitUaGVyZSBhcmUgbWFueSBlcnJvcnMgbGlrZSAnZXJyb3I6IHRoaXMgc3RhdGVtZW50IG1heSBmYWxsIHRocm91Z2gnLgorQnV0IHRoZSBsb2dpYyBpcyByaWdodC4gU28gYWRkIHRoZSBmbGFnIFdpbXBsaWNpdC1mYWxsdGhyb3VnaD0wCit0byBkaXNhYmxlIHRoZSBlcnJvciBtZXNzYWdlcy4gVGhlIG1ldGhvZCBJIHVzZSBpcyBmcm9tCitodHRwczovL2djYy5nbnUub3JnL29ubGluZWRvY3MvZ2NjL1dhcm5pbmctT3B0aW9ucy5odG1sCisjaW5kZXgtV2ltcGxpY2l0LWZhbGx0aHJvdWdoLTM3NQorCitTaWduZWQtb2ZmLWJ5OiBYaWFvIE5pIDx4bmlAcmVkaGF0LmNvbT4KK1NpZ25lZC1vZmYtYnk6IEplcyBTb3JlbnNlbiA8SmVzLlNvcmVuc2VuQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorIE1ha2VmaWxlIHwgNSArKysrKworIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKK2luZGV4IDBmMzA3ZWMuLmUxYTcwNTggMTAwNjQ0CistLS0gYS9NYWtlZmlsZQorKysrIGIvTWFrZWZpbGUKK0BAIC00OCw2ICs0OCwxMSBAQCBpZmRlZiBXQVJOX1VOVVNFRAorIENXRkxBR1MgKz0gLVdwLC1EX0ZPUlRJRllfU09VUkNFPTIgLU8zCisgZW5kaWYKKyAKKytGQUxMVEhST1VHSCA6PSAkKHNoZWxsIGdjYyAtdiAtLWhlbHAgMj4mMSB8IGdyZXAgImltcGxpY2l0LWZhbGx0aHJvdWdoIiB8IHdjIC1sKQorK2lmbmVxICIkKEZBTExUSFJPVUdIKSIgICIwIgorK0NXRkxBR1MgKz0gLVdpbXBsaWNpdC1mYWxsdGhyb3VnaD0wCisrZW5kaWYKKysKKyBpZmRlZiBERUJJQU4KKyBDUFBGTEFHUyArPSAtRERFQklBTgorIGVuZGlmCistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzLzAwMDItbWRhZG0tU3BlY2lmeS1lbm91Z2gtbGVuZ3RoLXdoZW4td3JpdGUtdG8tYnVmZmVyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9maWxlcy8wMDAyLW1kYWRtLVNwZWNpZnktZW5vdWdoLWxlbmd0aC13aGVuLXdyaXRlLXRvLWJ1ZmZlci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYmNlMDUzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9maWxlcy8wMDAyLW1kYWRtLVNwZWNpZnktZW5vdWdoLWxlbmd0aC13aGVuLXdyaXRlLXRvLWJ1ZmZlci5wYXRjaApAQCAtMCwwICsxLDc1IEBACitGcm9tIGJiNGRmMjczMDQxYmEyMDYwMDhiZGIwYWRhNzVjY2Q5N2MyOWY2MjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBYaWFvIE5pIDx4bmlAcmVkaGF0LmNvbT4KK0RhdGU6IEZyaSwgMTcgTWFyIDIwMTcgMTk6NTU6NDMgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzVdIG1kYWRtOiBTcGVjaWZ5IGVub3VnaCBsZW5ndGggd2hlbiB3cml0ZSB0byBidWZmZXIKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworSW4gRGV0YWlsLmMgdGhlIGJ1ZmZlciBwYXRoIGluIGZ1bmN0aW9uIERldGFpbCBpcyBkZWZpbmVkIGFzIHBhdGhbMjAwXSwKK2luIGZhY3QgdGhlIG1heCBsZW50aCBvZiBjb250ZW50IHdoaWNoIG5lZWRzIHRvIHdyaXRlIHRvIHRoZSBidWZmZXIgaXMKKzI4Ny4gQmVjYXVzZSB0aGUgbGVuZ3RoIG9mIGRuYW1lIG9mIHN0cnVjdCBkaXJlbnQgaXMgMjU1LgorRHVyaW5nIGJ1aWxkaW5nIGl0IHJlcG9ydHMgZXJyb3I6CitlcnJvcjog4oCYJXPigJkgZGlyZWN0aXZlIHdyaXRpbmcgdXAgdG8gMjU1IGJ5dGVzIGludG8gYSByZWdpb24gb2Ygc2l6ZSAxODkKK1stV2Vycm9yPWZvcm1hdC1vdmVyZmxvdz1dCisKK0luIGZ1bmN0aW9uIGV4YW1pbmVfc3VwZXIwIHRoZXJlIGlzIGEgYnVmZmVyIG5iIHdpdGggbGVuZ3RoIDUuCitCdXQgaXQgbmVlZCB0byBzaG93IGEgaW50IHR5cGUgYXJndW1lbnQuIFRoZSBsZW5naHQgb2YgbWF4CitudW1iZXIgb2YgaW50IGlzIDEwLiBTbyB0aGUgYnVmZmVyIGxlbmd0aCBzaG91bGQgYmUgMTEuCisKK0luIGh1bWFuX3NpemUgZnVuY3Rpb24gdGhlIGxlbmd0aCBvZiBidWYgaXMgMzAuIER1cmluZyBidWlsZGluZwordGhlcmUgaXMgYSBlcnJvcjoKK291dHB1dCBiZXR3ZWVuIDIwIGFuZCA0NyBieXRlcyBpbnRvIGEgZGVzdGluYXRpb24gb2Ygc2l6ZSAzMC4KK0NoYW5nZSB0aGUgbGVuZ3RoIHRvIDQ3LgorCitTaWduZWQtb2ZmLWJ5OiBYaWFvIE5pIDx4bmlAcmVkaGF0LmNvbT4KK1NpZ25lZC1vZmYtYnk6IEplcyBTb3JlbnNlbiA8SmVzLlNvcmVuc2VuQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorIERldGFpbC5jIHwgMiArLQorIHN1cGVyMC5jIHwgMiArLQorIHV0aWwuYyAgIHwgMiArLQorIDMgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvRGV0YWlsLmMgYi9EZXRhaWwuYworaW5kZXggNTA5YjBkNC4uY2IzMzc5NCAxMDA2NDQKKy0tLSBhL0RldGFpbC5jCisrKysgYi9EZXRhaWwuYworQEAgLTU3NSw3ICs1NzUsNyBAQCBUaGlzIGlzIHByZXR0eSBib3JpbmcKKyAJCQlwcmludGYoIiAgTWVtYmVyIEFycmF5cyA6Iik7CisgCisgCQkJd2hpbGUgKGRpciAmJiAoZGUgPSByZWFkZGlyKGRpcikpICE9IE5VTEwpIHsKKy0JCQkJY2hhciBwYXRoWzIwMF07CisrCQkJCWNoYXIgcGF0aFsyODddOworIAkJCQljaGFyIHZidWZbMTAyNF07CisgCQkJCWludCBubGVuID0gc3RybGVuKHNyYS0+c3lzX25hbWUpOworIAkJCQlkZXZfdCBkZXZpZDsKK2RpZmYgLS1naXQgYS9zdXBlcjAuYyBiL3N1cGVyMC5jCitpbmRleCA5MzhjZmQ5Li5mNWI0NTA3IDEwMDY0NAorLS0tIGEvc3VwZXIwLmMKKysrKyBiL3N1cGVyMC5jCitAQCAtMjMxLDcgKzIzMSw3IEBAIHN0YXRpYyB2b2lkIGV4YW1pbmVfc3VwZXIwKHN0cnVjdCBzdXBlcnR5cGUgKnN0LCBjaGFyICpob21laG9zdCkKKyAJICAgICBkKyspIHsKKyAJCW1kcF9kaXNrX3QgKmRwOworIAkJY2hhciAqZHY7CistCQljaGFyIG5iWzVdOworKwkJY2hhciBuYlsxMV07CisgCQlpbnQgd29ubHksIGZhaWxmYXN0OworIAkJaWYgKGQ+PTApIGRwID0gJnNiLT5kaXNrc1tkXTsKKyAJCWVsc2UgZHAgPSAmc2ItPnRoaXNfZGlzazsKK2RpZmYgLS1naXQgYS91dGlsLmMgYi91dGlsLmMKK2luZGV4IGYxMDA5NzIuLjMyYmQ5MDkgMTAwNjQ0CistLS0gYS91dGlsLmMKKysrKyBiL3V0aWwuYworQEAgLTgxMSw3ICs4MTEsNyBAQCB1bnNpZ25lZCBsb25nIGNhbGNfY3N1bSh2b2lkICpzdXBlciwgaW50IGJ5dGVzKQorICNpZm5kZWYgTURBU1NFTUJMRQorIGNoYXIgKmh1bWFuX3NpemUobG9uZyBsb25nIGJ5dGVzKQorIHsKKy0Jc3RhdGljIGNoYXIgYnVmWzMwXTsKKysJc3RhdGljIGNoYXIgYnVmWzQ3XTsKKyAKKyAJLyogV2UgY29udmVydCBieXRlcyB0byBlaXRoZXIgY2VudGktTXtlZ2EsaWJpfWJ5dGVzIG9yCisgCSAqIGNlbnRpLUd7aWdpLGliaX1ieXRlcywgd2l0aCBhcHByb3ByaWF0ZSByb3VuZGluZywKKy0tIAorMi4xMi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vZmlsZXMvMDAwMy1SZXBsYWNlLXNucHJpbnRmLXdpdGgtc3RybmNweS1hdC1zb21lLXBsYWNlcy10by1hdm9pLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9maWxlcy8wMDAzLVJlcGxhY2Utc25wcmludGYtd2l0aC1zdHJuY3B5LWF0LXNvbWUtcGxhY2VzLXRvLWF2b2kucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGNlYzg0ZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vZmlsZXMvMDAwMy1SZXBsYWNlLXNucHJpbnRmLXdpdGgtc3RybmNweS1hdC1zb21lLXBsYWNlcy10by1hdm9pLnBhdGNoCkBAIC0wLDAgKzEsNTkgQEAKK0Zyb20gYmM4N2FmMTMxNDMyNWIwMGM2YWMwMDJhNjBhMmIwZjBjYWE4MWUzNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFhpYW8gTmkgPHhuaUByZWRoYXQuY29tPgorRGF0ZTogU2F0LCAxOCBNYXIgMjAxNyAxMDozMzo0NCArMDgwMAorU3ViamVjdDogW1BBVENIIDMvNV0gUmVwbGFjZSBzbnByaW50ZiB3aXRoIHN0cm5jcHkgYXQgc29tZSBwbGFjZXMgdG8gYXZvaWQKKyB0cnVuY2F0aW9uCisKK0luIGdjYzcgdGhlcmUgYXJlIHNvbWUgYnVpbGRpbmcgZXJyb3JzIGxpa2U6CitkaXJlY3RpdmUgb3V0cHV0IG1heSBiZSB0cnVuY2F0ZWQgd3JpdGluZyB1cCB0byAzMSBieXRlcyBpbnRvIGEgcmVnaW9uIG9mIHNpemUgMjQKK3NucHJpbnRmKHN0ciwgTVBCX1NJR19MRU4sICVzLCBtcGItPnNpZyk7CisKK0l0IGp1c3QgbmVlZCB0byBjb3B5IG9uZSBzdHJpbmcgdG8gdGFyZ2V0LiBTbyB1c2Ugc3RybmNweSB0byByZXBsYWNlIGl0LgorCitGb3IgdGhpcyBsaW5lIGNvZGU6IHNucHJpbnRmKHN0ciwgTVBCX1NJR19MRU4sICVzLCBtcGItPnNpZyk7CitCZWNhdXNlIG1wYi0+c2lnIGhhcyB0aGUgY29udGVudCBvZiB2ZXJzaW9uIGFmdGVyIG1hZ2ljLCBzbworaXQncyBiZXR0ZXIgdG8gdXNlIHN0cm5jcHkgdG8gcmVwbGFjZSBzbnByaW50ZiB0b28uCisKK1NpZ25lZC1vZmYtYnk6IFhpYW8gTmkgPHhuaUByZWRoYXQuY29tPgorU2lnbmVkLW9mZi1ieTogSmVzIFNvcmVuc2VuIDxKZXMuU29yZW5zZW5AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Cisgc3VwZXItaW50ZWwuYyB8IDkgKysrKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3N1cGVyLWludGVsLmMgYi9zdXBlci1pbnRlbC5jCitpbmRleCA1N2M3ZTc1Li41NDk5MDk4IDEwMDY0NAorLS0tIGEvc3VwZXItaW50ZWwuYworKysrIGIvc3VwZXItaW50ZWwuYworQEAgLTE4MTEsNyArMTgxMSw4IEBAIHN0YXRpYyB2b2lkIGV4YW1pbmVfc3VwZXJfaW1zbShzdHJ1Y3Qgc3VwZXJ0eXBlICpzdCwgY2hhciAqaG9tZWhvc3QpCisgCV9fdTMyIHJlc2VydmVkID0gaW1zbV9yZXNlcnZlZF9zZWN0b3JzKHN1cGVyLCBzdXBlci0+ZGlza3MpOworIAlzdHJ1Y3QgZGwgKmRsOworIAorLQlzbnByaW50ZihzdHIsIE1QQl9TSUdfTEVOLCAiJXMiLCBtcGItPnNpZyk7CisrCXN0cm5jcHkoc3RyLCAoY2hhciAqKW1wYi0+c2lnLCBNUEJfU0lHX0xFTik7CisrCXN0cltNUEJfU0lHX0xFTi0xXSA9ICdcMCc7CisgCXByaW50ZigiICAgICAgICAgIE1hZ2ljIDogJXNcbiIsIHN0cik7CisgCXNucHJpbnRmKHN0ciwgc3RybGVuKE1QQl9WRVJTSU9OX1JBSUQwKSwgIiVzIiwgZ2V0X2ltc21fdmVyc2lvbihtcGIpKTsKKyAJcHJpbnRmKCIgICAgICAgIFZlcnNpb24gOiAlc1xuIiwgZ2V0X2ltc21fdmVyc2lvbihtcGIpKTsKK0BAIC03MTQyLDE0ICs3MTQzLDE2IEBAIHN0YXRpYyBpbnQgdXBkYXRlX3N1YmFycmF5X2ltc20oc3RydWN0IHN1cGVydHlwZSAqc3QsIGNoYXIgKnN1YmFycmF5LAorIAorIAkJCXUtPnR5cGUgPSB1cGRhdGVfcmVuYW1lX2FycmF5OworIAkJCXUtPmRldl9pZHggPSB2b2w7CistCQkJc25wcmludGYoKGNoYXIgKikgdS0+bmFtZSwgTUFYX1JBSURfU0VSSUFMX0xFTiwgIiVzIiwgbmFtZSk7CisrCQkJc3RybmNweSgoY2hhciAqKSB1LT5uYW1lLCBuYW1lLCBNQVhfUkFJRF9TRVJJQUxfTEVOKTsKKysJCQl1LT5uYW1lW01BWF9SQUlEX1NFUklBTF9MRU4tMV0gPSAnXDAnOworIAkJCWFwcGVuZF9tZXRhZGF0YV91cGRhdGUoc3QsIHUsIHNpemVvZigqdSkpOworIAkJfSBlbHNlIHsKKyAJCQlzdHJ1Y3QgaW1zbV9kZXYgKmRldjsKKyAJCQlpbnQgaTsKKyAKKyAJCQlkZXYgPSBnZXRfaW1zbV9kZXYoc3VwZXIsIHZvbCk7CistCQkJc25wcmludGYoKGNoYXIgKikgZGV2LT52b2x1bWUsIE1BWF9SQUlEX1NFUklBTF9MRU4sICIlcyIsIG5hbWUpOworKwkJCXN0cm5jcHkoKGNoYXIgKikgZGV2LT52b2x1bWUsIG5hbWUsIE1BWF9SQUlEX1NFUklBTF9MRU4pOworKwkJCWRldi0+dm9sdW1lW01BWF9SQUlEX1NFUklBTF9MRU4tMV0gPSAnXDAnOworIAkJCWZvciAoaSA9IDA7IGkgPCBtcGItPm51bV9yYWlkX2RldnM7IGkrKykgeworIAkJCQlkZXYgPSBnZXRfaW1zbV9kZXYoc3VwZXIsIGkpOworIAkJCQloYW5kbGVfbWlzc2luZyhzdXBlciwgZGV2KTsKKy0tIAorMi4xMi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vZmlsZXMvMDAwNC1tZGFkbS1Gb3JjZWQtdHlwZS1jb252ZXJzaW9uLXRvLWF2b2lkLXRydW5jYXRpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzLzAwMDQtbWRhZG0tRm9yY2VkLXR5cGUtY29udmVyc2lvbi10by1hdm9pZC10cnVuY2F0aW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0ZmRlNDIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzLzAwMDQtbWRhZG0tRm9yY2VkLXR5cGUtY29udmVyc2lvbi10by1hdm9pZC10cnVuY2F0aW9uLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gNWRhODg5MDMyZTJkOTk3NTFlZDlmZTYwMDE2MTQ2ZTlhZTgxMTRjZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFhpYW8gTmkgPHhuaUByZWRoYXQuY29tPgorRGF0ZTogU2F0LCAxOCBNYXIgMjAxNyAxMDozMzo0NSArMDgwMAorU3ViamVjdDogW1BBVENIIDQvNV0gbWRhZG06IEZvcmNlZCB0eXBlIGNvbnZlcnNpb24gdG8gYXZvaWQgdHJ1bmNhdGlvbgorCitHY2MgcmVwb3J0cyBpdCBuZWVkcyAxOSBieXRlcyB0byByaWdodCB0byBkaXNrLT5zZXJpYWwuIEJlY2F1c2UgdGhlCit0eXBlIG9mIGFyZ3VtZW50IGkgaXMgaW50LiBCdXQgdGhlIG1lYW5pbmcgb2YgaSBpcyBmYWlsZWQgZGlzaworbnVtYmVyLiBTbyBpdCBkb2Vzbid0IG5lZWQgdG8gdXNlIDE5IGJ5dGVzLiAgSnVzdCBhZGQgYSB0eXBlCitjb252ZXJzaW9uIHRvIGF2b2lkIHRoaXMgYnVpbGRpbmcgZXJyb3IKKworU2lnbmVkLW9mZi1ieTogWGlhbyBOaSA8eG5pQHJlZGhhdC5jb20+CitTaWduZWQtb2ZmLWJ5OiBKZXMgU29yZW5zZW4gPEplcy5Tb3JlbnNlbkBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKyBzdXBlci1pbnRlbC5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3VwZXItaW50ZWwuYyBiL3N1cGVyLWludGVsLmMKK2luZGV4IDU0OTkwOTguLjRlNDY2ZmYgMTAwNjQ0CistLS0gYS9zdXBlci1pbnRlbC5jCisrKysgYi9zdXBlci1pbnRlbC5jCitAQCAtNTIyOCw3ICs1MjI4LDcgQEAgc3RhdGljIGludCBpbml0X3N1cGVyX2ltc21fdm9sdW1lKHN0cnVjdCBzdXBlcnR5cGUgKnN0LCBtZHVfYXJyYXlfaW5mb190ICppbmZvLAorIAkJCWRpc2stPnN0YXR1cyA9IENPTkZJR1VSRURfRElTSyB8IEZBSUxFRF9ESVNLOworIAkJCWRpc2stPnNjc2lfaWQgPSBfX2NwdV90b19sZTMyKH4oX191MzIpMCk7CisgCQkJc25wcmludGYoKGNoYXIgKikgZGlzay0+c2VyaWFsLCBNQVhfUkFJRF9TRVJJQUxfTEVOLAorLQkJCQkgIm1pc3Npbmc6JWQiLCBpKTsKKysJCQkJICJtaXNzaW5nOiVkIiwgKF9fdTgpaSk7CisgCQl9CisgCQlmaW5kX21pc3Npbmcoc3VwZXIpOworIAl9IGVsc2UgeworLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9maWxlcy8wMDA1LUFkZC1hLWNvbW1lbnQtdG8taW5kaWNhdGUtdmFsaWQtZmFsbHRocm91Z2gucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzLzAwMDUtQWRkLWEtY29tbWVudC10by1pbmRpY2F0ZS12YWxpZC1mYWxsdGhyb3VnaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZDlkM2I5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9maWxlcy8wMDA1LUFkZC1hLWNvbW1lbnQtdG8taW5kaWNhdGUtdmFsaWQtZmFsbHRocm91Z2gucGF0Y2gKQEAgLTAsMCArMSwxMjggQEAKK0Zyb20gMDkwMTQyMzNiZjEwOTAwZjdiZDgzOTBiM2I2NGZmODJiY2E0NTIyMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE5IEFwciAyMDE3IDEyOjA0OjE1IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggNS81XSBBZGQgYSBjb21tZW50IHRvIGluZGljYXRlIHZhbGlkIGZhbGx0aHJvdWdoCisKK2djYzcgd2FybnMgYWJvdXQgY29kZSB3aXRoIGZhbGx0aHJvdWdocywgdGhpcyBwYXRjaCBhZGRzCit0aGUgY29tbWVudCB0byBpbmRpY2F0ZSBhIHZhbGlkIGZhbGx0aHJvdWdoLCBoZWxwcyBnY2M3Citjb21waWxlciB3YXJuaW5ncworCitUaGlzIHdvcmtzIGluIGNyb3NzIGFuZCBuYXRpdmUgY29tcGlsYXRpb24gY2FzZQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorCisgR3Jvdy5jICAgICAgICB8IDQgKysrKworIGJpdG1hcC5jICAgICAgfCA4ICsrKysrKysrCisgbWRhZG0uYyAgICAgICB8IDIgKysKKyBzdXBlci1pbnRlbC5jIHwgMSArCisgdXRpbC5jICAgICAgICB8IDEgKworIDUgZmlsZXMgY2hhbmdlZCwgMTYgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvR3Jvdy5jIGIvR3Jvdy5jCitpbmRleCA0NTVjNWY5Li4yN2M3M2IxIDEwMDc1NQorLS0tIGEvR3Jvdy5jCisrKysgYi9Hcm93LmMKK0BAIC0xMjU3LDYgKzEyNTcsNyBAQCBjaGFyICphbmFseXNlX2NoYW5nZShjaGFyICpkZXZuYW1lLCBzdHJ1Y3QgbWRpbmZvICppbmZvLCBzdHJ1Y3QgcmVzaGFwZSAqcmUpCisgCQlzd2l0Y2ggKGluZm8tPm5ld19sZXZlbCkgeworIAkJY2FzZSA0OgorIAkJCWRlbHRhX3Bhcml0eSA9IDE7CisrCQkJLyogZmFsbHRocm91Z2ggKi8KKyAJCWNhc2UgMDoKKyAJCQlyZS0+bGV2ZWwgPSA0OworIAkJCXJlLT5iZWZvcmUubGF5b3V0ID0gMDsKK0BAIC0xMjg0LDEwICsxMjg1LDEyIEBAIGNoYXIgKmFuYWx5c2VfY2hhbmdlKGNoYXIgKmRldm5hbWUsIHN0cnVjdCBtZGluZm8gKmluZm8sIHN0cnVjdCByZXNoYXBlICpyZSkKKyAKKyAJY2FzZSA0OgorIAkJaW5mby0+YXJyYXkubGF5b3V0ID0gQUxHT1JJVEhNX1BBUklUWV9OOworKwkJLyogZmFsbHRocm91Z2ggKi8KKyAJY2FzZSA1OgorIAkJc3dpdGNoIChpbmZvLT5uZXdfbGV2ZWwpIHsKKyAJCWNhc2UgMDoKKyAJCQlkZWx0YV9wYXJpdHkgPSAtMTsKKysJCQkvKiBmYWxsdGhyb3VnaCAqLworIAkJY2FzZSA0OgorIAkJCXJlLT5sZXZlbCA9IGluZm8tPmFycmF5LmxldmVsOworIAkJCXJlLT5iZWZvcmUuZGF0YV9kaXNrcyA9IGluZm8tPmFycmF5LnJhaWRfZGlza3MgLSAxOworQEAgLTEzNDMsNiArMTM0Niw3IEBAIGNoYXIgKmFuYWx5c2VfY2hhbmdlKGNoYXIgKmRldm5hbWUsIHN0cnVjdCBtZGluZm8gKmluZm8sIHN0cnVjdCByZXNoYXBlICpyZSkKKyAJCWNhc2UgNDoKKyAJCWNhc2UgNToKKyAJCQlkZWx0YV9wYXJpdHkgPSAtMTsKKysJCQkvKiBmYWxsdGhyb3VnaCAqLworIAkJY2FzZSA2OgorIAkJCXJlLT5sZXZlbCA9IDY7CisgCQkJcmUtPmJlZm9yZS5kYXRhX2Rpc2tzID0gaW5mby0+YXJyYXkucmFpZF9kaXNrcyAtIDI7CitkaWZmIC0tZ2l0IGEvYml0bWFwLmMgYi9iaXRtYXAuYworaW5kZXggY2NlZGZkMy4uYTZmZjA5MSAxMDA2NDQKKy0tLSBhL2JpdG1hcC5jCisrKysgYi9iaXRtYXAuYworQEAgLTgyLDEzICs4MiwyMSBAQCBzdGF0aWMgaW5saW5lIGludCBjb3VudF9kaXJ0eV9iaXRzX2J5dGUoY2hhciBieXRlLCBpbnQgbnVtX2JpdHMpCisgCisgCXN3aXRjaCAobnVtX2JpdHMpIHsgLyogZmFsbCB0aHJvdWdoLi4uICovCisgCQljYXNlIDg6CWlmIChieXRlICYgMTI4KSBudW0rKzsKKysJCS8qIGZhbGx0aHJvdWdoICovCisgCQljYXNlIDc6CWlmIChieXRlICYgIDY0KSBudW0rKzsKKysJCS8qIGZhbGx0aHJvdWdoICovCisgCQljYXNlIDY6CWlmIChieXRlICYgIDMyKSBudW0rKzsKKysJCS8qIGZhbGx0aHJvdWdoICovCisgCQljYXNlIDU6CWlmIChieXRlICYgIDE2KSBudW0rKzsKKysJCS8qIGZhbGx0aHJvdWdoICovCisgCQljYXNlIDQ6CWlmIChieXRlICYgICA4KSBudW0rKzsKKysJCS8qIGZhbGx0aHJvdWdoICovCisgCQljYXNlIDM6IGlmIChieXRlICYgICA0KSBudW0rKzsKKysJCS8qIGZhbGx0aHJvdWdoICovCisgCQljYXNlIDI6CWlmIChieXRlICYgICAyKSBudW0rKzsKKysJCS8qIGZhbGx0aHJvdWdoICovCisgCQljYXNlIDE6CWlmIChieXRlICYgICAxKSBudW0rKzsKKysJCS8qIGZhbGx0aHJvdWdoICovCisgCQlkZWZhdWx0OiBicmVhazsKKyAJfQorIAorZGlmZiAtLWdpdCBhL21kYWRtLmMgYi9tZGFkbS5jCitpbmRleCBjM2EyNjViLi4yZDA2ZDNiIDEwMDY0NAorLS0tIGEvbWRhZG0uYworKysrIGIvbWRhZG0uYworQEAgLTE0OCw2ICsxNDgsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQorIAkJCSAgICBtb2RlID09IENSRUFURSB8fCBtb2RlID09IEdST1cgfHwKKyAJCQkgICAgbW9kZSA9PSBJTkNSRU1FTlRBTCB8fCBtb2RlID09IE1BTkFHRSkKKyAJCQkJYnJlYWs7IC8qIGIgbWVhbnMgYml0bWFwICovCisrCQkvKiBmYWxsdGhyb3VnaCAqLworIAkJY2FzZSBCcmllZjoKKyAJCQljLmJyaWVmID0gMTsKKyAJCQljb250aW51ZTsKK0BAIC04MjgsNiArODI5LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAKKyAJCWNhc2UgTyhJTkNSRU1FTlRBTCxOb0RlZ3JhZGVkKToKKyAJCQlwcl9lcnIoIi0tbm8tZGVncmFkZWQgaXMgZGVwcmVjYXRlZCBpbiBJbmNyZW1lbnRhbCBtb2RlXG4iKTsKKysJCQkvKiBmYWxsdGhyb3VnaCAqLworIAkJY2FzZSBPKEFTU0VNQkxFLE5vRGVncmFkZWQpOiAvKiAtLW5vLWRlZ3JhZGVkICovCisgCQkJYy5ydW5zdG9wID0gLTE7IC8qIC0tc3RvcCBpc24ndCBhbGxvd2VkIGZvciAtLWFzc2VtYmxlLAorIAkJCQkJICogc28gd2Ugb3ZlcmxvYWQgc2xpZ2h0bHkgKi8KK2RpZmYgLS1naXQgYS9zdXBlci1pbnRlbC5jIGIvc3VwZXItaW50ZWwuYworaW5kZXggNGU0NjZmZi4uMDBhMjkyNSAxMDA2NDQKKy0tLSBhL3N1cGVyLWludGVsLmMKKysrKyBiL3N1cGVyLWludGVsLmMKK0BAIC0zMjcxLDYgKzMyNzEsNyBAQCBzdGF0aWMgdm9pZCBnZXRpbmZvX3N1cGVyX2ltc21fdm9sdW1lKHN0cnVjdCBzdXBlcnR5cGUgKnN0LCBzdHJ1Y3QgbWRpbmZvICppbmZvLAorIAkJCQkJCTw8IFNFQ1RfUEVSX01CX1NISUZUOworIAkJCX0KKyAJCX0KKysJCS8qIGZhbGx0aHJvdWdoICovCisgCQljYXNlIE1JR1JfVkVSSUZZOgorIAkJCS8qIHdlIGNvdWxkIGVtdWxhdGUgdGhlIGNoZWNrcG9pbnRpbmcgb2YKKyAJCQkgKiAnc3luY19hY3Rpb249Y2hlY2snIG1pZ3JhdGlvbnMsIGJ1dCBmb3Igbm93CitkaWZmIC0tZ2l0IGEvdXRpbC5jIGIvdXRpbC5jCitpbmRleCAzMmJkOTA5Li5mMmE0ZDE5IDEwMDY0NAorLS0tIGEvdXRpbC5jCisrKysgYi91dGlsLmMKK0BAIC0zMzUsNiArMzM1LDcgQEAgdW5zaWduZWQgbG9uZyBsb25nIHBhcnNlX3NpemUoY2hhciAqc2l6ZSkKKyAJCXN3aXRjaCAoKmMpIHsKKyAJCWNhc2UgJ0snOgorIAkJCWMrKzsKKysJCS8qIGZhbGx0aHJvdWdoICovCisgCQlkZWZhdWx0OgorIAkJCXMgKj0gMjsKKyAJCQlicmVhazsKKy0tIAorMi4xMi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vbWRhZG1fNC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9tZGFkbV80LjAuYmIKaW5kZXggNjI2MTRmMC4uZGMwOThmMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9tZGFkbV80LjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9tZGFkbV80LjAuYmIKQEAgLTE2LDYgKzE2LDEyIEBACiAgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1tZGFkbS5oLVVuZGVmaW5lLWRwcmludGYtYmVmb3JlLXJlZGVmaW5pbmcucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLXN5cy1zeXNtYWNyb3MuaC1mb3ItbWFqb3ItbWlub3ItZGVmaW50aW9ucy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1kYWRtLUFkZC1XaW1wbGljaXQtZmFsbHRocm91Z2gtMC1pbi1NYWtlZmlsZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLW1kYWRtLVNwZWNpZnktZW5vdWdoLWxlbmd0aC13aGVuLXdyaXRlLXRvLWJ1ZmZlci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLVJlcGxhY2Utc25wcmludGYtd2l0aC1zdHJuY3B5LWF0LXNvbWUtcGxhY2VzLXRvLWF2b2kucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1tZGFkbS1Gb3JjZWQtdHlwZS1jb252ZXJzaW9uLXRvLWF2b2lkLXRydW5jYXRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1BZGQtYS1jb21tZW50LXRvLWluZGljYXRlLXZhbGlkLWZhbGx0aHJvdWdoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLUNDLXRvLWNoZWNrLWZvci1pbXBsaWNpdC1mYWxsdGhyb3VnaC13YXJuaW5nLXN1cC5wYXRjaCBcCiAgICAgICAgICAgICIKIFNSQ19VUklbbWQ1c3VtXSA9ICIyY2I0ZmVmZmVhOTE2N2JhNzFiNWYzNDZhMGMwYTQwZCIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIxZDZhZTdmMjRjZWQzYTBmYTdiNTYxM2IzMmY0YTU4OWJiNDg4MWUzOTQ2YTVhMmMzNzI0MDU2MjU0YWRhM2E5IgpAQCAtNTAsNyArNTYsNyBAQAogfQogCiBkb19pbnN0YWxsX3B0ZXN0KCkgewotCWNwIC1hICR7U30vdGVzdHMgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKKwljcCAtUiAtLW5vLWRlcmVmZXJlbmNlIC0tcHJlc2VydmU9bW9kZSxsaW5rcyAtdiAke1N9L3Rlc3RzICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCiAJY3AgJHtTfS90ZXN0ICR7RH0ke1BURVNUX1BBVEh9CiAJc2VkIC1lICdzIXNsZWVwIDAuKiFzbGVlcCAxIWc7IHMhL3Zhci90bXAhLyFnJyAtaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0CiAJbG4gLXMgJHtiYXNlX3NiaW5kaXJ9L21kYWRtICR7RH0ke1BURVNUX1BBVEh9L21kYWRtCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21pbmljb20vbWluaWNvbV8yLjcuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWluaWNvbS9taW5pY29tXzIuNy4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhMzFhODcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21pbmljb20vbWluaWNvbV8yLjcuMS5iYgpAQCAtMCwwICsxLDI5IEBACitTVU1NQVJZID0gIlRleHQtYmFzZWQgbW9kZW0gY29udHJvbCBhbmQgdGVybWluYWwgZW11bGF0aW9uIHByb2dyYW0iCitIT01FUEFHRSA9ICJodHRwOi8vYWxpb3RoLmRlYmlhbi5vcmcvcHJvamVjdHMvbWluaWNvbS8iCitERVNDUklQVElPTiA9ICJNaW5pY29tIGlzIGEgdGV4dC1iYXNlZCBtb2RlbSBjb250cm9sIGFuZCB0ZXJtaW5hbCBlbXVsYXRpb24gcHJvZ3JhbSBmb3IgVW5peC1saWtlIG9wZXJhdGluZyBzeXN0ZW1zIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCitERVBFTkRTID0gIm5jdXJzZXMgdmlydHVhbC9saWJpY29udiIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NDIwNDc3YWJjNTY3NDA0ZGViY2EwYTJhMWNiNmI2NDUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL21pbmljb20uaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTEyO21kNT1hNTg4MzhjYjcwOWYwZGI1MTdmNGU0MjczMGM0OWU4MSIKKworU1JDX1VSSSA9ICJodHRwczovL2FsaW90aC5kZWJpYW4ub3JnL2Zycy9kb3dubG9hZC5waHAvbGF0ZXN0ZmlsZS8zLyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9hbGxvdy50by5kaXNhYmxlLmxvY2tkZXYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtbWluaWNvbS1oLXYtcmV0dXJuLXZhbHVlLWlzLW5vdC0wLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLWlzc3VzLXN1cmZhY2VkLWR1ZS10by1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI5MDIxY2I4YzU0NDVmNmU2ZTc0YjJhY2MzOTk2MmQ2MiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1MzJmODM2YjdhNjc3ZWIwY2IxZGNhOGQ3MDMwMmI3MzcyOWMzZDMwZGYyNmQ1ODM2OGQ3MTJlNWNjYTA0MWYxIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9hbGlvdGguZGViaWFuLm9yZy9mcnMvP2dyb3VwX2lkPTMwMDE4IgorCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tsb2NrZGV2XSA9ICItLWVuYWJsZS1sb2NrZGV2LC0tZGlzYWJsZS1sb2NrZGV2LGxvY2tkZXYiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnCisKK2RvX2luc3RhbGwoKSB7CisJZm9yIGQgaW4gZG9jIGV4dHJhcyBtYW4gbGliIHNyYzsgZG8gbWFrZSAtQyAkZCBERVNURElSPSR7RH0gaW5zdGFsbDsgZG9uZQorfQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21pbmljb20vbWluaWNvbV8yLjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21pbmljb20vbWluaWNvbV8yLjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxMTg2ODYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9taW5pY29tL21pbmljb21fMi43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotU1VNTUFSWSA9ICJUZXh0LWJhc2VkIG1vZGVtIGNvbnRyb2wgYW5kIHRlcm1pbmFsIGVtdWxhdGlvbiBwcm9ncmFtIgotREVTQ1JJUFRJT04gPSAiTWluaWNvbSBpcyBhIHRleHQtYmFzZWQgbW9kZW0gY29udHJvbCBhbmQgdGVybWluYWwgZW11bGF0aW9uIHByb2dyYW0gZm9yIFVuaXgtbGlrZSBvcGVyYXRpbmcgc3lzdGVtcyIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotREVQRU5EUyA9ICJuY3Vyc2VzIHZpcnR1YWwvbGliaWNvbnYiCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTQyMDQ3N2FiYzU2NzQwNGRlYmNhMGEyYTFjYjZiNjQ1IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9taW5pY29tLmg7YmVnaW5saW5lPTE7ZW5kbGluZT0xMjttZDU9YTU4ODM4Y2I3MDlmMGRiNTE3ZjRlNDI3MzBjNDllODEiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9hbGlvdGguZGViaWFuLm9yZy9mcnMvZG93bmxvYWQucGhwL2xhdGVzdGZpbGUvMy8ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vYWxsb3cudG8uZGlzYWJsZS5sb2NrZGV2LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZml4LW1pbmljb20taC12LXJldHVybi12YWx1ZS1pcy1ub3QtMC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC1pc3N1cy1zdXJmYWNlZC1kdWUtdG8tbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNzA0NGNhM2UyOTEyNjhjMzMyOTRmMTcxZDQyNmRjMmQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWFjM2E2NjNiODJmNGY1ZGY2NDExNGI0NzkyYjk5MjZiNTM2Yzg1ZjU5ZGUwZjJkMmIzMjFjNzYyNmE5MDRmNCIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vYWxpb3RoLmRlYmlhbi5vcmcvZnJzLz9ncm91cF9pZD0zMDAxOCIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbbG9ja2Rldl0gPSAiLS1lbmFibGUtbG9ja2RldiwtLWRpc2FibGUtbG9ja2Rldixsb2NrZGV2IgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZwotCi1kb19pbnN0YWxsKCkgewotCWZvciBkIGluIGRvYyBleHRyYXMgbWFuIGxpYiBzcmM7IGRvIG1ha2UgLUMgJGQgREVTVERJUj0ke0R9IGluc3RhbGw7IGRvbmUKLX0KLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXQtdG9vbHMvbmV0LXRvb2xzXzEuNjAtMjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL25ldC10b29scy9uZXQtdG9vbHNfMS42MC0yNi5iYgppbmRleCA0NWQ3YmY0Li41NjU3ZmQ4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL25ldC10b29scy9uZXQtdG9vbHNfMS42MC0yNi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL25ldC10b29scy9uZXQtdG9vbHNfMS42MC0yNi5iYgpAQCAtMzcsOSArMzcsNyBAQAogCiBpbmhlcml0IGdldHRleHQKIAotZG9fcGF0Y2hbZGVwZW5kc10gPSAicXVpbHQtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCi0KLUxERkxBR1NfYXBwZW5kX2xpYmMtdWNsaWJjID0gIiAtbGludGwgIgorZG9fcGF0Y2hbZGVwZW5kc10gKz0gInF1aWx0LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgogCiAjIFRoZSBNYWtlZmlsZSBpcyBsYW1lLCBubyBwYXJhbGxlbCBidWlsZAogUEFSQUxMRUxfTUFLRSA9ICIiCkBAIC04MywyMCArODEsMTIgQEAKIAogZG9fY29tcGlsZSgpIHsKIAkjIG5ldC10b29scyB1c2UgQ09QVFMvTE9QVFMgdG8gYWxsb3cgYWRkaW5nIGN1c3RvbSBvcHRpb25zCi0JZXhwb3J0IENPUFRTPSIkQ0ZMQUdTIgotCWV4cG9ydCBMT1BUUz0iJExERkxBR1MiCi0JdW5zZXQgQ0ZMQUdTCi0JdW5zZXQgTERGTEFHUwotCi0Jb2VfcnVubWFrZQorCW9lX3J1bm1ha2UgQ09QVFM9IiRDRkxBR1MiIExPUFRTPSIkTERGTEFHUyIKIH0KIAogZG9faW5zdGFsbCgpIHsKLQlleHBvcnQgQ09QVFM9IiRDRkxBR1MiCi0JZXhwb3J0IExPUFRTPSIkTERGTEFHUyIKLQl1bnNldCBDRkxBR1MKLQl1bnNldCBMREZMQUdTCi0Jb2VfcnVubWFrZSAnQkFTRURJUj0ke0R9JyBpbnN0YWxsCisJIyBXZSBkb24ndCBuZWVkIENPUFRTIG9yIExPUFRTLCBidXQgbGV0J3MgYmUgY29uc2lzdGVudC4KKwlvZV9ydW5tYWtlIENPUFRTPSIkQ0ZMQUdTIiBMT1BUUz0iJExERkxBR1MiICdCQVNFRElSPSR7RH0nIGluc3RhbGwKIAogCWlmIFsgIiR7YmFzZV9iaW5kaXJ9IiAhPSAiL2JpbiIgXTsgdGhlbgogCQlta2RpciAtcCAke0R9LyR7YmFzZV9iaW5kaXJ9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL25ld3QvbGlibmV3dC1weXRob25fMC41Mi4xOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV3dC9saWJuZXd0LXB5dGhvbl8wLjUyLjIwLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL25ld3QvbGlibmV3dC1weXRob25fMC41Mi4xOS5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXd0L2xpYm5ld3QtcHl0aG9uXzAuNTIuMjAuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV3dC9saWJuZXd0XzAuNTIuMTkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL25ld3QvbGlibmV3dF8wLjUyLjE5LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZTc2Y2UyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbmV3dC9saWJuZXd0XzAuNTIuMTkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi1TVU1NQVJZID0gIkEgbGlicmFyeSBmb3IgdGV4dCBtb2RlIHVzZXIgaW50ZXJmYWNlcyIKLQotREVTQ1JJUFRJT04gPSAiTmV3dCBpcyBhIHByb2dyYW1taW5nIGxpYnJhcnkgZm9yIGNvbG9yIHRleHQgbW9kZSwgd2lkZ2V0IGJhc2VkIHVzZXIgXAotaW50ZXJmYWNlcy4gIE5ld3QgY2FuIGJlIHVzZWQgdG8gYWRkIHN0YWNrZWQgd2luZG93cywgZW50cnkgd2lkZ2V0cywgXAotY2hlY2tib3hlcywgcmFkaW8gYnV0dG9ucywgbGFiZWxzLCBwbGFpbiB0ZXh0IGZpZWxkcywgc2Nyb2xsYmFycywgXAotZXRjLiwgdG8gdGV4dCBtb2RlIHVzZXIgaW50ZXJmYWNlcy4gIFRoaXMgcGFja2FnZSBhbHNvIGNvbnRhaW5zIHRoZSBcCi1zaGFyZWQgbGlicmFyeSBuZWVkZWQgYnkgcHJvZ3JhbXMgYnVpbHQgd2l0aCBuZXd0LCBhcyB3ZWxsIGFzIGEgXAotL3Vzci9iaW4vZGlhbG9nIHJlcGxhY2VtZW50IGNhbGxlZCB3aGlwdGFpbC4gIE5ld3QgaXMgYmFzZWQgb24gdGhlIFwKLXNsYW5nIGxpYnJhcnkuIgotCi1IT01FUEFHRSA9ICJodHRwczovL3JlbGVhc2VzLnBhZ3VyZS5vcmcvbmV3dC8iCi1TRUNUSU9OID0gImxpYnMiCi0KLUxJQ0VOU0UgPSAiTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWYzMGYwNzE2ZGZkZDBkOTFlYjQzOWViZWM1MjJlYzIiCi0KLSMgc2xhbmcgbmVlZHMgdG8gYmUgPj0gMi4yCi1ERVBFTkRTID0gInNsYW5nIHBvcHQiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9yZWxlYXNlcy5wYWd1cmUub3JnL25ld3QvbmV3dC0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vZml4X1NIQVJFRERJUi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9jcm9zc19hci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS5pbi1BZGQtdGluZm8tbGlicmFyeS10by10aGUtbGlua2luZy1saWJyYXJpLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3BpZS1mbGFncy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWRldGVjdC1nb2xkLWFzLUdOVS1saW5rZXItdG9vLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gImU0YWEwZjc5NDNlZGQzOWM1MjQ4MWE4N2Y2OGY0MTJhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA4YzBkYjU2YzIxOTk2YWY2YTdjYmFiOTk0OTFiNzc0YzZjMDljZWY5MWNkOWIwMzkwM2M4NDYzNGJmZjJlODAiCi0KLVMgPSAiJHtXT1JLRElSfS9uZXd0LSR7UFZ9IgotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRob3V0LXRjbCAtLXdpdGhvdXQtcHl0aG9uIgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKLQotQ0xFQU5CUk9LRU4gPSAiMSIKLQotZXhwb3J0IENQUEZMQUdTCi0KLVBBQ0tBR0VTX3ByZXBlbmQgPSAid2hpcHRhaWwgIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICBzaCBhdXRvZ2VuLnNoCi19Ci0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLSAgICAjIE1ha2Ugc3VyZSB0aGUgcmVjb21waWxlIGlzIE9LCi0gICAgcm0gLWYgJHtCfS8uZGVwZW5kCi19Ci0KLUZJTEVTX3doaXB0YWlsID0gIiR7YmluZGlyfS93aGlwdGFpbCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL25ld3QvbGlibmV3dF8wLjUyLjIwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXd0L2xpYm5ld3RfMC41Mi4yMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NWNlNzBjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9uZXd0L2xpYm5ld3RfMC41Mi4yMC5iYgpAQCAtMCwwICsxLDU0IEBACitTVU1NQVJZID0gIkEgbGlicmFyeSBmb3IgdGV4dCBtb2RlIHVzZXIgaW50ZXJmYWNlcyIKKworREVTQ1JJUFRJT04gPSAiTmV3dCBpcyBhIHByb2dyYW1taW5nIGxpYnJhcnkgZm9yIGNvbG9yIHRleHQgbW9kZSwgd2lkZ2V0IGJhc2VkIHVzZXIgXAoraW50ZXJmYWNlcy4gIE5ld3QgY2FuIGJlIHVzZWQgdG8gYWRkIHN0YWNrZWQgd2luZG93cywgZW50cnkgd2lkZ2V0cywgXAorY2hlY2tib3hlcywgcmFkaW8gYnV0dG9ucywgbGFiZWxzLCBwbGFpbiB0ZXh0IGZpZWxkcywgc2Nyb2xsYmFycywgXAorZXRjLiwgdG8gdGV4dCBtb2RlIHVzZXIgaW50ZXJmYWNlcy4gIFRoaXMgcGFja2FnZSBhbHNvIGNvbnRhaW5zIHRoZSBcCitzaGFyZWQgbGlicmFyeSBuZWVkZWQgYnkgcHJvZ3JhbXMgYnVpbHQgd2l0aCBuZXd0LCBhcyB3ZWxsIGFzIGEgXAorL3Vzci9iaW4vZGlhbG9nIHJlcGxhY2VtZW50IGNhbGxlZCB3aGlwdGFpbC4gIE5ld3QgaXMgYmFzZWQgb24gdGhlIFwKK3NsYW5nIGxpYnJhcnkuIgorCitIT01FUEFHRSA9ICJodHRwczovL3JlbGVhc2VzLnBhZ3VyZS5vcmcvbmV3dC8iCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiTEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWYzMGYwNzE2ZGZkZDBkOTFlYjQzOWViZWM1MjJlYzIiCisKKyMgc2xhbmcgbmVlZHMgdG8gYmUgPj0gMi4yCitERVBFTkRTID0gInNsYW5nIHBvcHQiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9yZWxlYXNlcy5wYWd1cmUub3JnL25ld3QvbmV3dC0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vZml4X1NIQVJFRERJUi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9jcm9zc19hci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS5pbi1BZGQtdGluZm8tbGlicmFyeS10by10aGUtbGlua2luZy1saWJyYXJpLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3BpZS1mbGFncy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRldGVjdC1nb2xkLWFzLUdOVS1saW5rZXItdG9vLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjcwYjI4OGY4MjEyMzQ1OTNhOGU3OTIwZTQzNWIyNTliIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhkNjZiYTZiZWZmYzNmNzg2ZDRjY2ZlZTlkMmI0M2Q5MzQ4NDY4MGVmOGRiOTM5N2E0ZmI3MGI1YWRiYjZkYmMiCisKK1MgPSAiJHtXT1JLRElSfS9uZXd0LSR7UFZ9IgorCitFWFRSQV9PRUNPTkYgPSAiLS13aXRob3V0LXRjbCAtLXdpdGhvdXQtcHl0aG9uIgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKKworQ0xFQU5CUk9LRU4gPSAiMSIKKworZXhwb3J0IENQUEZMQUdTCisKK1BBQ0tBR0VTX3ByZXBlbmQgPSAid2hpcHRhaWwgIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICBzaCBhdXRvZ2VuLnNoCit9CisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICAjIE1ha2Ugc3VyZSB0aGUgcmVjb21waWxlIGlzIE9LCisgICAgcm0gLWYgJHtCfS8uZGVwZW5kCit9CisKK0ZJTEVTX3doaXB0YWlsID0gIiR7YmluZGlyfS93aGlwdGFpbCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtZnVsbC1jbWRsaW5lLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLWZ1bGwtY21kbGluZS5iYgppbmRleCBkODk3NWYyLi5mZGVkZTU5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtZnVsbC1jbWRsaW5lLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1mdWxsLWNtZGxpbmUuYmIKQEAgLTg2LDcgKzg2LDYgQEAKICAgICBtYy1maXNoIFwKICAgICBtYy1oZWxwZXJzIFwKICAgICBtYy1oZWxwZXJzLXBlcmwgXAotICAgIG1jLWhlbHBlcnMtcHl0aG9uIFwKICAgICBta3RlbXAgXAogICAgIG5jdXJzZXMgXAogICAgIG5ldC10b29scyBcCkBAIC0xMTAsNyArMTA5LDYgQEAKICAgICAiCiAKIFJERVBFTkRTX3BhY2thZ2Vncm91cC1jb3JlLWZ1bGwtY21kbGluZS1kZXYtdXRpbHMgPSAiXAotICAgIGJ5YWNjIFwKICAgICBkaWZmdXRpbHMgXAogICAgIG00IFwKICAgICBtYWtlIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1sc2IuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtbHNiLmJiCmluZGV4IGExNTZiY2IuLjViYWFmMzUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1sc2IuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLWxzYi5iYgpAQCAtNjYsNyArNjYsNiBAQAogICAgIG1jLWZpc2ggXAogICAgIG1jLWhlbHBlcnMgXAogICAgIG1jLWhlbHBlcnMtcGVybCBcCi0gICAgbWMtaGVscGVycy1weXRob24gXAogICAgIG1kYWRtIFwKICAgICBtaW5pY29tIFwKICAgICBuZW9uIFwKQEAgLTE1NCw3ICsxNTMsNiBAQAogICAgIGxvY2FsZWRlZiBcCiAgICAgbHNiIFwKICAgICBtNCBcCi0gICAgbWFpbHggXAogICAgIG1ha2UgXAogICAgIG1hbiBcCiAgICAgbWFuLXBhZ2VzIFwKQEAgLTE3OCw3ICsxNzYsNiBAQAogICAgIG5jdXJzZXMgXAogICAgIHpsaWIgXAogICAgIG5zcHIgXAotICAgIGxpYnBuZzEyIFwKICAgICBuc3MgXAogIgogCkBAIC0yMDMsMzEgKzIwMCw2IEBACiAgICAgcHl0aG9uLW1pc2MgXAogIgogCi1RVDRQS0dTID0gIiBcCi0gICAgbGlicXRjb3JlNCBcCi0gICAgbGlicXRndWk0IFwKLSAgICBsaWJxdHNxbDQgXAotICAgIGxpYnF0c3ZnNCBcCi0gICAgbGlicXR4bWw0IFwKLSAgICBsaWJxdG5ldHdvcms0IFwKLSAgICBxdDQtcGx1Z2luLXNxbGRyaXZlci1zcWxpdGUgXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAib3BlbmdsIiwgImxpYnF0b3BlbmdsNCIsICIiLCBkKX0gXAotICAgICIKLVFUNFBLR1NfbWlwczY0ID0gIiIKLVFUNFBLR1NfbWlwczY0bjMyID0gIiIKLQotZGVmIGdldF9saWJxdDQoZCk6Ci0gICAgaWYgJ2xpbnV4c3RkYmFzZScgaW4gZC5nZXRWYXIoJ0RJU1RST09WRVJSSURFUycsIEZhbHNlKSBvciAiIjoKLSAgICAgICAgaWYgJ3F0NCcgaW4gZC5nZXRWYXIoJ0JCRklMRV9DT0xMRUNUSU9OUycsIEZhbHNlKSBvciAiIjoKLSAgICAgICAgICAgIHJldHVybiBkLmdldFZhcignUVQ0UEtHUycsIEZhbHNlKQotCi0gICAgICAgIGJiLndhcm4oJ1RoZSBtZXRhLXF0NCBsYXllciBzaG91bGQgYmUgYWRkZWQsIHRoaXMgbGF5ZXIgcHJvdmlkZXMgUXQgNC54ICcgXAotICAgICAgICAgICAgICAgICdsaWJyYXJpZXMuIEl0cyBpbnRlbmRlZCB1c2UgaXMgZm9yIHBhc3NpbmcgTFNCIHRlc3RzIGFzIFF0NCBpcyAnIFwKLSAgICAgICAgICAgICAgICAnYSByZXF1aXJlbWVudCBmb3IgTFNCLicpCi0gICAgcmV0dXJuICcnCi0jIFdlIGRvbid0IHdhbnQgdGhpcyB0byByZWJ1aWxkIGV2ZXJ5IHRpbWUgeW91IGNoYW5nZSB5b3VyIGxheWVyIGNvbmZpZwotZ2V0X2xpYnF0NFt2YXJkZXBzZXhjbHVkZV0gKz0gIkJCRklMRV9DT0xMRUNUSU9OUyIKLQogU1VNTUFSWV9wYWNrYWdlZ3JvdXAtY29yZS1sc2ItZGVza3RvcCA9ICJMU0IgRGVza3RvcCIKIERFU0NSSVBUSU9OX3BhY2thZ2Vncm91cC1jb3JlLWxzYi1kZXNrdG9wID0gIlBhY2thZ2VzIHJlcXVpcmVkIHRvIHN1cHBvcnQgbGlicmFyaWVzIFwKICAgICBzcGVjaWZpZWQgaW4gdGhlIExTQiBEZXNrdG9wIHNwZWNpZmljYXRpb24iCkBAIC0yNDgsNyArMjIwLDYgQEAKICAgICBndGsrIFwKICAgICBhdGsgXAogICAgIGxpYmFzb3VuZCBcCi0gICAgJHtAZ2V0X2xpYnF0NChkKX0gXAogIgogCiBSREVQRU5EU19wYWNrYWdlZ3JvdXAtY29yZS1sc2ItcnVudGltZS1hZGQgPSAiXApAQCAtMjY3LDEwICsyMzgsNCBAQAogICAgIGdsaWJjLWxvY2FsZWRhdGEtcG9zaXggXAogICAgIGdsaWJjLWV4dHJhLW5zcyBcCiAgICAgZ2xpYmMtcGNwcm9maWxlIFwKLSAgICBsaWJjbGFzcy1pc2EtcGVybCBcCi0gICAgbGliZW52LXBlcmwgXAotICAgIGxpYmR1bXB2YWx1ZS1wZXJsIFwKLSAgICBsaWJmaWxlLWNoZWNrdHJlZS1wZXJsIFwKLSAgICBsaWJpMThuLWNvbGxhdGUtcGVybCBcCi0gICAgbGlicG9kLXBsYWluZXItcGVybCBcCiAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW0vdXNlLXV0bXB4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtL3VzZS11dG1weC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGQwNGJiYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW0vdXNlLXV0bXB4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjMzICswLDAgQEAKLXV0bXAoKSBtYXkgbm90IGJlIGNvbmZpZ3VyZWQgaW4gYW5kIHVzZSBwb3NpeCBjb21wbGlhbnQgdXRtcHggYWx3YXlzCi1VVE1QIGlzIFNWSUQgbGVnYWN5LCBVVE1QWCBpcyBtYW5kYXRlZCBieSBQT1NJWAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1JbmRleDogTGludXgtUEFNLTEuMi4xL2xpYnBhbS9wYW1fbW9kdXRpbF9nZXRsb2dpbi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gTGludXgtUEFNLTEuMi4xLm9yaWcvbGlicGFtL3BhbV9tb2R1dGlsX2dldGxvZ2luLmMKLSsrKyBMaW51eC1QQU0tMS4yLjEvbGlicGFtL3BhbV9tb2R1dGlsX2dldGxvZ2luLmMKLUBAIC0xMCw4ICsxMCw3IEBACi0gCi0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLS0jaW5jbHVkZSA8dXRtcC5oPgotLQotKyNpbmNsdWRlIDx1dG1weC5oPgotICNkZWZpbmUgX1BBTU1PRFVUSUxfR0VUTE9HSU4gIl9wYW1tb2R1dGlsX2dldGxvZ2luIgotIAotIGNvbnN0IGNoYXIgKgotQEAgLTIyLDcgKzIxLDcgQEAgcGFtX21vZHV0aWxfZ2V0bG9naW4ocGFtX2hhbmRsZV90ICpwYW1oKQotICAgICBjb25zdCB2b2lkICp2b2lkX2N1cnJfdHR5OwotICAgICBjb25zdCBjaGFyICpjdXJyX3R0eTsKLSAgICAgY2hhciAqY3Vycl91c2VyOwotLSAgICBzdHJ1Y3QgdXRtcCAqdXQsIGxpbmU7Ci0rICAgIHN0cnVjdCB1dG1weCAqdXQsIGxpbmU7Ci0gCi0gICAgIHN0YXR1cyA9IHBhbV9nZXRfZGF0YShwYW1oLCBfUEFNTU9EVVRJTF9HRVRMT0dJTiwgJmxvZ25hbWUpOwotICAgICBpZiAoc3RhdHVzID09IFBBTV9TVUNDRVNTKSB7Ci1AQCAtNDgsMTAgKzQ3LDEwIEBAIHBhbV9tb2R1dGlsX2dldGxvZ2luKHBhbV9oYW5kbGVfdCAqcGFtaCkKLSAgICAgfQotICAgICBsb2duYW1lID0gTlVMTDsKLSAKLS0gICAgc2V0dXRlbnQoKTsKLSsgICAgc2V0dXR4ZW50KCk7Ci0gICAgIHN0cm5jcHkobGluZS51dF9saW5lLCBjdXJyX3R0eSwgc2l6ZW9mKGxpbmUudXRfbGluZSkpOwotIAotLSAgICBpZiAoKHV0ID0gZ2V0dXRsaW5lKCZsaW5lKSkgPT0gTlVMTCkgewotKyAgICBpZiAoKHV0ID0gZ2V0dXR4bGluZSgmbGluZSkpID09IE5VTEwpIHsKLSAJZ290byBjbGVhbl91cF9hbmRfZ29faG9tZTsKLSAgICAgfQotIAotQEAgLTc0LDcgKzczLDcgQEAgcGFtX21vZHV0aWxfZ2V0bG9naW4ocGFtX2hhbmRsZV90ICpwYW1oKQotIAotIGNsZWFuX3VwX2FuZF9nb19ob21lOgotIAotLSAgICBlbmR1dGVudCgpOwotKyAgICBlbmR1dHhlbnQoKTsKLSAKLSAgICAgcmV0dXJuIGxvZ25hbWU7Ci0gfQotSW5kZXg6IExpbnV4LVBBTS0xLjIuMS9tb2R1bGVzL3BhbV9pc3N1ZS9wYW1faXNzdWUuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIExpbnV4LVBBTS0xLjIuMS5vcmlnL21vZHVsZXMvcGFtX2lzc3VlL3BhbV9pc3N1ZS5jCi0rKysgTGludXgtUEFNLTEuMi4xL21vZHVsZXMvcGFtX2lzc3VlL3BhbV9pc3N1ZS5jCi1AQCAtMjUsNyArMjUsNyBAQAotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0gI2luY2x1ZGUgPHN5cy91dHNuYW1lLmg+Ci0tI2luY2x1ZGUgPHV0bXAuaD4KLSsjaW5jbHVkZSA8dXRtcHguaD4KLSAjaW5jbHVkZSA8dGltZS5oPgotICNpbmNsdWRlIDxzeXNsb2cuaD4KLSAKLUBAIC0yNDYsMTMgKzI0NiwxMyBAQCByZWFkX2lzc3VlX3F1b3RlZChwYW1faGFuZGxlX3QgKnBhbWgsIEZJCi0gCSAgICAgIGNhc2UgJ1UnOgotIAkJewotIAkJICAgIHVuc2lnbmVkIGludCB1c2VycyA9IDA7Ci0tCQkgICAgc3RydWN0IHV0bXAgKnV0OwotLQkJICAgIHNldHV0ZW50KCk7Ci0tCQkgICAgd2hpbGUgKCh1dCA9IGdldHV0ZW50KCkpKSB7Ci0rCQkgICAgc3RydWN0IHV0bXB4ICp1dDsKLSsJCSAgICBzZXR1dHhlbnQoKTsKLSsJCSAgICB3aGlsZSAoKHV0ID0gZ2V0dXR4ZW50KCkpKSB7Ci0gCQkJaWYgKHV0LT51dF90eXBlID09IFVTRVJfUFJPQ0VTUykKLSAJCQkgICAgKyt1c2VyczsKLSAJCSAgICB9Ci0tCQkgICAgZW5kdXRlbnQoKTsKLSsJCSAgICBlbmR1dHhlbnQoKTsKLSAJCSAgICBpZiAoYyA9PSAnVScpCi0gCQkJc25wcmludGYgKGJ1Ziwgc2l6ZW9mIGJ1ZiwgIiV1ICVzIiwgdXNlcnMsCi0gCQkJICAgICAgICAgICh1c2VycyA9PSAxKSA/ICJ1c2VyIiA6ICJ1c2VycyIpOwotSW5kZXg6IExpbnV4LVBBTS0xLjIuMS9tb2R1bGVzL3BhbV9sYXN0bG9nL3BhbV9sYXN0bG9nLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBMaW51eC1QQU0tMS4yLjEub3JpZy9tb2R1bGVzL3BhbV9sYXN0bG9nL3BhbV9sYXN0bG9nLmMKLSsrKyBMaW51eC1QQU0tMS4yLjEvbW9kdWxlcy9wYW1fbGFzdGxvZy9wYW1fbGFzdGxvZy5jCi1AQCAtMTUsOCArMTUsOSBAQAotICNpbmNsdWRlIDxlcnJuby5oPgotICNpZmRlZiBIQVZFX1VUTVBfSAotICMgaW5jbHVkZSA8dXRtcC5oPgotLSNlbHNlCi0tIyBpbmNsdWRlIDxsYXN0bG9nLmg+Ci0rI2VuZGlmCi0rI2lmZGVmIEhBVkVfVVRNUFhfSAotKyMgaW5jbHVkZSA8dXRtcHguaD4KLSAjZW5kaWYKLSAjaW5jbHVkZSA8cHdkLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotQEAgLTI3LDYgKzI4LDEyIEBACi0gI2luY2x1ZGUgPHN5c2xvZy5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAKLSsjaWZuZGVmIEhBVkVfVVRNUF9ICi0rI2RlZmluZSBVVF9MSU5FU0laRSAzMgotKyNkZWZpbmUgVVRfSE9TVFNJWkUgMzIKLSsjZGVmaW5lIFVUX05BTUVTSVpFIDI1NgotKyNlbmRpZgotKwotICNpZiBkZWZpbmVkKGhwdXgpIHx8IGRlZmluZWQoc3Vub3MpIHx8IGRlZmluZWQoc29sYXJpcykKLSAjIGlmbmRlZiBfUEFUSF9MQVNUTE9HCi0gIyAgZGVmaW5lIF9QQVRIX0xBU1RMT0cgIi91c3IvYWRtL2xhc3Rsb2ciCi1AQCAtMzgsNyArNDUsNyBAQAotICMgIGRlZmluZSBVVF9MSU5FU0laRSAxMgotICMgZW5kaWYgLyogVVRfTElORVNJWkUgKi8KLSAjZW5kaWYKLS0jaWYgZGVmaW5lZChocHV4KQotKyNpZiBkZWZpbmVkKGhwdXgpIHx8ICFkZWZpbmVkIEhBVkVfVVRNUF9ICi0gc3RydWN0IGxhc3Rsb2cgewotICAgICB0aW1lX3QgIGxsX3RpbWU7Ci0gICAgIGNoYXIgICAgbGxfbGluZVtVVF9MSU5FU0laRV07Ci1AQCAtNDQ3LDggKzQ1NCw4IEBAIGxhc3RfbG9naW5fZmFpbGVkKHBhbV9oYW5kbGVfdCAqcGFtaCwgaW4KLSB7Ci0gICAgIGludCByZXR2YWw7Ci0gICAgIGludCBmZDsKLS0gICAgc3RydWN0IHV0bXAgdXQ7Ci0tICAgIHN0cnVjdCB1dG1wIHV0dXNlcjsKLSsgICAgc3RydWN0IHV0bXB4IHV0OwotKyAgICBzdHJ1Y3QgdXRtcHggdXR1c2VyOwotICAgICBpbnQgZmFpbGVkID0gMDsKLSAgICAgY2hhciB0aGVfdGltZVsyNTZdOwotICAgICBjaGFyICpkYXRlID0gTlVMTDsKLUluZGV4OiBMaW51eC1QQU0tMS4yLjEvbW9kdWxlcy9wYW1fbGltaXRzL3BhbV9saW1pdHMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIExpbnV4LVBBTS0xLjIuMS5vcmlnL21vZHVsZXMvcGFtX2xpbWl0cy9wYW1fbGltaXRzLmMKLSsrKyBMaW51eC1QQU0tMS4yLjEvbW9kdWxlcy9wYW1fbGltaXRzL3BhbV9saW1pdHMuYwotQEAgLTMzLDcgKzMzLDcgQEAKLSAjaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+Ci0gI2luY2x1ZGUgPGxpbWl0cy5oPgotICNpbmNsdWRlIDxnbG9iLmg+Ci0tI2luY2x1ZGUgPHV0bXAuaD4KLSsjaW5jbHVkZSA8dXRtcHguaD4KLSAjaWZuZGVmIFVUX1VTRVIgIC8qIHNvbWUgc3lzdGVtcyBoYXZlIHV0X25hbWUgaW5zdGVhZCBvZiB1dF91c2VyICovCi0gI2RlZmluZSBVVF9VU0VSIHV0X3VzZXIKLSAjZW5kaWYKLUBAIC0yMjcsNyArMjI3LDcgQEAgc3RhdGljIGludAotIGNoZWNrX2xvZ2lucyAocGFtX2hhbmRsZV90ICpwYW1oLCBjb25zdCBjaGFyICpuYW1lLCBpbnQgbGltaXQsIGludCBjdHJsLAotICAgICAgICAgICAgICAgc3RydWN0IHBhbV9saW1pdF9zICpwbCkKLSB7Ci0tICAgIHN0cnVjdCB1dG1wICp1dDsKLSsgICAgc3RydWN0IHV0bXB4ICp1dDsKLSAgICAgaW50IGNvdW50OwotIAotICAgICBpZiAoY3RybCAmIFBBTV9ERUJVR19BUkcpIHsKLUBAIC0yNDIsNyArMjQyLDcgQEAgY2hlY2tfbG9naW5zIChwYW1faGFuZGxlX3QgKnBhbWgsIGNvbnN0Ci0gICAgICAgICByZXR1cm4gTE9HSU5fRVJSOwotICAgICB9Ci0gCi0tICAgIHNldHV0ZW50KCk7Ci0rICAgIHNldHV0eGVudCgpOwotIAotICAgICAvKiBCZWNhdXNlIHRoZXJlIGlzIG5vIGRlZmluaXRpb24gYWJvdXQgd2hlbiBhbiBhcHBsaWNhdGlvbgotICAgICAgICBhY3R1YWxseSBhZGRzIGEgdXRtcCBlbnRyeSwgc29tZSBhcHBsaWNhdGlvbnMgYml6YXJyZWx5IGRvIHRoZQotQEAgLTI2MCw3ICsyNjAsNyBAQCBjaGVja19sb2dpbnMgKHBhbV9oYW5kbGVfdCAqcGFtaCwgY29uc3QKLSAJY291bnQgPSAxOwotICAgICB9Ci0gCi0tICAgIHdoaWxlKCh1dCA9IGdldHV0ZW50KCkpKSB7Ci0rICAgIHdoaWxlKCh1dCA9IGdldHV0eGVudCgpKSkgewotICNpZmRlZiBVU0VSX1BST0NFU1MKLSAgICAgICAgIGlmICh1dC0+dXRfdHlwZSAhPSBVU0VSX1BST0NFU1MpIHsKLSAgICAgICAgICAgICBjb250aW51ZTsKLUBAIC0yOTYsNyArMjk2LDcgQEAgY2hlY2tfbG9naW5zIChwYW1faGFuZGxlX3QgKnBhbWgsIGNvbnN0Ci0gCSAgICBicmVhazsKLSAJfQotICAgICB9Ci0tICAgIGVuZHV0ZW50KCk7Ci0rICAgIGVuZHV0eGVudCgpOwotICAgICBpZiAoY291bnQgPiBsaW1pdCkgewotIAlpZiAobmFtZSkgewotIAkgICAgcGFtX3N5c2xvZyhwYW1oLCBMT0dfV0FSTklORywKLUluZGV4OiBMaW51eC1QQU0tMS4yLjEvbW9kdWxlcy9wYW1fdGltZXN0YW1wL3BhbV90aW1lc3RhbXAuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIExpbnV4LVBBTS0xLjIuMS5vcmlnL21vZHVsZXMvcGFtX3RpbWVzdGFtcC9wYW1fdGltZXN0YW1wLmMKLSsrKyBMaW51eC1QQU0tMS4yLjEvbW9kdWxlcy9wYW1fdGltZXN0YW1wL3BhbV90aW1lc3RhbXAuYwotQEAgLTU2LDcgKzU2LDcgQEAKLSAjaW5jbHVkZSA8dGltZS5oPgotICNpbmNsdWRlIDxzeXMvdGltZS5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLS0jaW5jbHVkZSA8dXRtcC5oPgotKyNpbmNsdWRlIDx1dG1weC5oPgotICNpbmNsdWRlIDxzeXNsb2cuaD4KLSAjaW5jbHVkZSA8cGF0aHMuaD4KLSAjaW5jbHVkZSAiaG1hY3NoYTEuaCIKLUBAIC0xOTcsMTUgKzE5NywxNSBAQCB0aW1lc3RhbXBfZ29vZCh0aW1lX3QgdGhlbiwgdGltZV90IG5vdywKLSBzdGF0aWMgaW50Ci0gY2hlY2tfbG9naW5fdGltZShjb25zdCBjaGFyICpydXNlciwgdGltZV90IHRpbWVzdGFtcCkKLSB7Ci0tCXN0cnVjdCB1dG1wIHV0YnVmLCAqdXQ7Ci0rCXN0cnVjdCB1dG1weCB1dGJ1ZiwgKnV0OwotIAl0aW1lX3Qgb2xkZXN0X2xvZ2luID0gMDsKLSAKLS0Jc2V0dXRlbnQoKTsKLSsJc2V0dXR4ZW50KCk7Ci0gCXdoaWxlKAotICNpZmRlZiBIQVZFX0dFVFVURU5UX1IKLS0JICAgICAgIWdldHV0ZW50X3IoJnV0YnVmLCAmdXQpCi0rCSAgICAgICFnZXR1dHhlbnRfcigmdXRidWYsICZ1dCkKLSAjZWxzZQotLQkgICAgICAodXQgPSBnZXR1dGVudCgpKSAhPSBOVUxMCi0rCSAgICAgICh1dCA9IGdldHV0eGVudCgpKSAhPSBOVUxMCi0gI2VuZGlmCi0gCSAgICAgICkgewotIAkJaWYgKHV0LT51dF90eXBlICE9IFVTRVJfUFJPQ0VTUykgewotQEAgLTIxOCw3ICsyMTgsNyBAQCBjaGVja19sb2dpbl90aW1lKGNvbnN0IGNoYXIgKnJ1c2VyLCB0aW1lCi0gCQkJb2xkZXN0X2xvZ2luID0gdXQtPnV0X3R2LnR2X3NlYzsKLSAJCX0KLSAJfQotLQllbmR1dGVudCgpOwotKwllbmR1dHhlbnQoKTsKLSAJaWYob2xkZXN0X2xvZ2luID09IDAgfHwgdGltZXN0YW1wIDwgb2xkZXN0X2xvZ2luKSB7Ci0gCQlyZXR1cm4gUEFNX0FVVEhfRVJSOwotIAl9Ci1JbmRleDogTGludXgtUEFNLTEuMi4xL21vZHVsZXMvcGFtX3VuaXgvc3VwcG9ydC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gTGludXgtUEFNLTEuMi4xLm9yaWcvbW9kdWxlcy9wYW1fdW5peC9zdXBwb3J0LmMKLSsrKyBMaW51eC1QQU0tMS4yLjEvbW9kdWxlcy9wYW1fdW5peC9zdXBwb3J0LmMKLUBAIC0xMyw3ICsxMyw2IEBACi0gI2luY2x1ZGUgPHB3ZC5oPgotICNpbmNsdWRlIDxzaGFkb3cuaD4KLSAjaW5jbHVkZSA8bGltaXRzLmg+Ci0tI2luY2x1ZGUgPHV0bXAuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8c2lnbmFsLmg+Ci0gI2luY2x1ZGUgPGN0eXBlLmg+CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW1fMS4zLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW1fMS4zLjAuYmIKaW5kZXggZGY1NmQyNy4uOGY3NzUzZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtXzEuMy4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbV8xLjMuMC5iYgpAQCAtMjgsOCArMjgsNiBAQAogU1JDX1VSSVttZDVzdW1dID0gImRhNGIyMjg5YjdjZmIxOTU4M2Q1NGU5ZWFhZWYxYzNhIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI0MWFlZDFlZjUyMmY2NmVkNjcyNzE5ZWNmMjIwNWVjNTEzZmQwMDc1ZWQ4MGNkYThlMDg2YTViMWEwMWQxYmIiCiAKLVNSQ19VUklfYXBwZW5kX2xpYmMtdWNsaWJjID0gIiBmaWxlOi8vdXNlLXV0bXB4LnBhdGNoIgotCiBTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly8wMDAxLUFkZC1zdXBwb3J0LWZvci1kZWZpbmluZy1taXNzaW5nLWZ1bmNpdG9uYWxpdHkucGF0Y2ggXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jbHVkZV9wYXRoc19oZWFkZXIucGF0Y2ggXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvMDAwMS1Nb3ZlLXB5dGhvbi1oZWxwZXItc2NyaXB0cy11c2VkLW9ubHktaW4tdGVzdHMtdG8tUHl0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvMDAwMS1Nb3ZlLXB5dGhvbi1oZWxwZXItc2NyaXB0cy11c2VkLW9ubHktaW4tdGVzdHMtdG8tUHl0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyOGIxNGUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy8wMDAxLU1vdmUtcHl0aG9uLWhlbHBlci1zY3JpcHRzLXVzZWQtb25seS1pbi10ZXN0cy10by1QeXQucGF0Y2gKQEAgLTAsMCArMSw0NCBAQAorRnJvbSA2ZTgyYWY1NDcxNDM5MmRjZGY3NGE4YWVkYWFlN2RlN2QwYWYxMDgwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDI3IEFwciAyMDE3IDE2OjM3OjI0ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIE1vdmUgcHl0aG9uIGhlbHBlciBzY3JpcHRzICh1c2VkIG9ubHkgaW4gdGVzdHMpIHRvIFB5dGhvbiAzCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyB0ZXN0cy9ncHQtaGVhZGVyLW1vdmUgfCAyICstCisgdGVzdHMvbXNkb3Mtb3ZlcmxhcCAgIHwgNCArKy0tCisgMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS90ZXN0cy9ncHQtaGVhZGVyLW1vdmUgYi90ZXN0cy9ncHQtaGVhZGVyLW1vdmUKK2luZGV4IDA1Y2RjNjUuLjNjYmNiN2UgMTAwNzU1CistLS0gYS90ZXN0cy9ncHQtaGVhZGVyLW1vdmUKKysrKyBiL3Rlc3RzL2dwdC1oZWFkZXItbW92ZQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9weXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgCisgIyBvcGVuIGltZyBmaWxlLCBzdWJ0cmFjdCAzMyBmcm9tIGFsdGxiYSBhZGRyZXNzLCBhbmQgbW92ZSB0aGUgbGFzdCAzMyBzZWN0b3JzCisgIyBiYWNrIGJ5IDMzIHNlY3RvcnMKK2RpZmYgLS1naXQgYS90ZXN0cy9tc2Rvcy1vdmVybGFwIGIvdGVzdHMvbXNkb3Mtb3ZlcmxhcAoraW5kZXggNWJkZGZiMC4uM2RlN2QyZSAxMDA3NTUKKy0tLSBhL3Rlc3RzL21zZG9zLW92ZXJsYXAKKysrKyBiL3Rlc3RzL21zZG9zLW92ZXJsYXAKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICIiIgorICAgICBXcml0ZSBhbiBvdmVybGFwcGluZyBwYXJ0aXRpb24gdG8gYSBtc2RvcyBkaXNrCisgCitAQCAtMTQsNyArMTQsNyBAQCBCQURfRU5UUlkgPSAoMHg3MiwgMHhmNSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKyBPRkZTRVQgPSAweDFiOAorIAorIGlmIGxlbihzeXMuYXJndikgPCAyOgorLSAgICBwcmludCAiJXM6IDxpbWFnZSBvciBkZXZpY2U+IgorKyAgICBwcmludCgiJXM6IDxpbWFnZSBvciBkZXZpY2U+IikKKyAgICAgc3lzLmV4aXQoMSkKKyAKKyBkYXRhID0gIiIuam9pbihjaHIoYykgZm9yIGMgaW4gQkFEX0VOVFJZKQorLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvMDAwMS1saWJwYXJ0ZWQtVXNlLXJlYWQtb25seS13aGVuLXByb2JpbmctZGV2aWNlcy1vbi1saW51LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvMDAwMS1saWJwYXJ0ZWQtVXNlLXJlYWQtb25seS13aGVuLXByb2JpbmctZGV2aWNlcy1vbi1saW51LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1MjJlMWMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy8wMDAxLWxpYnBhcnRlZC1Vc2UtcmVhZC1vbmx5LXdoZW4tcHJvYmluZy1kZXZpY2VzLW9uLWxpbnUucGF0Y2gKQEAgLTAsMCArMSwyMjQgQEAKK0Zyb20gZDZlMTVhNjBlODRjMTUxMTUyM2FhODEyNzJiN2RiN2E2ZWM0NDFkMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE92aWRpdSBQYW5haXQgPG92aWRpdS5wYW5haXRAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgMjYgU2VwIDIwMTcgMDg6MDQ6NTggKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gbGlicGFydGVkOiBVc2UgcmVhZCBvbmx5IHdoZW4gcHJvYmluZyBkZXZpY2VzIG9uIGxpbnV4CisgKCMxMjQ1MTQ0KQorCitXaGVuIGEgZGV2aWNlIGlzIG9wZW5lZCBmb3IgUlcgY2xvc2luZyBpdCBjYW4gdHJpZ2dlciBvdGhlciBhY3Rpb25zLAorbGlrZSB1ZGV2IHNjYW5uaW5nIGl0IGZvciBwYXJ0aXRpb24gY2hhbmdlcy4gVXNlIHJlYWQgb25seSBmb3IgdGhlCitpbml0XyogbWV0aG9kcyBhbmQgUlcgZm9yIGFjdHVhbCBjaGFuZ2VzIHRvIHRoZSBkZXZpY2UuCisKK1RoaXMgYWRkcyBfZGV2aWNlX29wZW4gd2hpY2ggdGFrZXMgbW9kZSBmbGFncyBhcyBhbiBhcmd1bWVudCBhbmQgdHVybnMKK2xpbnV4X29wZW4gaW50byBhIHdyYXBwZXIgZm9yIGl0IHdpdGggUldfTU9ERS4KKworX2RldmljZV9vcGVuX3JvIGlzIGFkZGVkIHRvIG9wZW4gdGhlIGRldmljZSB3aXRoIFJEX01PREUgYW5kIGluY3JlbWVudAordGhlIG9wZW5fY291bnRlci4gVGhpcyBpcyB1c2VkIGluIHRoZSBpbml0XyogZnVuY3Rpb25zLgorCitfZGV2aWNlX2Nsb3NlIGlzIGEgd3JhcHBlciBhcm91bmQgbGludXhfY2xvc2UgdGhhdCBkZWNyZW1lbnRzIHRoZQorb3Blbl9jb3VudGVyIGFuZCBpcyB1c2VkIGluIHRoZSBpbml0XyogZnVuY3Rpb25zLgorCitBbGwgb2YgdGhlc2UgY2hhbmdlcyBhcmUgc2VsZi1jb250YWluZWQgd2l0aCBubyBleHRlcm5hbCBBUEkgY2hhbmdlcy4KK1RoZSBvbmx5IHZpc2libGUgY2hhbmdlIGluIGJlaGF2aW9yIGlzIHRoYXQgd2hlbiBhIG5ldyBQZWREZXZpY2UgaXMKK2NyZWF0ZWQgdGhlIGRldmljZSBpcyBvcGVuZWQgaW4gUk9fTU9ERSBpbnN0ZWFkIG9mIFJXX01PREUuCisKK1Jlc29sdmVzOiByaGJ6IzEyNDUxNDQKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitBdXRob3I6IEJyaWFuIEMuIExhbmUgPGJjbEByZWRoYXQuY29tPgorU2lnbmVkLW9mZi1ieTogT3ZpZGl1IFBhbmFpdCA8b3ZpZGl1LnBhbmFpdEB3aW5kcml2ZXIuY29tPgorLS0tCisgbGlicGFydGVkL2FyY2gvbGludXguYyB8IDYyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQ0IGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGlicGFydGVkL2FyY2gvbGludXguYyBiL2xpYnBhcnRlZC9hcmNoL2xpbnV4LmMKK2luZGV4IGY2MTI2MTcuLjBhMDZhNTQgMTAwNjQ0CistLS0gYS9saWJwYXJ0ZWQvYXJjaC9saW51eC5jCisrKysgYi9saWJwYXJ0ZWQvYXJjaC9saW51eC5jCitAQCAtMjk0LDcgKzI5NCw5IEBAIHN0cnVjdCBibGtkZXZfaW9jdGxfcGFyYW0geworIHN0YXRpYyBjaGFyKiBfZGV2aWNlX2dldF9wYXJ0X3BhdGggKFBlZERldmljZSBjb25zdCAqZGV2LCBpbnQgbnVtKTsKKyBzdGF0aWMgaW50IF9wYXJ0aXRpb25faXNfbW91bnRlZF9ieV9wYXRoIChjb25zdCBjaGFyKiBwYXRoKTsKKyBzdGF0aWMgdW5zaWduZWQgaW50IF9kZXZpY2VfZ2V0X3BhcnRpdGlvbl9yYW5nZShQZWREZXZpY2UgY29uc3QqIGRldik7CistCisrc3RhdGljIGludCBfZGV2aWNlX29wZW4gKFBlZERldmljZSogZGV2LCBpbnQgZmxhZ3MpOworK3N0YXRpYyBpbnQgX2RldmljZV9vcGVuX3JvIChQZWREZXZpY2UqIGRldik7Cisrc3RhdGljIGludCBfZGV2aWNlX2Nsb3NlIChQZWREZXZpY2UqIGRldik7CisgCisgc3RhdGljIGludAorIF9yZWFkX2ZkIChpbnQgZmQsIGNoYXIgKipidWYpCitAQCAtOTEzLDcgKzkxNSw3IEBAIGluaXRfaWRlIChQZWREZXZpY2UqIGRldikKKyAgICAgICAgIGlmICghX2RldmljZV9zdGF0IChkZXYsICZkZXZfc3RhdCkpCisgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgCistICAgICAgICBpZiAoIXBlZF9kZXZpY2Vfb3BlbiAoZGV2KSkKKysgICAgICAgIGlmICghX2RldmljZV9vcGVuX3JvIChkZXYpKQorICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworIAorICAgICAgICAgaWYgKGlvY3RsIChhcmNoX3NwZWNpZmljLT5mZCwgSERJT19HRVRfSURFTlRJVFksICZoZGkpKSB7CitAQCAtOTgyLDExICs5ODQsMTEgQEAgaW5pdF9pZGUgKFBlZERldmljZSogZGV2KQorICAgICAgICAgaWYgKCFfZGV2aWNlX3Byb2JlX2dlb21ldHJ5IChkZXYpKQorICAgICAgICAgICAgICAgICBnb3RvIGVycm9yX2Nsb3NlX2RldjsKKyAKKy0gICAgICAgIHBlZF9kZXZpY2VfY2xvc2UgKGRldik7CisrICAgICAgICBfZGV2aWNlX2Nsb3NlIChkZXYpOworICAgICAgICAgcmV0dXJuIDE7CisgCisgZXJyb3JfY2xvc2VfZGV2OgorLSAgICAgICAgcGVkX2RldmljZV9jbG9zZSAoZGV2KTsKKysgICAgICAgIF9kZXZpY2VfY2xvc2UgKGRldik7CisgZXJyb3I6CisgICAgICAgICByZXR1cm4gMDsKKyB9CitAQCAtMTExOSw3ICsxMTIxLDcgQEAgaW5pdF9zY3NpIChQZWREZXZpY2UqIGRldikKKyAgICAgICAgIGNoYXIqIHZlbmRvcjsKKyAgICAgICAgIGNoYXIqIHByb2R1Y3Q7CisgCistICAgICAgICBpZiAoIXBlZF9kZXZpY2Vfb3BlbiAoZGV2KSkKKysgICAgICAgIGlmICghX2RldmljZV9vcGVuX3JvIChkZXYpKQorICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworIAorICAgICAgICAgaWYgKGlvY3RsIChhcmNoX3NwZWNpZmljLT5mZCwgU0NTSV9JT0NUTF9HRVRfSURMVU4sICZpZGx1bikgPCAwKSB7CitAQCAtMTEzMyw3ICsxMTM1LDcgQEAgaW5pdF9zY3NpIChQZWREZXZpY2UqIGRldikKKyAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yX2Nsb3NlX2RldjsKKyAgICAgICAgICAgICAgICAgaWYgKCFfZGV2aWNlX3Byb2JlX2dlb21ldHJ5IChkZXYpKQorICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JfY2xvc2VfZGV2OworLSAgICAgICAgICAgICAgICBwZWRfZGV2aWNlX2Nsb3NlIChkZXYpOworKyAgICAgICAgICAgICAgICBfZGV2aWNlX2Nsb3NlIChkZXYpOworICAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgIH0KKyAKK0BAIC0xMTU1LDExICsxMTU3LDExIEBAIGluaXRfc2NzaSAoUGVkRGV2aWNlKiBkZXYpCisgICAgICAgICBpZiAoIV9kZXZpY2VfcHJvYmVfZ2VvbWV0cnkgKGRldikpCisgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JfY2xvc2VfZGV2OworIAorLSAgICAgICAgcGVkX2RldmljZV9jbG9zZSAoZGV2KTsKKysgICAgICAgIF9kZXZpY2VfY2xvc2UgKGRldik7CisgICAgICAgICByZXR1cm4gMTsKKyAKKyBlcnJvcl9jbG9zZV9kZXY6CistICAgICAgICBwZWRfZGV2aWNlX2Nsb3NlIChkZXYpOworKyAgICAgICAgX2RldmljZV9jbG9zZSAoZGV2KTsKKyBlcnJvcjoKKyAgICAgICAgIHJldHVybiAwOworIH0KK0BAIC0xMTcxLDcgKzExNzMsNyBAQCBpbml0X2ZpbGUgKFBlZERldmljZSogZGV2KQorIAorICAgICAgICAgaWYgKCFfZGV2aWNlX3N0YXQgKGRldiwgJmRldl9zdGF0KSkKKyAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKy0gICAgICAgIGlmICghcGVkX2RldmljZV9vcGVuIChkZXYpKQorKyAgICAgICAgaWYgKCFfZGV2aWNlX29wZW5fcm8gKGRldikpCisgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgCisgICAgICAgICBkZXYtPnNlY3Rvcl9zaXplID0gUEVEX1NFQ1RPUl9TSVpFX0RFRkFVTFQ7CitAQCAtMTE5OCw3ICsxMjAwLDcgQEAgaW5pdF9maWxlIChQZWREZXZpY2UqIGRldikKKyAgICAgICAgICAgICAgICAgZ290byBlcnJvcl9jbG9zZV9kZXY7CisgICAgICAgICB9CisgCistICAgICAgICBwZWRfZGV2aWNlX2Nsb3NlIChkZXYpOworKyAgICAgICAgX2RldmljZV9jbG9zZSAoZGV2KTsKKyAKKyAgICAgICAgIGRldi0+Ymlvc19nZW9tLmN5bGluZGVycyA9IGRldi0+bGVuZ3RoIC8gNCAvIDMyOworICAgICAgICAgZGV2LT5iaW9zX2dlb20uaGVhZHMgPSA0OworQEAgLTEyMDksNyArMTIxMSw3IEBAIGluaXRfZmlsZSAoUGVkRGV2aWNlKiBkZXYpCisgICAgICAgICByZXR1cm4gMTsKKyAKKyBlcnJvcl9jbG9zZV9kZXY6CistICAgICAgICBwZWRfZGV2aWNlX2Nsb3NlIChkZXYpOworKyAgICAgICAgX2RldmljZV9jbG9zZSAoZGV2KTsKKyBlcnJvcjoKKyAgICAgICAgIHJldHVybiAwOworIH0KK0BAIC0xMjI1LDcgKzEyMjcsNyBAQCBpbml0X2Rhc2QgKFBlZERldmljZSogZGV2LCBjb25zdCBjaGFyKiBtb2RlbF9uYW1lKQorICAgICAgICAgaWYgKCFfZGV2aWNlX3N0YXQgKGRldiwgJmRldl9zdGF0KSkKKyAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAKKy0gICAgICAgIGlmICghcGVkX2RldmljZV9vcGVuIChkZXYpKQorKyAgICAgICAgaWYgKCFfZGV2aWNlX29wZW5fcm8gKGRldikpCisgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgCisgICAgICAgICBMaW51eFNwZWNpZmljKiBhcmNoX3NwZWNpZmljID0gTElOVVhfU1BFQ0lGSUMgKGRldik7CitAQCAtMTI2NSwxMSArMTI2NywxMSBAQCBpbml0X2Rhc2QgKFBlZERldmljZSogZGV2LCBjb25zdCBjaGFyKiBtb2RlbF9uYW1lKQorIAorICAgICAgICAgZGV2LT5tb2RlbCA9IHN0cmR1cCAobW9kZWxfbmFtZSk7CisgCistICAgICAgICBwZWRfZGV2aWNlX2Nsb3NlIChkZXYpOworKyAgICAgICAgX2RldmljZV9jbG9zZSAoZGV2KTsKKyAgICAgICAgIHJldHVybiAxOworIAorIGVycm9yX2Nsb3NlX2RldjoKKy0gICAgICAgIHBlZF9kZXZpY2VfY2xvc2UgKGRldik7CisrICAgICAgICBfZGV2aWNlX2Nsb3NlIChkZXYpOworIGVycm9yOgorICAgICAgICAgcmV0dXJuIDA7CisgfQorQEAgLTEyODQsNyArMTI4Niw3IEBAIGluaXRfZ2VuZXJpYyAoUGVkRGV2aWNlKiBkZXYsIGNvbnN0IGNoYXIqIG1vZGVsX25hbWUpCisgICAgICAgICBpZiAoIV9kZXZpY2Vfc3RhdCAoZGV2LCAmZGV2X3N0YXQpKQorICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworIAorLSAgICAgICAgaWYgKCFwZWRfZGV2aWNlX29wZW4gKGRldikpCisrICAgICAgICBpZiAoIV9kZXZpY2Vfb3Blbl9ybyAoZGV2KSkKKyAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAKKyAgICAgICAgIHBlZF9leGNlcHRpb25fZmV0Y2hfYWxsICgpOworQEAgLTEzMzIsMTEgKzEzMzQsMTEgQEAgaW5pdF9nZW5lcmljIChQZWREZXZpY2UqIGRldiwgY29uc3QgY2hhciogbW9kZWxfbmFtZSkKKyAKKyAgICAgICAgIGRldi0+bW9kZWwgPSBzdHJkdXAgKG1vZGVsX25hbWUpOworIAorLSAgICAgICAgcGVkX2RldmljZV9jbG9zZSAoZGV2KTsKKysgICAgICAgIF9kZXZpY2VfY2xvc2UgKGRldik7CisgICAgICAgICByZXR1cm4gMTsKKyAKKyBlcnJvcl9jbG9zZV9kZXY6CistICAgICAgICBwZWRfZGV2aWNlX2Nsb3NlIChkZXYpOworKyAgICAgICAgX2RldmljZV9jbG9zZSAoZGV2KTsKKyBlcnJvcjoKKyAgICAgICAgIHJldHVybiAwOworIH0KK0BAIC0xNjIzLDEyICsxNjI1LDI3IEBAIHJldHJ5OgorIH0KKyAKKyBzdGF0aWMgaW50CisrX2RldmljZV9vcGVuX3JvIChQZWREZXZpY2UqIGRldikKKyt7CisrICAgIGludCByYyA9IF9kZXZpY2Vfb3BlbiAoZGV2LCBSRF9NT0RFKTsKKysgICAgaWYgKHJjKQorKyAgICAgICAgZGV2LT5vcGVuX2NvdW50Kys7CisrICAgIHJldHVybiByYzsKKyt9CisrCisrc3RhdGljIGludAorIGxpbnV4X29wZW4gKFBlZERldmljZSogZGV2KQorIHsKKysgICAgcmV0dXJuIF9kZXZpY2Vfb3BlbiAoZGV2LCBSV19NT0RFKTsKKyt9CisrCisrc3RhdGljIGludAorK19kZXZpY2Vfb3BlbiAoUGVkRGV2aWNlKiBkZXYsIGludCBmbGFncykKKyt7CisgICAgICAgICBMaW51eFNwZWNpZmljKiAgYXJjaF9zcGVjaWZpYyA9IExJTlVYX1NQRUNJRklDIChkZXYpOworIAorIHJldHJ5OgorLSAgICAgICAgYXJjaF9zcGVjaWZpYy0+ZmQgPSBvcGVuIChkZXYtPnBhdGgsIFJXX01PREUpOworKyAgICAgICAgYXJjaF9zcGVjaWZpYy0+ZmQgPSBvcGVuIChkZXYtPnBhdGgsIGZsYWdzKTsKKyAKKyAgICAgICAgIGlmIChhcmNoX3NwZWNpZmljLT5mZCA9PSAtMSkgeworICAgICAgICAgICAgICAgICBjaGFyKiAgIHJ3X2Vycm9yX21zZyA9IHN0cmVycm9yIChlcnJubyk7CitAQCAtMTY5Nyw2ICsxNzE0LDE1IEBAIGxpbnV4X3JlZnJlc2hfY2xvc2UgKFBlZERldmljZSogZGV2KQorICAgICAgICAgcmV0dXJuIDE7CisgfQorIAorK3N0YXRpYyBpbnQKKytfZGV2aWNlX2Nsb3NlIChQZWREZXZpY2UqIGRldikKKyt7CisrICAgIGludCByYyA9IGxpbnV4X2Nsb3NlIChkZXYpOworKyAgICBpZiAoZGV2LT5vcGVuX2NvdW50ID4gMCkKKysgICAgICAgIGRldi0+b3Blbl9jb3VudC0tOworKyAgICByZXR1cm4gcmM7CisrfQorKworICNpZiBTSVpFT0ZfT0ZGX1QgPCA4CisgCisgI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwyMCkKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL3BhcnRlZF8zLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9wYXJ0ZWRfMy4yLmJiCmluZGV4IDljZTJkZmUuLmFiMzAxMDggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL3BhcnRlZF8zLjIuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvcGFydGVkXzMuMi5iYgpAQCAtMTQsMTYgKzE0LDE3IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUluY2x1ZGUtZmNudGwuaC1pbi1wbGF0Zm9ybV9kZWZzLmgucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAyLWxpYnBhcnRlZF9mc19yZXNpemUtbGluay1hZ2FpbnN0LWxpYnV1aWQtZXhwbGljaXRseS0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Nb3ZlLXB5dGhvbi1oZWxwZXItc2NyaXB0cy11c2VkLW9ubHktaW4tdGVzdHMtdG8tUHl0LnBhdGNoIFwKIAkgICBmaWxlOi8vcGFydGVkLTMuMi1zeXNtYWNyb3MucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKICAgICAgICAgICAgZmlsZTovL01ha2VmaWxlIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbGlicGFydGVkLVVzZS1yZWFkLW9ubHktd2hlbi1wcm9iaW5nLWRldmljZXMtb24tbGludS5wYXRjaCBcCiAiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICIwMjQ3YjZhN2IzMTRmOGVkZWI2MTgxNTlmYTk1ZjljYiIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI4NThiNTg5YzIyMjk3Y2FjZGY0MzdmM2JhZmY2ZjA0YjMzMzA4NzUyMWFiMjc0ZjdhYjY3N2NiOGM2YmI3OGU0IgogCiBFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWRldmljZS1tYXBwZXIiCi1MREZMQUdTX2FwcGVuZF9saWJjLXVjbGliYyA9ICIgLWxpY29udiAiCiAKIGluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IHRleGluZm8gcHRlc3QKIApAQCAtNDYsNCArNDcsNCBAQAogCXNlZCAtZSAnc3wgLi4vcGFydGVkfHwnIC1pICR0L3Rlc3RzLyouc2gKIH0KIAotUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiYmFzaCBjb3JldXRpbHMgcGVybCB1dGlsLWxpbnV4LWxvc2V0dXAgcHl0aG9uIgorUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiYmFzaCBjb3JldXRpbHMgcGVybCB1dGlsLWxpbnV4LWxvc2V0dXAgcHl0aG9uMyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGF4L3BheC8wMDAxLUFkZC1hLWNvbW1lbnQtZm9yLWZhbGx0aHJvdWdoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4LzAwMDEtQWRkLWEtY29tbWVudC1mb3ItZmFsbHRocm91Z2gucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjc2Zjg1YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGF4L3BheC8wMDAxLUFkZC1hLWNvbW1lbnQtZm9yLWZhbGx0aHJvdWdoLnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK0Zyb20gZTY3YmIzZGViZTU4MmYwZTc3NzcwYjcxNGJkMDEyYmIxMDgyZmM0MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE5IEFwciAyMDE3IDExOjMyOjAwIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIEFkZCBhIGNvbW1lbnQgZm9yIGZhbGx0aHJvdWdoCisKK0ZpeGVzIHdhcm5pbmdzIHdpdGggZ2NjNyBlLmcuCisKKy4uLy4uLy4uLy4uLy4uLy4uLy4uL3dvcmtzcGFjZS9zb3VyY2VzL3BheC9zcmMvb3B0aW9ucy5jOiBJbiBmdW5jdGlvbiAndGFyX29wdGlvbnMnOgorLi4vLi4vLi4vLi4vLi4vLi4vLi4vd29ya3NwYWNlL3NvdXJjZXMvcGF4L3NyYy9vcHRpb25zLmM6NzI1Ojc6IGVycm9yOiB0aGlzIHN0YXRlbWVudCBtYXkgZmFsbCB0aHJvdWdoIFstV2Vycm9yPWltcGxpY2l0LWZhbGx0aHJvdWdoPV0KKyAgICBpZiAob3B0X2FkZCAoIndyaXRlX29wdD1ub2RpciIpIDwgMCkKKyAgICAgICBeCisuLi8uLi8uLi8uLi8uLi8uLi8uLi93b3Jrc3BhY2Uvc291cmNlcy9wYXgvc3JjL29wdGlvbnMuYzo3MzA6Mjogbm90ZTogaGVyZQorICBjYXNlICdPJzoKKyAgXn5+fgorY2MxOiBhbGwgd2FybmluZ3MgYmVpbmcgdHJlYXRlZCBhcyBlcnJvcnMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMvb3B0aW9ucy5jIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9zcmMvb3B0aW9ucy5jIGIvc3JjL29wdGlvbnMuYworaW5kZXggYzY2M2I0ZS4uYjgwODE5YSAxMDA2NDQKKy0tLSBhL3NyYy9vcHRpb25zLmMKKysrKyBiL3NyYy9vcHRpb25zLmMKK0BAIC03MjQsNiArNzI0LDcgQEAgdGFyX29wdGlvbnMgKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAJY2FzZSAnbyc6CisgCSAgaWYgKG9wdF9hZGQgKCJ3cml0ZV9vcHQ9bm9kaXIiKSA8IDApCisgCSAgICB0YXJfdXNhZ2UgKCk7CisrCSAgLyogZmFsbHRocnUgKi8KKyAJY2FzZSAnTyc6CisgCSAgT2ZsYWcgPSAxOworIAkgIGJyZWFrOworLS0gCisyLjEyLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4XzMuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGF4L3BheF8zLjQuYmIKaW5kZXggOWI0ZTE3Yi4uNmRmOWE4MSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXgvcGF4XzMuNC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BheC9wYXhfMy40LmJiCkBAIC0xNSwxMCArMTUsMTEgQEAKIERFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZnRzICIKIAogU1JDX1VSSSA9ICJodHRwOi8vcGtncy5mZWRvcmFwcm9qZWN0Lm9yZy9yZXBvL3BrZ3MvJHtCUE59LyR7QlB9LnRhci5iejIvZmJkOTAyM2I1OTBiNDVhYzNhZGU5NTg3MDcwMmEwZDYvJHtCUH0udGFyLmJ6MiBcCi0JZmlsZTovL2ZpeF9mb3JfY29tcGlsZV93aXRoX2djYy00LjYuMC5wYXRjaCBcCi0JZmlsZTovL3BheC0zLjRfZml4X2Zvcl94MzIucGF0Y2ggXAotICAgICAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLXN5cy1zeXNtYWNyb3MuaC1mb3ItbWFqb3ItbWlub3ItZGVmaW5pdGlvbnMucGF0Y2ggXAotIgorICAgICAgICAgICBmaWxlOi8vZml4X2Zvcl9jb21waWxlX3dpdGhfZ2NjLTQuNi4wLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3BheC0zLjRfZml4X2Zvcl94MzIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLXN5cy1zeXNtYWNyb3MuaC1mb3ItbWFqb3ItbWlub3ItZGVmaW5pdGlvbnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtYS1jb21tZW50LWZvci1mYWxsdGhyb3VnaC5wYXRjaCBcCisgICAgICAgICAgICIKIAogU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovLzAwMDEtdXNlLXN0cnRvbGwtaW5zdGVhZC1vZi1zdHJ0b3EucGF0Y2ggXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnRpbWVkYXRlLXBlcmxfMi4zMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJ0aW1lZGF0ZS1wZXJsXzIuMzAuYmIKaW5kZXggYzhmY2RlNC4uNDI3NjEzYyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnRpbWVkYXRlLXBlcmxfMi4zMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGlidGltZWRhdGUtcGVybF8yLjMwLmJiCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJQZXJsIG1vZHVsZXMgdXNlZnVsIGZvciBtYW5pcHVsYXRpbmcgZGF0ZSBhbmQgdGltZSBpbmZvcm1hdGlvbiIKK0hPTUVQQUdFID0gImh0dHBzOi8vbWV0YWNwYW4ub3JnL3JlbGVhc2UvVGltZURhdGUiCiBTRUNUSU9OID0gImxpYnMiCiAjIFlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHNhbWUgdGVybXMgYXMgUGVybCBpdHNlbGYuCiBMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnhtbC1uYW1lc3BhY2VzdXBwb3J0LXBlcmxfMS4xMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJ4bWwtbmFtZXNwYWNlc3VwcG9ydC1wZXJsXzEuMTEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhOWU3MTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnhtbC1uYW1lc3BhY2VzdXBwb3J0LXBlcmxfMS4xMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLVNVTU1BUlkgPSAiUGVybCBtb2R1bGUgZm9yIHN1cHBvcnRpbmcgc2ltcGxlIGdlbmVyaWMgbmFtZXNwYWNlcyIKLURFU0NSSVBUSU9OID0gIlhNTDo6TmFtZXNwYWNlU3VwcG9ydCBvZmZlcnMgYSBzaW1wbGUgd2F5IHRvIHByb2Nlc3MgbmFtZXNwYWNlLWJhc2VkIFhNTCBuYW1lcy4gXAotICAgICAgICAgICAgICAgIEl0IGFsc28gaGVscHMgbWFpbnRhaW4gYSBwcmVmaXgtdG8tbmFtZXNwYWNlIFVSSSBtYXAsIGFuZCBwcm92aWRlcyBhIG51bWJlciBvZiBcCi0gICAgICAgICAgICAgICAgYmFzaWMgY2hlY2tzLiAiCi0KLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCi1QUiA9ICJyMyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTUVUQS55bWw7YmVnaW5saW5lPTIyO2VuZGxpbmU9MjI7bWQ1PTNiMmI1NjRkYWU4YjlhZjllODg5NmU4NWMwN2RjYmU1IgotCi1TUkNfVVJJID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvQ1BBTi9hdXRob3JzL2lkL1AvUEUvUEVSSUdSSU4vWE1MLU5hbWVzcGFjZVN1cHBvcnQtJHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gIjIyMmNjYTc2MTYxY2Q5NTZkNzI0Mjg2ZDM2YjYwN2RhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZkODE1MWYwYTNmMTAyMzEzZDc2YjY0YmZkMWMyZDllZDQ2YmZlNjNhMTZmMDM4ZTdkODYwZmRhMjg3Yjc0ZWEiCi0KLQotUyA9ICIke1dPUktESVJ9L1hNTC1OYW1lc3BhY2VTdXBwb3J0LSR7UFZ9IgotCi1pbmhlcml0IGNwYW4KLQotQkJDTEFTU0VYVEVORD0ibmF0aXZlIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGlieG1sLW5hbWVzcGFjZXN1cHBvcnQtcGVybF8xLjEyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnhtbC1uYW1lc3BhY2VzdXBwb3J0LXBlcmxfMS4xMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDk4YTI4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnhtbC1uYW1lc3BhY2VzdXBwb3J0LXBlcmxfMS4xMi5iYgpAQCAtMCwwICsxLDIzIEBACitTVU1NQVJZID0gIlBlcmwgbW9kdWxlIGZvciBzdXBwb3J0aW5nIHNpbXBsZSBnZW5lcmljIG5hbWVzcGFjZXMiCitIT01FUEFHRSA9ICJodHRwOi8vdmVpbGxhcmQuY29tL1hNTC8iCitERVNDUklQVElPTiA9ICJYTUw6Ok5hbWVzcGFjZVN1cHBvcnQgb2ZmZXJzIGEgc2ltcGxlIHdheSB0byBwcm9jZXNzIG5hbWVzcGFjZS1iYXNlZCBYTUwgbmFtZXMuIFwKKyAgICAgICAgICAgICAgICBJdCBhbHNvIGhlbHBzIG1haW50YWluIGEgcHJlZml4LXRvLW5hbWVzcGFjZSBVUkkgbWFwLCBhbmQgcHJvdmlkZXMgYSBudW1iZXIgb2YgXAorICAgICAgICAgICAgICAgIGJhc2ljIGNoZWNrcy4gIgorCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgorUFIgPSAicjMiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL01FVEEueW1sO2JlZ2lubGluZT0yMjtlbmRsaW5lPTIyO21kNT05Y2ExYTRhOTQxNDk2ZTdmZWVkYWM3MmM0ZmI4YjEzNyIKKworU1JDX1VSSSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL0NQQU4vYXV0aG9ycy9pZC9QL1BFL1BFUklHUklOL1hNTC1OYW1lc3BhY2VTdXBwb3J0LSR7UFZ9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJhODkxNmM2ZDA5NWJjZjA3M2UxMTA4YWYwMmU3OGM5NyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0N2U5OTU4NTlmOGRkMDQxM2FhM2YyMmQzNTBjNGE2MmRhNjUyZTg1NDI2N2FhMDU4NmFlNTQ0YWUyYmFlNWVmIgorCisKK1MgPSAiJHtXT1JLRElSfS9YTUwtTmFtZXNwYWNlU3VwcG9ydC0ke1BWfSIKKworaW5oZXJpdCBjcGFuCisKK0JCQ0xBU1NFWFRFTkQ9Im5hdGl2ZSIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnhtbC1zYXgtYmFzZS1wZXJsXzEuMDguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGlieG1sLXNheC1iYXNlLXBlcmxfMS4wOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTRhMzM3MC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGlieG1sLXNheC1iYXNlLXBlcmxfMS4wOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLVNVTU1BUlkgPSAiQmFzZSBjbGFzcyBTQVggRHJpdmVycyBhbmQgRmlsdGVycyIKLURFU0NSSVBUSU9OID0gIlRoaXMgbW9kdWxlIGhhcyBhIHZlcnkgc2ltcGxlIHRhc2sgLSB0byBiZSBhIGJhc2UgY2xhc3MgZm9yIFwKLVBlcmxTQVggZHJpdmVycyBhbmQgZmlsdGVycy4gSXQncyBkZWZhdWx0IGJlaGF2aW91ciBpcyB0byBwYXNzIFwKLXRoZSBpbnB1dCBkaXJlY3RseSB0byB0aGUgb3V0cHV0IHVuY2hhbmdlZC4gSXQgY2FuIGJlIHVzZWZ1bCB0byBcCi11c2UgdGhpcyBtb2R1bGUgYXMgYSBiYXNlIGNsYXNzIHNvIHlvdSBkb24ndCBoYXZlIHRvLCBmb3IgZXhhbXBsZSwgXAotaW1wbGVtZW50IHRoZSBjaGFyYWN0ZXJzKCkgY2FsbGJhY2suIgotCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgotUkRFUEVORFNfJHtQTn0gKz0gInBlcmwtbW9kdWxlLWV4dHV0aWxzLW1ha2VtYWtlciIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZGlzdC5pbmk7ZW5kbGluZT01O21kNT04ZjljOWE1NTM0MGFlZmFlZTZlOTcwNGM4ODQ2NjQ0NiIKLQotU1JDX1VSSSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL0NQQU4vYXV0aG9ycy9pZC9HL0dSL0dSQU5UTS9YTUwtU0FYLUJhc2UtJHtQVn0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMzhjOGMzMjQ3ZGZkMDgwNzEyNTk2MTE4ZDcwZGJlMzIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjY2MjcwMzE4YjE1Zjg4Yjg0MjdlNTg1MTk4YWJiYzE5YmMyZTZjY2IzNmRjNGMwYTRmMmQ5ODA3MzMwMjE5ZSIKLQotUyA9ICIke1dPUktESVJ9L1hNTC1TQVgtQmFzZS0ke1BWfSIKLQotaW5oZXJpdCBjcGFuCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnhtbC1zYXgtYmFzZS1wZXJsXzEuMDkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGlieG1sLXNheC1iYXNlLXBlcmxfMS4wOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDNhNTgwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnhtbC1zYXgtYmFzZS1wZXJsXzEuMDkuYmIKQEAgLTAsMCArMSwyNCBAQAorU1VNTUFSWSA9ICJCYXNlIGNsYXNzIFNBWCBEcml2ZXJzIGFuZCBGaWx0ZXJzIgorSE9NRVBBR0UgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9kaXN0L1hNTC1TQVgtQmFzZS8iCitERVNDUklQVElPTiA9ICJUaGlzIG1vZHVsZSBoYXMgYSB2ZXJ5IHNpbXBsZSB0YXNrIC0gdG8gYmUgYSBiYXNlIGNsYXNzIGZvciBcCitQZXJsU0FYIGRyaXZlcnMgYW5kIGZpbHRlcnMuIEl0J3MgZGVmYXVsdCBiZWhhdmlvdXIgaXMgdG8gcGFzcyBcCit0aGUgaW5wdXQgZGlyZWN0bHkgdG8gdGhlIG91dHB1dCB1bmNoYW5nZWQuIEl0IGNhbiBiZSB1c2VmdWwgdG8gXAordXNlIHRoaXMgbW9kdWxlIGFzIGEgYmFzZSBjbGFzcyBzbyB5b3UgZG9uJ3QgaGF2ZSB0bywgZm9yIGV4YW1wbGUsIFwKK2ltcGxlbWVudCB0aGUgY2hhcmFjdGVycygpIGNhbGxiYWNrLiIKKworU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKK1JERVBFTkRTXyR7UE59ICs9ICJwZXJsLW1vZHVsZS1leHR1dGlscy1tYWtlbWFrZXIiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2Rpc3QuaW5pO2VuZGxpbmU9NTttZDU9OGY5YzlhNTUzNDBhZWZhZWU2ZTk3MDRjODg0NjY0NDYiCisKK1NSQ19VUkkgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9DUEFOL2F1dGhvcnMvaWQvRy9HUi9HUkFOVE0vWE1MLVNBWC1CYXNlLSR7UFZ9LnRhci5neiIKKworU1JDX1VSSVttZDVzdW1dID0gImVjMzQ3YTE0MDY1ZGQ3YWVjN2Q5ZmIxODFiMmQ3OTQ2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY2Y2IzNTViYTRlZjQ3YzEwY2E3MzhiZDM1OTk5NzIzNjQ0Mzg2YWM4NTNhYmJlYjUxMzI4NDFmNWU4YTJhZDAiCisKK1MgPSAiJHtXT1JLRElSfS9YTUwtU0FYLUJhc2UtJHtQVn0iCisKK2luaGVyaXQgY3BhbgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJ4bWwtc2F4LXBlcmxfMC45OS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGVybC9saWJ4bWwtc2F4LXBlcmxfMC45OS5iYgppbmRleCA0NWQzOTY2Li5hZDMxYjljIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BlcmwvbGlieG1sLXNheC1wZXJsXzAuOTkuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wZXJsL2xpYnhtbC1zYXgtcGVybF8wLjk5LmJiCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJQZXJsIG1vZHVsZSBmb3IgdXNpbmcgYW5kIGJ1aWxkaW5nIFBlcmwgU0FYMiBYTUwgcHJvY2Vzc29ycyIKK0hPTUVQQUdFID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvZGlzdC9YTUwtU0FYLyIKIERFU0NSSVBUSU9OID0gIlhNTDo6U0FYIGNvbnNpc3RzIG9mIHNldmVyYWwgZnJhbWV3b3JrIGNsYXNzZXMgZm9yIHVzaW5nIGFuZCBcCiBidWlsZGluZyBQZXJsIFNBWDIgWE1MIHBhcnNlcnMsIGZpbHRlcnMsIGFuZCBkcml2ZXJzLiAgSXQgaXMgZGVzaWduZWQgXCAKIGFyb3VuZCB0aGUgbmVlZCB0byBiZSBhYmxlIHRvICJwbHVnIGluIiBkaWZmZXJlbnQgU0FYIHBhcnNlcnMgdG8gYW4gXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHNtaXNjL3BzbWlzYy5pbmMKaW5kZXggMjJiMmU4NS4uNjZhNzg0YiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BzbWlzYy9wc21pc2MuaW5jCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJVdGlsaXRpZXMgZm9yIG1hbmFnaW5nIHByb2Nlc3NlcyBvbiB5b3VyIHN5c3RlbSIKK0hPTUVQQUdFID0gImh0dHA6Ly9wc21pc2Muc2YubmV0LyIKIERFU0NSSVBUSU9OID0gIlRoZSBwc21pc2MgcGFja2FnZSBjb250YWlucyB1dGlsaXRpZXMgZm9yIG1hbmFnaW5nIHByb2Nlc3NlcyBvbiB5b3VyIFwKIHN5c3RlbTogcHN0cmVlLCBraWxsYWxsIGFuZCBmdXNlci4gIFRoZSBwc3RyZWUgY29tbWFuZCBkaXNwbGF5cyBhIHRyZWUgXAogc3RydWN0dXJlIG9mIGFsbCBvZiB0aGUgcnVubmluZyBwcm9jZXNzZXMgb24geW91ciBzeXN0ZW0uICBUaGUga2lsbGFsbCBcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZC9tdXNsLXN1bnJwYy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kL211c2wtc3VucnBjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZmJjNjM2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kL211c2wtc3VucnBjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotVGhlIG11c2wgaW1wbGVtZW50YXRpb24gb2YgZ2V0YWRkcmluZm8gYW5kIGdldHNlcnZieW5hbWUgZG9lcyBub3QKLWFsaWFzZXMuIEFzIGEgd29ya2Fyb3VuZCB3ZSB1c2UgInN1bnByYyIgaW5zdGVhZCBvZiAicG9ydG1hcHBlciIKLQotcG9ydGVkIGZyb20gYWxwaW5lIGxpbnV4Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotSW5kZXg6IHJwY2JpbmQtMC4yLjIvc3JjL3JwY2JpbmQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHJwY2JpbmQtMC4yLjIub3JpZy9zcmMvcnBjYmluZC5jCi0rKysgcnBjYmluZC0wLjIuMi9zcmMvcnBjYmluZC5jCi1AQCAtNDkxLDcgKzQ5MSw3IEBAIGluaXRfdHJhbnNwb3J0KHN0cnVjdCBuZXRjb25maWcgKm5jb25mKQotIAkJCWlmICgoYWljb2RlID0gZ2V0YWRkcmluZm8oaG9zdHNbbmhvc3RzYmFrXSwKLSAJCQkgICAgc2Vydm5hbWUsICZoaW50cywgJnJlcykpICE9IDApIHsKLSAJCQkgIGlmICgoYWljb2RlID0gZ2V0YWRkcmluZm8oaG9zdHNbbmhvc3RzYmFrXSwKLS0JCQkJCQkgICAgInBvcnRtYXBwZXIiLCAmaGludHMsICZyZXMpKSAhPSAwKSB7Ci0rCQkJCQkJICAgICJzdW5ycGMiLCAmaGludHMsICZyZXMpKSAhPSAwKSB7Ci0gCQkJCXN5c2xvZyhMT0dfRVJSLAotIAkJCQkgICAgImNhbm5vdCBnZXQgbG9jYWwgYWRkcmVzcyBmb3IgJXM6ICVzIiwKLSAJCQkJICAgIG5jb25mLT5uY19uZXRpZCwgZ2FpX3N0cmVycm9yKGFpY29kZSkpOwotQEAgLTU2NCw3ICs1NjQsNyBAQCBpbml0X3RyYW5zcG9ydChzdHJ1Y3QgbmV0Y29uZmlnICpuY29uZikKLSAJCWlmICgoc3RyY21wKG5jb25mLT5uY19uZXRpZCwgImxvY2FsIikgIT0gMCkgJiYKLSAJCSAgICAoc3RyY21wKG5jb25mLT5uY19uZXRpZCwgInVuaXgiKSAhPSAwKSkgewotIAkJCWlmICgoYWljb2RlID0gZ2V0YWRkcmluZm8oTlVMTCwgc2Vydm5hbWUsICZoaW50cywgJnJlcykpIT0gMCkgewotLQkJCSAgaWYgKChhaWNvZGUgPSBnZXRhZGRyaW5mbyhOVUxMLCAicG9ydG1hcHBlciIsICZoaW50cywgJnJlcykpIT0gMCkgewotKwkJCSAgaWYgKChhaWNvZGUgPSBnZXRhZGRyaW5mbyhOVUxMLCAic3VucnBjIiwgJmhpbnRzLCAmcmVzKSkhPSAwKSB7Ci0gCQkJICBwcmludGYoImNhbm5vdCBnZXQgbG9jYWwgYWRkcmVzcyBmb3IgJXM6ICVzIiwgIG5jb25mLT5uY19uZXRpZCwgZ2FpX3N0cmVycm9yKGFpY29kZSkpOwotIAkJCSAgc3lzbG9nKExPR19FUlIsCi0gCQkJCSAgICAiY2Fubm90IGdldCBsb2NhbCBhZGRyZXNzIGZvciAlczogJXMiLApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmQvcmVtb3ZlLXN5cy1xdWV1ZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kL3JlbW92ZS1zeXMtcXVldWUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0ZmM5NzQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmQvcmVtb3ZlLXN5cy1xdWV1ZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLW11c2wgZG9lcyBub3QgcHJvdmlkZSB0aGlzIGhlYWRlciBhbmQgaGVyZSBpcyByZWFzb25pbmcKLWh0dHA6Ly93aWtpLm11c2wtbGliYy5vcmcvd2lraS9GQVEjUTpfd2h5X2lzX3N5cy4yRnF1ZXVlLmhfbm90X2luY2x1ZGVkXy4zRgotCi1TbyBpbmNsdWRlIGl0IG9ubHkgd2hlbiBfX0dMSUJDX18gaXMgZGVmaW5lZCB3aGljaCBpcyB0cnVlIGZvciB1Y2xpYmMgYW5kIGdsaWJjCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotSW5kZXg6IHJwY2JpbmQtMC4yLjIvc3JjL3V0aWwuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHJwY2JpbmQtMC4yLjIub3JpZy9zcmMvdXRpbC5jCi0rKysgcnBjYmluZC0wLjIuMi9zcmMvdXRpbC5jCi1AQCAtNDEsNyArNDEsOSBAQAotIAotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotKyNpZmRlZiBfX0dMSUJDX18KLSAjaW5jbHVkZSA8c3lzL3F1ZXVlLmg+Ci0rI2VuZGlmCi0gI2luY2x1ZGUgPG5ldC9pZi5oPgotICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0gI2luY2x1ZGUgPGlmYWRkcnMuaD4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kXzAuMi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmRfMC4yLjQuYmIKaW5kZXggMWExMjA1NS4uNjBlNDZlZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmRfMC4yLjQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmRfMC4yLjQuYmIKQEAgLTEyLDE5ICsxMiwxMSBAQAogCiBTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9ycGNiaW5kL3JwY2JpbmQtJHtQVn0udGFyLmJ6MiBcCiAgICAgICAgICAgIGZpbGU6Ly9pbml0LmQgXAotICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLXN5cy1xdWV1ZS5wYXRjaCBcCi0gICAgICAgICAgICR7VUNMSUJDUEFUQ0hFU30gXAotICAgICAgICAgICAke01VU0xQQVRDSEVTfSBcCiAgICAgICAgICAgIGZpbGU6Ly9ycGNiaW5kLmNvbmYgXAogICAgICAgICAgICBmaWxlOi8vcnBjYmluZC5zb2NrZXQgXAogICAgICAgICAgICBmaWxlOi8vcnBjYmluZC5zZXJ2aWNlIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtcnBjYmluZC1wYWlyLWFsbC1zdmNfZ2V0YXJncy1jYWxscy13aXRoLXN2Y19mcmVlYXJncy5wYXRjaCBcCiAgICAgICAgICAgIgotTVVTTFBBVENIRVNfbGliYy1tdXNsID0gImZpbGU6Ly9tdXNsLXN1bnJwYy5wYXRjaCIKLQotVUNMSUJDUEFUQ0hFUyA/PSAiIgotTVVTTFBBVENIRVMgPz0gIiIKLQogU1JDX1VSSVttZDVzdW1dID0gImNmMTBjZDQxZWQ4MjI4ZmM1NGMzMTYxOTFjMWYwN2ZlIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA3NGE5YTUzMGRjN2MxMWUwZDkwNWFhNTliY2IwODQ3YzAwOTMxM2YwMmU5OGQzZDc5OGFhOTU2OGY0MTRjNjYiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbi8wMDAxLWNvbmZpZ3VyZS5hYy1maXgtY29uZmlndXJlLWZhaWxlZC13aGlsZS1idWlsZC1kaXItaGEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW4vMDAwMS1jb25maWd1cmUuYWMtZml4LWNvbmZpZ3VyZS1mYWlsZWQtd2hpbGUtYnVpbGQtZGlyLWhhLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4ZGIxMmMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW4vMDAwMS1jb25maWd1cmUuYWMtZml4LWNvbmZpZ3VyZS1mYWlsZWQtd2hpbGUtYnVpbGQtZGlyLWhhLnBhdGNoCkBAIC0wLDAgKzEsMTA4IEBACitGcm9tIDRiMjU4YzVhOTA3OGY4ZGY2MDY4NGFiNzUzNmNlM2E4ZmYyMDdlMDggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDEyIE9jdCAyMDE3IDEwOjAzOjU3ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZS5hYzogZml4IGNvbmZpZ3VyZSBmYWlsZWQgd2hpbGUgYnVpbGQgZGlyIGNvbnRhaW5zICJ5ZXMiCisKK1doaWxlIHRoZSBuYW1lIG9mIGJ1aWxkIGRpciBjb250YWlucyAieWVzIiwgdGhlIEFDX0VHUkVQX0NQUAordGVzdCBhbHdheXMgcmV0dXJuIHRydWUuCisKK1dlIHJhcmVseSB1c2UgInllczsiIHRvIG5hbWUgYnVpbGQgZGlyLCBzbyBzL3llcy95ZXM7L2cKK2NvdWxkIGZpeCB0aGUgaXNzdWUKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEppYW4gS2FuZyA8amlhbi5rYW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCAyMCArKysrKysrKysrLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggMTI5OTZjZC4uNDc2NWFmNiAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMTI4LDcgKzEyOCw3IEBAIGZpCisgCisgCisgQUNfQ0hFQ0tJTkcoZm9yIFVsdHJpeCkKKy1BQ19FR1JFUF9DUFAoeWVzLAorK0FDX0VHUkVQX0NQUCh5ZXM7LAorIFsjaWYgZGVmaW5lZCh1bHRyaXgpIHx8IGRlZmluZWQoX191bHRyaXgpCisgICAgeWVzOworICNlbmRpZgorQEAgLTE0NSw3ICsxNDUsNyBAQCBkbmwgZ2hhemlAY2FpcC5ydXRnZXJzLmVkdSAoS2F2ZWggUi4gR2hhemkpOgorIGRubCBCQk4gYnV0dGVyZmx5IGlzIG5vdCBQT1NJWCwgYnV0IGEgTUFDSCBCU0Qgc3lzdGVtLgorIGRubCBEbyBub3QgZGVmaW5lIFBPU0lYIGFuZCBURVJNSU8uCisgQUNfQ0hFQ0tJTkcoZm9yIGJ1dHRlcmZseSkKKy1BQ19FR1JFUF9DUFAoeWVzLAorK0FDX0VHUkVQX0NQUCh5ZXM7LAorIFsjaWYgZGVmaW5lZChidXR0ZXJmbHkpCisgICB5ZXM7CisgI2VuZGlmCitAQCAtMTU2LDcgKzE1Niw3IEBAIGlmIHRlc3QgLW4gIiRVTFRSSVgiOyB0aGVuCisgICB0ZXN0IC16ICIkR0NDIiAmJiBDQz0iJENDIC1ZQlNEIgorIGZpCisgQUNfQ0hFQ0tJTkcoZm9yIFBPU0lYLjEpCistQUNfRUdSRVBfQ1BQKHllcywKKytBQ19FR1JFUF9DUFAoeWVzOywKKyBbI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICNpbmNsdWRlIDx1bmlzdGQuaD4KKyBtYWluICgpIHsKK0BAIC0xNzMsMTQgKzE3MywxNCBAQCBBQ19UUllfQ09NUElMRSgKKyAjaW5jbHVkZSA8ZmNudGwuaD5dLCBbaW50IHggPSBTSUdDSExEIHwgRk5ERUxBWTtdLCAsIEFDX0RFRklORShTWVNWKSkKKyAKKyBBQ19DSEVDS0lORyhmb3Igc2VxdWVudC9wdHgpCistQUNfRUdSRVBfQ1BQKHllcywKKytBQ19FR1JFUF9DUFAoeWVzOywKKyBbI2lmZGVmIF9TRVFVRU5UXworICAgeWVzOworICNlbmRpZgorIF0sIExJQlM9IiRMSUJTIC1sc29ja2V0IC1saW5ldCI7c2VxcHR4PTEpCisgCisgQUNfQ0hFQ0tJTkcoU1ZSNCkKKy1BQ19FR1JFUF9DUFAoeWVzLAorK0FDX0VHUkVQX0NQUCh5ZXM7LAorIFttYWluICgpIHsKKyAjaWYgZGVmaW5lZChTVlI0KSB8fCBkZWZpbmVkKF9fU1ZSNCkKKyAgIHllczsKK0BAIC0yMDAsOSArMjAwLDkgQEAgZmkKKyBBQ19DSEVDS19IRUFERVJTKFtzdHJvcHRzLmggc3RyaW5nLmggc3RyaW5ncy5oXSkKKyAKKyBBQ19DSEVDS0lORyhmb3IgU29sYXJpcyAyLngpCistQUNfRUdSRVBfQ1BQKHllcywKKytBQ19FR1JFUF9DUFAoeWVzOywKKyBbI2lmIGRlZmluZWQoU1ZSNCkgJiYgZGVmaW5lZChzdW4pCistICB5ZXMKKysgIHllczsKKyAjZW5kaWYKKyBdLCBMSUJTPSIkTElCUyAtbHNvY2tldCAtbG5zbCAtbGtzdGF0IikKKyAKK0BAIC02OTcsNyArNjk3LDcgQEAgZWxzZQorIHBkaXI9Jy9kZXYnCisgZmkKKyBkbmwgU0NPIHVzZXMgcHR5cCVkCistQUNfRUdSRVBfQ1BQKHllcywKKytBQ19FR1JFUF9DUFAoeWVzOywKKyBbI2lmZGVmIE1fVU5JWAorICAgIHllczsKKyAjZW5kaWYKK0BAIC04ODAsNyArODgwLDcgQEAgZmkKKyApCisgCisgaWYgdGVzdCAteiAiJGxvYWQiIDsgdGhlbgorLUFDX0VHUkVQX0NQUCh5ZXMsCisrQUNfRUdSRVBfQ1BQKHllczssCisgWyNpZiBkZWZpbmVkKE5lWFQpIHx8IGRlZmluZWQoYXBvbGxvKSB8fCBkZWZpbmVkKGxpbnV4KQorICAgeWVzOworICNlbmRpZgorQEAgLTExMTIsNyArMTExMiw3IEBAIEFDX0NIRUNLSU5HKHN5c2xvZyBpbiBsaWJic2QuYSkKKyBBQ19UUllfTElOSygsIFtjbG9zZWxvZygpO10sIEFDX05PVEUoLSBmb3VuZC4pLCBbTElCUz0iJG9sZGxpYnMiCisgQUNfTk9URSgtIGJhZCBuZXdzOiBzeXNsb2cgbWlzc2luZy4pIEFDX0RFRklORShOT1NZU0xPRyldKV0pCisgCistQUNfRUdSRVBfQ1BQKHllcywKKytBQ19FR1JFUF9DUFAoeWVzOywKKyBbI2lmZGVmIE1fVU5JWAorICAgIHllczsKKyAjZW5kaWYKKy0tIAorMi4xMy4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbi9maXgtcGFyYWxsZWwtbWFrZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbi9maXgtcGFyYWxsZWwtbWFrZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTBjYWY1ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW4vZml4LXBhcmFsbGVsLW1ha2UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1UaGlzIGZpeGVzIHRoZSBwYXJhbGxlbCBtYWtlIGluc3RhbGwgZmFpbHVyZQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogU2F1bCBXb2xkIDxzZ3dAbGludXguaW50ZWwuY29tPgotCi1JbmRleDogc2NyZWVuLTQuMC4zL01ha2VmaWxlLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gc2NyZWVuLTQuMC4zLm9yaWcvTWFrZWZpbGUuaW4KLSsrKyBzY3JlZW4tNC4wLjMvTWFrZWZpbGUuaW4KLUBAIC03MCw3ICs3MCw3IEBAIHNjcmVlbjogJChPRklMRVMpCi0gLmMubzoKLSAJJChDQykgLWMgLUkuIC1JJChzcmNkaXIpICQoTV9DRkxBR1MpICQoREVGUykgJChPUFRJT05TKSAkKENGTEFHUykgJDwKLSAKLS1pbnN0YWxsX2JpbjogLnZlcnNpb24gc2NyZWVuCi0raW5zdGFsbF9iaW46IC52ZXJzaW9uIHNjcmVlbiBpbnN0YWxsZGlycwotIAktaWYgWyAtZiAkKERFU1RESVIpJChiaW5kaXIpLyQoU0NSRUVOKSBdICYmIFsgISAtZiAkKERFU1RESVIpJChiaW5kaXIpLyQoU0NSRUVOKS5vbGQgXTsgXAotIAkJdGhlbiBtdiAkKERFU1RESVIpJChiaW5kaXIpLyQoU0NSRUVOKSAkKERFU1RESVIpJChiaW5kaXIpLyQoU0NSRUVOKS5vbGQ7IGZpCi0gCSQoSU5TVEFMTF9QUk9HUkFNKSBzY3JlZW4gJChERVNURElSKSQoYmluZGlyKS8kKFNDUkVFTikKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbl80LjUuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbl80LjUuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzJjMWE1YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW5fNC41LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi1TVU1NQVJZID0gIk11bHRpcGxleGluZyB0ZXJtaW5hbCBtYW5hZ2VyIgotREVTQ1JJUFRJT04gPSAiU2NyZWVuIGlzIGEgZnVsbC1zY3JlZW4gd2luZG93IG1hbmFnZXIgXAotdGhhdCBtdWx0aXBsZXhlcyBhIHBoeXNpY2FsIHRlcm1pbmFsIGJldHdlZW4gc2V2ZXJhbCBcCi1wcm9jZXNzZXMsIHR5cGljYWxseSBpbnRlcmFjdGl2ZSBzaGVsbHMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL3NjcmVlbi8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vc2F2YW5uYWguZ251Lm9yZy9idWdzLz9mdW5jPWFkZGl0ZW0mZ3JvdXA9c2NyZWVuIgotCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi0KLUxJQ0VOU0UgPSAiR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc2NyZWVuLmg7ZW5kbGluZT0yNjttZDU9Mzk3MTE0Mjk4OTI4OWE4MTk4YTU0NDIyMDcwM2MyYmYiCi0KLURFUEVORFMgPSAibmN1cnNlcyBcCi0gICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlicGFtJywgJycsIGQpfSIKLVJERVBFTkRTXyR7UE59ID0gImJhc2UtZmlsZXMiCi0KLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9zY3JlZW4vc2NyZWVuLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtcGFyYWxsZWwtbWFrZS5wYXRjaCBcCi0gICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2ZpbGU6Ly9zY3JlZW4ucGFtJywgJycsIGQpfSBcCi0gICAgICAgICAgIGZpbGU6Ly9SZW1vdmUtcmVkdW5kYW50LWNvbXBpbGVyLXNhbml0eS1jaGVja3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vUHJvdmlkZS1jcm9zcy1jb21waWxlLWFsdGVybmF0aXZlcy1mb3ItQUNfVFJZX1JVTi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9Ta2lwLWhvc3QtZmlsZS1zeXN0ZW0tY2hlY2tzLXdoZW4tY3Jvc3MtY29tcGlsaW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0F2b2lkLW1pcy1pZGVudGlmeWluZy1zeXN0ZW1zLWFzLVNWUjQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1jb21tLmgtbm93LWRlcGVuZHMtb24tdGVybS5oLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZml4LWZvci1tdWx0aWpvYi1idWlsZC5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYThjNWRhMmY0MmY4YTE4ZmE0ZGFkYTI0MTlkMTU0OWIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTdkYjIxMTRkZDk2M2IwMTZjZDRkZWQzNDgzMTk1NWRjYmUzMjUxZTVlZWU0NWFjMjYwNmU2N2U5ZjA5N2IyZCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbwotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1t1dGVtcHRlcl0gPSAiYWNfY3ZfaGVhZGVyX3V0ZW1wdGVyX2g9eWVzLGFjX2N2X2hlYWRlcl91dGVtcHRlcl9oPW5vLGxpYnV0ZW1wdGVyLCIKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aC1wdHktbW9kZT0wNjIwIC0td2l0aC1wdHktZ3JvdXA9NSBcCi0gICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICctLWVuYWJsZS1wYW0nLCAnLS1kaXNhYmxlLXBhbScsIGQpfSIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSIgXTsgdGhlbgotCQlpbnN0YWxsIC1EIC1tIDY0NCAke1dPUktESVJ9L3NjcmVlbi5wYW0gJHtEfS8ke3N5c2NvbmZkaXJ9L3BhbS5kL3NjcmVlbgotCWZpCi19Ci0KLXBrZ19wb3N0aW5zdF8ke1BOfSAoKSB7Ci0JZ3JlcCAtcSAiXiR7YmluZGlyfS9zY3JlZW4kIiAkRCR7c3lzY29uZmRpcn0vc2hlbGxzIHx8IGVjaG8gJHtiaW5kaXJ9L3NjcmVlbiA+PiAkRCR7c3lzY29uZmRpcn0vc2hlbGxzCi19Ci0KLXBrZ19wb3N0cm1fJHtQTn0gKCkgewotCXByaW50ZiAiJChncmVwIC12ICJeJHtiaW5kaXJ9L3NjcmVlbiQiICREJHtzeXNjb25mZGlyfS9zaGVsbHMpXG4iID4gJEQke3N5c2NvbmZkaXJ9L3NoZWxscwotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuXzQuNi4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuXzQuNi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjZDgzYTIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW5fNC42LjEuYmIKQEAgLTAsMCArMSw1MiBAQAorU1VNTUFSWSA9ICJNdWx0aXBsZXhpbmcgdGVybWluYWwgbWFuYWdlciIKK0RFU0NSSVBUSU9OID0gIlNjcmVlbiBpcyBhIGZ1bGwtc2NyZWVuIHdpbmRvdyBtYW5hZ2VyIFwKK3RoYXQgbXVsdGlwbGV4ZXMgYSBwaHlzaWNhbCB0ZXJtaW5hbCBiZXR3ZWVuIHNldmVyYWwgXAorcHJvY2Vzc2VzLCB0eXBpY2FsbHkgaW50ZXJhY3RpdmUgc2hlbGxzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9zY3JlZW4vIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL3NhdmFubmFoLmdudS5vcmcvYnVncy8/ZnVuYz1hZGRpdGVtJmdyb3VwPXNjcmVlbiIKKworU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorCitMSUNFTlNFID0gIkdQTHYzKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NjcmVlbi5oO2VuZGxpbmU9MjY7bWQ1PTM5NzExNDI5ODkyODlhODE5OGE1NDQyMjA3MDNjMmJmIgorCitERVBFTkRTID0gIm5jdXJzZXMgXAorICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2xpYnBhbScsICcnLCBkKX0iCitSREVQRU5EU18ke1BOfSA9ICJiYXNlLWZpbGVzIgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vc2NyZWVuL3NjcmVlbi0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdmaWxlOi8vc2NyZWVuLnBhbScsICcnLCBkKX0gXAorICAgICAgICAgICBmaWxlOi8vUmVtb3ZlLXJlZHVuZGFudC1jb21waWxlci1zYW5pdHktY2hlY2tzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL1Byb3ZpZGUtY3Jvc3MtY29tcGlsZS1hbHRlcm5hdGl2ZXMtZm9yLUFDX1RSWV9SVU4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vU2tpcC1ob3N0LWZpbGUtc3lzdGVtLWNoZWNrcy13aGVuLWNyb3NzLWNvbXBpbGluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9Bdm9pZC1taXMtaWRlbnRpZnlpbmctc3lzdGVtcy1hcy1TVlI0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItY29tbS5oLW5vdy1kZXBlbmRzLW9uLXRlcm0uaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1mb3ItbXVsdGlqb2ItYnVpbGQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtZml4LWNvbmZpZ3VyZS1mYWlsZWQtd2hpbGUtYnVpbGQtZGlyLWhhLnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIxMzJjODkzYWFiZmFmMjAyMDA3NDc5MDIxNWM4Y2FjZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhYmE5YWY2NmNiNjI2MTU1ZDZhYmNlNDcwM2Y0NWNjZTBlMzBhNTExNGEzNjhiZDYzODdjOTY2Y2JiYmI3YzY0IgorCitpbmhlcml0IGF1dG90b29scyB0ZXhpbmZvCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW3V0ZW1wdGVyXSA9ICJhY19jdl9oZWFkZXJfdXRlbXB0ZXJfaD15ZXMsYWNfY3ZfaGVhZGVyX3V0ZW1wdGVyX2g9bm8sbGlidXRlbXB0ZXIsIgorCitFWFRSQV9PRUNPTkYgPSAiLS13aXRoLXB0eS1tb2RlPTA2MjAgLS13aXRoLXB0eS1ncm91cD01IFwKKyAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJy0tZW5hYmxlLXBhbScsICctLWRpc2FibGUtcGFtJywgZCl9IgorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisJaWYgWyAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgZCl9IiBdOyB0aGVuCisJCWluc3RhbGwgLUQgLW0gNjQ0ICR7V09SS0RJUn0vc2NyZWVuLnBhbSAke0R9LyR7c3lzY29uZmRpcn0vcGFtLmQvc2NyZWVuCisJZmkKK30KKworcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKKwlncmVwIC1xICJeJHtiaW5kaXJ9L3NjcmVlbiQiICREJHtzeXNjb25mZGlyfS9zaGVsbHMgfHwgZWNobyAke2JpbmRpcn0vc2NyZWVuID4+ICREJHtzeXNjb25mZGlyfS9zaGVsbHMKK30KKworcGtnX3Bvc3RybV8ke1BOfSAoKSB7CisJcHJpbnRmICIkKGdyZXAgLXYgIl4ke2JpbmRpcn0vc2NyZWVuJCIgJEQke3N5c2NvbmZkaXJ9L3NoZWxscylcbiIgPiAkRCR7c3lzY29uZmRpcn0vc2hlbGxzCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWRfNC4yLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWRfNC4yLjIuYmIKaW5kZXggNWFhN2Q4YS4uZTMxYmVjMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zZWQvc2VkXzQuMi4yLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2VkL3NlZF80LjIuMi5iYgpAQCAtNDQsMyArNDQsNCBAQAogCW9lX3J1bm1ha2UgLUMgJHtURVNURElSfSBpbnN0YWxsLXB0ZXN0IEJVSUxERElSPSR7Qn0gREVTVERJUj0ke0R9JHtQVEVTVF9QQVRIfSBURVNURElSPSR7VEVTVERJUn0KIH0KIAorUlBST1ZJREVTXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3Vzcm1lcmdlJywgJy9iaW4vc2VkJywgJycsIGQpfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzLzAwMDEtc2hhZG93LUNWRS0yMDE3LTEyNDI0IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvMDAwMS1zaGFkb3ctQ1ZFLTIwMTctMTI0MjQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQzZTFlMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzLzAwMDEtc2hhZG93LUNWRS0yMDE3LTEyNDI0CkBAIC0wLDAgKzEsNDYgQEAKK0Zyb20gOTU0ZTNkMmU3MTEzZTlhYzA2NjMyYWVlM2M2OWI4ZDgxOGNjODk1MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRvbWFzIE1yYXogPHRtcmF6QGZlZG9yYXByb2plY3Qub3JnPgorRGF0ZTogRnJpLCAzMSBNYXIgMjAxNyAxNjoyNTowNiArMDIwMAorU3ViamVjdDogW1BBVENIXSBGaXggYnVmZmVyIG92ZXJmbG93IGlmIE5VTEwgbGluZSBpcyBwcmVzZW50IGluIGRiLgorCitJZiBwdHItPmxpbmUgPT0gTlVMTCBmb3IgYW4gZW50cnksIHRoZSBmaXJzdCBjeWNsZSB3aWxsIGV4aXQsCitidXQgdGhlIHNlY29uZCBvbmUgd2lsbCBoYXBwaWx5IHdyaXRlIHBhc3QgZW50cmllcyBidWZmZXIuCitXZSBhY3R1YWxseSBkbyBub3Qgd2FudCB0byBleGl0IHRoZSBmaXJzdCBjeWNsZSBwcmVtYXR1cmVseQorb24gcHRyLT5saW5lID09IE5VTEwuCitTaWduZWQtb2ZmLWJ5OiBUb21hcyBNcmF6IDx0bXJhekBmZWRvcmFwcm9qZWN0Lm9yZz4KKworQ1ZFOiBDVkUtMjAxNy0xMjQyNAorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgbGliL2NvbW1vbmlvLmMgfCA4ICsrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYi9jb21tb25pby5jIGIvbGliL2NvbW1vbmlvLmMKK2luZGV4IGIxMGRhMDYuLjMxZWRiYWEgMTAwNjQ0CistLS0gYS9saWIvY29tbW9uaW8uYworKysrIGIvbGliL2NvbW1vbmlvLmMKK0BAIC03NTEsMTYgKzc1MSwxNiBAQCBjb21tb25pb19zb3J0IChzdHJ1Y3QgY29tbW9uaW9fZGIgKmRiLCBpbnQgKCpjbXApIChjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikpCisgCWZvciAocHRyID0gZGItPmhlYWQ7CisgCSAgICAgICAgKE5VTEwgIT0gcHRyKQorICNpZiBLRUVQX05JU19BVF9FTkQKKy0JICAgICAmJiAoTlVMTCAhPSBwdHItPmxpbmUpCistCSAgICAgJiYgKCAgICgnKycgIT0gcHRyLT5saW5lWzBdKQorLQkgICAgICAgICAmJiAoJy0nICE9IHB0ci0+bGluZVswXSkpCisrCSAgICAgJiYgKChOVUxMID09IHB0ci0+bGluZSkKKysJICAgICAgICAgfHwgKCgnKycgIT0gcHRyLT5saW5lWzBdKQorKwkgICAgICAgICAgICAgJiYgKCctJyAhPSBwdHItPmxpbmVbMF0pKSkKKyAjZW5kaWYKKyAJICAgICA7CisgCSAgICAgcHRyID0gcHRyLT5uZXh0KSB7CisgCQluKys7CisgCX0KKyAjaWYgS0VFUF9OSVNfQVRfRU5ECistCWlmICgoTlVMTCAhPSBwdHIpICYmIChOVUxMICE9IHB0ci0+bGluZSkpIHsKKysJaWYgKE5VTEwgIT0gcHRyKSB7CisgCQluaXMgPSBwdHI7CisgCX0KKyAjZW5kaWYKKy0tIAorMi4xLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvc2hhZG93LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L3NoYWRvdy5pbmMKaW5kZXggNzBmZjY4ZS4uY2MxODk2NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvc2hhZG93LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9zaGFkb3cuaW5jCkBAIC0xNiw2ICsxNiw3IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1yZWFkLWxvZ2luLmRlZnMtYmVmb3JlLWRvaW5nLWNocm9vdC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9jaGVja19zaXplX29mX3VpZF90X2FuZF9naWRfdF91c2luZ19BQ19DSEVDS19TSVpFT0YucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS11c2VyYWRkLWNvcHktZXh0ZW5kZWQtYXR0cmlidXRlcy1vZi1ob21lLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc2hhZG93LUNWRS0yMDE3LTEyNDI0IFwKICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncGFtJywgJyR7UEFNX1NSQ19VUkl9JywgJycsIGQpfSBcCiAgICAgICAgICAgICIKIApAQCAtNTksNyArNjAsNiBAQAogTlNDRE9QVCA9ICIiCiBOU0NET1BUX2NsYXNzLW5hdGl2ZSA9ICItLXdpdGhvdXQtbnNjZCIKIE5TQ0RPUFRfY2xhc3MtbmF0aXZlc2RrID0gIi0td2l0aG91dC1uc2NkIgotTlNDRE9QVF9saWJjLXVjbGliYyA9ICIgLS13aXRob3V0LW5zY2QiCiBOU0NET1BUX2xpYmMtZ2xpYmMgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdsaWJjLXNwYXduJywgJy0td2l0aC1uc2NkJywgJy0td2l0aG91dC1uc2NkJywgZCl9IgogICAgICAgICAgIAogUEFNX1BMVUdJTlMgPSAibGlicGFtLXJ1bnRpbWUgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zbGFuZy9zbGFuZy9ydW4tcHRlc3QgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NsYW5nL3NsYW5nL3J1bi1wdGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOWY0NzRhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zbGFuZy9zbGFuZy9ydW4tcHRlc3QKQEAgLTAsMCArMSwzIEBACisjIS9iaW4vc2gKKworbWFrZSAtQyB0ZXN0IHJ1bnRlc3RzCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NsYW5nL3NsYW5nL3Rlcm1pbmZvX2ZpeGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zbGFuZy9zbGFuZy90ZXJtaW5mb19maXhlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTZkMTVhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zbGFuZy9zbGFuZy90ZXJtaW5mb19maXhlcy5wYXRjaApAQCAtMCwwICsxLDE0OCBAQAorRG8gbm90IHVzZSB0aGUgSkRfVEVSTUNBUCBtYWNybyBzaW5jZSB3ZSBjYW5ub3QgZ2V0IHRoZSB0ZXJtaW5mbyBmcm9tCituY3Vyc2VzIHBrZy1jb25maWcsIGJ1dCBmaXggdGhlIG1hY3JvIHRvIG5vdCByZWZlcmVuY2UgaG9zdCBkaXJlY3Rvcmllcy4KK0Fsc28gYWRkIHNyYy90ZXN0L01ha2VmaWxlLmluIHNvIHRoYXQgd2UgY2FuIHVzZSAtbHRlcm1jYXAgaWYgd2Ugd2FudCB0by4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEpvZSBTbGF0ZXIgPGpvZS5zbGF0ZXJAd2luZHJpdmVyLmNvbT4KKworCistLS0gYS9hdXRvY29uZi9hY2xvY2FsLm00CisrKysgYi9hdXRvY29uZi9hY2xvY2FsLm00CitAQCAtNTA2LDE0ICs1MDYsMTAgQEAgdGhlbgorIGVsc2UKKyAgICBNSVNDX1RFUk1JTkZPX0RJUlM9IiIKKyBmaQorLUpEX1Rlcm1pbmZvX0RpcnM9IiRNSVNDX1RFUk1JTkZPX0RJUlMgXAorLSAgICAgICAgICAgICAgICAgIC91c3IvbGliL3Rlcm1pbmZvIFwKKy0gICAgICAgICAgICAgICAgICAvdXNyL3NoYXJlL3Rlcm1pbmZvIFwKKy0gICAgICAgICAgICAgICAgICAvdXNyL3NoYXJlL2xpYi90ZXJtaW5mbyBcCistCQkgIC91c3IvbG9jYWwvbGliL3Rlcm1pbmZvIgorKworIFRFUk1DQVA9LWx0ZXJtY2FwCisgCistZm9yIHRlcm1pbmZvX2RpciBpbiAkSkRfVGVybWluZm9fRGlycworK2ZvciB0ZXJtaW5mb19kaXIgaW4gJE1JU0NfVEVSTUlORk9fRElSUworIGRvCisgICAgaWYgdGVzdCAtZCAkdGVybWluZm9fZGlyCisgICAgdGhlbgorLS0tIGEvYXV0b2NvbmYvY29uZmlndXJlLmFjCisrKysgYi9hdXRvY29uZi9jb25maWd1cmUuYWMKK0BAIC0yNDksNyArMjQ5LDE0IEBAIEFDX0NIRUNLX1NJWkVPRihzaXplX3QpCisgSkRfQ0hFQ0tfTE9OR19MT05HCisgSkRfTEFSR0VfRklMRV9TVVBQT1JUCisgCistSkRfVEVSTUNBUAorK2RubCBEbyBub3QgdXNlIEpEX1RFUk1DQVAsIHNpbmNlIHdlIGNhbm5vdCBnZXQgdGVybWluZm8gZnJvbSBuY3Vyc2VzKi1jb25maWcgYW55bW9yZS4KKytkbmwgU2V0IFRFUk1DQVA9LWx0ZXJtY2FwIGFuZCBBQ19ERUZJTkUoVVNFX1RFUk1DQVAsMSxbRGVmaW5lIHRvIHVzZSB0ZXJtY2FwXSkKKytkbmwgdG8gdXNlIGxpYnRlcm1jYXAuCisrVEVSTUNBUD0iIgorK01JU0NfVEVSTUlORk9fRElSUz0iIgorK0FDX1NVQlNUKFRFUk1DQVApZG5sCisrQUNfU1VCU1QoTUlTQ19URVJNSU5GT19ESVJTKWRubAorKworIEpEX0dDQ19XQVJOSU5HUworIAorIEpEX1NFVF9PQkpfU1JDX0RJUihzcmMpCitAQCAtMzY0LDcgKzM3MSw3IEBAIEFDX0NPTkZJR19IRUFERVIoc3JjL3N5c2NvbmYuaDpzcmMvY29uZmkKKyBkbmwgQUNfQ09ORklHX1NVQkRJUlMoZGVtbykKKyAKKyBBQ19PVVRQVVQoTWFrZWZpbGU6YXV0b2NvbmYvTWFrZWZpbGUuaW4gXAorLSAgc3JjL01ha2VmaWxlIHNsc2gvTWFrZWZpbGUgbW9kdWxlcy9NYWtlZmlsZSBkZW1vL01ha2VmaWxlIFwKKysgIHNyYy9NYWtlZmlsZSBzcmMvdGVzdC9NYWtlZmlsZSBzbHNoL01ha2VmaWxlIG1vZHVsZXMvTWFrZWZpbGUgZGVtby9NYWtlZmlsZSBcCisgICBzbGFuZy5wYzphdXRvY29uZi9zbGFuZ3BjLmluIFwKKyApCisgCistLS0gL2Rldi9udWxsCisrKysgYi9zcmMvdGVzdC9NYWtlZmlsZS5pbgorQEAgLTAsMCArMSw5MCBAQAorKyMgLSotIG1ha2UgLSotCisrVEVTVF9TQ1JJUFRTX1NMQyA9IGFyZ3Ygc3ludGF4IHNjaXJjdWl0IGVxcyBzc2NhbmYgbG9vcHMgYXJpdGggYXJyYXkgc3Ryb3BzIFwKKysgIGJzdHJpbmcgcGFjayBzdGRpbyBhc3NvYyBzZWxmbG9hZCBzdHJ1Y3QgbnNwYWNlIHBhdGggaWZldmFsIGFueXR5cGUgYXJybXVsdCBcCisrICB0aW1lIHV0ZjggZXhjZXB0IGJ1Z3MgbGlzdCByZWdleHAgbWV0aG9kIGRlcmVmIG5hbmluZiBvdmVyZmxvdyBzb3J0IFwKKysgIGxvbmdsb25nIHNpZ25hbCBkb2xsYXIgcmVxIGRvY2Z1biBkZWJ1ZyBxdWFsaWYgY29tcGFyZSBicmVhayBtdWx0bGluZSBcCisrICBzdGFjayBtaXNjIHBvc2l4aW8gcG9zZGlyIHByb2MgbWF0aAorKworK1RFU1RfU0NSSVBUU19OT19TTEMgPSBhdXRvbG9hZCBuc3BhY2UyIHByZXAKKysKKytURVNUX1NDUklQVFMgPSAkKFRFU1RfU0NSSVBUU19TTEMpICQoVEVTVF9TQ1JJUFRTX05PX1NMQykKKysKKytURVNUX1BHTSA9IHNsdGVzdAorK01FTUNIRUNLID0gdmFsZ3JpbmQgLS10b29sPW1lbWNoZWNrIC0tbGVhay1jaGVjaz15ZXMgLS1sZWFrLXJlc29sdXRpb249bWVkIC0tbnVtLWNhbGxlcnM9MjAKKytSVU5fVEVTVF9QR00gPSAuLyQoVEVTVF9QR00pCisrU0xBTkdJTkMgPSAuLgorK1NMQU5HTElCID0gLi4vJChBUkNIKW9ianMKKytPVEhFUl9MSUJTID0gLWxtIEBURVJNQ0FQQAorK09USEVSX0NGTEFHUyA9CisrCisrcnVudGVzdHM6ICQoVEVTVF9QR00pIGNsZWFudG1wCisrCUB0ZXN0cz0iIjsgXAorKwlmb3IgdGVzdCBpbiAkKFRFU1RfU0NSSVBUUyk7IFwKKysJZG8gXAorKwkgICB0ZXN0cz0iJCR0ZXN0cyAkJHRlc3Quc2wiOyBcCisrCWRvbmU7IFwKKysJZm9yIHRlc3QgaW4gJChURVNUX1NDUklQVFNfU0xDKTsgXAorKwlkbyBcCisrCSAgIHRlc3RzPSIkJHRlc3RzICQkdGVzdC5zbGMiOyBcCisrCWRvbmU7IFwKKysJTUFLRVJVTk5JTkc9MSAuL3J1bnRlc3RzLnNoICQkdGVzdHMKKysjCUB0b3VjaCAkKFRFU1RfUEdNKS5jCisrCisrdXBkYXRlOiAkKFRFU1RfUEdNKSBjbGVhbnRtcAorKwlAdGVzdHM9IiI7IFwKKysJZm9yIFggaW4gJChURVNUX1NDUklQVFMpOyBcCisrCWRvIFwKKysJICBpZiBbICEgLWUgbGFzdHJ1bi8kJFguc2wgXSB8fCBbICQkWC5zbCAtbnQgbGFzdHJ1bi8kJFguc2wgXSA7IFwKKysJICB0aGVuIFwKKysJICAgdGVzdHM9IiQkdGVzdHMgJCRYLnNsIjsgXAorKwkgIGZpIFwKKysJZG9uZTsgXAorKwlmb3IgWCBpbiAkKFRFU1RfU0NSSVBUU19TTEMpOyBcCisrCWRvIFwKKysJICBpZiBbICEgLWUgbGFzdHJ1bi8kJFguc2xjIF0gfHwgWyAkJFguc2wgLW50IGxhc3RydW4vJCRYLnNsYyBdIDsgXAorKwkgIHRoZW4gXAorKwkgICB0ZXN0cz0iJCR0ZXN0cyAkJFguc2xjIjsgXAorKwkgIGZpIFwKKysJZG9uZTsgXAorKwlpZiB0ZXN0IC1uICIkJHRlc3RzIjsgXAorKwl0aGVuIFwKKysJICBNQUtFUlVOTklORz0xIC4vcnVudGVzdHMuc2ggJCR0ZXN0czsgXAorKwlmaQorKyMJQHRvdWNoICQoVEVTVF9QR00pLmMKKysKKyttZW1jaGVja19ydW50ZXN0czogJChURVNUX1BHTSkgY2xlYW50bXAKKysJQGVjaG8gIiIKKysJQGVjaG8gIlJ1bm5pbmcgdGVzdHM6IgorKwlAZWNobyAiIgorKwktQGZvciBYIGluICQoVEVTVF9TQ1JJUFRTKTsgXAorKwlkbyBcCisrCSAgICQoTUVNQ0hFQ0spIC0tbG9nLWZpbGU9bG9nLiQke1h9ICQoUlVOX1RFU1RfUEdNKSAkJFguc2w7IFwKKysJICAgZ3JlcCBFUlJPUiBsb2cuJCR7WH07IGdyZXAgJ2xvc3Q6IFteMF0nIGxvZy4kJHtYfTsgXAorKwkgICAkKE1FTUNIRUNLKSAtLWxvZy1maWxlPWxvZy4kJHtYfV91ICQoUlVOX1RFU1RfUEdNKSAtdXRmOCAkJFguc2w7IFwKKysJICAgZ3JlcCBFUlJPUiBsb2cuJCR7WH1fdTsgZ3JlcCAnbG9zdDogW14wXScgbG9nLiQke1h9X3U7IFwKKysJZG9uZQorKyMJdG91Y2ggJChURVNUX1BHTSkuYworKworK21lbWNoZWNrX3J1bnRlc3RzX3NsYzogJChURVNUX1BHTSkgY2xlYW50bXAKKysJQGVjaG8gIiIKKysJQGVjaG8gIlJ1bm5pbmcgdGVzdHM6IgorKwlAZWNobyAiIgorKwktQGZvciBYIGluICQoVEVTVF9TQ1JJUFRTX1NMQyk7IFwKKysJZG8gXAorKwkgICAkKE1FTUNIRUNLKSAtLWxvZy1maWxlPWxvZy4kJHtYfV9jICQoUlVOX1RFU1RfUEdNKSAkJFguc2xjOyBcCisrCSAgICQoTUVNQ0hFQ0spIC0tbG9nLWZpbGU9bG9nLiQke1h9X3VjICQoUlVOX1RFU1RfUEdNKSAtdXRmOCAkJFguc2xjOyBcCisrCWRvbmUKKysjCXRvdWNoICQoVEVTVF9QR00pLmMKKysKKyttZW1jaGVjazogbWVtY2hlY2tfcnVudGVzdHMgbWVtY2hlY2tfcnVudGVzdHNfc2xjCisrCisrJChURVNUX1BHTSk6ICQoVEVTVF9QR00pLmMgYXNzb2MuYyBsaXN0LmMgJChTTEFOR0xJQikvbGlic2xhbmcuYQorKwkkKENDKSAkKENGTEFHUykgJChPVEhFUl9DRkxBR1MpICQoTERGTEFHUykgJChURVNUX1BHTSkuYyAtbyAkKFRFU1RfUEdNKSAtSSQoU0xBTkdJTkMpIC1MJChTTEFOR0xJQikgLWxzbGFuZyAkKE9USEVSX0xJQlMpCisrY2xlYW50bXA6CisrCS0vYmluL3JtIC1yZiB0bXBmaWxlKi4qIHRtcGRpciouKgorK2NsZWFuOiBjbGVhbnRtcAorKwktL2Jpbi9ybSAtZiAqfiAqLm8gKi5sb2cgbG9nLnBpZCogKi5zbGMgbG9nLiogKi5sb2ctKgorK2Rpc3RjbGVhbjogY2xlYW4KKysJL2Jpbi9ybSAtZiAkKFRFU1RfUEdNKSAkKFRFU1RfUEdNKS5nY2RhICQoVEVTVF9QR00pLmdjbm8KKysuUEhPTlk6IGNsZWFuIG1lbWNoZWNrIHJ1bnRlc3RzIG1lbWNoZWNrX3J1bnRlc3RzX3NsYyBtZW1jaGVja19ydW50ZXN0cyBjbGVhbnRtcAorKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zbGFuZy9zbGFuZy90ZXN0LWFkZC1vdXRwdXQtaW4tdGhlLWZvcm1hdC1yZXN1bHQtdGVzdG5hbWUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NsYW5nL3NsYW5nL3Rlc3QtYWRkLW91dHB1dC1pbi10aGUtZm9ybWF0LXJlc3VsdC10ZXN0bmFtZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yN2E5YmI4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zbGFuZy9zbGFuZy90ZXN0LWFkZC1vdXRwdXQtaW4tdGhlLWZvcm1hdC1yZXN1bHQtdGVzdG5hbWUucGF0Y2gKQEAgLTAsMCArMSwzMCBAQAorRnJvbSAzODY4OGVlMjc1NDQxNWNmMmExOTM1ZGFmYjgyNzg4NjFiNzMxNWU3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogU3RlZmFuIFN0cm9naW4gPHNzdHJvZ2luQGNpc2NvLmNvbT4KK0RhdGU6IFRodSwgMiBNYXIgMjAxNyAwMDoyNjozMSArMDIwMAorU3ViamVjdDogW1BBVENIXSB0ZXN0OiBhZGQgb3V0cHV0IGluIHRoZSBmb3JtYXQgInJlc3VsdDogdGVzdG5hbWUiCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IFN0ZWZhbiBTdHJvZ2luIDxzc3Ryb2dpbkBjaXNjby5jb20+CistLS0KKyBzcmMvdGVzdC9ydW50ZXN0cy5zaCB8IDIgKysKKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvdGVzdC9ydW50ZXN0cy5zaCBiL3NyYy90ZXN0L3J1bnRlc3RzLnNoCitpbmRleCBhM2VhYWQwLi42NGYwNzA1IDEwMDc1NQorLS0tIGEvc3JjL3Rlc3QvcnVudGVzdHMuc2gKKysrKyBiL3NyYy90ZXN0L3J1bnRlc3RzLnNoCitAQCAtMzQsOCArMzQsMTAgQEAgZG8KKyAgICAgdGhlbgorIAluX2ZhaWxlZD1gZXhwciAke25fZmFpbGVkfSArIDFgCisgCXRlc3RzX2ZhaWxlZD0iJHRlc3RzX2ZhaWxlZCAkdGVzdGZpbGUiCisrCWVjaG8gIkZBSUw6ICR0ZXN0ZmlsZSIKKyAgICAgZWxzZQorICAgICAgICAgdG91Y2ggbGFzdHJ1bi8kdGVzdGZpbGUKKysJZWNobyAiUEFTUzogJHRlc3RmaWxlIgorICAgICBmaQorIGRvbmUKKyAKKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2xhbmcvc2xhbmdfMi4zLjFhLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zbGFuZy9zbGFuZ18yLjMuMWEuYmIKaW5kZXggYzcxZDgwNC4uMDU4NWMxNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zbGFuZy9zbGFuZ18yLjMuMWEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zbGFuZy9zbGFuZ18yLjMuMWEuYmIKQEAgLTE3LDYgKzE3LDkgQEAKIFNSQ19VUkkgPSAiaHR0cDovL3d3dy5qZWRzb2Z0Lm9yZy9yZWxlYXNlcy8ke0JQTn0vJHtCUH0udGFyLmJ6MiBcCiAgICAgICAgICAgIGZpbGU6Ly9uby14LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2RvbnQtbGluay10by1ob3N0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3Rlc3QtYWRkLW91dHB1dC1pbi10aGUtZm9ybWF0LXJlc3VsdC10ZXN0bmFtZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly90ZXJtaW5mb19maXhlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAogICAgICAgICAgICIKIAogU1JDX1VSSVttZDVzdW1dID0gImM1MjM1MzEzMDQyZWQwZTcxZWM3MDhmN2I4NWVjMjQxIgpAQCAtMjUsNyArMjgsNyBAQAogVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly93d3cuamVkc29mdC5vcmcvcmVsZWFzZXMvc2xhbmcvIgogUFJFTUlSUk9SU19hcHBlbmQgPSAiXG4gaHR0cDovL3d3dy5qZWRzb2Z0Lm9yZy9yZWxlYXNlcy9zbGFuZy8uKiBodHRwOi8vd3d3LmplZHNvZnQub3JnL3JlbGVhc2VzL3NsYW5nL29sZC8gXG4iCiAKLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAoraW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHB0ZXN0CiBDTEVBTkJST0tFTiA9ICIxIgogCiBFWFRSQV9PRUNPTkYgPSAiLS13aXRob3V0LW9uaWciCkBAIC00OSw2ICs1MiwyNyBAQAogICAgIGNkICR7Qn0KIH0KIAorZG9fY29tcGlsZV9wdGVzdCgpIHsKKwlvZV9ydW5tYWtlIC1DIHNyYyBzdGF0aWMKKwlvZV9ydW5tYWtlIC1DIHNyYy90ZXN0IHNsdGVzdAorfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCW1rZGlyICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKKwlmb3IgZiBpbiBNYWtlZmlsZSBzbHRlc3QgcnVudGVzdHMuc2ggKi5zbCAqLmluYzsgZG8KKwkJY3AgJHtTfS9zcmMvdGVzdC8kZiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0LworCWRvbmUKKwlzZWQgLWUgJ3MvXCBcJChURVNUX1BHTSlcLmNcIGFzc29jXC5jXCBsaXN0XC5jXCBcJChTTEFOR0xJQilcL2xpYnNsYW5nXC5hLy8nIFwKKwkgICAgLWUgJy9cJChDQykuKihURVNUX1BHTSkvZCcgXAorCSAgICAtaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0L01ha2VmaWxlCisKKwljcCAke1N9L3Nsc2gvbGliL3JlcXVpcmUuc2wgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdC8KKwlzZWQgLWkgJ3MvXC5cLlwvXC5cLlwvc2xzaFwvbGliXC9yZXF1aXJlXC5zbC9yZXF1aXJlXC5zbC8nICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvcmVxLnNsCisKKwljcCAke1N9L2RvYy90ZXh0L3NsYW5nZnVuLnR4dCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0LworCXNlZCAtaSAncy9cLlwuXC9cLlwuXC9kb2NcL3RleHRcL3NsYW5nZnVuXC50eHQvc2xhbmdmdW5cLnR4dC8nICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvZG9jZnVuLnNsCit9CisKIEZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vJHtCUE59L3YyL21vZHVsZXMvICR7ZGF0YWRpcn0vc2xzaC8iCiAKIFBBUkFMTEVMX01BS0UgPSAiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdGF0L3N0YXRfMy4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdGF0L3N0YXRfMy4zLmJiCmluZGV4IDA2OTdjNzMuLjhhYzhlODkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3RhdC9zdGF0XzMuMy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N0YXQvc3RhdF8zLjMuYmIKQEAgLTEsNCArMSw1IEBACiBTVU1NQVJZID0gIkNvbW1hbmQgbGluZSBmaWxlIHN0YXR1cyBkaXNwbGF5IHV0aWxpdHkiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmliaWJsaW8ub3JnL3B1Yi9MaW51eC91dGlscy9maWxlLyIKIERFU0NSSVBUSU9OID0gIkRpc3BsYXlzIGFsbCBpbmZvcm1hdGlvbiBhYm91dCBhIGZpbGUgdGhhdCB0aGUgc3RhdCgpIGNhbGwgcHJvdmlkZXMgYW5kIGFsbCBpbmZvcm1hdGlvbiBhYm91dCBhIGZpbGVzeXN0ZW0gdGhhdCBzdGF0ZnMoKSBwcm92aWRlcy4iCiBTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCiBMSUNFTlNFID0gIkdQTHYyIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdHJlc3MvZmlsZXMvdGV4aW5mby5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3RyZXNzL2ZpbGVzL3RleGluZm8ucGF0Y2gKaW5kZXggNWFjNTk1MS4uZjIzYTFmNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdHJlc3MvZmlsZXMvdGV4aW5mby5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N0cmVzcy9maWxlcy90ZXhpbmZvLnBhdGNoCkBAIC0xLDMgKzEsNCBAQAorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0gYS9kb2Mvc3RyZXNzLnRleGkKICsrKyBiL2RvYy9zdHJlc3MudGV4aQogQEAgLTYyLDQ3ICs2Miw0NyBAQApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG8uaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG8uaW5jCmluZGV4IGQ0MmEwNGEuLjgwZWMwYWUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3Vkby9zdWRvLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkby5pbmMKQEAgLTQsNyArNCw3IEBACiBCVUdUUkFDS0VSID0gImh0dHA6Ly93d3cuc3Vkby53cy9idWdzLyIKIFNFQ1RJT04gPSAiYWRtaW4iCiBMSUNFTlNFID0gIklTQyAmIEJTRCAmIFpsaWIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kb2MvTElDRU5TRTttZDU9ZjYwMGE0N2MyYTJjZGRlNTg5OWU0NDk2MDc4MTBlZDEgXAorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZG9jL0xJQ0VOU0U7bWQ1PTY1MmZiNDMzNGMxM2I1MTE1OTdkNzk0MGVmOGIzMzIzIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL3BsdWdpbnMvc3Vkb2Vycy9yZWRibGFjay5jO2JlZ2lubGluZT0xO2VuZGxpbmU9NDE7bWQ1PWNmZTQxMTEyZjk2YzE5YTA3NDkzNGQxMjhmNDVjNjkzIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi91dGlsL3JlYWxsb2NhcnJheS5jO2JlZ2lubGluZT0zO2VuZGxpbmU9MTY7bWQ1PTg1YjA5MDViNzk1ZDRkNThiZjJlMDA2MzU2NDllZWM2IFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi91dGlsL2ZubWF0Y2guYztiZWdpbmxpbmU9MztlbmRsaW5lPTI3O21kNT02N2Y4M2VlOWJkNDU2NTU3Mzk3MDgyZjhmMWJlMGVmZCBcCkBAIC0yNyw2ICsyNywxMiBAQAogCiAjIG1rc2lnbmFtZS9ta3NpZ2xpc3QgYXJlIHVzZWQgb24gYnVpbGQgaG9zdCB0byBnZW5lcmF0ZSBzb3VyY2UgZmlsZXMKIGRvX2NvbXBpbGVfcHJlcGVuZCAoKSB7CisJIyBSZW1vdmUgYnVpbGQgaG9zdCByZWZlcmVuY2VzIGZyb20gc3Vkb191c2FnZS5oCisJc2VkIC1pICBcCisJICAgIC1lICdzLC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCisJICAgIC1lICdzLC0tYnVpbGQ9JHtCVUlMRF9TWVN9LCxnJyBcCisJICAgIC1lICdzLC0taG9zdD0ke0hPU1RfU1lTfSwsZycgXAorCSAgICAke0J9L3NyYy9zdWRvX3VzYWdlLmgKIAlvZV9ydW5tYWtlIFNTUF9DRkxBR1M9IiIgU1NQX0xERkxBR1M9IiIgQ0M9IiRCVUlMRF9DQyIgQ0ZMQUdTPSIkQlVJTERfQ0ZMQUdTIiBDUFBGTEFHUz0iJEJVSUxEX0NQUEZMQUdTIC1JJHtTfS9pbmNsdWRlIC1JJHtTfSAtSSR7Qn0iICAtQyBsaWIvdXRpbCBta3NpZ25hbWUgbWtzaWdsaXN0CiB9CiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3Vkby9zdWRvXzEuOC4xOXAyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG9fMS44LjE5cDIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5NjU5YzMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG9fMS44LjE5cDIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1yZXF1aXJlIHN1ZG8uaW5jCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Z0cC5zdWRvLndzL3N1ZG8vZGlzdC9zdWRvLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJyR7UEFNX1NSQ19VUkl9JywgJycsIGQpfSBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLWlkX3QtZGVmaW5pdGlvbi5wYXRjaCBcCi0gICAgICAgICAgICIKLQotUEFNX1NSQ19VUkkgPSAiZmlsZTovL3N1ZG8ucGFtIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMzFhNjA5MGVkMWQwOTQ2ZmEyMmNiYTE5ZTg2YWFmZWYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjM3ZTE4ZTY3YzJhZDU5ZWNhY2ZhNGI3NzA3MTk4YjA5ZmNmODQ5MTQ2MjE1ODVhOWJjNjcwZGNjMzFhNTJlMCIKLQotREVQRU5EUyArPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2xpYnBhbScsICcnLCBkKX0iCi1SREVQRU5EU18ke1BOfSArPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ3BhbS1wbHVnaW4tbGltaXRzIHBhbS1wbHVnaW4ta2V5aW5pdCcsICcnLCBkKX0iCi0KLUVYVFJBX09FQ09ORiArPSAiIFwKLSAgICAgICAgICAgICBhY19jdl90eXBlX3JzaXplX3Q9bm8gXAotICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJy0td2l0aC1wYW0nLCAnLS13aXRob3V0LXBhbScsIGQpfSBcCi0gICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJy0tZW5hYmxlLXRtcGZpbGVzLmQ9JHtsaWJkaXJ9L3RtcGZpbGVzLmQnLCAnLS1kaXNhYmxlLXRtcGZpbGVzLmQnLCBkKX0gXAotICAgICAgICAgICAgICIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSIgXTsgdGhlbgotCQlpbnN0YWxsIC1EIC1tIDY0NCAke1dPUktESVJ9L3N1ZG8ucGFtICR7RH0vJHtzeXNjb25mZGlyfS9wYW0uZC9zdWRvCi0JZmkKLQotCWNobW9kIDQxMTEgJHtEfSR7YmluZGlyfS9zdWRvCi0JY2htb2QgMDQ0MCAke0R9JHtzeXNjb25mZGlyfS9zdWRvZXJzCi0KLQkjIEV4cGxpY2l0bHkgcmVtb3ZlIHRoZSAke2xvY2Fsc3RhdGVkaXJ9L3J1biBkaXJlY3RvcnkgdG8gYXZvaWQgUUEgZXJyb3IKLQlybWRpciAtcCAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4vc3VkbwotfQotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3RtcGZpbGVzLmQiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZXhlY2Rpcn0vJHtCUE59L2xpYioke1NPTElCU0RFVn0gJHtsaWJleGVjZGlyfS8ke0JQTn0vKi5sYSBcCi0gICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbGliKiR7U09MSUJTREVWfSAke2xpYmV4ZWNkaXJ9LyoubGEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkb18xLjguMjBwMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3Vkby9zdWRvXzEuOC4yMHAyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmMjRiM2MKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkb18xLjguMjBwMi5iYgpAQCAtMCwwICsxLDM2IEBACityZXF1aXJlIHN1ZG8uaW5jCisKK1NSQ19VUkkgPSAiaHR0cDovL2Z0cC5zdWRvLndzL3N1ZG8vZGlzdC9zdWRvLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJyR7UEFNX1NSQ19VUkl9JywgJycsIGQpfSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLWlkX3QtZGVmaW5pdGlvbi5wYXRjaCBcCisgICAgICAgICAgICIKKworUEFNX1NSQ19VUkkgPSAiZmlsZTovL3N1ZG8ucGFtIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMDNkYThlNzExY2FjYTZmZDkzZTU3NzUxYmZiNzRhZGMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmQ0MmFlMTA1OWU5MzVmNzk1YzY5ZWE5N2IzZGUwOWZlOTQxMGE1OGE3NGI1ZDVlNjgzNmViNTA2N2E0NDVkOSIKKworREVQRU5EUyArPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2xpYnBhbScsICcnLCBkKX0iCitSREVQRU5EU18ke1BOfSArPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ3BhbS1wbHVnaW4tbGltaXRzIHBhbS1wbHVnaW4ta2V5aW5pdCcsICcnLCBkKX0iCisKK0VYVFJBX09FQ09ORiArPSAiIFwKKyAgICAgICAgICAgICBhY19jdl90eXBlX3JzaXplX3Q9bm8gXAorICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJy0td2l0aC1wYW0nLCAnLS13aXRob3V0LXBhbScsIGQpfSBcCisgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJy0tZW5hYmxlLXRtcGZpbGVzLmQ9JHtsaWJkaXJ9L3RtcGZpbGVzLmQnLCAnLS1kaXNhYmxlLXRtcGZpbGVzLmQnLCBkKX0gXAorICAgICAgICAgICAgICIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSIgXTsgdGhlbgorCQlpbnN0YWxsIC1EIC1tIDY0NCAke1dPUktESVJ9L3N1ZG8ucGFtICR7RH0vJHtzeXNjb25mZGlyfS9wYW0uZC9zdWRvCisJZmkKKworCWNobW9kIDQxMTEgJHtEfSR7YmluZGlyfS9zdWRvCisJY2htb2QgMDQ0MCAke0R9JHtzeXNjb25mZGlyfS9zdWRvZXJzCisKKwkjIEV4cGxpY2l0bHkgcmVtb3ZlIHRoZSAke2xvY2Fsc3RhdGVkaXJ9L3J1biBkaXJlY3RvcnkgdG8gYXZvaWQgUUEgZXJyb3IKKwlybWRpciAtcCAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4vc3VkbworfQorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3RtcGZpbGVzLmQiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZXhlY2Rpcn0vJHtCUE59L2xpYioke1NPTElCU0RFVn0gJHtsaWJleGVjZGlyfS8ke0JQTn0vKi5sYSBcCisgICAgICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vbGliKiR7U09MSUJTREVWfSAke2xpYmV4ZWNkaXJ9LyoubGEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzLzAwMDEtZml4LXByb2JsZW1zLXRoYXQtY2F1c2VzLWEtc2VnbWVudGF0aW9uLWZhdWx0LXVuZGVyLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvMDAwMS1maXgtcHJvYmxlbXMtdGhhdC1jYXVzZXMtYS1zZWdtZW50YXRpb24tZmF1bHQtdW5kZXItLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2NDMxYWYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzLzAwMDEtZml4LXByb2JsZW1zLXRoYXQtY2F1c2VzLWEtc2VnbWVudGF0aW9uLWZhdWx0LXVuZGVyLS5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIGNiNzJiM2UxNzJjMjM4YjRiNWFlNTkzNWRjNmJlNTRmNTAzNGZjZjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAzMCBKdW4gMjAxNyAxODoyMDowNiAtMDcwMAorU3ViamVjdDogW1BBVENIIDEvMl0gZml4IHByb2JsZW1zIHRoYXQgY2F1c2VzIGEgc2VnbWVudGF0aW9uIGZhdWx0IHVuZGVyIHNvbWUKKyBjb25kaXRpb25zCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbIG5vIHVwc3RyZWFtIF0KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGtzeW1fbW9kLmMgfCAxIC0KKyAxIGZpbGUgY2hhbmdlZCwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEva3N5bV9tb2QuYyBiL2tzeW1fbW9kLmMKK2luZGV4IDZlMjZkYTEuLmEzZGFhN2QgMTAwNjQ0CistLS0gYS9rc3ltX21vZC5jCisrKysgYi9rc3ltX21vZC5jCitAQCAtMTg2LDcgKzE4Niw2IEBAIGV4dGVybiBpbnQgSW5pdE1zeW1zKCkKKyAJCWVsc2UKKyAJCQlTeXNsb2coTE9HX0VSUiwgIkVycm9yIGxvYWRpbmcga2VybmVsIHN5bWJvbHMgIiBcCisgCQkJICAgICAgICItICVzXG4iLCBzdHJlcnJvcihlcnJubykpOworLQkJZmNsb3NlKGtzeW1zKTsKKyAJCXJldHVybigwKTsKKyAJfQorIAorLS0gCisyLjEzLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy8wMDAyLU1ha2Utd2F5LWZvci1yZXNwZWN0aW5nLWZsYWdzLWZyb20tZW52aXJvbm1lbnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzLzAwMDItTWFrZS13YXktZm9yLXJlc3BlY3RpbmctZmxhZ3MtZnJvbS1lbnZpcm9ubWVudC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYmJkZWYzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy8wMDAyLU1ha2Utd2F5LWZvci1yZXNwZWN0aW5nLWZsYWdzLWZyb20tZW52aXJvbm1lbnQucGF0Y2gKQEAgLTAsMCArMSwzNSBAQAorRnJvbSBiMjJmMjQ0NzMyY2QwZjQ3NWFmMmY4MmZjN2VlY2VjNDlmOTA2MjNiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMSBKdWwgMjAxNyAwMDowMTo1MCAtMDcwMAorU3ViamVjdDogW1BBVENIIDIvMl0gTWFrZSB3YXkgZm9yIHJlc3BlY3RpbmcgZmxhZ3MgZnJvbSBlbnZpcm9ubWVudAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIE1ha2VmaWxlIHwgNCArLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQoraW5kZXggNWFmMTY4OS4uYWY2OTlkMiAxMDA2NDQKKy0tLSBhL01ha2VmaWxlCisrKysgYi9NYWtlZmlsZQorQEAgLTE3LDE0ICsxNywxMiBAQAorICMgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICMgICBGb3VuZGF0aW9uLCBJbmMuLCA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4KKyAKKy1DQz0gZ2NjCisgI1NLRkxBR1M9IC1nIC1EU1lTViAtV2FsbAorICNMREZMQUdTPSAtZworLVNLRkxBR1M9ICQoUlBNX09QVF9GTEFHUykgLU8zIC1EU1lTViAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbCAtZm5vLXN0cmVuZ3RoLXJlZHVjZQorK1NLRkxBR1MgPSAkKENGTEFHUykgJChDUFBGTEFHUykgLURTWVNWIC1XYWxsIC1mbm8tc3RyZW5ndGgtcmVkdWNlCisgIyAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IC1EX0xBUkdFRklMRV9TT1VSQ0UKKyAjIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQgLURfTEFSR0VGSUxFNjRfU09VUkNFCisgIyAkKHNoZWxsIGdldGNvbmYgTEZTX1NLRkxBR1MpCistTERGTEFHUz0gLXMKKyAKKyAjIExvb2sgd2hlcmUgeW91ciBpbnN0YWxsIHByb2dyYW0gaXMuCisgSU5TVEFMTCA9IC91c3IvYmluL2luc3RhbGwKKy0tIAorMi4xMy4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2Qvc3lza2xvZ2QuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9zeXNrbG9nZC5pbmMKaW5kZXggNzhiOGQ3YS4uMWE1MzdmYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9zeXNrbG9nZC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9zeXNrbG9nZC5pbmMKQEAgLTExLDExICsxMSwxMyBAQAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8va2xvZ2QuYztiZWdpbmxpbmU9MjtlbmRsaW5lPTE5O21kNT03ZTg3ZWQwYWU2MTQyZGUwNzliY2U3MzhjMTBjODk5ZCBcCiAgICAgICAgICAgICAgICAgICAgIgogCi1pbmhlcml0IHVwZGF0ZS1yYy5kIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgc3lzdGVtZAoraW5oZXJpdCB1cGRhdGUtcmMuZCBzeXN0ZW1kCiAKIFNSQ19VUkkgPSAiaHR0cDovL3d3dy5pbmZvZHJvbS5vcmcvcHJvamVjdHMvc3lza2xvZ2QvZG93bmxvYWQvc3lza2xvZ2QtJHtQVn0udGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovL25vLXN0cmlwLWluc3RhbGwucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZml4LXByb2JsZW1zLXRoYXQtY2F1c2VzLWEtc2VnbWVudGF0aW9uLWZhdWx0LXVuZGVyLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLU1ha2Utd2F5LWZvci1yZXNwZWN0aW5nLWZsYWdzLWZyb20tZW52aXJvbm1lbnQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vc3lza2xvZ2QgXAogICAgICAgICAgICBmaWxlOi8vc3lzbG9nLmNvbmYgXAogICAgICAgICAgICBmaWxlOi8vc3lzbG9nZC5zZXJ2aWNlIFwKQEAgLTMwLDExICszMiwxMCBAQAogU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJlbmFibGUiCiAKIElOSVRTQ1JJUFRfTkFNRSA9ICJzeXNsb2ciCi1DT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9zeXNsb2cuY29uZi4ke0JQTn0iCitDT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9zeXNsb2cuY29uZiIKK1JDT05GTElDVFNfJHtQTn0tc3lzbG9nID0gInJzeXNsb2cgYnVzeWJveC1zeXNsb2cgc3lzbG9nLW5nIgogCi1FWFRSQV9PRU1BS0UgPSAiLWUgTUFLRUZMQUdTPSIKLQotQ0ZMQUdTX2FwcGVuZCA9ICIgLURTWVNWIgorQ0ZMQUdTICs9ICItRFNZU1YgLURfRklMRV9PRkZTRVRfQklUUz02NCAtRF9MQVJHRUZJTEVfU09VUkNFIgogCiBkb19pbnN0YWxsICgpIHsKIAlpbnN0YWxsIC1kICR7RH0ke21hbmRpcn0vbWFuOCBcCkBAIC01NywyMSArNTgsNiBAQAogCiBGSUxFU18ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCcke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXNrbG9nZC5jb25mJywgJycsIGQpfSIKIAotIyBzeXNrbG9nZCBwYWNrYWdlIGhhcyBubyBpbnRlcm5hbCBzeXN0ZW1kIHN1cHBvcnQsIHNvIHdlIHdlaWdoIGJ1c3lib3gncwotIyBzeXNrbG9nZCB1dGlsaXR5IG92ZXIgaXQgaW4gY2FzZSBvZiBzeXN0ZW1kCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJzEwJywnMTAwJyxkKX0iCi0KLUFMVEVSTkFUSVZFXyR7UE59ID0gInN5c2xvZ2Qga2xvZ2Qgc3lzbG9nLWNvbmYgXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN2aW5pdCcsJ3N5c2xvZy1pbml0JywnJyxkKX0iCi0KLUFMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJzeXNsb2dkLjgiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbc3lzbG9nZC44XSA9ICIke21hbmRpcn0vbWFuOC9zeXNsb2dkLjgiCi0KLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtzeXNsb2dkXSA9ICIke2Jhc2Vfc2JpbmRpcn0vc3lzbG9nZCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtrbG9nZF0gPSAiJHtiYXNlX3NiaW5kaXJ9L2tsb2dkIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3N5c2xvZy1pbml0XSA9ICIke3N5c2NvbmZkaXJ9L2luaXQuZC9zeXNsb2ciCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbc3lzbG9nLWNvbmZdID0gIiR7c3lzY29uZmRpcn0vc3lzbG9nLmNvbmYiCi0KIHBrZ19wcmVybV8ke1BOfSAoKSB7CiAJaWYgdGVzdCAieCREIiA9ICJ4IjsgdGhlbgogCWlmIHRlc3QgIiQxIiA9ICJ1cGdyYWRlIiAtbyAiJDEiID0gInJlbW92ZSI7IHRoZW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0LmluYwppbmRleCBiYjU2MjlkLi4wYmM3ZTE0IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXQuaW5jCkBAIC0xNyw4ICsxNywxMCBAQAogIyBhdXRvdG9vbHMtYnJva2Vuc2VwIGFzIHRoaXMgcGFja2FnZSBkb2Vzbid0IHVzZSBhdXRvbWFrZQogaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIGdldHRleHQgc3lzdGVtZAogCi1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1zZW5zb3JzIgotRVhUUkFfT0VNQUtFICs9ICdMRkxBR1M9IiInCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tsbS1zZW5zb3JzXSA9ICItLWVuYWJsZS1zZW5zb3JzLC0tZGlzYWJsZS1zZW5zb3JzLGxtc2Vuc29ycyxsbXNlbnNvcnMtbGlic2Vuc29ycyIKKworRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtc3RyaXBwaW5nIgogCiBTWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59IgogU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInN5c3N0YXQuc2VydmljZSIKQEAgLTMyLDEwICszNCwxNiBAQAogCWF1dG90b29sc19kb19pbnN0YWxsCiAKIAkjIGRvbid0IGluc3RhbGwgL3Zhci9sb2cvc2Egd2hlbiBwb3B1bGF0aW5nIHJvb3Rmcy4gRG8gaXQgdGhyb3VnaCB2b2xhdGlsZQotCiAJcm0gLXJmICR7RH0vdmFyCi0JaW5zdGFsbCAtZCAke0R9L2V0Yy9kZWZhdWx0L3ZvbGF0aWxlcwotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9Lzk5X3N5c3N0YXQgJHtEfS9ldGMvZGVmYXVsdC92b2xhdGlsZXMKKwlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3Zpbml0JywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKwkgICAgICAgIGluc3RhbGwgLWQgJHtEfS9ldGMvZGVmYXVsdC92b2xhdGlsZXMKKwkJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vOTlfc3lzc3RhdCAke0R9L2V0Yy9kZWZhdWx0L3ZvbGF0aWxlcworCWZpCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKwkgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAorCSAgICAgICAgZWNobyAiZCAke2xvY2Fsc3RhdGVkaXJ9L2xvZy9zYSAtIC0gLSAtIiBcCisJCSAgICAgPiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL3N5c3N0YXQuY29uZgorCWZpCiAKIAlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCiAJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc3lzc3RhdC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCkBAIC01NSw0ICs2MywzIEBACiBGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3NhIgogCiBUQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKLUxERkxBR1NfYXBwZW5kX2xpYmMtdWNsaWJjID0gIiAtbGludGwiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdF8xMS41LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdF8xMS41LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdmZjM2M2IuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXRfMTEuNS40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1yZXF1aXJlIHN5c3N0YXQuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWEyM2E3NGIzZjRjYWY5NjE2MjMwNzg5ZDk0MjE3YWNiIgotCi1TUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1JbmNsdWRlLW5lZWRlZC1oZWFkZXJzLWV4cGxpY2l0bHkucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJmMTZhZThlZGQ0NjJmNTE5OWVlMDMzZjdjMGUyYzE5NyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxZTEwMDg2NTY1NzVlNzA0ODZiNDU2ZTc5Nzc1ZTk4ZDNiODczMmQ3ZTJjYjQwODU1OTIwOWJkMDMxOGUwODA3IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXRfMTEuNS43LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXRfMTEuNS43LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyYWY5MzEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdF8xMS41LjcuYmIKQEAgLTAsMCArMSw4IEBACityZXF1aXJlIHN5c3N0YXQuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWEyM2E3NGIzZjRjYWY5NjE2MjMwNzg5ZDk0MjE3YWNiIgorCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1JbmNsdWRlLW5lZWRlZC1oZWFkZXJzLWV4cGxpY2l0bHkucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4ZjRhNWQwZGUyOWYxMDU2MTUzZTI1ZTdhOWM1MThkMiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0YTM4ZWZhYTBjYTg1ZWU1NDg0ZDA0NmJkNDI3MDEyOTc5MjY0ZmVmMTdmMDdmZDc4NTU4NjBlNTkyODE5NDgyIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzXzcuNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVyc183LjYuYmIKaW5kZXggNWZkYmJjZS4uMWVmZmVmMSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzXzcuNi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RjcC13cmFwcGVycy90Y3Atd3JhcHBlcnNfNy42LmJiCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJTZWN1cml0eSB0b29sIHRoYXQgaXMgYSB3cmFwcGVyIGZvciBUQ1AgZGFlbW9ucyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuc29mdHBhbm9yYW1hLm9yZy9OZXQvTmV0d29ya19zZWN1cml0eS9UQ1Bfd3JhcHBlcnMvIgogREVTQ1JJUFRJT04gPSAiVG9vbHMgZm9yIG1vbml0b3JpbmcgYW5kIGZpbHRlcmluZyBpbmNvbWluZyByZXF1ZXN0cyBmb3IgdGNwIFwKICAgICAgICAgICAgICAgIHNlcnZpY2VzLiIKIFNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgpAQCAtNzMsNyArNzQsNiBAQAogICAgICAgICAgICAgICAgICdFWFRSQV9DRkxBR1M9JHtDRkxBR1N9IC1EU1lTX0VSUkxJU1RfREVGSU5FRCAtREhBVkVfU1RSRVJST1IgLURIQVZFX1dFQUtTWU1TIC1EX1JFRU5UUkFOVCAtRElORVQ2PTEgLURzc19mYW1pbHk9X19zc19mYW1pbHkgLURzc19sZW49X19zc19sZW4nIgogCiBFWFRSQV9PRU1BS0VfTkVUR1JPVVAgPSAiLURORVRHUk9VUCAtRFVTRV9HRVRET01BSU4iCi1FWFRSQV9PRU1BS0VfTkVUR1JPVVBfbGliYy11Y2xpYmMgPSAiLURVU0VfR0VURE9NQUlOIgogRVhUUkFfT0VNQUtFX05FVEdST1VQX2xpYmMtbXVzbCA9ICItRFVTRV9HRVRET01BSU4iCiAKIEVYVFJBX09FTUFLRV9hcHBlbmRfbGliYy1tdXNsID0gIiAnTElCUz0nIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvLWR1bW15LW5hdGl2ZS90ZXhpbmZvLWR1bW15L3RlbXBsYXRlLnB5IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvLWR1bW15LW5hdGl2ZS90ZXhpbmZvLWR1bW15L3RlbXBsYXRlLnB5CmluZGV4IDhiNzAzM2UuLmUzNjlmNzQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby1kdW1teS1uYXRpdmUvdGV4aW5mby1kdW1teS90ZW1wbGF0ZS5weQorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8tZHVtbXktbmF0aXZlL3RleGluZm8tZHVtbXkvdGVtcGxhdGUucHkKQEAgLTEsNCArMSw0IEBACi0jISAvdXNyL2Jpbi9lbnYgcHl0aG9uMi43CisjISAvdXNyL2Jpbi9lbnYgcHl0aG9uMwogCiAjIHRlbXBsYXRlLnB5IChhbmQgb3RoZXIgZmlsZW5hbWVzKQogIyBCeSBNYXggRWxpYXNlciAobWF4LmVsaWFzZXJAaW50ZWwuY29tKQpAQCAtNzEsNyArNzEsNyBAQAogICAgICAgIHRoaXNfYmluYXJ5ICsgIiBpcyBub3Qgb25lIG9mICIgKyAnLCAnLmpvaW4gKHZhbGlkX2JpbmFyaWVzKQogCiBpZiAiLS12ZXJzaW9uIiBpbiBzeXMuYXJndjoKLSAgICBwcmludCB2ZXJzaW9uX3N0cgorICAgIHByaW50KHZlcnNpb25fc3RyKQogICAgIHN5cy5leGl0ICgwKQogCiAjIEZvciBkZWJ1Z2dpbmcKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvXzYuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvXzYuMy5iYgppbmRleCBkODI3MzFlLi5mNThkZjkyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8vdGV4aW5mb182LjMuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm9fNi4zLmJiCkBAIC03OSw0ICs3OSwxMCBAQAogICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHt0ZXhfdGV4aW5mb30gXAogICAgICAgICAgICAgICAgICAgICR7bWFuZGlyfS9tYW4xICR7bWFuZGlyfS9tYW41IgogCisjIExpZSBhYm91dCBwcm92aWRpbmcgdGhlIExvY2FsZTo6Z2V0dGV4dF94cyBtb2R1bGUuIEl0IGlzIG5vdCBhY3R1YWxseSBidWlsdCwKKyMgYnV0IHRoZSBjb2RlIHdpbGwgdGVzdCBmb3IgaXQgYW5kIGlmIG5vdCBmb3VuZCB1c2UgTG9jYWxlOjpnZXR0ZXh0X3BwIGluc3RlYWQuCisjIEhvd2V2ZXIsIHRoaXMgY2F1c2VzIGEgZmlsZSBkZXBlbmRlbmN5IG9uIHBlcmwoTG9jYWxlOjpnZXR0ZXh0X3hzKSB0byBiZQorIyBnZW5lcmF0ZWQsIHdoaWNoIG11c3QgYmUgc2F0aXNmaWVkLgorUlBST1ZJREVTXyR7UE59ICs9ICJwZXJsKExvY2FsZTo6Z2V0dGV4dF94cykiCisKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpjb2RlL2ZpbGVzLzAwMDEtRml4LU1ha2VmaWxlLXF1b3RpbmctYnVnLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emNvZGUvZmlsZXMvMDAwMS1GaXgtTWFrZWZpbGUtcXVvdGluZy1idWcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQ5ZmEwOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpjb2RlL2ZpbGVzLzAwMDEtRml4LU1ha2VmaWxlLXF1b3RpbmctYnVnLnBhdGNoCkBAIC0wLDAgKzEsMTc0IEBACitGcm9tIGI1MjBkMjBiODEyMmE3ODNmOTlmMDg4NzU4Yjc4ZDkyOGY3MGVlMzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1PgorRGF0ZTogTW9uLCAyMyBPY3QgMjAxNyAxMTo0Mjo0NSAtMDcwMAorU3ViamVjdDogW1BBVENIXSBGaXggTWFrZWZpbGUgcXVvdGluZyBidWcKKworUHJvYmxlbSB3aXRoIElOU1RBTExBUkdTIHJlcG9ydGVkIGJ5IFplZnJhbSBpbjoKK2h0dHBzOi8vbW0uaWNhbm4ub3JnL3BpcGVybWFpbC90ei8yMDE3LU9jdG9iZXIvMDI1MzYwLmh0bWwKK0ZpeCBzaW1pbGFyIHByb2JsZW1zIHRvby4KKyogTWFrZWZpbGUgKFpJQ19JTlNUQUxMLCBWQUxJREFURV9FTlYsIENDLCBpbnN0YWxsKQorKElOU1RBTEwsIHZlcnNpb24sIElOU1RBTExBUkdTLCByaWdodF9wb3NpeCwgcG9zaXhfcmlnaHQpCisoY2hlY2tfcHVibGljKTogVXNlIGFwb3N0cm9waGVzIHRvIHByZXZlbnQgdW5kZXNpcmFibGUKK2ludGVycHJldGF0aW9uIG9mIG5hbWVzIGJ5IHRoZSBzaGVsbC4gIFdlIHN0aWxsIGRvIG5vdCBzdXBwb3J0CitkaXJlY3RvcnkgbmFtZXMgY29udGFpbmluZyBhcG9zdHJvcGhlcyBvciBuZXdsaW5lcywgYnV0IHRoaXMgaXMKK2dvb2QgZW5vdWdoLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KKworKiBORVdTOiBNZW50aW9uIHRoaXMuCistLS0KKyBNYWtlZmlsZSB8IDY0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBORVdTICAgICB8ICA4ICsrKysrKysrCisgMiBmaWxlcyBjaGFuZ2VkLCA0MCBpbnNlcnRpb25zKCspLCAzMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKK2luZGV4IGM5MmVkYzAuLjk3NjQ5Y2EgMTAwNjQ0CistLS0gYS9NYWtlZmlsZQorKysrIGIvTWFrZWZpbGUKK0BAIC0zMTMsNyArMzEzLDcgQEAgWkZMQUdTPQorIAorICMgSG93IHRvIHVzZSB6aWMgdG8gaW5zdGFsbCB0eiBiaW5hcnkgZmlsZXMuCisgCistWklDX0lOU1RBTEw9CSQoWklDKSAtZCAkKERFU1RESVIpJChUWkRJUikgJChMRUFQU0VDT05EUykKKytaSUNfSU5TVEFMTD0JJChaSUMpIC1kICckKERFU1RESVIpJChUWkRJUiknICQoTEVBUFNFQ09ORFMpCisgCisgIyBUaGUgbmFtZSBvZiBhIFBvc2l4LWNvbXBsaWFudCAnYXdrJyBvbiB5b3VyIHN5c3RlbS4KKyBBV0s9CQlhd2sKK0BAIC0zNDEsOCArMzQxLDggQEAgU0dNTF9DQVRBTE9HX0ZJTEVTPSBcCisgVkFMSURBVEUgPSBuc2dtbHMKKyBWQUxJREFURV9GTEFHUyA9IC1zIC1CIC13YWxsIC13bm8tdW51c2VkLXBhcmFtCisgVkFMSURBVEVfRU5WID0gXAorLSAgU0dNTF9DQVRBTE9HX0ZJTEVTPSQoU0dNTF9DQVRBTE9HX0ZJTEVTKSBcCistICBTR01MX1NFQVJDSF9QQVRIPSQoU0dNTF9TRUFSQ0hfUEFUSCkgXAorKyAgU0dNTF9DQVRBTE9HX0ZJTEVTPSckKFNHTUxfQ0FUQUxPR19GSUxFUyknIFwKKysgIFNHTUxfU0VBUkNIX1BBVEg9JyQoU0dNTF9TRUFSQ0hfUEFUSCknIFwKKyAgIFNQX0NIQVJTRVRfRklYRUQ9WUVTIFwKKyAgIFNQX0VOQ09ESU5HPVVURi04CisgCitAQCAtMzk2LDcgKzM5Niw3IEBAIEdaSVBGTEFHUz0JLTluCisgI01BS0U9CQltYWtlCisgCisgY2M9CQljYworLUNDPQkJJChjYykgLURUWkRJUj1cIiQoVFpESVIpXCIKKytDQz0JCSQoY2MpIC1EVFpESVI9JyIkKFRaRElSKSInCisgCisgQVI9CQlhcgorIAorQEAgLTQ3MywyOSArNDczLDI5IEBAIGFsbDoJCXR6c2VsZWN0IHllYXJpc3R5cGUgemljIHpkdW1wIGxpYnR6LmEgJChUQUJEQVRBKQorIEFMTDoJCWFsbCBkYXRlICQoRU5DSElMQURBKQorIAorIGluc3RhbGw6CWFsbCAkKERBVEEpICQoUkVETykgJChNQU5TKQorLQkJbWtkaXIgLXAgJChERVNURElSKSQoRVRDRElSKSAkKERFU1RESVIpJChUWkRJUikgXAorLQkJCSQoREVTVERJUikkKExJQkRJUikgXAorLQkJCSQoREVTVERJUikkKE1BTkRJUikvbWFuMyAkKERFU1RESVIpJChNQU5ESVIpL21hbjUgXAorLQkJCSQoREVTVERJUikkKE1BTkRJUikvbWFuOAorKwkJbWtkaXIgLXAgJyQoREVTVERJUikkKEVUQ0RJUiknICckKERFU1RESVIpJChUWkRJUiknIFwKKysJCQknJChERVNURElSKSQoTElCRElSKScgXAorKwkJCSckKERFU1RESVIpJChNQU5ESVIpL21hbjMnICckKERFU1RESVIpJChNQU5ESVIpL21hbjUnIFwKKysJCQknJChERVNURElSKSQoTUFORElSKS9tYW44JworIAkJJChaSUNfSU5TVEFMTCkgLWwgJChMT0NBTFRJTUUpIC1wICQoUE9TSVhSVUxFUykKKy0JCWNwIC1mICQoVEFCREFUQSkgJChERVNURElSKSQoVFpESVIpLy4KKy0JCWNwIHR6c2VsZWN0IHppYyB6ZHVtcCAkKERFU1RESVIpJChFVENESVIpLy4KKy0JCWNwIGxpYnR6LmEgJChERVNURElSKSQoTElCRElSKS8uCistCQkkKFJBTkxJQikgJChERVNURElSKSQoTElCRElSKS9saWJ0ei5hCistCQljcCAtZiBuZXdjdGltZS4zIG5ld3R6c2V0LjMgJChERVNURElSKSQoTUFORElSKS9tYW4zLy4KKy0JCWNwIC1mIHR6ZmlsZS41ICQoREVTVERJUikkKE1BTkRJUikvbWFuNS8uCistCQljcCAtZiB0enNlbGVjdC44IHpkdW1wLjggemljLjggJChERVNURElSKSQoTUFORElSKS9tYW44Ly4KKysJCWNwIC1mICQoVEFCREFUQSkgJyQoREVTVERJUikkKFRaRElSKS8uJworKwkJY3AgdHpzZWxlY3QgemljIHpkdW1wICckKERFU1RESVIpJChFVENESVIpLy4nCisrCQljcCBsaWJ0ei5hICckKERFU1RESVIpJChMSUJESVIpLy4nCisrCQkkKFJBTkxJQikgJyQoREVTVERJUikkKExJQkRJUikvbGlidHouYScKKysJCWNwIC1mIG5ld2N0aW1lLjMgbmV3dHpzZXQuMyAnJChERVNURElSKSQoTUFORElSKS9tYW4zLy4nCisrCQljcCAtZiB0emZpbGUuNSAnJChERVNURElSKSQoTUFORElSKS9tYW41Ly4nCisrCQljcCAtZiB0enNlbGVjdC44IHpkdW1wLjggemljLjggJyQoREVTVERJUikkKE1BTkRJUikvbWFuOC8uJworIAorIElOU1RBTEw6CUFMTCBpbnN0YWxsIGRhdGUuMQorLQkJbWtkaXIgLXAgJChERVNURElSKSQoQklORElSKSAkKERFU1RESVIpJChNQU5ESVIpL21hbjEKKy0JCWNwIGRhdGUgJChERVNURElSKSQoQklORElSKS8uCistCQljcCAtZiBkYXRlLjEgJChERVNURElSKSQoTUFORElSKS9tYW4xLy4KKysJCW1rZGlyIC1wICckKERFU1RESVIpJChCSU5ESVIpJyAnJChERVNURElSKSQoTUFORElSKS9tYW4xJworKwkJY3AgZGF0ZSAnJChERVNURElSKSQoQklORElSKS8uJworKwkJY3AgLWYgZGF0ZS4xICckKERFU1RESVIpJChNQU5ESVIpL21hbjEvLicKKyAKKyB2ZXJzaW9uOgkkKFZFUlNJT05fREVQUykKKyAJCXsgKHR5cGUgZ2l0KSA+L2Rldi9udWxsIDI+JjEgJiYgXAorIAkJICBWPWBnaXQgZGVzY3JpYmUgLS1tYXRjaCAnWzAtOV1bMC05XVswLTldWzAtOV1bYS16XSonIFwKKyAJCQkJLS1hYmJyZXY9NyAtLWRpcnR5YCB8fCBcCistCQkgIFY9JChWRVJTSU9OKTsgfSAmJiBcCisrCQkgIFY9JyQoVkVSU0lPTiknOyB9ICYmIFwKKyAJCXByaW50ZiAnJXNcbicgIiQkViIgPiRALm91dAorIAkJbXYgJEAub3V0ICRACisgCitAQCAtNTI5LDEyICs1MjksMTIgQEAgbGVhcHNlY29uZHM6CSQoTEVBUF9ERVBTKQorICMgQXJndW1lbnRzIHRvIHBhc3MgdG8gc3VibWFrZXMgb2YgaW5zdGFsbF9kYXRhLgorICMgVGhleSBjYW4gYmUgb3ZlcnJpZGRlbiBieSBsYXRlciBzdWJtYWtlIGFyZ3VtZW50cy4KKyBJTlNUQUxMQVJHUyA9IFwKKy0gQkFDS1dBUkQ9JChCQUNLV0FSRCkgXAorLSBERVNURElSPSQoREVTVERJUikgXAorKyBCQUNLV0FSRD0nJChCQUNLV0FSRCknIFwKKysgREVTVERJUj0nJChERVNURElSKScgXAorICBMRUFQU0VDT05EUz0nJChMRUFQU0VDT05EUyknIFwKKyAgUEFDS1JBVERBVEE9JyQoUEFDS1JBVERBVEEpJyBcCistIFRaRElSPSQoVFpESVIpIFwKKy0gWUVBUklTVFlQRT0kKFlFQVJJU1RZUEUpIFwKKysgVFpESVI9JyQoVFpESVIpJyBcCisrIFlFQVJJU1RZUEU9JyQoWUVBUklTVFlQRSknIFwKKyAgWklDPSckKFpJQyknCisgCisgIyAnbWFrZSBpbnN0YWxsX2RhdGEnIGluc3RhbGxzIG9uZSBzZXQgb2YgdHogYmluYXJ5IGZpbGVzLgorQEAgLTU1OCwxNiArNTU4LDE2IEBAIHJpZ2h0X29ubHk6CisgIyBZb3UgbXVzdCByZXBsYWNlIGFsbCBvZiAkKFRaRElSKSB0byBzd2l0Y2ggZnJvbSBub3QgdXNpbmcgbGVhcCBzZWNvbmRzCisgIyB0byB1c2luZyB0aGVtLCBvciB2aWNlIHZlcnNhLgorIHJpZ2h0X3Bvc2l4OglyaWdodF9vbmx5CistCQlybSAtZnIgJChERVNURElSKSQoVFpESVIpLWxlYXBzCistCQlsbiAtcyAkKFRaRElSX0JBU0VOQU1FKSAkKERFU1RESVIpJChUWkRJUiktbGVhcHMgfHwgXAorLQkJICAkKE1BS0UpICQoSU5TVEFMTEFSR1MpIFRaRElSPSQoVFpESVIpLWxlYXBzIHJpZ2h0X29ubHkKKy0JCSQoTUFLRSkgJChJTlNUQUxMQVJHUykgVFpESVI9JChUWkRJUiktcG9zaXggcG9zaXhfb25seQorKwkJcm0gLWZyICckKERFU1RESVIpJChUWkRJUiktbGVhcHMnCisrCQlsbiAtcyAnJChUWkRJUl9CQVNFTkFNRSknICckKERFU1RESVIpJChUWkRJUiktbGVhcHMnIHx8IFwKKysJCSAgJChNQUtFKSAkKElOU1RBTExBUkdTKSBUWkRJUj0nJChUWkRJUiktbGVhcHMnIHJpZ2h0X29ubHkKKysJCSQoTUFLRSkgJChJTlNUQUxMQVJHUykgVFpESVI9JyQoVFpESVIpLXBvc2l4JyBwb3NpeF9vbmx5CisgCisgcG9zaXhfcmlnaHQ6CXBvc2l4X29ubHkKKy0JCXJtIC1mciAkKERFU1RESVIpJChUWkRJUiktcG9zaXgKKy0JCWxuIC1zICQoVFpESVJfQkFTRU5BTUUpICQoREVTVERJUikkKFRaRElSKS1wb3NpeCB8fCBcCistCQkgICQoTUFLRSkgJChJTlNUQUxMQVJHUykgVFpESVI9JChUWkRJUiktcG9zaXggcG9zaXhfb25seQorLQkJJChNQUtFKSAkKElOU1RBTExBUkdTKSBUWkRJUj0kKFRaRElSKS1sZWFwcyByaWdodF9vbmx5CisrCQlybSAtZnIgJyQoREVTVERJUikkKFRaRElSKS1wb3NpeCcKKysJCWxuIC1zICckKFRaRElSX0JBU0VOQU1FKScgJyQoREVTVERJUikkKFRaRElSKS1wb3NpeCcgfHwgXAorKwkJICAkKE1BS0UpICQoSU5TVEFMTEFSR1MpIFRaRElSPSckKFRaRElSKS1wb3NpeCcgcG9zaXhfb25seQorKwkJJChNQUtFKSAkKElOU1RBTExBUkdTKSBUWkRJUj0nJChUWkRJUiktbGVhcHMnIHJpZ2h0X29ubHkKKyAKKyAjIFRoaXMgb2Jzb2xlc2NlbnQgcnVsZSBpcyBwcmVzZW50IGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoCisgIyB0eiByZWxlYXNlcyAyMDE0ZyB0aHJvdWdoIDIwMTVnLiAgSXQgc2hvdWxkIGdvIGF3YXkgZXZlbnR1YWxseS4KK0BAIC03NjQsNyArNzY0LDcgQEAgc2V0LXRpbWVzdGFtcHMub3V0OiAkKEVOQ0hJTEFEQSkKKyAKKyBjaGVja19wdWJsaWM6CisgCQkkKE1BS0UpIG1haW50YWluZXItY2xlYW4KKy0JCSQoTUFLRSkgIkNGTEFHUz0kKEdDQ19ERUJVR19GTEFHUykiIEFMTAorKwkJJChNQUtFKSBDRkxBR1M9JyQoR0NDX0RFQlVHX0ZMQUdTKScgQUxMCisgCQlta2RpciAtcCBwdWJsaWMuZGlyCisgCQlmb3IgaSBpbiAkKFREQVRBKSB0emRhdGEuemk7IGRvIFwKKyAJCSAgJCh6aWMpIC12IC1kIHB1YmxpYy5kaXIgJCRpIDI+JjEgfHwgZXhpdDsgXAorZGlmZiAtLWdpdCBhL05FV1MgYi9ORVdTCitpbmRleCBiZDJiZWMyLi43NWFiMDk1IDEwMDY0NAorLS0tIGEvTkVXUworKysrIGIvTkVXUworQEAgLTEsNSArMSwxMyBAQAorIE5ld3MgZm9yIHRoZSB0eiBkYXRhYmFzZQorIAorK1VucmVsZWFzZWQsIGV4cGVyaW1lbnRhbCBjaGFuZ2VzCisrCisrICBDaGFuZ2VzIHRvIGJ1aWxkIHByb2NlZHVyZQorKworKyAgICBUaGUgTWFrZWZpbGUgbm93IHF1b3RlcyB2YWx1ZXMgbGlrZSBCQUNLV0FSRCBtb3JlIGNhcmVmdWxseSB3aGVuCisrICAgIHBhc3NpbmcgdGhlbSB0byB0aGUgc2hlbGwuICAoUHJvYmxlbSByZXBvcnRlZCBieSBaZWZyYW0uKQorKworKworIFJlbGVhc2UgMjAxN2MgLSAyMDE3LTEwLTIwIDE0OjQ5OjM0IC0wNzAwCisgCisgICBCcmllZmx5OgorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3R6Y29kZS9maWxlcy8wMDAyLVBvcnQtemR1bXAtdG8tQzkwLXNucHJpbnRmLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emNvZGUvZmlsZXMvMDAwMi1Qb3J0LXpkdW1wLXRvLUM5MC1zbnByaW50Zi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44N2FmZTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emNvZGUvZmlsZXMvMDAwMi1Qb3J0LXpkdW1wLXRvLUM5MC1zbnByaW50Zi5wYXRjaApAQCAtMCwwICsxLDExNSBAQAorRnJvbSBlMjMxZGE0ZmIyYmViMTdjNjBiNGIxYTVjMjc2MzY2ZDZhNmU0MzNmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGF1bCBFZ2dlcnQgPGVnZ2VydEBjcy51Y2xhLmVkdT4KK0RhdGU6IE1vbiwgMjMgT2N0IDIwMTcgMTc6NTg6MzYgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gUG9ydCB6ZHVtcCB0byBDOTAgKyBzbnByaW50ZgorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitQcm9ibGVtIHJlcG9ydGVkIGJ5IEpvbiBTa2VldCBpbjoKK2h0dHBzOi8vbW0uaWNhbm4ub3JnL3BpcGVybWFpbC90ei8yMDE3LU9jdG9iZXIvMDI1MzYyLmh0bWwKKyogTkVXUzogTWVudGlvbiB0aGlzLgorKiB6ZHVtcC5jIChteV9zbnByaW50Zik6IE5ldyBtYWNybyBvciBmdW5jdGlvbi4gIElmIGEgbWFjcm8sIGl0IGlzCitqdXN0IHNucHJpbnRmLiAgSWYgYSBmdW5jdGlvbiwgaXQgaXMgdGhlIHNhbWUgYXMgdGhlIG9sZCBzbnByaW50Zgorc3RhdGljIGZ1bmN0aW9uLCB3aXRoIGFuIEFUVFJJQlVURV9GT1JNQVQgdG8gcGFjaWZ5IG1vZGVybiBHQ0MuCitBbGwgdXNlcyBvZiBzbnByaW50ZiBjaGFuZ2VkIHRvIHVzZSBteV9zbnByaW50Zi4gIFRoaXMgd2F5LAoraW5zdGFsbGVycyBkb27igJl0IG5lZWQgdG8gc3BlY2lmeSAtREhBVkVfU05QUklOVEYgaWYgdGhleSBhcmUgdXNpbmcKK2EgcHJlLUM5OSBjb21waWxlciB3aXRoIGEgbGlicmFyeSB0aGF0IGhhcyBzbnByaW50Zi4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+CisKKy0tLQorIE5FV1MgICAgfCAgNCArKysrCisgemR1bXAuYyB8IDI5ICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL05FV1MgYi9ORVdTCitpbmRleCA3NWFiMDk1Li5kZWEwOGI4IDEwMDY0NAorLS0tIGEvTkVXUworKysrIGIvTkVXUworQEAgLTcsNiArNywxMCBAQCBVbnJlbGVhc2VkLCBleHBlcmltZW50YWwgY2hhbmdlcworICAgICBUaGUgTWFrZWZpbGUgbm93IHF1b3RlcyB2YWx1ZXMgbGlrZSBCQUNLV0FSRCBtb3JlIGNhcmVmdWxseSB3aGVuCisgICAgIHBhc3NpbmcgdGhlbSB0byB0aGUgc2hlbGwuICAoUHJvYmxlbSByZXBvcnRlZCBieSBaZWZyYW0uKQorIAorKyAgICBCdWlsZGVycyBubyBsb25nZXIgbmVlZCB0byBzcGVjaWZ5IC1ESEFWRV9TTlBSSU5URiBvbiBwbGF0Zm9ybXMKKysgICAgdGhhdCBoYXZlIHNucHJpbnRmIGFuZCB1c2UgcHJlLUM5OSBjb21waWxlcnMuICAoUHJvYmxlbSByZXBvcnRlZAorKyAgICBieSBKb24gU2tlZXQuKQorKworIAorIFJlbGVhc2UgMjAxN2MgLSAyMDE3LTEwLTIwIDE0OjQ5OjM0IC0wNzAwCisgCitkaWZmIC0tZ2l0IGEvemR1bXAuYyBiL3pkdW1wLmMKK2luZGV4IDhlM2JmM2UuLmQ0ZTYwODQgMTAwNjQ0CistLS0gYS96ZHVtcC5jCisrKysgYi96ZHVtcC5jCitAQCAtNzk1LDEyICs3OTUsMTQgQEAgc2hvdyh0aW1lem9uZV90IHR6LCBjaGFyICp6b25lLCB0aW1lX3QgdCwgYm9vbCB2KQorIAkJYWJicm9rKGFiYnIodG1wKSwgem9uZSk7CisgfQorIAorLSNpZiAhSEFWRV9TTlBSSU5URgorKyNpZiBIQVZFX1NOUFJJTlRGCisrIyBkZWZpbmUgbXlfc25wcmludGYgc25wcmludGYKKysjZWxzZQorICMgaW5jbHVkZSA8c3RkYXJnLmg+CisgCisgLyogQSBzdWJzdGl0dXRlIGZvciBzbnByaW50ZiB0aGF0IGlzIGdvb2QgZW5vdWdoIGZvciB6ZHVtcC4gICovCistc3RhdGljIGludAorLXNucHJpbnRmKGNoYXIgKnMsIHNpemVfdCBzaXplLCBjaGFyIGNvbnN0ICpmb3JtYXQsIC4uLikKKytzdGF0aWMgaW50IEFUVFJJQlVURV9GT1JNQVQoKHByaW50ZiwgMywgNCkpCisrbXlfc25wcmludGYoY2hhciAqcywgc2l6ZV90IHNpemUsIGNoYXIgY29uc3QgKmZvcm1hdCwgLi4uKQorIHsKKyAgIGludCBuOworICAgdmFfbGlzdCBhcmdzOworQEAgLTgzOSwxMCArODQxLDEwIEBAIGZvcm1hdF9sb2NhbF90aW1lKGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsIHN0cnVjdCB0bSBjb25zdCAqdG0pCisgeworICAgaW50IHNzID0gdG0tPnRtX3NlYywgbW0gPSB0bS0+dG1fbWluLCBoaCA9IHRtLT50bV9ob3VyOworICAgcmV0dXJuIChzcworLQkgID8gc25wcmludGYoYnVmLCBzaXplLCAiJTAyZDolMDJkOiUwMmQiLCBoaCwgbW0sIHNzKQorKwkgID8gbXlfc25wcmludGYoYnVmLCBzaXplLCAiJTAyZDolMDJkOiUwMmQiLCBoaCwgbW0sIHNzKQorIAkgIDogbW0KKy0JICA/IHNucHJpbnRmKGJ1Ziwgc2l6ZSwgIiUwMmQ6JTAyZCIsIGhoLCBtbSkKKy0JICA6IHNucHJpbnRmKGJ1Ziwgc2l6ZSwgIiUwMmQiLCBoaCkpOworKwkgID8gbXlfc25wcmludGYoYnVmLCBzaXplLCAiJTAyZDolMDJkIiwgaGgsIG1tKQorKwkgIDogbXlfc25wcmludGYoYnVmLCBzaXplLCAiJTAyZCIsIGhoKSk7CisgfQorIAorIC8qIFN0b3JlIGludG8gQlVGLCBvZiBzaXplIFNJWkUsIGEgZm9ybWF0dGVkIFVUQyBvZmZzZXQgZm9yIHRoZQorQEAgLTg3NywxMCArODc5LDEwIEBAIGZvcm1hdF91dGNfb2Zmc2V0KGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUsIHN0cnVjdCB0bSBjb25zdCAqdG0sIHRpbWVfdCB0KQorICAgbW0gPSBvZmYgLyA2MCAlIDYwOworICAgaGggPSBvZmYgLyA2MCAvIDYwOworICAgcmV0dXJuIChzcyB8fCAxMDAgPD0gaGgKKy0JICA/IHNucHJpbnRmKGJ1Ziwgc2l6ZSwgIiVjJTAybGQlMDJkJTAyZCIsIHNpZ24sIGhoLCBtbSwgc3MpCisrCSAgPyBteV9zbnByaW50ZihidWYsIHNpemUsICIlYyUwMmxkJTAyZCUwMmQiLCBzaWduLCBoaCwgbW0sIHNzKQorIAkgIDogbW0KKy0JICA/IHNucHJpbnRmKGJ1Ziwgc2l6ZSwgIiVjJTAybGQlMDJkIiwgc2lnbiwgaGgsIG1tKQorLQkgIDogc25wcmludGYoYnVmLCBzaXplLCAiJWMlMDJsZCIsIHNpZ24sIGhoKSk7CisrCSAgPyBteV9zbnByaW50ZihidWYsIHNpemUsICIlYyUwMmxkJTAyZCIsIHNpZ24sIGhoLCBtbSkKKysJICA6IG15X3NucHJpbnRmKGJ1Ziwgc2l6ZSwgIiVjJTAybGQiLCBzaWduLCBoaCkpOworIH0KKyAKKyAvKiBTdG9yZSBpbnRvIEJVRiAob2Ygc2l6ZSBTSVpFKSBhIHF1b3RlZCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgUC4KK0BAIC05ODMsMTUgKzk4NSwxNiBAQCBpc3RyZnRpbWUoY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSwgY2hhciBjb25zdCAqdGltZV9mbXQsCisgCSAgICBmb3IgKGFicCA9IGFiOyBpc19hbHBoYSgqYWJwKTsgYWJwKyspCisgCSAgICAgIGNvbnRpbnVlOworIAkgICAgbGVuID0gKCEqYWJwICYmICphYgorLQkJICAgPyBzbnByaW50ZihiLCBzLCAiJXMiLCBhYikKKysJCSAgID8gbXlfc25wcmludGYoYiwgcywgIiVzIiwgYWIpCisgCQkgICA6IGZvcm1hdF9xdW90ZWRfc3RyaW5nKGIsIHMsIGFiKSk7CisgCSAgICBpZiAocyA8PSBsZW4pCisgCSAgICAgIHJldHVybiBmYWxzZTsKKyAJICAgIGIgKz0gbGVuLCBzIC09IGxlbjsKKyAJICB9CistCSAgZm9ybWF0dGVkX2xlbiA9ICh0bS0+dG1faXNkc3QKKy0JCQkgICA/IHNucHJpbnRmKGIsIHMsICYiXHRcdCVkIltzaG93X2FiYnJdLCB0bS0+dG1faXNkc3QpCistCQkJICAgOiAwKTsKKysJICBmb3JtYXR0ZWRfbGVuCisrCSAgICA9ICh0bS0+dG1faXNkc3QKKysJICAgICAgID8gbXlfc25wcmludGYoYiwgcywgJiJcdFx0JWQiW3Nob3dfYWJicl0sIHRtLT50bV9pc2RzdCkKKysJICAgICAgIDogMCk7CisgCX0KKyAJYnJlYWs7CisgICAgICAgfQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3R6Y29kZS90emNvZGUtbmF0aXZlXzIwMTdiLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emNvZGUvdHpjb2RlLW5hdGl2ZV8yMDE3Yi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTY1ZDJjNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3R6Y29kZS90emNvZGUtbmF0aXZlXzIwMTdiLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotIyBub3RlIHRoYXQgd2UgYWxsb3cgZm9yIHVzIHRvIHVzZSBkYXRhIGxhdGVyIHRoYW4gb3VyIGNvZGUgdmVyc2lvbgotIwotU1VNTUFSWSA9ICJ0emNvZGUsIHRpbWV6b25lIHpvbmVpbmZvIHV0aWxzIC0tIHppYywgemR1bXAsIHR6c2VsZWN0IgotTElDRU5TRSA9ICJQRCAmIEJTRCAmIEJTRC0zLUNsYXVzZSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZWYxYTM1MmI5MDFlZTdiNzVhNzVkZjgxNzFkNmFjYTciCi0KLVNSQ19VUkkgPSIgaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzL3JlcG9zaXRvcnkvcmVsZWFzZXMvdHpjb2RlJHtQVn0udGFyLmd6O25hbWU9dHpjb2RlIFwKLSAgICAgICAgICAgaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzL3JlcG9zaXRvcnkvcmVsZWFzZXMvdHpkYXRhJHtQVn0udGFyLmd6O25hbWU9dHpkYXRhIgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly93d3cuaWFuYS5vcmcvdGltZS16b25lcyIKLQotU1JDX1VSSVt0emNvZGUubWQ1c3VtXSA9ICJhZmFmMTVkZWIxMzc1OWU4YjU0M2Q4NjM1MDM4NWIxNiIKLVNSQ19VUklbdHpjb2RlLnNoYTI1NnN1bV0gPSAiNGQxNzM1YmI1NGUyMmI4ZDc0NDNkNGQxZjFhMTNkMDA3YWUxMWJlNzlhMzVlNTFmOGU4MzIyZmI4ZTI5MmQ0MCIKLVNSQ19VUklbdHpkYXRhLm1kNXN1bV0gPSAiNTBkYzBkYzUwYzY4NjQ0YzFmNzA4MDRmMmU3YTE2MjUiCi1TUkNfVVJJW3R6ZGF0YS5zaGEyNTZzdW1dID0gImY4MjQyYTUyMmVhMzQ5NmIwY2U0ZmY0ZjJlNzVhMDQ5MTc4ZGEyMTAwMWEwOGI4ZTY2NmQ4Y2JlMDdkMTgwODYiCi0KLVMgPSAiJHtXT1JLRElSfSIKLQotaW5oZXJpdCBuYXRpdmUKLQotRVhUUkFfT0VNQUtFICs9ICJjYz0nJHtDQ30nIgotCi1kb19pbnN0YWxsICgpIHsKLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9LwotICAgICAgICBpbnN0YWxsIC1tIDc1NSB6aWMgJHtEfSR7YmluZGlyfS8KLSAgICAgICAgaW5zdGFsbCAtbSA3NTUgemR1bXAgJHtEfSR7YmluZGlyfS8KLSAgICAgICAgaW5zdGFsbCAtbSA3NTUgdHpzZWxlY3QgJHtEfSR7YmluZGlyfS8KLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpjb2RlL3R6Y29kZS1uYXRpdmVfMjAxOGMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3R6Y29kZS90emNvZGUtbmF0aXZlXzIwMThjLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1ZTliNzAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3R6Y29kZS90emNvZGUtbmF0aXZlXzIwMThjLmJiCkBAIC0wLDAgKzEsMzAgQEAKKyMgbm90ZSB0aGF0IHdlIGFsbG93IGZvciB1cyB0byB1c2UgZGF0YSBsYXRlciB0aGFuIG91ciBjb2RlIHZlcnNpb24KKyMKK1NVTU1BUlkgPSAidHpjb2RlLCB0aW1lem9uZSB6b25laW5mbyB1dGlscyAtLSB6aWMsIHpkdW1wLCB0enNlbGVjdCIKK0xJQ0VOU0UgPSAiUEQgJiBCU0QgJiBCU0QtMy1DbGF1c2UiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWM2NzljOWQ2YjAyYmMyNzU3YjNlYWY4ZjUzYzQzZmJhIgorCitTUkNfVVJJID0iIGh0dHA6Ly93d3cuaWFuYS5vcmcvdGltZS16b25lcy9yZXBvc2l0b3J5L3JlbGVhc2VzL3R6Y29kZSR7UFZ9LnRhci5nejtuYW1lPXR6Y29kZSBcCisgICAgICAgICAgIGh0dHA6Ly93d3cuaWFuYS5vcmcvdGltZS16b25lcy9yZXBvc2l0b3J5L3JlbGVhc2VzL3R6ZGF0YSR7UFZ9LnRhci5nejtuYW1lPXR6ZGF0YSBcCisgICAgICAgICAgICIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly93d3cuaWFuYS5vcmcvdGltZS16b25lcyIKKworU1JDX1VSSVt0emNvZGUubWQ1c3VtXSA9ICJlNmUwZDRiMmNlM2ZhNjkwNmYzMDMxNTdiZWQyNjEyZSIKK1NSQ19VUklbdHpjb2RlLnNoYTI1NnN1bV0gPSAiMzFmYTdmYzBmOTRhNmZmMmQ2YmM4NzhjMGEzNWU4YWI4YjVhYTBlOGIwMTQ0NWExZDRhOGYxNDc3N2QwZTY2NSIKK1NSQ19VUklbdHpkYXRhLm1kNXN1bV0gPSAiYzQxMmIxNTMxYWRlZjFiZTdhNjQ1YWI3MzRmODZhY2MiCitTUkNfVVJJW3R6ZGF0YS5zaGEyNTZzdW1dID0gIjI4MjVjM2U0YjdlZjUyMGYyNGQzOTNiY2MwMjk0MmY5NzYyZmZkM2U3ZmM5YjIzODUwNzg5ZWQ4ZjIyOTMzZjYiCisKK1MgPSAiJHtXT1JLRElSfSIKKworaW5oZXJpdCBuYXRpdmUKKworRVhUUkFfT0VNQUtFICs9ICJjYz0nJHtDQ30nIgorCitkb19pbnN0YWxsICgpIHsKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9LworICAgICAgICBpbnN0YWxsIC1tIDc1NSB6aWMgJHtEfSR7YmluZGlyfS8KKyAgICAgICAgaW5zdGFsbCAtbSA3NTUgemR1bXAgJHtEfSR7YmluZGlyfS8KKyAgICAgICAgaW5zdGFsbCAtbSA3NTUgdHpzZWxlY3QgJHtEfSR7YmluZGlyfS8KK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpkYXRhL3R6ZGF0YV8yMDE3Yi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpkYXRhL3R6ZGF0YV8yMDE3Yi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTVlODk3Ni4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3R6ZGF0YS90emRhdGFfMjAxN2IuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMTUgKzAsMCBAQAotU1VNTUFSWSA9ICJUaW1lem9uZSBkYXRhIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzIgotU0VDVElPTiA9ICJiYXNlIgotTElDRU5TRSA9ICJQRCAmIEJTRCAmIEJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWVmMWEzNTJiOTAxZWU3Yjc1YTc1ZGY4MTcxZDZhY2E3IgotCi1ERVBFTkRTID0gInR6Y29kZS1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzL3JlcG9zaXRvcnkvcmVsZWFzZXMvdHpkYXRhJHtQVn0udGFyLmd6O25hbWU9dHpkYXRhIgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly93d3cuaWFuYS5vcmcvdGltZS16b25lcyIKLQotU1JDX1VSSVt0emRhdGEubWQ1c3VtXSA9ICI1MGRjMGRjNTBjNjg2NDRjMWY3MDgwNGYyZTdhMTYyNSIKLVNSQ19VUklbdHpkYXRhLnNoYTI1NnN1bV0gPSAiZjgyNDJhNTIyZWEzNDk2YjBjZTRmZjRmMmU3NWEwNDkxNzhkYTIxMDAxYTA4YjhlNjY2ZDhjYmUwN2QxODA4NiIKLQotaW5oZXJpdCBhbGxhcmNoCi0KLVJDT05GTElDVFNfJHtQTn0gPSAidGltZXpvbmVzIHRpbWV6b25lLWFmcmljYSB0aW1lem9uZS1hbWVyaWNhIHRpbWV6b25lLWFudGFyY3RpY2EgXAotICAgICAgICAgICAgIHRpbWV6b25lLWFyY3RpYyB0aW1lem9uZS1hc2lhIHRpbWV6b25lLWF0bGFudGljIFwKLSAgICAgICAgICAgICB0aW1lem9uZS1hdXN0cmFsaWEgdGltZXpvbmUtZXVyb3BlIHRpbWV6b25lLWluZGlhbiBcCi0gICAgICAgICAgICAgdGltZXpvbmUtaXNvMzE2Ni50YWIgdGltZXpvbmUtcGFjaWZpYyB0aW1lem9uZS16b25lLnRhYiIKLQotUyA9ICIke1dPUktESVJ9IgotCi1ERUZBVUxUX1RJTUVaT05FID89ICJVbml2ZXJzYWwiCi1JTlNUQUxMX1RJTUVaT05FX0ZJTEUgPz0gIjEiCi0KLVRaT05FUz0gImFmcmljYSBhbnRhcmN0aWNhIGFzaWEgYXVzdHJhbGFzaWEgZXVyb3BlIG5vcnRoYW1lcmljYSBzb3V0aGFtZXJpY2EgIFwKLSAgICAgICAgIGZhY3RvcnkgZXRjZXRlcmEgYmFja3dhcmQgc3lzdGVtdiBcCi0gICAgICAgICIKLSMgcGFjaWZpY25ldyAKLQotZG9fY29tcGlsZSAoKSB7Ci0gICAgICAgIGZvciB6b25lIGluICR7VFpPTkVTfTsgZG8gXAotICAgICAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3ppYyAtZCAke1dPUktESVJ9JHtkYXRhZGlyfS96b25laW5mbyAtTCAvZGV2L251bGwgXAotICAgICAgICAgICAgICAgIC15ICR7U30veWVhcmlzdHlwZS5zaCAke1N9LyR7em9uZX0gOyBcCi0gICAgICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vemljIC1kICR7V09SS0RJUn0ke2RhdGFkaXJ9L3pvbmVpbmZvL3Bvc2l4IC1MIC9kZXYvbnVsbCBcCi0gICAgICAgICAgICAgICAgLXkgJHtTfS95ZWFyaXN0eXBlLnNoICR7U30vJHt6b25lfSA7IFwKLSAgICAgICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS96aWMgLWQgJHtXT1JLRElSfSR7ZGF0YWRpcn0vem9uZWluZm8vcmlnaHQgLUwgJHtTfS9sZWFwc2Vjb25kcyBcCi0gICAgICAgICAgICAgICAgLXkgJHtTfS95ZWFyaXN0eXBlLnNoICR7U30vJHt6b25lfSA7IFwKLSAgICAgICAgZG9uZQotfQotCi1kb19pbnN0YWxsICgpIHsKLSAgICAgICAgaW5zdGFsbCAtZCAke0R9LyRleGVjX3ByZWZpeCAke0R9JHtkYXRhZGlyfS96b25laW5mbwotICAgICAgICBjcCAtcFBSICR7U30vJGV4ZWNfcHJlZml4ICR7RH0vCi0gICAgICAgICMgbGliYyBpcyByZW1vdmluZyB6b25laW5mbyBmaWxlcyBmcm9tIHBhY2thZ2UKLSAgICAgICAgY3AgLXBQICIke1N9L3pvbmUudGFiIiAke0R9JHtkYXRhZGlyfS96b25laW5mbwotICAgICAgICBjcCAtcFAgIiR7U30vem9uZTE5NzAudGFiIiAke0R9JHtkYXRhZGlyfS96b25laW5mbwotICAgICAgICBjcCAtcFAgIiR7U30vaXNvMzE2Ni50YWIiICR7RH0ke2RhdGFkaXJ9L3pvbmVpbmZvCi0KLSAgICAgICAgIyBJbnN0YWxsIGRlZmF1bHQgdGltZXpvbmUKLSAgICAgICAgaWYgWyAtZSAke0R9JHtkYXRhZGlyfS96b25laW5mby8ke0RFRkFVTFRfVElNRVpPTkV9IF07IHRoZW4KLSAgICAgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0KLSAgICAgICAgICAgIGlmIFsgIiR7SU5TVEFMTF9USU1FWk9ORV9GSUxFfSIgPSAiMSIgXTsgdGhlbgotICAgICAgICAgICAgICAgIGVjaG8gJHtERUZBVUxUX1RJTUVaT05FfSA+ICR7RH0ke3N5c2NvbmZkaXJ9L3RpbWV6b25lCi0gICAgICAgICAgICBmaQotICAgICAgICAgICAgbG4gLXMgJHtkYXRhZGlyfS96b25laW5mby8ke0RFRkFVTFRfVElNRVpPTkV9ICR7RH0ke3N5c2NvbmZkaXJ9L2xvY2FsdGltZQotICAgICAgICBlbHNlCi0gICAgICAgICAgICBiYmVycm9yICJERUZBVUxUX1RJTUVaT05FIGlzIHNldCB0byBhbiBpbnZhbGlkIHZhbHVlLiIKLSAgICAgICAgICAgIGV4aXQgMQotICAgICAgICBmaQotCi0gICAgICAgIGNob3duIC1SIHJvb3Q6cm9vdCAke0R9Ci19Ci0KLXBrZ19wb3N0aW5zdF8ke1BOfSAoKSB7Ci0JZXRjX2x0PSIkRCR7c3lzY29uZmRpcn0vbG9jYWx0aW1lIgotCXNyYz0iJEQke3N5c2NvbmZkaXJ9L3RpbWV6b25lIgotCi0JaWYgWyAtZSAke3NyY30gXSA7IHRoZW4KLQkJdHo9JChzZWQgLWUgJ3M6Iy4qOjonIC1lICdzOltbOnNwYWNlOl1dKjo6ZycgLWUgJy9eJC9kJyAiJHtzcmN9IikKLQlmaQotCQotCWlmIFsgLXogIiR7dHp9IiBdIDsgdGhlbgotCQlleGl0IDAKLQlmaQotCQotCWlmIFsgISAtZSAiJEQke2RhdGFkaXJ9L3pvbmVpbmZvLyR7dHp9IiBdIDsgdGhlbgotCQllY2hvICJZb3UgaGF2ZSBhbiBpbnZhbGlkIFRJTUVaT05FIHNldHRpbmcgaW4gJHtzcmN9IgotCQllY2hvICJZb3VyICR7ZXRjX2x0fSBoYXMgYmVlbiByZXNldCB0byBVbml2ZXJzYWw7IGVuam95ISIKLQkJdHo9IlVuaXZlcnNhbCIKLQkJZWNobyAiVXBkYXRpbmcgJHtldGNfbHR9IHdpdGggJEQke2RhdGFkaXJ9L3pvbmVpbmZvLyR7dHp9IgotCQlpZiBbIC1MICR7ZXRjX2x0fSBdIDsgdGhlbgotCQkJcm0gLWYgIiR7ZXRjX2x0fSIKLQkJZmkKLQkJbG4gLXMgIiR7ZGF0YWRpcn0vem9uZWluZm8vJHt0en0iICIke2V0Y19sdH0iCi0JZmkKLX0KLQotIyBQYWNrYWdlcyBwcmltYXJpbHkgb3JnYW5pemVkIGJ5IGRpcmVjdG9yeSB3aXRoIGEgbWFqb3IgY2l0eQotIyBpbiBtb3N0IHRpbWUgem9uZXMgaW4gdGhlIGJhc2UgcGFja2FnZQotCi1QQUNLQUdFUyA9ICJ0emRhdGEgdHpkYXRhLW1pc2MgdHpkYXRhLXBvc2l4IHR6ZGF0YS1yaWdodCB0emRhdGEtYWZyaWNhIFwKLSAgICB0emRhdGEtYW1lcmljYXMgdHpkYXRhLWFudGFyY3RpY2EgdHpkYXRhLWFyY3RpYyB0emRhdGEtYXNpYSBcCi0gICAgdHpkYXRhLWF0bGFudGljIHR6ZGF0YS1hdXN0cmFsaWEgdHpkYXRhLWV1cm9wZSB0emRhdGEtcGFjaWZpYyIKLQotRklMRVNfdHpkYXRhLWFmcmljYSArPSAiJHtkYXRhZGlyfS96b25laW5mby9BZnJpY2EvKiIKLVJQUk9WSURFU190emRhdGEtYWZyaWNhID0gInR6ZGF0YS1hZnJpY2EiCi0KLUZJTEVTX3R6ZGF0YS1hbWVyaWNhcyArPSAiJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhLyogIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1VTLyogICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQnJhemlsLyogICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9DYW5hZGEvKiAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL01leGljby8qICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQ2hpbGUvKiIKLVJQUk9WSURFU190emRhdGEtYW1lcmljYXMgPSAidHpkYXRhLWFtZXJpY2FzIgotCi1GSUxFU190emRhdGEtYW50YXJjdGljYSArPSAiJHtkYXRhZGlyfS96b25laW5mby9BbnRhcmN0aWNhLyoiCi1SUFJPVklERVNfdHpkYXRhLWFudGFyY3RpY2EgPSAidHpkYXRhLWFudGFyY3RpY2EiCi0KLUZJTEVTX3R6ZGF0YS1hcmN0aWMgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQXJjdGljLyoiCi1SUFJPVklERVNfdHpkYXRhLWFyY3RpYyA9ICJ0emRhdGEtYXJjdGljIgotCi1GSUxFU190emRhdGEtYXNpYSArPSAiJHtkYXRhZGlyfS96b25laW5mby9Bc2lhLyogICAgICAgIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0luZGlhbi8qICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vTWlkZWFzdC8qIgotUlBST1ZJREVTX3R6ZGF0YS1hc2lhID0gInR6ZGF0YS1hc2lhIgotCi1GSUxFU190emRhdGEtYXRsYW50aWMgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQXRsYW50aWMvKiIKLVJQUk9WSURFU190emRhdGEtYXRsYW50aWMgPSAidHpkYXRhLWF0bGFudGljIgotCi1GSUxFU190emRhdGEtYXVzdHJhbGlhICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0F1c3RyYWxpYS8qIgotUlBST1ZJREVTX3R6ZGF0YS1hdXN0cmFsaWEgPSAidHpkYXRhLWF1c3RyYWxpYSIKLQotRklMRVNfdHpkYXRhLWV1cm9wZSArPSAiJHtkYXRhZGlyfS96b25laW5mby9FdXJvcGUvKiIKLVJQUk9WSURFU190emRhdGEtZXVyb3BlID0gInR6ZGF0YS1ldXJvcGUiCi0KLUZJTEVTX3R6ZGF0YS1wYWNpZmljICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL1BhY2lmaWMvKiIKLVJQUk9WSURFU190emRhdGEtcGFjaWZpYyA9ICJ0emRhdGEtcGFjaWZpYyIKLQotRklMRVNfdHpkYXRhLXBvc2l4ICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL3Bvc2l4LyoiCi1SUFJPVklERVNfdHpkYXRhLXBvc2l4ID0gInR6ZGF0YS1wb3NpeCIKLQotRklMRVNfdHpkYXRhLXJpZ2h0ICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL3JpZ2h0LyoiCi1SUFJPVklERVNfdHpkYXRhLXJpZ2h0ID0gInR6ZGF0YS1yaWdodCIKLQotCi1GSUxFU190emRhdGEtbWlzYyArPSAiJHtkYXRhZGlyfS96b25laW5mby9DdWJhICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FZ3lwdCAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FaXJlICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9GYWN0b3J5ICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HQi1FaXJlICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Ib25na29uZyAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9JY2VsYW5kICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9JcmFuICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Jc3JhZWwgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9KYW1haWNhICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9KYXBhbiAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Ld2FqYWxlaW4gICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9MaWJ5YSAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9OYXZham8gICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Qb2xhbmQgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Qb3J0dWdhbCAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9TaW5nYXBvcmUgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9UdXJrZXkiCi1SUFJPVklERVNfdHpkYXRhLW1pc2MgPSAidHpkYXRhLW1pc2MiCi0KLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vUGFjaWZpYy9Ib25vbHVsdSAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQW1lcmljYS9BbmNob3JhZ2UgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQW1lcmljYS9Mb3NfQW5nZWxlcyAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQW1lcmljYS9EZW52ZXIgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQW1lcmljYS9DaGljYWdvICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQW1lcmljYS9OZXdfWW9yayAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQW1lcmljYS9DYXJhY2FzICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQW1lcmljYS9TYW9fUGF1bG8gICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRXVyb3BlL0xvbmRvbiAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRXVyb3BlL1BhcmlzICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQWZyaWNhL0NhaXJvICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRXVyb3BlL01vc2NvdyAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQXNpYS9EdWJhaSAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQXNpYS9LYXJhY2hpICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQXNpYS9EaGFrYSAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQXNpYS9CYW5rb2sgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQXNpYS9Ib25nX0tvbmcgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQXNpYS9Ub2t5byAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQXVzdHJhbGlhL0RhcndpbiAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQXVzdHJhbGlhL0FkZWxhaWRlICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQXVzdHJhbGlhL0JyaXNiYW5lICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQXVzdHJhbGlhL1N5ZG5leSAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vUGFjaWZpYy9Ob3VtZWEgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQ0VUICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vQ1NUNkNEVCAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRUVUICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRVNUICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRVNUNUVEVCAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vR0IgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vR01UICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vR01UKzAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vR01ULTAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vR01UMCAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vR3JlZW53aWNoICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSFNUICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vTUVUICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vTVNUICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vTVNUN01EVCAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vTlogICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vTlotQ0hBVCAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vUFJDICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vUFNUOFBEVCAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vUk9DICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vUk9LICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vVUNUICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vVVRDICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vVW5pdmVyc2FsICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vVy1TVSAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vV0VUICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vWnVsdSAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vem9uZS50YWIgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vem9uZTE5NzAudGFiICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vaXNvMzE2Ni50YWIgICAgICAgICAgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vRXRjLyoiCi0KLUNPTkZGSUxFU18ke1BOfSArPSAiJHtAICIke3N5c2NvbmZkaXJ9L3RpbWV6b25lIiBpZiBiYi51dGlscy50b19ib29sZWFuKGQuZ2V0VmFyKCdJTlNUQUxMX1RJTUVaT05FX0ZJTEUnKSkgZWxzZSAiIiB9IgotQ09ORkZJTEVTXyR7UE59ICs9ICIke3N5c2NvbmZkaXJ9L2xvY2FsdGltZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpkYXRhL3R6ZGF0YV8yMDE4Yy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdHpkYXRhL3R6ZGF0YV8yMDE4Yy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjVlYzFjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90emRhdGEvdHpkYXRhXzIwMThjLmJiCkBAIC0wLDAgKzEsMjE1IEBACitTVU1NQVJZID0gIlRpbWV6b25lIGRhdGEiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmlhbmEub3JnL3RpbWUtem9uZXMiCitTRUNUSU9OID0gImJhc2UiCitMSUNFTlNFID0gIlBEICYgQlNEICYgQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YzY3OWM5ZDZiMDJiYzI3NTdiM2VhZjhmNTNjNDNmYmEiCisKK0RFUEVORFMgPSAidHpjb2RlLW5hdGl2ZSIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmlhbmEub3JnL3RpbWUtem9uZXMvcmVwb3NpdG9yeS9yZWxlYXNlcy90emRhdGEke1BWfS50YXIuZ3o7bmFtZT10emRhdGEiCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5pYW5hLm9yZy90aW1lLXpvbmVzIgorCitTUkNfVVJJW3R6ZGF0YS5tZDVzdW1dID0gImM0MTJiMTUzMWFkZWYxYmU3YTY0NWFiNzM0Zjg2YWNjIgorU1JDX1VSSVt0emRhdGEuc2hhMjU2c3VtXSA9ICIyODI1YzNlNGI3ZWY1MjBmMjRkMzkzYmNjMDI5NDJmOTc2MmZmZDNlN2ZjOWIyMzg1MDc4OWVkOGYyMjkzM2Y2IgorCitpbmhlcml0IGFsbGFyY2gKKworUkNPTkZMSUNUU18ke1BOfSA9ICJ0aW1lem9uZXMgdGltZXpvbmUtYWZyaWNhIHRpbWV6b25lLWFtZXJpY2EgdGltZXpvbmUtYW50YXJjdGljYSBcCisgICAgICAgICAgICAgdGltZXpvbmUtYXJjdGljIHRpbWV6b25lLWFzaWEgdGltZXpvbmUtYXRsYW50aWMgXAorICAgICAgICAgICAgIHRpbWV6b25lLWF1c3RyYWxpYSB0aW1lem9uZS1ldXJvcGUgdGltZXpvbmUtaW5kaWFuIFwKKyAgICAgICAgICAgICB0aW1lem9uZS1pc28zMTY2LnRhYiB0aW1lem9uZS1wYWNpZmljIHRpbWV6b25lLXpvbmUudGFiIgorCitTID0gIiR7V09SS0RJUn0iCisKK0RFRkFVTFRfVElNRVpPTkUgPz0gIlVuaXZlcnNhbCIKK0lOU1RBTExfVElNRVpPTkVfRklMRSA/PSAiMSIKKworVFpPTkVTPSAiYWZyaWNhIGFudGFyY3RpY2EgYXNpYSBhdXN0cmFsYXNpYSBldXJvcGUgbm9ydGhhbWVyaWNhIHNvdXRoYW1lcmljYSAgXAorICAgICAgICAgZmFjdG9yeSBldGNldGVyYSBiYWNrd2FyZCBzeXN0ZW12IFwKKyAgICAgICAgIgorIyBwYWNpZmljbmV3IAorCitkb19jb21waWxlICgpIHsKKyAgICAgICAgZm9yIHpvbmUgaW4gJHtUWk9ORVN9OyBkbyBcCisgICAgICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vemljIC1kICR7V09SS0RJUn0ke2RhdGFkaXJ9L3pvbmVpbmZvIC1MIC9kZXYvbnVsbCBcCisgICAgICAgICAgICAgICAgLXkgJHtTfS95ZWFyaXN0eXBlLnNoICR7U30vJHt6b25lfSA7IFwKKyAgICAgICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS96aWMgLWQgJHtXT1JLRElSfSR7ZGF0YWRpcn0vem9uZWluZm8vcG9zaXggLUwgL2Rldi9udWxsIFwKKyAgICAgICAgICAgICAgICAteSAke1N9L3llYXJpc3R5cGUuc2ggJHtTfS8ke3pvbmV9IDsgXAorICAgICAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3ppYyAtZCAke1dPUktESVJ9JHtkYXRhZGlyfS96b25laW5mby9yaWdodCAtTCAke1N9L2xlYXBzZWNvbmRzIFwKKyAgICAgICAgICAgICAgICAteSAke1N9L3llYXJpc3R5cGUuc2ggJHtTfS8ke3pvbmV9IDsgXAorICAgICAgICBkb25lCit9CisKK2RvX2luc3RhbGwgKCkgeworICAgICAgICBpbnN0YWxsIC1kICR7RH0vJGV4ZWNfcHJlZml4ICR7RH0ke2RhdGFkaXJ9L3pvbmVpbmZvCisgICAgICAgIGNwIC1wUFIgJHtTfS8kZXhlY19wcmVmaXggJHtEfS8KKyAgICAgICAgIyBsaWJjIGlzIHJlbW92aW5nIHpvbmVpbmZvIGZpbGVzIGZyb20gcGFja2FnZQorICAgICAgICBjcCAtcFAgIiR7U30vem9uZS50YWIiICR7RH0ke2RhdGFkaXJ9L3pvbmVpbmZvCisgICAgICAgIGNwIC1wUCAiJHtTfS96b25lMTk3MC50YWIiICR7RH0ke2RhdGFkaXJ9L3pvbmVpbmZvCisgICAgICAgIGNwIC1wUCAiJHtTfS9pc28zMTY2LnRhYiIgJHtEfSR7ZGF0YWRpcn0vem9uZWluZm8KKworICAgICAgICAjIEluc3RhbGwgZGVmYXVsdCB0aW1lem9uZQorICAgICAgICBpZiBbIC1lICR7RH0ke2RhdGFkaXJ9L3pvbmVpbmZvLyR7REVGQVVMVF9USU1FWk9ORX0gXTsgdGhlbgorICAgICAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfQorICAgICAgICAgICAgaWYgWyAiJHtJTlNUQUxMX1RJTUVaT05FX0ZJTEV9IiA9ICIxIiBdOyB0aGVuCisgICAgICAgICAgICAgICAgZWNobyAke0RFRkFVTFRfVElNRVpPTkV9ID4gJHtEfSR7c3lzY29uZmRpcn0vdGltZXpvbmUKKyAgICAgICAgICAgIGZpCisgICAgICAgICAgICBsbiAtcyAke2RhdGFkaXJ9L3pvbmVpbmZvLyR7REVGQVVMVF9USU1FWk9ORX0gJHtEfSR7c3lzY29uZmRpcn0vbG9jYWx0aW1lCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGJiZXJyb3IgIkRFRkFVTFRfVElNRVpPTkUgaXMgc2V0IHRvIGFuIGludmFsaWQgdmFsdWUuIgorICAgICAgICAgICAgZXhpdCAxCisgICAgICAgIGZpCisKKyAgICAgICAgY2hvd24gLVIgcm9vdDpyb290ICR7RH0KK30KKworcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKKwlldGNfbHQ9IiREJHtzeXNjb25mZGlyfS9sb2NhbHRpbWUiCisJc3JjPSIkRCR7c3lzY29uZmRpcn0vdGltZXpvbmUiCisKKwlpZiBbIC1lICR7c3JjfSBdIDsgdGhlbgorCQl0ej0kKHNlZCAtZSAnczojLio6OicgLWUgJ3M6W1s6c3BhY2U6XV0qOjpnJyAtZSAnL14kL2QnICIke3NyY30iKQorCWZpCisJCisJaWYgWyAteiAiJHt0en0iIF0gOyB0aGVuCisJCWV4aXQgMAorCWZpCisJCisJaWYgWyAhIC1lICIkRCR7ZGF0YWRpcn0vem9uZWluZm8vJHt0en0iIF0gOyB0aGVuCisJCWVjaG8gIllvdSBoYXZlIGFuIGludmFsaWQgVElNRVpPTkUgc2V0dGluZyBpbiAke3NyY30iCisJCWVjaG8gIllvdXIgJHtldGNfbHR9IGhhcyBiZWVuIHJlc2V0IHRvIFVuaXZlcnNhbDsgZW5qb3khIgorCQl0ej0iVW5pdmVyc2FsIgorCQllY2hvICJVcGRhdGluZyAke2V0Y19sdH0gd2l0aCAkRCR7ZGF0YWRpcn0vem9uZWluZm8vJHt0en0iCisJCWlmIFsgLUwgJHtldGNfbHR9IF0gOyB0aGVuCisJCQlybSAtZiAiJHtldGNfbHR9IgorCQlmaQorCQlsbiAtcyAiJHtkYXRhZGlyfS96b25laW5mby8ke3R6fSIgIiR7ZXRjX2x0fSIKKwlmaQorfQorCisjIFBhY2thZ2VzIHByaW1hcmlseSBvcmdhbml6ZWQgYnkgZGlyZWN0b3J5IHdpdGggYSBtYWpvciBjaXR5CisjIGluIG1vc3QgdGltZSB6b25lcyBpbiB0aGUgYmFzZSBwYWNrYWdlCisKK1BBQ0tBR0VTID0gInR6ZGF0YSB0emRhdGEtbWlzYyB0emRhdGEtcG9zaXggdHpkYXRhLXJpZ2h0IHR6ZGF0YS1hZnJpY2EgXAorICAgIHR6ZGF0YS1hbWVyaWNhcyB0emRhdGEtYW50YXJjdGljYSB0emRhdGEtYXJjdGljIHR6ZGF0YS1hc2lhIFwKKyAgICB0emRhdGEtYXRsYW50aWMgdHpkYXRhLWF1c3RyYWxpYSB0emRhdGEtZXVyb3BlIHR6ZGF0YS1wYWNpZmljIgorCitGSUxFU190emRhdGEtYWZyaWNhICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0FmcmljYS8qIgorUlBST1ZJREVTX3R6ZGF0YS1hZnJpY2EgPSAidHpkYXRhLWFmcmljYSIKKworRklMRVNfdHpkYXRhLWFtZXJpY2FzICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0FtZXJpY2EvKiAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vVVMvKiAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9CcmF6aWwvKiAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0NhbmFkYS8qICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vTWV4aWNvLyogICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9DaGlsZS8qIgorUlBST1ZJREVTX3R6ZGF0YS1hbWVyaWNhcyA9ICJ0emRhdGEtYW1lcmljYXMiCisKK0ZJTEVTX3R6ZGF0YS1hbnRhcmN0aWNhICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0FudGFyY3RpY2EvKiIKK1JQUk9WSURFU190emRhdGEtYW50YXJjdGljYSA9ICJ0emRhdGEtYW50YXJjdGljYSIKKworRklMRVNfdHpkYXRhLWFyY3RpYyArPSAiJHtkYXRhZGlyfS96b25laW5mby9BcmN0aWMvKiIKK1JQUk9WSURFU190emRhdGEtYXJjdGljID0gInR6ZGF0YS1hcmN0aWMiCisKK0ZJTEVTX3R6ZGF0YS1hc2lhICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0FzaWEvKiAgICAgICAgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vem9uZWluZm8vSW5kaWFuLyogICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9NaWRlYXN0LyoiCitSUFJPVklERVNfdHpkYXRhLWFzaWEgPSAidHpkYXRhLWFzaWEiCisKK0ZJTEVTX3R6ZGF0YS1hdGxhbnRpYyArPSAiJHtkYXRhZGlyfS96b25laW5mby9BdGxhbnRpYy8qIgorUlBST1ZJREVTX3R6ZGF0YS1hdGxhbnRpYyA9ICJ0emRhdGEtYXRsYW50aWMiCisKK0ZJTEVTX3R6ZGF0YS1hdXN0cmFsaWEgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vQXVzdHJhbGlhLyoiCitSUFJPVklERVNfdHpkYXRhLWF1c3RyYWxpYSA9ICJ0emRhdGEtYXVzdHJhbGlhIgorCitGSUxFU190emRhdGEtZXVyb3BlICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0V1cm9wZS8qIgorUlBST1ZJREVTX3R6ZGF0YS1ldXJvcGUgPSAidHpkYXRhLWV1cm9wZSIKKworRklMRVNfdHpkYXRhLXBhY2lmaWMgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vUGFjaWZpYy8qIgorUlBST1ZJREVTX3R6ZGF0YS1wYWNpZmljID0gInR6ZGF0YS1wYWNpZmljIgorCitGSUxFU190emRhdGEtcG9zaXggKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vcG9zaXgvKiIKK1JQUk9WSURFU190emRhdGEtcG9zaXggPSAidHpkYXRhLXBvc2l4IgorCitGSUxFU190emRhdGEtcmlnaHQgKz0gIiR7ZGF0YWRpcn0vem9uZWluZm8vcmlnaHQvKiIKK1JQUk9WSURFU190emRhdGEtcmlnaHQgPSAidHpkYXRhLXJpZ2h0IgorCisKK0ZJTEVTX3R6ZGF0YS1taXNjICs9ICIke2RhdGFkaXJ9L3pvbmVpbmZvL0N1YmEgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0VneXB0ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0VpcmUgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0ZhY3RvcnkgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0dCLUVpcmUgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0hvbmdrb25nICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0ljZWxhbmQgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0lyYW4gICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0lzcmFlbCAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0phbWFpY2EgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0phcGFuICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0t3YWphbGVpbiAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL0xpYnlhICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL05hdmFqbyAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1BvbGFuZCAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1BvcnR1Z2FsICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1NpbmdhcG9yZSAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3pvbmVpbmZvL1R1cmtleSIKK1JQUk9WSURFU190emRhdGEtbWlzYyA9ICJ0emRhdGEtbWlzYyIKKworCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS96b25laW5mby9QYWNpZmljL0hvbm9sdWx1ICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL0FuY2hvcmFnZSAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL0xvc19BbmdlbGVzICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL0RlbnZlciAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL0NoaWNhZ28gICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL05ld19Zb3JrICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL0NhcmFjYXMgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BbWVyaWNhL1Nhb19QYXVsbyAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FdXJvcGUvTG9uZG9uICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FdXJvcGUvUGFyaXMgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BZnJpY2EvQ2Fpcm8gICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FdXJvcGUvTW9zY293ICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Bc2lhL0R1YmFpICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Bc2lhL0thcmFjaGkgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Bc2lhL0RoYWthICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Bc2lhL0JhbmtvayAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Bc2lhL0hvbmdfS29uZyAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Bc2lhL1Rva3lvICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BdXN0cmFsaWEvRGFyd2luICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BdXN0cmFsaWEvQWRlbGFpZGUgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BdXN0cmFsaWEvQnJpc2JhbmUgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9BdXN0cmFsaWEvU3lkbmV5ICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9QYWNpZmljL05vdW1lYSAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9DRVQgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9DU1Q2Q0RUICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FRVQgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FU1QgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FU1Q1RURUICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HQiAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HTVQgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HTVQrMCAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HTVQtMCAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HTVQwICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9HcmVlbndpY2ggICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9IU1QgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9NRVQgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9NU1QgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9NU1Q3TURUICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9OWiAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9OWi1DSEFUICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9QUkMgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9QU1Q4UERUICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9ST0MgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9ST0sgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9VQ1QgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9VVEMgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9Vbml2ZXJzYWwgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9XLVNVICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9XRVQgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9adWx1ICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby96b25lLnRhYiAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby96b25lMTk3MC50YWIgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9pc28zMTY2LnRhYiAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS96b25laW5mby9FdGMvKiIKKworQ09ORkZJTEVTXyR7UE59ICs9ICIke0AgIiR7c3lzY29uZmRpcn0vdGltZXpvbmUiIGlmIGJiLnV0aWxzLnRvX2Jvb2xlYW4oZC5nZXRWYXIoJ0lOU1RBTExfVElNRVpPTkVfRklMRScpKSBlbHNlICIiIH0iCitDT05GRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0vbG9jYWx0aW1lIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC91bnppcC91bnppcF82LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3VuemlwL3VuemlwXzYuMC5iYgppbmRleCBkNGVlNDg3Li4xMDVkMDQ4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3VuemlwL3VuemlwXzYuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3VuemlwL3VuemlwXzYuMC5iYgpAQCAtMjAsNiArMjAsNyBAQAogCWZpbGU6Ly8xOC1jdmUtMjAxNC05OTEzLXVuemlwLWJ1ZmZlci1vdmVyZmxvdy5wYXRjaCBcCiAJZmlsZTovLzE5LWN2ZS0yMDE2LTk4NDQtemlwaW5mby1idWZmZXItb3ZlcmZsb3cucGF0Y2ggXAogIgorVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICI2MmI0OTA0MDc0ODk1MjFkYjg2M2I1MjNhN2Y4NjM3NSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIwMzZkOTY5OTE2NDZkMDQ0OWVkMGFhOTUyZTRmYmUyMWI0NzZjZTk5NGFiYzI3NmU0OWQzMGU2ODY3MDhiZDM3IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93YXRjaGRvZy93YXRjaGRvZ181LjE1LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC93YXRjaGRvZy93YXRjaGRvZ181LjE1LmJiCmluZGV4IDk2NTlmMjcuLjNkMGI3MmUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvd2F0Y2hkb2cvd2F0Y2hkb2dfNS4xNS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3dhdGNoZG9nL3dhdGNoZG9nXzUuMTUuYmIKQEAgLTIxLDggKzIxLDcgQEAKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL3dhdGNoZG9nL2ZpbGVzL3dhdGNoZG9nLyIKIFVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIi93YXRjaGRvZy8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykvIgogCi1pbmhlcml0IGF1dG90b29scwotaW5oZXJpdCB1cGRhdGUtcmMuZAoraW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgc3lzdGVtZAogCiBERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGxpYnRpcnBjICIKIENGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtSSR7U1RBR0lOR19JTkNESVJ9L3RpcnBjICIKQEAgLTM3LDEyICszNiwxOCBAQAogSU5JVFNDUklQVF9OQU1FXyR7UE59LWtlZXBhbGl2ZSA9ICJ3ZF9rZWVwYWxpdmUiCiBJTklUU0NSSVBUX1BBUkFNU18ke1BOfS1rZWVwYWxpdmUgPSAic3RhcnQgMTUgMSAyIDMgNCA1IC4gc3RvcCA4NSAwIDYgLiIKIAotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JaW5zdGFsbCAtRCAke1N9L3JlZGhhdC93YXRjaGRvZy5pbml0ICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvd2F0Y2hkb2cuc2gKLSAgICBpbnN0YWxsIC1EbSAwNzU1ICR7V09SS0RJUn0vd2Rfa2VlcGFsaXZlLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3dkX2tlZXBhbGl2ZQorU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIndhdGNoZG9nLnNlcnZpY2Ugd2Rfa2VlcGFsaXZlLnNlcnZpY2UiCiAKLSAgICAjIHdhdGNoZG9nLmNvbmYgaXMgcHJvdmlkZWQgYnkgdGhlIHdhdGNoZG9nLWNvbmZpZyByZWNpcGUKLSAgICBybSAke0R9JHtzeXNjb25mZGlyfS93YXRjaGRvZy5jb25mCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9CisJaW5zdGFsbCAtbSAwNjQ0ICR7U30vZGViaWFuL3dhdGNoZG9nLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KKwlpbnN0YWxsIC1tIDA2NDQgJHtTfS9kZWJpYW4vd2Rfa2VlcGFsaXZlLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KKworCWluc3RhbGwgLUQgJHtTfS9yZWRoYXQvd2F0Y2hkb2cuaW5pdCAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kL3dhdGNoZG9nLnNoCisJaW5zdGFsbCAtRG0gMDc1NSAke1dPUktESVJ9L3dkX2tlZXBhbGl2ZS5pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC93ZF9rZWVwYWxpdmUKKworCSMgd2F0Y2hkb2cuY29uZiBpcyBwcm92aWRlZCBieSB0aGUgd2F0Y2hkb2ctY29uZmlnIHJlY2lwZQorCXJtICR7RH0ke3N5c2NvbmZkaXJ9L3dhdGNoZG9nLmNvbmYKIH0KIAogUEFDS0FHRVMgPSsgIiR7UE59LWtlZXBhbGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveGRnLXV0aWxzL3hkZy11dGlsc18xLjEuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveGRnLXV0aWxzL3hkZy11dGlsc18xLjEuMS5iYgppbmRleCA1MDA3NDk4Li4zNGY4ZDEwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3hkZy11dGlscy94ZGctdXRpbHNfMS4xLjEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC94ZGctdXRpbHMveGRnLXV0aWxzXzEuMS4xLmJiCkBAIC0xLDUgKzEsNSBAQAogU1VNTUFSWSA9ICJCYXNpYyBkZXNrdG9wIGludGVncmF0aW9uIGZ1bmN0aW9ucyIKLQorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3dpa2kvU29mdHdhcmUveGRnLXV0aWxzLyIKIERFU0NSSVBUSU9OID0gIlRoZSB4ZGctdXRpbHMgcGFja2FnZSBpcyBhIHNldCBvZiBzaW1wbGUgc2NyaXB0cyB0aGF0IHByb3ZpZGUgYmFzaWMgXAogZGVza3RvcCBpbnRlZ3JhdGlvbiBmdW5jdGlvbnMgZm9yIGFueSBGcmVlIERlc2t0b3AsIHN1Y2ggYXMgTGludXguIFwKIFRoZXkgYXJlIGludGVuZGVkIHRvIHByb3ZpZGUgYSBzZXQgb2YgZGVmYWN0byBzdGFuZGFyZHMuIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveGluZXRkL3hpbmV0ZC94aW5ldGQtQ1ZFLTIwMTMtNDM0Mi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveGluZXRkL3hpbmV0ZC94aW5ldGQtQ1ZFLTIwMTMtNDM0Mi5wYXRjaAppbmRleCBjNDRjNWExLi44NTJhNDNmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3hpbmV0ZC94aW5ldGQveGluZXRkLUNWRS0yMDEzLTQzNDIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC94aW5ldGQveGluZXRkL3hpbmV0ZC1DVkUtMjAxMy00MzQyLnBhdGNoCkBAIC0xMSw2ICsxMSw3IEBACiAKIENWRTogQ1ZFLTIwMTMtNDM0MgogU2lnbmVkLW9mZi1ieTogTGkgV2FuZyA8bGkud2FuZ0B3aW5kcml2ZXIuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAogLS0tCiAgeGluZXRkL2J1aWx0aW5zLmMgfCAgICAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3hpbmV0ZC94aW5ldGRfMi4zLjE1LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC94aW5ldGQveGluZXRkXzIuMy4xNS5iYgppbmRleCA2YmZhYWJlLi4xYmViNTQ1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3hpbmV0ZC94aW5ldGRfMi4zLjE1LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveGluZXRkL3hpbmV0ZF8yLjMuMTUuYmIKQEAgLTI0LDYgKzI0LDcgQEAKICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1Vc2UtSEFWRV9TWVNfUkVTT1VSQ0VfSC10by1ndWFyZC1zeXMtcmVzb3UucGF0Y2ggXAogICAgICAgZmlsZTovL3hpbmV0ZC5zZXJ2aWNlIFwKICAgICAgICIKK1VQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgogCiBTUkNSRVYgPSAiNjhiYjlhYjllOWYyMTRhZDhhMjMyMmYyOGFjMWQ2NzMzZTcwYmMyNCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC96aXAvemlwXzMuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvemlwL3ppcF8zLjAuYmIKaW5kZXggMDg3NDIzYS4uZGU3NzllOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC96aXAvemlwXzMuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3ppcC96aXBfMy4wLmJiCkBAIC0xMSw2ICsxMSw3IEBACiAKIFNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2luZm96aXAvWmlwJTIwMy54JTIwJTI4bGF0ZXN0JTI5LzMuMC96aXAzMC50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vZml4LXNlY3VyaXR5LWZvcm1hdC5wYXRjaCIKK1VQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiN2I3NDU1MWU2M2Y4ZWU2YWFiNmZiYzg2Njc2YzBkMzciCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjBlOGJiMWY5YjdlYjBiMDEyODU0OTVhMjY5OWRmM2E0Yjc2Njc4NGMxNzY1YThmMWFlZWRmNjNjMDgwNjM2OSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZXBpcGhhbnkvZXBpcGhhbnlfMy4yMi42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9lcGlwaGFueS9lcGlwaGFueV8zLjIyLjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1MWZlZjEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9lcGlwaGFueS9lcGlwaGFueV8zLjIyLjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1TVU1NQVJZID0gIldlYktpdCBiYXNlZCB3ZWIgYnJvd3NlciBmb3IgR05PTUUiCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgotCi1ERVBFTkRTID0gImxpYnNvdXAtMi40IHdlYmtpdGd0ayBndGsrMyBpc28tY29kZXMgYXZhaGkgbGlibm90aWZ5IGdjciBcCi0JICAgZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyBnbm9tZS1kZXNrdG9wMyBsaWJ4bWwyLW5hdGl2ZSBcCi0JICAgaW50bHRvb2wtbmF0aXZlIGdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSIKLQotaW5oZXJpdCBnbm9tZWJhc2UgZ3NldHRpbmdzIGRpc3Ryb19mZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ2V0dGV4dAotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotU1JDX1VSSSArPSAiZmlsZTovLzAwMDEteWVscC5tNC1kcm9wLXRoZS1jaGVjay1mb3ItaXRzdG9vbC5wYXRjaCIKLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImUwODc2MmM2YmIwMWM0ZDI5MWIzZDIyYzdhZGIxYTY1IgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiZGU3ZWE4N2RjNDUwNzAyYmRlNjIwMDMzZjllMmNlODA3ODU5NzI3ZDAwNzM5NmQ4NmIwOWYyYjgyMzk3ZmNjMiIKLQotRVhUUkFfT0VDT05GICs9ICIgLS13aXRoLWRpc3RyaWJ1dG9yLW5hbWU9JHtESVNUUk99IgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICBzZWQgLWkgLWUgczpoZWxwOjpnICR7U30vTWFrZWZpbGUuYW0KLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vYXBwZGF0YSAke2RhdGFkaXJ9L2RidXMtMSAke2RhdGFkaXJ9L2dub21lLXNoZWxsL3NlYXJjaC1wcm92aWRlcnMiCi1SREVQRU5EU18ke1BOfSA9ICJpc28tY29kZXMgYWR3YWl0YS1pY29uLXRoZW1lIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9lcGlwaGFueS9lcGlwaGFueV8zLjI0LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2VwaXBoYW55XzMuMjQuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNTA3ZDIzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9lcGlwaGFueS9lcGlwaGFueV8zLjI0LjMuYmIKQEAgLTAsMCArMSwyNSBAQAorU1VNTUFSWSA9ICJXZWJLaXQgYmFzZWQgd2ViIGJyb3dzZXIgZm9yIEdOT01FIgorTElDRU5TRSA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKworREVQRU5EUyA9ICJsaWJzb3VwLTIuNCB3ZWJraXRndGsgZ3RrKzMgaXNvLWNvZGVzIGF2YWhpIGxpYm5vdGlmeSBnY3IgXAorCSAgIGdzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMgZ25vbWUtZGVza3RvcDMgbGlieG1sMi1uYXRpdmUgXAorCSAgIGdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBqc29uLWdsaWIiCisKK2luaGVyaXQgZ25vbWViYXNlIGdzZXR0aW5ncyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdldHRleHQKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLXllbHAubTQtZHJvcC10aGUtY2hlY2stZm9yLWl0c3Rvb2wucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtYm9va21hcmtzLUNoZWNrLWZvci1yZXR1cm4tdmFsdWUtb2YtZnJlYWQucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJjMDIyMWFlYzZhMDg5MzVlNjg1NGVhYTlkZTk0NTFlZiIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImZlZjUxNjc2MzEwZDlmMzdlMThjOWIyZDc3ODI1NDIzMmViMTdjY2NkOTg4YzJkMWVjZjQyYzdiMjk2M2ExNTQiCisKK0VYVFJBX09FQ09ORiArPSAiIC0td2l0aC1kaXN0cmlidXRvci1uYW1lPSR7RElTVFJPfSAtLWVuYWJsZS1kZWJ1Zz1ubyIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgc2VkIC1pIC1lIHM6aGVscDo6ZyAke1N9L01ha2VmaWxlLmFtCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2RidXMtMSAke2RhdGFkaXJ9L2dub21lLXNoZWxsL3NlYXJjaC1wcm92aWRlcnMiCitSREVQRU5EU18ke1BOfSA9ICJpc28tY29kZXMgYWR3YWl0YS1pY29uLXRoZW1lIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9lcGlwaGFueS9maWxlcy8wMDAxLWJvb2ttYXJrcy1DaGVjay1mb3ItcmV0dXJuLXZhbHVlLW9mLWZyZWFkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9lcGlwaGFueS9maWxlcy8wMDAxLWJvb2ttYXJrcy1DaGVjay1mb3ItcmV0dXJuLXZhbHVlLW9mLWZyZWFkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkY2QzOTQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2ZpbGVzLzAwMDEtYm9va21hcmtzLUNoZWNrLWZvci1yZXR1cm4tdmFsdWUtb2YtZnJlYWQucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSBhYTIxNzZiZTMyZWVkMjU3OGRhODJmMzRkMzExNDhmOTM0YzExYzM0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMjggSnVuIDIwMTcgMTc6MDM6NDUgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gYm9va21hcmtzOiBDaGVjayBmb3IgcmV0dXJuIHZhbHVlIG9mIGZyZWFkKCkKKworRml4ZXMgYmVsb3cgY29tcGlsZXIgZXJyb3IKK2lnbm9yaW5nIHJldHVybiB2YWx1ZSBvZiAnZnJlYWQnLCBkZWNsYXJlZCB3aXRoIGF0dHJpYnV0ZSB3YXJuX3VudXNlZF9yZXN1bHQKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMvYm9va21hcmtzL2VwaHktYm9va21hcmsuYyB8IDMgKystCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2Jvb2ttYXJrcy9lcGh5LWJvb2ttYXJrLmMgYi9zcmMvYm9va21hcmtzL2VwaHktYm9va21hcmsuYworaW5kZXggZmYwMjM5Yi4uODYzM2NlNCAxMDA2NDQKKy0tLSBhL3NyYy9ib29rbWFya3MvZXBoeS1ib29rbWFyay5jCisrKysgYi9zcmMvYm9va21hcmtzL2VwaHktYm9va21hcmsuYworQEAgLTIxNyw3ICsyMTcsOCBAQCBlcGh5X2Jvb2ttYXJrX2luaXQgKEVwaHlCb29rbWFyayAqc2VsZikKKyAgIGJ5dGVzID0gZ19tYWxsb2MgKG51bV9ieXRlcyk7CisgCisgICBmcCA9IGZvcGVuICgiL2Rldi91cmFuZG9tIiwgInIiKTsKKy0gIGZyZWFkIChieXRlcywgc2l6ZW9mIChndWludDgpLCBudW1fYnl0ZXMsIGZwKTsKKysgIGlmIChmcmVhZCAoYnl0ZXMsIHNpemVvZiAoZ3VpbnQ4KSwgbnVtX2J5dGVzLCBmcCkgIT0gbnVtX2J5dGVzKQorKyAgICBnX3dhcm5pbmcoIlVuYWJsZSB0byByZWFkIGRhdGEgZnJvbSAvZGV2L3VyYW5kb21cbiIpOworIAorICAgc2VsZi0+aWQgPSBnX21hbGxvYzAgKElEX0xFTiArIDEpOworICAgZm9yIChnc2l6ZSBpID0gMDsgaSA8IG51bV9ieXRlczsgaSsrKSB7CistLSAKKzIuMTMuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2djci9nY3JfMy4yMC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nY3IvZ2NyXzMuMjAuMC5iYgppbmRleCBmMzFhYmNlLi40NDUwZTE1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2djci9nY3JfMy4yMC4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2NyL2djcl8zLjIwLjAuYmIKQEAgLTUsNyArNSw4IEBACiBMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTVjYTgxN2NjYjdkNWI1YjY2MzU1NjkwZTlhYmM2MDUiCiAKLURFUEVORFMgPSAiaW50bHRvb2wtbmF0aXZlIGd0ayszIHAxMS1raXQgZ2xpYi0yLjAgbGliZ2NyeXB0IgorREVQRU5EUyA9ICJpbnRsdG9vbC1uYXRpdmUgZ3RrKzMgcDExLWtpdCBnbGliLTIuMCBsaWJnY3J5cHQgXAorICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnR0lfREFUQV9FTkFCTEVEJywgJ1RydWUnLCAnbGlieHNsdC1uYXRpdmUnLCAnJywgZCl9IgogCiBpbmhlcml0IGF1dG90b29scyBnbm9tZWJhc2UgZ3RrLWljb24tY2FjaGUgZ3RrLWRvYyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIHZhbGEgZ29iamVjdC1pbnRyb3NwZWN0aW9uCiAjIGRlcGVuZHMgb24gZ3RrKzMsIGJ1dCBhbHNvIHgxMSB0aHJvdWdoIGd0aysteDExCkBAIC0yMywxNiArMjQsMyBAQAogCiAjIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8yMDIyOS8KIEFSTV9JTlNUUlVDVElPTl9TRVQgPSAiYXJtIgotCi0jIG9uIHg4Ni02NCB0aGUgaW50cm9zcGVjdGlvbiBiaW5hcnkgZ29lcyBpbnRvIAotIyBhbiBpbmZpbml0ZSBsb29wIHVuZGVyIHFlbXUgZHVyaW5nIGNvbXBpbGF0aW9uLCAKLSMgcHJpbnRpbmcgdGhlIGZvbGxvd2luZzoKLSMgCi0jIGdjcnlwdC1NZXNzYWdlOiBzZWxlY3QoKSBlcnJvcjogQmFkIGFkZHJlc3MKLSMKLSMgZ2NyeXB0LU1lc3NhZ2U6IHNlbGVjdCgpIGVycm9yOiBCYWQgYWRkcmVzcwotIwotIyBnY3J5cHQtTWVzc2FnZTogc2VsZWN0KCkgZXJyb3I6IEJhZCBhZGRyZXNzCi0jCi0jIFRoaXMgd2lsbCBiZSBpbnZlc3RpZ2F0ZWQgbGF0ZXIuCi1FWFRSQV9PRUNPTkZfYXBwZW5kX3g4Ni02NCA9ICIgLS1kaXNhYmxlLWludHJvc3BlY3Rpb24gLS1kaXNhYmxlLWd0ay1kb2MiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dkay1waXhidWYvZ2RrLXBpeGJ1Zi8wMDAxLXF1ZXJ5bG9hZGVycy1NYWtlLW91dHB1dC1tb3JlLXJlcHJvZHVjaWJsZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmLzAwMDEtcXVlcnlsb2FkZXJzLU1ha2Utb3V0cHV0LW1vcmUtcmVwcm9kdWNpYmxlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhMjE0MTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dkay1waXhidWYvZ2RrLXBpeGJ1Zi8wMDAxLXF1ZXJ5bG9hZGVycy1NYWtlLW91dHB1dC1tb3JlLXJlcHJvZHVjaWJsZS5wYXRjaApAQCAtMCwwICsxLDU2IEBACitGcm9tIDEwNDlmYmQ4ODdlNTJmOTRhZmViMDNmYzc5NDJjMDFjMTQzZWJkZmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorRGF0ZTogRnJpLCA5IEp1biAyMDE3IDEyOjAxOjI1ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIHF1ZXJ5bG9hZGVyczogTWFrZSBvdXRwdXQgbW9yZSByZXByb2R1Y2libGUKKworUmVwcm9kdWNpYmxlIGJ1aWxkcyBhcmUgZ29vZDogU29ydCB0aGUgb3V0cHV0IGJ5IG1vZHVsZSBuYW1lIHNvIHRoYXQKK3NhbWUgaW5wdXQgYWx3YXlzIGxlYWRzIHRvIHNhbWUgb3V0cHV0LgorCitUaGlzIHNob3VsZCBhbHNvIG1ha2UgZ2RrLXBpeGJ1Zi1wcmludC1taW1lLXR5cGVzIG91dHB1dCBhbmQKK2dkay1waXhidWYtdGh1bWJuYWlsZXIudGh1bWJuYWlsZXIgcmVwcm9kdWNpYmxlLgorCitodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgzNTkyCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCitTaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorLS0tCisgZ2RrLXBpeGJ1Zi9xdWVyeWxvYWRlcnMuYyB8IDEyICsrKysrKysrKystLQorIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2RrLXBpeGJ1Zi9xdWVyeWxvYWRlcnMuYyBiL2dkay1waXhidWYvcXVlcnlsb2FkZXJzLmMKK2luZGV4IDM5NTY3NGEuLjRhYzliMjggMTAwNjQ0CistLS0gYS9nZGstcGl4YnVmL3F1ZXJ5bG9hZGVycy5jCisrKysgYi9nZGstcGl4YnVmL3F1ZXJ5bG9hZGVycy5jCitAQCAtMzQ2LDYgKzM0Niw3IEBAIGludCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgI2lmZGVmIFVTRV9HTU9EVUxFCisgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhdGg7CisgICAgICAgICAgICAgICAgIEdEaXIgKmRpcjsKKysgICAgICAgICAgICAgICAgR0xpc3QgKmwsICptb2R1bGVzID0gTlVMTDsKKyAKKyAgICAgICAgICAgICAgICAgcGF0aCA9IGdfZ2V0ZW52ICgiR0RLX1BJWEJVRl9NT0RVTEVESVIiKTsKKyAjaWZkZWYgR19PU19XSU4zMgorQEAgLTM2NSwxMiArMzY2LDE5IEBAIGludCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50IGxlbiA9IHN0cmxlbiAoZGVudCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGVuID4gU09FWFRfTEVOICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyY21wIChkZW50ICsgbGVuIC0gU09FWFRfTEVOLCBTT0VYVCkgPT0gMCkgeworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVzID0gZ19saXN0X3ByZXBlbmQgKG1vZHVsZXMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19zdHJkdXAgKGRlbnQpKTsKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFxdWVyeV9tb2R1bGUgKGNvbnRlbnRzLCBwYXRoLCBkZW50KSkKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gRkFMU0U7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgIGdfZGlyX2Nsb3NlIChkaXIpOworICAgICAgICAgICAgICAgICB9CisrCisrICAgICAgICAgICAgICAgIG1vZHVsZXMgPSBnX2xpc3Rfc29ydCAobW9kdWxlcywgKEdDb21wYXJlRnVuYylzdHJjbXApOworKyAgICAgICAgICAgICAgICBmb3IgKGwgPSBtb2R1bGVzOyBsICE9IE5VTEw7IGwgPSBsLT5uZXh0KQorKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcXVlcnlfbW9kdWxlIChjb250ZW50cywgcGF0aCwgbC0+ZGF0YSkpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gRkFMU0U7CisrCisrICAgICAgICAgICAgICAgIGdfbGlzdF9mcmVlX2Z1bGwgKG1vZHVsZXMsIGdfZnJlZSk7CisgI2Vsc2UKKyAgICAgICAgICAgICAgICAgZ19zdHJpbmdfYXBwZW5kX3ByaW50ZiAoY29udGVudHMsICIjIGR5bmFtaWMgbG9hZGluZyBvZiBtb2R1bGVzIG5vdCBzdXBwb3J0ZWRcbiIpOworICNlbmRpZgorLS0gCisyLjEuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dkay1waXhidWYvZ2RrLXBpeGJ1Zl8yLjM2LjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dkay1waXhidWYvZ2RrLXBpeGJ1Zl8yLjM2LjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkYTZkMTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nZGstcGl4YnVmL2dkay1waXhidWZfMi4zNi41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotU1VNTUFSWSA9ICJJbWFnZSBsb2FkaW5nIGxpYnJhcnkgZm9yIEdUSysiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lmd0ay5vcmcvIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCi0KLUxJQ0VOU0UgPSAiTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9M2JmNTAwMDJhZWZkMDAyZjQ5ZTdiYjg1NDA2M2Y3ZTcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmLmg7ZW5kbGluZT0yNjttZDU9NzJiMzlkYTdjYmRkZTJlNjY1MzI5ZmVmNjE4ZTFkNmIiCi0KLVNFQ1RJT04gPSAibGlicyIKLQotREVQRU5EUyA9ICJnbGliLTIuMCBnZGstcGl4YnVmLW5hdGl2ZSIKLQotTUFKX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgotCi1TUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke0JQTn0vJHtNQUpfVkVSfS8ke0JQTn0tJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL2hhcmRjb2RlZF9saWJ0b29sLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2V4dGVuZGluZy1saWJpbnN0YWxsLWRlcGVuZGVuY2llcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vZmF0YWwtbG9hZGVyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtV29yay1hcm91bmQtdGh1bWJuYWlsZXItY3Jvc3MtY29tcGlsZS1mYWlsdXJlLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjAxNzNmZDVjMTFhNWQyMDMwZDA5MjAxMDkwNjM2NDc3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdhY2UwNjE3MDI5MWExZjIxNzcxNTUyNzY4YmFjZTA3MmVjZGVhOWJkNGEwMmY3NjU4OTM5YjlhMzE0YzQwZmMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IHBpeGJ1ZmNhY2hlIHB0ZXN0LWdub21lIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYyBsaWJfcGFja2FnZQotCi1MSUJWID0gIjIuMTAuMCIKLQotR0RLX1BJWEJVRl9MT0FERVJTID89ICJwbmcganBlZyIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7R0RLX1BJWEJVRl9MT0FERVJTfSIKLVBBQ0tBR0VDT05GSUdfbGludXhzdGRiYXNlID0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSAke0dES19QSVhCVUZfTE9BREVSU30iCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICIke0dES19QSVhCVUZfTE9BREVSU30iCi0KLVBBQ0tBR0VDT05GSUdbcG5nXSA9ICItLXdpdGgtbGlicG5nLC0td2l0aG91dC1saWJwbmcsbGlicG5nIgotUEFDS0FHRUNPTkZJR1tqcGVnXSA9ICItLXdpdGgtbGlianBlZywtLXdpdGhvdXQtbGlianBlZyxqcGVnIgotUEFDS0FHRUNPTkZJR1t0aWZmXSA9ICItLXdpdGgtbGlidGlmZiwtLXdpdGhvdXQtbGlidGlmZix0aWZmIgotUEFDS0FHRUNPTkZJR1tqcGVnMjAwMF0gPSAiLS13aXRoLWxpYmphc3BlciwtLXdpdGhvdXQtbGliamFzcGVyLGphc3BlciIKLQotIyBVc2UgR0lPIHRvIHNuaWZmIGltYWdlIGZvcm1hdCBpbnN0ZWFkIG9mIHRyeWluZyBhbGwgbG9hZGVycwotUEFDS0FHRUNPTkZJR1tnaW8tc25pZmZdID0gIi0tZW5hYmxlLWdpby1zbmlmZmluZywtLWRpc2FibGUtZ2lvLXNuaWZmaW5nLCxzaGFyZWQtbWltZS1pbmZvIgotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0td2l0aC14MTEsLS13aXRob3V0LXgxMSx2aXJ0dWFsL2xpYngxMSIKLQotUEFDS0FHRVMgPSsgIiR7UE59LXhsaWIiCi0KLUZJTEVTXyR7UE59LXhsaWIgPSAiJHtsaWJkaXJ9LypwaXhidWZfeGxpYioke1NPTElCU30iCi1BTExPV19FTVBUWV8ke1BOfS14bGliID0gIjEiCi0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vZ2RrLXBpeGJ1Zi0yLjAvZ2RrLXBpeGJ1Zi1xdWVyeS1sb2FkZXJzIgotCi1GSUxFU18ke1BOfS1iaW4gKz0gIiR7ZGF0YWRpcn0vdGh1bWJuYWlsZXJzL2dkay1waXhidWYtdGh1bWJuYWlsZXIudGh1bWJuYWlsZXIiCi0KLUZJTEVTXyR7UE59LWRldiArPSAiIFwKLQkke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1jc291cmNlIFwKLQkke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1waXhkYXRhIFwKLSAgICAgICAgJHtiaW5kaXJ9L2dkay1waXhidWYtcHJpbnQtbWltZS10eXBlcyBcCi0JJHtpbmNsdWRlZGlyfS8qIFwKLQkke2xpYmRpcn0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzLyoubGEgXAotIgotCi1QQUNLQUdFU19EWU5BTUlDICs9ICJeZ2RrLXBpeGJ1Zi1sb2FkZXItLioiCi1QQUNLQUdFU19EWU5BTUlDX2NsYXNzLW5hdGl2ZSA9ICIiCi0KLXB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKLSAgICBwb3N0aW5zdF9waXhidWZsb2FkZXIgPSBkLmdldFZhcigicG9zdGluc3RfcGl4YnVmbG9hZGVyIikKLQotICAgIGxvYWRlcnNfcm9vdCA9IGQuZXhwYW5kKCcke2xpYmRpcn0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzJykKLQotICAgIHBhY2thZ2VzID0gJyAnLmpvaW4oZG9fc3BsaXRfcGFja2FnZXMoZCwgbG9hZGVyc19yb290LCAnXmxpYnBpeGJ1ZmxvYWRlci0oLiopXC5zbyQnLCAnZ2RrLXBpeGJ1Zi1sb2FkZXItJXMnLCAnR0RLIHBpeGJ1ZiBsb2FkZXIgZm9yICVzJykpCi0gICAgZC5zZXRWYXIoJ1BJWEJVRl9QQUNLQUdFUycsIHBhY2thZ2VzKQotCi0gICAgIyBUaGUgdGVzdCBzdWl0ZSBleGVyY2lzZXMgYWxsIHRoZSBsb2FkZXJzLCBzbyBlbnN1cmUgdGhleSBhcmUgYWxsCi0gICAgIyBkZXBlbmRlbmNpZXMgb2YgdGhlIHB0ZXN0IHBhY2thZ2UuCi0gICAgZC5hcHBlbmRWYXIoIlJERVBFTkRTX2dkay1waXhidWYtcHRlc3QiLCAiICIgKyBwYWNrYWdlcykKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JIyBNb3ZlIGdkay1waXhidWYtcXVlcnktbG9hZGVycyBpbnRvIGxpYmRpciBzbyBpdCBpcyBhbHdheXMgYXZhaWxhYmxlCi0JIyBpbiBtdWx0aWxpYiBidWlsZHMuCi0JbXYgJHtEfS8ke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1xdWVyeS1sb2FkZXJzICR7RH0vJHtsaWJkaXJ9L2dkay1waXhidWYtMi4wLwotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0JZmluZCAke0R9JHtsaWJkaXJ9IC1uYW1lICJsaWJwaXhidWZsb2FkZXItKi5sYSIgLWV4ZWMgcm0gXHtcfSBcOwotCi0JY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1jc291cmNlIFwKLQkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzLmNhY2hlCi0KLQljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9nZGstcGl4YnVmLXBpeGRhdGEgXAotCQlHREtfUElYQlVGX01PRFVMRV9GSUxFPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMuY2FjaGUKLQotCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2dkay1waXhidWYtcHJpbnQtbWltZS10eXBlcyBcCi0JCUdES19QSVhCVUZfTU9EVUxFX0ZJTEU9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycy5jYWNoZQotCi0JY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2xpYmRpcn0vZ2RrLXBpeGJ1Zi0yLjAvZ2RrLXBpeGJ1Zi1xdWVyeS1sb2FkZXJzIFwKLQkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzLmNhY2hlIFwKLQkJR0RLX1BJWEJVRl9NT0RVTEVESVI9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycwotfQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dkay1waXhidWYvZ2RrLXBpeGJ1Zl8yLjM2LjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dkay1waXhidWYvZ2RrLXBpeGJ1Zl8yLjM2LjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGMzNTkwNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmXzIuMzYuOC5iYgpAQCAtMCwwICsxLDEwMiBAQAorU1VNTUFSWSA9ICJJbWFnZSBsb2FkaW5nIGxpYnJhcnkgZm9yIEdUSysiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lmd0ay5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCisKK0xJQ0VOU0UgPSAiTEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9M2JmNTAwMDJhZWZkMDAyZjQ5ZTdiYjg1NDA2M2Y3ZTcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmLmg7ZW5kbGluZT0yNjttZDU9NzJiMzlkYTdjYmRkZTJlNjY1MzI5ZmVmNjE4ZTFkNmIiCisKK1NFQ1RJT04gPSAibGlicyIKKworREVQRU5EUyA9ICJnbGliLTIuMCBnZGstcGl4YnVmLW5hdGl2ZSBzaGFyZWQtbWltZS1pbmZvIgorCitNQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCisKK1NSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8ke01BSl9WRVJ9LyR7QlBOfS0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vaGFyZGNvZGVkX2xpYnRvb2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZXh0ZW5kaW5nLWxpYmluc3RhbGwtZGVwZW5kZW5jaWVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9mYXRhbC1sb2FkZXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Xb3JrLWFyb3VuZC10aHVtYm5haWxlci1jcm9zcy1jb21waWxlLWZhaWx1cmUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1xdWVyeWxvYWRlcnMtTWFrZS1vdXRwdXQtbW9yZS1yZXByb2R1Y2libGUucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlMGFhYTAwNjFlYjEyNjY3YjMyYjI3NDcyMjMwYjk2MiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1ZDY4ZTUyODNjZGMwYmY5YmRhOTljM2U2YTFkNTJhZDA3YTAzMzY0ZmExODZiNmMyNmNmYzg2ZmNkMzk2YTE5IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCBwaXhidWZjYWNoZSBwdGVzdC1nbm9tZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uIGd0ay1kb2MgbGliX3BhY2thZ2UKKworTElCViA9ICIyLjEwLjAiCisKK0dES19QSVhCVUZfTE9BREVSUyA/PSAicG5nIGpwZWciCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0dES19QSVhCVUZfTE9BREVSU30iCitQQUNLQUdFQ09ORklHX2xpbnV4c3RkYmFzZSA9ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0gJHtHREtfUElYQlVGX0xPQURFUlN9IgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAiJHtHREtfUElYQlVGX0xPQURFUlN9IgorCitQQUNLQUdFQ09ORklHW3BuZ10gPSAiLS13aXRoLWxpYnBuZywtLXdpdGhvdXQtbGlicG5nLGxpYnBuZyIKK1BBQ0tBR0VDT05GSUdbanBlZ10gPSAiLS13aXRoLWxpYmpwZWcsLS13aXRob3V0LWxpYmpwZWcsanBlZyIKK1BBQ0tBR0VDT05GSUdbdGlmZl0gPSAiLS13aXRoLWxpYnRpZmYsLS13aXRob3V0LWxpYnRpZmYsdGlmZiIKK1BBQ0tBR0VDT05GSUdbanBlZzIwMDBdID0gIi0td2l0aC1saWJqYXNwZXIsLS13aXRob3V0LWxpYmphc3BlcixqYXNwZXIiCisKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItLXdpdGgteDExLC0td2l0aG91dC14MTEsdmlydHVhbC9saWJ4MTEiCisKK1BBQ0tBR0VTID0rICIke1BOfS14bGliIgorCisjIEZvciBHSU8gaW1hZ2UgdHlwZSBzbmlmZmluZworUkRFUEVORFNfJHtQTn0gPSAic2hhcmVkLW1pbWUtaW5mbyIKKworRklMRVNfJHtQTn0teGxpYiA9ICIke2xpYmRpcn0vKnBpeGJ1Zl94bGliKiR7U09MSUJTfSIKK0FMTE9XX0VNUFRZXyR7UE59LXhsaWIgPSAiMSIKKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC9nZGstcGl4YnVmLXF1ZXJ5LWxvYWRlcnMiCisKK0ZJTEVTXyR7UE59LWJpbiArPSAiJHtkYXRhZGlyfS90aHVtYm5haWxlcnMvZ2RrLXBpeGJ1Zi10aHVtYm5haWxlci50aHVtYm5haWxlciIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIgXAorCSR7YmluZGlyfS9nZGstcGl4YnVmLWNzb3VyY2UgXAorCSR7YmluZGlyfS9nZGstcGl4YnVmLXBpeGRhdGEgXAorICAgICAgICAke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1wcmludC1taW1lLXR5cGVzIFwKKwkke2luY2x1ZGVkaXJ9LyogXAorCSR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMvKi5sYSBcCisiCisKK1BBQ0tBR0VTX0RZTkFNSUMgKz0gIl5nZGstcGl4YnVmLWxvYWRlci0uKiIKK1BBQ0tBR0VTX0RZTkFNSUNfY2xhc3MtbmF0aXZlID0gIiIKKworcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgeworICAgIHBvc3RpbnN0X3BpeGJ1ZmxvYWRlciA9IGQuZ2V0VmFyKCJwb3N0aW5zdF9waXhidWZsb2FkZXIiKQorCisgICAgbG9hZGVyc19yb290ID0gZC5leHBhbmQoJyR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMnKQorCisgICAgcGFja2FnZXMgPSAnICcuam9pbihkb19zcGxpdF9wYWNrYWdlcyhkLCBsb2FkZXJzX3Jvb3QsICdebGlicGl4YnVmbG9hZGVyLSguKilcLnNvJCcsICdnZGstcGl4YnVmLWxvYWRlci0lcycsICdHREsgcGl4YnVmIGxvYWRlciBmb3IgJXMnKSkKKyAgICBkLnNldFZhcignUElYQlVGX1BBQ0tBR0VTJywgcGFja2FnZXMpCisKKyAgICAjIFRoZSB0ZXN0IHN1aXRlIGV4ZXJjaXNlcyBhbGwgdGhlIGxvYWRlcnMsIHNvIGVuc3VyZSB0aGV5IGFyZSBhbGwKKyAgICAjIGRlcGVuZGVuY2llcyBvZiB0aGUgcHRlc3QgcGFja2FnZS4KKyAgICBkLmFwcGVuZFZhcigiUkRFUEVORFNfJXMtcHRlc3QiICUgZC5nZXRWYXIoJ1BOJyksICIgIiArIHBhY2thZ2VzKQorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwkjIE1vdmUgZ2RrLXBpeGJ1Zi1xdWVyeS1sb2FkZXJzIGludG8gbGliZGlyIHNvIGl0IGlzIGFsd2F5cyBhdmFpbGFibGUKKwkjIGluIG11bHRpbGliIGJ1aWxkcy4KKwltdiAke0R9LyR7YmluZGlyfS9nZGstcGl4YnVmLXF1ZXJ5LWxvYWRlcnMgJHtEfS8ke2xpYmRpcn0vZ2RrLXBpeGJ1Zi0yLjAvCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKwlmaW5kICR7RH0ke2xpYmRpcn0gLW5hbWUgImxpYnBpeGJ1ZmxvYWRlci0qLmxhIiAtZXhlYyBybSBce1x9IFw7CisKKwljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9nZGstcGl4YnVmLWNzb3VyY2UgXAorCQlHREtfUElYQlVGX01PRFVMRV9GSUxFPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMuY2FjaGUKKworCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2dkay1waXhidWYtcGl4ZGF0YSBcCisJCUdES19QSVhCVUZfTU9EVUxFX0ZJTEU9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycy5jYWNoZQorCisJY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1wcmludC1taW1lLXR5cGVzIFwKKwkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzLmNhY2hlCisKKwljcmVhdGVfd3JhcHBlciAke0R9LyR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC9nZGstcGl4YnVmLXF1ZXJ5LWxvYWRlcnMgXAorCQlHREtfUElYQlVGX01PRFVMRV9GSUxFPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMuY2FjaGUgXAorCQlHREtfUElYQlVGX01PRFVMRURJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzCit9CitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUtZGVza3RvcC9nbm9tZS1kZXNrdG9wLzAwMDEtY29uZmlndXJlLmFjLVJlbW92ZS1nbm9tZS1jb21tb24tbWFjcm8tY2FsbHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcC8wMDAxLWNvbmZpZ3VyZS5hYy1SZW1vdmUtZ25vbWUtY29tbW9uLW1hY3JvLWNhbGxzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5NTM5M2MKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcC8wMDAxLWNvbmZpZ3VyZS5hYy1SZW1vdmUtZ25vbWUtY29tbW9uLW1hY3JvLWNhbGxzLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gODM0YmM4NjE5MjFmZTAzNjFmMmQ2YTViNTcxNmZjOTdhOTUxOTQ3OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CitEYXRlOiBUaHUsIDYgSnVsIDIwMTcgMTM6MTM6NDUgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmFjOiBSZW1vdmUgZ25vbWUtY29tbW9uIG1hY3JvIGNhbGxzCisKK2dub21lLWNvbW1vbiBpcyBkZXByZWNhdGVkIGFuZCB0aGVzZSBhcmVuJ3QgZG9pbmcgbXVjaCBmb3IgdXMuCisKK1Vwc3RyZWFtYWJsZSBmaXggd291bGQgcHJvYmFibHkgaW52b2x2ZSB1c2luZyBhdXRvY29uZi1hcmNoaXZlOgorVHJ5aW5nIHRvIGF2b2lkIHRoYXQgZGVwZW5kZW5jeSBmb3Igbm93LgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKK1NpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCAzIC0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCA3YWRjZjBlLi5iYjc2NTlkIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC03MSw5ICs3MSw2IEBAIEFDX1NVQlNUKEdOT01FX0RBVEUpCisgQUNfU1VCU1QoR05PTUVfREFURV9DT01NRU5UX1NUQVJUKQorIEFDX1NVQlNUKEdOT01FX0RBVEVfQ09NTUVOVF9FTkQpCisgCistR05PTUVfQ09NUElMRV9XQVJOSU5HUyhbbWF4aW11bV0pCistR05PTUVfTUFJTlRBSU5FUl9NT0RFX0RFRklORVMKKy0KKyBBQ19BUkdfRU5BQkxFKGRlcHJlY2F0aW9uX2ZsYWdzLAorICAgICAgICAgICAgICAgW0FDX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1kZXByZWNhdGlvbi1mbGFnc10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3VzZSAqX0RJU0FCTEVfREVQUkVDQVRFRCBmbGFncyBAPDpAZGVmYXVsdD1ub0A6PkBdKV0sLAorLS0gCisyLjEuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcDNfMy4yMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AzXzMuMjIuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcyYzZjZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcDNfMy4yMi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotU1VNTUFSWSA9ICJHTk9NRSBsaWJyYXJ5IGZvciByZWFkaW5nIC5kZXNrdG9wIGZpbGVzIgotU0VDVElPTiA9ICJ4MTEvZ25vbWUiCi1MSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIgotCi1CUE4gPSAiZ25vbWUtZGVza3RvcCIKLQotaW5oZXJpdCBnbm9tZSBwa2djb25maWcgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiM2Q3MjIyZDUzMDVmM2RiMDIyZWNhMzFkODEwOGUwMmQiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI1MWQ3ZWJmN2E2YzM1OWJlMTRjM2RkN2EwMjIyMTNlOTMxNDg0NjUzODE1ZWIxMGIwMTMxYmVmNGM4OTc5ZTFjIgotCi1TUkNfVVJJICs9ICJmaWxlOi8vZ25vbWUtZGVza3RvcC10aHVtYm5haWwtZG9uLXQtY29udmVydC10aW1lX3QtdG8tbG9uZy5wYXRjaCIKLQotREVQRU5EUyArPSAiaW50bHRvb2wtbmF0aXZlIGdub21lLWNvbW1vbi1uYXRpdmUgZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyBnY29uZiB2aXJ0dWFsL2xpYngxMSBndGsrMyBnbGliLTIuMCBzdGFydHVwLW5vdGlmaWNhdGlvbiB4a2V5Ym9hcmQtY29uZmlnIGlzby1jb2RlcyB1ZGV2IgotCi1pbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjayBndGstZG9jCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWRlc2t0b3AtZG9jcyIKLQotUEFDS0FHRVMgPSsgImxpYmdub21lLWRlc2t0b3AzIgotRklMRVNfbGliZ25vbWUtZGVza3RvcDMgPSAiJHtsaWJkaXJ9L2xpYioke1NPTElCU30gJHtkYXRhZGlyfS9saWJnbm9tZS1kZXNrdG9wKi9wbnAuaWRzICR7ZGF0YWRpcn0vZ25vbWUvKnhtbCIKLQotUlJFQ09NTUVORFNfbGliZ25vbWUtZGVza3RvcDMgKz0gImdzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcDNfMy4yNC4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AzXzMuMjQuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YzFjMjEzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AzXzMuMjQuMi5iYgpAQCAtMCwwICsxLDI3IEBACitTVU1NQVJZID0gIkdOT01FIGxpYnJhcnkgZm9yIHJlYWRpbmcgLmRlc2t0b3AgZmlsZXMiCitTRUNUSU9OID0gIngxMS9nbm9tZSIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NWYzMGYwNzE2ZGZkZDBkOTFlYjQzOWViZWM1MjJlYzIiCisKK0JQTiA9ICJnbm9tZS1kZXNrdG9wIgorCitpbmhlcml0IGdub21lIHBrZ2NvbmZpZyB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJhZjdjNmEyNDNkZjdhMzM1YTAxMGJkYzA1YjM0Y2E5MyIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjhmYTFkZTY2YTZhNzU5NjNiZmZjNzliMDFhNjA0MzRjNzEyMzdkNDRjNTFiZWNhMDljMGY3MTRhMDMyZDc4NWUiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly9nbm9tZS1kZXNrdG9wLXRodW1ibmFpbC1kb24tdC1jb252ZXJ0LXRpbWVfdC10by1sb25nLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1SZW1vdmUtZ25vbWUtY29tbW9uLW1hY3JvLWNhbGxzLnBhdGNoIFwKKyIKKworREVQRU5EUyArPSAiaW50bHRvb2wtbmF0aXZlIGdzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMgZ2NvbmYgdmlydHVhbC9saWJ4MTEgZ3RrKzMgZ2xpYi0yLjAgc3RhcnR1cC1ub3RpZmljYXRpb24geGtleWJvYXJkLWNvbmZpZyBpc28tY29kZXMgdWRldiIKKworaW5oZXJpdCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgZ3RrLWRvYworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1kZXNrdG9wLWRvY3MiCisKK1BBQ0tBR0VTID0rICJsaWJnbm9tZS1kZXNrdG9wMyIKK0ZJTEVTX2xpYmdub21lLWRlc2t0b3AzID0gIiR7bGliZGlyfS9saWIqJHtTT0xJQlN9ICR7ZGF0YWRpcn0vbGliZ25vbWUtZGVza3RvcCovcG5wLmlkcyAke2RhdGFkaXJ9L2dub21lLyp4bWwiCisKK1JSRUNPTU1FTkRTX2xpYmdub21lLWRlc2t0b3AzICs9ICJnc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9hZHdhaXRhLWljb24tdGhlbWUvMDAwMS1Eb24tdC11c2UtQUNfQ0FOT05JQ0FMX0hPU1QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2Fkd2FpdGEtaWNvbi10aGVtZS8wMDAxLURvbi10LXVzZS1BQ19DQU5PTklDQUxfSE9TVC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lN2FjOTdiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9hZHdhaXRhLWljb24tdGhlbWUvMDAwMS1Eb24tdC11c2UtQUNfQ0FOT05JQ0FMX0hPU1QucGF0Y2gKQEAgLTAsMCArMSwyOSBAQAorRnJvbSBkMmI5YWQ4YTgwYmY5MzIwZmUzNWM5YWVlOGY1MmU1NWViZDQwZTA2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KK0RhdGU6IFR1ZSwgMzAgTWF5IDIwMTcgMTQ6NTU6NDkgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gRG9uJ3QgdXNlIEFDX0NBTk9OSUNBTF9IT1NUCisKK1RoaXMgd29uJ3Qgd29yayB3aGVuIGJ1aWxkaW5nIGFsbGFyY2ggKGFuZCBpcyBvbmx5IHVzZWQgdG8gZmluZCBvdXQgaWYKK3RhcmdldCBpcyB3aW5kb3dzKS4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCAxIC0KKyAxIGZpbGUgY2hhbmdlZCwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBkODU1YjdhLi42OTA4ZjU5IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0zLDcgKzMsNiBAQCBBQ19QUkVSRVEoMi41MykKKyAKKyBBQ19JTklUKFthZHdhaXRhLWljb24tdGhlbWVdLCBbMy4yNC4wXSwKKyAgICAgICAgIFtodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD1hZHdhaXRhLWljb24tdGhlbWVdKQorLUFDX0NBTk9OSUNBTF9IT1NUCisgQUNfQ09ORklHX01BQ1JPX0RJUihbbTRdKQorIEFDX0NPTkZJR19TUkNESVIoW2luZGV4LnRoZW1lLmluXSkKKyAKKy0tIAorMi4xLjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9hZHdhaXRhLWljb24tdGhlbWUvMDAwMS1SdW4taW5zdGFsbGF0aW9uLWNvbW1hbmRzLWFzLXNoZWxsLWpvYnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2Fkd2FpdGEtaWNvbi10aGVtZS8wMDAxLVJ1bi1pbnN0YWxsYXRpb24tY29tbWFuZHMtYXMtc2hlbGwtam9icy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YzM4ZTIzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9hZHdhaXRhLWljb24tdGhlbWUvMDAwMS1SdW4taW5zdGFsbGF0aW9uLWNvbW1hbmRzLWFzLXNoZWxsLWpvYnMucGF0Y2gKQEAgLTAsMCArMSw4MiBAQAorRnJvbSA4ZGNkNzNiNDVhNjYwZGJkYzU2MDY3NjgzNWJhNDZmNDk1MzM0ZjE0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDEzIEp1biAyMDE3IDE4OjEwOjA2ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIFJ1biBpbnN0YWxsYXRpb24gY29tbWFuZHMgYXMgc2hlbGwgam9icworCitUaGlzIGdyZWF0bHkgc3BlZWRzIHVwIGluc3RhbGxhdGlvbiB0aW1lIG9uIG11bHRpLWNvcmUgc3lzdGVtcy4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9mdWxsY29sb3IvTWFrZWZpbGUuYW0gfCAzICsrLQorIHNyYy9zcGlubmVyL01ha2VmaWxlLmFtICAgfCA1ICsrKy0tCisgc3JjL3N5bWJvbGljL01ha2VmaWxlLmFtICB8IDcgKysrKy0tLQorIDMgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2Z1bGxjb2xvci9NYWtlZmlsZS5hbSBiL3NyYy9mdWxsY29sb3IvTWFrZWZpbGUuYW0KK2luZGV4IDFjOTQwYTUuLjM5OThlZTYgMTAwNjQ0CistLS0gYS9zcmMvZnVsbGNvbG9yL01ha2VmaWxlLmFtCisrKysgYi9zcmMvZnVsbGNvbG9yL01ha2VmaWxlLmFtCitAQCAtOSw5ICs5LDEwIEBAIGluc3RhbGwtZGF0YS1sb2NhbDoKKyAJCWZvciBmaWxlIGluIGBjZCAkKHRvcF9zcmNkaXIpLyQoU1ZHT1VURElSKS8kJHNpemUgJiYgZmluZCAuIC1uYW1lICIqLnBuZyJgOyBkbyBcCisgCQkJY29udGV4dD0iYGRpcm5hbWUgJCRmaWxlYCI7IFwKKyAJCQkkKG1rZGlyX3ApICQoREVTVERJUikkKHRoZW1lZGlyKS8kJHNpemUvJCRjb250ZXh0OyBcCistCQkJJChpbnN0YWxsX3NoX0RBVEEpICQodG9wX3NyY2RpcikvJChTVkdPVVRESVIpLyQkc2l6ZS8kJGZpbGUgJChERVNURElSKSQodGhlbWVkaXIpLyQkc2l6ZS8kJGZpbGU7IFwKKysJCQkkKGluc3RhbGxfc2hfREFUQSkgJCh0b3Bfc3JjZGlyKS8kKFNWR09VVERJUikvJCRzaXplLyQkZmlsZSAkKERFU1RESVIpJCh0aGVtZWRpcikvJCRzaXplLyQkZmlsZSAmIFwKKyAJCWRvbmU7IFwKKyAJZG9uZTsKKysJd2FpdAorIAorICMjIEZJWE1FIHdlIHNob3VsZCBhZGQgYSB3YXkgdG8gcmVtb3ZlIGxpbmtzIGdlbmVyYXRlZCBieSBpY29uIG1hcHBpbmcKKyB1bmluc3RhbGwtbG9jYWw6CitkaWZmIC0tZ2l0IGEvc3JjL3NwaW5uZXIvTWFrZWZpbGUuYW0gYi9zcmMvc3Bpbm5lci9NYWtlZmlsZS5hbQoraW5kZXggODZmNGQ3Yy4uM2ZhZThjMSAxMDA2NDQKKy0tLSBhL3NyYy9zcGlubmVyL01ha2VmaWxlLmFtCisrKysgYi9zcmMvc3Bpbm5lci9NYWtlZmlsZS5hbQorQEAgLTI0LDEzICsyNCwxNCBAQCBpbnN0YWxsLWRhdGEtbG9jYWw6CisgCSAgICAgIGZvciBmaWxlIGluIGBjZCAkKHRvcF9zcmNkaXIpLyQoU1ZHT1VURElSKS8kJHNpemU7IGZpbmQgLiAtbmFtZSAiKi5wbmciYDsgZG8gXAorIAkJICAgICAgY29udGV4dD0iYGRpcm5hbWUgJCRmaWxlYCI7IFwKKyAJCSAgICAgICQobWtkaXJfcCkgJChERVNURElSKSQodGhlbWVkaXIpLyQkc2l6ZS8kJGNvbnRleHQ7IFwKKy0JCSAgICAgICQoaW5zdGFsbF9zaF9EQVRBKSAkKHRvcF9zcmNkaXIpLyQoU1ZHT1VURElSKS8kJHNpemUvJCRmaWxlICQoREVTVERJUikkKHRoZW1lZGlyKS8kJHNpemUvJCRmaWxlOyBcCisrCQkgICAgICAkKGluc3RhbGxfc2hfREFUQSkgJCh0b3Bfc3JjZGlyKS8kKFNWR09VVERJUikvJCRzaXplLyQkZmlsZSAkKERFU1RESVIpJCh0aGVtZWRpcikvJCRzaXplLyQkZmlsZSAmIFwKKyAJICAgICAgZG9uZTsgXAorIAlmb3IgZmlsZSBpbiBgY2QgJCh0b3Bfc3JjZGlyKS8kKFNWR09VVERJUikvc2NhbGFibGUtdXAtdG8tMzI7IGZpbmQgLiAtbmFtZSAiKi5zdmciYDsgZG8gXAorIAkJY29udGV4dD0iYGRpcm5hbWUgJCRmaWxlYCI7IFwKKyAJCSQobWtkaXJfcCkgJChERVNURElSKSQodGhlbWVkaXIpL3NjYWxhYmxlLXVwLXRvLTMyLyQkY29udGV4dDsgXAorLQkJJChpbnN0YWxsX3NoX0RBVEEpICQodG9wX3NyY2RpcikvJChTVkdPVVRESVIpL3NjYWxhYmxlLXVwLXRvLTMyLyQkZmlsZSAkKERFU1RESVIpJCh0aGVtZWRpcikvc2NhbGFibGUtdXAtdG8tMzIvJCRmaWxlOyBcCisrCQkkKGluc3RhbGxfc2hfREFUQSkgJCh0b3Bfc3JjZGlyKS8kKFNWR09VVERJUikvc2NhbGFibGUtdXAtdG8tMzIvJCRmaWxlICQoREVTVERJUikkKHRoZW1lZGlyKS9zY2FsYWJsZS11cC10by0zMi8kJGZpbGUgJiBcCisgCWRvbmUKKysJd2FpdAorIAorIHVuaW5zdGFsbC1sb2NhbDoKKyAJICAgICAgZm9yIGZpbGUgaW4gYGNkICQodG9wX3NyY2RpcikvJChTVkdPVVRESVIpL3NjYWxhYmxlLXVwLXRvLTMyOyBmaW5kIC4gLW5hbWUgIiouc3ZnImA7IGRvIFwKK2RpZmYgLS1naXQgYS9zcmMvc3ltYm9saWMvTWFrZWZpbGUuYW0gYi9zcmMvc3ltYm9saWMvTWFrZWZpbGUuYW0KK2luZGV4IDI0YWFjOWIuLjYxYmEwNzEgMTAwNjQ0CistLS0gYS9zcmMvc3ltYm9saWMvTWFrZWZpbGUuYW0KKysrKyBiL3NyYy9zeW1ib2xpYy9NYWtlZmlsZS5hbQorQEAgLTI1LDE4ICsyNSwxOSBAQCBpbnN0YWxsLWRhdGEtbG9jYWw6CisgCQlmb3IgZmlsZSBpbiBgY2QgJCh0b3Bfc3JjZGlyKS8kKFNWR09VVERJUikvJCRzaXplOyBmaW5kIC4gLW5hbWUgIioucG5nImA7IGRvIFwKKyAJCQljb250ZXh0PSJgZGlybmFtZSAkJGZpbGVgIjsgXAorIAkJCSQobWtkaXJfcCkgJChERVNURElSKSQodGhlbWVkaXIpLyQkc2l6ZS8kJGNvbnRleHQ7IFwKKy0JCQkkKGluc3RhbGxfc2hfREFUQSkgJCh0b3Bfc3JjZGlyKS8kKFNWR09VVERJUikvJCRzaXplLyQkZmlsZSAkKERFU1RESVIpJCh0aGVtZWRpcikvJCRzaXplLyQkZmlsZTsgXAorKwkJCSQoaW5zdGFsbF9zaF9EQVRBKSAkKHRvcF9zcmNkaXIpLyQoU1ZHT1VURElSKS8kJHNpemUvJCRmaWxlICQoREVTVERJUikkKHRoZW1lZGlyKS8kJHNpemUvJCRmaWxlICYgXAorIAkJZG9uZTsgXAorIAlkb25lCisgCWZvciBmaWxlIGluIGBjZCAkKHRvcF9zcmNkaXIpLyQoU1ZHT1VURElSKS9zY2FsYWJsZTsgZmluZCAuIC1uYW1lICIqLnN2ZyJgOyBkbyBcCisgCQljb250ZXh0PSJgZGlybmFtZSAkJGZpbGVgIjsgXAorIAkJJChta2Rpcl9wKSAkKERFU1RESVIpJCh0aGVtZWRpcikvc2NhbGFibGUvJCRjb250ZXh0OyBcCistCQkkKGluc3RhbGxfc2hfREFUQSkgJCh0b3Bfc3JjZGlyKS8kKFNWR09VVERJUikvc2NhbGFibGUvJCRmaWxlICQoREVTVERJUikkKHRoZW1lZGlyKS9zY2FsYWJsZS8kJGZpbGU7IFwKKysJCSQoaW5zdGFsbF9zaF9EQVRBKSAkKHRvcF9zcmNkaXIpLyQoU1ZHT1VURElSKS9zY2FsYWJsZS8kJGZpbGUgJChERVNURElSKSQodGhlbWVkaXIpL3NjYWxhYmxlLyQkZmlsZSAmIFwKKyAJCWZvciBzaXplIGluICQoc3ltYm9saWNfZW5jb2RlX3NpemVzKTsgZG8gXAorIAkJCSQobWtkaXJfcCkgJChERVNURElSKSQodGhlbWVkaXIpLyQkc2l6ZS8kJGNvbnRleHQ7IFwKKy0JCQkkKEdUS19FTkNPREVfU1lNQk9MSUNfU1ZHKSAkKHRvcF9zcmNkaXIpLyQoU1ZHT1VURElSKS9zY2FsYWJsZS8kJGZpbGUgJCRzaXplIC1vICQoREVTVERJUikkKHRoZW1lZGlyKS8kJHNpemUvJCRjb250ZXh0OyBcCisrCQkJJChHVEtfRU5DT0RFX1NZTUJPTElDX1NWRykgJCh0b3Bfc3JjZGlyKS8kKFNWR09VVERJUikvc2NhbGFibGUvJCRmaWxlICQkc2l6ZSAtbyAkKERFU1RESVIpJCh0aGVtZWRpcikvJCRzaXplLyQkY29udGV4dCAmIFwKKyAJCWRvbmUgXAorIAlkb25lCisrCXdhaXQKKyAKKyB1bmluc3RhbGwtbG9jYWw6CisgCWZvciBmaWxlIGluIGBjZCAkKHRvcF9zcmNkaXIpLyQoU1ZHT1VURElSKS9zY2FsYWJsZTsgZmluZCAuIC1uYW1lICIqLnN2ZyJgOyBkbyBcCistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2Fkd2FpdGEtaWNvbi10aGVtZV8zLjIyLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2Fkd2FpdGEtaWNvbi10aGVtZV8zLjIyLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjYmMxZTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9hZHdhaXRhLWljb24tdGhlbWVfMy4yMi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotU1VNTUFSWSA9ICJHVEsrIGljb24gdGhlbWUiCi1IT01FUEFHRSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvR05PTUUvc291cmNlcy9hZHdhaXRhLWljb24tdGhlbWUvIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCi1TRUNUSU9OID0gIngxMS9nbm9tZSIKLQotTElDRU5TRSA9ICJMR1BMLTMuMCB8IENDLUJZLVNBLTMuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM4NGNhYzg4ZTQ2ZmMwNzY0N2VhMDdlNmMyNGVlYjdjIgotCi1pbmhlcml0IGFsbGFyY2ggYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IGd0ay1pY29uLWNhY2hlIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgotCi0KLU1BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKLVNSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8ke01BSl9WRVJ9LyR7QlBOfS0ke1BWfS50YXIueHogXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImNkZTUxZDdkZmNiY2ZhM2I4Y2RjM2U1ZjBkZjhjNzk5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImMxOGJmNmUyNjA4N2Q5ODE5YTk2MmM3NzI4OGIyOTFlZmFiMjVkMDQxOWI3M2Q5MDlkZDc3MTcxNmE0NWRjYjciCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCSMgQnVpbGQgdXNlcyBndGstZW5jb2RlLXN5bWJvbGljLXN2ZyB0byBjcmVhdGUgcG5nIHZlcnNpb25zOgotICAgICAgICAjIG5vIG5lZWQgdG8gc3RvcmUgdGhlIHN2Z3MgYW55bW9yZS4KLQlybSAtZiAke0R9JHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvc2NhbGFibGUvKi8qLXN5bWJvbGljLnN2ZyBcCi0JICAgICAgJHtEfSR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhL3NjYWxhYmxlLyovKi1zeW1ib2xpYy1ydGwuc3ZnCi19Ci0KLVBBQ0tBR0VTID0gIiR7UE59LWN1cnNvcnMgJHtQTn0tc3ltYm9saWMtaGlyZXMgJHtQTn0tc3ltYm9saWMgJHtQTn0taGlyZXMgJHtQTn0iCi0KLVJSRVBMQUNFU18ke1BOfSA9ICJnbm9tZS1pY29uLXRoZW1lIgotUkNPTkZMSUNUU18ke1BOfSA9ICJnbm9tZS1pY29uLXRoZW1lIgotUlBST1ZJREVTXyR7UE59ID0gImdub21lLWljb24tdGhlbWUiCi0KLUZJTEVTXyR7UE59LWN1cnNvcnMgPSAiJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvY3Vyc29ycy8iCi1GSUxFU18ke1BOfS1zeW1ib2xpYy1oaXJlcyA9ICIke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS85Nng5Ni8qLyouc3ltYm9saWMucG5nIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzY0eDY0LyovKi5zeW1ib2xpYy5wbmcgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvNDh4NDgvKi8qLnN5bWJvbGljLnBuZyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS8zMngzMi8qLyouc3ltYm9saWMucG5nIgotRklMRVNfJHtQTn0tc3ltYm9saWMgPSAiJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvMTZ4MTYvKi8qLnN5bWJvbGljLnBuZyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS8yNHgyNC8qLyouc3ltYm9saWMucG5nIgotRklMRVNfJHtQTn0taGlyZXMgPSAiJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvMjU2eDI1Ni8gXAotICAgICAgICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvNTEyeDUxMi8iCi1GSUxFU18ke1BOfSA9ICIke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS8gXAotICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL3BrZ2NvbmZpZy9hZHdhaXRhLWljb24tdGhlbWUucGMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2Fkd2FpdGEtaWNvbi10aGVtZV8zLjI0LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2Fkd2FpdGEtaWNvbi10aGVtZV8zLjI0LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDM0MDUzNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvYWR3YWl0YS1pY29uLXRoZW1lXzMuMjQuMC5iYgpAQCAtMCwwICsxLDQ0IEBACitTVU1NQVJZID0gIkdUSysgaWNvbiB0aGVtZSIKK0hPTUVQQUdFID0gImh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9HTk9NRS9zb3VyY2VzL2Fkd2FpdGEtaWNvbi10aGVtZS8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKK1NFQ1RJT04gPSAieDExL2dub21lIgorCitMSUNFTlNFID0gIkxHUEwtMy4wIHwgQ0MtQlktU0EtMy4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Yzg0Y2FjODhlNDZmYzA3NjQ3ZWEwN2U2YzI0ZWViN2MiCisKK2luaGVyaXQgYWxsYXJjaCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgZ3RrLWljb24tY2FjaGUgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCisKKworTUFKX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgorU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvbi10LXVzZS1BQ19DQU5PTklDQUxfSE9TVC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJ1bi1pbnN0YWxsYXRpb24tY29tbWFuZHMtYXMtc2hlbGwtam9icy5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjNjY2FjMGQ2MDBmZmM5MzZkMmFkZmI4MGU5MjQ1YmM1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImNjZjc5ZmYzYmQzNDAyNTQ3MzdjZTRkMjhiODdmMGNjZWU0YjMzNThjZDNjZDVjZDExZGM3YjQyZjQxYjI3MmEiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCSMgQnVpbGQgdXNlcyBndGstZW5jb2RlLXN5bWJvbGljLXN2ZyB0byBjcmVhdGUgcG5nIHZlcnNpb25zOgorICAgICAgICAjIG5vIG5lZWQgdG8gc3RvcmUgdGhlIHN2Z3MgYW55bW9yZS4KKwlybSAtZiAke0R9JHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvc2NhbGFibGUvKi8qLXN5bWJvbGljLnN2ZyBcCisJICAgICAgJHtEfSR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhL3NjYWxhYmxlLyovKi1zeW1ib2xpYy1ydGwuc3ZnCit9CisKK1BBQ0tBR0VTID0gIiR7UE59LWN1cnNvcnMgJHtQTn0tc3ltYm9saWMtaGlyZXMgJHtQTn0tc3ltYm9saWMgJHtQTn0taGlyZXMgJHtQTn0iCisKK1JSRVBMQUNFU18ke1BOfSA9ICJnbm9tZS1pY29uLXRoZW1lIgorUkNPTkZMSUNUU18ke1BOfSA9ICJnbm9tZS1pY29uLXRoZW1lIgorUlBST1ZJREVTXyR7UE59ID0gImdub21lLWljb24tdGhlbWUiCisKK0ZJTEVTXyR7UE59LWN1cnNvcnMgPSAiJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvY3Vyc29ycy8iCitGSUxFU18ke1BOfS1zeW1ib2xpYy1oaXJlcyA9ICIke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS85Nng5Ni8qLyouc3ltYm9saWMucG5nIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzY0eDY0LyovKi5zeW1ib2xpYy5wbmcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvNDh4NDgvKi8qLnN5bWJvbGljLnBuZyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS8zMngzMi8qLyouc3ltYm9saWMucG5nIgorRklMRVNfJHtQTn0tc3ltYm9saWMgPSAiJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvMTZ4MTYvKi8qLnN5bWJvbGljLnBuZyBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS8yNHgyNC8qLyouc3ltYm9saWMucG5nIgorRklMRVNfJHtQTn0taGlyZXMgPSAiJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvMjU2eDI1Ni8gXAorICAgICAgICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvNTEyeDUxMi8iCitGSUxFU18ke1BOfSA9ICIke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS8gXAorICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL3BrZ2NvbmZpZy9hZHdhaXRhLWljb24tdGhlbWUucGMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2djb25mXzMuMi42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9nY29uZl8zLjIuNi5iYgppbmRleCA5ZTlmNzE0Li45MmZkMTJjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2djb25mXzMuMi42LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvZ2NvbmZfMy4yLjYuYmIKQEAgLTEsNSArMSw2IEBACiBTVU1NQVJZID0gIkdOT01FIGNvbmZpZ3VyYXRpb24gc3lzdGVtIgogU0VDVElPTiA9ICJ4MTEvZ25vbWUiCitIT01FUEFHRSA9ICJodHRwczovL3Byb2plY3RzLmdub21lLm9yZy9nY29uZi8iCiBMSUNFTlNFID0gIkxHUEx2MisiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01NWNhODE3Y2NiN2Q1YjViNjYzNTU2OTBlOWFiYzYwNSIKIApAQCAtMjIsOSArMjMsOCBAQAogCiAjIERpc2FibGUgUG9saWN5S2l0IGJ5IGRlZmF1bHQKIFBBQ0tBR0VDT05GSUcgPz89ICIiCi0jIFdlIHJlYWxseSBkb24ndCB3YW50IFBvbGljeUtpdCBmb3IgbmF0aXZlIG9yIHVjbGliYworIyBXZSByZWFsbHkgZG9uJ3Qgd2FudCBQb2xpY3lLaXQgZm9yIG5hdGl2ZQogUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAiIgotUEFDS0FHRUNPTkZJR19saWJjLXVjbGliYyA9ICIiCiAKIFBBQ0tBR0VDT05GSUdbcG9saWN5a2l0XSA9ICItLWVuYWJsZS1kZWZhdWx0cy1zZXJ2aWNlLC0tZGlzYWJsZS1kZWZhdWx0cy1zZXJ2aWNlLHBvbGtpdCIKIFBBQ0tBR0VDT05GSUdbZGVidWddID0gIi0tZW5hYmxlLWRlYnVnPXllcywgLS1lbmFibGUtZGVidWc9bWluaW11bSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvZ25vbWUtY29tbW9uXzMuMTguMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvZ25vbWUtY29tbW9uXzMuMTguMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDZmM2JiMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2dub21lLWNvbW1vbl8zLjE4LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1TVU1NQVJZID0gIkNvbW1vbiBtYWNyb3MgZm9yIGJ1aWxkaW5nIEdOT01FIGFwcGxpY2F0aW9ucyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ25vbWUub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgotCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotCi1TRUNUSU9OID0gIngxMS9nbm9tZSIKLWluaGVyaXQgZ25vbWViYXNlIGFsbGFyY2gKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiOTMzMjU4ZDljMjNlMjE4ZWI2ZWVjOWNjMTk1MWIwNTMiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIyMjU2OWUzNzBhZTc1NWUwNDUyN2I3NjMyOGJlZmM0YzczYjYyYmZkNGE1NzI0OTlmZGUxMTZiODMxOGFmOGNmIgotCi1FWFRSQV9BVVRPUkVDT05GID0gIiIKLURFUEVORFMgPSAiIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9hY2xvY2FsIgotRklMRVNfJHtQTn0tZGV2ID0gIiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2dub21lLXRoZW1lcy1zdGFuZGFyZF8zLjIyLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2dub21lLXRoZW1lcy1zdGFuZGFyZF8zLjIyLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiM2NjOTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9nbm9tZS10aGVtZXMtc3RhbmRhcmRfMy4yMi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotU1VNTUFSWSA9ICJHVEsrMiBzdGFuZGFyZCB0aGVtZXMiCi1IT01FUEFHRSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvR05PTUUvc291cmNlcy9nbm9tZS10aGVtZXMtc3RhbmRhcmQvIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCi1TRUNUSU9OID0gIngxMS9nbm9tZSIKLQotTElDRU5TRSA9ICJMR1BMLTIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCBndGstaWNvbi1jYWNoZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi0KLUFOWV9PRl9ESVNUUk9fRkVBVFVSRVMgPSAiJHtHVEsyRElTVFJPRkVBVFVSRVN9IgotCi1ERVBFTkRTICs9ICJpbnRsdG9vbC1uYXRpdmUgZ3RrKyIKLQotTUFKX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgotU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiODQ2MjRkYmNlY2FiN2FkZDMyNjcyYWJhZTAzMDMxNGQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjM0NTE2Y2Q1OWI4NzNjMTg3YzE4OTdjMjViYWMzYjljZTJkMzBhNDcyZjFmZDdhZTlkNzEwNWQ5M2UxN2RhNSIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1ndGszLWVuZ2luZSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgICAgICMgT25seSBidWlsZGluZyBBZHdhaXRhLCByZW1vdmUgaGlnaGNvbnRyYXN0IGZpbGVzCi0gICAgICAgIHJtIC1yZiAke0R9JHtwcmVmaXh9L3NoYXJlL3RoZW1lcy9IaWdoQ29udHJhc3QgXAotICAgICAgICAgICAgICAgJHtEfSR7cHJlZml4fS9zaGFyZS9pY29ucwotfQotCi0jIFRoZXJlIGNvdWxkIGJlIGdub21lLXRoZW1lLWhpZ2hjb250cmFzdCBhcyB3ZWxsIGJ1dCB0aGF0IHJlcXVpcmVzCi0jIGd0ayszIGFuZCBpbmNsdWRlcyBsb3RzIG9mIGljb25zIChpcyBhbHNvIGJyb2tlbiB3aXRoIEIgIT0gUykuCi1QQUNLQUdFUyArPSAiZ25vbWUtdGhlbWUtYWR3YWl0YSBcCi0gICAgICAgICAgICAgZ25vbWUtdGhlbWUtYWR3YWl0YS1kYmcgXAotICAgICAgICAgICAgIGdub21lLXRoZW1lLWFkd2FpdGEtZGV2wqBcCi0gICAgICAgICAgICAgZ25vbWUtdGhlbWUtYWR3YWl0YS1kYXJrIFwKLSAgICAgICAgICAgICAiCi0KLUZJTEVTX2dub21lLXRoZW1lLWFkd2FpdGEgPSAiJHtwcmVmaXh9L3NoYXJlL3RoZW1lcy9BZHdhaXRhIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9ndGstMi4wLzIuMTAuMC9lbmdpbmVzL2xpYmFkd2FpdGEuc28iCi1GSUxFU19nbm9tZS10aGVtZS1hZHdhaXRhLWRldiA9ICIke2xpYmRpcn0vZ3RrLTIuMC8yLjEwLjAvZW5naW5lcy9saWJhZHdhaXRhLmxhIgotRklMRVNfZ25vbWUtdGhlbWUtYWR3YWl0YS1kYmcgPSAiJHtsaWJkaXJ9L2d0ay0yLjAvMi4xMC4wL2VuZ2luZXMvLmRlYnVnL2xpYmFkd2FpdGEuc28iCi0KLUZJTEVTX2dub21lLXRoZW1lLWFkd2FpdGEtZGFyayA9ICIke3ByZWZpeH0vc2hhcmUvdGhlbWVzL0Fkd2FpdGEtZGFyayIKLVJERVBFTkRTX2dub21lLXRoZW1lLWFkd2FpdGEtZGFyayA9ICJnbm9tZS10aGVtZS1hZHdhaXRhIgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2dub21lLXRoZW1lcy1zdGFuZGFyZF8zLjIyLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2dub21lLXRoZW1lcy1zdGFuZGFyZF8zLjIyLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTVlZTI3NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvZ25vbWUtdGhlbWVzLXN0YW5kYXJkXzMuMjIuMy5iYgpAQCAtMCwwICsxLDQ2IEBACitTVU1NQVJZID0gIkdUSysyIHN0YW5kYXJkIHRoZW1lcyIKK0hPTUVQQUdFID0gImh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9HTk9NRS9zb3VyY2VzL2dub21lLXRoZW1lcy1zdGFuZGFyZC8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKK1NFQ1RJT04gPSAieDExL2dub21lIgorCitMSUNFTlNFID0gIkxHUEwtMi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IGd0ay1pY29uLWNhY2hlIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKKworQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICIke0dUSzJESVNUUk9GRUFUVVJFU30iCisKK0RFUEVORFMgKz0gImludGx0b29sLW5hdGl2ZSBndGsrIgorCitNQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCitTUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke0JQTn0vJHtNQUpfVkVSfS8ke0JQTn0tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiNTFjMzYyYjE1N2I2NDA3MzAzZDQ0ZjkzYzMxZWUxMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2MWRjODdjNTIyNjFjZmQ1Yjk0ZDY1ZThmZmQ5MjNkZGViNWQzOTQ0NTYyZjg0OTQyZWVlYjE5N2FiOGFiNTZhIgorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWd0azMtZW5naW5lIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAgICAgIyBPbmx5IGJ1aWxkaW5nIEFkd2FpdGEsIHJlbW92ZSBoaWdoY29udHJhc3QgZmlsZXMKKyAgICAgICAgcm0gLXJmICR7RH0ke3ByZWZpeH0vc2hhcmUvdGhlbWVzL0hpZ2hDb250cmFzdCBcCisgICAgICAgICAgICAgICAke0R9JHtwcmVmaXh9L3NoYXJlL2ljb25zCisKKwkjIFRoZSBsaWJ0b29sIGFyY2hpdmUgZmlsZSBpcyB1bm5lZWRlZCB3aXRoIHNoYXJlZCBsaWJzIG9uIG1vZGVybiBMaW51eAorCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2d0ay0yLjAvMi4xMC4wL2VuZ2luZXMvbGliYWR3YWl0YS5sYQorfQorCisjIFRoZXJlIGNvdWxkIGJlIGdub21lLXRoZW1lLWhpZ2hjb250cmFzdCBhcyB3ZWxsIGJ1dCB0aGF0IHJlcXVpcmVzCisjIGd0ayszIGFuZCBpbmNsdWRlcyBsb3RzIG9mIGljb25zIChpcyBhbHNvIGJyb2tlbiB3aXRoIEIgIT0gUykuCitQQUNLQUdFUyArPSAiZ25vbWUtdGhlbWUtYWR3YWl0YSBcCisgICAgICAgICAgICAgZ25vbWUtdGhlbWUtYWR3YWl0YS1kYXJrIFwKKyAgICAgICAgICAgICAiCisKK0ZJTEVTX2dub21lLXRoZW1lLWFkd2FpdGEgPSAiJHtwcmVmaXh9L3NoYXJlL3RoZW1lcy9BZHdhaXRhIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9ndGstMi4wLzIuMTAuMC9lbmdpbmVzL2xpYmFkd2FpdGEuc28iCisKK0ZJTEVTX2dub21lLXRoZW1lLWFkd2FpdGEtZGFyayA9ICIke3ByZWZpeH0vc2hhcmUvdGhlbWVzL0Fkd2FpdGEtZGFyayIKK1JERVBFTkRTX2dub21lLXRoZW1lLWFkd2FpdGEtZGFyayA9ICJnbm9tZS10aGVtZS1hZHdhaXRhIgorCisjIGdub21lLXRoZW1lcy1zdGFuZGFyZCBpcyBlbXB0eSBhbmQgZG9lc24ndCBleGlzdAorUkRFUEVORFNfJHtQTn0tZGV2ID0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbl8xLjUwLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb25fMS41MC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MDlmYzVmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbl8xLjUwLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNzggKzAsMCBAQAotU1VNTUFSWSA9ICJNaWRkbGV3YXJlIGxheWVyIGJldHdlZW4gR09iamVjdC11c2luZyBDIGxpYnJhcmllcyBhbmQgbGFuZ3VhZ2UgYmluZGluZ3MiCi1IT01FUEFHRSA9ICJodHRwczovL3dpa2kuZ25vbWUub3JnL2FjdGlvbi9zaG93L1Byb2plY3RzL0dPYmplY3RJbnRyb3NwZWN0aW9uIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkxHUEx2MisgJiBHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05MGQ1Nzc1MzVhMzg5OGUxYWU1ZGJmMGFlMzUwOWE4YyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90b29scy9jb21waWxlci5jO2VuZGxpbmU9MjA7bWQ1PWZjNTAwN2ZjMjAwMjI3MjBlNmMwYjBjZGRlNDFmYWJkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dpc2Nhbm5lci9zb3VyY2VzY2FubmVyLmM7ZW5kbGluZT0yMjttZDU9MTk0ZDZlMGMxZDAwNjYyZjMyZDAzMGNlNDRkZThkMzkgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2lyZXBvc2l0b3J5L2dpcmVnaXN0ZXJlZHR5cGVpbmZvLmM7ZW5kbGluZT0yMTttZDU9NjYxODQ3NjExYWU2OTc5NDY1NDE1ZjMxYTc1OWJhMjciCi0KLVNSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8xLjUwLyR7QlBOfS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1SZXZlcnQtYW4taW5jb21wbGV0ZS11cHN0cmVhbS1hdHRlbXB0LWF0LWNyb3NzLWNvbXBpLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItY29uZmlndXJlLmFjLWFkZC1ob3N0LWdpLWdpLWNyb3NzLXdyYXBwZXItZ2ktbGRkLXdyYS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLWdpc2Nhbm5lci1hZGQtdXNlLWJpbmFyeS13cmFwcGVyLW9wdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LWdpc2Nhbm5lci1hZGQtYS11c2UtbGRkLXdyYXBwZXItb3B0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDUtUHJlZml4LXBrZy1jb25maWctcGF0aHMtd2l0aC1QS0dfQ09ORklHX1NZU1JPT1RfRElSLS5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI1YWY4ZDcyNGYyNWQwYzljZmJlNmRmNDFiNzdlNWRjMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxYzY1OTdjNjY2ZjU0M2M3MGVmM2Q3Yzg5M2FiMDUyOTY4YWZhZTYyMGVmZGMwODBjMzY2NTdmNDIyNjMzN2M1IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ3RrLWRvYyBweXRob24zbmF0aXZlIHFlbXUgZ29iamVjdC1pbnRyb3NwZWN0aW9uLWRhdGEgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotIyBuZWVkZWQgZm9yIHdyaXRpbmcgb3V0IHRoZSBxZW11IHdyYXBwZXIgc2NyaXB0Ci1leHBvcnQgU1RBR0lOR19ESVJfSE9TVAotZXhwb3J0IEIKLQotREVQRU5EU19hcHBlbmQgPSAiIGxpYmZmaSB6bGliIGdsaWItMi4wIHB5dGhvbjMgZmxleC1uYXRpdmUgYmlzb24tbmF0aXZlIgotCi0jIHRhcmdldCBidWlsZCBuZWVkcyBxZW11IHRvIHJ1biB0ZW1wb3JhcnkgaW50cm9zcGVjdGlvbiBiaW5hcmllcyBjcmVhdGVkCi0jIG9uIHRoZSBmbHkgYnkgZy1pci1zY2FubmVyIGFuZCBhIG5hdGl2ZSB2ZXJzaW9uIG9mIGl0c2VsZiB0byBydW4KLSMgbmF0aXZlIHZlcnNpb25zIG9mIGl0cyBvd24gdG9vbHMgZHVyaW5nIGJ1aWxkLgotIyBBbHNvIHByZWxpbmstcnRsZCBpcyB1c2VkIHRvIGZpbmQgb3V0IGxpYnJhcnkgZGVwZW5kZW5jaWVzIG9mIGludHJvc3BlY3Rpb24gYmluYXJpZXMKLSMgKHN0YW5kYXJkIGxkZCBkb2Vzbid0IHdvcmsgd2hlbiBjcm9zcy1jb21waWxpbmcpLgotREVQRU5EU19jbGFzcy10YXJnZXRfYXBwZW5kID0gIiBnb2JqZWN0LWludHJvc3BlY3Rpb24tbmF0aXZlIHFlbXUtbmF0aXZlIHByZWxpbmstbmF0aXZlIgotCi1TU1RBVEVfU0NBTl9GSUxFUyArPSAiZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyIGctaXItc2Nhbm5lci13cmFwcGVyIGctaXItY29tcGlsZXItd3JhcHBlciBnLWlyLXNjYW5uZXItbGRkd3JhcHBlciBHaW8tMi4wLmdpciBwb3N0aW5zdC1sZHNvY29uZi0ke1BOfSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmRfY2xhc3MtbmF0aXZlKCkgewotICAgICAgICAjIFR3ZWFrIHRoZSBuYXRpdmUgcHl0aG9uIHNjcmlwdHMgc28gdGhhdCB0aGV5IGRvbid0IHJlZmVyIHRvIHRoZQotICAgICAgICAjIGZ1bGwgcGF0aCBvZiBuYXRpdmUgcHl0aG9uIGJpbmFyeSAodGhlIHNvbHV0aW9uIGlzIHRha2VuIGZyb20gZ2xpYi0yLjAgcmVjaXBlKQotICAgICAgICAjIFRoaXMgcmVtb3ZlcyB0aGUgcmlzayBvZiBleGNlZWRpbmcgTGludXgga2VybmVsJ3Mgc2hlYmFuZyBsaW5lIGxpbWl0ICgxMjggYnl0ZXMpCi0gICAgICAgIHNlZCAtaSAtZSAnMXMsIyEuKiwjISR7VVNSQklOUEFUSH0vZW52IHB5dGhvbjMsJyAke1N9L3Rvb2xzL2ctaXItdG9vbC10ZW1wbGF0ZS5pbgotfQotCi1kb19jb25maWd1cmVfcHJlcGVuZF9jbGFzcy10YXJnZXQoKSB7Ci0gICAgICAgICMgV3JpdGUgb3V0IGEgcWVtdSB3cmFwcGVyIHRoYXQgd2lsbCBiZSBnaXZlbiB0byBnaS1zY2FubmVyIHNvIHRoYXQgaXQKLSAgICAgICAgIyBjYW4gcnVuIHRhcmdldCBoZWxwZXIgYmluYXJpZXMgdGhyb3VnaCB0aGF0LgotICAgICAgICBxZW11X2JpbmFyeT0iJHtAcWVtdV93cmFwcGVyX2NtZGxpbmUoZCwgJyRTVEFHSU5HX0RJUl9IT1NUJywgWydcJEdJUl9FWFRSQV9MSUJTX1BBVEgnLCcubGlicycsJyRTVEFHSU5HX0RJUl9IT1NULyR7bGliZGlyfScsJyRTVEFHSU5HX0RJUl9IT1NULyR7YmFzZV9saWJkaXJ9J10pfSIKLSAgICAgICAgY2F0ID4gJHtCfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgPDwgRU9GCi0jIS9iaW4vc2gKLSMgVXNlIGEgbW9kdWxlcyBkaXJlY3Rvcnkgd2hpY2ggZG9lc24ndCBleGlzdCBzbyB3ZSBkb24ndCBsb2FkIHJhbmRvbSB0aGluZ3MKLSMgd2hpY2ggbWF5IHRoZW4gZ2V0IGRlbGV0ZWQgKG9yIHRoZWlyIGRlcGVuZGVuY2llcykgYW5kIHBvdGVudGlhbGx5IHNlZ2ZhdWx0Ci1leHBvcnQgR0lPX01PRFVMRV9ESVI9JHtTVEFHSU5HX0xJQkRJUn0vZ2lvL21vZHVsZXMtZHVtbXkKLQotJHFlbXVfYmluYXJ5ICJcJEAiCi1pZiBbIFwkPyAtbmUgMCBdOyB0aGVuCi0gICAgZWNobyAiSWYgdGhlIGFib3ZlIGVycm9yIG1lc3NhZ2UgaXMgYWJvdXQgbWlzc2luZyAuc28gbGlicmFyaWVzLCB0aGVuIHNldHRpbmcgdXAgR0lSX0VYVFJBX0xJQlNfUEFUSCBpbiB0aGUgcmVjaXBlIHNob3VsZCBoZWxwLiIKLSAgICBlY2hvICIodHlwaWNhbGx5IGxpa2UgdGhpczogR0lSX0VYVFJBX0xJQlNfUEFUSD1cIiQiIntCfS9zb21ldGhpbmcvLmxpYnNcIiApIgotICAgIGV4aXQgMQotZmkKLUVPRgotICAgICAgICBjaG1vZCAreCAke0J9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlcgotCi0gICAgICAgICMgV3JpdGUgb3V0IGEgd3JhcHBlciBmb3IgZy1pci1zY2FubmVyIGl0c2VsZiwgd2hpY2ggd2lsbCBiZSB1c2VkIHdoZW4gYnVpbGRpbmcgaW50cm9zcGVjdGlvbiBmaWxlcwotICAgICAgICAjIGZvciBnbGliLWJhc2VkIHBhY2thZ2VzLiBUaGlzIHdyYXBwZXIgY2FsbHMgdGhlIG5hdGl2ZSB2ZXJzaW9uIG9mIHRoZSBzY2FubmVyLCBhbmQgdGVsbHMgaXQgdG8gdXNlCi0gICAgICAgICMgYSBxZW11IHdyYXBwZXIgZm9yIHJ1bm5pbmcgdHJhbnNpZW50IHRhcmdldCBiaW5hcmllcyBwcm9kdWNlZCBieSB0aGUgc2Nhbm5lciwgYW5kIGFuIGluY2x1ZGUgZGlyZWN0b3J5IAotICAgICAgICAjIGZyb20gdGhlIHRhcmdldCBzeXNyb290LgotICAgICAgICBjYXQgPiAke0J9L2ctaXItc2Nhbm5lci13cmFwcGVyIDw8IEVPRgotIyEvYmluL3NoCi0jIFRoaXMgcHJldmVudHMgZy1pci1zY2FubmVyIGZyb20gd3JpdGluZyBjYWNoZSBkYXRhIHRvICRIT01FCi1leHBvcnQgR0lfU0NBTk5FUl9ESVNBQkxFX0NBQ0hFPTEKLQotZy1pci1zY2FubmVyIC0tdXNlLWJpbmFyeS13cmFwcGVyPSR7U1RBR0lOR19CSU5ESVJ9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlciAtLXVzZS1sZGQtd3JhcHBlcj0ke1NUQUdJTkdfQklORElSfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlciAtLWFkZC1pbmNsdWRlLXBhdGg9JHtTVEFHSU5HX0RBVEFESVJ9L2dpci0xLjAgIlwkQCIKLUVPRgotICAgICAgICBjaG1vZCAreCAke0J9L2ctaXItc2Nhbm5lci13cmFwcGVyCi0KLSAgICAgICAgIyBXcml0ZSBvdXQgYSB3cmFwcGVyIGZvciBnLWlyLWNvbXBpbGVyLCB3aGljaCBydW5zIHRoZSB0YXJnZXQgdmVyc2lvbiBvZiBpdCB0aHJvdWdoIHFlbXUuCi0gICAgICAgICMgZy1pci1jb21waWxlciB3cml0ZXMgb3V0IHRoZSByYXcgY29udGVudCBvZiBhIEMgc3RydWN0IHRvIGRpc2ssIGFuZCB0aGVyZWZvcmUgaXMgYXJjaGl0ZWN0dXJlIGRlcGVuZGVudC4KLSAgICAgICAgY2F0ID4gJHtCfS9nLWlyLWNvbXBpbGVyLXdyYXBwZXIgPDwgRU9GCi0jIS9iaW4vc2gKLSR7U1RBR0lOR19CSU5ESVJ9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlciAke1NUQUdJTkdfQklORElSfS9nLWlyLWNvbXBpbGVyICJcJEAiCi1FT0YKLSAgICAgICAgY2htb2QgK3ggJHtCfS9nLWlyLWNvbXBpbGVyLXdyYXBwZXIKLQotICAgICAgICAjIFdyaXRlIG91dCBhIHdyYXBwZXIgdG8gdXNlIGluc3RlYWQgb2YgbGRkLCB3aGljaCBkb2VzIG5vdCB3b3JrIHdoZW4gYSBiaW5hcnkgaXMgYnVpbHQKLSAgICAgICAgIyBmb3IgYSBkaWZmZXJlbnQgYXJjaGl0ZWN0dXJlCi0gICAgICAgIGNhdCA+ICR7Qn0vZy1pci1zY2FubmVyLWxkZHdyYXBwZXIgPDwgRU9GCi0jIS9iaW4vc2gKLXByZWxpbmstcnRsZCAtLXJvb3Q9JFNUQUdJTkdfRElSX0hPU1QgIlwkQCIKLUVPRgotICAgICAgICBjaG1vZCAreCAke0J9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyCi0KLSAgICAgICAgIyBBbHNvIHR3ZWFrIHRoZSB0YXJnZXQgcHl0aG9uIHNjcmlwdHMgc28gdGhhdCB0aGV5IGRvbid0IHJlZmVyIHRvIHRoZQotICAgICAgICAjIG5hdGl2ZSB2ZXJzaW9uIG9mIHB5dGhvbiBiaW5hcnkgKHRoZSBzb2x1dGlvbiBpcyB0YWtlbiBmcm9tIGdsaWItMi4wIHJlY2lwZSkKLSAgICAgICAgc2VkIC1pIC1lICcxcywjIS4qLCMhJHtVU1JCSU5QQVRIfS9lbnYgcHl0aG9uMywnICR7U30vdG9vbHMvZy1pci10b29sLXRlbXBsYXRlLmluCi19Ci0KLSMgQ29uZmlndXJlIHRhcmdldCBidWlsZCB0byB1c2UgbmF0aXZlIHRvb2xzIG9mIGl0c2VsZiBhbmQgdG8gdXNlIGEgcWVtdSB3cmFwcGVyCi0jIGFuZCBvcHRpb25hbGx5IHRvIGdlbmVyYXRlIGludHJvc3BlY3Rpb24gZGF0YQotRVhUUkFfT0VDT05GX2NsYXNzLXRhcmdldCArPSAiLS1lbmFibGUtaG9zdC1naSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWVuYWJsZS1naS1jcm9zcy13cmFwcGVyPSR7Qn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZW5hYmxlLWdpLWxkZC13cmFwcGVyPSR7Qn0vZy1pci1zY2FubmVyLWxkZHdyYXBwZXIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0dJX0RBVEFfRU5BQkxFRCcsICdUcnVlJywgJy0tZW5hYmxlLWludHJvc3BlY3Rpb24tZGF0YScsICctLWRpc2FibGUtaW50cm9zcGVjdGlvbi1kYXRhJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgotCi1QQUNLQUdFQ09ORklHID89ICIiCi1QQUNLQUdFQ09ORklHW2RvY3Rvb2xdID0gIi0tZW5hYmxlLWRvY3Rvb2wsLS1kaXNhYmxlLWRvY3Rvb2wscHl0aG9uMy1tYWtvLCIKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgICAgICAjIFRoaXMgcHJldmVudHMgZy1pci1zY2FubmVyIGZyb20gd3JpdGluZyBjYWNoZSBkYXRhIHRvICRIT01FCi0gICAgICAgIGV4cG9ydCBHSV9TQ0FOTkVSX0RJU0FCTEVfQ0FDSEU9MQotCi0gICAgICAgICMgTmVlZGVkIHRvIHJ1biBnLWlyIHVuaXQgdGVzdHMsIHdoaWNoIHdvbid0IGJlIGFibGUgdG8gZmluZCB0aGUgYnVpbHQgbGlicmFyaWVzIG90aGVyd2lzZQotICAgICAgICBleHBvcnQgR0lSX0VYVFJBX0xJQlNfUEFUSD0kQi8ubGlicwotfQotCi0jIE91ciB3cmFwcGVycyBuZWVkIHRvIGJlIGF2YWlsYWJsZSBzeXN0ZW0td2lkZSwgYmVjYXVzZSB0aGV5IHdpbGwgYmUgdXNlZCAKLSMgdG8gYnVpbGQgaW50cm9zcGVjdGlvbiBmaWxlcyBmb3IgYWxsIG90aGVyIGdvYmplY3QtYmFzZWQgcGFja2FnZXMKLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9LwotICAgICAgICBpbnN0YWxsICR7Qn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyICR7RH0ke2JpbmRpcn0vCi0gICAgICAgIGluc3RhbGwgJHtCfS9nLWlyLXNjYW5uZXItd3JhcHBlciAke0R9JHtiaW5kaXJ9LwotICAgICAgICBpbnN0YWxsICR7Qn0vZy1pci1jb21waWxlci13cmFwcGVyICR7RH0ke2JpbmRpcn0vCi0gICAgICAgIGluc3RhbGwgJHtCfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlciAke0R9JHtiaW5kaXJ9LwotfQotCi0jIC50eXBlbGliIGZpbGVzIGFyZSBuZWVkZWQgYXQgcnVudGltZSBhbmQgc28gdGhleSBnbyB0byB0aGUgbWFpbiBwYWNrYWdlCi1GSUxFU18ke1BOfV9hcHBlbmQgPSAiICR7bGliZGlyfS9naXJlcG9zaXRvcnktKi8qLnR5cGVsaWIiCi0KLSMgLmdpciBmaWxlcyBnbyB0byBkZXYgcGFja2FnZSwgYXMgdGhleSdyZSBuZWVkZWQgZm9yIGRldmVsb3BpbmcgKGJ1dCBub3QgZm9yIHJ1bm5pbmcpCi0jIHRoaW5ncyB0aGF0IGRlcGVuZHMgb24gaW50cm9zcGVjdGlvbi4KLUZJTEVTXyR7UE59LWRldl9hcHBlbmQgPSAiICR7ZGF0YWRpcn0vZ2lyLSovKi5naXIiCi0KLSMgVGhlc2UgYXJlIHVzZWQgYnkgZ29iamVjdC1iYXNlZCBwYWNrYWdlcwotIyB0byBnZW5lcmF0ZSB0cmFuc2llbnQgaW50cm9zcGVjdGlvbiBiaW5hcmllcwotRklMRVNfJHtQTn0tZGV2X2FwcGVuZCA9ICIgJHtkYXRhZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wL2dkdW1wLmMgXAotICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wL01ha2VmaWxlLmludHJvc3BlY3Rpb24iCi0KLSMgVGhlc2UgYXJlIHVzZWQgYnkgZGVwZW5kZW50IHBhY2thZ2VzIChlLmcuIHB5Z29iamVjdCkgdG8gYnVpbGQgdGhlaXIKLSMgdGVzdHN1aXRlcy4KLUZJTEVTXyR7UE59LWRldl9hcHBlbmQgPSAiICR7ZGF0YWRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC90ZXN0cy8qLmMgXAotICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC90ZXN0cy8qLmgiCi0KLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi9naXNjYW5uZXIvLmRlYnVnLyIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi9naXNjYW5uZXIvKi5hIgotCi0jIHdlIG5lZWQgdGFyZ2V0IHZlcnNpb25zIG9mIGludHJvc3BlY3Rpb24gdG9vbHMgaW4gc3lzcm9vdCBzbyB0aGF0IHRoZXkgY2FuIGJlIHJ1biB2aWEgcWVtdQotIyB3aGVuIGJ1aWxkaW5nIGludHJvc3BlY3Rpb24gZmlsZXMgaW4gb3RoZXIgcGFja2FnZXMKLVNZU1JPT1RfRElSU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke2JpbmRpcn0iCi0KLVNZU1JPT1RfUFJFUFJPQ0VTU19GVU5DU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBnaV9iaW5hcmllc19zeXNyb290X3ByZXByb2Nlc3MiCi1naV9iaW5hcmllc19zeXNyb290X3ByZXByb2Nlc3MoKSB7Ci0gICAgICAgICMgVHdlYWsgdGhlIGJpbmFyeSBuYW1lcyBpbiB0aGUgaW50cm9zcGVjdGlvbiBwa2djb25maWcgZmlsZSwgc28gdGhhdCBpdAotICAgICAgICAjIHBpY2tzIHVwIG91ciB3cmFwcGVycyB3aGljaCBkbyB0aGUgY3Jvc3MtY29tcGlsZSBhbmQgcWVtdSBtYWdpYy4KLSAgICAgICAgc2VkIC1pIFwKLSAgICAgICAgICAgLWUgInN8Z19pcl9zY2FubmVyPS4qfGdfaXJfc2Nhbm5lcj0ke2JpbmRpcn0vZy1pci1zY2FubmVyLXdyYXBwZXJ8IiBcCi0gICAgICAgICAgIC1lICJzfGdfaXJfY29tcGlsZXI9Lip8Z19pcl9jb21waWxlcj0ke2JpbmRpcn0vZy1pci1jb21waWxlci13cmFwcGVyfCIgXAotICAgICAgICAgICAke1NZU1JPT1RfREVTVERJUn0ke2xpYmRpcn0vcGtnY29uZmlnL2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAucGMKLX0KLQotIyBOZWVkIHRvIGVuc3VyZSBsZC5zby5jb25mIGV4aXN0cyBzbyBwcmVsaW5rLW5hdGl2ZSB3b3JrcwotIyBib3RoIGJlZm9yZSB3ZSBidWlsZCBhbmQgaWYgd2UgaW5zdGFsbCBmcm9tIHNzdGF0ZQotZG9fY29uZmlndXJlW3ByZWZ1bmNzXSArPSAiZ29iamVjdF9pbnRyb3NwZWN0aW9uX3ByZWNvbmZpZ3VyZSIKLXB5dGhvbiBnb2JqZWN0X2ludHJvc3BlY3Rpb25fcHJlY29uZmlndXJlICgpIHsKLSAgICBvZS51dGlscy53cml0ZV9sZF9zb19jb25mKGQpCi19Ci0KLVNZU1JPT1RfUFJFUFJPQ0VTU19GVU5DU19hcHBlbmQgPSAiIGdpX2xkc29jb25mX3N5c3Jvb3RfcHJlcHJvY2VzcyIKLWdpX2xkc29jb25mX3N5c3Jvb3RfcHJlcHJvY2VzcyAoKSB7Ci0JbWtkaXIgLXAgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJ9Ci0JZGVzdD0ke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcn0vcG9zdGluc3QtbGRzb2NvbmYtJHtQTn0KLQllY2hvICIjIS9iaW4vc2giID4gJGRlc3QKLQllY2hvICJta2RpciAtcCAke1NUQUdJTkdfRElSX1RBUkdFVH0ke3N5c2NvbmZkaXJ9IiA+PiAkZGVzdAotCWVjaG8gImVjaG8gJHtiYXNlX2xpYmRpcn0gPj4gJHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtzeXNjb25mZGlyfS9sZC5zby5jb25mIiA+PiAkZGVzdAotCWVjaG8gImVjaG8gJHtsaWJkaXJ9ID4+ICR7U1RBR0lOR19ESVJfVEFSR0VUfSR7c3lzY29uZmRpcn0vbGQuc28uY29uZiIgPj4gJGRlc3QKLQljaG1vZCA3NTUgJGRlc3QKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbl8xLjUyLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb25fMS41Mi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmZTcxYTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb25fMS41Mi4xLmJiCkBAIC0wLDAgKzEsMTg4IEBACitTVU1NQVJZID0gIk1pZGRsZXdhcmUgbGF5ZXIgYmV0d2VlbiBHT2JqZWN0LXVzaW5nIEMgbGlicmFyaWVzIGFuZCBsYW5ndWFnZSBiaW5kaW5ncyIKK0hPTUVQQUdFID0gImh0dHBzOi8vd2lraS5nbm9tZS5vcmcvYWN0aW9uL3Nob3cvUHJvamVjdHMvR09iamVjdEludHJvc3BlY3Rpb24iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTEdQTHYyKyAmIEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTkwZDU3NzUzNWEzODk4ZTFhZTVkYmYwYWUzNTA5YThjIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Rvb2xzL2NvbXBpbGVyLmM7ZW5kbGluZT0yMDttZDU9ZmM1MDA3ZmMyMDAyMjcyMGU2YzBiMGNkZGU0MWZhYmQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2lzY2FubmVyL3NvdXJjZXNjYW5uZXIuYztlbmRsaW5lPTIyO21kNT0xOTRkNmUwYzFkMDA2NjJmMzJkMDMwY2U0NGRlOGQzOSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9naXJlcG9zaXRvcnkvZ2lyZWdpc3RlcmVkdHlwZWluZm8uYztlbmRsaW5lPTIxO21kNT02NjE4NDc2MTFhZTY5Nzk0NjU0MTVmMzFhNzU5YmEyNyIKKworU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LzEuNTIvJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJldmVydC1hbi1pbmNvbXBsZXRlLXVwc3RyZWFtLWF0dGVtcHQtYXQtY3Jvc3MtY29tcGkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1jb25maWd1cmUuYWMtYWRkLWhvc3QtZ2ktZ2ktY3Jvc3Mtd3JhcHBlci1naS1sZGQtd3JhLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtZ2lzY2FubmVyLWFkZC11c2UtYmluYXJ5LXdyYXBwZXItb3B0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtZ2lzY2FubmVyLWFkZC1hLXVzZS1sZGQtd3JhcHBlci1vcHRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1QcmVmaXgtcGtnLWNvbmZpZy1wYXRocy13aXRoLVBLR19DT05GSUdfU1lTUk9PVF9ESVItLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjM0MTU3MDczOTkxZjllZWIwZWQ5NTMzNTFiNjVlYjYxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJlZDBjMzhkNTJmZTFhYTZmYzRkZWYwYzg2OGZlNDgxY2I4N2I1MzJmYzY5NDc1NmIyNmQ2Y2ZhYjI5ZmFmZjQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBndGstZG9jIHB5dGhvbjNuYXRpdmUgcWVtdSBnb2JqZWN0LWludHJvc3BlY3Rpb24tZGF0YSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCisjIG5lZWRlZCBmb3Igd3JpdGluZyBvdXQgdGhlIHFlbXUgd3JhcHBlciBzY3JpcHQKK2V4cG9ydCBTVEFHSU5HX0RJUl9IT1NUCitleHBvcnQgQgorCitERVBFTkRTX2FwcGVuZCA9ICIgbGliZmZpIHpsaWIgZ2xpYi0yLjAgcHl0aG9uMyBmbGV4LW5hdGl2ZSBiaXNvbi1uYXRpdmUiCisKKyMgdGFyZ2V0IGJ1aWxkIG5lZWRzIHFlbXUgdG8gcnVuIHRlbXBvcmFyeSBpbnRyb3NwZWN0aW9uIGJpbmFyaWVzIGNyZWF0ZWQKKyMgb24gdGhlIGZseSBieSBnLWlyLXNjYW5uZXIgYW5kIGEgbmF0aXZlIHZlcnNpb24gb2YgaXRzZWxmIHRvIHJ1bgorIyBuYXRpdmUgdmVyc2lvbnMgb2YgaXRzIG93biB0b29scyBkdXJpbmcgYnVpbGQuCisjIEFsc28gcHJlbGluay1ydGxkIGlzIHVzZWQgdG8gZmluZCBvdXQgbGlicmFyeSBkZXBlbmRlbmNpZXMgb2YgaW50cm9zcGVjdGlvbiBiaW5hcmllcworIyAoc3RhbmRhcmQgbGRkIGRvZXNuJ3Qgd29yayB3aGVuIGNyb3NzLWNvbXBpbGluZykuCitERVBFTkRTX2NsYXNzLXRhcmdldF9hcHBlbmQgPSAiIGdvYmplY3QtaW50cm9zcGVjdGlvbi1uYXRpdmUgcWVtdS1uYXRpdmUgcHJlbGluay1uYXRpdmUiCisKK1NTVEFURV9TQ0FOX0ZJTEVTICs9ICJnLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgZy1pci1zY2FubmVyLXdyYXBwZXIgZy1pci1jb21waWxlci13cmFwcGVyIGctaXItc2Nhbm5lci1sZGR3cmFwcGVyIEdpby0yLjAuZ2lyIHBvc3RpbnN0LWxkc29jb25mLSR7UE59IgorCitkb19jb25maWd1cmVfcHJlcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisgICAgICAgICMgVHdlYWsgdGhlIG5hdGl2ZSBweXRob24gc2NyaXB0cyBzbyB0aGF0IHRoZXkgZG9uJ3QgcmVmZXIgdG8gdGhlCisgICAgICAgICMgZnVsbCBwYXRoIG9mIG5hdGl2ZSBweXRob24gYmluYXJ5ICh0aGUgc29sdXRpb24gaXMgdGFrZW4gZnJvbSBnbGliLTIuMCByZWNpcGUpCisgICAgICAgICMgVGhpcyByZW1vdmVzIHRoZSByaXNrIG9mIGV4Y2VlZGluZyBMaW51eCBrZXJuZWwncyBzaGViYW5nIGxpbmUgbGltaXQgKDEyOCBieXRlcykKKyAgICAgICAgc2VkIC1pIC1lICcxcywjIS4qLCMhJHtVU1JCSU5QQVRIfS9lbnYgcHl0aG9uMywnICR7U30vdG9vbHMvZy1pci10b29sLXRlbXBsYXRlLmluCit9CisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kX2NsYXNzLXRhcmdldCgpIHsKKyAgICAgICAgIyBXcml0ZSBvdXQgYSBxZW11IHdyYXBwZXIgdGhhdCB3aWxsIGJlIGdpdmVuIHRvIGdpLXNjYW5uZXIgc28gdGhhdCBpdAorICAgICAgICAjIGNhbiBydW4gdGFyZ2V0IGhlbHBlciBiaW5hcmllcyB0aHJvdWdoIHRoYXQuCisgICAgICAgIHFlbXVfYmluYXJ5PSIke0BxZW11X3dyYXBwZXJfY21kbGluZShkLCAnJFNUQUdJTkdfRElSX0hPU1QnLCBbJ1wkR0lSX0VYVFJBX0xJQlNfUEFUSCcsJy5saWJzJywnJFNUQUdJTkdfRElSX0hPU1QvJHtsaWJkaXJ9JywnJFNUQUdJTkdfRElSX0hPU1QvJHtiYXNlX2xpYmRpcn0nXSl9IgorICAgICAgICBjYXQgPiAke0J9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlciA8PCBFT0YKKyMhL2Jpbi9zaAorIyBVc2UgYSBtb2R1bGVzIGRpcmVjdG9yeSB3aGljaCBkb2Vzbid0IGV4aXN0IHNvIHdlIGRvbid0IGxvYWQgcmFuZG9tIHRoaW5ncworIyB3aGljaCBtYXkgdGhlbiBnZXQgZGVsZXRlZCAob3IgdGhlaXIgZGVwZW5kZW5jaWVzKSBhbmQgcG90ZW50aWFsbHkgc2VnZmF1bHQKK2V4cG9ydCBHSU9fTU9EVUxFX0RJUj0ke1NUQUdJTkdfTElCRElSfS9naW8vbW9kdWxlcy1kdW1teQorCiskcWVtdV9iaW5hcnkgIlwkQCIKK2lmIFsgXCQ/IC1uZSAwIF07IHRoZW4KKyAgICBlY2hvICJJZiB0aGUgYWJvdmUgZXJyb3IgbWVzc2FnZSBpcyBhYm91dCBtaXNzaW5nIC5zbyBsaWJyYXJpZXMsIHRoZW4gc2V0dGluZyB1cCBHSVJfRVhUUkFfTElCU19QQVRIIGluIHRoZSByZWNpcGUgc2hvdWxkIGhlbHAuIgorICAgIGVjaG8gIih0eXBpY2FsbHkgbGlrZSB0aGlzOiBHSVJfRVhUUkFfTElCU19QQVRIPVwiJCIie0J9L3NvbWV0aGluZy8ubGlic1wiICkiCisgICAgZXhpdCAxCitmaQorRU9GCisgICAgICAgIGNobW9kICt4ICR7Qn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyCisKKyAgICAgICAgIyBXcml0ZSBvdXQgYSB3cmFwcGVyIGZvciBnLWlyLXNjYW5uZXIgaXRzZWxmLCB3aGljaCB3aWxsIGJlIHVzZWQgd2hlbiBidWlsZGluZyBpbnRyb3NwZWN0aW9uIGZpbGVzCisgICAgICAgICMgZm9yIGdsaWItYmFzZWQgcGFja2FnZXMuIFRoaXMgd3JhcHBlciBjYWxscyB0aGUgbmF0aXZlIHZlcnNpb24gb2YgdGhlIHNjYW5uZXIsIGFuZCB0ZWxscyBpdCB0byB1c2UKKyAgICAgICAgIyBhIHFlbXUgd3JhcHBlciBmb3IgcnVubmluZyB0cmFuc2llbnQgdGFyZ2V0IGJpbmFyaWVzIHByb2R1Y2VkIGJ5IHRoZSBzY2FubmVyLCBhbmQgYW4gaW5jbHVkZSBkaXJlY3RvcnkgCisgICAgICAgICMgZnJvbSB0aGUgdGFyZ2V0IHN5c3Jvb3QuCisgICAgICAgIGNhdCA+ICR7Qn0vZy1pci1zY2FubmVyLXdyYXBwZXIgPDwgRU9GCisjIS9iaW4vc2gKKyMgVGhpcyBwcmV2ZW50cyBnLWlyLXNjYW5uZXIgZnJvbSB3cml0aW5nIGNhY2hlIGRhdGEgdG8gJEhPTUUKK2V4cG9ydCBHSV9TQ0FOTkVSX0RJU0FCTEVfQ0FDSEU9MQorCitnLWlyLXNjYW5uZXIgLS11c2UtYmluYXJ5LXdyYXBwZXI9JHtTVEFHSU5HX0JJTkRJUn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyIC0tdXNlLWxkZC13cmFwcGVyPSR7U1RBR0lOR19CSU5ESVJ9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyIC0tYWRkLWluY2x1ZGUtcGF0aD0ke1NUQUdJTkdfREFUQURJUn0vZ2lyLTEuMCAiXCRAIgorRU9GCisgICAgICAgIGNobW9kICt4ICR7Qn0vZy1pci1zY2FubmVyLXdyYXBwZXIKKworICAgICAgICAjIFdyaXRlIG91dCBhIHdyYXBwZXIgZm9yIGctaXItY29tcGlsZXIsIHdoaWNoIHJ1bnMgdGhlIHRhcmdldCB2ZXJzaW9uIG9mIGl0IHRocm91Z2ggcWVtdS4KKyAgICAgICAgIyBnLWlyLWNvbXBpbGVyIHdyaXRlcyBvdXQgdGhlIHJhdyBjb250ZW50IG9mIGEgQyBzdHJ1Y3QgdG8gZGlzaywgYW5kIHRoZXJlZm9yZSBpcyBhcmNoaXRlY3R1cmUgZGVwZW5kZW50LgorICAgICAgICBjYXQgPiAke0J9L2ctaXItY29tcGlsZXItd3JhcHBlciA8PCBFT0YKKyMhL2Jpbi9zaAorJHtTVEFHSU5HX0JJTkRJUn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyICR7U1RBR0lOR19CSU5ESVJ9L2ctaXItY29tcGlsZXIgIlwkQCIKK0VPRgorICAgICAgICBjaG1vZCAreCAke0J9L2ctaXItY29tcGlsZXItd3JhcHBlcgorCisgICAgICAgICMgV3JpdGUgb3V0IGEgd3JhcHBlciB0byB1c2UgaW5zdGVhZCBvZiBsZGQsIHdoaWNoIGRvZXMgbm90IHdvcmsgd2hlbiBhIGJpbmFyeSBpcyBidWlsdAorICAgICAgICAjIGZvciBhIGRpZmZlcmVudCBhcmNoaXRlY3R1cmUKKyAgICAgICAgY2F0ID4gJHtCfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlciA8PCBFT0YKKyMhL2Jpbi9zaAorcHJlbGluay1ydGxkIC0tcm9vdD0kU1RBR0lOR19ESVJfSE9TVCAiXCRAIgorRU9GCisgICAgICAgIGNobW9kICt4ICR7Qn0vZy1pci1zY2FubmVyLWxkZHdyYXBwZXIKKworICAgICAgICAjIEFsc28gdHdlYWsgdGhlIHRhcmdldCBweXRob24gc2NyaXB0cyBzbyB0aGF0IHRoZXkgZG9uJ3QgcmVmZXIgdG8gdGhlCisgICAgICAgICMgbmF0aXZlIHZlcnNpb24gb2YgcHl0aG9uIGJpbmFyeSAodGhlIHNvbHV0aW9uIGlzIHRha2VuIGZyb20gZ2xpYi0yLjAgcmVjaXBlKQorICAgICAgICBzZWQgLWkgLWUgJzFzLCMhLiosIyEke1VTUkJJTlBBVEh9L2VudiBweXRob24zLCcgJHtTfS90b29scy9nLWlyLXRvb2wtdGVtcGxhdGUuaW4KK30KKworIyBDb25maWd1cmUgdGFyZ2V0IGJ1aWxkIHRvIHVzZSBuYXRpdmUgdG9vbHMgb2YgaXRzZWxmIGFuZCB0byB1c2UgYSBxZW11IHdyYXBwZXIKKyMgYW5kIG9wdGlvbmFsbHkgdG8gZ2VuZXJhdGUgaW50cm9zcGVjdGlvbiBkYXRhCitFWFRSQV9PRUNPTkZfY2xhc3MtdGFyZ2V0ICs9ICItLWVuYWJsZS1ob3N0LWdpIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1zdGF0aWMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1lbmFibGUtZ2ktY3Jvc3Mtd3JhcHBlcj0ke0J9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlciBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWVuYWJsZS1naS1sZGQtd3JhcHBlcj0ke0J9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHSV9EQVRBX0VOQUJMRUQnLCAnVHJ1ZScsICctLWVuYWJsZS1pbnRyb3NwZWN0aW9uLWRhdGEnLCAnLS1kaXNhYmxlLWludHJvc3BlY3Rpb24tZGF0YScsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKKworUEFDS0FHRUNPTkZJRyA/PSAiIgorUEFDS0FHRUNPTkZJR1tkb2N0b29sXSA9ICItLWVuYWJsZS1kb2N0b29sLC0tZGlzYWJsZS1kb2N0b29sLHB5dGhvbjMtbWFrbywiCisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICAgICAgIyBUaGlzIHByZXZlbnRzIGctaXItc2Nhbm5lciBmcm9tIHdyaXRpbmcgY2FjaGUgZGF0YSB0byAkSE9NRQorICAgICAgICBleHBvcnQgR0lfU0NBTk5FUl9ESVNBQkxFX0NBQ0hFPTEKKworICAgICAgICAjIE5lZWRlZCB0byBydW4gZy1pciB1bml0IHRlc3RzLCB3aGljaCB3b24ndCBiZSBhYmxlIHRvIGZpbmQgdGhlIGJ1aWx0IGxpYnJhcmllcyBvdGhlcndpc2UKKyAgICAgICAgZXhwb3J0IEdJUl9FWFRSQV9MSUJTX1BBVEg9JEIvLmxpYnMKK30KKworIyBPdXIgd3JhcHBlcnMgbmVlZCB0byBiZSBhdmFpbGFibGUgc3lzdGVtLXdpZGUsIGJlY2F1c2UgdGhleSB3aWxsIGJlIHVzZWQgCisjIHRvIGJ1aWxkIGludHJvc3BlY3Rpb24gZmlsZXMgZm9yIGFsbCBvdGhlciBnb2JqZWN0LWJhc2VkIHBhY2thZ2VzCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7CisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfS8KKyAgICAgICAgaW5zdGFsbCAke0J9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlciAke0R9JHtiaW5kaXJ9LworICAgICAgICBpbnN0YWxsICR7Qn0vZy1pci1zY2FubmVyLXdyYXBwZXIgJHtEfSR7YmluZGlyfS8KKyAgICAgICAgaW5zdGFsbCAke0J9L2ctaXItY29tcGlsZXItd3JhcHBlciAke0R9JHtiaW5kaXJ9LworICAgICAgICBpbnN0YWxsICR7Qn0vZy1pci1zY2FubmVyLWxkZHdyYXBwZXIgJHtEfSR7YmluZGlyfS8KK30KKworIyAudHlwZWxpYiBmaWxlcyBhcmUgbmVlZGVkIGF0IHJ1bnRpbWUgYW5kIHNvIHRoZXkgZ28gdG8gdGhlIG1haW4gcGFja2FnZQorRklMRVNfJHtQTn1fYXBwZW5kID0gIiAke2xpYmRpcn0vZ2lyZXBvc2l0b3J5LSovKi50eXBlbGliIgorCisjIC5naXIgZmlsZXMgZ28gdG8gZGV2IHBhY2thZ2UsIGFzIHRoZXkncmUgbmVlZGVkIGZvciBkZXZlbG9waW5nIChidXQgbm90IGZvciBydW5uaW5nKQorIyB0aGluZ3MgdGhhdCBkZXBlbmRzIG9uIGludHJvc3BlY3Rpb24uCitGSUxFU18ke1BOfS1kZXZfYXBwZW5kID0gIiAke2RhdGFkaXJ9L2dpci0qLyouZ2lyIgorCisjIFRoZXNlIGFyZSB1c2VkIGJ5IGdvYmplY3QtYmFzZWQgcGFja2FnZXMKKyMgdG8gZ2VuZXJhdGUgdHJhbnNpZW50IGludHJvc3BlY3Rpb24gYmluYXJpZXMKK0ZJTEVTXyR7UE59LWRldl9hcHBlbmQgPSAiICR7ZGF0YWRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC9nZHVtcC5jIFwKKyAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC9NYWtlZmlsZS5pbnRyb3NwZWN0aW9uIgorCisjIFRoZXNlIGFyZSB1c2VkIGJ5IGRlcGVuZGVudCBwYWNrYWdlcyAoZS5nLiBweWdvYmplY3QpIHRvIGJ1aWxkIHRoZWlyCisjIHRlc3RzdWl0ZXMuCitGSUxFU18ke1BOfS1kZXZfYXBwZW5kID0gIiAke2RhdGFkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAvdGVzdHMvKi5jIFwKKyAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAvdGVzdHMvKi5oIgorCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ2lzY2FubmVyLy5kZWJ1Zy8iCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ2lzY2FubmVyLyouYSIKKworIyB3ZSBuZWVkIHRhcmdldCB2ZXJzaW9ucyBvZiBpbnRyb3NwZWN0aW9uIHRvb2xzIGluIHN5c3Jvb3Qgc28gdGhhdCB0aGV5IGNhbiBiZSBydW4gdmlhIHFlbXUKKyMgd2hlbiBidWlsZGluZyBpbnRyb3NwZWN0aW9uIGZpbGVzIGluIG90aGVyIHBhY2thZ2VzCitTWVNST09UX0RJUlNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtiaW5kaXJ9IgorCitTWVNST09UX1BSRVBST0NFU1NfRlVOQ1NfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgZ2lfYmluYXJpZXNfc3lzcm9vdF9wcmVwcm9jZXNzIgorZ2lfYmluYXJpZXNfc3lzcm9vdF9wcmVwcm9jZXNzKCkgeworICAgICAgICAjIFR3ZWFrIHRoZSBiaW5hcnkgbmFtZXMgaW4gdGhlIGludHJvc3BlY3Rpb24gcGtnY29uZmlnIGZpbGUsIHNvIHRoYXQgaXQKKyAgICAgICAgIyBwaWNrcyB1cCBvdXIgd3JhcHBlcnMgd2hpY2ggZG8gdGhlIGNyb3NzLWNvbXBpbGUgYW5kIHFlbXUgbWFnaWMuCisgICAgICAgIHNlZCAtaSBcCisgICAgICAgICAgIC1lICJzfGdfaXJfc2Nhbm5lcj0uKnxnX2lyX3NjYW5uZXI9JHtiaW5kaXJ9L2ctaXItc2Nhbm5lci13cmFwcGVyfCIgXAorICAgICAgICAgICAtZSAic3xnX2lyX2NvbXBpbGVyPS4qfGdfaXJfY29tcGlsZXI9JHtiaW5kaXJ9L2ctaXItY29tcGlsZXItd3JhcHBlcnwiIFwKKyAgICAgICAgICAgJHtTWVNST09UX0RFU1RESVJ9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wLnBjCit9CisKKyMgTmVlZCB0byBlbnN1cmUgbGQuc28uY29uZiBleGlzdHMgc28gcHJlbGluay1uYXRpdmUgd29ya3MKKyMgYm90aCBiZWZvcmUgd2UgYnVpbGQgYW5kIGlmIHdlIGluc3RhbGwgZnJvbSBzc3RhdGUKK2RvX2NvbmZpZ3VyZVtwcmVmdW5jc10gKz0gImdvYmplY3RfaW50cm9zcGVjdGlvbl9wcmVjb25maWd1cmUiCitweXRob24gZ29iamVjdF9pbnRyb3NwZWN0aW9uX3ByZWNvbmZpZ3VyZSAoKSB7CisgICAgb2UudXRpbHMud3JpdGVfbGRfc29fY29uZihkKQorfQorCitTWVNST09UX1BSRVBST0NFU1NfRlVOQ1NfYXBwZW5kID0gIiBnaV9sZHNvY29uZl9zeXNyb290X3ByZXByb2Nlc3MiCitnaV9sZHNvY29uZl9zeXNyb290X3ByZXByb2Nlc3MgKCkgeworCW1rZGlyIC1wICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyfQorCWRlc3Q9JHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJ9L3Bvc3RpbnN0LWxkc29jb25mLSR7UE59CisJZWNobyAiIyEvYmluL3NoIiA+ICRkZXN0CisJZWNobyAibWtkaXIgLXAgJHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtzeXNjb25mZGlyfSIgPj4gJGRlc3QKKwllY2hvICJlY2hvICR7YmFzZV9saWJkaXJ9ID4+ICR7U1RBR0lOR19ESVJfVEFSR0VUfSR7c3lzY29uZmRpcn0vbGQuc28uY29uZiIgPj4gJGRlc3QKKwllY2hvICJlY2hvICR7bGliZGlyfSA+PiAke1NUQUdJTkdfRElSX1RBUkdFVH0ke3N5c2NvbmZkaXJ9L2xkLnNvLmNvbmYiID4+ICRkZXN0CisJY2htb2QgNzU1ICRkZXN0Cit9CisKKyMgUmVtb3ZlIHdyYXBwZXIgZmlsZXMgZnJvbSB0aGUgcGFja2FnZSwgb25seSB1c2VkIGZvciBjcm9zcy1jb21waWxpbmcKK1BBQ0tBR0VfUFJFUFJPQ0VTU19GVU5DUyArPSAiZ2lfcGFja2FnZV9wcmVwcm9jZXNzIgorZ2lfcGFja2FnZV9wcmVwcm9jZXNzKCkgeworCXJtIC1mICR7UEtHRH0ke2JpbmRpcn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyCisJcm0gLWYgJHtQS0dEfSR7YmluZGlyfS9nLWlyLXNjYW5uZXItd3JhcHBlcgorCXJtIC1mICR7UEtHRH0ke2JpbmRpcn0vZy1pci1jb21waWxlci13cmFwcGVyCisJcm0gLWYgJHtQS0dEfSR7YmluZGlyfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlcgorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy5pbmMKaW5kZXggMjdkYTg0NC4uMGEzNTdkYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMuaW5jCkBAIC0xMCw3ICsxMCwxMSBAQAogCiBMSUNFTlNFID0gIkxHUEx2MiAmIExHUEx2MisgJiBMR1BMdjIuMSsiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnIGd0ay1kb2MgdXBkYXRlLWFsdGVybmF0aXZlcyBndGstaW1tb2R1bGVzLWNhY2hlIGdzZXR0aW5ncyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgoraW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcgZ3RrLWRvYyB1cGRhdGUtYWx0ZXJuYXRpdmVzIGd0ay1pbW1vZHVsZXMtY2FjaGUgZ3NldHRpbmdzIGRpc3Ryb19mZWF0dXJlc19jaGVjayBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworIyB2ZXJzaW9ucyA+PSAzLjkwIGFyZSBkZXZlbG9wbWVudCB2ZXJzaW9ucywgb3RoZXJ3aXNlIGxpa2UgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJbXlxkXC5dKD9QPHB2ZXI+M1wuKFsxLThdP1swMjQ2OF0pKyhcLlxkKykrKVwudGFyIgorCiBBTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIiR7R1RLM0RJU1RST0ZFQVRVUkVTfSIKIAogIyBUaGlzIHNob3VsZCBiZSBpbiBhdXRvdG9vbHMuYmJjbGFzcywgYnV0IHVudGlsIHNvbWV0aGluZyBlbHNlcyB1c2VzIGl0IHB1dHRpbmcKQEAgLTM0LDcgKzM4LDYgQEAKICAgICAgICAgICAgICAgICAgV0FZTEFORF9QUk9UT0NPTFNfU1lTUk9PVF9ESVI9JHtSRUNJUEVfU1lTUk9PVH0gXAogICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgIngxMSIsICIiLCAiLS1kaXNhYmxlLWd0ay1kb2MiLCBkKX0gXAogICAgICAgICAgICAgICAgICAiCi1FWFRSQV9PRUNPTkZbdmFyZGVwc2V4Y2x1ZGVdID0gIk1BQ0hJTkUiCiAKIGRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKICAgICAgICAgZXhwb3J0IEdJUl9FWFRSQV9MSUJTX1BBVEg9IiR7Qn0vZ2RrLy5saWJzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszLzAwMDMtQWRkLWRpc2FibGUtb3BlbmdsLWNvbmZpZ3VyZS1vcHRpb24ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMvMDAwMy1BZGQtZGlzYWJsZS1vcGVuZ2wtY29uZmlndXJlLW9wdGlvbi5wYXRjaAppbmRleCBlYWY2YWVjLi45Y2RlZTBlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMvMDAwMy1BZGQtZGlzYWJsZS1vcGVuZ2wtY29uZmlndXJlLW9wdGlvbi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMvMDAwMy1BZGQtZGlzYWJsZS1vcGVuZ2wtY29uZmlndXJlLW9wdGlvbi5wYXRjaApAQCAtOTQyLDggKzk0Miw4IEBACiArCWdka2dlYXJzCiArZW5kaWYKICsKLSBpZiBVU0VfWDExCi0gbm9pbnN0X1BST0dSQU1TICs9IHRlc3RlcnJvcnMKKyBpZiBVU0VfV0FZTEFORAorIG5vaW5zdF9QUk9HUkFNUyArPSB0ZXN0Zm9yZWlnbgogIGVuZGlmCiBkaWZmIC0tZ2l0IGEvdGVzdHN1aXRlL2d0ay9vYmplY3RzLWZpbmFsaXplLmMgYi90ZXN0c3VpdGUvZ3RrL29iamVjdHMtZmluYWxpemUuYwogaW5kZXggMGIzYTUxOS4uMDdiMDk2ZiAxMDA2NDQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrM18zLjIyLjE3LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszXzMuMjIuMTcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjZhNTQ2MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrM18zLjIyLjE3LmJiCkBAIC0wLDAgKzEsMTkgQEAKK3JlcXVpcmUgZ3RrKzMuaW5jCisKK01BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKKworU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvZ25vbWUvc291cmNlcy9ndGsrLyR7TUFKX1ZFUn0vZ3RrKy0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1IYXJkY29kZWQtbGlidG9vbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLURvLW5vdC10cnktdG8taW5pdGlhbGl6ZS1HTC13aXRob3V0LWxpYkdMLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtQWRkLWRpc2FibGUtb3BlbmdsLWNvbmZpZ3VyZS1vcHRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1jb25maWd1cmUuYWMtRml4LXdheWxhbmQtcHJvdG9jb2xzLXBhdGgucGF0Y2ggXAorICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICIyOWY4NTQzMGNmN2NmYThjYThkMDcwM2JhNjVkYmUxMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhNmMxZmI4ZjIyOWM2MjZhM2Q5YzBlMWNlNmVhMTM4ZGU3ZjY0YTVhNmJjNzk5ZDQ1ZmEyODZmZTQ2MWMzNDM3IgorCitTID0gIiR7V09SS0RJUn0vZ3RrKy0ke1BWfSIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWYzMGYwNzE2ZGZkZDBkOTFlYjQzOWViZWM1MjJlYzIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3RrL2d0ay5oO2VuZGxpbmU9MjU7bWQ1PTFkOGRjMGZjY2RiZmEyNjI4N2EyNzFkY2U4OGFmNzM3IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dkay9nZGsuaDtlbmRsaW5lPTI1O21kNT1jOTIwY2UzOWRjODhjNmYwNmQzZTdjNTBlMDgwODZmMiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90ZXN0cy90ZXN0Z3RrLmM7ZW5kbGluZT0yNTttZDU9Y2I3MzJkYWVlMWQ4MmFmN2EyYmY5NTNjZjNjZjI2ZjEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzNfMy4yMi44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszXzMuMjIuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWNjNTdmOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzNfMy4yMi44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotcmVxdWlyZSBndGsrMy5pbmMKLQotTUFKX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgotCi1TUkNfVVJJID0gImh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9nbm9tZS9zb3VyY2VzL2d0aysvJHtNQUpfVkVSfS9ndGsrLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUhhcmRjb2RlZC1saWJ0b29sLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItRG8tbm90LXRyeS10by1pbml0aWFsaXplLUdMLXdpdGhvdXQtbGliR0wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1BZGQtZGlzYWJsZS1vcGVuZ2wtY29uZmlndXJlLW9wdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LWNvbmZpZ3VyZS5hYy1GaXgtd2F5bGFuZC1wcm90b2NvbHMtcGF0aC5wYXRjaCBcCi0gICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gImI0ZmIzOWE4MjllNDQyNWIzZmEwNWFkYmU3ZjUyZmVmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImM3MjU0YTg4ZGY1YzE3ZTk2MDljZWU5ZTg0OGMzZDAxMDQ1MTI3MDdlZGFkNGMzYjRmMjU2YjEzMWY4ZDNhZjEiCi0KLVMgPSAiJHtXT1JLRElSfS9ndGsrLSR7UFZ9IgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01ZjMwZjA3MTZkZmRkMGQ5MWViNDM5ZWJlYzUyMmVjMiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ndGsvZ3RrLmg7ZW5kbGluZT0yNTttZDU9MWQ4ZGMwZmNjZGJmYTI2Mjg3YTI3MWRjZTg4YWY3MzcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2RrL2dkay5oO2VuZGxpbmU9MjU7bWQ1PWM5MjBjZTM5ZGM4OGM2ZjA2ZDNlN2M1MGUwODA4NmYyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Rlc3RzL3Rlc3RndGsuYztlbmRsaW5lPTI1O21kNT1jYjczMmRhZWUxZDgyYWY3YTJiZjk1M2NmM2NmMjZmMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGstaWNvbi11dGlscy1uYXRpdmVfMy4yMi4xNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGstaWNvbi11dGlscy1uYXRpdmVfMy4yMi4xNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzJkODJkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ay1pY29uLXV0aWxzLW5hdGl2ZV8zLjIyLjE3LmJiCkBAIC0wLDAgKzEsNjMgQEAKK1NVTU1BUlkgPSAiTmF0aXZlIGljb24gdXRpbHMgZm9yIEdUSysiCitERVNDUklQVElPTiA9ICJndGstdXBkYXRlLWljb24tY2FjaGUgYW5kIGd0ay1lbmNvZGUtc3ltYm9saWMtc3ZnIGJ1aWx0IGZyb20gR1RLKyBuYXRpdmVseSwgZm9yIGJ1aWxkIHRpbWUgYW5kIG9uLWhvc3QgcG9zdGluc3Qgc2NyaXB0IGV4ZWN1dGlvbi4iCitTRUNUSU9OID0gImxpYnMiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAtbmF0aXZlIGdkay1waXhidWYtbmF0aXZlIGxpYnJzdmctbmF0aXZlIgorCitMSUNFTlNFID0gIkxHUEx2MiAmIExHUEx2MisgJiBMR1BMdjIuMSsiCisKK01BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKKworU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvZ25vbWUvc291cmNlcy9ndGsrLyR7TUFKX1ZFUn0vZ3RrKy0ke1BWfS50YXIueHogXAorICAgICAgICAgIGZpbGU6Ly9SZW1vdmUtR2RrLWRlcGVuZGVuY3ktZnJvbS1ndGstZW5jb2RlLXN5bWJvbGljLXN2Zy5wYXRjaCIKK1NSQ19VUklbbWQ1c3VtXSA9ICIyOWY4NTQzMGNmN2NmYThjYThkMDcwM2JhNjVkYmUxMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhNmMxZmI4ZjIyOWM2MjZhM2Q5YzBlMWNlNmVhMTM4ZGU3ZjY0YTVhNmJjNzk5ZDQ1ZmEyODZmZTQ2MWMzNDM3IgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01ZjMwZjA3MTZkZmRkMGQ5MWViNDM5ZWJlYzUyMmVjMiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ndGsvZ3RrLmg7ZW5kbGluZT0yNTttZDU9MWQ4ZGMwZmNjZGJmYTI2Mjg3YTI3MWRjZTg4YWY3MzcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2RrL2dkay5oO2VuZGxpbmU9MjU7bWQ1PWM5MjBjZTM5ZGM4OGM2ZjA2ZDNlN2M1MGUwODA4NmYyIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Rlc3RzL3Rlc3RndGsuYztlbmRsaW5lPTI1O21kNT1jYjczMmRhZWUxZDgyYWY3YTJiZjk1M2NmM2NmMjZmMSIKKworUyA9ICIke1dPUktESVJ9L2d0aystJHtQVn0iCisKK2luaGVyaXQgcGtnY29uZmlnIG5hdGl2ZQorCisjIHZlcnNpb25zID49IDMuOTAgYXJlIGRldmVsb3BtZW50IHZlcnNpb25zLCBvdGhlcndpc2UgbGlrZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIlteXGRcLl0oP1A8cHZlcj4zXC4oWzEtOF0/WzAyNDY4XSkrKFwuXGQrKSspXC50YXIiCisKK1BLR19DT05GSUdfRk9SX0JVSUxEID0gIiR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9wa2ctY29uZmlnLW5hdGl2ZSIKKworZG9fY29uZmlndXJlKCkgeworCSMgUXVpdGUgdWdseSBidXQgZGVmaW5lcyBlbm91Z2ggdG8gY29tcGlsZSB0aGUgdG9vbHMuCisJaWYgISB0ZXN0IC1mIGd0ay9jb25maWcuaDsgdGhlbgorCQllY2hvICIjZGVmaW5lIEdFVFRFWFRfUEFDS0FHRSBcImd0azMwXCIiID4+IGd0ay9jb25maWcuaAorCQllY2hvICIjZGVmaW5lIEhBVkVfVU5JU1REX0ggMSIgPj4gZ3RrL2NvbmZpZy5oCisJCWVjaG8gIiNkZWZpbmUgSEFWRV9GVFdfSCAxIiA+PiBndGsvY29uZmlnLmgKKwlmaQorCWlmICEgdGVzdCAtZiBnZGsvY29uZmlnLmg7IHRoZW4KKwkJdG91Y2ggZ2RrL2NvbmZpZy5oCisJZmkKK30KKworZG9fY29tcGlsZSgpIHsKKwkke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSBcCisJCSR7U30vZ3RrL3VwZGF0ZWljb25jYWNoZS5jIFwKKwkJJCgke1BLR19DT05GSUdfRk9SX0JVSUxEfSAtLWNmbGFncyAtLWxpYnMgZ2RrLXBpeGJ1Zi0yLjApIFwKKwkJLW8gZ3RrLXVwZGF0ZS1pY29uLWNhY2hlCisKKwkke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSBcCisJCSR7U30vZ3RrL2VuY29kZXN5bWJvbGljLmMgXAorCQkkKCR7UEtHX0NPTkZJR19GT1JfQlVJTER9IC0tY2ZsYWdzIC0tbGlicyBnaW8tMi4wIGdkay1waXhidWYtMi4wKSBcCisJCS1vIGd0ay1lbmNvZGUtc3ltYm9saWMtc3ZnCit9CisKK2RvX2luc3RhbGwoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CisJaW5zdGFsbCAtbSAwNzU1ICR7Qn0vZ3RrLXVwZGF0ZS1pY29uLWNhY2hlICR7RH0ke2JpbmRpcn0KKwlpbnN0YWxsIC1tIDA3NTUgJHtCfS9ndGstZW5jb2RlLXN5bWJvbGljLXN2ZyAke0R9JHtiaW5kaXJ9CisKKwljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9ndGstdXBkYXRlLWljb24tY2FjaGUgXAorCQlHREtfUElYQlVGX01PRFVMRV9GSUxFPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8yLjEwLjAvbG9hZGVycy5jYWNoZQorCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2d0ay1lbmNvZGUtc3ltYm9saWMtc3ZnIFwKKwkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvMi4xMC4wL2xvYWRlcnMuY2FjaGUKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGstaWNvbi11dGlscy1uYXRpdmVfMy4yMi44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ay1pY29uLXV0aWxzLW5hdGl2ZV8zLjIyLjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyODM0MTguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ay1pY29uLXV0aWxzLW5hdGl2ZV8zLjIyLjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi1TVU1NQVJZID0gIk5hdGl2ZSBpY29uIHV0aWxzIGZvciBHVEsrIgotREVTQ1JJUFRJT04gPSAiZ3RrLXVwZGF0ZS1pY29uLWNhY2hlIGFuZCBndGstZW5jb2RlLXN5bWJvbGljLXN2ZyBidWlsdCBmcm9tIEdUSysgbmF0aXZlbHksIGZvciBidWlsZCB0aW1lIGFuZCBvbi1ob3N0IHBvc3RpbnN0IHNjcmlwdCBleGVjdXRpb24uIgotU0VDVElPTiA9ICJsaWJzIgotCi1ERVBFTkRTID0gImdsaWItMi4wLW5hdGl2ZSBnZGstcGl4YnVmLW5hdGl2ZSBsaWJyc3ZnLW5hdGl2ZSIKLQotTElDRU5TRSA9ICJMR1BMdjIgJiBMR1BMdjIrICYgTEdQTHYyLjErIgotCi1NQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL2dub21lL3NvdXJjZXMvZ3RrKy8ke01BSl9WRVJ9L2d0aystJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICBmaWxlOi8vUmVtb3ZlLUdkay1kZXBlbmRlbmN5LWZyb20tZ3RrLWVuY29kZS1zeW1ib2xpYy1zdmcucGF0Y2giCi1TUkNfVVJJW21kNXN1bV0gPSAiYjRmYjM5YTgyOWU0NDI1YjNmYTA1YWRiZTdmNTJmZWYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzcyNTRhODhkZjVjMTdlOTYwOWNlZTllODQ4YzNkMDEwNDUxMjcwN2VkYWQ0YzNiNGYyNTZiMTMxZjhkM2FmMSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWYzMGYwNzE2ZGZkZDBkOTFlYjQzOWViZWM1MjJlYzIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3RrL2d0ay5oO2VuZGxpbmU9MjU7bWQ1PTFkOGRjMGZjY2RiZmEyNjI4N2EyNzFkY2U4OGFmNzM3IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dkay9nZGsuaDtlbmRsaW5lPTI1O21kNT1jOTIwY2UzOWRjODhjNmYwNmQzZTdjNTBlMDgwODZmMiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90ZXN0cy90ZXN0Z3RrLmM7ZW5kbGluZT0yNTttZDU9Y2I3MzJkYWVlMWQ4MmFmN2EyYmY5NTNjZjNjZjI2ZjEiCi0KLVMgPSAiJHtXT1JLRElSfS9ndGsrLSR7UFZ9IgotCi1pbmhlcml0IHBrZ2NvbmZpZyBuYXRpdmUgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCi0KLVBLR19DT05GSUdfRk9SX0JVSUxEID0gIiR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9wa2ctY29uZmlnLW5hdGl2ZSIKLQotZG9fY29uZmlndXJlKCkgewotCSMgUXVpdGUgdWdseSBidXQgZGVmaW5lcyBlbm91Z2ggdG8gY29tcGlsZSB0aGUgdG9vbHMuCi0JaWYgISB0ZXN0IC1mIGd0ay9jb25maWcuaDsgdGhlbgotCQllY2hvICIjZGVmaW5lIEdFVFRFWFRfUEFDS0FHRSBcImd0azMwXCIiID4+IGd0ay9jb25maWcuaAotCQllY2hvICIjZGVmaW5lIEhBVkVfVU5JU1REX0ggMSIgPj4gZ3RrL2NvbmZpZy5oCi0JCWVjaG8gIiNkZWZpbmUgSEFWRV9GVFdfSCAxIiA+PiBndGsvY29uZmlnLmgKLQlmaQotCWlmICEgdGVzdCAtZiBnZGsvY29uZmlnLmg7IHRoZW4KLQkJdG91Y2ggZ2RrL2NvbmZpZy5oCi0JZmkKLX0KLQotZG9fY29tcGlsZSgpIHsKLQkke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSBcCi0JCSR7U30vZ3RrL3VwZGF0ZWljb25jYWNoZS5jIFwKLQkJJCgke1BLR19DT05GSUdfRk9SX0JVSUxEfSAtLWNmbGFncyAtLWxpYnMgZ2RrLXBpeGJ1Zi0yLjApIFwKLQkJLW8gZ3RrLXVwZGF0ZS1pY29uLWNhY2hlCi0KLQkke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSBcCi0JCSR7U30vZ3RrL2VuY29kZXN5bWJvbGljLmMgXAotCQkkKCR7UEtHX0NPTkZJR19GT1JfQlVJTER9IC0tY2ZsYWdzIC0tbGlicyBnaW8tMi4wIGdkay1waXhidWYtMi4wKSBcCi0JCS1vIGd0ay1lbmNvZGUtc3ltYm9saWMtc3ZnCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9Ci0JaW5zdGFsbCAtbSAwNzU1ICR7Qn0vZ3RrLXVwZGF0ZS1pY29uLWNhY2hlICR7RH0ke2JpbmRpcn0KLQlpbnN0YWxsIC1tIDA3NTUgJHtCfS9ndGstZW5jb2RlLXN5bWJvbGljLXN2ZyAke0R9JHtiaW5kaXJ9Ci0KLQljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9ndGstdXBkYXRlLWljb24tY2FjaGUgXAotCQlHREtfUElYQlVGX01PRFVMRV9GSUxFPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8yLjEwLjAvbG9hZGVycy5jYWNoZQotCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2d0ay1lbmNvZGUtc3ltYm9saWMtc3ZnIFwKLQkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvMi4xMC4wL2xvYWRlcnMuY2FjaGUKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9maWxlcy9jb25kaXRpb25hbHRlc3RzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2ZpbGVzL2NvbmRpdGlvbmFsdGVzdHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGMxODBmMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9maWxlcy9jb25kaXRpb25hbHRlc3RzLnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKK0FsbG93IHRoZSB0ZXN0cyB0byBiZSBleHBsaWNpdGx5IGRpc2FibGVkIHRvIGF2b2lkIGZsb2F0aW5nIGRlcGVuZG5lY3kKK2lzc3Vlcy4gVGhpcyBpcyBub3QgcmVhbGx5IGFuIGlzc3VlIHdpdGggUlNTIGJ1dCBpcyBvbiBwcmV2aW91cyByZWxlYXNlcy4KKworUlAgMjAxNy82LzI3CitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworSW5kZXg6IGd0ay1kb2MtMS4yNS9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBndGstZG9jLTEuMjUub3JpZy9jb25maWd1cmUuYWMKKysrKyBndGstZG9jLTEuMjUvY29uZmlndXJlLmFjCitAQCAtMTYxLDYgKzE2MSwxMSBAQCBpZiB0ZXN0ICJ4JEdDQyIgPSAieHllcyI7IHRoZW4KKyAJZmkKKyBmaQorIAorK0FDX0FSR19FTkFCTEUoW3Rlc3RzXSwKKysJQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXRlc3RzXSwKKysJW2VuYWJsZSB0ZXN0cyAoZGVmYXVsdD15ZXMpXSksLAorKwlbZW5hYmxlX3Rlc3RzPSJ5ZXMiXSkKKysKKyBkbmwgaWYgZ2xpYiBpcyBhdmFpbGFibGUgd2UgY2FuIGVuYWJsZSB0aGUgdGVzdHMKKyBQS0dfQ0hFQ0tfTU9EVUxFUyhURVNUX0RFUFMsIFtnbGliLTIuMCA+PSAyLjYuMCBnb2JqZWN0LTIuMCA+PSAyLjYuMF0sCisgCVsJZ2xpYl9wcmVmaXg9ImAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXByZWZpeCBnbGliLTIuMGAiCitAQCAtMTcxLDYgKzE3NiwxMSBAQCBQS0dfQ0hFQ0tfTU9EVUxFUyhURVNUX0RFUFMsIFtnbGliLTIuMCA+CisgCQlidWlsZF90ZXN0cz0ibm8iCisgCV0KKyApCisraWYgdGVzdCAieCRlbmFibGVfdGVzdHMiICE9ICJ4eWVzIjsgdGhlbgorKwlndGtfZG9jX3VzZV9saWJ0b29sPSJubyIKKysJYnVpbGRfdGVzdHM9Im5vIgorK2ZpCisrCisgQU1fQ09ORElUSU9OQUwoR1RLX0RPQ19VU0VfTElCVE9PTCwgdGVzdCAtbiAiJExJQlRPT0wiIC1hIHgkZ3RrX2RvY191c2VfbGlidG9vbCA9IHh5ZXMgKQorIGRubCB0aGlzIGVuYWJsZSB0aGUgcnVsZSBpbiB0ZXN0L01ha2VmaWxlLmFtCisgQU1fQ09ORElUSU9OQUwoQlVJTERfVEVTVFMsIHRlc3QgeCRidWlsZF90ZXN0cyA9IHh5ZXMpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZ3RrLWRvY18xLjI1LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2d0ay1kb2NfMS4yNS5iYgppbmRleCA3ZGUzNmFlOS4uZTBlYjk5NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2d0ay1kb2NfMS4yNS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0ay1kb2MvZ3RrLWRvY18xLjI1LmJiCkBAIC0xNiw2ICsxNiw3IEBACiAjIGhvcGVmdWxseSBubyBvbmUgbWluZHMgYmVjYXVzZSBpdHMgc2NyaXB0cyBhcmUgbm90IHVzZWQgZm9yIGFueXRoaW5nIGR1cmluZyBidWlsZAogIyBhbmQgc2hvdWxkbid0IGJlIHVzZWQgb24gdGFyZ2V0cy4KIFBBQ0tBR0VDT05GSUdbd29ya2luZy1zY3JpcHRzXSA9ICItLXdpdGgtaGlnaGxpZ2h0PXNvdXJjZS1oaWdobGlnaHQsLS13aXRoLWhpZ2hsaWdodD1ubyxsaWJ4c2x0LW5hdGl2ZSB4bWx0by1uYXRpdmUgc291cmNlLWhpZ2hsaWdodC1uYXRpdmUgcGVybC1uYXRpdmUiCitQQUNLQUdFQ09ORklHW3Rlc3RzXSA9ICItLWVuYWJsZS10ZXN0cywtLWRpc2FibGUtdGVzdHMsZ2xpYi0yLjAiCiAKICMgV2UgY2Fubm90IHVzZSBob3N0IHBlcmwsIGJlY2F1c2UgaXQgbWF5IGJlIHRvbyBvbGQgZm9yIGd0ay1kb2MKIEVYVFJBTkFUSVZFUEFUSCArPSAicGVybC1uYXRpdmUiCkBAIC0yMyw2ICsyNCw3IEBACiBTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1Eby1ub3QtaGFyZG9jb2RlLXBhdGhzLXRvLXBlcmwtcHl0aG9uLWluLXNjcmlwdHMucGF0Y2ggXAogICAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWVycm9yLW91dC1pZi14c2x0cHJvYy1pcy1ub3QtZm91bmQucGF0Y2ggXAogICAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWVycm9yLW91dC1pZi1wZXJsLWlzLW5vdC1mb3VuZC1vci1pdHMtdmVyc2lvbi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vY29uZGl0aW9uYWx0ZXN0cy5wYXRjaCBcCiAgICAgICAgICAgICIKIFNSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZTovL3BrZy1jb25maWctbmF0aXZlLnBhdGNoIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2pzb24tZ2xpYi9qc29uLWdsaWJfMS4yLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2pzb24tZ2xpYi9qc29uLWdsaWJfMS4yLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4NjliYTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9qc29uLWdsaWIvanNvbi1nbGliXzEuMi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotU1VNTUFSWSA9ICJKU09OLUdMaWIgaW1wbGVtZW50cyBhIGZ1bGwgSlNPTiBwYXJzZXIgdXNpbmcgR0xpYiBhbmQgR09iamVjdCIKLURFU0NSSVBUSU9OID0gIlVzZSBKU09OLUdMaWIgaXQgaXMgcG9zc2libGUgdG8gcGFyc2UgYW5kIGdlbmVyYXRlIHZhbGlkIEpTT05cCi0gZGF0YSBzdHJ1Y3R1cmVzLCB1c2luZyBhIERPTS1saWtlIEFQSS4gSlNPTi1HTGliIGFsc28gb2ZmZXJzIEdPYmplY3QgXAotaW50ZWdyYXRpb24sIHByb3ZpZGluZyB0aGUgYWJpbGl0eSB0byBzZXJpYWxpemUgYW5kIGRlc2VyaWFsaXplIEdPYmplY3QgXAotaW5zdGFuY2VzIHRvIGFuZCBmcm9tIEpTT04gZGF0YSB0eXBlcy4iCi1IT01FUEFHRSA9ICJodHRwOi8vbGl2ZS5nbm9tZS5vcmcvSnNvbkdsaWIiCi0KLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03ZmJjMzM4MzA5YWMzOGZlZmNkNjRiMDRiYjkwM2UzNCIKLQotREVQRU5EUyA9ICJnbGliLTIuMCIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiYzFkYWVmYjhkMGZiNTk2MTJhZjBjMDcyYzhhYWJiNTgiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJlYTEyOGFiNTJhODI0ZmNkMDZlNTQ0OGZiYjJiZDhkOWExMzc0MGQ1MWM2NmQ0NDU4MjhlZGJhNzEzMjFhNjIxIgotCi1pbmhlcml0IGdub21lYmFzZSBnZXR0ZXh0IGxpYl9wYWNrYWdlIGdvYmplY3QtaW50cm9zcGVjdGlvbiBndGstZG9jIG1hbnBhZ2VzCi0KLVBBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLW1hbiAtLXdpdGgteG1sLWNhdGFsb2c9JHtTVEFHSU5HX0VUQ0RJUl9OQVRJVkV9L3htbC9jYXRhbG9nLnhtbCwgLS1kaXNhYmxlLW1hbiwgbGlieHNsdC1uYXRpdmUgeG1sdG8tbmF0aXZlIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2pzb24tZ2xpYi9qc29uLWdsaWJfMS4yLjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2pzb24tZ2xpYi9qc29uLWdsaWJfMS4yLjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmM1ZDM4MQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvanNvbi1nbGliL2pzb24tZ2xpYl8xLjIuOC5iYgpAQCAtMCwwICsxLDIwIEBACitTVU1NQVJZID0gIkpTT04tR0xpYiBpbXBsZW1lbnRzIGEgZnVsbCBKU09OIHBhcnNlciB1c2luZyBHTGliIGFuZCBHT2JqZWN0IgorREVTQ1JJUFRJT04gPSAiVXNlIEpTT04tR0xpYiBpdCBpcyBwb3NzaWJsZSB0byBwYXJzZSBhbmQgZ2VuZXJhdGUgdmFsaWQgSlNPTlwKKyBkYXRhIHN0cnVjdHVyZXMsIHVzaW5nIGEgRE9NLWxpa2UgQVBJLiBKU09OLUdMaWIgYWxzbyBvZmZlcnMgR09iamVjdCBcCitpbnRlZ3JhdGlvbiwgcHJvdmlkaW5nIHRoZSBhYmlsaXR5IHRvIHNlcmlhbGl6ZSBhbmQgZGVzZXJpYWxpemUgR09iamVjdCBcCitpbnN0YW5jZXMgdG8gYW5kIGZyb20gSlNPTiBkYXRhIHR5cGVzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9saXZlLmdub21lLm9yZy9Kc29uR2xpYiIKKworTElDRU5TRSA9ICJMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTdmYmMzMzgzMDlhYzM4ZmVmY2Q2NGIwNGJiOTAzZTM0IgorCitERVBFTkRTID0gImdsaWItMi4wIgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJmZjMxZTdkMDU5NGRmNDQzMThlMTJmYWNkYTNkMDg2ZSIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImZkNTVhOTAzN2QzOWU3YTEwZjBkYjY0MzA5ZjVmMDI2NWZhMzJlYzk2MmJmODUwNjYwODdiODNhMjgwN2Y0MGEiCisKK2luaGVyaXQgZ25vbWViYXNlIGdldHRleHQgbGliX3BhY2thZ2UgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGd0ay1kb2MgbWFucGFnZXMKKworUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLS1lbmFibGUtbWFuIC0td2l0aC14bWwtY2F0YWxvZz0ke1NUQUdJTkdfRVRDRElSX05BVElWRX0veG1sL2NhdGFsb2cueG1sLCAtLWRpc2FibGUtbWFuLCBsaWJ4c2x0LW5hdGl2ZSB4bWx0by1uYXRpdmUiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGliZ3VkZXYvbGliZ3VkZXZfMjMxLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJndWRldi9saWJndWRldl8yMzEuYmIKaW5kZXggYWUwZjFjNy4uYWQ2NzkyNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJndWRldi9saWJndWRldl8yMzEuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJndWRldi9saWJndWRldl8yMzEuYmIKQEAgLTEsNSArMSw1IEBACiBTVU1NQVJZID0gIkdPYmplY3Qgd3JhcHBlciBmb3IgbGlidWRldiIKLQorSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmdub21lLm9yZy9Qcm9qZWN0cy9saWJndWRldiIKIFNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjkxNmMxMGM1MWVjNjExMzFlMjQ0YzM5MzZiYmIyZTBjIgogU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiM2IxZWY5OWQ0YTg5ODRjMzUwNDQxMDNkOGRkZmMzY2M1MmM4MDAzNWMzNmFiYWIyYmNjNWUzNTMyZTA2M2Y5NiIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJub3RpZnkvbGlibm90aWZ5XzAuNy43LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJub3RpZnkvbGlibm90aWZ5XzAuNy43LmJiCmluZGV4IDJhYjJmMWYuLjZjMjk5YmMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlibm90aWZ5L2xpYm5vdGlmeV8wLjcuNy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYm5vdGlmeS9saWJub3RpZnlfMC43LjcuYmIKQEAgLTEsNCArMSw1IEBACiBTVU1NQVJZID0gIkxpYnJhcnkgZm9yIHNlbmRpbmcgZGVza3RvcCBub3RpZmljYXRpb25zIHRvIGEgbm90aWZpY2F0aW9uIGRhZW1vbiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ25vbWUub3JnIgogU0VDVElPTiA9ICJsaWJzIgogTElDRU5TRSA9ICJMR1BMdjIuMSIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTdmYmMzMzgzMDlhYzM4ZmVmY2Q2NGIwNGJiOTAzZTM0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJyc3ZnL2xpYnJzdmdfMi40MC4xNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlicnN2Zy9saWJyc3ZnXzIuNDAuMTYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5MjQzYzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJyc3ZnL2xpYnJzdmdfMi40MC4xNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLVNVTU1BUlkgPSAiTGlicmFyeSBmb3IgcmVuZGVyaW5nIFNWRyBmaWxlcyIKLUhPTUVQQUdFID0gImh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9HTk9NRS9zb3VyY2VzL2xpYnJzdmcvIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCi0KLUxJQ0VOU0UgPSAiTEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3JzdmcuaDtiZWdpbmxpbmU9MztlbmRsaW5lPTI0O21kNT0yMGI0MTEzYzQ5MDliYmYwZDY3ZTAwNjc3ODMwMmJjNiIKLQotU0VDVElPTiA9ICJ4MTEvdXRpbHMiCi1ERVBFTkRTID0gImNhaXJvIGdkay1waXhidWYgZ2xpYi0yLjAgbGliY3JvY28gbGlieG1sMiBwYW5nbyIKLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ25vbWViYXNlIGd0ay1kb2MgcGl4YnVmY2FjaGUgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgotCi1TUkNfVVJJICs9ICJmaWxlOi8vZ3RrLW9wdGlvbi5wYXRjaCIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiZjQ3NGZlMzcxNzdhMmJmODA1MDc4N2RmMjA0NjA5NWMiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJkNDhiY2Y2YjAzZmE5OGYwN2RmMTAzMzJmYjQ5ZDhjMDEwNzg2ZGRjYTZhYjM0Y2JiYTIxNzY4NGY1MzNmZjJlIgotCi1DQUNIRURfQ09ORklHVVJFVkFSUyA9ICJhY19jdl9wYXRoX0dES19QSVhCVUZfUVVFUllMT0FERVJTPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC9nZGstcGl4YnVmLXF1ZXJ5LWxvYWRlcnMiCi0KLSMgVGhlIG9sZGVyIGxkICgyLjIyKSBvbiB0aGUgaG9zdCAoQ2VudG9zIDYuNSkgZG9lc24ndCBoYXZlIHRoZQotIyAtQnN5bWJvbGljLWZ1bmN0aW9ucyBvcHRpb24sIHdlIGNhbiBkaXNhYmxlIGl0IGZvciBuYXRpdmUuCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLS1lbmFibGUtQnN5bWJvbGljPWF1dG8iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJnZGtwaXhidWYiCi0jIFRoZSBnZGstcGl4YnVmIGxvYWRlcgotUEFDS0FHRUNPTkZJR1tnZGtwaXhidWZdID0gIi0tZW5hYmxlLXBpeGJ1Zi1sb2FkZXIsLS1kaXNhYmxlLXBpeGJ1Zi1sb2FkZXIsZ2RrLXBpeGJ1Zi1uYXRpdmUiCi0jIEdUSysgdGVzdCBhcHBsaWNhdGlvbiAocnN2Zy12aWV3KQotUEFDS0FHRUNPTkZJR1tndGtdID0gIi0td2l0aC1ndGszLC0td2l0aG91dC1ndGszLGd0ayszIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQkjIExvYWRhYmxlIG1vZHVsZXMgZG9uJ3QgbmVlZCAuYSBvciAubGEgb24gTGludXgKLQlybSAtZiAke0R9JHtsaWJkaXJ9L2dkay1waXhidWYtMi4wLyovbG9hZGVycy8qLmEgJHtEfSR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8qL2xvYWRlcnMvKi5sYQotfQotCi1QQUNLQUdFUyA9KyAibGlicnN2Zy1ndGsgcnN2ZyIKLUZJTEVTX3JzdmcgPSAiJHtiaW5kaXJ9L3JzdmcqIFwKLQkgICAgICAke2RhdGFkaXJ9L3BpeG1hcHMvc3ZnLXZpZXdlci5zdmcgXAotCSAgICAgICR7ZGF0YWRpcn0vdGhlbWVzIgotRklMRVNfbGlicnN2Zy1ndGsgPSAiJHtsaWJkaXJ9L2dkay1waXhidWYtMi4wLyovKi8qLnNvIgotCi1QSVhCVUZfUEFDS0FHRVMgPSAibGlicnN2Zy1ndGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYnJzdmcvbGlicnN2Z18yLjQwLjE4LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJyc3ZnL2xpYnJzdmdfMi40MC4xOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMWEwZGMyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJyc3ZnL2xpYnJzdmdfMi40MC4xOC5iYgpAQCAtMCwwICsxLDQ0IEBACitTVU1NQVJZID0gIkxpYnJhcnkgZm9yIHJlbmRlcmluZyBTVkcgZmlsZXMiCitIT01FUEFHRSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvR05PTUUvc291cmNlcy9saWJyc3ZnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgorCitMSUNFTlNFID0gIkxHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9yc3ZnLmg7YmVnaW5saW5lPTM7ZW5kbGluZT0yNDttZDU9MjBiNDExM2M0OTA5YmJmMGQ2N2UwMDY3NzgzMDJiYzYiCisKK1NFQ1RJT04gPSAieDExL3V0aWxzIgorREVQRU5EUyA9ICJjYWlybyBnZGstcGl4YnVmIGdsaWItMi4wIGxpYmNyb2NvIGxpYnhtbDIgcGFuZ28iCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdub21lYmFzZSBndGstZG9jIHBpeGJ1ZmNhY2hlIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworU1JDX1VSSSArPSAiZmlsZTovL2d0ay1vcHRpb24ucGF0Y2giCisKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImVhYTVjOGE4YmJlMjYwMGFiNTE5NGMwZDNiMWI2MjFiIgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiYmZjOGM0ODhjODljMWU3MjEyYzQ3OGJlYjk1YzQxYjQ0NzAxNjM2MTI1YTNlNmRhYjQxMTg3ZjE0ODViNTY0YyIKKworQ0FDSEVEX0NPTkZJR1VSRVZBUlMgPSAiYWNfY3ZfcGF0aF9HREtfUElYQlVGX1FVRVJZTE9BREVSUz0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvZ2RrLXBpeGJ1Zi1xdWVyeS1sb2FkZXJzIgorCisjIFRoZSBvbGRlciBsZCAoMi4yMikgb24gdGhlIGhvc3QgKENlbnRvcyA2LjUpIGRvZXNuJ3QgaGF2ZSB0aGUKKyMgLUJzeW1ib2xpYy1mdW5jdGlvbnMgb3B0aW9uLCB3ZSBjYW4gZGlzYWJsZSBpdCBmb3IgbmF0aXZlLgorRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC0tZW5hYmxlLUJzeW1ib2xpYz1hdXRvIgorCitQQUNLQUdFQ09ORklHID8/PSAiZ2RrcGl4YnVmIgorIyBUaGUgZ2RrLXBpeGJ1ZiBsb2FkZXIKK1BBQ0tBR0VDT05GSUdbZ2RrcGl4YnVmXSA9ICItLWVuYWJsZS1waXhidWYtbG9hZGVyLC0tZGlzYWJsZS1waXhidWYtbG9hZGVyLGdkay1waXhidWYtbmF0aXZlIgorIyBHVEsrIHRlc3QgYXBwbGljYXRpb24gKHJzdmctdmlldykKK1BBQ0tBR0VDT05GSUdbZ3RrXSA9ICItLXdpdGgtZ3RrMywtLXdpdGhvdXQtZ3RrMyxndGsrMyIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJIyBMb2FkYWJsZSBtb2R1bGVzIGRvbid0IG5lZWQgLmEgb3IgLmxhIG9uIExpbnV4CisJcm0gLWYgJHtEfSR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8qL2xvYWRlcnMvKi5hICR7RH0ke2xpYmRpcn0vZ2RrLXBpeGJ1Zi0yLjAvKi9sb2FkZXJzLyoubGEKK30KKworUEFDS0FHRVMgPSsgImxpYnJzdmctZ3RrIHJzdmciCitGSUxFU19yc3ZnID0gIiR7YmluZGlyfS9yc3ZnKiBcCisJICAgICAgJHtkYXRhZGlyfS9waXhtYXBzL3N2Zy12aWV3ZXIuc3ZnIFwKKwkgICAgICAke2RhdGFkaXJ9L3RoZW1lcyIKK0ZJTEVTX2xpYnJzdmctZ3RrID0gIiR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8qLyovKi5zbyBcCisgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3RodW1ibmFpbGVycy9saWJyc3ZnLnRodW1ibmFpbGVyIgorCitQSVhCVUZfUEFDS0FHRVMgPSAibGlicnN2Zy1ndGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NhaXJvL2NhaXJvLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2Fpcm8vY2Fpcm8uaW5jCmluZGV4IDhlMWUyZTEuLjIwZTBkMmMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2Fpcm8vY2Fpcm8uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2Fpcm8vY2Fpcm8uaW5jCkBAIC0zMCw2ICszMCw3IEBACiBQQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICItLWVuYWJsZS12YWxncmluZD15ZXMsLS1kaXNhYmxlLXZhbGdyaW5kLHZhbGdyaW5kIgogUEFDS0FHRUNPTkZJR1tlZ2xdID0gIi0tZW5hYmxlLWVnbD15ZXMsLS1kaXNhYmxlLWVnbCx2aXJ0dWFsL2VnbCIKIFBBQ0tBR0VDT05GSUdbZ2xlc3YyXSA9ICItLWVuYWJsZS1nbGVzdjIsLS1kaXNhYmxlLWdsZXN2Mix2aXJ0dWFsL2xpYmdsZXMyIgorUEFDS0FHRUNPTkZJR1tvcGVuZ2xdID0gIi0tZW5hYmxlLWdsLC0tZGlzYWJsZS1nbCx2aXJ0dWFsL2xpYmdsIgogCiAjY2hlY2sgZm9yIFRBUkdFVF9GUFU9c29mdCBhbmQgaW5mb3JtIGNvbmZpZ3VyZSBvZiB0aGUgcmVzdWx0IHNvIGl0IGNhbiBkaXNhYmxlIHNvbWUgZmxvYXRpbmcgcG9pbnRzIAogcmVxdWlyZSBjYWlyby1mcHUuaW5jCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NhaXJvL2NhaXJvLzAwMDEtY2Fpcm8tRml4LUNWRS0yMDE3LTk4MTQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NhaXJvL2NhaXJvLzAwMDEtY2Fpcm8tRml4LUNWRS0yMDE3LTk4MTQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2QwMmFiOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2Fpcm8vY2Fpcm8vMDAwMS1jYWlyby1GaXgtQ1ZFLTIwMTctOTgxNC5wYXRjaApAQCAtMCwwICsxLDQ1IEBACitGcm9tIDA0MjQyMWU5ZTNkMjY2YWQwYmI3ODA1MTMyMDQxZWY1MWFkMzIzNGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBZHJpYW4gSm9obnNvbiA8YWpvaG5zb25AcmVkbmVvbi5jb20+CitEYXRlOiBXZWQsIDE2IEF1ZyAyMDE3IDIyOjUyOjM1IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIGNhaXJvOiBGaXggQ1ZFLTIwMTctOTgxNAorCitUaGUgYnVnIGhhcHBlbnMgYmVjYXVzZSBpbiBzb21lIHNjZW5hcmlvcyB0aGUgdmFyaWFibGUgc2l6ZSBjYW4KK2hhdmUgYSB2YWx1ZSBvZiAwIGF0IGxpbmUgMTI4OC4gQW5kIG1hbGxvYygwKSBpcyBub3QgcmV0dXJuaW5nCitOVUxMIGFzIHNvbWUgcGVvcGxlIGNvdWxkIGV4cGVjdDoKKworICAgIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzEwNzMxNTcvemVyby1zaXplLW1hbGxvYworCittYWxsb2MoMCkgcmV0dXJucyB0aGUgc21hbGxlc3QgY2h1bmsgcG9zc2libGUuIFNvIHRoZSBsaW5lIDEyOTAKK3dpdGggdGhlIHJldHVybiBpcyBub3QgZXhlY3V0ZS4gQW5kIHRoZSBleGVjdXRpb24gY29udGludWVzIHdpdGgKK2FuIGludmFsaWQgbWFwLgorCitTaW5jZSB0aGUgc2l6ZSBpcyAwIHRoZSB2YXJpYWJsZSBtYXAgaXMgbm90IGluaXRpYWxpemVkIGNvcnJlY3RseQorYXQgbG9hZF90cnV0eXBlX3RhYmxlLiBTbywgbGF0ZXIgd2hlbiB0aGUgdmFyaWFibGUgbWFwIGlzIGFjY2Vzc2VkCitwcmV2aW91cyB2YWx1ZXMgZnJvbSBhIGZyZWVkIGNodW5rIGFyZSB1c2VkLiBUaGlzIGNvdWxkIGFsbG93cyBhbgorYXR0YWNrZXIgdG8gY29udHJvbCB0aGUgdmFyaWFibGUgbWFwLgorCitUaGlzIHBhdGNoIGhhdmUgbm90IG1lcmdlIGluIHVwc3RyZWFtIG5vdy4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxNTQ3XQorQ1ZFOiBDVkUtMjAxNy05ODE0CitTaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL2NhaXJvLXRydWV0eXBlLXN1YnNldC5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2NhaXJvLXRydWV0eXBlLXN1YnNldC5jIGIvc3JjL2NhaXJvLXRydWV0eXBlLXN1YnNldC5jCitpbmRleCBlMzQ0OWEwLi5mNzdkMTFjIDEwMDY0NAorLS0tIGEvc3JjL2NhaXJvLXRydWV0eXBlLXN1YnNldC5jCisrKysgYi9zcmMvY2Fpcm8tdHJ1ZXR5cGUtc3Vic2V0LmMKK0BAIC0xMjg1LDcgKzEyODUsNyBAQCBfY2Fpcm9fdHJ1ZXR5cGVfcmV2ZXJzZV9jbWFwIChjYWlyb19zY2FsZWRfZm9udF90ICpzY2FsZWRfZm9udCwKKyAJcmV0dXJuIENBSVJPX0lOVF9TVEFUVVNfVU5TVVBQT1JURUQ7CisgCisgICAgIHNpemUgPSBiZTE2X3RvX2NwdSAobWFwLT5sZW5ndGgpOworLSAgICBtYXAgPSBtYWxsb2MgKHNpemUpOworKyAgICBtYXAgPSBfY2Fpcm9fbWFsbG9jIChzaXplKTsKKyAgICAgaWYgKHVubGlrZWx5IChtYXAgPT0gTlVMTCkpCisgCXJldHVybiBfY2Fpcm9fZXJyb3IgKENBSVJPX1NUQVRVU19OT19NRU1PUlkpOworIAorLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NhaXJvL2NhaXJvL2NhaXJvLWdldF9iaXRtYXBfc3VyZmFjZS1ic2MxMDM2Nzg5LUNWRS0yMDE3LTc0NzUuZGlmZiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2Fpcm8vY2Fpcm8vY2Fpcm8tZ2V0X2JpdG1hcF9zdXJmYWNlLWJzYzEwMzY3ODktQ1ZFLTIwMTctNzQ3NS5kaWZmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhYWFkMmUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NhaXJvL2NhaXJvL2NhaXJvLWdldF9iaXRtYXBfc3VyZmFjZS1ic2MxMDM2Nzg5LUNWRS0yMDE3LTc0NzUuZGlmZgpAQCAtMCwwICsxLDIyIEBACitDYWlybzogRml4IERlbmlhbC1vZi1TZXJ2aWNlIEF0dGFjayBkdWUgdG8gTG9naWNhbCBQcm9ibGVtIGluIFByb2dyYW0KKworaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNzYzCisKK0NWRTogQ1ZFLTIwMTctNzQ3NQorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKKworU2lnbmVkLW9mZi1ieTogRmFuIFhpbiA8ZmFuLnhpbkBqcC5mdWppdHN1LmNvbT4KKworSW5kZXg6IGNhaXJvLTEuMTUuNC9zcmMvY2Fpcm8tZnQtZm9udC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gY2Fpcm8tMS4xNS40Lm9yaWcvc3JjL2NhaXJvLWZ0LWZvbnQuYworKysrIGNhaXJvLTEuMTUuNC9zcmMvY2Fpcm8tZnQtZm9udC5jCitAQCAtMTE0OSw3ICsxMTQ5LDcgQEAgX2dldF9iaXRtYXBfc3VyZmFjZSAoRlRfQml0bWFwCQkgICAgICpiaQorICAgICB3aWR0aCA9IGJpdG1hcC0+d2lkdGg7CisgICAgIGhlaWdodCA9IGJpdG1hcC0+cm93czsKKyAKKy0gICAgaWYgKHdpZHRoID09IDAgfHwgaGVpZ2h0ID09IDApIHsKKysgICAgaWYgKHdpZHRoID09IDAgfHwgaGVpZ2h0ID09IDAgfHwgYml0bWFwLT5idWZmZXIgPT0gTlVMTCkgeworIAkqc3VyZmFjZSA9IChjYWlyb19pbWFnZV9zdXJmYWNlX3QgKikKKyAJICAgIGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhIChOVUxMLCBmb3JtYXQsIDAsIDAsIDApOworIAlyZXR1cm4gKCpzdXJmYWNlKS0+YmFzZS5zdGF0dXM7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NhaXJvL2NhaXJvXzEuMTQuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NhaXJvL2NhaXJvXzEuMTQuMTAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmNkZGRjNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2Fpcm8vY2Fpcm9fMS4xNC4xMC5iYgpAQCAtMCwwICsxLDQ2IEBACityZXF1aXJlIGNhaXJvLmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lNzNlOTk5ZTBjNzJiNWFjOTAxMjQyNGZhMTU3YWQ3NyIKKworU1JDX1VSSSA9ICJodHRwOi8vY2Fpcm9ncmFwaGljcy5vcmcvcmVsZWFzZXMvY2Fpcm8tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL2NhaXJvLWdldF9iaXRtYXBfc3VyZmFjZS1ic2MxMDM2Nzg5LUNWRS0yMDE3LTc0NzUuZGlmZiBcIAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jYWlyby1GaXgtQ1ZFLTIwMTctOTgxNC5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMTQ2ZjVmNGQwYjQ0MzlmYzM3OTJmZDM0NTJiN2IxMmEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2U4Nzg3ODY1OGYyYzk5NTFhMTRmYzY0MTE0ZDQ5NThjMGU2NWFjNDc1MzBiOGFjMzA3OGIyY2U0MWI2NmEwOSIKKworUEFDS0FHRVMgPSsgImNhaXJvLWdvYmplY3QgY2Fpcm8tc2NyaXB0LWludGVycHJldGVyIGNhaXJvLXBlcmYtdXRpbHMiCisKK1NVTU1BUllfJHtQTn0gPSAiVGhlIENhaXJvIDJEIHZlY3RvciBncmFwaGljcyBsaWJyYXJ5IgorREVTQ1JJUFRJT05fJHtQTn0gPSAiQ2Fpcm8gaXMgYSBtdWx0aS1wbGF0Zm9ybSBsaWJyYXJ5IHByb3ZpZGluZyBhbnRpLWFsaWFzZWQgXAordmVjdG9yLWJhc2VkIHJlbmRlcmluZyBmb3IgbXVsdGlwbGUgdGFyZ2V0IGJhY2tlbmRzLiBQYXRocyBjb25zaXN0IFwKK29mIGxpbmUgc2VnbWVudHMgYW5kIGN1YmljIHNwbGluZXMgYW5kIGNhbiBiZSByZW5kZXJlZCBhdCBhbnkgd2lkdGggXAord2l0aCB2YXJpb3VzIGpvaW4gYW5kIGNhcCBzdHlsZXMuIEFsbCBjb2xvcnMgbWF5IGJlIHNwZWNpZmllZCB3aXRoIFwKK29wdGlvbmFsIHRyYW5zbHVjZW5jZSAob3BhY2l0eS9hbHBoYSkgYW5kIGNvbWJpbmVkIHVzaW5nIHRoZSBcCitleHRlbmRlZCBQb3J0ZXIvRHVmZiBjb21wb3NpdGluZyBhbGdlYnJhIGFzIGZvdW5kIGluIHRoZSBYIFJlbmRlciBcCitFeHRlbnNpb24uIgorCitTVU1NQVJZX2NhaXJvLWdvYmplY3QgPSAiVGhlIENhaXJvIGxpYnJhcnkgR09iamVjdCB3cmFwcGVyIGxpYnJhcnkiCitERVNDUklQVElPTl9jYWlyby1nb2JqZWN0ID0gIkEgR09iamVjdCB3cmFwcGVyIGxpYnJhcnkgZm9yIHRoZSBDYWlybyBBUEkuIgorCitTVU1NQVJZX2NhaXJvLXNjcmlwdC1pbnRlcnByZXRlciA9ICJUaGUgQ2Fpcm8gbGlicmFyeSBzY3JpcHQgaW50ZXJwcmV0ZXIiCitERVNDUklQVElPTl9jYWlyby1zY3JpcHQtaW50ZXJwcmV0ZXIgPSAiVGhlIENhaXJvIHNjcmlwdCBpbnRlcnByZXRlciBpbXBsZW1lbnRzIFwKK0NhaXJvU2NyaXB0LiAgQ2Fpcm9TY3JpcHQgaXMgdXNlZCBieSB0cmFjaW5nIHV0aWxpdGllcyB0byBlbmFibGUgdGhlIGFiaWxpdHkgXAordG8gcmVwbGF5IHJlbmRlcmluZy4iCisKK0RFU0NSSVBUSU9OX2NhaXJvLXBlcmYtdXRpbHMgPSAiVGhlIENhaXJvIGxpYnJhcnkgcGVyZm9ybWFuY2UgdXRpbGl0aWVzIgorCitGSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGliY2Fpcm8uc28uKiIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2NhaXJvLyouc28iCitGSUxFU18ke1BOfS1nb2JqZWN0ID0gIiR7bGliZGlyfS9saWJjYWlyby1nb2JqZWN0LnNvLioiCitGSUxFU18ke1BOfS1zY3JpcHQtaW50ZXJwcmV0ZXIgPSAiJHtsaWJkaXJ9L2xpYmNhaXJvLXNjcmlwdC1pbnRlcnByZXRlci5zby4qIgorRklMRVNfJHtQTn0tcGVyZi11dGlscyA9ICIke2JpbmRpcn0vY2Fpcm8tdHJhY2UgJHtsaWJkaXJ9L2NhaXJvLyoubGEgJHtsaWJkaXJ9L2NhaXJvL2xpYmNhaXJvLXRyYWNlLnNvLioiCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKwlybSAtcmYgJHtEfSR7YmluZGlyfS9jYWlyby1zcGhpbngKKwlybSAtcmYgJHtEfSR7bGliZGlyfS9jYWlyby9jYWlyby1mZHIqCisJcm0gLXJmICR7RH0ke2xpYmRpcn0vY2Fpcm8vY2Fpcm8tc3BoaW54KgorCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2NhaXJvLy5kZWJ1Zy9jYWlyby1mZHIqCisJcm0gLXJmICR7RH0ke2xpYmRpcn0vY2Fpcm8vLmRlYnVnL2NhaXJvLXNwaGlueCoKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2Fpcm8vY2Fpcm9fMS4xNC44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jYWlyby9jYWlyb18xLjE0LjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhM2M3NGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jYWlyby9jYWlyb18xLjE0LjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1yZXF1aXJlIGNhaXJvLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lNzNlOTk5ZTBjNzJiNWFjOTAxMjQyNGZhMTU3YWQ3NyIKLQotU1JDX1VSSSA9ICJodHRwOi8vY2Fpcm9ncmFwaGljcy5vcmcvcmVsZWFzZXMvY2Fpcm8tJHtQVn0udGFyLnh6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNGVmMGRiMmVhY2IyNzFjNzRmOGEzZmQ4NzgyMmFhOTgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDFmMmQ5OGFlOWE0MTExNTY0ZjZkZTRlMDEzZDYzOWNmNzcxNTViYWYyNTU2NTgyMjk1YTBmMDBhOWJjNWUyMCIKLQotUEFDS0FHRVMgPSsgImNhaXJvLWdvYmplY3QgY2Fpcm8tc2NyaXB0LWludGVycHJldGVyIGNhaXJvLXBlcmYtdXRpbHMiCi0KLVNVTU1BUllfJHtQTn0gPSAiVGhlIENhaXJvIDJEIHZlY3RvciBncmFwaGljcyBsaWJyYXJ5IgotREVTQ1JJUFRJT05fJHtQTn0gPSAiQ2Fpcm8gaXMgYSBtdWx0aS1wbGF0Zm9ybSBsaWJyYXJ5IHByb3ZpZGluZyBhbnRpLWFsaWFzZWQgXAotdmVjdG9yLWJhc2VkIHJlbmRlcmluZyBmb3IgbXVsdGlwbGUgdGFyZ2V0IGJhY2tlbmRzLiBQYXRocyBjb25zaXN0IFwKLW9mIGxpbmUgc2VnbWVudHMgYW5kIGN1YmljIHNwbGluZXMgYW5kIGNhbiBiZSByZW5kZXJlZCBhdCBhbnkgd2lkdGggXAotd2l0aCB2YXJpb3VzIGpvaW4gYW5kIGNhcCBzdHlsZXMuIEFsbCBjb2xvcnMgbWF5IGJlIHNwZWNpZmllZCB3aXRoIFwKLW9wdGlvbmFsIHRyYW5zbHVjZW5jZSAob3BhY2l0eS9hbHBoYSkgYW5kIGNvbWJpbmVkIHVzaW5nIHRoZSBcCi1leHRlbmRlZCBQb3J0ZXIvRHVmZiBjb21wb3NpdGluZyBhbGdlYnJhIGFzIGZvdW5kIGluIHRoZSBYIFJlbmRlciBcCi1FeHRlbnNpb24uIgotCi1TVU1NQVJZX2NhaXJvLWdvYmplY3QgPSAiVGhlIENhaXJvIGxpYnJhcnkgR09iamVjdCB3cmFwcGVyIGxpYnJhcnkiCi1ERVNDUklQVElPTl9jYWlyby1nb2JqZWN0ID0gIkEgR09iamVjdCB3cmFwcGVyIGxpYnJhcnkgZm9yIHRoZSBDYWlybyBBUEkuIgotCi1TVU1NQVJZX2NhaXJvLXNjcmlwdC1pbnRlcnByZXRlciA9ICJUaGUgQ2Fpcm8gbGlicmFyeSBzY3JpcHQgaW50ZXJwcmV0ZXIiCi1ERVNDUklQVElPTl9jYWlyby1zY3JpcHQtaW50ZXJwcmV0ZXIgPSAiVGhlIENhaXJvIHNjcmlwdCBpbnRlcnByZXRlciBpbXBsZW1lbnRzIFwKLUNhaXJvU2NyaXB0LiAgQ2Fpcm9TY3JpcHQgaXMgdXNlZCBieSB0cmFjaW5nIHV0aWxpdGllcyB0byBlbmFibGUgdGhlIGFiaWxpdHkgXAotdG8gcmVwbGF5IHJlbmRlcmluZy4iCi0KLURFU0NSSVBUSU9OX2NhaXJvLXBlcmYtdXRpbHMgPSAiVGhlIENhaXJvIGxpYnJhcnkgcGVyZm9ybWFuY2UgdXRpbGl0aWVzIgotCi1GSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGliY2Fpcm8uc28uKiIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2NhaXJvLyouc28iCi1GSUxFU18ke1BOfS1nb2JqZWN0ID0gIiR7bGliZGlyfS9saWJjYWlyby1nb2JqZWN0LnNvLioiCi1GSUxFU18ke1BOfS1zY3JpcHQtaW50ZXJwcmV0ZXIgPSAiJHtsaWJkaXJ9L2xpYmNhaXJvLXNjcmlwdC1pbnRlcnByZXRlci5zby4qIgotRklMRVNfJHtQTn0tcGVyZi11dGlscyA9ICIke2JpbmRpcn0vY2Fpcm8tdHJhY2UgJHtsaWJkaXJ9L2NhaXJvLyoubGEgJHtsaWJkaXJ9L2NhaXJvL2xpYmNhaXJvLXRyYWNlLnNvLioiCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLQlybSAtcmYgJHtEfSR7YmluZGlyfS9jYWlyby1zcGhpbngKLQlybSAtcmYgJHtEfSR7bGliZGlyfS9jYWlyby9jYWlyby1mZHIqCi0Jcm0gLXJmICR7RH0ke2xpYmRpcn0vY2Fpcm8vY2Fpcm8tc3BoaW54KgotCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2NhaXJvLy5kZWJ1Zy9jYWlyby1mZHIqCi0Jcm0gLXJmICR7RH0ke2xpYmRpcn0vY2Fpcm8vLmRlYnVnL2NhaXJvLXNwaGlueCoKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2x1dHRlci9jbHV0dGVyLTEuMF8xLjI2LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci0xLjBfMS4yNi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZmExY2ZlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2x1dHRlci9jbHV0dGVyLTEuMF8xLjI2LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1yZXF1aXJlIGNsdXR0ZXItMS4wLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiYjA2NWU5Y2E1M2QxZjZiYzFlYzI2YWViMjczMzhiYjciCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI2NzUxNGU3ODI0YjNmZWI0NzIzMTY0MDg0YjM2ZDZjZTFhZTQxY2IzYTk4OTdlOWYxYTU2YzgzMzQ5OTNjZTA2IgotU1JDX1VSSSArPSAiZmlsZTovL2luc3RhbGwtZXhhbXBsZXMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3J1bi1pbnN0YWxsZWQtdGVzdHMtd2l0aC10YXAtb3V0cHV0LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlbW92ZS1jbHV0dGVyLnR5cGVzLWFzLWl0LWlzLWJ1aWxkLWNvbmZpZ3VyYXRpb24tc3AucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2x1dHRlci9jbHV0dGVyLTEuMF8xLjI2LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci0xLjBfMS4yNi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4YjA1MDEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci0xLjBfMS4yNi4yLmJiCkBAIC0wLDAgKzEsMTAgQEAKK3JlcXVpcmUgY2x1dHRlci0xLjAuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJhMDM0ODJjYmFjZjczNWVjYThjOTk2ZjIxMGEyMWVlNSIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImU3MjMzMzE0OTgzMDU1ZTkwMThmOTRmNTY4ODJlMjllN2ZjMzRkOGQzNWRlMDMwNzg5ZmRjZDliMmQwZTJlNTYiCitTUkNfVVJJICs9ICJmaWxlOi8vaW5zdGFsbC1leGFtcGxlcy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcnVuLWluc3RhbGxlZC10ZXN0cy13aXRoLXRhcC1vdXRwdXQucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtUmVtb3ZlLWNsdXR0ZXIudHlwZXMtYXMtaXQtaXMtYnVpbGQtY29uZmlndXJhdGlvbi1zcC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItZ3N0LTMuMC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci1nc3QtMy4wLmluYwppbmRleCA0Yzg3Nzk4Li4yNmFlOTFjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci1nc3QtMy4wLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci1nc3QtMy4wLmluYwpAQCAtMTUsMyArMTUsNyBAQAogRklMRVNfJHtQTn0gICAgICAgICAgKz0gIiR7bGliZGlyfS9nc3RyZWFtZXItMS4wL2xpYiouc28iCiBGSUxFU18ke1BOfS1kZXYgICAgICArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKi5sYSIKIEZJTEVTXyR7UE59LWV4YW1wbGVzICA9ICIke2JpbmRpcn0vdmlkZW8tcGxheWVyICR7YmluZGlyfS92aWRlby1zaW5rIgorCisjIE5lZWRzIHRvIGJlIGRpc2FibGUgZHVlIHRvIGEgZGVwZW5kZW5jeSBvbiBnc3RyZWFtZXItcGx1Z2lucyBpbnRyb3NwZWN0aW9uIGZpbGVzCitFWFRSQV9PRUNPTkZfYXBwZW5kX21pcHM2NCA9ICIgLS1kaXNhYmxlLWludHJvc3BlY3Rpb24gIgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci1nc3QtMy4wXzMuMC4yMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2x1dHRlci9jbHV0dGVyLWdzdC0zLjBfMy4wLjIyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MTc3YzkxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2x1dHRlci9jbHV0dGVyLWdzdC0zLjBfMy4wLjIyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1yZXF1aXJlIGNsdXR0ZXItZ3N0LTMuMC5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vY2x1dHRlci1nc3QvY2x1dHRlci1nc3QuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTI0O21kNT05NWJhYWNiYTE5NGU4MTRjMTEwZWEzYmRmMjVkZGJmNCIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiODhlZWEyZGQ1ZmM0MzU3YjViMThmMWRmZWVkNTZjNjIiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJmMWZjNTdmYjMyZWE3ZTNkOTIzNGI1OGRiMzVlYjllZjMwMjhjZjBiMjY2ZDg1MjM1Zjk1OWVkYzBmZTNkZmQ0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItZ3N0LTMuMF8zLjAuMjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci1nc3QtMy4wXzMuMC4yNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYTVlMGFlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItZ3N0LTMuMF8zLjAuMjQuYmIKQEAgLTAsMCArMSw3IEBACityZXF1aXJlIGNsdXR0ZXItZ3N0LTMuMC5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vY2x1dHRlci1nc3QvY2x1dHRlci1nc3QuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTI0O21kNT05NWJhYWNiYTE5NGU4MTRjMTEwZWEzYmRmMjVkZGJmNCIKKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiM2UxNDVlMjRiYjNjMzQwZWVlZGRhZmQxOGVmZTU0N2QiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJlOWYxYzg3ZDhmNGM0NzA2MmU5NTJmYjgwMDg3MDRmODk0MmNmMmQ2ZjI5MDY4OGYzZjdkMTNlODM1NzhjYzZjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kcm0vbGliZHJtXzIuNC43NS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybV8yLjQuNzUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2OTYzZDQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kcm0vbGliZHJtXzIuNC43NS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLVNVTU1BUlkgPSAiVXNlcnNwYWNlIGludGVyZmFjZSB0byB0aGUga2VybmVsIERSTSBzZXJ2aWNlcyIKLURFU0NSSVBUSU9OID0gIlRoZSBydW50aW1lIGxpYnJhcnkgZm9yIGFjY2Vzc2luZyB0aGUga2VybmVsIERSTSBzZXJ2aWNlcy4gIERSTSBcCi1zdGFuZHMgZm9yIFwiRGlyZWN0IFJlbmRlcmluZyBNYW5hZ2VyXCIsIHdoaWNoIGlzIHRoZSBrZXJuZWwgcG9ydGlvbiBvZiB0aGUgXAotXCJEaXJlY3QgUmVuZGVyaW5nIEluZnJhc3RydWN0dXJlXCIgKERSSSkuICBEUkkgaXMgcmVxdWlyZWQgZm9yIG1hbnkgaGFyZHdhcmUgXAotYWNjZWxlcmF0ZWQgT3BlbkdMIGRyaXZlcnMuIgotSE9NRVBBR0UgPSAiaHR0cDovL2RyaS5mcmVlZGVza3RvcC5vcmciCi1TRUNUSU9OID0gIngxMS9iYXNlIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly94Zjg2ZHJtLmM7YmVnaW5saW5lPTk7ZW5kbGluZT0zMjttZDU9YzhhM2I5NjFhZjc2NjdjNTMwODE2NzYxZTk0OWRjNzEiCi1QUk9WSURFUyA9ICJkcm0iCi1ERVBFTkRTID0gImxpYnB0aHJlYWQtc3R1YnMgbGlicGNpYWNjZXNzIgotCi1TUkNfVVJJID0gImh0dHA6Ly9kcmkuZnJlZWRlc2t0b3Aub3JnL2xpYmRybS8ke0JQfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL2luc3RhbGx0ZXN0cy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXhfT19DTE9FWEVDX3VuZGVjbGFyZWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtQWxsb3ctZXhwbGljaXQtZW5hYmxpbmctb2YtY3VuaXQtdGVzdHMucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjU3YjA1ODkxMjJlYzRiOGQ1ZGZiOWU0MzBhMjFmMGIzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJkNWE1MDBlZWY0MTJjYzI4N2QxMjI2OGVlZDc5ZDU3MWUyNjJkNDk1N2EyZWM5MjU4MDczZjMwNTk4NTA1NGYiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBtYW5wYWdlcwotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1jYWlyby10ZXN0cyBcCi0gICAgICAgICAgICAgICAgIC0td2l0aG91dC1jdW5pdCBcCi0gICAgICAgICAgICAgICAgIC0tZW5hYmxlLW9tYXAtZXhwZXJpbWVudGFsLWFwaSBcCi0gICAgICAgICAgICAgICAgIC0tZW5hYmxlLWV0bmF2aXYtZXhwZXJpbWVudGFsLWFwaSBcCi0gICAgICAgICAgICAgICAgIC0tZW5hYmxlLWluc3RhbGwtdGVzdC1wcm9ncmFtcyBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS12YWxncmluZCBcCi0gICAgICAgICAgICAgICAgIgotUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLS1lbmFibGUtbWFucGFnZXMsIC0tZGlzYWJsZS1tYW5wYWdlcywgbGlieHNsdC1uYXRpdmUgeG1sdG8tbmF0aXZlIgotCi1BTExPV19FTVBUWV8ke1BOfS1kcml2ZXJzID0gIjEiCi1QQUNLQUdFUyA9KyAiJHtQTn0tdGVzdHMgJHtQTn0tZHJpdmVycyAke1BOfS1yYWRlb24gJHtQTn0tbm91dmVhdSAke1BOfS1vbWFwIFwKLSAgICAgICAgICAgICAke1BOfS1pbnRlbCAke1BOfS1leHlub3MgJHtQTn0ta21zICR7UE59LWZyZWVkcmVubyAke1BOfS1hbWRncHUgXAotICAgICAgICAgICAgICR7UE59LWV0bmF2aXYiCi0KLVJSRUNPTU1FTkRTXyR7UE59LWRyaXZlcnMgPSAiJHtQTn0tcmFkZW9uICR7UE59LW5vdXZlYXUgJHtQTn0tb21hcCAke1BOfS1pbnRlbCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7UE59LWV4eW5vcyAke1BOfS1mcmVlZHJlbm8gJHtQTn0tYW1kZ3B1IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXRuYXZpdiIKLQotRklMRVNfJHtQTn0tdGVzdHMgPSAiJHtiaW5kaXJ9LyoiCi1GSUxFU18ke1BOfS1yYWRlb24gPSAiJHtsaWJkaXJ9L2xpYmRybV9yYWRlb24uc28uKiIKLUZJTEVTXyR7UE59LW5vdXZlYXUgPSAiJHtsaWJkaXJ9L2xpYmRybV9ub3V2ZWF1LnNvLioiCi1GSUxFU18ke1BOfS1vbWFwID0gIiR7bGliZGlyfS9saWJkcm1fb21hcC5zby4qIgotRklMRVNfJHtQTn0taW50ZWwgPSAiJHtsaWJkaXJ9L2xpYmRybV9pbnRlbC5zby4qIgotRklMRVNfJHtQTn0tZXh5bm9zID0gIiR7bGliZGlyfS9saWJkcm1fZXh5bm9zLnNvLioiCi1GSUxFU18ke1BOfS1rbXMgPSAiJHtsaWJkaXJ9L2xpYmttcyouc28uKiIKLUZJTEVTXyR7UE59LWZyZWVkcmVubyA9ICIke2xpYmRpcn0vbGliZHJtX2ZyZWVkcmVuby5zby4qIgotRklMRVNfJHtQTn0tYW1kZ3B1ID0gIiR7bGliZGlyfS9saWJkcm1fYW1kZ3B1LnNvLioiCi1GSUxFU18ke1BOfS1ldG5hdml2ID0gIiR7bGliZGlyfS9saWJkcm1fZXRuYXZpdi5zby4qIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kcm0vbGliZHJtXzIuNC44My5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybV8yLjQuODMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTVjYjc1YwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybV8yLjQuODMuYmIKQEAgLTAsMCArMSw1MSBAQAorU1VNTUFSWSA9ICJVc2Vyc3BhY2UgaW50ZXJmYWNlIHRvIHRoZSBrZXJuZWwgRFJNIHNlcnZpY2VzIgorREVTQ1JJUFRJT04gPSAiVGhlIHJ1bnRpbWUgbGlicmFyeSBmb3IgYWNjZXNzaW5nIHRoZSBrZXJuZWwgRFJNIHNlcnZpY2VzLiAgRFJNIFwKK3N0YW5kcyBmb3IgXCJEaXJlY3QgUmVuZGVyaW5nIE1hbmFnZXJcIiwgd2hpY2ggaXMgdGhlIGtlcm5lbCBwb3J0aW9uIG9mIHRoZSBcCitcIkRpcmVjdCBSZW5kZXJpbmcgSW5mcmFzdHJ1Y3R1cmVcIiAoRFJJKS4gIERSSSBpcyByZXF1aXJlZCBmb3IgbWFueSBoYXJkd2FyZSBcCithY2NlbGVyYXRlZCBPcGVuR0wgZHJpdmVycy4iCitIT01FUEFHRSA9ICJodHRwOi8vZHJpLmZyZWVkZXNrdG9wLm9yZyIKK1NFQ1RJT04gPSAieDExL2Jhc2UiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3hmODZkcm0uYztiZWdpbmxpbmU9OTtlbmRsaW5lPTMyO21kNT1jOGEzYjk2MWFmNzY2N2M1MzA4MTY3NjFlOTQ5ZGM3MSIKK1BST1ZJREVTID0gImRybSIKK0RFUEVORFMgPSAibGlicHRocmVhZC1zdHVicyBsaWJwY2lhY2Nlc3MiCisKK1NSQ19VUkkgPSAiaHR0cDovL2RyaS5mcmVlZGVza3RvcC5vcmcvbGliZHJtLyR7QlB9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vaW5zdGFsbHRlc3RzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeF9PX0NMT0VYRUNfdW5kZWNsYXJlZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1BbGxvdy1leHBsaWNpdC1lbmFibGluZy1vZi1jdW5pdC10ZXN0cy5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMjM4MDA5NTNlZDc1NjQ5ODg4NzJlMWU4YzYxZmRlMzEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDNhNTI2NjlkYTYwZWFkNjI1NDhhMzViYzQzMGFhZmI2YzJkOGRkMjFlYzlkYmEzYTkwZjk2ZWZmNWZlMzZkNiIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIG1hbnBhZ2VzCisKK0VYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLWNhaXJvLXRlc3RzIFwKKyAgICAgICAgICAgICAgICAgLS13aXRob3V0LWN1bml0IFwKKyAgICAgICAgICAgICAgICAgLS1lbmFibGUtb21hcC1leHBlcmltZW50YWwtYXBpIFwKKyAgICAgICAgICAgICAgICAgLS1lbmFibGUtZXRuYXZpdi1leHBlcmltZW50YWwtYXBpIFwKKyAgICAgICAgICAgICAgICAgLS1lbmFibGUtaW5zdGFsbC10ZXN0LXByb2dyYW1zIFwKKyAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXZhbGdyaW5kIFwKKyAgICAgICAgICAgICAgICAiCitQQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLWVuYWJsZS1tYW5wYWdlcywgLS1kaXNhYmxlLW1hbnBhZ2VzLCBsaWJ4c2x0LW5hdGl2ZSB4bWx0by1uYXRpdmUiCisKK0FMTE9XX0VNUFRZXyR7UE59LWRyaXZlcnMgPSAiMSIKK1BBQ0tBR0VTID0rICIke1BOfS10ZXN0cyAke1BOfS1kcml2ZXJzICR7UE59LXJhZGVvbiAke1BOfS1ub3V2ZWF1ICR7UE59LW9tYXAgXAorICAgICAgICAgICAgICR7UE59LWludGVsICR7UE59LWV4eW5vcyAke1BOfS1rbXMgJHtQTn0tZnJlZWRyZW5vICR7UE59LWFtZGdwdSBcCisgICAgICAgICAgICAgJHtQTn0tZXRuYXZpdiIKKworUlJFQ09NTUVORFNfJHtQTn0tZHJpdmVycyA9ICIke1BOfS1yYWRlb24gJHtQTn0tbm91dmVhdSAke1BOfS1vbWFwICR7UE59LWludGVsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh5bm9zICR7UE59LWZyZWVkcmVubyAke1BOfS1hbWRncHUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke1BOfS1ldG5hdml2IgorCitGSUxFU18ke1BOfS10ZXN0cyA9ICIke2JpbmRpcn0vKiIKK0ZJTEVTXyR7UE59LXJhZGVvbiA9ICIke2xpYmRpcn0vbGliZHJtX3JhZGVvbi5zby4qIgorRklMRVNfJHtQTn0tbm91dmVhdSA9ICIke2xpYmRpcn0vbGliZHJtX25vdXZlYXUuc28uKiIKK0ZJTEVTXyR7UE59LW9tYXAgPSAiJHtsaWJkaXJ9L2xpYmRybV9vbWFwLnNvLioiCitGSUxFU18ke1BOfS1pbnRlbCA9ICIke2xpYmRpcn0vbGliZHJtX2ludGVsLnNvLioiCitGSUxFU18ke1BOfS1leHlub3MgPSAiJHtsaWJkaXJ9L2xpYmRybV9leHlub3Muc28uKiIKK0ZJTEVTXyR7UE59LWttcyA9ICIke2xpYmRpcn0vbGlia21zKi5zby4qIgorRklMRVNfJHtQTn0tZnJlZWRyZW5vID0gIiR7bGliZGlyfS9saWJkcm1fZnJlZWRyZW5vLnNvLioiCitGSUxFU18ke1BOfS1hbWRncHUgPSAiJHtsaWJkaXJ9L2xpYmRybV9hbWRncHUuc28uKiIKK0ZJTEVTXyR7UE59LWV0bmF2aXYgPSAiJHtsaWJkaXJ9L2xpYmRybV9ldG5hdml2LnNvLioiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZvbnRjb25maWcvZm9udGNvbmZpZy8wMDAxLUF2b2lkLWNvbmZsaWN0cy13aXRoLWludGVnZXItd2lkdGgtbWFjcm9zLWZyb20tVFMtMTgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZvbnRjb25maWcvZm9udGNvbmZpZy8wMDAxLUF2b2lkLWNvbmZsaWN0cy13aXRoLWludGVnZXItd2lkdGgtbWFjcm9zLWZyb20tVFMtMTgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhZDcxNzAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mb250Y29uZmlnL2ZvbnRjb25maWcvMDAwMS1Bdm9pZC1jb25mbGljdHMtd2l0aC1pbnRlZ2VyLXdpZHRoLW1hY3Jvcy1mcm9tLVRTLTE4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotRnJvbSAyMGNkZGM4MjRjNjUwMWMyMDgyY2FjNDFiMTYyYzM0Y2Q1ZmNjNTMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFN1biwgMTEgRGVjIDIwMTYgMTQ6MzI6MDAgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gQXZvaWQgY29uZmxpY3RzIHdpdGggaW50ZWdlciB3aWR0aCBtYWNyb3MgZnJvbSBUUwotIDE4NjYxLTE6MjAxNAotCi1nbGliYyAyLjI1KyBoYXMgbm93IGRlZmluZWQgdGhlc2UgbWFjcm9zIGluIDxsaW1pdHMuaD4KLWh0dHBzOi8vc291cmNld2FyZS5vcmcvZ2l0Lz9wPWdsaWJjLmdpdDthPWNvbW1pdDtoPTViMTdmZDBkYTYyYmY5MjNjYjYxZDFiYjdiMDhjZjJlMWYxZjljMWEKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKLQotIGZvbnRjb25maWcvZm9udGNvbmZpZy5oIHwgMiArLQotIHNyYy9mY29ianMuaCAgICAgICAgICAgIHwgMiArLQotIHNyYy9mY29ianNoYXNoLmdwZXJmICAgIHwgMiArLQotIHNyYy9mY29ianNoYXNoLmggICAgICAgIHwgMiArLQotIDQgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1JbmRleDogZm9udGNvbmZpZy0yLjEyLjEvZm9udGNvbmZpZy9mb250Y29uZmlnLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmb250Y29uZmlnLTIuMTIuMS5vcmlnL2ZvbnRjb25maWcvZm9udGNvbmZpZy5oCi0rKysgZm9udGNvbmZpZy0yLjEyLjEvZm9udGNvbmZpZy9mb250Y29uZmlnLmgKLUBAIC0xMjgsNyArMTI4LDggQEAgdHlwZWRlZiBpbnQJCUZjQm9vbDsKLSAjZGVmaW5lIEZDX1VTRVJfQ0FDSEVfRklMRQkgICAgIi5mb250cy5jYWNoZS0iIEZDX0NBQ0hFX1ZFUlNJT04KLSAKLSAvKiBBZGp1c3Qgb3V0bGluZSByYXN0ZXJpemVyICovCi0tI2RlZmluZSBGQ19DSEFSX1dJRFRICSAgICAiY2hhcndpZHRoIgkvKiBJbnQgKi8KLSsjZGVmaW5lIEZDX0NIQVJXSURUSAkgICAgImNoYXJ3aWR0aCIJLyogSW50ICovCi0rI2RlZmluZSBGQ19DSEFSX1dJRFRICSAgICBGQ19DSEFSV0lEVEgKLSAjZGVmaW5lIEZDX0NIQVJfSEVJR0hUCSAgICAiY2hhcmhlaWdodCIvKiBJbnQgKi8KLSAjZGVmaW5lIEZDX01BVFJJWAkgICAgIm1hdHJpeCIgICAgLyogRmNNYXRyaXggKi8KLSAKLUluZGV4OiBmb250Y29uZmlnLTIuMTIuMS9zcmMvZmNvYmpzLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmb250Y29uZmlnLTIuMTIuMS5vcmlnL3NyYy9mY29ianMuaAotKysrIGZvbnRjb25maWctMi4xMi4xL3NyYy9mY29ianMuaAotQEAgLTUxLDcgKzUxLDcgQEAgRkNfT0JKRUNUIChEUEksCQkJRmNUeXBlRG91YmxlLAlOVUxMKQotIEZDX09CSkVDVCAoUkdCQSwJCUZjVHlwZUludGVnZXIsCU5VTEwpCi0gRkNfT0JKRUNUIChTQ0FMRSwJCUZjVHlwZURvdWJsZSwJTlVMTCkKLSBGQ19PQkpFQ1QgKE1JTlNQQUNFLAkJRmNUeXBlQm9vbCwJTlVMTCkKLS1GQ19PQkpFQ1QgKENIQVJfV0lEVEgsCQlGY1R5cGVJbnRlZ2VyLAlOVUxMKQotK0ZDX09CSkVDVCAoQ0hBUldJRFRILAkJRmNUeXBlSW50ZWdlciwJTlVMTCkKLSBGQ19PQkpFQ1QgKENIQVJfSEVJR0hULAkJRmNUeXBlSW50ZWdlciwJTlVMTCkKLSBGQ19PQkpFQ1QgKE1BVFJJWCwJCUZjVHlwZU1hdHJpeCwJTlVMTCkKLSBGQ19PQkpFQ1QgKENIQVJTRVQsCQlGY1R5cGVDaGFyU2V0LAlGY0NvbXBhcmVDaGFyU2V0KQotSW5kZXg6IGZvbnRjb25maWctMi4xMi4xL3NyYy9mY29ianNoYXNoLmdwZXJmCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZm9udGNvbmZpZy0yLjEyLjEub3JpZy9zcmMvZmNvYmpzaGFzaC5ncGVyZgotKysrIGZvbnRjb25maWctMi4xMi4xL3NyYy9mY29ianNoYXNoLmdwZXJmCi1AQCAtNDQsNyArNDQsNyBAQCBpbnQgaWQ7Ci0gInJnYmEiLEZDX1JHQkFfT0JKRUNUCi0gInNjYWxlIixGQ19TQ0FMRV9PQkpFQ1QKLSAibWluc3BhY2UiLEZDX01JTlNQQUNFX09CSkVDVAotLSJjaGFyd2lkdGgiLEZDX0NIQVJfV0lEVEhfT0JKRUNUCi0rImNoYXJ3aWR0aCIsRkNfQ0hBUldJRFRIX09CSkVDVAotICJjaGFyaGVpZ2h0IixGQ19DSEFSX0hFSUdIVF9PQkpFQ1QKLSAibWF0cml4IixGQ19NQVRSSVhfT0JKRUNUCi0gImNoYXJzZXQiLEZDX0NIQVJTRVRfT0JKRUNUCi1JbmRleDogZm9udGNvbmZpZy0yLjEyLjEvc3JjL2Zjb2Jqc2hhc2guaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGZvbnRjb25maWctMi4xMi4xLm9yaWcvc3JjL2Zjb2Jqc2hhc2guaAotKysrIGZvbnRjb25maWctMi4xMi4xL3NyYy9mY29ianNoYXNoLmgKLUBAIC0yODQsNyArMjg0LDcgQEAgRmNPYmplY3RUeXBlTG9va3VwIChyZWdpc3RlciBjb25zdCBjaGFyCi0gICAgICAgeyhpbnQpKGxvbmcpJigoc3RydWN0IEZjT2JqZWN0VHlwZU5hbWVQb29sX3QgKikwKS0+RmNPYmplY3RUeXBlTmFtZVBvb2xfc3RyNDMsRkNfQ0hBUlNFVF9PQkpFQ1R9LAotICAgICAgIHstMX0sCi0gI2xpbmUgNDcgImZjb2Jqc2hhc2guZ3BlcmYiCi0tICAgICAgeyhpbnQpKGxvbmcpJigoc3RydWN0IEZjT2JqZWN0VHlwZU5hbWVQb29sX3QgKikwKS0+RmNPYmplY3RUeXBlTmFtZVBvb2xfc3RyNDUsRkNfQ0hBUl9XSURUSF9PQkpFQ1R9LAotKyAgICAgIHsoaW50KShsb25nKSYoKHN0cnVjdCBGY09iamVjdFR5cGVOYW1lUG9vbF90ICopMCktPkZjT2JqZWN0VHlwZU5hbWVQb29sX3N0cjQ1LEZDX0NIQVJXSURUSF9PQkpFQ1R9LAotICNsaW5lIDQ4ICJmY29ianNoYXNoLmdwZXJmIgotICAgICAgIHsoaW50KShsb25nKSYoKHN0cnVjdCBGY09iamVjdFR5cGVOYW1lUG9vbF90ICopMCktPkZjT2JqZWN0VHlwZU5hbWVQb29sX3N0cjQ2LEZDX0NIQVJfSEVJR0hUX09CSkVDVH0sCi0gI2xpbmUgNTUgImZjb2Jqc2hhc2guZ3BlcmYiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZvbnRjb25maWcvZm9udGNvbmZpZ18yLjEyLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZvbnRjb25maWcvZm9udGNvbmZpZ18yLjEyLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1YjA2NmMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mb250Y29uZmlnL2ZvbnRjb25maWdfMi4xMi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotU1VNTUFSWSA9ICJHZW5lcmljIGZvbnQgY29uZmlndXJhdGlvbiBsaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAiRm9udGNvbmZpZyBpcyBhIGZvbnQgY29uZmlndXJhdGlvbiBhbmQgY3VzdG9taXphdGlvbiBsaWJyYXJ5LCB3aGljaCBcCi1kb2VzIG5vdCBkZXBlbmQgb24gdGhlIFggV2luZG93IFN5c3RlbS4gSXQgaXMgZGVzaWduZWQgdG8gbG9jYXRlIFwKLWZvbnRzIHdpdGhpbiB0aGUgc3lzdGVtIGFuZCBzZWxlY3QgdGhlbSBhY2NvcmRpbmcgdG8gcmVxdWlyZW1lbnRzIFwKLXNwZWNpZmllZCBieSBhcHBsaWNhdGlvbnMuIFwKLUZvbnRjb25maWcgaXMgbm90IGEgcmFzdGVyaXphdGlvbiBsaWJyYXJ5LCBub3IgZG9lcyBpdCBpbXBvc2UgYSBcCi1wYXJ0aWN1bGFyIHJhc3Rlcml6YXRpb24gbGlicmFyeSBvbiB0aGUgYXBwbGljYXRpb24uIFRoZSBYLXNwZWNpZmljIFwKLWxpYnJhcnkgJ1hmdCcgdXNlcyBmb250Y29uZmlnIGFsb25nIHdpdGggZnJlZXR5cGUgdG8gc3BlY2lmeSBhbmQgXAotcmFzdGVyaXplIGZvbnRzLiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mb250Y29uZmlnLm9yZyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9Zm9udGNvbmZpZyIKLQotTElDRU5TRSA9ICJNSVQtc3R5bGUgJiBNSVQgJiBQRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTdhMDQ0OWU5YmM1MzcwNDAyYTk0YzAwMjA0YmVjYTNkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9mY2ZyZWV0eXBlLmM7ZW5kbGluZT00NTttZDU9NWQ5NTEzZTMxOTZhMWZiZmRmYTk0MDUxYzA5ZGZjODQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2ZjY2FjaGUuYztiZWdpbmxpbmU9MTM2MDtlbmRsaW5lPTEzNzU7bWQ1PTAzMjZjZmViNGE3MzMzZGQ0ZGQyNWZiYmM0YjlmMjdmIgotCi1TRUNUSU9OID0gImxpYnMiCi0KLURFUEVORFMgPSAiZXhwYXQgZnJlZXR5cGUgemxpYiIKLQotU1JDX1VSSSA9ICJodHRwOi8vZm9udGNvbmZpZy5vcmcvcmVsZWFzZS9mb250Y29uZmlnLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9yZXZlcnQtc3RhdGljLXBrZ2NvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUF2b2lkLWNvbmZsaWN0cy13aXRoLWludGVnZXItd2lkdGgtbWFjcm9zLWZyb20tVFMtMTgucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiY2U1NWU1MjVjMzcxNDdlZWUxNGNjMmRlNmNjMDlmNmMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTlmNDJkMDM5NDlmOTQ4YTNhNGY3NjIyODdkYmMxNmU1M2E5MjdjOTFhMDdlZTY0MjA3ZWJkOTBhOWU1ZTI5MiIKLQotUEFDS0FHRVMgPSsgImZvbnRjb25maWctdXRpbHMiCi1GSUxFU18ke1BOfSA9KyAiJHtkYXRhZGlyfS94bWwvKiIKLUZJTEVTX2ZvbnRjb25maWctdXRpbHMgPSAiJHtiaW5kaXJ9LyoiCi0KLSMgV29yayBhcm91bmQgcGFzdCBicmVha2FnZSBpbiBkZWJpYW4uYmJjbGFzcwotUlBST1ZJREVTX2ZvbnRjb25maWctdXRpbHMgPSAibGliZm9udGNvbmZpZy11dGlscyIKLVJSRVBMQUNFU19mb250Y29uZmlnLXV0aWxzID0gImxpYmZvbnRjb25maWctdXRpbHMiCi1SQ09ORkxJQ1RTX2ZvbnRjb25maWctdXRpbHMgPSAibGliZm9udGNvbmZpZy11dGlscyIKLURFQklBTl9OT0FVVE9OQU1FX2ZvbnRjb25maWctdXRpbHMgPSAiMSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHJlbGF0aXZlX3N5bWxpbmtzCi0KLUZPTlRDT05GSUdfQ0FDSEVfRElSID89ICIke2xvY2Fsc3RhdGVkaXJ9L2NhY2hlL2ZvbnRjb25maWciCi0KLSMgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgYWRkaXRpb25hbCBkaXJlY3RvcmllcwotIyAvdXNyL3NoYXJlL2ZvbnRzIGlzIGFscmVhZHkgaW5jbHVkZWQgYnkgZGVmYXVsdCAoeW91IGNhbiBjaGFuZ2UgaXQgd2l0aCAtLXdpdGgtZGVmYXVsdC1mb250cykKLUZPTlRDT05GSUdfRk9OVF9ESVJTID89ICJubyIKLQotRVhUUkFfT0VDT05GID0gIiAtLWRpc2FibGUtZG9jcyAtLXdpdGgtZGVmYXVsdC1mb250cz0ke2RhdGFkaXJ9L2ZvbnRzIC0td2l0aC1jYWNoZS1kaXI9JHtGT05UQ09ORklHX0NBQ0hFX0RJUn0gLS13aXRoLWFkZC1mb250cz0ke0ZPTlRDT05GSUdfRk9OVF9ESVJTfSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZvbnRjb25maWcvZm9udGNvbmZpZ18yLjEyLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZvbnRjb25maWcvZm9udGNvbmZpZ18yLjEyLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTA1OGIzNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZm9udGNvbmZpZy9mb250Y29uZmlnXzIuMTIuNC5iYgpAQCAtMCwwICsxLDU0IEBACitTVU1NQVJZID0gIkdlbmVyaWMgZm9udCBjb25maWd1cmF0aW9uIGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJGb250Y29uZmlnIGlzIGEgZm9udCBjb25maWd1cmF0aW9uIGFuZCBjdXN0b21pemF0aW9uIGxpYnJhcnksIHdoaWNoIFwKK2RvZXMgbm90IGRlcGVuZCBvbiB0aGUgWCBXaW5kb3cgU3lzdGVtLiBJdCBpcyBkZXNpZ25lZCB0byBsb2NhdGUgXAorZm9udHMgd2l0aGluIHRoZSBzeXN0ZW0gYW5kIHNlbGVjdCB0aGVtIGFjY29yZGluZyB0byByZXF1aXJlbWVudHMgXAorc3BlY2lmaWVkIGJ5IGFwcGxpY2F0aW9ucy4gXAorRm9udGNvbmZpZyBpcyBub3QgYSByYXN0ZXJpemF0aW9uIGxpYnJhcnksIG5vciBkb2VzIGl0IGltcG9zZSBhIFwKK3BhcnRpY3VsYXIgcmFzdGVyaXphdGlvbiBsaWJyYXJ5IG9uIHRoZSBhcHBsaWNhdGlvbi4gVGhlIFgtc3BlY2lmaWMgXAorbGlicmFyeSAnWGZ0JyB1c2VzIGZvbnRjb25maWcgYWxvbmcgd2l0aCBmcmVldHlwZSB0byBzcGVjaWZ5IGFuZCBcCityYXN0ZXJpemUgZm9udHMuIgorCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmZvbnRjb25maWcub3JnIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD1mb250Y29uZmlnIgorCitMSUNFTlNFID0gIk1JVC1zdHlsZSAmIE1JVCAmIFBEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9N2EwNDQ5ZTliYzUzNzA0MDJhOTRjMDAyMDRiZWNhM2QgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2ZjZnJlZXR5cGUuYztlbmRsaW5lPTQ1O21kNT01ZDk1MTNlMzE5NmExZmJmZGZhOTQwNTFjMDlkZmM4NCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvZmNjYWNoZS5jO2JlZ2lubGluZT0xMzY3O2VuZGxpbmU9MTM4MjttZDU9MDMyNmNmZWI0YTczMzNkZDRkZDI1ZmJiYzRiOWYyN2YiCisKK1NFQ1RJT04gPSAibGlicyIKKworREVQRU5EUyA9ICJleHBhdCBmcmVldHlwZSB6bGliIGdwZXJmLW5hdGl2ZSIKKworU1JDX1VSSSA9ICJodHRwOi8vZm9udGNvbmZpZy5vcmcvcmVsZWFzZS9mb250Y29uZmlnLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9yZXZlcnQtc3RhdGljLXBrZ2NvbmZpZy5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI0ZmIwMWZjM2Y0MTc2MGM0MWM2OWUzN2NjNzg0YjY1OCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmZDVhNmE2NjNmNGM0YTAwZTE5NjUyMzkwMjYyNjY1NGRkMGM0YTc4Njg2Y2JjNmU0NzJmMzM4ZTUwZmRmODA2IgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICAjIHdvcmsgYXJvdW5kIGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTI4MAorICAgIHJtIC1mICR7U30vc3JjL2Zjb2Jqc2hhc2guaCAke1N9L3NyYy9mY29ianNoYXNoLmdwZXJmCit9CisKK1BBQ0tBR0VTID0rICJmb250Y29uZmlnLXV0aWxzIgorRklMRVNfJHtQTn0gPSsgIiR7ZGF0YWRpcn0veG1sLyoiCitGSUxFU19mb250Y29uZmlnLXV0aWxzID0gIiR7YmluZGlyfS8qIgorCisjIFdvcmsgYXJvdW5kIHBhc3QgYnJlYWthZ2UgaW4gZGViaWFuLmJiY2xhc3MKK1JQUk9WSURFU19mb250Y29uZmlnLXV0aWxzID0gImxpYmZvbnRjb25maWctdXRpbHMiCitSUkVQTEFDRVNfZm9udGNvbmZpZy11dGlscyA9ICJsaWJmb250Y29uZmlnLXV0aWxzIgorUkNPTkZMSUNUU19mb250Y29uZmlnLXV0aWxzID0gImxpYmZvbnRjb25maWctdXRpbHMiCitERUJJQU5fTk9BVVRPTkFNRV9mb250Y29uZmlnLXV0aWxzID0gIjEiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyByZWxhdGl2ZV9zeW1saW5rcworCitGT05UQ09ORklHX0NBQ0hFX0RJUiA/PSAiJHtsb2NhbHN0YXRlZGlyfS9jYWNoZS9mb250Y29uZmlnIgorCisjIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIGFkZGl0aW9uYWwgZGlyZWN0b3JpZXMKKyMgL3Vzci9zaGFyZS9mb250cyBpcyBhbHJlYWR5IGluY2x1ZGVkIGJ5IGRlZmF1bHQgKHlvdSBjYW4gY2hhbmdlIGl0IHdpdGggLS13aXRoLWRlZmF1bHQtZm9udHMpCitGT05UQ09ORklHX0ZPTlRfRElSUyA/PSAibm8iCisKK0VYVFJBX09FQ09ORiA9ICIgLS1kaXNhYmxlLWRvY3MgLS13aXRoLWRlZmF1bHQtZm9udHM9JHtkYXRhZGlyfS9mb250cyAtLXdpdGgtY2FjaGUtZGlyPSR7Rk9OVENPTkZJR19DQUNIRV9ESVJ9IC0td2l0aC1hZGQtZm9udHM9JHtGT05UQ09ORklHX0ZPTlRfRElSU30iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mcmVldHlwZS9mcmVldHlwZV8yLjcuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZnJlZXR5cGUvZnJlZXR5cGVfMi43LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0NGY4MzUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mcmVldHlwZS9mcmVldHlwZV8yLjcuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLVNVTU1BUlkgPSAiRnJlZXR5cGUgZm9udCByZW5kZXJpbmcgbGlicmFyeSIKLURFU0NSSVBUSU9OID0gIkZyZWVUeXBlIGlzIGEgc29mdHdhcmUgZm9udCBlbmdpbmUgdGhhdCBpcyBkZXNpZ25lZCB0byBiZSBzbWFsbCwgZWZmaWNpZW50LCBcCi1oaWdobHkgY3VzdG9taXphYmxlLCBhbmQgcG9ydGFibGUgd2hpbGUgY2FwYWJsZSBvZiBwcm9kdWNpbmcgaGlnaC1xdWFsaXR5IG91dHB1dCAoZ2x5cGggXAotaW1hZ2VzKS4gSXQgY2FuIGJlIHVzZWQgaW4gZ3JhcGhpY3MgbGlicmFyaWVzLCBkaXNwbGF5IHNlcnZlcnMsIGZvbnQgY29udmVyc2lvbiB0b29scywgdGV4dCBcCi1pbWFnZSBnZW5lcmF0aW9uIHRvb2xzLCBhbmQgbWFueSBvdGhlciBwcm9kdWN0cyBhcyB3ZWxsLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZnJlZXR5cGUub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9zYXZhbm5haC5ub25nbnUub3JnL2J1Z3MvP2dyb3VwPWZyZWV0eXBlIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIkZyZWVUeXBlIHwgR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZG9jcy9MSUNFTlNFLlRYVDttZDU9NGFmNjIyMTUwNmYyMDI3NzRlZjc0ZjY0OTMyODc4YTEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jcy9GVEwuVFhUO21kNT0xM2IyNTQxMzI3NGM5YjNiMDliNjNlNDAyODIxNmZmNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kb2NzL0dQTHYyLlRYVDttZDU9OGVmMzgwNDc2ZjY0MmMyMGViZjQwZmVjYjBhZGQyZWMiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2ZyZWV0eXBlL2ZyZWV0eXBlLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vdXNlLXJpZ2h0LWxpYnRvb2wucGF0Y2giCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2ZyZWV0eXBlL2ZpbGVzL2ZyZWV0eXBlMi8iCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKykiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJiMzIzMDExMGUwY2FiNzc3ZTBkZjc2MzE4MzdhYzM2ZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzYTNiYjJjNGUxNWZmYjQzM2YyMDMyZjUwYTViNWE5MjU1ODIwNjgyMmUyMmJmZThjYmUzMzlhZjRhYTgyZjg4IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgYmluY29uZmlnLWRpc2FibGVkIG11bHRpbGliX2hlYWRlcgotCi0jIEFkYXB0IGF1dG90b29scyB0byB3b3JrIHdpdGggdGhlIG1pbmltYWwgYXV0b2NvbmYgdXNhZ2UgaW4gZnJlZXR5cGUKLUFVVE9UT09MU19TQ1JJUFRfUEFUSCA9ICIke1N9L2J1aWxkcy91bml4IgotQ09ORklHVVJFX1NDUklQVCA9ICIke1N9L2NvbmZpZ3VyZSIKLUVYVFJBX0FVVE9SRUNPTkYgKz0gIi0tZXhjbHVkZT1hdXRvaGVhZGVyIC0tZXhjbHVkZT1hdXRvbWFrZSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gInpsaWIiCi0KLVBBQ0tBR0VDT05GSUdbYnppcDJdID0gIi0td2l0aC1iemlwMiwtLXdpdGhvdXQtYnppcDIsYnppcDIiCi0jIGhhcmZidXp6IHJlc3VsdHMgaW4gYSBjaXJjdWxhciBkZXBlbmRlbmN5IHNvIGVuYWJsaW5nIGlzIG5vbi10cml2aWFsCi1QQUNLQUdFQ09ORklHW2hhcmZidXp6XSA9ICItLXdpdGgtaGFyZmJ1enosLS13aXRob3V0LWhhcmZidXp6LGhhcmZidXp6IgotUEFDS0FHRUNPTkZJR1twaXhtYXBdID0gIi0td2l0aC1wbmcsLS13aXRob3V0LXBuZyxsaWJwbmciCi1QQUNLQUdFQ09ORklHW3psaWJdID0gIi0td2l0aC16bGliLC0td2l0aG91dC16bGliLHpsaWIiCi0KLUVYVFJBX09FQ09ORiA9ICJDQ19CVUlMRD0nJHtCVUlMRF9DQ30nIgotCi1UQVJHRVRfQ1BQRkxBR1MgKz0gIi1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCW9lX211bHRpbGliX2hlYWRlciBmcmVldHlwZTIvZnJlZXR5cGUvY29uZmlnL2Z0Y29uZmlnLmgKLX0KLQotQklOQ09ORklHID0gIiR7YmluZGlyfS9mcmVldHlwZS1jb25maWciCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZnJlZXR5cGUvZnJlZXR5cGVfMi44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mcmVldHlwZS9mcmVldHlwZV8yLjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGU4OGU4NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZnJlZXR5cGUvZnJlZXR5cGVfMi44LmJiCkBAIC0wLDAgKzEsNDkgQEAKK1NVTU1BUlkgPSAiRnJlZXR5cGUgZm9udCByZW5kZXJpbmcgbGlicmFyeSIKK0RFU0NSSVBUSU9OID0gIkZyZWVUeXBlIGlzIGEgc29mdHdhcmUgZm9udCBlbmdpbmUgdGhhdCBpcyBkZXNpZ25lZCB0byBiZSBzbWFsbCwgZWZmaWNpZW50LCBcCitoaWdobHkgY3VzdG9taXphYmxlLCBhbmQgcG9ydGFibGUgd2hpbGUgY2FwYWJsZSBvZiBwcm9kdWNpbmcgaGlnaC1xdWFsaXR5IG91dHB1dCAoZ2x5cGggXAoraW1hZ2VzKS4gSXQgY2FuIGJlIHVzZWQgaW4gZ3JhcGhpY3MgbGlicmFyaWVzLCBkaXNwbGF5IHNlcnZlcnMsIGZvbnQgY29udmVyc2lvbiB0b29scywgdGV4dCBcCitpbWFnZSBnZW5lcmF0aW9uIHRvb2xzLCBhbmQgbWFueSBvdGhlciBwcm9kdWN0cyBhcyB3ZWxsLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZnJlZXR5cGUub3JnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9zYXZhbm5haC5ub25nbnUub3JnL2J1Z3MvP2dyb3VwPWZyZWV0eXBlIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIkZyZWVUeXBlIHwgR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZG9jcy9MSUNFTlNFLlRYVDttZDU9NGFmNjIyMTUwNmYyMDI3NzRlZjc0ZjY0OTMyODc4YTEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jcy9GVEwuVFhUO21kNT0xM2IyNTQxMzI3NGM5YjNiMDliNjNlNDAyODIxNmZmNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kb2NzL0dQTHYyLlRYVDttZDU9OGVmMzgwNDc2ZjY0MmMyMGViZjQwZmVjYjBhZGQyZWMiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2ZyZWV0eXBlL2ZyZWV0eXBlLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vdXNlLXJpZ2h0LWxpYnRvb2wucGF0Y2giCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2ZyZWV0eXBlL2ZpbGVzL2ZyZWV0eXBlMi8iCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKykiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyNDEzYWMzZWFmNTA4YWRhMDE5YzYzOTU5ZWE4MWE5MiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhM2M2MDNlZDg0YzNjMjQ5NWY5YzkzMzFmZTZiYmEzYmIwZWU2NWUwNmVjMzMxZTBhMGZiNTIxNTgyOTFiNDBiIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgYmluY29uZmlnLWRpc2FibGVkIG11bHRpbGliX2hlYWRlcgorCisjIEFkYXB0IGF1dG90b29scyB0byB3b3JrIHdpdGggdGhlIG1pbmltYWwgYXV0b2NvbmYgdXNhZ2UgaW4gZnJlZXR5cGUKK0FVVE9UT09MU19TQ1JJUFRfUEFUSCA9ICIke1N9L2J1aWxkcy91bml4IgorQ09ORklHVVJFX1NDUklQVCA9ICIke1N9L2NvbmZpZ3VyZSIKK0VYVFJBX0FVVE9SRUNPTkYgKz0gIi0tZXhjbHVkZT1hdXRvaGVhZGVyIC0tZXhjbHVkZT1hdXRvbWFrZSIKKworUEFDS0FHRUNPTkZJRyA/Pz0gInpsaWIiCisKK1BBQ0tBR0VDT05GSUdbYnppcDJdID0gIi0td2l0aC1iemlwMiwtLXdpdGhvdXQtYnppcDIsYnppcDIiCisjIGhhcmZidXp6IHJlc3VsdHMgaW4gYSBjaXJjdWxhciBkZXBlbmRlbmN5IHNvIGVuYWJsaW5nIGlzIG5vbi10cml2aWFsCitQQUNLQUdFQ09ORklHW2hhcmZidXp6XSA9ICItLXdpdGgtaGFyZmJ1enosLS13aXRob3V0LWhhcmZidXp6LGhhcmZidXp6IgorUEFDS0FHRUNPTkZJR1twaXhtYXBdID0gIi0td2l0aC1wbmcsLS13aXRob3V0LXBuZyxsaWJwbmciCitQQUNLQUdFQ09ORklHW3psaWJdID0gIi0td2l0aC16bGliLC0td2l0aG91dC16bGliLHpsaWIiCisKK0VYVFJBX09FQ09ORiA9ICJDQ19CVUlMRD0nJHtCVUlMRF9DQ30nIgorCitUQVJHRVRfQ1BQRkxBR1MgKz0gIi1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCW9lX211bHRpbGliX2hlYWRlciBmcmVldHlwZTIvZnJlZXR5cGUvY29uZmlnL2Z0Y29uZmlnLmgKK30KKworQklOQ09ORklHID0gIiR7YmluZGlyfS9mcmVldHlwZS1jb25maWciCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZnN0ZXN0cy9mc3Rlc3RzX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZnN0ZXN0cy9mc3Rlc3RzX2dpdC5iYgppbmRleCA5NWMzM2Y0Li45ZTA5Y2QyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZzdGVzdHMvZnN0ZXN0c19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mc3Rlc3RzL2ZzdGVzdHNfZ2l0LmJiCkBAIC04LDYgKzgsNyBAQAogUFYgPSAiMC4xK2dpdCR7U1JDUFZ9IgogCiBTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnLyR7QlBOfSIKK1VQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgogCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly90ZXN0LXBhbmdvLWdkay5jO2VuZGxpbmU9MjQ7bWQ1PTFlZTc0ZWM4NTFlY2RhNTdlYjdhYzZjYzE4MGY3NjU1IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2dsZXcvZ2xld18yLjAuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZ2xldy9nbGV3XzIuMC4wLmJiCmluZGV4IDFjOTNjYTAuLmYyYWI3NTYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZ2xldy9nbGV3XzIuMC4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZ2xldy9nbGV3XzIuMC4wLmJiCkBAIC0yNCw2ICsyNCw3IEBACiBQQUNLQUdFQ09ORklHW29wZW5nbF0gPSAiU1lTVEVNPSdsaW51eCcsLHZpcnR1YWwvbGlieDExIHZpcnR1YWwvbGliZ2wgbGliZ2x1IGxpYnhleHQgbGlieGkgbGlieG11IgogUEFDS0FHRUNPTkZJR1tlZ2wtZ2xlczJdID0gIlNZU1RFTT0nbGludXgtZWdsJyBHTEVXX05PX0dMVT0nLURHTEVXX05PX0dMVScgTERGTEFHUy5HTD0nLWxFR0wgLWxHTEVTdjInLCx2aXJ0dWFsL2VnbCB2aXJ0dWFsL2xpYmdsZXMyIgogCitDRkxBR1MgKz0gIi1EX0dOVV9TT1VSQ0UiCiAjIE92ZXJyaWRlIFNZU1RFTSAodmlhIFBBQ0tBR0VDT05GSUdfQ09ORkFSR1MpIHRvIGF2b2lkIGNhbGxpbmcgY29uZmlnLmd1ZXNzLAogIyB3ZSdyZSBjcm9zcy1jb21waWxpbmcuIFBhc3Mgb3VyIENGTEFHUyB2aWEgUE9QVCBhcyB0aGF0J3MgdGhlIG9wdGltaXNhdGlvbgogIyB2YXJpYWJsZSBhbmQgc2FmZWx5IG92ZXJ3cml0dGVuLgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9oYXJmYnV6ei9oYXJmYnV6el8xLjQuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvaGFyZmJ1enovaGFyZmJ1enpfMS40LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjNDc3M2UuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9oYXJmYnV6ei9oYXJmYnV6el8xLjQuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLVNVTU1BUlkgPSAiVGV4dCBzaGFwaW5nIGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJIYXJmQnV6eiBpcyBhbiBPcGVuVHlwZSB0ZXh0IHNoYXBpbmcgZW5naW5lLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3dpa2kvU29mdHdhcmUvSGFyZkJ1enoiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvZW50ZXJfYnVnLmNnaT9wcm9kdWN0PUhhcmZCdXp6IgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lMDIxZGQ2ZGRhNmZmMWU2YjEwNDQwMDJmYzY2MmI5YiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvaGItdWNkbi9DT1BZSU5HO21kNT05OTRiYTBmMTI5NWYxNWI0YmRhNDk5OWE1YmJlZGRlZiBcCi0iCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgY2Fpcm8gZm9udGNvbmZpZyBmcmVldHlwZSIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZS9oYXJmYnV6ei9yZWxlYXNlLyR7QlB9LnRhci5iejIiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3YjNmNDQ1ZDBhNTg0ODVhMzFjMThjMDNjZTliNGUzYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4NWEyN2ZhYjYzOWExZDY1MTczN2RjYjZiNjllNDEwMWUzZmQwOTUyMmZkZmRjYjc5M2RmODEwYjVjYjMxNWJkIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgbGliX3BhY2thZ2UgZ3RrLWRvYwotCi1QQUNLQUdFQ09ORklHID8/PSAiaWN1IgotUEFDS0FHRUNPTkZJR1tpY3VdID0gIi0td2l0aC1pY3UsLS13aXRob3V0LWljdSxpY3UiCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0td2l0aC1jYWlybyBcCi0gICAgLS13aXRoLWZvbnRjb25maWcgXAotICAgIC0td2l0aC1mcmVldHlwZSBcCi0gICAgLS13aXRoLWdsaWIgXAotICAgIC0td2l0aG91dC1ncmFwaGl0ZTIgXAotIgotCi1QQUNLQUdFUyA9KyAiJHtQTn0taWN1ICR7UE59LWljdS1kZXYiCi0KLUZJTEVTXyR7UE59LWljdSA9ICIke2xpYmRpcn0vbGliaGFyZmJ1enotaWN1LnNvLioiCi1GSUxFU18ke1BOfS1pY3UtZGV2ID0gIiR7bGliZGlyfS9saWJoYXJmYnV6ei1pY3UubGEgXAotICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGliaGFyZmJ1enotaWN1LnNvIFwKLSAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BrZ2NvbmZpZy9oYXJmYnV6ei1pY3UucGMgXAotIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvaGFyZmJ1enovaGFyZmJ1enpfMS40LjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2hhcmZidXp6L2hhcmZidXp6XzEuNC44LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmNWU1YTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2hhcmZidXp6L2hhcmZidXp6XzEuNC44LmJiCkBAIC0wLDAgKzEsMzkgQEAKK1NVTU1BUlkgPSAiVGV4dCBzaGFwaW5nIGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJIYXJmQnV6eiBpcyBhbiBPcGVuVHlwZSB0ZXh0IHNoYXBpbmcgZW5naW5lLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3dpa2kvU29mdHdhcmUvSGFyZkJ1enoiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvZW50ZXJfYnVnLmNnaT9wcm9kdWN0PUhhcmZCdXp6IgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lMDIxZGQ2ZGRhNmZmMWU2YjEwNDQwMDJmYzY2MmI5YiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvaGItdWNkbi9DT1BZSU5HO21kNT05OTRiYTBmMTI5NWYxNWI0YmRhNDk5OWE1YmJlZGRlZiBcCisiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAgY2Fpcm8gZm9udGNvbmZpZyBmcmVldHlwZSIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZS9oYXJmYnV6ei9yZWxlYXNlLyR7QlB9LnRhci5iejIiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkMWFhNDQ2ZTFlNjU3MTczMTFjMTVkOWFjMGNmMzFlZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjY2VjNDkzMGZmMGJiMmQwYzQwYWVlMjAzMDc1NDQ3OTU0YjY0YThjMjY5NTIwMjQxM2NjNWU0MjhjOTA3MTMxIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgbGliX3BhY2thZ2UgZ3RrLWRvYworCitQQUNLQUdFQ09ORklHID8/PSAiaWN1IgorUEFDS0FHRUNPTkZJR1tpY3VdID0gIi0td2l0aC1pY3UsLS13aXRob3V0LWljdSxpY3UiCisKK0VYVFJBX09FQ09ORiA9ICIgXAorICAgIC0td2l0aC1jYWlybyBcCisgICAgLS13aXRoLWZvbnRjb25maWcgXAorICAgIC0td2l0aC1mcmVldHlwZSBcCisgICAgLS13aXRoLWdsaWIgXAorICAgIC0td2l0aG91dC1ncmFwaGl0ZTIgXAorIgorCitQQUNLQUdFUyA9KyAiJHtQTn0taWN1ICR7UE59LWljdS1kZXYiCisKK0ZJTEVTXyR7UE59LWljdSA9ICIke2xpYmRpcn0vbGliaGFyZmJ1enotaWN1LnNvLioiCitGSUxFU18ke1BOfS1pY3UtZGV2ID0gIiR7bGliZGlyfS9saWJoYXJmYnV6ei1pY3UubGEgXAorICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGliaGFyZmJ1enotaWN1LnNvIFwKKyAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BrZ2NvbmZpZy9oYXJmYnV6ei1pY3UucGMgXAorIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvanBlZy9saWJqcGVnLXR1cmJvL2ZpeC1taXBzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9qcGVnL2xpYmpwZWctdHVyYm8vZml4LW1pcHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkNDEyMzcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9qcGVnL2xpYmpwZWctdHVyYm8vZml4LW1pcHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi1GaXggYSByZWdyZXNzaW9uIHRoYXQgY2F1c2VzIHRoZSBNSVBTIGNvZGUgZnJvbSBidWlsZGluZy4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotRnJvbSA3YmZiMjJhZjEyM2FjMTA3OThhOWE0YzllYzdiMjNlNTA2NWRiMzVlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRFJDIDxpbmZvcm1hdGlvbkBsaWJqcGVnLXR1cmJvLm9yZz4KLURhdGU6IE1vbiwgMjYgU2VwIDIwMTYgMTc6NTk6MTQgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGJyb2tlbiBNSVBTIGJ1aWxkCi0KLVJlZ3Jlc3Npb24gaW50cm9kdWNlZCBieSA5MDU1ZmI0MDhkY2I1ODVjZTkzOTJkMzk1ZTE2NjMwZDUxMDAyMTUyCi0KLUZpeGVzICMxMDQKLS0tLQotIENoYW5nZUxvZy5tZCAgICAgIHwgMyArKysKLSBzaW1kL2pzaW1kX21pcHMuYyB8IDIgKysKLSAyIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nLm1kIGIvQ2hhbmdlTG9nLm1kCi1pbmRleCBlMmI5ZGYzLi43MWRkY2FhIDEwMDY0NAotLS0tIGEvQ2hhbmdlTG9nLm1kCi0rKysgYi9DaGFuZ2VMb2cubWQKLUBAIC02LDYgKzYsOSBAQAotIDEuIEZpeGVkIGEgcmVncmVzc2lvbiBpbnRyb2R1Y2VkIGJ5IDEuNS4xWzddIHRoYXQgcHJldmVudGVkIGxpYmpwZWctdHVyYm8gZnJvbQotIGJ1aWxkaW5nIHdpdGggQW5kcm9pZCBOREsgcGxhdGZvcm1zIHByaW9yIHRvIGFuZHJvaWQtMjEgKDUuMCkuCi0gCi0rMi4gRml4ZWQgYSByZWdyZXNzaW9uIGludHJvZHVjZWQgYnkgMS41LjFbMV0gdGhhdCBwcmV2ZW50ZWQgdGhlIE1JUFMgRFNQUjIgU0lNRAotK2NvZGUgaW4gbGlianBlZy10dXJibyBmcm9tIGJ1aWxkaW5nLgotKwotIAotIDEuNS4xCi0gPT09PT0KLWRpZmYgLS1naXQgYS9zaW1kL2pzaW1kX21pcHMuYyBiL3NpbWQvanNpbWRfbWlwcy5jCi1pbmRleCA2M2I4MTE1Li4wMmU5MGNkIDEwMDY0NAotLS0tIGEvc2ltZC9qc2ltZF9taXBzLmMKLSsrKyBiL3NpbWQvanNpbWRfbWlwcy5jCi1AQCAtNjMsNiArNjMsOCBAQCBwYXJzZV9wcm9jX2NwdWluZm8oY29uc3QgY2hhciogc2VhcmNoX3N0cmluZykKLSBMT0NBTCh2b2lkKQotIGluaXRfc2ltZCAodm9pZCkKLSB7Ci0rICBjaGFyICplbnYgPSBOVUxMOwotKwotICAgaWYgKHNpbWRfc3VwcG9ydCAhPSB+MFUpCi0gICAgIHJldHVybjsKLSAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvanBlZy9saWJqcGVnLXR1cmJvXzEuNS4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9qcGVnL2xpYmpwZWctdHVyYm9fMS41LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlMmVlYWYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9qcGVnL2xpYmpwZWctdHVyYm9fMS41LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1TVU1NQVJZID0gIkhhcmR3YXJlIGFjY2VsZXJhdGVkIEpQRUcgY29tcHJlc3Npb24vZGVjb21wcmVzc2lvbiBsaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAibGlianBlZy10dXJibyBpcyBhIGRlcml2YXRpdmUgb2YgbGlianBlZyB0aGF0IHVzZXMgU0lNRCBpbnN0cnVjdGlvbnMgKE1NWCwgU1NFMiwgTkVPTikgdG8gYWNjZWxlcmF0ZSBiYXNlbGluZSBKUEVHIGNvbXByZXNzaW9uIGFuZCBkZWNvbXByZXNzaW9uIgotSE9NRVBBR0UgPSAiaHR0cDovL2xpYmpwZWctdHVyYm8ub3JnLyIKLQotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9jZGpwZWcuaDtlbmRsaW5lPTEzO21kNT0wNWJhYjdjN2FkODk5ZDg1YmZiYTYwZGExYTEyNzFmMiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9qcGVnbGliLmg7ZW5kbGluZT0xNjttZDU9ZjY3ZDcwZTU0N2EyNjYyYzA3OTc4MWM3MmY4NzdmNzIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZGpwZWcuYztlbmRsaW5lPTExO21kNT1iOTBiNmQyYjQxMTlmOWU1ODA3Y2QyNzNmNTI1ZDJhZiBcCi0iCi1ERVBFTkRTX2FwcGVuZF94ODYtNjRfY2xhc3MtdGFyZ2V0ID0gIiBuYXNtLW5hdGl2ZSIKLURFUEVORFNfYXBwZW5kX3g4Nl9jbGFzcy10YXJnZXQgICAgPSAiIG5hc20tbmF0aXZlIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtbWlwcy5wYXRjaCIKLVNSQ19VUklbbWQ1c3VtXSA9ICI1NWRlYjEzOWIwY2FjM2M4MjAwYjc1ZDQ4NWZjMTNmMyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0MTQyOWQzZDI1MzAxNzQzM2Y2NmUzZDQ3MmI4YzdkOTk4NDkxZDJmNDFjYWE3MzA2YjhkOWE2ZjJhMmM2NjZjIgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbGlianBlZy10dXJiby9maWxlcy8iCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIvbGlianBlZy10dXJiby9maWxlcy8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykvIgotCi1QRT0gIjEiCi0KLSMgRHJvcC1pbiByZXBsYWNlbWVudCBmb3IganBlZwotUFJPVklERVMgPSAianBlZyIKLVJQUk9WSURFU18ke1BOfSArPSAianBlZyIKLVJSRVBMQUNFU18ke1BOfSArPSAianBlZyIKLVJDT05GTElDVFNfJHtQTn0gKz0gImpwZWciCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi0jIEFkZCBuYXNtLW5hdGl2ZSBkZXBlbmRlbmN5IGNvbnNpc3RlbnRseSBmb3IgYWxsIGJ1aWxkIGFyY2hlcyBpcyBoYXJkCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLS13aXRob3V0LXNpbWQiCi0KLSMgV29yayBhcm91bmQgbWlzc2luZyB4MzIgQUJJIHN1cHBvcnQKLUVYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJteDMyIiwgIi0td2l0aG91dC1zaW1kIiwgIiIsIGQpfSIKLQotIyBXb3JrIGFyb3VuZCBtaXNzaW5nIG5vbi1mbG9hdGluZyBwb2ludCBBQkkgc3VwcG9ydCBpbiBNSVBTCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIk1JUFNQS0dTRlhfRlBVIiwgIi1uZiIsICItLXdpdGhvdXQtc2ltZCIsICIiLCBkKX0iCi0KLSMgUHJvdmlkZSBhIHdvcmthcm91bmQgaWYgQWx0aXZlYyB1bml0IGlzIG5vdCBwcmVzZW50IGluIFBQQwotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXRfcG93ZXJwYyA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiYWx0aXZlYyIsICIiLCAiLS13aXRob3V0LXNpbWQiLCBkKX0iCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldF9wb3dlcnBjNjQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImFsdGl2ZWMiLCAiIiwgIi0td2l0aG91dC1zaW1kIiwgZCl9IgotCi1QQUNLQUdFUyA9KyAianBlZy10b29scyBsaWJ0dXJib2pwZWciCi0KLURFU0NSSVBUSU9OX2pwZWctdG9vbHMgPSAiVGhlIGpwZWctdG9vbHMgcGFja2FnZSBpbmNsdWRlcyBjbGllbnQgcHJvZ3JhbXMgdG8gYWNjZXNzIGxpYmpwZWcgZnVuY3Rpb25hbGl0eS4gIFRoZXNlIHRvb2xzIGFsbG93IGZvciB0aGUgY29tcHJlc3Npb24sIGRlY29tcHJlc3Npb24sIHRyYW5zZm9ybWF0aW9uIGFuZCBkaXNwbGF5IG9mIEpQRUcgZmlsZXMgYW5kIGJlbmNobWFya2luZyBvZiB0aGUgbGlianBlZyBsaWJyYXJ5LiIKLUZJTEVTX2pwZWctdG9vbHMgPSAiJHtiaW5kaXJ9LyoiCi0KLURFU0NSSVBUSU9OX2xpYnR1cmJvanBlZyA9ICJBIFNJTUQtYWNjZWxlcmF0ZWQgSlBFRyBjb2RlYyB3aGljaCBwcm92aWRlcyBvbmx5IFR1cmJvSlBFRyBBUElzIgotRklMRVNfbGlidHVyYm9qcGVnID0gIiR7bGliZGlyfS9saWJ0dXJib2pwZWcuc28uKiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2pwZWcvbGlianBlZy10dXJib18xLjUuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvanBlZy9saWJqcGVnLXR1cmJvXzEuNS4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4NjQ2ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2pwZWcvbGlianBlZy10dXJib18xLjUuMi5iYgpAQCAtMCwwICsxLDUxIEBACitTVU1NQVJZID0gIkhhcmR3YXJlIGFjY2VsZXJhdGVkIEpQRUcgY29tcHJlc3Npb24vZGVjb21wcmVzc2lvbiBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAibGlianBlZy10dXJibyBpcyBhIGRlcml2YXRpdmUgb2YgbGlianBlZyB0aGF0IHVzZXMgU0lNRCBpbnN0cnVjdGlvbnMgKE1NWCwgU1NFMiwgTkVPTikgdG8gYWNjZWxlcmF0ZSBiYXNlbGluZSBKUEVHIGNvbXByZXNzaW9uIGFuZCBkZWNvbXByZXNzaW9uIgorSE9NRVBBR0UgPSAiaHR0cDovL2xpYmpwZWctdHVyYm8ub3JnLyIKKworTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9jZGpwZWcuaDtlbmRsaW5lPTEzO21kNT0wNWJhYjdjN2FkODk5ZDg1YmZiYTYwZGExYTEyNzFmMiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9qcGVnbGliLmg7ZW5kbGluZT0xNjttZDU9ZjY3ZDcwZTU0N2EyNjYyYzA3OTc4MWM3MmY4NzdmNzIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZGpwZWcuYztlbmRsaW5lPTExO21kNT1iOTBiNmQyYjQxMTlmOWU1ODA3Y2QyNzNmNTI1ZDJhZiBcCisiCitERVBFTkRTX2FwcGVuZF94ODYtNjRfY2xhc3MtdGFyZ2V0ID0gIiBuYXNtLW5hdGl2ZSIKK0RFUEVORFNfYXBwZW5kX3g4Nl9jbGFzcy10YXJnZXQgICAgPSAiIG5hc20tbmF0aXZlIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5neiIKKworU1JDX1VSSVttZDVzdW1dID0gIjZiNDkyM2UyOTdhN2VhYTI1NWYwODUxMTAxN2E4ODE4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkwOTg5NDNiMjcwMzg4NzI3YWU2MWRlODJhZGVjNzNjZjlmMGRiYjI0MGIzYmM4YjE3MjU5NWViZjQwNWI1MjgiCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9saWJqcGVnLXR1cmJvL2ZpbGVzLyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIi9saWJqcGVnLXR1cmJvL2ZpbGVzLyg/UDxwdmVyPihcZCtbXC5cLV9dKikrKS8iCisKK1BFPSAiMSIKKworIyBEcm9wLWluIHJlcGxhY2VtZW50IGZvciBqcGVnCitQUk9WSURFUyA9ICJqcGVnIgorUlBST1ZJREVTXyR7UE59ICs9ICJqcGVnIgorUlJFUExBQ0VTXyR7UE59ICs9ICJqcGVnIgorUkNPTkZMSUNUU18ke1BOfSArPSAianBlZyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKKyMgQWRkIG5hc20tbmF0aXZlIGRlcGVuZGVuY3kgY29uc2lzdGVudGx5IGZvciBhbGwgYnVpbGQgYXJjaGVzIGlzIGhhcmQKK0VYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtLXdpdGhvdXQtc2ltZCIKKworIyBXb3JrIGFyb3VuZCBtaXNzaW5nIHgzMiBBQkkgc3VwcG9ydAorRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIm14MzIiLCAiLS13aXRob3V0LXNpbWQiLCAiIiwgZCl9IgorCisjIFdvcmsgYXJvdW5kIG1pc3Npbmcgbm9uLWZsb2F0aW5nIHBvaW50IEFCSSBzdXBwb3J0IGluIE1JUFMKK0VYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke0BiYi51dGlscy5jb250YWlucygiTUlQU1BLR1NGWF9GUFUiLCAiLW5mIiwgIi0td2l0aG91dC1zaW1kIiwgIiIsIGQpfSIKKworIyBQcm92aWRlIGEgd29ya2Fyb3VuZCBpZiBBbHRpdmVjIHVuaXQgaXMgbm90IHByZXNlbnQgaW4gUFBDCitFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldF9wb3dlcnBjID0gIiAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJhbHRpdmVjIiwgIiIsICItLXdpdGhvdXQtc2ltZCIsIGQpfSIKK0VYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0X3Bvd2VycGM2NCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiYWx0aXZlYyIsICIiLCAiLS13aXRob3V0LXNpbWQiLCBkKX0iCisKK1BBQ0tBR0VTID0rICJqcGVnLXRvb2xzIGxpYnR1cmJvanBlZyIKKworREVTQ1JJUFRJT05fanBlZy10b29scyA9ICJUaGUganBlZy10b29scyBwYWNrYWdlIGluY2x1ZGVzIGNsaWVudCBwcm9ncmFtcyB0byBhY2Nlc3MgbGlianBlZyBmdW5jdGlvbmFsaXR5LiAgVGhlc2UgdG9vbHMgYWxsb3cgZm9yIHRoZSBjb21wcmVzc2lvbiwgZGVjb21wcmVzc2lvbiwgdHJhbnNmb3JtYXRpb24gYW5kIGRpc3BsYXkgb2YgSlBFRyBmaWxlcyBhbmQgYmVuY2htYXJraW5nIG9mIHRoZSBsaWJqcGVnIGxpYnJhcnkuIgorRklMRVNfanBlZy10b29scyA9ICIke2JpbmRpcn0vKiIKKworREVTQ1JJUFRJT05fbGlidHVyYm9qcGVnID0gIkEgU0lNRC1hY2NlbGVyYXRlZCBKUEVHIGNvZGVjIHdoaWNoIHByb3ZpZGVzIG9ubHkgVHVyYm9KUEVHIEFQSXMiCitGSUxFU19saWJ0dXJib2pwZWcgPSAiJHtsaWJkaXJ9L2xpYnR1cmJvanBlZy5zby4qIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mva21zY3ViZS9rbXNjdWJlX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mva21zY3ViZS9rbXNjdWJlX2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYWI2OGZmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9rbXNjdWJlL2ttc2N1YmVfZ2l0LmJiCkBAIC0wLDAgKzEsMTcgQEAKK0RFU0NSSVBUSU9OID0gIkRlbW8gYXBwbGljYXRpb24gdG8gc2hvd2Nhc2UgM0QgZ3JhcGhpY3MgdXNpbmcga21zIGFuZCBnYm0iCitIT01FUEFHRSA9ICJodHRwczovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL21lc2Eva21zY3ViZS8iCitMSUNFTlNFID0gIk1JVCIKK1NFQ1RJT04gPSAiZ3JhcGhpY3MiCitERVBFTkRTID0gInZpcnR1YWwvbGliZ2xlczIgdmlydHVhbC9lZ2wgbGliZHJtIGdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9rbXNjdWJlLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMzttZDU9OGIzMDlkNGVlNjdiNzMxNWZmNzM4MTI3MGRkNjMxZmIiCisKK1NSQ1JFViA9ICIwZDhkZTRjZTNhMDNmMzZhZjE4MTdmOWIwNTg2ZDEzMmFkMmM1ZDJlIgorU1JDX1VSSSA9ICJnaXQ6Ly9hbm9uZ2l0LmZyZWVkZXNrdG9wLm9yZy9tZXNhL2ttc2N1YmU7YnJhbmNoPW1hc3Rlcjtwcm90b2NvbD1naXQiCitVUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGRpc3Ryb19mZWF0dXJlc19jaGVjaworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAib3BlbmdsIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJlcG94eS9saWJlcG94eS9BZGQtZmFsbGJhY2stZGVmaW5pdGlvbi1mb3ItRUdMLUNBU1QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmVwb3h5L2xpYmVwb3h5L0FkZC1mYWxsYmFjay1kZWZpbml0aW9uLWZvci1FR0wtQ0FTVC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTI5NzI1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJlcG94eS9saWJlcG94eS9BZGQtZmFsbGJhY2stZGVmaW5pdGlvbi1mb3ItRUdMLUNBU1QucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorQWRkIGZhbGxiYWNrIGRlZmluaXRpb24gZm9yIEVHTF9DQVNUCisKK1RoZSBFR0wgQVBJIHVwZGF0ZSBmcm9tIGQxMTEwNGYgaW50cm9kdWNlZCBhIGRlcGVuZGVuY3kgb24gdGhlCitFR0xfQ0FTVCgpIG1hY3JvLCBwcm92aWRlZCBieSBhbiB1cGRhdGVkIGVnbHBsYXRmb3JtLmguIEdpdmVuIHRoYXQgd2UKK2Rvbid0IHByb3ZpZGUgZWdscGxhdGZvcm0uaCwgYWRkIGEgZmFsbGJhY2sgZGVmaW5pdGlvbiBmb3IgaWYgd2UncmUKK2J1aWxkaW5nIGFnYWluc3QgTWVzYSAxNy4wLnggb3Igc2ltaWxhci4KKworaHR0cHM6Ly9idWdzLmdlbnRvby5vcmcvc2hvd19idWcuY2dpP2lkPTYyMzkyNgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vYW5ob2x0L2xpYmVwb3h5L2NvbW1pdC9lYmUzYTUzZGIxYzBiYjM0ZTFjYTk2M2I5NWQxZjIyMjExNWY5M2Y4XQorCitTaWduZWQtb2ZmLWJ5OiBUb20gSG9jaHN0ZWluIDx0b20uaG9jaHN0ZWluQG54cC5jb20+CisKK0luZGV4OiBsaWJlcG94eS0xLjQuMy9zcmMvZ2VuX2Rpc3BhdGNoLnB5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbGliZXBveHktMS40LjMub3JpZy9zcmMvZ2VuX2Rpc3BhdGNoLnB5CTIwMTctMDYtMDYgMDQ6MjQ6MTMuMDAwMDAwMDAwIC0wNTAwCisrKysgbGliZXBveHktMS40LjMvc3JjL2dlbl9kaXNwYXRjaC5weQkyMDE3LTExLTA2IDEyOjQ1OjQzLjU5NDk2NjQ3MyAtMDYwMAorQEAgLTQ5MSw2ICs0OTEsMTUgQEAKKyAgICAgICAgICAgICBzZWxmLm91dGxuKCcjaW5jbHVkZSAiZXBveHkvZ2wuaCInKQorICAgICAgICAgICAgIGlmIHNlbGYudGFyZ2V0ID09ICJlZ2wiOgorICAgICAgICAgICAgICAgICBzZWxmLm91dGxuKCcjaW5jbHVkZSAiRUdML2VnbHBsYXRmb3JtLmgiJykKKysgICAgICAgICAgICAgICAgIyBBY2NvdW50IGZvciBvbGRlciBlZ2xwbGF0Zm9ybS5oLCB3aGljaCBkb2Vzbid0IGRlZmluZQorKyAgICAgICAgICAgICAgICAjIHRoZSBFR0xfQ0FTVCBtYWNyby4KKysgICAgICAgICAgICAgICAgc2VsZi5vdXRsbignI2lmbmRlZiBFR0xfQ0FTVCcpCisrICAgICAgICAgICAgICAgIHNlbGYub3V0bG4oJyNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKScpCisrICAgICAgICAgICAgICAgIHNlbGYub3V0bG4oJyNkZWZpbmUgRUdMX0NBU1QodHlwZSwgdmFsdWUpIChzdGF0aWNfY2FzdDx0eXBlPih2YWx1ZSkpJykKKysgICAgICAgICAgICAgICAgc2VsZi5vdXRsbignI2Vsc2UnKQorKyAgICAgICAgICAgICAgICBzZWxmLm91dGxuKCcjZGVmaW5lIEVHTF9DQVNUKHR5cGUsIHZhbHVlKSAoKHR5cGUpICh2YWx1ZSkpJykKKysgICAgICAgICAgICAgICAgc2VsZi5vdXRsbignI2VuZGlmJykKKysgICAgICAgICAgICAgICAgc2VsZi5vdXRsbignI2VuZGlmJykKKyAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgIyBBZGQgc29tZSByaWRpY3Vsb3VzIGludHR5cGVzLmggcmVkZWZpbml0aW9ucyB0aGF0IGFyZQorICAgICAgICAgICAgICMgZnJvbSBraHJwbGF0Zm9ybS5oIGFuZCBub3QgaW5jbHVkZWQgaW4gdGhlIFhNTC4gIFdlCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmVwb3h5L2xpYmVwb3h5XzEuNC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJlcG94eS9saWJlcG94eV8xLjQuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWU5ZjY5NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmVwb3h5L2xpYmVwb3h5XzEuNC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotU1VNTUFSWSA9ICJPcGVuR0wgZnVuY3Rpb24gcG9pbnRlciBtYW5hZ2VtZW50IGxpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vYW5ob2x0L2xpYmVwb3h5LyIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OGVmNGM4MGQ0MDFlMDdiZDllZThiNmI1OGNmNDY0YiIKLQotU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vYW5ob2x0LyR7QlBOfS9yZWxlYXNlcy9kb3dubG9hZC92MS40LyR7QlB9LnRhci54eiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJkOGQ4Y2JmMmJlYjY0OTc1ZDQyNGZjYzUxNjdhMmEzOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyNWE5MDZiMTRhOTIxYmMyYjQ4OGNmZWFhMjFhMDA0ODZmZTkyNjMwZTRhOWRkMzQ2ZTRlY2FiZWFlNTJhYjQxIgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9hbmhvbHQvbGliZXBveHkvcmVsZWFzZXMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKLQotREVQRU5EUyA9ICJ1dGlsLW1hY3JvcyB2aXJ0dWFsL2VnbCIKLQotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0tZW5hYmxlLWdseCwgLS1kaXNhYmxlLWdseCwgdmlydHVhbC9saWJ4MTEiCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJlcG94eS9saWJlcG94eV8xLjQuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvbGliZXBveHlfMS40LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDE3MjMyMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvbGliZXBveHlfMS40LjMuYmIKQEAgLTAsMCArMSwyMiBAQAorU1VNTUFSWSA9ICJPcGVuR0wgZnVuY3Rpb24gcG9pbnRlciBtYW5hZ2VtZW50IGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vYW5ob2x0L2xpYmVwb3h5LyIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OGVmNGM4MGQ0MDFlMDdiZDllZThiNmI1OGNmNDY0YiIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vYW5ob2x0LyR7QlBOfS9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS8ke0JQfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vQWRkLWZhbGxiYWNrLWRlZmluaXRpb24tZm9yLUVHTC1DQVNULnBhdGNoIgorU1JDX1VSSVttZDVzdW1dID0gImFmNGMzY2UwZmIxMTQzYmRjNGU0M2Y4NTY5NWE5YmVkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBiODA4YTA2Yzk2ODVhNjJmY2EzNGI2ODBhYmI4YmM3ZmIyZmRhMDc0NDc4ZTMyOWIwNjNjMWY4NzJiODI2ZjYiCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2FuaG9sdC9saWJlcG94eS9yZWxlYXNlcyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGRpc3Ryb19mZWF0dXJlc19jaGVjaworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAib3BlbmdsIgorCitERVBFTkRTID0gInV0aWwtbWFjcm9zIgorCitQQUNLQUdFQ09ORklHW2VnbF0gPSAiLS1lbmFibGUtZWdsLCAtLWRpc2FibGUtZWdsLCB2aXJ0dWFsL2VnbCIKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItLWVuYWJsZS1nbHgsIC0tZGlzYWJsZS1nbHgsIHZpcnR1YWwvbGlieDExIgorUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSBlZ2wiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmZha2VrZXkvbGliZmFrZWtleV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmZha2VrZXkvbGliZmFrZWtleV9naXQuYmIKaW5kZXggYzYwZGRlYS4uNGI4MDNkYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJmYWtla2V5L2xpYmZha2VrZXlfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZmFrZWtleS9saWJmYWtla2V5X2dpdC5iYgpAQCAtMTAsOCArMTAsOCBAQAogREVQRU5EUyA9ICJsaWJ4dHN0IgogU0VDVElPTiA9ICJ4MTEvd20iCiAKLVNSQ1JFViA9ICJlMzI3ZmYwNDliODUwM2FmMmRhZGZmYTg0MzcwYTA4NjBiOWZiNjgyIgotUFYgPSAiMC4wK2dpdCR7U1JDUFZ9IgorU1JDUkVWID0gIjdhZDg4NTkxMmVmYjIxMzFlODA5MTRlOTY0ZDVlNjM1YjBkMDdiNDAiCitQViA9ICIwLjMrZ2l0JHtTUkNQVn0iCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvJHtCUE59IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbC9saWJzZGwtMS4yLjE1LzAwMDEtYnVpbGQtUGFzcy10YWctQ0MtZXhwbGljdGx5LXdoZW4tdXNpbmctbGlidG9vbC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsL2xpYnNkbC0xLjIuMTUvMDAwMS1idWlsZC1QYXNzLXRhZy1DQy1leHBsaWN0bHktd2hlbi11c2luZy1saWJ0b29sLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjOGMwZmQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbC9saWJzZGwtMS4yLjE1LzAwMDEtYnVpbGQtUGFzcy10YWctQ0MtZXhwbGljdGx5LXdoZW4tdXNpbmctbGlidG9vbC5wYXRjaApAQCAtMCwwICsxLDczIEBACitGcm9tIDQ0ZTRiYjRjZmI4MTAyNGM4ZjVmZDJlMTc5ZThhMzJjNDI3NTZhMmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU3VuLCAyMyBKdWwgMjAxNyAxNjo1Mjo0MyAtMDcwMAorU3ViamVjdDogW1BBVENIXSBidWlsZDogUGFzcyAtLXRhZz1DQyBleHBsaWN0bHkgd2hlbiB1c2luZyBsaWJ0b29sCisKK0RvIG5vdCBkZXBlbmQgc29sZWx5IG9uIGxpYnRvb2wgaGV1cmlzdGljcyB3aGljaCBmYWlsCitpbiBPRSBjYXNlIHdoZW4gYnVpbGRpbmcgd2l0aCBleHRlcm5hbCBjb21waWxlciBhbmQKK2hhcmRlbmluZyBmbGFncworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIE1ha2VmaWxlLmluICAgICAgICAgICAgICB8IDQgKystLQorIGJ1aWxkLXNjcmlwdHMvbWFrZWRlcC5zaCB8IDggKysrKy0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KK2luZGV4IGFiNTEwMzUuLjc0M2NlMzAgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5pbgorKysrIGIvTWFrZWZpbGUuaW4KK0BAIC03MiwxMCArNzIsMTAgQEAgZGVwZW5kOgorIGluY2x1ZGUgJChkZXBlbmQpCisgCisgJChvYmplY3RzKS8kKFRBUkdFVCk6ICQoT0JKRUNUUykKKy0JJChMSUJUT09MKSAtLW1vZGU9bGluayAkKENDKSAtbyAkQCAkXiAkKExERkxBR1MpICQoRVhUUkFfTERGTEFHUykgJChMVF9MREZMQUdTKQorKwkkKExJQlRPT0wpIC0tdGFnPUNDIC0tbW9kZT1saW5rICQoQ0MpIC1vICRAICReICQoTERGTEFHUykgJChFWFRSQV9MREZMQUdTKSAkKExUX0xERkxBR1MpCisgCisgJChvYmplY3RzKS8kKFNETE1BSU5fVEFSR0VUKTogJChTRExNQUlOX09CSkVDVFMpCistCSQoTElCVE9PTCkgLS1tb2RlPWxpbmsgJChDQykgLW8gJEAgJF4gJChMREZMQUdTKSAkKEVYVFJBX0xERkxBR1MpICQoTFRfTERGTEFHUykgJChTRExNQUlOX0xERkxBR1MpCisrCSQoTElCVE9PTCkgLS10YWc9Q0MgLS1tb2RlPWxpbmsgJChDQykgLW8gJEAgJF4gJChMREZMQUdTKSAkKEVYVFJBX0xERkxBR1MpICQoTFRfTERGTEFHUykgJChTRExNQUlOX0xERkxBR1MpCisgCisgCisgaW5zdGFsbDogYWxsIGluc3RhbGwtYmluIGluc3RhbGwtaGRycyBpbnN0YWxsLWxpYiBpbnN0YWxsLWRhdGEgaW5zdGFsbC1tYW4KK2RpZmYgLS1naXQgYS9idWlsZC1zY3JpcHRzL21ha2VkZXAuc2ggYi9idWlsZC1zY3JpcHRzL21ha2VkZXAuc2gKK2luZGV4IDNiMzg2M2IuLmRiYTI4ZjIgMTAwNzU1CistLS0gYS9idWlsZC1zY3JpcHRzL21ha2VkZXAuc2gKKysrKyBiL2J1aWxkLXNjcmlwdHMvbWFrZWRlcC5zaAorQEAgLTUxLDE5ICs1MSwxOSBAQCBkbyAgZWNobyAiR2VuZXJhdGluZyBkZXBlbmRlbmNpZXMgZm9yICRzcmMiCisgICAgIGNhc2UgJGV4dCBpbgorICAgICAgICAgYykgY2F0ID4+JHtvdXRwdXR9Lm5ldyA8PF9fRU9GX18KKyAKKy0JXCQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgXCQoQ0MpIFwkKENGTEFHUykgXCQoRVhUUkFfQ0ZMQUdTKSAtYyAkc3JjICAtbyBcJEAKKysJXCQoTElCVE9PTCkgLS10YWc9Q0MgLS1tb2RlPWNvbXBpbGUgXCQoQ0MpIFwkKENGTEFHUykgXCQoRVhUUkFfQ0ZMQUdTKSAtYyAkc3JjICAtbyBcJEAKKyAKKyBfX0VPRl9fCisgICAgICAgICA7OworICAgICAgICAgY2MpIGNhdCA+PiR7b3V0cHV0fS5uZXcgPDxfX0VPRl9fCisgCistCVwkKExJQlRPT0wpIC0tbW9kZT1jb21waWxlIFwkKENDKSBcJChDRkxBR1MpIFwkKEVYVFJBX0NGTEFHUykgLWMgJHNyYyAgLW8gXCRACisrCVwkKExJQlRPT0wpIC0tdGFnPUNDIC0tbW9kZT1jb21waWxlIFwkKENDKSBcJChDRkxBR1MpIFwkKEVYVFJBX0NGTEFHUykgLWMgJHNyYyAgLW8gXCRACisgCisgX19FT0ZfXworICAgICAgICAgOzsKKyAgICAgICAgIG0pIGNhdCA+PiR7b3V0cHV0fS5uZXcgPDxfX0VPRl9fCisgCistCVwkKExJQlRPT0wpIC0tbW9kZT1jb21waWxlIFwkKENDKSBcJChDRkxBR1MpIFwkKEVYVFJBX0NGTEFHUykgLWMgJHNyYyAgLW8gXCRACisrCVwkKExJQlRPT0wpIC0tdGFnPUNDIC0tbW9kZT1jb21waWxlIFwkKENDKSBcJChDRkxBR1MpIFwkKEVYVFJBX0NGTEFHUykgLWMgJHNyYyAgLW8gXCRACisgCisgX19FT0ZfXworICAgICAgICAgOzsKK0BAIC03NSw3ICs3NSw3IEBAIF9fRU9GX18KKyAgICAgICAgIDs7CisgICAgICAgICBTKSBjYXQgPj4ke291dHB1dH0ubmV3IDw8X19FT0ZfXworIAorLQlcJChMSUJUT09MKSAgLS1tb2RlPWNvbXBpbGUgXCQoQ0MpIFwkKENGTEFHUykgXCQoRVhUUkFfQ0ZMQUdTKSAtYyAkc3JjICAtbyBcJEAKKysJXCQoTElCVE9PTCkgLS10YWc9Q0MgLS1tb2RlPWNvbXBpbGUgXCQoQ0MpIFwkKENGTEFHUykgXCQoRVhUUkFfQ0ZMQUdTKSAtYyAkc3JjICAtbyBcJEAKKyAKKyBfX0VPRl9fCisgICAgICAgICA7OworLS0gCisyLjEzLjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwvbGlic2RsXzEuMi4xNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsL2xpYnNkbF8xLjIuMTUuYmIKaW5kZXggYzgwMmE2Zi4uMzY4MGVhOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwvbGlic2RsXzEuMi4xNS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbC9saWJzZGxfMS4yLjE1LmJiCkBAIC0xNyw2ICsxNyw3IEBACiBTUkNfVVJJID0gImh0dHA6Ly93d3cubGlic2RsLm9yZy9yZWxlYXNlL1NETC0ke1BWfS50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vbGlic2RsLTEuMi4xNS14ZGF0YTMyLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3BrZ2NvbmZpZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWJ1aWxkLVBhc3MtdGFnLUNDLWV4cGxpY3RseS13aGVuLXVzaW5nLWxpYnRvb2wucGF0Y2ggXAogICAgICAgICAgICIKIAogVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiU0RMLSg/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgpAQCAtNTMsNiArNTQsMTAgQEAKIFBBQ0tBR0VDT05GSUdbb3BlbmdsXSA9ICItLWVuYWJsZS12aWRlby1vcGVuZ2wsIC0tZGlzYWJsZS12aWRlby1vcGVuZ2wsIHZpcnR1YWwvbGliZ2wgbGliZ2x1IgogUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0tZW5hYmxlLXZpZGVvLXgxMSAtLWRpc2FibGUteDExLXNoYXJlZCwgLS1kaXNhYmxlLXZpZGVvLXgxMSwgdmlydHVhbC9saWJ4MTEgbGlieGV4dCBsaWJ4cmFuZHIgbGlieHJlbmRlciIKIAorIyBUaGUgZm9sbG93aW5nIHR3byBvcHRpb25zIHNob3VsZCBvbmx5IGVuYWJsZWQgd2l0aCBtaW5ndyBzdXBwb3J0CitQQUNLQUdFQ09ORklHW3N0ZGlvLXJlZGlyZWN0XSA9ICItLWVuYWJsZS1zdGRpby1yZWRpcmVjdCwtLWRpc2FibGUtc3RkaW8tcmVkaXJlY3QiCitQQUNLQUdFQ09ORklHW2RpcmVjdHhdID0gIi0tZW5hYmxlLWRpcmVjdHgsLS1kaXNhYmxlLWRpcmVjdHgiCisKIEVYVFJBX0FVVE9SRUNPTkYgKz0gIi0taW5jbHVkZT1hY2luY2x1ZGUgLS1leGNsdWRlPWF1dG9oZWFkZXIiCiAKIGRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9maWxlcy8wMDAxLWNvbmZpZ3VyZS5hYy1Vc2Utd2F5bGFuZC1zY2FubmVyLWluLVBBVEgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2ZpbGVzLzAwMDEtY29uZmlndXJlLmFjLVVzZS13YXlsYW5kLXNjYW5uZXItaW4tUEFUSC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTk5YzIyNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2ZpbGVzLzAwMDEtY29uZmlndXJlLmFjLVVzZS13YXlsYW5kLXNjYW5uZXItaW4tUEFUSC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLUZyb20gMGFmMzA2MDI1MDIwMzUxNTU5MjlkZDJhMTQ0ODJiODJhOTc0N2NmOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1EYXRlOiBUaHUsIDIzIEZlYiAyMDE3IDE1OjIzOjE1ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZS5hYzogVXNlIHdheWxhbmQtc2Nhbm5lciBpbiBQQVRICi0KLXBrZy1jb25maWcgd2lsbCBnaXZlIHVzIHRoZSB3cm9uZyB3YXlsYW5kLXNjYW5uZXIgbG9jYXRpb24uCi1Vc2UgdGhlIG9uZSBpbiBwYXRoIGluc3RlYWQ6IGl0IHdpbGwgYmUgZnJvbSBuYXRpdmUgc3lzcm9vdC4KLQotVGhpcyBpcyBhIHdvcmthcm91bmQgYW5kIHNob3VsZCBiZSBmaXhlZCB1cHN0cmVhbTogcHJlZmVyYWJseQotd2l0aCB0aGUgc2FtZSBmaXggYXMgYWxsIHRoZSBvdGhlciB3YXlsYW5kLXNjYW5uZXIgdXNlcnMKLShzZWUgWU9DVE8gIzExMTAwKS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFt3b3JrYXJvdW5kXQotU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDUgKy0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDY0ZWRkZjIuLjU1MzZmMzUgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTI3MywxMCArMjczLDcgQEAgaWYgdGVzdCAiJGVuYWJsZV93YXlsYW5kIiA9ICJ5ZXMiOyB0aGVuCi0gICAgIFBLR19DSEVDS19NT0RVTEVTKFtXQVlMQU5EXSwgW3dheWxhbmQtY2xpZW50ID49IHdheWxhbmRfYXBpX3ZlcnNpb25dLAotICAgICAgICAgW1VTRV9XQVlMQU5EPSJ5ZXMiXSwgWzpdKQotICAgICBpZiB0ZXN0ICIkVVNFX1dBWUxBTkQiID0gInllcyI7IHRoZW4KLS0KLS0gICAgICAgIFdBWUxBTkRfUFJFRklYPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXByZWZpeCB3YXlsYW5kLWNsaWVudGAKLS0gICAgICAgIEFDX1BBVEhfUFJPRyhbV0FZTEFORF9TQ0FOTkVSXSwgW3dheWxhbmQtc2Nhbm5lcl0sLAotLSAgICAgICAgICAgICAgICAgICAgIFske1dBWUxBTkRfUFJFRklYfS9iaW4kUEFUSF9TRVBBUkFUT1IkUEFUSF0pCi0rICAgICAgICBBQ19QQVRIX1BST0coW1dBWUxBTkRfU0NBTk5FUl0sIFt3YXlsYW5kLXNjYW5uZXJdKQotIAotICAgICAgICAgQUNfREVGSU5FKFtIQVZFX1ZBX1dBWUxBTkRdLCBbMV0sCi0gICAgICAgICAgICAgICAgICAgW0RlZmluZWQgdG8gMSBpZiBWQS9XYXlsYW5kIEFQSSBpcyBidWlsdF0pCi0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvZmlsZXMvMDAwMS13YXlsYW5kLURvbi10LWNvbW1pdC1hbmQtc2hpcC1nZW5lcmF0ZWQtZmlsZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2ZpbGVzLzAwMDEtd2F5bGFuZC1Eb24tdC1jb21taXQtYW5kLXNoaXAtZ2VuZXJhdGVkLWZpbGVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZDk3ZTIyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvZmlsZXMvMDAwMS13YXlsYW5kLURvbi10LWNvbW1pdC1hbmQtc2hpcC1nZW5lcmF0ZWQtZmlsZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMzkgKzAsMCBAQAotRnJvbSA1OTkzYTc3MTBjYzhmZDlhMzkyZDUwMTViZTUxMDk5ODdhNDJiNDk4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLURhdGU6IFRodSwgMjMgRmViIDIwMTcgMTY6MTA6MDkgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gd2F5bGFuZDogRG9uJ3QgY29tbWl0IGFuZCBzaGlwIGdlbmVyYXRlZCBmaWxlcwotCi1JIGJlbGlldmUgc2hpcHBpbmcgd2F5bGFuZC1kcm0tY2xpZW50LXByb3RvY29sLmggaXMgd3Jvbmc6IFRoZSBoZWFkZXIKLXNob3VsZCBhbHdheXMgYmUgZ2VuZXJhdGVkIGJ5IHRoZSB3YXlsYW5kLXNjYW5uZXIgdGhhdCBtYXRjaGVzIHRoZQotcnVudGltZSB3YXlsYW5kIHZlcnNpb24uIEN1cnJlbnRseSB3aGVuIHNvbWVvbmUgY2xvbmVzIHRoZSByZXBvIGFuZAotYnVpbGRzLCB0aGUgc2hpcHBlZCB2ZXJzaW9uIGlzIHVzZWQuCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vMDFvcmcvbGlidmEvcHVsbC8zM10KLVNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci0tLS0KLSB2YS93YXlsYW5kL01ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgIHwgICA1ICstCi0gdmEvd2F5bGFuZC93YXlsYW5kLWRybS1jbGllbnQtcHJvdG9jb2wuaCB8IDI5MCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDI5MSBkZWxldGlvbnMoLSkKLSBkZWxldGUgbW9kZSAxMDA2NDQgdmEvd2F5bGFuZC93YXlsYW5kLWRybS1jbGllbnQtcHJvdG9jb2wuaAotCi1kaWZmIC0tZ2l0IGEvdmEvd2F5bGFuZC9NYWtlZmlsZS5hbSBiL3ZhL3dheWxhbmQvTWFrZWZpbGUuYW0KLWluZGV4IDRmODI2MmMuLjRhYjhkMDcgMTAwNjQ0Ci0tLS0gYS92YS93YXlsYW5kL01ha2VmaWxlLmFtCi0rKysgYi92YS93YXlsYW5kL01ha2VmaWxlLmFtCi1AQCAtNTMsNyArNTMsNyBAQCBwcm90b2NvbF9zb3VyY2VfaCA9IFwKLSBub2luc3RfTFRMSUJSQVJJRVMJCT0gbGlidmFfd2F5bGFuZC5sYQotIGxpYnZhX3dheWxhbmRpbmNsdWRlZGlyCQk9ICR7aW5jbHVkZWRpcn0vdmEKLSBsaWJ2YV93YXlsYW5kaW5jbHVkZV9IRUFERVJTCT0gJChzb3VyY2VfaCkKLS1saWJ2YV93YXlsYW5kX2xhX1NPVVJDRVMJPSAkKHNvdXJjZV9jKSAkKHByb3RvY29sX3NvdXJjZV9oKQotK2xpYnZhX3dheWxhbmRfbGFfU09VUkNFUwk9ICQoc291cmNlX2MpCi0gbm9pbnN0X0hFQURFUlMJCQk9ICQoc291cmNlX2hfcHJpdikKLSAKLSAjIFdheWxhbmQgcHJvdG9jb2wKLUBAIC02NSw1ICs2NSw4IEBAIEVYVFJBX0RJU1QgPSBcCi0gCXdheWxhbmQtZHJtLnhtbCAgICAgICAgIFwKLSAJJChOVUxMKQotIAotK0JVSUxUX1NPVVJDRVMgPSAkKHByb3RvY29sX3NvdXJjZV9oKQotK0NMRUFORklMRVMgPSAkKEJVSUxUX1NPVVJDRVMpCi0rCi0gIyBFeHRyYSBjbGVhbiBmaWxlcyBzbyB0aGF0IG1haW50YWluZXItY2xlYW4gcmVtb3ZlcyAqZXZlcnl0aGluZyoKLSBNQUlOVEFJTkVSQ0xFQU5GSUxFUyA9IE1ha2VmaWxlLmluCi1kaWZmIC0tZ2l0IGEvdmEvd2F5bGFuZC93YXlsYW5kLWRybS1jbGllbnQtcHJvdG9jb2wuaCBiL3ZhL3dheWxhbmQvd2F5bGFuZC1kcm0tY2xpZW50LXByb3RvY29sLmgKLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggZGEyNjdlOC4uMDAwMDAwMAotLS0tIGEvdmEvd2F5bGFuZC93YXlsYW5kLWRybS1jbGllbnQtcHJvdG9jb2wuaAotKysrIC9kZXYvbnVsbAotQEAgLTEsMjkwICswLDAgQEAKLS0vKiBHZW5lcmF0ZWQgYnkgd2F5bGFuZC1zY2FubmVyIDEuMTEuOTAgKi8KLS0KLS0jaWZuZGVmIERSTV9DTElFTlRfUFJPVE9DT0xfSAotLSNkZWZpbmUgRFJNX0NMSUVOVF9QUk9UT0NPTF9ICi0tCi0tI2luY2x1ZGUgPHN0ZGludC5oPgotLSNpbmNsdWRlIDxzdGRkZWYuaD4KLS0jaW5jbHVkZSAid2F5bGFuZC1jbGllbnQuaCIKLS0KLS0jaWZkZWYgIF9fY3BsdXNwbHVzCi0tZXh0ZXJuICJDIiB7Ci0tI2VuZGlmCi0tCi0tLyoqCi0tICogQHBhZ2UgcGFnZV9kcm0gVGhlIGRybSBwcm90b2NvbAotLSAqIEBzZWN0aW9uIHBhZ2VfaWZhY2VzX2RybSBJbnRlcmZhY2VzCi0tICogLSBAc3VicGFnZSBwYWdlX2lmYWNlX3dsX2RybSAtIAotLSAqIEBzZWN0aW9uIHBhZ2VfY29weXJpZ2h0X2RybSBDb3B5cmlnaHQKLS0gKiA8cHJlPgotLSAqCi0tICogQ29weXJpZ2h0IMKpIDIwMDgtMjAxMSBLcmlzdGlhbiBIw7hnc2JlcmcKLS0gKiBDb3B5cmlnaHQgwqkgMjAxMC0yMDExIEludGVsIENvcnBvcmF0aW9uCi0tICoKLS0gKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBkaXN0cmlidXRlLCBhbmQgc2VsbCB0aGlzCi0tICogc29mdHdhcmUgYW5kIGl0cyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBpcyBoZXJlYnkgZ3JhbnRlZAotLSAqIHdpdGhvdXQgZmVlLCBwcm92aWRlZCB0aGF0XG4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYXBwZWFyIGluCi0tICogYWxsIGNvcGllcyBhbmQgdGhhdCBib3RoIHRoYXQgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uCi0tICogbm90aWNlIGFwcGVhciBpbiBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24sIGFuZCB0aGF0IHRoZSBuYW1lIG9mCi0tICogdGhlIGNvcHlyaWdodCBob2xkZXJzIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIHB1YmxpY2l0eQotLSAqIHBlcnRhaW5pbmcgdG8gZGlzdHJpYnV0aW9uIG9mIHRoZSBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljLAotLSAqIHdyaXR0ZW4gcHJpb3IgcGVybWlzc2lvbi4gIFRoZSBjb3B5cmlnaHQgaG9sZGVycyBtYWtlIG5vCi0tICogcmVwcmVzZW50YXRpb25zIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlIGZvciBhbnkKLS0gKiBwdXJwb3NlLiAgSXQgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZAotLSAqIHdhcnJhbnR5LgotLSAqCi0tICogVEhFIENPUFlSSUdIVCBIT0xERVJTIERJU0NMQUlNIEFMTCBXQVJSQU5USUVTIFdJVEggUkVHQVJEIFRPIFRISVMKLS0gKiBTT0ZUV0FSRSwgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORAotLSAqIEZJVE5FU1MsIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWQotLSAqIFNQRUNJQUwsIElORElSRUNUIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUwotLSAqIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTgotLSAqIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sCi0tICogQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YKLS0gKiBUSElTIFNPRlRXQVJFLgotLSAqIDwvcHJlPgotLSAqLwotLXN0cnVjdCB3bF9idWZmZXI7Ci0tc3RydWN0IHdsX2RybTsKLS0KLS0vKioKLS0gKiBAcGFnZSBwYWdlX2lmYWNlX3dsX2RybSB3bF9kcm0KLS0gKiBAc2VjdGlvbiBwYWdlX2lmYWNlX3dsX2RybV9hcGkgQVBJCi0tICogU2VlIEByZWYgaWZhY2Vfd2xfZHJtLgotLSAqLwotLS8qKgotLSAqIEBkZWZncm91cCBpZmFjZV93bF9kcm0gVGhlIHdsX2RybSBpbnRlcmZhY2UKLS0gKi8KLS1leHRlcm4gY29uc3Qgc3RydWN0IHdsX2ludGVyZmFjZSB3bF9kcm1faW50ZXJmYWNlOwotLQotLSNpZm5kZWYgV0xfRFJNX0VSUk9SX0VOVU0KLS0jZGVmaW5lIFdMX0RSTV9FUlJPUl9FTlVNCi0tZW51bSB3bF9kcm1fZXJyb3IgewotLQlXTF9EUk1fRVJST1JfQVVUSEVOVElDQVRFX0ZBSUwgPSAwLAotLQlXTF9EUk1fRVJST1JfSU5WQUxJRF9GT1JNQVQgPSAxLAotLQlXTF9EUk1fRVJST1JfSU5WQUxJRF9OQU1FID0gMiwKLS19OwotLSNlbmRpZiAvKiBXTF9EUk1fRVJST1JfRU5VTSAqLwotLQotLSNpZm5kZWYgV0xfRFJNX0ZPUk1BVF9FTlVNCi0tI2RlZmluZSBXTF9EUk1fRk9STUFUX0VOVU0KLS1lbnVtIHdsX2RybV9mb3JtYXQgewotLQlXTF9EUk1fRk9STUFUX0M4ID0gMHgyMDIwMzg0MywKLS0JV0xfRFJNX0ZPUk1BVF9SR0IzMzIgPSAweDM4NDI0NzUyLAotLQlXTF9EUk1fRk9STUFUX0JHUjIzMyA9IDB4Mzg1MjQ3NDIsCi0tCVdMX0RSTV9GT1JNQVRfWFJHQjQ0NDQgPSAweDMyMzE1MjU4LAotLQlXTF9EUk1fRk9STUFUX1hCR1I0NDQ0ID0gMHgzMjMxNDI1OCwKLS0JV0xfRFJNX0ZPUk1BVF9SR0JYNDQ0NCA9IDB4MzIzMTU4NTIsCi0tCVdMX0RSTV9GT1JNQVRfQkdSWDQ0NDQgPSAweDMyMzE1ODQyLAotLQlXTF9EUk1fRk9STUFUX0FSR0I0NDQ0ID0gMHgzMjMxNTI0MSwKLS0JV0xfRFJNX0ZPUk1BVF9BQkdSNDQ0NCA9IDB4MzIzMTQyNDEsCi0tCVdMX0RSTV9GT1JNQVRfUkdCQTQ0NDQgPSAweDMyMzE0MTUyLAotLQlXTF9EUk1fRk9STUFUX0JHUkE0NDQ0ID0gMHgzMjMxNDE0MiwKLS0JV0xfRFJNX0ZPUk1BVF9YUkdCMTU1NSA9IDB4MzUzMTUyNTgsCi0tCVdMX0RSTV9GT1JNQVRfWEJHUjE1NTUgPSAweDM1MzE0MjU4LAotLQlXTF9EUk1fRk9STUFUX1JHQlg1NTUxID0gMHgzNTMxNTg1MiwKLS0JV0xfRFJNX0ZPUk1BVF9CR1JYNTU1MSA9IDB4MzUzMTU4NDIsCi0tCVdMX0RSTV9GT1JNQVRfQVJHQjE1NTUgPSAweDM1MzE1MjQxLAotLQlXTF9EUk1fRk9STUFUX0FCR1IxNTU1ID0gMHgzNTMxNDI0MSwKLS0JV0xfRFJNX0ZPUk1BVF9SR0JBNTU1MSA9IDB4MzUzMTQxNTIsCi0tCVdMX0RSTV9GT1JNQVRfQkdSQTU1NTEgPSAweDM1MzE0MTQyLAotLQlXTF9EUk1fRk9STUFUX1JHQjU2NSA9IDB4MzYzMTQ3NTIsCi0tCVdMX0RSTV9GT1JNQVRfQkdSNTY1ID0gMHgzNjMxNDc0MiwKLS0JV0xfRFJNX0ZPUk1BVF9SR0I4ODggPSAweDM0MzI0NzUyLAotLQlXTF9EUk1fRk9STUFUX0JHUjg4OCA9IDB4MzQzMjQ3NDIsCi0tCVdMX0RSTV9GT1JNQVRfWFJHQjg4ODggPSAweDM0MzI1MjU4LAotLQlXTF9EUk1fRk9STUFUX1hCR1I4ODg4ID0gMHgzNDMyNDI1OCwKLS0JV0xfRFJNX0ZPUk1BVF9SR0JYODg4OCA9IDB4MzQzMjU4NTIsCi0tCVdMX0RSTV9GT1JNQVRfQkdSWDg4ODggPSAweDM0MzI1ODQyLAotLQlXTF9EUk1fRk9STUFUX0FSR0I4ODg4ID0gMHgzNDMyNTI0MSwKLS0JV0xfRFJNX0ZPUk1BVF9BQkdSODg4OCA9IDB4MzQzMjQyNDEsCi0tCVdMX0RSTV9GT1JNQVRfUkdCQTg4ODggPSAweDM0MzI0MTUyLAotLQlXTF9EUk1fRk9STUFUX0JHUkE4ODg4ID0gMHgzNDMyNDE0MiwKLS0JV0xfRFJNX0ZPUk1BVF9YUkdCMjEwMTAxMCA9IDB4MzAzMzUyNTgsCi0tCVdMX0RSTV9GT1JNQVRfWEJHUjIxMDEwMTAgPSAweDMwMzM0MjU4LAotLQlXTF9EUk1fRk9STUFUX1JHQlgxMDEwMTAyID0gMHgzMDMzNTg1MiwKLS0JV0xfRFJNX0ZPUk1BVF9CR1JYMTAxMDEwMiA9IDB4MzAzMzU4NDIsCi0tCVdMX0RSTV9GT1JNQVRfQVJHQjIxMDEwMTAgPSAweDMwMzM1MjQxLAotLQlXTF9EUk1fRk9STUFUX0FCR1IyMTAxMDEwID0gMHgzMDMzNDI0MSwKLS0JV0xfRFJNX0ZPUk1BVF9SR0JBMTAxMDEwMiA9IDB4MzAzMzQxNTIsCi0tCVdMX0RSTV9GT1JNQVRfQkdSQTEwMTAxMDIgPSAweDMwMzM0MTQyLAotLQlXTF9EUk1fRk9STUFUX1lVWVYgPSAweDU2NTk1NTU5LAotLQlXTF9EUk1fRk9STUFUX1lWWVUgPSAweDU1NTk1NjU5LAotLQlXTF9EUk1fRk9STUFUX1VZVlkgPSAweDU5NTY1OTU1LAotLQlXTF9EUk1fRk9STUFUX1ZZVVkgPSAweDU5NTU1OTU2LAotLQlXTF9EUk1fRk9STUFUX0FZVVYgPSAweDU2NTU1OTQxLAotLQlXTF9EUk1fRk9STUFUX05WMTIgPSAweDMyMzE1NjRlLAotLQlXTF9EUk1fRk9STUFUX05WMjEgPSAweDMxMzI1NjRlLAotLQlXTF9EUk1fRk9STUFUX05WMTYgPSAweDM2MzE1NjRlLAotLQlXTF9EUk1fRk9STUFUX05WNjEgPSAweDMxMzY1NjRlLAotLQlXTF9EUk1fRk9STUFUX1lVVjQxMCA9IDB4Mzk1NjU1NTksCi0tCVdMX0RSTV9GT1JNQVRfWVZVNDEwID0gMHgzOTU1NTY1OSwKLS0JV0xfRFJNX0ZPUk1BVF9ZVVY0MTEgPSAweDMxMzE1NTU5LAotLQlXTF9EUk1fRk9STUFUX1lWVTQxMSA9IDB4MzEzMTU2NTksCi0tCVdMX0RSTV9GT1JNQVRfWVVWNDIwID0gMHgzMjMxNTU1OSwKLS0JV0xfRFJNX0ZPUk1BVF9ZVlU0MjAgPSAweDMyMzE1NjU5LAotLQlXTF9EUk1fRk9STUFUX1lVVjQyMiA9IDB4MzYzMTU1NTksCi0tCVdMX0RSTV9GT1JNQVRfWVZVNDIyID0gMHgzNjMxNTY1OSwKLS0JV0xfRFJNX0ZPUk1BVF9ZVVY0NDQgPSAweDM0MzI1NTU5LAotLQlXTF9EUk1fRk9STUFUX1lWVTQ0NCA9IDB4MzQzMjU2NTksCi0tfTsKLS0jZW5kaWYgLyogV0xfRFJNX0ZPUk1BVF9FTlVNICovCi0tCi0tI2lmbmRlZiBXTF9EUk1fQ0FQQUJJTElUWV9FTlVNCi0tI2RlZmluZSBXTF9EUk1fQ0FQQUJJTElUWV9FTlVNCi0tLyoqCi0tICogQGluZ3JvdXAgaWZhY2Vfd2xfZHJtCi0tICogd2xfZHJtIGNhcGFiaWxpdHkgYml0bWFzawotLSAqCi0tICogQml0bWFzayBvZiBjYXBhYmlsaXRpZXMuCi0tICovCi0tZW51bSB3bF9kcm1fY2FwYWJpbGl0eSB7Ci0tCS8qKgotLQkgKiB3bF9kcm0gcHJpbWUgYXZhaWxhYmxlCi0tCSAqLwotLQlXTF9EUk1fQ0FQQUJJTElUWV9QUklNRSA9IDEsCi0tfTsKLS0jZW5kaWYgLyogV0xfRFJNX0NBUEFCSUxJVFlfRU5VTSAqLwotLQotLS8qKgotLSAqIEBpbmdyb3VwIGlmYWNlX3dsX2RybQotLSAqIEBzdHJ1Y3Qgd2xfZHJtX2xpc3RlbmVyCi0tICovCi0tc3RydWN0IHdsX2RybV9saXN0ZW5lciB7Ci0tCS8qKgotLQkgKi8KLS0Jdm9pZCAoKmRldmljZSkodm9pZCAqZGF0YSwKLS0JCSAgICAgICBzdHJ1Y3Qgd2xfZHJtICp3bF9kcm0sCi0tCQkgICAgICAgY29uc3QgY2hhciAqbmFtZSk7Ci0tCS8qKgotLQkgKi8KLS0Jdm9pZCAoKmZvcm1hdCkodm9pZCAqZGF0YSwKLS0JCSAgICAgICBzdHJ1Y3Qgd2xfZHJtICp3bF9kcm0sCi0tCQkgICAgICAgdWludDMyX3QgZm9ybWF0KTsKLS0JLyoqCi0tCSAqLwotLQl2b2lkICgqYXV0aGVudGljYXRlZCkodm9pZCAqZGF0YSwKLS0JCQkgICAgICBzdHJ1Y3Qgd2xfZHJtICp3bF9kcm0pOwotLQkvKioKLS0JICovCi0tCXZvaWQgKCpjYXBhYmlsaXRpZXMpKHZvaWQgKmRhdGEsCi0tCQkJICAgICBzdHJ1Y3Qgd2xfZHJtICp3bF9kcm0sCi0tCQkJICAgICB1aW50MzJfdCB2YWx1ZSk7Ci0tfTsKLS0KLS0vKioKLS0gKiBAaW5ncm91cCB3bF9kcm1faWZhY2UKLS0gKi8KLS1zdGF0aWMgaW5saW5lIGludAotLXdsX2RybV9hZGRfbGlzdGVuZXIoc3RydWN0IHdsX2RybSAqd2xfZHJtLAotLQkJICAgIGNvbnN0IHN0cnVjdCB3bF9kcm1fbGlzdGVuZXIgKmxpc3RlbmVyLCB2b2lkICpkYXRhKQotLXsKLS0JcmV0dXJuIHdsX3Byb3h5X2FkZF9saXN0ZW5lcigoc3RydWN0IHdsX3Byb3h5ICopIHdsX2RybSwKLS0JCQkJICAgICAodm9pZCAoKiopKHZvaWQpKSBsaXN0ZW5lciwgZGF0YSk7Ci0tfQotLQotLSNkZWZpbmUgV0xfRFJNX0FVVEhFTlRJQ0FURSAwCi0tI2RlZmluZSBXTF9EUk1fQ1JFQVRFX0JVRkZFUiAxCi0tI2RlZmluZSBXTF9EUk1fQ1JFQVRFX1BMQU5BUl9CVUZGRVIgMgotLSNkZWZpbmUgV0xfRFJNX0NSRUFURV9QUklNRV9CVUZGRVIgMwotLQotLS8qKgotLSAqIEBpbmdyb3VwIGlmYWNlX3dsX2RybQotLSAqLwotLSNkZWZpbmUgV0xfRFJNX0FVVEhFTlRJQ0FURV9TSU5DRV9WRVJTSU9OIDEKLS0vKioKLS0gKiBAaW5ncm91cCBpZmFjZV93bF9kcm0KLS0gKi8KLS0jZGVmaW5lIFdMX0RSTV9DUkVBVEVfQlVGRkVSX1NJTkNFX1ZFUlNJT04gMQotLS8qKgotLSAqIEBpbmdyb3VwIGlmYWNlX3dsX2RybQotLSAqLwotLSNkZWZpbmUgV0xfRFJNX0NSRUFURV9QTEFOQVJfQlVGRkVSX1NJTkNFX1ZFUlNJT04gMQotLS8qKgotLSAqIEBpbmdyb3VwIGlmYWNlX3dsX2RybQotLSAqLwotLSNkZWZpbmUgV0xfRFJNX0NSRUFURV9QUklNRV9CVUZGRVJfU0lOQ0VfVkVSU0lPTiAyCi0tCi0tLyoqIEBpbmdyb3VwIGlmYWNlX3dsX2RybSAqLwotLXN0YXRpYyBpbmxpbmUgdm9pZAotLXdsX2RybV9zZXRfdXNlcl9kYXRhKHN0cnVjdCB3bF9kcm0gKndsX2RybSwgdm9pZCAqdXNlcl9kYXRhKQotLXsKLS0Jd2xfcHJveHlfc2V0X3VzZXJfZGF0YSgoc3RydWN0IHdsX3Byb3h5ICopIHdsX2RybSwgdXNlcl9kYXRhKTsKLS19Ci0tCi0tLyoqIEBpbmdyb3VwIGlmYWNlX3dsX2RybSAqLwotLXN0YXRpYyBpbmxpbmUgdm9pZCAqCi0td2xfZHJtX2dldF91c2VyX2RhdGEoc3RydWN0IHdsX2RybSAqd2xfZHJtKQotLXsKLS0JcmV0dXJuIHdsX3Byb3h5X2dldF91c2VyX2RhdGEoKHN0cnVjdCB3bF9wcm94eSAqKSB3bF9kcm0pOwotLX0KLS0KLS1zdGF0aWMgaW5saW5lIHVpbnQzMl90Ci0td2xfZHJtX2dldF92ZXJzaW9uKHN0cnVjdCB3bF9kcm0gKndsX2RybSkKLS17Ci0tCXJldHVybiB3bF9wcm94eV9nZXRfdmVyc2lvbigoc3RydWN0IHdsX3Byb3h5ICopIHdsX2RybSk7Ci0tfQotLQotLS8qKiBAaW5ncm91cCBpZmFjZV93bF9kcm0gKi8KLS1zdGF0aWMgaW5saW5lIHZvaWQKLS13bF9kcm1fZGVzdHJveShzdHJ1Y3Qgd2xfZHJtICp3bF9kcm0pCi0tewotLQl3bF9wcm94eV9kZXN0cm95KChzdHJ1Y3Qgd2xfcHJveHkgKikgd2xfZHJtKTsKLS19Ci0tCi0tLyoqCi0tICogQGluZ3JvdXAgaWZhY2Vfd2xfZHJtCi0tICovCi0tc3RhdGljIGlubGluZSB2b2lkCi0td2xfZHJtX2F1dGhlbnRpY2F0ZShzdHJ1Y3Qgd2xfZHJtICp3bF9kcm0sIHVpbnQzMl90IGlkKQotLXsKLS0Jd2xfcHJveHlfbWFyc2hhbCgoc3RydWN0IHdsX3Byb3h5ICopIHdsX2RybSwKLS0JCQkgV0xfRFJNX0FVVEhFTlRJQ0FURSwgaWQpOwotLX0KLS0KLS0vKioKLS0gKiBAaW5ncm91cCBpZmFjZV93bF9kcm0KLS0gKi8KLS1zdGF0aWMgaW5saW5lIHN0cnVjdCB3bF9idWZmZXIgKgotLXdsX2RybV9jcmVhdGVfYnVmZmVyKHN0cnVjdCB3bF9kcm0gKndsX2RybSwgdWludDMyX3QgbmFtZSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IHN0cmlkZSwgdWludDMyX3QgZm9ybWF0KQotLXsKLS0Jc3RydWN0IHdsX3Byb3h5ICppZDsKLS0KLS0JaWQgPSB3bF9wcm94eV9tYXJzaGFsX2NvbnN0cnVjdG9yKChzdHJ1Y3Qgd2xfcHJveHkgKikgd2xfZHJtLAotLQkJCSBXTF9EUk1fQ1JFQVRFX0JVRkZFUiwgJndsX2J1ZmZlcl9pbnRlcmZhY2UsIE5VTEwsIG5hbWUsIHdpZHRoLCBoZWlnaHQsIHN0cmlkZSwgZm9ybWF0KTsKLS0KLS0JcmV0dXJuIChzdHJ1Y3Qgd2xfYnVmZmVyICopIGlkOwotLX0KLS0KLS0vKioKLS0gKiBAaW5ncm91cCBpZmFjZV93bF9kcm0KLS0gKi8KLS1zdGF0aWMgaW5saW5lIHN0cnVjdCB3bF9idWZmZXIgKgotLXdsX2RybV9jcmVhdGVfcGxhbmFyX2J1ZmZlcihzdHJ1Y3Qgd2xfZHJtICp3bF9kcm0sIHVpbnQzMl90IG5hbWUsIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0LCB1aW50MzJfdCBmb3JtYXQsIGludDMyX3Qgb2Zmc2V0MCwgaW50MzJfdCBzdHJpZGUwLCBpbnQzMl90IG9mZnNldDEsIGludDMyX3Qgc3RyaWRlMSwgaW50MzJfdCBvZmZzZXQyLCBpbnQzMl90IHN0cmlkZTIpCi0tewotLQlzdHJ1Y3Qgd2xfcHJveHkgKmlkOwotLQotLQlpZCA9IHdsX3Byb3h5X21hcnNoYWxfY29uc3RydWN0b3IoKHN0cnVjdCB3bF9wcm94eSAqKSB3bF9kcm0sCi0tCQkJIFdMX0RSTV9DUkVBVEVfUExBTkFSX0JVRkZFUiwgJndsX2J1ZmZlcl9pbnRlcmZhY2UsIE5VTEwsIG5hbWUsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgb2Zmc2V0MCwgc3RyaWRlMCwgb2Zmc2V0MSwgc3RyaWRlMSwgb2Zmc2V0Miwgc3RyaWRlMik7Ci0tCi0tCXJldHVybiAoc3RydWN0IHdsX2J1ZmZlciAqKSBpZDsKLS19Ci0tCi0tLyoqCi0tICogQGluZ3JvdXAgaWZhY2Vfd2xfZHJtCi0tICovCi0tc3RhdGljIGlubGluZSBzdHJ1Y3Qgd2xfYnVmZmVyICoKLS13bF9kcm1fY3JlYXRlX3ByaW1lX2J1ZmZlcihzdHJ1Y3Qgd2xfZHJtICp3bF9kcm0sIGludDMyX3QgbmFtZSwgaW50MzJfdCB3aWR0aCwgaW50MzJfdCBoZWlnaHQsIHVpbnQzMl90IGZvcm1hdCwgaW50MzJfdCBvZmZzZXQwLCBpbnQzMl90IHN0cmlkZTAsIGludDMyX3Qgb2Zmc2V0MSwgaW50MzJfdCBzdHJpZGUxLCBpbnQzMl90IG9mZnNldDIsIGludDMyX3Qgc3RyaWRlMikKLS17Ci0tCXN0cnVjdCB3bF9wcm94eSAqaWQ7Ci0tCi0tCWlkID0gd2xfcHJveHlfbWFyc2hhbF9jb25zdHJ1Y3Rvcigoc3RydWN0IHdsX3Byb3h5ICopIHdsX2RybSwKLS0JCQkgV0xfRFJNX0NSRUFURV9QUklNRV9CVUZGRVIsICZ3bF9idWZmZXJfaW50ZXJmYWNlLCBOVUxMLCBuYW1lLCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIG9mZnNldDAsIHN0cmlkZTAsIG9mZnNldDEsIHN0cmlkZTEsIG9mZnNldDIsIHN0cmlkZTIpOwotLQotLQlyZXR1cm4gKHN0cnVjdCB3bF9idWZmZXIgKikgaWQ7Ci0tfQotLQotLSNpZmRlZiAgX19jcGx1c3BsdXMKLS19Ci0tI2VuZGlmCi0tCi0tI2VuZGlmCi0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvbGlidmEtdXRpbHNfMS44LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhLXV0aWxzXzEuOC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwODJjMTgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhLXV0aWxzXzEuOC4zLmJiCkBAIC0wLDAgKzEsMzMgQEAKK1NVTU1BUlkgPSAibGlidmEtdXRpbHMgaXMgYSBjb2xsZWN0aW9uIG9mIHV0aWxpdGllcyBmcm9tIGxpYnZhIHByb2plY3QiCisKK0RFU0NSSVBUSU9OID0gImxpYnZhLXV0aWxzIGlzIGEgY29sbGVjdGlvbiBvZiB1dGlsaXRpZXMgXAorYW5kIGV4YW1wbGVzIHRvIGV4ZXJjaXNlIFZBLUFQSSBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIGxpYnZhIFwKK3Byb2plY3QuVkEtQVBJIGlzIGFuIG9wZW4tc291cmNlIGxpYnJhcnkgYW5kIEFQSSBzcGVjaWZpY2F0aW9uLCBcCit3aGljaCBwcm92aWRlcyBhY2Nlc3MgdG8gZ3JhcGhpY3MgaGFyZHdhcmUgYWNjZWxlcmF0aW9uIGNhcGFiaWxpdGllcyBcCitmb3IgdmlkZW8gcHJvY2Vzc2luZy4gSXQgY29uc2lzdHMgb2YgYSBtYWluIGxpYnJhcnkgYW5kIGRyaXZlci1zcGVjaWZpYyBcCithY2NlbGVyYXRpb24gYmFja2VuZHMgZm9yIGVhY2ggc3VwcG9ydGVkIGhhcmR3YXJlIHZlbmRvciIKKworSE9NRVBBR0UgPSAiaHR0cHM6Ly8wMS5vcmcvbGludXhtZWRpYS92YWFwaSIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tLzAxb3JnL2xpYnZhLXV0aWxzL2lzc3VlcyIKKworU0VDVElPTiA9ICJ4MTEiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIxNDhmYzhhZGYxOWRjOWFlYzE3Y2Y5Y2QyOWE5YTVlIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vMDFvcmcvbGlidmEtdXRpbHMuZ2l0O2JyYW5jaD12MS44LWJyYW5jaCIKK1NSQ1JFViA9ICIwMTFjNzA5Yjk4YjUyZGIzYjEwYWViMzYxZGZlYTlkYTQzOTMwMzY0IgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS8wMW9yZy9saWJ2YS11dGlscy9yZWxlYXNlcyIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPihcZCsoXC5cZCspKykpIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitERVBFTkRTID0gImxpYnZhIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCisKKyMgZGVwZW5kcyBvbiBsaWJ2YSB3aGljaCByZXF1aXJlcyBvcGVuZ2wKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJvcGVuZ2wiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kIHgxMScsIGQpfSIKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItLWVuYWJsZS14MTEsLS1kaXNhYmxlLXgxMSx2aXJ0dWFsL2xpYngxMSBsaWJ4ZXh0IGxpYnhmaXhlcyIKK1BBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLS1lbmFibGUtd2F5bGFuZCwtLWRpc2FibGUtd2F5bGFuZCx3YXlsYW5kLW5hdGl2ZSB3YXlsYW5kIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YV8xLjcuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvbGlidmFfMS43LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjMGI5MGYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YV8xLjcuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLVNVTU1BUlkgPSAiVmlkZW8gQWNjZWxlcmF0aW9uIChWQSkgQVBJIGZvciBMaW51eCIKLURFU0NSSVBUSU9OID0gIlZpZGVvIEFjY2VsZXJhdGlvbiBBUEkgKFZBIEFQSSkgaXMgYSBsaWJyYXJ5IChsaWJWQSkgXAotYW5kIEFQSSBzcGVjaWZpY2F0aW9uIHdoaWNoIGVuYWJsZXMgYW5kIHByb3ZpZGVzIGFjY2VzcyB0byBncmFwaGljcyBcCi1oYXJkd2FyZSAoR1BVKSBhY2NlbGVyYXRpb24gZm9yIHZpZGVvIHByb2Nlc3Npbmcgb24gTGludXggYW5kIFVOSVggXAotYmFzZWQgb3BlcmF0aW5nIHN5c3RlbXMuIEFjY2VsZXJhdGVkIHByb2Nlc3NpbmcgaW5jbHVkZXMgdmlkZW8gXAotZGVjb2RpbmcsIHZpZGVvIGVuY29kaW5nLCBzdWJwaWN0dXJlIGJsZW5kaW5nIGFuZCByZW5kZXJpbmcuIFRoZSBcCi1zcGVjaWZpY2F0aW9uIHdhcyBvcmlnaW5hbGx5IGRlc2lnbmVkIGJ5IEludGVsIGZvciBpdHMgR01BIChHcmFwaGljcyBcCi1NZWRpYSBBY2NlbGVyYXRvcikgc2VyaWVzIG9mIEdQVSBoYXJkd2FyZSwgdGhlIEFQSSBpcyBob3dldmVyIG5vdCBcCi1saW1pdGVkIHRvIEdQVXMgb3IgSW50ZWwgc3BlY2lmaWMgaGFyZHdhcmUsIGFzIG90aGVyIGhhcmR3YXJlIGFuZCBcCi1tYW51ZmFjdHVyZXJzIGNhbiBhbHNvIGZyZWVseSB1c2UgdGhpcyBBUEkgZm9yIGhhcmR3YXJlIGFjY2VsZXJhdGVkIFwKLXZpZGVvIGRlY29kaW5nLiIKLQotSE9NRVBBR0UgPSAiaHR0cHM6Ly8wMS5vcmcvbGludXhtZWRpYS92YWFwaSIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tLzAxb3JnL2xpYnZhL2lzc3VlcyIKLQotU0VDVElPTiA9ICJ4MTEiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTJlNDg5NDBmOTRhY2IwYWY1ODJlNWVmMDM1Mzc4MDBmIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vMDFvcmcvbGlidmEuZ2l0O3Byb3RvY29sPWh0dHA7YnJhbmNoPXYxLjctYnJhbmNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLVVzZS13YXlsYW5kLXNjYW5uZXItaW4tUEFUSC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXdheWxhbmQtRG9uLXQtY29tbWl0LWFuZC1zaGlwLWdlbmVyYXRlZC1maWxlcy5wYXRjaCIKLVNSQ1JFViA9ICJkYmY5ZjdlMzMzNDljM2NlZThkMTMxZTkzYTZhNGY5MTI1NTYzNWNiIgotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAibGlidmEtKD9QPHB2ZXI+KFxkKyhcLlxkKykrKSkiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLURFUEVORFMgPSAibGliZHJtIHZpcnR1YWwvbWVzYSB2aXJ0dWFsL2xpYmdsZXMxIHZpcnR1YWwvbGliZ2xlczIgdmlydHVhbC9lZ2wiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1kdW1teS1kcml2ZXIiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kIHgxMScsIGQpfSIKLVBBQ0tBR0VDT05GSUdbeDExXSA9ICItLWVuYWJsZS14MTEsLS1kaXNhYmxlLXgxMSx2aXJ0dWFsL2xpYngxMSBsaWJ4ZXh0IGxpYnhmaXhlcyIKLVBBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLS1lbmFibGUtd2F5bGFuZCwtLWRpc2FibGUtd2F5bGFuZCx3YXlsYW5kLW5hdGl2ZSB3YXlsYW5kIgotCi1QQUNLQUdFUyA9KyAiJHtQTn0teDExICR7UE59LXRwaSAke1BOfS1nbHggJHtQTn0tZWdsICR7UE59LXdheWxhbmQiCi0KLVJERVBFTkRTXyR7UE59LXRwaSA9KyAiJHtQTn0iCi1SREVQRU5EU18ke1BOfS14MTEgPSsgIiR7UE59IgotUkRFUEVORFNfJHtQTn0tZ2x4ID0rICIke1BOfS14MTEiCi1SREVQRU5EU18ke1BOfS1lZ2wgPSsgIiR7UE59LXgxMSIKLQotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vZHJpLy5kZWJ1ZyIKLQotRklMRVNfJHtQTn0teDExID0rICIke2xpYmRpcn0vbGlidmEteDExKiR7U09MSUJTfSIKLUZJTEVTXyR7UE59LXRwaSA9KyAiJHtsaWJkaXJ9L2xpYnZhLXRwaSoke1NPTElCU30iCi1GSUxFU18ke1BOfS1nbHggPSsgIiR7bGliZGlyfS9saWJ2YS1nbHgqJHtTT0xJQlN9IgotRklMRVNfJHtQTn0tZWdsID0rICIke2xpYmRpcn0vbGlidmEtZWdsKiR7U09MSUJTfSIKLUZJTEVTXyR7UE59LXdheWxhbmQgPSsgIiR7bGliZGlyfS9saWJ2YS13YXlsYW5kKiR7U09MSUJTfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvbGlidmFfMS44LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhXzEuOC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlZWRhODQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhXzEuOC4zLmJiCkBAIC0wLDAgKzEsNTEgQEAKK1NVTU1BUlkgPSAiVmlkZW8gQWNjZWxlcmF0aW9uIChWQSkgQVBJIGZvciBMaW51eCIKK0RFU0NSSVBUSU9OID0gIlZpZGVvIEFjY2VsZXJhdGlvbiBBUEkgKFZBIEFQSSkgaXMgYSBsaWJyYXJ5IChsaWJWQSkgXAorYW5kIEFQSSBzcGVjaWZpY2F0aW9uIHdoaWNoIGVuYWJsZXMgYW5kIHByb3ZpZGVzIGFjY2VzcyB0byBncmFwaGljcyBcCitoYXJkd2FyZSAoR1BVKSBhY2NlbGVyYXRpb24gZm9yIHZpZGVvIHByb2Nlc3Npbmcgb24gTGludXggYW5kIFVOSVggXAorYmFzZWQgb3BlcmF0aW5nIHN5c3RlbXMuIEFjY2VsZXJhdGVkIHByb2Nlc3NpbmcgaW5jbHVkZXMgdmlkZW8gXAorZGVjb2RpbmcsIHZpZGVvIGVuY29kaW5nLCBzdWJwaWN0dXJlIGJsZW5kaW5nIGFuZCByZW5kZXJpbmcuIFRoZSBcCitzcGVjaWZpY2F0aW9uIHdhcyBvcmlnaW5hbGx5IGRlc2lnbmVkIGJ5IEludGVsIGZvciBpdHMgR01BIChHcmFwaGljcyBcCitNZWRpYSBBY2NlbGVyYXRvcikgc2VyaWVzIG9mIEdQVSBoYXJkd2FyZSwgdGhlIEFQSSBpcyBob3dldmVyIG5vdCBcCitsaW1pdGVkIHRvIEdQVXMgb3IgSW50ZWwgc3BlY2lmaWMgaGFyZHdhcmUsIGFzIG90aGVyIGhhcmR3YXJlIGFuZCBcCittYW51ZmFjdHVyZXJzIGNhbiBhbHNvIGZyZWVseSB1c2UgdGhpcyBBUEkgZm9yIGhhcmR3YXJlIGFjY2VsZXJhdGVkIFwKK3ZpZGVvIGRlY29kaW5nLiIKKworSE9NRVBBR0UgPSAiaHR0cHM6Ly8wMS5vcmcvbGludXhtZWRpYS92YWFwaSIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tLzAxb3JnL2xpYnZhL2lzc3VlcyIKKworU0VDVElPTiA9ICJ4MTEiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTJlNDg5NDBmOTRhY2IwYWY1ODJlNWVmMDM1Mzc4MDBmIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vMDFvcmcvbGlidmEuZ2l0O3Byb3RvY29sPWh0dHA7YnJhbmNoPXYxLjgtYnJhbmNoICIKK1NSQ1JFViA9ICI0NTc0NzA5ODdjYzlkZjU5NzZjZThjNzJmZmQ0YmZiZDliYWFmMGY5IgorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiXig/UDxwdmVyPihcZCsoXC5cZCspKykpJCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworREVQRU5EUyA9ICJsaWJkcm0gdmlydHVhbC9tZXNhIHZpcnR1YWwvbGliZ2xlczEgdmlydHVhbC9saWJnbGVzMiB2aXJ0dWFsL2VnbCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGRpc3Ryb19mZWF0dXJlc19jaGVjaworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAib3BlbmdsIgorCitFWFRSQV9PRUNPTkYgPSAiYWNfY3ZfcHJvZ19XQVlMQU5EX1NDQU5ORVI9d2F5bGFuZC1zY2FubmVyIgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCB4MTEnLCBkKX0iCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLS1lbmFibGUteDExLC0tZGlzYWJsZS14MTEsdmlydHVhbC9saWJ4MTEgbGlieGV4dCBsaWJ4Zml4ZXMiCitQQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIi0tZW5hYmxlLXdheWxhbmQsLS1kaXNhYmxlLXdheWxhbmQsd2F5bGFuZC1uYXRpdmUgd2F5bGFuZCIKKworUEFDS0FHRVMgPSsgIiR7UE59LXgxMSAke1BOfS10cGkgJHtQTn0tZ2x4ICR7UE59LWVnbCAke1BOfS13YXlsYW5kIgorCitSREVQRU5EU18ke1BOfS10cGkgPSsgIiR7UE59IgorUkRFUEVORFNfJHtQTn0teDExID0rICIke1BOfSIKK1JERVBFTkRTXyR7UE59LWdseCA9KyAiJHtQTn0teDExIgorUkRFUEVORFNfJHtQTn0tZWdsID0rICIke1BOfS14MTEiCisKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L2RyaS8uZGVidWciCisKK0ZJTEVTXyR7UE59LXgxMSA9KyAiJHtsaWJkaXJ9L2xpYnZhLXgxMSoke1NPTElCU30iCitGSUxFU18ke1BOfS10cGkgPSsgIiR7bGliZGlyfS9saWJ2YS10cGkqJHtTT0xJQlN9IgorRklMRVNfJHtQTn0tZ2x4ID0rICIke2xpYmRpcn0vbGlidmEtZ2x4KiR7U09MSUJTfSIKK0ZJTEVTXyR7UE59LWVnbCA9KyAiJHtsaWJkaXJ9L2xpYnZhLWVnbCoke1NPTElCU30iCitGSUxFU18ke1BOfS13YXlsYW5kID0rICIke2xpYmRpcn0vbGlidmEtd2F5bGFuZCoke1NPTElCU30iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1NYWtlZmlsZS52dWxrYW4uYW0tZXhwbGljdGx5LWFkZC1saWItZXhwYXQtdG8taW50ZWwtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtTWFrZWZpbGUudnVsa2FuLmFtLWV4cGxpY3RseS1hZGQtbGliLWV4cGF0LXRvLWludGVsLS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZDFlODYzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtTWFrZWZpbGUudnVsa2FuLmFtLWV4cGxpY3RseS1hZGQtbGliLWV4cGF0LXRvLWludGVsLS5wYXRjaApAQCAtMCwwICsxLDQ0IEBACitGcm9tIDM0MjMxMWRiYjE5MDczNWI3YjMyYWIyMGY4MWMxZDhkYmNmZTcxN2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDExIE9jdCAyMDE3IDE1OjQwOjQyICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlLnZ1bGthbi5hbTogZXhwbGljdGx5IGFkZCBsaWIgZXhwYXQgdG8gaW50ZWwKKyBsaWJ2dWxrYW4ncyBsaWIgZGVwZW5kcworCitXaGlsZSBidWlsdCB3aXRoICItZnZpc2liaWxpdHk9ZGVmYXVsdCIKKy4uLgorfGk1ODYtb2UtbGludXgtZ2NjIC4uLiAtZnZpc2liaWxpdHk9ZGVmYXVsdCAuLi4gLW8gY29tbW9uLy5saWJzL2NvbW1vbl9saWJpbnRlbF9jb21tb25fbGEtZ2VuX2RlY29kZXIubworLi4uCisKK0l0IHRyaWdnZXJlZCB0aGUgZmFpbHVyZQorLi4uCit8aTU4Ni1vZS1saW51eC1nKysgIC4uLiBjb21tb24vLmxpYnMvbGliaW50ZWxfY29tbW9uLmEgLi4uIC1vIHZ1bGthbi8ubGlicy9saWJ2dWxrYW5faW50ZWwuc28KK3xjb21tb24vLmxpYnMvbGliaW50ZWxfY29tbW9uLmEoY29tbW9uX2xpYmludGVsX2NvbW1vbl9sYS1nZW5fZGVjb2Rlci5vKToKK3xJbiBmdW5jdGlvbiBgc3RhcnRfZWxlbWVudCc6Cit8L3Vzci9zcmMvZGVidWcvbWVzYS8yXzE3LjEuNy1yMC9tZXNhLTE3LjEuNy9zcmMvaW50ZWwvY29tbW9uL2dlbl9kZWNvZGVyLmM6MzcxOgordW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgWE1MX0dldEN1cnJlbnRMaW5lTnVtYmVyJworLi4uCisKK2V4cGxpY3RseSBhZGQgRVhQQVRfTElCUyB0byBpbnRlbCdzIFZVTEtBTl9MSUJfREVQUworCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbbWVzYS1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnXQorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvaW50ZWwvTWFrZWZpbGUudnVsa2FuLmFtIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9zcmMvaW50ZWwvTWFrZWZpbGUudnVsa2FuLmFtIGIvc3JjL2ludGVsL01ha2VmaWxlLnZ1bGthbi5hbQoraW5kZXggMjcxYjBhNS4uOGZiZTJjOCAxMDA2NDQKKy0tLSBhL3NyYy9pbnRlbC9NYWtlZmlsZS52dWxrYW4uYW0KKysrKyBiL3NyYy9pbnRlbC9NYWtlZmlsZS52dWxrYW4uYW0KK0BAIC0xNDQsNiArMTQ0LDcgQEAgVlVMS0FOX0xJQl9ERVBTID0gXAorIAkkKExJQkRSTV9MSUJTKSBcCisgCSQoUFRIUkVBRF9MSUJTKSBcCisgCSQoRExPUEVOX0xJQlMpIFwKKysJJChFWFBBVF9MSUJTKSBcCisgCS1sbQorIAorIGlmIEhBVkVfUExBVEZPUk1fWDExCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLVVzZS13YXlsYW5kLXNjYW5uZXItaW4tdGhlLXBhdGgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1Vc2Utd2F5bGFuZC1zY2FubmVyLWluLXRoZS1wYXRoLnBhdGNoCmluZGV4IGU0OTY5NWIuLmViNmZmNGYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLVVzZS13YXlsYW5kLXNjYW5uZXItaW4tdGhlLXBhdGgucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtVXNlLXdheWxhbmQtc2Nhbm5lci1pbi10aGUtcGF0aC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gMmY2OGZjYWFmNDk2NGU3ZmVlYjM4M2Y1YzI2ODUxOTY1Y2RhMDM3YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYzkwOGYwYzEzYWM4MWEzYTUyMTQwZjEyOWExM2IyYmM5OTdmZjRlZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CiBEYXRlOiBUdWUsIDE1IE5vdiAyMDE2IDE1OjIwOjQ5ICswMjAwCiBTdWJqZWN0OiBbUEFUQ0hdIFNpbXBsaWZ5IHdheWxhbmQtc2Nhbm5lciBsb29rdXAKQEAgLTE1LDIzICsxNSwyMyBAQAogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgNiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggZTU2ZTM1YS4uYTkyMDA1YSAxMDA2NDQKK2luZGV4IDJjN2U2MzZmYWMuLmQyYjIzNTA3MzkgMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTIwMjAsMTIgKzIwMjAsNyBAQCBpZiB0ZXN0ICJ4JHdpdGhfZWdsX3BsYXRmb3JtcyIgIT0gIngiIC1hICJ4JGVuYWJsZV9lZ2wiICE9IHh5ZXM7IHRoZW4KLSAgICAgQUNfTVNHX0VSUk9SKFtjYW5ub3QgYnVpbGQgZWdsIHN0YXRlIHRyYWNrZXIgd2l0aG91dCBFR0wgbGlicmFyeV0pCitAQCAtMjE3NCwxMiArMjE3NCw3IEBAIGlmIHRlc3QgIngkd2l0aF9wbGF0Zm9ybXMiICE9IHhhdXRvOyB0aGVuCisgICAgIHdpdGhfZWdsX3BsYXRmb3Jtcz0kd2l0aF9wbGF0Zm9ybXMKICBmaQogIAogLVBLR19DSEVDS19NT0RVTEVTKFtXQVlMQU5EX1NDQU5ORVJdLCBbd2F5bGFuZC1zY2FubmVyXSwKIC0gICAgICAgIFdBWUxBTkRfU0NBTk5FUj1gJFBLR19DT05GSUcgLS12YXJpYWJsZT13YXlsYW5kX3NjYW5uZXIgd2F5bGFuZC1zY2FubmVyYCwKIC0gICAgICAgIFdBWUxBTkRfU0NBTk5FUj0nJykKIC1pZiB0ZXN0ICJ4JFdBWUxBTkRfU0NBTk5FUiIgPSB4OyB0aGVuCi0tICAgIEFDX1BBVEhfUFJPRyhbV0FZTEFORF9TQ0FOTkVSXSwgW3dheWxhbmQtc2Nhbm5lcl0pCistICAgIEFDX1BBVEhfUFJPRyhbV0FZTEFORF9TQ0FOTkVSXSwgW3dheWxhbmQtc2Nhbm5lcl0sIFs6XSkKIC1maQogK0FDX1BBVEhfUFJPRyhbV0FZTEFORF9TQ0FOTkVSXSwgW3dheWxhbmQtc2Nhbm5lcl0pCiAgCiAgIyBEbyBwZXItRUdMIHBsYXRmb3JtIHNldHVwcyBhbmQgY2hlY2tzCiAgZWdsX3BsYXRmb3Jtcz1gSUZTPScsICc7IGVjaG8gJHdpdGhfZWdsX3BsYXRmb3Jtc2AKIC0tIAotMi4xLjQKKzIuMTMuMAogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1hYy1maXgtYnVpbGQtYWZ0ZXItTExWTS01LjAtU1ZOLXIzMDA3MTgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1hYy1maXgtYnVpbGQtYWZ0ZXItTExWTS01LjAtU1ZOLXIzMDA3MTgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjI3YTNiYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLWFjLWZpeC1idWlsZC1hZnRlci1MTFZNLTUuMC1TVk4tcjMwMDcxOC5wYXRjaApAQCAtMCwwICsxLDQwIEBACitGcm9tIDk4NjE0MzdlNThmZGQwZGUwMTE5M2ExMDI2MDhkMzRlNTk1Mjk1M2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaHJpc3RvcGggSGFhZyA8aGFhZ2NoK21lc2FkZXZAZnJpY2tlbC5jbHViPgorRGF0ZTogVGh1LCAyMCBBcHIgMjAxNyAxMDozNDoxOCArMDIwMAorU3ViamVjdDogW1BBVENIIDEvMl0gYWM6IGZpeCBidWlsZCBhZnRlciBMTFZNIDUuMCBTVk4gcjMwMDcxOAorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCit2MjogcHJldmlvdXNseSBnZXRXaXRoRGVyZWZlcmVuY2VhYmxlQnl0ZXMoKSBleGlzdHMsIGJ1dCBhZGRBdHRyKCkgZG9lc24ndCB0YWtlIHRoYXQgdHlwZQorCitTaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGggSGFhZyA8aGFhZ2NoK21lc2FkZXZAZnJpY2tlbC5jbHViPgorUmV2aWV3ZWQtYnk6IE5pY29sYWkgSMOkaG5sZSA8bmljb2xhaS5oYWVobmxlQGFtZC5jb20+CitUZXN0ZWQtYW5kLXJldmlld2VkLWJ5OiBNaWtlIExvdGhpYW4gPG1pa2VAZmlyZWJ1cm4uY28udWs+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworIHNyYy9hbWQvY29tbW9uL2FjX2xsdm1faGVscGVyLmNwcCB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9hbWQvY29tbW9uL2FjX2xsdm1faGVscGVyLmNwcCBiL3NyYy9hbWQvY29tbW9uL2FjX2xsdm1faGVscGVyLmNwcAoraW5kZXggZDllYTRiMS4uMTFmYTgwOSAxMDA2NDQKKy0tLSBhL3NyYy9hbWQvY29tbW9uL2FjX2xsdm1faGVscGVyLmNwcAorKysrIGIvc3JjL2FtZC9jb21tb24vYWNfbGx2bV9oZWxwZXIuY3BwCitAQCAtNDQsOSArNDQsMTMgQEAgdHlwZWRlZiBBdHRyaWJ1dGVTZXQgQXR0cmlidXRlTGlzdDsKKyB2b2lkIGFjX2FkZF9hdHRyX2RlcmVmZXJlbmNlYWJsZShMTFZNVmFsdWVSZWYgdmFsLCB1aW50NjRfdCBieXRlcykKKyB7CisgICAgbGx2bTo6QXJndW1lbnQgKkEgPSBsbHZtOjp1bndyYXA8bGx2bTo6QXJndW1lbnQ+KHZhbCk7CisrI2lmIEhBVkVfTExWTSA8IDB4MDUwMAorICAgIGxsdm06OkF0dHJCdWlsZGVyIEI7CisgICAgQi5hZGREZXJlZmVyZW5jZWFibGVBdHRyKGJ5dGVzKTsKKyAgICBBLT5hZGRBdHRyKGxsdm06OkF0dHJpYnV0ZUxpc3Q6OmdldChBLT5nZXRDb250ZXh0KCksIEEtPmdldEFyZ05vKCkgKyAxLCAgQikpOworKyNlbHNlCisrICAgQS0+YWRkQXR0cihsbHZtOjpBdHRyaWJ1dGU6OmdldFdpdGhEZXJlZmVyZW5jZWFibGVCeXRlcyhBLT5nZXRDb250ZXh0KCksIGJ5dGVzKSk7CisrI2VuZGlmCisgfQorIAorIGJvb2wgYWNfaXNfc2dwcl9wYXJhbShMTFZNVmFsdWVSZWYgYXJnKQorLS0gCisyLjEzLjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtY29uZmlndXJlLmFjLUFsd2F5cy1jaGVjay1mb3ItZXhwYXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1jb25maWd1cmUuYWMtQWx3YXlzLWNoZWNrLWZvci1leHBhdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NzUzYzQ5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtY29uZmlndXJlLmFjLUFsd2F5cy1jaGVjay1mb3ItZXhwYXQucGF0Y2gKQEAgLTAsMCArMSw1MSBAQAorRnJvbSAxZjdkNzUyMTkzZjAyZDE1ZDU5MjNjZWU5OTJlOGY0NmQ0YzZkZjFiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KK0RhdGU6IE1vbiwgMjggQXVnIDIwMTcgMTM6NTE6NDkgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmFjOiBBbHdheXMgY2hlY2sgZm9yIGV4cGF0CisKK2V4cGF0IHdhcyBub3QgY2hlY2tlZCBpZiBkcmkgd2FzIG5vdCBidWlsdCBsZWFkaW5nIHRvIGJ1aWxkIGZhaWx1cmUKK2luIHZ1bGthbiBkcml2ZXI6IGJhY2twb3J0IGEgZml4IChhIGNvbWJpbmF0aW9uIG9mIG11bHRpcGxlIGNvbW1pdHMKK3RoYXQgc2hvdWxkIGVuZCB1cCBpbiAxNy4zKS4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDE1ICsrKysrKy0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGZkMzQ2YzhhYTIuLjY2MmZhZWNlZmEgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTE3NzcsNiArMTc3NywxMiBAQCBpZiB0ZXN0ICJ4JHdpdGhfZHJpX2RyaXZlcnMiID0geG5vOyB0aGVuCisgICAgIHdpdGhfZHJpX2RyaXZlcnM9JycKKyBmaQorIAorKyMgQ2hlY2sgZm9yIGV4cGF0CisrUEtHX0NIRUNLX01PRFVMRVMoW0VYUEFUXSwgW2V4cGF0XSkKKytQS0dfQ0hFQ0tfTU9EVUxFUyhbRVhQQVRdLCBbZXhwYXRdLCwKKysgICAgW1BLR19DSEVDS19NT0RVTEVTKFtFWFBBVF0sIFtleHBhdDIxXSldCisrKQorKworIGRubCBJZiAkd2l0aF9kcmlfZHJpdmVycyBpcyB5ZXMsIGRyaXZlcnMgd2lsbCBiZSBhZGRlZCB0aHJvdWdoCisgZG5sIHBsYXRmb3JtIGNoZWNrcy4gU2V0IERFRklORVMgYW5kIExJQl9ERVBTCisgaWYgdGVzdCAieCRlbmFibGVfZHJpIiA9IHh5ZXM7IHRoZW4KK0BAIC0xODEwLDE1ICsxODE2LDYgQEAgaWYgdGVzdCAieCRlbmFibGVfZHJpIiA9IHh5ZXM7IHRoZW4KKyAgICAgICAgIHdpdGhfZHJpX2RyaXZlcnM9Imk5MTUgaTk2NSBub3V2ZWF1IHIyMDAgcmFkZW9uIHN3cmFzdCIKKyAgICAgZmkKKyAKKy0gICAgIyBDaGVjayBmb3IgZXhwYXQKKy0gICAgUEtHX0NIRUNLX01PRFVMRVMoW0VYUEFUXSwgW2V4cGF0XSwgW10sCistICAgICAgICAjIGV4cGF0IHZlcnNpb24gMi4wIGFuZCBlYXJsaWVyIGRvIG5vdCBwcm92aWRlIGV4cGF0LnBjCistICAgICAgICBbQUNfQ0hFQ0tfSEVBREVSKFtleHBhdC5oXSxbXSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgW0FDX01TR19FUlJPUihbRXhwYXQgaGVhZGVycyByZXF1aXJlZCBmb3IgRFJJIG5vdCBmb3VuZF0pXSkKKy0gICAgICAgICBBQ19DSEVDS19MSUIoW2V4cGF0XSxbWE1MX1BhcnNlckNyZWF0ZV0sW10sCistICAgICAgICAgICAgICAgICAgICAgW0FDX01TR19FUlJPUihbRXhwYXQgbGlicmFyeSByZXF1aXJlZCBmb3IgRFJJIG5vdCBmb3VuZF0pXSkKKy0gICAgICAgICBFWFBBVF9MSUJTPSItbGV4cGF0Il0pCistCisgICAgICMgcHV0IGFsbCB0aGUgbmVjZXNzYXJ5IGxpYnMgdG9nZXRoZXIKKyAgICAgRFJJX0xJQl9ERVBTPSIkRFJJX0xJQl9ERVBTICRTRUxJTlVYX0xJQlMgJExJQkRSTV9MSUJTICRFWFBBVF9MSUJTIC1sbSAkUFRIUkVBRF9MSUJTICRETE9QRU5fTElCUyIKKyBmaQorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtd2luc3lzLXN2Z2EtZHJtLUluY2x1ZGUtc3lzLXR5cGVzLmgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS13aW5zeXMtc3ZnYS1kcm0tSW5jbHVkZS1zeXMtdHlwZXMuaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDliODY3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtd2luc3lzLXN2Z2EtZHJtLUluY2x1ZGUtc3lzLXR5cGVzLmgucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorRnJvbSBkODc1MDc3NjQwNGIxMDMxZDc2Mjk2NmQwZjU1MWQxM2QyZmUwNWE3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTYgQXVnIDIwMTcgMTg6NTg6MjAgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gd2luc3lzL3N2Z2EvZHJtOiBJbmNsdWRlIHN5cy90eXBlcy5oCisKK3Ztd19zY3JlZW4uaCB1c2VzIGRldl90IHdoaWNoIGlzIGRlZmluZXMgaW4gc3lzL3R5cGVzLmgKK3RoaXMgaGVhZGVyIGlzIHJlcXVpcmVkIHRvIGJlIGluY2x1ZGVkIGZvciBnZXR0aW5nIGRldl90CitkZWZpbml0aW9uLiBUaGlzIGlzc3VlIGhhcHBlbnMgb24gbXVzbCBDIGxpYnJhcnksIGl0IGlzIGhpZGRlbgorb24gZ2xpYmMgc2luY2Ugc3lzL3R5cGVzLmggaXMgaW5jbHVkZWQgdGhyb3VnaCBhbm90aGVyCitzeXN0ZW0gaGVhZGVycworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCisKKyBzcmMvZ2FsbGl1bS93aW5zeXMvc3ZnYS9kcm0vdm13X3NjcmVlbi5oIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9zcmMvZ2FsbGl1bS93aW5zeXMvc3ZnYS9kcm0vdm13X3NjcmVlbi5oIGIvc3JjL2dhbGxpdW0vd2luc3lzL3N2Z2EvZHJtL3Ztd19zY3JlZW4uaAoraW5kZXggMGVmOGU4NC4uMmVkYTk3ZSAxMDA2NDQKKy0tLSBhL3NyYy9nYWxsaXVtL3dpbnN5cy9zdmdhL2RybS92bXdfc2NyZWVuLmgKKysrKyBiL3NyYy9nYWxsaXVtL3dpbnN5cy9zdmdhL2RybS92bXdfc2NyZWVuLmgKK0BAIC00MSw2ICs0MSw3IEBACisgI2luY2x1ZGUgInN2Z2Ffd2luc3lzLmgiCisgI2luY2x1ZGUgInBpcGVidWZmZXIvcGJfYnVmZmVyX2ZlbmNlZC5oIgorICNpbmNsdWRlIDxvcy9vc190aHJlYWQuaD4KKysjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgCisgI2RlZmluZSBWTVdfR01SX1BPT0xfU0laRSAoMTYqMTAyNCoxMDI0KQorICNkZWZpbmUgVk1XX1FVRVJZX1BPT0xfU0laRSAoODE5MikKKy0tIAorMi4xNC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAyLWdhbGxpdm0tRml4LWJ1aWxkLWFnYWluc3QtTExWTS1TVk4tcjMwMjU4OS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAyLWdhbGxpdm0tRml4LWJ1aWxkLWFnYWluc3QtTExWTS1TVk4tcjMwMjU4OS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzhjYWVjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDItZ2FsbGl2bS1GaXgtYnVpbGQtYWdhaW5zdC1MTFZNLVNWTi1yMzAyNTg5LnBhdGNoCkBAIC0wLDAgKzEsNDkgQEAKK0Zyb20gYTAyYTBkZmRhMjcxMmQzMGFkNjJiOGYwNDIxZWM3YjgyNDRiYTJjYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9NaWNoZWw9MjBEPUMzPUE0bnplcj89IDxtaWNoZWwuZGFlbnplckBhbWQuY29tPgorRGF0ZTogV2VkLCAxMCBNYXkgMjAxNyAxNzoyNjowNyArMDkwMAorU3ViamVjdDogW1BBVENIIDIvMl0gZ2FsbGl2bTogRml4IGJ1aWxkIGFnYWluc3QgTExWTSBTVk4gPj0gcjMwMjU4OQorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitkZXJlZ2lzdGVyRUhGcmFtZXMgZG9lc24ndCB0YWtlIGFueSBwYXJhbWV0ZXJzIGFueW1vcmUuCisKK1Jldmlld2VkLWJ5OiBWZWRyYW4gTWlsZXRpxIcgPHZlZHJhbkBtaWxldGljLm5ldD4KK1Jldmlld2VkLWJ5OiBNYXJlayBPbMWhw6FrIDxtYXJlay5vbHNha0BhbWQuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKKyBzcmMvZ2FsbGl1bS9hdXhpbGlhcnkvZ2FsbGl2bS9scF9ibGRfbWlzYy5jcHAgfCAxMiArKysrKysrKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2dhbGxpdW0vYXV4aWxpYXJ5L2dhbGxpdm0vbHBfYmxkX21pc2MuY3BwIGIvc3JjL2dhbGxpdW0vYXV4aWxpYXJ5L2dhbGxpdm0vbHBfYmxkX21pc2MuY3BwCitpbmRleCAyYTM4OGNiLi4wZTRhNTMxIDEwMDY0NAorLS0tIGEvc3JjL2dhbGxpdW0vYXV4aWxpYXJ5L2dhbGxpdm0vbHBfYmxkX21pc2MuY3BwCisrKysgYi9zcmMvZ2FsbGl1bS9hdXhpbGlhcnkvZ2FsbGl2bS9scF9ibGRfbWlzYy5jcHAKK0BAIC0zNDIsMTQgKzM0MiwyMCBAQCBjbGFzcyBEZWxlZ2F0aW5nSklUTWVtb3J5TWFuYWdlciA6IHB1YmxpYyBCYXNlTWVtb3J5TWFuYWdlciB7CisgICAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRUhGcmFtZXModWludDhfdCAqQWRkciwgdWludDY0X3QgTG9hZEFkZHIsIHNpemVfdCBTaXplKSB7CisgICAgICAgICAgbWdyKCktPnJlZ2lzdGVyRUhGcmFtZXMoQWRkciwgTG9hZEFkZHIsIFNpemUpOworICAgICAgIH0KKy0gICAgICB2aXJ0dWFsIHZvaWQgZGVyZWdpc3RlckVIRnJhbWVzKHVpbnQ4X3QgKkFkZHIsIHVpbnQ2NF90IExvYWRBZGRyLCBzaXplX3QgU2l6ZSkgeworLSAgICAgICAgIG1ncigpLT5kZXJlZ2lzdGVyRUhGcmFtZXMoQWRkciwgTG9hZEFkZHIsIFNpemUpOworLSAgICAgIH0KKyAjZWxzZQorICAgICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckVIRnJhbWVzKGxsdm06OlN0cmluZ1JlZiBTZWN0aW9uRGF0YSkgeworICAgICAgICAgIG1ncigpLT5yZWdpc3RlckVIRnJhbWVzKFNlY3Rpb25EYXRhKTsKKyAgICAgICB9CisgI2VuZGlmCisrI2lmIEhBVkVfTExWTSA+PSAweDA1MDAKKysgICAgICB2aXJ0dWFsIHZvaWQgZGVyZWdpc3RlckVIRnJhbWVzKCkgeworKyAgICAgICAgIG1ncigpLT5kZXJlZ2lzdGVyRUhGcmFtZXMoKTsKKysgICAgICB9CisrI2VsaWYgSEFWRV9MTFZNID49IDB4MDMwNAorKyAgICAgIHZpcnR1YWwgdm9pZCBkZXJlZ2lzdGVyRUhGcmFtZXModWludDhfdCAqQWRkciwgdWludDY0X3QgTG9hZEFkZHIsIHNpemVfdCBTaXplKSB7CisrICAgICAgICAgbWdyKCktPmRlcmVnaXN0ZXJFSEZyYW1lcyhBZGRyLCBMb2FkQWRkciwgU2l6ZSk7CisrICAgICAgfQorKyNlbmRpZgorICAgICAgIHZpcnR1YWwgdm9pZCAqZ2V0UG9pbnRlclRvTmFtZWRGdW5jdGlvbihjb25zdCBzdGQ6OnN0cmluZyAmTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBBYm9ydE9uRmFpbHVyZT10cnVlKSB7CisgICAgICAgICAgcmV0dXJuIG1ncigpLT5nZXRQb2ludGVyVG9OYW1lZEZ1bmN0aW9uKE5hbWUsIEFib3J0T25GYWlsdXJlKTsKKy0tIAorMi4xMy4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAyLWhhcmR3YXJlLWdsb2F0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDItaGFyZHdhcmUtZ2xvYXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGUwMTRkYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAyLWhhcmR3YXJlLWdsb2F0LnBhdGNoCkBAIC0wLDAgKzEsNTEgQEAKK0Zyb20gMDBiY2Q1OTkzMTBkYzdmY2U0ZmUzMzZmZmQ4NTkwMjQyOTA1MWEwYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IElnb3IgR25hdGVua28gPGkuZ25hdGVua28uYnJhaW5AZ21haWwuY29tPgorRGF0ZTogU3VuLCAyMCBNYXIgMjAxNiAxMzoyNzowNCArMDEwMAorU3ViamVjdDogW1BBVENIIDIvNF0gaGFyZHdhcmUgZ2xvYXQKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtub3QgYXV0aG9yXQorU2lnbmVkLW9mZi1ieTogSWdvciBHbmF0ZW5rbyA8aS5nbmF0ZW5rby5icmFpbkBnbWFpbC5jb20+CistLS0KKyBzcmMvZ2FsbGl1bS9kcml2ZXJzL2xsdm1waXBlL2xwX3NjcmVlbi5jIHwgNyArKysrKysrCisgc3JjL2dhbGxpdW0vZHJpdmVycy9zb2Z0cGlwZS9zcF9zY3JlZW4uYyB8IDcgKysrKysrKworIDIgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2dhbGxpdW0vZHJpdmVycy9sbHZtcGlwZS9scF9zY3JlZW4uYyBiL3NyYy9nYWxsaXVtL2RyaXZlcnMvbGx2bXBpcGUvbHBfc2NyZWVuLmMKK2luZGV4IDRmNjFkZTguLjNiMGVjNzcgMTAwNjQ0CistLS0gYS9zcmMvZ2FsbGl1bS9kcml2ZXJzL2xsdm1waXBlL2xwX3NjcmVlbi5jCisrKysgYi9zcmMvZ2FsbGl1bS9kcml2ZXJzL2xsdm1waXBlL2xwX3NjcmVlbi5jCitAQCAtNDExLDYgKzQxMSwxMyBAQCBsbHZtcGlwZV9pc19mb3JtYXRfc3VwcG9ydGVkKCBzdHJ1Y3QgcGlwZV9zY3JlZW4gKl9zY3JlZW4sCisgICAgaWYgKCFmb3JtYXRfZGVzYykKKyAgICAgICByZXR1cm4gRkFMU0U7CisgCisrICAgaWYgKChiaW5kICYgUElQRV9CSU5EX1JFTkRFUl9UQVJHRVQpICYmCisrICAgICAgIGZvcm1hdCAhPSBQSVBFX0ZPUk1BVF9SOUc5QjlFNV9GTE9BVCAmJgorKyAgICAgICBmb3JtYXQgIT0gUElQRV9GT1JNQVRfUjExRzExQjEwX0ZMT0FUICYmCisrICAgICAgIHV0aWxfZm9ybWF0X2lzX2Zsb2F0KGZvcm1hdCkpIHsKKysgICAgICByZXR1cm4gRkFMU0U7CisrICAgfQorKworICAgIGFzc2VydCh0YXJnZXQgPT0gUElQRV9CVUZGRVIgfHwKKyAgICAgICAgICAgdGFyZ2V0ID09IFBJUEVfVEVYVFVSRV8xRCB8fAorICAgICAgICAgICB0YXJnZXQgPT0gUElQRV9URVhUVVJFXzFEX0FSUkFZIHx8CitkaWZmIC0tZ2l0IGEvc3JjL2dhbGxpdW0vZHJpdmVycy9zb2Z0cGlwZS9zcF9zY3JlZW4uYyBiL3NyYy9nYWxsaXVtL2RyaXZlcnMvc29mdHBpcGUvc3Bfc2NyZWVuLmMKK2luZGV4IDAzMTYwMmIuLmMyNzkxMjAgMTAwNjQ0CistLS0gYS9zcmMvZ2FsbGl1bS9kcml2ZXJzL3NvZnRwaXBlL3NwX3NjcmVlbi5jCisrKysgYi9zcmMvZ2FsbGl1bS9kcml2ZXJzL3NvZnRwaXBlL3NwX3NjcmVlbi5jCitAQCAtMzU4LDYgKzM1OCwxMyBAQCBzb2Z0cGlwZV9pc19mb3JtYXRfc3VwcG9ydGVkKCBzdHJ1Y3QgcGlwZV9zY3JlZW4gKnNjcmVlbiwKKyAgICBpZiAoIWZvcm1hdF9kZXNjKQorICAgICAgIHJldHVybiBGQUxTRTsKKyAKKysgICBpZiAoKGJpbmQgJiBQSVBFX0JJTkRfUkVOREVSX1RBUkdFVCkgJiYKKysgICAgICAgZm9ybWF0ICE9IFBJUEVfRk9STUFUX1I5RzlCOUU1X0ZMT0FUICYmCisrICAgICAgIGZvcm1hdCAhPSBQSVBFX0ZPUk1BVF9SMTFHMTFCMTBfRkxPQVQgJiYKKysgICAgICAgdXRpbF9mb3JtYXRfaXNfZmxvYXQoZm9ybWF0KSkgeworKyAgICAgIHJldHVybiBGQUxTRTsKKysgICB9CisrCisgICAgaWYgKHNhbXBsZV9jb3VudCA+IDEpCisgICAgICAgcmV0dXJuIEZBTFNFOworIAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvbGx2bS1jb25maWctdmVyc2lvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy9sbHZtLWNvbmZpZy12ZXJzaW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhMzNhMWUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvbGx2bS1jb25maWctdmVyc2lvbi5wYXRjaApAQCAtMCwwICsxLDMyIEBACitXaGVuIGJ1aWxkaW5nIGxsdm0gZnJvbSBnaXQgb3Igc3ZuIGl0IGVtYmVkcyB0aGUgc3ZuL2dpdCByZXZpc2lvbiBpbnRvIGludGVybmFsIHZlcnNpb24gc3RyaW5nCisKKyQgL21udC9hL29lL2J1aWxkL3RtcC93b3JrL2NvcmVpNy02NC1iZWMtbGludXgvbWVzYS8yXzE3LjEuNS1yMC9yZWNpcGUtc3lzcm9vdC91c3IvbGliL2xsdm01LjAvbGx2bS1jb25maWctaG9zdCAtLXZlcnNpb24KKzUuMC4wZ2l0LTlhNWMzMzMzODhjCisKK1dlIG5lZWQgdG8gaWdub3JlIGV2ZXJ5dGhpbmcgYWZ0ZXIgNS4wLjAgd2hpY2ggaXMgd2hhdCB0aGUgY3V0IGNtZCBpcyBkb2luZworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK0luZGV4OiBtZXNhLTE3LjEuNS9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBtZXNhLTE3LjEuNS5vcmlnL2NvbmZpZ3VyZS5hYworKysrIG1lc2EtMTcuMS41L2NvbmZpZ3VyZS5hYworQEAgLTk2Nyw3ICs5NjcsNyBAQCBzdHJpcF91bndhbnRlZF9sbHZtX2ZsYWdzKCkgeworIAorIGxsdm1fc2V0X2Vudmlyb25tZW50X3ZhcmlhYmxlcygpIHsKKyAgICAgaWYgdGVzdCAieCRMTFZNX0NPTkZJRyIgIT0geG5vOyB0aGVuCistICAgICAgICBMTFZNX1ZFUlNJT049YCRMTFZNX0NPTkZJRyAtLXZlcnNpb24gfCBlZ3JlcCAtbyAnXltbMC05Ll1dKydgCisrICAgICAgICBMTFZNX1ZFUlNJT049YCRMTFZNX0NPTkZJRyAtLXZlcnNpb24gfCBjdXQgLWMxLTVgCisgICAgICAgICBMTFZNX0NQUEZMQUdTPWBzdHJpcF91bndhbnRlZF9sbHZtX2ZsYWdzICIkTExWTV9DT05GSUcgLS1jcHBmbGFncyJgCisgICAgICAgICBMTFZNX0lOQ0xVREVESVI9YCRMTFZNX0NPTkZJRyAtLWluY2x1ZGVkaXJgCisgICAgICAgICBMTFZNX0xJQkRJUj1gJExMVk1fQ09ORklHIC0tbGliZGlyYAorQEAgLTI1NjAsNyArMjU2MCw3IEBAIGlmIHRlc3QgIngkZW5hYmxlX2xsdm0iID0geHllczsgdGhlbgorICAgICBkbmwgKFNlZSBodHRwczovL2xsdm0ub3JnL2J1Z3Mvc2hvd19idWcuY2dpP2lkPTY4MjMpCisgICAgIGlmIHRlc3QgIngkZW5hYmxlX2xsdm1fc2hhcmVkX2xpYnMiID0geHllczsgdGhlbgorICAgICAgICAgZG5sIFdlIGNhbid0IHVzZSAkTExWTV9WRVJTSU9OIGJlY2F1c2UgaXQgaGFzICdzdm4nIHN0cmlwcGVkIG91dCwKKy0gICAgICAgIExMVk1fU09fTkFNRT1MTFZNLWAkTExWTV9DT05GSUcgLS12ZXJzaW9uYAorKyAgICAgICAgTExWTV9TT19OQU1FPUxMVk0tYCRMTFZNX0NPTkZJRyAtLXZlcnNpb258Y3V0IC1jMS01YAorICAgICAgICAgQVNfSUYoW3Rlc3QgLWYgIiRMTFZNX0xJQkRJUi9saWIkTExWTV9TT19OQU1FLiRJTVBfTElCX0VYVCJdLCBbbGx2bV9oYXZlX29uZV9zbz15ZXNdKQorIAorICAgICAgICAgaWYgdGVzdCAieCRsbHZtX2hhdmVfb25lX3NvIiA9IHh5ZXM7IHRoZW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy92dWxrYW4tbWtkaXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvdnVsa2FuLW1rZGlyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1ZWU1ZWUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvdnVsa2FuLW1rZGlyLnBhdGNoCkBAIC0wLDAgKzEsMzcgQEAKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCitGcm9tIGM3ODk3OWZkOTVhMWM0ZjczMmY3ZTZlZGYwZjMyYzUyNGU1OTU1YjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorRGF0ZTogV2VkLCAxMiBKdWwgMjAxNyAxNzoxMDowNyArMDEwMAorU3ViamVjdDogW1BBVENIXSBzcmMvaW50ZWwvTWFrZWZpbGUudnVsa2FuLmFtOiBjcmVhdGUgdGFyZ2V0IGRpcmVjdG9yaWVzIHdoZW4KKyByZXF1aXJlZAorCitJbiBvdXQtb2YtdHJlZSBidWlsZHMgc3JjL2ludGVsL3Z1bGthbiB3b24ndCBleGlzdCwgc28gYWx3YXlzIGNyZWF0ZSBpdCBiZWZvcmUKK3dyaXRpbmcgaW50byBpdC4KKworU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKy0tLQorIHNyYy9pbnRlbC9NYWtlZmlsZS52dWxrYW4uYW0gfCAyICsrCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2ludGVsL01ha2VmaWxlLnZ1bGthbi5hbSBiL3NyYy9pbnRlbC9NYWtlZmlsZS52dWxrYW4uYW0KK2luZGV4IDM4NTdhNWRjNjIuLjI2ZTljZDQxMGMgMTAwNjQ0CistLS0gYS9zcmMvaW50ZWwvTWFrZWZpbGUudnVsa2FuLmFtCisrKysgYi9zcmMvaW50ZWwvTWFrZWZpbGUudnVsa2FuLmFtCitAQCAtNDQsMTEgKzQ0LDEzIEBAIEVYVFJBX0RJU1QgKz0gXAorIAl2dWxrYW4vVE9ETworIAorIHZ1bGthbi9kZXZfaWNkLmpzb24gOiB2dWxrYW4vZGV2X2ljZC5qc29uLmluCisrCSQoTUtESVJfR0VOKQorIAkkKEFNX1ZfR0VOKSAkKFNFRCkgXAorIAkJLWUgInMjQGJ1aWxkX2xpYmRpckAjJHthYnNfdG9wX2J1aWxkZGlyfS8ke0xJQl9ESVJ9IyIgXAorIAkJPCAkKHNyY2RpcikvdnVsa2FuL2Rldl9pY2QuanNvbi5pbiA+ICRACisgCisgdnVsa2FuL2ludGVsX2ljZC5AaG9zdF9jcHVALmpzb24gOiB2dWxrYW4vaW50ZWxfaWNkLmpzb24uaW4KKysJJChNS0RJUl9HRU4pCisgCSQoQU1fVl9HRU4pICQoU0VEKSBcCisgCQktZSAicyNAaW5zdGFsbF9saWJkaXJAIyR7bGliZGlyfSMiIFwKKyAJCTwgJChzcmNkaXIpL3Z1bGthbi9pbnRlbF9pY2QuanNvbi5pbiA+ICRACistLSAKKzIuMTEuMApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2xpYmdsdV85LjAuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9saWJnbHVfOS4wLjAuYmIKaW5kZXggOGI5NDYxMy4uZWViODk4ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2xpYmdsdV85LjAuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbGliZ2x1XzkuMC4wLmJiCkBAIC0xMiw3ICsxMiw3IEBACiBQRSA9ICIyIgogUFIgPSAiMCIKIAotU1JDX1VSSSA9ICJmdHA6Ly9mdHAuZnJlZWRlc2t0b3Aub3JnL3B1Yi9tZXNhL2dsdS9nbHUtJHtQVn0udGFyLmJ6MiIKK1NSQ19VUkkgPSAiaHR0cHM6Ly9tZXNhLmZyZWVkZXNrdG9wLm9yZy9hcmNoaXZlL2dsdS9nbHUtJHtQVn0udGFyLmJ6MiIKIAogU1JDX1VSSVttZDVzdW1dID0gImJlOTI0OTEzMmZmNDkyNzU0NjFjZjkyMDM5MDgzMDMwIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFmN2FkMGQzNzlhNzIyZmNiZDMwM2FhNTY1MGM2ZDdkNTU0NGZkZTgzMTk2YjQyYTczZDExOTM1NjhhNGRmMTIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS1kZW1vc184LjMuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLWRlbW9zXzguMy4wLmJiCmluZGV4IGU0M2I5ZWYuLmJhZTNiMTggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLWRlbW9zXzguMy4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLWRlbW9zXzguMy4wLmJiCkBAIC05LDcgKzksNyBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc3JjL3hkZW1vcy9nbHhnZWFycy5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjA7bWQ1PTkxNDIyNTc4NTQ1MGVmZjY0NGE4NmM4NzFkM2FlMDBlIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy94ZGVtb3MvZ2x4ZGVtby5jO2JlZ2lubGluZT0xO2VuZGxpbmU9ODttZDU9YjAxZDVhYjFhZWU5NGQzNWI3ZWZhYTJlZjQ4ZTFhMDYiCiAKLVNSQ19VUkkgPSAiZnRwOi8vZnRwLmZyZWVkZXNrdG9wLm9yZy9wdWIvbWVzYS9kZW1vcy8ke1BWfS8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCitTUkNfVVJJID0gImh0dHBzOi8vbWVzYS5mcmVlZGVza3RvcC5vcmcvYXJjaGl2ZS9kZW1vcy8ke1BWfS8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1lc2EtZGVtb3MtQWRkLW1pc3NpbmctZGF0YS1maWxlcy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAzLWNvbmZpZ3VyZS1BbGxvdy10by1kaXNhYmxlLWRlbW9zLXdoaWNoLXJlcXVpcmUtR0xFVy0ucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwNC1Vc2UtREVNT1NfREFUQV9ESVItdG8tbG9jYXRlLWRhdGEtZmlsZXMucGF0Y2ggXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EtZ2xfMTcuMC4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EtZ2xfMTcuMC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMzYwNGYzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLWdsXzE3LjAuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLXJlcXVpcmUgbWVzYV8ke1BWfS5iYgotCi1TVU1NQVJZICs9ICIgKE9wZW5HTCBvbmx5LCBubyBFR0wvR0xFUykiCi0KLUZJTEVTRVhUUkFQQVRIUyA9LiAiJHtGSUxFX0RJUk5BTUV9L21lc2E6IgotCi1QUk9WSURFUyA9ICJ2aXJ0dWFsL2xpYmdsIHZpcnR1YWwvbWVzYSIKLQotUyA9ICIke1dPUktESVJ9L21lc2EtJHtQVn0iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJkcmkgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IgotCi1FWENMVURFX0ZST01fV09STEQgPSAiMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLWdsXzE3LjEuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLWdsXzE3LjEuNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MzI2N2ViCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EtZ2xfMTcuMS43LmJiCkBAIC0wLDAgKzEsOSBAQAorcmVxdWlyZSBtZXNhXyR7UFZ9LmJiCisKK1NVTU1BUlkgKz0gIiAoT3BlbkdMIG9ubHksIG5vIEVHTC9HTEVTKSIKKworUFJPVklERVMgPSAidmlydHVhbC9saWJnbCB2aXJ0dWFsL21lc2EiCisKK1MgPSAiJHtXT1JLRElSfS9tZXNhLSR7UFZ9IgorCitQQUNLQUdFQ09ORklHID8/PSAib3BlbmdsIGRyaSAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS5pbmMKaW5kZXggMjVjYmY2My4uNGYzMWVkMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLmluYwpAQCAtMTAsNDcgKzEwLDY0IEBACiBCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmciCiBTRUNUSU9OID0gIngxMSIKIExJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZG9jcy9saWNlbnNlLmh0bWw7bWQ1PTg5OWZiZTdlNDJkNDk0YzdjOGMxNTljNzAwMTY5M2Q1IgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZG9jcy9saWNlbnNlLmh0bWw7bWQ1PTcyNWY5OTFhMWNjMzIyYWE3YTBjZDNhMjAxNjYyMWM0IgogCiBQRSA9ICIyIgogCi1ERVBFTkRTID0gImV4cGF0IG1ha2VkZXBlbmQtbmF0aXZlIGZsZXgtbmF0aXZlIGJpc29uLW5hdGl2ZSBsaWJ4bWwyLW5hdGl2ZSIKLQorREVQRU5EUyA9ICJleHBhdCBtYWtlZGVwZW5kLW5hdGl2ZSBmbGV4LW5hdGl2ZSBiaXNvbi1uYXRpdmUgbGlieG1sMi1uYXRpdmUgemxpYiBjaHJwYXRoLXJlcGxhY2VtZW50LW5hdGl2ZSIKK0VYVFJBTkFUSVZFUEFUSCArPSAiY2hycGF0aC1uYXRpdmUiCiBQUk9WSURFUyA9ICJ2aXJ0dWFsL2xpYmdsIHZpcnR1YWwvbGliZ2xlczEgdmlydHVhbC9saWJnbGVzMiB2aXJ0dWFsL2VnbCB2aXJ0dWFsL21lc2EiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBweXRob25uYXRpdmUgZ2V0dGV4dCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IGRpc3Ryb19mZWF0dXJlc19jaGVjawogCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAib3BlbmdsIgorQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICJvcGVuZ2wgdnVsa2FuIgogCi1leHBvcnQgTExWTV9DT05GSUcgPSAiJHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vbGx2bS1jb25maWciCi1FWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtc2hhcmVkLWdsYXBpIgorUExBVEZPUk1TID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdQQUNLQUdFQ09ORklHJywgJ3gxMSB3YXlsYW5kJywgZCl9IFwKKyAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dibScsICdkcm0nLCAnJywgZCl9IgogCi1QQUNLQUdFQ09ORklHID8/PSAiZ2JtIGVnbCBnbGVzIGRyaSBcCi0JCSR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQgeDExJywgZCl9IFwKLQkJIgorZXhwb3J0IExMVk1fQ09ORklHID0gIiR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9sbHZtLWNvbmZpZyR7TUVTQV9MTFZNX1JFTEVBU0V9IgorZXhwb3J0IFlPQ1RPX0FMVEVSTkFURV9FWEVfUEFUSCA9ICIke1NUQUdJTkdfTElCRElSfS9sbHZtJHtNRVNBX0xMVk1fUkVMRUFTRX0vbGx2bS1jb25maWciCitFWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtc2hhcmVkLWdsYXBpIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtb3BlbmNsIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtbGx2bS1wcmVmaXg9JHtTVEFHSU5HX0xJQkRJUn0vbGx2bSR7TUVTQV9MTFZNX1JFTEVBU0V9IFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtcGxhdGZvcm1zPScke1BMQVRGT1JNU30nIgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCB2dWxrYW4nLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnb3BlbmdsJywgJ29wZW5nbCBlZ2wgZ2xlcyBnYm0gZHJpJywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEgb3BlbmdsJywgJ3gxMScsICcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExIHZ1bGthbicsICdkcmkzJywgJycsIGQpfSBcCisJCSAgICIKKworIyAiZ2JtIiByZXF1aXJlcyAiZHJpIiwgIm9wZW5nbCIKIFBBQ0tBR0VDT05GSUdbZ2JtXSA9ICItLWVuYWJsZS1nYm0sLS1kaXNhYmxlLWdibSIKIAogWDExX0RFUFMgPSAieGY4NmRyaXByb3RvIGdscHJvdG8gdmlydHVhbC9saWJ4MTEgbGlieGV4dCBsaWJ4eGY4NnZtIGxpYnhkYW1hZ2UgbGlieGZpeGVzIgorIyAieDExIiByZXF1aXJlcyAib3BlbmdsIgogUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0tZW5hYmxlLWdseC10bHMsLS1kaXNhYmxlLWdseCwke1gxMV9ERVBTfSIKIFBBQ0tBR0VDT05GSUdbeHZtY10gPSAiLS1lbmFibGUteHZtYywtLWRpc2FibGUteHZtYyxsaWJ4dm1jIgotUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICIsLHdheWxhbmQtbmF0aXZlIHdheWxhbmQiCitQQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIiwsd2F5bGFuZC1uYXRpdmUgd2F5bGFuZCBsaWJkcm0iCiAKIERSSURSSVZFUlMgPSAic3dyYXN0IgogRFJJRFJJVkVSU19hcHBlbmRfeDg2ID0gIixyYWRlb24scjIwMCxub3V2ZWF1LGk5NjUsaTkxNSIKIERSSURSSVZFUlNfYXBwZW5kX3g4Ni02NCA9ICIscmFkZW9uLHIyMDAsbm91dmVhdSxpOTY1LGk5MTUiCisjICJkcmkiIHJlcXVpcmVzICJvcGVuZ2wiCiBQQUNLQUdFQ09ORklHW2RyaV0gPSAiLS1lbmFibGUtZHJpIC0td2l0aC1kcmktZHJpdmVycz0ke0RSSURSSVZFUlN9LCAtLWRpc2FibGUtZHJpLCBkcmkycHJvdG8gbGliZHJtIgogUEFDS0FHRUNPTkZJR1tkcmkzXSA9ICItLWVuYWJsZS1kcmkzLCAtLWRpc2FibGUtZHJpMywgZHJpM3Byb3RvIHByZXNlbnRwcm90byBsaWJ4c2htZmVuY2UiCiAKICMgVnVsa2FuIGRyaXZlcnMgbmVlZCBkcmkzIGVuYWJsZWQKICMgcmFkZW9uIGNvdWxkIGJlIGVuYWJsZWQgYXMgd2VsbCBidXQgcmVxdWlyZXMgZ2FsbGl1bS1sbHZtIHdpdGggbGx2bSA+PSAzLjkKLVBBQ0tBR0VDT05GSUdbdnVsa2FuXSA9ICItLXdpdGgtdnVsa2FuLWRyaXZlcnM9aW50ZWwsIC0td2l0aG91dC12dWxrYW4tZHJpdmVycyIKK1ZVTEtBTl9EUklWRVJTID0gIiIKK1ZVTEtBTl9EUklWRVJTX2FwcGVuZF94ODYgPSAiLGludGVsIgorVlVMS0FOX0RSSVZFUlNfYXBwZW5kX3g4Ni02NCA9ICIsaW50ZWwiCitQQUNLQUdFQ09ORklHW3Z1bGthbl0gPSAiLS13aXRoLXZ1bGthbi1kcml2ZXJzPSR7VlVMS0FOX0RSSVZFUlN9LCAtLXdpdGhvdXQtdnVsa2FuLWRyaXZlcnMiCiAKK1BBQ0tBR0VDT05GSUdbb3BlbmdsXSA9ICItLWVuYWJsZS1vcGVuZ2wsIC0tZGlzYWJsZS1vcGVuZ2wiCisKKyMgImdsZXMiIHJlcXVpcmVzICJvcGVuZ2wiCiBQQUNLQUdFQ09ORklHW2dsZXNdID0gIi0tZW5hYmxlLWdsZXMxIC0tZW5hYmxlLWdsZXMyLCAtLWRpc2FibGUtZ2xlczEgLS1kaXNhYmxlLWdsZXMyIgogCi1FR0xfUExBVEZPUk1TICA9ICJkcm0iCi1FR0xfUExBVEZPUk1TIC49IiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3gxMScsICcseDExJywgJycsIGQpfSIKLUVHTF9QTEFURk9STVMgLj0iJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnd2F5bGFuZCcsICcsd2F5bGFuZCcsICcnLCBkKX0iCi1QQUNLQUdFQ09ORklHW2VnbF0gPSAiLS1lbmFibGUtZWdsIC0td2l0aC1lZ2wtcGxhdGZvcm1zPSR7RUdMX1BMQVRGT1JNU30sIC0tZGlzYWJsZS1lZ2wiCisjICJlZ2wiIHJlcXVpcmVzICJkcmkiLCAib3BlbmdsIgorUEFDS0FHRUNPTkZJR1tlZ2xdID0gIi0tZW5hYmxlLWVnbCwgLS1kaXNhYmxlLWVnbCIKIAogUEFDS0FHRUNPTkZJR1tldG5hdml2XSA9ICIiCiBQQUNLQUdFQ09ORklHW2lteF0gPSAiIgpAQCAtNjUsOSArODIsOSBAQAogR0FMTElVTURSSVZFUlNfYXBwZW5kX3g4NiA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdnYWxsaXVtLWxsdm0nLCAnLCR7R0FMTElVTURSSVZFUlNfTExWTX0nLCAnJywgZCl9IgogR0FMTElVTURSSVZFUlNfYXBwZW5kX3g4Ni02NCA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdnYWxsaXVtLWxsdm0nLCAnLCR7R0FMTElVTURSSVZFUlNfTExWTX0nLCAnJywgZCl9IgogIyBrZWVwIC0td2l0aC1nYWxsaXVtLWRyaXZlcnMgc2VwYXJhdGUsIGJlY2F1c2Ugd2hlbiBvbmx5IG9uZSBvZiBnYWxsaXVtIHZlcnNpb25zIGlzIGVuYWJsZWQsIG90aGVyIDIgd2VyZSBhZGRpbmcgLS13aXRob3V0LWdhbGxpdW0tZHJpdmVycwotUEFDS0FHRUNPTkZJR1tnYWxsaXVtXSAgICAgID0gIi0td2l0aC1nYWxsaXVtLWRyaXZlcnM9JHtHQUxMSVVNRFJJVkVSU30sIC0td2l0aG91dC1nYWxsaXVtLWRyaXZlcnMiCi1NRVNBX0xMVk1fUkVMRUFTRSA/PSAiMy4zIgotUEFDS0FHRUNPTkZJR1tnYWxsaXVtLWxsdm1dID0gIi0tZW5hYmxlLWdhbGxpdW0tbGx2bSAtLWVuYWJsZS1sbHZtLXNoYXJlZC1saWJzLCAtLWRpc2FibGUtZ2FsbGl1bS1sbHZtLCBsbHZtJHtNRVNBX0xMVk1fUkVMRUFTRX0gXAorUEFDS0FHRUNPTkZJR1tnYWxsaXVtXSAgICAgID0gIi0tZW5hYmxlLXRleHR1cmUtZmxvYXQgLS13aXRoLWdhbGxpdW0tZHJpdmVycz0ke0dBTExJVU1EUklWRVJTfSwgLS13aXRob3V0LWdhbGxpdW0tZHJpdmVycyIKK01FU0FfTExWTV9SRUxFQVNFID89ICI1LjAiCitQQUNLQUdFQ09ORklHW2dhbGxpdW0tbGx2bV0gPSAiLS1lbmFibGUtbGx2bSAtLWVuYWJsZS1sbHZtLXNoYXJlZC1saWJzLCAtLWRpc2FibGUtbGx2bSwgbGx2bSR7TUVTQV9MTFZNX1JFTEVBU0V9IGxsdm0tbmF0aXZlIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke0AnZWxmdXRpbHMnIGlmICR7R0FMTElVTURSSVZFUlNfTExWTTMzX0VOQUJMRUR9IGVsc2UgJyd9IgogZXhwb3J0IFdBTlRfTExWTV9SRUxFQVNFID0gIiR7TUVTQV9MTFZNX1JFTEVBU0V9IgogUEFDS0FHRUNPTkZJR1t4YV0gID0gIi0tZW5hYmxlLXhhLCAtLWRpc2FibGUteGEiCkBAIC03NSw5ICs5MiwxMyBAQAogT1NNRVNBID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dhbGxpdW0nLCAnZ2FsbGl1bS1vc21lc2EnLCAnb3NtZXNhJywgZCl9IgogUEFDS0FHRUNPTkZJR1tvc21lc2FdID0gIi0tZW5hYmxlLSR7T1NNRVNBfSwtLWRpc2FibGUtJHtPU01FU0F9IgogCitQQUNLQUdFQ09ORklHW3Vud2luZF0gPSAiLS1lbmFibGUtbGlidW53aW5kLC0tZGlzYWJsZS1saWJ1bndpbmQsbGlidW53aW5kIgorCiAjIGxsdm1waXBlIGlzIHNsb3cgaWYgY29tcGlsZWQgd2l0aCAtZm9taXQtZnJhbWUtcG9pbnRlciAoZS5nLiAtTzIpCiBGVUxMX09QVElNSVpBVElPTl9hcHBlbmQgPSAiIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyIgogCitDRkxBR1NfYXBwZW5kX2FybXY1ID0gIiAtRE1JU1NJTkdfNjRCSVRfQVRPTUlDUyIKKwogIyBNdWx0aXBsZSB2aXJ0dWFsL2dsIHByb3ZpZGVycyBiZWluZyBidWlsdCBicmVha3Mgc3RhZ2luZwogRVhDTFVERV9GUk9NX1dPUkxEID0gIjEiCiAKQEAgLTEwNiw5ICsxMjcsMTAgQEAKICAgICBybSAtZiAke0R9JHtsaWJkaXJ9L2VnbC8qLmxhCiAgICAgcm0gLWYgJHtEfSR7bGliZGlyfS9nYWxsaXVtLXBpcGUvKi5sYQogICAgIHJtIC1mICR7RH0ke2xpYmRpcn0vZ2JtLyoubGEKLSAgICAKKwogICAgICMgaXQgd2FzIHBhY2thZ2VkIGluIGxpYmRyaWNvcmU5LjEuMy0xIGFuZCBwcmV2ZW50aW5nIHVwZ3JhZGVzIHdoZW4gZGViaWFuLmJiY2xhc3Mgd2FzIHVzZWQgCiAgICAgcm0gLWYgJHtEfSR7c3lzY29uZmRpcn0vZHJpcmMKKyAgICBjaHJwYXRoIC0tZGVsZXRlICR7RH0ke2xpYmRpcn0vZHJpLypfZHJpLnNvIHx8IHRydWUKIH0KIAogIyBGb3IgdGhlIHBhY2thZ2VzIHRoYXQgbWFrZSB1cCB0aGUgT3BlbkdMIGludGVyZmFjZXMsIGluamVjdCB2YXJpYWJsZXMgc28gdGhhdApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2FfMTcuMC4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2FfMTcuMC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNjg5ZThmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhXzE3LjAuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLXJlcXVpcmUgJHtCUE59LmluYwotCi1TUkNfVVJJID0gImZ0cDovL2Z0cC5mcmVlZGVza3RvcC5vcmcvcHViL21lc2EvbWVzYS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vcmVwbGFjZV9nbGliY19jaGVja193aXRoX2xpbnV4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtYXNtLW9uLW5vbi1nY2MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2Utd2F5bGFuZC1zY2FubmVyLWluLXRoZS1wYXRoLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjhmODA4ZTkyYjg5M2Q0MTJmYmQ2NTEwZTFkMTZmNWM1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImY4ZjE5MWY5MDllMDFlNjVkZTM4ZDViZGVhNWZiMDU3ZjIxNjQ5YTNhZWQyMDk0OGJlMDIzNDhlNzdhNjg5ZDQiCi0KLSNiZWNhdXNlIHdlIGNhbm5vdCByZWx5IG9uIHRoZSBmYWN0IHRoYXQgYWxsIGFwcHMgd2lsbCB1c2UgcGtnY29uZmlnLAotI21ha2UgZWdscGxhdGZvcm0uaCBpbmRlcGVuZGVudCBvZiBNRVNBX0VHTF9OT19YMTFfSEVBREVSCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdlZ2wnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotICAgICAgICBzZWQgLWkgLWUgJ3MvXiNpZiBkZWZpbmVkKE1FU0FfRUdMX05PX1gxMV9IRUFERVJTKSQvI2lmIGRlZmluZWQoTUVTQV9FR0xfTk9fWDExX0hFQURFUlMpIHx8ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3gxMScsICcwJywgJzEnLCBkKX0vJyAke0R9JHtpbmNsdWRlZGlyfS9FR0wvZWdscGxhdGZvcm0uaAotICAgIGZpCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYV8xNy4xLjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYV8xNy4xLjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzljZmNlOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhXzE3LjEuNy5iYgpAQCAtMCwwICsxLDI1IEBACityZXF1aXJlICR7QlBOfS5pbmMKKworU1JDX1VSSSA9ICJodHRwczovL21lc2EuZnJlZWRlc2t0b3Aub3JnL2FyY2hpdmUvbWVzYS0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vcmVwbGFjZV9nbGliY19jaGVja193aXRoX2xpbnV4LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtYXNtLW9uLW5vbi1nY2MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2Utd2F5bGFuZC1zY2FubmVyLWluLXRoZS1wYXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItaGFyZHdhcmUtZ2xvYXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vdnVsa2FuLW1rZGlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2xsdm0tY29uZmlnLXZlcnNpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1hYy1maXgtYnVpbGQtYWZ0ZXItTExWTS01LjAtU1ZOLXIzMDA3MTgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1nYWxsaXZtLUZpeC1idWlsZC1hZ2FpbnN0LUxMVk0tU1ZOLXIzMDI1ODkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS13aW5zeXMtc3ZnYS1kcm0tSW5jbHVkZS1zeXMtdHlwZXMuaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1BbHdheXMtY2hlY2stZm9yLWV4cGF0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUudnVsa2FuLmFtLWV4cGxpY3RseS1hZGQtbGliLWV4cGF0LXRvLWludGVsLS5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICJlNDBiYjQyOGEyNjNiZDI4Y2JmNjQ3OGRhZTQ1YjIwNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2OWY0NzJhODc0YjExMjI0MDRmYTBiZDEzZTJkNmJmODdlYjNiOWFkOWMyMWQyZjM5ODcyYTk2ZDgzZDllNWY1IgorCisjYmVjYXVzZSB3ZSBjYW5ub3QgcmVseSBvbiB0aGUgZmFjdCB0aGF0IGFsbCBhcHBzIHdpbGwgdXNlIHBrZ2NvbmZpZywKKyNtYWtlIGVnbHBsYXRmb3JtLmggaW5kZXBlbmRlbnQgb2YgTUVTQV9FR0xfTk9fWDExX0hFQURFUgorZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZWdsJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgc2VkIC1pIC1lICdzL14jaWYgZGVmaW5lZChNRVNBX0VHTF9OT19YMTFfSEVBREVSUykkLyNpZiBkZWZpbmVkKE1FU0FfRUdMX05PX1gxMV9IRUFERVJTKSB8fCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd4MTEnLCAnMCcsICcxJywgZCl9LycgJHtEfSR7aW5jbHVkZWRpcn0vRUdML2VnbHBsYXRmb3JtLmgKKyAgICBmaQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2FfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2FfZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMDM0NTE3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhX2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLXJlcXVpcmUgJHtCUE59LmluYwotCi1ERUZBVUxUX1BSRUZFUkVOQ0UgPSAiLTEiCi0KLVNSQ1JFViA9ICJlYTBkMWY1NzVjMjE0YzA5YmEzZGYxMjY0NGE5NjBlODZlMDMxNzY2IgotUFYgPSAiMTAuNS40K2dpdCR7U1JDUFZ9IgotCi1TUkNfVVJJID0gImdpdDovL2Fub25naXQuZnJlZWRlc2t0b3Aub3JnL2dpdC9tZXNhL21lc2E7YnJhbmNoPTEwLjUiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLURFUEVORFMgKz0gInB5dGhvbi1tYWtvLW5hdGl2ZSIKLQotaW5oZXJpdCBweXRob25uYXRpdmUKLQotI2JlY2F1c2Ugd2UgY2Fubm90IHJlbHkgb24gdGhlIGZhY3QgdGhhdCBhbGwgYXBwcyB3aWxsIHVzZSBwa2djb25maWcsCi0jbWFrZSBlZ2xwbGF0Zm9ybS5oIGluZGVwZW5kZW50IG9mIE1FU0FfRUdMX05PX1gxMV9IRUFERVIKLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2VnbCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0gICAgICAgIHNlZCAtaSAtZSAncy9eI2lmIGRlZmluZWQoTUVTQV9FR0xfTk9fWDExX0hFQURFUlMpJC8jaWYgZGVmaW5lZChNRVNBX0VHTF9OT19YMTFfSEVBREVSUykgfHwgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAneDExJywgJzAnLCAnMScsIGQpfS8nICR7RH0ke2luY2x1ZGVkaXJ9L0VHTC9lZ2xwbGF0Zm9ybS5oCi0gICAgZmkKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGFuZ28vcGFuZ29fMS40MC4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nb18xLjQwLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyNTlhODIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nb18xLjQwLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi1TVU1NQVJZID0gIkZyYW1ld29yayBmb3IgbGF5b3V0IGFuZCByZW5kZXJpbmcgb2YgaW50ZXJuYXRpb25hbGl6ZWQgdGV4dCIKLURFU0NSSVBUSU9OID0gIlBhbmdvIGlzIGEgbGlicmFyeSBmb3IgbGF5aW5nIG91dCBhbmQgcmVuZGVyaW5nIG9mIHRleHQsIFwKLXdpdGggYW4gZW1waGFzaXMgb24gaW50ZXJuYXRpb25hbGl6YXRpb24uIFBhbmdvIGNhbiBiZSB1c2VkIGFueXdoZXJlIFwKLXRoYXQgdGV4dCBsYXlvdXQgaXMgbmVlZGVkLCB0aG91Z2ggbW9zdCBvZiB0aGUgd29yayBvbiBQYW5nbyBzbyBmYXIgaGFzIFwKLWJlZW4gZG9uZSBpbiB0aGUgY29udGV4dCBvZiB0aGUgR1RLKyB3aWRnZXQgdG9vbGtpdC4gUGFuZ28gZm9ybXMgdGhlIFwKLWNvcmUgb2YgdGV4dCBhbmQgZm9udCBoYW5kbGluZyBmb3IgR1RLKy0yLnguIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5wYW5nby5vcmcvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJMR1BMdjIuMCsiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNiZjUwMDAyYWVmZDAwMmY0OWU3YmI4NTQwNjNmN2U3IgotCi1pbmhlcml0IGdub21lYmFzZSBndGstZG9jIHB0ZXN0LWdub21lIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotU1JDX1VSSSArPSAiZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1Ecm9wLWludHJvc3BlY3Rpb24tbWFjcm9zLWZyb20tYWNpbmNsdWRlLm00LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUVuZm9yY2UtcmVjcmVhdGlvbi1vZi1kb2NzLXBhbmdvLnR5cGVzLWl0LWlzLWJ1aWxkLWMucGF0Y2ggXAotIgotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiMTdjMjY3MjBmNWE4NjJhMTJmN2UxNzQ1ZTJmMWQ5NjYiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJhYmJhOGI1Y2U3Mjg1MjBjM2EwZjE1MzVlYWIxOWVhYzNjMTRhZWVmN2ZhYTVhZGVkOTAwMTdjZWFjMjcxMWQzIgotCi1ERVBFTkRTID0gImdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBmb250Y29uZmlnIGZyZWV0eXBlIHZpcnR1YWwvbGliaWNvbnYgY2Fpcm8gaGFyZmJ1enoiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0iCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLS13aXRoLXhmdCwtLXdpdGhvdXQteGZ0LHZpcnR1YWwvbGlieDExIGxpYnhmdCIKLQotRVhUUkFfQVVUT1JFQ09ORiA9ICIiCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotCSAgICAgICAgLS1kaXNhYmxlLWRlYnVnIFwKLQkgICAgICAgICIKLQotTEVBRF9TT05BTUUgPSAibGlicGFuZ28tMS4wKiIKLUxJQlYgPSAiMS44LjAiCi0KLSMgVGhpcyBiaW5hcnkgbmVlZHMgdG8gYmUgY29tcGlsZWQgZm9yIHRoZSBob3N0IGFyY2hpdGVjdHVyZS4gIFRoaXMgaXNuJ3QgcHJldHR5IQotZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLXRhcmdldCAoKSB7Ci0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwdGVzdCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0JCW1ha2UgQ0M9IiR7QlVJTERfQ0N9IiBDRkxBR1M9IiIgTERGTEFHUz0iJHtCVUlMRF9MREZMQUdTfSIgQU1fQ1BQRkxBR1M9IiQocGtnLWNvbmZpZy1uYXRpdmUgLS1jZmxhZ3MgZ2xpYi0yLjApIiBnZW5fYWxsX3VuaWNvZGVfTERBREQ9IiQocGtnLWNvbmZpZy1uYXRpdmUgLS1saWJzIGdsaWItMi4wKSIgLUMgJHtCfS90ZXN0cyBnZW4tYWxsLXVuaWNvZGUKLQlmaQotfQotCi1GSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vKiAke2xpYmRpcn0vbGlicGFuZ28qJHtTT0xJQlN9IgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vcGFuZ28vJHtMSUJWfS9tb2R1bGVzLyoubGEiCi0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJsaWJlcmF0aW9uLWZvbnRzIGNhbnRhcmVsbC1mb250cyIKLQotUlBST1ZJREVTXyR7UE59ICs9ICJwYW5nby1tb2R1bGVzIHBhbmdvLW1vZHVsZS1pbmRpYy1sYW5nIFwKLSAgICAgICAgICAgICAgICAgICAgcGFuZ28tbW9kdWxlLWJhc2ljLWZjIHBhbmdvLW1vZHVsZS1hcmFiaWMtbGFuZyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvXzEuNDAuNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGFuZ28vcGFuZ29fMS40MC42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxYzNkMmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvXzEuNDAuNi5iYgpAQCAtMCwwICsxLDUyIEBACitTVU1NQVJZID0gIkZyYW1ld29yayBmb3IgbGF5b3V0IGFuZCByZW5kZXJpbmcgb2YgaW50ZXJuYXRpb25hbGl6ZWQgdGV4dCIKK0RFU0NSSVBUSU9OID0gIlBhbmdvIGlzIGEgbGlicmFyeSBmb3IgbGF5aW5nIG91dCBhbmQgcmVuZGVyaW5nIG9mIHRleHQsIFwKK3dpdGggYW4gZW1waGFzaXMgb24gaW50ZXJuYXRpb25hbGl6YXRpb24uIFBhbmdvIGNhbiBiZSB1c2VkIGFueXdoZXJlIFwKK3RoYXQgdGV4dCBsYXlvdXQgaXMgbmVlZGVkLCB0aG91Z2ggbW9zdCBvZiB0aGUgd29yayBvbiBQYW5nbyBzbyBmYXIgaGFzIFwKK2JlZW4gZG9uZSBpbiB0aGUgY29udGV4dCBvZiB0aGUgR1RLKyB3aWRnZXQgdG9vbGtpdC4gUGFuZ28gZm9ybXMgdGhlIFwKK2NvcmUgb2YgdGV4dCBhbmQgZm9udCBoYW5kbGluZyBmb3IgR1RLKy0yLnguIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5wYW5nby5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJMR1BMdjIuMCsiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNiZjUwMDAyYWVmZDAwMmY0OWU3YmI4NTQwNjNmN2U3IgorCitpbmhlcml0IGdub21lYmFzZSBndGstZG9jIHB0ZXN0LWdub21lIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworU1JDX1VSSSArPSAiZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1Ecm9wLWludHJvc3BlY3Rpb24tbWFjcm9zLWZyb20tYWNpbmNsdWRlLm00LnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUVuZm9yY2UtcmVjcmVhdGlvbi1vZi1kb2NzLXBhbmdvLnR5cGVzLWl0LWlzLWJ1aWxkLWMucGF0Y2ggXAorIgorU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiNTA3YzY3NDZmYmY1M2ZjOWQ0OGM1NzdmMWUyNjVkZTMiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJjYTE1MmI3MzgzYTFlOWY3ZmQ3NGFlOTYwMjNkYzY3NzBkYzUwNDM0MTQ3OTNiZmU3NjhmZjA2YjY3NTllNTczIgorCitERVBFTkRTID0gImdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBmb250Y29uZmlnIGZyZWV0eXBlIHZpcnR1YWwvbGliaWNvbnYgY2Fpcm8gaGFyZmJ1enoiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0iCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLS13aXRoLXhmdCwtLXdpdGhvdXQteGZ0LHZpcnR1YWwvbGlieDExIGxpYnhmdCIKKworRVhUUkFfQVVUT1JFQ09ORiA9ICIiCisKK0VYVFJBX09FQ09ORiA9ICIgXAorCSAgICAgICAgLS1kaXNhYmxlLWRlYnVnIFwKKwkgICAgICAgICIKKworTEVBRF9TT05BTUUgPSAibGlicGFuZ28tMS4wKiIKK0xJQlYgPSAiMS44LjAiCisKKyMgVGhpcyBiaW5hcnkgbmVlZHMgdG8gYmUgY29tcGlsZWQgZm9yIHRoZSBob3N0IGFyY2hpdGVjdHVyZS4gIFRoaXMgaXNuJ3QgcHJldHR5IQorZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLXRhcmdldCAoKSB7CisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwdGVzdCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisJCW1ha2UgQ0M9IiR7QlVJTERfQ0N9IiBDRkxBR1M9IiIgTERGTEFHUz0iJHtCVUlMRF9MREZMQUdTfSIgQU1fQ1BQRkxBR1M9IiQocGtnLWNvbmZpZy1uYXRpdmUgLS1jZmxhZ3MgZ2xpYi0yLjApIiBnZW5fYWxsX3VuaWNvZGVfTERBREQ9IiQocGtnLWNvbmZpZy1uYXRpdmUgLS1saWJzIGdsaWItMi4wKSIgLUMgJHtCfS90ZXN0cyBnZW4tYWxsLXVuaWNvZGUKKwlmaQorfQorCitGSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vKiAke2xpYmRpcn0vbGlicGFuZ28qJHtTT0xJQlN9IgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vcGFuZ28vJHtMSUJWfS9tb2R1bGVzLyoubGEiCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJsaWJlcmF0aW9uLWZvbnRzIGNhbnRhcmVsbC1mb250cyIKKworUlBST1ZJREVTXyR7UE59ICs9ICJwYW5nby1tb2R1bGVzIHBhbmdvLW1vZHVsZS1pbmRpYy1sYW5nIFwKKyAgICAgICAgICAgICAgICAgICAgcGFuZ28tbW9kdWxlLWJhc2ljLWZjIHBhbmdvLW1vZHVsZS1hcmFiaWMtbGFuZyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BpZ2xpdC9waWdsaXQvMDAwMS1DTWFrZS1kZWZpbmUtR0JNX0JPX01BUC1vbmx5LXdoZW4tc3ltYm9sLWlzLWZvdW5kLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9waWdsaXQvcGlnbGl0LzAwMDEtQ01ha2UtZGVmaW5lLUdCTV9CT19NQVAtb25seS13aGVuLXN5bWJvbC1pcy1mb3VuZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGI2MzQyNC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BpZ2xpdC9waWdsaXQvMDAwMS1DTWFrZS1kZWZpbmUtR0JNX0JPX01BUC1vbmx5LXdoZW4tc3ltYm9sLWlzLWZvdW5kLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotRnJvbSA0NzY5N2FlZTA1YTExMjQyMmFjZjIwMzk4MjA4NWU3YjNlNmMwNWIyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP0RhbmllbD0yMEQ9QzM9QURhej89IDxkYW5pZWwuZGlhekBsaW5hcm8ub3JnPgotRGF0ZTogVGh1LCA0IE1heSAyMDE3IDAwOjU3OjM5IC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0ggMS80XSBDTWFrZTogZGVmaW5lIEdCTV9CT19NQVAgb25seSB3aGVuIHN5bWJvbCBpcyBmb3VuZAotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1nYm1fYm9fbWFwKCkgYW5kIF91bm1hcCgpIGhhdmUgYmVlbiBhZGRlZCByZWNlbnRseSB0byBNZXNhLAotYW5kIHRoaXMgdXBkYXRlIG1heSBub3QgaGF2ZSByZWFjaGVkIGFsbCBpbXBsZW1lbnRhdGlvbnMgb2YKLUdCTSwgc3VjaCBhcyB0aGUgb25lIHByb3ZpZGVkIGJ5IE1hbGkgcjYsIHdoZXJlIHNhaWQKLWRlZmluaXRpb25zIGNhbiBiZSBmb3VuZCBpbiB0aGUgaGVhZGVyIGZpbGUgYnV0IG5vdCBpbiB0aGUKLWxpYnJhcnkgaXRzZWxmLiBUaGlzIGxlYWRzIHRvIGVycm9ycyBsaWtlIHRoZSBmb2xsb3dpbmcgd2hlbgotbGlua2luZzoKLSAgLi4vLi4vLi4vLi4vbGliL2xpYnBpZ2xpdHV0aWxfZ2wuc28uMDogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgZ2JtX2JvX3VubWFwJwotICAuLi8uLi8uLi8uLi9saWIvbGlicGlnbGl0dXRpbF9nbC5zby4wOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBnYm1fYm9fbWFwJwotICBjb2xsZWN0MjogZXJyb3I6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKLSAgbWFrZVsyXTogKioqIFtiaW4vcG9pbnQtc3ByaXRlXSBFcnJvciAxCi0KLUluc3RlYWQgb2YgcmVseWluZyBvbiB0aGUgaGVhZGVyIGZpbGUsIGFjdHVhbGx5IHRyeSB0byBsaW5rCi11c2luZyB0aGF0IHN5bWJvbCB0byBkZXRlcm1pbmUgaWYgUElHTElUX0hBU19HQk1fQk9fTUFQCi1zaG91bGQgYmUgZGVmaW5lZC4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW3BpZ2xpdEBsaXN0cy5mcmVlZGVza3RvcC5vcmddCi0KLVNpZ25lZC1vZmYtYnk6IERhbmllbCBEw61heiA8ZGFuaWVsLmRpYXpAbGluYXJvLm9yZz4KLVJldmlld2VkLWJ5OiBKYW4gVmVzZWx5IDxqYW4udmVzZWx5QHJ1dGdlcnMuZWR1PgotUmV2aWV3ZWQtYnk6IER5bGFuIEJha2VyIDxkeWxhbkBwbndiYWtlcnMuY29tPgotLS0tCi0gQ01ha2VMaXN0cy50eHQgfCA1ICsrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKLWluZGV4IGE0ZmY5OWUuLmNjMjZmYTggMTAwNjQ0Ci0tLS0gYS9DTWFrZUxpc3RzLnR4dAotKysrIGIvQ01ha2VMaXN0cy50eHQKLUBAIC0xNDEsOCArMTQxLDkgQEAgSUYoJHtDTUFLRV9TWVNURU1fTkFNRX0gTUFUQ0hFUyAiTGludXgiKQotIAlpZihHQk1fRk9VTkQpCi0gCQlzZXQoUElHTElUX0hBU19HQk0gVHJ1ZSkKLSAJCWFkZF9kZWZpbml0aW9ucygtRFBJR0xJVF9IQVNfR0JNKQotLQkJaWYgKEdCTV9WRVJTSU9OIFZFUlNJT05fRVFVQUwgIjEyLjEiIE9SIEdCTV9WRVJTSU9OIFZFUlNJT05fR1JFQVRFUiAiMTIuMSIpCi0tCQkJc2V0KFBJR0xJVF9IQVNfR0JNX0JPX01BUCBUcnVlKQotKwkJc2V0KENNQUtFX1JFUVVJUkVEX0xJQlJBUklFUyAke0NNQUtFX1JFUVVJUkVEX0xJQlJBUklFU30gJHtHQk1fTElCUkFSSUVTfSkKLSsJCUNIRUNLX0ZVTkNUSU9OX0VYSVNUUyhnYm1fYm9fbWFwIFBJR0xJVF9IQVNfR0JNX0JPX01BUCkKLSsJCWlmIChQSUdMSVRfSEFTX0dCTV9CT19NQVApCi0gCQkJYWRkX2RlZmluaXRpb25zKC1EUElHTElUX0hBU19HQk1fQk9fTUFQKQotIAkJZW5kaWYoKQotIAllbmRpZihHQk1fRk9VTkQpCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGlnbGl0L3BpZ2xpdC8wMDAyLXV0aWwtZWdsLUhvbm91ci1TdXJmYWNlbGVzcy1NRVNBLWluLWdldF9kZWZhdWx0X2Rpc3AucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BpZ2xpdC9waWdsaXQvMDAwMi11dGlsLWVnbC1Ib25vdXItU3VyZmFjZWxlc3MtTUVTQS1pbi1nZXRfZGVmYXVsdF9kaXNwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmM2FhMWJhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGlnbGl0L3BpZ2xpdC8wMDAyLXV0aWwtZWdsLUhvbm91ci1TdXJmYWNlbGVzcy1NRVNBLWluLWdldF9kZWZhdWx0X2Rpc3AucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi1Gcm9tIGE2NjA4ZjIxOGI1MDIzY2VmMzZiM2RlNWVjM2M1ZjAwYjAyMTFkMWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEYW5pZWwgRGlheiA8ZGFuaWVsLmRpYXpAbGluYXJvLm9yZz4KLURhdGU6IFdlZCwgMTcgTWF5IDIwMTcgMTg6MDA6MTUgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSCAyLzRdIHV0aWwvZWdsOiBIb25vdXIgU3VyZmFjZWxlc3MgTUVTQSBpbiBnZXRfZGVmYXVsdF9kaXNwbGF5Ci1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLVRoZSBFR0xfTUVTQV9wbGF0Zm9ybV9zdXJmYWNlbGVzcyBleHRlbnNpb24gd2FzIGludHJvZHVjZWQgbm90IHRvbyBsb25nCi1hZ28uIEFkZCBzdXBwb3J0IGZvciBpdCBvdXIgaGVscGVyLgotCi1VcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkLCBzaW5jZSBnaXQgN2I3NDYwMi4KLQotU2lnbmVkLW9mZi1ieTogRGFuaWVsIETDrWF6IDxkYW5pZWwuZGlhekBsaW5hcm8ub3JnPgotUmV2aWV3ZWQtYnk6IEVtaWwgVmVsaWtvdiA8ZW1pbC52ZWxpa292QGNvbGxhYm9yYS5jb20+Ci0tLS0KLSB0ZXN0cy91dGlsL3BpZ2xpdC11dGlsLWVnbC5jIHwgNyArKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvdGVzdHMvdXRpbC9waWdsaXQtdXRpbC1lZ2wuYyBiL3Rlc3RzL3V0aWwvcGlnbGl0LXV0aWwtZWdsLmMKLWluZGV4IDEwNmM3MzUuLjM4OWZlMTIgMTAwNjQ0Ci0tLS0gYS90ZXN0cy91dGlsL3BpZ2xpdC11dGlsLWVnbC5jCi0rKysgYi90ZXN0cy91dGlsL3BpZ2xpdC11dGlsLWVnbC5jCi1AQCAtODUsNiArODUsNyBAQCBwaWdsaXRfZWdsX2dldF9kZWZhdWx0X2Rpc3BsYXkoRUdMZW51bSBwbGF0Zm9ybSkKLSAJc3RhdGljIGJvb2wgaGFzX3gxMSA9IGZhbHNlOwotIAlzdGF0aWMgYm9vbCBoYXNfd2F5bGFuZCA9IGZhbHNlOwotIAlzdGF0aWMgYm9vbCBoYXNfZ2JtID0gZmFsc2U7Ci0rCXN0YXRpYyBib29sIGhhc19zdXJmYWNlbGVzc19tZXNhID0gZmFsc2U7Ci0gCi0gCXN0YXRpYyBFR0xEaXNwbGF5ICgqcGVnbEdldFBsYXRmb3JtRGlzcGxheUVYVCkoRUdMZW51bSBwbGF0Zm9ybSwgdm9pZCAqbmF0aXZlX2Rpc3BsYXksIGNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QpOwotIAotQEAgLTk5LDYgKzEwMCw3IEBAIHBpZ2xpdF9lZ2xfZ2V0X2RlZmF1bHRfZGlzcGxheShFR0xlbnVtIHBsYXRmb3JtKQotIAkJaGFzX3gxMSA9IHBpZ2xpdF9pc19lZ2xfZXh0ZW5zaW9uX3N1cHBvcnRlZChFR0xfTk9fRElTUExBWSwgIkVHTF9FWFRfcGxhdGZvcm1feDExIik7Ci0gCQloYXNfd2F5bGFuZCA9IHBpZ2xpdF9pc19lZ2xfZXh0ZW5zaW9uX3N1cHBvcnRlZChFR0xfTk9fRElTUExBWSwgIkVHTF9FWFRfcGxhdGZvcm1fd2F5bGFuZCIpOwotIAkJaGFzX2dibSA9IHBpZ2xpdF9pc19lZ2xfZXh0ZW5zaW9uX3N1cHBvcnRlZChFR0xfTk9fRElTUExBWSwgIkVHTF9FWFRfcGxhdGZvcm1fZ2JtIik7Ci0rCQloYXNfc3VyZmFjZWxlc3NfbWVzYSA9IHBpZ2xpdF9pc19lZ2xfZXh0ZW5zaW9uX3N1cHBvcnRlZChFR0xfTk9fRElTUExBWSwgIkVHTF9NRVNBX3BsYXRmb3JtX3N1cmZhY2VsZXNzIik7Ci0gCi0gCQlwZWdsR2V0UGxhdGZvcm1EaXNwbGF5RVhUID0gKHZvaWQqKSBlZ2xHZXRQcm9jQWRkcmVzcygiZWdsR2V0UGxhdGZvcm1EaXNwbGF5RVhUIik7Ci0gCX0KLUBAIC0xMjMsNiArMTI1LDExIEBAIHBpZ2xpdF9lZ2xfZ2V0X2RlZmF1bHRfZGlzcGxheShFR0xlbnVtIHBsYXRmb3JtKQotIAkJCXJldHVybiBFR0xfTk9fRElTUExBWTsKLSAJCX0KLSAJCWJyZWFrOwotKwljYXNlIEVHTF9QTEFURk9STV9TVVJGQUNFTEVTU19NRVNBOgotKwkJaWYgKCFoYXNfc3VyZmFjZWxlc3NfbWVzYSkgewotKwkJCXJldHVybiBFR0xfTk9fRElTUExBWTsKLSsJCX0KLSsJCWJyZWFrOwotIAlkZWZhdWx0OgotIAkJZnByaW50ZihzdGRlcnIsICIlczogdW5yZWNvZ25pemVkIHBsYXRmb3JtICUjeFxuIiwgX19mdW5jX18sIHBsYXRmb3JtKTsKLSAJCXJldHVybiBFR0xfTk9fRElTUExBWTsKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9waWdsaXQvcGlnbGl0LzAwMDMtZWdsX21lc2FfcGxhdGZvcm1fc3VyZmFjZWxlc3MtRG9uLXQtdXNlLWVnbEdldFBsYXRmby5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGlnbGl0L3BpZ2xpdC8wMDAzLWVnbF9tZXNhX3BsYXRmb3JtX3N1cmZhY2VsZXNzLURvbi10LXVzZS1lZ2xHZXRQbGF0Zm8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmMjRkYzEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9waWdsaXQvcGlnbGl0LzAwMDMtZWdsX21lc2FfcGxhdGZvcm1fc3VyZmFjZWxlc3MtRG9uLXQtdXNlLWVnbEdldFBsYXRmby5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLUZyb20gYzBkYzQzMGI4ZjVkZWVhY2RiMTFjZDE4ODE5NWUxNmY1MTJhZjIzMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERhbmllbCBEaWF6IDxkYW5pZWwuZGlhekBsaW5hcm8ub3JnPgotRGF0ZTogV2VkLCAxNyBNYXkgMjAxNyAxODowMDoxNiAtMDUwMAotU3ViamVjdDogW1BBVENIIDMvNF0gZWdsX21lc2FfcGxhdGZvcm1fc3VyZmFjZWxlc3M6IERvbid0IHVzZQotIGVnbEdldFBsYXRmb3JtRGlzcGxheSBkaXJlY3RseQotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1UaGUgZW50cnkgcG9pbnQgaXMgbm90IGd1YXJhbnRlZWQgdG8gZXhpc3QsIHNvIHVzZSB0aGUKLXBpZ2xpdF9lZ2xfZ2V0X2RlZmF1bHRfZGlzcGxheSgpIGhlbHBlciB3aGljaCBkb2VzIHRoZSBjb3JyZWN0IHRoaW5nLgotCi1VcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkLCBzaW5jZSBnaXQgN2I3NDYwMi4KLQotU2lnbmVkLW9mZi1ieTogRGFuaWVsIETDrWF6IDxkYW5pZWwuZGlhekBsaW5hcm8ub3JnPgotUmV2aWV3ZWQtYnk6IEVtaWwgVmVsaWtvdiA8ZW1pbC52ZWxpa292QGNvbGxhYm9yYS5jb20+Ci0tLS0KLSAuLi4vc3BlYy9lZ2xfbWVzYV9wbGF0Zm9ybV9zdXJmYWNlbGVzcy9lZ2xfbWVzYV9wbGF0Zm9ybV9zdXJmYWNlbGVzcy5jICB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3Rlc3RzL2VnbC9zcGVjL2VnbF9tZXNhX3BsYXRmb3JtX3N1cmZhY2VsZXNzL2VnbF9tZXNhX3BsYXRmb3JtX3N1cmZhY2VsZXNzLmMgYi90ZXN0cy9lZ2wvc3BlYy9lZ2xfbWVzYV9wbGF0Zm9ybV9zdXJmYWNlbGVzcy9lZ2xfbWVzYV9wbGF0Zm9ybV9zdXJmYWNlbGVzcy5jCi1pbmRleCAzYmJkNmFhLi44MWEzOTE5IDEwMDY0NAotLS0tIGEvdGVzdHMvZWdsL3NwZWMvZWdsX21lc2FfcGxhdGZvcm1fc3VyZmFjZWxlc3MvZWdsX21lc2FfcGxhdGZvcm1fc3VyZmFjZWxlc3MuYwotKysrIGIvdGVzdHMvZWdsL3NwZWMvZWdsX21lc2FfcGxhdGZvcm1fc3VyZmFjZWxlc3MvZWdsX21lc2FfcGxhdGZvcm1fc3VyZmFjZWxlc3MuYwotQEAgLTMxLDcgKzMxLDcgQEAgdGVzdF9zZXR1cChFR0xEaXNwbGF5ICpkcHkpCi0gCi0gCXBpZ2xpdF9yZXF1aXJlX2VnbF9leHRlbnNpb24oRUdMX05PX0RJU1BMQVksICJFR0xfTUVTQV9wbGF0Zm9ybV9zdXJmYWNlbGVzcyIpOwotIAotLQkqZHB5ID0gZWdsR2V0UGxhdGZvcm1EaXNwbGF5KEVHTF9QTEFURk9STV9TVVJGQUNFTEVTU19NRVNBLCBOVUxMLCBOVUxMKTsKLSsJKmRweSA9IHBpZ2xpdF9lZ2xfZ2V0X2RlZmF1bHRfZGlzcGxheShFR0xfUExBVEZPUk1fU1VSRkFDRUxFU1NfTUVTQSk7Ci0gCWlmICgqZHB5ID09IEVHTF9OT19ESVNQTEFZKSB7Ci0gCQlwcmludGYoImZhaWxlZCB0byBnZXQgRUdMRGlzcGxheVxuIik7Ci0gCQlwaWdsaXRfcmVwb3J0X3Jlc3VsdChQSUdMSVRfU0tJUCk7Ci0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGlnbGl0L3BpZ2xpdC8wMDA0LWVnbF9tZXNhX3BsYXRmb3JtX3N1cmZhY2VsZXNzLVVzZS1FWFQtZnVuY3Rpb25zLWZvci0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BpZ2xpdC9waWdsaXQvMDAwNC1lZ2xfbWVzYV9wbGF0Zm9ybV9zdXJmYWNlbGVzcy1Vc2UtRVhULWZ1bmN0aW9ucy1mb3ItLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOTUyYWY1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGlnbGl0L3BpZ2xpdC8wMDA0LWVnbF9tZXNhX3BsYXRmb3JtX3N1cmZhY2VsZXNzLVVzZS1FWFQtZnVuY3Rpb25zLWZvci0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBACi1Gcm9tIDU3ZGUxZmY2NzU4ZWM1ZWE0YTUyNjM3ZjIzM2UzZTMxNTAwODYyNTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEYW5pZWwgRGlheiA8ZGFuaWVsLmRpYXpAbGluYXJvLm9yZz4KLURhdGU6IFdlZCwgMTcgTWF5IDIwMTcgMTg6MDA6MTcgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSCA0LzRdIGVnbF9tZXNhX3BsYXRmb3JtX3N1cmZhY2VsZXNzOiBVc2UgRVhUIGZ1bmN0aW9ucyBmb3IKLSBzdXJmYWNlcwotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1UaGVzZSBFWFQgc3ltYm9scyBhcmUgZ3VhcmFudGVlZCB0byBleGlzdCBzaW5jZSB0aGV5IHJlcXVpcmUKLUVHTF9FWFRfcGxhdGZvcm1fYmFzZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZCwgc2luY2UgZ2l0IDdiNzQ2MDIuCi0KLVNpZ25lZC1vZmYtYnk6IERhbmllbCBEw61heiA8ZGFuaWVsLmRpYXpAbGluYXJvLm9yZz4KLVJldmlld2VkLWJ5OiBFbWlsIFZlbGlrb3YgPGVtaWwudmVsaWtvdkBjb2xsYWJvcmEuY29tPgotLS0tCi0gLi4uL2VnbF9tZXNhX3BsYXRmb3JtX3N1cmZhY2VsZXNzLmMgICAgICAgICAgICAgICAgfCAyMyArKysrKysrKysrKysrKysrKysrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS90ZXN0cy9lZ2wvc3BlYy9lZ2xfbWVzYV9wbGF0Zm9ybV9zdXJmYWNlbGVzcy9lZ2xfbWVzYV9wbGF0Zm9ybV9zdXJmYWNlbGVzcy5jIGIvdGVzdHMvZWdsL3NwZWMvZWdsX21lc2FfcGxhdGZvcm1fc3VyZmFjZWxlc3MvZWdsX21lc2FfcGxhdGZvcm1fc3VyZmFjZWxlc3MuYwotaW5kZXggODFhMzkxOS4uMjY0ZWQ3MSAxMDA2NDQKLS0tLSBhL3Rlc3RzL2VnbC9zcGVjL2VnbF9tZXNhX3BsYXRmb3JtX3N1cmZhY2VsZXNzL2VnbF9tZXNhX3BsYXRmb3JtX3N1cmZhY2VsZXNzLmMKLSsrKyBiL3Rlc3RzL2VnbC9zcGVjL2VnbF9tZXNhX3BsYXRmb3JtX3N1cmZhY2VsZXNzL2VnbF9tZXNhX3BsYXRmb3JtX3N1cmZhY2VsZXNzLmMKLUBAIC0yNCw2ICsyNCwyNCBAQAotICNpbmNsdWRlICJwaWdsaXQtdXRpbC5oIgotICNpbmNsdWRlICJwaWdsaXQtdXRpbC1lZ2wuaCIKLSAKLSsvKiBFeHRlbnNpb24gZnVuY3Rpb24gcG9pbnRlcnMuCi0rICoKLSsgKiBVc2UgcHJlZml4ICdwZWdsJyAocGlnbGl0IGVnbCkgaW5zdGVhZCBvZiAnZWdsJyB0byBhdm9pZCBjb2xsaXNpb25zIHdpdGgKLSsgKiBwcm90b3R5cGVzIGluIGVnbGV4dC5oLiAqLwotK0VHTFN1cmZhY2UgKCpwZWdsQ3JlYXRlUGxhdGZvcm1QaXhtYXBTdXJmYWNlRVhUKShFR0xEaXNwbGF5IGRpc3BsYXksIEVHTENvbmZpZyBjb25maWcsCi0rCSAgICBOYXRpdmVQaXhtYXBUeXBlIG5hdGl2ZV9waXhtYXAsIGNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QpOwotK0VHTFN1cmZhY2UgKCpwZWdsQ3JlYXRlUGxhdGZvcm1XaW5kb3dTdXJmYWNlRVhUKShFR0xEaXNwbGF5IGRpc3BsYXksIEVHTENvbmZpZyBjb25maWcsCi0rCSAgICBOYXRpdmVXaW5kb3dUeXBlIG5hdGl2ZV93aW5kb3csIGNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QpOwotKwotK3N0YXRpYyB2b2lkCi0raW5pdF9lZ2xfZXh0ZW5zaW9uX2Z1bmNzKHZvaWQpCi0rewotKwlwZWdsQ3JlYXRlUGxhdGZvcm1QaXhtYXBTdXJmYWNlRVhUID0gKHZvaWQqKQotKwkJZWdsR2V0UHJvY0FkZHJlc3MoImVnbENyZWF0ZVBsYXRmb3JtUGl4bWFwU3VyZmFjZUVYVCIpOwotKwlwZWdsQ3JlYXRlUGxhdGZvcm1XaW5kb3dTdXJmYWNlRVhUID0gKHZvaWQqKQotKwkJZWdsR2V0UHJvY0FkZHJlc3MoImVnbENyZWF0ZVBsYXRmb3JtV2luZG93U3VyZmFjZUVYVCIpOwotK30KLSsKLSBzdGF0aWMgdm9pZAotIHRlc3Rfc2V0dXAoRUdMRGlzcGxheSAqZHB5KQotIHsKLUBAIC03Miw3ICs5MCw3IEBAIHRlc3RfY3JlYXRlX3dpbmRvdyh2b2lkICp0ZXN0X2RhdGEpCi0gCi0gCXRlc3Rfc2V0dXAoJmRweSk7Ci0gCi0tCXN1cmYgPSBlZ2xDcmVhdGVQbGF0Zm9ybVdpbmRvd1N1cmZhY2UoZHB5LCBFR0xfTk9fQ09ORklHX0tIUiwKLSsJc3VyZiA9IHBlZ2xDcmVhdGVQbGF0Zm9ybVdpbmRvd1N1cmZhY2VFWFQoZHB5LCBFR0xfTk9fQ09ORklHX0tIUiwKLSAJCQkJCSAgICAgIC8qbmF0aXZlX3dpbmRvdyovIE5VTEwsCi0gCQkJCQkgICAgICAvKmF0dHJpYl9saXN0Ki8gTlVMTCk7Ci0gCWlmIChzdXJmKSB7Ci1AQCAtMTAzLDcgKzEyMSw3IEBAIHRlc3RfY3JlYXRlX3BpeG1hcCh2b2lkICp0ZXN0X2RhdGEpCi0gCi0gCXRlc3Rfc2V0dXAoJmRweSk7Ci0gCi0tCXN1cmYgPSBlZ2xDcmVhdGVQbGF0Zm9ybVBpeG1hcFN1cmZhY2UoZHB5LCBFR0xfTk9fQ09ORklHX0tIUiwKLSsJc3VyZiA9IHBlZ2xDcmVhdGVQbGF0Zm9ybVBpeG1hcFN1cmZhY2VFWFQoZHB5LCBFR0xfTk9fQ09ORklHX0tIUiwKLSAJCQkJCSAgICAgIC8qbmF0aXZlX3dpbmRvdyovIE5VTEwsCi0gCQkJCQkgICAgICAvKmF0dHJpYl9saXN0Ki8gTlVMTCk7Ci0gCWlmIChzdXJmKSB7Ci1AQCAtMjA1LDYgKzIyMyw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJcGlnbGl0X3JlcG9ydF9yZXN1bHQoUElHTElUX0ZBSUwpOwotIAl9Ci0gCi0rCWluaXRfZWdsX2V4dGVuc2lvbl9mdW5jcygpOwotIAlyZXN1bHQgPSBwaWdsaXRfcnVuX3NlbGVjdGVkX3N1YnRlc3RzKHN1YnRlc3RzLCBzZWxlY3RlZF9uYW1lcywKLSAJCQkJCSAgICAgIG51bV9zZWxlY3RlZCwgcmVzdWx0KTsKLSAJcGlnbGl0X3JlcG9ydF9yZXN1bHQocmVzdWx0KTsKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9waWdsaXQvcGlnbGl0X2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGlnbGl0L3BpZ2xpdF9naXQuYmIKaW5kZXggMmVhNTc3OS4uZDI3NGE4ZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9waWdsaXQvcGlnbGl0X2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BpZ2xpdC9waWdsaXRfZ2l0LmJiCkBAIC01LDE0ICs1LDExIEBACiBTUkNfVVJJID0gImdpdDovL2Fub25naXQuZnJlZWRlc2t0b3Aub3JnL3BpZ2xpdCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNtYWtlLWluc3RhbGwtYmFzaC1jb21wbGV0aW9ucy1pbi10aGUtcmlnaHQtcGxhY2UucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS10ZXN0cy1Vc2UtRkVfVVBXQVJELW9ubHktaWYtaXRzLWRlZmluZWQtaW4tZmVudi5oLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQ01ha2UtZGVmaW5lLUdCTV9CT19NQVAtb25seS13aGVuLXN5bWJvbC1pcy1mb3VuZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLXV0aWwtZWdsLUhvbm91ci1TdXJmYWNlbGVzcy1NRVNBLWluLWdldF9kZWZhdWx0X2Rpc3AucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1lZ2xfbWVzYV9wbGF0Zm9ybV9zdXJmYWNlbGVzcy1Eb24tdC11c2UtZWdsR2V0UGxhdGZvLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtZWdsX21lc2FfcGxhdGZvcm1fc3VyZmFjZWxlc3MtVXNlLUVYVC1mdW5jdGlvbnMtZm9yLS5wYXRjaCBcCiAgICAgICAgICAgICIKK1VQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgogCi0jIEZyb20gMjAxNy0wMi0wNgotU1JDUkVWID0gImNhNThlZWMwYjk2NTY1NWM3ZWJhNTkyYTYzNGNiZjRhYWRmYmM2NzUiCisjIEZyb20gMjAxNy0wNy0wMworU1JDUkVWID0gImM4ZjRmZDllZWIyOThhMmVmMDg1NTkyN2YyMjYzNGY3OTRlZjNlZmYiCiAjICh3aGVuIFBWIGdvZXMgYWJvdmUgMS4wIHJlbW92ZSB0aGUgdHJhaWxpbmcgcikKIFBWID0gIjEuMCtnaXRyJHtTUkNQVn0iCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdHRmLWZvbnRzL2xpYmVyYXRpb24tZm9udHNfMS4wNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdHRmLWZvbnRzL2xpYmVyYXRpb24tZm9udHNfMS4wNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzQyMTJlNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3R0Zi1mb250cy9saWJlcmF0aW9uLWZvbnRzXzEuMDQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1TVU1NQVJZID0gIkxpYmVyYXRpb24odG0pIEZvbnRzIgotREVTQ1JJUFRJT04gPSAiVGhlIExpYmVyYXRpb24odG0pIEZvbnRzIGlzIGEgZm9udCBmYW1pbHkgb3JpZ2luYWxseSBcCi1jcmVhdGVkIGJ5IEFzY2VuZGVyKGMpIHdoaWNoIGFpbXMgYXQgbWV0cmljIGNvbXBhdGliaWxpdHkgd2l0aCBcCi1BcmlhbCwgVGltZXMgTmV3IFJvbWFuLCBDb3VyaWVyIE5ldy4iCi1IT01FUEFHRSA9ICJodHRwczovL3JlbGVhc2VzLnBhZ3VyZS5vcmcvbGliZXJhdGlvbi1mb250cy8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS8iCi0KLVJFQ0lQRV9OT19VUERBVEVfUkVBU09OID0gIjIueCBkZXBlbmRzIG9uIGZvbnRmb3JnZSBwYWNrYWdlLCB3aGljaCBpcyBub3QgeWV0IHByb3ZpZGVkIGluIG9lLWNvcmUiCi0KLVNFQ1RJT04gPSAieDExL2ZvbnRzIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgotUFIgPSAicjQiCi1QRSA9ICIxIgotCi1pbmhlcml0IGFsbGFyY2ggZm9udGNhY2hlCi0KLUZPTlRfUEFDS0FHRVMgPSAiJHtQTn0iCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9yZWxlYXNlcy5wYWd1cmUub3JnL2xpYmVyYXRpb24tZm9udHMvbGliZXJhdGlvbi1mb250cy0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMzAtbGliZXJhdGlvbi1hbGlhc2VzLmNvbmYiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0ODQ2Nzk3ZWYwZmM3MGIwY2JhZWRlMjUxNDY3N2M1OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwZTBkMDk1N2M4NWI3NTg1NjFhM2Q0YWVmNGViY2QyYzM5OTU5ZTUzMjg0MjlkOTZhZTEwNjI0OWQ4MzUzMWExIgotCi1kb19pbnN0YWxsICgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2ZvbnRzL3R0Zi8KLQlmb3IgaSBpbiAqLnR0ZjsgZG8KLQkJaW5zdGFsbCAtbSAwNjQ0ICRpICR7RH0ke3ByZWZpeH0vc2hhcmUvZm9udHMvdHRmLyR7aX0KLQlkb25lCi0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2ZvbnRzL2NvbmYuZC8KLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS8zMC1saWJlcmF0aW9uLWFsaWFzZXMuY29uZiAke0R9JHtzeXNjb25mZGlyfS9mb250cy9jb25mLmQvCi0KLQlpbnN0YWxsIC1kICR7RH0ke3ByZWZpeH0vc2hhcmUvZG9jLyR7QlBOfS8KLQlpbnN0YWxsIC1tIDA2NDQgTGljZW5zZS50eHQgJHtEfSR7ZGF0YWRpcn0vZG9jLyR7QlBOfS8KLX0KLQotUEFDS0FHRVMgPSAiJHtQTn0iCi1GSUxFU18ke1BOfSArPSAiJHtzeXNjb25mZGlyfSAke2RhdGFkaXJ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy90dGYtZm9udHMvbGliZXJhdGlvbi1mb250c18yLjAwLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3R0Zi1mb250cy9saWJlcmF0aW9uLWZvbnRzXzIuMDAuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MTJkYTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy90dGYtZm9udHMvbGliZXJhdGlvbi1mb250c18yLjAwLjEuYmIKQEAgLTAsMCArMSwzOSBAQAorU1VNTUFSWSA9ICJMaWJlcmF0aW9uKHRtKSBGb250cyIKK0RFU0NSSVBUSU9OID0gIlRoZSBMaWJlcmF0aW9uKHRtKSBGb250cyBpcyBhIGZvbnQgZmFtaWx5IG9yaWdpbmFsbHkgXAorY3JlYXRlZCBieSBBc2NlbmRlcihjKSB3aGljaCBhaW1zIGF0IG1ldHJpYyBjb21wYXRpYmlsaXR5IHdpdGggXAorQXJpYWwsIFRpbWVzIE5ldyBSb21hbiwgQ291cmllciBOZXcuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9yZWxlYXNlcy5wYWd1cmUub3JnL2xpYmVyYXRpb24tZm9udHMvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vIgorCitTRUNUSU9OID0gIngxMS9mb250cyIKK0xJQ0VOU0UgPSAiT0ZMLTEuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWY5NmRiOTcwYTlhNDZjNTM2OTE0MmI5OWY1MzAzNjZiIgorUEUgPSAiMSIKKworaW5oZXJpdCBhbGxhcmNoIGZvbnRjYWNoZQorCitGT05UX1BBQ0tBR0VTID0gIiR7UE59IgorCitTUkNfVVJJID0gImh0dHBzOi8vcmVsZWFzZXMucGFndXJlLm9yZy9saWJlcmF0aW9uLWZvbnRzL2xpYmVyYXRpb24tZm9udHMtdHRmLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly8zMC1saWJlcmF0aW9uLWFsaWFzZXMuY29uZiIKKworUyA9ICIke1dPUktESVJ9L2xpYmVyYXRpb24tZm9udHMtdHRmLSR7UFZ9IgorCitTUkNfVVJJW21kNXN1bV0gPSAiNWM3ODE3MjNhMGQ5ZWQ2MTg4OTYwZGVmYmE4ZTkxY2YiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzg5MDI3OGE2Y2QxNzg3M2M1N2Q5Y2Q3ODVjMmQyMzBkOWFiZGVhODM3ZTk2NTE2MDE5YzU4ODVkZDI3MTUwNCIKKworZG9faW5zdGFsbCAoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9mb250cy90dGYvCisJZm9yIGkgaW4gKi50dGY7IGRvCisJCWluc3RhbGwgLW0gMDY0NCAkaSAke0R9JHtwcmVmaXh9L3NoYXJlL2ZvbnRzL3R0Zi8ke2l9CisJZG9uZQorCisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9mb250cy9jb25mLmQvCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vMzAtbGliZXJhdGlvbi1hbGlhc2VzLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vZm9udHMvY29uZi5kLworCisJaW5zdGFsbCAtZCAke0R9JHtwcmVmaXh9L3NoYXJlL2RvYy8ke0JQTn0vCisJaW5zdGFsbCAtbSAwNjQ0IExJQ0VOU0UgJHtEfSR7ZGF0YWRpcn0vZG9jLyR7QlBOfS8KK30KKworUEFDS0FHRVMgPSAiJHtQTn0iCitGSUxFU18ke1BOfSArPSAiJHtzeXNjb25mZGlyfSAke2RhdGFkaXJ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vYXNzaW1wXzQuMC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vYXNzaW1wXzQuMC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhOTZhNGYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi9hc3NpbXBfNC4wLjAuYmIKQEAgLTAsMCArMSwyMiBAQAorREVTQ1JJUFRJT04gPSAiT3BlbiBBc3NldCBJbXBvcnQgTGlicmFyeSBpcyBhIHBvcnRhYmxlIE9wZW4gU291cmNlIGxpYnJhcnkgdG8gaW1wb3J0IFwKKyAgICAgICAgICAgICAgIHZhcmlvdXMgd2VsbC1rbm93biAzRCBtb2RlbCBmb3JtYXRzIGluIGEgdW5pZm9ybSBtYW5uZXIuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5hc3NpbXAub3JnLyIKK1NFQ1RJT04gPSAiZGV2ZWwiCisKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MjExOWVkZWYwOTE2YjBiZDUxMWNiM2M3MzEwNzYyNzEiCisKK0RFUEVORFMgPSAiemxpYiIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2Fzc2ltcC9hc3NpbXAuZ2l0IgorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAidig/UDxwdmVyPihcZCsoXC5cZCspKykpIgorCitTUkNSRVYgPSAiNTJjOGQwNmY1ZDY0OThhZmQ2NmRmOTgzZGEzNDhhNmIxMTJmMTMxNCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBjbWFrZQorCitFWFRSQV9PRUNNQUtFID0gIi1EQVNTSU1QX0JVSUxEX0FTU0lNUF9UT09MUz1PRkYgLURBU1NJTVBfQlVJTERfVEVTVFM9T0ZGIC1EQVNTSU1QX0xJQl9JTlNUQUxMX0RJUj0ke2Jhc2VsaWJ9IgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jbWFrZS8iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4tZGVtb3MvMDAwMS1Eb24tdC1idWlsZC1kZW1vcy13aXRoLXF1ZXN0aW9uYWJseS1saWNlbnNlZC1kYXRhLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWRlbW9zLzAwMDEtRG9uLXQtYnVpbGQtZGVtb3Mtd2l0aC1xdWVzdGlvbmFibHktbGljZW5zZWQtZGF0YS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzJjOGYyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWRlbW9zLzAwMDEtRG9uLXQtYnVpbGQtZGVtb3Mtd2l0aC1xdWVzdGlvbmFibHktbGljZW5zZWQtZGF0YS5wYXRjaApAQCAtMCwwICsxLDkxIEBACitGcm9tIDU1NzcwZmIwN2M0MmZlNDEwY2Y4ZDA5ZjhmNTk3NmJhYmM4OWI5ZWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorRGF0ZTogVHVlLCA0IEp1bCAyMDE3IDE3OjEzOjQ1ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIERvbid0IGJ1aWxkIGRlbW9zIHdpdGggcXVlc3Rpb25hYmx5IGxpY2Vuc2VkIGRhdGEKKworU29tZSBvZiB0aGUgbW9kZWxzIGRvbid0IGhhdmUgb3BlbiBzb3VyY2UgY29tcGF0aWJsZSBsaWNlbnNlczoKK2Rvbid0IGJ1aWxkIGRlbW9zIHVzaW5nIHRob3NlLiBBbHNvIGRvbid0IGJ1aWxkIGRlbW9zIHRoYXQgbmVlZAorcmVzb3VyY2VzIHRoYXQgYXJlIG5vdCBpbmNsdWRlZC4KKworc3NhbzoKK3NjZW5lcmVuZGVyaW5nOgorCVNpYmVuaWsgbW9kZWwsIG5vIGxpY2Vuc2UgZm91bmQKKworZGVmZXJyZWQ6CitkZWZlcnJlZG11bHRpc2FtcGxpbmc6CitkZWZlcnJlZHNoYWRvd3M6CisJYXJtb3IgbW9kZWwsIENDLUJZLTMuMAorCit2dWxrYW5zY2VuZToKK2ltZ3VpOgorc2hhZG93bWFwcGluZzoKKwl2dWxrYW5zY2VuZSBtb2RlbCwgbm8gbGljZW5zZSBmb3VuZAorCitpbmRpcmVjdGRyYXc6CisJcGxhbnQgbW9kZWwsIG5vIGxpY2Vuc2UgZm91bmQKKworaGRyOgorcGJyaWJsOgorcGJydGV4dHVyZToKKwlSZXF1aXJlIGV4dGVybmFsIFZ1bGthbiBBc3NldCBQYWNrCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KK1NpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CistLS0KKyBDTWFrZUxpc3RzLnR4dCB8IDEzIC0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0CitpbmRleCA0OTU4ZmZmLi4wZjlkM2U0IDEwMDY0NAorLS0tIGEvQ01ha2VMaXN0cy50eHQKKysrKyBiL0NNYWtlTGlzdHMudHh0CitAQCAtMTUwLDE3ICsxNTAsMTEgQEAgc2V0KEVYQU1QTEVTCisgCWNvbXB1dGVwYXJ0aWNsZXMKKyAJY29tcHV0ZXNoYWRlcgorIAlkZWJ1Z21hcmtlcgorLQlkZWZlcnJlZAorLQlkZWZlcnJlZG11bHRpc2FtcGxpbmcKKy0JZGVmZXJyZWRzaGFkb3dzCisgCWRpc3BsYWNlbWVudAorIAlkaXN0YW5jZWZpZWxkZm9udHMKKyAJZHluYW1pY3VuaWZvcm1idWZmZXIKKyAJZ2VhcnMKKyAJZ2VvbWV0cnlzaGFkZXIKKy0JaGRyCistCWltZ3VpCistCWluZGlyZWN0ZHJhdwkKKyAJaW5zdGFuY2luZworIAltZXNoCisgCW11bHRpc2FtcGxpbmcKK0BAIC0xNzAsMjAgKzE2NCwxNCBAQCBzZXQoRVhBTVBMRVMKKyAJcGFyYWxsYXhtYXBwaW5nCisgCXBhcnRpY2xlZmlyZQorIAlwYnJiYXNpYworLQlwYnJpYmwKKy0JcGJydGV4dHVyZQorIAlwaXBlbGluZXMKKyAJcHVzaGNvbnN0YW50cworIAlyYWRpYWxibHVyCisgCXJheXRyYWNpbmcKKy0Jc2NlbmVyZW5kZXJpbmcKKyAJc2NyZWVuc2hvdAorLQlzaGFkb3dtYXBwaW5nCistCXNoYWRvd21hcHBpbmdvbW5pCisgCXNrZWxldGFsYW5pbWF0aW9uCisgCXNwZWNpYWxpemF0aW9uY29uc3RhbnRzCisgCXNwaGVyaWNhbGVudm1hcHBpbmcKKy0Jc3NhbworIAlzdWJwYXNzZXMKKyAJdGVycmFpbnRlc3NlbGxhdGlvbgorIAl0ZXNzZWxsYXRpb24KK0BAIC0xOTYsNyArMTg0LDYgQEAgc2V0KEVYQU1QTEVTCisgCXRleHR1cmVzcGFyc2VyZXNpZGVuY3kKKyAJdHJpYW5nbGUKKyAJdmlld3BvcnRhcnJheQorLQl2dWxrYW5zY2VuZQorICkKKyAKKyBidWlsZEV4YW1wbGVzKCkKKy0tIAorMi4xMy4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1kZW1vcy8wMDAxLUZpeC1idWlsZC1vbi14ODYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4tZGVtb3MvMDAwMS1GaXgtYnVpbGQtb24teDg2LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4MWIzNDIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4tZGVtb3MvMDAwMS1GaXgtYnVpbGQtb24teDg2LnBhdGNoCkBAIC0wLDAgKzEsNDEgQEAKK0Zyb20gYjA0OTVlZmI2YzNlYTNhNTMwZmNiYWRkYWM4NmRhNTdlY2NlNWE2NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CitEYXRlOiBNb24sIDEwIEp1bCAyMDE3IDEzOjExOjEyICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBidWlsZCBvbiB4ODYKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworfMKgZnVuY19jb21tb24uaW5sOjE5Mzo1MTogZXJyb3I6IHdyb25nIG51bWJlciBvZiB0ZW1wbGF0ZSBhcmd1bWVudHMKK3zCoCg1LCBzaG91bGQgYmUgNikgc3RydWN0IGNvbXB1dGVfc2lnbjxULCBQLCB2ZWNUeXBlLCBmYWxzZSwgQWxpZ25lZD4KKworVGhlIGZpeCBpcyBiYWNrcG9ydGVkIGZyb20gdGhlIHVwc3RyZWFtIGdsbSBwcm9qZWN0LgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW2h0dHBzOi8vZ2l0aHViLmNvbS9TYXNjaGFXaWxsZW1zL1Z1bGthbi9pc3N1ZXMvMzU2XQorU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KKy0tLQorIGV4dGVybmFsL2dsbS9nbG0vZGV0YWlsL2Z1bmNfY29tbW9uLmlubCB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9leHRlcm5hbC9nbG0vZ2xtL2RldGFpbC9mdW5jX2NvbW1vbi5pbmwgYi9leHRlcm5hbC9nbG0vZ2xtL2RldGFpbC9mdW5jX2NvbW1vbi5pbmwKK2luZGV4IGNhZmFlZDUuLjJkZDk0ZTEgMTAwNjQ0CistLS0gYS9leHRlcm5hbC9nbG0vZ2xtL2RldGFpbC9mdW5jX2NvbW1vbi5pbmwKKysrKyBiL2V4dGVybmFsL2dsbS9nbG0vZGV0YWlsL2Z1bmNfY29tbW9uLmlubAorQEAgLTE5MCwxMiArMTkwLDEyIEBAIG5hbWVzcGFjZSBkZXRhaWwKKyAKKyAjCWlmIEdMTV9BUkNIID09IEdMTV9BUkNIX1g4NgorIAl0ZW1wbGF0ZTxsZW5ndGhfdCBMLCB0eXBlbmFtZSBULCBwcmVjaXNpb24gUCwgdGVtcGxhdGU8bGVuZ3RoX3QsIHR5cGVuYW1lLCBwcmVjaXNpb24+IGNsYXNzIHZlY1R5cGUsIGJvb2wgQWxpZ25lZD4KKy0Jc3RydWN0IGNvbXB1dGVfc2lnbjxULCBQLCB2ZWNUeXBlLCBmYWxzZSwgQWxpZ25lZD4KKysJc3RydWN0IGNvbXB1dGVfc2lnbjxMLCBULCBQLCB2ZWNUeXBlLCBmYWxzZSwgQWxpZ25lZD4KKyAJeworIAkJR0xNX0ZVTkNfUVVBTElGSUVSIHN0YXRpYyB2ZWNUeXBlPEwsIFQsIFA+IGNhbGwodmVjVHlwZTxMLCBULCBQPiBjb25zdCAmIHgpCisgCQl7CisgCQkJVCBjb25zdCBTaGlmdChzdGF0aWNfY2FzdDxUPihzaXplb2YoVCkgKiA4IC0gMSkpOworLQkJCXZlY1R5cGU8TCwgVCwgUD4gY29uc3QgeSh2ZWNUeXBlPHR5cGVuYW1lIG1ha2VfdW5zaWduZWQ8VD46OnR5cGUsIFA+KC14KSA+PiB0eXBlbmFtZSBtYWtlX3Vuc2lnbmVkPFQ+Ojp0eXBlKFNoaWZ0KSk7CisrCQkJdmVjVHlwZTxMLCBULCBQPiBjb25zdCB5KHZlY1R5cGU8TCwgdHlwZW5hbWUgbWFrZV91bnNpZ25lZDxUPjo6dHlwZSwgUD4oLXgpID4+IHR5cGVuYW1lIG1ha2VfdW5zaWduZWQ8VD46OnR5cGUoU2hpZnQpKTsKKyAKKyAJCQlyZXR1cm4gKHggPj4gU2hpZnQpIHwgeTsKKyAJCX0KKy0tIAorMi4xLjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWRlbW9zLzAwMDEtU3VwcG9ydC1pbnN0YWxsaW5nLWRlbW9zLXN1cHBvcnQtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWRlbW9zLzAwMDEtU3VwcG9ydC1pbnN0YWxsaW5nLWRlbW9zLXN1cHBvcnQtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhZGRlYTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4tZGVtb3MvMDAwMS1TdXBwb3J0LWluc3RhbGxpbmctZGVtb3Mtc3VwcG9ydC1vdXQtb2YtdHJlZS1idWlsZHMucGF0Y2gKQEAgLTAsMCArMSw4NSBAQAorRnJvbSBlZGNhNjY3Njg0NzY0Y2ZjYzA0NjBlNDQ4ZTgzNGZhZGY2MjNhODg3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KK0RhdGU6IE1vbiwgMyBKdWwgMjAxNyAxNDo0OToxOCArMDMwMAorU3ViamVjdDogW1BBVENIXSBTdXBwb3J0IGluc3RhbGxpbmcgZGVtb3MsIHN1cHBvcnQgb3V0LW9mLXRyZWUgYnVpbGRzCisKK1RoaXMgaXMgZXNwZWNpYWxseSB1c2VmdWwgZm9yIGNyb3NzLWNvbXBpbGUgc2l0dWF0aW9uIHdoZXJlIHRlc3RpbmcKK2hhcHBlbnMgb24gdGFyZ2V0LgorCistRFJFU09VUkNFX0lOU1RBTExfRElSPTxwYXRoPiBkZWNpZGVzIHdoZXJlIGRhdGEgaXMgaW5zdGFsbGVkIChhbmQKK3doZXJlIHRoZSBiaW5hcmllcyB3aWxsIGxvYWQgdGhlIGRhdGEgZnJvbSk6IGlmIGl0J3MgbGVmdCBlbXB0eSwKK3RoZW4gbm90aGluZyB3aWxsIGJlIGluc3RhbGxlZCBhbmQgYmluYXJpZXMgd2lsbCBsb2FkIHRoZSBkYXRhIGZyb20KK0NNQUtFX1NPVVJDRV9ESVIuCisKK0JpbmFyaWVzIGFyZSBub3cgY29ycmVjdGx5IGJ1aWx0IGluIENNQUtFX0JJTkFSWV9ESVIuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vU2FzY2hhV2lsbGVtcy9WdWxrYW4vcHVsbC8zNTJdCitTaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorLS0tCisgQ01ha2VMaXN0cy50eHQgICAgICAgICAgICAgfCAxNSArKysrKysrKysrKysrKy0KKyBiYXNlL3Z1bGthbmV4YW1wbGViYXNlLmNwcCB8ICAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAoraW5kZXggYjk4ODZiYy4uNDk1OGZmZiAxMDA2NDQKKy0tLSBhL0NNYWtlTGlzdHMudHh0CisrKysgYi9DTWFrZUxpc3RzLnR4dAorQEAgLTE2LDYgKzE2LDggQEAgaW5jbHVkZV9kaXJlY3RvcmllcyhiYXNlKQorIE9QVElPTihVU0VfRDJEX1dTSSAiQnVpbGQgdGhlIHByb2plY3QgdXNpbmcgRGlyZWN0IHRvIERpc3BsYXkgc3dhcGNoYWluIiBPRkYpCisgT1BUSU9OKFVTRV9XQVlMQU5EX1dTSSAiQnVpbGQgdGhlIHByb2plY3QgdXNpbmcgV2F5bGFuZCBzd2FwY2hhaW4iIE9GRikKKyAKKytzZXQoUkVTT1VSQ0VfSU5TVEFMTF9ESVIgIiIgQ0FDSEUgUEFUSCAiUGF0aCB0byBpbnN0YWxsIHJlc291cmNlcyB0byAobGVhdmUgZW1wdHkgZm9yIHJ1bm5pbmcgdW5pbnN0YWxsZWQpIikKKysKKyAjIFVzZSBGaW5kVnVsa2FuIG1vZHVsZSBhZGRlZCB3aXRoIENNQUtFIDMuNworIGlmIChOT1QgQ01BS0VfVkVSU0lPTiBWRVJTSU9OX0xFU1MgMy43LjApCisgCW1lc3NhZ2UoU1RBVFVTICJVc2luZyBtb2R1bGUgdG8gZmluZCBWdWxrYW4iKQorQEAgLTEwOCw2ICsxMTAsMTAgQEAgZnVuY3Rpb24oYnVpbGRFeGFtcGxlIEVYQU1QTEVfTkFNRSkKKyAJCWFkZF9leGVjdXRhYmxlKCR7RVhBTVBMRV9OQU1FfSAke01BSU5fQ1BQfSAke1NPVVJDRX0gJHtTSEFERVJTfSkKKyAJCXRhcmdldF9saW5rX2xpYnJhcmllcygke0VYQU1QTEVfTkFNRX0gJHtWdWxrYW5fTElCUkFSWX0gJHtBU1NJTVBfTElCUkFSSUVTfSAke1dBWUxBTkRfQ0xJRU5UX0xJQlJBUklFU30gJHtDTUFLRV9USFJFQURfTElCU19JTklUfSkKKyAJZW5kaWYoV0lOMzIpCisrCisrCWlmKFJFU09VUkNFX0lOU1RBTExfRElSKQorKwkJaW5zdGFsbChUQVJHRVRTICR7RVhBTVBMRV9OQU1FfSBERVNUSU5BVElPTiAke0NNQUtFX0lOU1RBTExfQklORElSfSkKKysJZW5kaWYoKQorIGVuZGZ1bmN0aW9uKGJ1aWxkRXhhbXBsZSkKKyAKKyAjIEJ1aWxkIGFsbCBleGFtcGxlcworQEAgLTExNyw2ICsxMjMsMTMgQEAgZnVuY3Rpb24oYnVpbGRFeGFtcGxlcykKKyAJZW5kZm9yZWFjaChFWEFNUExFKQorIGVuZGZ1bmN0aW9uKGJ1aWxkRXhhbXBsZXMpCisgCisraWYoUkVTT1VSQ0VfSU5TVEFMTF9ESVIpCisrCWFkZF9kZWZpbml0aW9ucygtRFZLX0VYQU1QTEVfREFUQV9ESVI9XCIke1JFU09VUkNFX0lOU1RBTExfRElSfS9cIikKKysJaW5zdGFsbChESVJFQ1RPUlkgZGF0YS8gREVTVElOQVRJT04gJHtSRVNPVVJDRV9JTlNUQUxMX0RJUn0vKQorK2Vsc2UoKQorKwlhZGRfZGVmaW5pdGlvbnMoLURWS19FWEFNUExFX0RBVEFfRElSPVwiJHtDTUFLRV9TT1VSQ0VfRElSfS9kYXRhL1wiKQorK2VuZGlmKCkKKysKKyAjIENvbXBpbGVyIHNwZWNpZmljIHN0dWZmCisgSUYoTVNWQykKKyAJU0VUKENNQUtFX0NYWF9GTEFHUyAiJHtDTUFLRV9DWFhfRkxBR1N9IC9FSHNjIikKK0BAIC0xMjgsNyArMTQxLDcgQEAgRUxTRShXSU4zMikKKyAJbGlua19saWJyYXJpZXMoJHtYQ0JfTElCUkFSSUVTfSAke1Z1bGthbl9MSUJSQVJZfSkKKyBFTkRJRihXSU4zMikKKyAKKy1zZXQoQ01BS0VfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZICIke0NNQUtFX1NPVVJDRV9ESVJ9L2Jpbi8iKQorK3NldChDTUFLRV9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUlkgIiR7Q01BS0VfQklOQVJZX0RJUn0vYmluLyIpCisgCisgc2V0KEVYQU1QTEVTIAorIAlibG9vbQorZGlmZiAtLWdpdCBhL2Jhc2UvdnVsa2FuZXhhbXBsZWJhc2UuY3BwIGIvYmFzZS92dWxrYW5leGFtcGxlYmFzZS5jcHAKK2luZGV4IDY0NzM2OGEuLmEwZjI4YTUgMTAwNjQ0CistLS0gYS9iYXNlL3Z1bGthbmV4YW1wbGViYXNlLmNwcAorKysrIGIvYmFzZS92dWxrYW5leGFtcGxlYmFzZS5jcHAKK0BAIC04NCw3ICs4NCw3IEBAIGNvbnN0IHN0ZDo6c3RyaW5nIFZ1bGthbkV4YW1wbGVCYXNlOjpnZXRBc3NldFBhdGgoKQorICNpZiBkZWZpbmVkKF9fQU5EUk9JRF9fKQorIAlyZXR1cm4gIiI7CisgI2Vsc2UKKy0JcmV0dXJuICIuLy4uL2RhdGEvIjsKKysJcmV0dXJuIFZLX0VYQU1QTEVfREFUQV9ESVI7CisgI2VuZGlmCisgfQorICNlbmRpZgorLS0gCisyLjEzLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWRlbW9zX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1kZW1vc19naXQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGI4OTQzNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1kZW1vc19naXQuYmIKQEAgLTAsMCArMSw0MSBAQAorREVTQ1JJUFRJT04gPSAiQ29sbGVjdGlvbiBvZiBWdWxrYW4gZXhhbXBsZXMiCitMSUNFTlNFID0gIk1JVCIKK0RFUEVORFMgPSAiemxpYiIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5tZDttZDU9ZGNmNDczNzIzZmFhYmYxN2JhYTliNWYyMjA3NTk5ZDAgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdHJpYW5nbGUvdHJpYW5nbGUuY3BwO2VuZGxpbmU9MTI7bWQ1PWJjY2QxYmY5Y2FkZDllMTAwODZjZjc4NzIxNTdlNGZhIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vU2FzY2hhV2lsbGVtcy9WdWxrYW4uZ2l0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtU3VwcG9ydC1pbnN0YWxsaW5nLWRlbW9zLXN1cHBvcnQtb3V0LW9mLXRyZWUtYnVpbGRzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG9uLXQtYnVpbGQtZGVtb3Mtd2l0aC1xdWVzdGlvbmFibHktbGljZW5zZWQtZGF0YS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC1vbi14ODYucGF0Y2ggXAorIgorVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCitTUkNSRVYgPSAiMThkZjAwYzdiNDY3N2IwODg5NDg2ZTE2OTc3ODU3YWE5ODc5NDdlMiIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIlRoZXNlIGFyZSBub3QgdGhlIHJlbGVhc2VzIHlvdSdyZSBsb29raW5nIGZvciIKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICd2dWxrYW4nCisKK2luaGVyaXQgY21ha2UgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCitERVBFTkRTID0gInZ1bGthbiBhc3NpbXAiCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKyAgICAjIFJlbW92ZSBhc3NldHMgdGhhdCBoYXZlIHVuY2VydGFpbiBsaWNlbnNlcworICAgIHJtICR7RH0ke2RhdGFkaXJ9L3Z1bGthbi1kZW1vcy9tb2RlbHMvYXJtb3IvKiBcCisgICAgICAgJHtEfSR7ZGF0YWRpcn0vdnVsa2FuLWRlbW9zL21vZGVscy9zaWJlbmlrLyogXAorICAgICAgICR7RH0ke2RhdGFkaXJ9L3Z1bGthbi1kZW1vcy9tb2RlbHMvdnVsa2Fuc2NlbmUqIFwKKyAgICAgICAke0R9JHtkYXRhZGlyfS92dWxrYW4tZGVtb3MvbW9kZWxzL3BsYW50cy5kYWUgXAorICAgICAgICR7RH0ke2RhdGFkaXJ9L3Z1bGthbi1kZW1vcy90ZXh0dXJlcy90ZXh0dXJlYXJyYXlfcGxhbnRzKgorCisgICAgbXYgJHtEfSR7YmluZGlyfS9zY3JlZW5zaG90ICR7RH0ke2JpbmRpcn0vdnVsa2FuLXNjcmVlbnNob3QKK30KKworRVhUUkFfT0VDTUFLRSA9ICItRFJFU09VUkNFX0lOU1RBTExfRElSPSR7ZGF0YWRpcn0vdnVsa2FuLWRlbW9zIgorCitBTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIngxMSB3YXlsYW5kIgorCisjIENhbiBvbmx5IHBpY2sgb25lIG9mIFt3YXlsYW5kLHhjYl0KK1BBQ0tBR0VDT05GSUcgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kJywgJ3dheWxhbmQnLCAneGNiJyAsZCl9IgorUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItRFVTRV9XQVlMQU5EX1dTST1PTiwgLURVU0VfV0FZTEFORF9XU0k9T0ZGLCB3YXlsYW5kIgorUEFDS0FHRUNPTkZJR1t4Y2JdID0gIiwsbGlieGNiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLzAwMDEtVXNlLWdldGVudi1pZi1zZWN1cmVfZ2V0ZW52LWRvZXMtbm90LWV4aXN0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLzAwMDEtVXNlLWdldGVudi1pZi1zZWN1cmVfZ2V0ZW52LWRvZXMtbm90LWV4aXN0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OTQ5MjJjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi8wMDAxLVVzZS1nZXRlbnYtaWYtc2VjdXJlX2dldGVudi1kb2VzLW5vdC1leGlzdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLUZyb20gMjA1MjVhZGQxZGY4ZTFmYjEzZmVmOTBhYzA2OGY5ODJkZWY4Yjk1OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1EYXRlOiBXZWQsIDggTWFyIDIwMTcgMTM6MjM6NTggKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gVXNlIGdldGVudigpIGlmIHNlY3VyZV9nZXRlbnYoKSBkb2VzIG5vdCBleGlzdAotCi1tdXNsIGRvZXMgbm90IGltcGxlbWVudCBzZWN1cmUgdmVyc2lvbjogZGVmYXVsdCB0byBnZXRlbnYoKSBpbiB0aGF0Ci1jYXNlLgotCi1odHRwczovL2dpdGh1Yi5jb20vS2hyb25vc0dyb3VwL1Z1bGthbi1Mb2FkZXJBbmRWYWxpZGF0aW9uTGF5ZXJzL2lzc3Vlcy8xNTM4Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLS0tLQotIGxvYWRlci9sb2FkZXIuYyB8IDQgKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2xvYWRlci9sb2FkZXIuYyBiL2xvYWRlci9sb2FkZXIuYwotaW5kZXggMjQ3NThmNC4uYmZmNzljMSAxMDA2NDQKLS0tLSBhL2xvYWRlci9sb2FkZXIuYwotKysrIGIvbG9hZGVyL2xvYWRlci5jCi1AQCAtNTQsNiArNTQsMTAgQEAKLSAjZW5kaWYKLSAjZW5kaWYKLSAKLSsjaWYgIWRlZmluZWQoX19zZWN1cmVfZ2V0ZW52KQotKyNkZWZpbmUgX19zZWN1cmVfZ2V0ZW52IGdldGVudgotKyNlbmRpZgotKwotIHN0cnVjdCBsb2FkZXJfc3RydWN0IGxvYWRlciA9IHswfTsKLSAvLyBUTFMgZm9yIGluc3RhbmNlIGZvciBhbGxvYy9mcmVlIGNhbGxiYWNrcwotIFRIUkVBRF9MT0NBTF9ERUNMIHN0cnVjdCBsb2FkZXJfaW5zdGFuY2UgKnRsc19pbnN0YW5jZTsKLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuXzEuMC4zOS4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuXzEuMC4zOS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NWQxYzQ5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbl8xLjAuMzkuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLVNVTU1BUlkgPSAiM0QgZ3JhcGhpY3MgYW5kIGNvbXB1dGUgQVBJIGNvbW1vbiBsb2FkZXIiCi1ERVNDUklQVElPTiA9ICJWdWxrYW4gaXMgYSBuZXcgZ2VuZXJhdGlvbiBncmFwaGljcyBhbmQgY29tcHV0ZSBBUEkgXAotdGhhdCBwcm92aWRlcyBlZmZpY2llbnQgYWNjZXNzIHRvIG1vZGVybiBHUFVzLiBUaGVzZSBwYWNrYWdlcyBcCi1wcm92aWRlIG9ubHkgdGhlIGNvbW1vbiB2ZW5kb3ItYWdub3N0aWMgbGlicmFyeSBsb2FkZXIsIGhlYWRlcnMgYW5kIFwKLXRoZSB2dWxrYW5pbmZvIHV0aWxpdHkuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cua2hyb25vcy5vcmcvdnVsa2FuLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL0tocm9ub3NHcm91cC9WdWxrYW4tTG9hZGVyQW5kVmFsaWRhdGlvbkxheWVycyIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTk5YzY0N2NhM2Q0ZjZhNGI5ZDg2MjhmNzU3YWFkMTU2IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xvYWRlci9sb2FkZXIuYztlbmRsaW5lPTI1O21kNT1hODdjZDU0NDIyOTFjMjNkMWZjZTRlZWNlNGNmZGU5ZCIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvVnVsa2FuLUxvYWRlckFuZFZhbGlkYXRpb25MYXllcnMuZ2l0O2JyYW5jaD1zZGstMS4wLjM5IFwKLSAgICAgICAgICAgZmlsZTovL2RlbW9zLURvbi10LWJ1aWxkLXRyaS1vci1jdWJlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLWdldGVudi1pZi1zZWN1cmVfZ2V0ZW52LWRvZXMtbm90LWV4aXN0LnBhdGNoIFwKLSIKLVNSQ1JFViA9ICI5YzIxZWQwZmIyNzU1ODljM2FmNjExOGFlYzllZjRmMWQxNTQ0ZGMxIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi0KLWluaGVyaXQgY21ha2UgcHl0aG9uM25hdGl2ZSBsaWJfcGFja2FnZSBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLUFOWV9PRl9ESVNUUk9fRkVBVFVSRVMgPSAieDExIHdheWxhbmQiCi0KLUVYVFJBX09FQ01BS0UgPSAiLURCVUlMRF9XU0lfTUlSX1NVUFBPUlQ9T0ZGIFwKLSAgICAgICAgICAgICAgICAgLURCVUlMRF9MQVlFUlM9T0ZGIFwKLSAgICAgICAgICAgICAgICAgLURCVUlMRF9URVNUUz1PRkYiCi0KLSMgbXVzdCBjaG9vc2UgeDExIG9yIHdheWxhbmQgb3IgYm90aAotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3gxMScsICcnICxkKX0gXAotICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCcsICd3YXlsYW5kJywgJycgLGQpfSIKLVBBQ0tBR0VDT05GSUdbeDExXSA9ICItREJVSUxEX1dTSV9YTElCX1NVUFBPUlQ9T04gLURCVUlMRF9XU0lfWENCX1NVUFBPUlQ9T04gLURERU1PU19XU0lfU0VMRUNUSU9OPVhDQiwgLURCVUlMRF9XU0lfWExJQl9TVVBQT1JUPU9GRiAtREJVSUxEX1dTSV9YQ0JfU1VQUE9SVD1PRkYgLURERU1PU19XU0lfU0VMRUNUSU9OPVdBWUxBTkQsIGxpYnhjYiBsaWJ4MTEgbGlieHJhbmRyIgotUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItREJVSUxEX1dTSV9XQVlMQU5EX1NVUFBPUlQ9T04sIC1EQlVJTERfV1NJX1dBWUxBTkRfU1VQUE9SVD1PRkYsIHdheWxhbmQiCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbl8xLjAuNTEuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbl8xLjAuNTEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZGUzOWJjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuXzEuMC41MS4wLmJiCkBAIC0wLDAgKzEsMzYgQEAKK1NVTU1BUlkgPSAiM0QgZ3JhcGhpY3MgYW5kIGNvbXB1dGUgQVBJIGNvbW1vbiBsb2FkZXIiCitERVNDUklQVElPTiA9ICJWdWxrYW4gaXMgYSBuZXcgZ2VuZXJhdGlvbiBncmFwaGljcyBhbmQgY29tcHV0ZSBBUEkgXAordGhhdCBwcm92aWRlcyBlZmZpY2llbnQgYWNjZXNzIHRvIG1vZGVybiBHUFVzLiBUaGVzZSBwYWNrYWdlcyBcCitwcm92aWRlIG9ubHkgdGhlIGNvbW1vbiB2ZW5kb3ItYWdub3N0aWMgbGlicmFyeSBsb2FkZXIsIGhlYWRlcnMgYW5kIFwKK3RoZSB2dWxrYW5pbmZvIHV0aWxpdHkuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cua2hyb25vcy5vcmcvdnVsa2FuLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL0tocm9ub3NHcm91cC9WdWxrYW4tTG9hZGVyQW5kVmFsaWRhdGlvbkxheWVycyIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTk5YzY0N2NhM2Q0ZjZhNGI5ZDg2MjhmNzU3YWFkMTU2IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xvYWRlci9sb2FkZXIuYztlbmRsaW5lPTI1O21kNT1hODdjZDU0NDIyOTFjMjNkMWZjZTRlZWNlNGNmZGU5ZCIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvVnVsa2FuLUxvYWRlckFuZFZhbGlkYXRpb25MYXllcnMuZ2l0O2JyYW5jaD1zZGstMS4wLjUxIFwKKyAgICAgICAgICAgZmlsZTovL2RlbW9zLURvbi10LWJ1aWxkLXRyaS1vci1jdWJlLnBhdGNoIFwKKyIKK1NSQ1JFViA9ICI4ZDAyMWU0ZDVhOWY5MTQzNmY0NDYyZGYxZGFmYjIyMjkwOGUyOTZkIgorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAic2RrLSg/UDxwdmVyPlxkKyhcLlxkKykrKSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInZ1bGthbiIKKworaW5oZXJpdCBjbWFrZSBweXRob24zbmF0aXZlIGxpYl9wYWNrYWdlIGRpc3Ryb19mZWF0dXJlc19jaGVjaworQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEgd2F5bGFuZCIKKworRVhUUkFfT0VDTUFLRSA9ICItREJVSUxEX1dTSV9NSVJfU1VQUE9SVD1PRkYgXAorICAgICAgICAgICAgICAgICAtREJVSUxEX0xBWUVSUz1PRkYgXAorICAgICAgICAgICAgICAgICAtREJVSUxEX1RFU1RTPU9GRiIKKworIyBtdXN0IGNob29zZSB4MTEgb3Igd2F5bGFuZCBvciBib3RoCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneDExJywgJycgLGQpfSBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kJywgJ3dheWxhbmQnLCAnJyAsZCl9IgorUEFDS0FHRUNPTkZJR1t4MTFdID0gIi1EQlVJTERfV1NJX1hMSUJfU1VQUE9SVD1PTiAtREJVSUxEX1dTSV9YQ0JfU1VQUE9SVD1PTiAtRERFTU9TX1dTSV9TRUxFQ1RJT049WENCLCAtREJVSUxEX1dTSV9YTElCX1NVUFBPUlQ9T0ZGIC1EQlVJTERfV1NJX1hDQl9TVVBQT1JUPU9GRiAtRERFTU9TX1dTSV9TRUxFQ1RJT049V0FZTEFORCwgbGlieGNiIGxpYngxMSBsaWJ4cmFuZHIiCitQQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIi1EQlVJTERfV1NJX1dBWUxBTkRfU1VQUE9SVD1PTiwgLURCVUlMRF9XU0lfV0FZTEFORF9TVVBQT1JUPU9GRiwgd2F5bGFuZCIKKworUlJFQ09NTUVORFNfJHtQTn0gPSAibWVzYS12dWxrYW4tZHJpdmVycyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9saWJpbnB1dC8wMDAxLXRvb2xzLUZpeC1yYWNlLWluLWF1dG90b29scy1pbnN0YWxsLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL2xpYmlucHV0LzAwMDEtdG9vbHMtRml4LXJhY2UtaW4tYXV0b3Rvb2xzLWluc3RhbGwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDY2NzUzOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9saWJpbnB1dC8wMDAxLXRvb2xzLUZpeC1yYWNlLWluLWF1dG90b29scy1pbnN0YWxsLnBhdGNoCkBAIC0wLDAgKzEsMzcgQEAKK0Zyb20gNWU4ODY0YzViN2EyZTI1OGVlYTA0MWIwZWY2NmRhYzdmY2FiOWI3ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CitEYXRlOiBXZWQsIDkgQXVnIDIwMTcgMDk6NDc6MTQgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gdG9vbHM6IEZpeCByYWNlIGluIChhdXRvdG9vbHMpIGluc3RhbGwKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworZXhlYy9kYXRhIGRpc3RpbmN0aW9uIGlzIGRvbmUgYmFzZWQgb24gaW5zdGFsbCBkaXIgc28gY29tcGF0IHNjcmlwdHMKK211c3QgYmUgbW92ZWQgaW4gZXhlYyBob29rLgorCitUaGlzIHNob3VsZCBmaXggdGhpcyBvY2Nhc2lvbmFsIGZhaWx1cmU6Cit8wqBpbnN0YWxsOiBjYW5ub3QgY2hhbmdlIHBlcm1pc3Npb25zIG9mCit8wqDigJgvdXNyL2Jpbi9saWJpbnB1dC1kZWJ1Zy1ldmVudHMuY29tcGF04oCZOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5CisKK1NpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorLS0tCisgdG9vbHMvTWFrZWZpbGUuYW0gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS90b29scy9NYWtlZmlsZS5hbSBiL3Rvb2xzL01ha2VmaWxlLmFtCitpbmRleCAyYzg2NjBiLi43ZWU4YjkwIDEwMDY0NAorLS0tIGEvdG9vbHMvTWFrZWZpbGUuYW0KKysrKyBiL3Rvb2xzL01ha2VmaWxlLmFtCitAQCAtNjMsNyArNjMsNyBAQCBlbmRpZgorIAorIEVYVFJBX0RJU1QgPSBtYWtlLXB0cmFjY2VsLWdyYXBocy5zaCBpbnN0YWxsLWNvbXBhdC1zY3JpcHRzLnNoICQoYmluX1NDUklQVFMpCisgCistaW5zdGFsbC1kYXRhLWhvb2s6CisraW5zdGFsbC1leGVjLWhvb2s6CisgCShjZCAkKERFU1RESVIpJChiaW5kaXIpICYmIG12IGxpYmlucHV0LWxpc3QtZGV2aWNlcy5jb21wYXQgbGliaW5wdXQtbGlzdC1kZXZpY2VzKQorIAkoY2QgJChERVNURElSKSQoYmluZGlyKSAmJiBtdiBsaWJpbnB1dC1kZWJ1Zy1ldmVudHMuY29tcGF0IGxpYmlucHV0LWRlYnVnLWV2ZW50cykKKyAKKy0tIAorMi4xMy4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9saWJpbnB1dC90b3VjaHBhZC1zZXJpYWwtc3luYXB0aWNzLW5lZWQtdG8tZmFrZS1uZXctdG91Y2hlcy1vbi1UUklQTEVUQVAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbGliaW5wdXQvdG91Y2hwYWQtc2VyaWFsLXN5bmFwdGljcy1uZWVkLXRvLWZha2UtbmV3LXRvdWNoZXMtb24tVFJJUExFVEFQLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNTJiNDk2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9saWJpbnB1dC90b3VjaHBhZC1zZXJpYWwtc3luYXB0aWNzLW5lZWQtdG8tZmFrZS1uZXctdG91Y2hlcy1vbi1UUklQTEVUQVAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi1UaGlzIGlzIGEgd29ya2Fyb3VuZCB1cHN0cmVhbSBzdWdnZXN0cyBmb3IgdXNlIHdpdGgga2VybmVsIDQuMS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFt0ZW1wb3Jhcnkgd29yay1hcm91bmRdCi1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotCi0KLQotRnJvbTogUGV0ZXIgSHV0dGVyZXIgPHBldGVyLmh1dHRlcmVyQHdoby10Lm5ldD4KLURhdGU6IE1vbiBBdWcgMyAxODoyMzoxMiBQRFQgMjAxNQotU3ViamVjdDogW1BBVENIIHYzIGxpYmlucHV0XSB0b3VjaHBhZDogc2VyaWFsIHN5bmFwdGljcyBuZWVkIHRvIGZha2UgbmV3IHRvdWNoZXMgb24gVFJJUExFVEFQCi0KLU9uIHRoZSA0LjEga2VybmVscyBzeW5hcHRpY3MgcHJldGVuZHMgdG8gaGF2ZSAzIHNsb3RzICh0aGUgc2VyaWFsIGZ3IG9ubHkgZG9lcwotMikuIFRoaXMgd2FzIGFkZGVkIHRvIGF2b2lkIGN1cnNvciBqdW1wcyBidXQgaGFzIHNpbmNlIGJlZW4gcmV2ZXJ0ZWQgZm9yIDQuMgotKGtlcm5lbCBjb21taXQgZGJmM2MzNzA4NiwgNC4xLjMgaXMgc3RpbGwgYnVnZ3kpLiBJbiBzb21lIGNhc2VzIGEgVFJJUExFVEFQCi1tYXkgYmUgdHJpZ2dlcmVkIHdpdGhvdXQgc2xvdCAyIGV2ZXIgYWN0aXZhdGluZy4KLQotV2hpbGUgdGhlcmUgYXJlIHN0aWxsIHRob3NlIGtlcm5lbHMgb3V0IHRoZXJlLCB3b3JrIGFyb3VuZCB0aGlzIGJ1ZyBieSBvcGVuaW5nCi1hIG5ldyB0b3VjaCBwb2ludCB3aGVyZSBub25lIGV4aXN0cyBpZiB0aGUgZmFrZSBmaW5nZXIgY291bnQgZXhjZWVkcyB0aGUgc2xvdAotY291bnQuCi0KLVJlcG9ydGVkLWJ5OiBKYW4gQWxleGFuZGVyIFN0ZWZmZW5zIDxqYW4uc3RlZmZlbnMgYXQgZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogUGV0ZXIgSHV0dGVyZXIgPHBldGVyLmh1dHRlcmVyIGF0IHdoby10Lm5ldD4KLVRlc3RlZC1ieTogSmFuIEFsZXhhbmRlciBTdGVmZmVucyA8amFuLnN0ZWZmZW5zIGF0IGdtYWlsLmNvbT4KLVJldmlld2VkLWJ5OiBIYW5zIGRlIEdvZWRlIDxoZGVnb2VkZSBhdCByZWRoYXQuY29tPgotLS0tCi1DaGFuZ2VzIHRvIHYyOgotLSBzcGxpdCBvdXQgdGhlIGhhbmRsaW5nIGluc3RlYWQgb2YgaGF2aW5nIGEgdG1wIHN0YXRlIHZhcmlhYmxlLCBzZWUgSGFucycKLSAgY29tbWVudHMgZnJvbSB2MgotCi1NYWlubHkgc2VuZGluZyB0aGlzIHRvIHRoZSBsaXN0IGFnYWluIHNvIEkgaGF2ZSBhIGxpbmsgdG8gcG9pbnQgcGVvcGxlIHRvLgotSWYgeW91J3JlIG9uIDQuMS54IGFkZCB0aGlzIHBhdGNoIHRvIHlvdXIgZGlzdHJpYnV0aW9uIHBhY2thZ2UuCi0KLSBzcmMvZXZkZXYtbXQtdG91Y2hwYWQuYyB8IDIyICsrKysrKysrKysrKysrKystLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTYgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9ldmRldi1tdC10b3VjaHBhZC5jIGIvc3JjL2V2ZGV2LW10LXRvdWNocGFkLmMKLWluZGV4IGE2ODNkOWEuLjVlZjAzZDUgMTAwNjQ0Ci0tLS0gYS9zcmMvZXZkZXYtbXQtdG91Y2hwYWQuYwotKysrIGIvc3JjL2V2ZGV2LW10LXRvdWNocGFkLmMKLUBAIC0zNjksMTMgKzM2OSwyMyBAQCB0cF9yZXN0b3JlX3N5bmFwdGljc190b3VjaGVzKHN0cnVjdCB0cF9kaXNwYXRjaCAqdHAsCi0gCWZvciAoaSA9IDA7IGkgPCB0cC0+bnVtX3Nsb3RzOyBpKyspIHsKLSAJCXN0cnVjdCB0cF90b3VjaCAqdCA9IHRwX2dldF90b3VjaCh0cCwgaSk7Ci0gCi0tCQlpZiAodC0+c3RhdGUgIT0gVE9VQ0hfRU5EKQotKwkJc3dpdGNoKHQtPnN0YXRlKSB7Ci0rCQljYXNlIFRPVUNIX0hPVkVSSU5HOgotKwkJY2FzZSBUT1VDSF9CRUdJTjoKLSsJCWNhc2UgVE9VQ0hfVVBEQVRFOgotIAkJCWNvbnRpbnVlOwotLQotLQkJLyogbmV3IHRvdWNoLCBtb3ZlIGl0IHRocm91Z2ggYmVnaW4gdG8gdXBkYXRlIGltbWVkaWF0ZWx5ICovCi0tCQl0cF9uZXdfdG91Y2godHAsIHQsIHRpbWUpOwotLQkJdHBfYmVnaW5fdG91Y2godHAsIHQsIHRpbWUpOwotLQkJdC0+c3RhdGUgPSBUT1VDSF9VUERBVEU7Ci0rCQljYXNlIFRPVUNIX05PTkU6Ci0rCQkJLyogbmV3IHRvdWNoLCBtb3ZlIGl0IHRocm91Z2ggdG8gYmVnaW4gaW1tZWRpYXRlbHkgKi8KLSsJCQl0cF9uZXdfdG91Y2godHAsIHQsIHRpbWUpOwotKwkJCXRwX2JlZ2luX3RvdWNoKHRwLCB0LCB0aW1lKTsKLSsJCQlicmVhazsKLSsJCWNhc2UgVE9VQ0hfRU5EOgotKwkJCS8qIHRvdWNoIGp1c3QgZW5kZWQgLHdlIG5lZWQgbmVlZCB0byByZXN0b3JlIGl0IHRvIHVwZGF0ZSAqLwotKwkJCXRwX25ld190b3VjaCh0cCwgdCwgdGltZSk7Ci0rCQkJdHBfYmVnaW5fdG91Y2godHAsIHQsIHRpbWUpOwotKwkJCXQtPnN0YXRlID0gVE9VQ0hfVVBEQVRFOwotKwkJCWJyZWFrOwotKwkJfQotIAl9Ci0gfQotIAotLS0gCi0yLjQuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbGliaW5wdXRfMS42LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbGliaW5wdXRfMS42LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4NzE0ZjIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL2xpYmlucHV0XzEuNi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotU1VNTUFSWSA9ICJMaWJyYXJ5IHRvIGhhbmRsZSBpbnB1dCBkZXZpY2VzIGluIFdheWxhbmQgY29tcG9zaXRvcnMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL2xpYmlucHV0LyIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yMTg0YWVmMzhmZjEzN2VkMzNjZTlhNjNiOWQxZWI4ZiIKLQotREVQRU5EUyA9ICJsaWJldmRldiB1ZGV2IG10ZGV2IgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlLyR7QlBOfS8ke0JQfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vdG91Y2hwYWQtc2VyaWFsLXN5bmFwdGljcy1uZWVkLXRvLWZha2UtbmV3LXRvdWNoZXMtb24tVFJJUExFVEFQLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICI3ZTI4MjM0NGY4ZWQ3ZWM1Y2Y4N2NhOWZjMjI2NzRmYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5ZDgxNmYxM2VlZTYzYmNjYTBlOWMzYmI2NTJjNTJhYjU1ZjM5YmU0ZDFiOTBiNTRlNGJmZDFkYzkyZWY1NWE4IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbbGlidW53aW5kXSA9ICItLXdpdGgtbGlidW53aW5kLC0td2l0aG91dC1saWJ1bndpbmQsbGlidW53aW5kIgotUEFDS0FHRUNPTkZJR1tsaWJ3YWNvbV0gPSAiLS1lbmFibGUtbGlid2Fjb20sLS1kaXNhYmxlLWxpYndhY29tLGxpYndhY29tIgotUEFDS0FHRUNPTkZJR1tndWldID0gIi0tZW5hYmxlLWV2ZW50LWd1aSwtLWRpc2FibGUtZXZlbnQtZ3VpLGNhaXJvIGd0ayszIgotCi1VREVWRElSID0gImBwa2ctY29uZmlnIC0tdmFyaWFibGU9dWRldmRpciB1ZGV2YCIKLQotRVhUUkFfT0VDT05GICs9ICItLXdpdGgtdWRldi1kaXI9JHtVREVWRElSfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9saWJpbnB1dF8xLjguMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9saWJpbnB1dF8xLjguMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjFiYWJlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL2xpYmlucHV0XzEuOC4xLmJiCkBAIC0wLDAgKzEsMzEgQEAKK1NVTU1BUlkgPSAiTGlicmFyeSB0byBoYW5kbGUgaW5wdXQgZGV2aWNlcyBpbiBXYXlsYW5kIGNvbXBvc2l0b3JzIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9saWJpbnB1dC8iCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MjE4NGFlZjM4ZmYxMzdlZDMzY2U5YTYzYjlkMWViOGYiCisKK0RFUEVORFMgPSAibGliZXZkZXYgdWRldiBtdGRldiIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZS8ke0JQTn0vJHtCUH0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdG9vbHMtRml4LXJhY2UtaW4tYXV0b3Rvb2xzLWluc3RhbGwucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiODI0N2YwYmI2NzA1MmZmYjI3MmM1MGMzY2I5YzU5OTgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTM1OTBhOTAzN2U1NjFhNTc5MWM4YmQzYjM0YmZkMzBmYWQ1Y2FjZDhjYmVmYzBkNzVmYWZlM2E0MWQwNzE0NyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGxpYl9wYWNrYWdlCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW2xpYnVud2luZF0gPSAiLS13aXRoLWxpYnVud2luZCwtLXdpdGhvdXQtbGlidW53aW5kLGxpYnVud2luZCIKK1BBQ0tBR0VDT05GSUdbbGlid2Fjb21dID0gIi0tZW5hYmxlLWxpYndhY29tLC0tZGlzYWJsZS1saWJ3YWNvbSxsaWJ3YWNvbSIKK1BBQ0tBR0VDT05GSUdbZ3VpXSA9ICItLWVuYWJsZS1kZWJ1Zy1ndWksLS1kaXNhYmxlLWRlYnVnLWd1aSxjYWlybyBndGsrMyIKKworVURFVkRJUiA9ICJgcGtnLWNvbmZpZyAtLXZhcmlhYmxlPXVkZXZkaXIgdWRldmAiCisKK0VYVFJBX09FQ09ORiArPSAiLS13aXRoLXVkZXYtZGlyPSR7VURFVkRJUn0gLS1kaXNhYmxlLWRvY3VtZW50YXRpb24gLS1kaXNhYmxlLXRlc3RzIgorCisjIHBhY2thZ2UgbmFtZSBjaGFuZ2VkIGluIDEuOC4xIHVwZ3JhZGU6IG1ha2Ugc3VyZSBwYWNrYWdlIHVwZ3JhZGVzIHdvcmsKK1JQUk9WSURFU18ke1BOfSA9ICJsaWJpbnB1dCIKK1JSRVBMQUNFU18ke1BOfSA9ICJsaWJpbnB1dCIKK1JDT05GTElDVFNfJHtQTn0gPSAibGliaW5wdXQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC1wcm90b2NvbHNfMS4xMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kLXByb3RvY29sc18xLjEwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmOWU5ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC1wcm90b2NvbHNfMS4xMC5iYgpAQCAtMCwwICsxLDIwIEBACitTVU1NQVJZID0gIkNvbGxlY3Rpb24gb2YgYWRkaXRpb25hbCBXYXlsYW5kIHByb3RvY29scyIKK0RFU0NSSVBUSU9OID0gIldheWxhbmQgcHJvdG9jb2xzIHRoYXQgYWRkIGZ1bmN0aW9uYWxpdHkgbm90IFwKK2F2YWlsYWJsZSBpbiB0aGUgV2F5bGFuZCBjb3JlIHByb3RvY29sLiBTdWNoIHByb3RvY29scyBlaXRoZXIgYWRkIFwKK2NvbXBsZXRlbHkgbmV3IGZ1bmN0aW9uYWxpdHksIG9yIGV4dGVuZCB0aGUgZnVuY3Rpb25hbGl0eSBvZiBzb21lIG90aGVyIFwKK3Byb3RvY29sIGVpdGhlciBpbiBXYXlsYW5kIGNvcmUsIG9yIHNvbWUgb3RoZXIgcHJvdG9jb2wgaW4gXAord2F5bGFuZC1wcm90b2NvbHMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jN2IxMmI2NzAyZGEzOGNhMDI4YWNlNTRhYWUzZDQ4NCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zdGFibGUvcHJlc2VudGF0aW9uLXRpbWUvcHJlc2VudGF0aW9uLXRpbWUueG1sO2VuZGxpbmU9MjY7bWQ1PTQ2NDZjZDdkOWVkYzlmYTU1ZGI5NDFmMmQzYTdkYzUzIgorCitTUkNfVVJJID0gImh0dHBzOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI4NGE3ODQ2YzJiNmE2YTNlMjY1ZmM5YmUzNjQ1M2U2MCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1NzE5YzUxZDczNTQ4NjQ5ODMxNzFjNTA4M2U5M2E3MmFjOTkyMjllMmI0NjBjNGJiMTA1MTNkZTA4ODM5YzBhIgorCitpbmhlcml0IGFsbGFyY2ggYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitQQUNLQUdFUyA9ICIke1BOfSIKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3BrZ2NvbmZpZy93YXlsYW5kLXByb3RvY29scy5wYyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kLXByb3RvY29sc18xLjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC1wcm90b2NvbHNfMS43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZDJmMGRiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kLXByb3RvY29sc18xLjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1TVU1NQVJZID0gIkNvbGxlY3Rpb24gb2YgYWRkaXRpb25hbCBXYXlsYW5kIHByb3RvY29scyIKLURFU0NSSVBUSU9OID0gIldheWxhbmQgcHJvdG9jb2xzIHRoYXQgYWRkIGZ1bmN0aW9uYWxpdHkgbm90IFwKLWF2YWlsYWJsZSBpbiB0aGUgV2F5bGFuZCBjb3JlIHByb3RvY29sLiBTdWNoIHByb3RvY29scyBlaXRoZXIgYWRkIFwKLWNvbXBsZXRlbHkgbmV3IGZ1bmN0aW9uYWxpdHksIG9yIGV4dGVuZCB0aGUgZnVuY3Rpb25hbGl0eSBvZiBzb21lIG90aGVyIFwKLXByb3RvY29sIGVpdGhlciBpbiBXYXlsYW5kIGNvcmUsIG9yIHNvbWUgb3RoZXIgcHJvdG9jb2wgaW4gXAotd2F5bGFuZC1wcm90b2NvbHMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jN2IxMmI2NzAyZGEzOGNhMDI4YWNlNTRhYWUzZDQ4NCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zdGFibGUvcHJlc2VudGF0aW9uLXRpbWUvcHJlc2VudGF0aW9uLXRpbWUueG1sO2VuZGxpbmU9MjY7bWQ1PTQ2NDZjZDdkOWVkYzlmYTU1ZGI5NDFmMmQzYTdkYzUzIgotCi1TUkNfVVJJID0gImh0dHBzOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI5YWNmYzk1NTZmN2NmZWRjNDRkOTdhZjYwZGE2NmE1ZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2MzVmMmE5MzdkMzE4ZjFmZWNiOTdiNTQwNzRjYTIxMTQ4NmUzOGFmOTQzODY4ZGQwZmE4MmVhMzhkMDkxYzFmIgotCi1pbmhlcml0IGFsbGFyY2ggYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1QQUNLQUdFUyA9ICIke1BOfSIKLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3BrZ2NvbmZpZy93YXlsYW5kLXByb3RvY29scy5wYyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24vd2VzdG9uLWdsLXJlbmRlcmVyLVNldC1waXRjaC1jb3JyZWN0bHktZm9yLXN1YnNhbXBsZWQtdGV4dHVyZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uL3dlc3Rvbi1nbC1yZW5kZXJlci1TZXQtcGl0Y2gtY29ycmVjdGx5LWZvci1zdWJzYW1wbGVkLXRleHR1cmVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMTg4MDE4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24vd2VzdG9uLWdsLXJlbmRlcmVyLVNldC1waXRjaC1jb3JyZWN0bHktZm9yLXN1YnNhbXBsZWQtdGV4dHVyZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi1NdWx0aS1wbGFuZSBzdWItc2FtcGxlZCB0ZXh0dXJlcyBoYXZlIHBhcnRpYWwgd2lkdGgvaGVpZ2h0LCBlLmcuCi1ZVVY0MjAvSTQyMCBoYXMgYSBmdWxsLXNpemUgWSBwbGFuZSwgZm9sbG93ZWQgYnkgYSBoYWxmLXdpZHRoL2hlaWdodCBVCi1wbGFuZSwgYW5kIGEgaGFsZi13aWR0aC9oZWlnaHQgViBwbGFuZS4KLQotendwX2xpbnV4X2RtYWJ1Zl92MSBhbGxvd3MgY2xpZW50cyB0byBwYXNzIGFuIGV4cGxpY2l0IHBpdGNoIGZvciBlYWNoCi1wbGFuZSwgYnV0IGZvciB3bF9zaG0gdGhpcyBtdXN0IGJlIGluZmVycmVkLiBnbC1yZW5kZXJlciB3YXMgY29ycmVjdGx5Ci1hY2NvdW50aW5nIGZvciB0aGUgd2lkdGggYW5kIGhlaWdodCB3aGVuIHN1YnNhbXBsaW5nLCBidXQgdGhlIHBpdGNoIHdhcwotYmVpbmcgdGFrZW4gYXMgdGhlIHBpdGNoIGZvciB0aGUgZmlyc3QgcGxhbmUuCi0KLVRoaXMgZG9lcyBub3QgbWF0Y2ggdGhlIHJlcXVpcmVtZW50cyBmb3IgR1N0cmVhbWVyJ3Mgd2F5bGFuZHNpbmssIGluCi1wYXJ0aWN1bGFyLCBhcyB3ZWxsIGFzIG90aGVyIGNsaWVudHMuIEZpeCB0aGUgU0hNIHVwbG9hZCBwYXRoIHRvCi1jb3JyZWN0bHkgc2V0IHRoZSBwaXRjaCBmb3IgZWFjaCBwbGFuZSwgYWNjb3JkaW5nIHRvIHN1YnNhbXBsaW5nLgotCi1UZXN0ZWQgd2l0aDoKLSAgJCBnc3QtbGF1bmNoLTEuMCB2aWRlb3Rlc3RzcmMgISB3YXlsYW5kc2luawotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL3BhdGNod29yay5mcmVlZGVza3RvcC5vcmcvcGF0Y2gvMTgwNzY3L10KLQotU2lnbmVkLW9mZi1ieTogRGFuaWVsIFN0b25lIDxkYW5pZWxzQGNvbGxhYm9yYS5jb20+Ci1GaXhlczogZmRlZWZlNDI0MTggKCJnbC1yZW5kZXJlcjogYWRkIHN1cHBvcnQgb2YgV0xfU0hNX0ZPUk1BVF9ZVVY0MjAiKQotUmVwb3J0ZWQtYnk6IEZhYmllbiBMYWhvdWRlcmUgPGZhYmllbi5sYWhvdWRlcmVAY29sbGFib3JhLmNvLnVrPgotQnVnemlsbGE6IGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzA2MwotCi0tLS0KLSBsaWJ3ZXN0b24vZ2wtcmVuZGVyZXIuYyB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJ3ZXN0b24vZ2wtcmVuZGVyZXIuYyBiL2xpYndlc3Rvbi9nbC1yZW5kZXJlci5jCi1pbmRleCAyNDRjZTMwOS4uNDBiZjBiYjYgMTAwNjQ0Ci0tLS0gYS9saWJ3ZXN0b24vZ2wtcmVuZGVyZXIuYwotKysrIGIvbGlid2VzdG9uL2dsLXJlbmRlcmVyLmMKLUBAIC0xMjg1LDE0ICsxMjg1LDEzIEBAIGdsX3JlbmRlcmVyX2ZsdXNoX2RhbWFnZShzdHJ1Y3Qgd2VzdG9uX3N1cmZhY2UgKnN1cmZhY2UpCi0gCQlnb3RvIGRvbmU7Ci0gCX0KLSAKLS0JZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfUk9XX0xFTkdUSF9FWFQsIGdzLT5waXRjaCk7Ci0tCi0gCWlmIChncy0+bmVlZHNfZnVsbF91cGxvYWQpIHsKLSAJCWdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1NLSVBfUElYRUxTX0VYVCwgMCk7Ci0gCQlnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19TS0lQX1JPV1NfRVhULCAwKTsKLSAJCXdsX3NobV9idWZmZXJfYmVnaW5fYWNjZXNzKGJ1ZmZlci0+c2htX2J1ZmZlcik7Ci0gCQlmb3IgKGogPSAwOyBqIDwgZ3MtPm51bV90ZXh0dXJlczsgaisrKSB7Ci0gCQkJZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBncy0+dGV4dHVyZXNbal0pOwotKwkJCWdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1JPV19MRU5HVEhfRVhULCBncy0+cGl0Y2ggLyBncy0+aHN1YltqXSk7Ci0gCQkJZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsCi0gCQkJCSAgICAgZ3MtPmdsX2Zvcm1hdFtqXSwKLSAJCQkJICAgICBncy0+cGl0Y2ggLyBncy0+aHN1YltqXSwKLUBAIC0xMzE3LDYgKzEzMTYsNyBAQCBnbF9yZW5kZXJlcl9mbHVzaF9kYW1hZ2Uoc3RydWN0IHdlc3Rvbl9zdXJmYWNlICpzdXJmYWNlKQotIAkJZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfU0tJUF9ST1dTX0VYVCwgci55MSk7Ci0gCQlmb3IgKGogPSAwOyBqIDwgZ3MtPm51bV90ZXh0dXJlczsgaisrKSB7Ci0gCQkJZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBncy0+dGV4dHVyZXNbal0pOwotKwkJCWdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1JPV19MRU5HVEhfRVhULCBncy0+cGl0Y2ggLyBncy0+aHN1YltqXSk7Ci0gCQkJZ2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsCi0gCQkJCQlyLngxIC8gZ3MtPmhzdWJbal0sCi0gCQkJCQlyLnkxIC8gZ3MtPnZzdWJbal0sCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uXzIuMC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbl8yLjAuMC5iYgppbmRleCAwNjM0OTRjLi41NGIwN2JkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uXzIuMC4wLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b25fMi4wLjAuYmIKQEAgLTEyLDcgKzEyLDYgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLUZpeC13YXlsYW5kLXByb3RvY29scy1wYXRoLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3h3YXlsYW5kLndlc3Rvbi1zdGFydCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXdlc3Rvbi1sYXVuY2gtUHJvdmlkZS1hLWRlZmF1bHQtdmVyc2lvbi10aGF0LWRvZXNuLXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vd2VzdG9uLWdsLXJlbmRlcmVyLVNldC1waXRjaC1jb3JyZWN0bHktZm9yLXN1YnNhbXBsZWQtdGV4dHVyZXMucGF0Y2ggXAogIgogU1JDX1VSSVttZDVzdW1dID0gIjE1ZjM4OTQ1OTQyYmYyYTkxZmUyNjg3MTQ1ZmI0YzdkIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImI0ZTQ0NmFjMjdmMTE4MTk2ZjE2MDlkYWI4OWJiM2NiM2U4MTY1MmQ5ODE0MTRhZDg2MGU3MzNiMzU1MzY1ZDgiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUveGN1cnNvci10cmFuc3BhcmVudC10aGVtZV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWUveGN1cnNvci10cmFuc3BhcmVudC10aGVtZV9naXQuYmIKaW5kZXggYjg3MWQ4OS4uNzMzZWJjZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lL3hjdXJzb3ItdHJhbnNwYXJlbnQtdGhlbWVfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveGN1cnNvci10cmFuc3BhcmVudC10aGVtZS94Y3Vyc29yLXRyYW5zcGFyZW50LXRoZW1lX2dpdC5iYgpAQCAtMTEsNiArMTEsNyBAQAogUFYgPSAiMC4xLjErZ2l0JHtTUkNQVn0iCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvJHtCUE59O2JyYW5jaD1tYXN0ZXIiCitVUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94MTFwZXJmXzEuNi4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94MTFwZXJmXzEuNi4wLmJiCmluZGV4IDRlOTM1NTguLmEwNmFhMjYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveDExcGVyZl8xLjYuMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3gxMXBlcmZfMS42LjAuYmIKQEAgLTEzLDYgKzEzLDEwIEBACiAKIFBFID0gIjEiCiAKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCAoKSB7CisgICAgc2VkIC1pIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyAke0R9JHtiaW5kaXJ9L3gxMXBlcmZjb21wCit9CisKIEZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vWDExL3gxMXBlcmZjb21wLyoiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICJmMGIyNGU0ZDhiZWI2MjJhNDE5ZTg0MzFlMWMwM2NkNyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGtiY29tcF8xLjMuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGtiY29tcF8xLjMuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWM5ODM1OS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hrYmNvbXBfMS4zLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1yZXF1aXJlIHhvcmctYXBwLWNvbW1vbi5pbmMKLQotU1VNTUFSWSA9ICJBIHByb2dyYW0gdG8gY29tcGlsZSBYS0Iga2V5Ym9hcmQgZGVzY3JpcHRpb24iCi0KLURFU0NSSVBUSU9OID0gIlRoZSB4a2Jjb21wIGtleW1hcCBjb21waWxlciBjb252ZXJ0cyBhIGRlc2NyaXB0aW9uIG9mIGFuIFwKLVhLQiBrZXltYXAgaW50byBvbmUgb2Ygc2V2ZXJhbCBvdXRwdXQgZm9ybWF0cy4gVGhlIG1vc3QgY29tbW9uIHVzZSBmb3IgXAoteGtiY29tcCBpcyB0byBjcmVhdGUgYSBjb21waWxlZCBrZXltYXAgZmlsZSAoLnhrbSBleHRlbnNpb24pIHdoaWNoIGNhbiBcCi1iZSByZWFkIGRpcmVjdGx5IGJ5IFhLQi1jYXBhYmxlIFggc2VydmVycyBvciB1dGlsaXRpZXMuIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wODQzNmU0ZjQ0NzY5NjRlMmUyZGQ3ZTdlNDFlMDc2YSIKLQotUFIgPSAiJHtJTkNfUFJ9LjAiCi0KLURFUEVORFMgKz0gImxpYnhrYmZpbGUiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYTRkODM1M2RhZjZjYjBhOWM0NzM3OWI3NDEzYzQyYzYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDMwNGRjOWUwZDRhYzEwODMxYTllZjVkNTQxOTcyMjM3NWRkYmMzZWFjM2ZmNDQxMzA5NGQ1N2JjMWYxOTIzZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGtiY29tcF8xLjQuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGtiY29tcF8xLjQuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOWRjMzI3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94a2Jjb21wXzEuNC4wLmJiCkBAIC0wLDAgKzEsMTkgQEAKK3JlcXVpcmUgeG9yZy1hcHAtY29tbW9uLmluYworCitTVU1NQVJZID0gIkEgcHJvZ3JhbSB0byBjb21waWxlIFhLQiBrZXlib2FyZCBkZXNjcmlwdGlvbiIKKworREVTQ1JJUFRJT04gPSAiVGhlIHhrYmNvbXAga2V5bWFwIGNvbXBpbGVyIGNvbnZlcnRzIGEgZGVzY3JpcHRpb24gb2YgYW4gXAorWEtCIGtleW1hcCBpbnRvIG9uZSBvZiBzZXZlcmFsIG91dHB1dCBmb3JtYXRzLiBUaGUgbW9zdCBjb21tb24gdXNlIGZvciBcCit4a2Jjb21wIGlzIHRvIGNyZWF0ZSBhIGNvbXBpbGVkIGtleW1hcCBmaWxlICgueGttIGV4dGVuc2lvbikgd2hpY2ggY2FuIFwKK2JlIHJlYWQgZGlyZWN0bHkgYnkgWEtCLWNhcGFibGUgWCBzZXJ2ZXJzIG9yIHV0aWxpdGllcy4iCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTA4NDM2ZTRmNDQ3Njk2NGUyZTJkZDdlN2U0MWUwNzZhIgorCitQUiA9ICIke0lOQ19QUn0uMCIKKworREVQRU5EUyArPSAibGlieGtiZmlsZSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJjYzIyYjIzMmJjNzhhMzAzMzcxOTgzZTFiNDg3OTRhYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiYzY5Yzg3NDhjMDNjNWFkOWFmZGM4ZGZmOWRiMTE5OTRkZDg3MWI2MTRjNjVmODk0MDUxNmRhNmJmNjFjZTZiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LWlucHV0LWxpYmlucHV0XzAuMjQuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1saWJpbnB1dF8wLjI0LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0YjEyNzEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LWlucHV0LWxpYmlucHV0XzAuMjQuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLXJlcXVpcmUgeG9yZy1kcml2ZXItaW5wdXQuaW5jCi0KLVNVTU1BUlkgPSAiR2VuZXJpYyBpbnB1dCBkcml2ZXIgZm9yIHRoZSBYLk9yZyBzZXJ2ZXIgYmFzZWQgb24gbGliaW5wdXQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01ZTZiMjBlYTJlZjk0YTk5ODE0NWYwZWEzZjc4OGVlMCIKLQotREVQRU5EUyArPSAibGliaW5wdXQiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJiZDNmYTExOGU0YWJhZGI4ODA0ZGM2YTA5OWJiNGFiMyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkZGNiMDczNTBhZWQ1OWIyOTk2YTkyYTFiNGZmNjRkMWMwYjBjODZhM2YwZGRjYTE1YjJiMWM4YzhiYjEzNjI4IgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9YMTEveG9yZy5jb25mLmQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtbGliaW5wdXRfMC4yNS4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LWlucHV0LWxpYmlucHV0XzAuMjUuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YjNlYTE2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LWlucHV0LWxpYmlucHV0XzAuMjUuMS5iYgpAQCAtMCwwICsxLDExIEBACityZXF1aXJlIHhvcmctZHJpdmVyLWlucHV0LmluYworCitTVU1NQVJZID0gIkdlbmVyaWMgaW5wdXQgZHJpdmVyIGZvciB0aGUgWC5Pcmcgc2VydmVyIGJhc2VkIG9uIGxpYmlucHV0IgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NWU2YjIwZWEyZWY5NGE5OTgxNDVmMGVhM2Y3ODhlZTAiCisKK0RFUEVORFMgKz0gImxpYmlucHV0IgorCitTUkNfVVJJW21kNXN1bV0gPSAiMTQwMDMxMzk2MTRiMjVjYzc2YzlhNGNhZDA1OWRmODkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDg5ZjdkNTkxYzllZjA4NDYzZDQ5NjZlNjFmN2M2ZWE0MzNmNWZjYmI5ZjUzNzBmYjYyMWRhNjM5YTg0YzdlMCIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vWDExL3hvcmcuY29uZi5kIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWludGVsX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1pbnRlbF9naXQuYmIKaW5kZXggZjg2ZGU2Zi4uMTM4ZGZkZCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWludGVsX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8taW50ZWxfZ2l0LmJiCkBAIC0yNCw3ICsyNCw3IEBACiAKIERFUEVORFMgKz0gInZpcnR1YWwvbGlieDExIGRybSBsaWJwY2lhY2Nlc3MgcGl4bWFuIgogCi1QQUNLQUdFQ09ORklHID8/PSAieHZtYyBzbmEgdWRldiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCcsICdkcmkgZHJpMSBkcmkyJywgJycsIGQpfSIKK1BBQ0tBR0VDT05GSUcgPz89ICJ4dm1jIHV4YSB1ZGV2ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnb3BlbmdsJywgJ2RyaSBkcmkxIGRyaTInLCAnJywgZCl9IgogCiBQQUNLQUdFQ09ORklHW2RyaV0gPSAiLS1lbmFibGUtZHJpLC0tZGlzYWJsZS1kcmkiCiBQQUNLQUdFQ09ORklHW2RyaTFdID0gIi0tZW5hYmxlLWRyaTEsLS1kaXNhYmxlLWRyaTEseGY4NmRyaXByb3RvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLW9tYXBmYi8wMDAxLVByZXZlbnRzLW9tYXBmYi1mcm9tLWZyb20tY3Jhc2hpbmctd2hlbi1waXhlbGNsb2NrLW8ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tb21hcGZiLzAwMDEtUHJldmVudHMtb21hcGZiLWZyb20tZnJvbS1jcmFzaGluZy13aGVuLXBpeGVsY2xvY2stby5wYXRjaAppbmRleCBjNGNmMTZlLi5hYzE5MjE5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tb21hcGZiLzAwMDEtUHJldmVudHMtb21hcGZiLWZyb20tZnJvbS1jcmFzaGluZy13aGVuLXBpeGVsY2xvY2stby5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8tb21hcGZiLzAwMDEtUHJldmVudHMtb21hcGZiLWZyb20tZnJvbS1jcmFzaGluZy13aGVuLXBpeGVsY2xvY2stby5wYXRjaApAQCAtNiw2ICs2LDggQEAKIAogRHVlIHRvIGEgTGludXggZGVzaWduIGJ1ZyBpdCBpcyBlYXN5IHRvIGdldCBhIHBpeGVsY2xvY2sgc2V0IHRvIHplcm8KIHdoZW4gY2hhbmdpbmcgZGlzcGxheXMgYXQgcnVudGltZS4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICBzcmMvb21hcGZiLW91dHB1dC5jIHwgOSArKysrKysrLS0KICAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJwY2lhY2Nlc3MvMDAwMS1JbmNsdWRlLWNvbmZpZy5oLWJlZm9yZS1hbnl0aGluZy1lbHNlLWluLS5jLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJwY2lhY2Nlc3MvMDAwMS1JbmNsdWRlLWNvbmZpZy5oLWJlZm9yZS1hbnl0aGluZy1lbHNlLWluLS5jLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTJmYzBkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlicGNpYWNjZXNzLzAwMDEtSW5jbHVkZS1jb25maWcuaC1iZWZvcmUtYW55dGhpbmctZWxzZS1pbi0uYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE4NyArMCwwIEBACi1Gcm9tIGIxNDY5NmE1NTc5NmU3Mzk2MjRiYmRhNGY3NzI0MjcwMzJlZmZmMmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKdWxpZW4gQ3Jpc3RhdSA8amNyaXN0YXVAZGViaWFuLm9yZz4KLURhdGU6IFN1biwgMjYgQXByIDIwMTUgMTU6MjA6NTcgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzRdIEluY2x1ZGUgY29uZmlnLmggYmVmb3JlIGFueXRoaW5nIGVsc2UgaW4gKi5jCi0KLURlYmlhbiBidWcjNzQ5MDA4IDxodHRwczovL2J1Z3MuZGViaWFuLm9yZy83NDkwMDg+Ci0KLVJlcG9ydGVkLWJ5OiBNaWNoYWVsIFRhdXRzY2huaWcgPG10QGRlYmlhbi5vcmc+Ci1TaWduZWQtb2ZmLWJ5OiBKdWxpZW4gQ3Jpc3RhdSA8amNyaXN0YXVAZGViaWFuLm9yZz4KLVJldmlld2VkLWJ5OiBBbGFuIENvb3BlcnNtaXRoIDxhbGFuLmNvb3BlcnNtaXRoQG9yYWNsZS5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotIHNyYy9jb21tb25fY2FwYWJpbGl0eS5jICB8IDMgKysrCi0gc3JjL2NvbW1vbl9pbml0LmMgICAgICAgIHwgMyArKysKLSBzcmMvY29tbW9uX2ludGVyZmFjZS5jICAgfCAzICsrKwotIHNyYy9jb21tb25faW8uYyAgICAgICAgICB8IDMgKysrCi0gc3JjL2NvbW1vbl9pdGVyYXRvci5jICAgIHwgMyArKysKLSBzcmMvY29tbW9uX21hcC5jICAgICAgICAgfCAzICsrKwotIHNyYy9jb21tb25fdmdhYXJiX3N0dWIuYyB8IDMgKysrCi0gc3JjL2xpbnV4X2Rldm1lbS5jICAgICAgIHwgNSArKystLQotIHNyYy9vcGVuYnNkX3BjaS5jICAgICAgICB8IDMgKysrCi0gc3JjL3NvbHhfZGV2ZnMuYyAgICAgICAgIHwgMyArKysKLSBzcmMveDg2X3BjaS5jICAgICAgICAgICAgfCA0ICsrKy0KLSAxMSBmaWxlcyBjaGFuZ2VkLCAzMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2NvbW1vbl9jYXBhYmlsaXR5LmMgYi9zcmMvY29tbW9uX2NhcGFiaWxpdHkuYwotaW5kZXggNDg4NzQzZC4uMTVkMzk1ZCAxMDA2NDQKLS0tLSBhL3NyYy9jb21tb25fY2FwYWJpbGl0eS5jCi0rKysgYi9zcmMvY29tbW9uX2NhcGFiaWxpdHkuYwotQEAgLTMxLDYgKzMxLDkgQEAKLSAgKgotICAqIFxhdXRob3IgSWFuIFJvbWFuaWNrIDxpZHJAdXMuaWJtLmNvbT4KLSAgKi8KLSsjaWZkZWYgSEFWRV9DT05GSUdfSAotKyNpbmNsdWRlICJjb25maWcuaCIKLSsjZW5kaWYKLSAKLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci1kaWZmIC0tZ2l0IGEvc3JjL2NvbW1vbl9pbml0LmMgYi9zcmMvY29tbW9uX2luaXQuYwotaW5kZXggYjFjMGMzZS4uZjdiNTliZCAxMDA2NDQKLS0tLSBhL3NyYy9jb21tb25faW5pdC5jCi0rKysgYi9zcmMvY29tbW9uX2luaXQuYwotQEAgLTI4LDYgKzI4LDkgQEAKLSAgKgotICAqIFxhdXRob3IgSWFuIFJvbWFuaWNrIDxpZHJAdXMuaWJtLmNvbT4KLSAgKi8KLSsjaWZkZWYgSEFWRV9DT05GSUdfSAotKyNpbmNsdWRlICJjb25maWcuaCIKLSsjZW5kaWYKLSAKLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci1kaWZmIC0tZ2l0IGEvc3JjL2NvbW1vbl9pbnRlcmZhY2UuYyBiL3NyYy9jb21tb25faW50ZXJmYWNlLmMKLWluZGV4IDU5Nzc4Y2YuLmNiOTVlOTAgMTAwNjQ0Ci0tLS0gYS9zcmMvY29tbW9uX2ludGVyZmFjZS5jCi0rKysgYi9zcmMvY29tbW9uX2ludGVyZmFjZS5jCi1AQCAtMjgsNiArMjgsOSBAQAotICAqCi0gICogXGF1dGhvciBJYW4gUm9tYW5pY2sgPGlkckB1cy5pYm0uY29tPgotICAqLwotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rI2luY2x1ZGUgImNvbmZpZy5oIgotKyNlbmRpZgotIAotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci1kaWZmIC0tZ2l0IGEvc3JjL2NvbW1vbl9pby5jIGIvc3JjL2NvbW1vbl9pby5jCi1pbmRleCBmNWM5ZTQ1Li5lOTU4NmFkIDEwMDY0NAotLS0tIGEvc3JjL2NvbW1vbl9pby5jCi0rKysgYi9zcmMvY29tbW9uX2lvLmMKLUBAIC0yMiw2ICsyMiw5IEBACi0gICogQXV0aG9yOgotICAqCUFkYW0gSmFja3NvbiA8YWpheEByZWRoYXQuY29tPgotICAqLwotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rI2luY2x1ZGUgImNvbmZpZy5oIgotKyNlbmRpZgotIAotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci1kaWZmIC0tZ2l0IGEvc3JjL2NvbW1vbl9pdGVyYXRvci5jIGIvc3JjL2NvbW1vbl9pdGVyYXRvci5jCi1pbmRleCBjY2Y2NTZkLi4yYmViMTgwIDEwMDY0NAotLS0tIGEvc3JjL2NvbW1vbl9pdGVyYXRvci5jCi0rKysgYi9zcmMvY29tbW9uX2l0ZXJhdG9yLmMKLUBAIC0yOCw2ICsyOCw5IEBACi0gICoKLSAgKiBcYXV0aG9yIElhbiBSb21hbmljayA8aWRyQHVzLmlibS5jb20+Ci0gICovCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjaW5jbHVkZSAiY29uZmlnLmgiCi0rI2VuZGlmCi0gCi0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLWRpZmYgLS1naXQgYS9zcmMvY29tbW9uX21hcC5jIGIvc3JjL2NvbW1vbl9tYXAuYwotaW5kZXggODc1NzE1MS4uZjE4NTRiYiAxMDA2NDQKLS0tLSBhL3NyYy9jb21tb25fbWFwLmMKLSsrKyBiL3NyYy9jb21tb25fbWFwLmMKLUBAIC0yMSw2ICsyMSw5IEBACi0gICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgotICAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KLSAgKi8KLSsjaWZkZWYgSEFWRV9DT05GSUdfSAotKyNpbmNsdWRlICJjb25maWcuaCIKLSsjZW5kaWYKLSAKLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPHN5cy9tbWFuLmg+Ci1kaWZmIC0tZ2l0IGEvc3JjL2NvbW1vbl92Z2FhcmJfc3R1Yi5jIGIvc3JjL2NvbW1vbl92Z2FhcmJfc3R1Yi5jCi1pbmRleCA5Mzk0MjczLi5jMTcwOGY2IDEwMDY0NAotLS0tIGEvc3JjL2NvbW1vbl92Z2FhcmJfc3R1Yi5jCi0rKysgYi9zcmMvY29tbW9uX3ZnYWFyYl9zdHViLmMKLUBAIC0yMyw2ICsyMyw5IEBACi0gICogT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgotICAqCi0gICovCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjaW5jbHVkZSAiY29uZmlnLmgiCi0rI2VuZGlmCi0gCi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgInBjaWFjY2Vzcy5oIgotZGlmZiAtLWdpdCBhL3NyYy9saW51eF9kZXZtZW0uYyBiL3NyYy9saW51eF9kZXZtZW0uYwotaW5kZXggMTBlM2JkZS4uMGQwNTY3YyAxMDA2NDQKLS0tLSBhL3NyYy9saW51eF9kZXZtZW0uYwotKysrIGIvc3JjL2xpbnV4X2Rldm1lbS5jCi1AQCAtMzIsOCArMzIsOSBAQAotICAqCi0gICogXGF1dGhvciBJYW4gUm9tYW5pY2sgPGlkckB1cy5pYm0uY29tPgotICAqLwotLQotLSNkZWZpbmUgX0dOVV9TT1VSQ0UKLSsjaWZkZWYgSEFWRV9DT05GSUdfSAotKyNpbmNsdWRlICJjb25maWcuaCIKLSsjZW5kaWYKLSAKLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotZGlmZiAtLWdpdCBhL3NyYy9vcGVuYnNkX3BjaS5jIGIvc3JjL29wZW5ic2RfcGNpLmMKLWluZGV4IDRkMWI1Y2QuLmI4Y2UzMTggMTAwNjQ0Ci0tLS0gYS9zcmMvb3BlbmJzZF9wY2kuYwotKysrIGIvc3JjL29wZW5ic2RfcGNpLmMKLUBAIC0xMyw2ICsxMyw5IEBACi0gICogQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YKLSAgKiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgotICAqLwotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rI2luY2x1ZGUgImNvbmZpZy5oIgotKyNlbmRpZgotIAotICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KLSAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+Ci1kaWZmIC0tZ2l0IGEvc3JjL3NvbHhfZGV2ZnMuYyBiL3NyYy9zb2x4X2RldmZzLmMKLWluZGV4IGY1NzIzOTMuLmNmOTY0NjcgMTAwNjQ0Ci0tLS0gYS9zcmMvc29seF9kZXZmcy5jCi0rKysgYi9zcmMvc29seF9kZXZmcy5jCi1AQCAtMjUsNiArMjUsOSBAQAotIC8qCi0gICogU29sYXJpcyBkZXZmcyBpbnRlcmZhY2VzCi0gICovCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjaW5jbHVkZSAiY29uZmlnLmgiCi0rI2VuZGlmCi0gCi0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdHJpbmdzLmg+Ci1kaWZmIC0tZ2l0IGEvc3JjL3g4Nl9wY2kuYyBiL3NyYy94ODZfcGNpLmMKLWluZGV4IDQ5YzFjYWIuLjMyZGFhMDQgMTAwNjQ0Ci0tLS0gYS9zcmMveDg2X3BjaS5jCi0rKysgYi9zcmMveDg2X3BjaS5jCi1AQCAtMTgsOCArMTgsMTAgQEAKLSAgKiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRgotICAqIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuCi0gICovCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjaW5jbHVkZSAiY29uZmlnLmgiCi0rI2VuZGlmCi0gCi0tI2RlZmluZSBfR05VX1NPVVJDRQotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlicGNpYWNjZXNzLzAwMDItRml4LXF1b3RpbmctaXNzdWUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnBjaWFjY2Vzcy8wMDAyLUZpeC1xdW90aW5nLWlzc3VlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNmQ2OWE4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlicGNpYWNjZXNzLzAwMDItRml4LXF1b3RpbmctaXNzdWUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1Gcm9tIDc2NWUwYTM4Y2I4YzQwZjg4NjVhZjVjYjM1NmZmZTYwMzlmZmIwOGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBUaG9tYXMgS2xhdXNuZXIgPHdpekBOZXRCU0Qub3JnPgotRGF0ZTogU3VuLCAyMiBNYXIgMjAxNSAyMTozODoyMyArMDEwMAotU3ViamVjdDogW1BBVENIIDIvNF0gRml4IHF1b3RpbmcgaXNzdWUuCi0KLW00IGhhcyAnW10nIGFzIHF1b3RpbmcgY2hhcmFjdGVycywgc28gaWYgd2Ugd2FudCAnW10nIHRvCi1lbmQgdXAgaW4gdGhlIGNvbmZpZ3VyZSBzY3JpcHQsIHdlIG5lZWQgdG8gcXVvdGUgdGhlbSBhZ2Fpbi4KLQotUmVwb3J0ZWQgYnkgR3JlZyBUcm94ZWwgPGdkdEBpci5iYm4uY29tPi4KLQotU2lnbmVkLW9mZi1ieTogVGhvbWFzIEtsYXVzbmVyIDx3aXpATmV0QlNELm9yZz4KLVJldmlld2VkLWJ5OiBBbGFuIENvb3BlcnNtaXRoIDxhbGFuLmNvb3BlcnNtaXRoQG9yYWNsZS5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotIGNvbmZpZ3VyZS5hYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggZTY3ZTllMS4uODg4MzMwYiAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNzYsNyArNzYsNyBAQCBjYXNlICRob3N0X29zIGluCi0gCQk7OwotIAkqbmV0YnNkKikKLSAJCWNhc2UgJGhvc3QgaW4KLS0JCSppWzMtOV04NiopCi0rCQkqaVtbMy05XV04NiopCi0gCQkJUENJQUNDRVNTX0xJQlM9IiRQQ0lBQ0NFU1NfTElCUyAtbGkzODYiCi0gCQkJOzsKLSAJCSp4ODZfNjQqfCphbWQ2NCopCi0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlicGNpYWNjZXNzLzAwMDMtbGludXhfc3lzZnMuYy1JbmNsdWRlLWxpbWl0cy5oLWZvci1QQVRIX01BWC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlicGNpYWNjZXNzLzAwMDMtbGludXhfc3lzZnMuYy1JbmNsdWRlLWxpbWl0cy5oLWZvci1QQVRIX01BWC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjUxM2M4ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnBjaWFjY2Vzcy8wMDAzLWxpbnV4X3N5c2ZzLmMtSW5jbHVkZS1saW1pdHMuaC1mb3ItUEFUSF9NQVgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1Gcm9tIDZiZDJmN2Y5MmVhZTcxMzY2M2Y0ZTEzZjZlMmNiMjM1MjY2MDdiOGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBGZWxpeCBKYW5kYSA8ZmVsaXguamFuZGFAcG9zdGVvLmRlPgotRGF0ZTogRnJpLCAxIE1heSAyMDE1IDE2OjM2OjUwICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMy80XSBsaW51eF9zeXNmcy5jOiBJbmNsdWRlIDxsaW1pdHMuaD4gZm9yIFBBVEhfTUFYCi0KLUZpeGVzIGNvbXBpbGF0aW9uIHdpdGggbXVzbCBsaWJjLgotCi1UZXN0ZWQtYnk6IEJlcm5kIEt1aGxzIDxiZXJuZC5rdWhsc0B0LW9ubGluZS5kZT4KLVNpZ25lZC1vZmYtYnk6IEZlbGl4IEphbmRhIDxmZWxpeC5qYW5kYUBwb3N0ZW8uZGU+Ci1SZXZpZXdlZC1ieTogQWxhbiBDb29wZXJzbWl0aCA8YWxhbi5jb29wZXJzbWl0aEBvcmFjbGUuY29tPgotU2lnbmVkLW9mZi1ieTogQWxhbiBDb29wZXJzbWl0aCA8YWxhbi5jb29wZXJzbWl0aEBvcmFjbGUuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLSBzcmMvbGludXhfc3lzZnMuYyB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2xpbnV4X3N5c2ZzLmMgYi9zcmMvbGludXhfc3lzZnMuYwotaW5kZXggNTBkOTRjZi4uM2Y5NWU1MyAxMDA2NDQKLS0tLSBhL3NyYy9saW51eF9zeXNmcy5jCi0rKysgYi9zcmMvbGludXhfc3lzZnMuYwotQEAgLTQ1LDYgKzQ1LDcgQEAKLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0rI2luY2x1ZGUgPGxpbWl0cy5oPgotICNpbmNsdWRlIDxzeXMvbW1hbi5oPgotICNpbmNsdWRlIDxkaXJlbnQuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJwY2lhY2Nlc3NfMC4xMy40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJwY2lhY2Nlc3NfMC4xMy40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZmE2YTYwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlicGNpYWNjZXNzXzAuMTMuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLVNVTU1BUlkgPSAiR2VuZXJpYyBQQ0kgYWNjZXNzIGxpYnJhcnkgZm9yIFgiCi0KLURFU0NSSVBUSU9OID0gImxpYnBjaWFjY2VzcyBwcm92aWRlcyBmdW5jdGlvbmFsaXR5IGZvciBYIHRvIGFjY2VzcyB0aGUgXAotUENJIGJ1cyBhbmQgZGV2aWNlcyBpbiBhIHBsYXRmb3JtLWluZGVwZW5kZW50IHdheS4iCi0KLXJlcXVpcmUgeG9yZy1saWItY29tbW9uLmluYwotCi1TUkNfVVJJICs9ICJcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1JbmNsdWRlLWNvbmZpZy5oLWJlZm9yZS1hbnl0aGluZy1lbHNlLWluLS5jLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAyLUZpeC1xdW90aW5nLWlzc3VlLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAzLWxpbnV4X3N5c2ZzLmMtSW5jbHVkZS1saW1pdHMuaC1mb3ItUEFUSF9NQVgucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDQtRG9uLXQtaW5jbHVkZS1zeXMtaW8uaC1vbi1hcm0ucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYWNlNzhhZWM3OTliMWNmNmRmYWVhNTVkMzg3OWVkOWYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDdmODY0NjU0NTYxZTRhYzg2MjlhMGVmOWM4ZjA3ZmJjMWY4NTkyZDFiNmM0MTg0MzE1OTNlOWJhMmNmMmZjZiIKLQotTElDRU5TRSA9ICJNSVQgJiBNSVQtc3R5bGUiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yNzdhYWRhNTIyMmI5YTIyZmJmMzQ3MWZmMzY4NzA2OCIKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlicGNpYWNjZXNzXzAuMTMuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlicGNpYWNjZXNzXzAuMTMuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hM2I2ODJiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJwY2lhY2Nlc3NfMC4xMy41LmJiCkBAIC0wLDAgKzEsMTggQEAKK1NVTU1BUlkgPSAiR2VuZXJpYyBQQ0kgYWNjZXNzIGxpYnJhcnkgZm9yIFgiCisKK0RFU0NSSVBUSU9OID0gImxpYnBjaWFjY2VzcyBwcm92aWRlcyBmdW5jdGlvbmFsaXR5IGZvciBYIHRvIGFjY2VzcyB0aGUgXAorUENJIGJ1cyBhbmQgZGV2aWNlcyBpbiBhIHBsYXRmb3JtLWluZGVwZW5kZW50IHdheS4iCisKK3JlcXVpcmUgeG9yZy1saWItY29tbW9uLmluYworCitTUkNfVVJJICs9ICJcCisgICAgICAgICAgICBmaWxlOi8vMDAwNC1Eb24tdC1pbmNsdWRlLXN5cy1pby5oLW9uLWFybS5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkODEwYWIxN2UyNGMxNDE4ZGVkZjcyMDdmYjI4NDFkNCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3NTJjNTRlOWIzYzMxMWI0MzQ3Y2I1MGFlYTg1NjZmYTQ4ZWFiMjc0MzQ2ZWE4YTA2ZjdmMTVkZTMyNDBiOTk5IgorCitMSUNFTlNFID0gIk1JVCAmIE1JVC1zdHlsZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTI3N2FhZGE1MjIyYjlhMjJmYmYzNDcxZmYzNjg3MDY4IgorCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJwdGhyZWFkLXN0dWJzXzAuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlicHRocmVhZC1zdHVic18wLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1MTRjN2YuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJwdGhyZWFkLXN0dWJzXzAuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLVNVTU1BUlkgPSAiTGlicmFyeSB0aGF0IHByb3ZpZGVzIHdlYWsgYWxpYXNlcyBmb3IgcHRocmVhZCBmdW5jdGlvbnMiCi1ERVNDUklQVElPTiA9ICJUaGlzIGxpYnJhcnkgcHJvdmlkZXMgd2VhayBhbGlhc2VzIGZvciBwdGhyZWFkIGZ1bmN0aW9ucyBcCi1ub3QgcHJvdmlkZWQgaW4gbGliYyBvciBvdGhlcndpc2UgYXZhaWxhYmxlIGJ5IGRlZmF1bHQuIgotSE9NRVBBR0UgPSAiaHR0cDovL3hjYi5mcmVlZGVza3RvcC5vcmciCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9idWdsaXN0LmNnaT9wcm9kdWN0PVhDQiIKLVNFQ1RJT04gPSAieDExL2xpYnMiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTZlZGMxZmVhMDNkOTU5ZjBjMmQ3NDNmZTVjYTc0NmFkIgotCi0jREVQRU5EUyA9ICJ4Y2ItcHJvdG8geHByb3RvIGxpYnhhdSBsaWJ4c2x0LW5hdGl2ZSIKLSMgREVQRU5EUyArPSAieHNsdHByb2MtbmF0aXZlIGdwZXJmLW5hdGl2ZSIKLQotQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKLQotU1JDX1VSSSA9ICJodHRwOi8veGNiLmZyZWVkZXNrdG9wLm9yZy9kaXN0L2xpYnB0aHJlYWQtc3R1YnMtJHtQVn0udGFyLmJ6MiIKLQotU1JDX1VSSVttZDVzdW1dID0gImU4ZmEzMWI0MmUxM2Y4N2U4ZjVhN2EyYjczMWRiN2VlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM1YjZkNTRlM2NjNmYzYmEyODA2MWRhODFhZjY0YjlhOTJiN2I3NTczMTkwOTgxNzI0ODhhNjYwZTNkODcyOTkiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1SREVQRU5EU18ke1BOfS1kZXYgPSAiIgotUlJFQ09NTUVORFNfJHtQTn0tZGJnID0gIiR7UE59LWRldiAoPSAke0VYVEVORFBLR1Z9KSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJwdGhyZWFkLXN0dWJzXzAuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlicHRocmVhZC1zdHVic18wLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTY5OTg0MQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlicHRocmVhZC1zdHVic18wLjQuYmIKQEAgLTAsMCArMSwyNSBAQAorU1VNTUFSWSA9ICJMaWJyYXJ5IHRoYXQgcHJvdmlkZXMgd2VhayBhbGlhc2VzIGZvciBwdGhyZWFkIGZ1bmN0aW9ucyIKK0RFU0NSSVBUSU9OID0gIlRoaXMgbGlicmFyeSBwcm92aWRlcyB3ZWFrIGFsaWFzZXMgZm9yIHB0aHJlYWQgZnVuY3Rpb25zIFwKK25vdCBwcm92aWRlZCBpbiBsaWJjIG9yIG90aGVyd2lzZSBhdmFpbGFibGUgYnkgZGVmYXVsdC4iCitIT01FUEFHRSA9ICJodHRwOi8veGNiLmZyZWVkZXNrdG9wLm9yZyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL2J1Z2xpc3QuY2dpP3Byb2R1Y3Q9WENCIgorU0VDVElPTiA9ICJ4MTEvbGlicyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NmVkYzFmZWEwM2Q5NTlmMGMyZDc0M2ZlNWNhNzQ2YWQiCisKKyNERVBFTkRTID0gInhjYi1wcm90byB4cHJvdG8gbGlieGF1IGxpYnhzbHQtbmF0aXZlIgorIyBERVBFTkRTICs9ICJ4c2x0cHJvYy1uYXRpdmUgZ3BlcmYtbmF0aXZlIgorCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgorCitTUkNfVVJJID0gImh0dHA6Ly94Y2IuZnJlZWRlc2t0b3Aub3JnL2Rpc3QvbGlicHRocmVhZC1zdHVicy0ke1BWfS50YXIuYnoyIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNDhjMTU0NDg1NGE5NGRiMGU1MTQ5OWNjM2FmZDc5N2YiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTRkMDU5MTFhMzE2NWQzYjE4MzIxY2MwNjdmZGQyZjAyM2YwNjQzNmUzOTFjNmEyOGRmZjYxOGE3OGQyZTczMyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK1JERVBFTkRTXyR7UE59LWRldiA9ICIiCitSUkVDT01NRU5EU18ke1BOfS1kYmcgPSAiJHtQTn0tZGV2ICg9ICR7RVhURU5EUEtHVn0pIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMS1kaWV0XzEuNi40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTEtZGlldF8xLjYuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGM3NjFkNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMS1kaWV0XzEuNi40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotcmVxdWlyZSBsaWJ4MTEuaW5jCi0KLURFU0NSSVBUSU9OICs9ICIgU3VwcG9ydCBmb3IgWENNUyBhbmQgWExPQ0FMRSBpcyBkaXNhYmxlZCBpbiBcCi10aGlzIHZlcnNpb24uIgotCi1TUkNfVVJJICs9ICJmaWxlOi8vWDE4TkNNU3N0dWJzLmRpZmYgXAotICAgICAgICAgICAgZmlsZTovL2ZpeC1kaXNhYmxlLXhsb2NhbGUuZGlmZiBcCi0gICAgICAgICAgICBmaWxlOi8vZml4LXV0Zjgtd3JvbmctZGVmaW5lLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1SUFJPVklERVNfJHtQTn0tZGV2ID0gImxpYngxMS1kZXYiCi1SUFJPVklERVNfJHtQTn0tbG9jYWxlID0gImxpYngxMS1sb2NhbGUiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2ZDU0MjI3MDgyZjNhYTJjNTk2ZjBiM2EzZmJiOTE3NSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiN2M3NDhiZTNhYTE2ZWMyY2JkODFlZGM4NDdlOWI2ZWUwM2Y4ODE0M2FiMjcwZmI1OWY1OGEwNDRkMzRlNDQxIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS14bG9jYWxlIgotCi1QQUNLQUdFQ09ORklHID8/PSAiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTEtZGlldF8xLjYuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExLWRpZXRfMS42LjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjk1Zjk2YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExLWRpZXRfMS42LjUuYmIKQEAgLTAsMCArMSwxOSBAQAorcmVxdWlyZSBsaWJ4MTEuaW5jCisKK0RFU0NSSVBUSU9OICs9ICIgU3VwcG9ydCBmb3IgWENNUyBhbmQgWExPQ0FMRSBpcyBkaXNhYmxlZCBpbiBcCit0aGlzIHZlcnNpb24uIgorCitTUkNfVVJJICs9ICJmaWxlOi8vWDE4TkNNU3N0dWJzLmRpZmYgXAorICAgICAgICAgICAgZmlsZTovL2ZpeC1kaXNhYmxlLXhsb2NhbGUuZGlmZiBcCisgICAgICAgICAgICBmaWxlOi8vZml4LXV0Zjgtd3JvbmctZGVmaW5lLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitSUFJPVklERVNfJHtQTn0tZGV2ID0gImxpYngxMS1kZXYiCitSUFJPVklERVNfJHtQTn0tbG9jYWxlID0gImxpYngxMS1sb2NhbGUiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwZjYxOGRiNzBjNDA1NGNhNjdjZWUwY2MxNTZhNDI1NSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0ZDM4OTBkYjJiYTIyNWJhOGM1NWNhNjNjNjQwOWMxZWJiMDc4YTI4MDZkZTU5ZmIxNjM0Mjc2OGFlNjM0MzVkIgorCitFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS14bG9jYWxlIgorCitQQUNLQUdFQ09ORklHID8/PSAiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTEvRml4LWhhbmdpbmctaXNzdWUtaW4tX1hSZXBseS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExL0ZpeC1oYW5naW5nLWlzc3VlLWluLV9YUmVwbHkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODk3ODgyYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExL0ZpeC1oYW5naW5nLWlzc3VlLWluLV9YUmVwbHkucGF0Y2gKQEAgLTAsMCArMSw2MCBAQAorRnJvbSA1MjM1YTdmMzY5MmE0YzNjOTBkZDRhYzFiZTNjNjcwMzg4OTA0YmJlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVGF0dSBGcmlzayA8dGF0dS5mcmlza0BnZS5jb20+CitEYXRlOiBUdWUsIDE0IE1hciAyMDE3IDE0OjQxOjI3ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBoYW5naW5nIGlzc3VlIGluIF9YUmVwbHkKKworQXNzdW1lIGV2ZW50IHF1ZXVlIGlzIGVtcHR5IGlmIGFub3RoZXIgdGhyZWFkIGlzIGJsb2NraW5nIHdhaXRpbmcgZm9yIGV2ZW50LgorCitJZiBvbmUgdGhyZWFkIHdhcyBibG9ja2luZyB3YWl0aW5nIGZvciBhbiBldmVudCBhbmQgYW5vdGhlciB0aHJlYWQgc2VudCBhCityZXBseSB0byB0aGUgWCBzZXJ2ZXIsIGJvdGggdGhyZWFkcyBnb3QgYmxvY2tlZCB1bnRpbCBhbiBldmVudCB3YXMKK3JlY2VpdmVkLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9wYXRjaHdvcmsuZnJlZWRlc2t0b3Aub3JnL3BhdGNoLzE3MTQ1OC9dCisKK1RoaXMgcGF0Y2ggbmVlZHMgdG8gYmUgcmVtb3ZlZCBvbmNlIHRoZSBjb3JyZXNwb25kaW5nIHBhdGNoIGhhcyBiZWVuIG1lcmdlZCB1cHN0cmVhbS4KKworaHR0cHM6Ly9wYXRjaHdvcmsuZnJlZWRlc2t0b3Aub3JnL3BhdGNoLzE3MTQ1OC8KKworU2lnbmVkLW9mZi1ieTogVGF0dSBGcmlzayA8dGF0dS5mcmlza0BnZS5jb20+CitTaWduZWQtb2ZmLWJ5OiBKb3NlIEFsYXJjb24gPGpvc2UuYWxhcmNvbkBnZS5jb20+CistLS0KKyBzcmMveGNiX2lvLmMgfCAxOSArKysrKysrLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMveGNiX2lvLmMgYi9zcmMveGNiX2lvLmMKK2luZGV4IDU5ODczMjkuLmM2NGViMDQgMTAwNjQ0CistLS0gYS9zcmMveGNiX2lvLmMKKysrKyBiL3NyYy94Y2JfaW8uYworQEAgLTYwOSwyMiArNjA5LDE3IEBAIFN0YXR1cyBfWFJlcGx5KERpc3BsYXkgKmRweSwgeFJlcGx5ICpyZXAsIGludCBleHRyYSwgQm9vbCBkaXNjYXJkKQorIAkJICogbGV0dGluZyBhbnlvbmUgZWxzZSBwcm9jZXNzIHRoaXMgc2VxdWVuY2UgbnVtYmVyLCB3ZQorIAkJICogbmVlZCB0byBwcm9jZXNzIGFueSBldmVudHMgdGhhdCBzaG91bGQgaGF2ZSBjb21lCisgCQkgKiBlYXJsaWVyLiAqLworLQorIAkJaWYoZHB5LT54Y2ItPmV2ZW50X293bmVyID09IFhsaWJPd25zRXZlbnRRdWV1ZSkKKyAJCXsKKyAJCQl4Y2JfZ2VuZXJpY19yZXBseV90ICpldmVudDsKKy0JCQkvKiBJZiBzb21lIHRocmVhZCBpcyBhbHJlYWR5IHdhaXRpbmcgZm9yIGV2ZW50cywKKy0JCQkgKiBpdCB3aWxsIGdldCB0aGUgZmlyc3Qgb25lLiBUaGF0IHRocmVhZCBtdXN0CistCQkJICogcHJvY2VzcyB0aGF0IGV2ZW50IGJlZm9yZSB3ZSBjYW4gY29udGludWUuICovCistCQkJLyogRklYTUU6IFRoYXQgZXZlbnQgbWlnaHQgYmUgYWZ0ZXIgdGhpcyByZXBseSwKKy0JCQkgKiBhbmQgbWlnaHQgbmV2ZXIgZXZlbiBjb21lLS1vciB0aGVyZSBtaWdodCBiZQorLQkJCSAqIG11bHRpcGxlIHRocmVhZHMgdHJ5aW5nIHRvIGdldCBldmVudHMuICovCistCQkJd2hpbGUoZHB5LT54Y2ItPmV2ZW50X3dhaXRlcikKKy0JCQl7IC8qIG5lZWQgYnJhY2VzIGFyb3VuZCBDb25kaXRpb25XYWl0ICovCistCQkJCUNvbmRpdGlvbldhaXQoZHB5LCBkcHktPnhjYi0+ZXZlbnRfbm90aWZ5KTsKKysKKysJCQkvKiBBc3N1bWUgZXZlbnQgcXVldWUgaXMgZW1wdHkgaWYgYW5vdGhlciB0aHJlYWQgaXMgYmxvY2tpbmcKKysJCQkgKiB3YWl0aW5nIGZvciBldmVudC4gKi8KKysJCQlpZighZHB5LT54Y2ItPmV2ZW50X3dhaXRlcikKKysJCQl7CisrCQkJCXdoaWxlKChldmVudCA9IHBvbGxfZm9yX3Jlc3BvbnNlKGRweSkpKQorKwkJCQkJaGFuZGxlX3Jlc3BvbnNlKGRweSwgZXZlbnQsIFRydWUpOworIAkJCX0KKy0JCQl3aGlsZSgoZXZlbnQgPSBwb2xsX2Zvcl9ldmVudChkcHkpKSkKKy0JCQkJaGFuZGxlX3Jlc3BvbnNlKGRweSwgZXZlbnQsIFRydWUpOworIAkJfQorIAorIAkJcmVxLT5yZXBseV93YWl0ZXIgPSAwOworLS0gCisyLjEwLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTFfMS42LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMV8xLjYuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2FhOTVmYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMV8xLjYuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLXJlcXVpcmUgbGlieDExLmluYwotaW5oZXJpdCBnZXR0ZXh0Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotU1JDX1VSSSArPSAiZmlsZTovL2Rpc2FibGVfdGVzdHMucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2ZDU0MjI3MDgyZjNhYTJjNTk2ZjBiM2EzZmJiOTE3NSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiN2M3NDhiZTNhYTE2ZWMyY2JkODFlZGM4NDdlOWI2ZWUwM2Y4ODE0M2FiMjcwZmI1OWY1OGEwNDRkMzRlNDQxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTFfMS42LjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMV8xLjYuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjdiZjI4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTFfMS42LjUuYmIKQEAgLTAsMCArMSwxNCBAQAorcmVxdWlyZSBsaWJ4MTEuaW5jCitpbmhlcml0IGdldHRleHQKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitTUkNfVVJJICs9ICJmaWxlOi8vZGlzYWJsZV90ZXN0cy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vRml4LWhhbmdpbmctaXNzdWUtaW4tX1hSZXBseS5wYXRjaCBcCisgICAgICAgICAgICIKK2RvX2NvbmZpZ3VyZV9hcHBlbmQgKCkgeworICAgIHNlZCAtaSAtZSAiL1gxMV9DRkxBR1MvZCIgJHtCfS9zcmMvdXRpbC9NYWtlZmlsZQorfQorCitTUkNfVVJJW21kNXN1bV0gPSAiMGY2MThkYjcwYzQwNTRjYTY3Y2VlMGNjMTU2YTQyNTUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGQzODkwZGIyYmEyMjViYThjNTVjYTYzYzY0MDljMWViYjA3OGEyODA2ZGU1OWZiMTYzNDI3NjhhZTYzNDM1ZCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGNhbGlicmF0ZV9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhjYWxpYnJhdGVfZ2l0LmJiCmluZGV4IDQ1NWU4NjkuLjdjN2ZhM2QgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGNhbGlicmF0ZV9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4Y2FsaWJyYXRlX2dpdC5iYgpAQCAtMTYsNiArMTYsNyBAQAogCiBTUkNfVVJJID0gImdpdDovL2Fub25naXQuZnJlZWRlc2t0b3Aub3JnL2dpdC94b3JnL2xpYi9saWJYQ2FsaWJyYXRlIFwKICAgICAgICAgICAgZmlsZTovL2ZpeC14Y2IucGF0Y2giCitVUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4dC8wMDAxLWxpYlh0LXV0aWwtZG9uLXQtbGluay1tYWtlc3Rycy13aXRoLXRhcmdldC1jZmxhZ3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnh0LzAwMDEtbGliWHQtdXRpbC1kb24tdC1saW5rLW1ha2VzdHJzLXdpdGgtdGFyZ2V0LWNmbGFncy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTY5MWEzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4dC8wMDAxLWxpYlh0LXV0aWwtZG9uLXQtbGluay1tYWtlc3Rycy13aXRoLXRhcmdldC1jZmxhZ3MucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSBiMGMwZTZkOTBiZDk5YTY5OTcwMWM5NTQyNjQwYWRiMjE4ZjVkNTM2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVGhvbWFzIFBldGF6em9uaSA8dGhvbWFzLnBldGF6em9uaUBmcmVlLWVsZWN0cm9ucy5jb20+CitEYXRlOiBNb24sIDEwIEp1bCAyMDE3IDE2OjUxOjEzICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIGxpYlh0OiB1dGlsOiBkb24ndCBsaW5rIG1ha2VzdHJzIHdpdGggdGFyZ2V0IGNmbGFncworCitUaGUgbGluZTogQU1fQ0ZMQUdTID0gJChYVF9DRkxBR1MpCitpbiB1dGlsL01ha2VmaWxlLmFtIGlzIHdyb25nIGJlY2F1c2UgaXQgYWRkcyB0YXJnZXQgY2ZsYWdzIHRvIHRoZQorY29tcGlsYXRpb24gb2YgbWFrZXN0cnMsIHdoaWNoIGlzIGJ1aWx0IGZvciB0aGUgYnVpbGQgbWFjaGluZSwgd2hpY2gKK2xlYWRzIHRvIGJ1aWxkIGZhaWx1cmVzIHdoZW4gY3Jvc3MtY29tcGlsaW5nLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogVGhvbWFzIFBldGF6em9uaSA8dGhvbWFzLnBldGF6em9uaUBmcmVlLWVsZWN0cm9ucy5jb20+CitTaWduZWQtb2ZmLWJ5OiBNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4KKy0tLQorIHV0aWwvTWFrZWZpbGUuYW0gfCAxIC0KKyAxIGZpbGUgY2hhbmdlZCwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvdXRpbC9NYWtlZmlsZS5hbSBiL3V0aWwvTWFrZWZpbGUuYW0KK2luZGV4IDgwMGIzNWIuLmYyZGQxZjkgMTAwNjQ0CistLS0gYS91dGlsL01ha2VmaWxlLmFtCisrKysgYi91dGlsL01ha2VmaWxlLmFtCitAQCAtMTEsNyArMTEsNiBAQCBFWFRSQV9ESVNUID0gXAorIAlTdHJEZWZzLmh0IFwKKyAJc3RyaW5nLmxpc3QKKyAKKy1BTV9DRkxBR1MgPSAkKFhUX0NGTEFHUykKKyBtYWtlc3Ryc19TT1VSQ0VTID0gbWFrZXN0cnMuYworIAorIAorLS0gCisyLjQuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnh0XzEuMS41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4dF8xLjEuNS5iYgppbmRleCBjMWVkMGJiLi4xODBkMDBkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnh0XzEuMS41LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHRfMS4xLjUuYmIKQEAgLTIzLDcgKzIzLDkgQEAKIAogWE9SR19QTiA9ICJsaWJYdCIKIAotU1JDX1VSSSArPSAgImZpbGU6Ly9saWJ4dF9maXhfZm9yX3gzMi5wYXRjaCIKK1NSQ19VUkkgKz0gICJmaWxlOi8vbGlieHRfZml4X2Zvcl94MzIucGF0Y2ggXAorICAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWxpYlh0LXV0aWwtZG9uLXQtbGluay1tYWtlc3Rycy13aXRoLXRhcmdldC1jZmxhZ3MucGF0Y2ggXAorICAgICAgICAgICAgIgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi94a2V5Ym9hcmQtY29uZmlnXzIuMjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3hrZXlib2FyZC1jb25maWdfMi4yMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDAwOTA0ZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3hrZXlib2FyZC1jb25maWdfMi4yMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVNVTU1BUlkgPSAiS2V5Ym9hcmQgY29uZmlndXJhdGlvbiBkYXRhYmFzZSBmb3IgWCBXaW5kb3ciCi0KLURFU0NSSVBUSU9OID0gIlRoZSBub24tYXJjaCBrZXlib2FyZCBjb25maWd1cmF0aW9uIGRhdGFiYXNlIGZvciBYIFwKLVdpbmRvdy4gIFRoZSBnb2FsIGlzIHRvIHByb3ZpZGUgdGhlIGNvbnNpc3RlbnQsIHdlbGwtc3RydWN0dXJlZCwgXAotZnJlcXVlbnRseSByZWxlYXNlZCBvcGVuIHNvdXJjZSBvZiBYIGtleWJvYXJkIGNvbmZpZ3VyYXRpb24gZGF0YSBmb3IgWCBcCi1XaW5kb3cgU3lzdGVtIGltcGxlbWVudGF0aW9ucy4gIFRoZSBwcm9qZWN0IGlzIHRhcmdldGVkIHRvIFhLQi1iYXNlZCBcCi1zeXN0ZW1zLiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL2ZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL1hLZXlib2FyZENvbmZpZyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9eGtleWJvYXJkLWNvbmZpZyIKLQotTElDRU5TRSA9ICJNSVQgJiBNSVQtc3R5bGUiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wZTdmMjFjYTdkYjk3NWM2MzQ2N2QyZTc2MjRhMTJmOSIKLQotU1JDX1VSSSA9ICIke1hPUkdfTUlSUk9SfS9pbmRpdmlkdWFsL2RhdGEveGtleWJvYXJkLWNvbmZpZy8ke0JQTn0tJHtQVn0udGFyLmJ6MiIKLVNSQ19VUklbbWQ1c3VtXSA9ICIxZjY4ODg2MzM5MTE2YWUzODc3MDUyMjA0YzliOWI4OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkMWJmYzcyNTUzYzRlM2VmMWNkNmYxM2VlYzA0ODhjZjk0MDQ5OGI2MTJhYjhhMGIzNjJlNzA5MGM5NGJjMTM0IgotCi1TRUNUSU9OID0gIngxMS9saWJzIgotREVQRU5EUyA9ICJpbnRsdG9vbC1uYXRpdmUgdmlydHVhbC9nZXR0ZXh0IHV0aWwtbWFjcm9zIGxpYnhzbHQtbmF0aXZlIgotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLXhrYi1ydWxlcy1zeW1saW5rPXhvcmcgLS1kaXNhYmxlLXJ1bnRpbWUtZGVwcyIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vWDExL3hrYiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vWDExL3hrYi9jb21waWxlZAotICAgIGNkICR7RH0ke2RhdGFkaXJ9L1gxMS94a2IvcnVsZXMgJiYgbG4gLXNmIGJhc2UgeG9yZwotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi94a2V5Ym9hcmQtY29uZmlnXzIuMjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3hrZXlib2FyZC1jb25maWdfMi4yMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMWE1MWFkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi94a2V5Ym9hcmQtY29uZmlnXzIuMjEuYmIKQEAgLTAsMCArMSwzMSBAQAorU1VNTUFSWSA9ICJLZXlib2FyZCBjb25maWd1cmF0aW9uIGRhdGFiYXNlIGZvciBYIFdpbmRvdyIKKworREVTQ1JJUFRJT04gPSAiVGhlIG5vbi1hcmNoIGtleWJvYXJkIGNvbmZpZ3VyYXRpb24gZGF0YWJhc2UgZm9yIFggXAorV2luZG93LiAgVGhlIGdvYWwgaXMgdG8gcHJvdmlkZSB0aGUgY29uc2lzdGVudCwgd2VsbC1zdHJ1Y3R1cmVkLCBcCitmcmVxdWVudGx5IHJlbGVhc2VkIG9wZW4gc291cmNlIG9mIFgga2V5Ym9hcmQgY29uZmlndXJhdGlvbiBkYXRhIGZvciBYIFwKK1dpbmRvdyBTeXN0ZW0gaW1wbGVtZW50YXRpb25zLiAgVGhlIHByb2plY3QgaXMgdGFyZ2V0ZWQgdG8gWEtCLWJhc2VkIFwKK3N5c3RlbXMuIgorCitIT01FUEFHRSA9ICJodHRwOi8vZnJlZWRlc2t0b3Aub3JnL3dpa2kvU29mdHdhcmUvWEtleWJvYXJkQ29uZmlnIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD14a2V5Ym9hcmQtY29uZmlnIgorCitMSUNFTlNFID0gIk1JVCAmIE1JVC1zdHlsZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTBlN2YyMWNhN2RiOTc1YzYzNDY3ZDJlNzYyNGExMmY5IgorCitTUkNfVVJJID0gIiR7WE9SR19NSVJST1J9L2luZGl2aWR1YWwvZGF0YS94a2V5Ym9hcmQtY29uZmlnLyR7QlBOfS0ke1BWfS50YXIuYnoyIgorU1JDX1VSSVttZDVzdW1dID0gImFmOTQ5OGU4OTU0OTA3ZDBhNDdmMGY3YjNkMjFlMWVmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMwYzE3MDQ5ZmFlMTI5ZmMxNDg3NTY1NmRhOWFhMzA5OWUzMDMxZDZjZTBlZTFkNzdhYWUxOTBmZDllZGNlYzUiCisKK1NFQ1RJT04gPSAieDExL2xpYnMiCitERVBFTkRTID0gImludGx0b29sLW5hdGl2ZSB1dGlsLW1hY3JvcyBsaWJ4c2x0LW5hdGl2ZSIKKworRVhUUkFfT0VDT05GID0gIi0td2l0aC14a2ItcnVsZXMtc3ltbGluaz14b3JnIC0tZGlzYWJsZS1ydW50aW1lLWRlcHMiCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L1gxMS94a2IiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0CisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L1gxMS94a2IvY29tcGlsZWQKKyAgICBjZCAke0R9JHtkYXRhZGlyfS9YMTEveGtiL3J1bGVzICYmIGxuIC1zZiBiYXNlIHhvcmcKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9jYWxpYnJhdGVwcm90b19naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8vY2FsaWJyYXRlcHJvdG9fZ2l0LmJiCmluZGV4IGI4OGQxNTcuLjNhOTg5MjYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by9jYWxpYnJhdGVwcm90b19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL2NhbGlicmF0ZXByb3RvX2dpdC5iYgpAQCAtMTcsMyArMTcsNSBAQAogU1JDX1VSSSA9ICJnaXQ6Ly9hbm9uZ2l0LmZyZWVkZXNrdG9wLm9yZy9naXQveG9yZy9wcm90by9jYWxpYnJhdGVwcm90byBcCiAgICAgICAgICAgIGZpbGU6Ly9maXgucGF0Y2g7YXBwbHk9eWVzIgogUyA9ICIke1dPUktESVJ9L2dpdCIKK1VQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLmluYwppbmRleCAxNjUwYzc5Li44NjNkODBjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy5pbmMKQEAgLTEyMyw3ICsxMjMsNyBAQAogT1BFTkdMX1BLR0NPTkZJR1MgPSAiZHJpIGdseCBnbGFtb3IgZHJpMyB4c2htZmVuY2UiCiBQQUNLQUdFQ09ORklHID8/PSAiZHJpMiB1ZGV2ICR7WE9SR19DUllQVE99IFwKICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCcsICcke09QRU5HTF9QS0dDT05GSUdTfScsICcnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCcsICd4d2F5bGFuZCcsICcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnb3BlbmdsIHdheWxhbmQnLCAneHdheWxhbmQnLCAnJywgZCl9IFwKICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgZCl9IFwKICIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnXzEuMTkuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZ18xLjE5LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkNmRmMzIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnXzEuMTkuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLXJlcXVpcmUgeHNlcnZlci14b3JnLmluYwotCi1TUkNfVVJJICs9ICJmaWxlOi8vbXVzbC1hcm0taW5iLW91dGIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLUZpeC1jaGVjay1mb3ItQ0xPQ0tfTU9OT1RPTklDLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAyLWNvbmZpZ3VyZS5hYy1GaXgtd2F5bGFuZC1zY2FubmVyLWFuZC1wcm90b2NvbHMtbG9jYXQucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDMtbW9kZXNldHRpbmctRml4LTE2LWJpdC1kZXB0aC1icHAtbW9kZS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMy1SZW1vdmUtY2hlY2stZm9yLXVzZVNJR0lPLW9wdGlvbi5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTA5NzEtMS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTA5NzEtMi5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTA5NzEtMy5wYXRjaCBcCi0gICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiY2FhOGVlN2IyOTUwYWJiZjczNDM0N2QxMzc1MjlmYjYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzlhZTJjZjM5ZDNmNmM0YTkxMjAxZDhkYWQ1NDlkMWQ3NzRiMzQyMDA3M2M1YTcwZDM5MDA0MGFhOTY1YTdmYiIKLQotIyBUaGVzZSBleHRlbnNpb25zIGFyZSBub3cgaW50ZWdyYXRlZCBpbnRvIHRoZSBzZXJ2ZXIsIHNvIGRlY2xhcmUgdGhlIG1pZ3JhdGlvbgotIyBwYXRoIGZvciBpbi1wbGFjZSB1cGdyYWRlcy4KLQotUlJFUExBQ0VTXyR7UE59ID0gICIke1BOfS1leHRlbnNpb24tZHJpIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRyaTIgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tcmVjb3JkIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWV4dG1vZCBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kYmUgXAotICAgICAgICAgICAgICAgICAgICIKLVJQUk9WSURFU18ke1BOfSA9ICAiJHtQTn0tZXh0ZW5zaW9uLWRyaSBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kcmkyIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLXJlY29yZCBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1leHRtb2QgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZGJlIFwKLSAgICAgICAgICAgICAgICAgICAiCi1SQ09ORkxJQ1RTXyR7UE59ID0gIiR7UE59LWV4dGVuc2lvbi1kcmkgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZHJpMiBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1yZWNvcmQgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZXh0bW9kIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRiZSBcCi0gICAgICAgICAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnXzEuMTkuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZ18xLjE5LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjVlZjZjNgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZ18xLjE5LjMuYmIKQEAgLTAsMCArMSwzNSBAQAorcmVxdWlyZSB4c2VydmVyLXhvcmcuaW5jCisKK1NSQ19VUkkgKz0gImZpbGU6Ly9tdXNsLWFybS1pbmItb3V0Yi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtRml4LWNoZWNrLWZvci1DTE9DS19NT05PVE9OSUMucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDItY29uZmlndXJlLmFjLUZpeC13YXlsYW5kLXNjYW5uZXItYW5kLXByb3RvY29scy1sb2NhdC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMy1tb2Rlc2V0dGluZy1GaXgtMTYtYml0LWRlcHRoLWJwcC1tb2RlLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAzLVJlbW92ZS1jaGVjay1mb3ItdXNlU0lHSU8tb3B0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xMDk3MS0xLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xMDk3MS0yLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xMDk3MS0zLnBhdGNoIFwKKyAgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICIwMTVkMmZjNGI5ZjJiZmU3YTYyNmVkYjYzYTYyYzY1ZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2NzdhODE2NmUwMzQ3NDcxOTIzOGRmZTM5NmNlNjczYzQyMzQ3MzU0NjRkNmRhZGYyOTU5YjYwMGQyMGU1YTk4IgorCisjIFRoZXNlIGV4dGVuc2lvbnMgYXJlIG5vdyBpbnRlZ3JhdGVkIGludG8gdGhlIHNlcnZlciwgc28gZGVjbGFyZSB0aGUgbWlncmF0aW9uCisjIHBhdGggZm9yIGluLXBsYWNlIHVwZ3JhZGVzLgorCitSUkVQTEFDRVNfJHtQTn0gPSAgIiR7UE59LWV4dGVuc2lvbi1kcmkgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZHJpMiBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1yZWNvcmQgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZXh0bW9kIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRiZSBcCisgICAgICAgICAgICAgICAgICAgIgorUlBST1ZJREVTXyR7UE59ID0gICIke1BOfS1leHRlbnNpb24tZHJpIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRyaTIgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tcmVjb3JkIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWV4dG1vZCBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kYmUgXAorICAgICAgICAgICAgICAgICAgICIKK1JDT05GTElDVFNfJHtQTn0gPSAiJHtQTn0tZXh0ZW5zaW9uLWRyaSBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kcmkyIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLXJlY29yZCBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1leHRtb2QgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZGJlIFwKKyAgICAgICAgICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3h2aWRlby10ZXN0cy94dmlkZW8tdGVzdHNfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94dmlkZW8tdGVzdHMveHZpZGVvLXRlc3RzX2dpdC5iYgppbmRleCA1MTgzOWRkLi4yNjY3ZGQ4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3h2aWRlby10ZXN0cy94dmlkZW8tdGVzdHNfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveHZpZGVvLXRlc3RzL3h2aWRlby10ZXN0c19naXQuYmIKQEAgLTgsNiArOCw3IEBACiBQViA9ICIwLjErZ2l0JHtTUkNQVn0iCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvdGVzdC14dmlkZW8iCitVUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvYmxrdHJhY2UvYmxrdHJhY2VfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvYmxrdHJhY2UvYmxrdHJhY2VfZ2l0LmJiCmluZGV4IDk1N2NiNzAuLjc3MDU3NWYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2Jsa3RyYWNlL2Jsa3RyYWNlX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9ibGt0cmFjZS9ibGt0cmFjZV9naXQuYmIKQEAgLTEsNCArMSw1IEBACiBTVU1NQVJZID0gIkdlbmVyYXRlcyB0cmFjZXMgb2YgSS9PIHRyYWZmaWMgb24gYmxvY2sgZGV2aWNlcyIKK0hPTUVQQUdFID0gImh0dHA6Ly9icmljay5rZXJuZWwuZGsvc25hcHMvIgogTElDRU5TRSA9ICJHUEx2MiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTM5M2E1Y2E0NDVmNjk2NTg3M2VjYTAyNTlhMTdmODMzIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvY3J5cHRvZGV2LWxpbnV4XzEuOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9jcnlwdG9kZXYtbGludXhfMS45LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvY3J5cHRvZGV2LWxpbnV4XzEuOC5iYgpyZW5hbWUgdG8gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2NyeXB0b2Rldi1saW51eF8xLjkuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9jcnlwdG9kZXYtbW9kdWxlXzEuOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9jcnlwdG9kZXYtbW9kdWxlXzEuOS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2NyeXB0b2Rldi1tb2R1bGVfMS44LmJiCnJlbmFtZSB0byBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvY3J5cHRvZGV2LW1vZHVsZV8xLjkuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9jcnlwdG9kZXYtdGVzdHNfMS44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2NyeXB0b2Rldi10ZXN0c18xLjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0MDA1MjQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2NyeXB0b2Rldi10ZXN0c18xLjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1yZXF1aXJlIGNyeXB0b2Rldi5pbmMKLQotU1VNTUFSWSA9ICJBIHRlc3Qgc3VpdGUgZm9yIC9kZXYvY3J5cHRvIGRldmljZSBkcml2ZXIiCi0KLURFUEVORFMgKz0gIm9wZW5zc2wiCi0KLVNSQ19VUkkgKz0gIiBcCi1maWxlOi8vMDAwMS1BZGQtdGhlLWNvbXBpbGUtYW5kLWluc3RhbGwtcnVsZXMtZm9yLWNyeXB0b2Rldi10ZXN0LnBhdGNoIFwKLSIKLQotRVhUUkFfT0VNQUtFPSdLRVJORUxfRElSPSIke1NUQUdJTkdfRVhFQ1BSRUZJWERJUn0iIFBSRUZJWD0iJHtEfSInCi0KLWRvX2NvbXBpbGUoKSB7Ci0Jb2VfcnVubWFrZSB0ZXN0cHJvZ3MKLX0KLQotZG9faW5zdGFsbCgpIHsKLQlvZV9ydW5tYWtlIGluc3RhbGxfdGVzdHMKLX0KLQotRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9L3Rlc3RzX2NyeXB0b2Rldi8qIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2NyeXB0b2Rldi10ZXN0c18xLjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvY3J5cHRvZGV2LXRlc3RzXzEuOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YWZiM2RlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2NyeXB0b2Rldi10ZXN0c18xLjkuYmIKQEAgLTAsMCArMSwyMSBAQAorcmVxdWlyZSBjcnlwdG9kZXYuaW5jCisKK1NVTU1BUlkgPSAiQSB0ZXN0IHN1aXRlIGZvciAvZGV2L2NyeXB0byBkZXZpY2UgZHJpdmVyIgorCitERVBFTkRTICs9ICJvcGVuc3NsMTAiCisKK1NSQ19VUkkgKz0gIiBcCitmaWxlOi8vMDAwMS1BZGQtdGhlLWNvbXBpbGUtYW5kLWluc3RhbGwtcnVsZXMtZm9yLWNyeXB0b2Rldi10ZXN0LnBhdGNoIFwKKyIKKworRVhUUkFfT0VNQUtFPSdLRVJORUxfRElSPSIke1NUQUdJTkdfRVhFQ1BSRUZJWERJUn0iIFBSRUZJWD0iJHtEfSInCisKK2RvX2NvbXBpbGUoKSB7CisJb2VfcnVubWFrZSB0ZXN0cHJvZ3MKK30KKworZG9faW5zdGFsbCgpIHsKKwlvZV9ydW5tYWtlIGluc3RhbGxfdGVzdHMKK30KKworRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9LyoiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvY3J5cHRvZGV2LmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9jcnlwdG9kZXYuaW5jCmluZGV4IDRhZTBhMmIuLjUwMzY2ZTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9jcnlwdG9kZXYuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9jcnlwdG9kZXYuaW5jCkBAIC0zLDE0ICszLDEwIEBACiBMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCiAKLVNSQ19VUkkgPSAiaHR0cDovL253bC5jYy9wdWIvY3J5cHRvZGV2LWxpbnV4L2NyeXB0b2Rldi1saW51eC0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDZkNmI1NjBjNmU0NWRjMzE3ZGFlNDdjNzQ3MDZmYTQzZjRhMzFkOC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9jYjE4NmY2ODI2NzkzODNlOGI1ODA2MjQwOTI3OTAzNzMwY2U4NWQ5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQWRqdXN0LXRvLWFub3RoZXItY2hhbmdlLWluLXRoZS11c2VyLXBhZ2UtQVBJLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2tlcm5lbC00LTEwLWNoYW5nZXMucGF0Y2giCitTUkNfVVJJID0gImh0dHA6Ly9ud2wuY2MvcHViL2NyeXB0b2Rldi1saW51eC9jcnlwdG9kZXYtbGludXgtJHtQVn0udGFyLmd6IgogCi1TUkNfVVJJW21kNXN1bV0gPSAiMDI2NDRjYzRjZDAyMzAxZTBiNTAzYTMzMmViMmYwYjUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjdmYWJkZTlmYjY3YjI4NmE5NmM0ZjQ1YjU5NGIwZWNjZDBmNzYxYjQ5NTcwNWMxOGYyYWU5NDYxYjgzMTM3NiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJjYjRlMGVkOWU1OTM3NzE2YzdjOGE3YmU4NDg5NWI2ZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5ZjRjMGI0OWIzMGUyNjdkNzc2Zjc5NDU1ZDA5YzcwY2M5YzEyYzg2ZWVlNDAwYTBkMGEwY2QxZDhlNDY3OTUwIgogCiBTID0gIiR7V09SS0RJUn0vY3J5cHRvZGV2LWxpbnV4LSR7UFZ9IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvZmlsZXMvMDAwMS1BZGp1c3QtdG8tYW5vdGhlci1jaGFuZ2UtaW4tdGhlLXVzZXItcGFnZS1BUEkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvZmlsZXMvMDAwMS1BZGp1c3QtdG8tYW5vdGhlci1jaGFuZ2UtaW4tdGhlLXVzZXItcGFnZS1BUEkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiNzUyNzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2ZpbGVzLzAwMDEtQWRqdXN0LXRvLWFub3RoZXItY2hhbmdlLWluLXRoZS11c2VyLXBhZ2UtQVBJLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotRnJvbSBmMTI2ZTQ4MzdlNjMzNGQwNDY0NTQwOTk1ZGY3NDI2ZmVkZjZiMTc1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWljaGFlbCBXZWlzZXIgPG1pY2hhZWwud2Vpc2VyQGdteC5kZT4KLURhdGU6IEZyaSwgMTEgTm92IDIwMTYgMTg6MDk6MzIgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gQWRqdXN0IHRvIGFub3RoZXIgY2hhbmdlIGluIHRoZSB1c2VyIHBhZ2UgQVBJCi0KLTQuOS4wIHdpbGwgcmVwbGFjZSB0aGUgd3JpdGUgYW5kIGZvcmNlIGZsYWdzIG9mIGdldF91c2VyX3BhZ2VzX3JlbW90ZSgpCi13aXRoIGEgZ3VwX2ZsYWdzIHBhcmFtZXRlclsxXS4gRGlzdGluZ3Vpc2ggdGhlIHR3byBBUElzIGJhc2VkIG9uIGtlcm5lbAotdmVyc2lvbiB3ZSdyZSBjb21waWxpbmcgZm9yLgotCi1bMV0gaHR0cHM6Ly9naXRodWIuY29tL3RvcnZhbGRzL2xpbnV4L2NvbW1pdC85YmVhZTFlYTg5MzA1YTk2NjdjZWFhYjZkMGJmNDZhMDQ1YWQ3MWU3Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogRGFuaWVsIFNjaHVsdHogPGQuc2NodWx0ekBwaHl0ZWMuZGU+Ci0tLS0KLSB6Yy5jIHwgOCArKysrKysrLQotIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3pjLmMgYi96Yy5jCi1pbmRleCBhOTdiNDlmLi5lNzY2ZWUzIDEwMDY0NAotLS0tIGEvemMuYwotKysrIGIvemMuYwotQEAgLTY1LDcgKzY1LDEzIEBAIGludCBfX2dldF91c2VyYnVmKHVpbnQ4X3QgX191c2VyICphZGRyLCB1aW50MzJfdCBsZW4sIGludCB3cml0ZSwKLSAJcmV0ID0gZ2V0X3VzZXJfcGFnZXMoCi0gI2VuZGlmCi0gCQkJdGFzaywgbW0sCi0tCQkJKHVuc2lnbmVkIGxvbmcpYWRkciwgcGdjb3VudCwgd3JpdGUsIDAsIHBnLCBOVUxMKTsKLSsJCQkodW5zaWduZWQgbG9uZylhZGRyLCBwZ2NvdW50LAotKyNpZiAoTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDQsIDksIDApKQotKwkJCXdyaXRlID8gRk9MTF9XUklURSA6IDAsCi0rI2Vsc2UKLSsJCQl3cml0ZSwgMCwKLSsjZW5kaWYKLSsJCQlwZywgTlVMTCk7Ci0gCXVwX3JlYWQoJm1tLT5tbWFwX3NlbSk7Ci0gCWlmIChyZXQgIT0gcGdjb3VudCkKLSAJCXJldHVybiAtRUlOVkFMOwotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvZmlsZXMvMDAwMS1EaXNhYmxlLWluc3RhbGxpbmctaGVhZGVyLWZpbGUtcHJvdmlkZWQtYnktYW5vdGhlci1wLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2ZpbGVzLzAwMDEtRGlzYWJsZS1pbnN0YWxsaW5nLWhlYWRlci1maWxlLXByb3ZpZGVkLWJ5LWFub3RoZXItcC5wYXRjaAppbmRleCBhNTgwZmM2Li44ODViNTgyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvZmlsZXMvMDAwMS1EaXNhYmxlLWluc3RhbGxpbmctaGVhZGVyLWZpbGUtcHJvdmlkZWQtYnktYW5vdGhlci1wLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9maWxlcy8wMDAxLURpc2FibGUtaW5zdGFsbGluZy1oZWFkZXItZmlsZS1wcm92aWRlZC1ieS1hbm90aGVyLXAucGF0Y2gKQEAgLTcsMjIgKzcsMTggQEAKIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFsgT0Ugc3BlY2lmaWMgXQogLS0tCi0gTWFrZWZpbGUgfCAyIC0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgZGVsZXRpb25zKC0pCisgTWFrZWZpbGUgfCAxIC0KKyAxIGZpbGUgY2hhbmdlZCwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQotaW5kZXggZDY2ZWYyNi4uOGU5N2M2YSAxMDA2NDQKK2luZGV4IDVhMDgwZTAuLmJmMDIzOTYgMTAwNjQ0CiAtLS0gYS9NYWtlZmlsZQogKysrIGIvTWFrZWZpbGUKLUBAIC0yMyw4ICsyMyw2IEBAIGluc3RhbGw6IG1vZHVsZXNfaW5zdGFsbAorQEAgLTMzLDcgKzMzLDYgQEAgaW5zdGFsbDogbW9kdWxlc19pbnN0YWxsCiAgCiAgbW9kdWxlc19pbnN0YWxsOgotIAltYWtlIC1DICQoS0VSTkVMX0RJUikgU1VCRElSUz1gcHdkYCBtb2R1bGVzX2luc3RhbGwKLS0JQGVjaG8gIkluc3RhbGxpbmcgY3J5cHRvZGV2LmggaW4gJChQUkVGSVgpL3Vzci9pbmNsdWRlL2NyeXB0byAuLi4iCi0tCUBpbnN0YWxsIC1EIGNyeXB0by9jcnlwdG9kZXYuaCAkKFBSRUZJWCkvdXNyL2luY2x1ZGUvY3J5cHRvL2NyeXB0b2Rldi5oCisgCSQoTUFLRSkgJChLRVJORUxfTUFLRV9PUFRTKSBtb2R1bGVzX2luc3RhbGwKKy0JaW5zdGFsbCAtbSA2NDQgLUQgY3J5cHRvL2NyeXB0b2Rldi5oICQoREVTVERJUikvJChpbmNsdWRlZGlyKS9jcnlwdG8vY3J5cHRvZGV2LmgKICAKICBjbGVhbjoKLSAJbWFrZSAtQyAkKEtFUk5FTF9ESVIpIFNVQkRJUlM9YHB3ZGAgY2xlYW4KLS0tIAotMS45LjEKLQorIAkkKE1BS0UpICQoS0VSTkVMX01BS0VfT1BUUykgY2xlYW4KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9maWxlcy8wNmQ2YjU2MGM2ZTQ1ZGMzMTdkYWU0N2M3NDcwNmZhNDNmNGEzMWQ4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2ZpbGVzLzA2ZDZiNTYwYzZlNDVkYzMxN2RhZTQ3Yzc0NzA2ZmE0M2Y0YTMxZDgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiNTU2ZTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2ZpbGVzLzA2ZDZiNTYwYzZlNDVkYzMxN2RhZTQ3Yzc0NzA2ZmE0M2Y0YTMxZDgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi1Gcm9tIGYxNGI0NzA2YjBkMDQ5ODhlN2U1YmM4YzRkMmFlZmVmOWYwMjlkOWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNaWNoYWVsIFdlaXNlciA8bWljaGFlbC53ZWlzZXJAZ214LmRlPgotRGF0ZTogRnJpLCA1IEF1ZyAyMDE2IDE4OjQzOjU1ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIEFkanVzdCB0byByZWNlbnQgdXNlciBwYWdlIEFQSSBjaGFuZ2VzCi0KLTQuNi4wIGJhc2ljYWxseSByZW5hbWVkIGdldF91c2VyX3BhZ2VzKCkgdG8gZ2V0X3VzZXJfcGFnZXNfcmVtb3RlKCkgYW5kCi1pbnRyb2R1Y2VkIGEgbmV3IGdldF91c2VyX3BhZ2VzKCkgdGhhdCBhbHdheXMgd29ya3Mgb24gdGhlIGN1cnJlbnQKLXRhc2suWzFdIERpc3Rpbmd1aXNoIHRoZSB0d28gQVBJcyBiYXNlZCBvbiBrZXJuZWwgdmVyc2lvbiB3ZSdyZQotY29tcGlsaW5nIGZvci4KLQotQWxzbywgdGhlcmUgc2VlbXMgdG8gaGF2ZSBiZWVuIGEgbWFzc2l2ZSBjbGVhbnNpbmcgb2YKLXBhZ2VfY2FjaGVfcmVsZWFzZShwYWdlKSBpbiBmYXZvdXIgb2YgcHV0X3BhZ2UocGFnZSlbMl0gd2hpY2ggd2FzIGFuCi1hbGlhcyBmb3IgcHV0X3BhZ2UocGFnZSlbM10gc2luY2UgMi42LjAuIEJlZm9yZSB0aGF0IGJlZ2lubmluZyB3aXRoCi0yLjQuMCBib3RoIHBhZ2VfY2FjaGVfcmVsZWFzZShwYWdlKSBhbmQgcHV0X3BhZ2UocGFnZSkgaGF2ZSBiZWVuIGFsaWFzZXMKLWZvciBfX2ZyZWVfcGFnZShwYWdlKS4gU28gdXNpbmcgcHV0X3BhZ2UoKSBpbnN0ZWFkIG9mCi1wYWdlX2NhY2hlX3JlbGVhc2UocGFnZSkgd2lsbCBwcm9kdWNlIGlkZW50aWNhbCBjb2RlIGZvciBhbnl0aGluZyBhZnRlcgotMi40LjAuCi0KLVsxXSBodHRwczovL2xrbWwub3JnL2xrbWwvMjAxNi8yLzEwLzU1NQotWzJdIGh0dHBzOi8vd3d3LnNwaW5pY3MubmV0L2xpc3RzL2xpbnV4LWZzZGV2ZWwvbXNnOTU5MjMuaHRtbAotWzNdIGh0dHBzOi8vd3d3LnNwaW5pY3MubmV0L2xpc3RzL2xpbnV4LWZzZGV2ZWwvbXNnOTU5MjIuaHRtbAotLS0tCi0gemMuYyB8IDkgKysrKysrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbZnJvbSBtYXN0ZXIgZm9yIDQuOCBrZXJuZWxzXQotCi1JbmRleDogY3J5cHRvZGV2LWxpbnV4LTEuOC96Yy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gY3J5cHRvZGV2LWxpbnV4LTEuOC5vcmlnL3pjLmMKLSsrKyBjcnlwdG9kZXYtbGludXgtMS44L3pjLmMKLUBAIC01OSw3ICs1OSwxMiBAQCBpbnQgX19nZXRfdXNlcmJ1Zih1aW50OF90IF9fdXNlciAqYWRkciwKLSAJfQotIAotIAlkb3duX3JlYWQoJm1tLT5tbWFwX3NlbSk7Ci0tCXJldCA9IGdldF91c2VyX3BhZ2VzKHRhc2ssIG1tLAotKyNpZiAoTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDQsIDYsIDApKQotKwlyZXQgPSBnZXRfdXNlcl9wYWdlc19yZW1vdGUoCi0rI2Vsc2UKLSsJcmV0ID0gZ2V0X3VzZXJfcGFnZXMoCi0rI2VuZGlmCi0rCQkJdGFzaywgbW0sCi0gCQkJKHVuc2lnbmVkIGxvbmcpYWRkciwgcGdjb3VudCwgd3JpdGUsIDAsIHBnLCBOVUxMKTsKLSAJdXBfcmVhZCgmbW0tPm1tYXBfc2VtKTsKLSAJaWYgKHJldCAhPSBwZ2NvdW50KQotQEAgLTExOSw3ICsxMjQsNyBAQCB2b2lkIHJlbGVhc2VfdXNlcl9wYWdlcyhzdHJ1Y3QgY3Nlc3Npb24KLSAJCWVsc2UKLSAJCQlzZXMtPnJlYWRvbmx5X3BhZ2VzLS07Ci0gCi0tCQlwYWdlX2NhY2hlX3JlbGVhc2Uoc2VzLT5wYWdlc1tpXSk7Ci0rCQlwdXRfcGFnZShzZXMtPnBhZ2VzW2ldKTsKLSAJfQotIAlzZXMtPnVzZWRfcGFnZXMgPSAwOwotIH0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9maWxlcy9jYjE4NmY2ODI2NzkzODNlOGI1ODA2MjQwOTI3OTAzNzMwY2U4NWQ5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2ZpbGVzL2NiMTg2ZjY4MjY3OTM4M2U4YjU4MDYyNDA5Mjc5MDM3MzBjZTg1ZDkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViMGVhYjYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2ZpbGVzL2NiMTg2ZjY4MjY3OTM4M2U4YjU4MDYyNDA5Mjc5MDM3MzBjZTg1ZDkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNzkgKzAsMCBAQAotRnJvbSBjYjE4NmY2ODI2NzkzODNlOGI1ODA2MjQwOTI3OTAzNzMwY2U4NWQ5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWljaGFlbCBXZWlzZXIgPG1pY2hhZWwud2Vpc2VyQGdteC5kZT4KLURhdGU6IEZyaSwgNSBBdWcgMjAxNiAxNzoyNjoyNyArMDIwMAotU3ViamVjdDogW1BBVENIXSBTdXBwb3J0IHNrY2lwaGVyIGluIGFkZGl0aW9uIHRvIGFibGtjaXBoZXIgQVBJCi0KLVRoZSBhYmxrY2lwaGVyIEFQSSBpcyBiZWluZyBwaGFzZWQgb3V0WzFdLiBUaGUgdW5pZmllZCBza2NpcGhlciBBUEkKLXNlZW1zIHRvIGhhdmUgbWFkZSBpdHMgZW50cnkgd2l0aCA0LjMuWzMsIDRdIEJ5IHdoYXQgY2FuIGJlIHNlZW4gZnJvbQotbWlncmF0aW9uIHBhdGNoZXNbMS5mZi5dLCBpdCdzIGEgZHJvcC1pbiByZXBsYWNlbWVudC4KLQotQWxzbywgZGVhbGxvY2F0b3JzIHN1Y2ggYXMgY3J5cHRvX2ZyZWVfc2tjaXBoZXIoKSBhcmUgTlVMTC1zYWZlIG5vd1syXS4KLQotQWRkIGEgbmV3IGhlYWRlciBjaXBoZXJhcGkuaCB0byBhaWQgbWlncmF0aW9uIGZyb20gYWJsa2NpcGhlciB0byBza2NpcGhlciBhbmQKLXJldGFpbiBzdXBwb3J0IGZvciBvbGQga2VybmVscy4gTWFrZSBpdCBkZWNpZGUgd2hpY2ggQVBJIHRvIHVzZSBhbmQgcHJvdmlkZQotYXBwcm9wcmlhdGUgZnVuY3Rpb24gY2FsbHMgYW5kIHR5cGUgZGVmaW5pdGlvbnMuIFNpbmNlIHRoZSBhYmxrY2lwaGVyIGFuZAotc2tjaXBoZXIgQVBJcyBhcmUgc28gc2ltaWxhciwgdGhvc2UgYXJlIG1haW5seSBkZWZpbmVzIGZvciBjb3JyZXNwb25kaW5nCi1wc2V1ZG8tZnVuY3Rpb25zIGluIG5hbWVzcGFjZSBjcnlwdG9kZXZfIGRlcml2ZWQgZGlyZWN0bHkgZnJvbSB0aGVpciBBUEkKLWNvdW50ZXJwYXJ0cy4KLQotQ29tcGlsZXMgYW5kIHdvcmtzIChpLmUuIGNoZWNrcyBwYXNzKSB3aXRoIERlYmlhbiB0ZXN0aW5nIDQuNi40IGtlcm5lbAotYXMgd2VsbCBhcyA0LjgtcmMyKyBMaW51cyBnaXQgdHJlZSBhcyBvZiB0b2RheS4gKEJvdGggcmVxdWlyZSBhIGZpeCBmb3IKLWNoYW5nZWQgcGFnZSBhY2Nlc3MgQVBJWzVdLikKLQotWzFdIGh0dHBzOi8vd3d3LnNwaW5pY3MubmV0L2xpc3RzL2xpbnV4LWNyeXB0by9tc2cxODEzMy5odG1sCi1bMl0gaHR0cHM6Ly93d3cuc3Bpbmljcy5uZXQvbGlzdHMvbGludXgtY3J5cHRvL21zZzE4MTU0Lmh0bWwsIGxpbmUgMTIwCi1bM10gaHR0cHM6Ly93d3cuc3Bpbmljcy5uZXQvbGlzdHMvbGludXgtY3J5cHRvL21zZzE2MzczLmh0bWwKLVs0XSBodHRwczovL3d3dy5zcGluaWNzLm5ldC9saXN0cy9saW51eC1jcnlwdG8vbXNnMTYyOTQuaHRtbAotWzVdIGh0dHBzOi8vZ2l0aHViLmNvbS9jcnlwdG9kZXYtbGludXgvY3J5cHRvZGV2LWxpbnV4L3B1bGwvMTQKLS0tLQotIGNpcGhlcmFwaS5oIHwgNjAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gY3J5cHRsaWIuYyAgfCA0MCArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gY3J5cHRsaWIuaCAgfCAgNiArKysrLS0KLSBpb2N0bC5jICAgICB8ICA0ICsrLS0KLSA0IGZpbGVzIGNoYW5nZWQsIDg0IGluc2VydGlvbnMoKyksIDI2IGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBjaXBoZXJhcGkuaAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtmcm9tIG1hc3RlciBmb3IgNC44IGtlcm5lbHNdCi0KLUluZGV4OiBjcnlwdG9kZXYtbGludXgtMS44L2NpcGhlcmFwaS5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCi0rKysgY3J5cHRvZGV2LWxpbnV4LTEuOC9jaXBoZXJhcGkuaAotQEAgLTAsMCArMSw2MCBAQAotKyNpZm5kZWYgQ0lQSEVSQVBJX0gKLSsjIGRlZmluZSBDSVBIRVJBUElfSAotKwotKyNpbmNsdWRlIDxsaW51eC92ZXJzaW9uLmg+Ci0rCi0rI2lmIChMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTig0LCA4LCAwKSkKLSsjIGluY2x1ZGUgPGxpbnV4L2NyeXB0by5oPgotKwotK3R5cGVkZWYgc3RydWN0IGFibGtjaXBoZXJfYWxnIGNyeXB0b2Rldl9ibGtjaXBoZXJfYWxnX3Q7Ci0rdHlwZWRlZiBzdHJ1Y3QgY3J5cHRvX2FibGtjaXBoZXIgY3J5cHRvZGV2X2NyeXB0b19ibGtjaXBoZXJfdDsKLSt0eXBlZGVmIHN0cnVjdCBhYmxrY2lwaGVyX3JlcXVlc3QgY3J5cHRvZGV2X2Jsa2NpcGhlcl9yZXF1ZXN0X3Q7Ci0rCi0rIyBkZWZpbmUgY3J5cHRvZGV2X2NyeXB0b19hbGxvY19ibGtjaXBoZXIgY3J5cHRvX2FsbG9jX2FibGtjaXBoZXIKLSsjIGRlZmluZSBjcnlwdG9kZXZfY3J5cHRvX2Jsa2NpcGhlcl9hbGcgY3J5cHRvX2FibGtjaXBoZXJfYWxnCi0rIyBkZWZpbmUgY3J5cHRvZGV2X2NyeXB0b19ibGtjaXBoZXJfYmxvY2tzaXplIGNyeXB0b19hYmxrY2lwaGVyX2Jsb2Nrc2l6ZQotKyMgZGVmaW5lIGNyeXB0b2Rldl9jcnlwdG9fYmxrY2lwaGVyX2l2c2l6ZSBjcnlwdG9fYWJsa2NpcGhlcl9pdnNpemUKLSsjIGRlZmluZSBjcnlwdG9kZXZfY3J5cHRvX2Jsa2NpcGhlcl9hbGlnbm1hc2sgY3J5cHRvX2FibGtjaXBoZXJfYWxpZ25tYXNrCi0rIyBkZWZpbmUgY3J5cHRvZGV2X2NyeXB0b19ibGtjaXBoZXJfc2V0a2V5IGNyeXB0b19hYmxrY2lwaGVyX3NldGtleQotKwotK3N0YXRpYyBpbmxpbmUgdm9pZCBjcnlwdG9kZXZfY3J5cHRvX2ZyZWVfYmxrY2lwaGVyKGNyeXB0b2Rldl9jcnlwdG9fYmxrY2lwaGVyX3QgKmMpIHsKLSsJaWYgKGMpCi0rCQljcnlwdG9fZnJlZV9hYmxrY2lwaGVyKGMpOwotK30KLSsKLSsjIGRlZmluZSBjcnlwdG9kZXZfYmxrY2lwaGVyX3JlcXVlc3RfYWxsb2MgYWJsa2NpcGhlcl9yZXF1ZXN0X2FsbG9jCi0rIyBkZWZpbmUgY3J5cHRvZGV2X2Jsa2NpcGhlcl9yZXF1ZXN0X3NldF9jYWxsYmFjayBhYmxrY2lwaGVyX3JlcXVlc3Rfc2V0X2NhbGxiYWNrCi0rCi0rc3RhdGljIGlubGluZSB2b2lkIGNyeXB0b2Rldl9ibGtjaXBoZXJfcmVxdWVzdF9mcmVlKGNyeXB0b2Rldl9ibGtjaXBoZXJfcmVxdWVzdF90ICpyKSB7Ci0rCWlmIChyKQotKwkJYWJsa2NpcGhlcl9yZXF1ZXN0X2ZyZWUocik7Ci0rfQotKwotKyMgZGVmaW5lIGNyeXB0b2Rldl9ibGtjaXBoZXJfcmVxdWVzdF9zZXRfY3J5cHQgYWJsa2NpcGhlcl9yZXF1ZXN0X3NldF9jcnlwdAotKyMgZGVmaW5lIGNyeXB0b2Rldl9jcnlwdG9fYmxrY2lwaGVyX2VuY3J5cHQgY3J5cHRvX2FibGtjaXBoZXJfZW5jcnlwdAotKyMgZGVmaW5lIGNyeXB0b2Rldl9jcnlwdG9fYmxrY2lwaGVyX2RlY3J5cHQgY3J5cHRvX2FibGtjaXBoZXJfZGVjcnlwdAotKyMgZGVmaW5lIGNyeXB0b2Rldl9jcnlwdG9fYmxrY2lwaGVyX3RmbSBjcnlwdG9fYWJsa2NpcGhlcl90Zm0KLSsjZWxzZQotKyNpbmNsdWRlIDxjcnlwdG8vc2tjaXBoZXIuaD4KLSsKLSt0eXBlZGVmIHN0cnVjdCBza2NpcGhlcl9hbGcgY3J5cHRvZGV2X2Jsa2NpcGhlcl9hbGdfdDsKLSt0eXBlZGVmIHN0cnVjdCBjcnlwdG9fc2tjaXBoZXIgY3J5cHRvZGV2X2NyeXB0b19ibGtjaXBoZXJfdDsKLSt0eXBlZGVmIHN0cnVjdCBza2NpcGhlcl9yZXF1ZXN0IGNyeXB0b2Rldl9ibGtjaXBoZXJfcmVxdWVzdF90OwotKwotKyMgZGVmaW5lIGNyeXB0b2Rldl9jcnlwdG9fYWxsb2NfYmxrY2lwaGVyIGNyeXB0b19hbGxvY19za2NpcGhlcgotKyMgZGVmaW5lIGNyeXB0b2Rldl9jcnlwdG9fYmxrY2lwaGVyX2FsZyBjcnlwdG9fc2tjaXBoZXJfYWxnCi0rIyBkZWZpbmUgY3J5cHRvZGV2X2NyeXB0b19ibGtjaXBoZXJfYmxvY2tzaXplIGNyeXB0b19za2NpcGhlcl9ibG9ja3NpemUKLSsjIGRlZmluZSBjcnlwdG9kZXZfY3J5cHRvX2Jsa2NpcGhlcl9pdnNpemUgY3J5cHRvX3NrY2lwaGVyX2l2c2l6ZQotKyMgZGVmaW5lIGNyeXB0b2Rldl9jcnlwdG9fYmxrY2lwaGVyX2FsaWdubWFzayBjcnlwdG9fc2tjaXBoZXJfYWxpZ25tYXNrCi0rIyBkZWZpbmUgY3J5cHRvZGV2X2NyeXB0b19ibGtjaXBoZXJfc2V0a2V5IGNyeXB0b19za2NpcGhlcl9zZXRrZXkKLSsjIGRlZmluZSBjcnlwdG9kZXZfY3J5cHRvX2ZyZWVfYmxrY2lwaGVyIGNyeXB0b19mcmVlX3NrY2lwaGVyCi0rIyBkZWZpbmUgY3J5cHRvZGV2X2Jsa2NpcGhlcl9yZXF1ZXN0X2FsbG9jIHNrY2lwaGVyX3JlcXVlc3RfYWxsb2MKLSsjIGRlZmluZSBjcnlwdG9kZXZfYmxrY2lwaGVyX3JlcXVlc3Rfc2V0X2NhbGxiYWNrIHNrY2lwaGVyX3JlcXVlc3Rfc2V0X2NhbGxiYWNrCi0rIyBkZWZpbmUgY3J5cHRvZGV2X2Jsa2NpcGhlcl9yZXF1ZXN0X2ZyZWUgc2tjaXBoZXJfcmVxdWVzdF9mcmVlCi0rIyBkZWZpbmUgY3J5cHRvZGV2X2Jsa2NpcGhlcl9yZXF1ZXN0X3NldF9jcnlwdCBza2NpcGhlcl9yZXF1ZXN0X3NldF9jcnlwdAotKyMgZGVmaW5lIGNyeXB0b2Rldl9jcnlwdG9fYmxrY2lwaGVyX2VuY3J5cHQgY3J5cHRvX3NrY2lwaGVyX2VuY3J5cHQKLSsjIGRlZmluZSBjcnlwdG9kZXZfY3J5cHRvX2Jsa2NpcGhlcl9kZWNyeXB0IGNyeXB0b19za2NpcGhlcl9kZWNyeXB0Ci0rIyBkZWZpbmUgY3J5cHRvZGV2X2NyeXB0b19ibGtjaXBoZXJfdGZtIGNyeXB0b19za2NpcGhlcl90Zm0KLSsjZW5kaWYKLSsKLSsjZW5kaWYKLUluZGV4OiBjcnlwdG9kZXYtbGludXgtMS44L2NyeXB0bGliLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBjcnlwdG9kZXYtbGludXgtMS44Lm9yaWcvY3J5cHRsaWIuYwotKysrIGNyeXB0b2Rldi1saW51eC0xLjgvY3J5cHRsaWIuYwotQEAgLTIzLDcgKzIzLDYgQEAKLSAgKiA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxLCBVU0EuCi0gICovCi0gCi0tI2luY2x1ZGUgPGxpbnV4L2NyeXB0by5oPgotICNpbmNsdWRlIDxsaW51eC9tbS5oPgotICNpbmNsdWRlIDxsaW51eC9oaWdobWVtLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L2lvY3RsLmg+Ci1AQCAtMzcsNiArMzYsNyBAQAotICNpbmNsdWRlIDxsaW51eC9ydG5ldGxpbmsuaD4KLSAjaW5jbHVkZSA8Y3J5cHRvL2F1dGhlbmMuaD4KLSAjaW5jbHVkZSAiY3J5cHRvZGV2X2ludC5oIgotKyNpbmNsdWRlICJjaXBoZXJhcGkuaCIKLSAKLSAKLSBzdHJ1Y3QgY3J5cHRvZGV2X3Jlc3VsdCB7Ci1AQCAtMTMzLDE1ICsxMzMsMTUgQEAgaW50IGNyeXB0b2Rldl9jaXBoZXJfaW5pdChzdHJ1Y3QgY2lwaGVyXwotIAlpbnQgcmV0OwotIAotIAlpZiAoYWVhZCA9PSAwKSB7Ci0tCQlzdHJ1Y3QgYWJsa2NpcGhlcl9hbGcgKmFsZzsKLSsJCWNyeXB0b2Rldl9ibGtjaXBoZXJfYWxnX3QgKmFsZzsKLSAKLS0JCW91dC0+YXN5bmMucyA9IGNyeXB0b19hbGxvY19hYmxrY2lwaGVyKGFsZ19uYW1lLCAwLCAwKTsKLSsJCW91dC0+YXN5bmMucyA9IGNyeXB0b2Rldl9jcnlwdG9fYWxsb2NfYmxrY2lwaGVyKGFsZ19uYW1lLCAwLCAwKTsKLSAJCWlmICh1bmxpa2VseShJU19FUlIob3V0LT5hc3luYy5zKSkpIHsKLSAJCQlkZGVidWcoMSwgIkZhaWxlZCB0byBsb2FkIGNpcGhlciAlcyIsIGFsZ19uYW1lKTsKLSAJCQkJcmV0dXJuIC1FSU5WQUw7Ci0gCQl9Ci0gCi0tCQlhbGcgPSBjcnlwdG9fYWJsa2NpcGhlcl9hbGcob3V0LT5hc3luYy5zKTsKLSsJCWFsZyA9IGNyeXB0b2Rldl9jcnlwdG9fYmxrY2lwaGVyX2FsZyhvdXQtPmFzeW5jLnMpOwotIAkJaWYgKGFsZyAhPSBOVUxMKSB7Ci0gCQkJLyogV2FzIGNvcnJlY3Qga2V5IGxlbmd0aCBzdXBwbGllZD8gKi8KLSAJCQlpZiAoYWxnLT5tYXhfa2V5c2l6ZSA+IDAgJiYKLUBAIC0xNTQsMTEgKzE1NCwxMSBAQCBpbnQgY3J5cHRvZGV2X2NpcGhlcl9pbml0KHN0cnVjdCBjaXBoZXJfCi0gCQkJfQotIAkJfQotIAotLQkJb3V0LT5ibG9ja3NpemUgPSBjcnlwdG9fYWJsa2NpcGhlcl9ibG9ja3NpemUob3V0LT5hc3luYy5zKTsKLS0JCW91dC0+aXZzaXplID0gY3J5cHRvX2FibGtjaXBoZXJfaXZzaXplKG91dC0+YXN5bmMucyk7Ci0tCQlvdXQtPmFsaWdubWFzayA9IGNyeXB0b19hYmxrY2lwaGVyX2FsaWdubWFzayhvdXQtPmFzeW5jLnMpOwotKwkJb3V0LT5ibG9ja3NpemUgPSBjcnlwdG9kZXZfY3J5cHRvX2Jsa2NpcGhlcl9ibG9ja3NpemUob3V0LT5hc3luYy5zKTsKLSsJCW91dC0+aXZzaXplID0gY3J5cHRvZGV2X2NyeXB0b19ibGtjaXBoZXJfaXZzaXplKG91dC0+YXN5bmMucyk7Ci0rCQlvdXQtPmFsaWdubWFzayA9IGNyeXB0b2Rldl9jcnlwdG9fYmxrY2lwaGVyX2FsaWdubWFzayhvdXQtPmFzeW5jLnMpOwotIAotLQkJcmV0ID0gY3J5cHRvX2FibGtjaXBoZXJfc2V0a2V5KG91dC0+YXN5bmMucywga2V5cCwga2V5bGVuKTsKLSsJCXJldCA9IGNyeXB0b2Rldl9jcnlwdG9fYmxrY2lwaGVyX3NldGtleShvdXQtPmFzeW5jLnMsIGtleXAsIGtleWxlbik7Ci0gCX0gZWxzZSB7Ci0gCQlvdXQtPmFzeW5jLmFzID0gY3J5cHRvX2FsbG9jX2FlYWQoYWxnX25hbWUsIDAsIDApOwotIAkJaWYgKHVubGlrZWx5KElTX0VSUihvdXQtPmFzeW5jLmFzKSkpIHsKLUBAIC0xOTEsMTQgKzE5MSwxNCBAQCBpbnQgY3J5cHRvZGV2X2NpcGhlcl9pbml0KHN0cnVjdCBjaXBoZXJfCi0gCWluaXRfY29tcGxldGlvbigmb3V0LT5hc3luYy5yZXN1bHQtPmNvbXBsZXRpb24pOwotIAotIAlpZiAoYWVhZCA9PSAwKSB7Ci0tCQlvdXQtPmFzeW5jLnJlcXVlc3QgPSBhYmxrY2lwaGVyX3JlcXVlc3RfYWxsb2Mob3V0LT5hc3luYy5zLCBHRlBfS0VSTkVMKTsKLSsJCW91dC0+YXN5bmMucmVxdWVzdCA9IGNyeXB0b2Rldl9ibGtjaXBoZXJfcmVxdWVzdF9hbGxvYyhvdXQtPmFzeW5jLnMsIEdGUF9LRVJORUwpOwotIAkJaWYgKHVubGlrZWx5KCFvdXQtPmFzeW5jLnJlcXVlc3QpKSB7Ci0gCQkJZGVycigxLCAiZXJyb3IgYWxsb2NhdGluZyBhc3luYyBjcnlwdG8gcmVxdWVzdCIpOwotIAkJCXJldCA9IC1FTk9NRU07Ci0gCQkJZ290byBlcnJvcjsKLSAJCX0KLSAKLS0JCWFibGtjaXBoZXJfcmVxdWVzdF9zZXRfY2FsbGJhY2sob3V0LT5hc3luYy5yZXF1ZXN0LAotKwkJY3J5cHRvZGV2X2Jsa2NpcGhlcl9yZXF1ZXN0X3NldF9jYWxsYmFjayhvdXQtPmFzeW5jLnJlcXVlc3QsCi0gCQkJCQlDUllQVE9fVEZNX1JFUV9NQVlfQkFDS0xPRywKLSAJCQkJCWNyeXB0b2Rldl9jb21wbGV0ZSwgb3V0LT5hc3luYy5yZXN1bHQpOwotIAl9IGVsc2UgewotQEAgLTIxOCwxMCArMjE4LDggQEAgaW50IGNyeXB0b2Rldl9jaXBoZXJfaW5pdChzdHJ1Y3QgY2lwaGVyXwotIAlyZXR1cm4gMDsKLSBlcnJvcjoKLSAJaWYgKGFlYWQgPT0gMCkgewotLQkJaWYgKG91dC0+YXN5bmMucmVxdWVzdCkKLS0JCQlhYmxrY2lwaGVyX3JlcXVlc3RfZnJlZShvdXQtPmFzeW5jLnJlcXVlc3QpOwotLQkJaWYgKG91dC0+YXN5bmMucykKLS0JCQljcnlwdG9fZnJlZV9hYmxrY2lwaGVyKG91dC0+YXN5bmMucyk7Ci0rCQljcnlwdG9kZXZfYmxrY2lwaGVyX3JlcXVlc3RfZnJlZShvdXQtPmFzeW5jLnJlcXVlc3QpOwotKwkJY3J5cHRvZGV2X2NyeXB0b19mcmVlX2Jsa2NpcGhlcihvdXQtPmFzeW5jLnMpOwotIAl9IGVsc2UgewotIAkJaWYgKG91dC0+YXN5bmMuYXJlcXVlc3QpCi0gCQkJYWVhZF9yZXF1ZXN0X2ZyZWUob3V0LT5hc3luYy5hcmVxdWVzdCk7Ci1AQCAtMjM3LDEwICsyMzUsOCBAQCB2b2lkIGNyeXB0b2Rldl9jaXBoZXJfZGVpbml0KHN0cnVjdCBjaXBoCi0gewotIAlpZiAoY2RhdGEtPmluaXQpIHsKLSAJCWlmIChjZGF0YS0+YWVhZCA9PSAwKSB7Ci0tCQkJaWYgKGNkYXRhLT5hc3luYy5yZXF1ZXN0KQotLQkJCQlhYmxrY2lwaGVyX3JlcXVlc3RfZnJlZShjZGF0YS0+YXN5bmMucmVxdWVzdCk7Ci0tCQkJaWYgKGNkYXRhLT5hc3luYy5zKQotLQkJCQljcnlwdG9fZnJlZV9hYmxrY2lwaGVyKGNkYXRhLT5hc3luYy5zKTsKLSsJCQljcnlwdG9kZXZfYmxrY2lwaGVyX3JlcXVlc3RfZnJlZShjZGF0YS0+YXN5bmMucmVxdWVzdCk7Ci0rCQkJY3J5cHRvZGV2X2NyeXB0b19mcmVlX2Jsa2NpcGhlcihjZGF0YS0+YXN5bmMucyk7Ci0gCQl9IGVsc2UgewotIAkJCWlmIChjZGF0YS0+YXN5bmMuYXJlcXVlc3QpCi0gCQkJCWFlYWRfcmVxdWVzdF9mcmVlKGNkYXRhLT5hc3luYy5hcmVxdWVzdCk7Ci1AQCAtMjg5LDEwICsyODUsMTAgQEAgc3NpemVfdCBjcnlwdG9kZXZfY2lwaGVyX2VuY3J5cHQoc3RydWN0Ci0gCXJlaW5pdF9jb21wbGV0aW9uKCZjZGF0YS0+YXN5bmMucmVzdWx0LT5jb21wbGV0aW9uKTsKLSAKLSAJaWYgKGNkYXRhLT5hZWFkID09IDApIHsKLS0JCWFibGtjaXBoZXJfcmVxdWVzdF9zZXRfY3J5cHQoY2RhdGEtPmFzeW5jLnJlcXVlc3QsCi0rCQljcnlwdG9kZXZfYmxrY2lwaGVyX3JlcXVlc3Rfc2V0X2NyeXB0KGNkYXRhLT5hc3luYy5yZXF1ZXN0LAotIAkJCShzdHJ1Y3Qgc2NhdHRlcmxpc3QgKilzcmMsIGRzdCwKLSAJCQlsZW4sIGNkYXRhLT5hc3luYy5pdik7Ci0tCQlyZXQgPSBjcnlwdG9fYWJsa2NpcGhlcl9lbmNyeXB0KGNkYXRhLT5hc3luYy5yZXF1ZXN0KTsKLSsJCXJldCA9IGNyeXB0b2Rldl9jcnlwdG9fYmxrY2lwaGVyX2VuY3J5cHQoY2RhdGEtPmFzeW5jLnJlcXVlc3QpOwotIAl9IGVsc2UgewotIAkJYWVhZF9yZXF1ZXN0X3NldF9jcnlwdChjZGF0YS0+YXN5bmMuYXJlcXVlc3QsCi0gCQkJKHN0cnVjdCBzY2F0dGVybGlzdCAqKXNyYywgZHN0LAotQEAgLTMxMSwxMCArMzA3LDEwIEBAIHNzaXplX3QgY3J5cHRvZGV2X2NpcGhlcl9kZWNyeXB0KHN0cnVjdAotIAotIAlyZWluaXRfY29tcGxldGlvbigmY2RhdGEtPmFzeW5jLnJlc3VsdC0+Y29tcGxldGlvbik7Ci0gCWlmIChjZGF0YS0+YWVhZCA9PSAwKSB7Ci0tCQlhYmxrY2lwaGVyX3JlcXVlc3Rfc2V0X2NyeXB0KGNkYXRhLT5hc3luYy5yZXF1ZXN0LAotKwkJY3J5cHRvZGV2X2Jsa2NpcGhlcl9yZXF1ZXN0X3NldF9jcnlwdChjZGF0YS0+YXN5bmMucmVxdWVzdCwKLSAJCQkoc3RydWN0IHNjYXR0ZXJsaXN0ICopc3JjLCBkc3QsCi0gCQkJbGVuLCBjZGF0YS0+YXN5bmMuaXYpOwotLQkJcmV0ID0gY3J5cHRvX2FibGtjaXBoZXJfZGVjcnlwdChjZGF0YS0+YXN5bmMucmVxdWVzdCk7Ci0rCQlyZXQgPSBjcnlwdG9kZXZfY3J5cHRvX2Jsa2NpcGhlcl9kZWNyeXB0KGNkYXRhLT5hc3luYy5yZXF1ZXN0KTsKLSAJfSBlbHNlIHsKLSAJCWFlYWRfcmVxdWVzdF9zZXRfY3J5cHQoY2RhdGEtPmFzeW5jLmFyZXF1ZXN0LAotIAkJCShzdHJ1Y3Qgc2NhdHRlcmxpc3QgKilzcmMsIGRzdCwKLUluZGV4OiBjcnlwdG9kZXYtbGludXgtMS44L2NyeXB0bGliLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBjcnlwdG9kZXYtbGludXgtMS44Lm9yaWcvY3J5cHRsaWIuaAotKysrIGNyeXB0b2Rldi1saW51eC0xLjgvY3J5cHRsaWIuaAotQEAgLTMsNiArMyw4IEBACi0gCi0gI2luY2x1ZGUgPGxpbnV4L3ZlcnNpb24uaD4KLSAKLSsjaW5jbHVkZSAiY2lwaGVyYXBpLmgiCi0rCi0gc3RydWN0IGNpcGhlcl9kYXRhIHsKLSAJaW50IGluaXQ7IC8qIDAgdW5pbml0aWFsaXplZCAqLwotIAlpbnQgYmxvY2tzaXplOwotQEAgLTEyLDggKzE0LDggQEAgc3RydWN0IGNpcGhlcl9kYXRhIHsKLSAJaW50IGFsaWdubWFzazsKLSAJc3RydWN0IHsKLSAJCS8qIGJsb2NrIGNpcGhlcnMgKi8KLS0JCXN0cnVjdCBjcnlwdG9fYWJsa2NpcGhlciAqczsKLS0JCXN0cnVjdCBhYmxrY2lwaGVyX3JlcXVlc3QgKnJlcXVlc3Q7Ci0rCQljcnlwdG9kZXZfY3J5cHRvX2Jsa2NpcGhlcl90ICpzOwotKwkJY3J5cHRvZGV2X2Jsa2NpcGhlcl9yZXF1ZXN0X3QgKnJlcXVlc3Q7Ci0gCi0gCQkvKiBBRUFEIGNpcGhlcnMgKi8KLSAJCXN0cnVjdCBjcnlwdG9fYWVhZCAqYXM7Ci1JbmRleDogY3J5cHRvZGV2LWxpbnV4LTEuOC9pb2N0bC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gY3J5cHRvZGV2LWxpbnV4LTEuOC5vcmlnL2lvY3RsLmMKLSsrKyBjcnlwdG9kZXYtbGludXgtMS44L2lvY3RsLmMKLUBAIC0zNCw3ICszNCw2IEBACi0gICovCi0gCi0gI2luY2x1ZGUgPGNyeXB0by9oYXNoLmg+Ci0tI2luY2x1ZGUgPGxpbnV4L2NyeXB0by5oPgotICNpbmNsdWRlIDxsaW51eC9tbS5oPgotICNpbmNsdWRlIDxsaW51eC9oaWdobWVtLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L2lvY3RsLmg+Ci1AQCAtNTMsNiArNTIsNyBAQAotICNpbmNsdWRlICJjcnlwdG9kZXZfaW50LmgiCi0gI2luY2x1ZGUgInpjLmgiCi0gI2luY2x1ZGUgInZlcnNpb24uaCIKLSsjaW5jbHVkZSAiY2lwaGVyYXBpLmgiCi0gCi0gTU9EVUxFX0FVVEhPUigiTmlrb3MgTWF2cm9naWFubm9wb3Vsb3MgPG5tYXZAZ251dGxzLm9yZz4iKTsKLSBNT0RVTEVfREVTQ1JJUFRJT04oIkNyeXB0b0RldiBkcml2ZXIiKTsKLUBAIC03NjUsNyArNzY1LDcgQEAgc3RhdGljIGludCBnZXRfc2Vzc2lvbl9pbmZvKHN0cnVjdCBmY3J5cAotIAotIAlpZiAoc2VzX3B0ci0+Y2RhdGEuaW5pdCkgewotIAkJaWYgKHNlc19wdHItPmNkYXRhLmFlYWQgPT0gMCkKLS0JCQl0Zm0gPSBjcnlwdG9fYWJsa2NpcGhlcl90Zm0oc2VzX3B0ci0+Y2RhdGEuYXN5bmMucyk7Ci0rCQkJdGZtID0gY3J5cHRvZGV2X2NyeXB0b19ibGtjaXBoZXJfdGZtKHNlc19wdHItPmNkYXRhLmFzeW5jLnMpOwotIAkJZWxzZQotIAkJCXRmbSA9IGNyeXB0b19hZWFkX3RmbShzZXNfcHRyLT5jZGF0YS5hc3luYy5hcyk7Ci0gCQl0Zm1faW5mb190b19hbGdfaW5mbygmc2lvcC0+Y2lwaGVyX2luZm8sIHRmbSk7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvZmlsZXMva2VybmVsLTQtMTAtY2hhbmdlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9maWxlcy9rZXJuZWwtNC0xMC1jaGFuZ2VzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5M2Q2MDhiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9maWxlcy9rZXJuZWwtNC0xMC1jaGFuZ2VzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotRnJvbSAyYjI5YmU4YWM0MTQxNGVkMTljYjRmNWQ1NjI2ZDliZDBkN2IxMWE4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ3Jpc3RpYW4gU3RvaWNhIDxjcmlzdGlhbi5zdG9pY2FAbnhwLmNvbT4KLURhdGU6IFdlZCwgOCBGZWIgMjAxNyAxMjoxMTowNCArMDIwMAotU3ViamVjdDogW1BBVENIXSBhZGp1c3QgdG8gQVBJIGNoYW5nZXMgaW4ga2VybmVsID49NC4xMAotCi1UaGVyZSBhcmUgbWFueSBjaGFuZ2VzIHJlbGF0ZWQgdG8gZ2V0X3VzZXJfcGFnZXMgYW5kIHRoZSBjb2RlIGlzIHJld3JpdHRlbgotZm9yIGNsYXJpdHkuCi0KLVNpZ25lZC1vZmYtYnk6IENyaXN0aWFuIFN0b2ljYSA8Y3Jpc3RpYW4uc3RvaWNhQG54cC5jb20+Ci0tLS0KLSB6Yy5jIHwgMjggKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3pjLmMgYi96Yy5jCi1pbmRleCBlNzY2ZWUzLi4yZjRlYTk5IDEwMDY0NAotLS0tIGEvemMuYwotKysrIGIvemMuYwotQEAgLTU5LDE5ICs1OSwyNSBAQCBpbnQgX19nZXRfdXNlcmJ1Zih1aW50OF90IF9fdXNlciAqYWRkciwgdWludDMyX3QgbGVuLCBpbnQgd3JpdGUsCi0gCX0KLSAKLSAJZG93bl9yZWFkKCZtbS0+bW1hcF9zZW0pOwotLSNpZiAoTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDQsIDYsIDApKQotLQlyZXQgPSBnZXRfdXNlcl9wYWdlc19yZW1vdGUoCi0rI2lmIChMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTig0LCA2LCAwKSkKLSsJcmV0ID0gZ2V0X3VzZXJfcGFnZXModGFzaywgbW0sCi0rCQkJKHVuc2lnbmVkIGxvbmcpYWRkciwgcGdjb3VudCwgd3JpdGUsIDAsIHBnLCBOVUxMKTsKLSAjZWxzZQotLQlyZXQgPSBnZXRfdXNlcl9wYWdlcygKLS0jZW5kaWYKLS0JCQl0YXNrLCBtbSwKLS0JCQkodW5zaWduZWQgbG9uZylhZGRyLCBwZ2NvdW50LAotLSNpZiAoTElOVVhfVkVSU0lPTl9DT0RFID49IEtFUk5FTF9WRVJTSU9OKDQsIDksIDApKQotLQkJCXdyaXRlID8gRk9MTF9XUklURSA6IDAsCi0tI2Vsc2UKLS0JCQl3cml0ZSwgMCwKLS0jZW5kaWYKLSsjICBpZiAoTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oNCwgOSwgMCkpCi0rCXJldCA9IGdldF91c2VyX3BhZ2VzX3JlbW90ZSh0YXNrLCBtbSwKLSsJCQkodW5zaWduZWQgbG9uZylhZGRyLCBwZ2NvdW50LCB3cml0ZSwgMCwgcGcsIE5VTEwpOwotKyMgIGVsc2UKLSsjICAgIGlmIChMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTig0LCAxMCwgMCkpCi0rCXJldCA9IGdldF91c2VyX3BhZ2VzX3JlbW90ZSh0YXNrLCBtbSwKLSsJCQkodW5zaWduZWQgbG9uZylhZGRyLCBwZ2NvdW50LCB3cml0ZSA/IEZPTExfV1JJVEUgOiAwLAotIAkJCXBnLCBOVUxMKTsKLSsjICAgIGVsc2UKLSsJcmV0ID0gZ2V0X3VzZXJfcGFnZXNfcmVtb3RlKHRhc2ssIG1tLAotKwkJCSh1bnNpZ25lZCBsb25nKWFkZHIsIHBnY291bnQsIHdyaXRlID8gRk9MTF9XUklURSA6IDAsCi0rCQkJcGcsIE5VTEwsIE5VTEwpOwotKyMgICAgZW5kaWYKLSsjICBlbmRpZgotKyNlbmRpZgotIAl1cF9yZWFkKCZtbS0+bW1hcF9zZW0pOwotIAlpZiAocmV0ICE9IHBnY291bnQpCi0gCQlyZXR1cm4gLUVJTlZBTDsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvZHRjL2R0Yy5pbmMKaW5kZXggMGM0MDliMC4uZDc1OTk0NiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvZHRjL2R0Yy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvZHRjL2R0Yy5pbmMKQEAgLTEsNCArMSw1IEBACiBTVU1NQVJZID0gIkRldmljZSBUcmVlIENvbXBpbGVyIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9kZXZpY2V0cmVlLm9yZy8iCiBERVNDUklQVElPTiA9ICJUaGUgRGV2aWNlIFRyZWUgQ29tcGlsZXIgaXMgYSB0b29sIHVzZWQgdG8gbWFuaXB1bGF0ZSB0aGUgT3Blbi1GaXJtd2FyZS1saWtlIGRldmljZSB0cmVlIHVzZWQgYnkgUG93ZXJQQyBrZXJuZWxzLiIKIFNFQ1RJT04gPSAiYm9vdGxvYWRlciIKIExJQ0VOU0UgPSAiR1BMdjIgfCBCU0QiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9kdGMvZHRjXzEuNC4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvZHRjL2R0Y18xLjQuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2M3MmFkYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9kdGMvZHRjXzEuNC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotcmVxdWlyZSBkdGMuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0dQTDttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAotCQkgICAgZmlsZTovL2xpYmZkdC9saWJmZHQuaDtiZWdpbmxpbmU9MztlbmRsaW5lPTUyO21kNT1mYjM2MDk2MzE1MWY4ZWMyZDZjMDZiMDU1YmNiYjY4YyIKLQotU1JDUkVWID0gImVjMDJiMzRjMDViZTA0ZjI0OWZmYWFjYTRiNjY2ZjUyNDY4NzdkZWEiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGNfMS40LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9kdGMvZHRjXzEuNC40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhZGI3YmEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9kdGMvZHRjXzEuNC40LmJiCkBAIC0wLDAgKzEsMTAgQEAKK3JlcXVpcmUgZHRjLmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9HUEw7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKKwkJICAgIGZpbGU6Ly9saWJmZHQvbGliZmR0Lmg7YmVnaW5saW5lPTM7ZW5kbGluZT01MjttZDU9ZmIzNjA5NjMxNTFmOGVjMmQ2YzA2YjA1NWJjYmI2OGMiCisKK1NSQ1JFViA9ICI1NThjZDgxYmRkNDMyNzY5YjU5YmZmMDEyNDBjNDRmODJjZmIxYTlkIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXJuLXRvb2xzL2tlcm4tdG9vbHMtbmF0aXZlX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tlcm4tdG9vbHMva2Vybi10b29scy1uYXRpdmVfZ2l0LmJiCmluZGV4IDVlNjU0NjkuLjNhMzk5MmEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tlcm4tdG9vbHMva2Vybi10b29scy1uYXRpdmVfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tlcm4tdG9vbHMva2Vybi10b29scy1uYXRpdmVfZ2l0LmJiCkBAIC00LDcgKzQsNyBAQAogCiBERVBFTkRTID0gImdpdC1uYXRpdmUiCiAKLVNSQ1JFViA9ICJiZDc0NDdjZDYyNzRkNzY0YTEyOWRjZGMyNDZjZGJmZDhjNDdiOTkxIgorU1JDUkVWID0gImI0NmIxYzRmMDk3M2JmMWViMDljZjExOTFmNWY0ZTY5YmNkMDQ3NWQiCiBQUiA9ICJyMTIiCiBQViA9ICIwLjIrZ2l0JHtTUkNQVn0iCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLmluYwppbmRleCBiZGZlMDI0Li5jNjg5YmVjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMuaW5jCkBAIC0xMSw2ICsxMSw3IEBACiBTUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvdXRpbHMva2VybmVsL2tleGVjL2tleGVjLXRvb2xzLSR7UFZ9LnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly9rZHVtcCBcCiAgICAgICAgICAgIGZpbGU6Ly9rZHVtcC5jb25mIFwKKyAgICAgICAgICAgZmlsZTovL2tkdW1wLnNlcnZpY2UgXAogIgogCiBQUiA9ICJyMSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDEtRGlzYWJsZS1QSUUtZHVyaW5nLWxpbmsucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDAxLURpc2FibGUtUElFLWR1cmluZy1saW5rLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmMmY4NWUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDAxLURpc2FibGUtUElFLWR1cmluZy1saW5rLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gZWE3YmU2ZDcxYjg1ODgwZThlOGEyYzhhNGY0OWE2OTZjNWYzMWFlNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDEwIEp1biAyMDE3IDExOjE4OjQ5IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIERpc2FibGUgUElFIGR1cmluZyBsaW5rCisKK1dlIGhhdmUgZXhwbGNpdGx5IGRpc2FibGVkIFBJRSBkdXJpbmcgY29tcGlsZSBzbyB3ZQoranVzdCBuZWVkIHRvIG1hdGNoIGl0IHdpdGggbGlua2VyIGZsYWdzCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgcHVyZ2F0b3J5L01ha2VmaWxlIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvcHVyZ2F0b3J5L01ha2VmaWxlIGIvcHVyZ2F0b3J5L01ha2VmaWxlCitpbmRleCA1NjRiZGI3Li5hMDhlNDFmIDEwMDY0NAorLS0tIGEvcHVyZ2F0b3J5L01ha2VmaWxlCisrKysgYi9wdXJnYXRvcnkvTWFrZWZpbGUKK0BAIC01OSw3ICs1OSw3IEBAICQoUFVSR0FUT1JZKTogQ1BQRkxBR1M9JCgkKEFSQ0gpX1BVUkdBVE9SWV9FWFRSQV9DRkxBR1MpIFwKKyAJCQktSWluY2x1ZGUgXAorIAkJCS1JJChzaGVsbCAkKENDKSAtcHJpbnQtZmlsZS1uYW1lPWluY2x1ZGUpCisgJChQVVJHQVRPUlkpOiBMREZMQUdTPSQoJChBUkNIKV9QVVJHQVRPUllfRVhUUkFfQ0ZMQUdTKVwKKy0JCQktV2wsLS1uby11bmRlZmluZWQgLW5vc3RhcnRmaWxlcyAtbm9zdGRsaWIgXAorKwkJCS1XbCwtLW5vLXVuZGVmaW5lZCAtbm8tcGllIC1ub3N0YXJ0ZmlsZXMgLW5vc3RkbGliIFwKKyAJCQktbm9kZWZhdWx0bGlicyAtZSBwdXJnYXRvcnlfc3RhcnQgLVdsLC1yIFwKKyAJCQktV2wsLU1hcD0kKFBVUkdBVE9SWV9NQVApCisgCistLSAKKzIuMTMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy8wMDAxLWFybTY0LURpc2FibGUtUElDLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwMS1hcm02NC1EaXNhYmxlLVBJQy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NGU5NGQ3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwMS1hcm02NC1EaXNhYmxlLVBJQy5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9tIDNiYjczZTVlNTY0OWI0NTVlMTVkNWNhM2E3YWQxYTkwYzQ5NjA5NzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCAxMCBKdW4gMjAxNyAxMTo1NDozNiAtMDcwMAorU3ViamVjdDogW1BBVENIXSBhcm02NDogRGlzYWJsZSBQSUMKKworRml4Cit8IGNjMTogc29ycnksIHVuaW1wbGVtZW50ZWQ6IGNvZGUgbW9kZWwgJ2xhcmdlJyB3aXRoIC1mUElDCit8IG1ha2U6ICoqKiBbTWFrZWZpbGU6MTE4OiBwdXJnYXRvcnkvYXJjaC9hcm02NC9lbnRyeS5vXSBFcnJvciAxCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCisgcHVyZ2F0b3J5L2FyY2gvYXJtNjQvTWFrZWZpbGUgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL3B1cmdhdG9yeS9hcmNoL2FybTY0L01ha2VmaWxlIGIvcHVyZ2F0b3J5L2FyY2gvYXJtNjQvTWFrZWZpbGUKK2luZGV4IDYzNmFiZWEuLjgwMDY4Y2EgMTAwNjQ0CistLS0gYS9wdXJnYXRvcnkvYXJjaC9hcm02NC9NYWtlZmlsZQorKysrIGIvcHVyZ2F0b3J5L2FyY2gvYXJtNjQvTWFrZWZpbGUKK0BAIC0xLDYgKzEsNyBAQAorIAorIGFybTY0X1BVUkdBVE9SWV9FWFRSQV9DRkxBR1MgPSBcCisgCS1tY21vZGVsPWxhcmdlIFwKKysJLWZuby1QSUMgXAorIAktZm5vLXN0YWNrLXByb3RlY3RvciBcCisgCS1mbm8tYXN5bmNocm9ub3VzLXVud2luZC10YWJsZXMgXAorIAktV3VuZGVmIFwKKy0tIAorMi4xMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzL2tkdW1wLnNlcnZpY2UgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy9rZHVtcC5zZXJ2aWNlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlNjVhNDYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29scy9rZHVtcC5zZXJ2aWNlCkBAIC0wLDAgKzEsMTIgQEAKK1tVbml0XQorRGVzY3JpcHRpb249UmVib290IGFuZCBkdW1wIHZtY29yZSB2aWEga2V4ZWMKK0RlZmF1bHREZXBlbmRlbmNpZXM9bm8KKworW1NlcnZpY2VdCitUeXBlPW9uZXNob3QKK1JlbWFpbkFmdGVyRXhpdD15ZXMKK0V4ZWNTdGFydD1ATElCRVhFQ0RJUkAva2R1bXAtaGVscGVyIHN0YXJ0CitFeGVjU3RvcD1ATElCRVhFQ0RJUkAva2R1bXAtaGVscGVyIHN0b3AKKworW0luc3RhbGxdCitXYW50ZWRCeT1tdWx0aS11c2VyLnRhcmdldApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHNfMi4wLjE0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHNfMi4wLjE0LmJiCmluZGV4IDkwZDU5ODUuLjBmNjM5OGYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzXzIuMC4xNC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29sc18yLjAuMTQuYmIKQEAgLTE5LDMwICsxOSw0NyBAQAogICAgICAgICAgICAgZmlsZTovLzAwMDEteDg2LXg4Nl82NC1GaXgtZm9ybWF0LXdhcm5pbmctd2l0aC1kaWUucGF0Y2ggXAogICAgICAgICAgICAgZmlsZTovLzAwMDItcHBjLUZpeC1mb3JtYXQtd2FybmluZy13aXRoLWRpZS5wYXRjaCBcCiAgICAgICAgICAgICBmaWxlOi8va2V4ZWMteDMyLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLURpc2FibGUtUElFLWR1cmluZy1saW5rLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWFybTY0LURpc2FibGUtUElDLnBhdGNoIFwKICAgICAgICAgICIKIAogU1JDX1VSSVttZDVzdW1dID0gImIyYjJjNWU2YjI5ZDQ2N2Q2ZTk5ZDU4N2ZiNmI3Y2Y1IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImIzZTY5NTE5ZDJhY2NlZDI1Njg0M2IxZThmMWVjZmEwMGQ5YjU0ZmEwNzQ0OWVkNzhmMDViOTE5M2YyMzkzNzAiCiAKK1NFQ1VSSVRZX1BJRV9DRkxBR1NfcmVtb3ZlID0gIi1mUElFIC1waWUiCisKIFBBQ0tBR0VTID0rICJrZXhlYyBrZHVtcCB2bWNvcmUtZG1lc2ciCiAKIEFMTE9XX0VNUFRZXyR7UE59ID0gIjEiCiBSUkVDT01NRU5EU18ke1BOfSA9ICJrZXhlYyBrZHVtcCB2bWNvcmUtZG1lc2ciCiAKIEZJTEVTX2tleGVjID0gIiR7c2JpbmRpcn0va2V4ZWMiCi1GSUxFU19rZHVtcCA9ICIke3NiaW5kaXJ9L2tkdW1wICR7c3lzY29uZmRpcn0vaW5pdC5kL2tkdW1wIFwKLSAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzY29uZmlnL2tkdW1wLmNvbmYiCitGSUxFU19rZHVtcCA9ICIke3NiaW5kaXJ9L2tkdW1wIFwKKyAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzY29uZmlnL2tkdW1wLmNvbmYgXAorICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQva2R1bXAgXAorICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9rZHVtcC1oZWxwZXIgXAorICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9rZHVtcC5zZXJ2aWNlIFwKKyIKKwogRklMRVNfdm1jb3JlLWRtZXNnID0gIiR7c2JpbmRpcn0vdm1jb3JlLWRtZXNnIgogCi1pbmhlcml0IHVwZGF0ZS1yYy5kCitpbmhlcml0IHVwZGF0ZS1yYy5kIHN5c3RlbWQKIAogSU5JVFNDUklQVF9QQUNLQUdFUyA9ICJrZHVtcCIKIElOSVRTQ1JJUFRfTkFNRV9rZHVtcCA9ICJrZHVtcCIKIElOSVRTQ1JJUFRfUEFSQU1TX2tkdW1wID0gInN0YXJ0IDU2IDIgMyA0IDUgLiBzdG9wIDU2IDAgMSA2IC4iCiAKIGRvX2luc3RhbGxfYXBwZW5kICgpIHsKLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLSAgICAgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0va2R1bXAgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2tkdW1wCiAgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnCiAgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2tkdW1wLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnCisKKyAgICAgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgICAgICAgICAgaW5zdGFsbCAtRCAtbSAwNzU1ICR7V09SS0RJUn0va2R1bXAgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2tkdW1wCisgICAgICAgIGZpCisKKyAgICAgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgICAgICAgICBpbnN0YWxsIC1EIC1tIDA3NTUgJHtXT1JLRElSfS9rZHVtcCAke0R9JHtsaWJleGVjZGlyfS9rZHVtcC1oZWxwZXIKKyAgICAgICAgICAgICAgICBpbnN0YWxsIC1EIC1tIDA2NDQgJHtXT1JLRElSfS9rZHVtcC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2tkdW1wLnNlcnZpY2UKKyAgICAgICAgICAgICAgICBzZWQgLWkgLWUgJ3MsQExJQkVYRUNESVJALCR7bGliZXhlY2Rpcn0sZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0va2R1bXAuc2VydmljZQorICAgICAgICBmaQogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva21vZC9rbW9kLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2ttb2Qva21vZC5pbmMKaW5kZXggYmE4MGZjNS4uN2ZiMTBiNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva21vZC9rbW9kLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rbW9kL2ttb2QuaW5jCkBAIC0xNCwxNSArMTQsMTQgQEAKICAgICAgICAgICAgICAgICAgICAiCiBpbmhlcml0IGF1dG90b29scyBndGstZG9jIHBrZ2NvbmZpZyBtYW5wYWdlcwogCi1TUkNSRVYgPSAiNjVhODg1ZGY1ZjZmMTUyMjJiNDRmZDY5NWM1ZWFjYTE3ZTgzN2ExNCIKK1NSQ1JFViA9ICJlZjQyNTdiNTljNDMwN2I4YzYyN2Q4OWYzYzdmMWZlZWRiMzI1ODJmIgogIyBMb29rb3V0IGZvciBQViBidW1wIHRvbyB3aGVuIFNSQ1JFViBpcyBjaGFuZ2VkCi1QViA9ICIyMytnaXQke1NSQ1BWfSIKK1BWID0gIjI0K2dpdCR7U1JDUFZ9IgogCiBTUkNfVVJJID0gImdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vdXRpbHMva2VybmVsL2ttb2Qva21vZC5naXQgXAogICAgICAgICAgICBmaWxlOi8vZGVwbW9kLXNlYXJjaC5jb25mIFwKICAgICAgICAgICAgZmlsZTovL2F2b2lkX3BhcmFsbGVsX3Rlc3RzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2ZpeC1PX0NMT0VYRUMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8va2NtZGxpbmVfcXVvdGVzLnBhdGNoIFwKICAgICAgICAgICAiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rbW9kL2ttb2Qva2NtZGxpbmVfcXVvdGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva21vZC9rbW9kL2tjbWRsaW5lX3F1b3Rlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDZiZGVjNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rbW9kL2ttb2Qva2NtZGxpbmVfcXVvdGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotRnJvbSA0YTZmOTJhMTA2ODBlN2UzNjgwN2Y1ZTJhZThlNDk3ZThkNzNhMDQ4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSmFtZXMgTWlub3IgPGphbWVzLm1pbm9yQG5pLmNvbT4KLURhdGU6IEZyaSwgMjAgSmFuIDIwMTcgMTc6MTU6NTAgLTA2MDAKLVN1YmplY3Q6IFtQQVRDSF0gbGlia21vZDogRml4IGhhbmRsaW5nIG9mIHF1b3RlcyBpbiBrZXJuZWwgY29tbWFuZCBsaW5lCi0KLUlmIGEgbW9kdWxlIHBhcmFtZXRlciBvbiB0aGUgY29tbWFuZCBsaW5lIGNvbnRhaW5zIHF1b3RlcywgYW55Ci1zcGFjZXMgaW5zaWRlIHRob3NlIHF1b3RlcyBzaG91bGQgYmUgaW5jbHVkZWQgYXMgcGFydCBvZiB0aGUKLXBhcmFtZXRlci4KLQotU2lnbmVkLW9mZi1ieTogSmFtZXMgTWlub3IgPGphbWVzLm1pbm9yQG5pLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZAotLS0tCi0gbGlia21vZC9saWJrbW9kLWNvbmZpZy5jIHwgNyArKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvbGlia21vZC9saWJrbW9kLWNvbmZpZy5jIGIvbGlia21vZC9saWJrbW9kLWNvbmZpZy5jCi1pbmRleCA1N2ZiZTM3Li5lYTQwZDE5IDEwMDY0NAotLS0tIGEvbGlia21vZC9saWJrbW9kLWNvbmZpZy5jCi0rKysgYi9saWJrbW9kL2xpYmttb2QtY29uZmlnLmMKLUBAIC00OTcsNiArNDk3LDcgQEAgc3RhdGljIGludCBrbW9kX2NvbmZpZ19wYXJzZV9rY21kbGluZShzdHJ1Y3Qga21vZF9jb25maWcgKmNvbmZpZykKLSAJY2hhciBidWZbS0NNRF9MSU5FX1NJWkVdOwotIAlpbnQgZmQsIGVycjsKLSAJY2hhciAqcCwgKm1vZG5hbWUsICAqcGFyYW0gPSBOVUxMLCAqdmFsdWUgPSBOVUxMLCBpc19tb2R1bGUgPSAxOwotKwlib29sIGlzX3F1b3RlZCA9IGZhbHNlOwotIAotIAlmZCA9IG9wZW4oIi9wcm9jL2NtZGxpbmUiLCBPX1JET05MWXxPX0NMT0VYRUMpOwotIAlpZiAoZmQgPCAwKSB7Ci1AQCAtNTE0LDYgKzUxNSwxMiBAQCBzdGF0aWMgaW50IGttb2RfY29uZmlnX3BhcnNlX2tjbWRsaW5lKHN0cnVjdCBrbW9kX2NvbmZpZyAqY29uZmlnKQotIAl9Ci0gCi0gCWZvciAocCA9IGJ1ZiwgbW9kbmFtZSA9IGJ1ZjsgKnAgIT0gJ1wwJyAmJiAqcCAhPSAnXG4nOyBwKyspIHsKLSsJCWlmICgqcCA9PSAnIicpIHsKLSsJCQlpc19xdW90ZWQgPSAhaXNfcXVvdGVkOwotKwkJCWNvbnRpbnVlOwotKwkJfQotKwkJaWYgKGlzX3F1b3RlZCkKLSsJCQljb250aW51ZTsKLSAJCXN3aXRjaCAoKnApIHsKLSAJCWNhc2UgJyAnOgotIAkJCSpwID0gJ1wwJzsKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGF0ZW5jeXRvcC9sYXRlbmN5dG9wLTAuNS9sYXRlbmN5dG9wLW1ha2VmaWxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGF0ZW5jeXRvcC9sYXRlbmN5dG9wLTAuNS9sYXRlbmN5dG9wLW1ha2VmaWxlLnBhdGNoCmluZGV4IGFmMTliMzcuLjcxNDdmZGEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xhdGVuY3l0b3AvbGF0ZW5jeXRvcC0wLjUvbGF0ZW5jeXRvcC1tYWtlZmlsZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sYXRlbmN5dG9wL2xhdGVuY3l0b3AtMC41L2xhdGVuY3l0b3AtbWFrZWZpbGUucGF0Y2gKQEAgLTEsMyArMSw3IEBACisKK1NpZ25lZC1vZmYtYnk6IEphY2sgTWl0Y2hlbGwgPGphY2subWl0Y2hlbGxAZGJicm9hZGNhc3QuY28udWs+CitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKwogZGlmZiAtLWdpdCBhL01ha2VmaWxlLm9yaWcgYi9NYWtlZmlsZQogaW5kZXggMTZhMjM2OS4uZmE3OTdhMiAxMDA2NDQKIC0tLSBhL01ha2VmaWxlLm9yaWcKQEAgLTUsOCArOSw4IEBACiBAQCAtMSwxMCArMSwxMSBAQAogLSMgRklYTUU6IFVzZSBhdXRvY29uZiA/CiAtSEFTX0dUS19HVUkgPSAxCi0rIyBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0rIyBTaWduZWQtb2ZmLWJ5OiBKYWNrIE1pdGNoZWxsIDxqYWNrLm1pdGNoZWxsQGRiYnJvYWRjYXN0LmNvLnVrPgorKyMKKysjCiAgCiAgREVTVERJUiA9CiAgU0JJTkRJUiA9IC91c3Ivc2JpbgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtZmlybXdhcmUvbGludXgtZmlybXdhcmVfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtZmlybXdhcmUvbGludXgtZmlybXdhcmVfZ2l0LmJiCmluZGV4IGZmNjBkMzAuLjkwNTRiMzMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWZpcm13YXJlL2xpbnV4LWZpcm13YXJlX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1maXJtd2FyZS9saW51eC1maXJtd2FyZV9naXQuYmIKQEAgLTE4NCw2ICsxODQsOCBAQAogCiBTUkNfVVJJID0gImdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9maXJtd2FyZS9saW51eC1maXJtd2FyZS5naXQiCiAKK1VQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgorCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCiBpbmhlcml0IGFsbGFyY2gKQEAgLTIxNiw3ICsyMTgsNiBAQAogCiAJIyBmaXh1cCB3bDEyeHggbG9jYXRpb24sIGFmdGVyIDIuNi4zNyB0aGUga2VybmVsIHNlYXJjaGVzIGEgZGlmZmVyZW50IGxvY2F0aW9uIGZvciBpdAogCSggY2QgJHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUgOyBsbiAtc2YgdGktY29ubmVjdGl2aXR5LyogLiApCi0KIH0KIAogCkBAIC0yNDcsNyArMjQ4LDcgQEAKICAgICAgICAgICAgICAke1BOfS1pd2x3aWZpLTYwNTAtNCAke1BOfS1pd2x3aWZpLTYwNTAtNSBcCiAgICAgICAgICAgICAgJHtQTn0taXdsd2lmaS03MjYwIFwKICAgICAgICAgICAgICAke1BOfS1pd2x3aWZpLTcyNjUgXAotICAgICAgICAgICAgICR7UE59LWl3bHdpZmktNzI2NWQgJHtQTn0taXdsd2lmaS04MjY1IFwKKyAgICAgICAgICAgICAke1BOfS1pd2x3aWZpLTcyNjVkICR7UE59LWl3bHdpZmktODAwMGMgJHtQTn0taXdsd2lmaS04MjY1IFwKICAgICAgICAgICAgICAke1BOfS1pd2x3aWZpLW1pc2MgXAogICAgICAgICAgICAgICR7UE59LWlidC1saWNlbnNlICR7UE59LWlidCAke1BOfS1pYnQtbWlzYyBcCiAgICAgICAgICAgICAgJHtQTn0taWJ0LTExLTUgJHtQTn0taWJ0LTEyLTE2ICR7UE59LWlidC1ody0zNy03ICR7UE59LWlidC1ody0zNy04IFwKQEAgLTYxOSw2ICs2MjAsNyBAQAogRklMRVNfJHtQTn0taXdsd2lmaS03MjYwICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTcyNjAtKi51Y29kZSIKIEZJTEVTXyR7UE59LWl3bHdpZmktNzI2NSAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS03MjY1LSoudWNvZGUiCiBGSUxFU18ke1BOfS1pd2x3aWZpLTcyNjVkICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTcyNjVELSoudWNvZGUiCitGSUxFU18ke1BOfS1pd2x3aWZpLTgwMDBjICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTgwMDBDLSoudWNvZGUiCiBGSUxFU18ke1BOfS1pd2x3aWZpLTgyNjUgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktODI2NS0qLnVjb2RlIgogRklMRVNfJHtQTn0taXdsd2lmaS1taXNjICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLSoudWNvZGUiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnNfNC4xMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnNfNC4xMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjkyNjI3OC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzXzQuMTAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1yZXF1aXJlIGxpbnV4LWxpYmMtaGVhZGVycy5pbmMKLQotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIlwKLSAgICBmaWxlOi8vMDAwMS1saWJjLWNvbXBhdC5oLWZpeC1zb21lLWlzc3Vlcy1hcmlzaW5nLWZyb20taW42LmgucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAyLWxpYmMtY29tcGF0LmgtcHJldmVudC1yZWRlZmluaXRpb24tb2Ytc3RydWN0LWV0aGhkci5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDMtcmVtb3ZlLWluY2x1c2lvbi1vZi1zeXNpbmZvLmgtaW4ta2VybmVsLmgucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLWxpYmMtY29tcGF0LmgtbXVzbC1fZG9lc18tZGVmaW5lLUlGRl9MT1dFUl9VUC1ET1JNQU4ucGF0Y2ggXAotICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYjVlN2Y2YjliMmZlMWI2Y2M3YmM1NmEzYTBiZmMwOTAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2M5NWQ5ZjA0OWJkMDg1ZTVjMzQ2ZDJjNzdmMDYzYjg0MjVmMTkxNDYwZmNkM2FlOWZlN2U5NGUwNDc3ZGM0YiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnNfNC4xMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnNfNC4xMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMGQwYWJmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVyc180LjEyLmJiCkBAIC0wLDAgKzEsMTEgQEAKK3JlcXVpcmUgbGludXgtbGliYy1oZWFkZXJzLmluYworCitTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiXAorICAgIGZpbGU6Ly8wMDAxLWxpYmMtY29tcGF0LmgtZml4LXNvbWUtaXNzdWVzLWFyaXNpbmctZnJvbS1pbjYuaC5wYXRjaCBcCisgICAgZmlsZTovLzAwMDItbGliYy1jb21wYXQuaC1wcmV2ZW50LXJlZGVmaW5pdGlvbi1vZi1zdHJ1Y3QtZXRoaGRyLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMy1yZW1vdmUtaW5jbHVzaW9uLW9mLXN5c2luZm8uaC1pbi1rZXJuZWwuaC5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtbGliYy1jb21wYXQuaC1tdXNsLV9kb2VzXy1kZWZpbmUtSUZGX0xPV0VSX1VQLURPUk1BTi5wYXRjaCBcCisgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJmYzQ1NDE1N2UyZDAyNGQ0MDFhNjA5MDVkNjQ4MWM2YiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhNDVjM2JlY2Q0ZDA4Y2U0MTFjMTQ2MjhhOTQ5ZDA4ZTI0MzNkOGNkZWNhOTIwMzZjNzAxMzk4MGU5Mzg1OGFiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgva2VybmVsLWRldnNyYy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1kZXZzcmMuYmIKaW5kZXggNzAwNDI2MS4uYzFiNWI3NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgva2VybmVsLWRldnNyYy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtZGV2c3JjLmJiCkBAIC00Niw3ICs0Niw3IEBACiAgICAgICAgIGNkICR7Qn0KICAgICAgICAgZmluZCAuIC10eXBlIGQgLW5hbWUgJy5naXQqJyAtcHJ1bmUgLW8gLXBhdGggJy5kZWJ1ZycgLXBydW5lIC1vIC10eXBlIGYgLXByaW50MCB8IGNwaW8gLS1udWxsIC1wZGx1ICRrZXJuZWxkaXIKICAgICAgICAgY2QgJHtTfQotICAgICAgICBmaW5kIC4gLXR5cGUgZCAtbmFtZSAnLmdpdConIC1wcnVuZSAtbyAtdHlwZSBmIC1wcmludDAgfCBjcGlvIC0tbnVsbCAtcGRsdSAka2VybmVsZGlyCisJZmluZCAuIC10eXBlIGQgLW5hbWUgJy5naXQqJyAtcHJ1bmUgLW8gLXR5cGUgZCAtbmFtZSAnLmtlcm5lbC1tZXRhJyAtcHJ1bmUgLW8gLXR5cGUgZiAtcHJpbnQwIHwgY3BpbyAtLW51bGwgLXBkbHUgJGtlcm5lbGRpcgogCiAgICAgICAgICMgRXhwbGljaXRseSBzZXQgS0JVSUxEX09VVFBVVCB0byBlbnN1cmUgdGhhdCB0aGUgaW1hZ2UgZGlyZWN0b3J5IGlzIGNsZWFuZWQgYW5kIG5vdAogICAgICAgICAjIFRoZSBtYWluIGJ1aWxkIGFydGlmYWN0cy4gV2UgY2xlYW4gdGhlIGRpcmVjdG9yeSB0byBhdm9pZCBRQSBlcnJvcnMgb24gbWlzbWF0Y2hlZApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgtZHRiLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LWR0Yi5pbmMKaW5kZXggMDE3NGM4MC4uZjE5MTI3NyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgtZHRiLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1kdGIuaW5jCkBAIC0xLDkxICsxLDMgQEAKLSMgU3VwcG9ydCBmb3IgZGV2aWNlIHRyZWUgZ2VuZXJhdGlvbgotRklMRVNfa2VybmVsLWRldmljZXRyZWUgPSAiLyR7S0VSTkVMX0lNQUdFREVTVH0vZGV2aWNldHJlZSoiCi0KLVBBQ0tBR0VfV1JJVEVfREVQUyArPSAidmlydHVhbC91cGRhdGUtYWx0ZXJuYXRpdmVzLW5hdGl2ZSIKLQotcHl0aG9uIF9fYW5vbnltb3VzICgpIHsKLSAgICBkLmFwcGVuZFZhcigiUEFDS0FHRVMiLCAiIGtlcm5lbC1kZXZpY2V0cmVlIikKLX0KLQotbm9ybWFsaXplX2R0YiAoKSB7Ci0JRFRCPSIkMSIKLQlpZiBlY2hvICR7RFRCfSB8IGdyZXAgLXEgJy9kdHMvJzsgdGhlbgotCQliYndhcm4gIiR7RFRCfSBjb250YWlucyB0aGUgZnVsbCBwYXRoIHRvIHRoZSB0aGUgZHRzIGZpbGUsIGJ1dCBvbmx5IHRoZSBkdGIgbmFtZSBzaG91bGQgYmUgdXNlZC4iCi0JCURUQj1gYmFzZW5hbWUgJHtEVEJ9IHwgc2VkICdzLFwuZHRzJCwuZHRiLGcnYAotCWZpCi0JZWNobyAiJHtEVEJ9IgotfQotCi1nZXRfcmVhbF9kdGJfcGF0aF9pbl9rZXJuZWwgKCkgewotCURUQj0iJDEiCi0JRFRCX1BBVEg9IiR7Qn0vYXJjaC8ke0FSQ0h9L2Jvb3QvZHRzLyR7RFRCfSIKLQlpZiBbICEgLWUgIiR7RFRCX1BBVEh9IiBdOyB0aGVuCi0JCURUQl9QQVRIPSIke0J9L2FyY2gvJHtBUkNIfS9ib290LyR7RFRCfSIKLQlmaQotCWVjaG8gIiR7RFRCX1BBVEh9IgotfQotCi1kb19jb21waWxlX2FwcGVuZCgpIHsKLQlmb3IgRFRCIGluICR7S0VSTkVMX0RFVklDRVRSRUV9OyBkbwotCQlEVEI9YG5vcm1hbGl6ZV9kdGIgIiR7RFRCfSJgCi0JCW9lX3J1bm1ha2UgJHtEVEJ9Ci0JZG9uZQotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlmb3IgRFRCIGluICR7S0VSTkVMX0RFVklDRVRSRUV9OyBkbwotCQlEVEI9YG5vcm1hbGl6ZV9kdGIgIiR7RFRCfSJgCi0JCURUQl9FWFQ9JHtEVEIjIyoufQotCQlEVEJfQkFTRV9OQU1FPWBiYXNlbmFtZSAke0RUQn0gLiIke0RUQl9FWFR9ImAKLQkJZm9yIHR5cGUgaW4gJHtLRVJORUxfSU1BR0VUWVBFX0ZPUl9NQUtFfTsgZG8KLQkJCXN5bWxpbmtfbmFtZT0ke3R5cGV9Ii0iJHtLRVJORUxfSU1BR0VfU1lNTElOS19OQU1FfQotCQkJRFRCX1NZTUxJTktfTkFNRT1gZWNobyAke3N5bWxpbmtfbmFtZX0gfCBzZWQgInMvJHtNQUNISU5FfS8ke0RUQl9CQVNFX05BTUV9L2ciYAotCQkJRFRCX1BBVEg9YGdldF9yZWFsX2R0Yl9wYXRoX2luX2tlcm5lbCAiJHtEVEJ9ImAKLQkJCWluc3RhbGwgLW0gMDY0NCAke0RUQl9QQVRIfSAke0R9LyR7S0VSTkVMX0lNQUdFREVTVH0vZGV2aWNldHJlZS0ke0RUQl9TWU1MSU5LX05BTUV9LiR7RFRCX0VYVH0KLQkJZG9uZQotCWRvbmUKLX0KLQotZG9fZGVwbG95X2FwcGVuZCgpIHsKLQlmb3IgRFRCIGluICR7S0VSTkVMX0RFVklDRVRSRUV9OyBkbwotCQlEVEI9YG5vcm1hbGl6ZV9kdGIgIiR7RFRCfSJgCi0JCURUQl9FWFQ9JHtEVEIjIyoufQotCQlEVEJfQkFTRV9OQU1FPWBiYXNlbmFtZSAke0RUQn0gLiIke0RUQl9FWFR9ImAKLQkJZm9yIHR5cGUgaW4gJHtLRVJORUxfSU1BR0VUWVBFX0ZPUl9NQUtFfTsgZG8KLQkJCWJhc2VfbmFtZT0ke3R5cGV9Ii0iJHtLRVJORUxfSU1BR0VfQkFTRV9OQU1FfQotCQkJc3ltbGlua19uYW1lPSR7dHlwZX0iLSIke0tFUk5FTF9JTUFHRV9TWU1MSU5LX05BTUV9Ci0JCQlEVEJfTkFNRT1gZWNobyAke2Jhc2VfbmFtZX0gfCBzZWQgInMvJHtNQUNISU5FfS8ke0RUQl9CQVNFX05BTUV9L2ciYAotCQkJRFRCX1NZTUxJTktfTkFNRT1gZWNobyAke3N5bWxpbmtfbmFtZX0gfCBzZWQgInMvJHtNQUNISU5FfS8ke0RUQl9CQVNFX05BTUV9L2ciYAotCQkJRFRCX1BBVEg9YGdldF9yZWFsX2R0Yl9wYXRoX2luX2tlcm5lbCAiJHtEVEJ9ImAKLQkJCWluc3RhbGwgLWQgJHtERVBMT1lESVJ9Ci0JCQlpbnN0YWxsIC1tIDA2NDQgJHtEVEJfUEFUSH0gJHtERVBMT1lESVJ9LyR7RFRCX05BTUV9LiR7RFRCX0VYVH0KLQkJCWxuIC1zZiAke0RUQl9OQU1FfS4ke0RUQl9FWFR9ICR7REVQTE9ZRElSfS8ke0RUQl9TWU1MSU5LX05BTUV9LiR7RFRCX0VYVH0KLQkJZG9uZQotCWRvbmUKLX0KLQotcGtnX3Bvc3RpbnN0X2tlcm5lbC1kZXZpY2V0cmVlICgpIHsKLQljZCAvJHtLRVJORUxfSU1BR0VERVNUfQotCWZvciBEVEIgaW4gJHtLRVJORUxfREVWSUNFVFJFRX07IGRvCi0JCWZvciB0eXBlIGluICR7S0VSTkVMX0lNQUdFVFlQRV9GT1JfTUFLRX07IGRvCi0JCQlzeW1saW5rX25hbWU9JHt0eXBlfSItIiR7S0VSTkVMX0lNQUdFX1NZTUxJTktfTkFNRX0KLQkJCURUQl9FWFQ9JHtEVEIjIyoufQotCQkJRFRCX0JBU0VfTkFNRT1gYmFzZW5hbWUgJHtEVEJ9IC4iJHtEVEJfRVhUfSJgCi0JCQlEVEJfU1lNTElOS19OQU1FPWBlY2hvICR7c3ltbGlua19uYW1lfSB8IHNlZCAicy8ke01BQ0hJTkV9LyR7RFRCX0JBU0VfTkFNRX0vZyJgCi0JCQl1cGRhdGUtYWx0ZXJuYXRpdmVzIC0taW5zdGFsbCAvJHtLRVJORUxfSU1BR0VERVNUfS8ke0RUQl9CQVNFX05BTUV9LiR7RFRCX0VYVH0gJHtEVEJfQkFTRV9OQU1FfS4ke0RUQl9FWFR9IGRldmljZXRyZWUtJHtEVEJfU1lNTElOS19OQU1FfS4ke0RUQl9FWFR9ICR7S0VSTkVMX1BSSU9SSVRZfSB8fCB0cnVlCi0JCWRvbmUKLQlkb25lCi19Ci0KLXBrZ19wb3N0cm1fa2VybmVsLWRldmljZXRyZWUgKCkgewotCWNkIC8ke0tFUk5FTF9JTUFHRURFU1R9Ci0JZm9yIERUQiBpbiAke0tFUk5FTF9ERVZJQ0VUUkVFfTsgZG8KLQkJZm9yIHR5cGUgaW4gJHtLRVJORUxfSU1BR0VUWVBFX0ZPUl9NQUtFfTsgZG8KLQkJCXN5bWxpbmtfbmFtZT0ke3R5cGV9Ii0iJHtLRVJORUxfSU1BR0VfU1lNTElOS19OQU1FfQotCQkJRFRCX0VYVD0ke0RUQiMjKi59Ci0JCQlEVEJfQkFTRV9OQU1FPWBiYXNlbmFtZSAke0RUQn0gLiIke0RUQl9FWFR9ImAKLQkJCURUQl9TWU1MSU5LX05BTUU9YGVjaG8gJHtzeW1saW5rX25hbWV9IHwgc2VkICJzLyR7TUFDSElORX0vJHtEVEJfQkFTRV9OQU1FfS9nImAKLQkJCXVwZGF0ZS1hbHRlcm5hdGl2ZXMgLS1yZW1vdmUgJHtEVEJfQkFTRV9OQU1FfS4ke0RUQl9FWFR9IGRldmljZXRyZWUtJHtEVEJfU1lNTElOS19OQU1FfS4ke0RUQl9FWFR9ICR7S0VSTkVMX1BSSU9SSVRZfSB8fCB0cnVlCi0JCWRvbmUKLQlkb25lCitweXRob24oKSB7CisgICAgYmIud2FybigiWW91IGFyZSB1c2luZyB0aGUgbGludXgtZHRiLmluYyB3aGljaCBpcyBkZXByZWNhdGVkLiBZb3UgY2FuIHNhZmVseSByZW1vdmUgaXQgYXMgdGhlIERldmljZSBUcmVlIHN1cHBvcnQgaXMgYXV0b21hdGljYWxseSBlbmFibGVkIHdoZW4gS0VSTkVMX0RFVklDRVRSRUUgaXMgc2V0LiIpCiB9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC1kdW1teS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LWR1bW15LmJiCmluZGV4IDk5NGFjNzQuLmUxYzdmNzYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LWR1bW15LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LWR1bW15LmJiCkBAIC0xMywxMCArMTMsMTQgQEAKIFBBQ0tBR0VTX0RZTkFNSUMgKz0gIl5rZXJuZWwtaW1hZ2UtLioiCiBQQUNLQUdFU19EWU5BTUlDICs9ICJea2VybmVsLWZpcm13YXJlLS4qIgogCi1QQUNLQUdFUyArPSAia2VybmVsLW1vZHVsZXMiCitQQUNLQUdFUyArPSAia2VybmVsLW1vZHVsZXMga2VybmVsLXZtbGludXgiCiBGSUxFU19rZXJuZWwtbW9kdWxlcyA9ICIiCiBBTExPV19FTVBUWV9rZXJuZWwtbW9kdWxlcyA9ICIxIgogREVTQ1JJUFRJT05fa2VybmVsLW1vZHVsZXMgPSAiS2VybmVsIG1vZHVsZXMgbWV0YSBwYWNrYWdlIgorRklMRVNfa2VybmVsLXZtbGludXggPSAiIgorQUxMT1dfRU1QVFlfa2VybmVsLXZtbGludXggPSAiMSIKK0RFU0NSSVBUSU9OX2tlcm5lbC12bWxpbnV4ID0gIktlcm5lbCB2bWxpbnV4IG1ldGEgcGFja2FnZSIKKwogCiBJTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmIKaW5kZXggYmY2N2Y4MS4uNTg1MmI0MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYgpAQCAtMjgsNyArMjgsNyBAQAogU1JDUkVWX21hY2hpbmUgPz0gJyR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwiLCAibGludXgteW9jdG8tZGV2IiwgIiR7QVVUT1JFVn0iLCAiMjk1OTQ0MDRkN2ZlNzNjZDgwZWFhNGVlOGM0M2RjYzUzOTcwYzYwZSIsIGQpfScKIFNSQ1JFVl9tZXRhID89ICcke0BvZS51dGlscy5jb25kaXRpb25hbCgiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIiwgImxpbnV4LXlvY3RvLWRldiIsICIke0FVVE9SRVZ9IiwgIjI5NTk0NDA0ZDdmZTczY2Q4MGVhYTRlZThjNDNkY2M1Mzk3MGM2MGUiLCBkKX0nCiAKLUxJTlVYX1ZFUlNJT04gPz0gIjQuMTEtcmMrIgorTElOVVhfVkVSU0lPTiA/PSAiNC4xMi1yYysiCiBMSU5VWF9WRVJTSU9OX0VYVEVOU0lPTiA/PSAiLXlvY3RvZGV2LSR7TElOVVhfS0VSTkVMX1RZUEV9IgogUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODI0NjhhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLUtCUkFOQ0ggPz0gInN0YW5kYXJkL3ByZWVtcHQtcnQvYmFzZSIKLQotcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKLQotIyBTa2lwIHByb2Nlc3Npbmcgb2YgdGhpcyByZWNpcGUgaWYgaXQgaXMgbm90IGV4cGxpY2l0bHkgc3BlY2lmaWVkIGFzIHRoZQotIyBQUkVGRVJSRURfUFJPVklERVIgZm9yIHZpcnR1YWwva2VybmVsLiBUaGlzIGF2b2lkcyBlcnJvcnMgd2hlbiB0cnlpbmcKLSMgdG8gYnVpbGQgbXVsdGlwbGUgdmlydHVhbC9rZXJuZWwgcHJvdmlkZXJzLCBlLmcuIGFzIGRlcGVuZGVuY3kgb2YKLSMgY29yZS1pbWFnZS1ydC1zZGssIGNvcmUtaW1hZ2UtcnQuCi1weXRob24gKCkgewotICAgIGlmIGQuZ2V0VmFyKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwiKSAhPSAibGludXgteW9jdG8tcnQiOgotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiU2V0IFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCB0byBsaW51eC15b2N0by1ydCB0byBlbmFibGUgaXQiKQotfQotCi1TUkNSRVZfbWFjaGluZSA/PSAiOGNjNjJhYzNmMjZiZDZkZGU2OGFkMmQ4NjAyNmEyNTJmZTdhZGQ0NCIKLVNSQ1JFVl9tZXRhID89ICI5ZjljOWE2NmVmMzQ1MjM0MzU4NmFkZjE1MDEzNzk2N2U5NTVkNzFhIgotCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLTQuMS5naXQ7YnJhbmNoPSR7S0JSQU5DSH07bmFtZT1tYWNoaW5lIFwKLSAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by00LjE7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKLQotTElOVVhfVkVSU0lPTiA/PSAiNC4xLjQzIgotCi1QViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgotCi1LTUVUQSA9ICJrZXJuZWwtbWV0YSIKLUtDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgotCi1MSU5VWF9LRVJORUxfVFlQRSA9ICJwcmVlbXB0LXJ0IgotCi1DT01QQVRJQkxFX01BQ0hJTkUgPSAiKHFlbXV4ODZ8cWVtdXg4Ni02NHxxZW11YXJtfHFlbXVwcGN8cWVtdW1pcHMpIgotCi0jIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKLUtFUk5FTF9FWFRSQV9GRUFUVVJFUyA/PSAiZmVhdHVyZXMvbmV0ZmlsdGVyL25ldGZpbHRlci5zY2MgZmVhdHVyZXMvdGFza3N0YXRzL3Rhc2tzdGF0cy5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0tFUk5FTF9FWFRSQV9GRUFUVVJFU30iCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXVhbGw9IiBjZmcvdmlydGlvLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Nj0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODYtNjQ9IiBjZmcvc291bmQuc2NjIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC4xMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuMTAuYmIKaW5kZXggZjkzZDk1My4uZmQzMWJmOSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC4xMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF80LjEwLmJiCkBAIC0xMiw3ICsxMiw3IEBACiB9CiAKIFNSQ1JFVl9tYWNoaW5lID89ICJjMWQ4YzQ0MDhiOGFlZGQ4OGVlYjZjY2M4OWNlODM0ZGQ0MWIzZjA5IgotU1JDUkVWX21ldGEgPz0gIjQwZWU0OGFjMDk5YzA0ZjYwZDJjMTMyMDMxZDk2MjVhNGUwYzRjOWUiCitTUkNSRVZfbWV0YSA/PSAiMWQ5YTgyMDAxODRhZjIyZjg5ODFmYTI0YjBlODJhZjQ5Yzc5ODhkZCIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by00LjEwLmdpdDticmFuY2g9JHtLQlJBTkNIfTtuYW1lPW1hY2hpbmUgXAogICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuMTA7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF80LjEyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlYjAxNTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF80LjEyLmJiCkBAIC0wLDAgKzEsMzggQEAKK0tCUkFOQ0ggPz0gInN0YW5kYXJkL3ByZWVtcHQtcnQvYmFzZSIKKworcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKKworIyBTa2lwIHByb2Nlc3Npbmcgb2YgdGhpcyByZWNpcGUgaWYgaXQgaXMgbm90IGV4cGxpY2l0bHkgc3BlY2lmaWVkIGFzIHRoZQorIyBQUkVGRVJSRURfUFJPVklERVIgZm9yIHZpcnR1YWwva2VybmVsLiBUaGlzIGF2b2lkcyBlcnJvcnMgd2hlbiB0cnlpbmcKKyMgdG8gYnVpbGQgbXVsdGlwbGUgdmlydHVhbC9rZXJuZWwgcHJvdmlkZXJzLCBlLmcuIGFzIGRlcGVuZGVuY3kgb2YKKyMgY29yZS1pbWFnZS1ydC1zZGssIGNvcmUtaW1hZ2UtcnQuCitweXRob24gKCkgeworICAgIGlmIGQuZ2V0VmFyKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwiKSAhPSAibGludXgteW9jdG8tcnQiOgorICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiU2V0IFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCB0byBsaW51eC15b2N0by1ydCB0byBlbmFibGUgaXQiKQorfQorCitTUkNSRVZfbWFjaGluZSA/PSAiMzNhYTFhNGVhNDQzOTlmMTJkZmIyNjE0NmVhMDZkYjVjZDAyY2E2OSIKK1NSQ1JFVl9tZXRhID89ICIxOWQ4MTVkNWEzNGJmYWFkOTVkODdjYzA5N2NlZjE4YjU5NGRhYWM4IgorCitTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLTQuMTIuZ2l0O2JyYW5jaD0ke0tCUkFOQ0h9O25hbWU9bWFjaGluZSBcCisgICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNC4xMjtkZXN0c3VmZml4PSR7S01FVEF9IgorCitMSU5VWF9WRVJTSU9OID89ICI0LjEyLjIwIgorCitQViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgorCitLTUVUQSA9ICJrZXJuZWwtbWV0YSIKK0tDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgorCitMSU5VWF9LRVJORUxfVFlQRSA9ICJwcmVlbXB0LXJ0IgorCitDT01QQVRJQkxFX01BQ0hJTkUgPSAiKHFlbXV4ODZ8cWVtdXg4Ni02NHxxZW11YXJtfHFlbXVwcGN8cWVtdW1pcHMpIgorCitLRVJORUxfREVWSUNFVFJFRV9xZW11YXJtID0gInZlcnNhdGlsZS1wYi5kdGIiCisKKyMgRnVuY3Rpb25hbGl0eSBmbGFncworS0VSTkVMX0VYVFJBX0ZFQVRVUkVTID89ICJmZWF0dXJlcy9uZXRmaWx0ZXIvbmV0ZmlsdGVyLnNjYyBmZWF0dXJlcy90YXNrc3RhdHMvdGFza3N0YXRzLnNjYyIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7S0VSTkVMX0VYVFJBX0ZFQVRVUkVTfSIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdWFsbD0iIGNmZy92aXJ0aW8uc2NjIgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Ni02ND0iIGNmZy9zb3VuZC5zY2MiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF80LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF80LjQuYmIKaW5kZXggMjVkODg4My4uOTc1MzhlMiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC40LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuNC5iYgpAQCAtMTEsMTMgKzExLDEzIEBACiAgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCJTZXQgUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIHRvIGxpbnV4LXlvY3RvLXJ0IHRvIGVuYWJsZSBpdCIpCiB9CiAKLVNSQ1JFVl9tYWNoaW5lID89ICIxZTY5MWRiN2FmNjQyZmZmMDIyMmExZjFkMWU5MDQzYzE3MjY5OWQ1IgotU1JDUkVWX21ldGEgPz0gIjgwNGQyYjMxNjRlYzI1ZWQ1MTlmZDY5NWRlOWFhMDkwODQ2MGM5MmUiCitTUkNSRVZfbWFjaGluZSA/PSAiZDVlZmVlZWI5MjhhMDExMWZjMTg3ZmQxZThkMDNkMmU0ZTM1ZDRhMCIKK1NSQ1JFVl9tZXRhID89ICJiMTQ5ZDE0Y2NhZTgzNDlhYjMzZTEwMWY2YWYyMzNhMTJmNGIxN2JhIgogCiBTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLTQuNC5naXQ7YnJhbmNoPSR7S0JSQU5DSH07bmFtZT1tYWNoaW5lIFwKICAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by00LjQ7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKIAotTElOVVhfVkVSU0lPTiA/PSAiNC40Ljg3IgorTElOVVhfVkVSU0lPTiA/PSAiNC40LjExMyIKIAogUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC45LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC45LmJiCmluZGV4IDY3MzRkYzAuLjVjMDE2ZWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuOS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF80LjkuYmIKQEAgLTExLDEzICsxMSwxMyBAQAogICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiU2V0IFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCB0byBsaW51eC15b2N0by1ydCB0byBlbmFibGUgaXQiKQogfQogCi1TUkNSRVZfbWFjaGluZSA/PSAiMDgxN2E3YjNhODUzZDFiZGQzYjg3YTI2NTRlZDJlZTYyZjYyNDgwNiIKLVNSQ1JFVl9tZXRhID89ICI2YWNhZTZmNzIwMGFmMTdiM2MyYmU1ZWNhYjJjZmZkYzU5YTAyYjM1IgorU1JDUkVWX21hY2hpbmUgPz0gIjkwZDFmZmEzNmNiZDM2NzIyNjM4Yzk3YzFiYjQ2YTU4NzRkYmUyOGUiCitTUkNSRVZfbWV0YSA/PSAiMDc3NGVhY2VhMmE3ZDNhMTUwNTk0NTMzYjhjODBkMGMwYmZkZmRlZCIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by00LjkuZ2l0O2JyYW5jaD0ke0tCUkFOQ0h9O25hbWU9bWFjaGluZSBcCiAgICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNC45O2Rlc3RzdWZmaXg9JHtLTUVUQX0iCiAKLUxJTlVYX1ZFUlNJT04gPz0gIjQuOS40OSIKK0xJTlVYX1ZFUlNJT04gPz0gIjQuOS44MiIKIAogUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTM3ZWZiMS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLUtCUkFOQ0ggPz0gInN0YW5kYXJkL3RpbnkvY29tbW9uLXBjIgotTElOVVhfS0VSTkVMX1RZUEUgPSAidGlueSIKLUtDT05GSUdfTU9ERSA9ICItLWFsbG5vY29uZmlnIgotCi1yZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYwotCi1MSU5VWF9WRVJTSU9OID89ICI0LjEuNDMiCi0KLUtNRVRBID0gImtlcm5lbC1tZXRhIgotS0NPTkZfQlNQX0FVRElUX0xFVkVMID0gIjIiCi0KLVNSQ1JFVl9tYWNoaW5lID89ICI3ODIxMzNkODE2NmFjNzFlZjFmZmFiYTU4YjdjZjgxZWM5ZTUzMmExIgotU1JDUkVWX21ldGEgPz0gIjlmOWM5YTY2ZWYzNDUyMzQzNTg2YWRmMTUwMTM3OTY3ZTk1NWQ3MWEiCi0KLVBWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8tNC4xLmdpdDticmFuY2g9JHtLQlJBTkNIfTtuYW1lPW1hY2hpbmUgXAotICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuMTtkZXN0c3VmZml4PSR7S01FVEF9IgotCi1DT01QQVRJQkxFX01BQ0hJTkUgPSAiKHFlbXV4ODYkKSIKLQotIyBGdW5jdGlvbmFsaXR5IGZsYWdzCi1LRVJORUxfRkVBVFVSRVMgPSAiIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjEwLmJiCmluZGV4IDMxMzk2YWIuLmIyMjM0OTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTAuYmIKQEAgLTEwLDE0ICsxMCwxNCBAQAogS0NPTkZfQlNQX0FVRElUX0xFVkVMID0gIjIiCiAKIFNSQ1JFVl9tYWNoaW5lID89ICJjMWQ4YzQ0MDhiOGFlZGQ4OGVlYjZjY2M4OWNlODM0ZGQ0MWIzZjA5IgotU1JDUkVWX21ldGEgPz0gIjQwZWU0OGFjMDk5YzA0ZjYwZDJjMTMyMDMxZDk2MjVhNGUwYzRjOWUiCitTUkNSRVZfbWV0YSA/PSAiMWQ5YTgyMDAxODRhZjIyZjg5ODFmYTI0YjBlODJhZjQ5Yzc5ODhkZCIKIAogUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by00LjEwLmdpdDticmFuY2g9JHtLQlJBTkNIfTtuYW1lPW1hY2hpbmUgXAogICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuMTA7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKIAotQ09NUEFUSUJMRV9NQUNISU5FID0gIihxZW11eDg2JCkiCitDT01QQVRJQkxFX01BQ0hJTkUgPSAicWVtdXg4NnxxZW11eDg2LTY0IgogCiAjIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKIEtFUk5FTF9GRUFUVVJFUyA9ICIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuMTIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ZmMmUxYwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xMi5iYgpAQCAtMCwwICsxLDI1IEBACitLQlJBTkNIID89ICJzdGFuZGFyZC90aW55L2NvbW1vbi1wYyIKK0xJTlVYX0tFUk5FTF9UWVBFID0gInRpbnkiCitLQ09ORklHX01PREUgPSAiLS1hbGxub2NvbmZpZyIKKworcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKKworTElOVVhfVkVSU0lPTiA/PSAiNC4xMi4yMCIKKworS01FVEEgPSAia2VybmVsLW1ldGEiCitLQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKKworU1JDUkVWX21hY2hpbmUgPz0gIjQwMTQ2MDU1Njc3YTY5NzMwYjJjMzZkYTFjOGMxYjRlOWJhZTdiYjAiCitTUkNSRVZfbWV0YSA/PSAiMTlkODE1ZDVhMzRiZmFhZDk1ZDg3Y2MwOTdjZWYxOGI1OTRkYWFjOCIKKworUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by00LjEyLmdpdDticmFuY2g9JHtLQlJBTkNIfTtuYW1lPW1hY2hpbmUgXAorICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuMTI7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKKworQ09NUEFUSUJMRV9NQUNISU5FID0gInFlbXV4ODZ8cWVtdXg4Ni02NCIKKworIyBGdW5jdGlvbmFsaXR5IGZsYWdzCitLRVJORUxfRkVBVFVSRVMgPSAiIgorCitLRVJORUxfREVWSUNFVFJFRV9xZW11YXJtID0gInZlcnNhdGlsZS1wYi5kdGIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiCmluZGV4IDUwYjlhNTYuLjhhOTgxODkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC40LmJiCkBAIC00LDIwICs0LDIwIEBACiAKIHJlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCiAKLUxJTlVYX1ZFUlNJT04gPz0gIjQuNC44NyIKK0xJTlVYX1ZFUlNJT04gPz0gIjQuNC4xMTMiCiAKIEtNRVRBID0gImtlcm5lbC1tZXRhIgogS0NPTkZfQlNQX0FVRElUX0xFVkVMID0gIjIiCiAKLVNSQ1JFVl9tYWNoaW5lID89ICJiNzFjN2I3ODZhZWQyNmMwYTFlNGVjYTY2ZjFkODc0ZWMwMTdkNjk5IgotU1JDUkVWX21ldGEgPz0gIjgwNGQyYjMxNjRlYzI1ZWQ1MTlmZDY5NWRlOWFhMDkwODQ2MGM5MmUiCitTUkNSRVZfbWFjaGluZSA/PSAiNGQzMWE4Yjc2NjE1MDlmZjEwNDRhYmNmOTA1MDc1MGNjMjQ3OGUyMCIKK1NSQ1JFVl9tZXRhID89ICJiMTQ5ZDE0Y2NhZTgzNDlhYjMzZTEwMWY2YWYyMzNhMTJmNGIxN2JhIgogCiBQViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgogCiBTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLTQuNC5naXQ7YnJhbmNoPSR7S0JSQU5DSH07bmFtZT1tYWNoaW5lIFwKICAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by00LjQ7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKIAotQ09NUEFUSUJMRV9NQUNISU5FID0gIihxZW11eDg2JCkiCitDT01QQVRJQkxFX01BQ0hJTkUgPSAicWVtdXg4NnxxZW11eDg2LTY0IgogCiAjIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKIEtFUk5FTF9GRUFUVVJFUyA9ICIiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzQuOS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC45LmJiCmluZGV4IGUwYzUyMzYuLjRkNDY4MDIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC45LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC45LmJiCkBAIC00LDIwICs0LDIwIEBACiAKIHJlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCiAKLUxJTlVYX1ZFUlNJT04gPz0gIjQuOS40OSIKK0xJTlVYX1ZFUlNJT04gPz0gIjQuOS44MiIKIAogS01FVEEgPSAia2VybmVsLW1ldGEiCiBLQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKIAotU1JDUkVWX21hY2hpbmUgPz0gIjQ4MGVlNTk5ZmI4ZGY3MTJjMTBkY2Y0YjdhYTYzOThiNzlmN2Q0MDQiCi1TUkNSRVZfbWV0YSA/PSAiNmFjYWU2ZjcyMDBhZjE3YjNjMmJlNWVjYWIyY2ZmZGM1OWEwMmIzNSIKK1NSQ1JFVl9tYWNoaW5lID89ICJlYjNiMjA3OWVhNDNiNDUxZTA2YmU0NDNmOGJjMTQ2NzM2ZjljNGJjIgorU1JDUkVWX21ldGEgPz0gIjA3NzRlYWNlYTJhN2QzYTE1MDU5NDUzM2I4YzgwZDBjMGJmZGZkZWQiCiAKIFBWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8tNC45LmdpdDticmFuY2g9JHtLQlJBTkNIfTtuYW1lPW1hY2hpbmUgXAogICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuOTtkZXN0c3VmZml4PSR7S01FVEF9IgogCi1DT01QQVRJQkxFX01BQ0hJTkUgPSAiKHFlbXV4ODYkKSIKK0NPTVBBVElCTEVfTUFDSElORSA9ICJxZW11eDg2fHFlbXV4ODYtNjQiCiAKICMgRnVuY3Rpb25hbGl0eSBmbGFncwogS0VSTkVMX0ZFQVRVUkVTID0gIiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYwppbmRleCA2Mzc1MDZhLi45YzFmNjFiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCkBAIC0zMyw3ICszMyw4IEBACiAjIGFuZCBpdCBjYW4gYmUgc3BlY2lmaWMgdG8gdGhlIG1hY2hpbmUgb3Igc2hhcmVkCiAjIEtNQUNISU5FID0gIlVOREVGSU5FRCIKIAotTElOVVhfS0VSTkVMX1RZUEUgPz0gInN0YW5kYXJkIgorIyBUaGUgZGlzdHJvIG9yIGxvY2FsLmNvbmYgc2hvdWxkIHNldCB0aGlzLCBidXQgaWYgbm9ib2R5IGNhcmVzLi4uCitMSU5VWF9LRVJORUxfVFlQRSA/Pz0gInN0YW5kYXJkIgogCiAjIEtNRVRBID89ICIiCiBLQlJBTkNIID89ICJtYXN0ZXIiCkBAIC00OCwxMiArNDksMTEgQEAKIEtDT05GX0JTUF9BVURJVF9MRVZFTCA/PSAiMCIKIEtNRVRBX0FVRElUID89ICJ5ZXMiCiAKLUxJTlVYX1ZFUlNJT05fRVhURU5TSU9OID89ICIteW9jdG8tJHtMSU5VWF9LRVJORUxfVFlQRX0iCitMSU5VWF9WRVJTSU9OX0VYVEVOU0lPTiA/Pz0gIi15b2N0by0ke0xJTlVYX0tFUk5FTF9UWVBFfSIKIAogIyBQaWNrIHVwIHNoYXJlZCBmdW5jdGlvbnMKIGluaGVyaXQga2VybmVsCiBpbmhlcml0IGtlcm5lbC15b2N0bwotcmVxdWlyZSBsaW51eC1kdGIuaW5jCiAKIEIgPSAiJHtXT1JLRElSfS9saW51eC0ke1BBQ0tBR0VfQVJDSH0tJHtMSU5VWF9LRVJORUxfVFlQRX0tYnVpbGQiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzE2YmMzMi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1LQlJBTkNIID89ICJzdGFuZGFyZC9iYXNlIgotCi1yZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYwotCi0jIGJvYXJkIHNwZWNpZmljIGJyYW5jaGVzCi1LQlJBTkNIX3FlbXVhcm0gID89ICJzdGFuZGFyZC9hcm0tdmVyc2F0aWxlLTkyNmVqcyIKLUtCUkFOQ0hfcWVtdWFybTY0ID89ICJzdGFuZGFyZC9xZW11YXJtNjQiCi1LQlJBTkNIX3FlbXVtaXBzID89ICJzdGFuZGFyZC9tdGktbWFsdGEzMiIKLUtCUkFOQ0hfcWVtdXBwYyAgPz0gInN0YW5kYXJkL3FlbXVwcGMiCi1LQlJBTkNIX3FlbXV4ODYgID89ICJzdGFuZGFyZC9iYXNlIgotS0JSQU5DSF9xZW11eDg2LTY0ID89ICJzdGFuZGFyZC9iYXNlIgotS0JSQU5DSF9xZW11bWlwczY0ID89ICJzdGFuZGFyZC9tdGktbWFsdGE2NCIKLQotU1JDUkVWX21hY2hpbmVfcWVtdWFybSA/PSAiNjQyZTliOTVmOTdmOGUwMGVmODE5YmJmYjJmMjgxYzEwNzliZmJiMSIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVhcm02NCA/PSAiNzgyMTMzZDgxNjZhYzcxZWYxZmZhYmE1OGI3Y2Y4MWVjOWU1MzJhMSIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzID89ICI1NGQ0NTc1ZDBkZjE4MDVlMTI3YzVmYTU5MjAxY2Q5Nzg4NDlmYjNmIgotU1JDUkVWX21hY2hpbmVfcWVtdXBwYyA/PSAiNTg5MDZmMjczN2M2NDRlNjdhN2M5NzU0YjdlMzY2MzAwMDVhMDAxMSIKLVNSQ1JFVl9tYWNoaW5lX3FlbXV4ODYgPz0gIjc4MjEzM2Q4MTY2YWM3MWVmMWZmYWJhNThiN2NmODFlYzllNTMyYTEiCi1TUkNSRVZfbWFjaGluZV9xZW11eDg2LTY0ID89ICI3ODIxMzNkODE2NmFjNzFlZjFmZmFiYTU4YjdjZjgxZWM5ZTUzMmExIgotU1JDUkVWX21hY2hpbmVfcWVtdW1pcHM2NCA/PSAiMDNmMGMwMjkzYWJmZTUyMjZjMmZkZDIyMzI4NDc2ODU0ZmEwMTI3ZiIKLVNSQ1JFVl9tYWNoaW5lID89ICI3ODIxMzNkODE2NmFjNzFlZjFmZmFiYTU4YjdjZjgxZWM5ZTUzMmExIgotU1JDUkVWX21ldGEgPz0gIjlmOWM5YTY2ZWYzNDUyMzQzNTg2YWRmMTUwMTM3OTY3ZTk1NWQ3MWEiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8tNC4xLmdpdDtuYW1lPW1hY2hpbmU7YnJhbmNoPSR7S0JSQU5DSH07IFwKLSAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by00LjE7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKLQotTElOVVhfVkVSU0lPTiA/PSAiNC4xLjQzIgotCi1QViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgotCi1LTUVUQSA9ICJrZXJuZWwtbWV0YSIKLUtDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgotCi1DT01QQVRJQkxFX01BQ0hJTkUgPSAicWVtdWFybXxxZW11YXJtNjR8cWVtdXg4NnxxZW11cHBjfHFlbXVtaXBzfHFlbXVtaXBzNjR8cWVtdXg4Ni02NCIKLQotIyBGdW5jdGlvbmFsaXR5IGZsYWdzCi1LRVJORUxfRVhUUkFfRkVBVFVSRVMgPz0gImZlYXR1cmVzL25ldGZpbHRlci9uZXRmaWx0ZXIuc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtLRVJORUxfRVhUUkFfRkVBVFVSRVN9IgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11YWxsPSIgY2ZnL3ZpcnRpby5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODY9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2LTY0PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIm14MzIiLCAiIGNmZy94MzIuc2NjIiwgIiIgLGQpfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjEwLmJiCmluZGV4IDdmY2M3NTMuLjFmZTNjY2EgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMC5iYgpAQCAtMTksNyArMTksNyBAQAogU1JDUkVWX21hY2hpbmVfcWVtdXg4Ni02NCA/PSAiYzFkOGM0NDA4YjhhZWRkODhlZWI2Y2NjODljZTgzNGRkNDFiM2YwOSIKIFNSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzNjQgPz0gIjhiYjEzNWU3MTAzN2M0NjE3NWJiY2M3YWNmMzg3MzA5YjJlMTcxMzMiCiBTUkNSRVZfbWFjaGluZSA/PSAiYzFkOGM0NDA4YjhhZWRkODhlZWI2Y2NjODljZTgzNGRkNDFiM2YwOSIKLVNSQ1JFVl9tZXRhID89ICI0MGVlNDhhYzA5OWMwNGY2MGQyYzEzMjAzMWQ5NjI1YTRlMGM0YzllIgorU1JDUkVWX21ldGEgPz0gIjFkOWE4MjAwMTg0YWYyMmY4OTgxZmEyNGIwZTgyYWY0OWM3OTg4ZGQiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8tNC4xMC5naXQ7bmFtZT1tYWNoaW5lO2JyYW5jaD0ke0tCUkFOQ0h9OyBcCiAgICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNC4xMDtkZXN0c3VmZml4PSR7S01FVEF9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjEwYjgyYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTIuYmIKQEAgLTAsMCArMSw0NCBAQAorS0JSQU5DSCA/PSAic3RhbmRhcmQvYmFzZSIKKworcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKKworIyBib2FyZCBzcGVjaWZpYyBicmFuY2hlcworS0JSQU5DSF9xZW11YXJtICA/PSAic3RhbmRhcmQvYXJtLXZlcnNhdGlsZS05MjZlanMiCitLQlJBTkNIX3FlbXVhcm02NCA/PSAic3RhbmRhcmQvcWVtdWFybTY0IgorS0JSQU5DSF9xZW11bWlwcyA/PSAic3RhbmRhcmQvbXRpLW1hbHRhMzIiCitLQlJBTkNIX3FlbXVwcGMgID89ICJzdGFuZGFyZC9xZW11cHBjIgorS0JSQU5DSF9xZW11eDg2ICA/PSAic3RhbmRhcmQvYmFzZSIKK0tCUkFOQ0hfcWVtdXg4Ni02NCA/PSAic3RhbmRhcmQvYmFzZSIKK0tCUkFOQ0hfcWVtdW1pcHM2NCA/PSAic3RhbmRhcmQvbXRpLW1hbHRhNjQiCisKK1NSQ1JFVl9tYWNoaW5lX3FlbXVhcm0gPz0gIjZlNWE5OWRiM2E0OTVlMDIzMDQxYTMwZDQzMjYyMDQ3Nzk1ZTY0NWEiCitTUkNSRVZfbWFjaGluZV9xZW11YXJtNjQgPz0gIjQwMTQ2MDU1Njc3YTY5NzMwYjJjMzZkYTFjOGMxYjRlOWJhZTdiYjAiCitTUkNSRVZfbWFjaGluZV9xZW11bWlwcyA/PSAiNDNkYzQ3ZjkwMDA3ZDU0YzcwODZjYzAzYjI4ZTk0NmUzMDEzNWYxYyIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVwcGMgPz0gIjQwMTQ2MDU1Njc3YTY5NzMwYjJjMzZkYTFjOGMxYjRlOWJhZTdiYjAiCitTUkNSRVZfbWFjaGluZV9xZW11eDg2ID89ICI0MDE0NjA1NTY3N2E2OTczMGIyYzM2ZGExYzhjMWI0ZTliYWU3YmIwIgorU1JDUkVWX21hY2hpbmVfcWVtdXg4Ni02NCA/PSAiNDAxNDYwNTU2NzdhNjk3MzBiMmMzNmRhMWM4YzFiNGU5YmFlN2JiMCIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzNjQgPz0gIjY5ZjBjOTZkOGU0N2IwZGNjZmIzNzQ4MDlkNzI5ZjAwNDJjNzc4NjgiCitTUkNSRVZfbWFjaGluZSA/PSAiNDAxNDYwNTU2NzdhNjk3MzBiMmMzNmRhMWM4YzFiNGU5YmFlN2JiMCIKK1NSQ1JFVl9tZXRhID89ICIxOWQ4MTVkNWEzNGJmYWFkOTVkODdjYzA5N2NlZjE4YjU5NGRhYWM4IgorCitTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLTQuMTIuZ2l0O25hbWU9bWFjaGluZTticmFuY2g9JHtLQlJBTkNIfTsgXAorICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuMTI7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKKworTElOVVhfVkVSU0lPTiA/PSAiNC4xMi4yMCIKKworUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKKworS01FVEEgPSAia2VybmVsLW1ldGEiCitLQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKKworS0VSTkVMX0RFVklDRVRSRUVfcWVtdWFybSA9ICJ2ZXJzYXRpbGUtcGIuZHRiIgorCitDT01QQVRJQkxFX01BQ0hJTkUgPSAicWVtdWFybXxxZW11YXJtNjR8cWVtdXg4NnxxZW11cHBjfHFlbXVtaXBzfHFlbXVtaXBzNjR8cWVtdXg4Ni02NCIKKworIyBGdW5jdGlvbmFsaXR5IGZsYWdzCitLRVJORUxfRVhUUkFfRkVBVFVSRVMgPz0gImZlYXR1cmVzL25ldGZpbHRlci9uZXRmaWx0ZXIuc2NjIgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtLRVJORUxfRVhUUkFfRkVBVFVSRVN9IgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11YWxsPSIgY2ZnL3ZpcnRpby5zY2MiCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODY9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2LTY0PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIm14MzIiLCAiIGNmZy94MzIuc2NjIiwgIiIgLGQpfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuNC5iYgppbmRleCBkMzAwZTY5Li45N2MxNmQ1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC40LmJiCkBAIC0xMSwyMCArMTEsMjAgQEAKIEtCUkFOQ0hfcWVtdXg4Ni02NCA/PSAic3RhbmRhcmQvYmFzZSIKIEtCUkFOQ0hfcWVtdW1pcHM2NCA/PSAic3RhbmRhcmQvbXRpLW1hbHRhNjQiCiAKLVNSQ1JFVl9tYWNoaW5lX3FlbXVhcm0gPz0gIjg0MGUyYzAyZGRlOThlZTljNTg0Y2FjZGQ1YmIwODEyZTlkY2QwMTYiCi1TUkNSRVZfbWFjaGluZV9xZW11YXJtNjQgPz0gImI3MWM3Yjc4NmFlZDI2YzBhMWU0ZWNhNjZmMWQ4NzRlYzAxN2Q2OTkiCi1TUkNSRVZfbWFjaGluZV9xZW11bWlwcyA/PSAiMjdhNTQ3ZmU3N2IwNWFlNjNjM2I5NzNhMDI5YzM5MzNlZjYyYzE2NCIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVwcGMgPz0gImI3MWM3Yjc4NmFlZDI2YzBhMWU0ZWNhNjZmMWQ4NzRlYzAxN2Q2OTkiCi1TUkNSRVZfbWFjaGluZV9xZW11eDg2ID89ICJiNzFjN2I3ODZhZWQyNmMwYTFlNGVjYTY2ZjFkODc0ZWMwMTdkNjk5IgotU1JDUkVWX21hY2hpbmVfcWVtdXg4Ni02NCA/PSAiYjcxYzdiNzg2YWVkMjZjMGExZTRlY2E2NmYxZDg3NGVjMDE3ZDY5OSIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzNjQgPz0gIjdlMzMzYzIyM2I1Njg3MDRjYzMzMDNiMmU5MjJmZjg1YTJhOGY3ZWYiCi1TUkNSRVZfbWFjaGluZSA/PSAiYjcxYzdiNzg2YWVkMjZjMGExZTRlY2E2NmYxZDg3NGVjMDE3ZDY5OSIKLVNSQ1JFVl9tZXRhID89ICI4MDRkMmIzMTY0ZWMyNWVkNTE5ZmQ2OTVkZTlhYTA5MDg0NjBjOTJlIgorU1JDUkVWX21hY2hpbmVfcWVtdWFybSA/PSAiNDAwYzBmMzliOTU0Y2Q4ZmZmZGY1M2U2ZWM5Nzg1MmI3M2ZlYTdhZiIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVhcm02NCA/PSAiNGQzMWE4Yjc2NjE1MDlmZjEwNDRhYmNmOTA1MDc1MGNjMjQ3OGUyMCIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzID89ICJmYjAzYTk0NzIzNjdiNmMxNzc3MjlhYzYzMTMyNmFhZmQ1ZDE3YzkyIgorU1JDUkVWX21hY2hpbmVfcWVtdXBwYyA/PSAiNGQzMWE4Yjc2NjE1MDlmZjEwNDRhYmNmOTA1MDc1MGNjMjQ3OGUyMCIKK1NSQ1JFVl9tYWNoaW5lX3FlbXV4ODYgPz0gIjRkMzFhOGI3NjYxNTA5ZmYxMDQ0YWJjZjkwNTA3NTBjYzI0NzhlMjAiCitTUkNSRVZfbWFjaGluZV9xZW11eDg2LTY0ID89ICI0ZDMxYThiNzY2MTUwOWZmMTA0NGFiY2Y5MDUwNzUwY2MyNDc4ZTIwIgorU1JDUkVWX21hY2hpbmVfcWVtdW1pcHM2NCA/PSAiMjZiOGJhMTg2YTZkMzk3MjhmYzE1MTBiZDIyNjQxMTBjNzU4NDJmNSIKK1NSQ1JFVl9tYWNoaW5lID89ICI0ZDMxYThiNzY2MTUwOWZmMTA0NGFiY2Y5MDUwNzUwY2MyNDc4ZTIwIgorU1JDUkVWX21ldGEgPz0gImIxNDlkMTRjY2FlODM0OWFiMzNlMTAxZjZhZjIzM2ExMmY0YjE3YmEiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8tNC40LmdpdDtuYW1lPW1hY2hpbmU7YnJhbmNoPSR7S0JSQU5DSH07IFwKICAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by00LjQ7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKIAotTElOVVhfVkVSU0lPTiA/PSAiNC40Ljg3IgorTElOVVhfVkVSU0lPTiA/PSAiNC40LjExMyIKIAogUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC45LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC45LmJiCmluZGV4IGRiZTQwYTMuLmE1YTE2NWYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuOS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjkuYmIKQEAgLTExLDIwICsxMSwyMCBAQAogS0JSQU5DSF9xZW11eDg2LTY0ID89ICJzdGFuZGFyZC9iYXNlIgogS0JSQU5DSF9xZW11bWlwczY0ID89ICJzdGFuZGFyZC9tdGktbWFsdGE2NCIKIAotU1JDUkVWX21hY2hpbmVfcWVtdWFybSA/PSAiOGNhYTM1YTc0NzUzZDQ1MTc4NzIwOTMzZjAzZDhkNTE1MGE4ZmYxNyIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVhcm02NCA/PSAiNDgwZWU1OTlmYjhkZjcxMmMxMGRjZjRiN2FhNjM5OGI3OWY3ZDQwNCIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzID89ICJmYzJhM2I5ZjkzMjc3OWZkZjA1MzY3NWE1YTczZThmOTkxNzUwN2E1IgotU1JDUkVWX21hY2hpbmVfcWVtdXBwYyA/PSAiNDgwZWU1OTlmYjhkZjcxMmMxMGRjZjRiN2FhNjM5OGI3OWY3ZDQwNCIKLVNSQ1JFVl9tYWNoaW5lX3FlbXV4ODYgPz0gIjQ4MGVlNTk5ZmI4ZGY3MTJjMTBkY2Y0YjdhYTYzOThiNzlmN2Q0MDQiCi1TUkNSRVZfbWFjaGluZV9xZW11eDg2LTY0ID89ICI0ODBlZTU5OWZiOGRmNzEyYzEwZGNmNGI3YWE2Mzk4Yjc5ZjdkNDA0IgotU1JDUkVWX21hY2hpbmVfcWVtdW1pcHM2NCA/PSAiYWVlNjM5NzgwMDVjMDRlYTg1MzA5OTc2NGFjYWEwODEzMGU2NTU1NCIKLVNSQ1JFVl9tYWNoaW5lID89ICI0ODBlZTU5OWZiOGRmNzEyYzEwZGNmNGI3YWE2Mzk4Yjc5ZjdkNDA0IgotU1JDUkVWX21ldGEgPz0gIjZhY2FlNmY3MjAwYWYxN2IzYzJiZTVlY2FiMmNmZmRjNTlhMDJiMzUiCitTUkNSRVZfbWFjaGluZV9xZW11YXJtID89ICIyMzM2OWViN2UwN2M4MzlmYTczYThjMWU4NWFiYTM3YTA3YmYxNGMxIgorU1JDUkVWX21hY2hpbmVfcWVtdWFybTY0ID89ICJlYjNiMjA3OWVhNDNiNDUxZTA2YmU0NDNmOGJjMTQ2NzM2ZjljNGJjIgorU1JDUkVWX21hY2hpbmVfcWVtdW1pcHMgPz0gImNhYjllMDU5NDQ3ODc4ZjUzODNmOTFhMDVkYjEyODEzZjY5Y2JmYzEiCitTUkNSRVZfbWFjaGluZV9xZW11cHBjID89ICJlYjNiMjA3OWVhNDNiNDUxZTA2YmU0NDNmOGJjMTQ2NzM2ZjljNGJjIgorU1JDUkVWX21hY2hpbmVfcWVtdXg4NiA/PSAiZWIzYjIwNzllYTQzYjQ1MWUwNmJlNDQzZjhiYzE0NjczNmY5YzRiYyIKK1NSQ1JFVl9tYWNoaW5lX3FlbXV4ODYtNjQgPz0gImViM2IyMDc5ZWE0M2I0NTFlMDZiZTQ0M2Y4YmMxNDY3MzZmOWM0YmMiCitTUkNSRVZfbWFjaGluZV9xZW11bWlwczY0ID89ICJjMmU1ZWY4M2I2MTJkNTBmNTBmYWZlZWQ5OTMwZGJlYTMwMmZiZThjIgorU1JDUkVWX21hY2hpbmUgPz0gImViM2IyMDc5ZWE0M2I0NTFlMDZiZTQ0M2Y4YmMxNDY3MzZmOWM0YmMiCitTUkNSRVZfbWV0YSA/PSAiMDc3NGVhY2VhMmE3ZDNhMTUwNTk0NTMzYjhjODBkMGMwYmZkZmRlZCIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by00LjkuZ2l0O25hbWU9bWFjaGluZTticmFuY2g9JHtLQlJBTkNIfTsgXAogICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuOTtkZXN0c3VmZml4PSR7S01FVEF9IgogCi1MSU5VWF9WRVJTSU9OID89ICI0LjkuNDkiCitMSU5VWF9WRVJTSU9OID89ICI0LjkuODIiCiAKIFBWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2VfMS41LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9iYWJlbHRyYWNlXzEuNS4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjN2VhNWMxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2VfMS41LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1TVU1NQVJZID0gIkJhYmVsdHJhY2UgLSBUcmFjZSBGb3JtYXQgQmFiZWwgVG93ZXIiCi1ERVNDUklQVElPTiA9ICJCYWJlbHRyYWNlIHByb3ZpZGVzIHRyYWNlIHJlYWQgYW5kIHdyaXRlIGxpYnJhcmllcyBpbiBob3N0IHNpZGUsIGFzIHdlbGwgYXMgYSB0cmFjZSBjb252ZXJ0ZXIsIHdoaWNoIHVzZWQgdG8gY29udmVydCBMVFRuZyAyLjAgdHJhY2VzIGludG8gaHVtYW4tcmVhZGFibGUgbG9nLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZWZmaWNpb3MuY29tL2JhYmVsdHJhY2UvIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MubHR0bmcub3JnL3Byb2plY3RzL2JhYmVsdHJhY2UiCi0KLUxJQ0VOU0UgPSAiTUlUICYgR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT03NmJhMTVkZDc2YTI0OGUxZGQ1MjZiY2EwZTIxMjVmYSIKLQotREVQRU5EUyA9ICJnbGliLTIuMCB1dGlsLWxpbnV4IHBvcHQgYmlzb24tbmF0aXZlIGZsZXgtbmF0aXZlIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmVmZmljaW9zLmNvbS9maWxlcy9iYWJlbHRyYWNlL2JhYmVsdHJhY2UtJHtQVn0udGFyLmJ6MiBcCi0iCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZGVidWctaW5mbyIKLQotU1JDX1VSSVttZDVzdW1dID0gIjExNzZlN2Y2OWUxMjgxMTJkNWYyOWZlZmVjMzljNmNlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY5NmVlNDZlNTc1MGFiNTdhMjU4NjYzZTczOTE1ZDI5MDFiN2NkNGZjNTNiMDZlYjNmN2EwZDdiMTAxMmZhNTYiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9iYWJlbHRyYWNlXzEuNS4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZV8xLjUuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDgxZGEwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZV8xLjUuMy5iYgpAQCAtMCwwICsxLDE5IEBACitTVU1NQVJZID0gIkJhYmVsdHJhY2UgLSBUcmFjZSBGb3JtYXQgQmFiZWwgVG93ZXIiCitERVNDUklQVElPTiA9ICJCYWJlbHRyYWNlIHByb3ZpZGVzIHRyYWNlIHJlYWQgYW5kIHdyaXRlIGxpYnJhcmllcyBpbiBob3N0IHNpZGUsIGFzIHdlbGwgYXMgYSB0cmFjZSBjb252ZXJ0ZXIsIHdoaWNoIHVzZWQgdG8gY29udmVydCBMVFRuZyAyLjAgdHJhY2VzIGludG8gaHVtYW4tcmVhZGFibGUgbG9nLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZWZmaWNpb3MuY29tL2JhYmVsdHJhY2UvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MubHR0bmcub3JnL3Byb2plY3RzL2JhYmVsdHJhY2UiCisKK0xJQ0VOU0UgPSAiTUlUICYgR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT03NmJhMTVkZDc2YTI0OGUxZGQ1MjZiY2EwZTIxMjVmYSIKKworREVQRU5EUyA9ICJnbGliLTIuMCB1dGlsLWxpbnV4IHBvcHQgYmlzb24tbmF0aXZlIGZsZXgtbmF0aXZlIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmVmZmljaW9zLmNvbS9maWxlcy9iYWJlbHRyYWNlL2JhYmVsdHJhY2UtJHtQVn0udGFyLmJ6MiBcCisiCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZGVidWctaW5mbyIKKworU1JDX1VSSVttZDVzdW1dID0gIjBjZWMyNzQ1YWMzMTY2NDk3OTFjNDNmNDE2ZDcxZWExIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIyNDlmZWU1YmViYTY1NzczMWY1ZDZhODRjNTI5NmM2NTE3ZjU0NGJmYmU3NTcxYmQxZmQ3YWYyMzcyNjEzN2MiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy1tb2R1bGVzL0JVSUxEX1JVTlRJTUVfQlVHX09OLXZzLWdjYzcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy1tb2R1bGVzL0JVSUxEX1JVTlRJTUVfQlVHX09OLXZzLWdjYzcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzYwNjM2MAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLW1vZHVsZXMvQlVJTERfUlVOVElNRV9CVUdfT04tdnMtZ2NjNy5wYXRjaApAQCAtMCwwICsxLDQzIEBACitGcm9tIGFiMDc1NzRlZjkwZmE1MTBmMjkzYzM3ODk3ZDU3NzA2NmE4OGZlMGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBOYXRoYW4gTHluY2ggPG5hdGhhbl9seW5jaEBtZW50b3IuY29tPgorRGF0ZTogVHVlLCAyNSBBcHIgMjAxNyAxNjoyNjo1NyAtMDUwMAorU3ViamVjdDogW1BBVENIXSBCVUlMRF9SVU5USU1FX0JVR19PTiB2cyBnY2M3CisKK0F2b2lkIHVzaW5nIExUVG5nJ3MgQlVJTERfUlVOVElNRV9CVUdfT04gbWFjcm8sIGFzIGl0IGFwcGVhcnMgdG8gcnVuCitpbnRvIGEgc2ltaWxhciBwcm9ibGVtIGFzIExpbnV4IGV4cGVyaWVuY2VkIHdpdGggaWxvZzIuCisKK1NlZToKK2h0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3RvcnZhbGRzL2xpbnV4LmdpdC9jb21taXQvP2lkPTQ3NGM5MDE1NmM4ZGNjMmZhODE1ZTY3MTZjYzkzOTRkNzkzMGNiOWMKK2h0dHBzOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTcyNzg1CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogTmF0aGFuIEx5bmNoIDxuYXRoYW5fbHluY2hAbWVudG9yLmNvbT4KKy0tLQorIGxpYi9hbGlnbi5oIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYi9hbGlnbi5oIGIvbGliL2FsaWduLmgKK2luZGV4IDViOTFhZTg3NDEwYi4uNWUxMzRjZDQ4NWZlIDEwMDY0NAorLS0tIGEvbGliL2FsaWduLmgKKysrKyBiL2xpYi9hbGlnbi5oCitAQCAtNDgsNyArNDgsNyBAQAorICAqLworICNkZWZpbmUgb2Zmc2V0X2FsaWduKGFsaWduX2RyaWZ0LCBhbGlnbm1lbnQpCQkJCSAgICAgICBcCisgCSh7CQkJCQkJCQkgICAgICAgXAorLQkJQlVJTERfUlVOVElNRV9CVUdfT04oKGFsaWdubWVudCkgPT0gMAkJCSAgICAgICBcCisrCQlCVUdfT04oKGFsaWdubWVudCkgPT0gMAkJCQkJICAgICAgIFwKKyAJCQkJICAgfHwgKChhbGlnbm1lbnQpICYgKChhbGlnbm1lbnQpIC0gMSkpKTsgICAgICBcCisgCQkoKChhbGlnbm1lbnQpIC0gKGFsaWduX2RyaWZ0KSkgJiAoKGFsaWdubWVudCkgLSAxKSk7CSAgICAgICBcCisgCX0pCitAQCAtNjMsNyArNjMsNyBAQAorICAqLworICNkZWZpbmUgb2Zmc2V0X2FsaWduX2Zsb29yKGFsaWduX2RyaWZ0LCBhbGlnbm1lbnQpCQkJICAgICAgIFwKKyAJKHsJCQkJCQkJCSAgICAgICBcCistCQlCVUlMRF9SVU5USU1FX0JVR19PTigoYWxpZ25tZW50KSA9PSAwCQkJICAgICAgIFwKKysJCUJVR19PTigoYWxpZ25tZW50KSA9PSAwCQkJCQkgICAgICAgXAorIAkJCQkgICB8fCAoKGFsaWdubWVudCkgJiAoKGFsaWdubWVudCkgLSAxKSkpOyAgICAgIFwKKyAJCSgoKGFsaWduX2RyaWZ0KSAtIChhbGlnbm1lbnQpKSAmICgoYWxpZ25tZW50KSAtIDEpKTsJICAgICAgIFwKKyAJfSkKKy0tIAorMi45LjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctbW9kdWxlcy9NYWtlZmlsZS1Eby1ub3QtZmFpbC1pZi1DT05GSUdfVFJBQ0VQT0lOVFMtaXMtbm90LWVuLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctbW9kdWxlcy9NYWtlZmlsZS1Eby1ub3QtZmFpbC1pZi1DT05GSUdfVFJBQ0VQT0lOVFMtaXMtbm90LWVuLnBhdGNoCmluZGV4IDZhOTFmMzIuLmU0MTEyNDIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLW1vZHVsZXMvTWFrZWZpbGUtRG8tbm90LWZhaWwtaWYtQ09ORklHX1RSQUNFUE9JTlRTLWlzLW5vdC1lbi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy1tb2R1bGVzL01ha2VmaWxlLURvLW5vdC1mYWlsLWlmLUNPTkZJR19UUkFDRVBPSU5UUy1pcy1ub3QtZW4ucGF0Y2gKQEAgLTEwLDcgKzEwLDcgQEAKIFRoaXMgY2hhbmdlIG1ha2VzIHRoZSBidWlsZCBkbyBub3QgZmFpbCB3aGVuIENPTkZJR19UUkFDRVBPSU5UUyBpcyBub3QKIGF2YWlsYWJsZSwgYWxsb3dpbmcgaXQgdG8gYmUga2VwdCBiZWluZyBwdWxsZWQgYnkgZGVmYXVsdC4KIAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KIAogU2lnbmVkLW9mZi1ieTogT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW9Ab3NzeXN0ZW1zLmNvbS5icj4KIC0tLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctbW9kdWxlc18yLjkuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLW1vZHVsZXNfMi45LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiZmY3OWQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctbW9kdWxlc18yLjkuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLVNFQ1RJT04gPSAiZGV2ZWwiCi1TVU1NQVJZID0gIkxpbnV4IFRyYWNlIFRvb2xraXQgS0VSTkVMIE1PRFVMRSIKLURFU0NSSVBUSU9OID0gIlRoZSBsdHRuZy1tb2R1bGVzIDIuMCBwYWNrYWdlIGNvbnRhaW5zIHRoZSBrZXJuZWwgdHJhY2VyIG1vZHVsZXMiCi1MSUNFTlNFID0gIkxHUEx2Mi4xICYgR1BMdjIgJiBNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zNjI4NDQ2MzNhMDg3NTNiZDk2YWIzMjJhNmM3ZjlmNiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ncGwtMi4wLnR4dDttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGdwbC0yLjEudHh0O21kNT0yNDNiNzI1ZDcxYmI1ZGY0YTFlNTkyMGIzNDRiODZhZCIKLQotaW5oZXJpdCBtb2R1bGUKLQotQ09NUEFUSUJMRV9IT1NUID0gJyh4ODZfNjR8aS44Nnxwb3dlcnBjfGFhcmNoNjR8bWlwc3xuaW9zMnxhcm0pLiotbGludXgnCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9sdHRuZy5vcmcvZmlsZXMvJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL01ha2VmaWxlLURvLW5vdC1mYWlsLWlmLUNPTkZJR19UUkFDRVBPSU5UUy1pcy1ub3QtZW4ucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI1YTE2YmNhNTIyMzNjYzJiZGZmNTcyYjExMjBhODhmNiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2MjA3OGZlMzI1NGNhNjU5NjlkYjRiNzJlNTkwNDJjZDc5N2RiZjI3NDA4NDhmOGY4MjM4NDg3N2FlNDYwZDU0IgotCi1leHBvcnQgSU5TVEFMTF9NT0RfRElSPSJrZXJuZWwvbHR0bmctbW9kdWxlcyIKLQotRVhUUkFfT0VNQUtFICs9ICJLRVJORUxESVI9JyR7U1RBR0lOR19LRVJORUxfRElSfSciCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCSMgRGVsZXRlIGVtcHR5IGRpcmVjdG9yaWVzIHRvIGF2b2lkIFFBIGZhaWx1cmVzIGlmIG5vIG1vZHVsZXMgd2VyZSBidWlsdAotCWZpbmQgJHtEfS8ke25vbmFyY2hfYmFzZV9saWJkaXJ9IC1kZXB0aCAtdHlwZSBkIC1lbXB0eSAtZXhlYyBybWRpciB7fSBcOwotfQotCi1weXRob24gZG9fcGFja2FnZV9wcmVwZW5kKCkgewotICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oZC5nZXRWYXIoJ0QnKSwgZC5nZXRWYXIoJ25vbmFyY2hfYmFzZV9saWJkaXInKVsxOl0sICdtb2R1bGVzJykpOgotICAgICAgICBiYi53YXJuKCIlczogbm8gbW9kdWxlcyB3ZXJlIGNyZWF0ZWQ7IHRoaXMgbWF5IGJlIGR1ZSB0byBDT05GSUdfVFJBQ0VQT0lOVFMgbm90IGJlaW5nIGVuYWJsZWQgaW4geW91ciBrZXJuZWwuIiAlIGQuZ2V0VmFyKCdQTicpKQotfQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy1tb2R1bGVzXzIuOS41LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctbW9kdWxlc18yLjkuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MWQ5NzQ0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctbW9kdWxlc18yLjkuNS5iYgpAQCAtMCwwICsxLDM0IEBACitTRUNUSU9OID0gImRldmVsIgorU1VNTUFSWSA9ICJMaW51eCBUcmFjZSBUb29sa2l0IEtFUk5FTCBNT0RVTEUiCitERVNDUklQVElPTiA9ICJUaGUgbHR0bmctbW9kdWxlcyAyLjAgcGFja2FnZSBjb250YWlucyB0aGUga2VybmVsIHRyYWNlciBtb2R1bGVzIgorTElDRU5TRSA9ICJMR1BMdjIuMSAmIEdQTHYyICYgTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MzYyODQ0NjMzYTA4NzUzYmQ5NmFiMzIyYTZjN2Y5ZjYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3BsLTIuMC50eHQ7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xncGwtMi4xLnR4dDttZDU9MjQzYjcyNWQ3MWJiNWRmNGExZTU5MjBiMzQ0Yjg2YWQiCisKK2luaGVyaXQgbW9kdWxlCisKK0NPTVBBVElCTEVfSE9TVCA9ICcoeDg2XzY0fGkuODZ8cG93ZXJwY3xhYXJjaDY0fG1pcHN8bmlvczJ8YXJtKS4qLWxpbnV4JworCitTUkNfVVJJID0gImh0dHBzOi8vbHR0bmcub3JnL2ZpbGVzLyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS1Eby1ub3QtZmFpbC1pZi1DT05GSUdfVFJBQ0VQT0lOVFMtaXMtbm90LWVuLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0JVSUxEX1JVTlRJTUVfQlVHX09OLXZzLWdjYzcucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYWY5N2FhYWY4NjEzM2ZkNzgzYmI5OTM3ZGMzYjRkNTkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2Y0ZTgyY2ViMWMzYzE4NzVlYzFmZTg5ZmJhMDgyOTRlZDdmZWVjMjE2MTMzOWE1YTcxYTA2NmIyN2ZjM2UyMiIKKworZXhwb3J0IElOU1RBTExfTU9EX0RJUj0ia2VybmVsL2x0dG5nLW1vZHVsZXMiCisKK0VYVFJBX09FTUFLRSArPSAiS0VSTkVMRElSPScke1NUQUdJTkdfS0VSTkVMX0RJUn0nIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwkjIERlbGV0ZSBlbXB0eSBkaXJlY3RvcmllcyB0byBhdm9pZCBRQSBmYWlsdXJlcyBpZiBubyBtb2R1bGVzIHdlcmUgYnVpbHQKKwlmaW5kICR7RH0vJHtub25hcmNoX2Jhc2VfbGliZGlyfSAtZGVwdGggLXR5cGUgZCAtZW1wdHkgLWV4ZWMgcm1kaXIge30gXDsKK30KKworcHl0aG9uIGRvX3BhY2thZ2VfcHJlcGVuZCgpIHsKKyAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKGQuZ2V0VmFyKCdEJyksIGQuZ2V0VmFyKCdub25hcmNoX2Jhc2VfbGliZGlyJylbMTpdLCAnbW9kdWxlcycpKToKKyAgICAgICAgYmIud2FybigiJXM6IG5vIG1vZHVsZXMgd2VyZSBjcmVhdGVkOyB0aGlzIG1heSBiZSBkdWUgdG8gQ09ORklHX1RSQUNFUE9JTlRTIG5vdCBiZWluZyBlbmFibGVkIGluIHlvdXIga2VybmVsLiIgJSBkLmdldFZhcignUE4nKSkKK30KKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHNfMi45LjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29sc18yLjkuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmJmM2FlOS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29sc18yLjkuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEyMiArMCwwIEBACi1TRUNUSU9OID0gImRldmVsIgotU1VNTUFSWSA9ICJMaW51eCBUcmFjZSBUb29sa2l0IENvbnRyb2wiCi1ERVNDUklQVElPTiA9ICJUaGUgTGludXggdHJhY2UgdG9vbGtpdCBpcyBhIHN1aXRlIG9mIHRvb2xzIGRlc2lnbmVkIFwKLXRvIGV4dHJhY3QgcHJvZ3JhbSBleGVjdXRpb24gZGV0YWlscyBmcm9tIHRoZSBMaW51eCBvcGVyYXRpbmcgc3lzdGVtIFwKLWFuZCBpbnRlcnByZXQgdGhlbS4iCi0KLUxJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTAxZDdmYzQ0OTZhYWNmMzdkOTBkZjkwYjkwYjBjYWMxIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dwbC0yLjAudHh0O21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9sZ3BsLTIuMS50eHQ7bWQ1PTBmMGQ3MTUwMGU2YTU3ZmQyNGQ4MjVmMzMyNDJiOWNhIgotCi1ERVBFTkRTID0gImxpYnVyY3UgcG9wdCBsaWJ4bWwyIHV0aWwtbGludXgiCi1SREVQRU5EU18ke1BOfSA9ICJsaWJnY2MiCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSBwZXJsIGJhc2ggZ2F3ayAke1BOfSBiYWJlbHRyYWNlIHByb2NwcyIKLSMgYmFiZWxzdGF0cy5wbCB3YW50cyBnZXRvcHQtbG9uZwotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gInBlcmwtbW9kdWxlLWdldG9wdC1sb25nIgotCi1QWVRIT05fT1BUSU9OID0gImFtX2N2X3B5dGhvbl9weWV4ZWNkaXI9JyR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9JyBcCi0gICAgICAgICAgICAgICAgIGFtX2N2X3B5dGhvbl9weXRob25kaXI9JyR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9JyBcCi0gICAgICAgICAgICAgICAgIFBZVEhPTl9JTkNMVURFPSctSSR7U1RBR0lOR19JTkNESVJ9L3B5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfSR7UFlUSE9OX0FCSX0nIFwKLSIKLVBBQ0tBR0VDT05GSUcgPz89ICJsdHRuZy11c3QiCi1QQUNLQUdFQ09ORklHW3B5dGhvbl0gPSAiLS1lbmFibGUtcHl0aG9uLWJpbmRpbmdzICR7UFlUSE9OX09QVElPTn0sLHB5dGhvbjMgc3dpZy1uYXRpdmUiCi1QQUNLQUdFQ09ORklHW2x0dG5nLXVzdF0gPSAiLS13aXRoLWx0dG5nLXVzdCwgLS13aXRob3V0LWx0dG5nLXVzdCwgbHR0bmctdXN0IgotUEFDS0FHRUNPTkZJR1trbW9kXSA9ICItLWVuYWJsZS1rbW9kLCAtLWRpc2FibGUta21vZCwga21vZCIKLVBBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLW1hbi1wYWdlcywgLS1kaXNhYmxlLW1hbi1wYWdlcywgYXNjaWlkb2MtbmF0aXZlIHhtbHRvLW5hdGl2ZSBsaWJ4c2x0LW5hdGl2ZSIKLVBBQ0tBR0VDT05GSUdfcmVtb3ZlX2xpYmMtbXVzbCA9ICJsdHRuZy11c3QiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9sdHRuZy5vcmcvZmlsZXMvbHR0bmctdG9vbHMvbHR0bmctdG9vbHMtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly94MzIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMTBmNDdhYmZhMjE0YjE2NzU4MDM1ODM4ODQyODc3MGQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2M3MjQ1NmJjZWVmOTYxZmFkMWQwODYxZjA3NDc4ZGIxNmI3NjU5ZWZhNjkwOTliYTM2NjQ1ZGE4OWNhMmNjNSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcHRlc3QgcGtnY29uZmlnIHVzZXJhZGQgcHl0aG9uMy1kaXIgbWFucGFnZXMKLQotVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKLUdST1VQQUREX1BBUkFNXyR7UE59ID0gInRyYWNpbmciCi0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vbHR0bmcvbGliZXhlYy8qICR7ZGF0YWRpcn0veG1sL2x0dG5nIFwKLSAgICAgICAgICAgICAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qIgotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qLmEiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyoubGEiCi0KLSMgU2luY2UgZmlsZXMgYXJlIGluc3RhbGxlZCBpbnRvICR7bGliZGlyfS9sdHRuZy9saWJleGVjIHdlIG1hdGNoIAotIyB0aGUgbGliZXhlYyBpbnNhbmUgdGVzdCBzbyBza2lwIGl0LgotIyBQeXRob24gbW9kdWxlIG5lZWRzIHRvIGtlZXAgX2x0dG5nLnNvCi1JTlNBTkVfU0tJUF8ke1BOfSA9ICJsaWJleGVjIGRldi1zbyIKLUlOU0FORV9TS0lQXyR7UE59LWRiZyA9ICJsaWJleGVjIgotCi1kb19pbnN0YWxsX3B0ZXN0ICgpIHsKLSAgICBmb3IgZiBpbiBNYWtlZmlsZSB0ZXN0cy9NYWtlZmlsZSB0ZXN0cy91dGlscy91dGlscy5zaCA7IGRvCi0gICAgICAgIGluc3RhbGwgLUQgIiR7Qn0vJGYiICIke0R9JHtQVEVTVF9QQVRIfS8kZiIKLSAgICBkb25lCi0KLSAgICBmb3IgZiBpbiBjb25maWcvdGFwLWRyaXZlci5zaCBjb25maWcvdGVzdC1kcml2ZXIgOyBkbwotICAgICAgICBpbnN0YWxsIC1EICIke1N9LyRmIiAiJHtEfSR7UFRFU1RfUEFUSH0vJGYiCi0gICAgZG9uZQotCi0gICAgIyBQcmV2ZW50ICdtYWtlIGNoZWNrJyBmcm9tIHJlY3Vyc2luZyBpbnRvIG5vbi10ZXN0IHN1YmRpcmVjdG9yaWVzLgotICAgIHNlZCAtaSAtZSAncyFeU1VCRElSUyA9IC4qIVNVQkRJUlMgPSB0ZXN0cyEnICIke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZSIKLQotICAgICMgV2UgZG9uJ3QgbmVlZCB0aGVzZQotICAgIHNlZCAtaSAtZSAnL2Rpc3Rfbm9pbnN0X1NDUklQVFMgPSAvLC9eJC9kJyAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvTWFrZWZpbGUiCi0KLSAgICAjIFdlIHNob3VsZG4ndCBuZWVkIHRvIGJ1aWxkIGFueXRoaW5nIGluIHRlc3RzL3V0aWxzCi0gICAgc2VkIC1pIC1lICdzIWFtX19hcHBlbmRfMSA9IC4gdXRpbHMhYW1fX2FwcGVuZF8xID0gLiAhJyBcCi0gICAgICAgICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9NYWtlZmlsZSIKLQotICAgICMgQ29weSB0aGUgdGVzdHMgZGlyZWN0b3J5IHRyZWUgYW5kIHRoZSBleGVjdXRhYmxlcyBhbmQKLSAgICAjIE1ha2VmaWxlcyBmb3VuZCB3aXRoaW4uCi0gICAgZm9yIGQgaW4gJChmaW5kICIke0J9L3Rlc3RzIiAtdHlwZSBkIC1ub3QgLW5hbWUgLmxpYnMgLXByaW50ZiAnJVAgJykgOyBkbwotICAgICAgICBpbnN0YWxsIC1kICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8kZCIKLSAgICAgICAgZmluZCAiJHtCfS90ZXN0cy8kZCIgLW1heGRlcHRoIDEgLWV4ZWN1dGFibGUgLXR5cGUgZiBcCi0gICAgICAgICAgICAtZXhlYyBpbnN0YWxsIC10ICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8kZCIge30gKwotICAgICAgICB0ZXN0IC1yICIke0J9L3Rlc3RzLyRkL01ha2VmaWxlIiAmJiBcCi0gICAgICAgICAgICBpbnN0YWxsIC10ICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8kZCIgIiR7Qn0vdGVzdHMvJGQvTWFrZWZpbGUiCi0gICAgZG9uZQotCi0gICAgIyBXZSBzaG91bGRuJ3QgbmVlZCB0byBidWlsZCBhbnl0aGluZyBpbiB0ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzCi0gICAgc2VkIC1pIC1lICdzIV5TVUJESVJTID0gdG9vbHMgIVNVQkRJUlMgPSAhJyBcCi0gICAgICAgICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9yZWdyZXNzaW9uL01ha2VmaWxlIgotCi0gICAgIyBQcmV2ZW50IGF0dGVtcHRzIHRvIHVwZGF0ZSBNYWtlZmlsZXMgZHVyaW5nIHRlc3QgcnVucywgYW5kCi0gICAgIyBzaWxlbmNlICJNYWtpbmcgY2hlY2sgaW4gJFNVQkRJUiIgbWVzc2FnZXMuCi0gICAgZmluZCAiJHtEfSR7UFRFU1RfUEFUSH0iIC1uYW1lIE1ha2VmaWxlIC10eXBlIGYgLWV4ZWMgXAotICAgICAgICBzZWQgLWkgLWUgJy9NYWtlZmlsZTovLC9eJC9kJyAtZSAnLyU6ICUuaW4vLC9eJC9kJyBcCi0gICAgICAgIC1lICcvZWNobyAiTWFraW5nICQkdGFyZ2V0IGluICQkc3ViZGlyIjsgXFwvZCcgXAotICAgICAgICAtZSAncy9ec3JjZGlyID0gXCguKlwpL3NyY2RpciA9IC4vJyBcCi0gICAgICAgIC1lICdzL15idWlsZGRpciA9IFwoLipcKS9idWlsZGRpciA9IC4vJyBcCi0gICAgICAgIC1lICdzL15hbGwtYW06LiovYWxsLWFtOi8nIFwKLSAgICAgICAge30gKwotCi0gICAgIyBUaGVzZSBvYmplY3RzIHRyaWdnZXIgW3JwYXRoc10gUUEgY2hlY2tzOyB0aGUgdGVzdCBoYXJuZXNzCi0gICAgIyBza2lwcyB0aGUgYXNzb2NpYXRlZCB0ZXN0cyBpZiB0aGV5J3JlIG1pc3NpbmcsIHNvIGRlbGV0ZQotICAgICMgdGhlbS4KLSAgICBvYmpzPSIiCi0gICAgb2Jqcz0iJG9ianMgcmVncmVzc2lvbi91c3QvdXN0LWRsL2xpYmJhci5zbyIKLSAgICBvYmpzPSIkb2JqcyByZWdyZXNzaW9uL3VzdC91c3QtZGwvbGliZm9vLnNvIgotICAgIGZvciBvYmogaW4gJG9ianMgOyBkbwotICAgICAgICBybSAtZiAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvJHtvYmp9IgotICAgIGRvbmUKLQotICAgIGZpbmQgIiR7RH0ke1BURVNUX1BBVEh9IiAtbmFtZSBNYWtlZmlsZSAtdHlwZSBmIC1leGVjIFwKLSAgICAgICAgdG91Y2ggLXIgIiR7Qn0vTWFrZWZpbGUiIHt9ICsKLQotICAgICMgU3Vic3RpdHV0ZSBsaW5rcyB0byBpbnN0YWxsZWQgYmluYXJpZXMuCi0gICAgZm9yIHByb2cgaW4gbHR0bmcgbHR0bmctcmVsYXlkIGx0dG5nLXNlc3Npb25kIGx0dG5nLWNvbnN1bWVyZCA7IGRvCi0gICAgICAgIGV4ZWRpcj0iJHtEfSR7UFRFU1RfUEFUSH0vc3JjL2Jpbi8ke3Byb2d9IgotICAgICAgICBpbnN0YWxsIC1kICIkZXhlZGlyIgotICAgICAgICBjYXNlICIkcHJvZyIgaW4KLSAgICAgICAgICAgIGx0dG5nLWNvbnN1bWVyZCkKLSAgICAgICAgICAgICAgICBsbiAtcyAiJHtsaWJkaXJ9L2x0dG5nL2xpYmV4ZWMvJHByb2ciICIkZXhlZGlyIgotICAgICAgICAgICAgICAgIDs7Ci0gICAgICAgICAgICAqKQotICAgICAgICAgICAgICAgIGxuIC1zICIke2JpbmRpcn0vJHByb2ciICIkZXhlZGlyIgotICAgICAgICAgICAgICAgIDs7Ci0gICAgICAgIGVzYWMKLSAgICBkb25lCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29sc18yLjkuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzXzIuOS41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlOTJjMjIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29sc18yLjkuNS5iYgpAQCAtMCwwICsxLDEyMiBAQAorU0VDVElPTiA9ICJkZXZlbCIKK1NVTU1BUlkgPSAiTGludXggVHJhY2UgVG9vbGtpdCBDb250cm9sIgorREVTQ1JJUFRJT04gPSAiVGhlIExpbnV4IHRyYWNlIHRvb2xraXQgaXMgYSBzdWl0ZSBvZiB0b29scyBkZXNpZ25lZCBcCit0byBleHRyYWN0IHByb2dyYW0gZXhlY3V0aW9uIGRldGFpbHMgZnJvbSB0aGUgTGludXggb3BlcmF0aW5nIHN5c3RlbSBcCithbmQgaW50ZXJwcmV0IHRoZW0uIgorCitMSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0wMWQ3ZmM0NDk2YWFjZjM3ZDkwZGY5MGI5MGIwY2FjMSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ncGwtMi4wLnR4dDttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGdwbC0yLjEudHh0O21kNT0wZjBkNzE1MDBlNmE1N2ZkMjRkODI1ZjMzMjQyYjljYSIKKworREVQRU5EUyA9ICJsaWJ1cmN1IHBvcHQgbGlieG1sMiB1dGlsLWxpbnV4IgorUkRFUEVORFNfJHtQTn0gPSAibGliZ2NjIgorUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UgcGVybCBiYXNoIGdhd2sgJHtQTn0gYmFiZWx0cmFjZSBwcm9jcHMiCisjIGJhYmVsc3RhdHMucGwgd2FudHMgZ2V0b3B0LWxvbmcKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJwZXJsLW1vZHVsZS1nZXRvcHQtbG9uZyIKKworUFlUSE9OX09QVElPTiA9ICJhbV9jdl9weXRob25fcHlleGVjZGlyPScke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfScgXAorICAgICAgICAgICAgICAgICBhbV9jdl9weXRob25fcHl0aG9uZGlyPScke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfScgXAorICAgICAgICAgICAgICAgICBQWVRIT05fSU5DTFVERT0nLUkke1NUQUdJTkdfSU5DRElSfS9weXRob24ke1BZVEhPTl9CQVNFVkVSU0lPTn0ke1BZVEhPTl9BQkl9JyBcCisiCitQQUNLQUdFQ09ORklHID8/PSAibHR0bmctdXN0IgorUEFDS0FHRUNPTkZJR1tweXRob25dID0gIi0tZW5hYmxlLXB5dGhvbi1iaW5kaW5ncyAke1BZVEhPTl9PUFRJT059LCxweXRob24zIHN3aWctbmF0aXZlIgorUEFDS0FHRUNPTkZJR1tsdHRuZy11c3RdID0gIi0td2l0aC1sdHRuZy11c3QsIC0td2l0aG91dC1sdHRuZy11c3QsIGx0dG5nLXVzdCIKK1BBQ0tBR0VDT05GSUdba21vZF0gPSAiLS1lbmFibGUta21vZCwgLS1kaXNhYmxlLWttb2QsIGttb2QiCitQQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLWVuYWJsZS1tYW4tcGFnZXMsIC0tZGlzYWJsZS1tYW4tcGFnZXMsIGFzY2lpZG9jLW5hdGl2ZSB4bWx0by1uYXRpdmUgbGlieHNsdC1uYXRpdmUiCitQQUNLQUdFQ09ORklHX3JlbW92ZV9saWJjLW11c2wgPSAibHR0bmctdXN0IgorCitTUkNfVVJJID0gImh0dHBzOi8vbHR0bmcub3JnL2ZpbGVzL2x0dG5nLXRvb2xzL2x0dG5nLXRvb2xzLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8veDMyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjA1MTIyNGViOTkxYWVlMDdmODcyMWZmMTg3N2QwYjk2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc3ODM5ZWI2ZmM2YzY1MjEyNWYwOGFjZmQ5MzY5NzAxYzI1MTZlYjA1Y2MyMDg0MTYwZTdlZmM3YTNmYjczMWMiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHB0ZXN0IHBrZ2NvbmZpZyB1c2VyYWRkIHB5dGhvbjMtZGlyIG1hbnBhZ2VzCisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCitHUk9VUEFERF9QQVJBTV8ke1BOfSA9ICJ0cmFjaW5nIgorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2x0dG5nL2xpYmV4ZWMvKiAke2RhdGFkaXJ9L3htbC9sdHRuZyBcCisgICAgICAgICAgICAgICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKiIKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKi5hIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qLmxhIgorCisjIFNpbmNlIGZpbGVzIGFyZSBpbnN0YWxsZWQgaW50byAke2xpYmRpcn0vbHR0bmcvbGliZXhlYyB3ZSBtYXRjaCAKKyMgdGhlIGxpYmV4ZWMgaW5zYW5lIHRlc3Qgc28gc2tpcCBpdC4KKyMgUHl0aG9uIG1vZHVsZSBuZWVkcyB0byBrZWVwIF9sdHRuZy5zbworSU5TQU5FX1NLSVBfJHtQTn0gPSAibGliZXhlYyBkZXYtc28iCitJTlNBTkVfU0tJUF8ke1BOfS1kYmcgPSAibGliZXhlYyIKKworZG9faW5zdGFsbF9wdGVzdCAoKSB7CisgICAgZm9yIGYgaW4gTWFrZWZpbGUgdGVzdHMvTWFrZWZpbGUgdGVzdHMvdXRpbHMvdXRpbHMuc2ggOyBkbworICAgICAgICBpbnN0YWxsIC1EICIke0J9LyRmIiAiJHtEfSR7UFRFU1RfUEFUSH0vJGYiCisgICAgZG9uZQorCisgICAgZm9yIGYgaW4gY29uZmlnL3RhcC1kcml2ZXIuc2ggY29uZmlnL3Rlc3QtZHJpdmVyIDsgZG8KKyAgICAgICAgaW5zdGFsbCAtRCAiJHtTfS8kZiIgIiR7RH0ke1BURVNUX1BBVEh9LyRmIgorICAgIGRvbmUKKworICAgICMgUHJldmVudCAnbWFrZSBjaGVjaycgZnJvbSByZWN1cnNpbmcgaW50byBub24tdGVzdCBzdWJkaXJlY3Rvcmllcy4KKyAgICBzZWQgLWkgLWUgJ3MhXlNVQkRJUlMgPSAuKiFTVUJESVJTID0gdGVzdHMhJyAiJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUiCisKKyAgICAjIFdlIGRvbid0IG5lZWQgdGhlc2UKKyAgICBzZWQgLWkgLWUgJy9kaXN0X25vaW5zdF9TQ1JJUFRTID0gLywvXiQvZCcgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL01ha2VmaWxlIgorCisgICAgIyBXZSBzaG91bGRuJ3QgbmVlZCB0byBidWlsZCBhbnl0aGluZyBpbiB0ZXN0cy91dGlscworICAgIHNlZCAtaSAtZSAncyFhbV9fYXBwZW5kXzEgPSAuIHV0aWxzIWFtX19hcHBlbmRfMSA9IC4gIScgXAorICAgICAgICAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvTWFrZWZpbGUiCisKKyAgICAjIENvcHkgdGhlIHRlc3RzIGRpcmVjdG9yeSB0cmVlIGFuZCB0aGUgZXhlY3V0YWJsZXMgYW5kCisgICAgIyBNYWtlZmlsZXMgZm91bmQgd2l0aGluLgorICAgIGZvciBkIGluICQoZmluZCAiJHtCfS90ZXN0cyIgLXR5cGUgZCAtbm90IC1uYW1lIC5saWJzIC1wcmludGYgJyVQICcpIDsgZG8KKyAgICAgICAgaW5zdGFsbCAtZCAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvJGQiCisgICAgICAgIGZpbmQgIiR7Qn0vdGVzdHMvJGQiIC1tYXhkZXB0aCAxIC1leGVjdXRhYmxlIC10eXBlIGYgXAorICAgICAgICAgICAgLWV4ZWMgaW5zdGFsbCAtdCAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvJGQiIHt9ICsKKyAgICAgICAgdGVzdCAtciAiJHtCfS90ZXN0cy8kZC9NYWtlZmlsZSIgJiYgXAorICAgICAgICAgICAgaW5zdGFsbCAtdCAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvJGQiICIke0J9L3Rlc3RzLyRkL01ha2VmaWxlIgorICAgIGRvbmUKKworICAgICMgV2Ugc2hvdWxkbid0IG5lZWQgdG8gYnVpbGQgYW55dGhpbmcgaW4gdGVzdHMvcmVncmVzc2lvbi90b29scworICAgIHNlZCAtaSAtZSAncyFeU1VCRElSUyA9IHRvb2xzICFTVUJESVJTID0gIScgXAorICAgICAgICAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvcmVncmVzc2lvbi9NYWtlZmlsZSIKKworICAgICMgUHJldmVudCBhdHRlbXB0cyB0byB1cGRhdGUgTWFrZWZpbGVzIGR1cmluZyB0ZXN0IHJ1bnMsIGFuZAorICAgICMgc2lsZW5jZSAiTWFraW5nIGNoZWNrIGluICRTVUJESVIiIG1lc3NhZ2VzLgorICAgIGZpbmQgIiR7RH0ke1BURVNUX1BBVEh9IiAtbmFtZSBNYWtlZmlsZSAtdHlwZSBmIC1leGVjIFwKKyAgICAgICAgc2VkIC1pIC1lICcvTWFrZWZpbGU6LywvXiQvZCcgLWUgJy8lOiAlLmluLywvXiQvZCcgXAorICAgICAgICAtZSAnL2VjaG8gIk1ha2luZyAkJHRhcmdldCBpbiAkJHN1YmRpciI7IFxcL2QnIFwKKyAgICAgICAgLWUgJ3MvXnNyY2RpciA9IFwoLipcKS9zcmNkaXIgPSAuLycgXAorICAgICAgICAtZSAncy9eYnVpbGRkaXIgPSBcKC4qXCkvYnVpbGRkaXIgPSAuLycgXAorICAgICAgICAtZSAncy9eYWxsLWFtOi4qL2FsbC1hbTovJyBcCisgICAgICAgIHt9ICsKKworICAgICMgVGhlc2Ugb2JqZWN0cyB0cmlnZ2VyIFtycGF0aHNdIFFBIGNoZWNrczsgdGhlIHRlc3QgaGFybmVzcworICAgICMgc2tpcHMgdGhlIGFzc29jaWF0ZWQgdGVzdHMgaWYgdGhleSdyZSBtaXNzaW5nLCBzbyBkZWxldGUKKyAgICAjIHRoZW0uCisgICAgb2Jqcz0iIgorICAgIG9ianM9IiRvYmpzIHJlZ3Jlc3Npb24vdXN0L3VzdC1kbC9saWJiYXIuc28iCisgICAgb2Jqcz0iJG9ianMgcmVncmVzc2lvbi91c3QvdXN0LWRsL2xpYmZvby5zbyIKKyAgICBmb3Igb2JqIGluICRvYmpzIDsgZG8KKyAgICAgICAgcm0gLWYgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyR7b2JqfSIKKyAgICBkb25lCisKKyAgICBmaW5kICIke0R9JHtQVEVTVF9QQVRIfSIgLW5hbWUgTWFrZWZpbGUgLXR5cGUgZiAtZXhlYyBcCisgICAgICAgIHRvdWNoIC1yICIke0J9L01ha2VmaWxlIiB7fSArCisKKyAgICAjIFN1YnN0aXR1dGUgbGlua3MgdG8gaW5zdGFsbGVkIGJpbmFyaWVzLgorICAgIGZvciBwcm9nIGluIGx0dG5nIGx0dG5nLXJlbGF5ZCBsdHRuZy1zZXNzaW9uZCBsdHRuZy1jb25zdW1lcmQgOyBkbworICAgICAgICBleGVkaXI9IiR7RH0ke1BURVNUX1BBVEh9L3NyYy9iaW4vJHtwcm9nfSIKKyAgICAgICAgaW5zdGFsbCAtZCAiJGV4ZWRpciIKKyAgICAgICAgY2FzZSAiJHByb2ciIGluCisgICAgICAgICAgICBsdHRuZy1jb25zdW1lcmQpCisgICAgICAgICAgICAgICAgbG4gLXMgIiR7bGliZGlyfS9sdHRuZy9saWJleGVjLyRwcm9nIiAiJGV4ZWRpciIKKyAgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgKikKKyAgICAgICAgICAgICAgICBsbiAtcyAiJHtiaW5kaXJ9LyRwcm9nIiAiJGV4ZWRpciIKKyAgICAgICAgICAgICAgICA7OworICAgICAgICBlc2FjCisgICAgZG9uZQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdXN0XzIuOS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdXN0XzIuOS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyODhiNWVlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXVzdF8yLjkuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLVNVTU1BUlkgPSAiTGludXggVHJhY2UgVG9vbGtpdCBVc2Vyc3BhY2UgVHJhY2VyIDIueCIKLURFU0NSSVBUSU9OID0gIlRoZSBMVFRuZyBVU1QgMi54IHBhY2thZ2UgY29udGFpbnMgdGhlIHVzZXJzcGFjZSB0cmFjZXIgbGlicmFyeSB0byB0cmFjZSB1c2Vyc3BhY2UgY29kZXMuIgotSE9NRVBBR0UgPSAiaHR0cDovL2x0dG5nLm9yZy91c3QiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5sdHRuZy5vcmcvcHJvamVjdHMvbHR0bmctdXN0IgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xKyAmIE1JVCAmIEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Yzk2M2ViMzY2Yjc4MTI1MmIwYmYwZmRmMTYyNGQ5ZTkgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc25wcmludGYvc25wcmludGYuYztlbmRsaW5lPTMyO21kNT1kM2Q1NDQ5NTlkOGEzNzgyYjJlMDc0NTFiZTBhOTAzYyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zbnByaW50Zi92YXJpb3VzLmg7ZW5kbGluZT0zMTttZDU9ODlmMjUwOWI2YjQ2ODJjNGZjOTUyNTVlZWM0YWJlNDQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGxpYl9wYWNrYWdlIG1hbnBhZ2VzCi0KLURFUEVORFMgPSAibGlidXJjdSB1dGlsLWxpbnV4IgotUkRFUEVORFNfJHtQTn0tYmluID0gInB5dGhvbjMtY29yZSIKLQotIyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgYWZ0ZXIgcmVuYW1lCi1SUFJPVklERVNfJHtQTn0gPSAibHR0bmcyLXVzdCIKLVJSRVBMQUNFU18ke1BOfSA9ICJsdHRuZzItdXN0IgotUkNPTkZMSUNUU18ke1BOfSA9ICJsdHRuZzItdXN0IgotCi1QRSA9ICIyIgotCi1TUkNfVVJJID0gImh0dHBzOi8vbHR0bmcub3JnL2ZpbGVzL2x0dG5nLXVzdC9sdHRuZy11c3QtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9sdHRuZy11c3QtZG9jLWV4YW1wbGVzLWRpc2FibGUucGF0Y2ggXAotICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI3N2YzMzc4YmEzN2EzNjgwMTQyMGJjZTg3YjcwMmU5YyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0ZDU0MWE4NjNmNDJkZmM2ODVjYTA1MDI0MDI3YTQ0MmM3MGQwMzU5NGMxNTRhNDNlNjJiYzEwOWIxZWE1ZGFmIgotCi1DVkVfUFJPRFVDVCA9ICJ1c3QiCi0KLVBBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLW1hbi1wYWdlcywgLS1kaXNhYmxlLW1hbi1wYWdlcywgYXNjaWlkb2MtbmF0aXZlIHhtbHRvLW5hdGl2ZSBsaWJ4c2x0LW5hdGl2ZSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgICAgICMgUGF0Y2ggcHl0aG9uIHRvb2xzIHRvIHVzZSBQeXRob24gMzsgdGhleSBzaG91bGQgYmUgc291cmNlIGNvbXBhdGlibGUsIGJ1dAotICAgICAgICAjIHN0aWxsIHJlZmVyIHRvIFB5dGhvbiAyIGluIHRoZSBzaGViYW5nCi0gICAgICAgIHNlZCAtaSAtZSAnMXMsIyEuKnB5dGhvbi4qLCMhJHtiaW5kaXJ9L3B5dGhvbjMsJyAke0R9JHtiaW5kaXJ9L2x0dG5nLWdlbi10cAotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdXN0XzIuOS4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdXN0XzIuOS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzZGE0Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy11c3RfMi45LjEuYmIKQEAgLTAsMCArMSwzNyBAQAorU1VNTUFSWSA9ICJMaW51eCBUcmFjZSBUb29sa2l0IFVzZXJzcGFjZSBUcmFjZXIgMi54IgorREVTQ1JJUFRJT04gPSAiVGhlIExUVG5nIFVTVCAyLnggcGFja2FnZSBjb250YWlucyB0aGUgdXNlcnNwYWNlIHRyYWNlciBsaWJyYXJ5IHRvIHRyYWNlIHVzZXJzcGFjZSBjb2Rlcy4iCitIT01FUEFHRSA9ICJodHRwOi8vbHR0bmcub3JnL3VzdCIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmx0dG5nLm9yZy9wcm9qZWN0cy9sdHRuZy11c3QiCisKK0xJQ0VOU0UgPSAiTEdQTHYyLjErICYgTUlUICYgR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jOTYzZWIzNjZiNzgxMjUyYjBiZjBmZGYxNjI0ZDllOSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zbnByaW50Zi9zbnByaW50Zi5jO2VuZGxpbmU9MzI7bWQ1PWQzZDU0NDk1OWQ4YTM3ODJiMmUwNzQ1MWJlMGE5MDNjIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NucHJpbnRmL3ZhcmlvdXMuaDtlbmRsaW5lPTMxO21kNT04OWYyNTA5YjZiNDY4MmM0ZmM5NTI1NWVlYzRhYmU0NCIKKworaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UgbWFucGFnZXMKKworREVQRU5EUyA9ICJsaWJ1cmN1IHV0aWwtbGludXgiCitSREVQRU5EU18ke1BOfS1iaW4gPSAicHl0aG9uMy1jb3JlIgorCisjIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBhZnRlciByZW5hbWUKK1JQUk9WSURFU18ke1BOfSA9ICJsdHRuZzItdXN0IgorUlJFUExBQ0VTXyR7UE59ID0gImx0dG5nMi11c3QiCitSQ09ORkxJQ1RTXyR7UE59ID0gImx0dG5nMi11c3QiCisKK1BFID0gIjIiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9sdHRuZy5vcmcvZmlsZXMvbHR0bmctdXN0L2x0dG5nLXVzdC0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL2x0dG5nLXVzdC1kb2MtZXhhbXBsZXMtZGlzYWJsZS5wYXRjaCBcCisgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjVhNTYzNmZjM2Q5YWEzNzBmNjViMjVhODAyYTc5ZTZlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImI4OTFkMjY3Y2RiYmJkMTFjZjM0NzUxZjY2YzIxYzRhN2ZkYzBlZWMzYzFiNTNiZTJjNDBkY2EwNzNiN2RhYTQiCisKK0NWRV9QUk9EVUNUID0gInVzdCIKKworUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLS1lbmFibGUtbWFuLXBhZ2VzLCAtLWRpc2FibGUtbWFuLXBhZ2VzLCBhc2NpaWRvYy1uYXRpdmUgeG1sdG8tbmF0aXZlIGxpYnhzbHQtbmF0aXZlIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAgICAgIyBQYXRjaCBweXRob24gdG9vbHMgdG8gdXNlIFB5dGhvbiAzOyB0aGV5IHNob3VsZCBiZSBzb3VyY2UgY29tcGF0aWJsZSwgYnV0CisgICAgICAgICMgc3RpbGwgcmVmZXIgdG8gUHl0aG9uIDIgaW4gdGhlIHNoZWJhbmcKKyAgICAgICAgc2VkIC1pIC1lICcxcywjIS4qcHl0aG9uLiosIyEke2JpbmRpcn0vcHl0aG9uMywnICR7RH0ke2JpbmRpcn0vbHR0bmctZ2VuLXRwCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZS5pbmMKaW5kZXggOTZlZjQzZC4uNGIwMTY1NCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlLmluYwpAQCAtMjcsNiArMjcsOCBAQAogICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtcm1iLWRlZmluaXRpb24tZm9yLU5JT1MyLWFyY2hpdGVjdHVyZS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1GVEJGUy1wcm9ibGVtLXdpdGgtR0NDLTYucGF0Y2ggXAogIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAib3Byb2ZpbGUtKD9QPHB2ZXI+XGQrKFwuXGQrKSspLyIKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9vcHJvZmlsZS9maWxlcy9vcHJvZmlsZS8iCiAKIFNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZmlsZTovL211c2wucGF0Y2giCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3BlcmYvcGVyZi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3BlcmYvcGVyZi5iYgppbmRleCAxYmFkNmY0Li5iNzliOTczIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9wZXJmL3BlcmYuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvcGVyZi9wZXJmLmJiCkBAIC0yNiw3ICsyNiw3IEBACiAgICAgdmlydHVhbC8ke01MUFJFRklYfWxpYmMgXAogICAgICR7TUxQUkVGSVh9ZWxmdXRpbHMgXAogICAgICR7TUxQUkVGSVh9YmludXRpbHMgXAotICAgIGJpc29uLW5hdGl2ZSBmbGV4LW5hdGl2ZSB4eiBcCisgICAgYmlzb24gZmxleCB4eiBcCiAgICAgeG1sdG8tbmF0aXZlIFwKICAgICBhc2NpaWRvYy1uYXRpdmUgXAogIgpAQCAtMzUsMTAgKzM1LDkgQEAKIAogUFJPVklERVMgPSAidmlydHVhbC9wZXJmIgogCi1pbmhlcml0IGxpbnV4LWtlcm5lbC1iYXNlIGtlcm5lbC1hcmNoCitpbmhlcml0IGxpbnV4LWtlcm5lbC1iYXNlIGtlcm5lbC1hcmNoIHB5dGhvbm5hdGl2ZQogCiAjIG5lZWRlZCBmb3IgYnVpbGRpbmcgdGhlIHRvb2xzL3BlcmYgUHl0aG9uIGJpbmRpbmdzCi1pbmhlcml0ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3NjcmlwdGluZycsICdweXRob25uYXRpdmUnLCAnJywgZCl9CiBpbmhlcml0IHB5dGhvbi1kaXIKIGV4cG9ydCBQWVRIT05fU0lURVBBQ0tBR0VTX0RJUgogCkBAIC00OCw4ICs0Nyw3IEBACiBkb19wb3B1bGF0ZV9saWNbZGVwZW5kc10gKz0gInZpcnR1YWwva2VybmVsOmRvX3BhdGNoIgogCiAjIG5lZWRlZCBmb3IgYnVpbGRpbmcgdGhlIHRvb2xzL3BlcmYgUGVybCBiaW5kaW5nCi1pbmhlcml0ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3NjcmlwdGluZycsICdwZXJsbmF0aXZlJywgJycsIGQpfQotaW5oZXJpdCBjcGFuLWJhc2UKK2luaGVyaXQgcGVybG5hdGl2ZSBjcGFuLWJhc2UKICMgRW52IHZhciB3aGljaCB0ZWxscyBwZXJsIGlmIGl0IHNob3VsZCB1c2UgaG9zdCAobm8pIG9yIHRhcmdldCAoeWVzKSBzZXR0aW5ncwogZXhwb3J0IFBFUkxDT05GSUdUQVJHRVQgPSAiJHtAaXNfdGFyZ2V0KGQpfSIKIGV4cG9ydCBQRVJMX0lOQyA9ICIke1NUQUdJTkdfTElCRElSfSR7UEVSTF9PV05fRElSfS9wZXJsLyR7QGdldF9wZXJsX3ZlcnNpb24oZCl9L0NPUkUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9wb3dlcnRvcC9wb3dlcnRvcF8yLjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9wb3dlcnRvcC9wb3dlcnRvcF8yLjguYmIKaW5kZXggMWYyZGZiOC4uNGQ3YTNlNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvcG93ZXJ0b3AvcG93ZXJ0b3BfMi44LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3Bvd2VydG9wL3Bvd2VydG9wXzIuOC5iYgpAQCAtMTcsMTEgKzE3LDYgQEAKIAogaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcKIAotIyB3ZSBuZWVkIHRvIGV4cGxpY2l0bHkgbGluayB3aXRoIGxpYmludGwgaW4gdUNsaWJjIHN5c3RlbXMKLUVYVFJBX0xERkxBR1MgPz0gIiIKLUVYVFJBX0xERkxBR1NfbGliYy11Y2xpYmMgPSAiLWxpbnRsIgotTERGTEFHUyArPSAiJHtFWFRSQV9MREZMQUdTfSIKLQogIyB3ZSBkbyBub3Qgd2FudCBsaWJuY3Vyc2VzdyBpZiB3ZSBjYW4KIGRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewogICAgICMgY29uZmlndXJlLmFjIGNoZWNrcyBmb3IgZGVsd2luKCkgaW4gIm5jdXJzZXN3IG5jdXJzZXMiIHNvIGxldCdzIGRyb3AgZmlyc3Qgb25lCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL3N5c3Byb2ZfMy4yMi4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9zeXNwcm9mXzMuMjIuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjYzMTA2My4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL3N5c3Byb2ZfMy4yMi4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotU1VNTUFSWSA9ICJTeXN0ZW0td2lkZSBQZXJmb3JtYW5jZSBQcm9maWxlciBmb3IgTGludXgiCi1MSUNFTlNFID0gIkdQTHYzKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9zcC1hcHBsaWNhdGlvbi5jO2VuZGxpbmU9MTc7bWQ1PTQwZTU1NTc3ZWYxMjJjODhmZTIwMDUyYWNkYTY0ODc1IgotCi1pbmhlcml0IGdub21lYmFzZSBnZXR0ZXh0IHN5c3RlbWQgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgbGlieG1sMi1uYXRpdmUgZ2xpYi0yLjAtbmF0aXZlIgotCi1TUkNfVVJJICs9ICIgXAotICAgICAgICAgICBmaWxlOi8vZGVmaW5lLU5UX0dOVV9CVUlMRF9JRC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1BZGQtb3B0aW9uLXRvLWVuYWJsZS1kaXNhYmxlLXBvbGtpdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURpc2FibGUtY2hlY2stZm9yLXBvbGtpdC1mb3ItVUkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Bdm9pZC1idWlsZGluZy1kb2NzLnBhdGNoIFwKLSAgICAgICAgICAiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJlNmRjYTMyNWIzMDE0NDQwZjQ1N2E5MmRiMThmZmUzNDJhMzU4ODhkYjNmMDc1NjY5NGE5OWI5NjUyNzk2MzY3IgotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiOTUxNDA2NWRjNzUyMTA1MjQwZTU1NjdjMTM3MDhhZjQiCi0KLUFVVE9UT09MU19BVVhESVIgPSAiJHtTfS9idWlsZC1hdXgiCi0KLUVYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1jb21waWxlLXdhcm5pbmdzIgotCi1QQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5jb250YWluc19hbnkoJ0RJU1RST19GRUFUVVJFUycsICcke0dUSzNESVNUUk9GRUFUVVJFU30nLCAnZ3RrJywgJycsIGQpfSIKLVBBQ0tBR0VDT05GSUdbZ3RrXSA9ICItLWVuYWJsZS1ndGssLS1kaXNhYmxlLWd0ayxndGsrMyIKLVBBQ0tBR0VDT05GSUdbcG9sa2l0XSA9ICItLWVuYWJsZS1wb2xraXQsLS1kaXNhYmxlLXBvbGtpdCxwb2xraXQgZGJ1cyIKLQotU09MSUJTID0gIi5zbyIKLUZJTEVTX1NPTElCU0RFViA9ICIiCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9pY29ucy8iCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwb2xraXQnLCAnc3lzcHJvZjIuc2VydmljZScsICcnLCBkKX0iCi0KLSMgV2UgZG8gbm90IHlldCB3b3JrIGZvciBhYXJjaDY0LgotQ09NUEFUSUJMRV9IT1NUID0gIl4oPyFhYXJjaDY0KS4qIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9zeXNwcm9mXzMuMjQuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2Yvc3lzcHJvZl8zLjI0LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzlhMjdiZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2Yvc3lzcHJvZl8zLjI0LjEuYmIKQEAgLTAsMCArMSwzNCBAQAorU1VNTUFSWSA9ICJTeXN0ZW0td2lkZSBQZXJmb3JtYW5jZSBQcm9maWxlciBmb3IgTGludXgiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnN5c3Byb2YuY29tIgorTElDRU5TRSA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvc3AtYXBwbGljYXRpb24uYztlbmRsaW5lPTE3O21kNT00MGU1NTU3N2VmMTIyYzg4ZmUyMDA1MmFjZGE2NDg3NSIKKworaW5oZXJpdCBnbm9tZWJhc2UgZ2V0dGV4dCBzeXN0ZW1kIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgorCitERVBFTkRTID0gImdsaWItMi4wIGxpYnhtbDItbmF0aXZlIGdsaWItMi4wLW5hdGl2ZSIKKworU1JDX1VSSSArPSAiIFwKKyAgICAgICAgICAgZmlsZTovL2RlZmluZS1OVF9HTlVfQlVJTERfSUQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtQWRkLW9wdGlvbi10by1lbmFibGUtZGlzYWJsZS1wb2xraXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLWNoZWNrLWZvci1wb2xraXQtZm9yLVVJLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQXZvaWQtYnVpbGRpbmctZG9jcy5wYXRjaCBcCisgICAgICAgICAgIgorU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiMmI0NGFlMWQ4Y2Q4OTk0MTcyOTRhOWM0NTA5ZDc4NzAiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIwNTRlZWJlMmFmYjZmZTNjMDZhYzhjNDZiYzA0NWM0MmY2NzVkNGZkNjRlNmYxNmNiYzYwMmQ1YzdjZTI3YmVjIgorCitBVVRPVE9PTFNfQVVYRElSID0gIiR7U30vYnVpbGQtYXV4IgorCitFWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtY29tcGlsZS13YXJuaW5ncyIKKworUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCdESVNUUk9fRkVBVFVSRVMnLCAnJHtHVEszRElTVFJPRkVBVFVSRVN9JywgJ2d0aycsICcnLCBkKX0iCitQQUNLQUdFQ09ORklHW2d0a10gPSAiLS1lbmFibGUtZ3RrLC0tZGlzYWJsZS1ndGssZ3RrKzMiCitQQUNLQUdFQ09ORklHW3BvbGtpdF0gPSAiLS1lbmFibGUtcG9sa2l0LC0tZGlzYWJsZS1wb2xraXQscG9sa2l0IGRidXMiCisKK1NPTElCUyA9ICIuc28iCitGSUxFU19TT0xJQlNERVYgPSAiIgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncG9sa2l0JywgJ3N5c3Byb2YyLnNlcnZpY2UnLCAnJywgZCl9IgorCisjIFdlIGRvIG5vdCB5ZXQgd29yayBmb3IgYWFyY2g2NC4KK0NPTVBBVElCTEVfSE9TVCA9ICJeKD8hYWFyY2g2NCkuKiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAtbmF0aXZlX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAtbmF0aXZlX2dpdC5iYgppbmRleCBjM2RhNzdjLi4xOWNjMWNmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLW5hdGl2ZV9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC1uYXRpdmVfZ2l0LmJiCkBAIC0zLDUgKzMsNCBAQAogCiBpbmhlcml0IG5hdGl2ZQogCi1STV9XT1JLX0VYQ0xVREVfSVRFTVMgKz0gInJlY2lwZS1zeXNyb290LW5hdGl2ZSIKIGFkZHRhc2sgYWRkdG9fcmVjaXBlX3N5c3Jvb3QgYWZ0ZXIgZG9fcG9wdWxhdGVfc3lzcm9vdCBiZWZvcmUgZG9fYnVpbGQKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvMDAwMS1zdGFwcnVuLXN0YXBicGYtZG9uLXQtc3VwcG9ydC1pbnN0YWxsaW5nLWEtbm9uLXJvb3QucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtc3RhcHJ1bi1zdGFwYnBmLWRvbi10LXN1cHBvcnQtaW5zdGFsbGluZy1hLW5vbi1yb290LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmMTE2NDgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwLzAwMDEtc3RhcHJ1bi1zdGFwYnBmLWRvbi10LXN1cHBvcnQtaW5zdGFsbGluZy1hLW5vbi1yb290LnBhdGNoCkBAIC0wLDAgKzEsNjIgQEAKK0Zyb20gM2UxM2EwMDZmZTNkZmY5NDg5MjY5Mjc0MDkzYmY4Njg1MzIwMzZlMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFNhdWwgV29sZCA8c2d3QGxpbnV4LmludGVsLmNvbT4KK0RhdGU6IFR1ZSwgNSBTZXAgMjAxNyAxNjowMjo1NSAtMDcwMAorU3ViamVjdDogW1BBVENIXSBzdGFwcnVuL3N0YXBicGY6IGRvbid0IHN1cHBvcnQgaW5zdGFsbGluZyBhIG5vbi1yb290CisKK1NpbmNlIHdlIGFyZSBpbiBhIGtub3duIGVudmlyb25tZW50IGFuZCBpbnN0YWxsaW5nIGFzIHJvb3QgYW5kCitleHBlY3QgdG8gYmUgcnVubmluZyBhcyByb290LCBkb24ndCBjcmVhdGUgdGhlIGdyb3VwIG9yIGNobW9kCit0aGUgYmluYXJpZXMuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbRW1iZWRkZWRdCitTaWduZWQtb2ZmLWJ5OiBTYXVsIFdvbGQgPHNnd0BsaW51eC5pbnRlbC5jb20+CistLS0KKyBzdGFwYnBmL01ha2VmaWxlLmFtIHwgMTQgKysrKysrKy0tLS0tLS0KKyBzdGFwcnVuL01ha2VmaWxlLmFtIHwgMTIgKysrKysrLS0tLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3N0YXBicGYvTWFrZWZpbGUuYW0gYi9zdGFwYnBmL01ha2VmaWxlLmFtCitpbmRleCA0MjFiMDQ0ZWYuLmY3ZGFlYjJiMiAxMDA2NDQKKy0tLSBhL3N0YXBicGYvTWFrZWZpbGUuYW0KKysrKyBiL3N0YXBicGYvTWFrZWZpbGUuYW0KK0BAIC0zOSwxMSArMzksMTEgQEAgZ2l0X3ZlcnNpb24uc3RhbXAgLi4vZ2l0X3ZlcnNpb24uaDoKKyAKKyAjIFdoeSB0aGUgImlkIC11IiBjb25kaXRpb24/ICBUaGlzIHdheSwgYW4gdW5wcml2aWxlZ2VkIHVzZXIgY2FuIHJ1bgorICMgbWFrZSBpbnN0YWxsLCBhbmQgaGF2ZSAic3VkbyBzdGFwIC4uLi4iIG9yICJzdWRvIHN0YXBicGYgLi4uLiIgd29yayBsYXRlci4KKy1pbnN0YWxsLWV4ZWMtaG9vazoKKy0JaWYgWyBgaWQgLXVgIC1lcSAwIF07IHRoZW4gXAorLQkJZ2V0ZW50IGdyb3VwIHN0YXB1c3IgPi9kZXYvbnVsbCB8fCBncm91cGFkZCAtZyAxNTYgLXIgc3RhcHVzciAyPi9kZXYvbnVsbCB8fCBncm91cGFkZCAtciBzdGFwdXNyOyBcCistCQlnZXRlbnQgZ3JvdXAgc3RhcHVzciA+L2Rldi9udWxsIFwKKy0JCSYmIGNoZ3JwIHN0YXB1c3IgIiQoREVTVERJUikkKGJpbmRpcikvc3RhcGJwZiIgXAorLQkJJiYgY2htb2QgMDQxMTAgIiQoREVTVERJUikkKGJpbmRpcikvc3RhcGJwZiI7IFwKKy0JZmkKKysjaW5zdGFsbC1leGVjLWhvb2s6CisrIwlpZiBbIGBpZCAtdWAgLWVxIDAgXTsgdGhlbiBcCisrIwkJZ2V0ZW50IGdyb3VwIHN0YXB1c3IgPi9kZXYvbnVsbCB8fCBncm91cGFkZCAtZyAxNTYgLXIgc3RhcHVzciAyPi9kZXYvbnVsbCB8fCBncm91cGFkZCAtciBzdGFwdXNyOyBcCisrIwkJZ2V0ZW50IGdyb3VwIHN0YXB1c3IgPi9kZXYvbnVsbCBcCisrIwkJJiYgY2hncnAgc3RhcHVzciAiJChERVNURElSKSQoYmluZGlyKS9zdGFwYnBmIiBcCisrIwkJJiYgY2htb2QgMDQxMTAgIiQoREVTVERJUikkKGJpbmRpcikvc3RhcGJwZiI7IFwKKysjCWZpCisgZW5kaWYKK2RpZmYgLS1naXQgYS9zdGFwcnVuL01ha2VmaWxlLmFtIGIvc3RhcHJ1bi9NYWtlZmlsZS5hbQoraW5kZXggNDA3M2FhMDFjLi4yOTI1ZTM0YzMgMTAwNjQ0CistLS0gYS9zdGFwcnVuL01ha2VmaWxlLmFtCisrKysgYi9zdGFwcnVuL01ha2VmaWxlLmFtCitAQCAtNzIsOSArNzIsOSBAQCBnaXRfdmVyc2lvbi5zdGFtcCAuLi9naXRfdmVyc2lvbi5oOgorIAorICMgV2h5IHRoZSAiaWQgLXUiIGNvbmRpdGlvbj8gIFRoaXMgd2F5LCBhbiB1bnByaXZpbGVnZWQgdXNlciBjYW4gcnVuCisgIyBtYWtlIGluc3RhbGwsIGFuZCBoYXZlICJzdWRvIHN0YXAgLi4uLiIgb3IgInN1ZG8gc3RhcHJ1biAuLi4uIiB3b3JrIGxhdGVyLgorLWluc3RhbGwtZXhlYy1ob29rOgorLQlpZiBbIGBpZCAtdWAgLWVxIDAgXTsgdGhlbiBcCistCQlnZXRlbnQgZ3JvdXAgc3RhcHVzciA+L2Rldi9udWxsIHx8IGdyb3VwYWRkIC1nIDE1NiAtciBzdGFwdXNyIDI+L2Rldi9udWxsIHx8IGdyb3VwYWRkIC1yIHN0YXB1c3I7IFwKKy0JCWdldGVudCBncm91cCBzdGFwdXNyID4vZGV2L251bGwgJiYgY2hncnAgc3RhcHVzciAiJChERVNURElSKSQoYmluZGlyKS9zdGFwcnVuIjsgXAorLQkJY2htb2QgMDQxMTAgIiQoREVTVERJUikkKGJpbmRpcikvc3RhcHJ1biI7IFwKKy0JZmkKKysjaW5zdGFsbC1leGVjLWhvb2s6CisrIwlpZiBbIGBpZCAtdWAgLWVxIDAgXTsgdGhlbiBcCisrIwkJZ2V0ZW50IGdyb3VwIHN0YXB1c3IgPi9kZXYvbnVsbCB8fCBncm91cGFkZCAtZyAxNTYgLXIgc3RhcHVzciAyPi9kZXYvbnVsbCB8fCBncm91cGFkZCAtciBzdGFwdXNyOyBcCisrIwkJZ2V0ZW50IGdyb3VwIHN0YXB1c3IgPi9kZXYvbnVsbCAmJiBjaGdycCBzdGFwdXNyICIkKERFU1RESVIpJChiaW5kaXIpL3N0YXBydW4iOyBcCisrIwkJY2htb2QgMDQxMTAgIiQoREVTVERJUikkKGJpbmRpcikvc3RhcHJ1biI7IFwKKysjCWZpCistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXBfZ2l0LmJiCmluZGV4IGIzZmQ5NzMuLjQ3NWIyMDcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXBfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXBfZ2l0LmJiCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJTY3JpcHQtZGlyZWN0ZWQgZHluYW1pYyB0cmFjaW5nIGFuZCBwZXJmb3JtYW5jZSBhbmFseXNpcyB0b29sIGZvciBMaW51eCIKK0hPTUVQQUdFID0gImh0dHBzOi8vc291cmNld2FyZS5vcmcvc3lzdGVtdGFwLyIKIAogcmVxdWlyZSBzeXN0ZW10YXBfZ2l0LmluYwogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwX2dpdC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwX2dpdC5pbmMKaW5kZXggYTZhZWRkMy4uM2RjNjg4YSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcF9naXQuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXBfZ2l0LmluYwpAQCAtMSw2ICsxLDYgQEAKIExJQ0VOU0UgPSAiR1BMdjIiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLVNSQ1JFViA9ICJiOGVhMzUwZGMxM2FkYjYxOTBkOTA0NGE1YjgwMTEwYTRjNDQxMjcwIgorU1JDUkVWID0gIjQ1ZDBlN2EwOWExNWEyMTA3OGQwZWJmMmRiNTE3NWVkOWU4NzAxNGUiCiBQViA9ICIzLjEiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vc291cmNld2FyZS5vcmcvZ2l0L3N5c3RlbXRhcC5naXQgXApAQCAtMTIsNyArMTIsOCBAQAogICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtbGV0LWNvbmZpZ3VyZS13cml0ZS1hLXB5dGhvbi1sb2NhdGlvbi1pbnRvLXRoLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtSW5zdGFsbC1weXRob24tbW9kdWxlcy10by1jb3JyZWN0LWxpYnJhcnktZGlyLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtYnVpbGRydW4tcmVtb3ZlLXF1b3Rlcy1hcm91bmQtSS1pbmNsdWRlLWxpbmUucGF0Y2ggXAotICAgICAgICAgICIKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc3RhcHJ1bi1zdGFwYnBmLWRvbi10LXN1cHBvcnQtaW5zdGFsbGluZy1hLW5vbi1yb290LnBhdGNoIFwKKyAgICAgICAgICAgIgogCiAjIHN5c3RlbXRhcCBkb2Vzbid0IHN1cHBvcnQgbWlwcwogQ09NUEFUSUJMRV9IT1NUID0gJyh4ODZfNjR8aS44Nnxwb3dlcnBjfGFybXxhYXJjaDY0KS4qLWxpbnV4JwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvdHJhY2UtY21kL2tlcm5lbHNoYXJrX2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3RyYWNlLWNtZC9rZXJuZWxzaGFya19naXQuYmIKaW5kZXggNTYzMTgyYy4uOWE1ZTgwMCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvdHJhY2UtY21kL2tlcm5lbHNoYXJrX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC90cmFjZS1jbWQva2VybmVsc2hhcmtfZ2l0LmJiCkBAIC0xNSw3ICsxNSw3IEBACiBFWFRSQV9PRU1BS0UgPSAiXAogICAgICdwcmVmaXg9JHtwcmVmaXh9JyBcCiAgICAgJ2JpbmRpcl9yZWxhdGl2ZT0ke0BvZS5wYXRoLnJlbGF0aXZlKHByZWZpeCwgYmluZGlyKX0nIFwKLSAgICAnbGliZGlyPSR7QG9lLnBhdGgucmVsYXRpdmUocHJlZml4LCBsaWJkaXIpfScgXAorICAgICdsaWJkaXI9JHtsaWJkaXJ9JyBcCiAgICAgTk9fUFlUSE9OPTEgXAogICAgIGd1aSBcCiAiCkBAIC0yOCw1ICsyOCw2IEBACiAgICAgb2VfcnVubWFrZSBERVNURElSPSIke0R9IiBpbnN0YWxsX2d1aQogICAgIHJtICR7RH0ke2JpbmRpcn0vdHJhY2UtY21kCiAgICAgcm0gLXJmICR7RH0ke2xpYmRpcn0vdHJhY2UtY21kCisgICAgcm0gLXJmICR7RH0ke3N5c2NvbmZkaXJ9L2Jhc2hfY29tcGxldGlvbi5kL3RyYWNlLWNtZC5iYXNoCiAgICAgcm1kaXIgJHtEfSR7bGliZGlyfQogfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvdHJhY2UtY21kL3RyYWNlLWNtZC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC90cmFjZS1jbWQvdHJhY2UtY21kLmluYwppbmRleCAzYWQwNmZhLi4wMDJlZTY1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC90cmFjZS1jbWQvdHJhY2UtY21kLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC90cmFjZS1jbWQvdHJhY2UtY21kLmluYwpAQCAtMSw1ICsxLDUgQEAKLVNSQ1JFViA9ICI5YmU1ZDc0ODA1ODMwYTI5MTYxNWYyZjM0YTI3YzkwM2Y2YTM3YjFlIgotUFYgPSAiMi42IgorU1JDUkVWID0gIjAyMTcxMGUxMDczZmUyMDMzNDFiNDI3Y2QxYTRiYWM1NzdlYzg5OWMiCitQViA9ICIyLjYuMSIKIAogaW5oZXJpdCBwa2djb25maWcKIApAQCAtNyw2ICs3LDcgQEAKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvcm9zdGVkdC90cmFjZS1jbWQuZ2l0O2JyYW5jaD10cmFjZS1jbWQtc3RhYmxlLXYyLjYgXAogICAgICAgICAgICBmaWxlOi8vYmxrdHJhY2UtYXBpLWNvbXBhdGliaWxpdHkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1JbmNsdWRlLWxpbWl0cy5oLXNvLXRoYXQtUEFUSF9NQVgtaXMtZGVmaW5lZC1hbi1pc3N1LnBhdGNoIFwKICIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3RyYWNlLWNtZC90cmFjZS1jbWQvMDAwMS1JbmNsdWRlLWxpbWl0cy5oLXNvLXRoYXQtUEFUSF9NQVgtaXMtZGVmaW5lZC1hbi1pc3N1LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvdHJhY2UtY21kL3RyYWNlLWNtZC8wMDAxLUluY2x1ZGUtbGltaXRzLmgtc28tdGhhdC1QQVRIX01BWC1pcy1kZWZpbmVkLWFuLWlzc3UucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc2MzA4MwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3RyYWNlLWNtZC90cmFjZS1jbWQvMDAwMS1JbmNsdWRlLWxpbWl0cy5oLXNvLXRoYXQtUEFUSF9NQVgtaXMtZGVmaW5lZC1hbi1pc3N1LnBhdGNoCkBAIC0wLDAgKzEsMjcgQEAKK0Zyb20gOTQ4OGY5MmMxZDBjNzkzMWMzZTE3OTUwZDFmOWVlYTJhZWIzZTJiZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxNCBKdW4gMjAxNyAxNTo1NjoxOCArMDMwMAorU3ViamVjdDogW1BBVENIXSBJbmNsdWRlIGxpbWl0cy5oIHNvIHRoYXQgUEFUSF9NQVggaXMgZGVmaW5lZCAoYW4gaXNzdWUgb24KKyBtdXNsKS4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIHRyYWNlLWxpc3Rlbi5jIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS90cmFjZS1saXN0ZW4uYyBiL3RyYWNlLWxpc3Rlbi5jCitpbmRleCAxN2ZmOWQ4Li44MzhkNmJjIDEwMDY0NAorLS0tIGEvdHJhY2UtbGlzdGVuLmMKKysrKyBiL3RyYWNlLWxpc3Rlbi5jCitAQCAtMzEsNiArMzEsNyBAQAorICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDxzaWduYWwuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKysjaW5jbHVkZSA8bGltaXRzLmg+CisgCisgI2luY2x1ZGUgInRyYWNlLWxvY2FsLmgiCisgI2luY2x1ZGUgInRyYWNlLW1zZy5oIgorLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvdHJhY2UtY21kL3RyYWNlLWNtZF9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC90cmFjZS1jbWQvdHJhY2UtY21kX2dpdC5iYgppbmRleCBkZDlhOGEwLi4yN2M3YzE5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC90cmFjZS1jbWQvdHJhY2UtY21kX2dpdC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC90cmFjZS1jbWQvdHJhY2UtY21kX2dpdC5iYgpAQCAtMSwxMSArMSwxMiBAQAogU1VNTUFSWSA9ICJVc2VyIGludGVyZmFjZSB0byBGdHJhY2UiCitIT01FUEFHRSA9ICJodHRwOi8vZ2l0Lmtlcm5lbC5vcmcvIgogTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2Mi4xIgogCiByZXF1aXJlIHRyYWNlLWNtZC5pbmMKIAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdHJhY2UtY21kLmM7YmVnaW5saW5lPTY7ZW5kbGluZT04O21kNT0yYzIyYzk2NWE2NDlkZGQ3OTczZDc5MTNjNTYzNGE1ZSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9YmJiNDYxMjExYTMzYjEzNGQ0MmVkNWVlODAyYjM3ZmYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PWVkYjE5NWZlNTM4ZTQ1NTJjMWY2Y2EwZmQ3YmY0ZjBhIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL3RyYWNlLWlucHV0LmM7YmVnaW5saW5lPTU7ZW5kbGluZT04O21kNT0zZWM4MmY0M2JiZTBjZmI1OTUxZmY0MTRlZjRkNDRkMCBcCiAiCiAKQEAgLTE3LDcgKzE4LDcgQEAKICAgICAnaW1nX2luc3RhbGw9JHtkYXRhZGlyfS9rZXJuZWxzaGFyay9odG1sL2ltYWdlcycgXAogICAgIFwKICAgICAnYmluZGlyX3JlbGF0aXZlPSR7QG9lLnBhdGgucmVsYXRpdmUocHJlZml4LCBiaW5kaXIpfScgXAotICAgICdsaWJkaXI9JHtAb2UucGF0aC5yZWxhdGl2ZShwcmVmaXgsIGxpYmRpcil9JyBcCisgICAgJ2xpYmRpcj0ke2xpYmRpcn0nIFwKICAgICBcCiAgICAgTk9fUFlUSE9OPTEgXAogIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1sc2I0L2xpYnBuZy9saWJwbmcxMl8xLjIuNTcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWxzYjQvbGlicG5nL2xpYnBuZzEyXzEuMi41Ny5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWY3NGY1Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWxzYjQvbGlicG5nL2xpYnBuZzEyXzEuMi41Ny5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLVNVTU1BUlkgPSAiUE5HIGltYWdlIGZvcm1hdCBkZWNvZGluZyBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5saWJwbmcub3JnLyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiTGlicG5nIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NTk3YjhhOTE5OTRhM2UyN2FlNmFhNzliZjAyNjc3ZDkgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcG5nLmg7YmVnaW5saW5lPTE5O2VuZGxpbmU9MTA5O21kNT0xNjY0MDYzOTc3MTg5MjViNjYwZjAwMzNmNzU1OGVmNyIKLURFUEVORFMgPSAiemxpYiIKLQotUE4gPSAibGlicG5nMTIiCi1TID0gIiR7V09SS0RJUn0vbGlicG5nLSR7UFZ9IgotCi1TUkNfVVJJID0gIiR7R0VOVE9PX01JUlJPUn0vbGlicG5nLSR7UFZ9LnRhci54eiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjMwNzA1MmU1ZThhZjk3YjgyYjE3YjY0ZmIxYjM2NzdhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBmNDYyMGUxMWZhMjgzZmVkYWZiNDc0NDI3YzhlOTZiZjE0OTUxMWExODA0YmRjNDczNTA5NjNhZTVjZjU0ZDgiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2xpYnBuZy9maWxlcy9saWJwbmcxMi8iCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIvbGlicG5nMTIvKD9QPHB2ZXI+KFxkK1tcLlwtX10qKSspLyIKLQotQklOQ09ORklHX0dMT0IgPSAiJHtQTn0tY29uZmlnIgotCi1pbmhlcml0IGF1dG90b29scyBiaW5jb25maWcgcGtnY29uZmlnCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCSMgVGhlIGZvbGxvdyBsaW5rIGZpbGVzIGxpbmsgdG8gY29ycmVzcG9uZGluZyBwbmcxMiouaCBhbmQgbGlicG5nMTIqIGZpbGVzCi0JIyBUaGV5IGNvbmZsaWN0IHdpdGggaGlnaGVyIHZlcmlzb24sIHNvIGRyb3AgdGhlbQotCXJtICR7RH0vJHtpbmNsdWRlZGlyfS9wbmcuaAotCXJtICR7RH0vJHtpbmNsdWRlZGlyfS9wbmdjb25mLmgKLQotCXJtICR7RH0vJHtsaWJkaXJ9L2xpYnBuZy5sYQotCXJtICR7RH0vJHtsaWJkaXJ9L2xpYnBuZy5zbwotCXJtICR7RH0vJHtsaWJkaXJ9L2xpYnBuZy5hIHx8IHRydWUKLQlybSAke0R9LyR7bGliZGlyfS9wa2djb25maWcvbGlicG5nLnBjCi0KLQlybSAke0R9LyR7YmluZGlyfS9saWJwbmctY29uZmlnCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWxzYjQvcGVybC9saWJjbGFzcy1pc2EtcGVybF8wLjM2LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1sc2I0L3BlcmwvbGliY2xhc3MtaXNhLXBlcmxfMC4zNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjkzODQxZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWxzYjQvcGVybC9saWJjbGFzcy1pc2EtcGVybF8wLjM2LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotU1VNTUFSWSA9ICJQZXJsIG1vZHVsZSBmb3IgcmVwb3J0aW5nIHRoZSBzZWFyY2ggcGF0aCBmb3IgYSBjbGFzcydzIElTQSB0cmVlIgotREVTQ1JJUFRJT04gPSAiU3VwcG9zZSB5b3UgaGF2ZSBhIGNsYXNzIChsaWtlIEZvb2Q6OkZpc2g6OkZpc2hzdGljaykgdGhhdCBpcyBkZXJpdmVkLCBcCi12aWEgaXRzIEBJU0EsIGZyb20gb25lIG9yIG1vcmUgc3VwZXJjbGFzc2VzIChhcyBGb29kOjpGaXNoOjpGaXNoc3RpY2sgaXMgZnJvbSBGb29kOjpGaXNoLFwKLUxpZmU6OkZ1bmd1cywgYW5kIENoZW1pY2FscyksIGFuZCBzb21lIG9mIHRob3NlIHN1cGVyY2xhc3NlcyBtYXkgdGhlbXNlbHZlcyBlYWNoIGJlXAotZGVyaXZlZCwgdmlhIGl0cyBASVNBLCBmcm9tIG9uZSBvciBtb3JlIHN1cGVyY2xhc3NlcyAoYXMgYWJvdmUpLlwKLVwKLVdoZW4sIHRoZW4sIHlvdSBjYWxsIGEgbWV0aG9kIGluIHRoYXQgY2xhc3MgKCRmaXNoc3RpY2stPmNhbG9yaWVzKSwgUGVybCBmaXJzdCBzZWFyY2hlc1wKLXRoZXJlIGZvciB0aGF0IG1ldGhvZCwgYnV0IGlmIGl0J3Mgbm90IHRoZXJlLCBpdCBnb2VzIHNlYXJjaGluZyBpbiBpdHMgc3VwZXJjbGFzc2VzLCBhbmRcCi1zbyBvbiwgaW4gYSBkZXB0aC1maXJzdCAob3IgbWF5YmUgImhlaWdodC1maXJzdCIgaXMgdGhlIHdvcmQpIHNlYXJjaC4gSW4gdGhlIGFib3ZlIGV4YW1wbGUsXAotaXQnZCBmaXJzdCBsb29rIGluIEZvb2Q6OkZpc2gsIHRoZW4gRm9vZCwgdGhlbiBNYXR0ZXIsIHRoZW4gTGlmZTo6RnVuZ3VzLCB0aGVuIExpZmUsIHRoZW5cCi1DaGVtaWNhbHMuXAotXAotVGhpcyBsaWJyYXJ5LCBDbGFzczo6SVNBLCBwcm92aWRlcyBmdW5jdGlvbnMgdGhhdCByZXR1cm4gdGhhdCBsaXN0IC0tIHRoZSBsaXN0XAotKGluIG9yZGVyKSBvZiBuYW1lcyBvZiBjbGFzc2VzIFBlcmwgd291bGQgc2VhcmNoIHRvIGZpbmQgYSBtZXRob2QsIHdpdGggbm8gZHVwbGljYXRlcy4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvZGlzdC9DbGFzcy1JU0EvIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT0xMDc7ZW5kbGluZT0xMTE7bWQ1PTZhNWM2ODQyYTYzY2ZlNGRhYjFmNjZlMjM1MGU0ZDI1IgotCi1TUkNfVVJJID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvQ1BBTi9hdXRob3JzL2lkL1MvU00vU01VRUxMRVIvQ2xhc3MtSVNBLSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjNhMmFkMjAzYzhkYzg3ZDZjOWRlMTYyMTVkMDBhZjQ3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg4MTZmMzRlOWEzOGU4NDlhMTBkZjc1NjAzMGRjY2Y5ZmUwNjFhMTk2YzExYWMzZmFhZmQ3MTEzYzkyOWI5NjQiCi0KLVMgPSAiJHtXT1JLRElSfS9DbGFzcy1JU0EtJHtQVn0iCi0KLWluaGVyaXQgY3BhbgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbHNiNC9wZXJsL2xpYmR1bXB2YWx1ZS1wZXJsXzEuMTcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWxzYjQvcGVybC9saWJkdW1wdmFsdWUtcGVybF8xLjE3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTc0NjE0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbHNiNC9wZXJsL2xpYmR1bXB2YWx1ZS1wZXJsXzEuMTcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1TVU1NQVJZID0gIlBlcmwgbW9kdWxlIGZvciBwcm92aWRlcyBzY3JlZW4gZHVtcCBvZiBQZXJsIGRhdGEiCi0KLUhPTUVQQUdFID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvfmZsb3JhL0R1bXB2YWx1ZS8iCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1mNzM2YmVjNWFkYTFmYzVlMzliMmE4ZTdlMDZiYmNiYiIKLQotU1JDX1VSSSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL0NQQU4vYXV0aG9ycy9pZC9GL0ZML0ZMT1JBL0R1bXB2YWx1ZS0ke1BWfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2ZWRlOWY2OTNkNGE5YzQ1NTU1NDFjYjFhMWNjMjAwNiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5ZWE3NDYwNmI1NDVmNzY5YTc4N2VjMmFlMjI5NTQ5YTJhZDBhOGUzY2Q0YjE0ZWZmMmNlMzg0MTgzNmIzYmRiIgotCi1TID0gIiR7V09SS0RJUn0vRHVtcHZhbHVlLSR7UFZ9IgotCi1pbmhlcml0IGNwYW4KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWxzYjQvcGVybC9saWJlbnYtcGVybF8xLjA0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1sc2I0L3BlcmwvbGliZW52LXBlcmxfMS4wNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGQ4ZTExNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWxzYjQvcGVybC9saWJlbnYtcGVybF8xLjA0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotU1VNTUFSWSA9ICJQZXJsIG1vZHVsZSB0aGF0IGltcG9ydHMgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFzIHNjYWxhcnMgb3IgYXJyYXlzIgotREVTQ1JJUFRJT04gPSAiUGVybCBtYWludGFpbnMgZW52aXJvbm1lbnQgdmFyaWFibGVzIGluIGEgc3BlY2lhbCBoYXNoIG5hbWVkICVFTlYuIFwKLUZvciB3aGVuIHRoaXMgYWNjZXNzIG1ldGhvZCBpcyBpbmNvbnZlbmllbnQsIHRoZSBQZXJsIG1vZHVsZSBFbnYgYWxsb3dzIGVudmlyb25tZW50IFwKLXZhcmlhYmxlcyB0byBiZSB0cmVhdGVkIGFzIHNjYWxhciBvciBhcnJheSB2YXJpYWJsZXMuIgotCi1IT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL35mbG9yYS9FbnYvIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NzZjMWNiZjE4ZGI1NmIzMzQwZDkxY2I5NDc5NDNiZDMiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9DUEFOL2F1dGhvcnMvaWQvRi9GTC9GTE9SQS9FbnYtJHtQVn0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZmRiYTVjMDY5MGU2Njk3MmM5NmZlZTExMmNmNWYyNWMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDk0YTNkNDEyZGYyNDZhZmRjMzFhMjE5OWNiZDhhZTkxNTE2N2EzZjQ2ODRmN2I3MDE0Y2UxMjAwMjUxZWJiMCIKLQotUyA9ICIke1dPUktESVJ9L0Vudi0ke1BWfSIKLQotaW5oZXJpdCBjcGFuCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1sc2I0L3BlcmwvbGliZmlsZS1jaGVja3RyZWUtcGVybF80LjQxLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1sc2I0L3BlcmwvbGliZmlsZS1jaGVja3RyZWUtcGVybF80LjQxLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZTM3YzcyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbHNiNC9wZXJsL2xpYmZpbGUtY2hlY2t0cmVlLXBlcmxfNC40MS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLVNVTU1BUlkgPSAiUGVybCBtb2R1bGUgdGhhdCBydW4gbWFueSBmaWxldGVzdCBjaGVja3Mgb24gYSB0cmVlIgotREVTQ1JJUFRJT04gPSAiVGhlIHZhbGlkYXRlKCkgcm91dGluZSB0YWtlcyBhIHNpbmdsZSBtdWx0aWxpbmUgc3RyaW5nIGNvbnNpc3RpbmcgXAotb2YgZGlyZWN0aXZlcywgZWFjaCBjb250YWluaW5nIGEgZmlsZW5hbWUgcGx1cyBhIGZpbGUgdGVzdCB0byB0cnkgb24gaXQuIChUaGUgZmlsZSBcCi10ZXN0IG1heSBhbHNvIGJlIGEgImNkIiwgY2F1c2luZyBzdWJzZXF1ZW50IHJlbGF0aXZlIGZpbGVuYW1lcyB0byBiZSBpbnRlcnByZXRlZCBcCi1yZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS4pIEFmdGVyIHRoZSBmaWxlIHRlc3QgeW91IG1heSBwdXQgfHwgZGllIHRvIG1ha2UgaXQgYSBcCi1mYXRhbCBlcnJvciBpZiB0aGUgZmlsZSB0ZXN0IGZhaWxzLiBUaGUgZGVmYXVsdCBpcyB8fCB3YXJuLiBUaGUgZmlsZSB0ZXN0IG1heSBcCi1vcHRpb25hbGx5IGhhdmUgYSAiIScgcHJlcGVuZGVkIHRvIHRlc3QgZm9yIHRoZSBvcHBvc2l0ZSBjb25kaXRpb24uIElmIHlvdSBkbyBhIFwKLWNkIGFuZCB0aGVuIGxpc3Qgc29tZSByZWxhdGl2ZSBmaWxlbmFtZXMsIHlvdSBtYXkgd2FudCB0byBpbmRlbnQgdGhlbSBzbGlnaHRseSBmb3IgXAotcmVhZGFiaWxpdHkuIElmIHlvdSBzdXBwbHkgeW91ciBvd24gZGllKCkgb3Igd2FybigpIG1lc3NhZ2UsIHlvdSBjYW4gdXNlICRmaWxlIHRvIFwKLWludGVycG9sYXRlIHRoZSBmaWxlbmFtZS4gXAotXAotRmlsZXRlc3RzIG1heSBiZSBidW5jaGVkOiAiLXJ3eCIgdGVzdHMgZm9yIGFsbCBvZiAtciwgLXcsIGFuZCAteC4gT25seSB0aGUgZmlyc3QgZmFpbGVkIFwKLXRlc3Qgb2YgdGhlIGJ1bmNoIHdpbGwgcHJvZHVjZSBhIHdhcm5pbmcuIFwKLVwKLVRoZSByb3V0aW5lIHJldHVybnMgdGhlIG51bWJlciBvZiB3YXJuaW5ncyBpc3N1ZWQuIgotCi1IT01FUEFHRSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL35mbG9yYS9GaWxlLUNoZWNrVHJlZS8iCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jNmZjYWNjNWRmODBlMDM3MDYwMzAwYTdmNGI5M2JmOSIKLQotU1JDX1VSSSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL0NQQU4vYXV0aG9ycy9pZC9GL0ZML0ZMT1JBL0ZpbGUtQ2hlY2tUcmVlLSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjUxOWM4MmFhN2U1YjdmNzUyYjRkYTE0YTZjOGFkNzQwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImZjOTlhYjZiYjVhZjQ2NjQ4MzI3MTU5NzRiNWExOWUzMjgwNzFkYzkyMDJhYjcyZTVkNWE1OTRlYmQ0NmE3MjkiCi0KLVMgPSAiJHtXT1JLRElSfS9GaWxlLUNoZWNrVHJlZS0ke1BWfSIKLQotaW5oZXJpdCBjcGFuCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1sc2I0L3BlcmwvbGliaTE4bi1jb2xsYXRlLXBlcmxfMS4wMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbHNiNC9wZXJsL2xpYmkxOG4tY29sbGF0ZS1wZXJsXzEuMDIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxODM5ZTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1sc2I0L3BlcmwvbGliaTE4bi1jb2xsYXRlLXBlcmxfMS4wMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLVNVTU1BUlkgPSAiUGVybCBtb2R1bGUgdGhhdCBjb21wYXJlIDgtYml0IHNjYWxhciBkYXRhIGFjY29yZGluZyB0byB0aGUgY3VycmVudCBsb2NhbGUiCi1ERVNDUklQVElPTiA9ICJUaGlzIG1vZHVsZSBwcm92aWRlcyB5b3Ugd2l0aCBvYmplY3RzIHRoYXQgd2lsbCBjb2xsYXRlIGFjY29yZGluZyB0byBcCi15b3VyIG5hdGlvbmFsIGNoYXJhY3RlciBzZXQsIHByb3ZpZGVkIHRoYXQgdGhlIFBPU0lYIHNldGxvY2FsZSgpIGZ1bmN0aW9uIGlzIHN1cHBvcnRlZCBcCi1vbiB5b3VyIHN5c3RlbS4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvfmZsb3JhL0kxOE4tQ29sbGF0ZS8iCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1mZjZkNjI5MTQ0YTZlYzFlYThjMzAwZjc1NzYwMTg0ZiIKLQotU1JDX1VSSSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL0NQQU4vYXV0aG9ycy9pZC9GL0ZML0ZMT1JBL0kxOE4tQ29sbGF0ZS0ke1BWfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3MmRkYjZkMWM1OWNmZGYzMWFhM2IwNDc5OWI4NmFmMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5MTc0NTA2YmM5MDNlZGE4OTY5MDM5NGUzZjQ1NTU4YWI3ZTAxMzExNDIyNzg5NmQ4NTY5ZDYxNjQ2NDhmZTM3IgotCi1TID0gIiR7V09SS0RJUn0vSTE4Ti1Db2xsYXRlLSR7UFZ9IgotCi1pbmhlcml0IGNwYW4KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWxzYjQvcGVybC9saWJwb2QtcGxhaW5lci1wZXJsXzEuMDQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLWxzYjQvcGVybC9saWJwb2QtcGxhaW5lci1wZXJsXzEuMDQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzZTU4ZjAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1sc2I0L3BlcmwvbGlicG9kLXBsYWluZXItcGVybF8xLjA0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotU1VNTUFSWSA9ICJQZXJsIGV4dGVuc2lvbiBmb3IgY29udmVydGluZyBQb2QgdG8gb2xkLXN0eWxlIFBvZCIKLURFU0NSSVBUSU9OID0gIlBvZDo6UGxhaW5lciB1c2VzIFBvZDo6UGFyc2VyIHdoaWNoIHRha2VzIFBvZCB3aXRoIHRoZSAobmV3KSAnQzw8IC4uID4+JyBcCi1jb25zdHJ1Y3RzIGFuZCByZXR1cm5zIHRoZSBvbGQoZXIpIHN0eWxlIHdpdGgganVzdCAnQzw+JzsgJzwnIGFuZCAnPicgYXJlIHJlcGxhY2VkIGJ5IFwKLSdFPGx0PicgYW5kICdFPGd0PicuIFwKLVwKLVRoaXMgY2FuIGJlIHVzZWQgdG8gcHJlLXByb2Nlc3MgUG9kIGJlZm9yZSB1c2luZyB0b29scyB3aGljaCBkbyBub3QgcmVjb2duaXNlIHRoZSBuZXcgc3R5bGUgUG9kcy4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvZGlzdC9Qb2QtUGxhaW5lci8iCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7YmVnaW5saW5lPTI3O21kNT0yMjdjZjgzOTcwZmM2MTI2NDg0NTgyNWQ5ZDJiZjZmOCIKLQotU1JDX1VSSSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL0NQQU4vYXV0aG9ycy9pZC9SL1JNL1JNQkFSS0VSL1BvZC1QbGFpbmVyLSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gImY1MDJlYWNkMWE0MDg5NGI5ZGZlYTU1ZmMyY2Q1ZTdkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFiYmZiZjdkMWQ0ODcxZTVhODNiYWIyMTM3ZTIyZDA4OTA3ODIwNjgxNTE5MGViMWQ1YzEyNjBhMzQ5OTQ1NmYiCi0KLVMgPSAiJHtXT1JLRElSfS9Qb2QtUGxhaW5lci0ke1BWfSIKLQotaW5oZXJpdCBjcGFuCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWIvMDAwMS11Y20tcGFyc2VyLW5lZWRzLWxpbWl0cy5oLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWIvMDAwMS11Y20tcGFyc2VyLW5lZWRzLWxpbWl0cy5oLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZWRhZjRkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliLzAwMDEtdWNtLXBhcnNlci1uZWVkcy1saW1pdHMuaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb20gMDA1YWM5ZDJmYTAwMDkxMmM4ZmI4MjU3MDIwYTA0NzFiMWM2MTc2YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEd1c3Rhdm8gWmFjYXJpYXMgPGd1c3Rhdm9AemFjYXJpYXMuY29tLmFyPgotRGF0ZTogV2VkLCAyMSBEZWMgMjAxNiAxOTo0NjozNCAtMDMwMAotU3ViamVjdDogW1BBVENIXSB1Y206IHBhcnNlciBuZWVkcyBsaW1pdHMuaAotCi1JdCdzIHVzaW5nIFBBVEhfTUFYIHdoaWNoIGlzIGRlZmluZWQgdGhlcmUsIG90aGVyd2lzZSB0aGUgYnVpbGQgZmFpbHMgb24KLW11c2wgbGliYy4KLQotU2lnbmVkLW9mZi1ieTogR3VzdGF2byBaYWNhcmlhcyA8Z3VzdGF2b0B6YWNhcmlhcy5jb20uYXI+Ci1TaWduZWQtb2ZmLWJ5OiBUYWthc2hpIEl3YWkgPHRpd2FpQHN1c2UuZGU+Ci0KLVVwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQgW2V4cGVjdGVkIGluIDEuMS40XQotCi1TaWduZWQtb2ZmLWJ5OiBUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+Ci0tLS0KLSBzcmMvdWNtL3BhcnNlci5jIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvdWNtL3BhcnNlci5jIGIvc3JjL3VjbS9wYXJzZXIuYwotaW5kZXggYzk4MzczYTkuLmY1MjBhYmM1IDEwMDY0NAotLS0tIGEvc3JjL3VjbS9wYXJzZXIuYwotKysrIGIvc3JjL3VjbS9wYXJzZXIuYwotQEAgLTMyLDYgKzMyLDcgQEAKLSAKLSAjaW5jbHVkZSAidWNtX2xvY2FsLmgiCi0gI2luY2x1ZGUgPGRpcmVudC5oPgotKyNpbmNsdWRlIDxsaW1pdHMuaD4KLSAKLSAvKiogVGhlIG5hbWUgb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGNvbnRhaW5pbmcgdGhlIFVDTSBkaXJlY3RvcnkgKi8KLSAjZGVmaW5lIEFMU0FfQ09ORklHX1VDTV9WQVIgIkFMU0FfQ09ORklHX1VDTSIKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliXzEuMS4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWJfMS4xLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5MWEwMzYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWJfMS4xLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1TVU1NQVJZID0gIkFMU0Egc291bmQgbGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuYWxzYS1wcm9qZWN0Lm9yZyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2Fsc2EtcHJvamVjdC5vcmcvbWFpbi9pbmRleC5waHAvQnVnX1RyYWNraW5nIgotU0VDVElPTiA9ICJsaWJzL211bHRpbWVkaWEiCi1MSUNFTlNFID0gIkxHUEx2Mi4xICYgR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9N2ZiYzMzODMwOWFjMzhmZWZjZDY0YjA0YmI5MDNlMzQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3NvY2tldC5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjY7bWQ1PTExZmY4OWE4YTdhNGE2OTBhNWM3OGVmZmU4MTU5NTQ1IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLVNSQ19VUkkgPSAiZnRwOi8vZnRwLmFsc2EtcHJvamVjdC5vcmcvcHViL2xpYi8ke0JQfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL0NoZWNrLWlmLXdvcmRleHAtZnVuY3Rpb24taXMtc3VwcG9ydGVkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2F2b2lkLWluY2x1ZGluZy1zeXMtcG9sbC5oLWRpcmVjdGx5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtdWNtLXBhcnNlci1uZWVkcy1saW1pdHMuaC5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiZWVmZTU5OTI1NjdiYTAwZDYxMTBhNTQwNjU3YWFmNWMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzEyODI1MDIxODRjNTkyYzFhMDA4ZTI1NmMyMmVkMGJhNTcyOGNhNjVlMDUyNzNjZWI0ODBjNzBmNTE1OTY5YyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLXJlcXVpcmUgYWxzYS1mcHUuaW5jCi1FWFRSQV9PRUNPTkYgKz0gIiR7QGdldF9hbHNhX2ZwdV9zZXR0aW5nKGJiLCBkKX0gIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1weXRob24iCi0KLUVYVFJBX09FQ09ORl9hcHBlbmRfbGliYy11Y2xpYmMgPSAiIC0td2l0aC12ZXJzaW9uZWQ9bm8gIgotCi1QQUNLQUdFUyA9KyAiYWxzYS1zZXJ2ZXIgbGliYXNvdW5kIGFsc2EtY29uZiBhbHNhLWRvYyIKLUZJTEVTX2xpYmFzb3VuZCA9ICIke2xpYmRpcn0vbGliYXNvdW5kLnNvLioiCi1GSUxFU19hbHNhLXNlcnZlciA9ICIke2JpbmRpcn0vKiIKLUZJTEVTX2Fsc2EtY29uZiA9ICIke2RhdGFkaXJ9L2Fsc2EvIgotCi1SREVQRU5EU19saWJhc291bmQgPSAiYWxzYS1jb25mIgotCi0jIGFsc2EtbGliIGdldHMgYXV0b21hdGljYWxseSBhZGRlZCB0byBhbHNhLWxpYi1kZXYgZGVwZW5kZW5jaWVzLCBidXQgdGhlCi0jIGFsc2EtbGliIHBhY2thZ2UgZG9lc24ndCBleGlzdC4gbGliYXNvdW5kIGlzIHRoZSByZWFsIGxpYnJhcnkgcGFja2FnZS4KLVJERVBFTkRTXyR7UE59LWRldiA9ICJsaWJhc291bmQiCi0KLSMgdXBncmFkZSBwYXRoCi1SUFJPVklERVNfJHtQTn0tZGV2ID0gImFsc2EtZGV2IgotUlJFUExBQ0VTXyR7UE59LWRldiA9ICJhbHNhLWRldiIKLVJDT05GTElDVFNfJHtQTn0tZGV2ID0gImFsc2EtZGV2IgotCi1SUFJPVklERVNfYWxzYS1jb25mID0gImFsc2EtY29uZi1iYXNlIgotUlJFUExBQ0VTX2Fsc2EtY29uZiA9ICJhbHNhLWNvbmYtYmFzZSIKLVJDT05GTElDVFNfYWxzYS1jb25mID0gImFsc2EtY29uZi1iYXNlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWJfMS4xLjQuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliXzEuMS40LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWNkZWFlMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliXzEuMS40LjEuYmIKQEAgLTAsMCArMSw0MyBAQAorU1VNTUFSWSA9ICJBTFNBIHNvdW5kIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmFsc2EtcHJvamVjdC5vcmciCitCVUdUUkFDS0VSID0gImh0dHA6Ly9hbHNhLXByb2plY3Qub3JnL21haW4vaW5kZXgucGhwL0J1Z19UcmFja2luZyIKK1NFQ1RJT04gPSAibGlicy9tdWx0aW1lZGlhIgorTElDRU5TRSA9ICJMR1BMdjIuMSAmIEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTdmYmMzMzgzMDlhYzM4ZmVmY2Q2NGIwNGJiOTAzZTM0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9zb2NrZXQuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTI2O21kNT0xMWZmODlhOGE3YTRhNjkwYTVjNzhlZmZlODE1OTU0NSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitTUkNfVVJJID0gImZ0cDovL2Z0cC5hbHNhLXByb2plY3Qub3JnL3B1Yi9saWIvJHtCUH0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9DaGVjay1pZi13b3JkZXhwLWZ1bmN0aW9uLWlzLXN1cHBvcnRlZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9hdm9pZC1pbmNsdWRpbmctc3lzLXBvbGwuaC1kaXJlY3RseS5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiMjlmYTNlNjkxMjJkM2NmM2U4ZjBlMDFhMGNiMWQxODMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTFiYjg3MGMxNGQxYzdjMjY5MjEzMjg1ZWVlZDg3NGZhM2QyODExMjA3N2RiMDYxYTNhZjgwMTBkMDg4NWI3NiIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK3JlcXVpcmUgYWxzYS1mcHUuaW5jCitFWFRSQV9PRUNPTkYgKz0gIiR7QGdldF9hbHNhX2ZwdV9zZXR0aW5nKGJiLCBkKX0gIgorCitFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1weXRob24iCisKK1BBQ0tBR0VTID0rICJhbHNhLXNlcnZlciBsaWJhc291bmQgYWxzYS1jb25mIGFsc2EtZG9jIgorRklMRVNfbGliYXNvdW5kID0gIiR7bGliZGlyfS9saWJhc291bmQuc28uKiIKK0ZJTEVTX2Fsc2Etc2VydmVyID0gIiR7YmluZGlyfS8qIgorRklMRVNfYWxzYS1jb25mID0gIiR7ZGF0YWRpcn0vYWxzYS8iCisKK1JERVBFTkRTX2xpYmFzb3VuZCA9ICJhbHNhLWNvbmYiCisKKyMgYWxzYS1saWIgZ2V0cyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIGFsc2EtbGliLWRldiBkZXBlbmRlbmNpZXMsIGJ1dCB0aGUKKyMgYWxzYS1saWIgcGFja2FnZSBkb2Vzbid0IGV4aXN0LiBsaWJhc291bmQgaXMgdGhlIHJlYWwgbGlicmFyeSBwYWNrYWdlLgorUkRFUEVORFNfJHtQTn0tZGV2ID0gImxpYmFzb3VuZCIKKworIyB1cGdyYWRlIHBhdGgKK1JQUk9WSURFU18ke1BOfS1kZXYgPSAiYWxzYS1kZXYiCitSUkVQTEFDRVNfJHtQTn0tZGV2ID0gImFsc2EtZGV2IgorUkNPTkZMSUNUU18ke1BOfS1kZXYgPSAiYWxzYS1kZXYiCisKK1JQUk9WSURFU19hbHNhLWNvbmYgPSAiYWxzYS1jb25mLWJhc2UiCitSUkVQTEFDRVNfYWxzYS1jb25mID0gImFsc2EtY29uZi1iYXNlIgorUkNPTkZMSUNUU19hbHNhLWNvbmYgPSAiYWxzYS1jb25mLWJhc2UiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXBsdWdpbnNfMS4xLjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXBsdWdpbnNfMS4xLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2Njg2YTAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1wbHVnaW5zXzEuMS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAzICswLDAgQEAKLVNVTU1BUlkgPSAiQUxTQSBQbHVnaW5zIgotSE9NRVBBR0UgPSAiaHR0cDovL2Fsc2EtcHJvamVjdC5vcmciCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9hbHNhLXByb2plY3Qub3JnL21haW4vaW5kZXgucGhwL0J1Z19UcmFja2luZyIKLVNFQ1RJT04gPSAibXVsdGltZWRpYSIKLQotIyBUaGUgcHJpbWFyeSBsaWNlbnNlIG9mIGFsc2EtcGx1Z2lucyBpcyBMR1BMdjIuMS4KLSMKLSMgbTQvYXR0cmlidXRlcy5tNCBpcyBsaWNlbnNlZCB1bmRlciBHUEx2MisuIG00L2F0dHJpYnV0ZXMubTQgaXMgcGFydCBvZiB0aGUKLSMgYnVpbGQgc3lzdGVtLCBhbmQgZG9lc24ndCBhZmZlY3QgdGhlIGxpY2Vuc2luZyBvZiB0aGUgYnVpbGQgcmVzdWx0LgotIwotIyBUaGUgc2FtcGxlcmF0ZSBwbHVnaW4gc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgR1BMdjIrIHRvIGJlIGNvbnNpc3RlbnQKLSMgd2l0aCB0aGUgbGlic2FtcGxlcmF0ZSBsaWNlbnNlLiBIb3dldmVyLCBpZiB0aGUgbGljZW5zZWUgaGFzIGEgY29tbWVyY2lhbAotIyBsaWNlbnNlIGZvciBsaWJzYW1wbGVyYXRlLCB0aGUgc2FtcGxlcmF0ZSBwbHVnaW4gbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zCi0jIG9mIExHUEx2Mi4xIGxpa2UgdGhlIHJlc3Qgb2YgdGhlIHBsdWdpbnMuCi1MSUNFTlNFID0gIkxHUEx2Mi4xICYgR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJcCi0gICAgICAgIGZpbGU6Ly9DT1BZSU5HO21kNT03ZmJjMzM4MzA5YWMzOGZlZmNkNjRiMDRiYjkwM2UzNCBcCi0gICAgICAgIGZpbGU6Ly9DT1BZSU5HLkdQTDttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAotICAgICAgICBmaWxlOi8vbTQvYXR0cmlidXRlcy5tNDtlbmRsaW5lPTMzO21kNT1iMjU5NThkYTQ0YzAyMjMxZTM2NDFmMWJjY2VmNTNlYiBcCi0gICAgICAgIGZpbGU6Ly9yYXRlL3JhdGVfc2FtcGxlcmF0ZS5jO2VuZGxpbmU9MzU7bWQ1PWZkNzdiY2U4NWY0YTMzOGMwZThhYjE4NDMwYjY5ZmFlIFwKLSIKLQotU1JDX1VSSSA9ICJmdHA6Ly9mdHAuYWxzYS1wcm9qZWN0Lm9yZy9wdWIvcGx1Z2lucy8ke0JQfS50YXIuYnoyIgotU1JDX1VSSVttZDVzdW1dID0gIjY5ZjlmM2UyZGUzYzk3ZmM3MWQ0OTZlOTFlMjcxZmU1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhlYTRkMWUwODJjMzY1MjhhODk2YTI1ODFlNWViNjJkNGRjMjY4MzIzOGUzNTMwNTBkMGQ2MjRlNjVmOTAxZjEiCi0KLURFUEVORFMgKz0gImFsc2EtbGliIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIlwKLSAgICAgICAgc2FtcGxlcmF0ZSBcCi0gICAgICAgIHNwZWV4ZHNwIFwKLSAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncHVsc2VhdWRpbycsIGQpfSBcCi0iCi1QQUNLQUdFQ09ORklHW2F2Y29kZWNdID0gIi0tZW5hYmxlLWF2Y29kZWMsLS1kaXNhYmxlLWF2Y29kZWMsbGliYXYiCi1QQUNLQUdFQ09ORklHW2phY2tdID0gIi0tZW5hYmxlLWphY2ssLS1kaXNhYmxlLWphY2ssamFjayIKLVBBQ0tBR0VDT05GSUdbbWFlbW8tcGx1Z2luXSA9ICItLWVuYWJsZS1tYWVtby1wbHVnaW4sLS1kaXNhYmxlLW1hZW1vLXBsdWdpbiIKLVBBQ0tBR0VDT05GSUdbbWFlbW8tcmVzb3VyY2UtbWFuYWdlcl0gPSAiLS1lbmFibGUtbWFlbW8tcmVzb3VyY2UtbWFuYWdlciwtLWRpc2FibGUtbWFlbW8tcmVzb3VyY2UtbWFuYWdlcixkYnVzIgotUEFDS0FHRUNPTkZJR1twdWxzZWF1ZGlvXSA9ICItLWVuYWJsZS1wdWxzZWF1ZGlvLC0tZGlzYWJsZS1wdWxzZWF1ZGlvLHB1bHNlYXVkaW8iCi1QQUNLQUdFQ09ORklHW3NhbXBsZXJhdGVdID0gIi0tZW5hYmxlLXNhbXBsZXJhdGUsLS1kaXNhYmxlLXNhbXBsZXJhdGUsbGlic2FtcGxlcmF0ZTAiCi1QQUNLQUdFQ09ORklHW3NwZWV4ZHNwXSA9ICItLXdpdGgtc3BlZXg9bGliLC0td2l0aC1zcGVleD1ubyxzcGVleGRzcCIKLQotUEFDS0FHRVMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B1bHNlYXVkaW8nLCAnYWxzYS1wbHVnaW5zLXB1bHNlYXVkaW8tY29uZicsICcnLCBkKX0iCi0KLVBBQ0tBR0VTX0RZTkFNSUMgPSAiXmxpYmFzb3VuZC1tb2R1bGUtLioiCi0KLSMgVGhlIGFsc2EtcGx1Z2lucyBwYWNrYWdlIGRvZXNuJ3QgaXRzZWxmIGNvbnRhaW4gYW55dGhpbmcsIGl0IGp1c3QgZGVwZW5kcyBvbgotIyBhbGwgYnVpbHQgcGx1Z2lucy4KLUFMTE9XX0VNUFRZXyR7UE59ID0gIjEiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCXJtICR7RH0ke2xpYmRpcn0vYWxzYS1saWIvKi5sYQotCi0JIyBXZSB1c2UgdGhlIGV4YW1wbGUgYXMgaXMsIHNvIGp1c3QgZHJvcCB0aGUgLmV4YW1wbGUgc3VmZml4LgotCWlmIFsgIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B1bHNlYXVkaW8nLCAneWVzJywgJ25vJywgZCl9IiA9ICJ5ZXMiIF07IHRoZW4KLQkJbXYgJHtEfSR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC85OS1wdWxzZWF1ZGlvLWRlZmF1bHQuY29uZi5leGFtcGxlICR7RH0ke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvOTktcHVsc2VhdWRpby1kZWZhdWx0LmNvbmYKLQlmaQotfQotCi1weXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCgpIHsKLSAgICBwbHVnaW5kaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9L2Fsc2EtbGliLycpCi0gICAgcGFja2FnZXMgPSAiICIuam9pbihkb19zcGxpdF9wYWNrYWdlcyhkLCBwbHVnaW5kaXIsICdebGliYXNvdW5kX21vZHVsZV8oLiopXC5zbyQnLCAnbGliYXNvdW5kLW1vZHVsZS0lcycsICdBbHNhIHBsdWdpbiBmb3IgJXMnLCBleHRyYV9kZXBlbmRzPScnKSkKLSAgICBkLnNldFZhcigiUkRFUEVORFNfYWxzYS1wbHVnaW5zIiwgcGFja2FnZXMpCi19Ci0KLSMgVGhlIHJhdGUgcGx1Z2lucyBjcmVhdGUgc29tZSBzeW1saW5rcy4gRm9yIGV4YW1wbGUsIHRoZSBzYW1wbGVyYXRlIHBsdWdpbgotIyBjcmVhdGVzIHRoZXNlIGxpbmtzIHRvIHRoZSBtYWluIHBsdWdpbiBmaWxlOgotIwotIyAgIGxpYmFzb3VuZF9tb2R1bGVfcmF0ZV9zYW1wbGVyYXRlX2Jlc3Quc28KLSMgICBsaWJhc291bmRfbW9kdWxlX3JhdGVfc2FtcGxlcmF0ZV9saW5lYXIuc28KLSMgICBsaWJhc291bmRfbW9kdWxlX3JhdGVfc2FtcGxlcmF0ZV9tZWRpdW0uc28KLSMgICBsaWJhc291bmRfbW9kdWxlX3JhdGVfc2FtcGxlcmF0ZV9vcmRlci5zbwotIwotIyBUaGUgb3RoZXIgcmF0ZSBwbHVnaW5zIGNyZWF0ZSBzaW1pbGFyIGxpbmtzLiBXZSBoYXZlIHRvIGFkZCB0aGUgbGlua3MgdG8KLSMgRklMRVMgbWFudWFsbHksIGJlY2F1c2UgZG9fc3BsaXRfcGFja2FnZXMoKSBza2lwcyB0aGUgbGlua3MgKHdoaWNoIGlzIGdvb2QsCi0jIGJlY2F1c2Ugd2Ugd291bGRuJ3Qgd2FudCBkb19zcGxpdF9wYWNrYWdlcygpIHRvIGNyZWF0ZSBzZXBhcmF0ZSBwYWNrYWdlcyBmb3IKLSMgdGhlIHN5bWxpbmtzKS4KLSMKLSMgVGhlIHN5bWxpbmtzIGNhdXNlIFFBIGVycm9ycywgYmVjYXVzZSB1c3VhbGx5IGl0J3MgYSBidWcgaWYgYSBub24KLSMgLWRldi8tZGJnLy1uYXRpdmVzZGsgcGFja2FnZSBjb250YWlucyBsaW5rcyB0byAuc28gZmlsZXMsIGJ1dCBpbiB0aGlzIGNhc2UKLSMgdGhlIGVycm9ycyBhcmUgZmFsc2UgcG9zaXRpdmVzLCBzbyB3ZSBkaXNhYmxlIHRoZSBRQSBjaGVja3MuCi1GSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1sYXZjcmF0ZSArPSAiJHtsaWJkaXJ9L2Fsc2EtbGliLypyYXRlX2xhdmNyYXRlXyouc28iCi1GSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1zYW1wbGVyYXRlICs9ICIke2xpYmRpcn0vYWxzYS1saWIvKnJhdGVfc2FtcGxlcmF0ZV8qLnNvIgotRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtc3BlZXhyYXRlICs9ICIke2xpYmRpcn0vYWxzYS1saWIvKnJhdGVfc3BlZXhyYXRlXyouc28iCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1sYXZjcmF0ZSA9ICJkZXYtc28iCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1zYW1wbGVyYXRlID0gImRldi1zbyIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLXNwZWV4cmF0ZSA9ICJkZXYtc28iCi0KLSMgNTAtcHVsc2VhdWRpby5jb25mIGRlZmluZXMgYSBkZXZpY2UgbmFtZWQgInB1bHNlIiB0aGF0IGFwcGxpY2F0aW9ucyBjYW4gdXNlCi0jIGlmIHRoZXkgZXhwbGljaXRseSB3YW50IHRvIHVzZSB0aGUgUHVsc2VBdWRpbyBwbHVnaW4uCi0jIDk5LXB1bHNlYXVkaW8tZGVmYXVsdC5jb25mIGNvbmZpZ3VyZXMgdGhlICJkZWZhdWx0IiBkZXZpY2UgdG8gdXNlIHRoZQotIyBQdWxzZUF1ZGlvIHBsdWdpbi4KLUZJTEVTXyR7UE59LXB1bHNlYXVkaW8tY29uZiArPSAiXAotICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvNTAtcHVsc2VhdWRpby5jb25mIFwKLSAgICAgICAgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzk5LXB1bHNlYXVkaW8tZGVmYXVsdC5jb25mIFwKLSIKLQotUkRFUEVORFNfJHtQTn0tcHVsc2VhdWRpby1jb25mICs9ICJcCi0gICAgICAgIGxpYmFzb3VuZC1tb2R1bGUtY29uZi1wdWxzZSBcCi0gICAgICAgIGxpYmFzb3VuZC1tb2R1bGUtY3RsLXB1bHNlIFwKLSAgICAgICAgbGliYXNvdW5kLW1vZHVsZS1wY20tcHVsc2UgXAotIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1wbHVnaW5zXzEuMS40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1wbHVnaW5zXzEuMS40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3Zjc5YjcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXBsdWdpbnNfMS4xLjQuYmIKQEAgLTAsMCArMSwxMDMgQEAKK1NVTU1BUlkgPSAiQUxTQSBQbHVnaW5zIgorSE9NRVBBR0UgPSAiaHR0cDovL2Fsc2EtcHJvamVjdC5vcmciCitCVUdUUkFDS0VSID0gImh0dHA6Ly9hbHNhLXByb2plY3Qub3JnL21haW4vaW5kZXgucGhwL0J1Z19UcmFja2luZyIKK1NFQ1RJT04gPSAibXVsdGltZWRpYSIKKworIyBUaGUgcHJpbWFyeSBsaWNlbnNlIG9mIGFsc2EtcGx1Z2lucyBpcyBMR1BMdjIuMS4KKyMKKyMgbTQvYXR0cmlidXRlcy5tNCBpcyBsaWNlbnNlZCB1bmRlciBHUEx2MisuIG00L2F0dHJpYnV0ZXMubTQgaXMgcGFydCBvZiB0aGUKKyMgYnVpbGQgc3lzdGVtLCBhbmQgZG9lc24ndCBhZmZlY3QgdGhlIGxpY2Vuc2luZyBvZiB0aGUgYnVpbGQgcmVzdWx0LgorIworIyBUaGUgc2FtcGxlcmF0ZSBwbHVnaW4gc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgR1BMdjIrIHRvIGJlIGNvbnNpc3RlbnQKKyMgd2l0aCB0aGUgbGlic2FtcGxlcmF0ZSBsaWNlbnNlLiBIb3dldmVyLCBpZiB0aGUgbGljZW5zZWUgaGFzIGEgY29tbWVyY2lhbAorIyBsaWNlbnNlIGZvciBsaWJzYW1wbGVyYXRlLCB0aGUgc2FtcGxlcmF0ZSBwbHVnaW4gbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zCisjIG9mIExHUEx2Mi4xIGxpa2UgdGhlIHJlc3Qgb2YgdGhlIHBsdWdpbnMuCitMSUNFTlNFID0gIkxHUEx2Mi4xICYgR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJcCisgICAgICAgIGZpbGU6Ly9DT1BZSU5HO21kNT03ZmJjMzM4MzA5YWMzOGZlZmNkNjRiMDRiYjkwM2UzNCBcCisgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkdQTDttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAorICAgICAgICBmaWxlOi8vbTQvYXR0cmlidXRlcy5tNDtlbmRsaW5lPTMzO21kNT1iMjU5NThkYTQ0YzAyMjMxZTM2NDFmMWJjY2VmNTNlYiBcCisgICAgICAgIGZpbGU6Ly9yYXRlL3JhdGVfc2FtcGxlcmF0ZS5jO2VuZGxpbmU9MzU7bWQ1PWZkNzdiY2U4NWY0YTMzOGMwZThhYjE4NDMwYjY5ZmFlIFwKKyIKKworU1JDX1VSSSA9ICJmdHA6Ly9mdHAuYWxzYS1wcm9qZWN0Lm9yZy9wdWIvcGx1Z2lucy8ke0JQfS50YXIuYnoyIgorU1JDX1VSSVttZDVzdW1dID0gImRlNTExMzBhNzQ0NGI3OWIyZGQzYzI1ZTI4NDIwNzU0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjUzMGQxYzNiZGFlYjA1OGYyYTAzNjA3YTMzYjllMTZlZTUzNjliZmQzMGE5NmJjMDliZDJjNjliNGRkZDFhOGEiCisKK0RFUEVORFMgKz0gImFsc2EtbGliIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworUEFDS0FHRUNPTkZJRyA/Pz0gIlwKKyAgICAgICAgc2FtcGxlcmF0ZSBcCisgICAgICAgIHNwZWV4ZHNwIFwKKyAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncHVsc2VhdWRpbycsIGQpfSBcCisiCitQQUNLQUdFQ09ORklHW2F2Y29kZWNdID0gIi0tZW5hYmxlLWF2Y29kZWMsLS1kaXNhYmxlLWF2Y29kZWMsbGliYXYiCitQQUNLQUdFQ09ORklHW2phY2tdID0gIi0tZW5hYmxlLWphY2ssLS1kaXNhYmxlLWphY2ssamFjayIKK1BBQ0tBR0VDT05GSUdbbWFlbW8tcGx1Z2luXSA9ICItLWVuYWJsZS1tYWVtby1wbHVnaW4sLS1kaXNhYmxlLW1hZW1vLXBsdWdpbiIKK1BBQ0tBR0VDT05GSUdbbWFlbW8tcmVzb3VyY2UtbWFuYWdlcl0gPSAiLS1lbmFibGUtbWFlbW8tcmVzb3VyY2UtbWFuYWdlciwtLWRpc2FibGUtbWFlbW8tcmVzb3VyY2UtbWFuYWdlcixkYnVzIgorUEFDS0FHRUNPTkZJR1twdWxzZWF1ZGlvXSA9ICItLWVuYWJsZS1wdWxzZWF1ZGlvLC0tZGlzYWJsZS1wdWxzZWF1ZGlvLHB1bHNlYXVkaW8iCitQQUNLQUdFQ09ORklHW3NhbXBsZXJhdGVdID0gIi0tZW5hYmxlLXNhbXBsZXJhdGUsLS1kaXNhYmxlLXNhbXBsZXJhdGUsbGlic2FtcGxlcmF0ZTAiCitQQUNLQUdFQ09ORklHW3NwZWV4ZHNwXSA9ICItLXdpdGgtc3BlZXg9bGliLC0td2l0aC1zcGVleD1ubyxzcGVleGRzcCIKKworUEFDS0FHRVMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B1bHNlYXVkaW8nLCAnYWxzYS1wbHVnaW5zLXB1bHNlYXVkaW8tY29uZicsICcnLCBkKX0iCisKK1BBQ0tBR0VTX0RZTkFNSUMgPSAiXmxpYmFzb3VuZC1tb2R1bGUtLioiCisKKyMgVGhlIGFsc2EtcGx1Z2lucyBwYWNrYWdlIGRvZXNuJ3QgaXRzZWxmIGNvbnRhaW4gYW55dGhpbmcsIGl0IGp1c3QgZGVwZW5kcyBvbgorIyBhbGwgYnVpbHQgcGx1Z2lucy4KK0FMTE9XX0VNUFRZXyR7UE59ID0gIjEiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCXJtICR7RH0ke2xpYmRpcn0vYWxzYS1saWIvKi5sYQorCisJIyBXZSB1c2UgdGhlIGV4YW1wbGUgYXMgaXMsIHNvIGp1c3QgZHJvcCB0aGUgLmV4YW1wbGUgc3VmZml4LgorCWlmIFsgIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B1bHNlYXVkaW8nLCAneWVzJywgJ25vJywgZCl9IiA9ICJ5ZXMiIF07IHRoZW4KKwkJbXYgJHtEfSR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC85OS1wdWxzZWF1ZGlvLWRlZmF1bHQuY29uZi5leGFtcGxlICR7RH0ke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvOTktcHVsc2VhdWRpby1kZWZhdWx0LmNvbmYKKwlmaQorfQorCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCgpIHsKKyAgICBwbHVnaW5kaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9L2Fsc2EtbGliLycpCisgICAgcGFja2FnZXMgPSAiICIuam9pbihkb19zcGxpdF9wYWNrYWdlcyhkLCBwbHVnaW5kaXIsICdebGliYXNvdW5kX21vZHVsZV8oLiopXC5zbyQnLCAnbGliYXNvdW5kLW1vZHVsZS0lcycsICdBbHNhIHBsdWdpbiBmb3IgJXMnLCBleHRyYV9kZXBlbmRzPScnKSkKKyAgICBkLnNldFZhcigiUkRFUEVORFNfYWxzYS1wbHVnaW5zIiwgcGFja2FnZXMpCit9CisKKyMgVGhlIHJhdGUgcGx1Z2lucyBjcmVhdGUgc29tZSBzeW1saW5rcy4gRm9yIGV4YW1wbGUsIHRoZSBzYW1wbGVyYXRlIHBsdWdpbgorIyBjcmVhdGVzIHRoZXNlIGxpbmtzIHRvIHRoZSBtYWluIHBsdWdpbiBmaWxlOgorIworIyAgIGxpYmFzb3VuZF9tb2R1bGVfcmF0ZV9zYW1wbGVyYXRlX2Jlc3Quc28KKyMgICBsaWJhc291bmRfbW9kdWxlX3JhdGVfc2FtcGxlcmF0ZV9saW5lYXIuc28KKyMgICBsaWJhc291bmRfbW9kdWxlX3JhdGVfc2FtcGxlcmF0ZV9tZWRpdW0uc28KKyMgICBsaWJhc291bmRfbW9kdWxlX3JhdGVfc2FtcGxlcmF0ZV9vcmRlci5zbworIworIyBUaGUgb3RoZXIgcmF0ZSBwbHVnaW5zIGNyZWF0ZSBzaW1pbGFyIGxpbmtzLiBXZSBoYXZlIHRvIGFkZCB0aGUgbGlua3MgdG8KKyMgRklMRVMgbWFudWFsbHksIGJlY2F1c2UgZG9fc3BsaXRfcGFja2FnZXMoKSBza2lwcyB0aGUgbGlua3MgKHdoaWNoIGlzIGdvb2QsCisjIGJlY2F1c2Ugd2Ugd291bGRuJ3Qgd2FudCBkb19zcGxpdF9wYWNrYWdlcygpIHRvIGNyZWF0ZSBzZXBhcmF0ZSBwYWNrYWdlcyBmb3IKKyMgdGhlIHN5bWxpbmtzKS4KKyMKKyMgVGhlIHN5bWxpbmtzIGNhdXNlIFFBIGVycm9ycywgYmVjYXVzZSB1c3VhbGx5IGl0J3MgYSBidWcgaWYgYSBub24KKyMgLWRldi8tZGJnLy1uYXRpdmVzZGsgcGFja2FnZSBjb250YWlucyBsaW5rcyB0byAuc28gZmlsZXMsIGJ1dCBpbiB0aGlzIGNhc2UKKyMgdGhlIGVycm9ycyBhcmUgZmFsc2UgcG9zaXRpdmVzLCBzbyB3ZSBkaXNhYmxlIHRoZSBRQSBjaGVja3MuCitGSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1sYXZjcmF0ZSArPSAiJHtsaWJkaXJ9L2Fsc2EtbGliLypyYXRlX2xhdmNyYXRlXyouc28iCitGSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1zYW1wbGVyYXRlICs9ICIke2xpYmRpcn0vYWxzYS1saWIvKnJhdGVfc2FtcGxlcmF0ZV8qLnNvIgorRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtc3BlZXhyYXRlICs9ICIke2xpYmRpcn0vYWxzYS1saWIvKnJhdGVfc3BlZXhyYXRlXyouc28iCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1sYXZjcmF0ZSA9ICJkZXYtc28iCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1zYW1wbGVyYXRlID0gImRldi1zbyIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLXNwZWV4cmF0ZSA9ICJkZXYtc28iCisKKyMgNTAtcHVsc2VhdWRpby5jb25mIGRlZmluZXMgYSBkZXZpY2UgbmFtZWQgInB1bHNlIiB0aGF0IGFwcGxpY2F0aW9ucyBjYW4gdXNlCisjIGlmIHRoZXkgZXhwbGljaXRseSB3YW50IHRvIHVzZSB0aGUgUHVsc2VBdWRpbyBwbHVnaW4uCisjIDk5LXB1bHNlYXVkaW8tZGVmYXVsdC5jb25mIGNvbmZpZ3VyZXMgdGhlICJkZWZhdWx0IiBkZXZpY2UgdG8gdXNlIHRoZQorIyBQdWxzZUF1ZGlvIHBsdWdpbi4KK0ZJTEVTXyR7UE59LXB1bHNlYXVkaW8tY29uZiArPSAiXAorICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvNTAtcHVsc2VhdWRpby5jb25mIFwKKyAgICAgICAgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzk5LXB1bHNlYXVkaW8tZGVmYXVsdC5jb25mIFwKKyIKKworUkRFUEVORFNfJHtQTn0tcHVsc2VhdWRpby1jb25mICs9ICJcCisgICAgICAgIGxpYmFzb3VuZC1tb2R1bGUtY29uZi1wdWxzZSBcCisgICAgICAgIGxpYmFzb3VuZC1tb2R1bGUtY3RsLXB1bHNlIFwKKyAgICAgICAgbGliYXNvdW5kLW1vZHVsZS1wY20tcHVsc2UgXAorIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlscy1zY3JpcHRzXzEuMS4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlscy1zY3JpcHRzXzEuMS40LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBpbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzLXNjcmlwdHNfMS4xLjMuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHMtc2NyaXB0c18xLjEuNC5iYgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlsc18xLjEuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHNfMS4xLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzNzRhMTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlsc18xLjEuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExNSArMCwwIEBACi1TVU1NQVJZID0gIkFMU0Egc291bmQgdXRpbGl0aWVzIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5hbHNhLXByb2plY3Qub3JnIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vYWxzYS1wcm9qZWN0Lm9yZy9tYWluL2luZGV4LnBocC9CdWdfVHJhY2tpbmciCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2Fsc2FjdGwvdXRpbHMuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIwO21kNT1mZTk1MjZiMDU1ZTI0NmI1NTU4ODA5YTVhZTI1YzBiOSIKLURFUEVORFMgPSAiYWxzYS1saWIgbmN1cnNlcyBsaWJzYW1wbGVyYXRlMCIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gInVkZXYiCi0KLSMgYWxzYWJhdCBjYW4gYmUgYnVpbHQgYWxzbyB3aXRob3V0IGZmdHcgc3VwcG9ydCAod2l0aCByZWR1Y2VkIGZ1bmN0aW9uYWxpdHkpLgotIyBJdCB3b3VsZCBiZSBiZXR0ZXIgdG8gYWx3YXlzIGVuYWJsZSBhbHNhYmF0LCBidXQgcHJvdmlkZSBhbiBvcHRpb24gZm9yCi0jIGVuYWJsaW5nL2Rpc2FibGluZyBmZnR3LiBUaGUgY29uZmlndXJlIHNjcmlwdCBkb2Vzbid0IHN1cHBvcnQgdGhhdCwgaG93ZXZlcgotIyAoYXQgbGVhc3QgaW4gYW55IG9idmlvdXMgd2F5KSwgc28gZm9yIG5vdyB3ZSBvbmx5IHN1cHBvcnQgYWxzYWJhdCB3aXRoIGZmdHcKLSMgb3Igbm8gYWxzYWJhdCBhdCBhbGwuCi1QQUNLQUdFQ09ORklHW2JhdF0gPSAiLS1lbmFibGUtYmF0LC0tZGlzYWJsZS1iYXQsZmZ0d2YiCi0KLVBBQ0tBR0VDT05GSUdbdWRldl0gPSAiLS13aXRoLXVkZXYtcnVsZXMtZGlyPWBwa2ctY29uZmlnIC0tdmFyaWFibGU9dWRldmRpciB1ZGV2YC9ydWxlcy5kLCx1ZGV2IgotUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLS1lbmFibGUteG1sdG8sIC0tZGlzYWJsZS14bWx0bywgeG1sdG8tbmF0aXZlIGRvY2Jvb2steG1sLWR0ZDQtbmF0aXZlIGRvY2Jvb2steHNsLXN0eWxlc2hlZXRzLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJmdHA6Ly9mdHAuYWxzYS1wcm9qZWN0Lm9yZy9wdWIvdXRpbHMvYWxzYS11dGlscy0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtYWxzYWN0bC1kb24tdC1sZXQtc3lzdGVtZC11bml0LXJlc3RvcmUtdGhlLXZvbHVtZS13aC5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMmJmOTRkM2UzNDEwZGNjNzRiYjBkYWUxMGQ0NmE5NzkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTI3MjE3YTU0ZWVhMGY5YTQ5NzAwYTJmMjM5YTJkNGY1Mzg0YWEwOTRkNjhkZjA0YThlYjgwMTMyZWI2MTY3YyIKLQotIyBPbiBidWlsZCBtYWNoaW5lcyB3aXRoIHB5dGhvbi1kb2N1dGlscyAobm90IHB5dGhvbjMtZG9jdXRpbHMgISEpIGluc3RhbGxlZAotIyByc3QybWFuIChub3QgcnN0Mm1hbi5weSkgaXMgZGV0ZWN0ZWQgYW5kIGNvbXBpbGUgZmFpbHMgd2l0aAotIyB8IG1ha2VbMV06ICoqKiBObyBydWxlIHRvIG1ha2UgdGFyZ2V0ICdhbHNhdWNtLjEnLCBuZWVkZWQgYnkgJ2FsbC1hbScuICBTdG9wLgotIyBBdm9pZCB0aGlzIGJ5IGRpc2FibGluZyBleHBpY2l0bHkKLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtcnN0Mm1hbiIKLQotIyBsYXp5IGhhY2suIG5lZWRzIHByb3BlciBmaXhpbmcgaW4gZ2V0dGV4dC5tNCwgc2VlCi0jIGh0dHA6Ly9idWdzLm9wZW5lbWJlZGRlZC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDgKLSMgcGxlYXNlIGNsb3NlIGJ1ZyBhbmQgcmVtb3ZlIHRoaXMgY29tbWVudCB3aGVuIHByb3Blcmx5IGZpeGVkCi0jCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtdWNsaWJjID0gIiAtLWRpc2FibGUtbmxzIgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyBtYW5wYWdlcwotCi0jIFRoaXMgYXJlIGFsbCBwYWNrYWdlcyB0aGF0IHdlIG5lZWQgdG8gbWFrZS4gQWxzbywgdGhlIG5vdyBlbXB0eSBhbHNhLXV0aWxzCi0jIGlwayBkZXBlbmRzIG9uIHRoZW0uCi0KLUFMU0FfVVRJTFNfUEtHUyA9ICJcCi0gICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYmF0JywgJ2Fsc2EtdXRpbHMtYWxzYWJhdCcsICcnLCBkKX0gXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWxzYW1peGVyIFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2F0cGxnIFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLW1pZGkgXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtYXBsYXkgXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtYW1peGVyIFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFjb25uZWN0IFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWllY3NldCBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1zcGVha2VydGVzdCBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1hc2VxbmV0IFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFzZXFkdW1wIFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2FjdGwgXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWxzYWxvb3AgXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWxzYXVjbSBcCi0gICAgICAgICAgICAiCi0KLVBBQ0tBR0VTICs9ICIke0FMU0FfVVRJTFNfUEtHU30iCi1SREVQRU5EU18ke1BOfSArPSAiJHtBTFNBX1VUSUxTX1BLR1N9IgotCi1GSUxFU18ke1BOfSA9ICIiCi1GSUxFU19hbHNhLXV0aWxzLWFsc2FiYXQgICAgID0gIiR7YmluZGlyfS9hbHNhYmF0IgotRklMRVNfYWxzYS11dGlscy1hbHNhdHBsZyAgICA9ICIke2JpbmRpcn0vYWxzYXRwbGciCi1GSUxFU19hbHNhLXV0aWxzLWFwbGF5ICAgICAgID0gIiR7YmluZGlyfS9hcGxheSAke2JpbmRpcn0vYXJlY29yZCIKLUZJTEVTX2Fsc2EtdXRpbHMtYW1peGVyICAgICAgPSAiJHtiaW5kaXJ9L2FtaXhlciIKLUZJTEVTX2Fsc2EtdXRpbHMtYWxzYW1peGVyICAgPSAiJHtiaW5kaXJ9L2Fsc2FtaXhlciIKLUZJTEVTX2Fsc2EtdXRpbHMtc3BlYWtlcnRlc3QgPSAiJHtiaW5kaXJ9L3NwZWFrZXItdGVzdCAke2RhdGFkaXJ9L3NvdW5kcy9hbHNhLyAke2RhdGFkaXJ9L2Fsc2Evc3BlYWtlci10ZXN0LyIKLUZJTEVTX2Fsc2EtdXRpbHMtbWlkaSAgICAgICAgPSAiJHtiaW5kaXJ9L2FwbGF5bWlkaSAke2JpbmRpcn0vYXJlY29yZG1pZGkgJHtiaW5kaXJ9L2FtaWRpIgotRklMRVNfYWxzYS11dGlscy1hY29ubmVjdCAgICA9ICIke2JpbmRpcn0vYWNvbm5lY3QiCi1GSUxFU19hbHNhLXV0aWxzLWFzZXFuZXQgICAgID0gIiR7YmluZGlyfS9hc2VxbmV0IgotRklMRVNfYWxzYS11dGlscy1pZWNzZXQgICAgICA9ICIke2JpbmRpcn0vaWVjc2V0IgotRklMRVNfYWxzYS11dGlscy1hbHNhY3RsICAgICA9ICIke3NiaW5kaXJ9L2Fsc2FjdGwgKi91ZGV2L3J1bGVzLmQgKi8qL3VkZXYvcnVsZXMuZCAke3N5c3RlbWRfdW5pdGRpcn0gJHtsb2NhbHN0YXRlZGlyfS9saWIvYWxzYSAke2RhdGFkaXJ9L2Fsc2EvaW5pdC8iCi1GSUxFU19hbHNhLXV0aWxzLWFzZXFkdW1wICAgID0gIiR7YmluZGlyfS9hc2VxZHVtcCIKLUZJTEVTX2Fsc2EtdXRpbHMtYWxzYWxvb3AgICAgPSAiJHtiaW5kaXJ9L2Fsc2Fsb29wIgotRklMRVNfYWxzYS11dGlscy1hbHNhdWNtICAgICA9ICIke2JpbmRpcn0vYWxzYXVjbSIKLQotU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2FiYXQgICAgICA9ICJDb21tYW5kLWxpbmUgc291bmQgdGVzdGVyIGZvciBBTFNBIHNvdW5kIGNhcmQgZHJpdmVyIgotU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2F0cGxnICAgICA9ICJDb252ZXJ0cyB0b3BvbG9neSB0ZXh0IGZpbGVzIGludG8gYmluYXJ5IGZvcm1hdCBmb3Iga2VybmVsIgotU1VNTUFSWV9hbHNhLXV0aWxzLWFwbGF5ICAgICAgICA9ICJQbGF5IChhbmQgcmVjb3JkKSBzb3VuZCBmaWxlcyB1c2luZyBBTFNBIgotU1VNTUFSWV9hbHNhLXV0aWxzLWFtaXhlciAgICAgICA9ICJDb21tYW5kLWxpbmUgY29udHJvbCBmb3IgQUxTQSBtaXhlciBhbmQgc2V0dGluZ3MiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYW1peGVyICAgID0gIm5jdXJzZXMtYmFzZWQgY29udHJvbCBmb3IgQUxTQSBtaXhlciBhbmQgc2V0dGluZ3MiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtc3BlYWtlcnRlc3QgID0gIkFMU0Egc3Vycm91bmQgc3BlYWtlciB0ZXN0IHV0aWxpdHkiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtbWlkaSAgICAgICAgID0gIk1pc2NlbGxhbmVvdXMgTUlESSB1dGlsaXRpZXMgZm9yIEFMU0EiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYWNvbm5lY3QgICAgID0gIkFMU0Egc2VxdWVuY2VyIGNvbm5lY3Rpb24gbWFuYWdlciIKLVNVTU1BUllfYWxzYS11dGlscy1hc2VxbmV0ICAgICAgPSAiTmV0d29yayBjbGllbnQvc2VydmVyIGZvciBBTFNBIHNlcXVlbmNlciIKLVNVTU1BUllfYWxzYS11dGlscy1pZWNzZXQgICAgICAgPSAiQUxTQSB1dGlsaXR5IGZvciBzZXR0aW5nL3Nob3dpbmcgSUVDOTU4IChTL1BESUYpIHN0YXR1cyBiaXRzIgotU1VNTUFSWV9hbHNhLXV0aWxzLWFsc2FjdGwgICAgICA9ICJTYXZlcy9yZXN0b3JlcyBBTFNBLXNldHRpbmdzIGluIC9ldGMvYXNvdW5kLnN0YXRlIgotU1VNTUFSWV9hbHNhLXV0aWxzLWFzZXFkdW1wICAgICA9ICJTaG93cyB0aGUgZXZlbnRzIHJlY2VpdmVkIGF0IGFuIEFMU0Egc2VxdWVuY2VyIHBvcnQiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYWxvb3AgICAgID0gIkFMU0EgUENNIGxvb3BiYWNrIHV0aWxpdHkiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYXVjbSAgICAgID0gIkFMU0EgVXNlIENhc2UgTWFuYWdlciIKLQotUlJFQ09NTUVORFNfYWxzYS11dGlscy1hbHNhY3RsID0gImFsc2Etc3RhdGVzIgotCi1BTExPV19FTVBUWV9hbHNhLXV0aWxzID0gIjEiCi0KLWRvX2luc3RhbGwoKSB7Ci0JYXV0b3Rvb2xzX2RvX2luc3RhbGwKLQotCSMgV2UgZG9uJ3Qgc2hpcCB0aGlzIGhlcmUgYmVjYXVzZSBpdCByZXF1aXJlcyBhIGRlcGVuZGVuY3kgb24gYmFzaC4KLQkjIFNlZSBhbHNhLXV0aWxzLXNjcmlwdHNfJHtQVn0uYmIKLQlybSAke0R9JHtzYmluZGlyfS9hbHNhY29uZgotCXJtICR7RH0ke3NiaW5kaXJ9L2Fsc2EtaW5mby5zaAotCXJtIC1mICR7RH0ke3NiaW5kaXJ9L2Fsc2FiYXQtdGVzdC5zaAotCi0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndWRldicsICdmYWxzZScsICd0cnVlJywgZCl9OyB0aGVuCi0JCSMgVGhpcyBpcyB3aGVyZSBhbHNhLXV0aWxzIHdpbGwgaW5zdGFsbCBpdHMgcnVsZXMgaWYgd2UgZG9uJ3QgdGVsbCBpdCBhbnl0aGluZyBlbHNlLgotCQlybSAtcmYgJHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldgotCQlybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfQotCWZpCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzXzEuMS40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlsc18xLjEuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOGY0Yjg2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlsc18xLjEuNC5iYgpAQCAtMCwwICsxLDEwOSBAQAorU1VNTUFSWSA9ICJBTFNBIHNvdW5kIHV0aWxpdGllcyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuYWxzYS1wcm9qZWN0Lm9yZyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2Fsc2EtcHJvamVjdC5vcmcvbWFpbi9pbmRleC5waHAvQnVnX1RyYWNraW5nIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hbHNhY3RsL3V0aWxzLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMDttZDU9ZmU5NTI2YjA1NWUyNDZiNTU1ODgwOWE1YWUyNWMwYjkiCitERVBFTkRTID0gImFsc2EtbGliIG5jdXJzZXMgbGlic2FtcGxlcmF0ZTAiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJ1ZGV2IgorCisjIGFsc2FiYXQgY2FuIGJlIGJ1aWx0IGFsc28gd2l0aG91dCBmZnR3IHN1cHBvcnQgKHdpdGggcmVkdWNlZCBmdW5jdGlvbmFsaXR5KS4KKyMgSXQgd291bGQgYmUgYmV0dGVyIHRvIGFsd2F5cyBlbmFibGUgYWxzYWJhdCwgYnV0IHByb3ZpZGUgYW4gb3B0aW9uIGZvcgorIyBlbmFibGluZy9kaXNhYmxpbmcgZmZ0dy4gVGhlIGNvbmZpZ3VyZSBzY3JpcHQgZG9lc24ndCBzdXBwb3J0IHRoYXQsIGhvd2V2ZXIKKyMgKGF0IGxlYXN0IGluIGFueSBvYnZpb3VzIHdheSksIHNvIGZvciBub3cgd2Ugb25seSBzdXBwb3J0IGFsc2FiYXQgd2l0aCBmZnR3CisjIG9yIG5vIGFsc2FiYXQgYXQgYWxsLgorUEFDS0FHRUNPTkZJR1tiYXRdID0gIi0tZW5hYmxlLWJhdCwtLWRpc2FibGUtYmF0LGZmdHdmIgorCitQQUNLQUdFQ09ORklHW3VkZXZdID0gIi0td2l0aC11ZGV2LXJ1bGVzLWRpcj1gcGtnLWNvbmZpZyAtLXZhcmlhYmxlPXVkZXZkaXIgdWRldmAvcnVsZXMuZCwsdWRldiIKK1BBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLXhtbHRvLCAtLWRpc2FibGUteG1sdG8sIHhtbHRvLW5hdGl2ZSBkb2Nib29rLXhtbC1kdGQ0LW5hdGl2ZSBkb2Nib29rLXhzbC1zdHlsZXNoZWV0cy1uYXRpdmUiCisKK1NSQ19VUkkgPSAiZnRwOi8vZnRwLmFsc2EtcHJvamVjdC5vcmcvcHViL3V0aWxzL2Fsc2EtdXRpbHMtJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWFsc2FjdGwtZG9uLXQtbGV0LXN5c3RlbWQtdW5pdC1yZXN0b3JlLXRoZS12b2x1bWUtd2gucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjAxZTM5MzRjYTViZDIyYTgwYzI3Mjg5ZDFiMGFkY2RjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImE3ODMxMDQ0ZGU5MmM1YmYzM2JmMzM2NWEzZjM2ZTQ5Mzk3ZjQxOTFlOTM0ZGY0NjBhZTFjYTE1MTM4YzlkOWQiCisKKyMgT24gYnVpbGQgbWFjaGluZXMgd2l0aCBweXRob24tZG9jdXRpbHMgKG5vdCBweXRob24zLWRvY3V0aWxzICEhKSBpbnN0YWxsZWQKKyMgcnN0Mm1hbiAobm90IHJzdDJtYW4ucHkpIGlzIGRldGVjdGVkIGFuZCBjb21waWxlIGZhaWxzIHdpdGgKKyMgfCBtYWtlWzFdOiAqKiogTm8gcnVsZSB0byBtYWtlIHRhcmdldCAnYWxzYXVjbS4xJywgbmVlZGVkIGJ5ICdhbGwtYW0nLiAgU3RvcC4KKyMgQXZvaWQgdGhpcyBieSBkaXNhYmxpbmcgZXhwaWNpdGx5CitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXJzdDJtYW4iCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnIG1hbnBhZ2VzCisKKyMgVGhpcyBhcmUgYWxsIHBhY2thZ2VzIHRoYXQgd2UgbmVlZCB0byBtYWtlLiBBbHNvLCB0aGUgbm93IGVtcHR5IGFsc2EtdXRpbHMKKyMgaXBrIGRlcGVuZHMgb24gdGhlbS4KKworQUxTQV9VVElMU19QS0dTID0gIlwKKyAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdiYXQnLCAnYWxzYS11dGlscy1hbHNhYmF0JywgJycsIGQpfSBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1hbHNhbWl4ZXIgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWxzYXRwbGcgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtbWlkaSBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1hcGxheSBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1hbWl4ZXIgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWNvbm5lY3QgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtaWVjc2V0IFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLXNwZWFrZXJ0ZXN0IFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLWFzZXFuZXQgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtYXNlcWR1bXAgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWxzYWN0bCBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1hbHNhbG9vcCBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1hbHNhdWNtIFwKKyAgICAgICAgICAgICIKKworUEFDS0FHRVMgKz0gIiR7QUxTQV9VVElMU19QS0dTfSIKK1JERVBFTkRTXyR7UE59ICs9ICIke0FMU0FfVVRJTFNfUEtHU30iCisKK0ZJTEVTXyR7UE59ID0gIiIKK0ZJTEVTX2Fsc2EtdXRpbHMtYWxzYWJhdCAgICAgPSAiJHtiaW5kaXJ9L2Fsc2FiYXQiCitGSUxFU19hbHNhLXV0aWxzLWFsc2F0cGxnICAgID0gIiR7YmluZGlyfS9hbHNhdHBsZyIKK0ZJTEVTX2Fsc2EtdXRpbHMtYXBsYXkgICAgICAgPSAiJHtiaW5kaXJ9L2FwbGF5ICR7YmluZGlyfS9hcmVjb3JkIgorRklMRVNfYWxzYS11dGlscy1hbWl4ZXIgICAgICA9ICIke2JpbmRpcn0vYW1peGVyIgorRklMRVNfYWxzYS11dGlscy1hbHNhbWl4ZXIgICA9ICIke2JpbmRpcn0vYWxzYW1peGVyIgorRklMRVNfYWxzYS11dGlscy1zcGVha2VydGVzdCA9ICIke2JpbmRpcn0vc3BlYWtlci10ZXN0ICR7ZGF0YWRpcn0vc291bmRzL2Fsc2EvICR7ZGF0YWRpcn0vYWxzYS9zcGVha2VyLXRlc3QvIgorRklMRVNfYWxzYS11dGlscy1taWRpICAgICAgICA9ICIke2JpbmRpcn0vYXBsYXltaWRpICR7YmluZGlyfS9hcmVjb3JkbWlkaSAke2JpbmRpcn0vYW1pZGkiCitGSUxFU19hbHNhLXV0aWxzLWFjb25uZWN0ICAgID0gIiR7YmluZGlyfS9hY29ubmVjdCIKK0ZJTEVTX2Fsc2EtdXRpbHMtYXNlcW5ldCAgICAgPSAiJHtiaW5kaXJ9L2FzZXFuZXQiCitGSUxFU19hbHNhLXV0aWxzLWllY3NldCAgICAgID0gIiR7YmluZGlyfS9pZWNzZXQiCitGSUxFU19hbHNhLXV0aWxzLWFsc2FjdGwgICAgID0gIiR7c2JpbmRpcn0vYWxzYWN0bCAqL3VkZXYvcnVsZXMuZCAqLyovdWRldi9ydWxlcy5kICR7c3lzdGVtZF91bml0ZGlyfSAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9hbHNhICR7ZGF0YWRpcn0vYWxzYS9pbml0LyIKK0ZJTEVTX2Fsc2EtdXRpbHMtYXNlcWR1bXAgICAgPSAiJHtiaW5kaXJ9L2FzZXFkdW1wIgorRklMRVNfYWxzYS11dGlscy1hbHNhbG9vcCAgICA9ICIke2JpbmRpcn0vYWxzYWxvb3AiCitGSUxFU19hbHNhLXV0aWxzLWFsc2F1Y20gICAgID0gIiR7YmluZGlyfS9hbHNhdWNtIgorCitTVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYWJhdCAgICAgID0gIkNvbW1hbmQtbGluZSBzb3VuZCB0ZXN0ZXIgZm9yIEFMU0Egc291bmQgY2FyZCBkcml2ZXIiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYXRwbGcgICAgID0gIkNvbnZlcnRzIHRvcG9sb2d5IHRleHQgZmlsZXMgaW50byBiaW5hcnkgZm9ybWF0IGZvciBrZXJuZWwiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYXBsYXkgICAgICAgID0gIlBsYXkgKGFuZCByZWNvcmQpIHNvdW5kIGZpbGVzIHVzaW5nIEFMU0EiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYW1peGVyICAgICAgID0gIkNvbW1hbmQtbGluZSBjb250cm9sIGZvciBBTFNBIG1peGVyIGFuZCBzZXR0aW5ncyIKK1NVTU1BUllfYWxzYS11dGlscy1hbHNhbWl4ZXIgICAgPSAibmN1cnNlcy1iYXNlZCBjb250cm9sIGZvciBBTFNBIG1peGVyIGFuZCBzZXR0aW5ncyIKK1NVTU1BUllfYWxzYS11dGlscy1zcGVha2VydGVzdCAgPSAiQUxTQSBzdXJyb3VuZCBzcGVha2VyIHRlc3QgdXRpbGl0eSIKK1NVTU1BUllfYWxzYS11dGlscy1taWRpICAgICAgICAgPSAiTWlzY2VsbGFuZW91cyBNSURJIHV0aWxpdGllcyBmb3IgQUxTQSIKK1NVTU1BUllfYWxzYS11dGlscy1hY29ubmVjdCAgICAgPSAiQUxTQSBzZXF1ZW5jZXIgY29ubmVjdGlvbiBtYW5hZ2VyIgorU1VNTUFSWV9hbHNhLXV0aWxzLWFzZXFuZXQgICAgICA9ICJOZXR3b3JrIGNsaWVudC9zZXJ2ZXIgZm9yIEFMU0Egc2VxdWVuY2VyIgorU1VNTUFSWV9hbHNhLXV0aWxzLWllY3NldCAgICAgICA9ICJBTFNBIHV0aWxpdHkgZm9yIHNldHRpbmcvc2hvd2luZyBJRUM5NTggKFMvUERJRikgc3RhdHVzIGJpdHMiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYWN0bCAgICAgID0gIlNhdmVzL3Jlc3RvcmVzIEFMU0Etc2V0dGluZ3MgaW4gL2V0Yy9hc291bmQuc3RhdGUiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYXNlcWR1bXAgICAgID0gIlNob3dzIHRoZSBldmVudHMgcmVjZWl2ZWQgYXQgYW4gQUxTQSBzZXF1ZW5jZXIgcG9ydCIKK1NVTU1BUllfYWxzYS11dGlscy1hbHNhbG9vcCAgICAgPSAiQUxTQSBQQ00gbG9vcGJhY2sgdXRpbGl0eSIKK1NVTU1BUllfYWxzYS11dGlscy1hbHNhdWNtICAgICAgPSAiQUxTQSBVc2UgQ2FzZSBNYW5hZ2VyIgorCitSUkVDT01NRU5EU19hbHNhLXV0aWxzLWFsc2FjdGwgPSAiYWxzYS1zdGF0ZXMiCisKK0FMTE9XX0VNUFRZX2Fsc2EtdXRpbHMgPSAiMSIKKworZG9faW5zdGFsbCgpIHsKKwlhdXRvdG9vbHNfZG9faW5zdGFsbAorCisJIyBXZSBkb24ndCBzaGlwIHRoaXMgaGVyZSBiZWNhdXNlIGl0IHJlcXVpcmVzIGEgZGVwZW5kZW5jeSBvbiBiYXNoLgorCSMgU2VlIGFsc2EtdXRpbHMtc2NyaXB0c18ke1BWfS5iYgorCXJtICR7RH0ke3NiaW5kaXJ9L2Fsc2Fjb25mCisJcm0gJHtEfSR7c2JpbmRpcn0vYWxzYS1pbmZvLnNoCisJcm0gLWYgJHtEfSR7c2JpbmRpcn0vYWxzYWJhdC10ZXN0LnNoCisKKwlpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd1ZGV2JywgJ2ZhbHNlJywgJ3RydWUnLCBkKX07IHRoZW4KKwkJIyBUaGlzIGlzIHdoZXJlIGFsc2EtdXRpbHMgd2lsbCBpbnN0YWxsIGl0cyBydWxlcyBpZiB3ZSBkb24ndCB0ZWxsIGl0IGFueXRoaW5nIGVsc2UuCisJCXJtIC1yZiAke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2CisJCXJtZGlyIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICR7RH0ke25vbmFyY2hfYmFzZV9saWJkaXJ9CisJZmkKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnLzAwMDEtYnVpbGQtZml4LWZvci1taXBzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvMDAwMS1idWlsZC1maXgtZm9yLW1pcHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Y4MjI0YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnLzAwMDEtYnVpbGQtZml4LWZvci1taXBzLnBhdGNoCkBAIC0wLDAgKzEsNDQgQEAKK0Zyb20gZjM0YzU2NzA0NWJlYTVhN2RlZDliY2ZhOGU3ODVjZmQyNGNjN2RkZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFNoaXZyYWogUGF0aWwgPHNoaXZyYWoucGF0aWxAaW1ndGVjLmNvbT4KK0RhdGU6IFR1ZSwgNCBBcHIgMjAxNyAxODo1NjowMSArMDUzMAorU3ViamVjdDogW1BBVENIXSBidWlsZCBmaXggZm9yIG1pcHMKKworU2lnbmVkLW9mZi1ieTogU2hpdnJhaiBQYXRpbCA8c2hpdnJhai5wYXRpbEBpbWd0ZWMuY29tPgorU2lnbmVkLW9mZi1ieTogUm9uYWxkIFMuIEJ1bHRqZSA8cnNidWx0amVAZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKKyBsaWJhdmNvZGVjL21pcHMvaGV2Y3ByZWRfaW5pdF9taXBzLmMgfCAzICsrLQorIGxpYmF2Y29kZWMvbWlwcy9oZXZjcHJlZF9tc2EuYyAgICAgICB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvbWlwcy9oZXZjcHJlZF9pbml0X21pcHMuYyBiL2xpYmF2Y29kZWMvbWlwcy9oZXZjcHJlZF9pbml0X21pcHMuYworaW5kZXggMzMxY2ZhYzExNS4uZTk4NzY5OGQ2NiAxMDA2NDQKKy0tLSBhL2xpYmF2Y29kZWMvbWlwcy9oZXZjcHJlZF9pbml0X21pcHMuYworKysrIGIvbGliYXZjb2RlYy9taXBzL2hldmNwcmVkX2luaXRfbWlwcy5jCitAQCAtMTgsNyArMTgsOCBAQAorICAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKyAgKi8KKyAKKy0jaW5jbHVkZSAibGliYXZjb2RlYy9oZXZjLmgiCisrI2luY2x1ZGUgImNvbmZpZy5oIgorKyNpbmNsdWRlICJsaWJhdnV0aWwvYXR0cmlidXRlcy5oIgorICNpbmNsdWRlICJsaWJhdmNvZGVjL21pcHMvaGV2Y3ByZWRfbWlwcy5oIgorIAorICNpZiBIQVZFX01TQQorZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvbWlwcy9oZXZjcHJlZF9tc2EuYyBiL2xpYmF2Y29kZWMvbWlwcy9oZXZjcHJlZF9tc2EuYworaW5kZXggNmEzYjI4MTVmZC4uOTYzYzY0Yzg2MSAxMDA2NDQKKy0tLSBhL2xpYmF2Y29kZWMvbWlwcy9oZXZjcHJlZF9tc2EuYworKysrIGIvbGliYXZjb2RlYy9taXBzL2hldmNwcmVkX21zYS5jCitAQCAtMTgsNyArMTgsNyBAQAorICAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKyAgKi8KKyAKKy0jaW5jbHVkZSAibGliYXZjb2RlYy9oZXZjLmgiCisrI2luY2x1ZGUgImxpYmF2Y29kZWMvaGV2Y2RlYy5oIgorICNpbmNsdWRlICJsaWJhdnV0aWwvbWlwcy9nZW5lcmljX21hY3Jvc19tc2EuaCIKKyAjaW5jbHVkZSAiaGV2Y3ByZWRfbWlwcy5oIgorIAorLS0gCisyLjEzLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQwNTQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDA1NC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOGJhYTE4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQwNTQucGF0Y2gKQEAgLTAsMCArMSwzOSBAQAorRnJvbSAxMjRlYjIwMmU3MDY3ODUzOTU0NGY2MjY4ZWZjOTgxMzFmMTlmYTQ5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xPz1FNT1BRD05OT1FNj1CNT1BOT0yMGFuZD0yMD1FNT1CQz1BMD1FNj1CND1BQT1FND1CQT1BRT0yOD89CisgPT9VVEYtOD9xPz1FNj05Qz05Qj1FNT04OD05RD0yOT89IDx0b255LnNoIGFuZCB3YW5nY2h1LnpobEBhbGliYWJhLWluYy5jb20+CitEYXRlOiBGcmksIDI1IEF1ZyAyMDE3IDAxOjE1OjI4ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGF2Zm9ybWF0L3JtZGVjOiBGaXggRG9TIGR1ZSB0byBsYWNrIG9mIGVvZiBjaGVjaworCitGaXhlczogbG9vcC5pdnIKKworRm91bmQtYnk6IFhpYW9oZWkgYW5kIFdhbmdjaHUgZnJvbSBBbGliYWJhIFNlY3VyaXR5IFRlYW0KK1NpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxAbmllZGVybWF5ZXIuY2M+CisKK0NWRTogQ1ZFLTIwMTctMTQwNTQKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgbGliYXZmb3JtYXQvcm1kZWMuYyB8IDUgKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9ybWRlYy5jIGIvbGliYXZmb3JtYXQvcm1kZWMuYworaW5kZXggMTc4ZWFlYS4uZDZkN2Q5YyAxMDA2NDQKKy0tLSBhL2xpYmF2Zm9ybWF0L3JtZGVjLmMKKysrKyBiL2xpYmF2Zm9ybWF0L3JtZGVjLmMKK0BAIC0xMjIzLDggKzEyMjMsMTEgQEAgc3RhdGljIGludCBpdnJfcmVhZF9oZWFkZXIoQVZGb3JtYXRDb250ZXh0ICpzKQorICAgICAgICAgICAgIGF2X2xvZyhzLCBBVl9MT0dfREVCVUcsICIlcyA9ICclcydcbiIsIGtleSwgdmFsKTsKKyAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSA0KSB7CisgICAgICAgICAgICAgYXZfbG9nKHMsIEFWX0xPR19ERUJVRywgIiVzID0gJzB4Iiwga2V5KTsKKy0gICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgbGVuOyBqKyspCisrICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IGxlbjsgaisrKSB7CisrICAgICAgICAgICAgICAgIGlmIChhdmlvX2Zlb2YocGIpKQorKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisgICAgICAgICAgICAgICAgIGF2X2xvZyhzLCBBVl9MT0dfREVCVUcsICIlWCIsIGF2aW9fcjgocGIpKTsKKysgICAgICAgICAgICB9CisgICAgICAgICAgICAgYXZfbG9nKHMsIEFWX0xPR19ERUJVRywgIidcbiIpOworICAgICAgICAgfSBlbHNlIGlmIChsZW4gPT0gNCAmJiB0eXBlID09IDMgJiYgIXN0cm5jbXAoa2V5LCAiU3RyZWFtQ291bnQiLCB0bGVuKSkgeworICAgICAgICAgICAgIG5iX3N0cmVhbXMgPSB2YWx1ZSA9IGF2aW9fcmIzMihwYik7CistLSAKKzIuMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MDU1LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQwNTUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzdkMGQxYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MDU1LnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKK0Zyb20gNGYwNWUyZTJkYzFhODlmMzhjZDlmMDk2MGE2NTYxMDgzZDcxNGYxZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxAbmllZGVybWF5ZXIuY2M+CitEYXRlOiBGcmksIDI1IEF1ZyAyMDE3IDAxOjE1OjMwICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGF2Zm9ybWF0L212ZGVjOiBGaXggRG9TIGR1ZSB0byBsYWNrIG9mIGVvZiBjaGVjaworCitGaXhlczogbG9vcC5tdgorCitGb3VuZC1ieTogWGlhb2hlaSBhbmQgV2FuZ2NodSBmcm9tIEFsaWJhYmEgU2VjdXJpdHkgVGVhbQorU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbEBuaWVkZXJtYXllci5jYz4KKworQ1ZFOiBDVkUtMjAxNy0xNDA1NQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CistLS0KKyBsaWJhdmZvcm1hdC9tdmRlYy5jIHwgMiArKworIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L212ZGVjLmMgYi9saWJhdmZvcm1hdC9tdmRlYy5jCitpbmRleCAwZTEyYzhjLi5mN2FhNGNiIDEwMDY0NAorLS0tIGEvbGliYXZmb3JtYXQvbXZkZWMuYworKysrIGIvbGliYXZmb3JtYXQvbXZkZWMuYworQEAgLTM0Miw2ICszNDIsOCBAQCBzdGF0aWMgaW50IG12X3JlYWRfaGVhZGVyKEFWRm9ybWF0Q29udGV4dCAqYXZjdHgpCisgICAgICAgICAgICAgdWludDMyX3QgcG9zICAgPSBhdmlvX3JiMzIocGIpOworICAgICAgICAgICAgIHVpbnQzMl90IGFzaXplID0gYXZpb19yYjMyKHBiKTsKKyAgICAgICAgICAgICB1aW50MzJfdCB2c2l6ZSA9IGF2aW9fcmIzMihwYik7CisrICAgICAgICAgICAgaWYgKGF2aW9fZmVvZihwYikpCisrICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworICAgICAgICAgICAgIGF2aW9fc2tpcChwYiwgOCk7CisgICAgICAgICAgICAgYXZfYWRkX2luZGV4X2VudHJ5KGFzdCwgcG9zLCB0aW1lc3RhbXAsIGFzaXplLCAwLCBBVklOREVYX0tFWUZSQU1FKTsKKyAgICAgICAgICAgICBhdl9hZGRfaW5kZXhfZW50cnkodnN0LCBwb3MgKyBhc2l6ZSwgaSwgdnNpemUsIDAsIEFWSU5ERVhfS0VZRlJBTUUpOworLS0gCisyLjEuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDA1Ni5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MDU2LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4OGIzNTcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDA1Ni5wYXRjaApAQCAtMCwwICsxLDUxIEBACitGcm9tIDk2ZjI0ZDFiZWU3ZmU3YmFjMDhlMmI3Yzc0ZGIxYTA0NmM5ZGMwZGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/PUU1PUFEPTk5PUU2PUI1PUE5PTIwYW5kPTIwPUU1PUJDPUEwPUU2PUI0PUFBPUU0PUJBPUFFPTI4Pz0KKyA9P1VURi04P3E/PUU2PTlDPTlCPUU1PTg4PTlEPTI5Pz0gPHRvbnkuc2ggYW5kIHdhbmdjaHUuemhsQGFsaWJhYmEtaW5jLmNvbT4KK0RhdGU6IEZyaSwgMjUgQXVnIDIwMTcgMDE6MTU6MjkgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gYXZmb3JtYXQvcmwyOiBGaXggRG9TIGR1ZSB0byBsYWNrIG9mIGVvZiBjaGVjaworCitGaXhlczogbG9vcC5ybDIKKworRm91bmQtYnk6IFhpYW9oZWkgYW5kIFdhbmdjaHUgZnJvbSBBbGliYWJhIFNlY3VyaXR5IFRlYW0KK1NpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxAbmllZGVybWF5ZXIuY2M+CisKK0NWRTogQ1ZFLTIwMTctMTQwNTYKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgbGliYXZmb3JtYXQvcmwyLmMgfCAxNSArKysrKysrKysrKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L3JsMi5jIGIvbGliYXZmb3JtYXQvcmwyLmMKK2luZGV4IDBiZWM4ZjEuLmViMTY4MmQgMTAwNjQ0CistLS0gYS9saWJhdmZvcm1hdC9ybDIuYworKysrIGIvbGliYXZmb3JtYXQvcmwyLmMKK0BAIC0xNzAsMTIgKzE3MCwyMSBAQCBzdGF0aWMgYXZfY29sZCBpbnQgcmwyX3JlYWRfaGVhZGVyKEFWRm9ybWF0Q29udGV4dCAqcykKKyAgICAgfQorIAorICAgICAvKiogcmVhZCBvZmZzZXQgYW5kIHNpemUgdGFibGVzICovCistICAgIGZvcihpPTA7IGkgPCBmcmFtZV9jb3VudDtpKyspCisrICAgIGZvcihpPTA7IGkgPCBmcmFtZV9jb3VudDtpKyspIHsKKysgICAgICAgIGlmIChhdmlvX2Zlb2YocGIpKQorKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworICAgICAgICAgY2h1bmtfc2l6ZVtpXSA9IGF2aW9fcmwzMihwYik7CistICAgIGZvcihpPTA7IGkgPCBmcmFtZV9jb3VudDtpKyspCisrICAgIH0KKysgICAgZm9yKGk9MDsgaSA8IGZyYW1lX2NvdW50O2krKykgeworKyAgICAgICAgaWYgKGF2aW9fZmVvZihwYikpCisrICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisgICAgICAgICBjaHVua19vZmZzZXRbaV0gPSBhdmlvX3JsMzIocGIpOworLSAgICBmb3IoaT0wOyBpIDwgZnJhbWVfY291bnQ7aSsrKQorKyAgICB9CisrICAgIGZvcihpPTA7IGkgPCBmcmFtZV9jb3VudDtpKyspIHsKKysgICAgICAgIGlmIChhdmlvX2Zlb2YocGIpKQorKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworICAgICAgICAgYXVkaW9fc2l6ZVtpXSA9IGF2aW9fcmwzMihwYikgJiAweEZGRkY7CisrICAgIH0KKyAKKyAgICAgLyoqIGJ1aWxkIHRoZSBzYW1wbGUgaW5kZXggKi8KKyAgICAgZm9yKGk9MDtpPGZyYW1lX2NvdW50O2krKyl7CistLSAKKzIuMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MDU3LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQwNTcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjMwMWQyMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MDU3LnBhdGNoCkBAIC0wLDAgKzEsNDQgQEAKK0Zyb20gN2Y5ZWM1NTkzZTA0ODI3MjQ5ZTdhZWI0NjZkYTA2YTk4YTBkNzMyOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT89RTU9QUQ9OTk9RTY9QjU9QTk9MjBhbmQ9MjA9RTU9QkM9QTA9RTY9QjQ9QUE9RTQ9QkE9QUU9Mjg/PQorID0/VVRGLTg/cT89RTY9OUM9OUI9RTU9ODg9OUQ9Mjk/PSA8dG9ueS5zaCBhbmQgd2FuZ2NodS56aGxAYWxpYmFiYS1pbmMuY29tPgorRGF0ZTogRnJpLCAyNSBBdWcgMjAxNyAxMjozNzoyNSArMDIwMAorU3ViamVjdDogW1BBVENIXSBhdmZvcm1hdC9hc2ZkZWM6IEZpeCBEb1MgZHVlIHRvIGxhY2sgb2YgZW9mIGNoZWNrCisKK0ZpeGVzOiBsb29wLmFzZgorCitGb3VuZC1ieTogWGlhb2hlaSBhbmQgV2FuZ2NodSBmcm9tIEFsaWJhYmEgU2VjdXJpdHkgVGVhbQorU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbEBuaWVkZXJtYXllci5jYz4KKworQ1ZFOiBDVkUtMjAxNy0xNDA1NworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CistLS0KKyBsaWJhdmZvcm1hdC9hc2ZkZWNfZi5jIHwgNiArKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvYXNmZGVjX2YuYyBiL2xpYmF2Zm9ybWF0L2FzZmRlY19mLmMKK2luZGV4IGJlMDlhOTIuLmYzYWNiYWUgMTAwNjQ0CistLS0gYS9saWJhdmZvcm1hdC9hc2ZkZWNfZi5jCisrKysgYi9saWJhdmZvcm1hdC9hc2ZkZWNfZi5jCitAQCAtNzQ5LDEzICs3NDksMTUgQEAgc3RhdGljIGludCBhc2ZfcmVhZF9tYXJrZXIoQVZGb3JtYXRDb250ZXh0ICpzLCBpbnQ2NF90IHNpemUpCisgICAgIGNvdW50ID0gYXZpb19ybDMyKHBiKTsgICAgLy8gbWFya2VycyBjb3VudAorICAgICBhdmlvX3JsMTYocGIpOyAgICAgICAgICAgIC8vIHJlc2VydmVkIDIgYnl0ZXMKKyAgICAgbmFtZV9sZW4gPSBhdmlvX3JsMTYocGIpOyAvLyBuYW1lIGxlbmd0aAorLSAgICBmb3IgKGkgPSAwOyBpIDwgbmFtZV9sZW47IGkrKykKKy0gICAgICAgIGF2aW9fcjgocGIpOyAvLyBza2lwIHRoZSBuYW1lCisrICAgIGF2aW9fc2tpcChwYiwgbmFtZV9sZW4pOworIAorICAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworICAgICAgICAgaW50NjRfdCBwcmVzX3RpbWU7CisgICAgICAgICBpbnQgbmFtZV9sZW47CisgCisrICAgICAgICBpZiAoYXZpb19mZW9mKHBiKSkKKysgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKysKKyAgICAgICAgIGF2aW9fcmw2NChwYik7ICAgICAgICAgICAgIC8vIG9mZnNldCwgOCBieXRlcworICAgICAgICAgcHJlc190aW1lID0gYXZpb19ybDY0KHBiKTsgLy8gcHJlc2VudGF0aW9uIHRpbWUKKyAgICAgICAgIHByZXNfdGltZSAtPSBhc2YtPmhkci5wcmVyb2xsICogMTAwMDA7CistLSAKKzIuMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MDU4LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQwNTgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTU4MDNjZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MDU4LnBhdGNoCkBAIC0wLDAgKzEsOTQgQEAKK0Zyb20gN2VjNDE0ODkyZGRjYWQ4ODMxMzg0ODQ5NGI2ZmM1ZjQzN2M5Y2E0YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxAbmllZGVybWF5ZXIuY2M+CitEYXRlOiBTYXQsIDI2IEF1ZyAyMDE3IDAxOjI2OjU4ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGF2Zm9ybWF0L2hsczogRml4IERvUyBkdWUgdG8gaW5maW5pdGUgbG9vcAorCitGaXhlczogbG9vcC5tM3UKKworVGhlIGRlZmF1bHQgbWF4IGl0ZXJhdGlvbiBjb3VudCBvZiAxMDAwIGlzIGFyYml0cmFyeSBhbmQgaWRlYXMgZm9yIGEgYmV0dGVyIHNvbHV0aW9uIGFyZSB3ZWxjb21lCisKK0ZvdW5kLWJ5OiBYaWFvaGVpIGFuZCBXYW5nY2h1IGZyb20gQWxpYmFiYSBTZWN1cml0eSBUZWFtCisKK1ByZXZpb3VzIHZlcnNpb24gcmV2aWV3ZWQtYnk6IFN0ZXZlbiBMaXUgPGxpbmdqaXVqaWFua2VAZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbEBuaWVkZXJtYXllci5jYz4KKworQ1ZFOiBDVkUtMjAxNy0xNDA1OAorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CistLS0KKyBkb2MvZGVtdXhlcnMudGV4aSB8IDE4ICsrKysrKysrKysrKysrKysrKworIGxpYmF2Zm9ybWF0L2hscy5jIHwgIDcgKysrKysrKworIDIgZmlsZXMgY2hhbmdlZCwgMjUgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvZG9jL2RlbXV4ZXJzLnRleGkgYi9kb2MvZGVtdXhlcnMudGV4aQoraW5kZXggMjlhMjNkNC4uNzNkYzBmZSAxMDA2NDQKKy0tLSBhL2RvYy9kZW11eGVycy50ZXhpCisrKysgYi9kb2MvZGVtdXhlcnMudGV4aQorQEAgLTMwMCw2ICszMDAsMjQgQEAgdXNlZCB0byBlbmQgdGhlIG91dHB1dCB2aWRlbyBhdCB0aGUgbGVuZ3RoIG9mIHRoZSBzaG9ydGVzdCBpbnB1dCBmaWxlLAorIHdoaWNoIGluIHRoaXMgY2FzZSBpcyBAZmlsZXtpbnB1dC5tcDR9IGFzIHRoZSBHSUYgaW4gdGhpcyBleGFtcGxlIGxvb3BzCisgaW5maW5pdGVseS4KKyAKKytAc2VjdGlvbiBobHMKKysKKytITFMgZGVtdXhlcgorKworK0l0IGFjY2VwdHMgdGhlIGZvbGxvd2luZyBvcHRpb25zOgorKworK0B0YWJsZSBAb3B0aW9uCisrQGl0ZW0gbGl2ZV9zdGFydF9pbmRleAorK3NlZ21lbnQgaW5kZXggdG8gc3RhcnQgbGl2ZSBzdHJlYW1zIGF0IChuZWdhdGl2ZSB2YWx1ZXMgYXJlIGZyb20gdGhlIGVuZCkuCisrCisrQGl0ZW0gYWxsb3dlZF9leHRlbnNpb25zCisrJywnIHNlcGFyYXRlZCBsaXN0IG9mIGZpbGUgZXh0ZW5zaW9ucyB0aGF0IGhscyBpcyBhbGxvd2VkIHRvIGFjY2Vzcy4KKysKKytAaXRlbSBtYXhfcmVsb2FkCisrTWF4aW11bSBudW1iZXIgb2YgdGltZXMgYSBpbnN1ZmZpY2llbnQgbGlzdCBpcyBhdHRlbXB0ZWQgdG8gYmUgcmVsb2FkZWQuCisrRGVmYXVsdCB2YWx1ZSBpcyAxMDAwLgorK0BlbmQgdGFibGUKKysKKyBAc2VjdGlvbiBpbWFnZTIKKyAKKyBJbWFnZSBmaWxlIGRlbXV4ZXIuCitkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvaGxzLmMgYi9saWJhdmZvcm1hdC9obHMuYworaW5kZXggMDE3MzFiZC4uMDk5NTM0NSAxMDA2NDQKKy0tLSBhL2xpYmF2Zm9ybWF0L2hscy5jCisrKysgYi9saWJhdmZvcm1hdC9obHMuYworQEAgLTIwNSw2ICsyMDUsNyBAQCB0eXBlZGVmIHN0cnVjdCBITFNDb250ZXh0IHsKKyAgICAgQVZEaWN0aW9uYXJ5ICphdmlvX29wdHM7CisgICAgIGludCBzdHJpY3Rfc3RkX2NvbXBsaWFuY2U7CisgICAgIGNoYXIgKmFsbG93ZWRfZXh0ZW5zaW9uczsKKysgICAgaW50IG1heF9yZWxvYWQ7CisgfSBITFNDb250ZXh0OworIAorIHN0YXRpYyBpbnQgcmVhZF9jaG9tcF9saW5lKEFWSU9Db250ZXh0ICpzLCBjaGFyICpidWYsIGludCBtYXhsZW4pCitAQCAtMTI2Myw2ICsxMjY0LDcgQEAgc3RhdGljIGludCByZWFkX2RhdGEodm9pZCAqb3BhcXVlLCB1aW50OF90ICpidWYsIGludCBidWZfc2l6ZSkKKyAgICAgSExTQ29udGV4dCAqYyA9IHYtPnBhcmVudC0+cHJpdl9kYXRhOworICAgICBpbnQgcmV0LCBpOworICAgICBpbnQganVzdF9vcGVuZWQgPSAwOworKyAgICBpbnQgcmVsb2FkX2NvdW50ID0gMDsKKyAKKyByZXN0YXJ0OgorICAgICBpZiAoIXYtPm5lZWRlZCkKK0BAIC0xMjk0LDYgKzEyOTYsOSBAQCByZXN0YXJ0OgorICAgICAgICAgcmVsb2FkX2ludGVydmFsID0gZGVmYXVsdF9yZWxvYWRfaW50ZXJ2YWwodik7CisgCisgcmVsb2FkOgorKyAgICAgICAgcmVsb2FkX2NvdW50Kys7CisrICAgICAgICBpZiAocmVsb2FkX2NvdW50ID4gYy0+bWF4X3JlbG9hZCkKKysgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9FT0Y7CisgICAgICAgICBpZiAoIXYtPmZpbmlzaGVkICYmCisgICAgICAgICAgICAgYXZfZ2V0dGltZV9yZWxhdGl2ZSgpIC0gdi0+bGFzdF9sb2FkX3RpbWUgPj0gcmVsb2FkX2ludGVydmFsKSB7CisgICAgICAgICAgICAgaWYgKChyZXQgPSBwYXJzZV9wbGF5bGlzdChjLCB2LT51cmwsIHYsIE5VTEwpKSA8IDApIHsKK0BAIC0yMTUwLDYgKzIxNTUsOCBAQCBzdGF0aWMgY29uc3QgQVZPcHRpb24gaGxzX29wdGlvbnNbXSA9IHsKKyAgICAgICAgIE9GRlNFVChhbGxvd2VkX2V4dGVuc2lvbnMpLCBBVl9PUFRfVFlQRV9TVFJJTkcsCisgICAgICAgICB7LnN0ciA9ICIzZ3AsYWFjLGF2aSxmbGFjLG1rdixtM3U4LG00YSxtNHMsbTR2LG1wZyxtb3YsbXAyLG1wMyxtcDQsbXBlZyxtcGVndHMsb2dnLG9ndixvZ2EsdHMsdm9iLHdhdiJ9LAorICAgICAgICAgSU5UX01JTiwgSU5UX01BWCwgRkxBR1N9LAorKyAgICB7Im1heF9yZWxvYWQiLCAiTWF4aW11bSBudW1iZXIgb2YgdGltZXMgYSBpbnN1ZmZpY2llbnQgbGlzdCBpcyBhdHRlbXB0ZWQgdG8gYmUgcmVsb2FkZWQiLAorKyAgICAgICAgT0ZGU0VUKG1heF9yZWxvYWQpLCBBVl9PUFRfVFlQRV9JTlQsIHsuaTY0ID0gMTAwMH0sIDAsIElOVF9NQVgsIEZMQUdTfSwKKyAgICAge05VTEx9CisgfTsKKyAKKy0tIAorMi4xLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQwNTkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDA1OS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNGZkZTBiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQwNTkucGF0Y2gKQEAgLTAsMCArMSw0MCBAQAorRnJvbSA3ZTgwYjYzZWNkMjU5ZDY5ZDM4MzYyM2U3NWIzMThiZjJiZDQ5MWY2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xPz1FNT1BRD05OT1FNj1CNT1BOT0yMGFuZD0yMD1FNT1CQz1BMD1FNj1CND1BQT1FND1CQT1BRT0yOD89CisgPT9VVEYtOD9xPz1FNj05Qz05Qj1FNT04OD05RD0yOT89IDx0b255LnNoIGFuZCB3YW5nY2h1LnpobEBhbGliYWJhLWluYy5jb20+CitEYXRlOiBGcmksIDI1IEF1ZyAyMDE3IDAxOjE1OjI3ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGF2Zm9ybWF0L2NpbmVkZWM6IEZpeCBEb1MgZHVlIHRvIGxhY2sgb2YgZW9mIGNoZWNrCisKK0ZpeGVzOiBsb29wLmNpbmUKKworRm91bmQtYnk6IFhpYW9oZWkgYW5kIFdhbmdjaHUgZnJvbSBBbGliYWJhIFNlY3VyaXR5IFRlYW0KK1NpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxAbmllZGVybWF5ZXIuY2M+CisKK0NWRTogQ1ZFLTIwMTctMTQwNTkKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgbGliYXZmb3JtYXQvY2luZWRlYy5jIHwgNiArKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9jaW5lZGVjLmMgYi9saWJhdmZvcm1hdC9jaW5lZGVjLmMKK2luZGV4IDc2M2I5M2IuLmRlMzRmYjkgMTAwNjQ0CistLS0gYS9saWJhdmZvcm1hdC9jaW5lZGVjLmMKKysrKyBiL2xpYmF2Zm9ybWF0L2NpbmVkZWMuYworQEAgLTI2Nyw4ICsyNjcsMTIgQEAgc3RhdGljIGludCBjaW5lX3JlYWRfaGVhZGVyKEFWRm9ybWF0Q29udGV4dCAqYXZjdHgpCisgCisgICAgIC8qIHBhcnNlIGltYWdlIG9mZnNldHMgKi8KKyAgICAgYXZpb19zZWVrKHBiLCBvZmZJbWFnZU9mZnNldHMsIFNFRUtfU0VUKTsKKy0gICAgZm9yIChpID0gMDsgaSA8IHN0LT5kdXJhdGlvbjsgaSsrKQorKyAgICBmb3IgKGkgPSAwOyBpIDwgc3QtPmR1cmF0aW9uOyBpKyspIHsKKysgICAgICAgIGlmIChhdmlvX2Zlb2YocGIpKQorKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOworKworICAgICAgICAgYXZfYWRkX2luZGV4X2VudHJ5KHN0LCBhdmlvX3JsNjQocGIpLCBpLCAwLCAwLCBBVklOREVYX0tFWUZSQU1FKTsKKysgICAgfQorIAorICAgICByZXR1cm4gMDsKKyB9CistLSAKKzIuMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MTY5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQxNjkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTEyODRmYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MTY5LnBhdGNoCkBAIC0wLDAgKzEsMzkgQEAKK0Zyb20gOWQwMGZiOWQ3MGVlOGMwY2M3MDAyYjg5MzE4YzViZTAwZjFiYmRhZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT89RTU9QUQ9OTk9RTY9QjU9QTk9Mjg9RTY9OTk9OTM9RTk9QkI9OTE9Mjk/PQorIDx0b255LnNoQGFsaWJhYmEtaW5jLmNvbT4KK0RhdGU6IFR1ZSwgMjkgQXVnIDIwMTcgMjM6NTk6MjEgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gYXZmb3JtYXQvbXhmZGVjOiBGaXggU2lnbiBlcnJvciBpbiBteGZfcmVhZF9wcmltZXJfcGFjaygpCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK0ZpeGVzOiAyMDE3MDgyOUIubXhmCisKK0NvLUF1dGhvcjog5byg5rSq5LquKOacm+WInSkiIDx3YW5nY2h1LnpobEBhbGliYWJhLWluYy5jb20+CitGb3VuZC1ieTogWGlhb2hlaSBhbmQgV2FuZ2NodSBmcm9tIEFsaWJhYmEgU2VjdXJpdHkgVGVhbQorU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbEBuaWVkZXJtYXllci5jYz4KKworQ1ZFOiBDVkUtMjAxNy0xNDE2OQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CistLS0KKyBsaWJhdmZvcm1hdC9teGZkZWMuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L214ZmRlYy5jIGIvbGliYXZmb3JtYXQvbXhmZGVjLmMKK2luZGV4IDZhZGI3N2QuLjkxNzMxYTcgMTAwNjQ0CistLS0gYS9saWJhdmZvcm1hdC9teGZkZWMuYworKysrIGIvbGliYXZmb3JtYXQvbXhmZGVjLmMKK0BAIC01MDAsNyArNTAwLDcgQEAgc3RhdGljIGludCBteGZfcmVhZF9wcmltZXJfcGFjayh2b2lkICphcmcsIEFWSU9Db250ZXh0ICpwYiwgaW50IHRhZywgaW50IHNpemUsIFUKKyAgICAgICAgIGF2cHJpdl9yZXF1ZXN0X3NhbXBsZShwYiwgIlByaW1lciBwYWNrIGl0ZW0gbGVuZ3RoICVkIiwgaXRlbV9sZW4pOworICAgICAgICAgcmV0dXJuIEFWRVJST1JfUEFUQ0hXRUxDT01FOworICAgICB9CistICAgIGlmIChpdGVtX251bSA+IDY1NTM2KSB7CisrICAgIGlmIChpdGVtX251bSA+IDY1NTM2IHx8IGl0ZW1fbnVtIDwgMCkgeworICAgICAgICAgYXZfbG9nKG14Zi0+ZmMsIEFWX0xPR19FUlJPUiwgIml0ZW1fbnVtICVkIGlzIHRvbyBsYXJnZVxuIiwgaXRlbV9udW0pOworICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisgICAgIH0KKy0tIAorMi4xLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQxNzAucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDE3MC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODYwMTI1Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQxNzAucGF0Y2gKQEAgLTAsMCArMSw0OSBAQAorRnJvbSA5MDBmMzk2OTJjYTAzMzdhOThhN2NmMDQ3ZTRlMjYxMTA3MTgxMGMyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xPz1FNT1BRD05OT1FNj1CNT1BOT0yOD1FNj05OT05Mz1FOT1CQj05MT0yOT89CisgPHRvbnkuc2hAYWxpYmFiYS1pbmMuY29tPgorRGF0ZTogVHVlLCAyOSBBdWcgMjAxNyAyMzo1OToyMSArMDIwMAorU3ViamVjdDogW1BBVENIXSBhdmZvcm1hdC9teGZkZWM6IEZpeCBEb1MgaXNzdWVzIGluCisgbXhmX3JlYWRfaW5kZXhfZW50cnlfYXJyYXkoKQorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitGaXhlczogMjAxNzA4MjlBLm14ZgorCitDby1BdXRob3I6IOW8oOa0quS6rijmnJvliJ0pIiA8d2FuZ2NodS56aGxAYWxpYmFiYS1pbmMuY29tPgorRm91bmQtYnk6IFhpYW9oZWkgYW5kIFdhbmdjaHUgZnJvbSBBbGliYWJhIFNlY3VyaXR5IFRlYW0KK1NpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxAbmllZGVybWF5ZXIuY2M+CisKK0NWRTogQ1ZFLTIwMTctMTQxNzAKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgbGliYXZmb3JtYXQvbXhmZGVjLmMgfCA0ICsrKysKKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9teGZkZWMuYyBiL2xpYmF2Zm9ybWF0L214ZmRlYy5jCitpbmRleCBmOGQwZjllLi42YWRiNzdkIDEwMDY0NAorLS0tIGEvbGliYXZmb3JtYXQvbXhmZGVjLmMKKysrKyBiL2xpYmF2Zm9ybWF0L214ZmRlYy5jCitAQCAtODk5LDYgKzg5OSw4IEBAIHN0YXRpYyBpbnQgbXhmX3JlYWRfaW5kZXhfZW50cnlfYXJyYXkoQVZJT0NvbnRleHQgKnBiLCBNWEZJbmRleFRhYmxlU2VnbWVudCAqc2VnCisgICAgIHNlZ21lbnQtPm5iX2luZGV4X2VudHJpZXMgPSBhdmlvX3JiMzIocGIpOworIAorICAgICBsZW5ndGggPSBhdmlvX3JiMzIocGIpOworKyAgICBpZihzZWdtZW50LT5uYl9pbmRleF9lbnRyaWVzICYmIGxlbmd0aCA8IDExKQorKyAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisgCisgICAgIGlmICghKHNlZ21lbnQtPnRlbXBvcmFsX29mZnNldF9lbnRyaWVzPWF2X2NhbGxvYyhzZWdtZW50LT5uYl9pbmRleF9lbnRyaWVzLCBzaXplb2YoKnNlZ21lbnQtPnRlbXBvcmFsX29mZnNldF9lbnRyaWVzKSkpIHx8CisgICAgICAgICAhKHNlZ21lbnQtPmZsYWdfZW50cmllcyAgICAgICAgICA9IGF2X2NhbGxvYyhzZWdtZW50LT5uYl9pbmRleF9lbnRyaWVzLCBzaXplb2YoKnNlZ21lbnQtPmZsYWdfZW50cmllcykpKSB8fAorQEAgLTkwOSw2ICs5MTEsOCBAQCBzdGF0aWMgaW50IG14Zl9yZWFkX2luZGV4X2VudHJ5X2FycmF5KEFWSU9Db250ZXh0ICpwYiwgTVhGSW5kZXhUYWJsZVNlZ21lbnQgKnNlZworICAgICB9CisgCisgICAgIGZvciAoaSA9IDA7IGkgPCBzZWdtZW50LT5uYl9pbmRleF9lbnRyaWVzOyBpKyspIHsKKysgICAgICAgIGlmKGF2aW9fZmVvZihwYikpCisrICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7CisgICAgICAgICBzZWdtZW50LT50ZW1wb3JhbF9vZmZzZXRfZW50cmllc1tpXSA9IGF2aW9fcjgocGIpOworICAgICAgICAgYXZpb19yOChwYik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEtleUZyYW1lT2Zmc2V0ICovCisgICAgICAgICBzZWdtZW50LT5mbGFnX2VudHJpZXNbaV0gPSBhdmlvX3I4KHBiKTsKKy0tIAorMi4xLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQxNzEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDE3MS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMmFlMjA0Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQxNzEucGF0Y2gKQEAgLTAsMCArMSw0NCBAQAorRnJvbSBjMjRiY2I1NTM2NTBiOTFlOWVmZjE1ZWY2ZTU0Y2E3M2RlMjQ1M2I3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xPz1FNT1BRD05OT1FNj1CNT1BOT0yOD1FNj05OT05Mz1FOT1CQj05MT0yOT89CisgPHRvbnkuc2hAYWxpYmFiYS1pbmMuY29tPgorRGF0ZTogVHVlLCAyOSBBdWcgMjAxNyAyMzo1OToyMSArMDIwMAorU3ViamVjdDogW1BBVENIXSBhdmZvcm1hdC9uc3ZkZWM6IEZpeCBEb1MgZHVlIHRvIGxhY2sgb2YgZW9mIGNoZWNrIGluCisgbnN2c19maWxlX29mZnNldCBsb29wLgorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitGaXhlczogMjAxNzA4MjkubnN2CisKK0NvLUF1dGhvcjog5byg5rSq5LquKOacm+WInSkiIDx3YW5nY2h1LnpobEBhbGliYWJhLWluYy5jb20+CitGb3VuZC1ieTogWGlhb2hlaSBhbmQgV2FuZ2NodSBmcm9tIEFsaWJhYmEgU2VjdXJpdHkgVGVhbQorU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbEBuaWVkZXJtYXllci5jYz4KKworQ1ZFOiBDVkUtMjAxNy0xNDE3MQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CistLS0KKyBsaWJhdmZvcm1hdC9uc3ZkZWMuYyB8IDUgKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9uc3ZkZWMuYyBiL2xpYmF2Zm9ybWF0L25zdmRlYy5jCitpbmRleCBjNmRkYjY3Li5kOGNlNjU2IDEwMDY0NAorLS0tIGEvbGliYXZmb3JtYXQvbnN2ZGVjLmMKKysrKyBiL2xpYmF2Zm9ybWF0L25zdmRlYy5jCitAQCAtMzM1LDggKzMzNSwxMSBAQCBzdGF0aWMgaW50IG5zdl9wYXJzZV9OU1ZmX2hlYWRlcihBVkZvcm1hdENvbnRleHQgKnMpCisgICAgICAgICBpZiAoIW5zdi0+bnN2c19maWxlX29mZnNldCkKKyAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOworIAorLSAgICAgICAgZm9yKGk9MDtpPHRhYmxlX2VudHJpZXNfdXNlZDtpKyspCisrICAgICAgICBmb3IoaT0wO2k8dGFibGVfZW50cmllc191c2VkO2krKykgeworKyAgICAgICAgICAgIGlmIChhdmlvX2Zlb2YocGIpKQorKyAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKyAgICAgICAgICAgICBuc3YtPm5zdnNfZmlsZV9vZmZzZXRbaV0gPSBhdmlvX3JsMzIocGIpICsgc2l6ZTsKKysgICAgICAgIH0KKyAKKyAgICAgICAgIGlmKHRhYmxlX2VudHJpZXMgPiB0YWJsZV9lbnRyaWVzX3VzZWQgJiYKKyAgICAgICAgICAgIGF2aW9fcmwzMihwYikgPT0gTUtUQUcoJ1QnLCdPJywnQycsJzInKSkgeworLS0gCisyLjEuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDIyMi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MjIyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlMDIwMzcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDIyMi5wYXRjaApAQCAtMCwwICsxLDQwIEBACitGcm9tIDljYjRlYjc3MjgzOWM1ZTFkZTI4NTVkMTI2YmY3NGZmMTZkMTMzODIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsQG5pZWRlcm1heWVyLmNjPgorRGF0ZTogVHVlLCA1IFNlcCAyMDE3IDAwOjE2OjI5ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGF2Zm9ybWF0L21vdjogRml4IERvUyBpbiByZWFkX3RmcmEoKQorCitGaXhlczogTWlzc2luZyBFT0YgY2hlY2sgaW4gbG9vcAorTm8gdGVzdGNhc2UKKworRm91bmQtYnk6IFhpYW9oZWkgYW5kIFdhbmdjaHUgZnJvbSBBbGliYWJhIFNlY3VyaXR5IFRlYW0KK1NpZ25lZC1vZmYtYnk6IE1pY2hhZWwgTmllZGVybWF5ZXIgPG1pY2hhZWxAbmllZGVybWF5ZXIuY2M+CisKK0NWRTogQ1ZFLTIwMTctMTQyMjIKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorLS0tCisgbGliYXZmb3JtYXQvbW92LmMgfCA3ICsrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9tb3YuYyBiL2xpYmF2Zm9ybWF0L21vdi5jCitpbmRleCA5OTRlOWM2Li4yNTE5NzA3IDEwMDY0NAorLS0tIGEvbGliYXZmb3JtYXQvbW92LmMKKysrKyBiL2xpYmF2Zm9ybWF0L21vdi5jCitAQCAtNjA5NCw2ICs2MDk0LDEzIEBAIHN0YXRpYyBpbnQgcmVhZF90ZnJhKE1PVkNvbnRleHQgKm1vdiwgQVZJT0NvbnRleHQgKmYpCisgICAgIH0KKyAgICAgZm9yIChpID0gMDsgaSA8IGluZGV4LT5pdGVtX2NvdW50OyBpKyspIHsKKyAgICAgICAgIGludDY0X3QgdGltZSwgb2Zmc2V0OworKworKyAgICAgICAgaWYgKGF2aW9fZmVvZihmKSkgeworKyAgICAgICAgICAgIGluZGV4LT5pdGVtX2NvdW50ID0gMDsKKysgICAgICAgICAgICBhdl9mcmVlcCgmaW5kZXgtPml0ZW1zKTsKKysgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKysgICAgICAgIH0KKysKKyAgICAgICAgIGlmICh2ZXJzaW9uID09IDEpIHsKKyAgICAgICAgICAgICB0aW1lICAgPSBhdmlvX3JiNjQoZik7CisgICAgICAgICAgICAgb2Zmc2V0ID0gYXZpb19yYjY0KGYpOworLS0gCisyLjEuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDIyMy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MjIzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxZmVmNmIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZy9DVkUtMjAxNy0xNDIyMy5wYXRjaApAQCAtMCwwICsxLDM4IEBACitGcm9tIGFmYzljNjgzZWQ5ZGIwMWVkYjM1N2JjOGMxOWVkYWQ0MjgyYjNhOTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsQG5pZWRlcm1heWVyLmNjPgorRGF0ZTogVHVlLCA1IFNlcCAyMDE3IDAwOjE2OjI5ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGF2Zm9ybWF0L2FzZmRlYzogRml4IERvUyBpbiBhc2ZfYnVpbGRfc2ltcGxlX2luZGV4KCkKKworRml4ZXM6IE1pc3NpbmcgRU9GIGNoZWNrIGluIGxvb3AKK05vIHRlc3RjYXNlCisKK0ZvdW5kLWJ5OiBYaWFvaGVpIGFuZCBXYW5nY2h1IGZyb20gQWxpYmFiYSBTZWN1cml0eSBUZWFtCitTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIE5pZWRlcm1heWVyIDxtaWNoYWVsQG5pZWRlcm1heWVyLmNjPgorCitDVkU6IENWRS0yMDE3LTE0MjIzCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CisKK1NpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIGxpYmF2Zm9ybWF0L2FzZmRlY19mLmMgfCA1ICsrKysrCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvYXNmZGVjX2YuYyBiL2xpYmF2Zm9ybWF0L2FzZmRlY19mLmMKK2luZGV4IGYzYWNiYWUuLmNjNjQ4YjkgMTAwNjQ0CistLS0gYS9saWJhdmZvcm1hdC9hc2ZkZWNfZi5jCisrKysgYi9saWJhdmZvcm1hdC9hc2ZkZWNfZi5jCitAQCAtMTYxMCw2ICsxNjEwLDExIEBAIHN0YXRpYyBpbnQgYXNmX2J1aWxkX3NpbXBsZV9pbmRleChBVkZvcm1hdENvbnRleHQgKnMsIGludCBzdHJlYW1faW5kZXgpCisgICAgICAgICAgICAgaW50NjRfdCBwb3MgICAgICAgPSBzLT5pbnRlcm5hbC0+ZGF0YV9vZmZzZXQgKyBzLT5wYWNrZXRfc2l6ZSAqIChpbnQ2NF90KXBrdG51bTsKKyAgICAgICAgICAgICBpbnQ2NF90IGluZGV4X3B0cyA9IEZGTUFYKGF2X3Jlc2NhbGUoaXRpbWUsIGksIDEwMDAwKSAtIGFzZi0+aGRyLnByZXJvbGwsIDApOworIAorKyAgICAgICAgICAgIGlmIChhdmlvX2Zlb2Yocy0+cGIpKSB7CisrICAgICAgICAgICAgICAgIHJldCA9IEFWRVJST1JfSU5WQUxJRERBVEE7CisrICAgICAgICAgICAgICAgIGdvdG8gZW5kOworKyAgICAgICAgICAgIH0KKysKKyAgICAgICAgICAgICBpZiAocG9zICE9IGxhc3RfcG9zKSB7CisgICAgICAgICAgICAgICAgIGF2X2xvZyhzLCBBVl9MT0dfREVCVUcsICJwa3RudW06JWQsIHBrdGN0OiVkICBwdHM6ICUiUFJJZDY0IlxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBrdG51bSwgcGt0Y3QsIGluZGV4X3B0cyk7CistLSAKKzIuMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MjI1LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWcvQ1ZFLTIwMTctMTQyMjUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2U2ODQ1ZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnL0NWRS0yMDE3LTE0MjI1LnBhdGNoCkBAIC0wLDAgKzEsNDkgQEAKK1N1YmplY3Q6IFtQQVRDSF0gZmZwcm9iZTogRml4IG51bGwgcG9pbnRlciBkZXJlZmVyZW5jZSB3aXRoIGNvbG9yIHByaW1hcmllcworCitGb3VuZC1ieTogQUQtbGFiIG9mIHZlbnVzdGVjaAorU2lnbmVkLW9mZi1ieTogTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbEBuaWVkZXJtYXllci5jYz4KKworQ1ZFOiBDVkUtMjAxNy0xNDIyNQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CistLS0KKyBmZnByb2JlLmMgfCAxNSArKysrKysrKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2ZmcHJvYmUuYyBiL2ZmcHJvYmUuYworaW5kZXggYTIxOWZjMS4uZGYyMmIzMCAxMDA2NDQKKy0tLSBhL2ZmcHJvYmUuYworKysrIGIvZmZwcm9iZS5jCitAQCAtMTg5OSw2ICsxODk5LDE2IEBAIHN0YXRpYyB2b2lkIHByaW50X3BrdF9zaWRlX2RhdGEoV3JpdGVyQ29udGV4dCAqdywKKyAgICAgd3JpdGVyX3ByaW50X3NlY3Rpb25fZm9vdGVyKHcpOworIH0KKyAKKytzdGF0aWMgdm9pZCBwcmludF9wcmltYXJpZXMoV3JpdGVyQ29udGV4dCAqdywgZW51bSBBVkNvbG9yUHJpbWFyaWVzIGNvbG9yX3ByaW1hcmllcykKKyt7CisrICAgIGNvbnN0IGNoYXIgKnZhbCA9IGF2X2NvbG9yX3ByaW1hcmllc19uYW1lKGNvbG9yX3ByaW1hcmllcyk7CisrICAgIGlmICghdmFsIHx8IGNvbG9yX3ByaW1hcmllcyA9PSBBVkNPTF9QUklfVU5TUEVDSUZJRUQpIHsKKysJcHJpbnRfc3RyX29wdCgiY29sb3JfcHJpbWFyaWVzIiwgInVua25vd24iKTsKKysgICAgfSBlbHNlIHsKKysJcHJpbnRfc3RyKCJjb2xvcl9wcmltYXJpZXMiLCB2YWwpOworKyAgICB9CisrfQorKworIHN0YXRpYyB2b2lkIGNsZWFyX2xvZyhpbnQgbmVlZF9sb2NrKQorIHsKKyAgICAgaW50IGk7CitAQCAtMjQyMCwxMCArMjQzMCw3IEBAIHN0YXRpYyBpbnQgc2hvd19zdHJlYW0oV3JpdGVyQ29udGV4dCAqdywgQVZGb3JtYXRDb250ZXh0ICpmbXRfY3R4LCBpbnQgc3RyZWFtX2lkCisgICAgICAgICBlbHNlCisgICAgICAgICAgICAgcHJpbnRfc3RyX29wdCgiY29sb3JfdHJhbnNmZXIiLCBhdl9jb2xvcl90cmFuc2Zlcl9uYW1lKHBhci0+Y29sb3JfdHJjKSk7CisgCistICAgICAgICBpZiAocGFyLT5jb2xvcl9wcmltYXJpZXMgIT0gQVZDT0xfUFJJX1VOU1BFQ0lGSUVEKQorLSAgICAgICAgICAgIHByaW50X3N0cigiY29sb3JfcHJpbWFyaWVzIiwgYXZfY29sb3JfcHJpbWFyaWVzX25hbWUocGFyLT5jb2xvcl9wcmltYXJpZXMpKTsKKy0gICAgICAgIGVsc2UKKy0gICAgICAgICAgICBwcmludF9zdHJfb3B0KCJjb2xvcl9wcmltYXJpZXMiLCBhdl9jb2xvcl9wcmltYXJpZXNfbmFtZShwYXItPmNvbG9yX3ByaW1hcmllcykpOworKyAgICAgICAgcHJpbnRfcHJpbWFyaWVzKHcsIHBhci0+Y29sb3JfcHJpbWFyaWVzKTsKKyAKKyAgICAgICAgIGlmIChwYXItPmNocm9tYV9sb2NhdGlvbiAhPSBBVkNIUk9NQV9MT0NfVU5TUEVDSUZJRUQpCisgICAgICAgICAgICAgcHJpbnRfc3RyKCJjaHJvbWFfbG9jYXRpb24iLCBhdl9jaHJvbWFfbG9jYXRpb25fbmFtZShwYXItPmNocm9tYV9sb2NhdGlvbikpOworLS0gCisyLjEuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZ18zLjIuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnXzMuMi40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMjE2ZjhlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnXzMuMi40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTQ3ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBjb21wbGV0ZSwgY3Jvc3MtcGxhdGZvcm0gc29sdXRpb24gdG8gcmVjb3JkLCBjb252ZXJ0IGFuZCBzdHJlYW0gYXVkaW8gYW5kIHZpZGVvLiIKLURFU0NSSVBUSU9OID0gIkZGbXBlZyBpcyB0aGUgbGVhZGluZyBtdWx0aW1lZGlhIGZyYW1ld29yaywgYWJsZSB0byBkZWNvZGUsIGVuY29kZSwgdHJhbnNjb2RlLCBcCi0gICAgICAgICAgICAgICBtdXgsIGRlbXV4LCBzdHJlYW0sIGZpbHRlciBhbmQgcGxheSBwcmV0dHkgbXVjaCBhbnl0aGluZyB0aGF0IGh1bWFucyBhbmQgbWFjaGluZXMgXAotICAgICAgICAgICAgICAgaGF2ZSBjcmVhdGVkLiBJdCBzdXBwb3J0cyB0aGUgbW9zdCBvYnNjdXJlIGFuY2llbnQgZm9ybWF0cyB1cCB0byB0aGUgY3V0dGluZyBlZGdlLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vd3d3LmZmbXBlZy5vcmcvIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIkJTRCAmIEdQTHYyKyAmIExHUEx2Mi4xKyAmIE1JVCIKLUxJQ0VOU0VfJHtQTn0gPSAiR1BMdjIrIgotTElDRU5TRV9saWJhdmNvZGVjID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgotTElDRU5TRV9saWJhdmRldmljZSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKLUxJQ0VOU0VfbGliYXZmaWx0ZXIgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCi1MSUNFTlNFX2xpYmF2Zm9ybWF0ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgotTElDRU5TRV9saWJhdnJlc2FtcGxlID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgotTElDRU5TRV9saWJhdnV0aWwgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCi1MSUNFTlNFX2xpYnBvc3Rwcm9jID0gIkdQTHYyKyIKLUxJQ0VOU0VfbGlic3dyZXNhbXBsZSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKLUxJQ0VOU0VfbGlic3dzY2FsZSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKLUxJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5HUEx2MjttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5HUEx2MzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MR1BMdjIuMTttZDU9YmQ3YTQ0MzMyMGFmOGM4MTJlNGMxOGQxYjc5ZGYwMDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MR1BMdjM7bWQ1PWU2YTYwMGZkNWUxZDljYmRlMmQ5ODM2ODAyMzNhZDAyIgotCi1TUkNfVVJJID0gImh0dHBzOi8vd3d3LmZmbXBlZy5vcmcvcmVsZWFzZXMvJHtCUH0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL21pcHM2NF9jcHVfZGV0ZWN0aW9uLnBhdGNoIFwKLSAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiMzlmZDcxMDI0YWM3NmJhMzVmMDQzOTcwMjFhZjU2MDYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmUzOGZmMTRmMDgwYzk4YjU4Y2Y1OTY3NTczNTAxYjhjYjU4NmUzYTE3M2I1OTFmMzgwN2Q4ZjA2NjBkYWY3YSIKLQotIyBCdWlsZCBmYWlscyB3aGVuIHRodW1iIGlzIGVuYWJsZWQ6IGh0dHBzOi8vYnVnemlsbGEueW9jdG9wcm9qZWN0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzcxNwotQVJNX0lOU1RSVUNUSU9OX1NFVCA9ICJhcm0iCi0KLSMgU2hvdWxkIGJlIEFQSSBjb21wYXRpYmxlIHdpdGggbGliYXYgKHdoaWNoIHdhcyBhIGZvcmsgb2YgZmZtcGVnKQotIyBsaWJwb3N0cHJvYyB3YXMgcHJldmlvdXNseSBwYWNrYWdlZCBmcm9tIGEgc2VwYXJhdGUgcmVjaXBlCi1QUk9WSURFUyA9ICJsaWJhdiBsaWJwb3N0cHJvYyIKLQotREVQRU5EUyA9ICJhbHNhLWxpYiB6bGliIGxpYm9nZyB5YXNtLW5hdGl2ZSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJhdmRldmljZSBhdmZpbHRlciBhdmNvZGVjIGF2Zm9ybWF0IHN3cmVzYW1wbGUgc3dzY2FsZSBwb3N0cHJvYyBcCi0gICAgICAgICAgICAgICAgICAgYnpsaWIgZ3BsIGx6bWEgdGhlb3JhIHgyNjQgXAotICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3gxMSB4dicsICcnLCBkKX0iCi0KLSMgbGlicmFyaWVzIHRvIGJ1aWxkIGluIGFkZGl0aW9uIHRvIGF2dXRpbAotUEFDS0FHRUNPTkZJR1thdmRldmljZV0gPSAiLS1lbmFibGUtYXZkZXZpY2UsLS1kaXNhYmxlLWF2ZGV2aWNlIgotUEFDS0FHRUNPTkZJR1thdmZpbHRlcl0gPSAiLS1lbmFibGUtYXZmaWx0ZXIsLS1kaXNhYmxlLWF2ZmlsdGVyIgotUEFDS0FHRUNPTkZJR1thdmNvZGVjXSA9ICItLWVuYWJsZS1hdmNvZGVjLC0tZGlzYWJsZS1hdmNvZGVjIgotUEFDS0FHRUNPTkZJR1thdmZvcm1hdF0gPSAiLS1lbmFibGUtYXZmb3JtYXQsLS1kaXNhYmxlLWF2Zm9ybWF0IgotUEFDS0FHRUNPTkZJR1tzd3Jlc2FtcGxlXSA9ICItLWVuYWJsZS1zd3Jlc2FtcGxlLC0tZGlzYWJsZS1zd3Jlc2FtcGxlIgotUEFDS0FHRUNPTkZJR1tzd3NjYWxlXSA9ICItLWVuYWJsZS1zd3NjYWxlLC0tZGlzYWJsZS1zd3NjYWxlIgotUEFDS0FHRUNPTkZJR1twb3N0cHJvY10gPSAiLS1lbmFibGUtcG9zdHByb2MsLS1kaXNhYmxlLXBvc3Rwcm9jIgotUEFDS0FHRUNPTkZJR1thdnJlc2FtcGxlXSA9ICItLWVuYWJsZS1hdnJlc2FtcGxlLC0tZGlzYWJsZS1hdnJlc2FtcGxlIgotCi0jIGZlYXR1cmVzIHRvIHN1cHBvcnQKLVBBQ0tBR0VDT05GSUdbYnpsaWJdID0gIi0tZW5hYmxlLWJ6bGliLC0tZGlzYWJsZS1iemxpYixiemlwMiIKLVBBQ0tBR0VDT05GSUdbZ3BsXSA9ICItLWVuYWJsZS1ncGwsLS1kaXNhYmxlLWdwbCIKLVBBQ0tBR0VDT05GSUdbZ3NtXSA9ICItLWVuYWJsZS1saWJnc20sLS1kaXNhYmxlLWxpYmdzbSxsaWJnc20iCi1QQUNLQUdFQ09ORklHW2phY2tdID0gIi0tZW5hYmxlLWluZGV2PWphY2ssLS1kaXNhYmxlLWluZGV2PWphY2ssamFjayIKLVBBQ0tBR0VDT05GSUdbbGlidm9yYmlzXSA9ICItLWVuYWJsZS1saWJ2b3JiaXMsLS1kaXNhYmxlLWxpYnZvcmJpcyxsaWJ2b3JiaXMiCi1QQUNLQUdFQ09ORklHW2x6bWFdID0gIi0tZW5hYmxlLWx6bWEsLS1kaXNhYmxlLWx6bWEseHoiCi1QQUNLQUdFQ09ORklHW21wM2xhbWVdID0gIi0tZW5hYmxlLWxpYm1wM2xhbWUsLS1kaXNhYmxlLWxpYm1wM2xhbWUsbGFtZSIKLVBBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS1lbmFibGUtb3BlbnNzbCwtLWRpc2FibGUtb3BlbnNzbCxvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1tzY2hyb2VkaW5nZXJdID0gIi0tZW5hYmxlLWxpYnNjaHJvZWRpbmdlciwtLWRpc2FibGUtbGlic2Nocm9lZGluZ2VyLHNjaHJvZWRpbmdlciIKLVBBQ0tBR0VDT05GSUdbc3BlZXhdID0gIi0tZW5hYmxlLWxpYnNwZWV4LC0tZGlzYWJsZS1saWJzcGVleCxzcGVleCIKLVBBQ0tBR0VDT05GSUdbdGhlb3JhXSA9ICItLWVuYWJsZS1saWJ0aGVvcmEsLS1kaXNhYmxlLWxpYnRoZW9yYSxsaWJ0aGVvcmEiCi1QQUNLQUdFQ09ORklHW3ZhYXBpXSA9ICItLWVuYWJsZS12YWFwaSwtLWRpc2FibGUtdmFhcGksbGlidmEiCi1QQUNLQUdFQ09ORklHW3ZkcGF1XSA9ICItLWVuYWJsZS12ZHBhdSwtLWRpc2FibGUtdmRwYXUsbGlidmRwYXUiCi1QQUNLQUdFQ09ORklHW3ZweF0gPSAiLS1lbmFibGUtbGlidnB4LC0tZGlzYWJsZS1saWJ2cHgsbGlidnB4IgotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0tZW5hYmxlLXgxMWdyYWIsLS1kaXNhYmxlLXgxMWdyYWIsdmlydHVhbC9saWJ4MTEgbGlieGZpeGVzIGxpYnhleHQgeHByb3RvIHZpcnR1YWwvbGlic2RsIgotUEFDS0FHRUNPTkZJR1t4MjY0XSA9ICItLWVuYWJsZS1saWJ4MjY0LC0tZGlzYWJsZS1saWJ4MjY0LHgyNjQiCi1QQUNLQUdFQ09ORklHW3h2XSA9ICItLWVuYWJsZS1vdXRkZXY9eHYsLS1kaXNhYmxlLW91dGRldj14dixsaWJ4diIKLQotIyBDaGVjayBjb2RlY3MgdGhhdCByZXF1aXJlIC0tZW5hYmxlLW5vbmZyZWUKLVVTRV9OT05GUkVFID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnUEFDS0FHRUNPTkZJRycsIFsgJ29wZW5zc2wnIF0sICd5ZXMnLCAnJywgZCl9IgotCi1kZWYgY3B1KGQpOgotICAgIGZvciBhcmcgaW4gKGQuZ2V0VmFyKCdUVU5FX0NDQVJHUycpIG9yICcnKS5zcGxpdCgpOgotICAgICAgICBpZiBhcmcuc3RhcnRzd2l0aCgnLW1jcHU9Jyk6Ci0gICAgICAgICAgICByZXR1cm4gYXJnWzY6XQotICAgIHJldHVybiAnZ2VuZXJpYycKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS1kaXNhYmxlLXN0cmlwcGluZyBcCi0gICAgLS1lbmFibGUtcGljIFwKLSAgICAtLWVuYWJsZS1zaGFyZWQgXAotICAgIC0tZW5hYmxlLXB0aHJlYWRzIFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnVVNFX05PTkZSRUUnLCAneWVzJywgJy0tZW5hYmxlLW5vbmZyZWUnLCAnJywgZCl9IFwKLSAgICBcCi0gICAgLS1jcm9zcy1wcmVmaXg9JHtUQVJHRVRfUFJFRklYfSBcCi0gICAgXAotICAgIC0tbGQ9IiR7Q0NMRH0iIFwKLSAgICAtLWNjPSIke0NDfSIgXAotICAgIC0tY3h4PSIke0NYWH0iIFwKLSAgICAtLWFyY2g9JHtUQVJHRVRfQVJDSH0gXAotICAgIC0tdGFyZ2V0LW9zPSJsaW51eCIgXAotICAgIC0tZW5hYmxlLWNyb3NzLWNvbXBpbGUgXAotICAgIC0tZXh0cmEtY2ZsYWdzPSIke1RBUkdFVF9DRkxBR1N9ICR7SE9TVF9DQ19BUkNIfSR7VE9PTENIQUlOX09QVElPTlN9IiBcCi0gICAgLS1leHRyYS1sZGZsYWdzPSIke1RBUkdFVF9MREZMQUdTfSIgXAotICAgIC0tc3lzcm9vdD0iJHtTVEFHSU5HX0RJUl9UQVJHRVR9IiBcCi0gICAgLS1lbmFibGUtaGFyZGNvZGVkLXRhYmxlcyBcCi0gICAgJHtFWFRSQV9GRkNPTkZ9IFwKLSAgICAtLWxpYmRpcj0ke2xpYmRpcn0gXAotICAgIC0tc2hsaWJkaXI9JHtsaWJkaXJ9IFwKLSAgICAtLWRhdGFkaXI9JHtkYXRhZGlyfS9mZm1wZWcgXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdBVkFJTFRVTkVTJywgJ21pcHMzMnIyJywgJycsICctLWRpc2FibGUtbWlwc2RzcCAtLWRpc2FibGUtbWlwc2RzcHIyJywgZCl9IFwKLSAgICAtLWNwdT0ke0BjcHUoZCl9IFwKLSIKLQotRVhUUkFfT0VDT05GX2FwcGVuZF9saW51eC1nbnV4MzIgPSAiIC0tZGlzYWJsZS1hc20iCi0KLWRvX2NvbmZpZ3VyZSgpIHsKLSAgICAke1N9L2NvbmZpZ3VyZSAke0VYVFJBX09FQ09ORn0KLX0KLQotUEFDS0FHRVMgPSsgImxpYmF2Y29kZWMgXAotICAgICAgICAgICAgIGxpYmF2ZGV2aWNlIFwKLSAgICAgICAgICAgICBsaWJhdmZpbHRlciBcCi0gICAgICAgICAgICAgbGliYXZmb3JtYXQgXAotICAgICAgICAgICAgIGxpYmF2cmVzYW1wbGUgXAotICAgICAgICAgICAgIGxpYmF2dXRpbCBcCi0gICAgICAgICAgICAgbGlicG9zdHByb2MgXAotICAgICAgICAgICAgIGxpYnN3cmVzYW1wbGUgXAotICAgICAgICAgICAgIGxpYnN3c2NhbGUiCi0KLUZJTEVTX2xpYmF2Y29kZWMgPSAiJHtsaWJkaXJ9L2xpYmF2Y29kZWMke1NPTElCU30iCi1GSUxFU19saWJhdmRldmljZSA9ICIke2xpYmRpcn0vbGliYXZkZXZpY2Uke1NPTElCU30iCi1GSUxFU19saWJhdmZpbHRlciA9ICIke2xpYmRpcn0vbGliYXZmaWx0ZXIke1NPTElCU30iCi1GSUxFU19saWJhdmZvcm1hdCA9ICIke2xpYmRpcn0vbGliYXZmb3JtYXQke1NPTElCU30iCi1GSUxFU19saWJhdnJlc2FtcGxlID0gIiR7bGliZGlyfS9saWJhdnJlc2FtcGxlJHtTT0xJQlN9IgotRklMRVNfbGliYXZ1dGlsID0gIiR7bGliZGlyfS9saWJhdnV0aWwke1NPTElCU30iCi1GSUxFU19saWJwb3N0cHJvYyA9ICIke2xpYmRpcn0vbGlicG9zdHByb2Mke1NPTElCU30iCi1GSUxFU19saWJzd3Jlc2FtcGxlID0gIiR7bGliZGlyfS9saWJzd3Jlc2FtcGxlJHtTT0xJQlN9IgotRklMRVNfbGlic3dzY2FsZSA9ICIke2xpYmRpcn0vbGlic3dzY2FsZSR7U09MSUJTfSIKLQotIyBmZm1wZWcgZGlzYWJsZXMgUElDIG9uIHNvbWUgcGxhdGZvcm1zIChlLmcuIHg4Ni0zMikKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZjb2RlYyA9ICJ0ZXh0cmVsIgotSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhdmRldmljZSA9ICJ0ZXh0cmVsIgotSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhdmZpbHRlciA9ICJ0ZXh0cmVsIgotSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhdmZvcm1hdCA9ICJ0ZXh0cmVsIgotSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhdnV0aWwgPSAidGV4dHJlbCIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZyZXNhbXBsZSA9ICJ0ZXh0cmVsIgotSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJzd3NjYWxlID0gInRleHRyZWwiCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYnN3cmVzYW1wbGUgPSAidGV4dHJlbCIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGlicG9zdHByb2MgPSAidGV4dHJlbCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnXzMuMy4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWdfMy4zLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzFlYmVjZgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnXzMuMy4zLmJiCkBAIC0wLDAgKzEsMTY1IEBACitTVU1NQVJZID0gIkEgY29tcGxldGUsIGNyb3NzLXBsYXRmb3JtIHNvbHV0aW9uIHRvIHJlY29yZCwgY29udmVydCBhbmQgc3RyZWFtIGF1ZGlvIGFuZCB2aWRlby4iCitERVNDUklQVElPTiA9ICJGRm1wZWcgaXMgdGhlIGxlYWRpbmcgbXVsdGltZWRpYSBmcmFtZXdvcmssIGFibGUgdG8gZGVjb2RlLCBlbmNvZGUsIHRyYW5zY29kZSwgXAorICAgICAgICAgICAgICAgbXV4LCBkZW11eCwgc3RyZWFtLCBmaWx0ZXIgYW5kIHBsYXkgcHJldHR5IG11Y2ggYW55dGhpbmcgdGhhdCBodW1hbnMgYW5kIG1hY2hpbmVzIFwKKyAgICAgICAgICAgICAgIGhhdmUgY3JlYXRlZC4gSXQgc3VwcG9ydHMgdGhlIG1vc3Qgb2JzY3VyZSBhbmNpZW50IGZvcm1hdHMgdXAgdG8gdGhlIGN1dHRpbmcgZWRnZS4iCitIT01FUEFHRSA9ICJodHRwczovL3d3dy5mZm1wZWcub3JnLyIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJCU0QgJiBHUEx2MisgJiBMR1BMdjIuMSsgJiBNSVQiCitMSUNFTlNFXyR7UE59ID0gIkdQTHYyKyIKK0xJQ0VOU0VfbGliYXZjb2RlYyA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKK0xJQ0VOU0VfbGliYXZkZXZpY2UgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCitMSUNFTlNFX2xpYmF2ZmlsdGVyID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgorTElDRU5TRV9saWJhdmZvcm1hdCA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKK0xJQ0VOU0VfbGliYXZyZXNhbXBsZSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKK0xJQ0VOU0VfbGliYXZ1dGlsID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgorTElDRU5TRV9saWJwb3N0cHJvYyA9ICJHUEx2MisiCitMSUNFTlNFX2xpYnN3cmVzYW1wbGUgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCitMSUNFTlNFX2xpYnN3c2NhbGUgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCitMSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuR1BMdjI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuR1BMdjM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEdQTHYyLjE7bWQ1PWJkN2E0NDMzMjBhZjhjODEyZTRjMThkMWI3OWRmMDA0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEdQTHYzO21kNT1lNmE2MDBmZDVlMWQ5Y2JkZTJkOTgzNjgwMjMzYWQwMiIKKworU1JDX1VSSSA9ICJodHRwczovL3d3dy5mZm1wZWcub3JnL3JlbGVhc2VzLyR7QlB9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9taXBzNjRfY3B1X2RldGVjdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWJ1aWxkLWZpeC1mb3ItbWlwcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDA1NC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDA1NS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDA1Ni5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDA1Ny5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDA1OC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDA1OS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDE2OS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDE3MC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDE3MS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDIyMi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDIyMy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDIyNS5wYXRjaCBcCisgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjc0M2RjNjZlYmU2NzE4MDI4M2I5MmQwMjlmNjkwZDBmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQyYTkwMDJjZGM2YjUzM2I1OTcyODgyNzE4NmMwNDRhZDAyYmE2NDg0MWYxYjdjZDZjMjE3Nzk4NzU0NTNhMWUiCisKKyMgQnVpbGQgZmFpbHMgd2hlbiB0aHVtYiBpcyBlbmFibGVkOiBodHRwczovL2J1Z3ppbGxhLnlvY3RvcHJvamVjdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3MTcKK0FSTV9JTlNUUlVDVElPTl9TRVQgPSAiYXJtIgorCisjIFNob3VsZCBiZSBBUEkgY29tcGF0aWJsZSB3aXRoIGxpYmF2ICh3aGljaCB3YXMgYSBmb3JrIG9mIGZmbXBlZykKKyMgbGlicG9zdHByb2Mgd2FzIHByZXZpb3VzbHkgcGFja2FnZWQgZnJvbSBhIHNlcGFyYXRlIHJlY2lwZQorUFJPVklERVMgPSAibGliYXYgbGlicG9zdHByb2MiCisKK0RFUEVORFMgPSAiYWxzYS1saWIgemxpYiBsaWJvZ2cgeWFzbS1uYXRpdmUiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitQQUNLQUdFQ09ORklHID8/PSAiYXZkZXZpY2UgYXZmaWx0ZXIgYXZjb2RlYyBhdmZvcm1hdCBzd3Jlc2FtcGxlIHN3c2NhbGUgcG9zdHByb2MgXAorICAgICAgICAgICAgICAgICAgIGJ6bGliIGdwbCBsem1hIHRoZW9yYSB4MjY0IFwKKyAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4dicsICcnLCBkKX0iCisKKyMgbGlicmFyaWVzIHRvIGJ1aWxkIGluIGFkZGl0aW9uIHRvIGF2dXRpbAorUEFDS0FHRUNPTkZJR1thdmRldmljZV0gPSAiLS1lbmFibGUtYXZkZXZpY2UsLS1kaXNhYmxlLWF2ZGV2aWNlIgorUEFDS0FHRUNPTkZJR1thdmZpbHRlcl0gPSAiLS1lbmFibGUtYXZmaWx0ZXIsLS1kaXNhYmxlLWF2ZmlsdGVyIgorUEFDS0FHRUNPTkZJR1thdmNvZGVjXSA9ICItLWVuYWJsZS1hdmNvZGVjLC0tZGlzYWJsZS1hdmNvZGVjIgorUEFDS0FHRUNPTkZJR1thdmZvcm1hdF0gPSAiLS1lbmFibGUtYXZmb3JtYXQsLS1kaXNhYmxlLWF2Zm9ybWF0IgorUEFDS0FHRUNPTkZJR1tzd3Jlc2FtcGxlXSA9ICItLWVuYWJsZS1zd3Jlc2FtcGxlLC0tZGlzYWJsZS1zd3Jlc2FtcGxlIgorUEFDS0FHRUNPTkZJR1tzd3NjYWxlXSA9ICItLWVuYWJsZS1zd3NjYWxlLC0tZGlzYWJsZS1zd3NjYWxlIgorUEFDS0FHRUNPTkZJR1twb3N0cHJvY10gPSAiLS1lbmFibGUtcG9zdHByb2MsLS1kaXNhYmxlLXBvc3Rwcm9jIgorUEFDS0FHRUNPTkZJR1thdnJlc2FtcGxlXSA9ICItLWVuYWJsZS1hdnJlc2FtcGxlLC0tZGlzYWJsZS1hdnJlc2FtcGxlIgorCisjIGZlYXR1cmVzIHRvIHN1cHBvcnQKK1BBQ0tBR0VDT05GSUdbYnpsaWJdID0gIi0tZW5hYmxlLWJ6bGliLC0tZGlzYWJsZS1iemxpYixiemlwMiIKK1BBQ0tBR0VDT05GSUdbZ3BsXSA9ICItLWVuYWJsZS1ncGwsLS1kaXNhYmxlLWdwbCIKK1BBQ0tBR0VDT05GSUdbZ3NtXSA9ICItLWVuYWJsZS1saWJnc20sLS1kaXNhYmxlLWxpYmdzbSxsaWJnc20iCitQQUNLQUdFQ09ORklHW2phY2tdID0gIi0tZW5hYmxlLWluZGV2PWphY2ssLS1kaXNhYmxlLWluZGV2PWphY2ssamFjayIKK1BBQ0tBR0VDT05GSUdbbGlidm9yYmlzXSA9ICItLWVuYWJsZS1saWJ2b3JiaXMsLS1kaXNhYmxlLWxpYnZvcmJpcyxsaWJ2b3JiaXMiCitQQUNLQUdFQ09ORklHW2x6bWFdID0gIi0tZW5hYmxlLWx6bWEsLS1kaXNhYmxlLWx6bWEseHoiCitQQUNLQUdFQ09ORklHW21wM2xhbWVdID0gIi0tZW5hYmxlLWxpYm1wM2xhbWUsLS1kaXNhYmxlLWxpYm1wM2xhbWUsbGFtZSIKK1BBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS1lbmFibGUtb3BlbnNzbCwtLWRpc2FibGUtb3BlbnNzbCxvcGVuc3NsIgorUEFDS0FHRUNPTkZJR1tzY2hyb2VkaW5nZXJdID0gIi0tZW5hYmxlLWxpYnNjaHJvZWRpbmdlciwtLWRpc2FibGUtbGlic2Nocm9lZGluZ2VyLHNjaHJvZWRpbmdlciIKK1BBQ0tBR0VDT05GSUdbc2RsMl0gPSAiLS1lbmFibGUtc2RsMiwtLWRpc2FibGUtc2RsMix2aXJ0dWFsL2xpYnNkbDIiCitQQUNLQUdFQ09ORklHW3NwZWV4XSA9ICItLWVuYWJsZS1saWJzcGVleCwtLWRpc2FibGUtbGlic3BlZXgsc3BlZXgiCitQQUNLQUdFQ09ORklHW3RoZW9yYV0gPSAiLS1lbmFibGUtbGlidGhlb3JhLC0tZGlzYWJsZS1saWJ0aGVvcmEsbGlidGhlb3JhIgorUEFDS0FHRUNPTkZJR1t2YWFwaV0gPSAiLS1lbmFibGUtdmFhcGksLS1kaXNhYmxlLXZhYXBpLGxpYnZhIgorUEFDS0FHRUNPTkZJR1t2ZHBhdV0gPSAiLS1lbmFibGUtdmRwYXUsLS1kaXNhYmxlLXZkcGF1LGxpYnZkcGF1IgorUEFDS0FHRUNPTkZJR1t2cHhdID0gIi0tZW5hYmxlLWxpYnZweCwtLWRpc2FibGUtbGlidnB4LGxpYnZweCIKK1BBQ0tBR0VDT05GSUdbeDI2NF0gPSAiLS1lbmFibGUtbGlieDI2NCwtLWRpc2FibGUtbGlieDI2NCx4MjY0IgorUEFDS0FHRUNPTkZJR1t4dl0gPSAiLS1lbmFibGUtb3V0ZGV2PXh2LC0tZGlzYWJsZS1vdXRkZXY9eHYsbGlieHYiCisKKyMgQ2hlY2sgY29kZWNzIHRoYXQgcmVxdWlyZSAtLWVuYWJsZS1ub25mcmVlCitVU0VfTk9ORlJFRSA9ICIke0BiYi51dGlscy5jb250YWluc19hbnkoJ1BBQ0tBR0VDT05GSUcnLCBbICdvcGVuc3NsJyBdLCAneWVzJywgJycsIGQpfSIKKworZGVmIGNwdShkKToKKyAgICBmb3IgYXJnIGluIChkLmdldFZhcignVFVORV9DQ0FSR1MnKSBvciAnJykuc3BsaXQoKToKKyAgICAgICAgaWYgYXJnLnN0YXJ0c3dpdGgoJy1tY3B1PScpOgorICAgICAgICAgICAgcmV0dXJuIGFyZ1s2Ol0KKyAgICByZXR1cm4gJ2dlbmVyaWMnCisKK0VYVFJBX09FQ09ORiA9ICIgXAorICAgIC0tZGlzYWJsZS1zdHJpcHBpbmcgXAorICAgIC0tZW5hYmxlLXBpYyBcCisgICAgLS1lbmFibGUtc2hhcmVkIFwKKyAgICAtLWVuYWJsZS1wdGhyZWFkcyBcCisgICAgLS1kaXNhYmxlLWxpYnhjYiBcCisgICAgLS1kaXNhYmxlLWxpYnhjYi1zaG0gXAorICAgIC0tZGlzYWJsZS1saWJ4Y2IteGZpeGVzIFwKKyAgICAtLWRpc2FibGUtbGlieGNiLXNoYXBlIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnVVNFX05PTkZSRUUnLCAneWVzJywgJy0tZW5hYmxlLW5vbmZyZWUnLCAnJywgZCl9IFwKKyAgICBcCisgICAgLS1jcm9zcy1wcmVmaXg9JHtUQVJHRVRfUFJFRklYfSBcCisgICAgXAorICAgIC0tbGQ9IiR7Q0NMRH0iIFwKKyAgICAtLWNjPSIke0NDfSIgXAorICAgIC0tY3h4PSIke0NYWH0iIFwKKyAgICAtLWFyY2g9JHtUQVJHRVRfQVJDSH0gXAorICAgIC0tdGFyZ2V0LW9zPSJsaW51eCIgXAorICAgIC0tZW5hYmxlLWNyb3NzLWNvbXBpbGUgXAorICAgIC0tZXh0cmEtY2ZsYWdzPSIke1RBUkdFVF9DRkxBR1N9ICR7SE9TVF9DQ19BUkNIfSR7VE9PTENIQUlOX09QVElPTlN9IiBcCisgICAgLS1leHRyYS1sZGZsYWdzPSIke1RBUkdFVF9MREZMQUdTfSIgXAorICAgIC0tc3lzcm9vdD0iJHtTVEFHSU5HX0RJUl9UQVJHRVR9IiBcCisgICAgLS1lbmFibGUtaGFyZGNvZGVkLXRhYmxlcyBcCisgICAgJHtFWFRSQV9GRkNPTkZ9IFwKKyAgICAtLWxpYmRpcj0ke2xpYmRpcn0gXAorICAgIC0tc2hsaWJkaXI9JHtsaWJkaXJ9IFwKKyAgICAtLWRhdGFkaXI9JHtkYXRhZGlyfS9mZm1wZWcgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdBVkFJTFRVTkVTJywgJ21pcHMzMnIyJywgJycsICctLWRpc2FibGUtbWlwc2RzcCAtLWRpc2FibGUtbWlwc2RzcHIyJywgZCl9IFwKKyAgICAtLWNwdT0ke0BjcHUoZCl9IFwKKyAgICAtLXBrZy1jb25maWc9cGtnLWNvbmZpZyBcCisiCisKK0VYVFJBX09FQ09ORl9hcHBlbmRfbGludXgtZ251eDMyID0gIiAtLWRpc2FibGUtYXNtIgorCitkb19jb25maWd1cmUoKSB7CisgICAgJHtTfS9jb25maWd1cmUgJHtFWFRSQV9PRUNPTkZ9Cit9CisKK1BBQ0tBR0VTID0rICJsaWJhdmNvZGVjIFwKKyAgICAgICAgICAgICBsaWJhdmRldmljZSBcCisgICAgICAgICAgICAgbGliYXZmaWx0ZXIgXAorICAgICAgICAgICAgIGxpYmF2Zm9ybWF0IFwKKyAgICAgICAgICAgICBsaWJhdnJlc2FtcGxlIFwKKyAgICAgICAgICAgICBsaWJhdnV0aWwgXAorICAgICAgICAgICAgIGxpYnBvc3Rwcm9jIFwKKyAgICAgICAgICAgICBsaWJzd3Jlc2FtcGxlIFwKKyAgICAgICAgICAgICBsaWJzd3NjYWxlIgorCitGSUxFU19saWJhdmNvZGVjID0gIiR7bGliZGlyfS9saWJhdmNvZGVjJHtTT0xJQlN9IgorRklMRVNfbGliYXZkZXZpY2UgPSAiJHtsaWJkaXJ9L2xpYmF2ZGV2aWNlJHtTT0xJQlN9IgorRklMRVNfbGliYXZmaWx0ZXIgPSAiJHtsaWJkaXJ9L2xpYmF2ZmlsdGVyJHtTT0xJQlN9IgorRklMRVNfbGliYXZmb3JtYXQgPSAiJHtsaWJkaXJ9L2xpYmF2Zm9ybWF0JHtTT0xJQlN9IgorRklMRVNfbGliYXZyZXNhbXBsZSA9ICIke2xpYmRpcn0vbGliYXZyZXNhbXBsZSR7U09MSUJTfSIKK0ZJTEVTX2xpYmF2dXRpbCA9ICIke2xpYmRpcn0vbGliYXZ1dGlsJHtTT0xJQlN9IgorRklMRVNfbGlicG9zdHByb2MgPSAiJHtsaWJkaXJ9L2xpYnBvc3Rwcm9jJHtTT0xJQlN9IgorRklMRVNfbGlic3dyZXNhbXBsZSA9ICIke2xpYmRpcn0vbGlic3dyZXNhbXBsZSR7U09MSUJTfSIKK0ZJTEVTX2xpYnN3c2NhbGUgPSAiJHtsaWJkaXJ9L2xpYnN3c2NhbGUke1NPTElCU30iCisKKyMgZmZtcGVnIGRpc2FibGVzIFBJQyBvbiBzb21lIHBsYXRmb3JtcyAoZS5nLiB4ODYtMzIpCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2Y29kZWMgPSAidGV4dHJlbCIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZkZXZpY2UgPSAidGV4dHJlbCIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZmaWx0ZXIgPSAidGV4dHJlbCIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZmb3JtYXQgPSAidGV4dHJlbCIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZ1dGlsID0gInRleHRyZWwiCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2cmVzYW1wbGUgPSAidGV4dHJlbCIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGlic3dzY2FsZSA9ICJ0ZXh0cmVsIgorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJzd3Jlc2FtcGxlID0gInRleHRyZWwiCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYnBvc3Rwcm9jID0gInRleHRyZWwiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1wbGF5ZXIvMDAwMS1ndGstcGxheS1EaXNhYmxlLXZpc3VhbGl6YXRpb25zLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtcGxheWVyLzAwMDEtZ3RrLXBsYXktRGlzYWJsZS12aXN1YWxpemF0aW9ucy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWE4ODEyMC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1wbGF5ZXIvMDAwMS1ndGstcGxheS1EaXNhYmxlLXZpc3VhbGl6YXRpb25zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotRnJvbSA2Y2Y0MmM0NjhlOTNiMGFhYTE3MTk2MWUwNTliYzNlMmZiOTE1ODg5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLURhdGU6IEZyaSwgMjggQXByIDIwMTcgMTQ6MzU6MTkgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gZ3RrLXBsYXk6IERpc2FibGUgdmlzdWFsaXphdGlvbnMKLQotVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIFtZT0NUTyAjMTE0MTBdIChhdWRpbyBwbGF5YmFjayBpcyBicm9rZW4gaW4KLW1lZGlhcGxheWVyIGlmIHZhYXBpIGlzIHVzZWQpLiBJdCBkaXNhYmxlcyB2aXN1YWxpemF0aW9ucyBhbmQgbWFrZXMKLXN1cmUgd2UgY2xlYXIgdGhlIHdpbmRvdyAob3RoZXJ3aXNlIG5vdGhpbmcgZG9lcyB0aGF0IGFuZCByZXN1bHQgaXMKLXZlcnkgdWdseSkuCi0KLVRoaXMgcGF0Y2ggc2hvdWxkIGJlIHJlbW92ZWQgd2hlbiAxMTQxMCBpcyBmaXhlZC4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtidWcgd29ya2Fyb3VuZF0KLVNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci0tLS0KLSBndGsvZ3RrLXBsYXkuYyB8IDEzICsrKysrKysrKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZ3RrL2d0ay1wbGF5LmMgYi9ndGsvZ3RrLXBsYXkuYwotaW5kZXggOGFlMGZlYS4uNjNiOWJiMCAxMDA2NDQKLS0tLSBhL2d0ay9ndGstcGxheS5jCi0rKysgYi9ndGsvZ3RrLXBsYXkuYwotQEAgLTE0MDEsNiArMTQwMSwxNSBAQCBnZXRfY2hpbGRfcG9zaXRpb24gKEd0a092ZXJsYXkgKiBvdmVybGF5LCBHdGtXaWRnZXQgKiB3aWRnZXQsCi0gICByZXR1cm4gVFJVRTsKLSB9Ci0gCi0rLyogSGFjayB0byBtYWtlIHN1cmUgc29tZXRoaW5nIGdldHMgZHJhd24gaWYgdmlzdWFsaXphdGlvbnMgYXJlIGRpc2FibGVkICovCi0rc3RhdGljIGdib29sZWFuCi0rZHJhd19jYiAoR3RrV2lkZ2V0ICp3aWRnZXQsIGNhaXJvX3QgKmNyLCBncG9pbnRlciBkYXRhKQotK3sKLSsgIGNhaXJvX3NldF9zb3VyY2VfcmdiIChjciwgMCwgMCwgMCk7Ci0rICBjYWlyb19wYWludCAoY3IpOwotKyAgcmV0dXJuIEZBTFNFOwotK30KLSsKLSBzdGF0aWMgdm9pZAotIGNyZWF0ZV91aSAoR3RrUGxheSAqIHBsYXkpCi0gewotQEAgLTE0MzEsNiArMTQ0MCw4IEBAIGNyZWF0ZV91aSAoR3RrUGxheSAqIHBsYXkpCi0gICAgIHBsYXktPnZpZGVvX2FyZWEgPSBndGtfZHJhd2luZ19hcmVhX25ldyAoKTsKLSAgICAgZ19zaWduYWxfY29ubmVjdCAocGxheS0+dmlkZW9fYXJlYSwgInJlYWxpemUiLAotICAgICAgICAgR19DQUxMQkFDSyAodmlkZW9fYXJlYV9yZWFsaXplX2NiKSwgcGxheSk7Ci0rICAgIGdfc2lnbmFsX2Nvbm5lY3QgKHBsYXktPnZpZGVvX2FyZWEsICJkcmF3IiwKLSsgICAgICAgIEdfQ0FMTEJBQ0sgKGRyYXdfY2IpLCBOVUxMKTsKLSAgIH0KLSAgIGd0a193aWRnZXRfc2V0X2V2ZW50cyAocGxheS0+dmlkZW9fYXJlYSwgR0RLX0VYUE9TVVJFX01BU0sKLSAgICAgICB8IEdES19MRUFWRV9OT1RJRllfTUFTSwotQEAgLTE3NTMsNyArMTc2NCw3IEBAIGd0a19wbGF5X2NvbnN0cnVjdG9yIChHVHlwZSB0eXBlLCBndWludCBuX2NvbnN0cnVjdF9wYXJhbXMsCi0gCi0gICAvKiBlbmFibGUgdmlzdWFsaXphdGlvbiAoYnkgZGVmYXVsdCBwbGF5YmluIHVzZXMgZ29vbSkgKi8KLSAgIC8qIGlmIHZpc3VhbGl6YXRpb24gaXMgZW5hYmxlZCB0aGVuIHVzZSB0aGUgZmlyc3QgZWxlbWVudCAqLwotLSAgZ3N0X3BsYXllcl9zZXRfdmlzdWFsaXphdGlvbl9lbmFibGVkIChzZWxmLT5wbGF5ZXIsIFRSVUUpOwotKyAgZ3N0X3BsYXllcl9zZXRfdmlzdWFsaXphdGlvbl9lbmFibGVkIChzZWxmLT5wbGF5ZXIsIEZBTFNFKTsKLSAKLSAgIGdfc2lnbmFsX2Nvbm5lY3QgKEdfT0JKRUNUIChzZWxmKSwgInNob3ciLCBHX0NBTExCQUNLIChzaG93X2NiKSwgTlVMTCk7Ci0gCi0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXBsYXllci9BZGQtZXJyb3Itc2lnbmFsLWVtaXNzaW9uLWZvci1taXNzaW5nLXBsdWdpbnMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1wbGF5ZXIvQWRkLWVycm9yLXNpZ25hbC1lbWlzc2lvbi1mb3ItbWlzc2luZy1wbHVnaW5zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MTJkNDZkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXBsYXllci9BZGQtZXJyb3Itc2lnbmFsLWVtaXNzaW9uLWZvci1taXNzaW5nLXBsdWdpbnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNTIgKzAsMCBAQAotRnJvbSBkNjRjN2VkYjY2ZjRhNjRmZjQ5YzQzMDZjZjc3ZmQyNjliNzA3OWFiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLURhdGU6IE1vbiwgMTYgTWFyIDIwMTUgMTM6NDU6MzAgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gQWRkIGVycm9yIHNpZ25hbCBlbWlzc2lvbiBmb3IgbWlzc2luZyBwbHVnaW5zCi0KLUFkZCBhIG1pc3NpbmcgcGx1Z2lucyBlcnJvciBzaWduYWwgdG8gZ3N0LXBsYXllci4gTm90ZSB0aGF0IHRoaXMgZXJyb3IKLWRvZXMgbm90IG5lY2Vzc2FyaWx5IG1lYW4gdGhlIHBsYXliYWNrIGhhcyBjb21wbGV0ZWx5IGZhaWxlZCwgYnV0IGluCi1wcmFjdGljZSB0aGUgdXNlciBleHBlcmllbmNlIHdpbGwgYmUgYmFkICh0aGluaywgZS5nLiBvZiBhIG1wNCBmaWxlCi13aGVyZSBILjI2NCBjb2RlYyBpcyBtaXNzaW5nOiBBQUMgcGxheWJhY2sgc3RpbGwgd29ya3MuLi4pLgotCi1Vc2UgdGhlIHNpZ25hbCBpbiBndGstcGxheSB0byBzaG93IGEgaW5mb2JhciBpZiBwbHVnaW5zIGFyZSBtaXNzaW5nLgotCi1TdWJtaXR0ZWQgdXBzdHJlYW0gYXQgaHR0cHM6Ly9naXRodWIuY29tL3Nkcm9lZ2UvZ3N0LXBsYXllci9wdWxsLzExCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCi1TaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgotLS0tCi0gY29uZmlndXJlLmFjICAgICAgICAgICAgICAgfCAgMiArLQotIGd0ay9ndGstcGxheS5jICAgICAgICAgICAgIHwgNTQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQotIGxpYi9nc3QvcGxheWVyL2dzdHBsYXllci5jIHwgMjIgKysrKysrKysrKysrKysrKysrKwotIGxpYi9nc3QvcGxheWVyL2dzdHBsYXllci5oIHwgIDMgKystCi0gNCBmaWxlcyBjaGFuZ2VkLCA3OCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA5MGFiNzRjLi42Y2RiNGViIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC01Myw3ICs1Myw3IEBAIEFDX1NVQlNUKExUX0FHRSkKLSBQS0dfUFJPR19QS0dfQ09ORklHCi0gCi0gUEtHX0NIRUNLX01PRFVMRVMoR0xJQiwgW2dsaWItMi4wIGdvYmplY3QtMi4wXSkKLS1QS0dfQ0hFQ0tfTU9EVUxFUyhHU1RSRUFNRVIsIFtnc3RyZWFtZXItMS4wID49IDEuNCBnc3RyZWFtZXItdmlkZW8tMS4wID49IDEuNF0pCi0rUEtHX0NIRUNLX01PRFVMRVMoR1NUUkVBTUVSLCBbZ3N0cmVhbWVyLTEuMCA+PSAxLjQgZ3N0cmVhbWVyLXZpZGVvLTEuMCA+PSAxLjQgZ3N0cmVhbWVyLXBidXRpbHMtMS4wXSkKLSAKLSBHTElCX1BSRUZJWD0iYCRQS0dfQ09ORklHIC0tdmFyaWFibGU9cHJlZml4IGdsaWItMi4wYCIKLSBBQ19TVUJTVChHTElCX1BSRUZJWCkKLWRpZmYgLS1naXQgYS9ndGsvZ3RrLXBsYXkuYyBiL2d0ay9ndGstcGxheS5jCi1pbmRleCBiOTI3NzNiLi5lMmI2MDVhIDEwMDY0NAotLS0tIGEvZ3RrL2d0ay1wbGF5LmMKLSsrKyBiL2d0ay9ndGstcGxheS5jCi1AQCAtMzAsNiArMzAsOCBAQCB0eXBlZGVmIHN0cnVjdAotICAgR3RrV2lkZ2V0ICpwcmV2X2J1dHRvbiwgKm5leHRfYnV0dG9uOwotICAgR3RrV2lkZ2V0ICpzZWVrYmFyOwotICAgR3RrV2lkZ2V0ICp2aWRlb19hcmVhOwotKyAgR3RrV2lkZ2V0ICppbmZvX2xhYmVsOwotKyAgR3RrV2lkZ2V0ICppbmZvX2JhcjsKLSAgIEd0a1dpZGdldCAqdm9sdW1lX2J1dHRvbjsKLSAgIGd1bG9uZyBzZWVrYmFyX3ZhbHVlX2NoYW5nZWRfc2lnbmFsX2lkOwotICAgZ2Jvb2xlYW4gcGxheWluZzsKLUBAIC0xNDEsNiArMTQzLDEzIEBAIHBsYXlfcGF1c2VfY2xpY2tlZF9jYiAoR3RrQnV0dG9uICogYnV0dG9uLCBHdGtQbGF5ICogcGxheSkKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLStjbGVhcl9taXNzaW5nX3BsdWdpbnMgKEd0a1BsYXkgKiBwbGF5KQotK3sKLSsgIGd0a19sYWJlbF9zZXRfdGV4dCAoR1RLX0xBQkVMIChwbGF5LT5pbmZvX2xhYmVsKSwgIiIpOwotKyAgZ3RrX3dpZGdldF9oaWRlIChwbGF5LT5pbmZvX2Jhcik7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0gc2tpcF9wcmV2X2NsaWNrZWRfY2IgKEd0a0J1dHRvbiAqIGJ1dHRvbiwgR3RrUGxheSAqIHBsYXkpCi0gewotICAgR0xpc3QgKnByZXY7Ci1AQCAtMTU1LDYgKzE2NCw3IEBAIHNraXBfcHJldl9jbGlja2VkX2NiIChHdGtCdXR0b24gKiBidXR0b24sIEd0a1BsYXkgKiBwbGF5KQotIAotICAgZ3RrX3dpZGdldF9zZXRfc2Vuc2l0aXZlIChwbGF5LT5uZXh0X2J1dHRvbiwgVFJVRSk7Ci0gICBnc3RfcGxheWVyX3NldF91cmkgKHBsYXktPnBsYXllciwgcHJldi0+ZGF0YSk7Ci0rICBjbGVhcl9taXNzaW5nX3BsdWdpbnMgKHBsYXkpOwotICAgZ3N0X3BsYXllcl9wbGF5IChwbGF5LT5wbGF5ZXIpOwotICAgc2V0X3RpdGxlIChwbGF5LCBwcmV2LT5kYXRhKTsKLSAgIGd0a193aWRnZXRfc2V0X3NlbnNpdGl2ZSAocGxheS0+cHJldl9idXR0b24sIGdfbGlzdF9wcmV2aW91cyAocHJldikgIT0gTlVMTCk7Ci1AQCAtMTc1LDYgKzE4NSw3IEBAIHNraXBfbmV4dF9jbGlja2VkX2NiIChHdGtCdXR0b24gKiBidXR0b24sIEd0a1BsYXkgKiBwbGF5KQotIAotICAgZ3RrX3dpZGdldF9zZXRfc2Vuc2l0aXZlIChwbGF5LT5wcmV2X2J1dHRvbiwgVFJVRSk7Ci0gICBnc3RfcGxheWVyX3NldF91cmkgKHBsYXktPnBsYXllciwgbmV4dC0+ZGF0YSk7Ci0rICBjbGVhcl9taXNzaW5nX3BsdWdpbnMgKHBsYXkpOwotICAgZ3N0X3BsYXllcl9wbGF5IChwbGF5LT5wbGF5ZXIpOwotICAgc2V0X3RpdGxlIChwbGF5LCBuZXh0LT5kYXRhKTsKLSAgIGd0a193aWRnZXRfc2V0X3NlbnNpdGl2ZSAocGxheS0+bmV4dF9idXR0b24sIGdfbGlzdF9uZXh0IChuZXh0KSAhPSBOVUxMKTsKLUBAIC0xOTMsMTAgKzIwNCwxNiBAQCB2b2x1bWVfY2hhbmdlZF9jYiAoR3RrU2NhbGVCdXR0b24gKiBidXR0b24sIGdkb3VibGUgdmFsdWUsIEd0a1BsYXkgKiBwbGF5KQotICAgZ3N0X3BsYXllcl9zZXRfdm9sdW1lIChwbGF5LT5wbGF5ZXIsIHZhbHVlKTsKLSB9Ci0gCi0rdm9pZAotK2luZm9fYmFyX3Jlc3BvbnNlX2NiIChHdGtJbmZvQmFyICogYmFyLCBnaW50IHJlc3BvbnNlLCBHdGtQbGF5ICogcGxheSkKLSt7Ci0rICBndGtfd2lkZ2V0X2hpZGUgKEdUS19XSURHRVQgKGJhcikpOwotK30KLSsKLSBzdGF0aWMgdm9pZAotIGNyZWF0ZV91aSAoR3RrUGxheSAqIHBsYXkpCi0gewotLSAgR3RrV2lkZ2V0ICpjb250cm9scywgKm1haW5faGJveCwgKm1haW5fdmJveDsKLSsgIEd0a1dpZGdldCAqY29udHJvbHMsICptYWluX2hib3gsICptYWluX3Zib3gsICppbmZvX2JhciwgKmNvbnRlbnRfYXJlYTsKLSAKLSAgIHBsYXktPndpbmRvdyA9IGd0a193aW5kb3dfbmV3IChHVEtfV0lORE9XX1RPUExFVkVMKTsKLSAgIGdfc2lnbmFsX2Nvbm5lY3QgKEdfT0JKRUNUIChwbGF5LT53aW5kb3cpLCAiZGVsZXRlLWV2ZW50IiwKLUBAIC0yMDgsNiArMjI1LDIwIEBAIGNyZWF0ZV91aSAoR3RrUGxheSAqIHBsYXkpCi0gICBnX3NpZ25hbF9jb25uZWN0IChwbGF5LT52aWRlb19hcmVhLCAicmVhbGl6ZSIsCi0gICAgICAgR19DQUxMQkFDSyAodmlkZW9fYXJlYV9yZWFsaXplX2NiKSwgcGxheSk7Ci0gCi0rICBwbGF5LT5pbmZvX2JhciA9IGd0a19pbmZvX2Jhcl9uZXcgKCk7Ci0rICBndGtfaW5mb19iYXJfc2V0X21lc3NhZ2VfdHlwZSAoR1RLX0lORk9fQkFSIChwbGF5LT5pbmZvX2JhciksCi0rICAgICAgR1RLX01FU1NBR0VfV0FSTklORyk7Ci0rICAvL2d0a19pbmZvX2Jhcl9zZXRfc2hvd19jbG9zZV9idXR0b24gKEdUS19JTkZPX0JBUiAocGxheS0+aW5mb19iYXIpLAotKyAgLy8gICAgVFJVRSk7Ci0rICBndGtfd2lkZ2V0X3NldF9ub19zaG93X2FsbCAocGxheS0+aW5mb19iYXIsIFRSVUUpOwotKyAgZ19zaWduYWxfY29ubmVjdCAocGxheS0+aW5mb19iYXIsICJyZXNwb25zZSIsCi0rICAgICAgR19DQUxMQkFDSyAoaW5mb19iYXJfcmVzcG9uc2VfY2IpLCBwbGF5KTsKLSsKLSsgIGNvbnRlbnRfYXJlYSA9IGd0a19pbmZvX2Jhcl9nZXRfY29udGVudF9hcmVhIChHVEtfSU5GT19CQVIgKHBsYXktPmluZm9fYmFyKSk7Ci0rICBwbGF5LT5pbmZvX2xhYmVsID0gZ3RrX2xhYmVsX25ldyAoIiIpOwotKyAgZ3RrX2NvbnRhaW5lcl9hZGQgKEdUS19DT05UQUlORVIgKGNvbnRlbnRfYXJlYSksIHBsYXktPmluZm9fbGFiZWwpOwotKyAgZ3RrX3dpZGdldF9zaG93IChwbGF5LT5pbmZvX2xhYmVsKTsKLSsKLSAgIC8qIFVuaWZpZWQgcGxheS9wYXVzZSBidXR0b24gKi8KLSAgIHBsYXktPnBsYXlfcGF1c2VfYnV0dG9uID0KLSAgICAgICBndGtfYnV0dG9uX25ld19mcm9tX2ljb25fbmFtZSAoIm1lZGlhLXBsYXliYWNrLXBhdXNlIiwKLUBAIC0yNTgsNiArMjg5LDcgQEAgY3JlYXRlX3VpIChHdGtQbGF5ICogcGxheSkKLSAKLSAgIG1haW5fdmJveCA9IGd0a19ib3hfbmV3IChHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIDApOwotICAgZ3RrX2JveF9wYWNrX3N0YXJ0IChHVEtfQk9YIChtYWluX3Zib3gpLCBtYWluX2hib3gsIFRSVUUsIFRSVUUsIDApOwotKyAgZ3RrX2JveF9wYWNrX3N0YXJ0IChHVEtfQk9YIChtYWluX3Zib3gpLCBwbGF5LT5pbmZvX2JhciwgRkFMU0UsIEZBTFNFLCAwKTsKLSAgIGd0a19ib3hfcGFja19zdGFydCAoR1RLX0JPWCAobWFpbl92Ym94KSwgY29udHJvbHMsIEZBTFNFLCBGQUxTRSwgMCk7Ci0gICBndGtfY29udGFpbmVyX2FkZCAoR1RLX0NPTlRBSU5FUiAocGxheS0+d2luZG93KSwgbWFpbl92Ym94KTsKLSAKLUBAIC0zMjIsNiArMzU0LDcgQEAgZW9zX2NiIChHc3RQbGF5ZXIgKiB1bnVzZWQsIEd0a1BsYXkgKiBwbGF5KQotICAgICAgIGd0a193aWRnZXRfc2V0X3NlbnNpdGl2ZSAocGxheS0+bmV4dF9idXR0b24sIGdfbGlzdF9uZXh0IChuZXh0KSAhPSBOVUxMKTsKLSAKLSAgICAgICBnc3RfcGxheWVyX3NldF91cmkgKHBsYXktPnBsYXllciwgbmV4dC0+ZGF0YSk7Ci0rICAgICAgY2xlYXJfbWlzc2luZ19wbHVnaW5zIChwbGF5KTsKLSAgICAgICBnc3RfcGxheWVyX3BsYXkgKHBsYXktPnBsYXllcik7Ci0gICAgICAgc2V0X3RpdGxlIChwbGF5LCBuZXh0LT5kYXRhKTsKLSAgICAgfSBlbHNlIHsKLUBAIC0zMzAsNiArMzYzLDI0IEBAIGVvc19jYiAoR3N0UGxheWVyICogdW51c2VkLCBHdGtQbGF5ICogcGxheSkKLSAgIH0KLSB9Ci0gCi0rc3RhdGljIHZvaWQKLStlcnJvcl9jYiAoR3N0UGxheWVyICogcGxheWVyLCBHRXJyb3IgKiBlcnIsIEd0a1BsYXkgKiBwbGF5KQotK3sKLSsgIGNoYXIgKm1lc3NhZ2U7Ci0rCi0rICBpZiAoZ19lcnJvcl9tYXRjaGVzIChlcnIsIGdzdF9wbGF5ZXJfZXJyb3JfcXVhcmsgKCksCi0rICAgICAgR1NUX1BMQVlFUl9FUlJPUl9NSVNTSU5HX1BMVUdJTikpIHsKLSsgICAgLy8gYWRkIG1lc3NhZ2UgdG8gZW5kIG9mIGFueSBleGlzdGluZyBtZXNzYWdlOiB0aGVyZSBtYXkgYmUKLSsgICAgLy8gbXVsdGlwbGUgbWlzc2luZyBwbHVnaW5zLgotKyAgICBtZXNzYWdlID0gZ19zdHJkdXBfcHJpbnRmICgiJXMlcy4gIiwKLSsgICAgICAgIGd0a19sYWJlbF9nZXRfdGV4dCAoR1RLX0xBQkVMIChwbGF5LT5pbmZvX2xhYmVsKSksIGVyci0+bWVzc2FnZSk7Ci0rICAgIGd0a19sYWJlbF9zZXRfdGV4dCAoR1RLX0xBQkVMIChwbGF5LT5pbmZvX2xhYmVsKSwgbWVzc2FnZSk7Ci0rICAgIGdfZnJlZSAobWVzc2FnZSk7Ci0rCi0rICAgIGd0a193aWRnZXRfc2hvdyAocGxheS0+aW5mb19iYXIpOwotKyAgfQotK30KLSsKLSBpbnQKLSBtYWluIChnaW50IGFyZ2MsIGdjaGFyICoqIGFyZ3YpCi0gewotQEAgLTQyMiw2ICs0NzMsNyBAQCBtYWluIChnaW50IGFyZ2MsIGdjaGFyICoqIGFyZ3YpCi0gICBnX3NpZ25hbF9jb25uZWN0IChwbGF5LnBsYXllciwgInZpZGVvLWRpbWVuc2lvbnMtY2hhbmdlZCIsCi0gICAgICAgR19DQUxMQkFDSyAodmlkZW9fZGltZW5zaW9uc19jaGFuZ2VkX2NiKSwgJnBsYXkpOwotICAgZ19zaWduYWxfY29ubmVjdCAocGxheS5wbGF5ZXIsICJlbmQtb2Ytc3RyZWFtIiwgR19DQUxMQkFDSyAoZW9zX2NiKSwgJnBsYXkpOwotKyAgZ19zaWduYWxfY29ubmVjdCAocGxheS5wbGF5ZXIsICJlcnJvciIsIEdfQ0FMTEJBQ0sgKGVycm9yX2NiKSwgJnBsYXkpOwotIAotICAgLyogV2UgaGF2ZSBmaWxlKHMpIHRoYXQgbmVlZCBwbGF5aW5nLiAqLwotICAgc2V0X3RpdGxlICgmcGxheSwgZ19saXN0X2ZpcnN0IChwbGF5LnVyaXMpLT5kYXRhKTsKLWRpZmYgLS1naXQgYS9saWIvZ3N0L3BsYXllci9nc3RwbGF5ZXIuYyBiL2xpYi9nc3QvcGxheWVyL2dzdHBsYXllci5jCi1pbmRleCBiZDY4MmQ5Li43OGU3YmExIDEwMDY0NAotLS0tIGEvbGliL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLmMKLSsrKyBiL2xpYi9nc3QvcGxheWVyL2dzdHBsYXllci5jCi1AQCAtNDcsNiArNDcsNyBAQAotIAotICNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0gI2luY2x1ZGUgPGdzdC92aWRlby92aWRlby5oPgotKyNpbmNsdWRlIDxnc3QvcGJ1dGlscy9taXNzaW5nLXBsdWdpbnMuaD4KLSAKLSBHU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIChnc3RfcGxheWVyX2RlYnVnKTsKLSAjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCBnc3RfcGxheWVyX2RlYnVnCi1AQCAtMjM4LDYgKzIzOSw3IEBAIGdzdF9wbGF5ZXJfY2xhc3NfaW5pdCAoR3N0UGxheWVyQ2xhc3MgKiBrbGFzcykKLSAgICAgICBnX3NpZ25hbF9uZXcgKCJ2aWRlby1kaW1lbnNpb25zLWNoYW5nZWQiLCBHX1RZUEVfRlJPTV9DTEFTUyAoa2xhc3MpLAotICAgICAgIEdfU0lHTkFMX1JVTl9MQVNUIHwgR19TSUdOQUxfTk9fUkVDVVJTRSB8IEdfU0lHTkFMX05PX0hPT0tTLCAwLCBOVUxMLAotICAgICAgIE5VTEwsIE5VTEwsIEdfVFlQRV9OT05FLCAyLCBHX1RZUEVfSU5ULCBHX1RZUEVfSU5UKTsKLSsKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLUBAIC02MTksNiArNjIxLDIxIEBAIGVycm9yX2NiIChHc3RCdXMgKiBidXMsIEdzdE1lc3NhZ2UgKiBtc2csIGdwb2ludGVyIHVzZXJfZGF0YSkKLSAgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+cHJpdi0+bG9jayk7Ci0gfQotIAotK3N0YXRpYyB2b2lkCi0rZWxlbWVudF9jYiAoR3N0QnVzICogYnVzLCBHc3RNZXNzYWdlICogbXNnLCBncG9pbnRlciB1c2VyX2RhdGEpCi0rewotKyAgR3N0UGxheWVyICpzZWxmID0gR1NUX1BMQVlFUiAodXNlcl9kYXRhKTsKLSsKLSsgIGlmIChnc3RfaXNfbWlzc2luZ19wbHVnaW5fbWVzc2FnZSAobXNnKSkgewotKyAgICBnY2hhciAqZGVzYzsKLSsKLSsgICAgZGVzYyA9IGdzdF9taXNzaW5nX3BsdWdpbl9tZXNzYWdlX2dldF9kZXNjcmlwdGlvbiAobXNnKTsKLSsgICAgZW1pdF9lcnJvciAoc2VsZiwgZ19lcnJvcl9uZXcgKEdTVF9QTEFZRVJfRVJST1IsCi0rICAgICAgICBHU1RfUExBWUVSX0VSUk9SX01JU1NJTkdfUExVR0lOLCAiTWlzc2luZyBwbHVnaW4gJyVzJyIsIGRlc2MpKTsKLSsgICAgZ19mcmVlIChkZXNjKTsKLSsgIH0KLSt9Ci0rCi0gc3RhdGljIGdib29sZWFuCi0gZW9zX2Rpc3BhdGNoIChncG9pbnRlciB1c2VyX2RhdGEpCi0gewotQEAgLTEwNTksNiArMTA3Niw4IEBAIGdzdF9wbGF5ZXJfbWFpbiAoZ3BvaW50ZXIgZGF0YSkKLSAgICAgICBOVUxMLCBOVUxMKTsKLSAgIGdfc291cmNlX2F0dGFjaCAoYnVzX3NvdXJjZSwgc2VsZi0+cHJpdi0+Y29udGV4dCk7Ci0gCi0rICBnX3NpZ25hbF9jb25uZWN0IChHX09CSkVDVCAoYnVzKSwgIm1lc3NhZ2U6OmVsZW1lbnQiLAotKyAgICAgIEdfQ0FMTEJBQ0sgKGVsZW1lbnRfY2IpLCBzZWxmKTsKLSAgIGdfc2lnbmFsX2Nvbm5lY3QgKEdfT0JKRUNUIChidXMpLCAibWVzc2FnZTo6ZXJyb3IiLCBHX0NBTExCQUNLIChlcnJvcl9jYiksCi0gICAgICAgc2VsZik7Ci0gICBnX3NpZ25hbF9jb25uZWN0IChHX09CSkVDVCAoYnVzKSwgIm1lc3NhZ2U6OmVvcyIsIEdfQ0FMTEJBQ0sgKGVvc19jYiksIHNlbGYpOwotQEAgLTE1NjAsNiArMTU3OSw3IEBAIGdzdF9wbGF5ZXJfZXJyb3JfZ2V0X3R5cGUgKHZvaWQpCi0gICBzdGF0aWMgZ3NpemUgaWQgPSAwOwotICAgc3RhdGljIGNvbnN0IEdFbnVtVmFsdWUgdmFsdWVzW10gPSB7Ci0gICAgIHtDX0VOVU0gKEdTVF9QTEFZRVJfRVJST1JfRkFJTEVEKSwgIkdTVF9QTEFZRVJfRVJST1JfRkFJTEVEIiwgImZhaWxlZCJ9LAotKyAgICB7Q19FTlVNIChHU1RfUExBWUVSX0VSUk9SX01JU1NJTkdfUExVR0lOKSwgIkdTVF9QTEFZRVJfRVJST1JfTUlTU0lOR19QTFVHSU4iLCAibWlzc2luZy1wbHVnaW4ifSwKLSAgICAgezAsIE5VTEwsIE5VTEx9Ci0gICB9OwotIAotQEAgLTE1NzcsNiArMTU5Nyw4IEBAIGdzdF9wbGF5ZXJfZXJyb3JfZ2V0X25hbWUgKEdzdFBsYXllckVycm9yIGVycm9yKQotICAgc3dpdGNoIChlcnJvcikgewotICAgICBjYXNlIEdTVF9QTEFZRVJfRVJST1JfRkFJTEVEOgotICAgICAgIHJldHVybiAiZmFpbGVkIjsKLSsgICAgY2FzZSBHU1RfUExBWUVSX0VSUk9SX01JU1NJTkdfUExVR0lOOgotKyAgICAgIHJldHVybiAibWlzc2luZy1wbHVnaW4iOwotICAgfQotIAotICAgZ19hc3NlcnRfbm90X3JlYWNoZWQgKCk7Ci1kaWZmIC0tZ2l0IGEvbGliL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLmggYi9saWIvZ3N0L3BsYXllci9nc3RwbGF5ZXIuaAotaW5kZXggYzQzODUxMy4uMzVmYjViYiAxMDA2NDQKLS0tLSBhL2xpYi9nc3QvcGxheWVyL2dzdHBsYXllci5oCi0rKysgYi9saWIvZ3N0L3BsYXllci9nc3RwbGF5ZXIuaAotQEAgLTQ0LDcgKzQ0LDggQEAgR1R5cGUgICAgICAgIGdzdF9wbGF5ZXJfZXJyb3JfZ2V0X3R5cGUgICAgICAgICAgICAgICAgKHZvaWQpOwotICNkZWZpbmUgICAgICBHU1RfVFlQRV9QTEFZRVJfRVJST1IgICAgICAgICAgICAgICAgICAgIChnc3RfcGxheWVyX2Vycm9yX2dldF90eXBlICgpKQotIAotIHR5cGVkZWYgZW51bSB7Ci0tICBHU1RfUExBWUVSX0VSUk9SX0ZBSUxFRCA9IDAKLSsgIEdTVF9QTEFZRVJfRVJST1JfRkFJTEVEID0gMCwKLSsgIEdTVF9QTEFZRVJfRVJST1JfTUlTU0lOR19QTFVHSU4KLSB9IEdzdFBsYXllckVycm9yOwotIAotIGNvbnN0IGdjaGFyICpnc3RfcGxheWVyX2Vycm9yX2dldF9uYW1lICAgICAgICAgICAgICAgIChHc3RQbGF5ZXJFcnJvciBlcnJvcik7Ci0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXBsYXllci9GaXgtcGF1c2UtcGxheS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXBsYXllci9GaXgtcGF1c2UtcGxheS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzgzYzQyYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1wbGF5ZXIvRml4LXBhdXNlLXBsYXkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDcgKzAsMCBAQAotRml4IHBhdXNlL3BsYXkKLQotVGhlIGN1cnJlbnQgcGxheWVyIHN0YXRlIGlzIG5vdyBub3RpZmllZCB2aWEgdGhlIHN0YXRlLWNoYW5nZWQgc2lnbmFsLAotYW5kIGluIHRoZSBHVEsgVUkgaXQgd2FzIG9ubHkgdXNlZCB0byBrZWVwIHRyYWNrIG9mIHRoZSBkZXNpcmVkIHN0YXRlLgotCi1UaGlzIGlzIGEgYmFja3BvcnQgb2YgdXBzdHJlYW0gY29tbWl0IDczODQ3OWM3YTAuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci0KLS0tLQotIGd0ay9ndGstcGxheS5jICAgICAgICAgICAgIHwgIDggKysrKysrLS0KLSBsaWIvZ3N0L3BsYXllci9nc3RwbGF5ZXIuYyB8IDEyIC0tLS0tLS0tLS0tLQotIGxpYi9nc3QvcGxheWVyL2dzdHBsYXllci5oIHwgIDIgLS0KLSAzIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9ndGsvZ3RrLXBsYXkuYyBiL2d0ay9ndGstcGxheS5jCi1pbmRleCA2ZTdhMDk4Li5lMmI2MDVhIDEwMDY0NAotLS0tIGEvZ3RrL2d0ay1wbGF5LmMKLSsrKyBiL2d0ay9ndGstcGxheS5jCi1AQCAtMzQsNiArMzQsNyBAQCB0eXBlZGVmIHN0cnVjdAotICAgR3RrV2lkZ2V0ICppbmZvX2JhcjsKLSAgIEd0a1dpZGdldCAqdm9sdW1lX2J1dHRvbjsKLSAgIGd1bG9uZyBzZWVrYmFyX3ZhbHVlX2NoYW5nZWRfc2lnbmFsX2lkOwotKyAgZ2Jvb2xlYW4gcGxheWluZzsKLSB9IEd0a1BsYXk7Ci0gCi0gLyogQ29tcGF0IHN0dWJzICovCi1AQCAtMTE4LDEyICsxMTksMTMgQEAgcGxheV9wYXVzZV9jbGlja2VkX2NiIChHdGtCdXR0b24gKiBidXR0b24sIEd0a1BsYXkgKiBwbGF5KQotIHsKLSAgIEd0a1dpZGdldCAqaW1hZ2U7Ci0gCi0tICBpZiAoZ3N0X3BsYXllcl9pc19wbGF5aW5nIChwbGF5LT5wbGF5ZXIpKSB7Ci0rICBpZiAocGxheS0+cGxheWluZykgewotICAgICBnc3RfcGxheWVyX3BhdXNlIChwbGF5LT5wbGF5ZXIpOwotICAgICBpbWFnZSA9Ci0gICAgICAgICBndGtfaW1hZ2VfbmV3X2Zyb21faWNvbl9uYW1lICgibWVkaWEtcGxheWJhY2stc3RhcnQiLAotICAgICAgICAgR1RLX0lDT05fU0laRV9CVVRUT04pOwotICAgICBndGtfYnV0dG9uX3NldF9pbWFnZSAoR1RLX0JVVFRPTiAocGxheS0+cGxheV9wYXVzZV9idXR0b24pLCBpbWFnZSk7Ci0rICAgIHBsYXktPnBsYXlpbmcgPSBGQUxTRTsKLSAgIH0gZWxzZSB7Ci0gICAgIGdjaGFyICp0aXRsZTsKLSAKLUBAIC0xMzYsNiArMTM4LDcgQEAgcGxheV9wYXVzZV9jbGlja2VkX2NiIChHdGtCdXR0b24gKiBidXR0b24sIEd0a1BsYXkgKiBwbGF5KQotICAgICB0aXRsZSA9IGdzdF9wbGF5ZXJfZ2V0X3VyaSAocGxheS0+cGxheWVyKTsKLSAgICAgc2V0X3RpdGxlIChwbGF5LCB0aXRsZSk7Ci0gICAgIGdfZnJlZSAodGl0bGUpOwotKyAgICBwbGF5LT5wbGF5aW5nID0gVFJVRTsKLSAgIH0KLSB9Ci0gCi1AQCAtMzM1LDcgKzMzOCw3IEBAIHZpZGVvX2RpbWVuc2lvbnNfY2hhbmdlZF9jYiAoR3N0UGxheWVyICogdW51c2VkLCBnaW50IHdpZHRoLCBnaW50IGhlaWdodCwKLSBzdGF0aWMgdm9pZAotIGVvc19jYiAoR3N0UGxheWVyICogdW51c2VkLCBHdGtQbGF5ICogcGxheSkKLSB7Ci0tICBpZiAoZ3N0X3BsYXllcl9pc19wbGF5aW5nIChwbGF5LT5wbGF5ZXIpKSB7Ci0rICBpZiAocGxheS0+cGxheWluZykgewotICAgICBHTGlzdCAqbmV4dCA9IE5VTEw7Ci0gICAgIGdjaGFyICp1cmk7Ci0gCi1AQCAtNDUyLDYgKzQ1NSw3IEBAIG1haW4gKGdpbnQgYXJnYywgZ2NoYXIgKiogYXJndikKLSAgIH0KLSAKLSAgIHBsYXkucGxheWVyID0gZ3N0X3BsYXllcl9uZXcgKCk7Ci0rICBwbGF5LnBsYXlpbmcgPSBUUlVFOwotIAotICAgZ19vYmplY3Rfc2V0IChwbGF5LnBsYXllciwgImRpc3BhdGNoLXRvLW1haW4tY29udGV4dCIsIFRSVUUsIE5VTEwpOwotIAotZGlmZiAtLWdpdCBhL2xpYi9nc3QvcGxheWVyL2dzdHBsYXllci5jIGIvbGliL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLmMKLWluZGV4IDA2OWIyODQuLjc4ZTdiYTEgMTAwNjQ0Ci0tLS0gYS9saWIvZ3N0L3BsYXllci9nc3RwbGF5ZXIuYwotKysrIGIvbGliL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLmMKLUBAIC0xNDIyLDE4ICsxNDIyLDYgQEAgZ3N0X3BsYXllcl9zZXRfdXJpIChHc3RQbGF5ZXIgKiBzZWxmLCBjb25zdCBnY2hhciAqIHZhbCkKLSAgIGdfb2JqZWN0X3NldCAoc2VsZiwgInVyaSIsIHZhbCwgTlVMTCk7Ci0gfQotIAotLWdib29sZWFuCi0tZ3N0X3BsYXllcl9pc19wbGF5aW5nIChHc3RQbGF5ZXIgKiBzZWxmKQotLXsKLS0gIGdib29sZWFuIHZhbDsKLS0KLS0gIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfUExBWUVSIChzZWxmKSwgRkFMU0UpOwotLQotLSAgZ19vYmplY3RfZ2V0IChzZWxmLCAiaXMtcGxheWluZyIsICZ2YWwsIE5VTEwpOwotLQotLSAgcmV0dXJuIHZhbDsKLS19Ci0tCi0gR3N0Q2xvY2tUaW1lCi0gZ3N0X3BsYXllcl9nZXRfcG9zaXRpb24gKEdzdFBsYXllciAqIHNlbGYpCi0gewotZGlmZiAtLWdpdCBhL2xpYi9nc3QvcGxheWVyL2dzdHBsYXllci5oIGIvbGliL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLmgKLWluZGV4IDY5MzNkZDcuLjM1ZmI1YmIgMTAwNjQ0Ci0tLS0gYS9saWIvZ3N0L3BsYXllci9nc3RwbGF5ZXIuaAotKysrIGIvbGliL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLmgKLUBAIC05Myw4ICs5Myw2IEBAIGdjaGFyICogICAgICBnc3RfcGxheWVyX2dldF91cmkgICAgICAgICAgICAgICAgICAgICAgIChHc3RQbGF5ZXIgICAgKiBwbGF5ZXIpOwotIHZvaWQgICAgICAgICBnc3RfcGxheWVyX3NldF91cmkgICAgICAgICAgICAgICAgICAgICAgIChHc3RQbGF5ZXIgICAgKiBwbGF5ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAqIHVyaSk7Ci0gCi0tZ2Jvb2xlYW4gICAgIGdzdF9wbGF5ZXJfaXNfcGxheWluZyAgICAgICAgICAgICAgICAgICAgKEdzdFBsYXllciAgICAqIHBsYXllcik7Ci0tCi0gR3N0Q2xvY2tUaW1lIGdzdF9wbGF5ZXJfZ2V0X3Bvc2l0aW9uICAgICAgICAgICAgICAgICAgKEdzdFBsYXllciAgICAqIHBsYXllcik7Ci0gR3N0Q2xvY2tUaW1lIGdzdF9wbGF5ZXJfZ2V0X2R1cmF0aW9uICAgICAgICAgICAgICAgICAgKEdzdFBsYXllciAgICAqIHBsYXllcik7Ci0gCi0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXBsYXllci9maWxlY2hvb3Nlci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXBsYXllci9maWxlY2hvb3Nlci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2JmMWIwMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1wbGF5ZXIvZmlsZWNob29zZXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotRnJvbSA0M2Q0YjE5YWI2MTFkODQ0MTU2ZTI2YzQ4NDBjYzU0ZGRiNzNhZTAzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLURhdGU6IFRodSwgMjYgRmViIDIwMTUgMTc6MTc6MDUgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gZ3RrLXBsYXk6IHNob3cgYSBmaWxlIGNob29zZXIgaWYgbm8gVVJJcyB3ZXJlIHBhc3NlZAotCi0tLS0KLSBndGsvZ3RrLXBsYXkuYyB8ICAgMjggKysrKysrKysrKysrKysrKysrKysrKysrKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyNiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ3RrL2d0ay1wbGF5LmMgYi9ndGsvZ3RrLXBsYXkuYwotaW5kZXggZjAxNTA3Ny4uOTc2NmE3MiAxMDA2NDQKLS0tLSBhL2d0ay9ndGstcGxheS5jCi0rKysgYi9ndGsvZ3RrLXBsYXkuYwotQEAgLTMxOSw4ICszMTksMzIgQEAgbWFpbiAoZ2ludCBhcmdjLCBnY2hhciAqKiBhcmd2KQotICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBwbGF5bGlzdHMgYW5kIHN0dWZmCi0gICAvKiBQYXJzZSB0aGUgbGlzdCBvZiB0aGUgZmlsZSBuYW1lcyB3ZSBoYXZlIHRvIHBsYXkuICovCi0gICBpZiAoIWZpbGVfbmFtZXMpIHsKLS0gICAgZ19wcmludCAoIlVzYWdlOiAlcyBGSUxFKHMpfFVSSShzKVxuIiwgQVBQX05BTUUpOwotLSAgICByZXR1cm4gMTsKLSsgICAgR3RrV2lkZ2V0ICpjaG9vc2VyOwotKyAgICBpbnQgcmVzOwotKwotKyAgICBjaG9vc2VyID0gZ3RrX2ZpbGVfY2hvb3Nlcl9kaWFsb2dfbmV3ICgiU2VsZWN0IGZpbGVzIHRvIHBsYXkiLCBOVUxMLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19GSUxFX0NIT09TRVJfQUNUSU9OX09QRU4sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9DYW5jZWwiLCBHVEtfUkVTUE9OU0VfQ0FOQ0VMLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfT3BlbiIsIEdUS19SRVNQT05TRV9BQ0NFUFQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0rICAgIGdfb2JqZWN0X3NldCAoY2hvb3NlciwKLSsgICAgICAgICAgICAgICAgICAibG9jYWwtb25seSIsIEZBTFNFLAotKyAgICAgICAgICAgICAgICAgICJzZWxlY3QtbXVsdGlwbGUiLCBUUlVFLAotKyAgICAgICAgICAgICAgICAgIE5VTEwpOwotKwotKyAgICByZXMgPSBndGtfZGlhbG9nX3J1biAoR1RLX0RJQUxPRyAoY2hvb3NlcikpOwotKyAgICBpZiAocmVzID09IEdUS19SRVNQT05TRV9BQ0NFUFQpIHsKLSsgICAgICBHU0xpc3QgKmw7Ci0rCi0rICAgICAgbCA9IGd0a19maWxlX2Nob29zZXJfZ2V0X3VyaXMgKEdUS19GSUxFX0NIT09TRVIgKGNob29zZXIpKTsKLSsgICAgICB3aGlsZSAobCkgewotKyAgICAgICAgcGxheS51cmlzID0gZ19saXN0X2FwcGVuZCAocGxheS51cmlzLCBsLT5kYXRhKTsKLSsgICAgICAgIGwgPSBnX3NsaXN0X2RlbGV0ZV9saW5rIChsLCBsKTsKLSsgICAgICB9Ci0rICAgIH0gZWxzZSB7Ci0rICAgICAgcmV0dXJuIDA7Ci0rICAgIH0KLSsgICAgZ3RrX3dpZGdldF9kZXN0cm95IChjaG9vc2VyKTsKLSAgIH0gZWxzZSB7Ci0gICAgIGd1aW50IGk7Ci0gCi0tLSAKLTEuNy4xMC40Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXBsYXllcl9naXQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1wbGF5ZXJfZ2l0LmJiCmluZGV4IGNiMTJhNDYuLjRmZThmZGUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXBsYXllcl9naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtcGxheWVyX2dpdC5iYgpAQCAtNSwxNCArNSwxMSBAQAogREVQRU5EUyA9ICJnbGliLTIuMCBnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQgZ3RrKzMgZ2xpYi0yLjAtbmF0aXZlIgogCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vc2Ryb2VnZS9nc3QtcGxheWVyLmdpdCBcCi0gICAgICAgICAgIGZpbGU6Ly9maWxlY2hvb3Nlci5wYXRjaDthcHBseT0wIFwKLSAgICAgICAgICAgZmlsZTovL0ZpeC1wYXVzZS1wbGF5LnBhdGNoO2FwcGx5PTAgXAotICAgICAgICAgICBmaWxlOi8vQWRkLWVycm9yLXNpZ25hbC1lbWlzc2lvbi1mb3ItbWlzc2luZy1wbHVnaW5zLnBhdGNoO2FwcGx5PTAgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1ndGstcGxheS1EaXNhYmxlLXZpc3VhbGl6YXRpb25zLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2dzdC1wbGF5ZXIuZGVza3RvcCIKIAogU1JDUkVWID0gImVlM2MyMjZjODI3NjdhMDg5NzQzZTRlMDYwNTg3NDNlNjdmNzNjZGIiCiBQViA9ICIwLjAuMStnaXQke1NSQ1BWfSIKK1VQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lci12YWFwaS92YWFwaXZpZGVvYnVmZmVycG9vbC1jcmVhdGUtYWxsb2NhdG9yLWlmLW5lZWRlZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyLXZhYXBpL3ZhYXBpdmlkZW9idWZmZXJwb29sLWNyZWF0ZS1hbGxvY2F0b3ItaWYtbmVlZGVkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjY2YWRjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyLXZhYXBpL3ZhYXBpdmlkZW9idWZmZXJwb29sLWNyZWF0ZS1hbGxvY2F0b3ItaWYtbmVlZGVkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2NvbW1pdCA1OWE3MzFiZTZiIGluICcxLjEwJyBicmFuY2hdCi0KLQotRnJvbSAwMmE2MDAyYzNhODBiM2E1MzAxYzA5NDNiMWExNTE4YmJkZjQzOWZjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP1Y9QzM9QURjdG9yPTIwTWFudWVsPTIwSj1DMz1BMXF1ZXo9MjBMZWFsPz0KLSA8dmphcXVlekBpZ2FsaWEuY29tPgotRGF0ZTogRnJpLCAyMSBBcHIgMjAxNyAxOTowNzoxOCArMDIwMAotU3ViamVjdDogW1BBVENIXSB2YWFwaXZpZGVvYnVmZmVycG9vbDogY3JlYXRlIGFsbG9jYXRvciBpZiBuZWVkZWQKLQotQmFja3BvcnQgdG8gYnJhbmNoIDEuMTAKLQotU29tZXRpbWVzIGEgdmlkZW8gZGVjb2RlciBjb3VsZCBzZXQgZGlmZmVyZW50IGJ1ZmZlciBwb29sCi1jb25maWd1cmF0aW9ucywgYmVjYXVzZSB0aGVpciBmcmFtZSBzaXplIGNoYW5nZXMuIEluIHRoaXMgY2FzZSB3ZQotZGlkIG5vdCByZWNvbmZpZ3VyZSB0aGUgYWxsb2NhdG9yLgotCi1UaGlzIHBhdGNoIGVuYWJsZXMgdGhpcyB1c2UgY2FzZSwgY3JlYXRpbmcgYSBuZXcgYWxsb2NhdG9yIGluc2lkZQotdGhlIFZBQVBJIGJ1ZmZlciBwb29sIGlmIHRoZSBjYXBzIGNoYW5nZWQsIGlmIGl0IGlzIG5vdCBkbWFidWYtYmFzZWQuCi1JZiBzbywgaXQgaXMganVzdCByZWNvbmZpZ3VyZWQsIHNpbmNlIGl0IGRvZXNuJ3QgaGF2ZSBhIHN1cmZhY2UgcG9vbC4KLQotaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc4MTU3NwotLS0tCi0gZ3N0L3ZhYXBpL2dzdHZhYXBpdmlkZW9idWZmZXJwb29sLmMgfCAyMSArKysrKysrKysrKysrKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZ3N0L3ZhYXBpL2dzdHZhYXBpdmlkZW9idWZmZXJwb29sLmMgYi9nc3QvdmFhcGkvZ3N0dmFhcGl2aWRlb2J1ZmZlcnBvb2wuYwotaW5kZXggYTNiOTIyM2YuLjlhNTA2MTRiIDEwMDY0NAotLS0tIGEvZ3N0L3ZhYXBpL2dzdHZhYXBpdmlkZW9idWZmZXJwb29sLmMKLSsrKyBiL2dzdC92YWFwaS9nc3R2YWFwaXZpZGVvYnVmZmVycG9vbC5jCi1AQCAtMTU5LDYgKzE1OSwyNyBAQCBnc3RfdmFhcGlfdmlkZW9fYnVmZmVyX3Bvb2xfc2V0X2NvbmZpZyAoR3N0QnVmZmVyUG9vbCAqIHBvb2wsCi0gICAgIGdzdF9vYmplY3RfcmVwbGFjZSAoKEdzdE9iamVjdCAqKikgJiBwcml2LT5hbGxvY2F0b3IsIE5VTEwpOwotICAgcHJpdi0+dmlkZW9faW5mbyA9IG5ld192aXA7Ci0gCi0rICB7Ci0rICAgIGd1aW50IHN1cmZhY2VfYWxsb2NfZmxhZ3M7Ci0rICAgIGdib29sZWFuIHZpbmZvX2NoYW5nZWQgPSBGQUxTRTsKLSsKLSsgICAgaWYgKGFsbG9jYXRvcikgewotKyAgICAgIGNvbnN0IEdzdFZpZGVvSW5mbyAqYWxsb2NfdmluZm8gPQotKyAgICAgICAgICBnc3RfYWxsb2NhdG9yX2dldF92YWFwaV92aWRlb19pbmZvIChhbGxvY2F0b3IsICZzdXJmYWNlX2FsbG9jX2ZsYWdzKTsKLSsgICAgICB2aW5mb19jaGFuZ2VkID0gZ3N0X3ZpZGVvX2luZm9fY2hhbmdlZCAoYWxsb2NfdmluZm8sICZuZXdfdmlwKTsKLSsgICAgfQotKwotKyAgICBpZiAodmluZm9fY2hhbmdlZCAmJiBhbGxvY2F0b3IgJiYgcHJpdi0+dXNlX2RtYWJ1Zl9tZW1vcnkpIHsKLSsgICAgICBnc3RfYWxsb2NhdG9yX3NldF92YWFwaV92aWRlb19pbmZvIChhbGxvY2F0b3IsICZuZXdfdmlwLAotKyAgICAgICAgICBzdXJmYWNlX2FsbG9jX2ZsYWdzKTsKLSsgICAgfSBlbHNlIGlmICghcHJpdi0+dXNlX2RtYWJ1Zl9tZW1vcnkgJiYgKHZpbmZvX2NoYW5nZWQgfHwgIWFsbG9jYXRvcikpIHsKLSsgICAgICAvKiBsZXQncyBkZXN0cm95IHRoZSBvdGhlciBhbGxvY2F0b3IgYW5kIGNyZWF0ZSBhIG5ldyBvbmUgKi8KLSsgICAgICBhbGxvY2F0b3IgPSBnc3RfdmFhcGlfdmlkZW9fYWxsb2NhdG9yX25ldyAocHJpdi0+ZGlzcGxheSwgJm5ld192aXAsCi0rICAgICAgICAgIHN1cmZhY2VfYWxsb2NfZmxhZ3MpOwotKyAgICAgIGdzdF9idWZmZXJfcG9vbF9jb25maWdfc2V0X2FsbG9jYXRvciAoY29uZmlnLCBhbGxvY2F0b3IsIE5VTEwpOwotKyAgICB9Ci0rICB9Ci0rCi0gICBpZiAoIWdzdF9idWZmZXJfcG9vbF9jb25maWdfaGFzX29wdGlvbiAoY29uZmlnLAotICAgICAgICAgICBHU1RfQlVGRkVSX1BPT0xfT1BUSU9OX1ZBQVBJX1ZJREVPX01FVEEpKQotICAgICBnb3RvIGVycm9yX25vX3ZhYXBpX3ZpZGVvX21ldGFfb3B0aW9uOwotLS0gCi0yLjExLjAKLQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdi8wMDAxLWNvbmZpZ3VyZS1jaGVjay1mb3ItYXJtdjd2ZS12YXJpYW50LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXYvMDAwMS1jb25maWd1cmUtY2hlY2stZm9yLWFybXY3dmUtdmFyaWFudC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iODBkMDczCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXYvMDAwMS1jb25maWd1cmUtY2hlY2stZm9yLWFybXY3dmUtdmFyaWFudC5wYXRjaApAQCAtMCwwICsxLDM1IEBACitGcm9tIGFhYzU5MDJkM2M5Y2IzNWM3NzFlNzYwZDBlNDg3NjIyYWEyZTExNmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCAyMCBBcHIgMjAxNyAxMDozODoxOCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBjb25maWd1cmU6IGNoZWNrIGZvciBhcm12N3ZlIHZhcmlhbnQKKworT0UgcGFzc2VzIC1tY3B1IGFuZCAtbWFyY2ggdmlhIGNtZGxpbmUgYW5kIGlmCitwYWNrYWdlIHRyaWVzIHRvIGRldGVjdCBvbmUgb2YgaXQgb3duIHRoZW4gaXQKK3Nob3VsZCBiZSBjb21wYXRpYmxlIG90aGVyd2lzZSwgbmV3ZXIgZ2NjNysgd2lsbAorZXJyb3Igb3V0CisKK0NoZWNrIGZvciByZWxldmFudCBwcmVwcm9jZXNzb3IgbWFjcm8gdG8gZGV0ZXJtaW5lCithcm12N3ZlIGFyY2hpdGVjdHVyZQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdzdC1saWJzL2V4dC9saWJhdi9jb25maWd1cmUgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL2dzdC1saWJzL2V4dC9saWJhdi9jb25maWd1cmUgYi9nc3QtbGlicy9leHQvbGliYXYvY29uZmlndXJlCitpbmRleCA0YTVlNDc3Li43Mjc4MThlIDEwMDc1NQorLS0tIGEvZ3N0LWxpYnMvZXh0L2xpYmF2L2NvbmZpZ3VyZQorKysrIGIvZ3N0LWxpYnMvZXh0L2xpYmF2L2NvbmZpZ3VyZQorQEAgLTQyOTUsNiArNDI5NSw3IEBAIGVsaWYgZW5hYmxlZCBhcm07IHRoZW4KKyAgICAgICAgIGVsaWYgY2hlY2tfYXJtX2FyY2ggNlo7ICAgICAgIHRoZW4gZWNobyBhcm12NnoKKyAgICAgICAgIGVsaWYgY2hlY2tfYXJtX2FyY2ggNlpLOyAgICAgIHRoZW4gZWNobyBhcm12NnprCisgICAgICAgICBlbGlmIGNoZWNrX2FybV9hcmNoIDZUMjsgICAgICB0aGVuIGVjaG8gYXJtdjZ0MgorKyAgICAgICAgZWxpZiBjaGVja19hcm1fYXJjaCBFWFRfSURJVjsgdGhlbiBlY2hvIGFybXY3dmUKKyAgICAgICAgIGVsaWYgY2hlY2tfYXJtX2FyY2ggNzsgICAgICAgIHRoZW4gZWNobyBhcm12NworICAgICAgICAgZWxpZiBjaGVja19hcm1fYXJjaCA3QSAgN19BOyAgdGhlbiBlY2hvIGFybXY3LWEKKyAgICAgICAgIGVsaWYgY2hlY2tfYXJtX2FyY2ggN1M7ICAgICAgIHRoZW4gZWNobyBhcm12Ny1hCistLSAKKzIuMTIuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdi8wMDAxLWhldmNwcmVkX21zYS5jLUZpeC1idWlsZC1ieS1JbmNsdWRpbmctbGliYXZjb2RlYy1oZXYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdi8wMDAxLWhldmNwcmVkX21zYS5jLUZpeC1idWlsZC1ieS1JbmNsdWRpbmctbGliYXZjb2RlYy1oZXYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWZiZmM4NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2LzAwMDEtaGV2Y3ByZWRfbXNhLmMtRml4LWJ1aWxkLWJ5LUluY2x1ZGluZy1saWJhdmNvZGVjLWhldi5wYXRjaApAQCAtMCwwICsxLDMzIEBACitGcm9tIGI1MjI2YzA5NmEwYjcwNDk4NzQ4NThlOTRhNTlkNDNlMTBiYTNmZDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCAyMSBTZXAgMjAxNyAxMDoyMjo1NiAtMDcwMAorU3ViamVjdDogW1BBVENIXSBoZXZjcHJlZF9tc2EuYzogRml4IGJ1aWxkIGJ5IEluY2x1ZGluZyBsaWJhdmNvZGVjL2hldmNkZWMuaAorCitzcmMvbGliYXZjb2RlYy9taXBzL2hldmNwcmVkX21zYS5jOjE5MTM6MzI6IGVycm9yOiB1bmtub3duIHR5cGUgbmFtZSAnSEVWQ0NvbnRleHQnOyBkaWQgeW91IG1lYW4gJ0hFVkNQcmVkQ29udGV4dCc/Cisgdm9pZCBmZl9pbnRyYV9wcmVkXzhfMTZ4MTZfbXNhKEhFVkNDb250ZXh0ICpzLCBpbnQgeDAsIGludCB5MCwgaW50IGNfaWR4KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fn5+fgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIRVZDUHJlZENvbnRleHQKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBnc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9taXBzL2hldmNwcmVkX21zYS5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvbWlwcy9oZXZjcHJlZF9tc2EuYyBiL2dzdC1saWJzL2V4dC9saWJhdi9saWJhdmNvZGVjL21pcHMvaGV2Y3ByZWRfbXNhLmMKK2luZGV4IDZhM2IyODEuLjk2M2M2NGMgMTAwNjQ0CistLS0gYS9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9taXBzL2hldmNwcmVkX21zYS5jCisrKysgYi9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9taXBzL2hldmNwcmVkX21zYS5jCitAQCAtMTgsNyArMTgsNyBAQAorICAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKyAgKi8KKyAKKy0jaW5jbHVkZSAibGliYXZjb2RlYy9oZXZjLmgiCisrI2luY2x1ZGUgImxpYmF2Y29kZWMvaGV2Y2RlYy5oIgorICNpbmNsdWRlICJsaWJhdnV0aWwvbWlwcy9nZW5lcmljX21hY3Jvc19tc2EuaCIKKyAjaW5jbHVkZSAiaGV2Y3ByZWRfbWlwcy5oIgorIAorLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXZfMS4xMC40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXZfMS4xMC40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OWQ4MWRiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2XzEuMTAuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLXJlcXVpcmUgZ3N0cmVhbWVyMS4wLWxpYmF2LmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9Njc2MmVkNDQyYjM4MjIzODdhNTFjOTJkOTI4ZWFkMGQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZXh0L2xpYmF2L2dzdGF2Lmg7YmVnaW5saW5lPTE7ZW5kbGluZT0xODttZDU9YTc1MmMzNTI2N2Q4Mjc2ZmQ5Y2EzZGI2OTk0ZmNhOWMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0LWxpYnMvZXh0L2xpYmF2L0NPUFlJTkcuR1BMdjI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC1saWJzL2V4dC9saWJhdi9DT1BZSU5HLkdQTHYzO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QtbGlicy9leHQvbGliYXYvQ09QWUlORy5MR1BMdjIuMTttZDU9YmQ3YTQ0MzMyMGFmOGM4MTJlNGMxOGQxYjc5ZGYwMDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0LWxpYnMvZXh0L2xpYmF2L0NPUFlJTkcuTEdQTHYzO21kNT1lNmE2MDBmZDVlMWQ5Y2JkZTJkOTgzNjgwMjMzYWQwMiIKLQotU1JDX1VSSSA9ICIgXAotICAgIGh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtbGliYXYvZ3N0LWxpYmF2LSR7UFZ9LnRhci54eiBcCi0gICAgZmlsZTovLzAwMDEtRGlzYWJsZS15YXNtLWZvci1saWJhdi13aGVuLWRpc2FibGUteWFzbS5wYXRjaCBcCi0gICAgZmlsZTovL3dvcmthcm91bmQtdG8tYnVpbGQtZ3N0LWxpYmF2LWZvci1pNTg2LXdpdGgtZ2NjLnBhdGNoIFwKLSAgICBmaWxlOi8vbWlwczY0X2NwdV9kZXRlY3Rpb24ucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gImUyYmRkOWZkZTZjYTNmZjdlZmZmYjkzZGYxMjFmNGZkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZjYTBmZWNhNzVlM2Q0ODMxNWUwN2YyMGVjMzdjZjYyNjBlZDFlOWRkZTU4ZGYzNTVmZWJkNTAxNjI0NjI2OGIiCi0KLVMgPSAiJHtXT1JLRElSfS9nc3QtbGliYXYtJHtQVn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdl8xLjEyLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdl8xLjEyLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2I1YmJkMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2XzEuMTIuMi5iYgpAQCAtMCwwICsxLDIxIEBACityZXF1aXJlIGdzdHJlYW1lcjEuMC1saWJhdi5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTY3NjJlZDQ0MmIzODIyMzg3YTUxYzkyZDkyOGVhZDBkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2V4dC9saWJhdi9nc3Rhdi5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MTg7bWQ1PWE3NTJjMzUyNjdkODI3NmZkOWNhM2RiNjk5NGZjYTljIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC1saWJzL2V4dC9saWJhdi9DT1BZSU5HLkdQTHYyO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QtbGlicy9leHQvbGliYXYvQ09QWUlORy5HUEx2MzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0LWxpYnMvZXh0L2xpYmF2L0NPUFlJTkcuTEdQTHYyLjE7bWQ1PWJkN2E0NDMzMjBhZjhjODEyZTRjMThkMWI3OWRmMDA0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC1saWJzL2V4dC9saWJhdi9DT1BZSU5HLkxHUEx2MzttZDU9ZTZhNjAwZmQ1ZTFkOWNiZGUyZDk4MzY4MDIzM2FkMDIiCisKK1NSQ19VUkkgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1saWJhdi9nc3QtbGliYXYtJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRGlzYWJsZS15YXNtLWZvci1saWJhdi13aGVuLWRpc2FibGUteWFzbS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly93b3JrYXJvdW5kLXRvLWJ1aWxkLWdzdC1saWJhdi1mb3ItaTU4Ni13aXRoLWdjYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9taXBzNjRfY3B1X2RldGVjdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1jaGVjay1mb3ItYXJtdjd2ZS12YXJpYW50LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtaGV2Y3ByZWRfbXNhLmMtRml4LWJ1aWxkLWJ5LUluY2x1ZGluZy1saWJhdmNvZGVjLWhldi5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI4Nzg4YWVjYzAzMmEyODcyMjdiNGJkMjM5ZDFiOTk4YSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1YmI3MzViOWJiMjE4YjY1MmFlNDA3MWVhNmY2YmU4ZWFhZTU1ZTlkMzIzM2FlYzJmMzZiODgyYTI3NTQyZGIzIgorCitTID0gIiR7V09SS0RJUn0vZ3N0LWxpYmF2LSR7UFZ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbWV0YS1iYXNlLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbWV0YS1iYXNlLmJiCmluZGV4IGM1NDJiMTMuLjAxNmUxNzYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW1ldGEtYmFzZS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1tZXRhLWJhc2UuYmIKQEAgLTM3LDcgKzM3LDcgQEAKICAgICBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLXZpZGVvc2NhbGUgXAogICAgIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UtdmlkZW9jb252ZXJ0IFwKICAgICBnc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kLWF1dG9kZXRlY3QgXAotICAgIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2Qtc291cGh0dHBzcmMiCisgICAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZC1zb3VwIgogCiBSUkVDT01NRU5EU19nc3RyZWFtZXIxLjAtbWV0YS14MTEtYmFzZSA9ICJcCiAgICAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS14aW1hZ2VzaW5rIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXguaW5jCmluZGV4IDA1NTYyYjEuLjVkOTIzNTEgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214LmluYwpAQCAtMjksMTAgKzI5LDE3IEBACiAgICAgICAgIGQuc2V0VmFyKCJQQUNLQUdFX0FSQ0giLCBkLmdldFZhcigiTUFDSElORV9BUkNIIikpCiB9CiAKK2RlbGV0ZV9wa2dfbTRfZmlsZSgpIHsKKyAgICAjIERlbGV0ZSBtNCBmaWxlcyB3aGljaCB3ZSBwcm92aWRlIHBhdGNoZWQgdmVyc2lvbnMgb2YgYnV0IHdpbGwgYmUgaWdub3JlZAorICAgICMgaWYgdGhlc2UgZXhpc3QKKwlybSAtZiAiJHtTfS9jb21tb24vbTQvcGtnLm00IgorCXJtIC1mICIke1N9L2NvbW1vbi9tNC9ndGstZG9jLm00IgorfQorZG9fY29uZmlndXJlW3ByZWZ1bmNzXSArPSAiZGVsZXRlX3BrZ19tNF9maWxlIgorCiBzZXRfb214X2NvcmVfbmFtZSgpIHsKIAlzZWQgLWkgLWUgInM7XmNvcmUtbmFtZT0uKjtjb3JlLW5hbWU9JHtHU1RSRUFNRVJfMV8wX09NWF9DT1JFX05BTUV9OyIgIiR7RH0ke3N5c2NvbmZkaXJ9L3hkZy9nc3RvbXguY29uZiIKIH0KLQogZG9faW5zdGFsbFtwb3N0ZnVuY3NdICs9ICIgc2V0X29teF9jb3JlX25hbWUgIgogCiBGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKi5zbyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teF8xLjEwLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXhfMS4xMC40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZmVlZmE1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teF8xLjEwLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1pbmNsdWRlIGdzdHJlYW1lcjEuMC1vbXguaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL29teC9nc3RvbXguaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTIxO21kNT01YzhlMWZjYTMyNzA0NDg4ZTc2ZDJiYTlkZGZhOTM1ZiIKLQotU1JDX1VSSSA9ICJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LW9teC9nc3Qtb214LSR7UFZ9LnRhci54eiIKLQotU1JDX1VSSVttZDVzdW1dID0gImNlZGIyMzBmMWM0N2QwY2Y0YjU3NWQ3MGRmZjY2ZmYyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ1MDcyOTI1Y2YyNjJmMGZkNTI4ZmFiNzhmMGRlNTI3MzRlNDZhNWE4OGFhODAyZmFlNTFjNjdjMDljODFhYTIiCi0KLVMgPSAiJHtXT1JLRElSfS9nc3Qtb214LSR7UFZ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214XzEuMTIuMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teF8xLjEyLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTFkNDU3NgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLW9teF8xLjEyLjIuYmIKQEAgLTAsMCArMSwxMSBAQAoraW5jbHVkZSBnc3RyZWFtZXIxLjAtb214LmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9vbXgvZ3N0b214Lmg7YmVnaW5saW5lPTE7ZW5kbGluZT0yMTttZDU9NWM4ZTFmY2EzMjcwNDQ4OGU3NmQyYmE5ZGRmYTkzNWYiCisKK1NSQ19VUkkgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1vbXgvZ3N0LW9teC0ke1BWfS50YXIueHoiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0YTE0MDRhMjBiNzJlNGFiNmU4MjY1MDAyMThlYzMwOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxYjIyMzk4ZjQ1YTAyN2U5NzdkMmI1MzA5NjI1ZWM5MWNkY2FmMGRhODc1MWNiYzdmNTk2ZDYzOWE0NWJhMjk4IgorCitTID0gIiR7V09SS0RJUn0vZ3N0LW9teC0ke1BWfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLmluYwppbmRleCAwY2NmYzg5Li43YmUxNWQ5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQuaW5jCkBAIC0yMCw3ICsyMCw3IEBACiAgICAgJHtHU1RSRUFNRVJfT1JDfSBcCiAgICAgJHtQQUNLQUdFQ09ORklHX0dMfSBcCiAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdibHVldG9vdGgnLCAnYmx1ZXonLCAnJywgZCl9IFwKLSAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdkaXJlY3RmYicsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnZGlyZWN0ZmIgdnVsa2FuJywgZCl9IFwKICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQnLCAnd2F5bGFuZCBlZ2wnLCAnJywgZCl9IFwKICAgICBiejIgY3VybCBkYXNoIGR0bHMgaGxzIG5lb24gcnN2ZyBzYmMgc21vb3Roc3RyZWFtaW5nIHNuZGZpbGUgdXZjaDI2NCB3ZWJwIFwKICIKQEAgLTQwLDkgKzQwLDcgQEAKIFBBQ0tBR0VDT05GSUdbZmx1aWRzeW50aF0gICAgICA9ICItLWVuYWJsZS1mbHVpZHN5bnRoLC0tZGlzYWJsZS1mbHVpZHN5bnRoLGZsdWlkc3ludGgiCiBQQUNLQUdFQ09ORklHW2dsZXMyXSAgICAgICAgICAgPSAiLS1lbmFibGUtZ2xlczIsLS1kaXNhYmxlLWdsZXMyLHZpcnR1YWwvbGliZ2xlczIiCiBQQUNLQUdFQ09ORklHW2d0a10gICAgICAgICAgICAgPSAiLS1lbmFibGUtZ3RrMywtLWRpc2FibGUtZ3RrMyxndGsrMyIKLSMgZW5zdXJlIE9wZW5TU0wgaXMgdXNlZCBmb3IgSExTIEFFUyBkZXNjcmlwdGlvbiBpbnN0ZWFkIG9mIG5ldHRsZQotIyAoT3BlblNTTCBpcyBhIHNoYXJlZCBkZXBlbmRlbmN5IHdpdGggZHRscykKLVBBQ0tBR0VDT05GSUdbaGxzXSAgICAgICAgICAgICA9ICItLWVuYWJsZS1obHMgLS13aXRoLWhscy1jcnlwdG89b3BlbnNzbCwtLWRpc2FibGUtaGxzLG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW2hsc10gICAgICAgICAgICAgPSAiLS1lbmFibGUtaGxzIC0td2l0aC1obHMtY3J5cHRvPW5ldHRsZSwtLWRpc2FibGUtaGxzLG5ldHRsZSIKIFBBQ0tBR0VDT05GSUdba21zXSAgICAgICAgICAgICA9ICItLWVuYWJsZS1rbXMsLS1kaXNhYmxlLWttcyxsaWJkcm0iCiBQQUNLQUdFQ09ORklHW2xpYm1tc10gICAgICAgICAgPSAiLS1lbmFibGUtbGlibW1zLC0tZGlzYWJsZS1saWJtbXMsbGlibW1zIgogUEFDS0FHRUNPTkZJR1tsaWJzc2gyXSAgICAgICAgID0gIi0tZW5hYmxlLWxpYnNzaDIsLS1kaXNhYmxlLWxpYnNzaDIsbGlic3NoMiIKQEAgLTY2LDE5ICs2NCwxNSBAQAogUEFDS0FHRUNPTkZJR1t1dmNoMjY0XSAgICAgICAgID0gIi0tZW5hYmxlLXV2Y2gyNjQsLS1kaXNhYmxlLXV2Y2gyNjQsbGlidXNiMSBsaWJndWRldiIKIFBBQ0tBR0VDT05GSUdbdm9hYWNlbmNdICAgICAgICA9ICItLWVuYWJsZS12b2FhY2VuYywtLWRpc2FibGUtdm9hYWNlbmMsdm8tYWFjZW5jIgogUEFDS0FHRUNPTkZJR1t2b2FtcndiZW5jXSAgICAgID0gIi0tZW5hYmxlLXZvYW1yd2JlbmMsLS1kaXNhYmxlLXZvYW1yd2JlbmMsdm8tYW1yd2JlbmMiCi1QQUNLQUdFQ09ORklHW3dheWxhbmRdICAgICAgICAgPSAiLS1lbmFibGUtd2F5bGFuZCwtLWRpc2FibGUtd2F5bGFuZCx3YXlsYW5kLW5hdGl2ZSB3YXlsYW5kIHdheWxhbmQtcHJvdG9jb2xzIgorUEFDS0FHRUNPTkZJR1t2dWxrYW5dICAgICAgICAgID0gIi0tZW5hYmxlLXZ1bGthbiwtLWRpc2FibGUtdnVsa2FuLHZ1bGthbiIKK1BBQ0tBR0VDT05GSUdbd2F5bGFuZF0gICAgICAgICA9ICItLWVuYWJsZS13YXlsYW5kLC0tZGlzYWJsZS13YXlsYW5kLHdheWxhbmQtbmF0aXZlIHdheWxhbmQgd2F5bGFuZC1wcm90b2NvbHMgbGliZHJtIgogUEFDS0FHRUNPTkZJR1t3ZWJwXSAgICAgICAgICAgID0gIi0tZW5hYmxlLXdlYnAsLS1kaXNhYmxlLXdlYnAsbGlid2VicCIKIAotIyB0aGVzZSBwbHVnaW5zIGhhdmUgbm90IGJlZW4gcG9ydGVkIHRvIDEuMCAoeWV0KToKLSMgICBhcGV4c2luayBsaW5zeXMgbmFzIHRpbWlkaXR5IHNkbCB4dmlkIHdpbmluZXQKLSMgICBzbmRpbyBjZHhhcGFyc2UgZGNjcCBmYWNlb3ZlcmxheSBoZHZwYXJzZSB0dGEgbXZlIG51dmRlbXV4Ci0jICAgcGF0Y2hkZXRlY3Qgc2RpIHZpZGVvbWVhc3VyZQotCiAjIHRoZXNlIHBsdWdpbnMgaGF2ZSBubyBjb3JyZXNwb25kaW5nIGxpYnJhcnkgaW4gT0UtY29yZSBvciBtZXRhLW9wZW5lbWJlZGRlZDoKLSMgICBvcGVubmkyIHdpbmtzIGRpcmVjdDNkIGRpcmVjdHNvdW5kIHdpbnNjcmVlbmNhcCBhY20gYXBwbGVfbWVkaWEKKyMgICBvcGVubmkyIHdpbmtzIGRpcmVjdDNkIGRpcmVjdHNvdW5kIHdpbnNjcmVlbmNhcCBhY20gYXBwbGVfbWVkaWEgaXFhCiAjICAgYW5kcm9pZF9tZWRpYSBhdmMgYnMyYiBjaHJvbWFwcmludCBkYWFsYSBkdHMgZmRrYWFjIGdtZSBnc20ga2F0ZSBsYWRzcGEgbGliZGUyNjUKLSMgICBsdjIgbWltaWMgbXBlZzJlbmMgbXBsZXggbXVzZXBhY2sgbnZlbmMgb2ZhIG9wZW5oMjY0IG9wZW5zbGVzIHB2ciBzb3VuZHRvdWNoIHNwYW5kc3AKLSMgICBzcGMgdGVsZXRleHRkZWMgdGlueWFsc2EgdmRwYXUgdnVsa2FuIHdhc2FwaSB4MjY1IHpiYXIKKyMgICBsdjIgbXBlZzJlbmMgbXBsZXggbXNkayBtdXNlcGFjayBudmVuYyBvZmEgb3BlbmgyNjQgb3BlbnNsZXMgc291bmR0b3VjaCBzcGFuZHNwCisjICAgc3BjIHRlbGV0ZXh0ZGVjIHRpbnlhbHNhIHZkcGF1IHdhc2FwaSB4MjY1IHpiYXIgd2VicnRjZHNwCiAKICMgcXQ1IHN1cHBvcnQgaXMgZGlzYWJsZWQsIGJlY2F1c2UgaXQgaXMgbm90IHByZXNlbnQgaW4gT0UgY29yZSwgYW5kIHJlcXVpcmVzIG1vcmUgd29yayB0aGFuCiAjIGp1c3QgYWRkaW5nIGEgcGFja2FnZWNvbmZpZyAoaXQgcmVxdWlyZXMgYWNjZXNzIHRvIG1vYywgdWljLCByY2MsIGFuZCBxbWFrZSBwYXRocykuCkBAIC05NCw3ICs4OCw2IEBACiAgICAgLS1lbmFibGUtdmNkIFwKICAgICAtLWRpc2FibGUtYWNtIFwKICAgICAtLWRpc2FibGUtYW5kcm9pZF9tZWRpYSBcCi0gICAgLS1kaXNhYmxlLWFwZXhzaW5rIFwKICAgICAtLWRpc2FibGUtYXBwbGVfbWVkaWEgXAogICAgIC0tZGlzYWJsZS1hdmMgXAogICAgIC0tZGlzYWJsZS1iczJiIFwKQEAgLTEwNyw0MyArMTAwLDM0IEBACiAgICAgLS1kaXNhYmxlLWZka19hYWMgXAogICAgIC0tZGlzYWJsZS1nbWUgXAogICAgIC0tZGlzYWJsZS1nc20gXAorICAgIC0tZGlzYWJsZS1pcWEgXAogICAgIC0tZGlzYWJsZS1rYXRlIFwKICAgICAtLWRpc2FibGUtbGFkc3BhIFwKICAgICAtLWRpc2FibGUtbGliZGUyNjUgXAotICAgIC0tZGlzYWJsZS1saWJ2aXN1YWwgXAotICAgIC0tZGlzYWJsZS1saW5zeXMgXAogICAgIC0tZGlzYWJsZS1sdjIgXAotICAgIC0tZGlzYWJsZS1taW1pYyBcCiAgICAgLS1kaXNhYmxlLW1wZWcyZW5jIFwKICAgICAtLWRpc2FibGUtbXBsZXggXAorICAgIC0tZGlzYWJsZS1tc2RrIFwKICAgICAtLWRpc2FibGUtbXVzZXBhY2sgXAotICAgIC0tZGlzYWJsZS1uYXMgXAogICAgIC0tZGlzYWJsZS1udmVuYyBcCiAgICAgLS1kaXNhYmxlLW9mYSBcCiAgICAgLS1kaXNhYmxlLW9wZW5leHIgXAogICAgIC0tZGlzYWJsZS1vcGVuaDI2NCBcCiAgICAgLS1kaXNhYmxlLW9wZW5uaTIgXAogICAgIC0tZGlzYWJsZS1vcGVuc2xlcyBcCi0gICAgLS1kaXNhYmxlLXB2ciBcCiAgICAgLS1kaXNhYmxlLXF0IFwKLSAgICAtLWRpc2FibGUtc2RsIFwKLSAgICAtLWRpc2FibGUtc2RsdGVzdCBcCi0gICAgLS1kaXNhYmxlLXNuZGlvIFwKICAgICAtLWRpc2FibGUtc291bmR0b3VjaCBcCiAgICAgLS1kaXNhYmxlLXNwYW5kc3AgXAogICAgIC0tZGlzYWJsZS1zcGMgXAogICAgIC0tZGlzYWJsZS10ZWxldGV4dGRlYyBcCi0gICAgLS1kaXNhYmxlLXRpbWlkaXR5IFwKICAgICAtLWRpc2FibGUtdGlueWFsc2EgXAogICAgIC0tZGlzYWJsZS12ZHBhdSBcCi0gICAgLS1kaXNhYmxlLXZ1bGthbiBcCiAgICAgLS1kaXNhYmxlLXdhc2FwaSBcCisgICAgLS1kaXNhYmxlLXdlYnJ0Y2RzcCBcCiAgICAgLS1kaXNhYmxlLXdpbGRtaWRpIFwKLSAgICAtLWRpc2FibGUtd2luaW5ldCBcCiAgICAgLS1kaXNhYmxlLXdpbmtzIFwKICAgICAtLWRpc2FibGUtd2luc2NyZWVuY2FwIFwKICAgICAtLWRpc2FibGUteDI2NSBcCi0gICAgLS1kaXNhYmxlLXh2aWQgXAogICAgIC0tZGlzYWJsZS16YmFyIFwKICAgICAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJteDMyIiwgIi0tZGlzYWJsZS15YWRpZiIsICIiLCBkKX0gXAogIgpAQCAtMTU3LDMgKzE0MSw3IEBACiBGSUxFU18ke1BOfS1mcmVldmVyYiArPSAiJHtkYXRhZGlyfS9nc3RyZWFtZXItJHtMSUJWfS9wcmVzZXRzL0dzdEZyZWV2ZXJiLnBycyIKIEZJTEVTXyR7UE59LW9wZW5jdiArPSAiJHtkYXRhZGlyfS9nc3QtcGx1Z2lucy1iYWQvJHtMSUJWfS9vcGVuY3YqIgogRklMRVNfJHtQTn0tdm9hbXJ3YmVuYyArPSAiJHtkYXRhZGlyfS9nc3RyZWFtZXItJHtMSUJWfS9wcmVzZXRzL0dzdFZvQW1yd2JFbmMucHJzIgorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisgICAgZXhwb3J0IEdJUl9FWFRSQV9MSUJTX1BBVEg9IiR7Qn0vZ3N0LWxpYnMvZ3N0L2FsbG9jYXRvcnMvLmxpYnMiCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAxLU1ha2VmaWxlLmFtLWRvbi10LWhhcmRjb2RlLWxpYnRvb2wtbmFtZS13aGVuLXJ1bm5pbmcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAxLU1ha2VmaWxlLmFtLWRvbi10LWhhcmRjb2RlLWxpYnRvb2wtbmFtZS13aGVuLXJ1bm5pbmcucGF0Y2gKaW5kZXggNDNmMWVlMC4uOGQ5OWRjNiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMS1NYWtlZmlsZS5hbS1kb24tdC1oYXJkY29kZS1saWJ0b29sLW5hbWUtd2hlbi1ydW5uaW5nLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLzAwMDEtTWFrZWZpbGUuYW0tZG9uLXQtaGFyZGNvZGUtbGlidG9vbC1uYW1lLXdoZW4tcnVubmluZy5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gY2ZmNmZiZjU1NWEwNzI0MDhjMjFkYTFlODE4MjA5YzlkMzgxNGRkMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNzU5MmU3OTNiMzkwNjM1NWQ3NmNhOWE1OWY4ZmVhMjc0OWVhMmE0ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogRGF0ZTogVHVlLCAyNyBPY3QgMjAxNSAxNDozNjo1OCArMDIwMAogU3ViamVjdDogW1BBVENIXSBNYWtlZmlsZS5hbTogZG9uJ3QgaGFyZGNvZGUgbGlidG9vbCBuYW1lIHdoZW4gcnVubmluZwpAQCAtNywxNyArNywzNCBAQAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtyZXZpZXcgb24gb2UtY29yZSBsaXN0XQogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiAKLS0tLQotIGdzdC1saWJzL2dzdC9nbC9NYWtlZmlsZS5hbSAgICAgICAgfCAyICstCi0gZ3N0LWxpYnMvZ3N0L2luc2VydGJpbi9NYWtlZmlsZS5hbSB8IDIgKy0KLSBnc3QtbGlicy9nc3QvbXBlZ3RzL01ha2VmaWxlLmFtICAgIHwgMiArLQotIDMgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorJSUgb3JpZ2luYWwgcGF0Y2g6IDAwMDEtTWFrZWZpbGUuYW0tZG9uLXQtaGFyZGNvZGUtbGlidG9vbC1uYW1lLXdoZW4tcnVubmluZy5wYXRjaAogCi1JbmRleDogZ3N0LXBsdWdpbnMtYmFkLTEuMTAuMS9nc3QtbGlicy9nc3QvZ2wvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnc3QtcGx1Z2lucy1iYWQtMS4xMC4xLm9yaWcvZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtCi0rKysgZ3N0LXBsdWdpbnMtYmFkLTEuMTAuMS9nc3QtbGlicy9nc3QvZ2wvTWFrZWZpbGUuYW0KLUBAIC0xNzEsNyArMTcxLDcgQEAgR3N0R0wtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQworU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+CistLS0KKyBnc3QtbGlicy9nc3QvYWxsb2NhdG9ycy9NYWtlZmlsZS5hbSB8IDIgKy0KKyBnc3QtbGlicy9nc3QvZ2wvTWFrZWZpbGUuYW0gICAgICAgICB8IDIgKy0KKyBnc3QtbGlicy9nc3QvaW5zZXJ0YmluL01ha2VmaWxlLmFtICB8IDIgKy0KKyBnc3QtbGlicy9nc3QvbXBlZ3RzL01ha2VmaWxlLmFtICAgICB8IDIgKy0KKyA0IGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9hbGxvY2F0b3JzL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L2FsbG9jYXRvcnMvTWFrZWZpbGUuYW0KK2luZGV4IGU1MGQwNzcuLjYyM2YwOTIgMTAwNjQ0CistLS0gYS9nc3QtbGlicy9nc3QvYWxsb2NhdG9ycy9NYWtlZmlsZS5hbQorKysrIGIvZ3N0LWxpYnMvZ3N0L2FsbG9jYXRvcnMvTWFrZWZpbGUuYW0KK0BAIC0zNyw3ICszNyw3IEBAIEdzdEJhZEFsbG9jYXRvcnMtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0YmFkYWxsb2NhCisgCQktLWFkZC1pbmNsdWRlLXBhdGg9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKKyAJCS0tbGlicmFyeT1saWJnc3RiYWRhbGxvY2F0b3JzLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKKyAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAorLQkJLS1saWJ0b29sPSIkKHRvcF9idWlsZGRpcikvbGlidG9vbCIgXAorKwkJLS1saWJ0b29sPSIkKExJQlRPT0wpIiBcCisgCQktLXBrZyBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAgXAorIAkJLS1wa2ctZXhwb3J0IGdzdHJlYW1lci1iYWRhbGxvY2F0b3JzLUBHU1RfQVBJX1ZFUlNJT05AIFwKKyAJCS0tb3V0cHV0ICRAIFwKK2RpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvZ2wvTWFrZWZpbGUuYW0KK2luZGV4IDJhZTQ3NzMuLmRmYTdhN2QgMTAwNjQ0CistLS0gYS9nc3QtbGlicy9nc3QvZ2wvTWFrZWZpbGUuYW0KKysrKyBiL2dzdC1saWJzL2dzdC9nbC9NYWtlZmlsZS5hbQorQEAgLTE3OCw3ICsxNzgsNyBAQCBHc3RHTC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RnbC1AR1NUX0FQSV9WRVJTSU9OQAogIAkJLS1pbmNsdWRlPUdzdC1AR1NUX0FQSV9WRVJTSU9OQCBcCiAgCQktLWluY2x1ZGU9R3N0QmFzZS1AR1NUX0FQSV9WRVJTSU9OQCBcCiAgCQktLWluY2x1ZGU9R3N0VmlkZW8tQEdTVF9BUElfVkVSU0lPTkAgXApAQCAtMjYsMTEgKzQzLDExIEBACiAgCQktLXBrZyBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1wa2cgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1wa2cgZ3N0cmVhbWVyLXZpZGVvLUBHU1RfQVBJX1ZFUlNJT05AIFwKLUluZGV4OiBnc3QtcGx1Z2lucy1iYWQtMS4xMC4xL2dzdC1saWJzL2dzdC9pbnNlcnRiaW4vTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnc3QtcGx1Z2lucy1iYWQtMS4xMC4xLm9yaWcvZ3N0LWxpYnMvZ3N0L2luc2VydGJpbi9NYWtlZmlsZS5hbQotKysrIGdzdC1wbHVnaW5zLWJhZC0xLjEwLjEvZ3N0LWxpYnMvZ3N0L2luc2VydGJpbi9NYWtlZmlsZS5hbQotQEAgLTQ1LDcgKzQ1LDcgQEAgR3N0SW5zZXJ0QmluLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTgorZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9pbnNlcnRiaW4vTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvaW5zZXJ0YmluL01ha2VmaWxlLmFtCitpbmRleCAxZjhlYTMwLi40Yjk4ZWY2IDEwMDY0NAorLS0tIGEvZ3N0LWxpYnMvZ3N0L2luc2VydGJpbi9NYWtlZmlsZS5hbQorKysrIGIvZ3N0LWxpYnMvZ3N0L2luc2VydGJpbi9NYWtlZmlsZS5hbQorQEAgLTQ1LDcgKzQ1LDcgQEAgR3N0SW5zZXJ0QmluLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdGluc2VydGJpbi1AR1MKICAJCS0tbGlicmFyeT1saWJnc3RpbnNlcnRiaW4tQEdTVF9BUElfVkVSU0lPTkAubGEgXAogIAkJLS1pbmNsdWRlPUdzdC1AR1NUX0FQSV9WRVJTSU9OQCBcCiAgCQktLWluY2x1ZGU9R3N0QmFzZS1AR1NUX0FQSV9WRVJTSU9OQCBcCkBAIC0zOSwxMSArNTYsMTEgQEAKICAJCS0tcGtnIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQCBcCiAgCQktLXBrZyBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQCBcCiAgCQktLXBrZy1leHBvcnQgZ3N0cmVhbWVyLWluc2VydGJpbi1AR1NUX0FQSV9WRVJTSU9OQCBcCi1JbmRleDogZ3N0LXBsdWdpbnMtYmFkLTEuMTAuMS9nc3QtbGlicy9nc3QvbXBlZ3RzL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3N0LXBsdWdpbnMtYmFkLTEuMTAuMS5vcmlnL2dzdC1saWJzL2dzdC9tcGVndHMvTWFrZWZpbGUuYW0KLSsrKyBnc3QtcGx1Z2lucy1iYWQtMS4xMC4xL2dzdC1saWJzL2dzdC9tcGVndHMvTWFrZWZpbGUuYW0KLUBAIC03OSw3ICs3OSw3IEBAIEdzdE1wZWd0cy1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk8KK2RpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvbXBlZ3RzL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L21wZWd0cy9NYWtlZmlsZS5hbQoraW5kZXggYWVlYTMyZS4uOTI5ZDljYyAxMDA2NDQKKy0tLSBhL2dzdC1saWJzL2dzdC9tcGVndHMvTWFrZWZpbGUuYW0KKysrKyBiL2dzdC1saWJzL2dzdC9tcGVndHMvTWFrZWZpbGUuYW0KK0BAIC03OSw3ICs3OSw3IEBAIEdzdE1wZWd0cy1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RtcGVndHMtQEdTVF9BUElfCiAgCQktLWFkZC1pbmNsdWRlLXBhdGg9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItdmlkZW8tQEdTVF9BUElfVkVSU0lPTkBgIFwKICAJCS0tbGlicmFyeT1saWJnc3RtcGVndHMtQEdTVF9BUElfVkVSU0lPTkAubGEgXAogIAkJLS1pbmNsdWRlPUdzdC1AR1NUX0FQSV9WRVJTSU9OQCBcCkBAIC01MiwzICs2OSw2IEBACiAgCQktLXBrZyBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAgXAogIAkJLS1wa2cgZ3N0cmVhbWVyLXZpZGVvLUBHU1RfQVBJX1ZFUlNJT05AIFwKICAJCS0tcGtnLWV4cG9ydCBnc3RyZWFtZXItbXBlZ3RzLUBHU1RfQVBJX1ZFUlNJT05AIFwKKy0tIAorMi40LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMS1QcmVwZW5kLVBLR19DT05GSUdfU1lTUk9PVF9ESVItdG8tcGtnLWNvbmZpZy1vdXRwdXQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAxLVByZXBlbmQtUEtHX0NPTkZJR19TWVNST09UX0RJUi10by1wa2ctY29uZmlnLW91dHB1dC5wYXRjaAppbmRleCA4NmE0NDk1Li40OGQ5M2FiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAxLVByZXBlbmQtUEtHX0NPTkZJR19TWVNST09UX0RJUi10by1wa2ctY29uZmlnLW91dHB1dC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAxLVByZXBlbmQtUEtHX0NPTkZJR19TWVNST09UX0RJUi10by1wa2ctY29uZmlnLW91dHB1dC5wYXRjaApAQCAtMSwzNCArMSwzOCBAQAotRnJvbSBjMjcxNTAzZDdlMjMzNDI4YWMwMzIzYzUxZDY1MTcxMTNlMjZiZWY3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA3YzhmNjhjNTQyODM4MGI5MzA1NzlkYzllZjI3Yzg1MzI2NDQ0OGZkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMSBEZWMgMjAxNiAwMDoyNzoxMyAtMDgwMAorRGF0ZTogTW9uLCAxNSBNYXkgMjAxNyAxNTowNjoxMSArMDMwMAogU3ViamVjdDogW1BBVENIXSBQcmVwZW5kIFBLR19DT05GSUdfU1lTUk9PVF9ESVIgdG8gcGtnLWNvbmZpZyBvdXRwdXQKIAogSW4gY3Jvc3MgZW52aXJvbm1lbnQgd2UgaGF2ZSB0byBwcmVwZW5kIHRoZSBzeXNyb290IHRvIHRoZSBwYXRoIGZvdW5kIGJ5CiBwa2djb25maWcgc2luY2UgdGhlIHBhdGggcmV0dXJuZWQgZnJvbSBwa2djb25maWcgZG9lcyBub3QgaGF2ZSBzeXNyb290IHByZWZpeGVkCiBpdCBlbmRzIHVwIHVzaW5nIHRoZSBmaWxlcyBmcm9tIGhvc3Qgc3lzdGVtLiBJZiBidWlsZCBob3N0IGhhcyB3YXlsYW5kIGluc3RhbGxlZAotdGhlIGJ1aWxkIHdpbGwgc3VjY2VlZCBidXQgaWYgeW91IGRvbnQgaGF2ZSB3YXlsYW5kLXByb3RvY29scyBpbnN0YWxsZWQgb24gYnVpbGQgaG9zdCB0aGVuCi1pdCB3b250IGZpbmQgdGhlIGZpbGVzIG9uIGJ1aWxkIGhvc3QKK3RoZSBidWlsZCB3aWxsIHN1Y2NlZWQgYnV0IGlmIHlvdSBkb250IGhhdmUgd2F5bGFuZC1wcm90b2NvbHMgaW5zdGFsbGVkIG9uIGJ1aWxkCitob3N0IHRoZW4gaXQgd29udCBmaW5kIHRoZSBmaWxlcyBvbiBidWlsZCBob3N0CiAKLVRoaXMgc2hvdWxkIHdvcmsgb2sgd2l0aCBub24gc3lzcm9vdGVkIGJ1aWxkcyB0b28gc2luY2UgaW4gdGhvc2UgY2FzZXMgUEtHX0NPTkZJR19TWVNST09UX0RJUgotd2lsbCBiZSBlbXB0eQorVGhpcyBzaG91bGQgd29yayBvayB3aXRoIG5vbiBzeXNyb290ZWQgYnVpbGRzIHRvbyBzaW5jZQoraW4gdGhvc2UgY2FzZXMgUEtHX0NPTkZJR19TWVNST09UX0RJUiB3aWxsIGJlIGVtcHR5CiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+CiAtLS0KICBjb25maWd1cmUuYWMgfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKLUluZGV4OiBnc3QtcGx1Z2lucy1iYWQtMS4xMC4xL2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdzdC1wbHVnaW5zLWJhZC0xLjEwLjEub3JpZy9jb25maWd1cmUuYWMKLSsrKyBnc3QtcGx1Z2lucy1iYWQtMS4xMC4xL2NvbmZpZ3VyZS5hYwotQEAgLTIyMzMsNyArMjIzMyw3IEBAIEFHX0dTVF9DSEVDS19GRUFUVVJFKFdBWUxBTkQsIFt3YXlsYW5kIHMKLSAgICAgUEtHX0NIRUNLX01PRFVMRVMoV0FZTEFORF9QUk9UT0NPTFMsIHdheWxhbmQtcHJvdG9jb2xzID49IDEuNCwgWwotICAgICAgIGlmIHRlc3QgIngkd2F5bGFuZF9zY2FubmVyIiAhPSAieCI7IHRoZW4KLSAgICAgICAgIEhBVkVfV0FZTEFORD0ieWVzIgotLSAgICAgICAgQUNfU1VCU1QoV0FZTEFORF9QUk9UT0NPTFNfREFUQURJUiwgYCRQS0dfQ09ORklHIC0tdmFyaWFibGU9cGtnZGF0YWRpciB3YXlsYW5kLXByb3RvY29sc2ApCi0rICAgICAgICBBQ19TVUJTVChXQVlMQU5EX1BST1RPQ09MU19EQVRBRElSLCAke1dBWUxBTkRfUFJPVE9DT0xTX1NZU1JPT1RfRElSfWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXBrZ2RhdGFkaXIgd2F5bGFuZC1wcm90b2NvbHNgKQotICAgICAgIGVsc2UKLSAgICAgICAgIEFDX01TR19SRVNVTFQoW3dheWxhbmQtc2Nhbm5lciBpcyByZXF1aXJlZCB0byBidWlsZCB0aGUgd2F5bGFuZCBwbHVnaW5dKQotICAgICAgICAgSEFWRV9XQVlMQU5EPSJubyIKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGUzMDdiZTYuLjgzY2RlYjAgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTIyNzIsNyArMjI3Miw3IEBAIEFHX0dTVF9DSEVDS19GRUFUVVJFKFdBWUxBTkQsIFt3YXlsYW5kIHNpbmtdLCB3YXlsYW5kICwgWworICAgUEtHX0NIRUNLX01PRFVMRVMoV0FZTEFORCwgd2F5bGFuZC1jbGllbnQgPj0gMS40LjAgbGliZHJtID49IDIuNC41NSB3YXlsYW5kLXByb3RvY29scyA+PSAxLjQsIFsKKyAgICAgaWYgdGVzdCAieCR3YXlsYW5kX3NjYW5uZXIiICE9ICJ4IjsgdGhlbgorICAgICAgIEhBVkVfV0FZTEFORD0ieWVzIgorLSAgICAgIEFDX1NVQlNUKFdBWUxBTkRfUFJPVE9DT0xTX0RBVEFESVIsIGAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXBrZ2RhdGFkaXIgd2F5bGFuZC1wcm90b2NvbHNgKQorKyAgICAgIEFDX1NVQlNUKFdBWUxBTkRfUFJPVE9DT0xTX0RBVEFESVIsICR7V0FZTEFORF9QUk9UT0NPTFNfU1lTUk9PVF9ESVJ9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9cGtnZGF0YWRpciB3YXlsYW5kLXByb3RvY29sc2ApCisgICAgIGVsc2UKKyAgICAgICBBQ19NU0dfUkVTVUxUKFt3YXlsYW5kLXNjYW5uZXIgaXMgcmVxdWlyZWQgdG8gYnVpbGQgdGhlIHdheWxhbmQgcGx1Z2luXSkKKyAgICAgICBIQVZFX1dBWUxBTkQ9Im5vIgorLS0gCisyLjQuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAxLWdzdHJlYW1lci1nbC5wYy5pbi1kb24tdC1hcHBlbmQtR0xfQ0ZMQUdTLXRvLUNGTEFHUy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLzAwMDEtZ3N0cmVhbWVyLWdsLnBjLmluLWRvbi10LWFwcGVuZC1HTF9DRkxBR1MtdG8tQ0ZMQUdTLnBhdGNoCmluZGV4IDlmYzkxZDguLjIyMzVhNTcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLzAwMDEtZ3N0cmVhbWVyLWdsLnBjLmluLWRvbi10LWFwcGVuZC1HTF9DRkxBR1MtdG8tQ0ZMQUdTLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLzAwMDEtZ3N0cmVhbWVyLWdsLnBjLmluLWRvbi10LWFwcGVuZC1HTF9DRkxBR1MtdG8tQ0ZMQUdTLnBhdGNoCkBAIC0xLDI0ICsxLDI5IEBACi1Gcm9tIGE5M2NhNjNkMDFlN2NkMWU0MGI1YmU1NzY5OTJmNzdmYWMzNjRiZDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDU2MjJjYTNiNjE2MDNkYzMxNmEwZjFmYmVkZTNmOWFhMzUzYTVlNDggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMjEgTWFyIDIwMTYgMTg6MjE6MTcgKzAyMDAKK0RhdGU6IEZyaSwgMTIgTWF5IDIwMTcgMTY6NDc6MTIgKzAzMDAKIFN1YmplY3Q6IFtQQVRDSF0gZ3N0cmVhbWVyLWdsLnBjLmluOiBkb24ndCBhcHBlbmQgR0xfQ0ZMQUdTIHRvIENGTEFHUwogCiBEZXBlbmRlbmNpZXMnIGluY2x1ZGUgZGlyZWN0b3JpZXMgc2hvdWxkIG5vdCBiZSBhZGRlZCBpbiB0aGlzIHdheTsKIGl0IGNhdXNlcyBwcm9ibGVtcyB3aGVuIGNyb3NzLWNvbXBpbGluZyBpbiBzeXNyb290IGVudmlyb25tZW50cy4KIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+CiAtLS0KICBwa2djb25maWcvZ3N0cmVhbWVyLWdsLnBjLmluIHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCi1JbmRleDogZ3N0LXBsdWdpbnMtYmFkLTEuMTAuMS9wa2djb25maWcvZ3N0cmVhbWVyLWdsLnBjLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3N0LXBsdWdpbnMtYmFkLTEuMTAuMS5vcmlnL3BrZ2NvbmZpZy9nc3RyZWFtZXItZ2wucGMuaW4KLSsrKyBnc3QtcGx1Z2lucy1iYWQtMS4xMC4xL3BrZ2NvbmZpZy9nc3RyZWFtZXItZ2wucGMuaW4KLUBAIC0xMCw0ICsxMCw0IEBAIFZlcnNpb246IEBWRVJTSU9OQAorZGlmZiAtLWdpdCBhL3BrZ2NvbmZpZy9nc3RyZWFtZXItZ2wucGMuaW4gYi9wa2djb25maWcvZ3N0cmVhbWVyLWdsLnBjLmluCitpbmRleCA4ZTdhMzAzLi5kMTY3YmUxIDEwMDY0NAorLS0tIGEvcGtnY29uZmlnL2dzdHJlYW1lci1nbC5wYy5pbgorKysrIGIvcGtnY29uZmlnL2dzdHJlYW1lci1nbC5wYy5pbgorQEAgLTEzLDQgKzEzLDQgQEAgVmVyc2lvbjogQFZFUlNJT05ACiAgUmVxdWlyZXM6IGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQAogIAotIExpYnM6IC1MJHtsaWJkaXJ9IC1sZ3N0Z2wtQEdTVF9BUElfVkVSU0lPTkAgQEdMX0xJQlNACisgTGliczogLUwke2xpYmRpcn0gLWxnc3RnbC1AR1NUX0FQSV9WRVJTSU9OQAogLUNmbGFnczogLUkke2luY2x1ZGVkaXJ9IC1JJHtsaWJkaXJ9L2dzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQC9pbmNsdWRlIEBHTF9DRkxBR1NACiArQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0gLUkke2xpYmRpcn0vZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AL2luY2x1ZGUKKy0tIAorMi40LjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMS1tc3NkZW11eC1pbXByb3ZlZC1saXZlLXBsYXliYWNrLXN1cHBvcnQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAxLW1zc2RlbXV4LWltcHJvdmVkLWxpdmUtcGxheWJhY2stc3VwcG9ydC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDgzMmMxOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAxLW1zc2RlbXV4LWltcHJvdmVkLWxpdmUtcGxheWJhY2stc3VwcG9ydC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDkyOSArMCwwIEBACi1Gcm9tIDczNzIxYWQ0ZTllMmQzMmUxYzhiNmEzYjRhYWE5ODQwMTUzMGU1OGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwaGlsbkBpZ2FsaWEuY29tPgotRGF0ZTogVHVlLCAyOSBOb3YgMjAxNiAxNDo0Mzo0MSArMDEwMAotU3ViamVjdDogW1BBVENIXSBtc3NkZW11eDogaW1wcm92ZWQgbGl2ZSBwbGF5YmFjayBzdXBwb3J0Ci0KLVdoZW4gYSBNU1Mgc2VydmVyIGhvc3RzIGEgbGl2ZSBzdHJlYW0gdGhlIGZyYWdtZW50cyBsaXN0ZWQgaW4gdGhlCi1tYW5pZmVzdCB1c3VhbGx5IGRvbid0IGhhdmUgYWNjdXJhdGUgdGltZXN0YW1wcyBhbmQgZHVyYXRpb24sIGV4Y2VwdAotZm9yIHRoZSBmaXJzdCBmcmFnbWVudCwgd2hpY2ggYWRkaXRpb25hbGx5IHN0b3JlcyB0aW1pbmcgaW5mb3JtYXRpb24KLWZvciB0aGUgZmV3IHVwY29taW5nIGZyYWdtZW50cy4gSW4gdGhpcyBzY2VuYXJpbyBpdCBpcyB1c2VsZXNzIHRvCi1wZXJpb2RpY2FsbHkgZmV0Y2ggYW5kIHVwZGF0ZSB0aGUgbWFuaWZlc3QgYW5kIHRoZSBmcmFnbWVudHMgbGlzdCBjYW4KLWJlIGluY3JlbWVudGFsbHkgYnVpbHQgYnkgcGFyc2luZyB0aGUgZmlyc3QvY3VycmVudCBmcmFnbWVudC4KLQotaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NTAzNgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi0gZXh0L3Ntb290aHN0cmVhbWluZy9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgIHwgICAyICsKLSBleHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc2RlbXV4LmMgICAgICAgICAgICAgfCAgNjAgKysrKysrCi0gZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NmcmFnbWVudHBhcnNlci5jICAgIHwgMjY2ICsrKysrKysrKysrKysrKysrKysrKysrKysrCi0gZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NmcmFnbWVudHBhcnNlci5oICAgIHwgIDg0ICsrKysrKysrCi0gZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NtYW5pZmVzdC5jICAgICAgICAgIHwgMTU4ICsrKysrKysrKysrKysrLQotIGV4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzbWFuaWZlc3QuaCAgICAgICAgICB8ICAgNyArCi0gZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5jIHwgIDI3ICsrLQotIGdzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguaCB8ICAxNCArKwotIDggZmlsZXMgY2hhbmdlZCwgNjA2IGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBleHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc2ZyYWdtZW50cGFyc2VyLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NmcmFnbWVudHBhcnNlci5oCi0KLWRpZmYgLS1naXQgYS9leHQvc21vb3Roc3RyZWFtaW5nL01ha2VmaWxlLmFtIGIvZXh0L3Ntb290aHN0cmVhbWluZy9NYWtlZmlsZS5hbQotaW5kZXggNGZhZjlkZjlmLi5hNWUxYWQ2YWUgMTAwNjQ0Ci0tLS0gYS9leHQvc21vb3Roc3RyZWFtaW5nL01ha2VmaWxlLmFtCi0rKysgYi9leHQvc21vb3Roc3RyZWFtaW5nL01ha2VmaWxlLmFtCi1AQCAtMTMsOCArMTMsMTAgQEAgbGliZ3N0c21vb3Roc3RyZWFtaW5nX2xhX0xJQkFERCA9IFwKLSBsaWJnc3RzbW9vdGhzdHJlYW1pbmdfbGFfTERGTEFHUyA9ICR7R1NUX1BMVUdJTl9MREZMQUdTfQotIGxpYmdzdHNtb290aHN0cmVhbWluZ19sYV9TT1VSQ0VTID0gZ3N0c21vb3Roc3RyZWFtaW5nLXBsdWdpbi5jIFwKLSAJZ3N0bXNzZGVtdXguYyBcCi0rCWdzdG1zc2ZyYWdtZW50cGFyc2VyLmMgXAotIAlnc3Rtc3NtYW5pZmVzdC5jCi0gbGliZ3N0c21vb3Roc3RyZWFtaW5nX2xhX0xJQlRPT0xGTEFHUyA9IC0tdGFnPWRpc2FibGUtc3RhdGljCi0gCi0gbm9pbnN0X0hFQURFUlMgPSBnc3Rtc3NkZW11eC5oIFwKLSsJZ3N0bXNzZnJhZ21lbnRwYXJzZXIuaCBcCi0gCWdzdG1zc21hbmlmZXN0LmgKLWRpZmYgLS1naXQgYS9leHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc2RlbXV4LmMgYi9leHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc2RlbXV4LmMKLWluZGV4IDEyZmI0MDQ5Ny4uMTIwZDljMjJiIDEwMDY0NAotLS0tIGEvZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NkZW11eC5jCi0rKysgYi9leHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc2RlbXV4LmMKLUBAIC0xMzUsMTEgKzEzNSwxOCBAQCBnc3RfbXNzX2RlbXV4X3N0cmVhbV91cGRhdGVfZnJhZ21lbnRfaW5mbyAoR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqIHN0cmVhbSk7Ci0gc3RhdGljIGdib29sZWFuIGdzdF9tc3NfZGVtdXhfc2VlayAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4LCBHc3RFdmVudCAqIHNlZWspOwotIHN0YXRpYyBnaW50NjQKLSBnc3RfbXNzX2RlbXV4X2dldF9tYW5pZmVzdF91cGRhdGVfaW50ZXJ2YWwgKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCk7Ci0rc3RhdGljIGdpbnQ2NAotK2dzdF9tc3NfZGVtdXhfc3RyZWFtX2dldF9mcmFnbWVudF93YWl0aW5nX3RpbWUgKEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKgotKyAgICBzdHJlYW0pOwotIHN0YXRpYyBHc3RGbG93UmV0dXJuCi0gZ3N0X21zc19kZW11eF91cGRhdGVfbWFuaWZlc3RfZGF0YSAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4LAotICAgICBHc3RCdWZmZXIgKiBidWZmZXIpOwotIHN0YXRpYyBnYm9vbGVhbiBnc3RfbXNzX2RlbXV4X2dldF9saXZlX3NlZWtfcmFuZ2UgKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCwKLSAgICAgZ2ludDY0ICogc3RhcnQsIGdpbnQ2NCAqIHN0b3ApOwotK3N0YXRpYyBHc3RGbG93UmV0dXJuIGdzdF9tc3NfZGVtdXhfZGF0YV9yZWNlaXZlZCAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4LAotKyAgICBHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICogc3RyZWFtLCBHc3RCdWZmZXIgKiBidWZmZXIpOwotK3N0YXRpYyBnYm9vbGVhbgotK2dzdF9tc3NfZGVtdXhfcmVxdWlyZXNfcGVyaW9kaWNhbF9wbGF5bGlzdF91cGRhdGUgKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCk7Ci0gCi0gc3RhdGljIHZvaWQKLSBnc3RfbXNzX2RlbXV4X2NsYXNzX2luaXQgKEdzdE1zc0RlbXV4Q2xhc3MgKiBrbGFzcykKLUBAIC0xOTIsMTAgKzE5OSwxNSBAQCBnc3RfbXNzX2RlbXV4X2NsYXNzX2luaXQgKEdzdE1zc0RlbXV4Q2xhc3MgKiBrbGFzcykKLSAgICAgICBnc3RfbXNzX2RlbXV4X3N0cmVhbV9zZWxlY3RfYml0cmF0ZTsKLSAgIGdzdGFkYXB0aXZlZGVtdXhfY2xhc3MtPnN0cmVhbV91cGRhdGVfZnJhZ21lbnRfaW5mbyA9Ci0gICAgICAgZ3N0X21zc19kZW11eF9zdHJlYW1fdXBkYXRlX2ZyYWdtZW50X2luZm87Ci0rICBnc3RhZGFwdGl2ZWRlbXV4X2NsYXNzLT5zdHJlYW1fZ2V0X2ZyYWdtZW50X3dhaXRpbmdfdGltZSA9Ci0rICAgICAgZ3N0X21zc19kZW11eF9zdHJlYW1fZ2V0X2ZyYWdtZW50X3dhaXRpbmdfdGltZTsKLSAgIGdzdGFkYXB0aXZlZGVtdXhfY2xhc3MtPnVwZGF0ZV9tYW5pZmVzdF9kYXRhID0KLSAgICAgICBnc3RfbXNzX2RlbXV4X3VwZGF0ZV9tYW5pZmVzdF9kYXRhOwotICAgZ3N0YWRhcHRpdmVkZW11eF9jbGFzcy0+Z2V0X2xpdmVfc2Vla19yYW5nZSA9Ci0gICAgICAgZ3N0X21zc19kZW11eF9nZXRfbGl2ZV9zZWVrX3JhbmdlOwotKyAgZ3N0YWRhcHRpdmVkZW11eF9jbGFzcy0+ZGF0YV9yZWNlaXZlZCA9IGdzdF9tc3NfZGVtdXhfZGF0YV9yZWNlaXZlZDsKLSsgIGdzdGFkYXB0aXZlZGVtdXhfY2xhc3MtPnJlcXVpcmVzX3BlcmlvZGljYWxfcGxheWxpc3RfdXBkYXRlID0KLSsgICAgICBnc3RfbXNzX2RlbXV4X3JlcXVpcmVzX3BlcmlvZGljYWxfcGxheWxpc3RfdXBkYXRlOwotIAotICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKG1zc2RlbXV4X2RlYnVnLCAibXNzZGVtdXgiLCAwLCAibXNzZGVtdXggcGx1Z2luIik7Ci0gfQotQEAgLTY1MCw2ICs2NjIsMTMgQEAgZ3N0X21zc19kZW11eF9nZXRfbWFuaWZlc3RfdXBkYXRlX2ludGVydmFsIChHc3RBZGFwdGl2ZURlbXV4ICogZGVtdXgpCi0gICByZXR1cm4gaW50ZXJ2YWw7Ci0gfQotIAotK3N0YXRpYyBnaW50NjQKLStnc3RfbXNzX2RlbXV4X3N0cmVhbV9nZXRfZnJhZ21lbnRfd2FpdGluZ190aW1lIChHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICogc3RyZWFtKQotK3sKLSsgIC8qIFdhaXQgYSBzZWNvbmQgZm9yIGxpdmUgc3RyZWFtcyBzbyB3ZSBkb24ndCB0cnkgcHJlbWF0dXJlIGZyYWdtZW50cyBkb3dubG9hZGluZyAqLwotKyAgcmV0dXJuIEdTVF9TRUNPTkQ7Ci0rfQotKwotIHN0YXRpYyBHc3RGbG93UmV0dXJuCi0gZ3N0X21zc19kZW11eF91cGRhdGVfbWFuaWZlc3RfZGF0YSAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4LAotICAgICBHc3RCdWZmZXIgKiBidWZmZXIpCi1AQCAtNjcwLDMgKzY4OSw0NCBAQCBnc3RfbXNzX2RlbXV4X2dldF9saXZlX3NlZWtfcmFuZ2UgKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCwgZ2ludDY0ICogc3RhcnQsCi0gCi0gICByZXR1cm4gZ3N0X21zc19tYW5pZmVzdF9nZXRfbGl2ZV9zZWVrX3JhbmdlIChtc3NkZW11eC0+bWFuaWZlc3QsIHN0YXJ0LCBzdG9wKTsKLSB9Ci0rCi0rc3RhdGljIEdzdEZsb3dSZXR1cm4KLStnc3RfbXNzX2RlbXV4X2RhdGFfcmVjZWl2ZWQgKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCwKLSsgICAgR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqIHN0cmVhbSwgR3N0QnVmZmVyICogYnVmZmVyKQotK3sKLSsgIEdzdE1zc0RlbXV4ICptc3NkZW11eCA9IEdTVF9NU1NfREVNVVhfQ0FTVCAoZGVtdXgpOwotKyAgR3N0TXNzRGVtdXhTdHJlYW0gKm1zc3N0cmVhbSA9IChHc3RNc3NEZW11eFN0cmVhbSAqKSBzdHJlYW07Ci0rICBnc2l6ZSBhdmFpbGFibGU7Ci0rCi0rICBpZiAoIWdzdF9tc3NfbWFuaWZlc3RfaXNfbGl2ZSAobXNzZGVtdXgtPm1hbmlmZXN0KSkgewotKyAgICByZXR1cm4gR1NUX0FEQVBUSVZFX0RFTVVYX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5kYXRhX3JlY2VpdmVkIChkZW11eCwKLSsgICAgICAgIHN0cmVhbSwgYnVmZmVyKTsKLSsgIH0KLSsKLSsgIGlmIChnc3RfbXNzX3N0cmVhbV9mcmFnbWVudF9wYXJzaW5nX25lZWRlZCAobXNzc3RyZWFtLT5tYW5pZmVzdF9zdHJlYW0pKSB7Ci0rICAgIGdzdF9tc3NfbWFuaWZlc3RfbGl2ZV9hZGFwdGVyX3B1c2ggKG1zc3N0cmVhbS0+bWFuaWZlc3Rfc3RyZWFtLCBidWZmZXIpOwotKyAgICBhdmFpbGFibGUgPQotKyAgICAgICAgZ3N0X21zc19tYW5pZmVzdF9saXZlX2FkYXB0ZXJfYXZhaWxhYmxlIChtc3NzdHJlYW0tPm1hbmlmZXN0X3N0cmVhbSk7Ci0rICAgIC8vIEZJWE1FOiB0cnkgdG8gcmVkdWNlIHRoaXMgbWluaW1hbCBzaXplLgotKyAgICBpZiAoYXZhaWxhYmxlIDwgNDA5NikgewotKyAgICAgIHJldHVybiBHU1RfRkxPV19PSzsKLSsgICAgfSBlbHNlIHsKLSsgICAgICBHU1RfTE9HX09CSkVDVCAoc3RyZWFtLT5wYWQsICJlbm91Z2ggZGF0YSwgcGFyc2luZyBmcmFnbWVudC4iKTsKLSsgICAgICBidWZmZXIgPQotKyAgICAgICAgICBnc3RfbXNzX21hbmlmZXN0X2xpdmVfYWRhcHRlcl90YWtlX2J1ZmZlciAobXNzc3RyZWFtLT5tYW5pZmVzdF9zdHJlYW0sCi0rICAgICAgICAgIGF2YWlsYWJsZSk7Ci0rICAgICAgZ3N0X21zc19zdHJlYW1fcGFyc2VfZnJhZ21lbnQgKG1zc3N0cmVhbS0+bWFuaWZlc3Rfc3RyZWFtLCBidWZmZXIpOwotKyAgICB9Ci0rICB9Ci0rCi0rICByZXR1cm4gR1NUX0FEQVBUSVZFX0RFTVVYX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5kYXRhX3JlY2VpdmVkIChkZW11eCwgc3RyZWFtLAotKyAgICAgIGJ1ZmZlcik7Ci0rfQotKwotK3N0YXRpYyBnYm9vbGVhbgotK2dzdF9tc3NfZGVtdXhfcmVxdWlyZXNfcGVyaW9kaWNhbF9wbGF5bGlzdF91cGRhdGUgKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCkKLSt7Ci0rICBHc3RNc3NEZW11eCAqbXNzZGVtdXggPSBHU1RfTVNTX0RFTVVYX0NBU1QgKGRlbXV4KTsKLSsKLSsgIHJldHVybiAoIWdzdF9tc3NfbWFuaWZlc3RfaXNfbGl2ZSAobXNzZGVtdXgtPm1hbmlmZXN0KSk7Ci0rfQotZGlmZiAtLWdpdCBhL2V4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzZnJhZ21lbnRwYXJzZXIuYyBiL2V4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzZnJhZ21lbnRwYXJzZXIuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMC4uYjU1NGQ0ZjMxCi0tLS0gL2Rldi9udWxsCi0rKysgYi9leHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc2ZyYWdtZW50cGFyc2VyLmMKLUBAIC0wLDAgKzEsMjY2IEBACi0rLyoKLSsgKiBNaWNyb3NvZnQgU21vb3RoLVN0cmVhbWluZyBmcmFnbWVudCBwYXJzaW5nIGxpYnJhcnkKLSsgKgotKyAqIGdzdG1zc2ZyYWdtZW50cGFyc2VyLmgKLSsgKgotKyAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MCi0rICogQ29weXJpZ2h0IChDKSAyMDE2IE1ldHJvbG9naWNhbAotKyAqICAgQXV0aG9yOiBQaGlsaXBwZSBOb3JtYW5kIDxwaGlsbkBpZ2FsaWEuY29tPgotKyAqCi0rICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0rICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rICoKLSsgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rICoKLSsgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnkgKENPUFlJTkcpOyBpZiBub3QsIHdyaXRlIHRvIHRoZQotKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAotKyAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgotKyAqLwotKwotKyNpbmNsdWRlICJnc3Rtc3NmcmFnbWVudHBhcnNlci5oIgotKyNpbmNsdWRlIDxnc3QvYmFzZS9nc3RieXRlcmVhZGVyLmg+Ci0rI2luY2x1ZGUgPHN0cmluZy5oPgotKwotK0dTVF9ERUJVR19DQVRFR09SWV9FWFRFUk4gKG1zc2RlbXV4X2RlYnVnKTsKLSsjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCBtc3NkZW11eF9kZWJ1ZwotKwotK3ZvaWQKLStnc3RfbXNzX2ZyYWdtZW50X3BhcnNlcl9pbml0IChHc3RNc3NGcmFnbWVudFBhcnNlciAqIHBhcnNlcikKLSt7Ci0rICBwYXJzZXItPnN0YXR1cyA9IEdTVF9NU1NfRlJBR01FTlRfSEVBREVSX1BBUlNFUl9JTklUOwotKyAgcGFyc2VyLT50ZnJmLmVudHJpZXNfY291bnQgPSAwOwotK30KLSsKLSt2b2lkCi0rZ3N0X21zc19mcmFnbWVudF9wYXJzZXJfY2xlYXIgKEdzdE1zc0ZyYWdtZW50UGFyc2VyICogcGFyc2VyKQotK3sKLSsgIHBhcnNlci0+dGZyZi5lbnRyaWVzX2NvdW50ID0gMDsKLSsgIGlmIChwYXJzZXItPnRmcmYuZW50cmllcykgewotKyAgICBnX2ZyZWUgKHBhcnNlci0+dGZyZi5lbnRyaWVzKTsKLSsgICAgcGFyc2VyLT50ZnJmLmVudHJpZXMgPSAwOwotKyAgfQotK30KLSsKLStzdGF0aWMgZ2Jvb2xlYW4KLStfcGFyc2VfdGZyZl9ib3ggKEdzdE1zc0ZyYWdtZW50UGFyc2VyICogcGFyc2VyLCBHc3RCeXRlUmVhZGVyICogcmVhZGVyKQotK3sKLSsgIGd1aW50OCB2ZXJzaW9uOwotKyAgZ3VpbnQzMiBmbGFncyA9IDA7Ci0rICBndWludDggZnJhZ21lbnRfY291bnQgPSAwOwotKyAgZ3VpbnQ4IGluZGV4ID0gMDsKLSsKLSsgIGlmICghZ3N0X2J5dGVfcmVhZGVyX2dldF91aW50OCAocmVhZGVyLCAmdmVyc2lvbikpIHsKLSsgICAgR1NUX0VSUk9SICgiRXJyb3IgZ2V0dGluZyBib3gncyB2ZXJzaW9uIGZpZWxkIik7Ci0rICAgIHJldHVybiBGQUxTRTsKLSsgIH0KLSsKLSsgIGlmICghZ3N0X2J5dGVfcmVhZGVyX2dldF91aW50MjRfYmUgKHJlYWRlciwgJmZsYWdzKSkgewotKyAgICBHU1RfRVJST1IgKCJFcnJvciBnZXR0aW5nIGJveCdzIGZsYWdzIGZpZWxkIik7Ci0rICAgIHJldHVybiBGQUxTRTsKLSsgIH0KLSsKLSsgIGdzdF9ieXRlX3JlYWRlcl9nZXRfdWludDggKHJlYWRlciwgJmZyYWdtZW50X2NvdW50KTsKLSsgIHBhcnNlci0+dGZyZi5lbnRyaWVzX2NvdW50ID0gZnJhZ21lbnRfY291bnQ7Ci0rICBwYXJzZXItPnRmcmYuZW50cmllcyA9Ci0rICAgICAgZ19tYWxsb2MgKHNpemVvZiAoR3N0VGZyZkJveEVudHJ5KSAqIHBhcnNlci0+dGZyZi5lbnRyaWVzX2NvdW50KTsKLSsgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IGZyYWdtZW50X2NvdW50OyBpbmRleCsrKSB7Ci0rICAgIGd1aW50NjQgYWJzb2x1dGVfdGltZSA9IDA7Ci0rICAgIGd1aW50NjQgYWJzb2x1dGVfZHVyYXRpb24gPSAwOwotKyAgICBpZiAodmVyc2lvbiAmIDB4MDEpIHsKLSsgICAgICBnc3RfYnl0ZV9yZWFkZXJfZ2V0X3VpbnQ2NF9iZSAocmVhZGVyLCAmYWJzb2x1dGVfdGltZSk7Ci0rICAgICAgZ3N0X2J5dGVfcmVhZGVyX2dldF91aW50NjRfYmUgKHJlYWRlciwgJmFic29sdXRlX2R1cmF0aW9uKTsKLSsgICAgfSBlbHNlIHsKLSsgICAgICBndWludDMyIHRpbWUgPSAwOwotKyAgICAgIGd1aW50MzIgZHVyYXRpb24gPSAwOwotKyAgICAgIGdzdF9ieXRlX3JlYWRlcl9nZXRfdWludDMyX2JlIChyZWFkZXIsICZ0aW1lKTsKLSsgICAgICBnc3RfYnl0ZV9yZWFkZXJfZ2V0X3VpbnQzMl9iZSAocmVhZGVyLCAmZHVyYXRpb24pOwotKyAgICAgIHRpbWUgPSB+dGltZTsKLSsgICAgICBkdXJhdGlvbiA9IH5kdXJhdGlvbjsKLSsgICAgICBhYnNvbHV0ZV90aW1lID0gfnRpbWU7Ci0rICAgICAgYWJzb2x1dGVfZHVyYXRpb24gPSB+ZHVyYXRpb247Ci0rICAgIH0KLSsgICAgcGFyc2VyLT50ZnJmLmVudHJpZXNbaW5kZXhdLnRpbWUgPSBhYnNvbHV0ZV90aW1lOwotKyAgICBwYXJzZXItPnRmcmYuZW50cmllc1tpbmRleF0uZHVyYXRpb24gPSBhYnNvbHV0ZV9kdXJhdGlvbjsKLSsgIH0KLSsKLSsgIEdTVF9MT0cgKCJ0ZnJmIGJveCBwYXJzZWQiKTsKLSsgIHJldHVybiBUUlVFOwotK30KLSsKLStzdGF0aWMgZ2Jvb2xlYW4KLStfcGFyc2VfdGZ4ZF9ib3ggKEdzdE1zc0ZyYWdtZW50UGFyc2VyICogcGFyc2VyLCBHc3RCeXRlUmVhZGVyICogcmVhZGVyKQotK3sKLSsgIGd1aW50OCB2ZXJzaW9uOwotKyAgZ3VpbnQzMiBmbGFncyA9IDA7Ci0rICBndWludDY0IGFic29sdXRlX3RpbWUgPSAwOwotKyAgZ3VpbnQ2NCBhYnNvbHV0ZV9kdXJhdGlvbiA9IDA7Ci0rCi0rICBpZiAoIWdzdF9ieXRlX3JlYWRlcl9nZXRfdWludDggKHJlYWRlciwgJnZlcnNpb24pKSB7Ci0rICAgIEdTVF9FUlJPUiAoIkVycm9yIGdldHRpbmcgYm94J3MgdmVyc2lvbiBmaWVsZCIpOwotKyAgICByZXR1cm4gRkFMU0U7Ci0rICB9Ci0rCi0rICBpZiAoIWdzdF9ieXRlX3JlYWRlcl9nZXRfdWludDI0X2JlIChyZWFkZXIsICZmbGFncykpIHsKLSsgICAgR1NUX0VSUk9SICgiRXJyb3IgZ2V0dGluZyBib3gncyBmbGFncyBmaWVsZCIpOwotKyAgICByZXR1cm4gRkFMU0U7Ci0rICB9Ci0rCi0rICBpZiAodmVyc2lvbiAmIDB4MDEpIHsKLSsgICAgZ3N0X2J5dGVfcmVhZGVyX2dldF91aW50NjRfYmUgKHJlYWRlciwgJmFic29sdXRlX3RpbWUpOwotKyAgICBnc3RfYnl0ZV9yZWFkZXJfZ2V0X3VpbnQ2NF9iZSAocmVhZGVyLCAmYWJzb2x1dGVfZHVyYXRpb24pOwotKyAgfSBlbHNlIHsKLSsgICAgZ3VpbnQzMiB0aW1lID0gMDsKLSsgICAgZ3VpbnQzMiBkdXJhdGlvbiA9IDA7Ci0rICAgIGdzdF9ieXRlX3JlYWRlcl9nZXRfdWludDMyX2JlIChyZWFkZXIsICZ0aW1lKTsKLSsgICAgZ3N0X2J5dGVfcmVhZGVyX2dldF91aW50MzJfYmUgKHJlYWRlciwgJmR1cmF0aW9uKTsKLSsgICAgdGltZSA9IH50aW1lOwotKyAgICBkdXJhdGlvbiA9IH5kdXJhdGlvbjsKLSsgICAgYWJzb2x1dGVfdGltZSA9IH50aW1lOwotKyAgICBhYnNvbHV0ZV9kdXJhdGlvbiA9IH5kdXJhdGlvbjsKLSsgIH0KLSsKLSsgIHBhcnNlci0+dGZ4ZC50aW1lID0gYWJzb2x1dGVfdGltZTsKLSsgIHBhcnNlci0+dGZ4ZC5kdXJhdGlvbiA9IGFic29sdXRlX2R1cmF0aW9uOwotKyAgR1NUX0xPRyAoInRmeGQgYm94IHBhcnNlZCIpOwotKyAgcmV0dXJuIFRSVUU7Ci0rfQotKwotK2dib29sZWFuCi0rZ3N0X21zc19mcmFnbWVudF9wYXJzZXJfYWRkX2J1ZmZlciAoR3N0TXNzRnJhZ21lbnRQYXJzZXIgKiBwYXJzZXIsCi0rICAgIEdzdEJ1ZmZlciAqIGJ1ZmZlcikKLSt7Ci0rICBHc3RCeXRlUmVhZGVyIHJlYWRlcjsKLSsgIEdzdE1hcEluZm8gaW5mbzsKLSsgIGd1aW50MzIgc2l6ZTsKLSsgIGd1aW50MzIgZm91cmNjOwotKyAgY29uc3QgZ3VpbnQ4ICp1dWlkOwotKyAgZ2Jvb2xlYW4gZXJyb3IgPSBGQUxTRTsKLSsgIGdib29sZWFuIG1kYXRfYm94X2ZvdW5kID0gRkFMU0U7Ci0rCi0rICBzdGF0aWMgY29uc3QgZ3VpbnQ4IHRmcmZfdXVpZFtdID0gewotKyAgICAweGQ0LCAweDgwLCAweDdlLCAweGYyLCAweGNhLCAweDM5LCAweDQ2LCAweDk1LAotKyAgICAweDhlLCAweDU0LCAweDI2LCAweGNiLCAweDllLCAweDQ2LCAweGE3LCAweDlmCi0rICB9OwotKwotKyAgc3RhdGljIGNvbnN0IGd1aW50OCB0ZnhkX3V1aWRbXSA9IHsKLSsgICAgMHg2ZCwgMHgxZCwgMHg5YiwgMHgwNSwgMHg0MiwgMHhkNSwgMHg0NCwgMHhlNiwKLSsgICAgMHg4MCwgMHhlMiwgMHgxNCwgMHgxZCwgMHhhZiwgMHhmNywgMHg1NywgMHhiMgotKyAgfTsKLSsKLSsgIHN0YXRpYyBjb25zdCBndWludDggcGlmZl91dWlkW10gPSB7Ci0rICAgIDB4YTIsIDB4MzksIDB4NGYsIDB4NTIsIDB4NWEsIDB4OWIsIDB4NGYsIDB4MTQsCi0rICAgIDB4YTIsIDB4NDQsIDB4NmMsIDB4NDIsIDB4N2MsIDB4NjQsIDB4OGQsIDB4ZjQKLSsgIH07Ci0rCi0rICBpZiAoIWdzdF9idWZmZXJfbWFwIChidWZmZXIsICZpbmZvLCBHU1RfTUFQX1JFQUQpKSB7Ci0rICAgIHJldHVybiBGQUxTRTsKLSsgIH0KLSsKLSsgIGdzdF9ieXRlX3JlYWRlcl9pbml0ICgmcmVhZGVyLCBpbmZvLmRhdGEsIGluZm8uc2l6ZSk7Ci0rICBHU1RfVFJBQ0UgKCJUb3RhbCBidWZmZXIgc2l6ZTogJXUiLCBnc3RfYnl0ZV9yZWFkZXJfZ2V0X3NpemUgKCZyZWFkZXIpKTsKLSsKLSsgIHNpemUgPSBnc3RfYnl0ZV9yZWFkZXJfZ2V0X3VpbnQzMl9iZV91bmNoZWNrZWQgKCZyZWFkZXIpOwotKyAgZm91cmNjID0gZ3N0X2J5dGVfcmVhZGVyX2dldF91aW50MzJfbGVfdW5jaGVja2VkICgmcmVhZGVyKTsKLSsgIGlmIChmb3VyY2MgPT0gR1NUX01TU19GUkFHTUVOVF9GT1VSQ0NfTU9PRikgewotKyAgICBHU1RfVFJBQ0UgKCJtb29mIGJveCBmb3VuZCIpOwotKyAgICBzaXplID0gZ3N0X2J5dGVfcmVhZGVyX2dldF91aW50MzJfYmVfdW5jaGVja2VkICgmcmVhZGVyKTsKLSsgICAgZm91cmNjID0gZ3N0X2J5dGVfcmVhZGVyX2dldF91aW50MzJfbGVfdW5jaGVja2VkICgmcmVhZGVyKTsKLSsgICAgaWYgKGZvdXJjYyA9PSBHU1RfTVNTX0ZSQUdNRU5UX0ZPVVJDQ19NRkhEKSB7Ci0rICAgICAgZ3N0X2J5dGVfcmVhZGVyX3NraXBfdW5jaGVja2VkICgmcmVhZGVyLCBzaXplIC0gOCk7Ci0rCi0rICAgICAgc2l6ZSA9IGdzdF9ieXRlX3JlYWRlcl9nZXRfdWludDMyX2JlX3VuY2hlY2tlZCAoJnJlYWRlcik7Ci0rICAgICAgZm91cmNjID0gZ3N0X2J5dGVfcmVhZGVyX2dldF91aW50MzJfbGVfdW5jaGVja2VkICgmcmVhZGVyKTsKLSsgICAgICBpZiAoZm91cmNjID09IEdTVF9NU1NfRlJBR01FTlRfRk9VUkNDX1RSQUYpIHsKLSsgICAgICAgIHNpemUgPSBnc3RfYnl0ZV9yZWFkZXJfZ2V0X3VpbnQzMl9iZV91bmNoZWNrZWQgKCZyZWFkZXIpOwotKyAgICAgICAgZm91cmNjID0gZ3N0X2J5dGVfcmVhZGVyX2dldF91aW50MzJfbGVfdW5jaGVja2VkICgmcmVhZGVyKTsKLSsgICAgICAgIGlmIChmb3VyY2MgPT0gR1NUX01TU19GUkFHTUVOVF9GT1VSQ0NfVEZIRCkgewotKyAgICAgICAgICBnc3RfYnl0ZV9yZWFkZXJfc2tpcF91bmNoZWNrZWQgKCZyZWFkZXIsIHNpemUgLSA4KTsKLSsKLSsgICAgICAgICAgc2l6ZSA9IGdzdF9ieXRlX3JlYWRlcl9nZXRfdWludDMyX2JlX3VuY2hlY2tlZCAoJnJlYWRlcik7Ci0rICAgICAgICAgIGZvdXJjYyA9IGdzdF9ieXRlX3JlYWRlcl9nZXRfdWludDMyX2xlX3VuY2hlY2tlZCAoJnJlYWRlcik7Ci0rICAgICAgICAgIGlmIChmb3VyY2MgPT0gR1NUX01TU19GUkFHTUVOVF9GT1VSQ0NfVFJVTikgewotKyAgICAgICAgICAgIEdTVF9UUkFDRSAoInRydW4gYm94IGZvdW5kLCBzaXplOiAlIiBHX0dVSU5UMzJfRk9STUFULCBzaXplKTsKLSsgICAgICAgICAgICBpZiAoIWdzdF9ieXRlX3JlYWRlcl9za2lwICgmcmVhZGVyLCBzaXplIC0gOCkpIHsKLSsgICAgICAgICAgICAgIEdTVF9XQVJOSU5HICgiRmFpbGVkIHRvIHNraXAgdHJ1biBib3gsIGVub3VnaCBkYXRhPyIpOwotKyAgICAgICAgICAgICAgZXJyb3IgPSBUUlVFOwotKyAgICAgICAgICAgICAgZ290byBiZWFjaDsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICAgIH0KLSsgICAgICAgIH0KLSsgICAgICB9Ci0rICAgIH0KLSsgIH0KLSsKLSsgIHdoaWxlICghbWRhdF9ib3hfZm91bmQpIHsKLSsgICAgR1NUX1RSQUNFICgicmVtYWluaW5nIGRhdGE6ICV1IiwgZ3N0X2J5dGVfcmVhZGVyX2dldF9yZW1haW5pbmcgKCZyZWFkZXIpKTsKLSsgICAgaWYgKCFnc3RfYnl0ZV9yZWFkZXJfZ2V0X3VpbnQzMl9iZSAoJnJlYWRlciwgJnNpemUpKSB7Ci0rICAgICAgR1NUX1dBUk5JTkcgKCJGYWlsZWQgdG8gZ2V0IGJveCBzaXplLCBlbm91Z2ggZGF0YT8iKTsKLSsgICAgICBlcnJvciA9IFRSVUU7Ci0rICAgICAgYnJlYWs7Ci0rICAgIH0KLSsKLSsgICAgR1NUX1RSQUNFICgiYm94IHNpemU6ICUiIEdfR1VJTlQzMl9GT1JNQVQsIHNpemUpOwotKyAgICBpZiAoIWdzdF9ieXRlX3JlYWRlcl9nZXRfdWludDMyX2xlICgmcmVhZGVyLCAmZm91cmNjKSkgewotKyAgICAgIEdTVF9XQVJOSU5HICgiRmFpbGVkIHRvIGdldCBmb3VyY2MsIGVub3VnaCBkYXRhPyIpOwotKyAgICAgIGVycm9yID0gVFJVRTsKLSsgICAgICBicmVhazsKLSsgICAgfQotKwotKyAgICBpZiAoZm91cmNjID09IEdTVF9NU1NfRlJBR01FTlRfRk9VUkNDX01EQVQpIHsKLSsgICAgICBHU1RfTE9HICgibWRhdCBib3ggZm91bmQiKTsKLSsgICAgICBtZGF0X2JveF9mb3VuZCA9IFRSVUU7Ci0rICAgICAgYnJlYWs7Ci0rICAgIH0KLSsKLSsgICAgaWYgKGZvdXJjYyAhPSBHU1RfTVNTX0ZSQUdNRU5UX0ZPVVJDQ19VVUlEKSB7Ci0rICAgICAgR1NUX0VSUk9SICgiaW52YWxpZCBVVUlEIGZvdXJjYzogJSIgR1NUX0ZPVVJDQ19GT1JNQVQsCi0rICAgICAgICAgIEdTVF9GT1VSQ0NfQVJHUyAoZm91cmNjKSk7Ci0rICAgICAgZXJyb3IgPSBUUlVFOwotKyAgICAgIGJyZWFrOwotKyAgICB9Ci0rCi0rICAgIGlmICghZ3N0X2J5dGVfcmVhZGVyX3BlZWtfZGF0YSAoJnJlYWRlciwgMTYsICZ1dWlkKSkgewotKyAgICAgIEdTVF9FUlJPUiAoIm5vdCBlbm91Z2ggZGF0YSBpbiBVVUlEIGJveCIpOwotKyAgICAgIGVycm9yID0gVFJVRTsKLSsgICAgICBicmVhazsKLSsgICAgfQotKwotKyAgICBpZiAobWVtY21wICh1dWlkLCBwaWZmX3V1aWQsIDE2KSA9PSAwKSB7Ci0rICAgICAgZ3N0X2J5dGVfcmVhZGVyX3NraXBfdW5jaGVja2VkICgmcmVhZGVyLCBzaXplIC0gOCk7Ci0rICAgICAgR1NUX0xPRyAoInBpZmYgYm94IGRldGVjdGVkIik7Ci0rICAgIH0KLSsKLSsgICAgaWYgKG1lbWNtcCAodXVpZCwgdGZyZl91dWlkLCAxNikgPT0gMCkgewotKyAgICAgIGdzdF9ieXRlX3JlYWRlcl9nZXRfZGF0YSAoJnJlYWRlciwgMTYsICZ1dWlkKTsKLSsgICAgICBpZiAoIV9wYXJzZV90ZnJmX2JveCAocGFyc2VyLCAmcmVhZGVyKSkgewotKyAgICAgICAgR1NUX0VSUk9SICgidHhyZiBib3ggcGFyc2luZyBlcnJvciIpOwotKyAgICAgICAgZXJyb3IgPSBUUlVFOwotKyAgICAgICAgYnJlYWs7Ci0rICAgICAgfQotKyAgICB9Ci0rCi0rICAgIGlmIChtZW1jbXAgKHV1aWQsIHRmeGRfdXVpZCwgMTYpID09IDApIHsKLSsgICAgICBnc3RfYnl0ZV9yZWFkZXJfZ2V0X2RhdGEgKCZyZWFkZXIsIDE2LCAmdXVpZCk7Ci0rICAgICAgaWYgKCFfcGFyc2VfdGZ4ZF9ib3ggKHBhcnNlciwgJnJlYWRlcikpIHsKLSsgICAgICAgIEdTVF9FUlJPUiAoInRmcmYgYm94IHBhcnNpbmcgZXJyb3IiKTsKLSsgICAgICAgIGVycm9yID0gVFJVRTsKLSsgICAgICAgIGJyZWFrOwotKyAgICAgIH0KLSsgICAgfQotKyAgfQotKwotK2JlYWNoOgotKwotKyAgaWYgKCFlcnJvcikKLSsgICAgcGFyc2VyLT5zdGF0dXMgPSBHU1RfTVNTX0ZSQUdNRU5UX0hFQURFUl9QQVJTRVJfRklOSVNIRUQ7Ci0rCi0rICBHU1RfTE9HICgiRnJhZ21lbnQgcGFyc2luZyBzdWNjZXNzZnVsOiAlcyIsIGVycm9yID8gIm5vIiA6ICJ5ZXMiKTsKLSsgIGdzdF9idWZmZXJfdW5tYXAgKGJ1ZmZlciwgJmluZm8pOwotKyAgcmV0dXJuICFlcnJvcjsKLSt9Ci1kaWZmIC0tZ2l0IGEvZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NmcmFnbWVudHBhcnNlci5oIGIvZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NmcmFnbWVudHBhcnNlci5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwLi5jZjQ3MTE4NjUKLS0tLSAvZGV2L251bGwKLSsrKyBiL2V4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzZnJhZ21lbnRwYXJzZXIuaAotQEAgLTAsMCArMSw4NCBAQAotKy8qCi0rICogTWljcm9zb2Z0IFNtb290aC1TdHJlYW1pbmcgZnJhZ21lbnQgcGFyc2luZyBsaWJyYXJ5Ci0rICoKLSsgKiBnc3Rtc3NmcmFnbWVudHBhcnNlci5oCi0rICoKLSsgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTAotKyAqIENvcHlyaWdodCAoQykgMjAxNiBNZXRyb2xvZ2ljYWwKLSsgKiAgIEF1dGhvcjogUGhpbGlwcGUgTm9ybWFuZCA8cGhpbG5AaWdhbGlhLmNvbT4KLSsgKgotKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyAqCi0rICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyAqCi0rICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5IChDT1BZSU5HKTsgaWYgbm90LCB3cml0ZSB0byB0aGUKLSsgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKLSsgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLSsgKi8KLSsKLSsjaWZuZGVmIF9fR1NUX01TU19GUkFHTUVOVF9QQVJTRVJfSF9fCi0rI2RlZmluZSBfX0dTVF9NU1NfRlJBR01FTlRfUEFSU0VSX0hfXwotKwotKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0rCi0rR19CRUdJTl9ERUNMUwotKwotKyNkZWZpbmUgR1NUX01TU19GUkFHTUVOVF9GT1VSQ0NfTU9PRiBHU1RfTUFLRV9GT1VSQ0MoJ20nLCdvJywnbycsJ2YnKQotKyNkZWZpbmUgR1NUX01TU19GUkFHTUVOVF9GT1VSQ0NfTUZIRCBHU1RfTUFLRV9GT1VSQ0MoJ20nLCdmJywnaCcsJ2QnKQotKyNkZWZpbmUgR1NUX01TU19GUkFHTUVOVF9GT1VSQ0NfVFJBRiBHU1RfTUFLRV9GT1VSQ0MoJ3QnLCdyJywnYScsJ2YnKQotKyNkZWZpbmUgR1NUX01TU19GUkFHTUVOVF9GT1VSQ0NfVEZIRCBHU1RfTUFLRV9GT1VSQ0MoJ3QnLCdmJywnaCcsJ2QnKQotKyNkZWZpbmUgR1NUX01TU19GUkFHTUVOVF9GT1VSQ0NfVFJVTiBHU1RfTUFLRV9GT1VSQ0MoJ3QnLCdyJywndScsJ24nKQotKyNkZWZpbmUgR1NUX01TU19GUkFHTUVOVF9GT1VSQ0NfVVVJRCBHU1RfTUFLRV9GT1VSQ0MoJ3UnLCd1JywnaScsJ2QnKQotKyNkZWZpbmUgR1NUX01TU19GUkFHTUVOVF9GT1VSQ0NfTURBVCBHU1RfTUFLRV9GT1VSQ0MoJ20nLCdkJywnYScsJ3QnKQotKwotK3R5cGVkZWYgc3RydWN0IF9Hc3RUZnhkQm94Ci0rewotKyAgZ3VpbnQ4IHZlcnNpb247Ci0rICBndWludDMyIGZsYWdzOwotKwotKyAgZ3VpbnQ2NCB0aW1lOwotKyAgZ3VpbnQ2NCBkdXJhdGlvbjsKLSt9IEdzdFRmeGRCb3g7Ci0rCi0rdHlwZWRlZiBzdHJ1Y3QgX0dzdFRmcmZCb3hFbnRyeQotK3sKLSsgIGd1aW50NjQgdGltZTsKLSsgIGd1aW50NjQgZHVyYXRpb247Ci0rfSBHc3RUZnJmQm94RW50cnk7Ci0rCi0rdHlwZWRlZiBzdHJ1Y3QgX0dzdFRmcmZCb3gKLSt7Ci0rICBndWludDggdmVyc2lvbjsKLSsgIGd1aW50MzIgZmxhZ3M7Ci0rCi0rICBnaW50IGVudHJpZXNfY291bnQ7Ci0rICBHc3RUZnJmQm94RW50cnkgKmVudHJpZXM7Ci0rfSBHc3RUZnJmQm94OwotKwotK3R5cGVkZWYgZW51bSBfR3N0RnJhZ21lbnRIZWFkZXJQYXJzZXJTdGF0dXMKLSt7Ci0rICBHU1RfTVNTX0ZSQUdNRU5UX0hFQURFUl9QQVJTRVJfSU5JVCwKLSsgIEdTVF9NU1NfRlJBR01FTlRfSEVBREVSX1BBUlNFUl9GSU5JU0hFRAotK30gR3N0RnJhZ21lbnRIZWFkZXJQYXJzZXJTdGF0dXM7Ci0rCi0rdHlwZWRlZiBzdHJ1Y3QgX0dzdE1zc0ZyYWdtZW50UGFyc2VyCi0rewotKyAgR3N0RnJhZ21lbnRIZWFkZXJQYXJzZXJTdGF0dXMgc3RhdHVzOwotKyAgR3N0VGZ4ZEJveCB0ZnhkOwotKyAgR3N0VGZyZkJveCB0ZnJmOwotK30gR3N0TXNzRnJhZ21lbnRQYXJzZXI7Ci0rCi0rdm9pZCBnc3RfbXNzX2ZyYWdtZW50X3BhcnNlcl9pbml0IChHc3RNc3NGcmFnbWVudFBhcnNlciAqIHBhcnNlcik7Ci0rdm9pZCBnc3RfbXNzX2ZyYWdtZW50X3BhcnNlcl9jbGVhciAoR3N0TXNzRnJhZ21lbnRQYXJzZXIgKiBwYXJzZXIpOwotK2dib29sZWFuIGdzdF9tc3NfZnJhZ21lbnRfcGFyc2VyX2FkZF9idWZmZXIgKEdzdE1zc0ZyYWdtZW50UGFyc2VyICogcGFyc2VyLCBHc3RCdWZmZXIgKiBidWYpOwotKwotK0dfRU5EX0RFQ0xTCi0rCi0rI2VuZGlmIC8qIF9fR1NUX01TU19GUkFHTUVOVF9QQVJTRVJfSF9fICovCi1kaWZmIC0tZ2l0IGEvZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NtYW5pZmVzdC5jIGIvZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NtYW5pZmVzdC5jCi1pbmRleCAxNDRiYmI0MmQuLmUxMDMxYmE1NSAxMDA2NDQKLS0tLSBhL2V4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzbWFuaWZlc3QuYwotKysrIGIvZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NtYW5pZmVzdC5jCi1AQCAtMSw1ICsxLDcgQEAKLSAvKiBHU3RyZWFtZXIKLSAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU21hcnQgVFYgQWxsaWFuY2UKLSsgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTAotKyAqIENvcHlyaWdodCAoQykgMjAxNiBNZXRyb2xvZ2ljYWwKLSAgKiAgQXV0aG9yOiBUaGlhZ28gU291c2EgU2FudG9zIDx0aGlhZ28uc291c2Euc2FudG9zQGNvbGxhYm9yYS5jb20+LCBDb2xsYWJvcmEgTHRkLgotICAqCi0gICogZ3N0bXNzbWFuaWZlc3QuYzoKLUBAIC0zMSw2ICszMyw3IEBACi0gI2luY2x1ZGUgPGdzdC9jb2RlY3BhcnNlcnMvZ3N0aDI2NHBhcnNlci5oPgotIAotICNpbmNsdWRlICJnc3Rtc3NtYW5pZmVzdC5oIgotKyNpbmNsdWRlICJnc3Rtc3NmcmFnbWVudHBhcnNlci5oIgotIAotIEdTVF9ERUJVR19DQVRFR09SWV9FWFRFUk4gKG1zc2RlbXV4X2RlYnVnKTsKLSAjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCBtc3NkZW11eF9kZWJ1ZwotQEAgLTc0LDEyICs3NywxNyBAQCBzdHJ1Y3QgX0dzdE1zc1N0cmVhbQotICAgZ2Jvb2xlYW4gYWN0aXZlOyAgICAgICAgICAgICAgLyogaWYgdGhlIHN0cmVhbSBpcyBjdXJyZW50bHkgYmVpbmcgdXNlZCAqLwotICAgZ2ludCBzZWxlY3RlZFF1YWxpdHlJbmRleDsKLSAKLSsgIGdib29sZWFuIGhhc19saXZlX2ZyYWdtZW50czsKLSsgIEdzdEFkYXB0ZXIgKmxpdmVfYWRhcHRlcjsKLSsKLSAgIEdMaXN0ICpmcmFnbWVudHM7Ci0gICBHTGlzdCAqcXVhbGl0aWVzOwotIAotICAgZ2NoYXIgKnVybDsKLSAgIGdjaGFyICpsYW5nOwotIAotKyAgR3N0TXNzRnJhZ21lbnRQYXJzZXIgZnJhZ21lbnRfcGFyc2VyOwotKwotICAgZ3VpbnQgZnJhZ21lbnRfcmVwZXRpdGlvbl9pbmRleDsKLSAgIEdMaXN0ICpjdXJyZW50X2ZyYWdtZW50OwotICAgR0xpc3QgKmN1cnJlbnRfcXVhbGl0eTsKLUBAIC05Niw2ICsxMDQsNyBAQCBzdHJ1Y3QgX0dzdE1zc01hbmlmZXN0Ci0gCi0gICBnYm9vbGVhbiBpc19saXZlOwotICAgZ2ludDY0IGR2cl93aW5kb3c7Ci0rICBndWludDY0IGxvb2tfYWhlYWRfZnJhZ21lbnRfY291bnQ7Ci0gCi0gICBHU3RyaW5nICpwcm90ZWN0aW9uX3N5c3RlbV9pZDsKLSAgIGdjaGFyICpwcm90ZWN0aW9uX2RhdGE7Ci1AQCAtMjM1LDcgKzI0NCw4IEBAIGNvbXBhcmVfYml0cmF0ZSAoR3N0TXNzU3RyZWFtUXVhbGl0eSAqIGEsIEdzdE1zc1N0cmVhbVF1YWxpdHkgKiBiKQotIH0KLSAKLSBzdGF0aWMgdm9pZAotLV9nc3RfbXNzX3N0cmVhbV9pbml0IChHc3RNc3NTdHJlYW0gKiBzdHJlYW0sIHhtbE5vZGVQdHIgbm9kZSkKLStfZ3N0X21zc19zdHJlYW1faW5pdCAoR3N0TXNzTWFuaWZlc3QgKiBtYW5pZmVzdCwgR3N0TXNzU3RyZWFtICogc3RyZWFtLAotKyAgICB4bWxOb2RlUHRyIG5vZGUpCi0gewotICAgeG1sTm9kZVB0ciBpdGVyOwotICAgR3N0TXNzRnJhZ21lbnRMaXN0QnVpbGRlciBidWlsZGVyOwotQEAgLTI0OCw5ICsyNTgsMjEgQEAgX2dzdF9tc3Nfc3RyZWFtX2luaXQgKEdzdE1zc1N0cmVhbSAqIHN0cmVhbSwgeG1sTm9kZVB0ciBub2RlKQotICAgc3RyZWFtLT51cmwgPSAoZ2NoYXIgKikgeG1sR2V0UHJvcCAobm9kZSwgKHhtbENoYXIgKikgTVNTX1BST1BfVVJMKTsKLSAgIHN0cmVhbS0+bGFuZyA9IChnY2hhciAqKSB4bWxHZXRQcm9wIChub2RlLCAoeG1sQ2hhciAqKSBNU1NfUFJPUF9MQU5HVUFHRSk7Ci0gCi0rICAvKiBmb3IgbGl2ZSBwbGF5YmFjayBlYWNoIGZyYWdtZW50IHVzdWFsbHkgaGFzIHRpbWluZwotKyAgICogaW5mb3JtYXRpb24gZm9yIHRoZSBmZXcgbmV4dCBsb29rLWFoZWFkIGZyYWdtZW50cyBzbyB0aGUKLSsgICAqIHBsYXlsaXN0IGNhbiBiZSBidWlsdCBpbmNyZW1lbnRhbGx5IGZyb20gdGhlIGZpcnN0IGZyYWdtZW50Ci0rICAgKiBvZiB0aGUgbWFuaWZlc3QuCi0rICAgKi8KLSsKLSsgIEdTVF9ERUJVRyAoIkxpdmUgc3RyZWFtOiAlcywgbG9vay1haGVhZCBmcmFnbWVudHM6ICUiIEdfR1VJTlQ2NF9GT1JNQVQsCi0rICAgICAgbWFuaWZlc3QtPmlzX2xpdmUgPyAieWVzIiA6ICJubyIsIG1hbmlmZXN0LT5sb29rX2FoZWFkX2ZyYWdtZW50X2NvdW50KTsKLSsgIHN0cmVhbS0+aGFzX2xpdmVfZnJhZ21lbnRzID0gbWFuaWZlc3QtPmlzX2xpdmUKLSsgICAgICAmJiBtYW5pZmVzdC0+bG9va19haGVhZF9mcmFnbWVudF9jb3VudDsKLSsKLSAgIGZvciAoaXRlciA9IG5vZGUtPmNoaWxkcmVuOyBpdGVyOyBpdGVyID0gaXRlci0+bmV4dCkgewotICAgICBpZiAobm9kZV9oYXNfdHlwZSAoaXRlciwgTVNTX05PREVfU1RSRUFNX0ZSQUdNRU5UKSkgewotLSAgICAgIGdzdF9tc3NfZnJhZ21lbnRfbGlzdF9idWlsZGVyX2FkZCAoJmJ1aWxkZXIsIGl0ZXIpOwotKyAgICAgIGlmICghc3RyZWFtLT5oYXNfbGl2ZV9mcmFnbWVudHMgfHwgIWJ1aWxkZXIuZnJhZ21lbnRzKQotKyAgICAgICAgZ3N0X21zc19mcmFnbWVudF9saXN0X2J1aWxkZXJfYWRkICgmYnVpbGRlciwgaXRlcik7Ci0gICAgIH0gZWxzZSBpZiAobm9kZV9oYXNfdHlwZSAoaXRlciwgTVNTX05PREVfU1RSRUFNX1FVQUxJVFkpKSB7Ci0gICAgICAgR3N0TXNzU3RyZWFtUXVhbGl0eSAqcXVhbGl0eSA9IGdzdF9tc3Nfc3RyZWFtX3F1YWxpdHlfbmV3IChpdGVyKTsKLSAgICAgICBzdHJlYW0tPnF1YWxpdGllcyA9IGdfbGlzdF9wcmVwZW5kIChzdHJlYW0tPnF1YWxpdGllcywgcXVhbGl0eSk7Ci1AQCAtMjU5LDE3ICsyODEsMjQgQEAgX2dzdF9tc3Nfc3RyZWFtX2luaXQgKEdzdE1zc1N0cmVhbSAqIHN0cmVhbSwgeG1sTm9kZVB0ciBub2RlKQotICAgICB9Ci0gICB9Ci0gCi0tICBzdHJlYW0tPmZyYWdtZW50cyA9IGdfbGlzdF9yZXZlcnNlIChidWlsZGVyLmZyYWdtZW50cyk7Ci0rICBpZiAoc3RyZWFtLT5oYXNfbGl2ZV9mcmFnbWVudHMpIHsKLSsgICAgc3RyZWFtLT5saXZlX2FkYXB0ZXIgPSBnc3RfYWRhcHRlcl9uZXcgKCk7Ci0rICB9Ci0rCi0rICBpZiAoYnVpbGRlci5mcmFnbWVudHMpIHsKLSsgICAgc3RyZWFtLT5mcmFnbWVudHMgPSBnX2xpc3RfcmV2ZXJzZSAoYnVpbGRlci5mcmFnbWVudHMpOwotKyAgICBzdHJlYW0tPmN1cnJlbnRfZnJhZ21lbnQgPSBzdHJlYW0tPmZyYWdtZW50czsKLSsgIH0KLSAKLSAgIC8qIG9yZGVyIHRoZW0gZnJvbSBzbWFsbGVyIHRvIGJpZ2dlciBiYXNlZCBvbiBiaXRyYXRlcyAqLwotICAgc3RyZWFtLT5xdWFsaXRpZXMgPQotICAgICAgIGdfbGlzdF9zb3J0IChzdHJlYW0tPnF1YWxpdGllcywgKEdDb21wYXJlRnVuYykgY29tcGFyZV9iaXRyYXRlKTsKLS0KLS0gIHN0cmVhbS0+Y3VycmVudF9mcmFnbWVudCA9IHN0cmVhbS0+ZnJhZ21lbnRzOwotICAgc3RyZWFtLT5jdXJyZW50X3F1YWxpdHkgPSBzdHJlYW0tPnF1YWxpdGllczsKLSAKLSAgIHN0cmVhbS0+cmVnZXhfYml0cmF0ZSA9IGdfcmVnZXhfbmV3ICgiXFx7W0JiXWl0cmF0ZVxcfSIsIDAsIDAsIE5VTEwpOwotICAgc3RyZWFtLT5yZWdleF9wb3NpdGlvbiA9IGdfcmVnZXhfbmV3ICgiXFx7c3RhcnRbIF9ddGltZVxcfSIsIDAsIDAsIE5VTEwpOwotKwotKyAgZ3N0X21zc19mcmFnbWVudF9wYXJzZXJfaW5pdCAoJnN0cmVhbS0+ZnJhZ21lbnRfcGFyc2VyKTsKLSB9Ci0gCi0gCi1AQCAtMzE1LDYgKzM0NCw3IEBAIGdzdF9tc3NfbWFuaWZlc3RfbmV3IChHc3RCdWZmZXIgKiBkYXRhKQotICAgeG1sTm9kZVB0ciBub2RlaXRlcjsKLSAgIGdjaGFyICpsaXZlX3N0cjsKLSAgIEdzdE1hcEluZm8gbWFwaW5mbzsKLSsgIGdjaGFyICpsb29rX2FoZWFkX2ZyYWdtZW50X2NvdW50X3N0cjsKLSAKLSAgIGlmICghZ3N0X2J1ZmZlcl9tYXAgKGRhdGEsICZtYXBpbmZvLCBHU1RfTUFQX1JFQUQpKSB7Ci0gICAgIHJldHVybiBOVUxMOwotQEAgLTMzNSw2ICszNjUsNyBAQCBnc3RfbXNzX21hbmlmZXN0X25ldyAoR3N0QnVmZmVyICogZGF0YSkKLSAgIC8qIHRoZSBlbnRpcmUgZmlsZSBpcyBhbHdheXMgYXZhaWxhYmxlIGZvciBub24tbGl2ZSBzdHJlYW1zICovCi0gICBpZiAoIW1hbmlmZXN0LT5pc19saXZlKSB7Ci0gICAgIG1hbmlmZXN0LT5kdnJfd2luZG93ID0gMDsKLSsgICAgbWFuaWZlc3QtPmxvb2tfYWhlYWRfZnJhZ21lbnRfY291bnQgPSAwOwotICAgfSBlbHNlIHsKLSAgICAgLyogaWYgMCwgb3Igbm9uLWV4aXN0ZW50LCB0aGUgbGVuZ3RoIGlzIGluZmluaXRlICovCi0gICAgIGdjaGFyICpkdnJfd2luZG93X3N0ciA9IChnY2hhciAqKSB4bWxHZXRQcm9wIChyb290LAotQEAgLTM0Niw2ICszNzcsMTcgQEAgZ3N0X21zc19tYW5pZmVzdF9uZXcgKEdzdEJ1ZmZlciAqIGRhdGEpCi0gICAgICAgICBtYW5pZmVzdC0+ZHZyX3dpbmRvdyA9IDA7Ci0gICAgICAgfQotICAgICB9Ci0rCi0rICAgIGxvb2tfYWhlYWRfZnJhZ21lbnRfY291bnRfc3RyID0KLSsgICAgICAgIChnY2hhciAqKSB4bWxHZXRQcm9wIChyb290LCAoeG1sQ2hhciAqKSAiTG9va0FoZWFkRnJhZ21lbnRDb3VudCIpOwotKyAgICBpZiAobG9va19haGVhZF9mcmFnbWVudF9jb3VudF9zdHIpIHsKLSsgICAgICBtYW5pZmVzdC0+bG9va19haGVhZF9mcmFnbWVudF9jb3VudCA9Ci0rICAgICAgICAgIGdfYXNjaWlfc3RydG91bGwgKGxvb2tfYWhlYWRfZnJhZ21lbnRfY291bnRfc3RyLCBOVUxMLCAxMCk7Ci0rICAgICAgeG1sRnJlZSAobG9va19haGVhZF9mcmFnbWVudF9jb3VudF9zdHIpOwotKyAgICAgIGlmIChtYW5pZmVzdC0+bG9va19haGVhZF9mcmFnbWVudF9jb3VudCA8PSAwKSB7Ci0rICAgICAgICBtYW5pZmVzdC0+bG9va19haGVhZF9mcmFnbWVudF9jb3VudCA9IDA7Ci0rICAgICAgfQotKyAgICB9Ci0gICB9Ci0gCi0gICBmb3IgKG5vZGVpdGVyID0gcm9vdC0+Y2hpbGRyZW47IG5vZGVpdGVyOyBub2RlaXRlciA9IG5vZGVpdGVyLT5uZXh0KSB7Ci1AQCAtMzU0LDcgKzM5Niw3IEBAIGdzdF9tc3NfbWFuaWZlc3RfbmV3IChHc3RCdWZmZXIgKiBkYXRhKQotICAgICAgIEdzdE1zc1N0cmVhbSAqc3RyZWFtID0gZ19uZXcwIChHc3RNc3NTdHJlYW0sIDEpOwotIAotICAgICAgIG1hbmlmZXN0LT5zdHJlYW1zID0gZ19zbGlzdF9hcHBlbmQgKG1hbmlmZXN0LT5zdHJlYW1zLCBzdHJlYW0pOwotLSAgICAgIF9nc3RfbXNzX3N0cmVhbV9pbml0IChzdHJlYW0sIG5vZGVpdGVyKTsKLSsgICAgICBfZ3N0X21zc19zdHJlYW1faW5pdCAobWFuaWZlc3QsIHN0cmVhbSwgbm9kZWl0ZXIpOwotICAgICB9Ci0gCi0gICAgIGlmIChub2RlaXRlci0+dHlwZSA9PSBYTUxfRUxFTUVOVF9OT0RFCi1AQCAtMzcxLDYgKzQxMywxMSBAQCBnc3RfbXNzX21hbmlmZXN0X25ldyAoR3N0QnVmZmVyICogZGF0YSkKLSBzdGF0aWMgdm9pZAotIGdzdF9tc3Nfc3RyZWFtX2ZyZWUgKEdzdE1zc1N0cmVhbSAqIHN0cmVhbSkKLSB7Ci0rICBpZiAoc3RyZWFtLT5saXZlX2FkYXB0ZXIpIHsKLSsgICAgZ3N0X2FkYXB0ZXJfY2xlYXIgKHN0cmVhbS0+bGl2ZV9hZGFwdGVyKTsKLSsgICAgZ19vYmplY3RfdW5yZWYgKHN0cmVhbS0+bGl2ZV9hZGFwdGVyKTsKLSsgIH0KLSsKLSAgIGdfbGlzdF9mcmVlX2Z1bGwgKHN0cmVhbS0+ZnJhZ21lbnRzLCBnX2ZyZWUpOwotICAgZ19saXN0X2ZyZWVfZnVsbCAoc3RyZWFtLT5xdWFsaXRpZXMsCi0gICAgICAgKEdEZXN0cm95Tm90aWZ5KSBnc3RfbXNzX3N0cmVhbV9xdWFsaXR5X2ZyZWUpOwotQEAgLTM3OSw2ICs0MjYsNyBAQCBnc3RfbXNzX3N0cmVhbV9mcmVlIChHc3RNc3NTdHJlYW0gKiBzdHJlYW0pCi0gICBnX3JlZ2V4X3VucmVmIChzdHJlYW0tPnJlZ2V4X3Bvc2l0aW9uKTsKLSAgIGdfcmVnZXhfdW5yZWYgKHN0cmVhbS0+cmVnZXhfYml0cmF0ZSk7Ci0gICBnX2ZyZWUgKHN0cmVhbSk7Ci0rICBnc3RfbXNzX2ZyYWdtZW50X3BhcnNlcl9jbGVhciAoJnN0cmVhbS0+ZnJhZ21lbnRfcGFyc2VyKTsKLSB9Ci0gCi0gdm9pZAotQEAgLTEwNzksNiArMTEyNyw5IEBAIEdzdEZsb3dSZXR1cm4KLSBnc3RfbXNzX3N0cmVhbV9hZHZhbmNlX2ZyYWdtZW50IChHc3RNc3NTdHJlYW0gKiBzdHJlYW0pCi0gewotICAgR3N0TXNzU3RyZWFtRnJhZ21lbnQgKmZyYWdtZW50OwotKyAgY29uc3QgZ2NoYXIgKnN0cmVhbV90eXBlX25hbWUgPQotKyAgICAgIGdzdF9tc3Nfc3RyZWFtX3R5cGVfbmFtZSAoZ3N0X21zc19zdHJlYW1fZ2V0X3R5cGUgKHN0cmVhbSkpOwotKwotICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHN0cmVhbS0+YWN0aXZlLCBHU1RfRkxPV19FUlJPUik7Ci0gCi0gICBpZiAoc3RyZWFtLT5jdXJyZW50X2ZyYWdtZW50ID09IE5VTEwpCi1AQCAtMTA4NiwxNCArMTEzNywyMCBAQCBnc3RfbXNzX3N0cmVhbV9hZHZhbmNlX2ZyYWdtZW50IChHc3RNc3NTdHJlYW0gKiBzdHJlYW0pCi0gCi0gICBmcmFnbWVudCA9IHN0cmVhbS0+Y3VycmVudF9mcmFnbWVudC0+ZGF0YTsKLSAgIHN0cmVhbS0+ZnJhZ21lbnRfcmVwZXRpdGlvbl9pbmRleCsrOwotLSAgaWYgKHN0cmVhbS0+ZnJhZ21lbnRfcmVwZXRpdGlvbl9pbmRleCA8IGZyYWdtZW50LT5yZXBldGl0aW9ucykgewotLSAgICByZXR1cm4gR1NUX0ZMT1dfT0s7Ci0tICB9Ci0rICBpZiAoc3RyZWFtLT5mcmFnbWVudF9yZXBldGl0aW9uX2luZGV4IDwgZnJhZ21lbnQtPnJlcGV0aXRpb25zKQotKyAgICBnb3RvIGJlYWNoOwotIAotICAgc3RyZWFtLT5mcmFnbWVudF9yZXBldGl0aW9uX2luZGV4ID0gMDsKLSAgIHN0cmVhbS0+Y3VycmVudF9mcmFnbWVudCA9IGdfbGlzdF9uZXh0IChzdHJlYW0tPmN1cnJlbnRfZnJhZ21lbnQpOwotKwotKyAgR1NUX0RFQlVHICgiQWR2YW5jZWQgdG8gZnJhZ21lbnQgIyVkIG9uICVzIHN0cmVhbSIsIGZyYWdtZW50LT5udW1iZXIsCi0rICAgICAgc3RyZWFtX3R5cGVfbmFtZSk7Ci0gICBpZiAoc3RyZWFtLT5jdXJyZW50X2ZyYWdtZW50ID09IE5VTEwpCi0gICAgIHJldHVybiBHU1RfRkxPV19FT1M7Ci0rCi0rYmVhY2g6Ci0rICBnc3RfbXNzX2ZyYWdtZW50X3BhcnNlcl9jbGVhciAoJnN0cmVhbS0+ZnJhZ21lbnRfcGFyc2VyKTsKLSsgIGdzdF9tc3NfZnJhZ21lbnRfcGFyc2VyX2luaXQgKCZzdHJlYW0tPmZyYWdtZW50X3BhcnNlcik7Ci0gICByZXR1cm4gR1NUX0ZMT1dfT0s7Ci0gfQotIAotQEAgLTExNzMsNiArMTIzMCwxMSBAQCBnc3RfbXNzX3N0cmVhbV9zZWVrIChHc3RNc3NTdHJlYW0gKiBzdHJlYW0sIGdib29sZWFuIGZvcndhcmQsCi0gICBHU1RfREVCVUcgKCJTdHJlYW0gJXMgc2Vla2luZyB0byAlIiBHX0dVSU5UNjRfRk9STUFULCBzdHJlYW0tPnVybCwgdGltZSk7Ci0gICBmb3IgKGl0ZXIgPSBzdHJlYW0tPmZyYWdtZW50czsgaXRlcjsgaXRlciA9IGdfbGlzdF9uZXh0IChpdGVyKSkgewotICAgICBmcmFnbWVudCA9IGl0ZXItPmRhdGE7Ci0rICAgIGlmIChzdHJlYW0tPmhhc19saXZlX2ZyYWdtZW50cykgewotKyAgICAgIGlmIChmcmFnbWVudC0+dGltZSArIGZyYWdtZW50LT5yZXBldGl0aW9ucyAqIGZyYWdtZW50LT5kdXJhdGlvbiA+IHRpbWUpCi0rICAgICAgICBzdHJlYW0tPmN1cnJlbnRfZnJhZ21lbnQgPSBpdGVyOwotKyAgICAgIGJyZWFrOwotKyAgICB9Ci0gICAgIGlmIChmcmFnbWVudC0+dGltZSArIGZyYWdtZW50LT5yZXBldGl0aW9ucyAqIGZyYWdtZW50LT5kdXJhdGlvbiA+IHRpbWUpIHsKLSAgICAgICBzdHJlYW0tPmN1cnJlbnRfZnJhZ21lbnQgPSBpdGVyOwotICAgICAgIHN0cmVhbS0+ZnJhZ21lbnRfcmVwZXRpdGlvbl9pbmRleCA9Ci1AQCAtMTI1Niw5ICsxMzE4LDE0IEBAIHN0YXRpYyB2b2lkCi0gZ3N0X21zc19zdHJlYW1fcmVsb2FkX2ZyYWdtZW50cyAoR3N0TXNzU3RyZWFtICogc3RyZWFtLCB4bWxOb2RlUHRyIHN0cmVhbUluZGV4KQotIHsKLSAgIHhtbE5vZGVQdHIgaXRlcjsKLS0gIGd1aW50NjQgY3VycmVudF9nc3RfdGltZSA9IGdzdF9tc3Nfc3RyZWFtX2dldF9mcmFnbWVudF9nc3RfdGltZXN0YW1wIChzdHJlYW0pOwotKyAgZ3VpbnQ2NCBjdXJyZW50X2dzdF90aW1lOwotICAgR3N0TXNzRnJhZ21lbnRMaXN0QnVpbGRlciBidWlsZGVyOwotIAotKyAgaWYgKHN0cmVhbS0+aGFzX2xpdmVfZnJhZ21lbnRzKQotKyAgICByZXR1cm47Ci0rCi0rICBjdXJyZW50X2dzdF90aW1lID0gZ3N0X21zc19zdHJlYW1fZ2V0X2ZyYWdtZW50X2dzdF90aW1lc3RhbXAgKHN0cmVhbSk7Ci0rCi0gICBnc3RfbXNzX2ZyYWdtZW50X2xpc3RfYnVpbGRlcl9pbml0ICgmYnVpbGRlcik7Ci0gCi0gICBHU1RfREVCVUcgKCJDdXJyZW50IHBvc2l0aW9uOiAlIiBHU1RfVElNRV9GT1JNQVQsCi1AQCAtMTUxNCwzICsxNTgxLDc0IEBAIGdzdF9tc3NfbWFuaWZlc3RfZ2V0X2xpdmVfc2Vla19yYW5nZSAoR3N0TXNzTWFuaWZlc3QgKiBtYW5pZmVzdCwgZ2ludDY0ICogc3RhcnQsCi0gCi0gICByZXR1cm4gcmV0OwotIH0KLSsKLSt2b2lkCi0rZ3N0X21zc19tYW5pZmVzdF9saXZlX2FkYXB0ZXJfcHVzaCAoR3N0TXNzU3RyZWFtICogc3RyZWFtLCBHc3RCdWZmZXIgKiBidWZmZXIpCi0rewotKyAgZ3N0X2FkYXB0ZXJfcHVzaCAoc3RyZWFtLT5saXZlX2FkYXB0ZXIsIGJ1ZmZlcik7Ci0rfQotKwotK2dzaXplCi0rZ3N0X21zc19tYW5pZmVzdF9saXZlX2FkYXB0ZXJfYXZhaWxhYmxlIChHc3RNc3NTdHJlYW0gKiBzdHJlYW0pCi0rewotKyAgcmV0dXJuIGdzdF9hZGFwdGVyX2F2YWlsYWJsZSAoc3RyZWFtLT5saXZlX2FkYXB0ZXIpOwotK30KLSsKLStHc3RCdWZmZXIgKgotK2dzdF9tc3NfbWFuaWZlc3RfbGl2ZV9hZGFwdGVyX3Rha2VfYnVmZmVyIChHc3RNc3NTdHJlYW0gKiBzdHJlYW0sIGdzaXplIG5ieXRlcykKLSt7Ci0rICByZXR1cm4gZ3N0X2FkYXB0ZXJfdGFrZV9idWZmZXIgKHN0cmVhbS0+bGl2ZV9hZGFwdGVyLCBuYnl0ZXMpOwotK30KLSsKLStnYm9vbGVhbgotK2dzdF9tc3Nfc3RyZWFtX2ZyYWdtZW50X3BhcnNpbmdfbmVlZGVkIChHc3RNc3NTdHJlYW0gKiBzdHJlYW0pCi0rewotKyAgcmV0dXJuIHN0cmVhbS0+ZnJhZ21lbnRfcGFyc2VyLnN0YXR1cyA9PSBHU1RfTVNTX0ZSQUdNRU5UX0hFQURFUl9QQVJTRVJfSU5JVDsKLSt9Ci0rCi0rdm9pZAotK2dzdF9tc3Nfc3RyZWFtX3BhcnNlX2ZyYWdtZW50IChHc3RNc3NTdHJlYW0gKiBzdHJlYW0sIEdzdEJ1ZmZlciAqIGJ1ZmZlcikKLSt7Ci0rICBHc3RNc3NTdHJlYW1GcmFnbWVudCAqY3VycmVudF9mcmFnbWVudCA9IE5VTEw7Ci0rICBjb25zdCBnY2hhciAqc3RyZWFtX3R5cGVfbmFtZTsKLSsgIGd1aW50OCBpbmRleDsKLSsKLSsgIGlmICghc3RyZWFtLT5oYXNfbGl2ZV9mcmFnbWVudHMpCi0rICAgIHJldHVybjsKLSsKLSsgIGlmICghZ3N0X21zc19mcmFnbWVudF9wYXJzZXJfYWRkX2J1ZmZlciAoJnN0cmVhbS0+ZnJhZ21lbnRfcGFyc2VyLCBidWZmZXIpKQotKyAgICByZXR1cm47Ci0rCi0rICBjdXJyZW50X2ZyYWdtZW50ID0gc3RyZWFtLT5jdXJyZW50X2ZyYWdtZW50LT5kYXRhOwotKyAgY3VycmVudF9mcmFnbWVudC0+dGltZSA9IHN0cmVhbS0+ZnJhZ21lbnRfcGFyc2VyLnRmeGQudGltZTsKLSsgIGN1cnJlbnRfZnJhZ21lbnQtPmR1cmF0aW9uID0gc3RyZWFtLT5mcmFnbWVudF9wYXJzZXIudGZ4ZC5kdXJhdGlvbjsKLSsKLSsgIHN0cmVhbV90eXBlX25hbWUgPQotKyAgICAgIGdzdF9tc3Nfc3RyZWFtX3R5cGVfbmFtZSAoZ3N0X21zc19zdHJlYW1fZ2V0X3R5cGUgKHN0cmVhbSkpOwotKwotKyAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgc3RyZWFtLT5mcmFnbWVudF9wYXJzZXIudGZyZi5lbnRyaWVzX2NvdW50OyBpbmRleCsrKSB7Ci0rICAgIEdMaXN0ICpsID0gZ19saXN0X2xhc3QgKHN0cmVhbS0+ZnJhZ21lbnRzKTsKLSsgICAgR3N0TXNzU3RyZWFtRnJhZ21lbnQgKmxhc3Q7Ci0rICAgIEdzdE1zc1N0cmVhbUZyYWdtZW50ICpmcmFnbWVudDsKLSsKLSsgICAgaWYgKGwgPT0gTlVMTCkKLSsgICAgICBicmVhazsKLSsKLSsgICAgbGFzdCA9IChHc3RNc3NTdHJlYW1GcmFnbWVudCAqKSBsLT5kYXRhOwotKwotKyAgICBpZiAobGFzdC0+dGltZSA9PSBzdHJlYW0tPmZyYWdtZW50X3BhcnNlci50ZnJmLmVudHJpZXNbaW5kZXhdLnRpbWUpCi0rICAgICAgY29udGludWU7Ci0rCi0rICAgIGZyYWdtZW50ID0gZ19uZXcgKEdzdE1zc1N0cmVhbUZyYWdtZW50LCAxKTsKLSsgICAgZnJhZ21lbnQtPm51bWJlciA9IGxhc3QtPm51bWJlciArIDE7Ci0rICAgIGZyYWdtZW50LT5yZXBldGl0aW9ucyA9IDE7Ci0rICAgIGZyYWdtZW50LT50aW1lID0gc3RyZWFtLT5mcmFnbWVudF9wYXJzZXIudGZyZi5lbnRyaWVzW2luZGV4XS50aW1lOwotKyAgICBmcmFnbWVudC0+ZHVyYXRpb24gPSBzdHJlYW0tPmZyYWdtZW50X3BhcnNlci50ZnJmLmVudHJpZXNbaW5kZXhdLmR1cmF0aW9uOwotKwotKyAgICBzdHJlYW0tPmZyYWdtZW50cyA9IGdfbGlzdF9hcHBlbmQgKHN0cmVhbS0+ZnJhZ21lbnRzLCBmcmFnbWVudCk7Ci0rICAgIEdTVF9MT0cgKCJBZGRpbmcgZnJhZ21lbnQgbnVtYmVyOiAldSB0byAlcyBzdHJlYW0sIHRpbWU6ICUiIEdfR1VJTlQ2NF9GT1JNQVQKLSsgICAgICAgICIsIGR1cmF0aW9uOiAlIiBHX0dVSU5UNjRfRk9STUFUICIsIHJlcGV0aXRpb25zOiAldSIsCi0rICAgICAgICBmcmFnbWVudC0+bnVtYmVyLCBzdHJlYW1fdHlwZV9uYW1lLAotKyAgICAgICAgZnJhZ21lbnQtPnRpbWUsIGZyYWdtZW50LT5kdXJhdGlvbiwgZnJhZ21lbnQtPnJlcGV0aXRpb25zKTsKLSsgIH0KLSt9Ci1kaWZmIC0tZ2l0IGEvZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NtYW5pZmVzdC5oIGIvZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NtYW5pZmVzdC5oCi1pbmRleCA2YjdiMWY5NzEuLjAzYjA2NmFlNSAxMDA2NDQKLS0tLSBhL2V4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzbWFuaWZlc3QuaAotKysrIGIvZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NtYW5pZmVzdC5oCi1AQCAtMjYsNiArMjYsNyBAQAotICNpbmNsdWRlIDxnbGliLmg+Ci0gI2luY2x1ZGUgPGdpby9naW8uaD4KLSAjaW5jbHVkZSA8Z3N0L2dzdC5oPgotKyNpbmNsdWRlIDxnc3QvYmFzZS9nc3RhZGFwdGVyLmg+Ci0gCi0gR19CRUdJTl9ERUNMUwotIAotQEAgLTczLDUgKzc0LDExIEBAIGNvbnN0IGdjaGFyICogZ3N0X21zc19zdHJlYW1fZ2V0X2xhbmcgKEdzdE1zc1N0cmVhbSAqIHN0cmVhbSk7Ci0gCi0gY29uc3QgZ2NoYXIgKiBnc3RfbXNzX3N0cmVhbV90eXBlX25hbWUgKEdzdE1zc1N0cmVhbVR5cGUgc3RyZWFtdHlwZSk7Ci0gCi0rdm9pZCBnc3RfbXNzX21hbmlmZXN0X2xpdmVfYWRhcHRlcl9wdXNoKEdzdE1zc1N0cmVhbSAqIHN0cmVhbSwgR3N0QnVmZmVyICogYnVmZmVyKTsKLStnc2l6ZSBnc3RfbXNzX21hbmlmZXN0X2xpdmVfYWRhcHRlcl9hdmFpbGFibGUoR3N0TXNzU3RyZWFtICogc3RyZWFtKTsKLStHc3RCdWZmZXIgKiBnc3RfbXNzX21hbmlmZXN0X2xpdmVfYWRhcHRlcl90YWtlX2J1ZmZlcihHc3RNc3NTdHJlYW0gKiBzdHJlYW0sIGdzaXplIG5ieXRlcyk7Ci0rZ2Jvb2xlYW4gZ3N0X21zc19zdHJlYW1fZnJhZ21lbnRfcGFyc2luZ19uZWVkZWQoR3N0TXNzU3RyZWFtICogc3RyZWFtKTsKLSt2b2lkIGdzdF9tc3Nfc3RyZWFtX3BhcnNlX2ZyYWdtZW50KEdzdE1zc1N0cmVhbSAqIHN0cmVhbSwgR3N0QnVmZmVyICogYnVmZmVyKTsKLSsKLSBHX0VORF9ERUNMUwotICNlbmRpZiAvKiBfX0dTVF9NU1NfTUFOSUZFU1RfSF9fICovCi1kaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5jIGIvZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5jCi1pbmRleCA2MzRlNGYzODguLmRkY2E3MjZiNiAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguYwotKysrIGIvZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5jCi1AQCAtMjkxLDYgKzI5MSw5IEBAIGdzdF9hZGFwdGl2ZV9kZW11eF93YWl0X3VudGlsIChHc3RDbG9jayAqIGNsb2NrLCBHQ29uZCAqIGNvbmQsIEdNdXRleCAqIG11dGV4LAotICAgICBHc3RDbG9ja1RpbWUgZW5kX3RpbWUpOwotIHN0YXRpYyBnYm9vbGVhbiBnc3RfYWRhcHRpdmVfZGVtdXhfY2xvY2tfY2FsbGJhY2sgKEdzdENsb2NrICogY2xvY2ssCi0gICAgIEdzdENsb2NrVGltZSB0aW1lLCBHc3RDbG9ja0lEIGlkLCBncG9pbnRlciB1c2VyX2RhdGEpOwotK3N0YXRpYyBnYm9vbGVhbgotK2dzdF9hZGFwdGl2ZV9kZW11eF9yZXF1aXJlc19wZXJpb2RpY2FsX3BsYXlsaXN0X3VwZGF0ZV9kZWZhdWx0IChHc3RBZGFwdGl2ZURlbXV4Ci0rICAgICogZGVtdXgpOwotIAotIC8qIHdlIGNhbid0IHVzZSBHX0RFRklORV9BQlNUUkFDVF9UWVBFIGJlY2F1c2Ugd2UgbmVlZCB0aGUga2xhc3MgaW4gdGhlIF9pbml0Ci0gICogbWV0aG9kIHRvIGdldCB0byB0aGUgcGFkdGVtcGxhdGVzICovCi1AQCAtNDEyLDYgKzQxNSw5IEBAIGdzdF9hZGFwdGl2ZV9kZW11eF9jbGFzc19pbml0IChHc3RBZGFwdGl2ZURlbXV4Q2xhc3MgKiBrbGFzcykKLSAgIGtsYXNzLT5kYXRhX3JlY2VpdmVkID0gZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV9kYXRhX3JlY2VpdmVkX2RlZmF1bHQ7Ci0gICBrbGFzcy0+ZmluaXNoX2ZyYWdtZW50ID0gZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV9maW5pc2hfZnJhZ21lbnRfZGVmYXVsdDsKLSAgIGtsYXNzLT51cGRhdGVfbWFuaWZlc3QgPSBnc3RfYWRhcHRpdmVfZGVtdXhfdXBkYXRlX21hbmlmZXN0X2RlZmF1bHQ7Ci0rICBrbGFzcy0+cmVxdWlyZXNfcGVyaW9kaWNhbF9wbGF5bGlzdF91cGRhdGUgPQotKyAgICAgIGdzdF9hZGFwdGl2ZV9kZW11eF9yZXF1aXJlc19wZXJpb2RpY2FsX3BsYXlsaXN0X3VwZGF0ZV9kZWZhdWx0OwotKwotIH0KLSAKLSBzdGF0aWMgdm9pZAotQEAgLTY4Niw3ICs2OTIsOSBAQCBnc3RfYWRhcHRpdmVfZGVtdXhfc2lua19ldmVudCAoR3N0UGFkICogcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsCi0gICAgICAgICAgICAgZGVtdXgtPnByaXYtPnN0b3BfdXBkYXRlc190YXNrID0gRkFMU0U7Ci0gICAgICAgICAgICAgZ19tdXRleF91bmxvY2sgKCZkZW11eC0+cHJpdi0+dXBkYXRlc190aW1lZF9sb2NrKTsKLSAgICAgICAgICAgICAvKiBUYXNrIHRvIHBlcmlvZGljYWxseSB1cGRhdGUgdGhlIG1hbmlmZXN0ICovCi0tICAgICAgICAgICAgZ3N0X3Rhc2tfc3RhcnQgKGRlbXV4LT5wcml2LT51cGRhdGVzX3Rhc2spOwotKyAgICAgICAgICAgIGlmIChkZW11eF9jbGFzcy0+cmVxdWlyZXNfcGVyaW9kaWNhbF9wbGF5bGlzdF91cGRhdGUgKGRlbXV4KSkgewotKyAgICAgICAgICAgICAgZ3N0X3Rhc2tfc3RhcnQgKGRlbXV4LT5wcml2LT51cGRhdGVzX3Rhc2spOwotKyAgICAgICAgICAgIH0KLSAgICAgICAgICAgfQotICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgLyogbm8gc3RyZWFtcyAqLwotQEAgLTIxMjUsNiArMjEzMywxMyBAQCBnc3RfYWRhcHRpdmVfZGVtdXhfc3RyZWFtX2RhdGFfcmVjZWl2ZWRfZGVmYXVsdCAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4LAotICAgcmV0dXJuIGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fcHVzaF9idWZmZXIgKHN0cmVhbSwgYnVmZmVyKTsKLSB9Ci0gCi0rc3RhdGljIGdib29sZWFuCi0rZ3N0X2FkYXB0aXZlX2RlbXV4X3JlcXVpcmVzX3BlcmlvZGljYWxfcGxheWxpc3RfdXBkYXRlX2RlZmF1bHQgKEdzdEFkYXB0aXZlRGVtdXgKLSsgICAgKiBkZW11eCkKLSt7Ci0rICByZXR1cm4gVFJVRTsKLSt9Ci0rCi0gc3RhdGljIEdzdEZsb3dSZXR1cm4KLSBfc3JjX2NoYWluIChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwgR3N0QnVmZmVyICogYnVmZmVyKQotIHsKLUBAIC0zMzM4LDcgKzMzNTMsMTUgQEAgZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV9kb3dubG9hZF9sb29wIChHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICogc3RyZWFtKQotICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHN0cmVhbS0+cGFkLCAiRU9TLCBjaGVja2luZyB0byBzdG9wIGRvd25sb2FkIGxvb3AiKTsKLSAgICAgICAvKiB3ZSBwdXNoIHRoZSBFT1MgYWZ0ZXIgcmVsZWFzaW5nIHRoZSBvYmplY3QgbG9jayAqLwotICAgICAgIGlmIChnc3RfYWRhcHRpdmVfZGVtdXhfaXNfbGl2ZSAoZGVtdXgpKSB7Ci0tICAgICAgICBpZiAoZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV93YWl0X21hbmlmZXN0X3VwZGF0ZSAoZGVtdXgsIHN0cmVhbSkpIHsKLSsgICAgICAgIEdzdEFkYXB0aXZlRGVtdXhDbGFzcyAqZGVtdXhfY2xhc3MgPQotKyAgICAgICAgICAgIEdTVF9BREFQVElWRV9ERU1VWF9HRVRfQ0xBU1MgKGRlbXV4KTsKLSsKLSsgICAgICAgIC8qIHRoaXMgbWlnaHQgYmUgYSBmcmFnbWVudCBkb3dubG9hZCBlcnJvciwgcmVmcmVzaCB0aGUgbWFuaWZlc3QsIGp1c3QgaW4gY2FzZSAqLwotKyAgICAgICAgaWYgKCFkZW11eF9jbGFzcy0+cmVxdWlyZXNfcGVyaW9kaWNhbF9wbGF5bGlzdF91cGRhdGUgKGRlbXV4KSkgewotKyAgICAgICAgICByZXQgPSBnc3RfYWRhcHRpdmVfZGVtdXhfdXBkYXRlX21hbmlmZXN0IChkZW11eCk7Ci0rICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgfSBlbHNlIGlmIChnc3RfYWRhcHRpdmVfZGVtdXhfc3RyZWFtX3dhaXRfbWFuaWZlc3RfdXBkYXRlIChkZW11eCwKLSsgICAgICAgICAgICAgICAgc3RyZWFtKSkgewotICAgICAgICAgICBnb3RvIGVuZDsKLSAgICAgICAgIH0KLSAgICAgICAgIGdzdF90YXNrX3N0b3AgKHN0cmVhbS0+ZG93bmxvYWRfdGFzayk7Ci1kaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5oIGIvZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5oCi1pbmRleCA3ODBmNGQ5M2YuLjlhMWExYjdkMSAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguaAotKysrIGIvZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5oCi1AQCAtNDU5LDYgKzQ1OSwyMCBAQCBzdHJ1Y3QgX0dzdEFkYXB0aXZlRGVtdXhDbGFzcwotICAgICogc2VsZWN0ZWQgcGVyaW9kLgotICAgICovCi0gICBHc3RDbG9ja1RpbWUgKCpnZXRfcGVyaW9kX3N0YXJ0X3RpbWUpIChHc3RBZGFwdGl2ZURlbXV4ICpkZW11eCk7Ci0rCi0rICAvKioKLSsgICAqIHJlcXVpcmVzX3BlcmlvZGljYWxfcGxheWxpc3RfdXBkYXRlOgotKyAgICogQGRlbXV4OiAjR3N0QWRhcHRpdmVEZW11eAotKyAgICoKLSsgICAqIFNvbWUgYWRhcHRpdmUgc3RyZWFtaW5nIHByb3RvY29scyBhbGxvdyB0aGUgY2xpZW50IHRvIGRvd25sb2FkCi0rICAgKiB0aGUgcGxheWxpc3Qgb25jZSBhbmQgYnVpbGQgdXAgdGhlIGZyYWdtZW50IGxpc3QgYmFzZWQgb24gdGhlCi0rICAgKiBjdXJyZW50IGZyYWdtZW50IG1ldGFkYXRhLiBGb3IgdGhvc2UgcHJvdG9jb2xzIHRoZSBkZW11eGVyCi0rICAgKiBkb2Vzbid0IG5lZWQgdG8gcGVyaW9kaWNhbGx5IHJlZnJlc2ggdGhlIHBsYXlsaXN0LiBUaGlzIHZmdW5jCi0rICAgKiBpcyByZWxldmFudCBvbmx5IGZvciBsaXZlIHBsYXliYWNrIHNjZW5hcmlvcy4KLSsgICAqCi0rICAgKiBSZXR1cm46ICVUUlVFIGlmIHRoZSBwbGF5bGlzdCBuZWVkcyB0byBiZSByZWZyZXNoZWQgcGVyaW9kaWNhbGx5IGJ5IHRoZSBkZW11eGVyLgotKyAgICovCi0rICBnYm9vbGVhbiAoKnJlcXVpcmVzX3BlcmlvZGljYWxfcGxheWxpc3RfdXBkYXRlKSAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4KTsKLSB9OwotIAotIEdUeXBlICAgIGdzdF9hZGFwdGl2ZV9kZW11eF9nZXRfdHlwZSAodm9pZCk7Ci0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAxLXNtb290aHN0cmVhbWluZy1pbXBsZW1lbnQtYWRhcHRpdmVkZW11eC1zLWdldF9saXZlX3MucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAxLXNtb290aHN0cmVhbWluZy1pbXBsZW1lbnQtYWRhcHRpdmVkZW11eC1zLWdldF9saXZlX3MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2ZDI5ZTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvMDAwMS1zbW9vdGhzdHJlYW1pbmctaW1wbGVtZW50LWFkYXB0aXZlZGVtdXgtcy1nZXRfbGl2ZV9zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTgzICswLDAgQEAKLUZyb20gZTkxNzhmYTA4MjExNmQ0YmY3MzNiMTg0YThiNjk1MTExMmMxNzkwMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KLURhdGU6IFRodSwgMTAgTm92IDIwMTYgMTc6MTg6MzYgKzExMDAKLVN1YmplY3Q6IFtQQVRDSF0gc21vb3Roc3RyZWFtaW5nOiBpbXBsZW1lbnQgYWRhcHRpdmVkZW11eCdzCi0gZ2V0X2xpdmVfc2Vla19yYW5nZSgpCi0KLUFsbG93cyBzZWVraW5nIHRocm91Z2ggdGhlIGF2YWlsYWJsZSBmcmFnbWVudHMgdGhhdCBhcmUgc3RpbGwgYXZhaWxhYmxlCi1vbiB0aGUgc2VydmVyIGFzIHNwZWNpZmllZCBieSB0aGUgRFZSV2luZG93TGVuZ3RoIGF0dHJpYnV0ZSBpbiB0aGUKLW1hbmlmZXN0LgotCi1odHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc0MTc4Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLSBleHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc2RlbXV4LmMgICAgfCAxMyArKysrKysKLSBleHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc21hbmlmZXN0LmMgfCA4NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBleHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc21hbmlmZXN0LmggfCAgMSArCi0gMyBmaWxlcyBjaGFuZ2VkLCA5OCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9leHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc2RlbXV4LmMgYi9leHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc2RlbXV4LmMKLWluZGV4IDlkMGFlY2UyYi4uYjY2ZTE5NTE0IDEwMDY0NAotLS0tIGEvZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NkZW11eC5jCi0rKysgYi9leHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc2RlbXV4LmMKLUBAIC0xMzgsNiArMTM4LDggQEAgZ3N0X21zc19kZW11eF9nZXRfbWFuaWZlc3RfdXBkYXRlX2ludGVydmFsIChHc3RBZGFwdGl2ZURlbXV4ICogZGVtdXgpOwotIHN0YXRpYyBHc3RGbG93UmV0dXJuCi0gZ3N0X21zc19kZW11eF91cGRhdGVfbWFuaWZlc3RfZGF0YSAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4LAotICAgICBHc3RCdWZmZXIgKiBidWZmZXIpOwotK3N0YXRpYyBnYm9vbGVhbiBnc3RfbXNzX2RlbXV4X2dldF9saXZlX3NlZWtfcmFuZ2UgKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCwKLSsgICAgZ2ludDY0ICogc3RhcnQsIGdpbnQ2NCAqIHN0b3ApOwotIAotIHN0YXRpYyB2b2lkCi0gZ3N0X21zc19kZW11eF9jbGFzc19pbml0IChHc3RNc3NEZW11eENsYXNzICoga2xhc3MpCi1AQCAtMTkyLDYgKzE5NCw4IEBAIGdzdF9tc3NfZGVtdXhfY2xhc3NfaW5pdCAoR3N0TXNzRGVtdXhDbGFzcyAqIGtsYXNzKQotICAgICAgIGdzdF9tc3NfZGVtdXhfc3RyZWFtX3VwZGF0ZV9mcmFnbWVudF9pbmZvOwotICAgZ3N0YWRhcHRpdmVkZW11eF9jbGFzcy0+dXBkYXRlX21hbmlmZXN0X2RhdGEgPQotICAgICAgIGdzdF9tc3NfZGVtdXhfdXBkYXRlX21hbmlmZXN0X2RhdGE7Ci0rICBnc3RhZGFwdGl2ZWRlbXV4X2NsYXNzLT5nZXRfbGl2ZV9zZWVrX3JhbmdlID0KLSsgICAgICBnc3RfbXNzX2RlbXV4X2dldF9saXZlX3NlZWtfcmFuZ2U7Ci0gCi0gICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAobXNzZGVtdXhfZGVidWcsICJtc3NkZW11eCIsIDAsICJtc3NkZW11eCBwbHVnaW4iKTsKLSB9Ci1AQCAtNjU5LDMgKzY2MywxMiBAQCBnc3RfbXNzX2RlbXV4X3VwZGF0ZV9tYW5pZmVzdF9kYXRhIChHc3RBZGFwdGl2ZURlbXV4ICogZGVtdXgsCi0gICBnc3RfbXNzX21hbmlmZXN0X3JlbG9hZF9mcmFnbWVudHMgKG1zc2RlbXV4LT5tYW5pZmVzdCwgYnVmZmVyKTsKLSAgIHJldHVybiBHU1RfRkxPV19PSzsKLSB9Ci0rCi0rc3RhdGljIGdib29sZWFuCi0rZ3N0X21zc19kZW11eF9nZXRfbGl2ZV9zZWVrX3JhbmdlIChHc3RBZGFwdGl2ZURlbXV4ICogZGVtdXgsIGdpbnQ2NCAqIHN0YXJ0LAotKyAgICBnaW50NjQgKiBzdG9wKQotK3sKLSsgIEdzdE1zc0RlbXV4ICptc3NkZW11eCA9IEdTVF9NU1NfREVNVVhfQ0FTVCAoZGVtdXgpOwotKwotKyAgcmV0dXJuIGdzdF9tc3NfbWFuaWZlc3RfZ2V0X2xpdmVfc2Vla19yYW5nZSAobXNzZGVtdXgtPm1hbmlmZXN0LCBzdGFydCwgc3RvcCk7Ci0rfQotZGlmZiAtLWdpdCBhL2V4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzbWFuaWZlc3QuYyBiL2V4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzbWFuaWZlc3QuYwotaW5kZXggMWI3MmU4ZGUxLi4zMTdiM2NlZjkgMTAwNjQ0Ci0tLS0gYS9leHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc21hbmlmZXN0LmMKLSsrKyBiL2V4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzbWFuaWZlc3QuYwotQEAgLTQyLDYgKzQyLDcgQEAgR1NUX0RFQlVHX0NBVEVHT1JZX0VYVEVSTiAobXNzZGVtdXhfZGVidWcpOwotIAotICNkZWZpbmUgTVNTX1BST1BfQklUUkFURSAgICAgICAgICAgICAgIkJpdHJhdGUiCi0gI2RlZmluZSBNU1NfUFJPUF9EVVJBVElPTiAgICAgICAgICAgICAiZCIKLSsjZGVmaW5lIE1TU19QUk9QX0RWUl9XSU5ET1dfTEVOR1RIICAgICJEVlJXaW5kb3dMZW5ndGgiCi0gI2RlZmluZSBNU1NfUFJPUF9MQU5HVUFHRSAgICAgICAgICAgICAiTGFuZ3VhZ2UiCi0gI2RlZmluZSBNU1NfUFJPUF9OVU1CRVIgICAgICAgICAgICAgICAibiIKLSAjZGVmaW5lIE1TU19QUk9QX1JFUEVUSVRJT05TICAgICAgICAgICJyIgotQEAgLTk0LDYgKzk1LDcgQEAgc3RydWN0IF9Hc3RNc3NNYW5pZmVzdAotICAgeG1sTm9kZVB0ciB4bWxyb290bm9kZTsKLSAKLSAgIGdib29sZWFuIGlzX2xpdmU7Ci0rICBnaW50NjQgZHZyX3dpbmRvdzsKLSAKLSAgIEdTdHJpbmcgKnByb3RlY3Rpb25fc3lzdGVtX2lkOwotICAgZ2NoYXIgKnByb3RlY3Rpb25fZGF0YTsKLUBAIC0zMzAsNiArMzMyLDIyIEBAIGdzdF9tc3NfbWFuaWZlc3RfbmV3IChHc3RCdWZmZXIgKiBkYXRhKQotICAgICB4bWxGcmVlIChsaXZlX3N0cik7Ci0gICB9Ci0gCi0rICAvKiB0aGUgZW50aXJlIGZpbGUgaXMgYWx3YXlzIGF2YWlsYWJsZSBmb3Igbm9uLWxpdmUgc3RyZWFtcyAqLwotKyAgaWYgKCFtYW5pZmVzdC0+aXNfbGl2ZSkgewotKyAgICBtYW5pZmVzdC0+ZHZyX3dpbmRvdyA9IDA7Ci0rICB9IGVsc2UgewotKyAgICAvKiBpZiAwLCBvciBub24tZXhpc3RlbnQsIHRoZSBsZW5ndGggaXMgaW5maW5pdGUgKi8KLSsgICAgZ2NoYXIgKmR2cl93aW5kb3dfc3RyID0gKGdjaGFyICopIHhtbEdldFByb3AgKHJvb3QsCi0rICAgICAgICAoeG1sQ2hhciAqKSBNU1NfUFJPUF9EVlJfV0lORE9XX0xFTkdUSCk7Ci0rICAgIGlmIChkdnJfd2luZG93X3N0cikgewotKyAgICAgIG1hbmlmZXN0LT5kdnJfd2luZG93ID0gZ19hc2NpaV9zdHJ0b3VsbCAoZHZyX3dpbmRvd19zdHIsIE5VTEwsIDEwKTsKLSsgICAgICB4bWxGcmVlIChkdnJfd2luZG93X3N0cik7Ci0rICAgICAgaWYgKG1hbmlmZXN0LT5kdnJfd2luZG93IDw9IDApIHsKLSsgICAgICAgIG1hbmlmZXN0LT5kdnJfd2luZG93ID0gMDsKLSsgICAgICB9Ci0rICAgIH0KLSsgIH0KLSsKLSAgIGZvciAobm9kZWl0ZXIgPSByb290LT5jaGlsZHJlbjsgbm9kZWl0ZXI7IG5vZGVpdGVyID0gbm9kZWl0ZXItPm5leHQpIHsKLSAgICAgaWYgKG5vZGVpdGVyLT50eXBlID09IFhNTF9FTEVNRU5UX05PREUKLSAgICAgICAgICYmIChzdHJjbXAgKChjb25zdCBjaGFyICopIG5vZGVpdGVyLT5uYW1lLCAiU3RyZWFtSW5kZXgiKSA9PSAwKSkgewotQEAgLTE0MDYsMyArMTQyNCw2OSBAQCBnc3RfbXNzX3N0cmVhbV9nZXRfbGFuZyAoR3N0TXNzU3RyZWFtICogc3RyZWFtKQotIHsKLSAgIHJldHVybiBzdHJlYW0tPmxhbmc7Ci0gfQotKwotK3N0YXRpYyBHc3RDbG9ja1RpbWUKLStnc3RfbXNzX21hbmlmZXN0X2dldF9kdnJfd2luZG93X2xlbmd0aF9jbG9ja190aW1lIChHc3RNc3NNYW5pZmVzdCAqIG1hbmlmZXN0KQotK3sKLSsgIGdpbnQ2NCB0aW1lc2NhbGU7Ci0rCi0rICAvKiB0aGUgZW50aXJlIGZpbGUgaXMgYWx3YXlzIGF2YWlsYWJsZSBmb3Igbm9uLWxpdmUgc3RyZWFtcyAqLwotKyAgaWYgKG1hbmlmZXN0LT5kdnJfd2luZG93ID09IDApCi0rICAgIHJldHVybiBHU1RfQ0xPQ0tfVElNRV9OT05FOwotKwotKyAgdGltZXNjYWxlID0gZ3N0X21zc19tYW5pZmVzdF9nZXRfdGltZXNjYWxlIChtYW5pZmVzdCk7Ci0rICByZXR1cm4gKEdzdENsb2NrVGltZSkgZ3N0X3V0aWxfdWludDY0X3NjYWxlX3JvdW5kIChtYW5pZmVzdC0+ZHZyX3dpbmRvdywKLSsgICAgICBHU1RfU0VDT05ELCB0aW1lc2NhbGUpOwotK30KLSsKLStzdGF0aWMgZ2Jvb2xlYW4KLStnc3RfbXNzX3N0cmVhbV9nZXRfbGl2ZV9zZWVrX3JhbmdlIChHc3RNc3NTdHJlYW0gKiBzdHJlYW0sIGdpbnQ2NCAqIHN0YXJ0LAotKyAgICBnaW50NjQgKiBzdG9wKQotK3sKLSsgIEdMaXN0ICpsOwotKyAgR3N0TXNzU3RyZWFtRnJhZ21lbnQgKmZyYWdtZW50OwotKyAgZ3VpbnQ2NCB0aW1lc2NhbGUgPSBnc3RfbXNzX3N0cmVhbV9nZXRfdGltZXNjYWxlIChzdHJlYW0pOwotKwotKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHN0cmVhbS0+YWN0aXZlLCBGQUxTRSk7Ci0rCi0rICAvKiBYWFg6IGFzc3VtZXMgYWxsIHRoZSBkYXRhIGluIHRoZSBzdHJlYW0gaXMgc3RpbGwgYXZhaWxhYmxlICovCi0rICBsID0gZ19saXN0X2ZpcnN0IChzdHJlYW0tPmZyYWdtZW50cyk7Ci0rICBmcmFnbWVudCA9IChHc3RNc3NTdHJlYW1GcmFnbWVudCAqKSBsLT5kYXRhOwotKyAgKnN0YXJ0ID0gZ3N0X3V0aWxfdWludDY0X3NjYWxlX3JvdW5kIChmcmFnbWVudC0+dGltZSwgR1NUX1NFQ09ORCwgdGltZXNjYWxlKTsKLSsKLSsgIGwgPSBnX2xpc3RfbGFzdCAoc3RyZWFtLT5mcmFnbWVudHMpOwotKyAgZnJhZ21lbnQgPSAoR3N0TXNzU3RyZWFtRnJhZ21lbnQgKikgbC0+ZGF0YTsKLSsgICpzdG9wID0gZ3N0X3V0aWxfdWludDY0X3NjYWxlX3JvdW5kIChmcmFnbWVudC0+dGltZSArIGZyYWdtZW50LT5kdXJhdGlvbiAqCi0rICAgICAgZnJhZ21lbnQtPnJlcGV0aXRpb25zLCBHU1RfU0VDT05ELCB0aW1lc2NhbGUpOwotKwotKyAgcmV0dXJuIFRSVUU7Ci0rfQotKwotK2dib29sZWFuCi0rZ3N0X21zc19tYW5pZmVzdF9nZXRfbGl2ZV9zZWVrX3JhbmdlIChHc3RNc3NNYW5pZmVzdCAqIG1hbmlmZXN0LCBnaW50NjQgKiBzdGFydCwKLSsgICAgZ2ludDY0ICogc3RvcCkKLSt7Ci0rICBHU0xpc3QgKml0ZXI7Ci0rICBnYm9vbGVhbiByZXQgPSBGQUxTRTsKLSsKLSsgIGZvciAoaXRlciA9IG1hbmlmZXN0LT5zdHJlYW1zOyBpdGVyOyBpdGVyID0gZ19zbGlzdF9uZXh0IChpdGVyKSkgewotKyAgICBHc3RNc3NTdHJlYW0gKnN0cmVhbSA9IGl0ZXItPmRhdGE7Ci0rCi0rICAgIGlmIChzdHJlYW0tPmFjdGl2ZSkgewotKyAgICAgIC8qIEZJWE1FOiBib3VuZCB0aGlzIGNvcnJlY3RseSBmb3IgbXVsdGlwbGUgc3RyZWFtcyAqLwotKyAgICAgIGlmICghKHJldCA9IGdzdF9tc3Nfc3RyZWFtX2dldF9saXZlX3NlZWtfcmFuZ2UgKHN0cmVhbSwgc3RhcnQsIHN0b3ApKSkKLSsgICAgICAgIGJyZWFrOwotKyAgICB9Ci0rICB9Ci0rCi0rICBpZiAocmV0ICYmIGdzdF9tc3NfbWFuaWZlc3RfaXNfbGl2ZSAobWFuaWZlc3QpKSB7Ci0rICAgIEdzdENsb2NrVGltZSBkdnJfd2luZG93ID0KLSsgICAgICAgIGdzdF9tc3NfbWFuaWZlc3RfZ2V0X2R2cl93aW5kb3dfbGVuZ3RoX2Nsb2NrX3RpbWUgKG1hbmlmZXN0KTsKLSsKLSsgICAgaWYgKEdTVF9DTE9DS19USU1FX0lTX1ZBTElEIChkdnJfd2luZG93KSAmJiAqc3RvcCAtICpzdGFydCA+IGR2cl93aW5kb3cpIHsKLSsgICAgICAqc3RhcnQgPSAqc3RvcCAtIGR2cl93aW5kb3c7Ci0rICAgIH0KLSsgIH0KLSsKLSsgIHJldHVybiByZXQ7Ci0rfQotZGlmZiAtLWdpdCBhL2V4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzbWFuaWZlc3QuaCBiL2V4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzbWFuaWZlc3QuaAotaW5kZXggYWY3NDE5YzIzLi42YjdiMWY5NzEgMTAwNjQ0Ci0tLS0gYS9leHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc21hbmlmZXN0LmgKLSsrKyBiL2V4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzbWFuaWZlc3QuaAotQEAgLTU0LDYgKzU0LDcgQEAgdm9pZCBnc3RfbXNzX21hbmlmZXN0X3JlbG9hZF9mcmFnbWVudHMgKEdzdE1zc01hbmlmZXN0ICogbWFuaWZlc3QsIEdzdEJ1ZmZlciAqIGQKLSBHc3RDbG9ja1RpbWUgZ3N0X21zc19tYW5pZmVzdF9nZXRfbWluX2ZyYWdtZW50X2R1cmF0aW9uIChHc3RNc3NNYW5pZmVzdCAqIG1hbmlmZXN0KTsKLSBjb25zdCBnY2hhciAqIGdzdF9tc3NfbWFuaWZlc3RfZ2V0X3Byb3RlY3Rpb25fc3lzdGVtX2lkIChHc3RNc3NNYW5pZmVzdCAqIG1hbmlmZXN0KTsKLSBjb25zdCBnY2hhciAqIGdzdF9tc3NfbWFuaWZlc3RfZ2V0X3Byb3RlY3Rpb25fZGF0YSAoR3N0TXNzTWFuaWZlc3QgKiBtYW5pZmVzdCk7Ci0rZ2Jvb2xlYW4gZ3N0X21zc19tYW5pZmVzdF9nZXRfbGl2ZV9zZWVrX3JhbmdlIChHc3RNc3NNYW5pZmVzdCAqIG1hbmlmZXN0LCBnaW50NjQgKiBzdGFydCwgZ2ludDY0ICogc3RvcCk7Ci0gCi0gR3N0TXNzU3RyZWFtVHlwZSBnc3RfbXNzX3N0cmVhbV9nZXRfdHlwZSAoR3N0TXNzU3RyZWFtICpzdHJlYW0pOwotIEdzdENhcHMgKiBnc3RfbXNzX3N0cmVhbV9nZXRfY2FwcyAoR3N0TXNzU3RyZWFtICogc3RyZWFtKTsKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLzAwMDEtc21vb3Roc3RyZWFtaW5nLXVzZS10aGUtZHVyYXRpb24tZnJvbS10aGUtbGlzdC1vZi1mci5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLzAwMDEtc21vb3Roc3RyZWFtaW5nLXVzZS10aGUtZHVyYXRpb24tZnJvbS10aGUtbGlzdC1vZi1mci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGU1MTA0MC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAxLXNtb290aHN0cmVhbWluZy11c2UtdGhlLWR1cmF0aW9uLWZyb20tdGhlLWxpc3Qtb2YtZnIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi1Gcm9tIDBmYmVlOGYzNzQyN2I4ODMzOTE5NGIyMmJhOWFhMjEwNzcyYTg2MTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+Ci1EYXRlOiBUaHUsIDEwIE5vdiAyMDE2IDE3OjIwOjI3ICsxMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHNtb290aHN0cmVhbWluZzogdXNlIHRoZSBkdXJhdGlvbiBmcm9tIHRoZSBsaXN0IG9mIGZyYWdtZW50cwotIGlmIG5vdCBwcmVzZW50IGluIHRoZSBtYW5pZmVzdAotCi1Qcm92aWRlcyBhIG1vcmUgYWNjdXJhdGUgZHVyYXRpb24gZm9yIGxpdmUgc3RyZWFtcyB0aGF0IG1heSBiZSBtaW51dGVzCi1vciBob3VycyBpbiBmcm9udCBvZiB0aGUgZWFybGllc3QgZnJhZ21lbnQuCi0KLWh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NzQxNzgKLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotIGV4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzbWFuaWZlc3QuYyB8IDI0ICsrKysrKysrKysrKysrKysrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCAyNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9leHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc21hbmlmZXN0LmMgYi9leHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc21hbmlmZXN0LmMKLWluZGV4IDMxN2IzY2VmOS4uMTQ0YmJiNDJkIDEwMDY0NAotLS0tIGEvZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NtYW5pZmVzdC5jCi0rKysgYi9leHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc21hbmlmZXN0LmMKLUBAIC04ODgsNiArODg4LDcgQEAgZ3N0X21zc19tYW5pZmVzdF9nZXRfZHVyYXRpb24gKEdzdE1zc01hbmlmZXN0ICogbWFuaWZlc3QpCi0gICBnY2hhciAqZHVyYXRpb247Ci0gICBndWludDY0IGR1ciA9IC0xOwotIAotKyAgLyogdHJ5IHRoZSBwcm9wZXJ0eSAqLwotICAgZHVyYXRpb24gPQotICAgICAgIChnY2hhciAqKSB4bWxHZXRQcm9wIChtYW5pZmVzdC0+eG1scm9vdG5vZGUsCi0gICAgICAgKHhtbENoYXIgKikgTVNTX1BST1BfU1RSRUFNX0RVUkFUSU9OKTsKLUBAIC04OTUsNiArODk2LDI5IEBAIGdzdF9tc3NfbWFuaWZlc3RfZ2V0X2R1cmF0aW9uIChHc3RNc3NNYW5pZmVzdCAqIG1hbmlmZXN0KQotICAgICBkdXIgPSBnX2FzY2lpX3N0cnRvdWxsIChkdXJhdGlvbiwgTlVMTCwgMTApOwotICAgICB4bWxGcmVlIChkdXJhdGlvbik7Ci0gICB9Ci0rICAvKiBlbHNlIHVzZSB0aGUgZnJhZ21lbnQgbGlzdCAqLwotKyAgaWYgKGR1ciA8PSAwKSB7Ci0rICAgIGd1aW50NjQgbWF4X2R1ciA9IDA7Ci0rICAgIEdTTGlzdCAqaXRlcjsKLSsKLSsgICAgZm9yIChpdGVyID0gbWFuaWZlc3QtPnN0cmVhbXM7IGl0ZXI7IGl0ZXIgPSBnX3NsaXN0X25leHQgKGl0ZXIpKSB7Ci0rICAgICAgR3N0TXNzU3RyZWFtICpzdHJlYW0gPSBpdGVyLT5kYXRhOwotKwotKyAgICAgIGlmIChzdHJlYW0tPmFjdGl2ZSkgewotKyAgICAgICAgaWYgKHN0cmVhbS0+ZnJhZ21lbnRzKSB7Ci0rICAgICAgICAgIEdMaXN0ICpsID0gZ19saXN0X2xhc3QgKHN0cmVhbS0+ZnJhZ21lbnRzKTsKLSsgICAgICAgICAgR3N0TXNzU3RyZWFtRnJhZ21lbnQgKmZyYWdtZW50ID0gKEdzdE1zc1N0cmVhbUZyYWdtZW50ICopIGwtPmRhdGE7Ci0rICAgICAgICAgIGd1aW50NjQgZnJhZ19kdXIgPQotKyAgICAgICAgICAgICAgZnJhZ21lbnQtPnRpbWUgKyBmcmFnbWVudC0+ZHVyYXRpb24gKiBmcmFnbWVudC0+cmVwZXRpdGlvbnM7Ci0rICAgICAgICAgIG1heF9kdXIgPSBNQVggKGZyYWdfZHVyLCBtYXhfZHVyKTsKLSsgICAgICAgIH0KLSsgICAgICB9Ci0rICAgIH0KLSsKLSsgICAgaWYgKG1heF9kdXIgIT0gMCkKLSsgICAgICBkdXIgPSBtYXhfZHVyOwotKyAgfQotKwotICAgcmV0dXJuIGR1cjsKLSB9Ci0gCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAxLXZrZGlzcGxheS1Vc2UtaWZkZWYtZm9yLXBsYXRmb3JtLXNwZWNpZmljLWRlZmluZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAxLXZrZGlzcGxheS1Vc2UtaWZkZWYtZm9yLXBsYXRmb3JtLXNwZWNpZmljLWRlZmluZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2FhYTYyZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLzAwMDEtdmtkaXNwbGF5LVVzZS1pZmRlZi1mb3ItcGxhdGZvcm0tc3BlY2lmaWMtZGVmaW5lcy5wYXRjaApAQCAtMCwwICsxLDM3IEBACitGcm9tIDE1MjNhYjQ2MmMxYmYxOTA1NTk2MGNlZDI1NWY0ODcyYjZjZjlmNWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorRGF0ZTogV2VkLCA1IEp1bCAyMDE3IDExOjAwOjQyICswMzAwCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSB2a2Rpc3BsYXk6IFVzZSBpZmRlZiBmb3IgcGxhdGZvcm0gc3BlY2lmaWMgZGVmaW5lcworCitWS19LSFJfKl9TVVJGQUNFX0VYVEVOU0lPTl9OQU1FIGFyZSBvbmx5IGF2YWlsYWJsZSB3aGVuIGNvcnJlc3BvbmRpbmcKK1dTSSBpcyBlbmFibGVkLgorCitTaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03ODQ1MzldCistLS0KKyBleHQvdnVsa2FuL3ZrZGlzcGxheS5jIHwgNCArKysrCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvZXh0L3Z1bGthbi92a2Rpc3BsYXkuYyBiL2V4dC92dWxrYW4vdmtkaXNwbGF5LmMKK2luZGV4IDU1MDEzNGNkOC4uYWRlNWQ0NTgzIDEwMDY0NAorLS0tIGEvZXh0L3Z1bGthbi92a2Rpc3BsYXkuYworKysrIGIvZXh0L3Z1bGthbi92a2Rpc3BsYXkuYworQEAgLTQ0OCwxMSArNDQ4LDE1IEBAIGdzdF92dWxrYW5fZGlzcGxheV90eXBlX3RvX2V4dGVuc2lvbl9zdHJpbmcgKEdzdFZ1bGthbkRpc3BsYXlUeXBlIHR5cGUpCisgICBpZiAodHlwZSA9PSBHU1RfVlVMS0FOX0RJU1BMQVlfVFlQRV9OT05FKQorICAgICByZXR1cm4gTlVMTDsKKyAKKysjaWYgR1NUX1ZVTEtBTl9IQVZFX1dJTkRPV19YQ0IKKyAgIGlmICh0eXBlICYgR1NUX1ZVTEtBTl9ESVNQTEFZX1RZUEVfWENCKQorICAgICByZXR1cm4gVktfS0hSX1hDQl9TVVJGQUNFX0VYVEVOU0lPTl9OQU1FOworKyNlbmRpZgorIAorKyNpZiBHU1RfVlVMS0FOX0hBVkVfV0lORE9XX1dBWUxBTkQKKyAgIGlmICh0eXBlICYgR1NUX1ZVTEtBTl9ESVNQTEFZX1RZUEVfV0FZTEFORCkKKyAgICAgcmV0dXJuIFZLX0tIUl9XQVlMQU5EX1NVUkZBQ0VfRVhURU5TSU9OX05BTUU7CisrI2VuZGlmCisgCisgICByZXR1cm4gTlVMTDsKKyB9CistLSAKKzIuMTMuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAyLXZ1bGthbi1Vc2UtdGhlLWdlbmVyYXRlZC12ZXJzaW9uLW9mLXZrY29uZmlnLmgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAyLXZ1bGthbi1Vc2UtdGhlLWdlbmVyYXRlZC12ZXJzaW9uLW9mLXZrY29uZmlnLmgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGRmMTQ1ZAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLzAwMDItdnVsa2FuLVVzZS10aGUtZ2VuZXJhdGVkLXZlcnNpb24tb2Ytdmtjb25maWcuaC5wYXRjaApAQCAtMCwwICsxLDY0IEBACitGcm9tIGMyM2UxZGMyMmRlYjQ5NTU2MWNmZmI4NzdlZGIyNzQ2Yjc0MGExZmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgorRGF0ZTogV2VkLCA1IEp1bCAyMDE3IDExOjA3OjA1ICswMzAwCitTdWJqZWN0OiBbUEFUQ0ggMi8yXSB2dWxrYW46IFVzZSB0aGUgZ2VuZXJhdGVkIHZlcnNpb24gb2Ygdmtjb25maWcuaAorCitCdWlsZCBmYWlscyBpbiBleHQvdnVsa2FuL3hjYiBhbmQgZXh0L3Z1bGthbi93YXlsYW5kIHdoZW46CisqIGJ1aWxkaW5nIGZyb20gdGFyYmFsbAorKiBidWlsZGluZyBvdXQtb2YtdHJlZQorKiBPbmx5IG9uZSBXU0kgaW50ZWdyYXRpb24gKHhjYiBvciB3YXlsYW5kKSBpcyBlbmFibGVkIGJ5IGNvbmZpZ3VyZS5hYworVGhpcyBpcyBiZWNhdXNlIHZrY29uZmlnLmggZnJvbSBzb3VyY2UgZGlyZWN0b3J5IGdldHMgdXNlZCBpbnN0ZWFkCitvZiB0aGUgZ2VuZXJhdGVkIG9uZS4KKworQWRkIHRoZSBjb3JyZWN0IGJ1aWxkIGRpcmVjdG9yeSB0byAiLUkiLiBVc2UgYW5nbGUgYnJhY2tldAoraW5jbHVkZSBpbiB2a2FwaS5oIHNvIHRoYXQgaXQgYWN0dWFsbHkgbG9va3MgaW4gdGhlIGluY2x1ZGUgc2VhcmNoCitwYXRoIGluc3RlYWQgb2YgZGVmYXVsdGluZyB0byB0aGUgc2FtZSAoc291cmNlIHRyZWUpIGRpcmVjdG9yeS4KKworU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg0NTM5XQorLS0tCisgZXh0L3Z1bGthbi92a2FwaS5oICAgICAgICAgICAgIHwgMiArLQorIGV4dC92dWxrYW4vd2F5bGFuZC9NYWtlZmlsZS5hbSB8IDEgKworIGV4dC92dWxrYW4veGNiL01ha2VmaWxlLmFtICAgICB8IDEgKworIDMgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9leHQvdnVsa2FuL3ZrYXBpLmggYi9leHQvdnVsa2FuL3ZrYXBpLmgKK2luZGV4IGU5YzIzYWE5Mi4uYTM3YzI5ZDBmIDEwMDY0NAorLS0tIGEvZXh0L3Z1bGthbi92a2FwaS5oCisrKysgYi9leHQvdnVsa2FuL3ZrYXBpLmgKK0BAIC0yMyw3ICsyMyw3IEBACisgCisgI2RlZmluZSBWS19QUk9UT1RZUEVTCisgCistI2luY2x1ZGUgInZrY29uZmlnLmgiCisrI2luY2x1ZGUgPHZrY29uZmlnLmg+CisgI2luY2x1ZGUgInZrX2Z3ZC5oIgorICNpbmNsdWRlICJ2a21hY3Jvcy5oIgorIAorZGlmZiAtLWdpdCBhL2V4dC92dWxrYW4vd2F5bGFuZC9NYWtlZmlsZS5hbSBiL2V4dC92dWxrYW4vd2F5bGFuZC9NYWtlZmlsZS5hbQoraW5kZXggZjkyZDg1ZTJjLi4xMGNmYjcwZTYgMTAwNjQ0CistLS0gYS9leHQvdnVsa2FuL3dheWxhbmQvTWFrZWZpbGUuYW0KKysrKyBiL2V4dC92dWxrYW4vd2F5bGFuZC9NYWtlZmlsZS5hbQorQEAgLTE0LDYgKzE0LDcgQEAgbm9pbnN0X0hFQURFUlMgPSBcCisgCisgbGliZ3N0dnVsa2FuX3dheWxhbmRfbGFfQ0ZMQUdTID0gXAorIAktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAorKwktSSQodG9wX2J1aWxkZGlyKS9leHQvdnVsa2FuIFwKKyAJLUkkKHRvcF9zcmNkaXIpL2V4dC92dWxrYW4gXAorIAktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCisgCSQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpIFwKK2RpZmYgLS1naXQgYS9leHQvdnVsa2FuL3hjYi9NYWtlZmlsZS5hbSBiL2V4dC92dWxrYW4veGNiL01ha2VmaWxlLmFtCitpbmRleCA3ZGViY2ZmOWUuLmI1MTAzNTUxYiAxMDA2NDQKKy0tLSBhL2V4dC92dWxrYW4veGNiL01ha2VmaWxlLmFtCisrKysgYi9leHQvdnVsa2FuL3hjYi9NYWtlZmlsZS5hbQorQEAgLTE0LDYgKzE0LDcgQEAgbm9pbnN0X0hFQURFUlMgPSBcCisgCisgbGliZ3N0dnVsa2FuX3hjYl9sYV9DRkxBR1MgPSBcCisgCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCisrCS1JJCh0b3BfYnVpbGRkaXIpL2V4dC92dWxrYW4gXAorIAktSSQodG9wX3NyY2RpcikvZXh0L3Z1bGthbiBcCisgCS1JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKKyAJJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgXAorLS0gCisyLjEzLjIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvbGluay13aXRoLWxpYnZjaG9zdGlmLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvbGluay13aXRoLWxpYnZjaG9zdGlmLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzODJiMTcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC9saW5rLXdpdGgtbGlidmNob3N0aWYucGF0Y2gKQEAgLTAsMCArMSwzNSBAQAorQWRkIC1sdmNob3N0aWYgdG8gbGluayB3aGVuIHVzaW5nIC1sRUdMIG9uIHJwaQorCitUaGlzIGlzIHJlcXVpcmVkIGJlY2F1c2UgbGliRUdMIGZyb20gdXNlcmxhbmQgdXNlcyBzeWJvbHMKK2Zyb20gdGhpcyBsaWJyYXJ5LgorCitsaWIvbGliRUdMLnNvLjEuMC4wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIxOiAwMDAwMDAwMCAgICAgMCBGVU5DICAgIEdMT0JBTCBERUZBVUxUICBVTkQgdmNfZGlzcG1hbnhfZWxlbWVudF9hZGQKKyAgMTU1MjogMDAwMDAwMDAgICAgIDAgRlVOQyAgICBHTE9CQUwgREVGQVVMVCAgVU5EIHZjX2Rpc3BtYW54X2VsZW1lbnRfYWRkCisKK1RoZXNlIHN5bWJvbHMgYXJlIHByb3ZpZGVkIGJ5IGxpYnZjaG9zdGlmIGFzIHNlZW4gYmVsb3cKKworbGliL2xpYnZjaG9zdGlmLnNvCisgICAyNTI6IDAwMDBiMTYxICAgMTkyIEZVTkMgICAgR0xPQkFMIERFRkFVTFQgICAgOSB2Y19kaXNwbWFueF9lbGVtZW50X2FkZAorICAgODA5OiAwMDAwYjE2MSAgIDE5MiBGVU5DICAgIEdMT0JBTCBERUZBVUxUICAgIDkgdmNfZGlzcG1hbnhfZWxlbWVudF9hZGQKKworV2l0aCB0aGlzIGV4cGxpY2l0IGxpbmssIHBsdWdpbnMgZmFpbCBkdXJpbmcgcnVudGltZQorCisoZ3N0LXBsdWdpbi1zY2FubmVyOjU3MSk6IEdTdHJlYW1lci1XQVJOSU5HICoqOiBGYWlsZWQgdG8gbG9hZCBwbHVnaW4gJy91c3IvbGliL2dzdHJlYW1lci0xLjAvbGliZ3N0b214LnNvJzogRXJyb3IgcmVsb2NhdGluZyAvdXNyL2xpYi9saWJnc3RnbC0xLjAuc28uMDogdmNfZGlzcG1hbnhfZWxlbWVudF9hZGQ6IHN5bWJvbCBub3QgZm91bmQKKyhnc3QtcGx1Z2luLXNjYW5uZXI6NTcxKTogR1N0cmVhbWVyLVdBUk5JTkcgKio6IEZhaWxlZCB0byBsb2FkIHBsdWdpbiAnL3Vzci9saWIvZ3N0cmVhbWVyLTEuMC9saWJnc3RvcGVuZ2wuc28nOiBFcnJvciByZWxvY2F0aW5nIC91c3IvbGliL2xpYmdzdGdsLTEuMC5zby4wOiB2Y19kaXNwbWFueF9lbGVtZW50X2FkZDogc3ltYm9sIG5vdCBmb3VuZAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK0luZGV4OiBnc3QtcGx1Z2lucy1iYWQtMS4xMC40L2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdzdC1wbHVnaW5zLWJhZC0xLjEwLjQub3JpZy9jb25maWd1cmUuYWMKKysrKyBnc3QtcGx1Z2lucy1iYWQtMS4xMC40L2NvbmZpZ3VyZS5hYworQEAgLTc4NSw3ICs3ODUsNyBAQCBjYXNlICRob3N0IGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBVkVfRUdMPXllcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQVZFX0dMRVMyPXllcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQVZFX0VHTF9SUEk9eWVzCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTF9MSUJTPSItbGJjbV9ob3N0IC1sdmNvcyAtbHZjaGlxX2FybSIKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMX0xJQlM9Ii1sYmNtX2hvc3QgLWx2Y2hvc3RpZiAtbHZjb3MgLWx2Y2hpcV9hcm0iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTF9DRkxBR1M9IiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQUNfREVGSU5FKFVTRV9FR0xfUlBJLCBbMV0sIFtVc2UgUlBpIHBsYXRmb3JtXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZF8xLjEwLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZF8xLjEwLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiYjQwNTMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWRfMS4xMC40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotcmVxdWlyZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTczYTU4NTVhODExOWRlYjAxN2Y1ZjEzY2YzMjcwOTVkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT0yMTY4MmU0ZThmZWE1MjQxM2ZkMjZjNjBhY2I5MDdlNSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QvdHRhL2NyYzMyLmg7YmVnaW5saW5lPTEyO2VuZGxpbmU9Mjk7bWQ1PTI3ZGIyNjljNTc1ZDFlNTMxN2ZmZmNhMmQzM2IzYjUwIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC90dGEvZmlsdGVycy5oO2JlZ2lubGluZT0xMjtlbmRsaW5lPTI5O21kNT04YTA4MjcwNjU2ZjJmOGFkN2JiMzY1NWI4MzEzOGU1YSIKLQotU1JDX1VSSSA9ICIgXAotICAgIGh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtcGx1Z2lucy1iYWQvZ3N0LXBsdWdpbnMtYmFkLSR7UFZ9LnRhci54eiBcCi0gICAgZmlsZTovL2NvbmZpZ3VyZS1hbGxvdy10by1kaXNhYmxlLWxpYnNzaDIucGF0Y2ggXAotICAgIGZpbGU6Ly9maXgtbWF5YmUtdW5pbml0aWFsaXplZC13YXJuaW5ncy13aGVuLWNvbXBpbGluZy13aXRoLU9zLnBhdGNoIFwKLSAgICBmaWxlOi8vYXZvaWQtaW5jbHVkaW5nLXN5cy1wb2xsLmgtZGlyZWN0bHkucGF0Y2ggXAotICAgIGZpbGU6Ly9lbnN1cmUtdmFsaWQtc2VudGluZWxzLWZvci1nc3Rfc3RydWN0dXJlX2dldC1ldGMucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLWdzdHJlYW1lci1nbC5wYy5pbi1kb24tdC1hcHBlbmQtR0xfQ0ZMQUdTLXRvLUNGTEFHUy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDktZ2xpbWFnZXNpbmstRG93bnJhbmstdG8tbWFyZ2luYWwucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLWludHJvc3BlY3Rpb24ubTQtcHJlZml4LXBrZ2NvbmZpZy1wYXRocy13aXRoLVBLR19DT04ucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLVByZXBlbmQtUEtHX0NPTkZJR19TWVNST09UX0RJUi10by1wa2ctY29uZmlnLW91dHB1dC5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtc21vb3Roc3RyZWFtaW5nLWltcGxlbWVudC1hZGFwdGl2ZWRlbXV4LXMtZ2V0X2xpdmVfcy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtc21vb3Roc3RyZWFtaW5nLXVzZS10aGUtZHVyYXRpb24tZnJvbS10aGUtbGlzdC1vZi1mci5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtbXNzZGVtdXgtaW1wcm92ZWQtbGl2ZS1wbGF5YmFjay1zdXBwb3J0LnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICIyNzU3MTAzZTU3YTA5NmExYTA1YjNhYjg1YjgzODFhZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyM2RkYWU1MDZiM2EyMjNiOTQ4NjlhMGQzZWVhM2U5YTEyZTg0N2Y5NGQyZDBlMGI5NzEwMmNlMTNlY2Q2OTY2IgotCi1TID0gIiR7V09SS0RJUn0vZ3N0LXBsdWdpbnMtYmFkLSR7UFZ9IgotCi1FWFRSQV9PRUNPTkYgKz0gIldBWUxBTkRfUFJPVE9DT0xTX1NZU1JPT1RfRElSPSR7UkVDSVBFX1NZU1JPT1R9IgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZF8xLjEyLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZF8xLjEyLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODMyMWRhMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkXzEuMTIuMi5iYgpAQCAtMCwwICsxLDI2IEBACityZXF1aXJlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzNhNTg1NWE4MTE5ZGViMDE3ZjVmMTNjZjMyNzA5NWQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTIxNjgyZTRlOGZlYTUyNDEzZmQyNmM2MGFjYjkwN2U1ICIKKworU1JDX1VSSSA9ICIgXAorICAgIGh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtcGx1Z2lucy1iYWQvZ3N0LXBsdWdpbnMtYmFkLSR7UFZ9LnRhci54eiBcCisgICAgZmlsZTovL2NvbmZpZ3VyZS1hbGxvdy10by1kaXNhYmxlLWxpYnNzaDIucGF0Y2ggXAorICAgIGZpbGU6Ly9maXgtbWF5YmUtdW5pbml0aWFsaXplZC13YXJuaW5ncy13aGVuLWNvbXBpbGluZy13aXRoLU9zLnBhdGNoIFwKKyAgICBmaWxlOi8vYXZvaWQtaW5jbHVkaW5nLXN5cy1wb2xsLmgtZGlyZWN0bHkucGF0Y2ggXAorICAgIGZpbGU6Ly9lbnN1cmUtdmFsaWQtc2VudGluZWxzLWZvci1nc3Rfc3RydWN0dXJlX2dldC1ldGMucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLWdzdHJlYW1lci1nbC5wYy5pbi1kb24tdC1hcHBlbmQtR0xfQ0ZMQUdTLXRvLUNGTEFHUy5wYXRjaCBcCisgICAgZmlsZTovLzAwMDktZ2xpbWFnZXNpbmstRG93bnJhbmstdG8tbWFyZ2luYWwucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLWludHJvc3BlY3Rpb24ubTQtcHJlZml4LXBrZ2NvbmZpZy1wYXRocy13aXRoLVBLR19DT04ucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLVByZXBlbmQtUEtHX0NPTkZJR19TWVNST09UX0RJUi10by1wa2ctY29uZmlnLW91dHB1dC5wYXRjaCBcCisgICAgZmlsZTovL2xpbmstd2l0aC1saWJ2Y2hvc3RpZi5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtdmtkaXNwbGF5LVVzZS1pZmRlZi1mb3ItcGxhdGZvcm0tc3BlY2lmaWMtZGVmaW5lcy5wYXRjaCBcCisgICAgZmlsZTovLzAwMDItdnVsa2FuLVVzZS10aGUtZ2VuZXJhdGVkLXZlcnNpb24tb2Ytdmtjb25maWcuaC5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiNTY4M2YwZWE5MWY5ZTFlMDYxM2IwZjZmNzI5OTgwYTciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWMyYzdlZGRlNGY1OWQ3NGViNDE0ZTA3MDFjNTUxMzFmNTYyZTVjNjA1YTNjZTliMDkxNzU0ZjEwNmMwOWUzNyIKKworUyA9ICIke1dPUktESVJ9L2dzdC1wbHVnaW5zLWJhZC0ke1BWfSIKKworRVhUUkFfT0VDT05GICs9ICJXQVlMQU5EX1BST1RPQ09MU19TWVNST09UX0RJUj0ke1JFQ0lQRV9TWVNST09UfSIKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlL2VuY29kZWJpbi1OZWVkLW1vcmUtYnVmZmVycy1pbi1vdXRwdXQtcXVldWUtZm9yLWJldHQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvZW5jb2RlYmluLU5lZWQtbW9yZS1idWZmZXJzLWluLW91dHB1dC1xdWV1ZS1mb3ItYmV0dC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTM0MWUzYy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvZW5jb2RlYmluLU5lZWQtbW9yZS1idWZmZXJzLWluLW91dHB1dC1xdWV1ZS1mb3ItYmV0dC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLUZyb20gNTQwZTAyYzkyYzc1ZTA4YjkwMzI2ODYzZGM3ODdmYTVjYWRmOWRhNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFNvbmcgQmluZyA8YjA2NDk4QGZyZWVzY2FsZS5jb20+Ci1EYXRlOiBGcmksIDEzIE1hciAyMDE1IDE4OjA0OjMxICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGVuY29kZWJpbjogTmVlZCBtb3JlIGJ1ZmZlcnMgaW4gb3V0cHV0IHF1ZXVlIGZvciBiZXR0ZXIKLSBwZXJmb3JtYW5jZQotCi1OZWVkIG1vcmUgYnVmZmVycyBpbiBvdXRwdXQgcXVldWUgZm9yIGJldHRlciBwZXJmb3JtYW5jZQotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc0NDE5MV0KLQotU2lnbmVkLW9mZi1ieTogU29uZyBCaW5nIDxiMDY0OThAZnJlZXNjYWxlLmNvbT4KLS0tLQotIGdzdC9lbmNvZGluZy9nc3RlbmNvZGViaW4uYyB8ICAgIDMgKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ3N0L2VuY29kaW5nL2dzdGVuY29kZWJpbi5jIGIvZ3N0L2VuY29kaW5nL2dzdGVuY29kZWJpbi5jCi1pbmRleCA2NzI4ZTU4Li4zMmRhYWU0IDEwMDY0NAotLS0tIGEvZ3N0L2VuY29kaW5nL2dzdGVuY29kZWJpbi5jCi0rKysgYi9nc3QvZW5jb2RpbmcvZ3N0ZW5jb2RlYmluLmMKLUBAIC0xMjI4LDggKzEyMjgsNyBAQCBfY3JlYXRlX3N0cmVhbV9ncm91cCAoR3N0RW5jb2RlQmluICogZWJpbiwgR3N0RW5jb2RpbmdQcm9maWxlICogc3Byb2YsCi0gICAgKiBXZSBvbmx5IHVzZSBhIDFidWZmZXIgbG9uZyBxdWV1ZSBoZXJlLCB0aGUgYWN0dWFsIHF1ZXVlaW5nIHdpbGwgYmUgZG9uZQotICAgICogaW4gdGhlIGlucHV0IHF1ZXVlICovCi0gICBsYXN0ID0gc2dyb3VwLT5vdXRxdWV1ZSA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSAoInF1ZXVlIiwgTlVMTCk7Ci0tICBnX29iamVjdF9zZXQgKHNncm91cC0+b3V0cXVldWUsICJtYXgtc2l6ZS1idWZmZXJzIiwgKGd1aW50MzIpIDEsCi0tICAgICAgIm1heC1zaXplLWJ5dGVzIiwgKGd1aW50MzIpIDAsICJtYXgtc2l6ZS10aW1lIiwgKGd1aW50NjQpIDAsCi0rICBnX29iamVjdF9zZXQgKHNncm91cC0+b3V0cXVldWUsICJtYXgtc2l6ZS10aW1lIiwgKGd1aW50NjQpIDAsCi0gICAgICAgInNpbGVudCIsIFRSVUUsIE5VTEwpOwotIAotICAgZ3N0X2Jpbl9hZGQgKEdTVF9CSU4gKGViaW4pLCBzZ3JvdXAtPm91dHF1ZXVlKTsKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2VfMS4xMC40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlXzEuMTAuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2M4MTY3MC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2VfMS4xMC40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotcmVxdWlyZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jNTRjZTkzNDU3MjcxNzVmZjY2ZDE3YjY3ZmY1MWY1OCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9Njc2MmVkNDQyYjM4MjIzODdhNTFjOTJkOTI4ZWFkMGQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vY29tbW9uL2NvdmVyYWdlL2NvdmVyYWdlLXJlcG9ydC5wbDtiZWdpbmxpbmU9MjtlbmRsaW5lPTE3O21kNT1hNGUxODMwZmNlMDc4MDI4YzhmMDk3NDE2MTI3MjYwNyIKLQotU1JDX1VSSSA9ICIgXAotICAgIGh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtcGx1Z2lucy1iYXNlL2dzdC1wbHVnaW5zLWJhc2UtJHtQVn0udGFyLnh6IFwKLSAgICBmaWxlOi8vZ2V0LWNhcHMtZnJvbS1zcmMtcGFkLXdoZW4tcXVlcnktY2Fwcy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDMtc3NhcGFyc2UtZW5oYW5jZS1TU0EtdGV4dC1saW5lcy1wYXJzaW5nLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwNC1zdWJwYXJzZS1zZXQtbmVlZF9zZWdtZW50LWFmdGVyLXNpbmstcGFkLXJlY2VpdmVkLUdTLnBhdGNoIFwKLSAgICBmaWxlOi8vZW5jb2RlYmluLU5lZWQtbW9yZS1idWZmZXJzLWluLW91dHB1dC1xdWV1ZS1mb3ItYmV0dC5wYXRjaCBcCi0gICAgZmlsZTovL21ha2UtZ2lvX3VuaXhfMl8wLWRlcGVuZGVuY3ktY29uZmlndXJhYmxlLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICJmNmI0NmY4ZmFjMDFlYjc3M2Q1NTZlM2VmYzM2OWU4NiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmNmQyNDViNmIzZDRjYjczM2Y4MWViYjAyMTA3NGM1MjVlY2U4M2RiMGMxMGU5MzI3OTRiMzM5YjhkOTM1ZWI3IgotCi1TID0gIiR7V09SS0RJUn0vZ3N0LXBsdWdpbnMtYmFzZS0ke1BWfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZV8xLjEyLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2VfMS4xMi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkZTBiOGIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2VfMS4xMi4yLmJiCkBAIC0wLDAgKzEsMTggQEAKK3JlcXVpcmUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzU0Y2U5MzQ1NzI3MTc1ZmY2NmQxN2I2N2ZmNTFmNTggXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTY3NjJlZDQ0MmIzODIyMzg3YTUxYzkyZDkyOGVhZDBkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2NvbW1vbi9jb3ZlcmFnZS9jb3ZlcmFnZS1yZXBvcnQucGw7YmVnaW5saW5lPTI7ZW5kbGluZT0xNzttZDU9YTRlMTgzMGZjZTA3ODAyOGM4ZjA5NzQxNjEyNzI2MDciCisKK1NSQ19VUkkgPSAiIFwKKyAgICBodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LXBsdWdpbnMtYmFzZS9nc3QtcGx1Z2lucy1iYXNlLSR7UFZ9LnRhci54eiBcCisgICAgZmlsZTovL2dldC1jYXBzLWZyb20tc3JjLXBhZC13aGVuLXF1ZXJ5LWNhcHMucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAzLXNzYXBhcnNlLWVuaGFuY2UtU1NBLXRleHQtbGluZXMtcGFyc2luZy5wYXRjaCBcCisgICAgZmlsZTovLzAwMDQtc3VicGFyc2Utc2V0LW5lZWRfc2VnbWVudC1hZnRlci1zaW5rLXBhZC1yZWNlaXZlZC1HUy5wYXRjaCBcCisgICAgZmlsZTovL21ha2UtZ2lvX3VuaXhfMl8wLWRlcGVuZGVuY3ktY29uZmlndXJhYmxlLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICI3N2Y1Mzc5YzRjYTY3NzYxNmI0MTVlM2IzZmY5NTU3OCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1MDY3ZGNlM2FmZTE5N2E5NTM2ZmVhMDEwN2M3NzIxM2ZhYjUzNmRmZjRhMjEzYjA3ZmM2MDM3OGQ1NTEwNjc1IgorCitTID0gIiR7V09SS0RJUn0vZ3N0LXBsdWdpbnMtYmFzZS0ke1BWfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZC8wMDAxLXY0bDItRml4LTRLLWNvbG9yaW1ldHJ5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kLzAwMDEtdjRsMi1GaXgtNEstY29sb3JpbWV0cnkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjc4ODE4YQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZC8wMDAxLXY0bDItRml4LTRLLWNvbG9yaW1ldHJ5LnBhdGNoCkBAIC0wLDAgKzEsNDggQEAKK0Zyb20gNTQ1NjQ2Y2NjYmEyNDMyMzZlMTAzNjJmZTczMjVmODliZTU3ZGExZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE5pY29sYXMgRHVmcmVzbmUgPG5pY29sYXMuZHVmcmVzbmVAY29sbGFib3JhLmNvbT4KK0RhdGU6IFR1ZSwgMTggSnVsIDIwMTcgMTE6Mjg6MzcgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSF0gdjRsMjogRml4IDRLIGNvbG9yaW1ldHJ5CisKK1NpbmNlIDEuNiwgdGhlIHRyYW5zZmVyIGZ1bmN0aW9uIGZvciBCVDIwMjAgaGFzIGJlZW4gY2hhbmdlZCBmcm9tIEJUNzA5Cit0byBCVDIwMjBfMTIuIEl0J3MgdGhlIHNhbWUgZnVuY3Rpb24sIGJ1dCB3aXRoIG1vcmUgcHJlY2lzaW9uLiBBcyBhIHNpZGUKK2VmZmVjdCwgdGhlIFY0TDIgY29sb3Jwc2FjZSBkaWRuJ3QgbWF0Y2ggR1N0cmVhbWVyIGNvbG9yc3BhY2UuIFdoZW4KK0dTdHJlYW1lciBlbmRlZCB1cCBtYWtpbmcgYSBndWVzcywgaXQgd291bGQgbm90IG1hdGNoIGFueXRoaW5nIHN1cHBvcnRlZAorYnkgVjRMMiBhbnltb3JlLiBUaGlzIHRoaXMgYnkgdXNpbmcgQlQyMDIwXzEyIGZvciBCVDIwMjAgY29sb3JzcGFjZSBhbmQKK0JUMjAyMCB0cmFuc2ZlciBmdW5jdGlvbiBpbiByZXBsYWNlbWVudCBvZiBCVDcwOSB3aGVuZXZlciBhIDRLCityZXNvbHV0aW9uIGlzIGRldGVjdGVkLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBOaWNvbGFzIERlY2hlc25lIDxuaWNvbGFzLmRlY2hlc25lQGxpbmFyby5vcmc+CisKKy0tLQorIHN5cy92NGwyL2dzdHY0bDJvYmplY3QuYyB8IDcgKysrKystLQorIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zeXMvdjRsMi9nc3R2NGwyb2JqZWN0LmMgYi9zeXMvdjRsMi9nc3R2NGwyb2JqZWN0LmMKK2luZGV4IDYxMjQ0NDU1Zi4uYWFlMmM1NWU3IDEwMDY0NAorLS0tIGEvc3lzL3Y0bDIvZ3N0djRsMm9iamVjdC5jCisrKysgYi9zeXMvdjRsMi9nc3R2NGwyb2JqZWN0LmMKK0BAIC0xOTYwLDcgKzE5NjAsNyBAQCBnc3RfdjRsMl9vYmplY3RfZ2V0X2NvbG9yc3BhY2UgKHN0cnVjdCB2NGwyX2Zvcm1hdCAqZm10LAorICAgICBjYXNlIFY0TDJfQ09MT1JTUEFDRV9CVDIwMjA6CisgICAgICAgY2luZm8tPnJhbmdlID0gR1NUX1ZJREVPX0NPTE9SX1JBTkdFXzE2XzIzNTsKKyAgICAgICBjaW5mby0+bWF0cml4ID0gR1NUX1ZJREVPX0NPTE9SX01BVFJJWF9CVDIwMjA7CistICAgICAgY2luZm8tPnRyYW5zZmVyID0gR1NUX1ZJREVPX1RSQU5TRkVSX0JUNzA5OworKyAgICAgIGNpbmZvLT50cmFuc2ZlciA9IEdTVF9WSURFT19UUkFOU0ZFUl9CVDIwMjBfMTI7CisgICAgICAgY2luZm8tPnByaW1hcmllcyA9IEdTVF9WSURFT19DT0xPUl9QUklNQVJJRVNfQlQyMDIwOworICAgICAgIGJyZWFrOworICAgICBjYXNlIFY0TDJfQ09MT1JTUEFDRV9TTVBURTI0ME06CitAQCAtMjA2Miw3ICsyMDYyLDEwIEBAIGdzdF92NGwyX29iamVjdF9nZXRfY29sb3JzcGFjZSAoc3RydWN0IHY0bDJfZm9ybWF0ICpmbXQsCisgCisgICBzd2l0Y2ggKHRyYW5zZmVyKSB7CisgICAgIGNhc2UgVjRMMl9YRkVSX0ZVTkNfNzA5OgorLSAgICAgIGNpbmZvLT50cmFuc2ZlciA9IEdTVF9WSURFT19UUkFOU0ZFUl9CVDcwOTsKKysgICAgICBpZiAoZm10LT5mbXQucGl4LmhlaWdodCA+IDIxNjApCisrICAgICAgICBjaW5mby0+dHJhbnNmZXIgPSBHU1RfVklERU9fVFJBTlNGRVJfQlQyMDIwXzEyOworKyAgICAgIGVsc2UKKysgICAgICAgIGNpbmZvLT50cmFuc2ZlciA9IEdTVF9WSURFT19UUkFOU0ZFUl9CVDcwOTsKKyAgICAgICBicmVhazsKKyAgICAgY2FzZSBWNEwyX1hGRVJfRlVOQ19TUkdCOgorICAgICAgIGNpbmZvLT50cmFuc2ZlciA9IEdTVF9WSURFT19UUkFOU0ZFUl9TUkdCOworLS0gCisyLjE0LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kLzAwMDEtdjRsMm9iamVjdC1BbHNvLWFkZC12aWRlb21ldGEtaWYtdGhlcmUtaXMtcGFkZGluZy10by5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZC8wMDAxLXY0bDJvYmplY3QtQWxzby1hZGQtdmlkZW9tZXRhLWlmLXRoZXJlLWlzLXBhZGRpbmctdG8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhOWEyM2UuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kLzAwMDEtdjRsMm9iamVjdC1BbHNvLWFkZC12aWRlb21ldGEtaWYtdGhlcmUtaXMtcGFkZGluZy10by5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLUZyb20gMjJiZTAyNjEyYWRjNzU3ZjZhNDNjZWZjNmVlNjVlY2FlZjY4ZjBkOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENhcmxvcyBSYWZhZWwgR2lhbmkgPGR2QHBzZXVkb3Rlcm1pbmFsLm9yZz4KLURhdGU6IFRodSwgMjMgTWFyIDIwMTcgMjI6MTM6MDUgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gdjRsMm9iamVjdDogQWxzbyBhZGQgdmlkZW9tZXRhIGlmIHRoZXJlIGlzIHBhZGRpbmcgdG8gdGhlCi0gcmlnaHQgYW5kIGJvdHRvbQotCi1odHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgwNDc4Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgWzEuMTAuNV0KLQotU2lnbmVkLW9mZi1ieTogQ2FybG9zIFJhZmFlbCBHaWFuaSA8ZHZAcHNldWRvdGVybWluYWwub3JnPgotLS0tCi0gc3lzL3Y0bDIvZ3N0djRsMm9iamVjdC5jIHwgNSArKystLQotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zeXMvdjRsMi9nc3R2NGwyb2JqZWN0LmMgYi9zeXMvdjRsMi9nc3R2NGwyb2JqZWN0LmMKLWluZGV4IDkxYzhmZjAuLmVkNDY1NGUgMTAwNjQ0Ci0tLS0gYS9zeXMvdjRsMi9nc3R2NGwyb2JqZWN0LmMKLSsrKyBiL3N5cy92NGwyL2dzdHY0bDJvYmplY3QuYwotQEAgLTMwNzAsOSArMzA3MCwxMCBAQCBzdG9yZV9pbmZvOgotICAgR1NUX0RFQlVHX09CSkVDVCAodjRsMm9iamVjdC0+ZWxlbWVudCwgIkdvdCBzaXplaW1hZ2UgJSIgR19HU0laRV9GT1JNQVQsCi0gICAgICAgaW5mby0+c2l6ZSk7Ci0gCi0tICAvKiB0byBhdm9pZCBjb3BpZXMgd2UgbmVlZCB2aWRlbyBtZXRhIGlmIHRvcCBvciBsZWZ0IHBhZGRpbmcgKi8KLSsgIC8qIHRvIGF2b2lkIGNvcGllcyB3ZSBuZWVkIHZpZGVvIG1ldGEgaWYgdGhlcmUgaXMgcGFkZGluZyAqLwotICAgdjRsMm9iamVjdC0+bmVlZF92aWRlb19tZXRhID0KLS0gICAgICAoKGFsaWduLT5wYWRkaW5nX3RvcCArIGFsaWduLT5wYWRkaW5nX2xlZnQpICE9IDApOwotKyAgICAgICgoYWxpZ24tPnBhZGRpbmdfdG9wICsgYWxpZ24tPnBhZGRpbmdfbGVmdCArIGFsaWduLT5wYWRkaW5nX3JpZ2h0ICsKLSsgICAgICAgICAgYWxpZ24tPnBhZGRpbmdfYm90dG9tKSAhPSAwKTsKLSAKLSAgIC8qIC4uLiBvciBpZiBzdHJpZGUgaXMgbm9uICJzdGFuZGFyZCIgKi8KLSAgIGlmICghc3RhbmRhcmRfc3RyaWRlKQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2RfMS4xMC40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kXzEuMTAuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTc0NDdiZi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2RfMS4xMC40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotcmVxdWlyZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kLmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9jb21tb24vY292ZXJhZ2UvY292ZXJhZ2UtcmVwb3J0LnBsO2JlZ2lubGluZT0yO2VuZGxpbmU9MTc7bWQ1PWE0ZTE4MzBmY2UwNzgwMjhjOGYwOTc0MTYxMjcyNjA3IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC9yZXBsYXlnYWluL3JnYW5hbHlzaXMuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIzO21kNT1iNjBlYmVmZDViMmY1YThlMGNhYjZiZmVlMzkxYTVmZSIKLQotU1JDX1VSSSA9ICIgXAotICAgIGh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtcGx1Z2lucy1nb29kL2dzdC1wbHVnaW5zLWdvb2QtJHtQVn0udGFyLnh6IFwKLSAgICBmaWxlOi8vMDAwMS1nc3RydHBtcDRncGF5LXNldC1kYWZhdWx0LXZhbHVlLWZvci1NUEVHNC13aXRob3V0LWNvLnBhdGNoIFwKLSAgICBmaWxlOi8vYXZvaWQtaW5jbHVkaW5nLXN5cy1wb2xsLmgtZGlyZWN0bHkucGF0Y2ggXAotICAgIGZpbGU6Ly9lbnN1cmUtdmFsaWQtc2VudGluZWwtZm9yLWdzdF9zdHJ1Y3R1cmVfZ2V0LnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS12NGwyb2JqZWN0LUFsc28tYWRkLXZpZGVvbWV0YS1pZi10aGVyZS1pcy1wYWRkaW5nLXRvLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICJjYzBjYzEzY2RiMDdkNDIzNzYwMGI2ODg2YjgxZjMxZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4YTg2YzYxNDM0YThjNDQ2NjUzNjViZDBiMzU1N2EwNDA5MzdkMWY0NGJmNjljYWVlNGU5ZWE4MTZjZTc0ZDdlIgotCi1TID0gIiR7V09SS0RJUn0vZ3N0LXBsdWdpbnMtZ29vZC0ke1BWfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZF8xLjEyLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2RfMS4xMi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5NTkzYzkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2RfMS4xMi4yLmJiCkBAIC0wLDAgKzEsMjEgQEAKK3JlcXVpcmUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZC5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTZmODllMjEwMGQ5YjZjZGZmY2VhNGYzOThlMzczNDMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vY29tbW9uL2NvdmVyYWdlL2NvdmVyYWdlLXJlcG9ydC5wbDtiZWdpbmxpbmU9MjtlbmRsaW5lPTE3O21kNT1hNGUxODMwZmNlMDc4MDI4YzhmMDk3NDE2MTI3MjYwNyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QvcmVwbGF5Z2Fpbi9yZ2FuYWx5c2lzLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMzttZDU9YjYwZWJlZmQ1YjJmNWE4ZTBjYWI2YmZlZTM5MWE1ZmUiCisKK1NSQ19VUkkgPSAiIFwKKyAgICBodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LXBsdWdpbnMtZ29vZC9nc3QtcGx1Z2lucy1nb29kLSR7UFZ9LnRhci54eiBcCisgICAgZmlsZTovLzAwMDEtZ3N0cnRwbXA0Z3BheS1zZXQtZGFmYXVsdC12YWx1ZS1mb3ItTVBFRzQtd2l0aG91dC1jby5wYXRjaCBcCisgICAgZmlsZTovL2F2b2lkLWluY2x1ZGluZy1zeXMtcG9sbC5oLWRpcmVjdGx5LnBhdGNoIFwKKyAgICBmaWxlOi8vZW5zdXJlLXZhbGlkLXNlbnRpbmVsLWZvci1nc3Rfc3RydWN0dXJlX2dldC5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtaW50cm9zcGVjdGlvbi5tNC1wcmVmaXgtcGtnY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTi5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtdjRsMi1GaXgtNEstY29sb3JpbWV0cnkucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjIwMjU0MjE3ZDk4MDU0ODQ1MzJlMDhmZjFjM2FhMjk2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU1OTFlZTcyMDhhYjMwMjg5YTMwNjU4YTgyYjc2YmY4NzE2OWM5Mjc1NzJkOWI3OTRmM2E0MWVkNDhlMWVlOTYiCisKK1MgPSAiJHtXT1JLRElSfS9nc3QtcGx1Z2lucy1nb29kLSR7UFZ9IgorCitSUFJPVklERVNfJHtQTn0tcHVsc2VhdWRpbyArPSAiJHtQTn0tcHVsc2UiCitSUFJPVklERVNfJHtQTn0tc291cCArPSAiJHtQTn0tc291cGh0dHBzcmMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHkuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5LmluYwppbmRleCA3MDhhZDdhLi42MGFhOTY4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHkuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtdWdseS5pbmMKQEAgLTE4LDcgKzE4LDYgQEAKIFBBQ0tBR0VDT05GSUdbY2Rpb10gICAgID0gIi0tZW5hYmxlLWNkaW8sLS1kaXNhYmxlLWNkaW8sbGliY2RpbyIKIFBBQ0tBR0VDT05GSUdbZHZkcmVhZF0gID0gIi0tZW5hYmxlLWR2ZHJlYWQsLS1kaXNhYmxlLWR2ZHJlYWQsbGliZHZkcmVhZCIKIFBBQ0tBR0VDT05GSUdbbGFtZV0gICAgID0gIi0tZW5hYmxlLWxhbWUsLS1kaXNhYmxlLWxhbWUsbGFtZSIKLVBBQ0tBR0VDT05GSUdbbWFkXSAgICAgID0gIi0tZW5hYmxlLW1hZCwtLWRpc2FibGUtbWFkLGxpYm1hZCIKIFBBQ0tBR0VDT05GSUdbbXBlZzJkZWNdID0gIi0tZW5hYmxlLW1wZWcyZGVjLC0tZGlzYWJsZS1tcGVnMmRlYyxtcGVnMmRlYyIKIFBBQ0tBR0VDT05GSUdbbXBnMTIzXSAgID0gIi0tZW5hYmxlLW1wZzEyMywtLWRpc2FibGUtbXBnMTIzLG1wZzEyMyIKIFBBQ0tBR0VDT05GSUdbeDI2NF0gICAgID0gIi0tZW5hYmxlLXgyNjQsLS1kaXNhYmxlLXgyNjQseDI2NCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtdWdseV8xLjEwLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHlfMS4xMC40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MmEyY2FhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtdWdseV8xLjEwLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1yZXF1aXJlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHkuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL3hpbmdtdXguYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIxO21kNT00Yzc3MWI4YWYxODg3MjQ4NTVjYjk5Y2FkZDM5MDA2OCIKLQotU1JDX1VSSSA9ICIgXAotICAgIGh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtcGx1Z2lucy11Z2x5L2dzdC1wbHVnaW5zLXVnbHktJHtQVn0udGFyLnh6IFwKLSAgICBmaWxlOi8vMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICJjNjhkMDUwOWM5OTgwYjBiNzBhNGI4MzZmZjczZmZmMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2Mzg2Yzc3Y2E4NDU5Y2JhNDMxZWQwYjYzZGE3ODBjNzA2MmM3Y2M0ODA1NWQyMjIwMjRkOGVhZjE5OGZmYTU5IgotCi1TID0gIiR7V09SS0RJUn0vZ3N0LXBsdWdpbnMtdWdseS0ke1BWfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtdWdseV8xLjEyLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHlfMS4xMi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5NTZjODUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLXVnbHlfMS4xMi4yLmJiCkBAIC0wLDAgKzEsMTMgQEAKK3JlcXVpcmUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtdWdseS5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTZmODllMjEwMGQ5YjZjZGZmY2VhNGYzOThlMzczNDMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdGVzdHMvY2hlY2svZWxlbWVudHMveGluZ211eC5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjE7bWQ1PTRjNzcxYjhhZjE4ODcyNDg1NWNiOTljYWRkMzkwMDY4IgorCitTUkNfVVJJID0gIiBcCisgICAgaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1wbHVnaW5zLXVnbHkvZ3N0LXBsdWdpbnMtdWdseS0ke1BWfS50YXIueHogXAorICAgIGZpbGU6Ly8wMDAxLWludHJvc3BlY3Rpb24ubTQtcHJlZml4LXBrZ2NvbmZpZy1wYXRocy13aXRoLVBLR19DT04ucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gImViNjM5MDIxOTA1YTMyY2YzMDEzY2E1YmFjMWI2OTRkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFjYzM5NDJiYmYzZWE4N2RhM2UzNTQzN2Q0ZTAxNGU5OTFiMTAzZGIyMmE2MTc0ZjYyYTk4Yzg5YzNmNWY0NjYiCisKK1MgPSAiJHtXT1JLRElSfS9nc3QtcGx1Z2lucy11Z2x5LSR7UFZ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLmluYwppbmRleCAzZjZkNGMzLi5jNDBkMzk4IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLmluYwpAQCAtNDksMyArNDksNiBAQAogZG9fY29uZmlndXJlW3ByZWZ1bmNzXSArPSAiIGRlbGV0ZV9wa2dfbTRfZmlsZSBwYXRjaF9ndGtfZG9jX21ha2VmaWxlcyIKIAogUEFDS0FHRVNfRFlOQU1JQyA9ICJeJHtQTn0tLioiCisKKyMgcWVtdS1taXBzNjQ6IGVycm9yIHdoaWxlIGxvYWRpbmcgc2hhcmVkIGxpYnJhcmllczogLi4uL3JlY2lwZS1zeXNyb290L3Vzci9saWIvbGliZ3RocmVhZC0yLjAuc28uMDogRUxGIGZpbGUgZGF0YSBlbmNvZGluZyBub3QgbGl0dGxlLWVuZGlhbgorRVhUUkFfT0VDT05GX2FwcGVuZF9taXBzNjQgPSAiIC0tZGlzYWJsZS1pbnRyb3NwZWN0aW9uICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXB5dGhvbi5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1weXRob24uaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2MWI5MzAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1weXRob24uaW5jCkBAIC0wLDAgKzEsMzUgQEAKK1NVTU1BUlkgPSAiUHl0aG9uIGJpbmRpbmdzIGZvciBHU3RyZWFtZXIgMS4wIgorSE9NRVBBR0UgPSAiaHR0cDovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL2dzdHJlYW1lci9nc3QtcHl0aG9uLyIKK1NFQ1RJT04gPSAibXVsdGltZWRpYSIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCisKK0RFUEVORFMgPSAiZ3N0cmVhbWVyMS4wIHB5dGhvbjMtcHlnb2JqZWN0IgorUkRFUEVORFNfJHtQTn0gKz0gImdzdHJlYW1lcjEuMCBweXRob24zLXB5Z29iamVjdCIKKworUE5SRUFMID0gImdzdC1weXRob24iCisKK1NSQ19VUkkgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjLyR7UE5SRUFMfS8ke1BOUkVBTH0tJHtQVn0udGFyLnh6IgorCitTID0gIiR7V09SS0RJUn0vJHtQTlJFQUx9LSR7UFZ9IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZGlzdHV0aWxzMy1iYXNlIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgIyBnc3RweXRob25wbHVnaW4gaGFyZGNvZGVzIHRoZSBsb2NhdGlvbiBvZiB0aGUgbGlicHl0aG9uIGZyb20gdGhlIGJ1aWxkCisgICAgIyB3b3Jrc3BhY2UgYW5kIHRoZW4gZmFpbHMgYXQgcnVudGltZS4gV2UgY2FuIG92ZXJyaWRlIGl0IHVzaW5nCisgICAgIyAtLXdpdGgtbGlicHl0aG9uLWRpcj0ke2xpYmRpcn0sIGJ1dCBpdCBzdGlsbCBmYWlscyBiZWNhdXNlIGl0IGxvb2tzIGZvciBhCisgICAgIyBzeW1saW5rZWQgbGlicmFyeSBlbmRpbmcgaW4gLnNvIGluc3RlYWQgb2YgdGhlIGFjdHVhbGx5IGxpYnJhcnkgd2l0aAorICAgICMgTElCTkFNRS5zby5NQUpPUi5NSU5PUi4gQWx0aG91Z2ggd2UgY291bGQgcGF0Y2ggdGhlIGNvZGUgdG8gdXNlIHRoZSBwYXRoCisgICAgIyB3ZSB3YW50LCBpdCB3aWxsIGJyZWFrIGFnYWluIGlmIHRoZSBsaWJyYXJ5IHZlcnNpb24gZXZlciBjaGFuZ2VzLiBXZSBuZWVkCisgICAgIyB0byB0aGluayBhYm91dCB0aGUgYmVzdCB3YXkgb2YgaGFuZGxpbmcgdGhpcyBhbmQgcG9zc2libHkgY29uc3VsdAorICAgICMgdXBzdHJlYW0uCisgICAgIworICAgICMgTm90ZSB0aGF0IHRoaXMgcGFydGljdWxhciBmaW5kIGxpbmUgaXMgdGFrZW4gZnJvbSB0aGUgRGViaWFuIHBhY2thZ2luZyBmb3IKKyAgICAjIGdzdC1weXRob24xLjAuCisgICAgZmluZCAiJHtEfSIgXAorICAgICAgICAtbmFtZSAnKi5weWMnIC1vIFwKKyAgICAgICAgLW5hbWUgJyoucHlvJyAtbyBcCisgICAgICAgIC1uYW1lICcqLmxhJyAtbyBcCisgICAgICAgIC1uYW1lICdsaWJnc3RweXRob25wbHVnaW4qJyBcCisgICAgICAgIC1kZWxldGUKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXB5dGhvbl8xLjEyLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1weXRob25fMS4xMi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyZGMwNWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1weXRob25fMS4xMi4yLmJiCkBAIC0wLDAgKzEsNyBAQAorcmVxdWlyZSBnc3RyZWFtZXIxLjAtcHl0aG9uLmluYworCitTUkNfVVJJID0gImh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy8ke1BOUkVBTH0vJHtQTlJFQUx9LSR7UFZ9LnRhci54eiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJkYTVjOWZhNDIyOTBiYzMwMDY2NjFjODY5ZTA3NmZmZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmNGNjMzJhZDQ2YTY1M2UxYWUyZjI3YWMyYTE2MDc4YjAwMDc1YzkxMDZiMjc4NGExYThkMWYzMWM1MDY5ZTQ3IgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jMzRkZWFlNGUzOTVjYTA3ZTcyNWFiMDA3NmE1Zjc0MCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyLmluYwppbmRleCA3MTkxZjk4Li42ODE3M2NlIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1ydHNwLXNlcnZlci5pbmMKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXIuaW5jCkBAIC0zNiwzICszNiw1IEBACiAKIGRvX2NvbmZpZ3VyZVtwcmVmdW5jc10gKz0gIiBkZWxldGVfcGtnX200X2ZpbGUgcGF0Y2hfZ3RrX2RvY19tYWtlZmlsZXMiCiAKKyMgTmVlZHMgdG8gYmUgZGlzYWJsZSBkdWUgdG8gYSBkZXBlbmRlbmN5IG9uIGdzdHJlYW1lci1wbHVnaW5zIGludHJvc3BlY3Rpb24gZmlsZXMKK0VYVFJBX09FQ09ORl9hcHBlbmRfbWlwczY0ID0gIiAtLWRpc2FibGUtaW50cm9zcGVjdGlvbiAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1ydHNwLXNlcnZlcl8xLjEwLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1ydHNwLXNlcnZlcl8xLjEwLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhYTlhNTMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXJfMS4xMC40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1yZXF1aXJlIGdzdHJlYW1lcjEuMC1ydHNwLXNlcnZlci5pbmMKLQotU1JDX1VSSVttZDVzdW1dID0gImVmNTg3ZmE2MzkzZTA5YmMyNmY4ODQ1MTA1OTZlMzA1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJmNmUxMmZkNGUzNTY4ZWUxOTBkYzI0ZTU3ZTRjM2E4Nzg5NzFjM2EzZmI2OTA0YTk2NzQ0MDRmYWMyNTZkZTYiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTY3NjJlZDQ0MmIzODIyMzg3YTUxYzkyZDkyOGVhZDBkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXJfMS4xMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXJfMS4xMi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0MjZjY2EKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1ydHNwLXNlcnZlcl8xLjEyLjIuYmIKQEAgLTAsMCArMSw2IEBACityZXF1aXJlIGdzdHJlYW1lcjEuMC1ydHNwLXNlcnZlci5pbmMKKworU1JDX1VSSVttZDVzdW1dID0gIjAyMjc1N2NhYjE4M2Y1Yjk3MDA4NmU5MTAxYzYwYTk4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ4YmE5MjY0ZThhZTZlNDQwMjkzMzI4ZTc1OWU0MDQ1NmYxNjFhYTY2MDc3YjMxNDNkZDA3NTgxMTM2MTkwYjMiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTY3NjJlZDQ0MmIzODIyMzg3YTUxYzkyZDkyOGVhZDBkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtdmFhcGkuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtdmFhcGkuaW5jCmluZGV4IGVmMDczNGIuLmFiZmNjNjUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC12YWFwaS5pbmMKQEAgLTIyLDEyICsyMiwyMSBAQAogCiBQQUNLQUdFUyA9KyAiJHtQTn0tdGVzdHMiCiAKKyMgT3BlbkdMIHBhY2thZ2Vjb25maWcgZmFjdG9yZWQgb3V0IHRvIG1ha2UgaXQgZWFzeSBmb3IgZGlzdHJvcworIyBhbmQgQlNQIGxheWVycyB0byBwaWNrIGVpdGhlciBnbHgsIGVnbCwgb3Igbm8gR0wuIEJ5IGRlZmF1bHQsCisjIHRyeSBkZXRlY3RpbmcgWDExIGZpcnN0LCBhbmQgaWYgZm91bmQgKHdpdGggT3BlbkdMKSwgdXNlIEdMWCwKKyMgb3RoZXJ3aXNlIHRyeSB0byBjaGVjayBpZiBFR0wgY2FuIGJlIHVzZWQuCitQQUNLQUdFQ09ORklHX0dMID89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMSBvcGVuZ2wnLCAnZ2x4JywgXAorICAgICAgICAgICAgICAgICAgICAgICAgYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICAgICAnb3BlbmdsJywgJ2VnbCcsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycsIGQpLCBkKX0iCisKIFBBQ0tBR0VDT05GSUcgPz89ICJkcm0gXAotICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnb3BlbmdsIHgxMScsICdnbHgnLCAnJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICAke1BBQ0tBR0VDT05GSUdfR0x9IFwKICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kIHgxMScsIGQpfSIKIAogUEFDS0FHRUNPTkZJR1tkcm1dID0gIi0tZW5hYmxlLWRybSwtLWRpc2FibGUtZHJtLHVkZXYgbGliZHJtIgotUEFDS0FHRUNPTkZJR1tnbHhdID0gIi0tZW5hYmxlLWdseCwtLWRpc2FibGUtZ2x4LHZpcnR1YWwvbWVzYSIKK1BBQ0tBR0VDT05GSUdbZWdsXSA9ICItLWVuYWJsZS1lZ2wsLS1kaXNhYmxlLWVnbCx2aXJ0dWFsL2VnbCIKK1BBQ0tBR0VDT05GSUdbZ2x4XSA9ICItLWVuYWJsZS1nbHgsLS1kaXNhYmxlLWdseCx2aXJ0dWFsL2xpYmdsIgogUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItLWVuYWJsZS13YXlsYW5kLC0tZGlzYWJsZS13YXlsYW5kLHdheWxhbmQiCiBQQUNLQUdFQ09ORklHW3gxMV0gPSAiLS1lbmFibGUteDExLC0tZGlzYWJsZS14MTEsdmlydHVhbC9saWJ4MTEgbGlieHJhbmRyIGxpYnhyZW5kZXIiCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpXzEuMTAuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpXzEuMTAuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDRjNjZkZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC12YWFwaV8xLjEwLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLXJlcXVpcmUgZ3N0cmVhbWVyMS4wLXZhYXBpLmluYwotU1JDX1VSSVttZDVzdW1dID0gIjMxOGFmMTdmOTA2NjM3NTcwYjYxZGQ3YmU5YjU1ODFkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAzZTY5MDYyMTU5NGQ5Zjk0OTVkODZjN2RhYzhiODU5MGIzYTE1MDQ2Mjc3MGVkMDcwZGM3NmY2NmE3MGRlNzUiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly92YWFwaXZpZGVvYnVmZmVycG9vbC1jcmVhdGUtYWxsb2NhdG9yLWlmLW5lZWRlZC5wYXRjaCIKLQotREVQRU5EUyArPSAiZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtdmFhcGlfMS4xMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtdmFhcGlfMS4xMi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiZDlmODYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC12YWFwaV8xLjEyLjIuYmIKQEAgLTAsMCArMSw1IEBACityZXF1aXJlIGdzdHJlYW1lcjEuMC12YWFwaS5pbmMKK1NSQ19VUklbbWQ1c3VtXSA9ICJiZWEwMTVmMzM2OTZhMTVhZDk1NzVmYjcxYWY4NjJlZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyM2M3MTRlMDQ3NGIzYzdhZTZmZjg4ODRhZWJmODUwM2ExYmMzZGVkMzM1ZmEyZDJiMmFjMzE3ODg0NjYxNjNhIgorCitERVBFTkRTICs9ICJnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC5pbmMKaW5kZXggNzJkN2NlNi4uMzI5MTkzNCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLmluYwpAQCAtMjUsMTAgKzI1LDEwIEBACiBQQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICItLWVuYWJsZS12YWxncmluZCwtLWRpc2FibGUtdmFsZ3JpbmQsdmFsZ3JpbmQsIgogUEFDS0FHRUNPTkZJR1tnc3QtdHJhY2VyLWhvb2tzXSA9ICItLWVuYWJsZS1nc3QtdHJhY2VyLWhvb2tzLC0tZGlzYWJsZS1nc3QtdHJhY2VyLWhvb2tzLCIKIFBBQ0tBR0VDT05GSUdbdW53aW5kXSA9ICItLXdpdGgtdW53aW5kLC0td2l0aG91dC11bndpbmQsbGlidW53aW5kIgorUEFDS0FHRUNPTkZJR1tkd10gPSAiLS13aXRoLWR3LC0td2l0aG91dC1kdyxlbGZ1dGlscyIKIAogRVhUUkFfT0VDT05GID0gIiBcCiAgICAgLS1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcgXAotICAgIC0tZGlzYWJsZS1kb2Nib29rIFwKICAgICAtLWRpc2FibGUtZXhhbXBsZXMgXAogIgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC8wMDAxLWNvbmZpZ3VyZS1BZGQtc3dpdGNoZXMtZm9yLWVuYWJsaW5nLWRpc2FibGluZy1saWJkdy0ucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC8wMDAxLWNvbmZpZ3VyZS1BZGQtc3dpdGNoZXMtZm9yLWVuYWJsaW5nLWRpc2FibGluZy1saWJkdy0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTEzMmZkNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLzAwMDEtY29uZmlndXJlLUFkZC1zd2l0Y2hlcy1mb3ItZW5hYmxpbmctZGlzYWJsaW5nLWxpYmR3LS5wYXRjaApAQCAtMCwwICsxLDcwIEBACitGcm9tIGEwY2I0MWJhNzI5MTNlZGEwNjA0OWQyNjZlYzQzZWE4ZjUyYjViZWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDYXJsb3MgUmFmYWVsIEdpYW5pIDxkdkBwc2V1ZG90ZXJtaW5hbC5vcmc+CitEYXRlOiBGcmksIDExIEF1ZyAyMDE3IDIxOjIxOjM2ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZTogQWRkIHN3aXRjaGVzIGZvciBlbmFibGluZy9kaXNhYmxpbmcgbGliZHcgYW5kCisgbGlidW53aW5kCisKK1tPcmlnaW5hbCBwYXRjaCBtb2RpZmllZCB0byBiZSBhcHBsaWNhYmxlIHRvIDEuMTIuMl0KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NzgxOTNdCisKK1NpZ25lZC1vZmYtYnk6IENhcmxvcyBSYWZhZWwgR2lhbmkgPGR2QHBzZXVkb3Rlcm1pbmFsLm9yZz4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDM4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDMyIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGI2YjI5MjMuLjMyZGQ4MjcgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTgyMSwxNSArODIxLDQxIEBAIGZpCisgQU1fQ09ORElUSU9OQUwoSEFWRV9HVEssIHRlc3QgIngkSEFWRV9HVEsiID0gInh5ZXMiKQorIAorIGRubCBsaWJ1bndpbmQgaXMgb3B0aW9uYWxseSB1c2VkIGJ5IHRoZSBsZWFrcyB0cmFjZXIKKy1QS0dfQ0hFQ0tfTU9EVUxFUyhVTldJTkQsIGxpYnVud2luZCwgSEFWRV9VTldJTkQ9eWVzLCBIQVZFX1VOV0lORD1ubykKKy1pZiB0ZXN0ICJ4JEhBVkVfVU5XSU5EIiA9ICJ4eWVzIjsgdGhlbgorLSAgQUNfREVGSU5FKEhBVkVfVU5XSU5ELCAxLCBbbGlidW53aW5kIGF2YWlsYWJsZV0pCisrQUNfQVJHX1dJVEgoW3Vud2luZF0sW0FTX0hFTFBfU1RSSU5HKFstLXdpdGgtdW53aW5kPXllc3xub3xhdXRvXSxbdXNlIGxpYnVud2luZF0pXSwKKysgICAgICAgICAgICBbXSwgW3dpdGhfdW53aW5kPWF1dG9dKQorK2lmIFsgdGVzdCAieCR7d2l0aF91bndpbmR9IiAhPSAieG5vIiBdOyB0aGVuCisrICBQS0dfQ0hFQ0tfTU9EVUxFUyhVTldJTkQsIFtsaWJ1bndpbmRdLAorKyAgICAgIFsKKysgICAgICAgIEhBVkVfVU5XSU5EPXllcworKyAgICAgICAgQUNfREVGSU5FKEhBVkVfVU5XSU5ELCAxLCBbbGlidW53aW5kIGF2YWlsYWJsZV0pCisrICAgICAgXSwKKysgICAgICBbCisrICAgICAgICBIQVZFX1VOV0lORD1ubworKyAgICAgICAgaWYgWyB0ZXN0ICJ4JHt3aXRoX3Vud2luZH0iID0gInh5ZXMiIF07IHRoZW4KKysgICAgICAgICAgQUNfTVNHX0VSUk9SKFtjb3VsZCBub3QgZmluZCBsaWJ1bndpbmRdKQorKyAgICAgICAgZmkKKysgICAgICBdKQorK2Vsc2UKKysgIEhBVkVfVU5XSU5EPW5vCisgZmkKKyAKKyBkbmwgbGliZHcgaXMgb3B0aW9uYWxseSB1c2VkIHRvIGFkZCBzb3VyY2UgbGluZXMgYW5kIG51bWJlcnMgdG8gYmFja3RyYWNlcworLVBLR19DSEVDS19NT0RVTEVTKERXLCBsaWJkdywgSEFWRV9EVz15ZXMsIEhBVkVfRFc9bm8pCistaWYgdGVzdCAieCRIQVZFX0RXIiA9ICJ4eWVzIjsgdGhlbgorLSAgQUNfREVGSU5FKEhBVkVfRFcsIDEsIFtsaWJkdyBhdmFpbGFibGVdKQorK0FDX0FSR19XSVRIKFtkd10sW0FTX0hFTFBfU1RSSU5HKFstLXdpdGgtZHc9eWVzfG5vfGF1dG9dLFt1c2UgbGliZHddKV0sCisrICAgICAgICAgICAgW10sIFt3aXRoX2R3PWF1dG9dKQorK2lmIFsgdGVzdCAieCR7d2l0aF9kd30iICE9ICJ4bm8iIF07IHRoZW4KKysgIFBLR19DSEVDS19NT0RVTEVTKERXLCBbbGliZHddLAorKyAgICAgIFsKKysgICAgICAgIEhBVkVfRFc9eWVzCisrICAgICAgICBBQ19ERUZJTkUoSEFWRV9EVywgMSwgW2xpYmR3IGF2YWlsYWJsZV0pCisrICAgICAgXSwKKysgICAgICBbCisrICAgICAgICBIQVZFX0RXPW5vCisrICAgICAgICBpZiBbIHRlc3QgIngke3dpdGhfZHd9IiA9ICJ4eWVzIiBdOyB0aGVuCisrICAgICAgICAgIEFDX01TR19FUlJPUihbY291bGQgbm90IGZpbmQgbGliZHddKQorKyAgICAgICAgZmkKKysgICAgICBdKQorK2Vsc2UKKysgIEhBVkVfRFc9bm8KKyBmaQorIAorIGRubCBDaGVjayBmb3IgYmFja3RyYWNlKCkgZnJvbSBsaWJjCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wL2RldGVybWluaXN0aWMtdW53aW5kLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAvZGV0ZXJtaW5pc3RpYy11bndpbmQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzOWU2Y2EuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAvZGV0ZXJtaW5pc3RpYy11bndpbmQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1NYWtlIHRoZSBkZXRlY3Rpb24gb2YgbGlidW53aW5kIGRldGVybWluaXN0aWMuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggYWM4OGZiMi4uMTgyYzE5YSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtODI5LDMgKzgyOCwwIEBAIEFNX0NPTkRJVElPTkFMKEhBVkVfR1RLLCB0ZXN0ICJ4JEhBVkVfR1RLIiA9ICJ4eWVzIikKLS1kbmwgbGlidW53aW5kIGlzIG9wdGlvbmFsbHkgdXNlZCBieSB0aGUgbGVha3MgdHJhY2VyCi0tUEtHX0NIRUNLX01PRFVMRVMoVU5XSU5ELCBsaWJ1bndpbmQsIEhBVkVfVU5XSU5EPXllcywgSEFWRV9VTldJTkQ9bm8pCi0tCi1AQCAtODM5LDMgKzgzNiw3IEBAIEFDX0NIRUNLX0ZVTkMoYmFja3RyYWNlLCBbCi0taWYgdGVzdCAieCRIQVZFX1VOV0lORCIgPSAieHllcyI7IHRoZW4KLS0gIEFDX0RFRklORShIQVZFX1VOV0lORCwgMSwgW2xpYnVud2luZCBhdmFpbGFibGVdKQotLWZpCi0rZG5sIGxpYnVud2luZCBpcyBvcHRpb25hbGx5IHVzZWQgYnkgdGhlIGxlYWtzIHRyYWNlcgotK0FDX0FSR19XSVRIKFt1bndpbmRdLFtBU19IRUxQX1NUUklORyhbLS13aXRoLXVud2luZF0sW3VzZSBsaWJ1bndpbmRdKV0sCi0rICAgICAgICAgICAgW10sIFt3aXRoX3Vud2luZD15ZXNdKQotK0FTX0lGKFt0ZXN0ICIkd2l0aF91bndpbmQiID0geWVzXSwKLSsgICAgICBbUEtHX0NIRUNLX01PRFVMRVMoVU5XSU5ELCBsaWJ1bndpbmQpCi0rICAgICAgIEFDX0RFRklORShIQVZFX1VOV0lORCwgMSwgW2xpYnVud2luZCBhdmFpbGFibGVdKV0KLSspCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMF8xLjEwLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMF8xLjEwLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhNjc5OTMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjBfMS4xMC40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotcmVxdWlyZSBnc3RyZWFtZXIxLjAuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTY3NjJlZDQ0MmIzODIyMzg3YTUxYzkyZDkyOGVhZDBkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC9nc3QuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTIxO21kNT1lMDU5MTM4NDgxMjA1ZWUyYzZmYzFjMDc5YzAxNmQwZCIKLQotU1JDX1VSSSA9ICIgXAotICAgIGh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3RyZWFtZXIvZ3N0cmVhbWVyLSR7UFZ9LnRhci54eiBcCi0gICAgZmlsZTovL2RldGVybWluaXN0aWMtdW53aW5kLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICI3YzkxYTk3ZTRhMmRjODFlYWZkNTlkMGEyZjhiMGQ2ZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1MGMyZjVhZjUwYTZjYzZjMGEzZjNlZDQzYmRkOGI1ZTJiZmYwMGJhY2ZiNzY2ZDRiZTEzOWVjMDZkOGI1MjE4IgotCi1TID0gIiR7V09SS0RJUn0vZ3N0cmVhbWVyLSR7UFZ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjBfMS4xMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjBfMS4xMi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkNDFhNTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMF8xLjEyLjIuYmIKQEAgLTAsMCArMSwxMyBAQAorcmVxdWlyZSBnc3RyZWFtZXIxLjAuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTY3NjJlZDQ0MmIzODIyMzg3YTUxYzkyZDkyOGVhZDBkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC9nc3QuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTIxO21kNT1lMDU5MTM4NDgxMjA1ZWUyYzZmYzFjMDc5YzAxNmQwZCIKKworU1JDX1VSSSA9ICIgXAorICAgIGh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3RyZWFtZXIvZ3N0cmVhbWVyLSR7UFZ9LnRhci54eiBcCisgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLUFkZC1zd2l0Y2hlcy1mb3ItZW5hYmxpbmctZGlzYWJsaW5nLWxpYmR3LS5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiNDc0ODg2MDYyMTYwN2ZmZDk2MjQ0ZmI3OWM4NmMyMzgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWZkZTNmMzlhMmVhOTg0ZjllMDdjZTA5MjUwMjg1Y2U5MWY2ZTM2MTlkMTg2ODg5Zjc1YjUxNTRlY2Y5OTRiYSIKKworUyA9ICIke1dPUktESVJ9L2dzdHJlYW1lci0ke1BWfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9sYW1lL2xhbWUvQ1ZFLTIwMTctMTM3MTIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGFtZS9sYW1lL0NWRS0yMDE3LTEzNzEyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5ZWM3NjYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGFtZS9sYW1lL0NWRS0yMDE3LTEzNzEyLnBhdGNoCkBAIC0wLDAgKzEsMzA5IEBACitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwOi8vbGFtZS5jdnMuc291cmNlZm9yZ2UubmV0L3ZpZXd2Yy9sYW1lL2xhbWUvbGlibXAzbGFtZS9pZDN0YWcuYz9yMT0xLjc5JnIyPTEuODBdCisKK0JhY2twb3J0IHBhdGNoIHRvIGZpeCBDVkUtMjAxNy0xMzcxMiBmb3IgbGFtZS4KKworU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CistLS0KKy0tLSBhL2xpYm1wM2xhbWUvaWQzdGFnLmMJMjAxNy8wOC8yMiAxOTo0NDowNQkxLjc5CisrKysgYi9saWJtcDNsYW1lL2lkM3RhZy5jCTIwMTcvMDgvMjggMTU6Mzk6NTEJMS44MAorQEAgLTE5NCw3ICsxOTQsMTEgQEAKKyB9CisgI2VuZGlmCisgCistCisrc3RhdGljIGludAorK2lzX2xhbWVfaW50ZXJuYWxfZmxhZ3NfbnVsbChsYW1lX3QgZ2ZwKQorK3sKKysgICAgcmV0dXJuIChnZnAgJiYgZ2ZwLT5pbnRlcm5hbF9mbGFncykgPyAwIDogMTsKKyt9CisgCisgc3RhdGljIGludAorIGlkM3YyX2FkZF91Y3MyX2xuZyhsYW1lX3QgZ2ZwLCB1aW50MzJfdCBmcmFtZV9pZCwgdW5zaWduZWQgc2hvcnQgY29uc3QgKmRlc2MsIHVuc2lnbmVkIHNob3J0IGNvbnN0ICp0ZXh0KTsKK0BAIC0yMzgsOCArMjQyLDcgQEAKKyBzdGF0aWMgdm9pZAorIGlkM3YyQWRkQXVkaW9EdXJhdGlvbihsYW1lX3QgZ2ZwLCBkb3VibGUgbXMpCisgeworLSAgICBsYW1lX2ludGVybmFsX2ZsYWdzICpnZmMgPSBnZnAgIT0gMCA/IGdmcC0+aW50ZXJuYWxfZmxhZ3MgOiAwOworLSAgICBTZXNzaW9uQ29uZmlnX3QgY29uc3QgKmNvbnN0IGNmZyA9ICZnZmMtPmNmZzsKKysgICAgU2Vzc2lvbkNvbmZpZ190IGNvbnN0ICpjb25zdCBjZmcgPSAmZ2ZwLT5pbnRlcm5hbF9mbGFncy0+Y2ZnOyAvKiBjYWxsZXIgY2hlY2tlZCBwb2ludGVycyAqLworICAgICBjaGFyICAgIGJ1ZmZlclsxMDI0XTsKKyAgICAgZG91YmxlIGNvbnN0IG1heF91bG9uZyA9IE1BWF9VXzMyX05VTTsKKyAgICAgdW5zaWduZWQgbG9uZyBwbGF5bGVuZ3RoX21zOworQEAgLTI4MCw3ICsyODMsMTIgQEAKKyB2b2lkCisgaWQzdGFnX2luaXQobGFtZV90IGdmcCkKKyB7CistICAgIGxhbWVfaW50ZXJuYWxfZmxhZ3MgKmdmYyA9IGdmcC0+aW50ZXJuYWxfZmxhZ3M7CisrICAgIGxhbWVfaW50ZXJuYWxfZmxhZ3MgKmdmYyA9IDA7CisrCisrICAgIGlmIChpc19sYW1lX2ludGVybmFsX2ZsYWdzX251bGwoZ2ZwKSkgeworKyAgICAgICAgcmV0dXJuOworKyAgICB9CisrICAgIGdmYyA9IGdmcC0+aW50ZXJuYWxfZmxhZ3M7CisgICAgIGZyZWVfaWQzdGFnKGdmYyk7CisgICAgIG1lbXNldCgmZ2ZjLT50YWdfc3BlYywgMCwgc2l6ZW9mIGdmYy0+dGFnX3NwZWMpOworICAgICBnZmMtPnRhZ19zcGVjLmdlbnJlX2lkM3YxID0gR0VOUkVfTlVNX1VOS05PV047CitAQCAtMjkzLDcgKzMwMSwxMiBAQAorIHZvaWQKKyBpZDN0YWdfYWRkX3YyKGxhbWVfdCBnZnApCisgeworLSAgICBsYW1lX2ludGVybmFsX2ZsYWdzICpnZmMgPSBnZnAtPmludGVybmFsX2ZsYWdzOworKyAgICBsYW1lX2ludGVybmFsX2ZsYWdzICpnZmMgPSAwOworKworKyAgICBpZiAoaXNfbGFtZV9pbnRlcm5hbF9mbGFnc19udWxsKGdmcCkpIHsKKysgICAgICAgIHJldHVybjsKKysgICAgfQorKyAgICBnZmMgPSBnZnAtPmludGVybmFsX2ZsYWdzOworICAgICBnZmMtPnRhZ19zcGVjLmZsYWdzICY9IH5WMV9PTkxZX0ZMQUc7CisgICAgIGdmYy0+dGFnX3NwZWMuZmxhZ3MgfD0gQUREX1YyX0ZMQUc7CisgfQorQEAgLTMwMSw3ICszMTQsMTIgQEAKKyB2b2lkCisgaWQzdGFnX3YxX29ubHkobGFtZV90IGdmcCkKKyB7CistICAgIGxhbWVfaW50ZXJuYWxfZmxhZ3MgKmdmYyA9IGdmcC0+aW50ZXJuYWxfZmxhZ3M7CisrICAgIGxhbWVfaW50ZXJuYWxfZmxhZ3MgKmdmYyA9IDA7CisrCisrICAgIGlmIChpc19sYW1lX2ludGVybmFsX2ZsYWdzX251bGwoZ2ZwKSkgeworKyAgICAgICAgcmV0dXJuOworKyAgICB9CisrICAgIGdmYyA9IGdmcC0+aW50ZXJuYWxfZmxhZ3M7CisgICAgIGdmYy0+dGFnX3NwZWMuZmxhZ3MgJj0gfihBRERfVjJfRkxBRyB8IFYyX09OTFlfRkxBRyk7CisgICAgIGdmYy0+dGFnX3NwZWMuZmxhZ3MgfD0gVjFfT05MWV9GTEFHOworIH0KK0BAIC0zMDksNyArMzI3LDEyIEBACisgdm9pZAorIGlkM3RhZ192Ml9vbmx5KGxhbWVfdCBnZnApCisgeworLSAgICBsYW1lX2ludGVybmFsX2ZsYWdzICpnZmMgPSBnZnAtPmludGVybmFsX2ZsYWdzOworKyAgICBsYW1lX2ludGVybmFsX2ZsYWdzICpnZmMgPSAwOworKworKyAgICBpZiAoaXNfbGFtZV9pbnRlcm5hbF9mbGFnc19udWxsKGdmcCkpIHsKKysgICAgICAgIHJldHVybjsKKysgICAgfQorKyAgICBnZmMgPSBnZnAtPmludGVybmFsX2ZsYWdzOworICAgICBnZmMtPnRhZ19zcGVjLmZsYWdzICY9IH5WMV9PTkxZX0ZMQUc7CisgICAgIGdmYy0+dGFnX3NwZWMuZmxhZ3MgfD0gVjJfT05MWV9GTEFHOworIH0KK0BAIC0zMTcsNyArMzQwLDEyIEBACisgdm9pZAorIGlkM3RhZ19zcGFjZV92MShsYW1lX3QgZ2ZwKQorIHsKKy0gICAgbGFtZV9pbnRlcm5hbF9mbGFncyAqZ2ZjID0gZ2ZwLT5pbnRlcm5hbF9mbGFnczsKKysgICAgbGFtZV9pbnRlcm5hbF9mbGFncyAqZ2ZjID0gMDsKKysKKysgICAgaWYgKGlzX2xhbWVfaW50ZXJuYWxfZmxhZ3NfbnVsbChnZnApKSB7CisrICAgICAgICByZXR1cm47CisrICAgIH0KKysgICAgZ2ZjID0gZ2ZwLT5pbnRlcm5hbF9mbGFnczsKKyAgICAgZ2ZjLT50YWdfc3BlYy5mbGFncyAmPSB+VjJfT05MWV9GTEFHOworICAgICBnZmMtPnRhZ19zcGVjLmZsYWdzIHw9IFNQQUNFX1YxX0ZMQUc7CisgfQorQEAgLTMzMSw3ICszNTksMTIgQEAKKyB2b2lkCisgaWQzdGFnX3NldF9wYWQobGFtZV90IGdmcCwgc2l6ZV90IG4pCisgeworLSAgICBsYW1lX2ludGVybmFsX2ZsYWdzICpnZmMgPSBnZnAtPmludGVybmFsX2ZsYWdzOworKyAgICBsYW1lX2ludGVybmFsX2ZsYWdzICpnZmMgPSAwOworKworKyAgICBpZiAoaXNfbGFtZV9pbnRlcm5hbF9mbGFnc19udWxsKGdmcCkpIHsKKysgICAgICAgIHJldHVybjsKKysgICAgfQorKyAgICBnZmMgPSBnZnAtPmludGVybmFsX2ZsYWdzOworICAgICBnZmMtPnRhZ19zcGVjLmZsYWdzICY9IH5WMV9PTkxZX0ZMQUc7CisgICAgIGdmYy0+dGFnX3NwZWMuZmxhZ3MgfD0gUEFEX1YyX0ZMQUc7CisgICAgIGdmYy0+dGFnX3NwZWMuZmxhZ3MgfD0gQUREX1YyX0ZMQUc7CitAQCAtNTgzLDIyICs2MTYsMjkgQEAKKyBpbnQKKyBpZDN0YWdfc2V0X2FsYnVtYXJ0KGxhbWVfdCBnZnAsIGNvbnN0IGNoYXIgKmltYWdlLCBzaXplX3Qgc2l6ZSkKKyB7CistICAgIGludCAgICAgbWltZXR5cGUgPSAwOworLSAgICB1bnNpZ25lZCBjaGFyIGNvbnN0ICpkYXRhID0gKHVuc2lnbmVkIGNoYXIgY29uc3QgKikgaW1hZ2U7CistICAgIGxhbWVfaW50ZXJuYWxfZmxhZ3MgKmdmYyA9IGdmcC0+aW50ZXJuYWxfZmxhZ3M7CistCistICAgIC8qIGRldGVybWluZSBNSU1FIHR5cGUgZnJvbSB0aGUgYWN0dWFsIGltYWdlIGRhdGEgKi8KKy0gICAgaWYgKDIgPCBzaXplICYmIGRhdGFbMF0gPT0gMHhGRiAmJiBkYXRhWzFdID09IDB4RDgpIHsKKy0gICAgICAgIG1pbWV0eXBlID0gTUlNRVRZUEVfSlBFRzsKKy0gICAgfQorLSAgICBlbHNlIGlmICg0IDwgc2l6ZSAmJiBkYXRhWzBdID09IDB4ODkgJiYgc3RybmNtcCgoY29uc3QgY2hhciAqKSAmZGF0YVsxXSwgIlBORyIsIDMpID09IDApIHsKKy0gICAgICAgIG1pbWV0eXBlID0gTUlNRVRZUEVfUE5HOworLSAgICB9CistICAgIGVsc2UgaWYgKDQgPCBzaXplICYmIHN0cm5jbXAoKGNvbnN0IGNoYXIgKikgZGF0YSwgIkdJRjgiLCA0KSA9PSAwKSB7CistICAgICAgICBtaW1ldHlwZSA9IE1JTUVUWVBFX0dJRjsKKysgICAgaW50ICAgICBtaW1ldHlwZSA9IE1JTUVUWVBFX05PTkU7CisrICAgIGxhbWVfaW50ZXJuYWxfZmxhZ3MgKmdmYyA9IDA7CisrCisrICAgIGlmIChpc19sYW1lX2ludGVybmFsX2ZsYWdzX251bGwoZ2ZwKSkgeworKyAgICAgICAgcmV0dXJuIDA7CisgICAgIH0KKy0gICAgZWxzZSB7CistICAgICAgICByZXR1cm4gLTE7CisrICAgIGdmYyA9IGdmcC0+aW50ZXJuYWxfZmxhZ3M7CisrCisrICAgIGlmIChpbWFnZSAhPSAwKSB7CisrICAgICAgICB1bnNpZ25lZCBjaGFyIGNvbnN0ICpkYXRhID0gKHVuc2lnbmVkIGNoYXIgY29uc3QgKikgaW1hZ2U7CisrICAgICAgICAvKiBkZXRlcm1pbmUgTUlNRSB0eXBlIGZyb20gdGhlIGFjdHVhbCBpbWFnZSBkYXRhICovCisrICAgICAgICBpZiAoMiA8IHNpemUgJiYgZGF0YVswXSA9PSAweEZGICYmIGRhdGFbMV0gPT0gMHhEOCkgeworKyAgICAgICAgICAgIG1pbWV0eXBlID0gTUlNRVRZUEVfSlBFRzsKKysgICAgICAgIH0KKysgICAgICAgIGVsc2UgaWYgKDQgPCBzaXplICYmIGRhdGFbMF0gPT0gMHg4OSAmJiBzdHJuY21wKChjb25zdCBjaGFyICopICZkYXRhWzFdLCAiUE5HIiwgMykgPT0gMCkgeworKyAgICAgICAgICAgIG1pbWV0eXBlID0gTUlNRVRZUEVfUE5HOworKyAgICAgICAgfQorKyAgICAgICAgZWxzZSBpZiAoNCA8IHNpemUgJiYgc3RybmNtcCgoY29uc3QgY2hhciAqKSBkYXRhLCAiR0lGOCIsIDQpID09IDApIHsKKysgICAgICAgICAgICBtaW1ldHlwZSA9IE1JTUVUWVBFX0dJRjsKKysgICAgICAgIH0KKysgICAgICAgIGVsc2UgeworKyAgICAgICAgICAgIHJldHVybiAtMTsKKysgICAgICAgIH0KKyAgICAgfQorICAgICBpZiAoZ2ZjLT50YWdfc3BlYy5hbGJ1bWFydCAhPSAwKSB7CisgICAgICAgICBmcmVlKGdmYy0+dGFnX3NwZWMuYWxidW1hcnQpOworQEAgLTYwNiw3ICs2NDYsNyBAQAorICAgICAgICAgZ2ZjLT50YWdfc3BlYy5hbGJ1bWFydF9zaXplID0gMDsKKyAgICAgICAgIGdmYy0+dGFnX3NwZWMuYWxidW1hcnRfbWltZXR5cGUgPSBNSU1FVFlQRV9OT05FOworICAgICB9CistICAgIGlmIChzaXplIDwgMSkgeworKyAgICBpZiAoc2l6ZSA8IDEgfHwgbWltZXR5cGUgPT0gTUlNRVRZUEVfTk9ORSkgeworICAgICAgICAgcmV0dXJuIDA7CisgICAgIH0KKyAgICAgZ2ZjLT50YWdfc3BlYy5hbGJ1bWFydCA9IGxhbWVfY2FsbG9jKHVuc2lnbmVkIGNoYXIsIHNpemUpOworQEAgLTk1OSw2ICs5OTksOSBAQAorICAgICBpZiAoZnJhbWVfaWQgPT0gMCkgeworICAgICAgICAgcmV0dXJuIC0xOworICAgICB9CisrICAgIGlmIChpc19sYW1lX2ludGVybmFsX2ZsYWdzX251bGwoZ2ZwKSkgeworKyAgICAgICAgcmV0dXJuIDA7CisrICAgIH0KKyAgICAgaWYgKHRleHQgPT0gMCkgeworICAgICAgICAgcmV0dXJuIDA7CisgICAgIH0KK0BAIC0xMDA4LDYgKzEwNTEsOSBAQAorICAgICBpZiAoZnJhbWVfaWQgPT0gMCkgeworICAgICAgICAgcmV0dXJuIC0xOworICAgICB9CisrICAgIGlmIChpc19sYW1lX2ludGVybmFsX2ZsYWdzX251bGwoZ2ZwKSkgeworKyAgICAgICAgcmV0dXJuIDA7CisrICAgIH0KKyAgICAgaWYgKHRleHQgPT0gMCkgeworICAgICAgICAgcmV0dXJuIDA7CisgICAgIH0KK0BAIC0xMDM3LDYgKzEwODMsOSBAQAorIGludAorIGlkM3RhZ19zZXRfY29tbWVudF9sYXRpbjEobGFtZV90IGdmcCwgY2hhciBjb25zdCAqbGFuZywgY2hhciBjb25zdCAqZGVzYywgY2hhciBjb25zdCAqdGV4dCkKKyB7CisrICAgIGlmIChpc19sYW1lX2ludGVybmFsX2ZsYWdzX251bGwoZ2ZwKSkgeworKyAgICAgICAgcmV0dXJuIDA7CisrICAgIH0KKyAgICAgcmV0dXJuIGlkM3YyX2FkZF9sYXRpbjEoZ2ZwLCBJRF9DT01NRU5ULCBsYW5nLCBkZXNjLCB0ZXh0KTsKKyB9CisgCitAQCAtMTA0NCw2ICsxMDkzLDkgQEAKKyBpbnQKKyBpZDN0YWdfc2V0X2NvbW1lbnRfdXRmMTYobGFtZV90IGdmcCwgY2hhciBjb25zdCAqbGFuZywgdW5zaWduZWQgc2hvcnQgY29uc3QgKmRlc2MsIHVuc2lnbmVkIHNob3J0IGNvbnN0ICp0ZXh0KQorIHsKKysgICAgaWYgKGlzX2xhbWVfaW50ZXJuYWxfZmxhZ3NfbnVsbChnZnApKSB7CisrICAgICAgICByZXR1cm4gMDsKKysgICAgfQorICAgICByZXR1cm4gaWQzdjJfYWRkX3VjczIoZ2ZwLCBJRF9DT01NRU5ULCBsYW5nLCBkZXNjLCB0ZXh0KTsKKyB9CisgCitAQCAtMTA1NCw2ICsxMTA2LDkgQEAKKyBpbnQKKyBpZDN0YWdfc2V0X2NvbW1lbnRfdWNzMihsYW1lX3QgZ2ZwLCBjaGFyIGNvbnN0ICpsYW5nLCB1bnNpZ25lZCBzaG9ydCBjb25zdCAqZGVzYywgdW5zaWduZWQgc2hvcnQgY29uc3QgKnRleHQpCisgeworKyAgICBpZiAoaXNfbGFtZV9pbnRlcm5hbF9mbGFnc19udWxsKGdmcCkpIHsKKysgICAgICAgIHJldHVybiAwOworKyAgICB9CisgICAgIHJldHVybiBpZDN0YWdfc2V0X2NvbW1lbnRfdXRmMTYoZ2ZwLCBsYW5nLCBkZXNjLCB0ZXh0KTsKKyB9CisgCitAQCAtMTI0NCw5ICsxMjk5LDkgQEAKKyBpbnQKKyBpZDN0YWdfc2V0X2dlbnJlKGxhbWVfdCBnZnAsIGNvbnN0IGNoYXIgKmdlbnJlKQorIHsKKy0gICAgbGFtZV9pbnRlcm5hbF9mbGFncyAqZ2ZjID0gZ2ZwLT5pbnRlcm5hbF9mbGFnczsKKysgICAgbGFtZV9pbnRlcm5hbF9mbGFncyAqZ2ZjID0gZ2ZwICE9IDAgPyBnZnAtPmludGVybmFsX2ZsYWdzIDogMDsKKyAgICAgaW50ICAgICByZXQgPSAwOworLSAgICBpZiAoZ2VucmUgJiYgKmdlbnJlKSB7CisrICAgIGlmIChnZmMgJiYgZ2VucmUgJiYgKmdlbnJlKSB7CisgICAgICAgICBpbnQgY29uc3QgbnVtID0gbG9va3VwR2VucmUoZ2VucmUpOworICAgICAgICAgaWYgKG51bSA9PSAtMSkgcmV0dXJuIG51bTsKKyAgICAgICAgIGdmYy0+dGFnX3NwZWMuZmxhZ3MgfD0gQ0hBTkdFRF9GTEFHOworQEAgLTE1MzksNiArMTU5NCw5IEBACisgaW50CisgaWQzdGFnX3NldF9maWVsZHZhbHVlKGxhbWVfdCBnZnAsIGNvbnN0IGNoYXIgKmZpZWxkdmFsdWUpCisgeworKyAgICBpZiAoaXNfbGFtZV9pbnRlcm5hbF9mbGFnc19udWxsKGdmcCkpIHsKKysgICAgICAgIHJldHVybiAwOworKyAgICB9CisgICAgIGlmIChmaWVsZHZhbHVlICYmICpmaWVsZHZhbHVlKSB7CisgICAgICAgICBpZiAoc3RybGVuKGZpZWxkdmFsdWUpIDwgNSB8fCBmaWVsZHZhbHVlWzRdICE9ICc9JykgeworICAgICAgICAgICAgIHJldHVybiAtMTsKK0BAIC0xNTUxLDYgKzE2MDksOSBAQAorIGludAorIGlkM3RhZ19zZXRfZmllbGR2YWx1ZV91dGYxNihsYW1lX3QgZ2ZwLCBjb25zdCB1bnNpZ25lZCBzaG9ydCAqZmllbGR2YWx1ZSkKKyB7CisrICAgIGlmIChpc19sYW1lX2ludGVybmFsX2ZsYWdzX251bGwoZ2ZwKSkgeworKyAgICAgICAgcmV0dXJuIDA7CisrICAgIH0KKyAgICAgaWYgKGZpZWxkdmFsdWUgJiYgKmZpZWxkdmFsdWUpIHsKKyAgICAgICAgIHNpemVfdCBkeCA9IGhhc1VjczJCeXRlT3JkZXJNYXJrZXIoZmllbGR2YWx1ZVswXSk7CisgICAgICAgICB1bnNpZ25lZCBzaG9ydCBjb25zdCBzZXBhcmF0b3IgPSBmcm9tTGF0aW4xQ2hhcihmaWVsZHZhbHVlLCAnPScpOworQEAgLTE1ODEsMjAgKzE2NDIsMjEgQEAKKyBpbnQKKyBpZDN0YWdfc2V0X2ZpZWxkdmFsdWVfdWNzMihsYW1lX3QgZ2ZwLCBjb25zdCB1bnNpZ25lZCBzaG9ydCAqZmllbGR2YWx1ZSkKKyB7CisrICAgIGlmIChpc19sYW1lX2ludGVybmFsX2ZsYWdzX251bGwoZ2ZwKSkgeworKyAgICAgICAgcmV0dXJuIDA7CisrICAgIH0KKyAgICAgcmV0dXJuIGlkM3RhZ19zZXRfZmllbGR2YWx1ZV91dGYxNihnZnAsIGZpZWxkdmFsdWUpOworIH0KKyAKKyBzaXplX3QKKyBsYW1lX2dldF9pZDN2Ml90YWcobGFtZV90IGdmcCwgdW5zaWduZWQgY2hhciAqYnVmZmVyLCBzaXplX3Qgc2l6ZSkKKyB7CistICAgIGxhbWVfaW50ZXJuYWxfZmxhZ3MgKmdmYzsKKy0gICAgaWYgKGdmcCA9PSAwKSB7CisrICAgIGxhbWVfaW50ZXJuYWxfZmxhZ3MgKmdmYyA9IDA7CisrCisrICAgIGlmIChpc19sYW1lX2ludGVybmFsX2ZsYWdzX251bGwoZ2ZwKSkgeworICAgICAgICAgcmV0dXJuIDA7CisgICAgIH0KKyAgICAgZ2ZjID0gZ2ZwLT5pbnRlcm5hbF9mbGFnczsKKy0gICAgaWYgKGdmYyA9PSAwKSB7CistICAgICAgICByZXR1cm4gMDsKKy0gICAgfQorICAgICBpZiAodGVzdF90YWdfc3BlY19mbGFncyhnZmMsIFYxX09OTFlfRkxBRykpIHsKKyAgICAgICAgIHJldHVybiAwOworICAgICB9CitAQCAtMTczNiw3ICsxNzk4LDEyIEBACisgaW50CisgaWQzdGFnX3dyaXRlX3YyKGxhbWVfdCBnZnApCisgeworLSAgICBsYW1lX2ludGVybmFsX2ZsYWdzICpnZmMgPSBnZnAtPmludGVybmFsX2ZsYWdzOworKyAgICBsYW1lX2ludGVybmFsX2ZsYWdzICpnZmMgPSAwOworKworKyAgICBpZiAoaXNfbGFtZV9pbnRlcm5hbF9mbGFnc19udWxsKGdmcCkpIHsKKysgICAgICAgIHJldHVybiAwOworKyAgICB9CisrICAgIGdmYyA9IGdmcC0+aW50ZXJuYWxfZmxhZ3M7CisgI2lmIDAKKyAgICAgZGVidWdfdGFnX3NwZWNfZmxhZ3MoZ2ZjLCAid3JpdGUgdjIiKTsKKyAjZW5kaWYKK0BAIC0xODM3LDEwICsxOTA0LDE1IEBACisgaW50CisgaWQzdGFnX3dyaXRlX3YxKGxhbWVfdCBnZnApCisgeworLSAgICBsYW1lX2ludGVybmFsX2ZsYWdzICpjb25zdCBnZmMgPSBnZnAtPmludGVybmFsX2ZsYWdzOworKyAgICBsYW1lX2ludGVybmFsX2ZsYWdzKiBnZmMgPSAwOworICAgICBzaXplX3QgIGksIG4sIG07CisgICAgIHVuc2lnbmVkIGNoYXIgdGFnWzEyOF07CisgCisrICAgIGlmIChpc19sYW1lX2ludGVybmFsX2ZsYWdzX251bGwoZ2ZwKSkgeworKyAgICAgICAgcmV0dXJuIDA7CisrICAgIH0KKysgICAgZ2ZjID0gZ2ZwLT5pbnRlcm5hbF9mbGFnczsKKysKKyAgICAgbSA9IHNpemVvZih0YWcpOworICAgICBuID0gbGFtZV9nZXRfaWQzdjFfdGFnKGdmcCwgdGFnLCBtKTsKKyAgICAgaWYgKG4gPiBtKSB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGFtZS9sYW1lXzMuOTkuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9sYW1lL2xhbWVfMy45OS41LmJiCmluZGV4IDA0Nzc2MTEuLmU1MzIxYmIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9sYW1lL2xhbWVfMy45OS41LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9sYW1lL2xhbWVfMy45OS41LmJiCkBAIC0xNCw3ICsxNCw5IEBACiAKIFNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2xhbWUvbGFtZS0ke1BWfS50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vbm8tZ3RrMS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9sYW1lLTMuOTkuNV9maXhfZm9yX2F1dG9tYWtlLTEuMTIueC5wYXRjaCAiCisgICAgICAgICAgIGZpbGU6Ly9sYW1lLTMuOTkuNV9maXhfZm9yX2F1dG9tYWtlLTEuMTIueC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xMzcxMi5wYXRjaCBcCisgICAgICAgICAgICIKIAogU1JDX1VSSVttZDVzdW1dID0gIjg0ODM1YjMxM2Q0YThiNjhmNTM0OTgxNmQzM2UwN2NlIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI0MzQ2YjQxNThlNGFmM2JkOWYyZTE5NGJiMjNlYjQ3M2M3NWZiNzM3NzAxMTUyMzM1MzE5NmIxOWI5YTIzZmYiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGliaWQzdGFnL2xpYmlkM3RhZy8wMDAxLUZpeC1ncGVyZi0zLjEtaW5jb21wYXRpYmlsaXR5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYmlkM3RhZy9saWJpZDN0YWcvMDAwMS1GaXgtZ3BlcmYtMy4xLWluY29tcGF0aWJpbGl0eS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NGY0OWY2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYmlkM3RhZy9saWJpZDN0YWcvMDAwMS1GaXgtZ3BlcmYtMy4xLWluY29tcGF0aWJpbGl0eS5wYXRjaApAQCAtMCwwICsxLDQwIEBACitGcm9tIDkxZmNmNjZiOTE4MmM3NWNkMmI5NmQ4ODk5MWQ1YTFjNjMwN2Q0YjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMiBBdWcgMjAxNyAxNjoyNzo1MiArMDMwMAorU3ViamVjdDogW1BBVENIXSBGaXggZ3BlcmYgMy4xIGluY29tcGF0aWJpbGl0eS4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIGNvbXBhdC5oICAgIHwgMiArLQorIGZyYW1ldHlwZS5oIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29tcGF0LmggYi9jb21wYXQuaAoraW5kZXggOGFmNzFlYy4uYjNkODBkOSAxMDA2NDQKKy0tLSBhL2NvbXBhdC5oCisrKysgYi9jb21wYXQuaAorQEAgLTM0LDcgKzM0LDcgQEAgc3RydWN0IGlkM19jb21wYXQgeworIH07CisgCisgc3RydWN0IGlkM19jb21wYXQgY29uc3QgKmlkM19jb21wYXRfbG9va3VwKHJlZ2lzdGVyIGNoYXIgY29uc3QgKiwKKy0JCQkJCSAgIHJlZ2lzdGVyIHVuc2lnbmVkIGludCk7CisrCQkJCQkgICByZWdpc3RlciBzaXplX3QpOworIAorIGludCBpZDNfY29tcGF0X2ZpeHVwKHN0cnVjdCBpZDNfdGFnICopOworIAorZGlmZiAtLWdpdCBhL2ZyYW1ldHlwZS5oIGIvZnJhbWV0eXBlLmgKK2luZGV4IGRkMDY0YjIuLmI1Yjc1OTMgMTAwNjQ0CistLS0gYS9mcmFtZXR5cGUuaAorKysrIGIvZnJhbWV0eXBlLmgKK0BAIC0zNyw2ICszNyw2IEBAIGV4dGVybiBzdHJ1Y3QgaWQzX2ZyYW1ldHlwZSBjb25zdCBpZDNfZnJhbWV0eXBlX3Vua25vd247CisgZXh0ZXJuIHN0cnVjdCBpZDNfZnJhbWV0eXBlIGNvbnN0IGlkM19mcmFtZXR5cGVfb2Jzb2xldGU7CisgCisgc3RydWN0IGlkM19mcmFtZXR5cGUgY29uc3QgKmlkM19mcmFtZXR5cGVfbG9va3VwKHJlZ2lzdGVyIGNoYXIgY29uc3QgKiwKKy0JCQkJCQkgcmVnaXN0ZXIgdW5zaWduZWQgaW50KTsKKysJCQkJCQkgcmVnaXN0ZXIgc2l6ZV90KTsKKyAKKyAjIGVuZGlmCistLSAKKzIuMTMuMgorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGliaWQzdGFnL2xpYmlkM3RhZ18wLjE1LjFiLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYmlkM3RhZy9saWJpZDN0YWdfMC4xNS4xYi5iYgppbmRleCAwNWE4YTQ3Li5mNjEzOWQ2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGliaWQzdGFnL2xpYmlkM3RhZ18wLjE1LjFiLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJpZDN0YWcvbGliaWQzdGFnXzAuMTUuMWIuYmIKQEAgLTksMTAgKzksMTMgQEAKIERFUEVORFMgPSAiemxpYiBncGVyZi1uYXRpdmUiCiBQUiA9ICJyNyIKIAotU1JDX1VSSSA9ICJmdHA6Ly9mdHAubWFycy5vcmcvcHViL21wZWcvbGliaWQzdGFnLSR7UFZ9LnRhci5neiBcCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9tYWQvbGliaWQzdGFnLSR7UFZ9LnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly9hZGRwa2djb25maWcucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vb2Jzb2xldGVfYXV0b21ha2VfbWFjcm9zLnBhdGNoIFwKLSIKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWdwZXJmLTMuMS1pbmNvbXBhdGliaWxpdHkucGF0Y2ggXAorICAgICAgICAgICAiCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbWFkL2ZpbGVzL2xpYmlkM3RhZy8iCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIvcHJvamVjdHMvbWFkL2ZpbGVzL2xpYmlkM3RhZy8oP1A8cHZlcj4uKikvJCIKIAogU1JDX1VSSVttZDVzdW1dID0gImU1ODA4YWQ5OTdiYTMyYzQ5ODgwMzgyMjA3ODc0OGMzIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYzZGE0ZjZlNzk5NzI3OGY4YTNmZWY0YzZhMzcyZDM0MmY3MDUwNTFkMWVlYjZhNDZhODZiMDM2MTBlMjYxNTEiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlicG5nL2xpYnBuZ18xLjYuMjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlicG5nL2xpYnBuZ18xLjYuMjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljYjI5NjcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnBuZy9saWJwbmdfMS42LjI4LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotU1VNTUFSWSA9ICJQTkcgaW1hZ2UgZm9ybWF0IGRlY29kaW5nIGxpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmxpYnBuZy5vcmcvIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJMaWJwbmciCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT02N2Q4ODM3NDEwODYzZjk4MjFiYmQ2MDY1MzZmMDMyOSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9wbmcuaDtlbmRsaW5lPTE0NDttZDU9YWJmYTA0OTdmZWIzOTNiNTg0MmQzZDgyYzEwMDk1MjAiCi1ERVBFTkRTID0gInpsaWIiCi0KLVNSQ19VUkkgPSAiJHtHRU5UT09fTUlSUk9SfS9saWJwbmctJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiNDI1MzU0Zjg2YzM5MjMxOGQzMWFlZGNhNzEwMTkzNzIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDhkM2VjOWRlNmI1ZGI3NDBmZWZhYzcwMmMzN2ZmY2Y5NmFlNDZjYjE3YzE4YzE1NDQ2MzVhMzg1MmY3OGY3YSIKLQotQklOQ09ORklHID0gIiR7YmluZGlyfS9saWJwbmctY29uZmlnICR7YmluZGlyfS9saWJwbmcxNi1jb25maWciCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZy1kaXNhYmxlZCBwa2djb25maWcKLQotIyBXb3JrIGFyb3VuZCBtaXNzaW5nIHN5bWJvbHMKLUVYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJuZW9uIiwgIi0tZW5hYmxlLWFybS1uZW9uPW9uIiwgIi0tZW5hYmxlLWFybS1uZW9uPW9mZiIgLGQpfSIKLQotUEFDS0FHRVMgPSsgIiR7UE59LXRvb2xzIgotCi1GSUxFU18ke1BOfS10b29scyA9ICIke2JpbmRpcn0vcG5nLWZpeC1pdHh0ICR7YmluZGlyfS9wbmdmaXggJHtiaW5kaXJ9L3BuZ2NwIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlicG5nL2xpYnBuZ18xLjYuMzEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlicG5nL2xpYnBuZ18xLjYuMzEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzk2ZWExNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJwbmcvbGlicG5nXzEuNi4zMS5iYgpAQCAtMCwwICsxLDI4IEBACitTVU1NQVJZID0gIlBORyBpbWFnZSBmb3JtYXQgZGVjb2RpbmcgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubGlicG5nLm9yZy8iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkxpYnBuZyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTZmMjFlNGUxZjc5NTgxMGI1ZWE0OTFiMzMzYmM2ZWExIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3BuZy5oO2VuZGxpbmU9MTQ0O21kNT1hZjMwMGM0MTlhNDVjNTNhOGQyZGFhMGI3ZDE2N2E2NiIKK0RFUEVORFMgPSAiemxpYiIKKworTElCViA9ICIxNiIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC8ke0JQTn0vJHtCUE59JHtMSUJWfS8ke1BWfS8ke0JQfS50YXIueHoiCitTUkNfVVJJW21kNXN1bV0gPSAiMWIzNGVhYjQ0MDI2M2UzMmNmYTM5ZDE5NDEzZmFkNTQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjMyYTYwMmRlMDQ5MTZiMmI1Y2U2ZjkwMTgyOWNhZjQxOTUxOWU2YTE2Y2M5Y2Q3YzFjOTExODdkM2VlOGI0MSIKKworTUlSUk9SUyArPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvJHtCUE59LyR7QlBOfSR7TElCVn0vJHtQVn0vICR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0LyR7QlBOfS8ke0JQTn0ke0xJQlZ9L29sZGVyLXJlbGVhc2VzLyR7UFZ9LyIKKworQklOQ09ORklHID0gIiR7YmluZGlyfS9saWJwbmctY29uZmlnICR7YmluZGlyfS9saWJwbmcxNi1jb25maWciCisKK2luaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZy1kaXNhYmxlZCBwa2djb25maWcKKworIyBXb3JrIGFyb3VuZCBtaXNzaW5nIHN5bWJvbHMKK0VYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJuZW9uIiwgIi0tZW5hYmxlLWFybS1uZW9uPW9uIiwgIi0tZW5hYmxlLWFybS1uZW9uPW9mZiIgLGQpfSIKKworUEFDS0FHRVMgPSsgIiR7UE59LXRvb2xzIgorCitGSUxFU18ke1BOfS10b29scyA9ICIke2JpbmRpcn0vcG5nLWZpeC1pdHh0ICR7YmluZGlyfS9wbmdmaXggJHtiaW5kaXJ9L3BuZ2NwIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlic25kZmlsZS9saWJzbmRmaWxlMS9DVkUtMjAxNy04MzYyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnNuZGZpbGUvbGlic25kZmlsZTEvQ1ZFLTIwMTctODM2Mi5wYXRjaAppbmRleCA3NzFlYzkyLi45ZWU3ZTQ2IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlic25kZmlsZS9saWJzbmRmaWxlMS9DVkUtMjAxNy04MzYyLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJzbmRmaWxlL2xpYnNuZGZpbGUxL0NWRS0yMDE3LTgzNjIucGF0Y2gKQEAgLTE0LDIwICsxNCwxNyBAQAogVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL2VyaWtkL2xpYnNuZGZpbGUvY29tbWl0L2VmMWRiYjJkZjFjMGU3NDE0ODY2NDZkZTQwYmQ2MzhhOWM0Y2Q4MDhdCiAKIFNpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+Ci0KLXJlbW92ZWQgaHVuayAjMiBhcyBpdCB3YXMgb25seSBjb3NtZW50aWMgYW5kIGNhdXNlZCBhIG1lcmdlIGNvbmZsaWN0Lgotc2lnbmVmLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4KIC0tLQogIHNyYy9mbGFjLmMgfCAxMSArKysrKysrKystLQogIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKLUluZGV4OiBsaWJzbmRmaWxlLTEuMC4yNy9zcmMvZmxhYy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGlic25kZmlsZS0xLjAuMjcub3JpZy9zcmMvZmxhYy5jCi0rKysgbGlic25kZmlsZS0xLjAuMjcvc3JjL2ZsYWMuYworZGlmZiAtLWdpdCBhL3NyYy9mbGFjLmMgYi9zcmMvZmxhYy5jCitpbmRleCA1YTRmOGMyLi5lNGY5YWFhIDEwMDY0NAorLS0tIGEvc3JjL2ZsYWMuYworKysrIGIvc3JjL2ZsYWMuYwogQEAgLTE2OSw2ICsxNjksMTQgQEAgZmxhY19idWZmZXJfY29weSAoU0ZfUFJJVkFURSAqcHNmKQotIAljb25zdCBGTEFDX19pbnQzMiogY29uc3QgKmJ1ZmZlciA9IHBmbGFjLT53YnVmZmVyIDsKLSAJdW5zaWduZWQgaSA9IDAsIGosIG9mZnNldCA7CisgCWNvbnN0IGludDMyX3QqIGNvbnN0ICpidWZmZXIgPSBwZmxhYy0+d2J1ZmZlciA7CisgCXVuc2lnbmVkIGkgPSAwLCBqLCBvZmZzZXQsIGNoYW5uZWxzLCBsZW4gOwogIAogKwlpZiAocHNmLT5zZi5jaGFubmVscyAhPSAoaW50KSBmcmFtZS0+aGVhZGVyLmNoYW5uZWxzKQogKwl7CXBzZl9sb2dfcHJpbnRmIChwc2YsICJFcnJvcjogRkxBQyBmcmFtZSBjaGFuZ2VkIGZyb20gJWQgdG8gJWQgY2hhbm5lbHNcbiIKQEAgLTQwLDcgKzM3LDE1IEBACiAgCS8qCiAgCSoqCWZyYW1lLT5oZWFkZXIuYmxvY2tzaXplIGlzIHZhcmlhYmxlIGFuZCB3ZSdyZSB1c2luZyBhIGNvbnN0YW50IGJsb2Nrc2l6ZQogIAkqKglvZiBGTEFDX19NQVhfQkxPQ0tfU0laRS4KLUBAIC00MTAsNyArNDE4LDcgQEAgc2ZfZmxhY19tZXRhX2NhbGxiYWNrIChjb25zdCBGTEFDX19TdHJlYQorQEAgLTIwMiw3ICsyMTAsNiBAQCBmbGFjX2J1ZmZlcl9jb3B5IChTRl9QUklWQVRFICpwc2YpCisgCQlyZXR1cm4gMCA7CisgCQl9IDsKKyAKKy0KKyAJbGVuID0gU0ZfTUlOIChwZmxhYy0+bGVuLCBmcmFtZS0+aGVhZGVyLmJsb2Nrc2l6ZSkgOworIAorIAlpZiAocGZsYWMtPnJlbWFpbiAlIGNoYW5uZWxzICE9IDApCitAQCAtNDM2LDcgKzQ0Myw3IEBAIHNmX2ZsYWNfbWV0YV9jYWxsYmFjayAoY29uc3QgRkxBQ19fU3RyZWFtRGVjb2RlciAqIFVOVVNFRCAoZGVjb2RlciksIGNvbnN0IEZMQUNfCiAgCXsJY2FzZSBGTEFDX19NRVRBREFUQV9UWVBFX1NUUkVBTUlORk8gOgogIAkJCWlmIChwc2YtPnNmLmNoYW5uZWxzID4gMCAmJiBwc2YtPnNmLmNoYW5uZWxzICE9IChpbnQpIG1ldGFkYXRhLT5kYXRhLnN0cmVhbV9pbmZvLmNoYW5uZWxzKQogIAkJCXsJcHNmX2xvZ19wcmludGYgKHBzZiwgIkVycm9yOiBGTEFDIHN0cmVhbSBjaGFuZ2VkIGZyb20gJWQgdG8gJWQgY2hhbm5lbHNcbiIKQEAgLTQ5LDMgKzU0LDYgQEAKICAJCQkJCQkJCQlwc2YtPnNmLmNoYW5uZWxzLCBtZXRhZGF0YS0+ZGF0YS5zdHJlYW1faW5mby5jaGFubmVscykgOwogIAkJCQlwc2YtPmVycm9yID0gU0ZFX0ZMQUNfQ0hBTk5FTF9DT1VOVF9DSEFOR0VEIDsKICAJCQkJcmV0dXJuIDsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnNuZGZpbGUvbGlic25kZmlsZTFfMS4wLjI3LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnNuZGZpbGUvbGlic25kZmlsZTFfMS4wLjI3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNmRmNGU5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJzbmRmaWxlL2xpYnNuZGZpbGUxXzEuMC4yNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLVNVTU1BUlkgPSAiQXVkaW8gZm9ybWF0IENvbnZlcnNpb24gbGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubWVnYS1uZXJkLmNvbS9saWJzbmRmaWxlIgotQVVUSE9SID0gIkVyaWsgZGUgQ2FzdHJvIExvcG8iCi1ERVBFTkRTID0gImZsYWMgbGlib2dnIGxpYnZvcmJpcyBzcWxpdGUzIgotU0VDVElPTiA9ICJsaWJzL211bHRpbWVkaWEiCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cubWVnYS1uZXJkLmNvbS9saWJzbmRmaWxlL2ZpbGVzL2xpYnNuZGZpbGUtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTY4OTIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctODM2MS04MzY1LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTgzNjIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctODM2My5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZmQxZDk3YzYwNzdmMDNiNWQ5ODRkNzk1NmZmZWRiN2EiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTM5MTk1MmYyN2Y0YTkyY2ViMmI0YzA2NDkzYWMxMDc4OTZlZDZjNzZiZTlhNjEzYTQ3MzFmMDc2ZDMwZmFjMCIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTc3ZmU5MzIwMjczNmI0N2MwNzAzNTkxMGY0Nzk3NGEiCi0KLUNWRV9QUk9EVUNUID0gImxpYnNuZGZpbGUiCi0KLVMgPSAiJHtXT1JLRElSfS9saWJzbmRmaWxlLSR7UFZ9IgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWxzYScsIGQpfSIKLVBBQ0tBR0VDT05GSUdbYWxzYV0gPSAiLS1lbmFibGUtYWxzYSwtLWRpc2FibGUtYWxzYSxhbHNhLWxpYiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UgcGtnY29uZmlnCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kX2FybSgpIHsKLQlleHBvcnQgYWNfY3Zfc3lzX2xhcmdlZmlsZV9zb3VyY2U9MQotCWV4cG9ydCBhY19jdl9zeXNfZmlsZV9vZmZzZXRfYml0cz02NAotfQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlic25kZmlsZS9saWJzbmRmaWxlMV8xLjAuMjguYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlic25kZmlsZS9saWJzbmRmaWxlMV8xLjAuMjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjgxYWM4MgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJzbmRmaWxlL2xpYnNuZGZpbGUxXzEuMC4yOC5iYgpAQCAtMCwwICsxLDMzIEBACitTVU1NQVJZID0gIkF1ZGlvIGZvcm1hdCBDb252ZXJzaW9uIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm1lZ2EtbmVyZC5jb20vbGlic25kZmlsZSIKK0FVVEhPUiA9ICJFcmlrIGRlIENhc3RybyBMb3BvIgorREVQRU5EUyA9ICJmbGFjIGxpYm9nZyBsaWJ2b3JiaXMgc3FsaXRlMyIKK1NFQ1RJT04gPSAibGlicy9tdWx0aW1lZGlhIgorTElDRU5TRSA9ICJMR1BMdjIuMSIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm1lZ2EtbmVyZC5jb20vbGlic25kZmlsZS9maWxlcy9saWJzbmRmaWxlLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy02ODkyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTgzNjEtODM2NS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy04MzYyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTgzNjMucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjY0NmI1Zjk4Y2U4OWFjNjBjZGIwNjBmY2QzOTgyNDdjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFmZjMzOTI5ZjA0MmZhMzMzYWVkMWU4OTIzYWE2MjhjM2VlOWUxZWI4NTUxMjY4NmM1NTA5MmQxZTVhOWRmYTkiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWU3N2ZlOTMyMDI3MzZiNDdjMDcwMzU5MTBmNDc5NzRhIgorCitDVkVfUFJPRFVDVCA9ICJsaWJzbmRmaWxlIgorCitTID0gIiR7V09SS0RJUn0vbGlic25kZmlsZS0ke1BWfSIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2Fsc2EnLCBkKX0iCitQQUNLQUdFQ09ORklHW2Fsc2FdID0gIi0tZW5hYmxlLWFsc2EsLS1kaXNhYmxlLWFsc2EsYWxzYS1saWIiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGxpYl9wYWNrYWdlIHBrZ2NvbmZpZworCitkb19jb25maWd1cmVfcHJlcGVuZF9hcm0oKSB7CisJZXhwb3J0IGFjX2N2X3N5c19sYXJnZWZpbGVfc291cmNlPTEKKwlleHBvcnQgYWNfY3Zfc3lzX2ZpbGVfb2Zmc2V0X2JpdHM9NjQKK30KKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTYtMTAwOTMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNi0xMDA5My5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTA5YmI3Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNi0xMDA5My5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLUZyb20gNzg3YzBlZTkwNjQzMGI3NzJmMzNjYTUwYjk3YjhiNWNhMDcwZmFlYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGVyb3VhdWx0IDxlcm91YXVsdD4KLURhdGU6IFNhdCwgMyBEZWMgMjAxNiAxNjo0MDowMSArMDAwMAotU3ViamVjdDogW1BBVENIXSAqIHRvb2xzL3RpZmZjcC5jOiBmaXggdWludDMyIHVuZGVyZmxvdy9vdmVyZmxvdyB0aGF0IGNhbgotIGNhdXNlIGhlYXAtYmFzZWQgYnVmZmVyIG92ZXJmbG93LiBSZXBvcnRlZCBieSBBZ29zdGlubyBTYXJ1YmJvLiBGaXhlcwotIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI2MTAKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxNi0xMDA5MwotU2lnbmVkLW9mZi1ieTogUmFqa3VtYXIgVmVlciA8cnZlZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gQ2hhbmdlTG9nICAgICAgfCA3ICsrKysrKysKLSB0b29scy90aWZmY3AuYyB8IDYgKysrLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1JbmRleDogdGlmZi00LjAuNy90b29scy90aWZmY3AuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHRpZmYtNC4wLjcub3JpZy90b29scy90aWZmY3AuYwotKysrIHRpZmYtNC4wLjcvdG9vbHMvdGlmZmNwLmMKLUBAIC0xMTYzLDcgKzExNjMsNyBAQCBiYWQ6Ci0gCi0gc3RhdGljIHZvaWQKLSBjcFN0cmlwVG9UaWxlKHVpbnQ4KiBvdXQsIHVpbnQ4KiBpbiwKLS0gICAgdWludDMyIHJvd3MsIHVpbnQzMiBjb2xzLCBpbnQgb3V0c2tldywgaW50IGluc2tldykKLSsgICAgdWludDMyIHJvd3MsIHVpbnQzMiBjb2xzLCBpbnQgb3V0c2tldywgaW50NjQgaW5za2V3KQotIHsKLSAJd2hpbGUgKHJvd3MtLSA+IDApIHsKLSAJCXVpbnQzMiBqID0gY29sczsKLUBAIC0xMzIwLDcgKzEzMjAsNyBAQCBERUNMQVJFcmVhZEZ1bmMocmVhZENvbnRpZ1RpbGVzSW50b0J1ZmZlCi0gCXRkYXRhX3QgdGlsZWJ1ZjsKLSAJdWludDMyIGltYWdldyA9IFRJRkZTY2FubGluZVNpemUoaW4pOwotIAl1aW50MzIgdGlsZXcgID0gVElGRlRpbGVSb3dTaXplKGluKTsKLS0JaW50IGlza2V3ID0gaW1hZ2V3IC0gdGlsZXc7Ci0rCWludDY0IGlza2V3ID0gKGludDY0KWltYWdldyAtIChpbnQ2NCl0aWxldzsKLSAJdWludDgqIGJ1ZnAgPSAodWludDgqKSBidWY7Ci0gCXVpbnQzMiB0dywgdGw7Ci0gCXVpbnQzMiByb3c7Ci1AQCAtMTM0OCw3ICsxMzQ4LDcgQEAgREVDTEFSRXJlYWRGdW5jKHJlYWRDb250aWdUaWxlc0ludG9CdWZmZQotIAkJCQlzdGF0dXMgPSAwOwotIAkJCQlnb3RvIGRvbmU7Ci0gCQkJfQotLQkJCWlmIChjb2xiICsgdGlsZXcgPiBpbWFnZXcpIHsKLSsJCQlpZiAoY29sYiA+IGlza2V3KSB7Ci0gCQkJCXVpbnQzMiB3aWR0aCA9IGltYWdldyAtIGNvbGI7Ci0gCQkJCXVpbnQzMiBvc2tldyA9IHRpbGV3IC0gd2lkdGg7Ci0gCQkJCWNwU3RyaXBUb1RpbGUoYnVmcCArIGNvbGIsCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNi0xMDI2Ni5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE2LTEwMjY2LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMWM5MGM2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE2LTEwMjY2LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotRnJvbSAxODU1NDA3YzRlNWEyN2FkZTAwNmIyNmMyZGVjOGEzMTc0NWMzNTZlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogZXJvdWF1bHQgPGVyb3VhdWx0PgotRGF0ZTogRnJpLCAyIERlYyAyMDE2IDIxOjU2OjU2ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdICogbGlidGlmZi90aWZfcmVhZC5jLCBsaWJ0aWZmL3RpZmZpb3AuaDogZml4IHVpbnQzMiBvdmVyZmxvdwotIGluIFRJRkZSZWFkRW5jb2RlZFN0cmlwKCkgdGhhdCBjYXVzZWQgYW4gaW50ZWdlciBkaXZpc2lvbiBieSB6ZXJvLiBSZXBvcnRlZAotIGJ5IEFnb3N0aW5vIFNhcnViYm8uIEZpeGVzIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI1OTYKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1DVkU6IENWRS0yMDE2LTEwMjY2Ci1TaWduZWQtb2ZmLWJ5OiBSYWprdW1hciBWZWVyIDxydmVlckBtdmlzdGEuY29tPgotLS0tCi0gQ2hhbmdlTG9nICAgICAgICAgIHwgNyArKysrKysrCi0gbGlidGlmZi90aWZfcmVhZC5jIHwgMiArLQotIGxpYnRpZmYvdGlmZmlvcC5oICB8IDQgKysrKwotIDMgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1JbmRleDogdGlmZi00LjAuNy9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0aWZmLTQuMC43Lm9yaWcvQ2hhbmdlTG9nCi0rKysgdGlmZi00LjAuNy9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsMTAgQEAKLSsyMDE2LTEyLTAyIEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0IGF0IHNwYXRpYWx5cy5jb20+Ci0rCi0rICAgICAgICogbGlidGlmZi90aWZfcmVhZC5jLCBsaWJ0aWZmL3RpZmZpb3AuaDogZml4IHVpbnQzMiBvdmVyZmxvdyBpbgotKyAgICAgICBUSUZGUmVhZEVuY29kZWRTdHJpcCgpIHRoYXQgY2F1c2VkIGFuIGludGVnZXIgZGl2aXNpb24gYnkgemVyby4KLSsgICAgICAgUmVwb3J0ZWQgYnkgQWdvc3Rpbm8gU2FydWJiby4KLSsgICAgICAgRml4ZXMgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU5NgotKwotIDIwMTctMDctMTUgIEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0IGF0IHNwYXRpYWx5cy5jb20+Ci0gCi0gCSogdG9vbHMvdGlmZjJwZGYuYzogcHJldmVudCBoZWFwIGJ1ZmZlciBvdmVyZmxvdyB3cml0ZSBpbiAiUmF3IgotSW5kZXg6IHRpZmYtNC4wLjcvbGlidGlmZi90aWZfcmVhZC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdGlmZi00LjAuNy5vcmlnL2xpYnRpZmYvdGlmX3JlYWQuYwotKysrIHRpZmYtNC4wLjcvbGlidGlmZi90aWZfcmVhZC5jCi1AQCAtMzQ2LDcgKzM0Niw3IEBAIFRJRkZSZWFkRW5jb2RlZFN0cmlwKFRJRkYqIHRpZiwgdWludDMyIHMKLSAJcm93c3BlcnN0cmlwPXRkLT50ZF9yb3dzcGVyc3RyaXA7Ci0gCWlmIChyb3dzcGVyc3RyaXA+dGQtPnRkX2ltYWdlbGVuZ3RoKQotIAkJcm93c3BlcnN0cmlwPXRkLT50ZF9pbWFnZWxlbmd0aDsKLS0Jc3RyaXBzcGVycGxhbmU9KCh0ZC0+dGRfaW1hZ2VsZW5ndGgrcm93c3BlcnN0cmlwLTEpL3Jvd3NwZXJzdHJpcCk7Ci0rCXN0cmlwc3BlcnBsYW5lPSBUSUZGaG93bWFueV8zMl9tYXh1aW50X2NvbXBhdCh0ZC0+dGRfaW1hZ2VsZW5ndGgsIHJvd3NwZXJzdHJpcCk7Ci0gCXN0cmlwaW5wbGFuZT0oc3RyaXAlc3RyaXBzcGVycGxhbmUpOwotIAlwbGFuZT0odWludDE2KShzdHJpcC9zdHJpcHNwZXJwbGFuZSk7Ci0gCXJvd3M9dGQtPnRkX2ltYWdlbGVuZ3RoLXN0cmlwaW5wbGFuZSpyb3dzcGVyc3RyaXA7Ci1JbmRleDogdGlmZi00LjAuNy9saWJ0aWZmL3RpZmZpb3AuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHRpZmYtNC4wLjcub3JpZy9saWJ0aWZmL3RpZmZpb3AuaAotKysrIHRpZmYtNC4wLjcvbGlidGlmZi90aWZmaW9wLmgKLUBAIC0yNTAsNiArMjUwLDEwIEBAIHN0cnVjdCB0aWZmIHsKLSAjZGVmaW5lIFRJRkZob3dtYW55XzMyKHgsIHkpICgoKHVpbnQzMil4IDwgKDB4ZmZmZmZmZmYgLSAodWludDMyKSh5LTEpKSkgPyBcCi0gCQkJICAgKCgoKHVpbnQzMikoeCkpKygoKHVpbnQzMikoeSkpLTEpKS8oKHVpbnQzMikoeSkpKSA6IFwKLSAJCQkgICAwVSkKLSsvKiBWYXJpYW50IG9mIFRJRkZob3dtYW55XzMyKCkgdGhhdCBkb2Vzbid0IHJldHVybiAwIGlmIHggY2xvc2UgdG8gTUFYVUlOVC4gKi8KLSsvKiBDYXV0aW9uOiBUSUZGaG93bWFueV8zMl9tYXh1aW50X2NvbXBhdCh4LHkpKnkgbWlnaHQgb3ZlcmZsb3cgKi8KLSsjZGVmaW5lIFRJRkZob3dtYW55XzMyX21heHVpbnRfY29tcGF0KHgsIHkpIFwKLSsJCQkgICAoKCh1aW50MzIpKHgpIC8gKHVpbnQzMikoeSkpICsgKCgoKHVpbnQzMikoeCkgJSAodWludDMyKSh5KSkgIT0gMCkgPyAxIDogMCkpCi0gI2RlZmluZSBUSUZGaG93bWFueThfMzIoeCkgKCgoeCkmMHgwNyk/KCh1aW50MzIpKHgpPj4zKSsxOih1aW50MzIpKHgpPj4zKQotICNkZWZpbmUgVElGRnJvdW5kdXBfMzIoeCwgeSkgKFRJRkZob3dtYW55XzMyKHgseSkqKHkpKQotICNkZWZpbmUgVElGRmhvd21hbnlfNjQoeCwgeSkgKCgoKHVpbnQ2NCkoeCkpKygoKHVpbnQ2NCkoeSkpLTEpKS8oKHVpbnQ2NCkoeSkpKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTYtMTAyNjcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNi0xMDI2Ny5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjRjNTc5MS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNi0xMDI2Ny5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLUZyb20gZjgyMDNjN2FiMWRiZDdiNWM1OTE1ODU3NmJlYzdkYTkwMTkxZjQyZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGVyb3VhdWx0IDxlcm91YXVsdD4KLURhdGU6IFNhdCwgMyBEZWMgMjAxNiAxMToxNToxOCArMDAwMAotU3ViamVjdDogW1BBVENIXSAqIGxpYnRpZmYvdGlmX29qcGVnLmM6IG1ha2UgT0pQRUdEZWNvZGUoKSBlYXJseSBleGl0IGluIGNhc2UKLSBvZiBmYWlsdXJlIGluIE9KUEVHUHJlRGVjb2RlKCkuIFRoaXMgd2lsbCBhdm9pZCBhIGRpdmlkZSBieSB6ZXJvLCBhbmQKLSBwb3RlbnRpYWwgb3RoZXIgaXNzdWVzLiBSZXBvcnRlZCBieSBBZ29zdGlubyBTYXJ1YmJvLiBGaXhlcwotIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI2MTEKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1DVkU6IENWRS0yMDE2LTEwMjY3Ci1TaWduZWQtb2ZmLWJ5OiBSYWprdW1hciBWZWVyIDxydmVlckBtdmlzdGEuY29tPgotLS0tCi0gQ2hhbmdlTG9nICAgICAgICAgICB8IDcgKysrKysrKwotIGxpYnRpZmYvdGlmX29qcGVnLmMgfCA4ICsrKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCAxNSBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKLWluZGV4IDczMzljMWEuLjY2ZmJjZGMgMTAwNjQ0Ci0tLS0gYS9DaGFuZ2VMb2cKLSsrKyBiL0NoYW5nZUxvZwotQEAgLTEsMyArMSwxMCBAQAotKzIwMTYtMTItMDMgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KLSsgCi0rCSogbGlidGlmZi90aWZfb2pwZWcuYzogbWFrZSBPSlBFR0RlY29kZSgpIGVhcmx5IGV4aXQgaW4gY2FzZSBvZiBmYWlsdXJlIGluCi0rCU9KUEVHUHJlRGVjb2RlKCkuIFRoaXMgd2lsbCBhdm9pZCBhIGRpdmlkZSBieSB6ZXJvLCBhbmQgcG90ZW50aWFsIG90aGVyIGlzc3Vlcy4KLSsJUmVwb3J0ZWQgYnkgQWdvc3Rpbm8gU2FydWJiby4KLSsJRml4ZXMgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjYxMQotKwotIDIwMTYtMTItMDIgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KLSAKLSAJKiBsaWJ0aWZmL3RpZl9yZWFkLmMsIGxpYnRpZmYvdGlmZmlvcC5oOiBmaXggdWludDMyIG92ZXJmbG93IGluCi1kaWZmIC0tZ2l0IGEvbGlidGlmZi90aWZfb2pwZWcuYyBiL2xpYnRpZmYvdGlmX29qcGVnLmMKLWluZGV4IDFjY2MzZjkuLmYxOWU4ZmQgMTAwNjQ0Ci0tLS0gYS9saWJ0aWZmL3RpZl9vanBlZy5jCi0rKysgYi9saWJ0aWZmL3RpZl9vanBlZy5jCi1AQCAtMjQ0LDYgKzI0NCw3IEBAIHR5cGVkZWYgZW51bSB7Ci0gCi0gdHlwZWRlZiBzdHJ1Y3QgewotIAlUSUZGKiB0aWY7Ci0rICAgICAgICBpbnQgZGVjb2Rlcl9vazsKLSAJI2lmbmRlZiBMSUJKUEVHX0VOQ0FQX0VYVEVSTkFMCi0gCUpNUF9CVUYgZXhpdF9qbXBidWY7Ci0gCSNlbmRpZgotQEAgLTcyMiw2ICs3MjMsNyBAQCBPSlBFR1ByZURlY29kZShUSUZGKiB0aWYsIHVpbnQxNiBzKQotIAkJfQotIAkJc3AtPndyaXRlX2N1cnN0cmlsZSsrOwotIAl9Ci0rCXNwLT5kZWNvZGVyX29rID0gMTsKLSAJcmV0dXJuKDEpOwotIH0KLSAKLUBAIC03ODQsOCArNzg2LDE0IEBAIE9KUEVHUHJlRGVjb2RlU2tpcFNjYW5saW5lcyhUSUZGKiB0aWYpCi0gc3RhdGljIGludAotIE9KUEVHRGVjb2RlKFRJRkYqIHRpZiwgdWludDgqIGJ1ZiwgdG1zaXplX3QgY2MsIHVpbnQxNiBzKQotIHsKLSsgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyIG1vZHVsZVtdPSJPSlBFR0RlY29kZSI7Ci0gCU9KUEVHU3RhdGUqIHNwPShPSlBFR1N0YXRlKil0aWYtPnRpZl9kYXRhOwotIAkodm9pZClzOwotKyAgICAgICAgaWYoICFzcC0+ZGVjb2Rlcl9vayApCi0rICAgICAgICB7Ci0rICAgICAgICAgICAgVElGRkVycm9yRXh0KHRpZi0+dGlmX2NsaWVudGRhdGEsbW9kdWxlLCJDYW5ub3QgZGVjb2RlOiBkZWNvZGVyIG5vdCBjb3JyZWN0bHkgaW5pdGlhbGl6ZWQiKTsKLSsgICAgICAgICAgICByZXR1cm4gMDsKLSsgICAgICAgIH0KLSAJaWYgKHNwLT5saWJqcGVnX2pwZWdfcXVlcnlfc3R5bGU9PTApCi0gCXsKLSAJCWlmIChPSlBFR0RlY29kZVJhdyh0aWYsYnVmLGNjKT09MCkKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTYtMTAyNjgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNi0xMDI2OC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDNiOTgyYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNi0xMDI2OC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLUZyb20gNTM5N2E0MTdlNjEyNThjNjkyMDk5MDRlNjUyYTFmNDA5ZWMzYjlkZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGVyb3VhdWx0IDxlcm91YXVsdD4KLURhdGU6IEZyaSwgMiBEZWMgMjAxNiAyMjoxMzozMiArMDAwMAotU3ViamVjdDogW1BBVENIXSAqIHRvb2xzL3RpZmZjcC5jOiBhdm9pZCB1aW50MzIgdW5kZXJmbG93IGluIGNwRGVjb2RlZFN0cmlwcwotIHRoYXQgY2FuIGNhdXNlIHZhcmlvdXMgaXNzdWVzLCBzdWNoIGFzIGJ1ZmZlciBvdmVyZmxvd3MgaW4gdGhlIGxpYnJhcnkuCi0gUmVwb3J0ZWQgYnkgQWdvc3Rpbm8gU2FydWJiby4gRml4ZXMKLSBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTk4Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTYtMTAyNjgKLVNpZ25lZC1vZmYtYnk6IFJhamt1bWFyIFZlZXIgPHJ2ZWVyQG12aXN0YS5jb20+Ci0KLS0tLQotIENoYW5nZUxvZyAgICAgIHwgNyArKysrKysrCi0gdG9vbHMvdGlmZmNwLmMgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotSW5kZXg6IHRpZmYtNC4wLjcvdG9vbHMvdGlmZmNwLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0aWZmLTQuMC43Lm9yaWcvdG9vbHMvdGlmZmNwLmMKLSsrKyB0aWZmLTQuMC43L3Rvb2xzL3RpZmZjcC5jCi1AQCAtOTg1LDcgKzk4NSw3IEBAIERFQ0xBUkVjcEZ1bmMoY3BEZWNvZGVkU3RyaXBzKQotIAkJdHN0cmlwX3QgcywgbnMgPSBUSUZGTnVtYmVyT2ZTdHJpcHMoaW4pOwotIAkJdWludDMyIHJvdyA9IDA7Ci0gCQlfVElGRm1lbXNldChidWYsIDAsIHN0cmlwc2l6ZSk7Ci0tCQlmb3IgKHMgPSAwOyBzIDwgbnM7IHMrKykgewotKwkJZm9yIChzID0gMDsgcyA8IG5zICYmIHJvdyA8IGltYWdlbGVuZ3RoOyBzKyspIHsKLSAJCQl0c2l6ZV90IGNjID0gKHJvdyArIHJvd3NwZXJzdHJpcCA+IGltYWdlbGVuZ3RoKSA/Ci0gCQkJICAgIFRJRkZWU3RyaXBTaXplKGluLCBpbWFnZWxlbmd0aCAtIHJvdykgOiBzdHJpcHNpemU7Ci0gCQkJaWYgKFRJRkZSZWFkRW5jb2RlZFN0cmlwKGluLCBzLCBidWYsIGNjKSA8IDAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE2LTEwMjY5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTYtMTAyNjkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5ZjRhMTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTYtMTAyNjkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMzEgKzAsMCBAQAotRnJvbSAxMGY3MmRkMjMyODQ5ZDAxNDJhMDY4OGJjYzlhYTcxMDI1ZjEyMGEzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogZXJvdWF1bHQgPGVyb3VhdWx0PgotRGF0ZTogRnJpLCAyIERlYyAyMDE2IDIzOjA1OjUxICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMi80XSAqIGxpYnRpZmYvdGlmX3BpeGFybG9nLmMsIGxpYnRpZmYvdGlmX2x1di5jOiBmaXgKLSBoZWFwLWJhc2VkIGJ1ZmZlciBvdmVyZmxvdyBvbiBnZW5lcmF0aW9uIG9mIFBpeGFyTG9nIC8gTFVWIGNvbXByZXNzZWQgZmlsZXMsCi0gd2l0aCBDb2xvck1hcCwgVHJhbnNmZXJGdW5jdGlvbiBhdHRhY2hlZCBhbmQgbmFzdHkgcGxheXMgd2l0aCBiaXRzcGVyc2FtcGxlLgotIFRoZSBmaXggZm9yIExVViBoYXMgbm90IGJlZW4gdGVzdGVkLCBidXQgc3VmZmVycyBmcm9tIHRoZSBzYW1lIGtpbmQgb2YgaXNzdWUKLSBvZiBQaXhhckxvZy4gUmVwb3J0ZWQgYnkgQWdvc3Rpbm8gU2FydWJiby4gRml4ZXMKLSBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjA0Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotQ1ZFOiBDVkUtMjAxNi0xMDI2OQotU2lnbmVkLW9mZi1ieTogUmFqa3VtYXIgVmVlciA8cnZlZXJAbXZpc3RhLmNvbT4KLS0tLQotIENoYW5nZUxvZyAgICAgICAgICAgICAgfCAxMCArKysrKysrKysrCi0gbGlidGlmZi90aWZfbHV2LmMgICAgICB8IDE4ICsrKysrKysrKysrKysrLS0tLQotIGxpYnRpZmYvdGlmX3BpeGFybG9nLmMgfCAxNyArKysrKysrKysrKysrKystLQotIDMgZmlsZXMgY2hhbmdlZCwgMzkgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwotaW5kZXggMmU5MTNiNi4uMGEyYzJhNyAxMDA2NDQKLS0tLSBhL0NoYW5nZUxvZwotKysrIGIvQ2hhbmdlTG9nCi1AQCAtMSw0ICsxLDE0IEBACi0gMjAxNi0xMi0wMyBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgotKwotKwkqIGxpYnRpZmYvdGlmX3BpeGFybG9nLmMsIGxpYnRpZmYvdGlmX2x1di5jOiBmaXggaGVhcC1iYXNlZCBidWZmZXIKLSsJb3ZlcmZsb3cgb24gZ2VuZXJhdGlvbiBvZiBQaXhhckxvZyAvIExVViBjb21wcmVzc2VkIGZpbGVzLCB3aXRoCi0rCUNvbG9yTWFwLCBUcmFuc2ZlckZ1bmN0aW9uIGF0dGFjaGVkIGFuZCBuYXN0eSBwbGF5cyB3aXRoIGJpdHNwZXJzYW1wbGUuCi0rCVRoZSBmaXggZm9yIExVViBoYXMgbm90IGJlZW4gdGVzdGVkLCBidXQgc3VmZmVycyBmcm9tIHRoZSBzYW1lIGtpbmQKLSsJb2YgaXNzdWUgb2YgUGl4YXJMb2cuCi0rCVJlcG9ydGVkIGJ5IEFnb3N0aW5vIFNhcnViYm8uCi0rCUZpeGVzIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI2MDQKLSsKLSsyMDE2LTEyLTAzIEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0IGF0IHNwYXRpYWx5cy5jb20+Ci0gIAotIAkqIGxpYnRpZmYvdGlmX29qcGVnLmM6IG1ha2UgT0pQRUdEZWNvZGUoKSBlYXJseSBleGl0IGluIGNhc2Ugb2YgZmFpbHVyZSBpbgotIAlPSlBFR1ByZURlY29kZSgpLiBUaGlzIHdpbGwgYXZvaWQgYSBkaXZpZGUgYnkgemVybywgYW5kIHBvdGVudGlhbCBvdGhlciBpc3N1ZXMuCi1kaWZmIC0tZ2l0IGEvbGlidGlmZi90aWZfbHV2LmMgYi9saWJ0aWZmL3RpZl9sdXYuYwotaW5kZXggZjY4YTliMS4uZTY3ODNkYiAxMDA2NDQKLS0tLSBhL2xpYnRpZmYvdGlmX2x1di5jCi0rKysgYi9saWJ0aWZmL3RpZl9sdXYuYwotQEAgLTE1OCw2ICsxNTgsNyBAQAotIHR5cGVkZWYgc3RydWN0IGxvZ0x1dlN0YXRlIExvZ0x1dlN0YXRlOwotIAotIHN0cnVjdCBsb2dMdXZTdGF0ZSB7Ci0rICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICBlbmNvZGVyX3N0YXRlOyAgLyogMSBpZiBlbmNvZGVyIGNvcnJlY3RseSBpbml0aWFsaXplZCAqLwotIAlpbnQgICAgICAgICAgICAgICAgICAgICB1c2VyX2RhdGFmbXQ7ICAgLyogdXNlciBkYXRhIGZvcm1hdCAqLwotIAlpbnQgICAgICAgICAgICAgICAgICAgICBlbmNvZGVfbWV0aDsgICAgLyogZW5jb2RpbmcgbWV0aG9kICovCi0gCWludCAgICAgICAgICAgICAgICAgICAgIHBpeGVsX3NpemU7ICAgICAvKiBieXRlcyBwZXIgcGl4ZWwgKi8KLUBAIC0xNTUyLDYgKzE1NTMsNyBAQCBMb2dMdXZTZXR1cEVuY29kZShUSUZGKiB0aWYpCi0gCQkgICAgdGQtPnRkX3Bob3RvbWV0cmljLCAibXVzdCBiZSBlaXRoZXIgTG9nTFVWIG9yIExvZ0wiKTsKLSAJCWJyZWFrOwotIAl9Ci0rCXNwLT5lbmNvZGVyX3N0YXRlID0gMTsKLSAJcmV0dXJuICgxKTsKLSBub3RzdXBwb3J0ZWQ6Ci0gCVRJRkZFcnJvckV4dCh0aWYtPnRpZl9jbGllbnRkYXRhLCBtb2R1bGUsCi1AQCAtMTU2MywxOSArMTU2NSwyNyBAQCBub3RzdXBwb3J0ZWQ6Ci0gc3RhdGljIHZvaWQKLSBMb2dMdXZDbG9zZShUSUZGKiB0aWYpCi0gewotKyAgICAgICAgTG9nTHV2U3RhdGUqIHNwID0gKExvZ0x1dlN0YXRlKikgdGlmLT50aWZfZGF0YTsKLSAJVElGRkRpcmVjdG9yeSAqdGQgPSAmdGlmLT50aWZfZGlyOwotIAotKwlhc3NlcnQoc3AgIT0gMCk7Ci0gCS8qCi0gCSAqIEZvciBjb25zaXN0ZW5jeSwgd2UgYWx3YXlzIHdhbnQgdG8gd3JpdGUgb3V0IHRoZSBzYW1lCi0gCSAqIGJpdHNwZXJzYW1wbGUgYW5kIHNhbXBsZWZvcm1hdCBmb3Igb3VyIFRJRkYgZmlsZSwKLSAJICogcmVnYXJkbGVzcyBvZiB0aGUgZGF0YSBmb3JtYXQgYmVpbmcgdXNlZCBieSB0aGUgYXBwbGljYXRpb24uCi0gCSAqIFNpbmNlIHRoaXMgcm91dGluZSBpcyBjYWxsZWQgYWZ0ZXIgdGFncyBoYXZlIGJlZW4gc2V0IGJ1dAotIAkgKiBiZWZvcmUgdGhleSBoYXZlIGJlZW4gcmVjb3JkZWQgaW4gdGhlIGZpbGUsIHdlIHJlc2V0IHRoZW0gaGVyZS4KLSsgICAgICAgICAqIE5vdGU6IHRoaXMgaXMgcmVhbGx5IGEgbmFzdHkgYXBwcm9hY2guIFNlZSBQaXhhckxvZ0Nsb3NlCi0gCSAqLwotLQl0ZC0+dGRfc2FtcGxlc3BlcnBpeGVsID0KLS0JICAgICh0ZC0+dGRfcGhvdG9tZXRyaWMgPT0gUEhPVE9NRVRSSUNfTE9HTCkgPyAxIDogMzsKLS0JdGQtPnRkX2JpdHNwZXJzYW1wbGUgPSAxNjsKLS0JdGQtPnRkX3NhbXBsZWZvcm1hdCA9IFNBTVBMRUZPUk1BVF9JTlQ7Ci0rICAgICAgICBpZiggc3AtPmVuY29kZXJfc3RhdGUgKQotKyAgICAgICAgewotKyAgICAgICAgICAgIC8qIFNlZSBQaXhhckxvZ0Nsb3NlLiBNaWdodCBhdm9pZCBpc3N1ZXMgd2l0aCB0YWdzIHdob3NlIHNpemUgZGVwZW5kcwotKyAgICAgICAgICAgICAqIG9uIHRob3NlIGJlbG93LCBidXQgbm90IGNvbXBsZXRlbHkgc3VyZSB0aGlzIGlzIGVub3VnaC4gKi8KLSsgICAgICAgICAgICB0ZC0+dGRfc2FtcGxlc3BlcnBpeGVsID0KLSsgICAgICAgICAgICAgICAgKHRkLT50ZF9waG90b21ldHJpYyA9PSBQSE9UT01FVFJJQ19MT0dMKSA/IDEgOiAzOwotKyAgICAgICAgICAgIHRkLT50ZF9iaXRzcGVyc2FtcGxlID0gMTY7Ci0rICAgICAgICAgICAgdGQtPnRkX3NhbXBsZWZvcm1hdCA9IFNBTVBMRUZPUk1BVF9JTlQ7Ci0rICAgICAgICB9Ci0gfQotIAotIHN0YXRpYyB2b2lkCi1kaWZmIC0tZ2l0IGEvbGlidGlmZi90aWZfcGl4YXJsb2cuYyBiL2xpYnRpZmYvdGlmX3BpeGFybG9nLmMKLWluZGV4IGQxMjQ2YzMuLmFhOTliYzkgMTAwNjQ0Ci0tLS0gYS9saWJ0aWZmL3RpZl9waXhhcmxvZy5jCi0rKysgYi9saWJ0aWZmL3RpZl9waXhhcmxvZy5jCi1AQCAtMTIzMyw4ICsxMjMzLDEwIEBAIFBpeGFyTG9nUG9zdEVuY29kZShUSUZGKiB0aWYpCi0gc3RhdGljIHZvaWQKLSBQaXhhckxvZ0Nsb3NlKFRJRkYqIHRpZikKLSB7Ci0rICAgICAgICBQaXhhckxvZ1N0YXRlKiBzcCA9IChQaXhhckxvZ1N0YXRlKikgdGlmLT50aWZfZGF0YTsKLSAJVElGRkRpcmVjdG9yeSAqdGQgPSAmdGlmLT50aWZfZGlyOwotIAotKwlhc3NlcnQoc3AgIT0gMCk7Ci0gCS8qIEluIGEgcmVhbGx5IHNuZWFreSAoYW5kIHJlYWxseSBpbmNvcnJlY3QsIGFuZCB1bnRydXRoZnVsLCBhbmQKLSAJICogdHJvdWJsZXNvbWUsIGFuZCBlcnJvci1wcm9uZSkgbWFuZXV2ZXIgdGhhdCBjb21wbGV0ZWx5IGdvZXMgYWdhaW5zdAotIAkgKiB0aGUgc3Bpcml0IG9mIFRJRkYsIGFuZCBicmVha3MgVElGRiwgb24gY2xvc2UsIHdlIGNvdmVydGx5Ci1AQCAtMTI0Myw4ICsxMjQ1LDE5IEBAIFBpeGFyTG9nQ2xvc2UoVElGRiogdGlmKQotIAkgKiByZWFkZXJzIHRoYXQgZG9uJ3Qga25vdyBhYm91dCBQaXhhckxvZywgb3IgaG93IHRvIHNldAotIAkgKiB0aGUgUElYQVJMT0dEQVRGTVQgcHNldWRvLXRhZy4KLSAJICovCi0tCXRkLT50ZF9iaXRzcGVyc2FtcGxlID0gODsKLS0JdGQtPnRkX3NhbXBsZWZvcm1hdCA9IFNBTVBMRUZPUk1BVF9VSU5UOwotKwotKyAgICAgICAgaWYgKHNwLT5zdGF0ZSZQTFNUQVRFX0lOSVQpIHsKLSsgICAgICAgICAgICAvKiBXZSB0ZXN0IHRoZSBzdGF0ZSB0byBhdm9pZCBhbiBpc3N1ZSBzdWNoIGFzIGluCi0rICAgICAgICAgICAgICogaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjYwNAotKyAgICAgICAgICAgICAqIFdoYXQgYXBwZW5kcyBpbiB0aGF0IGNhc2UgaXMgdGhhdCB0aGUgYml0c3BlcnNhbXBsZSBpcyAxIGFuZAotKyAgICAgICAgICAgICAqIGEgVHJhbnNmZXJGdW5jdGlvbiBpcyBzZXQuIFRoZSBzaXplIG9mIHRoZSBUcmFuc2ZlckZ1bmN0aW9uCi0rICAgICAgICAgICAgICogZGVwZW5kcyBvbiAxPDxiaXRzcGVyc2FtcGxlLiBTbyBpZiB3ZSBpbmNyZWFzZSBpdCwgYW4gYWNjZXNzCi0rICAgICAgICAgICAgICogb3V0IG9mIHRoZSBidWZmZXIgd2lsbCBoYXBwZW4gYXQgZGlyZWN0b3J5IGZsdXNoaW5nLgotKyAgICAgICAgICAgICAqIEFub3RoZXIgb3B0aW9uIHdvdWxkIGJlIHRvIGNsZWFyIHRob3NlIHRhcmdzLiAKLSsgICAgICAgICAgICAgKi8KLSsgICAgICAgICAgICB0ZC0+dGRfYml0c3BlcnNhbXBsZSA9IDg7Ci0rICAgICAgICAgICAgdGQtPnRkX3NhbXBsZWZvcm1hdCA9IFNBTVBMRUZPUk1BVF9VSU5UOwotKyAgICAgICAgfQotIH0KLSAKLSBzdGF0aWMgdm9pZAotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNi0xMDI3MC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE2LTEwMjcwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0M2FkNmVkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE2LTEwMjcwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTM0ICswLDAgQEAKLUZyb20gNmU3MDQyYzYxZTMwMGNmOTk3MWM2NDVjNzlkMDVkZTk3NGIyNDMwOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGVyb3VhdWx0IDxlcm91YXVsdD4KLURhdGU6IFNhdCwgMyBEZWMgMjAxNiAxMTowMjoxNSArMDAwMAotU3ViamVjdDogW1BBVENIIDMvNF0gKiBsaWJ0aWZmL3RpZl9kaXJyZWFkLmM6IG1vZGlmeQotIENob3BVcFNpbmdsZVVuY29tcHJlc3NlZFN0cmlwKCkgdG8gaW5zdGFuY2lhdGUgY29tcHV0ZSBudHJpcHMgYXMKLSBUSUZGaG93bWFueV8zMih0ZC0+dGRfaW1hZ2VsZW5ndGgsIHJvd3NwZXJzdHJpcCksIGluc3RlYWQgb2YgYSBsb2dpYyBiYXNlZCBvbgotIHRoZSB0b3RhbCBzaXplIG9mIGRhdGEuIFdoaWNoIGlzIGZhdWx0eSBpcyB0aGUgdG90YWwgc2l6ZSBvZiBkYXRhIGlzIG5vdAotIHN1ZmZpY2llbnQgdG8gZmlsbCB0aGUgd2hvbGUgaW1hZ2UsIGFuZCB0aHVzIHJlc3VsdHMgaW4gcmVhZGluZyBvdXRzaWRlIG9mCi0gdGhlIFN0cmlwQnlDb3VudHMvU3RyaXBPZmZzZXRzIGFycmF5cyB3aGVuIHVzaW5nIFRJRkZSZWFkU2NhbmxpbmUoKS4gUmVwb3J0ZWQKLSBieSBBZ29zdGlubyBTYXJ1YmJvLiBGaXhlcyBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjA4LgotCi0qIGxpYnRpZmYvdGlmX3N0cmlwLmM6IHJldmVydCB0aGUgY2hhbmdlIGluIFRJRkZOdW1iZXJPZlN0cmlwcygpIGRvbmUKLWZvciBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTg3IC8gQ1ZFLTIwMTYtOTI3MyBzaW5jZQotdGhlIGFib3ZlIGNoYW5nZSBpcyBhIGJldHRlciBmaXggdGhhdCBtYWtlcyBpdCB1bm5lY2Vzc2FyeS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1DVkU6IENWRS0yMDE2LTEwMjcwCi1TaWduZWQtb2ZmLWJ5OiBSYWprdW1hciBWZWVyIDxydmVlckBtdmlzdGEuY29tPgotLS0tCi0gQ2hhbmdlTG9nICAgICAgICAgICAgIHwgMTUgKysrKysrKysrKysrKysrCi0gbGlidGlmZi90aWZfZGlycmVhZC5jIHwgMjIgKysrKysrKysrKy0tLS0tLS0tLS0tLQotIGxpYnRpZmYvdGlmX3N0cmlwLmMgICB8ICA5IC0tLS0tLS0tLQotIDMgZmlsZXMgY2hhbmdlZCwgMjUgaW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKLWluZGV4IDBhMmMyYTcuLjZlMzBlNDEgMTAwNjQ0Ci0tLS0gYS9DaGFuZ2VMb2cKLSsrKyBiL0NoYW5nZUxvZwotQEAgLTEsNSArMSwyMCBAQAotIDIwMTYtMTItMDMgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KLSAKLSsJKiBsaWJ0aWZmL3RpZl9kaXJyZWFkLmM6IG1vZGlmeSBDaG9wVXBTaW5nbGVVbmNvbXByZXNzZWRTdHJpcCgpIHRvCi0rCWluc3RhbmNpYXRlIGNvbXB1dGUgbnRyaXBzIGFzIFRJRkZob3dtYW55XzMyKHRkLT50ZF9pbWFnZWxlbmd0aCwgcm93c3BlcnN0cmlwKSwKLSsJaW5zdGVhZCBvZiBhIGxvZ2ljIGJhc2VkIG9uIHRoZSB0b3RhbCBzaXplIG9mIGRhdGEuIFdoaWNoIGlzIGZhdWx0eSBpcwotKwl0aGUgdG90YWwgc2l6ZSBvZiBkYXRhIGlzIG5vdCBzdWZmaWNpZW50IHRvIGZpbGwgdGhlIHdob2xlIGltYWdlLCBhbmQgdGh1cwotKwlyZXN1bHRzIGluIHJlYWRpbmcgb3V0c2lkZSBvZiB0aGUgU3RyaXBCeUNvdW50cy9TdHJpcE9mZnNldHMgYXJyYXlzIHdoZW4KLSsJdXNpbmcgVElGRlJlYWRTY2FubGluZSgpLgotKwlSZXBvcnRlZCBieSBBZ29zdGlubyBTYXJ1YmJvLgotKwlGaXhlcyBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjA4LgotKwotKwkqIGxpYnRpZmYvdGlmX3N0cmlwLmM6IHJldmVydCB0aGUgY2hhbmdlIGluIFRJRkZOdW1iZXJPZlN0cmlwcygpIGRvbmUKLSsJZm9yIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI1ODcgLyBDVkUtMjAxNi05MjczIHNpbmNlCi0rCXRoZSBhYm92ZSBjaGFuZ2UgaXMgYSBiZXR0ZXIgZml4IHRoYXQgbWFrZXMgaXQgdW5uZWNlc3NhcnkuCi0rCi0rMjAxNi0xMi0wMyBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgotKwotIAkqIGxpYnRpZmYvdGlmX3BpeGFybG9nLmMsIGxpYnRpZmYvdGlmX2x1di5jOiBmaXggaGVhcC1iYXNlZCBidWZmZXIKLSAJb3ZlcmZsb3cgb24gZ2VuZXJhdGlvbiBvZiBQaXhhckxvZyAvIExVViBjb21wcmVzc2VkIGZpbGVzLCB3aXRoCi0gCUNvbG9yTWFwLCBUcmFuc2ZlckZ1bmN0aW9uIGF0dGFjaGVkIGFuZCBuYXN0eSBwbGF5cyB3aXRoIGJpdHNwZXJzYW1wbGUuCi1kaWZmIC0tZ2l0IGEvbGlidGlmZi90aWZfZGlycmVhZC5jIGIvbGlidGlmZi90aWZfZGlycmVhZC5jCi1pbmRleCAzZWVjNzljLi41NzBkMGMzIDEwMDY0NAotLS0tIGEvbGlidGlmZi90aWZfZGlycmVhZC5jCi0rKysgYi9saWJ0aWZmL3RpZl9kaXJyZWFkLmMKLUBAIC01NTAyLDggKzU1MDIsNyBAQCBDaG9wVXBTaW5nbGVVbmNvbXByZXNzZWRTdHJpcChUSUZGKiB0aWYpCi0gCXVpbnQ2NCByb3dibG9ja2J5dGVzOwotIAl1aW50NjQgc3RyaXBieXRlczsKLSAJdWludDMyIHN0cmlwOwotLQl1aW50NjQgbnN0cmlwczY0OwotLQl1aW50MzIgbnN0cmlwczMyOwotKwl1aW50MzIgbnN0cmlwczsKLSAJdWludDMyIHJvd3NwZXJzdHJpcDsKLSAJdWludDY0KiBuZXdjb3VudHM7Ci0gCXVpbnQ2NCogbmV3b2Zmc2V0czsKLUBAIC01NTM0LDE4ICs1NTMzLDE3IEBAIENob3BVcFNpbmdsZVVuY29tcHJlc3NlZFN0cmlwKFRJRkYqIHRpZikKLSAJICAgIHJldHVybjsKLSAKLSAJLyoKLS0JICogbmV2ZXIgaW5jcmVhc2UgdGhlIG51bWJlciBvZiBzdHJpcHMgaW4gYW4gaW1hZ2UKLSsJICogbmV2ZXIgaW5jcmVhc2UgdGhlIG51bWJlciBvZiByb3dzIHBlciBzdHJpcAotIAkgKi8KLSAJaWYgKHJvd3NwZXJzdHJpcCA+PSB0ZC0+dGRfcm93c3BlcnN0cmlwKQotIAkJcmV0dXJuOwotLQluc3RyaXBzNjQgPSBUSUZGaG93bWFueV82NChieXRlY291bnQsIHN0cmlwYnl0ZXMpOwotLQlpZiAoKG5zdHJpcHM2ND09MCl8fChuc3RyaXBzNjQ+MHhGRkZGRkZGRikpIC8qIHNvbWV0aGluZyBpcyB3b25reSwgZG8gbm90aGluZy4gKi8KLS0JICAgIHJldHVybjsKLS0JbnN0cmlwczMyID0gKHVpbnQzMiluc3RyaXBzNjQ7Ci0rICAgICAgICBuc3RyaXBzID0gVElGRmhvd21hbnlfMzIodGQtPnRkX2ltYWdlbGVuZ3RoLCByb3dzcGVyc3RyaXApOwotKyAgICAgICAgaWYoIG5zdHJpcHMgPT0gMCApCi0rICAgICAgICAgICAgcmV0dXJuOwotIAotLQluZXdjb3VudHMgPSAodWludDY0KikgX1RJRkZDaGVja01hbGxvYyh0aWYsIG5zdHJpcHMzMiwgc2l6ZW9mICh1aW50NjQpLAotKwluZXdjb3VudHMgPSAodWludDY0KikgX1RJRkZDaGVja01hbGxvYyh0aWYsIG5zdHJpcHMsIHNpemVvZiAodWludDY0KSwKLSAJCQkJImZvciBjaG9wcGVkIFwiU3RyaXBCeXRlQ291bnRzXCIgYXJyYXkiKTsKLS0JbmV3b2Zmc2V0cyA9ICh1aW50NjQqKSBfVElGRkNoZWNrTWFsbG9jKHRpZiwgbnN0cmlwczMyLCBzaXplb2YgKHVpbnQ2NCksCi0rCW5ld29mZnNldHMgPSAodWludDY0KikgX1RJRkZDaGVja01hbGxvYyh0aWYsIG5zdHJpcHMsIHNpemVvZiAodWludDY0KSwKLSAJCQkJImZvciBjaG9wcGVkIFwiU3RyaXBPZmZzZXRzXCIgYXJyYXkiKTsKLSAJaWYgKG5ld2NvdW50cyA9PSBOVUxMIHx8IG5ld29mZnNldHMgPT0gTlVMTCkgewotIAkJLyoKLUBAIC01NTYyLDE4ICs1NTYwLDE4IEBAIENob3BVcFNpbmdsZVVuY29tcHJlc3NlZFN0cmlwKFRJRkYqIHRpZikKLSAJICogRmlsbCB0aGUgc3RyaXAgaW5mb3JtYXRpb24gYXJyYXlzIHdpdGggbmV3IGJ5dGVjb3VudHMgYW5kIG9mZnNldHMKLSAJICogdGhhdCByZWZsZWN0IHRoZSBicm9rZW4tdXAgZm9ybWF0LgotIAkgKi8KLS0JZm9yIChzdHJpcCA9IDA7IHN0cmlwIDwgbnN0cmlwczMyOyBzdHJpcCsrKSB7Ci0rCWZvciAoc3RyaXAgPSAwOyBzdHJpcCA8IG5zdHJpcHM7IHN0cmlwKyspIHsKLSAJCWlmIChzdHJpcGJ5dGVzID4gYnl0ZWNvdW50KQotIAkJCXN0cmlwYnl0ZXMgPSBieXRlY291bnQ7Ci0gCQluZXdjb3VudHNbc3RyaXBdID0gc3RyaXBieXRlczsKLS0JCW5ld29mZnNldHNbc3RyaXBdID0gb2Zmc2V0OwotKwkJbmV3b2Zmc2V0c1tzdHJpcF0gPSBzdHJpcGJ5dGVzID8gb2Zmc2V0IDogMDsKLSAJCW9mZnNldCArPSBzdHJpcGJ5dGVzOwotIAkJYnl0ZWNvdW50IC09IHN0cmlwYnl0ZXM7Ci0gCX0KLSAJLyoKLSAJICogUmVwbGFjZSBvbGQgc2luZ2xlIHN0cmlwIGluZm8gd2l0aCBtdWx0aS1zdHJpcCBpbmZvLgotIAkgKi8KLS0JdGQtPnRkX3N0cmlwc3BlcmltYWdlID0gdGQtPnRkX25zdHJpcHMgPSBuc3RyaXBzMzI7Ci0rCXRkLT50ZF9zdHJpcHNwZXJpbWFnZSA9IHRkLT50ZF9uc3RyaXBzID0gbnN0cmlwczsKLSAJVElGRlNldEZpZWxkKHRpZiwgVElGRlRBR19ST1dTUEVSU1RSSVAsIHJvd3NwZXJzdHJpcCk7Ci0gCi0gCV9USUZGZnJlZSh0ZC0+dGRfc3RyaXBieXRlY291bnQpOwotZGlmZiAtLWdpdCBhL2xpYnRpZmYvdGlmX3N0cmlwLmMgYi9saWJ0aWZmL3RpZl9zdHJpcC5jCi1pbmRleCA0YzQ2ZWNmLi4xNjc2ZTQ3IDEwMDY0NAotLS0tIGEvbGlidGlmZi90aWZfc3RyaXAuYwotKysrIGIvbGlidGlmZi90aWZfc3RyaXAuYwotQEAgLTYzLDE1ICs2Myw2IEBAIFRJRkZOdW1iZXJPZlN0cmlwcyhUSUZGKiB0aWYpCi0gCVRJRkZEaXJlY3RvcnkgKnRkID0gJnRpZi0+dGlmX2RpcjsKLSAJdWludDMyIG5zdHJpcHM7Ci0gCi0tICAgIC8qIElmIHRoZSB2YWx1ZSB3YXMgYWxyZWFkeSBjb21wdXRlZCBhbmQgc3RvcmUgaW4gdGRfbnN0cmlwcywgdGhlbiByZXR1cm4gaXQsCi0tICAgICAgIHNpbmNlIENob3BVcFNpbmdsZVVuY29tcHJlc3NlZFN0cmlwIG1pZ2h0IGhhdmUgYWx0ZXJlZCBhbmQgcmVzaXplZCB0aGUKLS0gICAgICAgc2luY2UgdGhlIHRkX3N0cmlwYnl0ZWNvdW50IGFuZCB0ZF9zdHJpcG9mZnNldCBhcnJheXMgdG8gdGhlIG5ldyB2YWx1ZQotLSAgICAgICBhZnRlciB0aGUgaW5pdGlhbCBhZmZlY3RhdGlvbiBvZiB0ZF9uc3RyaXBzID0gVElGRk51bWJlck9mU3RyaXBzKCkgaW4KLS0gICAgICAgdGlmX2RpcnJlYWQuYyB+bGluZSAzNjEyLgotLSAgICAgICBTZWUgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU4NyAqLwotLSAgICBpZiggdGQtPnRkX25zdHJpcHMgKQotLSAgICAgICAgcmV0dXJuIHRkLT50ZF9uc3RyaXBzOwotLQotIAluc3RyaXBzID0gKHRkLT50ZF9yb3dzcGVyc3RyaXAgPT0gKHVpbnQzMikgLTEgPyAxIDoKLSAJICAgICBUSUZGaG93bWFueV8zMih0ZC0+dGRfaW1hZ2VsZW5ndGgsIHRkLT50ZF9yb3dzcGVyc3RyaXApKTsKLSAJaWYgKHRkLT50ZF9wbGFuYXJjb25maWcgPT0gUExBTkFSQ09ORklHX1NFUEFSQVRFKQotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNi0xMDI3MS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE2LTEwMjcxLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZmU1YmNkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE2LTEwMjcxLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotRnJvbSA5NjU3YmJlM2NkY2U0YWFhOTBlMDdkNTBjMWM3MGFlNTJkYTBiYTZhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogZXJvdWF1bHQgPGVyb3VhdWx0PgotRGF0ZTogU2F0LCAzIERlYyAyMDE2IDExOjM1OjU2ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdICogdG9vbHMvdGlmZmNyb3AuYzogZml4IHJlYWRDb250aWdTdHJpcHNJbnRvQnVmZmVyKCkgaW4gLWkKLSAoaWdub3JlKSBtb2RlIHNvIHRoYXQgdGhlIG91dHB1dCBidWZmZXIgaXMgY29ycmVjdGx5IGluY3JlbWVudGVkIHRvIGF2b2lkCi0gd3JpdGUgb3V0c2lkZSBib3VuZHMuIFJlcG9ydGVkIGJ5IEFnb3N0aW5vIFNhcnViYm8uIEZpeGVzCi0gaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjYyMAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE2LTEwMjcxCi1TaWduZWQtb2ZmLWJ5OiBSYWprdW1hciBWZWVyIDxydmVlckBtdmlzdGEuY29tPgotCi0tLS0KLSBDaGFuZ2VMb2cgICAgICAgIHwgNyArKysrKysrCi0gdG9vbHMvdGlmZmNyb3AuYyB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1JbmRleDogdGlmZi00LjAuNy90b29scy90aWZmY3JvcC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdGlmZi00LjAuNy5vcmlnL3Rvb2xzL3RpZmZjcm9wLmMKLSsrKyB0aWZmLTQuMC43L3Rvb2xzL3RpZmZjcm9wLmMKLUBAIC0zNjk4LDcgKzM2OTgsNyBAQCBzdGF0aWMgaW50IHJlYWRDb250aWdTdHJpcHNJbnRvQnVmZmVyIChUCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKSBzdHJpcCwgKHVuc2lnbmVkIGxvbmcpcm93cyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICAgICAgIH0KLS0gICAgICAgICAgICAgICAgYnVmcCArPSBieXRlc19yZWFkOwotKyAgICAgICAgICAgICAgICBidWZwICs9IHN0cmlwc2l6ZTsKLSAgICAgICAgIH0KLSAKLSAgICAgICAgIHJldHVybiAxOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctMTA2ODgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy0xMDY4OC5wYXRjaAppbmRleCBlZDljMGY1Li5iMGRiOTY5IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy0xMDY4OC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy0xMDY4OC5wYXRjaApAQCAtMTgsMTAgKzE4LDEwIEBACiAgbGlidGlmZi90aWZfZGlyd3JpdGUuYyB8IDIwICsrKysrKysrKysrKysrKystLS0tCiAgMiBmaWxlcyBjaGFuZ2VkLCAyNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQogCi1JbmRleDogdGlmZi00LjAuNy9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0aWZmLTQuMC43Lm9yaWcvQ2hhbmdlTG9nCi0rKysgdGlmZi00LjAuNy9DaGFuZ2VMb2cKK2RpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKK2luZGV4IDAyNDBmMGIuLjQyZWFlYjcgMTAwNjQ0CistLS0gYS9DaGFuZ2VMb2cKKysrKyBiL0NoYW5nZUxvZwogQEAgLTEsMyArMSwxMSBAQAogKzIwMTctMDYtMzAgIEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0IGF0IHNwYXRpYWx5cy5jb20+CiArCkBAIC0zNCwxMSArMzQsMTEgQEAKICAyMDE3LTA2LTI2ICBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgogIAogIAkqIGxpYnRpZmYvdGlmX2piaWcuYzogZml4IG1lbW9yeSBsZWFrIGluIGVycm9yIGNvZGUgcGF0aCBvZiBKQklHRGVjb2RlKCkKLUluZGV4OiB0aWZmLTQuMC43L2xpYnRpZmYvdGlmX2RpcndyaXRlLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0aWZmLTQuMC43Lm9yaWcvbGlidGlmZi90aWZfZGlyd3JpdGUuYwotKysrIHRpZmYtNC4wLjcvbGlidGlmZi90aWZfZGlyd3JpdGUuYwotQEAgLTIwNDcsNyArMjA0NywxMCBAQCBUSUZGV3JpdGVEaXJlY3RvcnlUYWdDaGVja2VkTG9uZzgoVElGRioKK2RpZmYgLS1naXQgYS9saWJ0aWZmL3RpZl9kaXJ3cml0ZS5jIGIvbGlidGlmZi90aWZfZGlyd3JpdGUuYworaW5kZXggMjk2N2RhNS4uOGQ2Njg2YiAxMDA2NDQKKy0tLSBhL2xpYnRpZmYvdGlmX2RpcndyaXRlLmMKKysrKyBiL2xpYnRpZmYvdGlmX2RpcndyaXRlLmMKK0BAIC0yMTExLDcgKzIxMTEsMTAgQEAgVElGRldyaXRlRGlyZWN0b3J5VGFnQ2hlY2tlZExvbmc4KFRJRkYqIHRpZiwgdWludDMyKiBuZGlyLCBUSUZGRGlyRW50cnkqIGRpciwgdWkKICB7CiAgCXVpbnQ2NCBtOwogIAlhc3NlcnQoc2l6ZW9mKHVpbnQ2NCk9PTgpOwpAQCAtNTAsNyArNTAsNyBAQAogIAltPXZhbHVlOwogIAlpZiAodGlmLT50aWZfZmxhZ3MmVElGRl9TV0FCKQogIAkJVElGRlN3YWJMb25nOCgmbSk7Ci1AQCAtMjA2MCw3ICsyMDYzLDEwIEBAIFRJRkZXcml0ZURpcmVjdG9yeVRhZ0NoZWNrZWRMb25nOEFycmF5KFQKK0BAIC0yMTI0LDcgKzIxMjcsMTAgQEAgVElGRldyaXRlRGlyZWN0b3J5VGFnQ2hlY2tlZExvbmc4QXJyYXkoVElGRiogdGlmLCB1aW50MzIqIG5kaXIsIFRJRkZEaXJFbnRyeSogZGkKICB7CiAgCWFzc2VydChjb3VudDwweDIwMDAwMDAwKTsKICAJYXNzZXJ0KHNpemVvZih1aW50NjQpPT04KTsKQEAgLTYyLDcgKzYyLDcgQEAKICAJaWYgKHRpZi0+dGlmX2ZsYWdzJlRJRkZfU1dBQikKICAJCVRJRkZTd2FiQXJyYXlPZkxvbmc4KHZhbHVlLGNvdW50KTsKICAJcmV0dXJuKFRJRkZXcml0ZURpcmVjdG9yeVRhZ0RhdGEodGlmLG5kaXIsZGlyLHRhZyxUSUZGX0xPTkc4LGNvdW50LGNvdW50KjgsdmFsdWUpKTsKLUBAIC0yMDcyLDcgKzIwNzgsMTAgQEAgVElGRldyaXRlRGlyZWN0b3J5VGFnQ2hlY2tlZFNsb25nOChUSUZGKgorQEAgLTIxMzYsNyArMjE0MiwxMCBAQCBUSUZGV3JpdGVEaXJlY3RvcnlUYWdDaGVja2VkU2xvbmc4KFRJRkYqIHRpZiwgdWludDMyKiBuZGlyLCBUSUZGRGlyRW50cnkqIGRpciwgdQogIHsKICAJaW50NjQgbTsKICAJYXNzZXJ0KHNpemVvZihpbnQ2NCk9PTgpOwpAQCAtNzQsNyArNzQsNyBAQAogIAltPXZhbHVlOwogIAlpZiAodGlmLT50aWZfZmxhZ3MmVElGRl9TV0FCKQogIAkJVElGRlN3YWJMb25nOCgodWludDY0KikoJm0pKTsKLUBAIC0yMDg1LDcgKzIwOTQsMTAgQEAgVElGRldyaXRlRGlyZWN0b3J5VGFnQ2hlY2tlZFNsb25nOEFycmF5KAorQEAgLTIxNDksNyArMjE1OCwxMCBAQCBUSUZGV3JpdGVEaXJlY3RvcnlUYWdDaGVja2VkU2xvbmc4QXJyYXkoVElGRiogdGlmLCB1aW50MzIqIG5kaXIsIFRJRkZEaXJFbnRyeSogZAogIHsKICAJYXNzZXJ0KGNvdW50PDB4MjAwMDAwMDApOwogIAlhc3NlcnQoc2l6ZW9mKGludDY0KT09OCk7CkBAIC04NiwzICs4Niw2IEBACiAgCWlmICh0aWYtPnRpZl9mbGFncyZUSUZGX1NXQUIpCiAgCQlUSUZGU3dhYkFycmF5T2ZMb25nOCgodWludDY0Kil2YWx1ZSxjb3VudCk7CiAgCXJldHVybihUSUZGV3JpdGVEaXJlY3RvcnlUYWdEYXRhKHRpZixuZGlyLGRpcix0YWcsVElGRl9TTE9ORzgsY291bnQsY291bnQqOCx2YWx1ZSkpOworLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy0xMzcyNi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTEzNzI2LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2MGZmYTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy0xMzcyNi5wYXRjaApAQCAtMCwwICsxLDU0IEBACitGcm9tIDUzMTdjZTIxNTkzNmNlNjExODQ2NTU3YmIxMDRiNDlkM2I0YzgzNDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdEBzcGF0aWFseXMuY29tPgorRGF0ZTogV2VkLCAyMyBBdWcgMjAxNyAxMzoyMTo0MSArMDAwMAorU3ViamVjdDogW1BBVENIXSAqIGxpYnRpZmYvdGlmX2RpcndyaXRlLmM6IHJlcGxhY2UgYXNzZXJ0aW9uIHJlbGF0ZWQgdG8gbm90CisgZmluZGluZyB0aGUgU3ViSUZEIHRhZyBieSBydW50aW1lIGNoZWNrLiBGaXhlcworIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI3MjcgUmVwb3J0ZWQgYnkgdGVhbSBPV0wzMzcKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorW2h0dHBzOi8vZ2l0aHViLmNvbS92YWR6L2xpYnRpZmYvY29tbWl0L2Y5MWNhODNhMjFhNmE1ODMwNTBlNWE1NzU1Y2UxNDQxYjJiZjFkN2VdCisKK0NWRTogQ1ZFLTIwMTctMTM3MjYKKworU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgorLS0tCisgQ2hhbmdlTG9nICAgICAgICAgICAgICB8IDcgKysrKysrKworIGxpYnRpZmYvdGlmX2RpcndyaXRlLmMgfCA3ICsrKysrKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZworaW5kZXggNjk4MGRhOC4uM2UyOTlkOSAxMDA2NDQKKy0tLSBhL0NoYW5nZUxvZworKysrIGIvQ2hhbmdlTG9nCitAQCAtMSwzICsxLDEwIEBACisrMjAxNy0wOC0yMyAgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KKysKKysJKiBsaWJ0aWZmL3RpZl9kaXJ3cml0ZS5jOiByZXBsYWNlIGFzc2VydGlvbiByZWxhdGVkIHRvIG5vdCBmaW5kaW5nIHRoZQorKwlTdWJJRkQgdGFnIGJ5IHJ1bnRpbWUgY2hlY2suCisrCUZpeGVzIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI3MjcKKysJUmVwb3J0ZWQgYnkgdGVhbSBPV0wzMzcKKysKKyAyMDE3LTA3LTE1ICBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgorIAorIAkqIHRvb2xzL3RpZmYycGRmLmM6IHByZXZlbnQgaGVhcCBidWZmZXIgb3ZlcmZsb3cgd3JpdGUgaW4gIlJhdyIKK2RpZmYgLS1naXQgYS9saWJ0aWZmL3RpZl9kaXJ3cml0ZS5jIGIvbGlidGlmZi90aWZfZGlyd3JpdGUuYworaW5kZXggOGQ2Njg2Yi4uMTQwOTBhZSAxMDA2NDQKKy0tLSBhL2xpYnRpZmYvdGlmX2RpcndyaXRlLmMKKysrKyBiL2xpYnRpZmYvdGlmX2RpcndyaXRlLmMKK0BAIC04MjEsNyArODIxLDEyIEBAIFRJRkZXcml0ZURpcmVjdG9yeVNlYyhUSUZGKiB0aWYsIGludCBpc2ltYWdlLCBpbnQgaW1hZ2Vkb25lLCB1aW50NjQqIHBkaXJvZmYpCisgCQkJVElGRkRpckVudHJ5KiBuYjsKKyAJCQlmb3IgKG5hPTAsIG5iPWRpcjsgOyBuYSsrLCBuYisrKQorIAkJCXsKKy0JCQkJYXNzZXJ0KG5hPG5kaXIpOworKwkJCQlpZiggbmEgPT0gbmRpciApCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElGRkVycm9yRXh0KHRpZi0+dGlmX2NsaWVudGRhdGEsbW9kdWxlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IGZpbmQgU3ViSUZEIHRhZyIpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gYmFkOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorIAkJCQlpZiAobmItPnRkaXJfdGFnPT1USUZGVEFHX1NVQklGRCkKKyAJCQkJCWJyZWFrOworIAkJCX0KKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctMTM3MjcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy0xMzcyNy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjI4YzJmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctMTM3MjcucGF0Y2gKQEAgLTAsMCArMSw2NSBAQAorRnJvbSBhNWU4MjQ1Y2M2NzY0NmY3YjQ0OGI0Y2EyOTI1OGVhYWM0MTgxMDJjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHRAc3BhdGlhbHlzLmNvbT4KK0RhdGU6IFdlZCwgMjMgQXVnIDIwMTcgMTM6MzM6NDIgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gKiBsaWJ0aWZmL3RpZl9kaXJ3cml0ZS5jOiByZXBsYWNlIGFzc2VydGlvbiB0byB0YWcgdmFsdWUgbm90CisgZml0dGluZyBvbiB1aW50MzIgd2hlbiBzZWxlY3RpbmcgdGhlIHZhbHVlIG9mIFN1YklGRCB0YWcgYnkgcnVudGltZSBjaGVjayAoaW4KKyBUSUZGV3JpdGVEaXJlY3RvcnlUYWdTdWJpZmQoKSkuIEZpeGVzCisgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjcyOCBSZXBvcnRlZCBieSB0ZWFtIE9XTDMzNworCitTdWJJRkQgdGFnIGJ5IHJ1bnRpbWUgY2hlY2sgKGluIFRJRkZXcml0ZURpcmVjdG9yeVNlYygpKQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitbaHR0cHM6Ly9naXRodWIuY29tL3ZhZHovbGlidGlmZi9jb21taXQvYjZhZjEzN2JmOWVmODUyZjFhNDhhNTBhNWFmYjg4ZjllOWRhMDFjY10KKworQ1ZFOiBDVkUtMjAxNy0xMzcyNworCitTaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CistLS0KKyBDaGFuZ2VMb2cgICAgICAgICAgICAgIHwgMTAgKysrKysrKysrLQorIGxpYnRpZmYvdGlmX2RpcndyaXRlLmMgfCAgOSArKysrKysrKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKK2luZGV4IDNlMjk5ZDkuLjhmNWVmZTkgMTAwNjQ0CistLS0gYS9DaGFuZ2VMb2cKKysrKyBiL0NoYW5nZUxvZworQEAgLTEsNyArMSwxNSBAQAorIDIwMTctMDgtMjMgIEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0IGF0IHNwYXRpYWx5cy5jb20+CisgCisrCSogbGlidGlmZi90aWZfZGlyd3JpdGUuYzogcmVwbGFjZSBhc3NlcnRpb24gdG8gdGFnIHZhbHVlIG5vdCBmaXR0aW5nCisrCW9uIHVpbnQzMiB3aGVuIHNlbGVjdGluZyB0aGUgdmFsdWUgb2YgU3ViSUZEIHRhZyBieSBydW50aW1lIGNoZWNrCisrCShpbiBUSUZGV3JpdGVEaXJlY3RvcnlUYWdTdWJpZmQoKSkuCisrCUZpeGVzIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI3MjgKKysJUmVwb3J0ZWQgYnkgdGVhbSBPV0wzMzcKKysKKysyMDE3LTA4LTIzICBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgorKworIAkqIGxpYnRpZmYvdGlmX2RpcndyaXRlLmM6IHJlcGxhY2UgYXNzZXJ0aW9uIHJlbGF0ZWQgdG8gbm90IGZpbmRpbmcgdGhlCistCVN1YklGRCB0YWcgYnkgcnVudGltZSBjaGVjay4KKysJU3ViSUZEIHRhZyBieSBydW50aW1lIGNoZWNrIChpbiBUSUZGV3JpdGVEaXJlY3RvcnlTZWMoKSkKKyAJRml4ZXMgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjcyNworIAlSZXBvcnRlZCBieSB0ZWFtIE9XTDMzNworIAorZGlmZiAtLWdpdCBhL2xpYnRpZmYvdGlmX2RpcndyaXRlLmMgYi9saWJ0aWZmL3RpZl9kaXJ3cml0ZS5jCitpbmRleCAxNDA5MGFlLi5mMGE0YmFhIDEwMDY0NAorLS0tIGEvbGlidGlmZi90aWZfZGlyd3JpdGUuYworKysrIGIvbGlidGlmZi90aWZfZGlyd3JpdGUuYworQEAgLTE5NDksNyArMTk0OSwxNCBAQCBUSUZGV3JpdGVEaXJlY3RvcnlUYWdTdWJpZmQoVElGRiogdGlmLCB1aW50MzIqIG5kaXIsIFRJRkZEaXJFbnRyeSogZGlyKQorIAkJZm9yIChwPTA7IHAgPCB0aWYtPnRpZl9kaXIudGRfbnN1YmlmZDsgcCsrKQorIAkJeworICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydChwYSAhPSAwKTsKKy0JCQlhc3NlcnQoKnBhIDw9IDB4RkZGRkZGRkZVTCk7CisrCisrICAgICAgICAgICAgICAgICAgICAgICAgLyogQ291bGQgaGFwcGVuIGlmIGFuIGNsYXNzaWNUSUZGIGhhcyBhIFN1YklGRCBvZiB0eXBlIExPTkc4ICh3aGljaCBpcyBpbGxlZ2FsKSAqLworKyAgICAgICAgICAgICAgICAgICAgICAgIGlmKCAqcGEgPiAweEZGRkZGRkZGVUwpCisrICAgICAgICAgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSUZGRXJyb3JFeHQodGlmLT50aWZfY2xpZW50ZGF0YSxtb2R1bGUsIklsbGVnYWwgdmFsdWUgZm9yIFN1YklGRCB0YWciKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1RJRkZmcmVlKG8pOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4oMCk7CisrICAgICAgICAgICAgICAgICAgICAgICAgfQorIAkJCSpwYisrPSh1aW50MzIpKCpwYSsrKTsKKyAJCX0KKyAJCW49VElGRldyaXRlRGlyZWN0b3J5VGFnQ2hlY2tlZElmZEFycmF5KHRpZixuZGlyLGRpcixUSUZGVEFHX1NVQklGRCx0aWYtPnRpZl9kaXIudGRfbnN1YmlmZCxvKTsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctNzU5Mi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTc1OTIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViODA0NDUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctNzU5Mi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLUZyb20gNDg3ODBiNGZjYzQyNWNkZGM0ZWY4ZmZkZjUzNmY5NmEwZDFiMzEzYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGVyb3VhdWx0IDxlcm91YXVsdD4KLURhdGU6IFdlZCwgMTEgSmFuIDIwMTcgMTY6Mzg6MjYgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gKiBsaWJ0aWZmL3RpZl9nZXRpbWFnZS5jOiBhZGQgZXhwbGljaXQgdWludDMyIGNhc3QgaW4gcHV0YWdyZXl0aWxlIHRvCi1hdm9pZCBVbmRlZmluZWRCZWhhdmlvclNhbml0aXplciB3YXJuaW5nLgotUGF0Y2ggYnkgTmljb2xhcyBQZW5hLgotRml4ZXMgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY1OAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE3LTc1OTIKLVNpZ25lZC1vZmYtYnk6IFJhamt1bWFyIFZlZXIgPHJ2ZWVyQG12aXN0YS5jb20+Ci0KLUluZGV4OiB0aWZmLTQuMC43L0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHRpZmYtNC4wLjcub3JpZy9DaGFuZ2VMb2cJMjAxNy0wNC0yNCAxNDoyNToxMC4xNDM5MjYwMjUgKzA1MzAKLSsrKyB0aWZmLTQuMC43L0NoYW5nZUxvZwkyMDE3LTA0LTI0IDE1OjIwOjIxLjI5MTgzOTIzMCArMDUzMAotQEAgLTEsMyArMSwxMCBAQAotKzIwMTctMDEtMTEgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KLSsKLSsJKiBsaWJ0aWZmL3RpZl9nZXRpbWFnZS5jOiBhZGQgZXhwbGljaXQgdWludDMyIGNhc3QgaW4gcHV0YWdyZXl0aWxlIHRvCi0rCWF2b2lkIFVuZGVmaW5lZEJlaGF2aW9yU2FuaXRpemVyIHdhcm5pbmcuCi0rCVBhdGNoIGJ5IE5pY29sYXMgUGVuYS4KLSsJRml4ZXMgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY1OAotKwotIDIwMTYtMTItMDMgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KLSAKLSAJKiBsaWJ0aWZmL3RpZl9kaXJyZWFkLmM6IG1vZGlmeSBDaG9wVXBTaW5nbGVVbmNvbXByZXNzZWRTdHJpcCgpIHRvCi1JbmRleDogdGlmZi00LjAuNy9saWJ0aWZmL3RpZl9nZXRpbWFnZS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdGlmZi00LjAuNy5vcmlnL2xpYnRpZmYvdGlmX2dldGltYWdlLmMJMjAxNi0xMS0xOCAwODoxNzo0NS4wMDAwMDAwMDAgKzA1MzAKLSsrKyB0aWZmLTQuMC43L2xpYnRpZmYvdGlmX2dldGltYWdlLmMJMjAxNy0wNC0yNCAxNToxNzo0Ni42NzE4NDMyODMgKzA1MzAKLUBAIC0xMzA1LDcgKzEzMDUsNyBAQAotICAgICB3aGlsZSAoaC0tID4gMCkgewotIAlmb3IgKHggPSB3OyB4LS0gPiAwOykKLSAgICAgICAgIHsKLS0gICAgICAgICAgICAqY3ArKyA9IEJXbWFwWypwcF1bMF0gJiAoKihwcCsxKSA8PCAyNCB8IH5BMSk7Ci0rICAgICAgICAgICAgKmNwKysgPSBCV21hcFsqcHBdWzBdICYgKCh1aW50MzIpKihwcCsxKSA8PCAyNCB8IH5BMSk7Ci0gICAgICAgICAgICAgcHAgKz0gc2FtcGxlc3BlcnBpeGVsOwotICAgICAgICAgfQotIAljcCArPSB0b3NrZXc7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy03NTkzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctNzU5My5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzgwZGZjYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy03NTkzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotRnJvbSBkNjAzMzIwNTdiOTU3NWFkYTRmMjY0NDg5NTgyYjEzZTMwMTM3YmUxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogZXJvdWF1bHQgPGVyb3VhdWx0PgotRGF0ZTogV2VkLCAxMSBKYW4gMjAxNyAxOTowMjo0OSArMDAwMAotU3ViamVjdDogW1BBVENIXSAqIGxpYnRpZmYvdGlmZmlvcC5oLCB0aWZfdW5peC5jLCB0aWZfd2luMzIuYywgdGlmX3Ztcy5jOiBhZGQKLSBfVElGRmNhbGxvYygpCi0KLSogbGlidGlmZi90aWZfcmVhZC5jOiBUSUZGUmVhZEJ1ZmZlclNldHVwKCk6IHVzZSBfVElGRmNhbGxvYygpIHRvIHplcm8KLWluaXRpYWxpemUgdGlmX3Jhd2RhdGEuCi1GaXhlcyBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjUxCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotQ1ZFOiBDVkUtMjAxNy03NTkzCi1TaWduZWQtb2ZmLWJ5OiBSYWprdW1hciBWZWVyIDxydmVlckBtdmlzdGEuY29tPgotSW5kZXg6IHRpZmYtNC4wLjcvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdGlmZi00LjAuNy5vcmlnL0NoYW5nZUxvZwkyMDE3LTA0LTI1IDE5OjAzOjIwLjU4NDE1NTQ1MiArMDUzMAotKysrIHRpZmYtNC4wLjcvQ2hhbmdlTG9nCTIwMTctMDQtMjYgMTI6MDk6NDEuOTg2ODY2ODk2ICswNTMwCi1AQCAtNDQsNiArNDQsMTQgQEAKLSAKLSAyMDE3LTAxLTExIEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0IGF0IHNwYXRpYWx5cy5jb20+Ci0gCi0rCSogbGlidGlmZi90aWZmaW9wLmgsIHRpZl91bml4LmMsIHRpZl93aW4zMi5jIDogYWRkIF9USUZGY2FsbG9jKCkKLSsKLSsJKiBsaWJ0aWZmL3RpZl9yZWFkLmM6IFRJRkZSZWFkQnVmZmVyU2V0dXAoKTogdXNlIF9USUZGY2FsbG9jKCkgdG8gemVybwotKwlpbml0aWFsaXplIHRpZl9yYXdkYXRhLgotKwlGaXhlcyBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjUxCi0rCi0rMjAxNy0wMS0xMSBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgotKwotIAkqIGxpYnRpZmYvdGlmX2dldGltYWdlLmM6IGFkZCBleHBsaWNpdCB1aW50MzIgY2FzdCBpbiBwdXRhZ3JleXRpbGUgdG8KLSAJYXZvaWQgVW5kZWZpbmVkQmVoYXZpb3JTYW5pdGl6ZXIgd2FybmluZy4KLSAJUGF0Y2ggYnkgTmljb2xhcyBQZW5hLgotSW5kZXg6IHRpZmYtNC4wLjcvbGlidGlmZi90aWZfcmVhZC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdGlmZi00LjAuNy5vcmlnL2xpYnRpZmYvdGlmX3JlYWQuYwkyMDE3LTA0LTI1IDE5OjAzOjIwLjU4NDE1NTQ1MiArMDUzMAotKysrIHRpZmYtNC4wLjcvbGlidGlmZi90aWZfcmVhZC5jCTIwMTctMDQtMjYgMTI6MTE6NDIuODE0ODYzNzI5ICswNTMwCi1AQCAtOTg2LDcgKzk4Niw5IEBACi0gCQkJCSAiSW52YWxpZCBidWZmZXIgc2l6ZSIpOwotIAkJICAgIHJldHVybiAoMCk7Ci0gCQl9Ci0tCQl0aWYtPnRpZl9yYXdkYXRhID0gKHVpbnQ4KikgX1RJRkZtYWxsb2ModGlmLT50aWZfcmF3ZGF0YXNpemUpOwotKyAgICAgICAgICAgICAgICAvKiBJbml0aWFsaXplIHRvIHplcm8gdG8gYXZvaWQgdW5pbml0aWFsaXplZCBidWZmZXJzIGluIGNhc2Ugb2YgKi8KLSsgICAgICAgICAgICAgICAgLyogc2hvcnQgcmVhZHMgKGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI2NTEpICovCi0rICAgICAgICAgICAgICAgIHRpZi0+dGlmX3Jhd2RhdGEgPSAodWludDgqKSBfVElGRmNhbGxvYygxLCB0aWYtPnRpZl9yYXdkYXRhc2l6ZSk7Ci0gCQl0aWYtPnRpZl9mbGFncyB8PSBUSUZGX01ZQlVGRkVSOwotIAl9Ci0gCWlmICh0aWYtPnRpZl9yYXdkYXRhID09IE5VTEwpIHsKLUluZGV4OiB0aWZmLTQuMC43L2xpYnRpZmYvdGlmX3VuaXguYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHRpZmYtNC4wLjcub3JpZy9saWJ0aWZmL3RpZl91bml4LmMJMjAxNS0wOC0yOSAwMzo0NjoyMi43MDc4MTcwNDEgKzA1MzAKLSsrKyB0aWZmLTQuMC43L2xpYnRpZmYvdGlmX3VuaXguYwkyMDE3LTA0LTI2IDEyOjEzOjA3LjQ0Mjg2MTUxMCArMDUzMAotQEAgLTMxNiw2ICszMTYsMTQgQEAKLSAJcmV0dXJuIChtYWxsb2MoKHNpemVfdCkgcykpOwotIH0KLSAKLSt2b2lkKiBfVElGRmNhbGxvYyh0bXNpemVfdCBubWVtYiwgdG1zaXplX3Qgc2l6KQotK3sKLSsgICAgaWYoIG5tZW1iID09IDAgfHwgc2l6ID09IDAgKQotKyAgICAgICAgcmV0dXJuICgodm9pZCAqKSBOVUxMKTsKLSsKLSsgICAgcmV0dXJuIGNhbGxvYygoc2l6ZV90KSBubWVtYiwgKHNpemVfdClzaXopOwotK30KLSsKLSB2b2lkCi0gX1RJRkZmcmVlKHZvaWQqIHApCi0gewotSW5kZXg6IHRpZmYtNC4wLjcvbGlidGlmZi90aWZfd2luMzIuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHRpZmYtNC4wLjcub3JpZy9saWJ0aWZmL3RpZl93aW4zMi5jCTIwMTUtMDgtMjkgMDM6NDY6MjIuNzMwNTcwMTY5ICswNTMwCi0rKysgdGlmZi00LjAuNy9saWJ0aWZmL3RpZl93aW4zMi5jCTIwMTctMDQtMjYgMTI6MTQ6MTIuOTE4ODU5Nzk0ICswNTMwCi1AQCAtMzYwLDYgKzM2MCwxNCBAQAotIAlyZXR1cm4gKG1hbGxvYygoc2l6ZV90KSBzKSk7Ci0gfQotIAotK3ZvaWQqIF9USUZGY2FsbG9jKHRtc2l6ZV90IG5tZW1iLCB0bXNpemVfdCBzaXopCi0rewotKyAgICBpZiggbm1lbWIgPT0gMCB8fCBzaXogPT0gMCApCi0rICAgICAgICByZXR1cm4gKCh2b2lkICopIE5VTEwpOwotKwotKyAgICByZXR1cm4gY2FsbG9jKChzaXplX3QpIG5tZW1iLCAoc2l6ZV90KXNpeik7Ci0rfQotKwotIHZvaWQKLSBfVElGRmZyZWUodm9pZCogcCkKLSB7Ci1JbmRleDogdGlmZi00LjAuNy9saWJ0aWZmL3RpZmZpby5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdGlmZi00LjAuNy5vcmlnL2xpYnRpZmYvdGlmZmlvLmgJMjAxNi0wMS0yNCAyMTowOTo1MS44OTQ0NDIwNDIgKzA1MzAKLSsrKyB0aWZmLTQuMC43L2xpYnRpZmYvdGlmZmlvLmgJMjAxNy0wNC0yNiAxMjoxNTo1NS4wMzQ4NTcxMTcgKzA1MzAKLUBAIC0yOTMsNiArMjkzLDcgQEAKLSAgKi8KLSAKLSBleHRlcm4gdm9pZCogX1RJRkZtYWxsb2ModG1zaXplX3Qgcyk7Ci0rZXh0ZXJuIHZvaWQqIF9USUZGY2FsbG9jKHRtc2l6ZV90IG5tZW1iLCB0bXNpemVfdCBzaXopOwotIGV4dGVybiB2b2lkKiBfVElGRnJlYWxsb2Modm9pZCogcCwgdG1zaXplX3Qgcyk7Ci0gZXh0ZXJuIHZvaWQgX1RJRkZtZW1zZXQodm9pZCogcCwgaW50IHYsIHRtc2l6ZV90IGMpOwotIGV4dGVybiB2b2lkIF9USUZGbWVtY3B5KHZvaWQqIGQsIGNvbnN0IHZvaWQqIHMsIHRtc2l6ZV90IGMpOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctNzU5NC1wMS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTc1OTQtcDEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjN2U0NjAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctNzU5NC1wMS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLXJvbSA4MjgzZTRkMWI3ZTUzMzQwNjg0ZDEyOTMyODgwY2JjYmFmMjNhOGMxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogZXJvdWF1bHQgPGVyb3VhdWx0PgotRGF0ZTogVGh1LCAxMiBKYW4gMjAxNyAxNzo0MzoyNSArMDAwMAotCi0qIGxpYnRpZmYvdGlmX29qcGVnLmM6IGZpeCBsZWFrIGluIE9KUEVHUmVhZEhlYWRlckluZm9TZWNUYWJsZXNBY1RhYmxlCi0gIHdoZW4gcmVhZCBmYWlscy4KLSAgUGF0Y2ggYnkgTmljb2xhcyBQZW5hLgotICBGaXhlcyBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjU5Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotQ1ZFOiBDVkUtMjAxNy03NTk0ICNwYXRjaDEKLVNpZ25lZC1vZmYtYnk6IFJhamt1bWFyIFZlZXIgPHJ2ZWVyQG12aXN0YS5jb20+Ci1JbmRleDogdGlmZi00LjAuNy9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0aWZmLTQuMC43Lm9yaWcvQ2hhbmdlTG9nCTIwMTctMDQtMjQgMTY6MTM6MTUuMDAwMDAwMDAwICswNTMwCi0rKysgdGlmZi00LjAuNy9DaGFuZ2VMb2cJMjAxNy0wNC0yNCAxNjo1MDoyNi40NjU4OTc2NDYgKzA1MzAKLUBAIC0xLDMgKzEsMTAgQEAKLSsyMDE3LTAxLTEyIEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0IGF0IHNwYXRpYWx5cy5jb20+Ci0rCi0rCSogbGlidGlmZi90aWZfb2pwZWcuYzogZml4IGxlYWsgaW4gT0pQRUdSZWFkSGVhZGVySW5mb1NlY1RhYmxlc0FjVGFibGUKLSsJd2hlbiByZWFkIGZhaWxzLgotKwlQYXRjaCBieSBOaWNvbMOhcyBQZcOxYS4KLSsJRml4ZXMgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY1OQotKwotIDIwMTctMDEtMTEgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KLSAKLSAJKiBsaWJ0aWZmL3RpZl9nZXRpbWFnZS5jOiBhZGQgZXhwbGljaXQgdWludDMyIGNhc3QgaW4gcHV0YWdyZXl0aWxlIHRvCi1JbmRleDogdGlmZi00LjAuNy9saWJ0aWZmL3RpZl9vanBlZy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdGlmZi00LjAuNy5vcmlnL2xpYnRpZmYvdGlmX29qcGVnLmMJMjAxNy0wNC0yNCAxNjowMjoyOS44MTc5NzMwNTEgKzA1MzAKLSsrKyB0aWZmLTQuMC43L2xpYnRpZmYvdGlmX29qcGVnLmMJMjAxNy0wNC0yNCAxNjo1MjoyNy4zNDk4OTQ0NzcgKzA1MzAKLUBAIC0xOTE4LDcgKzE5MTgsMTAgQEAKLSAJCQkJcmJbc2l6ZW9mKHVpbnQzMikrNStuXT1vW25dOwotIAkJCXA9KHVpbnQzMilUSUZGUmVhZEZpbGUodGlmLCYocmJbc2l6ZW9mKHVpbnQzMikrMjFdKSxxKTsKLSAJCQlpZiAocCE9cSkKLSsgICAgICAgICAgICAgICAgICAgICAgICB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVElGRmZyZWUocmIpOwotIAkJCQlyZXR1cm4oMCk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgfQotIAkJCXNwLT5hY3RhYmxlW21dPXJiOwotIAkJCXNwLT5zb3NfdGRhW21dPShzcC0+c29zX3RkYVttXXxtKTsKLSAJCX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTc1OTQtcDIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy03NTk0LXAyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MmExOWM2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTc1OTQtcDIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi1Gcm9tIDJlYTMyZjczNzJiNjVjMjRiMjgxNmYxMWMwNGJmNTliNTA5MGQwNWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBlcm91YXVsdCA8ZXJvdWF1bHQ+Ci1EYXRlOiBUaHUsIDEyIEphbiAyMDE3IDE5OjIzOjIwICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8yXSAqIGxpYnRpZmYvdGlmX29qcGVnLmM6IGZpeCBsZWFrIGluCi0gT0pQRUdSZWFkSGVhZGVySW5mb1NlY1RhYmxlc1FUYWJsZSwgT0pQRUdSZWFkSGVhZGVySW5mb1NlY1RhYmxlc0RjVGFibGUgYW5kCi0gT0pQRUdSZWFkSGVhZGVySW5mb1NlY1RhYmxlc0FjVGFibGUKLQotVXBzdHJlYW0tc3RhdHVzOiBCYWNrcG9ydAotCi1DVkU6IENWRS0yMDE3LTc1OTQgI3BhdGNoMgotU2lnbmVkLW9mZi1ieTogUmFqa3VtYXIgVmVlciA8cnZlZXJAbXZpc3RhLmNvbT4KLUluZGV4OiB0aWZmLTQuMC43L0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHRpZmYtNC4wLjcub3JpZy9DaGFuZ2VMb2cJMjAxNy0wNC0yNCAxNjo1MDoyNi40NjU4OTc2NDYgKzA1MzAKLSsrKyB0aWZmLTQuMC43L0NoYW5nZUxvZwkyMDE3LTA0LTI0IDE2OjU2OjIwLjY4NTg4ODM2MCArMDUzMAotQEAgLTEsNiArMSw3IEBACi0gMjAxNy0wMS0xMiBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgotIAotLQkqIGxpYnRpZmYvdGlmX29qcGVnLmM6IGZpeCBsZWFrIGluIE9KUEVHUmVhZEhlYWRlckluZm9TZWNUYWJsZXNBY1RhYmxlCi0rCSogbGlidGlmZi90aWZfb2pwZWcuYzogZml4IGxlYWsgaW4gT0pQRUdSZWFkSGVhZGVySW5mb1NlY1RhYmxlc1FUYWJsZSwKLSsJT0pQRUdSZWFkSGVhZGVySW5mb1NlY1RhYmxlc0RjVGFibGUgYW5kIE9KUEVHUmVhZEhlYWRlckluZm9TZWNUYWJsZXNBY1RhYmxlCi0gCXdoZW4gcmVhZCBmYWlscy4KLSAJUGF0Y2ggYnkgTmljb2zDoXMgUGXDsWEuCi0gCUZpeGVzIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI2NTkKLUluZGV4OiB0aWZmLTQuMC43L2xpYnRpZmYvdGlmX29qcGVnLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0aWZmLTQuMC43Lm9yaWcvbGlidGlmZi90aWZfb2pwZWcuYwkyMDE3LTA0LTI0IDE2OjUyOjI3LjM0OTg5NDQ3NyArMDUzMAotKysrIHRpZmYtNC4wLjcvbGlidGlmZi90aWZfb2pwZWcuYwkyMDE3LTA0LTI0IDE2OjU5OjIwLjAwMTg4MzY2MCArMDUzMAotQEAgLTE3OTAsNyArMTc5MCwxMCBAQAotIAkJCVRJRkZTZWVrRmlsZSh0aWYsc3AtPnF0YWJsZV9vZmZzZXRbbV0sU0VFS19TRVQpOyAKLSAJCQlwPSh1aW50MzIpVElGRlJlYWRGaWxlKHRpZiwmb2Jbc2l6ZW9mKHVpbnQzMikrNV0sNjQpOwotIAkJCWlmIChwIT02NCkKLSsgICAgICAgICAgICAgICAgICAgICAgICB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVElGRmZyZWUob2IpOwotIAkJCQlyZXR1cm4oMCk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgfQotIAkJCXNwLT5xdGFibGVbbV09b2I7Ci0gCQkJc3AtPnNvZl90cVttXT1tOwotIAkJfQotQEAgLTE4NTQsNyArMTg1NywxMCBAQAotIAkJCQlyYltzaXplb2YodWludDMyKSs1K25dPW9bbl07Ci0gCQkJcD0odWludDMyKVRJRkZSZWFkRmlsZSh0aWYsJihyYltzaXplb2YodWludDMyKSsyMV0pLHEpOwotIAkJCWlmIChwIT1xKQotKyAgICAgICAgICAgICAgICAgICAgICAgIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9USUZGZnJlZShyYik7Ci0gCQkJCXJldHVybigwKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gCQkJc3AtPmRjdGFibGVbbV09cmI7Ci0gCQkJc3AtPnNvc190ZGFbbV09KG08PDQpOwotIAkJfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctNzU5NS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTc1OTUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1MWEzN2YuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctNzU5NS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLWNvbW1pdCA2MThkNDkwMDkwYmZkMTBlNjEzYWM1NzRlY2ZmMzFhMjkzOTA0YjQ0Ci1BdXRob3I6IGVyb3VhdWx0IDxlcm91YXVsdD4KLURhdGU6ICAgV2VkIEphbiAxMSAxMjoxNTowMSAyMDE3ICswMDAwCi0KLSAgICAqIGxpYnRpZmYvdGlmX2pwZWcuYzogYXZvaWQgaW50ZWdlciBkaXZpc2lvbiBieSB6ZXJvCi0gICAgICBpbiBKUEVHU2V0dXBFbmNvZGUoKSB3aGVuIGhvcml6b250YWwgb3IgdmVydGljYWwgc2FtcGxpbmcgaXMgc2V0IHRvIDAuCi0gICAgICBGaXhlcyBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjUzCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotQ1ZFOiBDVkUtMjAxNy03NTk1Ci1TaWduZWQtb2ZmLWJ5OiBSYWprdW1hciBWZWVyIDxydmVlckBtdmlzdGEuY29tPgotCi1JbmRleDogdGlmZi00LjAuNy9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0aWZmLTQuMC43Lm9yaWcvQ2hhbmdlTG9nCTIwMTctMDQtMjQgMTc6MzE6NDAuMDEzODMyODA3ICswNTMwCi0rKysgdGlmZi00LjAuNy9DaGFuZ2VMb2cJMjAxNy0wNC0yNCAxODowMzozNC43Njk3ODI2MTYgKzA1MzAKLUBAIC04LDYgKzgsMTIgQEAKLSAKLSAyMDE3LTAxLTExIEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0IGF0IHNwYXRpYWx5cy5jb20+Ci0gCi0rCSogbGlidGlmZi90aWZfanBlZy5jOiBhdm9pZCBpbnRlZ2VyIGRpdmlzaW9uIGJ5IHplcm8gaW4KLSsJSlBFR1NldHVwRW5jb2RlKCkgd2hlbiBob3Jpem9udGFsIG9yIHZlcnRpY2FsIHNhbXBsaW5nIGlzIHNldCB0byAwLgotKwlGaXhlcyBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjUzCi0rCi0rMjAxNy0wMS0xMSBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgotKwotIAkqIGxpYnRpZmYvdGlmX2dldGltYWdlLmM6IGFkZCBleHBsaWNpdCB1aW50MzIgY2FzdCBpbiBwdXRhZ3JleXRpbGUgdG8KLSAJYXZvaWQgVW5kZWZpbmVkQmVoYXZpb3JTYW5pdGl6ZXIgd2FybmluZy4KLSAJUGF0Y2ggYnkgTmljb2xhcyBQZW5hLgotSW5kZXg6IHRpZmYtNC4wLjcvbGlidGlmZi90aWZfanBlZy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdGlmZi00LjAuNy5vcmlnL2xpYnRpZmYvdGlmX2pwZWcuYwkyMDE2LTAxLTI0IDIxOjA5OjUxLjc4MTY0MTYyNSArMDUzMAotKysrIHRpZmYtNC4wLjcvbGlidGlmZi90aWZfanBlZy5jCTIwMTctMDQtMjQgMTg6MDU6NTkuNzc3Nzc4ODE1ICswNTMwCi1AQCAtMTYyNiw2ICsxNjI2LDEzIEBACi0gCWNhc2UgUEhPVE9NRVRSSUNfWUNCQ1I6Ci0gCQlzcC0+aF9zYW1wbGluZyA9IHRkLT50ZF95Y2JjcnN1YnNhbXBsaW5nWzBdOwotIAkJc3AtPnZfc2FtcGxpbmcgPSB0ZC0+dGRfeWNiY3JzdWJzYW1wbGluZ1sxXTsKLSsgICAgICAgICAgICAgICAgaWYoIHNwLT5oX3NhbXBsaW5nID09IDAgfHwgc3AtPnZfc2FtcGxpbmcgPT0gMCApCi0rICAgICAgICAgICAgICAgIHsKLSsgICAgICAgICAgICAgICAgICAgICAgVElGRkVycm9yRXh0KHRpZi0+dGlmX2NsaWVudGRhdGEsIG1vZHVsZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlnIGhvcml6b250YWwvdmVydGljYWwgc2FtcGxpbmcgdmFsdWUiKTsKLSsgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgwKTsKLSsgICAgICAgICAgICAgICAgfQotKwotIAkJLyoKLSAJCSAqIEEgUmVmZXJlbmNlQmxhY2tXaGl0ZSBmaWVsZCAqbXVzdCogYmUgcHJlc2VudCBzaW5jZSB0aGUKLSAJCSAqIGRlZmF1bHQgdmFsdWUgaXMgaW5hcHByb3ByaWF0ZSBmb3IgWUNiQ3IuICBGaWxsIGluIHRoZQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctNzU5Ni5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTc1OTYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5NDVjM2QuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctNzU5Ni5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwOCArMCwwIEBACi1Gcm9tIDMxNDRlNTc3NzBjMWU0ZDI2NTIwZDhhYmVlNzUwZjhhYzhiNzU0OTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBlcm91YXVsdCA8ZXJvdWF1bHQ+Ci1EYXRlOiBXZWQsIDExIEphbiAyMDE3IDE2OjA5OjAyICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdICogbGlidGlmZi90aWZfZGlyLmMsIHRpZl9kaXJyZWFkLmMsIHRpZl9kaXJ3cml0ZS5jOiBpbXBsZW1lbnQKLSB2YXJpb3VzIGNsYW1waW5ncyBvZiBkb3VibGUgdG8gb3RoZXIgZGF0YSB0eXBlcyB0byBhdm9pZCB1bmRlZmluZWQgYmVoYXZpb3VyCi0gaWYgdGhlIG91dHB1dCByYW5nZSBpc24ndCBiaWcgZW5vdWdoIHRvIGhvbGQgdGhlIGlucHV0IHZhbHVlLiBGaXhlcwotIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI2NDMKLSBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjQyCi0gaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY0NgotIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI2NDcKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1DVkU6IENWRS0yMDE3LTc1OTYKLVNpZ25lZC1vZmYtYnk6IFJhamt1bWFyIFZlZXIgPHJ2ZWVyQG12aXN0YS5jb20+Ci0KLUluZGV4OiB0aWZmLTQuMC43L0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHRpZmYtNC4wLjcub3JpZy9DaGFuZ2VMb2cJMjAxNy0wNC0yNSAxNTo1Mzo0MC4yOTQ1OTI4MTIgKzA1MzAKLSsrKyB0aWZmLTQuMC43L0NoYW5nZUxvZwkyMDE3LTA0LTI1IDE2OjAyOjAzLjIzODYwMDY0MSArMDUzMAotQEAgLTYsNiArNiwxNiBAQAotIAlQYXRjaCBieSBOaWNvbMOhcyBQZcOxYS4KLSAJRml4ZXMgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY1OQotIAotKzIwMTctMDEtMTEgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KLSsKLSsJKiBsaWJ0aWZmL3RpZl9kaXIuYywgdGlmX2RpcnJlYWQuYywgdGlmX2RpcndyaXRlLmM6IGltcGxlbWVudCB2YXJpb3VzIGNsYW1waW5ncwotKwlvZiBkb3VibGUgdG8gb3RoZXIgZGF0YSB0eXBlcyB0byBhdm9pZCB1bmRlZmluZWQgYmVoYXZpb3VyIGlmIHRoZSBvdXRwdXQgcmFuZ2UKLSsJaXNuJ3QgYmlnIGVub3VnaCB0byBob2xkIHRoZSBpbnB1dCB2YWx1ZS4KLSsJRml4ZXMgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY0MwotKwlodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjQyCi0rCWh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI2NDYKLSsJaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY0NwotKwotIDIwMTctMDEtMTEgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KLSAKLSAJKiBsaWJ0aWZmL3RpZl9qcGVnLmM6IGF2b2lkIGludGVnZXIgZGl2aXNpb24gYnkgemVybyBpbgotSW5kZXg6IHRpZmYtNC4wLjcvbGlidGlmZi90aWZfZGlyLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0aWZmLTQuMC43Lm9yaWcvbGlidGlmZi90aWZfZGlyLmMJMjAxNi0xMC0zMCAwNDozMzoxOC44NTY1OTgwNzIgKzA1MzAKLSsrKyB0aWZmLTQuMC43L2xpYnRpZmYvdGlmX2Rpci5jCTIwMTctMDQtMjUgMTY6MDI6MDMuMjM4NjAwNjQxICswNTMwCi1AQCAtMzEsNiArMzEsNyBAQAotICAqIChhbmQgYWxzbyBzb21lIG1pc2NlbGxhbmVvdXMgc3R1ZmYpCi0gICovCi0gI2luY2x1ZGUgInRpZmZpb3AuaCIKLSsjaW5jbHVkZSA8ZmxvYXQuaD4KLSAKLSAvKgotICAqIFRoZXNlIGFyZSB1c2VkIGluIHRoZSBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBjb2RlLi4uCi1AQCAtMTU0LDYgKzE1NSwxNSBAQAotIAlyZXR1cm4gKDApOwotIH0KLSAKLStzdGF0aWMgZmxvYXQgVElGRkNsYW1wRG91YmxlVG9GbG9hdCggZG91YmxlIHZhbCApCi0rewotKyAgICBpZiggdmFsID4gRkxUX01BWCApCi0rICAgICAgICByZXR1cm4gRkxUX01BWDsKLSsgICAgaWYoIHZhbCA8IC1GTFRfTUFYICkKLSsgICAgICAgIHJldHVybiAtRkxUX01BWDsKLSsgICAgcmV0dXJuIChmbG9hdCl2YWw7Ci0rfQotKwotIHN0YXRpYyBpbnQKLSBfVElGRlZTZXRGaWVsZChUSUZGKiB0aWYsIHVpbnQzMiB0YWcsIHZhX2xpc3QgYXApCi0gewotQEAgLTMxMiwxMyArMzIyLDEzIEBACi0gICAgICAgICBkYmx2YWwgPSB2YV9hcmcoYXAsIGRvdWJsZSk7Ci0gICAgICAgICBpZiggZGJsdmFsIDwgMCApCi0gICAgICAgICAgICAgZ290byBiYWR2YWx1ZWRvdWJsZTsKLS0JCXRkLT50ZF94cmVzb2x1dGlvbiA9IChmbG9hdCkgZGJsdmFsOwotKwkJdGQtPnRkX3hyZXNvbHV0aW9uID0gVElGRkNsYW1wRG91YmxlVG9GbG9hdCggZGJsdmFsICk7Ci0gCQlicmVhazsKLSAJY2FzZSBUSUZGVEFHX1lSRVNPTFVUSU9OOgotICAgICAgICAgZGJsdmFsID0gdmFfYXJnKGFwLCBkb3VibGUpOwotICAgICAgICAgaWYoIGRibHZhbCA8IDAgKQotICAgICAgICAgICAgIGdvdG8gYmFkdmFsdWVkb3VibGU7Ci0tCQl0ZC0+dGRfeXJlc29sdXRpb24gPSAoZmxvYXQpIGRibHZhbDsKLSsJCXRkLT50ZF95cmVzb2x1dGlvbiA9IFRJRkZDbGFtcERvdWJsZVRvRmxvYXQoIGRibHZhbCApOwotIAkJYnJlYWs7Ci0gCWNhc2UgVElGRlRBR19QTEFOQVJDT05GSUc6Ci0gCQl2ID0gKHVpbnQxNikgdmFfYXJnKGFwLCB1aW50MTZfdmFwKTsKLUBAIC0zMjcsMTAgKzMzNywxMCBAQAotIAkJdGQtPnRkX3BsYW5hcmNvbmZpZyA9ICh1aW50MTYpIHY7Ci0gCQlicmVhazsKLSAJY2FzZSBUSUZGVEFHX1hQT1NJVElPTjoKLS0JCXRkLT50ZF94cG9zaXRpb24gPSAoZmxvYXQpIHZhX2FyZyhhcCwgZG91YmxlKTsKLSsJCXRkLT50ZF94cG9zaXRpb24gPSBUSUZGQ2xhbXBEb3VibGVUb0Zsb2F0KCB2YV9hcmcoYXAsIGRvdWJsZSkgKTsKLSAJCWJyZWFrOwotIAljYXNlIFRJRkZUQUdfWVBPU0lUSU9OOgotLQkJdGQtPnRkX3lwb3NpdGlvbiA9IChmbG9hdCkgdmFfYXJnKGFwLCBkb3VibGUpOwotKwkJdGQtPnRkX3lwb3NpdGlvbiA9IFRJRkZDbGFtcERvdWJsZVRvRmxvYXQoIHZhX2FyZyhhcCwgZG91YmxlKSApOwotIAkJYnJlYWs7Ci0gCWNhc2UgVElGRlRBR19SRVNPTFVUSU9OVU5JVDoKLSAJCXYgPSAodWludDE2KSB2YV9hcmcoYXAsIHVpbnQxNl92YXApOwotSW5kZXg6IHRpZmYtNC4wLjcvbGlidGlmZi90aWZfZGlycmVhZC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdGlmZi00LjAuNy5vcmlnL2xpYnRpZmYvdGlmX2RpcnJlYWQuYwkyMDE3LTA0LTI1IDE1OjUzOjQwLjEzNDU5MjgxMCArMDUzMAotKysrIHRpZmYtNC4wLjcvbGlidGlmZi90aWZfZGlycmVhZC5jCTIwMTctMDQtMjUgMTY6MDI6MDMuMjQyNjAwNjQxICswNTMwCi1AQCAtNDAsNiArNDAsNyBAQAotICAqLwotIAotICNpbmNsdWRlICJ0aWZmaW9wLmgiCi0rI2luY2x1ZGUgPGZsb2F0Lmg+Ci0gCi0gI2RlZmluZSBJR05PUkUgMCAgICAgICAgICAvKiB0YWcgcGxhY2Vob2xkZXIgdXNlZCBiZWxvdyAqLwotICNkZWZpbmUgRkFJTEVEX0ZJSSAgICAoKHVpbnQzMikgLTEpCi1AQCAtMjQwNiw3ICsyNDA3LDE0IEBACi0gCQkJCW1hPShkb3VibGUqKW9yaWdkYXRhOwotIAkJCQltYj1kYXRhOwotIAkJCQlmb3IgKG49MDsgbjxjb3VudDsgbisrKQotLQkJCQkJKm1iKys9KGZsb2F0KSgqbWErKyk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIHZhbCA9ICptYSsrOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCB2YWwgPiBGTFRfTUFYICkKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsID0gRkxUX01BWDsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKCB2YWwgPCAtRkxUX01BWCApCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9IC1GTFRfTUFYOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICptYisrPShmbG9hdCl2YWw7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gCQkJfQotIAkJCWJyZWFrOwotIAl9Ci1JbmRleDogdGlmZi00LjAuNy9saWJ0aWZmL3RpZl9kaXJ3cml0ZS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdGlmZi00LjAuNy5vcmlnL2xpYnRpZmYvdGlmX2RpcndyaXRlLmMJMjAxNi0xMC0zMCAwNDozMzoxOC44NzY4NTQ1MDEgKzA1MzAKLSsrKyB0aWZmLTQuMC43L2xpYnRpZmYvdGlmX2RpcndyaXRlLmMJMjAxNy0wNC0yNSAxNjowNzo0OC42NzA2MDYwMTggKzA1MzAKLUBAIC0zMCw2ICszMCw3IEBACi0gICogRGlyZWN0b3J5IFdyaXRlIFN1cHBvcnQgUm91dGluZXMuCi0gICovCi0gI2luY2x1ZGUgInRpZmZpb3AuaCIKLSsjaW5jbHVkZSA8ZmxvYXQuaD4KLSAKLSAjaWZkZWYgSEFWRV9JRUVFRlAKLSAjZGVmaW5lIFRJRkZDdnROYXRpdmVUb0lFRUVGbG9hdCh0aWYsIG4sIGZwKQotQEAgLTkzOSw2ICs5NDAsNjkgQEAKLSAJcmV0dXJuKDApOwotIH0KLSAKLStzdGF0aWMgZmxvYXQgVElGRkNsYW1wRG91YmxlVG9GbG9hdCggZG91YmxlIHZhbCApCi0rewotKyAgICBpZiggdmFsID4gRkxUX01BWCApCi0rICAgICAgICByZXR1cm4gRkxUX01BWDsKLSsgICAgaWYoIHZhbCA8IC1GTFRfTUFYICkKLSsgICAgICAgIHJldHVybiAtRkxUX01BWDsKLSsgICAgcmV0dXJuIChmbG9hdCl2YWw7Ci0rfQotKwotK3N0YXRpYyBpbnQ4IFRJRkZDbGFtcERvdWJsZVRvSW50OCggZG91YmxlIHZhbCApCi0rewotKyAgICBpZiggdmFsID4gMTI3ICkKLSsgICAgICAgIHJldHVybiAxMjc7Ci0rICAgIGlmKCB2YWwgPCAtMTI4IHx8IHZhbCAhPSB2YWwgKQotKyAgICAgICAgcmV0dXJuIC0xMjg7Ci0rICAgIHJldHVybiAoaW50OCl2YWw7Ci0rfQotKwotK3N0YXRpYyBpbnQxNiBUSUZGQ2xhbXBEb3VibGVUb0ludDE2KCBkb3VibGUgdmFsICkKLSt7Ci0rICAgIGlmKCB2YWwgPiAzMjc2NyApCi0rICAgICAgICByZXR1cm4gMzI3Njc7Ci0rICAgIGlmKCB2YWwgPCAtMzI3NjggfHwgdmFsICE9IHZhbCApCi0rICAgICAgICByZXR1cm4gLTMyNzY4OwotKyAgICByZXR1cm4gKGludDE2KXZhbDsKLSt9Ci0rCi0rc3RhdGljIGludDMyIFRJRkZDbGFtcERvdWJsZVRvSW50MzIoIGRvdWJsZSB2YWwgKQotK3sKLSsgICAgaWYoIHZhbCA+IDB4N0ZGRkZGRkYgKQotKyAgICAgICAgcmV0dXJuIDB4N0ZGRkZGRkY7Ci0rICAgIGlmKCB2YWwgPCAtMHg3RkZGRkZGRi0xIHx8IHZhbCAhPSB2YWwgKQotKyAgICAgICAgcmV0dXJuIC0weDdGRkZGRkZGLTE7Ci0rICAgIHJldHVybiAoaW50MzIpdmFsOwotK30KLSsKLStzdGF0aWMgdWludDggVElGRkNsYW1wRG91YmxlVG9VSW50OCggZG91YmxlIHZhbCApCi0rewotKyAgICBpZiggdmFsIDwgMCApCi0rICAgICAgICByZXR1cm4gMDsKLSsgICAgaWYoIHZhbCA+IDI1NSB8fCB2YWwgIT0gdmFsICkKLSsgICAgICAgIHJldHVybiAyNTU7Ci0rICAgIHJldHVybiAodWludDgpdmFsOwotK30KLSsKLStzdGF0aWMgdWludDE2IFRJRkZDbGFtcERvdWJsZVRvVUludDE2KCBkb3VibGUgdmFsICkKLSt7Ci0rICAgIGlmKCB2YWwgPCAwICkKLSsgICAgICAgIHJldHVybiAwOwotKyAgICBpZiggdmFsID4gNjU1MzUgfHwgdmFsICE9IHZhbCApCi0rICAgICAgICByZXR1cm4gNjU1MzU7Ci0rICAgIHJldHVybiAodWludDE2KXZhbDsKLSt9Ci0rCi0rc3RhdGljIHVpbnQzMiBUSUZGQ2xhbXBEb3VibGVUb1VJbnQzMiggZG91YmxlIHZhbCApCi0rewotKyAgICBpZiggdmFsIDwgMCApCi0rICAgICAgICByZXR1cm4gMDsKLSsgICAgaWYoIHZhbCA+IDB4RkZGRkZGRkZVIHx8IHZhbCAhPSB2YWwgKQotKyAgICAgICAgcmV0dXJuIDB4RkZGRkZGRkZVOwotKyAgICByZXR1cm4gKHVpbnQzMil2YWw7Ci0rfQotKwotIHN0YXRpYyBpbnQKLSBUSUZGV3JpdGVEaXJlY3RvcnlUYWdTYW1wbGVmb3JtYXRBcnJheShUSUZGKiB0aWYsIHVpbnQzMiogbmRpciwgVElGRkRpckVudHJ5KiBkaXIsIHVpbnQxNiB0YWcsIHVpbnQzMiBjb3VudCwgZG91YmxlKiB2YWx1ZSkKLSB7Ci1AQCAtOTU5LDcgKzEwMjMsNyBAQAotIAkJCWlmICh0aWYtPnRpZl9kaXIudGRfYml0c3BlcnNhbXBsZTw9MzIpCi0gCQkJewotIAkJCQlmb3IgKGkgPSAwOyBpIDwgY291bnQ7ICsraSkKLS0JCQkJCSgoZmxvYXQqKWNvbnYpW2ldID0gKGZsb2F0KXZhbHVlW2ldOwotKwkJCQkJKChmbG9hdCopY29udilbaV0gPSBUSUZGQ2xhbXBEb3VibGVUb0Zsb2F0KHZhbHVlW2ldKTsKLSAJCQkJb2sgPSBUSUZGV3JpdGVEaXJlY3RvcnlUYWdGbG9hdEFycmF5KHRpZixuZGlyLGRpcix0YWcsY291bnQsKGZsb2F0Kiljb252KTsKLSAJCQl9Ci0gCQkJZWxzZQotQEAgLTk3MSwxOSArMTAzNSwxOSBAQAotIAkJCWlmICh0aWYtPnRpZl9kaXIudGRfYml0c3BlcnNhbXBsZTw9OCkKLSAJCQl7Ci0gCQkJCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgKytpKQotLQkJCQkJKChpbnQ4Kiljb252KVtpXSA9IChpbnQ4KXZhbHVlW2ldOwotKwkJCQkJKChpbnQ4Kiljb252KVtpXSA9IFRJRkZDbGFtcERvdWJsZVRvSW50OCh2YWx1ZVtpXSk7Ci0gCQkJCW9rID0gVElGRldyaXRlRGlyZWN0b3J5VGFnU2J5dGVBcnJheSh0aWYsbmRpcixkaXIsdGFnLGNvdW50LChpbnQ4Kiljb252KTsKLSAJCQl9Ci0gCQkJZWxzZSBpZiAodGlmLT50aWZfZGlyLnRkX2JpdHNwZXJzYW1wbGU8PTE2KQotIAkJCXsKLSAJCQkJZm9yIChpID0gMDsgaSA8IGNvdW50OyArK2kpCi0tCQkJCQkoKGludDE2Kiljb252KVtpXSA9IChpbnQxNil2YWx1ZVtpXTsKLSsJCQkJCSgoaW50MTYqKWNvbnYpW2ldID0gVElGRkNsYW1wRG91YmxlVG9JbnQxNih2YWx1ZVtpXSk7Ci0gCQkJCW9rID0gVElGRldyaXRlRGlyZWN0b3J5VGFnU3Nob3J0QXJyYXkodGlmLG5kaXIsZGlyLHRhZyxjb3VudCwoaW50MTYqKWNvbnYpOwotIAkJCX0KLSAJCQllbHNlCi0gCQkJewotIAkJCQlmb3IgKGkgPSAwOyBpIDwgY291bnQ7ICsraSkKLS0JCQkJCSgoaW50MzIqKWNvbnYpW2ldID0gKGludDMyKXZhbHVlW2ldOwotKwkJCQkJKChpbnQzMiopY29udilbaV0gPSBUSUZGQ2xhbXBEb3VibGVUb0ludDMyKHZhbHVlW2ldKTsKLSAJCQkJb2sgPSBUSUZGV3JpdGVEaXJlY3RvcnlUYWdTbG9uZ0FycmF5KHRpZixuZGlyLGRpcix0YWcsY291bnQsKGludDMyKiljb252KTsKLSAJCQl9Ci0gCQkJYnJlYWs7Ci1AQCAtOTkxLDE5ICsxMDU1LDE5IEBACi0gCQkJaWYgKHRpZi0+dGlmX2Rpci50ZF9iaXRzcGVyc2FtcGxlPD04KQotIAkJCXsKLSAJCQkJZm9yIChpID0gMDsgaSA8IGNvdW50OyArK2kpCi0tCQkJCQkoKHVpbnQ4Kiljb252KVtpXSA9ICh1aW50OCl2YWx1ZVtpXTsKLSsJCQkJCSgodWludDgqKWNvbnYpW2ldID0gVElGRkNsYW1wRG91YmxlVG9VSW50OCh2YWx1ZVtpXSk7Ci0gCQkJCW9rID0gVElGRldyaXRlRGlyZWN0b3J5VGFnQnl0ZUFycmF5KHRpZixuZGlyLGRpcix0YWcsY291bnQsKHVpbnQ4Kiljb252KTsKLSAJCQl9Ci0gCQkJZWxzZSBpZiAodGlmLT50aWZfZGlyLnRkX2JpdHNwZXJzYW1wbGU8PTE2KQotIAkJCXsKLSAJCQkJZm9yIChpID0gMDsgaSA8IGNvdW50OyArK2kpCi0tCQkJCQkoKHVpbnQxNiopY29udilbaV0gPSAodWludDE2KXZhbHVlW2ldOwotKwkJCQkJKCh1aW50MTYqKWNvbnYpW2ldID0gVElGRkNsYW1wRG91YmxlVG9VSW50MTYodmFsdWVbaV0pOwotIAkJCQlvayA9IFRJRkZXcml0ZURpcmVjdG9yeVRhZ1Nob3J0QXJyYXkodGlmLG5kaXIsZGlyLHRhZyxjb3VudCwodWludDE2Kiljb252KTsKLSAJCQl9Ci0gCQkJZWxzZQotIAkJCXsKLSAJCQkJZm9yIChpID0gMDsgaSA8IGNvdW50OyArK2kpCi0tCQkJCQkoKHVpbnQzMiopY29udilbaV0gPSAodWludDMyKXZhbHVlW2ldOwotKwkJCQkJKCh1aW50MzIqKWNvbnYpW2ldID0gVElGRkNsYW1wRG91YmxlVG9VSW50MzIodmFsdWVbaV0pOwotIAkJCQlvayA9IFRJRkZXcml0ZURpcmVjdG9yeVRhZ0xvbmdBcnJheSh0aWYsbmRpcixkaXIsdGFnLGNvdW50LCh1aW50MzIqKWNvbnYpOwotIAkJCX0KLSAJCQlicmVhazsKLUBAIC0yMDk0LDE1ICsyMTU4LDI1IEBACi0gc3RhdGljIGludAotIFRJRkZXcml0ZURpcmVjdG9yeVRhZ0NoZWNrZWRSYXRpb25hbChUSUZGKiB0aWYsIHVpbnQzMiogbmRpciwgVElGRkRpckVudHJ5KiBkaXIsIHVpbnQxNiB0YWcsIGRvdWJsZSB2YWx1ZSkKLSB7Ci0rICAgICAgICBzdGF0aWMgY29uc3QgY2hhciBtb2R1bGVbXSA9ICJUSUZGV3JpdGVEaXJlY3RvcnlUYWdDaGVja2VkUmF0aW9uYWwiOwotIAl1aW50MzIgbVsyXTsKLS0JYXNzZXJ0KHZhbHVlPj0wLjApOwotIAlhc3NlcnQoc2l6ZW9mKHVpbnQzMik9PTQpOwotLQlpZiAodmFsdWU8PTAuMCkKLSsJaWYgKHZhbHVlPDApCi0rCXsKLSsgICAgICAgICAgICBUSUZGRXJyb3JFeHQodGlmLT50aWZfY2xpZW50ZGF0YSxtb2R1bGUsIk5lZ2F0aXZlIHZhbHVlIGlzIGlsbGVnYWwiKTsKLSsgICAgICAgICAgICByZXR1cm4gMDsKLSsJfQotKyAgICAgICAgZWxzZSBpZiggdmFsdWUgIT0gdmFsdWUgKQotKyAgICAgICAgewotKyAgICAgICAgICAgIFRJRkZFcnJvckV4dCh0aWYtPnRpZl9jbGllbnRkYXRhLG1vZHVsZSwiTm90LWEtbnVtYmVyIHZhbHVlIGlzIGlsbGVnYWwiKTsKLSsgICAgICAgICAgICByZXR1cm4gMDsKLSsgICAgICAgIH0KLSsgICAgICAgIGVsc2UgaWYgKHZhbHVlPT0wLjApCi0gCXsKLSAJCW1bMF09MDsKLSAJCW1bMV09MTsKLS0JfQotLQllbHNlIGlmICh2YWx1ZT09KGRvdWJsZSkodWludDMyKXZhbHVlKQotKyAgICAgICAgfQotKyAgICAgICAgZWxzZSBpZiAodmFsdWUgPD0gMHhGRkZGRkZGRlUgJiYgdmFsdWU9PShkb3VibGUpKHVpbnQzMil2YWx1ZSkKLSAJewotIAkJbVswXT0odWludDMyKXZhbHVlOwotIAkJbVsxXT0xOwotQEAgLTIxNDMsNyArMjIxNyw3IEBACi0gCX0KLSAJZm9yIChuYT12YWx1ZSwgbmI9bSwgbmM9MDsgbmM8Y291bnQ7IG5hKyssIG5iKz0yLCBuYysrKQotIAl7Ci0tCQlpZiAoKm5hPD0wLjApCi0rICAgICAgICAgICAgICAgIGlmICgqbmE8PTAuMCB8fCAqbmEgIT0gKm5hKQotIAkJewotIAkJCW5iWzBdPTA7Ci0gCQkJbmJbMV09MTsKLUBAIC0yMTUzLDcgKzIyMjcsOCBAQAotIAkJCW5iWzBdPSh1aW50MzIpKCpuYSk7Ci0gCQkJbmJbMV09MTsKLSAJCX0KLS0JCWVsc2UgaWYgKCpuYTwxLjApCi0rCQllbHNlIGlmICgqbmEgPj0gMCAmJiAqbmEgPD0gKGZsb2F0KTB4RkZGRkZGRkZVICYmCi0rICAgICAgICAgICAgICAgICAgICAgICAgICpuYT09KGZsb2F0KSh1aW50MzIpKCpuYSkpCi0gCQl7Ci0gCQkJbmJbMF09KHVpbnQzMikoKGRvdWJsZSkoKm5hKSoweEZGRkZGRkZGKTsKLSAJCQluYlsxXT0weEZGRkZGRkZGOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctNzU5OC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTc1OTgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkMDgyYmIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctNzU5OC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLUZyb20gM2NmZDYyZDc3YzJhN2UxNDdhMDViZDY3ODUyNGMzNDVmYTljMmJiOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGVyb3VhdWx0IDxlcm91YXVsdD4KLURhdGU6IFdlZCwgMTEgSmFuIDIwMTcgMTM6Mjg6MDEgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gKiBsaWJ0aWZmL3RpZl9kaXJyZWFkLmM6IGF2b2lkIGRpdmlzaW9uIGJ5IGZsb2F0aW5nIHBvaW50IDAKLSBpbiBUSUZGUmVhZERpckVudHJ5Q2hlY2tlZFJhdGlvbmFsKCkgYW5kIFRJRkZSZWFkRGlyRW50cnlDaGVja2VkU3JhdGlvbmFsKCksCi0gYW5kIHJldHVybiAwIGluIHRoYXQgY2FzZSAoaW5zdGVhZCBvZiBpbmZpbml0eSBhcyBiZWZvcmUgcHJlc3VtYWJseSkKLSBBcHBhcmVudGx5IHNvbWUgc2FuaXRpemVycyBkbyBub3QgbGlrZSB0aG9zZSBkaXZpc2lvbnMgYnkgemVyby4gRml4ZXMKLSBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjQ0Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotQ1ZFOiBDVkUtMjAxNy03NTk4Ci1TaWduZWQtb2ZmLWJ5OiBSYWprdW1hciBWZWVyIDxydmVlckBtdmlzdGEuY29tPgotSW5kZXg6IHRpZmYtNC4wLjcvQ2hhbmdlTG9nCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdGlmZi00LjAuNy5vcmlnL0NoYW5nZUxvZwkyMDE3LTA0LTI1IDE2OjE0OjU5Ljg1ODYxMjczMCArMDUzMAotKysrIHRpZmYtNC4wLjcvQ2hhbmdlTG9nCTIwMTctMDQtMjUgMTg6MTE6MzYuMDQ4MTA3MTI3ICswNTMwCi1AQCAtMSwzICsxLDQgQEAKLSsKLSAyMDE3LTAxLTEyIEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0IGF0IHNwYXRpYWx5cy5jb20+Ci0gCi0gCSogbGlidGlmZi90aWZfb2pwZWcuYzogZml4IGxlYWsgaW4gT0pQRUdSZWFkSGVhZGVySW5mb1NlY1RhYmxlc1FUYWJsZSwKLUBAIC04LDYgKzksMTQgQEAKLSAKLSAyMDE3LTAxLTExIEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0IGF0IHNwYXRpYWx5cy5jb20+Ci0gCi0rCSogbGlidGlmZi90aWZfZGlycmVhZC5jOiBhdm9pZCBkaXZpc2lvbiBieSBmbG9hdGluZyBwb2ludCAwIGluCi0rCVRJRkZSZWFkRGlyRW50cnlDaGVja2VkUmF0aW9uYWwoKSBhbmQgVElGRlJlYWREaXJFbnRyeUNoZWNrZWRTcmF0aW9uYWwoKSwKLSsJYW5kIHJldHVybiAwIGluIHRoYXQgY2FzZSAoaW5zdGVhZCBvZiBpbmZpbml0eSBhcyBiZWZvcmUgcHJlc3VtYWJseSkKLSsJQXBwYXJlbnRseSBzb21lIHNhbml0aXplcnMgZG8gbm90IGxpa2UgdGhvc2UgZGl2aXNpb25zIGJ5IHplcm8uCi0rCUZpeGVzIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI2NDQKLSsKLSsyMDE3LTAxLTExIEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0IGF0IHNwYXRpYWx5cy5jb20+Ci0rCi0gCSogbGlidGlmZi90aWZfZGlyLmMsIHRpZl9kaXJyZWFkLmMsIHRpZl9kaXJ3cml0ZS5jOiBpbXBsZW1lbnQgdmFyaW91cyBjbGFtcGluZ3MKLSAJb2YgZG91YmxlIHRvIG90aGVyIGRhdGEgdHlwZXMgdG8gYXZvaWQgdW5kZWZpbmVkIGJlaGF2aW91ciBpZiB0aGUgb3V0cHV0IHJhbmdlCi0gCWlzbid0IGJpZyBlbm91Z2ggdG8gaG9sZCB0aGUgaW5wdXQgdmFsdWUuCi1JbmRleDogdGlmZi00LjAuNy9saWJ0aWZmL3RpZl9kaXJyZWFkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0aWZmLTQuMC43Lm9yaWcvbGlidGlmZi90aWZfZGlycmVhZC5jCTIwMTctMDQtMjUgMTY6MTQ6NTkuODU4NjEyNzMwICswNTMwCi0rKysgdGlmZi00LjAuNy9saWJ0aWZmL3RpZl9kaXJyZWFkLmMJMjAxNy0wNC0yNSAxODoxNjoyMS44MzYxMTE1NzYgKzA1MzAKLUBAIC0yODgwLDcgKzI4ODAsMTAgQEAKLSAJCW0ubCA9IGRpcmVudHJ5LT50ZGlyX29mZnNldC50b2ZmX2xvbmc4OwotIAlpZiAodGlmLT50aWZfZmxhZ3MmVElGRl9TV0FCKQotIAkJVElGRlN3YWJBcnJheU9mTG9uZyhtLmksMik7Ci0tCWlmIChtLmlbMF09PTApCi0rICAgICAgICAvKiBOb3QgY29tcGxldGVseSBzdXJlIHdoYXQgd2Ugc2hvdWxkIGRvIHdoZW4gbS5pWzFdPT0wLCBidXQgc29tZSAqLwotKyAgICAgICAgLyogc2FuaXRpemVycyBkbyBub3QgbGlrZSBkaXZpc2lvbiBieSAwLjA6ICovCi0rICAgICAgICAvKiBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjQ0ICovCi0rCWlmIChtLmlbMF09PTAgfHwgbS5pWzFdPT0wKQotIAkJKnZhbHVlPTAuMDsKLSAJZWxzZQotIAkJKnZhbHVlPShkb3VibGUpbS5pWzBdLyhkb3VibGUpbS5pWzFdOwotQEAgLTI5MDgsNyArMjkxMSwxMCBAQAotIAkJbS5sPWRpcmVudHJ5LT50ZGlyX29mZnNldC50b2ZmX2xvbmc4OwotIAlpZiAodGlmLT50aWZfZmxhZ3MmVElGRl9TV0FCKQotIAkJVElGRlN3YWJBcnJheU9mTG9uZyhtLmksMik7Ci0tCWlmICgoaW50MzIpbS5pWzBdPT0wKQotKyAgICAgICAgLyogTm90IGNvbXBsZXRlbHkgc3VyZSB3aGF0IHdlIHNob3VsZCBkbyB3aGVuIG0uaVsxXT09MCwgYnV0IHNvbWUgKi8KLSsgICAgICAgIC8qIHNhbml0aXplcnMgZG8gbm90IGxpa2UgZGl2aXNpb24gYnkgMC4wOiAqLwotKyAgICAgICAgLyogaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY0NCAqLwotKwlpZiAoKGludDMyKW0uaVswXT09MCB8fCBtLmlbMV09PTApCi0gCQkqdmFsdWU9MC4wOwotIAllbHNlCi0gCQkqdmFsdWU9KGRvdWJsZSkoKGludDMyKW0uaVswXSkvKGRvdWJsZSltLmlbMV07CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy03NjAxLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctNzYwMS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWIzYzZjOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy03NjAxLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotRnJvbSAwYTc2YThjNzY1YzdiODMyN2M1OTY0NjI4NGZhNzhjM2MyN2U1NDkwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogZXJvdWF1bHQgPGVyb3VhdWx0PgotRGF0ZTogV2VkLCAxMSBKYW4gMjAxNyAxNjoxMzo1MCArMDAwMAotU3ViamVjdDogW1BBVENIXSAqIGxpYnRpZmYvdGlmX2pwZWcuYzogdmFsaWRhdGUgQml0c1BlclNhbXBsZSBpbgotIEpQRUdTZXR1cEVuY29kZSgpIHRvIGF2b2lkIHVuZGVmaW5lZCBiZWhhdmlvdXIgY2F1c2VkIGJ5IGludmFsaWQgc2hpZnQKLSBleHBvbmVudC4gRml4ZXMgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY0OAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLUNWRTogQ1ZFLTIwMTctNzYwMQotU2lnbmVkLW9mZi1ieTogUmFqa3VtYXIgVmVlciA8cnZlZXJAbXZpc3RhLmNvbT4KLUluZGV4OiB0aWZmLTQuMC43L0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHRpZmYtNC4wLjcub3JpZy9DaGFuZ2VMb2cJMjAxNy0wNC0yNSAxODoyMTozMi44NTYxMTY0MTcgKzA1MzAKLSsrKyB0aWZmLTQuMC43L0NoYW5nZUxvZwkyMDE3LTA0LTI1IDE4OjM1OjMxLjkwNDEyOTQ3NyArMDUzMAotQEAgLTEsNCArMSwzIEBACi0tCi0gMjAxNy0wMS0xMiBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgotIAotIAkqIGxpYnRpZmYvdGlmX29qcGVnLmM6IGZpeCBsZWFrIGluIE9KUEVHUmVhZEhlYWRlckluZm9TZWNUYWJsZXNRVGFibGUsCi1AQCAtOSw2ICs4LDEyIEBACi0gCi0gMjAxNy0wMS0xMSBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgotIAotKwkqIGxpYnRpZmYvdGlmX2pwZWcuYzogdmFsaWRhdGUgQml0c1BlclNhbXBsZSBpbiBKUEVHU2V0dXBFbmNvZGUoKSB0byBhdm9pZAotKwl1bmRlZmluZWQgYmVoYXZpb3VyIGNhdXNlZCBieSBpbnZhbGlkIHNoaWZ0IGV4cG9uZW50LgotKwlGaXhlcyBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjQ4Ci0rCi0rMjAxNy0wMS0xMSBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgotKwotIAkqIGxpYnRpZmYvdGlmX2RpcnJlYWQuYzogYXZvaWQgZGl2aXNpb24gYnkgZmxvYXRpbmcgcG9pbnQgMCBpbgotIAlUSUZGUmVhZERpckVudHJ5Q2hlY2tlZFJhdGlvbmFsKCkgYW5kIFRJRkZSZWFkRGlyRW50cnlDaGVja2VkU3JhdGlvbmFsKCksCi0gCWFuZCByZXR1cm4gMCBpbiB0aGF0IGNhc2UgKGluc3RlYWQgb2YgaW5maW5pdHkgYXMgYmVmb3JlIHByZXN1bWFibHkpCi1JbmRleDogdGlmZi00LjAuNy9saWJ0aWZmL3RpZl9qcGVnLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0aWZmLTQuMC43Lm9yaWcvbGlidGlmZi90aWZfanBlZy5jCTIwMTctMDQtMjUgMTg6MjE6MzIuNzQ0MTE2NDE1ICswNTMwCi0rKysgdGlmZi00LjAuNy9saWJ0aWZmL3RpZl9qcGVnLmMJMjAxNy0wNC0yNSAxODozODowMi4yMDAxMzE4MTcgKzA1MzAKLUBAIC0xNjMyLDcgKzE2MzIsMTMgQEAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlnIGhvcml6b250YWwvdmVydGljYWwgc2FtcGxpbmcgdmFsdWUiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgwKTsKLSAgICAgICAgICAgICAgICAgfQotLQotKyAgICAgICAgICAgICAgICBpZiggdGQtPnRkX2JpdHNwZXJzYW1wbGUgPiAxNiApCi0rICAgICAgICAgICAgICAgIHsKLSsgICAgICAgICAgICAgICAgICAgIFRJRkZFcnJvckV4dCh0aWYtPnRpZl9jbGllbnRkYXRhLCBtb2R1bGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJpdHNQZXJTYW1wbGUgJWQgbm90IGFsbG93ZWQgZm9yIEpQRUciLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkLT50ZF9iaXRzcGVyc2FtcGxlKTsKLSsgICAgICAgICAgICAgICAgICAgIHJldHVybiAoMCk7Ci0rICAgICAgICAgICAgICAgIH0KLSAJCS8qCi0gCQkgKiBBIFJlZmVyZW5jZUJsYWNrV2hpdGUgZmllbGQgKm11c3QqIGJlIHByZXNlbnQgc2luY2UgdGhlCi0gCQkgKiBkZWZhdWx0IHZhbHVlIGlzIGluYXBwcm9wcmlhdGUgZm9yIFlDYkNyLiAgRmlsbCBpbiB0aGUKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTc2MDIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy03NjAyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZWQ5N2UyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTc2MDIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi1Gcm9tIDY2ZTdiZDU5NTIwOTk2NzQwZTRkZjU0OTVhODMwYjQyZmFlNDhiYzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBlcm91YXVsdCA8ZXJvdWF1bHQ+Ci1EYXRlOiBXZWQsIDExIEphbiAyMDE3IDE2OjMzOjM0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdICogbGlidGlmZi90aWZfcmVhZC5jOiBhdm9pZCBwb3RlbnRpYWwgdW5kZWZpbmVkIGJlaGF2aW91ciBvbgotIHNpZ25lZCBpbnRlZ2VyIGFkZGl0aW9uIGluIFRJRkZSZWFkUmF3U3RyaXAxKCkgaW4gaXNNYXBwZWQoKSBjYXNlLiBGaXhlcwotIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI2NTAKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1DVkU6IENWRS0yMDE3LTc2MDIKLVNpZ25lZC1vZmYtYnk6IFJhamt1bWFyIFZlZXIgPHJ2ZWVyQG12aXN0YS5jb20+Ci0KLUluZGV4OiB0aWZmLTQuMC43L0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHRpZmYtNC4wLjcub3JpZy9DaGFuZ2VMb2cJMjAxNy0wNC0yNSAxODo0MjowNy42NTYxMzU2MzggKzA1MzAKLSsrKyB0aWZmLTQuMC43L0NoYW5nZUxvZwkyMDE3LTA0LTI1IDE4OjU0OjM2LjgxMjE0NzI5OSArMDUzMAotQEAgLTgsNiArOCwxMiBAQAotIAotIDIwMTctMDEtMTEgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KLSAKLSsJKiBsaWJ0aWZmL3RpZl9yZWFkLmM6IGF2b2lkIHBvdGVudGlhbCB1bmRlZmluZWQgYmVoYXZpb3VyIG9uIHNpZ25lZCBpbnRlZ2VyCi0rCWFkZGl0aW9uIGluIFRJRkZSZWFkUmF3U3RyaXAxKCkgaW4gaXNNYXBwZWQoKSBjYXNlLgotKwlGaXhlcyBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjUwCi0rCi0rMjAxNy0wMS0xMSBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgotKwotIAkqIGxpYnRpZmYvdGlmX2pwZWcuYzogdmFsaWRhdGUgQml0c1BlclNhbXBsZSBpbiBKUEVHU2V0dXBFbmNvZGUoKSB0byBhdm9pZAotIAl1bmRlZmluZWQgYmVoYXZpb3VyIGNhdXNlZCBieSBpbnZhbGlkIHNoaWZ0IGV4cG9uZW50LgotIAlGaXhlcyBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjQ4Ci1JbmRleDogdGlmZi00LjAuNy9saWJ0aWZmL3RpZl9yZWFkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0aWZmLTQuMC43Lm9yaWcvbGlidGlmZi90aWZfcmVhZC5jCTIwMTctMDQtMjUgMTg6NDI6MDcuMTMyMTM1NjI5ICswNTMwCi0rKysgdGlmZi00LjAuNy9saWJ0aWZmL3RpZl9yZWFkLmMJMjAxNy0wNC0yNSAxODo1ODoyNS4yNzIxNTA4NTUgKzA1MzAKLUBAIC00MjAsMTYgKzQyMCwyNiBAQAotIAkJCXJldHVybiAoKHRtc2l6ZV90KSgtMSkpOwotIAkJfQotIAl9IGVsc2UgewotLQkJdG1zaXplX3QgbWEsbWI7Ci0rCQl0bXNpemVfdCBtYTsKLSAJCXRtc2l6ZV90IG47Ci0tCQltYT0odG1zaXplX3QpdGQtPnRkX3N0cmlwb2Zmc2V0W3N0cmlwXTsKLS0JCW1iPW1hK3NpemU7Ci0tCQlpZiAoKHRkLT50ZF9zdHJpcG9mZnNldFtzdHJpcF0gPiAodWludDY0KVRJRkZfVE1TSVpFX1RfTUFYKXx8KG1hPnRpZi0+dGlmX3NpemUpKQotLQkJCW49MDsKLS0JCWVsc2UgaWYgKChtYjxtYSl8fChtYjxzaXplKXx8KG1iPnRpZi0+dGlmX3NpemUpKQotLQkJCW49dGlmLT50aWZfc2l6ZS1tYTsKLS0JCWVsc2UKLS0JCQluPXNpemU7Ci0rICAgICAgICAgICAgICAgIGlmICgodGQtPnRkX3N0cmlwb2Zmc2V0W3N0cmlwXSA+ICh1aW50NjQpVElGRl9UTVNJWkVfVF9NQVgpfHwKLSsgICAgICAgICAgICAgICAgICAgICAoKG1hPSh0bXNpemVfdCl0ZC0+dGRfc3RyaXBvZmZzZXRbc3RyaXBdKT50aWYtPnRpZl9zaXplKSkKLSsgICAgICAgICAgICAgICAgewotKyAgICAgICAgICAgICAgICAgICAgbj0wOwotKyAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgICAgIGVsc2UgaWYoIG1hID4gVElGRl9UTVNJWkVfVF9NQVggLSBzaXplICkKLSsgICAgICAgICAgICAgICAgewotKyAgICAgICAgICAgICAgICAgICAgbj0wOwotKyAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgICAgIGVsc2UKLSsgICAgICAgICAgICAgICAgewotKyAgICAgICAgICAgICAgICAgICAgdG1zaXplX3QgbWI9bWErc2l6ZTsKLSsgICAgICAgICAgICAgICAgICAgIGlmIChtYj50aWYtPnRpZl9zaXplKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuPXRpZi0+dGlmX3NpemUtbWE7Ci0rICAgICAgICAgICAgICAgICAgICBlbHNlCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIG49c2l6ZTsKLSsgICAgICAgICAgICAgICAgfQotKwotIAkJaWYgKG4hPXNpemUpIHsKLSAjaWYgZGVmaW5lZChfX1dJTjMyX18pICYmIChkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fTUlOR1czMl9fKSkKLSAJCQlUSUZGRXJyb3JFeHQodGlmLT50aWZfY2xpZW50ZGF0YSwgbW9kdWxlLApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctOTE0Ny5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTkxNDcucGF0Y2gKaW5kZXggOTRmMzM5MC4uMzM5MjI4NSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctOTE0Ny5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy05MTQ3LnBhdGNoCkBAIC0zMiwzOCArMzIsMzggQEAKICBsaWJ0aWZmL3RpZl9kaXJyZWFkLmMgfCAgIDQgKysKICA0IGZpbGVzIGNoYW5nZWQsIDEyOCBpbnNlcnRpb25zKCspCiAKLUluZGV4OiB0aWZmLTQuMC43L0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHRpZmYtNC4wLjcub3JpZy9DaGFuZ2VMb2cKLSsrKyB0aWZmLTQuMC43L0NoYW5nZUxvZworZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZworaW5kZXggZWU4ZDlkMC4uNTczOTI5MiAxMDA2NDQKKy0tLSBhL0NoYW5nZUxvZworKysrIGIvQ2hhbmdlTG9nCiBAQCAtMSwzICsxLDIzIEBACiArMjAxNy0wNi0wMSAgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KICsKLSsgICAgICAgKiBsaWJ0aWZmL3RpZl9kaXJpbmZvLmMsIHRpZl9kaXJyZWFkLmM6IGFkZCBfVElGRkNoZWNrRmllbGRJc1ZhbGlkRm9yQ29kZWMoKSwKLSsgICAgICAgYW5kIHVzZSBpdCBpbiBUSUZGUmVhZERpcmVjdG9yeSgpIHNvIGFzIHRvIGlnbm9yZSBmaWVsZHMgd2hvc2UgdGFnIGlzIGEKLSsgICAgICAgY29kZWMtc3BlY2lmaWVkIHRhZyBidXQgdGhpcyBjb2RlYyBpcyBub3QgZW5hYmxlZC4gVGhpcyBhdm9pZHMgVElGRkdldEZpZWxkKCkKLSsgICAgICAgdG8gYmVoYXZlIGRpZmZlcmVudGx5IGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBjb2RlYyBpcyBlbmFibGVkIG9yIG5vdCwgYW5kCi0rICAgICAgIHRodXMgY2FuIGF2b2lkIHN0YWNrIGJhc2VkIGJ1ZmZlciBvdmVyZmxvd3MgaW4gYSBudW1iZXIgb2YgVElGRiB1dGlsaXRpZXMKLSsgICAgICAgc3VjaCBhcyB0aWZmc3BsaXQsIHRpZmZjbXAsIHRodW1ibmFpbCwgZXRjLgotKyAgICAgICBQYXRjaCBkZXJpdmVkIGZyb20gMDA2My1IYW5kbGUtcHJvcGVybHktQ09ERUMtc3BlY2lmaWMtdGFncy5wYXRjaAotKyAgICAgICAoaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU4MCkgYnkgUmFwaGHDq2wgSGVydHpvZy4KLSsgICAgICAgRml4ZXM6Ci0rICAgICAgIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI1ODAKLSsgICAgICAgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY5MwotKyAgICAgICBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjI1IChDVkUtMjAxNi0xMDA5NSkKLSsgICAgICAgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU2NCAoQ1ZFLTIwMTUtNzU1NCkKLSsgICAgICAgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU2MSAoQ1ZFLTIwMTYtNTMxOCkKLSsgICAgICAgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ5OSAoQ1ZFLTIwMTQtODEyOCkKLSsgICAgICAgaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ0MQotKyAgICAgICBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDMzCisrCSogbGlidGlmZi90aWZfZGlyaW5mby5jLCB0aWZfZGlycmVhZC5jOiBhZGQgX1RJRkZDaGVja0ZpZWxkSXNWYWxpZEZvckNvZGVjKCksCisrCWFuZCB1c2UgaXQgaW4gVElGRlJlYWREaXJlY3RvcnkoKSBzbyBhcyB0byBpZ25vcmUgZmllbGRzIHdob3NlIHRhZyBpcyBhCisrCWNvZGVjLXNwZWNpZmllZCB0YWcgYnV0IHRoaXMgY29kZWMgaXMgbm90IGVuYWJsZWQuIFRoaXMgYXZvaWRzIFRJRkZHZXRGaWVsZCgpCisrCXRvIGJlaGF2ZSBkaWZmZXJlbnRseSBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgY29kZWMgaXMgZW5hYmxlZCBvciBub3QsIGFuZAorKwl0aHVzIGNhbiBhdm9pZCBzdGFjayBiYXNlZCBidWZmZXIgb3ZlcmZsb3dzIGluIGEgbnVtYmVyIG9mIFRJRkYgdXRpbGl0aWVzCisrCXN1Y2ggYXMgdGlmZnNwbGl0LCB0aWZmY21wLCB0aHVtYm5haWwsIGV0Yy4KKysJUGF0Y2ggZGVyaXZlZCBmcm9tIDAwNjMtSGFuZGxlLXByb3Blcmx5LUNPREVDLXNwZWNpZmljLXRhZ3MucGF0Y2gKKysJKGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI1ODApIGJ5IFJhcGhhw6tsIEhlcnR6b2cuCisrCUZpeGVzOgorKwlodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNTgwCisrCWh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI2OTMKKysJaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjYyNSAoQ1ZFLTIwMTYtMTAwOTUpCisrCWh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI1NjQgKENWRS0yMDE1LTc1NTQpCisrCWh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI1NjEgKENWRS0yMDE2LTUzMTgpCisrCWh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI0OTkgKENWRS0yMDE0LTgxMjgpCisrCWh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI0NDEKKysJaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzMwogKwotIDIwMTctMDEtMTEgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KKyAyMDE3LTA1LTIxICBCb2IgRnJpZXNlbmhhaG4gIDxiZnJpZXNlbkBzaW1wbGUuZGFsbGFzLnR4LnVzPgogIAotIAkqIHRvb2xzL3RpZmZjcC5jOiBlcnJvciBvdXQgY2xlYW5seSBpbiBjcENvbnRpZzJTZXBhcmF0ZUJ5Um93IGFuZAotSW5kZXg6IHRpZmYtNC4wLjcvbGlidGlmZi90aWZfZGlyLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0aWZmLTQuMC43Lm9yaWcvbGlidGlmZi90aWZfZGlyLmgKLSsrKyB0aWZmLTQuMC43L2xpYnRpZmYvdGlmX2Rpci5oCisgCSogY29uZmlndXJlLmFjOiBsaWJ0aWZmIDQuMC44IHJlbGVhc2VkLgorZGlmZiAtLWdpdCBhL2xpYnRpZmYvdGlmX2Rpci5oIGIvbGlidGlmZi90aWZfZGlyLmgKK2luZGV4IGUxMmI0NGIuLjUyMDZiZTQgMTAwNjQ0CistLS0gYS9saWJ0aWZmL3RpZl9kaXIuaAorKysrIGIvbGlidGlmZi90aWZfZGlyLmgKIEBAIC0yOTEsNiArMjkxLDcgQEAgc3RydWN0IF9USUZGRmllbGQgewogIGV4dGVybiBpbnQgX1RJRkZNZXJnZUZpZWxkcyhUSUZGKiwgY29uc3QgVElGRkZpZWxkW10sIHVpbnQzMik7CiAgZXh0ZXJuIGNvbnN0IFRJRkZGaWVsZCogX1RJRkZGaW5kT3JSZWdpc3RlckZpZWxkKFRJRkYgKiwgdWludDMyLCBUSUZGRGF0YVR5cGUpOwpAQCAtNzIsMTEgKzcyLDExIEBACiAgCiAgI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpCiAgfQotSW5kZXg6IHRpZmYtNC4wLjcvbGlidGlmZi90aWZfZGlyaW5mby5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdGlmZi00LjAuNy5vcmlnL2xpYnRpZmYvdGlmX2RpcmluZm8uYwotKysrIHRpZmYtNC4wLjcvbGlidGlmZi90aWZfZGlyaW5mby5jCi1AQCAtOTU2LDYgKzk1NiwxMDkgQEAgVElGRk1lcmdlRmllbGRJbmZvKFRJRkYqIHRpZiwgY29uc3QgVElGRgorZGlmZiAtLWdpdCBhL2xpYnRpZmYvdGlmX2RpcmluZm8uYyBiL2xpYnRpZmYvdGlmX2RpcmluZm8uYworaW5kZXggMGM4ZWY0Mi4uOTdjMGRmMCAxMDA2NDQKKy0tLSBhL2xpYnRpZmYvdGlmX2RpcmluZm8uYworKysrIGIvbGlidGlmZi90aWZfZGlyaW5mby5jCitAQCAtOTU2LDYgKzk1NiwxMDkgQEAgVElGRk1lcmdlRmllbGRJbmZvKFRJRkYqIHRpZiwgY29uc3QgVElGRkZpZWxkSW5mbyBpbmZvW10sIHVpbnQzMiBuKQogIAlyZXR1cm4gMDsKICB9CiAgCkBAIC0xODYsMTEgKzE4NiwxMSBAQAogIC8qIHZpbTogc2V0IHRzPTggc3RzPTggc3c9OCBub2V0OiAqLwogIAogIC8qCi1JbmRleDogdGlmZi00LjAuNy9saWJ0aWZmL3RpZl9kaXJyZWFkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0aWZmLTQuMC43Lm9yaWcvbGlidGlmZi90aWZfZGlycmVhZC5jCi0rKysgdGlmZi00LjAuNy9saWJ0aWZmL3RpZl9kaXJyZWFkLmMKLUBAIC0zNTY2LDYgKzM1NjYsMTAgQEAgVElGRlJlYWREaXJlY3RvcnkoVElGRiogdGlmKQorZGlmZiAtLWdpdCBhL2xpYnRpZmYvdGlmX2RpcnJlYWQuYyBiL2xpYnRpZmYvdGlmX2RpcnJlYWQuYworaW5kZXggMWQ0ZjBiOS4uZjFkYzNkNyAxMDA2NDQKKy0tLSBhL2xpYnRpZmYvdGlmX2RpcnJlYWQuYworKysrIGIvbGlidGlmZi90aWZfZGlycmVhZC5jCitAQCAtMzU4MCw2ICszNTgwLDEwIEBAIFRJRkZSZWFkRGlyZWN0b3J5KFRJRkYqIHRpZikKICAJCQkJCQkJZ290byBiYWQ7CiAgCQkJCQkJZHAtPnRkaXJfdGFnPUlHTk9SRTsKICAJCQkJCQlicmVhazsKQEAgLTIwMSwzICsyMDEsNiBAQAogIAkJCQl9CiAgCQkJfQogIAkJfQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy05OTM2LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvQ1ZFLTIwMTctOTkzNi5wYXRjaAppbmRleCAyMDQ5NDliLi5mYzk5MzYzIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9DVkUtMjAxNy05OTM2LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL2ZpbGVzL0NWRS0yMDE3LTk5MzYucGF0Y2gKQEAgLTE4LDEwICsxOCwxMCBAQAogIGxpYnRpZmYvdGlmX2piaWcuYyB8IDEgKwogIDIgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspCiAKLUluZGV4OiB0aWZmLTQuMC43L0NoYW5nZUxvZwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHRpZmYtNC4wLjcub3JpZy9DaGFuZ2VMb2cKLSsrKyB0aWZmLTQuMC43L0NoYW5nZUxvZworZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZworaW5kZXggNTczOTI5Mi4uMDI0MGYwYiAxMDA2NDQKKy0tLSBhL0NoYW5nZUxvZworKysrIGIvQ2hhbmdlTG9nCiBAQCAtMSwzICsxLDkgQEAKICsyMDE3LTA2LTI2ICBFdmVuIFJvdWF1bHQgPGV2ZW4ucm91YXVsdCBhdCBzcGF0aWFseXMuY29tPgogKwpAQCAtMzEsMTIgKzMxLDEyIEBACiArCiAgMjAxNy0wNi0wMSAgRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHQgYXQgc3BhdGlhbHlzLmNvbT4KICAKLSAgICAgICAgKiBsaWJ0aWZmL3RpZl9kaXJpbmZvLmMsIHRpZl9kaXJyZWFkLmM6IGFkZCBfVElGRkNoZWNrRmllbGRJc1ZhbGlkRm9yQ29kZWMoKSwKLUluZGV4OiB0aWZmLTQuMC43L2xpYnRpZmYvdGlmX2piaWcuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHRpZmYtNC4wLjcub3JpZy9saWJ0aWZmL3RpZl9qYmlnLmMKLSsrKyB0aWZmLTQuMC43L2xpYnRpZmYvdGlmX2piaWcuYwotQEAgLTk0LDYgKzk0LDcgQEAgc3RhdGljIGludCBKQklHRGVjb2RlKFRJRkYqIHRpZiwgdWludDgqCisgCSogbGlidGlmZi90aWZfZGlyaW5mby5jLCB0aWZfZGlycmVhZC5jOiBhZGQgX1RJRkZDaGVja0ZpZWxkSXNWYWxpZEZvckNvZGVjKCksCitkaWZmIC0tZ2l0IGEvbGlidGlmZi90aWZfamJpZy5jIGIvbGlidGlmZi90aWZfamJpZy5jCitpbmRleCA1ZjVmNzVlLi5jNzVmMzFkIDEwMDY0NAorLS0tIGEvbGlidGlmZi90aWZfamJpZy5jCisrKysgYi9saWJ0aWZmL3RpZl9qYmlnLmMKK0BAIC05NCw2ICs5NCw3IEBAIHN0YXRpYyBpbnQgSkJJR0RlY29kZShUSUZGKiB0aWYsIHVpbnQ4KiBidWZmZXIsIHRtc2l6ZV90IHNpemUsIHVpbnQxNiBzKQogIAkJCSAgICAgamJnX3N0cmVycm9yKGRlY29kZVN0YXR1cykKICAjZW5kaWYKICAJCQkgICAgICk7CkBAIC00NCwzICs0NCw2IEBACiAgCQlyZXR1cm4gMDsKICAJfQogIAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9saWJ0aWZmLUNWRS0yMDE3LTUyMjUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi9maWxlcy9saWJ0aWZmLUNWRS0yMDE3LTUyMjUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyNjMzNTMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvZmlsZXMvbGlidGlmZi1DVkUtMjAxNy01MjI1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTIgKzAsMCBAQAotRnJvbSBhMjRkZjFlOTM4MzNkZmVhYTY5YmY0ZDUxMDUxOGRjNDY4NGRiNjRkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTGkgWmhvdSA8bGkuemhvdUB3aW5kcml2ZXIuY29tPgotRGF0ZTogV2VkLCAyNSBKYW4gMjAxNyAxNzowNzoyMSArMDgwMAotU3ViamVjdDogW1BBVENIXSBsaWJ0aWZmOiBmaXggQ1ZFLTIwMTctNTIyNQotCi10b29scy90aWZmY3AuYzogZXJyb3Igb3V0IGNsZWFubHkgaW4gY3BDb250aWcyU2VwYXJhdGVCeVJvdwotYW5kIGNwU2VwYXJhdGUyQ29udGlnQnlSb3cgaWYgQml0c1BlclNhbXBsZSAhPSA4IHRvIGF2b2lkIGhlYXAgYmFzZWQKLW92ZXJmbG93LiBGaXhlcyBodHRwOi8vYnVnemlsbGEubWFwdG9vbHMub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjU2IGFuZAotaHR0cDovL2J1Z3ppbGxhLm1hcHRvb2xzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjY1NwotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE3LTUyMjUKLVNpZ25lZC1vZmYtYnk6IExpIFpob3UgPGxpLnpob3VAd2luZHJpdmVyLmNvbT4KLS0tLQotIENoYW5nZUxvZyAgICAgIHwgIDcgKysrKysrKwotIHRvb2xzL3RpZmZjcC5jIHwgMjQgKysrKysrKysrKysrKysrKysrKysrKy0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAyOSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCi1pbmRleCA5YjlkMzk3Li43ZTgyNzk1IDEwMDY0NAotLS0tIGEvQ2hhbmdlTG9nCi0rKysgYi9DaGFuZ2VMb2cKLUBAIC0xLDMgKzEsMTAgQEAKLSsyMDE3LTAxLTExIEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0IGF0IHNwYXRpYWx5cy5jb20+Ci0rCi0rCSogdG9vbHMvdGlmZmNwLmM6IGVycm9yIG91dCBjbGVhbmx5IGluIGNwQ29udGlnMlNlcGFyYXRlQnlSb3cgYW5kCi0rCWNwU2VwYXJhdGUyQ29udGlnQnlSb3cgaWYgQml0c1BlclNhbXBsZSAhPSA4IHRvIGF2b2lkIGhlYXAgYmFzZWQgb3ZlcmZsb3cuCi0rCUZpeGVzIGh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI2NTYgYW5kCi0rCWh0dHA6Ly9idWd6aWxsYS5tYXB0b29scy5vcmcvc2hvd19idWcuY2dpP2lkPTI2NTcKLSsKLSAyMDE2LTExLTE5ICBCb2IgRnJpZXNlbmhhaG4gIDxiZnJpZXNlbkBzaW1wbGUuZGFsbGFzLnR4LnVzPgotIAotIAkqIGxpYnRpZmYgNC4wLjcgcmVsZWFzZWQuCi1kaWZmIC0tZ2l0IGEvdG9vbHMvdGlmZmNwLmMgYi90b29scy90aWZmY3AuYwotaW5kZXggMzM4YTNkMS4uMmU4NDU3NyAxMDA2NDQKLS0tLSBhL3Rvb2xzL3RpZmZjcC5jCi0rKysgYi90b29scy90aWZmY3AuYwotQEAgLTU5Miw3ICs1OTIsNyBAQCBzdGF0aWMJY29weUZ1bmMgcGlja0NvcHlGdW5jKFRJRkYqLCBUSUZGKiwgdWludDE2LCB1aW50MTYpOwotIHN0YXRpYyBpbnQKLSB0aWZmY3AoVElGRiogaW4sIFRJRkYqIG91dCkKLSB7Ci0tCXVpbnQxNiBiaXRzcGVyc2FtcGxlLCBzYW1wbGVzcGVycGl4ZWwgPSAxOwotKwl1aW50MTYgYml0c3BlcnNhbXBsZSA9IDEsIHNhbXBsZXNwZXJwaXhlbCA9IDE7Ci0gCXVpbnQxNiBpbnB1dF9jb21wcmVzc2lvbiwgaW5wdXRfcGhvdG9tZXRyaWMgPSBQSE9UT01FVFJJQ19NSU5JU0JMQUNLOwotIAljb3B5RnVuYyBjZjsKLSAJdWludDMyIHdpZHRoLCBsZW5ndGg7Ci1AQCAtMTA2OCw2ICsxMDY4LDE2IEBAIERFQ0xBUkVjcEZ1bmMoY3BDb250aWcyU2VwYXJhdGVCeVJvdykKLSAJcmVnaXN0ZXIgdWludDMyIG47Ci0gCXVpbnQzMiByb3c7Ci0gCXRzYW1wbGVfdCBzOwotKyAgICAgICAgdWludDE2IGJwcyA9IDA7Ci0rCi0rICAgICAgICAodm9pZCkgVElGRkdldEZpZWxkKGluLCBUSUZGVEFHX0JJVFNQRVJTQU1QTEUsICZicHMpOwotKyAgICAgICAgaWYoIGJwcyAhPSA4ICkKLSsgICAgICAgIHsKLSsgICAgICAgICAgICBUSUZGRXJyb3IoVElGRkZpbGVOYW1lKGluKSwKLSsgICAgICAgICAgICAgICAgICAgICAgIkVycm9yLCBjYW4gb25seSBoYW5kbGUgQml0c1BlclNhbXBsZT04IGluICVzIiwKLSsgICAgICAgICAgICAgICAgICAgICAgImNwQ29udGlnMlNlcGFyYXRlQnlSb3ciKTsKLSsgICAgICAgICAgICByZXR1cm4gMDsKLSsgICAgICAgIH0KLSAKLSAJaW5idWYgPSBfVElGRm1hbGxvYyhzY2FubGluZXNpemVpbik7Ci0gCW91dGJ1ZiA9IF9USUZGbWFsbG9jKHNjYW5saW5lc2l6ZW91dCk7Ci1AQCAtMTEyMSw2ICsxMTMxLDE2IEBAIERFQ0xBUkVjcEZ1bmMoY3BTZXBhcmF0ZTJDb250aWdCeVJvdykKLSAJcmVnaXN0ZXIgdWludDMyIG47Ci0gCXVpbnQzMiByb3c7Ci0gCXRzYW1wbGVfdCBzOwotKyAgICAgICAgdWludDE2IGJwcyA9IDA7Ci0rCi0rICAgICAgICAodm9pZCkgVElGRkdldEZpZWxkKGluLCBUSUZGVEFHX0JJVFNQRVJTQU1QTEUsICZicHMpOwotKyAgICAgICAgaWYoIGJwcyAhPSA4ICkKLSsgICAgICAgIHsKLSsgICAgICAgICAgICBUSUZGRXJyb3IoVElGRkZpbGVOYW1lKGluKSwKLSsgICAgICAgICAgICAgICAgICAgICAgIkVycm9yLCBjYW4gb25seSBoYW5kbGUgQml0c1BlclNhbXBsZT04IGluICVzIiwKLSsgICAgICAgICAgICAgICAgICAgICAgImNwU2VwYXJhdGUyQ29udGlnQnlSb3ciKTsKLSsgICAgICAgICAgICByZXR1cm4gMDsKLSsgICAgICAgIH0KLSAKLSAJaW5idWYgPSBfVElGRm1hbGxvYyhzY2FubGluZXNpemVpbik7Ci0gCW91dGJ1ZiA9IF9USUZGbWFsbG9jKHNjYW5saW5lc2l6ZW91dCk7Ci1AQCAtMTc2Myw3ICsxNzgzLDcgQEAgcGlja0NvcHlGdW5jKFRJRkYqIGluLCBUSUZGKiBvdXQsIHVpbnQxNiBiaXRzcGVyc2FtcGxlLCB1aW50MTYgc2FtcGxlc3BlcnBpeGVsKQotIAl1aW50MzIgdywgbCwgdHcsIHRsOwotIAlpbnQgYnljaHVuazsKLSAKLS0JKHZvaWQpIFRJRkZHZXRGaWVsZChpbiwgVElGRlRBR19QTEFOQVJDT05GSUcsICZzaG9ydHYpOwotKwkodm9pZCkgVElGRkdldEZpZWxkRGVmYXVsdGVkKGluLCBUSUZGVEFHX1BMQU5BUkNPTkZJRywgJnNob3J0dik7Ci0gCWlmIChzaG9ydHYgIT0gY29uZmlnICYmIGJpdHNwZXJzYW1wbGUgIT0gOCAmJiBzYW1wbGVzcGVycGl4ZWwgPiAxKSB7Ci0gCQlmcHJpbnRmKHN0ZGVyciwKLSAJCSAgICAiJXM6IENhbm5vdCBoYW5kbGUgZGlmZmVyZW50IHBsYW5hciBjb25maWd1cmF0aW9uIHcvIGJpdHMvc2FtcGxlICE9IDhcbiIsCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL3RpZmZfNC4wLjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi90aWZmXzQuMC43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NjZlODUyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJ0aWZmL3RpZmZfNC4wLjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi1TVU1NQVJZID0gIlByb3ZpZGVzIHN1cHBvcnQgZm9yIHRoZSBUYWcgSW1hZ2UgRmlsZSBGb3JtYXQgKFRJRkYpIgotTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZUklHSFQ7bWQ1PTM0ZGEzZGI0NmZhYjc1MDE5OTJmOTYxNWQ3ZTE1OGNmIgotCi1DVkVfUFJPRFVDVCA9ICJsaWJ0aWZmIgotCi1TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5vc2dlby5vcmcvbGlidGlmZi90aWZmLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9saWJ0b29sMi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9saWJ0aWZmLUNWRS0yMDE3LTUyMjUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctOTE0Ny5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy05OTM2LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTEwNjg4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTExMzM1LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE2LTEwMjcxLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE2LTEwMDkzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE2LTEwMjY4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE2LTEwMjY2LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE2LTEwMjY3LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE2LTEwMjY5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE2LTEwMjcwLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTc1OTIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctNzU5NC1wMS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy03NTk0LXAyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTc1OTUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctNzU5Ni5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy03NTk4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTc2MDEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctNzYwMi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy03NTkzLnBhdGNoIFwKLSAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNzdhZTkyOGQyYzZiN2ZiNDZhMjFjM2EyOTMyNTE1N2IiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWY0M2EyY2ZiOTU4OWU1Y2VjYWE2NmUxNmJmODdmODE0Yzk0NWYyMmRmN2JhNjAwZDYzYWFjNDYzMmM0ZjAxOSIKLQotIyBleGNsdWRlIGJldGFzCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJ0aWZmLSg/UDxwdmVyPlxkKyhcLlxkKykrKS50YXIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLUNBQ0hFRF9DT05GSUdVUkVWQVJTID0gImF4X2N2X2NoZWNrX2dsX2xpYmdsPW5vIgotCi1QQUNLQUdFQ09ORklHID89ICJjeHgganBlZyB6bGliIGx6bWEgXAotICAgICAgICAgICAgICAgICAgc3RyaXAtY2hvcHBpbmcgZXh0cmFzYW1wbGUtYXMtYWxwaGEgY2hlY2steWNiY3Itc3Vic2FtcGxpbmciCi0KLVBBQ0tBR0VDT05GSUdbY3h4XSA9ICItLWVuYWJsZS1jeHgsLS1kaXNhYmxlLWN4eCwsIgotUEFDS0FHRUNPTkZJR1tqcGVnXSA9ICItLWVuYWJsZS1qcGVnLC0tZGlzYWJsZS1qcGVnLGpwZWcsIgotUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLWVuYWJsZS16bGliLC0tZGlzYWJsZS16bGliLHpsaWIsIgotUEFDS0FHRUNPTkZJR1tsem1hXSA9ICItLWVuYWJsZS1sem1hLC0tZGlzYWJsZS1sem1hLHh6LCIKLQotIyBDb252ZXJ0IHNpbmdsZS1zdHJpcCB1bmNvbXByZXNzZWQgaW1hZ2VzIHRvIG11bHRpcGxlIHN0cmlwcyBvZiBzcGVjaWZpZWQKLSMgc2l6ZSAoZGVmYXVsdDogODE5MikgdG8gcmVkdWNlIG1lbW9yeSB1c2FnZQotUEFDS0FHRUNPTkZJR1tzdHJpcC1jaG9wcGluZ10gPSAiLS1lbmFibGUtc3RyaXAtY2hvcHBpbmcsLS1kaXNhYmxlLXN0cmlwLWNob3BwaW5nLCwiCi0KLSMgVHJlYXQgYSBmb3VydGggc2FtcGxlIHdpdGggbm8gRVhUUkFTQU1QTEVfIHZhbHVlIGFzIGJlaW5nIEFTU09DQUxQSEEKLVBBQ0tBR0VDT05GSUdbZXh0cmFzYW1wbGUtYXMtYWxwaGFdID0gIi0tZW5hYmxlLWV4dHJhc2FtcGxlLWFzLWFscGhhLC0tZGlzYWJsZS1leHRyYXNhbXBsZS1hcy1hbHBoYSwsIgotCi0jIENvbnRyb2wgcGlja2luZyB1cCBZQ2JDciBzdWJzYW1wbGUgaW5mby4gRGlzYWJsZSB0byBzdXBwb3J0IGZpbGVzIGxhY2tpbmcKLSMgdGhlIHRhZwotUEFDS0FHRUNPTkZJR1tjaGVjay15Y2Jjci1zdWJzYW1wbGluZ10gPSAiLS1lbmFibGUtY2hlY2steWNiY3Itc3Vic2FtcGxpbmcsLS1kaXNhYmxlLWNoZWNrLXljYmNyLXN1YnNhbXBsaW5nLCwiCi0KLSMgU3VwcG9ydCBhIG1lY2hhbmlzbSBhbGxvd2luZyByZWFkaW5nIGxhcmdlIHN0cmlwcyAodXN1YWxseSBvbmUgc3RyaXAgZmlsZXMpCi0jIGluIGNodW5rcyB3aGVuIHVzaW5nIFRJRkZSZWFkU2NhbmxpbmUuIEV4cGVyaW1lbnRhbCA0LjArIGZlYXR1cmUKLVBBQ0tBR0VDT05GSUdbY2h1bmt5LXN0cmlwLXJlYWRdID0gIi0tZW5hYmxlLWNodW5reS1zdHJpcC1yZWFkLC0tZGlzYWJsZS1jaHVua3ktc3RyaXAtcmVhZCwsIgotCi1QQUNLQUdFUyA9KyAidGlmZnh4IHRpZmYtdXRpbHMiCi1GSUxFU190aWZmeHggPSAiJHtsaWJkaXJ9L2xpYnRpZmZ4eC5zby4qIgotRklMRVNfdGlmZi11dGlscyA9ICIke2JpbmRpcn0vKiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlidGlmZi90aWZmXzQuMC44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvdGlmZl80LjAuOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjkxYmFhCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnRpZmYvdGlmZl80LjAuOC5iYgpAQCAtMCwwICsxLDU0IEBACitTVU1NQVJZID0gIlByb3ZpZGVzIHN1cHBvcnQgZm9yIHRoZSBUYWcgSW1hZ2UgRmlsZSBGb3JtYXQgKFRJRkYpIgorTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZUklHSFQ7bWQ1PTM0ZGEzZGI0NmZhYjc1MDE5OTJmOTYxNWQ3ZTE1OGNmIgorCitDVkVfUFJPRFVDVCA9ICJsaWJ0aWZmIgorCitTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5vc2dlby5vcmcvbGlidGlmZi90aWZmLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9saWJ0b29sMi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy05MTQ3LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTk5MzYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTA2ODgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTEzMzUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTM3MjYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTM3MjcucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjJhN2QxYzEzMTg0MTZkZGYzNmQ1ZjZmYTQ2MDAwNjliIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU5ZDdhNWE4Y2NkOTIwNTk5MTNmMjQ2ODc3ZGI5NWEyOTE4ZTZjMDRmYjlkNDNmZDc0ZTVjMzM5MGRhYzI5MTAiCisKKyMgZXhjbHVkZSBiZXRhcworVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAidGlmZi0oP1A8cHZlcj5cZCsoXC5cZCspKykudGFyIgorCitpbmhlcml0IGF1dG90b29scworCitDQUNIRURfQ09ORklHVVJFVkFSUyA9ICJheF9jdl9jaGVja19nbF9saWJnbD1ubyIKKworUEFDS0FHRUNPTkZJRyA/PSAiY3h4IGpwZWcgemxpYiBsem1hIFwKKyAgICAgICAgICAgICAgICAgIHN0cmlwLWNob3BwaW5nIGV4dHJhc2FtcGxlLWFzLWFscGhhIGNoZWNrLXljYmNyLXN1YnNhbXBsaW5nIgorCitQQUNLQUdFQ09ORklHW2N4eF0gPSAiLS1lbmFibGUtY3h4LC0tZGlzYWJsZS1jeHgsLCIKK1BBQ0tBR0VDT05GSUdbanBlZ10gPSAiLS1lbmFibGUtanBlZywtLWRpc2FibGUtanBlZyxqcGVnLCIKK1BBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS1lbmFibGUtemxpYiwtLWRpc2FibGUtemxpYix6bGliLCIKK1BBQ0tBR0VDT05GSUdbbHptYV0gPSAiLS1lbmFibGUtbHptYSwtLWRpc2FibGUtbHptYSx4eiwiCisKKyMgQ29udmVydCBzaW5nbGUtc3RyaXAgdW5jb21wcmVzc2VkIGltYWdlcyB0byBtdWx0aXBsZSBzdHJpcHMgb2Ygc3BlY2lmaWVkCisjIHNpemUgKGRlZmF1bHQ6IDgxOTIpIHRvIHJlZHVjZSBtZW1vcnkgdXNhZ2UKK1BBQ0tBR0VDT05GSUdbc3RyaXAtY2hvcHBpbmddID0gIi0tZW5hYmxlLXN0cmlwLWNob3BwaW5nLC0tZGlzYWJsZS1zdHJpcC1jaG9wcGluZywsIgorCisjIFRyZWF0IGEgZm91cnRoIHNhbXBsZSB3aXRoIG5vIEVYVFJBU0FNUExFXyB2YWx1ZSBhcyBiZWluZyBBU1NPQ0FMUEhBCitQQUNLQUdFQ09ORklHW2V4dHJhc2FtcGxlLWFzLWFscGhhXSA9ICItLWVuYWJsZS1leHRyYXNhbXBsZS1hcy1hbHBoYSwtLWRpc2FibGUtZXh0cmFzYW1wbGUtYXMtYWxwaGEsLCIKKworIyBDb250cm9sIHBpY2tpbmcgdXAgWUNiQ3Igc3Vic2FtcGxlIGluZm8uIERpc2FibGUgdG8gc3VwcG9ydCBmaWxlcyBsYWNraW5nCisjIHRoZSB0YWcKK1BBQ0tBR0VDT05GSUdbY2hlY2steWNiY3Itc3Vic2FtcGxpbmddID0gIi0tZW5hYmxlLWNoZWNrLXljYmNyLXN1YnNhbXBsaW5nLC0tZGlzYWJsZS1jaGVjay15Y2Jjci1zdWJzYW1wbGluZywsIgorCisjIFN1cHBvcnQgYSBtZWNoYW5pc20gYWxsb3dpbmcgcmVhZGluZyBsYXJnZSBzdHJpcHMgKHVzdWFsbHkgb25lIHN0cmlwIGZpbGVzKQorIyBpbiBjaHVua3Mgd2hlbiB1c2luZyBUSUZGUmVhZFNjYW5saW5lLiBFeHBlcmltZW50YWwgNC4wKyBmZWF0dXJlCitQQUNLQUdFQ09ORklHW2NodW5reS1zdHJpcC1yZWFkXSA9ICItLWVuYWJsZS1jaHVua3ktc3RyaXAtcmVhZCwtLWRpc2FibGUtY2h1bmt5LXN0cmlwLXJlYWQsLCIKKworUEFDS0FHRVMgPSsgInRpZmZ4eCB0aWZmLXV0aWxzIgorRklMRVNfdGlmZnh4ID0gIiR7bGliZGlyfS9saWJ0aWZmeHguc28uKiIKK0ZJTEVTX3RpZmYtdXRpbHMgPSAiJHtiaW5kaXJ9LyoiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL21wZWcyZGVjL2ZpbGVzLzAwMDEtY2hlY2stZm9yLWF2YWlsYWJsZS1hcm0tb3B0aW1pemF0aW9ucy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9tcGVnMmRlYy9maWxlcy8wMDAxLWNoZWNrLWZvci1hdmFpbGFibGUtYXJtLW9wdGltaXphdGlvbnMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJmNjhiMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9tcGVnMmRlYy9maWxlcy8wMDAxLWNoZWNrLWZvci1hdmFpbGFibGUtYXJtLW9wdGltaXphdGlvbnMucGF0Y2gKQEAgLTAsMCArMSw1NSBAQAorRnJvbSBjYmNmZjU4ZWQ2NzBjOGVkYzBiZTEwMDQzODRjYmUwZmQwN2Q4ZDI2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgNSBKdWwgMjAxNyAxODo0OToyMSAtMDcwMAorU3ViamVjdDogW1BBVENIIDEvMl0gY2hlY2sgZm9yIGF2YWlsYWJsZSBhcm0gb3B0aW1pemF0aW9ucworCitUYWtlbiBGcm9tCitodHRwOi8vc291cmNlcy5kZWJpYW4ubmV0L3NyYy9tcGVnMmRlYy8wLjUuMS03L2RlYmlhbi9wYXRjaGVzLzY1X2FybS10ZXN0LXdpdGgtY29tcGlsZXIucGF0Y2gvCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgY29uZmlndXJlLmFjIHwgMTIgKysrKysrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggYWNkY2IxZS4uMmMwYTcyMSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNTksNyArNTksNyBAQCBlbGlmIHRlc3QgeCIkR0NDIiA9IHgieWVzIjsgdGhlbgorICAgICBBQ19UUllfQ0ZMQUdTKFskVFJZX0NGTEFHUyAkQ0ZMQUdTXSxbT1BUX0NGTEFHUz0iJFRSWV9DRkxBR1MiXSkKKyAKKyAgICAgZG5sIGFyY2gtc3BlY2lmaWMgZmxhZ3MKKy0gICAgYXJtX2NvbmRpdGlvbmFsPWZhbHNlCisrICAgIGJ1aWxkX2FybV9vcHQ9ZmFsc2UKKyAgICAgY2FzZSAiJGhvc3QiIGluCisgICAgIGk/ODYtKiB8IGs/LSogfCB4ODZfNjQtKiB8IGFtZDY0LSopCisgCUFDX0RFRklORShbQVJDSF9YODZdLCxbeDg2IGFyY2hpdGVjdHVyZV0pCitAQCAtMTAyLDggKzEwMiwxMiBAQCBlbGlmIHRlc3QgeCIkR0NDIiA9IHgieWVzIjsgdGhlbgorICAgICBhbHBoYSopCisgCUFDX0RFRklORShbQVJDSF9BTFBIQV0sLFthbHBoYSBhcmNoaXRlY3R1cmVdKTs7CisgICAgIGFybSopCistCWFybV9jb25kaXRpb25hbD06CistCUFDX0RFRklORShbQVJDSF9BUk1dLCxbQVJNIGFyY2hpdGVjdHVyZV0pOzsKKysJQUNfTEFORyhDKQorKwlBQ19DT01QSUxFX0lGRUxTRSgKKysJCVtBQ19MQU5HX1NPVVJDRShbWworKwkJCXZvaWQgZm9vKHZvaWQpIHsgX19hc21fXyB2b2xhdGlsZSgicGxkIFtyMV0iKTsgfV1dKV0sCisrCQlidWlsZF9hcm1fb3B0PXRydWU7IEFDX0RFRklORShbQVJDSF9BUk1dLCxbQVJNIGFyY2hpdGVjdHVyZV0pLAorKwkJYnVpbGRfYXJtX29wdD1mYWxzZSk7OworICAgICBlc2FjCisgZWxpZiB0ZXN0IHgiJENDIiA9IHgidGVuZHJhY2MiOyB0aGVuCisgICAgIGRubCBUZW5EUkEgcG9ydGFiaWxpdHkgY2hlY2tpbmcgY29tcGlsZXIKK0BAIC0xMjMsNyArMTI3LDcgQEAgZWxzZQorICAgICBlc2FjCisgZmkKKyAKKy1BTV9DT05ESVRJT05BTChBUkNIX0FSTSwgJHthcm1fY29uZGl0aW9uYWx9KQorK0FNX0NPTkRJVElPTkFMKEFSQ0hfQVJNLCB0ZXN0IHgkYnVpbGRfYXJtX29wdCA9IHh0cnVlKQorIAorIGRubCBDaGVja3MgZm9yIGxpYnRvb2wgLSB0aGlzIG11c3QgYmUgZG9uZSBhZnRlciB3ZSBzZXQgY2ZsYWdzCisgQUNfTElCVE9PTF9XSU4zMl9ETEwKKy0tIAorMi4xMy4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9tcGVnMmRlYy9maWxlcy8wMDAyLVNldC12aXNpYmlsaXR5LW9mLWdsb2JhbC1zeW1ib2xzLXVzZWQtaW4tQVJNLXNwZWNpZmkucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbXBlZzJkZWMvZmlsZXMvMDAwMi1TZXQtdmlzaWJpbGl0eS1vZi1nbG9iYWwtc3ltYm9scy11c2VkLWluLUFSTS1zcGVjaWZpLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzMDE2OTIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbXBlZzJkZWMvZmlsZXMvMDAwMi1TZXQtdmlzaWJpbGl0eS1vZi1nbG9iYWwtc3ltYm9scy11c2VkLWluLUFSTS1zcGVjaWZpLnBhdGNoCkBAIC0wLDAgKzEsNjMgQEAKK0Zyb20gZjlkOWRjOTJkNzVmODkxMGUzY2Q1ZmRjYmVhNzJlNTA1Y2RmMzQ5MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDUgSnVsIDIwMTcgMTk6MDM6MzYgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIFNldCB2aXNpYmlsaXR5IG9mIGdsb2JhbCBzeW1ib2xzIHVzZWQgaW4gQVJNIHNwZWNpZmljCisgYXNzZW1ibHkgZmlsZSB0byBpbnRlcm5hbAorCitUYWtlbiBmcm9tCitodHRwOi8vc291cmNlcy5kZWJpYW4ubmV0L3NyYy9tcGVnMmRlYy8wLjUuMS03L2RlYmlhbi9wYXRjaGVzLzYwX2FybS1wcml2YXRlLXN5bWJvbHMucGF0Y2gvCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbGlibXBlZzIvbW90aW9uX2NvbXBfYXJtX3MuUyB8IDEyICsrKysrKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJtcGVnMi9tb3Rpb25fY29tcF9hcm1fcy5TIGIvbGlibXBlZzIvbW90aW9uX2NvbXBfYXJtX3MuUworaW5kZXggZjZjM2Q3ZC4uYzkyMWY3YyAxMDA2NDQKKy0tLSBhL2xpYm1wZWcyL21vdGlvbl9jb21wX2FybV9zLlMKKysrKyBiL2xpYm1wZWcyL21vdGlvbl9jb21wX2FybV9zLlMKK0BAIC0yMyw3ICsyMyw4IEBACisgCisgQCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCS5hbGlnbgorLQkuZ2xvYmFsIE1DX3B1dF9vXzE2X2FybQorKwkuZ2xvYmFsICAgTUNfcHV0X29fMTZfYXJtCisrCS5pbnRlcm5hbCBNQ19wdXRfb18xNl9hcm0KKyBNQ19wdXRfb18xNl9hcm06CisgCUBAIHZvaWQgZnVuYyh1aW50OF90ICogZGVzdCwgY29uc3QgdWludDhfdCAqIHJlZiwgaW50IHN0cmlkZSwgaW50IGhlaWdodCkKKyAJcGxkIFtyMV0KK0BAIC04Myw3ICs4NCw4IEBAIE1DX3B1dF9vXzE2X2FybV9hbGlnbl9qdDoKKyAKKyBAIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAJLmFsaWduCistCS5nbG9iYWwgTUNfcHV0X29fOF9hcm0KKysJLmdsb2JhbCAgIE1DX3B1dF9vXzhfYXJtCisrCS5pbnRlcm5hbCBNQ19wdXRfb184X2FybQorIE1DX3B1dF9vXzhfYXJtOgorIAlAQCB2b2lkIGZ1bmModWludDhfdCAqIGRlc3QsIGNvbnN0IHVpbnQ4X3QgKiByZWYsIGludCBzdHJpZGUsIGludCBoZWlnaHQpCisgCXBsZCBbcjFdCitAQCAtMTUyLDcgKzE1NCw4IEBAIE1DX3B1dF9vXzhfYXJtX2FsaWduX2p0OgorIC5lbmRtCisgCisgCS5hbGlnbgorLQkuZ2xvYmFsIE1DX3B1dF94XzE2X2FybQorKwkuZ2xvYmFsICAgTUNfcHV0X3hfMTZfYXJtCisrCS5pbnRlcm5hbCBNQ19wdXRfeF8xNl9hcm0KKyBNQ19wdXRfeF8xNl9hcm06CisgCUBAIHZvaWQgZnVuYyh1aW50OF90ICogZGVzdCwgY29uc3QgdWludDhfdCAqIHJlZiwgaW50IHN0cmlkZSwgaW50IGhlaWdodCkKKyAJcGxkIFtyMV0KK0BAIC0yNDQsNyArMjQ3LDggQEAgTUNfcHV0X3hfMTZfYXJtX2FsaWduX2p0OgorIAorIEAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAkuYWxpZ24KKy0JLmdsb2JhbCBNQ19wdXRfeF84X2FybQorKwkuZ2xvYmFsICAgTUNfcHV0X3hfOF9hcm0KKysJLmludGVybmFsIE1DX3B1dF94XzhfYXJtCisgTUNfcHV0X3hfOF9hcm06CisgCUBAIHZvaWQgZnVuYyh1aW50OF90ICogZGVzdCwgY29uc3QgdWludDhfdCAqIHJlZiwgaW50IHN0cmlkZSwgaW50IGhlaWdodCkKKyAJcGxkIFtyMV0KKy0tIAorMi4xMy4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9tcGVnMmRlYy9maWxlcy9hbHRpdmVjX2hfbmVlZGVkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL21wZWcyZGVjL2ZpbGVzL2FsdGl2ZWNfaF9uZWVkZWQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTExM2FkNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9tcGVnMmRlYy9maWxlcy9hbHRpdmVjX2hfbmVlZGVkLnBhdGNoCkBAIC0wLDAgKzEsNDMgQEAKK0FkZCBuZXcgbWV0aG9kIHRvIGp1ZGdlIHdoZXRoZXIgPGFsdGl2ZWMuaD4gaXMgbmVlZGVkCisKK1RoZSBvcmlnaW5hbCBsb2dpYyB3aWxsIHVzZSAidHlwZWRlZiB2ZWN0b3IgaW50IHQ7IiB0byBqdWRnZQord2hldGhlciA8YWx0aXZlYy5oPiBpcyBuZWVkZWQuIGFsdGl2ZWMuaCBjb250YWlucyB0aGUgZm9sbG93aW5nCitzdGF0ZW1lbnQ6CisKKyAjaWYgIWRlZmluZWQoX19BUFBMRV9BTFRJVkVDX18pCisgI2RlZmluZSB2ZWN0b3IgX192ZWN0b3IKKyAjZGVmaW5lIHBpeGVsIF9fcGl4ZWwKKyAjZGVmaW5lIGJvb2wgCisgI2VuZGlmCisKK0luIGdjYy00LjMuMywgX19BUFBMRV9BTFRJVkVDX18gaXMgbm90IGRlZmluZWQgYnkgY29tcGlsZXIsIG5laXRoZXIKK2FzIHZlY3RvciwgcGl4ZWwsIGFuZCBib29sLiBJbiBvcmRlciB0byBtYWtlICJ0eXBlZGVmIHZlY3RvciBpbnQgdDsiCitwYXNzIHRoZSBjb21waWxhdGlvbiwgd2UgbmVlZCB0byBpbmNsdWRlIGFsdGl2ZWMuaC4KKworSG93ZXZlciBpbiBnY2MtNC41LjAsIF9fQVBQTEVfQUxUSVZFQ19fIGlzIGRlZmluZWQgYnkgY29tcGlsZXIsCitzbyBhcyB2ZWN0b3IsIHBpeGVsLCBhbmQgYm9vbC4gV2UgY291bGQgbm90IGp1ZGdlIHdoZXRoZXIKK2FsdGl2ZWMuaCBpcyBuZWVkZWQgYnkgInR5cGVkZWYgdmVjdG9yIGludCB0OyIuCitIZXJlIHdlIGluY2x1ZGUgYW5vdGhlciBzdGF0ZW1lbnQgImludCB0bXAgPSBfX0NSNl9FUTsiLCBpbgord2hpY2ggX19DUjZfRVEgaXMgZGVmaW5lZCBpbiBhbHRpdmVjLmguCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBEb25neGlhbyBYdSA8ZG9uZ3hpYW8ueHVAaW50ZWwuY29tPgorCitkaWZmIC1ydU4gYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KKy0tLSBhL2NvbmZpZ3VyZS5hYwkyMDEwLTA5LTE0IDIwOjU1OjQyLjM5OTY4NzY2MyArMDgwMAorKysrIGIvY29uZmlndXJlLmFjCTIwMTAtMDktMTQgMjA6NTY6NDMuNDAzMjA0NjQ4ICswODAwCitAQCAtNzksMTEgKzc5LDExIEBACisgCQkgQ0ZMQUdTPSIkT1BUX0NGTEFHUyAkVFJZX0NGTEFHUyAkQ0ZMQUdTIgorIAkJIEFDX01TR19DSEVDS0lORyhbaWYgPGFsdGl2ZWMuaD4gaXMgbmVlZGVkXSkKKyAJCSBBQ19UUllfQ09NUElMRShbXSwKKy0JCSAgICBbdHlwZWRlZiB2ZWN0b3IgaW50IHQ7CisrCQkgICAgW3R5cGVkZWYgdmVjdG9yIGludCB0OyBpbnQgdG1wID0gX19DUjZfRVE7CisgCQkgICAgIHZlY19sZCgwLCAodW5zaWduZWQgY2hhciAqKTApO10sCisgCQkgICAgW2hhdmVfYWx0aXZlYz15ZXM7IEFDX01TR19SRVNVTFQobm8pXSwKKyAJCSAgICBbQUNfVFJZX0NPTVBJTEUoWyNpbmNsdWRlIDxhbHRpdmVjLmg+XSwKKy0JCQlbdHlwZWRlZiB2ZWN0b3IgaW50IHQ7IHZlY19sZCgwLCAodW5zaWduZWQgY2hhciAqKTApO10sCisrCQkJW3R5cGVkZWYgdmVjdG9yIGludCB0OyBpbnQgdG1wID0gX19DUjZfRVE7IHZlY19sZCgwLCAodW5zaWduZWQgY2hhciAqKTApO10sCisgCQkJW0FDX0RFRklORShbSEFWRV9BTFRJVkVDX0hdLCwKKyAJCQkgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8YWx0aXZlYy5oPiBoZWFkZXIuXSkKKyAJCQkgaGF2ZV9hbHRpdmVjPXllczsgQUNfTVNHX1JFU1VMVCh5ZXMpXSwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9tcGVnMmRlYy9tcGVnMmRlYy0wLjQuMS9hbHRpdmVjX2hfbmVlZGVkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL21wZWcyZGVjL21wZWcyZGVjLTAuNC4xL2FsdGl2ZWNfaF9uZWVkZWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkYzU2NDMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL21wZWcyZGVjL21wZWcyZGVjLTAuNC4xL2FsdGl2ZWNfaF9uZWVkZWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1BZGQgbmV3IG1ldGhvZCB0byBqdWRnZSB3aGV0aGVyIDxhbHRpdmVjLmg+IGlzIG5lZWRlZAotCi1UaGUgb3JpZ2luYWwgbG9naWMgd2lsbCB1c2UgInR5cGVkZWYgdmVjdG9yIGludCB0OyIgdG8ganVkZ2UKLXdoZXRoZXIgPGFsdGl2ZWMuaD4gaXMgbmVlZGVkLiBhbHRpdmVjLmggY29udGFpbnMgdGhlIGZvbGxvd2luZwotc3RhdGVtZW50OgotCi0gI2lmICFkZWZpbmVkKF9fQVBQTEVfQUxUSVZFQ19fKQotICNkZWZpbmUgdmVjdG9yIF9fdmVjdG9yCi0gI2RlZmluZSBwaXhlbCBfX3BpeGVsCi0gI2RlZmluZSBib29sIAotICNlbmRpZgotCi1JbiBnY2MtNC4zLjMsIF9fQVBQTEVfQUxUSVZFQ19fIGlzIG5vdCBkZWZpbmVkIGJ5IGNvbXBpbGVyLCBuZWl0aGVyCi1hcyB2ZWN0b3IsIHBpeGVsLCBhbmQgYm9vbC4gSW4gb3JkZXIgdG8gbWFrZSAidHlwZWRlZiB2ZWN0b3IgaW50IHQ7IgotcGFzcyB0aGUgY29tcGlsYXRpb24sIHdlIG5lZWQgdG8gaW5jbHVkZSBhbHRpdmVjLmguCi0KLUhvd2V2ZXIgaW4gZ2NjLTQuNS4wLCBfX0FQUExFX0FMVElWRUNfXyBpcyBkZWZpbmVkIGJ5IGNvbXBpbGVyLAotc28gYXMgdmVjdG9yLCBwaXhlbCwgYW5kIGJvb2wuIFdlIGNvdWxkIG5vdCBqdWRnZSB3aGV0aGVyCi1hbHRpdmVjLmggaXMgbmVlZGVkIGJ5ICJ0eXBlZGVmIHZlY3RvciBpbnQgdDsiLgotSGVyZSB3ZSBpbmNsdWRlIGFub3RoZXIgc3RhdGVtZW50ICJpbnQgdG1wID0gX19DUjZfRVE7IiwgaW4KLXdoaWNoIF9fQ1I2X0VRIGlzIGRlZmluZWQgaW4gYWx0aXZlYy5oLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogRG9uZ3hpYW8gWHUgPGRvbmd4aWFvLnh1QGludGVsLmNvbT4KLQotZGlmZiAtcnVOIG1wZWcyZGVjLTAuNC4xLW9yaWcvY29uZmlndXJlLmluIG1wZWcyZGVjLTAuNC4xL2NvbmZpZ3VyZS5pbgotLS0tIG1wZWcyZGVjLTAuNC4xLW9yaWcvY29uZmlndXJlLmluCTIwMTAtMDktMTQgMjA6NTU6NDIuMzk5Njg3NjYzICswODAwCi0rKysgbXBlZzJkZWMtMC40LjEvY29uZmlndXJlLmluCTIwMTAtMDktMTQgMjA6NTY6NDMuNDAzMjA0NjQ4ICswODAwCi1AQCAtNzUsMTEgKzc1LDExIEBACi0gCQkgQ0ZMQUdTPSIkT1BUX0NGTEFHUyAkVFJZX0NGTEFHUyAkQ0ZMQUdTIgotIAkJIEFDX01TR19DSEVDS0lORyhbaWYgPGFsdGl2ZWMuaD4gaXMgbmVlZGVkXSkKLSAJCSBBQ19UUllfQ09NUElMRShbXSwKLS0JCSAgICBbdHlwZWRlZiB2ZWN0b3IgaW50IHQ7Ci0rCQkgICAgW3R5cGVkZWYgdmVjdG9yIGludCB0OyBpbnQgdG1wID0gX19DUjZfRVE7Ci0gCQkgICAgIHZlY19sZCgwLCAodW5zaWduZWQgY2hhciAqKTApO10sCi0gCQkgICAgW2hhdmVfYWx0aXZlYz15ZXM7IEFDX01TR19SRVNVTFQobm8pXSwKLSAJCSAgICBbQUNfVFJZX0NPTVBJTEUoWyNpbmNsdWRlIDxhbHRpdmVjLmg+XSwKLS0JCQlbdHlwZWRlZiB2ZWN0b3IgaW50IHQ7IHZlY19sZCgwLCAodW5zaWduZWQgY2hhciAqKTApO10sCi0rCQkJW3R5cGVkZWYgdmVjdG9yIGludCB0OyBpbnQgdG1wID0gX19DUjZfRVE7IHZlY19sZCgwLCAodW5zaWduZWQgY2hhciAqKTApO10sCi0gCQkJW0FDX0RFRklORShbSEFWRV9BTFRJVkVDX0hdLCwKLSAJCQkgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8YWx0aXZlYy5oPiBoZWFkZXIuXSkKLSAJCQkgaGF2ZV9hbHRpdmVjPXllczsgQUNfTVNHX1JFU1VMVCh5ZXMpXSwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9tcGVnMmRlYy9tcGVnMmRlY18wLjQuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9tcGVnMmRlYy9tcGVnMmRlY18wLjQuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmU3NjVkYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbXBlZzJkZWMvbXBlZzJkZWNfMC40LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1TVU1NQVJZID0gIkxpYnJhcnkgYW5kIHRlc3QgcHJvZ3JhbSBmb3IgZGVjb2RpbmcgTVBFRy0yIGFuZCBNUEVHLTEgdmlkZW8gc3RyZWFtcyIKLUhPTUVQQUdFID0gImh0dHA6Ly9saWJtcGVnMi5zb3VyY2Vmb3JnZS5uZXQvIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlL21wZWcyLmg7YmVnaW5saW5lPTE7ZW5kbGluZT0yMjttZDU9ZWFkNjI2MDJkNDYzODMyOWQzYjViODZhNTU4MDMxNTQiCi0KLVBSID0gInIyIgotCi1TUkNfVVJJID0gImh0dHA6Ly9saWJtcGVnMi5zb3VyY2Vmb3JnZS5uZXQvZmlsZXMvbXBlZzJkZWMtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2FsdGl2ZWNfaF9uZWVkZWQucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3NjMxYjBhNGJjZmRkMGQ3OGMwYmIwMDgzMDgwYjBkYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjNzRhNzYwNjhmOGVjMzZkNGJiNTlhMDNiZjExNTdiZTQ0MTE4Y2EwMjI1MjE4MGU4YjM1OGIwYjVlM2VkZWVlIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL2xpYm1wZWcyLnNvdXJjZWZvcmdlLm5ldC9kb3dubG9hZHMuaHRtbCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLUVYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1zaGFyZWQgLS1kaXNhYmxlLXNkbCIKLQotUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IgotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0td2l0aC14LC0td2l0aG91dC14LHZpcnR1YWwvbGlieDExIGxpYnhleHQgbGlieHYiCi0KLVBBQ0tBR0VTID0gIm1wZWcyZGVjLWRiZyBtcGVnMmRlYyBtcGVnMmRlYy1kb2MgbGlibXBlZzIgbGlibXBlZzItZGV2IGxpYm1wZWcyY29udmVydCBsaWJtcGVnMmNvbnZlcnQtZGV2IGxpYm1wZWcyLXN0YXRpY2RldiBsaWJtcGVnMmNvbnZlcnQtc3RhdGljZGV2IgotCi1GSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vKiIKLUZJTEVTX2xpYm1wZWcyID0gIiR7bGliZGlyfS9saWJtcGVnMi5zby4qIgotRklMRVNfbGlibXBlZzJjb252ZXJ0ID0gIiR7bGliZGlyfS9saWJtcGVnMmNvbnZlcnQuc28uKiIKLUZJTEVTX2xpYm1wZWcyLWRldiA9ICIke2xpYmRpcn0vbGlibXBlZzIuc28gXAotICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJtcGVnMi5sYSBcCi0gICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3BrZ2NvbmZpZy9saWJtcGVnMi5wYyBcCi0gICAgICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS9tcGVnMmRlYy9tcGVnMi5oIgotRklMRVNfbGlibXBlZzItc3RhdGljZGV2ID0gIiR7bGliZGlyfS9saWJtcGVnMi5hIgotRklMRVNfbGlibXBlZzJjb252ZXJ0LWRldiA9ICIke2xpYmRpcn0vbGlibXBlZzJjb252ZXJ0LnNvIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYm1wZWcyY29udmVydC5sYSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wa2djb25maWcvbGlibXBlZzJjb252ZXJ0LnBjIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS9tcGVnMmRlYy9tcGVnMmNvbnZlcnQuaCIKLUZJTEVTX2xpYm1wZWcyY29udmVydC1zdGF0aWNkZXYgPSAiJHtsaWJkaXJ9L2xpYm1wZWcyY29udmVydC5hIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL21wZWcyZGVjL21wZWcyZGVjXzAuNS4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL21wZWcyZGVjL21wZWcyZGVjXzAuNS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3MTFjMmQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbXBlZzJkZWMvbXBlZzJkZWNfMC41LjEuYmIKQEAgLTAsMCArMSw0NSBAQAorU1VNTUFSWSA9ICJMaWJyYXJ5IGFuZCB0ZXN0IHByb2dyYW0gZm9yIGRlY29kaW5nIE1QRUctMiBhbmQgTVBFRy0xIHZpZGVvIHN0cmVhbXMiCitIT01FUEFHRSA9ICJodHRwOi8vbGlibXBlZzIuc291cmNlZm9yZ2UubmV0LyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jbHVkZS9tcGVnMi5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MjI7bWQ1PTc3NjZmNGZjYjU4ZjBmODQxM2M0OWE3NDZmMmFiODliIgorCitTUkNfVVJJID0gImh0dHA6Ly9saWJtcGVnMi5zb3VyY2Vmb3JnZS5uZXQvZmlsZXMvbGlibXBlZzItJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2FsdGl2ZWNfaF9uZWVkZWQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jaGVjay1mb3ItYXZhaWxhYmxlLWFybS1vcHRpbWl6YXRpb25zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItU2V0LXZpc2liaWxpdHktb2YtZ2xvYmFsLXN5bWJvbHMtdXNlZC1pbi1BUk0tc3BlY2lmaS5wYXRjaCBcCisgICAgICAgICAgICIKKworUyA9ICIke1dPUktESVJ9L2xpYm1wZWcyLSR7UFZ9IgorCitTUkNfVVJJW21kNXN1bV0gPSAiMGY5MmM3NDU0ZTU4Mzc5YjRhNWEzNzg0ODViYmQ4ZWYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGVlMjJlODkzY2I1ZmMyYjJiNmViZDYwYjg4NDc4YWI4NTU2Y2IzYjkzZjlhMGQ3Y2U4ZjNiNjE4NTE4NzFkNCIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9saWJtcGVnMi5zb3VyY2Vmb3JnZS5uZXQvZG93bmxvYWRzLmh0bWwiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitFWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtc2hhcmVkIC0tZGlzYWJsZS1zZGwiCisKK1BBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSIKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItLXdpdGgteCwtLXdpdGhvdXQteCx2aXJ0dWFsL2xpYngxMSBsaWJ4ZXh0IGxpYnh2IgorCitQQUNLQUdFUyA9ICJtcGVnMmRlYy1kYmcgbXBlZzJkZWMgbXBlZzJkZWMtZG9jIGxpYm1wZWcyIGxpYm1wZWcyLWRldiBsaWJtcGVnMmNvbnZlcnQgbGlibXBlZzJjb252ZXJ0LWRldiBsaWJtcGVnMi1zdGF0aWNkZXYgbGlibXBlZzJjb252ZXJ0LXN0YXRpY2RldiIKKworRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9LyoiCitGSUxFU19saWJtcGVnMiA9ICIke2xpYmRpcn0vbGlibXBlZzIuc28uKiIKK0ZJTEVTX2xpYm1wZWcyY29udmVydCA9ICIke2xpYmRpcn0vbGlibXBlZzJjb252ZXJ0LnNvLioiCitGSUxFU19saWJtcGVnMi1kZXYgPSAiJHtsaWJkaXJ9L2xpYm1wZWcyLnNvIFwKKyAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlibXBlZzIubGEgXAorICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJtcGVnMmFyY2gubGEgXAorICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wa2djb25maWcvbGlibXBlZzIucGMgXAorICAgICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vbXBlZzJkZWMvbXBlZzIuaCIKK0ZJTEVTX2xpYm1wZWcyLXN0YXRpY2RldiA9ICIke2xpYmRpcn0vbGlibXBlZzIuYSIKK0ZJTEVTX2xpYm1wZWcyY29udmVydC1kZXYgPSAiJHtsaWJkaXJ9L2xpYm1wZWcyY29udmVydC5zbyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJtcGVnMmNvbnZlcnQubGEgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlibXBlZzJjb252ZXJ0YXJjaC5sYSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wa2djb25maWcvbGlibXBlZzJjb252ZXJ0LnBjIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS9tcGVnMmRlYy9tcGVnMmNvbnZlcnQuaCIKK0ZJTEVTX2xpYm1wZWcyY29udmVydC1zdGF0aWNkZXYgPSAiJHtsaWJkaXJ9L2xpYm1wZWcyY29udmVydC5hIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL21wZzEyMy9tcGcxMjNfMS4yMy44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL21wZzEyMy9tcGcxMjNfMS4yMy44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMGE3MDM4Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9tcGcxMjMvbXBnMTIzXzEuMjMuOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLVNVTU1BUlkgPSAiQXVkaW8gZGVjb2RlciBmb3IgTVBFRy0xIExheWVyIDEvMi8zIgotREVTQ1JJUFRJT04gPSAiVGhlIGNvcmUgb2YgbXBnMTIzIGlzIGFuIE1QRUctMSBMYXllciAxLzIvMyBkZWNvZGluZyBsaWJyYXJ5LCB3aGljaCBjYW4gYmUgdXNlZCBieSBvdGhlciBwcm9ncmFtcy4gXAotbXBnMTIzIGFsc28gY29tZXMgd2l0aCBhIGNvbW1hbmQtbGluZSB0b29sIHdoaWNoIGNhbiBwbGF5YmFjayB1c2luZyBBTFNBLCBQdWxzZUF1ZGlvLCBPU1MsIGFuZCBzZXZlcmFsIG90aGVyIEFQSXMsIFwKLWFuZCBhbHNvIGNhbiB3cml0ZSB0aGUgZGVjb2RlZCBhdWRpbyB0byBXQVYuIgotSE9NRVBBR0UgPSAiaHR0cDovL21wZzEyMy5kZS8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcC9tcGcxMjMvYnVncy8iCi1TRUNUSU9OID0gIm11bHRpbWVkaWEiCi0KLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xZTg2NzUzNjM4ZDNjZjI1MTI1MjhiOTkwNzliYzRmMyIKLQotU1JDX1VSSSA9ICJodHRwczovL3d3dy5tcGcxMjMuZGUvZG93bmxvYWQvJHtCUH0udGFyLmJ6MiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjRkZGUwNDUxMjNhMmFkMWUzODVhMGE4MmMwZWY5MjY4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImRlMjMwM2M4ZWNiNjU1OTNlMzk4MTVjMGEyZjJmMmQ5MWY3MDhjNDNiODVhNTVmZGQxOTM0YzgyZTY3N2NmOGUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi0jIFRoZSBvcHRpb25zIHNob3VsZCBiZSBtdXR1YWxseSBleGNsdXNpdmUgZm9yIGNvbmZpZ3VyYXRpb24gc2NyaXB0LgotIyBJZiBib3RoIGFsc2EgYW5kIHB1bHNlYXVkaW8gYXJlIHNwZWNpZmllZCAoYXMgaW4gdGhlIGRlZmF1bHQgZGlzdHJvIGZlYXR1cmVzKQotIyBwdWxzZWF1ZGlvIHRha2VzIHByZWNlZGVuY2UuCi1QQUNLQUdFQ09ORklHX0FMU0EgPSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWxzYScsIGQpfSIKLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3B1bHNlYXVkaW8nLCAncHVsc2VhdWRpbycsICcke1BBQ0tBR0VDT05GSUdfQUxTQX0nLCBkKX0iCi0KLVBBQ0tBR0VDT05GSUdbYWxzYV0gPSAiLS13aXRoLWRlZmF1bHQtYXVkaW89YWxzYSwsYWxzYS1saWIiCi1QQUNLQUdFQ09ORklHW2VzZF0gPSAiLCxlc291bmQiCi1QQUNLQUdFQ09ORklHW2phY2tdID0gIiwsamFjayIKLVBBQ0tBR0VDT05GSUdbb3BlbmFsXSA9ICIsLG9wZW5hbC1zb2Z0IgotUEFDS0FHRUNPTkZJR1twb3J0YXVkaW9dID0gIiwscG9ydGF1ZGlvLXYxOSIKLVBBQ0tBR0VDT05GSUdbcHVsc2VhdWRpb10gPSAiLS13aXRoLWRlZmF1bHQtYXVkaW89cHVsc2UsLHB1bHNlYXVkaW8iCi1QQUNLQUdFQ09ORklHW3NkbF0gPSAiLCxsaWJzZGwiCi0KLSMgRm9sbG93aW5nIGFyZSBwb3NzaWJsZSBzb3VuZCBvdXRwdXQgbW9kdWxlczoKLSMgYWxzYSBhcnRzIGNvcmVhdWRpbyBkdW1teSBlc2QgamFjayBuYXMgb3BlbmFsIG9zMiBvc3MgcG9ydGF1ZGlvIHB1bHNlIHNkbCBzbmRpbyBzdW4gdGlueWFsc2Egd2luMzIgd2luMzJfd2FzYXBpCi1BVURJT01PRFMgKz0gIiR7QGJiLnV0aWxzLmZpbHRlcignUEFDS0FHRUNPTkZJRycsICdhbHNhIGVzZCBqYWNrIG9wZW5hbCBwb3J0YXVkaW8gc2RsJywgZCl9IgotQVVESU9NT0RTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwdWxzZWF1ZGlvJywgJ3B1bHNlJywgJycsIGQpfSIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS1lbmFibGUtc2hhcmVkIFwKLSAgICAtLXdpdGgtYXVkaW89JyR7QVVESU9NT0RTfScgXAotICAgIC0td2l0aC1tb2R1bGUtc3VmZml4PS5zbyBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnbmVvbicsICctLXdpdGgtY3B1PW5lb24nLCAnJywgZCl9IFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdhbHRpdmVjJywgJy0td2l0aC1jcHU9YWx0aXZlYycsICcnLCBkKX0gXAotIgotCi0jIFRoZSB4ODYgYXNzZW1ibGVyIG9wdGltaXNhdGlvbnMgY29udGFpbnMgdGV4dCByZWxvY2F0aW9ucyBhbmQgdGhlcmUgYXJlIG5vCi0jIHVwc3RyZWFtIHBsYW5zIHRvIGZpeCB0aGVtOiBodHRwOi8vc291cmNlZm9yZ2UubmV0L3AvbXBnMTIzL2J1Z3MvMTY4LwotSU5TQU5FX1NLSVBfJHtQTn1fYXBwZW5kX3g4NiA9ICIgdGV4dHJlbCIKLQotIyBGYWlscyB0byBidWlsZCB3aXRoIHRodW1iLTEgKHFlbXVhcm0pCi0jfCB7c3RhbmRhcmQgaW5wdXR9OiBBc3NlbWJsZXIgbWVzc2FnZXM6Ci0jfCB7c3RhbmRhcmQgaW5wdXR9OjQ3OiBFcnJvcjogc2VsZWN0ZWQgcHJvY2Vzc29yIGRvZXMgbm90IHN1cHBvcnQgVGh1bWIgbW9kZSBgc211bGwgcjUscjYscjcscjQnCi0jfCB7c3RhbmRhcmQgaW5wdXR9OjQ4OiBFcnJvcjogc2hpZnRzIGluIENNUC9NT1YgaW5zdHJ1Y3Rpb25zIGFyZSBvbmx5IHN1cHBvcnRlZCBpbiB1bmlmaWVkIHN5bnRheCAtLSBgbW92IHI1LHI1LGxzciMyNCcKLSMuLi4KLSN8IG1ha2VbM106ICoqKiBbZXF1YWxpemVyLmxvXSBFcnJvciAxCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL21wZzEyMy9tcGcxMjNfMS4yNS42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL21wZzEyMy9tcGcxMjNfMS4yNS42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiODYxOTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbXBnMTIzL21wZzEyM18xLjI1LjYuYmIKQEAgLTAsMCArMSw1MSBAQAorU1VNTUFSWSA9ICJBdWRpbyBkZWNvZGVyIGZvciBNUEVHLTEgTGF5ZXIgMS8yLzMiCitERVNDUklQVElPTiA9ICJUaGUgY29yZSBvZiBtcGcxMjMgaXMgYW4gTVBFRy0xIExheWVyIDEvMi8zIGRlY29kaW5nIGxpYnJhcnksIHdoaWNoIGNhbiBiZSB1c2VkIGJ5IG90aGVyIHByb2dyYW1zLiBcCittcGcxMjMgYWxzbyBjb21lcyB3aXRoIGEgY29tbWFuZC1saW5lIHRvb2wgd2hpY2ggY2FuIHBsYXliYWNrIHVzaW5nIEFMU0EsIFB1bHNlQXVkaW8sIE9TUywgYW5kIHNldmVyYWwgb3RoZXIgQVBJcywgXAorYW5kIGFsc28gY2FuIHdyaXRlIHRoZSBkZWNvZGVkIGF1ZGlvIHRvIFdBVi4iCitIT01FUEFHRSA9ICJodHRwOi8vbXBnMTIzLmRlLyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wL21wZzEyMy9idWdzLyIKK1NFQ1RJT04gPSAibXVsdGltZWRpYSIKKworTElDRU5TRSA9ICJMR1BMdjIuMSIKK0xJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTFlODY3NTM2MzhkM2NmMjUxMjUyOGI5OTA3OWJjNGYzIgorCitTUkNfVVJJID0gImh0dHBzOi8vd3d3Lm1wZzEyMy5kZS9kb3dubG9hZC8ke0JQfS50YXIuYnoyIgorU1JDX1VSSVttZDVzdW1dID0gIjQzMzM2YmVmNzhmNjdjMmU2NmM0ZjZjMjg4Y2ExZWIzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBmMDQ1OGM5Yjg3Nzk5YmMyYzliZjk0NTUyNzljYzRkMzA1ZTI0NWRiNDNiNTFhMzllZjI3YWZlMDI1YzVhOGUiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCisjIFRoZSBvcHRpb25zIHNob3VsZCBiZSBtdXR1YWxseSBleGNsdXNpdmUgZm9yIGNvbmZpZ3VyYXRpb24gc2NyaXB0LgorIyBJZiBib3RoIGFsc2EgYW5kIHB1bHNlYXVkaW8gYXJlIHNwZWNpZmllZCAoYXMgaW4gdGhlIGRlZmF1bHQgZGlzdHJvIGZlYXR1cmVzKQorIyBwdWxzZWF1ZGlvIHRha2VzIHByZWNlZGVuY2UuCitQQUNLQUdFQ09ORklHX0FMU0EgPSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWxzYScsIGQpfSIKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3B1bHNlYXVkaW8nLCAncHVsc2VhdWRpbycsICcke1BBQ0tBR0VDT05GSUdfQUxTQX0nLCBkKX0iCisKK1BBQ0tBR0VDT05GSUdbYWxzYV0gPSAiLS13aXRoLWRlZmF1bHQtYXVkaW89YWxzYSwsYWxzYS1saWIiCitQQUNLQUdFQ09ORklHW2VzZF0gPSAiLCxlc291bmQiCitQQUNLQUdFQ09ORklHW2phY2tdID0gIiwsamFjayIKK1BBQ0tBR0VDT05GSUdbb3BlbmFsXSA9ICIsLG9wZW5hbC1zb2Z0IgorUEFDS0FHRUNPTkZJR1twb3J0YXVkaW9dID0gIiwscG9ydGF1ZGlvLXYxOSIKK1BBQ0tBR0VDT05GSUdbcHVsc2VhdWRpb10gPSAiLS13aXRoLWRlZmF1bHQtYXVkaW89cHVsc2UsLHB1bHNlYXVkaW8iCitQQUNLQUdFQ09ORklHW3NkbF0gPSAiLCxsaWJzZGwiCisKKyMgRm9sbG93aW5nIGFyZSBwb3NzaWJsZSBzb3VuZCBvdXRwdXQgbW9kdWxlczoKKyMgYWxzYSBhcnRzIGNvcmVhdWRpbyBkdW1teSBlc2QgamFjayBuYXMgb3BlbmFsIG9zMiBvc3MgcG9ydGF1ZGlvIHB1bHNlIHNkbCBzbmRpbyBzdW4gdGlueWFsc2Egd2luMzIgd2luMzJfd2FzYXBpCitBVURJT01PRFMgKz0gIiR7QGJiLnV0aWxzLmZpbHRlcignUEFDS0FHRUNPTkZJRycsICdhbHNhIGVzZCBqYWNrIG9wZW5hbCBwb3J0YXVkaW8gc2RsJywgZCl9IgorQVVESU9NT0RTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwdWxzZWF1ZGlvJywgJ3B1bHNlJywgJycsIGQpfSIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS1lbmFibGUtc2hhcmVkIFwKKyAgICAtLXdpdGgtYXVkaW89JyR7QVVESU9NT0RTfScgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ25lb24nLCAnLS13aXRoLWNwdT1uZW9uJywgJycsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnYWx0aXZlYycsICctLXdpdGgtY3B1PWFsdGl2ZWMnLCAnJywgZCl9IFwKKyIKKyMgRmFpbHMgdG8gYnVpbGQgd2l0aCB0aHVtYi0xIChxZW11YXJtKQorI3wge3N0YW5kYXJkIGlucHV0fTogQXNzZW1ibGVyIG1lc3NhZ2VzOgorI3wge3N0YW5kYXJkIGlucHV0fTo0NzogRXJyb3I6IHNlbGVjdGVkIHByb2Nlc3NvciBkb2VzIG5vdCBzdXBwb3J0IFRodW1iIG1vZGUgYHNtdWxsIHI1LHI2LHI3LHI0JworI3wge3N0YW5kYXJkIGlucHV0fTo0ODogRXJyb3I6IHNoaWZ0cyBpbiBDTVAvTU9WIGluc3RydWN0aW9ucyBhcmUgb25seSBzdXBwb3J0ZWQgaW4gdW5pZmllZCBzeW50YXggLS0gYG1vdiByNSxyNSxsc3IjMjQnCisjLi4uCisjfCBtYWtlWzNdOiAqKiogW2VxdWFsaXplci5sb10gRXJyb3IgMQorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8vcHVsc2VhdWRpby1kaXNjdXNzLWlvY2hhbm5lbC1kb24tdC11c2UtdmFyaWFibGUtbGVuZ3RoLWFycmF5LWluLXVuaW9uLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby9wdWxzZWF1ZGlvLWRpc2N1c3MtaW9jaGFubmVsLWRvbi10LXVzZS12YXJpYWJsZS1sZW5ndGgtYXJyYXktaW4tdW5pb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTFiNTZhYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8vcHVsc2VhdWRpby1kaXNjdXNzLWlvY2hhbm5lbC1kb24tdC11c2UtdmFyaWFibGUtbGVuZ3RoLWFycmF5LWluLXVuaW9uLnBhdGNoCkBAIC0wLDAgKzEsNTkgQEAKK0Zyb20gcGF0Y2h3b3JrIFNhdCBGZWIgIDQgMTI6MTk6MDEgMjAxNworQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PSJ1dGYtOCIKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA3Yml0CitTdWJqZWN0OiBbcHVsc2VhdWRpby1kaXNjdXNzXSBpb2NoYW5uZWw6IGRvbid0IHVzZSB2YXJpYWJsZSBsZW5ndGggYXJyYXkgaW4KKyB1bmlvbgorRnJvbTogVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPgorWC1QYXRjaHdvcmstSWQ6IDEzNjg4NQorTWVzc2FnZS1JZDogPDIwMTcwMjA0MTIxOTAxLjE3NDI4LTEtdGFudWtAaWtpLmZpPgorVG86IHB1bHNlYXVkaW8tZGlzY3Vzc0BsaXN0cy5mcmVlZGVza3RvcC5vcmcKK0RhdGU6IFNhdCwgIDQgRmViIDIwMTcgMTQ6MTk6MDEgKzAyMDAKKworQ2xhbmcgZGlkbid0IGxpa2UgdGhlIHZhcmlhYmxlIGxlbmd0aCBhcnJheToKKworcHVsc2Vjb3JlL2lvY2hhbm5lbC5jOjM1ODoxNzogZXJyb3I6IGZpZWxkcyBtdXN0IGhhdmUgYSBjb25zdGFudCBzaXplOgorJ3ZhcmlhYmxlIGxlbmd0aCBhcnJheSBpbiBzdHJ1Y3R1cmUnIGV4dGVuc2lvbiB3aWxsIG5ldmVyIGJlIHN1cHBvcnRlZAorICAgICAgICB1aW50OF90IGRhdGFbQ01TR19TUEFDRShzaXplb2YoaW50KSAqIG5mZCldOworICAgICAgICAgICAgICAgIF4KKworQ29tbWl0IDQ1MWQxZDY3NjIgaW50cm9kdWNlZCB0aGUgdmFyaWFibGUgbGVuZ3RoIGFycmF5IGluIG9yZGVyIHRvIGhhdmUKK3RoZSBjb3JyZWN0IHZhbHVlIGluIG1zZ19jb250cm9sbGVuLiBUaGlzIHBhdGNoIHJldmVydHMgdGhhdCBjb21taXQgYW5kCit1c2VzIGEgZGlmZmVyZW50IHdheSB0byBhY2hpZXZlIHRoZSBzYW1lIGdvYWwuCisKK0J1Z0xpbms6IGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTk5NDU4CistLS0KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKKyBzcmMvcHVsc2Vjb3JlL2lvY2hhbm5lbC5jIHwgMTAgKysrKysrKystLQorIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvcHVsc2Vjb3JlL2lvY2hhbm5lbC5jIGIvc3JjL3B1bHNlY29yZS9pb2NoYW5uZWwuYworaW5kZXggOGFjZTI5N2ZmLi44OTczMzc1MjIgMTAwNjQ0CistLS0gYS9zcmMvcHVsc2Vjb3JlL2lvY2hhbm5lbC5jCisrKysgYi9zcmMvcHVsc2Vjb3JlL2lvY2hhbm5lbC5jCitAQCAtMzU1LDcgKzM1NSw3IEBAIHNzaXplX3QgcGFfaW9jaGFubmVsX3dyaXRlX3dpdGhfZmRzKHBhX2lvY2hhbm5lbCppbywgY29uc3Qgdm9pZCpkYXRhLCBzaXplX3QgbCwKKyAgICAgc3RydWN0IGlvdmVjIGlvdjsKKyAgICAgdW5pb24geworICAgICAgICAgc3RydWN0IGNtc2doZHIgaGRyOworLSAgICAgICAgdWludDhfdCBkYXRhW0NNU0dfU1BBQ0Uoc2l6ZW9mKGludCkgKiBuZmQpXTsKKysgICAgICAgIHVpbnQ4X3QgZGF0YVtDTVNHX1NQQUNFKHNpemVvZihpbnQpICogTUFYX0FOQ0lMX0RBVEFfRkRTKV07CisgICAgIH0gY21zZzsKKyAKKyAgICAgcGFfYXNzZXJ0KGlvKTsKK0BAIC0zODIsNyArMzgyLDEzIEBAIHNzaXplX3QgcGFfaW9jaGFubmVsX3dyaXRlX3dpdGhfZmRzKHBhX2lvY2hhbm5lbCppbywgY29uc3Qgdm9pZCpkYXRhLCBzaXplX3QgbCwKKyAgICAgbWgubXNnX2lvdiA9ICZpb3Y7CisgICAgIG1oLm1zZ19pb3ZsZW4gPSAxOworICAgICBtaC5tc2dfY29udHJvbCA9ICZjbXNnOworLSAgICBtaC5tc2dfY29udHJvbGxlbiA9IHNpemVvZihjbXNnKTsKKysKKysgICAgLyogSWYgd2UgZm9sbG93ZWQgdGhlIGV4YW1wbGUgb24gdGhlIGNtc2cgbWFuIHBhZ2UsIHdlJ2QgdXNlCisrICAgICAqIHNpemVvZihjbXNnLmRhdGEpIGhlcmUsIGJ1dCBpZiBuZmQgPCBNQVhfQU5DSUxfREFUQV9GRFMsIHRoZW4gdGhlIGRhdGEKKysgICAgICogYnVmZmVyIGlzIGxhcmdlciB0aGFuIG5lZWRlZCwgYW5kIHRoZSBrZXJuZWwgZG9lc24ndCBsaWtlIGl0IGlmIHdlIHNldAorKyAgICAgKiBtc2dfY29udHJvbGxlbiB0byBhIGxhcmdlciB0aGFuIG5lY2Vzc2FyeSB2YWx1ZS4gVGhlIGNvbW1pdCBtZXNzYWdlIGZvcgorKyAgICAgKiBjb21taXQgNDUxZDFkNjc2MiBjb250YWlucyBhIGxvbmdlciBleHBsYW5hdGlvbi4gKi8KKysgICAgbWgubXNnX2NvbnRyb2xsZW4gPSBDTVNHX1NQQUNFKHNpemVvZihpbnQpICogbmZkKTsKKyAKKyAgICAgaWYgKChyID0gc2VuZG1zZyhpby0+b2ZkLCAmbWgsIE1TR19OT1NJR05BTCkpID49IDApIHsKKyAgICAgICAgIGlvLT53cml0YWJsZSA9IGlvLT5odW5ndXAgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW9fMTAuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW9fMTAuMC5iYgppbmRleCBmM2E4NTczLi45YTM0YWZhIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvXzEwLjAuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpb18xMC4wLmJiCkBAIC0zLDYgKzMsNyBAQAogU1JDX1VSSSA9ICJodHRwOi8vZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlL3B1bHNlYXVkaW8vcmVsZWFzZXMvJHtCUH0udGFyLnh6IFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtcGFkc3AtTWFrZS1pdC1jb21waWxlLW9uLW11c2wucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1jbGllbnQtY29uZi1BZGQtYWxsb3ctYXV0b3NwYXduLWZvci1yb290LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3B1bHNlYXVkaW8tZGlzY3Vzcy1pb2NoYW5uZWwtZG9uLXQtdXNlLXZhcmlhYmxlLWxlbmd0aC1hcnJheS1pbi11bmlvbi5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly92b2xhdGlsZXMuMDRfcHVsc2UgXAogIgogU1JDX1VSSVttZDVzdW1dID0gIjQ5NTBkMjc5OWJmNTVhYjkxZjZiN2Y5OTBiN2YwOTcxIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3NiYy9zYmNfMS4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3NiYy9zYmNfMS4zLmJiCmluZGV4IDJkN2YzMWIuLjJiYjg5NWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9zYmMvc2JjXzEuMy5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvc2JjL3NiY18xLjMuYmIKQEAgLTIsOCArMiwxMiBAQAogREVTQ1JJUFRJT04gPSAiQmx1ZXRvb3RoIGxvdy1jb21wbGV4aXR5LCBzdWJiYW5kIGNvZGVjIChTQkMpIGxpYnJhcnkuIgogSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cuYmx1ZXoub3JnIgogU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJHUEx2MiIKK0xJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyLjErIgorTElDRU5TRV8ke1BOfSA9ICJMR1BMdjIuMSsiCitMSUNFTlNFXyR7UE59LWV4YW1wbGVzID0gIkdQTHYyKyIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTEyZjg4NGQyYWUxZmY4N2MwOWU1YjdjY2MyYzRjYTdlIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT1mYjUwNGI2N2M1MDMzMWZjNzg3MzRmZWQ5MGZiMGUwOSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvc2JjZW5jLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yNDttZDU9MDhlN2E3MGIxMjdmNDEwMGZmMmNkN2Q2MjkxNDdkOGQgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc2JjL3NiYy5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MjY7bWQ1PTBmNTdkMGRmMjJiMGQ0MDc0NmJkZDI5ODA1YTQzNjFiIgogCiBERVBFTkRTID0gImxpYnNuZGZpbGUxIgpAQCAtMTQsMyArMTgsNiBAQAogU1JDX1VSSVtzaGEyNTZzdW1dID0gImU2MTAyMmNmNTc2ZjE0MTkwMjQxZTcwNzE3NTNmZGFjZGNlNWQxZGVhODlmZmQ3MDQxMTBmYzUwYmU2ODkzMDkiCiAKIGluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitQQUNLQUdFUyA9KyAiJHtQTn0tZXhhbXBsZXMiCitGSUxFU18ke1BOfS1leGFtcGxlcyArPSAiJHtiaW5kaXJ9LyoiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvc3BlZXgvc3BlZXhfMS4yLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvc3BlZXgvc3BlZXhfMS4yLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTk2MzZiYgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9zcGVleC9zcGVleF8xLjIuMC5iYgpAQCAtMCwwICsxLDIwIEBACitTVU1NQVJZID0gIlNwZWVjaCBBdWRpbyBDb2RlYyIKK0RFU0NSSVBUSU9OID0gIlNwZWV4IGlzIGFuIE9wZW4gU291cmNlL0ZyZWUgU29mdHdhcmUgcGF0ZW50LWZyZWUgYXVkaW8gY29tcHJlc3Npb24gZm9ybWF0IGRlc2lnbmVkIGZvciBzcGVlY2guIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5zcGVleC5vcmciCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTMxNDY0OWQ4YmE5ZGQ3MDQ1ZGZiNjY4M2YyOThkMGE4IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvc3BlZXgvc3BlZXguaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTM0O21kNT1lZjhjOGVhNGY3MTk4ZDcxY2YzNTA5YzZlZDA1ZWE1MCIKK0RFUEVORFMgPSAibGlib2dnIHNwZWV4ZHNwIgorCitTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMueGlwaC5vcmcvcmVsZWFzZXMvc3BlZXgvc3BlZXgtJHtQVn0udGFyLmd6IgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAic3BlZXgtKD9QPHB2ZXI+XGQrKFwuXGQrKSspXC50YXIiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4YWI3YmIyNTg5MTEwZGZhZjBlZDdmYTc3NTdkYzQ5YyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlYWFlOGFmMGFjNzQyZGM3ZDU0MmM5NDM5YWM3MmYxZjM4NWNlODM4MzkyZGM4NDljYWU0NTM2YWY5MjEwMDk0IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgbGliX3BhY2thZ2UKKworRVhUUkFfT0VDT05GID0gIlwKKyAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1RBUkdFVF9GUFUnLCAnc29mdCcsICctLWVuYWJsZS1maXhlZC1wb2ludCAtLWRpc2FibGUtZmxvYXQtYXBpIC0tZGlzYWJsZS12YnInLCAnJywgZCl9IFwKKyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9zcGVleC9zcGVleF8xLjJyYzIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvc3BlZXgvc3BlZXhfMS4ycmMyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmN2QyM2RiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9zcGVleC9zcGVleF8xLjJyYzIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1TVU1NQVJZID0gIlNwZWVjaCBBdWRpbyBDb2RlYyIKLURFU0NSSVBUSU9OID0gIlNwZWV4IGlzIGFuIE9wZW4gU291cmNlL0ZyZWUgU29mdHdhcmUgcGF0ZW50LWZyZWUgYXVkaW8gY29tcHJlc3Npb24gZm9ybWF0IGRlc2lnbmVkIGZvciBzcGVlY2guIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5zcGVleC5vcmciCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTMxNDY0OWQ4YmE5ZGQ3MDQ1ZGZiNjY4M2YyOThkMGE4IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvc3BlZXgvc3BlZXguaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTM0O21kNT1lZjhjOGVhNGY3MTk4ZDcxY2YzNTA5YzZlZDA1ZWE1MCIKLURFUEVORFMgPSAibGlib2dnIHNwZWV4ZHNwIgotCi1TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMudXMueGlwaC5vcmcvcmVsZWFzZXMvc3BlZXgvc3BlZXgtJHtQVn0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNmFlN2RiM2JhYjAxZTFkNGI4NmJhY2ZhOGNhMzNlODEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2FhMjdjNzI0N2ZmMTVjODUyMWMyYWUwZWEyMTk4N2M5ZTk3MTBhOGYyZDM0NDhlOGI3OWRhOTgwNmJjZTg5MSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGxpYl9wYWNrYWdlCi0KLUVYVFJBX09FQ09ORiA9ICJcCi0gICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUQVJHRVRfRlBVJywgJ3NvZnQnLCAnLS1lbmFibGUtZml4ZWQtcG9pbnQgLS1kaXNhYmxlLWZsb2F0LWFwaSAtLWRpc2FibGUtdmJyJywgJycsIGQpfSBcCi0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEveDI2NC94MjY0X2dpdC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS94MjY0L3gyNjRfZ2l0LmJiCmluZGV4IDY5ZjUyYzIuLmM1NDc2YzcgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS94MjY0L3gyNjRfZ2l0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS94MjY0L3gyNjRfZ2l0LmJiCkBAIC0xMiw2ICsxMiw3IEBACiAgICAgICAgICAgIGZpbGU6Ly9kb24tdC1kZWZhdWx0LXRvLWNvcnRleC1hOS13aXRoLW5lb24ucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vRml4LVgzMi1idWlsZC1ieS1kaXNhYmxpbmctYXNtLnBhdGNoIFwKICAgICAgICAgICAgIgorVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCiAKIFNSQ1JFViA9ICIyYjc0MWY4MWU1MWY5MmQwNTNkODdhNDlmNTlmZjEwMjY1NTNhMGY2IgogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vaW1hZ2VzL2NvcmUtaW1hZ2Utc2F0by1zZGstcHRlc3QuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vaW1hZ2VzL2NvcmUtaW1hZ2Utc2F0by1zZGstcHRlc3QuYmIKaW5kZXggOTNlNWE0ZS4uNTMxNTcxZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL2ltYWdlcy9jb3JlLWltYWdlLXNhdG8tc2RrLXB0ZXN0LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9pbWFnZXMvY29yZS1pbWFnZS1zYXRvLXNkay1wdGVzdC5iYgpAQCAtNCwzICs0LDggQEAKIAogSU1BR0VfRkVBVFVSRVMgKz0gInB0ZXN0LXBrZ3MiCiAKKyMgVGhpcyBpbWFnZSBpcyBzdWZmaWNpZW50bHkgbGFyZ2UgKH4zR0IpIHRoYXQgaXQgY2FuJ3QgYWN0dWFsbHkgZml0IGluIGEgbGl2ZQorIyBpbWFnZSAod2hpY2ggaGFzIGEgNEdCIGxpbWl0KSwgc28gbnVsbGlmeSB0aGUgb3ZlcmhlYWQgZmFjdG9yICgxLjN4IG91dCBvZiB0aGUKKyMgYm94KSBhbmQgZXhwbGljaXRseSBhZGQganVzdCA1MDBNQi4KK0lNQUdFX09WRVJIRUFEX0ZBQ1RPUiA9ICIxLjAiCitJTUFHRV9ST09URlNfRVhUUkFfU1BBQ0UgPSAiNTI0Mjg4IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL2ltYWdlcy9jb3JlLWltYWdlLXNhdG8uYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vaW1hZ2VzL2NvcmUtaW1hZ2Utc2F0by5iYgppbmRleCA5OWRhZDExLi5iODk3OTUwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vaW1hZ2VzL2NvcmUtaW1hZ2Utc2F0by5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vaW1hZ2VzL2NvcmUtaW1hZ2Utc2F0by5iYgpAQCAtOCw3ICs4LDUgQEAKIAogaW5oZXJpdCBjb3JlLWltYWdlCiAKLUlNQUdFX0lOU1RBTEwgKz0gInBhY2thZ2Vncm91cC1jb3JlLXgxMS1zYXRvLWdhbWVzIgotCiBUT09MQ0hBSU5fSE9TVF9UQVNLX2FwcGVuZCA9ICIgbmF0aXZlc2RrLWludGx0b29sIG5hdGl2ZXNkay1nbGliLTIuMCIKIFRPT0xDSEFJTl9IT1NUX1RBU0tfcmVtb3ZlX3Rhc2stcG9wdWxhdGUtc2RrLWV4dCA9ICIgbmF0aXZlc2RrLWludGx0b29sIG5hdGl2ZXNkay1nbGliLTIuMCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC1kZXNrdG9wL21hdGNoYm94LWRlc2t0b3BfMi4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL21hdGNoYm94LWRlc2t0b3AvbWF0Y2hib3gtZGVza3RvcF8yLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5YTdiNGIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL21hdGNoYm94LWRlc2t0b3AvbWF0Y2hib3gtZGVza3RvcF8yLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1TVU1NQVJZID0gIk1hdGNoYm94IFdpbmRvdyBNYW5hZ2VyIERlc2t0b3AiCi1IT01FUEFHRSA9ICJodHRwOi8vbWF0Y2hib3gtcHJvamVjdC5vcmcvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVnemlsbGEueW9jdG9wcm9qZWN0Lm9yZy8iCi0KLUxJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9kZXNrdG9wLmM7ZW5kbGluZT0yMDttZDU9MzZjOWJmMjk1ZTYwMDdmMzQyMzA5NWY0MDVhZjVhMmQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL21haW4uYztlbmRsaW5lPTE5O21kNT0yMDQ0MjQ0Zjk3YTE5NWMyNWI3ZGM2MDJhYzdlOWEwMCIKLQotREVQRU5EUyA9ICJnbm9tZS1jb21tb24tbmF0aXZlIGd0ayszIHN0YXJ0dXAtbm90aWZpY2F0aW9uIGRidXMiCi1TRUNUSU9OID0gIngxMS93bSIKLQotIyBTUkNSRVYgdGFnZ2VkIDIuMQotU1JDUkVWID0gImM4NDczNTE5YTBmMzc0ODhiOGIzZTgzOWUyNzViMDAwY2RkZTBiODAiCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnLyR7QlBOfS0yIFwKLSAgICAgICAgICAgZmlsZTovL3Zmb2xkZXJzLyogXAotICAgICAgICAgICAiCi0KLUVYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1zdGFydHVwLW5vdGlmaWNhdGlvbiAtLXdpdGgtZGJ1cyIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGRpc3Ryb19mZWF0dXJlc19jaGVjawotCi0jIFRoZSBzdGFydHVwLW5vdGlmaWNhdGlvbiByZXF1aXJlcyB4MTEgaW4gRElTVFJPX0ZFQVRVUkVTCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L21hdGNoYm94L3Zmb2xkZXJzLwotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3Zmb2xkZXJzLyogJHtEfSR7ZGF0YWRpcn0vbWF0Y2hib3gvdmZvbGRlcnMvCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L21hdGNoYm94L3Zmb2xkZXJzLyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC1kZXNrdG9wL21hdGNoYm94LWRlc2t0b3BfMi4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL21hdGNoYm94LWRlc2t0b3AvbWF0Y2hib3gtZGVza3RvcF8yLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjBjZGZhMgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9tYXRjaGJveC1kZXNrdG9wL21hdGNoYm94LWRlc2t0b3BfMi4yLmJiCkBAIC0wLDAgKzEsMzMgQEAKK1NVTU1BUlkgPSAiTWF0Y2hib3ggV2luZG93IE1hbmFnZXIgRGVza3RvcCIKK0hPTUVQQUdFID0gImh0dHA6Ly9tYXRjaGJveC1wcm9qZWN0Lm9yZy8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnLyIKKworTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2Rlc2t0b3AuYztlbmRsaW5lPTIwO21kNT0zNmM5YmYyOTVlNjAwN2YzNDIzMDk1ZjQwNWFmNWEyZCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvbWFpbi5jO2VuZGxpbmU9MTk7bWQ1PTIwNDQyNDRmOTdhMTk1YzI1YjdkYzYwMmFjN2U5YTAwIgorCitERVBFTkRTID0gImd0ayszIHN0YXJ0dXAtbm90aWZpY2F0aW9uIGRidXMiCitTRUNUSU9OID0gIngxMS93bSIKKworIyBTUkNSRVYgdGFnZ2VkIDIuMgorU1JDUkVWID0gIjZiYzY3ZDA5ZGE0MTQ3ZTU1NTJmZTMwMDExYTA1YTJjNTlkMmY3NzciCitTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnLyR7QlBOfS0yIFwKKyAgICAgICAgICAgZmlsZTovL3Zmb2xkZXJzLyogXAorICAgICAgICAgICAiCisKK0VYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1zdGFydHVwLW5vdGlmaWNhdGlvbiAtLXdpdGgtZGJ1cyIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGRpc3Ryb19mZWF0dXJlc19jaGVjaworCisjIFRoZSBzdGFydHVwLW5vdGlmaWNhdGlvbiByZXF1aXJlcyB4MTEgaW4gRElTVFJPX0ZFQVRVUkVTCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L21hdGNoYm94L3Zmb2xkZXJzLworICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3Zmb2xkZXJzLyogJHtEfSR7ZGF0YWRpcn0vbWF0Y2hib3gvdmZvbGRlcnMvCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L21hdGNoYm94L3Zmb2xkZXJzLyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXgxMS1zYXRvLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUteDExLXNhdG8uYmIKaW5kZXggNmZiMWI2Ny4uOTdjY2VkNyAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUteDExLXNhdG8uYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUteDExLXNhdG8uYmIKQEAgLTE5LDcgKzE5LDYgQEAKICAgICAiCiAKIE5FVFdPUktfTUFOQUdFUiA/PSAiY29ubm1hbi1nbm9tZSIKLU5FVFdPUktfTUFOQUdFUl9saWJjLXVjbGliYyA9ICIiCiAKIFNVTU1BUllfJHtQTn0tYmFzZSA9ICJTYXRvIGRlc2t0b3AgLSBiYXNlIHBhY2thZ2VzIgogUkRFUEVORFNfJHtQTn0tYmFzZSA9ICJcCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vcHV6emxlcy9maWxlcy8wMDAxLVVzZS1Xbm8tZXJyb3ItZm9ybWF0LW92ZXJmbG93LWlmLXRoZS1jb21waWxlci1zdXBwb3IucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vcHV6emxlcy9maWxlcy8wMDAxLVVzZS1Xbm8tZXJyb3ItZm9ybWF0LW92ZXJmbG93LWlmLXRoZS1jb21waWxlci1zdXBwb3IucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQwYTNiMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL2ZpbGVzLzAwMDEtVXNlLVduby1lcnJvci1mb3JtYXQtb3ZlcmZsb3ctaWYtdGhlLWNvbXBpbGVyLXN1cHBvci5wYXRjaApAQCAtMCwwICsxLDMyIEBACitGcm9tIDMzNzc5OWU0MDM1MGIzZGIyNDQxY2M5OGY2NWVjMzZhNzRkZmIzNTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyMSBBcHIgMjAxNyAxMjoxODowOCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBVc2UgLVduby1lcnJvcj1mb3JtYXQtb3ZlcmZsb3c9IGlmIHRoZSBjb21waWxlciBzdXBwb3J0cyBpdAorCit3ZSBuZWVkIHRoaXMgd2FybmluZyB0byBiZSBzdXBwcmVzc2VkIHdpdGggZ2NjNysKK2hvd2V2ZXIgb2xkZXIgY29tcGlsZXJzIGRvbnQgc3VwcG9ydCBpdCBzbyB3ZSBuZWVkCithIHdheSB0byBkaXNibGUgaXQgb25seSBpZiBjb21waWxlciBzdXBwb3J0cyBpdAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggM2EzOGM5NS4uYmI5MDM1ZSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNDIsNyArNDIsNyBAQCBmaQorIGlmIHRlc3QgIngkR0NDIiA9ICJ4eWVzIjsgdGhlbgorICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgdXNhYmxlIGdjYyB3YXJuaW5nIGZsYWdzXSkKKyAgIGdjY3dhcm5pbmdmbGFncz0KKy0gIGZvciBmbGFnIGluIC1XYWxsIC1XZXJyb3IgLXN0ZD1jODkgLXBlZGFudGljOyBkbworKyAgZm9yIGZsYWcgaW4gLVdhbGwgLVdlcnJvciAtc3RkPWM4OSAtcGVkYW50aWMgLVduby1lcnJvcj1mb3JtYXQtb3ZlcmZsb3c9OyBkbworICAgICBhY19zYXZlX0NGTEFHUz0iJENGTEFHUyIKKyAgICAgYWNfc2F2ZV9MSUJTPSIkTElCUyIKKyAgICAgQ0ZMQUdTPSIkQ0ZMQUdTJGdjY3dhcm5pbmdmbGFncyAkZmxhZyAkR1RLX0NGTEFHUyIKKy0tIAorMi4xMi4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL3B1enpsZXNfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3B1enpsZXMvcHV6emxlc19naXQuYmIKaW5kZXggYTI1YzAwNy4uZGVjZDJhOCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3B1enpsZXMvcHV6emxlc19naXQuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3B1enpsZXMvcHV6emxlc19naXQuYmIKQEAgLTE0LDcgKzE0LDkgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLWxhYnMtaW5zdGVhZC1vZi1hYnMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1wYWxpc2FkZS1GaXgtd2FybmluZ3Mtd2l0aC1jbGFuZy1vbi1hcm0ucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1DbGFyaWZ5LWNvbmRpdGlvbnMtdG8tYXZvaWQtY29tcGlsZXItZXJyb3JzLnBhdGNoIFwKLSIKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLVduby1lcnJvci1mb3JtYXQtb3ZlcmZsb3ctaWYtdGhlLWNvbXBpbGVyLXN1cHBvci5wYXRjaCBcCisgICAgICAgICAgICIKK1VQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgogU1JDUkVWID0gIjhkZmU1Y2VjMzFlNzg0ZTRlY2UyOTU1ZWNjOGNjMzVlZTdlOGZiYjMiCiBQRSA9ICIxIgogUFYgPSAiMC4wK2dpdCR7U1JDUFZ9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvMDAwMS1PcHRpb25zR1RLLmNtYWtlLWRyb3AtdGhlLWhhcmRjb2RlZC1pbnRyb3NwZWN0aW9uLWd0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvMDAwMS1PcHRpb25zR1RLLmNtYWtlLWRyb3AtdGhlLWhhcmRjb2RlZC1pbnRyb3NwZWN0aW9uLWd0LnBhdGNoCmluZGV4IDkzYTY5YzAuLjBmNmVlZWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrLzAwMDEtT3B0aW9uc0dUSy5jbWFrZS1kcm9wLXRoZS1oYXJkY29kZWQtaW50cm9zcGVjdGlvbi1ndC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay8wMDAxLU9wdGlvbnNHVEsuY21ha2UtZHJvcC10aGUtaGFyZGNvZGVkLWludHJvc3BlY3Rpb24tZ3QucGF0Y2gKQEAgLTksNiArOSw4IEBACiB0aHJvdWdoIHRoZSB1c2Ugb2YgcWVtdSB0YXJnZXQgZW11bGF0aW9uLgogCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICBTb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZSB8IDYgLS0tLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDYgZGVsZXRpb25zKC0pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0a18yLjE4LjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0a18yLjE4LjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2NGFlZTIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGtfMi4xOC41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTIxICswLDAgQEAKLVNVTU1BUlkgPSAiV2ViS2l0IHdlYiByZW5kZXJpbmcgZW5naW5lIGZvciB0aGUgR1RLKyBwbGF0Zm9ybSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cud2Via2l0Z3RrLm9yZy8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9idWdzLndlYmtpdC5vcmcvIgotCi1MSUNFTlNFID0gIkJTRCAmIExHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ09QWUlORy5MSUI7bWQ1PWQwYzZkNjM5N2E1ZDg0Mjg2ZGRhNzU4ZGE1N2JkNjkxIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL1NvdXJjZS9XZWJDb3JlL0xJQ0VOU0UtQVBQTEU7bWQ1PTQ2NDZmOTAwODJjNDBiY2YyOThjMjg1ZjhiYWIwYjEyIFwKLQkJICAgIGZpbGU6Ly9Tb3VyY2UvV2ViQ29yZS9MSUNFTlNFLUxHUEwtMjttZDU9MzYzNTdmZmRlMmI2NGFlMTc3YjI0OTQ0NDViNzlkMjEgXAotCQkgICAgZmlsZTovL1NvdXJjZS9XZWJDb3JlL0xJQ0VOU0UtTEdQTC0yLjE7bWQ1PWE3NzhhMzNlZjMzOGFiYmFmOGI4YTdjMzZiNmVlYzgwIFwKLQkJICAgIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cud2Via2l0Z3RrLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRmluZEdPYmplY3RJbnRyb3NwZWN0aW9uLmNtYWtlLXByZWZpeC12YXJpYWJsZXMtb2J0YS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVdoZW4tYnVpbGRpbmctaW50cm9zcGVjdGlvbi1maWxlcy1hZGQtQ01BS0VfQ19GTEFHUy0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1PcHRpb25zR1RLLmNtYWtlLWRyb3AtdGhlLWhhcmRjb2RlZC1pbnRyb3NwZWN0aW9uLWd0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LXJhY3ktcGFyYWxsZWwtYnVpbGQtb2YtV2ViS2l0Mi00LjAuZ2lyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVHdlYWstZ3RrZG9jLXNldHRpbmdzLXNvLXRoYXQtZ3RrZG9jLWdlbmVyYXRpb24td29yay5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly94MzJfc3VwcG9ydC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9jcm9zcy1jb21waWxlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RldGVjdC1hdG9taWNzLWR1cmluZy1jb25maWd1cmUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1XZWJLaXRNYWNyb3MtQXBwZW5kLXRvLUktYW5kLW5vdC10by1pc3lzdGVtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImFmMThjMmNmYTAwY2FkZmQwYjRkOGRiMjFjYWIwMTFkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBjNmQ4MGNjN2ViNWQzMmY4MDYzMDQxZmExMWExYTZmMTdhMjk3NjVjMmY2OWM2YmM4NjJjZDQ3YzJkNTM5YjgiCi0KLWluaGVyaXQgY21ha2UgcGtnY29uZmlnIGdvYmplY3QtaW50cm9zcGVjdGlvbiBwZXJsbmF0aXZlIGRpc3Ryb19mZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ3RrLWRvYwotCi0jIGRlcGVuZHMgb24gbGlieHQKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCi0KLURFUEVORFMgPSAiemxpYiBsaWJzb3VwLTIuNCBjdXJsIGxpYnhtbDIgY2Fpcm8gbGlieHNsdCBsaWJ4dCBsaWJpZG4gbGliZ2NyeXB0IFwKLSAgICAgICAgICAgZ3RrKzMgZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgZmxleC1uYXRpdmUgZ3BlcmYtbmF0aXZlIHNxbGl0ZTMgXAotCSAgIHBhbmdvIGljdSBiaXNvbi1uYXRpdmUgZ2F3ayBpbnRsdG9vbC1uYXRpdmUgbGlid2VicCBcCi0JICAgYXRrIHVkZXYgaGFyZmJ1enoganBlZyBsaWJwbmcgcHVsc2VhdWRpbyBsaWJyc3ZnIGxpYnRoZW9yYSBsaWJ2b3JiaXMgbGlieGNvbXBvc2l0ZSBsaWJ4dHN0IFwKLQkgICBydWJ5LW5hdGl2ZSBsaWJub3RpZnkgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkIFwKLQkgICBnZXR0ZXh0LW5hdGl2ZSBnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUgbGlidGFzbjEgXAotICAgICAgICAgICIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3gxMScsICd3YXlsYW5kJyAsZCl9IFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCcsICd3ZWJnbCBvcGVuZ2wnLCAnJyAsZCl9IFwKLSAgICAgICAgICAgICAgICAgICBlbmNoYW50IFwKLSAgICAgICAgICAgICAgICAgICBsaWJzZWNyZXQgXAotICAgICAgICAgICAgICAgICAgIgotCi1QQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIi1ERU5BQkxFX1dBWUxBTkRfVEFSR0VUPU9OLC1ERU5BQkxFX1dBWUxBTkRfVEFSR0VUPU9GRix3YXlsYW5kIgotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi1ERU5BQkxFX1gxMV9UQVJHRVQ9T04sLURFTkFCTEVfWDExX1RBUkdFVD1PRkYsdmlydHVhbC9saWJ4MTEiCi1QQUNLQUdFQ09ORklHW2dlb2NsdWVdID0gIi1ERU5BQkxFX0dFT0xPQ0FUSU9OPU9OLC1ERU5BQkxFX0dFT0xPQ0FUSU9OPU9GRixnZW9jbHVlIgotUEFDS0FHRUNPTkZJR1tlbmNoYW50XSA9ICItREVOQUJMRV9TUEVMTENIRUNLPU9OLC1ERU5BQkxFX1NQRUxMQ0hFQ0s9T0ZGLGVuY2hhbnQiCi1QQUNLQUdFQ09ORklHW2d0azJdID0gIi1ERU5BQkxFX1BMVUdJTl9QUk9DRVNTX0dUSzI9T04sLURFTkFCTEVfUExVR0lOX1BST0NFU1NfR1RLMj1PRkYsZ3RrKyIKLVBBQ0tBR0VDT05GSUdbZ2xlczJdID0gIi1ERU5BQkxFX0dMRVMyPU9OLC1ERU5BQkxFX0dMRVMyPU9GRix2aXJ0dWFsL2xpYmdsZXMyIgotUEFDS0FHRUNPTkZJR1t3ZWJnbF0gPSAiLURFTkFCTEVfV0VCR0w9T04sLURFTkFCTEVfV0VCR0w9T0ZGLHZpcnR1YWwvbGliZ2wiCi1QQUNLQUdFQ09ORklHW29wZW5nbF0gPSAiLURFTkFCTEVfT1BFTkdMPU9OLC1ERU5BQkxFX09QRU5HTD1PRkYsdmlydHVhbC9saWJnbCIKLVBBQ0tBR0VDT05GSUdbbGlic2VjcmV0XSA9ICItRFVTRV9MSUJTRUNSRVQ9T04sLURVU0VfTElCU0VDUkVUPU9GRixsaWJzZWNyZXQiCi1QQUNLQUdFQ09ORklHW2xpYmh5cGhlbl0gPSAiLURVU0VfTElCSFlQSEVOPU9OLC1EVVNFX0xJQkhZUEhFTj1PRkYsbGliaHlwaGVuIgotCi1FWFRSQV9PRUNNQUtFID0gIiBcCi0JCS1EUE9SVD1HVEsgXAotCQktRENNQUtFX0JVSUxEX1RZUEU9UmVsZWFzZSBcCi0JCSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHSV9EQVRBX0VOQUJMRUQnLCAnVHJ1ZScsICctREVOQUJMRV9JTlRST1NQRUNUSU9OPU9OJywgJy1ERU5BQkxFX0lOVFJPU1BFQ1RJT049T0ZGJywgZCl9IFwKLQkJJHtAYmIudXRpbHMuY29udGFpbnMoJ0dUS0RPQ19FTkFCTEVEJywgJ1RydWUnLCAnLURFTkFCTEVfR1RLRE9DPU9OJywgJy1ERU5BQkxFX0dUS0RPQz1PRkYnLCBkKX0gXAotCQktREVOQUJMRV9NSU5JQlJPV1NFUj1PTiBcCi0gICAgICAgICAgICAgICAgLURQWVRIT05fRVhFQ1VUQUJMRT1gd2hpY2ggcHl0aG9uYCBcCi0JCSIKLQotIyBHTC9HTEVTIGhlYWRlciBjbGFzaDogYm90aCBkZWZpbmUgdGhlIHNhbWUgdGhpbmcsIGRpZmZlcmVudGx5LCBvbiAzMiBiaXQgeDg2Ci1FWFRSQV9PRUNNQUtFX2FwcGVuZF94ODYgPSAiIC1EVVNFX0dTVFJFQU1FUl9HTD1PRkYgIgotRVhUUkFfT0VDTUFLRV9hcHBlbmRfeDg2LXgzMiA9ICIgLURVU0VfR1NUUkVBTUVSX0dMPU9GRiAiCi0KLSMgSmF2YXNjcmlwdCBKSVQgaXMgbm90IHN1cHBvcnRlZCBvbiBwb3dlcnBjCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF9wb3dlcnBjID0gIiAtREVOQUJMRV9KSVQ9T0ZGICIKLUVYVFJBX09FQ01BS0VfYXBwZW5kX3Bvd2VycGM2NCA9ICIgLURFTkFCTEVfSklUPU9GRiAiCi0KLSMgQVJNIEpJVCBjb2RlIGRvZXMgbm90IGJ1aWxkIG9uIEFSTXY0LzUvNiBhbnltb3JlCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF9hcm12NSA9ICIgLURFTkFCTEVfSklUPU9GRiAiCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF9hcm12NiA9ICIgLURFTkFCTEVfSklUPU9GRiAiCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF9hcm12NCA9ICIgLURFTkFCTEVfSklUPU9GRiAiCi0KLSMgYmludXRpbHMgMi4yNS4xIGhhcyBhIGJ1ZyBvbiBhYXJjaDY0OgotIyBodHRwczovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0xODQzMAotRVhUUkFfT0VDTUFLRV9hcHBlbmRfYWFyY2g2NCA9ICIgLURVU0VfTERfR09MRD1PRkYgIgotRVhUUkFfT0VDTUFLRV9hcHBlbmRfbWlwc2FyY2ggPSAiIC1EVVNFX0xEX0dPTEQ9T0ZGICIKLUVYVFJBX09FQ01BS0VfYXBwZW5kX3Bvd2VycGMgPSAiIC1EVVNFX0xEX0dPTEQ9T0ZGICIKLUVYVFJBX09FQ01BS0VfYXBwZW5kX3Rvb2xjaGFpbi1jbGFuZyA9ICIgLURVU0VfTERfR09MRD1PRkYgIgotCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF9hYXJjaDY0ID0gIiAtRFdURl9DUFVfQVJNNjRfQ09SVEVYQTUzPU9OIgotCi0jIEpJVCBub3Qgc3VwcG9ydGVkIG9uIE1JUFMgZWl0aGVyCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF9taXBzYXJjaCA9ICIgLURFTkFCTEVfSklUPU9GRiAiCi0KLSMgSklUIG5vdCBzdXBwb3J0ZWQgb24gWDMyCi0jIEFuIGF0dGVtcHQgd2FzIG1hZGUgdG8gdXBzdHJlYW0gSklUIHN1cHBvcnQgZm9yIHgzMiBpbgotIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNDUwLCBidXQgdGhpcyB3YXMgY2xvc2VkIGFzCi0jIHVucmVzb2x2ZWQgZHVlIHRvIGxpbWl0ZWQgWDMyIGFkb3B0aW9uLgotRVhUUkFfT0VDTUFLRV9hcHBlbmRfeDg2LXgzMiA9ICIgLURFTkFCTEVfSklUPU9GRiAiCi0KLVNFQ1VSSVRZX0NGTEFHU19yZW1vdmVfYWFyY2g2NCA9ICItZnBpZSIKLVNFQ1VSSVRZX0NGTEFHU19hcHBlbmRfYWFyY2g2NCA9ICIgLWZQSUUiCi0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vd2Via2l0Mmd0ay00LjAvaW5qZWN0ZWQtYnVuZGxlL2xpYndlYmtpdDJndGtpbmplY3RlZGJ1bmRsZS5zbyIKLQotUlJFQ09NTUVORFNfJHtQTn0gKz0gImNhLWNlcnRpZmljYXRlcyBzaGFyZWQtbWltZS1pbmZvIgotCi0jIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8yMDM3MC8KLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY2ID0gImFybSIKLQotIyBodHRwczovL2J1Z3ppbGxhLnlvY3RvcHJvamVjdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0NzQKLSMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTg4MAotIyBKU0MgSklUIGNhbiBidWlsZCBvbiBBUk12NyB3aXRoIC1tYXJtLCBidXQgZG9lc24ndCB3b3JrIG9uIHJ1bnRpbWUuCi0jIFVwc3RyZWFtIG9ubHkgdGVzdHMgcmVndWxhcmx5IHRoZSBKU0MgSklUIG9uIEFSTXY3IHdpdGggVGh1bWIyICgtbXRodW1iKS4KLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjdhID0gInRodW1iIgotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12N3IgPSAidGh1bWIiCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY3dmUgPSAidGh1bWIiCi0KLSMgcWVtdTogdW5jYXVnaHQgdGFyZ2V0IHNpZ25hbCAxMSAoU2VnbWVudGF0aW9uIGZhdWx0KSAtIGNvcmUgZHVtcGVkCi0jIFNlZ21lbnRhdGlvbiBmYXVsdAotR0lfREFUQV9FTkFCTEVEX2FybXY3YSA9ICJGYWxzZSIKLUdJX0RBVEFfRU5BQkxFRF9hcm12N3ZlID0gIkZhbHNlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGtfMi4xOC42LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGtfMi4xOC42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmMGZmOGYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0a18yLjE4LjYuYmIKQEAgLTAsMCArMSwxMjEgQEAKK1NVTU1BUlkgPSAiV2ViS2l0IHdlYiByZW5kZXJpbmcgZW5naW5lIGZvciB0aGUgR1RLKyBwbGF0Zm9ybSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cud2Via2l0Z3RrLm9yZy8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9idWdzLndlYmtpdC5vcmcvIgorCitMSUNFTlNFID0gIkJTRCAmIExHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ09QWUlORy5MSUI7bWQ1PWQwYzZkNjM5N2E1ZDg0Mjg2ZGRhNzU4ZGE1N2JkNjkxIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL1NvdXJjZS9XZWJDb3JlL0xJQ0VOU0UtQVBQTEU7bWQ1PTQ2NDZmOTAwODJjNDBiY2YyOThjMjg1ZjhiYWIwYjEyIFwKKwkJICAgIGZpbGU6Ly9Tb3VyY2UvV2ViQ29yZS9MSUNFTlNFLUxHUEwtMjttZDU9MzYzNTdmZmRlMmI2NGFlMTc3YjI0OTQ0NDViNzlkMjEgXAorCQkgICAgZmlsZTovL1NvdXJjZS9XZWJDb3JlL0xJQ0VOU0UtTEdQTC0yLjE7bWQ1PWE3NzhhMzNlZjMzOGFiYmFmOGI4YTdjMzZiNmVlYzgwIFwKKwkJICAgIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cud2Via2l0Z3RrLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRmluZEdPYmplY3RJbnRyb3NwZWN0aW9uLmNtYWtlLXByZWZpeC12YXJpYWJsZXMtb2J0YS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVdoZW4tYnVpbGRpbmctaW50cm9zcGVjdGlvbi1maWxlcy1hZGQtQ01BS0VfQ19GTEFHUy0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1PcHRpb25zR1RLLmNtYWtlLWRyb3AtdGhlLWhhcmRjb2RlZC1pbnRyb3NwZWN0aW9uLWd0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LXJhY3ktcGFyYWxsZWwtYnVpbGQtb2YtV2ViS2l0Mi00LjAuZ2lyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVHdlYWstZ3RrZG9jLXNldHRpbmdzLXNvLXRoYXQtZ3RrZG9jLWdlbmVyYXRpb24td29yay5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly94MzJfc3VwcG9ydC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9jcm9zcy1jb21waWxlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RldGVjdC1hdG9taWNzLWR1cmluZy1jb25maWd1cmUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1XZWJLaXRNYWNyb3MtQXBwZW5kLXRvLUktYW5kLW5vdC10by1pc3lzdGVtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImMxYTU0ODU5NTEzNWVlNzVhZDNiZjJlMThhYzgzMTEyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkzOTEyY2MyZjQwZjEyZTQ1MmJlMWNhNGJhYmRiZGFhYzBlYzRmODI4ZDQ0MTI1N2E2YjA2YzI5NjNiYmFjM2MiCisKK2luaGVyaXQgY21ha2UgcGtnY29uZmlnIGdvYmplY3QtaW50cm9zcGVjdGlvbiBwZXJsbmF0aXZlIGRpc3Ryb19mZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ3RrLWRvYworCisjIGRlcGVuZHMgb24gbGlieHQKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCisKK0RFUEVORFMgPSAiemxpYiBsaWJzb3VwLTIuNCBjdXJsIGxpYnhtbDIgY2Fpcm8gbGlieHNsdCBsaWJ4dCBsaWJpZG4gbGliZ2NyeXB0IFwKKyAgICAgICAgICAgZ3RrKzMgZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgZmxleC1uYXRpdmUgZ3BlcmYtbmF0aXZlIHNxbGl0ZTMgXAorCSAgIHBhbmdvIGljdSBiaXNvbi1uYXRpdmUgZ2F3ayBpbnRsdG9vbC1uYXRpdmUgbGlid2VicCBcCisJICAgYXRrIHVkZXYgaGFyZmJ1enoganBlZyBsaWJwbmcgcHVsc2VhdWRpbyBsaWJyc3ZnIGxpYnRoZW9yYSBsaWJ2b3JiaXMgbGlieGNvbXBvc2l0ZSBsaWJ4dHN0IFwKKwkgICBydWJ5LW5hdGl2ZSBsaWJub3RpZnkgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkIFwKKwkgICBnZXR0ZXh0LW5hdGl2ZSBnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUgbGlidGFzbjEgXAorICAgICAgICAgICIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3gxMScsICd3YXlsYW5kJyAsZCl9IFwKKyAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCcsICd3ZWJnbCBvcGVuZ2wnLCAnJyAsZCl9IFwKKyAgICAgICAgICAgICAgICAgICBlbmNoYW50IFwKKyAgICAgICAgICAgICAgICAgICBsaWJzZWNyZXQgXAorICAgICAgICAgICAgICAgICAgIgorCitQQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIi1ERU5BQkxFX1dBWUxBTkRfVEFSR0VUPU9OLC1ERU5BQkxFX1dBWUxBTkRfVEFSR0VUPU9GRix3YXlsYW5kIgorUEFDS0FHRUNPTkZJR1t4MTFdID0gIi1ERU5BQkxFX1gxMV9UQVJHRVQ9T04sLURFTkFCTEVfWDExX1RBUkdFVD1PRkYsdmlydHVhbC9saWJ4MTEiCitQQUNLQUdFQ09ORklHW2dlb2NsdWVdID0gIi1ERU5BQkxFX0dFT0xPQ0FUSU9OPU9OLC1ERU5BQkxFX0dFT0xPQ0FUSU9OPU9GRixnZW9jbHVlIgorUEFDS0FHRUNPTkZJR1tlbmNoYW50XSA9ICItREVOQUJMRV9TUEVMTENIRUNLPU9OLC1ERU5BQkxFX1NQRUxMQ0hFQ0s9T0ZGLGVuY2hhbnQiCitQQUNLQUdFQ09ORklHW2d0azJdID0gIi1ERU5BQkxFX1BMVUdJTl9QUk9DRVNTX0dUSzI9T04sLURFTkFCTEVfUExVR0lOX1BST0NFU1NfR1RLMj1PRkYsZ3RrKyIKK1BBQ0tBR0VDT05GSUdbZ2xlczJdID0gIi1ERU5BQkxFX0dMRVMyPU9OLC1ERU5BQkxFX0dMRVMyPU9GRix2aXJ0dWFsL2xpYmdsZXMyIgorUEFDS0FHRUNPTkZJR1t3ZWJnbF0gPSAiLURFTkFCTEVfV0VCR0w9T04sLURFTkFCTEVfV0VCR0w9T0ZGLHZpcnR1YWwvbGliZ2wiCitQQUNLQUdFQ09ORklHW29wZW5nbF0gPSAiLURFTkFCTEVfT1BFTkdMPU9OLC1ERU5BQkxFX09QRU5HTD1PRkYsdmlydHVhbC9saWJnbCIKK1BBQ0tBR0VDT05GSUdbbGlic2VjcmV0XSA9ICItRFVTRV9MSUJTRUNSRVQ9T04sLURVU0VfTElCU0VDUkVUPU9GRixsaWJzZWNyZXQiCitQQUNLQUdFQ09ORklHW2xpYmh5cGhlbl0gPSAiLURVU0VfTElCSFlQSEVOPU9OLC1EVVNFX0xJQkhZUEhFTj1PRkYsbGliaHlwaGVuIgorCitFWFRSQV9PRUNNQUtFID0gIiBcCisJCS1EUE9SVD1HVEsgXAorCQktRENNQUtFX0JVSUxEX1RZUEU9UmVsZWFzZSBcCisJCSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHSV9EQVRBX0VOQUJMRUQnLCAnVHJ1ZScsICctREVOQUJMRV9JTlRST1NQRUNUSU9OPU9OJywgJy1ERU5BQkxFX0lOVFJPU1BFQ1RJT049T0ZGJywgZCl9IFwKKwkJJHtAYmIudXRpbHMuY29udGFpbnMoJ0dUS0RPQ19FTkFCTEVEJywgJ1RydWUnLCAnLURFTkFCTEVfR1RLRE9DPU9OJywgJy1ERU5BQkxFX0dUS0RPQz1PRkYnLCBkKX0gXAorCQktREVOQUJMRV9NSU5JQlJPV1NFUj1PTiBcCisgICAgICAgICAgICAgICAgLURQWVRIT05fRVhFQ1VUQUJMRT1gd2hpY2ggcHl0aG9uYCBcCisJCSIKKworIyBHTC9HTEVTIGhlYWRlciBjbGFzaDogYm90aCBkZWZpbmUgdGhlIHNhbWUgdGhpbmcsIGRpZmZlcmVudGx5LCBvbiAzMiBiaXQgeDg2CitFWFRSQV9PRUNNQUtFX2FwcGVuZF94ODYgPSAiIC1EVVNFX0dTVFJFQU1FUl9HTD1PRkYgIgorRVhUUkFfT0VDTUFLRV9hcHBlbmRfeDg2LXgzMiA9ICIgLURVU0VfR1NUUkVBTUVSX0dMPU9GRiAiCisKKyMgSmF2YXNjcmlwdCBKSVQgaXMgbm90IHN1cHBvcnRlZCBvbiBwb3dlcnBjCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9wb3dlcnBjID0gIiAtREVOQUJMRV9KSVQ9T0ZGICIKK0VYVFJBX09FQ01BS0VfYXBwZW5kX3Bvd2VycGM2NCA9ICIgLURFTkFCTEVfSklUPU9GRiAiCisKKyMgQVJNIEpJVCBjb2RlIGRvZXMgbm90IGJ1aWxkIG9uIEFSTXY0LzUvNiBhbnltb3JlCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9hcm12NSA9ICIgLURFTkFCTEVfSklUPU9GRiAiCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9hcm12NiA9ICIgLURFTkFCTEVfSklUPU9GRiAiCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9hcm12NCA9ICIgLURFTkFCTEVfSklUPU9GRiAiCisKKyMgYmludXRpbHMgMi4yNS4xIGhhcyBhIGJ1ZyBvbiBhYXJjaDY0OgorIyBodHRwczovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0xODQzMAorRVhUUkFfT0VDTUFLRV9hcHBlbmRfYWFyY2g2NCA9ICIgLURVU0VfTERfR09MRD1PRkYgIgorRVhUUkFfT0VDTUFLRV9hcHBlbmRfbWlwc2FyY2ggPSAiIC1EVVNFX0xEX0dPTEQ9T0ZGICIKK0VYVFJBX09FQ01BS0VfYXBwZW5kX3Bvd2VycGMgPSAiIC1EVVNFX0xEX0dPTEQ9T0ZGICIKK0VYVFJBX09FQ01BS0VfYXBwZW5kX3Rvb2xjaGFpbi1jbGFuZyA9ICIgLURVU0VfTERfR09MRD1PRkYgIgorCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9hYXJjaDY0ID0gIiAtRFdURl9DUFVfQVJNNjRfQ09SVEVYQTUzPU9OIgorCisjIEpJVCBub3Qgc3VwcG9ydGVkIG9uIE1JUFMgZWl0aGVyCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9taXBzYXJjaCA9ICIgLURFTkFCTEVfSklUPU9GRiAiCisKKyMgSklUIG5vdCBzdXBwb3J0ZWQgb24gWDMyCisjIEFuIGF0dGVtcHQgd2FzIG1hZGUgdG8gdXBzdHJlYW0gSklUIHN1cHBvcnQgZm9yIHgzMiBpbgorIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNDUwLCBidXQgdGhpcyB3YXMgY2xvc2VkIGFzCisjIHVucmVzb2x2ZWQgZHVlIHRvIGxpbWl0ZWQgWDMyIGFkb3B0aW9uLgorRVhUUkFfT0VDTUFLRV9hcHBlbmRfeDg2LXgzMiA9ICIgLURFTkFCTEVfSklUPU9GRiAiCisKK1NFQ1VSSVRZX0NGTEFHU19yZW1vdmVfYWFyY2g2NCA9ICItZnBpZSIKK1NFQ1VSSVRZX0NGTEFHU19hcHBlbmRfYWFyY2g2NCA9ICIgLWZQSUUiCisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vd2Via2l0Mmd0ay00LjAvaW5qZWN0ZWQtYnVuZGxlL2xpYndlYmtpdDJndGtpbmplY3RlZGJ1bmRsZS5zbyIKKworUlJFQ09NTUVORFNfJHtQTn0gKz0gImNhLWNlcnRpZmljYXRlcyBzaGFyZWQtbWltZS1pbmZvIgorCisjIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8yMDM3MC8KK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY2ID0gImFybSIKKworIyBodHRwczovL2J1Z3ppbGxhLnlvY3RvcHJvamVjdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0NzQKKyMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTg4MAorIyBKU0MgSklUIGNhbiBidWlsZCBvbiBBUk12NyB3aXRoIC1tYXJtLCBidXQgZG9lc24ndCB3b3JrIG9uIHJ1bnRpbWUuCisjIFVwc3RyZWFtIG9ubHkgdGVzdHMgcmVndWxhcmx5IHRoZSBKU0MgSklUIG9uIEFSTXY3IHdpdGggVGh1bWIyICgtbXRodW1iKS4KK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjdhID0gInRodW1iIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12N3IgPSAidGh1bWIiCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY3dmUgPSAidGh1bWIiCisKKyMgcWVtdTogdW5jYXVnaHQgdGFyZ2V0IHNpZ25hbCAxMSAoU2VnbWVudGF0aW9uIGZhdWx0KSAtIGNvcmUgZHVtcGVkCisjIFNlZ21lbnRhdGlvbiBmYXVsdAorR0lfREFUQV9FTkFCTEVEX2FybXY3YSA9ICJGYWxzZSIKK0dJX0RBVEFfRU5BQkxFRF9hcm12N3ZlID0gIkZhbHNlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHItdXRpbF8xLjUuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLXV0aWxfMS41LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiODY3NmYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHItdXRpbF8xLjUuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDk1ICswLDAgQEAKLVNVTU1BUlkgPSAiQXBhY2hlIFBvcnRhYmxlIFJ1bnRpbWUgKEFQUikgY29tcGFuaW9uIGxpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwOi8vYXByLmFwYWNoZS5vcmcvIgotU0VDVElPTiA9ICJsaWJzIgotREVQRU5EUyA9ICJhcHIgZXhwYXQgZ2RibSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT01MTllMGExOGUwM2Y3YzAyMzA3MDU2OGMxNGIwNzdiYiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlL2FwdV92ZXJzaW9uLmg7ZW5kbGluZT0xNzttZDU9ODA2Njg1YTg0ZTcxZjEwYzgwMTQ0YzQ4ZWIzNWRmNDIiCi0KLVNSQ19VUkkgPSAiJHtBUEFDSEVfTUlSUk9SfS9hcHIvJHtCUE59LSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9jb25maWdmaXgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlX2ZpeGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4NjY4MjVjMDRkYTgyN2M2ZTVmNTNkYWZmNTU2OWY0MiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5NzZhMTJhNTliYzI4NmQ2MzRhMjFkN2JlMDg0MWNjNzQyODllYTkwNzdhYTFhZjQ2YmUxOWQxYTZlODQ0YzE5IgotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLWFwcj0ke1NUQUdJTkdfQklORElSX0NST1NTfS9hcHItMS1jb25maWcgXCAKLQkJLS13aXRob3V0LW9kYmMgXAotCQktLXdpdGhvdXQtcGdzcWwgXAotCQktLXdpdGgtZGJtPWdkYm0gXAotCQktLXdpdGgtZ2RibT0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9IFwKLQkJLS13aXRob3V0LXNxbGl0ZTIgXAotCQktLXdpdGgtZXhwYXQ9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSIKLQotCi1pbmhlcml0IGF1dG90b29scyBsaWJfcGFja2FnZSBiaW5jb25maWcKLQotUFIgPSAicjEiCi0KLU9FX0JJTkNPTkZJR19FWFRSQV9NQU5HTEUgPSAiIC1lICdzOmxvY2F0aW9uPXNvdXJjZTpsb2NhdGlvbj1pbnN0YWxsZWQ6JyIKLQotZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKLQlpZiBbICIke0NMQVNTT1ZFUlJJREV9IiA9ICJjbGFzcy10YXJnZXQiIF07IHRoZW4KLQkJY3AgJHtTVEFHSU5HX0RBVEFESVJ9L2Fwci9hcHJfcnVsZXMubWsgJHtCfS9idWlsZC9ydWxlcy5tawotCWZpCi19Ci1kb19jb25maWd1cmVfcHJlcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0JbWtkaXIgJHtCfS9idWlsZAotCWNwICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vYXByL2Fwcl9ydWxlcy5tayAke0J9L2J1aWxkL3J1bGVzLm1rCi19Ci1kb19jb25maWd1cmVfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLQlzZWQgLWkgInMjTElCVE9PTD1cJChTSEVMTCkgXCQoYXByX2J1aWxkZGlyKSNMSUJUT09MPVwkKFNIRUxMKSAke1NUQUdJTkdfQklORElSX05BVElWRX0jIiAke0J9L2J1aWxkL3J1bGVzLm1rCi0JIyBzb21ldGltZXMgdGhlcmUgaXNuJ3QgU0hFTEwKLQlzZWQgLWkgInMjTElCVE9PTD1cJChhcHJfYnVpbGRkaXIpI0xJQlRPT0w9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9IyIgJHtCfS9idWlsZC9ydWxlcy5tawotfQotCi1kb19jb25maWd1cmVfcHJlcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7Ci0JY3AgJHtTVEFHSU5HX0RBVEFESVJ9L2Fwci9hcHJfcnVsZXMubWsgJHtTfS9idWlsZC9ydWxlcy5tawotfQotCi1kb19jb25maWd1cmVfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKLQlzZWQgLWkgInMjXChhcHJfYnVpbGRkaXJcKT0uKiNcMT0ke1NUQUdJTkdfREFUQURJUn0vYnVpbGQtMSMiICR7Qn0vYnVpbGQvcnVsZXMubWsKLQlzZWQgLWkgInMjXChhcHJfYnVpbGRlcnNcKT0uKiNcMT0ke1NUQUdJTkdfREFUQURJUn0vYnVpbGQtMSMiICR7Qn0vYnVpbGQvcnVsZXMubWsKLQlzZWQgLWkgInMjXCh0b3BfYnVpbGRkaXJcKT0uKiNcMT0ke1NUQUdJTkdfREFUQURJUn0vYnVpbGQtMSMiICR7Qn0vYnVpbGQvcnVsZXMubWsKLQlzZWQgLWkgInMjXChMSUJUT09MPVwkKGFwcl9idWlsZGRpcilcKS4qI1wxL2xpYnRvb2wjIiAke0J9L2J1aWxkL3J1bGVzLm1rCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLQlzZWQgLWkgLWUgJ3MsJHtTVEFHSU5HX0RJUl9IT1NUfSwsZycgXAotCSAgICAgICAtZSAncyxBUFVfU09VUkNFX0RJUj0uKixBUFJfU09VUkNFX0RJUj0sZycgXAotCSAgICAgICAtZSAncyxBUFVfQlVJTERfRElSPS4qLEFQUl9CVUlMRF9ESVI9LGcnICR7RH0ke2JpbmRpcn0vYXB1LTEtY29uZmlnCi19Ci0KLVBBQ0tBR0VDT05GSUcgPz89ICJjcnlwdG8iCi1QQUNLQUdFQ09ORklHW2xkYXBdID0gIi0td2l0aC1sZGFwLC0td2l0aG91dC1sZGFwLG9wZW5sZGFwIgotUEFDS0FHRUNPTkZJR1tjcnlwdG9dID0gIi0td2l0aC1vcGVuc3NsPSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0gLS13aXRoLWNyeXB0bywtLXdpdGhvdXQtY3J5cHRvLG9wZW5zc2wiCi1QQUNLQUdFQ09ORklHW3NxbGl0ZTNdID0gIi0td2l0aC1zcWxpdGUzPSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0sLS13aXRob3V0LXNxbGl0ZTMsc3FsaXRlMyIKLQotI2ZpbGVzICR7bGliZGlyfS9hcHItdXRpbC0xLyouc28gYXJlIG5vdCBzeW1saW5rcyBidXQgbG9hZGFibGUgbW9kdWxlcyB0aHVzIHRoZXkgYXJlIHBhY2thZ2VkIGluICR7UE59Ci1GSUxFU18ke1BOfSAgICAgKz0gIiR7bGliZGlyfS9hcHItdXRpbC0xL2Fwcioke1NPTElCU30gJHtsaWJkaXJ9L2Fwci11dGlsLTEvYXByKiR7U09MSUJTREVWfSIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2FwcnV0aWwuZXhwICR7bGliZGlyfS9hcHItdXRpbC0xLyoubGEiCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9hcHItdXRpbC0xLyouYSIKLQotSU5TQU5FX1NLSVBfJHtQTn0gKz0gImRldi1zbyIKLQotaW5oZXJpdCBwdGVzdAotCi1SREVQRU5EU18ke1BOfS1wdGVzdF9hcHBlbmRfbGliYy1nbGliYyA9ICIgZ2xpYmMtZ2NvbnYtaXNvODg1OS0xIGdsaWJjLWdjb252LWlzbzg4NTktMiBnbGliYy1nY29udi11dGYtNyIKLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLQljZCAke0J9L3Rlc3QKLQlvZV9ydW5tYWtlCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0JdD0ke0R9JHtQVEVTVF9QQVRIfS90ZXN0Ci0JbWtkaXIgJHQKLQlmb3IgaSBpbiB0ZXN0YWxsIGRhdGE7IGRvIFwKLQkgIGNwIC1yICR7Qn0vdGVzdC8kaSAkdDsgXAotCWRvbmUKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLXV0aWxfMS42LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci11dGlsXzEuNi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0OGQxOTYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci11dGlsXzEuNi4wLmJiCkBAIC0wLDAgKzEsOTUgQEAKK1NVTU1BUlkgPSAiQXBhY2hlIFBvcnRhYmxlIFJ1bnRpbWUgKEFQUikgY29tcGFuaW9uIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwOi8vYXByLmFwYWNoZS5vcmcvIgorU0VDVElPTiA9ICJsaWJzIgorREVQRU5EUyA9ICJhcHIgZXhwYXQgZ2RibSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0xNThhYTBiMWVmZTBjMTJmMjNkNGIwMDdkZGI5YTVkYiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlL2FwdV92ZXJzaW9uLmg7ZW5kbGluZT0xNzttZDU9ODA2Njg1YTg0ZTcxZjEwYzgwMTQ0YzQ4ZWIzNWRmNDIiCisKK1NSQ19VUkkgPSAiJHtBUEFDSEVfTUlSUk9SfS9hcHIvJHtCUE59LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9jb25maWdmaXgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlX2ZpeGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzYjAzZGJmZjYwNzI4YTRmNGMzM2Y1ZDkyOWU4YjM1YSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0ODNlZjRkNTllNmFjOWEzNmM3ZDNmZDg3YWQ3YjlkYjdhZDhhZTI5YzA2YjlkZDhmZjIyZGRhMWNjNDE2Mzg5IgorCitFWFRSQV9PRUNPTkYgPSAiLS13aXRoLWFwcj0ke1NUQUdJTkdfQklORElSX0NST1NTfS9hcHItMS1jb25maWcgXCAKKwkJLS13aXRob3V0LW9kYmMgXAorCQktLXdpdGhvdXQtcGdzcWwgXAorCQktLXdpdGgtZGJtPWdkYm0gXAorCQktLXdpdGgtZ2RibT0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9IFwKKwkJLS13aXRob3V0LXNxbGl0ZTIgXAorCQktLXdpdGgtZXhwYXQ9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSIKKworCitpbmhlcml0IGF1dG90b29scyBsaWJfcGFja2FnZSBiaW5jb25maWcKKworUFIgPSAicjEiCisKK09FX0JJTkNPTkZJR19FWFRSQV9NQU5HTEUgPSAiIC1lICdzOmxvY2F0aW9uPXNvdXJjZTpsb2NhdGlvbj1pbnN0YWxsZWQ6JyIKKworZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKKwlpZiBbICIke0NMQVNTT1ZFUlJJREV9IiA9ICJjbGFzcy10YXJnZXQiIF07IHRoZW4KKwkJY3AgJHtTVEFHSU5HX0RBVEFESVJ9L2Fwci9hcHJfcnVsZXMubWsgJHtCfS9idWlsZC9ydWxlcy5taworCWZpCit9Citkb19jb25maWd1cmVfcHJlcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisJbWtkaXIgJHtCfS9idWlsZAorCWNwICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vYXByL2Fwcl9ydWxlcy5tayAke0J9L2J1aWxkL3J1bGVzLm1rCit9Citkb19jb25maWd1cmVfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKwlzZWQgLWkgInMjTElCVE9PTD1cJChTSEVMTCkgXCQoYXByX2J1aWxkZGlyKSNMSUJUT09MPVwkKFNIRUxMKSAke1NUQUdJTkdfQklORElSX05BVElWRX0jIiAke0J9L2J1aWxkL3J1bGVzLm1rCisJIyBzb21ldGltZXMgdGhlcmUgaXNuJ3QgU0hFTEwKKwlzZWQgLWkgInMjTElCVE9PTD1cJChhcHJfYnVpbGRkaXIpI0xJQlRPT0w9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9IyIgJHtCfS9idWlsZC9ydWxlcy5taworfQorCitkb19jb25maWd1cmVfcHJlcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7CisJY3AgJHtTVEFHSU5HX0RBVEFESVJ9L2Fwci9hcHJfcnVsZXMubWsgJHtTfS9idWlsZC9ydWxlcy5taworfQorCitkb19jb25maWd1cmVfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKKwlzZWQgLWkgInMjXChhcHJfYnVpbGRkaXJcKT0uKiNcMT0ke1NUQUdJTkdfREFUQURJUn0vYnVpbGQtMSMiICR7Qn0vYnVpbGQvcnVsZXMubWsKKwlzZWQgLWkgInMjXChhcHJfYnVpbGRlcnNcKT0uKiNcMT0ke1NUQUdJTkdfREFUQURJUn0vYnVpbGQtMSMiICR7Qn0vYnVpbGQvcnVsZXMubWsKKwlzZWQgLWkgInMjXCh0b3BfYnVpbGRkaXJcKT0uKiNcMT0ke1NUQUdJTkdfREFUQURJUn0vYnVpbGQtMSMiICR7Qn0vYnVpbGQvcnVsZXMubWsKKwlzZWQgLWkgInMjXChMSUJUT09MPVwkKGFwcl9idWlsZGRpcilcKS4qI1wxL2xpYnRvb2wjIiAke0J9L2J1aWxkL3J1bGVzLm1rCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKKwlzZWQgLWkgLWUgJ3MsJHtTVEFHSU5HX0RJUl9IT1NUfSwsZycgXAorCSAgICAgICAtZSAncyxBUFVfU09VUkNFX0RJUj0uKixBUFJfU09VUkNFX0RJUj0sZycgXAorCSAgICAgICAtZSAncyxBUFVfQlVJTERfRElSPS4qLEFQUl9CVUlMRF9ESVI9LGcnICR7RH0ke2JpbmRpcn0vYXB1LTEtY29uZmlnCit9CisKK1BBQ0tBR0VDT05GSUcgPz89ICJjcnlwdG8iCitQQUNLQUdFQ09ORklHW2xkYXBdID0gIi0td2l0aC1sZGFwLC0td2l0aG91dC1sZGFwLG9wZW5sZGFwIgorUEFDS0FHRUNPTkZJR1tjcnlwdG9dID0gIi0td2l0aC1vcGVuc3NsPSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0gLS13aXRoLWNyeXB0bywtLXdpdGhvdXQtY3J5cHRvLG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW3NxbGl0ZTNdID0gIi0td2l0aC1zcWxpdGUzPSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0sLS13aXRob3V0LXNxbGl0ZTMsc3FsaXRlMyIKKworI2ZpbGVzICR7bGliZGlyfS9hcHItdXRpbC0xLyouc28gYXJlIG5vdCBzeW1saW5rcyBidXQgbG9hZGFibGUgbW9kdWxlcyB0aHVzIHRoZXkgYXJlIHBhY2thZ2VkIGluICR7UE59CitGSUxFU18ke1BOfSAgICAgKz0gIiR7bGliZGlyfS9hcHItdXRpbC0xL2Fwcioke1NPTElCU30gJHtsaWJkaXJ9L2Fwci11dGlsLTEvYXByKiR7U09MSUJTREVWfSIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2FwcnV0aWwuZXhwICR7bGliZGlyfS9hcHItdXRpbC0xLyoubGEiCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9hcHItdXRpbC0xLyouYSIKKworSU5TQU5FX1NLSVBfJHtQTn0gKz0gImRldi1zbyIKKworaW5oZXJpdCBwdGVzdAorCitSREVQRU5EU18ke1BOfS1wdGVzdF9hcHBlbmRfbGliYy1nbGliYyA9ICIgZ2xpYmMtZ2NvbnYtaXNvODg1OS0xIGdsaWJjLWdjb252LWlzbzg4NTktMiBnbGliYy1nY29udi11dGYtNyIKKworZG9fY29tcGlsZV9wdGVzdCgpIHsKKwljZCAke0J9L3Rlc3QKKwlvZV9ydW5tYWtlCit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJdD0ke0R9JHtQVEVTVF9QQVRIfS90ZXN0CisJbWtkaXIgJHQKKwlmb3IgaSBpbiB0ZXN0YWxsIGRhdGE7IGRvIFwKKwkgIGNwIC1yICR7Qn0vdGVzdC8kaSAkdDsgXAorCWRvbmUKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLzAwMDEtYXByLWZpeC1vZmZfdC1zaXplLWRvZXNuLXQtbWF0Y2gtaW4tZ2xpYmMtd2hlbi1jcm9zcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLzAwMDEtYXByLWZpeC1vZmZfdC1zaXplLWRvZXNuLXQtbWF0Y2gtaW4tZ2xpYmMtd2hlbi1jcm9zcy5wYXRjaAppbmRleCAxMjM3MTQyLi5jNWU5MmFjIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci8wMDAxLWFwci1maXgtb2ZmX3Qtc2l6ZS1kb2Vzbi10LW1hdGNoLWluLWdsaWJjLXdoZW4tY3Jvc3MucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHIvMDAwMS1hcHItZml4LW9mZl90LXNpemUtZG9lc24tdC1tYXRjaC1pbi1nbGliYy13aGVuLWNyb3NzLnBhdGNoCkBAIC0yNyw2ICsyNyw4IEBACiBDaGFuZ2UgdGhlIGFib3ZlIGNvcnJlc3BvbmRpbmdseS4KIAogU2lnbmVkLW9mZi1ieTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAtLS0KICBjb25maWd1cmUuaW4gfCA4ICsrKystLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByXzEuNS4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHJfMS41LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5MmI1NjEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHJfMS41LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMTQgKzAsMCBAQAotU1VNTUFSWSA9ICJBcGFjaGUgUG9ydGFibGUgUnVudGltZSAoQVBSKSBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cDovL2Fwci5hcGFjaGUub3JnLyIKLVNFQ1RJT04gPSAibGlicyIKLURFUEVORFMgPSAidXRpbC1saW51eCIKLQotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NGRmZDRjZDIxNjgyOGM4Y2FlNWRlNWExMmYzODQ0YzggXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jbHVkZS9hcHJfbGliLmg7ZW5kbGluZT0xNzttZDU9ZWU0MmZhNzU3NWRjNDA1ODBhOWUwMWMxYjc1ZmFlOTYiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotU1JDX1VSSSA9ICIke0FQQUNIRV9NSVJST1J9L2Fwci8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmVfZml4ZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vY2xlYW51cC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9jb25maWdmaXgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL3VwZ3JhZGUtYW5kLWZpeC0xLjUuMS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9GaXgtcGFja2V0LWRpc2NhcmRzLUhUVFAtcmVkaXJlY3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLmluLWZpeC1MVEZMQUdTLXRvLW1ha2UtaXQtd29yay13aXRoLWNjYWNoZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWFwci1maXgtb2ZmX3Qtc2l6ZS1kb2Vzbi10LW1hdGNoLWluLWdsaWJjLXdoZW4tY3Jvc3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1leHBsaWNpdGx5LWxpbmstbGliYXByLWFnYWluc3QtcGh0cmVhZC10by1tYWtlLWdvbGQtLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjRlOTc2OWYzMzQ5ZmUxMWZjMGE1ZTFiMjI0YzIzNmFhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdkMDNlZDI5YzIyYTcxNTJiZTQ1YjhlNTA0MzEwNjM3MzZkZjllMWRhYTFkZGY5M2Y2YTU0N2JhN2EyOGY2N2EiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBsaWJfcGFja2FnZSBiaW5jb25maWcgbXVsdGlsaWJfaGVhZGVyIHB0ZXN0Ci0KLU9FX0JJTkNPTkZJR19FWFRSQV9NQU5HTEUgPSAiIC1lICdzOmxvY2F0aW9uPXNvdXJjZTpsb2NhdGlvbj1pbnN0YWxsZWQ6JyIKLQotIyBBZGRlZCB0byBmaXggc29tZSBpc3N1ZXMgd2l0aCBjbWFrZS4gUmVmZXIgdG8gaHR0cHM6Ly9naXRodWIuY29tL2Jtd2Nhcml0L21ldGEtcm9zL2lzc3Vlcy82OCNpc3N1ZWNvbW1lbnQtMTk4OTY5MjgKLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhcHJfY3ZfbXV0ZXhfcmVjdXJzaXZlPXllcyIKLQotIyBBbHNvIHN1cHByZXNzIHRyeWluZyB0byB1c2Ugc2N0cC4KLSMKLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9oZWFkZXJfbmV0aW5ldF9zY3RwX2g9bm8gYWNfY3ZfaGVhZGVyX25ldGluZXRfc2N0cF91aW9faD1ubyIKLQotIyBPdGhlcndpc2UgbGlidG9vbCBmYWlscyB0byBjb21waWxlIGFwci11dGlscwotIyB4ODZfNjQtbGludXgtbGlidG9vbDogY29tcGlsZTogdW5hYmxlIHRvIGluZmVyIHRhZ2dlZCBjb25maWd1cmF0aW9uCi0jIHg4Nl82NC1saW51eC1saWJ0b29sOiAgIGVycm9yOiBzcGVjaWZ5IGEgdGFnIHdpdGggJy0tdGFnJwotQ0NBQ0hFID0gIiIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0iCi1QQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLQkjIEF2b2lkIGFic29sdXRlIHBhdGhzIGZvciBncmVwIHNpbmNlIGl0IGNhdXNlcyBmYWlsdXJlcwotCSMgd2hlbiB1c2luZyBzc3RhdGUgYmV0d2VlbiBkaWZmZXJlbnQgaG9zdHMgd2l0aCBkaWZmZXJlbnQKLQkjIGluc3RhbGwgcGF0aHMgZm9yIGdyZXAuCi0JZXhwb3J0IEdSRVA9ImdyZXAiCi0KLQljZCAke1N9Ci0JLi9idWlsZGNvbmYKLX0KLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vYXByLmV4cCAke2RhdGFkaXJ9L2J1aWxkLTEvKiIKLVJERVBFTkRTXyR7UE59LWRldiArPSAiYmFzaCIKLQotI2ZvciBzb21lIHJlYXNvbiwgYnVpbGQvbGlidG9vbC5tNCBoYW5kbGVkIGJ5IGJ1aWxkY29uZiBzdGlsbCBiZSBvdmVyd3JpdHRlbgotI3doZW4gYXV0b2NvbmYsIHNvIGhhbmRsZSBpdCBhZ2Fpbi4KLWRvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7Ci0Jc2VkIC1pIC1lICdzL0xJQlRPT0w9XCguKlwpdG9wX2J1aWxkL0xJQlRPT0w9XDFhcHJfYnVpbGQvJyAke1N9L2J1aWxkL2xpYnRvb2wubTQKLQlzZWQgLWkgLWUgJ3MvTElCVE9PTD1cKC4qXCl0b3BfYnVpbGQvTElCVE9PTD1cMWFwcl9idWlsZC8nICR7U30vYnVpbGQvYXByX3J1bGVzLm1rCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCW9lX211bHRpbGliX2hlYWRlciBhcHIuaAotCWluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vYXByCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLQlzZWQgLWkgLWUgJ3MsJHtTVEFHSU5HX0RJUl9IT1NUfSwsZycgJHtEfSR7ZGF0YWRpcn0vYnVpbGQtMS9hcHJfcnVsZXMubWsKLQlzZWQgLWkgLWUgJ3MsJHtTVEFHSU5HX0RJUl9IT1NUfSwsZycgXAotCSAgICAgICAtZSAncyxBUFJfU09VUkNFX0RJUj0uKixBUFJfU09VUkNFX0RJUj0sZycgXAotCSAgICAgICAtZSAncyxBUFJfQlVJTERfRElSPS4qLEFQUl9CVUlMRF9ESVI9LGcnICR7RH0ke2JpbmRpcn0vYXByLTEtY29uZmlnCi19Ci0KLVNTVEFURV9TQ0FOX0ZJTEVTICs9ICJhcHJfcnVsZXMubWsgbGlidG9vbCIKLQotU1lTUk9PVF9QUkVQUk9DRVNTX0ZVTkNTICs9ICJhcHJfc3lzcm9vdF9wcmVwcm9jZXNzIgotCi1hcHJfc3lzcm9vdF9wcmVwcm9jZXNzICgpIHsKLQlkPSR7U1lTUk9PVF9ERVNURElSfSR7ZGF0YWRpcn0vYXByCi0JaW5zdGFsbCAtZCAkZC8KLQljcCAke1N9L2J1aWxkL2Fwcl9ydWxlcy5tayAkZC8KLQlzZWQgLWkgcyxhcHJfYnVpbGRkaXI9LiosYXByX2J1aWxkZGlyPSxnICRkL2Fwcl9ydWxlcy5tawotCXNlZCAtaSBzLGFwcl9idWlsZGVycz0uKixhcHJfYnVpbGRlcnM9LGcgJGQvYXByX3J1bGVzLm1rCi0Jc2VkIC1pIHMsTElCVE9PTD0uKixMSUJUT09MPSR7SE9TVF9TWVN9LWxpYnRvb2wsZyAkZC9hcHJfcnVsZXMubWsKLQlzZWQgLWkgcyxcJFwoYXByX2J1aWxkZXJzXCksJHtTVEFHSU5HX0RBVEFESVJ9L2Fwci8sZyAkZC9hcHJfcnVsZXMubWsKLQljcCAke1N9L2J1aWxkL21rZGlyLnNoICRkLwotCWNwICR7U30vYnVpbGQvbWFrZV9leHBvcnRzLmF3ayAkZC8KLQljcCAke1N9L2J1aWxkL21ha2VfdmFyX2V4cG9ydC5hd2sgJGQvCi0JY3AgJHtTfS8ke0hPU1RfU1lTfS1saWJ0b29sICR7U1lTUk9PVF9ERVNURElSfSR7ZGF0YWRpcn0vYnVpbGQtMS9saWJ0b29sCi19Ci0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0JY2QgJHtTfS90ZXN0Ci0Jb2VfcnVubWFrZQotfQotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCXQ9JHtEfSR7UFRFU1RfUEFUSH0vdGVzdAotCW1rZGlyIC1wICR0Ly5saWJzCi0JY3AgLXIgJHtTfS90ZXN0L2RhdGEgJHQvCi0JY3AgLXIgJHtTfS90ZXN0Ly5saWJzLyouc28gJHQvLmxpYnMvCi0JY3AgJHtTfS90ZXN0L3Byb2NfY2hpbGQgJHQvCi0JY3AgJHtTfS90ZXN0L3JlYWRjaGlsZCAkdC8KLQljcCAke1N9L3Rlc3Qvc29ja2NoaWxkICR0LwotCWNwICR7U30vdGVzdC9zb2NrcGVyZiAkdC8KLQljcCAke1N9L3Rlc3QvdGVzdGFsbCAkdC8KLQljcCAke1N9L3Rlc3QvdHJ5cmVhZCAkdC8KLX0KLQotZXhwb3J0IENPTkZJR19TSEVMTD0iL2Jpbi9iYXNoIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHJfMS42LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwcl8xLjYuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMmVlZDUzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHJfMS42LjIuYmIKQEAgLTAsMCArMSwxMTQgQEAKK1NVTU1BUlkgPSAiQXBhY2hlIFBvcnRhYmxlIFJ1bnRpbWUgKEFQUikgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly9hcHIuYXBhY2hlLm9yZy8iCitTRUNUSU9OID0gImxpYnMiCitERVBFTkRTID0gInV0aWwtbGludXgiCisKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTRkZmQ0Y2QyMTY4MjhjOGNhZTVkZTVhMTJmMzg0NGM4IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvYXByX2xpYi5oO2VuZGxpbmU9MTc7bWQ1PWVlNDJmYTc1NzVkYzQwNTgwYTllMDFjMWI3NWZhZTk2IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK1NSQ19VUkkgPSAiJHtBUEFDSEVfTUlSUk9SfS9hcHIvJHtCUE59LSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlX2ZpeGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2NsZWFudXAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vY29uZmlnZml4LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly91cGdyYWRlLWFuZC1maXgtMS41LjEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vRml4LXBhY2tldC1kaXNjYXJkcy1IVFRQLXJlZGlyZWN0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS5pbi1maXgtTFRGTEFHUy10by1tYWtlLWl0LXdvcmstd2l0aC1jY2FjaGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1hcHItZml4LW9mZl90LXNpemUtZG9lc24tdC1tYXRjaC1pbi1nbGliYy13aGVuLWNyb3NzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItZXhwbGljaXRseS1saW5rLWxpYmFwci1hZ2FpbnN0LXBodHJlYWQtdG8tbWFrZS1nb2xkLS5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlODFhODUxOTY3Yzc5YjVjZTliZmJjOTA5ZTRiZjczNSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwOTEwOWNlYTM3N2JhYjAwMjhiYmExOWE5MmI1YjBlODk2MDNkZjllYWIwNWMwZjdkYmQ0ZGQ4M2Q0OGRjZWJkIgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgbGliX3BhY2thZ2UgYmluY29uZmlnIG11bHRpbGliX2hlYWRlciBwdGVzdAorCitPRV9CSU5DT05GSUdfRVhUUkFfTUFOR0xFID0gIiAtZSAnczpsb2NhdGlvbj1zb3VyY2U6bG9jYXRpb249aW5zdGFsbGVkOiciCisKKyMgQWRkZWQgdG8gZml4IHNvbWUgaXNzdWVzIHdpdGggY21ha2UuIFJlZmVyIHRvIGh0dHBzOi8vZ2l0aHViLmNvbS9ibXdjYXJpdC9tZXRhLXJvcy9pc3N1ZXMvNjgjaXNzdWVjb21tZW50LTE5ODk2OTI4CitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYXByX2N2X211dGV4X3JlY3Vyc2l2ZT15ZXMiCisKKyMgQWxzbyBzdXBwcmVzcyB0cnlpbmcgdG8gdXNlIHNjdHAuCisjCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfaGVhZGVyX25ldGluZXRfc2N0cF9oPW5vIGFjX2N2X2hlYWRlcl9uZXRpbmV0X3NjdHBfdWlvX2g9bm8iCisKKyMgT3RoZXJ3aXNlIGxpYnRvb2wgZmFpbHMgdG8gY29tcGlsZSBhcHItdXRpbHMKKyMgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGNvbXBpbGU6IHVuYWJsZSB0byBpbmZlciB0YWdnZWQgY29uZmlndXJhdGlvbgorIyB4ODZfNjQtbGludXgtbGlidG9vbDogICBlcnJvcjogc3BlY2lmeSBhIHRhZyB3aXRoICctLXRhZycKK0NDQUNIRSA9ICIiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IgorUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisJIyBBdm9pZCBhYnNvbHV0ZSBwYXRocyBmb3IgZ3JlcCBzaW5jZSBpdCBjYXVzZXMgZmFpbHVyZXMKKwkjIHdoZW4gdXNpbmcgc3N0YXRlIGJldHdlZW4gZGlmZmVyZW50IGhvc3RzIHdpdGggZGlmZmVyZW50CisJIyBpbnN0YWxsIHBhdGhzIGZvciBncmVwLgorCWV4cG9ydCBHUkVQPSJncmVwIgorCisJY2QgJHtTfQorCS4vYnVpbGRjb25mCit9CisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2Fwci5leHAgJHtkYXRhZGlyfS9idWlsZC0xLyoiCitSREVQRU5EU18ke1BOfS1kZXYgKz0gImJhc2giCisKKyNmb3Igc29tZSByZWFzb24sIGJ1aWxkL2xpYnRvb2wubTQgaGFuZGxlZCBieSBidWlsZGNvbmYgc3RpbGwgYmUgb3ZlcndyaXR0ZW4KKyN3aGVuIGF1dG9jb25mLCBzbyBoYW5kbGUgaXQgYWdhaW4uCitkb19jb25maWd1cmVfYXBwZW5kKCkgeworCXNlZCAtaSAtZSAncy9MSUJUT09MPVwoLipcKXRvcF9idWlsZC9MSUJUT09MPVwxYXByX2J1aWxkLycgJHtTfS9idWlsZC9saWJ0b29sLm00CisJc2VkIC1pIC1lICdzL0xJQlRPT0w9XCguKlwpdG9wX2J1aWxkL0xJQlRPT0w9XDFhcHJfYnVpbGQvJyAke1N9L2J1aWxkL2Fwcl9ydWxlcy5taworfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlvZV9tdWx0aWxpYl9oZWFkZXIgYXByLmgKKwlpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2FwcgorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7CisJc2VkIC1pIC1lICdzLCR7U1RBR0lOR19ESVJfSE9TVH0sLGcnICR7RH0ke2RhdGFkaXJ9L2J1aWxkLTEvYXByX3J1bGVzLm1rCisJc2VkIC1pIC1lICdzLCR7U1RBR0lOR19ESVJfSE9TVH0sLGcnIFwKKwkgICAgICAgLWUgJ3MsQVBSX1NPVVJDRV9ESVI9LiosQVBSX1NPVVJDRV9ESVI9LGcnIFwKKwkgICAgICAgLWUgJ3MsQVBSX0JVSUxEX0RJUj0uKixBUFJfQlVJTERfRElSPSxnJyAke0R9JHtiaW5kaXJ9L2Fwci0xLWNvbmZpZworfQorCitTU1RBVEVfU0NBTl9GSUxFUyArPSAiYXByX3J1bGVzLm1rIGxpYnRvb2wiCisKK1NZU1JPT1RfUFJFUFJPQ0VTU19GVU5DUyArPSAiYXByX3N5c3Jvb3RfcHJlcHJvY2VzcyIKKworYXByX3N5c3Jvb3RfcHJlcHJvY2VzcyAoKSB7CisJZD0ke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9L2FwcgorCWluc3RhbGwgLWQgJGQvCisJY3AgJHtTfS9idWlsZC9hcHJfcnVsZXMubWsgJGQvCisJc2VkIC1pIHMsYXByX2J1aWxkZGlyPS4qLGFwcl9idWlsZGRpcj0sZyAkZC9hcHJfcnVsZXMubWsKKwlzZWQgLWkgcyxhcHJfYnVpbGRlcnM9LiosYXByX2J1aWxkZXJzPSxnICRkL2Fwcl9ydWxlcy5taworCXNlZCAtaSBzLExJQlRPT0w9LiosTElCVE9PTD0ke0hPU1RfU1lTfS1saWJ0b29sLGcgJGQvYXByX3J1bGVzLm1rCisJc2VkIC1pIHMsXCRcKGFwcl9idWlsZGVyc1wpLCR7U1RBR0lOR19EQVRBRElSfS9hcHIvLGcgJGQvYXByX3J1bGVzLm1rCisJY3AgJHtTfS9idWlsZC9ta2Rpci5zaCAkZC8KKwljcCAke1N9L2J1aWxkL21ha2VfZXhwb3J0cy5hd2sgJGQvCisJY3AgJHtTfS9idWlsZC9tYWtlX3Zhcl9leHBvcnQuYXdrICRkLworCWNwICR7U30vJHtIT1NUX1NZU30tbGlidG9vbCAke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9L2J1aWxkLTEvbGlidG9vbAorfQorCitkb19jb21waWxlX3B0ZXN0KCkgeworCWNkICR7U30vdGVzdAorCW9lX3J1bm1ha2UKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwl0PSR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKKwlta2RpciAtcCAkdC8ubGlicworCWNwIC1yICR7U30vdGVzdC9kYXRhICR0LworCWNwIC1yICR7U30vdGVzdC8ubGlicy8qLnNvICR0Ly5saWJzLworCWNwICR7U30vdGVzdC9wcm9jX2NoaWxkICR0LworCWNwICR7U30vdGVzdC9yZWFkY2hpbGQgJHQvCisJY3AgJHtTfS90ZXN0L3NvY2tjaGlsZCAkdC8KKwljcCAke1N9L3Rlc3Qvc29ja3BlcmYgJHQvCisJY3AgJHtTfS90ZXN0L3Rlc3RhbGwgJHQvCisJY3AgJHtTfS90ZXN0L3RyeXJlYWQgJHQvCit9CisKK2V4cG9ydCBDT05GSUdfU0hFTEw9Ii9iaW4vYmFzaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcmdwLXN0YW5kYWxvbmUvYXJncC1zdGFuZGFsb25lXzEuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcmdwLXN0YW5kYWxvbmUvYXJncC1zdGFuZGFsb25lXzEuMy5iYgppbmRleCBiZDBjZmRmLi4yMWJiY2FiIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXJncC1zdGFuZGFsb25lL2FyZ3Atc3RhbmRhbG9uZV8xLjMuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2FyZ3Atc3RhbmRhbG9uZS9hcmdwLXN0YW5kYWxvbmVfMS4zLmJiCkBAIC0xOSw2ICsxOSw5IEBACiAKIENGTEFHUyArPSAiLWZQSUMgLVVfX09QVElNSVpFX18iCiAKK1JERVBFTkRTXyR7UE59LWRldiA9ICIiCitSREVQRU5EU18ke1BOfS1zdGF0aWNkZXYgPSAiIgorCiBkb19pbnN0YWxsKCkgewogCWluc3RhbGwgLUQgLW0gMDY0NCAke0J9L2xpYmFyZ3AuYSAke0R9JHtsaWJkaXJ9L2xpYmFyZ3AuYQogCWluc3RhbGwgLUQgLW0gMDY0NCAke1N9L2FyZ3AuaCAke0R9JHtpbmNsdWRlZGlyfS9hcmdwLmgKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hc3BlbGwvYXNwZWxsL2djYzcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXNwZWxsL2FzcGVsbC9nY2M3LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmZmQwNzcKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXNwZWxsL2FzcGVsbC9nY2M3LnBhdGNoCkBAIC0wLDAgKzEsNDAgQEAKK0Zyb20gODA4OWZhMDIxMjJmZWQwYTYzOTRlYmExNGJiZWRjYjFkMThlMjM4NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtldmluIEF0a2luc29uIDxrZXZpbmFAZ251Lm9yZz4KK0RhdGU6IFRodSwgMjkgRGVjIDIwMTYgMDA6NTA6MzEgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gQ29tcGlsZSBGaXhlcyBmb3IgR0NDIDcuCisKK0Nsb3NlcyAjNTE5LgorLS0tCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCisgbW9kdWxlcy9maWx0ZXIvdGV4LmNwcCB8IDIgKy0KKyBwcm9nL2NoZWNrX2Z1bnMuY3BwICAgIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbW9kdWxlcy9maWx0ZXIvdGV4LmNwcCBiL21vZHVsZXMvZmlsdGVyL3RleC5jcHAKK2luZGV4IGE5Nzk1MzkuLjE5YWI2M2MgMTAwNjQ0CistLS0gYS9tb2R1bGVzL2ZpbHRlci90ZXguY3BwCisrKysgYi9tb2R1bGVzL2ZpbHRlci90ZXguY3BwCitAQCAtMTc0LDcgKzE3NCw3IEBAIG5hbWVzcGFjZSB7CisgCisgICAgIGlmIChjID09ICd7JykgeworIAorLSAgICAgIGlmICh0b3AuaW5fd2hhdCA9PSBQYXJtIHx8IHRvcC5pbl93aGF0ID09IE9wdCB8fCB0b3AuZG9fY2hlY2sgPT0gJ1wwJykKKysgICAgICBpZiAodG9wLmluX3doYXQgPT0gUGFybSB8fCB0b3AuaW5fd2hhdCA9PSBPcHQgfHwgKnRvcC5kb19jaGVjayA9PSAnXDAnKQorIAlwdXNoX2NvbW1hbmQoUGFybSk7CisgCisgICAgICAgdG9wLmluX3doYXQgPSBQYXJtOworZGlmZiAtLWdpdCBhL3Byb2cvY2hlY2tfZnVucy5jcHAgYi9wcm9nL2NoZWNrX2Z1bnMuY3BwCitpbmRleCBkYjU0ZjNkLi44OWVlMDlkIDEwMDY0NAorLS0tIGEvcHJvZy9jaGVja19mdW5zLmNwcAorKysrIGIvcHJvZy9jaGVja19mdW5zLmNwcAorQEAgLTY0Nyw3ICs2NDcsNyBAQCBzdGF0aWMgdm9pZCBwcmludF90cnVuY2F0ZShGSUxFICogb3V0LCBjb25zdCBjaGFyICogd29yZCwgaW50IHdpZHRoKSB7CisgICAgIH0KKyAgIH0KKyAgIGlmIChpID09IHdpZHRoLTEpIHsKKy0gICAgaWYgKHdvcmQgPT0gJ1wwJykKKysgICAgaWYgKCp3b3JkID09ICdcMCcpCisgICAgICAgcHV0KG91dCwnICcpOworICAgICBlbHNlIGlmICh3b3JkW2xlbl0gPT0gJ1wwJykKKyAgICAgICBwdXQob3V0LCB3b3JkLCBsZW4pOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2FzcGVsbC9hc3BlbGxfMC42MC42LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXNwZWxsL2FzcGVsbF8wLjYwLjYuMS5iYgppbmRleCA1YTIzNzU0Li4xOWE3MTU1IDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXNwZWxsL2FzcGVsbF8wLjYwLjYuMS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXNwZWxsL2FzcGVsbF8wLjYwLjYuMS5iYgpAQCAtNiw3ICs2LDkgQEAKIAogUFIgPSAicjEiCiAKLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9hc3BlbGwvYXNwZWxsLSR7UFZ9LnRhci5neiIKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9hc3BlbGwvYXNwZWxsLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9nY2M3LnBhdGNoIFwKKyAgICAgICAgICAiCiBTUkNfVVJJW21kNXN1bV0gPSAiZTY2YTljOWFmNmE2MGRjNDYxMzRmZGFjZjZjZTk3ZDciCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjUyNTgzYTgzYTYzNjMzNzAxYzVmNzFkYjNkYzQwYWFiODdiN2Y3NmIyOTcyM2FlYjI3OTQxZWZmNDJkZjZlMSIKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWF0a18yLjIyLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItYXRrXzIuMjIuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNThlZGI2ZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItYXRrXzIuMjIuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLVNVTU1BUlkgPSAiQVQtU1BJIDIgVG9vbGtpdCBCcmlkZ2UiCi1MSUNFTlNFID0gIkxHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWU5ZjI4OGJhOTgyZDYwNTE4ZjM3NWI1ODk4MjgzODg2IgotCi1NQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCi0KLVNSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8ke01BSl9WRVJ9LyR7QlBOfS0ke1BWfS50YXIueHoiCi1TUkNfVVJJW21kNXN1bV0gPSAiYWE2MmFlZDIxYjhlMDNkYzQ0YWI4MWFlNDlkODkzY2EiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZThiZGVkYmViODczZWIyMjllYjA4Yzg4ZTExZDA3NzEzZWMyNWFlMTc1MjUxNjQ4YWQxYTlkYTZjMjExMTNjMSIKLQotREVQRU5EUyA9ICJkYnVzIGdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBhdGsgYXQtc3BpMi1jb3JlIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgotCi0jIFRoZSBhdC1zcGkyLWNvcmUgcmVxdWlyZXMgeDExIGluIERJU1RST19GRUFUVVJFUwotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotUEFDS0FHRVMgPSsgIiR7UE59LWdub21lICR7UE59LWd0azIiCi0KLUZJTEVTXyR7UE59LWdub21lID0gIiR7bGliZGlyfS9nbm9tZS1zZXR0aW5ncy1kYWVtb24tMy4wL2d0ay1tb2R1bGVzIgotRklMRVNfJHtQTn0tZ3RrMiA9ICIke2xpYmRpcn0vZ3RrLTIuMC9tb2R1bGVzL2xpYmF0ay1icmlkZ2UuKiIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1hdGtfMi4yNC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWF0a18yLjI0LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGEwZTQxMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1hdGtfMi4yNC4xLmJiCkBAIC0wLDAgKzEsMjIgQEAKK1NVTU1BUlkgPSAiQVQtU1BJIDIgVG9vbGtpdCBCcmlkZ2UiCitIT01FUEFHRSA9ICJodHRwczovL3dpa2kubGludXhmb3VuZGF0aW9uLm9yZy9hY2Nlc3NpYmlsaXR5L2QtYnVzIgorTElDRU5TRSA9ICJMR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lOWYyODhiYTk4MmQ2MDUxOGYzNzViNTg5ODI4Mzg4NiIKKworTUFKX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgorCitTUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke0JQTn0vJHtNQUpfVkVSfS8ke0JQTn0tJHtQVn0udGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gIjc5Mzg4ZmJjNGRjN2YyNzM5NDU1NmRkMzg5YWViNTk0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYwZGM5MGFjNGY3NGI4ZmZlOTZhOTM2M2MyNTIwOGE0NDNiMzgxYmFjZWNmZWZlYTZkZTU0OWYyMGVkNjk1N2QiCisKK0RFUEVORFMgPSAiZGJ1cyBnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUgYXRrIGF0LXNwaTItY29yZSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGRpc3Ryb19mZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KKworIyBUaGUgYXQtc3BpMi1jb3JlIHJlcXVpcmVzIHgxMSBpbiBESVNUUk9fRkVBVFVSRVMKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCisKK1BBQ0tBR0VTID0rICIke1BOfS1nbm9tZSAke1BOfS1ndGsyIgorCitGSUxFU18ke1BOfS1nbm9tZSA9ICIke2xpYmRpcn0vZ25vbWUtc2V0dGluZ3MtZGFlbW9uLTMuMC9ndGstbW9kdWxlcyIKK0ZJTEVTXyR7UE59LWd0azIgPSAiJHtsaWJkaXJ9L2d0ay0yLjAvbW9kdWxlcy9saWJhdGstYnJpZGdlLioiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItY29yZV8yLjIyLjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItY29yZV8yLjIyLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3Mjg0OWUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWNvcmVfMi4yMi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotU1VNTUFSWSA9ICJBc3Npc3RpdmUgVGVjaG5vbG9neSBTZXJ2aWNlIFByb3ZpZGVyIEludGVyZmFjZSAoZGJ1cyBjb3JlKSIKLUxJQ0VOU0UgPSAiTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTlmMjg4YmE5ODJkNjA1MThmMzc1YjU4OTgyODM4ODYiCi0KLU1BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKLQotU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLW5scy5tNC1UYWtlLWl0LWZyb20tZ2V0dGV4dC0wLjE1LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtYnVpbGQtQWRkLXdpdGgtc3lzdGVtZHVzZXJ1bml0ZGlyLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzZGE1ZmU2MmE2NTNlNDlkYWQxYzQ3ZjlhNDZmZWU1NiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0MTVlYTNhZjIxMzE4MzA4Nzk4ZTA5OGJlOGIzYTE3YjJmMGNmMmZlMTZjZWNkZTVhZDg0MGNmNGUwZjJjODBhIgotCi1ERVBFTkRTID0gImRidXMgZ2xpYi0yLjAgdmlydHVhbC9saWJ4MTEgbGlieGkgbGlieHRzdCBpbnRsdG9vbC1uYXRpdmUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGd0ay1kb2MgZ2V0dGV4dCBzeXN0ZW1kIHBrZ2NvbmZpZyBkaXN0cm9fZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgotIyBkZXBlbmRzIG9uIHZpcnR1YWwvbGlieDExCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXhldmllIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtc3lzdGVtZHVzZXJ1bml0ZGlyPSR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9IFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtZGJ1cy1kYWVtb25kaXI9JHtiaW5kaXJ9IgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9kYnVzLTEvc2VydmljZXMvKi5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9hY2Nlc3NpYmlsaXR5LXNlcnZpY2VzLyouc2VydmljZSBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kZWZhdWx0cy9hdC1zcGkyIFwKLSAgICAgICAgICAgICAgICAke3N5c3RlbWRfdXNlcl91bml0ZGlyfS9hdC1zcGktZGJ1cy1idXMuc2VydmljZcKgXAotICAgICAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1jb3JlXzIuMjQuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1jb3JlXzIuMjQuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjg3YWUzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWNvcmVfMi4yNC4xLmJiCkBAIC0wLDAgKzEsMzAgQEAKK1NVTU1BUlkgPSAiQXNzaXN0aXZlIFRlY2hub2xvZ3kgU2VydmljZSBQcm92aWRlciBJbnRlcmZhY2UgKGRidXMgY29yZSkiCitIT01FUEFHRSA9ICJodHRwczovL3dpa2kubGludXhmb3VuZGF0aW9uLm9yZy9hY2Nlc3NpYmlsaXR5L2QtYnVzIgorTElDRU5TRSA9ICJMR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lOWYyODhiYTk4MmQ2MDUxOGYzNzViNTg5ODI4Mzg4NiIKKworTUFKX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgorCitTUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke0JQTn0vJHtNQUpfVkVSfS8ke0JQTn0tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbmxzLm00LVRha2UtaXQtZnJvbS1nZXR0ZXh0LTAuMTUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1idWlsZC1BZGQtd2l0aC1zeXN0ZW1kdXNlcnVuaXRkaXIucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjYxZDBhNDcxZTY5MzI5MjkzNGE3M2YyODhlYmZmMzVjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFlOTBkMDY0YjkzN2FhY2ZlNzlhOTYyMzJhYzdlNjNkMjhkNzE2ZTg1YmQ5ZmY0MzMzZjg2NTMwNWE5NTliNWIiCisKK0RFUEVORFMgPSAiZGJ1cyBnbGliLTIuMCB2aXJ0dWFsL2xpYngxMSBsaWJ4aSBsaWJ4dHN0IGludGx0b29sLW5hdGl2ZSIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ3RrLWRvYyBnZXR0ZXh0IHN5c3RlbWQgcGtnY29uZmlnIGRpc3Ryb19mZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCisjIGRlcGVuZHMgb24gdmlydHVhbC9saWJ4MTEKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUteGV2aWUgXAorICAgICAgICAgICAgICAgIC0td2l0aC1zeXN0ZW1kdXNlcnVuaXRkaXI9JHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0gXAorICAgICAgICAgICAgICAgIC0td2l0aC1kYnVzLWRhZW1vbmRpcj0ke2JpbmRpcn0iCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2RidXMtMS9zZXJ2aWNlcy8qLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL2FjY2Vzc2liaWxpdHktc2VydmljZXMvKi5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RlZmF1bHRzL2F0LXNwaTIgXAorICAgICAgICAgICAgICAgICR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9L2F0LXNwaS1kYnVzLWJ1cy5zZXJ2aWNlwqBcCisgICAgICAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdGtfMi4yMi4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdGtfMi4yMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYzgwZjk1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXRrXzIuMjIuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLVNVTU1BUlkgPSAiQWNjZXNzaWJpbGl0eSB0b29sa2l0IGZvciBHTk9NRSIKLUhPTUVQQUdFID0gImh0dHA6Ly9saXZlLmdub21lLm9yZy9HQVAvIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCi1TRUNUSU9OID0gIngxMS9saWJzIgotCi1MSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYmY1MDAwMmFlZmQwMDJmNDllN2JiODU0MDYzZjdlNyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hdGsvYXRrdXRpbC5jO2VuZGxpbmU9MTg7bWQ1PTZmZDMxY2QyZmRjOWIzMGY2MTljYThkODE5YmMxMmQzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2F0ay9hdGsuaDtlbmRsaW5lPTE4O21kNT1mY2Q3NzEwMTg3ZTBlYWU0ODVlMzU2YzMwZDFiMGMzYiIKLQotREVQRU5EUyA9ICJnbGliLTIuMCIKLQotaW5oZXJpdCBnbm9tZWJhc2UgZ3RrLWRvYyBnZXR0ZXh0IHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiYzdmMmFkY2Y3NWU0MDU4NzI3MTc0Y2RlOTcwZTkxMjkiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJkMzQ5ZjVjYTQ5NzRjOWM3NmE0OTYzZTViMjU0NzIwNTIzYjBjNzg2NzJjYmMwZTFhMzQ3NWRiZDliM2Q0NGI2IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1nbGlidGVzdCBcCi0gICAgICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0a18yLjI0LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0a18yLjI0LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDYyMzE5YwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXRrXzIuMjQuMC5iYgpAQCAtMCwwICsxLDIxIEBACitTVU1NQVJZID0gIkFjY2Vzc2liaWxpdHkgdG9vbGtpdCBmb3IgR05PTUUiCitIT01FUEFHRSA9ICJodHRwOi8vbGl2ZS5nbm9tZS5vcmcvR0FQLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgorU0VDVElPTiA9ICJ4MTEvbGlicyIKKworTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9M2JmNTAwMDJhZWZkMDAyZjQ5ZTdiYjg1NDA2M2Y3ZTcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYXRrL2F0a3V0aWwuYztlbmRsaW5lPTE4O21kNT02ZmQzMWNkMmZkYzliMzBmNjE5Y2E4ZDgxOWJjMTJkMyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hdGsvYXRrLmg7ZW5kbGluZT0xODttZDU9ZmNkNzcxMDE4N2UwZWFlNDg1ZTM1NmMzMGQxYjBjM2IiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAiCisKK2luaGVyaXQgZ25vbWViYXNlIGd0ay1kb2MgZ2V0dGV4dCB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCisKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjM3NDdhODAwODlkZmEzYzBiYmNmMjFhZGZmZjk5NjhiIgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiYmIyZGFhOWE4MDhjNzNhN2E3OWQyOTgzZjMzM2UwYmE3NGJlNDJmYzUxZTNiYTFmYWYyNTUxYTYzNjQ4N2E0OSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZ2xpYnRlc3QgXAorICAgICAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYWNsL3Rlc3QtZml4LWRpcmVjdG9yeS1wZXJtaXNzaW9ucy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC90ZXN0LWZpeC1kaXJlY3RvcnktcGVybWlzc2lvbnMucGF0Y2gKaW5kZXggY2Q0NTEwYy4uZTY0OTkwYSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYWNsL3Rlc3QtZml4LWRpcmVjdG9yeS1wZXJtaXNzaW9ucy5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvdGVzdC1maXgtZGlyZWN0b3J5LXBlcm1pc3Npb25zLnBhdGNoCkBAIC0xLDYgKzEsOSBAQAorRnJvbSAzMTE1ODlmZWRmMTk2MTY4MzgyZDhmMGRiMzAzYWIzMjhiY2Y5ZDgzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGV0ZXIgU2VlYmFjaCA8cGV0ZXIuc2VlYmFjaEB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAxMSBNYXkgMjAxNiAxNToxNjowNiAtMDUwMAorU3ViamVjdDogW1BBVENIXSBhY2wuaW5jLCBydW4tcHRlc3Q6IGltcHJvdmUgcHRlc3QgZnVuY3Rpb25hbGl0eSBvbiBsaW1pdGVkCisKIGNvbW1pdCBjNDViYWU4NDgxN2E3MGZlZjZjMmI2NjFhMDdhNDkyYTBkMjNhZTg1Ci1BdXRob3I6IFBldGVyIFNlZWJhY2ggPHBldGVyLnNlZWJhY2hAd2luZHJpdmVyLmNvbT4KLURhdGU6ICAgV2VkIE1heSAxMSAxNToxNjowNiAyMDE2IC0wNTAwCiAKICAgICBGaXggcGVybWlzc2lvbnMgb24gdGVtcG9yYXJ5IGRpcmVjdG9yeQogCkBAIC0xMCw2ICsxMywxMyBAQAogCiAgICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgU2VlYmFjaCA8cGV0ZXIuc2VlYmFjaEB3aW5kcml2ZXIuY29tPgogCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFsgaHR0cDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2NnaXQvYWNsLmdpdC9jb21taXQvP2lkPWM2NzcyYTk1ODgwMGRlMDY0NDgyNjM0Zjc3YzIwYTBmYWFmYzVhZjYgXQorCitTaWduZWQtb2ZmLWJ5OiBEZW5na2UgRHUgPGRlbmdrZS5kdUB3aW5kcml2ZXIuY29tPgorLS0tCisgdGVzdC9yb290L3Blcm1pc3Npb25zLnRlc3QgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKwogZGlmZiAtLWdpdCBhL3Rlc3Qvcm9vdC9wZXJtaXNzaW9ucy50ZXN0IGIvdGVzdC9yb290L3Blcm1pc3Npb25zLnRlc3QKIGluZGV4IDQyNjE1ZjUuLjA5OGI1MmEgMTAwNjQ0CiAtLS0gYS90ZXN0L3Jvb3QvcGVybWlzc2lvbnMudGVzdApAQCAtMjIsMyArMzIsNiBAQAogIAkkIG1rZGlyIGQKICAJJCBjZCBkCiAgCSQgdW1hc2sgMDI3CistLSAKKzIuOC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbF8yLjIuNTIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2xfMi4yLjUyLmJiCmluZGV4IDMwNmM3YjUuLjhmM2RjNDUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbF8yLjIuNTIuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYWNsXzIuMi41Mi5iYgpAQCAtNDMsNiArNDMsMTEgQEAKIAl0YXIgLWMgLS1leGNsdWRlPW5mcyB0ZXN0LyB8ICggY2QgJHtEfSR7UFRFU1RfUEFUSH0gJiYgdGFyIC14ZiAtICkKIAlta2RpciAke0R9JHtQVEVTVF9QQVRIfS9pbmNsdWRlCiAJY3AgJHtTfS9pbmNsdWRlL2J1aWxkZGVmcyAke1N9L2luY2x1ZGUvYnVpbGRtYWNyb3MgJHtTfS9pbmNsdWRlL2J1aWxkcnVsZXMgJHtEfSR7UFRFU1RfUEFUSH0vaW5jbHVkZS8KKwkjIFJlbW92ZSBhbnkgYnVpbGQgaG9zdCByZWZlcmVuY2VzCisJc2VkIC1lICJzOi0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH06OmciIFwKKwkgICAgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKKwkgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCisJICAgIC1pICR7RH0ke1BURVNUX1BBVEh9L2luY2x1ZGUvYnVpbGRkZWZzCiB9CiAKIFJERVBFTkRTXyR7UE59LXB0ZXN0ID0gImFjbCBiYXNoIGNvcmV1dGlscyBwZXJsIHBlcmwtbW9kdWxlLWZpbGVoYW5kbGUgcGVybC1tb2R1bGUtZ2V0b3B0LXN0ZCBwZXJsLW1vZHVsZS1wb3NpeCBzaGFkb3ciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2F0dHIuaW5jCmluZGV4IGU4YjVkMDUuLjI0ZWY1YWQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2F0dHIuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2F0dHIuaW5jCkBAIC0zMiw2ICszMiwxMiBAQAogCSAgZG8gY3AgJHtTfS9pbmNsdWRlLyRpICR7RH0ke1BURVNUX1BBVEh9L2luY2x1ZGUvOyBcCiAJZG9uZQogCXNlZCAtZSAnc3w7IEBlY2hvfDsgZWNob3wnIC1pICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvTWFrZWZpbGUKKyAgICAKKwkjIFJlbW92ZSBhbnkgYnVpbGQgaG9zdCByZWZlcmVuY2VzCisJc2VkIC1lICJzOi0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH06OmciIFwKKwkgICAgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKKwkgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCisJICAgIC1pICR7RH0ke1BURVNUX1BBVEh9L2luY2x1ZGUvYnVpbGRkZWZzCiB9CiAKIFJERVBFTkRTXyR7UE59LXB0ZXN0ID0gImF0dHIgY29yZXV0aWxzIHBlcmwtbW9kdWxlLWZpbGVoYW5kbGUgcGVybC1tb2R1bGUtZ2V0b3B0LXN0ZCBwZXJsLW1vZHVsZS1wb3NpeCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2F0dHIvMDAwMS1Vc2Utc3RkaW50LXR5cGVzLWNvbnNpc3RlbnRseS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2F0dHIvMDAwMS1Vc2Utc3RkaW50LXR5cGVzLWNvbnNpc3RlbnRseS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kY2Q2NTA3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYXR0ci8wMDAxLVVzZS1zdGRpbnQtdHlwZXMtY29uc2lzdGVudGx5LnBhdGNoCkBAIC0wLDAgKzEsNjkgQEAKK0Zyb20gMzdhMjdiNmZkMDllY2IzNzA5N2I4NWU1ZGI3NGU0Zjc3YjgwZmUwYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEZlbGl4IEphbmRhIDxmZWxpeC5qYW5kYUBwb3N0ZW8uZGU+CitEYXRlOiBUdWUsIDEyIEphbiAyMDE2IDIyOjIwOjMzICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIFVzZSBzdGRpbnQgdHlwZXMgY29uc2lzdGVudGx5CisKKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworIGluY2x1ZGUvYXR0cmlidXRlcy5oIHwgNiArKysrLS0KKyBtYW4vbWFuMy9hdHRyX2xpc3QuMyB8IDggKysrKy0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKworSW5kZXg6IGF0dHItMi40LjQ3L2luY2x1ZGUvYXR0cmlidXRlcy5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gYXR0ci0yLjQuNDcub3JpZy9pbmNsdWRlL2F0dHJpYnV0ZXMuaAorKysrIGF0dHItMi40LjQ3L2luY2x1ZGUvYXR0cmlidXRlcy5oCitAQCAtMjIsNiArMjIsNyBAQAorIGV4dGVybiAiQyIgeworICNlbmRpZgorIAorKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyAvKgorICAqCUFuIGFsbW9zdC1JUklYLWNvbXBhdGlibGUgZXh0ZW5kZWQgYXR0cmlidXRlcyBBUEkKKyAgKgkodGhlIElSSVggYXR0cmlidXRlICJsaXN0IiBvcGVyYXRpb24gaXMgbWlzc2luZywgYWRkZWQgQVRUUl9TRUNVUkUpLgorQEAgLTY5LDcgKzcwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgYXR0cmxpc3QgeworICAqIGFsX29mZnNldFtpXSBlbnRyeSBwb2ludHMgdG8uCisgICovCisgdHlwZWRlZiBzdHJ1Y3QgYXR0cmxpc3RfZW50IHsJLyogZGF0YSBmcm9tIGF0dHJfbGlzdCgpICovCistCXVfaW50MzJfdAlhX3ZhbHVlbGVuOwkvKiBudW1iZXIgYnl0ZXMgaW4gdmFsdWUgb2YgYXR0ciAqLworKwl1aW50MzJfdAlhX3ZhbHVlbGVuOwkvKiBudW1iZXIgYnl0ZXMgaW4gdmFsdWUgb2YgYXR0ciAqLworIAljaGFyCQlhX25hbWVbMV07CS8qIGF0dHIgbmFtZSAoTlVMTCB0ZXJtaW5hdGVkKSAqLworIH0gYXR0cmxpc3RfZW50X3Q7CisgCitAQCAtOTAsNyArOTEsNyBAQCB0eXBlZGVmIHN0cnVjdCBhdHRybGlzdF9lbnQgewkvKiBkYXRhIGZyCisgICogb3BlcmF0aW9uIG9uIGEgY3Vyc29yIGlzIHRvIGJ6ZXJvKCkgaXQuCisgICovCisgdHlwZWRlZiBzdHJ1Y3QgYXR0cmxpc3RfY3Vyc29yIHsKKy0JdV9pbnQzMl90CW9wYXF1ZVs0XTsJLyogYW4gb3BhcXVlIGNvb2tpZSAqLworKwl1aW50MzJfdAlvcGFxdWVbNF07CS8qIGFuIG9wYXF1ZSBjb29raWUgKi8KKyB9IGF0dHJsaXN0X2N1cnNvcl90OworIAorIC8qCitJbmRleDogYXR0ci0yLjQuNDcvbWFuL21hbjMvYXR0cl9saXN0LjMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhdHRyLTIuNC40Ny5vcmlnL21hbi9tYW4zL2F0dHJfbGlzdC4zCisrKysgYXR0ci0yLjQuNDcvbWFuL21hbjMvYXR0cl9saXN0LjMKK0BAIC03Miw5ICs3Miw5IEBAIFRoZSBjb250ZW50cyBvZiBhbiBcZjRhdHRybGlzdF90XGZQIHN0cnUKKyAubmYKKyAuZnQgNAorIC50YSA5biAyMm4KKy1fX2ludDMyX3QgYWxfY291bnQ7IC9cKCoqIG51bWJlciBvZiBlbnRyaWVzIGluIGF0dHJsaXN0IFwoKiovCistX19pbnQzMl90IGFsX21vcmU7IC9cKCoqIFQvRjogbW9yZSBhdHRycyAoZG8gc3lzY2FsbCBhZ2FpbikgXCgqKi8KKy1fX2ludDMyX3QgYWxfb2Zmc2V0WzFdOyAvXCgqKiBieXRlIG9mZnNldHMgb2YgYXR0cnMgW3Zhci1zaXplZF0gXCgqKi8KKytpbnQzMl90IGFsX2NvdW50OyAvXCgqKiBudW1iZXIgb2YgZW50cmllcyBpbiBhdHRybGlzdCBcKCoqLworK2ludDMyX3QgYWxfbW9yZTsgL1woKiogVC9GOiBtb3JlIGF0dHJzIChkbyBzeXNjYWxsIGFnYWluKSBcKCoqLworK2ludDMyX3QgYWxfb2Zmc2V0WzFdOyAvXCgqKiBieXRlIG9mZnNldHMgb2YgYXR0cnMgW3Zhci1zaXplZF0gXCgqKi8KKyAuZnQgMQorIC5maQorIC5SRQorQEAgLTExMyw3ICsxMTMsNyBAQCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgbWVtYmVyczoKKyAubmYKKyAuZnQgNAorIC50YSA5biAyMm4KKy11X2ludDMyX3QgYV92YWx1ZWxlbjsgL1woKiogbnVtYmVyIGJ5dGVzIGluIHZhbHVlIG9mIGF0dHIgXCgqKi8KKyt1aW50MzJfdCBhX3ZhbHVlbGVuOyAvXCgqKiBudW1iZXIgYnl0ZXMgaW4gdmFsdWUgb2YgYXR0ciBcKCoqLworIGNoYXIgYV9uYW1lW107IC9cKCoqIGF0dHIgbmFtZSAoTlVMTCB0ZXJtaW5hdGVkKSBcKCoqLworIC5mdCAxCisgLmZpCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyXzIuNC40Ny5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2F0dHJfMi40LjQ3LmJiCmluZGV4IDU1NmM4ZTQuLmZjODhiZWYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2F0dHJfMi40LjQ3LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2F0dHJfMi40LjQ3LmJiCkBAIC00LDYgKzQsOSBAQAogIyBmdXR1cmUgcmVsZWFzZXMgb2YgYXR0ciwgcmVtb3ZlIHRoaXMgd2hlbiB1cGRhdGluZyB0aGUgcmVjaXBlLgogU1JDX1VSSSArPSAiZmlsZTovL2F0dHItTWlzc2luZy1jb25maWd1cmUuYWMucGF0Y2ggXAogICAgICAgICAgICAgZmlsZTovL2RvbnQtdXNlLWRlY2wtbWFjcm9zLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9SZW1vdmUtdGhlLXNlY3Rpb24tMi1tYW4tcGFnZXMucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL1JlbW92ZS10aGUtYXR0ci41LW1hbi1wYWdlLW1vdmVkLXRvLW1hbi1wYWdlcy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2Utc3RkaW50LXR5cGVzLWNvbnNpc3RlbnRseS5wYXRjaCBcCiAgICAgICAgICAgICIKIAogU1JDX1VSSVttZDVzdW1dID0gIjg0ZjU4ZGVjMDBiNjBmMmRjOGZkMWM5NzA5MjkxY2M3IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvZWEtYWNsLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2VhLWFjbC5pbmMKaW5kZXggYzU4N2IzYy4uZTZmNGM3MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvZWEtYWNsLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9lYS1hY2wuaW5jCkBAIC00Nyw2ICs0NywzIEBACiBGSUxFU19saWIke0JQTn0gPSAiJHtiYXNlX2xpYmRpcn0vbGliKiR7U09MSUJTfSIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0jIE9ubHkgYXBwZW5kIGxkZmxhZ3MgZm9yIHRhcmdldCByZWNpcGUgYW5kIGlmIFVTRV9OTFMgaXMgZW5hYmxlZAotTERGTEFHU19hcHBlbmRfbGliYy11Y2xpYmNfY2xhc3MtdGFyZ2V0ID0gIiR7QFsnJywgJyAtbGludGwgJ11bKGQuZ2V0VmFyKCdVU0VfTkxTJykgPT0gJ3llcycpXX0iCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtdWNsaWJjX2NsYXNzLXRhcmdldCA9ICIke0BbJycsICcgLS1kaXNhYmxlLWdldHRleHQgJ11bKGQuZ2V0VmFyKCdVU0VfTkxTJykgPT0gJ25vJyldfSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2ZpbGVzL1JlbW92ZS10aGUtYXR0ci41LW1hbi1wYWdlLW1vdmVkLXRvLW1hbi1wYWdlcy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2ZpbGVzL1JlbW92ZS10aGUtYXR0ci41LW1hbi1wYWdlLW1vdmVkLXRvLW1hbi1wYWdlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNWFiODNkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvZmlsZXMvUmVtb3ZlLXRoZS1hdHRyLjUtbWFuLXBhZ2UtbW92ZWQtdG8tbWFuLXBhZ2VzLnBhdGNoCkBAIC0wLDAgKzEsMjQwIEBACitGcm9tIDYwNDdjODUyMmI5MTIzNWFkMWU4MzVmNDRmNWUzNjQ3MmQ5ZDQ5YjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmRyZWFzIEdydWVuYmFjaGVyIDxhbmRyZWFzLmdydWVuYmFjaGVyQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMjIgQXByIDIwMTUgMTE6NDY6NTkgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIFJlbW92ZSB0aGUgYXR0ci41IG1hbiBwYWdlIChtb3ZlZCB0byBtYW4tcGFnZXMpCisKK0NvbW1pdCBkY2U5YjQ0NDhjN2YyYjIyYmQyMDZjZDA2OGZiMDVjYjJmMzI1NWI5IGZyb20KK2h0dHBzOi8vZ2l0LnNhdmFubmFoLm5vbmdudS5vcmcvZ2l0L2F0dHIuZ2l0CisKK1RoZSBhdHRyLjUgcGFnZSBpcyBwYXJ0IG9mIHRoZSBleHRlbmRlZCBhdHRyaWJ1dGUgc3lzdGVtIGNhbGwgZG9jdW1lbnRhdGlvbiwKK3doaWNoIGhhcyBiZWVuIG1vdmVkIGludG8gdGhlIG1hbi1wYWdlcyBwYWNrYWdlLiBNb3ZlIHRoZSBhdHRyLjUgcGFnZSB0aGVyZQorYXMgd2VsbC4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitbTUE6IHVwZGF0ZWQgdG8gYXBwbHkgZGlyZWN0bHkgdG8gdjIuNC40N10KK1NpZ25lZC1vZmYtYnk6IE1hcmsgQXNzZWxzdGluZSA8bWFyay5hc3NlbHN0aW5lQHdpbmRyaXZlci5jb20+CistLS0KKyBtYW4vTWFrZWZpbGUgICAgICB8ICAgMiArLQorIG1hbi9tYW41L01ha2VmaWxlIHwgIDM1IC0tLS0tLS0tLS0tLS0KKyBtYW4vbWFuNS9hdHRyLjUgICB8IDE1MyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAzIGZpbGVzIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxODkgZGVsZXRpb25zKC0pCisgZGVsZXRlIG1vZGUgMTAwNjQ0IG1hbi9tYW41L01ha2VmaWxlCisgZGVsZXRlIG1vZGUgMTAwNjQ0IG1hbi9tYW41L2F0dHIuNQorCitkaWZmIC0tZ2l0IGEvbWFuL01ha2VmaWxlIGIvbWFuL01ha2VmaWxlCitpbmRleCA3NTVkYWVkLi45MzAxZjA5IDEwMDY0NAorLS0tIGEvbWFuL01ha2VmaWxlCisrKysgYi9tYW4vTWFrZWZpbGUKK0BAIC0xOSw3ICsxOSw3IEBACisgVE9QRElSID0gLi4KKyBpbmNsdWRlICQoVE9QRElSKS9pbmNsdWRlL2J1aWxkZGVmcworIAorLVNVQkRJUlMgPSBtYW4xIG1hbjMgbWFuNQorK1NVQkRJUlMgPSBtYW4xIG1hbjMKKyAKKyBkZWZhdWx0IDogJChTVUJESVJTKQorIAorZGlmZiAtLWdpdCBhL21hbi9tYW41L01ha2VmaWxlIGIvbWFuL21hbjUvTWFrZWZpbGUKK2RlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggNmI3MGQzZC4uMDAwMDAwMAorLS0tIGEvbWFuL21hbjUvTWFrZWZpbGUKKysrKyAvZGV2L251bGwKK0BAIC0xLDM1ICswLDAgQEAKKy0jCistIyBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDIgU2lsaWNvbiBHcmFwaGljcywgSW5jLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKy0jIENvcHlyaWdodCAoQykgMjAwOSAgQW5kcmVhcyBHcnVlbmJhY2hlciA8YWdydWVuQHN1c2UuZGU+CistIworLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKy0jIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CistIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorLSMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKy0jCistIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLSMKKy0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKy0jCistCistVE9QRElSID0gLi4vLi4KKy1pbmNsdWRlICQoVE9QRElSKS9pbmNsdWRlL2J1aWxkZGVmcworLQorLU1BTl9TRUNUSU9OCT0gNQorLQorLU1BTl9QQUdFUwk9ICQoc2hlbGwgZWNobyAqLiQoTUFOX1NFQ1RJT04pKQorLU1BTl9ERVNUCT0gJChQS0dfTUFOX0RJUikvbWFuJChNQU5fU0VDVElPTikKKy1MU1JDRklMRVMJPSAkKE1BTl9QQUdFUykKKy0KKy1kZWZhdWx0IDogJChNQU5fUEFHRVMpCistCistaW5jbHVkZSAkKEJVSUxEUlVMRVMpCistCistaW5zdGFsbCA6IGRlZmF1bHQKKy0JJChJTlNUQUxMKSAtbSA3NTUgLWQgJChNQU5fREVTVCkKKy0JJChJTlNUQUxMX01BTikKKy1pbnN0YWxsLWRldiBpbnN0YWxsLWxpYjoKK2RpZmYgLS1naXQgYS9tYW4vbWFuNS9hdHRyLjUgYi9tYW4vbWFuNS9hdHRyLjUKK2RlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggYTAyNzU3ZC4uMDAwMDAwMAorLS0tIGEvbWFuL21hbjUvYXR0ci41CisrKysgL2Rldi9udWxsCitAQCAtMSwxNTMgKzAsMCBAQAorLS5cIiBFeHRlbmRlZCBhdHRyaWJ1dGVzIG1hbnVhbCBwYWdlCistLlwiCistLlwiIENvcHlyaWdodCAoQykgMjAwMCwgMjAwMiwgMjAwNyAgQW5kcmVhcyBHcnVlbmJhY2hlciA8YWdydWVuQHN1c2UuZGU+CistLlwiIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMiwgMjAwNCwgMjAwNyBTaWxpY29uIEdyYXBoaWNzLCBJbmMuCistLlwiIEFsbCByaWdodHMgcmVzZXJ2ZWQuCistLlwiCistLlwiIFRoaXMgaXMgZnJlZSBkb2N1bWVudGF0aW9uOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKy0uXCIgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKy0uXCIgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKy0uXCIgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCistLlwiCistLlwiIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSdzIHJlZmVyZW5jZXMgdG8gIm9iamVjdCBjb2RlIgorLS5cIiBhbmQgImV4ZWN1dGFibGVzIiBhcmUgdG8gYmUgaW50ZXJwcmV0ZWQgYXMgdGhlIG91dHB1dCBvZiBhbnkKKy0uXCIgZG9jdW1lbnQgZm9ybWF0dGluZyBvciB0eXBlc2V0dGluZyBzeXN0ZW0sIGluY2x1ZGluZworLS5cIiBpbnRlcm1lZGlhdGUgYW5kIHByaW50ZWQgb3V0cHV0LgorLS5cIgorLS5cIiBUaGlzIG1hbnVhbCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLS5cIiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLS5cIiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistLlwiIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCistLlwiCistLlwiIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworLS5cIiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBtYW51YWwuICBJZiBub3QsIHNlZQorLS5cIiA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCistLlwiCistLlRIIEFUVFIgNQorLS5TSCBOQU1FCistYXR0ciAtIEV4dGVuZGVkIGF0dHJpYnV0ZXMKKy0uU0ggREVTQ1JJUFRJT04KKy1FeHRlbmRlZCBhdHRyaWJ1dGVzIGFyZSBuYW1lOnZhbHVlIHBhaXJzIGFzc29jaWF0ZWQgcGVybWFuZW50bHkgd2l0aAorLWZpbGVzIGFuZCBkaXJlY3Rvcmllcywgc2ltaWxhciB0byB0aGUgZW52aXJvbm1lbnQgc3RyaW5ncyBhc3NvY2lhdGVkCistd2l0aCBhIHByb2Nlc3MuCistQW4gYXR0cmlidXRlIG1heSBiZSBkZWZpbmVkIG9yIHVuZGVmaW5lZC4KKy1JZiBpdCBpcyBkZWZpbmVkLCBpdHMgdmFsdWUgbWF5IGJlIGVtcHR5IG9yIG5vbi1lbXB0eS4KKy0uUFAKKy1FeHRlbmRlZCBhdHRyaWJ1dGVzIGFyZSBleHRlbnNpb25zIHRvIHRoZSBub3JtYWwgYXR0cmlidXRlcyB3aGljaCBhcmUKKy1hc3NvY2lhdGVkIHdpdGggYWxsIGlub2RlcyBpbiB0aGUgc3lzdGVtIChpLmUuIHRoZQorLS5CUiBzdGF0ICgyKQorLWRhdGEpLgorLVRoZXkgYXJlIG9mdGVuIHVzZWQgdG8gcHJvdmlkZSBhZGRpdGlvbmFsIGZ1bmN0aW9uYWxpdHkKKy10byBhIGZpbGVzeXN0ZW0gXC0gZm9yIGV4YW1wbGUsIGFkZGl0aW9uYWwgc2VjdXJpdHkgZmVhdHVyZXMgc3VjaCBhcworLUFjY2VzcyBDb250cm9sIExpc3RzIChBQ0xzKSBtYXkgYmUgaW1wbGVtZW50ZWQgdXNpbmcgZXh0ZW5kZWQgYXR0cmlidXRlcy4KKy0uUFAKKy1Vc2VycyB3aXRoIHNlYXJjaCBhY2Nlc3MgdG8gYSBmaWxlIG9yIGRpcmVjdG9yeSBtYXkgcmV0cmlldmUgYSBsaXN0IG9mCistYXR0cmlidXRlIG5hbWVzIGRlZmluZWQgZm9yIHRoYXQgZmlsZSBvciBkaXJlY3RvcnkuCistLlBQCistRXh0ZW5kZWQgYXR0cmlidXRlcyBhcmUgYWNjZXNzZWQgYXMgYXRvbWljIG9iamVjdHMuCistUmVhZGluZyByZXRyaWV2ZXMgdGhlIHdob2xlIHZhbHVlIG9mIGFuIGF0dHJpYnV0ZSBhbmQgc3RvcmVzIGl0IGluIGEgYnVmZmVyLgorLVdyaXRpbmcgcmVwbGFjZXMgYW55IHByZXZpb3VzIHZhbHVlIHdpdGggdGhlIG5ldyB2YWx1ZS4KKy0uUFAKKy1TcGFjZSBjb25zdW1lZCBmb3IgZXh0ZW5kZWQgYXR0cmlidXRlcyBpcyBjb3VudGVkIHRvd2FyZHMgdGhlIGRpc2sgcXVvdGFzCistb2YgdGhlIGZpbGUgb3duZXIgYW5kIGZpbGUgZ3JvdXAuCistLlBQCistQ3VycmVudGx5LCBzdXBwb3J0IGZvciBleHRlbmRlZCBhdHRyaWJ1dGVzIGlzIGltcGxlbWVudGVkIG9uIExpbnV4IGJ5IHRoZQorLWV4dDIsIGV4dDMsIGV4dDQsIFhGUywgSkZTIGFuZCByZWlzZXJmcyBmaWxlc3lzdGVtcy4KKy0uU0ggRVhURU5ERUQgQVRUUklCVVRFIE5BTUVTUEFDRVMKKy1BdHRyaWJ1dGUgbmFtZXMgYXJlIHplcm8tdGVybWluYXRlZCBzdHJpbmdzLgorLVRoZSBhdHRyaWJ1dGUgbmFtZSBpcyBhbHdheXMgc3BlY2lmaWVkIGluIHRoZSBmdWxseSBxdWFsaWZpZWQKKy0uSVIgbmFtZXNwYWNlLmF0dHJpYnV0ZQorLWZvcm0sIGVnLgorLS5JUiB1c2VyLm1pbWVfdHlwZSAsCistLklSIHRydXN0ZWQubWQ1c3VtICwKKy0uSVIgc3lzdGVtLnBvc2l4X2FjbF9hY2Nlc3MgLAorLW9yCistLklSIHNlY3VyaXR5LnNlbGludXggLgorLS5QUAorLVRoZSBuYW1lc3BhY2UgbWVjaGFuaXNtIGlzIHVzZWQgdG8gZGVmaW5lIGRpZmZlcmVudCBjbGFzc2VzIG9mIGV4dGVuZGVkCistYXR0cmlidXRlcy4KKy1UaGVzZSBkaWZmZXJlbnQgY2xhc3NlcyBleGlzdCBmb3Igc2V2ZXJhbCByZWFzb25zLCBlLmcuIHRoZSBwZXJtaXNzaW9ucworLWFuZCBjYXBhYmlsaXRpZXMgcmVxdWlyZWQgZm9yIG1hbmlwdWxhdGluZyBleHRlbmRlZCBhdHRyaWJ1dGVzIG9mIG9uZQorLW5hbWVzcGFjZSBtYXkgZGlmZmVyIHRvIGFub3RoZXIuCistLlBQCistQ3VycmVudGx5IHRoZQorLS5JUiBzZWN1cml0eSAsCistLklSIHN5c3RlbSAsCistLklSIHRydXN0ZWQgLAorLWFuZAorLS5JUiB1c2VyCistZXh0ZW5kZWQgYXR0cmlidXRlIGNsYXNzZXMgYXJlIGRlZmluZWQgYXMgZGVzY3JpYmVkIGJlbG93LiBBZGRpdGlvbmFsCistY2xhc3NlcyBtYXkgYmUgYWRkZWQgaW4gdGhlIGZ1dHVyZS4KKy0uU1MgRXh0ZW5kZWQgc2VjdXJpdHkgYXR0cmlidXRlcworLVRoZSBzZWN1cml0eSBhdHRyaWJ1dGUgbmFtZXNwYWNlIGlzIHVzZWQgYnkga2VybmVsIHNlY3VyaXR5IG1vZHVsZXMsCistc3VjaCBhcyBTZWN1cml0eSBFbmhhbmNlZCBMaW51eC4gIAorLVJlYWQgYW5kIHdyaXRlIGFjY2VzcyBwZXJtaXNzaW9ucyB0byBzZWN1cml0eSBhdHRyaWJ1dGVzIGRlcGVuZCBvbiB0aGUKKy1wb2xpY3kgaW1wbGVtZW50ZWQgZm9yIGVhY2ggc2VjdXJpdHkgYXR0cmlidXRlIGJ5IHRoZSBzZWN1cml0eSBtb2R1bGUuCistV2hlbiBubyBzZWN1cml0eSBtb2R1bGUgaXMgbG9hZGVkLCBhbGwgcHJvY2Vzc2VzIGhhdmUgcmVhZCBhY2Nlc3MgdG8KKy1leHRlbmRlZCBzZWN1cml0eSBhdHRyaWJ1dGVzLCBhbmQgd3JpdGUgYWNjZXNzIGlzIGxpbWl0ZWQgdG8gcHJvY2Vzc2VzCistdGhhdCBoYXZlIHRoZSBDQVBfU1lTX0FETUlOIGNhcGFiaWxpdHkuCistLlNTIEV4dGVuZGVkIHN5c3RlbSBhdHRyaWJ1dGVzCistRXh0ZW5kZWQgc3lzdGVtIGF0dHJpYnV0ZXMgYXJlIHVzZWQgYnkgdGhlIGtlcm5lbCB0byBzdG9yZSBzeXN0ZW0KKy1vYmplY3RzIHN1Y2ggYXMgQWNjZXNzIENvbnRyb2wgTGlzdHMgYW5kIENhcGFiaWxpdGllcy4gIFJlYWQgYW5kIHdyaXRlCistYWNjZXNzIHBlcm1pc3Npb25zIHRvIHN5c3RlbSBhdHRyaWJ1dGVzIGRlcGVuZCBvbiB0aGUgcG9saWN5IGltcGxlbWVudGVkCistZm9yIGVhY2ggc3lzdGVtIGF0dHJpYnV0ZSBpbXBsZW1lbnRlZCBieSBmaWxlc3lzdGVtcyBpbiB0aGUga2VybmVsLgorLS5TUyBUcnVzdGVkIGV4dGVuZGVkIGF0dHJpYnV0ZXMKKy1UcnVzdGVkIGV4dGVuZGVkIGF0dHJpYnV0ZXMgYXJlIHZpc2libGUgYW5kIGFjY2Vzc2libGUgb25seSB0byBwcm9jZXNzZXMgdGhhdAorLWhhdmUgdGhlIENBUF9TWVNfQURNSU4gY2FwYWJpbGl0eSAodGhlIHN1cGVyIHVzZXIgdXN1YWxseSBoYXMgdGhpcworLWNhcGFiaWxpdHkpLgorLUF0dHJpYnV0ZXMgaW4gdGhpcyBjbGFzcyBhcmUgdXNlZCB0byBpbXBsZW1lbnQgbWVjaGFuaXNtcyBpbiB1c2VyCistc3BhY2UgKGkuZS4sIG91dHNpZGUgdGhlIGtlcm5lbCkgd2hpY2gga2VlcCBpbmZvcm1hdGlvbiBpbiBleHRlbmRlZCBhdHRyaWJ1dGVzCistdG8gd2hpY2ggb3JkaW5hcnkgcHJvY2Vzc2VzIHNob3VsZCBub3QgaGF2ZSBhY2Nlc3MuCistLlNTIEV4dGVuZGVkIHVzZXIgYXR0cmlidXRlcworLUV4dGVuZGVkIHVzZXIgYXR0cmlidXRlcyBtYXkgYmUgYXNzaWduZWQgdG8gZmlsZXMgYW5kIGRpcmVjdG9yaWVzIGZvcgorLXN0b3JpbmcgYXJiaXRyYXJ5IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gc3VjaCBhcyB0aGUgbWltZSB0eXBlLAorLWNoYXJhY3RlciBzZXQgb3IgZW5jb2Rpbmcgb2YgYSBmaWxlLiBUaGUgYWNjZXNzIHBlcm1pc3Npb25zIGZvciB1c2VyCistYXR0cmlidXRlcyBhcmUgZGVmaW5lZCBieSB0aGUgZmlsZSBwZXJtaXNzaW9uIGJpdHMuCistLlBQCistVGhlIGZpbGUgcGVybWlzc2lvbiBiaXRzIG9mIHJlZ3VsYXIgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIGFyZQorLWludGVycHJldGVkIGRpZmZlcmVudGx5IGZyb20gdGhlIGZpbGUgcGVybWlzc2lvbiBiaXRzIG9mIHNwZWNpYWwgZmlsZXMKKy1hbmQgc3ltYm9saWMgbGlua3MuIEZvciByZWd1bGFyIGZpbGVzIGFuZCBkaXJlY3RvcmllcyB0aGUgZmlsZQorLXBlcm1pc3Npb24gYml0cyBkZWZpbmUgYWNjZXNzIHRvIHRoZSBmaWxlJ3MgY29udGVudHMsIHdoaWxlIGZvciBkZXZpY2Ugc3BlY2lhbAorLWZpbGVzIHRoZXkgZGVmaW5lIGFjY2VzcyB0byB0aGUgZGV2aWNlIGRlc2NyaWJlZCBieSB0aGUgc3BlY2lhbCBmaWxlLgorLVRoZSBmaWxlIHBlcm1pc3Npb25zIG9mIHN5bWJvbGljIGxpbmtzIGFyZSBub3QgdXNlZCBpbiBhY2Nlc3MKKy1jaGVja3MuIFRoZXNlIGRpZmZlcmVuY2VzIHdvdWxkIGFsbG93IHVzZXJzIHRvIGNvbnN1bWUgZmlsZXN5c3RlbSByZXNvdXJjZXMgaW4KKy1hIHdheSBub3QgY29udHJvbGxhYmxlIGJ5IGRpc2sgcXVvdGFzIGZvciBncm91cCBvciB3b3JsZCB3cml0YWJsZSBzcGVjaWFsIGZpbGVzIGFuZCBkaXJlY3Rvcmllcy4KKy0uUFAKKy1Gb3IgdGhpcyByZWFzb24sIGV4dGVuZGVkIHVzZXIgYXR0cmlidXRlcyBhcmUgb25seSBhbGxvd2VkIGZvciByZWd1bGFyIGZpbGVzIGFuZCBkaXJlY3RvcmllcywgYW5kIGFjY2VzcyB0byBleHRlbmRlZCB1c2VyIGF0dHJpYnV0ZXMgaXMgcmVzdHJpY3RlZCB0byB0aGUKKy1vd25lciBhbmQgdG8gdXNlcnMgd2l0aCBhcHByb3ByaWF0ZSBjYXBhYmlsaXRpZXMgZm9yIGRpcmVjdG9yaWVzIHdpdGggdGhlCistc3RpY2t5IGJpdCBzZXQgKHNlZSB0aGUKKy0uQlIgY2htb2QgKDEpCistbWFudWFsIHBhZ2UgZm9yIGFuIGV4cGxhbmF0aW9uIG9mIFN0aWNreSBEaXJlY3RvcmllcykuCistLlNIIEZJTEVTWVNURU0gRElGRkVSRU5DRVMKKy1UaGUga2VybmVsIGFuZCB0aGUgZmlsZXN5c3RlbSBtYXkgcGxhY2UgbGltaXRzIG9uIHRoZSBtYXhpbXVtIG51bWJlcgorLWFuZCBzaXplIG9mIGV4dGVuZGVkIGF0dHJpYnV0ZXMgdGhhdCBjYW4gYmUgYXNzb2NpYXRlZCB3aXRoIGEgZmlsZS4KKy1Tb21lIGZpbGUgc3lzdGVtcywgc3VjaCBhcyBleHQyLzMgYW5kIHJlaXNlcmZzLCByZXF1aXJlIHRoZSBmaWxlc3lzdGVtCistdG8gYmUgbW91bnRlZCB3aXRoIHRoZQorLS5CIHVzZXJfeGF0dHIKKy1tb3VudCBvcHRpb24gaW4gb3JkZXIgZm9yIGV4dGVuZGVkIHVzZXIgYXR0cmlidXRlcyB0byBiZSB1c2VkLgorLS5QUAorLUluIHRoZSBjdXJyZW50IGV4dDIsIGV4dDMgYW5kIGV4dDQgZmlsZXN5c3RlbSBpbXBsZW1lbnRhdGlvbnMsIGVhY2gKKy1leHRlbmRlZCBhdHRyaWJ1dGUgbXVzdCBmaXQgb24gYSBzaW5nbGUgZmlsZXN5c3RlbSBibG9jayAoMTAyNCwgMjA0OAorLW9yIDQwOTYgYnl0ZXMsIGRlcGVuZGluZyBvbiB0aGUgYmxvY2sgc2l6ZSBzcGVjaWZpZWQgd2hlbiB0aGUKKy1maWxlc3lzdGVtIHdhcyBjcmVhdGVkKS4KKy0uUFAKKy1JbiB0aGUgWEZTIGFuZCByZWlzZXJmcyBmaWxlc3lzdGVtIGltcGxlbWVudGF0aW9ucywgdGhlcmUgaXMgbm8KKy1wcmFjdGljYWwgbGltaXQgb24gdGhlIG51bWJlciBvciBzaXplIG9mIGV4dGVuZGVkIGF0dHJpYnV0ZXMKKy1hc3NvY2lhdGVkIHdpdGggYSBmaWxlLCBhbmQgdGhlIGFsZ29yaXRobXMgdXNlZCB0byBzdG9yZSBleHRlbmRlZAorLWF0dHJpYnV0ZSBpbmZvcm1hdGlvbiBvbiBkaXNrIGFyZSBzY2FsYWJsZS4KKy0uUFAKKy1JbiB0aGUgSkZTIGZpbGVzeXN0ZW0gaW1wbGVtZW50YXRpb24sIG5hbWVzIGNhbiBiZSB1cCB0byAyNTUgYnl0ZXMgYW5kCistdmFsdWVzIHVwIHRvIDY1LDUzNSBieXRlcy4KKy0uU0ggQURESVRJT05BTCBOT1RFUworLVNpbmNlIHRoZSBmaWxlc3lzdGVtcyBvbiB3aGljaCBleHRlbmRlZCBhdHRyaWJ1dGVzIGFyZSBzdG9yZWQgbWlnaHQgYWxzbworLWJlIHVzZWQgb24gYXJjaGl0ZWN0dXJlcyB3aXRoIGEgZGlmZmVyZW50IGJ5dGUgb3JkZXIgYW5kIG1hY2hpbmUgd29yZAorLXNpemUsIGNhcmUgc2hvdWxkIGJlIHRha2VuIHRvIHN0b3JlIGF0dHJpYnV0ZSB2YWx1ZXMgaW4gYW4gYXJjaGl0ZWN0dXJlCistaW5kZXBlbmRlbnQgZm9ybWF0LgorLS5TSCBBVVRIT1JTCistQW5kcmVhcyBHcnVlbmJhY2hlciwKKy0uUkkgPCBhLmdydWVuYmFjaGVyQGJlc3RiaXRzLmF0ID4KKy1hbmQgdGhlIFNHSSBYRlMgZGV2ZWxvcG1lbnQgdGVhbSwKKy0uUkkgPCBsaW51eC14ZnNAb3NzLnNnaS5jb20gPi4KKy0uU0ggU0VFIEFMU08KKy1nZXRmYXR0cigxKSwKKy1zZXRmYXR0cigxKS4KKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvZmlsZXMvUmVtb3ZlLXRoZS1zZWN0aW9uLTItbWFuLXBhZ2VzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvZmlsZXMvUmVtb3ZlLXRoZS1zZWN0aW9uLTItbWFuLXBhZ2VzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0NGM1YTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9maWxlcy9SZW1vdmUtdGhlLXNlY3Rpb24tMi1tYW4tcGFnZXMucGF0Y2gKQEAgLTAsMCArMSw2NjYgQEAKK0Zyb20gYjk3MjYwMGEyNmYzYTkzMGU1M2UyZmNlMjYyNTI2NmE1ZDI5ODEzZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFuZHJlYXMgR3J1ZW5iYWNoZXIgPGFuZHJlYXMuZ3J1ZW5iYWNoZXJAZ21haWwuY29tPgorRGF0ZTogVHVlLCAxNCBBcHIgMjAxNSAyMzo1MzoxMSArMDIwMAorU3ViamVjdDogW1BBVENIIDEvMl0gUmVtb3ZlIHRoZSBzZWN0aW9uIDIgbWFuIHBhZ2VzCisKK0NvbW1pdCA4ZDEyNjNiY2E5NTcyMmQ2NmE2ZjhlODM0NTBmNDlkMDk1NmVhNTM0IGZyb20gdXBzdHJlYW0KK2h0dHBzOi8vZ2l0LnNhdmFubmFoLm5vbmdudS5vcmcvZ2l0L2F0dHIuZ2l0LworCitUaGUgc2VjdGlvbiAyIG1hbiBwYWdlcyBoYXZlIGxvbmcgc2luY2UgYmVlbiBhZGRlZCB0byB0aGUgbWFuLXBhZ2VzIHBhY2thZ2UKK3doaWNoIGRvY3VtZW50cyBhbGwgc3lzdGVtIGNhbGxzOyB0aGV5IHdlcmUgZGlzYWJsZWQgaW4gYXR0ciBieSBkZWZhdWx0IHNpbmNlCitKYW51YXJ5IDIwMTQuICBHZXQgcmlkIG9mIHRoZW0gaGVyZS4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitbTUE6IG1vZGlmaWVkIHRvIGFwcGx5IGRpcmVjdGx5IHRvIHYyLjQuNDddCitTaWduZWQtb2ZmLWJ5OiBNYXJrIEFzc2Vsc3RpbmUgPG1hcmsuYXNzZWxzdGluZUB3aW5kcml2ZXIuY29tPgorLS0tCisgbWFuL01ha2VmaWxlICAgICAgICAgICB8ICAgMiArLQorIG1hbi9tYW4yL01ha2VmaWxlICAgICAgfCAgMzUgLS0tLS0tLS0tLS0KKyBtYW4vbWFuMi9nZXR4YXR0ci4yICAgIHwgMTQzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgbWFuL21hbjIvbGlzdHhhdHRyLjIgICB8IDE1OCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgbWFuL21hbjIvcmVtb3ZleGF0dHIuMiB8IDExMSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgbWFuL21hbjIvc2V0eGF0dHIuMiAgICB8IDE0MyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDYgZmlsZXMgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDU5MSBkZWxldGlvbnMoLSkKKyBkZWxldGUgbW9kZSAxMDA2NDQgbWFuL21hbjIvTWFrZWZpbGUKKyBkZWxldGUgbW9kZSAxMDA2NDQgbWFuL21hbjIvZ2V0eGF0dHIuMgorIGRlbGV0ZSBtb2RlIDEwMDY0NCBtYW4vbWFuMi9saXN0eGF0dHIuMgorIGRlbGV0ZSBtb2RlIDEwMDY0NCBtYW4vbWFuMi9yZW1vdmV4YXR0ci4yCisgZGVsZXRlIG1vZGUgMTAwNjQ0IG1hbi9tYW4yL3NldHhhdHRyLjIKKworZGlmZiAtLWdpdCBhL21hbi9NYWtlZmlsZSBiL21hbi9NYWtlZmlsZQoraW5kZXggOTUzNTQyNi4uNzU1ZGFlZCAxMDA2NDQKKy0tLSBhL21hbi9NYWtlZmlsZQorKysrIGIvbWFuL01ha2VmaWxlCitAQCAtMTksNyArMTksNyBAQAorIFRPUERJUiA9IC4uCisgaW5jbHVkZSAkKFRPUERJUikvaW5jbHVkZS9idWlsZGRlZnMKKyAKKy1TVUJESVJTID0gbWFuMSBtYW4yIG1hbjMgbWFuNQorK1NVQkRJUlMgPSBtYW4xIG1hbjMgbWFuNQorIAorIGRlZmF1bHQgOiAkKFNVQkRJUlMpCisgCitkaWZmIC0tZ2l0IGEvbWFuL21hbjIvTWFrZWZpbGUgYi9tYW4vbWFuMi9NYWtlZmlsZQorZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCBkNzczMDlkLi4wMDAwMDAwCistLS0gYS9tYW4vbWFuMi9NYWtlZmlsZQorKysrIC9kZXYvbnVsbAorQEAgLTEsMzUgKzAsMCBAQAorLSMKKy0jIENvcHlyaWdodCAoYykgMjAwMC0yMDAyIFNpbGljb24gR3JhcGhpY3MsIEluYy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCistIyBDb3B5cmlnaHQgKEMpIDIwMDkgIEFuZHJlYXMgR3J1ZW5iYWNoZXIgPGFncnVlbkBzdXNlLmRlPgorLSMKKy0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CistIyB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKy0jIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCistIworLSMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLSMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0jCistIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCistIworLQorLVRPUERJUiA9IC4uLy4uCistaW5jbHVkZSAkKFRPUERJUikvaW5jbHVkZS9idWlsZGRlZnMKKy0KKy1NQU5fU0VDVElPTgk9IDIKKy0KKy1NQU5fUEFHRVMJPSAkKHNoZWxsIGVjaG8gKi4kKE1BTl9TRUNUSU9OKSkKKy1NQU5fREVTVAk9ICQoUEtHX01BTl9ESVIpL21hbiQoTUFOX1NFQ1RJT04pCistTFNSQ0ZJTEVTCT0gJChNQU5fUEFHRVMpCistCistZGVmYXVsdCBpbnN0YWxsIDogJChNQU5fUEFHRVMpCistCistaW5jbHVkZSAkKEJVSUxEUlVMRVMpCistCistaW5zdGFsbC1kZXYgOiBkZWZhdWx0CistCSQoSU5TVEFMTCkgLW0gNzU1IC1kICQoTUFOX0RFU1QpCistCSQoSU5TVEFMTF9NQU4pCistaW5zdGFsbC1saWI6CitkaWZmIC0tZ2l0IGEvbWFuL21hbjIvZ2V0eGF0dHIuMiBiL21hbi9tYW4yL2dldHhhdHRyLjIKK2RlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggNDA1YWQ4OS4uMDAwMDAwMAorLS0tIGEvbWFuL21hbjIvZ2V0eGF0dHIuMgorKysrIC9kZXYvbnVsbAorQEAgLTEsMTQzICswLDAgQEAKKy0uXCIKKy0uXCIgRXh0ZW5kZWQgYXR0cmlidXRlcyBzeXN0ZW0gY2FsbHMgbWFudWFsIHBhZ2VzCistLlwiCistLlwiIChDKSBBbmRyZWFzIEdydWVuYmFjaGVyLCBGZWJydWFyeSAyMDAxCistLlwiIChDKSBTaWxpY29uIEdyYXBoaWNzIEluYywgU2VwdGVtYmVyIDIwMDEKKy0uXCIKKy0uXCIgVGhpcyBpcyBmcmVlIGRvY3VtZW50YXRpb247IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorLS5cIiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworLS5cIiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorLS5cIiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKy0uXCIKKy0uXCIgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlJ3MgcmVmZXJlbmNlcyB0byAib2JqZWN0IGNvZGUiCistLlwiIGFuZCAiZXhlY3V0YWJsZXMiIGFyZSB0byBiZSBpbnRlcnByZXRlZCBhcyB0aGUgb3V0cHV0IG9mIGFueQorLS5cIiBkb2N1bWVudCBmb3JtYXR0aW5nIG9yIHR5cGVzZXR0aW5nIHN5c3RlbSwgaW5jbHVkaW5nCistLlwiIGludGVybWVkaWF0ZSBhbmQgcHJpbnRlZCBvdXRwdXQuCistLlwiCistLlwiIFRoaXMgbWFudWFsIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistLlwiIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistLlwiIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0uXCIgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0uXCIKKy0uXCIgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCistLlwiIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIG1hbnVhbC4gIElmIG5vdCwgc2VlCistLlwiIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKy0uXCIKKy0uVEggR0VUWEFUVFIgMiAiRXh0ZW5kZWQgQXR0cmlidXRlcyIgIkRlYyAyMDAxIiAiU3lzdGVtIGNhbGxzIgorLS5TSCBOQU1FCistZ2V0eGF0dHIsIGxnZXR4YXR0ciwgZmdldHhhdHRyIFwtIHJldHJpZXZlIGFuIGV4dGVuZGVkIGF0dHJpYnV0ZSB2YWx1ZQorLS5TSCBTWU5PUFNJUworLS5mYW0gQworLS5uZgorLS5CICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKy0uQiAjaW5jbHVkZSA8YXR0ci94YXR0ci5oPgorLS5zcAorLS5CSSAic3NpemVfdCBnZXR4YXR0ciAoY29uc3QgY2hhclwgKiIgcGF0aCAiLCBjb25zdCBjaGFyXCAqIiBuYW1lICIsCistLkJJICJcdFx0XHRcdCB2b2lkXCAqIiB2YWx1ZSAiLCBzaXplX3QgIiBzaXplICk7CistLkJJICJzc2l6ZV90IGxnZXR4YXR0ciAoY29uc3QgY2hhclwgKiIgcGF0aCAiLCBjb25zdCBjaGFyXCAqIiBuYW1lICIsCistLkJJICJcdFx0XHRcdCB2b2lkXCAqIiB2YWx1ZSAiLCBzaXplX3QgIiBzaXplICk7CistLkJJICJzc2l6ZV90IGZnZXR4YXR0ciAoaW50ICIgZmlsZWRlcyAiLCBjb25zdCBjaGFyXCAqIiBuYW1lICIsCistLkJJICJcdFx0XHRcdCB2b2lkXCAqIiB2YWx1ZSAiLCBzaXplX3QgIiBzaXplICk7CistLmZpCistLmZhbSBUCistLlNIIERFU0NSSVBUSU9OCistRXh0ZW5kZWQgYXR0cmlidXRlcyBhcmUKKy0uSVIgbmFtZSA6XGMKKy0uSSB2YWx1ZQorLXBhaXJzIGFzc29jaWF0ZWQgd2l0aCBpbm9kZXMgKGZpbGVzLCBkaXJlY3Rvcmllcywgc3ltbGlua3MsIGV0YykuCistVGhleSBhcmUgZXh0ZW5zaW9ucyB0byB0aGUgbm9ybWFsIGF0dHJpYnV0ZXMgd2hpY2ggYXJlIGFzc29jaWF0ZWQKKy13aXRoIGFsbCBpbm9kZXMgaW4gdGhlIHN5c3RlbSAoaS5lLiB0aGUKKy0uQlIgc3RhdCAoMikKKy1kYXRhKS4KKy1BIGNvbXBsZXRlIG92ZXJ2aWV3IG9mIGV4dGVuZGVkIGF0dHJpYnV0ZXMgY29uY2VwdHMgY2FuIGJlIGZvdW5kIGluCistLkJSIGF0dHIgKDUpLgorLS5QUAorLS5CIGdldHhhdHRyCistcmV0cmlldmVzIHRoZQorLS5JIHZhbHVlCistb2YgdGhlIGV4dGVuZGVkIGF0dHJpYnV0ZSBpZGVudGlmaWVkIGJ5CistLkkgbmFtZQorLWFuZCBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuCistLkkgcGF0aAorLWluIHRoZSBmaWxlc3lzdGVtLgorLVRoZSBsZW5ndGggb2YgdGhlIGF0dHJpYnV0ZQorLS5JIHZhbHVlCistaXMgcmV0dXJuZWQuCistLlBQCistLkIgbGdldHhhdHRyCistaXMgaWRlbnRpY2FsIHRvIAorLS5CUiBnZXR4YXR0ciAsCistZXhjZXB0IGluIHRoZSBjYXNlIG9mIGEgc3ltYm9saWMgbGluaywgd2hlcmUgdGhlIGxpbmsgaXRzZWxmIGlzCistaW50ZXJyb2dhdGVkLCBub3QgdGhlIGZpbGUgdGhhdCBpdCByZWZlcnMgdG8uCistLlBQCistLkIgZmdldHhhdHRyCistaXMgaWRlbnRpY2FsIHRvCistLkJSIGdldHhhdHRyICwKKy1vbmx5IHRoZSBvcGVuIGZpbGUgcG9pbnRlZCB0byBieQorLS5JIGZpbGVkZXMKKy0oYXMgcmV0dXJuZWQgYnkKKy0uQlIgb3BlbiAoMikpCistaXMgaW50ZXJyb2dhdGVkIGluIHBsYWNlIG9mCistLklSIHBhdGggLgorLS5QUAorLUFuIGV4dGVuZGVkIGF0dHJpYnV0ZQorLS5JIG5hbWUKKy1pcyBhIHNpbXBsZSBOVUxMLXRlcm1pbmF0ZWQgc3RyaW5nLgorLVRoZSBuYW1lIGluY2x1ZGVzIGEgbmFtZXNwYWNlIHByZWZpeCBcLSB0aGVyZSBtYXkgYmUgc2V2ZXJhbCwgZGlzam9pbnQKKy1uYW1lc3BhY2VzIGFzc29jaWF0ZWQgd2l0aCBhbiBpbmRpdmlkdWFsIGlub2RlLgorLVRoZSB2YWx1ZSBvZiBhbiBleHRlbmRlZCBhdHRyaWJ1dGUgaXMgYSBjaHVuayBvZiBhcmJpdHJhcnkgdGV4dHVhbCBvcgorLWJpbmFyeSBkYXRhIG9mIHNwZWNpZmllZCBsZW5ndGguCistLlBQCistQW4gZW1wdHkgYnVmZmVyIG9mCistLkkgc2l6ZQorLXplcm8gY2FuIGJlIHBhc3NlZCBpbnRvIHRoZXNlIGNhbGxzIHRvIHJldHVybiB0aGUgY3VycmVudCBzaXplIG9mIHRoZQorLW5hbWVkIGV4dGVuZGVkIGF0dHJpYnV0ZSwgd2hpY2ggY2FuIGJlIHVzZWQgdG8gZXN0aW1hdGUgdGhlIHNpemUgb2YgYQorLWJ1ZmZlciB3aGljaCBpcyBzdWZmaWNpZW50bHkgbGFyZ2UgdG8gaG9sZCB0aGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoCistdGhlIGV4dGVuZGVkIGF0dHJpYnV0ZS4KKy0uUFAKKy1UaGUgaW50ZXJmYWNlIGlzIGRlc2lnbmVkIHRvIGFsbG93IGd1ZXNzaW5nIG9mIGluaXRpYWwgYnVmZmVyCistc2l6ZXMsIGFuZCB0byBlbmxhcmdlIGJ1ZmZlcnMgd2hlbiB0aGUgcmV0dXJuIHZhbHVlIGluZGljYXRlcworLXRoYXQgdGhlIGJ1ZmZlciBwcm92aWRlZCB3YXMgdG9vIHNtYWxsLgorLS5TSCBSRVRVUk4gVkFMVUUKKy1PbiBzdWNjZXNzLCBhIHBvc2l0aXZlIG51bWJlciBpcyByZXR1cm5lZCBpbmRpY2F0aW5nIHRoZSBzaXplIG9mIHRoZQorLWV4dGVuZGVkIGF0dHJpYnV0ZSB2YWx1ZS4KKy1PbiBmYWlsdXJlLCBcLTEgaXMgcmV0dXJuZWQgYW5kCistLkkgZXJybm8KKy1pcyBzZXQgYXBwcm9wcmlhdGVseS4KKy0uUFAKKy1JZiB0aGUgbmFtZWQgYXR0cmlidXRlIGRvZXMgbm90IGV4aXN0LCBvciB0aGUgcHJvY2VzcyBoYXMgbm8gYWNjZXNzIHRvCistdGhpcyBhdHRyaWJ1dGUsCistLkkgZXJybm8KKy1pcyBzZXQgdG8gRU5PQVRUUi4KKy0uUFAKKy1JZiB0aGUKKy0uSSBzaXplCistb2YgdGhlCistLkkgdmFsdWUKKy1idWZmZXIgaXMgdG9vIHNtYWxsIHRvIGhvbGQgdGhlIHJlc3VsdCwKKy0uSSBlcnJubworLWlzIHNldCB0byBFUkFOR0UuCistLlBQCistSWYgZXh0ZW5kZWQgYXR0cmlidXRlcyBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGUgZmlsZXN5c3RlbSwgb3IgYXJlIGRpc2FibGVkLAorLS5JIGVycm5vCistaXMgc2V0IHRvIEVOT1RTVVAuCistLlBQCistVGhlIGVycm9ycyBkb2N1bWVudGVkIGZvciB0aGUKKy0uQlIgc3RhdCAoMikKKy1zeXN0ZW0gY2FsbCBhcmUgYWxzbyBhcHBsaWNhYmxlIGhlcmUuCistLlNIIEFVVEhPUlMKKy1BbmRyZWFzIEdydWVuYmFjaGVyLAorLS5SSSA8IGEuZ3J1ZW5iYWNoZXJAYmVzdGJpdHMuYXQgPgorLWFuZCB0aGUgU0dJIFhGUyBkZXZlbG9wbWVudCB0ZWFtLAorLS5SSSA8IGxpbnV4LXhmc0Bvc3Muc2dpLmNvbSA+LgorLVBsZWFzZSBzZW5kIGFueSBidWcgcmVwb3J0cyBvciBjb21tZW50cyB0byB0aGVzZSBhZGRyZXNzZXMuCistLlNIIFNFRSBBTFNPCistLkJSIGdldGZhdHRyICgxKSwKKy0uQlIgc2V0ZmF0dHIgKDEpLAorLS5CUiBvcGVuICgyKSwKKy0uQlIgc3RhdCAoMiksCistLkJSIHNldHhhdHRyICgyKSwKKy0uQlIgbGlzdHhhdHRyICgyKSwKKy0uQlIgcmVtb3ZleGF0dHIgKDIpLAorLWFuZAorLS5CUiBhdHRyICg1KS4KK2RpZmYgLS1naXQgYS9tYW4vbWFuMi9saXN0eGF0dHIuMiBiL21hbi9tYW4yL2xpc3R4YXR0ci4yCitkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDhiNDM3MWMuLjAwMDAwMDAKKy0tLSBhL21hbi9tYW4yL2xpc3R4YXR0ci4yCisrKysgL2Rldi9udWxsCitAQCAtMSwxNTggKzAsMCBAQAorLS5cIgorLS5cIiBFeHRlbmRlZCBhdHRyaWJ1dGVzIHN5c3RlbSBjYWxscyBtYW51YWwgcGFnZXMKKy0uXCIKKy0uXCIgKEMpIEFuZHJlYXMgR3J1ZW5iYWNoZXIsIEZlYnJ1YXJ5IDIwMDEKKy0uXCIgKEMpIFNpbGljb24gR3JhcGhpY3MgSW5jLCBTZXB0ZW1iZXIgMjAwMQorLS5cIgorLS5cIiBUaGlzIGlzIGZyZWUgZG9jdW1lbnRhdGlvbjsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCistLlwiIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCistLlwiIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCistLlwiIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorLS5cIgorLS5cIiBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UncyByZWZlcmVuY2VzIHRvICJvYmplY3QgY29kZSIKKy0uXCIgYW5kICJleGVjdXRhYmxlcyIgYXJlIHRvIGJlIGludGVycHJldGVkIGFzIHRoZSBvdXRwdXQgb2YgYW55CistLlwiIGRvY3VtZW50IGZvcm1hdHRpbmcgb3IgdHlwZXNldHRpbmcgc3lzdGVtLCBpbmNsdWRpbmcKKy0uXCIgaW50ZXJtZWRpYXRlIGFuZCBwcmludGVkIG91dHB1dC4KKy0uXCIKKy0uXCIgVGhpcyBtYW51YWwgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0uXCIgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0uXCIgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLS5cIiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLS5cIgorLS5cIiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKy0uXCIgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbWFudWFsLiAgSWYgbm90LCBzZWUKKy0uXCIgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorLS5cIgorLS5USCBMSVNUWEFUVFIgMiAiRXh0ZW5kZWQgQXR0cmlidXRlcyIgIkRlYyAyMDAxIiAiU3lzdGVtIGNhbGxzIgorLS5TSCBOQU1FCistbGlzdHhhdHRyLCBsbGlzdHhhdHRyLCBmbGlzdHhhdHRyIFwtIGxpc3QgZXh0ZW5kZWQgYXR0cmlidXRlIG5hbWVzCistLlNIIFNZTk9QU0lTCistLmZhbSBDCistLm5mCistLkIgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorLS5CICNpbmNsdWRlIDxhdHRyL3hhdHRyLmg+CistLnNwCistLkJJICJzc2l6ZV90IGxpc3R4YXR0ciAoY29uc3QgY2hhclwgKiIgcGF0aCAiLAorLS5CSSAiXHRcdFx0XHQgY2hhclwgKiIgbGlzdCAiLCBzaXplX3QgIiBzaXplICk7CistLkJJICJzc2l6ZV90IGxsaXN0eGF0dHIgKGNvbnN0IGNoYXJcICoiIHBhdGggIiwKKy0uQkkgIlx0XHRcdFx0IGNoYXJcICoiIGxpc3QgIiwgc2l6ZV90ICIgc2l6ZSApOworLS5CSSAic3NpemVfdCBmbGlzdHhhdHRyIChpbnQgIiBmaWxlZGVzICIsCistLkJJICJcdFx0XHRcdCBjaGFyXCAqIiBsaXN0ICIsIHNpemVfdCAiIHNpemUgKTsKKy0uZmkKKy0uZmFtIFQKKy0uU0ggREVTQ1JJUFRJT04KKy1FeHRlbmRlZCBhdHRyaWJ1dGVzIGFyZSBuYW1lOnZhbHVlCistcGFpcnMgYXNzb2NpYXRlZCB3aXRoIGlub2RlcyAoZmlsZXMsIGRpcmVjdG9yaWVzLCBzeW1saW5rcywgZXRjKS4KKy1UaGV5IGFyZSBleHRlbnNpb25zIHRvIHRoZSBub3JtYWwgYXR0cmlidXRlcyB3aGljaCBhcmUgYXNzb2NpYXRlZAorLXdpdGggYWxsIGlub2RlcyBpbiB0aGUgc3lzdGVtIChpLmUuIHRoZQorLS5CUiBzdGF0ICgyKQorLWRhdGEpLgorLUEgY29tcGxldGUgb3ZlcnZpZXcgb2YgZXh0ZW5kZWQgYXR0cmlidXRlcyBjb25jZXB0cyBjYW4gYmUgZm91bmQgaW4KKy0uQlIgYXR0ciAoNSkuCistLlBQCistLkIgbGlzdHhhdHRyCistcmV0cmlldmVzIHRoZQorLS5JIGxpc3QKKy1vZiBleHRlbmRlZCBhdHRyaWJ1dGUgbmFtZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbgorLS5JIHBhdGgKKy1pbiB0aGUgZmlsZXN5c3RlbS4KKy1UaGUgbGlzdCBpcyB0aGUgc2V0IG9mIChOVUxMLXRlcm1pbmF0ZWQpIG5hbWVzLCBvbmUgYWZ0ZXIgdGhlIG90aGVyLgorLU5hbWVzIG9mIGV4dGVuZGVkIGF0dHJpYnV0ZXMgdG8gd2hpY2ggdGhlIGNhbGxpbmcgcHJvY2VzcyBkb2VzIG5vdAorLWhhdmUgYWNjZXNzIG1heSBiZSBvbWl0dGVkIGZyb20gdGhlIGxpc3QuCistVGhlIGxlbmd0aCBvZiB0aGUgYXR0cmlidXRlIG5hbWUKKy0uSSBsaXN0CistaXMgcmV0dXJuZWQuCistLlBQCistLkIgbGxpc3R4YXR0cgorLWlzIGlkZW50aWNhbCB0bworLS5CUiBsaXN0eGF0dHIgLAorLWV4Y2VwdCBpbiB0aGUgY2FzZSBvZiBhIHN5bWJvbGljIGxpbmssIHdoZXJlIHRoZSBsaXN0IG9mIG5hbWVzIG9mCistZXh0ZW5kZWQgYXR0cmlidXRlcyBhc3NvY2lhdGVkIHdpdGggdGhlIGxpbmsgaXRzZWxmIGlzIHJldHJpZXZlZCwKKy1ub3QgdGhlIGZpbGUgdGhhdCBpdCByZWZlcnMgdG8uCistLkkgbGlzdAorLWlzIGEgY2FsbGVyLWFsbG9jYXRlZCBidWZmZXIgb2Ygc2l6ZQorLS5JUiBzaXplIC4KKy0uUFAKKy0uQiBmbGlzdHhhdHRyCistaXMgaWRlbnRpY2FsIHRvCistLkJSIGxpc3R4YXR0ciAsCistb25seSB0aGUgb3BlbiBmaWxlIHBvaW50ZWQgdG8gYnkKKy0uSSBmaWxlZGVzCistKGFzIHJldHVybmVkIGJ5CistLkJSIG9wZW4gKDIpKQorLWlzIGludGVycm9nYXRlZCBpbiBwbGFjZSBvZgorLS5JUiBwYXRoIC4KKy0uUFAKKy1BIHNpbmdsZSBleHRlbmRlZCBhdHRyaWJ1dGUKKy0uSSBuYW1lCistaXMgYSBzaW1wbGUgTlVMTC10ZXJtaW5hdGVkIHN0cmluZy4KKy1UaGUgbmFtZSBpbmNsdWRlcyBhIG5hbWVzcGFjZSBwcmVmaXggXC0gdGhlcmUgbWF5IGJlIHNldmVyYWwsIGRpc2pvaW50CistbmFtZXNwYWNlcyBhc3NvY2lhdGVkIHdpdGggYW4gaW5kaXZpZHVhbCBpbm9kZS4KKy0uUFAKKy1BbiBlbXB0eSBidWZmZXIgb2YKKy0uSSBzaXplCistemVybyBjYW4gYmUgcGFzc2VkIGludG8gdGhlc2UgY2FsbHMgdG8gcmV0dXJuIHRoZSBjdXJyZW50IHNpemUgb2YgdGhlCistbGlzdCBvZiBleHRlbmRlZCBhdHRyaWJ1dGUgbmFtZXMsIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGVzdGltYXRlIHRoZQorLXNpemUgb2YgYSBidWZmZXIgd2hpY2ggaXMgc3VmZmljaWVudGx5IGxhcmdlIHRvIGhvbGQgdGhlIGxpc3Qgb2YgbmFtZXMuCistLlNIIEVYQU1QTEVTCistVGhlCistLkkgbGlzdAorLW9mIG5hbWVzIGlzIHJldHVybmVkIGFzIGFuIHVub3JkZXJlZCBhcnJheSBvZiBOVUxMLXRlcm1pbmF0ZWQgY2hhcmFjdGVyCistc3RyaW5ncyAoYXR0cmlidXRlIG5hbWVzIGFyZSBzZXBhcmF0ZWQgYnkgTlVMTCBjaGFyYWN0ZXJzKSwgbGlrZSB0aGlzOgorLS5mYW0gQworLS5SUworLS5uZgorLXVzZXIubmFtZTFcXDBzeXN0ZW0ubmFtZTFcXDB1c2VyLm5hbWUyXFwwCistLmZpCistLlJFCistLmZhbSBUCistLlAKKy1GaWxlc3lzdGVtcyBsaWtlIGV4dDIsIGV4dDMgYW5kIFhGUyB3aGljaCBpbXBsZW1lbnQgUE9TSVggQUNMcyB1c2luZworLWV4dGVuZGVkIGF0dHJpYnV0ZXMsIG1pZ2h0IHJldHVybiBhCistLkkgbGlzdAorLWxpa2UgdGhpczoKKy0uZmFtIEMKKy0uUlMKKy0ubmYKKy1zeXN0ZW0ucG9zaXhfYWNsX2FjY2Vzc1xcMHN5c3RlbS5wb3NpeF9hY2xfZGVmYXVsdFxcMAorLS5maQorLS5SRQorLS5mYW0gVAorLS5TSCBSRVRVUk4gVkFMVUUKKy1PbiBzdWNjZXNzLCBhIHBvc2l0aXZlIG51bWJlciBpcyByZXR1cm5lZCBpbmRpY2F0aW5nIHRoZSBzaXplIG9mIHRoZQorLWV4dGVuZGVkIGF0dHJpYnV0ZSBuYW1lIGxpc3QuCistT24gZmFpbHVyZSwgXC0xIGlzIHJldHVybmVkIGFuZAorLS5JIGVycm5vCistaXMgc2V0IGFwcHJvcHJpYXRlbHkuCistLlBQCistSWYgdGhlCistLkkgc2l6ZQorLW9mIHRoZQorLS5JIGxpc3QKKy1idWZmZXIgaXMgdG9vIHNtYWxsIHRvIGhvbGQgdGhlIHJlc3VsdCwKKy0uSSBlcnJubworLWlzIHNldCB0byBFUkFOR0UuCistLlBQCistSWYgZXh0ZW5kZWQgYXR0cmlidXRlcyBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGUgZmlsZXN5c3RlbSwgb3IgYXJlIGRpc2FibGVkLAorLS5JIGVycm5vCistaXMgc2V0IHRvIEVOT1RTVVAuCistLlBQCistVGhlIGVycm9ycyBkb2N1bWVudGVkIGZvciB0aGUKKy0uQlIgc3RhdCAoMikKKy1zeXN0ZW0gY2FsbCBhcmUgYWxzbyBhcHBsaWNhYmxlIGhlcmUuCistLlNIIEFVVEhPUlMKKy1BbmRyZWFzIEdydWVuYmFjaGVyLAorLS5SSSA8IGEuZ3J1ZW5iYWNoZXJAYmVzdGJpdHMuYXQgPgorLWFuZCB0aGUgU0dJIFhGUyBkZXZlbG9wbWVudCB0ZWFtLAorLS5SSSA8IGxpbnV4LXhmc0Bvc3Muc2dpLmNvbSA+LgorLVBsZWFzZSBzZW5kIGFueSBidWcgcmVwb3J0cyBvciBjb21tZW50cyB0byB0aGVzZSBhZGRyZXNzZXMuCistLlNIIFNFRSBBTFNPCistLkJSIGdldGZhdHRyICgxKSwKKy0uQlIgc2V0ZmF0dHIgKDEpLAorLS5CUiBvcGVuICgyKSwKKy0uQlIgc3RhdCAoMiksCistLkJSIGdldHhhdHRyICgyKSwKKy0uQlIgc2V0eGF0dHIgKDIpLAorLS5CUiByZW1vdmV4YXR0ciAoMiksCistYW5kCistLkJSIGF0dHIgKDUpLgorZGlmZiAtLWdpdCBhL21hbi9tYW4yL3JlbW92ZXhhdHRyLjIgYi9tYW4vbWFuMi9yZW1vdmV4YXR0ci4yCitkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDJjN2Q5MzQuLjAwMDAwMDAKKy0tLSBhL21hbi9tYW4yL3JlbW92ZXhhdHRyLjIKKysrKyAvZGV2L251bGwKK0BAIC0xLDExMSArMCwwIEBACistLlwiCistLlwiIEV4dGVuZGVkIGF0dHJpYnV0ZXMgc3lzdGVtIGNhbGxzIG1hbnVhbCBwYWdlcworLS5cIgorLS5cIiAoQykgQW5kcmVhcyBHcnVlbmJhY2hlciwgRmVicnVhcnkgMjAwMQorLS5cIiAoQykgU2lsaWNvbiBHcmFwaGljcyBJbmMsIFNlcHRlbWJlciAyMDAxCistLlwiCistLlwiIFRoaXMgaXMgZnJlZSBkb2N1bWVudGF0aW9uOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKy0uXCIgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKy0uXCIgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKy0uXCIgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCistLlwiCistLlwiIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSdzIHJlZmVyZW5jZXMgdG8gIm9iamVjdCBjb2RlIgorLS5cIiBhbmQgImV4ZWN1dGFibGVzIiBhcmUgdG8gYmUgaW50ZXJwcmV0ZWQgYXMgdGhlIG91dHB1dCBvZiBhbnkKKy0uXCIgZG9jdW1lbnQgZm9ybWF0dGluZyBvciB0eXBlc2V0dGluZyBzeXN0ZW0sIGluY2x1ZGluZworLS5cIiBpbnRlcm1lZGlhdGUgYW5kIHByaW50ZWQgb3V0cHV0LgorLS5cIgorLS5cIiBUaGlzIG1hbnVhbCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLS5cIiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLS5cIiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistLlwiIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCistLlwiCistLlwiIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworLS5cIiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBtYW51YWwuICBJZiBub3QsIHNlZQorLS5cIiA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCistLlwiCistLlRIIFJFTU9WRVhBVFRSIDIgIkV4dGVuZGVkIEF0dHJpYnV0ZXMiICJEZWMgMjAwMSIgIlN5c3RlbSBjYWxscyIKKy0uU0ggTkFNRQorLXJlbW92ZXhhdHRyLCBscmVtb3ZleGF0dHIsIGZyZW1vdmV4YXR0ciBcLSByZW1vdmUgYW4gZXh0ZW5kZWQgYXR0cmlidXRlCistLlNIIFNZTk9QU0lTCistLmZhbSBDCistLm5mCistLkIgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorLS5CICNpbmNsdWRlIDxhdHRyL3hhdHRyLmg+CistLnNwCistLkJJICJpbnQgcmVtb3ZleGF0dHIgKGNvbnN0IGNoYXJcICoiIHBhdGggIiwgY29uc3QgY2hhclwgKiIgbmFtZSApOworLS5CSSAiaW50IGxyZW1vdmV4YXR0ciAoY29uc3QgY2hhclwgKiIgcGF0aCAiLCBjb25zdCBjaGFyXCAqIiBuYW1lICk7CistLkJJICJpbnQgZnJlbW92ZXhhdHRyIChpbnQgIiBmaWxlZGVzICIsIGNvbnN0IGNoYXJcICoiIG5hbWUgKTsKKy0uZmkKKy0uZmFtIFQKKy0uU0ggREVTQ1JJUFRJT04KKy1FeHRlbmRlZCBhdHRyaWJ1dGVzIGFyZQorLS5JUiBuYW1lIDpcYworLXZhbHVlIHBhaXJzIGFzc29jaWF0ZWQgd2l0aCBpbm9kZXMgKGZpbGVzLCBkaXJlY3Rvcmllcywgc3ltbGlua3MsIGV0YykuCistVGhleSBhcmUgZXh0ZW5zaW9ucyB0byB0aGUgbm9ybWFsIGF0dHJpYnV0ZXMgd2hpY2ggYXJlIGFzc29jaWF0ZWQKKy13aXRoIGFsbCBpbm9kZXMgaW4gdGhlIHN5c3RlbSAoaS5lLiB0aGUKKy0uQlIgc3RhdCAoMikKKy1kYXRhKS4KKy1BIGNvbXBsZXRlIG92ZXJ2aWV3IG9mIGV4dGVuZGVkIGF0dHJpYnV0ZXMgY29uY2VwdHMgY2FuIGJlIGZvdW5kIGluCistLkJSIGF0dHIgKDUpLgorLS5QUAorLS5CIHJlbW92ZXhhdHRyCistcmVtb3ZlcyB0aGUgZXh0ZW5kZWQgYXR0cmlidXRlIGlkZW50aWZpZWQgYnkKKy0uSSBuYW1lCistYW5kIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4KKy0uSSBwYXRoCistaW4gdGhlIGZpbGVzeXN0ZW0uCistLlBQCistLkIgbHJlbW92ZXhhdHRyCistaXMgaWRlbnRpY2FsIHRvIAorLS5CUiByZW1vdmV4YXR0ciAsCistZXhjZXB0IGluIHRoZSBjYXNlIG9mIGEgc3ltYm9saWMgbGluaywgd2hlcmUgdGhlIGV4dGVuZGVkIGF0dHJpYnV0ZSBpcworLXJlbW92ZWQgZnJvbSB0aGUgbGluayBpdHNlbGYsIG5vdCB0aGUgZmlsZSB0aGF0IGl0IHJlZmVycyB0by4KKy0uUFAKKy0uQiBmcmVtb3ZleGF0dHIKKy1pcyBpZGVudGljYWwgdG8KKy0uQlIgcmVtb3ZleGF0dHIgLAorLW9ubHkgdGhlIGV4dGVuZGVkIGF0dHJpYnV0ZSBpcyByZW1vdmVkIGZyb20gdGhlIG9wZW4gZmlsZSBwb2ludGVkIHRvIGJ5CistLkkgZmlsZWRlcworLShhcyByZXR1cm5lZCBieQorLS5CUiBvcGVuICgyKSkKKy1pbiBwbGFjZSBvZgorLS5JUiBwYXRoIC4KKy0uUFAKKy1BbiBleHRlbmRlZCBhdHRyaWJ1dGUgbmFtZSBpcyBhIHNpbXBsZSBOVUxMLXRlcm1pbmF0ZWQgc3RyaW5nLgorLVRoZQorLS5JIG5hbWUKKy1pbmNsdWRlcyBhIG5hbWVzcGFjZSBwcmVmaXggXC0gdGhlcmUgbWF5IGJlIHNldmVyYWwsIGRpc2pvaW50CistbmFtZXNwYWNlcyBhc3NvY2lhdGVkIHdpdGggYW4gaW5kaXZpZHVhbCBpbm9kZS4KKy0uU0ggUkVUVVJOIFZBTFVFCistT24gc3VjY2VzcywgemVybyBpcyByZXR1cm5lZC4KKy1PbiBmYWlsdXJlLCBcLTEgaXMgcmV0dXJuZWQgYW5kCistLkkgZXJybm8KKy1pcyBzZXQgYXBwcm9wcmlhdGVseS4KKy0uUFAKKy1JZiB0aGUgbmFtZWQgYXR0cmlidXRlIGRvZXMgbm90IGV4aXN0LAorLS5JIGVycm5vCistaXMgc2V0IHRvIEVOT0FUVFIuCistLlBQCistSWYgZXh0ZW5kZWQgYXR0cmlidXRlcyBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGUgZmlsZXN5c3RlbSwgb3IgYXJlIGRpc2FibGVkLAorLS5JIGVycm5vCistaXMgc2V0IHRvIEVOT1RTVVAuCistLlBQCistVGhlIGVycm9ycyBkb2N1bWVudGVkIGZvciB0aGUKKy0uQlIgc3RhdCAoMikKKy1zeXN0ZW0gY2FsbCBhcmUgYWxzbyBhcHBsaWNhYmxlIGhlcmUuCistLlNIIEFVVEhPUlMKKy1BbmRyZWFzIEdydWVuYmFjaGVyLAorLS5SSSA8IGEuZ3J1ZW5iYWNoZXJAYmVzdGJpdHMuYXQgPgorLWFuZCB0aGUgU0dJIFhGUyBkZXZlbG9wbWVudCB0ZWFtLAorLS5SSSA8IGxpbnV4LXhmc0Bvc3Muc2dpLmNvbSA+LgorLVBsZWFzZSBzZW5kIGFueSBidWcgcmVwb3J0cyBvciBjb21tZW50cyB0byB0aGVzZSBhZGRyZXNzZXMuCistLlNIIFNFRSBBTFNPCistLkJSIGdldGZhdHRyICgxKSwKKy0uQlIgc2V0ZmF0dHIgKDEpLAorLS5CUiBvcGVuICgyKSwKKy0uQlIgc3RhdCAoMiksCistLkJSIHNldHhhdHRyICgyKSwKKy0uQlIgZ2V0eGF0dHIgKDIpLAorLS5CUiBsaXN0eGF0dHIgKDIpLAorLWFuZAorLS5CUiBhdHRyICg1KS4KK2RpZmYgLS1naXQgYS9tYW4vbWFuMi9zZXR4YXR0ci4yIGIvbWFuL21hbjIvc2V0eGF0dHIuMgorZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCBiMjBkYzlmLi4wMDAwMDAwCistLS0gYS9tYW4vbWFuMi9zZXR4YXR0ci4yCisrKysgL2Rldi9udWxsCitAQCAtMSwxNDMgKzAsMCBAQAorLS5cIgorLS5cIiBFeHRlbmRlZCBhdHRyaWJ1dGVzIHN5c3RlbSBjYWxscyBtYW51YWwgcGFnZXMKKy0uXCIKKy0uXCIgKEMpIEFuZHJlYXMgR3J1ZW5iYWNoZXIsIEZlYnJ1YXJ5IDIwMDEKKy0uXCIgKEMpIFNpbGljb24gR3JhcGhpY3MgSW5jLCBTZXB0ZW1iZXIgMjAwMQorLS5cIgorLS5cIiBUaGlzIGlzIGZyZWUgZG9jdW1lbnRhdGlvbjsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCistLlwiIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCistLlwiIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCistLlwiIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorLS5cIgorLS5cIiBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UncyByZWZlcmVuY2VzIHRvICJvYmplY3QgY29kZSIKKy0uXCIgYW5kICJleGVjdXRhYmxlcyIgYXJlIHRvIGJlIGludGVycHJldGVkIGFzIHRoZSBvdXRwdXQgb2YgYW55CistLlwiIGRvY3VtZW50IGZvcm1hdHRpbmcgb3IgdHlwZXNldHRpbmcgc3lzdGVtLCBpbmNsdWRpbmcKKy0uXCIgaW50ZXJtZWRpYXRlIGFuZCBwcmludGVkIG91dHB1dC4KKy0uXCIKKy0uXCIgVGhpcyBtYW51YWwgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0uXCIgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0uXCIgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLS5cIiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLS5cIgorLS5cIiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKKy0uXCIgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbWFudWFsLiAgSWYgbm90LCBzZWUKKy0uXCIgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorLS5cIgorLS5USCBTRVRYQVRUUiAyICJFeHRlbmRlZCBBdHRyaWJ1dGVzIiAiRGVjIDIwMDEiICJTeXN0ZW0gY2FsbHMiCistLlNIIE5BTUUKKy1zZXR4YXR0ciwgbHNldHhhdHRyLCBmc2V0eGF0dHIgXC0gc2V0IGFuIGV4dGVuZGVkIGF0dHJpYnV0ZSB2YWx1ZQorLS5TSCBTWU5PUFNJUworLS5mYW0gQworLS5uZgorLS5CICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKy0uQiAjaW5jbHVkZSA8YXR0ci94YXR0ci5oPgorLS5zcAorLS5CSSAiaW50IHNldHhhdHRyIChjb25zdCBjaGFyXCAqIiBwYXRoICIsIGNvbnN0IGNoYXJcICoiIG5hbWUgIiwKKy0uQkkgIlx0XHRcdCBjb25zdCB2b2lkXCAqIiB2YWx1ZSAiLCBzaXplX3QgIiBzaXplICIsIGludCAiIGZsYWdzICk7CistLkJJICJpbnQgbHNldHhhdHRyIChjb25zdCBjaGFyXCAqIiBwYXRoICIsIGNvbnN0IGNoYXJcICoiIG5hbWUgIiwKKy0uQkkgIlx0XHRcdCBjb25zdCB2b2lkXCAqIiB2YWx1ZSAiLCBzaXplX3QgIiBzaXplICIsIGludCAiIGZsYWdzICk7CistLkJJICJpbnQgZnNldHhhdHRyIChpbnQgIiBmaWxlZGVzICIsIGNvbnN0IGNoYXJcICoiIG5hbWUgIiwKKy0uQkkgIlx0XHRcdCBjb25zdCB2b2lkXCAqIiB2YWx1ZSAiLCBzaXplX3QgIiBzaXplICIsIGludCAiIGZsYWdzICk7CistLmZpCistLmZhbSBUCistLlNIIERFU0NSSVBUSU9OCistRXh0ZW5kZWQgYXR0cmlidXRlcyBhcmUKKy0uSVIgbmFtZSA6XGMKKy0uSSB2YWx1ZQorLXBhaXJzIGFzc29jaWF0ZWQgd2l0aCBpbm9kZXMgKGZpbGVzLCBkaXJlY3Rvcmllcywgc3ltbGlua3MsIGV0YykuCistVGhleSBhcmUgZXh0ZW5zaW9ucyB0byB0aGUgbm9ybWFsIGF0dHJpYnV0ZXMgd2hpY2ggYXJlIGFzc29jaWF0ZWQKKy13aXRoIGFsbCBpbm9kZXMgaW4gdGhlIHN5c3RlbSAoaS5lLiB0aGUKKy0uQlIgc3RhdCAoMikKKy1kYXRhKS4KKy1BIGNvbXBsZXRlIG92ZXJ2aWV3IG9mIGV4dGVuZGVkIGF0dHJpYnV0ZXMgY29uY2VwdHMgY2FuIGJlIGZvdW5kIGluCistLkJSIGF0dHIgKDUpLgorLS5QUAorLS5CIHNldHhhdHRyCistc2V0cyB0aGUKKy0uSSB2YWx1ZQorLW9mIHRoZSBleHRlbmRlZCBhdHRyaWJ1dGUgaWRlbnRpZmllZCBieQorLS5JIG5hbWUKKy1hbmQgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbgorLS5JIHBhdGgKKy1pbiB0aGUgZmlsZXN5c3RlbS4KKy1UaGUKKy0uSSBzaXplCistb2YgdGhlCistLkkgdmFsdWUKKy1tdXN0IGJlIHNwZWNpZmllZC4KKy0uUFAKKy0uQiBsc2V0eGF0dHIKKy1pcyBpZGVudGljYWwgdG8gCistLkJSIHNldHhhdHRyICwKKy1leGNlcHQgaW4gdGhlIGNhc2Ugb2YgYSBzeW1ib2xpYyBsaW5rLCB3aGVyZSB0aGUgZXh0ZW5kZWQgYXR0cmlidXRlIGlzCistc2V0IG9uIHRoZSBsaW5rIGl0c2VsZiwgbm90IHRoZSBmaWxlIHRoYXQgaXQgcmVmZXJzIHRvLgorLS5QUAorLS5CIGZzZXR4YXR0cgorLWlzIGlkZW50aWNhbCB0bworLS5CUiBzZXR4YXR0ciAsCistb25seSB0aGUgZXh0ZW5kZWQgYXR0cmlidXRlIGlzIHNldCBvbiB0aGUgb3BlbiBmaWxlIHBvaW50ZWQgdG8gYnkKKy0uSSBmaWxlZGVzCistKGFzIHJldHVybmVkIGJ5CistLkJSIG9wZW4gKDIpKQorLWluIHBsYWNlIG9mCistLklSIHBhdGggLgorLS5QUAorLUFuIGV4dGVuZGVkIGF0dHJpYnV0ZSBuYW1lIGlzIGEgc2ltcGxlIE5VTEwtdGVybWluYXRlZCBzdHJpbmcuCistVGhlCistLkkgbmFtZQorLWluY2x1ZGVzIGEgbmFtZXNwYWNlIHByZWZpeCBcLSB0aGVyZSBtYXkgYmUgc2V2ZXJhbCwgZGlzam9pbnQKKy1uYW1lc3BhY2VzIGFzc29jaWF0ZWQgd2l0aCBhbiBpbmRpdmlkdWFsIGlub2RlLgorLVRoZQorLS5JIHZhbHVlCistb2YgYW4gZXh0ZW5kZWQgYXR0cmlidXRlIGlzIGEgY2h1bmsgb2YgYXJiaXRyYXJ5IHRleHR1YWwgb3IKKy1iaW5hcnkgZGF0YSBvZiBzcGVjaWZpZWQgbGVuZ3RoLgorLS5QUAorLVRoZQorLS5JIGZsYWdzCistcGFyYW1ldGVyIGNhbiBiZSB1c2VkIHRvIHJlZmluZSB0aGUgc2VtYW50aWNzIG9mIHRoZSBvcGVyYXRpb24uCistWEFUVFJfQ1JFQVRFIHNwZWNpZmllcyBhIHB1cmUgY3JlYXRlLCB3aGljaCBmYWlscyBpZiB0aGUgbmFtZWQKKy1hdHRyaWJ1dGUgZXhpc3RzIGFscmVhZHkuCistWEFUVFJfUkVQTEFDRSBzcGVjaWZpZXMgYSBwdXJlIHJlcGxhY2Ugb3BlcmF0aW9uLCB3aGljaCBmYWlscyBpZiB0aGUKKy1uYW1lZCBhdHRyaWJ1dGUgZG9lcyBub3QgYWxyZWFkeSBleGlzdC4KKy1CeSBkZWZhdWx0IChubyBmbGFncyksIHRoZSBleHRlbmRlZCBhdHRyaWJ1dGUgd2lsbCBiZSBjcmVhdGVkIGlmCistbmVlZCBiZSwgb3Igd2lsbCBzaW1wbHkgcmVwbGFjZSB0aGUgdmFsdWUgaWYgdGhlIGF0dHJpYnV0ZSBleGlzdHMuCistLlNIIFJFVFVSTiBWQUxVRQorLU9uIHN1Y2Nlc3MsIHplcm8gaXMgcmV0dXJuZWQuCistT24gZmFpbHVyZSwgXC0xIGlzIHJldHVybmVkIGFuZAorLS5JIGVycm5vCistaXMgc2V0IGFwcHJvcHJpYXRlbHkuCistLlBQCistSWYgWEFUVFJfQ1JFQVRFIGlzIHNwZWNpZmllZCwgYW5kIHRoZSBhdHRyaWJ1dGUgZXhpc3RzIGFscmVhZHksCistLkkgZXJybm8KKy1pcyBzZXQgdG8gRUVYSVNULgorLUlmIFhBVFRSX1JFUExBQ0UgaXMgc3BlY2lmaWVkLCBhbmQgdGhlIGF0dHJpYnV0ZSBkb2VzIG5vdCBleGlzdCwKKy0uSSBlcnJubworLWlzIHNldCB0byBFTk9BVFRSLgorLS5QUAorLUlmIHRoZXJlIGlzIGluc3VmZmljaWVudCBzcGFjZSByZW1haW5pbmcgdG8gc3RvcmUgdGhlIGV4dGVuZGVkIGF0dHJpYnV0ZSwKKy0uSSBlcnJubworLWlzIHNldCB0byBlaXRoZXIgRU5PU1BDLCBvciBFRFFVT1QgaWYgcXVvdGEgZW5mb3JjZW1lbnQgd2FzIHRoZSBjYXVzZS4KKy0uUFAKKy1JZiBleHRlbmRlZCBhdHRyaWJ1dGVzIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBmaWxlc3lzdGVtLCBvciBhcmUgZGlzYWJsZWQsCistLkkgZXJybm8KKy1pcyBzZXQgdG8gRU5PVFNVUC4KKy0uUFAKKy1UaGUgZXJyb3JzIGRvY3VtZW50ZWQgZm9yIHRoZQorLS5CUiBzdGF0ICgyKQorLXN5c3RlbSBjYWxsIGFyZSBhbHNvIGFwcGxpY2FibGUgaGVyZS4KKy0uU0ggQVVUSE9SUworLUFuZHJlYXMgR3J1ZW5iYWNoZXIsCistLlJJIDwgYS5ncnVlbmJhY2hlckBiZXN0Yml0cy5hdCA+CistYW5kIHRoZSBTR0kgWEZTIGRldmVsb3BtZW50IHRlYW0sCistLlJJIDwgbGludXgteGZzQG9zcy5zZ2kuY29tID4uCistUGxlYXNlIHNlbmQgYW55IGJ1ZyByZXBvcnRzIG9yIGNvbW1lbnRzIHRvIHRoZXNlIGFkZHJlc3Nlcy4KKy0uU0ggU0VFIEFMU08KKy0uQlIgZ2V0ZmF0dHIgKDEpLAorLS5CUiBzZXRmYXR0ciAoMSksCistLkJSIG9wZW4gKDIpLAorLS5CUiBzdGF0ICgyKSwKKy0uQlIgZ2V0eGF0dHIgKDIpLAorLS5CUiBsaXN0eGF0dHIgKDIpLAorLS5CUiByZW1vdmV4YXR0ciAoMiksCistYW5kCistLkJSIGF0dHIgKDUpLgorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYmFzaC1jb21wbGV0aW9uL2Jhc2gtY29tcGxldGlvbl8yLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYmFzaC1jb21wbGV0aW9uL2Jhc2gtY29tcGxldGlvbl8yLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkMjI4NTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jhc2gtY29tcGxldGlvbi9iYXNoLWNvbXBsZXRpb25fMi41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotU1VNTUFSWSA9ICJQcm9ncmFtbWFibGUgQ29tcGxldGlvbiBmb3IgQmFzaCA0IgotSE9NRVBBR0UgPSAiaHR0cDovL2Jhc2gtY29tcGxldGlvbi5hbGlvdGguZGViaWFuLm9yZy8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYWxpb3RoLmRlYmlhbi5vcmcvcHJvamVjdHMvYmFzaC1jb21wbGV0aW9uLyIKLQotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgotCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3Njb3AvYmFzaC1jb21wbGV0aW9uL3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9LyR7QlBOfS0ke1BWfS50YXIueHoiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxNTMwMDAxMGJkNDAzNGRlMTJjM2ZjNGYxNzE2OTJlMyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiMGI5NTQwYzY1NTMyODI1ZWNhMDMwZjEyNDE3MzEzODNmODliMmI2NWU4MGYzNDkyYzVkZDJmMDQzOGM5NWNmIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiYmFzaC1jb21wbGV0aW9uLSg/UDxwdmVyPig/ITIwMDgpLispXC50YXIiCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3Njb3AvYmFzaC1jb21wbGV0aW9uL3JlbGVhc2VzIgotCi1QQVJBTExFTF9NQUtFID0gIiIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JIyBjb21wYXRkaXIKLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2Jhc2hfY29tcGxldGlvbi5kLwotCWVjaG8gJy4gJHtkYXRhZGlyfS8ke0JQTn0vYmFzaF9jb21wbGV0aW9uJyA+JHtEfSR7c3lzY29uZmRpcn0vYmFzaF9jb21wbGV0aW9uCi0KLQkjIERlbGV0ZSBmaWxlcyBhbHJlYWR5IHByb3ZpZGVkIGJ5IHV0aWwtbGludXgKLQlsb2NhbCBpCi0JZm9yIGkgaW4gbW91bnQgdW1vdW50OyBkbwotCQlybSAke0R9JHtkYXRhZGlyfS8ke0JQTn0vY29tcGxldGlvbnMvJGkKLQlkb25lCi19Ci0KLVJERVBFTkRTXyR7UE59ID0gImJhc2giCi0KLSMgU29tZSByZWNpcGVzIGFyZSBwcm92aWRpbmcgJHtQTn0tYmFzaC1jb21wbGV0aW9uIHBhY2thZ2VzCi1QQUNLQUdFUyA9KyAiJHtQTn0tZXh0cmEiCi1GSUxFU18ke1BOfS1leHRyYSA9ICIke2RhdGFkaXJ9LyR7QlBOfS9jb21wbGV0aW9ucy8gXAotICAgICR7ZGF0YWRpcn0vJHtCUE59L2hlbHBlcnMvIgotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7ZGF0YWRpcn0vY21ha2UiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jhc2gtY29tcGxldGlvbi9iYXNoLWNvbXBsZXRpb25fMi43LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jhc2gtY29tcGxldGlvbi9iYXNoLWNvbXBsZXRpb25fMi43LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1MTliM2YKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYmFzaC1jb21wbGV0aW9uL2Jhc2gtY29tcGxldGlvbl8yLjcuYmIKQEAgLTAsMCArMSw0MiBAQAorU1VNTUFSWSA9ICJQcm9ncmFtbWFibGUgQ29tcGxldGlvbiBmb3IgQmFzaCA0IgorSE9NRVBBR0UgPSAiaHR0cDovL2Jhc2gtY29tcGxldGlvbi5hbGlvdGguZGViaWFuLm9yZy8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYWxpb3RoLmRlYmlhbi5vcmcvcHJvamVjdHMvYmFzaC1jb21wbGV0aW9uLyIKKworTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgorCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3Njb3AvYmFzaC1jb21wbGV0aW9uL3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9LyR7QlBOfS0ke1BWfS50YXIueHoiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyODExNzQ5MmJkYzk0MDg0MzhlNjA0MTY4M2E0MjNjZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0MWJhODkyZDNmNDI3ZDRhNjg2ZGUzMjY3M2YzNTQwMWJjOTQ3YTc4MDFmNjg0MTI3MTIwY2RiMTM2NDE0NDFlIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiYmFzaC1jb21wbGV0aW9uLSg/UDxwdmVyPig/ITIwMDgpLispXC50YXIiCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3Njb3AvYmFzaC1jb21wbGV0aW9uL3JlbGVhc2VzIgorCitQQVJBTExFTF9NQUtFID0gIiIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJIyBjb21wYXRkaXIKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2Jhc2hfY29tcGxldGlvbi5kLworCWVjaG8gJy4gJHtkYXRhZGlyfS8ke0JQTn0vYmFzaF9jb21wbGV0aW9uJyA+JHtEfSR7c3lzY29uZmRpcn0vYmFzaF9jb21wbGV0aW9uCisKKwkjIERlbGV0ZSBmaWxlcyBhbHJlYWR5IHByb3ZpZGVkIGJ5IHV0aWwtbGludXgKKwlsb2NhbCBpCisJZm9yIGkgaW4gbW91bnQgdW1vdW50IHJma2lsbDsgZG8KKwkJcm0gJHtEfSR7ZGF0YWRpcn0vJHtCUE59L2NvbXBsZXRpb25zLyRpCisJZG9uZQorfQorCitSREVQRU5EU18ke1BOfSA9ICJiYXNoIgorCisjIFNvbWUgcmVjaXBlcyBhcmUgcHJvdmlkaW5nICR7UE59LWJhc2gtY29tcGxldGlvbiBwYWNrYWdlcworUEFDS0FHRVMgPSsgIiR7UE59LWV4dHJhIgorRklMRVNfJHtQTn0tZXh0cmEgPSAiJHtkYXRhZGlyfS8ke0JQTn0vY29tcGxldGlvbnMvIFwKKyAgICAke2RhdGFkaXJ9LyR7QlBOfS9oZWxwZXJzLyIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L2NtYWtlIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9iZHdnYy9iZHdnYy8wMDAxLWNvbmZpZ3VyZS5hYy1hZGQtY2hlY2stZm9yLU5PX0dFVENPTlRFWFQtZGVmaW5pdGlvbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9iZHdnYy9iZHdnYy8wMDAxLWNvbmZpZ3VyZS5hYy1hZGQtY2hlY2stZm9yLU5PX0dFVENPTlRFWFQtZGVmaW5pdGlvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGVmNzc0Zi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYmR3Z2MvYmR3Z2MvMDAwMS1jb25maWd1cmUuYWMtYWRkLWNoZWNrLWZvci1OT19HRVRDT05URVhULWRlZmluaXRpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1jb25maWd1cmUuYWM6IGFkZCBjaGVjayBmb3IgTk9fR0VUQ09OVEVYVCBkZWZpbml0aW9uCi0KLVNpZ25lZC1vZmYtYnk6IFNhbXVlbCBNYXJ0aW4gPHMubWFydGluNDlAZ21haWwuY29tPgotW3lhbm4ubW9yaW4uMTk5OEBmcmVlLmZyOiBhZGQgYSBjb21tZW50LCBjaGFuZ2UgdmFyaWFibGUgbmFtZSwgdXNlCi0gQVNfSUYsIHJlbW92ZSBkZWJ1ZyB0cmFjZXMsIHVzZSBBQ19DSEVDS19GVU5DUyAoYXMgc3VnZ2VzdGVkIGJ5Ci0gVGhvbWFzKV0KLVNpZ25lZC1vZmYtYnk6ICJZYW5uIEUuIE1PUklOIiA8eWFubi5tb3Jpbi4xOTk4QGZyZWUuZnI+Ci1DYzogVGhvbWFzIFBldGF6em9uaSA8dGhvbWFzLnBldGF6em9uaUBmcmVlLWVsZWN0cm9ucy5jb20+Ci0KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0gY29uZmlndXJlLmFjIHwgNiArKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspCi0KLS0tLSBiZHdnYy03LjJmLm9yaWcvY29uZmlndXJlLmFjCTIwMTQtMDYtMDEgMTk6MDA6NDcuMDAwMDAwMDAwICswMjAwCi0rKysgYmR3Z2MtNy4yZi9jb25maWd1cmUuYWMJMjAxNC0xMi0yMyAxNDoxMzoxMS41ODU3MTY3MTMgKzAxMDAKLUBAIC0zNjUsNiArMzY1LDEyIEBACi0gICBBQ19NU0dfUkVTVUxUKCRhY19jdl9mbm9fc3RyaWN0X2FsaWFzaW5nKQotIGZpCi0gCi0rIyBDaGVjayBmb3IgZ2V0Y29udGV4dCAodUNsaWJjIGNhbiBiZSBjb25maWd1cmVkIHdpdGhvdXQgaXQsIGZvciBleGFtcGxlKQotK0FDX0NIRUNLX0ZVTkNTKFtnZXRjb250ZXh0XSkKLStBU19JRihbdGVzdCAiJGFjX2N2X2Z1bmNfZ2V0Y29udGV4dCIgPSAibm8iXSwKLSsgIFtDRkxBR1M9IiRDRkxBR1MgLUROT19HRVRDT05URVhUIgotKyAgIENQUEZMQUdTPSIkQ1BQRkxBR1MgLUROT19HRVRDT05URVhUIl0pCi0rCi0gY2FzZSAiJGhvc3QiIGluCi0gIyBXaGlsZSBJUklYIDYgaGFzIGxpYmRsIGZvciB0aGUgTzMyIGFuZCBOMzIgQUJJcywgaXQncyBtaXNzaW5nIGZvciBONjQKLSAjIGFuZCB1bm5lY2Vzc2FyeSBldmVyeXdoZXJlLgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jkd2djL2Jkd2djL211c2xfaGVhZGVyX2ZpeC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9iZHdnYy9iZHdnYy9tdXNsX2hlYWRlcl9maXgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhMTg0OTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jkd2djL2Jkd2djL211c2xfaGVhZGVyX2ZpeC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLUFkZCBtaXNzaW5nIGhlYWRlciB0byBhdm9pZDoKLQotfCAxNDcyNjU5NjEwLjAxNjM1NTogLi4vZ2l0L3B0aHJlYWRfc3RvcF93b3JsZC5jOiBJbiBmdW5jdGlvbiAnR0NfYnJpZWZfYXN5bmNfc2lnbmFsX3NhZmVfc2xlZXAnOgotfCAxNDcyNjU5NjEwLjA1NDAyNTI6IC4uL2dpdC9wdGhyZWFkX3N0b3Bfd29ybGQuYzozOTc6MjI6IGVycm9yOiBzdG9yYWdlIHNpemUgb2YgJ3R2JyBpc24ndCBrbm93bgotfCAxNDcyNjU5NjEwLjA1NDAyNTI6ICAgICAgICBzdHJ1Y3QgdGltZXZhbCB0djsKLXwgMTQ3MjY1OTYxMC4wNTQwMjUyOiAgICAgICAgICAgICAgICAgICAgICAgXn4KLXwgMTQ3MjY1OTYxMC4wNTQwOTk6IC4uL2dpdC9wdGhyZWFkX3N0b3Bfd29ybGQuYzozOTc6MjI6IHdhcm5pbmc6IHVudXNlZCB2YXJpYWJsZSAndHYnIFstV3VudXNlZC12YXJpYWJsZV0KLXwgMTQ3MjY1OTYxMC4wNTQwOTk6ICAgICAgICBzdHJ1Y3QgdGltZXZhbCB0djsKLXwgMTQ3MjY1OTYxMC4wNTQwOTk6ICAgICAgICAgICAgICAgICAgICAgICBefgotfCAxNDcyNjU5NjEwLjA1NDA5OTogTWFrZWZpbGU6MTUzMDogcmVjaXBlIGZvciB0YXJnZXQgJ3B0aHJlYWRfc3RvcF93b3JsZC5sbycgZmFpbGVkCi0KLWluIG11c2wgYnVpbGRzLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotSW5kZXg6IGdpdC9wdGhyZWFkX3N0b3Bfd29ybGQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL3B0aHJlYWRfc3RvcF93b3JsZC5jCi0rKysgZ2l0L3B0aHJlYWRfc3RvcF93b3JsZC5jCi1AQCAtNDUsNiArNDUsNyBAQAotICNpbmNsdWRlIDxzZW1hcGhvcmUuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0rI2luY2x1ZGUgPHN5cy90aW1lLmg+Ci0gI2luY2x1ZGUgImF0b21pY19vcHMuaCIKLSAKLSAvKiBJdCdzIHNhZmUgdG8gY2FsbCBvcmlnaW5hbCBwdGhyZWFkX3NpZ21hc2soKSBoZXJlLiAgICovCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYmR3Z2MvYmR3Z2NfNy42LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYmR3Z2MvYmR3Z2NfNy42LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjYjY4ZjAuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jkd2djL2Jkd2djXzcuNi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotU1VNTUFSWSA9ICJBIGdhcmJhZ2UgY29sbGVjdG9yIGZvciBDIGFuZCBDKysiCi0KLURFU0NSSVBUSU9OID0gIlRoZSBCb2VobS1EZW1lcnMtV2Vpc2VyIGNvbnNlcnZhdGl2ZSBnYXJiYWdlIGNvbGxlY3RvciBjYW4gYmVcCi0gdXNlZCBhcyBhIGdhcmJhZ2UgY29sbGVjdGluZyByZXBsYWNlbWVudCBmb3IgQyBtYWxsb2Mgb3IgQysrIG5ldy4gSXQgYWxsb3dzXAotIHlvdSB0byBhbGxvY2F0ZSBtZW1vcnkgYmFzaWNhbGx5IGFzIHlvdSBub3JtYWxseSB3b3VsZCwgd2l0aG91dCBleHBsaWNpdGx5XAotIGRlYWxsb2NhdGluZyBtZW1vcnkgdGhhdCBpcyBubyBsb25nZXIgdXNlZnVsLiBUaGUgY29sbGVjdG9yIGF1dG9tYXRpY2FsbHlcCi0gcmVjeWNsZXMgbWVtb3J5IHdoZW4gaXQgZGV0ZXJtaW5lcyB0aGF0IGl0IGNhbiBubyBsb25nZXIgYmUgb3RoZXJ3aXNlXAotIGFjY2Vzc2VkLlwKLSAgVGhlIGNvbGxlY3RvciBpcyBhbHNvIHVzZWQgYnkgYSBudW1iZXIgb2YgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VcCi0gaW1wbGVtZW50YXRpb25zIHRoYXQgZWl0aGVyIHVzZSBDIGFzIGludGVybWVkaWF0ZSBjb2RlLCB3YW50IHRvIGZhY2lsaXRhdGVcCi0gZWFzaWVyIGludGVyb3BlcmF0aW9uIHdpdGggQyBsaWJyYXJpZXMsIG9yIGp1c3QgcHJlZmVyIHRoZSBzaW1wbGUgY29sbGVjdG9yXAotIGludGVyZmFjZS5cCi0gIEFsdGVybmF0aXZlbHksIHRoZSBnYXJiYWdlIGNvbGxlY3RvciBtYXkgYmUgdXNlZCBhcyBhIGxlYWsgZGV0ZWN0b3IgZm9yIENcCi0gb3IgQysrIHByb2dyYW1zLCB0aG91Z2ggdGhhdCBpcyBub3QgaXRzIHByaW1hcnkgZ29hbC5cCi0gIEVtcGlyaWNhbGx5LCB0aGlzIGNvbGxlY3RvciB3b3JrcyB3aXRoIG1vc3QgdW5tb2RpZmllZCBDIHByb2dyYW1zLCBzaW1wbHlcCi0gYnkgcmVwbGFjaW5nIG1hbGxvYyB3aXRoIEdDX21hbGxvYyBjYWxscywgcmVwbGFjaW5nIHJlYWxsb2Mgd2l0aCBHQ19yZWFsbG9jXAotIGNhbGxzLCBhbmQgcmVtb3ZpbmcgZnJlZSBjYWxscy4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuaGJvZWhtLmluZm8vZ2MvIgotU0VDVElPTiA9ICJkZXZlbCIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FLlFVSUNLO21kNT00ZjgxZjI0ZWM2OTcyNmMzMTI0ODdjMmFjNzQwZTllMyIKLQotU1JDUkVWID0gIjhhYzFkODRhNDBlYjdhNDMxZmVjMWI4MDk3ZTNmMjRiNDhmYjIzZmEiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vaXZtYWkvYmR3Z2MuZ2l0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLWFkZC1jaGVjay1mb3ItTk9fR0VUQ09OVEVYVC1kZWZpbml0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL211c2xfaGVhZGVyX2ZpeC5wYXRjaCBcCi0gICAgICAgICAgIgotCi1GSUxFU18ke1BOfS1kb2MgPSAiJHtkYXRhZGlyfSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotQVJNX0lOU1RSVUNUSU9OX1NFVCA9ICJhcm0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi0jIGJ5IGRlZmF1bHQgdXNlIGV4dGVybmFsIGxpYmF0b21pYy1vcHMKLVBBQ0tBR0VDT05GSUcgPz89ICJsaWJhdG9taWMtb3BzIgotUEFDS0FHRUNPTkZJR1tsaWJhdG9taWMtb3BzXSA9ICItLXdpdGgtbGliYXRvbWljLW9wcz15ZXMsLS13aXRoLWxpYmF0b21pYy1vcHM9bm8sbGliYXRvbWljLW9wcyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2JtYXAtdG9vbHMvYm1hcC10b29sc18zLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm1hcC10b29scy9ibWFwLXRvb2xzXzMuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTEwZjVmZC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm1hcC10b29scy9ibWFwLXRvb2xzXzMuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLVNVTU1BUlkgPSAiVG9vbHMgdG8gZ2VuZXJhdGUgYmxvY2sgbWFwIChBS0EgYm1hcCkgYW5kIGZsYXNoIGltYWdlcyB1c2luZyBibWFwIgotREVTQ1JJUFRJT04gPSAiQm1hcC10b29scyAtIHRvb2xzIHRvIGdlbmVyYXRlIGJsb2NrIG1hcCAoQUtBIGJtYXApIGFuZCBmbGFzaCBpbWFnZXMgdXNpbmcgXAotYm1hcC4gQm1hcHRvb2wgaXMgYSBnZW5lcmljIHRvb2wgZm9yIGNyZWF0aW5nIHRoZSBibG9jayBtYXAgKGJtYXApIGZvciBhIGZpbGUsIFwKLWFuZCBjb3B5aW5nIGZpbGVzIHVzaW5nIHRoZSBibG9jayBtYXAuIFRoZSBpZGVhIGlzIHRoYXQgbGFyZ2UgZmlsZSBjb250YWluaW5nIFwKLXVudXNlZCBibG9ja3MsIGxpa2UgcmF3IHN5c3RlbSBpbWFnZSBmaWxlcywgY2FuIGJlIGNvcGllZCBvciBmbGFzaGVkIGEgbG90IFwKLWZhc3RlciB3aXRoIGJtYXB0b29sIHRoYW4gd2l0aCB0cmFkaXRpb25hbCB0b29scyBsaWtlICJkZCIgb3IgImNwIi4iCi1IT01FUEFHRSA9ICJodHRwOi8vZ2l0LmluZnJhZGVhZC5vcmcvdXNlcnMvZGVkZWtpbmQvYm1hcC10b29scy5naXQiCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCi0KLVNSQ19VUkkgPSAiZnRwOi8vZnRwLmluZnJhZGVhZC5vcmcvcHViLyR7QlBOfS8ke0JQTn0tJHtQVn0udGd6IgotU1JDX1VSSVttZDVzdW1dID0gIjkyY2RhZDFjYjRkZmEwY2NhNzE3NmM4ZTIyNzUyNjE2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImNjNmM3ZjdkYzBhMzdlMmEzMmRlYjEyNzMwOGUyNGU2YzRiODBiZmI1NGYzODAzYzMwOGVmYWIwMmJmMmQ0MzQiCi0KLVJERVBFTkRTXyR7UE59ID0gInB5dGhvbi1jb3JlIHB5dGhvbi1jb21wcmVzc2lvbiIKLQotaW5oZXJpdCBzZXR1cHRvb2xzCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0gICAgc2VkIC1pIC1lICdzfF4jIS4qL3Vzci9iaW4vZW52IHB5dGhvbnwjISAvdXNyL2Jpbi9lbnYgbmF0aXZlcHl0aG9ufCcgJHtEfSR7YmluZGlyfS9ibWFwdG9vbAotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2JtYXAtdG9vbHMvYm1hcC10b29sc18zLjQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm1hcC10b29scy9ibWFwLXRvb2xzXzMuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MGI2ZTkxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2JtYXAtdG9vbHMvYm1hcC10b29sc18zLjQuYmIKQEAgLTAsMCArMSwyMiBAQAorU1VNTUFSWSA9ICJUb29scyB0byBnZW5lcmF0ZSBibG9jayBtYXAgKEFLQSBibWFwKSBhbmQgZmxhc2ggaW1hZ2VzIHVzaW5nIGJtYXAiCitERVNDUklQVElPTiA9ICJCbWFwLXRvb2xzIC0gdG9vbHMgdG8gZ2VuZXJhdGUgYmxvY2sgbWFwIChBS0EgYm1hcCkgYW5kIGZsYXNoIGltYWdlcyB1c2luZyBcCitibWFwLiBCbWFwdG9vbCBpcyBhIGdlbmVyaWMgdG9vbCBmb3IgY3JlYXRpbmcgdGhlIGJsb2NrIG1hcCAoYm1hcCkgZm9yIGEgZmlsZSwgXAorYW5kIGNvcHlpbmcgZmlsZXMgdXNpbmcgdGhlIGJsb2NrIG1hcC4gVGhlIGlkZWEgaXMgdGhhdCBsYXJnZSBmaWxlIGNvbnRhaW5pbmcgXAordW51c2VkIGJsb2NrcywgbGlrZSByYXcgc3lzdGVtIGltYWdlIGZpbGVzLCBjYW4gYmUgY29waWVkIG9yIGZsYXNoZWQgYSBsb3QgXAorZmFzdGVyIHdpdGggYm1hcHRvb2wgdGhhbiB3aXRoIHRyYWRpdGlvbmFsIHRvb2xzIGxpa2UgImRkIiBvciAiY3AiLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS8wMW9yZy9ibWFwLXRvb2xzIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vaW50ZWwvYm1hcC10b29scy5naXQiCitTUkNSRVYgPSAiOWRhZDcyNDEwNGRmMjY1NDQyMjI2OTcyYTFlMzEwODEzZjlmZmNiYSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uMy1jb3JlIHB5dGhvbjMtY29tcHJlc3Npb24gcHl0aG9uMy1tbWFwIHB5dGhvbjMtc2V0dXB0b29scyIKKworaW5oZXJpdCBweXRob24zbmF0aXZlCitpbmhlcml0IHNldHVwdG9vbHMzCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2JqYW0tbmF0aXZlXzEuNjMuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9iamFtLW5hdGl2ZV8xLjY0LjAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9iamFtLW5hdGl2ZV8xLjYzLjAuYmIKcmVuYW1lIHRvIGltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9iamFtLW5hdGl2ZV8xLjY0LjAuYmIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC0xLjYzLjAuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LTEuNjMuMC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1NDBhODkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LTEuNjMuMC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi0jIFRoZSBCb29zdCB3ZWIgc2l0ZSBwcm92aWRlcyBmcmVlIHBlZXItcmV2aWV3ZWQgcG9ydGFibGUKLSMgQysrIHNvdXJjZSBsaWJyYXJpZXMuIFRoZSBlbXBoYXNpcyBpcyBvbiBsaWJyYXJpZXMgd2hpY2gKLSMgd29yayB3ZWxsIHdpdGggdGhlIEMrKyBTdGFuZGFyZCBMaWJyYXJ5LiBUaGUgbGlicmFyaWVzIGFyZQotIyBpbnRlbmRlZCB0byBiZSB3aWRlbHkgdXNlZnVsLCBhbmQgYXJlIGluIHJlZ3VsYXIgdXNlIGJ5Ci0jIHRob3VzYW5kcyBvZiBwcm9ncmFtbWVycyBhY3Jvc3MgYSBicm9hZCBzcGVjdHJ1bSBvZiBhcHBsaWNhdGlvbnMuCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmJvb3N0Lm9yZy8iCi1MSUNFTlNFID0gIkJTTC0xLjAgJiBNSVQgJiBQeXRob24tMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRV8xXzAudHh0O21kNT1lNDIyNGNjYWVjYjE0ZDk0MmM3MWQzMWJlZjIwZDc4YyIKLQotQk9PU1RfVkVSID0gIiR7QCJfIi5qb2luKGQuZ2V0VmFyKCJQViIpLnNwbGl0KCIuIikpfSIKLUJPT1NUX01BSiA9ICIke0AiXyIuam9pbihkLmdldFZhcigiUFYiKS5zcGxpdCgiLiIpWzA6Ml0pfSIKLUJPT1NUX1AgPSAiYm9vc3RfJHtCT09TVF9WRVJ9IgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0L2Jvb3N0L2Jvb3N0LyR7UFZ9LyR7Qk9PU1RfUH0udGFyLmJ6MiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjFjODM3ZWNkOTkwYmIwMjJkMDdlN2FhYjMyYjA5ODQ3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImJlYWUyNTI5Zjc1OWY2YjNiZjNmNDk2OWExOWMyZTlkNmYwYzUwM2VkY2IyZGU0YTYxZDE0Mjg1MTlmY2IzYjAiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vd3d3LmJvb3N0Lm9yZy91c2Vycy9kb3dubG9hZC8iCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJib29zdG9yZy9yZWxlYXNlLyg/UDxwdmVyPi4qKS9zb3VyY2UvIgotCi1QUiA9ICJyMSIKLQotUyA9ICIke1dPUktESVJ9LyR7Qk9PU1RfUH0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QtMS42NC4wLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC0xLjY0LjAuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjN2IxYTkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QtMS42NC4wLmluYwpAQCAtMCwwICsxLDIxIEBACisjIFRoZSBCb29zdCB3ZWIgc2l0ZSBwcm92aWRlcyBmcmVlIHBlZXItcmV2aWV3ZWQgcG9ydGFibGUKKyMgQysrIHNvdXJjZSBsaWJyYXJpZXMuIFRoZSBlbXBoYXNpcyBpcyBvbiBsaWJyYXJpZXMgd2hpY2gKKyMgd29yayB3ZWxsIHdpdGggdGhlIEMrKyBTdGFuZGFyZCBMaWJyYXJ5LiBUaGUgbGlicmFyaWVzIGFyZQorIyBpbnRlbmRlZCB0byBiZSB3aWRlbHkgdXNlZnVsLCBhbmQgYXJlIGluIHJlZ3VsYXIgdXNlIGJ5CisjIHRob3VzYW5kcyBvZiBwcm9ncmFtbWVycyBhY3Jvc3MgYSBicm9hZCBzcGVjdHJ1bSBvZiBhcHBsaWNhdGlvbnMuCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmJvb3N0Lm9yZy8iCitMSUNFTlNFID0gIkJTTC0xLjAgJiBNSVQgJiBQeXRob24tMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRV8xXzAudHh0O21kNT1lNDIyNGNjYWVjYjE0ZDk0MmM3MWQzMWJlZjIwZDc4YyIKKworQk9PU1RfVkVSID0gIiR7QCJfIi5qb2luKGQuZ2V0VmFyKCJQViIpLnNwbGl0KCIuIikpfSIKK0JPT1NUX01BSiA9ICIke0AiXyIuam9pbihkLmdldFZhcigiUFYiKS5zcGxpdCgiLiIpWzA6Ml0pfSIKK0JPT1NUX1AgPSAiYm9vc3RfJHtCT09TVF9WRVJ9IgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0L2Jvb3N0L2Jvb3N0LyR7UFZ9LyR7Qk9PU1RfUH0udGFyLmJ6MiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI5M2VlY2NlMmFiZWQ5ZDI0NDJjOTY3NjkxNDcwOTM0OSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3YmNjNWNhYWNlOTdiYWE5NDg5MzFkNzEyZWE1ZjM3MDM4ZGJiMWM1ZDg5YjQzYWQ0ZGVmNGVkN2NiNjgzMzMyIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5ib29zdC5vcmcvdXNlcnMvZG93bmxvYWQvIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiYm9vc3RvcmcvcmVsZWFzZS8oP1A8cHZlcj4uKikvc291cmNlLyIKKworUyA9ICIke1dPUktESVJ9LyR7Qk9PU1RfUH0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LmluYwppbmRleCA0ZmY3MGUzLi40MWZjOTBmIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QuaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC5pbmMKQEAgLTM4LDcgKzM4LDcgQEAKIEJPT1NUX0xJQlNfcmVtb3ZlX21pcHMxNmUgPSAid2F2ZSIKIAogIyBvcHRpb25hbCBsaWJyYXJpZXMKLVBBQ0tBR0VDT05GSUcgPz89ICJsb2NhbGUiCitQQUNLQUdFQ09ORklHID8/PSAibG9jYWxlIHB5dGhvbiIKIFBBQ0tBR0VDT05GSUdbbG9jYWxlXSA9ICIsLGljdSIKIFBBQ0tBR0VDT05GSUdbZ3JhcGhfcGFyYWxsZWxdID0gIiwsLGJvb3N0LW1waSBtcGljaCIKIFBBQ0tBR0VDT05GSUdbbXBpXSA9ICIsLG1waWNoIgpAQCAtMTY5LDcgKzE2OSw3IEBACiBCSkFNX09QVFNfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICcgLXNOT19CWklQMj0xJwogCiAjIEFkanVzdCB0aGUgYnVpbGQgZm9yIHgzMgotQkpBTV9PUFRTX2FwcGVuZF9saW51eC1nbnV4MzIgPSAiIGFiaT14MzIgYWRkcmVzcy1tb2RlbD02NCIKK0JKQU1fT1BUU19hcHBlbmRfeDg2LXgzMiA9ICIgYWJpPXgzMiBhZGRyZXNzLW1vZGVsPTY0IgogCiBkb19jb25maWd1cmUoKSB7CiAJY3AgLWYgJHtTfS9ib29zdC9jb25maWcvcGxhdGZvcm0vbGludXguaHBwICR7U30vYm9vc3QvY29uZmlnL3BsYXRmb3JtL2xpbnV4LWdudWVhYmkuaHBwCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QvMDAwMS1XaGVuLXVzaW5nLXNvZnQtZmxvYXQtb24tQVJNLXdlLXNob3VsZC1ub3QtZXhwZWN0LXRoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LzAwMDEtV2hlbi11c2luZy1zb2Z0LWZsb2F0LW9uLUFSTS13ZS1zaG91bGQtbm90LWV4cGVjdC10aC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmFmZDVjZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QvMDAwMS1XaGVuLXVzaW5nLXNvZnQtZmxvYXQtb24tQVJNLXdlLXNob3VsZC1ub3QtZXhwZWN0LXRoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotRnJvbSA5YWIwOTE0MjA3ZTZkMGU2Yjc1Y2UxMjE0N2M1NGI5NjQ3OGZlYjY0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDIxIEZlYiAyMDE3IDEyOjUwOjM1ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIFdoZW4gdXNpbmcgc29mdC1mbG9hdCwgb24gQVJNIHdlIHNob3VsZCBub3QgZXhwZWN0IHRoZSBGRV8qCi0gc3ltYm9scwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLS0tLQotIGJvb3N0L3Rlc3QvZXhlY3V0aW9uX21vbml0b3IuaHBwIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvYm9vc3QvdGVzdC9leGVjdXRpb25fbW9uaXRvci5ocHAgYi9ib29zdC90ZXN0L2V4ZWN1dGlvbl9tb25pdG9yLmhwcAotaW5kZXggZjUzMzQ4YS4uODYyNTJkNyAxMDA2NDQKLS0tLSBhL2Jvb3N0L3Rlc3QvZXhlY3V0aW9uX21vbml0b3IuaHBwCi0rKysgYi9ib29zdC90ZXN0L2V4ZWN1dGlvbl9tb25pdG9yLmhwcAotQEAgLTQ5OCw3ICs0OTgsNyBAQCBlbnVtIG1hc2tzIHsKLSAKLSAgICAgQk9PU1RfRlBFX0FMTCAgICAgICA9IE1DV19FTSwKLSAKLS0jZWxpZiBkZWZpbmVkKEJPT1NUX05PX0ZFTlZfSCkgfHwgZGVmaW5lZChCT09TVF9DTEFORykgLyogKioqICovCi0rI2VsaWYgZGVmaW5lZChCT09TVF9OT19GRU5WX0gpIHx8IGRlZmluZWQoQk9PU1RfQ0xBTkcpIHx8IGRlZmluZWQoX19BUk1fUENTKSAvKiAqKiogKi8KLSAgICAgQk9PU1RfRlBFX0FMTCAgICAgICA9IEJPT1NUX0ZQRV9PRkYsCi0gCi0gI2Vsc2UgLyogKioqICovCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QvMDAwMS1jb3JyZWN0LWVycm9yLXdoaWNoLWFwcGVhcmVkLXdoZW4tY29tcGlsaW5nLW5vbi1jLWNvLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LzAwMDEtY29ycmVjdC1lcnJvci13aGljaC1hcHBlYXJlZC13aGVuLWNvbXBpbGluZy1ub24tYy1jby5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTYwMDVlCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LzAwMDEtY29ycmVjdC1lcnJvci13aGljaC1hcHBlYXJlZC13aGVuLWNvbXBpbGluZy1ub24tYy1jby5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIDAyZmE1Y2VlMWI4ZDAzMjE3ODcxMTNlMmRjMTBiMTYyYzY1N2YzMzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb2JlcnQgUmFtZXkgPHJhbWV5QHJyc2QuY29tPgorRGF0ZTogV2VkLCAxIEZlYiAyMDE3IDE2OjQzOjU5IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvcnJlY3QgZXJyb3Igd2hpY2ggYXBwZWFyZWQgd2hlbiBjb21waWxpbmcgbm9uIGMrKyBjb21wbGlhbnQKKyBjb2RlIGZvciBhcnJheXMKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbZXhwZWN0ZWQgdG8gYmUgcmVsZWFzZWQgaW4gdjEuNjVdCisKKy0tLQorIGJvb3N0L3NlcmlhbGl6YXRpb24vYXJyYXkuaHBwIHwgMiArKworIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2Jvb3N0L3NlcmlhbGl6YXRpb24vYXJyYXkuaHBwIGIvYm9vc3Qvc2VyaWFsaXphdGlvbi9hcnJheS5ocHAKK2luZGV4IDYxNzA4YjMuLjYxMmQxYTYgMTAwNjQ0CistLS0gYS9ib29zdC9zZXJpYWxpemF0aW9uL2FycmF5LmhwcAorKysrIGIvYm9vc3Qvc2VyaWFsaXphdGlvbi9hcnJheS5ocHAKK0BAIC0yMyw2ICsyMyw4IEBAIG5hbWVzcGFjZSBzdGR7CisgfSAvLyBuYW1lc3BhY2Ugc3RkCisgI2VuZGlmCisgCisrI2luY2x1ZGUgPGJvb3N0L3NlcmlhbGl6YXRpb24vYXJyYXlfd3JhcHBlci5ocHA+CisrCisgI2lmbmRlZiBCT09TVF9OT19DWFgxMV9IRFJfQVJSQVkKKyAKKyAjaW5jbHVkZSA8YXJyYXk+CistLSAKKzIuOS4zCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC8wMDA0LVVzZS1hdG9taWMtYnktZGVmYXVsdC13aGVuLUJPT1NUX05PX0NYWDExX0hEUl9BVE9NSUMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QvMDAwNC1Vc2UtYXRvbWljLWJ5LWRlZmF1bHQtd2hlbi1CT09TVF9OT19DWFgxMV9IRFJfQVRPTUlDLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYjc4MjZiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC8wMDA0LVVzZS1hdG9taWMtYnktZGVmYXVsdC13aGVuLUJPT1NUX05PX0NYWDExX0hEUl9BVE9NSUMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi1Gcm9tIGMyMzRjYzU1N2Y2MDcyOWUwNzFkNmRhNTk3NDdjMWE5Mjg5NTU1YzUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQZXRlciBEaW1vdiA8cGRpbW92QHBkaW1vdi5jb20+Ci1EYXRlOiBTdW4sIDI4IEF1ZyAyMDE2IDIxOjI4OjIxICswMzAwCi1TdWJqZWN0OiBbUEFUQ0ggNC80XSBVc2UgPGF0b21pYz4gYnkgZGVmYXVsdCB3aGVuIEJPT1NUX05PX0NYWDExX0hEUl9BVE9NSUMgaXMKLSBub3QgZGVmaW5lZAotCi0tLS0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9ib29zdG9yZy9zbWFydF9wdHIvY29tbWl0LzIwZmVkY2ZmMmNhMzE0MzUwM2VjNGU4NzZkNDc3NDVhYjBlYzdiMGNdCi1TaWduZWQtb2ZmLWJ5OiBBbmRyw6kgRHJhc3ppayA8Z2l0QGFuZHJlZC5uZXQ+Ci0gYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnQuaHBwICAgIHwgMyArKysKLSBib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZS5ocHAgfCAzICsrKwotIGJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BpbmxvY2suaHBwICAgICAgICB8IDMgKysrCi0gMyBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2Jvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXRvbWljX2NvdW50LmhwcCBiL2Jvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXRvbWljX2NvdW50LmhwcAotaW5kZXggOGFlZmQ0NC4uNmU0ZjcxYSAxMDA2NDQKLS0tLSBhL2Jvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXRvbWljX2NvdW50LmhwcAotKysrIGIvYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnQuaHBwCi1AQCAtNzMsNiArNzMsOSBAQAotICNlbGlmIGRlZmluZWQoIEJPT1NUX0RJU0FCTEVfVEhSRUFEUyApICYmICFkZWZpbmVkKCBCT09TVF9TUF9FTkFCTEVfVEhSRUFEUyApICYmICFkZWZpbmVkKCBCT09TVF9ESVNBQkxFX1dJTjMyICkKLSAjIGluY2x1ZGUgPGJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXRvbWljX2NvdW50X250LmhwcD4KLSAKLSsjZWxpZiAhZGVmaW5lZCggQk9PU1RfTk9fQ1hYMTFfSERSX0FUT01JQyApCi0rIyBpbmNsdWRlIDxib29zdC9zbWFydF9wdHIvZGV0YWlsL2F0b21pY19jb3VudF9zdGRfYXRvbWljLmhwcD4KLSsKLSAjZWxpZiBkZWZpbmVkKCBfX0dOVUNfXyApICYmICggZGVmaW5lZCggX19pMzg2X18gKSB8fCBkZWZpbmVkKCBfX3g4Nl82NF9fICkgKSAmJiAhZGVmaW5lZCggX19QQVRIU0NBTEVfXyApCi0gIyBpbmNsdWRlIDxib29zdC9zbWFydF9wdHIvZGV0YWlsL2F0b21pY19jb3VudF9nY2NfeDg2LmhwcD4KLSAKLWRpZmYgLS1naXQgYS9ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZS5ocHAgYi9ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZS5ocHAKLWluZGV4IDA5OTVjYTguLjgzZWRlMjMgMTAwNjQ0Ci0tLS0gYS9ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZS5ocHAKLSsrKyBiL2Jvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlLmhwcAotQEAgLTQ0LDYgKzQ0LDkgQEAKLSAjZWxpZiBkZWZpbmVkKCBCT09TVF9TUF9IQVNfQ0xBTkdfQzExX0FUT01JQ1MgKQotICMgaW5jbHVkZSA8Ym9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfY2xhbmcuaHBwPgotIAotKyNlbGlmICFkZWZpbmVkKCBCT09TVF9OT19DWFgxMV9IRFJfQVRPTUlDICkKLSsjIGluY2x1ZGUgPGJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX3N0ZF9hdG9taWMuaHBwPgotKwotICNlbGlmIGRlZmluZWQoIF9fU05DX18gKQotICMgaW5jbHVkZSA8Ym9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2Vfc25jX3BzMy5ocHA+Ci0gCi1kaWZmIC0tZ2l0IGEvYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9jay5ocHAgYi9ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrLmhwcAotaW5kZXggMTlmOTNkNy4uMGI2MThkZiAxMDA2NDQKLS0tLSBhL2Jvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BpbmxvY2suaHBwCi0rKysgYi9ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrLmhwcAotQEAgLTQzLDYgKzQzLDkgQEAKLSAjZWxpZiBkZWZpbmVkKCBCT09TVF9TUF9VU0VfUFRIUkVBRFMgKQotICMgIGluY2x1ZGUgPGJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BpbmxvY2tfcHQuaHBwPgotIAotKyNlbGlmICFkZWZpbmVkKCBCT09TVF9OT19DWFgxMV9IRFJfQVRPTUlDICkKLSsjICBpbmNsdWRlIDxib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrX3N0ZF9hdG9taWMuaHBwPgotKwotICNlbGlmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoIF9fYXJtX18gKSAmJiAhZGVmaW5lZCggX190aHVtYl9fICkKLSAjICBpbmNsdWRlIDxib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrX2djY19hcm0uaHBwPgotIAotLS0gCi0yLjkuMwotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QvcHkzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0L3B5My5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmIxZmYxOC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QvcHkzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjY5ICswLDAgQEAKLUJhY2twb3J0IGZpeGVzIGZyb20gdXBzdHJlYW0gKGFzIG9mIGJvb3N0IHN1cGVyLW1vZHVsZSBjb21taXQgMGQ1MmI5KSB0byBpbXByb3ZlCi10aGUgYnVpbGRpbmcgb2YgdGhlIEJvb3N0IFB5dGhvbiBtb2R1bGUgd2l0aCBQeXRob24gMy4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotZGlmZiAtLWdpdCBhL2J1aWxkL0phbWZpbGUgYi9idWlsZC9KYW1maWxlCi1pbmRleCAzMTNmZGFiLi5mMTRkYzExIDEwMDY0NAotLS0tIGEvbGlicy9weXRob24vYnVpbGQvSmFtZmlsZQotKysrIGIvbGlicy9weXRob24vYnVpbGQvSmFtZmlsZQotQEAgLTYsNiArNiw3IEBAIGltcG9ydCBvcyA7Ci0gaW1wb3J0IGluZGlyZWN0IDsKLSBpbXBvcnQgbW9kdWxlcyA7Ci0gaW1wb3J0IGZlYXR1cmUgOwotK2ltcG9ydCBwcm9wZXJ0eSA7Ci0gCi0gaW1wb3J0IHB5dGhvbiA7Ci0gCi1AQCAtMzAsMjEgKzMxLDggQEAgZWxzZQotICAgICAgICAgOwotIH0KLSAKLS1ydWxlIGZpbmQtcHkzLXZlcnNpb24KLS17Ci0tICAgIGxvY2FsIHZlcnNpb25zID0gWyBmZWF0dXJlLnZhbHVlcyBweXRob24gXSA7Ci0tICAgIGxvY2FsIHB5M3ZlciA7Ci0tICAgIGZvciBsb2NhbCB2IGluICQodmVyc2lvbnMpCi0tICAgIHsKLS0gICAgICAgIGlmICQodikgPj0gMy4wCi0tICAgICAgICB7Ci0tICAgICAgICAgICAgcHkzdmVyID0gJCh2KSA7Ci0tICAgICAgICB9Ci0tICAgIH0KLS0gICAgcmV0dXJuICQocHkzdmVyKSA7Ci0tfQotLQotLXB5My12ZXJzaW9uID0gWyBmaW5kLXB5My12ZXJzaW9uIF0gOwotK3B5Mi12ZXJzaW9uID0gWyBweS12ZXJzaW9uIDIgXSA7Ci0rcHkzLXZlcnNpb24gPSBbIHB5LXZlcnNpb24gMyBdIDsKLSAKLSBwcm9qZWN0IGJvb3N0L3B5dGhvbgotICAgOiBzb3VyY2UtbG9jYXRpb24gLi4vc3JjCi1AQCAtNTIsMTEgKzQwLDE3IEBAIHByb2plY3QgYm9vc3QvcHl0aG9uCi0gCi0gcnVsZSBjb25kICggdGVzdCA/IDogeWVzICogOiBubyAqICkgeyBpZiAkKHRlc3QpIHsgcmV0dXJuICQoeWVzKSA7IH0gZWxzZSB7IHJldHVybiAkKG5vKSA7IH0gfQotIHJ1bGUgdW5sZXNzICggdGVzdCA/IDogeWVzICogOiBubyAqICkgeyBpZiAhICQodGVzdCkgeyByZXR1cm4gJCh5ZXMpIDsgfSBlbHNlIHsgcmV0dXJuICQobm8pIDsgfSB9Ci0rbG9jYWwgcnVsZSBlcSAoIGEgOiBiICkgeyBpZiAkKGEpID0gJChiKSB7IHJldHVybiAxIDsgfSB9Ci0gCi0tcnVsZSBsaWJfYm9vc3RfcHl0aG9uICggaXMtcHkzID8gKQotLXsKLStsaWJfYm9vc3RfcHl0aG9uKDIpID0gYm9vc3RfcHl0aG9uIDsKLStsaWJfYm9vc3RfcHl0aG9uKDMpID0gYm9vc3RfcHl0aG9uMyA7Ci0gCi0tICAgIGxpYiBbIGNvbmQgJChpcy1weTMpIDogYm9vc3RfcHl0aG9uMyA6IGJvb3N0X3B5dGhvbiBdCi0rbGliX2Jvb3N0X3B5dGhvbigkKHB5Mi12ZXJzaW9uKSkgPSAkKGxpYl9ib29zdF9weXRob24oMikpIDsKLStsaWJfYm9vc3RfcHl0aG9uKCQocHkzLXZlcnNpb24pKSA9ICQobGliX2Jvb3N0X3B5dGhvbigzKSkgOwotKwotK3J1bGUgbGliX2Jvb3N0X3B5dGhvbiAoIHZlcnNpb24gKQotK3sKLSsgICAgbGliICQobGliX2Jvb3N0X3B5dGhvbigkKHZlcnNpb24pKSkKLSAgICAgICAgIDogIyBzb3VyY2VzCi0gICAgICAgICBudW1lcmljLmNwcAotICAgICAgICAgbGlzdC5jcHAKLUBAIC0xMTIsMTEgKzEwNiwxMyBAQCBydWxlIGxpYl9ib29zdF9weXRob24gKCBpcy1weTMgPyApCi0gICAgICAgICAgICAgPGRlcGVuZGVuY3k+Y29uZmlnLXdhcm5pbmcKLSAKLSAgICAgICAgICAgICA8cHl0aG9uLWRlYnVnZ2luZz5vbjo8ZGVmaW5lPkJPT1NUX0RFQlVHX1BZVEhPTgotLSAgICAgICAgICAgIFsgY29uZCAkKGlzLXB5MykgOiA8cHl0aG9uPiQocHkzLXZlcnNpb24pIF0KLSsgICAgICAgICAgICA8cHl0aG9uPiQodmVyc2lvbikKLSAKLSAgICAgICAgICAgICAtPHRhZz5AJChCT09TVF9KQU1ST09UX01PRFVMRSklJChCT09TVF9KQU1ST09UX01PRFVMRSkudGFnCi0gICAgICAgICAgICAgPHRhZz5AJChCT09TVF9KQU1ST09UX01PRFVMRSklJChCT09TVF9KQU1ST09UX01PRFVMRSkucHl0aG9uLXRhZwotIAotKyAgICAgICAgICAgIDxjb25kaXRpb25hbD5AcHl0aG9uLnJlcXVpcmUtcHkKLSsKLSAgICAgICAgIDogICAjIGRlZmF1bHQgYnVpbGQKLSAgICAgICAgICAgICA8bGluaz5zaGFyZWQKLSAgICAgICAgIDogICAjIHVzYWdlIHJlcXVpcmVtZW50cwotQEAgLTEyNSw1MSArMTIxLDY4IEBAIHJ1bGUgbGliX2Jvb3N0X3B5dGhvbiAoIGlzLXB5MyA/ICkKLSAgICAgICAgIDsKLSB9Ci0gCi0tcnVsZSBsaWJfYm9vc3RfbnVtcHkgKCBpcy1weTMgPyApCi0rbGliX2Jvb3N0X251bXB5KDIpID0gYm9vc3RfbnVtcHkgOwotK2xpYl9ib29zdF9udW1weSgzKSA9IGJvb3N0X251bXB5MyA7Ci0rCi0rbGliX2Jvb3N0X251bXB5KCQocHkyLXZlcnNpb24pKSA9ICQobGliX2Jvb3N0X3B5dGhvbigyKSkgOwotK2xpYl9ib29zdF9udW1weSgkKHB5My12ZXJzaW9uKSkgPSAkKGxpYl9ib29zdF9weXRob24oMykpIDsKLSsKLStydWxlIGxpYl9ib29zdF9udW1weSAoIHZlcnNpb24gKQotIHsKLSAgICAgbnVtcHktaW5jbHVkZSA9IFsgcHl0aG9uLm51bXB5LWluY2x1ZGUgXSA7Ci0tICAgIGxpYiBbIGNvbmQgJChpcy1weTMpIDogYm9vc3RfbnVtcHkzIDogYm9vc3RfbnVtcHkgXQotKyAgICBsaWIgJChsaWJfYm9vc3RfbnVtcHkoJCh2ZXJzaW9uKSkpCi0gICAgICAgICA6ICMgc291cmNlcwotICAgICAgICAgbnVtcHkvZHR5cGUuY3BwCi0gICAgICAgICBudW1weS9tYXRyaXguY3BwCi0gICAgICAgICBudW1weS9uZGFycmF5LmNwcAotLQludW1weS9udW1weS5jcHAKLS0JbnVtcHkvc2NhbGFycy5jcHAKLS0JbnVtcHkvdWZ1bmMuY3BwCi0rICAgICAgICBudW1weS9udW1weS5jcHAKLSsgICAgICAgIG51bXB5L3NjYWxhcnMuY3BwCi0rICAgICAgICBudW1weS91ZnVuYy5jcHAKLSAgICAgICAgIDogICAjIHJlcXVpcmVtZW50cwotKyAgICAgICAgICAgIDxsaW5rPnN0YXRpYzo8ZGVmaW5lPkJPT1NUX05VTVBZX1NUQVRJQ19MSUIgCi0rICAgICAgICAgICAgPGRlZmluZT5CT09TVF9OVU1QWV9TT1VSQ0UKLSAgICAgICAgICAgICBbIGNvbmQgWyBweXRob24ubnVtcHkgXSA6IDxsaWJyYXJ5Pi9weXRob24vL3B5dGhvbl9mb3JfZXh0ZW5zaW9ucyBdCi0gICAgICAgICAgICAgWyB1bmxlc3MgWyBweXRob24ubnVtcHkgXSA6IDxidWlsZD5ubyBdCi0tCSAgICA8aW5jbHVkZT4kKG51bXB5LWluY2x1ZGUpCi0tCSAgICA8bGlicmFyeT5ib29zdF9weXRob24KLSsgICAgICAgICAgICA8aW5jbHVkZT4kKG51bXB5LWluY2x1ZGUpCi0rICAgICAgICAgICAgPGxpYnJhcnk+JChsaWJfYm9vc3RfcHl0aG9uKCQodmVyc2lvbikpKQotICAgICAgICAgICAgIDxweXRob24tZGVidWdnaW5nPm9uOjxkZWZpbmU+Qk9PU1RfREVCVUdfUFlUSE9OCi0tICAgICAgICAgICAgWyBjb25kICQoaXMtcHkzKSA6IDxweXRob24+JChweTMtdmVyc2lvbikgXQotKyAgICAgICAgICAgIDxweXRob24+JCh2ZXJzaW9uKQotIAotICAgICAgICAgICAgIC08dGFnPkAkKEJPT1NUX0pBTVJPT1RfTU9EVUxFKSUkKEJPT1NUX0pBTVJPT1RfTU9EVUxFKS50YWcKLSAgICAgICAgICAgICA8dGFnPkAkKEJPT1NUX0pBTVJPT1RfTU9EVUxFKSUkKEJPT1NUX0pBTVJPT1RfTU9EVUxFKS5weXRob24tdGFnCi0gCi0rICAgICAgICAgICAgPGNvbmRpdGlvbmFsPkBweXRob24ucmVxdWlyZS1weQotKwotICAgICAgICAgOiAgICMgZGVmYXVsdCBidWlsZAotICAgICAgICAgICAgIDxsaW5rPnNoYXJlZAotICAgICAgICAgOiAgICMgdXNhZ2UgcmVxdWlyZW1lbnRzCi0rCQkJPGxpbms+c3RhdGljOjxkZWZpbmU+Qk9PU1RfTlVNUFlfU1RBVElDX0xJQgotICAgICAgICAgICAgIDxweXRob24tZGVidWdnaW5nPm9uOjxkZWZpbmU+Qk9PU1RfREVCVUdfUFlUSE9OCi0gICAgICAgICA7Ci0gfQotIAotLWxpYnJhcmllcyA9IGJvb3N0X3B5dGhvbiA7Ci0tbGlicmFyaWVzMyA9IGJvb3N0X3B5dGhvbjMgOwotLWlmIFsgcHl0aG9uLm51bXB5IF0KLS17Ci0tICAgIGxpYnJhcmllcyArPSBib29zdF9udW1weSA7Ci0tICAgIGxpYnJhcmllczMgKz0gYm9vc3RfbnVtcHkzIDsKLS19Ci0tCi0tbGliX2Jvb3N0X3B5dGhvbiA7Ci0tbGliX2Jvb3N0X251bXB5IDsKLStsaWJyYXJpZXMgPSA7Ci0gCi0taWYgJChweTMtdmVyc2lvbikKLStmb3IgbG9jYWwgTiBpbiAyIDMKLSB7Ci0tICAgIGxpYl9ib29zdF9weXRob24geWVzIDsKLS0gICAgbGliX2Jvb3N0X251bXB5IHllcyA7Ci0tICAgIGxpYnJhcmllcyArPSAkKGxpYnJhcmllczMpIDsKLSsgICAgaWYgJChweSQoTiktdmVyc2lvbikKLSsgICAgewotKyAgICAgICAgbGliX2Jvb3N0X3B5dGhvbiAkKHB5JChOKS12ZXJzaW9uKSA7Ci0rICAgICAgICBsaWJyYXJpZXMgKz0gJChsaWJfYm9vc3RfcHl0aG9uKCQocHkkKE4pLXZlcnNpb24pKSkgOwotKyAgICB9Ci0rICAgIGVsc2UKLSsgICAgewotKyAgICAgICAgYWxpYXMgJChsaWJfYm9vc3RfcHl0aG9uKCQoTikpKSA7Ci0rICAgIH0KLSsgICAgaWYgJChweSQoTiktdmVyc2lvbikgJiYgWyBweXRob24ubnVtcHkgXQotKyAgICB7Ci0rICAgICAgICBsaWJfYm9vc3RfbnVtcHkgJChweSQoTiktdmVyc2lvbikgOwotKyAgICAgICAgbGlicmFyaWVzICs9ICQobGliX2Jvb3N0X251bXB5KCQocHkkKE4pLXZlcnNpb24pKSkgOwotKyAgICB9Ci0rICAgIGVsc2UKLSsgICAgewotKyAgICAgICAgYWxpYXMgJChsaWJfYm9vc3RfbnVtcHkoJChOKSkpIDsKLSsgICAgfQotIH0KLSAKLSBib29zdC1pbnN0YWxsICQobGlicmFyaWVzKSA7Ci1kaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3B5dGhvbi5qYW0gYi9zcmMvdG9vbHMvcHl0aG9uLmphbQotaW5kZXggY2MxMzM4NS4uYmYzMDBiOCAxMDA2NDQKLS0tLSBhL3Rvb2xzL2J1aWxkL3NyYy90b29scy9weXRob24uamFtCi0rKysgYi90b29scy9idWlsZC9zcmMvdG9vbHMvcHl0aG9uLmphbQotQEAgLTM0LDYgKzM0LDcgQEAgaW1wb3J0IHBhdGggOwotIGltcG9ydCBmZWF0dXJlIDsKLSBpbXBvcnQgc2V0IDsKLSBpbXBvcnQgYnVpbHRpbiA7Ci0raW1wb3J0IHByb3BlcnR5LXNldCA7Ci0gCi0gCi0gIyBNYWtlIHRoaXMgbW9kdWxlIGEgcHJvamVjdC4KLUBAIC02MCw2ICs2MSwxMCBAQCBsaWIgcnQgOwotICMgaW5zdGFsbGVkIGluIHRoZSBkZXZlbG9wbWVudCBzeXN0ZW0ncyBkZWZhdWx0IHBhdGhzLgotIGZlYXR1cmUuZmVhdHVyZSBweXRob25wYXRoIDogOiBmcmVlIG9wdGlvbmFsIHBhdGggOwotIAotKyMgVGhlIGJlc3QgY29uZmlndXJlZCB2ZXJzaW9uIG9mIFB5dGhvbiAyIGFuZCAzLgotK3B5Mi12ZXJzaW9uID0gOwotK3B5My12ZXJzaW9uID0gOwotKwotICMgSW5pdGlhbGl6ZXMgdGhlIFB5dGhvbiB0b29sc2V0LiBOb3RlIHRoYXQgYWxsIHBhcmFtZXRlcnMgYXJlIG9wdGlvbmFsLgotICMKLSAjIC0gdmVyc2lvbiAtLSB0aGUgdmVyc2lvbiBvZiBQeXRob24gdG8gdXNlLiBTaG91bGQgYmUgaW4gTWFqb3IuTWlub3IgZm9ybWF0LAotQEAgLTg2MSw2ICs4NjYsMTEgQEAgbG9jYWwgcnVsZSBjb25maWd1cmUgKCB2ZXJzaW9uID8gOiBjbWQtb3ItcHJlZml4ID8gOiBpbmNsdWRlcyAqIDogbGlicmFyaWVzID8gOgotICAgICAgICAgaWYgISAkKHZlcnNpb24pIGluIFsgZmVhdHVyZS52YWx1ZXMgcHl0aG9uIF0KLSAgICAgICAgIHsKLSAgICAgICAgICAgICBmZWF0dXJlLmV4dGVuZCBweXRob24gOiAkKHZlcnNpb24pIDsKLSsgICAgICAgICAgICBweSQobWFqb3ItbWlub3JbMV0pLXZlcnNpb24gPz0gJCh2ZXJzaW9uKSA7Ci0rICAgICAgICAgICAgaWYgJChweSQobWFqb3ItbWlub3JbMV0pLXZlcnNpb24pIDwgJCh2ZXJzaW9uKQotKyAgICAgICAgICAgIHsKLSsgICAgICAgICAgICAgICAgcHkkKG1ham9yLW1pbm9yWzFdKS12ZXJzaW9uID0gJCh2ZXJzaW9uKSA7Ci0rICAgICAgICAgICAgfQotICAgICAgICAgfQotICAgICAgICAgdGFyZ2V0LXJlcXVpcmVtZW50cyArPSA8cHl0aG9uPiQodmVyc2lvbjpFPWRlZmF1bHQpIDsKLSAgICAgfQotQEAgLTkxNiw2ICs5MjYsOSBAQCBsb2NhbCBydWxlIGNvbmZpZ3VyZSAoIHZlcnNpb24gPyA6IGNtZC1vci1wcmVmaXggPyA6IGluY2x1ZGVzICogOiBsaWJyYXJpZXMgPyA6Ci0gICAgICAgICB9Ci0gICAgIH0KLSAKLSsgICAgIyBJbiBjYXNlIHdlIGFkZGVkIGR1cGxpY2F0ZSByZXF1aXJlbWVudHMgZnJvbSB3aGF0IHRoZSB1c2VyIHNwZWNpZmllZC4KLSsgICAgdGFyZ2V0LXJlcXVpcmVtZW50cyA9IFsgc2VxdWVuY2UudW5pcXVlICQodGFyZ2V0LXJlcXVpcmVtZW50cykgXSA7Ci0rCi0gICAgICMgR2xvYmFsLCBidXQgY29uZGl0aW9uYWwsIHJlcXVpcmVtZW50cyB0byBnaXZlIGFjY2VzcyB0byB0aGUgaW50ZXJwcmV0ZXIKLSAgICAgIyBmb3IgZ2VuZXJhbCB1dGlsaXRpZXMsIGxpa2Ugb3RoZXIgdG9vbHNldHMsIHRoYXQgcnVuIFB5dGhvbiBzY3JpcHRzLgotICAgICB0b29sc2V0LmFkZC1yZXF1aXJlbWVudHMKLUBAIC05MzQsMTkgKzk0Nyw2IEBAIGxvY2FsIHJ1bGUgY29uZmlndXJlICggdmVyc2lvbiA/IDogY21kLW9yLXByZWZpeCA/IDogaW5jbHVkZXMgKiA6IGxpYnJhcmllcyA/IDoKLSAgICAgICAgIHRvb2xzZXQuYWRkLXJlcXVpcmVtZW50cyA8dGFyZ2V0LW9zPiQodGFyZ2V0LW9zKTo8cHl0aG9uPiQodmVyc2lvbjpFPWRlZmF1bHQpIDsKLSAgICAgfQotIAotLSAgICAjIFdlIGFsc28gc2V0IGEgZGVmYXVsdCByZXF1aXJlbWVudCB0aGF0IGFzc2lnbnMgdGhlIGZpcnN0IHB5dGhvbiBjb25maWd1cmVkCi0tICAgICMgZm9yIGEgcGFydGljdWxhciB0YXJnZXQgT1MgYXMgdGhlIGRlZmF1bHQuIFRoaXMgbWFrZXMgaXQgc28gdGhhdCB3ZSBjYW4KLS0gICAgIyBzZWxlY3QgYSBweXRob24gaW50ZXJwcmV0ZXIgd2l0aCBvbmx5IGtub3dsZWRnZSBvZiB0aGUgdGFyZ2V0IE9TLiBBbmQgaGVuY2UKLS0gICAgIyBjYW4gY29uZmlndXJlIGRpZmZlcmVudCBQeXRob25zIGJhc2VkIG9uIHRoZSB0YXJnZXQgT1Mgb25seS4KLS0gICAgbG9jYWwgdG9vbHNldC1yZXF1aXJlbWVudHMgPSBbIHRvb2xzZXQucmVxdWlyZW1lbnRzIF0gOwotLSAgICBsb2NhbCB0b29sc2V0LXRhcmdldC1vcy1yZXF1aXJlbWVudHMKLS0gICAgICAgID0gWyBwcm9wZXJ0eS5ldmFsdWF0ZS1jb25kaXRpb25hbHMtaW4tY29udGV4dAotLSAgICAgICAgICAgIFsgJCh0b29sc2V0LXJlcXVpcmVtZW50cykucmF3IF0gOiA8dGFyZ2V0LW9zPiQodGFyZ2V0LW9zKSBdIDsKLS0gICAgaWYgISA8cHl0aG9uPiBpbiAkKHRvb2xzZXQtdGFyZ2V0LW9zLXJlcXVpcmVtZW50czpHKQotLSAgICB7Ci0tICAgICAgICB0b29sc2V0LmFkZC1yZXF1aXJlbWVudHMgPHRhcmdldC1vcz4kKHRhcmdldC1vcyk6PHB5dGhvbj4kKHZlcnNpb246RT1kZWZhdWx0KSA7Ci0tICAgIH0KLS0KLSAgICAgIyBSZWdpc3RlciB0aGUgcmlnaHQgc3VmZml4IGZvciBleHRlbnNpb25zLgotICAgICByZWdpc3Rlci1leHRlbnNpb24tc3VmZml4ICQoZXh0ZW5zaW9uLXN1ZmZpeCkgOiAkKHRhcmdldC1yZXF1aXJlbWVudHMpIDsKLSAKLUBAIC0xMDM4LDYgKzEwMzgsMjIgQEAgbG9jYWwgcnVsZSBjb25maWd1cmUgKCB2ZXJzaW9uID8gOiBjbWQtb3ItcHJlZml4ID8gOiBpbmNsdWRlcyAqIDogbGlicmFyaWVzID8gOgotICAgICAgICAgICAgIDogJCh1c2FnZS1yZXF1aXJlbWVudHMpCi0gICAgICAgICAgICAgOwotICAgICB9Ci0rICAgIAotK30KLSsKLSsjIENvbmRpdGlvbmFsIHJ1bGUgc3BlY2lmaWNhdGlvbiB0aGF0IHdpbGwgcHJldmVudCBidWlsZGluZyBvZiBhIHRhcmdldAotKyMgaWYgdGhlcmUgaXMgbm8gbWF0Y2hpbmcgcHl0aG9uIGNvbmZpZ3VyYXRpb24gYXZhaWxhYmxlIHdpdGggdGhlIGdpdmVuCi0rIyByZXF1aXJlZCBwcm9wZXJ0aWVzLgotK3J1bGUgcmVxdWlyZS1weSAoIHByb3BlcnRpZXMgKiApCi0rewotKyAgICBsb2NhbCBweS1leHQtdGFyZ2V0ID0gWyAkKC5wcm9qZWN0KS5maW5kIHB5dGhvbl9mb3JfZXh0ZW5zaW9ucyBdIDsKLSsgICAgbG9jYWwgcHJvcGVydHktc2V0ID0gWyBwcm9wZXJ0eS1zZXQuY3JlYXRlICQocHJvcGVydGllcykgXSA7Ci0rICAgIHByb3BlcnR5LXNldCA9IFsgJChwcm9wZXJ0eS1zZXQpLmV4cGFuZCBdIDsKLSsgICAgbG9jYWwgcHktZXh0LWFsdGVybmF0aXZlID0gWyAkKHB5LWV4dC10YXJnZXQpLnNlbGVjdC1hbHRlcm5hdGl2ZXMgJChwcm9wZXJ0eS1zZXQpIF0gOwotKyAgICBpZiAhICQocHktZXh0LWFsdGVybmF0aXZlKQotKyAgICB7Ci0rICAgICAgICByZXR1cm4gPGJ1aWxkPm5vIDsKLSsgICAgfQotIH0KLSAKLSAKLUBAIC0xMjk4LDUgKzEzMTQsMTEgQEAgcnVsZSBudW1weS10ZXN0ICggbmFtZSA6IHNvdXJjZXMgKiA6IHJlcXVpcmVtZW50cyAqICkKLSAgICAgICAgIDogJChuYW1lKSBdIDsKLSB9Ci0gCi0rcnVsZSBweS12ZXJzaW9uICggbiApCi0rewotKyAgICByZXR1cm4gJChweSQobiktdmVyc2lvbikgOwotK30KLSsKLSBJTVBPUlQgJChfX25hbWVfXykgOiBicGwtdGVzdCA6IDogYnBsLXRlc3QgOwotIElNUE9SVCAkKF9fbmFtZV9fKSA6IG51bXB5LXRlc3QgOiA6IG51bXB5LXRlc3QgOwotK0lNUE9SVCAkKF9fbmFtZV9fKSA6IHB5LXZlcnNpb24gOiA6IHB5LXZlcnNpb24gOwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0XzEuNjMuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdF8xLjYzLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExMDc2ODYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0XzEuNjMuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLXJlcXVpcmUgYm9vc3QtJHtQVn0uaW5jCi1yZXF1aXJlIGJvb3N0LmluYwotCi1TUkNfVVJJICs9ICJcCi0gICAgZmlsZTovL2FybS1pbnRyaW5zaWNzLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1XaGVuLXVzaW5nLXNvZnQtZmxvYXQtb24tQVJNLXdlLXNob3VsZC1ub3QtZXhwZWN0LXRoLnBhdGNoIFwKLSAgICBmaWxlOi8vYm9vc3QtQ1ZFLTIwMTItMjY3Ny5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtYm9vc3QtYXNpby1kZXRhaWwtc29ja2V0X3R5cGVzLmhwcC1maXgtcG9sbC5oLWluY2x1ZC5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDQtVXNlLWF0b21pYy1ieS1kZWZhdWx0LXdoZW4tQk9PU1RfTk9fQ1hYMTFfSERSX0FUT01JQy5wYXRjaCBcCi0gICAgZmlsZTovL2Jvb3N0LW1hdGgtZGlzYWJsZS1wY2gtZm9yLWdjYy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtQXBwbHktYm9vc3QtMS42Mi4wLW5vLWZvcmNlZC1mbGFncy5wYXRjaC5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDMtRG9uLXQtc2V0LXVwLWFyY2gtaW5zdHJ1Y3Rpb24tc2V0LWZsYWdzLXdlLWRvLXRoYXQtby5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDItRG9uLXQtc2V0LXVwLW0zMi1tNjQtd2UtZG8tdGhhdC1vdXJzZWx2ZXMucGF0Y2ggXAotICAgIGZpbGU6Ly9weTMucGF0Y2ggXAotIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0XzEuNjQuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdF8xLjY0LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDFjMjBlMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdF8xLjY0LjAuYmIKQEAgLTAsMCArMSwxMyBAQAorcmVxdWlyZSBib29zdC0ke1BWfS5pbmMKK3JlcXVpcmUgYm9vc3QuaW5jCisKK1NSQ19VUkkgKz0gIlwKKyAgICBmaWxlOi8vYXJtLWludHJpbnNpY3MucGF0Y2ggXAorICAgIGZpbGU6Ly9ib29zdC1DVkUtMjAxMi0yNjc3LnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1ib29zdC1hc2lvLWRldGFpbC1zb2NrZXRfdHlwZXMuaHBwLWZpeC1wb2xsLmgtaW5jbHVkLnBhdGNoIFwKKyAgICBmaWxlOi8vYm9vc3QtbWF0aC1kaXNhYmxlLXBjaC1mb3ItZ2NjLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1BcHBseS1ib29zdC0xLjYyLjAtbm8tZm9yY2VkLWZsYWdzLnBhdGNoLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMy1Eb24tdC1zZXQtdXAtYXJjaC1pbnN0cnVjdGlvbi1zZXQtZmxhZ3Mtd2UtZG8tdGhhdC1vLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMi1Eb24tdC1zZXQtdXAtbTMyLW02NC13ZS1kby10aGF0LW91cnNlbHZlcy5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtY29ycmVjdC1lcnJvci13aGljaC1hcHBlYXJlZC13aGVuLWNvbXBpbGluZy1ub24tYy1jby5wYXRjaCBcCisiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY2EtY2VydGlmaWNhdGVzL2NhLWNlcnRpZmljYXRlc18yMDE2MTEzMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jYS1jZXJ0aWZpY2F0ZXMvY2EtY2VydGlmaWNhdGVzXzIwMTYxMTMwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMjgyYWNlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jYS1jZXJ0aWZpY2F0ZXMvY2EtY2VydGlmaWNhdGVzXzIwMTYxMTMwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotU1VNTUFSWSA9ICJDb21tb24gQ0EgY2VydGlmaWNhdGVzIgotREVTQ1JJUFRJT04gPSAiVGhpcyBwYWNrYWdlIGluY2x1ZGVzIFBFTSBmaWxlcyBvZiBDQSBjZXJ0aWZpY2F0ZXMgdG8gYWxsb3cgXAotU1NMLWJhc2VkIGFwcGxpY2F0aW9ucyB0byBjaGVjayBmb3IgdGhlIGF1dGhlbnRpY2l0eSBvZiBTU0wgY29ubmVjdGlvbnMuIFwKLVRoaXMgZGVyaXZlZCBmcm9tIERlYmlhbidzIENBIENlcnRpZmljYXRlcy4iCi1IT01FUEFHRSA9ICJodHRwOi8vcGFja2FnZXMuZGViaWFuLm9yZy9zaWQvY2EtY2VydGlmaWNhdGVzIgotU0VDVElPTiA9ICJtaXNjIgotTElDRU5TRSA9ICJHUEwtMi4wKyAmIE1QTC0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kZWJpYW4vY29weXJpZ2h0O21kNT1lNzM1OGI5NTQxY2NmMzAyOWU5NzA1ZWQ4ZGU1Nzk2OCIKLQotIyBUaGlzIGlzIG5lZWRlZCB0byBlbnN1cmUgd2UgY2FuIHJ1biB0aGUgcG9zdGluc3QgYXQgaW1hZ2UgY3JlYXRpb24gdGltZQotREVQRU5EUyA9ICIiCi1ERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJvcGVuc3NsLW5hdGl2ZSIKLURFUEVORFNfY2xhc3MtbmF0aXZlc2RrID0gIm9wZW5zc2wtbmF0aXZlIgotIyBOZWVkIGNfcmVoYXNoIGZyb20gb3BlbnNzbCBhbmQgcnVuLXBhcnRzIGZyb20gZGViaWFudXRpbHMKLVBBQ0tBR0VfV1JJVEVfREVQUyArPSAib3BlbnNzbC1uYXRpdmUgZGViaWFudXRpbHMtbmF0aXZlIgotCi1TUkNSRVYgPSAiNjFiNzBhMTAwN2RjMjY5ZDU2ODgxYTBkNDgwZmM4NDFkYWFjYzc3YyIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9hbm9uc2NtLmRlYmlhbi5vcmcvY29sbGFiLW1haW50L2NhLWNlcnRpZmljYXRlcy5naXQgXAotICAgICAgICAgICBmaWxlOi8vMDAwMi11cGRhdGUtY2EtY2VydGlmaWNhdGVzLXVzZS1TWVNST09ULnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtdXBkYXRlLWNhLWNlcnRpZmljYXRlcy1kb24tdC11c2UtRGViaWFuaXNtcy1pbi1ydW4tcC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly91cGRhdGUtY2EtY2VydGlmaWNhdGVzLXN1cHBvcnQtVG95Ym94LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RlZmF1bHQtc3lzcm9vdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9zYmluZGlyLnBhdGNoIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGFsbGFyY2gKLQotRVhUUkFfT0VNQUtFID0gIlwKLSAgICAnQ0VSVFNESVI9JHtkYXRhZGlyfS9jYS1jZXJ0aWZpY2F0ZXMnIFwKLSAgICAnU0JJTkRJUj0ke3NiaW5kaXJ9JyBcCi0iCi0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLSAgICBvZV9ydW5tYWtlIGNsZWFuCi19Ci0KLWRvX2luc3RhbGwgKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vY2EtY2VydGlmaWNhdGVzIFwKLSAgICAgICAgICAgICAgICR7RH0ke3N5c2NvbmZkaXJ9L3NzbC9jZXJ0cyBcCi0gICAgICAgICAgICAgICAke0R9JHtzeXNjb25mZGlyfS9jYS1jZXJ0aWZpY2F0ZXMvdXBkYXRlLmQKLSAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7bWFuZGlyfS9tYW44Ci0gICAgaW5zdGFsbCAtbSAwNjQ0IHNiaW4vdXBkYXRlLWNhLWNlcnRpZmljYXRlcy44ICR7RH0ke21hbmRpcn0vbWFuOC8KLQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0KLSAgICB7Ci0gICAgICAgIGVjaG8gIiMgTGluZXMgc3RhcnRpbmcgd2l0aCAjIHdpbGwgYmUgaWdub3JlZCIKLSAgICAgICAgZWNobyAiIyBMaW5lcyBzdGFydGluZyB3aXRoICEgd2lsbCByZW1vdmUgY2VydGlmaWNhdGUgb24gbmV4dCB1cGRhdGUiCi0gICAgICAgIGVjaG8gIiMiCi0gICAgICAgIGZpbmQgJHtEfSR7ZGF0YWRpcn0vY2EtY2VydGlmaWNhdGVzIC10eXBlIGYgLW5hbWUgJyouY3J0JyB8IFwKLSAgICAgICAgICAgIHNlZCAncyxeJHtEfSR7ZGF0YWRpcn0vY2EtY2VydGlmaWNhdGVzLywsJwotICAgIH0gPiR7RH0ke3N5c2NvbmZkaXJ9L2NhLWNlcnRpZmljYXRlcy5jb25mCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCAoKSB7Ci0gICAgc2VkIC1pIC1lICdzLC9ldGMvLCR7c3lzY29uZmRpcn0vLCcgXAotICAgICAgICAgICAtZSAncywvdXNyL3NoYXJlLywke2RhdGFkaXJ9LywnIFwKLSAgICAgICAgICAgLWUgJ3MsL3Vzci9sb2NhbCwke3ByZWZpeH0vbG9jYWwsJyBcCi0gICAgICAgICR7RH0ke3NiaW5kaXJ9L3VwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMgXAotICAgICAgICAke0R9JHttYW5kaXJ9L21hbjgvdXBkYXRlLWNhLWNlcnRpZmljYXRlcy44Ci19Ci0KLXBrZ19wb3N0aW5zdF8ke1BOfSAoKSB7Ci0gICAgU1lTUk9PVD0iJEQiICREJHtzYmluZGlyfS91cGRhdGUtY2EtY2VydGlmaWNhdGVzCi19Ci0KLUNPTkZGSUxFU18ke1BOfSArPSAiJHtzeXNjb25mZGlyfS9jYS1jZXJ0aWZpY2F0ZXMuY29uZiIKLQotIyBQb3N0aW5zdHMgZG9uJ3Qgc2VlbSB0byBiZSBydW4gZm9yIG5hdGl2ZXNkayBwYWNrYWdlcyB3aGVuIHBvcHVsYXRpbmcgU0RLcy4KLUNPTkZGSUxFU18ke1BOfV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiAke3N5c2NvbmZkaXJ9L3NzbC9jZXJ0cy9jYS1jZXJ0aWZpY2F0ZXMuY3J0IgotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrICgpIHsKLSAgICBTWVNST09UPSIke0R9JHtTREtQQVRITkFUSVZFfSIgJHtEfSR7c2JpbmRpcn0vdXBkYXRlLWNhLWNlcnRpZmljYXRlcwotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUgKCkgewotICAgIFNZU1JPT1Q9IiR7RH0ke2Jhc2VfcHJlZml4fSIgJHtEfSR7c2JpbmRpcn0vdXBkYXRlLWNhLWNlcnRpZmljYXRlcwotfQotCi1SREVQRU5EU18ke1BOfSArPSAib3BlbnNzbCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2NhLWNlcnRpZmljYXRlcy9jYS1jZXJ0aWZpY2F0ZXNfMjAxNzA3MTcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY2EtY2VydGlmaWNhdGVzL2NhLWNlcnRpZmljYXRlc18yMDE3MDcxNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDU5ZmE2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2NhLWNlcnRpZmljYXRlcy9jYS1jZXJ0aWZpY2F0ZXNfMjAxNzA3MTcuYmIKQEAgLTAsMCArMSw4NSBAQAorU1VNTUFSWSA9ICJDb21tb24gQ0EgY2VydGlmaWNhdGVzIgorREVTQ1JJUFRJT04gPSAiVGhpcyBwYWNrYWdlIGluY2x1ZGVzIFBFTSBmaWxlcyBvZiBDQSBjZXJ0aWZpY2F0ZXMgdG8gYWxsb3cgXAorU1NMLWJhc2VkIGFwcGxpY2F0aW9ucyB0byBjaGVjayBmb3IgdGhlIGF1dGhlbnRpY2l0eSBvZiBTU0wgY29ubmVjdGlvbnMuIFwKK1RoaXMgZGVyaXZlZCBmcm9tIERlYmlhbidzIENBIENlcnRpZmljYXRlcy4iCitIT01FUEFHRSA9ICJodHRwOi8vcGFja2FnZXMuZGViaWFuLm9yZy9zaWQvY2EtY2VydGlmaWNhdGVzIgorU0VDVElPTiA9ICJtaXNjIgorTElDRU5TRSA9ICJHUEwtMi4wKyAmIE1QTC0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kZWJpYW4vY29weXJpZ2h0O21kNT1lNzM1OGI5NTQxY2NmMzAyOWU5NzA1ZWQ4ZGU1Nzk2OCIKKworIyBUaGlzIGlzIG5lZWRlZCB0byBlbnN1cmUgd2UgY2FuIHJ1biB0aGUgcG9zdGluc3QgYXQgaW1hZ2UgY3JlYXRpb24gdGltZQorREVQRU5EUyA9ICIiCitERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJvcGVuc3NsLW5hdGl2ZSIKK0RFUEVORFNfY2xhc3MtbmF0aXZlc2RrID0gIm9wZW5zc2wtbmF0aXZlIgorIyBOZWVkIGNfcmVoYXNoIGZyb20gb3BlbnNzbCBhbmQgcnVuLXBhcnRzIGZyb20gZGViaWFudXRpbHMKK1BBQ0tBR0VfV1JJVEVfREVQUyArPSAib3BlbnNzbC1uYXRpdmUgZGViaWFudXRpbHMtbmF0aXZlIgorCitTUkNSRVYgPSAiMzRiOGUxOWU1NDFiOGFmNDA3NjYxNmIyZTE3MGM3YTcwY2RhZGVkMCIKKworU1JDX1VSSSA9ICJnaXQ6Ly9hbm9uc2NtLmRlYmlhbi5vcmcvY29sbGFiLW1haW50L2NhLWNlcnRpZmljYXRlcy5naXQgXAorICAgICAgICAgICBmaWxlOi8vMDAwMi11cGRhdGUtY2EtY2VydGlmaWNhdGVzLXVzZS1TWVNST09ULnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdXBkYXRlLWNhLWNlcnRpZmljYXRlcy1kb24tdC11c2UtRGViaWFuaXNtcy1pbi1ydW4tcC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly91cGRhdGUtY2EtY2VydGlmaWNhdGVzLXN1cHBvcnQtVG95Ym94LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlZmF1bHQtc3lzcm9vdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zYmluZGlyLnBhdGNoIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorU1lTUk9PVF9ESVJTX2NsYXNzLW5hdGl2ZSArPSAiL2V0YyIKKworaW5oZXJpdCBhbGxhcmNoCisKK0VYVFJBX09FTUFLRSA9ICJcCisgICAgJ0NFUlRTRElSPSR7ZGF0YWRpcn0vY2EtY2VydGlmaWNhdGVzJyBcCisgICAgJ1NCSU5ESVI9JHtzYmluZGlyfScgXAorIgorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisgICAgb2VfcnVubWFrZSBjbGVhbgorfQorCitkb19pbnN0YWxsICgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2NhLWNlcnRpZmljYXRlcyBcCisgICAgICAgICAgICAgICAke0R9JHtzeXNjb25mZGlyfS9zc2wvY2VydHMgXAorICAgICAgICAgICAgICAgJHtEfSR7c3lzY29uZmRpcn0vY2EtY2VydGlmaWNhdGVzL3VwZGF0ZS5kCisgICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke21hbmRpcn0vbWFuOAorICAgIGluc3RhbGwgLW0gMDY0NCBzYmluL3VwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMuOCAke0R9JHttYW5kaXJ9L21hbjgvCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9CisgICAgeworICAgICAgICBlY2hvICIjIExpbmVzIHN0YXJ0aW5nIHdpdGggIyB3aWxsIGJlIGlnbm9yZWQiCisgICAgICAgIGVjaG8gIiMgTGluZXMgc3RhcnRpbmcgd2l0aCAhIHdpbGwgcmVtb3ZlIGNlcnRpZmljYXRlIG9uIG5leHQgdXBkYXRlIgorICAgICAgICBlY2hvICIjIgorICAgICAgICBmaW5kICR7RH0ke2RhdGFkaXJ9L2NhLWNlcnRpZmljYXRlcyAtdHlwZSBmIC1uYW1lICcqLmNydCcgfCBcCisgICAgICAgICAgICBzZWQgJ3MsXiR7RH0ke2RhdGFkaXJ9L2NhLWNlcnRpZmljYXRlcy8sLCcKKyAgICB9ID4ke0R9JHtzeXNjb25mZGlyfS9jYS1jZXJ0aWZpY2F0ZXMuY29uZgorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQgKCkgeworICAgIHNlZCAtaSAtZSAncywvZXRjLywke3N5c2NvbmZkaXJ9LywnIFwKKyAgICAgICAgICAgLWUgJ3MsL3Vzci9zaGFyZS8sJHtkYXRhZGlyfS8sJyBcCisgICAgICAgICAgIC1lICdzLC91c3IvbG9jYWwsJHtwcmVmaXh9L2xvY2FsLCcgXAorICAgICAgICAke0R9JHtzYmluZGlyfS91cGRhdGUtY2EtY2VydGlmaWNhdGVzIFwKKyAgICAgICAgJHtEfSR7bWFuZGlyfS9tYW44L3VwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMuOAorfQorCitwa2dfcG9zdGluc3RfJHtQTn0gKCkgeworICAgIFNZU1JPT1Q9IiREIiAkRCR7c2JpbmRpcn0vdXBkYXRlLWNhLWNlcnRpZmljYXRlcworfQorCitDT05GRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0vY2EtY2VydGlmaWNhdGVzLmNvbmYiCisKKyMgUG9zdGluc3RzIGRvbid0IHNlZW0gdG8gYmUgcnVuIGZvciBuYXRpdmVzZGsgcGFja2FnZXMgd2hlbiBwb3B1bGF0aW5nIFNES3MuCitDT05GRklMRVNfJHtQTn1fYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgJHtzeXNjb25mZGlyfS9zc2wvY2VydHMvY2EtY2VydGlmaWNhdGVzLmNydCIKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayAoKSB7CisgICAgU1lTUk9PVD0iJHtEfSR7U0RLUEFUSE5BVElWRX0iICR7RH0ke3NiaW5kaXJ9L3VwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlICgpIHsKKyAgICBTWVNST09UPSIke0R9JHtiYXNlX3ByZWZpeH0iICR7RH0ke3NiaW5kaXJ9L3VwZGF0ZS1jYS1jZXJ0aWZpY2F0ZXMKK30KKworUkRFUEVORFNfJHtQTn0gKz0gIm9wZW5zc2wiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmwvQ1ZFLTIwMTctMTAwMDA5OS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmwvQ1ZFLTIwMTctMTAwMDA5OS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NmZmMWIwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybC9DVkUtMjAxNy0xMDAwMDk5LnBhdGNoCkBAIC0wLDAgKzEsNDEgQEAKK0Zyb20gYzkzMzJmYTVlODRmMjRkYTMwMGI0MmIxYTkzMWFkZTkyOWQzZTI3ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0QHNwYXRpYWx5cy5jb20+CitEYXRlOiBUdWUsIDEgQXVnIDIwMTcgMTc6MTc6MDYgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gZmlsZTogb3V0cHV0IHRoZSBjb3JyZWN0IGJ1ZmZlciB0byB0aGUgdXNlcgorCitSZWdyZXNzaW9uIGJyb3VnaHQgYnkgN2MzMTJmODRlYTkzMGQ4IChBcHJpbCAyMDE3KQorCitDVkU6IENWRS0yMDE3LTEwMDAwOTkKKworQnVnOiBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2Fkdl8yMDE3MDgwOUMuaHRtbAorCitDcmVkaXQgdG8gT1NTLUZ1enogZm9yIHRoZSBkaXNjb3ZlcnkKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAoraHR0cHM6Ly9naXRodWIuY29tL2N1cmwvY3VybC9jb21taXQvYzkzMzJmYTVlODRmMjRkYTMwMGI0MmIxYTkzMWFkZTkyOWQzZTI3ZAorCitTaWduZWQtb2ZmLWJ5OiBXZW56b25nIEZhbiA8d2Vuem9uZy5mYW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIGxpYi9maWxlLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9saWIvZmlsZS5jIGIvbGliL2ZpbGUuYworaW5kZXggYmQ0MjZlYWMyLi42NjZjYmU3NWIgMTAwNjQ0CistLS0gYS9saWIvZmlsZS5jCisrKysgYi9saWIvZmlsZS5jCitAQCAtNDk5LDExICs0OTksMTEgQEAgc3RhdGljIENVUkxjb2RlIGZpbGVfZG8oc3RydWN0IGNvbm5lY3RkYXRhICpjb25uLCBib29sICpkb25lKQorICAgICAgICAgICAgICBDdXJsX21vbnRoW3RtLT50bV9tb25dLAorICAgICAgICAgICAgICB0bS0+dG1feWVhciArIDE5MDAsCisgICAgICAgICAgICAgIHRtLT50bV9ob3VyLAorICAgICAgICAgICAgICB0bS0+dG1fbWluLAorICAgICAgICAgICAgICB0bS0+dG1fc2VjKTsKKy0gICAgcmVzdWx0ID0gQ3VybF9jbGllbnRfd3JpdGUoY29ubiwgQ0xJRU5UV1JJVEVfQk9USCwgYnVmLCAwKTsKKysgICAgcmVzdWx0ID0gQ3VybF9jbGllbnRfd3JpdGUoY29ubiwgQ0xJRU5UV1JJVEVfQk9USCwgaGVhZGVyLCAwKTsKKyAgICAgaWYoIXJlc3VsdCkKKyAgICAgICAvKiBzZXQgdGhlIGZpbGUgc2l6ZSB0byBtYWtlIGl0IGF2YWlsYWJsZSBwb3N0IHRyYW5zZmVyICovCisgICAgICAgQ3VybF9wZ3JzU2V0RG93bmxvYWRTaXplKGRhdGEsIGV4cGVjdGVkX3NpemUpOworICAgICByZXR1cm4gcmVzdWx0OworICAgfQorLS0gCisyLjEzLjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybC9DVkUtMjAxNy0xMDAwMTAwLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybC9DVkUtMjAxNy0xMDAwMTAwLnBhdGNoCmluZGV4IDUwOGRmOGMuLmY3NGYxZGQgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmwvQ1ZFLTIwMTctMTAwMDEwMC5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsL0NWRS0yMDE3LTEwMDAxMDAucGF0Y2gKQEAgLTYsNyArNiw3IEBACiAuLi4gYW5kIHRoZXJlYnkgYXZvaWQgdGVsbGluZyBzZW5kKCkgdG8gc2VuZCBvZmYgbW9yZSBieXRlcyB0aGFuIHRoZQogc2l6ZSBvZiB0aGUgYnVmZmVyIQogCi1DVkUtMjAxNy0xMDAwMTAwCitDVkU6IENWRS0yMDE3LTEwMDAxMDAKIAogQnVnOiBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2Fkdl8yMDE3MDgwOUIuaHRtbAogUmVwb3J0ZWQtYnk6IEV2ZW4gUm91YXVsdApAQCAtMTYsMTcgKzE2LDE1IEBACiBVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CiBodHRwczovL2dpdGh1Yi5jb20vY3VybC9jdXJsL2NvbW1pdC8zNThiMmIxMzFhZDZjMDk1Njk2ZjIwZGNmYTYyYjgzMDUyNjNmODk4CiAKLUNWRTogQ1ZFLTIwMTctMTAwMDEwMAotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KK1NpZ25lZC1vZmYtYnk6IFdlbnpvbmcgRmFuIDx3ZW56b25nLmZhbkB3aW5kcml2ZXIuY29tPgogLS0tCi0gbGliL3RmdHAuYyB8IDcgKysrKysrLQorIGxpYi90ZnRwLmMgfCAgICA3ICsrKysrKy0KICAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiAKLUluZGV4OiBjdXJsLTcuNTMuMS9saWIvdGZ0cC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gY3VybC03LjUzLjEub3JpZy9saWIvdGZ0cC5jCi0rKysgY3VybC03LjUzLjEvbGliL3RmdHAuYworZGlmZiAtLWdpdCBhL2xpYi90ZnRwLmMgYi9saWIvdGZ0cC5jCitpbmRleCAwMmJkODQyLi5mNmY0YmNlIDEwMDY0NAorLS0tIGEvbGliL3RmdHAuYworKysrIGIvbGliL3RmdHAuYwogQEAgLTUsNyArNSw3IEBACiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoX198IHxffCB8ICBfIDx8IHxfX18KICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXF9fX3xcX19fL3xffCBcX1xfX19fX3wKQEAgLTM2LDcgKzM0LDcgQEAKICAgKgogICAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgYXMgZGVzY3JpYmVkIGluIHRoZSBmaWxlIENPUFlJTkcsIHdoaWNoCiAgICogeW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhpcyBkaXN0cmlidXRpb24uIFRoZSB0ZXJtcwotQEAgLTQ5MCw2ICs0OTAsMTEgQEAgc3RhdGljIENVUkxjb2RlIHRmdHBfc2VuZF9maXJzdCh0ZnRwX3N0YQorQEAgLTQ5MSw2ICs0OTEsMTEgQEAgc3RhdGljIENVUkxjb2RlIHRmdHBfc2VuZF9maXJzdCh0ZnRwX3N0YXRlX2RhdGFfdCAqc3RhdGUsIHRmdHBfZXZlbnRfdCBldmVudCkKICAgICAgaWYocmVzdWx0KQogICAgICAgIHJldHVybiByZXN1bHQ7CiAgCkBAIC00OCwzICs0Niw2IEBACiAgICAgIHNucHJpbnRmKChjaGFyICopc3RhdGUtPnNwYWNrZXQuZGF0YSsyLAogICAgICAgICAgICAgICBzdGF0ZS0+Ymxrc2l6ZSwKICAgICAgICAgICAgICAgIiVzJWMlcyVjIiwgZmlsZW5hbWUsICdcMCcsICBtb2RlLCAnXDAnKTsKKy0tIAorMS43LjkuNQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsL0NWRS0yMDE3LTEwMDAxMDEucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsL0NWRS0yMDE3LTEwMDAxMDEucGF0Y2gKaW5kZXggOWVlZjVlMi4uYzMwMGZmZiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybC9DVkUtMjAxNy0xMDAwMTAxLnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmwvQ1ZFLTIwMTctMTAwMDEwMS5wYXRjaApAQCAtNiwxNSArNiwxNyBAQAogCiBBZGRlZCB0ZXN0IDEyODkgdG8gdmVyaWZ5LgogCi1DVkUtMjAxNy0xMDAwMTAxCitDVkU6IENWRS0yMDE3LTEwMDAxMDEKIAogQnVnOiBodHRwczovL2N1cmwuaGF4eC5zZS9kb2NzL2Fkdl8yMDE3MDgwOUEuaHRtbAogUmVwb3J0ZWQtYnk6IEJyaWFuIENhcnBlbnRlcgogCiBVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE3LTEwMDAxMDEKLVNpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8YWt1c3RlckBtdmlzdGEuY29tPgoraHR0cHM6Ly9naXRodWIuY29tL2N1cmwvY3VybC9jb21taXQvNDUzZTdhN2EwM2EyY2VjNzQ5YWJkMzg3OGE0OGU3MjhjNTE1Y2NhNwogCitSZWJhc2UgdGhlIHRlc3RzL2RhdGEvTWFrZWZpbGUuaW5jIGNoYW5nZXMgZm9yIGN1cmwgNy41NC4xLgorCitTaWduZWQtb2ZmLWJ5OiBXZW56b25nIEZhbiA8d2Vuem9uZy5mYW5Ad2luZHJpdmVyLmNvbT4KIC0tLQogIHNyYy90b29sX3VybGdsb2IuYyAgICAgIHwgIDUgKysrKy0KICB0ZXN0cy9kYXRhL01ha2VmaWxlLmluYyB8ICAyICstCkBAIC0yMiwxMSArMjQsMTEgQEAKICAzIGZpbGVzIGNoYW5nZWQsIDQwIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAgY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL2RhdGEvdGVzdDEyODkKIAotSW5kZXg6IGN1cmwtNy41My4xL3NyYy90b29sX3VybGdsb2IuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGN1cmwtNy41My4xLm9yaWcvc3JjL3Rvb2xfdXJsZ2xvYi5jCi0rKysgY3VybC03LjUzLjEvc3JjL3Rvb2xfdXJsZ2xvYi5jCi1AQCAtMjY5LDcgKzI2OSwxMCBAQCBzdGF0aWMgQ1VSTGNvZGUgZ2xvYl9yYW5nZShVUkxHbG9iICpnbG9iCitkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xfdXJsZ2xvYi5jIGIvc3JjL3Rvb2xfdXJsZ2xvYi5jCitpbmRleCA2YjFlY2UwLi5kNTZkY2Q5IDEwMDY0NAorLS0tIGEvc3JjL3Rvb2xfdXJsZ2xvYi5jCisrKysgYi9zcmMvdG9vbF91cmxnbG9iLmMKK0BAIC0yNzMsNyArMjczLDEwIEBAIHN0YXRpYyBDVVJMY29kZSBnbG9iX3JhbmdlKFVSTEdsb2IgKmdsb2IsIGNoYXIgKipwYXR0ZXJucCwKICAgICAgICAgIH0KICAgICAgICAgIGVycm5vID0gMDsKICAgICAgICAgIG1heF9uID0gc3RydG91bChwYXR0ZXJuLCAmZW5kcCwgMTApOwpAQCAtMzgsMjIgKzQwLDI0IEBACiAgICAgICAgICAgIHBhdHRlcm4gPSBlbmRwKzE7CiAgICAgICAgICAgIGVycm5vID0gMDsKICAgICAgICAgICAgc3RlcF9uID0gc3RydG91bChwYXR0ZXJuLCAmZW5kcCwgMTApOwotSW5kZXg6IGN1cmwtNy41My4xL3Rlc3RzL2RhdGEvTWFrZWZpbGUuaW5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gY3VybC03LjUzLjEub3JpZy90ZXN0cy9kYXRhL01ha2VmaWxlLmluYwotKysrIGN1cmwtNy41My4xL3Rlc3RzL2RhdGEvTWFrZWZpbGUuaW5jCi1AQCAtMTMxLDYgKzEzMSw3IEBAIHRlc3QxMjQ0IHRlc3QxMjQ1IHRlc3QxMjQ2IHRlc3QxMjQ3IHRlc3QKLSB0ZXN0MTI1MiB0ZXN0MTI1MyB0ZXN0MTI1NCB0ZXN0MTI1NSB0ZXN0MTI1NiB0ZXN0MTI1NyB0ZXN0MTI1OCB0ZXN0MTI1OSBcCitkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS9NYWtlZmlsZS5pbmMgYi90ZXN0cy9kYXRhL01ha2VmaWxlLmluYworaW5kZXggMTU1MzIwYS4uN2FkYmVlNiAxMDA2NDQKKy0tLSBhL3Rlc3RzL2RhdGEvTWFrZWZpbGUuaW5jCisrKysgYi90ZXN0cy9kYXRhL01ha2VmaWxlLmluYworQEAgLTEzMiw3ICsxMzIsNyBAQCB0ZXN0MTI1MiB0ZXN0MTI1MyB0ZXN0MTI1NCB0ZXN0MTI1NSB0ZXN0MTI1NiB0ZXN0MTI1NyB0ZXN0MTI1OCB0ZXN0MTI1OSBcCisgdGVzdDEyNjAgdGVzdDEyNjEgdGVzdDEyNjIgXAogIFwKLSB0ZXN0MTI4MCB0ZXN0MTI4MSB0ZXN0MTI4MiB0ZXN0MTI4MyB0ZXN0MTI4NCB0ZXN0MTI4NSB0ZXN0MTI4NiBcCi0rdGVzdDEyODkgXAorIHRlc3QxMjgwIHRlc3QxMjgxIHRlc3QxMjgyIHRlc3QxMjgzIHRlc3QxMjg0IHRlc3QxMjg1IHRlc3QxMjg2IHRlc3QxMjg3IFwKKy10ZXN0MTI4OCBcCisrdGVzdDEyODggdGVzdDEyODkgXAogIFwKICB0ZXN0MTMwMCB0ZXN0MTMwMSB0ZXN0MTMwMiB0ZXN0MTMwMyB0ZXN0MTMwNCB0ZXN0MTMwNSB0ZXN0MTMwNiB0ZXN0MTMwNyBcCiAgdGVzdDEzMDggdGVzdDEzMDkgdGVzdDEzMTAgdGVzdDEzMTEgdGVzdDEzMTIgdGVzdDEzMTMgdGVzdDEzMTQgdGVzdDEzMTUgXAotSW5kZXg6IGN1cmwtNy41My4xL3Rlc3RzL2RhdGEvdGVzdDEyODkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2RpZmYgLS1naXQgYS90ZXN0cy9kYXRhL3Rlc3QxMjg5IGIvdGVzdHMvZGF0YS90ZXN0MTI4OQorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmQ2NzljYzAKIC0tLSAvZGV2L251bGwKLSsrKyBjdXJsLTcuNTMuMS90ZXN0cy9kYXRhL3Rlc3QxMjg5CisrKysgYi90ZXN0cy9kYXRhL3Rlc3QxMjg5CiBAQCAtMCwwICsxLDM1IEBACiArPHRlc3RjYXNlPgogKzxpbmZvPgpAQCAtOTAsMyArOTQsNiBAQAogKzwvZXJyb3Jjb2RlPgogKzwvdmVyaWZ5PgogKzwvdGVzdGNhc2U+CistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsL0NWRS0yMDE3LTEwMDAyNTQucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsL0NWRS0yMDE3LTEwMDAyNTQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmIwNzk4YgotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmwvQ1ZFLTIwMTctMTAwMDI1NC5wYXRjaApAQCAtMCwwICsxLDEzOCBAQAorRnJvbSAxYjJlYmE2Zjk3NDVjMDY0ZjcyODNlMGFkYThmNDZkZjlkOWQ2ZTQyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTGkgWmhvdSA8bGkuemhvdUB3aW5kcml2ZXIuY29tPgorRGF0ZTogTW9uLCAyMyBPY3QgMjAxNyAwMDoyNjo1MCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBGVFA6IHplcm8gdGVybWluYXRlIHRoZSBlbnRyeSBwYXRoIGV2ZW4gb24gYmFkIGlucHV0CisKKy4uLiBhIHNpbmdsZSBkb3VibGUgcXVvdGUgY291bGQgbGVhdmUgdGhlIGVudHJ5IHBhdGggYnVmZmVyIHdpdGhvdXQgYSB6ZXJvCit0ZXJtaW5hdGluZyBieXRlLiBDVkUtMjAxNy0xMDAwMjU0CisKK1Rlc3QgMTE1MiBhZGRlZCB0byB2ZXJpZnkuCisKK1JlcG9ydGVkLWJ5OiBNYXggRHltb25kCitCdWc6IGh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3MvYWR2XzIwMTcxMDA0Lmh0bWwKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorQ1ZFOiBDVkUtMjAxNy0xMDAwMjU0CitTaWduZWQtb2ZmLWJ5OiBMaSBaaG91IDxsaS56aG91QHdpbmRyaXZlci5jb20+CistLS0KKyBsaWIvZnRwLmMgICAgICAgICAgICAgICB8ICA3ICsrKystLQorIHRlc3RzL2RhdGEvTWFrZWZpbGUuaW5jIHwgIDIgKysKKyB0ZXN0cy9kYXRhL3Rlc3QxMTUyICAgICB8IDYxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyAzIGZpbGVzIGNoYW5nZWQsIDY4IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL2RhdGEvdGVzdDExNTIKKworZGlmZiAtLWdpdCBhL2xpYi9mdHAuYyBiL2xpYi9mdHAuYworaW5kZXggNWVkZWMzNy4uNDkzZGJmOSAxMDA2NDQKKy0tLSBhL2xpYi9mdHAuYworKysrIGIvbGliL2Z0cC5jCitAQCAtMjgyNiw2ICsyODI2LDcgQEAgc3RhdGljIENVUkxjb2RlIGZ0cF9zdGF0ZW1hY2hfYWN0KHN0cnVjdCBjb25uZWN0ZGF0YSAqY29ubikKKyAgICAgICAgIGNvbnN0IHNpemVfdCBidWZfc2l6ZSA9IGRhdGEtPnNldC5idWZmZXJfc2l6ZTsKKyAgICAgICAgIGNoYXIgKmRpcjsKKyAgICAgICAgIGNoYXIgKnN0b3JlOworKyAgICAgICAgYm9vbCBlbnRyeV9leHRyYWN0ZWQgPSBGQUxTRTsKKyAKKyAgICAgICAgIGRpciA9IG1hbGxvYyhucmVhZCArIDEpOworICAgICAgICAgaWYoIWRpcikKK0BAIC0yODU3LDcgKzI4NTgsNyBAQCBzdGF0aWMgQ1VSTGNvZGUgZnRwX3N0YXRlbWFjaF9hY3Qoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKQorICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgIC8qIGVuZCBvZiBwYXRoICovCistICAgICAgICAgICAgICAgICpzdG9yZSA9ICdcMCc7IC8qIHplcm8gdGVybWluYXRlICovCisrICAgICAgICAgICAgICAgIGVudHJ5X2V4dHJhY3RlZCA9IFRSVUU7CisgICAgICAgICAgICAgICAgIGJyZWFrOyAvKiBnZXQgb3V0IG9mIHRoaXMgbG9vcCAqLworICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgIH0KK0BAIC0yODY2LDcgKzI4NjcsOSBAQCBzdGF0aWMgQ1VSTGNvZGUgZnRwX3N0YXRlbWFjaF9hY3Qoc3RydWN0IGNvbm5lY3RkYXRhICpjb25uKQorICAgICAgICAgICAgIHN0b3JlKys7CisgICAgICAgICAgICAgcHRyKys7CisgICAgICAgICAgIH0KKy0KKysgICAgICAgICAgKnN0b3JlID0gJ1wwJzsgLyogemVybyB0ZXJtaW5hdGUgKi8KKysgICAgICAgIH0KKysgICAgICAgIGlmKGVudHJ5X2V4dHJhY3RlZCkgeworICAgICAgICAgICAvKiBJZiB0aGUgcGF0aCBuYW1lIGRvZXMgbm90IGxvb2sgbGlrZSBhbiBhYnNvbHV0ZSBwYXRoIChpLmUuOiBpdAorICAgICAgICAgICAgICBkb2VzIG5vdCBzdGFydCB3aXRoIGEgJy8nKSwgd2UgcHJvYmFibHkgbmVlZCBzb21lIHNlcnZlci1kZXBlbmRlbnQKKyAgICAgICAgICAgICAgYWRqdXN0bWVudHMuIEZvciBleGFtcGxlLCB0aGlzIGlzIHRoZSBjYXNlIHdoZW4gY29ubmVjdGluZyB0bworZGlmZiAtLWdpdCBhL3Rlc3RzL2RhdGEvTWFrZWZpbGUuaW5jIGIvdGVzdHMvZGF0YS9NYWtlZmlsZS5pbmMKK2luZGV4IDdhZGJlZTYuLjUyODQ2NTQgMTAwNjQ0CistLS0gYS90ZXN0cy9kYXRhL01ha2VmaWxlLmluYworKysrIGIvdGVzdHMvZGF0YS9NYWtlZmlsZS5pbmMKK0BAIC0xMjEsNiArMTIxLDggQEAgdGVzdDExMjAgdGVzdDExMjEgdGVzdDExMjIgdGVzdDExMjMgdGVzdDExMjQgdGVzdDExMjUgdGVzdDExMjYgdGVzdDExMjcgXAorIHRlc3QxMTI4IHRlc3QxMTI5IHRlc3QxMTMwIHRlc3QxMTMxIHRlc3QxMTMyIHRlc3QxMTMzIHRlc3QxMTM0IHRlc3QxMTM1IFwKKyB0ZXN0MTEzNiB0ZXN0MTEzNyB0ZXN0MTEzOCB0ZXN0MTEzOSB0ZXN0MTE0MCB0ZXN0MTE0MSB0ZXN0MTE0MiB0ZXN0MTE0MyBcCisgdGVzdDExNDQgdGVzdDExNDUgdGVzdDExNDYgXAorK3Rlc3QxMTUyIFwKKytcCisgdGVzdDEyMDAgdGVzdDEyMDEgdGVzdDEyMDIgdGVzdDEyMDMgdGVzdDEyMDQgdGVzdDEyMDUgdGVzdDEyMDYgdGVzdDEyMDcgXAorIHRlc3QxMjA4IHRlc3QxMjA5IHRlc3QxMjEwIHRlc3QxMjExIHRlc3QxMjEyIHRlc3QxMjEzIHRlc3QxMjE0IHRlc3QxMjE1IFwKKyB0ZXN0MTIxNiB0ZXN0MTIxNyB0ZXN0MTIxOCB0ZXN0MTIxOSBcCitkaWZmIC0tZ2l0IGEvdGVzdHMvZGF0YS90ZXN0MTE1MiBiL3Rlc3RzL2RhdGEvdGVzdDExNTIKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5hYThjMGE3CistLS0gL2Rldi9udWxsCisrKysgYi90ZXN0cy9kYXRhL3Rlc3QxMTUyCitAQCAtMCwwICsxLDYxIEBACisrPHRlc3RjYXNlPgorKzxpbmZvPgorKzxrZXl3b3Jkcz4KKytGVFAKKytQQVNWCisrTElTVAorKzwva2V5d29yZHM+CisrPC9pbmZvPgorKyMKKysjIFNlcnZlci1zaWRlCisrPHJlcGx5PgorKzxzZXJ2ZXJjbWQ+CisrUkVQTFkgUFdEIDI1NyAianVzdCBvbmUKKys8L3NlcnZlcmNtZD4KKysKKysjIFdoZW4gZG9pbmcgTElTVCwgd2UgZ2V0IHRoZSBkZWZhdWx0IGxpc3Qgb3V0cHV0IGhhcmQtY29kZWQgaW4gdGhlIHRlc3QKKysjIEZUUCBzZXJ2ZXIKKys8ZGF0YSBtb2RlPSJ0ZXh0Ij4KKyt0b3RhbCAyMAorK2Ryd3hyLXhyLXggICA4IDk4ICAgICAgIDk4ICAgICAgICAgICA1MTIgT2N0IDIyIDEzOjA2IC4KKytkcnd4ci14ci14ICAgOCA5OCAgICAgICA5OCAgICAgICAgICAgNTEyIE9jdCAyMiAxMzowNiAuLgorK2Ryd3hyLXhyLXggICAyIDk4ICAgICAgIDk4ICAgICAgICAgICA1MTIgTWF5ICAyICAxOTk2IGN1cmwtcmVsZWFzZXMKKystci0tci0tci0tICAgMSAwICAgICAgICAxICAgICAgICAgICAgIDM1IEp1bCAxNiAgMTk5NiBSRUFETUUKKytscnd4cnd4cnd4ICAgMSAwICAgICAgICAxICAgICAgICAgICAgICA3IERlYyAgOSAgMTk5OSBiaW4gLT4gdXNyL2JpbgorK2RyLXhyLXhyLXggICAyIDAgICAgICAgIDEgICAgICAgICAgICA1MTIgT2N0ICAxICAxOTk3IGRldgorK2Ryd3hyd3hyd3ggICAyIDk4ICAgICAgIDk4ICAgICAgICAgICA1MTIgTWF5IDI5IDE2OjA0IGRvd25sb2FkLmh0bWwKKytkci14ci14ci14ICAgMiAwICAgICAgICAxICAgICAgICAgICAgNTEyIE5vdiAzMCAgMTk5NSBldGMKKytkcnd4cnd4cnd4ICAgMiA5OCAgICAgICAxICAgICAgICAgICAgNTEyIE9jdCAzMCAxNDozMyBwdWIKKytkci14ci14ci14ICAgNSAwICAgICAgICAxICAgICAgICAgICAgNTEyIE9jdCAgMSAgMTk5NyB1c3IKKys8L2RhdGE+CisrPC9yZXBseT4KKysKKysjCisrIyBDbGllbnQtc2lkZQorKzxjbGllbnQ+CisrPHNlcnZlcj4KKytmdHAKKys8L3NlcnZlcj4KKysgPG5hbWU+CisrRlRQIHdpdGggdW5ldmVuIHF1b3RlIGluIFBXRCByZXNwb25zZQorKyA8L25hbWU+CisrIDxjb21tYW5kPgorK2Z0cDovLyVIT1NUSVA6JUZUUFBPUlQvdGVzdC0xMTUyLworKzwvY29tbWFuZD4KKys8L2NsaWVudD4KKysKKysjCisrIyBWZXJpZnkgZGF0YSBhZnRlciB0aGUgdGVzdCBoYXMgYmVlbiAic2hvdCIKKys8dmVyaWZ5PgorKzxwcm90b2NvbD4KKytVU0VSIGFub255bW91cworK1BBU1MgZnRwQGV4YW1wbGUuY29tCisrUFdECisrQ1dEIHRlc3QtMTE1MgorK0VQU1YKKytUWVBFIEEKKytMSVNUCisrUVVJVAorKzwvcHJvdG9jb2w+CisrPC92ZXJpZnk+CisrPC90ZXN0Y2FzZT4KKy0tIAorMi4xMS4wCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmwvcmVwcm9kdWNpYmxlLW1raGVscC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmwvcmVwcm9kdWNpYmxlLW1raGVscC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNjhiYmViCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybC9yZXByb2R1Y2libGUtbWtoZWxwLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gMWZlOTJmZDNkZDY0YzcyMjhmNmZmNDFlM2ZjMTZjNGYyMzkyNDcxYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEp1cm8gQnlzdHJpY2t5IDxqdXJvLmJ5c3RyaWNreUBpbnRlbC5jb20+CitEYXRlOiBGcmksIDI3IE9jdCAyMDE3IDA4OjI4OjI1IC0wNzAwCitTdWJqZWN0OiBta2hlbHAucGw6IHN1cHBvcnQgcmVwcm9kdWNpYmxlIGJ1aWxkCisKK0RvIG5vdCBnZW5lcmF0ZSBsaW5lIHdpdGggdGhlIGN1cnJlbnQgZGF0ZSwgc3VjaCBhczoKKworKiBHZW5lcmF0aW9uIHRpbWU6IFR1ZSBPY3QtMjQgMTg6MDE6NDEgMjAxNworCitUaGlzIHdpbGwgaW1wcm92ZSByZXByb2R1Y2liaWxpdHkuIFRoZSBnZW5lcmF0ZWQgc3RyaW5nIGlzIG9ubHkKK3BhcnQgb2YgYSBjb21tZW50LCBzbyB0aGVyZSBzaG91bGQgYmUgbm8gYWR2ZXJzZSBjb25zZXF1ZW5jZXMuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFsgaHR0cHM6Ly9naXRodWIuY29tL2N1cmwvY3VybC9wdWxsLzIwMjYgXQorCitTaWduZWQtb2ZmLWJ5OiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgorCitkaWZmIC0tZ2l0IGEvc3JjL21raGVscC5wbCBiL3NyYy9ta2hlbHAucGwKK2luZGV4IDI3MGRhYTIuLjc1N2YwMjQgMTAwNzU1CistLS0gYS9zcmMvbWtoZWxwLnBsCisrKysgYi9zcmMvbWtoZWxwLnBsCitAQCAtMTAyLDExICsxMDIsOSBAQCB3aGlsZSg8UkVBRD4pIHsKKyB9CisgY2xvc2UoUkVBRCk7CisgCistJG5vdyA9IGxvY2FsdGltZTsKKyBwcmludCA8PEhFQUQKKyAvKgorICAqIE5FVkVSIEVWRVIgZWRpdCB0aGlzIG1hbnVhbGx5LCBmaXggdGhlIG1raGVscC5wbCBzY3JpcHQgaW5zdGVhZCEKKy0gKiBHZW5lcmF0aW9uIHRpbWU6ICRub3cKKyAgKi8KKyAjaWZkZWYgVVNFX01BTlVBTAorICNpbmNsdWRlICJ0b29sX2h1Z2VoZWxwLmgiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsXzcuNTMuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmxfNy41My4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjM2UxZjg5Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmxfNy41My4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotU1VNTUFSWSA9ICJDb21tYW5kIGxpbmUgdG9vbCBhbmQgbGlicmFyeSBmb3IgY2xpZW50LXNpZGUgVVJMIHRyYW5zZmVycyIKLUhPTUVQQUdFID0gImh0dHA6Ly9jdXJsLmhheHguc2UvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vY3VybC5oYXh4LnNlL21haWwvbGlzdC5jZ2k/bGlzdD1jdXJsLXRyYWNrZXIiCi1TRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORztiZWdpbmxpbmU9ODttZDU9M2EzNDk0MmY0YWUzZmJmMWEzMDMxNjA3MTRlNjY0YWMiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2N1cmwuaGF4eC5zZS9kb3dubG9hZC9jdXJsLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1yZXBsYWNlLWtyYjUtY29uZmlnLXdpdGgtcGtnLWNvbmZpZy5wYXRjaCBcCi0iCi0KLSMgY3VybCBsaWtlcyB0byBzZXQgLWcwIGluIENGTEFHUywgc28gd2Ugc3RvcCBpdAotIyBmcm9tIG11Y2tpbmcgYXJvdW5kIHdpdGggZGVidWcgb3B0aW9ucwotIwotU1JDX1VSSSArPSAiIGZpbGU6Ly9jb25maWd1cmVfYWMucGF0Y2ggXAotICAgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xMDAwMTAwLnBhdGNoIFwKLSAgICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTAwMDEwMS5wYXRjaCBcCi0gICAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZmIxZjAzYTE0MjIzNjg0MGMxYTc3YzAzNWZhNGM1NDIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWM3MjA3YzA2ZDc1ZTkxMzZhOTQ0YTJlMDUyODMzN2NlNzZmMTViOWVjOWFlNGJiMzBkNzAzYjU5YmY1MzBlOCIKLQotQ1ZFX1BST0RVQ1QgPSAibGliY3VybCIKLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBiaW5jb25maWcgbXVsdGlsaWJfaGVhZGVyCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IGdudXRscyBwcm94eSB0aHJlYWRlZC1yZXNvbHZlciB6bGliIgotUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAiaXB2NiBwcm94eSBzc2wgdGhyZWFkZWQtcmVzb2x2ZXIgemxpYiIKLVBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlc2RrID0gImlwdjYgcHJveHkgc3NsIHRocmVhZGVkLXJlc29sdmVyIHpsaWIiCi0KLVBBQ0tBR0VDT05GSUdbZGljdF0gPSAiLS1lbmFibGUtZGljdCwtLWRpc2FibGUtZGljdCwiCi1QQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS13aXRoLWdudXRscywtLXdpdGhvdXQtZ251dGxzLGdudXRscyIKLVBBQ0tBR0VDT05GSUdbZ29waGVyXSA9ICItLWVuYWJsZS1nb3BoZXIsLS1kaXNhYmxlLWdvcGhlciwiCi1QQUNLQUdFQ09ORklHW2ltYXBdID0gIi0tZW5hYmxlLWltYXAsLS1kaXNhYmxlLWltYXAsIgotUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKLVBBQ0tBR0VDT05GSUdbbGRhcF0gPSAiLS1lbmFibGUtbGRhcCwtLWRpc2FibGUtbGRhcCwiCi1QQUNLQUdFQ09ORklHW2xkYXBzXSA9ICItLWVuYWJsZS1sZGFwcywtLWRpc2FibGUtbGRhcHMsIgotUEFDS0FHRUNPTkZJR1tsaWJpZG5dID0gIi0td2l0aC1saWJpZG4sLS13aXRob3V0LWxpYmlkbixsaWJpZG4iCi1QQUNLQUdFQ09ORklHW2xpYnNzaDJdID0gIi0td2l0aC1saWJzc2gyLC0td2l0aG91dC1saWJzc2gyLGxpYnNzaDIiCi1QQUNLQUdFQ09ORklHW3BvcDNdID0gIi0tZW5hYmxlLXBvcDMsLS1kaXNhYmxlLXBvcDMsIgotUEFDS0FHRUNPTkZJR1twcm94eV0gPSAiLS1lbmFibGUtcHJveHksLS1kaXNhYmxlLXByb3h5LCIKLVBBQ0tBR0VDT05GSUdbcnRtcGR1bXBdID0gIi0td2l0aC1saWJydG1wLC0td2l0aG91dC1saWJydG1wLHJ0bXBkdW1wIgotUEFDS0FHRUNPTkZJR1tydHNwXSA9ICItLWVuYWJsZS1ydHNwLC0tZGlzYWJsZS1ydHNwLCIKLVBBQ0tBR0VDT05GSUdbc21iXSA9ICItLWVuYWJsZS1zbWIsLS1kaXNhYmxlLXNtYiwiCi1QQUNLQUdFQ09ORklHW3NtdHBdID0gIi0tZW5hYmxlLXNtdHAsLS1kaXNhYmxlLXNtdHAsIgotUEFDS0FHRUNPTkZJR1tzc2xdID0gIi0td2l0aC1zc2wgLS13aXRoLXJhbmRvbT0vZGV2L3VyYW5kb20sLS13aXRob3V0LXNzbCxvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1t0ZWxuZXRdID0gIi0tZW5hYmxlLXRlbG5ldCwtLWRpc2FibGUtdGVsbmV0LCIKLVBBQ0tBR0VDT05GSUdbdGZ0cF0gPSAiLS1lbmFibGUtdGZ0cCwtLWRpc2FibGUtdGZ0cCwiCi1QQUNLQUdFQ09ORklHW3RocmVhZGVkLXJlc29sdmVyXSA9ICItLWVuYWJsZS10aHJlYWRlZC1yZXNvbHZlciwtLWRpc2FibGUtdGhyZWFkZWQtcmVzb2x2ZXIiCi1QQUNLQUdFQ09ORklHW3psaWJdID0gIi0td2l0aC16bGliPSR7U1RBR0lOR19MSUJESVJ9Ly4uLywtLXdpdGhvdXQtemxpYix6bGliIgotUEFDS0FHRUNPTkZJR1trcmI1XSA9ICItLXdpdGgtZ3NzYXBpLC0td2l0aG91dC1nc3NhcGksa3JiNSIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS1lbmFibGUtY3J5cHRvLWF1dGggXAotICAgIC0td2l0aC1jYS1idW5kbGU9JHtzeXNjb25mZGlyfS9zc2wvY2VydHMvY2EtY2VydGlmaWNhdGVzLmNydCBcCi0gICAgLS13aXRob3V0LWxpYm1ldGFsaW5rIFwKLSAgICAtLXdpdGhvdXQtbGlicHNsIFwKLSAgICAtLXdpdGhvdXQtbmdodHRwMiBcCi0iCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCW9lX211bHRpbGliX2hlYWRlciBjdXJsL2N1cmxidWlsZC5oCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLQkjIGNsZWFudXAgYnVpbGRwYXRocyBmcm9tIGN1cmwtY29uZmlnCi0Jc2VkIC1pIC1lICdzLCR7U1RBR0lOR19ESVJfSE9TVH0sLGcnICR7RH0ke2JpbmRpcn0vY3VybC1jb25maWcKLX0KLQotUEFDS0FHRVMgPSsgImxpYiR7QlBOfSIKLQotRklMRVNfbGliJHtCUE59ID0gIiR7bGliZGlyfS9saWIqLnNvLioiCi1SUkVDT01NRU5EU19saWIke0JQTn0gKz0gImNhLWNlcnRpZmljYXRlcyIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0venNoIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsXzcuNTQuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmxfNy41NC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4ZjA1MzEKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsXzcuNTQuMS5iYgpAQCAtMCwwICsxLDg3IEBACitTVU1NQVJZID0gIkNvbW1hbmQgbGluZSB0b29sIGFuZCBsaWJyYXJ5IGZvciBjbGllbnQtc2lkZSBVUkwgdHJhbnNmZXJzIgorSE9NRVBBR0UgPSAiaHR0cDovL2N1cmwuaGF4eC5zZS8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC9saXN0LmNnaT9saXN0PWN1cmwtdHJhY2tlciIKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO2JlZ2lubGluZT04O21kNT0zYTM0OTQyZjRhZTNmYmYxYTMwMzE2MDcxNGU2NjRhYyIKKworU1JDX1VSSSA9ICJodHRwOi8vY3VybC5oYXh4LnNlL2Rvd25sb2FkL2N1cmwtJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXJlcGxhY2Uta3JiNS1jb25maWctd2l0aC1wa2ctY29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTEwMDAwOTkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTctMTAwMDEwMC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xMDAwMTAxLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTEwMDAyNTQucGF0Y2ggXAorIgorCitTUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIFwKKyAgICAgICAgICAgZmlsZTovL3JlcHJvZHVjaWJsZS1ta2hlbHAucGF0Y2ggXAorIgorCisjIGN1cmwgbGlrZXMgdG8gc2V0IC1nMCBpbiBDRkxBR1MsIHNvIHdlIHN0b3AgaXQKKyMgZnJvbSBtdWNraW5nIGFyb3VuZCB3aXRoIGRlYnVnIG9wdGlvbnMKKyMKK1NSQ19VUkkgKz0gIiBmaWxlOi8vY29uZmlndXJlX2FjLnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNmI2ZWI3MjJmNTEyZTdhMjQ4NTVmZjA4NGY1NGZlNTUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmRmYzRkZjJkMDAxZWUwYzQ0ZWMwNzExODZlNzcwMDQ2MjQ5MjYzYzQ5MWZjYWU0OGRmMGUxYTNjYThmMjVhMCIKKworQ1ZFX1BST0RVQ1QgPSAibGliY3VybCIKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBiaW5jb25maWcgbXVsdGlsaWJfaGVhZGVyCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IGdudXRscyBwcm94eSB0aHJlYWRlZC1yZXNvbHZlciB6bGliIgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAiaXB2NiBwcm94eSBzc2wgdGhyZWFkZWQtcmVzb2x2ZXIgemxpYiIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlc2RrID0gImlwdjYgcHJveHkgc3NsIHRocmVhZGVkLXJlc29sdmVyIHpsaWIiCisKKyMgJ2FyZXMnIGFuZCAndGhyZWFkZWQtcmVzb2x2ZXInIGFyZSBtdXR1YWxseSBleGNsdXNpdmUKK1BBQ0tBR0VDT05GSUdbYXJlc10gPSAiLS1lbmFibGUtYXJlcywtLWRpc2FibGUtYXJlcyxjLWFyZXMiCitQQUNLQUdFQ09ORklHW2RpY3RdID0gIi0tZW5hYmxlLWRpY3QsLS1kaXNhYmxlLWRpY3QsIgorUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0td2l0aC1nbnV0bHMsLS13aXRob3V0LWdudXRscyxnbnV0bHMiCitQQUNLQUdFQ09ORklHW2dvcGhlcl0gPSAiLS1lbmFibGUtZ29waGVyLC0tZGlzYWJsZS1nb3BoZXIsIgorUEFDS0FHRUNPTkZJR1tpbWFwXSA9ICItLWVuYWJsZS1pbWFwLC0tZGlzYWJsZS1pbWFwLCIKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCitQQUNLQUdFQ09ORklHW2xkYXBdID0gIi0tZW5hYmxlLWxkYXAsLS1kaXNhYmxlLWxkYXAsIgorUEFDS0FHRUNPTkZJR1tsZGFwc10gPSAiLS1lbmFibGUtbGRhcHMsLS1kaXNhYmxlLWxkYXBzLCIKK1BBQ0tBR0VDT05GSUdbbGliaWRuXSA9ICItLXdpdGgtbGliaWRuLC0td2l0aG91dC1saWJpZG4sbGliaWRuIgorUEFDS0FHRUNPTkZJR1tsaWJzc2gyXSA9ICItLXdpdGgtbGlic3NoMiwtLXdpdGhvdXQtbGlic3NoMixsaWJzc2gyIgorUEFDS0FHRUNPTkZJR1twb3AzXSA9ICItLWVuYWJsZS1wb3AzLC0tZGlzYWJsZS1wb3AzLCIKK1BBQ0tBR0VDT05GSUdbcHJveHldID0gIi0tZW5hYmxlLXByb3h5LC0tZGlzYWJsZS1wcm94eSwiCitQQUNLQUdFQ09ORklHW3J0bXBkdW1wXSA9ICItLXdpdGgtbGlicnRtcCwtLXdpdGhvdXQtbGlicnRtcCxydG1wZHVtcCIKK1BBQ0tBR0VDT05GSUdbcnRzcF0gPSAiLS1lbmFibGUtcnRzcCwtLWRpc2FibGUtcnRzcCwiCitQQUNLQUdFQ09ORklHW3NtYl0gPSAiLS1lbmFibGUtc21iLC0tZGlzYWJsZS1zbWIsIgorUEFDS0FHRUNPTkZJR1tzbXRwXSA9ICItLWVuYWJsZS1zbXRwLC0tZGlzYWJsZS1zbXRwLCIKK1BBQ0tBR0VDT05GSUdbc3NsXSA9ICItLXdpdGgtc3NsIC0td2l0aC1yYW5kb209L2Rldi91cmFuZG9tLC0td2l0aG91dC1zc2wsb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdbdGVsbmV0XSA9ICItLWVuYWJsZS10ZWxuZXQsLS1kaXNhYmxlLXRlbG5ldCwiCitQQUNLQUdFQ09ORklHW3RmdHBdID0gIi0tZW5hYmxlLXRmdHAsLS1kaXNhYmxlLXRmdHAsIgorUEFDS0FHRUNPTkZJR1t0aHJlYWRlZC1yZXNvbHZlcl0gPSAiLS1lbmFibGUtdGhyZWFkZWQtcmVzb2x2ZXIsLS1kaXNhYmxlLXRocmVhZGVkLXJlc29sdmVyIgorUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLXdpdGgtemxpYj0ke1NUQUdJTkdfTElCRElSfS8uLi8sLS13aXRob3V0LXpsaWIsemxpYiIKK1BBQ0tBR0VDT05GSUdba3JiNV0gPSAiLS13aXRoLWdzc2FwaSwtLXdpdGhvdXQtZ3NzYXBpLGtyYjUiCitQQUNLQUdFQ09ORklHW25naHR0cDJdID0gIi0td2l0aC1uZ2h0dHAyLC0td2l0aG91dC1uZ2h0dHAyLG5naHR0cDIiCisKK0VYVFJBX09FQ09ORiA9ICIgXAorICAgIC0tZW5hYmxlLWNyeXB0by1hdXRoIFwKKyAgICAtLXdpdGgtY2EtYnVuZGxlPSR7c3lzY29uZmRpcn0vc3NsL2NlcnRzL2NhLWNlcnRpZmljYXRlcy5jcnQgXAorICAgIC0td2l0aG91dC1saWJtZXRhbGluayBcCisgICAgLS13aXRob3V0LWxpYnBzbCBcCisiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCW9lX211bHRpbGliX2hlYWRlciBjdXJsL2N1cmxidWlsZC5oCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKKwkjIGNsZWFudXAgYnVpbGRwYXRocyBmcm9tIGN1cmwtY29uZmlnCisJc2VkIC1pIFwKKwkgICAgLWUgJ3MsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAorCSAgICAtZSAncywtLXdpdGgtbGlidG9vbC1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAorCSAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCisJICAgICR7RH0ke2JpbmRpcn0vY3VybC1jb25maWcKK30KKworUEFDS0FHRVMgPSsgImxpYiR7QlBOfSIKKworRklMRVNfbGliJHtCUE59ID0gIiR7bGliZGlyfS9saWIqLnNvLioiCitSUkVDT01NRU5EU19saWIke0JQTn0gKz0gImNhLWNlcnRpZmljYXRlcyIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0venNoIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGIvZGIvMDAwMS1jb25maWd1cmUtQWRkLWV4cGxpY2l0LXRhZy1vcHRpb25zLXRvLWxpYnRvb2wtaW52b2NhLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RiL2RiLzAwMDEtY29uZmlndXJlLUFkZC1leHBsaWNpdC10YWctb3B0aW9ucy10by1saWJ0b29sLWludm9jYS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjI4ZGIxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RiL2RiLzAwMDEtY29uZmlndXJlLUFkZC1leHBsaWNpdC10YWctb3B0aW9ucy10by1saWJ0b29sLWludm9jYS5wYXRjaApAQCAtMCwwICsxLDQyIEBACitGcm9tIDMyZTU5NDNhM2M0NjM3ZDM5ZTRkNjViNTQ0ZGNiOTllMjgwMjEwZTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU3VuLCAyMyBKdWwgMjAxNyAxMDo1NDoyNiAtMDcwMAorU3ViamVjdDogW1BBVENIXSBjb25maWd1cmU6IEFkZCBleHBsaWNpdCB0YWcgb3B0aW9ucyB0byBsaWJ0b29sIGludm9jYXRpb24KKworVGhpcyBoZWxwcyBjcm9zcyBjb21waWxlIHdoZW4gdGFnIGluZmVyZW5jZSB2aWEgaGV1cmlzdGljcworZmFpbCBiZWNhdXNlIENDIHZhcmlhYmxlIGlzIGhhdmluZyAtZlBJRSAtcGllIGFuZCBsaWJ0b29sCitzbWFydGx5IHJlbW92ZXMgaXQgd2hlbiBidWlsZGluZyBsaWJyYXJpZXMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBkaXN0L2NvbmZpZ3VyZS5hYyB8IDEyICsrKysrKy0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9kaXN0L2NvbmZpZ3VyZS5hYyBiL2Rpc3QvY29uZmlndXJlLmFjCitpbmRleCA2ODlmM2I4Li45YzE0YmRiIDEwMDY0NAorLS0tIGEvZGlzdC9jb25maWd1cmUuYWMKKysrKyBiL2Rpc3QvY29uZmlndXJlLmFjCitAQCAtMzY2LDEyICszNjYsMTIgQEAgTElCVE9PTD0iLi9saWJ0b29sIgorIAorIElOU1RBTExFUj0iXCQoTElCVE9PTCkgLS1tb2RlPWluc3RhbGwgY3AgLXAiCisgCistTUFLRUZJTEVfQ0M9IlwkKExJQlRPT0wpIC0tbW9kZT1jb21waWxlICR7TUFLRUZJTEVfQ0N9IgorLU1BS0VGSUxFX1NPTElOSz0iXCQoTElCVE9PTCkgLS1tb2RlPWxpbmsgJHtNQUtFRklMRV9DQ0xJTkt9IC1hdm9pZC12ZXJzaW9uIgorLU1BS0VGSUxFX0NDTElOSz0iXCQoTElCVE9PTCkgLS1tb2RlPWxpbmsgJHtNQUtFRklMRV9DQ0xJTkt9IgorLU1BS0VGSUxFX0NYWD0iXCQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJHtNQUtFRklMRV9DWFh9IgorLU1BS0VGSUxFX1hTT0xJTks9IlwkKExJQlRPT0wpIC0tbW9kZT1saW5rICR7TUFLRUZJTEVfQ1hYTElOS30gLWF2b2lkLXZlcnNpb24iCistTUFLRUZJTEVfQ1hYTElOSz0iXCQoTElCVE9PTCkgLS1tb2RlPWxpbmsgJHtNQUtFRklMRV9DWFhMSU5LfSIKKytNQUtFRklMRV9DQz0iXCQoTElCVE9PTCkgLS10YWc9Q0MgLS1tb2RlPWNvbXBpbGUgJHtNQUtFRklMRV9DQ30iCisrTUFLRUZJTEVfU09MSU5LPSJcJChMSUJUT09MKSAtLXRhZz1DQyAtLW1vZGU9bGluayAke01BS0VGSUxFX0NDTElOS30gLWF2b2lkLXZlcnNpb24iCisrTUFLRUZJTEVfQ0NMSU5LPSJcJChMSUJUT09MKSAtLXRhZz1DQyAtLW1vZGU9bGluayAke01BS0VGSUxFX0NDTElOS30iCisrTUFLRUZJTEVfQ1hYPSJcJChMSUJUT09MKSAtLXRhZz1DWFggLS1tb2RlPWNvbXBpbGUgJHtNQUtFRklMRV9DWFh9IgorK01BS0VGSUxFX1hTT0xJTks9IlwkKExJQlRPT0wpIC0tdGFnPUNYWCAtLW1vZGU9bGluayAke01BS0VGSUxFX0NYWExJTkt9IC1hdm9pZC12ZXJzaW9uIgorK01BS0VGSUxFX0NYWExJTks9IlwkKExJQlRPT0wpIC0tdGFnPUNYWCAtLW1vZGU9bGluayAke01BS0VGSUxFX0NYWExJTkt9IgorIAorIAorIGNhc2UgIiRob3N0X29zIiBpbgorLS0gCisyLjEzLjMKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RiL2RiL3NlcXVlbmNlLXR5cGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGIvZGIvc2VxdWVuY2UtdHlwZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNmZlM2Q2Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RiL2RiL3NlcXVlbmNlLXR5cGUucGF0Y2gKQEAgLTAsMCArMSw1OSBAQAorY29uZmlndXJlIHdhbnRzIHRvIHVzZSBob3N0LXNwZWNpZmljIHR5cGVzIHRvIGdldCBhIDY0LWJpdCBpbnRlZ2VyIGluIGRiLmgKK2luc3RlYWQgb2YgdXNpbmcgYW4gYWxpYXMgc3VjaCBhcyBpbnQ2NF90LiAgVGhpcyBtZWFucyB0aGF0IHRoZSBoZWFkZXIgZGlmZmVycworaW4gbXVsdGlsaWIgZW52aXJvbm1lbnRzIGZvciBubyBnb29kIHJlYXNvbiwgc28gcmVwbGFjZSB0aGUgdHlwZSB3aXRoIHRoZSBhbGlhcworaW4gc3RkaW50LmguCisKK1RoaXMgdGhlbiBicmVha3MgdGhlIG92ZXJseSBjb21wbGljYXRlZCB0eXBlIGNoZWNrIGJ1dCBhcyB3ZSBrbm93IHRoYXQgaW50NjRfdAorZXhpc3RzIGFuZCB3b3Jrcywgd2UgY2FuIGp1c3QgZGVsZXRlIHRoYXQuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKworLS0tIGEvZGlzdC9hY2xvY2FsL3NlcXVlbmNlLm00fgkyMDEzLTA5LTA5IDE2OjM1OjAyLjAwMDAwMDAwMCArMDEwMAorKysrIGIvZGlzdC9hY2xvY2FsL3NlcXVlbmNlLm00CTIwMTctMTEtMDEgMTM6MjE6NDUuNDcyMjk1OTcxICswMDAwCitAQCAtMjQgKzI0IEBACistCQlkYl9jdl9zZXFfdHlwZT0ibG9uZyIKKysJCWRiX2N2X3NlcV90eXBlPSJpbnQ2NF90IgorQEAgLTMxICszMSBAQAorLQkJZGJfY3Zfc2VxX3R5cGU9ImxvbmcgbG9uZyIKKysJCWRiX2N2X3NlcV90eXBlPSJpbnQ2NF90IgorQEAgLTQxLDM4ICs0MSBAQAorLQkjIFRlc3QgdG8gc2VlIGlmIHdlIGNhbiBkZWNsYXJlIHZhcmlhYmxlcyBvZiB0aGUgYXBwcm9wcmlhdGUgc2l6ZQorLQkjIGFuZCBmb3JtYXQgdGhlbS4gIElmIHdlJ3JlIGNyb3NzLWNvbXBpbGluZywgYWxsIHdlIGdldCBpcyBhIGxpbmsKKy0JIyB0ZXN0LCB3aGljaCB3b24ndCB0ZXN0IGZvciB0aGUgYXBwcm9wcmlhdGUgcHJpbnRmIGZvcm1hdCBzdHJpbmdzLgorLQlpZiB0ZXN0ICIkZGJfY3ZfYnVpbGRfc2VxdWVuY2UiID0gInllcyI7IHRoZW4KKy0JCUFDX1RSWV9SVU4oWworLQkJbWFpbigpIHsKKy0JCQkkZGJfY3Zfc2VxX3R5cGUgbDsKKy0JCQl1bnNpZ25lZCAkZGJfY3Zfc2VxX3R5cGUgdTsKKy0JCQljaGFyIGJ1ZkA8OkAxMDBAOj5AOworLQorLQkJCWJ1ZkA8OkAwQDo+QCA9ICdhJzsKKy0JCQlsID0gOTIyMzM3MjAzNjg1NDc3NTgwN0xMOworLQkJCSh2b2lkKXNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICRkYl9jdl9zZXFfZm10LCBsKTsKKy0JCQlpZiAoc3RyY21wKGJ1ZiwgIjkyMjMzNzIwMzY4NTQ3NzU4MDciKSkKKy0JCQkJcmV0dXJuICgxKTsKKy0JCQl1ID0gMTg0NDY3NDQwNzM3MDk1NTE2MTVVTEw7CistCQkJKHZvaWQpc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgJGRiX2N2X3NlcV91Zm10LCB1KTsKKy0JCQlpZiAoc3RyY21wKGJ1ZiwgIjE4NDQ2NzQ0MDczNzA5NTUxNjE1IikpCistCQkJCXJldHVybiAoMSk7CistCQkJcmV0dXJuICgwKTsKKy0JCX1dLCwgW2RiX2N2X2J1aWxkX3NlcXVlbmNlPSJubyJdLAorLQkJQUNfVFJZX0xJTksoLFsKKy0JCQkkZGJfY3Zfc2VxX3R5cGUgbDsKKy0JCQl1bnNpZ25lZCAkZGJfY3Zfc2VxX3R5cGUgdTsKKy0JCQljaGFyIGJ1ZkA8OkAxMDBAOj5AOworLQorLQkJCWJ1ZkA8OkAwQDo+QCA9ICdhJzsKKy0JCQlsID0gOTIyMzM3MjAzNjg1NDc3NTgwN0xMOworLQkJCSh2b2lkKXNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICRkYl9jdl9zZXFfZm10LCBsKTsKKy0JCQlpZiAoc3RyY21wKGJ1ZiwgIjkyMjMzNzIwMzY4NTQ3NzU4MDciKSkKKy0JCQkJcmV0dXJuICgxKTsKKy0JCQl1ID0gMTg0NDY3NDQwNzM3MDk1NTE2MTVVTEw7CistCQkJKHZvaWQpc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgJGRiX2N2X3NlcV91Zm10LCB1KTsKKy0JCQlpZiAoc3RyY21wKGJ1ZiwgIjE4NDQ2NzQ0MDczNzA5NTUxNjE1IikpCistCQkJCXJldHVybiAoMSk7CistCQkJcmV0dXJuICgwKTsKKy0JCV0sLCBbZGJfY3ZfYnVpbGRfc2VxdWVuY2U9Im5vIl0pKQorLQlmaQorKwlkYl9jdl9idWlsZF9zZXF1ZW5jZT0ieWVzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RiL2RiXzUuMy4yOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kYi9kYl81LjMuMjguYmIKaW5kZXggMjYwNjViYi4uZmI0YmVmYiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RiL2RiXzUuMy4yOC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGIvZGJfNS4zLjI4LmJiCkBAIC0yMiwxNCArMjIsMjAgQEAKIFNSQ19VUkkgKz0gImZpbGU6Ly9hcm0tdGh1bWItbXV0ZXhfZGI1LnBhdGNoIFwKICAgICAgICAgICAgIGZpbGU6Ly9maXgtcGFyYWxsZWwtYnVpbGQucGF0Y2ggXAogICAgICAgICAgICAgZmlsZTovLzAwMDEtYXRvbWljLVJlbmFtZS1sb2NhbC1fX2F0b21pY19jb21wYXJlX2V4Y2hhbmdlLXRvLWF2by5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtQWRkLWV4cGxpY2l0LXRhZy1vcHRpb25zLXRvLWxpYnRvb2wtaW52b2NhLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9zZXF1ZW5jZS10eXBlLnBhdGNoIFwKICAgICAgICAgICAgIgorIyBXZSBhcmUgbm90IGludGVyZXN0ZWQgaW4gb2ZmaWNpYWwgbGF0ZXN0IDYueCB2ZXJzaW9uczsKKyMgbGV0J3MgdHJhY2sgd2hhdCBkZWJpYW4gaXMgdXNpbmcuCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiJHtERUJJQU5fTUlSUk9SfS9tYWluL2QvZGI1LjMvIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiZGI1XC4zXyg/UDxwdmVyPi4rKVwub3JpZyIKIAogU1JDX1VSSVttZDVzdW1dID0gImI5OTQ1NDU2NGQ1YjQ0Nzk3NTA1NjcwMzFkNjZmZTI0IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImUwYTk5MmQ3NDA3MDk4OTJlODFmOWQ5M2YwNmRhZjMwNWNmNzNmYjgxYjU0NWFmZTcyNDc4MDQzMTcyYzM2MjgiCiAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWVkMTE1OGUzMTQzN2Y0Zjg3Y2RkNGFiMmI4NjEzOTU1IgogCi1pbmhlcml0IGF1dG90b29scyBtdWx0aWxpYl9oZWFkZXIKK2luaGVyaXQgYXV0b3Rvb2xzCiAKICMgUHV0IHZpcnR1YWwvZGIgaW4gYW55IGFwcHJvcHJpYXRlIHByb3ZpZGVyIG9mIGEKICMgcmVsYXRpb25hbCBkYXRhYmFzZSwgdXNlIGl0IGFzIGEgZGVwZW5kZW5jeSBpbgpAQCAtNzIsMjIgKzc4LDMyIEBACiBNVVRFWF9hcm0gPSAiJHtBUk1fTVVURVh9IgogTVVURVhfYXJtZWIgPSAiJHtBUk1fTVVURVh9IgogRVhUUkFfT0VDT05GICs9ICIke01VVEVYfSBTVFJJUD10cnVlIgotRVhUUkFfT0VNQUtFX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIExJQlRPT0w9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vJHtIT1NUX1NZU30tbGlidG9vbCIKK0VYVFJBX09FTUFLRSArPSAiTElCVE9PTD0nLi8ke0hPU1RfU1lTfS1saWJ0b29sJyIKIAorRVhUUkFfQVVUT1JFQ09ORiArPSAiLS1leGNsdWRlPWF1dG9oZWFkZXIgIC1JICR7U30vZGlzdC9hY2xvY2FsIC1JJHtTfS9kaXN0L2FjbG9jYWxfamF2YSIKIEFVVE9UT09MU19TQ1JJUFRfUEFUSCA9ICIke1N9L2Rpc3QiCiAKICMgQ2FuY2VsIHRoZSBzaXRlIHN0dWZmIC0gaXQncyBzZXQgZm9yIGRiMyBhbmQgZGVzdHJveXMgdGhlCiAjIGNvbmZpZ3VyZS4KIENPTkZJR19TSVRFID0gIiIKLWRvX2NvbmZpZ3VyZSgpIHsKLSAgICBjZCAke0J9Ci0JZ251LWNvbmZpZ2l6ZSAtLWZvcmNlICR7QVVUT1RPT0xTX1NDUklQVF9QQVRIfQotCW9lX3J1bmNvbmYKKworb2VfcnVuY29uZl9wcmVwZW5kKCkgeworCS4gJHtTfS9kaXN0L1JFTEVBU0UKKwkjIEVkaXQgdmVyc2lvbiBpbmZvcm1hdGlvbiB3ZSBjb3VsZG4ndCBwcmUtY29tcHV0ZS4KKwlzZWQgLWkgLWUgInMvX19FRElUX0RCX1ZFUlNJT05fRkFNSUxZX18vJERCX1ZFUlNJT05fRkFNSUxZL2ciIFwKKwkgICAgLWUgInMvX19FRElUX0RCX1ZFUlNJT05fUkVMRUFTRV9fLyREQl9WRVJTSU9OX1JFTEVBU0UvZyIgXAorCSAgICAtZSAicy9fX0VESVRfREJfVkVSU0lPTl9NQUpPUl9fLyREQl9WRVJTSU9OX01BSk9SL2ciIFwKKwkgICAgLWUgInMvX19FRElUX0RCX1ZFUlNJT05fTUlOT1JfXy8kREJfVkVSU0lPTl9NSU5PUi9nIiBcCisJICAgIC1lICJzL19fRURJVF9EQl9WRVJTSU9OX1BBVENIX18vJERCX1ZFUlNJT05fUEFUQ0gvZyIgXAorCSAgICAtZSAicy9fX0VESVRfREJfVkVSU0lPTl9TVFJJTkdfXy8kREJfVkVSU0lPTl9TVFJJTkcvZyIgXAorCSAgICAtZSAicy9fX0VESVRfREJfVkVSU0lPTl9GVUxMX1NUUklOR19fLyREQl9WRVJTSU9OX0ZVTExfU1RSSU5HL2ciIFwKKwkgICAgLWUgInMvX19FRElUX0RCX1ZFUlNJT05fVU5JUVVFX05BTUVfXy8kREJfVkVSU0lPTl9VTklRVUVfTkFNRS9nIiBcCisJICAgIC1lICJzL19fRURJVF9EQl9WRVJTSU9OX18vJERCX1ZFUlNJT04vZyIgJHtTfS9kaXN0L2NvbmZpZ3VyZQogfQogCiBkb19jb21waWxlX3ByZXBlbmQoKSB7CiAgICAgIyBTdG9wIGxpYnRvb2wgYWRkaW5nIFJQQVRIcwotICAgIHNlZCAtaSAtZSAnc3xoYXJkY29kZV9pbnRvX2xpYnM9eWVzfGhhcmRjb2RlX2ludG9fbGlicz1ub3wnICR7Qn0vbGlidG9vbAorICAgIHNlZCAtaSAtZSAnc3xoYXJkY29kZV9pbnRvX2xpYnM9eWVzfGhhcmRjb2RlX2ludG9fbGlicz1ub3wnICR7Qn0vJHtIT1NUX1NZU30tbGlidG9vbAogfQogCiBkb19pbnN0YWxsX2FwcGVuZCgpIHsKQEAgLTk3LDggKzExMyw2IEBACiAJbG4gLXMgZGI1MS9kYi5oICR7RH0vJHtpbmNsdWRlZGlyfS9kYi5oCiAJbG4gLXMgZGI1MS9kYl9jeHguaCAke0R9LyR7aW5jbHVkZWRpcn0vZGJfY3h4LmgKIAotICAgICAgICBvZV9tdWx0aWxpYl9oZWFkZXIgZGI1MS9kYi5oCi0KIAkjIFRoZSBkb2NzIGVuZCB1cCBpbiAvdXNyL2RvY3MgLSBub3QgcmlnaHQuCiAJaWYgdGVzdCAtZCAiJHtEfS8ke3ByZWZpeH0vZG9jcyIKIAl0aGVuCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGViaWFudXRpbHMvZGViaWFudXRpbHNfNC44LjEuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kZWJpYW51dGlscy9kZWJpYW51dGlsc180LjguMS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4NTdkNGIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGViaWFudXRpbHMvZGViaWFudXRpbHNfNC44LjEuMS5iYgpAQCAtMCwwICsxLDU1IEBACitTVU1NQVJZID0gIk1pc2NlbGxhbmVvdXMgdXRpbGl0aWVzIHNwZWNpZmljIHRvIERlYmlhbiIKK1NFQ1RJT04gPSAiYmFzZSIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBTTUFJTF9HUEwiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kZWJpYW4vY29weXJpZ2h0O21kNT1mMDFhNTIwM2Q1MDUxMmZjNDgzMGI0MzMyYjY5NmE5ZiIKKworU1JDX1VSSSA9ICJodHRwOi8vc25hcHNob3QuZGViaWFuLm9yZy9hcmNoaXZlL2RlYmlhbi8yMDE3MDQwMlQyMTE3MzJaL3Bvb2wvbWFpbi9kLyR7QlBOfS8ke0JQTn1fJHtQVn0udGFyLnh6IgorIyB0aGUgcGFja2FnZSBpcyB0YWtlbiBmcm9tIHNuYXBzaG90cy5kZWJpYW4ub3JnOyB0aGF0IHNvdXJjZSBpcyBzdGF0aWMgYW5kIGdvZXMgc3RhbGUKKyMgc28gd2UgY2hlY2sgdGhlIGxhdGVzdCB1cHN0cmVhbSBmcm9tIGEgZGlyZWN0b3J5IHRoYXQgZG9lcyBnZXQgdXBkYXRlZAorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi9kLyR7QlBOfS8iCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlZTVmY2VjYWFiMDcxYmQwYzkzZThhMGNlZTY1ZDZjNCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwNjQ0NmNkNGMwZDMwOWZkMzFhMDY4MmM1YzJmMDdmNzYxM2ZiODY3Zjc2OTQxNGI5Y2M1MWYxNTVhZDczMTcyIgorCitpbmhlcml0IGF1dG90b29scyB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgIHNlZCAtaSAtZSAnczp0ZW1wZmlsZS4xIHdoaWNoLjE6d2hpY2guMTpnJyAke1N9L01ha2VmaWxlLmFtCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGlmIFsgIiR7YmFzZV9iaW5kaXJ9IiAhPSAiJHtiaW5kaXJ9IiBdOyB0aGVuCisgICAgICAgICMgRGViaWFuIHBsYWNlcyBzb21lIHV0aWxzIGludG8gJHtiYXNlX2JpbmRpcn0gYXMgZG9lcyBidXN5Ym94CisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9CisgICAgICAgIGZvciBhcHAgaW4gcnVuLXBhcnRzIHRlbXBmaWxlOyBkbworICAgICAgICAgICAgbXYgJHtEfSR7YmluZGlyfS8kYXBwICR7RH0ke2Jhc2VfYmluZGlyfS8kYXBwCisgICAgICAgIGRvbmUKKyAgICBmaQorfQorCisjIE5vdGUgdGhhdCB3ZSBwYWNrYWdlIHRoZSB1cGRhdGUtYWx0ZXJuYXRpdmVzIG5hbWUuCisjCitQQUNLQUdFUyA9KyAiJHtQTn0tcnVuLXBhcnRzIgorRklMRVNfJHtQTn0tcnVuLXBhcnRzID0gIiR7YmFzZV9iaW5kaXJ9L3J1bi1wYXJ0cy5kZWJpYW51dGlscyIKKworUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LXJ1bi1wYXJ0cyIKK1JERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZPSIzMCIKK0FMVEVSTkFUSVZFXyR7UE59ID0gImFkZC1zaGVsbCBpbnN0YWxsa2VybmVsIHJlbW92ZS1zaGVsbCBzYXZlbG9nIHRlbXBmaWxlIHdoaWNoIgorCitBTFRFUk5BVElWRV9QUklPUklUWV8ke1BOfS1ydW4tcGFydHMgPSAiNjAiCitBTFRFUk5BVElWRV8ke1BOfS1ydW4tcGFydHMgPSAicnVuLXBhcnRzIgorCitBTFRFUk5BVElWRV8ke1BOfS1kb2MgPSAid2hpY2guMSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVt3aGljaC4xXSA9ICIke21hbmRpcn0vbWFuMS93aGljaC4xIgorCitBTFRFUk5BVElWRV9MSU5LX05BTUVbYWRkLXNoZWxsXT0iJHtzYmluZGlyfS9hZGQtc2hlbGwiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbaW5zdGFsbGtlcm5lbF09IiR7c2JpbmRpcn0vaW5zdGFsbGtlcm5lbCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtyZW1vdmUtc2hlbGxdPSIke3NiaW5kaXJ9L3JlbW92ZS1zaGVsbCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtydW4tcGFydHNdPSIke2Jhc2VfYmluZGlyfS9ydW4tcGFydHMiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbc2F2ZWxvZ109IiR7YmluZGlyfS9zYXZlbG9nIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3RlbXBmaWxlXT0iJHtiYXNlX2JpbmRpcn0vdGVtcGZpbGUiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbd2hpY2hdPSIke2JpbmRpcn0vd2hpY2giCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RlYmlhbnV0aWxzL2RlYmlhbnV0aWxzXzQuOC4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RlYmlhbnV0aWxzL2RlYmlhbnV0aWxzXzQuOC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMmM2M2VlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kZWJpYW51dGlscy9kZWJpYW51dGlsc180LjguMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLVNVTU1BUlkgPSAiTWlzY2VsbGFuZW91cyB1dGlsaXRpZXMgc3BlY2lmaWMgdG8gRGViaWFuIgotU0VDVElPTiA9ICJiYXNlIgotTElDRU5TRSA9ICJHUEx2MiAmIFNNQUlMX0dQTCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RlYmlhbi9jb3B5cmlnaHQ7bWQ1PWYwMWE1MjAzZDUwNTEyZmM0ODMwYjQzMzJiNjk2YTlmIgotCi1TUkNfVVJJID0gImh0dHA6Ly9zbmFwc2hvdC5kZWJpYW4ub3JnL2FyY2hpdmUvZGViaWFuLzIwMTYxMTE4VDAzMzAxOVovcG9vbC9tYWluL2QvJHtCUE59LyR7QlBOfV8ke1BWfS50YXIueHoiCi0jIHRoZSBwYWNrYWdlIGlzIHRha2VuIGZyb20gc25hcHNob3RzLmRlYmlhbi5vcmc7IHRoYXQgc291cmNlIGlzIHN0YXRpYyBhbmQgZ29lcyBzdGFsZQotIyBzbyB3ZSBjaGVjayB0aGUgbGF0ZXN0IHVwc3RyZWFtIGZyb20gYSBkaXJlY3RvcnkgdGhhdCBkb2VzIGdldCB1cGRhdGVkCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiJHtERUJJQU5fTUlSUk9SfS9tYWluL2QvJHtCUE59LyIKLQotCi1TUkNfVVJJW21kNXN1bV0gPSAiNDQwODNmYzY2MTY0NzQ2ODgwZGZmZDMwZDYyZDA1NGIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmMzOTVjMGJkY2ZlODlkZTMwODI4YjFkMjVjYzU1NDlkZWQ1MjI1YTZkMzYyNWZiY2IyY2MwODgxZWY1ZjAyNiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLWFsdGVybmF0aXZlcwotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICBzZWQgLWkgLWUgJ3M6dGVtcGZpbGUuMSB3aGljaC4xOndoaWNoLjE6ZycgJHtTfS9NYWtlZmlsZS5hbQotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpZiBbICIke2Jhc2VfYmluZGlyfSIgIT0gIiR7YmluZGlyfSIgXTsgdGhlbgotICAgICAgICAjIERlYmlhbiBwbGFjZXMgc29tZSB1dGlscyBpbnRvICR7YmFzZV9iaW5kaXJ9IGFzIGRvZXMgYnVzeWJveAotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfQotICAgICAgICBmb3IgYXBwIGluIHJ1bi1wYXJ0cyB0ZW1wZmlsZTsgZG8KLSAgICAgICAgICAgIG12ICR7RH0ke2JpbmRpcn0vJGFwcCAke0R9JHtiYXNlX2JpbmRpcn0vJGFwcAotICAgICAgICBkb25lCi0gICAgZmkKLX0KLQotIyBOb3RlIHRoYXQgd2UgcGFja2FnZSB0aGUgdXBkYXRlLWFsdGVybmF0aXZlcyBuYW1lLgotIwotUEFDS0FHRVMgPSsgIiR7UE59LXJ1bi1wYXJ0cyIKLUZJTEVTXyR7UE59LXJ1bi1wYXJ0cyA9ICIke2Jhc2VfYmluZGlyfS9ydW4tcGFydHMuZGViaWFudXRpbHMiCi0KLVJERVBFTkRTXyR7UE59ICs9ICIke1BOfS1ydW4tcGFydHMiCi1SREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgotCi1BTFRFUk5BVElWRV9QUklPUklUWT0iMzAiCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJhZGQtc2hlbGwgaW5zdGFsbGtlcm5lbCByZW1vdmUtc2hlbGwgc2F2ZWxvZyB0ZW1wZmlsZSB3aGljaCIKLUFMVEVSTkFUSVZFXyR7UE59LXJ1bi1wYXJ0cyA9ICJydW4tcGFydHMiCi0KLUFMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJ3aGljaC4xIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3doaWNoLjFdID0gIiR7bWFuZGlyfS9tYW4xL3doaWNoLjEiCi0KLUFMVEVSTkFUSVZFX0xJTktfTkFNRVthZGQtc2hlbGxdPSIke3NiaW5kaXJ9L2FkZC1zaGVsbCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtpbnN0YWxsa2VybmVsXT0iJHtzYmluZGlyfS9pbnN0YWxsa2VybmVsIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3JlbW92ZS1zaGVsbF09IiR7c2JpbmRpcn0vcmVtb3ZlLXNoZWxsIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3J1bi1wYXJ0c109IiR7YmFzZV9iaW5kaXJ9L3J1bi1wYXJ0cyIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtzYXZlbG9nXT0iJHtiaW5kaXJ9L3NhdmVsb2ciCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbdGVtcGZpbGVdPSIke2Jhc2VfYmluZGlyfS90ZW1wZmlsZSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVt3aGljaF09IiR7YmluZGlyfS93aGljaCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ2RibS9maWxlcy9wdGVzdC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nZGJtL2ZpbGVzL3B0ZXN0LnBhdGNoCmluZGV4IDY1MjM2ZmIuLmI5NDYxYmUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nZGJtL2ZpbGVzL3B0ZXN0LnBhdGNoCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nZGJtL2ZpbGVzL3B0ZXN0LnBhdGNoCkBAIC0xLDMwICsxLDQxIEBACi1BZGQgaW5zdGFsbC1wdGVzdCBydWxlcy4KK0Zyb20gNGU0YjcwYTRhM2RjZjFmZGJlZTllNjhiZWQzYjYyZjQyYjE5N2EzYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEpvc2VwIFB1aWdkZW1vbnQgPGpvc2VwLnB1aWdkZW1vbnRAZW5lYS5jb20+CitEYXRlOiBTdW4sIDQgTWF5IDIwMTQgMTY6MDI6MDcgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gQWRkIGluc3RhbGwtcHRlc3QgcnVsZXMuCiAKIFNpZ25lZC1vZmYtYnk6IEpvc2VwIFB1aWdkZW1vbnQgPGpvc2VwLnB1aWdkZW1vbnRAZW5lYS5jb20+CiBTaWduZWQtb2ZmLWJ5OiBNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGVuZWEuY29tPgogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKLWRpZmYgLXVyIGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQotLS0tIGEvTWFrZWZpbGUuYW0JMjAxMS0wOC0xNiAxMDoxMzoxMC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBiL01ha2VmaWxlLmFtCTIwMTMtMDQtMTIgMTg6MDI6MTYuNDczNzE1ODczICswMjAwCi1AQCAtMzEsMyArMzEsOCBAQAotIAlkPWBkYXRlICcrJWQvJW0vJVknYDsgXAotIAlzZWQgJ3N8L1wqQERJU1RfREFURUBcKi98IiciJCRkIicifCcgJChzcmNkaXIpL3NyYy92ZXJzaW9uLmMgPiBcCi0gCQkkKGRpc3RkaXIpL3NyYy92ZXJzaW9uLmMKKy0tLQorIE1ha2VmaWxlLmFtICAgICAgIHwgIDUgKysrKysKKyB0ZXN0cy9NYWtlZmlsZS5hbSB8IDEyICsrKysrKysrKysrLQorIDIgZmlsZXMgY2hhbmdlZCwgMTYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQoraW5kZXggNGNkYzczNC4uMjRiOTlmMCAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmFtCisrKysgYi9NYWtlZmlsZS5hbQorQEAgLTQ1LDMgKzQ1LDggQEAgQ2hhbmdlTG9nOgorICAgICAgICAgICAgICAgICBhd2sgLWYgJCh0b3Bfc3JjZGlyKS9naXQyY2hnLmF3ayAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAtdiBhcHBlbmQ9JCh0b3Bfc3JjZGlyKS8kKHByZXZfY2hhbmdlX2xvZykgPiBDaGFuZ2VMb2c7IFwKKyAgICAgICAgIGZpCiArCiAraW5zdGFsbC1wdGVzdDoKICsJQGZvciBzdWJkaXIgaW4gJChTVUJESVJTKTsgZG8gXAogKwkJJChNQUtFKSAtQyAkJHN1YmRpciBERVNURElSPSQoREVTVERJUikvJCRzdWJkaXIgJEA7IFwKICsJZG9uZQotZGlmZiAtdXIgYS90ZXN0cy9NYWtlZmlsZS5hbSBiL3Rlc3RzL01ha2VmaWxlLmFtCi0tLS0gYS90ZXN0cy9NYWtlZmlsZS5hbQkyMDExLTExLTExIDE5OjM5OjQyLjAwMDAwMDAwMCArMDEwMAotKysrIGIvdGVzdHMvTWFrZWZpbGUuYW0JMjAxMy0wNC0xMiAxODozMDo1Ny4wNjYzMDEwMzcgKzAyMDAKLUBAIC0xMzIsNCArMTMyLDE0IEBACitkaWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuYW0gYi90ZXN0cy9NYWtlZmlsZS5hbQoraW5kZXggM2RiYjU4MC4uMjJmZmM0NCAxMDA2NDQKKy0tLSBhL3Rlc3RzL01ha2VmaWxlLmFtCisrKysgYi90ZXN0cy9NYWtlZmlsZS5hbQorQEAgLTEzMCw0ICsxMzAsMTQgQEAgZHRmZXRjaF9MREFERCA9IC4uL3NyYy9saWJnZGJtLmxhIC4uL2NvbXBhdC9saWJnZGJtX2NvbXBhdC5sYQogIGR0ZGVsX0xEQUREID0gLi4vc3JjL2xpYmdkYm0ubGEgLi4vY29tcGF0L2xpYmdkYm1fY29tcGF0LmxhCiAgZF9jcmVhdF9jZV9MREFERCA9IC4uL3NyYy9saWJnZGJtLmxhIC4uL2NvbXBhdC9saWJnZGJtX2NvbXBhdC5sYQogIAorLQogK2J1aWxkdGVzdHM6ICQoY2hlY2tfUFJPR1JBTVMpICQoVEVTVFNVSVRFKQotIAorKwogK2luc3RhbGwtcHRlc3Q6ICQoY2hlY2tfUFJPR1JBTVMpICQoVEVTVFNVSVRFKQogKwlAJChJTlNUQUxMKSAtZCAkKERFU1RESVIpCiArCUBmb3IgZmlsZSBpbiAkXjsgZG8gXApAQCAtMzQsMyArNDUsNiBAQAogKwkJCSQoSU5TVEFMTF9QUk9HUkFNKSAkJGZpbGUgJChERVNURElSKSA7IFwKICsJCWZpIFwKICsJZG9uZQorLS0gCisyLjExLjAKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dkYm0vZ2RibV8xLjEyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dkYm0vZ2RibV8xLjEyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMzgwMDczLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nZGJtL2dkYm1fMS4xMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLVNVTU1BUlkgPSAiS2V5L3ZhbHVlIGRhdGFiYXNlIGxpYnJhcnkgd2l0aCBleHRlbnNpYmxlIGhhc2hpbmciCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZ2RibS8iCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MjQxZGExYjlmZTQyZTY0MmNiYjJjMjRkNWUwYzRkMjQiCi0KLQotU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2dkYm0vZ2RibS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL3B0ZXN0LnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI5Y2U5NmZmNGM5OWU3NDI5NWVhMTkwNDA5MzFjOGZiOSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkOTdiMjE2NmVlODY3ZmQ2Y2E1YzAyMmVmZWU4MDcwMmQ2ZjMwZGQ2NmFmMGUwM2VkMDkyMjg1YzNhZjliY2VhIgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gbGliX3BhY2thZ2UgcHRlc3QKLQotIyBOZWVkZWQgZm9yIGRibSBweXRob24gbW9kdWxlCi1FWFRSQV9PRUNPTkYgPSAiLWVuYWJsZS1saWJnZGJtLWNvbXBhdCIKLQotIyBTdG9wIHByZXNlbmNlIG9mIGRibS9uYmRtIG9uIHRoZSBob3N0IGNvbnRhbWluYXRpbmcgYnVpbGRzCi1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfbGliX25kYm1fbWFpbj1ubyBhY19jdl9saWJfZGJtX21haW49bm8iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotICAgICMgQ3JlYXRlIGEgc3ltbGluayB0byBuZGJtLmggYW5kIGdkYm0uaCBpbiBpbmNsdWRlL2dkYm0gdG8gbGV0IG90aGVyIHBhY2thZ2VzIHRvIGZpbmQKLSAgICAjIHRoZXNlIGhlYWRlcnMKLSAgICBpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9L2dkYm0KLSAgICBsbiAtc2YgLi4vbmRibS5oICR7RH0vJHtpbmNsdWRlZGlyfS9nZGJtL25kYm0uaAotICAgIGxuIC1zZiAuLi9nZGJtLmggJHtEfS8ke2luY2x1ZGVkaXJ9L2dkYm0vZ2RibS5oCi19Ci0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJkaWZmdXRpbHMiCi0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0gICAgb2VfcnVubWFrZSAtQyB0ZXN0cyBidWlsZHRlc3RzCi19Ci0KLVBBQ0tBR0VTID0rICIke1BOfS1jb21wYXQgXAotICAgICAgICAgICAgIgotRklMRVNfJHtQTn0tY29tcGF0ID0gIiR7bGliZGlyfS9saWJnZGJtX2NvbXBhdCR7U09MSUJTfSBcCi0gICAgICAgICAgICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ2RibS9nZGJtXzEuMTMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ2RibS9nZGJtXzEuMTMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGJiZTE0NwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nZGJtL2dkYm1fMS4xMy5iYgpAQCAtMCwwICsxLDQzIEBACitTVU1NQVJZID0gIktleS92YWx1ZSBkYXRhYmFzZSBsaWJyYXJ5IHdpdGggZXh0ZW5zaWJsZSBoYXNoaW5nIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2dkYm0vIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTI0MWRhMWI5ZmU0MmU2NDJjYmIyYzI0ZDVlMGM0ZDI0IgorCisKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9nZGJtL2dkYm0tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9wdGVzdC5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiODkyOWRjZGEyYThkZTNmZDIzNjdiZGJmNjY3NjkzNzYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWQyNTJjYmQ3ZDc5M2Y3YjEyYmNjZWFkZGRhOThkMjU3YzE0ZjRkMTg5MGQ4NTFjMzg2YzM3MjA3MDAwYTI1MyIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvIGxpYl9wYWNrYWdlIHB0ZXN0CisKKyMgTmVlZGVkIGZvciBkYm0gcHl0aG9uIG1vZHVsZQorRVhUUkFfT0VDT05GID0gIi1lbmFibGUtbGliZ2RibS1jb21wYXQiCisKKyMgU3RvcCBwcmVzZW5jZSBvZiBkYm0vbmJkbSBvbiB0aGUgaG9zdCBjb250YW1pbmF0aW5nIGJ1aWxkcworQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X2xpYl9uZGJtX21haW49bm8gYWNfY3ZfbGliX2RibV9tYWluPW5vIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKyAgICAjIENyZWF0ZSBhIHN5bWxpbmsgdG8gbmRibS5oIGFuZCBnZGJtLmggaW4gaW5jbHVkZS9nZGJtIHRvIGxldCBvdGhlciBwYWNrYWdlcyB0byBmaW5kCisgICAgIyB0aGVzZSBoZWFkZXJzCisgICAgaW5zdGFsbCAtZCAke0R9JHtpbmNsdWRlZGlyfS9nZGJtCisgICAgbG4gLXNmIC4uL25kYm0uaCAke0R9LyR7aW5jbHVkZWRpcn0vZ2RibS9uZGJtLmgKKyAgICBsbiAtc2YgLi4vZ2RibS5oICR7RH0vJHtpbmNsdWRlZGlyfS9nZGJtL2dkYm0uaAorfQorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiZGlmZnV0aWxzIgorCitkb19jb21waWxlX3B0ZXN0KCkgeworICAgIG9lX3J1bm1ha2UgLUMgdGVzdHMgYnVpbGR0ZXN0cworfQorCitQQUNLQUdFUyA9KyAiJHtQTn0tY29tcGF0IFwKKyAgICAgICAgICAgICIKK0ZJTEVTXyR7UE59LWNvbXBhdCA9ICIke2xpYmRpcn0vbGliZ2RibV9jb21wYXQke1NPTElCU30gXAorICAgICAgICAgICAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXBfNi4xLjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcF82LjEuMi5iYgppbmRleCA1ZTY1MDc1Li5iMDA4NzEwIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcF82LjEuMi5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcF82LjEuMi5iYgpAQCAtMjUsOCArMjUsMTEgQEAKIFBBQ0tBR0VTID0rICJsaWJnbXB4eCIKIEZJTEVTX2xpYmdtcHh4ID0gIiR7bGliZGlyfS9saWJnbXB4eCR7U09MSUJTfSIKIAotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgewotICAgICAgICBzZWQgLWkgInN8LS1zeXNyb290PSR7U1RBR0lOR19ESVJfSE9TVH18fGciICR7RH0ke2luY2x1ZGVkaXJ9L2dtcC5oCitkb19pbnN0YWxsX3ByZXBlbmRfY2xhc3MtdGFyZ2V0KCkgeworICAgICAgICBzZWQgLWkgXAorICAgICAgICAtZSAic3wtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9IT1NUfXx8ZyIgXAorICAgICAgICAtZSAic3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnIiBcCisgICAgICAgICAke0J9L2dtcC5oCiB9CiAKIFNTVEFURV9TQ0FOX0ZJTEVTICs9ICJnbXAuaCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZy8wMDAxLVVzZS1wa2ctY29uZmlnLXRvLWZpbmQtcHRoLWluc3RlYWQtb2YtcHRoLWNvbmZpZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZy8wMDAxLVVzZS1wa2ctY29uZmlnLXRvLWZpbmQtcHRoLWluc3RlYWQtb2YtcHRoLWNvbmZpZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YzljMDIyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnLzAwMDEtVXNlLXBrZy1jb25maWctdG8tZmluZC1wdGgtaW5zdGVhZC1vZi1wdGgtY29uZmlnLnBhdGNoCkBAIC0wLDAgKzEsMTA1IEBACitGcm9tIDU5YTNjNzZkNDAxNmZmYzYxNWYxYzQ1MTg0ZjRjNjgyMDA2MWQ2OWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KK0RhdGU6IFdlZCwgMTYgQXVnIDIwMTcgMTE6MTQ6MTIgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzRdIFVzZSBwa2ctY29uZmlnIHRvIGZpbmQgcHRoIGluc3RlYWQgb2YgcHRoLWNvbmZpZy4KKworVXBzdHJlYW0tU3RhdHVzOiBEZW5pZWQKK1tub3Qgc3VibWl0dGVkIGJ1dCB0aGV5J3ZlIGJlZW4gY2xlYXIgdGhleSBkb24ndCB3YW50IGEgcGtnLWNvbmZpZworZGVwZW5kZW5jeV0KKworUlAgMjAxNC81LzIyCisKK1NpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgorCitSZWJhc2UgdG8gMi4xLjIzCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBtNC9nbnVwZy1wdGgubTQgfCA1MyArKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDQ1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbTQvZ251cGctcHRoLm00IGIvbTQvZ251cGctcHRoLm00CitpbmRleCA2ZGM5ZTBlLi41ODkyNTMxIDEwMDY0NAorLS0tIGEvbTQvZ251cGctcHRoLm00CisrKysgYi9tNC9nbnVwZy1wdGgubTQKK0BAIC0xNywzMyArMTcsOSBAQCBkbmwgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCisgIyBUYWtlbiBhbmQgbW9kaWZpZWQgZnJvbSB0aGUgbTQgbWFjcm9zIHdoaWNoIGNvbWUgd2l0aCBQdGguCisgQUNfREVGVU4oW0dOVVBHX1BUSF9WRVJTSU9OX0NIRUNLXSwKKyAgIFsKKy0gICAgX3B0aF92ZXJzaW9uPWAkUFRIX0NPTkZJRyAtLXZlcnNpb24gfCBhd2sgJ05SPT0xIHtwcmludCBbJF0zfSdgCisgICAgIF9yZXFfdmVyc2lvbj0iaWZlbHNlKFskMV0sLDEuMi4wLCQxKSIKKysgICAgUEtHX0NIRUNLX01PRFVMRVMoUFRILCBbcHRoID49ICRfcmVxX3ZlcnNpb25dLCBbaGF2ZV9wdGg9eWVzXSwgW2hhdmVfcHRoPW5vXSkKKyAKKy0gICAgQUNfTVNHX0NIRUNLSU5HKGZvciBQVEggLSB2ZXJzaW9uID49ICRfcmVxX3ZlcnNpb24pCistICAgIGZvciBfdmFyIGluIF9wdGhfdmVyc2lvbiBfcmVxX3ZlcnNpb247IGRvCistICAgICAgICBldmFsICJfdmFsPVwiXCQke192YXJ9XCIiCistICAgICAgICBfbWFqb3I9YGVjaG8gJF92YWwgfCBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXClcKFtbYWIuXV1cKVwoW1swLTldXSpcKS9cMS8nYAorLSAgICAgICAgX21pbm9yPWBlY2hvICRfdmFsIHwgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpXChbW2FiLl1dXClcKFtbMC05XV0qXCkvXDIvJ2AKKy0gICAgICAgIF9ydHlwZT1gZWNobyAkX3ZhbCB8IHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKVwoW1thYi5dXVwpXChbWzAtOV1dKlwpL1wzLydgCistICAgICAgICBfbWljcm89YGVjaG8gJF92YWwgfCBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXClcKFtbYWIuXV1cKVwoW1swLTldXSpcKS9cNC8nYAorLSAgICAgICAgY2FzZSAkX3J0eXBlIGluCistICAgICAgICAgICAgImEiICkgX3J0eXBlPTAgOzsKKy0gICAgICAgICAgICAiYiIgKSBfcnR5cGU9MSA7OworLSAgICAgICAgICAgICIuIiApIF9ydHlwZT0yIDs7CistICAgICAgICBlc2FjCistICAgICAgICBfaGV4PWBlY2hvIGR1bW15IHwgYXdrICd7IHByaW50ZigiJWQlMDJkJTFkJTAyZCIsIG1ham9yLCBtaW5vciwgcnR5cGUsIG1pY3JvKTsgfScgXAorLSAgICAgICAgICAgICAgIm1ham9yPSRfbWFqb3IiICJtaW5vcj0kX21pbm9yIiAicnR5cGU9JF9ydHlwZSIgIm1pY3JvPSRfbWljcm8iYAorLSAgICAgICAgZXZhbCAiJHtfdmFyfV9oZXg9XCJcJF9oZXhcIiIKKy0gICAgZG9uZQorLSAgICBoYXZlX3B0aD1ubworLSAgICBpZiB0ZXN0ICIuJF9wdGhfdmVyc2lvbl9oZXgiICE9IC47IHRoZW4KKy0gICAgICAgIGlmIHRlc3QgIi4kX3JlcV92ZXJzaW9uX2hleCIgIT0gLjsgdGhlbgorLSAgICAgICAgICAgIGlmIHRlc3QgJF9wdGhfdmVyc2lvbl9oZXggLWdlICRfcmVxX3ZlcnNpb25faGV4OyB0aGVuCistICAgICAgICAgICAgICAgIGhhdmVfcHRoPXllcworLSAgICAgICAgICAgIGZpCistICAgICAgICBmaQorLSAgICBmaQorICAgICBpZiB0ZXN0ICRoYXZlX3B0aCA9IHllczsgdGhlbgorICAgICAgICBBQ19NU0dfUkVTVUxUKHllcykKKyAgICAgICAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIFBUSCBpbnN0YWxsYXRpb24gaXMgc2FuZV0pCitAQCAtNTEsOSArMjcsOSBAQCBBQ19ERUZVTihbR05VUEdfUFRIX1ZFUlNJT05fQ0hFQ0tdLAorICAgICAgICAgIF9nbnVwZ19wdGhfc2F2ZV9jZmxhZ3M9JENGTEFHUworICAgICAgICAgIF9nbnVwZ19wdGhfc2F2ZV9sZGZsYWdzPSRMREZMQUdTCisgICAgICAgICAgX2dudXBnX3B0aF9zYXZlX2xpYnM9JExJQlMKKy0gICAgICAgICBDRkxBR1M9IiRDRkxBR1MgYCRQVEhfQ09ORklHIC0tY2ZsYWdzYCIKKy0gICAgICAgICBMREZMQUdTPSIkTERGTEFHUyBgJFBUSF9DT05GSUcgLS1sZGZsYWdzYCIKKy0gICAgICAgICBMSUJTPSIkTElCUyBgJFBUSF9DT05GSUcgLS1saWJzIC0tYWxsYCIKKysgICAgICAgICBDRkxBR1M9IiRDRkxBR1MgJFBUSF9DRkxBR1MiCisrICAgICAgICAgTERGTEFHUz0iJExERkxBR1MgJFBUSF9MREZMQUdTIgorKyAgICAgICAgIExJQlM9IiRMSUJTICRQVEhfTElCUyIKKyAgICAgICAgICBBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFsjaW5jbHVkZSA8cHRoLmg+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1sgcHRoX2luaXQgKCk7XV0pXSwKK0BAIC04MCwyNiArNTYsMTMgQEAgQUNfREVGVU4oW0dOVVBHX1BUSF9WRVJTSU9OX0NIRUNLXSwKKyAjIFBUSF9DTEZBR1MgYW5kIFBUSF9MSUJTIGFyZSBBU19TVUJTVC4KKyAjCisgQUNfREVGVU4oW0dOVVBHX1BBVEhfUFRIXSwKKy1bIEFDX0FSR19XSVRIKHB0aC1wcmVmaXgsCistICAgICAgICAgICAgIEFDX0hFTFBfU1RSSU5HKFstLXdpdGgtcHRoLXByZWZpeD1QRlhdLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwcmVmaXggd2hlcmUgR05VIFB0aCBpcyBpbnN0YWxsZWQgKG9wdGlvbmFsKV0pLAorLSAgICAgcHRoX2NvbmZpZ19wcmVmaXg9IiR3aXRodmFsIiwgcHRoX2NvbmZpZ19wcmVmaXg9IiIpCistICBpZiB0ZXN0IHgkcHRoX2NvbmZpZ19wcmVmaXggIT0geCA7IHRoZW4KKy0gICAgIFBUSF9DT05GSUc9IiRwdGhfY29uZmlnX3ByZWZpeC9iaW4vcHRoLWNvbmZpZyIKKy0gIGZpCistICBBQ19QQVRIX1BST0coUFRIX0NPTkZJRywgcHRoLWNvbmZpZywgbm8pCisrWworICAgdG1wPWlmZWxzZShbJDFdLCAsMS4zLjcsJDEpCistICBpZiB0ZXN0ICIkUFRIX0NPTkZJRyIgIT0gIm5vIjsgdGhlbgorLSAgICBHTlVQR19QVEhfVkVSU0lPTl9DSEVDSygkdG1wKQorLSAgICBpZiB0ZXN0ICRoYXZlX3B0aCA9IHllczsgdGhlbiAgICAgIAorLSAgICAgICBQVEhfQ0ZMQUdTPWAkUFRIX0NPTkZJRyAtLWNmbGFnc2AKKy0gICAgICAgUFRIX0xJQlM9YCRQVEhfQ09ORklHIC0tbGRmbGFnc2AKKy0gICAgICAgUFRIX0xJQlM9IiRQVEhfTElCUyBgJFBUSF9DT05GSUcgLS1saWJzIC0tYWxsYCIKKy0gICAgICAgQUNfREVGSU5FKEhBVkVfUFRILCAxLAorKyAgR05VUEdfUFRIX1ZFUlNJT05fQ0hFQ0soJHRtcCkKKysgIGlmIHRlc3QgJGhhdmVfcHRoID0geWVzOyB0aGVuCisrICAgICAgQUNfREVGSU5FKEhBVkVfUFRILCAxLAorICAgICAgICAgICAgICAgICBbRGVmaW5lZCBpZiB0aGUgR05VIFB0aCBpcyBhdmFpbGFibGVdKQorLSAgICBmaQorICAgZmkKKyAgIEFDX1NVQlNUKFBUSF9DRkxBR1MpCisgICBBQ19TVUJTVChQVEhfTElCUykKKyBdKQorLQorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZy8wMDAyLXVzZS1wa2djb25maWctaW5zdGVhZC1vZi1ucHRoLWNvbmZpZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZy8wMDAyLXVzZS1wa2djb25maWctaW5zdGVhZC1vZi1ucHRoLWNvbmZpZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZDg2ZTVjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnLzAwMDItdXNlLXBrZ2NvbmZpZy1pbnN0ZWFkLW9mLW5wdGgtY29uZmlnLnBhdGNoCkBAIC0wLDAgKzEsODUgQEAKK0Zyb20gNTNjMmFlYzJlMTNmNGUyZDA5YmU3MTQ4ODY5Yzg2MmYwN2RmZGQ0ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFNhdWwgV29sZCA8c2d3QGxpbnV4LmludGVsLmNvbT4KK0RhdGU6IFdlZCwgMTYgQXVnIDIwMTcgMTE6MTY6MzAgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzRdIHVzZSBwa2djb25maWcgaW5zdGVhZCBvZiBucHRoIGNvbmZpZworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29wZW5lbWJlZGRlZCBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogU2F1bCBXb2xkIDxzZ3dAbGludXguaW50ZWwuY29tPgorCitSZWJhc2UgdG8gMi4xLjIzCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBtNC9ucHRoLm00IHwgMzQgKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDI2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbTQvbnB0aC5tNCBiL200L25wdGgubTQKK2luZGV4IDE3YzI2NDQuLjE1YTkzMWIgMTAwNjQ0CistLS0gYS9tNC9ucHRoLm00CisrKysgYi9tNC9ucHRoLm00CitAQCAtMTcsMTAgKzE3LDEwIEBAIEFDX0RFRlVOKFtfQU1fUEFUSF9OUFRIX0NPTkZJR10sCisgICBpZiB0ZXN0ICJ4JG5wdGhfY29uZmlnX3ByZWZpeCIgIT0geCA7IHRoZW4KKyAgICAgICBOUFRIX0NPTkZJRz0iJG5wdGhfY29uZmlnX3ByZWZpeC9iaW4vbnB0aC1jb25maWciCisgICBmaQorLSAgQUNfUEFUSF9QUk9HKE5QVEhfQ09ORklHLCBucHRoLWNvbmZpZywgbm8pCisrICBBQ19QQVRIX1BST0coUEtHQ09ORklHLCBwa2ctY29uZmlnLCBubykKKyAKKy0gIGlmIHRlc3QgIiROUFRIX0NPTkZJRyIgIT0gIm5vIiA7IHRoZW4KKy0gICAgbnB0aF92ZXJzaW9uPWAkTlBUSF9DT05GSUcgLS12ZXJzaW9uYAorKyAgaWYgdGVzdCAiJFBLR0NPTkZJRyIgIT0gIm5vIiA7IHRoZW4KKysgICAgbnB0aF92ZXJzaW9uPWAkUEtHQ09ORklHIC0tbW9kdmVyc2lvbiBucHRoYAorICAgZmkKKyAgIG5wdGhfdmVyc2lvbl9tYWpvcj1gZWNobyAkbnB0aF92ZXJzaW9uIHwgXAorICAgICAgICAgICAgICAgIHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKS4qL1wxLydgCitAQCAtNDUsNyArNDUsNyBAQCBBQ19ERUZVTihbQU1fUEFUSF9OUFRIXSwKKyAKKyAgIEFDX01TR19DSEVDS0lORyhmb3IgTlBUSCAtIHZlcnNpb24gPj0gJG1pbl9ucHRoX3ZlcnNpb24pCisgICBvaz1ubworLSAgaWYgdGVzdCAiJE5QVEhfQ09ORklHIiAhPSAibm8iIDsgdGhlbgorKyAgaWYgdGVzdCAiJFBLR0NPTkZJRyIgIT0gIm5vIiA7IHRoZW4KKyAgICAgcmVxX21ham9yPWBlY2hvICRtaW5fbnB0aF92ZXJzaW9uIHwgXAorICAgICAgICAgICAgICAgIHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKS9cMS8nYAorICAgICByZXFfbWlub3I9YGVjaG8gJG1pbl9ucHRoX3ZlcnNpb24gfCBcCitAQCAtNjYsMjggKzY2LDkgQEAgQUNfREVGVU4oW0FNX1BBVEhfTlBUSF0sCisgICBmaQorICAgaWYgdGVzdCAkb2sgPSB5ZXM7IHRoZW4KKyAgICAgQUNfTVNHX1JFU1VMVChbeWVzICgkbnB0aF92ZXJzaW9uKV0pCistICBlbHNlCistICAgIEFDX01TR19SRVNVTFQobm8pCistICBmaQorLSAgaWYgdGVzdCAkb2sgPSB5ZXM7IHRoZW4KKy0gICAgICMgSWYgd2UgaGF2ZSBhIHJlY2VudCBOUFRILCB3ZSBzaG91bGQgYWxzbyBjaGVjayB0aGF0IHRoZQorLSAgICAgIyBBUEkgaXMgY29tcGF0aWJsZS4KKy0gICAgIGlmIHRlc3QgIiRyZXFfbnB0aF9hcGkiIC1ndCAwIDsgdGhlbgorLSAgICAgICAgdG1wPWAkTlBUSF9DT05GSUcgLS1hcGktdmVyc2lvbiAyPi9kZXYvbnVsbCB8fCBlY2hvIDBgCistICAgICAgICBpZiB0ZXN0ICIkdG1wIiAtZ3QgMCA7IHRoZW4KKy0gICAgICAgICAgIEFDX01TR19DSEVDS0lORyhbTlBUSCBBUEkgdmVyc2lvbl0pCistICAgICAgICAgICBpZiB0ZXN0ICIkcmVxX25wdGhfYXBpIiAtZXEgIiR0bXAiIDsgdGhlbgorLSAgICAgICAgICAgICBBQ19NU0dfUkVTVUxUKFtva2F5XSkKKy0gICAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICAgb2s9bm8KKy0gICAgICAgICAgICAgQUNfTVNHX1JFU1VMVChbZG9lcyBub3QgbWF0Y2guIHdhbnQ9JHJlcV9ucHRoX2FwaSBnb3Q9JHRtcF0pCistICAgICAgICAgICBmaQorLSAgICAgICAgZmkKKy0gICAgIGZpCistICBmaQorLSAgaWYgdGVzdCAkb2sgPSB5ZXM7IHRoZW4KKy0gICAgTlBUSF9DRkxBR1M9YCROUFRIX0NPTkZJRyAtLWNmbGFnc2AKKy0gICAgTlBUSF9MSUJTPWAkTlBUSF9DT05GSUcgLS1saWJzYAorKyAgICBOUFRIX0NGTEFHUz1gJFBLR0NPTkZJRyAtLWNmbGFncyBucHRoYAorKyAgICBOUFRIX0xJQlM9YCRQS0dDT05GSUcgLS1saWJzIG5wdGhgCisrICAgIEFDX01TR19XQVJOKFtbR09UIEhFUkUgLSAkTlBUSF9MSUJTIF1dKQorICAgICBpZmVsc2UoWyQyXSwgLCA6LCBbJDJdKQorICAgICBucHRoX2NvbmZpZ19ob3N0PWAkTlBUSF9DT05GSUcgLS1ob3N0IDI+L2Rldi9udWxsIHx8IGVjaG8gbm9uZWAKKyAgICAgaWYgdGVzdCB4IiRucHRoX2NvbmZpZ19ob3N0IiAhPSB4bm9uZSA7IHRoZW4KK0BAIC0xMDMsNiArODQsNyBAQCBBQ19ERUZVTihbQU1fUEFUSF9OUFRIXSwKKyAgICAgICBmaQorICAgICBmaQorICAgZWxzZQorKyAgICBBQ19NU0dfUkVTVUxUKG5vKQorICAgICBOUFRIX0NGTEFHUz0iIgorICAgICBOUFRIX0xJQlM9IiIKKyAgICAgaWZlbHNlKFskM10sICwgOiwgWyQzXSkKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGcvMDAwMy1kaXJtbmdyLXVzZXMtbGliZ3BnLWVycm9yLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnLzAwMDMtZGlybW5nci11c2VzLWxpYmdwZy1lcnJvci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTc5OGVmCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnLzAwMDMtZGlybW5nci11c2VzLWxpYmdwZy1lcnJvci5wYXRjaApAQCAtMCwwICsxLDMyIEBACitGcm9tIDljMzg1OGZmZGE2MjQ2YmY5ZTFlNmFlZWI5MjA1MzJhNTZiMTk0MDggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBTYXVsIFdvbGQgPHNnd0BsaW51eC5pbnRlbC5jb20+CitEYXRlOiBXZWQsIDE2IEF1ZyAyMDE3IDExOjE4OjAxICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMy80XSBkaXJtbmdyIHVzZXMgbGliZ3BnIGVycm9yCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogU2F1bCBXb2xkIDxzZ3dAbGludXguaW50ZWwuY29tPgorCitSZWJhc2UgdG8gMi4xLjIzCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGRpcm1uZ3IvTWFrZWZpbGUuYW0gfCAzICsrLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2Rpcm1uZ3IvTWFrZWZpbGUuYW0gYi9kaXJtbmdyL01ha2VmaWxlLmFtCitpbmRleCBiNDA0MTY1Li5kM2Y5MTZlIDEwMDY0NAorLS0tIGEvZGlybW5nci9NYWtlZmlsZS5hbQorKysrIGIvZGlybW5nci9NYWtlZmlsZS5hbQorQEAgLTgyLDcgKzgyLDggQEAgZW5kaWYKKyBkaXJtbmdyX0xEQUREID0gJChsaWJjb21tb25wdGgpIFwKKyAgICAgICAgICQoRE5TTElCUykgJChMSUJBU1NVQU5fTElCUykgXAorIAkkKExJQkdDUllQVF9MSUJTKSAkKEtTQkFfTElCUykgJChOUFRIX0xJQlMpIFwKKy0JJChOVEJUTFNfTElCUykgJChMSUJHTlVUTFNfTElCUykgJChMSUJJTlRMKSAkKExJQklDT05WKQorKwkkKE5UQlRMU19MSUJTKSAkKExJQkdOVVRMU19MSUJTKSAkKExJQklOVEwpICQoTElCSUNPTlYpIFwKKysJJChHUEdfRVJST1JfTElCUykKKyBpZiBVU0VfTERBUAorIGRpcm1uZ3JfTERBREQgKz0gJChsZGFwbGlicykKKyBlbmRpZgorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZy8wMDA0LWF1dG9nZW4uc2gtZml4LWZpbmQtdmVyc2lvbi1mb3ItYmV0YS1jaGVja2luZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZy8wMDA0LWF1dG9nZW4uc2gtZml4LWZpbmQtdmVyc2lvbi1mb3ItYmV0YS1jaGVja2luZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kY2Q4NTgyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnLzAwMDQtYXV0b2dlbi5zaC1maXgtZmluZC12ZXJzaW9uLWZvci1iZXRhLWNoZWNraW5nLnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKK0Zyb20gOTE0YWU0YTNmNzUyOWZiMDY5NDY3YmYwZGVkNTdkZDI0ZWUyZTc2MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFdlbnpvbmcgRmFuIDx3ZW56b25nLmZhbkB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAxNiBBdWcgMjAxNyAxMToyMzoyMiArMDgwMAorU3ViamVjdDogW1BBVENIIDQvNF0gYXV0b2dlbi5zaDogZml4IGZpbmQtdmVyc2lvbiBmb3IgYmV0YSBjaGVja2luZworCitmaW5kLXZlcnNpb24gYWx3YXlzIGFzc3VtZXMgdGhhdCBnbnVwZyBpcyBiZXRhIGlmIGF1dG9nZW4uc2ggaXMgcnVuCitvdXQgb2YgZ2l0LXJlcG8uIFRoaXMgZG9lc24ndCB3b3JrIGZvciB1c2VycyB3aG9tIGp1c3QgdGFrZSByZWxlYXNlCit0YXJiYWxsIGFuZCByZS1ydW4gYXV0b2NvbmYgaW4gdGhlaXIgbG9jYWwgYnVpbGQgZGlyLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogV2Vuem9uZyBGYW4gPHdlbnpvbmcuZmFuQHdpbmRyaXZlci5jb20+CisKK1JlYmFzZSB0byAyLjEuMjMKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGF1dG9nZW4uc2ggfCAxIC0KKyAxIGZpbGUgY2hhbmdlZCwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvYXV0b2dlbi5zaCBiL2F1dG9nZW4uc2gKK2luZGV4IGU1YmE1YmYuLjA1ZTBlMTEgMTAwNzU1CistLS0gYS9hdXRvZ2VuLnNoCisrKysgYi9hdXRvZ2VuLnNoCitAQCAtMjQ1LDcgKzI0NSw2IEBAIGlmIFsgIiRteWhvc3QiID0gImZpbmQtdmVyc2lvbiIgXTsgdGhlbgorICAgICAgIHJ2ZD0kKCgweCQoZWNobyAke3Jldn0gfCBkZCBicz0xIGNvdW50PTQgMj4vZGV2L251bGwpKSkKKyAgICAgZWxzZQorICAgICAgIGluZ2l0PW5vCistICAgICAgYmV0YT15ZXMKKyAgICAgICB0bXA9Ii11bmtub3duIgorICAgICAgIHJldj0iMDAwMDAwMCIKKyAgICAgICBydmQ9IjAiCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnL2F1dG9nZW4uc2gtZml4LWZpbmQtdmVyc2lvbi1mb3ItYmV0YS1jaGVja2luZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZy9hdXRvZ2VuLnNoLWZpeC1maW5kLXZlcnNpb24tZm9yLWJldGEtY2hlY2tpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQyNDFiYzMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnL2F1dG9nZW4uc2gtZml4LWZpbmQtdmVyc2lvbi1mb3ItYmV0YS1jaGVja2luZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUZyb20gNzE3Zjk5NGJlMjQ2NmQzNzhlNjYxMWE0NzM5YzYwNmRiNmQwZGM0NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFdlbnpvbmcgRmFuIDx3ZW56b25nLmZhbkB3aW5kcml2ZXIuY29tPgotRGF0ZTogU3VuLCAyNSBPY3QgMjAxNSAyMjo0NDo0NyAtMDQwMAotU3ViamVjdDogW1BBVENIXSBhdXRvZ2VuLnNoOiBmaXggZmluZC12ZXJzaW9uIGZvciBiZXRhIGNoZWNraW5nCi0KLWZpbmQtdmVyc2lvbiBhbHdheXMgYXNzdW1lcyB0aGF0IGdudXBnIGlzIGJldGEgaWYgYXV0b2dlbi5zaCBpcyBydW4KLW91dCBvZiBnaXQtcmVwby4gVGhpcyBkb2Vzbid0IHdvcmsgZm9yIHVzZXJzIHdob20ganVzdCB0YWtlIHJlbGVhc2UKLXRhcmJhbGwgYW5kIHJlLXJ1biBhdXRvY29uZiBpbiB0aGVpciBsb2NhbCBidWlsZCBkaXIuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBXZW56b25nIEZhbiA8d2Vuem9uZy5mYW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGF1dG9nZW4uc2ggfCAxIC0KLSAxIGZpbGUgY2hhbmdlZCwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvYXV0b2dlbi5zaCBiL2F1dG9nZW4uc2gKLWluZGV4IDdlZmZkNTYuLmQ2NzM0MzIgMTAwNzU1Ci0tLS0gYS9hdXRvZ2VuLnNoCi0rKysgYi9hdXRvZ2VuLnNoCi1AQCAtMjI4LDcgKzIyOCw2IEBAIGlmIFsgIiRteWhvc3QiID0gImZpbmQtdmVyc2lvbiIgXTsgdGhlbgotICAgICAgIHJ2ZD0kKCgweCQoZWNobyAke3Jldn0gfCBoZWFkIC1jIDQpKSkKLSAgICAgZWxzZQotICAgICAgIGluZ2l0PW5vCi0tICAgICAgYmV0YT15ZXMKLSAgICAgICB0bXA9Ii11bmtub3duIgotICAgICAgIHJldj0iMDAwMDAwMCIKLSAgICAgICBydmQ9IjAiCi0tLSAKLTEuOS4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZy9kaXJtbmdyLXVzZXMtbGliZ3BnLWVycm9yLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnL2Rpcm1uZ3ItdXNlcy1saWJncGctZXJyb3IucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhZjE5NTUuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnL2Rpcm1uZ3ItdXNlcy1saWJncGctZXJyb3IucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IFNhdWwgV29sZCA8c2d3QGxpbnV4LmludGVsLmNvbT4KLUluZGV4OiBnbnVwZy0yLjEuMC9kaXJtbmdyL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ251cGctMi4xLjAub3JpZy9kaXJtbmdyL01ha2VmaWxlLmFtCi0rKysgZ251cGctMi4xLjAvZGlybW5nci9NYWtlZmlsZS5hbQotQEAgLTc4LDcgKzc4LDggQEAgZW5kaWYKLSBkaXJtbmdyX0xEQUREID0gJChsaWJjb21tb250bHNucHRoKSAkKGxpYmNvbW1vbnB0aCkgXAotICAgICAgICAgJChETlNMSUJTKSAkKExJQkFTU1VBTl9MSUJTKSBcCi0gCSQoTElCR0NSWVBUX0xJQlMpICQoS1NCQV9MSUJTKSAkKE5QVEhfTElCUykgXAotLQkkKE5UQlRMU19MSUJTKSAkKExJQkdOVVRMU19MSUJTKSAkKExJQklOVEwpICQoTElCSUNPTlYpCi0rCSQoTlRCVExTX0xJQlMpICQoTElCR05VVExTX0xJQlMpICQoTElCSU5UTCkgJChMSUJJQ09OVikgXAotKwkkKEdQR19FUlJPUl9MSUJTKQotIGlmIFVTRV9MREFQCi0gZGlybW5ncl9MREFERCArPSAkKGxkYXBsaWJzKQotIGVuZGlmCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGcvcGtnY29uZmlnLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnL3BrZ2NvbmZpZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjk1ODYwMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGcvcGtnY29uZmlnLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAotVXNlIHBrZy1jb25maWcgdG8gZmluZCBwdGggaW5zdGVhZCBvZiBwdGgtY29uZmlnLgotCi1VcHN0cmVhbS1TdGF0dXM6IERlbmllZAotW25vdCBzdWJtaXR0ZWQgYnV0IHRoZXkndmUgYmVlbiBjbGVhciB0aGV5IGRvbid0IHdhbnQgYSBwa2ctY29uZmlnIGRlcGVuZGVuY3ldCi0KLVJQIDIwMTQvNS8yMgotCi1JbmRleDogZ251cGctMi4xLjAvbTQvZ251cGctcHRoLm00Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ251cGctMi4xLjAub3JpZy9tNC9nbnVwZy1wdGgubTQKLSsrKyBnbnVwZy0yLjEuMC9tNC9nbnVwZy1wdGgubTQKLUBAIC0xNywzMyArMTcsOSBAQCBkbmwgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkKLSAjIFRha2VuIGFuZCBtb2RpZmllZCBmcm9tIHRoZSBtNCBtYWNyb3Mgd2hpY2ggY29tZSB3aXRoIFB0aC4KLSBBQ19ERUZVTihbR05VUEdfUFRIX1ZFUlNJT05fQ0hFQ0tdLAotICAgWwotLSAgICBfcHRoX3ZlcnNpb249YCRQVEhfQ09ORklHIC0tdmVyc2lvbiB8IGF3ayAnTlI9PTEge3ByaW50IFskXTN9J2AKLSAgICAgX3JlcV92ZXJzaW9uPSJpZmVsc2UoWyQxXSwsMS4yLjAsJDEpIgotKyAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhQVEgsIFtwdGggPj0gJF9yZXFfdmVyc2lvbl0sIFtoYXZlX3B0aD15ZXNdLCBbaGF2ZV9wdGg9bm9dKQotIAotLSAgICBBQ19NU0dfQ0hFQ0tJTkcoZm9yIFBUSCAtIHZlcnNpb24gPj0gJF9yZXFfdmVyc2lvbikKLS0gICAgZm9yIF92YXIgaW4gX3B0aF92ZXJzaW9uIF9yZXFfdmVyc2lvbjsgZG8KLS0gICAgICAgIGV2YWwgIl92YWw9XCJcJCR7X3Zhcn1cIiIKLS0gICAgICAgIF9tYWpvcj1gZWNobyAkX3ZhbCB8IHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKVwoW1thYi5dXVwpXChbWzAtOV1dKlwpL1wxLydgCi0tICAgICAgICBfbWlub3I9YGVjaG8gJF92YWwgfCBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXClcKFtbYWIuXV1cKVwoW1swLTldXSpcKS9cMi8nYAotLSAgICAgICAgX3J0eXBlPWBlY2hvICRfdmFsIHwgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpXChbW2FiLl1dXClcKFtbMC05XV0qXCkvXDMvJ2AKLS0gICAgICAgIF9taWNybz1gZWNobyAkX3ZhbCB8IHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKVwoW1thYi5dXVwpXChbWzAtOV1dKlwpL1w0LydgCi0tICAgICAgICBjYXNlICRfcnR5cGUgaW4KLS0gICAgICAgICAgICAiYSIgKSBfcnR5cGU9MCA7OwotLSAgICAgICAgICAgICJiIiApIF9ydHlwZT0xIDs7Ci0tICAgICAgICAgICAgIi4iICkgX3J0eXBlPTIgOzsKLS0gICAgICAgIGVzYWMKLS0gICAgICAgIF9oZXg9YGVjaG8gZHVtbXkgfCBhd2sgJ3sgcHJpbnRmKCIlZCUwMmQlMWQlMDJkIiwgbWFqb3IsIG1pbm9yLCBydHlwZSwgbWljcm8pOyB9JyBcCi0tICAgICAgICAgICAgICAibWFqb3I9JF9tYWpvciIgIm1pbm9yPSRfbWlub3IiICJydHlwZT0kX3J0eXBlIiAibWljcm89JF9taWNybyJgCi0tICAgICAgICBldmFsICIke192YXJ9X2hleD1cIlwkX2hleFwiIgotLSAgICBkb25lCi0tICAgIGhhdmVfcHRoPW5vCi0tICAgIGlmIHRlc3QgIi4kX3B0aF92ZXJzaW9uX2hleCIgIT0gLjsgdGhlbgotLSAgICAgICAgaWYgdGVzdCAiLiRfcmVxX3ZlcnNpb25faGV4IiAhPSAuOyB0aGVuCi0tICAgICAgICAgICAgaWYgdGVzdCAkX3B0aF92ZXJzaW9uX2hleCAtZ2UgJF9yZXFfdmVyc2lvbl9oZXg7IHRoZW4KLS0gICAgICAgICAgICAgICAgaGF2ZV9wdGg9eWVzCi0tICAgICAgICAgICAgZmkKLS0gICAgICAgIGZpCi0tICAgIGZpCi0gICAgIGlmIHRlc3QgJGhhdmVfcHRoID0geWVzOyB0aGVuCi0gICAgICAgIEFDX01TR19SRVNVTFQoeWVzKQotICAgICAgICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgUFRIIGluc3RhbGxhdGlvbiBpcyBzYW5lXSkKLUBAIC01MSw5ICsyNyw5IEBAIEFDX0RFRlVOKFtHTlVQR19QVEhfVkVSU0lPTl9DSEVDS10sCi0gICAgICAgICAgX2dudXBnX3B0aF9zYXZlX2NmbGFncz0kQ0ZMQUdTCi0gICAgICAgICAgX2dudXBnX3B0aF9zYXZlX2xkZmxhZ3M9JExERkxBR1MKLSAgICAgICAgICBfZ251cGdfcHRoX3NhdmVfbGlicz0kTElCUwotLSAgICAgICAgIENGTEFHUz0iJENGTEFHUyBgJFBUSF9DT05GSUcgLS1jZmxhZ3NgIgotLSAgICAgICAgIExERkxBR1M9IiRMREZMQUdTIGAkUFRIX0NPTkZJRyAtLWxkZmxhZ3NgIgotLSAgICAgICAgIExJQlM9IiRMSUJTIGAkUFRIX0NPTkZJRyAtLWxpYnMgLS1hbGxgIgotKyAgICAgICAgIENGTEFHUz0iJENGTEFHUyAkUFRIX0NGTEFHUyIKLSsgICAgICAgICBMREZMQUdTPSIkTERGTEFHUyAkUFRIX0xERkxBR1MiCi0rICAgICAgICAgTElCUz0iJExJQlMgJFBUSF9MSUJTIgotICAgICAgICAgIEFDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oWyNpbmNsdWRlIDxwdGguaD4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbWyBwdGhfaW5pdCAoKTtdXSldLAotQEAgLTgwLDI2ICs1NiwxMyBAQCBBQ19ERUZVTihbR05VUEdfUFRIX1ZFUlNJT05fQ0hFQ0tdLAotICMgUFRIX0NMRkFHUyBhbmQgUFRIX0xJQlMgYXJlIEFTX1NVQlNULgotICMKLSBBQ19ERUZVTihbR05VUEdfUEFUSF9QVEhdLAotLVsgQUNfQVJHX1dJVEgocHRoLXByZWZpeCwKLS0gICAgICAgICAgICAgQUNfSEVMUF9TVFJJTkcoWy0td2l0aC1wdGgtcHJlZml4PVBGWF0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ByZWZpeCB3aGVyZSBHTlUgUHRoIGlzIGluc3RhbGxlZCAob3B0aW9uYWwpXSksCi0tICAgICBwdGhfY29uZmlnX3ByZWZpeD0iJHdpdGh2YWwiLCBwdGhfY29uZmlnX3ByZWZpeD0iIikKLS0gIGlmIHRlc3QgeCRwdGhfY29uZmlnX3ByZWZpeCAhPSB4IDsgdGhlbgotLSAgICAgUFRIX0NPTkZJRz0iJHB0aF9jb25maWdfcHJlZml4L2Jpbi9wdGgtY29uZmlnIgotLSAgZmkKLS0gIEFDX1BBVEhfUFJPRyhQVEhfQ09ORklHLCBwdGgtY29uZmlnLCBubykKLStbCi0gICB0bXA9aWZlbHNlKFskMV0sICwxLjMuNywkMSkKLS0gIGlmIHRlc3QgIiRQVEhfQ09ORklHIiAhPSAibm8iOyB0aGVuCi0tICAgIEdOVVBHX1BUSF9WRVJTSU9OX0NIRUNLKCR0bXApCi0tICAgIGlmIHRlc3QgJGhhdmVfcHRoID0geWVzOyB0aGVuICAgICAgCi0tICAgICAgIFBUSF9DRkxBR1M9YCRQVEhfQ09ORklHIC0tY2ZsYWdzYAotLSAgICAgICBQVEhfTElCUz1gJFBUSF9DT05GSUcgLS1sZGZsYWdzYAotLSAgICAgICBQVEhfTElCUz0iJFBUSF9MSUJTIGAkUFRIX0NPTkZJRyAtLWxpYnMgLS1hbGxgIgotLSAgICAgICBBQ19ERUZJTkUoSEFWRV9QVEgsIDEsCi0rICBHTlVQR19QVEhfVkVSU0lPTl9DSEVDSygkdG1wKQotKyAgaWYgdGVzdCAkaGF2ZV9wdGggPSB5ZXM7IHRoZW4KLSsgICAgICBBQ19ERUZJTkUoSEFWRV9QVEgsIDEsCi0gICAgICAgICAgICAgICAgIFtEZWZpbmVkIGlmIHRoZSBHTlUgUHRoIGlzIGF2YWlsYWJsZV0pCi0tICAgIGZpCi0gICBmaQotICAgQUNfU1VCU1QoUFRIX0NGTEFHUykKLSAgIEFDX1NVQlNUKFBUSF9MSUJTKQotIF0pCi0tCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGcvdXNlLXBrZ2NvbmZpZy1pbnN0ZWFkLW9mLW5wdGgtY29uZmlnLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnL3VzZS1wa2djb25maWctaW5zdGVhZC1vZi1ucHRoLWNvbmZpZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzZkYmYxYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGcvdXNlLXBrZ2NvbmZpZy1pbnN0ZWFkLW9mLW5wdGgtY29uZmlnLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvcGVuZW1iZWRkZWQgc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IFNhdWwgV29sZCA8c2d3QGxpbnV4LmludGVsLmNvbT4KLQotCi1JbmRleDogZ251cGctMi4xLjAvbTQvbnB0aC5tNAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdudXBnLTIuMS4wLm9yaWcvbTQvbnB0aC5tNAotKysrIGdudXBnLTIuMS4wL200L25wdGgubTQKLUBAIC0xNywxMCArMTcsMTAgQEAgQUNfREVGVU4oW19BTV9QQVRIX05QVEhfQ09ORklHXSwKLSAgIGlmIHRlc3QgIngkbnB0aF9jb25maWdfcHJlZml4IiAhPSB4IDsgdGhlbgotICAgICAgIE5QVEhfQ09ORklHPSIkbnB0aF9jb25maWdfcHJlZml4L2Jpbi9ucHRoLWNvbmZpZyIKLSAgIGZpCi0tICBBQ19QQVRIX1BST0coTlBUSF9DT05GSUcsIG5wdGgtY29uZmlnLCBubykKLSsgIEFDX1BBVEhfUFJPRyhQS0dDT05GSUcsIHBrZy1jb25maWcsIG5vKQotIAotLSAgaWYgdGVzdCAiJE5QVEhfQ09ORklHIiAhPSAibm8iIDsgdGhlbgotLSAgICBucHRoX3ZlcnNpb249YCROUFRIX0NPTkZJRyAtLXZlcnNpb25gCi0rICBpZiB0ZXN0ICIkUEtHQ09ORklHIiAhPSAibm8iIDsgdGhlbgotKyAgICBucHRoX3ZlcnNpb249YCRQS0dDT05GSUcgLS1tb2R2ZXJzaW9uIG5wdGhgCi0gICBmaQotICAgbnB0aF92ZXJzaW9uX21ham9yPWBlY2hvICRucHRoX3ZlcnNpb24gfCBcCi0gICAgICAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpLiovXDEvJ2AKLUBAIC00NSw3ICs0NSw3IEBAIEFDX0RFRlVOKFtBTV9QQVRIX05QVEhdLAotIAotICAgQUNfTVNHX0NIRUNLSU5HKGZvciBOUFRIIC0gdmVyc2lvbiA+PSAkbWluX25wdGhfdmVyc2lvbikKLSAgIG9rPW5vCi0tICBpZiB0ZXN0ICIkTlBUSF9DT05GSUciICE9ICJubyIgOyB0aGVuCi0rICBpZiB0ZXN0ICIkUEtHQ09ORklHIiAhPSAibm8iIDsgdGhlbgotICAgICByZXFfbWFqb3I9YGVjaG8gJG1pbl9ucHRoX3ZlcnNpb24gfCBcCi0gICAgICAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpL1wxLydgCi0gICAgIHJlcV9taW5vcj1gZWNobyAkbWluX25wdGhfdmVyc2lvbiB8IFwKLUBAIC02NiwyOCArNjYsOSBAQCBBQ19ERUZVTihbQU1fUEFUSF9OUFRIXSwKLSAgIGZpCi0gICBpZiB0ZXN0ICRvayA9IHllczsgdGhlbgotICAgICBBQ19NU0dfUkVTVUxUKFt5ZXMgKCRucHRoX3ZlcnNpb24pXSkKLS0gIGVsc2UKLS0gICAgQUNfTVNHX1JFU1VMVChubykKLS0gIGZpCi0tICBpZiB0ZXN0ICRvayA9IHllczsgdGhlbgotLSAgICAgIyBJZiB3ZSBoYXZlIGEgcmVjZW50IE5QVEgsIHdlIHNob3VsZCBhbHNvIGNoZWNrIHRoYXQgdGhlCi0tICAgICAjIEFQSSBpcyBjb21wYXRpYmxlLgotLSAgICAgaWYgdGVzdCAiJHJlcV9ucHRoX2FwaSIgLWd0IDAgOyB0aGVuCi0tICAgICAgICB0bXA9YCROUFRIX0NPTkZJRyAtLWFwaS12ZXJzaW9uIDI+L2Rldi9udWxsIHx8IGVjaG8gMGAKLS0gICAgICAgIGlmIHRlc3QgIiR0bXAiIC1ndCAwIDsgdGhlbgotLSAgICAgICAgICAgQUNfTVNHX0NIRUNLSU5HKFtOUFRIIEFQSSB2ZXJzaW9uXSkKLS0gICAgICAgICAgIGlmIHRlc3QgIiRyZXFfbnB0aF9hcGkiIC1lcSAiJHRtcCIgOyB0aGVuCi0tICAgICAgICAgICAgIEFDX01TR19SRVNVTFQoW29rYXldKQotLSAgICAgICAgICAgZWxzZQotLSAgICAgICAgICAgICBvaz1ubwotLSAgICAgICAgICAgICBBQ19NU0dfUkVTVUxUKFtkb2VzIG5vdCBtYXRjaC4gd2FudD0kcmVxX25wdGhfYXBpIGdvdD0kdG1wXSkKLS0gICAgICAgICAgIGZpCi0tICAgICAgICBmaQotLSAgICAgZmkKLS0gIGZpCi0tICBpZiB0ZXN0ICRvayA9IHllczsgdGhlbgotLSAgICBOUFRIX0NGTEFHUz1gJE5QVEhfQ09ORklHIC0tY2ZsYWdzYAotLSAgICBOUFRIX0xJQlM9YCROUFRIX0NPTkZJRyAtLWxpYnNgCi0rICAgIE5QVEhfQ0ZMQUdTPWAkUEtHQ09ORklHIC0tY2ZsYWdzIG5wdGhgCi0rICAgIE5QVEhfTElCUz1gJFBLR0NPTkZJRyAtLWxpYnMgbnB0aGAKLSsgICAgQUNfTVNHX1dBUk4oW1tHT1QgSEVSRSAtICROUFRIX0xJQlMgXV0pCi0gICAgIGlmZWxzZShbJDJdLCAsIDosIFskMl0pCi0gICAgIG5wdGhfY29uZmlnX2hvc3Q9YCROUFRIX0NPTkZJRyAtLWhvc3QgMj4vZGV2L251bGwgfHwgZWNobyBub25lYAotICAgICBpZiB0ZXN0IHgiJG5wdGhfY29uZmlnX2hvc3QiICE9IHhub25lIDsgdGhlbgotQEAgLTEwMyw2ICs4NCw3IEBAIEFDX0RFRlVOKFtBTV9QQVRIX05QVEhdLAotICAgICAgIGZpCi0gICAgIGZpCi0gICBlbHNlCi0rICAgIEFDX01TR19SRVNVTFQobm8pCi0gICAgIE5QVEhfQ0ZMQUdTPSIiCi0gICAgIE5QVEhfTElCUz0iIgotICAgICBpZmVsc2UoWyQzXSwgLCA6LCBbJDNdKQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnXzIuMS4xOC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZ18yLjEuMTguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwNjExYWEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnXzIuMS4xOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLVNVTU1BUlkgPSAiR05VIFByaXZhY3kgR3VhcmQgLSBlbmNyeXB0aW9uIGFuZCBzaWduaW5nIHRvb2xzICgyLngpIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnVwZy5vcmcvIgotTElDRU5TRSA9ICJHUEx2MyAmIExHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTE4OWFmOGFmY2E2ZDYwNzViYTZjOWUwYWE4MDc3NjI2IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT1hMmI2YmYyY2IzOGVlNTI2MTllNjBmMzBhMWZjNzI1NyIKLQotREVQRU5EUyA9ICJucHRoIGxpYmFzc3VhbiBsaWJrc2JhIHpsaWIgYnppcDIgcmVhZGxpbmUgbGliZ2NyeXB0IgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gcGtnY29uZmlnCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dudXBnLm9yZy9kb3dubG9hZC9pbmRleC5odG1sIgotU1JDX1VSSSA9ICIke0dOVVBHX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL3BrZ2NvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly91c2UtcGtnY29uZmlnLWluc3RlYWQtb2YtbnB0aC1jb25maWcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGlybW5nci11c2VzLWxpYmdwZy1lcnJvci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hdXRvZ2VuLnNoLWZpeC1maW5kLXZlcnNpb24tZm9yLWJldGEtY2hlY2tpbmcucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImM2N2Y5MDhiMGIzNWM3ZWJjNjIxNDRmMzYyNzU3ZTFlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQwNGM2ZmFiN2U1NTYyY2U0YjkxNWIyMjAyMGUzNGQ0YzFhMjU2ODQ3NjkwY2YxNDk4NDIyNjRmYzdjZWY5OTQiCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtbGRhcCBcCi0JCS0tZGlzYWJsZS1jY2lkLWRyaXZlciBcCi0JCS0td2l0aC16bGliPSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKLQkJLS13aXRoLWJ6aXAyPSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtcmVhZGxpbmU9JHtTVEFHSU5HX0xJQkRJUn0vLi4gXAotICAgICAgICAgICAgICAgIgotUlJFQ09NTUVORFNfJHtQTn0gPSAicGluZW50cnkiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLQkjIEVsc2UgdGhlc2UgY291bGQgYmUgdXNlZCBpbiBwcmVmZXJuY2UgdG8gdGhvc2UgaW4gYWNsb2NhbC1jb3B5Ci0Jcm0gLWYgJHtTfS9tNC9ncGctZXJyb3IubTQKLQlybSAtZiAke1N9L200L2xpYmFzc3Vhbi5tNAotCXJtIC1mICR7U30vbTQva3NiYS5tNAotCXJtIC1mICR7U30vbTQvbGliZ2NyeXB0Lm00Ci19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCWxuIC1zZiBncGcyICR7RH0ke2JpbmRpcn0vZ3BnCi0JbG4gLXNmIGdwZ3YyICR7RH0ke2JpbmRpcn0vZ3BndgotfQotCi1SREVQRU5EU18ke1BOfSA9ICJnbnV0bHMiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW3NxbGl0ZTNdID0gIi0tZW5hYmxlLXNxbGl0ZSwgLS1kaXNhYmxlLXNxbGl0ZSwgc3FsaXRlMyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZ18yLjIuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZ18yLjIuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMTc2ZGRkCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnXzIuMi4wLmJiCkBAIC0wLDAgKzEsNDYgQEAKK1NVTU1BUlkgPSAiR05VIFByaXZhY3kgR3VhcmQgLSBlbmNyeXB0aW9uIGFuZCBzaWduaW5nIHRvb2xzICgyLngpIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnVwZy5vcmcvIgorTElDRU5TRSA9ICJHUEx2MyAmIExHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTE4OWFmOGFmY2E2ZDYwNzViYTZjOWUwYWE4MDc3NjI2IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEdQTDM7bWQ1PWEyYjZiZjJjYjM4ZWU1MjYxOWU2MGYzMGExZmM3MjU3IgorCitERVBFTkRTID0gIm5wdGggbGliYXNzdWFuIGxpYmtzYmEgemxpYiBiemlwMiByZWFkbGluZSBsaWJnY3J5cHQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbyBwa2djb25maWcKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ251cGcub3JnL2Rvd25sb2FkL2luZGV4Lmh0bWwiCitTUkNfVVJJID0gIiR7R05VUEdfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtcGtnLWNvbmZpZy10by1maW5kLXB0aC1pbnN0ZWFkLW9mLXB0aC1jb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi11c2UtcGtnY29uZmlnLWluc3RlYWQtb2YtbnB0aC1jb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1kaXJtbmdyLXVzZXMtbGliZ3BnLWVycm9yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtYXV0b2dlbi5zaC1maXgtZmluZC12ZXJzaW9uLWZvci1iZXRhLWNoZWNraW5nLnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI3ODlmMTY5NDlmYWUyZDAwM2QzODdmNDllOWRhNGI3NCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkNDUxNGEwYmUwZjdhMWZmMjYzMTkzMzMwMDE5ZWI0YjUzYzgyZjBmNWUyMzBhZjNjMTRkZjM3MTI3MWE0NWU2IgorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWxkYXAgXAorCQktLWRpc2FibGUtY2NpZC1kcml2ZXIgXAorCQktLXdpdGgtemxpYj0ke1NUQUdJTkdfTElCRElSfS8uLiBcCisJCS0td2l0aC1iemlwMj0ke1NUQUdJTkdfTElCRElSfS8uLiBcCisJCS0td2l0aC1yZWFkbGluZT0ke1NUQUdJTkdfTElCRElSfS8uLiBcCisJCS0tZW5hYmxlLWdwZy1pcy1ncGcyIFwKKyAgICAgICAgICAgICAgICIKK1JSRUNPTU1FTkRTXyR7UE59ID0gInBpbmVudHJ5IgorCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisJIyBFbHNlIHRoZXNlIGNvdWxkIGJlIHVzZWQgaW4gcHJlZmVybmNlIHRvIHRob3NlIGluIGFjbG9jYWwtY29weQorCXJtIC1mICR7U30vbTQvZ3BnLWVycm9yLm00CisJcm0gLWYgJHtTfS9tNC9saWJhc3N1YW4ubTQKKwlybSAtZiAke1N9L200L2tzYmEubTQKKwlybSAtZiAke1N9L200L2xpYmdjcnlwdC5tNAorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlsbiAtc2YgZ3BnMiAke0R9JHtiaW5kaXJ9L2dwZworCWxuIC1zZiBncGd2MiAke0R9JHtiaW5kaXJ9L2dwZ3YKK30KKworUEFDS0FHRUNPTkZJRyA/Pz0gImdudXRscyIKK1BBQ0tBR0VDT05GSUdbZ251dGxzXSA9ICItLWVuYWJsZS1nbnV0bHMsIC0tZGlzYWJsZS1nbnV0bHMsIGdudXRscyIKK1BBQ0tBR0VDT05GSUdbc3FsaXRlM10gPSAiLS1lbmFibGUtc3FsaXRlLCAtLWRpc2FibGUtc3FsaXRlLCBzcWxpdGUzIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHMuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHMuaW5jCmluZGV4IDFlY2FkMWYuLjI5YjVkZDYgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRscy5pbmMKQEAgLTQ2LDcgKzQ2LDYgQEAKICIKIAogTERGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtbGFyZ3AiCi1MREZMQUdTX2FwcGVuZF9saWJjLXVjbGliYyA9ICIgLWx1YXJncCAtcHRocmVhZCIKIAogZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CiAJZm9yIGRpciBpbiAuIGxpYjsgZG8KQEAgLTU5LDUgKzU4LDMgQEAKIEZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9L2dudXRscy1jbGktZGVidWciCiBGSUxFU18ke1BOfS1vcGVuc3NsID0gIiR7bGliZGlyfS9saWJnbnV0bHMtb3BlbnNzbC5zby4qIgogRklMRVNfJHtQTn0teHggPSAiJHtsaWJkaXJ9L2xpYmdudXRsc3h4LnNvLioiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzL2NvcnJlY3RfcnBsX2dldHRpbWVvZmRheV9zaWduYXR1cmUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRscy9jb3JyZWN0X3JwbF9nZXR0aW1lb2ZkYXlfc2lnbmF0dXJlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NmIwMjNhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzL2NvcnJlY3RfcnBsX2dldHRpbWVvZmRheV9zaWduYXR1cmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi1Gcm9tIDgxYjBmMDRjMTRmNjczYjk5Nzc4ZDJlN2Q4ZTg1NDYxZTBiZjIwMTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBWYWxlbnRpbiBQb3BhIDx2YWxlbnRpbi5wb3BhQGludGVsLmNvbT4KLURhdGU6IEZyaSwgMjUgQXByIDIwMTQgMTM6NTg6NTUgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzNdIENvcnJlY3QgcnBsX2dldHRpbWVvZmRheSBzaWduYXR1cmUKLQotQ3VycmVudGx5IHdlIGZhaWwgb24gdWNsaWJjIGxpa2UgYmVsb3cKLQotfCBJbiBmaWxlIGluY2x1ZGVkIGZyb20gL2hvbWUva3Jhai93b3JrL2FuZ3N0cm9tL3NvdXJjZXMvb3BlbmVtYmVkZGVkLWNvcmUvYnVpbGQvdG1wLXVjbGliYy9zeXNyb290cy9xZW11YXJtL3Vzci9pbmNsdWRlL3N5cy9wcm9jZnMuaDozMjowLAotfCAgICAgICAgICAgICAgICAgIGZyb20gL2hvbWUva3Jhai93b3JrL2FuZ3N0cm9tL3NvdXJjZXMvb3BlbmVtYmVkZGVkLWNvcmUvYnVpbGQvdG1wLXVjbGliYy9zeXNyb290cy9xZW11YXJtL3Vzci9pbmNsdWRlL3N5cy91Y29udGV4dC5oOjI2LAotfCAgICAgICAgICAgICAgICAgIGZyb20gL2hvbWUva3Jhai93b3JrL2FuZ3N0cm9tL3NvdXJjZXMvb3BlbmVtYmVkZGVkLWNvcmUvYnVpbGQvdG1wLXVjbGliYy9zeXNyb290cy9xZW11YXJtL3Vzci9pbmNsdWRlL3NpZ25hbC5oOjM5MiwKLXwgICAgICAgICAgICAgICAgICBmcm9tIC4uLy4uL2dsL3NpZ25hbC5oOjUyLAotfCAgICAgICAgICAgICAgICAgIGZyb20gLi4vLi4vZ2wvc3lzL3NlbGVjdC5oOjU4LAotfCAgICAgICAgICAgICAgICAgIGZyb20gL2hvbWUva3Jhai93b3JrL2FuZ3N0cm9tL3NvdXJjZXMvb3BlbmVtYmVkZGVkLWNvcmUvYnVpbGQvdG1wLXVjbGliYy9zeXNyb290cy9xZW11YXJtL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oOjIyMCwKLXwgICAgICAgICAgICAgICAgICBmcm9tIC4uLy4uL2dsL3N5cy90eXBlcy5oOjI4LAotfCAgICAgICAgICAgICAgICAgIGZyb20gLi4vLi4vbGliL2luY2x1ZGVzL2dudXRscy9nbnV0bHMuaDo0NiwKLXwgICAgICAgICAgICAgICAgICBmcm9tIGV4LWN4eC5jcHA6MzoKLXwgLi4vLi4vZ2wvc3lzL3RpbWUuaDozOTY6NjY6IGVycm9yOiBjb25mbGljdGluZyBkZWNsYXJhdGlvbiAndm9pZCogcmVzdHJpY3QnCi18IC4uLy4uL2dsL3N5cy90aW1lLmg6Mzk2OjUwOiBlcnJvcjogJ3Jlc3RyaWN0JyBoYXMgYSBwcmV2aW91cyBkZWNsYXJhdGlvbiBhcyAndGltZXZhbCogcmVzdHJpY3QnCi18IG1ha2VbNF06ICoqKiBbZXgtY3h4Lm9dIEVycm9yIDEKLXwgbWFrZVs0XTogKioqIFdhaXRpbmcgZm9yIHVuZmluaXNoZWQgam9icy4uLi4KLQotR0NDIGRldGVjdHMgdGhhdCB3ZSBjYWxsICdyZXN0cmljdCcgYXMgcGFyYW0gbmFtZSBpbiBmdW5jdGlvbgotc2lnbmF0dXJlcyBhbmQgY29tcGxhaW5zIHNpbmNlIGJvdGggcGFyYW1zIGFyZSBjYWxsZWQgJ3Jlc3RyaWN0JwotdGhlcmVmb3JlIHdlIHVzZSBfX3Jlc3RyaWN0IHRvIGRlbm90ZSB0aGUgQzk5IGtleXdvcmsKLQotVGhpcyBvbmx5IGhhcHBlbnMgb2YgdWNsaWJjIHNpbmNlIHRoaXMgY29kZSBpcyBub3QgZXhjZXJjaXNlZCB3aXRoCi1lZ2xpYmMgb3RoZXJ3aXNlIHdlIHdpbGwgaGF2ZSBzYW1lIGlzc3VlIHRoZXJlIHRvbwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotLS0tCi0gZ2wvc3lzX3RpbWUuaW4uaCB8IDggKysrKy0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2wvc3lzX3RpbWUuaW4uaCBiL2dsL3N5c190aW1lLmluLmgKLWluZGV4IDVhOGNhZjMuLjJkYzU3MTggMTAwNjQ0Ci0tLS0gYS9nbC9zeXNfdGltZS5pbi5oCi0rKysgYi9nbC9zeXNfdGltZS5pbi5oCi1AQCAtOTMsMjAgKzkzLDIwIEBAIHN0cnVjdCB0aW1ldmFsCi0gIyAgIGRlZmluZSBnZXR0aW1lb2ZkYXkgcnBsX2dldHRpbWVvZmRheQotICMgIGVuZGlmCi0gX0dMX0ZVTkNERUNMX1JQTCAoZ2V0dGltZW9mZGF5LCBpbnQsCi0tICAgICAgICAgICAgICAgICAgKHN0cnVjdCB0aW1ldmFsICpyZXN0cmljdCwgdm9pZCAqcmVzdHJpY3QpCi0rICAgICAgICAgICAgICAgICAgKHN0cnVjdCB0aW1ldmFsICpfX3Jlc3RyaWN0LCB2b2lkICpfX3Jlc3RyaWN0KQotICAgICAgICAgICAgICAgICAgIF9HTF9BUkdfTk9OTlVMTCAoKDEpKSk7Ci0gX0dMX0NYWEFMSUFTX1JQTCAoZ2V0dGltZW9mZGF5LCBpbnQsCi0tICAgICAgICAgICAgICAgICAgKHN0cnVjdCB0aW1ldmFsICpyZXN0cmljdCwgdm9pZCAqcmVzdHJpY3QpKTsKLSsgICAgICAgICAgICAgICAgICAoc3RydWN0IHRpbWV2YWwgKl9fcmVzdHJpY3QsIHZvaWQgKl9fcmVzdHJpY3QpKTsKLSAjIGVsc2UKLSAjICBpZiAhQEhBVkVfR0VUVElNRU9GREFZQAotIF9HTF9GVU5DREVDTF9TWVMgKGdldHRpbWVvZmRheSwgaW50LAotLSAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgdGltZXZhbCAqcmVzdHJpY3QsIHZvaWQgKnJlc3RyaWN0KQotKyAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgdGltZXZhbCAqX19yZXN0cmljdCwgdm9pZCAqX19yZXN0cmljdCkKLSAgICAgICAgICAgICAgICAgICBfR0xfQVJHX05PTk5VTEwgKCgxKSkpOwotICMgIGVuZGlmCi0gLyogTmVlZCB0byBjYXN0LCBiZWNhdXNlIG9uIGdsaWJjIHN5c3RlbXMsIGJ5IGRlZmF1bHQsIHRoZSBzZWNvbmQgYXJndW1lbnQgaXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0aW1lem9uZSAqLiAgKi8KLSBfR0xfQ1hYQUxJQVNfU1lTX0NBU1QgKGdldHRpbWVvZmRheSwgaW50LAotLSAgICAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCB0aW1ldmFsICpyZXN0cmljdCwgdm9pZCAqcmVzdHJpY3QpKTsKLSsgICAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgdGltZXZhbCAqX19yZXN0cmljdCwgdm9pZCAqX19yZXN0cmljdCkpOwotICMgZW5kaWYKLSBfR0xfQ1hYQUxJQVNXQVJOIChnZXR0aW1lb2ZkYXkpOwotICMgaWYgZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiBkZWZpbmVkIEdOVUxJQl9OQU1FU1BBQ0UKLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzL3VzZS1wa2ctY29uZmlnLXRvLWxvY2F0ZS16bGliLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHMvdXNlLXBrZy1jb25maWctdG8tbG9jYXRlLXpsaWIucGF0Y2gKaW5kZXggMGUxYjdjOC4uYWUxNDFhNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHMvdXNlLXBrZy1jb25maWctdG8tbG9jYXRlLXpsaWIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHMvdXNlLXBrZy1jb25maWctdG8tbG9jYXRlLXpsaWIucGF0Y2gKQEAgLTEsNyArMSw5IEBACi1Gcm9tIGNlZTgwYWYxZmU5M2Y1Yjc2NzY1YWZlZWJmY2MzYjkwMjc2OGY1ZDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgotRGF0ZTogVHVlLCAyNiBNYXkgMjAxNSAyMTo0MToyNCAtMDcwMAotU3ViamVjdDogW1BBVENIXSB1c2UgcGtnLWNvbmZpZyB0byBsb2NhdGUgemxpYgorRnJvbSAxODA4MTA2OGE5N2MwMDAxNWFhYmM1ZmEzMjE2NjQ5NTE0NThlYTBkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRmFuIFhpbiA8ZmFuLnhpbkBqcC5mdWppdHN1LmNvbT4KK0RhdGU6IEZyaSwgOSBKdW4gMjAxNyAxNToyMDozMSArMDkwMAorU3ViamVjdDogW1BBVENIXSBGcm9tIGNlZTgwYWYxZmU5M2Y1Yjc2NzY1YWZlZWJmY2MzYjkwMjc2OGY1ZDYgTW9uIFNlcCAxNworIDAwOjAwOjAwIDIwMDEgRnJvbTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4gRGF0ZTogVHVlLCAyNiBNYXkKKyAyMDE1IDIxOjQxOjI0IC0wNzAwIFN1YmplY3Q6IFtQQVRDSF0gdXNlIHBrZy1jb25maWcgdG8gbG9jYXRlIHpsaWIKIAogQUNfTElCX0hBVkVfTElOS0ZMQUdTIGNhbiBzb21ldGltZXMgZmluZCBob3N0IGxpYnMgYW5kIGlzIHRoZXJlZm9yZSBub3QKIHJvYnVzdCB3aGVuIGNyb3NzLWNvbXBpbGluZy4gUmVtb3ZlIGl0IGZvciB6bGliIGFuZCB1c2UgUEtHX0NIRUNLX01PRFVMRVMKQEAgLTE4LDE1ICsyMCwxOSBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQogCiBTaWduZWQtb2ZmLWJ5OiBBbmRyZSBNY0N1cmR5IDxhcm1jY3VyZHlAZ21haWwuY29tPgorCitSZWJhc2Ugb24gZ251dGxzIDMuNS4xMworCitTaWduZWQtb2ZmLWJ5OiBGYW4gWGluIDxmYW4ueGluQGpwLmZ1aml0c3UuY29tPgogLS0tCi0gY29uZmlndXJlLmFjIHwgMjQgKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQorIGNvbmZpZ3VyZS5hYyB8IDI1ICsrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggMWI1NjFkNS4uMGM3ODdkYyAxMDA2NDQKK2luZGV4IGM2NTI2OGUuLmY2YTE4YWEgMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTUwOCwyNSArNTA4LDIxIEBAIEFDX0FSR19XSVRIKHpsaWIsIEFTX0hFTFBfU1RSSU5HKFstLXdpdGhvdXQtemxpYl0sCitAQCAtNzM1LDI4ICs3MzUsMjEgQEAgQUNfQVJHX1dJVEgoemxpYiwgQVNfSEVMUF9TVFJJTkcoWy0td2l0aG91dC16bGliXSwKICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gaW5jbHVkZSB6bGliIGNvbXByZXNzaW9uIHN1cHBvcnRdKQogIGlmIHRlc3QgeCRhY196bGliICE9IHhubzsgdGhlbgogICBBQ19NU0dfUkVTVUxUKHllcykKQEAgLTQ5LDYgKzU1LDcgQEAKIC0gICAgZWxzZQogLSAgICAgIEdOVVRMU19SRVFVSVJFU19QUklWQVRFPSIkR05VVExTX1JFUVVJUkVTX1BSSVZBVEUsIHpsaWIiCiAtICAgIGZpCistICAgIExJQlpfUEM9IiIKICsgIFBLR19DSEVDS19NT0RVTEVTKFpMSUIsIHpsaWIpCiArICBIQVZFX0xJQlo9eWVzCiArICBBQ19ERUZJTkUoW0hBVkVfTElCWl0sIFsxXSwgW3psaWIgaXMgZW5hYmxlZF0pCkBAIC01NywxMSArNjQsMTIgQEAKICsgIEFDX1NVQlNUKExUTElCWikKICsgIGlmIHRlc3QgIngkR05VVExTX1JFUVVJUkVTX1BSSVZBVEUiID0geDsgdGhlbgogKyAgICBHTlVUTFNfUkVRVUlSRVNfUFJJVkFURT0iUmVxdWlyZXMucHJpdmF0ZTogemxpYiIKLSsgIGVsc2UKKyAgIGVsc2UKKy0gICAgTElCWl9QQz0kTElCWgogKyAgICBHTlVUTFNfUkVRVUlSRVNfUFJJVkFURT0iJEdOVVRMU19SRVFVSVJFU19QUklWQVRFLCB6bGliIgogICAgZmkKICBmaQotIEFDX1NVQlNUKEdOVVRMU19SRVFVSVJFU19QUklWQVRFKQorIEFDX1NVQlNUKExJQlpfUEMpCiAtLSAKIDEuOS4xCiAKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzXzMuNS4xMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzXzMuNS4xMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNWQ3ZDA5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHNfMy41LjEzLmJiCkBAIC0wLDAgKzEsMTAgQEAKK3JlcXVpcmUgZ251dGxzLmluYworCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtZml4LXNlZC1jb21tYW5kLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly91c2UtcGtnLWNvbmZpZy10by1sb2NhdGUtemxpYi5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vYXJtX2VhYmkucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiNGZkNDFhZDg2NTcyOTMzYzIzNzliNGNjMzIxYTA5NTkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzlmNTQ4MGFkMTk4ZGFkNWJjNzhlMDc1ZjRhNDBjNGEzMTVhMWIyMDcyNjY2OTE5ZDJkMDVhMDhhZWMxMzA5NiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHNfMy41LjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRsc18zLjUuOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGY4NGRiYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRsc18zLjUuOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLXJlcXVpcmUgZ251dGxzLmluYwotCi1TUkNfVVJJICs9ICJmaWxlOi8vY29ycmVjdF9ycGxfZ2V0dGltZW9mZGF5X3NpZ25hdHVyZS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtZml4LXNlZC1jb21tYW5kLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly91c2UtcGtnLWNvbmZpZy10by1sb2NhdGUtemxpYi5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vYXJtX2VhYmkucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiMGFiMjVlYjZhMTUwOTM0NWRkMDg1YmMyMWEzODc5NTEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiODJiMTBmMGM0ZWYxOGY0ZTY0YWQ4Y2VmNWRiYWYxNGJlNzMyZjUwOTVhNDFjZjM2NmI0ZWNiNDA1MDM4Mjk1MSIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9saWJ0YXNuMV80LjEwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9saWJ0YXNuMV80LjEwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZmM3ZjEyLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvbGlidGFzbjFfNC4xMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLVNVTU1BUlkgPSAiTGlicmFyeSBmb3IgQVNOLjEgYW5kIERFUiBtYW5pcHVsYXRpb24iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGlidGFzbjEvIgotCi1MSUNFTlNFID0gIkdQTHYzKyAmIExHUEx2Mi4xKyIKLUxJQ0VOU0VfJHtQTn0tYmluID0gIkdQTHYzKyIKLUxJQ0VOU0VfJHtQTn0gPSAiTEdQTHYyLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL1JFQURNRTtlbmRsaW5lPTg7bWQ1PWMzODAzYTNlOGNhNWFiNWViMWU1OTEyZmFhNDA1MzUxIgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vbGlidGFzbjEvbGlidGFzbjEtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2RvbnQtZGVwZW5kLW9uLWhlbHAybWFuLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtc3RkaW50Lm00LXJlaW50cm9kdWNlLUdOVUxJQl9PVkVSUklERVNfV0lOVF9ULWNoZWNrLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTEwNzkwLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1ERVBFTkRTID0gImJpc29uLW5hdGl2ZSIKLQotU1JDX1VSSVttZDVzdW1dID0gImY0ZmFmZmRmNjM5NjlkMGU0ZTZkZjQzYjk2NzllOGU1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY4MWE0ZDlhMGQyNTlmMjEyNTcxM2YyZTU3NjZjNTgwOWYxNTFiM2ExMzkyZmQ5MTM5MGY3ODBiNGI4ZjVhMDIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gYmluY29uZmlnIGxpYl9wYWNrYWdlIGd0ay1kb2MKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2xpYnRhc24xXzQuMTIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2xpYnRhc24xXzQuMTIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2E3NTcxYQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvbGlidGFzbjFfNC4xMi5iYgpAQCAtMCwwICsxLDI0IEBACitTVU1NQVJZID0gIkxpYnJhcnkgZm9yIEFTTi4xIGFuZCBERVIgbWFuaXB1bGF0aW9uIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYnRhc24xLyIKKworTElDRU5TRSA9ICJHUEx2MysgJiBMR1BMdjIuMSsiCitMSUNFTlNFXyR7UE59LWJpbiA9ICJHUEx2MysiCitMSUNFTlNFXyR7UE59ID0gIkxHUEx2Mi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9SRUFETUU7ZW5kbGluZT04O21kNT1jMzgwM2EzZThjYTVhYjVlYjFlNTkxMmZhYTQwNTM1MSIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2xpYnRhc24xL2xpYnRhc24xLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9kb250LWRlcGVuZC1vbi1oZWxwMm1hbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXN0ZGludC5tNC1yZWludHJvZHVjZS1HTlVMSUJfT1ZFUlJJREVTX1dJTlRfVC1jaGVjay5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xMDc5MC5wYXRjaCBcCisgICAgICAgICAgICIKKworREVQRU5EUyA9ICJiaXNvbi1uYXRpdmUiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1YzcyNGJkMWY3M2FhZjRhMzExODMzZTFjZDI5N2IyMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2NzUzZGEyZTYyMTI1N2YzM2Y1YjA1MWNjMTE0ZDQxN2U1MjA2YTA4MThmZTBiMWVjZmQ2MTUzZjcwOTM0NzUzIgorCitpbmhlcml0IGF1dG90b29scyB0ZXhpbmZvIGJpbmNvbmZpZyBsaWJfcGFja2FnZSBndGstZG9jCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDEtQ29ycmVjdGx5LWluc3RhbGwtcHl0aG9uLW1vZHVsZXMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwMS1Db3JyZWN0bHktaW5zdGFsbC1weXRob24tbW9kdWxlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDI2NTVmYi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwMS1Db3JyZWN0bHktaW5zdGFsbC1weXRob24tbW9kdWxlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLUZyb20gNGQ3MTRjMDk3ZTQ5N2I2M2QyZThiMjJhODM0YzY3MTA0NWUyMTVlOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogVGh1LCA5IE1hciAyMDE3IDIxOjM0OjU1ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIENvcnJlY3RseSBpbnN0YWxsIHB5dGhvbiBtb2R1bGVzCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotLS0tCi0gbGFuZy9weXRob24vTWFrZWZpbGUuYW0gfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL2xhbmcvcHl0aG9uL01ha2VmaWxlLmFtIGIvbGFuZy9weXRob24vTWFrZWZpbGUuYW0KLWluZGV4IGUzMmZkMTIuLjVlY2Y2ZmIgMTAwNjQ0Ci0tLS0gYS9sYW5nL3B5dGhvbi9NYWtlZmlsZS5hbQotKysrIGIvbGFuZy9weXRob24vTWFrZWZpbGUuYW0KLUBAIC0xMDIsNiArMTAyLDcgQEAgaW5zdGFsbC1leGVjLWxvY2FsOgotIAlmb3IgUFlUSE9OIGluICQoUFlUSE9OUyk7IGRvIFwKLSAJICAkJFBZVEhPTiBzZXR1cC5weSBpbnN0YWxsIFwKLSAJICAtLXByZWZpeCAkKERFU1RESVIpJChwcmVmaXgpIFwKLSsgICAgICAgICAgLS1pbnN0YWxsLWxpYj0kKERFU1RESVIpJHtweXRob25kaXJ9IFwKLSAJICAtLXJlY29yZCBmaWxlcy50eHQgXAotIAkgIC0tdmVyYm9zZSA7IFwKLSAJICBjYXQgZmlsZXMudHh0ID4+IGluc3RhbGxfZmlsZXMudHh0IDsgXAotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDEtZ3BnbWUtY29uZmlnLXNraXAtYWxsLWxpYi1vci11c3ItbGliLWRpcmVjdG9yaWVzLWluLS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDAxLWdwZ21lLWNvbmZpZy1za2lwLWFsbC1saWItb3ItdXNyLWxpYi1kaXJlY3Rvcmllcy1pbi0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0ZDU1YjkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDEtZ3BnbWUtY29uZmlnLXNraXAtYWxsLWxpYi1vci11c3ItbGliLWRpcmVjdG9yaWVzLWluLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUZyb20gOGMzMTdmNjE4NmJkM2E5YTFjODBiNGQxZTg3MmIzZGI5NTkzNGJiNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogVGh1LCAxMyBBcHIgMjAxNyAxNjo0MDoyNyArMDMwMAotU3ViamVjdDogW1BBVENIXSBncGdtZS1jb25maWc6IHNraXAgYWxsIC9saWIqIG9yIC91c3IvbGliKiBkaXJlY3RvcmllcyBpbgotIG91dHB1dAotCi1UaGUgbG9naWMgd2FzIG5vdCB3b3JraW5nIGluIG11bHRpbGliIHNldHVwcyB3aGljaCB1c2Ugb3RoZXIKLWRpcmVjdG9yeSBuYW1lcyB0aGFuIHBsYWluIC9saWIgb3IgL3Vzci9saWIuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotLS0tCi0gc3JjL2dwZ21lLWNvbmZpZy5pbiB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9ncGdtZS1jb25maWcuaW4gYi9zcmMvZ3BnbWUtY29uZmlnLmluCi1pbmRleCBhNGQxNTJlLi44MzQyODY1IDEwMDY0NAotLS0tIGEvc3JjL2dwZ21lLWNvbmZpZy5pbgotKysrIGIvc3JjL2dwZ21lLWNvbmZpZy5pbgotQEAgLTE1NCw3ICsxNTQsNyBAQCB3aGlsZSB0ZXN0ICQjIC1ndCAwOyBkbwotICAgICAgICAgICAgIGZvciBpIGluICRsaWJzICR0bXBfbCAkYXNzdWFuX2xpYnMgJGdwZ19lcnJvcl9saWJzICR0bXBfeDsgZG8KLSAgICAgICAgICAgICAgIHNraXA9bm8KLSAgICAgICAgICAgICAgIGNhc2UgJGkgaW4KLS0gICAgICAgICAgICAgICAgICAtTC91c3IvbGlifC1ML2xpYikKLSsgICAgICAgICAgICAgICAgICAtTC91c3IvbGliKnwtTC9saWIqKQotICAgICAgICAgICAgICAgICAgICAgICBza2lwPXllcwotICAgICAgICAgICAgICAgICAgICAgICA7OwotICAgICAgICAgICAgICAgICAgIC1MKnwtbCopCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwMS1wa2djb25maWcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwMS1wa2djb25maWcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTRhNDNlZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDAxLXBrZ2NvbmZpZy5wYXRjaApAQCAtMCwwICsxLDMwMyBAQAorRnJvbSA4YWUxNDkwMzVjOTdkMjdjZDJjNjI0NzA0ZDE2NTE4MDZjNTM1NzdlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CitEYXRlOiBXZWQsIDE2IEF1ZyAyMDE3IDAyOjAwOjA4IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0ggMS81XSBwa2djb25maWcKKworVXBkYXRlIGdwZ21lIHRvIHVzZSBwa2djb25maWcgaW5zdGVhZCBvZiAtY29uZmlnIGZpbGVzIHNpbmNlIGl0cworc2ltcGxlciBhbmQgbGVzcyBlcnJvciBwcm9uZSB3aGVuIGNyb3NzIGNvbXBpbGluZy4KKworVXBzdHJlYW0tU3RhdHVzOiBEZW5pZWQgW1Vwc3RyZWFtIG5vdCBpbnRlcmVzdGVkIGluIHBrZy1jb25maWcgc3VwcG9ydF0KK1JQIDIwMTUvNC8xNworCitTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KKworUmViYXNlIHRvIDEuOS4wCisKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgIHwgICAxICsKKyBzcmMvTWFrZWZpbGUuYW0gICAgICAgICB8ICAgNCArLQorIHNyYy9ncGdtZS1wdGhyZWFkLnBjLmluIHwgIDE1ICsrKysrKysKKyBzcmMvZ3BnbWUubTQgICAgICAgICAgICB8IDExNCArKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBzcmMvZ3BnbWUucGMuaW4gICAgICAgICB8ICAxNSArKysrKysrCisgNSBmaWxlcyBjaGFuZ2VkLCA0MiBpbnNlcnRpb25zKCspLCAxMDcgZGVsZXRpb25zKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9ncGdtZS1wdGhyZWFkLnBjLmluCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9ncGdtZS5wYy5pbgorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCAwZGFjNmNlLi42YTllNTA3IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC04NjYsNiArODY2LDcgQEAgQUNfQ09ORklHX0ZJTEVTKE1ha2VmaWxlIHNyYy9NYWtlZmlsZQorICAgICAgICAgICAgICAgICBzcmMvdmVyc2lvbmluZm8ucmMKKyAgICAgICAgICAgICAgICAgc3JjL2dwZ21lLmgpCisgQUNfQ09ORklHX0ZJTEVTKHNyYy9ncGdtZS1jb25maWcsIGNobW9kICt4IHNyYy9ncGdtZS1jb25maWcpCisrQUNfQ09ORklHX0ZJTEVTKHNyYy9ncGdtZS5wYyBzcmMvZ3BnbWUtcHRocmVhZC5wYykKKyBBQ19DT05GSUdfRklMRVMobGFuZy9jcHAvTWFrZWZpbGUgbGFuZy9jcHAvc3JjL01ha2VmaWxlKQorIEFDX0NPTkZJR19GSUxFUyhsYW5nL2NwcC9zcmMvR3BnbWVwcENvbmZpZy13MzIuY21ha2UuaW4pCisgQUNfQ09ORklHX0ZJTEVTKGxhbmcvY3BwL3NyYy9HcGdtZXBwQ29uZmlnLmNtYWtlLmluKQorZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQoraW5kZXggY2U2ZjFkNC4uNWYzOGZlZSAxMDA2NDQKKy0tLSBhL3NyYy9NYWtlZmlsZS5hbQorKysrIGIvc3JjL01ha2VmaWxlLmFtCitAQCAtMTksMTIgKzE5LDE0IEBACisgIyMgUHJvY2VzcyB0aGlzIGZpbGUgd2l0aCBhdXRvbWFrZSB0byBwcm9kdWNlIE1ha2VmaWxlLmluCisgCisgRVhUUkFfRElTVCA9IGdwZ21lLWNvbmZpZy5pbiBncGdtZS5tNCBsaWJncGdtZS52ZXJzIENoYW5nZUxvZy0yMDExIFwKKy0JICAgICBncGdtZS5oLmluIHZlcnNpb25pbmZvLnJjLmluIGdwZ21lLmRlZgorKwkgICAgIGdwZ21lLmguaW4gdmVyc2lvbmluZm8ucmMuaW4gZ3BnbWUuZGVmIGdwZ21lLnBjLmluIGdwZ21lLXB0aHJlYWQucGMuaW4KKyAKKyBiaW5fU0NSSVBUUyA9IGdwZ21lLWNvbmZpZworIG00ZGF0YWRpciA9ICQoZGF0YWRpcikvYWNsb2NhbAorIG00ZGF0YV9EQVRBID0gZ3BnbWUubTQKKyBub2Rpc3RfaW5jbHVkZV9IRUFERVJTID0gZ3BnbWUuaAorK3BrZ2NvbmZpZ2RpciA9ICQobGliZGlyKS9wa2djb25maWcKKytwa2djb25maWdfREFUQSA9IGdwZ21lLnBjIGdwZ21lLXB0aHJlYWQucGMKKyAKKyBiaW5fUFJPR1JBTVMgPSBncGdtZS10b29sCisgCitkaWZmIC0tZ2l0IGEvc3JjL2dwZ21lLXB0aHJlYWQucGMuaW4gYi9zcmMvZ3BnbWUtcHRocmVhZC5wYy5pbgorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjA3NGJiZjYKKy0tLSAvZGV2L251bGwKKysrKyBiL3NyYy9ncGdtZS1wdGhyZWFkLnBjLmluCitAQCAtMCwwICsxLDE1IEBACisrcHJlZml4PUBwcmVmaXhACisrZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAorK2xpYmRpcj1AbGliZGlyQAorK2luY2x1ZGVkaXI9QGluY2x1ZGVkaXJACisrCisrIyBBUEkgaW5mbworK2FwaV92ZXJzaW9uPUBHUEdNRV9DT05GSUdfQVBJX1ZFUlNJT05ACisraG9zdD1AR1BHTUVfQ09ORklHX0hPU1RACisrCisrTmFtZTogZ3BnbWUKKytEZXNjcmlwdGlvbjogR251UEcgTWFkZSBFYXN5IChHUEdNRSkgaXMgYSBDIGxhbmd1YWdlIGxpYnJhcnkgdGhhdCBhbGxvd3MgdG8gYWRkc3VwcG9ydCBmb3IgY3J5cHRvZ3JhcGh5IHRvIGEgcHJvZ3JhbSAoZGVwcmVjYXRlZCkKKytWZXJzaW9uOiBAVkVSU0lPTkAKKytMaWJzOiAtTCR7bGliZGlyfSAtbGdwZ21lIC1scHRocmVhZAorK0NmbGFnczogLUkke2luY2x1ZGVkaXJ9CisrUmVxdWlyZXM6IGxpYmFzc3VhbiBncGctZXJyb3IKK2RpZmYgLS1naXQgYS9zcmMvZ3BnbWUubTQgYi9zcmMvZ3BnbWUubTQKK2luZGV4IDZjMmJlNDQuLmQ4YTc1Y2IgMTAwNjQ0CistLS0gYS9zcmMvZ3BnbWUubTQKKysrKyBiL3NyYy9ncGdtZS5tNAorQEAgLTc5LDcgKzc5LDcgQEAgZG5sIGNvbmZpZyBzY3JpcHQgZG9lcyBub3QgbWF0Y2ggdGhlIGhvc3Qgc3BlY2lmaWNhdGlvbiB0aGUgc2NyaXB0CisgZG5sIGlzIGFkZGVkIHRvIHRoZSBncGdfY29uZmlnX3NjcmlwdF93YXJuIHZhcmlhYmxlLgorIGRubAorIEFDX0RFRlVOKFtBTV9QQVRIX0dQR01FXSwKKy1bIEFDX1JFUVVJUkUoW19BTV9QQVRIX0dQR01FX0NPTkZJR10pZG5sCisrWworICAgdG1wPWlmZWxzZShbJDFdLCAsMTowLjQuMiwkMSkKKyAgIGlmIGVjaG8gIiR0bXAiIHwgZ3JlcCAnOicgPi9kZXYvbnVsbCAyPi9kZXYvbnVsbCA7IHRoZW4KKyAgICAgIHJlcV9ncGdtZV9hcGk9YGVjaG8gIiR0bXAiICAgICB8IHNlZCAncy9cKC4qXCk6XCguKlwpL1wxLydgCitAQCAtODksMzYgKzg5LDEyIEBAIEFDX0RFRlVOKFtBTV9QQVRIX0dQR01FXSwKKyAgICAgIG1pbl9ncGdtZV92ZXJzaW9uPSIkdG1wIgorICAgZmkKKyAKKy0gIEFDX01TR19DSEVDS0lORyhmb3IgR1BHTUUgLSB2ZXJzaW9uID49ICRtaW5fZ3BnbWVfdmVyc2lvbikKKy0gIG9rPW5vCistICBpZiB0ZXN0ICIkR1BHTUVfQ09ORklHIiAhPSAibm8iIDsgdGhlbgorLSAgICByZXFfbWFqb3I9YGVjaG8gJG1pbl9ncGdtZV92ZXJzaW9uIHwgXAorLSAgICAgICAgICAgICAgIHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKVwuXChbWzAtOV1dKlwpL1wxLydgCistICAgIHJlcV9taW5vcj1gZWNobyAkbWluX2dwZ21lX3ZlcnNpb24gfCBcCistICAgICAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXCkvXDIvJ2AKKy0gICAgcmVxX21pY3JvPWBlY2hvICRtaW5fZ3BnbWVfdmVyc2lvbiB8IFwKKy0gICAgICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKS9cMy8nYAorLSAgICBpZiB0ZXN0ICIkZ3BnbWVfdmVyc2lvbl9tYWpvciIgLWd0ICIkcmVxX21ham9yIjsgdGhlbgorLSAgICAgICAgb2s9eWVzCistICAgIGVsc2UKKy0gICAgICAgIGlmIHRlc3QgIiRncGdtZV92ZXJzaW9uX21ham9yIiAtZXEgIiRyZXFfbWFqb3IiOyB0aGVuCistICAgICAgICAgICAgaWYgdGVzdCAiJGdwZ21lX3ZlcnNpb25fbWlub3IiIC1ndCAiJHJlcV9taW5vciI7IHRoZW4KKy0gICAgICAgICAgICAgICBvaz15ZXMKKy0gICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgICAgaWYgdGVzdCAiJGdwZ21lX3ZlcnNpb25fbWlub3IiIC1lcSAiJHJlcV9taW5vciI7IHRoZW4KKy0gICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiJGdwZ21lX3ZlcnNpb25fbWljcm8iIC1nZSAiJHJlcV9taWNybyI7IHRoZW4KKy0gICAgICAgICAgICAgICAgICAgICBvaz15ZXMKKy0gICAgICAgICAgICAgICAgICAgZmkKKy0gICAgICAgICAgICAgICBmaQorLSAgICAgICAgICAgIGZpCistICAgICAgICBmaQorLSAgICBmaQorLSAgZmkKKysgIFBLR19DSEVDS19NT0RVTEVTKEdQR01FLCBbZ3BnbWUgPj0gJG1pbl9ncGdtZV92ZXJzaW9uXSwgW29rPXllc10sIFtvaz1ub10pCisgICBpZiB0ZXN0ICRvayA9IHllczsgdGhlbgorICAgICAgIyBJZiB3ZSBoYXZlIGEgcmVjZW50IEdQR01FLCB3ZSBzaG91bGQgYWxzbyBjaGVjayB0aGF0IHRoZQorICAgICAgIyBBUEkgaXMgY29tcGF0aWJsZS4KKyAgICAgIGlmIHRlc3QgIiRyZXFfZ3BnbWVfYXBpIiAtZ3QgMCA7IHRoZW4KKy0gICAgICAgIHRtcD1gJEdQR01FX0NPTkZJRyAtLWFwaS12ZXJzaW9uIDI+L2Rldi9udWxsIHx8IGVjaG8gMGAKKysgICAgICAgIHRtcD1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1hcGlfdmVyc2lvbiBncGdtZSAyPi9kZXYvbnVsbCB8fCBlY2hvIDBgCisgICAgICAgICBpZiB0ZXN0ICIkdG1wIiAtZ3QgMCA7IHRoZW4KKyAgICAgICAgICAgIGlmIHRlc3QgIiRyZXFfZ3BnbWVfYXBpIiAtbmUgIiR0bXAiIDsgdGhlbgorICAgICAgICAgICAgICBvaz1ubworQEAgLTEyNywxOSArMTAzLDExIEBAIEFDX0RFRlVOKFtBTV9QQVRIX0dQR01FXSwKKyAgICAgIGZpCisgICBmaQorICAgaWYgdGVzdCAkb2sgPSB5ZXM7IHRoZW4KKy0gICAgR1BHTUVfQ0ZMQUdTPWAkR1BHTUVfQ09ORklHIC0tY2ZsYWdzYAorLSAgICBHUEdNRV9MSUJTPWAkR1BHTUVfQ09ORklHIC0tbGlic2AKKy0gICAgQUNfTVNHX1JFU1VMVCh5ZXMpCisgICAgIGlmZWxzZShbJDJdLCAsIDosIFskMl0pCisgICAgIF9BTV9QQVRIX0dQR01FX0NPTkZJR19IT1NUX0NIRUNLCisgICBlbHNlCistICAgIEdQR01FX0NGTEFHUz0iIgorLSAgICBHUEdNRV9MSUJTPSIiCistICAgIEFDX01TR19SRVNVTFQobm8pCisgICAgIGlmZWxzZShbJDNdLCAsIDosIFskM10pCisgICBmaQorLSAgQUNfU1VCU1QoR1BHTUVfQ0ZMQUdTKQorLSAgQUNfU1VCU1QoR1BHTUVfTElCUykKKyBdKQorIAorIGRubCBBTV9QQVRIX0dQR01FX1BUSFJFQUQoW01JTklNVU0tVkVSU0lPTiwKK0BAIC0xNDgsNyArMTE2LDcgQEAgZG5sIFRlc3QgZm9yIGxpYmdwZ21lIGFuZCBkZWZpbmUgR1BHTUVfUFRIUkVBRF9DRkxBR1MKKyBkbmwgIGFuZCBHUEdNRV9QVEhSRUFEX0xJQlMuCisgZG5sCisgQUNfREVGVU4oW0FNX1BBVEhfR1BHTUVfUFRIUkVBRF0sCistWyBBQ19SRVFVSVJFKFtfQU1fUEFUSF9HUEdNRV9DT05GSUddKWRubAorK1sKKyAgIHRtcD1pZmVsc2UoWyQxXSwgLDE6MC40LjIsJDEpCisgICBpZiBlY2hvICIkdG1wIiB8IGdyZXAgJzonID4vZGV2L251bGwgMj4vZGV2L251bGwgOyB0aGVuCisgICAgICByZXFfZ3BnbWVfYXBpPWBlY2hvICIkdG1wIiAgICAgfCBzZWQgJ3MvXCguKlwpOlwoLipcKS9cMS8nYAorQEAgLTE1OCwzOCArMTI2LDEyIEBAIEFDX0RFRlVOKFtBTV9QQVRIX0dQR01FX1BUSFJFQURdLAorICAgICAgbWluX2dwZ21lX3ZlcnNpb249IiR0bXAiCisgICBmaQorIAorLSAgQUNfTVNHX0NIRUNLSU5HKGZvciBHUEdNRSBwdGhyZWFkIC0gdmVyc2lvbiA+PSAkbWluX2dwZ21lX3ZlcnNpb24pCistICBvaz1ubworLSAgaWYgdGVzdCAiJEdQR01FX0NPTkZJRyIgIT0gIm5vIiA7IHRoZW4KKy0gICAgaWYgYCRHUEdNRV9DT05GSUcgLS10aHJlYWQ9cHRocmVhZCAyPiAvZGV2L251bGxgIDsgdGhlbgorLSAgICAgIHJlcV9tYWpvcj1gZWNobyAkbWluX2dwZ21lX3ZlcnNpb24gfCBcCistICAgICAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXCkvXDEvJ2AKKy0gICAgICByZXFfbWlub3I9YGVjaG8gJG1pbl9ncGdtZV92ZXJzaW9uIHwgXAorLSAgICAgICAgICAgICAgIHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKVwuXChbWzAtOV1dKlwpL1wyLydgCistICAgICAgcmVxX21pY3JvPWBlY2hvICRtaW5fZ3BnbWVfdmVyc2lvbiB8IFwKKy0gICAgICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKS9cMy8nYAorLSAgICAgIGlmIHRlc3QgIiRncGdtZV92ZXJzaW9uX21ham9yIiAtZ3QgIiRyZXFfbWFqb3IiOyB0aGVuCistICAgICAgICBvaz15ZXMKKy0gICAgICBlbHNlCistICAgICAgICBpZiB0ZXN0ICIkZ3BnbWVfdmVyc2lvbl9tYWpvciIgLWVxICIkcmVxX21ham9yIjsgdGhlbgorLSAgICAgICAgICBpZiB0ZXN0ICIkZ3BnbWVfdmVyc2lvbl9taW5vciIgLWd0ICIkcmVxX21pbm9yIjsgdGhlbgorLSAgICAgICAgICAgIG9rPXllcworLSAgICAgICAgICBlbHNlCistICAgICAgICAgICAgaWYgdGVzdCAiJGdwZ21lX3ZlcnNpb25fbWlub3IiIC1lcSAiJHJlcV9taW5vciI7IHRoZW4KKy0gICAgICAgICAgICAgIGlmIHRlc3QgIiRncGdtZV92ZXJzaW9uX21pY3JvIiAtZ2UgIiRyZXFfbWljcm8iOyB0aGVuCistICAgICAgICAgICAgICAgIG9rPXllcworLSAgICAgICAgICAgICAgZmkKKy0gICAgICAgICAgICBmaQorLSAgICAgICAgICBmaQorLSAgICAgICAgZmkKKy0gICAgICBmaQorLSAgICBmaQorLSAgZmkKKysgIFBLR19DSEVDS19NT0RVTEVTKEdQR01FX1BUSFJFQUQsIFtncGdtZS1wdGhyZWFkID49ICRtaW5fZ3BnbWVfdmVyc2lvbl0sIFtvaz15ZXNdLCBbb2s9bm9dKQorICAgaWYgdGVzdCAkb2sgPSB5ZXM7IHRoZW4KKyAgICAgICMgSWYgd2UgaGF2ZSBhIHJlY2VudCBHUEdNRSwgd2Ugc2hvdWxkIGFsc28gY2hlY2sgdGhhdCB0aGUKKyAgICAgICMgQVBJIGlzIGNvbXBhdGlibGUuCisgICAgICBpZiB0ZXN0ICIkcmVxX2dwZ21lX2FwaSIgLWd0IDAgOyB0aGVuCistICAgICAgICB0bXA9YCRHUEdNRV9DT05GSUcgLS1hcGktdmVyc2lvbiAyPi9kZXYvbnVsbCB8fCBlY2hvIDBgCisrICAgICAgICB0bXA9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9YXBpX3ZlcnNpb24gZ3BnbWUtcHRocmVhZCAyPi9kZXYvbnVsbCB8fCBlY2hvIDBgCisgICAgICAgICBpZiB0ZXN0ICIkdG1wIiAtZ3QgMCA7IHRoZW4KKyAgICAgICAgICAgIGlmIHRlc3QgIiRyZXFfZ3BnbWVfYXBpIiAtbmUgIiR0bXAiIDsgdGhlbgorICAgICAgICAgICAgICBvaz1ubworQEAgLTE5OCwxOSArMTQwLDExIEBAIEFDX0RFRlVOKFtBTV9QQVRIX0dQR01FX1BUSFJFQURdLAorICAgICAgZmkKKyAgIGZpCisgICBpZiB0ZXN0ICRvayA9IHllczsgdGhlbgorLSAgICBHUEdNRV9QVEhSRUFEX0NGTEFHUz1gJEdQR01FX0NPTkZJRyAtLXRocmVhZD1wdGhyZWFkIC0tY2ZsYWdzYAorLSAgICBHUEdNRV9QVEhSRUFEX0xJQlM9YCRHUEdNRV9DT05GSUcgLS10aHJlYWQ9cHRocmVhZCAtLWxpYnNgCistICAgIEFDX01TR19SRVNVTFQoeWVzKQorICAgICBpZmVsc2UoWyQyXSwgLCA6LCBbJDJdKQorICAgICBfQU1fUEFUSF9HUEdNRV9DT05GSUdfSE9TVF9DSEVDSworICAgZWxzZQorLSAgICBHUEdNRV9QVEhSRUFEX0NGTEFHUz0iIgorLSAgICBHUEdNRV9QVEhSRUFEX0xJQlM9IiIKKy0gICAgQUNfTVNHX1JFU1VMVChubykKKyAgICAgaWZlbHNlKFskM10sICwgOiwgWyQzXSkKKyAgIGZpCistICBBQ19TVUJTVChHUEdNRV9QVEhSRUFEX0NGTEFHUykKKy0gIEFDX1NVQlNUKEdQR01FX1BUSFJFQURfTElCUykKKyBdKQorIAorIAorQEAgLTIyOSwzNiArMTYzLDEyIEBAIEFDX0RFRlVOKFtBTV9QQVRIX0dQR01FX0dMSUJdLAorICAgICAgbWluX2dwZ21lX3ZlcnNpb249IiR0bXAiCisgICBmaQorIAorLSAgQUNfTVNHX0NIRUNLSU5HKGZvciBHUEdNRSAtIHZlcnNpb24gPj0gJG1pbl9ncGdtZV92ZXJzaW9uKQorLSAgb2s9bm8KKy0gIGlmIHRlc3QgIiRHUEdNRV9DT05GSUciICE9ICJubyIgOyB0aGVuCistICAgIHJlcV9tYWpvcj1gZWNobyAkbWluX2dwZ21lX3ZlcnNpb24gfCBcCistICAgICAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXCkvXDEvJ2AKKy0gICAgcmVxX21pbm9yPWBlY2hvICRtaW5fZ3BnbWVfdmVyc2lvbiB8IFwKKy0gICAgICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKS9cMi8nYAorLSAgICByZXFfbWljcm89YGVjaG8gJG1pbl9ncGdtZV92ZXJzaW9uIHwgXAorLSAgICAgICAgICAgICAgIHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKVwuXChbWzAtOV1dKlwpL1wzLydgCistICAgIGlmIHRlc3QgIiRncGdtZV92ZXJzaW9uX21ham9yIiAtZ3QgIiRyZXFfbWFqb3IiOyB0aGVuCistICAgICAgICBvaz15ZXMKKy0gICAgZWxzZQorLSAgICAgICAgaWYgdGVzdCAiJGdwZ21lX3ZlcnNpb25fbWFqb3IiIC1lcSAiJHJlcV9tYWpvciI7IHRoZW4KKy0gICAgICAgICAgICBpZiB0ZXN0ICIkZ3BnbWVfdmVyc2lvbl9taW5vciIgLWd0ICIkcmVxX21pbm9yIjsgdGhlbgorLSAgICAgICAgICAgICAgIG9rPXllcworLSAgICAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICAgICBpZiB0ZXN0ICIkZ3BnbWVfdmVyc2lvbl9taW5vciIgLWVxICIkcmVxX21pbm9yIjsgdGhlbgorLSAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICIkZ3BnbWVfdmVyc2lvbl9taWNybyIgLWdlICIkcmVxX21pY3JvIjsgdGhlbgorLSAgICAgICAgICAgICAgICAgICAgIG9rPXllcworLSAgICAgICAgICAgICAgICAgICBmaQorLSAgICAgICAgICAgICAgIGZpCistICAgICAgICAgICAgZmkKKy0gICAgICAgIGZpCistICAgIGZpCistICBmaQorKyAgUEtHX0NIRUNLX01PRFVMRVMoR1BHTUVfR0xJQiwgW2dwZ21lID49ICRtaW5fZ3BnbWVfdmVyc2lvbiBnbGliLTIuMF0sIFtvaz15ZXNdLCBbb2s9bm9dKSAgCisgICBpZiB0ZXN0ICRvayA9IHllczsgdGhlbgorICAgICAgIyBJZiB3ZSBoYXZlIGEgcmVjZW50IEdQR01FLCB3ZSBzaG91bGQgYWxzbyBjaGVjayB0aGF0IHRoZQorICAgICAgIyBBUEkgaXMgY29tcGF0aWJsZS4KKyAgICAgIGlmIHRlc3QgIiRyZXFfZ3BnbWVfYXBpIiAtZ3QgMCA7IHRoZW4KKy0gICAgICAgIHRtcD1gJEdQR01FX0NPTkZJRyAtLWFwaS12ZXJzaW9uIDI+L2Rldi9udWxsIHx8IGVjaG8gMGAKKysgICAgICAgIHRtcD1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1hcGlfdmVyc2lvbiBncGdtZSAyPi9kZXYvbnVsbCB8fCBlY2hvIDBgCisgICAgICAgICBpZiB0ZXN0ICIkdG1wIiAtZ3QgMCA7IHRoZW4KKyAgICAgICAgICAgIGlmIHRlc3QgIiRyZXFfZ3BnbWVfYXBpIiAtbmUgIiR0bXAiIDsgdGhlbgorICAgICAgICAgICAgICBvaz1ubworQEAgLTI2NywxNyArMTc3LDkgQEAgQUNfREVGVU4oW0FNX1BBVEhfR1BHTUVfR0xJQl0sCisgICAgICBmaQorICAgZmkKKyAgIGlmIHRlc3QgJG9rID0geWVzOyB0aGVuCistICAgIEdQR01FX0dMSUJfQ0ZMQUdTPWAkR1BHTUVfQ09ORklHIC0tZ2xpYiAtLWNmbGFnc2AKKy0gICAgR1BHTUVfR0xJQl9MSUJTPWAkR1BHTUVfQ09ORklHIC0tZ2xpYiAtLWxpYnNgCistICAgIEFDX01TR19SRVNVTFQoeWVzKQorICAgICBpZmVsc2UoWyQyXSwgLCA6LCBbJDJdKQorICAgICBfQU1fUEFUSF9HUEdNRV9DT05GSUdfSE9TVF9DSEVDSworICAgZWxzZQorLSAgICBHUEdNRV9HTElCX0NGTEFHUz0iIgorLSAgICBHUEdNRV9HTElCX0xJQlM9IiIKKy0gICAgQUNfTVNHX1JFU1VMVChubykKKyAgICAgaWZlbHNlKFskM10sICwgOiwgWyQzXSkKKyAgIGZpCistICBBQ19TVUJTVChHUEdNRV9HTElCX0NGTEFHUykKKy0gIEFDX1NVQlNUKEdQR01FX0dMSUJfTElCUykKKyBdKQorZGlmZiAtLWdpdCBhL3NyYy9ncGdtZS5wYy5pbiBiL3NyYy9ncGdtZS5wYy5pbgorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmI2OTUzOWYKKy0tLSAvZGV2L251bGwKKysrKyBiL3NyYy9ncGdtZS5wYy5pbgorQEAgLTAsMCArMSwxNSBAQAorK3ByZWZpeD1AcHJlZml4QAorK2V4ZWNfcHJlZml4PUBleGVjX3ByZWZpeEAKKytsaWJkaXI9QGxpYmRpckAKKytpbmNsdWRlZGlyPUBpbmNsdWRlZGlyQAorKworKyMgQVBJIGluZm8KKythcGlfdmVyc2lvbj1AR1BHTUVfQ09ORklHX0FQSV9WRVJTSU9OQAorK2hvc3Q9QEdQR01FX0NPTkZJR19IT1NUQAorKworK05hbWU6IGdwZ21lCisrRGVzY3JpcHRpb246IEdudVBHIE1hZGUgRWFzeSAoR1BHTUUpIGlzIGEgQyBsYW5ndWFnZSBsaWJyYXJ5IHRoYXQgYWxsb3dzIHRvIGFkZHN1cHBvcnQgZm9yIGNyeXB0b2dyYXBoeSB0byBhIHByb2dyYW0uCisrVmVyc2lvbjogQFZFUlNJT05ACisrTGliczogLUwke2xpYmRpcn0gLWxncGdtZQorK0NmbGFnczogLUkke2luY2x1ZGVkaXJ9CisrUmVxdWlyZXM6IGxpYmFzc3VhbiBncGctZXJyb3IKK1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwMi1ncGdtZS1sYW5nLXB5dGhvbi1ncGctZXJyb3ItY29uZmlnLXNob3VsZC1ub3QtYmUtdXNlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDItZ3BnbWUtbGFuZy1weXRob24tZ3BnLWVycm9yLWNvbmZpZy1zaG91bGQtbm90LWJlLXVzZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMWY4YzkxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDItZ3BnbWUtbGFuZy1weXRob24tZ3BnLWVycm9yLWNvbmZpZy1zaG91bGQtbm90LWJlLXVzZS5wYXRjaApAQCAtMCwwICsxLDY1IEBACitGcm9tIGZiMTY1YzliZDk2YWNhOGM5ZWUzZTQ1MDljOWI2ZTM1ZDIzOGFkMmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDE2IEF1ZyAyMDE3IDAyOjAyOjQ3IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0ggMi81XSBncGdtZS9sYW5nL3B5dGhvbjogZ3BnLWVycm9yLWNvbmZpZyBzaG91bGQgbm90IGJlIHVzZWQuCisKK2dwZy1lcnJvci1jb25maWcgd2FzIG1vZGlmaWVkIGJ5IE9FIHRvIGFsd2F5cyByZXR1cm4gYW4gZXJyb3IuICBTbyB3ZSB3YW50Cit0byBmaW5kIGFuIGFsdGVybmF0aXZlIHdheSB0byByZXRyaWV2ZSB3aGF0ZXZlciBpdCBpcyB3ZSBuZWVkLiAgSXQgdHVybnMKK291dCB0aGF0IHRoZSBzeXN0ZW0gaXMganVzdCB0cnlpbmcgdG8gZmluZCB0aGUgcGF0aCB0byB0aGUgZ3BnLWVycm9yLmgsIHdoaWNoCit3ZSBjYW4gcHVsbCBpbiBmcm9tIHRoZSBTVEFHSU5HX0lOQyBlbnZpcm9ubWVudC4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjaGFuZ2VzIGFyZSBzcGVjaWZpYyB0byBPRV0KKworU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgorCitSZWJhc2UgdG8gMS45LjAKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgbGFuZy9weXRob24vc2V0dXAucHkuaW4gfCAxNSArKy0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xhbmcvcHl0aG9uL3NldHVwLnB5LmluIGIvbGFuZy9weXRob24vc2V0dXAucHkuaW4KK2luZGV4IGJmNGVmYTMuLjdjMzQ0ODcgMTAwNzU1CistLS0gYS9sYW5nL3B5dGhvbi9zZXR1cC5weS5pbgorKysrIGIvbGFuZy9weXRob24vc2V0dXAucHkuaW4KK0BAIC0yNCw3ICsyNCw2IEBAIGltcG9ydCBnbG9iCisgaW1wb3J0IHN1YnByb2Nlc3MKKyAKKyAjIE91dC1vZi10cmVlIGJ1aWxkIG9mIHRoZSBncGcgYmluZGluZ3MuCistZ3BnX2Vycm9yX2NvbmZpZyA9IFsiZ3BnLWVycm9yLWNvbmZpZyJdCisgZ3BnbWVfY29uZmlnX2ZsYWdzID0gWyItLXRocmVhZD1wdGhyZWFkIl0KKyBncGdtZV9jb25maWcgPSBbImdwZ21lLWNvbmZpZyJdICsgZ3BnbWVfY29uZmlnX2ZsYWdzCisgZ3BnbWVfaCA9ICIiCitAQCAtNTIsMTMgKzUxLDYgQEAgZWxzZToKKyAgICAgZGV2bnVsbCA9IG9wZW4ob3MuZGV2bnVsbCwgInciKQorIAorIHRyeToKKy0gICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKGdwZ19lcnJvcl9jb25maWcgKyBbJy0tdmVyc2lvbiddLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PWRldm51bGwpCistZXhjZXB0OgorLSAgICBzeXMuZXhpdCgiQ291bGQgbm90IGZpbmQgZ3BnLWVycm9yLWNvbmZpZy4gICIgKworLSAgICAgICAgICAgICAiUGxlYXNlIGluc3RhbGwgdGhlIGxpYmdwZy1lcnJvciBkZXZlbG9wbWVudCBwYWNrYWdlLiIpCistCistdHJ5OgorICAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoZ3BnbWVfY29uZmlnICsgWyctLXZlcnNpb24nXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1kZXZudWxsKQorIGV4Y2VwdDoKK0BAIC04MSwxMiArNzMsOSBAQCBpZiBub3QgKG1ham9yID4gMSBvciAobWFqb3IgPT0gMSBhbmQgbWlub3IgPj0gNykpOgorIGlmIG5vdCBncGdtZV9oOgorICAgICBncGdtZV9oID0gb3MucGF0aC5qb2luKGdldGNvbmZpZygicHJlZml4IilbMF0sICJpbmNsdWRlIiwgImdwZ21lLmgiKQorIAorLWdwZ19lcnJvcl9wcmVmaXggPSBnZXRjb25maWcoInByZWZpeCIsIGNvbmZpZz1ncGdfZXJyb3JfY29uZmlnKVswXQorLWdwZ19lcnJvcl9oID0gb3MucGF0aC5qb2luKGdwZ19lcnJvcl9wcmVmaXgsICJpbmNsdWRlIiwgImdwZy1lcnJvci5oIikKKytncGdfZXJyb3JfaCA9IG9zLnBhdGguam9pbihvcy5nZXRlbnYoJ1NUQUdJTkdfSU5DRElSJyksICJncGctZXJyb3IuaCIpCisgaWYgbm90IG9zLnBhdGguZXhpc3RzKGdwZ19lcnJvcl9oKToKKy0gICAgZ3BnX2Vycm9yX2ggPSBcCistICAgICAgICBnbG9iLmdsb2Iob3MucGF0aC5qb2luKGdwZ19lcnJvcl9wcmVmaXgsICJpbmNsdWRlIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIioiLCAiZ3BnLWVycm9yLmgiKSlbMF0KKysgICAgc3lzLmV4aXQoImdwZ19lcnJvcl9oIG5vdCBmb3VuZDogJXMiICUgZ3BnX2Vycm9yX2gpCisgCisgcHJpbnQoIkJ1aWxkaW5nIHB5dGhvbiBncGcgbW9kdWxlIHVzaW5nIHt9IGFuZCB7fS4iLmZvcm1hdChncGdtZV9oLCBncGdfZXJyb3JfaCkpCisgCistLSAKKzIuOC4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDAzLUNvcnJlY3RseS1pbnN0YWxsLXB5dGhvbi1tb2R1bGVzLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDMtQ29ycmVjdGx5LWluc3RhbGwtcHl0aG9uLW1vZHVsZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDM4MzMxMQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDAzLUNvcnJlY3RseS1pbnN0YWxsLXB5dGhvbi1tb2R1bGVzLnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK0Zyb20gNjIzMzJlZWM3NTJkZDc5MGY0ZGQwNzFkZmIwZGJlODZiZTM3NzIwMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxNiBBdWcgMjAxNyAwMjowNTozNCAtMDQwMAorU3ViamVjdDogW1BBVENIIDMvNV0gQ29ycmVjdGx5IGluc3RhbGwgcHl0aG9uIG1vZHVsZXMKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CisKK1JlYmFzZSB0byAxLjkuMAorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBsYW5nL3B5dGhvbi9NYWtlZmlsZS5hbSB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvbGFuZy9weXRob24vTWFrZWZpbGUuYW0gYi9sYW5nL3B5dGhvbi9NYWtlZmlsZS5hbQoraW5kZXggZDkxZWFkOS4uNjdmN2NkYyAxMDA2NDQKKy0tLSBhL2xhbmcvcHl0aG9uL01ha2VmaWxlLmFtCisrKysgYi9sYW5nL3B5dGhvbi9NYWtlZmlsZS5hbQorQEAgLTEwNiw2ICsxMDYsNyBAQCBpbnN0YWxsLWV4ZWMtbG9jYWw6CisgCSAgY2QgcHl0aG9uJCR7VkVSU0lPTn0tZ3BnIDsgXAorIAkgICQkUFlUSE9OIHNldHVwLnB5IGluc3RhbGwgXAorIAkgIC0tcHJlZml4ICQoREVTVERJUikkKHByZWZpeCkgXAorKwkgIC0taW5zdGFsbC1saWI9JChERVNURElSKSR7cHl0aG9uZGlyfSBcCisgCSAgLS1yZWNvcmQgZmlsZXMudHh0IFwKKyAJICAtLXZlcmJvc2UgOyBcCisgCSAgY2F0IGZpbGVzLnR4dCA+PiAuLi9pbnN0YWxsX2ZpbGVzLnR4dCA7IFwKKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDQtcHl0aG9uLWltcG9ydC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDA0LXB5dGhvbi1pbXBvcnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTMwNzEwMwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS8wMDA0LXB5dGhvbi1pbXBvcnQucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorRnJvbSBjY2JmMDI4ZWVhODgxNWQzYjE2ZDZjMzRiNTI3MjUzYTZiMTA4ZWMzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KK0RhdGU6IFdlZCwgMTYgQXVnIDIwMTcgMDI6MDY6NDUgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSCA0LzVdIHB5dGhvbiBpbXBvcnQKKworRG9uJ3QgY2hlY2sgZm9yIG91dHB1dCBvbiBzdGRlcnIgdG8ga25vdyBpZiBhbiBpbXBvcnQgd29ya2VkLCBob3N0IGlucHV0cmMgYW5kCitzeXNyb290IHJlYWRsaW5lIGNhbiBjYXVzZSB3YXJuaW5ncyBvbiBzdGRlcnIuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgKGZyb20gYXV0b2NvbmYtYXJjaGl2ZSA4ODNhMmFiZCkKK1NpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CisKK1JlYmFzZSB0byAxLjkuMAorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBtNC9heF9weXRob25fZGV2ZWwubTQgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9tNC9heF9weXRob25fZGV2ZWwubTQgYi9tNC9heF9weXRob25fZGV2ZWwubTQKK2luZGV4IGI5OTBkNWIuLjMxOGIwODkgMTAwNjQ0CistLS0gYS9tNC9heF9weXRob25fZGV2ZWwubTQKKysrKyBiL200L2F4X3B5dGhvbl9kZXZlbC5tNAorQEAgLTEzNyw3ICsxMzcsNyBAQCB2YXJpYWJsZSB0byBjb25maWd1cmUuIFNlZSBgYGNvbmZpZ3VyZSAtLWhlbHAnJyBmb3IgcmVmZXJlbmNlLgorIAkjCisgCUFDX01TR19DSEVDS0lORyhbZm9yIHRoZSBkaXN0dXRpbHMgUHl0aG9uIHBhY2thZ2VdKQorIAlhY19kaXN0dXRpbHNfcmVzdWx0PWAkUFlUSE9OIC1jICJpbXBvcnQgZGlzdHV0aWxzIiAyPiYxYAorLQlpZiB0ZXN0IC16ICIkYWNfZGlzdHV0aWxzX3Jlc3VsdCI7IHRoZW4KKysJaWYgdGVzdCAkPyAtZXEgMDsgdGhlbgorIAkJQUNfTVNHX1JFU1VMVChbeWVzXSkKKyAJZWxzZQorIAkJQUNfTVNHX1JFU1VMVChbbm9dKQorLS0gCisyLjguMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvMDAwNS1ncGdtZS1jb25maWctc2tpcC1hbGwtbGliLW9yLXVzci1saWItZGlyZWN0b3JpZXMtaW4tLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDUtZ3BnbWUtY29uZmlnLXNraXAtYWxsLWxpYi1vci11c3ItbGliLWRpcmVjdG9yaWVzLWluLS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTZjYzdiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lLzAwMDUtZ3BnbWUtY29uZmlnLXNraXAtYWxsLWxpYi1vci11c3ItbGliLWRpcmVjdG9yaWVzLWluLS5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9tIDA2NGFlNDQ0MWUyYzExMzI5NzQ4YTE4MTU3OTg4ZjllOTUzZjk3NTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMTMgQXByIDIwMTcgMTY6NDA6MjcgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSCA1LzVdIGdwZ21lLWNvbmZpZzogc2tpcCBhbGwgL2xpYiogb3IgL3Vzci9saWIqIGRpcmVjdG9yaWVzIGluCisgb3V0cHV0CisKK1RoZSBsb2dpYyB3YXMgbm90IHdvcmtpbmcgaW4gbXVsdGlsaWIgc2V0dXBzIHdoaWNoIHVzZSBvdGhlcgorZGlyZWN0b3J5IG5hbWVzIHRoYW4gcGxhaW4gL2xpYiBvciAvdXNyL2xpYi4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBzcmMvZ3BnbWUtY29uZmlnLmluIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2dwZ21lLWNvbmZpZy5pbiBiL3NyYy9ncGdtZS1jb25maWcuaW4KK2luZGV4IGE0ZDE1MmUuLjgzNDI4NjUgMTAwNjQ0CistLS0gYS9zcmMvZ3BnbWUtY29uZmlnLmluCisrKysgYi9zcmMvZ3BnbWUtY29uZmlnLmluCitAQCAtMTU0LDcgKzE1NCw3IEBAIHdoaWxlIHRlc3QgJCMgLWd0IDA7IGRvCisgICAgICAgICAgICAgZm9yIGkgaW4gJGxpYnMgJHRtcF9sICRhc3N1YW5fbGlicyAkZ3BnX2Vycm9yX2xpYnMgJHRtcF94OyBkbworICAgICAgICAgICAgICAgc2tpcD1ubworICAgICAgICAgICAgICAgY2FzZSAkaSBpbgorLSAgICAgICAgICAgICAgICAgIC1ML3Vzci9saWJ8LUwvbGliKQorKyAgICAgICAgICAgICAgICAgIC1ML3Vzci9saWIqfC1ML2xpYiopCisgICAgICAgICAgICAgICAgICAgICAgIHNraXA9eWVzCisgICAgICAgICAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAgICAgICAgLUwqfC1sKikKKy0tIAorMi44LjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lL3BrZ2NvbmZpZy5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS9wa2djb25maWcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0MWNhYmYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lL3BrZ2NvbmZpZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5NSArMCwwIEBACi1VcGRhdGUgZ3BnbWUgdG8gdXNlIHBrZ2NvbmZpZyBpbnN0ZWFkIG9mIC1jb25maWcgZmlsZXMgc2luY2UgaXRzCi1zaW1wbGVyIGFuZCBsZXNzIGVycm9yIHByb25lIHdoZW4gY3Jvc3MgY29tcGlsaW5nLgotCi1VcHN0cmVhbS1TdGF0dXM6IERlbmllZCBbVXBzdHJlYW0gbm90IGludGVyZXN0ZWQgaW4gcGtnLWNvbmZpZyBzdXBwb3J0XQotUlAgMjAxNS80LzE3Ci0KLVJlYmFzZSB0byAxLjguMAotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gY29uZmlndXJlLmFjICAgICAgICAgICAgfCAgIDEgKwotIHNyYy9NYWtlZmlsZS5hbSAgICAgICAgIHwgICA0ICstCi0gc3JjL2dwZ21lLXB0aHJlYWQucGMuaW4gfCAgMTUgKysrKysrKwotIHNyYy9ncGdtZS5tNCAgICAgICAgICAgIHwgMTE0ICsrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIHNyYy9ncGdtZS5wYy5pbiAgICAgICAgIHwgIDE1ICsrKysrKysKLSA1IGZpbGVzIGNoYW5nZWQsIDQyIGluc2VydGlvbnMoKyksIDEwNyBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2dwZ21lLXB0aHJlYWQucGMuaW4KLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2dwZ21lLnBjLmluCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDBhNjdiNDguLmU0MDJkZDMgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTg3NSw2ICs4NzUsNyBAQCBBQ19DT05GSUdfRklMRVMoTWFrZWZpbGUgc3JjL01ha2VmaWxlCi0gICAgICAgICAgICAgICAgIHNyYy92ZXJzaW9uaW5mby5yYwotICAgICAgICAgICAgICAgICBzcmMvZ3BnbWUuaCkKLSBBQ19DT05GSUdfRklMRVMoc3JjL2dwZ21lLWNvbmZpZywgY2htb2QgK3ggc3JjL2dwZ21lLWNvbmZpZykKLStBQ19DT05GSUdfRklMRVMoc3JjL2dwZ21lLnBjIHNyYy9ncGdtZS1wdGhyZWFkLnBjKQotIEFDX0NPTkZJR19GSUxFUyhsYW5nL2NwcC9NYWtlZmlsZSBsYW5nL2NwcC9zcmMvTWFrZWZpbGUpCi0gQUNfQ09ORklHX0ZJTEVTKGxhbmcvY3BwL3NyYy9HcGdtZXBwQ29uZmlnLXczMi5jbWFrZS5pbikKLSBBQ19DT05GSUdfRklMRVMobGFuZy9jcHAvc3JjL0dwZ21lcHBDb25maWcuY21ha2UuaW4pCi1kaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmFtIGIvc3JjL01ha2VmaWxlLmFtCi1pbmRleCBjZTZmMWQ0Li41ZjM4ZmVlIDEwMDY0NAotLS0tIGEvc3JjL01ha2VmaWxlLmFtCi0rKysgYi9zcmMvTWFrZWZpbGUuYW0KLUBAIC0xOSwxMiArMTksMTQgQEAKLSAjIyBQcm9jZXNzIHRoaXMgZmlsZSB3aXRoIGF1dG9tYWtlIHRvIHByb2R1Y2UgTWFrZWZpbGUuaW4KLSAKLSBFWFRSQV9ESVNUID0gZ3BnbWUtY29uZmlnLmluIGdwZ21lLm00IGxpYmdwZ21lLnZlcnMgQ2hhbmdlTG9nLTIwMTEgXAotLQkgICAgIGdwZ21lLmguaW4gdmVyc2lvbmluZm8ucmMuaW4gZ3BnbWUuZGVmCi0rCSAgICAgZ3BnbWUuaC5pbiB2ZXJzaW9uaW5mby5yYy5pbiBncGdtZS5kZWYgZ3BnbWUucGMuaW4gZ3BnbWUtcHRocmVhZC5wYy5pbgotIAotIGJpbl9TQ1JJUFRTID0gZ3BnbWUtY29uZmlnCi0gbTRkYXRhZGlyID0gJChkYXRhZGlyKS9hY2xvY2FsCi0gbTRkYXRhX0RBVEEgPSBncGdtZS5tNAotIG5vZGlzdF9pbmNsdWRlX0hFQURFUlMgPSBncGdtZS5oCi0rcGtnY29uZmlnZGlyID0gJChsaWJkaXIpL3BrZ2NvbmZpZwotK3BrZ2NvbmZpZ19EQVRBID0gZ3BnbWUucGMgZ3BnbWUtcHRocmVhZC5wYwotIAotIGJpbl9QUk9HUkFNUyA9IGdwZ21lLXRvb2wKLSAKLWRpZmYgLS1naXQgYS9zcmMvZ3BnbWUtcHRocmVhZC5wYy5pbiBiL3NyYy9ncGdtZS1wdGhyZWFkLnBjLmluCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uOTgwYTQ4ZQotLS0tIC9kZXYvbnVsbAotKysrIGIvc3JjL2dwZ21lLXB0aHJlYWQucGMuaW4KLUBAIC0wLDAgKzEsMTUgQEAKLStwcmVmaXg9QHByZWZpeEAKLStleGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACi0rbGliZGlyPUBsaWJkaXJACi0raW5jbHVkZWRpcj1AaW5jbHVkZWRpckAKLSsKLSsjIEFQSSBpbmZvCi0rYXBpX3ZlcnNpb249QEdQR01FX0NPTkZJR19BUElfVkVSU0lPTkAKLStob3N0PUBHUEdNRV9DT05GSUdfSE9TVEAKLSsKLStOYW1lOiBncGdtZQotK0Rlc2NyaXB0aW9uOiBHbnVQRyBNYWRlIEVhc3kgKEdQR01FKSBpcyBhIEMgbGFuZ3VhZ2UgbGlicmFyeSB0aGF0IGFsbG93cyB0byBhZGRzdXBwb3J0IGZvciBjcnlwdG9ncmFwaHkgdG8gYSBwcm9ncmFtIChkZXByZWNhdGVkKQotK1ZlcnNpb246IEBWRVJTSU9OQAotK0xpYnM6IC1MJHtsaWJkaXJ9IC1sZ3BnbWUgLWxwdGhyZWFkCi0rQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0KLStSZXF1aXJlczogbGliYXNzdWFuIGdwZy1lcnJvcgotZGlmZiAtLWdpdCBhL3NyYy9ncGdtZS5tNCBiL3NyYy9ncGdtZS5tNAotaW5kZXggNmMyYmU0NC4uZDhhNzVjYiAxMDA2NDQKLS0tLSBhL3NyYy9ncGdtZS5tNAotKysrIGIvc3JjL2dwZ21lLm00Ci1AQCAtNzksNyArNzksNyBAQCBkbmwgY29uZmlnIHNjcmlwdCBkb2VzIG5vdCBtYXRjaCB0aGUgaG9zdCBzcGVjaWZpY2F0aW9uIHRoZSBzY3JpcHQKLSBkbmwgaXMgYWRkZWQgdG8gdGhlIGdwZ19jb25maWdfc2NyaXB0X3dhcm4gdmFyaWFibGUuCi0gZG5sCi0gQUNfREVGVU4oW0FNX1BBVEhfR1BHTUVdLAotLVsgQUNfUkVRVUlSRShbX0FNX1BBVEhfR1BHTUVfQ09ORklHXSlkbmwKLStbCi0gICB0bXA9aWZlbHNlKFskMV0sICwxOjAuNC4yLCQxKQotICAgaWYgZWNobyAiJHRtcCIgfCBncmVwICc6JyA+L2Rldi9udWxsIDI+L2Rldi9udWxsIDsgdGhlbgotICAgICAgcmVxX2dwZ21lX2FwaT1gZWNobyAiJHRtcCIgICAgIHwgc2VkICdzL1woLipcKTpcKC4qXCkvXDEvJ2AKLUBAIC04OSwzNiArODksMTIgQEAgQUNfREVGVU4oW0FNX1BBVEhfR1BHTUVdLAotICAgICAgbWluX2dwZ21lX3ZlcnNpb249IiR0bXAiCi0gICBmaQotIAotLSAgQUNfTVNHX0NIRUNLSU5HKGZvciBHUEdNRSAtIHZlcnNpb24gPj0gJG1pbl9ncGdtZV92ZXJzaW9uKQotLSAgb2s9bm8KLS0gIGlmIHRlc3QgIiRHUEdNRV9DT05GSUciICE9ICJubyIgOyB0aGVuCi0tICAgIHJlcV9tYWpvcj1gZWNobyAkbWluX2dwZ21lX3ZlcnNpb24gfCBcCi0tICAgICAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXCkvXDEvJ2AKLS0gICAgcmVxX21pbm9yPWBlY2hvICRtaW5fZ3BnbWVfdmVyc2lvbiB8IFwKLS0gICAgICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKS9cMi8nYAotLSAgICByZXFfbWljcm89YGVjaG8gJG1pbl9ncGdtZV92ZXJzaW9uIHwgXAotLSAgICAgICAgICAgICAgIHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKVwuXChbWzAtOV1dKlwpL1wzLydgCi0tICAgIGlmIHRlc3QgIiRncGdtZV92ZXJzaW9uX21ham9yIiAtZ3QgIiRyZXFfbWFqb3IiOyB0aGVuCi0tICAgICAgICBvaz15ZXMKLS0gICAgZWxzZQotLSAgICAgICAgaWYgdGVzdCAiJGdwZ21lX3ZlcnNpb25fbWFqb3IiIC1lcSAiJHJlcV9tYWpvciI7IHRoZW4KLS0gICAgICAgICAgICBpZiB0ZXN0ICIkZ3BnbWVfdmVyc2lvbl9taW5vciIgLWd0ICIkcmVxX21pbm9yIjsgdGhlbgotLSAgICAgICAgICAgICAgIG9rPXllcwotLSAgICAgICAgICAgIGVsc2UKLS0gICAgICAgICAgICAgICBpZiB0ZXN0ICIkZ3BnbWVfdmVyc2lvbl9taW5vciIgLWVxICIkcmVxX21pbm9yIjsgdGhlbgotLSAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICIkZ3BnbWVfdmVyc2lvbl9taWNybyIgLWdlICIkcmVxX21pY3JvIjsgdGhlbgotLSAgICAgICAgICAgICAgICAgICAgIG9rPXllcwotLSAgICAgICAgICAgICAgICAgICBmaQotLSAgICAgICAgICAgICAgIGZpCi0tICAgICAgICAgICAgZmkKLS0gICAgICAgIGZpCi0tICAgIGZpCi0tICBmaQotKyAgUEtHX0NIRUNLX01PRFVMRVMoR1BHTUUsIFtncGdtZSA+PSAkbWluX2dwZ21lX3ZlcnNpb25dLCBbb2s9eWVzXSwgW29rPW5vXSkKLSAgIGlmIHRlc3QgJG9rID0geWVzOyB0aGVuCi0gICAgICAjIElmIHdlIGhhdmUgYSByZWNlbnQgR1BHTUUsIHdlIHNob3VsZCBhbHNvIGNoZWNrIHRoYXQgdGhlCi0gICAgICAjIEFQSSBpcyBjb21wYXRpYmxlLgotICAgICAgaWYgdGVzdCAiJHJlcV9ncGdtZV9hcGkiIC1ndCAwIDsgdGhlbgotLSAgICAgICAgdG1wPWAkR1BHTUVfQ09ORklHIC0tYXBpLXZlcnNpb24gMj4vZGV2L251bGwgfHwgZWNobyAwYAotKyAgICAgICAgdG1wPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWFwaV92ZXJzaW9uIGdwZ21lIDI+L2Rldi9udWxsIHx8IGVjaG8gMGAKLSAgICAgICAgIGlmIHRlc3QgIiR0bXAiIC1ndCAwIDsgdGhlbgotICAgICAgICAgICAgaWYgdGVzdCAiJHJlcV9ncGdtZV9hcGkiIC1uZSAiJHRtcCIgOyB0aGVuCi0gICAgICAgICAgICAgIG9rPW5vCi1AQCAtMTI3LDE5ICsxMDMsMTEgQEAgQUNfREVGVU4oW0FNX1BBVEhfR1BHTUVdLAotICAgICAgZmkKLSAgIGZpCi0gICBpZiB0ZXN0ICRvayA9IHllczsgdGhlbgotLSAgICBHUEdNRV9DRkxBR1M9YCRHUEdNRV9DT05GSUcgLS1jZmxhZ3NgCi0tICAgIEdQR01FX0xJQlM9YCRHUEdNRV9DT05GSUcgLS1saWJzYAotLSAgICBBQ19NU0dfUkVTVUxUKHllcykKLSAgICAgaWZlbHNlKFskMl0sICwgOiwgWyQyXSkKLSAgICAgX0FNX1BBVEhfR1BHTUVfQ09ORklHX0hPU1RfQ0hFQ0sKLSAgIGVsc2UKLS0gICAgR1BHTUVfQ0ZMQUdTPSIiCi0tICAgIEdQR01FX0xJQlM9IiIKLS0gICAgQUNfTVNHX1JFU1VMVChubykKLSAgICAgaWZlbHNlKFskM10sICwgOiwgWyQzXSkKLSAgIGZpCi0tICBBQ19TVUJTVChHUEdNRV9DRkxBR1MpCi0tICBBQ19TVUJTVChHUEdNRV9MSUJTKQotIF0pCi0gCi0gZG5sIEFNX1BBVEhfR1BHTUVfUFRIUkVBRChbTUlOSU1VTS1WRVJTSU9OLAotQEAgLTE0OCw3ICsxMTYsNyBAQCBkbmwgVGVzdCBmb3IgbGliZ3BnbWUgYW5kIGRlZmluZSBHUEdNRV9QVEhSRUFEX0NGTEFHUwotIGRubCAgYW5kIEdQR01FX1BUSFJFQURfTElCUy4KLSBkbmwKLSBBQ19ERUZVTihbQU1fUEFUSF9HUEdNRV9QVEhSRUFEXSwKLS1bIEFDX1JFUVVJUkUoW19BTV9QQVRIX0dQR01FX0NPTkZJR10pZG5sCi0rWwotICAgdG1wPWlmZWxzZShbJDFdLCAsMTowLjQuMiwkMSkKLSAgIGlmIGVjaG8gIiR0bXAiIHwgZ3JlcCAnOicgPi9kZXYvbnVsbCAyPi9kZXYvbnVsbCA7IHRoZW4KLSAgICAgIHJlcV9ncGdtZV9hcGk9YGVjaG8gIiR0bXAiICAgICB8IHNlZCAncy9cKC4qXCk6XCguKlwpL1wxLydgCi1AQCAtMTU4LDM4ICsxMjYsMTIgQEAgQUNfREVGVU4oW0FNX1BBVEhfR1BHTUVfUFRIUkVBRF0sCi0gICAgICBtaW5fZ3BnbWVfdmVyc2lvbj0iJHRtcCIKLSAgIGZpCi0gCi0tICBBQ19NU0dfQ0hFQ0tJTkcoZm9yIEdQR01FIHB0aHJlYWQgLSB2ZXJzaW9uID49ICRtaW5fZ3BnbWVfdmVyc2lvbikKLS0gIG9rPW5vCi0tICBpZiB0ZXN0ICIkR1BHTUVfQ09ORklHIiAhPSAibm8iIDsgdGhlbgotLSAgICBpZiBgJEdQR01FX0NPTkZJRyAtLXRocmVhZD1wdGhyZWFkIDI+IC9kZXYvbnVsbGAgOyB0aGVuCi0tICAgICAgcmVxX21ham9yPWBlY2hvICRtaW5fZ3BnbWVfdmVyc2lvbiB8IFwKLS0gICAgICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKS9cMS8nYAotLSAgICAgIHJlcV9taW5vcj1gZWNobyAkbWluX2dwZ21lX3ZlcnNpb24gfCBcCi0tICAgICAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXCkvXDIvJ2AKLS0gICAgICByZXFfbWljcm89YGVjaG8gJG1pbl9ncGdtZV92ZXJzaW9uIHwgXAotLSAgICAgICAgICAgICAgIHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKVwuXChbWzAtOV1dKlwpL1wzLydgCi0tICAgICAgaWYgdGVzdCAiJGdwZ21lX3ZlcnNpb25fbWFqb3IiIC1ndCAiJHJlcV9tYWpvciI7IHRoZW4KLS0gICAgICAgIG9rPXllcwotLSAgICAgIGVsc2UKLS0gICAgICAgIGlmIHRlc3QgIiRncGdtZV92ZXJzaW9uX21ham9yIiAtZXEgIiRyZXFfbWFqb3IiOyB0aGVuCi0tICAgICAgICAgIGlmIHRlc3QgIiRncGdtZV92ZXJzaW9uX21pbm9yIiAtZ3QgIiRyZXFfbWlub3IiOyB0aGVuCi0tICAgICAgICAgICAgb2s9eWVzCi0tICAgICAgICAgIGVsc2UKLS0gICAgICAgICAgICBpZiB0ZXN0ICIkZ3BnbWVfdmVyc2lvbl9taW5vciIgLWVxICIkcmVxX21pbm9yIjsgdGhlbgotLSAgICAgICAgICAgICAgaWYgdGVzdCAiJGdwZ21lX3ZlcnNpb25fbWljcm8iIC1nZSAiJHJlcV9taWNybyI7IHRoZW4KLS0gICAgICAgICAgICAgICAgb2s9eWVzCi0tICAgICAgICAgICAgICBmaQotLSAgICAgICAgICAgIGZpCi0tICAgICAgICAgIGZpCi0tICAgICAgICBmaQotLSAgICAgIGZpCi0tICAgIGZpCi0tICBmaQotKyAgUEtHX0NIRUNLX01PRFVMRVMoR1BHTUVfUFRIUkVBRCwgW2dwZ21lLXB0aHJlYWQgPj0gJG1pbl9ncGdtZV92ZXJzaW9uXSwgW29rPXllc10sIFtvaz1ub10pCi0gICBpZiB0ZXN0ICRvayA9IHllczsgdGhlbgotICAgICAgIyBJZiB3ZSBoYXZlIGEgcmVjZW50IEdQR01FLCB3ZSBzaG91bGQgYWxzbyBjaGVjayB0aGF0IHRoZQotICAgICAgIyBBUEkgaXMgY29tcGF0aWJsZS4KLSAgICAgIGlmIHRlc3QgIiRyZXFfZ3BnbWVfYXBpIiAtZ3QgMCA7IHRoZW4KLS0gICAgICAgIHRtcD1gJEdQR01FX0NPTkZJRyAtLWFwaS12ZXJzaW9uIDI+L2Rldi9udWxsIHx8IGVjaG8gMGAKLSsgICAgICAgIHRtcD1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1hcGlfdmVyc2lvbiBncGdtZS1wdGhyZWFkIDI+L2Rldi9udWxsIHx8IGVjaG8gMGAKLSAgICAgICAgIGlmIHRlc3QgIiR0bXAiIC1ndCAwIDsgdGhlbgotICAgICAgICAgICAgaWYgdGVzdCAiJHJlcV9ncGdtZV9hcGkiIC1uZSAiJHRtcCIgOyB0aGVuCi0gICAgICAgICAgICAgIG9rPW5vCi1AQCAtMTk4LDE5ICsxNDAsMTEgQEAgQUNfREVGVU4oW0FNX1BBVEhfR1BHTUVfUFRIUkVBRF0sCi0gICAgICBmaQotICAgZmkKLSAgIGlmIHRlc3QgJG9rID0geWVzOyB0aGVuCi0tICAgIEdQR01FX1BUSFJFQURfQ0ZMQUdTPWAkR1BHTUVfQ09ORklHIC0tdGhyZWFkPXB0aHJlYWQgLS1jZmxhZ3NgCi0tICAgIEdQR01FX1BUSFJFQURfTElCUz1gJEdQR01FX0NPTkZJRyAtLXRocmVhZD1wdGhyZWFkIC0tbGlic2AKLS0gICAgQUNfTVNHX1JFU1VMVCh5ZXMpCi0gICAgIGlmZWxzZShbJDJdLCAsIDosIFskMl0pCi0gICAgIF9BTV9QQVRIX0dQR01FX0NPTkZJR19IT1NUX0NIRUNLCi0gICBlbHNlCi0tICAgIEdQR01FX1BUSFJFQURfQ0ZMQUdTPSIiCi0tICAgIEdQR01FX1BUSFJFQURfTElCUz0iIgotLSAgICBBQ19NU0dfUkVTVUxUKG5vKQotICAgICBpZmVsc2UoWyQzXSwgLCA6LCBbJDNdKQotICAgZmkKLS0gIEFDX1NVQlNUKEdQR01FX1BUSFJFQURfQ0ZMQUdTKQotLSAgQUNfU1VCU1QoR1BHTUVfUFRIUkVBRF9MSUJTKQotIF0pCi0gCi0gCi1AQCAtMjI5LDM2ICsxNjMsMTIgQEAgQUNfREVGVU4oW0FNX1BBVEhfR1BHTUVfR0xJQl0sCi0gICAgICBtaW5fZ3BnbWVfdmVyc2lvbj0iJHRtcCIKLSAgIGZpCi0gCi0tICBBQ19NU0dfQ0hFQ0tJTkcoZm9yIEdQR01FIC0gdmVyc2lvbiA+PSAkbWluX2dwZ21lX3ZlcnNpb24pCi0tICBvaz1ubwotLSAgaWYgdGVzdCAiJEdQR01FX0NPTkZJRyIgIT0gIm5vIiA7IHRoZW4KLS0gICAgcmVxX21ham9yPWBlY2hvICRtaW5fZ3BnbWVfdmVyc2lvbiB8IFwKLS0gICAgICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKS9cMS8nYAotLSAgICByZXFfbWlub3I9YGVjaG8gJG1pbl9ncGdtZV92ZXJzaW9uIHwgXAotLSAgICAgICAgICAgICAgIHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKVwuXChbWzAtOV1dKlwpL1wyLydgCi0tICAgIHJlcV9taWNybz1gZWNobyAkbWluX2dwZ21lX3ZlcnNpb24gfCBcCi0tICAgICAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXCkvXDMvJ2AKLS0gICAgaWYgdGVzdCAiJGdwZ21lX3ZlcnNpb25fbWFqb3IiIC1ndCAiJHJlcV9tYWpvciI7IHRoZW4KLS0gICAgICAgIG9rPXllcwotLSAgICBlbHNlCi0tICAgICAgICBpZiB0ZXN0ICIkZ3BnbWVfdmVyc2lvbl9tYWpvciIgLWVxICIkcmVxX21ham9yIjsgdGhlbgotLSAgICAgICAgICAgIGlmIHRlc3QgIiRncGdtZV92ZXJzaW9uX21pbm9yIiAtZ3QgIiRyZXFfbWlub3IiOyB0aGVuCi0tICAgICAgICAgICAgICAgb2s9eWVzCi0tICAgICAgICAgICAgZWxzZQotLSAgICAgICAgICAgICAgIGlmIHRlc3QgIiRncGdtZV92ZXJzaW9uX21pbm9yIiAtZXEgIiRyZXFfbWlub3IiOyB0aGVuCi0tICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIiRncGdtZV92ZXJzaW9uX21pY3JvIiAtZ2UgIiRyZXFfbWljcm8iOyB0aGVuCi0tICAgICAgICAgICAgICAgICAgICAgb2s9eWVzCi0tICAgICAgICAgICAgICAgICAgIGZpCi0tICAgICAgICAgICAgICAgZmkKLS0gICAgICAgICAgICBmaQotLSAgICAgICAgZmkKLS0gICAgZmkKLS0gIGZpCi0rICBQS0dfQ0hFQ0tfTU9EVUxFUyhHUEdNRV9HTElCLCBbZ3BnbWUgPj0gJG1pbl9ncGdtZV92ZXJzaW9uIGdsaWItMi4wXSwgW29rPXllc10sIFtvaz1ub10pICAKLSAgIGlmIHRlc3QgJG9rID0geWVzOyB0aGVuCi0gICAgICAjIElmIHdlIGhhdmUgYSByZWNlbnQgR1BHTUUsIHdlIHNob3VsZCBhbHNvIGNoZWNrIHRoYXQgdGhlCi0gICAgICAjIEFQSSBpcyBjb21wYXRpYmxlLgotICAgICAgaWYgdGVzdCAiJHJlcV9ncGdtZV9hcGkiIC1ndCAwIDsgdGhlbgotLSAgICAgICAgdG1wPWAkR1BHTUVfQ09ORklHIC0tYXBpLXZlcnNpb24gMj4vZGV2L251bGwgfHwgZWNobyAwYAotKyAgICAgICAgdG1wPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWFwaV92ZXJzaW9uIGdwZ21lIDI+L2Rldi9udWxsIHx8IGVjaG8gMGAKLSAgICAgICAgIGlmIHRlc3QgIiR0bXAiIC1ndCAwIDsgdGhlbgotICAgICAgICAgICAgaWYgdGVzdCAiJHJlcV9ncGdtZV9hcGkiIC1uZSAiJHRtcCIgOyB0aGVuCi0gICAgICAgICAgICAgIG9rPW5vCi1AQCAtMjY3LDE3ICsxNzcsOSBAQCBBQ19ERUZVTihbQU1fUEFUSF9HUEdNRV9HTElCXSwKLSAgICAgIGZpCi0gICBmaQotICAgaWYgdGVzdCAkb2sgPSB5ZXM7IHRoZW4KLS0gICAgR1BHTUVfR0xJQl9DRkxBR1M9YCRHUEdNRV9DT05GSUcgLS1nbGliIC0tY2ZsYWdzYAotLSAgICBHUEdNRV9HTElCX0xJQlM9YCRHUEdNRV9DT05GSUcgLS1nbGliIC0tbGlic2AKLS0gICAgQUNfTVNHX1JFU1VMVCh5ZXMpCi0gICAgIGlmZWxzZShbJDJdLCAsIDosIFskMl0pCi0gICAgIF9BTV9QQVRIX0dQR01FX0NPTkZJR19IT1NUX0NIRUNLCi0gICBlbHNlCi0tICAgIEdQR01FX0dMSUJfQ0ZMQUdTPSIiCi0tICAgIEdQR01FX0dMSUJfTElCUz0iIgotLSAgICBBQ19NU0dfUkVTVUxUKG5vKQotICAgICBpZmVsc2UoWyQzXSwgLCA6LCBbJDNdKQotICAgZmkKLS0gIEFDX1NVQlNUKEdQR01FX0dMSUJfQ0ZMQUdTKQotLSAgQUNfU1VCU1QoR1BHTUVfR0xJQl9MSUJTKQotIF0pCi1kaWZmIC0tZ2l0IGEvc3JjL2dwZ21lLnBjLmluIGIvc3JjL2dwZ21lLnBjLmluCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYjY5NTM5ZgotLS0tIC9kZXYvbnVsbAotKysrIGIvc3JjL2dwZ21lLnBjLmluCi1AQCAtMCwwICsxLDE1IEBACi0rcHJlZml4PUBwcmVmaXhACi0rZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAotK2xpYmRpcj1AbGliZGlyQAotK2luY2x1ZGVkaXI9QGluY2x1ZGVkaXJACi0rCi0rIyBBUEkgaW5mbwotK2FwaV92ZXJzaW9uPUBHUEdNRV9DT05GSUdfQVBJX1ZFUlNJT05ACi0raG9zdD1AR1BHTUVfQ09ORklHX0hPU1RACi0rCi0rTmFtZTogZ3BnbWUKLStEZXNjcmlwdGlvbjogR251UEcgTWFkZSBFYXN5IChHUEdNRSkgaXMgYSBDIGxhbmd1YWdlIGxpYnJhcnkgdGhhdCBhbGxvd3MgdG8gYWRkc3VwcG9ydCBmb3IgY3J5cHRvZ3JhcGh5IHRvIGEgcHJvZ3JhbS4KLStWZXJzaW9uOiBAVkVSU0lPTkAKLStMaWJzOiAtTCR7bGliZGlyfSAtbGdwZ21lCi0rQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0KLStSZXF1aXJlczogbGliYXNzdWFuIGdwZy1lcnJvcgotXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCi0tLSAKLTIuOC4xCi0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ncGdtZS9ncGdtZS9weXRob24taW1wb3J0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lL3B5dGhvbi1pbXBvcnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxYjc3YTEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lL3B5dGhvbi1pbXBvcnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1Eb24ndCBjaGVjayBmb3Igb3V0cHV0IG9uIHN0ZGVyciB0byBrbm93IGlmIGFuIGltcG9ydCB3b3JrZWQsIGhvc3QgaW5wdXRyYyBhbmQKLXN5c3Jvb3QgcmVhZGxpbmUgY2FuIGNhdXNlIHdhcm5pbmdzIG9uIHN0ZGVyci4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCAoZnJvbSBhdXRvY29uZi1hcmNoaXZlIDg4M2EyYWJkKQotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotZGlmZiAtLWdpdCBhL200L2F4X3B5dGhvbl9kZXZlbC5tNCBiL200L2F4X3B5dGhvbl9kZXZlbC5tNAotaW5kZXggYjk5MGQ1Yi4uMzE4YjA4OSAxMDA2NDQKLS0tLSBhL200L2F4X3B5dGhvbl9kZXZlbC5tNAotKysrIGIvbTQvYXhfcHl0aG9uX2RldmVsLm00Ci1AQCAtMTM3LDcgKzEzNyw3IEBAIHZhcmlhYmxlIHRvIGNvbmZpZ3VyZS4gU2VlIGBgY29uZmlndXJlIC0taGVscCcnIGZvciByZWZlcmVuY2UuCi0gCSMKLSAJQUNfTVNHX0NIRUNLSU5HKFtmb3IgdGhlIGRpc3R1dGlscyBQeXRob24gcGFja2FnZV0pCi0gCWFjX2Rpc3R1dGlsc19yZXN1bHQ9YCRQWVRIT04gLWMgImltcG9ydCBkaXN0dXRpbHMiIDI+JjFgCi0tCWlmIHRlc3QgLXogIiRhY19kaXN0dXRpbHNfcmVzdWx0IjsgdGhlbgotKwlpZiB0ZXN0ICQ/IC1lcSAwOyB0aGVuCi0gCQlBQ19NU0dfUkVTVUxUKFt5ZXNdKQotIAllbHNlCi0gCQlBQ19NU0dfUkVTVUxUKFtub10pCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvcHl0aG9uLWxhbmctY29uZmlnLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lL3B5dGhvbi1sYW5nLWNvbmZpZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTMyZTQyNi4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWUvcHl0aG9uLWxhbmctY29uZmlnLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotZ3BnbWUvbGFuZy9weXRob246IGdwZy1lcnJvci1jb25maWcgc2hvdWxkIG5vdCBiZSB1c2VkLgotCi1ncGctZXJyb3ItY29uZmlnIHdhcyBtb2RpZmllZCBieSBPRSB0byBhbHdheXMgcmV0dXJuIGFuIGVycm9yLiAgU28gd2Ugd2FudAotdG8gZmluZCBhbiBhbHRlcm5hdGl2ZSB3YXkgdG8gcmV0cmlldmUgd2hhdGV2ZXIgaXQgaXMgd2UgbmVlZC4gIEl0IHR1cm5zCi1vdXQgdGhhdCB0aGUgc3lzdGVtIGlzIGp1c3QgdHJ5aW5nIHRvIGZpbmQgdGhlIHBhdGggdG8gdGhlIGdwZy1lcnJvci5oLCB3aGljaAotd2UgY2FuIHB1bGwgaW4gZnJvbSB0aGUgU1RBR0lOR19JTkMgZW52aXJvbm1lbnQuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY2hhbmdlcyBhcmUgc3BlY2lmaWMgdG8gT0VdCi0KLVNpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KLQotSW5kZXg6IGdwZ21lLTEuOC4wL2xhbmcvcHl0aG9uL3NldHVwLnB5LmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ3BnbWUtMS44LjAub3JpZy9sYW5nL3B5dGhvbi9zZXR1cC5weS5pbgotKysrIGdwZ21lLTEuOC4wL2xhbmcvcHl0aG9uL3NldHVwLnB5LmluCi1AQCAtMjQsNyArMjQsNiBAQCBpbXBvcnQgZ2xvYgotIGltcG9ydCBzdWJwcm9jZXNzCi0gCi0gIyBPdXQtb2YtdHJlZSBidWlsZCBvZiB0aGUgZ3BnIGJpbmRpbmdzLgotLWdwZ19lcnJvcl9jb25maWcgPSBbImdwZy1lcnJvci1jb25maWciXQotIGdwZ21lX2NvbmZpZ19mbGFncyA9IFsiLS10aHJlYWQ9cHRocmVhZCJdCi0gZ3BnbWVfY29uZmlnID0gWyJncGdtZS1jb25maWciXSArIGdwZ21lX2NvbmZpZ19mbGFncwotIGdwZ21lX2ggPSAiIgotQEAgLTUyLDEzICs1MSw2IEBAIGVsc2U6Ci0gICAgIGRldm51bGwgPSBvcGVuKG9zLmRldm51bGwsICJ3IikKLSAKLSB0cnk6Ci0tICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChncGdfZXJyb3JfY29uZmlnICsgWyctLXZlcnNpb24nXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1kZXZudWxsKQotLWV4Y2VwdDoKLS0gICAgc3lzLmV4aXQoIkNvdWxkIG5vdCBmaW5kIGdwZy1lcnJvci1jb25maWcuICAiICsKLS0gICAgICAgICAgICAgIlBsZWFzZSBpbnN0YWxsIHRoZSBsaWJncGctZXJyb3IgZGV2ZWxvcG1lbnQgcGFja2FnZS4iKQotLQotLXRyeToKLSAgICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKGdwZ21lX2NvbmZpZyArIFsnLS12ZXJzaW9uJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9ZGV2bnVsbCkKLSBleGNlcHQ6Ci1AQCAtODEsMTIgKzczLDkgQEAgaWYgbm90IChtYWpvciA+IDEgb3IgKG1ham9yID09IDEgYW5kIG1pbgotIGlmIG5vdCBncGdtZV9oOgotICAgICBncGdtZV9oID0gb3MucGF0aC5qb2luKGdldGNvbmZpZygicHJlZml4IilbMF0sICJpbmNsdWRlIiwgImdwZ21lLmgiKQotIAotLWdwZ19lcnJvcl9wcmVmaXggPSBnZXRjb25maWcoInByZWZpeCIsIGNvbmZpZz1ncGdfZXJyb3JfY29uZmlnKVswXQotLWdwZ19lcnJvcl9oID0gb3MucGF0aC5qb2luKGdwZ19lcnJvcl9wcmVmaXgsICJpbmNsdWRlIiwgImdwZy1lcnJvci5oIikKLStncGdfZXJyb3JfaCA9IG9zLnBhdGguam9pbihvcy5nZXRlbnYoJ1NUQUdJTkdfSU5DRElSJyksICJncGctZXJyb3IuaCIpCi0gaWYgbm90IG9zLnBhdGguZXhpc3RzKGdwZ19lcnJvcl9oKToKLS0gICAgZ3BnX2Vycm9yX2ggPSBcCi0tICAgICAgICBnbG9iLmdsb2Iob3MucGF0aC5qb2luKGdwZ19lcnJvcl9wcmVmaXgsICJpbmNsdWRlIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIioiLCAiZ3BnLWVycm9yLmgiKSlbMF0KLSsgICAgc3lzLmV4aXQoImdwZ19lcnJvcl9oIG5vdCBmb3VuZDogJXMiICUgZ3BnX2Vycm9yX2gpCi0gCi0gcHJpbnQoIkJ1aWxkaW5nIHB5dGhvbiBncGcgbW9kdWxlIHVzaW5nIHt9IGFuZCB7fS4iLmZvcm1hdChncGdtZV9oLCBncGdfZXJyb3JfaCkpCi0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWVfMS44LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWVfMS44LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkZGY2ZWQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lXzEuOC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotU1VNTUFSWSA9ICJIaWdoLWxldmVsIEdudVBHIGVuY3J5cHRpb24vc2lnbmluZyBBUEkiCi1ERVNDUklQVElPTiA9ICJHbnVQRyBNYWRlIEVhc3kgKEdQR01FKSBpcyBhIGxpYnJhcnkgZGVzaWduZWQgdG8gbWFrZSBhY2Nlc3MgdG8gR251UEcgZWFzaWVyIGZvciBhcHBsaWNhdGlvbnMuIEl0IHByb3ZpZGVzIGEgSGlnaC1MZXZlbCBDcnlwdG8gQVBJIGZvciBlbmNyeXB0aW9uLCBkZWNyeXB0aW9uLCBzaWduaW5nLCBzaWduYXR1cmUgdmVyaWZpY2F0aW9uIGFuZCBrZXkgbWFuYWdlbWVudCIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251cGcub3JnL2dwZ21lLmh0bWwiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5nMTBjb2RlLmNvbS9nbnVwZy9pbmRleCIKLQotTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxFU1NFUjttZDU9YmJiNDYxMjExYTMzYjEzNGQ0MmVkNWVlODAyYjM3ZmYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2dwZ21lLmguaW47ZW5kbGluZT0yMzttZDU9MGY3MDU5NjY1YzRiNzg5N2Y0ZjRkMGNiOTNhYTlmOTggXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2VuZ2luZS5oO2VuZGxpbmU9MjI7bWQ1PTRiNmQ4YmEzMTNkOWI1NjRjYzRkNGNmYjE2NDBhZjlkIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9nbnVwZy5vcmcvZG93bmxvYWQvaW5kZXguaHRtbCIKLVNSQ19VUkkgPSAiJHtHTlVQR19NSVJST1J9L2dwZ21lLyR7QlB9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vcGtnY29uZmlnLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3B5dGhvbi1sYW5nLWNvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUNvcnJlY3RseS1pbnN0YWxsLXB5dGhvbi1tb2R1bGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3B5dGhvbi1pbXBvcnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1ncGdtZS1jb25maWctc2tpcC1hbGwtbGliLW9yLXVzci1saWItZGlyZWN0b3JpZXMtaW4tLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3MjJhNDE1MzkwNGI5YjVkYzE1NDg1YTIyZDI5MjYzYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1OTYwOTcyNTdjMmNlMjJlNzQ3NzQxZjhmZjNkN2UyNGY2ZTI2MjMxZmExOThhNDFiMmEwNzJlNjJkMWU1ZDMzIgotCi1ERVBFTkRTID0gImxpYmdwZy1lcnJvciBsaWJhc3N1YW4iCi1SREVQRU5EU18ke1BOfS1jcHAgKz0gImxpYnN0ZGMrKyIKLQotUkRFUEVORFNfcHl0aG9uMi1ncGcgKz0gInB5dGhvbi11bml4YWRtaW4iCi1SREVQRU5EU19weXRob24zLWdwZyArPSAicHl0aG9uMy11bml4YWRtaW4iCi0KLUJJTkNPTkZJRyA9ICIke2JpbmRpcn0vZ3BnbWUtY29uZmlnIgotCi0jIE5vdGUgc2VsZWN0IHB5dGhvbjIgb3IgcHl0aG9uMywgYnV0IHlvdSBjYW4ndCBzZWxlY3QgYm90aCBhdCB0aGUgc2FtZSB0aW1lCi1QQUNLQUdFQ09ORklHID8/PSAicHl0aG9uMyIKLVBBQ0tBR0VDT05GSUdbcHl0aG9uMl0gPSAiLCxweXRob24gc3dpZy1uYXRpdmUsIgotUEFDS0FHRUNPTkZJR1tweXRob24zXSA9ICIsLHB5dGhvbjMgc3dpZy1uYXRpdmUsIgotCi0jIERlZmF1bHQgaW4gY29uZmlndXJlLmFjOiAiY2wgY3BwIHB5dGhvbiBxdCIKLSMgU3VwcG9ydGVkOiAiY2wgY3BwIHB5dGhvbiBweXRob24yIHB5dGhvbjMgcXQiCi0jIHB5dGhvbiBzYXlzICdzZWFyY2ggYW5kIGZpbmQgcHl0aG9uMiBvciBweXRob24zJwotCi0jIEJ1aWxkaW5nIHRoZSBDKysgYmluZGluZ3MgZm9yIG5hdGl2ZSByZXF1aXJlcyBhIEMrKyBjb21waWxlciB3aXRoIEMrKzExCi0jIHN1cHBvcnQuIFNpbmNlIHRoZXNlIGJpbmRpbmdzIGFyZSBjdXJyZW50bHkgbm90IG5lZWRlZCwgd2UgY2FuIGRpc2FibGUgdGhlbS4KLURFRkFVTFRfTEFOR1VBR0VTID0gIiIKLURFRkFVTFRfTEFOR1VBR0VTX2NsYXNzLXRhcmdldCA9ICJjcHAiCi1MQU5HVUFHRVMgPz0gIiR7REVGQVVMVF9MQU5HVUFHRVN9IgotTEFOR1VBR0VTIC49ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24yJywgJyBweXRob24yJywgJycsIGQpfSIKLUxBTkdVQUdFUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMycsICcgcHl0aG9uMycsICcnLCBkKX0iCi0KLVBZVEhPTl9JTkhFUklUID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjInLCAncHl0aG9ubmF0aXZlJywgJycsIGQpfSIKLVBZVEhPTl9JTkhFUklUIC49ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24zJywgJ3B5dGhvbjNuYXRpdmUnLCAnJywgZCl9IgotCi1FWFRSQV9PRUNPTkYgKz0gJy0tZW5hYmxlLWxhbmd1YWdlcz0iJHtMQU5HVUFHRVN9IicKLQotaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyBiaW5jb25maWctZGlzYWJsZWQgcGtnY29uZmlnICR7UFlUSE9OX0lOSEVSSVR9Ci0KLWV4cG9ydCBQS0dfQ09ORklHPSdwa2ctY29uZmlnJwotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLVBBQ0tBR0VTID0rICIke1BOfS1jcHAiCi1QQUNLQUdFUyA9LiAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMicsICdweXRob24yLWdwZyAnLCAnJywgZCl9IgotUEFDS0FHRVMgPS4gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjMnLCAncHl0aG9uMy1ncGcgJywgJycsIGQpfSIKLQotRklMRVNfJHtQTn0tY3BwID0gIiR7bGliZGlyfS9saWJncGdtZXBwLnNvLioiCi1GSUxFU19weXRob24yLWdwZyA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qIgotRklMRVNfcHl0aG9uMy1ncGcgPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKiIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS9jb21tb24tbGlzcC9zb3VyY2UvZ3BnbWUvKiBcCi0gICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9jbWFrZS8qIFwKLSIKLQotQ0ZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1EX19lcnJvcl90X2RlZmluZWQgIgotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCSMgRWxzZSB0aGVzZSBjb3VsZCBiZSB1c2VkIGluIHByZWZlcmVuY2UgdG8gdGhvc2UgaW4gYWNsb2NhbC1jb3B5Ci0Jcm0gLWYgJHtTfS9tNC9ncGctZXJyb3IubTQKLQlybSAtZiAke1N9L200L2xpYmFzc3Vhbi5tNAotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lXzEuOS4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dwZ21lL2dwZ21lXzEuOS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2NWMzNDYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ3BnbWUvZ3BnbWVfMS45LjAuYmIKQEAgLTAsMCArMSw3NyBAQAorU1VNTUFSWSA9ICJIaWdoLWxldmVsIEdudVBHIGVuY3J5cHRpb24vc2lnbmluZyBBUEkiCitERVNDUklQVElPTiA9ICJHbnVQRyBNYWRlIEVhc3kgKEdQR01FKSBpcyBhIGxpYnJhcnkgZGVzaWduZWQgdG8gbWFrZSBhY2Nlc3MgdG8gR251UEcgZWFzaWVyIGZvciBhcHBsaWNhdGlvbnMuIEl0IHByb3ZpZGVzIGEgSGlnaC1MZXZlbCBDcnlwdG8gQVBJIGZvciBlbmNyeXB0aW9uLCBkZWNyeXB0aW9uLCBzaWduaW5nLCBzaWduYXR1cmUgdmVyaWZpY2F0aW9uIGFuZCBrZXkgbWFuYWdlbWVudCIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251cGcub3JnL2dwZ21lLmh0bWwiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5nMTBjb2RlLmNvbS9nbnVwZy9pbmRleCIKKworTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIuMSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxFU1NFUjttZDU9YmJiNDYxMjExYTMzYjEzNGQ0MmVkNWVlODAyYjM3ZmYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2dwZ21lLmguaW47ZW5kbGluZT0yMzttZDU9OWQxNTdkMDhhNjkwNTkzNDRlNmY4MmFiZDJkMjU3ODEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2VuZ2luZS5oO2VuZGxpbmU9MjI7bWQ1PTRiNmQ4YmEzMTNkOWI1NjRjYzRkNGNmYjE2NDBhZjlkIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9nbnVwZy5vcmcvZG93bmxvYWQvaW5kZXguaHRtbCIKK1NSQ19VUkkgPSAiJHtHTlVQR19NSVJST1J9L2dwZ21lLyR7QlB9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1wa2djb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1ncGdtZS1sYW5nLXB5dGhvbi1ncGctZXJyb3ItY29uZmlnLXNob3VsZC1ub3QtYmUtdXNlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtQ29ycmVjdGx5LWluc3RhbGwtcHl0aG9uLW1vZHVsZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1weXRob24taW1wb3J0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUtZ3BnbWUtY29uZmlnLXNraXAtYWxsLWxpYi1vci11c3ItbGliLWRpcmVjdG9yaWVzLWluLS5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMWUwMGJiOGVmMDRkMWQwNWQ1YTBmMTllMTQzODU0YzMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWIyOWZlZGI4YmZhZDc3NWU3MGVhZmFjNWIwNTkwNjIxNjgzYjJkOTg2OWRiOTk0NTY4ZTY0MDFmNDAzNGNlYiIKKworREVQRU5EUyA9ICJsaWJncGctZXJyb3IgbGliYXNzdWFuIgorUkRFUEVORFNfJHtQTn0tY3BwICs9ICJsaWJzdGRjKysiCisKK1JERVBFTkRTX3B5dGhvbjItZ3BnICs9ICJweXRob24tdW5peGFkbWluIgorUkRFUEVORFNfcHl0aG9uMy1ncGcgKz0gInB5dGhvbjMtdW5peGFkbWluIgorCitCSU5DT05GSUcgPSAiJHtiaW5kaXJ9L2dwZ21lLWNvbmZpZyIKKworIyBOb3RlIHNlbGVjdCBweXRob24yIG9yIHB5dGhvbjMsIGJ1dCB5b3UgY2FuJ3Qgc2VsZWN0IGJvdGggYXQgdGhlIHNhbWUgdGltZQorUEFDS0FHRUNPTkZJRyA/Pz0gInB5dGhvbjMiCitQQUNLQUdFQ09ORklHW3B5dGhvbjJdID0gIiwscHl0aG9uIHN3aWctbmF0aXZlLCIKK1BBQ0tBR0VDT05GSUdbcHl0aG9uM10gPSAiLCxweXRob24zIHN3aWctbmF0aXZlLCIKKworIyBEZWZhdWx0IGluIGNvbmZpZ3VyZS5hYzogImNsIGNwcCBweXRob24gcXQiCisjIFN1cHBvcnRlZDogImNsIGNwcCBweXRob24gcHl0aG9uMiBweXRob24zIHF0IgorIyBweXRob24gc2F5cyAnc2VhcmNoIGFuZCBmaW5kIHB5dGhvbjIgb3IgcHl0aG9uMycKKworIyBCdWlsZGluZyB0aGUgQysrIGJpbmRpbmdzIGZvciBuYXRpdmUgcmVxdWlyZXMgYSBDKysgY29tcGlsZXIgd2l0aCBDKysxMQorIyBzdXBwb3J0LiBTaW5jZSB0aGVzZSBiaW5kaW5ncyBhcmUgY3VycmVudGx5IG5vdCBuZWVkZWQsIHdlIGNhbiBkaXNhYmxlIHRoZW0uCitERUZBVUxUX0xBTkdVQUdFUyA9ICIiCitERUZBVUxUX0xBTkdVQUdFU19jbGFzcy10YXJnZXQgPSAiY3BwIgorTEFOR1VBR0VTID89ICIke0RFRkFVTFRfTEFOR1VBR0VTfSIKK0xBTkdVQUdFUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMicsICcgcHl0aG9uMicsICcnLCBkKX0iCitMQU5HVUFHRVMgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjMnLCAnIHB5dGhvbjMnLCAnJywgZCl9IgorCitQWVRIT05fSU5IRVJJVCA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24yJywgJ3B5dGhvbm5hdGl2ZScsICcnLCBkKX0iCitQWVRIT05fSU5IRVJJVCAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMycsICdweXRob24zbmF0aXZlJywgJycsIGQpfSIKKworRVhUUkFfT0VDT05GICs9ICctLWVuYWJsZS1sYW5ndWFnZXM9IiR7TEFOR1VBR0VTfSInCisKK2luaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gYmluY29uZmlnLWRpc2FibGVkIHBrZ2NvbmZpZyAke1BZVEhPTl9JTkhFUklUfQorCitleHBvcnQgUEtHX0NPTkZJRz0ncGtnLWNvbmZpZycKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tY3BwIgorUEFDS0FHRVMgPS4gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjInLCAncHl0aG9uMi1ncGcgJywgJycsIGQpfSIKK1BBQ0tBR0VTID0uICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24zJywgJ3B5dGhvbjMtZ3BnICcsICcnLCBkKX0iCisKK0ZJTEVTXyR7UE59LWNwcCA9ICIke2xpYmRpcn0vbGliZ3BnbWVwcC5zby4qIgorRklMRVNfcHl0aG9uMi1ncGcgPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKiIKK0ZJTEVTX3B5dGhvbjMtZ3BnID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyoiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7ZGF0YWRpcn0vY29tbW9uLWxpc3Avc291cmNlL2dwZ21lLyogXAorICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vY21ha2UvKiBcCisiCisKK0NGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtRF9fZXJyb3JfdF9kZWZpbmVkICIKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwkjIEVsc2UgdGhlc2UgY291bGQgYmUgdXNlZCBpbiBwcmVmZXJlbmNlIHRvIHRob3NlIGluIGFjbG9jYWwtY29weQorCXJtIC1mICR7U30vbTQvZ3BnLWVycm9yLm00CisJcm0gLWYgJHtTfS9tNC9saWJhc3N1YW4ubTQKKwlybSAtZiAke1N9L200L3B5dGhvbi5tNAorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3UuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3UuaW5jCmluZGV4IGZlNDgxMDEuLmExZWY5ZWMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1LmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS5pbmMKQEAgLTE1LDggKzE1LDYgQEAKIFNQRFhfUyA9ICIke1dPUktESVJ9L2ljdSIKIFNUQUdJTkdfSUNVX0RJUl9OQVRJVkUgPSAiJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS8ke0JQTn0vJHtQVn0iCiAKLUNQUEZMQUdTX2FwcGVuZF9saWJjLXVjbGliYyA9ICIgLURVX1RJTUVaT05FPTAiCi0KIEJJTkNPTkZJRyA9ICIke2JpbmRpcn0vaWN1LWNvbmZpZyIKIAogaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGJpbmNvbmZpZwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3UvQ1ZFLTIwMTctMTQ5NTIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS9DVkUtMjAxNy0xNDk1Mi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzU5ZWZjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3UvQ1ZFLTIwMTctMTQ5NTIucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSBmYzgzY2Q4MzI3MjVkMzk2ODAxMWYxMTg2MzdiOWY1ZDIxMmU4NzE3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogT3ZpZGl1IFBhbmFpdCA8b3ZpZGl1LnBhbmFpdEB3aW5kcml2ZXIuY29tPgorRGF0ZTogRnJpLCAxMCBOb3YgMjAxNyAxNjo1MToyNSArMDIwMAorU3ViamVjdDogW1BBVENIXSBSZW1vdmVkIHJlZHVuZGFudCBVVmVjdG9yIGVudHJ5IGNsZWFuIHVwIGZ1bmN0aW9uIGNhbGwuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK0NWRTogQ1ZFLTIwMTctMTQ5NTIKKworU2lnbmVkLW9mZi1ieTogT3ZpZGl1IFBhbmFpdCA8b3ZpZGl1LnBhbmFpdEB3aW5kcml2ZXIuY29tPgorLS0tCisgaTE4bi96b25lbWV0YS5jcHAgfCAxIC0KKyAxIGZpbGUgY2hhbmdlZCwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvaTE4bi96b25lbWV0YS5jcHAgYi9pMThuL3pvbmVtZXRhLmNwcAoraW5kZXggODRhOTY1Ny4uZTE2M2IwMCAxMDA2NDQKKy0tLSBhL2kxOG4vem9uZW1ldGEuY3BwCisrKysgYi9pMThuL3pvbmVtZXRhLmNwcAorQEAgLTY5MCw3ICs2OTAsNiBAQCBab25lTWV0YTo6Y3JlYXRlTWV0YXpvbmVNYXBwaW5ncyhjb25zdCBVbmljb2RlU3RyaW5nICZ0emlkKSB7CisgICAgICAgICAgICAgICAgICAgICBtek1hcHBpbmdzID0gbmV3IFVWZWN0b3IoZGVsZXRlT2xzb25Ub01ldGFNYXBwaW5nRW50cnksIE5VTEwsIHN0YXR1cyk7CisgICAgICAgICAgICAgICAgICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgbXpNYXBwaW5nczsKKy0gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGVPbHNvblRvTWV0YU1hcHBpbmdFbnRyeShlbnRyeSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgdXBydl9mcmVlKGVudHJ5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgIH0KKy0tIAorMi4xMC4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1L2ljdS1wa2dkYXRhLWxhcmdlLWNtZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1L2ljdS1wa2dkYXRhLWxhcmdlLWNtZC5wYXRjaAppbmRleCA2ZTQwNjU5Li5lNzU4YTYyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS9pY3UtcGtnZGF0YS1sYXJnZS1jbWQucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3UvaWN1LXBrZ2RhdGEtbGFyZ2UtY21kLnBhdGNoCkBAIC04LDE0ICs4LDE2IEBACiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAogU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgogLS0tCi0gdG9vbHMvcGtnZGF0YS9wa2dkYXRhLmNwcCB8ICAgIDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKyB0b29scy9wa2dkYXRhL3BrZ2RhdGEuY3BwIHwgNiArKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvdG9vbHMvcGtnZGF0YS9wa2dkYXRhLmNwcCBiL3Rvb2xzL3BrZ2RhdGEvcGtnZGF0YS5jcHAKK2luZGV4IDYwMTY3ZGQuLjUwNmRkMzIgMTAwNjQ0CiAtLS0gYS90b29scy9wa2dkYXRhL3BrZ2RhdGEuY3BwCiArKysgYi90b29scy9wa2dkYXRhL3BrZ2RhdGEuY3BwCi1AQCAtMTAxOSw3ICsxMDE5LDcgQEAgbm9ybWFsX3N5bWxpbmtfbW9kZToKK0BAIC0xMDg0LDcgKzEwODQsNyBAQCBub3JtYWxfc3ltbGlua19tb2RlOgogIAogIHN0YXRpYyBpbnQzMl90IHBrZ19pbnN0YWxsTGlicmFyeShjb25zdCBjaGFyICppbnN0YWxsRGlyLCBjb25zdCBjaGFyICp0YXJnZXREaXIsIFVCb29sIG5vVmVyc2lvbikgewogICAgICBpbnQzMl90IHJlc3VsdCA9IDA7CkBAIC0yNCw2ICsyNiwyNCBAQAogIAogICAgICBzcHJpbnRmKGNtZCwgImNkICVzICYmICVzICVzICVzJXMlcyIsCiAgICAgICAgICAgICAgdGFyZ2V0RGlyLAorQEAgLTExNTIsNyArMTE1Miw3IEBAIHN0YXRpYyBpbnQzMl90IHBrZ19pbnN0YWxsTGlicmFyeShjb25zdCBjaGFyICppbnN0YWxsRGlyLCBjb25zdCBjaGFyICp0YXJnZXREaXIsCisgCisgc3RhdGljIGludDMyX3QgcGtnX2luc3RhbGxDb21tb25Nb2RlKGNvbnN0IGNoYXIgKmluc3RhbGxEaXIsIGNvbnN0IGNoYXIgKmZpbGVOYW1lKSB7CisgICAgIGludDMyX3QgcmVzdWx0ID0gMDsKKy0gICAgY2hhciBjbWRbU01BTExfQlVGRkVSX01BWF9TSVpFXSA9ICIiOworKyAgICBjaGFyIGNtZFtMQVJHRV9CVUZGRVJfTUFYX1NJWkVdID0gIiI7CisgCisgICAgIGlmICghVF9GaWxlU3RyZWFtX2ZpbGVfZXhpc3RzKGluc3RhbGxEaXIpKSB7CisgICAgICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKK0BAIC0xMTg0LDcgKzExODQsNyBAQCBzdGF0aWMgaW50MzJfdCBwa2dfaW5zdGFsbENvbW1vbk1vZGUoY29uc3QgY2hhciAqaW5zdGFsbERpciwgY29uc3QgY2hhciAqZmlsZU5hbQorICNlbmRpZgorIHN0YXRpYyBpbnQzMl90IHBrZ19pbnN0YWxsRmlsZU1vZGUoY29uc3QgY2hhciAqaW5zdGFsbERpciwgY29uc3QgY2hhciAqc3JjRGlyLCBjb25zdCBjaGFyICpmaWxlTGlzdE5hbWUpIHsKKyAgICAgaW50MzJfdCByZXN1bHQgPSAwOworLSAgICBjaGFyIGNtZFtTTUFMTF9CVUZGRVJfTUFYX1NJWkVdID0gIiI7CisrICAgIGNoYXIgY21kW0xBUkdFX0JVRkZFUl9NQVhfU0laRV0gPSAiIjsKKyAKKyAgICAgaWYgKCFUX0ZpbGVTdHJlYW1fZmlsZV9leGlzdHMoaW5zdGFsbERpcikpIHsKKyAgICAgICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogLS0gCi0xLjcuMTAuNAorMS45LjEKIApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3VfNTguMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1XzU4LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3Njg0YTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3VfNTguMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLXJlcXVpcmUgaWN1LmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8uLi9MSUNFTlNFO21kNT0xYjNiNzVjMTc3N2NkNDlhZDVjNmEyNGNkMzM4Y2ZjOSIKLQotZGVmIGljdV9kb3dubG9hZF92ZXJzaW9uKGQpOgotICAgIHB2c3BsaXQgPSBkLmdldFZhcignUFYnKS5zcGxpdCgnLicpCi0gICAgcmV0dXJuIHB2c3BsaXRbMF0gKyAiXyIgKyBwdnNwbGl0WzFdCi0KLUlDVV9QViA9ICIke0BpY3VfZG93bmxvYWRfdmVyc2lvbihkKX0iCi0KLSMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzIwNDg2LwotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKLQotQkFTRV9TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5pY3UtcHJvamVjdC5vcmcvZmlsZXMvaWN1NGMvJHtQVn0vaWN1NGMtJHtJQ1VfUFZ9LXNyYy50Z3oiCi1TUkNfVVJJID0gIiR7QkFTRV9TUkNfVVJJfSBcCi0gICAgICAgICAgIGZpbGU6Ly9pY3UtcGtnZGF0YS1sYXJnZS1jbWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LWluc3RhbGwtbWFueC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWkxOG4tRHJvcC1pbmNsdWRlLXhsb2NhbGUuaC5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIlwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRGlzYWJsZS1MREZMQUdTSUNVRFQtZm9yLUxpbnV4LnBhdGNoIFwKLSAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiZmFjMjEyYjMyYjdlYzdhYjAwN2ExMmRmZjFmM2FlYTEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmIwYTQ0MTAxNTNhOWIyMGRlMGUyMGM3ZDhiNjYwNDlhNzJhZWYyNDRiNTM2ODNkMGQ3NTIxMzcxNjgzZGEwYyIKLQotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspLyIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vZG93bmxvYWQuaWN1LXByb2plY3Qub3JnL2ZpbGVzL2ljdTRjLyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1XzU5LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdV81OS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmYjFiZTgKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdV81OS4xLmJiCkBAIC0wLDAgKzEsMzAgQEAKK3JlcXVpcmUgaWN1LmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8uLi9MSUNFTlNFO21kNT1mZTllMWYyYzUwMDQ2NmQ4ZjE4ZGYyY2QwNjhlNGI3NCIKKworZGVmIGljdV9kb3dubG9hZF92ZXJzaW9uKGQpOgorICAgIHB2c3BsaXQgPSBkLmdldFZhcignUFYnKS5zcGxpdCgnLicpCisgICAgcmV0dXJuIHB2c3BsaXRbMF0gKyAiXyIgKyBwdnNwbGl0WzFdCisKK0lDVV9QViA9ICIke0BpY3VfZG93bmxvYWRfdmVyc2lvbihkKX0iCisKKyMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzIwNDg2LworQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKKworQkFTRV9TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5pY3UtcHJvamVjdC5vcmcvZmlsZXMvaWN1NGMvJHtQVn0vaWN1NGMtJHtJQ1VfUFZ9LXNyYy50Z3oiCitTUkNfVVJJID0gIiR7QkFTRV9TUkNfVVJJfSBcCisgICAgICAgICAgIGZpbGU6Ly9pY3UtcGtnZGF0YS1sYXJnZS1jbWQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZml4LWluc3RhbGwtbWFueC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWkxOG4tRHJvcC1pbmNsdWRlLXhsb2NhbGUuaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxNy0xNDk1Mi5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIlwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRGlzYWJsZS1MREZMQUdTSUNVRFQtZm9yLUxpbnV4LnBhdGNoIFwKKyAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiNTQ5MjNmYTlmYWI1YjJiODNmMjM1ZmI3MjUyM2RlMzciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzEzMmZkYWY5Mzc5NDI5ZDAwNDAwNTIxN2YxMGUwMGI3ZDIzMTlkMGZlYTIyYmRmZGRlZjg5OTFjNDViNzVmZSIKKworVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspLyIKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vZG93bmxvYWQuaWN1LXByb2plY3Qub3JnL2ZpbGVzL2ljdTRjLyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pc28tY29kZXMvaXNvLWNvZGVzXzMuNzQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaXNvLWNvZGVzL2lzby1jb2Rlc18zLjc0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNDM2YTFkLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pc28tY29kZXMvaXNvLWNvZGVzXzMuNzQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1TVU1NQVJZID0gIklTTyBsYW5ndWFnZSwgdGVycml0b3J5LCBjdXJyZW5jeSwgc2NyaXB0IGNvZGVzIGFuZCB0aGVpciB0cmFuc2xhdGlvbnMiCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9wa2ctaXNvY29kZXMuYWxpb3RoLmRlYmlhbi5vcmcvZG93bmxvYWRzL2lzby1jb2Rlcy0ke1BWfS50YXIueHoiCi1TUkNfVVJJW21kNXN1bV0gPSAiZDU0NDg0NzVkMDg3NzU2Yjc4MzkxYjhjNTNjNWI4M2EiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjFmNGYzY2VhOGZlMDlmNWI1Mzc4NDUyMjMwM2EwZTFlN2QwODM5NjRlY2FmMWM3NWIxNDQxZDRkOWVjNmFlZSIKLQotIyBpbmhlcml0IGdldHRleHQgY2Fubm90IGJlIHVzZWQsIGJlY2F1c2UgaXQgYWRkcyBnZXR0ZXh0LW5hdGl2ZSB0byBCQVNFREVQRU5EUyB3aGljaAotIyBhcmUgaW5oaWJpdGVkIGJ5IGFsbGFyY2gKLURFUEVORFMgPSAiZ2V0dGV4dC1uYXRpdmUiCi0KLWluaGVyaXQgYWxsYXJjaCBhdXRvdG9vbHMKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0veG1sLyIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pc28tY29kZXMvaXNvLWNvZGVzXzMuNzUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaXNvLWNvZGVzL2lzby1jb2Rlc18zLjc1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmM2Q1M2MKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaXNvLWNvZGVzL2lzby1jb2Rlc18zLjc1LmJiCkBAIC0wLDAgKzEsMTUgQEAKK1NVTU1BUlkgPSAiSVNPIGxhbmd1YWdlLCB0ZXJyaXRvcnksIGN1cnJlbmN5LCBzY3JpcHQgY29kZXMgYW5kIHRoZWlyIHRyYW5zbGF0aW9ucyIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKKworU1JDX1VSSSA9ICJodHRwczovL3BrZy1pc29jb2Rlcy5hbGlvdGguZGViaWFuLm9yZy9kb3dubG9hZHMvaXNvLWNvZGVzLSR7UFZ9LnRhci54eiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI5YmExNzNiNjlkNDM2MDAwMzQxNGYyMzgzNzU5N2E5MiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3MzM1ZTAzMDFjZDc3Y2Q0ZWUwMTliZjVkMzcwOWFhNzkzMDlkNDlkZDY2ZTg1YmEzNTBjYWY2N2UwMGIwMGNkIgorCisjIGluaGVyaXQgZ2V0dGV4dCBjYW5ub3QgYmUgdXNlZCwgYmVjYXVzZSBpdCBhZGRzIGdldHRleHQtbmF0aXZlIHRvIEJBU0VERVBFTkRTIHdoaWNoCisjIGFyZSBpbmhpYml0ZWQgYnkgYWxsYXJjaAorREVQRU5EUyA9ICJnZXR0ZXh0LW5hdGl2ZSIKKworaW5oZXJpdCBhbGxhcmNoIGF1dG90b29scworCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS94bWwvIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmF0b21pYy1vcHMvbGliYXRvbWljLW9wc183LjQuNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJhdG9taWMtb3BzL2xpYmF0b21pYy1vcHNfNy40LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzMGMxYjguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmF0b21pYy1vcHMvbGliYXRvbWljLW9wc183LjQuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLVNVTU1BUlkgPSAiQSBsaWJyYXJ5IGZvciBhdG9taWMgaW50ZWdlciBvcGVyYXRpb25zIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2l2bWFpL2xpYmF0b21pY19vcHMvIgotU0VDVElPTiA9ICJvcHRpb25hbCIKLVBST1ZJREVTICs9ICJsaWJhdG9taWNzLW9wcyIKLUxJQ0VOU0UgPSAiR1BMdjIgJiBNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kb2MvTElDRU5TSU5HLnR4dDttZDU9ZTAwZGQ1YzhhYzAzYTE0YzVhZTUyMjVhNDUyNWZhMmQgXAotCQkgICAiCi0KLVNSQ19VUkkgPSAiXAotCWh0dHA6Ly93d3cuaXZtYWlzb2Z0LmNvbS9fYmluL2F0b21pY19vcHMvbGliYXRvbWljX29wcy0ke1BWfS50YXIuZ3ogXAotCWZpbGU6Ly8wMDAxLUFkZC1pbml0aWFsLW5pb3MyLWFyY2hpdGVjdHVyZS1zdXBwb3J0LnBhdGNoIFwKLQkiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0MjZkODA0YmFhZTEyYzM3Mjk2N2E2ZDE4M2UyNWFmMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiZjIxMGE2MDBkZDFiZWNiZjc5MzZkZDI5MTRjZjVmNWQzMzU2MDQ2OTA0ODQ4ZGNmZDI3ZDBjOGIxMmI2ZjhmIgotCi1TID0gIiR7V09SS0RJUn0vbGliYXRvbWljX29wcy0ke1BWfSIKLQotQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKLQotQVJNX0lOU1RSVUNUSU9OX1NFVCA9ICJhcm0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQkjIHRob3NlIGNvbnRhaW4gb25seSBkb2NzLCBub3QgbmVjZXNzYXJ5IGZvciBub3cuCi0JaW5zdGFsbCAtbSAwNzU1IC1kICR7RH0ke2RvY2Rpcn0KLQltdiAke0R9JHtkYXRhZGlyfS9saWJhdG9taWNfb3BzICR7RH0ke2RvY2Rpcn0vJHtCUE59Ci19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJhdG9taWMtb3BzL2xpYmF0b21pYy1vcHNfNy42LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYXRvbWljLW9wcy9saWJhdG9taWMtb3BzXzcuNi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0NjNkODYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYXRvbWljLW9wcy9saWJhdG9taWMtb3BzXzcuNi4wLmJiCkBAIC0wLDAgKzEsMjAgQEAKK1NVTU1BUlkgPSAiQSBsaWJyYXJ5IGZvciBhdG9taWMgaW50ZWdlciBvcGVyYXRpb25zIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2l2bWFpL2xpYmF0b21pY19vcHMvIgorU0VDVElPTiA9ICJvcHRpb25hbCIKK1BST1ZJREVTICs9ICJsaWJhdG9taWNzLW9wcyIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kb2MvTElDRU5TSU5HLnR4dDttZDU9ZTAwZGQ1YzhhYzAzYTE0YzVhZTUyMjVhNDUyNWZhMmQgXAorCQkgICAiCitQViAuPSAiK2dpdCR7U1JDUFZ9IgorCitTUkNSRVYgPSAiNzNjNjBjNWVmMWVkMzcwMTExNTQ5ZWU1YWFiNmQ0MDIwYmE3MGVkNCIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9pdm1haS9saWJhdG9taWNfb3BzIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2QvMDAwMi1SZW1vdmUtZnVub3Blbi5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkLzAwMDItUmVtb3ZlLWZ1bm9wZW4ucGF0Y2gKaW5kZXggODNjZTdjOC4uNjBkYTE1ZSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2QvMDAwMi1SZW1vdmUtZnVub3Blbi5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYnNkL2xpYmJzZC8wMDAyLVJlbW92ZS1mdW5vcGVuLnBhdGNoCkBAIC0xNSwxNyArMTUsMTcgQEAKICAzIGZpbGVzIGNoYW5nZWQsIDMgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9tYW4vTWFrZWZpbGUuYW0gYi9tYW4vTWFrZWZpbGUuYW0KLWluZGV4IGU0ZDZlNGEuLmM3MDFkOTQgMTAwNjQ0CitpbmRleCAyODE5MmMwLi5hMjI3ODdkIDEwMDY0NAogLS0tIGEvbWFuL01ha2VmaWxlLmFtCiArKysgYi9tYW4vTWFrZWZpbGUuYW0KLUBAIC0yOSw3ICsyOSw2IEBAIGRpc3RfbWFuX01BTlMgPSBcCi0gCWZsb3Blbi4zIFwKLSAJZm10Y2hlY2suMyBcCi0gCWZwYXJzZWxuLjMgXAorQEAgLTE2OCw3ICsxNjgsNiBAQCBkaXN0X21hbl9NQU5TID0gXAorIAlmbXRjaGVjay4zYnNkIFwKKyAJZnBhcnNlbG4uM2JzZCBcCisgCWZwdXJnZS4zYnNkIFwKIC0JZnVub3Blbi4zYnNkIFwKLSAJZ2V0YnNpemUuMyBcCi0gCWdldG1vZGUuMyBcCi0gCWdldHBlZXJlaWQuMyBcCisgCWdldGJzaXplLjNic2QgXAorIAlnZXRtb2RlLjNic2QgXAorIAlnZXRwZWVyZWlkLjNic2QgXAogZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQogaW5kZXggYWQ4M2RiZi4uMTMyMjVhMyAxMDA2NDQKIC0tLSBhL3NyYy9NYWtlZmlsZS5hbQpAQCAtMzksNyArMzksNyBAQAogIAlnZXRwZWVyZWlkLmMgXAogIAloYXNoL21kNS5jIFwKIGRpZmYgLS1naXQgYS90ZXN0L01ha2VmaWxlLmFtIGIvdGVzdC9NYWtlZmlsZS5hbQotaW5kZXggYTc1YzhmZi4uZTNhMWQ0MSAxMDA2NDQKK2luZGV4IGQ4NjUzOWEuLmIzMmVkMmUgMTAwNjQ0CiAtLS0gYS90ZXN0L01ha2VmaWxlLmFtCiArKysgYi90ZXN0L01ha2VmaWxlLmFtCiBAQCAtMzYsNyArMzYsNiBAQCBjaGVja19QUk9HUkFNUyA9IFwKQEAgLTUwLDYgKzUwLDMgQEAKICAJZnBhcnNlbG4gXAogIAlmcHVyZ2UgXAogIAltZDUgXAotLS0gCi0yLjEwLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2QvMDAwMy1GaXgtYnVpbGQtYnJlYWtzLWR1ZS10by1taXNzaW5nLWEub3V0LmgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYnNkL2xpYmJzZC8wMDAzLUZpeC1idWlsZC1icmVha3MtZHVlLXRvLW1pc3NpbmctYS5vdXQuaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTc2ZDk0MC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYnNkL2xpYmJzZC8wMDAzLUZpeC1idWlsZC1icmVha3MtZHVlLXRvLW1pc3NpbmctYS5vdXQuaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzMCArMCwwIEBACi1Gcm9tIGExYjkzYzI1MzExODM0ZjJmNDExZTliZmUyZTYxNjg5OWJhMjEyMmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU3VuLCA2IE5vdiAyMDE2IDEwOjIzOjU1IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMy8zXSBGaXggYnVpbGQgYnJlYWtzIGR1ZSB0byBtaXNzaW5nIGEub3V0LmgKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBpbmNsdWRlL2JzZC9ubGlzdC5oICAgICAgICAgICAgICAgICAgICAgfCAgMSAtCi0gaW5jbHVkZS9ic2Qvbmxpc3QuaCA9PiBzcmMvbG9jYWwtYW91dC5oIHwgNDcgKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCi0gc3JjL25saXN0LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDkgKysrKysrKwotIDMgZmlsZXMgY2hhbmdlZCwgNDEgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCi0gY29weSBpbmNsdWRlL2JzZC9ubGlzdC5oID0+IHNyYy9sb2NhbC1hb3V0LmggKDYzJSkKLQotZGlmZiAtLWdpdCBhL2luY2x1ZGUvYnNkL25saXN0LmggYi9pbmNsdWRlL2JzZC9ubGlzdC5oCi1pbmRleCAwMzg5YWI3Li45YzdlM2Q4IDEwMDY0NAotLS0tIGEvaW5jbHVkZS9ic2Qvbmxpc3QuaAotKysrIGIvaW5jbHVkZS9ic2Qvbmxpc3QuaAotQEAgLTI4LDcgKzI4LDYgQEAKLSAjZGVmaW5lIExJQkJTRF9OTElTVF9ICi0gCi0gI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotLSNpbmNsdWRlIDxhLm91dC5oPgotIAotIC8qIF9fQkVHSU5fREVDTFMgKi8KLSAjaWZkZWYgX19jcGx1c3BsdXMKLWRpZmYgLS1naXQgYS9pbmNsdWRlL2JzZC9ubGlzdC5oIGIvc3JjL2xvY2FsLWFvdXQuaAotc2ltaWxhcml0eSBpbmRleCA2MyUKLWNvcHkgZnJvbSBpbmNsdWRlL2JzZC9ubGlzdC5oCi1jb3B5IHRvIHNyYy9sb2NhbC1hb3V0LmgKLWluZGV4IDAzODlhYjcuLjJhZGI5M2UgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL2JzZC9ubGlzdC5oCi0rKysgYi9zcmMvbG9jYWwtYW91dC5oCi1AQCAtMSw1ICsxLDUgQEAKLSAvKgotLSAqIENvcHlyaWdodCDCqSAyMDA5IEd1aWxsZW0gSm92ZXIgPGd1aWxsZW1AaGFkcm9ucy5vcmc+Ci0rICogQ29weXJpZ2h0IMKpIDIwMTYgS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLSAgKgotICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotQEAgLTI0LDIwICsyNCwzNyBAQAotICAqIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICAqLwotIAotLSNpZm5kZWYgTElCQlNEX05MSVNUX0gKLS0jZGVmaW5lIExJQkJTRF9OTElTVF9ICi0rI2lmbmRlZiBMSUJCU0RfTE9DQUxfQU9VVF9ICi0rI2RlZmluZSBMSUJCU0RfTE9DQUxfQU9VVF9ICi0gCi0tI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotLSNpbmNsdWRlIDxhLm91dC5oPgotKyNkZWZpbmUgTl9VTkRGICAwCi0rI2RlZmluZSBOX0FCUyAgIDIKLSsjZGVmaW5lIE5fVEVYVCAgNAotKyNkZWZpbmUgTl9EQVRBICA2Ci0rI2RlZmluZSBOX0JTUyAgIDgKLSsjZGVmaW5lIE5fRk4gICAgMTUKLSsjZGVmaW5lIE5fRVhUICAgMQotKyNkZWZpbmUgTl9UWVBFICAwMzYKLSsjZGVmaW5lIE5fU1RBQiAgMDM0MAotKyNkZWZpbmUgTl9JTkRSICAweGEKLSsjZGVmaW5lIE5fU0VUQSAgMHgxNCAgICAvKiBBYnNvbHV0ZSBzZXQgZWxlbWVudCBzeW1ib2wuICAqLwotKyNkZWZpbmUgTl9TRVRUICAweDE2ICAgIC8qIFRleHQgc2V0IGVsZW1lbnQgc3ltYm9sLiAgKi8KLSsjZGVmaW5lIE5fU0VURCAgMHgxOCAgICAvKiBEYXRhIHNldCBlbGVtZW50IHN5bWJvbC4gICovCi0rI2RlZmluZSBOX1NFVEIgIDB4MUEgICAgLyogQnNzIHNldCBlbGVtZW50IHN5bWJvbC4gICovCi0rI2RlZmluZSBOX1NFVFYgIDB4MUMgICAgLyogUG9pbnRlciB0byBzZXQgdmVjdG9yIGluIGRhdGEgYXJlYS4gICovCi0gCi0tLyogX19CRUdJTl9ERUNMUyAqLwotLSNpZmRlZiBfX2NwbHVzcGx1cwotLWV4dGVybiAiQyIgewotLSNlbmRpZgotLWV4dGVybiBpbnQgbmxpc3QoY29uc3QgY2hhciAqZmlsZW5hbWUsIHN0cnVjdCBubGlzdCAqbGlzdCk7Ci0tI2lmZGVmIF9fY3BsdXNwbHVzCi0tfQotLSNlbmRpZgotLS8qIF9fRU5EX0RFQ0xTICovCi0rc3RydWN0IG5saXN0Ci0rewotKyAgdW5pb24KLSsgICAgewotKyAgICAgIGNoYXIgKm5fbmFtZTsKLSsgICAgICBzdHJ1Y3Qgbmxpc3QgKm5fbmV4dDsKLSsgICAgICBsb25nIG5fc3RyeDsKLSsgICAgfSBuX3VuOwotKyAgdW5zaWduZWQgY2hhciBuX3R5cGU7Ci0rICBjaGFyIG5fb3RoZXI7Ci0rICBzaG9ydCBuX2Rlc2M7Ci0rICB1bnNpZ25lZCBsb25nIG5fdmFsdWU7Ci0rfTsKLSAKLS0jZW5kaWYKLSsjZW5kaWYgLyogTElCQlNEX0xPQ0FMX0FPVVRfSCAqLwotZGlmZiAtLWdpdCBhL3NyYy9ubGlzdC5jIGIvc3JjL25saXN0LmMKLWluZGV4IDBjZmZlNTUuLjYyNWQzMTAgMTAwNjQ0Ci0tLS0gYS9zcmMvbmxpc3QuYwotKysrIGIvc3JjL25saXN0LmMKLUBAIC00MCw3ICs0MCwxMSBAQCBzdGF0aWMgY2hhciBzY2NzaWRbXSA9ICJAKCMpbmxpc3QuYwk4LjEgKEJlcmtlbGV5KSA2LzQvOTMiOwotIAotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxmY250bC5oPgotKyNpZmRlZiBfX0dMSUJDX18KLSAjaW5jbHVkZSA8YS5vdXQuaD4KLSsjZWxzZQotKyNkZWZpbmUgX19OT19BX09VVF9TVVBQT1JUCi0rI2VuZGlmCi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLUBAIC00OCwxMiArNTIsMTcgQEAgc3RhdGljIGNoYXIgc2Njc2lkW10gPSAiQCgjKW5saXN0LmMJOC4xIChCZXJrZWxleSkgNi80LzkzIjsKLSAjaWYgIWRlZmluZWQoX19OT19BX09VVF9TVVBQT1JUKQotICNkZWZpbmUgX05MSVNUX0RPX0FPVVQKLSAjZW5kaWYKLSsKLSAjZGVmaW5lIF9OTElTVF9ET19FTEYKLSAKLSAjaWZkZWYgX05MSVNUX0RPX0VMRgotICNpbmNsdWRlICJsb2NhbC1lbGYuaCIKLSAjZW5kaWYKLSAKLSsjaWZkZWYgX05MSVNUX0RPX0VMRgotKyNpbmNsdWRlICJsb2NhbC1hb3V0LmgiCi0rI2VuZGlmCi0rCi0gI2RlZmluZSBTSVpFX1RfTUFYIDB4ZmZmZmZmZmZVCi0gCi0gI2lmZGVmIF9OTElTVF9ET19BT1VUCi0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYnNkL2xpYmJzZF8wLjguMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkXzAuOC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlODVlZTIxLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkXzAuOC4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTMgS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLSMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQgZm9yIHRoZSB0ZXJtcykKLQotU1VNTUFSWSA9ICJMaWJyYXJ5IG9mIHV0aWxpdHkgZnVuY3Rpb25zIGZyb20gQlNEIHN5c3RlbXMiCi1ERVNDUklQVElPTiA9ICJUaGlzIGxpYnJhcnkgcHJvdmlkZXMgdXNlZnVsIGZ1bmN0aW9ucyBjb21tb25seSBmb3VuZCBvbiBCU0Qgc3lzdGVtcywgXAotICAgICAgICAgICAgICAgYW5kIGxhY2tpbmcgb24gb3RoZXJzIGxpa2UgR05VIHN5c3RlbXMsIHRodXMgbWFraW5nIGl0IGVhc2llciB0byBwb3J0IFwKLSAgICAgICAgICAgICAgIHByb2plY3RzIHdpdGggc3Ryb25nIEJTRCBvcmlnaW5zLCB3aXRob3V0IG5lZWRpbmcgdG8gZW1iZWQgdGhlIHNhbWUgXAotICAgICAgICAgICAgICAgY29kZSBvdmVyIGFuZCBvdmVyIGFnYWluIG9uIGVhY2ggcHJvamVjdC4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly9saWJic2QuZnJlZWRlc2t0b3Aub3JnL3dpa2kvIgotIyBUaGVyZSBzZWVtcyB0byBiZSBtb3JlIGxpY2Vuc2VzIHVzZWQgaW4gdGhlIGNvZGUsIEkgZG9uJ3QgdGhpbmsgd2Ugd2FudCB0byBsaXN0IHRoZW0gYWxsIGhlcmUsIGNvbXBsZXRlIGxpc3Q6Ci0jIE9FIEAgfi9wcm9qZWN0cy9saWJic2QgJCBncmVwIF5MaWNlbnNlOiBDT1BZSU5HICB8IHNvcnQKLSMgTGljZW5zZTogQlNELTItY2xhdXNlCi0jIExpY2Vuc2U6IEJTRC0yLWNsYXVzZQotIyBMaWNlbnNlOiBCU0QtMi1jbGF1c2UtTmV0QlNECi0jIExpY2Vuc2U6IEJTRC0yLWNsYXVzZS1hdXRob3IKLSMgTGljZW5zZTogQlNELTItY2xhdXNlLXZlcmJhdGltCi0jIExpY2Vuc2U6IEJTRC0zLWNsYXVzZQotIyBMaWNlbnNlOiBCU0QtMy1jbGF1c2UKLSMgTGljZW5zZTogQlNELTMtY2xhdXNlCi0jIExpY2Vuc2U6IEJTRC0zLWNsYXVzZS1QZXRlci1XZW1tCi0jIExpY2Vuc2U6IEJTRC0zLWNsYXVzZS1SZWdlbnRzCi0jIExpY2Vuc2U6IEJTRC00LWNsYXVzZS1DaHJpc3RvcGhlci1HLURlbWV0cmlvdQotIyBMaWNlbnNlOiBCU0QtNC1jbGF1c2UtTmllbHMtUHJvdm9zCi0jIExpY2Vuc2U6IEJTRC01LWNsYXVzZS1QZXRlci1XZW1tCi0jIExpY2Vuc2U6IEJlZXJ3YXJlCi0jIExpY2Vuc2U6IEV4cGF0Ci0jIExpY2Vuc2U6IElTQwotIyBMaWNlbnNlOiBJU0MtT3JpZ2luYWwKLSMgTGljZW5zZTogcHVibGljLWRvbWFpbgotIyBMaWNlbnNlOiBwdWJsaWMtZG9tYWluLUNvbGluLVBsdW1iCi1MSUNFTlNFID0gIkJTRC00LUNsYXVzZSAmIElTQyAmIFBEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MGI5Yzg5ZDg2MTkxNWI4NjY1NWI5NmU1ZTMyZmEyYWEiCi1TRUNUSU9OID0gImxpYnMiCi0KLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vbGliYnNkLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IFwKLSAgICBmaWxlOi8vMDAwMS1zcmMtbGliYnNkLW92ZXJsYXkucGMuaW4tU2V0LUNmbGFncy10by11c2UtSS1pbnN0ZWFkLnBhdGNoIFwKLSIKLVNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCAgPSAiIFwKLSAgICBmaWxlOi8vMDAwMS1SZXBsYWNlLV9fQkVHSU5fREVDTFMtYW5kLV9fRU5EX0RFQ0xTLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMi1SZW1vdmUtZnVub3Blbi5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDMtRml4LWJ1aWxkLWJyZWFrcy1kdWUtdG8tbWlzc2luZy1hLm91dC5oLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gImU5MzVjMWJiNmNjOThhNGE0M2NiMWRhMjI3OTU0OTNhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkzNGI2MzRmNGRmZDg2NWI2NDgyNjUwYjhmNTIyYzcwYWU2NWM0NjM1MjlkZThiZTkwN2I1M2M4OWMzYTM0YTgiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYnNkL2xpYmJzZF8wLjguNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkXzAuOC42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4MjU0M2YKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYnNkL2xpYmJzZF8wLjguNi5iYgpAQCAtMCwwICsxLDUwIEBACisjIENvcHlyaWdodCAoQykgMjAxMyBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorIyBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLk1JVCBmb3IgdGhlIHRlcm1zKQorCitTVU1NQVJZID0gIkxpYnJhcnkgb2YgdXRpbGl0eSBmdW5jdGlvbnMgZnJvbSBCU0Qgc3lzdGVtcyIKK0RFU0NSSVBUSU9OID0gIlRoaXMgbGlicmFyeSBwcm92aWRlcyB1c2VmdWwgZnVuY3Rpb25zIGNvbW1vbmx5IGZvdW5kIG9uIEJTRCBzeXN0ZW1zLCBcCisgICAgICAgICAgICAgICBhbmQgbGFja2luZyBvbiBvdGhlcnMgbGlrZSBHTlUgc3lzdGVtcywgdGh1cyBtYWtpbmcgaXQgZWFzaWVyIHRvIHBvcnQgXAorICAgICAgICAgICAgICAgcHJvamVjdHMgd2l0aCBzdHJvbmcgQlNEIG9yaWdpbnMsIHdpdGhvdXQgbmVlZGluZyB0byBlbWJlZCB0aGUgc2FtZSBcCisgICAgICAgICAgICAgICBjb2RlIG92ZXIgYW5kIG92ZXIgYWdhaW4gb24gZWFjaCBwcm9qZWN0LiIKKworSE9NRVBBR0UgPSAiaHR0cDovL2xpYmJzZC5mcmVlZGVza3RvcC5vcmcvd2lraS8iCisjIFRoZXJlIHNlZW1zIHRvIGJlIG1vcmUgbGljZW5zZXMgdXNlZCBpbiB0aGUgY29kZSwgSSBkb24ndCB0aGluayB3ZSB3YW50IHRvIGxpc3QgdGhlbSBhbGwgaGVyZSwgY29tcGxldGUgbGlzdDoKKyMgT0UgQCB+L3Byb2plY3RzL2xpYmJzZCAkIGdyZXAgXkxpY2Vuc2U6IENPUFlJTkcgIHwgc29ydAorIyBMaWNlbnNlOiBCU0QtMi1jbGF1c2UKKyMgTGljZW5zZTogQlNELTItY2xhdXNlCisjIExpY2Vuc2U6IEJTRC0yLWNsYXVzZS1OZXRCU0QKKyMgTGljZW5zZTogQlNELTItY2xhdXNlLWF1dGhvcgorIyBMaWNlbnNlOiBCU0QtMi1jbGF1c2UtdmVyYmF0aW0KKyMgTGljZW5zZTogQlNELTMtY2xhdXNlCisjIExpY2Vuc2U6IEJTRC0zLWNsYXVzZQorIyBMaWNlbnNlOiBCU0QtMy1jbGF1c2UKKyMgTGljZW5zZTogQlNELTMtY2xhdXNlLVBldGVyLVdlbW0KKyMgTGljZW5zZTogQlNELTMtY2xhdXNlLVJlZ2VudHMKKyMgTGljZW5zZTogQlNELTQtY2xhdXNlLUNocmlzdG9waGVyLUctRGVtZXRyaW91CisjIExpY2Vuc2U6IEJTRC00LWNsYXVzZS1OaWVscy1Qcm92b3MKKyMgTGljZW5zZTogQlNELTUtY2xhdXNlLVBldGVyLVdlbW0KKyMgTGljZW5zZTogQmVlcndhcmUKKyMgTGljZW5zZTogRXhwYXQKKyMgTGljZW5zZTogSVNDCisjIExpY2Vuc2U6IElTQy1PcmlnaW5hbAorIyBMaWNlbnNlOiBwdWJsaWMtZG9tYWluCisjIExpY2Vuc2U6IHB1YmxpYy1kb21haW4tQ29saW4tUGx1bWIKK0xJQ0VOU0UgPSAiQlNELTQtQ2xhdXNlICYgSVNDICYgUEQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wOGZjNGU2NmJlNDUyNjcxNWRhYjA5YzVmYmE1ZTllOCIKK1NFQ1RJT04gPSAibGlicyIKKworU1JDX1VSSSA9ICIgXAorICAgIGh0dHA6Ly9saWJic2QuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHogXAorICAgIGZpbGU6Ly8wMDAxLXNyYy1saWJic2Qtb3ZlcmxheS5wYy5pbi1TZXQtQ2ZsYWdzLXRvLXVzZS1JLWluc3RlYWQucGF0Y2ggXAorIgorU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsICA9ICIgXAorICAgIGZpbGU6Ly8wMDAxLVJlcGxhY2UtX19CRUdJTl9ERUNMUy1hbmQtX19FTkRfREVDTFMucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAyLVJlbW92ZS1mdW5vcGVuLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjRhYjdiZWM2MzlhZjE3ZDBhYWNiNTAyMjJiNDc5MTEwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ2N2ZiZjlkZjFmNDlhZjExZjdmNjg2NjkxMDU3YzhjMGE3NjEzYWU1YTg3MDU3N2JlZjkxNTVkZTM5Zjk2ODciCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwL2ZpbGVzLzAwMDEtRml4LWJ1aWxkLXdpdGgtZ3BlcmYtMy4xLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC9maWxlcy8wMDAxLUZpeC1idWlsZC13aXRoLWdwZXJmLTMuMS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTBlZjkwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC9maWxlcy8wMDAxLUZpeC1idWlsZC13aXRoLWdwZXJmLTMuMS5wYXRjaApAQCAtMCwwICsxLDQxIEBACitGcm9tIGEwNWViYTY4YzQyMjIyZjAyNDY1ZDdiYTM3NjAxNTkyNjQzM2M1MzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMjYgSnVsIDIwMTcgMTM6Mzc6NDkgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IGJ1aWxkIHdpdGggZ3BlcmYgMy4xCisKK1RoZSBnZW5lcmF0ZWQgZ3BlcmYgZmlsZSByZWZlcnMgdG8gc2l6ZV90IHdoaWNoIG5lZWRzIHRvIGJlCitwcm92aWRlZCBieSBzdGRkZWYuaCBpbmNsdWRlLiBBbHNvLCBhZGp1c3QgdGhlIG1ha2VmaWxlCit0byBtYXRjaCB0aGUgZGVjbGFyYXRpb24gaW4gdGhlIGdwZXJmIGZpbGUuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CisKKy0tLQorIGxpYmNhcC9NYWtlZmlsZSB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJjYXAvTWFrZWZpbGUgYi9saWJjYXAvTWFrZWZpbGUKK2luZGV4IGQxODk3NzcuLjFhNTcyMDYgMTAwNjQ0CistLS0gYS9saWJjYXAvTWFrZWZpbGUKKysrKyBiL2xpYmNhcC9NYWtlZmlsZQorQEAgLTIyLDcgKzIyLDcgQEAgYWxsOiAkKE1JTkxJQk5BTUUpICQoU1RBTElCTkFNRSkgbGliY2FwLnBjCisgCisgaWZlcSAoJChCVUlMRF9HUEVSRikseWVzKQorIFVTRV9HUEVSRl9PVVRQVVQgPSAkKEdQRVJGX09VVFBVVCkKKy1JTkNMVURFX0dQRVJGX09VVFBVVCA9IC1pbmNsdWRlICQoR1BFUkZfT1VUUFVUKQorK0lOQ0xVREVfR1BFUkZfT1VUUFVUID0gLWluY2x1ZGUgc3RkZGVmLmggLWluY2x1ZGUgJChHUEVSRl9PVVRQVVQpCisgZW5kaWYKKyAKKyBsaWJjYXAucGM6IGxpYmNhcC5wYy5pbgorQEAgLTQxLDcgKzQxLDcgQEAgY2FwX25hbWVzLmg6IF9tYWtlbmFtZXMKKyAJLi9fbWFrZW5hbWVzID4gY2FwX25hbWVzLmgKKyAKKyAkKEdQRVJGX09VVFBVVCk6IGNhcF9uYW1lcy5saXN0LmgKKy0JcGVybCAtZSAncHJpbnQgInN0cnVjdCBfX2NhcF90b2tlbl9zIHsgY29uc3QgY2hhciAqbmFtZTsgaW50IGluZGV4OyB9O1xuJXtcbmNvbnN0IHN0cnVjdCBfX2NhcF90b2tlbl9zICpfX2NhcF9sb29rdXBfbmFtZShjb25zdCBjaGFyICosIHVuc2lnbmVkIGludCk7XG4lfVxuJSVcbiI7IHdoaWxlICgkJGwgPSA8PikgeyAkJGwgPX4gcy9bXHtcIl0vL2c7ICQkbCA9fiBzL1x9LiovLyA7IHByaW50ICQkbDsgfScgPCAkPCB8IGdwZXJmIC0taWdub3JlLWNhc2UgLS1sYW5ndWFnZT1BTlNJLUMgLS1yZWFkb25seSAtLW51bGwtc3RyaW5ncyAtLWdsb2JhbC10YWJsZSAtLWhhc2gtZnVuY3Rpb24tbmFtZT1fX2NhcF9oYXNoX25hbWUgLS1sb29rdXAtZnVuY3Rpb24tbmFtZT0iX19jYXBfbG9va3VwX25hbWUiIC1jIC10IC1tMjAgJChJTkRFTlQpID4gJEAKKysJcGVybCAtZSAncHJpbnQgInN0cnVjdCBfX2NhcF90b2tlbl9zIHsgY29uc3QgY2hhciAqbmFtZTsgaW50IGluZGV4OyB9O1xuJXtcbmNvbnN0IHN0cnVjdCBfX2NhcF90b2tlbl9zICpfX2NhcF9sb29rdXBfbmFtZShjb25zdCBjaGFyICosIHJlZ2lzdGVyIHNpemVfdCk7XG4lfVxuJSVcbiI7IHdoaWxlICgkJGwgPSA8PikgeyAkJGwgPX4gcy9bXHtcIl0vL2c7ICQkbCA9fiBzL1x9LiovLyA7IHByaW50ICQkbDsgfScgPCAkPCB8IGdwZXJmIC0taWdub3JlLWNhc2UgLS1sYW5ndWFnZT1BTlNJLUMgLS1yZWFkb25seSAtLW51bGwtc3RyaW5ncyAtLWdsb2JhbC10YWJsZSAtLWhhc2gtZnVuY3Rpb24tbmFtZT1fX2NhcF9oYXNoX25hbWUgLS1sb29rdXAtZnVuY3Rpb24tbmFtZT0iX19jYXBfbG9va3VwX25hbWUiIC1jIC10IC1tMjAgJChJTkRFTlQpID4gJEAKKyAKKyBjYXBfbmFtZXMubGlzdC5oOiBNYWtlZmlsZSAkKEtFUk5FTF9IRUFERVJTKS9saW51eC9jYXBhYmlsaXR5LmgKKyAJQGVjaG8gIj0+IG1ha2luZyAkQCBmcm9tICQoS0VSTkVMX0hFQURFUlMpL2xpbnV4L2NhcGFiaWxpdHkuaCIKKy0tIAorMi4xMy4yCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAvbGliY2FwXzIuMjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwL2xpYmNhcF8yLjI1LmJiCmluZGV4IDA1ODdlNzcuLmQ2MTlhMmUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAvbGliY2FwXzIuMjUuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC9saWJjYXBfMi4yNS5iYgpAQCAtOSw3ICs5LDggQEAKIAogU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L2xpYnMvc2VjdXJpdHkvbGludXgtcHJpdnMvJHtCUE59Mi8ke0JQTn0tJHtQVn0udGFyLnh6IFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtZW5zdXJlLXRoZS1YQVRUUl9OQU1FX0NBUFMtaXMtZGVmaW5lZC13aGVuLWl0LWlzLXVzZS5wYXRjaCBcCi0iCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC13aXRoLWdwZXJmLTMuMS5wYXRjaCBcCisgICAgICAgICAgICIKIFNSQ19VUklbbWQ1c3VtXSA9ICI2NjY2YjgzOWU1ZDQ2YzJhZDMzZmM4YWEyY2ViNWY3NyIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI2OTNjOGFjNTFlOTgzZWU2NzgyMDU1NzFlZjI3MjQzOWQ4M2FmZTYyZGQ4ZTQyNGVhMTRhZDk3OTBiYzM1MTYyIgogCkBAIC0yMiw5ICsyMyw2IEBACiAJIyBvbiB3aGF0IHNob3VsZCBiZSByZXBsYWNlZCB3aXRoID89CiAJc2VkIC1lICdzLDo9LD89LGcnIC1pIE1ha2UuUnVsZXMKIAlzZWQgLWUgJ3MsXkJVSUxEX0NGTEFHUyA/PSAkKC4qQ0ZMQUdTKSxCVUlMRF9DRkxBR1MgOj0gJChCVUlMRF9DRkxBR1MpLCcgLWkgTWFrZS5SdWxlcwotCi0JIyBkaXNhYmxlIGdwZXJmIGRldGVjdGlvbgotCXNlZCAtZSAnL3NoZWxsIGdwZXJmL2NpZmVxICgseWVzKScgLWkgbGliY2FwL01ha2VmaWxlCiB9CiAKIFBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCBkKX0iCkBAIC0zNyw2ICszNSw3IEBACiAgIGxpYj0ke0Bvcy5wYXRoLmJhc2VuYW1lKCcke2xpYmRpcn0nKX0gXAogICBSQUlTRV9TRVRGQ0FQPW5vIFwKICAgRFlOQU1JQz15ZXMgXAorICBCVUlMRF9HUEVSRj15ZXMgXAogIgogCiBFWFRSQV9PRU1BS0VfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgU1lTVEVNX0hFQURFUlM9JHtTVEFHSU5HX0lOQ0RJUn0iCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY3JvY28vbGliY3JvY29fMC42LjExLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNyb2NvL2xpYmNyb2NvXzAuNi4xMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWRmNzkyMy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY3JvY28vbGliY3JvY29fMC42LjExLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotU1VNTUFSWSA9ICJDYXNjYWRpbmcgU3R5bGUgU2hlZXQgKENTUykgcGFyc2luZyBhbmQgbWFuaXB1bGF0aW9uIHRvb2xraXQiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lmdub21lLm9yZy8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKLQotTElDRU5TRSA9ICJMR1BMdjIgJiBMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU1Y2E4MTdjY2I3ZDViNWI2NjM1NTY5MGU5YWJjNjA1IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9jci1yZ2IuYztlbmRsaW5lPTIyO21kNT0zMWQ1ZjA5NDRkNTU2Yzg1ODlkMDRlYTYwNTVmY2M2NiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90ZXN0cy9jci10ZXN0LXV0aWxzLmM7ZW5kbGluZT0yMTttZDU9MjM4MmMyNzkzNGNhZTFkMzc5MmZjYjE3YTYxNDJjNGUiCi0KLVNFQ1RJT04gPSAieDExL3V0aWxzIgotREVQRU5EUyA9ICJnbGliLTIuMCBsaWJ4bWwyIHpsaWIiCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLUVYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtQnN5bWJvbGljPWF1dG8iCi0KLUJJTkNPTkZJRyA9ICIke2JpbmRpcn0vY3JvY28tMC42LWNvbmZpZyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdub21lYmFzZSBndGstZG9jIGJpbmNvbmZpZy1kaXNhYmxlZAotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJkYWJjMTkxMWRmYmZhODVmOGU2ODU5Y2E0Nzg2MzE2OCIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjEzMmI1MjhhOTQ4NTg2YjBkZmEwNWQ3ZTllMDU5OTAxYmNhNWEzYmU2NzViNjA3MWE5MGE5MGI4MWFlNWEwNTYiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY3JvY28vbGliY3JvY29fMC42LjEyLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNyb2NvL2xpYmNyb2NvXzAuNi4xMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMGFmNzU5Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNyb2NvL2xpYmNyb2NvXzAuNi4xMi5iYgpAQCAtMCwwICsxLDIwIEBACitTVU1NQVJZID0gIkNhc2NhZGluZyBTdHlsZSBTaGVldCAoQ1NTKSBwYXJzaW5nIGFuZCBtYW5pcHVsYXRpb24gdG9vbGtpdCIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ25vbWUub3JnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgorCitMSUNFTlNFID0gIkxHUEx2MiAmIExHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTVjYTgxN2NjYjdkNWI1YjY2MzU1NjkwZTlhYmM2MDUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2NyLXJnYi5jO2VuZGxpbmU9MjI7bWQ1PTMxZDVmMDk0NGQ1NTZjODU4OWQwNGVhNjA1NWZjYzY2IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Rlc3RzL2NyLXRlc3QtdXRpbHMuYztlbmRsaW5lPTIxO21kNT0yMzgyYzI3OTM0Y2FlMWQzNzkyZmNiMTdhNjE0MmM0ZSIKKworU0VDVElPTiA9ICJ4MTEvdXRpbHMiCitERVBFTkRTID0gImdsaWItMi4wIGxpYnhtbDIgemxpYiIKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1Cc3ltYm9saWM9YXV0byIKKworQklOQ09ORklHID0gIiR7YmluZGlyfS9jcm9jby0wLjYtY29uZmlnIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ25vbWViYXNlIGd0ay1kb2MgYmluY29uZmlnLWRpc2FibGVkCisKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImJjMDk4NGZjZTA3OGJhMmNlMjlmOTUwMGM2YjlkZGNlIgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiZGRjNGI1NTQ2YzlmYjQyODBhNTAxN2UyNzA3ZmJkNDgzOTAzNGVkMWFiYTViN2Q0MzcyMjEyZjM0Zjg0Zjg2MCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmRldi9saWJldmRldl8xLjUuNi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmRldi9saWJldmRldl8xLjUuNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmY4NDU1NC4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZkZXYvbGliZXZkZXZfMS41LjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1TVU1NQVJZID0gIldyYXBwZXIgbGlicmFyeSBmb3IgZXZkZXYgZGV2aWNlcyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3dpa2kvU29mdHdhcmUvbGliZXZkZXYvIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIk1JVC1YIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzVhYWUwZDM4ZmVlYTZmZGE5N2NhMzgxY2I5MTMyZWIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliZXZkZXYvbGliZXZkZXYuaDtlbmRsaW5lPTIxO21kNT03ZmY0ZjBiNTExMzI1MmMyZjFhODI4ZTBiYmFkOThkMSIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZS9saWJldmRldi8ke0JQfS50YXIueHoiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkNGNlOWYwNjFmOGY5NTRiZWE3YWRiYTBjYjc2OGE1MyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlY2VjN2U5ZDY2YjFkMzY5MmYxMGIzYjIwYWE5N2ZiMjVlODc0YTc4NGM1NTUyYTdiMTY5ODA5MWZlZjVhNjg4IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmRldi9saWJldmRldl8xLjUuNy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmRldi9saWJldmRldl8xLjUuNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzQwZGEyCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZGV2L2xpYmV2ZGV2XzEuNS43LmJiCkBAIC0wLDAgKzEsMTQgQEAKK1NVTU1BUlkgPSAiV3JhcHBlciBsaWJyYXJ5IGZvciBldmRldiBkZXZpY2VzIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9saWJldmRldi8iCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiTUlULVgiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NWFhZTBkMzhmZWVhNmZkYTk3Y2EzODFjYjkxMzJlYiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWJldmRldi9saWJldmRldi5oO2VuZGxpbmU9MjE7bWQ1PTdmZjRmMGI1MTEzMjUyYzJmMWE4MjhlMGJiYWQ5OGQxIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlL2xpYmV2ZGV2LyR7QlB9LnRhci54eiIKKworU1JDX1VSSVttZDVzdW1dID0gIjRmMWNmYWVlOGQ3NWVhM2ZiYmZlYjk5YTk4NzMwOTUyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImExZTU5ZTM3YTJmMGQzOTdmZmQ3ZTgzYjczYWYwZTYzOGRiODNiOGRkMDg5MDJlZjBmNjUxYTIxY2MxZGQ0MjIiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZW50L2xpYmV2ZW50L01ha2VmaWxlLW1pc3NpbmctdGVzdC1kaXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZlbnQvbGliZXZlbnQvTWFrZWZpbGUtbWlzc2luZy10ZXN0LWRpci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODgwYmQwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZW50L2xpYmV2ZW50L01ha2VmaWxlLW1pc3NpbmctdGVzdC1kaXIucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorRml4IG1pc3NpbmcgdGVzdCBkaXJlY3RvcnkgY3JlYXRpb24uCisKK0dDQyB1c2VkIGluIE9FLWNvcmUgaGFzICJkZXBlbmRlbmN5IHRyYWNraW5nIiBkaXNhYmxlZCBhbmQKK2xpYmV2ZW50IGhhcyBwcm9ibGVtIHdpdGggdGhpcy4KK0R1ZSB0byByZW1vdmVkIG1ha2VmaWxlLmFtL2luIGZpbGVzIGluIHRlc3Qvc2FtcGxlL2luY2x1ZGUKK2RpcmVjdG9yaWVzLCBvdXRwdXQgZGlyZWN0b3JpZXMgYXJlIG5vdCBjcmVhdGVkIGluCitjb25maWd1cmF0aW9uIHN0ZXAuIENvbXBpbGF0aW9uIHN0ZXAgd2lsbCBmYWlscywgd2hlbgordHJ5aW5nIHRvIHdyaXRlIHRvIG5vbi1leGlzdGluZyBkaXJlY3RvcnkuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT3RoZXJdCitXb3JrYXJvdW5kIHNwZWNpZmljIHRvIG91ciBidWlsZCBzeXN0ZW0uCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJlaiBWYWxlayA8YW5kcmVqLnZhbGVrQHNpZW1lbnMuY29tPgorU2lnbmVkLW9mZi1ieTogUGFzY2FsIEJhY2ggPHBhc2NhbC5iYWNoQHNpZW1lbnMuY29tPgorCitkaWZmIC0tZ2l0IGEvbGliZXZlbnQtMi4xLjgtc3RhYmxlL3Rlc3QvaW5jbHVkZS5hbSBiL2xpYmV2ZW50LTIuMS44LXN0YWJsZS90ZXN0L2luY2x1ZGUuYW0KK2luZGV4IGVlYTI0OWYuLmQzMjNkZmYgMTAwNjQ0CistLS0gYS90ZXN0L2luY2x1ZGUuYW0KKysrKyBiL3Rlc3QvaW5jbHVkZS5hbQorQEAgLTE2MSw2ICsxNjEsNyBAQCB0ZXN0X2JlbmNoX2h0dHBjbGllbnRfTERBREQgPSAkKExJQkVWRU5UX0dDX1NFQ1RJT05TKSBsaWJldmVudF9jb3JlLmxhCisgdGVzdC9yZWdyZXNzLmdlbi5jIHRlc3QvcmVncmVzcy5nZW4uaDogdGVzdC9ycGNnZW4tYXR0ZW1wdGVkCisgCisgdGVzdC9ycGNnZW4tYXR0ZW1wdGVkOiB0ZXN0L3JlZ3Jlc3MucnBjIGV2ZW50X3JwY2dlbi5weSB0ZXN0L3JwY2dlbl93cmFwcGVyLnNoCisrCUAkKE1LRElSX1ApIHRlc3QKKyAJJChBTV9WX0dFTilkYXRlIC11ID4gJEAKKyAJJChBTV9WX2F0KWlmICQoc3JjZGlyKS90ZXN0L3JwY2dlbl93cmFwcGVyLnNoICQoc3JjZGlyKS90ZXN0OyB0aGVuIFwKKyAJICAgdHJ1ZTsgXApkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZW50L2xpYmV2ZW50XzIuMC4yMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmVudC9saWJldmVudF8yLjAuMjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmOGEzMWMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZW50L2xpYmV2ZW50XzIuMC4yMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLVNVTU1BUlkgPSAiQW4gYXN5bmNocm9ub3VzIGV2ZW50IG5vdGlmaWNhdGlvbiBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cDovL2xpYmV2ZW50Lm9yZy8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvdHJhY2tlci8/Z3JvdXBfaWQ9NTA4ODQmYXRpZD00NjEzMjIiCi1TRUNUSU9OID0gImxpYnMiCi0KLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NDVjNTMxNmZmNjg0YmNmZTJmOWY4NmQ4YjEyNzk1NTkiCi0KLVNSQ19VUkkgPSAiIFwKLSAgICAke1NPVVJDRUZPUkdFX01JUlJPUn0vbGV2ZW50LyR7QlB9LXN0YWJsZS50YXIuZ3ogXAotICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYzRjNTZmOTg2YWE5ODU2NzdjYTFkYjg5NjMwYTJlMTEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzFjMmM0OWYwYWRhZGFjZmRiZTYzMzJhMzcyYzM4Y2Y5YzhiNzg5NWJiNzNkYWJlYWE1M2NkY2MxZDRlMWZhMyIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9saWJldmVudC5vcmcvIgotCi1TID0gIiR7V09SS0RJUn0vJHtCUE59LSR7UFZ9LXN0YWJsZSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS1lbmFibGUtb3BlbnNzbCwtLWRpc2FibGUtb3BlbnNzbCxvcGVuc3NsIgotCi1pbmhlcml0IGF1dG90b29scwotCi0jIE5lZWRlZCBmb3IgRGViaWFuIHBhY2thZ2luZwotTEVBRF9TT05BTUUgPSAibGliZXZlbnQtMi4wLnNvIgotCi1pbmhlcml0IHB0ZXN0Ci0KLURFUEVORFMgPSAiemxpYiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCWluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAotCWZvciBmaWxlIGluICR7Qn0vdGVzdC8ubGlicy9yZWdyZXNzICR7Qn0vdGVzdC8ubGlicy90ZXN0KgotCWRvCi0JCWluc3RhbGwgLW0gMDc1NSAkZmlsZSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0Ci0JZG9uZQotfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZW50L2xpYmV2ZW50XzIuMS44LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZW50L2xpYmV2ZW50XzIuMS44LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyNzBkNjIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZlbnQvbGliZXZlbnRfMi4xLjguYmIKQEAgLTAsMCArMSw0MiBAQAorU1VNTUFSWSA9ICJBbiBhc3luY2hyb25vdXMgZXZlbnQgbm90aWZpY2F0aW9uIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwOi8vbGliZXZlbnQub3JnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYmV2ZW50L2xpYmV2ZW50L2lzc3VlcyIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJCU0QgJiBNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0xN2YyMDU3NGMwYjE1NGQxMjIzNmQ1ZmJlOTY0ZjU0OSIKKworU1JDX1VSSSA9ICIgXAorICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9saWJldmVudC9saWJldmVudC9yZWxlYXNlcy9kb3dubG9hZC9yZWxlYXNlLSR7UFZ9LXN0YWJsZS8ke0JQfS1zdGFibGUudGFyLmd6IFwKKyAgICBmaWxlOi8vTWFrZWZpbGUtbWlzc2luZy10ZXN0LWRpci5wYXRjaCBcCisgICAgZmlsZTovL3J1bi1wdGVzdCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJmM2VlYWVkMDE4NTQyOTYzYjdkMjQxNmVmMTEzNWVjYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5NjVjYzVhOGJiNDZjZTQxOTlhNDdlOWIyYzllMWNhZTNiMTM3ZTgzNTZmZmRhZDZkOTRkM2I5MDY5YjcxZGMyIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL2xpYmV2ZW50Lm9yZy8iCisKK1MgPSAiJHtXT1JLRElSfS8ke0JQTn0tJHtQVn0tc3RhYmxlIgorCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLWVuYWJsZS1vcGVuc3NsLC0tZGlzYWJsZS1vcGVuc3NsLG9wZW5zc2wiCisKK2luaGVyaXQgYXV0b3Rvb2xzCisKKyMgTmVlZGVkIGZvciBEZWJpYW4gcGFja2FnaW5nCitMRUFEX1NPTkFNRSA9ICJsaWJldmVudC0yLjEuc28iCisKK2luaGVyaXQgcHRlc3QKKworREVQRU5EUyA9ICJ6bGliIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0CisJZm9yIGZpbGUgaW4gJHtCfS90ZXN0Ly5saWJzL3JlZ3Jlc3MgJHtCfS90ZXN0Ly5saWJzL3Rlc3QqCisJZG8KKwkJaW5zdGFsbCAtbSAwNzU1ICRmaWxlICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKKwlkb25lCit9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZmZpL2xpYmZmaS8wMDAxLWxpYmZmaS1TdXBwb3J0LW11c2wteDMyLWJ1aWxkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmkvMDAwMS1saWJmZmktU3VwcG9ydC1tdXNsLXgzMi1idWlsZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjE2N2M4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmkvMDAwMS1saWJmZmktU3VwcG9ydC1tdXNsLXgzMi1idWlsZC5wYXRjaApAQCAtMCwwICsxLDMwIEBACitGcm9tIDY5YzM5MDZjODVjNzkxNzE2YmY2NTBhYTM2ZDkzNjFkMjJhY2YzZmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBzd2VlYXVuIDxzd2VlLmF1bi5raG9yQGludGVsLmNvbT4KK0RhdGU6IFRodSwgNiBKdWwgMjAxNyAxNjozMjo0NiAtMDcwMAorU3ViamVjdDogW1BBVENIXSBsaWJmZmk6IFN1cHBvcnQgbXVzbCB4MzIgYnVpbGQKKworU3VwcG9ydCBsaWJmZmkgYnVpbGQgd2l0aCB0YXJnZXQgbXVzbC14MzIuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBzd2VlYXVuIDxzd2VlLmF1bi5raG9yQGludGVsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggYTdiZjVlZS4uOGViZTk5YyAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMTc3LDcgKzE3Nyw3IEBAIGNhc2UgIiRob3N0IiBpbgorIAlUQVJHRVRESVI9eDg2CisgCWlmIHRlc3QgJGFjX2N2X3NpemVvZl9zaXplX3QgPSA0OyB0aGVuCisgCSAgY2FzZSAiJGhvc3QiIGluCistCSAgICAqLWdudXgzMikKKysJICAgICotZ251eDMyIHwgKi1tdXNseDMyKQorIAkgICAgICBUQVJHRVQ9WDg2XzY0CisgCSAgICAgIDs7CisgCSAgICAqKQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZmZpL2xpYmZmaV8zLjIuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpXzMuMi4xLmJiCmluZGV4IDQzZWVlOGUuLmEwYjFmY2QgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpXzMuMi4xLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpXzMuMi4xLmJiCkBAIC0xLDQgKzEsNSBAQAogU1VNTUFSWSA9ICJBIHBvcnRhYmxlIGZvcmVpZ24gZnVuY3Rpb24gaW50ZXJmYWNlIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwOi8vc291cmNld2FyZS5vcmcvbGliZmZpLyIKIERFU0NSSVBUSU9OID0gIlRoZSBgbGliZmZpJyBsaWJyYXJ5IHByb3ZpZGVzIGEgcG9ydGFibGUsIGhpZ2ggbGV2ZWwgcHJvZ3JhbW1pbmcgaW50ZXJmYWNlIHRvIHZhcmlvdXMgY2FsbGluZyBcCiBjb252ZW50aW9ucy4gIFRoaXMgYWxsb3dzIGEgcHJvZ3JhbW1lciB0byBjYWxsIGFueSBmdW5jdGlvbiBzcGVjaWZpZWQgYnkgYSBjYWxsIGludGVyZmFjZSBkZXNjcmlwdGlvbiBhdCBydW4gXAogdGltZS4gRkZJIHN0YW5kcyBmb3IgRm9yZWlnbiBGdW5jdGlvbiBJbnRlcmZhY2UuICBBIGZvcmVpZ24gZnVuY3Rpb24gaW50ZXJmYWNlIGlzIHRoZSBwb3B1bGFyIG5hbWUgZm9yIHRoZSBcCkBAIC0xMywxMyArMTQsMTQgQEAKICAgICAgICAgICAgZmlsZTovL25vdC13aW4zMi5wYXRjaCBcCiAJICAgZmlsZTovLzAwMDEtbWlwcy1Vc2UtY29tcGlsZXItaW50ZXJuYWwtZGVmaW5lLWZvci1saW51eC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1pcHMtZml4LU1JUFMtc29mdGZsb2F0LWJ1aWxkLWlzc3VlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbGliZmZpLVN1cHBvcnQtbXVzbC14MzItYnVpbGQucGF0Y2ggXAogCSAgICIKIAogU1JDX1VSSVttZDVzdW1dID0gIjgzYjg5NTg3NjA3ZTNlYjY1YzcwZDM2MWYxM2JhYjQzIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImQwNmViYjhlMWQ5YTIyZDE5ZTM4ZDYzZmRiODM5NTQyNTNmMzliZWRjNWQ0NjIzMmEwNTY0NTY4NTcyMmNhMzciCiAKIEVYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLWJ1aWxkZGlyIgotCitFWFRSQV9PRU1BS0VfY2xhc3MtdGFyZ2V0ID0gIkxJQlRPT0xGTEFHUz0nLS10YWc9Q0MnIgogaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbwogCiBGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9saWJmZmktJHtQVn0iCkBAIC0yOSwzICszMSw0IEBACiBNSVBTX0lOU1RSVUNUSU9OX1NFVCA9ICJtaXBzIgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmbS9saWJmbV8xLjIuNS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmbS9saWJmbV8xLjIuNS5iYgppbmRleCBhY2E1OWUxLi4xZGRkZGZkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZm0vbGliZm1fMS4yLjUuYmIKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZtL2xpYmZtXzEuMi41LmJiCkBAIC0zMiw2ICszMiw3IEBACiAgICAgcm0gLWYgJHtEfSR7aW5jbHVkZWRpcn0vbGliZm0tMS4wL2ZtLXhtbC1maWxlLmgKICAgICBybSAtZiAke0R9JHtpbmNsdWRlZGlyfS9saWJmbS0xLjAvZm0tdmVyc2lvbi5oCiAgICAgcm0gLWYgJHtEfSR7aW5jbHVkZWRpcn0vbGliZm0tMS4wL2ZtLWV4dHJhLmgKKyAgICBybSAtZiAke0R9JHtpbmNsdWRlZGlyfS9saWJmbQogICAgIHJtIC1mICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL2xpYmZtLWV4dHJhLnBjCiAgICAgcm0gLWYgJHtEfSR7bGliZGlyfS9saWJmbS1leHRyYS5zbyoKICAgICBybSAtZiAke0R9JHtsaWJkaXJ9L2xpYmZtLWV4dHJhLmEKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvZmlsZXMvMDAwMS1BZGQtYW5kLXVzZS1wa2ctY29uZmlnLWZvci1saWJnY3J5cHQtaW5zdGVhZC1vZi1jb25mLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy8wMDAxLUFkZC1hbmQtdXNlLXBrZy1jb25maWctZm9yLWxpYmdjcnlwdC1pbnN0ZWFkLW9mLWNvbmYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQxYzNkZQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvZmlsZXMvMDAwMS1BZGQtYW5kLXVzZS1wa2ctY29uZmlnLWZvci1saWJnY3J5cHQtaW5zdGVhZC1vZi1jb25mLnBhdGNoCkBAIC0wLDAgKzEsMTgzIEBACitGcm9tIDcyYjllOTA0MGQ1OGMxNWYwMzAyYmQ4YWJkYTI4MTc5ZjA0ZTFjNWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KK0RhdGU6IFdlZCwgMTYgQXVnIDIwMTcgMTA6NDM6MTggKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzRdIEFkZCBhbmQgdXNlIHBrZy1jb25maWcgZm9yIGxpYmdjcnlwdCBpbnN0ZWFkIG9mIC1jb25maWcKKyBzY3JpcHRzLgorCitVcHN0cmVhbS1TdGF0dXM6IERlbmllZCBbdXBzdHJlYW0gaGF2ZSBpbmRpY2F0ZWQgdGhleSBkb24ndCB3YW50IGEKK3BrZy1jb25maWcgZGVwZW5kZW5jeV0KKworUlAgMjAxNC81LzIyCisKK1JlYmFzZSB0byAxLjguMAorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBjb25maWd1cmUuYWMgICAgICAgIHwgIDEgKworIHNyYy9saWJnY3J5cHQubTQgICAgfCA3MSArKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIHNyYy9saWJnY3J5cHQucGMuaW4gfCAzMyArKysrKysrKysrKysrKysrKysrKysrKysrCisgMyBmaWxlcyBjaGFuZ2VkLCAzOCBpbnNlcnRpb25zKCspLCA2NyBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2xpYmdjcnlwdC5wYy5pbgorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBiYmU4MTA0Li4zZDJkZTczIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0yNjA3LDYgKzI2MDcsNyBAQCByYW5kb20vTWFrZWZpbGUKKyBkb2MvTWFrZWZpbGUKKyBzcmMvTWFrZWZpbGUKKyBzcmMvZ2NyeXB0LmgKKytzcmMvbGliZ2NyeXB0LnBjCisgc3JjL2xpYmdjcnlwdC1jb25maWcKKyBzcmMvdmVyc2lvbmluZm8ucmMKKyB0ZXN0cy9NYWtlZmlsZQorZGlmZiAtLWdpdCBhL3NyYy9saWJnY3J5cHQubTQgYi9zcmMvbGliZ2NyeXB0Lm00CitpbmRleCBjNjdjZmVjLi40ZWE1ZjJjIDEwMDY0NAorLS0tIGEvc3JjL2xpYmdjcnlwdC5tNAorKysrIGIvc3JjL2xpYmdjcnlwdC5tNAorQEAgLTI5LDMwICsyOSw2IEBAIGRubCBpcyBhZGRlZCB0byB0aGUgZ3BnX2NvbmZpZ19zY3JpcHRfd2FybiB2YXJpYWJsZS4KKyBkbmwKKyBBQ19ERUZVTihbQU1fUEFUSF9MSUJHQ1JZUFRdLAorIFsgQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKQorLSAgQUNfQVJHX1dJVEgobGliZ2NyeXB0LXByZWZpeCwKKy0gICAgICAgICAgICBBQ19IRUxQX1NUUklORyhbLS13aXRoLWxpYmdjcnlwdC1wcmVmaXg9UEZYXSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICBbcHJlZml4IHdoZXJlIExJQkdDUllQVCBpcyBpbnN0YWxsZWQgKG9wdGlvbmFsKV0pLAorLSAgICAgbGliZ2NyeXB0X2NvbmZpZ19wcmVmaXg9IiR3aXRodmFsIiwgbGliZ2NyeXB0X2NvbmZpZ19wcmVmaXg9IiIpCistICBpZiB0ZXN0IHgiJHtMSUJHQ1JZUFRfQ09ORklHfSIgPSB4IDsgdGhlbgorLSAgICAgaWYgdGVzdCB4IiR7bGliZ2NyeXB0X2NvbmZpZ19wcmVmaXh9IiAhPSB4IDsgdGhlbgorLSAgICAgICAgTElCR0NSWVBUX0NPTkZJRz0iJHtsaWJnY3J5cHRfY29uZmlnX3ByZWZpeH0vYmluL2xpYmdjcnlwdC1jb25maWciCistICAgICBlbHNlCistICAgICAgIGNhc2UgIiR7U1lTUk9PVH0iIGluCistICAgICAgICAgLyopCistICAgICAgICAgICBpZiB0ZXN0IC14ICIke1NZU1JPT1R9L2Jpbi9saWJnY3J5cHQtY29uZmlnIiA7IHRoZW4KKy0gICAgICAgICAgICAgTElCR0NSWVBUX0NPTkZJRz0iJHtTWVNST09UfS9iaW4vbGliZ2NyeXB0LWNvbmZpZyIKKy0gICAgICAgICAgIGZpCistICAgICAgICAgICA7OworLSAgICAgICAgICcnKQorLSAgICAgICAgICAgOzsKKy0gICAgICAgICAgKikKKy0gICAgICAgICAgIEFDX01TR19XQVJOKFtJZ25vcmluZyBcJFNZU1JPT1QgYXMgaXQgaXMgbm90IGFuIGFic29sdXRlIHBhdGguXSkKKy0gICAgICAgICAgIDs7CistICAgICAgIGVzYWMKKy0gICAgIGZpCistICBmaQorLQorLSAgQUNfUEFUSF9QUk9HKExJQkdDUllQVF9DT05GSUcsIGxpYmdjcnlwdC1jb25maWcsIG5vKQorICAgdG1wPWlmZWxzZShbJDFdLCAsMToxLjIuMCwkMSkKKyAgIGlmIGVjaG8gIiR0bXAiIHwgZ3JlcCAnOicgPi9kZXYvbnVsbCAyPi9kZXYvbnVsbCA7IHRoZW4KKyAgICAgIHJlcV9saWJnY3J5cHRfYXBpPWBlY2hvICIkdG1wIiAgICAgfCBzZWQgJ3MvXCguKlwpOlwoLipcKS9cMS8nYAorQEAgLTYyLDQ4ICszOCwxMyBAQCBBQ19ERUZVTihbQU1fUEFUSF9MSUJHQ1JZUFRdLAorICAgICAgbWluX2xpYmdjcnlwdF92ZXJzaW9uPSIkdG1wIgorICAgZmkKKyAKKy0gIEFDX01TR19DSEVDS0lORyhmb3IgTElCR0NSWVBUIC0gdmVyc2lvbiA+PSAkbWluX2xpYmdjcnlwdF92ZXJzaW9uKQorLSAgb2s9bm8KKy0gIGlmIHRlc3QgIiRMSUJHQ1JZUFRfQ09ORklHIiAhPSAibm8iIDsgdGhlbgorLSAgICByZXFfbWFqb3I9YGVjaG8gJG1pbl9saWJnY3J5cHRfdmVyc2lvbiB8IFwKKy0gICAgICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKS9cMS8nYAorLSAgICByZXFfbWlub3I9YGVjaG8gJG1pbl9saWJnY3J5cHRfdmVyc2lvbiB8IFwKKy0gICAgICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKS9cMi8nYAorLSAgICByZXFfbWljcm89YGVjaG8gJG1pbl9saWJnY3J5cHRfdmVyc2lvbiB8IFwKKy0gICAgICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKS9cMy8nYAorLSAgICBsaWJnY3J5cHRfY29uZmlnX3ZlcnNpb249YCRMSUJHQ1JZUFRfQ09ORklHIC0tdmVyc2lvbmAKKy0gICAgbWFqb3I9YGVjaG8gJGxpYmdjcnlwdF9jb25maWdfdmVyc2lvbiB8IFwKKy0gICAgICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKS4qL1wxLydgCistICAgIG1pbm9yPWBlY2hvICRsaWJnY3J5cHRfY29uZmlnX3ZlcnNpb24gfCBcCistICAgICAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXCkuKi9cMi8nYAorLSAgICBtaWNybz1gZWNobyAkbGliZ2NyeXB0X2NvbmZpZ192ZXJzaW9uIHwgXAorLSAgICAgICAgICAgICAgIHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKVwuXChbWzAtOV1dKlwpLiovXDMvJ2AKKy0gICAgaWYgdGVzdCAiJG1ham9yIiAtZ3QgIiRyZXFfbWFqb3IiOyB0aGVuCistICAgICAgICBvaz15ZXMKKy0gICAgZWxzZQorLSAgICAgICAgaWYgdGVzdCAiJG1ham9yIiAtZXEgIiRyZXFfbWFqb3IiOyB0aGVuCistICAgICAgICAgICAgaWYgdGVzdCAiJG1pbm9yIiAtZ3QgIiRyZXFfbWlub3IiOyB0aGVuCistICAgICAgICAgICAgICAgb2s9eWVzCistICAgICAgICAgICAgZWxzZQorLSAgICAgICAgICAgICAgIGlmIHRlc3QgIiRtaW5vciIgLWVxICIkcmVxX21pbm9yIjsgdGhlbgorLSAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICIkbWljcm8iIC1nZSAiJHJlcV9taWNybyI7IHRoZW4KKy0gICAgICAgICAgICAgICAgICAgICBvaz15ZXMKKy0gICAgICAgICAgICAgICAgICAgZmkKKy0gICAgICAgICAgICAgICBmaQorLSAgICAgICAgICAgIGZpCistICAgICAgICBmaQorLSAgICBmaQorLSAgZmkKKy0gIGlmIHRlc3QgJG9rID0geWVzOyB0aGVuCistICAgIEFDX01TR19SRVNVTFQoW3llcyAoJGxpYmdjcnlwdF9jb25maWdfdmVyc2lvbildKQorLSAgZWxzZQorLSAgICBBQ19NU0dfUkVTVUxUKG5vKQorLSAgZmkKKysgIFBLR19DSEVDS19NT0RVTEVTKExJQkdDUllQVCwgW2xpYmdjcnlwdCA+PSAkbWluX2xpYmdjcnlwdF92ZXJzaW9uXSwgW29rPXllc10sIFtvaz1ub10pCisrCisgICBpZiB0ZXN0ICRvayA9IHllczsgdGhlbgorICAgICAgIyBJZiB3ZSBoYXZlIGEgcmVjZW50IGxpYmdjcnlwdCwgd2Ugc2hvdWxkIGFsc28gY2hlY2sgdGhhdCB0aGUKKyAgICAgICMgQVBJIGlzIGNvbXBhdGlibGUKKyAgICAgIGlmIHRlc3QgIiRyZXFfbGliZ2NyeXB0X2FwaSIgLWd0IDAgOyB0aGVuCistICAgICAgICB0bXA9YCRMSUJHQ1JZUFRfQ09ORklHIC0tYXBpLXZlcnNpb24gMj4vZGV2L251bGwgfHwgZWNobyAwYAorKyAgICAgICAgdG1wPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWFwaV92ZXJzaW9uIGxpYmdjcnlwdGAKKyAgICAgICAgIGlmIHRlc3QgIiR0bXAiIC1ndCAwIDsgdGhlbgorICAgICAgICAgICAgQUNfTVNHX0NIRUNLSU5HKFtMSUJHQ1JZUFQgQVBJIHZlcnNpb25dKQorICAgICAgICAgICAgaWYgdGVzdCAiJHJlcV9saWJnY3J5cHRfYXBpIiAtZXEgIiR0bXAiIDsgdGhlbgorQEAgLTExNiwxMCArNTcsOCBAQCBBQ19ERUZVTihbQU1fUEFUSF9MSUJHQ1JZUFRdLAorICAgICAgZmkKKyAgIGZpCisgICBpZiB0ZXN0ICRvayA9IHllczsgdGhlbgorLSAgICBMSUJHQ1JZUFRfQ0ZMQUdTPWAkTElCR0NSWVBUX0NPTkZJRyAtLWNmbGFnc2AKKy0gICAgTElCR0NSWVBUX0xJQlM9YCRMSUJHQ1JZUFRfQ09ORklHIC0tbGlic2AKKyAgICAgaWZlbHNlKFskMl0sICwgOiwgWyQyXSkKKy0gICAgbGliZ2NyeXB0X2NvbmZpZ19ob3N0PWAkTElCR0NSWVBUX0NPTkZJRyAtLWhvc3QgMj4vZGV2L251bGwgfHwgZWNobyBub25lYAorKyAgICBsaWJnY3J5cHRfY29uZmlnX2hvc3Q9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9aG9zdCBsaWJnY3J5cHRgCisgICAgIGlmIHRlc3QgeCIkbGliZ2NyeXB0X2NvbmZpZ19ob3N0IiAhPSB4bm9uZSA7IHRoZW4KKyAgICAgICBpZiB0ZXN0IHgiJGxpYmdjcnlwdF9jb25maWdfaG9zdCIgIT0geCIkaG9zdCIgOyB0aGVuCisgICBBQ19NU0dfV0FSTihbWworQEAgLTEzNCw4ICs3Myw2IEBAIEFDX0RFRlVOKFtBTV9QQVRIX0xJQkdDUllQVF0sCisgICAgICAgZmkKKyAgICAgZmkKKyAgIGVsc2UKKy0gICAgTElCR0NSWVBUX0NGTEFHUz0iIgorLSAgICBMSUJHQ1JZUFRfTElCUz0iIgorICAgICBpZmVsc2UoWyQzXSwgLCA6LCBbJDNdKQorICAgZmkKKyAgIEFDX1NVQlNUKExJQkdDUllQVF9DRkxBR1MpCitkaWZmIC0tZ2l0IGEvc3JjL2xpYmdjcnlwdC5wYy5pbiBiL3NyYy9saWJnY3J5cHQucGMuaW4KK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi4yZmM4ZjUzCistLS0gL2Rldi9udWxsCisrKysgYi9zcmMvbGliZ2NyeXB0LnBjLmluCitAQCAtMCwwICsxLDMzIEBACisrIyBQcm9jZXNzIHRoaXMgZmlsZSB3aXRoIGF1dG9jb25mIHRvIHByb2R1Y2UgYSBwa2ctY29uZmlnIG1ldGFkYXRhIGZpbGUuCisrIyBDb3B5cmlnaHQgKEMpIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisrIyBBdXRob3I6IFNpbW9uIEpvc2Vmc3NvbgorKyMKKysjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRoZSBhdXRob3IgZ2l2ZXMKKysjIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsIHdpdGggb3Igd2l0aG91dAorKyMgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisrIworKyMgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorKyMgV0lUSE9VVCBBTlkgV0FSUkFOVFksIHRvIHRoZSBleHRlbnQgcGVybWl0dGVkIGJ5IGxhdzsgd2l0aG91dCBldmVuIHRoZQorKyMgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCisrCisrcHJlZml4PUBwcmVmaXhACisrZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAorK2xpYmRpcj1AbGliZGlyQAorK2luY2x1ZGVkaXI9QGluY2x1ZGVkaXJACisrCisrIyBBUEkgaW5mbworK2FwaV92ZXJzaW9uPUBMSUJHQ1JZUFRfQ09ORklHX0FQSV9WRVJTSU9OQAorK2hvc3Q9QExJQkdDUllQVF9DT05GSUdfSE9TVEAKKysKKysjIE1pc2MgaW5mb3JtYXRpb24uCisrc3ltbWV0cmljX2NpcGhlcnM9QExJQkdDUllQVF9DSVBIRVJTQAorK2FzeW1tZXRyaWNfY2lwaGVycz1ATElCR0NSWVBUX1BVQktFWV9DSVBIRVJTQAorK2RpZ2VzdHM9QExJQkdDUllQVF9ESUdFU1RTQAorKworK05hbWU6IGxpYmdjcnlwdAorK0Rlc2NyaXB0aW9uOiBHTlUgY3J5cHRvIGxpYnJhcnkKKytVUkw6IGh0dHA6Ly93d3cuZ251cGcub3JnCisrVmVyc2lvbjogQFZFUlNJT05ACisrTGliczogLUwke2xpYmRpcn0gLWxnY3J5cHQKKytMaWJzLnByaXZhdGU6IC1MJHtsaWJkaXJ9IC1sZ3BnLWVycm9yCisrQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0gCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy8wMDAxLWVjYy1TdG9yZS1FZERTQS1zZXNzaW9uLWtleS1pbi1zZWN1cmUtbWVtb3J5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy8wMDAxLWVjYy1TdG9yZS1FZERTQS1zZXNzaW9uLWtleS1pbi1zZWN1cmUtbWVtb3J5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTRkZmU2Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvZmlsZXMvMDAwMS1lY2MtU3RvcmUtRWREU0Etc2Vzc2lvbi1rZXktaW4tc2VjdXJlLW1lbW9yeS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLUNWRTogQ1ZFLTIwMTctOTUyNgotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotRnJvbSA0YTE3NjhkNjgzZjY1NzJhZDg2ZDgzMzUwOGM3MGU2YjNkYzFlZmRjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSm8gVmFuIEJ1bGNrIDxqby52YW5idWxja0Bjcy5rdWxldXZlbi5iZT4KLURhdGU6IFRodSwgMTkgSmFuIDIwMTcgMTc6MDA6MTUgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gZWNjOiBTdG9yZSBFZERTQSBzZXNzaW9uIGtleSBpbiBzZWN1cmUgbWVtb3J5LgotCi0qIGNpcGhlci9lY2MtZWRkc2EuYyAoX2djcnlfZWNjX2VkZHNhX3NpZ24pOiB1c2UgbXBpX3NuZXcgdG8gYWxsb2NhdGUKLXNlc3Npb24ga2V5LgotLS0KLQotQW4gYXR0YWNrZXIgd2hvIGxlYXJucyB0aGUgRWREU0Egc2Vzc2lvbiBrZXkgZnJvbSBzaWRlLWNoYW5uZWwKLW9ic2VydmF0aW9uIGR1cmluZyB0aGUgc2lnbmluZyBwcm9jZXNzLCBjYW4gZWFzaWx5IHJldm92ZXIgdGhlIGxvbmctCi10ZXJtIHNlY3JldCBrZXkuIFN0b3JpbmcgdGhlIHNlc3Npb24ga2V5IGluIHNlY3VyZSBtZW1vcnkgZW5zdXJlcyB0aGF0Ci1jb25zdGFudCB0aW1lIHBvaW50IG9wZXJhdGlvbnMgYXJlIHVzZWQgaW4gdGhlIE1QSSBsaWJyYXJ5LgotCi1TaWduZWQtb2ZmLWJ5OiBKbyBWYW4gQnVsY2sgPGpvLnZhbmJ1bGNrQGNzLmt1bGV1dmVuLmJlPgotLS0tCi0gY2lwaGVyL2VjYy1lZGRzYS5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvY2lwaGVyL2VjYy1lZGRzYS5jIGIvY2lwaGVyL2VjYy1lZGRzYS5jCi1pbmRleCBmOTFmODQ4OS4uODEzZTAzMGQgMTAwNjQ0Ci0tLS0gYS9jaXBoZXIvZWNjLWVkZHNhLmMKLSsrKyBiL2NpcGhlci9lY2MtZWRkc2EuYwotQEAgLTYwMyw3ICs2MDMsNyBAQCBfZ2NyeV9lY2NfZWRkc2Ffc2lnbiAoZ2NyeV9tcGlfdCBpbnB1dCwgRUNDX3NlY3JldF9rZXkgKnNrZXksCi0gICBhID0gbXBpX3NuZXcgKDApOwotICAgeCA9IG1waV9uZXcgKDApOwotICAgeSA9IG1waV9uZXcgKDApOwotLSAgciA9IG1waV9uZXcgKDApOwotKyAgciA9IG1waV9zbmV3ICgwKTsKLSAgIGN0eCA9IF9nY3J5X21waV9lY19wX2ludGVybmFsX25ldyAoc2tleS0+RS5tb2RlbCwgc2tleS0+RS5kaWFsZWN0LCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2V5LT5FLnAsIHNrZXktPkUuYSwgc2tleS0+RS5iKTsKLSAgIGIgPSAoY3R4LT5uYml0cys3KS84OwotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy8wMDAyLWxpYmdjcnlwdC1maXgtYnVpbGRpbmctZXJyb3Itd2l0aC1PMi1pbi1zeXNyb290LXBhdGgucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2ZpbGVzLzAwMDItbGliZ2NyeXB0LWZpeC1idWlsZGluZy1lcnJvci13aXRoLU8yLWluLXN5c3Jvb3QtcGF0aC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzU1NGYzCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy8wMDAyLWxpYmdjcnlwdC1maXgtYnVpbGRpbmctZXJyb3Itd2l0aC1PMi1pbi1zeXNyb290LXBhdGgucGF0Y2gKQEAgLTAsMCArMSw0MSBAQAorRnJvbSA5NzU3MGVmMjcxZWExZmI3YjVjYTkwM2VlYzg4ZjY4NDA3YjBlYzc2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAxNiBBdWcgMjAxNyAxMDo0NDo0MSArMDgwMAorU3ViamVjdDogW1BBVENIIDIvNF0gbGliZ2NyeXB0OiBmaXggYnVpbGRpbmcgZXJyb3Igd2l0aCAnLU8yJyBpbiBzeXNyb290IHBhdGgKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK0NoYXJhY3RlcnMgbGlrZSAnLU8yJyBvciAnLU9mYXN0JyB3aWxsIGJlIHJlcGxhY2VkIGJ5ICctTzEnIHdoZW4KK2NvbXBpbGluZyBjaXBoZXIuCitJZiB3ZSBhcmUgY3Jvc3MgY29tcGlsaW5nIGxpYmdjcnlwdCBhbmQgc3lzcm9vdCBjb250YWlucyBzdWNoCitjaGFyYWN0ZXJzLCB3ZSB3b3VsZAorZ2V0IGNvbXBpbGUgZXJyb3JzIGJlY2F1c2UgdGhlIHN5c3Jvb3QgcGF0aCBoYXMgYmVlbiBtb2RpZmllZC4KKworRml4IHRoaXMgYnkgYWRkaW5nIGJsYW5rIHNwYWNlcyBiZWZvcmUgYW5kIGFmdGVyIHRoZSBvcmlnaW5hbCBtYXRjaGluZworcGF0dGVybiBpbiB0aGUKK3NlZCBjb21tYW5kLgorCitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CisKK1JlYmFzZSB0byAxLjguMAorU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgY2lwaGVyL01ha2VmaWxlLmFtIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY2lwaGVyL01ha2VmaWxlLmFtIGIvY2lwaGVyL01ha2VmaWxlLmFtCitpbmRleCA5NWM0NTEwLi5iZDUyZWM3IDEwMDY0NAorLS0tIGEvY2lwaGVyL01ha2VmaWxlLmFtCisrKysgYi9jaXBoZXIvTWFrZWZpbGUuYW0KK0BAIC0xMTYsNyArMTE2LDcgQEAgZ29zdC1zLWJveDogZ29zdC1zLWJveC5jCisgCisgCisgaWYgRU5BQkxFX09fRkxBR19NVU5HSU5HCistb19mbGFnX211bmdpbmcgPSBzZWQgLWUgJ3MvLU9cKFsyLTlzXVsyLTlzXSpcKS8tTzEvJyAtZSAncy8tT2Zhc3QvLU8xL2cnCisrb19mbGFnX211bmdpbmcgPSBzZWQgLWUgJ3MvIC1PXChbMi05c11bMi05c10qXCkgLyAtTzEgLycgLWUgJ3MvIC1PZmFzdCAvIC1PMSAvZycKKyBlbHNlCisgb19mbGFnX211bmdpbmcgPSBjYXQKKyBlbmRpZgorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvZmlsZXMvMDAwMy10ZXN0cy1iZW5jaC1zbG9wZS5jLXdvcmthcm91bmQtSUNFLWZhaWx1cmUtb24tbWlwcy13LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy8wMDAzLXRlc3RzLWJlbmNoLXNsb3BlLmMtd29ya2Fyb3VuZC1JQ0UtZmFpbHVyZS1vbi1taXBzLXcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTA1ZGYyOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvZmlsZXMvMDAwMy10ZXN0cy1iZW5jaC1zbG9wZS5jLXdvcmthcm91bmQtSUNFLWZhaWx1cmUtb24tbWlwcy13LnBhdGNoCkBAIC0wLDAgKzEsNzkgQEAKK0Zyb20gN2NjNzAyYzdiNWExY2NjMmIwMDkxZjNlZmZhMTM5MWI2YzMwMzBmZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFdlZCwgMTYgQXVnIDIwMTcgMTA6NDY6MjggKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAzLzRdIHRlc3RzL2JlbmNoLXNsb3BlLmM6IHdvcmthcm91bmQgSUNFIGZhaWx1cmUgb24gbWlwcyB3aXRoCisgJy1PIC1nJworCitIaXQgYSBJQ0UgYW5kIGNvdWxkIHJlZHVjZSBpdCB0byB0aGUgZm9sbG93aW5nIG1pbmltYWwgZXhhbXBsZToKKworMS4gT25seSB0aGUgc2l6ZSBvZiBhcnJheSBhc3NpZ25lZCB3aXRoIDIgY2F1c2VkIHRoZSBpc3N1ZToKKyQgY2F0ID4gbWlwZ2NjLXRlc3QuYyA8PCBFTkQKKworaW50IG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKyAgICAgICAgY2hhciAqcFN0ckFycnlbQVJSQVlfU0laRV9NQVhdID0geyJoZWxsbyJ9OworICAgICAgICBpbnQgaSA9IDA7CisKKyAgICAgICAgd2hpbGUocFN0ckFycnlbaV0gJiYgaTxBUlJBWV9TSVpFX01BWCkKKyAgICAgICAgeworICAgICAgICAgICAgICAgIHByaW50ZigiJXNcbiIsIHBTdHJBcnJ5W2ldKTsKKyAgICAgICAgICAgICAgICBpKys7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gMDsKK30KKworRU5ECisKKzIuIE9ubHkgLU8xIGFuZCAtZyBvbiBtaXBzIGNhdXNlZCB0aGUgaXNzdWU6CiskIG1pcHMtcG9reS1saW51eC1nY2MgLU8xIC1nIC1vIG1pcGdjYy10ZXN0IG1pcGdjYy10ZXN0LmMKK21pcGdjYy10ZXN0LmM6IEluIGZ1bmN0aW9uICdtYWluJzoKK21pcGdjYy10ZXN0LmM6MTg6MTogaW50ZXJuYWwgY29tcGlsZXIgZXJyb3I6IGluIGR3YXJmMm91dF92YXJfbG9jYXRpb24sCithdCBkd2FyZjJvdXQuYzoyMDgxMAorIH0KKyBeCitQbGVhc2Ugc3VibWl0IGEgZnVsbCBidWcgcmVwb3J0LAord2l0aCBwcmVwcm9jZXNzZWQgc291cmNlIGlmIGFwcHJvcHJpYXRlLgorU2VlIDxodHRwOi8vZ2NjLmdudS5vcmcvYnVncy5odG1sPiBmb3IgaW5zdHJ1Y3Rpb25zCisKKzMuIFRoZSBxdWljayB3b3Jrcm91bmQgaXMgdHJ5aW5nIHRvIGVubGFyZ2UgdGhlIHNpemUgb2YgYXJyYXkgd2l0aAorbGFyZ2VyCit0aGFuIDIuCisKKzQuIEZpbGUgYSBidWcgdG8gR05VLCBidXQgaXQgY291bGQgbm90IGJlIHJlcHJvZHVjZWQgb24gdGhlcmUKK2Vudmlyb25tZW50LgoraHR0cDovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD02MDY0MworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lIHNwZWNpZmljXQorCitSZWJhc2UgdG8gMS44LjAKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIHRlc3RzL2JlbmNoLXNsb3BlLmMgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvdGVzdHMvYmVuY2gtc2xvcGUuYyBiL3Rlc3RzL2JlbmNoLXNsb3BlLmMKK2luZGV4IDc1ZTZlNDMuLjRlNzA4NDIgMTAwNjQ0CistLS0gYS90ZXN0cy9iZW5jaC1zbG9wZS5jCisrKysgYi90ZXN0cy9iZW5jaC1zbG9wZS5jCitAQCAtMTQ2Myw3ICsxNDYzLDcgQEAgc3RhdGljIHN0cnVjdCBiZW5jaF9vcHMgaGFzaF9vcHMgPSB7CisgfTsKKyAKKyAKKy1zdGF0aWMgc3RydWN0IGJlbmNoX2hhc2hfbW9kZSBoYXNoX21vZGVzW10gPSB7Cisrc3RhdGljIHN0cnVjdCBiZW5jaF9oYXNoX21vZGUgaGFzaF9tb2Rlc1szXSA9IHsKKyAgIHsiIiwgJmhhc2hfb3BzfSwKKyAgIHswfSwKKyB9OworQEAgLTE2MjksNyArMTYyOSw3IEBAIHN0YXRpYyBzdHJ1Y3QgYmVuY2hfb3BzIG1hY19vcHMgPSB7CisgfTsKKyAKKyAKKy1zdGF0aWMgc3RydWN0IGJlbmNoX21hY19tb2RlIG1hY19tb2Rlc1tdID0geworK3N0YXRpYyBzdHJ1Y3QgYmVuY2hfbWFjX21vZGUgbWFjX21vZGVzWzNdID0geworICAgeyIiLCAmbWFjX29wc30sCisgICB7MH0sCisgfTsKKy0tIAorMS44LjMuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2ZpbGVzLzAwMDQtdGVzdHMtTWFrZWZpbGUuYW0tZml4LXVuZGVmaW5lZC1yZWZlcmVuY2UtdG8tcHRocmVhZC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvZmlsZXMvMDAwNC10ZXN0cy1NYWtlZmlsZS5hbS1maXgtdW5kZWZpbmVkLXJlZmVyZW5jZS10by1wdGhyZWFkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2MjJkZjMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2ZpbGVzLzAwMDQtdGVzdHMtTWFrZWZpbGUuYW0tZml4LXVuZGVmaW5lZC1yZWZlcmVuY2UtdG8tcHRocmVhZC5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIGUyMGRiZGIwYjhmMGFmODQwZWY5MGIyOTljNGUyMjc3YzUyZGRmODcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBTdW4sIDEyIEp1biAyMDE2IDA0OjQ0OjI5IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0ggNC80XSB0ZXN0cy9NYWtlZmlsZS5hbTogZml4IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8KKyBgcHRocmVhZF9jcmVhdGUnCisKK0FkZCBtaXNzaW5nICctbHB0aHJlYWQnIHRvIENGTEFHUworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorLS0tCisgdGVzdHMvTWFrZWZpbGUuYW0gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5hbSBiL3Rlc3RzL01ha2VmaWxlLmFtCitpbmRleCAxNzQ0ZWE3Li4wNGNmNDI1IDEwMDY0NAorLS0tIGEvdGVzdHMvTWFrZWZpbGUuYW0KKysrKyBiL3Rlc3RzL01ha2VmaWxlLmFtCitAQCAtNjQsNCArNjQsNCBAQCBFWFRSQV9ESVNUID0gUkVBRE1FIHJzYS0xNmsua2V5IGNhdnNfdGVzdHMuc2ggY2F2c19kcml2ZXIucGwgXAorIAorIExEQUREID0gJChzdGFuZGFyZF9sZGFkZCkgJChHUEdfRVJST1JfTElCUykKKyB0X2xvY2tfTERBREQgPSAkKHN0YW5kYXJkX2xkYWRkKSAkKEdQR19FUlJPUl9NVF9MSUJTKQorLXRfbG9ja19DRkxBR1MgPSAkKEdQR19FUlJPUl9NVF9DRkxBR1MpCisrdF9sb2NrX0NGTEFHUyA9ICQoR1BHX0VSUk9SX01UX0NGTEFHUykgLWxwdGhyZWFkCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy8wMDA1LWVjYy1BZGQtaW5wdXQtdmFsaWRhdGlvbi1mb3ItWDI1NTE5LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy8wMDA1LWVjYy1BZGQtaW5wdXQtdmFsaWRhdGlvbi1mb3ItWDI1NTE5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2ZmRkNzQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2ZpbGVzLzAwMDUtZWNjLUFkZC1pbnB1dC12YWxpZGF0aW9uLWZvci1YMjU1MTkucGF0Y2gKQEAgLTAsMCArMSwxNTggQEAKK0Zyb20gZWY1NzBlM2QyNzczYzEyMTI2ZTdkM2ZjZGM0ZGI5ZWY4MGE1ZTIxNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE5JSUJFIFl1dGFrYSA8Z25paWJlQGZzaWoub3JnPgorRGF0ZTogRnJpLCAyNSBBdWcgMjAxNyAxODoxMzoyOCArMDkwMAorU3ViamVjdDogW1BBVENIXSBlY2M6IEFkZCBpbnB1dCB2YWxpZGF0aW9uIGZvciBYMjU1MTkuCisKKyogY2lwaGVyL2VjYy5jIChlY2NfZGVjcnlwdF9yYXcpOiBBZGQgaW5wdXQgdmFsaWRhdGlvbi4KKyogbXBpL2VjLmMgKGVjX3BfaW5pdCk6IFVzZSBzY3JhdGNoIGJ1ZmZlciBmb3IgYmFkIHBvaW50cy4KKyhfZ2NyeV9tcGlfZWNfYmFkX3BvaW50KTogTmV3LgorCistLQorCitGb2xsb3dpbmcgaXMgdGhlIHBhcGVyIGRlc2NyaWJpbmcgdGhlIGF0dGFjazoKKworICAgIE1heSB0aGUgRm91cnRoIEJlIFdpdGggWW91OiBBIE1pY3JvYXJjaGl0ZWN0dXJhbCBTaWRlIENoYW5uZWwgQXR0YWNrCisgICAgb24gUmVhbC1Xb3JsZCBBcHBsaWNhdGlvbnMgb2YgQ3VydmUyNTUxOQorICAgIGJ5IERhbmllbCBHZW5raW4sIEx1a2UgVmFsZW50YSwgYW5kIFl1dmFsIFlhcm9tCisKK0luIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLCB3ZSBkbyBvdXRwdXQgY2hlY2tpbmcgYW5kIGl0IHJlc3VsdHMgYW4KK2Vycm9yIGZvciB0aG9zZSBiYWQgcG9pbnRzLiAgSG93ZXZlciwgd2hlbiBhdHRhY2tlZCwgdGhlIGNvbXB1dGF0aW9uCit3aWxsIGRvbmUgd2l0aCBsZWFrIG9mIHByaXZhdGUga2V5LCBldmVuIGl0IHdpbGwgcmVzdWx0cyBlcnJvcnMuICBUbworbWl0aWdhdGUgbGVhaywgd2UgYWRkZWQgaW5wdXQgdmFsaWRhdGlvbi4KKworTm90ZSB0aGF0IHdlIG9ubHkgbGlzdCBiYWQgcG9pbnRzIHdpdGggTVNCPTAuICBCeSBYMjU1MTksIE1TQiBpcworYWx3YXlzIGNsZWFyZWQuCisKK0luIGZ1dHVyZSwgd2Ugc2hvdWxkIGltcGxlbWVudCBjb25zdGFudC10aW1lIGZpZWxkIGNvbXB1dGF0aW9uLiAgVGhlbiwKK3RoaXMgaW5wdXQgdmFsaWRhdGlvbiBjb3VsZCBiZSByZW1vdmVkLCBpZiBwZXJmb3JtYW5jZSBpcyBpbXBvcnRhbnQKK2FuZCB3ZSBhcmUgc3VyZSBmb3Igbm8gbGVhay4KKworQ1ZFLWlkOiBDVkUtMjAxNy0wMzc5CitTaWduZWQtb2ZmLWJ5OiBOSUlCRSBZdXRha2EgPGduaWliZUBmc2lqLm9yZz4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorQ1ZFOiBDVkUtMjAxNy0wMzc5CitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CistLS0KKyBjaXBoZXIvZWNjLmMgfCAxNyArKysrKysrKysrKysrKystLQorIG1waS9lYy5jICAgICB8IDUxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQorIHNyYy9tcGkuaCAgICB8ICAxICsKKyAzIGZpbGVzIGNoYW5nZWQsIDY0IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jaXBoZXIvZWNjLmMgYi9jaXBoZXIvZWNjLmMKK2luZGV4IGUyNWJmMDkuLjRlM2U1YjEgMTAwNjQ0CistLS0gYS9jaXBoZXIvZWNjLmMKKysrKyBiL2NpcGhlci9lY2MuYworQEAgLTE2MjgsOSArMTYyOCwyMiBAQCBlY2NfZGVjcnlwdF9yYXcgKGdjcnlfc2V4cF90ICpyX3BsYWluLCBnY3J5X3NleHBfdCBzX2RhdGEsIGdjcnlfc2V4cF90IGtleXBhcm1zKQorICAgaWYgKERCR19DSVBIRVIpCisgICAgIGxvZ19wcmludHBudCAoImVjY19kZWNyeXB0ICAgIGtHIiwgJmtHLCBOVUxMKTsKKyAKKy0gIGlmICghKGZsYWdzICYgUFVCS0VZX0ZMQUdfREpCX1RXRUFLKQorKyAgaWYgKChmbGFncyAmIFBVQktFWV9GTEFHX0RKQl9UV0VBSykpCisrICAgIHsKKyAgICAgICAvKiBGb3IgWDI1NTE5LCBieSBpdHMgZGVmaW5pdGlvbiwgdmFsaWRhdGlvbiBzaG91bGQgbm90IGJlIGRvbmUuICAqLworLSAgICAgICYmICFfZ2NyeV9tcGlfZWNfY3VydmVfcG9pbnQgKCZrRywgZWMpKQorKyAgICAgIC8qIChJbnN0ZWFkLCB3ZSBkbyBvdXRwdXQgY2hlY2suKQorKyAgICAgICAqCisrICAgICAgICogSG93ZXZlciwgdG8gbWl0aWdhdGUgc2VjcmV0IGtleSBsZWFrIGZyb20gb3VyIGltcGxlbWVudGF0aW9uLAorKyAgICAgICAqIHdlIGFsc28gZG8gaW5wdXQgdmFsaWRhdGlvbiBoZXJlLiAgRm9yIGNvbnN0YW50LXRpbWUKKysgICAgICAgKiBpbXBsZW1lbnRhdGlvbiwgd2UgY2FuIHJlbW92ZSB0aGlzIGlucHV0IHZhbGlkYXRpb24uCisrICAgICAgICovCisrICAgICAgaWYgKF9nY3J5X21waV9lY19iYWRfcG9pbnQgKCZrRywgZWMpKQorKyAgICAgICAgeworKyAgICAgICAgICByYyA9IEdQR19FUlJfSU5WX0RBVEE7CisrICAgICAgICAgIGdvdG8gbGVhdmU7CisrICAgICAgICB9CisrICAgIH0KKysgIGVsc2UgaWYgKCFfZ2NyeV9tcGlfZWNfY3VydmVfcG9pbnQgKCZrRywgZWMpKQorICAgICB7CisgICAgICAgcmMgPSBHUEdfRVJSX0lOVl9EQVRBOworICAgICAgIGdvdG8gbGVhdmU7CitkaWZmIC0tZ2l0IGEvbXBpL2VjLmMgYi9tcGkvZWMuYworaW5kZXggYTBmNzM1Ny4uNGMxNjYwMyAxMDA2NDQKKy0tLSBhL21waS9lYy5jCisrKysgYi9tcGkvZWMuYworQEAgLTM5Niw2ICszOTYsMjkgQEAgZWNfZ2V0X3R3b19pbnZfcCAobXBpX2VjX3QgZWMpCisgfQorIAorIAorK3N0YXRpYyBjb25zdCBjaGFyICpjdXJ2ZTI1NTE5X2JhZF9wb2ludHNbXSA9IHsKKysgICIweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLAorKyAgIjB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMSIsCisrICAiMHgwMGI4NDk1ZjE2MDU2Mjg2ZmRiMTMyOWNlYjhkMDlkYTZhYzQ5ZmYxZmFlMzU2MTZhZWI4NDEzYjdjN2FlYmUwIiwKKysgICIweDU3MTE5ZmQwZGQ0ZTIyZDg4NjhlMWM1OGM0NWM0NDA0NWJlZjgzOWM1NWIxZDBiMTI0OGM1MGEzYmM5NTljNWYiLAorKyAgIjB4N2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZlYyIsCisrICAiMHg3ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmVkIiwKKysgICIweDdmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZWUiLAorKyAgTlVMTAorK307CisrCisrc3RhdGljIGdjcnlfbXBpX3QKKytzY2FudmFsIChjb25zdCBjaGFyICpzdHJpbmcpCisreworKyAgZ3BnX2Vycl9jb2RlX3QgcmM7CisrICBnY3J5X21waV90IHZhbDsKKysKKysgIHJjID0gX2djcnlfbXBpX3NjYW4gKCZ2YWwsIEdDUllNUElfRk1UX0hFWCwgc3RyaW5nLCAwLCBOVUxMKTsKKysgIGlmIChyYykKKysgICAgbG9nX2ZhdGFsICgic2Nhbm5pbmcgRUNDIHBhcmFtZXRlciBmYWlsZWQ6ICVzXG4iLCBncGdfc3RyZXJyb3IgKHJjKSk7CisrICByZXR1cm4gdmFsOworK30KKysKKyAKKyAvKiBUaGlzIGZ1bmN0aW9uIGluaXRpYWxpemVkIGEgY29udGV4dCBmb3IgZWxsaXB0aWMgY3VydmUgYmFzZWQgb24gdGhlCisgICAgZmllbGQgR0YocCkuICBQIGlzIHRoZSBwcmltZSBzcGVjaWZ5aW5nIHRoaXMgZmllbGQsIEEgaXMgdGhlIGZpcnN0CitAQCAtNDM0LDkgKzQ1NywxNyBAQCBlY19wX2luaXQgKG1waV9lY190IGN0eCwgZW51bSBnY3J5X21waV9lY19tb2RlbHMgbW9kZWwsCisgCisgICBfZ2NyeV9tcGlfZWNfZ2V0X3Jlc2V0IChjdHgpOworIAorLSAgLyogQWxsb2NhdGUgc2NyYXRjaCB2YXJpYWJsZXMuICAqLworLSAgZm9yIChpPTA7IGk8IERJTShjdHgtPnQuc2NyYXRjaCk7IGkrKykKKy0gICAgY3R4LT50LnNjcmF0Y2hbaV0gPSBtcGlfYWxsb2NfbGlrZSAoY3R4LT5wKTsKKysgIGlmIChtb2RlbCA9PSBNUElfRUNfTU9OVEdPTUVSWSkKKysgICAgeworKyAgICAgIGZvciAoaT0wOyBpPCBESU0oY3R4LT50LnNjcmF0Y2gpICYmIGN1cnZlMjU1MTlfYmFkX3BvaW50c1tpXTsgaSsrKQorKyAgICAgICAgY3R4LT50LnNjcmF0Y2hbaV0gPSBzY2FudmFsIChjdXJ2ZTI1NTE5X2JhZF9wb2ludHNbaV0pOworKyAgICB9CisrICBlbHNlCisrICAgIHsKKysgICAgICAvKiBBbGxvY2F0ZSBzY3JhdGNoIHZhcmlhYmxlcy4gICovCisrICAgICAgZm9yIChpPTA7IGk8IERJTShjdHgtPnQuc2NyYXRjaCk7IGkrKykKKysgICAgICAgIGN0eC0+dC5zY3JhdGNoW2ldID0gbXBpX2FsbG9jX2xpa2UgKGN0eC0+cCk7CisrICAgIH0KKyAKKyAgIC8qIFByZXBhcmUgZm9yIGZhc3QgcmVkdWN0aW9uLiAgKi8KKyAgIC8qIEZJWE1FOiBuZWVkIGEgdGVzdCBmb3IgTklTVCB2YWx1ZXMuICBIb3dldmVyIGl0IGRvZXMgbm90IGdhaW4gdXMKK0BAIC0xNTcyLDMgKzE2MDMsMTcgQEAgX2djcnlfbXBpX2VjX2N1cnZlX3BvaW50IChnY3J5X21waV9wb2ludF90IHBvaW50LCBtcGlfZWNfdCBjdHgpCisgCisgICByZXR1cm4gcmVzOworIH0KKysKKysKKytpbnQKKytfZ2NyeV9tcGlfZWNfYmFkX3BvaW50IChnY3J5X21waV9wb2ludF90IHBvaW50LCBtcGlfZWNfdCBjdHgpCisreworKyAgaW50IGk7CisrICBnY3J5X21waV90IHhfYmFkOworKworKyAgZm9yIChpID0gMDsgKHhfYmFkID0gY3R4LT50LnNjcmF0Y2hbaV0pOyBpKyspCisrICAgIGlmICghbXBpX2NtcCAocG9pbnQtPngsIHhfYmFkKSkKKysgICAgICByZXR1cm4gMTsKKysKKysgIHJldHVybiAwOworK30KK2RpZmYgLS1naXQgYS9zcmMvbXBpLmggYi9zcmMvbXBpLmgKK2luZGV4IGI1Mzg1YjUuLmFlYmE3ZjggMTAwNjQ0CistLS0gYS9zcmMvbXBpLmgKKysrKyBiL3NyYy9tcGkuaAorQEAgLTI5Niw2ICsyOTYsNyBAQCB2b2lkIF9nY3J5X21waV9lY19tdWxfcG9pbnQgKG1waV9wb2ludF90IHJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdjcnlfbXBpX3Qgc2NhbGFyLCBtcGlfcG9pbnRfdCBwb2ludCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1waV9lY190IGN0eCk7CisgaW50ICBfZ2NyeV9tcGlfZWNfY3VydmVfcG9pbnQgKGdjcnlfbXBpX3BvaW50X3QgcG9pbnQsIG1waV9lY190IGN0eCk7CisraW50IF9nY3J5X21waV9lY19iYWRfcG9pbnQgKGdjcnlfbXBpX3BvaW50X3QgcG9pbnQsIG1waV9lY190IGN0eCk7CisgCisgZ2NyeV9tcGlfdCBfZ2NyeV9tcGlfZWNfZWMyb3MgKGdjcnlfbXBpX3BvaW50X3QgcG9pbnQsIG1waV9lY190IGVjdHgpOworIAorLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvZmlsZXMvMDAwNi1GaXgtYnVpbGRpbmctQUFyY2gzMi1DRS1pbXBsZW1lbnRhdGlvbnMtd2hlbi10YXJnZXQtLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy8wMDA2LUZpeC1idWlsZGluZy1BQXJjaDMyLUNFLWltcGxlbWVudGF0aW9ucy13aGVuLXRhcmdldC0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjViOWZkNAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvZmlsZXMvMDAwNi1GaXgtYnVpbGRpbmctQUFyY2gzMi1DRS1pbXBsZW1lbnRhdGlvbnMtd2hlbi10YXJnZXQtLnBhdGNoCkBAIC0wLDAgKzEsOTYgQEAKK0Zyb20gNGE3YWEzMGFlOWYzY2U3OThkZDg4NmMyZjJkNDE2NGM0MzAyNzc0OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEp1c3NpIEtpdmlsaW5uYSA8anVzc2kua2l2aWxpbm5hQGlraS5maT4KK0RhdGU6IFNhdCwgMjkgSnVsIDIwMTcgMTQ6MzQ6MjMgKzAzMDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IGJ1aWxkaW5nIEFBcmNoMzIgQ0UgaW1wbGVtZW50YXRpb25zIHdoZW4gdGFyZ2V0IGlzIEFSTXY2CisgYXJjaAorCisqIGNpcGhlci9jaXBoZXItZ2NtLWFybXY4LWFhcmNoMzItY2UuUzogU2VsZWN0IEFSTXY4IGFyY2hpdGVjdXJlLgorKiBjaXBoZXIvcmlqbmRhZWwtYXJtdjgtYWFyY2gzMi1jZS5TOiBEaXR0by4KKyogY2lwaGVyL3NoYTEtYXJtdjgtYWFyY2gzMi1jZS5TOiBEaXR0by4KKyogY2lwaGVyL3NoYTI1Ni1hcm12OC1hYXJjaDMyLWNlLlM6IERpdHRvLgorKiBjb25maWd1cmUuYWMgKGdjcnlfY3ZfZ2NjX2lubGluZV9hc21fYWFyY2gzMl9jcnlwdG8pOiBEaXR0by4KKy0tCisKK1Jhc3BiaWFuIGRpc3RyaWJ1dGlvbiBkZWZhdWx0cyB0byBBUk12NiBhcmNoaXRlY3R1cmUgdGh1cyAncmJpdCcKK2luc3RydWN0aW9uIGlzIG5vdCBhdmFpbGFibGUgd2l0aCBkZWZhdWx0IGNvbXBpbGVyIGZsYWdzLiBQYXRjaAorYWRkcyBleHBsaWNpdCBhcmNoaXRlY3R1cmUgc2VsZWN0aW9uIGZvciBBUk12OCB0byBlbmFibGUgJ3JiaXQnCit1c2FnZSB3aXRoIEFSTXY4L0FBcmNoMzItQ0UgYXNzZW1ibHkgaW1wbGVtZW50YXRpb25zIG9mIFNIQSwKK0dIQVNIIGFuZCBBRVMuCisKK1JlcG9ydGVkLWJ5OiBDaHJpcyBIb3JyeSA8emVyYmV5QGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEp1c3NpIEtpdmlsaW5uYSA8anVzc2kua2l2aWxpbm5hQGlraS5maT4KKworU2lnbmVkLW9mZi1ieTogUGF1bCBCYXJrZXIgPHBiYXJrZXJAdG9nYW5sYWJzLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworLS0tCisgY2lwaGVyL2NpcGhlci1nY20tYXJtdjgtYWFyY2gzMi1jZS5TIHwgMSArCisgY2lwaGVyL3Jpam5kYWVsLWFybXY4LWFhcmNoMzItY2UuUyAgIHwgMSArCisgY2lwaGVyL3NoYTEtYXJtdjgtYWFyY2gzMi1jZS5TICAgICAgIHwgMSArCisgY2lwaGVyL3NoYTI1Ni1hcm12OC1hYXJjaDMyLWNlLlMgICAgIHwgMSArCisgY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgIHwgMSArCisgNSBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2NpcGhlci9jaXBoZXItZ2NtLWFybXY4LWFhcmNoMzItY2UuUyBiL2NpcGhlci9jaXBoZXItZ2NtLWFybXY4LWFhcmNoMzItY2UuUworaW5kZXggYjYxYTc4NzEuLjFkZTY2YTE2IDEwMDY0NAorLS0tIGEvY2lwaGVyL2NpcGhlci1nY20tYXJtdjgtYWFyY2gzMi1jZS5TCisrKysgYi9jaXBoZXIvY2lwaGVyLWdjbS1hcm12OC1hYXJjaDMyLWNlLlMKK0BAIC0yNCw2ICsyNCw3IEBACisgICAgIGRlZmluZWQoSEFWRV9HQ0NfSU5MSU5FX0FTTV9BQVJDSDMyX0NSWVBUTykKKyAKKyAuc3ludGF4IHVuaWZpZWQKKysuYXJjaCBhcm12OC1hCisgLmZwdSBjcnlwdG8tbmVvbi1mcC1hcm12OAorIC5hcm0KKyAKK2RpZmYgLS1naXQgYS9jaXBoZXIvcmlqbmRhZWwtYXJtdjgtYWFyY2gzMi1jZS5TIGIvY2lwaGVyL3Jpam5kYWVsLWFybXY4LWFhcmNoMzItY2UuUworaW5kZXggZjM3NWY2NzMuLjVjOGZhM2MwIDEwMDY0NAorLS0tIGEvY2lwaGVyL3Jpam5kYWVsLWFybXY4LWFhcmNoMzItY2UuUworKysrIGIvY2lwaGVyL3Jpam5kYWVsLWFybXY4LWFhcmNoMzItY2UuUworQEAgLTI0LDYgKzI0LDcgQEAKKyAgICAgZGVmaW5lZChIQVZFX0dDQ19JTkxJTkVfQVNNX0FBUkNIMzJfQ1JZUFRPKQorIAorIC5zeW50YXggdW5pZmllZAorKy5hcmNoIGFybXY4LWEKKyAuZnB1IGNyeXB0by1uZW9uLWZwLWFybXY4CisgLmFybQorIAorZGlmZiAtLWdpdCBhL2NpcGhlci9zaGExLWFybXY4LWFhcmNoMzItY2UuUyBiL2NpcGhlci9zaGExLWFybXY4LWFhcmNoMzItY2UuUworaW5kZXggYjBiYzVmZmUuLmJmMmIyMzNiIDEwMDY0NAorLS0tIGEvY2lwaGVyL3NoYTEtYXJtdjgtYWFyY2gzMi1jZS5TCisrKysgYi9jaXBoZXIvc2hhMS1hcm12OC1hYXJjaDMyLWNlLlMKK0BAIC0yNCw2ICsyNCw3IEBACisgICAgIGRlZmluZWQoSEFWRV9HQ0NfSU5MSU5FX0FTTV9BQVJDSDMyX0NSWVBUTykgJiYgZGVmaW5lZChVU0VfU0hBMSkKKyAKKyAuc3ludGF4IHVuaWZpZWQKKysuYXJjaCBhcm12OC1hCisgLmZwdSBjcnlwdG8tbmVvbi1mcC1hcm12OAorIC5hcm0KKyAKK2RpZmYgLS1naXQgYS9jaXBoZXIvc2hhMjU2LWFybXY4LWFhcmNoMzItY2UuUyBiL2NpcGhlci9zaGEyNTYtYXJtdjgtYWFyY2gzMi1jZS5TCitpbmRleCAyMDQxYTIzNy4uMmIxN2FiMWIgMTAwNjQ0CistLS0gYS9jaXBoZXIvc2hhMjU2LWFybXY4LWFhcmNoMzItY2UuUworKysrIGIvY2lwaGVyL3NoYTI1Ni1hcm12OC1hYXJjaDMyLWNlLlMKK0BAIC0yNCw2ICsyNCw3IEBACisgICAgIGRlZmluZWQoSEFWRV9HQ0NfSU5MSU5FX0FTTV9BQVJDSDMyX0NSWVBUTykgJiYgZGVmaW5lZChVU0VfU0hBMjU2KQorIAorIC5zeW50YXggdW5pZmllZAorKy5hcmNoIGFybXY4LWEKKyAuZnB1IGNyeXB0by1uZW9uLWZwLWFybXY4CisgLmFybQorIAorZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggMjdmYWE3ZjQuLjY2ZTdjZDY3IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0xNjE5LDYgKzE2MTksNyBAQCBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciBHQ0MgaW5saW5lIGFzc2VtYmxlciBzdXBwb3J0cyBBQXJjaDMyIENyeXB0byBFeHRlbnNpb24gaQorICAgICAgICAgICBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoCisgICAgICAgICAgIFtbX19hc21fXygKKyAgICAgICAgICAgICAgICAgIi5zeW50YXggdW5pZmllZFxuXHQiCisrICAgICAgICAgICAgICAgICIuYXJjaCBhcm12OC1hXG5cdCIKKyAgICAgICAgICAgICAgICAgIi5hcm1cblx0IgorICAgICAgICAgICAgICAgICAiLmZwdSBjcnlwdG8tbmVvbi1mcC1hcm12OFxuXHQiCisgCistLSAKKzIuMTEuMAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2ZpbGVzL0NWRS0yMDE3LTc1MjYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2ZpbGVzL0NWRS0yMDE3LTc1MjYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4NGZhOTYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy9DVkUtMjAxNy03NTI2LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDU1ICswLDAgQEAKLUZsdXNoK3JlbG9hZCBzaWRlLWNoYW5uZWwgYXR0YWNrIG9uIFJTQSBzZWNyZXQga2V5cyBkdWJiZWQgIlNsaWRpbmcgcmlnaHQKLWludG8gZGlzYXN0ZXIiLgotCi1DVkU6IENWRS0yMDE3LTc1MjYKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLUZyb20gMTJlZTQwMGMzOWUwZWJiNWZiODE5YzM5MjZkNDU5YzI3OGZjOTlmZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5JSUJFIFl1dGFrYSA8Z25paWJlQGZzaWoub3JnPgotRGF0ZTogVHVlLCA0IEFwciAyMDE3IDE3OjM4OjA1ICswOTAwCi1TdWJqZWN0OiBbUEFUQ0ggMS81XSBtcGk6IFNpbXBsaWZ5IG1waV9wb3dtLgotCi0qIG1waS9tcGktcG93LmMgKF9nY3J5X21waV9wb3dtKTogU2ltcGxpZnkgdGhlIGxvb3AuCi0KLS0tCi0KLVRoaXMgZml4IGlzIG5vdCBhIHNvbHV0aW9uIGZvciB0aGUgcHJvYmxlbSByZXBvcnRlZCAoeWV0KS4gIFRoZQotcHJvYmxlbSBpcyB0aGF0IHRoZSBjdXJyZW50IGFsZ29yaXRobSBvZiBfZ2NyeV9tcGlfcG93bSBkZXBlbmRzIG9uCi1leHBvbmVudCBhbmQgc29tZSBpbmZvcm1hdGlvbiBsZWFrcyBpcyBwb3NzaWJsZS4KLQotUmVwb3J0ZWQtYnk6IEFuZHJlYXMgWmFua2wgPGFuZHJlYXMuemFua2xAYWlzZWMuZnJhdW5ob2Zlci5kZT4KLVNpZ25lZC1vZmYtYnk6IE5JSUJFIFl1dGFrYSA8Z25paWJlQGZzaWoub3JnPgotCi0oYmFja3BvcnQgZnJvbSBtYXN0ZXIgY29tbWl0OgotNzE5NDY4ZTUzMTMzZDNiZGYxMjE1NmM1YmZkZWEyYmYxNWY5ZjZmMSkKLQotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLS0tLQotIG1waS9tcGktcG93LmMgfCAxMDUgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAzMCBpbnNlcnRpb25zKCspLCA3NSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL21waS9tcGktcG93LmMgYi9tcGkvbXBpLXBvdy5jCi1pbmRleCBhNzgwZWJkMS4uN2IzZGMzMTggMTAwNjQ0Ci0tLS0gYS9tcGkvbXBpLXBvdy5jCi0rKysgYi9tcGkvbXBpLXBvdy5jCi1AQCAtNjA5LDEyICs2MDksOCBAQCBfZ2NyeV9tcGlfcG93bSAoZ2NyeV9tcGlfdCByZXMsCi0gICAgICAgaWYgKGUgPT0gMCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgaiArPSBjOwotLSAgICAgICAgICBpLS07Ci0tICAgICAgICAgIGlmICggaSA8IDAgKQotLSAgICAgICAgICAgIHsKLS0gICAgICAgICAgICAgIGMgPSAwOwotLSAgICAgICAgICAgICAgYnJlYWs7Ci0tICAgICAgICAgICAgfQotKyAgICAgICAgICBpZiAoIC0taSA8IDAgKQotKyAgICAgICAgICAgIGJyZWFrOwotIAotICAgICAgICAgICBlID0gZXBbaV07Ci0gICAgICAgICAgIGMgPSBCSVRTX1BFUl9NUElfTElNQjsKLUBAIC02MjksMzggKzYyNSwzMyBAQCBfZ2NyeV9tcGlfcG93bSAoZ2NyeV9tcGlfdCByZXMsCi0gICAgICAgICAgIGMgLT0gYzA7Ci0gICAgICAgICAgIGogKz0gYzA7Ci0gCi0rICAgICAgICAgIGUwID0gKGUgPj4gKEJJVFNfUEVSX01QSV9MSU1CIC0gVykpOwotICAgICAgICAgICBpZiAoYyA+PSBXKQotLSAgICAgICAgICAgIHsKLS0gICAgICAgICAgICAgIGUwID0gKGUgPj4gKEJJVFNfUEVSX01QSV9MSU1CIC0gVykpOwotLSAgICAgICAgICAgICAgZSA9IChlIDw8IFcpOwotLSAgICAgICAgICAgICAgYyAtPSBXOwotLSAgICAgICAgICAgIH0KLSsgICAgICAgICAgICBjMCA9IDA7Ci0gICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICB7Ci0tICAgICAgICAgICAgICBpLS07Ci0tICAgICAgICAgICAgICBpZiAoIGkgPCAwICkKLSsgICAgICAgICAgICAgIGlmICggLS1pIDwgMCApCi0gICAgICAgICAgICAgICAgIHsKLS0gICAgICAgICAgICAgICAgICBlID0gKGUgPj4gKEJJVFNfUEVSX01QSV9MSU1CIC0gYykpOwotLSAgICAgICAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgICAgICAgICAgIGUwID0gKGUgPj4gKEJJVFNfUEVSX01QSV9MSU1CIC0gYykpOwotKyAgICAgICAgICAgICAgICAgIGogKz0gYyAtIFc7Ci0rICAgICAgICAgICAgICAgICAgZ290byBsYXN0X3N0ZXA7Ci0rICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgIGVsc2UKLSsgICAgICAgICAgICAgICAgewotKyAgICAgICAgICAgICAgICAgIGMwID0gYzsKLSsgICAgICAgICAgICAgICAgICBlID0gZXBbaV07Ci0rICAgICAgICAgICAgICAgICAgYyA9IEJJVFNfUEVSX01QSV9MSU1COwotKyAgICAgICAgICAgICAgICAgIGUwIHw9IChlID4+IChCSVRTX1BFUl9NUElfTElNQiAtIChXIC0gYzApKSk7Ci0gICAgICAgICAgICAgICAgIH0KLS0KLS0gICAgICAgICAgICAgIGMwID0gYzsKLS0gICAgICAgICAgICAgIGUwID0gKGUgPj4gKEJJVFNfUEVSX01QSV9MSU1CIC0gVykpCi0tICAgICAgICAgICAgICAgIHwgKGVwW2ldID4+IChCSVRTX1BFUl9NUElfTElNQiAtIFcgKyBjMCkpOwotLSAgICAgICAgICAgICAgZSA9IChlcFtpXSA8PCAoVyAtIGMwKSk7Ci0tICAgICAgICAgICAgICBjID0gQklUU19QRVJfTVBJX0xJTUIgLSBXICsgYzA7Ci0gICAgICAgICAgICAgfQotIAotKyAgICAgICAgICBlID0gZSA8PCAoVyAtIGMwKTsKLSsgICAgICAgICAgYyAtPSAoVyAtIGMwKTsKLSsKLSsgICAgICAgIGxhc3Rfc3RlcDoKLSAgICAgICAgICAgY291bnRfdHJhaWxpbmdfemVyb3MgKGMwLCBlMCk7Ci0gICAgICAgICAgIGUwID0gKGUwID4+IGMwKSA+PiAxOwotIAotLSAgICAgICAgICBmb3IgKGogKz0gVyAtIGMwOyBqOyBqLS0pCi0tICAgICAgICAgICAgewotLSAgICAgICAgICAgICAgbXVsX21vZCAoeHAsICZ4c2l6ZSwgcnAsIHJzaXplLCBycCwgcnNpemUsIG1wLCBtc2l6ZSwgJmthcmFjdHgpOwotLSAgICAgICAgICAgICAgdHAgPSBycDsgcnAgPSB4cDsgeHAgPSB0cDsKLS0gICAgICAgICAgICAgIHJzaXplID0geHNpemU7Ci0tICAgICAgICAgICAgfQotLQotICAgICAgICAgICAvKgotICAgICAgICAgICAgKiAgYmFzZV91IDw9IHByZWNvbXBbZTBdCi0gICAgICAgICAgICAqICBiYXNlX3Vfc2l6ZSA8PSBwcmVjb21wX3NpemVbZTBdCi1AQCAtNjc3LDI1ICs2NjgsMjMgQEAgX2djcnlfbXBpX3Bvd20gKGdjcnlfbXBpX3QgcmVzLAotICAgICAgICAgICAgICAgdS5kID0gcHJlY29tcFtrXTsKLSAKLSAgICAgICAgICAgICAgIG1waV9zZXRfY29uZCAoJncsICZ1LCBrID09IGUwKTsKLS0gICAgICAgICAgICAgIGJhc2VfdV9zaXplIHw9IChwcmVjb21wX3NpemVba10gJiAoKG1waV9zaXplX3QpMCAtIChrID09IGUwKSkgKTsKLSsgICAgICAgICAgICAgIGJhc2VfdV9zaXplIHw9ICggcHJlY29tcF9zaXplW2tdICYgKChtcGlfc2l6ZV90KTAgLSAoayA9PSBlMCkpICk7Ci0gICAgICAgICAgICAgfQotIAotLSAgICAgICAgICBtdWxfbW9kICh4cCwgJnhzaXplLCBycCwgcnNpemUsIGJhc2VfdSwgYmFzZV91X3NpemUsCi0tICAgICAgICAgICAgICAgICAgIG1wLCBtc2l6ZSwgJmthcmFjdHgpOwotLSAgICAgICAgICB0cCA9IHJwOyBycCA9IHhwOyB4cCA9IHRwOwotLSAgICAgICAgICByc2l6ZSA9IHhzaXplOwotKyAgICAgICAgICBmb3IgKGogKz0gVyAtIGMwOyBqID49IDA7IGotLSkKLSsgICAgICAgICAgICB7Ci0rICAgICAgICAgICAgICBtdWxfbW9kICh4cCwgJnhzaXplLCBycCwgcnNpemUsCi0rICAgICAgICAgICAgICAgICAgICAgICBqID09IDAgPyBiYXNlX3UgOiBycCwgaiA9PSAwID8gYmFzZV91X3NpemUgOiByc2l6ZSwKLSsgICAgICAgICAgICAgICAgICAgICAgIG1wLCBtc2l6ZSwgJmthcmFjdHgpOwotKyAgICAgICAgICAgICAgdHAgPSBycDsgcnAgPSB4cDsgeHAgPSB0cDsKLSsgICAgICAgICAgICAgIHJzaXplID0geHNpemU7Ci0rICAgICAgICAgICAgfQotIAotICAgICAgICAgICBqID0gYzA7Ci0rICAgICAgICAgIGlmICggaSA8IDAgKQotKyAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgfQotIAotLSAgICBpZiAoYyAhPSAwKQotLSAgICAgIHsKLS0gICAgICAgIGogKz0gYzsKLS0gICAgICAgIGNvdW50X3RyYWlsaW5nX3plcm9zIChjLCBlKTsKLS0gICAgICAgIGUgPSAoZSA+PiBjKTsKLS0gICAgICAgIGogLT0gYzsKLS0gICAgICB9Ci0tCi0gICAgIHdoaWxlIChqLS0pCi0gICAgICAgewotICAgICAgICAgbXVsX21vZCAoeHAsICZ4c2l6ZSwgcnAsIHJzaXplLCBycCwgcnNpemUsIG1wLCBtc2l6ZSwgJmthcmFjdHgpOwotQEAgLTcwMyw0MCArNjkyLDYgQEAgX2djcnlfbXBpX3Bvd20gKGdjcnlfbXBpX3QgcmVzLAotICAgICAgICAgcnNpemUgPSB4c2l6ZTsKLSAgICAgICB9Ci0gCi0tICAgIGlmIChlICE9IDApCi0tICAgICAgewotLSAgICAgICAgLyoKLS0gICAgICAgICAqIGJhc2VfdSA8PSBwcmVjb21wWyhlPj4xKV0KLS0gICAgICAgICAqIGJhc2VfdV9zaXplIDw9IHByZWNvbXBfc2l6ZVsoZT4+MSldCi0tICAgICAgICAgKi8KLS0gICAgICAgIGJhc2VfdV9zaXplID0gMDsKLS0gICAgICAgIGZvciAoayA9IDA7IGsgPCAoMTw8IChXIC0gMSkpOyBrKyspCi0tICAgICAgICAgIHsKLS0gICAgICAgICAgICBzdHJ1Y3QgZ2NyeV9tcGkgdywgdTsKLS0gICAgICAgICAgICB3LmFsbG9jZWQgPSB3Lm5saW1icyA9IHByZWNvbXBfc2l6ZVtrXTsKLS0gICAgICAgICAgICB1LmFsbG9jZWQgPSB1Lm5saW1icyA9IHByZWNvbXBfc2l6ZVtrXTsKLS0gICAgICAgICAgICB3LnNpZ24gPSB1LnNpZ24gPSAwOwotLSAgICAgICAgICAgIHcuZmxhZ3MgPSB1LmZsYWdzID0gMDsKLS0gICAgICAgICAgICB3LmQgPSBiYXNlX3U7Ci0tICAgICAgICAgICAgdS5kID0gcHJlY29tcFtrXTsKLS0KLS0gICAgICAgICAgICBtcGlfc2V0X2NvbmQgKCZ3LCAmdSwgayA9PSAoZT4+MSkpOwotLSAgICAgICAgICAgIGJhc2VfdV9zaXplIHw9IChwcmVjb21wX3NpemVba10gJiAoKG1waV9zaXplX3QpMCAtIChrID09IChlPj4xKSkpICk7Ci0tICAgICAgICAgIH0KLS0KLS0gICAgICAgIG11bF9tb2QgKHhwLCAmeHNpemUsIHJwLCByc2l6ZSwgYmFzZV91LCBiYXNlX3Vfc2l6ZSwKLS0gICAgICAgICAgICAgICAgIG1wLCBtc2l6ZSwgJmthcmFjdHgpOwotLSAgICAgICAgdHAgPSBycDsgcnAgPSB4cDsgeHAgPSB0cDsKLS0gICAgICAgIHJzaXplID0geHNpemU7Ci0tCi0tICAgICAgICBmb3IgKDsgYzsgYy0tKQotLSAgICAgICAgICB7Ci0tICAgICAgICAgICAgbXVsX21vZCAoeHAsICZ4c2l6ZSwgcnAsIHJzaXplLCBycCwgcnNpemUsIG1wLCBtc2l6ZSwgJmthcmFjdHgpOwotLSAgICAgICAgICAgIHRwID0gcnA7IHJwID0geHA7IHhwID0gdHA7Ci0tICAgICAgICAgICAgcnNpemUgPSB4c2l6ZTsKLS0gICAgICAgICAgfQotLSAgICAgIH0KLS0KLSAgICAgLyogV2Ugc2hpZnRlZCBNT0QsIHRoZSBtb2R1bG8gcmVkdWN0aW9uIGFyZ3VtZW50LCBsZWZ0Ci0gICAgICAgIE1PRF9TSElGVF9DTlQgc3RlcHMuICBBZGp1c3QgdGhlIHJlc3VsdCBieSByZWR1Y2luZyBpdCB3aXRoIHRoZQotICAgICAgICBvcmlnaW5hbCBNT0QuCi0tLSAKLTIuMTEuMAotCi0KLUZyb20gYTRiMjc1YzRkNTM3ODgzN2U4MjBmZGM4NGY0YWRhODc2ZjljOGNjZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5JSUJFIFl1dGFrYSA8Z25paWJlQGZzaWoub3JnPgotRGF0ZTogU2F0LCAyNCBKdW4gMjAxNyAyMDo0NjoyMCArMDkwMAotU3ViamVjdDogW1BBVENIIDIvNV0gU2FtZSBjb21wdXRhdGlvbiBmb3Igc3F1YXJlIGFuZCBtdWx0aXBseS4KLQotKiBtcGkvbXBpLXBvdy5jIChfZ2NyeV9tcGlfcG93bSk6IENvbXBhcmUgbXNpemUgZm9yIG1heF91X3NpemUuICBNb3ZlCi10aGUgYXNzaWdubWVudCB0byBiYXNlX3UgaW50byB0aGUgbG9vcC4gIENvcHkgY29udGVudCByZWZlcmVkIGJ5IFJQIHRvCi1CQVNFX1UgZXhjZXB0IHRoZSBsYXN0IG9mIHRoZSBsb29wLgotCi0tLQotCi1TaWduZWQtb2ZmLWJ5OiBOSUlCRSBZdXRha2EgPGduaWliZUBmc2lqLm9yZz4KLShiYWNrcG9ydCBmcm9tIG1hc3RlciBjb21taXQ6Ci03ODEzMDgyOGU5YTE0MGE5ZGU0ZGFmYWRiYzg0NGRiYjY0Y2I3MDlhKQotCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotLS0tCi0gbXBpL21waS1wb3cuYyB8IDUwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDI5IGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbXBpL21waS1wb3cuYyBiL21waS9tcGktcG93LmMKLWluZGV4IDdiM2RjMzE4Li4zY2JhNjkwMyAxMDA2NDQKLS0tLSBhL21waS9tcGktcG93LmMKLSsrKyBiL21waS9tcGktcG93LmMKLUBAIC01NzMsNiArNTczLDggQEAgX2djcnlfbXBpX3Bvd20gKGdjcnlfbXBpX3QgcmVzLAotICAgICAgICAgTVBOX0NPUFkgKHByZWNvbXBbaV0sIHJwLCByc2l6ZSk7Ci0gICAgICAgfQotIAotKyAgICBpZiAobXNpemUgPiBtYXhfdV9zaXplKQotKyAgICAgIG1heF91X3NpemUgPSBtc2l6ZTsKLSAgICAgYmFzZV91ID0gbXBpX2FsbG9jX2xpbWJfc3BhY2UgKG1heF91X3NpemUsIGVzZWMpOwotICAgICBNUE5fWkVSTyAoYmFzZV91LCBtYXhfdV9zaXplKTsKLSAKLUBAIC02MTksNiArNjIxLDEwIEBAIF9nY3J5X21waV9wb3dtIChnY3J5X21waV90IHJlcywKLSAgICAgICAgIHsKLSAgICAgICAgICAgaW50IGMwOwotICAgICAgICAgICBtcGlfbGltYl90IGUwOwotKyAgICAgICAgICBzdHJ1Y3QgZ2NyeV9tcGkgdywgdTsKLSsgICAgICAgICAgdy5zaWduID0gdS5zaWduID0gMDsKLSsgICAgICAgICAgdy5mbGFncyA9IHUuZmxhZ3MgPSAwOwotKyAgICAgICAgICB3LmQgPSBiYXNlX3U7Ci0gCi0gICAgICAgICAgIGNvdW50X2xlYWRpbmdfemVyb3MgKGMwLCBlKTsKLSAgICAgICAgICAgZSA9IChlIDw8IGMwKTsKLUBAIC02NTIsMjkgKzY1OCwzMSBAQCBfZ2NyeV9tcGlfcG93bSAoZ2NyeV9tcGlfdCByZXMsCi0gICAgICAgICAgIGNvdW50X3RyYWlsaW5nX3plcm9zIChjMCwgZTApOwotICAgICAgICAgICBlMCA9IChlMCA+PiBjMCkgPj4gMTsKLSAKLS0gICAgICAgICAgLyoKLS0gICAgICAgICAgICogIGJhc2VfdSA8PSBwcmVjb21wW2UwXQotLSAgICAgICAgICAgKiAgYmFzZV91X3NpemUgPD0gcHJlY29tcF9zaXplW2UwXQotLSAgICAgICAgICAgKi8KLS0gICAgICAgICAgYmFzZV91X3NpemUgPSAwOwotLSAgICAgICAgICBmb3IgKGsgPSAwOyBrIDwgKDE8PCAoVyAtIDEpKTsgaysrKQotLSAgICAgICAgICAgIHsKLS0gICAgICAgICAgICAgIHN0cnVjdCBnY3J5X21waSB3LCB1OwotLSAgICAgICAgICAgICAgdy5hbGxvY2VkID0gdy5ubGltYnMgPSBwcmVjb21wX3NpemVba107Ci0tICAgICAgICAgICAgICB1LmFsbG9jZWQgPSB1Lm5saW1icyA9IHByZWNvbXBfc2l6ZVtrXTsKLS0gICAgICAgICAgICAgIHcuc2lnbiA9IHUuc2lnbiA9IDA7Ci0tICAgICAgICAgICAgICB3LmZsYWdzID0gdS5mbGFncyA9IDA7Ci0tICAgICAgICAgICAgICB3LmQgPSBiYXNlX3U7Ci0tICAgICAgICAgICAgICB1LmQgPSBwcmVjb21wW2tdOwotLQotLSAgICAgICAgICAgICAgbXBpX3NldF9jb25kICgmdywgJnUsIGsgPT0gZTApOwotLSAgICAgICAgICAgICAgYmFzZV91X3NpemUgfD0gKCBwcmVjb21wX3NpemVba10gJiAoKG1waV9zaXplX3QpMCAtIChrID09IGUwKSkgKTsKLS0gICAgICAgICAgICB9Ci0tCi0gICAgICAgICAgIGZvciAoaiArPSBXIC0gYzA7IGogPj0gMDsgai0tKQotICAgICAgICAgICAgIHsKLS0gICAgICAgICAgICAgIG11bF9tb2QgKHhwLCAmeHNpemUsIHJwLCByc2l6ZSwKLS0gICAgICAgICAgICAgICAgICAgICAgIGogPT0gMCA/IGJhc2VfdSA6IHJwLCBqID09IDAgPyBiYXNlX3Vfc2l6ZSA6IHJzaXplLAotKwotKyAgICAgICAgICAgICAgLyoKLSsgICAgICAgICAgICAgICAqICBiYXNlX3UgPD0gcHJlY29tcFtlMF0KLSsgICAgICAgICAgICAgICAqICBiYXNlX3Vfc2l6ZSA8PSBwcmVjb21wX3NpemVbZTBdCi0rICAgICAgICAgICAgICAgKi8KLSsgICAgICAgICAgICAgIGJhc2VfdV9zaXplID0gMDsKLSsgICAgICAgICAgICAgIGZvciAoayA9IDA7IGsgPCAoMTw8IChXIC0gMSkpOyBrKyspCi0rICAgICAgICAgICAgICAgIHsKLSsgICAgICAgICAgICAgICAgICB3LmFsbG9jZWQgPSB3Lm5saW1icyA9IHByZWNvbXBfc2l6ZVtrXTsKLSsgICAgICAgICAgICAgICAgICB1LmFsbG9jZWQgPSB1Lm5saW1icyA9IHByZWNvbXBfc2l6ZVtrXTsKLSsgICAgICAgICAgICAgICAgICB1LmQgPSBwcmVjb21wW2tdOwotKwotKyAgICAgICAgICAgICAgICAgIG1waV9zZXRfY29uZCAoJncsICZ1LCBrID09IGUwKTsKLSsgICAgICAgICAgICAgICAgICBiYXNlX3Vfc2l6ZSB8PSAoIHByZWNvbXBfc2l6ZVtrXSAmICgwVUwgLSAoayA9PSBlMCkpICk7Ci0rICAgICAgICAgICAgICAgIH0KLSsKLSsgICAgICAgICAgICAgIHcuYWxsb2NlZCA9IHcubmxpbWJzID0gcnNpemU7Ci0rICAgICAgICAgICAgICB1LmFsbG9jZWQgPSB1Lm5saW1icyA9IHJzaXplOwotKyAgICAgICAgICAgICAgdS5kID0gcnA7Ci0rICAgICAgICAgICAgICBtcGlfc2V0X2NvbmQgKCZ3LCAmdSwgaiAhPSAwKTsKLSsgICAgICAgICAgICAgIGJhc2VfdV9zaXplIF49ICgoYmFzZV91X3NpemUgXiByc2l6ZSkgICYgKDBVTCAtIChqICE9IDApKSk7Ci0rCi0rICAgICAgICAgICAgICBtdWxfbW9kICh4cCwgJnhzaXplLCBycCwgcnNpemUsIGJhc2VfdSwgYmFzZV91X3NpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICBtcCwgbXNpemUsICZrYXJhY3R4KTsKLSAgICAgICAgICAgICAgIHRwID0gcnA7IHJwID0geHA7IHhwID0gdHA7Ci0gICAgICAgICAgICAgICByc2l6ZSA9IHhzaXplOwotLS0gCi0yLjExLjAKLQotCi1Gcm9tIDEyOWMxOTYwZTU1NjAzZWMzZjZmZDFjZDljZDUxYjIyZTlhOWE3ZWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOSUlCRSBZdXRha2EgPGduaWliZUBmc2lqLm9yZz4KLURhdGU6IFRodSwgMjkgSnVuIDIwMTcgMTE6NDg6NDQgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSCAzLzVdIHJzYTogQWRkIGV4cG9uZW50IGJsaW5kaW5nLgotCi0qIGNpcGhlci9yc2EuYyAoc2VjcmV0KTogQmxpbmQgc2VjcmV0IEQgd2l0aCByYW5kb21pemVkIG5vbmNlIFIgZm9yCi1tcGlfcG93bSBjb21wdXRhdGlvbi4KLQotLS0KLQotQ28tYXV0aG9yZWQtYnk6IFdlcm5lciBLb2NoIDx3a0BnbnVwZy5vcmc+Ci1TaWduZWQtb2ZmLWJ5OiBOSUlCRSBZdXRha2EgPGduaWliZUBmc2lqLm9yZz4KLQotVGhlIHBhcGVyIGRlc2NyaWJpbmcgYXR0YWNrOiBodHRwczovL2VwcmludC5pYWNyLm9yZy8yMDE3LzYyNwotCi1TbGlkaW5nIHJpZ2h0IGludG8gZGlzYXN0ZXI6IExlZnQtdG8tcmlnaHQgc2xpZGluZyB3aW5kb3dzIGxlYWsKLWJ5IERhbmllbCBKLiBCZXJuc3RlaW4gYW5kIEpvYWNoaW0gQnJlaXRuZXIgYW5kIERhbmllbCBHZW5raW4gYW5kCi1MZW9uIEdyb290IEJydWluZGVyaW5rIGFuZCBOYWRpYSBIZW5pbmdlciBhbmQgVGFuamEgTGFuZ2UgYW5kCi1DaHJpc3RpbmUgdmFuIFZyZWRlbmRhYWwgYW5kIFl1dmFsIFlhcm9tCi0KLSAgSXQgaXMgd2VsbCBrbm93biB0aGF0IGNvbnN0YW50LXRpbWUgaW1wbGVtZW50YXRpb25zIG9mIG1vZHVsYXIKLSAgZXhwb25lbnRpYXRpb24gY2Fubm90IHVzZSBzbGlkaW5nIHdpbmRvd3MuIEhvd2V2ZXIsIHNvZnR3YXJlCi0gIGxpYnJhcmllcyBzdWNoIGFzIExpYmdjcnlwdCwgdXNlZCBieSBHbnVQRywgY29udGludWUgdG8gdXNlIHNsaWRpbmcKLSAgd2luZG93cy4gSXQgaXMgd2lkZWx5IGJlbGlldmVkIHRoYXQsIGV2ZW4gaWYgdGhlIGNvbXBsZXRlIHBhdHRlcm4gb2YKLSAgc3F1YXJpbmdzIGFuZCBtdWx0aXBsaWNhdGlvbnMgaXMgb2JzZXJ2ZWQgdGhyb3VnaCBhIHNpZGUtY2hhbm5lbAotICBhdHRhY2ssIHRoZSBudW1iZXIgb2YgZXhwb25lbnQgYml0cyBsZWFrZWQgaXMgbm90IHN1ZmZpY2llbnQgdG8KLSAgY2Fycnkgb3V0IGEgZnVsbCBrZXktcmVjb3ZlcnkgYXR0YWNrIGFnYWluc3QgUlNBLiBTcGVjaWZpY2FsbHksCi0gIDQtYml0IHNsaWRpbmcgd2luZG93cyBsZWFrIG9ubHkgNDAlIG9mIHRoZSBiaXRzLCBhbmQgNS1iaXQgc2xpZGluZwotICB3aW5kb3dzIGxlYWsgb25seSAzMyUgb2YgdGhlIGJpdHMuCi0KLSAgSW4gdGhpcyBwYXBlciB3ZSBkZW1vbnN0cmF0ZSBhIGNvbXBsZXRlIGJyZWFrIG9mIFJTQS0xMDI0IGFzCi0gIGltcGxlbWVudGVkIGluIExpYmdjcnlwdC4gT3VyIGF0dGFjayBtYWtlcyBlc3NlbnRpYWwgdXNlIG9mIHRoZSBmYWN0Ci0gIHRoYXQgTGliZ2NyeXB0IHVzZXMgdGhlIGxlZnQtdG8tcmlnaHQgbWV0aG9kIGZvciBjb21wdXRpbmcgdGhlCi0gIHNsaWRpbmctd2luZG93IGV4cGFuc2lvbi4gV2Ugc2hvdyBmb3IgdGhlIGZpcnN0IHRpbWUgdGhhdCB0aGUKLSAgZGlyZWN0aW9uIG9mIHRoZSBlbmNvZGluZyBtYXR0ZXJzOiB0aGUgcGF0dGVybiBvZiBzcXVhcmluZ3MgYW5kCi0gIG11bHRpcGxpY2F0aW9ucyBpbiBsZWZ0LXRvLXJpZ2h0IHNsaWRpbmcgd2luZG93cyBsZWFrcyBzaWduaWZpY2FudGx5Ci0gIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgZXhwb25lbnQgYml0cyB0aGFuIGZvciByaWdodC10by1sZWZ0LiBXZSBzaG93Ci0gIGhvdyB0byBpbmNvcnBvcmF0ZSB0aGlzIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gaW50byB0aGUKLSAgSGVuaW5nZXItU2hhY2hhbSBhbGdvcml0aG0gZm9yIHBhcnRpYWwga2V5IHJlY29uc3RydWN0aW9uLCBhbmQgdXNlCi0gIGl0IHRvIG9idGFpbiB2ZXJ5IGVmZmljaWVudCBmdWxsIGtleSByZWNvdmVyeSBmb3IgUlNBLTEwMjQuIFdlIGFsc28KLSAgcHJvdmlkZSBzdHJvbmcgZXZpZGVuY2UgdGhhdCB0aGUgc2FtZSBhdHRhY2sgd29ya3MgZm9yIFJTQS0yMDQ4IHdpdGgKLSAgb25seSBtb2RlcmF0ZWx5IG1vcmUgY29tcHV0YXRpb24uCi0KLUV4cG9uZW50IGJsaW5kaW5nIGlzIGEga2luZCBvZiB3b3JrYXJvdW5kIHRvIGFkZCBub2lzZS4gIFNpZ25hbCAobGVhaykKLWlzIHN0aWxsIHRoZXJlIGZvciBub24tY29uc3RhbnQtdGltZSBpbXBsZW1lbnRhdGlvbi4KLQotKGJhY2twb3J0ZWQgZnJvbSBtYXN0ZXIgY29tbWl0OgotODcyNWM5OWZmYTQxNzc4ZjM4MmNhOTcyMzMxODNiY2Q2ODdiYjBjZSkKLQotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLS0tLQotIGNpcGhlci9yc2EuYyB8IDMyICsrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDI1IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jaXBoZXIvcnNhLmMgYi9jaXBoZXIvcnNhLmMKLWluZGV4IGI2YzczNzQxLi4yNWUyOWI1YyAxMDA2NDQKLS0tLSBhL2NpcGhlci9yc2EuYwotKysrIGIvY2lwaGVyL3JzYS5jCi1AQCAtMTAyMSwxNSArMTAyMSwzMyBAQCBzZWNyZXQgKGdjcnlfbXBpX3Qgb3V0cHV0LCBnY3J5X21waV90IGlucHV0LCBSU0Ffc2VjcmV0X2tleSAqc2tleSApCi0gICAgICAgZ2NyeV9tcGlfdCBtMSA9IG1waV9hbGxvY19zZWN1cmUoIG1waV9nZXRfbmxpbWJzKHNrZXktPm4pKzEgKTsKLSAgICAgICBnY3J5X21waV90IG0yID0gbXBpX2FsbG9jX3NlY3VyZSggbXBpX2dldF9ubGltYnMoc2tleS0+bikrMSApOwotICAgICAgIGdjcnlfbXBpX3QgaCAgPSBtcGlfYWxsb2Nfc2VjdXJlKCBtcGlfZ2V0X25saW1icyhza2V5LT5uKSsxICk7Ci0tCi0tICAgICAgLyogbTEgPSBjIF4gKGQgbW9kIChwLTEpKSBtb2QgcCAqLwotKyAgICAgIGdjcnlfbXBpX3QgRF9ibGluZCA9IG1waV9hbGxvY19zZWN1cmUgKCBtcGlfZ2V0X25saW1icyhza2V5LT5uKSArIDEgKTsKLSsgICAgICBnY3J5X21waV90IHI7Ci0rICAgICAgdW5zaWduZWQgaW50IHJfbmJpdHM7Ci0rCi0rICAgICAgcl9uYml0cyA9IG1waV9nZXRfbmJpdHMgKHNrZXktPnApIC8gNDsKLSsgICAgICBpZiAocl9uYml0cyA8IDk2KQotKyAgICAgICAgcl9uYml0cyA9IDk2OwotKyAgICAgIHIgPSBtcGlfYWxsb2Nfc2VjdXJlICgocl9uYml0cyArIEJJVFNfUEVSX01QSV9MSU1CLTEpL0JJVFNfUEVSX01QSV9MSU1CKTsKLSsKLSsgICAgICAvKiBkX2JsaW5kID0gKGQgbW9kIChwLTEpKSArIChwLTEpICogciAqLwotKyAgICAgIC8qIG0xID0gYyBeIGRfYmxpbmQgbW9kIHAgKi8KLSsgICAgICBfZ2NyeV9tcGlfcmFuZG9taXplIChyLCByX25iaXRzLCBHQ1JZX1dFQUtfUkFORE9NKTsKLSsgICAgICBtcGlfc2V0X2hpZ2hiaXQgKHIsIHJfbmJpdHMgLSAxKTsKLSAgICAgICBtcGlfc3ViX3VpKCBoLCBza2V5LT5wLCAxICApOwotLSAgICAgIG1waV9mZGl2X3IoIGgsIHNrZXktPmQsIGggKTsKLS0gICAgICBtcGlfcG93bSggbTEsIGlucHV0LCBoLCBza2V5LT5wICk7Ci0tICAgICAgLyogbTIgPSBjIF4gKGQgbW9kIChxLTEpKSBtb2QgcSAqLwotKyAgICAgIG1waV9tdWwgKCBEX2JsaW5kLCBoLCByICk7Ci0rICAgICAgbXBpX2ZkaXZfciAoIGgsIHNrZXktPmQsIGggKTsKLSsgICAgICBtcGlfYWRkICggRF9ibGluZCwgRF9ibGluZCwgaCApOwotKyAgICAgIG1waV9wb3dtKCBtMSwgaW5wdXQsIERfYmxpbmQsIHNrZXktPnAgKTsKLSsgICAgICAvKiBkX2JsaW5kID0gKGQgbW9kIChxLTEpKSArIChxLTEpICogciAqLwotKyAgICAgIC8qIG0yID0gYyBeIGRfYmxpbmQgbW9kIHEgKi8KLSsgICAgICBfZ2NyeV9tcGlfcmFuZG9taXplIChyLCByX25iaXRzLCBHQ1JZX1dFQUtfUkFORE9NKTsKLSsgICAgICBtcGlfc2V0X2hpZ2hiaXQgKHIsIHJfbmJpdHMgLSAxKTsKLSAgICAgICBtcGlfc3ViX3VpKCBoLCBza2V5LT5xLCAxICApOwotLSAgICAgIG1waV9mZGl2X3IoIGgsIHNrZXktPmQsIGggKTsKLS0gICAgICBtcGlfcG93bSggbTIsIGlucHV0LCBoLCBza2V5LT5xICk7Ci0rICAgICAgbXBpX211bCAoIERfYmxpbmQsIGgsIHIgKTsKLSsgICAgICBtcGlfZmRpdl9yICggaCwgc2tleS0+ZCwgaCApOwotKyAgICAgIG1waV9hZGQgKCBEX2JsaW5kLCBEX2JsaW5kLCBoICk7Ci0rICAgICAgbXBpX3Bvd20oIG0yLCBpbnB1dCwgRF9ibGluZCwgc2tleS0+cSApOwotICAgICAgIC8qIGggPSB1ICogKCBtMiAtIG0xICkgbW9kIHEgKi8KLSAgICAgICBtcGlfc3ViKCBoLCBtMiwgbTEgKTsKLSAgICAgICBpZiAoIG1waV9oYXNfc2lnbiAoIGggKSApCi0tLSAKLTIuMTEuMAotCi0KLUZyb20gOGUxYTYyODliN2QxMWE4YmY2Yzk0YWZmYTA2Yzk3OTRlNzIxNmUyNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5JSUJFIFl1dGFrYSA8Z25paWJlQGZzaWoub3JnPgotRGF0ZTogVGh1LCAyOSBKdW4gMjAxNyAxMjozNjoyNyArMDkwMAotU3ViamVjdDogW1BBVENIIDQvNV0gcnNhOiBGaXggZXhwb25lbnQgYmxpbmRpbmcuCi0KLSogY2lwaGVyL3JzYS5jIChzZWNyZXQpOiBGcmVlIERfQkxJTkQuCi0KLS0tCi0KLUZpeGVzLWNvbW1pdDogYTlmNjEyZGVmODAxYzgxNDVkNTUxZDk5NTQ3NWU1ZDUxYTRjOTg4YwotU2lnbmVkLW9mZi1ieTogTklJQkUgWXV0YWthIDxnbmlpYmVAZnNpai5vcmc+Ci1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotLS0tCi0gY2lwaGVyL3JzYS5jIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9jaXBoZXIvcnNhLmMgYi9jaXBoZXIvcnNhLmMKLWluZGV4IDI1ZTI5YjVjLi4zM2Y5MmViZCAxMDA2NDQKLS0tLSBhL2NpcGhlci9yc2EuYwotKysrIGIvY2lwaGVyL3JzYS5jCi1AQCAtMTA1Nyw2ICsxMDU3LDcgQEAgc2VjcmV0IChnY3J5X21waV90IG91dHB1dCwgZ2NyeV9tcGlfdCBpbnB1dCwgUlNBX3NlY3JldF9rZXkgKnNrZXkgKQotICAgICAgIG1waV9tdWwgKCBoLCBoLCBza2V5LT5wICk7Ci0gICAgICAgbXBpX2FkZCAoIG91dHB1dCwgbTEsIGggKTsKLSAKLSsgICAgICBtcGlfZnJlZSAoIERfYmxpbmQgKTsKLSAgICAgICBtcGlfZnJlZSAoIGggKTsKLSAgICAgICBtcGlfZnJlZSAoIG0xICk7Ci0gICAgICAgbXBpX2ZyZWUgKCBtMiApOwotLS0gCi0yLjExLjAKLQotCi1Gcm9tIDRlNTQ5Nzc1MjE3MmVkYzQ0NDAyOWFmNjQ1ZjI4Y2I4OGNlOTM5MDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOSUlCRSBZdXRha2EgPGduaWliZUBmc2lqLm9yZz4KLURhdGU6IFRodSwgMjkgSnVuIDIwMTcgMTI6NDA6MTkgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSCA1LzVdIHJzYTogTW9yZSBmaXguCi0KLSogY2lwaGVyL3JzYS5jIChzZWNyZXQpOiBGcmVlIFIuCi0KLS0tCi0KLUZpeGVzLWNvbW1pdDogYTlmNjEyZGVmODAxYzgxNDVkNTUxZDk5NTQ3NWU1ZDUxYTRjOTg4YwotU2lnbmVkLW9mZi1ieTogTklJQkUgWXV0YWthIDxnbmlpYmVAZnNpai5vcmc+Ci1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotLS0tCi0gY2lwaGVyL3JzYS5jIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9jaXBoZXIvcnNhLmMgYi9jaXBoZXIvcnNhLmMKLWluZGV4IDMzZjkyZWJkLi44ZDhkMTU3YiAxMDA2NDQKLS0tLSBhL2NpcGhlci9yc2EuYwotKysrIGIvY2lwaGVyL3JzYS5jCi1AQCAtMTA1Nyw2ICsxMDU3LDcgQEAgc2VjcmV0IChnY3J5X21waV90IG91dHB1dCwgZ2NyeV9tcGlfdCBpbnB1dCwgUlNBX3NlY3JldF9rZXkgKnNrZXkgKQotICAgICAgIG1waV9tdWwgKCBoLCBoLCBza2V5LT5wICk7Ci0gICAgICAgbXBpX2FkZCAoIG91dHB1dCwgbTEsIGggKTsKLSAKLSsgICAgICBtcGlfZnJlZSAoIHIgKTsKLSAgICAgICBtcGlfZnJlZSAoIERfYmxpbmQgKTsKLSAgICAgICBtcGlfZnJlZSAoIGggKTsKLSAgICAgICBtcGlfZnJlZSAoIG0xICk7Ci0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2ZpbGVzL2FkZC1wa2djb25maWctc3VwcG9ydC5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvZmlsZXMvYWRkLXBrZ2NvbmZpZy1zdXBwb3J0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OTU4OWY1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvZmlsZXMvYWRkLXBrZ2NvbmZpZy1zdXBwb3J0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTc3ICswLDAgQEAKLUFkZCBhbmQgdXNlIHBrZy1jb25maWcgZm9yIGxpYmdjcnlwdCBpbnN0ZWFkIG9mIC1jb25maWcgc2NyaXB0cy4KLQotVXBzdHJlYW0tU3RhdHVzOiBEZW5pZWQgW3Vwc3RyZWFtIGhhdmUgaW5kaWNhdGVkIHRoZXkgZG9uJ3Qgd2FudCBhIHBrZy1jb25maWcgZGVwZW5kZW5jeV0KLQotUlAgMjAxNC81LzIyCi0KLVJlYmFzZSB0byAxLjcuMAotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gY29uZmlndXJlLmFjICAgICAgICB8ICAxICsKLSBzcmMvbGliZ2NyeXB0Lm00ICAgIHwgNzEgKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBzcmMvbGliZ2NyeXB0LnBjLmluIHwgMzMgKysrKysrKysrKysrKysrKysrKysrKysrKwotIDMgZmlsZXMgY2hhbmdlZCwgMzggaW5zZXJ0aW9ucygrKSwgNjcgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9saWJnY3J5cHQucGMuaW4KLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggZjY4M2UyMS4uNTY2ZTFjOCAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMjMxNCw2ICsyMzE0LDcgQEAgcmFuZG9tL01ha2VmaWxlCi0gZG9jL01ha2VmaWxlCi0gc3JjL01ha2VmaWxlCi0gc3JjL2djcnlwdC5oCi0rc3JjL2xpYmdjcnlwdC5wYwotIHNyYy9saWJnY3J5cHQtY29uZmlnCi0gc3JjL3ZlcnNpb25pbmZvLnJjCi0gdGVzdHMvTWFrZWZpbGUKLWRpZmYgLS1naXQgYS9zcmMvbGliZ2NyeXB0Lm00IGIvc3JjL2xpYmdjcnlwdC5tNAotaW5kZXggYzY3Y2ZlYy4uNGVhNWYyYyAxMDA2NDQKLS0tLSBhL3NyYy9saWJnY3J5cHQubTQKLSsrKyBiL3NyYy9saWJnY3J5cHQubTQKLUBAIC0yOSwzMCArMjksNiBAQCBkbmwgaXMgYWRkZWQgdG8gdGhlIGdwZ19jb25maWdfc2NyaXB0X3dhcm4gdmFyaWFibGUuCi0gZG5sCi0gQUNfREVGVU4oW0FNX1BBVEhfTElCR0NSWVBUXSwKLSBbIEFDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSkKLS0gIEFDX0FSR19XSVRIKGxpYmdjcnlwdC1wcmVmaXgsCi0tICAgICAgICAgICAgQUNfSEVMUF9TVFJJTkcoWy0td2l0aC1saWJnY3J5cHQtcHJlZml4PVBGWF0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ByZWZpeCB3aGVyZSBMSUJHQ1JZUFQgaXMgaW5zdGFsbGVkIChvcHRpb25hbCldKSwKLS0gICAgIGxpYmdjcnlwdF9jb25maWdfcHJlZml4PSIkd2l0aHZhbCIsIGxpYmdjcnlwdF9jb25maWdfcHJlZml4PSIiKQotLSAgaWYgdGVzdCB4IiR7TElCR0NSWVBUX0NPTkZJR30iID0geCA7IHRoZW4KLS0gICAgIGlmIHRlc3QgeCIke2xpYmdjcnlwdF9jb25maWdfcHJlZml4fSIgIT0geCA7IHRoZW4KLS0gICAgICAgIExJQkdDUllQVF9DT05GSUc9IiR7bGliZ2NyeXB0X2NvbmZpZ19wcmVmaXh9L2Jpbi9saWJnY3J5cHQtY29uZmlnIgotLSAgICAgZWxzZQotLSAgICAgICBjYXNlICIke1NZU1JPT1R9IiBpbgotLSAgICAgICAgIC8qKQotLSAgICAgICAgICAgaWYgdGVzdCAteCAiJHtTWVNST09UfS9iaW4vbGliZ2NyeXB0LWNvbmZpZyIgOyB0aGVuCi0tICAgICAgICAgICAgIExJQkdDUllQVF9DT05GSUc9IiR7U1lTUk9PVH0vYmluL2xpYmdjcnlwdC1jb25maWciCi0tICAgICAgICAgICBmaQotLSAgICAgICAgICAgOzsKLS0gICAgICAgICAnJykKLS0gICAgICAgICAgIDs7Ci0tICAgICAgICAgICopCi0tICAgICAgICAgICBBQ19NU0dfV0FSTihbSWdub3JpbmcgXCRTWVNST09UIGFzIGl0IGlzIG5vdCBhbiBhYnNvbHV0ZSBwYXRoLl0pCi0tICAgICAgICAgICA7OwotLSAgICAgICBlc2FjCi0tICAgICBmaQotLSAgZmkKLS0KLS0gIEFDX1BBVEhfUFJPRyhMSUJHQ1JZUFRfQ09ORklHLCBsaWJnY3J5cHQtY29uZmlnLCBubykKLSAgIHRtcD1pZmVsc2UoWyQxXSwgLDE6MS4yLjAsJDEpCi0gICBpZiBlY2hvICIkdG1wIiB8IGdyZXAgJzonID4vZGV2L251bGwgMj4vZGV2L251bGwgOyB0aGVuCi0gICAgICByZXFfbGliZ2NyeXB0X2FwaT1gZWNobyAiJHRtcCIgICAgIHwgc2VkICdzL1woLipcKTpcKC4qXCkvXDEvJ2AKLUBAIC02Miw0OCArMzgsMTMgQEAgQUNfREVGVU4oW0FNX1BBVEhfTElCR0NSWVBUXSwKLSAgICAgIG1pbl9saWJnY3J5cHRfdmVyc2lvbj0iJHRtcCIKLSAgIGZpCi0gCi0tICBBQ19NU0dfQ0hFQ0tJTkcoZm9yIExJQkdDUllQVCAtIHZlcnNpb24gPj0gJG1pbl9saWJnY3J5cHRfdmVyc2lvbikKLS0gIG9rPW5vCi0tICBpZiB0ZXN0ICIkTElCR0NSWVBUX0NPTkZJRyIgIT0gIm5vIiA7IHRoZW4KLS0gICAgcmVxX21ham9yPWBlY2hvICRtaW5fbGliZ2NyeXB0X3ZlcnNpb24gfCBcCi0tICAgICAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXCkvXDEvJ2AKLS0gICAgcmVxX21pbm9yPWBlY2hvICRtaW5fbGliZ2NyeXB0X3ZlcnNpb24gfCBcCi0tICAgICAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXCkvXDIvJ2AKLS0gICAgcmVxX21pY3JvPWBlY2hvICRtaW5fbGliZ2NyeXB0X3ZlcnNpb24gfCBcCi0tICAgICAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXCkvXDMvJ2AKLS0gICAgbGliZ2NyeXB0X2NvbmZpZ192ZXJzaW9uPWAkTElCR0NSWVBUX0NPTkZJRyAtLXZlcnNpb25gCi0tICAgIG1ham9yPWBlY2hvICRsaWJnY3J5cHRfY29uZmlnX3ZlcnNpb24gfCBcCi0tICAgICAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXCkuKi9cMS8nYAotLSAgICBtaW5vcj1gZWNobyAkbGliZ2NyeXB0X2NvbmZpZ192ZXJzaW9uIHwgXAotLSAgICAgICAgICAgICAgIHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKVwuXChbWzAtOV1dKlwpLiovXDIvJ2AKLS0gICAgbWljcm89YGVjaG8gJGxpYmdjcnlwdF9jb25maWdfdmVyc2lvbiB8IFwKLS0gICAgICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKS4qL1wzLydgCi0tICAgIGlmIHRlc3QgIiRtYWpvciIgLWd0ICIkcmVxX21ham9yIjsgdGhlbgotLSAgICAgICAgb2s9eWVzCi0tICAgIGVsc2UKLS0gICAgICAgIGlmIHRlc3QgIiRtYWpvciIgLWVxICIkcmVxX21ham9yIjsgdGhlbgotLSAgICAgICAgICAgIGlmIHRlc3QgIiRtaW5vciIgLWd0ICIkcmVxX21pbm9yIjsgdGhlbgotLSAgICAgICAgICAgICAgIG9rPXllcwotLSAgICAgICAgICAgIGVsc2UKLS0gICAgICAgICAgICAgICBpZiB0ZXN0ICIkbWlub3IiIC1lcSAiJHJlcV9taW5vciI7IHRoZW4KLS0gICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiJG1pY3JvIiAtZ2UgIiRyZXFfbWljcm8iOyB0aGVuCi0tICAgICAgICAgICAgICAgICAgICAgb2s9eWVzCi0tICAgICAgICAgICAgICAgICAgIGZpCi0tICAgICAgICAgICAgICAgZmkKLS0gICAgICAgICAgICBmaQotLSAgICAgICAgZmkKLS0gICAgZmkKLS0gIGZpCi0tICBpZiB0ZXN0ICRvayA9IHllczsgdGhlbgotLSAgICBBQ19NU0dfUkVTVUxUKFt5ZXMgKCRsaWJnY3J5cHRfY29uZmlnX3ZlcnNpb24pXSkKLS0gIGVsc2UKLS0gICAgQUNfTVNHX1JFU1VMVChubykKLS0gIGZpCi0rICBQS0dfQ0hFQ0tfTU9EVUxFUyhMSUJHQ1JZUFQsIFtsaWJnY3J5cHQgPj0gJG1pbl9saWJnY3J5cHRfdmVyc2lvbl0sIFtvaz15ZXNdLCBbb2s9bm9dKQotKwotICAgaWYgdGVzdCAkb2sgPSB5ZXM7IHRoZW4KLSAgICAgICMgSWYgd2UgaGF2ZSBhIHJlY2VudCBsaWJnY3J5cHQsIHdlIHNob3VsZCBhbHNvIGNoZWNrIHRoYXQgdGhlCi0gICAgICAjIEFQSSBpcyBjb21wYXRpYmxlCi0gICAgICBpZiB0ZXN0ICIkcmVxX2xpYmdjcnlwdF9hcGkiIC1ndCAwIDsgdGhlbgotLSAgICAgICAgdG1wPWAkTElCR0NSWVBUX0NPTkZJRyAtLWFwaS12ZXJzaW9uIDI+L2Rldi9udWxsIHx8IGVjaG8gMGAKLSsgICAgICAgIHRtcD1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1hcGlfdmVyc2lvbiBsaWJnY3J5cHRgCi0gICAgICAgICBpZiB0ZXN0ICIkdG1wIiAtZ3QgMCA7IHRoZW4KLSAgICAgICAgICAgIEFDX01TR19DSEVDS0lORyhbTElCR0NSWVBUIEFQSSB2ZXJzaW9uXSkKLSAgICAgICAgICAgIGlmIHRlc3QgIiRyZXFfbGliZ2NyeXB0X2FwaSIgLWVxICIkdG1wIiA7IHRoZW4KLUBAIC0xMTYsMTAgKzU3LDggQEAgQUNfREVGVU4oW0FNX1BBVEhfTElCR0NSWVBUXSwKLSAgICAgIGZpCi0gICBmaQotICAgaWYgdGVzdCAkb2sgPSB5ZXM7IHRoZW4KLS0gICAgTElCR0NSWVBUX0NGTEFHUz1gJExJQkdDUllQVF9DT05GSUcgLS1jZmxhZ3NgCi0tICAgIExJQkdDUllQVF9MSUJTPWAkTElCR0NSWVBUX0NPTkZJRyAtLWxpYnNgCi0gICAgIGlmZWxzZShbJDJdLCAsIDosIFskMl0pCi0tICAgIGxpYmdjcnlwdF9jb25maWdfaG9zdD1gJExJQkdDUllQVF9DT05GSUcgLS1ob3N0IDI+L2Rldi9udWxsIHx8IGVjaG8gbm9uZWAKLSsgICAgbGliZ2NyeXB0X2NvbmZpZ19ob3N0PWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWhvc3QgbGliZ2NyeXB0YAotICAgICBpZiB0ZXN0IHgiJGxpYmdjcnlwdF9jb25maWdfaG9zdCIgIT0geG5vbmUgOyB0aGVuCi0gICAgICAgaWYgdGVzdCB4IiRsaWJnY3J5cHRfY29uZmlnX2hvc3QiICE9IHgiJGhvc3QiIDsgdGhlbgotICAgQUNfTVNHX1dBUk4oW1sKLUBAIC0xMzQsOCArNzMsNiBAQCBBQ19ERUZVTihbQU1fUEFUSF9MSUJHQ1JZUFRdLAotICAgICAgIGZpCi0gICAgIGZpCi0gICBlbHNlCi0tICAgIExJQkdDUllQVF9DRkxBR1M9IiIKLS0gICAgTElCR0NSWVBUX0xJQlM9IiIKLSAgICAgaWZlbHNlKFskM10sICwgOiwgWyQzXSkKLSAgIGZpCi0gICBBQ19TVUJTVChMSUJHQ1JZUFRfQ0ZMQUdTKQotZGlmZiAtLWdpdCBhL3NyYy9saWJnY3J5cHQucGMuaW4gYi9zcmMvbGliZ2NyeXB0LnBjLmluCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMmZjOGY1MwotLS0tIC9kZXYvbnVsbAotKysrIGIvc3JjL2xpYmdjcnlwdC5wYy5pbgotQEAgLTAsMCArMSwzMyBAQAotKyMgUHJvY2VzcyB0aGlzIGZpbGUgd2l0aCBhdXRvY29uZiB0byBwcm9kdWNlIGEgcGtnLWNvbmZpZyBtZXRhZGF0YSBmaWxlLgotKyMgQ29weXJpZ2h0IChDKSAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgotKyMgQXV0aG9yOiBTaW1vbiBKb3NlZnNzb24KLSsjCi0rIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0aGUgYXV0aG9yIGdpdmVzCi0rIyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LCB3aXRoIG9yIHdpdGhvdXQKLSsjIG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgotKyMKLSsjIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKLSsjIFdJVEhPVVQgQU5ZIFdBUlJBTlRZLCB0byB0aGUgZXh0ZW50IHBlcm1pdHRlZCBieSBsYXc7IHdpdGhvdXQgZXZlbiB0aGUKLSsjIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgotKwotK3ByZWZpeD1AcHJlZml4QAotK2V4ZWNfcHJlZml4PUBleGVjX3ByZWZpeEAKLStsaWJkaXI9QGxpYmRpckAKLStpbmNsdWRlZGlyPUBpbmNsdWRlZGlyQAotKwotKyMgQVBJIGluZm8KLSthcGlfdmVyc2lvbj1ATElCR0NSWVBUX0NPTkZJR19BUElfVkVSU0lPTkAKLStob3N0PUBMSUJHQ1JZUFRfQ09ORklHX0hPU1RACi0rCi0rIyBNaXNjIGluZm9ybWF0aW9uLgotK3N5bW1ldHJpY19jaXBoZXJzPUBMSUJHQ1JZUFRfQ0lQSEVSU0AKLSthc3ltbWV0cmljX2NpcGhlcnM9QExJQkdDUllQVF9QVUJLRVlfQ0lQSEVSU0AKLStkaWdlc3RzPUBMSUJHQ1JZUFRfRElHRVNUU0AKLSsKLStOYW1lOiBsaWJnY3J5cHQKLStEZXNjcmlwdGlvbjogR05VIGNyeXB0byBsaWJyYXJ5Ci0rVVJMOiBodHRwOi8vd3d3LmdudXBnLm9yZwotK1ZlcnNpb246IEBWRVJTSU9OQAotK0xpYnM6IC1MJHtsaWJkaXJ9IC1sZ2NyeXB0Ci0rTGlicy5wcml2YXRlOiAtTCR7bGliZGlyfSAtbGdwZy1lcnJvcgotK0NmbGFnczogLUkke2luY2x1ZGVkaXJ9IAotLS0gCi0yLjguMQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2ZpbGVzL2ZpeC1JQ0UtZmFpbHVyZS1vbi1taXBzLXdpdGgtb3B0aW9uLU8tYW5kLWcucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2ZpbGVzL2ZpeC1JQ0UtZmFpbHVyZS1vbi1taXBzLXdpdGgtb3B0aW9uLU8tYW5kLWcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4MmU2MmYuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy9maXgtSUNFLWZhaWx1cmUtb24tbWlwcy13aXRoLW9wdGlvbi1PLWFuZC1nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotdGVzdHMvYmVuY2gtc2xvcGUuYzogd29ya2Fyb3VuZCBJQ0UgZmFpbHVyZSBvbiBtaXBzIHdpdGggJy1PIC1nJwotCi1IaXQgYSBJQ0UgYW5kIGNvdWxkIHJlZHVjZSBpdCB0byB0aGUgZm9sbG93aW5nIG1pbmltYWwgZXhhbXBsZToKLQotMS4gT25seSB0aGUgc2l6ZSBvZiBhcnJheSBhc3NpZ25lZCB3aXRoIDIgY2F1c2VkIHRoZSBpc3N1ZToKLSQgY2F0ID4gbWlwZ2NjLXRlc3QuYyA8PCBFTkQKLQotaW50IG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLXsKLSAgICAgICAgY2hhciAqcFN0ckFycnlbQVJSQVlfU0laRV9NQVhdID0geyJoZWxsbyJ9OwotICAgICAgICBpbnQgaSA9IDA7Ci0KLSAgICAgICAgd2hpbGUocFN0ckFycnlbaV0gJiYgaTxBUlJBWV9TSVpFX01BWCkKLSAgICAgICAgewotICAgICAgICAgICAgICAgIHByaW50ZigiJXNcbiIsIHBTdHJBcnJ5W2ldKTsKLSAgICAgICAgICAgICAgICBpKys7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gMDsKLX0KLQotRU5ECi0KLTIuIE9ubHkgLU8xIGFuZCAtZyBvbiBtaXBzIGNhdXNlZCB0aGUgaXNzdWU6Ci0kIG1pcHMtcG9reS1saW51eC1nY2MgLU8xIC1nIC1vIG1pcGdjYy10ZXN0IG1pcGdjYy10ZXN0LmMKLW1pcGdjYy10ZXN0LmM6IEluIGZ1bmN0aW9uICdtYWluJzoKLW1pcGdjYy10ZXN0LmM6MTg6MTogaW50ZXJuYWwgY29tcGlsZXIgZXJyb3I6IGluIGR3YXJmMm91dF92YXJfbG9jYXRpb24sIGF0IGR3YXJmMm91dC5jOjIwODEwCi0gfQotIF4KLVBsZWFzZSBzdWJtaXQgYSBmdWxsIGJ1ZyByZXBvcnQsCi13aXRoIHByZXByb2Nlc3NlZCBzb3VyY2UgaWYgYXBwcm9wcmlhdGUuCi1TZWUgPGh0dHA6Ly9nY2MuZ251Lm9yZy9idWdzLmh0bWw+IGZvciBpbnN0cnVjdGlvbnMKLQotMy4gVGhlIHF1aWNrIHdvcmtyb3VuZCBpcyB0cnlpbmcgdG8gZW5sYXJnZSB0aGUgc2l6ZSBvZiBhcnJheSB3aXRoIGxhcmdlcgotdGhhbiAyLgotCi00LiBGaWxlIGEgYnVnIHRvIEdOVSwgYnV0IGl0IGNvdWxkIG5vdCBiZSByZXByb2R1Y2VkIG9uIHRoZXJlIGVudmlyb25tZW50LgotaHR0cDovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD02MDY0MwotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSB0ZXN0cy9iZW5jaC1zbG9wZS5jIHwgNCArKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3Rlc3RzL2JlbmNoLXNsb3BlLmMgYi90ZXN0cy9iZW5jaC1zbG9wZS5jCi1pbmRleCBiZDA1MDY0Li4yOGMyNDM4IDEwMDY0NAotLS0tIGEvdGVzdHMvYmVuY2gtc2xvcGUuYwotKysrIGIvdGVzdHMvYmVuY2gtc2xvcGUuYwotQEAgLTExOTcsNyArMTE5Nyw3IEBAIHN0YXRpYyBzdHJ1Y3QgYmVuY2hfb3BzIGhhc2hfb3BzID0gewotIH07Ci0gCi0gCi0tc3RhdGljIHN0cnVjdCBiZW5jaF9oYXNoX21vZGUgaGFzaF9tb2Rlc1tdID0gewotK3N0YXRpYyBzdHJ1Y3QgYmVuY2hfaGFzaF9tb2RlIGhhc2hfbW9kZXNbM10gPSB7Ci0gICB7IiIsICZoYXNoX29wc30sCi0gICB7MH0sCi0gfTsKLUBAIC0xMzQ5LDcgKzEzNDksNyBAQCBzdGF0aWMgc3RydWN0IGJlbmNoX29wcyBtYWNfb3BzID0gewotIH07Ci0gCi0gCi0tc3RhdGljIHN0cnVjdCBiZW5jaF9tYWNfbW9kZSBtYWNfbW9kZXNbXSA9IHsKLStzdGF0aWMgc3RydWN0IGJlbmNoX21hY19tb2RlIG1hY19tb2Rlc1szXSA9IHsKLSAgIHsiIiwgJm1hY19vcHN9LAotICAgezB9LAotIH07Ci0tLSAKLTEuOC4xLjIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy9maXgtdW5kZWZpbmVkLXJlZmVyZW5jZS10by1wdGhyZWFkLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy9maXgtdW5kZWZpbmVkLXJlZmVyZW5jZS10by1wdGhyZWFkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlN2RlOGJhLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvZmlsZXMvZml4LXVuZGVmaW5lZC1yZWZlcmVuY2UtdG8tcHRocmVhZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLUZyb20gY2MwZTJiNDAzZDMzODkyOTYzNTEzYTNiYTk4ZTRhZTVhMDVhNGQzYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IFN1biwgMTIgSnVuIDIwMTYgMDQ6NDQ6MjkgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gdGVzdHMvTWFrZWZpbGUuYW06IGZpeCB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBwdGhyZWFkX2NyZWF0ZScKLQotQWRkIG1pc3NpbmcgJy1scHRocmVhZCcgdG8gQ0ZMQUdTCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSB0ZXN0cy9NYWtlZmlsZS5hbSB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLmFtIGIvdGVzdHMvTWFrZWZpbGUuYW0KLWluZGV4IGQ0NjJmMzAuLmJlZjZkZDcgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9NYWtlZmlsZS5hbQotKysrIGIvdGVzdHMvTWFrZWZpbGUuYW0KLUBAIC02Miw0ICs2Miw0IEBAIEVYVFJBX0RJU1QgPSBSRUFETUUgcnNhLTE2ay5rZXkgY2F2c190ZXN0cy5zaCBjYXZzX2RyaXZlci5wbCBcCi0gCi0gTERBREQgPSAkKHN0YW5kYXJkX2xkYWRkKSAkKEdQR19FUlJPUl9MSUJTKQotIHRfbG9ja19MREFERCA9ICQoc3RhbmRhcmRfbGRhZGQpICQoR1BHX0VSUk9SX01UX0xJQlMpCi0tdF9sb2NrX0NGTEFHUyA9ICQoR1BHX0VSUk9SX01UX0NGTEFHUykKLSt0X2xvY2tfQ0ZMQUdTID0gJChHUEdfRVJST1JfTVRfQ0ZMQUdTKSAtbHB0aHJlYWQKLS0tIAotMi44LjEKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy9saWJnY3J5cHQtZml4LWJ1aWxkaW5nLWVycm9yLXdpdGgtTzItaW4tc3lzcm9vdC1wYXRoLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy9saWJnY3J5cHQtZml4LWJ1aWxkaW5nLWVycm9yLXdpdGgtTzItaW4tc3lzcm9vdC1wYXRoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhM2U1NDAzLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvZmlsZXMvbGliZ2NyeXB0LWZpeC1idWlsZGluZy1lcnJvci13aXRoLU8yLWluLXN5c3Jvb3QtcGF0aC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1saWJnY3J5cHQ6IGZpeCBidWlsZGluZyBlcnJvciB3aXRoICctTzInIGluIHN5c3Jvb3QgcGF0aAotCi1DaGFyYWN0ZXJzIGxpa2UgJy1PMicgb3IgJy1PZmFzdCcgd2lsbCBiZSByZXBsYWNlZCBieSAnLU8xJyB3aGVuIGNvbXBpbGluZyBjaXBoZXIuCi1JZiB3ZSBhcmUgY3Jvc3MgY29tcGlsaW5nIGxpYmdjcnlwdCBhbmQgc3lzcm9vdCBjb250YWlucyBzdWNoIGNoYXJhY3RlcnMsIHdlIHdvdWxkCi1nZXQgY29tcGlsZSBlcnJvcnMgYmVjYXVzZSB0aGUgc3lzcm9vdCBwYXRoIGhhcyBiZWVuIG1vZGlmaWVkLgotCi1GaXggdGhpcyBieSBhZGRpbmcgYmxhbmsgc3BhY2VzIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIG9yaWdpbmFsIG1hdGNoaW5nIHBhdHRlcm4gaW4gdGhlCi1zZWQgY29tbWFuZC4KLQotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gY2lwaGVyL01ha2VmaWxlLmFtIHwgICAgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvY2lwaGVyL01ha2VmaWxlLmFtIGIvY2lwaGVyL01ha2VmaWxlLmFtCi1pbmRleCA3NmNkYzk2Li45YTg5NzkyIDEwMDY0NAotLS0tIGEvY2lwaGVyL01ha2VmaWxlLmFtCi0rKysgYi9jaXBoZXIvTWFrZWZpbGUuYW0KLUBAIC02OSw3ICs2OSw3IEBAIHJmYzIyNjguYyBcCi0gY2FtZWxsaWEuYyBjYW1lbGxpYS5oIGNhbWVsbGlhLWdsdWUuYwotIAotIGlmIEVOQUJMRV9PX0ZMQUdfTVVOR0lORwotLW9fZmxhZ19tdW5naW5nID0gc2VkIC1lICdzLy1PXChbMi05c11bMi05c10qXCkvLU8xLycgLWUgJ3MvLU9mYXN0Ly1PMS9nJwotK29fZmxhZ19tdW5naW5nID0gc2VkIC1lICdzLyAtT1woWzItOXNdWzItOXNdKlwpIC8gLU8xIC8nIC1lICdzLyAtT2Zhc3QgLyAtTzEgL2cnCi0gZWxzZQotIG9fZmxhZ19tdW5naW5nID0gY2F0Ci0gZW5kaWYKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2xpYmdjcnlwdC5pbmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2xpYmdjcnlwdC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0MDM1NzkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9saWJnY3J5cHQuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotU1VNTUFSWSA9ICJHZW5lcmFsIHB1cnBvc2UgY3J5cHRvZ3JhcGhpYyBsaWJyYXJ5IGJhc2VkIG9uIHRoZSBjb2RlIGZyb20gR251UEciCi1IT01FUEFHRSA9ICJodHRwOi8vZGlyZWN0b3J5LmZzZi5vcmcvcHJvamVjdC9saWJnY3J5cHQvIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZzEwY29kZS5jb20vZ251cGcvaW5kZXgiCi1TRUNUSU9OID0gImxpYnMiCi0KLSMgaGVscGVyIHByb2dyYW0gZ2NyeXB0cm5kIGFuZCBnZXRyYW5kb20gYXJlIHVuZGVyIEdQTCwgcmVzdCBMR1BMCi1MSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2Mi4xKyAmIEdQTHYzKyIKLUxJQ0VOU0VfJHtQTn0gPSAiTEdQTHYyLjErIgotTElDRU5TRV8ke1BOfS1kZXYgPSAiR1BMdjIrICYgTEdQTHYyLjErIgotTElDRU5TRV9kdW1wc2V4cC1kZXYgPSAiR1BMdjMrIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9YmJiNDYxMjExYTMzYjEzNGQ0MmVkNWVlODAyYjM3ZmYiCi0KLURFUEVORFMgPSAibGliZ3BnLWVycm9yIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9nbnVwZy5vcmcvZG93bmxvYWQvaW5kZXguaHRtbCIKLVNSQ19VUkkgPSAiJHtHTlVQR19NSVJST1J9L2xpYmdjcnlwdC9saWJnY3J5cHQtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2FkZC1wa2djb25maWctc3VwcG9ydC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9saWJnY3J5cHQtZml4LWJ1aWxkaW5nLWVycm9yLXdpdGgtTzItaW4tc3lzcm9vdC1wYXRoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1JQ0UtZmFpbHVyZS1vbi1taXBzLXdpdGgtb3B0aW9uLU8tYW5kLWcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LXVuZGVmaW5lZC1yZWZlcmVuY2UtdG8tcHRocmVhZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWVjYy1TdG9yZS1FZERTQS1zZXNzaW9uLWtleS1pbi1zZWN1cmUtbWVtb3J5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTc1MjYucGF0Y2ggXAotIgotCi1CSU5DT05GSUcgPSAiJHtiaW5kaXJ9L2xpYmdjcnlwdC1jb25maWciCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gYmluY29uZmlnLWRpc2FibGVkIHBrZ2NvbmZpZwotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWFzbSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImNhcGFiaWxpdGllcyIKLVBBQ0tBR0VDT05GSUdbY2FwYWJpbGl0aWVzXSA9ICItLXdpdGgtY2FwYWJpbGl0aWVzLC0td2l0aG91dC1jYXBhYmlsaXRpZXMsbGliY2FwIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0JIyBFbHNlIHRoaXMgY291bGQgYmUgdXNlZCBpbiBwcmVmZXJlbmNlIHRvIHRoZSBvbmUgaW4gYWNsb2NhbC1jb3B5Ci0Jcm0gLWYgJHtTfS9tNC9ncGctZXJyb3IubTQKLX0KLQotIyBsaWJnY3J5cHQucGMgaXMgYWRkZWQgbG9jYWxseSBhbmQgdGh1cyBpbnN0YWxsZWQgaGVyZQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JaW5zdGFsbCAtZCAke0R9LyR7bGliZGlyfS9wa2djb25maWcKLQlpbnN0YWxsIC1tIDA2NDQgJHtCfS9zcmMvbGliZ2NyeXB0LnBjICR7RH0vJHtsaWJkaXJ9L3BrZ2NvbmZpZy8KLX0KLQotUEFDS0FHRVMgPSsgImR1bXBzZXhwLWRldiIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0vaG1hYzI1NiIKLUZJTEVTX2R1bXBzZXhwLWRldiArPSAiJHtiaW5kaXJ9L2R1bXBzZXhwIgotCi1BUk1fSU5TVFJVQ1RJT05fU0VUID0gImFybSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9saWJnY3J5cHRfMS43LjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2xpYmdjcnlwdF8xLjcuNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGEwYTFmZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2xpYmdjcnlwdF8xLjcuNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotcmVxdWlyZSBsaWJnY3J5cHQuaW5jCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlYWM2ZDExOTk5NjUwZThhMTQ5MzY3NGMxYmRiYzdmOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmYzBhZWM3NzE0ZDc1ZDgxMmI2NjViZDUxMGQ2NjAzMWIxYjJjZThmYTg1NWNjMmMwMjIzOGM5NTRlYTM2OTgyIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9saWJnY3J5cHRfMS44LjAuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2xpYmdjcnlwdF8xLjguMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjk4MmYwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9saWJnY3J5cHRfMS44LjAuYmIKQEAgLTAsMCArMSw1NSBAQAorU1VNTUFSWSA9ICJHZW5lcmFsIHB1cnBvc2UgY3J5cHRvZ3JhcGhpYyBsaWJyYXJ5IGJhc2VkIG9uIHRoZSBjb2RlIGZyb20gR251UEciCitIT01FUEFHRSA9ICJodHRwOi8vZGlyZWN0b3J5LmZzZi5vcmcvcHJvamVjdC9saWJnY3J5cHQvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZzEwY29kZS5jb20vZ251cGcvaW5kZXgiCitTRUNUSU9OID0gImxpYnMiCisKKyMgaGVscGVyIHByb2dyYW0gZ2NyeXB0cm5kIGFuZCBnZXRyYW5kb20gYXJlIHVuZGVyIEdQTCwgcmVzdCBMR1BMCitMSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2Mi4xKyAmIEdQTHYzKyIKK0xJQ0VOU0VfJHtQTn0gPSAiTEdQTHYyLjErIgorTElDRU5TRV8ke1BOfS1kZXYgPSAiR1BMdjIrICYgTEdQTHYyLjErIgorTElDRU5TRV9kdW1wc2V4cC1kZXYgPSAiR1BMdjMrIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9YmJiNDYxMjExYTMzYjEzNGQ0MmVkNWVlODAyYjM3ZmYiCisKK0RFUEVORFMgPSAibGliZ3BnLWVycm9yIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9nbnVwZy5vcmcvZG93bmxvYWQvaW5kZXguaHRtbCIKK1NSQ19VUkkgPSAiJHtHTlVQR19NSVJST1J9L2xpYmdjcnlwdC9saWJnY3J5cHQtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLWFuZC11c2UtcGtnLWNvbmZpZy1mb3ItbGliZ2NyeXB0LWluc3RlYWQtb2YtY29uZi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLXRlc3RzLWJlbmNoLXNsb3BlLmMtd29ya2Fyb3VuZC1JQ0UtZmFpbHVyZS1vbi1taXBzLXcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1saWJnY3J5cHQtZml4LWJ1aWxkaW5nLWVycm9yLXdpdGgtTzItaW4tc3lzcm9vdC1wYXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtdGVzdHMtTWFrZWZpbGUuYW0tZml4LXVuZGVmaW5lZC1yZWZlcmVuY2UtdG8tcHRocmVhZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LWVjYy1BZGQtaW5wdXQtdmFsaWRhdGlvbi1mb3ItWDI1NTE5LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDYtRml4LWJ1aWxkaW5nLUFBcmNoMzItQ0UtaW1wbGVtZW50YXRpb25zLXdoZW4tdGFyZ2V0LS5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiMTEwY2U0MzUyZjllYTZmNTYwYmRjNmM1NjQ0YWU5M2MiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjZlNDcwYjdmMmQzYTcwM2U4NzQ3ZjA1YThjMTlkOWUxMGUyNmViZjJkNWYzZDcxZmY3NWE0MGY1MDRlMTJlZSIKKworQklOQ09ORklHID0gIiR7YmluZGlyfS9saWJnY3J5cHQtY29uZmlnIgorCitpbmhlcml0IGF1dG90b29scyB0ZXhpbmZvIGJpbmNvbmZpZy1kaXNhYmxlZCBwa2djb25maWcKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1hc20iCitFWFRSQV9PRU1BS0VfY2xhc3MtdGFyZ2V0ID0gIkxJQlRPT0xGTEFHUz0nLS10YWc9Q0MnIgorCitQQUNLQUdFQ09ORklHID8/PSAiY2FwYWJpbGl0aWVzIgorUEFDS0FHRUNPTkZJR1tjYXBhYmlsaXRpZXNdID0gIi0td2l0aC1jYXBhYmlsaXRpZXMsLS13aXRob3V0LWNhcGFiaWxpdGllcyxsaWJjYXAiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwkjIEVsc2UgdGhpcyBjb3VsZCBiZSB1c2VkIGluIHByZWZlcmVuY2UgdG8gdGhlIG9uZSBpbiBhY2xvY2FsLWNvcHkKKwlybSAtZiAke1N9L200L2dwZy1lcnJvci5tNAorfQorCisjIGxpYmdjcnlwdC5wYyBpcyBhZGRlZCBsb2NhbGx5IGFuZCB0aHVzIGluc3RhbGxlZCBoZXJlCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlpbnN0YWxsIC1kICR7RH0vJHtsaWJkaXJ9L3BrZ2NvbmZpZworCWluc3RhbGwgLW0gMDY0NCAke0J9L3NyYy9saWJnY3J5cHQucGMgJHtEfS8ke2xpYmRpcn0vcGtnY29uZmlnLworfQorCitQQUNLQUdFUyA9KyAiZHVtcHNleHAtZGV2IgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7YmluZGlyfS9obWFjMjU2IgorRklMRVNfZHVtcHNleHAtZGV2ICs9ICIke2JpbmRpcn0vZHVtcHNleHAiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yXzEuMjYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvcl8xLjI2LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOTBkYjFiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yXzEuMjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi1TVU1NQVJZID0gIlNtYWxsIGxpYnJhcnkgdGhhdCBkZWZpbmVzIGNvbW1vbiBlcnJvciB2YWx1ZXMgZm9yIGFsbCBHbnVQRyBjb21wb25lbnRzIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnVwZy5vcmcvcmVsYXRlZF9zb2Z0d2FyZS9saWJncGctZXJyb3IvIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZzEwY29kZS5jb20vZ251cGcvaW5kZXgiCi0KLUxJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9ncGctZXJyb3IuaC5pbjtlbmRsaW5lPTIzO21kNT02NGFmOTg0NmJhYWY4NTI3OTNmZDNhNWFmMzkzYWNiZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvaW5pdC5jO2VuZGxpbmU9MjA7bWQ1PTg3MmIyMzg5ZmU5YmFlN2ZmYjgwZDJiOTEyMjVhZmJjIgotCi0KLVNFQ1RJT04gPSAibGlicyIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ251cGcub3JnL2Rvd25sb2FkL2luZGV4Lmh0bWwiCi1TUkNfVVJJID0gIiR7R05VUEdfTUlSUk9SfS9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vcGtnY29uZmlnLnBhdGNoIFwKLQkgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjk3NDU2NzA5ZGJiY2JiNjkzNTQzMTdmZmUzZTM0N2NkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRjNGJjYmM5MDExNjkzMmUzYWNkMzdiMzc4MTJkODY1M2IxYjE4OWMxOTA0OTg1ODk4ZTg2MGFmODE4YWVlNjkiCi1QUiA9ICJyMSIKLQotQklOQ09ORklHID0gIiR7YmluZGlyfS9ncGctZXJyb3ItY29uZmlnIgotCi1pbmhlcml0IGF1dG90b29scyBiaW5jb25maWctZGlzYWJsZWQgcGtnY29uZmlnIGdldHRleHQKLUNQUEZMQUdTICs9ICItUCIKLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLQlUQVJHRVRfRklMRT1saW51eC1nbnUKLQlpZiBbICR7VEFSR0VUX09TfSA9ICJtaW5ndzMyIiBdOyB0aGVuCi0JCSMgVGhlcmUgYXJlIG5vIGFyY2ggc3BlY2lmaWMgc3lzY2ZnIGZpbGVzIGZvciBtaW5ndzMyCi0JCVRBUkdFVF9GSUxFPQotCWVsaWYgWyAke1RBUkdFVF9PU30gIT0gImxpbnV4IiBdOyB0aGVuCi0JCVRBUkdFVF9GSUxFPSR7VEFSR0VUX09TfQotCWZpCi0KLQljYXNlICR7VEFSR0VUX0FSQ0h9IGluCi0JICBhYXJjaDY0X2JlKSBUVVBMRT1hYXJjaDY0LXVua25vd24tbGludXgtZ251IDs7Ci0JICBhcm0pCSAgICAgIFRVUExFPWFybS11bmtub3duLWxpbnV4LWdudWVhYmkgOzsKLQkgIGFybWViKSAgICAgIFRVUExFPWFybS11bmtub3duLWxpbnV4LWdudWVhYmkgOzsKLQkgIGk1ODZ8aTY4NikgIFRVUExFPWk2ODYtcGMtbGludXgtZ251IDs7Ci0JICBtaXBzNjQqKSAgICBUVVBMRT1taXBzNjRlbC11bmtub3duLWxpbnV4LWdudWFiaTY0IDs7Ci0JICBtaXBzKmVsKSAgICBUVVBMRT1taXBzZWwtdW5rbm93bi1saW51eC1nbnUgOzsKLQkgIG1pcHMqKSAgICAgIFRVUExFPW1pcHMtdW5rbm93bi1saW51eC1nbnUgOzsKLQkgIHg4Nl82NCkgICAgIFRVUExFPXg4Nl82NC1wYy1saW51eC1nbnUgOzsKLQkgICopICAgICAgICAgIFRVUExFPSR7VEFSR0VUX0FSQ0h9LXVua25vd24tbGludXgtZ251IDs7IAotCWVzYWMKLQotCWlmIFsgLW4gIiRUQVJHRVRfRklMRSIgXTsgdGhlbgotCQljcCAke1N9L3NyYy9zeXNjZmcvbG9jay1vYmotcHViLiRUVVBMRS5oIFwKLQkJCSR7U30vc3JjL3N5c2NmZy9sb2NrLW9iai1wdWIuJFRBUkdFVF9GSUxFLmgKLQlmaQotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQkjIHdlIGRvbid0IGhhdmUgY29tbW9uIGxpc3AgaW4gT0UKLQlybSAtcmYgIiR7RH0ke2RhdGFkaXJ9L2NvbW1vbi1saXNwLyIKLX0KLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0vZ3BnLWVycm9yIgotRklMRVNfJHtQTn0tZG9jICs9ICIke2RhdGFkaXJ9L2xpYmdwZy1lcnJvci9lcnJvcnJlZi50eHQiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yXzEuMjcuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvcl8xLjI3LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyZTJkNTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvcl8xLjI3LmJiCkBAIC0wLDAgKzEsNjEgQEAKK1NVTU1BUlkgPSAiU21hbGwgbGlicmFyeSB0aGF0IGRlZmluZXMgY29tbW9uIGVycm9yIHZhbHVlcyBmb3IgYWxsIEdudVBHIGNvbXBvbmVudHMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudXBnLm9yZy9yZWxhdGVkX3NvZnR3YXJlL2xpYmdwZy1lcnJvci8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5nMTBjb2RlLmNvbS9nbnVwZy9pbmRleCIKKworTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIuMSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2dwZy1lcnJvci5oLmluO2VuZGxpbmU9MjM7bWQ1PWJlYWUxZTQ0ZDhkNWMyNjVkMTk0NzYwMjc2MDMzYTdjIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9pbml0LmM7ZW5kbGluZT0yMDttZDU9ODcyYjIzODlmZTliYWU3ZmZiODBkMmI5MTIyNWFmYmMiCisKKworU0VDVElPTiA9ICJsaWJzIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9nbnVwZy5vcmcvZG93bmxvYWQvaW5kZXguaHRtbCIKK1NSQ19VUkkgPSAiJHtHTlVQR19NSVJST1J9L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3ItJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9wa2djb25maWcucGF0Y2ggXAorCSAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNTIxN2VmM2U3NmE3Mjc1YTJhM2I1NjlhMTJkZGM5ODkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGY5M2FhYzZmZWNiN2RhMmI5Mjg3MWJiOWVlMzMwMzJiZTZhODdiMTc0ZjU0YWJmOGRkZjA5MTFhMjJkMjlkMiIKKworQklOQ09ORklHID0gIiR7YmluZGlyfS9ncGctZXJyb3ItY29uZmlnIgorCitpbmhlcml0IGF1dG90b29scyBiaW5jb25maWctZGlzYWJsZWQgcGtnY29uZmlnIGdldHRleHQKK0NQUEZMQUdTICs9ICItUCIKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKwlUQVJHRVRfRklMRT1saW51eC1nbnUKKwlpZiBbICR7VEFSR0VUX09TfSA9ICJtaW5ndzMyIiBdOyB0aGVuCisJCSMgVGhlcmUgYXJlIG5vIGFyY2ggc3BlY2lmaWMgc3lzY2ZnIGZpbGVzIGZvciBtaW5ndzMyCisJCVRBUkdFVF9GSUxFPQorCWVsaWYgWyAke1RBUkdFVF9PU30gIT0gImxpbnV4IiBdOyB0aGVuCisJCVRBUkdFVF9GSUxFPSR7VEFSR0VUX09TfQorCWZpCisKKwljYXNlICR7VEFSR0VUX0FSQ0h9IGluCisJICBhYXJjaDY0X2JlKSBUVVBMRT1hYXJjaDY0LXVua25vd24tbGludXgtZ251IDs7CisJICBhcm0pCSAgICAgIFRVUExFPWFybS11bmtub3duLWxpbnV4LWdudWVhYmkgOzsKKwkgIGFybWViKSAgICAgIFRVUExFPWFybS11bmtub3duLWxpbnV4LWdudWVhYmkgOzsKKwkgIGk1ODZ8aTY4NikgIFRVUExFPWk2ODYtcGMtbGludXgtZ251IDs7CisJICBtaXBzNjQqKSAgICBUVVBMRT1taXBzNjRlbC11bmtub3duLWxpbnV4LWdudWFiaTY0IDs7CisJICBtaXBzKmVsKSAgICBUVVBMRT1taXBzZWwtdW5rbm93bi1saW51eC1nbnUgOzsKKwkgIG1pcHMqKSAgICAgIFRVUExFPW1pcHMtdW5rbm93bi1saW51eC1nbnUgOzsKKwkgIHg4Nl82NCkgICAgIFRVUExFPXg4Nl82NC1wYy1saW51eC1nbnUgOzsKKwkgICopICAgICAgICAgIFRVUExFPSR7VEFSR0VUX0FSQ0h9LXVua25vd24tbGludXgtZ251IDs7IAorCWVzYWMKKworCWlmIFsgLW4gIiRUQVJHRVRfRklMRSIgXTsgdGhlbgorCQljcCAke1N9L3NyYy9zeXNjZmcvbG9jay1vYmotcHViLiRUVVBMRS5oIFwKKwkJCSR7U30vc3JjL3N5c2NmZy9sb2NrLW9iai1wdWIuJFRBUkdFVF9GSUxFLmgKKwlmaQorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwkjIHdlIGRvbid0IGhhdmUgY29tbW9uIGxpc3AgaW4gT0UKKwlybSAtcmYgIiR7RH0ke2RhdGFkaXJ9L2NvbW1vbi1saXNwLyIKK30KKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0vZ3BnLWVycm9yIgorRklMRVNfJHtQTn0tZG9jICs9ICIke2RhdGFkaXJ9L2xpYmdwZy1lcnJvci9lcnJvcnJlZi50eHQiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJpY29udi9saWJpY29udi0xLjE0L2FkZC1yZWxvY2F0YWJsZS1tb2R1bGUucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliaWNvbnYvbGliaWNvbnYtMS4xNC9hZGQtcmVsb2NhdGFibGUtbW9kdWxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YWYzNzdiLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJpY29udi9saWJpY29udi0xLjE0L2FkZC1yZWxvY2F0YWJsZS1tb2R1bGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MDA4ICswLDAgQEAKLVRoaXMgcGF0Y2ggaXMgbmVlZGVkIHRvIHNvbHZlIGlzc3VlcyBsaWtlCi18IGljb252Lm86IEluIGZ1bmN0aW9uIGBtYWluJzoKLXwgL2hvbWUvamFtZXMvc3R1ZmYvYmVhZ2xlL3RtcC1lZ2xpYmMvd29yay9hcm12N2EtdmZwLW5lb24tb2UtbGludXgtZ251ZWFiaS9saWJpY29udi0xLjE0LXIwL2xpYmljb252LTEuMTQvc3JjLy4vaWNvbnYuYzo4NjE6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHJlbG9jYXRlJwotfCAuLi9zcmNsaWIvbGliaWNydC5hKHByb2dyZWxvYy5vKTogSW4gZnVuY3Rpb24gYHByZXBhcmVfcmVsb2NhdGUnOgotfCAvaG9tZS9qYW1lcy9zdHVmZi9iZWFnbGUvdG1wLWVnbGliYy93b3JrL2FybXY3YS12ZnAtbmVvbi1vZS1saW51eC1nbnVlYWJpL2xpYmljb252LTEuMTQtcjAvbGliaWNvbnYtMS4xNC9zcmNsaWIvcHJvZ3JlbG9jLmM6Mjk3OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBjb21wdXRlX2N1cnJfcHJlZml4JwotfCAvaG9tZS9qYW1lcy9zdHVmZi9iZWFnbGUvdG1wLWVnbGliYy93b3JrL2FybXY3YS12ZnAtbmVvbi1vZS1saW51eC1nbnVlYWJpL2xpYmljb252LTEuMTQtcjAvbGliaWNvbnYtMS4xNC9zcmNsaWIvcHJvZ3JlbG9jLmM6MzAyOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBzZXRfcmVsb2NhdGlvbl9wcmVmaXgnCi18IGNvbGxlY3QyOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzCi18IG1ha2VbMV06ICoqKiBbaW5zdGFsbF0gRXJyb3IgMQotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIGNvbmZpZyBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL2J1aWxkLWF1eC9hcmctbm9ubnVsbC5oIGxpYmljb252LTEuMTQvYnVpbGQtYXV4L2FyZy1ub25udWxsLmgKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vYnVpbGQtYXV4L2FyZy1ub25udWxsLmgJMTk2OS0xMi0zMSAxNjowMDowMC4wMDAwMDAwMDAgLTA4MDAKLSsrKyBsaWJpY29udi0xLjE0L2J1aWxkLWF1eC9hcmctbm9ubnVsbC5oCTIwMTItMDEtMDggMDI6MDc6MzkuOTMwNDg0NDM4IC0wODAwCi1AQCAtMCwwICsxLDI2IEBACi0rLyogQSBDIG1hY3JvIGZvciBkZWNsYXJpbmcgdGhhdCBzcGVjaWZpYyBhcmd1bWVudHMgbXVzdCBub3QgYmUgTlVMTC4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rLyogX0dMX0FSR19OT05OVUxMKChuLC4uLixtKSkgdGVsbHMgdGhlIGNvbXBpbGVyIGFuZCBzdGF0aWMgYW5hbHl6ZXIgdG9vbHMKLSsgICB0aGF0IHRoZSB2YWx1ZXMgcGFzc2VkIGFzIGFyZ3VtZW50cyBuLCAuLi4sIG0gbXVzdCBiZSBub24tTlVMTCBwb2ludGVycy4KLSsgICBuID0gMSBzdGFuZHMgZm9yIHRoZSBmaXJzdCBhcmd1bWVudCwgbiA9IDIgZm9yIHRoZSBzZWNvbmQgYXJndW1lbnQgZXRjLiAgKi8KLSsjaWZuZGVmIF9HTF9BUkdfTk9OTlVMTAotKyMgaWYgKF9fR05VQ19fID09IDMgJiYgX19HTlVDX01JTk9SX18gPj0gMykgfHwgX19HTlVDX18gPiAzCi0rIyAgZGVmaW5lIF9HTF9BUkdfTk9OTlVMTChwYXJhbXMpIF9fYXR0cmlidXRlX18gKChfX25vbm51bGxfXyBwYXJhbXMpKQotKyMgZWxzZQotKyMgIGRlZmluZSBfR0xfQVJHX05PTk5VTEwocGFyYW1zKQotKyMgZW5kaWYKLSsjZW5kaWYKLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9idWlsZC1hdXgvYysrZGVmcy5oIGxpYmljb252LTEuMTQvYnVpbGQtYXV4L2MrK2RlZnMuaAotLS0tIGxpYmljb252LTEuMTQub3JnLy9idWlsZC1hdXgvYysrZGVmcy5oCTE5NjktMTItMzEgMTY6MDA6MDAuMDAwMDAwMDAwIC0wODAwCi0rKysgbGliaWNvbnYtMS4xNC9idWlsZC1hdXgvYysrZGVmcy5oCTIwMTItMDEtMDggMDI6MDc6MzkuOTQyNDg0NDM4IC0wODAwCi1AQCAtMCwwICsxLDI3MSBAQAotKy8qIEMrKyBjb21wYXRpYmxlIGZ1bmN0aW9uIGRlY2xhcmF0aW9uIG1hY3Jvcy4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rI2lmbmRlZiBfR0xfQ1hYREVGU19ICi0rI2RlZmluZSBfR0xfQ1hYREVGU19ICi0rCi0rLyogVGhlIHRocmVlIG1vc3QgZnJlcXVlbnQgdXNlIGNhc2VzIG9mIHRoZXNlIG1hY3JvcyBhcmU6Ci0rCi0rICAgKiBGb3IgcHJvdmlkaW5nIGEgc3Vic3RpdHV0ZSBmb3IgYSBmdW5jdGlvbiB0aGF0IGlzIG1pc3Npbmcgb24gc29tZQotKyAgICAgcGxhdGZvcm1zLCBidXQgaXMgZGVjbGFyZWQgYW5kIHdvcmtzIGZpbmUgb24gdGhlIHBsYXRmb3JtcyBvbiB3aGljaAotKyAgICAgaXQgZXhpc3RzOgotKwotKyAgICAgICAjaWYgQEdOVUxJQl9GT09ACi0rICAgICAgICMgaWYgIUBIQVZFX0ZPT0AKLSsgICAgICAgX0dMX0ZVTkNERUNMX1NZUyAoZm9vLCAuLi4pOwotKyAgICAgICAjIGVuZGlmCi0rICAgICAgIF9HTF9DWFhBTElBU19TWVMgKGZvbywgLi4uKTsKLSsgICAgICAgX0dMX0NYWEFMSUFTV0FSTiAoZm9vKTsKLSsgICAgICAgI2VsaWYgZGVmaW5lZCBHTlVMSUJfUE9TSVhDSEVDSwotKyAgICAgICAuLi4KLSsgICAgICAgI2VuZGlmCi0rCi0rICAgKiBGb3IgcHJvdmlkaW5nIGEgcmVwbGFjZW1lbnQgZm9yIGEgZnVuY3Rpb24gdGhhdCBleGlzdHMgb24gYWxsIHBsYXRmb3JtcywKLSsgICAgIGJ1dCBpcyBicm9rZW4vaW5zdWZmaWNpZW50IGFuZCBuZWVkcyB0byBiZSByZXBsYWNlZCBvbiBzb21lIHBsYXRmb3JtczoKLSsKLSsgICAgICAgI2lmIEBHTlVMSUJfRk9PQAotKyAgICAgICAjIGlmIEBSRVBMQUNFX0ZPT0AKLSsgICAgICAgIyAgaWYgIShkZWZpbmVkIF9fY3BsdXNwbHVzICYmIGRlZmluZWQgR05VTElCX05BTUVTUEFDRSkKLSsgICAgICAgIyAgIHVuZGVmIGZvbwotKyAgICAgICAjICAgZGVmaW5lIGZvbyBycGxfZm9vCi0rICAgICAgICMgIGVuZGlmCi0rICAgICAgIF9HTF9GVU5DREVDTF9SUEwgKGZvbywgLi4uKTsKLSsgICAgICAgX0dMX0NYWEFMSUFTX1JQTCAoZm9vLCAuLi4pOwotKyAgICAgICAjIGVsc2UKLSsgICAgICAgX0dMX0NYWEFMSUFTX1NZUyAoZm9vLCAuLi4pOwotKyAgICAgICAjIGVuZGlmCi0rICAgICAgIF9HTF9DWFhBTElBU1dBUk4gKGZvbyk7Ci0rICAgICAgICNlbGlmIGRlZmluZWQgR05VTElCX1BPU0lYQ0hFQ0sKLSsgICAgICAgLi4uCi0rICAgICAgICNlbmRpZgotKwotKyAgICogRm9yIHByb3ZpZGluZyBhIHJlcGxhY2VtZW50IGZvciBhIGZ1bmN0aW9uIHRoYXQgZXhpc3RzIG9uIHNvbWUgcGxhdGZvcm1zCi0rICAgICBidXQgaXMgYnJva2VuL2luc3VmZmljaWVudCBhbmQgbmVlZHMgdG8gYmUgcmVwbGFjZWQgb24gc29tZSBvZiB0aGVtIGFuZAotKyAgICAgaXMgYWRkaXRpb25hbGx5IGVpdGhlciBtaXNzaW5nIG9yIHVuZGVjbGFyZWQgb24gc29tZSBvdGhlciBwbGF0Zm9ybXM6Ci0rCi0rICAgICAgICNpZiBAR05VTElCX0ZPT0AKLSsgICAgICAgIyBpZiBAUkVQTEFDRV9GT09ACi0rICAgICAgICMgIGlmICEoZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiBkZWZpbmVkIEdOVUxJQl9OQU1FU1BBQ0UpCi0rICAgICAgICMgICB1bmRlZiBmb28KLSsgICAgICAgIyAgIGRlZmluZSBmb28gcnBsX2ZvbwotKyAgICAgICAjICBlbmRpZgotKyAgICAgICBfR0xfRlVOQ0RFQ0xfUlBMIChmb28sIC4uLik7Ci0rICAgICAgIF9HTF9DWFhBTElBU19SUEwgKGZvbywgLi4uKTsKLSsgICAgICAgIyBlbHNlCi0rICAgICAgICMgIGlmICFASEFWRV9GT09AICAgb3IgICBpZiAhQEhBVkVfREVDTF9GT09ACi0rICAgICAgIF9HTF9GVU5DREVDTF9TWVMgKGZvbywgLi4uKTsKLSsgICAgICAgIyAgZW5kaWYKLSsgICAgICAgX0dMX0NYWEFMSUFTX1NZUyAoZm9vLCAuLi4pOwotKyAgICAgICAjIGVuZGlmCi0rICAgICAgIF9HTF9DWFhBTElBU1dBUk4gKGZvbyk7Ci0rICAgICAgICNlbGlmIGRlZmluZWQgR05VTElCX1BPU0lYQ0hFQ0sKLSsgICAgICAgLi4uCi0rICAgICAgICNlbmRpZgotKyovCi0rCi0rLyogX0dMX0VYVEVSTl9DIGRlY2xhcmF0aW9uOwotKyAgIHBlcmZvcm1zIHRoZSBkZWNsYXJhdGlvbiB3aXRoIEMgbGlua2FnZS4gICovCi0rI2lmIGRlZmluZWQgX19jcGx1c3BsdXMKLSsjIGRlZmluZSBfR0xfRVhURVJOX0MgZXh0ZXJuICJDIgotKyNlbHNlCi0rIyBkZWZpbmUgX0dMX0VYVEVSTl9DIGV4dGVybgotKyNlbmRpZgotKwotKy8qIF9HTF9GVU5DREVDTF9SUEwgKGZ1bmMsIHJldHR5cGUsIHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMpOwotKyAgIGRlY2xhcmVzIGEgcmVwbGFjZW1lbnQgZnVuY3Rpb24sIG5hbWVkIHJwbF9mdW5jLCB3aXRoIHRoZSBnaXZlbiBwcm90b3R5cGUsCi0rICAgY29uc2lzdGluZyBvZiByZXR1cm4gdHlwZSwgcGFyYW1ldGVycywgYW5kIGF0dHJpYnV0ZXMuCi0rICAgRXhhbXBsZToKLSsgICAgIF9HTF9GVU5DREVDTF9SUEwgKG9wZW4sIGludCwgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgZmxhZ3MsIC4uLikKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0dMX0FSR19OT05OVUxMICgoMSkpKTsKLSsgKi8KLSsjZGVmaW5lIF9HTF9GVU5DREVDTF9SUEwoZnVuYyxyZXR0eXBlLHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMpIFwKLSsgIF9HTF9GVU5DREVDTF9SUExfMSAocnBsXyMjZnVuYywgcmV0dHlwZSwgcGFyYW1ldGVyc19hbmRfYXR0cmlidXRlcykKLSsjZGVmaW5lIF9HTF9GVU5DREVDTF9SUExfMShycGxfZnVuYyxyZXR0eXBlLHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMpIFwKLSsgIF9HTF9FWFRFUk5fQyByZXR0eXBlIHJwbF9mdW5jIHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMKLSsKLSsvKiBfR0xfRlVOQ0RFQ0xfU1lTIChmdW5jLCByZXR0eXBlLCBwYXJhbWV0ZXJzX2FuZF9hdHRyaWJ1dGVzKTsKLSsgICBkZWNsYXJlcyB0aGUgc3lzdGVtIGZ1bmN0aW9uLCBuYW1lZCBmdW5jLCB3aXRoIHRoZSBnaXZlbiBwcm90b3R5cGUsCi0rICAgY29uc2lzdGluZyBvZiByZXR1cm4gdHlwZSwgcGFyYW1ldGVycywgYW5kIGF0dHJpYnV0ZXMuCi0rICAgRXhhbXBsZToKLSsgICAgIF9HTF9GVU5DREVDTF9TWVMgKG9wZW4sIGludCwgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgZmxhZ3MsIC4uLikKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX0dMX0FSR19OT05OVUxMICgoMSkpKTsKLSsgKi8KLSsjZGVmaW5lIF9HTF9GVU5DREVDTF9TWVMoZnVuYyxyZXR0eXBlLHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMpIFwKLSsgIF9HTF9FWFRFUk5fQyByZXR0eXBlIGZ1bmMgcGFyYW1ldGVyc19hbmRfYXR0cmlidXRlcwotKwotKy8qIF9HTF9DWFhBTElBU19SUEwgKGZ1bmMsIHJldHR5cGUsIHBhcmFtZXRlcnMpOwotKyAgIGRlY2xhcmVzIGEgQysrIGFsaWFzIGNhbGxlZCBHTlVMSUJfTkFNRVNQQUNFOjpmdW5jCi0rICAgdGhhdCByZWRpcmVjdHMgdG8gcnBsX2Z1bmMsIGlmIEdOVUxJQl9OQU1FU1BBQ0UgaXMgZGVmaW5lZC4KLSsgICBFeGFtcGxlOgotKyAgICAgX0dMX0NYWEFMSUFTX1JQTCAob3BlbiwgaW50LCAoY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBmbGFncywgLi4uKSk7Ci0rICovCi0rI2RlZmluZSBfR0xfQ1hYQUxJQVNfUlBMKGZ1bmMscmV0dHlwZSxwYXJhbWV0ZXJzKSBcCi0rICBfR0xfQ1hYQUxJQVNfUlBMXzEgKGZ1bmMsIHJwbF8jI2Z1bmMsIHJldHR5cGUsIHBhcmFtZXRlcnMpCi0rI2lmIGRlZmluZWQgX19jcGx1c3BsdXMgJiYgZGVmaW5lZCBHTlVMSUJfTkFNRVNQQUNFCi0rIyBkZWZpbmUgX0dMX0NYWEFMSUFTX1JQTF8xKGZ1bmMscnBsX2Z1bmMscmV0dHlwZSxwYXJhbWV0ZXJzKSBcCi0rICAgIG5hbWVzcGFjZSBHTlVMSUJfTkFNRVNQQUNFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgcmV0dHlwZSAoKmNvbnN0IGZ1bmMpIHBhcmFtZXRlcnMgPSA6OnJwbF9mdW5jOyAgICAgICAgICBcCi0rICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgIF9HTF9FWFRFUk5fQyBpbnQgX2dsX2N4eGFsaWFzX2R1bW15Ci0rI2Vsc2UKLSsjIGRlZmluZSBfR0xfQ1hYQUxJQVNfUlBMXzEoZnVuYyxycGxfZnVuYyxyZXR0eXBlLHBhcmFtZXRlcnMpIFwKLSsgICAgX0dMX0VYVEVSTl9DIGludCBfZ2xfY3h4YWxpYXNfZHVtbXkKLSsjZW5kaWYKLSsKLSsvKiBfR0xfQ1hYQUxJQVNfUlBMX0NBU1RfMSAoZnVuYywgcnBsX2Z1bmMsIHJldHR5cGUsIHBhcmFtZXRlcnMpOwotKyAgIGlzIGxpa2UgIF9HTF9DWFhBTElBU19SUExfMSAoZnVuYywgcnBsX2Z1bmMsIHJldHR5cGUsIHBhcmFtZXRlcnMpOwotKyAgIGV4Y2VwdCB0aGF0IHRoZSBDIGZ1bmN0aW9uIHJwbF9mdW5jIG1heSBoYXZlIGEgc2xpZ2h0bHkgZGlmZmVyZW50Ci0rICAgZGVjbGFyYXRpb24uICBBIGNhc3QgaXMgdXNlZCB0byBzaWxlbmNlIHRoZSAiaW52YWxpZCBjb252ZXJzaW9uIiBlcnJvcgotKyAgIHRoYXQgd291bGQgb3RoZXJ3aXNlIG9jY3VyLiAgKi8KLSsjaWYgZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiBkZWZpbmVkIEdOVUxJQl9OQU1FU1BBQ0UKLSsjIGRlZmluZSBfR0xfQ1hYQUxJQVNfUlBMX0NBU1RfMShmdW5jLHJwbF9mdW5jLHJldHR5cGUscGFyYW1ldGVycykgXAotKyAgICBuYW1lc3BhY2UgR05VTElCX05BTUVTUEFDRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICByZXR0eXBlICgqY29uc3QgZnVuYykgcGFyYW1ldGVycyA9ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxyZXR0eXBlKCopcGFyYW1ldGVycz4oOjpycGxfZnVuYyk7ICAgICAgICBcCi0rICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgX0dMX0VYVEVSTl9DIGludCBfZ2xfY3h4YWxpYXNfZHVtbXkKLSsjZWxzZQotKyMgZGVmaW5lIF9HTF9DWFhBTElBU19SUExfQ0FTVF8xKGZ1bmMscnBsX2Z1bmMscmV0dHlwZSxwYXJhbWV0ZXJzKSBcCi0rICAgIF9HTF9FWFRFUk5fQyBpbnQgX2dsX2N4eGFsaWFzX2R1bW15Ci0rI2VuZGlmCi0rCi0rLyogX0dMX0NYWEFMSUFTX1NZUyAoZnVuYywgcmV0dHlwZSwgcGFyYW1ldGVycyk7Ci0rICAgZGVjbGFyZXMgYSBDKysgYWxpYXMgY2FsbGVkIEdOVUxJQl9OQU1FU1BBQ0U6OmZ1bmMKLSsgICB0aGF0IHJlZGlyZWN0cyB0byB0aGUgc3lzdGVtIHByb3ZpZGVkIGZ1bmN0aW9uIGZ1bmMsIGlmIEdOVUxJQl9OQU1FU1BBQ0UKLSsgICBpcyBkZWZpbmVkLgotKyAgIEV4YW1wbGU6Ci0rICAgICBfR0xfQ1hYQUxJQVNfU1lTIChvcGVuLCBpbnQsIChjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGZsYWdzLCAuLi4pKTsKLSsgKi8KLSsjaWYgZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiBkZWZpbmVkIEdOVUxJQl9OQU1FU1BBQ0UKLSsgIC8qIElmIHdlIHdlcmUgdG8gd3JpdGUKLSsgICAgICAgcmV0dHlwZSAoKmNvbnN0IGZ1bmMpIHBhcmFtZXRlcnMgPSA6OmZ1bmM7Ci0rICAgICBsaWtlIGFib3ZlIGluIF9HTF9DWFhBTElBU19SUExfMSwgdGhlIGNvbXBpbGVyIGNvdWxkIG9wdGltaXplIGNhbGxzCi0rICAgICBiZXR0ZXIgKHJlbW92ZSBhbiBpbmRpcmVjdGlvbiB0aHJvdWdoIGEgJ3N0YXRpYycgcG9pbnRlciB2YXJpYWJsZSksCi0rICAgICBidXQgdGhlbiB0aGUgX0dMX0NYWEFMSUFTV0FSTiBtYWNybyBiZWxvdyB3b3VsZCBjYXVzZSBhIHdhcm5pbmcgbm90IG9ubHkKLSsgICAgIGZvciB1c2VzIG9mIDo6ZnVuYyBidXQgYWxzbyBmb3IgdXNlcyBvZiBHTlVMSUJfTkFNRVNQQUNFOjpmdW5jLiAgKi8KLSsjIGRlZmluZSBfR0xfQ1hYQUxJQVNfU1lTKGZ1bmMscmV0dHlwZSxwYXJhbWV0ZXJzKSBcCi0rICAgIG5hbWVzcGFjZSBHTlVMSUJfTkFNRVNQQUNFICAgICAgICAgICAgICAgICAgICAgXAotKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICBzdGF0aWMgcmV0dHlwZSAoKmZ1bmMpIHBhcmFtZXRlcnMgPSA6OmZ1bmM7ICBcCi0rICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICBfR0xfRVhURVJOX0MgaW50IF9nbF9jeHhhbGlhc19kdW1teQotKyNlbHNlCi0rIyBkZWZpbmUgX0dMX0NYWEFMSUFTX1NZUyhmdW5jLHJldHR5cGUscGFyYW1ldGVycykgXAotKyAgICBfR0xfRVhURVJOX0MgaW50IF9nbF9jeHhhbGlhc19kdW1teQotKyNlbmRpZgotKwotKy8qIF9HTF9DWFhBTElBU19TWVNfQ0FTVCAoZnVuYywgcmV0dHlwZSwgcGFyYW1ldGVycyk7Ci0rICAgaXMgbGlrZSAgX0dMX0NYWEFMSUFTX1NZUyAoZnVuYywgcmV0dHlwZSwgcGFyYW1ldGVycyk7Ci0rICAgZXhjZXB0IHRoYXQgdGhlIEMgZnVuY3Rpb24gZnVuYyBtYXkgaGF2ZSBhIHNsaWdodGx5IGRpZmZlcmVudCBkZWNsYXJhdGlvbi4KLSsgICBBIGNhc3QgaXMgdXNlZCB0byBzaWxlbmNlIHRoZSAiaW52YWxpZCBjb252ZXJzaW9uIiBlcnJvciB0aGF0IHdvdWxkCi0rICAgb3RoZXJ3aXNlIG9jY3VyLiAgKi8KLSsjaWYgZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiBkZWZpbmVkIEdOVUxJQl9OQU1FU1BBQ0UKLSsjIGRlZmluZSBfR0xfQ1hYQUxJQVNfU1lTX0NBU1QoZnVuYyxyZXR0eXBlLHBhcmFtZXRlcnMpIFwKLSsgICAgbmFtZXNwYWNlIEdOVUxJQl9OQU1FU1BBQ0UgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICBzdGF0aWMgcmV0dHlwZSAoKmZ1bmMpIHBhcmFtZXRlcnMgPSAgICAgICAgICAgICAgIFwKLSsgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8cmV0dHlwZSgqKXBhcmFtZXRlcnM+KDo6ZnVuYyk7IFwKLSsgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgX0dMX0VYVEVSTl9DIGludCBfZ2xfY3h4YWxpYXNfZHVtbXkKLSsjZWxzZQotKyMgZGVmaW5lIF9HTF9DWFhBTElBU19TWVNfQ0FTVChmdW5jLHJldHR5cGUscGFyYW1ldGVycykgXAotKyAgICBfR0xfRVhURVJOX0MgaW50IF9nbF9jeHhhbGlhc19kdW1teQotKyNlbmRpZgotKwotKy8qIF9HTF9DWFhBTElBU19TWVNfQ0FTVDIgKGZ1bmMsIHJldHR5cGUsIHBhcmFtZXRlcnMsIHJldHR5cGUyLCBwYXJhbWV0ZXJzMik7Ci0rICAgaXMgbGlrZSAgX0dMX0NYWEFMSUFTX1NZUyAoZnVuYywgcmV0dHlwZSwgcGFyYW1ldGVycyk7Ci0rICAgZXhjZXB0IHRoYXQgdGhlIEMgZnVuY3Rpb24gaXMgcGlja2VkIGFtb25nIGEgc2V0IG9mIG92ZXJsb2FkZWQgZnVuY3Rpb25zLAotKyAgIG5hbWVseSB0aGUgb25lIHdpdGggcmV0dHlwZTIgYW5kIHBhcmFtZXRlcnMyLiAgVHdvIGNvbnNlY3V0aXZlIGNhc3RzCi0rICAgYXJlIHVzZWQgdG8gc2lsZW5jZSB0aGUgImNhbm5vdCBmaW5kIGEgbWF0Y2giIGFuZCAiaW52YWxpZCBjb252ZXJzaW9uIgotKyAgIGVycm9ycyB0aGF0IHdvdWxkIG90aGVyd2lzZSBvY2N1ci4gICovCi0rI2lmIGRlZmluZWQgX19jcGx1c3BsdXMgJiYgZGVmaW5lZCBHTlVMSUJfTkFNRVNQQUNFCi0rICAvKiBUaGUgb3V0ZXIgY2FzdCBtdXN0IGJlIGEgcmVpbnRlcnByZXRfY2FzdC4KLSsgICAgIFRoZSBpbm5lciBjYXN0OiBXaGVuIHRoZSBmdW5jdGlvbiBpcyBkZWZpbmVkIGFzIGEgc2V0IG9mIG92ZXJsb2FkZWQKLSsgICAgIGZ1bmN0aW9ucywgaXQgd29ya3MgYXMgYSBzdGF0aWNfY2FzdDw+LCBjaG9vc2luZyB0aGUgZGVzaWduYXRlZCB2YXJpYW50LgotKyAgICAgV2hlbiB0aGUgZnVuY3Rpb24gaXMgZGVmaW5lZCBhcyBhIHNpbmdsZSB2YXJpYW50LCBpdCB3b3JrcyBhcyBhCi0rICAgICByZWludGVycHJldF9jYXN0PD4uIFRoZSBwYXJlbnRoZXNpemVkIGNhc3Qgc3ludGF4IHdvcmtzIGJvdGggd2F5cy4gICovCi0rIyBkZWZpbmUgX0dMX0NYWEFMSUFTX1NZU19DQVNUMihmdW5jLHJldHR5cGUscGFyYW1ldGVycyxyZXR0eXBlMixwYXJhbWV0ZXJzMikgXAotKyAgICBuYW1lc3BhY2UgR05VTElCX05BTUVTUEFDRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgc3RhdGljIHJldHR5cGUgKCpmdW5jKSBwYXJhbWV0ZXJzID0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxyZXR0eXBlKCopcGFyYW1ldGVycz4oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgKHJldHR5cGUyKCopcGFyYW1ldGVyczIpKDo6ZnVuYykpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICBfR0xfRVhURVJOX0MgaW50IF9nbF9jeHhhbGlhc19kdW1teQotKyNlbHNlCi0rIyBkZWZpbmUgX0dMX0NYWEFMSUFTX1NZU19DQVNUMihmdW5jLHJldHR5cGUscGFyYW1ldGVycyxyZXR0eXBlMixwYXJhbWV0ZXJzMikgXAotKyAgICBfR0xfRVhURVJOX0MgaW50IF9nbF9jeHhhbGlhc19kdW1teQotKyNlbmRpZgotKwotKy8qIF9HTF9DWFhBTElBU1dBUk4gKGZ1bmMpOwotKyAgIGNhdXNlcyBhIHdhcm5pbmcgdG8gYmUgZW1pdHRlZCB3aGVuIDo6ZnVuYyBpcyB1c2VkIGJ1dCBub3Qgd2hlbgotKyAgIEdOVUxJQl9OQU1FU1BBQ0U6OmZ1bmMgaXMgdXNlZC4gIGZ1bmMgbXVzdCBiZSBkZWZpbmVkIHdpdGhvdXQgb3ZlcmxvYWRlZAotKyAgIHZhcmlhbnRzLiAgKi8KLSsjaWYgZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiBkZWZpbmVkIEdOVUxJQl9OQU1FU1BBQ0UKLSsjIGRlZmluZSBfR0xfQ1hYQUxJQVNXQVJOKGZ1bmMpIFwKLSsgICBfR0xfQ1hYQUxJQVNXQVJOXzEgKGZ1bmMsIEdOVUxJQl9OQU1FU1BBQ0UpCi0rIyBkZWZpbmUgX0dMX0NYWEFMSUFTV0FSTl8xKGZ1bmMsbmFtZXNwYWNlKSBcCi0rICAgX0dMX0NYWEFMSUFTV0FSTl8yIChmdW5jLCBuYW1lc3BhY2UpCi0rLyogVG8gd29yayBhcm91bmQgR0NDIGJ1ZyA8aHR0cDovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD00Mzg4MT4sCi0rICAgd2UgZW5hYmxlIHRoZSB3YXJuaW5nIG9ubHkgd2hlbiBub3Qgb3B0aW1pemluZy4gICovCi0rIyBpZiAhX19PUFRJTUlaRV9fCi0rIyAgZGVmaW5lIF9HTF9DWFhBTElBU1dBUk5fMihmdW5jLG5hbWVzcGFjZSkgXAotKyAgICBfR0xfV0FSTl9PTl9VU0UgKGZ1bmMsIFwKLSsgICAgICAgICAgICAgICAgICAgICAiVGhlIHN5bWJvbCA6OiIgI2Z1bmMgIiByZWZlcnMgdG8gdGhlIHN5c3RlbSBmdW5jdGlvbi4gIiBcCi0rICAgICAgICAgICAgICAgICAgICAgIlVzZSAiICNuYW1lc3BhY2UgIjo6IiAjZnVuYyAiIGluc3RlYWQuIikKLSsjIGVsaWYgX19HTlVDX18gPj0gMyAmJiBHTlVMSUJfU1RSSUNUX0NIRUNLSU5HCi0rIyAgZGVmaW5lIF9HTF9DWFhBTElBU1dBUk5fMihmdW5jLG5hbWVzcGFjZSkgXAotKyAgICAgZXh0ZXJuIF9fdHlwZW9mX18gKGZ1bmMpIGZ1bmMKLSsjIGVsc2UKLSsjICBkZWZpbmUgX0dMX0NYWEFMSUFTV0FSTl8yKGZ1bmMsbmFtZXNwYWNlKSBcCi0rICAgICBfR0xfRVhURVJOX0MgaW50IF9nbF9jeHhhbGlhc19kdW1teQotKyMgZW5kaWYKLSsjZWxzZQotKyMgZGVmaW5lIF9HTF9DWFhBTElBU1dBUk4oZnVuYykgXAotKyAgICBfR0xfRVhURVJOX0MgaW50IF9nbF9jeHhhbGlhc19kdW1teQotKyNlbmRpZgotKwotKy8qIF9HTF9DWFhBTElBU1dBUk4xIChmdW5jLCByZXR0eXBlLCBwYXJhbWV0ZXJzX2FuZF9hdHRyaWJ1dGVzKTsKLSsgICBjYXVzZXMgYSB3YXJuaW5nIHRvIGJlIGVtaXR0ZWQgd2hlbiB0aGUgZ2l2ZW4gb3ZlcmxvYWRlZCB2YXJpYW50IG9mIDo6ZnVuYwotKyAgIGlzIHVzZWQgYnV0IG5vdCB3aGVuIEdOVUxJQl9OQU1FU1BBQ0U6OmZ1bmMgaXMgdXNlZC4gICovCi0rI2lmIGRlZmluZWQgX19jcGx1c3BsdXMgJiYgZGVmaW5lZCBHTlVMSUJfTkFNRVNQQUNFCi0rIyBkZWZpbmUgX0dMX0NYWEFMSUFTV0FSTjEoZnVuYyxyZXR0eXBlLHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMpIFwKLSsgICBfR0xfQ1hYQUxJQVNXQVJOMV8xIChmdW5jLCByZXR0eXBlLCBwYXJhbWV0ZXJzX2FuZF9hdHRyaWJ1dGVzLCBcCi0rICAgICAgICAgICAgICAgICAgICAgICAgR05VTElCX05BTUVTUEFDRSkKLSsjIGRlZmluZSBfR0xfQ1hYQUxJQVNXQVJOMV8xKGZ1bmMscmV0dHlwZSxwYXJhbWV0ZXJzX2FuZF9hdHRyaWJ1dGVzLG5hbWVzcGFjZSkgXAotKyAgIF9HTF9DWFhBTElBU1dBUk4xXzIgKGZ1bmMsIHJldHR5cGUsIHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMsIG5hbWVzcGFjZSkKLSsvKiBUbyB3b3JrIGFyb3VuZCBHQ0MgYnVnIDxodHRwOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTQzODgxPiwKLSsgICB3ZSBlbmFibGUgdGhlIHdhcm5pbmcgb25seSB3aGVuIG5vdCBvcHRpbWl6aW5nLiAgKi8KLSsjIGlmICFfX09QVElNSVpFX18KLSsjICBkZWZpbmUgX0dMX0NYWEFMSUFTV0FSTjFfMihmdW5jLHJldHR5cGUscGFyYW1ldGVyc19hbmRfYXR0cmlidXRlcyxuYW1lc3BhY2UpIFwKLSsgICAgX0dMX1dBUk5fT05fVVNFX0NYWCAoZnVuYywgcmV0dHlwZSwgcGFyYW1ldGVyc19hbmRfYXR0cmlidXRlcywgXAotKyAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIHN5bWJvbCA6OiIgI2Z1bmMgIiByZWZlcnMgdG8gdGhlIHN5c3RlbSBmdW5jdGlvbi4gIiBcCi0rICAgICAgICAgICAgICAgICAgICAgICAgICJVc2UgIiAjbmFtZXNwYWNlICI6OiIgI2Z1bmMgIiBpbnN0ZWFkLiIpCi0rIyBlbGlmIF9fR05VQ19fID49IDMgJiYgR05VTElCX1NUUklDVF9DSEVDS0lORwotKyMgIGRlZmluZSBfR0xfQ1hYQUxJQVNXQVJOMV8yKGZ1bmMscmV0dHlwZSxwYXJhbWV0ZXJzX2FuZF9hdHRyaWJ1dGVzLG5hbWVzcGFjZSkgXAotKyAgICAgZXh0ZXJuIF9fdHlwZW9mX18gKGZ1bmMpIGZ1bmMKLSsjIGVsc2UKLSsjICBkZWZpbmUgX0dMX0NYWEFMSUFTV0FSTjFfMihmdW5jLHJldHR5cGUscGFyYW1ldGVyc19hbmRfYXR0cmlidXRlcyxuYW1lc3BhY2UpIFwKLSsgICAgIF9HTF9FWFRFUk5fQyBpbnQgX2dsX2N4eGFsaWFzX2R1bW15Ci0rIyBlbmRpZgotKyNlbHNlCi0rIyBkZWZpbmUgX0dMX0NYWEFMSUFTV0FSTjEoZnVuYyxyZXR0eXBlLHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMpIFwKLSsgICAgX0dMX0VYVEVSTl9DIGludCBfZ2xfY3h4YWxpYXNfZHVtbXkKLSsjZW5kaWYKLSsKLSsjZW5kaWYgLyogX0dMX0NYWERFRlNfSCAqLwotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL2J1aWxkLWF1eC9zbmlwcGV0L2FyZy1ub25udWxsLmggbGliaWNvbnYtMS4xNC9idWlsZC1hdXgvc25pcHBldC9hcmctbm9ubnVsbC5oCi0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL2J1aWxkLWF1eC9zbmlwcGV0L2FyZy1ub25udWxsLmgJMjAxMS0wOC0wNyAwNjoyMjowNy4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L2J1aWxkLWF1eC9zbmlwcGV0L2FyZy1ub25udWxsLmgJMTk2OS0xMi0zMSAxNjowMDowMC4wMDAwMDAwMDAgLTA4MDAKLUBAIC0xLDI2ICswLDAgQEAKLS0vKiBBIEMgbWFjcm8gZm9yIGRlY2xhcmluZyB0aGF0IHNwZWNpZmljIGFyZ3VtZW50cyBtdXN0IG5vdCBiZSBOVUxMLgotLSAgIENvcHlyaWdodCAoQykgMjAwOS0yMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotLQotLSAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0tICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLS0gICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotLSAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0tCi0tICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0tICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotLSAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLS0KLS0gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLS0KLS0vKiBfR0xfQVJHX05PTk5VTEwoKG4sLi4uLG0pKSB0ZWxscyB0aGUgY29tcGlsZXIgYW5kIHN0YXRpYyBhbmFseXplciB0b29scwotLSAgIHRoYXQgdGhlIHZhbHVlcyBwYXNzZWQgYXMgYXJndW1lbnRzIG4sIC4uLiwgbSBtdXN0IGJlIG5vbi1OVUxMIHBvaW50ZXJzLgotLSAgIG4gPSAxIHN0YW5kcyBmb3IgdGhlIGZpcnN0IGFyZ3VtZW50LCBuID0gMiBmb3IgdGhlIHNlY29uZCBhcmd1bWVudCBldGMuICAqLwotLSNpZm5kZWYgX0dMX0FSR19OT05OVUxMCi0tIyBpZiAoX19HTlVDX18gPT0gMyAmJiBfX0dOVUNfTUlOT1JfXyA+PSAzKSB8fCBfX0dOVUNfXyA+IDMKLS0jICBkZWZpbmUgX0dMX0FSR19OT05OVUxMKHBhcmFtcykgX19hdHRyaWJ1dGVfXyAoKF9fbm9ubnVsbF9fIHBhcmFtcykpCi0tIyBlbHNlCi0tIyAgZGVmaW5lIF9HTF9BUkdfTk9OTlVMTChwYXJhbXMpCi0tIyBlbmRpZgotLSNlbmRpZgotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL2J1aWxkLWF1eC9zbmlwcGV0L2MrK2RlZnMuaCBsaWJpY29udi0xLjE0L2J1aWxkLWF1eC9zbmlwcGV0L2MrK2RlZnMuaAotLS0tIGxpYmljb252LTEuMTQub3JnLy9idWlsZC1hdXgvc25pcHBldC9jKytkZWZzLmgJMjAxMS0wOC0wNyAwNjoyMjowNy4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L2J1aWxkLWF1eC9zbmlwcGV0L2MrK2RlZnMuaAkxOTY5LTEyLTMxIDE2OjAwOjAwLjAwMDAwMDAwMCAtMDgwMAotQEAgLTEsMjcxICswLDAgQEAKLS0vKiBDKysgY29tcGF0aWJsZSBmdW5jdGlvbiBkZWNsYXJhdGlvbiBtYWNyb3MuCi0tICAgQ29weXJpZ2h0IChDKSAyMDEwLTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0tCi0tICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLS0gICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotLSAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0tICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLS0KLS0gICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLS0gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0tICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotLQotLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotLQotLSNpZm5kZWYgX0dMX0NYWERFRlNfSAotLSNkZWZpbmUgX0dMX0NYWERFRlNfSAotLQotLS8qIFRoZSB0aHJlZSBtb3N0IGZyZXF1ZW50IHVzZSBjYXNlcyBvZiB0aGVzZSBtYWNyb3MgYXJlOgotLQotLSAgICogRm9yIHByb3ZpZGluZyBhIHN1YnN0aXR1dGUgZm9yIGEgZnVuY3Rpb24gdGhhdCBpcyBtaXNzaW5nIG9uIHNvbWUKLS0gICAgIHBsYXRmb3JtcywgYnV0IGlzIGRlY2xhcmVkIGFuZCB3b3JrcyBmaW5lIG9uIHRoZSBwbGF0Zm9ybXMgb24gd2hpY2gKLS0gICAgIGl0IGV4aXN0czoKLS0KLS0gICAgICAgI2lmIEBHTlVMSUJfRk9PQAotLSAgICAgICAjIGlmICFASEFWRV9GT09ACi0tICAgICAgIF9HTF9GVU5DREVDTF9TWVMgKGZvbywgLi4uKTsKLS0gICAgICAgIyBlbmRpZgotLSAgICAgICBfR0xfQ1hYQUxJQVNfU1lTIChmb28sIC4uLik7Ci0tICAgICAgIF9HTF9DWFhBTElBU1dBUk4gKGZvbyk7Ci0tICAgICAgICNlbGlmIGRlZmluZWQgR05VTElCX1BPU0lYQ0hFQ0sKLS0gICAgICAgLi4uCi0tICAgICAgICNlbmRpZgotLQotLSAgICogRm9yIHByb3ZpZGluZyBhIHJlcGxhY2VtZW50IGZvciBhIGZ1bmN0aW9uIHRoYXQgZXhpc3RzIG9uIGFsbCBwbGF0Zm9ybXMsCi0tICAgICBidXQgaXMgYnJva2VuL2luc3VmZmljaWVudCBhbmQgbmVlZHMgdG8gYmUgcmVwbGFjZWQgb24gc29tZSBwbGF0Zm9ybXM6Ci0tCi0tICAgICAgICNpZiBAR05VTElCX0ZPT0AKLS0gICAgICAgIyBpZiBAUkVQTEFDRV9GT09ACi0tICAgICAgICMgIGlmICEoZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiBkZWZpbmVkIEdOVUxJQl9OQU1FU1BBQ0UpCi0tICAgICAgICMgICB1bmRlZiBmb28KLS0gICAgICAgIyAgIGRlZmluZSBmb28gcnBsX2ZvbwotLSAgICAgICAjICBlbmRpZgotLSAgICAgICBfR0xfRlVOQ0RFQ0xfUlBMIChmb28sIC4uLik7Ci0tICAgICAgIF9HTF9DWFhBTElBU19SUEwgKGZvbywgLi4uKTsKLS0gICAgICAgIyBlbHNlCi0tICAgICAgIF9HTF9DWFhBTElBU19TWVMgKGZvbywgLi4uKTsKLS0gICAgICAgIyBlbmRpZgotLSAgICAgICBfR0xfQ1hYQUxJQVNXQVJOIChmb28pOwotLSAgICAgICAjZWxpZiBkZWZpbmVkIEdOVUxJQl9QT1NJWENIRUNLCi0tICAgICAgIC4uLgotLSAgICAgICAjZW5kaWYKLS0KLS0gICAqIEZvciBwcm92aWRpbmcgYSByZXBsYWNlbWVudCBmb3IgYSBmdW5jdGlvbiB0aGF0IGV4aXN0cyBvbiBzb21lIHBsYXRmb3JtcwotLSAgICAgYnV0IGlzIGJyb2tlbi9pbnN1ZmZpY2llbnQgYW5kIG5lZWRzIHRvIGJlIHJlcGxhY2VkIG9uIHNvbWUgb2YgdGhlbSBhbmQKLS0gICAgIGlzIGFkZGl0aW9uYWxseSBlaXRoZXIgbWlzc2luZyBvciB1bmRlY2xhcmVkIG9uIHNvbWUgb3RoZXIgcGxhdGZvcm1zOgotLQotLSAgICAgICAjaWYgQEdOVUxJQl9GT09ACi0tICAgICAgICMgaWYgQFJFUExBQ0VfRk9PQAotLSAgICAgICAjICBpZiAhKGRlZmluZWQgX19jcGx1c3BsdXMgJiYgZGVmaW5lZCBHTlVMSUJfTkFNRVNQQUNFKQotLSAgICAgICAjICAgdW5kZWYgZm9vCi0tICAgICAgICMgICBkZWZpbmUgZm9vIHJwbF9mb28KLS0gICAgICAgIyAgZW5kaWYKLS0gICAgICAgX0dMX0ZVTkNERUNMX1JQTCAoZm9vLCAuLi4pOwotLSAgICAgICBfR0xfQ1hYQUxJQVNfUlBMIChmb28sIC4uLik7Ci0tICAgICAgICMgZWxzZQotLSAgICAgICAjICBpZiAhQEhBVkVfRk9PQCAgIG9yICAgaWYgIUBIQVZFX0RFQ0xfRk9PQAotLSAgICAgICBfR0xfRlVOQ0RFQ0xfU1lTIChmb28sIC4uLik7Ci0tICAgICAgICMgIGVuZGlmCi0tICAgICAgIF9HTF9DWFhBTElBU19TWVMgKGZvbywgLi4uKTsKLS0gICAgICAgIyBlbmRpZgotLSAgICAgICBfR0xfQ1hYQUxJQVNXQVJOIChmb28pOwotLSAgICAgICAjZWxpZiBkZWZpbmVkIEdOVUxJQl9QT1NJWENIRUNLCi0tICAgICAgIC4uLgotLSAgICAgICAjZW5kaWYKLS0qLwotLQotLS8qIF9HTF9FWFRFUk5fQyBkZWNsYXJhdGlvbjsKLS0gICBwZXJmb3JtcyB0aGUgZGVjbGFyYXRpb24gd2l0aCBDIGxpbmthZ2UuICAqLwotLSNpZiBkZWZpbmVkIF9fY3BsdXNwbHVzCi0tIyBkZWZpbmUgX0dMX0VYVEVSTl9DIGV4dGVybiAiQyIKLS0jZWxzZQotLSMgZGVmaW5lIF9HTF9FWFRFUk5fQyBleHRlcm4KLS0jZW5kaWYKLS0KLS0vKiBfR0xfRlVOQ0RFQ0xfUlBMIChmdW5jLCByZXR0eXBlLCBwYXJhbWV0ZXJzX2FuZF9hdHRyaWJ1dGVzKTsKLS0gICBkZWNsYXJlcyBhIHJlcGxhY2VtZW50IGZ1bmN0aW9uLCBuYW1lZCBycGxfZnVuYywgd2l0aCB0aGUgZ2l2ZW4gcHJvdG90eXBlLAotLSAgIGNvbnNpc3Rpbmcgb2YgcmV0dXJuIHR5cGUsIHBhcmFtZXRlcnMsIGFuZCBhdHRyaWJ1dGVzLgotLSAgIEV4YW1wbGU6Ci0tICAgICBfR0xfRlVOQ0RFQ0xfUlBMIChvcGVuLCBpbnQsIChjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGZsYWdzLCAuLi4pCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9HTF9BUkdfTk9OTlVMTCAoKDEpKSk7Ci0tICovCi0tI2RlZmluZSBfR0xfRlVOQ0RFQ0xfUlBMKGZ1bmMscmV0dHlwZSxwYXJhbWV0ZXJzX2FuZF9hdHRyaWJ1dGVzKSBcCi0tICBfR0xfRlVOQ0RFQ0xfUlBMXzEgKHJwbF8jI2Z1bmMsIHJldHR5cGUsIHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMpCi0tI2RlZmluZSBfR0xfRlVOQ0RFQ0xfUlBMXzEocnBsX2Z1bmMscmV0dHlwZSxwYXJhbWV0ZXJzX2FuZF9hdHRyaWJ1dGVzKSBcCi0tICBfR0xfRVhURVJOX0MgcmV0dHlwZSBycGxfZnVuYyBwYXJhbWV0ZXJzX2FuZF9hdHRyaWJ1dGVzCi0tCi0tLyogX0dMX0ZVTkNERUNMX1NZUyAoZnVuYywgcmV0dHlwZSwgcGFyYW1ldGVyc19hbmRfYXR0cmlidXRlcyk7Ci0tICAgZGVjbGFyZXMgdGhlIHN5c3RlbSBmdW5jdGlvbiwgbmFtZWQgZnVuYywgd2l0aCB0aGUgZ2l2ZW4gcHJvdG90eXBlLAotLSAgIGNvbnNpc3Rpbmcgb2YgcmV0dXJuIHR5cGUsIHBhcmFtZXRlcnMsIGFuZCBhdHRyaWJ1dGVzLgotLSAgIEV4YW1wbGU6Ci0tICAgICBfR0xfRlVOQ0RFQ0xfU1lTIChvcGVuLCBpbnQsIChjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGZsYWdzLCAuLi4pCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9HTF9BUkdfTk9OTlVMTCAoKDEpKSk7Ci0tICovCi0tI2RlZmluZSBfR0xfRlVOQ0RFQ0xfU1lTKGZ1bmMscmV0dHlwZSxwYXJhbWV0ZXJzX2FuZF9hdHRyaWJ1dGVzKSBcCi0tICBfR0xfRVhURVJOX0MgcmV0dHlwZSBmdW5jIHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMKLS0KLS0vKiBfR0xfQ1hYQUxJQVNfUlBMIChmdW5jLCByZXR0eXBlLCBwYXJhbWV0ZXJzKTsKLS0gICBkZWNsYXJlcyBhIEMrKyBhbGlhcyBjYWxsZWQgR05VTElCX05BTUVTUEFDRTo6ZnVuYwotLSAgIHRoYXQgcmVkaXJlY3RzIHRvIHJwbF9mdW5jLCBpZiBHTlVMSUJfTkFNRVNQQUNFIGlzIGRlZmluZWQuCi0tICAgRXhhbXBsZToKLS0gICAgIF9HTF9DWFhBTElBU19SUEwgKG9wZW4sIGludCwgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgZmxhZ3MsIC4uLikpOwotLSAqLwotLSNkZWZpbmUgX0dMX0NYWEFMSUFTX1JQTChmdW5jLHJldHR5cGUscGFyYW1ldGVycykgXAotLSAgX0dMX0NYWEFMSUFTX1JQTF8xIChmdW5jLCBycGxfIyNmdW5jLCByZXR0eXBlLCBwYXJhbWV0ZXJzKQotLSNpZiBkZWZpbmVkIF9fY3BsdXNwbHVzICYmIGRlZmluZWQgR05VTElCX05BTUVTUEFDRQotLSMgZGVmaW5lIF9HTF9DWFhBTElBU19SUExfMShmdW5jLHJwbF9mdW5jLHJldHR5cGUscGFyYW1ldGVycykgXAotLSAgICBuYW1lc3BhY2UgR05VTElCX05BTUVTUEFDRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICAgIHJldHR5cGUgKCpjb25zdCBmdW5jKSBwYXJhbWV0ZXJzID0gOjpycGxfZnVuYzsgICAgICAgICAgXAotLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICBfR0xfRVhURVJOX0MgaW50IF9nbF9jeHhhbGlhc19kdW1teQotLSNlbHNlCi0tIyBkZWZpbmUgX0dMX0NYWEFMSUFTX1JQTF8xKGZ1bmMscnBsX2Z1bmMscmV0dHlwZSxwYXJhbWV0ZXJzKSBcCi0tICAgIF9HTF9FWFRFUk5fQyBpbnQgX2dsX2N4eGFsaWFzX2R1bW15Ci0tI2VuZGlmCi0tCi0tLyogX0dMX0NYWEFMSUFTX1JQTF9DQVNUXzEgKGZ1bmMsIHJwbF9mdW5jLCByZXR0eXBlLCBwYXJhbWV0ZXJzKTsKLS0gICBpcyBsaWtlICBfR0xfQ1hYQUxJQVNfUlBMXzEgKGZ1bmMsIHJwbF9mdW5jLCByZXR0eXBlLCBwYXJhbWV0ZXJzKTsKLS0gICBleGNlcHQgdGhhdCB0aGUgQyBmdW5jdGlvbiBycGxfZnVuYyBtYXkgaGF2ZSBhIHNsaWdodGx5IGRpZmZlcmVudAotLSAgIGRlY2xhcmF0aW9uLiAgQSBjYXN0IGlzIHVzZWQgdG8gc2lsZW5jZSB0aGUgImludmFsaWQgY29udmVyc2lvbiIgZXJyb3IKLS0gICB0aGF0IHdvdWxkIG90aGVyd2lzZSBvY2N1ci4gICovCi0tI2lmIGRlZmluZWQgX19jcGx1c3BsdXMgJiYgZGVmaW5lZCBHTlVMSUJfTkFNRVNQQUNFCi0tIyBkZWZpbmUgX0dMX0NYWEFMSUFTX1JQTF9DQVNUXzEoZnVuYyxycGxfZnVuYyxyZXR0eXBlLHBhcmFtZXRlcnMpIFwKLS0gICAgbmFtZXNwYWNlIEdOVUxJQl9OQU1FU1BBQ0UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgICAgcmV0dHlwZSAoKmNvbnN0IGZ1bmMpIHBhcmFtZXRlcnMgPSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8cmV0dHlwZSgqKXBhcmFtZXRlcnM+KDo6cnBsX2Z1bmMpOyAgICAgICAgXAotLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgIF9HTF9FWFRFUk5fQyBpbnQgX2dsX2N4eGFsaWFzX2R1bW15Ci0tI2Vsc2UKLS0jIGRlZmluZSBfR0xfQ1hYQUxJQVNfUlBMX0NBU1RfMShmdW5jLHJwbF9mdW5jLHJldHR5cGUscGFyYW1ldGVycykgXAotLSAgICBfR0xfRVhURVJOX0MgaW50IF9nbF9jeHhhbGlhc19kdW1teQotLSNlbmRpZgotLQotLS8qIF9HTF9DWFhBTElBU19TWVMgKGZ1bmMsIHJldHR5cGUsIHBhcmFtZXRlcnMpOwotLSAgIGRlY2xhcmVzIGEgQysrIGFsaWFzIGNhbGxlZCBHTlVMSUJfTkFNRVNQQUNFOjpmdW5jCi0tICAgdGhhdCByZWRpcmVjdHMgdG8gdGhlIHN5c3RlbSBwcm92aWRlZCBmdW5jdGlvbiBmdW5jLCBpZiBHTlVMSUJfTkFNRVNQQUNFCi0tICAgaXMgZGVmaW5lZC4KLS0gICBFeGFtcGxlOgotLSAgICAgX0dMX0NYWEFMSUFTX1NZUyAob3BlbiwgaW50LCAoY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBmbGFncywgLi4uKSk7Ci0tICovCi0tI2lmIGRlZmluZWQgX19jcGx1c3BsdXMgJiYgZGVmaW5lZCBHTlVMSUJfTkFNRVNQQUNFCi0tICAvKiBJZiB3ZSB3ZXJlIHRvIHdyaXRlCi0tICAgICAgIHJldHR5cGUgKCpjb25zdCBmdW5jKSBwYXJhbWV0ZXJzID0gOjpmdW5jOwotLSAgICAgbGlrZSBhYm92ZSBpbiBfR0xfQ1hYQUxJQVNfUlBMXzEsIHRoZSBjb21waWxlciBjb3VsZCBvcHRpbWl6ZSBjYWxscwotLSAgICAgYmV0dGVyIChyZW1vdmUgYW4gaW5kaXJlY3Rpb24gdGhyb3VnaCBhICdzdGF0aWMnIHBvaW50ZXIgdmFyaWFibGUpLAotLSAgICAgYnV0IHRoZW4gdGhlIF9HTF9DWFhBTElBU1dBUk4gbWFjcm8gYmVsb3cgd291bGQgY2F1c2UgYSB3YXJuaW5nIG5vdCBvbmx5Ci0tICAgICBmb3IgdXNlcyBvZiA6OmZ1bmMgYnV0IGFsc28gZm9yIHVzZXMgb2YgR05VTElCX05BTUVTUEFDRTo6ZnVuYy4gICovCi0tIyBkZWZpbmUgX0dMX0NYWEFMSUFTX1NZUyhmdW5jLHJldHR5cGUscGFyYW1ldGVycykgXAotLSAgICBuYW1lc3BhY2UgR05VTElCX05BTUVTUEFDRSAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgICAgc3RhdGljIHJldHR5cGUgKCpmdW5jKSBwYXJhbWV0ZXJzID0gOjpmdW5jOyAgXAotLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgX0dMX0VYVEVSTl9DIGludCBfZ2xfY3h4YWxpYXNfZHVtbXkKLS0jZWxzZQotLSMgZGVmaW5lIF9HTF9DWFhBTElBU19TWVMoZnVuYyxyZXR0eXBlLHBhcmFtZXRlcnMpIFwKLS0gICAgX0dMX0VYVEVSTl9DIGludCBfZ2xfY3h4YWxpYXNfZHVtbXkKLS0jZW5kaWYKLS0KLS0vKiBfR0xfQ1hYQUxJQVNfU1lTX0NBU1QgKGZ1bmMsIHJldHR5cGUsIHBhcmFtZXRlcnMpOwotLSAgIGlzIGxpa2UgIF9HTF9DWFhBTElBU19TWVMgKGZ1bmMsIHJldHR5cGUsIHBhcmFtZXRlcnMpOwotLSAgIGV4Y2VwdCB0aGF0IHRoZSBDIGZ1bmN0aW9uIGZ1bmMgbWF5IGhhdmUgYSBzbGlnaHRseSBkaWZmZXJlbnQgZGVjbGFyYXRpb24uCi0tICAgQSBjYXN0IGlzIHVzZWQgdG8gc2lsZW5jZSB0aGUgImludmFsaWQgY29udmVyc2lvbiIgZXJyb3IgdGhhdCB3b3VsZAotLSAgIG90aGVyd2lzZSBvY2N1ci4gICovCi0tI2lmIGRlZmluZWQgX19jcGx1c3BsdXMgJiYgZGVmaW5lZCBHTlVMSUJfTkFNRVNQQUNFCi0tIyBkZWZpbmUgX0dMX0NYWEFMSUFTX1NZU19DQVNUKGZ1bmMscmV0dHlwZSxwYXJhbWV0ZXJzKSBcCi0tICAgIG5hbWVzcGFjZSBHTlVMSUJfTkFNRVNQQUNFICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgICAgc3RhdGljIHJldHR5cGUgKCpmdW5jKSBwYXJhbWV0ZXJzID0gICAgICAgICAgICAgICBcCi0tICAgICAgICByZWludGVycHJldF9jYXN0PHJldHR5cGUoKilwYXJhbWV0ZXJzPig6OmZ1bmMpOyBcCi0tICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgIF9HTF9FWFRFUk5fQyBpbnQgX2dsX2N4eGFsaWFzX2R1bW15Ci0tI2Vsc2UKLS0jIGRlZmluZSBfR0xfQ1hYQUxJQVNfU1lTX0NBU1QoZnVuYyxyZXR0eXBlLHBhcmFtZXRlcnMpIFwKLS0gICAgX0dMX0VYVEVSTl9DIGludCBfZ2xfY3h4YWxpYXNfZHVtbXkKLS0jZW5kaWYKLS0KLS0vKiBfR0xfQ1hYQUxJQVNfU1lTX0NBU1QyIChmdW5jLCByZXR0eXBlLCBwYXJhbWV0ZXJzLCByZXR0eXBlMiwgcGFyYW1ldGVyczIpOwotLSAgIGlzIGxpa2UgIF9HTF9DWFhBTElBU19TWVMgKGZ1bmMsIHJldHR5cGUsIHBhcmFtZXRlcnMpOwotLSAgIGV4Y2VwdCB0aGF0IHRoZSBDIGZ1bmN0aW9uIGlzIHBpY2tlZCBhbW9uZyBhIHNldCBvZiBvdmVybG9hZGVkIGZ1bmN0aW9ucywKLS0gICBuYW1lbHkgdGhlIG9uZSB3aXRoIHJldHR5cGUyIGFuZCBwYXJhbWV0ZXJzMi4gIFR3byBjb25zZWN1dGl2ZSBjYXN0cwotLSAgIGFyZSB1c2VkIHRvIHNpbGVuY2UgdGhlICJjYW5ub3QgZmluZCBhIG1hdGNoIiBhbmQgImludmFsaWQgY29udmVyc2lvbiIKLS0gICBlcnJvcnMgdGhhdCB3b3VsZCBvdGhlcndpc2Ugb2NjdXIuICAqLwotLSNpZiBkZWZpbmVkIF9fY3BsdXNwbHVzICYmIGRlZmluZWQgR05VTElCX05BTUVTUEFDRQotLSAgLyogVGhlIG91dGVyIGNhc3QgbXVzdCBiZSBhIHJlaW50ZXJwcmV0X2Nhc3QuCi0tICAgICBUaGUgaW5uZXIgY2FzdDogV2hlbiB0aGUgZnVuY3Rpb24gaXMgZGVmaW5lZCBhcyBhIHNldCBvZiBvdmVybG9hZGVkCi0tICAgICBmdW5jdGlvbnMsIGl0IHdvcmtzIGFzIGEgc3RhdGljX2Nhc3Q8PiwgY2hvb3NpbmcgdGhlIGRlc2lnbmF0ZWQgdmFyaWFudC4KLS0gICAgIFdoZW4gdGhlIGZ1bmN0aW9uIGlzIGRlZmluZWQgYXMgYSBzaW5nbGUgdmFyaWFudCwgaXQgd29ya3MgYXMgYQotLSAgICAgcmVpbnRlcnByZXRfY2FzdDw+LiBUaGUgcGFyZW50aGVzaXplZCBjYXN0IHN5bnRheCB3b3JrcyBib3RoIHdheXMuICAqLwotLSMgZGVmaW5lIF9HTF9DWFhBTElBU19TWVNfQ0FTVDIoZnVuYyxyZXR0eXBlLHBhcmFtZXRlcnMscmV0dHlwZTIscGFyYW1ldGVyczIpIFwKLS0gICAgbmFtZXNwYWNlIEdOVUxJQl9OQU1FU1BBQ0UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICAgIHN0YXRpYyByZXR0eXBlICgqZnVuYykgcGFyYW1ldGVycyA9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8cmV0dHlwZSgqKXBhcmFtZXRlcnM+KCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgICAgICAgIChyZXR0eXBlMigqKXBhcmFtZXRlcnMyKSg6OmZ1bmMpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgX0dMX0VYVEVSTl9DIGludCBfZ2xfY3h4YWxpYXNfZHVtbXkKLS0jZWxzZQotLSMgZGVmaW5lIF9HTF9DWFhBTElBU19TWVNfQ0FTVDIoZnVuYyxyZXR0eXBlLHBhcmFtZXRlcnMscmV0dHlwZTIscGFyYW1ldGVyczIpIFwKLS0gICAgX0dMX0VYVEVSTl9DIGludCBfZ2xfY3h4YWxpYXNfZHVtbXkKLS0jZW5kaWYKLS0KLS0vKiBfR0xfQ1hYQUxJQVNXQVJOIChmdW5jKTsKLS0gICBjYXVzZXMgYSB3YXJuaW5nIHRvIGJlIGVtaXR0ZWQgd2hlbiA6OmZ1bmMgaXMgdXNlZCBidXQgbm90IHdoZW4KLS0gICBHTlVMSUJfTkFNRVNQQUNFOjpmdW5jIGlzIHVzZWQuICBmdW5jIG11c3QgYmUgZGVmaW5lZCB3aXRob3V0IG92ZXJsb2FkZWQKLS0gICB2YXJpYW50cy4gICovCi0tI2lmIGRlZmluZWQgX19jcGx1c3BsdXMgJiYgZGVmaW5lZCBHTlVMSUJfTkFNRVNQQUNFCi0tIyBkZWZpbmUgX0dMX0NYWEFMSUFTV0FSTihmdW5jKSBcCi0tICAgX0dMX0NYWEFMSUFTV0FSTl8xIChmdW5jLCBHTlVMSUJfTkFNRVNQQUNFKQotLSMgZGVmaW5lIF9HTF9DWFhBTElBU1dBUk5fMShmdW5jLG5hbWVzcGFjZSkgXAotLSAgIF9HTF9DWFhBTElBU1dBUk5fMiAoZnVuYywgbmFtZXNwYWNlKQotLS8qIFRvIHdvcmsgYXJvdW5kIEdDQyBidWcgPGh0dHA6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NDM4ODE+LAotLSAgIHdlIGVuYWJsZSB0aGUgd2FybmluZyBvbmx5IHdoZW4gbm90IG9wdGltaXppbmcuICAqLwotLSMgaWYgIV9fT1BUSU1JWkVfXwotLSMgIGRlZmluZSBfR0xfQ1hYQUxJQVNXQVJOXzIoZnVuYyxuYW1lc3BhY2UpIFwKLS0gICAgX0dMX1dBUk5fT05fVVNFIChmdW5jLCBcCi0tICAgICAgICAgICAgICAgICAgICAgIlRoZSBzeW1ib2wgOjoiICNmdW5jICIgcmVmZXJzIHRvIHRoZSBzeXN0ZW0gZnVuY3Rpb24uICIgXAotLSAgICAgICAgICAgICAgICAgICAgICJVc2UgIiAjbmFtZXNwYWNlICI6OiIgI2Z1bmMgIiBpbnN0ZWFkLiIpCi0tIyBlbGlmIF9fR05VQ19fID49IDMgJiYgR05VTElCX1NUUklDVF9DSEVDS0lORwotLSMgIGRlZmluZSBfR0xfQ1hYQUxJQVNXQVJOXzIoZnVuYyxuYW1lc3BhY2UpIFwKLS0gICAgIGV4dGVybiBfX3R5cGVvZl9fIChmdW5jKSBmdW5jCi0tIyBlbHNlCi0tIyAgZGVmaW5lIF9HTF9DWFhBTElBU1dBUk5fMihmdW5jLG5hbWVzcGFjZSkgXAotLSAgICAgX0dMX0VYVEVSTl9DIGludCBfZ2xfY3h4YWxpYXNfZHVtbXkKLS0jIGVuZGlmCi0tI2Vsc2UKLS0jIGRlZmluZSBfR0xfQ1hYQUxJQVNXQVJOKGZ1bmMpIFwKLS0gICAgX0dMX0VYVEVSTl9DIGludCBfZ2xfY3h4YWxpYXNfZHVtbXkKLS0jZW5kaWYKLS0KLS0vKiBfR0xfQ1hYQUxJQVNXQVJOMSAoZnVuYywgcmV0dHlwZSwgcGFyYW1ldGVyc19hbmRfYXR0cmlidXRlcyk7Ci0tICAgY2F1c2VzIGEgd2FybmluZyB0byBiZSBlbWl0dGVkIHdoZW4gdGhlIGdpdmVuIG92ZXJsb2FkZWQgdmFyaWFudCBvZiA6OmZ1bmMKLS0gICBpcyB1c2VkIGJ1dCBub3Qgd2hlbiBHTlVMSUJfTkFNRVNQQUNFOjpmdW5jIGlzIHVzZWQuICAqLwotLSNpZiBkZWZpbmVkIF9fY3BsdXNwbHVzICYmIGRlZmluZWQgR05VTElCX05BTUVTUEFDRQotLSMgZGVmaW5lIF9HTF9DWFhBTElBU1dBUk4xKGZ1bmMscmV0dHlwZSxwYXJhbWV0ZXJzX2FuZF9hdHRyaWJ1dGVzKSBcCi0tICAgX0dMX0NYWEFMSUFTV0FSTjFfMSAoZnVuYywgcmV0dHlwZSwgcGFyYW1ldGVyc19hbmRfYXR0cmlidXRlcywgXAotLSAgICAgICAgICAgICAgICAgICAgICAgIEdOVUxJQl9OQU1FU1BBQ0UpCi0tIyBkZWZpbmUgX0dMX0NYWEFMSUFTV0FSTjFfMShmdW5jLHJldHR5cGUscGFyYW1ldGVyc19hbmRfYXR0cmlidXRlcyxuYW1lc3BhY2UpIFwKLS0gICBfR0xfQ1hYQUxJQVNXQVJOMV8yIChmdW5jLCByZXR0eXBlLCBwYXJhbWV0ZXJzX2FuZF9hdHRyaWJ1dGVzLCBuYW1lc3BhY2UpCi0tLyogVG8gd29yayBhcm91bmQgR0NDIGJ1ZyA8aHR0cDovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD00Mzg4MT4sCi0tICAgd2UgZW5hYmxlIHRoZSB3YXJuaW5nIG9ubHkgd2hlbiBub3Qgb3B0aW1pemluZy4gICovCi0tIyBpZiAhX19PUFRJTUlaRV9fCi0tIyAgZGVmaW5lIF9HTF9DWFhBTElBU1dBUk4xXzIoZnVuYyxyZXR0eXBlLHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMsbmFtZXNwYWNlKSBcCi0tICAgIF9HTF9XQVJOX09OX1VTRV9DWFggKGZ1bmMsIHJldHR5cGUsIHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMsIFwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBzeW1ib2wgOjoiICNmdW5jICIgcmVmZXJzIHRvIHRoZSBzeXN0ZW0gZnVuY3Rpb24uICIgXAotLSAgICAgICAgICAgICAgICAgICAgICAgICAiVXNlICIgI25hbWVzcGFjZSAiOjoiICNmdW5jICIgaW5zdGVhZC4iKQotLSMgZWxpZiBfX0dOVUNfXyA+PSAzICYmIEdOVUxJQl9TVFJJQ1RfQ0hFQ0tJTkcKLS0jICBkZWZpbmUgX0dMX0NYWEFMSUFTV0FSTjFfMihmdW5jLHJldHR5cGUscGFyYW1ldGVyc19hbmRfYXR0cmlidXRlcyxuYW1lc3BhY2UpIFwKLS0gICAgIGV4dGVybiBfX3R5cGVvZl9fIChmdW5jKSBmdW5jCi0tIyBlbHNlCi0tIyAgZGVmaW5lIF9HTF9DWFhBTElBU1dBUk4xXzIoZnVuYyxyZXR0eXBlLHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMsbmFtZXNwYWNlKSBcCi0tICAgICBfR0xfRVhURVJOX0MgaW50IF9nbF9jeHhhbGlhc19kdW1teQotLSMgZW5kaWYKLS0jZWxzZQotLSMgZGVmaW5lIF9HTF9DWFhBTElBU1dBUk4xKGZ1bmMscmV0dHlwZSxwYXJhbWV0ZXJzX2FuZF9hdHRyaWJ1dGVzKSBcCi0tICAgIF9HTF9FWFRFUk5fQyBpbnQgX2dsX2N4eGFsaWFzX2R1bW15Ci0tI2VuZGlmCi0tCi0tI2VuZGlmIC8qIF9HTF9DWFhERUZTX0ggKi8KLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9idWlsZC1hdXgvc25pcHBldC9fTm9yZXR1cm4uaCBsaWJpY29udi0xLjE0L2J1aWxkLWF1eC9zbmlwcGV0L19Ob3JldHVybi5oCi0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL2J1aWxkLWF1eC9zbmlwcGV0L19Ob3JldHVybi5oCTIwMTEtMDgtMDcgMDY6MjI6MDcuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9idWlsZC1hdXgvc25pcHBldC9fTm9yZXR1cm4uaAkxOTY5LTEyLTMxIDE2OjAwOjAwLjAwMDAwMDAwMCAtMDgwMAotQEAgLTEsMTAgKzAsMCBAQAotLSNpZm5kZWYgX05vcmV0dXJuCi0tIyBpZiAoMyA8PSBfX0dOVUNfXyB8fCAoX19HTlVDX18gPT0gMiAmJiA4IDw9IF9fR05VQ19NSU5PUl9fKSBcCi0tICAgICAgfHwgMHg1MTEwIDw9IF9fU1VOUFJPX0MpCi0tIyAgZGVmaW5lIF9Ob3JldHVybiBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSkKLS0jIGVsaWYgMTIwMCA8PSBfTVNDX1ZFUgotLSMgIGRlZmluZSBfTm9yZXR1cm4gX19kZWNsc3BlYyAobm9yZXR1cm4pCi0tIyBlbHNlCi0tIyAgZGVmaW5lIF9Ob3JldHVybgotLSMgZW5kaWYKLS0jZW5kaWYKLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9idWlsZC1hdXgvc25pcHBldC93YXJuLW9uLXVzZS5oIGxpYmljb252LTEuMTQvYnVpbGQtYXV4L3NuaXBwZXQvd2Fybi1vbi11c2UuaAotLS0tIGxpYmljb252LTEuMTQub3JnLy9idWlsZC1hdXgvc25pcHBldC93YXJuLW9uLXVzZS5oCTIwMTEtMDgtMDcgMDY6MjI6MDcuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9idWlsZC1hdXgvc25pcHBldC93YXJuLW9uLXVzZS5oCTE5NjktMTItMzEgMTY6MDA6MDAuMDAwMDAwMDAwIC0wODAwCi1AQCAtMSwxMDkgKzAsMCBAQAotLS8qIEEgQyBtYWNybyBmb3IgZW1pdHRpbmcgd2FybmluZ3MgaWYgYSBmdW5jdGlvbiBpcyB1c2VkLgotLSAgIENvcHlyaWdodCAoQykgMjAxMC0yMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotLQotLSAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0tICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLS0gICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotLSAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0tCi0tICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0tICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotLSAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLS0KLS0gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLS0KLS0vKiBfR0xfV0FSTl9PTl9VU0UgKGZ1bmN0aW9uLCAibGl0ZXJhbCBzdHJpbmciKSBpc3N1ZXMgYSBkZWNsYXJhdGlvbgotLSAgIGZvciBGVU5DVElPTiB3aGljaCB3aWxsIHRoZW4gdHJpZ2dlciBhIGNvbXBpbGVyIHdhcm5pbmcgY29udGFpbmluZwotLSAgIHRoZSB0ZXh0IG9mICJsaXRlcmFsIHN0cmluZyIgYW55d2hlcmUgdGhhdCBmdW5jdGlvbiBpcyBjYWxsZWQsIGlmCi0tICAgc3VwcG9ydGVkIGJ5IHRoZSBjb21waWxlci4gIElmIHRoZSBjb21waWxlciBkb2VzIG5vdCBzdXBwb3J0IHRoaXMKLS0gICBmZWF0dXJlLCB0aGUgbWFjcm8gZXhwYW5kcyB0byBhbiB1bnVzZWQgZXh0ZXJuIGRlY2xhcmF0aW9uLgotLQotLSAgIFRoaXMgbWFjcm8gaXMgdXNlZnVsIGZvciBtYXJraW5nIGEgZnVuY3Rpb24gYXMgYSBwb3RlbnRpYWwKLS0gICBwb3J0YWJpbGl0eSB0cmFwLCB3aXRoIHRoZSBpbnRlbnQgdGhhdCAibGl0ZXJhbCBzdHJpbmciIGluY2x1ZGUKLS0gICBpbnN0cnVjdGlvbnMgb24gdGhlIHJlcGxhY2VtZW50IGZ1bmN0aW9uIHRoYXQgc2hvdWxkIGJlIHVzZWQKLS0gICBpbnN0ZWFkLiAgSG93ZXZlciwgb25lIG9mIHRoZSByZWFzb25zIHRoYXQgYSBmdW5jdGlvbiBpcyBhCi0tICAgcG9ydGFiaWxpdHkgdHJhcCBpcyBpZiBpdCBoYXMgdGhlIHdyb25nIHNpZ25hdHVyZS4gIERlY2xhcmluZwotLSAgIEZVTkNUSU9OIHdpdGggYSBkaWZmZXJlbnQgc2lnbmF0dXJlIGluIEMgaXMgYSBjb21waWxhdGlvbiBlcnJvciwgc28KLS0gICB0aGlzIG1hY3JvIG11c3QgdXNlIHRoZSBzYW1lIHR5cGUgYXMgYW55IGV4aXN0aW5nIGRlY2xhcmF0aW9uIHNvCi0tICAgdGhhdCBwcm9ncmFtcyB0aGF0IGF2b2lkIHRoZSBwcm9ibGVtYXRpYyBGVU5DVElPTiBkbyBub3QgZmFpbCB0bwotLSAgIGNvbXBpbGUgbWVyZWx5IGJlY2F1c2UgdGhleSBpbmNsdWRlZCBhIGhlYWRlciB0aGF0IHBvaXNvbmVkIHRoZQotLSAgIGZ1bmN0aW9uLiAgQnV0IHRoaXMgaW1wbGllcyB0aGF0IF9HTF9XQVJOX09OX1VTRSBpcyBvbmx5IHNhZmUgdG8KLS0gICB1c2UgaWYgRlVOQ1RJT04gaXMga25vd24gdG8gYWxyZWFkeSBoYXZlIGEgZGVjbGFyYXRpb24uICBVc2Ugb2YKLS0gICB0aGlzIG1hY3JvIGltcGxpZXMgdGhhdCB0aGVyZSBtdXN0IG5vdCBiZSBhbnkgb3RoZXIgbWFjcm8gaGlkaW5nCi0tICAgdGhlIGRlY2xhcmF0aW9uIG9mIEZVTkNUSU9OOyBidXQgdW5kZWZpbmluZyBGVU5DVElPTiBmaXJzdCBpcyBwYXJ0Ci0tICAgb2YgdGhlIHBvaXNvbmluZyBwcm9jZXNzIGFueXdheSAoYWx0aG91Z2ggZm9yIHN5bWJvbHMgdGhhdCBhcmUKLS0gICBwcm92aWRlZCBvbmx5IHZpYSBhIG1hY3JvLCB0aGUgcmVzdWx0IGlzIGEgY29tcGlsYXRpb24gZXJyb3IgcmF0aGVyCi0tICAgdGhhbiBhIHdhcm5pbmcgY29udGFpbmluZyAibGl0ZXJhbCBzdHJpbmciKS4gIEFsc28gbm90ZSB0aGF0IGluCi0tICAgQysrLCBpdCBpcyBvbmx5IHNhZmUgdG8gdXNlIGlmIEZVTkNUSU9OIGhhcyBubyBvdmVybG9hZHMuCi0tCi0tICAgRm9yIGFuIGV4YW1wbGUsIGl0IGlzIHBvc3NpYmxlIHRvIHBvaXNvbiAnZ2V0bGluZScgYnk6Ci0tICAgLSBhZGRpbmcgYSBjYWxsIHRvIGdsX1dBUk5fT05fVVNFX1BSRVBBUkUoW1sjaW5jbHVkZSA8c3RkaW8uaD5dXSwKLS0gICAgIFtnZXRsaW5lXSkgaW4gY29uZmlndXJlLmFjLCB3aGljaCBwb3RlbnRpYWxseSBkZWZpbmVzCi0tICAgICBIQVZFX1JBV19ERUNMX0dFVExJTkUKLS0gICAtIGFkZGluZyB0aGlzIGNvZGUgdG8gYSBoZWFkZXIgdGhhdCB3cmFwcyB0aGUgc3lzdGVtIDxzdGRpby5oPjoKLS0gICAgICN1bmRlZiBnZXRsaW5lCi0tICAgICAjaWYgSEFWRV9SQVdfREVDTF9HRVRMSU5FCi0tICAgICBfR0xfV0FSTl9PTl9VU0UgKGdldGxpbmUsICJnZXRsaW5lIGlzIHJlcXVpcmVkIGJ5IFBPU0lYIDIwMDgsIGJ1dCIKLS0gICAgICAgIm5vdCB1bml2ZXJzYWxseSBwcmVzZW50OyB1c2UgdGhlIGdudWxpYiBtb2R1bGUgZ2V0bGluZSIpOwotLSAgICAgI2VuZGlmCi0tCi0tICAgSXQgaXMgbm90IHBvc3NpYmxlIHRvIGRpcmVjdGx5IHBvaXNvbiBnbG9iYWwgdmFyaWFibGVzLiAgQnV0IGl0IGlzCi0tICAgcG9zc2libGUgdG8gd3JpdGUgYSB3cmFwcGVyIGFjY2Vzc29yIGZ1bmN0aW9uLCBhbmQgcG9pc29uIHRoYXQKLS0gICAobGVzcyBjb21tb24gdXNhZ2UsIGxpa2UgJmVudmlyb24sIHdpbGwgY2F1c2UgYSBjb21waWxhdGlvbiBlcnJvcgotLSAgIHJhdGhlciB0aGFuIGlzc3VlIHRoZSBuaWNlIHdhcm5pbmcsIGJ1dCB0aGUgZW5kIHJlc3VsdCBvZiBpbmZvcm1pbmcKLS0gICB0aGUgZGV2ZWxvcGVyIGFib3V0IHRoZWlyIHBvcnRhYmlsaXR5IHByb2JsZW0gaXMgc3RpbGwgYWNoaWV2ZWQpOgotLSAgICNpZiBIQVZFX1JBV19ERUNMX0VOVklST04KLS0gICBzdGF0aWMgaW5saW5lIGNoYXIgKioqcnBsX2Vudmlyb24gKHZvaWQpIHsgcmV0dXJuICZlbnZpcm9uOyB9Ci0tICAgX0dMX1dBUk5fT05fVVNFIChycGxfZW52aXJvbiwgImVudmlyb24gaXMgbm90IGFsd2F5cyBwcm9wZXJseSBkZWNsYXJlZCIpOwotLSAgICMgdW5kZWYgZW52aXJvbgotLSAgICMgZGVmaW5lIGVudmlyb24gKCpycGxfZW52aXJvbiAoKSkKLS0gICAjZW5kaWYKLS0gICAqLwotLSNpZm5kZWYgX0dMX1dBUk5fT05fVVNFCi0tCi0tIyBpZiA0IDwgX19HTlVDX18gfHwgKF9fR05VQ19fID09IDQgJiYgMyA8PSBfX0dOVUNfTUlOT1JfXykKLS0vKiBBIGNvbXBpbGVyIGF0dHJpYnV0ZSBpcyBhdmFpbGFibGUgaW4gZ2NjIHZlcnNpb25zIDQuMy4wIGFuZCBsYXRlci4gICovCi0tIyAgZGVmaW5lIF9HTF9XQVJOX09OX1VTRShmdW5jdGlvbiwgbWVzc2FnZSkgXAotLWV4dGVybiBfX3R5cGVvZl9fIChmdW5jdGlvbikgZnVuY3Rpb24gX19hdHRyaWJ1dGVfXyAoKF9fd2FybmluZ19fIChtZXNzYWdlKSkpCi0tIyBlbGlmIF9fR05VQ19fID49IDMgJiYgR05VTElCX1NUUklDVF9DSEVDS0lORwotLS8qIFZlcmlmeSB0aGUgZXhpc3RlbmNlIG9mIHRoZSBmdW5jdGlvbi4gICovCi0tIyAgZGVmaW5lIF9HTF9XQVJOX09OX1VTRShmdW5jdGlvbiwgbWVzc2FnZSkgXAotLWV4dGVybiBfX3R5cGVvZl9fIChmdW5jdGlvbikgZnVuY3Rpb24KLS0jIGVsc2UgLyogVW5zdXBwb3J0ZWQuICAqLwotLSMgIGRlZmluZSBfR0xfV0FSTl9PTl9VU0UoZnVuY3Rpb24sIG1lc3NhZ2UpIFwKLS1fR0xfV0FSTl9FWFRFUk5fQyBpbnQgX2dsX3dhcm5fb25fdXNlCi0tIyBlbmRpZgotLSNlbmRpZgotLQotLS8qIF9HTF9XQVJOX09OX1VTRV9DWFggKGZ1bmN0aW9uLCByZXR0eXBlLCBwYXJhbWV0ZXJzX2FuZF9hdHRyaWJ1dGVzLCAic3RyaW5nIikKLS0gICBpcyBsaWtlIF9HTF9XQVJOX09OX1VTRSAoZnVuY3Rpb24sICJzdHJpbmciKSwgZXhjZXB0IHRoYXQgdGhlIGZ1bmN0aW9uIGlzCi0tICAgZGVjbGFyZWQgd2l0aCB0aGUgZ2l2ZW4gcHJvdG90eXBlLCBjb25zaXN0aW5nIG9mIHJldHVybiB0eXBlLCBwYXJhbWV0ZXJzLAotLSAgIGFuZCBhdHRyaWJ1dGVzLgotLSAgIFRoaXMgdmFyaWFudCBpcyB1c2VmdWwgZm9yIG92ZXJsb2FkZWQgZnVuY3Rpb25zIGluIEMrKy4gX0dMX1dBUk5fT05fVVNFIGRvZXMKLS0gICBub3Qgd29yayBpbiB0aGlzIGNhc2UuICAqLwotLSNpZm5kZWYgX0dMX1dBUk5fT05fVVNFX0NYWAotLSMgaWYgNCA8IF9fR05VQ19fIHx8IChfX0dOVUNfXyA9PSA0ICYmIDMgPD0gX19HTlVDX01JTk9SX18pCi0tIyAgZGVmaW5lIF9HTF9XQVJOX09OX1VTRV9DWFgoZnVuY3Rpb24scmV0dHlwZSxwYXJhbWV0ZXJzX2FuZF9hdHRyaWJ1dGVzLG1zZykgXAotLWV4dGVybiByZXR0eXBlIGZ1bmN0aW9uIHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMgXAotLSAgICAgX19hdHRyaWJ1dGVfXyAoKF9fd2FybmluZ19fIChtc2cpKSkKLS0jIGVsaWYgX19HTlVDX18gPj0gMyAmJiBHTlVMSUJfU1RSSUNUX0NIRUNLSU5HCi0tLyogVmVyaWZ5IHRoZSBleGlzdGVuY2Ugb2YgdGhlIGZ1bmN0aW9uLiAgKi8KLS0jICBkZWZpbmUgX0dMX1dBUk5fT05fVVNFX0NYWChmdW5jdGlvbixyZXR0eXBlLHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMsbXNnKSBcCi0tZXh0ZXJuIHJldHR5cGUgZnVuY3Rpb24gcGFyYW1ldGVyc19hbmRfYXR0cmlidXRlcwotLSMgZWxzZSAvKiBVbnN1cHBvcnRlZC4gICovCi0tIyAgZGVmaW5lIF9HTF9XQVJOX09OX1VTRV9DWFgoZnVuY3Rpb24scmV0dHlwZSxwYXJhbWV0ZXJzX2FuZF9hdHRyaWJ1dGVzLG1zZykgXAotLV9HTF9XQVJOX0VYVEVSTl9DIGludCBfZ2xfd2Fybl9vbl91c2UKLS0jIGVuZGlmCi0tI2VuZGlmCi0tCi0tLyogX0dMX1dBUk5fRVhURVJOX0MgZGVjbGFyYXRpb247Ci0tICAgcGVyZm9ybXMgdGhlIGRlY2xhcmF0aW9uIHdpdGggQyBsaW5rYWdlLiAgKi8KLS0jaWZuZGVmIF9HTF9XQVJOX0VYVEVSTl9DCi0tIyBpZiBkZWZpbmVkIF9fY3BsdXNwbHVzCi0tIyAgZGVmaW5lIF9HTF9XQVJOX0VYVEVSTl9DIGV4dGVybiAiQyIKLS0jIGVsc2UKLS0jICBkZWZpbmUgX0dMX1dBUk5fRVhURVJOX0MgZXh0ZXJuCi0tIyBlbmRpZgotLSNlbmRpZgotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL2J1aWxkLWF1eC93YXJuLW9uLXVzZS5oIGxpYmljb252LTEuMTQvYnVpbGQtYXV4L3dhcm4tb24tdXNlLmgKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vYnVpbGQtYXV4L3dhcm4tb24tdXNlLmgJMTk2OS0xMi0zMSAxNjowMDowMC4wMDAwMDAwMDAgLTA4MDAKLSsrKyBsaWJpY29udi0xLjE0L2J1aWxkLWF1eC93YXJuLW9uLXVzZS5oCTIwMTItMDEtMDggMDI6MDc6MzkuOTUwNDg0NDM5IC0wODAwCi1AQCAtMCwwICsxLDEwOSBAQAotKy8qIEEgQyBtYWNybyBmb3IgZW1pdHRpbmcgd2FybmluZ3MgaWYgYSBmdW5jdGlvbiBpcyB1c2VkLgotKyAgIENvcHlyaWdodCAoQykgMjAxMC0yMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsvKiBfR0xfV0FSTl9PTl9VU0UgKGZ1bmN0aW9uLCAibGl0ZXJhbCBzdHJpbmciKSBpc3N1ZXMgYSBkZWNsYXJhdGlvbgotKyAgIGZvciBGVU5DVElPTiB3aGljaCB3aWxsIHRoZW4gdHJpZ2dlciBhIGNvbXBpbGVyIHdhcm5pbmcgY29udGFpbmluZwotKyAgIHRoZSB0ZXh0IG9mICJsaXRlcmFsIHN0cmluZyIgYW55d2hlcmUgdGhhdCBmdW5jdGlvbiBpcyBjYWxsZWQsIGlmCi0rICAgc3VwcG9ydGVkIGJ5IHRoZSBjb21waWxlci4gIElmIHRoZSBjb21waWxlciBkb2VzIG5vdCBzdXBwb3J0IHRoaXMKLSsgICBmZWF0dXJlLCB0aGUgbWFjcm8gZXhwYW5kcyB0byBhbiB1bnVzZWQgZXh0ZXJuIGRlY2xhcmF0aW9uLgotKwotKyAgIFRoaXMgbWFjcm8gaXMgdXNlZnVsIGZvciBtYXJraW5nIGEgZnVuY3Rpb24gYXMgYSBwb3RlbnRpYWwKLSsgICBwb3J0YWJpbGl0eSB0cmFwLCB3aXRoIHRoZSBpbnRlbnQgdGhhdCAibGl0ZXJhbCBzdHJpbmciIGluY2x1ZGUKLSsgICBpbnN0cnVjdGlvbnMgb24gdGhlIHJlcGxhY2VtZW50IGZ1bmN0aW9uIHRoYXQgc2hvdWxkIGJlIHVzZWQKLSsgICBpbnN0ZWFkLiAgSG93ZXZlciwgb25lIG9mIHRoZSByZWFzb25zIHRoYXQgYSBmdW5jdGlvbiBpcyBhCi0rICAgcG9ydGFiaWxpdHkgdHJhcCBpcyBpZiBpdCBoYXMgdGhlIHdyb25nIHNpZ25hdHVyZS4gIERlY2xhcmluZwotKyAgIEZVTkNUSU9OIHdpdGggYSBkaWZmZXJlbnQgc2lnbmF0dXJlIGluIEMgaXMgYSBjb21waWxhdGlvbiBlcnJvciwgc28KLSsgICB0aGlzIG1hY3JvIG11c3QgdXNlIHRoZSBzYW1lIHR5cGUgYXMgYW55IGV4aXN0aW5nIGRlY2xhcmF0aW9uIHNvCi0rICAgdGhhdCBwcm9ncmFtcyB0aGF0IGF2b2lkIHRoZSBwcm9ibGVtYXRpYyBGVU5DVElPTiBkbyBub3QgZmFpbCB0bwotKyAgIGNvbXBpbGUgbWVyZWx5IGJlY2F1c2UgdGhleSBpbmNsdWRlZCBhIGhlYWRlciB0aGF0IHBvaXNvbmVkIHRoZQotKyAgIGZ1bmN0aW9uLiAgQnV0IHRoaXMgaW1wbGllcyB0aGF0IF9HTF9XQVJOX09OX1VTRSBpcyBvbmx5IHNhZmUgdG8KLSsgICB1c2UgaWYgRlVOQ1RJT04gaXMga25vd24gdG8gYWxyZWFkeSBoYXZlIGEgZGVjbGFyYXRpb24uICBVc2Ugb2YKLSsgICB0aGlzIG1hY3JvIGltcGxpZXMgdGhhdCB0aGVyZSBtdXN0IG5vdCBiZSBhbnkgb3RoZXIgbWFjcm8gaGlkaW5nCi0rICAgdGhlIGRlY2xhcmF0aW9uIG9mIEZVTkNUSU9OOyBidXQgdW5kZWZpbmluZyBGVU5DVElPTiBmaXJzdCBpcyBwYXJ0Ci0rICAgb2YgdGhlIHBvaXNvbmluZyBwcm9jZXNzIGFueXdheSAoYWx0aG91Z2ggZm9yIHN5bWJvbHMgdGhhdCBhcmUKLSsgICBwcm92aWRlZCBvbmx5IHZpYSBhIG1hY3JvLCB0aGUgcmVzdWx0IGlzIGEgY29tcGlsYXRpb24gZXJyb3IgcmF0aGVyCi0rICAgdGhhbiBhIHdhcm5pbmcgY29udGFpbmluZyAibGl0ZXJhbCBzdHJpbmciKS4gIEFsc28gbm90ZSB0aGF0IGluCi0rICAgQysrLCBpdCBpcyBvbmx5IHNhZmUgdG8gdXNlIGlmIEZVTkNUSU9OIGhhcyBubyBvdmVybG9hZHMuCi0rCi0rICAgRm9yIGFuIGV4YW1wbGUsIGl0IGlzIHBvc3NpYmxlIHRvIHBvaXNvbiAnZ2V0bGluZScgYnk6Ci0rICAgLSBhZGRpbmcgYSBjYWxsIHRvIGdsX1dBUk5fT05fVVNFX1BSRVBBUkUoW1sjaW5jbHVkZSA8c3RkaW8uaD5dXSwKLSsgICAgIFtnZXRsaW5lXSkgaW4gY29uZmlndXJlLmFjLCB3aGljaCBwb3RlbnRpYWxseSBkZWZpbmVzCi0rICAgICBIQVZFX1JBV19ERUNMX0dFVExJTkUKLSsgICAtIGFkZGluZyB0aGlzIGNvZGUgdG8gYSBoZWFkZXIgdGhhdCB3cmFwcyB0aGUgc3lzdGVtIDxzdGRpby5oPjoKLSsgICAgICN1bmRlZiBnZXRsaW5lCi0rICAgICAjaWYgSEFWRV9SQVdfREVDTF9HRVRMSU5FCi0rICAgICBfR0xfV0FSTl9PTl9VU0UgKGdldGxpbmUsICJnZXRsaW5lIGlzIHJlcXVpcmVkIGJ5IFBPU0lYIDIwMDgsIGJ1dCIKLSsgICAgICAgIm5vdCB1bml2ZXJzYWxseSBwcmVzZW50OyB1c2UgdGhlIGdudWxpYiBtb2R1bGUgZ2V0bGluZSIpOwotKyAgICAgI2VuZGlmCi0rCi0rICAgSXQgaXMgbm90IHBvc3NpYmxlIHRvIGRpcmVjdGx5IHBvaXNvbiBnbG9iYWwgdmFyaWFibGVzLiAgQnV0IGl0IGlzCi0rICAgcG9zc2libGUgdG8gd3JpdGUgYSB3cmFwcGVyIGFjY2Vzc29yIGZ1bmN0aW9uLCBhbmQgcG9pc29uIHRoYXQKLSsgICAobGVzcyBjb21tb24gdXNhZ2UsIGxpa2UgJmVudmlyb24sIHdpbGwgY2F1c2UgYSBjb21waWxhdGlvbiBlcnJvcgotKyAgIHJhdGhlciB0aGFuIGlzc3VlIHRoZSBuaWNlIHdhcm5pbmcsIGJ1dCB0aGUgZW5kIHJlc3VsdCBvZiBpbmZvcm1pbmcKLSsgICB0aGUgZGV2ZWxvcGVyIGFib3V0IHRoZWlyIHBvcnRhYmlsaXR5IHByb2JsZW0gaXMgc3RpbGwgYWNoaWV2ZWQpOgotKyAgICNpZiBIQVZFX1JBV19ERUNMX0VOVklST04KLSsgICBzdGF0aWMgaW5saW5lIGNoYXIgKioqcnBsX2Vudmlyb24gKHZvaWQpIHsgcmV0dXJuICZlbnZpcm9uOyB9Ci0rICAgX0dMX1dBUk5fT05fVVNFIChycGxfZW52aXJvbiwgImVudmlyb24gaXMgbm90IGFsd2F5cyBwcm9wZXJseSBkZWNsYXJlZCIpOwotKyAgICMgdW5kZWYgZW52aXJvbgotKyAgICMgZGVmaW5lIGVudmlyb24gKCpycGxfZW52aXJvbiAoKSkKLSsgICAjZW5kaWYKLSsgICAqLwotKyNpZm5kZWYgX0dMX1dBUk5fT05fVVNFCi0rCi0rIyBpZiA0IDwgX19HTlVDX18gfHwgKF9fR05VQ19fID09IDQgJiYgMyA8PSBfX0dOVUNfTUlOT1JfXykKLSsvKiBBIGNvbXBpbGVyIGF0dHJpYnV0ZSBpcyBhdmFpbGFibGUgaW4gZ2NjIHZlcnNpb25zIDQuMy4wIGFuZCBsYXRlci4gICovCi0rIyAgZGVmaW5lIF9HTF9XQVJOX09OX1VTRShmdW5jdGlvbiwgbWVzc2FnZSkgXAotK2V4dGVybiBfX3R5cGVvZl9fIChmdW5jdGlvbikgZnVuY3Rpb24gX19hdHRyaWJ1dGVfXyAoKF9fd2FybmluZ19fIChtZXNzYWdlKSkpCi0rIyBlbGlmIF9fR05VQ19fID49IDMgJiYgR05VTElCX1NUUklDVF9DSEVDS0lORwotKy8qIFZlcmlmeSB0aGUgZXhpc3RlbmNlIG9mIHRoZSBmdW5jdGlvbi4gICovCi0rIyAgZGVmaW5lIF9HTF9XQVJOX09OX1VTRShmdW5jdGlvbiwgbWVzc2FnZSkgXAotK2V4dGVybiBfX3R5cGVvZl9fIChmdW5jdGlvbikgZnVuY3Rpb24KLSsjIGVsc2UgLyogVW5zdXBwb3J0ZWQuICAqLwotKyMgIGRlZmluZSBfR0xfV0FSTl9PTl9VU0UoZnVuY3Rpb24sIG1lc3NhZ2UpIFwKLStfR0xfV0FSTl9FWFRFUk5fQyBpbnQgX2dsX3dhcm5fb25fdXNlCi0rIyBlbmRpZgotKyNlbmRpZgotKwotKy8qIF9HTF9XQVJOX09OX1VTRV9DWFggKGZ1bmN0aW9uLCByZXR0eXBlLCBwYXJhbWV0ZXJzX2FuZF9hdHRyaWJ1dGVzLCAic3RyaW5nIikKLSsgICBpcyBsaWtlIF9HTF9XQVJOX09OX1VTRSAoZnVuY3Rpb24sICJzdHJpbmciKSwgZXhjZXB0IHRoYXQgdGhlIGZ1bmN0aW9uIGlzCi0rICAgZGVjbGFyZWQgd2l0aCB0aGUgZ2l2ZW4gcHJvdG90eXBlLCBjb25zaXN0aW5nIG9mIHJldHVybiB0eXBlLCBwYXJhbWV0ZXJzLAotKyAgIGFuZCBhdHRyaWJ1dGVzLgotKyAgIFRoaXMgdmFyaWFudCBpcyB1c2VmdWwgZm9yIG92ZXJsb2FkZWQgZnVuY3Rpb25zIGluIEMrKy4gX0dMX1dBUk5fT05fVVNFIGRvZXMKLSsgICBub3Qgd29yayBpbiB0aGlzIGNhc2UuICAqLwotKyNpZm5kZWYgX0dMX1dBUk5fT05fVVNFX0NYWAotKyMgaWYgNCA8IF9fR05VQ19fIHx8IChfX0dOVUNfXyA9PSA0ICYmIDMgPD0gX19HTlVDX01JTk9SX18pCi0rIyAgZGVmaW5lIF9HTF9XQVJOX09OX1VTRV9DWFgoZnVuY3Rpb24scmV0dHlwZSxwYXJhbWV0ZXJzX2FuZF9hdHRyaWJ1dGVzLG1zZykgXAotK2V4dGVybiByZXR0eXBlIGZ1bmN0aW9uIHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMgXAotKyAgICAgX19hdHRyaWJ1dGVfXyAoKF9fd2FybmluZ19fIChtc2cpKSkKLSsjIGVsaWYgX19HTlVDX18gPj0gMyAmJiBHTlVMSUJfU1RSSUNUX0NIRUNLSU5HCi0rLyogVmVyaWZ5IHRoZSBleGlzdGVuY2Ugb2YgdGhlIGZ1bmN0aW9uLiAgKi8KLSsjICBkZWZpbmUgX0dMX1dBUk5fT05fVVNFX0NYWChmdW5jdGlvbixyZXR0eXBlLHBhcmFtZXRlcnNfYW5kX2F0dHJpYnV0ZXMsbXNnKSBcCi0rZXh0ZXJuIHJldHR5cGUgZnVuY3Rpb24gcGFyYW1ldGVyc19hbmRfYXR0cmlidXRlcwotKyMgZWxzZSAvKiBVbnN1cHBvcnRlZC4gICovCi0rIyAgZGVmaW5lIF9HTF9XQVJOX09OX1VTRV9DWFgoZnVuY3Rpb24scmV0dHlwZSxwYXJhbWV0ZXJzX2FuZF9hdHRyaWJ1dGVzLG1zZykgXAotK19HTF9XQVJOX0VYVEVSTl9DIGludCBfZ2xfd2Fybl9vbl91c2UKLSsjIGVuZGlmCi0rI2VuZGlmCi0rCi0rLyogX0dMX1dBUk5fRVhURVJOX0MgZGVjbGFyYXRpb247Ci0rICAgcGVyZm9ybXMgdGhlIGRlY2xhcmF0aW9uIHdpdGggQyBsaW5rYWdlLiAgKi8KLSsjaWZuZGVmIF9HTF9XQVJOX0VYVEVSTl9DCi0rIyBpZiBkZWZpbmVkIF9fY3BsdXNwbHVzCi0rIyAgZGVmaW5lIF9HTF9XQVJOX0VYVEVSTl9DIGV4dGVybiAiQyIKLSsjIGVsc2UKLSsjICBkZWZpbmUgX0dMX1dBUk5fRVhURVJOX0MgZXh0ZXJuCi0rIyBlbmRpZgotKyNlbmRpZgotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY2xpYi9hbGxvY2F0b3IuaCBsaWJpY29udi0xLjE0L3NyY2xpYi9hbGxvY2F0b3IuaAotLS0tIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvYWxsb2NhdG9yLmgJMjAxMS0wOC0wNyAwNjo0MjowNi4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY2xpYi9hbGxvY2F0b3IuaAkyMDEyLTAxLTA4IDAyOjA3OjQwLjA1MDQ4NDQ0NCAtMDgwMAotQEAgLTQ1LDExICs0NSwxMCBAQCBzdHJ1Y3QgYWxsb2NhdG9yCi0gICAvKiBDYWxsIEZSRUUgdG8gZnJlZSBtZW1vcnksIGxpa2UgJ2ZyZWUnLiAgKi8KLSAgIHZvaWQgKCpmcmVlKSAodm9pZCAqKTsKLSAKLS0gIC8qIElmIG5vbm51bGwsIGNhbGwgRElFIChTSVpFKSBpZiBNQUxMT0MgKFNJWkUpIG9yIFJFQUxMT0MgKC4uLiwKLS0gICAgIFNJWkUpIGZhaWxzLiAgRElFIHNob3VsZCBub3QgcmV0dXJuLiAgU0laRSBzaG91bGQgZXF1YWwgU0laRV9NQVgKLS0gICAgIGlmIHNpemVfdCBvdmVyZmxvdyB3YXMgZGV0ZWN0ZWQgd2hpbGUgY2FsY3VsYXRpbmcgc2l6ZXMgdG8gYmUKLS0gICAgIHBhc3NlZCB0byBNQUxMT0Mgb3IgUkVBTExPQy4gICovCi0tICB2b2lkICgqZGllKSAoc2l6ZV90KTsKLSsgIC8qIElmIG5vbm51bGwsIGNhbGwgRElFIGlmIE1BTExPQyBvciBSRUFMTE9DIGZhaWxzLiAgRElFIHNob3VsZCBub3QKLSsgICAgIHJldHVybi4gIERJRSBjYW4gYmUgdXNlZCBieSBjb2RlIHRoYXQgZGV0ZWN0cyBtZW1vcnkgb3ZlcmZsb3cKLSsgICAgIHdoaWxlIGNhbGN1bGF0aW5nIHNpemVzIHRvIGJlIHBhc3NlZCB0byBNQUxMT0Mgb3IgUkVBTExPQy4gICovCi0rICB2b2lkICgqZGllKSAodm9pZCk7Ci0gfTsKLSAKLSAvKiBBbiBhbGxvY2F0b3IgdXNpbmcgdGhlIHN0ZGxpYiBmdW5jdGlvbnMgYW5kIGEgbnVsbCBESUUgZnVuY3Rpb24uICAqLwotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY2xpYi9jYW5vbmljYWxpemUtbGdwbC5jIGxpYmljb252LTEuMTQvc3JjbGliL2Nhbm9uaWNhbGl6ZS1sZ3BsLmMKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbGliL2Nhbm9uaWNhbGl6ZS1sZ3BsLmMJMjAxMS0wOC0wNyAwNjo0MjowNi4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY2xpYi9jYW5vbmljYWxpemUtbGdwbC5jCTIwMTItMDEtMDggMDI6MDc6NDAuMDk0NDg0NDQ2IC0wODAwCi1AQCAtMTI1LDcgKzEyNSw3IEBAIF9fcmVhbHBhdGggKGNvbnN0IGNoYXIgKm5hbWUsIGNoYXIgKnJlc28KLSAjZWxzZQotICAgcGF0aF9tYXggPSBwYXRoY29uZiAobmFtZSwgX1BDX1BBVEhfTUFYKTsKLSAgIGlmIChwYXRoX21heCA8PSAwKQotLSAgICBwYXRoX21heCA9IDgxOTI7Ci0rICAgIHBhdGhfbWF4ID0gMTAyNDsKLSAjZW5kaWYKLSAKLSAgIGlmIChyZXNvbHZlZCA9PSBOVUxMKQotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY2xpYi9jYXJlYWRsaW5rYXQuYyBsaWJpY29udi0xLjE0L3NyY2xpYi9jYXJlYWRsaW5rYXQuYwotLS0tIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvY2FyZWFkbGlua2F0LmMJMjAxMS0wOC0wNyAwNjo0MjowNi4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY2xpYi9jYXJlYWRsaW5rYXQuYwkyMDEyLTAxLTA4IDAyOjA3OjQwLjEwMjQ4NDQ0NSAtMDgwMAotQEAgLTEzMyw3ICsxMzMsNiBAQCBjYXJlYWRsaW5rYXQgKGludCBmZCwgY2hhciBjb25zdCAqZmlsZW5hCi0gICAgICAgICAgIGlmIChidWYgPT0gc3RhY2tfYnVmKQotICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIGNoYXIgKmIgPSAoY2hhciAqKSBhbGxvYy0+YWxsb2NhdGUgKGxpbmtfc2l6ZSk7Ci0tICAgICAgICAgICAgICBidWZfc2l6ZSA9IGxpbmtfc2l6ZTsKLSAgICAgICAgICAgICAgIGlmICghIGIpCi0gICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgbWVtY3B5IChiLCBidWYsIGxpbmtfc2l6ZSk7Ci1AQCAtMTU3LDExICsxNTYsNiBAQCBjYXJlYWRsaW5rYXQgKGludCBmZCwgY2hhciBjb25zdCAqZmlsZW5hCi0gICAgICAgICBidWZfc2l6ZSAqPSAyOwotICAgICAgIGVsc2UgaWYgKGJ1Zl9zaXplIDwgYnVmX3NpemVfbWF4KQotICAgICAgICAgYnVmX3NpemUgPSBidWZfc2l6ZV9tYXg7Ci0tICAgICAgZWxzZSBpZiAoYnVmX3NpemVfbWF4IDwgU0laRV9NQVgpCi0tICAgICAgICB7Ci0tICAgICAgICAgIGVycm5vID0gRU5BTUVUT09MT05HOwotLSAgICAgICAgICByZXR1cm4gTlVMTDsKLS0gICAgICAgIH0KLSAgICAgICBlbHNlCi0gICAgICAgICBicmVhazsKLSAgICAgICBidWYgPSAoY2hhciAqKSBhbGxvYy0+YWxsb2NhdGUgKGJ1Zl9zaXplKTsKLUBAIC0xNjksNyArMTYzLDcgQEAgY2FyZWFkbGlua2F0IChpbnQgZmQsIGNoYXIgY29uc3QgKmZpbGVuYQotICAgd2hpbGUgKGJ1Zik7Ci0gCi0gICBpZiAoYWxsb2MtPmRpZSkKLS0gICAgYWxsb2MtPmRpZSAoYnVmX3NpemUpOwotKyAgICBhbGxvYy0+ZGllICgpOwotICAgZXJybm8gPSBFTk9NRU07Ci0gICByZXR1cm4gTlVMTDsKLSB9Ci1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbGliL2Vycm5vLmluLmggbGliaWNvbnYtMS4xNC9zcmNsaWIvZXJybm8uaW4uaAotLS0tIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvZXJybm8uaW4uaAkyMDExLTA4LTA3IDA2OjQyOjA2LjAwMDAwMDAwMCAtMDcwMAotKysrIGxpYmljb252LTEuMTQvc3JjbGliL2Vycm5vLmluLmgJMjAxMi0wMS0wOCAwMjowNzo0MC4xMjI0ODQ0NDYgLTA4MDAKLUBAIC0xNiw3ICsxNiw3IEBACi0gICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSAgICBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4gICovCi0gCi0tI2lmbmRlZiBfQEdVQVJEX1BSRUZJWEBfRVJSTk9fSAotKyNpZm5kZWYgX0dMX0VSUk5PX0gKLSAKLSAjaWYgX19HTlVDX18gPj0gMwotIEBQUkFHTUFfU1lTVEVNX0hFQURFUkAKLUBAIC0yNiw4ICsyNiw4IEBACi0gLyogVGhlIGluY2x1ZGVfbmV4dCByZXF1aXJlcyBhIHNwbGl0IGRvdWJsZS1pbmNsdXNpb24gZ3VhcmQuICAqLwotICNASU5DTFVERV9ORVhUQCBATkVYVF9FUlJOT19IQAotIAotLSNpZm5kZWYgX0BHVUFSRF9QUkVGSVhAX0VSUk5PX0gKLS0jZGVmaW5lIF9AR1VBUkRfUFJFRklYQF9FUlJOT19ICi0rI2lmbmRlZiBfR0xfRVJSTk9fSAotKyNkZWZpbmUgX0dMX0VSUk5PX0gKLSAKLSAKLSAvKiBPbiBuYXRpdmUgV2luZG93cyBwbGF0Zm9ybXMsIG1hbnkgbWFjcm9zIGFyZSBub3QgZGVmaW5lZC4gICovCi1AQCAtMTQ3LDE2ICsxNDcsNiBAQAotICMgIGRlZmluZSBHTlVMSUJfZGVmaW5lZF9FTk9UU1VQIDEKLSAjIGVuZGlmCi0gCi0tIyBpZm5kZWYgRU5FVFJFU0VUCi0tIyAgZGVmaW5lIEVORVRSRVNFVCAyMDExCi0tIyAgZGVmaW5lIEdOVUxJQl9kZWZpbmVkX0VORVRSRVNFVCAxCi0tIyBlbmRpZgotLQotLSMgaWZuZGVmIEVDT05OQUJPUlRFRAotLSMgIGRlZmluZSBFQ09OTkFCT1JURUQgMjAxMgotLSMgIGRlZmluZSBHTlVMSUJfZGVmaW5lZF9FQ09OTkFCT1JURUQgMQotLSMgZW5kaWYKLS0KLSAjIGlmbmRlZiBFU1RBTEUKLSAjICBkZWZpbmUgRVNUQUxFICAgIDIwMDkKLSAjICBkZWZpbmUgR05VTElCX2RlZmluZWRfRVNUQUxFIDEKLUBAIC0xNzMsNSArMTYzLDUgQEAKLSAjIGVuZGlmCi0gCi0gCi0tI2VuZGlmIC8qIF9AR1VBUkRfUFJFRklYQF9FUlJOT19IICovCi0tI2VuZGlmIC8qIF9AR1VBUkRfUFJFRklYQF9FUlJOT19IICovCi0rI2VuZGlmIC8qIF9HTF9FUlJOT19IICovCi0rI2VuZGlmIC8qIF9HTF9FUlJOT19IICovCi1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbGliL2Vycm9yLmMgbGliaWNvbnYtMS4xNC9zcmNsaWIvZXJyb3IuYwotLS0tIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvZXJyb3IuYwkyMDExLTA4LTA3IDA2OjQyOjA2LjAwMDAwMDAwMCAtMDcwMAotKysrIGxpYmljb252LTEuMTQvc3JjbGliL2Vycm9yLmMJMjAxMi0wMS0wOCAwMjowNzo0MC4xMzQ0ODQ0NDggLTA4MDAKLUBAIC05NywxNSArOTcsMTEgQEAgZXh0ZXJuIHZvaWQgX19lcnJvcl9hdF9saW5lIChpbnQgc3RhdHVzLAotIC8qIFRoZSBnbnVsaWIgb3ZlcnJpZGUgb2YgZmNudGwgaXMgbm90IG5lZWRlZCBpbiB0aGlzIGZpbGUuICAqLwotICMgdW5kZWYgZmNudGwKLSAKLS0jIGlmICFIQVZFX0RFQ0xfU1RSRVJST1JfUgotKyMgaWYgIUhBVkVfREVDTF9TVFJFUlJPUl9SICYmIFNUUkVSUk9SX1JfQ0hBUl9QCi0gIyAgaWZuZGVmIEhBVkVfREVDTF9TVFJFUlJPUl9SCi0gInRoaXMgY29uZmlndXJlLXRpbWUgZGVjbGFyYXRpb24gdGVzdCB3YXMgbm90IHJ1biIKLSAjICBlbmRpZgotLSMgIGlmIFNUUkVSUk9SX1JfQ0hBUl9QCi0gY2hhciAqc3RyZXJyb3JfciAoKTsKLS0jICBlbHNlCi0taW50IHN0cmVycm9yX3IgKCk7Ci0tIyAgZW5kaWYKLSAjIGVuZGlmCi0gCi0gLyogVGhlIGNhbGxpbmcgcHJvZ3JhbSBzaG91bGQgZGVmaW5lIHByb2dyYW1fbmFtZSBhbmQgc2V0IGl0IHRvIHRoZQotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY2xpYi9mY250bC5pbi5oIGxpYmljb252LTEuMTQvc3JjbGliL2ZjbnRsLmluLmgKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbGliL2ZjbnRsLmluLmgJMjAxMS0wOC0wNyAwNjo0MjowNi4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY2xpYi9mY250bC5pbi5oCTIwMTItMDEtMDggMDI6MDc6NDAuMTU0NDg0NDQ5IC0wODAwCi1AQCAtNDAsNyArNDAsNyBAQAotICNlbHNlCi0gLyogTm9ybWFsIGludm9jYXRpb24gY29udmVudGlvbi4gICovCi0gCi0tI2lmbmRlZiBfQEdVQVJEX1BSRUZJWEBfRkNOVExfSAotKyNpZm5kZWYgX0dMX0ZDTlRMX0gKLSAKLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gLyogT24gc29tZSBzeXN0ZW1zIG90aGVyIHRoYW4gZ2xpYmMsIDxzeXMvc3RhdC5oPiBpcyBhIHByZXJlcXVpc2l0ZSBvZgotQEAgLTU1LDggKzU1LDggQEAKLSAvKiBUaGUgaW5jbHVkZV9uZXh0IHJlcXVpcmVzIGEgc3BsaXQgZG91YmxlLWluY2x1c2lvbiBndWFyZC4gICovCi0gI0BJTkNMVURFX05FWFRAIEBORVhUX0ZDTlRMX0hACi0gCi0tI2lmbmRlZiBfQEdVQVJEX1BSRUZJWEBfRkNOVExfSAotLSNkZWZpbmUgX0BHVUFSRF9QUkVGSVhAX0ZDTlRMX0gKLSsjaWZuZGVmIF9HTF9GQ05UTF9ICi0rI2RlZmluZSBfR0xfRkNOVExfSAotIAotICNpZm5kZWYgX19HTElCQ19fIC8qIEF2b2lkIG5hbWVzcGFjZSBwb2xsdXRpb24gb24gZ2xpYmMgc3lzdGVtcy4gICovCi0gIyBpbmNsdWRlIDx1bmlzdGQuaD4KLUBAIC0zMjAsNiArMzIwLDYgQEAgX0dMX1dBUk5fT05fVVNFIChvcGVuYXQsICJvcGVuYXQgaXMgbm90Ci0gI2VuZGlmCi0gCi0gCi0tI2VuZGlmIC8qIF9AR1VBUkRfUFJFRklYQF9GQ05UTF9IICovCi0tI2VuZGlmIC8qIF9AR1VBUkRfUFJFRklYQF9GQ05UTF9IICovCi0rI2VuZGlmIC8qIF9HTF9GQ05UTF9IICovCi0rI2VuZGlmIC8qIF9HTF9GQ05UTF9IICovCi0gI2VuZGlmCi1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbGliL2ludHByb3BzLmggbGliaWNvbnYtMS4xNC9zcmNsaWIvaW50cHJvcHMuaAotLS0tIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvaW50cHJvcHMuaAkyMDExLTA4LTA3IDA2OjQyOjA2LjAwMDAwMDAwMCAtMDcwMAotKysrIGxpYmljb252LTEuMTQvc3JjbGliL2ludHByb3BzLmgJMjAxMi0wMS0wOCAwMjowNzo0MC4xNzQ0ODQ0NTAgLTA4MDAKLUBAIC0yMiwxMyArMjIsMTQgQEAKLSAKLSAjaW5jbHVkZSA8bGltaXRzLmg+Ci0gCi0tLyogUmV0dXJuIGFuIGludGVnZXIgdmFsdWUsIGNvbnZlcnRlZCB0byB0aGUgc2FtZSB0eXBlIGFzIHRoZSBpbnRlZ2VyCi0tICAgZXhwcmVzc2lvbiBFIGFmdGVyIGludGVnZXIgdHlwZSBwcm9tb3Rpb24uICBWIGlzIHRoZSB1bmNvbnZlcnRlZCB2YWx1ZS4gICovCi0tI2RlZmluZSBfR0xfSU5UX0NPTlZFUlQoZSwgdikgKDAgKiAoZSkgKyAodikpCi0rLyogUmV0dXJuIGEgaW50ZWdlciB2YWx1ZSwgY29udmVydGVkIHRvIHRoZSBzYW1lIHR5cGUgYXMgdGhlIGludGVnZXIKLSsgICBleHByZXNzaW9uIEUgYWZ0ZXIgaW50ZWdlciB0eXBlIHByb21vdGlvbi4gIFYgaXMgdGhlIHVuY29udmVydGVkIHZhbHVlLgotKyAgIEUgc2hvdWxkIG5vdCBoYXZlIHNpZGUgZWZmZWN0cy4gICovCi0rI2RlZmluZSBfR0xfSU5UX0NPTlZFUlQoZSwgdikgKChlKSAtIChlKSArICh2KSkKLSAKLSAvKiBBY3QgbGlrZSBfR0xfSU5UX0NPTlZFUlQgKEUsIC1WKSBidXQgd29yayBhcm91bmQgYSBidWcgaW4gSVJJWCA2LjUgY2M7IHNlZQotICAgIDxodHRwOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvYnVnLWdudWxpYi8yMDExLTA1L21zZzAwNDA2Lmh0bWw+LiAgKi8KLS0jZGVmaW5lIF9HTF9JTlRfTkVHQVRFX0NPTlZFUlQoZSwgdikgKDAgKiAoZSkgLSAodikpCi0rI2RlZmluZSBfR0xfSU5UX05FR0FURV9DT05WRVJUKGUsIHYpICgoZSkgLSAoZSkgLSAodikpCi0gCi0gLyogVGhlIGV4dHJhIGNhc3RzIGluIHRoZSBmb2xsb3dpbmcgbWFjcm9zIHdvcmsgYXJvdW5kIGNvbXBpbGVyIGJ1Z3MsCi0gICAgZS5nLiwgaW4gQ3JheSBDIDUuMC4zLjAuICAqLwotQEAgLTUyLDcgKzUzLDcgQEAKLSAjZGVmaW5lIFRZUEVfU0lHTkVEKHQpICghICgodCkgMCA8ICh0KSAtMSkpCi0gCi0gLyogUmV0dXJuIDEgaWYgdGhlIGludGVnZXIgZXhwcmVzc2lvbiBFLCBhZnRlciBpbnRlZ2VyIHByb21vdGlvbiwgaGFzCi0tICAgYSBzaWduZWQgdHlwZS4gICovCi0rICAgYSBzaWduZWQgdHlwZS4gIEUgc2hvdWxkIG5vdCBoYXZlIHNpZGUgZWZmZWN0cy4gICovCi0gI2RlZmluZSBfR0xfSU5UX1NJR05FRChlKSAoX0dMX0lOVF9ORUdBVEVfQ09OVkVSVCAoZSwgMSkgPCAwKQotIAotIAotQEAgLTMxMCwxMCArMzExLDEzIEBACi0gLyogUmV0dXJuIDEgaWYgdGhlIGV4cHJlc3Npb24gQSA8b3A+IEIgd291bGQgb3ZlcmZsb3csCi0gICAgd2hlcmUgT1BfUkVTVUxUX09WRVJGTE9XIChBLCBCLCBNSU4sIE1BWCkgZG9lcyB0aGUgYWN0dWFsIHRlc3QsCi0gICAgYXNzdW1pbmcgTUlOIGFuZCBNQVggYXJlIHRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIGZvciB0aGUgcmVzdWx0IHR5cGUuCi0tICAgQXJndW1lbnRzIHNob3VsZCBiZSBmcmVlIG9mIHNpZGUgZWZmZWN0cy4gICovCi0rCi0rICAgVGhpcyBtYWNybyBhc3N1bWVzIHRoYXQgQSB8IEIgaXMgYSB2YWxpZCBpbnRlZ2VyIGlmIGJvdGggQSBhbmQgQiBhcmUsCi0rICAgd2hpY2ggaXMgdHJ1ZSBvZiBhbGwga25vd24gcHJhY3RpY2FsIGhvc3RzLiAgSWYgdGhpcyBpcyBhIHByb2JsZW0KLSsgICBmb3IgeW91LCBwbGVhc2UgbGV0IHVzIGtub3cgaG93IHRvIGZpeCBpdCBmb3IgeW91ciBob3N0LiAgKi8KLSAjZGVmaW5lIF9HTF9CSU5BUllfT1BfT1ZFUkZMT1coYSwgYiwgb3BfcmVzdWx0X292ZXJmbG93KSAgICAgICAgXAotICAgb3BfcmVzdWx0X292ZXJmbG93IChhLCBiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgICAgICAgICAgICAgICAgICAgIF9HTF9JTlRfTUlOSU1VTSAoMCAqIChiKSArIChhKSksICAgICAgICAgIFwKLS0gICAgICAgICAgICAgICAgICAgICAgX0dMX0lOVF9NQVhJTVVNICgwICogKGIpICsgKGEpKSkKLSsgICAgICAgICAgICAgICAgICAgICAgX0dMX0lOVF9NSU5JTVVNICgoYSkgfCAoYikpLCAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgICAgICBfR0xfSU5UX01BWElNVU0gKChhKSB8IChiKSkpCi0gCi0gI2VuZGlmIC8qIF9HTF9JTlRQUk9QU19IICovCi1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbGliL01ha2VmaWxlLmdudWxpYiBsaWJpY29udi0xLjE0L3NyY2xpYi9NYWtlZmlsZS5nbnVsaWIKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbGliL01ha2VmaWxlLmdudWxpYgkyMDEyLTAxLTA4IDAyOjA1OjE4Ljc1NDQ3NzYwNiAtMDgwMAotKysrIGxpYmljb252LTEuMTQvc3JjbGliL01ha2VmaWxlLmdudWxpYgkyMDEyLTAxLTA4IDAyOjA3OjQzLjEzODQ4NDU5MiAtMDgwMAotQEAgLTksNyArOSw3IEBACi0gIyB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgYXMgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgotICMKLSAjIEdlbmVyYXRlZCBieSBnbnVsaWItdG9vbC4KLS0jIFJlcHJvZHVjZSBieTogZ251bGliLXRvb2wgLS1pbXBvcnQgLS1kaXI9LiAtLWxvY2FsLWRpcj1nbnVsaWItbG9jYWwgLS1saWI9bGliaWNydCAtLXNvdXJjZS1iYXNlPXNyY2xpYiAtLW00LWJhc2U9c3JjbTQgLS1kb2MtYmFzZT1kb2MgLS10ZXN0cy1iYXNlPXRlc3RzIC0tYXV4LWRpcj1idWlsZC1hdXggLS1tYWtlZmlsZS1uYW1lPU1ha2VmaWxlLmdudWxpYiAtLW5vLWNvbmRpdGlvbmFsLWRlcGVuZGVuY2llcyAtLW5vLWxpYnRvb2wgLS1tYWNyby1wcmVmaXg9Z2wgLS1uby12Yy1maWxlcyBiaW5hcnktaW8gZXJyb3IgZ2V0dGV4dCBnZXR0ZXh0LWggbGliaWNvbnYtbWlzYyBtYnN0YXRlIG1lbW1vdmUgcHJvZ25hbWUgcmVsb2NhdGFibGUtcHJvZyBzYWZlLXJlYWQgc2lncGlwZSBzdGRpbyBzdGRsaWIgc3RyZXJyb3IgdW5pc3RkIHVuaXdpZHRoL3dpZHRoIHVubG9ja2VkLWlvIHhhbGxvYwotKyMgUmVwcm9kdWNlIGJ5OiBnbnVsaWItdG9vbCAtLWltcG9ydCAtLWRpcj0uIC0tbG9jYWwtZGlyPWdudWxpYi1sb2NhbCAtLWxpYj1saWJpY3J0IC0tc291cmNlLWJhc2U9c3JjbGliIC0tbTQtYmFzZT1zcmNtNCAtLWRvYy1iYXNlPWRvYyAtLXRlc3RzLWJhc2U9dGVzdHMgLS1hdXgtZGlyPWJ1aWxkLWF1eCAtLW1ha2VmaWxlLW5hbWU9TWFrZWZpbGUuZ251bGliIC0tbm8tbGlidG9vbCAtLW1hY3JvLXByZWZpeD1nbCAtLW5vLXZjLWZpbGVzIGJpbmFyeS1pbyBlcnJvciBnZXR0ZXh0IGdldHRleHQtaCBsaWJpY29udi1taXNjIG1ic3RhdGUgbWVtbW92ZSBwcm9nbmFtZSByZWxvY2F0YWJsZSByZWxvY2F0YWJsZS1wcm9nIHNhZmUtcmVhZCBzaWdwaXBlIHN0ZGlvIHN0ZGxpYiBzdHJlcnJvciB1bmlzdGQgdW5pd2lkdGgvd2lkdGggdW5sb2NrZWQtaW8geGFsbG9jCi0gCi0gCi0gTU9TVExZQ0xFQU5GSUxFUyArPSBjb3JlICouc3RhY2tkdW1wCi1AQCAtNjAsMTIgKzYwLDYwIEBAIEVYVFJBX0RJU1QgKz0gYXJlYWRsaW5rLmgKLSAKLSAjIyBlbmQgICBnbnVsaWIgbW9kdWxlIGFyZWFkbGluawotIAotKyMjIGJlZ2luIGdudWxpYiBtb2R1bGUgYXJnLW5vbm51bGwKLSsKLSsjIFRoZSBCVUlMVF9TT1VSQ0VTIGNyZWF0ZWQgYnkgdGhpcyBNYWtlZmlsZSBzbmlwcGV0IGFyZSBub3QgdXNlZCB2aWEgI2luY2x1ZGUKLSsjIHN0YXRlbWVudHMgYnV0IHRocm91Z2ggZGlyZWN0IGZpbGUgcmVmZXJlbmNlLiBUaGVyZWZvcmUgdGhpcyBzbmlwcGV0IG11c3QgYmUKLSsjIHByZXNlbnQgaW4gYWxsIE1ha2VmaWxlLmFtIHRoYXQgbmVlZCBpdC4gVGhpcyBpcyBlbnN1cmVkIGJ5IHRoZSBhcHBsaWNhYmlsaXR5Ci0rIyAnYWxsJyBkZWZpbmVkIGFib3ZlLgotKwotK0JVSUxUX1NPVVJDRVMgKz0gYXJnLW5vbm51bGwuaAotKyMgVGhlIGFyZy1ub25udWxsLmggdGhhdCBnZXRzIGluc2VydGVkIGludG8gZ2VuZXJhdGVkIC5oIGZpbGVzIGlzIHRoZSBzYW1lIGFzCi0rIyBidWlsZC1hdXgvYXJnLW5vbm51bGwuaCwgZXhjZXB0IHRoYXQgaXQgaGFzIHRoZSBjb3B5cmlnaHQgaGVhZGVyIGN1dCBvZmYuCi0rYXJnLW5vbm51bGwuaDogJCh0b3Bfc3JjZGlyKS9idWlsZC1hdXgvYXJnLW5vbm51bGwuaAotKwkkKEFNX1ZfR0VOKXJtIC1mICRALXQgJEAgJiYgXAotKwlzZWQgLW4gLWUgJy9HTF9BUkdfTk9OTlVMTC8sJCRwJyBcCi0rCSAgPCAkKHRvcF9zcmNkaXIpL2J1aWxkLWF1eC9hcmctbm9ubnVsbC5oIFwKLSsJICA+ICRALXQgJiYgXAotKwltdiAkQC10ICRACi0rTU9TVExZQ0xFQU5GSUxFUyArPSBhcmctbm9ubnVsbC5oIGFyZy1ub25udWxsLmgtdAotKwotK0FSR19OT05OVUxMX0g9YXJnLW5vbm51bGwuaAotKwotK0VYVFJBX0RJU1QgKz0gJCh0b3Bfc3JjZGlyKS9idWlsZC1hdXgvYXJnLW5vbm51bGwuaAotKwotKyMjIGVuZCAgIGdudWxpYiBtb2R1bGUgYXJnLW5vbm51bGwKLSsKLSAjIyBiZWdpbiBnbnVsaWIgbW9kdWxlIGJpbmFyeS1pbwotIAotIGxpYmljcnRfYV9TT1VSQ0VTICs9IGJpbmFyeS1pby5oCi0gCi0gIyMgZW5kICAgZ251bGliIG1vZHVsZSBiaW5hcnktaW8KLSAKLSsjIyBiZWdpbiBnbnVsaWIgbW9kdWxlIGMrK2RlZnMKLSsKLSsjIFRoZSBCVUlMVF9TT1VSQ0VTIGNyZWF0ZWQgYnkgdGhpcyBNYWtlZmlsZSBzbmlwcGV0IGFyZSBub3QgdXNlZCB2aWEgI2luY2x1ZGUKLSsjIHN0YXRlbWVudHMgYnV0IHRocm91Z2ggZGlyZWN0IGZpbGUgcmVmZXJlbmNlLiBUaGVyZWZvcmUgdGhpcyBzbmlwcGV0IG11c3QgYmUKLSsjIHByZXNlbnQgaW4gYWxsIE1ha2VmaWxlLmFtIHRoYXQgbmVlZCBpdC4gVGhpcyBpcyBlbnN1cmVkIGJ5IHRoZSBhcHBsaWNhYmlsaXR5Ci0rIyAnYWxsJyBkZWZpbmVkIGFib3ZlLgotKwotK0JVSUxUX1NPVVJDRVMgKz0gYysrZGVmcy5oCi0rIyBUaGUgYysrZGVmcy5oIHRoYXQgZ2V0cyBpbnNlcnRlZCBpbnRvIGdlbmVyYXRlZCAuaCBmaWxlcyBpcyB0aGUgc2FtZSBhcwotKyMgYnVpbGQtYXV4L2MrK2RlZnMuaCwgZXhjZXB0IHRoYXQgaXQgaGFzIHRoZSBjb3B5cmlnaHQgaGVhZGVyIGN1dCBvZmYuCi0rYysrZGVmcy5oOiAkKHRvcF9zcmNkaXIpL2J1aWxkLWF1eC9jKytkZWZzLmgKLSsJJChBTV9WX0dFTilybSAtZiAkQC10ICRAICYmIFwKLSsJc2VkIC1uIC1lICcvX0dMX0NYWERFRlMvLCQkcCcgXAotKwkgIDwgJCh0b3Bfc3JjZGlyKS9idWlsZC1hdXgvYysrZGVmcy5oIFwKLSsJICA+ICRALXQgJiYgXAotKwltdiAkQC10ICRACi0rTU9TVExZQ0xFQU5GSUxFUyArPSBjKytkZWZzLmggYysrZGVmcy5oLXQKLSsKLStDWFhERUZTX0g9YysrZGVmcy5oCi0rCi0rRVhUUkFfRElTVCArPSAkKHRvcF9zcmNkaXIpL2J1aWxkLWF1eC9jKytkZWZzLmgKLSsKLSsjIyBlbmQgICBnbnVsaWIgbW9kdWxlIGMrK2RlZnMKLSsKLSAjIyBiZWdpbiBnbnVsaWIgbW9kdWxlIGNhbm9uaWNhbGl6ZS1sZ3BsCi0gCi0gCi1AQCAtMTAwLDggKzE0OCw3IEBAIGlmIEdMX0dFTkVSQVRFX0VSUk5PX0gKLSBlcnJuby5oOiBlcnJuby5pbi5oICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzCi0gCSQoQU1fVl9HRU4pcm0gLWYgJEAtdCAkQCAmJiBcCi0gCXsgZWNobyAnLyogRE8gTk9UIEVESVQhIEdFTkVSQVRFRCBBVVRPTUFUSUNBTExZISAqLycgJiYgXAotLQkgIHNlZCAtZSAnc3xAJydHVUFSRF9QUkVGSVgnJ0B8R0x8ZycgXAotLQkgICAgICAtZSAnc3xAJydJTkNMVURFX05FWFQnJ0B8JChJTkNMVURFX05FWFQpfGcnIFwKLSsJICBzZWQgLWUgJ3N8QCcnSU5DTFVERV9ORVhUJydAfCQoSU5DTFVERV9ORVhUKXxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ1BSQUdNQV9TWVNURU1fSEVBREVSJydAfEBQUkFHTUFfU1lTVEVNX0hFQURFUkB8ZycgXAotIAkgICAgICAtZSAnc3xAJydQUkFHTUFfQ09MVU1OUycnQHxAUFJBR01BX0NPTFVNTlNAfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnTkVYVF9FUlJOT19IJydAfCQoTkVYVF9FUlJOT19IKXxnJyBcCi1AQCAtMTQyLDE1ICsxODksMTQgQEAgQlVJTFRfU09VUkNFUyArPSBmY250bC5oCi0gZmNudGwuaDogZmNudGwuaW4uaCAkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1cyAkKENYWERFRlNfSCkgJChBUkdfTk9OTlVMTF9IKSAkKFdBUk5fT05fVVNFX0gpCi0gCSQoQU1fVl9HRU4pcm0gLWYgJEAtdCAkQCAmJiBcCi0gCXsgZWNobyAnLyogRE8gTk9UIEVESVQhIEdFTkVSQVRFRCBBVVRPTUFUSUNBTExZISAqLyc7IFwKLS0JICBzZWQgLWUgJ3N8QCcnR1VBUkRfUFJFRklYJydAfEdMfGcnIFwKLS0JICAgICAgLWUgJ3N8QCcnSU5DTFVERV9ORVhUJydAfCQoSU5DTFVERV9ORVhUKXxnJyBcCi0rCSAgc2VkIC1lICdzfEAnJ0lOQ0xVREVfTkVYVCcnQHwkKElOQ0xVREVfTkVYVCl8ZycgXAotIAkgICAgICAtZSAnc3xAJydQUkFHTUFfU1lTVEVNX0hFQURFUicnQHxAUFJBR01BX1NZU1RFTV9IRUFERVJAfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnUFJBR01BX0NPTFVNTlMnJ0B8QFBSQUdNQV9DT0xVTU5TQHxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ05FWFRfRkNOVExfSCcnQHwkKE5FWFRfRkNOVExfSCl8ZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfRkNOVEwnJ0AvJChHTlVMSUJfRkNOVEwpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX05PTkJMT0NLSU5HJydALyQoR05VTElCX05PTkJMT0NLSU5HKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9PUEVOJydALyQoR05VTElCX09QRU4pL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX09QRU5BVCcnQC8kKEdOVUxJQl9PUEVOQVQpL2cnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0ZDTlRMJydAfCQoR05VTElCX0ZDTlRMKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9OT05CTE9DS0lORycnQHwkKEdOVUxJQl9OT05CTE9DS0lORyl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfT1BFTicnQHwkKEdOVUxJQl9PUEVOKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9PUEVOQVQnJ0B8JChHTlVMSUJfT1BFTkFUKXxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ0hBVkVfRkNOVEwnJ0B8JChIQVZFX0ZDTlRMKXxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ0hBVkVfT1BFTkFUJydAfCQoSEFWRV9PUEVOQVQpfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnUkVQTEFDRV9GQ05UTCcnQHwkKFJFUExBQ0VfRkNOVEwpfGcnIFwKLUBAIC0yOTcsNyArMzQzLDcgQEAgRVhUUkFfRElTVCArPSAkKHRvcF9zcmNkaXIpL2J1aWxkLWF1eC9jbwotICMjIGJlZ2luIGdudWxpYiBtb2R1bGUgcmVsb2NhdGFibGUtcHJvZy13cmFwcGVyCi0gCi0gCi0tRVhUUkFfRElTVCArPSBhbGxvY2F0b3IuYyBhbGxvY2F0b3IuaCBhcmVhZGxpbmsuYyBhcmVhZGxpbmsuaCBjLWN0eXBlLmMgYy1jdHlwZS5oIGNhbm9uaWNhbGl6ZS1sZ3BsLmMgY2FyZWFkbGlua2F0LmMgY2FyZWFkbGlua2F0LmggbWFsbG9jYS5jIG1hbGxvY2EuaCBwcm9nbmFtZS5jIHByb2duYW1lLmggcHJvZ3JlbG9jLmMgcmVhZGxpbmsuYyByZWxvY2F0YWJsZS5jIHJlbG9jYXRhYmxlLmggcmVsb2N3cmFwcGVyLmMgc2V0ZW52LmMKLStFWFRSQV9ESVNUICs9IGFsbG9jYXRvci5jIGFsbG9jYXRvci5oIGFyZWFkbGluay5jIGFyZWFkbGluay5oIGMtY3R5cGUuYyBjLWN0eXBlLmggY2Fub25pY2FsaXplLWxncGwuYyBjYXJlYWRsaW5rYXQuYyBjYXJlYWRsaW5rYXQuaCBtYWxsb2NhLmMgbWFsbG9jYS5oIHByb2duYW1lLmMgcHJvZ25hbWUuaCBwcm9ncmVsb2MuYyByZWFkbGluay5jIHJlbG9jYXRhYmxlLmMgcmVsb2NhdGFibGUuaCByZWxvY3dyYXBwZXIuYyBzZXRlbnYuYyBzdHJlcnJvci5jCi0gCi0gRVhUUkFfRElTVCArPSAkKHRvcF9zcmNkaXIpL2J1aWxkLWF1eC9pbnN0YWxsLXJlbG9jCi0gCi1AQCAtMzA1LDkgKzM1MSwxMCBAQCBFWFRSQV9ESVNUICs9ICQodG9wX3NyY2RpcikvYnVpbGQtYXV4L2luCi0gCi0gIyMgYmVnaW4gZ251bGliIG1vZHVsZSBzYWZlLXJlYWQKLSAKLS1saWJpY3J0X2FfU09VUkNFUyArPSBzYWZlLXJlYWQuYwotIAotLUVYVFJBX0RJU1QgKz0gc2FmZS1yZWFkLmgKLStFWFRSQV9ESVNUICs9IHNhZmUtcmVhZC5jIHNhZmUtcmVhZC5oCi0rCi0rRVhUUkFfbGliaWNydF9hX1NPVVJDRVMgKz0gc2FmZS1yZWFkLmMKLSAKLSAjIyBlbmQgICBnbnVsaWIgbW9kdWxlIHNhZmUtcmVhZAotIAotQEAgLTMyMCwyNCArMzY3LDIwIEBAIEJVSUxUX1NPVVJDRVMgKz0gc2lnbmFsLmgKLSBzaWduYWwuaDogc2lnbmFsLmluLmggJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMgJChDWFhERUZTX0gpICQoQVJHX05PTk5VTExfSCkgJChXQVJOX09OX1VTRV9IKQotIAkkKEFNX1ZfR0VOKXJtIC1mICRALXQgJEAgJiYgXAotIAl7IGVjaG8gJy8qIERPIE5PVCBFRElUISBHRU5FUkFURUQgQVVUT01BVElDQUxMWSEgKi8nICYmIFwKLS0JICBzZWQgLWUgJ3N8QCcnR1VBUkRfUFJFRklYJydAfEdMfGcnIFwKLS0JICAgICAgLWUgJ3N8QCcnSU5DTFVERV9ORVhUJydAfCQoSU5DTFVERV9ORVhUKXxnJyBcCi0rCSAgc2VkIC1lICdzfEAnJ0lOQ0xVREVfTkVYVCcnQHwkKElOQ0xVREVfTkVYVCl8ZycgXAotIAkgICAgICAtZSAnc3xAJydQUkFHTUFfU1lTVEVNX0hFQURFUicnQHxAUFJBR01BX1NZU1RFTV9IRUFERVJAfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnUFJBR01BX0NPTFVNTlMnJ0B8QFBSQUdNQV9DT0xVTU5TQHxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ05FWFRfU0lHTkFMX0gnJ0B8JChORVhUX1NJR05BTF9IKXxnJyBcCi0tCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9QVEhSRUFEX1NJR01BU0snJ0B8JChHTlVMSUJfUFRIUkVBRF9TSUdNQVNLKXxnJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9TSUdOQUxfSF9TSUdQSVBFJydALyQoR05VTElCX1NJR05BTF9IX1NJR1BJUEUpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1NJR1BST0NNQVNLJydALyQoR05VTElCX1NJR1BST0NNQVNLKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9TSUdBQ1RJT04nJ0AvJChHTlVMSUJfU0lHQUNUSU9OKS9nJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9TSUdOQUxfSF9TSUdQSVBFJydAfCQoR05VTElCX1NJR05BTF9IX1NJR1BJUEUpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1NJR1BST0NNQVNLJydAfCQoR05VTElCX1NJR1BST0NNQVNLKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9TSUdBQ1RJT04nJ0B8JChHTlVMSUJfU0lHQUNUSU9OKXxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ0hBVkVfUE9TSVhfU0lHTkFMQkxPQ0tJTkcnJ0B8JChIQVZFX1BPU0lYX1NJR05BTEJMT0NLSU5HKXxnJyBcCi0tCSAgICAgIC1lICdzfEAnJ0hBVkVfUFRIUkVBRF9TSUdNQVNLJydAfCQoSEFWRV9QVEhSRUFEX1NJR01BU0spfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnSEFWRV9TSUdTRVRfVCcnQHwkKEhBVkVfU0lHU0VUX1QpfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnSEFWRV9TSUdJTkZPX1QnJ0B8JChIQVZFX1NJR0lORk9fVCl8ZycgXAotIAkgICAgICAtZSAnc3xAJydIQVZFX1NJR0FDVElPTicnQHwkKEhBVkVfU0lHQUNUSU9OKXxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ0hBVkVfU1RSVUNUX1NJR0FDVElPTl9TQV9TSUdBQ1RJT04nJ0B8JChIQVZFX1NUUlVDVF9TSUdBQ1RJT05fU0FfU0lHQUNUSU9OKXxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ0hBVkVfVFlQRV9WT0xBVElMRV9TSUdfQVRPTUlDX1QnJ0B8JChIQVZFX1RZUEVfVk9MQVRJTEVfU0lHX0FUT01JQ19UKXxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ0hBVkVfU0lHSEFORExFUl9UJydAfCQoSEFWRV9TSUdIQU5ETEVSX1QpfGcnIFwKLS0JICAgICAgLWUgJ3N8QCcnUkVQTEFDRV9QVEhSRUFEX1NJR01BU0snJ0B8JChSRVBMQUNFX1BUSFJFQURfU0lHTUFTSyl8ZycgXAotIAkgICAgICAtZSAnL2RlZmluaXRpb25zIG9mIF9HTF9GVU5DREVDTF9SUEwvciAkKENYWERFRlNfSCknIFwKLSAJICAgICAgLWUgJy9kZWZpbml0aW9uIG9mIF9HTF9BUkdfTk9OTlVMTC9yICQoQVJHX05PTk5VTExfSCknIFwKLSAJICAgICAgLWUgJy9kZWZpbml0aW9uIG9mIF9HTF9XQVJOX09OX1VTRS9yICQoV0FSTl9PTl9VU0VfSCknIFwKLUBAIC0zNjgsODcgKzQxMSw2IEBAIEVYVFJBX2xpYmljcnRfYV9TT1VSQ0VTICs9IHNpZ3Byb2NtYXNrLmMKLSAKLSAjIyBlbmQgICBnbnVsaWIgbW9kdWxlIHNpZ3Byb2NtYXNrCi0gCi0tIyMgYmVnaW4gZ251bGliIG1vZHVsZSBzbmlwcGV0L19Ob3JldHVybgotLQotLSMgQmVjYXVzZSB0aGlzIE1ha2VmaWxlIHNuaXBwZXQgZGVmaW5lcyBhIHZhcmlhYmxlIHVzZWQgYnkgb3RoZXIKLS0jIGdudWxpYiBNYWtlZmlsZSBzbmlwcGV0cywgaXQgbXVzdCBiZSBwcmVzZW50IGluIGFsbCBNYWtlZmlsZS5hbSB0aGF0Ci0tIyBuZWVkIGl0LiBUaGlzIGlzIGVuc3VyZWQgYnkgdGhlIGFwcGxpY2FiaWxpdHkgJ2FsbCcgZGVmaW5lZCBhYm92ZS4KLS0KLS1fTk9SRVRVUk5fSD0kKHRvcF9zcmNkaXIpL2J1aWxkLWF1eC9zbmlwcGV0L19Ob3JldHVybi5oCi0tCi0tRVhUUkFfRElTVCArPSAkKHRvcF9zcmNkaXIpL2J1aWxkLWF1eC9zbmlwcGV0L19Ob3JldHVybi5oCi0tCi0tIyMgZW5kICAgZ251bGliIG1vZHVsZSBzbmlwcGV0L19Ob3JldHVybgotLQotLSMjIGJlZ2luIGdudWxpYiBtb2R1bGUgc25pcHBldC9hcmctbm9ubnVsbAotLQotLSMgVGhlIEJVSUxUX1NPVVJDRVMgY3JlYXRlZCBieSB0aGlzIE1ha2VmaWxlIHNuaXBwZXQgYXJlIG5vdCB1c2VkIHZpYSAjaW5jbHVkZQotLSMgc3RhdGVtZW50cyBidXQgdGhyb3VnaCBkaXJlY3QgZmlsZSByZWZlcmVuY2UuIFRoZXJlZm9yZSB0aGlzIHNuaXBwZXQgbXVzdCBiZQotLSMgcHJlc2VudCBpbiBhbGwgTWFrZWZpbGUuYW0gdGhhdCBuZWVkIGl0LiBUaGlzIGlzIGVuc3VyZWQgYnkgdGhlIGFwcGxpY2FiaWxpdHkKLS0jICdhbGwnIGRlZmluZWQgYWJvdmUuCi0tCi0tQlVJTFRfU09VUkNFUyArPSBhcmctbm9ubnVsbC5oCi0tIyBUaGUgYXJnLW5vbm51bGwuaCB0aGF0IGdldHMgaW5zZXJ0ZWQgaW50byBnZW5lcmF0ZWQgLmggZmlsZXMgaXMgdGhlIHNhbWUgYXMKLS0jIGJ1aWxkLWF1eC9zbmlwcGV0L2FyZy1ub25udWxsLmgsIGV4Y2VwdCB0aGF0IGl0IGhhcyB0aGUgY29weXJpZ2h0IGhlYWRlciBjdXQKLS0jIG9mZi4KLS1hcmctbm9ubnVsbC5oOiAkKHRvcF9zcmNkaXIpL2J1aWxkLWF1eC9zbmlwcGV0L2FyZy1ub25udWxsLmgKLS0JJChBTV9WX0dFTilybSAtZiAkQC10ICRAICYmIFwKLS0Jc2VkIC1uIC1lICcvR0xfQVJHX05PTk5VTEwvLCQkcCcgXAotLQkgIDwgJCh0b3Bfc3JjZGlyKS9idWlsZC1hdXgvc25pcHBldC9hcmctbm9ubnVsbC5oIFwKLS0JICA+ICRALXQgJiYgXAotLQltdiAkQC10ICRACi0tTU9TVExZQ0xFQU5GSUxFUyArPSBhcmctbm9ubnVsbC5oIGFyZy1ub25udWxsLmgtdAotLQotLUFSR19OT05OVUxMX0g9YXJnLW5vbm51bGwuaAotLQotLUVYVFJBX0RJU1QgKz0gJCh0b3Bfc3JjZGlyKS9idWlsZC1hdXgvc25pcHBldC9hcmctbm9ubnVsbC5oCi0tCi0tIyMgZW5kICAgZ251bGliIG1vZHVsZSBzbmlwcGV0L2FyZy1ub25udWxsCi0tCi0tIyMgYmVnaW4gZ251bGliIG1vZHVsZSBzbmlwcGV0L2MrK2RlZnMKLS0KLS0jIFRoZSBCVUlMVF9TT1VSQ0VTIGNyZWF0ZWQgYnkgdGhpcyBNYWtlZmlsZSBzbmlwcGV0IGFyZSBub3QgdXNlZCB2aWEgI2luY2x1ZGUKLS0jIHN0YXRlbWVudHMgYnV0IHRocm91Z2ggZGlyZWN0IGZpbGUgcmVmZXJlbmNlLiBUaGVyZWZvcmUgdGhpcyBzbmlwcGV0IG11c3QgYmUKLS0jIHByZXNlbnQgaW4gYWxsIE1ha2VmaWxlLmFtIHRoYXQgbmVlZCBpdC4gVGhpcyBpcyBlbnN1cmVkIGJ5IHRoZSBhcHBsaWNhYmlsaXR5Ci0tIyAnYWxsJyBkZWZpbmVkIGFib3ZlLgotLQotLUJVSUxUX1NPVVJDRVMgKz0gYysrZGVmcy5oCi0tIyBUaGUgYysrZGVmcy5oIHRoYXQgZ2V0cyBpbnNlcnRlZCBpbnRvIGdlbmVyYXRlZCAuaCBmaWxlcyBpcyB0aGUgc2FtZSBhcwotLSMgYnVpbGQtYXV4L3NuaXBwZXQvYysrZGVmcy5oLCBleGNlcHQgdGhhdCBpdCBoYXMgdGhlIGNvcHlyaWdodCBoZWFkZXIgY3V0IG9mZi4KLS1jKytkZWZzLmg6ICQodG9wX3NyY2RpcikvYnVpbGQtYXV4L3NuaXBwZXQvYysrZGVmcy5oCi0tCSQoQU1fVl9HRU4pcm0gLWYgJEAtdCAkQCAmJiBcCi0tCXNlZCAtbiAtZSAnL19HTF9DWFhERUZTLywkJHAnIFwKLS0JICA8ICQodG9wX3NyY2RpcikvYnVpbGQtYXV4L3NuaXBwZXQvYysrZGVmcy5oIFwKLS0JICA+ICRALXQgJiYgXAotLQltdiAkQC10ICRACi0tTU9TVExZQ0xFQU5GSUxFUyArPSBjKytkZWZzLmggYysrZGVmcy5oLXQKLS0KLS1DWFhERUZTX0g9YysrZGVmcy5oCi0tCi0tRVhUUkFfRElTVCArPSAkKHRvcF9zcmNkaXIpL2J1aWxkLWF1eC9zbmlwcGV0L2MrK2RlZnMuaAotLQotLSMjIGVuZCAgIGdudWxpYiBtb2R1bGUgc25pcHBldC9jKytkZWZzCi0tCi0tIyMgYmVnaW4gZ251bGliIG1vZHVsZSBzbmlwcGV0L3dhcm4tb24tdXNlCi0tCi0tQlVJTFRfU09VUkNFUyArPSB3YXJuLW9uLXVzZS5oCi0tIyBUaGUgd2Fybi1vbi11c2UuaCB0aGF0IGdldHMgaW5zZXJ0ZWQgaW50byBnZW5lcmF0ZWQgLmggZmlsZXMgaXMgdGhlIHNhbWUgYXMKLS0jIGJ1aWxkLWF1eC9zbmlwcGV0L3dhcm4tb24tdXNlLmgsIGV4Y2VwdCB0aGF0IGl0IGhhcyB0aGUgY29weXJpZ2h0IGhlYWRlciBjdXQKLS0jIG9mZi4KLS13YXJuLW9uLXVzZS5oOiAkKHRvcF9zcmNkaXIpL2J1aWxkLWF1eC9zbmlwcGV0L3dhcm4tb24tdXNlLmgKLS0JJChBTV9WX0dFTilybSAtZiAkQC10ICRAICYmIFwKLS0Jc2VkIC1uIC1lICcvXi5pZm5kZWYvLCQkcCcgXAotLQkgIDwgJCh0b3Bfc3JjZGlyKS9idWlsZC1hdXgvc25pcHBldC93YXJuLW9uLXVzZS5oIFwKLS0JICA+ICRALXQgJiYgXAotLQltdiAkQC10ICRACi0tTU9TVExZQ0xFQU5GSUxFUyArPSB3YXJuLW9uLXVzZS5oIHdhcm4tb24tdXNlLmgtdAotLQotLVdBUk5fT05fVVNFX0g9d2Fybi1vbi11c2UuaAotLQotLUVYVFJBX0RJU1QgKz0gJCh0b3Bfc3JjZGlyKS9idWlsZC1hdXgvc25pcHBldC93YXJuLW9uLXVzZS5oCi0tCi0tIyMgZW5kICAgZ251bGliIG1vZHVsZSBzbmlwcGV0L3dhcm4tb24tdXNlCi0tCi0gIyMgYmVnaW4gZ251bGliIG1vZHVsZSBzdGF0Ci0gCi0gCi1AQCAtNDkxLDggKzQ1Myw3IEBAIGlmIEdMX0dFTkVSQVRFX1NURERFRl9ICi0gc3RkZGVmLmg6IHN0ZGRlZi5pbi5oICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzCi0gCSQoQU1fVl9HRU4pcm0gLWYgJEAtdCAkQCAmJiBcCi0gCXsgZWNobyAnLyogRE8gTk9UIEVESVQhIEdFTkVSQVRFRCBBVVRPTUFUSUNBTExZISAqLycgJiYgXAotLQkgIHNlZCAtZSAnc3xAJydHVUFSRF9QUkVGSVgnJ0B8R0x8ZycgXAotLQkgICAgICAtZSAnc3xAJydJTkNMVURFX05FWFQnJ0B8JChJTkNMVURFX05FWFQpfGcnIFwKLSsJICBzZWQgLWUgJ3N8QCcnSU5DTFVERV9ORVhUJydAfCQoSU5DTFVERV9ORVhUKXxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ1BSQUdNQV9TWVNURU1fSEVBREVSJydAfEBQUkFHTUFfU1lTVEVNX0hFQURFUkB8ZycgXAotIAkgICAgICAtZSAnc3xAJydQUkFHTUFfQ09MVU1OUycnQHxAUFJBR01BX0NPTFVNTlNAfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnTkVYVF9TVERERUZfSCcnQHwkKE5FWFRfU1REREVGX0gpfGcnIFwKLUBAIC01MjEsOCArNDgyLDcgQEAgaWYgR0xfR0VORVJBVEVfU1RESU5UX0gKLSBzdGRpbnQuaDogc3RkaW50LmluLmggJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMKLSAJJChBTV9WX0dFTilybSAtZiAkQC10ICRAICYmIFwKLSAJeyBlY2hvICcvKiBETyBOT1QgRURJVCEgR0VORVJBVEVEIEFVVE9NQVRJQ0FMTFkhICovJzsgXAotLQkgIHNlZCAtZSAnc3xAJydHVUFSRF9QUkVGSVgnJ0B8R0x8ZycgXAotLQkgICAgICAtZSAncy9AJydIQVZFX1NURElOVF9IJydALyQoSEFWRV9TVERJTlRfSCkvZycgXAotKwkgIHNlZCAtZSAncy9AJydIQVZFX1NURElOVF9IJydALyQoSEFWRV9TVERJTlRfSCkvZycgXAotIAkgICAgICAtZSAnc3xAJydJTkNMVURFX05FWFQnJ0B8JChJTkNMVURFX05FWFQpfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnUFJBR01BX1NZU1RFTV9IRUFERVInJ0B8QFBSQUdNQV9TWVNURU1fSEVBREVSQHxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ1BSQUdNQV9DT0xVTU5TJydAfEBQUkFHTUFfQ09MVU1OU0B8ZycgXAotQEAgLTU3MCw2MyArNTMwLDYyIEBAIEJVSUxUX1NPVVJDRVMgKz0gc3RkaW8uaAotIHN0ZGlvLmg6IHN0ZGlvLmluLmggJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMgJChDWFhERUZTX0gpICQoQVJHX05PTk5VTExfSCkgJChXQVJOX09OX1VTRV9IKQotIAkkKEFNX1ZfR0VOKXJtIC1mICRALXQgJEAgJiYgXAotIAl7IGVjaG8gJy8qIERPIE5PVCBFRElUISBHRU5FUkFURUQgQVVUT01BVElDQUxMWSEgKi8nICYmIFwKLS0JICBzZWQgLWUgJ3N8QCcnR1VBUkRfUFJFRklYJydAfEdMfGcnIFwKLS0JICAgICAgLWUgJ3N8QCcnSU5DTFVERV9ORVhUJydAfCQoSU5DTFVERV9ORVhUKXxnJyBcCi0rCSAgc2VkIC1lICdzfEAnJ0lOQ0xVREVfTkVYVCcnQHwkKElOQ0xVREVfTkVYVCl8ZycgXAotIAkgICAgICAtZSAnc3xAJydQUkFHTUFfU1lTVEVNX0hFQURFUicnQHxAUFJBR01BX1NZU1RFTV9IRUFERVJAfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnUFJBR01BX0NPTFVNTlMnJ0B8QFBSQUdNQV9DT0xVTU5TQHxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ05FWFRfU1RESU9fSCcnQHwkKE5FWFRfU1RESU9fSCl8ZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfRFBSSU5URicnQC8kKEdOVUxJQl9EUFJJTlRGKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9GQ0xPU0UnJ0AvJChHTlVMSUJfRkNMT1NFKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9GRkxVU0gnJ0AvJChHTlVMSUJfRkZMVVNIKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9GR0VUQycnQC8kKEdOVUxJQl9GR0VUQykvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfRkdFVFMnJ0AvJChHTlVMSUJfRkdFVFMpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0ZPUEVOJydALyQoR05VTElCX0ZPUEVOKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9GUFJJTlRGJydALyQoR05VTElCX0ZQUklOVEYpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0ZQUklOVEZfUE9TSVgnJ0AvJChHTlVMSUJfRlBSSU5URl9QT1NJWCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfRlBVUkdFJydALyQoR05VTElCX0ZQVVJHRSkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfRlBVVEMnJ0AvJChHTlVMSUJfRlBVVEMpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0ZQVVRTJydALyQoR05VTElCX0ZQVVRTKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9GUkVBRCcnQC8kKEdOVUxJQl9GUkVBRCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfRlJFT1BFTicnQC8kKEdOVUxJQl9GUkVPUEVOKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9GU0NBTkYnJ0AvJChHTlVMSUJfRlNDQU5GKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9GU0VFSycnQC8kKEdOVUxJQl9GU0VFSykvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfRlNFRUtPJydALyQoR05VTElCX0ZTRUVLTykvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfRlRFTEwnJ0AvJChHTlVMSUJfRlRFTEwpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0ZURUxMTycnQC8kKEdOVUxJQl9GVEVMTE8pL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0ZXUklURScnQC8kKEdOVUxJQl9GV1JJVEUpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0dFVEMnJ0AvJChHTlVMSUJfR0VUQykvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfR0VUQ0hBUicnQC8kKEdOVUxJQl9HRVRDSEFSKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9HRVRERUxJTScnQC8kKEdOVUxJQl9HRVRERUxJTSkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfR0VUTElORScnQC8kKEdOVUxJQl9HRVRMSU5FKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9HRVRTJydALyQoR05VTElCX0dFVFMpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX09CU1RBQ0tfUFJJTlRGJydALyQoR05VTElCX09CU1RBQ0tfUFJJTlRGKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9PQlNUQUNLX1BSSU5URl9QT1NJWCcnQC8kKEdOVUxJQl9PQlNUQUNLX1BSSU5URl9QT1NJWCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfUEVSUk9SJydALyQoR05VTElCX1BFUlJPUikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfUE9QRU4nJ0AvJChHTlVMSUJfUE9QRU4pL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1BSSU5URicnQC8kKEdOVUxJQl9QUklOVEYpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1BSSU5URl9QT1NJWCcnQC8kKEdOVUxJQl9QUklOVEZfUE9TSVgpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1BVVEMnJ0AvJChHTlVMSUJfUFVUQykvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfUFVUQ0hBUicnQC8kKEdOVUxJQl9QVVRDSEFSKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9QVVRTJydALyQoR05VTElCX1BVVFMpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1JFTU9WRScnQC8kKEdOVUxJQl9SRU1PVkUpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1JFTkFNRScnQC8kKEdOVUxJQl9SRU5BTUUpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1JFTkFNRUFUJydALyQoR05VTElCX1JFTkFNRUFUKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9TQ0FORicnQC8kKEdOVUxJQl9TQ0FORikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfU05QUklOVEYnJ0AvJChHTlVMSUJfU05QUklOVEYpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1NQUklOVEZfUE9TSVgnJ0AvJChHTlVMSUJfU1BSSU5URl9QT1NJWCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfU1RESU9fSF9OT05CTE9DS0lORycnQC8kKEdOVUxJQl9TVERJT19IX05PTkJMT0NLSU5HKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9TVERJT19IX1NJR1BJUEUnJ0AvJChHTlVMSUJfU1RESU9fSF9TSUdQSVBFKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9UTVBGSUxFJydALyQoR05VTElCX1RNUEZJTEUpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1ZBU1BSSU5URicnQC8kKEdOVUxJQl9WQVNQUklOVEYpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1ZEUFJJTlRGJydALyQoR05VTElCX1ZEUFJJTlRGKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9WRlBSSU5URicnQC8kKEdOVUxJQl9WRlBSSU5URikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfVkZQUklOVEZfUE9TSVgnJ0AvJChHTlVMSUJfVkZQUklOVEZfUE9TSVgpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1ZGU0NBTkYnJ0AvJChHTlVMSUJfVkZTQ0FORikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfVlNDQU5GJydALyQoR05VTElCX1ZTQ0FORikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfVlBSSU5URicnQC8kKEdOVUxJQl9WUFJJTlRGKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9WUFJJTlRGX1BPU0lYJydALyQoR05VTElCX1ZQUklOVEZfUE9TSVgpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1ZTTlBSSU5URicnQC8kKEdOVUxJQl9WU05QUklOVEYpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1ZTUFJJTlRGX1BPU0lYJydALyQoR05VTElCX1ZTUFJJTlRGX1BPU0lYKS9nJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9EUFJJTlRGJydAfCQoR05VTElCX0RQUklOVEYpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0ZDTE9TRScnQHwkKEdOVUxJQl9GQ0xPU0UpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0ZGTFVTSCcnQHwkKEdOVUxJQl9GRkxVU0gpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0ZHRVRDJydAfCQoR05VTElCX0ZHRVRDKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9GR0VUUycnQHwkKEdOVUxJQl9GR0VUUyl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfRk9QRU4nJ0B8JChHTlVMSUJfRk9QRU4pfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0ZQUklOVEYnJ0B8JChHTlVMSUJfRlBSSU5URil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfRlBSSU5URl9QT1NJWCcnQHwkKEdOVUxJQl9GUFJJTlRGX1BPU0lYKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9GUFVSR0UnJ0B8JChHTlVMSUJfRlBVUkdFKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9GUFVUQycnQHwkKEdOVUxJQl9GUFVUQyl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfRlBVVFMnJ0B8JChHTlVMSUJfRlBVVFMpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0ZSRUFEJydAfCQoR05VTElCX0ZSRUFEKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9GUkVPUEVOJydAfCQoR05VTElCX0ZSRU9QRU4pfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0ZTQ0FORicnQHwkKEdOVUxJQl9GU0NBTkYpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0ZTRUVLJydAfCQoR05VTElCX0ZTRUVLKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9GU0VFS08nJ0B8JChHTlVMSUJfRlNFRUtPKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9GVEVMTCcnQHwkKEdOVUxJQl9GVEVMTCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfRlRFTExPJydAfCQoR05VTElCX0ZURUxMTyl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfRldSSVRFJydAfCQoR05VTElCX0ZXUklURSl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfR0VUQycnQHwkKEdOVUxJQl9HRVRDKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9HRVRDSEFSJydAfCQoR05VTElCX0dFVENIQVIpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0dFVERFTElNJydAfCQoR05VTElCX0dFVERFTElNKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9HRVRMSU5FJydAfCQoR05VTElCX0dFVExJTkUpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0dFVFMnJ0B8JChHTlVMSUJfR0VUUyl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfT0JTVEFDS19QUklOVEYnJ0B8JChHTlVMSUJfT0JTVEFDS19QUklOVEYpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX09CU1RBQ0tfUFJJTlRGX1BPU0lYJydAfCQoR05VTElCX09CU1RBQ0tfUFJJTlRGX1BPU0lYKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9QRVJST1InJ0B8JChHTlVMSUJfUEVSUk9SKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9QT1BFTicnQHwkKEdOVUxJQl9QT1BFTil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfUFJJTlRGJydAfCQoR05VTElCX1BSSU5URil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfUFJJTlRGX1BPU0lYJydAfCQoR05VTElCX1BSSU5URl9QT1NJWCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfUFVUQycnQHwkKEdOVUxJQl9QVVRDKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9QVVRDSEFSJydAfCQoR05VTElCX1BVVENIQVIpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1BVVFMnJ0B8JChHTlVMSUJfUFVUUyl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfUkVNT1ZFJydAfCQoR05VTElCX1JFTU9WRSl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfUkVOQU1FJydAfCQoR05VTElCX1JFTkFNRSl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfUkVOQU1FQVQnJ0B8JChHTlVMSUJfUkVOQU1FQVQpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1NDQU5GJydAfCQoR05VTElCX1NDQU5GKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9TTlBSSU5URicnQHwkKEdOVUxJQl9TTlBSSU5URil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfU1BSSU5URl9QT1NJWCcnQHwkKEdOVUxJQl9TUFJJTlRGX1BPU0lYKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9TVERJT19IX05PTkJMT0NLSU5HJydAfCQoR05VTElCX1NURElPX0hfTk9OQkxPQ0tJTkcpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1NURElPX0hfU0lHUElQRScnQHwkKEdOVUxJQl9TVERJT19IX1NJR1BJUEUpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1RNUEZJTEUnJ0B8JChHTlVMSUJfVE1QRklMRSl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfVkFTUFJJTlRGJydAfCQoR05VTElCX1ZBU1BSSU5URil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfVkRQUklOVEYnJ0B8JChHTlVMSUJfVkRQUklOVEYpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1ZGUFJJTlRGJydAfCQoR05VTElCX1ZGUFJJTlRGKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9WRlBSSU5URl9QT1NJWCcnQHwkKEdOVUxJQl9WRlBSSU5URl9QT1NJWCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfVkZTQ0FORicnQHwkKEdOVUxJQl9WRlNDQU5GKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9WU0NBTkYnJ0B8JChHTlVMSUJfVlNDQU5GKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9WUFJJTlRGJydAfCQoR05VTElCX1ZQUklOVEYpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1ZQUklOVEZfUE9TSVgnJ0B8JChHTlVMSUJfVlBSSU5URl9QT1NJWCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfVlNOUFJJTlRGJydAfCQoR05VTElCX1ZTTlBSSU5URil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfVlNQUklOVEZfUE9TSVgnJ0B8JChHTlVMSUJfVlNQUklOVEZfUE9TSVgpfGcnIFwKLSAJICAgICAgPCAkKHNyY2Rpcikvc3RkaW8uaW4uaCB8IFwKLSAJICBzZWQgLWUgJ3N8QCcnSEFWRV9ERUNMX0ZQVVJHRScnQHwkKEhBVkVfREVDTF9GUFVSR0UpfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnSEFWRV9ERUNMX0ZTRUVLTycnQHwkKEhBVkVfREVDTF9GU0VFS08pfGcnIFwKLUBAIC02OTEsNDMgKzY1MCw0MSBAQCBCVUlMVF9TT1VSQ0VTICs9IHN0ZGxpYi5oCi0gCi0gIyBXZSBuZWVkIHRoZSBmb2xsb3dpbmcgaW4gb3JkZXIgdG8gY3JlYXRlIDxzdGRsaWIuaD4gd2hlbiB0aGUgc3lzdGVtCi0gIyBkb2Vzbid0IGhhdmUgb25lIHRoYXQgd29ya3Mgd2l0aCB0aGUgZ2l2ZW4gY29tcGlsZXIuCi0tc3RkbGliLmg6IHN0ZGxpYi5pbi5oICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzICQoQ1hYREVGU19IKSBcCi0tICAkKF9OT1JFVFVSTl9IKSAkKEFSR19OT05OVUxMX0gpICQoV0FSTl9PTl9VU0VfSCkKLStzdGRsaWIuaDogc3RkbGliLmluLmggJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMgJChDWFhERUZTX0gpICQoQVJHX05PTk5VTExfSCkgJChXQVJOX09OX1VTRV9IKQotIAkkKEFNX1ZfR0VOKXJtIC1mICRALXQgJEAgJiYgXAotIAl7IGVjaG8gJy8qIERPIE5PVCBFRElUISBHRU5FUkFURUQgQVVUT01BVElDQUxMWSEgKi8nICYmIFwKLS0JICBzZWQgLWUgJ3N8QCcnR1VBUkRfUFJFRklYJydAfEdMfGcnIFwKLS0JICAgICAgLWUgJ3N8QCcnSU5DTFVERV9ORVhUJydAfCQoSU5DTFVERV9ORVhUKXxnJyBcCi0rCSAgc2VkIC1lICdzfEAnJ0lOQ0xVREVfTkVYVCcnQHwkKElOQ0xVREVfTkVYVCl8ZycgXAotIAkgICAgICAtZSAnc3xAJydQUkFHTUFfU1lTVEVNX0hFQURFUicnQHxAUFJBR01BX1NZU1RFTV9IRUFERVJAfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnUFJBR01BX0NPTFVNTlMnJ0B8QFBSQUdNQV9DT0xVTU5TQHxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ05FWFRfU1RETElCX0gnJ0B8JChORVhUX1NURExJQl9IKXxnJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9fRVhJVCcnQC8kKEdOVUxJQl9fRVhJVCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfQVRPTEwnJ0AvJChHTlVMSUJfQVRPTEwpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0NBTExPQ19QT1NJWCcnQC8kKEdOVUxJQl9DQUxMT0NfUE9TSVgpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0NBTk9OSUNBTElaRV9GSUxFX05BTUUnJ0AvJChHTlVMSUJfQ0FOT05JQ0FMSVpFX0ZJTEVfTkFNRSkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfR0VUTE9BREFWRycnQC8kKEdOVUxJQl9HRVRMT0FEQVZHKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9HRVRTVUJPUFQnJ0AvJChHTlVMSUJfR0VUU1VCT1BUKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9HUkFOVFBUJydALyQoR05VTElCX0dSQU5UUFQpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX01BTExPQ19QT1NJWCcnQC8kKEdOVUxJQl9NQUxMT0NfUE9TSVgpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX01CVE9XQycnQC8kKEdOVUxJQl9NQlRPV0MpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX01LRFRFTVAnJ0AvJChHTlVMSUJfTUtEVEVNUCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfTUtPU1RFTVAnJ0AvJChHTlVMSUJfTUtPU1RFTVApL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX01LT1NURU1QUycnQC8kKEdOVUxJQl9NS09TVEVNUFMpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX01LU1RFTVAnJ0AvJChHTlVMSUJfTUtTVEVNUCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfTUtTVEVNUFMnJ0AvJChHTlVMSUJfTUtTVEVNUFMpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1BUU05BTUUnJ0AvJChHTlVMSUJfUFRTTkFNRSkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfUFVURU5WJydALyQoR05VTElCX1BVVEVOVikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfUkFORE9NX1InJ0AvJChHTlVMSUJfUkFORE9NX1IpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1JFQUxMT0NfUE9TSVgnJ0AvJChHTlVMSUJfUkVBTExPQ19QT1NJWCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfUkVBTFBBVEgnJ0AvJChHTlVMSUJfUkVBTFBBVEgpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1JQTUFUQ0gnJ0AvJChHTlVMSUJfUlBNQVRDSCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfU0VURU5WJydALyQoR05VTElCX1NFVEVOVikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfU1RSVE9EJydALyQoR05VTElCX1NUUlRPRCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfU1RSVE9MTCcnQC8kKEdOVUxJQl9TVFJUT0xMKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9TVFJUT1VMTCcnQC8kKEdOVUxJQl9TVFJUT1VMTCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfU1lTVEVNX1BPU0lYJydALyQoR05VTElCX1NZU1RFTV9QT1NJWCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfVU5MT0NLUFQnJ0AvJChHTlVMSUJfVU5MT0NLUFQpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1VOU0VURU5WJydALyQoR05VTElCX1VOU0VURU5WKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9XQ1RPTUInJ0AvJChHTlVMSUJfV0NUT01CKS9nJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9fRVhJVCcnQHwkKEdOVUxJQl9fRVhJVCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfQVRPTEwnJ0B8JChHTlVMSUJfQVRPTEwpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0NBTExPQ19QT1NJWCcnQHwkKEdOVUxJQl9DQUxMT0NfUE9TSVgpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0NBTk9OSUNBTElaRV9GSUxFX05BTUUnJ0B8JChHTlVMSUJfQ0FOT05JQ0FMSVpFX0ZJTEVfTkFNRSl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfR0VUTE9BREFWRycnQHwkKEdOVUxJQl9HRVRMT0FEQVZHKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9HRVRTVUJPUFQnJ0B8JChHTlVMSUJfR0VUU1VCT1BUKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9HUkFOVFBUJydAfCQoR05VTElCX0dSQU5UUFQpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX01BTExPQ19QT1NJWCcnQHwkKEdOVUxJQl9NQUxMT0NfUE9TSVgpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX01CVE9XQycnQHwkKEdOVUxJQl9NQlRPV0MpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX01LRFRFTVAnJ0B8JChHTlVMSUJfTUtEVEVNUCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfTUtPU1RFTVAnJ0B8JChHTlVMSUJfTUtPU1RFTVApfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX01LT1NURU1QUycnQHwkKEdOVUxJQl9NS09TVEVNUFMpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX01LU1RFTVAnJ0B8JChHTlVMSUJfTUtTVEVNUCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfTUtTVEVNUFMnJ0B8JChHTlVMSUJfTUtTVEVNUFMpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1BUU05BTUUnJ0B8JChHTlVMSUJfUFRTTkFNRSl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfUFVURU5WJydAfCQoR05VTElCX1BVVEVOVil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfUkFORE9NX1InJ0B8JChHTlVMSUJfUkFORE9NX1IpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1JFQUxMT0NfUE9TSVgnJ0B8JChHTlVMSUJfUkVBTExPQ19QT1NJWCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfUkVBTFBBVEgnJ0B8JChHTlVMSUJfUkVBTFBBVEgpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1JQTUFUQ0gnJ0B8JChHTlVMSUJfUlBNQVRDSCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfU0VURU5WJydAfCQoR05VTElCX1NFVEVOVil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfU1RSVE9EJydAfCQoR05VTElCX1NUUlRPRCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfU1RSVE9MTCcnQHwkKEdOVUxJQl9TVFJUT0xMKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9TVFJUT1VMTCcnQHwkKEdOVUxJQl9TVFJUT1VMTCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfU1lTVEVNX1BPU0lYJydAfCQoR05VTElCX1NZU1RFTV9QT1NJWCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfVU5MT0NLUFQnJ0B8JChHTlVMSUJfVU5MT0NLUFQpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1VOU0VURU5WJydAfCQoR05VTElCX1VOU0VURU5WKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9XQ1RPTUInJ0B8JChHTlVMSUJfV0NUT01CKXxnJyBcCi0gCSAgICAgIDwgJChzcmNkaXIpL3N0ZGxpYi5pbi5oIHwgXAotIAkgIHNlZCAtZSAnc3xAJydIQVZFX19FWElUJydAfCQoSEFWRV9fRVhJVCl8ZycgXAotIAkgICAgICAtZSAnc3xAJydIQVZFX0FUT0xMJydAfCQoSEFWRV9BVE9MTCl8ZycgXAotQEAgLTc2Niw3ICs3MjMsNiBAQCBzdGRsaWIuaDogc3RkbGliLmluLmggJCh0b3BfYnVpbGRkaXIpL2NvCi0gCSAgICAgIC1lICdzfEAnJ1JFUExBQ0VfVU5TRVRFTlYnJ0B8JChSRVBMQUNFX1VOU0VURU5WKXxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ1JFUExBQ0VfV0NUT01CJydAfCQoUkVQTEFDRV9XQ1RPTUIpfGcnIFwKLSAJICAgICAgLWUgJy9kZWZpbml0aW9ucyBvZiBfR0xfRlVOQ0RFQ0xfUlBML3IgJChDWFhERUZTX0gpJyBcCi0tCSAgICAgIC1lICcvZGVmaW5pdGlvbiBvZiBfTm9yZXR1cm4vciAkKF9OT1JFVFVSTl9IKScgXAotIAkgICAgICAtZSAnL2RlZmluaXRpb24gb2YgX0dMX0FSR19OT05OVUxML3IgJChBUkdfTk9OTlVMTF9IKScgXAotIAkgICAgICAtZSAnL2RlZmluaXRpb24gb2YgX0dMX1dBUk5fT05fVVNFL3IgJChXQVJOX09OX1VTRV9IKSc7IFwKLSAJfSA+ICRALXQgJiYgXAotQEAgLTc5MywxNSArNzQ5LDYgQEAgRVhUUkFfbGliaWNydF9hX1NPVVJDRVMgKz0gc3RyZXJyb3IuYwotIAotICMjIGVuZCAgIGdudWxpYiBtb2R1bGUgc3RyZXJyb3IKLSAKLS0jIyBiZWdpbiBnbnVsaWIgbW9kdWxlIHN0cmVycm9yLW92ZXJyaWRlCi0tCi0tCi0tRVhUUkFfRElTVCArPSBzdHJlcnJvci1vdmVycmlkZS5jIHN0cmVycm9yLW92ZXJyaWRlLmgKLS0KLS1FWFRSQV9saWJpY3J0X2FfU09VUkNFUyArPSBzdHJlcnJvci1vdmVycmlkZS5jCi0tCi0tIyMgZW5kICAgZ251bGliIG1vZHVsZSBzdHJlcnJvci1vdmVycmlkZQotLQotICMjIGJlZ2luIGdudWxpYiBtb2R1bGUgc3RyaW5nCi0gCi0gQlVJTFRfU09VUkNFUyArPSBzdHJpbmcuaAotQEAgLTgxMSw1MiArNzU4LDQ3IEBAIEJVSUxUX1NPVVJDRVMgKz0gc3RyaW5nLmgKLSBzdHJpbmcuaDogc3RyaW5nLmluLmggJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMgJChDWFhERUZTX0gpICQoQVJHX05PTk5VTExfSCkgJChXQVJOX09OX1VTRV9IKQotIAkkKEFNX1ZfR0VOKXJtIC1mICRALXQgJEAgJiYgXAotIAl7IGVjaG8gJy8qIERPIE5PVCBFRElUISBHRU5FUkFURUQgQVVUT01BVElDQUxMWSEgKi8nICYmIFwKLS0JICBzZWQgLWUgJ3N8QCcnR1VBUkRfUFJFRklYJydAfEdMfGcnIFwKLS0JICAgICAgLWUgJ3N8QCcnSU5DTFVERV9ORVhUJydAfCQoSU5DTFVERV9ORVhUKXxnJyBcCi0rCSAgc2VkIC1lICdzfEAnJ0lOQ0xVREVfTkVYVCcnQHwkKElOQ0xVREVfTkVYVCl8ZycgXAotIAkgICAgICAtZSAnc3xAJydQUkFHTUFfU1lTVEVNX0hFQURFUicnQHxAUFJBR01BX1NZU1RFTV9IRUFERVJAfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnUFJBR01BX0NPTFVNTlMnJ0B8QFBSQUdNQV9DT0xVTU5TQHxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ05FWFRfU1RSSU5HX0gnJ0B8JChORVhUX1NUUklOR19IKXxnJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9GRlNMJydALyQoR05VTElCX0ZGU0wpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0ZGU0xMJydALyQoR05VTElCX0ZGU0xMKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9NQlNMRU4nJ0AvJChHTlVMSUJfTUJTTEVOKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9NQlNOTEVOJydALyQoR05VTElCX01CU05MRU4pL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX01CU0NIUicnQC8kKEdOVUxJQl9NQlNDSFIpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX01CU1JDSFInJ0AvJChHTlVMSUJfTUJTUkNIUikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfTUJTU1RSJydALyQoR05VTElCX01CU1NUUikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfTUJTQ0FTRUNNUCcnQC8kKEdOVUxJQl9NQlNDQVNFQ01QKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9NQlNOQ0FTRUNNUCcnQC8kKEdOVUxJQl9NQlNOQ0FTRUNNUCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfTUJTUENBU0VDTVAnJ0AvJChHTlVMSUJfTUJTUENBU0VDTVApL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX01CU0NBU0VTVFInJ0AvJChHTlVMSUJfTUJTQ0FTRVNUUikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfTUJTQ1NQTicnQC8kKEdOVUxJQl9NQlNDU1BOKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9NQlNQQlJLJydALyQoR05VTElCX01CU1BCUkspL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX01CU1NQTicnQC8kKEdOVUxJQl9NQlNTUE4pL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX01CU1NFUCcnQC8kKEdOVUxJQl9NQlNTRVApL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX01CU1RPS19SJydALyQoR05VTElCX01CU1RPS19SKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9NRU1DSFInJ0AvJChHTlVMSUJfTUVNQ0hSKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9NRU1NRU0nJ0AvJChHTlVMSUJfTUVNTUVNKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9NRU1QQ1BZJydALyQoR05VTElCX01FTVBDUFkpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX01FTVJDSFInJ0AvJChHTlVMSUJfTUVNUkNIUikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfUkFXTUVNQ0hSJydALyQoR05VTElCX1JBV01FTUNIUikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfU1RQQ1BZJydALyQoR05VTElCX1NUUENQWSkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfU1RQTkNQWScnQC8kKEdOVUxJQl9TVFBOQ1BZKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9TVFJDSFJOVUwnJ0AvJChHTlVMSUJfU1RSQ0hSTlVMKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9TVFJEVVAnJ0AvJChHTlVMSUJfU1RSRFVQKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9TVFJOQ0FUJydALyQoR05VTElCX1NUUk5DQVQpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1NUUk5EVVAnJ0AvJChHTlVMSUJfU1RSTkRVUCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfU1RSTkxFTicnQC8kKEdOVUxJQl9TVFJOTEVOKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9TVFJQQlJLJydALyQoR05VTElCX1NUUlBCUkspL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1NUUlNFUCcnQC8kKEdOVUxJQl9TVFJTRVApL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1NUUlNUUicnQC8kKEdOVUxJQl9TVFJTVFIpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1NUUkNBU0VTVFInJ0AvJChHTlVMSUJfU1RSQ0FTRVNUUikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfU1RSVE9LX1InJ0AvJChHTlVMSUJfU1RSVE9LX1IpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1NUUkVSUk9SJydALyQoR05VTElCX1NUUkVSUk9SKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9TVFJFUlJPUl9SJydALyQoR05VTElCX1NUUkVSUk9SX1IpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1NUUlNJR05BTCcnQC8kKEdOVUxJQl9TVFJTSUdOQUwpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1NUUlZFUlNDTVAnJ0AvJChHTlVMSUJfU1RSVkVSU0NNUCkvZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfTUJTTEVOJydAfCQoR05VTElCX01CU0xFTil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfTUJTTkxFTicnQHwkKEdOVUxJQl9NQlNOTEVOKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9NQlNDSFInJ0B8JChHTlVMSUJfTUJTQ0hSKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9NQlNSQ0hSJydAfCQoR05VTElCX01CU1JDSFIpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX01CU1NUUicnQHwkKEdOVUxJQl9NQlNTVFIpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX01CU0NBU0VDTVAnJ0B8JChHTlVMSUJfTUJTQ0FTRUNNUCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfTUJTTkNBU0VDTVAnJ0B8JChHTlVMSUJfTUJTTkNBU0VDTVApfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX01CU1BDQVNFQ01QJydAfCQoR05VTElCX01CU1BDQVNFQ01QKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9NQlNDQVNFU1RSJydAfCQoR05VTElCX01CU0NBU0VTVFIpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX01CU0NTUE4nJ0B8JChHTlVMSUJfTUJTQ1NQTil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfTUJTUEJSSycnQHwkKEdOVUxJQl9NQlNQQlJLKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9NQlNTUE4nJ0B8JChHTlVMSUJfTUJTU1BOKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9NQlNTRVAnJ0B8JChHTlVMSUJfTUJTU0VQKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9NQlNUT0tfUicnQHwkKEdOVUxJQl9NQlNUT0tfUil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfTUVNQ0hSJydAfCQoR05VTElCX01FTUNIUil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfTUVNTUVNJydAfCQoR05VTElCX01FTU1FTSl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfTUVNUENQWScnQHwkKEdOVUxJQl9NRU1QQ1BZKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9NRU1SQ0hSJydAfCQoR05VTElCX01FTVJDSFIpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1JBV01FTUNIUicnQHwkKEdOVUxJQl9SQVdNRU1DSFIpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1NUUENQWScnQHwkKEdOVUxJQl9TVFBDUFkpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1NUUE5DUFknJ0B8JChHTlVMSUJfU1RQTkNQWSl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfU1RSQ0hSTlVMJydAfCQoR05VTElCX1NUUkNIUk5VTCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfU1RSRFVQJydAfCQoR05VTElCX1NUUkRVUCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfU1RSTkNBVCcnQHwkKEdOVUxJQl9TVFJOQ0FUKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9TVFJORFVQJydAfCQoR05VTElCX1NUUk5EVVApfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1NUUk5MRU4nJ0B8JChHTlVMSUJfU1RSTkxFTil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfU1RSUEJSSycnQHwkKEdOVUxJQl9TVFJQQlJLKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9TVFJTRVAnJ0B8JChHTlVMSUJfU1RSU0VQKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9TVFJTVFInJ0B8JChHTlVMSUJfU1RSU1RSKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9TVFJDQVNFU1RSJydAfCQoR05VTElCX1NUUkNBU0VTVFIpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1NUUlRPS19SJydAfCQoR05VTElCX1NUUlRPS19SKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9TVFJFUlJPUicnQHwkKEdOVUxJQl9TVFJFUlJPUil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfU1RSRVJST1JfUicnQHwkKEdOVUxJQl9TVFJFUlJPUl9SKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9TVFJTSUdOQUwnJ0B8JChHTlVMSUJfU1RSU0lHTkFMKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9TVFJWRVJTQ01QJydAfCQoR05VTElCX1NUUlZFUlNDTVApfGcnIFwKLSAJICAgICAgPCAkKHNyY2Rpcikvc3RyaW5nLmluLmggfCBcCi0tCSAgc2VkIC1lICdzfEAnJ0hBVkVfRkZTTCcnQHwkKEhBVkVfRkZTTCl8ZycgXAotLQkgICAgICAtZSAnc3xAJydIQVZFX0ZGU0xMJydAfCQoSEFWRV9GRlNMTCl8ZycgXAotLQkgICAgICAtZSAnc3xAJydIQVZFX01CU0xFTicnQHwkKEhBVkVfTUJTTEVOKXxnJyBcCi0rCSAgc2VkIC1lICdzfEAnJ0hBVkVfTUJTTEVOJydAfCQoSEFWRV9NQlNMRU4pfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnSEFWRV9NRU1DSFInJ0B8JChIQVZFX01FTUNIUil8ZycgXAotIAkgICAgICAtZSAnc3xAJydIQVZFX0RFQ0xfTUVNTUVNJydAfCQoSEFWRV9ERUNMX01FTU1FTSl8ZycgXAotIAkgICAgICAtZSAnc3xAJydIQVZFX01FTVBDUFknJ0B8JChIQVZFX01FTVBDUFkpfGcnIFwKLUBAIC05MTIsMjMgKzg1NCwyMiBAQCBzeXMvc3RhdC5oOiBzeXNfc3RhdC5pbi5oICQodG9wX2J1aWxkZGlyCi0gCSQoQU1fVl9hdCkkKE1LRElSX1ApIHN5cwotIAkkKEFNX1ZfR0VOKXJtIC1mICRALXQgJEAgJiYgXAotIAl7IGVjaG8gJy8qIERPIE5PVCBFRElUISBHRU5FUkFURUQgQVVUT01BVElDQUxMWSEgKi8nOyBcCi0tCSAgc2VkIC1lICdzfEAnJ0dVQVJEX1BSRUZJWCcnQHxHTHxnJyBcCi0tCSAgICAgIC1lICdzfEAnJ0lOQ0xVREVfTkVYVCcnQHwkKElOQ0xVREVfTkVYVCl8ZycgXAotKwkgIHNlZCAtZSAnc3xAJydJTkNMVURFX05FWFQnJ0B8JChJTkNMVURFX05FWFQpfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnUFJBR01BX1NZU1RFTV9IRUFERVInJ0B8QFBSQUdNQV9TWVNURU1fSEVBREVSQHxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ1BSQUdNQV9DT0xVTU5TJydAfEBQUkFHTUFfQ09MVU1OU0B8ZycgXAotIAkgICAgICAtZSAnc3xAJydORVhUX1NZU19TVEFUX0gnJ0B8JChORVhUX1NZU19TVEFUX0gpfGcnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0ZDSE1PREFUJydALyQoR05VTElCX0ZDSE1PREFUKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9GU1RBVEFUJydALyQoR05VTElCX0ZTVEFUQVQpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0ZVVElNRU5TJydALyQoR05VTElCX0ZVVElNRU5TKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9MQ0hNT0QnJ0AvJChHTlVMSUJfTENITU9EKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9MU1RBVCcnQC8kKEdOVUxJQl9MU1RBVCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfTUtESVJBVCcnQC8kKEdOVUxJQl9NS0RJUkFUKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9NS0ZJRk8nJ0AvJChHTlVMSUJfTUtGSUZPKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9NS0ZJRk9BVCcnQC8kKEdOVUxJQl9NS0ZJRk9BVCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfTUtOT0QnJ0AvJChHTlVMSUJfTUtOT0QpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX01LTk9EQVQnJ0AvJChHTlVMSUJfTUtOT0RBVCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfU1RBVCcnQC8kKEdOVUxJQl9TVEFUKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9VVElNRU5TQVQnJ0AvJChHTlVMSUJfVVRJTUVOU0FUKS9nJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9GQ0hNT0RBVCcnQHwkKEdOVUxJQl9GQ0hNT0RBVCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfRlNUQVRBVCcnQHwkKEdOVUxJQl9GU1RBVEFUKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9GVVRJTUVOUycnQHwkKEdOVUxJQl9GVVRJTUVOUyl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfTENITU9EJydAfCQoR05VTElCX0xDSE1PRCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfTFNUQVQnJ0B8JChHTlVMSUJfTFNUQVQpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX01LRElSQVQnJ0B8JChHTlVMSUJfTUtESVJBVCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfTUtGSUZPJydAfCQoR05VTElCX01LRklGTyl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfTUtGSUZPQVQnJ0B8JChHTlVMSUJfTUtGSUZPQVQpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX01LTk9EJydAfCQoR05VTElCX01LTk9EKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9NS05PREFUJydAfCQoR05VTElCX01LTk9EQVQpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1NUQVQnJ0B8JChHTlVMSUJfU1RBVCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfVVRJTUVOU0FUJydAfCQoR05VTElCX1VUSU1FTlNBVCl8ZycgXAotIAkgICAgICAtZSAnc3xAJydIQVZFX0ZDSE1PREFUJydAfCQoSEFWRV9GQ0hNT0RBVCl8ZycgXAotIAkgICAgICAtZSAnc3xAJydIQVZFX0ZTVEFUQVQnJ0B8JChIQVZFX0ZTVEFUQVQpfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnSEFWRV9GVVRJTUVOUycnQHwkKEhBVkVfRlVUSU1FTlMpfGcnIFwKLUBAIC05NzEsMTYgKzkxMiwxNSBAQCBCVUlMVF9TT1VSQ0VTICs9IHRpbWUuaAotIHRpbWUuaDogdGltZS5pbi5oICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzICQoQ1hYREVGU19IKSAkKEFSR19OT05OVUxMX0gpICQoV0FSTl9PTl9VU0VfSCkKLSAJJChBTV9WX0dFTilybSAtZiAkQC10ICRAICYmIFwKLSAJeyBlY2hvICcvKiBETyBOT1QgRURJVCEgR0VORVJBVEVEIEFVVE9NQVRJQ0FMTFkhICovJyAmJiBcCi0tCSAgc2VkIC1lICdzfEAnJ0dVQVJEX1BSRUZJWCcnQHxHTHxnJyBcCi0tCSAgICAgIC1lICdzfEAnJ0lOQ0xVREVfTkVYVCcnQHwkKElOQ0xVREVfTkVYVCl8ZycgXAotKwkgIHNlZCAtZSAnc3xAJydJTkNMVURFX05FWFQnJ0B8JChJTkNMVURFX05FWFQpfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnUFJBR01BX1NZU1RFTV9IRUFERVInJ0B8QFBSQUdNQV9TWVNURU1fSEVBREVSQHxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ1BSQUdNQV9DT0xVTU5TJydAfEBQUkFHTUFfQ09MVU1OU0B8ZycgXAotIAkgICAgICAtZSAnc3xAJydORVhUX1RJTUVfSCcnQHwkKE5FWFRfVElNRV9IKXxnJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9NS1RJTUUnJ0AvJChHTlVMSUJfTUtUSU1FKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9OQU5PU0xFRVAnJ0AvJChHTlVMSUJfTkFOT1NMRUVQKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9TVFJQVElNRScnQC8kKEdOVUxJQl9TVFJQVElNRSkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfVElNRUdNJydALyQoR05VTElCX1RJTUVHTSkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfVElNRV9SJydALyQoR05VTElCX1RJTUVfUikvZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfTUtUSU1FJydAfCQoR05VTElCX01LVElNRSl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfTkFOT1NMRUVQJydAfCQoR05VTElCX05BTk9TTEVFUCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfU1RSUFRJTUUnJ0B8JChHTlVMSUJfU1RSUFRJTUUpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1RJTUVHTScnQHwkKEdOVUxJQl9USU1FR00pfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1RJTUVfUicnQHwkKEdOVUxJQl9USU1FX1IpfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnSEFWRV9ERUNMX0xPQ0FMVElNRV9SJydAfCQoSEFWRV9ERUNMX0xPQ0FMVElNRV9SKXxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ0hBVkVfTkFOT1NMRUVQJydAfCQoSEFWRV9OQU5PU0xFRVApfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnSEFWRV9TVFJQVElNRScnQHwkKEhBVkVfU1RSUFRJTUUpfGcnIFwKLUBAIC0xMDEzLDU2ICs5NTMsNTUgQEAgQlVJTFRfU09VUkNFUyArPSB1bmlzdGQuaAotIHVuaXN0ZC5oOiB1bmlzdGQuaW4uaCAkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1cyAkKENYWERFRlNfSCkgJChBUkdfTk9OTlVMTF9IKSAkKFdBUk5fT05fVVNFX0gpCi0gCSQoQU1fVl9HRU4pcm0gLWYgJEAtdCAkQCAmJiBcCi0gCXsgZWNobyAnLyogRE8gTk9UIEVESVQhIEdFTkVSQVRFRCBBVVRPTUFUSUNBTExZISAqLyc7IFwKLS0JICBzZWQgLWUgJ3N8QCcnR1VBUkRfUFJFRklYJydAfEdMfGcnIFwKLS0JICAgICAgLWUgJ3N8QCcnSEFWRV9VTklTVERfSCcnQHwkKEhBVkVfVU5JU1REX0gpfGcnIFwKLSsJICBzZWQgLWUgJ3N8QCcnSEFWRV9VTklTVERfSCcnQHwkKEhBVkVfVU5JU1REX0gpfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnSU5DTFVERV9ORVhUJydAfCQoSU5DTFVERV9ORVhUKXxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ1BSQUdNQV9TWVNURU1fSEVBREVSJydAfEBQUkFHTUFfU1lTVEVNX0hFQURFUkB8ZycgXAotIAkgICAgICAtZSAnc3xAJydQUkFHTUFfQ09MVU1OUycnQHxAUFJBR01BX0NPTFVNTlNAfGcnIFwKLSAJICAgICAgLWUgJ3N8QCcnTkVYVF9VTklTVERfSCcnQHwkKE5FWFRfVU5JU1REX0gpfGcnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0NIT1dOJydALyQoR05VTElCX0NIT1dOKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9DTE9TRScnQC8kKEdOVUxJQl9DTE9TRSkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfRFVQMicnQC8kKEdOVUxJQl9EVVAyKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9EVVAzJydALyQoR05VTElCX0RVUDMpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0VOVklST04nJ0AvJChHTlVMSUJfRU5WSVJPTikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfRVVJREFDQ0VTUycnQC8kKEdOVUxJQl9FVUlEQUNDRVNTKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9GQUNDRVNTQVQnJ0AvJChHTlVMSUJfRkFDQ0VTU0FUKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9GQ0hESVInJ0AvJChHTlVMSUJfRkNIRElSKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9GQ0hPV05BVCcnQC8kKEdOVUxJQl9GQ0hPV05BVCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfRlNZTkMnJ0AvJChHTlVMSUJfRlNZTkMpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0ZUUlVOQ0FURScnQC8kKEdOVUxJQl9GVFJVTkNBVEUpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0dFVENXRCcnQC8kKEdOVUxJQl9HRVRDV0QpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0dFVERPTUFJTk5BTUUnJ0AvJChHTlVMSUJfR0VURE9NQUlOTkFNRSkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfR0VURFRBQkxFU0laRScnQC8kKEdOVUxJQl9HRVREVEFCTEVTSVpFKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9HRVRHUk9VUFMnJ0AvJChHTlVMSUJfR0VUR1JPVVBTKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9HRVRIT1NUTkFNRScnQC8kKEdOVUxJQl9HRVRIT1NUTkFNRSkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfR0VUTE9HSU4nJ0AvJChHTlVMSUJfR0VUTE9HSU4pL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0dFVExPR0lOX1InJ0AvJChHTlVMSUJfR0VUTE9HSU5fUikvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfR0VUUEFHRVNJWkUnJ0AvJChHTlVMSUJfR0VUUEFHRVNJWkUpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0dFVFVTRVJTSEVMTCcnQC8kKEdOVUxJQl9HRVRVU0VSU0hFTEwpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0dST1VQX01FTUJFUicnQC8kKEdOVUxJQl9HUk9VUF9NRU1CRVIpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0xDSE9XTicnQC8kKEdOVUxJQl9MQ0hPV04pL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX0xJTksnJ0AvJChHTlVMSUJfTElOSykvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfTElOS0FUJydALyQoR05VTElCX0xJTktBVCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfTFNFRUsnJ0AvJChHTlVMSUJfTFNFRUspL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1BJUEUnJ0AvJChHTlVMSUJfUElQRSkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfUElQRTInJ0AvJChHTlVMSUJfUElQRTIpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1BSRUFEJydALyQoR05VTElCX1BSRUFEKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9QV1JJVEUnJ0AvJChHTlVMSUJfUFdSSVRFKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9SRUFEJydALyQoR05VTElCX1JFQUQpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1JFQURMSU5LJydALyQoR05VTElCX1JFQURMSU5LKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9SRUFETElOS0FUJydALyQoR05VTElCX1JFQURMSU5LQVQpL2cnIFwKLS0JICAgICAgLWUgJ3MvQCcnR05VTElCX1JNRElSJydALyQoR05VTElCX1JNRElSKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9TTEVFUCcnQC8kKEdOVUxJQl9TTEVFUCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfU1lNTElOSycnQC8kKEdOVUxJQl9TWU1MSU5LKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9TWU1MSU5LQVQnJ0AvJChHTlVMSUJfU1lNTElOS0FUKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9UVFlOQU1FX1InJ0AvJChHTlVMSUJfVFRZTkFNRV9SKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9VTklTVERfSF9HRVRPUFQnJ0AvJChHTlVMSUJfVU5JU1REX0hfR0VUT1BUKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9VTklTVERfSF9OT05CTE9DS0lORycnQC8kKEdOVUxJQl9VTklTVERfSF9OT05CTE9DS0lORykvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfVU5JU1REX0hfU0lHUElQRScnQC8kKEdOVUxJQl9VTklTVERfSF9TSUdQSVBFKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9VTkxJTksnJ0AvJChHTlVMSUJfVU5MSU5LKS9nJyBcCi0tCSAgICAgIC1lICdzL0AnJ0dOVUxJQl9VTkxJTktBVCcnQC8kKEdOVUxJQl9VTkxJTktBVCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfVVNMRUVQJydALyQoR05VTElCX1VTTEVFUCkvZycgXAotLQkgICAgICAtZSAncy9AJydHTlVMSUJfV1JJVEUnJ0AvJChHTlVMSUJfV1JJVEUpL2cnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0NIT1dOJydAfCQoR05VTElCX0NIT1dOKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9DTE9TRScnQHwkKEdOVUxJQl9DTE9TRSl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfRFVQMicnQHwkKEdOVUxJQl9EVVAyKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9EVVAzJydAfCQoR05VTElCX0RVUDMpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0VOVklST04nJ0B8JChHTlVMSUJfRU5WSVJPTil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfRVVJREFDQ0VTUycnQHwkKEdOVUxJQl9FVUlEQUNDRVNTKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9GQUNDRVNTQVQnJ0B8JChHTlVMSUJfRkFDQ0VTU0FUKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9GQ0hESVInJ0B8JChHTlVMSUJfRkNIRElSKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9GQ0hPV05BVCcnQHwkKEdOVUxJQl9GQ0hPV05BVCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfRlNZTkMnJ0B8JChHTlVMSUJfRlNZTkMpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0ZUUlVOQ0FURScnQHwkKEdOVUxJQl9GVFJVTkNBVEUpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0dFVENXRCcnQHwkKEdOVUxJQl9HRVRDV0QpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0dFVERPTUFJTk5BTUUnJ0B8JChHTlVMSUJfR0VURE9NQUlOTkFNRSl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfR0VURFRBQkxFU0laRScnQHwkKEdOVUxJQl9HRVREVEFCTEVTSVpFKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9HRVRHUk9VUFMnJ0B8JChHTlVMSUJfR0VUR1JPVVBTKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9HRVRIT1NUTkFNRScnQHwkKEdOVUxJQl9HRVRIT1NUTkFNRSl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfR0VUTE9HSU4nJ0B8JChHTlVMSUJfR0VUTE9HSU4pfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0dFVExPR0lOX1InJ0B8JChHTlVMSUJfR0VUTE9HSU5fUil8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfR0VUUEFHRVNJWkUnJ0B8JChHTlVMSUJfR0VUUEFHRVNJWkUpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0dFVFVTRVJTSEVMTCcnQHwkKEdOVUxJQl9HRVRVU0VSU0hFTEwpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0dST1VQX01FTUJFUicnQHwkKEdOVUxJQl9HUk9VUF9NRU1CRVIpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0xDSE9XTicnQHwkKEdOVUxJQl9MQ0hPV04pfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX0xJTksnJ0B8JChHTlVMSUJfTElOSyl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfTElOS0FUJydAfCQoR05VTElCX0xJTktBVCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfTFNFRUsnJ0B8JChHTlVMSUJfTFNFRUspfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1BJUEUnJ0B8JChHTlVMSUJfUElQRSl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfUElQRTInJ0B8JChHTlVMSUJfUElQRTIpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1BSRUFEJydAfCQoR05VTElCX1BSRUFEKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9QV1JJVEUnJ0B8JChHTlVMSUJfUFdSSVRFKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9SRUFEJydAfCQoR05VTElCX1JFQUQpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1JFQURMSU5LJydAfCQoR05VTElCX1JFQURMSU5LKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9SRUFETElOS0FUJydAfCQoR05VTElCX1JFQURMSU5LQVQpfGcnIFwKLSsJICAgICAgLWUgJ3N8QCcnR05VTElCX1JNRElSJydAfCQoR05VTElCX1JNRElSKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9TTEVFUCcnQHwkKEdOVUxJQl9TTEVFUCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfU1lNTElOSycnQHwkKEdOVUxJQl9TWU1MSU5LKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9TWU1MSU5LQVQnJ0B8JChHTlVMSUJfU1lNTElOS0FUKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9UVFlOQU1FX1InJ0B8JChHTlVMSUJfVFRZTkFNRV9SKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9VTklTVERfSF9HRVRPUFQnJ0B8JChHTlVMSUJfVU5JU1REX0hfR0VUT1BUKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9VTklTVERfSF9OT05CTE9DS0lORycnQHwkKEdOVUxJQl9VTklTVERfSF9OT05CTE9DS0lORyl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfVU5JU1REX0hfU0lHUElQRScnQHwkKEdOVUxJQl9VTklTVERfSF9TSUdQSVBFKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9VTkxJTksnJ0B8JChHTlVMSUJfVU5MSU5LKXxnJyBcCi0rCSAgICAgIC1lICdzfEAnJ0dOVUxJQl9VTkxJTktBVCcnQHwkKEdOVUxJQl9VTkxJTktBVCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfVVNMRUVQJydAfCQoR05VTElCX1VTTEVFUCl8ZycgXAotKwkgICAgICAtZSAnc3xAJydHTlVMSUJfV1JJVEUnJ0B8JChHTlVMSUJfV1JJVEUpfGcnIFwKLSAJICAgICAgPCAkKHNyY2RpcikvdW5pc3RkLmluLmggfCBcCi0gCSAgc2VkIC1lICdzfEAnJ0hBVkVfQ0hPV04nJ0B8JChIQVZFX0NIT1dOKXxnJyBcCi0gCSAgICAgIC1lICdzfEAnJ0hBVkVfRFVQMicnQHwkKEhBVkVfRFVQMil8ZycgXAotQEAgLTExOTgsNiArMTEzNywyNSBAQCBFWFRSQV9ESVNUICs9IHZlcmlmeS5oCi0gCi0gIyMgZW5kICAgZ251bGliIG1vZHVsZSB2ZXJpZnkKLSAKLSsjIyBiZWdpbiBnbnVsaWIgbW9kdWxlIHdhcm4tb24tdXNlCi0rCi0rQlVJTFRfU09VUkNFUyArPSB3YXJuLW9uLXVzZS5oCi0rIyBUaGUgd2Fybi1vbi11c2UuaCB0aGF0IGdldHMgaW5zZXJ0ZWQgaW50byBnZW5lcmF0ZWQgLmggZmlsZXMgaXMgdGhlIHNhbWUgYXMKLSsjIGJ1aWxkLWF1eC93YXJuLW9uLXVzZS5oLCBleGNlcHQgdGhhdCBpdCBoYXMgdGhlIGNvcHlyaWdodCBoZWFkZXIgY3V0IG9mZi4KLSt3YXJuLW9uLXVzZS5oOiAkKHRvcF9zcmNkaXIpL2J1aWxkLWF1eC93YXJuLW9uLXVzZS5oCi0rCSQoQU1fVl9HRU4pcm0gLWYgJEAtdCAkQCAmJiBcCi0rCXNlZCAtbiAtZSAnL14uaWZuZGVmLywkJHAnIFwKLSsJICA8ICQodG9wX3NyY2RpcikvYnVpbGQtYXV4L3dhcm4tb24tdXNlLmggXAotKwkgID4gJEAtdCAmJiBcCi0rCW12ICRALXQgJEAKLStNT1NUTFlDTEVBTkZJTEVTICs9IHdhcm4tb24tdXNlLmggd2Fybi1vbi11c2UuaC10Ci0rCi0rV0FSTl9PTl9VU0VfSD13YXJuLW9uLXVzZS5oCi0rCi0rRVhUUkFfRElTVCArPSAkKHRvcF9zcmNkaXIpL2J1aWxkLWF1eC93YXJuLW9uLXVzZS5oCi0rCi0rIyMgZW5kICAgZ251bGliIG1vZHVsZSB3YXJuLW9uLXVzZQotKwotICMjIGJlZ2luIGdudWxpYiBtb2R1bGUgeGFsbG9jCi0gCi0gbGliaWNydF9hX1NPVVJDRVMgKz0geGFsbG9jLmggeG1hbGxvYy5jIHhzdHJkdXAuYwotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY2xpYi9wYXRobWF4LmggbGliaWNvbnYtMS4xNC9zcmNsaWIvcGF0aG1heC5oCi0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY2xpYi9wYXRobWF4LmgJMjAxMS0wOC0wNyAwNjo0MjowNi4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY2xpYi9wYXRobWF4LmgJMjAxMi0wMS0wOCAwMjowNzo0MC4yMTg0ODQ0NTEgLTA4MDAKLUBAIC0xOSwyNyArMTksNiBAQAotICNpZm5kZWYgX1BBVEhNQVhfSAotICMgZGVmaW5lIF9QQVRITUFYX0gKLSAKLS0vKiBQT1NJWDoyMDA4IGRlZmluZXMgUEFUSF9NQVggdG8gYmUgdGhlIG1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIGluIGEgZmlsZW5hbWUsCi0tICAgaW5jbHVkaW5nIHRoZSB0ZXJtaW5hdGluZyBOVUwgYnl0ZS4KLS0gICA8aHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzk2OTk5MTk3OTkvYmFzZWRlZnMvbGltaXRzLmguaHRtbD4KLS0gICBQQVRIX01BWCBpcyBub3QgZGVmaW5lZCBvbiBzeXN0ZW1zIHdoaWNoIGhhdmUgbm8gbGltaXQgb24gZmlsZW5hbWUgbGVuZ3RoLAotLSAgIHN1Y2ggYXMgR05VL0h1cmQuCi0tCi0tICAgVGhpcyBmaWxlIGRvZXMgKm5vdCogZGVmaW5lIFBBVEhfTUFYIGFsd2F5cy4gIFByb2dyYW1zIHRoYXQgdXNlIHRoaXMgZmlsZQotLSAgIGNhbiBoYW5kbGUgdGhlIEdOVS9IdXJkIGNhc2UgaW4gc2V2ZXJhbCB3YXlzOgotLSAgICAgLSBFaXRoZXIgd2l0aCBhIHBhY2thZ2Utd2lkZSBoYW5kbGluZywgb3Igd2l0aCBhIHBlci1maWxlIGhhbmRsaW5nLAotLSAgICAgLSBFaXRoZXIgdGhyb3VnaCBhCi0tICAgICAgICAgI2lmZGVmIFBBVEhfTUFYCi0tICAgICAgIG9yIHRocm91Z2ggYSBmYWxsYmFjayBsaWtlCi0tICAgICAgICAgI2lmbmRlZiBQQVRIX01BWAotLSAgICAgICAgICMgZGVmaW5lIFBBVEhfTUFYIDgxOTIKLS0gICAgICAgICAjZW5kaWYKLS0gICAgICAgb3IgdGhyb3VnaCBhIGZhbGxiYWNrIGxpa2UKLS0gICAgICAgICAjaWZuZGVmIFBBVEhfTUFYCi0tICAgICAgICAgIyBkZWZpbmUgUEFUSF9NQVggcGF0aGNvbmYgKCIvIiwgX1BDX1BBVEhfTUFYKQotLSAgICAgICAgICNlbmRpZgotLSAqLwotLQotICMgaW5jbHVkZSA8dW5pc3RkLmg+Ci0gCi0gIyBpbmNsdWRlIDxsaW1pdHMuaD4KLUBAIC00OCw2ICsyNywxMSBAQAotICMgIGRlZmluZSBfUE9TSVhfUEFUSF9NQVggMjU2Ci0gIyBlbmRpZgotIAotKyMgaWYgIWRlZmluZWQgUEFUSF9NQVggJiYgZGVmaW5lZCBfUENfUEFUSF9NQVggJiYgZGVmaW5lZCBIQVZFX1BBVEhDT05GCi0rIyAgZGVmaW5lIFBBVEhfTUFYIChwYXRoY29uZiAoIi8iLCBfUENfUEFUSF9NQVgpIDwgMSA/IDEwMjQgXAotKyAgICAgICAgICAgICAgICAgICAgOiBwYXRoY29uZiAoIi8iLCBfUENfUEFUSF9NQVgpKQotKyMgZW5kaWYKLSsKLSAvKiBEb24ndCBpbmNsdWRlIHN5cy9wYXJhbS5oIGlmIGl0IGFscmVhZHkgaGFzIGJlZW4uICAqLwotICMgaWYgZGVmaW5lZCBIQVZFX1NZU19QQVJBTV9IICYmICFkZWZpbmVkIFBBVEhfTUFYICYmICFkZWZpbmVkIE1BWFBBVEhMRU4KLSAjICBpbmNsdWRlIDxzeXMvcGFyYW0uaD4KLUBAIC01NywxMyArNDEsOCBAQAotICMgIGRlZmluZSBQQVRIX01BWCBNQVhQQVRITEVOCi0gIyBlbmRpZgotIAotLSMgaWZkZWYgX19ocHV4Ci0tLyogT24gSFAtVVgsIFBBVEhfTUFYIGRlc2lnbmF0ZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIGluIGEgZmlsZW5hbWUsCi0tICAgKm5vdCogaW5jbHVkaW5nIHRoZSB0ZXJtaW5hdGluZyBOVUwgYnl0ZSwgYW5kIGlzIHNldCB0byAxMDIzLgotLSAgIEFkZGl0aW9uYWxseSwgd2hlbiBfWE9QRU5fU09VUkNFIGlzIGRlZmluZWQgdG8gNTAwIG9yIG1vcmUsIFBBVEhfTUFYIGlzCi0tICAgbm90IGRlZmluZWQgYXQgYWxsIGFueSBtb3JlLiAgKi8KLS0jICB1bmRlZiBQQVRIX01BWAotLSMgIGRlZmluZSBQQVRIX01BWCAxMDI0Ci0rIyBpZm5kZWYgUEFUSF9NQVgKLSsjICBkZWZpbmUgUEFUSF9NQVggX1BPU0lYX1BBVEhfTUFYCi0gIyBlbmRpZgotIAotICNlbmRpZiAvKiBfUEFUSE1BWF9IICovCi1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbGliL3JlbG9jd3JhcHBlci5jIGxpYmljb252LTEuMTQvc3JjbGliL3JlbG9jd3JhcHBlci5jCi0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY2xpYi9yZWxvY3dyYXBwZXIuYwkyMDExLTA4LTA3IDA2OjQyOjA2LjAwMDAwMDAwMCAtMDcwMAotKysrIGxpYmljb252LTEuMTQvc3JjbGliL3JlbG9jd3JhcHBlci5jCTIwMTItMDEtMDggMDI6MDc6NDAuMjgyNDg0NDU1IC0wODAwCi1AQCAtMjksNiArMjksNyBAQAotICAgICAtPiByZWxvY2F0YWJsZQotICAgICAtPiBzZXRlbnYKLSAgICAgICAgLT4gbWFsbG9jYQotKyAgICAtPiBzdHJlcnJvcgotICAgICAtPiBjLWN0eXBlCi0gCi0gICAgTWFjcm9zIHRoYXQgbmVlZCB0byBiZSBzZXQgd2hpbGUgY29tcGlsaW5nIHRoaXMgZmlsZToKLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvc2FmZS1yZWFkLmggbGliaWNvbnYtMS4xNC9zcmNsaWIvc2FmZS1yZWFkLmgKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbGliL3NhZmUtcmVhZC5oCTIwMTEtMDgtMDcgMDY6NDI6MDYuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNsaWIvc2FmZS1yZWFkLmgJMjAxMi0wMS0wOCAwMjowNzo0MC4yOTg0ODQ0NTUgLTA4MDAKLUBAIC0xNCwxOSArMTQsNiBAQAotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotIAotLS8qIFNvbWUgc3lzdGVtIGNhbGxzIG1heSBiZSBpbnRlcnJ1cHRlZCBhbmQgZmFpbCB3aXRoIGVycm5vID0gRUlOVFIgaW4gdGhlCi0tICAgZm9sbG93aW5nIHNpdHVhdGlvbnM6Ci0tICAgICAtIFRoZSBwcm9jZXNzIGlzIHN0b3BwZWQgYW5kIHJlc3RhcnRlZCAoc2lnbmFsIFNJR1NUT1AgYW5kIFNJR0NPTlQsIHVzZXIKLS0gICAgICAgdHlwZXMgQ3RybC1aKSBvbiBzb21lIHBsYXRmb3JtczogTWFjT1MgWC4KLS0gICAgIC0gVGhlIHByb2Nlc3MgcmVjZWl2ZXMgYSBzaWduYWwgZm9yIHdoaWNoIGEgc2lnbmFsIGhhbmRsZXIgd2FzIGluc3RhbGxlZAotLSAgICAgICB3aXRoIHNpZ2FjdGlvbigpIHdpdGggYW4gc2FfZmxhZ3MgZmllbGQgdGhhdCBkb2VzIG5vdCBjb250YWluCi0tICAgICAgIFNBX1JFU1RBUlQuCi0tICAgICAtIFRoZSBwcm9jZXNzIHJlY2VpdmVzIGEgc2lnbmFsIGZvciB3aGljaCBhIHNpZ25hbCBoYW5kbGVyIHdhcyBpbnN0YWxsZWQKLS0gICAgICAgd2l0aCBzaWduYWwoKSBhbmQgZm9yIHdoaWNoIG5vIGNhbGwgdG8gc2lnaW50ZXJydXB0KHNpZywwKSB3YXMgZG9uZSwKLS0gICAgICAgb24gc29tZSBwbGF0Zm9ybXM6IEFJWCwgSFAtVVgsIElSSVgsIE9TRi8xLCBTb2xhcmlzLgotLQotLSAgIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGEgd3JhcHBlciBhcm91bmQgcmVhZCgpIHRoYXQgaGFuZGxlcyBFSU5UUi4gICovCi0tCi0gI2luY2x1ZGUgPHN0ZGRlZi5oPgotIAotICNpZmRlZiBfX2NwbHVzcGx1cwotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY2xpYi9zaWduYWwuaW4uaCBsaWJpY29udi0xLjE0L3NyY2xpYi9zaWduYWwuaW4uaAotLS0tIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvc2lnbmFsLmluLmgJMjAxMS0wOC0wNyAwNjo0MjowNi4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY2xpYi9zaWduYWwuaW4uaAkyMDEyLTAxLTA4IDAyOjA3OjQwLjMxNDQ4NDQ1NiAtMDgwMAotQEAgLTIwLDQ5ICsyMCwyMSBAQAotICNlbmRpZgotIEBQUkFHTUFfQ09MVU1OU0AKLSAKLS0jaWYgZGVmaW5lZCBfX25lZWRfc2lnX2F0b21pY190IHx8IGRlZmluZWQgX19uZWVkX3NpZ3NldF90IHx8IGRlZmluZWQgX0dMX0FMUkVBRFlfSU5DTFVESU5HX1NJR05BTF9IIHx8IChkZWZpbmVkIF9TSUdOQUxfSCAmJiAhZGVmaW5lZCBfX1NJWkVPRl9QVEhSRUFEX01VVEVYX1QpCi0tLyogU3BlY2lhbCBpbnZvY2F0aW9uIGNvbnZlbnRpb246Ci0tICAgLSBJbnNpZGUgZ2xpYmMgaGVhZGVyIGZpbGVzLgotLSAgIC0gT24gZ2xpYmMgc3lzdGVtcyB3ZSBoYXZlIGEgc2VxdWVuY2Ugb2YgbmVzdGVkIGluY2x1ZGVzCi0tICAgICA8c2lnbmFsLmg+IC0+IDx1Y29udGV4dC5oPiAtPiA8c2lnbmFsLmg+LgotLSAgICAgSW4gdGhpcyBzaXR1YXRpb24sIHRoZSBmdW5jdGlvbnMgYXJlIG5vdCB5ZXQgZGVjbGFyZWQsIHRoZXJlZm9yZSB3ZSBjYW5ub3QKLS0gICAgIHByb3ZpZGUgdGhlIEMrKyBhbGlhc2VzLgotLSAgIC0gT24gZ2xpYmMgc3lzdGVtcyB3aXRoIEdDQyA0LjMgd2UgaGF2ZSBhIHNlcXVlbmNlIG9mIG5lc3RlZCBpbmNsdWRlcwotLSAgICAgPGNzaWduYWw+IC0+IDwvdXNyL2luY2x1ZGUvc2lnbmFsLmg+IC0+IDxzeXMvdWNvbnRleHQuaD4gLT4gPHNpZ25hbC5oPi4KLS0gICAgIEluIHRoaXMgc2l0dWF0aW9uLCBzb21lIG9mIHRoZSBmdW5jdGlvbnMgYXJlIG5vdCB5ZXQgZGVjbGFyZWQsIHRoZXJlZm9yZQotLSAgICAgd2UgY2Fubm90IHByb3ZpZGUgdGhlIEMrKyBhbGlhc2VzLiAgKi8KLSsjaWYgZGVmaW5lZCBfX25lZWRfc2lnX2F0b21pY190IHx8IGRlZmluZWQgX19uZWVkX3NpZ3NldF90Ci0rLyogU3BlY2lhbCBpbnZvY2F0aW9uIGNvbnZlbnRpb24gaW5zaWRlIGdsaWJjIGhlYWRlciBmaWxlcy4gICovCi0gCi0gIyBASU5DTFVERV9ORVhUQCBATkVYVF9TSUdOQUxfSEAKLSAKLSAjZWxzZQotIC8qIE5vcm1hbCBpbnZvY2F0aW9uIGNvbnZlbnRpb24uICAqLwotIAotLSNpZm5kZWYgX0BHVUFSRF9QUkVGSVhAX1NJR05BTF9ICi0tCi0tI2RlZmluZSBfR0xfQUxSRUFEWV9JTkNMVURJTkdfU0lHTkFMX0gKLS0KLS0vKiBEZWZpbmUgcGlkX3QsIHVpZF90LgotLSAgIEFsc28sIG1pbmd3IGRlZmluZXMgc2lnc2V0X3Qgbm90IGluIDxzaWduYWwuaD4sIGJ1dCBpbiA8c3lzL3R5cGVzLmg+LgotLSAgIE9uIFNvbGFyaXMgMTAsIDxzaWduYWwuaD4gaW5jbHVkZXMgPHN5cy90eXBlcy5oPiwgd2hpY2ggZXZlbnR1YWxseSBpbmNsdWRlcwotLSAgIHVzOyBzbyBpbmNsdWRlIDxzeXMvdHlwZXMuaD4gbm93LCBiZWZvcmUgdGhlIHNlY29uZCBpbmNsdXNpb24gZ3VhcmQuICAqLwotLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSsjaWZuZGVmIF9HTF9TSUdOQUxfSAotIAotIC8qIFRoZSBpbmNsdWRlX25leHQgcmVxdWlyZXMgYSBzcGxpdCBkb3VibGUtaW5jbHVzaW9uIGd1YXJkLiAgKi8KLSAjQElOQ0xVREVfTkVYVEAgQE5FWFRfU0lHTkFMX0hACi0gCi0tI3VuZGVmIF9HTF9BTFJFQURZX0lOQ0xVRElOR19TSUdOQUxfSAotLQotLSNpZm5kZWYgX0BHVUFSRF9QUkVGSVhAX1NJR05BTF9ICi0tI2RlZmluZSBfQEdVQVJEX1BSRUZJWEBfU0lHTkFMX0gKLS0KLS0vKiBNYWNPUyBYIDEwLjMsIEZyZWVCU0QgNi40LCBPcGVuQlNEIDMuOCwgT1NGLzEgNC4wLCBTb2xhcmlzIDIuNiBkZWNsYXJlCi0tICAgcHRocmVhZF9zaWdtYXNrIGluIDxwdGhyZWFkLmg+LCBub3QgaW4gPHNpZ25hbC5oPi4KLS0gICBCdXQgYXZvaWQgbmFtZXNwYWNlIHBvbGx1dGlvbiBvbiBnbGliYyBzeXN0ZW1zLiovCi0tI2lmIChAR05VTElCX1BUSFJFQURfU0lHTUFTS0AgfHwgZGVmaW5lZCBHTlVMSUJfUE9TSVhDSEVDSykgXAotLSAgICAmJiAoKGRlZmluZWQgX19BUFBMRV9fICYmIGRlZmluZWQgX19NQUNIX18pIHx8IGRlZmluZWQgX19GcmVlQlNEX18gfHwgZGVmaW5lZCBfX09wZW5CU0RfXyB8fCBkZWZpbmVkIF9fb3NmX18gfHwgZGVmaW5lZCBfX3N1bikgXAotLSAgICAmJiAhIGRlZmluZWQgX19HTElCQ19fCi0tIyBpbmNsdWRlIDxwdGhyZWFkLmg+Ci0tI2VuZGlmCi0rI2lmbmRlZiBfR0xfU0lHTkFMX0gKLSsjZGVmaW5lIF9HTF9TSUdOQUxfSAotIAotIC8qIFRoZSBkZWZpbml0aW9ucyBvZiBfR0xfRlVOQ0RFQ0xfUlBMIGV0Yy4gYXJlIGNvcGllZCBoZXJlLiAgKi8KLSAKLUBAIC03MCw2ICs0MiwxMCBAQAotIAotIC8qIFRoZSBkZWZpbml0aW9uIG9mIF9HTF9XQVJOX09OX1VTRSBpcyBjb3BpZWQgaGVyZS4gICovCi0gCi0rLyogRGVmaW5lIHBpZF90LCB1aWRfdC4KLSsgICBBbHNvLCBtaW5ndyBkZWZpbmVzIHNpZ3NldF90IG5vdCBpbiA8c2lnbmFsLmg+LCBidXQgaW4gPHN5cy90eXBlcy5oPi4gICovCi0rI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotKwotIC8qIE9uIEFJWCwgc2lnX2F0b21pY190IGFscmVhZHkgaW5jbHVkZXMgdm9sYXRpbGUuICBDOTkgcmVxdWlyZXMgdGhhdAotICAgICd2b2xhdGlsZSBzaWdfYXRvbWljX3QnIGlnbm9yZSB0aGUgZXh0cmEgbW9kaWZpZXIsIGJ1dCBDODkgZGlkIG5vdC4KLSAgICBIZW5jZSwgcmVkZWZpbmUgdGhpcyB0byBhIG5vbi12b2xhdGlsZSB0eXBlIGFzIG5lZWRlZC4gICovCi1AQCAtMTI0LDM0ICsxMDAsNiBAQCB0eXBlZGVmIHZvaWQgKCpzaWdoYW5kbGVyX3QpIChpbnQpOwotICNlbmRpZgotIAotIAotLSNpZiBAR05VTElCX1BUSFJFQURfU0lHTUFTS0AKLS0jIGlmIEBSRVBMQUNFX1BUSFJFQURfU0lHTUFTS0AKLS0jICBpZiAhKGRlZmluZWQgX19jcGx1c3BsdXMgJiYgZGVmaW5lZCBHTlVMSUJfTkFNRVNQQUNFKQotLSMgICB1bmRlZiBwdGhyZWFkX3NpZ21hc2sKLS0jICAgZGVmaW5lIHB0aHJlYWRfc2lnbWFzayBycGxfcHRocmVhZF9zaWdtYXNrCi0tIyAgZW5kaWYKLS1fR0xfRlVOQ0RFQ0xfUlBMIChwdGhyZWFkX3NpZ21hc2ssIGludCwKLS0gICAgICAgICAgICAgICAgICAoaW50IGhvdywgY29uc3Qgc2lnc2V0X3QgKm5ld19tYXNrLCBzaWdzZXRfdCAqb2xkX21hc2spKTsKLS1fR0xfQ1hYQUxJQVNfUlBMIChwdGhyZWFkX3NpZ21hc2ssIGludCwKLS0gICAgICAgICAgICAgICAgICAoaW50IGhvdywgY29uc3Qgc2lnc2V0X3QgKm5ld19tYXNrLCBzaWdzZXRfdCAqb2xkX21hc2spKTsKLS0jIGVsc2UKLS0jICBpZiAhQEhBVkVfUFRIUkVBRF9TSUdNQVNLQAotLV9HTF9GVU5DREVDTF9TWVMgKHB0aHJlYWRfc2lnbWFzaywgaW50LAotLSAgICAgICAgICAgICAgICAgIChpbnQgaG93LCBjb25zdCBzaWdzZXRfdCAqbmV3X21hc2ssIHNpZ3NldF90ICpvbGRfbWFzaykpOwotLSMgIGVuZGlmCi0tX0dMX0NYWEFMSUFTX1NZUyAocHRocmVhZF9zaWdtYXNrLCBpbnQsCi0tICAgICAgICAgICAgICAgICAgKGludCBob3csIGNvbnN0IHNpZ3NldF90ICpuZXdfbWFzaywgc2lnc2V0X3QgKm9sZF9tYXNrKSk7Ci0tIyBlbmRpZgotLV9HTF9DWFhBTElBU1dBUk4gKHB0aHJlYWRfc2lnbWFzayk7Ci0tI2VsaWYgZGVmaW5lZCBHTlVMSUJfUE9TSVhDSEVDSwotLSMgdW5kZWYgcHRocmVhZF9zaWdtYXNrCi0tIyBpZiBIQVZFX1JBV19ERUNMX1BUSFJFQURfU0lHTUFTSwotLV9HTF9XQVJOX09OX1VTRSAocHRocmVhZF9zaWdtYXNrLCAicHRocmVhZF9zaWdtYXNrIGlzIG5vdCBwb3J0YWJsZSAtICIKLS0gICAgICAgICAgICAgICAgICJ1c2UgZ251bGliIG1vZHVsZSBwdGhyZWFkX3NpZ21hc2sgZm9yIHBvcnRhYmlsaXR5Iik7Ci0tIyBlbmRpZgotLSNlbmRpZgotLQotLQotICNpZiBAR05VTElCX1NJR1BST0NNQVNLQAotICMgaWYgIUBIQVZFX1BPU0lYX1NJR05BTEJMT0NLSU5HQAotIAotQEAgLTQyMyw2ICszNzEsNiBAQCBfR0xfV0FSTl9PTl9VU0UgKHNpZ2FjdGlvbiwgInNpZ2FjdGlvbiBpCi0gI2VuZGlmCi0gCi0gCi0tI2VuZGlmIC8qIF9AR1VBUkRfUFJFRklYQF9TSUdOQUxfSCAqLwotLSNlbmRpZiAvKiBfQEdVQVJEX1BSRUZJWEBfU0lHTkFMX0ggKi8KLSsjZW5kaWYgLyogX0dMX1NJR05BTF9IICovCi0rI2VuZGlmIC8qIF9HTF9TSUdOQUxfSCAqLwotICNlbmRpZgotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY2xpYi9zdGF0LmMgbGliaWNvbnYtMS4xNC9zcmNsaWIvc3RhdC5jCi0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY2xpYi9zdGF0LmMJMjAxMS0wOC0wNyAwNjo0MjowNi4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY2xpYi9zdGF0LmMJMjAxMi0wMS0wOCAwMjowNzo0MC4zMzA0ODQ0NTcgLTA4MDAKLUBAIC0zOCw3ICszOCw2IEBAIG9yaWdfc3RhdCAoY29uc3QgY2hhciAqZmlsZW5hbWUsIHN0cnVjdAotICNpbmNsdWRlIDxzdGRib29sLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlICJkb3NuYW1lLmgiCi0tI2luY2x1ZGUgInZlcmlmeS5oIgotIAotIC8qIFN0b3JlIGluZm9ybWF0aW9uIGFib3V0IE5BTUUgaW50byBTVC4gIFdvcmsgYXJvdW5kIGJ1Z3Mgd2l0aAotICAgIHRyYWlsaW5nIHNsYXNoZXMuICBNaW5ndyBoYXMgb3RoZXIgYnVncyAoc3VjaCBhcyBzdF9pbm8gYWx3YXlzCi1AQCAtNjQsMTIgKzYzLDYgQEAgcnBsX3N0YXQgKGNoYXIgY29uc3QgKm5hbWUsIHN0cnVjdCBzdGF0Ci0gICAgIH0KLSAjZW5kaWYgLyogUkVQTEFDRV9GVU5DX1NUQVRfRklMRSAqLwotICNpZiBSRVBMQUNFX0ZVTkNfU1RBVF9ESVIKLS0gIC8qIFRoZSBvbmx5IGtub3duIHN5c3RlbXMgd2hlcmUgUkVQTEFDRV9GVU5DX1NUQVRfRElSIGlzIG5lZWRlZCBhbHNvCi0tICAgICBoYXZlIGEgY29uc3RhbnQgUEFUSF9NQVguICAqLwotLSMgaWZuZGVmIFBBVEhfTUFYCi0tIyAgZXJyb3IgIlBsZWFzZSBwb3J0IHRoaXMgcmVwbGFjZW1lbnQgdG8geW91ciBwbGF0Zm9ybSIKLS0jIGVuZGlmCi0tCi0gICBpZiAocmVzdWx0ID09IC0xICYmIGVycm5vID09IEVOT0VOVCkKLSAgICAgewotICAgICAgIC8qIER1ZSB0byBtaW5ndydzIG9kZGl0aWVzLCB0aGVyZSBhcmUgc29tZSBkaXJlY3RvcmllcyAobGlrZQotQEAgLTg0LDcgKzc3LDYgQEAgcnBsX3N0YXQgKGNoYXIgY29uc3QgKm5hbWUsIHN0cnVjdCBzdGF0Ci0gICAgICAgY2hhciBmaXhlZF9uYW1lW1BBVEhfTUFYICsgMV0gPSB7MH07Ci0gICAgICAgc2l6ZV90IGxlbiA9IHN0cmxlbiAobmFtZSk7Ci0gICAgICAgYm9vbCBjaGVja19kaXIgPSBmYWxzZTsKLS0gICAgICB2ZXJpZnkgKFBBVEhfTUFYIDw9IDQwOTYpOwotICAgICAgIGlmIChQQVRIX01BWCA8PSBsZW4pCi0gICAgICAgICBlcnJubyA9IEVOQU1FVE9PTE9ORzsKLSAgICAgICBlbHNlIGlmIChsZW4pCi1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbGliL3N0ZGRlZi5pbi5oIGxpYmljb252LTEuMTQvc3JjbGliL3N0ZGRlZi5pbi5oCi0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY2xpYi9zdGRkZWYuaW4uaAkyMDExLTA4LTA3IDA2OjQyOjA2LjAwMDAwMDAwMCAtMDcwMAotKysrIGxpYmljb252LTEuMTQvc3JjbGliL3N0ZGRlZi5pbi5oCTIwMTItMDEtMDggMDI6MDc6NDAuMzQ2NDg0NDU4IC0wODAwCi1AQCAtMzgsOSArMzgsOSBAQAotICAgIHJlbWVtYmVyIGlmIHNwZWNpYWwgaW52b2NhdGlvbiBoYXMgZXZlciBiZWVuIHVzZWQgdG8gb2J0YWluIHdpbnRfdCwKLSAgICBpbiB3aGljaCBjYXNlIHdlIG5lZWQgdG8gY2xlYW4gdXAgTlVMTCB5ZXQgYWdhaW4uICAqLwotIAotLSMgaWYgIShkZWZpbmVkIF9AR1VBUkRfUFJFRklYQF9TVERERUZfSCAmJiBkZWZpbmVkIF9HTF9TVERERUZfV0lOVF9UKQotKyMgaWYgIShkZWZpbmVkIF9HTF9TVERERUZfSCAmJiBkZWZpbmVkIF9HTF9TVERERUZfV0lOVF9UKQotICMgIGlmZGVmIF9fbmVlZF93aW50X3QKLS0jICAgdW5kZWYgX0BHVUFSRF9QUkVGSVhAX1NURERFRl9ICi0rIyAgIHVuZGVmIF9HTF9TVERERUZfSAotICMgICBkZWZpbmUgX0dMX1NURERFRl9XSU5UX1QKLSAjICBlbmRpZgotICMgIEBJTkNMVURFX05FWFRAIEBORVhUX1NURERFRl9IQAotQEAgLTQ5LDE0ICs0OSwxNCBAQAotICNlbHNlCi0gLyogTm9ybWFsIGludm9jYXRpb24gY29udmVudGlvbi4gICovCi0gCi0tIyBpZm5kZWYgX0BHVUFSRF9QUkVGSVhAX1NURERFRl9ICi0rIyBpZm5kZWYgX0dMX1NURERFRl9ICi0gCi0gLyogVGhlIGluY2x1ZGVfbmV4dCByZXF1aXJlcyBhIHNwbGl0IGRvdWJsZS1pbmNsdXNpb24gZ3VhcmQuICAqLwotIAotICMgIEBJTkNMVURFX05FWFRAIEBORVhUX1NURERFRl9IQAotIAotLSMgIGlmbmRlZiBfQEdVQVJEX1BSRUZJWEBfU1REREVGX0gKLS0jICAgZGVmaW5lIF9AR1VBUkRfUFJFRklYQF9TVERERUZfSAotKyMgIGlmbmRlZiBfR0xfU1REREVGX0gKLSsjICAgZGVmaW5lIF9HTF9TVERERUZfSAotIAotIC8qIE9uIE5ldEJTRCA1LjAsIHRoZSBkZWZpbml0aW9uIG9mIE5VTEwgbGFja3MgcHJvcGVyIHBhcmVudGhlc2VzLiAgKi8KLSAjaWYgQFJFUExBQ0VfTlVMTEAKLUBAIC04Miw2ICs4Miw2IEBACi0gIyBkZWZpbmUgd2NoYXJfdCBpbnQKLSAjZW5kaWYKLSAKLS0jICBlbmRpZiAvKiBfQEdVQVJEX1BSRUZJWEBfU1REREVGX0ggKi8KLS0jIGVuZGlmIC8qIF9AR1VBUkRfUFJFRklYQF9TVERERUZfSCAqLwotKyMgIGVuZGlmIC8qIF9HTF9TVERERUZfSCAqLwotKyMgZW5kaWYgLyogX0dMX1NURERFRl9IICovCi0gI2VuZGlmIC8qIF9fbmVlZF9YWFggKi8KLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvc3RkaW50LmluLmggbGliaWNvbnYtMS4xNC9zcmNsaWIvc3RkaW50LmluLmgKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbGliL3N0ZGludC5pbi5oCTIwMTEtMDgtMDcgMDY6NDI6MDYuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNsaWIvc3RkaW50LmluLmgJMjAxMi0wMS0wOCAwMjowNzo0MC4zNTg0ODQ0NTggLTA4MDAKLUBAIC0yMSw3ICsyMSw3IEBACi0gICogPGh0dHA6Ly93d3cub3Blbmdyb3VwLm9yZy9zdXN2M3hiZC9zdGRpbnQuaC5odG1sPgotICAqLwotIAotLSNpZm5kZWYgX0BHVUFSRF9QUkVGSVhAX1NURElOVF9ICi0rI2lmbmRlZiBfR0xfU1RESU5UX0gKLSAKLSAjaWYgX19HTlVDX18gPj0gMwotIEBQUkFHTUFfU1lTVEVNX0hFQURFUkAKLUBAIC01MiwxMyArNTIsMTMgQEAKLSAgIC8qIE90aGVyIHN5c3RlbXMgbWF5IGhhdmUgYW4gaW5jb21wbGV0ZSBvciBidWdneSA8c3RkaW50Lmg+LgotICAgICAgSW5jbHVkZSBpdCBiZWZvcmUgPGludHR5cGVzLmg+LCBzaW5jZSBhbnkgIiNpbmNsdWRlIDxzdGRpbnQuaD4iCi0gICAgICBpbiA8aW50dHlwZXMuaD4gd291bGQgcmVpbmNsdWRlIHVzLCBza2lwcGluZyBvdXIgY29udGVudHMgYmVjYXVzZQotLSAgICAgX0BHVUFSRF9QUkVGSVhAX1NURElOVF9IIGlzIGRlZmluZWQuCi0rICAgICBfR0xfU1RESU5UX0ggaXMgZGVmaW5lZC4KLSAgICAgIFRoZSBpbmNsdWRlX25leHQgcmVxdWlyZXMgYSBzcGxpdCBkb3VibGUtaW5jbHVzaW9uIGd1YXJkLiAgKi8KLSAjIEBJTkNMVURFX05FWFRAIEBORVhUX1NURElOVF9IQAotICNlbmRpZgotIAotLSNpZiAhIGRlZmluZWQgX0BHVUFSRF9QUkVGSVhAX1NURElOVF9IICYmICEgZGVmaW5lZCBfR0xfSlVTVF9JTkNMVURFX1NZU1RFTV9TVERJTlRfSAotLSNkZWZpbmUgX0BHVUFSRF9QUkVGSVhAX1NURElOVF9ICi0rI2lmICEgZGVmaW5lZCBfR0xfU1RESU5UX0ggJiYgISBkZWZpbmVkIF9HTF9KVVNUX0lOQ0xVREVfU1lTVEVNX1NURElOVF9ICi0rI2RlZmluZSBfR0xfU1RESU5UX0gKLSAKLSAvKiA8c3lzL3R5cGVzLmg+IGRlZmluZXMgc29tZSBvZiB0aGUgc3RkaW50LmggdHlwZXMgYXMgd2VsbCwgb24gZ2xpYmMsCi0gICAgSVJJWCA2LjUsIGFuZCBPcGVuQlNEIDMuOCAodmlhIDxtYWNoaW5lL3R5cGVzLmg+KS4KLUBAIC0yNzAsMzYgKzI3MCwyNiBAQCB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgaW50IGdsX3VpbnRwdHJfdDsKLSAvKiBOb3RlOiBUaGVzZSB0eXBlcyBhcmUgY29tcGlsZXIgZGVwZW5kZW50LiBJdCBtYXkgYmUgdW53aXNlIHRvIHVzZSB0aGVtIGluCi0gICAgcHVibGljIGhlYWRlciBmaWxlcy4gKi8KLSAKLS0vKiBJZiB0aGUgc3lzdGVtIGRlZmluZXMgSU5UTUFYX01BWCwgYXNzdW1lIHRoYXQgaW50bWF4X3Qgd29ya3MsIGFuZAotLSAgIHNpbWlsYXJseSBmb3IgVUlOVE1BWF9NQVggYW5kIHVpbnRtYXhfdC4gIFRoaXMgYXZvaWRzIHByb2JsZW1zIHdpdGgKLS0gICBhc3N1bWluZyBvbmUgdHlwZSB3aGVyZSBhbm90aGVyIGlzIHVzZWQgYnkgdGhlIHN5c3RlbS4gICovCi0tCi0tI2lmbmRlZiBJTlRNQVhfTUFYCi0tIyB1bmRlZiBJTlRNQVhfQwotLSMgdW5kZWYgaW50bWF4X3QKLS0jIGlmIEBIQVZFX0xPTkdfTE9OR19JTlRAICYmIExPTkdfTUFYID4+IDMwID09IDEKLSsjdW5kZWYgaW50bWF4X3QKLSsjaWYgQEhBVkVfTE9OR19MT05HX0lOVEAgJiYgTE9OR19NQVggPj4gMzAgPT0gMQotIHR5cGVkZWYgbG9uZyBsb25nIGludCBnbF9pbnRtYXhfdDsKLS0jICBkZWZpbmUgaW50bWF4X3QgZ2xfaW50bWF4X3QKLS0jIGVsaWYgZGVmaW5lZCBHTF9JTlQ2NF9UCi0tIyAgZGVmaW5lIGludG1heF90IGludDY0X3QKLS0jIGVsc2UKLSsjIGRlZmluZSBpbnRtYXhfdCBnbF9pbnRtYXhfdAotKyNlbGlmIGRlZmluZWQgR0xfSU5UNjRfVAotKyMgZGVmaW5lIGludG1heF90IGludDY0X3QKLSsjZWxzZQotIHR5cGVkZWYgbG9uZyBpbnQgZ2xfaW50bWF4X3Q7Ci0tIyAgZGVmaW5lIGludG1heF90IGdsX2ludG1heF90Ci0tIyBlbmRpZgotKyMgZGVmaW5lIGludG1heF90IGdsX2ludG1heF90Ci0gI2VuZGlmCi0gCi0tI2lmbmRlZiBVSU5UTUFYX01BWAotLSMgdW5kZWYgVUlOVE1BWF9DCi0tIyB1bmRlZiB1aW50bWF4X3QKLS0jIGlmIEBIQVZFX1VOU0lHTkVEX0xPTkdfTE9OR19JTlRAICYmIFVMT05HX01BWCA+PiAzMSA9PSAxCi0rI3VuZGVmIHVpbnRtYXhfdAotKyNpZiBASEFWRV9VTlNJR05FRF9MT05HX0xPTkdfSU5UQCAmJiBVTE9OR19NQVggPj4gMzEgPT0gMQotIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIGludCBnbF91aW50bWF4X3Q7Ci0tIyAgZGVmaW5lIHVpbnRtYXhfdCBnbF91aW50bWF4X3QKLS0jIGVsaWYgZGVmaW5lZCBHTF9VSU5UNjRfVAotLSMgIGRlZmluZSB1aW50bWF4X3QgdWludDY0X3QKLS0jIGVsc2UKLSsjIGRlZmluZSB1aW50bWF4X3QgZ2xfdWludG1heF90Ci0rI2VsaWYgZGVmaW5lZCBHTF9VSU5UNjRfVAotKyMgZGVmaW5lIHVpbnRtYXhfdCB1aW50NjRfdAotKyNlbHNlCi0gdHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBnbF91aW50bWF4X3Q7Ci0tIyAgZGVmaW5lIHVpbnRtYXhfdCBnbF91aW50bWF4X3QKLS0jIGVuZGlmCi0rIyBkZWZpbmUgdWludG1heF90IGdsX3VpbnRtYXhfdAotICNlbmRpZgotIAotIC8qIFZlcmlmeSB0aGF0IGludG1heF90IGFuZCB1aW50bWF4X3QgaGF2ZSB0aGUgc2FtZSBzaXplLiAgVG9vIG11Y2ggY29kZQotQEAgLTQ0MSwyMyArNDMxLDIxIEBAIHR5cGVkZWYgaW50IF92ZXJpZnlfaW50bWF4X3NpemVbc2l6ZW9mICgKLSAKLSAvKiA3LjE4LjIuNS4gTGltaXRzIG9mIGdyZWF0ZXN0LXdpZHRoIGludGVnZXIgdHlwZXMgKi8KLSAKLS0jaWZuZGVmIElOVE1BWF9NQVgKLS0jIHVuZGVmIElOVE1BWF9NSU4KLS0jIGlmZGVmIElOVDY0X01BWAotLSMgIGRlZmluZSBJTlRNQVhfTUlOICBJTlQ2NF9NSU4KLS0jICBkZWZpbmUgSU5UTUFYX01BWCAgSU5UNjRfTUFYCi0tIyBlbHNlCi0tIyAgZGVmaW5lIElOVE1BWF9NSU4gIElOVDMyX01JTgotLSMgIGRlZmluZSBJTlRNQVhfTUFYICBJTlQzMl9NQVgKLS0jIGVuZGlmCi0rI3VuZGVmIElOVE1BWF9NSU4KLSsjdW5kZWYgSU5UTUFYX01BWAotKyNpZmRlZiBJTlQ2NF9NQVgKLSsjIGRlZmluZSBJTlRNQVhfTUlOICBJTlQ2NF9NSU4KLSsjIGRlZmluZSBJTlRNQVhfTUFYICBJTlQ2NF9NQVgKLSsjZWxzZQotKyMgZGVmaW5lIElOVE1BWF9NSU4gIElOVDMyX01JTgotKyMgZGVmaW5lIElOVE1BWF9NQVggIElOVDMyX01BWAotICNlbmRpZgotIAotLSNpZm5kZWYgVUlOVE1BWF9NQVgKLS0jIGlmZGVmIFVJTlQ2NF9NQVgKLS0jICBkZWZpbmUgVUlOVE1BWF9NQVggIFVJTlQ2NF9NQVgKLS0jIGVsc2UKLS0jICBkZWZpbmUgVUlOVE1BWF9NQVggIFVJTlQzMl9NQVgKLS0jIGVuZGlmCi0rI3VuZGVmIFVJTlRNQVhfTUFYCi0rI2lmZGVmIFVJTlQ2NF9NQVgKLSsjIGRlZmluZSBVSU5UTUFYX01BWCAgVUlOVDY0X01BWAotKyNlbHNlCi0rIyBkZWZpbmUgVUlOVE1BWF9NQVggIFVJTlQzMl9NQVgKLSAjZW5kaWYKLSAKLSAvKiA3LjE4LjMuIExpbWl0cyBvZiBvdGhlciBpbnRlZ2VyIHR5cGVzICovCi1AQCAtNTgwLDI3ICs1NjgsMjUgQEAgdHlwZWRlZiBpbnQgX3ZlcmlmeV9pbnRtYXhfc2l6ZVtzaXplb2YgKAotIAotIC8qIDcuMTguNC4yLiBNYWNyb3MgZm9yIGdyZWF0ZXN0LXdpZHRoIGludGVnZXIgY29uc3RhbnRzICovCi0gCi0tI2lmbmRlZiBJTlRNQVhfQwotLSMgaWYgQEhBVkVfTE9OR19MT05HX0lOVEAgJiYgTE9OR19NQVggPj4gMzAgPT0gMQotLSMgIGRlZmluZSBJTlRNQVhfQyh4KSAgIHgjI0xMCi0tIyBlbGlmIGRlZmluZWQgR0xfSU5UNjRfVAotLSMgIGRlZmluZSBJTlRNQVhfQyh4KSAgIElOVDY0X0MoeCkKLS0jIGVsc2UKLS0jICBkZWZpbmUgSU5UTUFYX0MoeCkgICB4IyNMCi0tIyBlbmRpZgotKyN1bmRlZiBJTlRNQVhfQwotKyNpZiBASEFWRV9MT05HX0xPTkdfSU5UQCAmJiBMT05HX01BWCA+PiAzMCA9PSAxCi0rIyBkZWZpbmUgSU5UTUFYX0MoeCkgICB4IyNMTAotKyNlbGlmIGRlZmluZWQgR0xfSU5UNjRfVAotKyMgZGVmaW5lIElOVE1BWF9DKHgpICAgSU5UNjRfQyh4KQotKyNlbHNlCi0rIyBkZWZpbmUgSU5UTUFYX0MoeCkgICB4IyNMCi0gI2VuZGlmCi0gCi0tI2lmbmRlZiBVSU5UTUFYX0MKLS0jIGlmIEBIQVZFX1VOU0lHTkVEX0xPTkdfTE9OR19JTlRAICYmIFVMT05HX01BWCA+PiAzMSA9PSAxCi0tIyAgZGVmaW5lIFVJTlRNQVhfQyh4KSAgeCMjVUxMCi0tIyBlbGlmIGRlZmluZWQgR0xfVUlOVDY0X1QKLS0jICBkZWZpbmUgVUlOVE1BWF9DKHgpICBVSU5UNjRfQyh4KQotLSMgZWxzZQotLSMgIGRlZmluZSBVSU5UTUFYX0MoeCkgIHgjI1VMCi0tIyBlbmRpZgotKyN1bmRlZiBVSU5UTUFYX0MKLSsjaWYgQEhBVkVfVU5TSUdORURfTE9OR19MT05HX0lOVEAgJiYgVUxPTkdfTUFYID4+IDMxID09IDEKLSsjIGRlZmluZSBVSU5UTUFYX0MoeCkgIHgjI1VMTAotKyNlbGlmIGRlZmluZWQgR0xfVUlOVDY0X1QKLSsjIGRlZmluZSBVSU5UTUFYX0MoeCkgIFVJTlQ2NF9DKHgpCi0rI2Vsc2UKLSsjIGRlZmluZSBVSU5UTUFYX0MoeCkgIHgjI1VMCi0gI2VuZGlmCi0gCi0gI2VuZGlmIC8qICFkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX19TVERDX0NPTlNUQU5UX01BQ1JPUyAqLwotIAotLSNlbmRpZiAvKiBfQEdVQVJEX1BSRUZJWEBfU1RESU5UX0ggKi8KLS0jZW5kaWYgLyogIWRlZmluZWQgX0BHVUFSRF9QUkVGSVhAX1NURElOVF9IICYmICFkZWZpbmVkIF9HTF9KVVNUX0lOQ0xVREVfU1lTVEVNX1NURElOVF9IICovCi0rI2VuZGlmIC8qIF9HTF9TVERJTlRfSCAqLwotKyNlbmRpZiAvKiAhZGVmaW5lZCBfR0xfU1RESU5UX0ggJiYgIWRlZmluZWQgX0dMX0pVU1RfSU5DTFVERV9TWVNURU1fU1RESU5UX0ggKi8KLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvc3RkaW8uaW4uaCBsaWJpY29udi0xLjE0L3NyY2xpYi9zdGRpby5pbi5oCi0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY2xpYi9zdGRpby5pbi5oCTIwMTEtMDgtMDcgMDY6NDI6MDYuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNsaWIvc3RkaW8uaW4uaAkyMDEyLTAxLTA4IDAyOjA3OjQwLjM3ODQ4NDQ1OSAtMDgwMAotQEAgLTM1LDcgKzM1LDcgQEAKLSAjZWxzZQotIC8qIE5vcm1hbCBpbnZvY2F0aW9uIGNvbnZlbnRpb24uICAqLwotIAotLSNpZm5kZWYgX0BHVUFSRF9QUkVGSVhAX1NURElPX0gKLSsjaWZuZGVmIF9HTF9TVERJT19ICi0gCi0gI2RlZmluZSBfR0xfQUxSRUFEWV9JTkNMVURJTkdfU1RESU9fSAotIAotQEAgLTQ0LDggKzQ0LDggQEAKLSAKLSAjdW5kZWYgX0dMX0FMUkVBRFlfSU5DTFVESU5HX1NURElPX0gKLSAKLS0jaWZuZGVmIF9AR1VBUkRfUFJFRklYQF9TVERJT19ICi0tI2RlZmluZSBfQEdVQVJEX1BSRUZJWEBfU1RESU9fSAotKyNpZm5kZWYgX0dMX1NURElPX0gKLSsjZGVmaW5lIF9HTF9TVERJT19ICi0gCi0gLyogR2V0IHZhX2xpc3QuICBOZWVkZWQgb24gbWFueSBzeXN0ZW1zLCBpbmNsdWRpbmcgZ2xpYmMgMi44LiAgKi8KLSAjaW5jbHVkZSA8c3RkYXJnLmg+Ci1AQCAtNDYxLDYgKzQ2MSwyNSBAQCBfR0xfRlVOQ0RFQ0xfU1lTIChmc2Vla28sIGludCwgKEZJTEUgKmZwCi0gX0dMX0NYWEFMSUFTX1NZUyAoZnNlZWtvLCBpbnQsIChGSUxFICpmcCwgb2ZmX3Qgb2Zmc2V0LCBpbnQgd2hlbmNlKSk7Ci0gIyBlbmRpZgotIF9HTF9DWFhBTElBU1dBUk4gKGZzZWVrbyk7Ci0rIyBpZiAoQFJFUExBQ0VfRlNFRUtPQCB8fCAhQEhBVkVfRlNFRUtPQCkgJiYgIUBHTlVMSUJfRlNFRUtACi0rICAgLyogUHJvdmlkZSBhbiBmc2VlayBmdW5jdGlvbiB0aGF0IGlzIGNvbnNpc3RlbnQgd2l0aCBmc2Vla28uICAqLwotKyAgIC8qIEluIG9yZGVyIHRvIGF2b2lkIHRoYXQgZnNlZWsgZ2V0cyBkZWZpbmVkIGFzIGEgbWFjcm8gaGVyZSwgdGhlCi0rICAgICAgZGV2ZWxvcGVyIGNhbiByZXF1ZXN0IHRoZSAnZnNlZWsnIG1vZHVsZS4gICovCi0rIyAgaWYgIUdOVUxJQl9kZWZpbmVkX2ZzZWVrX2Z1bmN0aW9uCi0rIyAgIHVuZGVmIGZzZWVrCi0rIyAgIGRlZmluZSBmc2VlayBycGxfZnNlZWsKLStzdGF0aWMgaW5saW5lIGludCBfR0xfQVJHX05PTk5VTEwgKCgxKSkKLStycGxfZnNlZWsgKEZJTEUgKmZwLCBsb25nIG9mZnNldCwgaW50IHdoZW5jZSkKLSt7Ci0rIyAgIGlmIEBSRVBMQUNFX0ZTRUVLT0AKLSsgIHJldHVybiBycGxfZnNlZWtvIChmcCwgb2Zmc2V0LCB3aGVuY2UpOwotKyMgICBlbHNlCi0rICByZXR1cm4gZnNlZWtvIChmcCwgb2Zmc2V0LCB3aGVuY2UpOwotKyMgICBlbmRpZgotK30KLSsjICAgZGVmaW5lIEdOVUxJQl9kZWZpbmVkX2ZzZWVrX2Z1bmN0aW9uIDEKLSsjICBlbmRpZgotKyMgZW5kaWYKLSAjZWxpZiBkZWZpbmVkIEdOVUxJQl9QT1NJWENIRUNLCi0gIyBkZWZpbmUgX0dMX0ZTRUVLX1dBUk4gLyogQ2F0ZWdvcnkgMSwgYWJvdmUuICAqLwotICMgdW5kZWYgZnNlZWsKLUBAIC01MjAsNiArNTM5LDI1IEBAIF9HTF9GVU5DREVDTF9TWVMgKGZ0ZWxsbywgb2ZmX3QsIChGSUxFICoKLSBfR0xfQ1hYQUxJQVNfU1lTIChmdGVsbG8sIG9mZl90LCAoRklMRSAqZnApKTsKLSAjIGVuZGlmCi0gX0dMX0NYWEFMSUFTV0FSTiAoZnRlbGxvKTsKLSsjIGlmIChAUkVQTEFDRV9GVEVMTE9AIHx8ICFASEFWRV9GVEVMTE9AKSAmJiAhQEdOVUxJQl9GVEVMTEAKLSsgICAvKiBQcm92aWRlIGFuIGZ0ZWxsIGZ1bmN0aW9uIHRoYXQgaXMgY29uc2lzdGVudCB3aXRoIGZ0ZWxsby4gICovCi0rICAgLyogSW4gb3JkZXIgdG8gYXZvaWQgdGhhdCBmdGVsbCBnZXRzIGRlZmluZWQgYXMgYSBtYWNybyBoZXJlLCB0aGUKLSsgICAgICBkZXZlbG9wZXIgY2FuIHJlcXVlc3QgdGhlICdmdGVsbCcgbW9kdWxlLiAgKi8KLSsjICBpZiAhR05VTElCX2RlZmluZWRfZnRlbGxfZnVuY3Rpb24KLSsjICAgdW5kZWYgZnRlbGwKLSsjICAgZGVmaW5lIGZ0ZWxsIHJwbF9mdGVsbAotK3N0YXRpYyBpbmxpbmUgbG9uZyBfR0xfQVJHX05PTk5VTEwgKCgxKSkKLStycGxfZnRlbGwgKEZJTEUgKmYpCi0rewotKyMgICBpZiBAUkVQTEFDRV9GVEVMTE9ACi0rICByZXR1cm4gcnBsX2Z0ZWxsbyAoZik7Ci0rIyAgIGVsc2UKLSsgIHJldHVybiBmdGVsbG8gKGYpOwotKyMgICBlbmRpZgotK30KLSsjICAgZGVmaW5lIEdOVUxJQl9kZWZpbmVkX2Z0ZWxsX2Z1bmN0aW9uIDEKLSsjICBlbmRpZgotKyMgZW5kaWYKLSAjZWxpZiBkZWZpbmVkIEdOVUxJQl9QT1NJWENIRUNLCi0gIyBkZWZpbmUgX0dMX0ZURUxMX1dBUk4gLyogQ2F0ZWdvcnkgMSwgYWJvdmUuICAqLwotICMgdW5kZWYgZnRlbGwKLUBAIC0xMzA3LDYgKzEzNDUsNiBAQCBfR0xfV0FSTl9PTl9VU0UgKHZzcHJpbnRmLCAidnNwcmludGYgaXMKLSAjZW5kaWYKLSAKLSAKLS0jZW5kaWYgLyogX0BHVUFSRF9QUkVGSVhAX1NURElPX0ggKi8KLS0jZW5kaWYgLyogX0BHVUFSRF9QUkVGSVhAX1NURElPX0ggKi8KLSsjZW5kaWYgLyogX0dMX1NURElPX0ggKi8KLSsjZW5kaWYgLyogX0dMX1NURElPX0ggKi8KLSAjZW5kaWYKLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvc3RkbGliLmluLmggbGliaWNvbnYtMS4xNC9zcmNsaWIvc3RkbGliLmluLmgKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbGliL3N0ZGxpYi5pbi5oCTIwMTEtMDgtMDcgMDY6NDI6MDYuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNsaWIvc3RkbGliLmluLmgJMjAxMi0wMS0wOCAwMjowNzo0MC4zOTA0ODQ0NTkgLTA4MDAKLUBAIC0yOCwxMyArMjgsMTMgQEAKLSAjZWxzZQotIC8qIE5vcm1hbCBpbnZvY2F0aW9uIGNvbnZlbnRpb24uICAqLwotIAotLSNpZm5kZWYgX0BHVUFSRF9QUkVGSVhAX1NURExJQl9ICi0rI2lmbmRlZiBfR0xfU1RETElCX0gKLSAKLSAvKiBUaGUgaW5jbHVkZV9uZXh0IHJlcXVpcmVzIGEgc3BsaXQgZG91YmxlLWluY2x1c2lvbiBndWFyZC4gICovCi0gI0BJTkNMVURFX05FWFRAIEBORVhUX1NURExJQl9IQAotIAotLSNpZm5kZWYgX0BHVUFSRF9QUkVGSVhAX1NURExJQl9ICi0tI2RlZmluZSBfQEdVQVJEX1BSRUZJWEBfU1RETElCX0gKLSsjaWZuZGVmIF9HTF9TVERMSUJfSAotKyNkZWZpbmUgX0dMX1NURExJQl9ICi0gCi0gLyogTmV0QlNEIDUuMCBtaXMtZGVmaW5lcyBOVUxMLiAgKi8KLSAjaW5jbHVkZSA8c3RkZGVmLmg+Ci1AQCAtODksNyArODksMTEgQEAgc3RydWN0IHJhbmRvbV9kYXRhCi0gIyBpbmNsdWRlIDx1bmlzdGQuaD4KLSAjZW5kaWYKLSAKLS0vKiBUaGUgZGVmaW5pdGlvbiBvZiBfTm9yZXR1cm4gaXMgY29waWVkIGhlcmUuICAqLwotKyNpZiAzIDw9IF9fR05VQ19fIHx8IF9fR05VQ19fID09IDIgJiYgOCA8PSBfX0dOVUNfTUlOT1JfXwotKyMgZGVmaW5lIF9HTF9BVFRSSUJVVEVfTk9SRVRVUk4gX19hdHRyaWJ1dGVfXyAoKF9fbm9yZXR1cm5fXykpCi0rI2Vsc2UKLSsjIGRlZmluZSBfR0xfQVRUUklCVVRFX05PUkVUVVJOCi0rI2VuZGlmCi0gCi0gLyogVGhlIGRlZmluaXRpb25zIG9mIF9HTF9GVU5DREVDTF9SUEwgZXRjLiBhcmUgY29waWVkIGhlcmUuICAqLwotIAotQEAgLTExNiw3ICsxMjAsNyBAQCBzdHJ1Y3QgcmFuZG9tX2RhdGEKLSAvKiBUZXJtaW5hdGUgdGhlIGN1cnJlbnQgcHJvY2VzcyB3aXRoIHRoZSBnaXZlbiByZXR1cm4gY29kZSwgd2l0aG91dCBydW5uaW5nCi0gICAgdGhlICdhdGV4aXQnIGhhbmRsZXJzLiAgKi8KLSAjIGlmICFASEFWRV9fRVhJVEAKLS1fR0xfRlVOQ0RFQ0xfU1lTIChfRXhpdCwgX05vcmV0dXJuIHZvaWQsIChpbnQgc3RhdHVzKSk7Ci0rX0dMX0ZVTkNERUNMX1NZUyAoX0V4aXQsIHZvaWQsIChpbnQgc3RhdHVzKSBfR0xfQVRUUklCVVRFX05PUkVUVVJOKTsKLSAjIGVuZGlmCi0gX0dMX0NYWEFMSUFTX1NZUyAoX0V4aXQsIHZvaWQsIChpbnQgc3RhdHVzKSk7Ci0gX0dMX0NYWEFMSUFTV0FSTiAoX0V4aXQpOwotQEAgLTc1Nyw2ICs3NjEsNiBAQCBfR0xfQ1hYQUxJQVNXQVJOICh3Y3RvbWIpOwotICNlbmRpZgotIAotIAotLSNlbmRpZiAvKiBfQEdVQVJEX1BSRUZJWEBfU1RETElCX0ggKi8KLS0jZW5kaWYgLyogX0BHVUFSRF9QUkVGSVhAX1NURExJQl9IICovCi0rI2VuZGlmIC8qIF9HTF9TVERMSUJfSCAqLwotKyNlbmRpZiAvKiBfR0xfU1RETElCX0ggKi8KLSAjZW5kaWYKLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvc3RyZXJyb3IuYyBsaWJpY29udi0xLjE0L3NyY2xpYi9zdHJlcnJvci5jCi0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY2xpYi9zdHJlcnJvci5jCTIwMTEtMDgtMDcgMDY6NDI6MDYuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNsaWIvc3RyZXJyb3IuYwkyMDEyLTAxLTA4IDAyOjA3OjQwLjQwNjQ4NDQ2MSAtMDgwMAotQEAgLTE3LDU0ICsxNywzNDAgQEAKLSAKLSAjaW5jbHVkZSA8Y29uZmlnLmg+Ci0gCi0tLyogU3BlY2lmaWNhdGlvbi4gICovCi0gI2luY2x1ZGUgPHN0cmluZy5oPgotIAotLSNpbmNsdWRlIDxlcnJuby5oPgotLSNpbmNsdWRlIDxzdGRpby5oPgotLSNpbmNsdWRlIDxzdGRsaWIuaD4KLS0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2lmIFJFUExBQ0VfU1RSRVJST1IKLSsKLSsjIGluY2x1ZGUgPGVycm5vLmg+Ci0rIyBpbmNsdWRlIDxzdGRpby5oPgotKwotKyMgaWYgR05VTElCX2RlZmluZWRfRVNPQ0sgLyogbmF0aXZlIFdpbmRvd3MgcGxhdGZvcm1zICovCi0rIyAgaWYgSEFWRV9XSU5TT0NLMl9ICi0rIyAgIGluY2x1ZGUgPHdpbnNvY2syLmg+Ci0rIyAgZW5kaWYKLSsjIGVuZGlmCi0gCi0tI2luY2x1ZGUgImludHByb3BzLmgiCi0tI2luY2x1ZGUgInN0cmVycm9yLW92ZXJyaWRlLmgiCi0tI2luY2x1ZGUgInZlcmlmeS5oIgotKyMgaW5jbHVkZSAiaW50cHJvcHMuaCIKLSAKLSAvKiBVc2UgdGhlIHN5c3RlbSBmdW5jdGlvbnMsIG5vdCB0aGUgZ251bGliIG92ZXJyaWRlcyBpbiB0aGlzIGZpbGUuICAqLwotLSN1bmRlZiBzcHJpbnRmCi0rIyB1bmRlZiBzcHJpbnRmCi0rCi0rIyB1bmRlZiBzdHJlcnJvcgotKyMgaWYgISBIQVZFX0RFQ0xfU1RSRVJST1IKLSsjICBkZWZpbmUgc3RyZXJyb3IobikgTlVMTAotKyMgZW5kaWYKLSAKLSBjaGFyICoKLS1zdHJlcnJvciAoaW50IG4pCi0tI3VuZGVmIHN0cmVycm9yCi0rcnBsX3N0cmVycm9yIChpbnQgbikKLSB7Ci0tICBzdGF0aWMgY2hhciBidWZbU1RBQ0tCVUZfTEVOXTsKLS0gIHNpemVfdCBsZW47Ci0rICBjaGFyIGNvbnN0ICptc2cgPSBOVUxMOwotKyAgLyogVGhlc2UgZXJyb3IgbWVzc2FnZXMgYXJlIHRha2VuIGZyb20gZ2xpYmMvc3lzZGVwcy9nbnUvZXJybGlzdC5jLiAgKi8KLSsgIHN3aXRjaCAobikKLSsgICAgewotKyMgaWYgR05VTElCX2RlZmluZWRfRVRYVEJTWQotKyAgICBjYXNlIEVUWFRCU1k6Ci0rICAgICAgbXNnID0gIlRleHQgZmlsZSBidXN5IjsKLSsgICAgICBicmVhazsKLSsjIGVuZGlmCi0rCi0rIyBpZiBHTlVMSUJfZGVmaW5lZF9FU09DSyAvKiBuYXRpdmUgV2luZG93cyBwbGF0Zm9ybXMgKi8KLSsgICAgLyogRVdPVUxEQkxPQ0sgaXMgdGhlIHNhbWUgYXMgRUFHQUlOLiAgKi8KLSsgICAgY2FzZSBFSU5QUk9HUkVTUzoKLSsgICAgICBtc2cgPSAiT3BlcmF0aW9uIG5vdyBpbiBwcm9ncmVzcyI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgRUFMUkVBRFk6Ci0rICAgICAgbXNnID0gIk9wZXJhdGlvbiBhbHJlYWR5IGluIHByb2dyZXNzIjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBFTk9UU09DSzoKLSsgICAgICBtc2cgPSAiU29ja2V0IG9wZXJhdGlvbiBvbiBub24tc29ja2V0IjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBFREVTVEFERFJSRVE6Ci0rICAgICAgbXNnID0gIkRlc3RpbmF0aW9uIGFkZHJlc3MgcmVxdWlyZWQiOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIEVNU0dTSVpFOgotKyAgICAgIG1zZyA9ICJNZXNzYWdlIHRvbyBsb25nIjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBFUFJPVE9UWVBFOgotKyAgICAgIG1zZyA9ICJQcm90b2NvbCB3cm9uZyB0eXBlIGZvciBzb2NrZXQiOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIEVOT1BST1RPT1BUOgotKyAgICAgIG1zZyA9ICJQcm90b2NvbCBub3QgYXZhaWxhYmxlIjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBFUFJPVE9OT1NVUFBPUlQ6Ci0rICAgICAgbXNnID0gIlByb3RvY29sIG5vdCBzdXBwb3J0ZWQiOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIEVTT0NLVE5PU1VQUE9SVDoKLSsgICAgICBtc2cgPSAiU29ja2V0IHR5cGUgbm90IHN1cHBvcnRlZCI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgRU9QTk9UU1VQUDoKLSsgICAgICBtc2cgPSAiT3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQiOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIEVQRk5PU1VQUE9SVDoKLSsgICAgICBtc2cgPSAiUHJvdG9jb2wgZmFtaWx5IG5vdCBzdXBwb3J0ZWQiOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIEVBRk5PU1VQUE9SVDoKLSsgICAgICBtc2cgPSAiQWRkcmVzcyBmYW1pbHkgbm90IHN1cHBvcnRlZCBieSBwcm90b2NvbCI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgRUFERFJJTlVTRToKLSsgICAgICBtc2cgPSAiQWRkcmVzcyBhbHJlYWR5IGluIHVzZSI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgRUFERFJOT1RBVkFJTDoKLSsgICAgICBtc2cgPSAiQ2Fubm90IGFzc2lnbiByZXF1ZXN0ZWQgYWRkcmVzcyI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgRU5FVERPV046Ci0rICAgICAgbXNnID0gIk5ldHdvcmsgaXMgZG93biI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgRU5FVFVOUkVBQ0g6Ci0rICAgICAgbXNnID0gIk5ldHdvcmsgaXMgdW5yZWFjaGFibGUiOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIEVORVRSRVNFVDoKLSsgICAgICBtc2cgPSAiTmV0d29yayBkcm9wcGVkIGNvbm5lY3Rpb24gb24gcmVzZXQiOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIEVDT05OQUJPUlRFRDoKLSsgICAgICBtc2cgPSAiU29mdHdhcmUgY2F1c2VkIGNvbm5lY3Rpb24gYWJvcnQiOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIEVDT05OUkVTRVQ6Ci0rICAgICAgbXNnID0gIkNvbm5lY3Rpb24gcmVzZXQgYnkgcGVlciI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgRU5PQlVGUzoKLSsgICAgICBtc2cgPSAiTm8gYnVmZmVyIHNwYWNlIGF2YWlsYWJsZSI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgRUlTQ09OTjoKLSsgICAgICBtc2cgPSAiVHJhbnNwb3J0IGVuZHBvaW50IGlzIGFscmVhZHkgY29ubmVjdGVkIjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBFTk9UQ09OTjoKLSsgICAgICBtc2cgPSAiVHJhbnNwb3J0IGVuZHBvaW50IGlzIG5vdCBjb25uZWN0ZWQiOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIEVTSFVURE9XTjoKLSsgICAgICBtc2cgPSAiQ2Fubm90IHNlbmQgYWZ0ZXIgdHJhbnNwb3J0IGVuZHBvaW50IHNodXRkb3duIjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBFVE9PTUFOWVJFRlM6Ci0rICAgICAgbXNnID0gIlRvbyBtYW55IHJlZmVyZW5jZXM6IGNhbm5vdCBzcGxpY2UiOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIEVUSU1FRE9VVDoKLSsgICAgICBtc2cgPSAiQ29ubmVjdGlvbiB0aW1lZCBvdXQiOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIEVDT05OUkVGVVNFRDoKLSsgICAgICBtc2cgPSAiQ29ubmVjdGlvbiByZWZ1c2VkIjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBFTE9PUDoKLSsgICAgICBtc2cgPSAiVG9vIG1hbnkgbGV2ZWxzIG9mIHN5bWJvbGljIGxpbmtzIjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBFSE9TVERPV046Ci0rICAgICAgbXNnID0gIkhvc3QgaXMgZG93biI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgRUhPU1RVTlJFQUNIOgotKyAgICAgIG1zZyA9ICJObyByb3V0ZSB0byBob3N0IjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBFUFJPQ0xJTToKLSsgICAgICBtc2cgPSAiVG9vIG1hbnkgcHJvY2Vzc2VzIjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBFVVNFUlM6Ci0rICAgICAgbXNnID0gIlRvbyBtYW55IHVzZXJzIjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBFRFFVT1Q6Ci0rICAgICAgbXNnID0gIkRpc2sgcXVvdGEgZXhjZWVkZWQiOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIEVTVEFMRToKLSsgICAgICBtc2cgPSAiU3RhbGUgTkZTIGZpbGUgaGFuZGxlIjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBFUkVNT1RFOgotKyAgICAgIG1zZyA9ICJPYmplY3QgaXMgcmVtb3RlIjsKLSsgICAgICBicmVhazsKLSsjICBpZiBIQVZFX1dJTlNPQ0syX0gKLSsgICAgLyogV1NBX0lOVkFMSURfSEFORExFIG1hcHMgdG8gRUJBREYgKi8KLSsgICAgLyogV1NBX05PVF9FTk9VR0hfTUVNT1JZIG1hcHMgdG8gRU5PTUVNICovCi0rICAgIC8qIFdTQV9JTlZBTElEX1BBUkFNRVRFUiBtYXBzIHRvIEVJTlZBTCAqLwotKyAgICBjYXNlIFdTQV9PUEVSQVRJT05fQUJPUlRFRDoKLSsgICAgICBtc2cgPSAiT3ZlcmxhcHBlZCBvcGVyYXRpb24gYWJvcnRlZCI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgV1NBX0lPX0lOQ09NUExFVEU6Ci0rICAgICAgbXNnID0gIk92ZXJsYXBwZWQgSS9PIGV2ZW50IG9iamVjdCBub3QgaW4gc2lnbmFsZWQgc3RhdGUiOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIFdTQV9JT19QRU5ESU5HOgotKyAgICAgIG1zZyA9ICJPdmVybGFwcGVkIG9wZXJhdGlvbnMgd2lsbCBjb21wbGV0ZSBsYXRlciI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIC8qIFdTQUVJTlRSIG1hcHMgdG8gRUlOVFIgKi8KLSsgICAgLyogV1NBRUJBREYgbWFwcyB0byBFQkFERiAqLwotKyAgICAvKiBXU0FFQUNDRVMgbWFwcyB0byBFQUNDRVMgKi8KLSsgICAgLyogV1NBRUZBVUxUIG1hcHMgdG8gRUZBVUxUICovCi0rICAgIC8qIFdTQUVJTlZBTCBtYXBzIHRvIEVJTlZBTCAqLwotKyAgICAvKiBXU0FFTUZJTEUgbWFwcyB0byBFTUZJTEUgKi8KLSsgICAgLyogV1NBRVdPVUxEQkxPQ0sgbWFwcyB0byBFV09VTERCTE9DSyAqLwotKyAgICAvKiBXU0FFSU5QUk9HUkVTUyBpcyBFSU5QUk9HUkVTUyAqLwotKyAgICAvKiBXU0FFQUxSRUFEWSBpcyBFQUxSRUFEWSAqLwotKyAgICAvKiBXU0FFTk9UU09DSyBpcyBFTk9UU09DSyAqLwotKyAgICAvKiBXU0FFREVTVEFERFJSRVEgaXMgRURFU1RBRERSUkVRICovCi0rICAgIC8qIFdTQUVNU0dTSVpFIGlzIEVNU0dTSVpFICovCi0rICAgIC8qIFdTQUVQUk9UT1RZUEUgaXMgRVBST1RPVFlQRSAqLwotKyAgICAvKiBXU0FFTk9QUk9UT09QVCBpcyBFTk9QUk9UT09QVCAqLwotKyAgICAvKiBXU0FFUFJPVE9OT1NVUFBPUlQgaXMgRVBST1RPTk9TVVBQT1JUICovCi0rICAgIC8qIFdTQUVTT0NLVE5PU1VQUE9SVCBpcyBFU09DS1ROT1NVUFBPUlQgKi8KLSsgICAgLyogV1NBRU9QTk9UU1VQUCBpcyBFT1BOT1RTVVBQICovCi0rICAgIC8qIFdTQUVQRk5PU1VQUE9SVCBpcyBFUEZOT1NVUFBPUlQgKi8KLSsgICAgLyogV1NBRUFGTk9TVVBQT1JUIGlzIEVBRk5PU1VQUE9SVCAqLwotKyAgICAvKiBXU0FFQUREUklOVVNFIGlzIEVBRERSSU5VU0UgKi8KLSsgICAgLyogV1NBRUFERFJOT1RBVkFJTCBpcyBFQUREUk5PVEFWQUlMICovCi0rICAgIC8qIFdTQUVORVRET1dOIGlzIEVORVRET1dOICovCi0rICAgIC8qIFdTQUVORVRVTlJFQUNIIGlzIEVORVRVTlJFQUNIICovCi0rICAgIC8qIFdTQUVORVRSRVNFVCBpcyBFTkVUUkVTRVQgKi8KLSsgICAgLyogV1NBRUNPTk5BQk9SVEVEIGlzIEVDT05OQUJPUlRFRCAqLwotKyAgICAvKiBXU0FFQ09OTlJFU0VUIGlzIEVDT05OUkVTRVQgKi8KLSsgICAgLyogV1NBRU5PQlVGUyBpcyBFTk9CVUZTICovCi0rICAgIC8qIFdTQUVJU0NPTk4gaXMgRUlTQ09OTiAqLwotKyAgICAvKiBXU0FFTk9UQ09OTiBpcyBFTk9UQ09OTiAqLwotKyAgICAvKiBXU0FFU0hVVERPV04gaXMgRVNIVVRET1dOICovCi0rICAgIC8qIFdTQUVUT09NQU5ZUkVGUyBpcyBFVE9PTUFOWVJFRlMgKi8KLSsgICAgLyogV1NBRVRJTUVET1VUIGlzIEVUSU1FRE9VVCAqLwotKyAgICAvKiBXU0FFQ09OTlJFRlVTRUQgaXMgRUNPTk5SRUZVU0VEICovCi0rICAgIC8qIFdTQUVMT09QIGlzIEVMT09QICovCi0rICAgIC8qIFdTQUVOQU1FVE9PTE9ORyBtYXBzIHRvIEVOQU1FVE9PTE9ORyAqLwotKyAgICAvKiBXU0FFSE9TVERPV04gaXMgRUhPU1RET1dOICovCi0rICAgIC8qIFdTQUVIT1NUVU5SRUFDSCBpcyBFSE9TVFVOUkVBQ0ggKi8KLSsgICAgLyogV1NBRU5PVEVNUFRZIG1hcHMgdG8gRU5PVEVNUFRZICovCi0rICAgIC8qIFdTQUVQUk9DTElNIGlzIEVQUk9DTElNICovCi0rICAgIC8qIFdTQUVVU0VSUyBpcyBFVVNFUlMgKi8KLSsgICAgLyogV1NBRURRVU9UIGlzIEVEUVVPVCAqLwotKyAgICAvKiBXU0FFU1RBTEUgaXMgRVNUQUxFICovCi0rICAgIC8qIFdTQUVSRU1PVEUgaXMgRVJFTU9URSAqLwotKyAgICBjYXNlIFdTQVNZU05PVFJFQURZOgotKyAgICAgIG1zZyA9ICJOZXR3b3JrIHN1YnN5c3RlbSBpcyB1bmF2YWlsYWJsZSI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgV1NBVkVSTk9UU1VQUE9SVEVEOgotKyAgICAgIG1zZyA9ICJXaW5zb2NrLmRsbCB2ZXJzaW9uIG91dCBvZiByYW5nZSI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgV1NBTk9USU5JVElBTElTRUQ6Ci0rICAgICAgbXNnID0gIlN1Y2Nlc3NmdWwgV1NBU3RhcnR1cCBub3QgeWV0IHBlcmZvcm1lZCI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgV1NBRURJU0NPTjoKLSsgICAgICBtc2cgPSAiR3JhY2VmdWwgc2h1dGRvd24gaW4gcHJvZ3Jlc3MiOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIFdTQUVOT01PUkU6IGNhc2UgV1NBX0VfTk9fTU9SRToKLSsgICAgICBtc2cgPSAiTm8gbW9yZSByZXN1bHRzIjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBXU0FFQ0FOQ0VMTEVEOiBjYXNlIFdTQV9FX0NBTkNFTExFRDoKLSsgICAgICBtc2cgPSAiQ2FsbCB3YXMgY2FuY2VsZWQiOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIFdTQUVJTlZBTElEUFJPQ1RBQkxFOgotKyAgICAgIG1zZyA9ICJQcm9jZWR1cmUgY2FsbCB0YWJsZSBpcyBpbnZhbGlkIjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBXU0FFSU5WQUxJRFBST1ZJREVSOgotKyAgICAgIG1zZyA9ICJTZXJ2aWNlIHByb3ZpZGVyIGlzIGludmFsaWQiOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIFdTQUVQUk9WSURFUkZBSUxFRElOSVQ6Ci0rICAgICAgbXNnID0gIlNlcnZpY2UgcHJvdmlkZXIgZmFpbGVkIHRvIGluaXRpYWxpemUiOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIFdTQVNZU0NBTExGQUlMVVJFOgotKyAgICAgIG1zZyA9ICJTeXN0ZW0gY2FsbCBmYWlsdXJlIjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBXU0FTRVJWSUNFX05PVF9GT1VORDoKLSsgICAgICBtc2cgPSAiU2VydmljZSBub3QgZm91bmQiOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIFdTQVRZUEVfTk9UX0ZPVU5EOgotKyAgICAgIG1zZyA9ICJDbGFzcyB0eXBlIG5vdCBmb3VuZCI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgV1NBRVJFRlVTRUQ6Ci0rICAgICAgbXNnID0gIkRhdGFiYXNlIHF1ZXJ5IHdhcyByZWZ1c2VkIjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBXU0FIT1NUX05PVF9GT1VORDoKLSsgICAgICBtc2cgPSAiSG9zdCBub3QgZm91bmQiOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIFdTQVRSWV9BR0FJTjoKLSsgICAgICBtc2cgPSAiTm9uYXV0aG9yaXRhdGl2ZSBob3N0IG5vdCBmb3VuZCI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgV1NBTk9fUkVDT1ZFUlk6Ci0rICAgICAgbXNnID0gIk5vbnJlY292ZXJhYmxlIGVycm9yIjsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBXU0FOT19EQVRBOgotKyAgICAgIG1zZyA9ICJWYWxpZCBuYW1lLCBubyBkYXRhIHJlY29yZCBvZiByZXF1ZXN0ZWQgdHlwZSI7Ci0rICAgICAgYnJlYWs7Ci0rICAgIC8qIFdTQV9RT1NfKiBvbWl0dGVkICovCi0rIyAgZW5kaWYKLSsjIGVuZGlmCi0rCi0rIyBpZiBHTlVMSUJfZGVmaW5lZF9FTk9NU0cKLSsgICAgY2FzZSBFTk9NU0c6Ci0rICAgICAgbXNnID0gIk5vIG1lc3NhZ2Ugb2YgZGVzaXJlZCB0eXBlIjsKLSsgICAgICBicmVhazsKLSsjIGVuZGlmCi0rCi0rIyBpZiBHTlVMSUJfZGVmaW5lZF9FSURSTQotKyAgICBjYXNlIEVJRFJNOgotKyAgICAgIG1zZyA9ICJJZGVudGlmaWVyIHJlbW92ZWQiOwotKyAgICAgIGJyZWFrOwotKyMgZW5kaWYKLSsKLSsjIGlmIEdOVUxJQl9kZWZpbmVkX0VOT0xJTksKLSsgICAgY2FzZSBFTk9MSU5LOgotKyAgICAgIG1zZyA9ICJMaW5rIGhhcyBiZWVuIHNldmVyZWQiOwotKyAgICAgIGJyZWFrOwotKyMgZW5kaWYKLSsKLSsjIGlmIEdOVUxJQl9kZWZpbmVkX0VQUk9UTwotKyAgICBjYXNlIEVQUk9UTzoKLSsgICAgICBtc2cgPSAiUHJvdG9jb2wgZXJyb3IiOwotKyAgICAgIGJyZWFrOwotKyMgZW5kaWYKLSsKLSsjIGlmIEdOVUxJQl9kZWZpbmVkX0VNVUxUSUhPUAotKyAgICBjYXNlIEVNVUxUSUhPUDoKLSsgICAgICBtc2cgPSAiTXVsdGlob3AgYXR0ZW1wdGVkIjsKLSsgICAgICBicmVhazsKLSsjIGVuZGlmCi0rCi0rIyBpZiBHTlVMSUJfZGVmaW5lZF9FQkFETVNHCi0rICAgIGNhc2UgRUJBRE1TRzoKLSsgICAgICBtc2cgPSAiQmFkIG1lc3NhZ2UiOwotKyAgICAgIGJyZWFrOwotKyMgZW5kaWYKLSsKLSsjIGlmIEdOVUxJQl9kZWZpbmVkX0VPVkVSRkxPVwotKyAgICBjYXNlIEVPVkVSRkxPVzoKLSsgICAgICBtc2cgPSAiVmFsdWUgdG9vIGxhcmdlIGZvciBkZWZpbmVkIGRhdGEgdHlwZSI7Ci0rICAgICAgYnJlYWs7Ci0rIyBlbmRpZgotKwotKyMgaWYgR05VTElCX2RlZmluZWRfRU5PVFNVUAotKyAgICBjYXNlIEVOT1RTVVA6Ci0rICAgICAgbXNnID0gIk5vdCBzdXBwb3J0ZWQiOwotKyAgICAgIGJyZWFrOwotKyMgZW5kaWYKLSsKLSsjIGlmIEdOVUxJQl9kZWZpbmVkX0VTVEFMRQotKyAgICBjYXNlIEVTVEFMRToKLSsgICAgICBtc2cgPSAiU3RhbGUgTkZTIGZpbGUgaGFuZGxlIjsKLSsgICAgICBicmVhazsKLSsjIGVuZGlmCi0rCi0rIyBpZiBHTlVMSUJfZGVmaW5lZF9FRFFVT1QKLSsgICAgY2FzZSBFRFFVT1Q6Ci0rICAgICAgbXNnID0gIkRpc2sgcXVvdGEgZXhjZWVkZWQiOwotKyAgICAgIGJyZWFrOwotKyMgZW5kaWYKLSsKLSsjIGlmIEdOVUxJQl9kZWZpbmVkX0VDQU5DRUxFRAotKyAgICBjYXNlIEVDQU5DRUxFRDoKLSsgICAgICBtc2cgPSAiT3BlcmF0aW9uIGNhbmNlbGVkIjsKLSsgICAgICBicmVhazsKLSsjIGVuZGlmCi0rICAgIH0KLSAKLS0gIC8qIENhc3QgYXdheSBjb25zdCwgZHVlIHRvIHRoZSBoaXN0b3JpY2FsIHNpZ25hdHVyZSBvZiBzdHJlcnJvcjsKLS0gICAgIGNhbGxlcnMgc2hvdWxkIG5vdCBiZSBtb2RpZnlpbmcgdGhlIHN0cmluZy4gICovCi0tICBjb25zdCBjaGFyICptc2cgPSBzdHJlcnJvcl9vdmVycmlkZSAobik7Ci0gICBpZiAobXNnKQotICAgICByZXR1cm4gKGNoYXIgKikgbXNnOwotIAotLSAgbXNnID0gc3RyZXJyb3IgKG4pOwotKyAgewotKyAgICBjaGFyICpyZXN1bHQgPSBzdHJlcnJvciAobik7Ci0gCi0tICAvKiBPdXIgc3RyZXJyb3JfciBpbXBsZW1lbnRhdGlvbiBtaWdodCB1c2UgdGhlIHN5c3RlbSdzIHN0cmVycm9yCi0tICAgICBidWZmZXIsIHNvIGFsbCBvdGhlciBjbGllbnRzIG9mIHN0cmVycm9yIGhhdmUgdG8gc2VlIHRoZSBlcnJvcgotLSAgICAgY29waWVkIGludG8gYSBidWZmZXIgdGhhdCB3ZSBtYW5hZ2UuICBUaGlzIGlzIG5vdCB0aHJlYWQtc2FmZSwKLS0gICAgIGV2ZW4gaWYgdGhlIHN5c3RlbSBzdHJlcnJvciBpcywgYnV0IHBvcnRhYmxlIHByb2dyYW1zIHNob3VsZG4ndAotLSAgICAgYmUgdXNpbmcgc3RyZXJyb3IgaWYgdGhleSBjYXJlIGFib3V0IHRocmVhZC1zYWZldHkuICAqLwotLSAgaWYgKCFtc2cgfHwgISptc2cpCi0tICAgIHsKLS0gICAgICBzdGF0aWMgY2hhciBjb25zdCBmbXRbXSA9ICJVbmtub3duIGVycm9yICVkIjsKLS0gICAgICB2ZXJpZnkgKHNpemVvZiBidWYgPj0gc2l6ZW9mIChmbXQpICsgSU5UX1NUUkxFTl9CT1VORCAobikpOwotLSAgICAgIHNwcmludGYgKGJ1ZiwgZm10LCBuKTsKLS0gICAgICBlcnJubyA9IEVJTlZBTDsKLS0gICAgICByZXR1cm4gYnVmOwotLSAgICB9Ci0rICAgIGlmIChyZXN1bHQgPT0gTlVMTCB8fCByZXN1bHRbMF0gPT0gJ1wwJykKLSsgICAgICB7Ci0rICAgICAgICBzdGF0aWMgY2hhciBjb25zdCBmbXRbXSA9ICJVbmtub3duIGVycm9yICglZCkiOwotKyAgICAgICAgc3RhdGljIGNoYXIgbXNnX2J1ZltzaXplb2YgZm10ICsgSU5UX1NUUkxFTl9CT1VORCAobildOwotKyAgICAgICAgc3ByaW50ZiAobXNnX2J1ZiwgZm10LCBuKTsKLSsgICAgICAgIHJldHVybiBtc2dfYnVmOwotKyAgICAgIH0KLSAKLS0gIC8qIEZpeCBTVEFDS0JVRl9MRU4gaWYgdGhpcyBldmVyIGFib3J0cy4gICovCi0tICBsZW4gPSBzdHJsZW4gKG1zZyk7Ci0tICBpZiAoc2l6ZW9mIGJ1ZiA8PSBsZW4pCi0tICAgIGFib3J0ICgpOwotLQotLSAgcmV0dXJuIG1lbWNweSAoYnVmLCBtc2csIGxlbiArIDEpOwotKyAgICByZXR1cm4gcmVzdWx0OwotKyAgfQotIH0KLSsKLSsjZW5kaWYKLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvc3RyZXJyb3Itb3ZlcnJpZGUuYyBsaWJpY29udi0xLjE0L3NyY2xpYi9zdHJlcnJvci1vdmVycmlkZS5jCi0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY2xpYi9zdHJlcnJvci1vdmVycmlkZS5jCTIwMTEtMDgtMDcgMDY6NDI6MDYuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNsaWIvc3RyZXJyb3Itb3ZlcnJpZGUuYwkxOTY5LTEyLTMxIDE2OjAwOjAwLjAwMDAwMDAwMCAtMDgwMAotQEAgLTEsMjc5ICswLDAgQEAKLS0vKiBzdHJlcnJvci1vdmVycmlkZS5jIC0tLSBQT1NJWCBjb21wYXRpYmxlIHN5c3RlbSBlcnJvciByb3V0aW5lCi0tCi0tICAgQ29weXJpZ2h0IChDKSAyMDEwLTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0tCi0tICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLS0gICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0tICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLS0KLS0gICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLS0gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS0gICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotLQotLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotLQotLS8qIFdyaXR0ZW4gYnkgQnJ1bm8gSGFpYmxlIDxicnVub0BjbGlzcC5vcmc+LCAyMDEwLiAgKi8KLS0KLS0jaW5jbHVkZSA8Y29uZmlnLmg+Ci0tCi0tI2luY2x1ZGUgInN0cmVycm9yLW92ZXJyaWRlLmgiCi0tCi0tI2luY2x1ZGUgPGVycm5vLmg+Ci0tCi0tI2lmIEdOVUxJQl9kZWZpbmVkX0VTT0NLIC8qIG5hdGl2ZSBXaW5kb3dzIHBsYXRmb3JtcyAqLwotLSMgaWYgSEFWRV9XSU5TT0NLMl9ICi0tIyAgaW5jbHVkZSA8d2luc29jazIuaD4KLS0jIGVuZGlmCi0tI2VuZGlmCi0tCi0tLyogSWYgRVJSTlVNIG1hcHMgdG8gYW4gZXJybm8gdmFsdWUgZGVmaW5lZCBieSBnbnVsaWIsIHJldHVybiBhIHN0cmluZwotLSAgIGRlc2NyaWJpbmcgdGhlIGVycm9yLiAgT3RoZXJ3aXNlIHJldHVybiBOVUxMLiAgKi8KLS1jb25zdCBjaGFyICoKLS1zdHJlcnJvcl9vdmVycmlkZSAoaW50IGVycm51bSkKLS17Ci0tICAvKiBUaGVzZSBlcnJvciBtZXNzYWdlcyBhcmUgdGFrZW4gZnJvbSBnbGliYy9zeXNkZXBzL2dudS9lcnJsaXN0LmMuICAqLwotLSAgc3dpdGNoIChlcnJudW0pCi0tICAgIHsKLS0jaWYgUkVQTEFDRV9TVFJFUlJPUl8wCi0tICAgIGNhc2UgMDoKLS0gICAgICByZXR1cm4gIlN1Y2Nlc3MiOwotLSNlbmRpZgotLQotLSNpZiBHTlVMSUJfZGVmaW5lZF9FVFhUQlNZCi0tICAgIGNhc2UgRVRYVEJTWToKLS0gICAgICByZXR1cm4gIlRleHQgZmlsZSBidXN5IjsKLS0jZW5kaWYKLS0KLS0jaWYgR05VTElCX2RlZmluZWRfRVNPQ0sgLyogbmF0aXZlIFdpbmRvd3MgcGxhdGZvcm1zICovCi0tICAgICAgLyogRVdPVUxEQkxPQ0sgaXMgdGhlIHNhbWUgYXMgRUFHQUlOLiAgKi8KLS0gICAgY2FzZSBFSU5QUk9HUkVTUzoKLS0gICAgICByZXR1cm4gIk9wZXJhdGlvbiBub3cgaW4gcHJvZ3Jlc3MiOwotLSAgICBjYXNlIEVBTFJFQURZOgotLSAgICAgIHJldHVybiAiT3BlcmF0aW9uIGFscmVhZHkgaW4gcHJvZ3Jlc3MiOwotLSAgICBjYXNlIEVOT1RTT0NLOgotLSAgICAgIHJldHVybiAiU29ja2V0IG9wZXJhdGlvbiBvbiBub24tc29ja2V0IjsKLS0gICAgY2FzZSBFREVTVEFERFJSRVE6Ci0tICAgICAgcmV0dXJuICJEZXN0aW5hdGlvbiBhZGRyZXNzIHJlcXVpcmVkIjsKLS0gICAgY2FzZSBFTVNHU0laRToKLS0gICAgICByZXR1cm4gIk1lc3NhZ2UgdG9vIGxvbmciOwotLSAgICBjYXNlIEVQUk9UT1RZUEU6Ci0tICAgICAgcmV0dXJuICJQcm90b2NvbCB3cm9uZyB0eXBlIGZvciBzb2NrZXQiOwotLSAgICBjYXNlIEVOT1BST1RPT1BUOgotLSAgICAgIHJldHVybiAiUHJvdG9jb2wgbm90IGF2YWlsYWJsZSI7Ci0tICAgIGNhc2UgRVBST1RPTk9TVVBQT1JUOgotLSAgICAgIHJldHVybiAiUHJvdG9jb2wgbm90IHN1cHBvcnRlZCI7Ci0tICAgIGNhc2UgRVNPQ0tUTk9TVVBQT1JUOgotLSAgICAgIHJldHVybiAiU29ja2V0IHR5cGUgbm90IHN1cHBvcnRlZCI7Ci0tICAgIGNhc2UgRU9QTk9UU1VQUDoKLS0gICAgICByZXR1cm4gIk9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkIjsKLS0gICAgY2FzZSBFUEZOT1NVUFBPUlQ6Ci0tICAgICAgcmV0dXJuICJQcm90b2NvbCBmYW1pbHkgbm90IHN1cHBvcnRlZCI7Ci0tICAgIGNhc2UgRUFGTk9TVVBQT1JUOgotLSAgICAgIHJldHVybiAiQWRkcmVzcyBmYW1pbHkgbm90IHN1cHBvcnRlZCBieSBwcm90b2NvbCI7Ci0tICAgIGNhc2UgRUFERFJJTlVTRToKLS0gICAgICByZXR1cm4gIkFkZHJlc3MgYWxyZWFkeSBpbiB1c2UiOwotLSAgICBjYXNlIEVBRERSTk9UQVZBSUw6Ci0tICAgICAgcmV0dXJuICJDYW5ub3QgYXNzaWduIHJlcXVlc3RlZCBhZGRyZXNzIjsKLS0gICAgY2FzZSBFTkVURE9XTjoKLS0gICAgICByZXR1cm4gIk5ldHdvcmsgaXMgZG93biI7Ci0tICAgIGNhc2UgRU5FVFVOUkVBQ0g6Ci0tICAgICAgcmV0dXJuICJOZXR3b3JrIGlzIHVucmVhY2hhYmxlIjsKLS0gICAgY2FzZSBFTkVUUkVTRVQ6Ci0tICAgICAgcmV0dXJuICJOZXR3b3JrIGRyb3BwZWQgY29ubmVjdGlvbiBvbiByZXNldCI7Ci0tICAgIGNhc2UgRUNPTk5BQk9SVEVEOgotLSAgICAgIHJldHVybiAiU29mdHdhcmUgY2F1c2VkIGNvbm5lY3Rpb24gYWJvcnQiOwotLSAgICBjYXNlIEVDT05OUkVTRVQ6Ci0tICAgICAgcmV0dXJuICJDb25uZWN0aW9uIHJlc2V0IGJ5IHBlZXIiOwotLSAgICBjYXNlIEVOT0JVRlM6Ci0tICAgICAgcmV0dXJuICJObyBidWZmZXIgc3BhY2UgYXZhaWxhYmxlIjsKLS0gICAgY2FzZSBFSVNDT05OOgotLSAgICAgIHJldHVybiAiVHJhbnNwb3J0IGVuZHBvaW50IGlzIGFscmVhZHkgY29ubmVjdGVkIjsKLS0gICAgY2FzZSBFTk9UQ09OTjoKLS0gICAgICByZXR1cm4gIlRyYW5zcG9ydCBlbmRwb2ludCBpcyBub3QgY29ubmVjdGVkIjsKLS0gICAgY2FzZSBFU0hVVERPV046Ci0tICAgICAgcmV0dXJuICJDYW5ub3Qgc2VuZCBhZnRlciB0cmFuc3BvcnQgZW5kcG9pbnQgc2h1dGRvd24iOwotLSAgICBjYXNlIEVUT09NQU5ZUkVGUzoKLS0gICAgICByZXR1cm4gIlRvbyBtYW55IHJlZmVyZW5jZXM6IGNhbm5vdCBzcGxpY2UiOwotLSAgICBjYXNlIEVUSU1FRE9VVDoKLS0gICAgICByZXR1cm4gIkNvbm5lY3Rpb24gdGltZWQgb3V0IjsKLS0gICAgY2FzZSBFQ09OTlJFRlVTRUQ6Ci0tICAgICAgcmV0dXJuICJDb25uZWN0aW9uIHJlZnVzZWQiOwotLSAgICBjYXNlIEVMT09QOgotLSAgICAgIHJldHVybiAiVG9vIG1hbnkgbGV2ZWxzIG9mIHN5bWJvbGljIGxpbmtzIjsKLS0gICAgY2FzZSBFSE9TVERPV046Ci0tICAgICAgcmV0dXJuICJIb3N0IGlzIGRvd24iOwotLSAgICBjYXNlIEVIT1NUVU5SRUFDSDoKLS0gICAgICByZXR1cm4gIk5vIHJvdXRlIHRvIGhvc3QiOwotLSAgICBjYXNlIEVQUk9DTElNOgotLSAgICAgIHJldHVybiAiVG9vIG1hbnkgcHJvY2Vzc2VzIjsKLS0gICAgY2FzZSBFVVNFUlM6Ci0tICAgICAgcmV0dXJuICJUb28gbWFueSB1c2VycyI7Ci0tICAgIGNhc2UgRURRVU9UOgotLSAgICAgIHJldHVybiAiRGlzayBxdW90YSBleGNlZWRlZCI7Ci0tICAgIGNhc2UgRVNUQUxFOgotLSAgICAgIHJldHVybiAiU3RhbGUgTkZTIGZpbGUgaGFuZGxlIjsKLS0gICAgY2FzZSBFUkVNT1RFOgotLSAgICAgIHJldHVybiAiT2JqZWN0IGlzIHJlbW90ZSI7Ci0tIyBpZiBIQVZFX1dJTlNPQ0syX0gKLS0gICAgICAvKiBXU0FfSU5WQUxJRF9IQU5ETEUgbWFwcyB0byBFQkFERiAqLwotLSAgICAgIC8qIFdTQV9OT1RfRU5PVUdIX01FTU9SWSBtYXBzIHRvIEVOT01FTSAqLwotLSAgICAgIC8qIFdTQV9JTlZBTElEX1BBUkFNRVRFUiBtYXBzIHRvIEVJTlZBTCAqLwotLSAgICBjYXNlIFdTQV9PUEVSQVRJT05fQUJPUlRFRDoKLS0gICAgICByZXR1cm4gIk92ZXJsYXBwZWQgb3BlcmF0aW9uIGFib3J0ZWQiOwotLSAgICBjYXNlIFdTQV9JT19JTkNPTVBMRVRFOgotLSAgICAgIHJldHVybiAiT3ZlcmxhcHBlZCBJL08gZXZlbnQgb2JqZWN0IG5vdCBpbiBzaWduYWxlZCBzdGF0ZSI7Ci0tICAgIGNhc2UgV1NBX0lPX1BFTkRJTkc6Ci0tICAgICAgcmV0dXJuICJPdmVybGFwcGVkIG9wZXJhdGlvbnMgd2lsbCBjb21wbGV0ZSBsYXRlciI7Ci0tICAgICAgLyogV1NBRUlOVFIgbWFwcyB0byBFSU5UUiAqLwotLSAgICAgIC8qIFdTQUVCQURGIG1hcHMgdG8gRUJBREYgKi8KLS0gICAgICAvKiBXU0FFQUNDRVMgbWFwcyB0byBFQUNDRVMgKi8KLS0gICAgICAvKiBXU0FFRkFVTFQgbWFwcyB0byBFRkFVTFQgKi8KLS0gICAgICAvKiBXU0FFSU5WQUwgbWFwcyB0byBFSU5WQUwgKi8KLS0gICAgICAvKiBXU0FFTUZJTEUgbWFwcyB0byBFTUZJTEUgKi8KLS0gICAgICAvKiBXU0FFV09VTERCTE9DSyBtYXBzIHRvIEVXT1VMREJMT0NLICovCi0tICAgICAgLyogV1NBRUlOUFJPR1JFU1MgaXMgRUlOUFJPR1JFU1MgKi8KLS0gICAgICAvKiBXU0FFQUxSRUFEWSBpcyBFQUxSRUFEWSAqLwotLSAgICAgIC8qIFdTQUVOT1RTT0NLIGlzIEVOT1RTT0NLICovCi0tICAgICAgLyogV1NBRURFU1RBRERSUkVRIGlzIEVERVNUQUREUlJFUSAqLwotLSAgICAgIC8qIFdTQUVNU0dTSVpFIGlzIEVNU0dTSVpFICovCi0tICAgICAgLyogV1NBRVBST1RPVFlQRSBpcyBFUFJPVE9UWVBFICovCi0tICAgICAgLyogV1NBRU5PUFJPVE9PUFQgaXMgRU5PUFJPVE9PUFQgKi8KLS0gICAgICAvKiBXU0FFUFJPVE9OT1NVUFBPUlQgaXMgRVBST1RPTk9TVVBQT1JUICovCi0tICAgICAgLyogV1NBRVNPQ0tUTk9TVVBQT1JUIGlzIEVTT0NLVE5PU1VQUE9SVCAqLwotLSAgICAgIC8qIFdTQUVPUE5PVFNVUFAgaXMgRU9QTk9UU1VQUCAqLwotLSAgICAgIC8qIFdTQUVQRk5PU1VQUE9SVCBpcyBFUEZOT1NVUFBPUlQgKi8KLS0gICAgICAvKiBXU0FFQUZOT1NVUFBPUlQgaXMgRUFGTk9TVVBQT1JUICovCi0tICAgICAgLyogV1NBRUFERFJJTlVTRSBpcyBFQUREUklOVVNFICovCi0tICAgICAgLyogV1NBRUFERFJOT1RBVkFJTCBpcyBFQUREUk5PVEFWQUlMICovCi0tICAgICAgLyogV1NBRU5FVERPV04gaXMgRU5FVERPV04gKi8KLS0gICAgICAvKiBXU0FFTkVUVU5SRUFDSCBpcyBFTkVUVU5SRUFDSCAqLwotLSAgICAgIC8qIFdTQUVORVRSRVNFVCBpcyBFTkVUUkVTRVQgKi8KLS0gICAgICAvKiBXU0FFQ09OTkFCT1JURUQgaXMgRUNPTk5BQk9SVEVEICovCi0tICAgICAgLyogV1NBRUNPTk5SRVNFVCBpcyBFQ09OTlJFU0VUICovCi0tICAgICAgLyogV1NBRU5PQlVGUyBpcyBFTk9CVUZTICovCi0tICAgICAgLyogV1NBRUlTQ09OTiBpcyBFSVNDT05OICovCi0tICAgICAgLyogV1NBRU5PVENPTk4gaXMgRU5PVENPTk4gKi8KLS0gICAgICAvKiBXU0FFU0hVVERPV04gaXMgRVNIVVRET1dOICovCi0tICAgICAgLyogV1NBRVRPT01BTllSRUZTIGlzIEVUT09NQU5ZUkVGUyAqLwotLSAgICAgIC8qIFdTQUVUSU1FRE9VVCBpcyBFVElNRURPVVQgKi8KLS0gICAgICAvKiBXU0FFQ09OTlJFRlVTRUQgaXMgRUNPTk5SRUZVU0VEICovCi0tICAgICAgLyogV1NBRUxPT1AgaXMgRUxPT1AgKi8KLS0gICAgICAvKiBXU0FFTkFNRVRPT0xPTkcgbWFwcyB0byBFTkFNRVRPT0xPTkcgKi8KLS0gICAgICAvKiBXU0FFSE9TVERPV04gaXMgRUhPU1RET1dOICovCi0tICAgICAgLyogV1NBRUhPU1RVTlJFQUNIIGlzIEVIT1NUVU5SRUFDSCAqLwotLSAgICAgIC8qIFdTQUVOT1RFTVBUWSBtYXBzIHRvIEVOT1RFTVBUWSAqLwotLSAgICAgIC8qIFdTQUVQUk9DTElNIGlzIEVQUk9DTElNICovCi0tICAgICAgLyogV1NBRVVTRVJTIGlzIEVVU0VSUyAqLwotLSAgICAgIC8qIFdTQUVEUVVPVCBpcyBFRFFVT1QgKi8KLS0gICAgICAvKiBXU0FFU1RBTEUgaXMgRVNUQUxFICovCi0tICAgICAgLyogV1NBRVJFTU9URSBpcyBFUkVNT1RFICovCi0tICAgIGNhc2UgV1NBU1lTTk9UUkVBRFk6Ci0tICAgICAgcmV0dXJuICJOZXR3b3JrIHN1YnN5c3RlbSBpcyB1bmF2YWlsYWJsZSI7Ci0tICAgIGNhc2UgV1NBVkVSTk9UU1VQUE9SVEVEOgotLSAgICAgIHJldHVybiAiV2luc29jay5kbGwgdmVyc2lvbiBvdXQgb2YgcmFuZ2UiOwotLSAgICBjYXNlIFdTQU5PVElOSVRJQUxJU0VEOgotLSAgICAgIHJldHVybiAiU3VjY2Vzc2Z1bCBXU0FTdGFydHVwIG5vdCB5ZXQgcGVyZm9ybWVkIjsKLS0gICAgY2FzZSBXU0FFRElTQ09OOgotLSAgICAgIHJldHVybiAiR3JhY2VmdWwgc2h1dGRvd24gaW4gcHJvZ3Jlc3MiOwotLSAgICBjYXNlIFdTQUVOT01PUkU6IGNhc2UgV1NBX0VfTk9fTU9SRToKLS0gICAgICByZXR1cm4gIk5vIG1vcmUgcmVzdWx0cyI7Ci0tICAgIGNhc2UgV1NBRUNBTkNFTExFRDogY2FzZSBXU0FfRV9DQU5DRUxMRUQ6Ci0tICAgICAgcmV0dXJuICJDYWxsIHdhcyBjYW5jZWxlZCI7Ci0tICAgIGNhc2UgV1NBRUlOVkFMSURQUk9DVEFCTEU6Ci0tICAgICAgcmV0dXJuICJQcm9jZWR1cmUgY2FsbCB0YWJsZSBpcyBpbnZhbGlkIjsKLS0gICAgY2FzZSBXU0FFSU5WQUxJRFBST1ZJREVSOgotLSAgICAgIHJldHVybiAiU2VydmljZSBwcm92aWRlciBpcyBpbnZhbGlkIjsKLS0gICAgY2FzZSBXU0FFUFJPVklERVJGQUlMRURJTklUOgotLSAgICAgIHJldHVybiAiU2VydmljZSBwcm92aWRlciBmYWlsZWQgdG8gaW5pdGlhbGl6ZSI7Ci0tICAgIGNhc2UgV1NBU1lTQ0FMTEZBSUxVUkU6Ci0tICAgICAgcmV0dXJuICJTeXN0ZW0gY2FsbCBmYWlsdXJlIjsKLS0gICAgY2FzZSBXU0FTRVJWSUNFX05PVF9GT1VORDoKLS0gICAgICByZXR1cm4gIlNlcnZpY2Ugbm90IGZvdW5kIjsKLS0gICAgY2FzZSBXU0FUWVBFX05PVF9GT1VORDoKLS0gICAgICByZXR1cm4gIkNsYXNzIHR5cGUgbm90IGZvdW5kIjsKLS0gICAgY2FzZSBXU0FFUkVGVVNFRDoKLS0gICAgICByZXR1cm4gIkRhdGFiYXNlIHF1ZXJ5IHdhcyByZWZ1c2VkIjsKLS0gICAgY2FzZSBXU0FIT1NUX05PVF9GT1VORDoKLS0gICAgICByZXR1cm4gIkhvc3Qgbm90IGZvdW5kIjsKLS0gICAgY2FzZSBXU0FUUllfQUdBSU46Ci0tICAgICAgcmV0dXJuICJOb25hdXRob3JpdGF0aXZlIGhvc3Qgbm90IGZvdW5kIjsKLS0gICAgY2FzZSBXU0FOT19SRUNPVkVSWToKLS0gICAgICByZXR1cm4gIk5vbnJlY292ZXJhYmxlIGVycm9yIjsKLS0gICAgY2FzZSBXU0FOT19EQVRBOgotLSAgICAgIHJldHVybiAiVmFsaWQgbmFtZSwgbm8gZGF0YSByZWNvcmQgb2YgcmVxdWVzdGVkIHR5cGUiOwotLSAgICAgIC8qIFdTQV9RT1NfKiBvbWl0dGVkICovCi0tIyBlbmRpZgotLSNlbmRpZgotLQotLSNpZiBHTlVMSUJfZGVmaW5lZF9FTk9NU0cKLS0gICAgY2FzZSBFTk9NU0c6Ci0tICAgICAgcmV0dXJuICJObyBtZXNzYWdlIG9mIGRlc2lyZWQgdHlwZSI7Ci0tI2VuZGlmCi0tCi0tI2lmIEdOVUxJQl9kZWZpbmVkX0VJRFJNCi0tICAgIGNhc2UgRUlEUk06Ci0tICAgICAgcmV0dXJuICJJZGVudGlmaWVyIHJlbW92ZWQiOwotLSNlbmRpZgotLQotLSNpZiBHTlVMSUJfZGVmaW5lZF9FTk9MSU5LCi0tICAgIGNhc2UgRU5PTElOSzoKLS0gICAgICByZXR1cm4gIkxpbmsgaGFzIGJlZW4gc2V2ZXJlZCI7Ci0tI2VuZGlmCi0tCi0tI2lmIEdOVUxJQl9kZWZpbmVkX0VQUk9UTwotLSAgICBjYXNlIEVQUk9UTzoKLS0gICAgICByZXR1cm4gIlByb3RvY29sIGVycm9yIjsKLS0jZW5kaWYKLS0KLS0jaWYgR05VTElCX2RlZmluZWRfRU1VTFRJSE9QCi0tICAgIGNhc2UgRU1VTFRJSE9QOgotLSAgICAgIHJldHVybiAiTXVsdGlob3AgYXR0ZW1wdGVkIjsKLS0jZW5kaWYKLS0KLS0jaWYgR05VTElCX2RlZmluZWRfRUJBRE1TRwotLSAgICBjYXNlIEVCQURNU0c6Ci0tICAgICAgcmV0dXJuICJCYWQgbWVzc2FnZSI7Ci0tI2VuZGlmCi0tCi0tI2lmIEdOVUxJQl9kZWZpbmVkX0VPVkVSRkxPVwotLSAgICBjYXNlIEVPVkVSRkxPVzoKLS0gICAgICByZXR1cm4gIlZhbHVlIHRvbyBsYXJnZSBmb3IgZGVmaW5lZCBkYXRhIHR5cGUiOwotLSNlbmRpZgotLQotLSNpZiBHTlVMSUJfZGVmaW5lZF9FTk9UU1VQCi0tICAgIGNhc2UgRU5PVFNVUDoKLS0gICAgICByZXR1cm4gIk5vdCBzdXBwb3J0ZWQiOwotLSNlbmRpZgotLQotLSNpZiBHTlVMSUJfZGVmaW5lZF9FTkVUUkVTRVQKLS0gICAgY2FzZSBFTkVUUkVTRVQ6Ci0tICAgICAgcmV0dXJuICJOZXR3b3JrIGRyb3BwZWQgY29ubmVjdGlvbiBvbiByZXNldCI7Ci0tI2VuZGlmCi0tCi0tI2lmIEdOVUxJQl9kZWZpbmVkX0VDT05OQUJPUlRFRAotLSAgICBjYXNlIEVDT05OQUJPUlRFRDoKLS0gICAgICByZXR1cm4gIlNvZnR3YXJlIGNhdXNlZCBjb25uZWN0aW9uIGFib3J0IjsKLS0jZW5kaWYKLS0KLS0jaWYgR05VTElCX2RlZmluZWRfRVNUQUxFCi0tICAgIGNhc2UgRVNUQUxFOgotLSAgICAgIHJldHVybiAiU3RhbGUgTkZTIGZpbGUgaGFuZGxlIjsKLS0jZW5kaWYKLS0KLS0jaWYgR05VTElCX2RlZmluZWRfRURRVU9UCi0tICAgIGNhc2UgRURRVU9UOgotLSAgICAgIHJldHVybiAiRGlzayBxdW90YSBleGNlZWRlZCI7Ci0tI2VuZGlmCi0tCi0tI2lmIEdOVUxJQl9kZWZpbmVkX0VDQU5DRUxFRAotLSAgICBjYXNlIEVDQU5DRUxFRDoKLS0gICAgICByZXR1cm4gIk9wZXJhdGlvbiBjYW5jZWxlZCI7Ci0tI2VuZGlmCi0tCi0tICAgIGRlZmF1bHQ6Ci0tICAgICAgcmV0dXJuIE5VTEw7Ci0tICAgIH0KLS19Ci1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbGliL3N0cmVycm9yLW92ZXJyaWRlLmggbGliaWNvbnYtMS4xNC9zcmNsaWIvc3RyZXJyb3Itb3ZlcnJpZGUuaAotLS0tIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvc3RyZXJyb3Itb3ZlcnJpZGUuaAkyMDExLTA4LTA3IDA2OjQyOjA2LjAwMDAwMDAwMCAtMDcwMAotKysrIGxpYmljb252LTEuMTQvc3JjbGliL3N0cmVycm9yLW92ZXJyaWRlLmgJMTk2OS0xMi0zMSAxNjowMDowMC4wMDAwMDAwMDAgLTA4MDAKLUBAIC0xLDUyICswLDAgQEAKLS0vKiBzdHJlcnJvci1vdmVycmlkZS5oIC0tLSBQT1NJWCBjb21wYXRpYmxlIHN5c3RlbSBlcnJvciByb3V0aW5lCi0tCi0tICAgQ29weXJpZ2h0IChDKSAyMDEwLTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0tCi0tICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLS0gICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0tICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLS0KLS0gICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLS0gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS0gICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotLQotLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotLQotLSNpZm5kZWYgX0dMX1NUUkVSUk9SX09WRVJSSURFX0gKLS0jIGRlZmluZSBfR0xfU1RSRVJST1JfT1ZFUlJJREVfSAotLQotLSMgaW5jbHVkZSA8ZXJybm8uaD4KLS0jIGluY2x1ZGUgPHN0ZGRlZi5oPgotLQotLS8qIFJlYXNvbmFibGUgYnVmZmVyIHNpemUgdGhhdCBzaG91bGQgbmV2ZXIgdHJpZ2dlciBFUkFOR0U7IGlmIHRoaXMKLS0gICBwcm92ZXMgdG9vIHNtYWxsLCB3ZSBpbnRlbnRpb25hbGx5IGFib3J0KCksIHRvIHJlbWluZCB1cyB0byBmaXgKLS0gICB0aGlzIHZhbHVlLiAgKi8KLS0jIGRlZmluZSBTVEFDS0JVRl9MRU4gMjU2Ci0tCi0tLyogSWYgRVJSTlVNIG1hcHMgdG8gYW4gZXJybm8gdmFsdWUgZGVmaW5lZCBieSBnbnVsaWIsIHJldHVybiBhIHN0cmluZwotLSAgIGRlc2NyaWJpbmcgdGhlIGVycm9yLiAgT3RoZXJ3aXNlIHJldHVybiBOVUxMLiAgKi8KLS0jIGlmIFJFUExBQ0VfU1RSRVJST1JfMCBcCi0tICAgICB8fCBHTlVMSUJfZGVmaW5lZF9FVFhUQlNZIFwKLS0gICAgIHx8IEdOVUxJQl9kZWZpbmVkX0VTT0NLIFwKLS0gICAgIHx8IEdOVUxJQl9kZWZpbmVkX0VOT01TRyBcCi0tICAgICB8fCBHTlVMSUJfZGVmaW5lZF9FSURSTSBcCi0tICAgICB8fCBHTlVMSUJfZGVmaW5lZF9FTk9MSU5LIFwKLS0gICAgIHx8IEdOVUxJQl9kZWZpbmVkX0VQUk9UTyBcCi0tICAgICB8fCBHTlVMSUJfZGVmaW5lZF9FTVVMVElIT1AgXAotLSAgICAgfHwgR05VTElCX2RlZmluZWRfRUJBRE1TRyBcCi0tICAgICB8fCBHTlVMSUJfZGVmaW5lZF9FT1ZFUkZMT1cgXAotLSAgICAgfHwgR05VTElCX2RlZmluZWRfRU5PVFNVUCBcCi0tICAgICB8fCBHTlVMSUJfZGVmaW5lZF9FTkVUUkVTRVQgXAotLSAgICAgfHwgR05VTElCX2RlZmluZWRfRUNPTk5BQk9SVEVEIFwKLS0gICAgIHx8IEdOVUxJQl9kZWZpbmVkX0VTVEFMRSBcCi0tICAgICB8fCBHTlVMSUJfZGVmaW5lZF9FRFFVT1QgXAotLSAgICAgfHwgR05VTElCX2RlZmluZWRfRUNBTkNFTEVECi0tZXh0ZXJuIGNvbnN0IGNoYXIgKnN0cmVycm9yX292ZXJyaWRlIChpbnQgZXJybnVtKTsKLS0jIGVsc2UKLS0jICBkZWZpbmUgc3RyZXJyb3Jfb3ZlcnJpZGUoaWdub3JlZCkgTlVMTAotLSMgZW5kaWYKLS0KLS0jZW5kaWYgLyogX0dMX1NUUkVSUk9SX09WRVJSSURFX0ggKi8KLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvc3RyaW5nLmluLmggbGliaWNvbnYtMS4xNC9zcmNsaWIvc3RyaW5nLmluLmgKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbGliL3N0cmluZy5pbi5oCTIwMTEtMDgtMDcgMDY6NDI6MDYuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNsaWIvc3RyaW5nLmluLmgJMjAxMi0wMS0wOCAwMjowNzo0MC40MTg0ODQ0NjEgLTA4MDAKLUBAIC0xNiw3ICsxNiw3IEBACi0gICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSAgICBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4gICovCi0gCi0tI2lmbmRlZiBfQEdVQVJEX1BSRUZJWEBfU1RSSU5HX0gKLSsjaWZuZGVmIF9HTF9TVFJJTkdfSAotIAotICNpZiBfX0dOVUNfXyA+PSAzCi0gQFBSQUdNQV9TWVNURU1fSEVBREVSQAotQEAgLTI2LDggKzI2LDggQEAKLSAvKiBUaGUgaW5jbHVkZV9uZXh0IHJlcXVpcmVzIGEgc3BsaXQgZG91YmxlLWluY2x1c2lvbiBndWFyZC4gICovCi0gI0BJTkNMVURFX05FWFRAIEBORVhUX1NUUklOR19IQAotIAotLSNpZm5kZWYgX0BHVUFSRF9QUkVGSVhAX1NUUklOR19ICi0tI2RlZmluZSBfQEdVQVJEX1BSRUZJWEBfU1RSSU5HX0gKLSsjaWZuZGVmIF9HTF9TVFJJTkdfSAotKyNkZWZpbmUgX0dMX1NUUklOR19ICi0gCi0gLyogTmV0QlNEIDUuMCBtaXMtZGVmaW5lcyBOVUxMLiAgKi8KLSAjaW5jbHVkZSA8c3RkZGVmLmg+Ci1AQCAtNTksMzYgKzU5LDYgQEAKLSAvKiBUaGUgZGVmaW5pdGlvbiBvZiBfR0xfV0FSTl9PTl9VU0UgaXMgY29waWVkIGhlcmUuICAqLwotIAotIAotLS8qIEZpbmQgdGhlIGluZGV4IG9mIHRoZSBsZWFzdC1zaWduaWZpY2FudCBzZXQgYml0LiAgKi8KLS0jaWYgQEdOVUxJQl9GRlNMQAotLSMgaWYgIUBIQVZFX0ZGU0xACi0tX0dMX0ZVTkNERUNMX1NZUyAoZmZzbCwgaW50LCAobG9uZyBpbnQgaSkpOwotLSMgZW5kaWYKLS1fR0xfQ1hYQUxJQVNfU1lTIChmZnNsLCBpbnQsIChsb25nIGludCBpKSk7Ci0tX0dMX0NYWEFMSUFTV0FSTiAoZmZzbCk7Ci0tI2VsaWYgZGVmaW5lZCBHTlVMSUJfUE9TSVhDSEVDSwotLSMgdW5kZWYgZmZzbAotLSMgaWYgSEFWRV9SQVdfREVDTF9GRlNMCi0tX0dMX1dBUk5fT05fVVNFIChmZnNsLCAiZmZzbCBpcyBub3QgcG9ydGFibGUgLSB1c2UgdGhlIGZmc2wgbW9kdWxlIik7Ci0tIyBlbmRpZgotLSNlbmRpZgotLQotLQotLS8qIEZpbmQgdGhlIGluZGV4IG9mIHRoZSBsZWFzdC1zaWduaWZpY2FudCBzZXQgYml0LiAgKi8KLS0jaWYgQEdOVUxJQl9GRlNMTEAKLS0jIGlmICFASEFWRV9GRlNMTEAKLS1fR0xfRlVOQ0RFQ0xfU1lTIChmZnNsbCwgaW50LCAobG9uZyBsb25nIGludCBpKSk7Ci0tIyBlbmRpZgotLV9HTF9DWFhBTElBU19TWVMgKGZmc2xsLCBpbnQsIChsb25nIGxvbmcgaW50IGkpKTsKLS1fR0xfQ1hYQUxJQVNXQVJOIChmZnNsbCk7Ci0tI2VsaWYgZGVmaW5lZCBHTlVMSUJfUE9TSVhDSEVDSwotLSMgdW5kZWYgZmZzbGwKLS0jIGlmIEhBVkVfUkFXX0RFQ0xfRkZTTEwKLS1fR0xfV0FSTl9PTl9VU0UgKGZmc2xsLCAiZmZzbGwgaXMgbm90IHBvcnRhYmxlIC0gdXNlIHRoZSBmZnNsbCBtb2R1bGUiKTsKLS0jIGVuZGlmCi0tI2VuZGlmCi0tCi0tCi0gLyogUmV0dXJuIHRoZSBmaXJzdCBpbnN0YW5jZSBvZiBDIHdpdGhpbiBOIGJ5dGVzIG9mIFMsIG9yIE5VTEwuICAqLwotICNpZiBAR05VTElCX01FTUNIUkAKLSAjIGlmIEBSRVBMQUNFX01FTUNIUkAKLUBAIC0xMDA3LDUgKzk3Nyw1IEBAIF9HTF9XQVJOX09OX1VTRSAoc3RydmVyc2NtcCwgInN0cnZlcnNjbXAKLSAjZW5kaWYKLSAKLSAKLS0jZW5kaWYgLyogX0BHVUFSRF9QUkVGSVhAX1NUUklOR19IICovCi0tI2VuZGlmIC8qIF9AR1VBUkRfUFJFRklYQF9TVFJJTkdfSCAqLwotKyNlbmRpZiAvKiBfR0xfU1RSSU5HX0ggKi8KLSsjZW5kaWYgLyogX0dMX1NUUklOR19IICovCi1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbGliL3N5c19zdGF0LmluLmggbGliaWNvbnYtMS4xNC9zcmNsaWIvc3lzX3N0YXQuaW4uaAotLS0tIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvc3lzX3N0YXQuaW4uaAkyMDExLTA4LTA3IDA2OjQyOjA2LjAwMDAwMDAwMCAtMDcwMAotKysrIGxpYmljb252LTEuMTQvc3JjbGliL3N5c19zdGF0LmluLmgJMjAxMi0wMS0wOCAwMjowNzo0MC40MzA0ODQ0NjEgLTA4MDAKLUBAIC0zNCw3ICszNCw3IEBACi0gI2Vsc2UKLSAvKiBOb3JtYWwgaW52b2NhdGlvbiBjb252ZW50aW9uLiAgKi8KLSAKLS0jaWZuZGVmIF9AR1VBUkRfUFJFRklYQF9TWVNfU1RBVF9ICi0rI2lmbmRlZiBfR0xfU1lTX1NUQVRfSAotIAotIC8qIEdldCBubGlua190LiAgKi8KLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci1AQCAtNDUsOCArNDUsOCBAQAotIC8qIFRoZSBpbmNsdWRlX25leHQgcmVxdWlyZXMgYSBzcGxpdCBkb3VibGUtaW5jbHVzaW9uIGd1YXJkLiAgKi8KLSAjQElOQ0xVREVfTkVYVEAgQE5FWFRfU1lTX1NUQVRfSEAKLSAKLS0jaWZuZGVmIF9AR1VBUkRfUFJFRklYQF9TWVNfU1RBVF9ICi0tI2RlZmluZSBfQEdVQVJEX1BSRUZJWEBfU1lTX1NUQVRfSAotKyNpZm5kZWYgX0dMX1NZU19TVEFUX0gKLSsjZGVmaW5lIF9HTF9TWVNfU1RBVF9ICi0gCi0gLyogVGhlIGRlZmluaXRpb25zIG9mIF9HTF9GVU5DREVDTF9SUEwgZXRjLiBhcmUgY29waWVkIGhlcmUuICAqLwotIAotQEAgLTY1Myw2ICs2NTMsNiBAQCBfR0xfV0FSTl9PTl9VU0UgKHV0aW1lbnNhdCwgInV0aW1lbnNhdCBpCi0gI2VuZGlmCi0gCi0gCi0tI2VuZGlmIC8qIF9AR1VBUkRfUFJFRklYQF9TWVNfU1RBVF9IICovCi0tI2VuZGlmIC8qIF9AR1VBUkRfUFJFRklYQF9TWVNfU1RBVF9IICovCi0rI2VuZGlmIC8qIF9HTF9TWVNfU1RBVF9IICovCi0rI2VuZGlmIC8qIF9HTF9TWVNfU1RBVF9IICovCi0gI2VuZGlmCi1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbGliL3RpbWUuaW4uaCBsaWJpY29udi0xLjE0L3NyY2xpYi90aW1lLmluLmgKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbGliL3RpbWUuaW4uaAkyMDExLTA4LTA3IDA2OjQyOjA2LjAwMDAwMDAwMCAtMDcwMAotKysrIGxpYmljb252LTEuMTQvc3JjbGliL3RpbWUuaW4uaAkyMDEyLTAxLTA4IDAyOjA3OjQwLjQzODQ4NDQ2MiAtMDgwMAotQEAgLTI4LDEzICsyOCwxMyBAQAotICAgIHdpdGhvdXQgYWRkaW5nIG91ciBvd24gZGVjbGFyYXRpb25zLiAgKi8KLSAjaWYgKGRlZmluZWQgX19uZWVkX3RpbWVfdCB8fCBkZWZpbmVkIF9fbmVlZF9jbG9ja190IFwKLSAgICAgIHx8IGRlZmluZWQgX19uZWVkX3RpbWVzcGVjIFwKLS0gICAgIHx8IGRlZmluZWQgX0BHVUFSRF9QUkVGSVhAX1RJTUVfSCkKLSsgICAgIHx8IGRlZmluZWQgX0dMX1RJTUVfSCkKLSAKLSAjIEBJTkNMVURFX05FWFRAIEBORVhUX1RJTUVfSEAKLSAKLSAjZWxzZQotIAotLSMgZGVmaW5lIF9AR1VBUkRfUFJFRklYQF9USU1FX0gKLSsjIGRlZmluZSBfR0xfVElNRV9ICi0gCi0gIyBASU5DTFVERV9ORVhUQCBATkVYVF9USU1FX0hACi0gCi1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbGliL3VuaXN0ZC5pbi5oIGxpYmljb252LTEuMTQvc3JjbGliL3VuaXN0ZC5pbi5oCi0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY2xpYi91bmlzdGQuaW4uaAkyMDExLTA4LTA3IDA2OjQyOjA2LjAwMDAwMDAwMCAtMDcwMAotKysrIGxpYmljb252LTEuMTQvc3JjbGliL3VuaXN0ZC5pbi5oCTIwMTItMDEtMDggMDI6MDc6NDAuNDUwNDg0NDYyIC0wODAwCi1AQCAtMzYsNyArMzYsNyBAQAotICMgZGVmaW5lIF9HTF9XSU5TT0NLMl9IX1dJVE5FU1MKLSAKLSAvKiBOb3JtYWwgaW52b2NhdGlvbi4gICovCi0tI2VsaWYgIWRlZmluZWQgX0BHVUFSRF9QUkVGSVhAX1VOSVNURF9ICi0rI2VsaWYgIWRlZmluZWQgX0dMX1VOSVNURF9ICi0gCi0gLyogVGhlIGluY2x1ZGVfbmV4dCByZXF1aXJlcyBhIHNwbGl0IGRvdWJsZS1pbmNsdXNpb24gZ3VhcmQuICAqLwotICNpZiBASEFWRV9VTklTVERfSEAKLUBAIC01MSw4ICs1MSw4IEBACi0gIyB1bmRlZiBfR0xfSU5DTFVESU5HX1dJTlNPQ0syX0gKLSAjZW5kaWYKLSAKLS0jaWYgIWRlZmluZWQgX0BHVUFSRF9QUkVGSVhAX1VOSVNURF9IICYmICFkZWZpbmVkIF9HTF9JTkNMVURJTkdfV0lOU09DSzJfSAotLSNkZWZpbmUgX0BHVUFSRF9QUkVGSVhAX1VOSVNURF9ICi0rI2lmICFkZWZpbmVkIF9HTF9VTklTVERfSCAmJiAhZGVmaW5lZCBfR0xfSU5DTFVESU5HX1dJTlNPQ0syX0gKLSsjZGVmaW5lIF9HTF9VTklTVERfSAotIAotIC8qIE5ldEJTRCA1LjAgbWlzLWRlZmluZXMgTlVMTC4gIEFsc28gZ2V0IHNpemVfdC4gICovCi0gI2luY2x1ZGUgPHN0ZGRlZi5oPgotQEAgLTExNyw3NyArMTE3LDc4IEBACi0gLyogVGhlIGRlZmluaXRpb24gb2YgX0dMX1dBUk5fT05fVVNFIGlzIGNvcGllZCBoZXJlLiAgKi8KLSAKLSAKLS0vKiBIaWRlIHNvbWUgZnVuY3Rpb24gZGVjbGFyYXRpb25zIGZyb20gPHdpbnNvY2syLmg+LiAgKi8KLS0KLS0jaWYgQEdOVUxJQl9HRVRIT1NUTkFNRUAgJiYgQFVOSVNURF9IX0hBVkVfV0lOU09DSzJfSEAKLS0jIGlmICFkZWZpbmVkIF9AR1VBUkRfUFJFRklYQF9TWVNfU09DS0VUX0gKLS0jICBpZiAhKGRlZmluZWQgX19jcGx1c3BsdXMgJiYgZGVmaW5lZCBHTlVMSUJfTkFNRVNQQUNFKQotLSMgICB1bmRlZiBzb2NrZXQKLS0jICAgZGVmaW5lIHNvY2tldCAgICAgICAgICAgICAgc29ja2V0X3VzZWRfd2l0aG91dF9pbmNsdWRpbmdfc3lzX3NvY2tldF9oCi0tIyAgIHVuZGVmIGNvbm5lY3QKLS0jICAgZGVmaW5lIGNvbm5lY3QgICAgICAgICAgICAgY29ubmVjdF91c2VkX3dpdGhvdXRfaW5jbHVkaW5nX3N5c19zb2NrZXRfaAotLSMgICB1bmRlZiBhY2NlcHQKLS0jICAgZGVmaW5lIGFjY2VwdCAgICAgICAgICAgICAgYWNjZXB0X3VzZWRfd2l0aG91dF9pbmNsdWRpbmdfc3lzX3NvY2tldF9oCi0tIyAgIHVuZGVmIGJpbmQKLS0jICAgZGVmaW5lIGJpbmQgICAgICAgICAgICAgICAgYmluZF91c2VkX3dpdGhvdXRfaW5jbHVkaW5nX3N5c19zb2NrZXRfaAotLSMgICB1bmRlZiBnZXRwZWVybmFtZQotLSMgICBkZWZpbmUgZ2V0cGVlcm5hbWUgICAgICAgICBnZXRwZWVybmFtZV91c2VkX3dpdGhvdXRfaW5jbHVkaW5nX3N5c19zb2NrZXRfaAotLSMgICB1bmRlZiBnZXRzb2NrbmFtZQotLSMgICBkZWZpbmUgZ2V0c29ja25hbWUgICAgICAgICBnZXRzb2NrbmFtZV91c2VkX3dpdGhvdXRfaW5jbHVkaW5nX3N5c19zb2NrZXRfaAotLSMgICB1bmRlZiBnZXRzb2Nrb3B0Ci0tIyAgIGRlZmluZSBnZXRzb2Nrb3B0ICAgICAgICAgIGdldHNvY2tvcHRfdXNlZF93aXRob3V0X2luY2x1ZGluZ19zeXNfc29ja2V0X2gKLS0jICAgdW5kZWYgbGlzdGVuCi0tIyAgIGRlZmluZSBsaXN0ZW4gICAgICAgICAgICAgIGxpc3Rlbl91c2VkX3dpdGhvdXRfaW5jbHVkaW5nX3N5c19zb2NrZXRfaAotLSMgICB1bmRlZiByZWN2Ci0tIyAgIGRlZmluZSByZWN2ICAgICAgICAgICAgICAgIHJlY3ZfdXNlZF93aXRob3V0X2luY2x1ZGluZ19zeXNfc29ja2V0X2gKLS0jICAgdW5kZWYgc2VuZAotLSMgICBkZWZpbmUgc2VuZCAgICAgICAgICAgICAgICBzZW5kX3VzZWRfd2l0aG91dF9pbmNsdWRpbmdfc3lzX3NvY2tldF9oCi0tIyAgIHVuZGVmIHJlY3Zmcm9tCi0tIyAgIGRlZmluZSByZWN2ZnJvbSAgICAgICAgICAgIHJlY3Zmcm9tX3VzZWRfd2l0aG91dF9pbmNsdWRpbmdfc3lzX3NvY2tldF9oCi0tIyAgIHVuZGVmIHNlbmR0bwotLSMgICBkZWZpbmUgc2VuZHRvICAgICAgICAgICAgICBzZW5kdG9fdXNlZF93aXRob3V0X2luY2x1ZGluZ19zeXNfc29ja2V0X2gKLS0jICAgdW5kZWYgc2V0c29ja29wdAotLSMgICBkZWZpbmUgc2V0c29ja29wdCAgICAgICAgICBzZXRzb2Nrb3B0X3VzZWRfd2l0aG91dF9pbmNsdWRpbmdfc3lzX3NvY2tldF9oCi0tIyAgIHVuZGVmIHNodXRkb3duCi0tIyAgIGRlZmluZSBzaHV0ZG93biAgICAgICAgICAgIHNodXRkb3duX3VzZWRfd2l0aG91dF9pbmNsdWRpbmdfc3lzX3NvY2tldF9oCi0tIyAgZWxzZQotLSAgICBfR0xfV0FSTl9PTl9VU0UgKHNvY2tldCwKLS0gICAgICAgICAgICAgICAgICAgICAic29ja2V0KCkgdXNlZCB3aXRob3V0IGluY2x1ZGluZyA8c3lzL3NvY2tldC5oPiIpOwotLSAgICBfR0xfV0FSTl9PTl9VU0UgKGNvbm5lY3QsCi0tICAgICAgICAgICAgICAgICAgICAgImNvbm5lY3QoKSB1c2VkIHdpdGhvdXQgaW5jbHVkaW5nIDxzeXMvc29ja2V0Lmg+Iik7Ci0tICAgIF9HTF9XQVJOX09OX1VTRSAoYWNjZXB0LAotLSAgICAgICAgICAgICAgICAgICAgICJhY2NlcHQoKSB1c2VkIHdpdGhvdXQgaW5jbHVkaW5nIDxzeXMvc29ja2V0Lmg+Iik7Ci0tICAgIF9HTF9XQVJOX09OX1VTRSAoYmluZCwKLS0gICAgICAgICAgICAgICAgICAgICAiYmluZCgpIHVzZWQgd2l0aG91dCBpbmNsdWRpbmcgPHN5cy9zb2NrZXQuaD4iKTsKLS0gICAgX0dMX1dBUk5fT05fVVNFIChnZXRwZWVybmFtZSwKLS0gICAgICAgICAgICAgICAgICAgICAiZ2V0cGVlcm5hbWUoKSB1c2VkIHdpdGhvdXQgaW5jbHVkaW5nIDxzeXMvc29ja2V0Lmg+Iik7Ci0tICAgIF9HTF9XQVJOX09OX1VTRSAoZ2V0c29ja25hbWUsCi0tICAgICAgICAgICAgICAgICAgICAgImdldHNvY2tuYW1lKCkgdXNlZCB3aXRob3V0IGluY2x1ZGluZyA8c3lzL3NvY2tldC5oPiIpOwotLSAgICBfR0xfV0FSTl9PTl9VU0UgKGdldHNvY2tvcHQsCi0tICAgICAgICAgICAgICAgICAgICAgImdldHNvY2tvcHQoKSB1c2VkIHdpdGhvdXQgaW5jbHVkaW5nIDxzeXMvc29ja2V0Lmg+Iik7Ci0tICAgIF9HTF9XQVJOX09OX1VTRSAobGlzdGVuLAotLSAgICAgICAgICAgICAgICAgICAgICJsaXN0ZW4oKSB1c2VkIHdpdGhvdXQgaW5jbHVkaW5nIDxzeXMvc29ja2V0Lmg+Iik7Ci0tICAgIF9HTF9XQVJOX09OX1VTRSAocmVjdiwKLS0gICAgICAgICAgICAgICAgICAgICAicmVjdigpIHVzZWQgd2l0aG91dCBpbmNsdWRpbmcgPHN5cy9zb2NrZXQuaD4iKTsKLS0gICAgX0dMX1dBUk5fT05fVVNFIChzZW5kLAotLSAgICAgICAgICAgICAgICAgICAgICJzZW5kKCkgdXNlZCB3aXRob3V0IGluY2x1ZGluZyA8c3lzL3NvY2tldC5oPiIpOwotLSAgICBfR0xfV0FSTl9PTl9VU0UgKHJlY3Zmcm9tLAotLSAgICAgICAgICAgICAgICAgICAgICJyZWN2ZnJvbSgpIHVzZWQgd2l0aG91dCBpbmNsdWRpbmcgPHN5cy9zb2NrZXQuaD4iKTsKLS0gICAgX0dMX1dBUk5fT05fVVNFIChzZW5kdG8sCi0tICAgICAgICAgICAgICAgICAgICAgInNlbmR0bygpIHVzZWQgd2l0aG91dCBpbmNsdWRpbmcgPHN5cy9zb2NrZXQuaD4iKTsKLS0gICAgX0dMX1dBUk5fT05fVVNFIChzZXRzb2Nrb3B0LAotLSAgICAgICAgICAgICAgICAgICAgICJzZXRzb2Nrb3B0KCkgdXNlZCB3aXRob3V0IGluY2x1ZGluZyA8c3lzL3NvY2tldC5oPiIpOwotLSAgICBfR0xfV0FSTl9PTl9VU0UgKHNodXRkb3duLAotLSAgICAgICAgICAgICAgICAgICAgICJzaHV0ZG93bigpIHVzZWQgd2l0aG91dCBpbmNsdWRpbmcgPHN5cy9zb2NrZXQuaD4iKTsKLSsjaWYgQEdOVUxJQl9HRVRIT1NUTkFNRUAKLSsvKiBHZXQgYWxsIHBvc3NpYmxlIGRlY2xhcmF0aW9ucyBvZiBnZXRob3N0bmFtZSgpLiAgKi8KLSsjIGlmIEBVTklTVERfSF9IQVZFX1dJTlNPQ0syX0hACi0rIyAgaWYgIWRlZmluZWQgX0dMX1NZU19TT0NLRVRfSAotKyMgICBpZiAhKGRlZmluZWQgX19jcGx1c3BsdXMgJiYgZGVmaW5lZCBHTlVMSUJfTkFNRVNQQUNFKQotKyMgICAgdW5kZWYgc29ja2V0Ci0rIyAgICBkZWZpbmUgc29ja2V0ICAgICAgICAgICAgICBzb2NrZXRfdXNlZF93aXRob3V0X2luY2x1ZGluZ19zeXNfc29ja2V0X2gKLSsjICAgIHVuZGVmIGNvbm5lY3QKLSsjICAgIGRlZmluZSBjb25uZWN0ICAgICAgICAgICAgIGNvbm5lY3RfdXNlZF93aXRob3V0X2luY2x1ZGluZ19zeXNfc29ja2V0X2gKLSsjICAgIHVuZGVmIGFjY2VwdAotKyMgICAgZGVmaW5lIGFjY2VwdCAgICAgICAgICAgICAgYWNjZXB0X3VzZWRfd2l0aG91dF9pbmNsdWRpbmdfc3lzX3NvY2tldF9oCi0rIyAgICB1bmRlZiBiaW5kCi0rIyAgICBkZWZpbmUgYmluZCAgICAgICAgICAgICAgICBiaW5kX3VzZWRfd2l0aG91dF9pbmNsdWRpbmdfc3lzX3NvY2tldF9oCi0rIyAgICB1bmRlZiBnZXRwZWVybmFtZQotKyMgICAgZGVmaW5lIGdldHBlZXJuYW1lICAgICAgICAgZ2V0cGVlcm5hbWVfdXNlZF93aXRob3V0X2luY2x1ZGluZ19zeXNfc29ja2V0X2gKLSsjICAgIHVuZGVmIGdldHNvY2tuYW1lCi0rIyAgICBkZWZpbmUgZ2V0c29ja25hbWUgICAgICAgICBnZXRzb2NrbmFtZV91c2VkX3dpdGhvdXRfaW5jbHVkaW5nX3N5c19zb2NrZXRfaAotKyMgICAgdW5kZWYgZ2V0c29ja29wdAotKyMgICAgZGVmaW5lIGdldHNvY2tvcHQgICAgICAgICAgZ2V0c29ja29wdF91c2VkX3dpdGhvdXRfaW5jbHVkaW5nX3N5c19zb2NrZXRfaAotKyMgICAgdW5kZWYgbGlzdGVuCi0rIyAgICBkZWZpbmUgbGlzdGVuICAgICAgICAgICAgICBsaXN0ZW5fdXNlZF93aXRob3V0X2luY2x1ZGluZ19zeXNfc29ja2V0X2gKLSsjICAgIHVuZGVmIHJlY3YKLSsjICAgIGRlZmluZSByZWN2ICAgICAgICAgICAgICAgIHJlY3ZfdXNlZF93aXRob3V0X2luY2x1ZGluZ19zeXNfc29ja2V0X2gKLSsjICAgIHVuZGVmIHNlbmQKLSsjICAgIGRlZmluZSBzZW5kICAgICAgICAgICAgICAgIHNlbmRfdXNlZF93aXRob3V0X2luY2x1ZGluZ19zeXNfc29ja2V0X2gKLSsjICAgIHVuZGVmIHJlY3Zmcm9tCi0rIyAgICBkZWZpbmUgcmVjdmZyb20gICAgICAgICAgICByZWN2ZnJvbV91c2VkX3dpdGhvdXRfaW5jbHVkaW5nX3N5c19zb2NrZXRfaAotKyMgICAgdW5kZWYgc2VuZHRvCi0rIyAgICBkZWZpbmUgc2VuZHRvICAgICAgICAgICAgICBzZW5kdG9fdXNlZF93aXRob3V0X2luY2x1ZGluZ19zeXNfc29ja2V0X2gKLSsjICAgIHVuZGVmIHNldHNvY2tvcHQKLSsjICAgIGRlZmluZSBzZXRzb2Nrb3B0ICAgICAgICAgIHNldHNvY2tvcHRfdXNlZF93aXRob3V0X2luY2x1ZGluZ19zeXNfc29ja2V0X2gKLSsjICAgIHVuZGVmIHNodXRkb3duCi0rIyAgICBkZWZpbmUgc2h1dGRvd24gICAgICAgICAgICBzaHV0ZG93bl91c2VkX3dpdGhvdXRfaW5jbHVkaW5nX3N5c19zb2NrZXRfaAotKyMgICBlbHNlCi0rICAgICBfR0xfV0FSTl9PTl9VU0UgKHNvY2tldCwKLSsgICAgICAgICAgICAgICAgICAgICAgInNvY2tldCgpIHVzZWQgd2l0aG91dCBpbmNsdWRpbmcgPHN5cy9zb2NrZXQuaD4iKTsKLSsgICAgIF9HTF9XQVJOX09OX1VTRSAoY29ubmVjdCwKLSsgICAgICAgICAgICAgICAgICAgICAgImNvbm5lY3QoKSB1c2VkIHdpdGhvdXQgaW5jbHVkaW5nIDxzeXMvc29ja2V0Lmg+Iik7Ci0rICAgICBfR0xfV0FSTl9PTl9VU0UgKGFjY2VwdCwKLSsgICAgICAgICAgICAgICAgICAgICAgImFjY2VwdCgpIHVzZWQgd2l0aG91dCBpbmNsdWRpbmcgPHN5cy9zb2NrZXQuaD4iKTsKLSsgICAgIF9HTF9XQVJOX09OX1VTRSAoYmluZCwKLSsgICAgICAgICAgICAgICAgICAgICAgImJpbmQoKSB1c2VkIHdpdGhvdXQgaW5jbHVkaW5nIDxzeXMvc29ja2V0Lmg+Iik7Ci0rICAgICBfR0xfV0FSTl9PTl9VU0UgKGdldHBlZXJuYW1lLAotKyAgICAgICAgICAgICAgICAgICAgICAiZ2V0cGVlcm5hbWUoKSB1c2VkIHdpdGhvdXQgaW5jbHVkaW5nIDxzeXMvc29ja2V0Lmg+Iik7Ci0rICAgICBfR0xfV0FSTl9PTl9VU0UgKGdldHNvY2tuYW1lLAotKyAgICAgICAgICAgICAgICAgICAgICAiZ2V0c29ja25hbWUoKSB1c2VkIHdpdGhvdXQgaW5jbHVkaW5nIDxzeXMvc29ja2V0Lmg+Iik7Ci0rICAgICBfR0xfV0FSTl9PTl9VU0UgKGdldHNvY2tvcHQsCi0rICAgICAgICAgICAgICAgICAgICAgICJnZXRzb2Nrb3B0KCkgdXNlZCB3aXRob3V0IGluY2x1ZGluZyA8c3lzL3NvY2tldC5oPiIpOwotKyAgICAgX0dMX1dBUk5fT05fVVNFIChsaXN0ZW4sCi0rICAgICAgICAgICAgICAgICAgICAgICJsaXN0ZW4oKSB1c2VkIHdpdGhvdXQgaW5jbHVkaW5nIDxzeXMvc29ja2V0Lmg+Iik7Ci0rICAgICBfR0xfV0FSTl9PTl9VU0UgKHJlY3YsCi0rICAgICAgICAgICAgICAgICAgICAgICJyZWN2KCkgdXNlZCB3aXRob3V0IGluY2x1ZGluZyA8c3lzL3NvY2tldC5oPiIpOwotKyAgICAgX0dMX1dBUk5fT05fVVNFIChzZW5kLAotKyAgICAgICAgICAgICAgICAgICAgICAic2VuZCgpIHVzZWQgd2l0aG91dCBpbmNsdWRpbmcgPHN5cy9zb2NrZXQuaD4iKTsKLSsgICAgIF9HTF9XQVJOX09OX1VTRSAocmVjdmZyb20sCi0rICAgICAgICAgICAgICAgICAgICAgICJyZWN2ZnJvbSgpIHVzZWQgd2l0aG91dCBpbmNsdWRpbmcgPHN5cy9zb2NrZXQuaD4iKTsKLSsgICAgIF9HTF9XQVJOX09OX1VTRSAoc2VuZHRvLAotKyAgICAgICAgICAgICAgICAgICAgICAic2VuZHRvKCkgdXNlZCB3aXRob3V0IGluY2x1ZGluZyA8c3lzL3NvY2tldC5oPiIpOwotKyAgICAgX0dMX1dBUk5fT05fVVNFIChzZXRzb2Nrb3B0LAotKyAgICAgICAgICAgICAgICAgICAgICAic2V0c29ja29wdCgpIHVzZWQgd2l0aG91dCBpbmNsdWRpbmcgPHN5cy9zb2NrZXQuaD4iKTsKLSsgICAgIF9HTF9XQVJOX09OX1VTRSAoc2h1dGRvd24sCi0rICAgICAgICAgICAgICAgICAgICAgICJzaHV0ZG93bigpIHVzZWQgd2l0aG91dCBpbmNsdWRpbmcgPHN5cy9zb2NrZXQuaD4iKTsKLSsjICAgZW5kaWYKLSAjICBlbmRpZgotLSMgZW5kaWYKLS0jIGlmICFkZWZpbmVkIF9AR1VBUkRfUFJFRklYQF9TWVNfU0VMRUNUX0gKLS0jICBpZiAhKGRlZmluZWQgX19jcGx1c3BsdXMgJiYgZGVmaW5lZCBHTlVMSUJfTkFNRVNQQUNFKQotLSMgICB1bmRlZiBzZWxlY3QKLS0jICAgZGVmaW5lIHNlbGVjdCAgICAgICAgICAgICAgc2VsZWN0X3VzZWRfd2l0aG91dF9pbmNsdWRpbmdfc3lzX3NlbGVjdF9oCi0tIyAgZWxzZQotLSAgICBfR0xfV0FSTl9PTl9VU0UgKHNlbGVjdCwKLS0gICAgICAgICAgICAgICAgICAgICAic2VsZWN0KCkgdXNlZCB3aXRob3V0IGluY2x1ZGluZyA8c3lzL3NlbGVjdC5oPiIpOwotKyMgIGlmICFkZWZpbmVkIF9HTF9TWVNfU0VMRUNUX0gKLSsjICAgaWYgIShkZWZpbmVkIF9fY3BsdXNwbHVzICYmIGRlZmluZWQgR05VTElCX05BTUVTUEFDRSkKLSsjICAgIHVuZGVmIHNlbGVjdAotKyMgICAgZGVmaW5lIHNlbGVjdCAgICAgICAgICAgICAgc2VsZWN0X3VzZWRfd2l0aG91dF9pbmNsdWRpbmdfc3lzX3NlbGVjdF9oCi0rIyAgIGVsc2UKLSsgICAgIF9HTF9XQVJOX09OX1VTRSAoc2VsZWN0LAotKyAgICAgICAgICAgICAgICAgICAgICAic2VsZWN0KCkgdXNlZCB3aXRob3V0IGluY2x1ZGluZyA8c3lzL3NlbGVjdC5oPiIpOwotKyMgICBlbmRpZgotICMgIGVuZGlmCi0gIyBlbmRpZgotICNlbmRpZgotQEAgLTEwNjEsNyArMTA2Miw2IEBAIF9HTF9XQVJOX09OX1VTRSAocGlwZTIsICJwaXBlMiBpcyB1bnBvcnQKLSAgICBzcGVjaWZpY2F0aW9uIDxodHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvc3VzdjN4c2gvcHJlYWQuaHRtbD4uICAqLwotICMgaWYgQFJFUExBQ0VfUFJFQURACi0gIyAgaWYgIShkZWZpbmVkIF9fY3BsdXNwbHVzICYmIGRlZmluZWQgR05VTElCX05BTUVTUEFDRSkKLS0jICAgdW5kZWYgcHJlYWQKLSAjICAgZGVmaW5lIHByZWFkIHJwbF9wcmVhZAotICMgIGVuZGlmCi0gX0dMX0ZVTkNERUNMX1JQTCAocHJlYWQsIHNzaXplX3QsCi1AQCAtMTA5Niw3ICsxMDk2LDYgQEAgX0dMX1dBUk5fT05fVVNFIChwcmVhZCwgInByZWFkIGlzIHVucG9ydAotICAgIDxodHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvc3VzdjN4c2gvcHdyaXRlLmh0bWw+LiAgKi8KLSAjIGlmIEBSRVBMQUNFX1BXUklURUAKLSAjICBpZiAhKGRlZmluZWQgX19jcGx1c3BsdXMgJiYgZGVmaW5lZCBHTlVMSUJfTkFNRVNQQUNFKQotLSMgICB1bmRlZiBwd3JpdGUKLSAjICAgZGVmaW5lIHB3cml0ZSBycGxfcHdyaXRlCi0gIyAgZW5kaWYKLSBfR0xfRlVOQ0RFQ0xfUlBMIChwd3JpdGUsIHNzaXplX3QsCi1AQCAtMTQxNyw1ICsxNDE2LDUgQEAgX0dMX0NYWEFMSUFTV0FSTiAod3JpdGUpOwotICNlbmRpZgotIAotIAotLSNlbmRpZiAvKiBfQEdVQVJEX1BSRUZJWEBfVU5JU1REX0ggKi8KLS0jZW5kaWYgLyogX0BHVUFSRF9QUkVGSVhAX1VOSVNURF9IICovCi0rI2VuZGlmIC8qIF9HTF9VTklTVERfSCAqLwotKyNlbmRpZiAvKiBfR0xfVU5JU1REX0ggKi8KLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNsaWIvdmVyaWZ5LmggbGliaWNvbnYtMS4xNC9zcmNsaWIvdmVyaWZ5LmgKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbGliL3ZlcmlmeS5oCTIwMTEtMDgtMDcgMDY6NDI6MDcuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNsaWIvdmVyaWZ5LmgJMjAxMi0wMS0wOCAwMjowNzo0MC40OTQ0ODQ0NjQgLTA4MDAKLUBAIC0xNjQsMTMgKzE2NCwxMCBAQAotICAgICAoISFzaXplb2YgKF9HTF9WRVJJRllfVFlQRSAoUiwgRElBR05PU1RJQykpKQotIAotICMgaWZkZWYgX19jcGx1c3BsdXMKLS0jICBpZiAhR05VTElCX2RlZmluZWRfc3RydWN0X19nbF92ZXJpZnlfdHlwZQotIHRlbXBsYXRlIDxpbnQgdz4KLSAgIHN0cnVjdCBfZ2xfdmVyaWZ5X3R5cGUgewotICAgICB1bnNpZ25lZCBpbnQgX2dsX3ZlcmlmeV9lcnJvcl9pZl9uZWdhdGl2ZTogdzsKLSAgIH07Ci0tIyAgIGRlZmluZSBHTlVMSUJfZGVmaW5lZF9zdHJ1Y3RfX2dsX3ZlcmlmeV90eXBlIDEKLS0jICBlbmRpZgotICMgIGRlZmluZSBfR0xfVkVSSUZZX1RZUEUoUiwgRElBR05PU1RJQykgXAotICAgICBfZ2xfdmVyaWZ5X3R5cGU8KFIpID8gMSA6IC0xPgotICMgZWxpZiBkZWZpbmVkIF9HTF9IQVZFX19TVEFUSUNfQVNTRVJUCi1AQCAtMjA5LDcgKzIwNiw3IEBAIHRlbXBsYXRlIDxpbnQgdz4KLSAjICBlbmRpZgotICMgZW5kaWYKLSAKLS0vKiBAYXNzZXJ0Lmggb21pdCBzdGFydEAgICovCi0rIyBpZmRlZiBfR0xfVkVSSUZZX0gKLSAKLSAvKiBFYWNoIG9mIHRoZXNlIG1hY3JvcyB2ZXJpZmllcyB0aGF0IGl0cyBhcmd1bWVudCBSIGlzIG5vbnplcm8uICBUbwotICAgIGJlIHBvcnRhYmxlLCBSIHNob3VsZCBiZSBhbiBpbnRlZ2VyIGNvbnN0YW50IGV4cHJlc3Npb24uICBVbmxpa2UKLUBAIC0yMjEsMjMgKzIxOCwxNSBAQCB0ZW1wbGF0ZSA8aW50IHc+Ci0gICAgY29udGV4dHMsIGUuZy4sIHRoZSB0b3AgbGV2ZWwuICAqLwotIAotIC8qIFZlcmlmeSByZXF1aXJlbWVudCBSIGF0IGNvbXBpbGUtdGltZSwgYXMgYW4gaW50ZWdlciBjb25zdGFudCBleHByZXNzaW9uLgotLSAgIFJldHVybiAxLiAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIHZlcmlmeV9leHByIChSLCAxKS4KLS0KLS0gICB2ZXJpZnlfdHJ1ZSBpcyBvYnNvbGVzY2VudDsgcGxlYXNlIHVzZSB2ZXJpZnlfZXhwciBpbnN0ZWFkLiAgKi8KLS0KLS0jIGRlZmluZSB2ZXJpZnlfdHJ1ZShSKSBfR0xfVkVSSUZZX1RSVUUgKFIsICJ2ZXJpZnlfdHJ1ZSAoIiAjUiAiKSIpCi0rICAgUmV0dXJuIDEuICAqLwotIAotLS8qIFZlcmlmeSByZXF1aXJlbWVudCBSIGF0IGNvbXBpbGUtdGltZS4gIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlCi0tICAgZXhwcmVzc2lvbiBFLiAgKi8KLS0KLS0jIGRlZmluZSB2ZXJpZnlfZXhwcihSLCBFKSBcCi0tICAgIChfR0xfVkVSSUZZX1RSVUUgKFIsICJ2ZXJpZnlfZXhwciAoIiAjUiAiLCAiICNFICIpIikgPyAoRSkgOiAoRSkpCi0rIyAgZGVmaW5lIHZlcmlmeV90cnVlKFIpIF9HTF9WRVJJRllfVFJVRSAoUiwgInZlcmlmeV90cnVlICgiICNSICIpIikKLSAKLSAvKiBWZXJpZnkgcmVxdWlyZW1lbnQgUiBhdCBjb21waWxlLXRpbWUsIGFzIGEgZGVjbGFyYXRpb24gd2l0aG91dCBhCi0gICAgdHJhaWxpbmcgJzsnLiAgKi8KLSAKLS0jIGRlZmluZSB2ZXJpZnkoUikgX0dMX1ZFUklGWSAoUiwgInZlcmlmeSAoIiAjUiAiKSIpCi0rIyAgZGVmaW5lIHZlcmlmeShSKSBfR0xfVkVSSUZZIChSLCAidmVyaWZ5ICgiICNSICIpIikKLSAKLS0vKiBAYXNzZXJ0Lmggb21pdCBlbmRAICAqLwotKyMgZW5kaWYKLSAKLSAjZW5kaWYKLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9jYW5vbmljYWxpemUubTQgbGliaWNvbnYtMS4xNC9zcmNtNC9jYW5vbmljYWxpemUubTQKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbTQvY2Fub25pY2FsaXplLm00CTIwMTEtMDgtMDcgMDY6NDI6MDcuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNtNC9jYW5vbmljYWxpemUubTQJMjAxMi0wMS0wOCAwMjowNzo0MC41NjY0ODQ0NjkgLTA4MDAKLUBAIC0xLDQgKzEsNCBAQAotLSMgY2Fub25pY2FsaXplLm00IHNlcmlhbCAyMwotKyMgY2Fub25pY2FsaXplLm00IHNlcmlhbCAyMQotIAotIGRubCBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwNywgMjAwOS0yMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAotQEAgLTEwLDYgKzEwLDggQEAgZG5sIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsbwotICMgbm90IHByb3ZpZGUgb3IgZml4IHJlYWxwYXRoLgotIEFDX0RFRlVOKFtnbF9GVU5DX0NBTk9OSUNBTElaRV9GSUxFTkFNRV9NT0RFXSwKLSBbCi0rICBBQ19MSUJPQkooW2Nhbm9uaWNhbGl6ZV0pCi0rCi0gICBBQ19SRVFVSVJFKFtnbF9VU0VfU1lTVEVNX0VYVEVOU0lPTlNdKQotICAgQUNfQ0hFQ0tfRlVOQ1NfT05DRShbY2Fub25pY2FsaXplX2ZpbGVfbmFtZV0pCi0gICBBQ19SRVFVSVJFKFtnbF9ET1VCTEVfU0xBU0hfUk9PVF0pCi1AQCAtMjgsMTQgKzMwLDE2IEBAIEFDX0RFRlVOKFtnbF9DQU5PTklDQUxJWkVfTEdQTF0sCi0gICBBQ19SRVFVSVJFKFtnbF9DQU5PTklDQUxJWkVfTEdQTF9TRVBBUkFURV0pCi0gICBpZiB0ZXN0ICRhY19jdl9mdW5jX2Nhbm9uaWNhbGl6ZV9maWxlX25hbWUgPSBubzsgdGhlbgotICAgICBIQVZFX0NBTk9OSUNBTElaRV9GSUxFX05BTUU9MAotKyAgICBBQ19MSUJPQkooW2Nhbm9uaWNhbGl6ZS1sZ3BsXSkKLSAgICAgaWYgdGVzdCAkYWNfY3ZfZnVuY19yZWFscGF0aCA9IG5vOyB0aGVuCi0gICAgICAgSEFWRV9SRUFMUEFUSD0wCi0gICAgIGVsaWYgdGVzdCAiJGdsX2N2X2Z1bmNfcmVhbHBhdGhfd29ya3MiICE9IHllczsgdGhlbgotICAgICAgIFJFUExBQ0VfUkVBTFBBVEg9MQotICAgICBmaQotICAgZWxpZiB0ZXN0ICIkZ2xfY3ZfZnVuY19yZWFscGF0aF93b3JrcyIgIT0geWVzOyB0aGVuCi0tICAgIFJFUExBQ0VfQ0FOT05JQ0FMSVpFX0ZJTEVfTkFNRT0xCi0rICAgIEFDX0xJQk9CSihbY2Fub25pY2FsaXplLWxncGxdKQotICAgICBSRVBMQUNFX1JFQUxQQVRIPTEKLSsgICAgUkVQTEFDRV9DQU5PTklDQUxJWkVfRklMRV9OQU1FPTEKLSAgIGZpCi0gXSkKLSAKLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9lcnJub19oLm00IGxpYmljb252LTEuMTQvc3JjbTQvZXJybm9faC5tNAotLS0tIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9lcnJub19oLm00CTIwMTEtMDgtMDcgMDY6NDI6MDcuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNtNC9lcnJub19oLm00CTIwMTItMDEtMDggMDI6MDc6NDAuNTkwNDg0NDY5IC0wODAwCi1AQCAtMSw0ICsxLDQgQEAKLS0jIGVycm5vX2gubTQgc2VyaWFsIDEwCi0rIyBlcnJub19oLm00IHNlcmlhbCA5Ci0gZG5sIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNiwgMjAwOC0yMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIGRubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgotIGRubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAotQEAgLTM0LDEyICszNCw2IEBAIGJvb2JvbwotICNpZiAhZGVmaW5lZCBFTk9UU1VQCi0gYm9vYm9vCi0gI2VuZGlmCi0tI2lmICFkZWZpbmVkIEVORVRSRVNFVAotLWJvb2JvbwotLSNlbmRpZgotLSNpZiAhZGVmaW5lZCBFQ09OTkFCT1JURUQKLS1ib29ib28KLS0jZW5kaWYKLSAjaWYgIWRlZmluZWQgRVNUQUxFCi0gYm9vYm9vCi0gI2VuZGlmCi1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbTQvZXJyb3IubTQgbGliaWNvbnYtMS4xNC9zcmNtNC9lcnJvci5tNAotLS0tIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9lcnJvci5tNAkyMDExLTA4LTA3IDA2OjQyOjA3LjAwMDAwMDAwMCAtMDcwMAotKysrIGxpYmljb252LTEuMTQvc3JjbTQvZXJyb3IubTQJMjAxMi0wMS0wOCAwMjowNzo0MC41OTg0ODQ0NzAgLTA4MDAKLUBAIC0xLDQgKzEsNCBAQAotLSNzZXJpYWwgMTQKLSsjc2VyaWFsIDEzCi0gCi0gIyBDb3B5cmlnaHQgKEMpIDE5OTYtMTk5OCwgMjAwMS0yMDA0LCAyMDA5LTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gIwotQEAgLTgsOCArOCwxNiBAQAotIAotIEFDX0RFRlVOKFtnbF9FUlJPUl0sCi0gWwotLSAgZG5sIFdlIGRvbid0IHVzZSBBQ19GVU5DX0VSUk9SX0FUX0xJTkUgYW55IG1vcmUsIGJlY2F1c2UgaXQgaXMgbm8gbG9uZ2VyCi0tICBkbmwgbWFpbnRhaW5lZCBpbiBBdXRvY29uZiBhbmQgYmVjYXVzZSBpdCBpbnZva2VzIEFDX0xJQk9CSi4KLSsgIEFDX0ZVTkNfRVJST1JfQVRfTElORQotKyAgZG5sIE5vdGU6IEFDX0ZVTkNfRVJST1JfQVRfTElORSBkb2VzIEFDX0xJQlNPVVJDRVMoW2Vycm9yLmgsIGVycm9yLmNdKS4KLSsgIGdsX1BSRVJFUV9FUlJPUgotK10pCi0rCi0rIyBSZWRlZmluZSBBQ19GVU5DX0VSUk9SX0FUX0xJTkUsIGJlY2F1c2UgaXQgaXMgbm8gbG9uZ2VyIG1haW50YWluZWQgaW4KLSsjIEF1dG9jb25mLgotK0FDX0RFRlVOKFtBQ19GVU5DX0VSUk9SX0FUX0xJTkVdLAotK1sKLSsgIEFDX0xJQlNPVVJDRVMoW2Vycm9yLmgsIGVycm9yLmNdKWRubAotICAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBlcnJvcl9hdF9saW5lXSwgW2FjX2N2X2xpYl9lcnJvcl9hdF9saW5lXSwKLSAgICAgW0FDX0xJTktfSUZFTFNFKAotICAgICAgICBbQUNfTEFOR19QUk9HUkFNKAotQEAgLTE3LDYgKzI1LDkgQEAgQUNfREVGVU4oW2dsX0VSUk9SXSwKLSAgICAgICAgICAgW1tlcnJvcl9hdF9saW5lICgwLCAwLCAiIiwgMCwgImFuIGVycm9yIG9jY3VycmVkIik7XV0pXSwKLSAgICAgICAgW2FjX2N2X2xpYl9lcnJvcl9hdF9saW5lPXllc10sCi0gICAgICAgIFthY19jdl9saWJfZXJyb3JfYXRfbGluZT1ub10pXSkKLSsgIGlmIHRlc3QgJGFjX2N2X2xpYl9lcnJvcl9hdF9saW5lID0gbm87IHRoZW4KLSsgICAgQUNfTElCT0JKKFtlcnJvcl0pCi0rICBmaQotIF0pCi0gCi0gIyBQcmVyZXF1aXNpdGVzIG9mIGxpYi9lcnJvci5jLgotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L2V4dGVuc2lvbnMubTQgbGliaWNvbnYtMS4xNC9zcmNtNC9leHRlbnNpb25zLm00Ci0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L2V4dGVuc2lvbnMubTQJMjAxMS0wOC0wNyAwNjo0MjowNy4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY200L2V4dGVuc2lvbnMubTQJMjAxMi0wMS0wOCAwMjowNzo0MC42MDY0ODQ0NzEgLTA4MDAKLUBAIC0xLDQgKzEsNCBAQAotLSMgc2VyaWFsIDEwICAtKi0gQXV0b2NvbmYgLSotCi0rIyBzZXJpYWwgOSAgLSotIEF1dG9jb25mIC0qLQotICMgRW5hYmxlIGV4dGVuc2lvbnMgb24gc3lzdGVtcyB0aGF0IG5vcm1hbGx5IGRpc2FibGUgdGhlbS4KLSAKLSAjIENvcHlyaWdodCAoQykgMjAwMywgMjAwNi0yMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotQEAgLTY3LDEwICs2Nyw2IEBAIEFDX0JFRk9SRShbJDBdLCBbQUNfUlVOX0lGRUxTRV0pZG5sCi0gI2lmbmRlZiBfQUxMX1NPVVJDRQotICMgdW5kZWYgX0FMTF9TT1VSQ0UKLSAjZW5kaWYKLS0vKiBFbmFibGUgZ2VuZXJhbCBleHRlbnNpb25zIG9uIE1hY09TIFguICAqLwotLSNpZm5kZWYgX0RBUldJTl9DX1NPVVJDRQotLSMgdW5kZWYgX0RBUldJTl9DX1NPVVJDRQotLSNlbmRpZgotIC8qIEVuYWJsZSBHTlUgZXh0ZW5zaW9ucyBvbiBzeXN0ZW1zIHRoYXQgaGF2ZSB0aGVtLiAgKi8KLSAjaWZuZGVmIF9HTlVfU09VUkNFCi0gIyB1bmRlZiBfR05VX1NPVVJDRQotQEAgLTk5LDcgKzk1LDYgQEAgQUNfQkVGT1JFKFskMF0sIFtBQ19SVU5fSUZFTFNFXSlkbmwKLSAgIHRlc3QgJGFjX2N2X3NhZmVfdG9fZGVmaW5lX19fZXh0ZW5zaW9uc19fID0geWVzICYmCi0gICAgIEFDX0RFRklORShbX19FWFRFTlNJT05TX19dKQotICAgQUNfREVGSU5FKFtfQUxMX1NPVVJDRV0pCi0tICBBQ19ERUZJTkUoW19EQVJXSU5fQ19TT1VSQ0VdKQotICAgQUNfREVGSU5FKFtfR05VX1NPVVJDRV0pCi0gICBBQ19ERUZJTkUoW19QT1NJWF9QVEhSRUFEX1NFTUFOVElDU10pCi0gICBBQ19ERUZJTkUoW19UQU5ERU1fU09VUkNFXSkKLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9nbnVsaWItY2FjaGUubTQgbGliaWNvbnYtMS4xNC9zcmNtNC9nbnVsaWItY2FjaGUubTQKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbTQvZ251bGliLWNhY2hlLm00CTIwMTEtMDgtMDcgMDY6NDI6MTEuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNtNC9nbnVsaWItY2FjaGUubTQJMjAxMi0wMS0wOCAwMjowNzo0My4xNTQ0ODQ1OTMgLTA4MDAKLUBAIC0xNSw3ICsxNSw3IEBACi0gCi0gCi0gIyBTcGVjaWZpY2F0aW9uIGluIHRoZSBmb3JtIG9mIGEgY29tbWFuZC1saW5lIGludm9jYXRpb246Ci0tIyAgIGdudWxpYi10b29sIC0taW1wb3J0IC0tZGlyPS4gLS1sb2NhbC1kaXI9Z251bGliLWxvY2FsIC0tbGliPWxpYmljcnQgLS1zb3VyY2UtYmFzZT1zcmNsaWIgLS1tNC1iYXNlPXNyY200IC0tZG9jLWJhc2U9ZG9jIC0tdGVzdHMtYmFzZT10ZXN0cyAtLWF1eC1kaXI9YnVpbGQtYXV4IC0tbWFrZWZpbGUtbmFtZT1NYWtlZmlsZS5nbnVsaWIgLS1uby1jb25kaXRpb25hbC1kZXBlbmRlbmNpZXMgLS1uby1saWJ0b29sIC0tbWFjcm8tcHJlZml4PWdsIC0tbm8tdmMtZmlsZXMgYmluYXJ5LWlvIGVycm9yIGdldHRleHQgZ2V0dGV4dC1oIGxpYmljb252LW1pc2MgbWJzdGF0ZSBtZW1tb3ZlIHByb2duYW1lIHJlbG9jYXRhYmxlLXByb2cgc2FmZS1yZWFkIHNpZ3BpcGUgc3RkaW8gc3RkbGliIHN0cmVycm9yIHVuaXN0ZCB1bml3aWR0aC93aWR0aCB1bmxvY2tlZC1pbyB4YWxsb2MKLSsjICAgZ251bGliLXRvb2wgLS1pbXBvcnQgLS1kaXI9LiAtLWxvY2FsLWRpcj1nbnVsaWItbG9jYWwgLS1saWI9bGliaWNydCAtLXNvdXJjZS1iYXNlPXNyY2xpYiAtLW00LWJhc2U9c3JjbTQgLS1kb2MtYmFzZT1kb2MgLS10ZXN0cy1iYXNlPXRlc3RzIC0tYXV4LWRpcj1idWlsZC1hdXggLS1tYWtlZmlsZS1uYW1lPU1ha2VmaWxlLmdudWxpYiAtLW5vLWxpYnRvb2wgLS1tYWNyby1wcmVmaXg9Z2wgLS1uby12Yy1maWxlcyBiaW5hcnktaW8gZXJyb3IgZ2V0dGV4dCBnZXR0ZXh0LWggbGliaWNvbnYtbWlzYyBtYnN0YXRlIG1lbW1vdmUgcHJvZ25hbWUgcmVsb2NhdGFibGUgcmVsb2NhdGFibGUtcHJvZyBzYWZlLXJlYWQgc2lncGlwZSBzdGRpbyBzdGRsaWIgc3RyZXJyb3IgdW5pc3RkIHVuaXdpZHRoL3dpZHRoIHVubG9ja2VkLWlvIHhhbGxvYwotIAotICMgU3BlY2lmaWNhdGlvbiBpbiB0aGUgZm9ybSBvZiBhIGZldyBnbnVsaWItdG9vbC5tNCBtYWNybyBpbnZvY2F0aW9uczoKLSBnbF9MT0NBTF9ESVIoW2dudWxpYi1sb2NhbF0pCi1AQCAtMjgsNiArMjgsNyBAQCBnbF9NT0RVTEVTKFsKLSAgIG1ic3RhdGUKLSAgIG1lbW1vdmUKLSAgIHByb2duYW1lCi0rICByZWxvY2F0YWJsZQotICAgcmVsb2NhdGFibGUtcHJvZwotICAgc2FmZS1yZWFkCi0gICBzaWdwaXBlCi1AQCAtNDksNSArNTAsNCBAQCBnbF9MSUIoW2xpYmljcnRdKQotIGdsX01BS0VGSUxFX05BTUUoW01ha2VmaWxlLmdudWxpYl0pCi0gZ2xfTUFDUk9fUFJFRklYKFtnbF0pCi0gZ2xfUE9fRE9NQUlOKFtdKQotLWdsX1dJVE5FU1NfQ19ET01BSU4oW10pCi0gZ2xfVkNfRklMRVMoW2ZhbHNlXSkKLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9nbnVsaWItY29tbW9uLm00IGxpYmljb252LTEuMTQvc3JjbTQvZ251bGliLWNvbW1vbi5tNAotLS0tIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9nbnVsaWItY29tbW9uLm00CTIwMTEtMDgtMDcgMDY6NDI6MDcuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNtNC9nbnVsaWItY29tbW9uLm00CTIwMTItMDEtMDggMDI6MDc6NDAuNjM0NDg0NDcxIC0wODAwCi1AQCAtMSw0ICsxLDQgQEAKLS0jIGdudWxpYi1jb21tb24ubTQgc2VyaWFsIDI5Ci0rIyBnbnVsaWItY29tbW9uLm00IHNlcmlhbCAyNAotIGRubCBDb3B5cmlnaHQgKEMpIDIwMDctMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSBkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KLSBkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKLUBAIC0xMiwxOSArMTIsNiBAQCBBQ19ERUZVTihbZ2xfQ09NTU9OXSwgWwotICAgQUNfUkVRVUlSRShbZ2xfQ09NTU9OX0JPRFldKQotIF0pCi0gQUNfREVGVU4oW2dsX0NPTU1PTl9CT0RZXSwgWwotLSAgQUhfVkVSQkFUSU0oW19Ob3JldHVybl0sCi0tWy8qIFRoZSBfTm9yZXR1cm4ga2V5d29yZCBvZiBkcmFmdCBDMVguICAqLwotLSNpZm5kZWYgX05vcmV0dXJuCi0tIyBpZiAoMyA8PSBfX0dOVUNfXyB8fCAoX19HTlVDX18gPT0gMiAmJiA4IDw9IF9fR05VQ19NSU5PUl9fKSBcCi0tICAgICAgfHwgMHg1MTEwIDw9IF9fU1VOUFJPX0MpCi0tIyAgZGVmaW5lIF9Ob3JldHVybiBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSkKLS0jIGVsaWYgMTIwMCA8PSBfTVNDX1ZFUgotLSMgIGRlZmluZSBfTm9yZXR1cm4gX19kZWNsc3BlYyAobm9yZXR1cm4pCi0tIyBlbHNlCi0tIyAgZGVmaW5lIF9Ob3JldHVybgotLSMgZW5kaWYKLS0jZW5kaWYKLS1dKQotICAgQUhfVkVSQkFUSU0oW2lzb2M5OV9pbmxpbmVdLAotIFsvKiBXb3JrIGFyb3VuZCBhIGJ1ZyBpbiBBcHBsZSBHQ0MgNC4wLjEgYnVpbGQgNTQ2NTogSW4gQzk5IG1vZGUsIGl0IHN1cHBvcnRzCi0gICAgdGhlIElTTyBDIDk5IHNlbWFudGljcyBvZiAnZXh0ZXJuIGlubGluZScgKHVubGlrZSB0aGUgR05VIEMgc2VtYW50aWNzIG9mCi1AQCAtNDcsMjAgKzM0LDYgQEAgQUNfREVGVU4oW2dsX0NPTU1PTl9CT0RZXSwgWwotIC8qIFRoZSBuYW1lIF9VTlVTRURfUEFSQU1FVEVSXyBpcyBhbiBlYXJsaWVyIHNwZWxsaW5nLCBhbHRob3VnaCB0aGUgbmFtZQotICAgIGlzIGEgbWlzbm9tZXIgb3V0c2lkZSBvZiBwYXJhbWV0ZXIgbGlzdHMuICAqLwotICNkZWZpbmUgX1VOVVNFRF9QQVJBTUVURVJfIF9HTF9VTlVTRUQKLS0KLS0vKiBUaGUgX19wdXJlX18gYXR0cmlidXRlIHdhcyBhZGRlZCBpbiBnY2MgMi45Ni4gICovCi0tI2lmIF9fR05VQ19fID4gMiB8fCAoX19HTlVDX18gPT0gMiAmJiBfX0dOVUNfTUlOT1JfXyA+PSA5NikKLS0jIGRlZmluZSBfR0xfQVRUUklCVVRFX1BVUkUgX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkKLS0jZWxzZQotLSMgZGVmaW5lIF9HTF9BVFRSSUJVVEVfUFVSRSAvKiBlbXB0eSAqLwotLSNlbmRpZgotLQotLS8qIFRoZSBfX2NvbnN0X18gYXR0cmlidXRlIHdhcyBhZGRlZCBpbiBnY2MgMi45NS4gICovCi0tI2lmIF9fR05VQ19fID4gMiB8fCAoX19HTlVDX18gPT0gMiAmJiBfX0dOVUNfTUlOT1JfXyA+PSA5NSkKLS0jIGRlZmluZSBfR0xfQVRUUklCVVRFX0NPTlNUIF9fYXR0cmlidXRlX18gKChfX2NvbnN0X18pKQotLSNlbHNlCi0tIyBkZWZpbmUgX0dMX0FUVFJJQlVURV9DT05TVCAvKiBlbXB0eSAqLwotLSNlbmRpZgotIF0pCi0gICBkbmwgUHJlcGFyYXRpb24gZm9yIHJ1bm5pbmcgdGVzdCBwcm9ncmFtczoKLSAgIGRubCBUZWxsIGdsaWJjIHRvIHdyaXRlIGRpYWdub3N0aWNzIGZyb20gLURfRk9SVElGWV9TT1VSQ0U9MiB0byBzdGRlcnIsIG5vdAotQEAgLTc0LDQ5ICs0NywxNiBAQCBBQ19ERUZVTihbZ2xfQ09NTU9OX0JPRFldLCBbCi0gIyBleHBhbmRzIHRvIGEgQyBwcmVwcm9jZXNzb3IgZXhwcmVzc2lvbiB0aGF0IGV2YWx1YXRlcyB0byAxIG9yIDAsIGRlcGVuZGluZwotICMgd2hldGhlciBhIGdudWxpYiBtb2R1bGUgdGhhdCBoYXMgYmVlbiByZXF1ZXN0ZWQgc2hhbGwgYmUgY29uc2lkZXJlZCBwcmVzZW50Ci0gIyBvciBub3QuCi0tbTRfZGVmaW5lKFtnbF9NT0RVTEVfSU5ESUNBVE9SX0NPTkRJVElPTl0sIFsxXSkKLStBQ19ERUZVTihbZ2xfTU9EVUxFX0lORElDQVRPUl9DT05ESVRJT05dLCBbMV0pCi0gCi0gIyBnbF9NT0RVTEVfSU5ESUNBVE9SX1NFVF9WQVJJQUJMRShbbW9kdWxlbmFtZV0pCi0gIyBzZXRzIHRoZSBzaGVsbCB2YXJpYWJsZSB0aGF0IGluZGljYXRlcyB0aGUgcHJlc2VuY2Ugb2YgdGhlIGdpdmVuIG1vZHVsZSB0bwotICMgYSBDIHByZXByb2Nlc3NvciBleHByZXNzaW9uIHRoYXQgd2lsbCBldmFsdWF0ZSB0byAxLgotIEFDX0RFRlVOKFtnbF9NT0RVTEVfSU5ESUNBVE9SX1NFVF9WQVJJQUJMRV0sCi0gWwotLSAgZ2xfTU9EVUxFX0lORElDQVRPUl9TRVRfVkFSSUFCTEVfQVVYKAotLSAgICBbR05VTElCX1tdbTRfdHJhbnNsaXQoW1skMV1dLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgW2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Li8tXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIFtBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl9fX10pXSwKLS0gICAgW2dsX01PRFVMRV9JTkRJQ0FUT1JfQ09ORElUSU9OXSkKLS1dKQotLQotLSMgZ2xfTU9EVUxFX0lORElDQVRPUl9TRVRfVkFSSUFCTEVfQVVYKFt2YXJpYWJsZV0pCi0tIyBtb2RpZmllcyB0aGUgc2hlbGwgdmFyaWFibGUgdG8gaW5jbHVkZSB0aGUgZ2xfTU9EVUxFX0lORElDQVRPUl9DT05ESVRJT04uCi0tIyBUaGUgc2hlbGwgdmFyaWFibGUncyB2YWx1ZSBpcyBhIEMgcHJlcHJvY2Vzc29yIGV4cHJlc3Npb24gdGhhdCBldmFsdWF0ZXMKLS0jIHRvIDAgb3IgMS4KLS1BQ19ERUZVTihbZ2xfTU9EVUxFX0lORElDQVRPUl9TRVRfVkFSSUFCTEVfQVVYXSwKLS1bCi0tICBtNF9pZihtNF9kZWZuKFtnbF9NT0RVTEVfSU5ESUNBVE9SX0NPTkRJVElPTl0pLCBbMV0sCi0tICAgIFsKLS0gICAgIGRubCBTaW1wbGlmeSB0aGUgZXhwcmVzc2lvbiBWQUxVRSB8fCAxIHRvIDEuCi0tICAgICAkMT0xCi0tICAgIF0sCi0tICAgIFtnbF9NT0RVTEVfSU5ESUNBVE9SX1NFVF9WQVJJQUJMRV9BVVhfT1IoWyQxXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ2xfTU9EVUxFX0lORElDQVRPUl9DT05ESVRJT05dKV0pCi0tXSkKLS0KLS0jIGdsX01PRFVMRV9JTkRJQ0FUT1JfU0VUX1ZBUklBQkxFX0FVWF9PUihbdmFyaWFibGVdLCBbY29uZGl0aW9uXSkKLS0jIG1vZGlmaWVzIHRoZSBzaGVsbCB2YXJpYWJsZSB0byBpbmNsdWRlIHRoZSBnaXZlbiBjb25kaXRpb24uICBUaGUgc2hlbGwKLS0jIHZhcmlhYmxlJ3MgdmFsdWUgaXMgYSBDIHByZXByb2Nlc3NvciBleHByZXNzaW9uIHRoYXQgZXZhbHVhdGVzIHRvIDAgb3IgMS4KLS1BQ19ERUZVTihbZ2xfTU9EVUxFX0lORElDQVRPUl9TRVRfVkFSSUFCTEVfQVVYX09SXSwKLS1bCi0tICBkbmwgU2ltcGxpZnkgdGhlIGV4cHJlc3Npb24gMSB8fCBDT05ESVRJT04gdG8gMS4KLS0gIGlmIHRlc3QgIiRbXSQxIiAhPSAxOyB0aGVuCi0tICAgIGRubCBTaW1wbGlmeSB0aGUgZXhwcmVzc2lvbiAwIHx8IENPTkRJVElPTiB0byBDT05ESVRJT04uCi0tICAgIGlmIHRlc3QgIiRbXSQxIiA9IDA7IHRoZW4KLS0gICAgICAkMT0kMgotLSAgICBlbHNlCi0tICAgICAgJDE9IigkW10kMSB8fCAkMikiCi0tICAgIGZpCi0tICBmaQotKyAgR05VTElCX1tdbTRfdHJhbnNsaXQoW1skMV1dLAotKyAgICBbYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXouLy1dLAotKyAgICBbQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfX19dKT1nbF9NT0RVTEVfSU5ESUNBVE9SX0NPTkRJVElPTgotIF0pCi0gCi0gIyBnbF9NT0RVTEVfSU5ESUNBVE9SKFttb2R1bGVuYW1lXSkKLUBAIC0yMTEsMzUgKzE1MSw2IEBAIG00X2lmbmRlZihbQVNfVkFSX0lGXSwKLSBbbTRfZGVmaW5lKFtBU19WQVJfSUZdLAotIFtBU19JRihbdGVzdCB4IkFTX1ZBUl9HRVQoWyQxXSkiID0geCIiJDJdLCBbJDNdLCBbJDRdKV0pXSkKLSAKLS0jIGdsX1BST0dfQVJfUkFOTElCCi0tIyBEZXRlcm1pbmVzIHRoZSB2YWx1ZXMgZm9yIEFSLCBBUkZMQUdTLCBSQU5MSUIgdGhhdCBmaXQgd2l0aCB0aGUgY29tcGlsZXIuCi0tQUNfREVGVU4oW2dsX1BST0dfQVJfUkFOTElCXSwKLS1bCi0tICBkbmwgTWluaXggMyBjb21lcyB3aXRoIHR3byB0b29sY2hhaW5zOiBUaGUgQW1zdGVyZGFtIENvbXBpbGVyIEtpdCBjb21waWxlcgotLSAgZG5sIGFzICJjYyIsIGFuZCBHQ0MgYXMgImdjYyIuIFRoZXkgaGF2ZSBkaWZmZXJlbnQgb2JqZWN0IGZpbGUgZm9ybWF0cyBhbmQKLS0gIGRubCBsaWJyYXJ5IGZvcm1hdHMuIEluIHBhcnRpY3VsYXIsIHRoZSBHTlUgYmludXRpbHMgcHJvZ3JhbXMgYXIsIHJhbmxpYgotLSAgZG5sIHByb2R1Y2UgbGlicmFyaWVzIHRoYXQgd29yayBvbmx5IHdpdGggZ2NjLCBub3Qgd2l0aCBjYy4KLS0gIEFDX1JFUVVJUkUoW0FDX1BST0dfQ0NdKQotLSAgQUNfRUdSRVBfQ1BQKFtBbXN0ZXJkYW1dLAotLSAgICBbCi0tI2lmZGVmIF9fQUNLX18KLS1BbXN0ZXJkYW0KLS0jZW5kaWYKLS0gICAgXSwKLS0gICAgW0FSPSdjYyAtYy5hJwotLSAgICAgQVJGTEFHUz0nLW8nCi0tICAgICBSQU5MSUI9JzonCi0tICAgIF0sCi0tICAgIFtkbmwgVXNlIHRoZSBBdXRvbWFrZS1kb2N1bWVudGVkIGRlZmF1bHQgdmFsdWVzIGZvciBBUiBhbmQgQVJGTEFHUy4KLS0gICAgIEFSPSdhcicKLS0gICAgIEFSRkxBR1M9J2NydScKLS0gICAgIGRubCBVc2UgdGhlIHJhbmxpYiBwcm9ncmFtIGlmIGl0IGlzIGF2YWlsYWJsZS4KLS0gICAgIEFDX1BST0dfUkFOTElCCi0tICAgIF0pCi0tICBBQ19TVUJTVChbQVJdKQotLSAgQUNfU1VCU1QoW0FSRkxBR1NdKQotLV0pCi0tCi0gIyBBQ19QUk9HX01LRElSX1AKLSAjIGlzIGEgYmFja3BvcnQgb2YgYXV0b2NvbmYtMi42MCdzIEFDX1BST0dfTUtESVJfUCwgd2l0aCBhIGZpeAotICMgZm9yIGludGVyb3BlcmFiaWxpdHkgd2l0aCBhdXRvbWFrZS0xLjkuNiBmcm9tIGF1dG9jb25mLTIuNjIuCi1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbTQvZ251bGliLWNvbXAubTQgbGliaWNvbnYtMS4xNC9zcmNtNC9nbnVsaWItY29tcC5tNAotLS0tIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9nbnVsaWItY29tcC5tNAkyMDExLTA4LTA3IDA2OjQyOjEyLjAwMDAwMDAwMCAtMDcwMAotKysrIGxpYmljb252LTEuMTQvc3JjbTQvZ251bGliLWNvbXAubTQJMjAxMi0wMS0wOCAwMjowNzo0My45MjI0ODQ2MzAgLTA4MDAKLUBAIC0yNSwxMiArMjUsMTQgQEAgQUNfREVGVU4oW2dsX0VBUkxZXSwKLSAgIG00X3BhdHRlcm5fYWxsb3coW15nbF9FUyRdKWRubCBhIHZhbGlkIGxvY2FsZSBuYW1lCi0gICBtNF9wYXR0ZXJuX2FsbG93KFteZ2xfTElCT0JKUyRdKWRubCBhIHZhcmlhYmxlCi0gICBtNF9wYXR0ZXJuX2FsbG93KFteZ2xfTFRMSUJPQkpTJF0pZG5sIGEgdmFyaWFibGUKLS0gIEFDX1JFUVVJUkUoW2dsX1BST0dfQVJfUkFOTElCXSkKLSsgIEFDX1JFUVVJUkUoW0FDX1BST0dfUkFOTElCXSkKLSAgIEFDX1JFUVVJUkUoW0FNX1BST0dfQ0NfQ19PXSkKLSAgICMgQ29kZSBmcm9tIG1vZHVsZSBhbGxvY2Etb3B0OgotICAgIyBDb2RlIGZyb20gbW9kdWxlIGFsbG9jYXRvcjoKLSAgICMgQ29kZSBmcm9tIG1vZHVsZSBhcmVhZGxpbms6Ci0rICAjIENvZGUgZnJvbSBtb2R1bGUgYXJnLW5vbm51bGw6Ci0gICAjIENvZGUgZnJvbSBtb2R1bGUgYmluYXJ5LWlvOgotKyAgIyBDb2RlIGZyb20gbW9kdWxlIGMrK2RlZnM6Ci0gICAjIENvZGUgZnJvbSBtb2R1bGUgY2Fub25pY2FsaXplLWxncGw6Ci0gICAjIENvZGUgZnJvbSBtb2R1bGUgY2FyZWFkbGlua2F0OgotICAgIyBDb2RlIGZyb20gbW9kdWxlIGRvc25hbWU6Ci1AQCAtNDYsNyArNDgsNiBAQCBBQ19ERUZVTihbZ2xfRUFSTFldLAotICAgIyBDb2RlIGZyb20gbW9kdWxlIGhhdmVsaWI6Ci0gICAjIENvZGUgZnJvbSBtb2R1bGUgaW5jbHVkZV9uZXh0OgotICAgIyBDb2RlIGZyb20gbW9kdWxlIGludHByb3BzOgotLSAgIyBDb2RlIGZyb20gbW9kdWxlIGxhcmdlZmlsZToKLSAgICMgQ29kZSBmcm9tIG1vZHVsZSBsaWJpY29udi1taXNjOgotICAgIyBDb2RlIGZyb20gbW9kdWxlIGxzdGF0OgotICAgIyBDb2RlIGZyb20gbW9kdWxlIG1hbGxvY2E6Ci1AQCAtNjQsMTAgKzY1LDYgQEAgQUNfREVGVU4oW2dsX0VBUkxZXSwKLSAgICMgQ29kZSBmcm9tIG1vZHVsZSBzaWduYWw6Ci0gICAjIENvZGUgZnJvbSBtb2R1bGUgc2lncGlwZToKLSAgICMgQ29kZSBmcm9tIG1vZHVsZSBzaWdwcm9jbWFzazoKLS0gICMgQ29kZSBmcm9tIG1vZHVsZSBzbmlwcGV0L19Ob3JldHVybjoKLS0gICMgQ29kZSBmcm9tIG1vZHVsZSBzbmlwcGV0L2FyZy1ub25udWxsOgotLSAgIyBDb2RlIGZyb20gbW9kdWxlIHNuaXBwZXQvYysrZGVmczoKLS0gICMgQ29kZSBmcm9tIG1vZHVsZSBzbmlwcGV0L3dhcm4tb24tdXNlOgotICAgIyBDb2RlIGZyb20gbW9kdWxlIHNzaXplX3Q6Ci0gICAjIENvZGUgZnJvbSBtb2R1bGUgc3RhdDoKLSAgICMgQ29kZSBmcm9tIG1vZHVsZSBzdGRib29sOgotQEAgLTc3LDcgKzc0LDYgQEAgQUNfREVGVU4oW2dsX0VBUkxZXSwKLSAgICMgQ29kZSBmcm9tIG1vZHVsZSBzdGRsaWI6Ci0gICAjIENvZGUgZnJvbSBtb2R1bGUgc3RyZXE6Ci0gICAjIENvZGUgZnJvbSBtb2R1bGUgc3RyZXJyb3I6Ci0tICAjIENvZGUgZnJvbSBtb2R1bGUgc3RyZXJyb3Itb3ZlcnJpZGU6Ci0gICAjIENvZGUgZnJvbSBtb2R1bGUgc3RyaW5nOgotICAgIyBDb2RlIGZyb20gbW9kdWxlIHN5c19zdGF0OgotICAgIyBDb2RlIGZyb20gbW9kdWxlIHRpbWU6Ci1AQCAtODcsNiArODMsNyBAQCBBQ19ERUZVTihbZ2xfRUFSTFldLAotICAgIyBDb2RlIGZyb20gbW9kdWxlIHVuaXdpZHRoL3dpZHRoOgotICAgIyBDb2RlIGZyb20gbW9kdWxlIHVubG9ja2VkLWlvOgotICAgIyBDb2RlIGZyb20gbW9kdWxlIHZlcmlmeToKLSsgICMgQ29kZSBmcm9tIG1vZHVsZSB3YXJuLW9uLXVzZToKLSAgICMgQ29kZSBmcm9tIG1vZHVsZSB4YWxsb2M6Ci0gICAjIENvZGUgZnJvbSBtb2R1bGUgeHJlYWRsaW5rOgotIF0pCi1AQCAtMTA5LDkgKzEwNiw2IEBAIEFDX0RFRlVOKFtnbF9JTklUXSwKLSAgIGdsX3NvdXJjZV9iYXNlPSdzcmNsaWInCi0gZ2xfRlVOQ19BTExPQ0EKLSBnbF9DQU5PTklDQUxJWkVfTEdQTAotLWlmIHRlc3QgJEhBVkVfQ0FOT05JQ0FMSVpFX0ZJTEVfTkFNRSA9IDAgfHwgdGVzdCAkUkVQTEFDRV9DQU5PTklDQUxJWkVfRklMRV9OQU1FID0gMTsgdGhlbgotLSAgQUNfTElCT0JKKFtjYW5vbmljYWxpemUtbGdwbF0pCi0tZmkKLSBnbF9NT0RVTEVfSU5ESUNBVE9SKFtjYW5vbmljYWxpemUtbGdwbF0pCi0gZ2xfU1RETElCX01PRFVMRV9JTkRJQ0FUT1IoW2Nhbm9uaWNhbGl6ZV9maWxlX25hbWVdKQotIGdsX1NURExJQl9NT0RVTEVfSU5ESUNBVE9SKFtyZWFscGF0aF0pCi1AQCAtMTIxLDEwICsxMTUsNiBAQCBnbF9FTlZJUk9OCi0gZ2xfVU5JU1REX01PRFVMRV9JTkRJQ0FUT1IoW2Vudmlyb25dKQotIGdsX0hFQURFUl9FUlJOT19ICi0gZ2xfRVJST1IKLS1pZiB0ZXN0ICRhY19jdl9saWJfZXJyb3JfYXRfbGluZSA9IG5vOyB0aGVuCi0tICBBQ19MSUJPQkooW2Vycm9yXSkKLS0gIGdsX1BSRVJFUV9FUlJPUgotLWZpCi0gbTRfaWZkZWYoW0FNX1hHRVRURVhUX09QVElPTl0sCi0gICBbQU1fXVtYR0VUVEVYVF9PUFRJT04oWy0tZmxhZz1lcnJvcjozOmMtZm9ybWF0XSkKLSAgICBBTV9dW1hHRVRURVhUX09QVElPTihbLS1mbGFnPWVycm9yX2F0X2xpbmU6NTpjLWZvcm1hdF0pXSkKLUBAIC0xMzQsNDMgKzEyNCwyNiBAQCBBTV9HTlVfR0VUVEVYVF9WRVJTSU9OKFswLjE4LjFdKQotIEFDX1NVQlNUKFtMSUJJTlRMXSkKLSBBQ19TVUJTVChbTFRMSUJJTlRMXSkKLSBnbF9GVU5DX0xTVEFUCi0taWYgdGVzdCAkUkVQTEFDRV9MU1RBVCA9IDE7IHRoZW4KLS0gIEFDX0xJQk9CSihbbHN0YXRdKQotLSAgZ2xfUFJFUkVRX0xTVEFUCi0tZmkKLSBnbF9TWVNfU1RBVF9NT0RVTEVfSU5ESUNBVE9SKFtsc3RhdF0pCi0gZ2xfTUFMTE9DQQotIEFDX1RZUEVfTUJTVEFURV9UCi0gZ2xfRlVOQ19NRU1NT1ZFCi0taWYgdGVzdCAkYWNfY3ZfZnVuY19tZW1tb3ZlID0gbm87IHRoZW4KLS0gIEFDX0xJQk9CSihbbWVtbW92ZV0pCi0tICBnbF9QUkVSRVFfTUVNTU9WRQotLWZpCi0gZ2xfTVVMVElBUkNICi0gZ2xfUEFUSE1BWAotIEFDX0NIRUNLX0RFQ0xTKFtwcm9ncmFtX2ludm9jYXRpb25fbmFtZV0sIFtdLCBbXSwgWyNpbmNsdWRlIDxlcnJuby5oPl0pCi0gQUNfQ0hFQ0tfREVDTFMoW3Byb2dyYW1faW52b2NhdGlvbl9zaG9ydF9uYW1lXSwgW10sIFtdLCBbI2luY2x1ZGUgPGVycm5vLmg+XSkKLSBnbF9GVU5DX1JFQUQKLS1pZiB0ZXN0ICRSRVBMQUNFX1JFQUQgPSAxOyB0aGVuCi0tICBBQ19MSUJPQkooW3JlYWRdKQotLWZpCi0gZ2xfVU5JU1REX01PRFVMRV9JTkRJQ0FUT1IoW3JlYWRdKQotIGdsX0ZVTkNfUkVBRExJTksKLS1pZiB0ZXN0ICRIQVZFX1JFQURMSU5LID0gMCB8fCB0ZXN0ICRSRVBMQUNFX1JFQURMSU5LID0gMTsgdGhlbgotLSAgQUNfTElCT0JKKFtyZWFkbGlua10pCi0tICBnbF9QUkVSRVFfUkVBRExJTksKLS1maQotIGdsX1VOSVNURF9NT0RVTEVfSU5ESUNBVE9SKFtyZWFkbGlua10pCi0gZ2xfUkVMT0NBVEFCTEUoWyRnbF9zb3VyY2VfYmFzZV0pCi0taWYgdGVzdCAkUkVMT0NBVEFCTEUgPSB5ZXM7IHRoZW4KLS0gIEFDX0xJQk9CSihbcHJvZ3JlbG9jXSkKLS1maQotIGdsX0ZVTkNfUkVBRExJTktfU0VQQVJBVEUKLSBnbF9DQU5PTklDQUxJWkVfTEdQTF9TRVBBUkFURQotIGdsX01BTExPQ0EKLS1nbF9SRUxPQ0FUQUJMRV9MSUJSQVJZCi0rZ2xfUkVMT0NBVEFCTEVfTElCUkFSWV9TRVBBUkFURQotIGdsX0ZVTkNfU0VURU5WX1NFUEFSQVRFCi0tZ2xfUFJFUkVRX1NBRkVfUkVBRAotK2dsX0ZVTkNfU1RSRVJST1JfU0VQQVJBVEUKLStnbF9TQUZFX1JFQUQKLSBnbF9TSUdOQUxfSAotIGdsX1NJR05BTF9TSUdQSVBFCi0gZG5sIERlZmluZSB0aGUgQyBtYWNybyBHTlVMSUJfU0lHUElQRSB0byAxLgotQEAgLTE4NiwxNyArMTU5LDkgQEAgZG5sIERlZmluZSB0aGUgc3Vic3RpdHV0ZWQgdmFyaWFibGUgR05VTAotIEFDX1JFUVVJUkUoW2dsX1VOSVNURF9IX0RFRkFVTFRTXSkKLSBHTlVMSUJfVU5JU1REX0hfU0lHUElQRT0xCi0gZ2xfU0lHTkFMQkxPQ0tJTkcKLS1pZiB0ZXN0ICRIQVZFX1BPU0lYX1NJR05BTEJMT0NLSU5HID0gMDsgdGhlbgotLSAgQUNfTElCT0JKKFtzaWdwcm9jbWFza10pCi0tICBnbF9QUkVSRVFfU0lHUFJPQ01BU0sKLS1maQotIGdsX1NJR05BTF9NT0RVTEVfSU5ESUNBVE9SKFtzaWdwcm9jbWFza10pCi0gZ3RfVFlQRV9TU0laRV9UCi0gZ2xfRlVOQ19TVEFUCi0taWYgdGVzdCAkUkVQTEFDRV9TVEFUID0gMTsgdGhlbgotLSAgQUNfTElCT0JKKFtzdGF0XSkKLS0gIGdsX1BSRVJFUV9TVEFUCi0tZmkKLSBnbF9TWVNfU1RBVF9NT0RVTEVfSU5ESUNBVE9SKFtzdGF0XSkKLSBBTV9TVERCT09MX0gKLSBnbF9TVERERUZfSAotQEAgLTIwNCwxNyArMTY5LDcgQEAgZ2xfU1RESU5UX0gKLSBnbF9TVERJT19ICi0gZ2xfU1RETElCX0gKLSBnbF9GVU5DX1NUUkVSUk9SCi0taWYgdGVzdCAkUkVQTEFDRV9TVFJFUlJPUiA9IDE7IHRoZW4KLS0gIEFDX0xJQk9CSihbc3RyZXJyb3JdKQotLWZpCi0tZ2xfTU9EVUxFX0lORElDQVRPUihbc3RyZXJyb3JdKQotIGdsX1NUUklOR19NT0RVTEVfSU5ESUNBVE9SKFtzdHJlcnJvcl0pCi0tQUNfUkVRVUlSRShbZ2xfSEVBREVSX0VSUk5PX0hdKQotLUFDX1JFUVVJUkUoW2dsX0ZVTkNfU1RSRVJST1JfMF0pCi0taWYgdGVzdCAtbiAiJEVSUk5PX0giIHx8IHRlc3QgJFJFUExBQ0VfU1RSRVJST1JfMCA9IDE7IHRoZW4KLS0gIEFDX0xJQk9CSihbc3RyZXJyb3Itb3ZlcnJpZGVdKQotLSAgZ2xfUFJFUkVRX1NZU19IX1dJTlNPQ0syCi0tZmkKLSBnbF9IRUFERVJfU1RSSU5HX0gKLSBnbF9IRUFERVJfU1lTX1NUQVRfSAotIEFDX1BST0dfTUtESVJfUAotQEAgLTM2NCwxNCArMzE5LDEzIEBAIEFDX0RFRlVOKFtnbHRlc3RzX0xJQlNPVVJDRVNdLCBbCi0gIyBUaGlzIG1hY3JvIHJlY29yZHMgdGhlIGxpc3Qgb2YgZmlsZXMgd2hpY2ggaGF2ZSBiZWVuIGluc3RhbGxlZCBieQotICMgZ251bGliLXRvb2wgYW5kIG1heSBiZSByZW1vdmVkIGJ5IGZ1dHVyZSBnbnVsaWItdG9vbCBpbnZvY2F0aW9ucy4KLSBBQ19ERUZVTihbZ2xfRklMRV9MSVNUXSwgWwotKyAgYnVpbGQtYXV4L2FyZy1ub25udWxsLmgKLSsgIGJ1aWxkLWF1eC9jKytkZWZzLmgKLSAgIGJ1aWxkLWF1eC9jb25maWcubGlicGF0aAotICAgYnVpbGQtYXV4L2NvbmZpZy5ycGF0aAotICAgYnVpbGQtYXV4L2luc3RhbGwtcmVsb2MKLSAgIGJ1aWxkLWF1eC9yZWxvYy1sZGZsYWdzCi0tICBidWlsZC1hdXgvc25pcHBldC9fTm9yZXR1cm4uaAotLSAgYnVpbGQtYXV4L3NuaXBwZXQvYXJnLW5vbm51bGwuaAotLSAgYnVpbGQtYXV4L3NuaXBwZXQvYysrZGVmcy5oCi0tICBidWlsZC1hdXgvc25pcHBldC93YXJuLW9uLXVzZS5oCi0rICBidWlsZC1hdXgvd2Fybi1vbi11c2UuaAotICAgZG9jL3JlbG9jYXRhYmxlLnRleGkKLSAgIGxpYi9hbGxvY2EuaW4uaAotICAgbGliL2FsbG9jYXRvci5jCi1AQCAtNDE5LDggKzM3Myw2IEBAIEFDX0RFRlVOKFtnbF9GSUxFX0xJU1RdLCBbCi0gICBsaWIvc3RkaW8uaW4uaAotICAgbGliL3N0ZGxpYi5pbi5oCi0gICBsaWIvc3RyZXEuaAotLSAgbGliL3N0cmVycm9yLW92ZXJyaWRlLmMKLS0gIGxpYi9zdHJlcnJvci1vdmVycmlkZS5oCi0gICBsaWIvc3RyZXJyb3IuYwotICAgbGliL3N0cmluZy5pbi5oCi0gICBsaWIvc3lzX3N0YXQuaW4uaAotQEAgLTQ2Myw3ICs0MTUsNiBAQCBBQ19ERUZVTihbZ2xfRklMRV9MSVNUXSwgWwotICAgbTQvaW50bWF4Lm00Ci0gICBtNC9pbnR0eXBlcy1wcmkubTQKLSAgIG00L2ludHR5cGVzX2gubTQKLS0gIG00L2xhcmdlZmlsZS5tNAotICAgbTQvbGNtZXNzYWdlLm00Ci0gICBtNC9saWItbGQubTQKLSAgIG00L2xpYi1saW5rLm00Ci1AQCAtNTAyLDcgKzQ1Myw2IEBAIEFDX0RFRlVOKFtnbF9GSUxFX0xJU1RdLCBbCi0gICBtNC9zdGRsaWJfaC5tNAotICAgbTQvc3RyZXJyb3IubTQKLSAgIG00L3N0cmluZ19oLm00Ci0tICBtNC9zeXNfc29ja2V0X2gubTQKLSAgIG00L3N5c19zdGF0X2gubTQKLSAgIG00L3RocmVhZGxpYi5tNAotICAgbTQvdGltZV9oLm00Ci1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbTQvaW5jbHVkZV9uZXh0Lm00IGxpYmljb252LTEuMTQvc3JjbTQvaW5jbHVkZV9uZXh0Lm00Ci0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L2luY2x1ZGVfbmV4dC5tNAkyMDExLTA4LTA3IDA2OjQyOjA3LjAwMDAwMDAwMCAtMDcwMAotKysrIGxpYmljb252LTEuMTQvc3JjbTQvaW5jbHVkZV9uZXh0Lm00CTIwMTItMDEtMDggMDI6MDc6NDAuNjUwNDg0NDcyIC0wODAwCi1AQCAtMSw0ICsxLDQgQEAKLS0jIGluY2x1ZGVfbmV4dC5tNCBzZXJpYWwgMjAKLSsjIGluY2x1ZGVfbmV4dC5tNCBzZXJpYWwgMTgKLSBkbmwgQ29weXJpZ2h0IChDKSAyMDA2LTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCi0gZG5sIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCi1AQCAtMTc1LDEzICsxNzUsMTEgQEAgQUNfREVGVU4oW2dsX05FWFRfSEVBREVSU19JTlRFUk5BTF0sCi0gICAgIFtBQ19DSEVDS19IRUFERVJTX09OQ0UoWyQxXSkKLSAgICAgXSkKLSAKLS1kbmwgRklYTUU6IGdsX25leHRfaGVhZGVyIGFuZCBnbF9oZWFkZXJfZXhpc3RzIG11c3QgYmUgdXNlZCB1bnF1b3RlZAotLWRubCB1bnRpbCB3ZSBjYW4gYXNzdW1lIGF1dG9jb25mIDIuNjQgb3IgbmV3ZXIuCi0gICBtNF9mb3JlYWNoX3coW2dsX0hFQURFUl9OQU1FXSwgWyQxXSwKLSAgICAgW0FTX1ZBUl9QVVNIREVGKFtnbF9uZXh0X2hlYWRlcl0sCi0gICAgICAgICAgICAgICAgICAgICBbZ2xfY3ZfbmV4dF9dbTRfZGVmbihbZ2xfSEVBREVSX05BTUVdKSkKLSAgICAgIGlmIHRlc3QgJGdsX2N2X2hhdmVfaW5jbHVkZV9uZXh0ID0geWVzOyB0aGVuCi0tICAgICAgIEFTX1ZBUl9TRVQoZ2xfbmV4dF9oZWFkZXIsIFsnPCdnbF9IRUFERVJfTkFNRSc+J10pCi0rICAgICAgIEFTX1ZBUl9TRVQoW2dsX25leHRfaGVhZGVyXSwgWyc8J2dsX0hFQURFUl9OQU1FJz4nXSkKLSAgICAgIGVsc2UKLSAgICAgICAgQUNfQ0FDSEVfQ0hFQ0soCi0gICAgICAgICAgW2Fic29sdXRlIG5hbWUgb2YgPF1tNF9kZWZuKFtnbF9IRUFERVJfTkFNRV0pWz5dLAotQEAgLTIxMCw3ICsyMDgsNyBAQCBkbmwgdW50aWwgd2UgY2FuIGFzc3VtZSBhdXRvY29uZiAyLjY0IG9yCi0gICAgICAgICAgICAgICAgZG5sIGV2YWwgaXMgbmVjZXNzYXJ5IHRvIGV4cGFuZCBnbF9hYnNuYW1lX2NwcC4KLSAgICAgICAgICAgICAgICBkbmwgVWx0cml4IGFuZCBQeXJhbWlkIHNoIHJlZnVzZSB0byByZWRpcmVjdCBvdXRwdXQgb2YgZXZhbCwKLSAgICAgICAgICAgICAgICBkbmwgc28gdXNlIHN1YnNoZWxsLgotLSAgICAgICAgICAgICAgIEFTX1ZBUl9TRVQoZ2xfbmV4dF9oZWFkZXIsCi0rICAgICAgICAgICAgICAgQVNfVkFSX1NFVChbZ2xfbmV4dF9oZWFkZXJdLAotICAgICAgICAgICAgICAgICAgWyciJ2AoZXZhbCAiJGdsX2Fic25hbWVfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiZBU19NRVNTQUdFX0xPR19GRCB8Ci0gICAgICAgICAgICAgICAgICAgc2VkIC1uICdcIy9dbTRfZGVmbihbZ2xfSEVBREVSX05BTUVdKVsjewotICAgICAgICAgICAgICAgICAgICAgcyMuKiJcKC4qL11tNF9kZWZuKFtnbF9IRUFERVJfTkFNRV0pW1wpIi4qI1wxIwotQEAgLTIyMCwyMCArMjE4LDIwIEBAIGRubCB1bnRpbCB3ZSBjYW4gYXNzdW1lIGF1dG9jb25mIDIuNjQgb3IKLSAgICAgICAgICAgICAgICAgICB9J2AnIiddKQotICAgICAgICAgICBtNF9pZihbJDJdLCBbY2hlY2tdLAotICAgICAgICAgICAgIFtlbHNlCi0tICAgICAgICAgICAgICAgQVNfVkFSX1NFVChnbF9uZXh0X2hlYWRlciwgWyc8J2dsX0hFQURFUl9OQU1FJz4nXSkKLSsgICAgICAgICAgICAgICBBU19WQVJfU0VUKFtnbF9uZXh0X2hlYWRlcl0sIFsnPCdnbF9IRUFERVJfTkFNRSc+J10pCi0gICAgICAgICAgICAgIGZpCi0gICAgICAgICAgICAgXSkKLSAgICAgICAgICBdKQotICAgICAgZmkKLSAgICAgIEFDX1NVQlNUKAotICAgICAgICBBU19UUl9DUFAoW05FWFRfXW00X2RlZm4oW2dsX0hFQURFUl9OQU1FXSkpLAotLSAgICAgICBbQVNfVkFSX0dFVChnbF9uZXh0X2hlYWRlcildKQotKyAgICAgICBbQVNfVkFSX0dFVChbZ2xfbmV4dF9oZWFkZXJdKV0pCi0gICAgICBpZiB0ZXN0ICRnbF9jdl9oYXZlX2luY2x1ZGVfbmV4dCA9IHllcyB8fCB0ZXN0ICRnbF9jdl9oYXZlX2luY2x1ZGVfbmV4dCA9IGJ1Z2d5OyB0aGVuCi0gICAgICAgICMgSU5DTFVERV9ORVhUX0FTX0ZJUlNUX0RJUkVDVElWRT0naW5jbHVkZV9uZXh0JwotICAgICAgICBnbF9uZXh0X2FzX2ZpcnN0X2RpcmVjdGl2ZT0nPCdnbF9IRUFERVJfTkFNRSc+JwotICAgICAgZWxzZQotICAgICAgICAjIElOQ0xVREVfTkVYVF9BU19GSVJTVF9ESVJFQ1RJVkU9J2luY2x1ZGUnCi0tICAgICAgIGdsX25leHRfYXNfZmlyc3RfZGlyZWN0aXZlPUFTX1ZBUl9HRVQoZ2xfbmV4dF9oZWFkZXIpCi0rICAgICAgIGdsX25leHRfYXNfZmlyc3RfZGlyZWN0aXZlPUFTX1ZBUl9HRVQoW2dsX25leHRfaGVhZGVyXSkKLSAgICAgIGZpCi0gICAgICBBQ19TVUJTVCgKLSAgICAgICAgQVNfVFJfQ1BQKFtORVhUX0FTX0ZJUlNUX0RJUkVDVElWRV9dbTRfZGVmbihbZ2xfSEVBREVSX05BTUVdKSksCi1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbTQvbGFyZ2VmaWxlLm00IGxpYmljb252LTEuMTQvc3JjbTQvbGFyZ2VmaWxlLm00Ci0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L2xhcmdlZmlsZS5tNAkyMDExLTA4LTA3IDA2OjQyOjA3LjAwMDAwMDAwMCAtMDcwMAotKysrIGxpYmljb252LTEuMTQvc3JjbTQvbGFyZ2VmaWxlLm00CTE5NjktMTItMzEgMTY6MDA6MDAuMDAwMDAwMDAwIC0wODAwCi1AQCAtMSwxMDQgKzAsMCBAQAotLSMgRW5hYmxlIGxhcmdlIGZpbGVzIG9uIHN5c3RlbXMgd2hlcmUgdGhpcyBpcyBub3QgdGhlIGRlZmF1bHQuCi0tCi0tIyBDb3B5cmlnaHQgMTk5Mi0xOTk2LCAxOTk4LTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0tIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgotLSMgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKLS0jIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KLS0KLS0jIFRoZSBmb2xsb3dpbmcgaW1wbGVtZW50YXRpb24gd29ya3MgYXJvdW5kIGEgcHJvYmxlbSBpbiBhdXRvY29uZiA8PSAyLjY4OwotLSMgQUNfU1lTX0xBUkdFRklMRSBkb2VzIG5vdCBjb25maWd1cmUgZm9yIGxhcmdlIGlub2RlcyBvbiBNYWMgT1MgWCAxMC41LgotLW00X3ZlcnNpb25fcHJlcmVxKFsyLjY5XSwgW10gLFsKLS0KLS0jIF9BQ19TWVNfTEFSR0VGSUxFX1RFU1RfSU5DTFVERVMKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS1tNF9kZWZpbmUoW19BQ19TWVNfTEFSR0VGSUxFX1RFU1RfSU5DTFVERVNdLAotLVtAJTpAaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0tIC8qIENoZWNrIHRoYXQgb2ZmX3QgY2FuIHJlcHJlc2VudCAyKio2MyAtIDEgY29ycmVjdGx5LgotLSAgICBXZSBjYW4ndCBzaW1wbHkgZGVmaW5lIExBUkdFX09GRl9UIHRvIGJlIDkyMjMzNzIwMzY4NTQ3NzU4MDcsCi0tICAgIHNpbmNlIHNvbWUgQysrIGNvbXBpbGVycyBtYXNxdWVyYWRpbmcgYXMgQyBjb21waWxlcnMKLS0gICAgaW5jb3JyZWN0bHkgcmVqZWN0IDkyMjMzNzIwMzY4NTQ3NzU4MDcuICAqLwotLUAlOkBkZWZpbmUgTEFSR0VfT0ZGX1QgKCgob2ZmX3QpIDEgPDwgNjIpIC0gMSArICgob2ZmX3QpIDEgPDwgNjIpKQotLSAgaW50IG9mZl90X2lzX2xhcmdlW1soTEFSR0VfT0ZGX1QgJSAyMTQ3NDgzNjI5ID09IDcyMQotLQkJICAgICAgICYmIExBUkdFX09GRl9UICUgMjE0NzQ4MzY0NyA9PSAxKQotLQkJICAgICAgPyAxIDogLTFdXTtbXWRubAotLV0pCi0tCi0tCi0tIyBfQUNfU1lTX0xBUkdFRklMRV9NQUNST19WQUxVRShDLU1BQ1JPLCBWQUxVRSwKLS0jCQkJCUNBQ0hFLVZBUiwKLS0jCQkJCURFU0NSSVBUSU9OLAotLSMJCQkJUFJPTE9HVUUsIFtGVU5DVElPTi1CT0RZXSkKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0tbTRfZGVmaW5lKFtfQUNfU1lTX0xBUkdFRklMRV9NQUNST19WQUxVRV0sCi0tW0FDX0NBQ0hFX0NIRUNLKFtmb3IgJDEgdmFsdWUgbmVlZGVkIGZvciBsYXJnZSBmaWxlc10sIFskM10sCi0tW3doaWxlIDo7IGRvCi0tICBtNF9pZnZhbChbJDZdLCBbQUNfTElOS19JRkVMU0VdLCBbQUNfQ09NUElMRV9JRkVMU0VdKSgKLS0gICAgW0FDX0xBTkdfUFJPR1JBTShbJDVdLCBbJDZdKV0sCi0tICAgIFskMz1ubzsgYnJlYWtdKQotLSAgbTRfaWZ2YWwoWyQ2XSwgW0FDX0xJTktfSUZFTFNFXSwgW0FDX0NPTVBJTEVfSUZFTFNFXSkoCi0tICAgIFtBQ19MQU5HX1BST0dSQU0oW0AlOkBkZWZpbmUgJDEgJDIKLS0kNV0sIFskNl0pXSwKLS0gICAgWyQzPSQyOyBicmVha10pCi0tICAkMz11bmtub3duCi0tICBicmVhawotLWRvbmVdKQotLWNhc2UgJCQzIGluICMoCi0tICBubyB8IHVua25vd24pIDs7Ci0tICAqKSBBQ19ERUZJTkVfVU5RVU9URUQoWyQxXSwgWyQkM10sIFskNF0pOzsKLS1lc2FjCi0tcm0gLXJmIGNvbmZ0ZXN0KltdZG5sCi0tXSkjIF9BQ19TWVNfTEFSR0VGSUxFX01BQ1JPX1ZBTFVFCi0tCi0tCi0tIyBBQ19TWVNfTEFSR0VGSUxFCi0tIyAtLS0tLS0tLS0tLS0tLS0tCi0tIyBCeSBkZWZhdWx0LCBtYW55IGhvc3RzIHdvbid0IGxldCBwcm9ncmFtcyBhY2Nlc3MgbGFyZ2UgZmlsZXM7Ci0tIyBvbmUgbXVzdCB1c2Ugc3BlY2lhbCBjb21waWxlciBvcHRpb25zIHRvIGdldCBsYXJnZS1maWxlIGFjY2VzcyB0byB3b3JrLgotLSMgRm9yIG1vcmUgZGV0YWlscyBhYm91dCB0aGlzIGJyYWluIGRhbWFnZSBwbGVhc2Ugc2VlOgotLSMgaHR0cDovL3d3dy51bml4LXN5c3RlbXMub3JnL3ZlcnNpb24yL3doYXRzbmV3L2xmczIwbWFyLmh0bWwKLS1BQ19ERUZVTihbQUNfU1lTX0xBUkdFRklMRV0sCi0tW0FDX0FSR19FTkFCTEUobGFyZ2VmaWxlLAotLQkgICAgICAgWyAgLS1kaXNhYmxlLWxhcmdlZmlsZSAgICAgb21pdCBzdXBwb3J0IGZvciBsYXJnZSBmaWxlc10pCi0taWYgdGVzdCAiJGVuYWJsZV9sYXJnZWZpbGUiICE9IG5vOyB0aGVuCi0tCi0tICBBQ19DQUNIRV9DSEVDSyhbZm9yIHNwZWNpYWwgQyBjb21waWxlciBvcHRpb25zIG5lZWRlZCBmb3IgbGFyZ2UgZmlsZXNdLAotLSAgICBhY19jdl9zeXNfbGFyZ2VmaWxlX0NDLAotLSAgICBbYWNfY3Zfc3lzX2xhcmdlZmlsZV9DQz1ubwotLSAgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCi0tICAgICAgIGFjX3NhdmVfQ0M9JENDCi0tICAgICAgIHdoaWxlIDo7IGRvCi0tCSAjIElSSVggNi4yIGFuZCBsYXRlciBkbyBub3Qgc3VwcG9ydCBsYXJnZSBmaWxlcyBieSBkZWZhdWx0LAotLQkgIyBzbyB1c2UgdGhlIEMgY29tcGlsZXIncyAtbjMyIG9wdGlvbiBpZiB0aGF0IGhlbHBzLgotLQkgQUNfTEFOR19DT05GVEVTVChbQUNfTEFOR19QUk9HUkFNKFtfQUNfU1lTX0xBUkdFRklMRV9URVNUX0lOQ0xVREVTXSldKQotLQkgQUNfQ09NUElMRV9JRkVMU0UoW10sIFticmVha10pCi0tCSBDQz0iJENDIC1uMzIiCi0tCSBBQ19DT01QSUxFX0lGRUxTRShbXSwgW2FjX2N2X3N5c19sYXJnZWZpbGVfQ0M9JyAtbjMyJzsgYnJlYWtdKQotLQkgYnJlYWsKLS0gICAgICAgZG9uZQotLSAgICAgICBDQz0kYWNfc2F2ZV9DQwotLSAgICAgICBybSAtZiBjb25mdGVzdC4kYWNfZXh0Ci0tICAgIGZpXSkKLS0gIGlmIHRlc3QgIiRhY19jdl9zeXNfbGFyZ2VmaWxlX0NDIiAhPSBubzsgdGhlbgotLSAgICBDQz0kQ0MkYWNfY3Zfc3lzX2xhcmdlZmlsZV9DQwotLSAgZmkKLS0KLS0gIF9BQ19TWVNfTEFSR0VGSUxFX01BQ1JPX1ZBTFVFKF9GSUxFX09GRlNFVF9CSVRTLCA2NCwKLS0gICAgYWNfY3Zfc3lzX2ZpbGVfb2Zmc2V0X2JpdHMsCi0tICAgIFtOdW1iZXIgb2YgYml0cyBpbiBhIGZpbGUgb2Zmc2V0LCBvbiBob3N0cyB3aGVyZSB0aGlzIGlzIHNldHRhYmxlLl0sCi0tICAgIFtfQUNfU1lTX0xBUkdFRklMRV9URVNUX0lOQ0xVREVTXSkKLS0gIGlmIHRlc3QgJGFjX2N2X3N5c19maWxlX29mZnNldF9iaXRzID0gdW5rbm93bjsgdGhlbgotLSAgICBfQUNfU1lTX0xBUkdFRklMRV9NQUNST19WQUxVRShfTEFSR0VfRklMRVMsIDEsCi0tICAgICAgYWNfY3Zfc3lzX2xhcmdlX2ZpbGVzLAotLSAgICAgIFtEZWZpbmUgZm9yIGxhcmdlIGZpbGVzLCBvbiBBSVgtc3R5bGUgaG9zdHMuXSwKLS0gICAgICBbX0FDX1NZU19MQVJHRUZJTEVfVEVTVF9JTkNMVURFU10pCi0tICBmaQotLQotLSAgQUhfVkVSQkFUSU0oW19EQVJXSU5fVVNFXzY0X0JJVF9JTk9ERV0sCi0tWy8qIEVuYWJsZSBsYXJnZSBpbm9kZSBudW1iZXJzIG9uIE1hYyBPUyBYLiAgKi8KLS0jaWZuZGVmIF9EQVJXSU5fVVNFXzY0X0JJVF9JTk9ERQotLSMgZGVmaW5lIF9EQVJXSU5fVVNFXzY0X0JJVF9JTk9ERSAxCi0tI2VuZGlmXSkKLS1maQotLV0pIyBBQ19TWVNfTEFSR0VGSUxFCi0tCi0tXSkjIG00X3ZlcnNpb25fcHJlcmVxIDIuNjkKLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9sc3RhdC5tNCBsaWJpY29udi0xLjE0L3NyY200L2xzdGF0Lm00Ci0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L2xzdGF0Lm00CTIwMTEtMDgtMDcgMDY6NDI6MDcuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNtNC9sc3RhdC5tNAkyMDEyLTAxLTA4IDAyOjA3OjQwLjcyMjQ4NDQ3NiAtMDgwMAotQEAgLTEsNCArMSw0IEBACi0tIyBzZXJpYWwgMjMKLSsjIHNlcmlhbCAyMQotIAotICMgQ29weXJpZ2h0IChDKSAxOTk3LTIwMDEsIDIwMDMtMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAjCi1AQCAtMTUsMjggKzE1LDI0IEBAIEFDX0RFRlVOKFtnbF9GVU5DX0xTVEFUXSwKLSAgIGRubCAiI2RlZmluZSBsc3RhdCBzdGF0IiwgYW5kIGxzdGF0LmMgaXMgYSBuby1vcC4KLSAgIEFDX0NIRUNLX0ZVTkNTX09OQ0UoW2xzdGF0XSkKLSAgIGlmIHRlc3QgJGFjX2N2X2Z1bmNfbHN0YXQgPSB5ZXM7IHRoZW4KLS0gICAgQUNfUkVRVUlSRShbZ2xfRlVOQ19MU1RBVF9GT0xMT1dTX1NMQVNIRURfU1lNTElOS10pCi0tICAgIGlmIHRlc3QgJGdsX2N2X2Z1bmNfbHN0YXRfZGVyZWZlcmVuY2VzX3NsYXNoZWRfc3ltbGluayA9IG5vOyB0aGVuCi0rICAgIEFDX1JFUVVJUkUoW0FDX0ZVTkNfTFNUQVRfRk9MTE9XU19TTEFTSEVEX1NZTUxJTktdKQotKyAgICBpZiB0ZXN0ICRhY19jdl9mdW5jX2xzdGF0X2RlcmVmZXJlbmNlc19zbGFzaGVkX3N5bWxpbmsgPSBubzsgdGhlbgotKyAgICAgIGRubCBOb3RlOiBBQ19GVU5DX0xTVEFUX0ZPTExPV1NfU0xBU0hFRF9TWU1MSU5LIGRvZXMgQUNfTElCT0JKKFtsc3RhdF0pLgotICAgICAgIFJFUExBQ0VfTFNUQVQ9MQotICAgICBmaQotKyAgICAjIFByZXJlcXVpc2l0ZXMgb2YgbGliL2xzdGF0LmMuCi0rICAgIEFDX1JFUVVJUkUoW0FDX0NfSU5MSU5FXSkKLSAgIGVsc2UKLSAgICAgSEFWRV9MU1RBVD0wCi0gICBmaQotIF0pCi0gCi0tIyBQcmVyZXF1aXNpdGVzIG9mIGxpYi9sc3RhdC5jLgotLUFDX0RFRlVOKFtnbF9QUkVSRVFfTFNUQVRdLAotKyMgUmVkZWZpbmUgQUNfRlVOQ19MU1RBVF9GT0xMT1dTX1NMQVNIRURfU1lNTElOSywgYmVjYXVzZSBpdCBpcyBubyBsb25nZXIKLSsjIG1haW50YWluZWQgaW4gQXV0b2NvbmYuCi0rQUNfREVGVU4oW0FDX0ZVTkNfTFNUQVRfRk9MTE9XU19TTEFTSEVEX1NZTUxJTktdLAotIFsKLS0gIEFDX1JFUVVJUkUoW0FDX0NfSU5MSU5FXSkKLS0gIDoKLS1dKQotLQotLUFDX0RFRlVOKFtnbF9GVU5DX0xTVEFUX0ZPTExPV1NfU0xBU0hFRF9TWU1MSU5LXSwKLS1bCi0tICBkbmwgV2UgZG9uJ3QgdXNlIEFDX0ZVTkNfTFNUQVRfRk9MTE9XU19TTEFTSEVEX1NZTUxJTksgYW55IG1vcmUsIGJlY2F1c2UgaXQKLS0gIGRubCBpcyBubyBsb25nZXIgbWFpbnRhaW5lZCBpbiBBdXRvY29uZiBhbmQgYmVjYXVzZSBpdCBpbnZva2VzIEFDX0xJQk9CSi4KLSAgIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIGxzdGF0IGNvcnJlY3RseSBoYW5kbGVzIHRyYWlsaW5nIHNsYXNoXSwKLS0gICAgW2dsX2N2X2Z1bmNfbHN0YXRfZGVyZWZlcmVuY2VzX3NsYXNoZWRfc3ltbGlua10sCi0rICAgIFthY19jdl9mdW5jX2xzdGF0X2RlcmVmZXJlbmNlc19zbGFzaGVkX3N5bWxpbmtdLAotICAgICBbcm0gLWYgY29uZnRlc3Quc3ltIGNvbmZ0ZXN0LmZpbGUKLSAgICAgIGVjaG8gPmNvbmZ0ZXN0LmZpbGUKLSAgICAgIGlmIHRlc3QgIiRhc19sbl9zIiA9ICJsbiAtcyIgJiYgbG4gLXMgY29uZnRlc3QuZmlsZSBjb25mdGVzdC5zeW07IHRoZW4KLUBAIC00OSwyMiArNDUsMjUgQEAgQUNfREVGVU4oW2dsX0ZVTkNfTFNUQVRfRk9MTE9XU19TTEFTSEVEXwotICAgICAgICAgICAgICAgICAgaGF2ZSB0byBjb21waWxlIGFuZCB1c2UgdGhlIGxzdGF0IHdyYXBwZXIuICAqLwotICAgICAgICAgICAgICAgcmV0dXJuIGxzdGF0ICgiY29uZnRlc3Quc3ltLyIsICZzYnVmKSA9PSAwOwotICAgICAgICAgICAgIF1dKV0sCi0tICAgICAgICAgW2dsX2N2X2Z1bmNfbHN0YXRfZGVyZWZlcmVuY2VzX3NsYXNoZWRfc3ltbGluaz15ZXNdLAotLSAgICAgICAgIFtnbF9jdl9mdW5jX2xzdGF0X2RlcmVmZXJlbmNlc19zbGFzaGVkX3N5bWxpbms9bm9dLAotKyAgICAgICAgIFthY19jdl9mdW5jX2xzdGF0X2RlcmVmZXJlbmNlc19zbGFzaGVkX3N5bWxpbms9eWVzXSwKLSsgICAgICAgICBbYWNfY3ZfZnVuY19sc3RhdF9kZXJlZmVyZW5jZXNfc2xhc2hlZF9zeW1saW5rPW5vXSwKLSAgICAgICAgICBbIyBXaGVuIGNyb3NzLWNvbXBpbGluZywgYmUgcGVzc2ltaXN0aWMgc28gd2Ugd2lsbCBlbmQgdXAgdXNpbmcgdGhlCi0gICAgICAgICAgICMgcmVwbGFjZW1lbnQgdmVyc2lvbiBvZiBsc3RhdCB0aGF0IGNoZWNrcyBmb3IgdHJhaWxpbmcgc2xhc2hlcyBhbmQKLSAgICAgICAgICAgIyBjYWxscyBsc3RhdCBhIHNlY29uZCB0aW1lIHdoZW4gbmVjZXNzYXJ5LgotLSAgICAgICAgICBnbF9jdl9mdW5jX2xzdGF0X2RlcmVmZXJlbmNlc19zbGFzaGVkX3N5bWxpbms9bm8KLSsgICAgICAgICAgYWNfY3ZfZnVuY19sc3RhdF9kZXJlZmVyZW5jZXNfc2xhc2hlZF9zeW1saW5rPW5vCi0gICAgICAgICAgXSkKLSAgICAgIGVsc2UKLSAgICAgICAgIyBJZiB0aGUgJ2xuIC1zJyBjb21tYW5kIGZhaWxlZCwgdGhlbiB3ZSBwcm9iYWJseSBkb24ndCBldmVuCi0gICAgICAgICMgaGF2ZSBhbiBsc3RhdCBmdW5jdGlvbi4KLS0gICAgICAgZ2xfY3ZfZnVuY19sc3RhdF9kZXJlZmVyZW5jZXNfc2xhc2hlZF9zeW1saW5rPW5vCi0rICAgICAgIGFjX2N2X2Z1bmNfbHN0YXRfZGVyZWZlcmVuY2VzX3NsYXNoZWRfc3ltbGluaz1ubwotICAgICAgZmkKLSAgICAgIHJtIC1mIGNvbmZ0ZXN0LnN5bSBjb25mdGVzdC5maWxlCi0gICAgIF0pCi0tICB0ZXN0ICRnbF9jdl9mdW5jX2xzdGF0X2RlcmVmZXJlbmNlc19zbGFzaGVkX3N5bWxpbmsgPSB5ZXMgJiYKLSsgIHRlc3QgJGFjX2N2X2Z1bmNfbHN0YXRfZGVyZWZlcmVuY2VzX3NsYXNoZWRfc3ltbGluayA9IHllcyAmJgotICAgICBBQ19ERUZJTkVfVU5RVU9URUQoW0xTVEFUX0ZPTExPV1NfU0xBU0hFRF9TWU1MSU5LXSwgWzFdLAotICAgICAgIFtEZWZpbmUgdG8gMSBpZiBgbHN0YXQnIGRlcmVmZXJlbmNlcyBhIHN5bWxpbmsgc3BlY2lmaWVkCi0gICAgICAgIHdpdGggYSB0cmFpbGluZyBzbGFzaC5dKQotKyAgaWYgdGVzdCAieCRhY19jdl9mdW5jX2xzdGF0X2RlcmVmZXJlbmNlc19zbGFzaGVkX3N5bWxpbmsiID0geG5vOyB0aGVuCi0rICAgIEFDX0xJQk9CSihbbHN0YXRdKQotKyAgZmkKLSBdKQotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L21lbW1vdmUubTQgbGliaWNvbnYtMS4xNC9zcmNtNC9tZW1tb3ZlLm00Ci0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L21lbW1vdmUubTQJMjAxMS0wOC0wNyAwNjo0MjowNy4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY200L21lbW1vdmUubTQJMjAxMi0wMS0wOCAwMjowNzo0MC43Mzg0ODQ0NzcgLTA4MDAKLUBAIC0xLDQgKzEsNCBAQAotLSMgbWVtbW92ZS5tNCBzZXJpYWwgNAotKyMgbWVtbW92ZS5tNCBzZXJpYWwgMwotIGRubCBDb3B5cmlnaHQgKEMpIDIwMDIsIDIwMDktMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSBkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KLSBkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKLUBAIC02LDcgKzYsMTAgQEAgZG5sIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsbwotIAotIEFDX0RFRlVOKFtnbF9GVU5DX01FTU1PVkVdLAotIFsKLS0gIEFDX0NIRUNLX0ZVTkNTKFttZW1tb3ZlXSkKLSsgIEFDX1JFUExBQ0VfRlVOQ1MoW21lbW1vdmVdKQotKyAgaWYgdGVzdCAkYWNfY3ZfZnVuY19tZW1tb3ZlID0gbm87IHRoZW4KLSsgICAgZ2xfUFJFUkVRX01FTU1PVkUKLSsgIGZpCi0gXSkKLSAKLSAjIFByZXJlcXVpc2l0ZXMgb2YgbGliL21lbW1vdmUuYy4KLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9wYXRobWF4Lm00IGxpYmljb252LTEuMTQvc3JjbTQvcGF0aG1heC5tNAotLS0tIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9wYXRobWF4Lm00CTIwMTEtMDgtMDcgMDY6NDI6MDcuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNtNC9wYXRobWF4Lm00CTIwMTItMDEtMDggMDI6MDc6NDAuNzU4NDg0NDc4IC0wODAwCi1AQCAtMSw0ICsxLDQgQEAKLS0jIHBhdGhtYXgubTQgc2VyaWFsIDkKLSsjIHBhdGhtYXgubTQgc2VyaWFsIDgKLSBkbmwgQ29weXJpZ2h0IChDKSAyMDAyLTIwMDMsIDIwMDUtMjAwNiwgMjAwOS0yMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSBkbmwgSW5jLgotIGRubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgotQEAgLTgsNSArOCw2IEBAIGRubCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG8KLSBBQ19ERUZVTihbZ2xfUEFUSE1BWF0sCi0gWwotICAgZG5sIFByZXJlcXVpc2l0ZXMgb2YgbGliL3BhdGhtYXguaC4KLSsgIEFDX0NIRUNLX0ZVTkNTX09OQ0UoW3BhdGhjb25mXSkKLSAgIEFDX0NIRUNLX0hFQURFUlNfT05DRShbc3lzL3BhcmFtLmhdKQotIF0pCi1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbTQvcG8ubTQgbGliaWNvbnYtMS4xNC9zcmNtNC9wby5tNAotLS0tIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9wby5tNAkyMDExLTA4LTA3IDA2OjQyOjA3LjAwMDAwMDAwMCAtMDcwMAotKysrIGxpYmljb252LTEuMTQvc3JjbTQvcG8ubTQJMjAxMi0wMS0wOCAwMjowNzo0MC43NjY0ODQ0NzcgLTA4MDAKLUBAIC0xLDQgKzEsNCBAQAotLSMgcG8ubTQgc2VyaWFsIDE3YQotKyMgcG8ubTQgc2VyaWFsIDE3IChnZXR0ZXh0LTAuMTgpCi0gZG5sIENvcHlyaWdodCAoQykgMTk5NS0yMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIGRubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgotIGRubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAotQEAgLTExOCw4ICsxMTgsNyBAQCBjaGFuZ2VxdW90ZShbLF0pZG5sCi0gICAgICAgICBpZiB0ZXN0IC1mICIkYWNfZ2l2ZW5fc3JjZGlyLyRhY19kaXIvUE9URklMRVMuaW4iOyB0aGVuCi0gICAgICAgICAgIHJtIC1mICIkYWNfZGlyL1BPVEZJTEVTIgotICAgICAgICAgICB0ZXN0IC1uICIkYXNfbWUiICYmIGVjaG8gIiRhc19tZTogY3JlYXRpbmcgJGFjX2Rpci9QT1RGSUxFUyIgfHwgZWNobyAiY3JlYXRpbmcgJGFjX2Rpci9QT1RGSUxFUyIKLS0gICAgICAgICAgZ3RfdGFiPWBwcmludGYgJ1x0J2AKLS0gICAgICAgICAgY2F0ICIkYWNfZ2l2ZW5fc3JjZGlyLyRhY19kaXIvUE9URklMRVMuaW4iIHwgc2VkIC1lICIvXiMvZCIgLWUgIi9eWyAke2d0X3RhYn1dKlwkL2QiIC1lICJzLC4qLCAgICAgJHRvcF9zcmNkaXIvJiBcXFxcLCIgfCBzZWQgLWUgIlwkcy9cKC4qXCkgXFxcXC9cMS8iID4gIiRhY19kaXIvUE9URklMRVMiCi0rICAgICAgICAgIGNhdCAiJGFjX2dpdmVuX3NyY2Rpci8kYWNfZGlyL1BPVEZJTEVTLmluIiB8IHNlZCAtZSAiL14jL2QiIC1lICIvXlsgCV0qXCQvZCIgLWUgInMsLiosICAgICAkdG9wX3NyY2Rpci8mIFxcXFwsIiB8IHNlZCAtZSAiXCRzL1woLipcKSBcXFxcL1wxLyIgPiAiJGFjX2Rpci9QT1RGSUxFUyIKLSAgICAgICAgICAgUE9NQUtFRklMRURFUFM9IlBPVEZJTEVTLmluIgotICAgICAgICAgICAjIEFMTF9MSU5HVUFTLCBQT0ZJTEVTLCBVUERBVEVQT0ZJTEVTLCBEVU1NWVBPRklMRVMsIEdNT0ZJTEVTIGRlcGVuZAotICAgICAgICAgICAjIG9uICRhY19kaXIgYnV0IGRvbid0IGRlcGVuZCBvbiB1c2VyLXNwZWNpZmllZCBjb25maWd1cmF0aW9uCi1AQCAtMjU1LDcgKzI1NCw2IEBAIEVPVAotICAgZmkKLSAKLSAgICMgQSBzZWQgc2NyaXB0IHRoYXQgZXh0cmFjdHMgdGhlIHZhbHVlIG9mIFZBUklBQkxFIGZyb20gYSBNYWtlZmlsZS4KLS0gIHRhYj1gcHJpbnRmICdcdCdgCi0gICBzZWRfeF92YXJpYWJsZT0nCi0gIyBUZXN0IGlmIHRoZSBob2xkIHNwYWNlIGlzIGVtcHR5LgotIHgKLUBAIC0yNjMsOSArMjYxLDkgQEAgcy9QL1AvCi0geAotIHRhCi0gIyBZZXMgaXQgd2FzIGVtcHR5LiBMb29rIGlmIHdlIGhhdmUgdGhlIGV4cGVjdGVkIHZhcmlhYmxlIGRlZmluaXRpb24uCi0tL15bJyIke3RhYn0iJyBdKlZBUklBQkxFWyciJHt0YWJ9IicgXSo9L3sKLSsvXlsJIF0qVkFSSUFCTEVbCSBdKj0vewotICAgIyBTZWVuIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSB2YXJpYWJsZSBkZWZpbml0aW9uLgotLSAgcy9eWyciJHt0YWJ9IicgXSpWQVJJQUJMRVsnIiR7dGFifSInIF0qPS8vCi0rICBzL15bCSBdKlZBUklBQkxFWwkgXSo9Ly8KLSAgIGJhCi0gfQotIGJkCi1AQCAtNDA3LDE1ICs0MDUsMTQgQEAgY2hhbmdlcXVvdGUoWyxdKWRubAotICAgZmkKLSAKLSAgIHNlZCAtZSAic3xAUE9URklMRVNfREVQU0B8JFBPVEZJTEVTX0RFUFN8ZyIgLWUgInN8QFBPRklMRVNAfCRQT0ZJTEVTfGciIC1lICJzfEBVUERBVEVQT0ZJTEVTQHwkVVBEQVRFUE9GSUxFU3xnIiAtZSAic3xARFVNTVlQT0ZJTEVTQHwkRFVNTVlQT0ZJTEVTfGciIC1lICJzfEBHTU9GSUxFU0B8JEdNT0ZJTEVTfGciIC1lICJzfEBQUk9QRVJUSUVTRklMRVNAfCRQUk9QRVJUSUVTRklMRVN8ZyIgLWUgInN8QENMQVNTRklMRVNAfCRDTEFTU0ZJTEVTfGciIC1lICJzfEBRTUZJTEVTQHwkUU1GSUxFU3xnIiAtZSAic3xATVNHRklMRVNAfCRNU0dGSUxFU3xnIiAtZSAic3xAUkVTT1VSQ0VTRExMRklMRVNAfCRSRVNPVVJDRVNETExGSUxFU3xnIiAtZSAic3xAQ0FUQUxPR1NAfCRDQVRBTE9HU3xnIiAtZSAic3xASkFWQUNBVEFMT0dTQHwkSkFWQUNBVEFMT0dTfGciIC1lICJzfEBRVENBVEFMT0dTQHwkUVRDQVRBTE9HU3xnIiAtZSAic3xAVENMQ0FUQUxPR1NAfCRUQ0xDQVRBTE9HU3xnIiAtZSAic3xAQ1NIQVJQQ0FUQUxPR1NAfCRDU0hBUlBDQVRBTE9HU3xnIiAtZSAncyxeI2Rpc3RkaXI6LGRpc3RkaXI6LCcgPCAiJGFjX2ZpbGUiID4gIiRhY19maWxlLnRtcCIKLS0gIHRhYj1gcHJpbnRmICdcdCdgCi0gICBpZiBncmVwIC1sICdAVENMQ0FUQUxPR1NAJyAiJGFjX2ZpbGUiID4gL2Rldi9udWxsOyB0aGVuCi0gICAgICMgQWRkIGRlcGVuZGVuY2llcyB0aGF0IGNhbm5vdCBiZSBmb3JtdWxhdGVkIGFzIGEgc2ltcGxlIHN1ZmZpeCBydWxlLgotICAgICBmb3IgbGFuZyBpbiAkQUxMX0xJTkdVQVM7IGRvCi0gICAgICAgZnJvYmJlZGxhbmc9YGVjaG8gJGxhbmcgfCBzZWQgLWUgJ3MvXC4uKiQvLycgLWUgJ3kvQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVovYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXovJ2AKLSAgICAgICBjYXQgPj4gIiRhY19maWxlLnRtcCIgPDxFT0YKLSAkZnJvYmJlZGxhbmcubXNnOiAkbGFuZy5wbwotLSR7dGFifUBlY2hvICJcJChNU0dGTVQpIC1jIC0tdGNsIC1kIFwkKHNyY2RpcikgLWwgJGxhbmcgJHNyY2RpcnByZSRsYW5nLnBvIjsgXAotLSR7dGFifVwkKE1TR0ZNVCkgLWMgLS10Y2wgLWQgIlwkKHNyY2RpcikiIC1sICRsYW5nICRzcmNkaXJwcmUkbGFuZy5wbyB8fCB7IHJtIC1mICJcJChzcmNkaXIpLyRmcm9iYmVkbGFuZy5tc2ciOyBleGl0IDE7IH0KLSsJQGVjaG8gIlwkKE1TR0ZNVCkgLWMgLS10Y2wgLWQgXCQoc3JjZGlyKSAtbCAkbGFuZyAkc3JjZGlycHJlJGxhbmcucG8iOyBcCi0rCVwkKE1TR0ZNVCkgLWMgLS10Y2wgLWQgIlwkKHNyY2RpcikiIC1sICRsYW5nICRzcmNkaXJwcmUkbGFuZy5wbyB8fCB7IHJtIC1mICJcJChzcmNkaXIpLyRmcm9iYmVkbGFuZy5tc2ciOyBleGl0IDE7IH0KLSBFT0YKLSAgICAgZG9uZQotICAgZmkKLUBAIC00MjUsOCArNDIyLDggQEAgRU9GCi0gICAgICAgZnJvYmJlZGxhbmc9YGVjaG8gJGxhbmcgfCBzZWQgLWUgJ3MvXy8tL2cnIC1lICdzL15zci1DUy9zci1TUC8nIC1lICdzL0BsYXRpbiQvLUxhdG4vJyAtZSAncy9AY3lyaWxsaWMkLy1DeXJsLycgLWUgJ3MvXnNyLVNQJC9zci1TUC1MYXRuLycgLWUgJ3MvXnV6LVVaJC91ei1VWi1MYXRuLydgCi0gICAgICAgY2F0ID4+ICIkYWNfZmlsZS50bXAiIDw8RU9GCi0gJGZyb2JiZWRsYW5nL1wkKERPTUFJTikucmVzb3VyY2VzLmRsbDogJGxhbmcucG8KLS0ke3RhYn1AZWNobyAiXCQoTVNHRk1UKSAtYyAtLWNzaGFycCAtZCBcJChzcmNkaXIpIC1sICRsYW5nICRzcmNkaXJwcmUkbGFuZy5wbyAtciBcJChET01BSU4pIjsgXAotLSR7dGFifVwkKE1TR0ZNVCkgLWMgLS1jc2hhcnAgLWQgIlwkKHNyY2RpcikiIC1sICRsYW5nICRzcmNkaXJwcmUkbGFuZy5wbyAtciAiXCQoRE9NQUlOKSIgfHwgeyBybSAtZiAiXCQoc3JjZGlyKS8kZnJvYmJlZGxhbmcubXNnIjsgZXhpdCAxOyB9Ci0rCUBlY2hvICJcJChNU0dGTVQpIC1jIC0tY3NoYXJwIC1kIFwkKHNyY2RpcikgLWwgJGxhbmcgJHNyY2RpcnByZSRsYW5nLnBvIC1yIFwkKERPTUFJTikiOyBcCi0rCVwkKE1TR0ZNVCkgLWMgLS1jc2hhcnAgLWQgIlwkKHNyY2RpcikiIC1sICRsYW5nICRzcmNkaXJwcmUkbGFuZy5wbyAtciAiXCQoRE9NQUlOKSIgfHwgeyBybSAtZiAiXCQoc3JjZGlyKS8kZnJvYmJlZGxhbmcubXNnIjsgZXhpdCAxOyB9Ci0gRU9GCi0gICAgIGRvbmUKLSAgIGZpCi1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbTQvcmVhZGxpbmsubTQgbGliaWNvbnYtMS4xNC9zcmNtNC9yZWFkbGluay5tNAotLS0tIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9yZWFkbGluay5tNAkyMDExLTA4LTA3IDA2OjQyOjA3LjAwMDAwMDAwMCAtMDcwMAotKysrIGxpYmljb252LTEuMTQvc3JjbTQvcmVhZGxpbmsubTQJMjAxMi0wMS0wOCAwMjowNzo0MC43OTA0ODQ0NzkgLTA4MDAKLUBAIC0xLDQgKzEsNCBAQAotLSMgcmVhZGxpbmsubTQgc2VyaWFsIDExCi0rIyByZWFkbGluay5tNCBzZXJpYWwgMTAKLSBkbmwgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA3LCAyMDA5LTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCi0gZG5sIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCi1AQCAtMTAsNiArMTAsOCBAQCBBQ19ERUZVTihbZ2xfRlVOQ19SRUFETElOS10sCi0gICBBQ19DSEVDS19GVU5DU19PTkNFKFtyZWFkbGlua10pCi0gICBpZiB0ZXN0ICRhY19jdl9mdW5jX3JlYWRsaW5rID0gbm87IHRoZW4KLSAgICAgSEFWRV9SRUFETElOSz0wCi0rICAgIEFDX0xJQk9CSihbcmVhZGxpbmtdKQotKyAgICBnbF9QUkVSRVFfUkVBRExJTksKLSAgIGVsc2UKLSAgICAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgcmVhZGxpbmsgc2lnbmF0dXJlIGlzIGNvcnJlY3RdLAotICAgICAgIFtnbF9jdl9kZWNsX3JlYWRsaW5rX3dvcmtzXSwKLUBAIC0zOCw4ICs0MCwxMCBAQCBBQ19ERUZVTihbZ2xfRlVOQ19SRUFETElOS10sCi0gICAgICAgQUNfREVGSU5FKFtSRUFETElOS19UUkFJTElOR19TTEFTSF9CVUddLCBbMV0sIFtEZWZpbmUgdG8gMSBpZiByZWFkbGluawotICAgICAgICAgZmFpbHMgdG8gcmVjb2duaXplIGEgdHJhaWxpbmcgc2xhc2guXSkKLSAgICAgICBSRVBMQUNFX1JFQURMSU5LPTEKLSsgICAgICBBQ19MSUJPQkooW3JlYWRsaW5rXSkKLSAgICAgZWxpZiB0ZXN0ICIkZ2xfY3ZfZGVjbF9yZWFkbGlua193b3JrcyIgIT0geWVzOyB0aGVuCi0gICAgICAgUkVQTEFDRV9SRUFETElOSz0xCi0rICAgICAgQUNfTElCT0JKKFtyZWFkbGlua10pCi0gICAgIGZpCi0gICBmaQotIF0pCi1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbTQvcmVhZC5tNCBsaWJpY29udi0xLjE0L3NyY200L3JlYWQubTQKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbTQvcmVhZC5tNAkyMDExLTA4LTA3IDA2OjQyOjA3LjAwMDAwMDAwMCAtMDcwMAotKysrIGxpYmljb252LTEuMTQvc3JjbTQvcmVhZC5tNAkyMDEyLTAxLTA4IDAyOjA3OjQwLjc4MjQ4NDQ3OCAtMDgwMAotQEAgLTEsNCArMSw0IEBACi0tIyByZWFkLm00IHNlcmlhbCAyCi0rIyByZWFkLm00IHNlcmlhbCAxCi0gZG5sIENvcHlyaWdodCAoQykgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSBkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KLSBkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKLUBAIC0xNCw2ICsxNCw3IEBAIEFDX0RFRlVOKFtnbF9GVU5DX1JFQURdLAotICAgICBnbF9OT05CTE9DS0lOR19JTwotICAgICBpZiB0ZXN0ICRnbF9jdl9oYXZlX25vbmJsb2NraW5nICE9IHllczsgdGhlbgotICAgICAgIFJFUExBQ0VfUkVBRD0xCi0rICAgICAgQUNfTElCT0JKKFtyZWFkXSkKLSAgICAgZmkKLSAgIF0pCi0gXSkKLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9yZWxvY2F0YWJsZS1saWIubTQgbGliaWNvbnYtMS4xNC9zcmNtNC9yZWxvY2F0YWJsZS1saWIubTQKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbTQvcmVsb2NhdGFibGUtbGliLm00CTIwMTEtMDgtMDcgMDY6NDI6MDcuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNtNC9yZWxvY2F0YWJsZS1saWIubTQJMjAxMi0wMS0wOCAwMjowNzo0MC43OTg0ODQ0ODAgLTA4MDAKLUBAIC0xLDQgKzEsNCBAQAotLSMgcmVsb2NhdGFibGUtbGliLm00IHNlcmlhbCA2Ci0rIyByZWxvY2F0YWJsZS1saWIubTQgc2VyaWFsIDUKLSBkbmwgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA1LTIwMDcsIDIwMDktMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSBkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KLSBkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKLUBAIC0xMCw2ICsxMCw5IEBAIGRubCBTdXBwb3J0IGZvciByZWxvY2F0YWJsZSBsaWJyYXJpZXMuCi0gQUNfREVGVU4oW2dsX1JFTE9DQVRBQkxFX0xJQlJBUlldLAotIFsKLSAgIEFDX1JFUVVJUkUoW2dsX1JFTE9DQVRBQkxFX0xJQlJBUllfQk9EWV0pCi0rICBpZiB0ZXN0ICRSRUxPQ0FUQUJMRSA9IHllczsgdGhlbgotKyAgICBBQ19MSUJPQkooW3JlbG9jYXRhYmxlXSkKLSsgIGZpCi0gXSkKLSBBQ19ERUZVTihbZ2xfUkVMT0NBVEFCTEVfTElCUkFSWV9CT0RZXSwKLSBbCi1AQCAtMjksNiArMzIsMTMgQEAgQUNfREVGVU4oW2dsX1JFTE9DQVRBQkxFX0xJQlJBUllfQk9EWV0sCi0gICBmaQotIF0pCi0gCi0rZG5sIExpa2UgZ2xfUkVMT0NBVEFCTEVfTElCUkFSWSwgZXhjZXB0IHByZXBhcmUgZm9yIHNlcGFyYXRlIGNvbXBpbGF0aW9uCi0rZG5sIChubyBBQ19MSUJPQkopLgotK0FDX0RFRlVOKFtnbF9SRUxPQ0FUQUJMRV9MSUJSQVJZX1NFUEFSQVRFXSwKLStbCi0rICBBQ19SRVFVSVJFKFtnbF9SRUxPQ0FUQUJMRV9MSUJSQVJZX0JPRFldKQotK10pCi0rCi0gZG5sIFN1cHBvcnQgZm9yIHJlbG9jYXRhYmxlIHBhY2thZ2VzIGZvciB3aGljaCBpdCBpcyBhIG5vcC4KLSBBQ19ERUZVTihbZ2xfUkVMT0NBVEFCTEVfTk9QXSwKLSBbCi1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbTQvcmVsb2NhdGFibGUubTQgbGliaWNvbnYtMS4xNC9zcmNtNC9yZWxvY2F0YWJsZS5tNAotLS0tIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9yZWxvY2F0YWJsZS5tNAkyMDExLTA4LTA3IDA2OjQyOjA3LjAwMDAwMDAwMCAtMDcwMAotKysrIGxpYmljb252LTEuMTQvc3JjbTQvcmVsb2NhdGFibGUubTQJMjAxMi0wMS0wOCAwMjowNzo0MC44MDI0ODQ0NzkgLTA4MDAKLUBAIC0xLDQgKzEsNCBAQAotLSMgcmVsb2NhdGFibGUubTQgc2VyaWFsIDE3Ci0rIyByZWxvY2F0YWJsZS5tNCBzZXJpYWwgMTYKLSBkbmwgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA1LTIwMDcsIDIwMDktMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSBkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KLSBkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKLUBAIC0xNCw2ICsxNCw5IEBAIEFDX0RFRlVOKFtnbF9SRUxPQ0FUQUJMRV0sCi0gWwotICAgQUNfUkVRVUlSRShbZ2xfUkVMT0NBVEFCTEVfQk9EWV0pCi0gICBnbF9SRUxPQ0FUQUJMRV9MSUJSQVJZCi0rICBpZiB0ZXN0ICRSRUxPQ0FUQUJMRSA9IHllczsgdGhlbgotKyAgICBBQ19MSUJPQkooW3Byb2dyZWxvY10pCi0rICBmaQotICAgOiAke1JFTE9DQVRBQkxFX0NPTkZJR19IX0RJUj0nJCh0b3BfYnVpbGRkaXIpJ30KLSAgIFJFTE9DQVRBQkxFX1NSQ19ESVI9IlwkKHRvcF9zcmNkaXIpLyRnbF9zb3VyY2VfYmFzZSIKLSAgIFJFTE9DQVRBQkxFX0JVSUxEX0RJUj0iXCQodG9wX2J1aWxkZGlyKS8kZ2xfc291cmNlX2Jhc2UiCi1kaWZmIC1OYXVycCBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbTQvc2FmZS1yZWFkLm00IGxpYmljb252LTEuMTQvc3JjbTQvc2FmZS1yZWFkLm00Ci0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L3NhZmUtcmVhZC5tNAkyMDExLTA4LTA3IDA2OjQyOjA3LjAwMDAwMDAwMCAtMDcwMAotKysrIGxpYmljb252LTEuMTQvc3JjbTQvc2FmZS1yZWFkLm00CTIwMTItMDEtMDggMDI6MDc6NDAuODEwNDg0NDgwIC0wODAwCi1AQCAtMSwxMCArMSwxNyBAQAotLSMgc2FmZS1yZWFkLm00IHNlcmlhbCA2Ci0rIyBzYWZlLXJlYWQubTQgc2VyaWFsIDUKLSBkbmwgQ29weXJpZ2h0IChDKSAyMDAyLTIwMDMsIDIwMDUtMjAwNiwgMjAwOS0yMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSBkbmwgSW5jLgotIGRubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgotIGRubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAotIGRubCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCi0gCi0rQUNfREVGVU4oW2dsX1NBRkVfUkVBRF0sCi0rWwotKyAgQUNfTElCT0JKKFtzYWZlLXJlYWRdKQotKwotKyAgZ2xfUFJFUkVRX1NBRkVfUkVBRAotK10pCi0rCi0gIyBQcmVyZXF1aXNpdGVzIG9mIGxpYi9zYWZlLXJlYWQuYy4KLSBBQ19ERUZVTihbZ2xfUFJFUkVRX1NBRkVfUkVBRF0sCi0gWwotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L3NldGVudi5tNCBsaWJpY29udi0xLjE0L3NyY200L3NldGVudi5tNAotLS0tIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9zZXRlbnYubTQJMjAxMS0wOC0wNyAwNjo0MjowNy4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY200L3NldGVudi5tNAkyMDEyLTAxLTA4IDAyOjA3OjQwLjgxODQ4NDQ4MSAtMDgwMAotQEAgLTEsNCArMSw0IEBACi0tIyBzZXRlbnYubTQgc2VyaWFsIDI0Ci0rIyBzZXRlbnYubTQgc2VyaWFsIDIyCi0gZG5sIENvcHlyaWdodCAoQykgMjAwMS0yMDA0LCAyMDA2LTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCi0gZG5sIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCi1AQCAtMzgsNiArMzgsOSBAQCBBQ19ERUZVTihbZ2xfRlVOQ19TRVRFTlZdLAotICAgICAgIFJFUExBQ0VfU0VURU5WPTEKLSAgICAgZmkKLSAgIGZpCi0rICBpZiB0ZXN0ICRIQVZFX1NFVEVOViRSRVBMQUNFX1NFVEVOViAhPSAxMDsgdGhlbgotKyAgICBBQ19MSUJPQkooW3NldGVudl0pCi0rICBmaQotIF0pCi0gCi0gIyBMaWtlIGdsX0ZVTkNfU0VURU5WLCBleGNlcHQgcHJlcGFyZSBmb3Igc2VwYXJhdGUgY29tcGlsYXRpb24KLUBAIC02Miw5ICs2NSw5IEBAIEFDX0RFRlVOKFtnbF9GVU5DX1VOU0VURU5WXSwKLSAgIGZpCi0gICBBQ19DSEVDS19GVU5DUyhbdW5zZXRlbnZdKQotICAgaWYgdGVzdCAkYWNfY3ZfZnVuY191bnNldGVudiA9IG5vOyB0aGVuCi0tICAgIEhBVkVfVU5TRVRFTlY9MAotKyAgICBBQ19MSUJPQkooW3Vuc2V0ZW52XSkKLSsgICAgZ2xfUFJFUkVRX1VOU0VURU5WCi0gICBlbHNlCi0tICAgIEhBVkVfVU5TRVRFTlY9MQotICAgICBkbmwgU29tZSBCU0RzIHJldHVybiB2b2lkLCBmYWlsaW5nIHRvIGRvIGVycm9yIGNoZWNraW5nLgotICAgICBBQ19DQUNIRV9DSEVDSyhbZm9yIHVuc2V0ZW52KCkgcmV0dXJuIHR5cGVdLCBbZ3RfY3ZfZnVuY191bnNldGVudl9yZXRdLAotICAgICAgIFtBQ19DT01QSUxFX0lGRUxTRSgKLUBAIC05MCw2ICs5Myw3IEBAIGludCB1bnNldGVudigpOwotICAgICAgIEFDX0RFRklORShbVk9JRF9VTlNFVEVOVl0sIFsxXSwgW0RlZmluZSB0byAxIGlmIHVuc2V0ZW52IHJldHVybnMgdm9pZAotICAgICAgICBpbnN0ZWFkIG9mIGludC5dKQotICAgICAgIFJFUExBQ0VfVU5TRVRFTlY9MQotKyAgICAgIEFDX0xJQk9CSihbdW5zZXRlbnZdKQotICAgICBmaQotIAotICAgICBkbmwgU29sYXJpcyAxMCB1bnNldGVudiBkb2VzIG5vdCByZW1vdmUgYWxsIGNvcGllcyBvZiBhIG5hbWUuCi1AQCAtMTIyLDYgKzEyNiw3IEBAIGludCB1bnNldGVudigpOwotICAgICAgIFtnbF9jdl9mdW5jX3Vuc2V0ZW52X3dvcmtzPSJndWVzc2luZyBubyJdKV0pCi0gICAgIGlmIHRlc3QgIiRnbF9jdl9mdW5jX3Vuc2V0ZW52X3dvcmtzIiAhPSB5ZXM7IHRoZW4KLSAgICAgICBSRVBMQUNFX1VOU0VURU5WPTEKLSsgICAgICBBQ19MSUJPQkooW3Vuc2V0ZW52XSkKLSAgICAgZmkKLSAgIGZpCi0gXSkKLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9zaWduYWxibG9ja2luZy5tNCBsaWJpY29udi0xLjE0L3NyY200L3NpZ25hbGJsb2NraW5nLm00Ci0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L3NpZ25hbGJsb2NraW5nLm00CTIwMTEtMDgtMDcgMDY6NDI6MDcuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNtNC9zaWduYWxibG9ja2luZy5tNAkyMDEyLTAxLTA4IDAyOjA3OjQwLjgzNDQ4NDQ4MiAtMDgwMAotQEAgLTEsNCArMSw0IEBACi0tIyBzaWduYWxibG9ja2luZy5tNCBzZXJpYWwgMTIKLSsjIHNpZ25hbGJsb2NraW5nLm00IHNlcmlhbCAxMAotIGRubCBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwMiwgMjAwNi0yMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIGRubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgotIGRubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAotQEAgLTEyLDE0ICsxMiwzMSBAQCBkbmwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvCi0gQUNfREVGVU4oW2dsX1NJR05BTEJMT0NLSU5HXSwKLSBbCi0gICBBQ19SRVFVSVJFKFtnbF9TSUdOQUxfSF9ERUZBVUxUU10pCi0tICBBQ19SRVFVSVJFKFtnbF9DSEVDS19UWVBFX1NJR1NFVF9UXSkKLS0gIGlmIHRlc3QgJGdsX2N2X3R5cGVfc2lnc2V0X3QgPSB5ZXM7IHRoZW4KLSsgIHNpZ25hbHNfbm90X3Bvc2l4PQotKyAgQUNfRUdSRVBfSEVBREVSKFtzaWdzZXRfdF0sIFtzaWduYWwuaF0sICwgW3NpZ25hbHNfbm90X3Bvc2l4PTFdKQotKyAgaWYgdGVzdCAteiAiJHNpZ25hbHNfbm90X3Bvc2l4IjsgdGhlbgotICAgICBBQ19DSEVDS19GVU5DKFtzaWdwcm9jbWFza10sIFtnbF9jdl9mdW5jX3NpZ3Byb2NtYXNrPTFdKQotICAgZmkKLSAgIGlmIHRlc3QgLXogIiRnbF9jdl9mdW5jX3NpZ3Byb2NtYXNrIjsgdGhlbgotICAgICBIQVZFX1BPU0lYX1NJR05BTEJMT0NLSU5HPTAKLSsgICAgQUNfTElCT0JKKFtzaWdwcm9jbWFza10pCi0rICAgIGdsX1BSRVJFUV9TSUdQUk9DTUFTSwotICAgZmkKLSBdKQotIAotLSMgUHJlcmVxdWlzaXRlcyBvZiBsaWIvc2lncHJvY21hc2suYy4KLS1BQ19ERUZVTihbZ2xfUFJFUkVRX1NJR1BST0NNQVNLXSwgWzpdKQotKyMgUHJlcmVxdWlzaXRlcyBvZiB0aGUgcGFydCBvZiBsaWIvc2lnbmFsLmluLmggYW5kIG9mIGxpYi9zaWdwcm9jbWFzay5jLgotK0FDX0RFRlVOKFtnbF9QUkVSRVFfU0lHUFJPQ01BU0tdLAotK1sKLSsgIEFDX1JFUVVJUkUoW2dsX1NJR05BTF9IX0RFRkFVTFRTXSkKLSsgIEFDX0NIRUNLX1RZUEVTKFtzaWdzZXRfdF0sCi0rICAgIFtnbF9jdl90eXBlX3NpZ3NldF90PXllc10sIFtnbF9jdl90eXBlX3NpZ3NldF90PW5vXSwKLSsgICAgWyNpbmNsdWRlIDxzaWduYWwuaD4KLSsvKiBNaW5ndyBkZWZpbmVzIHNpZ3NldF90IG5vdCBpbiA8c2lnbmFsLmg+LCBidXQgaW4gPHN5cy90eXBlcy5oPi4gICovCi0rI2luY2x1ZGUgPHN5cy90eXBlcy5oPl0pCi0rICBpZiB0ZXN0ICRnbF9jdl90eXBlX3NpZ3NldF90ICE9IHllczsgdGhlbgotKyAgICBIQVZFX1NJR1NFVF9UPTAKLSsgIGZpCi0rICBkbmwgSEFWRV9TSUdTRVRfVCBpcyAxIGlmIHRoZSBzeXN0ZW0gbGFja3MgdGhlIHNpZ3Byb2NtYXNrIGZ1bmN0aW9uIGJ1dCBoYXMKLSsgIGRubCB0aGUgc2lnc2V0X3QgdHlwZS4KLSsgIEFDX1NVQlNUKFtIQVZFX1NJR1NFVF9UXSkKLStdKQotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L3NpZ25hbF9oLm00IGxpYmljb252LTEuMTQvc3JjbTQvc2lnbmFsX2gubTQKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbTQvc2lnbmFsX2gubTQJMjAxMS0wOC0wNyAwNjo0MjowNy4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY200L3NpZ25hbF9oLm00CTIwMTItMDEtMDggMDI6MDc6NDAuODI2NDg0NDgwIC0wODAwCi1AQCAtMSw0ICsxLDQgQEAKLS0jIHNpZ25hbF9oLm00IHNlcmlhbCAxNgotKyMgc2lnbmFsX2gubTQgc2VyaWFsIDEyCi0gZG5sIENvcHlyaWdodCAoQykgMjAwNy0yMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIGRubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgotIGRubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAotQEAgLTcsNyArNyw2IEBAIGRubCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG8KLSBBQ19ERUZVTihbZ2xfU0lHTkFMX0hdLAotIFsKLSAgIEFDX1JFUVVJUkUoW2dsX1NJR05BTF9IX0RFRkFVTFRTXSkKLS0gIEFDX1JFUVVJUkUoW2dsX0NIRUNLX1RZUEVfU0lHU0VUX1RdKQotICAgZ2xfTkVYVF9IRUFERVJTKFtzaWduYWwuaF0pCi0gCi0gIyBBSVggZGVjbGFyZXMgc2lnX2F0b21pY190IHRvIGFscmVhZHkgaW5jbHVkZSB2b2xhdGlsZSwgYW5kIEM4OSBjb21waWxlcnMKLUBAIC0yOCwyNSArMjcsMTAgQEAgQUNfREVGVU4oW2dsX1NJR05BTF9IXSwKLSAgIGRubCBDaGVjayBmb3IgZGVjbGFyYXRpb25zIG9mIGFueXRoaW5nIHdlIHdhbnQgdG8gcG9pc29uIGlmIHRoZQotICAgZG5sIGNvcnJlc3BvbmRpbmcgZ251bGliIG1vZHVsZSBpcyBub3QgaW4gdXNlLgotICAgZ2xfV0FSTl9PTl9VU0VfUFJFUEFSRShbWyNpbmNsdWRlIDxzaWduYWwuaD4KLS0gICAgXV0sIFtwdGhyZWFkX3NpZ21hc2sgc2lnYWN0aW9uCi0tICAgIHNpZ2FkZHNldCBzaWdkZWxzZXQgc2lnZW1wdHlzZXQgc2lnZmlsbHNldCBzaWdpc21lbWJlcgotKyAgICBdXSwgW3NpZ2FjdGlvbiBzaWdhZGRzZXQgc2lnZGVsc2V0IHNpZ2VtcHR5c2V0IHNpZ2ZpbGxzZXQgc2lnaXNtZW1iZXIKLSAgICAgc2lncGVuZGluZyBzaWdwcm9jbWFza10pCi0gXSkKLSAKLS1BQ19ERUZVTihbZ2xfQ0hFQ0tfVFlQRV9TSUdTRVRfVF0sCi0tWwotLSAgQUNfQ0hFQ0tfVFlQRVMoW3NpZ3NldF90XSwKLS0gICAgW2dsX2N2X3R5cGVfc2lnc2V0X3Q9eWVzXSwgW2dsX2N2X3R5cGVfc2lnc2V0X3Q9bm9dLAotLSAgICBbWwotLSAgICAgICNpbmNsdWRlIDxzaWduYWwuaD4KLS0gICAgICAvKiBNaW5ndyBkZWZpbmVzIHNpZ3NldF90IG5vdCBpbiA8c2lnbmFsLmg+LCBidXQgaW4gPHN5cy90eXBlcy5oPi4gICovCi0tICAgICAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotLSAgICBdXSkKLS0gIGlmIHRlc3QgJGdsX2N2X3R5cGVfc2lnc2V0X3QgIT0geWVzOyB0aGVuCi0tICAgIEhBVkVfU0lHU0VUX1Q9MAotLSAgZmkKLS1dKQotLQotIEFDX0RFRlVOKFtnbF9TSUdOQUxfTU9EVUxFX0lORElDQVRPUl0sCi0gWwotICAgZG5sIFVzZSBBQ19SRVFVSVJFIGhlcmUsIHNvIHRoYXQgdGhlIGRlZmF1bHQgc2V0dGluZ3MgYXJlIGV4cGFuZGVkIG9uY2Ugb25seS4KLUBAIC01OCwxMyArNDIsMTEgQEAgQUNfREVGVU4oW2dsX1NJR05BTF9NT0RVTEVfSU5ESUNBVE9SXSwKLSAKLSBBQ19ERUZVTihbZ2xfU0lHTkFMX0hfREVGQVVMVFNdLAotIFsKLS0gIEdOVUxJQl9QVEhSRUFEX1NJR01BU0s9MDsgICAgQUNfU1VCU1QoW0dOVUxJQl9QVEhSRUFEX1NJR01BU0tdKQotICAgR05VTElCX1NJR05BTF9IX1NJR1BJUEU9MDsgICBBQ19TVUJTVChbR05VTElCX1NJR05BTF9IX1NJR1BJUEVdKQotICAgR05VTElCX1NJR1BST0NNQVNLPTA7ICAgICAgICBBQ19TVUJTVChbR05VTElCX1NJR1BST0NNQVNLXSkKLSAgIEdOVUxJQl9TSUdBQ1RJT049MDsgICAgICAgICAgQUNfU1VCU1QoW0dOVUxJQl9TSUdBQ1RJT05dKQotICAgZG5sIEFzc3VtZSBwcm9wZXIgR05VIGJlaGF2aW9yIHVubGVzcyBhbm90aGVyIG1vZHVsZSBzYXlzIG90aGVyd2lzZS4KLSAgIEhBVkVfUE9TSVhfU0lHTkFMQkxPQ0tJTkc9MTsgQUNfU1VCU1QoW0hBVkVfUE9TSVhfU0lHTkFMQkxPQ0tJTkddKQotLSAgSEFWRV9QVEhSRUFEX1NJR01BU0s9MTsgICAgICBBQ19TVUJTVChbSEFWRV9QVEhSRUFEX1NJR01BU0tdKQotICAgSEFWRV9TSUdTRVRfVD0xOyAgICAgICAgICAgICBBQ19TVUJTVChbSEFWRV9TSUdTRVRfVF0pCi0gICBIQVZFX1NJR0lORk9fVD0xOyAgICAgICAgICAgIEFDX1NVQlNUKFtIQVZFX1NJR0lORk9fVF0pCi0gICBIQVZFX1NJR0FDVElPTj0xOyAgICAgICAgICAgIEFDX1NVQlNUKFtIQVZFX1NJR0FDVElPTl0pCi1AQCAtNzMsNSArNTUsNCBAQCBBQ19ERUZVTihbZ2xfU0lHTkFMX0hfREVGQVVMVFNdLAotICAgSEFWRV9UWVBFX1ZPTEFUSUxFX1NJR19BVE9NSUNfVD0xOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBQ19TVUJTVChbSEFWRV9UWVBFX1ZPTEFUSUxFX1NJR19BVE9NSUNfVF0pCi0gICBIQVZFX1NJR0hBTkRMRVJfVD0xOyAgICAgICAgIEFDX1NVQlNUKFtIQVZFX1NJR0hBTkRMRVJfVF0pCi0tICBSRVBMQUNFX1BUSFJFQURfU0lHTUFTSz0wOyAgIEFDX1NVQlNUKFtSRVBMQUNFX1BUSFJFQURfU0lHTUFTS10pCi0gXSkKLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9zdGF0Lm00IGxpYmljb252LTEuMTQvc3JjbTQvc3RhdC5tNAotLS0tIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9zdGF0Lm00CTIwMTEtMDgtMDcgMDY6NDI6MDcuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNtNC9zdGF0Lm00CTIwMTItMDEtMDggMDI6MDc6NDAuODU0NDg0NDgzIC0wODAwCi1AQCAtMSw0ICsxLDQgQEAKLS0jIHNlcmlhbCA4Ci0rIyBzZXJpYWwgNwotIAotICMgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gIwotQEAgLTU4LDExICs1OCw5IEBAIEFDX0RFRlVOKFtnbF9GVU5DX1NUQVRdLAotICAgICAgIEFDX0RFRklORShbUkVQTEFDRV9GVU5DX1NUQVRfRklMRV0sIFsxXSwgW0RlZmluZSB0byAxIGlmIHN0YXQgbmVlZHMKLSAgICAgICAgIGhlbHAgd2hlbiBwYXNzZWQgYSBmaWxlIG5hbWUgd2l0aCBhIHRyYWlsaW5nIHNsYXNoXSk7OwotICAgZXNhYwotLV0pCi0tCi0tIyBQcmVyZXF1aXNpdGVzIG9mIGxpYi9zdGF0LmMuCi0tQUNfREVGVU4oW2dsX1BSRVJFUV9TVEFUXSwKLS1bCi0tICBBQ19SRVFVSVJFKFtBQ19DX0lOTElORV0pCi0tICA6Ci0rICBpZiB0ZXN0ICRSRVBMQUNFX1NUQVQgPSAxOyB0aGVuCi0rICAgIEFDX0xJQk9CSihbc3RhdF0pCi0rICAgIGRubCBQcmVyZXF1aXNpdGVzIG9mIGxpYi9zdGF0LmMuCi0rICAgIEFDX1JFUVVJUkUoW0FDX0NfSU5MSU5FXSkKLSsgIGZpCi0gXSkKLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9zdHJlcnJvci5tNCBsaWJpY29udi0xLjE0L3NyY200L3N0cmVycm9yLm00Ci0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L3N0cmVycm9yLm00CTIwMTEtMDgtMDcgMDY6NDI6MDcuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNtNC9zdHJlcnJvci5tNAkyMDEyLTAxLTA4IDAyOjA3OjQwLjg5MDQ4NDQ4NCAtMDgwMAotQEAgLTEsNCArMSw0IEBACi0tIyBzdHJlcnJvci5tNCBzZXJpYWwgMTYKLSsjIHN0cmVycm9yLm00IHNlcmlhbCA5Ci0gZG5sIENvcHlyaWdodCAoQykgMjAwMiwgMjAwNy0yMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIGRubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgotIGRubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAotQEAgLTYsNzMgKzYsNjMgQEAgZG5sIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsbwotIAotIEFDX0RFRlVOKFtnbF9GVU5DX1NUUkVSUk9SXSwKLSBbCi0rICBBQ19SRVFVSVJFKFtnbF9GVU5DX1NUUkVSUk9SX1NFUEFSQVRFXSkKLSsgIGlmIHRlc3QgJFJFUExBQ0VfU1RSRVJST1IgPSAxOyB0aGVuCi0rICAgIEFDX0xJQk9CSihbc3RyZXJyb3JdKQotKyAgICBBQ19ERUZJTkVfVU5RVU9URUQoW1JFUExBQ0VfU1RSRVJST1JdLCBbJFJFUExBQ0VfU1RSRVJST1JdLAotKyAgICAgIFtEZWZpbmUgdGhpcyB0byAxIGlmIHN0cmVycm9yIGlzIGJyb2tlbi5dKQotKyAgZmkKLStdKQotKwotKyMgTGlrZSBnbF9GVU5DX1NUUkVSUk9SLCBleGNlcHQgcHJlcGFyZSBmb3Igc2VwYXJhdGUgY29tcGlsYXRpb24gKG5vIEFDX0xJQk9CSikuCi0rQUNfREVGVU4oW2dsX0ZVTkNfU1RSRVJST1JfU0VQQVJBVEVdLAotK1sKLSAgIEFDX1JFUVVJUkUoW2dsX0hFQURFUl9TVFJJTkdfSF9ERUZBVUxUU10pCi0gICBBQ19SRVFVSVJFKFtnbF9IRUFERVJfRVJSTk9fSF0pCi0tICBBQ19SRVFVSVJFKFtnbF9GVU5DX1NUUkVSUk9SXzBdKQotLSAgbTRfaWZkZWYoW2dsX0ZVTkNfU1RSRVJST1JfUl9XT1JLU10sIFsKLS0gICAgQUNfUkVRVUlSRShbZ2xfRlVOQ19TVFJFUlJPUl9SX1dPUktTXSkKLS0gIF0pCi0tICBpZiB0ZXN0ICIkRVJSTk9fSDokUkVQTEFDRV9TVFJFUlJPUl8wIiA9IDowOyB0aGVuCi0rICBpZiB0ZXN0IC16ICIkRVJSTk9fSCI7IHRoZW4KLSAgICAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciB3b3JraW5nIHN0cmVycm9yIGZ1bmN0aW9uXSwKLSAgICAgIFtnbF9jdl9mdW5jX3dvcmtpbmdfc3RyZXJyb3JdLAotICAgICAgW0FDX1JVTl9JRkVMU0UoCi0gICAgICAgICBbQUNfTEFOR19QUk9HUkFNKAotICAgICAgICAgICAgW1sjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gICAgICAgICAgICBdXSwKLS0gICAgICAgICAgIFtbaWYgKCEqc3RyZXJyb3IgKC0yKSkgcmV0dXJuIDE7XV0pXSwKLSsgICAgICAgICAgIFtbcmV0dXJuICEqc3RyZXJyb3IgKC0yKTtdXSldLAotICAgICAgICAgW2dsX2N2X2Z1bmNfd29ya2luZ19zdHJlcnJvcj15ZXNdLAotICAgICAgICAgW2dsX2N2X2Z1bmNfd29ya2luZ19zdHJlcnJvcj1ub10sCi0tICAgICAgICBbZG5sIEJlIHBlc3NpbWlzdGljIG9uIGNyb3NzLWNvbXBpbGVzIGZvciBub3cuCi0tICAgICAgICAgZ2xfY3ZfZnVuY193b3JraW5nX3N0cmVycm9yPSJndWVzc2luZyBubyJdKQotKyAgICAgICAgW2RubCBBc3N1bWUgY3Jvc3NidWlsZCB3b3JrcyBpZiBpdCBjb21waWxlcy4KLSsgICAgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKLSsgICAgICAgICAgIFtBQ19MQU5HX1BST0dSQU0oCi0rICAgICAgICAgICAgICBbWyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsgICAgICAgICAgICAgIF1dLAotKyAgICAgICAgICAgICAgW1tyZXR1cm4gISpzdHJlcnJvciAoLTIpO11dKV0sCi0rICAgICAgICAgICBbZ2xfY3ZfZnVuY193b3JraW5nX3N0cmVycm9yPXllc10sCi0rICAgICAgICAgICBbZ2xfY3ZfZnVuY193b3JraW5nX3N0cmVycm9yPW5vXSkKLSsgICAgICBdKQotICAgICBdKQotLSAgICBpZiB0ZXN0ICIkZ2xfY3ZfZnVuY193b3JraW5nX3N0cmVycm9yIiAhPSB5ZXM7IHRoZW4KLSsgICAgaWYgdGVzdCAkZ2xfY3ZfZnVuY193b3JraW5nX3N0cmVycm9yID0gbm87IHRoZW4KLSAgICAgICBkbmwgVGhlIHN5c3RlbSdzIHN0cmVycm9yKCkgZmFpbHMgdG8gcmV0dXJuIGEgc3RyaW5nIGZvciBvdXQtb2YtcmFuZ2UKLSAgICAgICBkbmwgaW50ZWdlcnMuIFJlcGxhY2UgaXQuCi0gICAgICAgUkVQTEFDRV9TVFJFUlJPUj0xCi0gICAgIGZpCi0tICAgIG00X2lmZGVmKFtnbF9GVU5DX1NUUkVSUk9SX1JfV09SS1NdLCBbCi0tICAgICAgZG5sIElmIHRoZSBzeXN0ZW0ncyBzdHJlcnJvcl9yIG9yIF9feHBnX3N0cmVycm9yX3IgY2xvYmJlcnMgc3RyZXJyb3IncwotLSAgICAgIGRubCBidWZmZXIsIHdlIG11c3QgcmVwbGFjZSBzdHJlcnJvci4KLS0gICAgICBjYXNlICIkZ2xfY3ZfZnVuY19zdHJlcnJvcl9yX3dvcmtzIiBpbgotLSAgICAgICAgKm5vKSBSRVBMQUNFX1NUUkVSUk9SPTEgOzsKLS0gICAgICBlc2FjCi0tICAgIF0pCi0gICBlbHNlCi0gICAgIGRubCBUaGUgc3lzdGVtJ3Mgc3RyZXJyb3IoKSBjYW5ub3Qga25vdyBhYm91dCB0aGUgbmV3IGVycm5vIHZhbHVlcyB3ZSBhZGQKLS0gICAgZG5sIHRvIDxlcnJuby5oPiwgb3IgYW55IGZpeCBmb3Igc3RyZXJyb3IoMCkuIFJlcGxhY2UgaXQuCi0rICAgIGRubCB0byA8ZXJybm8uaD4uIFJlcGxhY2UgaXQuCi0gICAgIFJFUExBQ0VfU1RSRVJST1I9MQotICAgZmkKLSsgIGlmIHRlc3QgJFJFUExBQ0VfU1RSRVJST1IgPSAxOyB0aGVuCi0rICAgIGdsX1BSRVJFUV9TVFJFUlJPUgotKyAgZmkKLSBdKQotIAotLWRubCBEZXRlY3QgaWYgc3RyZXJyb3IoMCkgcGFzc2VzICh0aGF0IGlzLCBkb2VzIG5vdCBzZXQgZXJybm8sIGFuZCBkb2VzIG5vdAotLWRubCByZXR1cm4gYSBzdHJpbmcgdGhhdCBtYXRjaGVzIHN0cmVycm9yKC0xKSkuCi0tQUNfREVGVU4oW2dsX0ZVTkNfU1RSRVJST1JfMF0sCi0tWwotLSAgUkVQTEFDRV9TVFJFUlJPUl8wPTAKLS0gIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIHN0cmVycm9yKDApIHN1Y2NlZWRzXSwKLS0gICBbZ2xfY3ZfZnVuY19zdHJlcnJvcl8wX3dvcmtzXSwKLS0gICBbQUNfUlVOX0lGRUxTRSgKLS0gICAgICBbQUNfTEFOR19QUk9HUkFNKAotLSAgICAgICAgIFtbI2luY2x1ZGUgPHN0cmluZy5oPgotLSAgICAgICAgICAgI2luY2x1ZGUgPGVycm5vLmg+Ci0tICAgICAgICAgXV0sCi0tICAgICAgICAgW1tpbnQgcmVzdWx0ID0gMDsKLS0gICAgICAgICAgIGNoYXIgKnN0cjsKLS0gICAgICAgICAgIGVycm5vID0gMDsKLS0gICAgICAgICAgIHN0ciA9IHN0cmVycm9yICgwKTsKLS0gICAgICAgICAgIGlmICghKnN0cikgcmVzdWx0IHw9IDE7Ci0tICAgICAgICAgICBpZiAoZXJybm8pIHJlc3VsdCB8PSAyOwotLSAgICAgICAgICAgaWYgKHN0cnN0ciAoc3RyLCAibmtub3duIikgfHwgc3Ryc3RyIChzdHIsICJuZGVmaW5lZCIpKQotLSAgICAgICAgICAgICByZXN1bHQgfD0gNDsKLS0gICAgICAgICAgIHJldHVybiByZXN1bHQ7XV0pXSwKLS0gICAgICBbZ2xfY3ZfZnVuY19zdHJlcnJvcl8wX3dvcmtzPXllc10sCi0tICAgICAgW2dsX2N2X2Z1bmNfc3RyZXJyb3JfMF93b3Jrcz1ub10sCi0tICAgICAgW2RubCBCZSBwZXNzaW1pc3RpYyBvbiBjcm9zcy1jb21waWxlcyBmb3Igbm93LgotLSAgICAgICBnbF9jdl9mdW5jX3N0cmVycm9yXzBfd29ya3M9Imd1ZXNzaW5nIG5vIl0pCi0tICBdKQotLSAgaWYgdGVzdCAiJGdsX2N2X2Z1bmNfc3RyZXJyb3JfMF93b3JrcyIgIT0geWVzOyB0aGVuCi0tICAgIFJFUExBQ0VfU1RSRVJST1JfMD0xCi0tICAgIEFDX0RFRklORShbUkVQTEFDRV9TVFJFUlJPUl8wXSwgWzFdLCBbRGVmaW5lIHRvIDEgaWYgc3RyZXJyb3IoMCkKLS0gICAgICBkb2VzIG5vdCByZXR1cm4gYSBtZXNzYWdlIGltcGx5aW5nIHN1Y2Nlc3MuXSkKLSsjIFByZXJlcXVpc2l0ZXMgb2YgbGliL3N0cmVycm9yLmMuCi0rQUNfREVGVU4oW2dsX1BSRVJFUV9TVFJFUlJPUl0sIFsKLSsgIEFDX0NIRUNLX0RFQ0xTKFtzdHJlcnJvcl0pCi0rICBBQ19DSEVDS19IRUFERVJTX09OQ0UoW3N5cy9zb2NrZXQuaF0pCi0rICBpZiB0ZXN0ICRhY19jdl9oZWFkZXJfc3lzX3NvY2tldF9oICE9IHllczsgdGhlbgotKyAgICBkbmwgV2UgY2Fubm90IHVzZSBBQ19DSEVDS19IRUFERVJTX09OQ0UgaGVyZSwgYmVjYXVzZSB0aGF0IHdvdWxkIG1ha2UKLSsgICAgZG5sIHRoZSBjaGVjayBmb3IgdGhvc2UgaGVhZGVycyB1bmNvbmRpdGlvbmFsOyB5ZXQgY3lnd2luIHJlcG9ydHMKLSsgICAgZG5sIHRoYXQgdGhlIGhlYWRlcnMgYXJlIHByZXNlbnQgYnV0IGNhbm5vdCBiZSBjb21waWxlZCAoc2luY2Ugb24KLSsgICAgZG5sIGN5Z3dpbiwgYWxsIHNvY2tldCBpbmZvcm1hdGlvbiBzaG91bGQgY29tZSBmcm9tIHN5cy9zb2NrZXQuaCkuCi0rICAgIEFDX0NIRUNLX0hFQURFUlMoW3dpbnNvY2syLmhdKQotICAgZmkKLSBdKQotZGlmZiAtTmF1cnAgbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L3N0cmluZ19oLm00IGxpYmljb252LTEuMTQvc3JjbTQvc3RyaW5nX2gubTQKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbTQvc3RyaW5nX2gubTQJMjAxMS0wOC0wNyAwNjo0MjowNy4wMDAwMDAwMDAgLTA3MDAKLSsrKyBsaWJpY29udi0xLjE0L3NyY200L3N0cmluZ19oLm00CTIwMTItMDEtMDggMDI6MDc6NDAuODk0NDg0NDg1IC0wODAwCi1AQCAtNSw3ICs1LDcgQEAKLSAjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCi0gIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCi0gCi0tIyBzZXJpYWwgMjEKLSsjIHNlcmlhbCAyMAotIAotICMgV3JpdHRlbiBieSBQYXVsIEVnZ2VydC4KLSAKLUBAIC0yNyw5ICsyNyw5IEBAIEFDX0RFRlVOKFtnbF9IRUFERVJfU1RSSU5HX0hfQk9EWV0sCi0gICBkbmwgZ3VhcmFudGVlZCBieSBDODkuCi0gICBnbF9XQVJOX09OX1VTRV9QUkVQQVJFKFtbI2luY2x1ZGUgPHN0cmluZy5oPgotICAgICBdXSwKLS0gICAgW2Zmc2wgZmZzbGwgbWVtbWVtIG1lbXBjcHkgbWVtcmNociByYXdtZW1jaHIgc3RwY3B5IHN0cG5jcHkgc3RyY2hybnVsCi0tICAgICBzdHJkdXAgc3RybmNhdCBzdHJuZHVwIHN0cm5sZW4gc3RycGJyayBzdHJzZXAgc3RyY2FzZXN0ciBzdHJ0b2tfcgotLSAgICAgc3RyZXJyb3JfciBzdHJzaWduYWwgc3RydmVyc2NtcF0pCi0rICAgIFttZW1tZW0gbWVtcGNweSBtZW1yY2hyIHJhd21lbWNociBzdHBjcHkgc3RwbmNweSBzdHJjaHJudWwgc3RyZHVwCi0rICAgICBzdHJuY2F0IHN0cm5kdXAgc3RybmxlbiBzdHJwYnJrIHN0cnNlcCBzdHJjYXNlc3RyIHN0cnRva19yIHN0cmVycm9yX3IKLSsgICAgIHN0cnNpZ25hbCBzdHJ2ZXJzY21wXSkKLSBdKQotIAotIEFDX0RFRlVOKFtnbF9TVFJJTkdfTU9EVUxFX0lORElDQVRPUl0sCi1AQCAtNDMsOCArNDMsNiBAQCBBQ19ERUZVTihbZ2xfU1RSSU5HX01PRFVMRV9JTkRJQ0FUT1JdLAotIAotIEFDX0RFRlVOKFtnbF9IRUFERVJfU1RSSU5HX0hfREVGQVVMVFNdLAotIFsKLS0gIEdOVUxJQl9GRlNMPTA7ICAgICAgICBBQ19TVUJTVChbR05VTElCX0ZGU0xdKQotLSAgR05VTElCX0ZGU0xMPTA7ICAgICAgIEFDX1NVQlNUKFtHTlVMSUJfRkZTTExdKQotICAgR05VTElCX01FTUNIUj0wOyAgICAgIEFDX1NVQlNUKFtHTlVMSUJfTUVNQ0hSXSkKLSAgIEdOVUxJQl9NRU1NRU09MDsgICAgICBBQ19TVUJTVChbR05VTElCX01FTU1FTV0pCi0gICBHTlVMSUJfTUVNUENQWT0wOyAgICAgQUNfU1VCU1QoW0dOVUxJQl9NRU1QQ1BZXSkKLUBAIC04Miw4ICs4MCw2IEBAIEFDX0RFRlVOKFtnbF9IRUFERVJfU1RSSU5HX0hfREVGQVVMVFNdLAotICAgR05VTElCX1NUUlZFUlNDTVA9MDsgIEFDX1NVQlNUKFtHTlVMSUJfU1RSVkVSU0NNUF0pCi0gICBIQVZFX01CU0xFTj0wOyAgICAgICAgQUNfU1VCU1QoW0hBVkVfTUJTTEVOXSkKLSAgIGRubCBBc3N1bWUgcHJvcGVyIEdOVSBiZWhhdmlvciB1bmxlc3MgYW5vdGhlciBtb2R1bGUgc2F5cyBvdGhlcndpc2UuCi0tICBIQVZFX0ZGU0w9MTsgICAgICAgICAgICAgICAgICBBQ19TVUJTVChbSEFWRV9GRlNMXSkKLS0gIEhBVkVfRkZTTEw9MTsgICAgICAgICAgICAgICAgIEFDX1NVQlNUKFtIQVZFX0ZGU0xMXSkKLSAgIEhBVkVfTUVNQ0hSPTE7ICAgICAgICAgICAgICAgIEFDX1NVQlNUKFtIQVZFX01FTUNIUl0pCi0gICBIQVZFX0RFQ0xfTUVNTUVNPTE7ICAgICAgICAgICBBQ19TVUJTVChbSEFWRV9ERUNMX01FTU1FTV0pCi0gICBIQVZFX01FTVBDUFk9MTsgICAgICAgICAgICAgICBBQ19TVUJTVChbSEFWRV9NRU1QQ1BZXSkKLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC9zeXNfc29ja2V0X2gubTQgbGliaWNvbnYtMS4xNC9zcmNtNC9zeXNfc29ja2V0X2gubTQKLS0tLSBsaWJpY29udi0xLjE0Lm9yZy8vc3JjbTQvc3lzX3NvY2tldF9oLm00CTIwMTEtMDgtMDcgMDY6NDI6MDcuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNtNC9zeXNfc29ja2V0X2gubTQJMTk2OS0xMi0zMSAxNjowMDowMC4wMDAwMDAwMDAgLTA4MDAKLUBAIC0xLDE3NyArMCwwIEBACi0tIyBzeXNfc29ja2V0X2gubTQgc2VyaWFsIDIyCi0tZG5sIENvcHlyaWdodCAoQykgMjAwNS0yMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotLWRubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgotLWRubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAotLWRubCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCi0tCi0tZG5sIEZyb20gU2ltb24gSm9zZWZzc29uLgotLQotLUFDX0RFRlVOKFtnbF9IRUFERVJfU1lTX1NPQ0tFVF0sCi0tWwotLSAgQUNfUkVRVUlSRShbZ2xfU1lTX1NPQ0tFVF9IX0RFRkFVTFRTXSkKLS0gIEFDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSkKLS0gIEFDX1JFUVVJUkUoW0FDX0NfSU5MSU5FXSkKLS0KLS0gIGRubCBPbiBPU0YvMSwgdGhlIGZ1bmN0aW9ucyByZWN2KCksIHNlbmQoKSwgcmVjdmZyb20oKSwgc2VuZHRvKCkgaGF2ZQotLSAgZG5sIG9sZC1zdHlsZSBkZWNsYXJhdGlvbnMgKHdpdGggcmV0dXJuIHR5cGUgJ2ludCcgaW5zdGVhZCBvZiAnc3NpemVfdCcpCi0tICBkbmwgdW5sZXNzIF9QT1NJWF9QSUlfU09DS0VUIGlzIGRlZmluZWQuCi0tICBjYXNlICIkaG9zdF9vcyIgaW4KLS0gICAgb3NmKikKLS0gICAgICBBQ19ERUZJTkUoW19QT1NJWF9QSUlfU09DS0VUXSwgWzFdLAotLSAgICAgICAgW0RlZmluZSB0byAxIGluIG9yZGVyIHRvIGdldCB0aGUgUE9TSVggY29tcGF0aWJsZSBkZWNsYXJhdGlvbnMKLS0gICAgICAgICBvZiBzb2NrZXQgZnVuY3Rpb25zLl0pCi0tICAgICAgOzsKLS0gIGVzYWMKLS0KLS0gIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIDxzeXMvc29ja2V0Lmg+IGlzIHNlbGYtY29udGFpbmVkXSwKLS0gICAgW2dsX2N2X2hlYWRlcl9zeXNfc29ja2V0X2hfc2VsZmNvbnRhaW5lZF0sCi0tICAgIFsKLS0gICAgICBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD5dXSwgW1tdXSldLAotLSAgICAgICAgW2dsX2N2X2hlYWRlcl9zeXNfc29ja2V0X2hfc2VsZmNvbnRhaW5lZD15ZXNdLAotLSAgICAgICAgW2dsX2N2X2hlYWRlcl9zeXNfc29ja2V0X2hfc2VsZmNvbnRhaW5lZD1ub10pCi0tICAgIF0pCi0tICBpZiB0ZXN0ICRnbF9jdl9oZWFkZXJfc3lzX3NvY2tldF9oX3NlbGZjb250YWluZWQgPSB5ZXM7IHRoZW4KLS0gICAgZG5sIElmIHRoZSBzaHV0ZG93biBmdW5jdGlvbiBleGlzdHMsIDxzeXMvc29ja2V0Lmg+IHNob3VsZCBkZWZpbmUKLS0gICAgZG5sIFNIVVRfUkQsIFNIVVRfV1IsIFNIVVRfUkRXUi4KLS0gICAgQUNfQ0hFQ0tfRlVOQ1MoW3NodXRkb3duXSkKLS0gICAgaWYgdGVzdCAkYWNfY3ZfZnVuY19zaHV0ZG93biA9IHllczsgdGhlbgotLSAgICAgIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIDxzeXMvc29ja2V0Lmg+IGRlZmluZXMgdGhlIFNIVVRfKiBtYWNyb3NdLAotLSAgICAgICAgW2dsX2N2X2hlYWRlcl9zeXNfc29ja2V0X2hfc2h1dF0sCi0tICAgICAgICBbCi0tICAgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAotLSAgICAgICAgICAgIFtBQ19MQU5HX1BST0dSQU0oW1sjaW5jbHVkZSA8c3lzL3NvY2tldC5oPl1dLAotLSAgICAgICAgICAgICAgIFtbaW50IGFbXSA9IHsgU0hVVF9SRCwgU0hVVF9XUiwgU0hVVF9SRFdSIH07XV0pXSwKLS0gICAgICAgICAgICBbZ2xfY3ZfaGVhZGVyX3N5c19zb2NrZXRfaF9zaHV0PXllc10sCi0tICAgICAgICAgICAgW2dsX2N2X2hlYWRlcl9zeXNfc29ja2V0X2hfc2h1dD1ub10pCi0tICAgICAgICBdKQotLSAgICAgIGlmIHRlc3QgJGdsX2N2X2hlYWRlcl9zeXNfc29ja2V0X2hfc2h1dCA9IG5vOyB0aGVuCi0tICAgICAgICBTWVNfU09DS0VUX0g9J3N5cy9zb2NrZXQuaCcKLS0gICAgICBmaQotLSAgICBmaQotLSAgZmkKLS0gICMgV2UgbmVlZCB0byBjaGVjayBmb3Igd3MydGNwaXAuaCBub3cuCi0tICBnbF9QUkVSRVFfU1lTX0hfU09DS0VUCi0tICBBQ19DSEVDS19UWVBFUyhbc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UsIHNhX2ZhbWlseV90XSwsLFsKLS0gIC8qIHN5cy90eXBlcy5oIGlzIG5vdCBuZWVkZWQgYWNjb3JkaW5nIHRvIFBPU0lYLCBidXQgdGhlCi0tICAgICBzeXMvc29ja2V0LmggaW4gaTM4Ni11bmtub3duLWZyZWVic2Q0LjEwIGFuZAotLSAgICAgcG93ZXJwYy1hcHBsZS1kYXJ3aW41LjUgcmVxdWlyZWQgaXQuICovCi0tI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotLSNpZmRlZiBIQVZFX1NZU19TT0NLRVRfSAotLSNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0tI2VuZGlmCi0tI2lmZGVmIEhBVkVfV1MyVENQSVBfSAotLSNpbmNsdWRlIDx3czJ0Y3BpcC5oPgotLSNlbmRpZgotLV0pCi0tICBpZiB0ZXN0ICRhY19jdl90eXBlX3N0cnVjdF9zb2NrYWRkcl9zdG9yYWdlID0gbm87IHRoZW4KLS0gICAgSEFWRV9TVFJVQ1RfU09DS0FERFJfU1RPUkFHRT0wCi0tICBmaQotLSAgaWYgdGVzdCAkYWNfY3ZfdHlwZV9zYV9mYW1pbHlfdCA9IG5vOyB0aGVuCi0tICAgIEhBVkVfU0FfRkFNSUxZX1Q9MAotLSAgZmkKLS0gIGlmIHRlc3QgJGFjX2N2X3R5cGVfc3RydWN0X3NvY2thZGRyX3N0b3JhZ2UgIT0gbm87IHRoZW4KLS0gICAgQUNfQ0hFQ0tfTUVNQkVSUyhbc3RydWN0IHNvY2thZGRyX3N0b3JhZ2Uuc3NfZmFtaWx5XSwKLS0gICAgICBbXSwKLS0gICAgICBbSEFWRV9TVFJVQ1RfU09DS0FERFJfU1RPUkFHRV9TU19GQU1JTFk9MF0sCi0tICAgICAgWyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLS0gICAgICAgI2lmZGVmIEhBVkVfU1lTX1NPQ0tFVF9ICi0tICAgICAgICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0tICAgICAgICNlbmRpZgotLSAgICAgICAjaWZkZWYgSEFWRV9XUzJUQ1BJUF9ICi0tICAgICAgICNpbmNsdWRlIDx3czJ0Y3BpcC5oPgotLSAgICAgICAjZW5kaWYKLS0gICAgICBdKQotLSAgZmkKLS0gIGlmIHRlc3QgJEhBVkVfU1RSVUNUX1NPQ0tBRERSX1NUT1JBR0UgPSAwIHx8IHRlc3QgJEhBVkVfU0FfRkFNSUxZX1QgPSAwIFwKLS0gICAgIHx8IHRlc3QgJEhBVkVfU1RSVUNUX1NPQ0tBRERSX1NUT1JBR0VfU1NfRkFNSUxZID0gMDsgdGhlbgotLSAgICBTWVNfU09DS0VUX0g9J3N5cy9zb2NrZXQuaCcKLS0gIGZpCi0tICBnbF9QUkVSRVFfU1lTX0hfV0lOU09DSzIKLS0KLS0gIGRubCBDaGVjayBmb3IgZGVjbGFyYXRpb25zIG9mIGFueXRoaW5nIHdlIHdhbnQgdG8gcG9pc29uIGlmIHRoZQotLSAgZG5sIGNvcnJlc3BvbmRpbmcgZ251bGliIG1vZHVsZSBpcyBub3QgaW4gdXNlLgotLSAgZ2xfV0FSTl9PTl9VU0VfUFJFUEFSRShbWwotLS8qIFNvbWUgc3lzdGVtcyByZXF1aXJlIHByZXJlcXVpc2l0ZSBoZWFkZXJzLiAgKi8KLS0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0tI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLS0gICAgXV0sIFtzb2NrZXQgY29ubmVjdCBhY2NlcHQgYmluZCBnZXRwZWVybmFtZSBnZXRzb2NrbmFtZSBnZXRzb2Nrb3B0Ci0tICAgIGxpc3RlbiByZWN2IHNlbmQgcmVjdmZyb20gc2VuZHRvIHNldHNvY2tvcHQgc2h1dGRvd24gYWNjZXB0NF0pCi0tXSkKLS0KLS1BQ19ERUZVTihbZ2xfUFJFUkVRX1NZU19IX1NPQ0tFVF0sCi0tWwotLSAgZG5sIENoZWNrIHByZXJlcXVpc2l0ZXMgb2YgdGhlIDxzeXMvc29ja2V0Lmg+IHJlcGxhY2VtZW50LgotLSAgQUNfUkVRVUlSRShbZ2xfQ0hFQ0tfU09DS0VUX0hFQURFUlNdKQotLSAgZ2xfQ0hFQ0tfTkVYVF9IRUFERVJTKFtzeXMvc29ja2V0LmhdKQotLSAgaWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3N5c19zb2NrZXRfaCA9IHllczsgdGhlbgotLSAgICBIQVZFX1NZU19TT0NLRVRfSD0xCi0tICAgIEhBVkVfV1MyVENQSVBfSD0wCi0tICBlbHNlCi0tICAgIEhBVkVfU1lTX1NPQ0tFVF9IPTAKLS0gICAgaWYgdGVzdCAkYWNfY3ZfaGVhZGVyX3dzMnRjcGlwX2ggPSB5ZXM7IHRoZW4KLS0gICAgICBIQVZFX1dTMlRDUElQX0g9MQotLSAgICBlbHNlCi0tICAgICAgSEFWRV9XUzJUQ1BJUF9IPTAKLS0gICAgZmkKLS0gIGZpCi0tICBBQ19TVUJTVChbSEFWRV9TWVNfU09DS0VUX0hdKQotLSAgQUNfU1VCU1QoW0hBVkVfV1MyVENQSVBfSF0pCi0tXSkKLS0KLS0jIENvbW1vbiBwcmVyZXF1aXNpdGVzIG9mIHRoZSA8c3lzL3NvY2tldC5oPiByZXBsYWNlbWVudCBhbmQgb2YgdGhlCi0tIyA8c3lzL3NlbGVjdC5oPiByZXBsYWNlbWVudC4KLS0jIFNldHMgYW5kIHN1YnN0aXR1dGVzIEhBVkVfV0lOU09DSzJfSC4KLS1BQ19ERUZVTihbZ2xfUFJFUkVRX1NZU19IX1dJTlNPQ0syXSwKLS1bCi0tICBtNF9pZmRlZihbZ2xfVU5JU1REX0hfREVGQVVMVFNdLCBbQUNfUkVRVUlSRShbZ2xfVU5JU1REX0hfREVGQVVMVFNdKV0pCi0tICBtNF9pZmRlZihbZ2xfU1lTX0lPQ1RMX0hfREVGQVVMVFNdLCBbQUNfUkVRVUlSRShbZ2xfU1lTX0lPQ1RMX0hfREVGQVVMVFNdKV0pCi0tICBBQ19DSEVDS19IRUFERVJTX09OQ0UoW3N5cy9zb2NrZXQuaF0pCi0tICBpZiB0ZXN0ICRhY19jdl9oZWFkZXJfc3lzX3NvY2tldF9oICE9IHllczsgdGhlbgotLSAgICBkbmwgV2UgY2Fubm90IHVzZSBBQ19DSEVDS19IRUFERVJTX09OQ0UgaGVyZSwgYmVjYXVzZSB0aGF0IHdvdWxkIG1ha2UKLS0gICAgZG5sIHRoZSBjaGVjayBmb3IgdGhvc2UgaGVhZGVycyB1bmNvbmRpdGlvbmFsOyB5ZXQgY3lnd2luIHJlcG9ydHMKLS0gICAgZG5sIHRoYXQgdGhlIGhlYWRlcnMgYXJlIHByZXNlbnQgYnV0IGNhbm5vdCBiZSBjb21waWxlZCAoc2luY2Ugb24KLS0gICAgZG5sIGN5Z3dpbiwgYWxsIHNvY2tldCBpbmZvcm1hdGlvbiBzaG91bGQgY29tZSBmcm9tIHN5cy9zb2NrZXQuaCkuCi0tICAgIEFDX0NIRUNLX0hFQURFUlMoW3dpbnNvY2syLmhdKQotLSAgZmkKLS0gIGlmIHRlc3QgIiRhY19jdl9oZWFkZXJfd2luc29jazJfaCIgPSB5ZXM7IHRoZW4KLS0gICAgSEFWRV9XSU5TT0NLMl9IPTEKLS0gICAgVU5JU1REX0hfSEFWRV9XSU5TT0NLMl9IPTEKLS0gICAgU1lTX0lPQ1RMX0hfSEFWRV9XSU5TT0NLMl9IPTEKLS0gIGVsc2UKLS0gICAgSEFWRV9XSU5TT0NLMl9IPTAKLS0gIGZpCi0tICBBQ19TVUJTVChbSEFWRV9XSU5TT0NLMl9IXSkKLS1dKQotLQotLUFDX0RFRlVOKFtnbF9TWVNfU09DS0VUX01PRFVMRV9JTkRJQ0FUT1JdLAotLVsKLS0gIGRubCBVc2UgQUNfUkVRVUlSRSBoZXJlLCBzbyB0aGF0IHRoZSBkZWZhdWx0IHNldHRpbmdzIGFyZSBleHBhbmRlZCBvbmNlIG9ubHkuCi0tICBBQ19SRVFVSVJFKFtnbF9TWVNfU09DS0VUX0hfREVGQVVMVFNdKQotLSAgZ2xfTU9EVUxFX0lORElDQVRPUl9TRVRfVkFSSUFCTEUoWyQxXSkKLS0gIGRubCBEZWZpbmUgaXQgYWxzbyBhcyBhIEMgbWFjcm8sIGZvciB0aGUgYmVuZWZpdCBvZiB0aGUgdW5pdCB0ZXN0cy4KLS0gIGdsX01PRFVMRV9JTkRJQ0FUT1JfRk9SX1RFU1RTKFskMV0pCi0tXSkKLS0KLS1BQ19ERUZVTihbZ2xfU1lTX1NPQ0tFVF9IX0RFRkFVTFRTXSwKLS1bCi0tICBHTlVMSUJfU09DS0VUPTA7ICAgICAgQUNfU1VCU1QoW0dOVUxJQl9TT0NLRVRdKQotLSAgR05VTElCX0NPTk5FQ1Q9MDsgICAgIEFDX1NVQlNUKFtHTlVMSUJfQ09OTkVDVF0pCi0tICBHTlVMSUJfQUNDRVBUPTA7ICAgICAgQUNfU1VCU1QoW0dOVUxJQl9BQ0NFUFRdKQotLSAgR05VTElCX0JJTkQ9MDsgICAgICAgIEFDX1NVQlNUKFtHTlVMSUJfQklORF0pCi0tICBHTlVMSUJfR0VUUEVFUk5BTUU9MDsgQUNfU1VCU1QoW0dOVUxJQl9HRVRQRUVSTkFNRV0pCi0tICBHTlVMSUJfR0VUU09DS05BTUU9MDsgQUNfU1VCU1QoW0dOVUxJQl9HRVRTT0NLTkFNRV0pCi0tICBHTlVMSUJfR0VUU09DS09QVD0wOyAgQUNfU1VCU1QoW0dOVUxJQl9HRVRTT0NLT1BUXSkKLS0gIEdOVUxJQl9MSVNURU49MDsgICAgICBBQ19TVUJTVChbR05VTElCX0xJU1RFTl0pCi0tICBHTlVMSUJfUkVDVj0wOyAgICAgICAgQUNfU1VCU1QoW0dOVUxJQl9SRUNWXSkKLS0gIEdOVUxJQl9TRU5EPTA7ICAgICAgICBBQ19TVUJTVChbR05VTElCX1NFTkRdKQotLSAgR05VTElCX1JFQ1ZGUk9NPTA7ICAgIEFDX1NVQlNUKFtHTlVMSUJfUkVDVkZST01dKQotLSAgR05VTElCX1NFTkRUTz0wOyAgICAgIEFDX1NVQlNUKFtHTlVMSUJfU0VORFRPXSkKLS0gIEdOVUxJQl9TRVRTT0NLT1BUPTA7ICBBQ19TVUJTVChbR05VTElCX1NFVFNPQ0tPUFRdKQotLSAgR05VTElCX1NIVVRET1dOPTA7ICAgIEFDX1NVQlNUKFtHTlVMSUJfU0hVVERPV05dKQotLSAgR05VTElCX0FDQ0VQVDQ9MDsgICAgIEFDX1NVQlNUKFtHTlVMSUJfQUNDRVBUNF0pCi0tICBIQVZFX1NUUlVDVF9TT0NLQUREUl9TVE9SQUdFPTE7IEFDX1NVQlNUKFtIQVZFX1NUUlVDVF9TT0NLQUREUl9TVE9SQUdFXSkKLS0gIEhBVkVfU1RSVUNUX1NPQ0tBRERSX1NUT1JBR0VfU1NfRkFNSUxZPTE7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgQUNfU1VCU1QoW0hBVkVfU1RSVUNUX1NPQ0tBRERSX1NUT1JBR0VfU1NfRkFNSUxZXSkKLS0gIEhBVkVfU0FfRkFNSUxZX1Q9MTsgICBBQ19TVUJTVChbSEFWRV9TQV9GQU1JTFlfVF0pCi0tICBIQVZFX0FDQ0VQVDQ9MTsgICAgICAgQUNfU1VCU1QoW0hBVkVfQUNDRVBUNF0pCi0tXSkKLWRpZmYgLU5hdXJwIGxpYmljb252LTEuMTQub3JnLy9zcmNtNC93YXJuLW9uLXVzZS5tNCBsaWJpY29udi0xLjE0L3NyY200L3dhcm4tb24tdXNlLm00Ci0tLS0gbGliaWNvbnYtMS4xNC5vcmcvL3NyY200L3dhcm4tb24tdXNlLm00CTIwMTEtMDgtMDcgMDY6NDI6MDcuMDAwMDAwMDAwIC0wNzAwCi0rKysgbGliaWNvbnYtMS4xNC9zcmNtNC93YXJuLW9uLXVzZS5tNAkyMDEyLTAxLTA4IDAyOjA3OjQwLjkzNDQ4NDQ4NyAtMDgwMAotQEAgLTEsNCArMSw0IEBACi0tIyB3YXJuLW9uLXVzZS5tNCBzZXJpYWwgNAotKyMgd2Fybi1vbi11c2UubTQgc2VyaWFsIDIKLSBkbmwgQ29weXJpZ2h0IChDKSAyMDEwLTIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCi0gZG5sIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCi1AQCAtMjcsOCArMjcsNiBAQCBBQ19ERUZVTihbZ2xfV0FSTl9PTl9VU0VfUFJFUEFSRV0sCi0gICAgIFtBSF9URU1QTEFURShbSEFWRV9SQVdfREVDTF9dQVNfVFJfQ1BQKG00X2RlZm4oW2dsX2RlY2xdKSksCi0gICAgICAgW0RlZmluZSB0byAxIGlmIF1tNF9kZWZuKFtnbF9kZWNsXSlbIGlzIGRlY2xhcmVkIGV2ZW4gYWZ0ZXIKLSAgICAgICAgdW5kZWZpbmluZyBtYWNyb3MuXSldKWRubAotLWRubCBGSVhNRTogZ2xfU3ltYm9sIG11c3QgYmUgdXNlZCB1bnF1b3RlZCB1bnRpbCB3ZSBjYW4gYXNzdW1lCi0tZG5sIGF1dG9jb25mIDIuNjQgb3IgbmV3ZXIuCi0gICBmb3IgZ2xfZnVuYyBpbiBtNF9mbGF0dGVuKFskMl0pOyBkbwotICAgICBBU19WQVJfUFVTSERFRihbZ2xfU3ltYm9sXSwgW2dsX2N2X2hhdmVfcmF3X2RlY2xfJGdsX2Z1bmNdKWRubAotICAgICBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciAkZ2xfZnVuYyBpcyBkZWNsYXJlZCB3aXRob3V0IGEgbWFjcm9dLAotQEAgLTM3LDggKzM1LDggQEAgZG5sIGF1dG9jb25mIDIuNjQgb3IgbmV3ZXIuCi0gW0AlOkB1bmRlZiAkZ2xfZnVuYwotICAgKHZvaWQpICRnbF9mdW5jO10pXSwKLSAgICAgICAgIFtBU19WQVJfU0VUKGdsX1N5bWJvbCwgW3llc10pXSwgW0FTX1ZBUl9TRVQoZ2xfU3ltYm9sLCBbbm9dKV0pXSkKLS0gICAgQVNfVkFSX0lGKGdsX1N5bWJvbCwgW3llc10sCi0tICAgICAgW0FDX0RFRklORV9VTlFVT1RFRChBU19UUl9DUFAoW0hBVkVfUkFXX0RFQ0xfJGdsX2Z1bmNdKSwgWzFdKQotKyAgICAgQVNfVkFSX0lGKGdsX1N5bWJvbCwgW3llc10sCi0rICAgICAgIFtBQ19ERUZJTkVfVU5RVU9URUQoQVNfVFJfQ1BQKFtIQVZFX1JBV19ERUNMXyRnbF9mdW5jXSksIFsxXSkKLSAgICAgICAgZG5sIHNob3J0Y3V0IC0gaWYgdGhlIHJhdyBkZWNsYXJhdGlvbiBleGlzdHMsIHRoZW4gc2V0IGEgY2FjaGUKLSAgICAgICAgZG5sIHZhcmlhYmxlIHRvIGFsbG93IHNraXBwaW5nIGFueSBsYXRlciBBQ19DSEVDS19ERUNMIGVmZm9ydHMKLSAgICAgICAgZXZhbCBhY19jdl9oYXZlX2RlY2xfJGdsX2Z1bmM9eWVzXSkKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJpY29udi9saWJpY29udi0xLjE0L2F1dG9jb25mLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmljb252L2xpYmljb252LTEuMTQvYXV0b2NvbmYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkMzRjZTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmljb252L2xpYmljb252LTEuMTQvYXV0b2NvbmYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi1JdCBhZGRzIHRoZSB2YXJpYWJsZXMgdGhhdCBhcmUgbmVlZGVkCi1mb3IgYXV0b2NvbmYgMi42NSB0byByZWNvbmZpZ3VyZSBsaWJpY29udiBhbmQgZGVsZXRlIHRoZSBtNCBtYWNyb3MKLWRpcmVjdG9yeS4gSXRzIGltcG9ydGVkIGZyb20gT0UuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1JbmRleDogbGliaWNvbnYtMS4xMy4xL2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxpYmljb252LTEuMTMuMS5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIGxpYmljb252LTEuMTMuMS9jb25maWd1cmUuYWMKLUBAIC0yMyw3ICsyMyw3IEBAIEFDX0NPTkZJR19BVVhfRElSKFtidWlsZC1hdXhdKQotIEFNX0lOSVRfQVVUT01BS0UoW2xpYmljb252XSwgWzEuMTMuMV0pCi0gQUNfQ09ORklHX0hFQURFUlMoW2NvbmZpZy5oIGxpYi9jb25maWcuaF0pCi0gQUNfUFJPR19NQUtFX1NFVAotLQotK0FDX0NPTkZJR19NQUNST19ESVIoW200XSkKLSBkbmwgICAgICAgICAgIGNoZWNrcyBmb3IgYmFzaWMgcHJvZ3JhbXMKLSAKLSBBQ19QUk9HX0NDCi1JbmRleDogbGliaWNvbnYtMS4xMy4xL2xpYmNoYXJzZXQvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGliaWNvbnYtMS4xMy4xLm9yaWcvbGliY2hhcnNldC9jb25maWd1cmUuYWMKLSsrKyBsaWJpY29udi0xLjEzLjEvbGliY2hhcnNldC9jb25maWd1cmUuYWMKLUBAIC0xNiwxNyArMTYsMTcgQEAgZG5sIGFsb25nIHdpdGggdGhlIEdOVSBDSEFSU0VUIExpYnJhcnk7Ci0gZG5sIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwKLSBkbmwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotIAotLUFDX1BSRVJFUShbMi4xM10pCi0rQUNfUFJFUkVRKDIuNjEpCi0rQUNfSU5JVChbbGliY2hhcnNldF0sWzEuNF0gKQotK0FDX0NPTkZJR19TUkNESVIoW2xpYi9sb2NhbGNoYXJzZXQuY10pCi0gCi0tUEFDS0FHRT1saWJjaGFyc2V0Ci0tVkVSU0lPTj0xLjQKLS0KLS1BQ19JTklUKFtsaWIvbG9jYWxjaGFyc2V0LmNdKQotIEFDX0NPTkZJR19BVVhfRElSKFtidWlsZC1hdXhdKQotIEFDX0NPTkZJR19IRUFERVIoW2NvbmZpZy5oXSkKLSBBQ19QUk9HX01BS0VfU0VUCi0tQUNfU1VCU1QoW1BBQ0tBR0VdKQotLUFDX1NVQlNUKFtWRVJTSU9OXSkKLStkbmwgQUNfU1VCU1QoUEFDS0FHRSkKLStkbmwgQUNfU1VCU1QoVkVSU0lPTikKLSsKLStBQ19DT05GSUdfTUFDUk9fRElSKFttNF0pCi0gCi0gZG5sICAgICAgICAgICBjaGVja3MgZm9yIGJhc2ljIHByb2dyYW1zCi0gCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliaWNvbnYvbGliaWNvbnZfMS4xNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJpY29udi9saWJpY29udl8xLjE0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZmQ1MTE0Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJpY29udi9saWJpY29udl8xLjE0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotU1VNTUFSWSA9ICJDaGFyYWN0ZXIgZW5jb2Rpbmcgc3VwcG9ydCBsaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAiR05VIGxpYmljb252IC0gbGliaWNvbnYgaXMgZm9yIHlvdSBpZiB5b3VyIGFwcGxpY2F0aW9uIG5lZWRzIHRvIHN1cHBvcnQgXAotbXVsdGlwbGUgY2hhcmFjdGVyIGVuY29kaW5ncywgYnV0IHRoYXQgc3VwcG9ydCBsYWNrcyBmcm9tIHlvdXIgc3lzdGVtLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJpY29udiIKLVNFQ1RJT04gPSAibGlicyIKLU5PVEVTID0gIk5lZWRzIHRvIGJlIHN0cmlwcGVkIGRvd24gdG86IGFzY2lpIGlzbzg4NTktMSBldWNqcCBpc28tMjAyMmpwIGdiIHV0ZjgiCi1QUk9WSURFUyA9ICJ2aXJ0dWFsL2xpYmljb252IgotUFIgPSAicjEiCi1MSUNFTlNFID0gIkxHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuTElCO21kNT05ZjYwNGQ4YTRmOGU3NGY0ZjUxNDA4NDVhMjFiNjY3NCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWJjaGFyc2V0L0NPUFlJTkcuTElCO21kNT05ZjYwNGQ4YTRmOGU3NGY0ZjUxNDA4NDVhMjFiNjY3NCIKLQotU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9LyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2F1dG9jb25mLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2FkZC1yZWxvY2F0YWJsZS1tb2R1bGUucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImUzNDUwOWIxNjIzY2VjNDQ5ZGZlYjczZDdjZTljNmM2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjcyYjI0ZGVkMTdkNjg3MTkzYzMzNjZkMGViZTdjZGUxZTZiMThmMGRmOGM1NTQzOGFjOTViZTM5ZThhMzA2MTMiCi0KLVMgPSAiJHtXT1JLRElSfS9saWJpY29udi0ke1BWfSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQKLQotcHl0aG9uIF9fYW5vbnltb3VzKCkgewotICAgIGlmIGQuZ2V0VmFyKCJUQVJHRVRfT1MiKSAhPSAibGludXgiOgotICAgICAgICByZXR1cm4KLSAgICBpZiBkLmdldFZhcigiVENMSUJDIikgPT0gImdsaWJjIjoKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoImxpYmljb252IGlzIHByb3ZpZGVkIGZvciB1c2Ugd2l0aCB1Q2xpYmMgb25seSAtIGdsaWJjIGFscmVhZHkgcHJvdmlkZXMgaWNvbnYiKQotfQotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLXNoYXJlZCAtLWVuYWJsZS1zdGF0aWMgLS1lbmFibGUtcmVsb2NhdGFibGUiCi0KLUxFQURfU09OQU1FID0gImxpYmljb252LnNvIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0Jcm0gLWYgJHtTfS9tNC9saWJ0b29sLm00ICR7U30vbTQvbHRvcHRpb25zLm00ICR7U30vbTQvbHRzdWdhci5tNCAke1N9L200L2x0dmVyc2lvbi5tNCAke1N9L200L2x0fm9ic29sZXRlLm00ICR7U30vbGliY2hhcnNldC9tNC9saWJ0b29sLm00ICR7U30vbGliY2hhcnNldC9tNC9sdG9wdGlvbnMubTQgJHtTfS9saWJjaGFyc2V0L200L2x0c3VnYXIubTQgJHtTfS9saWJjaGFyc2V0L200L2x0dmVyc2lvbi5tNCAke1N9L2xpYmNoYXJzZXQvbTQvbHR+b2Jzb2xldGUubTQKLX0KLQotZG9fY29uZmlndXJlX2FwcGVuZCAoKSB7Ci0gICAgICAgICMgZm9yY2libHkgcmVtb3ZlIFJQQVRIIGZyb20gbGlidG9vbAotICAgICAgICBzZWQgLWkgJ3N8XmhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Lip8aGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0iInxnJyAqbGlidG9vbAotICAgICAgICBzZWQgLWkgJ3N8XnJ1bnBhdGhfdmFyPUxEX1JVTl9QQVRIfHJ1bnBhdGhfdmFyPV9OT19SUEFUSF98ZycgKmxpYnRvb2wKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotCXJtIC1yZiAke0R9JHtsaWJkaXJ9L3ByZWxvYWRhYmxlX2xpYmljb252LnNvCi0Jcm0gLXJmICR7RH0ke2xpYmRpcn0vY2hhcnNldC5hbGlhcwotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUyL2xpYnBjcmUyLUNWRS0yMDE3LTcxODYucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlMi9saWJwY3JlMi1DVkUtMjAxNy03MTg2LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmYTNiZmUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlMi9saWJwY3JlMi1DVkUtMjAxNy03MTg2LnBhdGNoCkBAIC0wLDAgKzEsOTYgQEAKK2xpYnBjcmUyLTEwLjIzOiBGaXggQ1ZFLTIwMTctNzE4NgorCitBIGZ1enogb24gbGlicGNyZTEgdGhyb3VnaCB0aGUgcGNyZXRlc3QgdXRpbGl0eSByZXZlYWxlZCBhbiBpbnZhbGlkIHJlYWQgaW4gdGhlCitsaWJyYXJ5LiBGb3Igd2hvIGlzIGludGVyZXN0ZWQgaW4gYSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiB0aGUgYnVnLCB3aWxsCitmb2xsb3cgYSBmZWVkYmFjayBmcm9tIHVwc3RyZWFtOgorCitUaGlzIHdhcyBhIGdlbnVpbmUgYnVnIGluIHRoZSAzMi1iaXQgbGlicmFyeS4gVGhhbmtzIGZvciBmaW5kaW5nIGl0LiBUaGUgY3Jhc2gKK3dhcyBjYXVzZWQgYnkgdHJ5aW5nIHRvIGZpbmQgYSBVbmljb2RlIHByb3BlcnR5IGZvciBhIGNvZGUgdmFsdWUgZ3JlYXRlciB0aGFuCisweDEwZmZmZiwgdGhlIFVuaWNvZGUgbWF4aW11bSwgd2hlbiBydW5uaW5nIGluIG5vbi1VVEYgbW9kZSAod2hlcmUgY2hhcmFjdGVyCit2YWx1ZXMgY2FuIGJlIHVwIHRvIDB4ZmZmZmZmZmYpLgorCitUaGUgY29tcGxldGUgQVNhbiBvdXRwdXQ6CisKKyMgcGNyZXRlc3QgLTMyIC1kICRGSUxFCis9PTE0Nzg4PT1FUlJPUjogQWRkcmVzc1Nhbml0aXplcjogU0VHViBvbiB1bmtub3duIGFkZHJlc3MgMHg3ZjFiYmZmZWQ0ZGYgKHBjIDB4N2YxYmJlZTNmZTZiIGJwIDB4N2ZmZjhiNTBkOGMwIHNwIDB4N2ZmZjhiNTBkM2EwIFQwKQorPT0xNDc4OD09VGhlIHNpZ25hbCBpcyBjYXVzZWQgYnkgYSBSRUFEIG1lbW9yeSBhY2Nlc3MuCisgICAgIzAgMHg3ZjFiYmVlM2ZlNmEgaW4gbWF0Y2ggL3RtcC9wb3J0YWdlL2Rldi1saWJzL2xpYnBjcmUtOC40MC93b3JrL3BjcmUtOC40MC9wY3JlX2V4ZWMuYzo1NDczOjE4CisgICAgIzEgMHg3ZjFiYmVlMDkyMjYgaW4gcGNyZTMyX2V4ZWMgL3RtcC9wb3J0YWdlL2Rldi1saWJzL2xpYnBjcmUtOC40MC93b3JrL3BjcmUtOC40MC9wY3JlX2V4ZWMuYzo2OTM2OjgKKyAgICAjMiAweDUyN2Q2YyBpbiBtYWluIC90bXAvcG9ydGFnZS9kZXYtbGlicy9saWJwY3JlLTguNDAvd29yay9wY3JlLTguNDAvcGNyZXRlc3QuYzo1MjE4OjkKKyAgICAjMyAweDdmMWJiZGRkNjc4ZiBpbiBfX2xpYmNfc3RhcnRfbWFpbiAvdG1wL3BvcnRhZ2Uvc3lzLWxpYnMvZ2xpYmMtMi4yMy1yMy93b3JrL2dsaWJjLTIuMjMvY3N1Ly4uL2NzdS9saWJjLXN0YXJ0LmM6Mjg5CisgICAgIzQgMHg0MWI0MzggaW4gX2luaXQgKC91c3IvYmluL3BjcmV0ZXN0KzB4NDFiNDM4KQorCitBZGRyZXNzU2FuaXRpemVyIGNhbiBub3QgcHJvdmlkZSBhZGRpdGlvbmFsIGluZm8uCitTVU1NQVJZOiBBZGRyZXNzU2FuaXRpemVyOiBTRUdWIC90bXAvcG9ydGFnZS9kZXYtbGlicy9saWJwY3JlLTguNDAvd29yay9wY3JlLTguNDAvcGNyZV9leGVjLmM6NTQ3MzoxOCBpbiBtYXRjaAorPT0xNDc4OD09QUJPUlRJTkcKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly92Y3MucGNyZS5vcmcvcGNyZTIvY29kZS90cnVuay9zcmMvcGNyZTJfdWNkLmM/dmlldz1wYXRjaCZyMT0zMTYmcjI9NjcwJnNvcnRieT1kYXRlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGh0dHBzOi8vdmNzLnBjcmUub3JnL3BjcmUyL2NvZGUvdHJ1bmsvc3JjL3BjcmUyX2ludGVybmFsLmg/dmlldz1wYXRjaCZyMT02MDAmcjI9NjcwJnNvcnRieT1kYXRlXQorQ1ZFOiBDVkUtMjAxNy03MTg2CisKK1NpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorCistLS0gdHJ1bmsvc3JjL3BjcmUyX3VjZC5jICAyMDE1LzA3LzE3IDE1OjQ0OjUxIDMxNgorKysrIHRydW5rL3NyYy9wY3JlMl91Y2QuYyAgMjAxNy8wMi8yNCAxODoyNTozMiA2NzAKK0BAIC00MSw2ICs0MSwyMCBAQAorIAorIGNvbnN0IGNoYXIgKlBSSVYodW5pY29kZV92ZXJzaW9uKSA9ICI4LjAuMCI7CisgCisrLyogSWYgdGhlIDMyLWJpdCBsaWJyYXJ5IGlzIHJ1biBpbiBub24tMzItYml0IG1vZGUsIGNoYXJhY3RlciB2YWx1ZXMKKytncmVhdGVyIHRoYW4gMHgxMGZmZmYgbWF5IGJlIGVuY291bnRlcmVkLiBGb3IgdGhlc2Ugd2Ugc2V0IHVwIGEKKytzcGVjaWFsIHJlY29yZC4gKi8KKysKKysjaWYgUENSRTJfQ09ERV9VTklUX1dJRFRIID09IDMyCisrY29uc3QgdWNkX3JlY29yZCBQUklWKGR1bW15X3VjZF9yZWNvcmQpW10gPSB7eworKyAgdWNwX0NvbW1vbiwgICAgLyogc2NyaXB0ICovCisrICB1Y3BfQ24sICAgICAgICAvKiB0eXBlIHVuYXNzaWduZWQgKi8KKysgIHVjcF9nYk90aGVyLCAgIC8qIGdyYXBoZW1lIGJyZWFrIHByb3BlcnR5ICovCisrICAwLCAgICAgICAgICAgICAvKiBjYXNlIHNldCAqLworKyAgMCwgICAgICAgICAgICAgLyogb3RoZXIgY2FzZSAqLworKyAgfX07CisrI2VuZGlmCisrCisgLyogV2hlbiByZWNvbXBpbGluZyB0YWJsZXMgd2l0aCBhIG5ldyBVbmljb2RlIHZlcnNpb24sIHBsZWFzZSBjaGVjayB0aGUKKyB0eXBlcyBpbiB0aGlzIHN0cnVjdHVyZSBkZWZpbml0aW9uIGZyb20gcGNyZTJfaW50ZXJuYWwuaCAodGhlIGFjdHVhbAorIGZpZWxkIG5hbWVzIHdpbGwgYmUgZGlmZmVyZW50KToKKy0tLSB0cnVuay9zcmMvcGNyZTJfaW50ZXJuYWwuaCAyMDE2LzExLzE5IDEyOjQ2OjI0IDYwMAorKysrIHRydW5rL3NyYy9wY3JlMl9pbnRlcm5hbC5oIDIwMTcvMDIvMjQgMTg6MjU6MzIgNjcwCitAQCAtMTc3NCwxMCArMTc3NCwxNyBAQAorIC8qIFVDRCBhY2Nlc3MgbWFjcm9zICovCisgCisgI2RlZmluZSBVQ0RfQkxPQ0tfU0laRSAxMjgKKy0jZGVmaW5lIEdFVF9VQ0QoY2gpIChQUklWKHVjZF9yZWNvcmRzKSArIFwKKysjZGVmaW5lIFJFQUxfR0VUX1VDRChjaCkgKFBSSVYodWNkX3JlY29yZHMpICsgXAorICAgICAgICAgUFJJVih1Y2Rfc3RhZ2UyKVtQUklWKHVjZF9zdGFnZTEpWyhpbnQpKGNoKSAvIFVDRF9CTE9DS19TSVpFXSAqIFwKKyAgICAgICAgIFVDRF9CTE9DS19TSVpFICsgKGludCkoY2gpICUgVUNEX0JMT0NLX1NJWkVdKQorIAorKyNpZiBQQ1JFMl9DT0RFX1VOSVRfV0lEVEggPT0gMzIKKysjZGVmaW5lIEdFVF9VQ0QoY2gpICgoY2ggPiBNQVhfVVRGX0NPREVfUE9JTlQpPyBcCisrICBQUklWKGR1bW15X3VjZF9yZWNvcmQpIDogUkVBTF9HRVRfVUNEKGNoKSkKKysjZWxzZQorKyNkZWZpbmUgR0VUX1VDRChjaCkgUkVBTF9HRVRfVUNEKGNoKQorKyNlbmRpZgorKworICNkZWZpbmUgVUNEX0NIQVJUWVBFKGNoKSAgICBHRVRfVUNEKGNoKS0+Y2hhcnR5cGUKKyAjZGVmaW5lIFVDRF9TQ1JJUFQoY2gpICAgICAgR0VUX1VDRChjaCktPnNjcmlwdAorICNkZWZpbmUgVUNEX0NBVEVHT1JZKGNoKSAgICBQUklWKHVjcF9nZW50eXBlKVtVQ0RfQ0hBUlRZUEUoY2gpXQorQEAgLTE4MzQsNiArMTg0MSw5IEBACisgI2RlZmluZSBfcGNyZTJfZGVmYXVsdF9jb21waWxlX2NvbnRleHQgUENSRTJfU1VGRklYKF9wY3JlMl9kZWZhdWx0X2NvbXBpbGVfY29udGV4dF8pCisgI2RlZmluZSBfcGNyZTJfZGVmYXVsdF9tYXRjaF9jb250ZXh0ICAgUENSRTJfU1VGRklYKF9wY3JlMl9kZWZhdWx0X21hdGNoX2NvbnRleHRfKQorICNkZWZpbmUgX3BjcmUyX2RlZmF1bHRfdGFibGVzICAgICAgICAgIFBDUkUyX1NVRkZJWChfcGNyZTJfZGVmYXVsdF90YWJsZXNfKQorKyNpZiBQQ1JFMl9DT0RFX1VOSVRfV0lEVEggPT0gMzIKKysjZGVmaW5lIF9wY3JlMl9kdW1teV91Y2RfcmVjb3JkICAgICAgICBQQ1JFMl9TVUZGSVgoX3BjcmUyX2R1bW15X3VjZF9yZWNvcmRfKQorKyNlbmRpZgorICNkZWZpbmUgX3BjcmUyX2hzcGFjZV9saXN0ICAgICAgICAgICAgIFBDUkUyX1NVRkZJWChfcGNyZTJfaHNwYWNlX2xpc3RfKQorICNkZWZpbmUgX3BjcmUyX3ZzcGFjZV9saXN0ICAgICAgICAgICAgIFBDUkUyX1NVRkZJWChfcGNyZTJfdnNwYWNlX2xpc3RfKQorICNkZWZpbmUgX3BjcmUyX3VjZF9jYXNlbGVzc19zZXRzICAgICAgIFBDUkUyX1NVRkZJWChfcGNyZTJfdWNkX2Nhc2VsZXNzX3NldHNfKQorQEAgLTE4NTgsNiArMTg2OCw5IEBACisgZXh0ZXJuIGNvbnN0IHVpbnQzMl90ICAgICAgICAgICAgICAgICAgUFJJVih2c3BhY2VfbGlzdClbXTsKKyBleHRlcm4gY29uc3QgdWludDMyX3QgICAgICAgICAgICAgICAgICBQUklWKHVjZF9jYXNlbGVzc19zZXRzKVtdOworIGV4dGVybiBjb25zdCB1Y2RfcmVjb3JkICAgICAgICAgICAgICAgIFBSSVYodWNkX3JlY29yZHMpW107CisrI2lmIFBDUkUyX0NPREVfVU5JVF9XSURUSCA9PSAzMgorK2V4dGVybiBjb25zdCB1Y2RfcmVjb3JkICAgICAgICAgICAgICAgIFBSSVYoZHVtbXlfdWNkX3JlY29yZClbXTsKKysjZW5kaWYKKyBleHRlcm4gY29uc3QgdWludDhfdCAgICAgICAgICAgICAgICAgICBQUklWKHVjZF9zdGFnZTEpW107CisgZXh0ZXJuIGNvbnN0IHVpbnQxNl90ICAgICAgICAgICAgICAgICAgUFJJVih1Y2Rfc3RhZ2UyKVtdOworIGV4dGVybiBjb25zdCB1aW50MzJfdCAgICAgICAgICAgICAgICAgIFBSSVYodWNwX2didGFibGUpW107CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlMi9saWJwY3JlMi1DVkUtMjAxNy04Nzg2LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZTIvbGlicGNyZTItQ1ZFLTIwMTctODc4Ni5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYWZhZmMxCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZTIvbGlicGNyZTItQ1ZFLTIwMTctODc4Ni5wYXRjaApAQCAtMCwwICsxLDkzIEBACitsaWJwY3JlMi0xMC4yMzogRml4IENWRS0yMDE3LTg3ODYKKworVGhlIHBjcmUydGVzdC5jIGluIFBDUkUyIDEwLjIzIGFsbG93cyByZW1vdGUgYXR0YWNrZXJzIHRvIGNhdXNlIGEgZGVuaWFsIG9mCitzZXJ2aWNlIChoZWFwLWJhc2VkIGJ1ZmZlciBvdmVyZmxvdykgb3IgcG9zc2libHkgaGF2ZSB1bnNwZWNpZmllZCBvdGhlciBpbXBhY3QKK3ZpYSBhIGNyYWZ0ZWQgcmVndWxhciBleHByZXNzaW9uLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL3Zjcy5wY3JlLm9yZy9wY3JlMi9jb2RlL3RydW5rL3NyYy9wY3JlMnRlc3QuYz9yMT02OTImcjI9Njk3JnZpZXc9cGF0Y2hdCitDVkU6IENWRS0yMDE3LTg3ODYKKworU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CisKKy0tLSB0cnVuay9zcmMvcGNyZTJ0ZXN0LmMgIDIwMTcvMDMvMjEgMTY6MTg6NTQgNjkyCisrKysgdHJ1bmsvc3JjL3BjcmUydGVzdC5jICAyMDE3LzAzLzIxIDE4OjM2OjEzIDY5NworQEAgLTEwMTcsOSArMTAxNyw5IEBACisgICBpZiAodGVzdF9tb2RlID09IFBDUkU4X01PREUpIFwKKyAgICAgciA9IHBjcmUyX2dldF9lcnJvcl9tZXNzYWdlXzgoYSxHKGIsOCksRyhHKGIsOCksX3NpemUpKTsgXAorICAgZWxzZSBpZiAodGVzdF9tb2RlID09IFBDUkUxNl9NT0RFKSBcCistICAgIHIgPSBwY3JlMl9nZXRfZXJyb3JfbWVzc2FnZV8xNihhLEcoYiwxNiksRyhHKGIsMTYpLF9zaXplKSk7IFwKKysgICAgciA9IHBjcmUyX2dldF9lcnJvcl9tZXNzYWdlXzE2KGEsRyhiLDE2KSxHKEcoYiwxNiksX3NpemUvMikpOyBcCisgICBlbHNlIFwKKy0gICAgciA9IHBjcmUyX2dldF9lcnJvcl9tZXNzYWdlXzMyKGEsRyhiLDMyKSxHKEcoYiwzMiksX3NpemUpKQorKyAgICByID0gcGNyZTJfZ2V0X2Vycm9yX21lc3NhZ2VfMzIoYSxHKGIsMzIpLEcoRyhiLDMyKSxfc2l6ZS80KSkKKyAKKyAjZGVmaW5lIFBDUkUyX0dFVF9PVkVDVE9SX0NPVU5UKGEsYikgXAorICAgaWYgKHRlc3RfbW9kZSA9PSBQQ1JFOF9NT0RFKSBcCitAQCAtMTM5OSw2ICsxMzk5LDkgQEAKKyAKKyAvKiAtLS0tLSBDb21tb24gbWFjcm9zIGZvciB0d28tbW9kZSBjYXNlcyAtLS0tLSAqLworIAorKyNkZWZpbmUgQllURU9ORSAoQklUT05FLzgpCisrI2RlZmluZSBCWVRFVFdPIChCSVRUV08vOCkKKysKKyAjZGVmaW5lIENBU1RGTEQodCxhLGIpIFwKKyAgICgodGVzdF9tb2RlID09IEcoRyhQQ1JFLEJJVE9ORSksX01PREUpKT8gKHQpKEcoYSxCSVRPTkUpLT5iKSA6IFwKKyAgICAgKHQpKEcoYSxCSVRUV08pLT5iKSkKK0BAIC0xNDgxLDkgKzE0ODQsOSBAQAorIAorICNkZWZpbmUgUENSRTJfR0VUX0VSUk9SX01FU1NBR0UocixhLGIpIFwKKyAgIGlmICh0ZXN0X21vZGUgPT0gRyhHKFBDUkUsQklUT05FKSxfTU9ERSkpIFwKKy0gICAgciA9IEcocGNyZTJfZ2V0X2Vycm9yX21lc3NhZ2VfLEJJVE9ORSkoYSxHKGIsQklUT05FKSxHKEcoYixCSVRPTkUpLF9zaXplKSk7IFwKKysgICAgciA9IEcocGNyZTJfZ2V0X2Vycm9yX21lc3NhZ2VfLEJJVE9ORSkoYSxHKGIsQklUT05FKSxHKEcoYixCSVRPTkUpLF9zaXplL0JZVEVPTkUpKTsgXAorICAgZWxzZSBcCistICAgIHIgPSBHKHBjcmUyX2dldF9lcnJvcl9tZXNzYWdlXyxCSVRUV08pKGEsRyhiLEJJVFRXTyksRyhHKGIsQklUVFdPKSxfc2l6ZSkpCisrICAgIHIgPSBHKHBjcmUyX2dldF9lcnJvcl9tZXNzYWdlXyxCSVRUV08pKGEsRyhiLEJJVFRXTyksRyhHKGIsQklUVFdPKSxfc2l6ZS9CWVRFVFdPKSkKKyAKKyAjZGVmaW5lIFBDUkUyX0dFVF9PVkVDVE9SX0NPVU5UKGEsYikgXAorICAgaWYgKHRlc3RfbW9kZSA9PSBHKEcoUENSRSxCSVRPTkUpLF9NT0RFKSkgXAorQEAgLTE5MDQsNyArMTkwNyw3IEBACisgI2RlZmluZSBQQ1JFMl9ERkFfTUFUQ0goYSxiLGMsZCxlLGYsZyxoLGksaikgXAorICAgYSA9IHBjcmUyX2RmYV9tYXRjaF8xNihHKGIsMTYpLChQQ1JFMl9TUFRSMTYpYyxkLGUsZixHKGcsMTYpLGgsaSxqKQorICNkZWZpbmUgUENSRTJfR0VUX0VSUk9SX01FU1NBR0UocixhLGIpIFwKKy0gIHIgPSBwY3JlMl9nZXRfZXJyb3JfbWVzc2FnZV8xNihhLEcoYiwxNiksRyhHKGIsMTYpLF9zaXplKSkKKysgIHIgPSBwY3JlMl9nZXRfZXJyb3JfbWVzc2FnZV8xNihhLEcoYiwxNiksRyhHKGIsMTYpLF9zaXplLzIpKQorICNkZWZpbmUgUENSRTJfR0VUX09WRUNUT1JfQ09VTlQoYSxiKSBhID0gcGNyZTJfZ2V0X292ZWN0b3JfY291bnRfMTYoRyhiLDE2KSkKKyAjZGVmaW5lIFBDUkUyX0dFVF9TVEFSVENIQVIoYSxiKSBhID0gcGNyZTJfZ2V0X3N0YXJ0Y2hhcl8xNihHKGIsMTYpKQorICNkZWZpbmUgUENSRTJfSklUX0NPTVBJTEUocixhLGIpIHIgPSBwY3JlMl9qaXRfY29tcGlsZV8xNihHKGEsMTYpLGIpCitAQCAtMjAwMCw3ICsyMDAzLDcgQEAKKyAjZGVmaW5lIFBDUkUyX0RGQV9NQVRDSChhLGIsYyxkLGUsZixnLGgsaSxqKSBcCisgICBhID0gcGNyZTJfZGZhX21hdGNoXzMyKEcoYiwzMiksKFBDUkUyX1NQVFIzMiljLGQsZSxmLEcoZywzMiksaCxpLGopCisgI2RlZmluZSBQQ1JFMl9HRVRfRVJST1JfTUVTU0FHRShyLGEsYikgXAorLSAgciA9IHBjcmUyX2dldF9lcnJvcl9tZXNzYWdlXzMyKGEsRyhiLDMyKSxHKEcoYiwzMiksX3NpemUpKQorKyAgciA9IHBjcmUyX2dldF9lcnJvcl9tZXNzYWdlXzMyKGEsRyhiLDMyKSxHKEcoYiwzMiksX3NpemUvNCkpCisgI2RlZmluZSBQQ1JFMl9HRVRfT1ZFQ1RPUl9DT1VOVChhLGIpIGEgPSBwY3JlMl9nZXRfb3ZlY3Rvcl9jb3VudF8zMihHKGIsMzIpKQorICNkZWZpbmUgUENSRTJfR0VUX1NUQVJUQ0hBUihhLGIpIGEgPSBwY3JlMl9nZXRfc3RhcnRjaGFyXzMyKEcoYiwzMikpCisgI2RlZmluZSBQQ1JFMl9KSVRfQ09NUElMRShyLGEsYikgciA9IHBjcmUyX2ppdF9jb21waWxlXzMyKEcoYSwzMiksYikKK0BAIC0yODg5LDcgKzI4OTIsNyBAQAorICAgeworICAgaWYgKHBidWZmZXIzMiAhPSBOVUxMKSBmcmVlKHBidWZmZXIzMik7CisgICBwYnVmZmVyMzJfc2l6ZSA9IDQqbGVuICsgNDsKKy0gIGlmIChwYnVmZmVyMzJfc2l6ZSA8IDI1NikgcGJ1ZmZlcjMyX3NpemUgPSAyNTY7CisrICBpZiAocGJ1ZmZlcjMyX3NpemUgPCA1MTIpIHBidWZmZXIzMl9zaXplID0gNTEyOworICAgcGJ1ZmZlcjMyID0gKHVpbnQzMl90ICopbWFsbG9jKHBidWZmZXIzMl9zaXplKTsKKyAgIGlmIChwYnVmZmVyMzIgPT0gTlVMTCkKKyAgICAgeworQEAgLTc2MDAsNyArNzYwMyw4IEBACisgICBpbnQgZXJyY29kZTsKKyAgIGNoYXIgKmVuZHB0cjsKKyAKKy0vKiBFbnN1cmUgdGhlIHJlbGV2YW50IG5vbi04LWJpdCBidWZmZXIgaXMgYXZhaWxhYmxlLiAqLworKy8qIEVuc3VyZSB0aGUgcmVsZXZhbnQgbm9uLTgtYml0IGJ1ZmZlciBpcyBhdmFpbGFibGUuIEVuc3VyZSB0aGF0IGl0IGlzIGF0IAorK2xlYXN0IDEyOCBjb2RlIHVuaXRzLCBiZWNhdXNlIGl0IGlzIHVzZWQgZm9yIHJldHJpZXZpbmcgZXJyb3IgbWVzc2FnZXMuICovCisgCisgI2lmZGVmIFNVUFBPUlRfUENSRTJfMTYKKyAgIGlmICh0ZXN0X21vZGUgPT0gUENSRTE2X01PREUpCitAQCAtNzYyMCw3ICs3NjI0LDcgQEAKKyAjaWZkZWYgU1VQUE9SVF9QQ1JFMl8zMgorICAgaWYgKHRlc3RfbW9kZSA9PSBQQ1JFMzJfTU9ERSkKKyAgICAgeworLSAgICBwYnVmZmVyMzJfc2l6ZSA9IDI1NjsKKysgICAgcGJ1ZmZlcjMyX3NpemUgPSA1MTI7CisgICAgIHBidWZmZXIzMiA9ICh1aW50MzJfdCAqKW1hbGxvYyhwYnVmZmVyMzJfc2l6ZSk7CisgICAgIGlmIChwYnVmZmVyMzIgPT0gTlVMTCkKKyAgICAgICB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlMl8xMC4yMi5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUyXzEwLjIyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwY2Y4MWMwLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUyXzEwLjIyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiVGhlcmUgYXJlIHR3byBtYWpvciB2ZXJzaW9ucyBvZiB0aGUgUENSRSBsaWJyYXJ5LiBUaGUgXAotbmV3ZXN0IHZlcnNpb24gaXMgUENSRTIsIHdoaWNoIGlzIGEgcmUtd29ya2luZyBvZiB0aGUgb3JpZ2luYWwgUENSRSBcCi1saWJyYXJ5IHRvIHByb3ZpZGUgYW4gZW50aXJlbHkgbmV3IEFQSS4gVGhlIG9yaWdpbmFsLCB2ZXJ5IHdpZGVseSBcCi1kZXBsb3llZCBQQ1JFIGxpYnJhcnkncyBBUEkgYW5kIGZlYXR1cmUgYXJlIHN0YWJsZSwgZnV0dXJlIHJlbGVhc2VzIFwKLSB3aWxsIGJlIGZvciBidWdmaXhlcyBvbmx5LiBBbGwgbmV3IGZ1dHVyZSBmZWF0dXJlcyB3aWxsIGJlIHRvIFBDUkUyLCBcCi1ub3QgdGhlIG9yaWdpbmFsIFBDUkUgOC54IHNlcmllcy4iCi1TVU1NQVJZID0gIlBlcmwgQ29tcGF0aWJsZSBSZWd1bGFyIEV4cHJlc3Npb25zIHZlcnNpb24gMiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cucGNyZS5vcmciCi1TRUNUSU9OID0gImRldmVsIgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTkNFO21kNT1hYjk2MzNlZmQzOGQ2Zjc5OTM5OGRmMmMyNDhiNWFlYyIKLQotU1JDX1VSSSA9ICJodHRwczovL2Z0cC5wY3JlLm9yZy9wdWIvcGNyZS9wY3JlMi0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL3BjcmUtY3Jvc3MucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYzBjMDI1MTc5MzhlZTJiMGQzNTBkNTNlZGY0NTA2NjQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjJiNDQ2MTlmNGFjNmM1MGFkNzRjMjg2NWZkNTY4MDc1NzEzOTI0OTZmYWUxYzlhZDdhNzA5OTNkMDE4ZjQxNiIKLQotQ1ZFX1BST0RVQ1QgPSAicGNyZTIiCi0KLVMgPSAiJHtXT1JLRElSfS9wY3JlMi0ke1BWfSIKLQotUFJPVklERVMgKz0gInBjcmUyIgotREVQRU5EUyArPSAiYnppcDIgemxpYiIKLQotQklOQ09ORklHID0gIiR7YmluZGlyfS9wY3JlMi1jb25maWciCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZy1kaXNhYmxlZAotCi1FWFRSQV9PRUNPTkYgPSAiXAotICAgIC0tZW5hYmxlLW5ld2xpbmUtaXMtbGYgXAotICAgIC0tZW5hYmxlLXJlYnVpbGQtY2hhcnRhYmxlcyBcCi0gICAgLS13aXRoLWxpbmstc2l6ZT0yIFwKLSAgICAtLXdpdGgtbWF0Y2gtbGltaXQ9MTAwMDAwMDAgXAotIgotCi0jIFNldCBMSU5LX1NJWkUgaW4gQlVJTERfQ0ZMQUdTIGdpdmVuIHRoYXQgdGhlIGF1dG90b29scyBiYmNsYXNzIHVzZSBpdCB0bwotIyBzZXQgQ0ZMQUdTX0ZPUl9CVUlMRCwgcmVxdWlyZWQgZm9yIHRoZSBsaWJwY3JlIGJ1aWxkLgotQlVJTERfQ0ZMQUdTID0rICItRExJTktfU0laRT0yIC1JJHtCfS9zcmMiCi1DRkxBR1MgKz0gIi1EX1JFRU5UUkFOVCIKLUNYWEZMQUdTX2FwcGVuZF9wb3dlcnBjID0gIiAtbHN0ZGMrKyIKLQotZXhwb3J0IENDTERfRk9SX0JVSUxEID0iJHtCVUlMRF9DQ0xEfSIKLQotUEFDS0FHRVMgPSsgInBjcmUyZ3JlcCBwY3JlMmdyZXAtZG9jIHBjcmUydGVzdCBwY3JlMnRlc3QtZG9jIgotCi1TVU1NQVJZX3BjcmUyZ3JlcCA9ICJncmVwIHV0aWxpdHkgdGhhdCB1c2VzIHBlcmwgNSBjb21wYXRpYmxlIHJlZ2V4ZXMiCi1TVU1NQVJZX3BjcmUyZ3JlcC1kb2MgPSAiZ3JlcCB1dGlsaXR5IHRoYXQgdXNlcyBwZXJsIDUgY29tcGF0aWJsZSByZWdleGVzIC0gZG9jcyIKLVNVTU1BUllfcGNyZTJ0ZXN0ID0gInByb2dyYW0gZm9yIHRlc3RpbmcgUGVybC1jb21hdGlibGUgcmVndWxhciBleHByZXNzaW9ucyIKLVNVTU1BUllfcGNyZTJ0ZXN0LWRvYyA9ICJwcm9ncmFtIGZvciB0ZXN0aW5nIFBlcmwtY29tYXRpYmxlIHJlZ3VsYXIgZXhwcmVzc2lvbnMgLSBkb2NzIgotCi1GSUxFU19wY3JlMmdyZXAgPSAiJHtiaW5kaXJ9L3BjcmUyZ3JlcCIKLUZJTEVTX3BjcmUyZ3JlcC1kb2MgPSAiJHttYW5kaXJ9L21hbjEvcGNyZTJncmVwLjEiCi1GSUxFU19wY3JlMnRlc3QgPSAiJHtiaW5kaXJ9L3BjcmUydGVzdCIKLUZJTEVTX3BjcmUydGVzdC1kb2MgPSAiJHttYW5kaXJ9L21hbjEvcGNyZTJ0ZXN0LjEiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUyXzEwLjIzLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZTJfMTAuMjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2EyYjAyOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUyXzEwLjIzLmJiCkBAIC0wLDAgKzEsNjAgQEAKK0RFU0NSSVBUSU9OID0gIlRoZXJlIGFyZSB0d28gbWFqb3IgdmVyc2lvbnMgb2YgdGhlIFBDUkUgbGlicmFyeS4gVGhlIFwKK25ld2VzdCB2ZXJzaW9uIGlzIFBDUkUyLCB3aGljaCBpcyBhIHJlLXdvcmtpbmcgb2YgdGhlIG9yaWdpbmFsIFBDUkUgXAorbGlicmFyeSB0byBwcm92aWRlIGFuIGVudGlyZWx5IG5ldyBBUEkuIFRoZSBvcmlnaW5hbCwgdmVyeSB3aWRlbHkgXAorZGVwbG95ZWQgUENSRSBsaWJyYXJ5J3MgQVBJIGFuZCBmZWF0dXJlIGFyZSBzdGFibGUsIGZ1dHVyZSByZWxlYXNlcyBcCisgd2lsbCBiZSBmb3IgYnVnZml4ZXMgb25seS4gQWxsIG5ldyBmdXR1cmUgZmVhdHVyZXMgd2lsbCBiZSB0byBQQ1JFMiwgXAorbm90IHRoZSBvcmlnaW5hbCBQQ1JFIDgueCBzZXJpZXMuIgorU1VNTUFSWSA9ICJQZXJsIENvbXBhdGlibGUgUmVndWxhciBFeHByZXNzaW9ucyB2ZXJzaW9uIDIiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnBjcmUub3JnIgorU0VDVElPTiA9ICJkZXZlbCIKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5DRTttZDU9M2RlMzRkZjQ5ZTFmZTNjM2I1OWEwOGRmZjIxNDQ4OGIiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9mdHAucGNyZS5vcmcvcHViL3BjcmUvcGNyZTItJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9wY3JlLWNyb3NzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2xpYnBjcmUyLUNWRS0yMDE3LTg3ODYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbGlicGNyZTItQ1ZFLTIwMTctNzE4Ni5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiMmNkMDBjYTdlMjQwNDkwNDAwOTliMGE0NmJiMzY0OSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkZmM3OWI5MTg3NzFmMDJkMzM5NjhiZDM0YTc0OWFkNzQ4N2ZhMTAxNGFlYjc4N2ZhZDI5ZGQzOTJiNzhjNTZlIgorCitDVkVfUFJPRFVDVCA9ICJwY3JlMiIKKworUyA9ICIke1dPUktESVJ9L3BjcmUyLSR7UFZ9IgorCitQUk9WSURFUyArPSAicGNyZTIiCitERVBFTkRTICs9ICJiemlwMiB6bGliIgorCitCSU5DT05GSUcgPSAiJHtiaW5kaXJ9L3BjcmUyLWNvbmZpZyIKKworaW5oZXJpdCBhdXRvdG9vbHMgYmluY29uZmlnLWRpc2FibGVkCisKK0VYVFJBX09FQ09ORiA9ICJcCisgICAgLS1lbmFibGUtbmV3bGluZS1pcy1sZiBcCisgICAgLS1lbmFibGUtcmVidWlsZC1jaGFydGFibGVzIFwKKyAgICAtLXdpdGgtbGluay1zaXplPTIgXAorICAgIC0td2l0aC1tYXRjaC1saW1pdD0xMDAwMDAwMCBcCisiCisKKyMgU2V0IExJTktfU0laRSBpbiBCVUlMRF9DRkxBR1MgZ2l2ZW4gdGhhdCB0aGUgYXV0b3Rvb2xzIGJiY2xhc3MgdXNlIGl0IHRvCisjIHNldCBDRkxBR1NfRk9SX0JVSUxELCByZXF1aXJlZCBmb3IgdGhlIGxpYnBjcmUgYnVpbGQuCitCVUlMRF9DRkxBR1MgPSsgIi1ETElOS19TSVpFPTIgLUkke0J9L3NyYyIKK0NGTEFHUyArPSAiLURfUkVFTlRSQU5UIgorQ1hYRkxBR1NfYXBwZW5kX3Bvd2VycGMgPSAiIC1sc3RkYysrIgorCitleHBvcnQgQ0NMRF9GT1JfQlVJTEQgPSIke0JVSUxEX0NDTER9IgorCitQQUNLQUdFUyA9KyAicGNyZTJncmVwIHBjcmUyZ3JlcC1kb2MgcGNyZTJ0ZXN0IHBjcmUydGVzdC1kb2MiCisKK1NVTU1BUllfcGNyZTJncmVwID0gImdyZXAgdXRpbGl0eSB0aGF0IHVzZXMgcGVybCA1IGNvbXBhdGlibGUgcmVnZXhlcyIKK1NVTU1BUllfcGNyZTJncmVwLWRvYyA9ICJncmVwIHV0aWxpdHkgdGhhdCB1c2VzIHBlcmwgNSBjb21wYXRpYmxlIHJlZ2V4ZXMgLSBkb2NzIgorU1VNTUFSWV9wY3JlMnRlc3QgPSAicHJvZ3JhbSBmb3IgdGVzdGluZyBQZXJsLWNvbWF0aWJsZSByZWd1bGFyIGV4cHJlc3Npb25zIgorU1VNTUFSWV9wY3JlMnRlc3QtZG9jID0gInByb2dyYW0gZm9yIHRlc3RpbmcgUGVybC1jb21hdGlibGUgcmVndWxhciBleHByZXNzaW9ucyAtIGRvY3MiCisKK0ZJTEVTX3BjcmUyZ3JlcCA9ICIke2JpbmRpcn0vcGNyZTJncmVwIgorRklMRVNfcGNyZTJncmVwLWRvYyA9ICIke21hbmRpcn0vbWFuMS9wY3JlMmdyZXAuMSIKK0ZJTEVTX3BjcmUydGVzdCA9ICIke2JpbmRpcn0vcGNyZTJ0ZXN0IgorRklMRVNfcGNyZTJ0ZXN0LWRvYyA9ICIke21hbmRpcn0vbWFuMS9wY3JlMnRlc3QuMSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZV84LjQwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZV84LjQwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YjZhYjI1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmVfOC40MC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDgzICswLDAgQEAKLURFU0NSSVBUSU9OID0gIlRoZSBQQ1JFIGxpYnJhcnkgaXMgYSBzZXQgb2YgZnVuY3Rpb25zIHRoYXQgaW1wbGVtZW50IHJlZ3VsYXIgXAotZXhwcmVzc2lvbiBwYXR0ZXJuIG1hdGNoaW5nIHVzaW5nIHRoZSBzYW1lIHN5bnRheCBhbmQgc2VtYW50aWNzIGFzIFBlcmwgNS4gUENSRSBcCi1oYXMgaXRzIG93biBuYXRpdmUgQVBJLCBhcyB3ZWxsIGFzIGEgc2V0IG9mIHdyYXBwZXIgZnVuY3Rpb25zIHRoYXQgY29ycmVzcG9uZCBcCi10byB0aGUgUE9TSVggcmVndWxhciBleHByZXNzaW9uIEFQSS4iCi1TVU1NQVJZID0gIlBlcmwgQ29tcGF0aWJsZSBSZWd1bGFyIEV4cHJlc3Npb25zIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5wY3JlLm9yZyIKLVNFQ1RJT04gPSAiZGV2ZWwiCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0U7bWQ1PTYwZGEzMmQ4NGQwNjdmNTNlMjIwNzFjNGVjYjQzODRkIgotU1JDX1VSSSA9ICJmdHA6Ly9mdHAuY3N4LmNhbS5hYy51ay9wdWIvc29mdHdhcmUvcHJvZ3JhbW1pbmcvcGNyZS9wY3JlLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vcGNyZS1jcm9zcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtcGNyZS1uYW1lLWNvbGxpc2lvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGUgXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNDFhODQyYmY3ZGNlY2Q2NjM0MjE5MzM2ZTIxNjdkMWQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDBlMjdhMjllYWQ0MjY3ZTNkZTgxMTFmY2FhNTliMTMyZDA1MzNjZGZkYmRkZGY0YjA2MDQyNzlhY2JjZjRmNCIKLQotQ1ZFX1BST0RVQ1QgPSAicGNyZSIKLQotUyA9ICIke1dPUktESVJ9L3BjcmUtJHtQVn0iCi0KLVBST1ZJREVTICs9ICJwY3JlIgotREVQRU5EUyArPSAiYnppcDIgemxpYiIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gInBjcmU4IHVuaWNvZGUtcHJvcGVydGllcyIKLQotUEFDS0FHRUNPTkZJR1twY3JlOF0gPSAiLS1lbmFibGUtcGNyZTgsLS1kaXNhYmxlLXBjcmU4IgotUEFDS0FHRUNPTkZJR1twY3JlMTZdID0gIi0tZW5hYmxlLXBjcmUxNiwtLWRpc2FibGUtcGNyZTE2IgotUEFDS0FHRUNPTkZJR1twY3JlMzJdID0gIi0tZW5hYmxlLXBjcmUzMiwtLWRpc2FibGUtcGNyZTMyIgotUEFDS0FHRUNPTkZJR1twY3JldGVzdC1yZWFkbGluZV0gPSAiLS1lbmFibGUtcGNyZXRlc3QtbGlicmVhZGxpbmUsLS1kaXNhYmxlLXBjcmV0ZXN0LWxpYnJlYWRsaW5lLHJlYWRsaW5lLCIKLVBBQ0tBR0VDT05GSUdbdW5pY29kZS1wcm9wZXJ0aWVzXSA9ICItLWVuYWJsZS11bmljb2RlLXByb3BlcnRpZXMsLS1kaXNhYmxlLXVuaWNvZGUtcHJvcGVydGllcyIKLQotQklOQ09ORklHID0gIiR7YmluZGlyfS9wY3JlLWNvbmZpZyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgYmluY29uZmlnLWRpc2FibGVkIHB0ZXN0Ci0KLUVYVFJBX09FQ09ORiA9ICJcCi0gICAgLS1lbmFibGUtbmV3bGluZS1pcy1sZiBcCi0gICAgLS1lbmFibGUtcmVidWlsZC1jaGFydGFibGVzIFwKLSAgICAtLWVuYWJsZS11dGYgXAotICAgIC0td2l0aC1saW5rLXNpemU9MiBcCi0gICAgLS13aXRoLW1hdGNoLWxpbWl0PTEwMDAwMDAwIFwKLSIKLQotIyBTZXQgTElOS19TSVpFIGluIEJVSUxEX0NGTEFHUyBnaXZlbiB0aGF0IHRoZSBhdXRvdG9vbHMgYmJjbGFzcyB1c2UgaXQgdG8KLSMgc2V0IENGTEFHU19GT1JfQlVJTEQsIHJlcXVpcmVkIGZvciB0aGUgbGlicGNyZSBidWlsZC4KLUJVSUxEX0NGTEFHUyA9KyAiLURMSU5LX1NJWkU9MiAtSSR7Qn0iCi1DRkxBR1MgKz0gIi1EX1JFRU5UUkFOVCIKLUNYWEZMQUdTX2FwcGVuZF9wb3dlcnBjID0gIiAtbHN0ZGMrKyIKLQotZXhwb3J0IENDTERfRk9SX0JVSUxEID0iJHtCVUlMRF9DQ0xEfSIKLQotUEFDS0FHRVMgPSsgImxpYnBjcmVjcHAgbGlicGNyZXBvc2l4IHBjcmVncmVwIHBjcmVncmVwLWRvYyBwY3JldGVzdCBwY3JldGVzdC1kb2MiCi0KLVNVTU1BUllfbGlicGNyZWNwcCA9ICIke1NVTU1BUll9IC0gQysrIHdyYXBwZXIgZnVuY3Rpb25zIgotU1VNTUFSWV9saWJwY3JlcG9zaXggPSAiJHtTVU1NQVJZfSAtIEMgd3JhcHBlciBmdW5jdGlvbnMgYmFzZWQgb24gdGhlIFBPU0lYIHJlZ2V4IEFQSSIKLVNVTU1BUllfcGNyZWdyZXAgPSAiZ3JlcCB1dGlsaXR5IHRoYXQgdXNlcyBwZXJsIDUgY29tcGF0aWJsZSByZWdleGVzIgotU1VNTUFSWV9wY3JlZ3JlcC1kb2MgPSAiZ3JlcCB1dGlsaXR5IHRoYXQgdXNlcyBwZXJsIDUgY29tcGF0aWJsZSByZWdleGVzIC0gZG9jcyIKLVNVTU1BUllfcGNyZXRlc3QgPSAicHJvZ3JhbSBmb3IgdGVzdGluZyBQZXJsLWNvbWF0aWJsZSByZWd1bGFyIGV4cHJlc3Npb25zIgotU1VNTUFSWV9wY3JldGVzdC1kb2MgPSAicHJvZ3JhbSBmb3IgdGVzdGluZyBQZXJsLWNvbWF0aWJsZSByZWd1bGFyIGV4cHJlc3Npb25zIC0gZG9jcyIKLQotRklMRVNfbGlicGNyZWNwcCA9ICIke2xpYmRpcn0vbGlicGNyZWNwcC5zby4qIgotRklMRVNfbGlicGNyZXBvc2l4ID0gIiR7bGliZGlyfS9saWJwY3JlcG9zaXguc28uKiIKLUZJTEVTX3BjcmVncmVwID0gIiR7YmluZGlyfS9wY3JlZ3JlcCIKLUZJTEVTX3BjcmVncmVwLWRvYyA9ICIke21hbmRpcn0vbWFuMS9wY3JlZ3JlcC4xIgotRklMRVNfcGNyZXRlc3QgPSAiJHtiaW5kaXJ9L3BjcmV0ZXN0IgotRklMRVNfcGNyZXRlc3QtZG9jID0gIiR7bWFuZGlyfS9tYW4xL3BjcmV0ZXN0LjEiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQl0PSR7RH0ke1BURVNUX1BBVEh9Ci0JY3AgJHtXT1JLRElSfS9NYWtlZmlsZSAkdAotCWNwIC1yICR7U30vdGVzdGRhdGEgJHQKLQlmb3IgaSBpbiBwY3JlX3N0cmluZ3BpZWNlX3VuaXR0ZXN0IHBjcmVncmVwIHBjcmV0ZXN0OyBcCi0JICBkbyBjcCAke0J9Ly5saWJzLyRpICR0OyBcCi0JZG9uZQotCWZvciBpIGluIFJ1blRlc3QgUnVuR3JlcFRlc3QgdGVzdC1kcml2ZXI7IFwKLQkgIGRvIGNwICR7U30vJGkgJHQ7IFwKLQlkb25lCi19CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlXzguNDEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlXzguNDEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGVhZWQxOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmVfOC40MS5iYgpAQCAtMCwwICsxLDgzIEBACitERVNDUklQVElPTiA9ICJUaGUgUENSRSBsaWJyYXJ5IGlzIGEgc2V0IG9mIGZ1bmN0aW9ucyB0aGF0IGltcGxlbWVudCByZWd1bGFyIFwKK2V4cHJlc3Npb24gcGF0dGVybiBtYXRjaGluZyB1c2luZyB0aGUgc2FtZSBzeW50YXggYW5kIHNlbWFudGljcyBhcyBQZXJsIDUuIFBDUkUgXAoraGFzIGl0cyBvd24gbmF0aXZlIEFQSSwgYXMgd2VsbCBhcyBhIHNldCBvZiB3cmFwcGVyIGZ1bmN0aW9ucyB0aGF0IGNvcnJlc3BvbmQgXAordG8gdGhlIFBPU0lYIHJlZ3VsYXIgZXhwcmVzc2lvbiBBUEkuIgorU1VNTUFSWSA9ICJQZXJsIENvbXBhdGlibGUgUmVndWxhciBFeHByZXNzaW9ucyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cucGNyZS5vcmciCitTRUNUSU9OID0gImRldmVsIgorTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTkNFO21kNT02MGRhMzJkODRkMDY3ZjUzZTIyMDcxYzRlY2I0Mzg0ZCIKK1NSQ19VUkkgPSAiaHR0cHM6Ly9mdHAucGNyZS5vcmcvcHViL3BjcmUvcGNyZS0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL3BjcmUtY3Jvc3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZml4LXBjcmUtbmFtZS1jb2xsaXNpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL01ha2VmaWxlIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gImMxNjBkMjI3MjNiMTY3MDQ0NzM0MWIwOGM1ODk4MWMxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImU2MmM3ZWFjNWFlN2MwZTcyODZkYjYxZmY4MjkxMmUxYzBiN2EwYzEzNzA2NjE2ZTk0YTdkZDcyOTMyMWI1MzAiCisKK0NWRV9QUk9EVUNUID0gInBjcmUiCisKK1MgPSAiJHtXT1JLRElSfS9wY3JlLSR7UFZ9IgorCitQUk9WSURFUyArPSAicGNyZSIKK0RFUEVORFMgKz0gImJ6aXAyIHpsaWIiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJwY3JlOCB1bmljb2RlLXByb3BlcnRpZXMiCisKK1BBQ0tBR0VDT05GSUdbcGNyZThdID0gIi0tZW5hYmxlLXBjcmU4LC0tZGlzYWJsZS1wY3JlOCIKK1BBQ0tBR0VDT05GSUdbcGNyZTE2XSA9ICItLWVuYWJsZS1wY3JlMTYsLS1kaXNhYmxlLXBjcmUxNiIKK1BBQ0tBR0VDT05GSUdbcGNyZTMyXSA9ICItLWVuYWJsZS1wY3JlMzIsLS1kaXNhYmxlLXBjcmUzMiIKK1BBQ0tBR0VDT05GSUdbcGNyZXRlc3QtcmVhZGxpbmVdID0gIi0tZW5hYmxlLXBjcmV0ZXN0LWxpYnJlYWRsaW5lLC0tZGlzYWJsZS1wY3JldGVzdC1saWJyZWFkbGluZSxyZWFkbGluZSwiCitQQUNLQUdFQ09ORklHW3VuaWNvZGUtcHJvcGVydGllc10gPSAiLS1lbmFibGUtdW5pY29kZS1wcm9wZXJ0aWVzLC0tZGlzYWJsZS11bmljb2RlLXByb3BlcnRpZXMiCisKK0JJTkNPTkZJRyA9ICIke2JpbmRpcn0vcGNyZS1jb25maWciCisKK2luaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZy1kaXNhYmxlZCBwdGVzdAorCitFWFRSQV9PRUNPTkYgPSAiXAorICAgIC0tZW5hYmxlLW5ld2xpbmUtaXMtbGYgXAorICAgIC0tZW5hYmxlLXJlYnVpbGQtY2hhcnRhYmxlcyBcCisgICAgLS1lbmFibGUtdXRmIFwKKyAgICAtLXdpdGgtbGluay1zaXplPTIgXAorICAgIC0td2l0aC1tYXRjaC1saW1pdD0xMDAwMDAwMCBcCisiCisKKyMgU2V0IExJTktfU0laRSBpbiBCVUlMRF9DRkxBR1MgZ2l2ZW4gdGhhdCB0aGUgYXV0b3Rvb2xzIGJiY2xhc3MgdXNlIGl0IHRvCisjIHNldCBDRkxBR1NfRk9SX0JVSUxELCByZXF1aXJlZCBmb3IgdGhlIGxpYnBjcmUgYnVpbGQuCitCVUlMRF9DRkxBR1MgPSsgIi1ETElOS19TSVpFPTIgLUkke0J9IgorQ0ZMQUdTICs9ICItRF9SRUVOVFJBTlQiCitDWFhGTEFHU19hcHBlbmRfcG93ZXJwYyA9ICIgLWxzdGRjKysiCisKK2V4cG9ydCBDQ0xEX0ZPUl9CVUlMRCA9IiR7QlVJTERfQ0NMRH0iCisKK1BBQ0tBR0VTID0rICJsaWJwY3JlY3BwIGxpYnBjcmVwb3NpeCBwY3JlZ3JlcCBwY3JlZ3JlcC1kb2MgcGNyZXRlc3QgcGNyZXRlc3QtZG9jIgorCitTVU1NQVJZX2xpYnBjcmVjcHAgPSAiJHtTVU1NQVJZfSAtIEMrKyB3cmFwcGVyIGZ1bmN0aW9ucyIKK1NVTU1BUllfbGlicGNyZXBvc2l4ID0gIiR7U1VNTUFSWX0gLSBDIHdyYXBwZXIgZnVuY3Rpb25zIGJhc2VkIG9uIHRoZSBQT1NJWCByZWdleCBBUEkiCitTVU1NQVJZX3BjcmVncmVwID0gImdyZXAgdXRpbGl0eSB0aGF0IHVzZXMgcGVybCA1IGNvbXBhdGlibGUgcmVnZXhlcyIKK1NVTU1BUllfcGNyZWdyZXAtZG9jID0gImdyZXAgdXRpbGl0eSB0aGF0IHVzZXMgcGVybCA1IGNvbXBhdGlibGUgcmVnZXhlcyAtIGRvY3MiCitTVU1NQVJZX3BjcmV0ZXN0ID0gInByb2dyYW0gZm9yIHRlc3RpbmcgUGVybC1jb21hdGlibGUgcmVndWxhciBleHByZXNzaW9ucyIKK1NVTU1BUllfcGNyZXRlc3QtZG9jID0gInByb2dyYW0gZm9yIHRlc3RpbmcgUGVybC1jb21hdGlibGUgcmVndWxhciBleHByZXNzaW9ucyAtIGRvY3MiCisKK0ZJTEVTX2xpYnBjcmVjcHAgPSAiJHtsaWJkaXJ9L2xpYnBjcmVjcHAuc28uKiIKK0ZJTEVTX2xpYnBjcmVwb3NpeCA9ICIke2xpYmRpcn0vbGlicGNyZXBvc2l4LnNvLioiCitGSUxFU19wY3JlZ3JlcCA9ICIke2JpbmRpcn0vcGNyZWdyZXAiCitGSUxFU19wY3JlZ3JlcC1kb2MgPSAiJHttYW5kaXJ9L21hbjEvcGNyZWdyZXAuMSIKK0ZJTEVTX3BjcmV0ZXN0ID0gIiR7YmluZGlyfS9wY3JldGVzdCIKK0ZJTEVTX3BjcmV0ZXN0LWRvYyA9ICIke21hbmRpcn0vbWFuMS9wY3JldGVzdC4xIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJdD0ke0R9JHtQVEVTVF9QQVRIfQorCWNwICR7V09SS0RJUn0vTWFrZWZpbGUgJHQKKwljcCAtciAke1N9L3Rlc3RkYXRhICR0CisJZm9yIGkgaW4gcGNyZV9zdHJpbmdwaWVjZV91bml0dGVzdCBwY3JlZ3JlcCBwY3JldGVzdDsgXAorCSAgZG8gY3AgJHtCfS8ubGlicy8kaSAkdDsgXAorCWRvbmUKKwlmb3IgaSBpbiBSdW5UZXN0IFJ1bkdyZXBUZXN0IHRlc3QtZHJpdmVyOyBcCisJICBkbyBjcCAke1N9LyRpICR0OyBcCisJZG9uZQorfQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnByb3h5L2xpYnByb3h5XzAuNC4xNC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwcm94eS9saWJwcm94eV8wLjQuMTQuYmIKaW5kZXggNjJhNmExMy4uNGMzOWY1MiAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnByb3h5L2xpYnByb3h5XzAuNC4xNC5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicHJveHkvbGlicHJveHlfMC40LjE0LmJiCkBAIC0zMSw2ICszMSw3IEBACiAgICAgLURMSUJfSU5TVEFMTF9ESVI9JHtsaWJkaXJ9IFwKICAgICAtRExJQkVYRUNfSU5TVEFMTF9ESVI9JHtsaWJleGVjZGlyfSBcCiAiCitTRUNVUklUWV9QSUVfQ0ZMQUdTX3JlbW92ZSA9ICItZlBJRSAtcGllIgogCiBGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9LyR7QlBOfS8ke1BWfS9tb2R1bGVzIgogRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L2NtYWtlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnNvdXAvbGlic291cC0yLjRfMi41Ni4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnNvdXAvbGlic291cC0yLjRfMi41Ni4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMWYyOTRlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJzb3VwL2xpYnNvdXAtMi40XzIuNTYuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLVNVTU1BUlkgPSAiQW4gSFRUUCBsaWJyYXJ5IGltcGxlbWVudGF0aW9uIGluIEMiCi1IT01FUEFHRSA9ICJodHRwczovL3dpa2kuZ25vbWUub3JnL1Byb2plY3RzL2xpYnNvdXAiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKLVNFQ1RJT04gPSAieDExL2dub21lL2xpYnMiCi1MSUNFTlNFID0gIkxHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIgotCi1ERVBFTkRTID0gImdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBsaWJ4bWwyIHNxbGl0ZTMgaW50bHRvb2wtbmF0aXZlIgotCi1TSFJUX1ZFUiA9ICIke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzBdfS4ke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzFdfSIKLQotU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vbGlic291cC8ke1NIUlRfVkVSfS9saWJzb3VwLSR7UFZ9LnRhci54eiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjQ2NTA4M2Y3NGI3YmIwMzU5NTlkZGIwNTk5MzEzOTg2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ4MjE2YjcxZGU4MjQ3YmM2ZjI3NGVjMDU0YzA4NTQ3YjJlMDQzNjljMWY4YWRkNzEzZTkzNTBjOGVmODFmZTUiCi0KLVMgPSAiJHtXT1JLRElSfS9saWJzb3VwLSR7UFZ9IgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uIGd0ay1kb2MKLQotIyBsaWJzb3VwLWdub21lIGlzIGVudGlyZWx5IGRlcHJlY2F0ZWQgYW5kIGp1c3Qgc3R1YnMgaW4gMi40MiBvbndhcmRzLiBEaXNhYmxlIGJ5IGRlZmF1bHQuCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tnbm9tZV0gPSAiLS13aXRoLWdub21lLC0td2l0aG91dC1nbm9tZSIKLVBBQ0tBR0VDT05GSUdbZ3NzYXBpXSA9ICItLXdpdGgtZ3NzYXBpLC0td2l0aG91dC1nc3NhcGksa3JiNSIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS12YWxhIgotCi0jIFdoZW4gYnVpbHQgd2l0aG91dCBnbm9tZSBzdXBwb3J0LCBsaWJzb3VwLTIuNCB3aWxsIGNvbnRhaW4gb25seSBvbmUgc2hhcmVkIGxpYgotIyBhbmQgd2lsbCB0aGVyZWZvcmUgYmVjb21lIHN1YmplY3QgdG8gcmVuYW1pbmcgYnkgZGViaWFuLmJiY2xhc3MuIFByZXZlbnQKLSMgcmVuYW1pbmcgaW4gb3JkZXIgdG8ga2VlcCB0aGUgcGFja2FnZSBuYW1lIGNvbnNpc3RlbnQgcmVnYXJkbGVzcyBvZiB3aGV0aGVyCi0jIGdub21lIHN1cHBvcnQgaXMgZW5hYmxlZCBvciBkaXNhYmxlZC4KLURFQklBTl9OT0FVVE9OQU1FXyR7UE59ID0gIjEiCi0KLSMgZ2xpYi1uZXR3b3JraW5nIGlzIG5lZWRlZCBmb3IgU1NMLCBwcm94aWVzLCBldGMuCi1SUkVDT01NRU5EU18ke1BOfSA9ICJnbGliLW5ldHdvcmtpbmciCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlic291cC9saWJzb3VwLTIuNF8yLjU4LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlic291cC9saWJzb3VwLTIuNF8yLjU4LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzlmOTVlNQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJzb3VwL2xpYnNvdXAtMi40XzIuNTguMi5iYgpAQCAtMCwwICsxLDM1IEBACitTVU1NQVJZID0gIkFuIEhUVFAgbGlicmFyeSBpbXBsZW1lbnRhdGlvbiBpbiBDIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmdub21lLm9yZy9Qcm9qZWN0cy9saWJzb3VwIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCitTRUNUSU9OID0gIngxMS9nbm9tZS9saWJzIgorTElDRU5TRSA9ICJMR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01ZjMwZjA3MTZkZmRkMGQ5MWViNDM5ZWJlYzUyMmVjMiIKKworREVQRU5EUyA9ICJnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUgbGlieG1sMiBzcWxpdGUzIGludGx0b29sLW5hdGl2ZSIKKworU0hSVF9WRVIgPSAiJHtAZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKVswXX0uJHtAZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKVsxXX0iCisKK1NSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9L2xpYnNvdXAvJHtTSFJUX1ZFUn0vbGlic291cC0ke1BWfS50YXIueHoiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlYjMzYWRiNDU5YzIyODNlZmM1YzdkMDljY2RiYmNmYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0NDIzMDBjYTFiMWJmOGEzYmJmMmY3ODgyMDMyODdmZjg2MjU0MmQ0ZmMwNDhmMTlhOTJhMDY4YTI3ZDE3YjcyIgorCitTID0gIiR7V09SS0RJUn0vbGlic291cC0ke1BWfSIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbiBndGstZG9jCisKKyMgbGlic291cC1nbm9tZSBpcyBlbnRpcmVseSBkZXByZWNhdGVkIGFuZCBqdXN0IHN0dWJzIGluIDIuNDIgb253YXJkcy4gRGlzYWJsZSBieSBkZWZhdWx0LgorUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbZ25vbWVdID0gIi0td2l0aC1nbm9tZSwtLXdpdGhvdXQtZ25vbWUiCitQQUNLQUdFQ09ORklHW2dzc2FwaV0gPSAiLS13aXRoLWdzc2FwaSwtLXdpdGhvdXQtZ3NzYXBpLGtyYjUiCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtdmFsYSIKKworIyBXaGVuIGJ1aWx0IHdpdGhvdXQgZ25vbWUgc3VwcG9ydCwgbGlic291cC0yLjQgd2lsbCBjb250YWluIG9ubHkgb25lIHNoYXJlZCBsaWIKKyMgYW5kIHdpbGwgdGhlcmVmb3JlIGJlY29tZSBzdWJqZWN0IHRvIHJlbmFtaW5nIGJ5IGRlYmlhbi5iYmNsYXNzLiBQcmV2ZW50CisjIHJlbmFtaW5nIGluIG9yZGVyIHRvIGtlZXAgdGhlIHBhY2thZ2UgbmFtZSBjb25zaXN0ZW50IHJlZ2FyZGxlc3Mgb2Ygd2hldGhlcgorIyBnbm9tZSBzdXBwb3J0IGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQuCitERUJJQU5fTk9BVVRPTkFNRV8ke1BOfSA9ICIxIgorCisjIGdsaWItbmV0d29ya2luZyBpcyBuZWVkZWQgZm9yIFNTTCwgcHJveGllcywgZXRjLgorUlJFQ09NTUVORFNfJHtQTn0gPSAiZ2xpYi1uZXR3b3JraW5nIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmQuaW5jIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmQuaW5jCmluZGV4IGM4ZmY4MzYuLmVkMzJkMTkgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bndpbmQvbGlidW53aW5kLmluYworKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZC5pbmMKQEAgLTIsMjMgKzIsMTggQEAKIERFU0NSSVBUSU9OID0gImEgcG9ydGFibGUgYW5kIGVmZmljaWVudCBDIHByb2dyYW1taW5nIGludGVyZmFjZSAoQVBJKSB0byBkZXRlcm1pbmUgdGhlIGNhbGwtY2hhaW4gb2YgYSBwcm9ncmFtIgogSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5ub25nbnUub3JnL2xpYnVud2luZCIKIExJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9M2ZjZWQxMWQ2ZGY3MTliNDc1MDU4MzdhNTFjMTZhZTUiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO2JlZ2lubGluZT0zO21kNT0zZmNlZDExZDZkZjcxOWI0NzUwNTgzN2E1MWMxNmFlNSIKIERFUEVORFMgKz0gImxpYmF0b21pYy1vcHMiCiAKIGluaGVyaXQgYXV0b3Rvb2xzCiAKIFBBQ0tBR0VDT05GSUcgPz89ICIiCiBQQUNLQUdFQ09ORklHW2x6bWFdID0gIi0tZW5hYmxlLW1pbmlkZWJ1Z2luZm8sLS1kaXNhYmxlLW1pbmlkZWJ1Z2luZm8seHoiCi1QQUNLQUdFQ09ORklHW2xhdGV4ZG9jc10gPSAiLS1lbmFibGUtZG9jdW1lbnRhaXRvbiwgLS1kaXNhYmxlLWRvY3VtZW50YXRpb24sIGxhdGV4Mm1hbi1uYXRpdmUiCitQQUNLQUdFQ09ORklHW2xhdGV4ZG9jc10gPSAiLS1lbmFibGUtZG9jdW1lbnRhdGlvbiwgLS1kaXNhYmxlLWRvY3VtZW50YXRpb24sIGxhdGV4Mm1hbi1uYXRpdmUiCiAKIEVYVFJBX09FQ09ORl9hcm0gPSAiLS1lbmFibGUtZGVidWctZnJhbWUiCiBFWFRSQV9PRUNPTkZfYWFyY2g2NCA9ICItLWVuYWJsZS1kZWJ1Zy1mcmFtZSIKIAotQ0ZMQUdTICs9ICIke0FUT01JQ09QU30iCi1BVE9NSUNPUFNfYXJtdjUgPSAiLURBT19VU0VfUFRIUkVBRF9ERUZTPTEiCi1BVE9NSUNPUFNfYXJtdjQgPSAiLURBT19VU0VfUFRIUkVBRF9ERUZTPTEiCi1BVE9NSUNPUFMgPz0gIiIKLQogU0VDVVJJVFlfTERGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtbHNzcF9ub25zaGFyZWQgLWxzc3AiCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmQvZml4LW1pcHMucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZC9maXgtbWlwcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDIyMjM3Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmQvZml4LW1pcHMucGF0Y2gKQEAgLTAsMCArMSwxMzQgQEAKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CisKK0Zyb20gNWYzNTRjYjdiOWM4NGRhZTAwNmYwZWJkOGFkN2E3OGQ3ZTJhYWQwYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERhdmUgV2F0c29uIDxkYXZlandhdHNvbkBmYi5jb20+CitEYXRlOiBXZWQsIDI1IEphbiAyMDE3IDE2OjE4OjAyIC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIG1pcHMvdGlsZWd4OiBBZGQgbWlzc2luZyB1bndpbmRfaS5oIGhlYWRlciBmaWxlCisKK3JlcG9ydGVkLWJ5OiBKb2huIEtuaWdodCA8Sm9obi5LbmlnaHRAYmVsa2luLmNvbT4KKy0tLQorIHNyYy9NYWtlZmlsZS5hbSB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUuYW0gYi9zcmMvTWFrZWZpbGUuYW0KK2luZGV4IDVkODc0NzU1Li43ZGU0YzQyNSAxMDA2NDQKKy0tLSBhL3NyYy9NYWtlZmlsZS5hbQorKysrIGIvc3JjL01ha2VmaWxlLmFtCitAQCAtMjgwLDcgKzI4MCw3IEBAIGxpYnVud2luZF9ocHBhX2xhX1NPVVJDRVNfaHBwYSA9ICQobGlidW53aW5kX2xhX1NPVVJDRVNfaHBwYV9jb21tb24pCVwKKyAJaHBwYS9HcmVzdW1lLmMgaHBwYS9Hc3RlcC5jCisgCisgIyBUaGUgbGlzdCBvZiBmaWxlcyB0aGF0IGdvIGluZm8gbGlidW53aW5kIGFuZCBsaWJ1bndpbmQtbWlwczoKKy1ub2luc3RfSEVBREVSUyArPSBtaXBzL2luaXQuaCBtaXBzL29mZnNldHMuaAorK25vaW5zdF9IRUFERVJTICs9IG1pcHMvaW5pdC5oIG1pcHMvb2Zmc2V0cy5oIG1pcHMvdW53aW5kX2kuaAorIGxpYnVud2luZF9sYV9TT1VSQ0VTX21pcHNfY29tbW9uID0gJChsaWJ1bndpbmRfbGFfU09VUkNFU19jb21tb24pCSAgICBcCisgCW1pcHMvaXNfZnByZWcuYyBtaXBzL3JlZ25hbWUuYworIAorQEAgLTI5OSw3ICsyOTksNyBAQCBsaWJ1bndpbmRfbWlwc19sYV9TT1VSQ0VTX21pcHMgPSAkKGxpYnVud2luZF9sYV9TT1VSQ0VTX21pcHNfY29tbW9uKQkgICAgXAorIAltaXBzL0dpc19zaWduYWxfZnJhbWUuYyBtaXBzL0dyZWdzLmMgbWlwcy9HcmVzdW1lLmMgbWlwcy9Hc3RlcC5jCisgCisgIyBUaGUgbGlzdCBvZiBmaWxlcyB0aGF0IGdvIGluZm8gbGlidW53aW5kIGFuZCBsaWJ1bndpbmQtdGlsZWd4OgorLW5vaW5zdF9IRUFERVJTICs9IHRpbGVneC9pbml0LmggdGlsZWd4L29mZnNldHMuaAorK25vaW5zdF9IRUFERVJTICs9IHRpbGVneC9pbml0LmggdGlsZWd4L29mZnNldHMuaCB0aWxlZ3gvdW53aW5kX2kuaAorIGxpYnVud2luZF9sYV9TT1VSQ0VTX3RpbGVneF9jb21tb24gPSAkKGxpYnVud2luZF9sYV9TT1VSQ0VTX2NvbW1vbikJICAgIFwKKyAJdGlsZWd4L2lzX2ZwcmVnLmMgdGlsZWd4L3JlZ25hbWUuYworIAorZGlmZiAtLWdpdCBhL3NyYy9taXBzL3Vud2luZF9pLmggYi9zcmMvbWlwcy91bndpbmRfaS5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uMzM4MmRjZgorLS0tIC9kZXYvbnVsbAorKysrIGIvc3JjL21pcHMvdW53aW5kX2kuaAorQEAgLTAsMCArMSw0MyBAQAorKy8qIGxpYnVud2luZCAtIGEgcGxhdGZvcm0taW5kZXBlbmRlbnQgdW53aW5kIGxpYnJhcnkKKysgICBDb3B5cmlnaHQgKEMpIDIwMDggQ29kZVNvdXJjZXJ5CisrCisrVGhpcyBmaWxlIGlzIHBhcnQgb2YgbGlidW53aW5kLgorKworK1Blcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZworK2EgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQorKyJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKKyt3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCisrZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCisrcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCisrdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorKworK1RoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlCisraW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisrCisrVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCisrRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCisrTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKKytOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFCisrTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTgorK09GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTgorK1dJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLiAgKi8KKysKKysjaWZuZGVmIHVud2luZF9pX2gKKysjZGVmaW5lIHVud2luZF9pX2gKKysKKysjaW5jbHVkZSA8c3RkaW50Lmg+CisrCisrI2luY2x1ZGUgPGxpYnVud2luZC1taXBzLmg+CisrCisrI2luY2x1ZGUgImxpYnVud2luZF9pLmgiCisrCisrI2RlZmluZSBtaXBzX2xvY2sgICAgICAgICAgICAgICAgICAgICAgIFVOV19PQkoobG9jaykKKysjZGVmaW5lIG1pcHNfbG9jYWxfcmVzdW1lICAgICAgICAgICAgICAgVU5XX09CSihsb2NhbF9yZXN1bWUpCisrI2RlZmluZSBtaXBzX2xvY2FsX2FkZHJfc3BhY2VfaW5pdCAgICAgIFVOV19PQkoobG9jYWxfYWRkcl9zcGFjZV9pbml0KQorKworK2V4dGVybiBpbnQgbWlwc19sb2NhbF9yZXN1bWUgKHVud19hZGRyX3NwYWNlX3QgYXMsIHVud19jdXJzb3JfdCAqY3Vyc29yLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnKTsKKysKKytleHRlcm4gdm9pZCBtaXBzX2xvY2FsX2FkZHJfc3BhY2VfaW5pdCAodm9pZCk7CisrCisrI2VuZGlmIC8qIHVud2luZF9pX2ggKi8KK2RpZmYgLS1naXQgYS9zcmMvdGlsZWd4L3Vud2luZF9pLmggYi9zcmMvdGlsZWd4L3Vud2luZF9pLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5hYWM3YmUzCistLS0gL2Rldi9udWxsCisrKysgYi9zcmMvdGlsZWd4L3Vud2luZF9pLmgKK0BAIC0wLDAgKzEsNDQgQEAKKysvKiBsaWJ1bndpbmQgLSBhIHBsYXRmb3JtLWluZGVwZW5kZW50IHVud2luZCBsaWJyYXJ5CisrICAgQ29weXJpZ2h0IChDKSAyMDA4IENvZGVTb3VyY2VyeQorKworK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIGxpYnVud2luZC4KKysKKytQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKKythIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKKysiU29mdHdhcmUiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCisrd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAorK2Rpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bworK3Blcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bworK3RoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKysKKytUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZQorK2luY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorKworK1RIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAorK0VYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgorK01FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5ECisrTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRQorK0xJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04KKytPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04KKytXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4gICovCisrCisrI2lmbmRlZiB1bndpbmRfaV9oCisrI2RlZmluZSB1bndpbmRfaV9oCisrCisrI2luY2x1ZGUgPG1lbW9yeS5oPgorKyNpbmNsdWRlIDxzdGRpbnQuaD4KKysKKysjaW5jbHVkZSA8bGlidW53aW5kLXRpbGVneC5oPgorKworKyNpbmNsdWRlICJsaWJ1bndpbmRfaS5oIgorKworKyNkZWZpbmUgdGlsZWd4X2xvY2FsX3Jlc3VtZSAgICAgICAgICAgIFVOV19PQkoobG9jYWxfcmVzdW1lKQorKyNkZWZpbmUgdGlsZWd4X2xvY2FsX2FkZHJfc3BhY2VfaW5pdCAgIFVOV19PQkoobG9jYWxfYWRkcl9zcGFjZV9pbml0KQorKworK2V4dGVybiBpbnQgdGlsZWd4X2xvY2FsX3Jlc3VtZSAodW53X2FkZHJfc3BhY2VfdCBhcywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVud19jdXJzb3JfdCAqY3Vyc29yLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnKTsKKysKKytleHRlcm4gdm9pZCB0aWxlZ3hfbG9jYWxfYWRkcl9zcGFjZV9pbml0ICh2b2lkKTsKKysKKysjZW5kaWYgLyogdW53aW5kX2lfaCAqLwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmRfMS4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmRfMS4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2MzEyZjIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidW53aW5kL2xpYnVud2luZF8xLjIuYmIKQEAgLTAsMCArMSwyNCBAQAorcmVxdWlyZSBsaWJ1bndpbmQuaW5jCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlZWZjYjVkN2Y3OGZkYzhmMWVkMTcyYTI2ZWE0MjAyZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxZGUzOGZmYmRjODhiZDY5NGQxMDA4MTg2NTg3MWNkMmJmYmIwMmFkOGVmOWUxNjA2YWVlMThkNjU1MzJiOTkyIgorCitTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5zYXZhbm5haC5ub25nbnUub3JnL3JlbGVhc2VzL2xpYnVud2luZC9saWJ1bndpbmQtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL0FkZC1BT19SRVFVSVJFX0NBUy10by1maXgtYnVpbGQtb24tQVJNLXY2LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYmFja3RyYWNlLVVzZS1vbmx5LXdpdGgtZ2xpYmMtYW5kLXVjbGliYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXg4Ni1TdHViLW91dC14ODZfbG9jYWxfcmVzdW1lLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLW9uLW1pcHMtbXVzbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWFkZC1rbm9icy10by1kaXNhYmxlLWVuYWJsZS10ZXN0cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXBwYzMyLUNvbnNpZGVyLXVjb250ZXh0LW1pc21hdGNoZXMtYmV0d2Vlbi1nbGliYy1hbmQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbGlidW53aW5kLTEuMS14MzIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZml4LW1pcHMucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZmlsZTovL211c2wtaGVhZGVyLWNvbmZsaWN0LnBhdGNoIgorRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLW11c2wgPSAiIC0tZGlzYWJsZS1kb2N1bWVudGF0aW9uIC0tZGlzYWJsZS10ZXN0cyAiCisKKyMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzIwNDg3LworQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKKworTERGTEFHUyArPSAiLVdsLC16LHJlbHJvLC16LG5vdyAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2xkLWlzLWdvbGQnLCAnIC1mdXNlLWxkPWJmZCAnLCAnJywgZCl9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmRfZ2l0LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVud2luZC9saWJ1bndpbmRfZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNjM3YzVjLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1bndpbmQvbGlidW53aW5kX2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLXJlcXVpcmUgbGlidW53aW5kLmluYwotCi1QViA9ICIxLjErZ2l0JHtTUkNQVn0iCi0KLVNSQ1JFViA9ICJiYzg2OThmZDdlZDEzYTYyOWE4ZWMzY2IyYTg5YmQ3NGY5ZDhiNWMwIgotCi1TUkNfVVJJID0gImdpdDovL2dpdC5zdi5nbnUub3JnL2xpYnVud2luZC5naXQgXAotICAgICAgICAgICBmaWxlOi8vQWRkLUFPX1JFUVVJUkVfQ0FTLXRvLWZpeC1idWlsZC1vbi1BUk0tdjYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1iYWNrdHJhY2UtVXNlLW9ubHktd2l0aC1nbGliYy1hbmQtdWNsaWJjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEteDg2LVN0dWItb3V0LXg4Nl9sb2NhbF9yZXN1bWUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtb24tbWlwcy1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtYWRkLWtub2JzLXRvLWRpc2FibGUtZW5hYmxlLXRlc3RzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtcHBjMzItQ29uc2lkZXItdWNvbnRleHQtbWlzbWF0Y2hlcy1iZXR3ZWVuLWdsaWJjLWFuZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9saWJ1bndpbmQtMS4xLXgzMi5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vbXVzbC1oZWFkZXItY29uZmxpY3QucGF0Y2giCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLS1kaXNhYmxlLWRvY3VtZW50YXRpb24gLS1kaXNhYmxlLXRlc3RzICIKLQotIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMjA0ODcvCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgotCi0jIHNlZSBodHRwczovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0xOTk4NwotU0VDVVJJVFlfQ0ZMQUdTX3JlbW92ZV9hYXJjaDY0ID0gIi1mcGllIgotU0VDVVJJVFlfQ0ZMQUdTX2FwcGVuZF9hYXJjaDY0ID0gIiAtZlBJRSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotTERGTEFHUyArPSAiLVdsLC16LHJlbHJvLC16LG5vdyAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2xkLWlzLWdvbGQnLCAnIC1mdXNlLWxkPWJmZCAnLCAnJywgZCl9IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVyY3UvbGlidXJjdS8wMDAxLVN1cHBvcnQtZm9yLU5JT1MyLWFyY2hpdGVjdHVyZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1cmN1L2xpYnVyY3UvMDAwMS1TdXBwb3J0LWZvci1OSU9TMi1hcmNoaXRlY3R1cmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyOTYyMzguLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVyY3UvbGlidXJjdS8wMDAxLVN1cHBvcnQtZm9yLU5JT1MyLWFyY2hpdGVjdHVyZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE0NSArMCwwIEBACi1Gcm9tIGYzN2M1YjU2Mzc2ZDliYjUwNmRhNjhiYjExZDBkNzQ2M2U2ZTU2M2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJlayBWYXN1dCA8bWFyZXhAZGVueC5kZT4KLURhdGU6IFR1ZSwgOSBGZWIgMjAxNiAwMTo1MjoyNiArMDEwMAotU3ViamVjdDogW1BBVENIXSBTdXBwb3J0IGZvciBOSU9TMiBhcmNoaXRlY3R1cmUKLQotQWRkIHN1cHBvcnQgZm9yIHRoZSBBbHRlcmEgTklPUzIgQ1BVIGFyY2hpcmVjdHVyZS4gVGhlIGF0b21pYyBvcGVyYXRpb25zCi1hcmUgaGFuZGxlZCBieSB0aGUgR0NDLiBUaGUgbWVtb3J5IGJhcnJpZXJzIG9uIHRoaXMgc3lzdGVtcyBhcmUgZW50aXJlbHkKLXRyaXZpYWwgdG9vLCBzaW5jZSB0aGUgQ1BVIGRvZXMgbm90IHN1cHBvcnQgU01QIGF0IGFsbC4KLQotU2lnbmVkLW9mZi1ieTogTWFyZWsgVmFzdXQgPG1hcmV4QGRlbnguZGU+Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFsgaHR0cDovL2dpdC5sdHRuZy5vcmcvP3A9dXNlcnNwYWNlLXJjdS5naXQ7YT1jb21taXQ7aD04NTkwNTBiMzA4OGFhM2YwY2I1OWQ3ZjUxY2UyNGI5YTBmMThmYWE1IF0KLQotLS0tCi0gTElDRU5TRSAgICAgICAgICAgICAgfCAgMSArCi0gUkVBRE1FLm1kICAgICAgICAgICAgfCAgMSArCi0gY29uZmlndXJlLmFjICAgICAgICAgfCAgMSArCi0gdXJjdS9hcmNoL25pb3MyLmggICAgfCA0MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gdXJjdS91YXRvbWljL25pb3MyLmggfCAzMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIDUgZmlsZXMgY2hhbmdlZCwgNzUgaW5zZXJ0aW9ucygrKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCB1cmN1L2FyY2gvbmlvczIuaAotIGNyZWF0ZSBtb2RlIDEwMDY0NCB1cmN1L3VhdG9taWMvbmlvczIuaAotCi1kaWZmIC0tZ2l0IGEvTElDRU5TRSBiL0xJQ0VOU0UKLWluZGV4IDMxNDcwOTQuLmEwNmZkY2MgMTAwNjQ0Ci0tLS0gYS9MSUNFTlNFCi0rKysgYi9MSUNFTlNFCi1AQCAtNDUsNiArNDUsNyBAQCBjb21waWxlci5oCi0gYXJjaC9zMzkwLmgKLSB1YXRvbWljL2FscGhhLmgKLSB1YXRvbWljL21pcHMuaAotK3VhdG9taWMvbmlvczIuaAotIHVhdG9taWMvczM5MC5oCi0gc3lzdGVtLmgKLSAKLWRpZmYgLS1naXQgYS9SRUFETUUubWQgYi9SRUFETUUubWQKLWluZGV4IGY2YjI5MGYuLjZmZTljMWUgMTAwNjQ0Ci0tLS0gYS9SRUFETUUubWQKLSsrKyBiL1JFQURNRS5tZAotQEAgLTQzLDYgKzQzLDcgQEAgQ3VycmVudGx5LCB0aGUgZm9sbG93aW5nIGFyY2hpdGVjdHVyZXMgYXJlIHN1cHBvcnRlZDoKLSAgIC0gUzM5MCwgUzM5MHgKLSAgIC0gQVJNIDMyLzY0Ci0gICAtIE1JUFMKLSsgIC0gTklPUzIKLSAgIC0gQWxwaGEKLSAgIC0gaWE2NAotICAgLSBTcGFyY3Y5IDMyLzY0Ci1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBlZWJlZDU2Li44MDE0ZTFkIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0xMzYsNiArMTM2LDcgQEAgQVNfQ0FTRShbJGhvc3RfY3B1XSwKLSAJW2FybSpdLCBbQVJDSFRZUEU9ImFybSJdLAotIAlbYWFyY2g2NCpdLCBbQVJDSFRZUEU9ImFhcmNoNjQiXSwKLSAJW21pcHMqXSwgW0FSQ0hUWVBFPSJtaXBzIl0sCi0rCVtuaW9zMipdLCBbQVJDSFRZUEU9Im5pb3MyIl0sCi0gCVt0aWxlKl0sIFtBUkNIVFlQRT0idGlsZSJdLAotIAlbaHBwYSpdLCBbQVJDSFRZUEU9ImhwcGEiXSwKLSAJW0FSQ0hUWVBFPSJ1bmtub3duIl0KLWRpZmYgLS1naXQgYS91cmN1L2FyY2gvbmlvczIuaCBiL3VyY3UvYXJjaC9uaW9zMi5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYjRmM2U1MAotLS0tIC9kZXYvbnVsbAotKysrIGIvdXJjdS9hcmNoL25pb3MyLmgKLUBAIC0wLDAgKzEsNDAgQEAKLSsjaWZuZGVmIF9VUkNVX0FSQ0hfTklPUzJfSAotKyNkZWZpbmUgX1VSQ1VfQVJDSF9OSU9TMl9ICi0rCi0rLyoKLSsgKiBhcmNoX25pb3MyLmg6IHRyaXZpYWwgZGVmaW5pdGlvbnMgZm9yIHRoZSBOSU9TMiBhcmNoaXRlY3R1cmUuCi0rICoKLSsgKiBDb3B5cmlnaHQgKGMpIDIwMTYgTWFyZWsgVmFzdXQgPG1hcmV4QGRlbnguZGU+Ci0rICoKLSsgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0rICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyAqCi0rICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rICoKLSsgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKLSsgKi8KLSsKLSsjaW5jbHVkZSA8dXJjdS9jb21waWxlci5oPgotKyNpbmNsdWRlIDx1cmN1L2NvbmZpZy5oPgotKyNpbmNsdWRlIDx1cmN1L3N5c2NhbGwtY29tcGF0Lmg+Ci0rCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rZXh0ZXJuICJDIiB7Ci0rI2VuZGlmCi0rCi0rI2RlZmluZSBjbW1fbWIoKQljbW1fYmFycmllcigpCi0rCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rfQotKyNlbmRpZgotKwotKyNpbmNsdWRlIDx1cmN1L2FyY2gvZ2VuZXJpYy5oPgotKwotKyNlbmRpZiAvKiBfVVJDVV9BUkNIX05JT1MyX0ggKi8KLWRpZmYgLS1naXQgYS91cmN1L3VhdG9taWMvbmlvczIuaCBiL3VyY3UvdWF0b21pYy9uaW9zMi5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNWIzYzMwMwotLS0tIC9kZXYvbnVsbAotKysrIGIvdXJjdS91YXRvbWljL25pb3MyLmgKLUBAIC0wLDAgKzEsMzIgQEAKLSsjaWZuZGVmIF9VUkNVX1VBVE9NSUNfQVJDSF9OSU9TMl9ICi0rI2RlZmluZSBfVVJDVV9VQVRPTUlDX0FSQ0hfTklPUzJfSAotKwotKy8qCi0rICogQXRvbWljIGV4Y2hhbmdlIG9wZXJhdGlvbnMgZm9yIHRoZSBOSU9TMiBhcmNoaXRlY3R1cmUuIExldCBHQ0MgZG8gaXQuCi0rICoKLSsgKiBDb3B5cmlnaHQgKGMpIDIwMTYgTWFyZWsgVmFzdXQgPG1hcmV4QGRlbnguZGU+Ci0rICoKLSsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Ci0rICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvCi0rICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUKLSsgKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKLSsgKiBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwotKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0rICoKLSsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgotKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotKyAqCi0rICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKLSsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKLSsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKLSsgKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCi0rICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKLSsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCi0rICogSU4gVEhFIFNPRlRXQVJFLgotKyAqLwotKwotKyNpbmNsdWRlIDx1cmN1L2NvbXBpbGVyLmg+Ci0rI2luY2x1ZGUgPHVyY3Uvc3lzdGVtLmg+Ci0rI2luY2x1ZGUgPHVyY3UvdWF0b21pYy9nZW5lcmljLmg+Ci0rCi0rI2VuZGlmIC8qIF9VUkNVX1VBVE9NSUNfQVJDSF9OSU9TMl9IICovCi0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidXJjdS9saWJ1cmN1XzAuMTAuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1cmN1L2xpYnVyY3VfMC4xMC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlY2IyMGIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidXJjdS9saWJ1cmN1XzAuMTAuMC5iYgpAQCAtMCwwICsxLDE3IEBACitTVU1NQVJZID0gIlVzZXJzcGFjZSBSQ1UgKHJlYWQtY29weS11cGRhdGUpIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwOi8vbHR0bmcub3JnL3VyY3UiCitCVUdUUkFDS0VSID0gImh0dHA6Ly9sdHRuZy5vcmcvcHJvamVjdC9pc3N1ZXMiCisKK0xJQ0VOU0UgPSAiTEdQTHYyLjErICYgTUlULXN0eWxlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZTU0OGQyODczNzI4OWQ3NWE4ZjFlMDFiYTJmZDc4MjUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3VyY3UuaDtiZWdpbmxpbmU9NDtlbmRsaW5lPTMyO21kNT00ZGUwZDY4ZDNhOTk3NjQzNzE1MDM2ZDIyMDlhZTFkOSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlL3VyY3UvdWF0b21pYy94ODYuaDtiZWdpbmxpbmU9NDtlbmRsaW5lPTIxO21kNT01OGU1MGJiZDhhMmYwNzNiYjU1MDBlNjU1NGFmMGQwYiIKKworU1JDX1VSSSA9ICJodHRwOi8vbHR0bmcub3JnL2ZpbGVzL3VyY3UvdXNlcnNwYWNlLXJjdS0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNjlkYWI4NWI2OTI5YzM3ODMzOGI5NTA0YWRjNmFlYTciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2NiNThhN2JhNTE1MTE5ODA4N2YwMjVkYzhkMTlkODkxOGU5YzZkNTY3NzJmMDM5Njk2YzExMWQ5YWFkMzE5MCIKKworUyA9ICIke1dPUktESVJ9L3VzZXJzcGFjZS1yY3UtJHtQVn0iCitpbmhlcml0IGF1dG90b29scwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVyY3UvbGlidXJjdV8wLjkuMy5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1cmN1L2xpYnVyY3VfMC45LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0ODZlMGEuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVyY3UvbGlidXJjdV8wLjkuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVNVTU1BUlkgPSAiVXNlcnNwYWNlIFJDVSAocmVhZC1jb3B5LXVwZGF0ZSkgbGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHA6Ly9sdHRuZy5vcmcvdXJjdSIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2x0dG5nLm9yZy9wcm9qZWN0L2lzc3VlcyIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSsgJiBNSVQtc3R5bGUiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1lNTQ4ZDI4NzM3Mjg5ZDc1YThmMWUwMWJhMmZkNzgyNSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly91cmN1Lmg7YmVnaW5saW5lPTQ7ZW5kbGluZT0zMjttZDU9NGRlMGQ2OGQzYTk5NzY0MzcxNTAzNmQyMjA5YWUxZDkgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdXJjdS91YXRvbWljL3g4Ni5oO2JlZ2lubGluZT00O2VuZGxpbmU9MjE7bWQ1PTU4ZTUwYmJkOGEyZjA3M2JiNTUwMGU2NTU0YWYwZDBiIgotCi1TUkNfVVJJID0gImh0dHA6Ly9sdHRuZy5vcmcvZmlsZXMvdXJjdS91c2Vyc3BhY2UtcmN1LSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1TdXBwb3J0LWZvci1OSU9TMi1hcmNoaXRlY3R1cmUucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI5MjA5NzBlMzVhMWEyMDY2YzgzNTNlYWJmZWFiODczMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxYmNlMzJlNmE2Yzk2N2ZlZjZkMzdhZGFhZGYzM2RmMTk4NzhkNjk2NzNmOWVmOWQzZjI0NzBlMGM2ZWQ0MDA2IgotCi1TID0gIiR7V09SS0RJUn0vdXNlcnNwYWNlLXJjdS0ke1BWfSIKLUNGTEFHU19hcHBlbmRfbGliYy11Y2xpYmMgPSAiIC1EX0dOVV9TT1VSQ0UiCi1pbmhlcml0IGF1dG90b29scwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnhzbHQvbGlieHNsdF8xLjEuMjkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieHNsdC9saWJ4c2x0XzEuMS4yOS5iYgppbmRleCBkMjdjNzA2Li41YjExYmMyIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieHNsdC9saWJ4c2x0XzEuMS4yOS5iYgorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieHNsdC9saWJ4c2x0XzEuMS4yOS5iYgpAQCAtOCw3ICs4LDcgQEAKIFNFQ1RJT04gPSAibGlicyIKIERFUEVORFMgPSAibGlieG1sMiIKIAotU1JDX1VSSSA9ICJmdHA6Ly94bWxzb2Z0Lm9yZy9saWJ4c2x0L2xpYnhzbHQtJHtQVn0udGFyLmd6IFwKK1NSQ19VUkkgPSAiaHR0cDovL3htbHNvZnQub3JnL3NvdXJjZXMvbGlieHNsdC0ke1BWfS50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vcGtnY29uZmlnX2ZpeC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1wa2ctY29uZmlnLXRvLWZpbmQtZ2NyeXB0LWFuZC1saWJ4bWwyLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtTGluay1saWJyYXJpZXMtd2l0aC1saWJtLnBhdGNoIFwKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9sejQvZmlsZXMvMDAwMS10ZXN0cy1NYWtlZmlsZS1kb24tdC11c2UtTElCRElSLWFzLXZhcmlhYmxlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2x6NC9maWxlcy8wMDAxLXRlc3RzLU1ha2VmaWxlLWRvbi10LXVzZS1MSUJESVItYXMtdmFyaWFibGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDA0OTRlOAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9sejQvZmlsZXMvMDAwMS10ZXN0cy1NYWtlZmlsZS1kb24tdC11c2UtTElCRElSLWFzLXZhcmlhYmxlLnBhdGNoCkBAIC0wLDAgKzEsODIgQEAKK0Zyb20gZDQ3NjhkOWUyOWI4MDUwOTZhODZhYTEzYzBkMzBlZTgyMTVhZjRkZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+CitEYXRlOiBNb24sIDI2IEp1biAyMDE3IDEyOjA3OjA5ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIHRlc3RzL01ha2VmaWxlOiBkb24ndCB1c2UgTElCRElSIGFzIHZhcmlhYmxlCisKK0xJQkRJUiBtYXkgYmUgb3ZlcnJpZGVuIHdpdGggYSBlbnZpcm9ubWVudCB2YXJpYWJsZTogSW4gdGhpcyBjYXNlIG1ha2UKK2NsZWFuIGJyZWFrcy4gVXNlIGFub3RoZXIgdmFyaWFibGUgbmFtZS4KKworU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKy0tLQorIHRlc3RzL01ha2VmaWxlIHwgMjYgKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZSBiL3Rlc3RzL01ha2VmaWxlCitpbmRleCA5N2ZhNzgyLi41MWRkMDM4IDEwMDY0NAorLS0tIGEvdGVzdHMvTWFrZWZpbGUKKysrKyBiL3Rlc3RzL01ha2VmaWxlCitAQCAtMzIsNyArMzIsNyBAQCBERVNURElSID89CisgUFJFRklYICA/PSAvdXNyL2xvY2FsCisgQklORElSICA6PSAkKFBSRUZJWCkvYmluCisgTUFORElSICA6PSAkKFBSRUZJWCkvc2hhcmUvbWFuL21hbjEKKy1MSUJESVIgIDo9IC4uL2xpYgorK0xaNERJUiAgOj0gLi4vbGliCisgUFJHRElSICA6PSAuLi9wcm9ncmFtcworIFZPSUQgICAgOj0gL2Rldi9udWxsCisgVEVTVERJUiA6PSB2ZXJzaW9uc1Rlc3QKK0BAIC00Myw3ICs0Myw3IEBAIENGTEFHUyAgKz0gLWcgLVdhbGwgLVdleHRyYSAtV3VuZGVmIC1XY2FzdC1xdWFsIC1XY2FzdC1hbGlnbiAtV3NoYWRvdyAtV3N3aXRjaC1lCisgICAgICAgICAgICAtV2RlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudCAtV3N0cmljdC1wcm90b3R5cGVzIFwKKyAgICAgICAgICAgIC1XcG9pbnRlci1hcml0aCAtV3N0cmljdC1hbGlhc2luZz0xCisgQ0ZMQUdTICArPSAkKE1PUkVGTEFHUykKKy1DUFBGTEFHUzo9IC1JJChMSUJESVIpIC1JJChQUkdESVIpIC1EWFhIX05BTUVTUEFDRT1MWjRfCisrQ1BQRkxBR1M6PSAtSSQoTFo0RElSKSAtSSQoUFJHRElSKSAtRFhYSF9OQU1FU1BBQ0U9TFo0XworIEZMQUdTICAgID0gJChDRkxBR1MpICQoQ1BQRkxBR1MpICQoTERGTEFHUykKKyAKKyAKK0BAIC03OSwzMSArNzksMzEgQEAgbHo0YzMyOiAgICMgY3JlYXRlIGEgMzItYml0cyB2ZXJzaW9uIGZvciAzMi82NCBpbnRlcm9wIHRlc3RzCisgCSQoTUFLRSkgLUMgJChQUkdESVIpIGNsZWFuICRAIENGTEFHUz0iLW0zMiAkKENGTEFHUykiCisgCWNwICQoTFo0KSAkKExaNCljMzIKKyAKKy1mdWxsYmVuY2ggIDogJChMSUJESVIpL2x6NC5vICQoTElCRElSKS9sejRoYy5vICQoTElCRElSKS9sejRmcmFtZS5vICQoTElCRElSKS94eGhhc2gubyBmdWxsYmVuY2guYworK2Z1bGxiZW5jaCAgOiAkKExaNERJUikvbHo0Lm8gJChMWjRESVIpL2x6NGhjLm8gJChMWjRESVIpL2x6NGZyYW1lLm8gJChMWjRESVIpL3h4aGFzaC5vIGZ1bGxiZW5jaC5jCisgCSQoQ0MpICQoRkxBR1MpICReIC1vICRAJChFWFQpCisgCistZnVsbGJlbmNoLWxpYjogZnVsbGJlbmNoLmMgJChMSUJESVIpL3h4aGFzaC5jCistCSQoTUFLRSkgLUMgJChMSUJESVIpIGxpYmx6NC5hCistCSQoQ0MpICQoRkxBR1MpICReIC1vICRAJChFWFQpICQoTElCRElSKS9saWJsejQuYQorK2Z1bGxiZW5jaC1saWI6IGZ1bGxiZW5jaC5jICQoTFo0RElSKS94eGhhc2guYworKwkkKE1BS0UpIC1DICQoTFo0RElSKSBsaWJsejQuYQorKwkkKENDKSAkKEZMQUdTKSAkXiAtbyAkQCQoRVhUKSAkKExaNERJUikvbGlibHo0LmEKKyAKKy1mdWxsYmVuY2gtZGxsOiBmdWxsYmVuY2guYyAkKExJQkRJUikveHhoYXNoLmMKKy0JJChNQUtFKSAtQyAkKExJQkRJUikgbGlibHo0CistCSQoQ0MpICQoRkxBR1MpICReIC1vICRAJChFWFQpIC1ETFo0X0RMTF9JTVBPUlQ9MSAkKExJQkRJUikvZGxsL2xpYmx6NC5kbGwKKytmdWxsYmVuY2gtZGxsOiBmdWxsYmVuY2guYyAkKExaNERJUikveHhoYXNoLmMKKysJJChNQUtFKSAtQyAkKExaNERJUikgbGlibHo0CisrCSQoQ0MpICQoRkxBR1MpICReIC1vICRAJChFWFQpIC1ETFo0X0RMTF9JTVBPUlQ9MSAkKExaNERJUikvZGxsL2xpYmx6NC5kbGwKKyAKKy1mdXp6ZXIgIDogJChMSUJESVIpL2x6NC5vICQoTElCRElSKS9sejRoYy5vICQoTElCRElSKS94eGhhc2gubyBmdXp6ZXIuYworK2Z1enplciAgOiAkKExaNERJUikvbHo0Lm8gJChMWjRESVIpL2x6NGhjLm8gJChMWjRESVIpL3h4aGFzaC5vIGZ1enplci5jCisgCSQoQ0MpICQoRkxBR1MpICReIC1vICRAJChFWFQpCisgCistZnJhbWV0ZXN0OiAkKExJQkRJUikvbHo0ZnJhbWUubyAkKExJQkRJUikvbHo0Lm8gJChMSUJESVIpL2x6NGhjLm8gJChMSUJESVIpL3h4aGFzaC5vIGZyYW1ldGVzdC5jCisrZnJhbWV0ZXN0OiAkKExaNERJUikvbHo0ZnJhbWUubyAkKExaNERJUikvbHo0Lm8gJChMWjRESVIpL2x6NGhjLm8gJChMWjRESVIpL3h4aGFzaC5vIGZyYW1ldGVzdC5jCisgCSQoQ0MpICQoRkxBR1MpICReIC1vICRAJChFWFQpCisgCistZmFzdHRlc3Q6ICQoTElCRElSKS9sejQubyBmYXN0dGVzdC5jCisrZmFzdHRlc3Q6ICQoTFo0RElSKS9sejQubyBmYXN0dGVzdC5jCisgCSQoQ0MpICQoRkxBR1MpICReIC1vICRAJChFWFQpCisgCisgZGF0YWdlbiA6ICQoUFJHRElSKS9kYXRhZ2VuLmMgZGF0YWdlbmNsaS5jCisgCSQoQ0MpICQoRkxBR1MpIC1JJChQUkdESVIpICReIC1vICRAJChFWFQpCisgCisgY2xlYW46CistCUAkKE1BS0UpIC1DICQoTElCRElSKSAkQCA+ICQoVk9JRCkKKysJQCQoTUFLRSkgLUMgJChMWjRESVIpICRAID4gJChWT0lEKQorIAlAJChNQUtFKSAtQyAkKFBSR0RJUikgJEAgPiAkKFZPSUQpCisgCUAkKFJNKSBjb3JlICoubyAqLnRlc3QgdG1wKiBcCisgICAgICAgICBmdWxsYmVuY2gtZGxsJChFWFQpIGZ1bGxiZW5jaC1saWIkKEVYVCkgXAorLS0gCisyLjEuNAorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbHo0L2ZpbGVzL3J1bi1wdGVzdCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9sejQvZmlsZXMvcnVuLXB0ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzYmZjNDkKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbHo0L2ZpbGVzL3J1bi1wdGVzdApAQCAtMCwwICsxLDQzIEBACisjIS9iaW4vc2gKK2NkIHRlc3RzdWl0ZQorCitlY2hvIC1uICItLS0tIHRlc3QtbHo0IC0tLS0iCittYWtlIC1DIHRlc3RzIHRlc3QtbHo0ICA+IC9kZXYvbnVsbCAyPiYxCisKK2lmIFsgJD8gLWVxIDAgXTsgdGhlbgorICBlY2hvICJQQVNTIgorZWxzZQorICBlY2hvICJGQUlMIgorZmkKKworZWNobyAtbiAiLS0tLSB0ZXN0LWZhc3R0ZXN0IC0tLS0iCittYWtlIC1DIHRlc3RzIHRlc3QtZmFzdHRlc3QgID4gL2Rldi9udWxsIDI+JjEKK2lmIFsgJD8gLWVxIDAgXTsgdGhlbgorICBlY2hvICJQQVNTIgorZWxzZQorICBlY2hvICJGQUlMIgorZmkKKworZWNobyAtbiAiLS0tLSB0ZXN0LWZyYW1ldGVzdCAtLS0tIgorbWFrZSAtQyB0ZXN0cyB0ZXN0LWZyYW1ldGVzdCA+IC9kZXYvbnVsbCAyPiYxCitpZiBbICQ/IC1lcSAwIF07IHRoZW4KKyAgZWNobyAiUEFTUyIKK2Vsc2UKKyAgZWNobyAiRkFJTCIKK2ZpCisKK2VjaG8gLW4gIi0tLS0gdGVzdC1mdWxsYmVuY2ggLS0tLSIKK21ha2UgLUMgdGVzdHMgdGVzdC1mdWxsYmVuY2ggPiAgL2Rldi9udWxsIDI+JjEKK2lmIFsgJD8gLWVxIDAgXTsgdGhlbgorICBlY2hvICJQQVNTIgorZWxzZQorICBlY2hvICJGQUlMIgorZmkKKworZWNobyAtbiAiLS0tLSB0ZXN0LWZ1enplciAtLS0tIgorbWFrZSAtQyB0ZXN0cyB0ZXN0LWZ1enplciA+ICAvZGV2L251bGwgMj4mMQoraWYgWyAkPyAtZXEgMCBdOyB0aGVuCisgIGVjaG8gIlBBU1MiCitlbHNlCisgIGVjaG8gIkZBSUwiCitmaQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2x6NC9sejQuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbHo0L2x6NC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDNjNWE3YS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbHo0L2x6NC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLVNVTU1BUlkgPSAiRXh0cmVtZWx5IEZhc3QgQ29tcHJlc3Npb24gYWxnb3JpdGhtIgotREVTQ1JJUFRJT04gPSAiTFo0IGlzIGEgdmVyeSBmYXN0IGxvc3NsZXNzIGNvbXByZXNzaW9uIGFsZ29yaXRobSwgcHJvdmlkaW5nIGNvbXByZXNzaW9uIHNwZWVkIGF0IDQwMCBNQi9zIHBlciBjb3JlLCBzY2FsYWJsZSB3aXRoIG11bHRpLWNvcmVzIENQVS4gSXQgYWxzbyBmZWF0dXJlcyBhbiBleHRyZW1lbHkgZmFzdCBkZWNvZGVyLCB3aXRoIHNwZWVkIGluIG11bHRpcGxlIEdCL3MgcGVyIGNvcmUsIHR5cGljYWxseSByZWFjaGluZyBSQU0gc3BlZWQgbGltaXRzIG9uIG11bHRpLWNvcmUgc3lzdGVtcy4iCi0KLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vbGliL0xJQ0VOU0U7bWQ1PTBiMGQwNjNmMzdhNDQ3N2I1NGFmMjQ1OTQ3N2RjYWZkIgotCi1TUkNSRVYgPSAiZDg2ZGM5MTY3NzFjMTI2YWZiNzk3NjM3ZGRhOWY2NDIxYzBjYjk5OCIKLQotUFYgPSAiMTMxK2dpdCR7U1JDUFZ9IgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vQ3lhbjQ5NzMvbHo0LmdpdCIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotRVhUUkFfT0VNQUtFID0gIlBSRUZJWD0ke3ByZWZpeH0gQ0M9JyR7Q0N9JyBERVNURElSPSR7RH0gTElCRElSPSR7bGliZGlyfSBJTkNMVURFRElSPSR7aW5jbHVkZWRpcn0iCi0KLWRvX2luc3RhbGwoKSB7Ci0Jb2VfcnVubWFrZSBpbnN0YWxsCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9sejQvbHo0XzEuNy40LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2x6NC9sejRfMS43LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODZhMWFiOQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9sejQvbHo0XzEuNy40LmJiCkBAIC0wLDAgKzEsMjcgQEAKK1NVTU1BUlkgPSAiRXh0cmVtZWx5IEZhc3QgQ29tcHJlc3Npb24gYWxnb3JpdGhtIgorREVTQ1JJUFRJT04gPSAiTFo0IGlzIGEgdmVyeSBmYXN0IGxvc3NsZXNzIGNvbXByZXNzaW9uIGFsZ29yaXRobSwgcHJvdmlkaW5nIGNvbXByZXNzaW9uIHNwZWVkIGF0IDQwMCBNQi9zIHBlciBjb3JlLCBzY2FsYWJsZSB3aXRoIG11bHRpLWNvcmVzIENQVS4gSXQgYWxzbyBmZWF0dXJlcyBhbiBleHRyZW1lbHkgZmFzdCBkZWNvZGVyLCB3aXRoIHNwZWVkIGluIG11bHRpcGxlIEdCL3MgcGVyIGNvcmUsIHR5cGljYWxseSByZWFjaGluZyBSQU0gc3BlZWQgbGltaXRzIG9uIG11bHRpLWNvcmUgc3lzdGVtcy4iCisKK0xJQ0VOU0UgPSAiQlNEIHwgQlNELTItQ2xhdXNlIHwgR1BMLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2xpYi9MSUNFTlNFO21kNT1lYmMyZWE0ODE0YTY0ZGU3NzA4ZjE1NzE5MDRiMzJjY1wKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Byb2dyYW1zL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0U7bWQ1PTdmMjg1N2Q1OGJlZmY2ZDA0MTM3YmY5YjA5ZTVmZmI2IgorCitQRSA9ICIxIgorCitTUkNSRVYgPSAiN2JiNjRmZjJiNjlhOWY4MzY3ZGU5YWI0ODNjZGFkZjQyYjRjMWI2NSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2x6NC9sejQuZ2l0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdHMtTWFrZWZpbGUtZG9uLXQtdXNlLUxJQkRJUi1hcy12YXJpYWJsZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorIgorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAidig/UDxwdmVyPi4qKSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworRVhUUkFfT0VNQUtFID0gIlBSRUZJWD0ke3ByZWZpeH0gQ0M9JyR7Q0N9JyBERVNURElSPSR7RH0gTElCRElSPSR7bGliZGlyfSBJTkNMVURFRElSPSR7aW5jbHVkZWRpcn0iCisKK2RvX2luc3RhbGwoKSB7CisJb2VfcnVubWFrZSBpbnN0YWxsCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9sem8vbHpvLzAwMDEtQWRkLXBrZ2NvbmZpZ2Rpci10by1zb2x2ZS10aGUtdW5kZWZpbmUtZXJyb3IucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbHpvL2x6by8wMDAxLUFkZC1wa2djb25maWdkaXItdG8tc29sdmUtdGhlLXVuZGVmaW5lLWVycm9yLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyMzVhMTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbHpvL2x6by8wMDAxLUFkZC1wa2djb25maWdkaXItdG8tc29sdmUtdGhlLXVuZGVmaW5lLWVycm9yLnBhdGNoCkBAIC0wLDAgKzEsMjcgQEAKK0Zyb20gZTczMGJmZDdjMmQzYTRiNWYzNjA1ODc4NTk5Y2I5YjIwZDMxYjFmZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEZhbiBYaW4gPGZhbi54aW5AanAuZnVqaXRzdS5jb20+CitEYXRlOiBGcmksIDIgSnVuIDIwMTcgMTE6NTI6MjUgKzA5MDAKK1N1YmplY3Q6IFtQQVRDSF0gQWRkIHBrZ2NvbmZpZ2RpciB0byBzb2x2ZSB0aGUgdW5kZWZpbmUgZXJyb3IuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBGYW4gWGluIDxmYW4ueGluQGpwLmZ1aml0c3UuY29tPgorLS0tCisgTWFrZWZpbGUuYW0gfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KK2luZGV4IGU0ZDM4M2IuLmM3NTAyM2QgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5hbQorKysrIGIvTWFrZWZpbGUuYW0KK0BAIC0xNCw2ICsxNCw3IEBAIEFNX0NQUEZMQUdTID0gLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGUgLUkkKHRvcF9zcmNkaXIpCisgTERBREQgPSBzcmMvbGlibHpvMi5sYQorIGxpYl9MVExJQlJBUklFUyA9Cisgbm9pbnN0X1BST0dSQU1TID0KKytwa2djb25maWdkaXIgPSAkKGxpYmRpcikvcGtnY29uZmlnCisgcGtnY29uZmlnX0RBVEEgPSBsem8yLnBjCisgCisgCistLSAKKzEuOS4xCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9sem8vbHpvXzIuMDkuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbHpvL2x6b18yLjA5LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOTc4NjE3Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9sem8vbHpvXzIuMDkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1TVU1NQVJZID0gIkxvc3NsZXNzIGRhdGEgY29tcHJlc3Npb24gbGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cub2Jlcmh1bWVyLmNvbS9vcGVuc291cmNlL2x6by8iCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9sem9faW5pdC5jO2JlZ2lubGluZT01O2VuZGxpbmU9MjU7bWQ1PTM1NTAyMzgzNWE5YjllZWI3MGFiODk1Mzk1ZTk1MWZmIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cub2Jlcmh1bWVyLmNvbS9vcGVuc291cmNlL2x6by9kb3dubG9hZC9sem8tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLW1lbWNweS1pbnN0ZWFkLW9mLXJlaW52ZW50aW5nLWl0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2FjaW5jbHVkZS5tNCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjN2ZmYzlhMTAzYWZlMmQxYmJhMGIwMTVlN2FhODg3ZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmMjk0YTdjZWQzMTMwNjNjMDU3YzUwNDI1N2Y0MzdjODMzNWM0MWJmZWVkMjM1MzFlZTRlNmEyYjg3YmNiMzRjIgotCi1pbmhlcml0IGF1dG90b29scyBwdGVzdAotCi1FWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtc2hhcmVkIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0JY3AgJHtXT1JLRElSfS9hY2luY2x1ZGUubTQgJHtTfS8KLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQl0PSR7RH0ke1BURVNUX1BBVEh9Ci0JY3AgJHtTfS91dGlsL2NoZWNrLnNoICR0Ci0JY3AgJHtCfS9taW5pbHpvL3Rlc3RtaW5pICR0Ci0JZm9yIGkgaW4gdGVzdHMvYWxpZ24gdGVzdHMvY2hrc3VtIGx6b3Rlc3QvbHpvdGVzdCBleGFtcGxlcy9zaW1wbGUKLQkJZG8gY3AgJHtCfS9gZGlybmFtZSAkaWAvLmxpYnMvYGJhc2VuYW1lICRpYCAkdDsgXAotCWRvbmUKLX0KLQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbHpvL2x6b18yLjEwLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2x6by9sem9fMi4xMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OTBkMjMwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2x6by9sem9fMi4xMC5iYgpAQCAtMCwwICsxLDM2IEBACitTVU1NQVJZID0gIkxvc3NsZXNzIGRhdGEgY29tcHJlc3Npb24gbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cub2Jlcmh1bWVyLmNvbS9vcGVuc291cmNlL2x6by8iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9sem9faW5pdC5jO2JlZ2lubGluZT01O2VuZGxpbmU9MjU7bWQ1PTlhZTY5N2NhMDE4MjliMGEzODNjNWQyZDE2M2UwMTA4IgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cub2Jlcmh1bWVyLmNvbS9vcGVuc291cmNlL2x6by9kb3dubG9hZC9sem8tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLW1lbWNweS1pbnN0ZWFkLW9mLXJlaW52ZW50aW5nLWl0LnBhdGNoIFwKKwkgICBmaWxlOi8vMDAwMS1BZGQtcGtnY29uZmlnZGlyLXRvLXNvbHZlLXRoZS11bmRlZmluZS1lcnJvci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9hY2luY2x1ZGUubTQgXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMzlkM2YzZjljNTVjODdiMWU1ZDY4ODhlMTQyMGY0YjUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzBmODkyOTQzMjA4MjY2ZjliNjU0M2IzYWUzMDhmYWI2Mjg0YzVjOTBlNjI3OTMxNDQ2ZmI0OWI0MjIxYTA3MiIKKworaW5oZXJpdCBhdXRvdG9vbHMgcHRlc3QKKworRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXNoYXJlZCIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworCWNwICR7V09SS0RJUn0vYWNpbmNsdWRlLm00ICR7U30vCit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJdD0ke0R9JHtQVEVTVF9QQVRIfQorCWNwICR7U30vdXRpbC9jaGVjay5zaCAkdAorCWNwICR7Qn0vbWluaWx6by90ZXN0bWluaSAkdAorCWZvciBpIGluIHRlc3RzL2FsaWduIHRlc3RzL2Noa3N1bSBsem90ZXN0L2x6b3Rlc3QgZXhhbXBsZXMvc2ltcGxlCisJCWRvIGNwICR7Qn0vYGRpcm5hbWUgJGlgLy5saWJzL2BiYXNlbmFtZSAkaWAgJHQ7IFwKKwlkb25lCit9CisKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25ldHRsZS9uZXR0bGUtMy4zL2Rsb3Blbi10ZXN0LnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25ldHRsZS9uZXR0bGUtMy4zL2Rsb3Blbi10ZXN0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0ZjBiN2UKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmV0dGxlL25ldHRsZS0zLjMvZGxvcGVuLXRlc3QucGF0Y2gKQEAgLTAsMCArMSwyMCBAQAorUmVwbGFjZSByZWxhdGl2ZSBwYXRoIG9mIGxpYm5ldHRsZS5zbyB3aXRoIGFic29sdXRlIHBhdGggc28gdGhlIHRlc3QKK3Byb2dyYW0gY2FuIGZpbmQgaXQuCitSZWxhdGl2ZSBwYXRocyBhcmUgbm90IHN1aXRhYmxlLCBhcyB0aGUgZm9sZGVyIHN0cnVjdXJlIGZvciBwdGVzdAoraXMgZGlmZmVyZW50IGZyb20gdGhlIG9uZSBleHBlY3RlZCBieSB0aGUgbmV0dGxlIHRlc3RzdWl0ZS4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KKworLS0tIGEvdGVzdHN1aXRlL2Rsb3Blbi10ZXN0LmMJMjAxNi0xMC0wMSAwMDoyODozOC4wMDAwMDAwMDAgLTA3MDAKKysrKyBiL3Rlc3RzdWl0ZS9kbG9wZW4tdGVzdC5jCTIwMTctMTAtMTMgMTE6MDg6NTcuMjI3NTcyODYwIC0wNzAwCitAQCAtOSw3ICs5LDcgQEAKKyBtYWluIChpbnQgYXJnYyBVTlVTRUQsIGNoYXIgKiphcmd2IFVOVVNFRCkKKyB7CisgI2lmIEhBVkVfTElCREwKKy0gIHZvaWQgKmhhbmRsZSA9IGRsb3BlbiAoIi4uL2xpYm5ldHRsZS5zbyIsIFJUTERfTk9XKTsKKysgIHZvaWQgKmhhbmRsZSA9IGRsb3BlbiAoIi91c3IvbGliL2xpYm5ldHRsZS5zbyIsIFJUTERfTk9XKTsKKyAgIGludCAoKmdldF92ZXJzaW9uKSh2b2lkKTsKKyAgIGlmICghaGFuZGxlKQorICAgICB7CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmV0dGxlL25ldHRsZV8zLjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbmV0dGxlL25ldHRsZV8zLjMuYmIKaW5kZXggYjc2YmFiZi4uMzk1MTY3OCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25ldHRsZS9uZXR0bGVfMy4zLmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uZXR0bGUvbmV0dGxlXzMuMy5iYgpAQCAtMTEsNSArMTEsOSBAQAogICAgICAgICAgICAgZmlsZTovL2NoZWNrLWhlYWRlci1maWxlcy1vZi1vcGVuc3NsLW9ubHktaWYtZW5hYmxlXy5wYXRjaCBcCiAgICAgICAgICAgICAiCiAKK1NSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICJcCisgICAgICAgICAgICBmaWxlOi8vZGxvcGVuLXRlc3QucGF0Y2ggXAorICAgICAgICAgICAgIgorCiBTUkNfVVJJW21kNXN1bV0gPSAiMTBmOTY5Zjc4YTQ2MzcwNGFlNzM1Mjk5NzgxNDhkYmUiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDY5NDI2MjdkNWQwY2ExMTcyMGZlYzE4ZDgxZmMzOGY3ZWY4MzdlYTQxOTdjMWY2MzBlNzFjZTBkNDcwYjExZSIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ucHRoL25wdGhfMS4zLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25wdGgvbnB0aF8xLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0ZmMwNjQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25wdGgvbnB0aF8xLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1TVU1NQVJZID0gIk5ldyBHTlUgUG9ydGFibGUgVGhyZWFkcyBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnVwZy5vcmcvc29mdHdhcmUvcHRoLyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiTEdQTHYzKyAmIEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiXAotICAgIGZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZVwKLSAgICBmaWxlOi8vQ09QWUlORy5MRVNTRVI7bWQ1PTZhNmE4ZTAyMDgzOGIyMzQwNmM4MWIxOWMxZDQ2ZGY2XAotICAgICIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dudXBnLm9yZy9kb3dubG9hZC9pbmRleC5odG1sIgotU1JDX1VSSSA9ICIke0dOVVBHX01JUlJPUn0vbnB0aC9ucHRoLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vcGtnY29uZmlnLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlZmUxNTI0YzUzNjcwYjU3NTVkYzI3ODkzZDJkNjhhMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiY2E4MTk0MDQzNmFlZDA3MzRlYjhkMGZmOGIxNzllMDRjYzhjMDg3ZjU2MjUyMDQ0MTlmNWY0NWQ3MzZhODJhIgotCi1CSU5DT05GSUcgPSAiJHtiaW5kaXJ9L25wdGgtY29uZmlnIgotCi1pbmhlcml0IGF1dG90b29scyBiaW5jb25maWctZGlzYWJsZWQKLQotRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYm5wdGguc28uKiIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9L25wdGgtY29uZmlnIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25wdGgvbnB0aF8xLjUuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnB0aC9ucHRoXzEuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NGRlNzBjCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25wdGgvbnB0aF8xLjUuYmIKQEAgLTAsMCArMSwyMSBAQAorU1VNTUFSWSA9ICJOZXcgR05VIFBvcnRhYmxlIFRocmVhZHMgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251cGcub3JnL3NvZnR3YXJlL3B0aC8iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkxHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gIlwKKyAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTJjYWNlZDBiMjVkZmVmZDRjNjAxZDkyYmQxNTExNmRlXAorICAgICIKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dudXBnLm9yZy9kb3dubG9hZC9pbmRleC5odG1sIgorU1JDX1VSSSA9ICIke0dOVVBHX01JUlJPUn0vbnB0aC9ucHRoLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vcGtnY29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI5YmEyZGM0MzAyZDJmMzJjNjY3MzdjNDNlZDE5MWIxYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyOTRhNjkwYzFmNTM3YjkyZWQ4MjlkODY3YmVlNTM3ZTQ2YmU5M2ZiZDYwYjE2YzA0NjMwZmJiZmNkOWRiM2MyIgorCitCSU5DT05GSUcgPSAiJHtiaW5kaXJ9L25wdGgtY29uZmlnIgorCitpbmhlcml0IGF1dG90b29scyBiaW5jb25maWctZGlzYWJsZWQKKworRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYm5wdGguc28uKiIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9L25wdGgtY29uZmlnIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci8wMDAxLW1kLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByLzAwMDEtbWQtRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mM2NkNjcwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci8wMDAxLW1kLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbSAxNDdmM2MyYWNiZDk2ZDQ0MDI1Y2VjMTE4MDBkZWQwMjgyMzI3NzY0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMTggU2VwIDIwMTcgMTc6MjI6NDMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gbWQ6IEZpeCBidWlsZCB3aXRoIG11c2wKKworVGhlIE1JUFMgc3BlY2lmaWMgaGVhZGVyIDxzZ2lkZWZzLmg+IGlzIG5vdCBwcm92aWRlZCBieSBtdXNsCitsaW51eCBrZXJuZWwgaGVhZGVycyBwcm92aWRlIDxhc20vc2dpZGVmcy5oPiB3aGljaCBoYXMgc2FtZSBkZWZpbml0aW9ucworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworIHByL2luY2x1ZGUvbWQvX2xpbnV4LmNmZyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3ByL2luY2x1ZGUvbWQvX2xpbnV4LmNmZyBiL3ByL2luY2x1ZGUvbWQvX2xpbnV4LmNmZworaW5kZXggNjQwYjE5Yy4uMzEyOTZhOCAxMDA2NDQKKy0tLSBhL3ByL2luY2x1ZGUvbWQvX2xpbnV4LmNmZworKysrIGIvcHIvaW5jbHVkZS9tZC9fbGludXguY2ZnCitAQCAtNDk5LDcgKzQ5OSw3IEBACisgI2VsaWYgZGVmaW5lZChfX21pcHNfXykKKyAKKyAvKiBGb3IgX0FCSTY0ICovCistI2luY2x1ZGUgPHNnaWRlZnMuaD4KKysjaW5jbHVkZSA8YXNtL3NnaWRlZnMuaD4KKyAKKyAjaWZkZWYgX19NSVBTRUJfXworICNkZWZpbmUgSVNfQklHX0VORElBTiAxCistLSAKKzIuMTQuMQorCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByXzQuMTMuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHJfNC4xMy4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2M2ViZWNmLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHJfNC4xMy4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTkwICswLDAgQEAKLVNVTU1BUlkgPSAiTmV0c2NhcGUgUG9ydGFibGUgUnVudGltZSBMaWJyYXJ5IgotSE9NRVBBR0UgPSAgImh0dHA6Ly93d3cubW96aWxsYS5vcmcvcHJvamVjdHMvbnNwci8iCi1MSUNFTlNFID0gIkdQTC0yLjAgfCBNUEwtMi4wIHwgTEdQTC0yLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9jb25maWd1cmUuaW47YmVnaW5saW5lPTM7ZW5kbGluZT02O21kNT05MGMyZmRlZTM4ZTQ1ZDYzMDJhYmNmZTQ3NWM4YjVjNSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS5pbjtiZWdpbmxpbmU9NDtlbmRsaW5lPTM4O21kNT1iZWRhMWRiYjk4YTUxNWY1NTdkM2U1OGVmMDZiY2E5OSIKLVNFQ1RJT04gPSAibGlicy9uZXR3b3JrIgotCi1TUkNfVVJJID0gImh0dHA6Ly9mdHAubW96aWxsYS5vcmcvcHViL25zcHIvcmVsZWFzZXMvdiR7UFZ9L3NyYy9uc3ByLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtcnBhdGgtZnJvbS10ZXN0cy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtYnVpbGQtb24teDg2XzY0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3JlbW92ZS1zcmNkaXItZnJvbS1jb25maWd1cmUtaW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1BZGQtbmlvczItc3VwcG9ydC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtc3RkaW50LmgtZm9yLVNTSVpFX01BWC1hbmQtU0laRV9NQVgtZGVmaW5pdGkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbnNwci5wYy5pbiBcCi0iCi0KLUNBQ0hFRF9DT05GSUdVUkVWQVJTX2FwcGVuZF9saWJjLW11c2wgPSAiIENGTEFHUz0nJHtDRkxBR1N9IC1EX1BSX1BPTExfQVZBSUxBQkxFIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1EX1BSX0hBVkVfT0ZGNjRfVCAtRF9QUl9JTkVUNiAtRF9QUl9IQVZFX0lORVRfTlRPUCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtRF9QUl9IQVZFX0dFVEhPU1RCWU5BTUUyIC1EX1BSX0hBVkVfR0VUQUREUklORk8gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLURfUFJfSU5FVDZfUFJPQkUgLUROT19ETE9QRU5fTlVMTCciCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vZnRwLm1vemlsbGEub3JnL3B1Yi9uc3ByL3JlbGVhc2VzLyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gInYoP1A8cHZlcj5cZCsoXC5cZCspKykvIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOWM0NDI5OGE2ZmM0NzhiM2MwYTRlOThmNGY5OTgxZWQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWU0YzE3NTEzMzlhNzZlN2M3NzJjMGMwNDc0NzQ4OGQ3ZjhjOTg5ODBiNDM0ZGM4NDY5NzdlNDMxMTc4MzNhYiIKLQotQ1ZFX1BST0RVQ1QgPSAibmV0c2NhcGVfcG9ydGFibGVfcnVudGltZSIKLQotUyA9ICIke1dPUktESVJ9L25zcHItJHtQVn0vbnNwciIKLQotUkRFUEVORFNfJHtQTn0tZGV2ICs9ICJwZXJsIgotVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCi0KLVRFU1RTID0gIiBcCi0gICAgYWNjZXB0IFwKLSAgICBhY2NlcHRyZWFkIFwKLSAgICBhY2NlcHRyZWFkZW11IFwKLSAgICBhZmZpbml0eSBcCi0gICAgYWxhcm0gXAotICAgIGFub25mbSBcCi0gICAgYXRvbWljIFwKLSAgICBhdHRhY2ggXAotICAgIGJpZ2ZpbGUgXAotICAgIGNsZWFudXAgXAotICAgIGNsdHNydiAgXAotICAgIGNvbmN1ciBcCi0gICAgY3ZhciBcCi0gICAgY3ZhcjIgXAotICAgIGRsbHRlc3QgXAotICAgIGR0b2EgXAotICAgIGVycmNvZGVzIFwKLSAgICBleGl0IFwKLSAgICBmZGNhY2ggXAotICAgIGZpbGVpbyBcCi0gICAgZm9yZWlnbiBcCi0gICAgZm9ybWF0dG0gXAotICAgIGZzeW5jIFwKLSAgICBnZXRob3N0IFwKLSAgICBnZXRwcm90byBcCi0gICAgaTJsIFwKLSAgICBpbml0Y2xrIFwKLSAgICBpbnJ2YWwgXAotICAgIGluc3RydW10IFwKLSAgICBpbnRyaW8gXAotICAgIGludHJ1cHQgXAotICAgIGlvX3RpbWVvdXQgXAotICAgIGlvY29udGhyIFwKLSAgICBqb2luIFwKLSAgICBqb2lua2sgXAotICAgIGpvaW5rdSBcCi0gICAgam9pbnVrIFwKLSAgICBqb2ludXUgXAotICAgIGxheWVyIFwKLSAgICBsYXp5aW5pdCBcCi0gICAgbGliZmlsZW5hbWUgXAotICAgIGxsdGVzdCBcCi0gICAgbG9jayBcCi0gICAgbG9ja2ZpbGUgXAotICAgIGxvZ2ZpbGUgXAotICAgIGxvZ2dlciBcCi0gICAgbWFueV9jdiBcCi0gICAgbXVsdGl3YWl0IFwKLSAgICBuYW1lc2htMSBcCi0gICAgbmJsYXllciBcCi0gICAgbm9uYmxvY2sgXAotICAgIG50aW90byBcCi0gICAgbnRvaCBcCi0gICAgb3BfMmxvbmcgXAotICAgIG9wX2V4Y2wgXAotICAgIG9wX2ZpbG5mIFwKLSAgICBvcF9maWxvayBcCi0gICAgb3Bfbm9maWwgXAotICAgIHBhcmVudCBcCi0gICAgcGFyc2V0bSBcCi0gICAgcGVlayBcCi0gICAgcGVyZiBcCi0gICAgcGlwZXBpbmcgXAotICAgIHBpcGVwaW5nMiBcCi0gICAgcGlwZXNlbGYgXAotICAgIHBvbGxfbm0gXAotICAgIHBvbGxfdG8gXAotICAgIHBvbGxhYmxlIFwKLSAgICBwcmZ0ZXN0IFwKLSAgICBwcmltYmxvayBcCi0gICAgcHJvdmlkZXIgXAotICAgIHBycG9sbG1sIFwKLSAgICByYW5maWxlIFwKLSAgICByYW5kc2VlZCBcCi0gICAgcmVpbml0IFwKLSAgICByd2xvY2t0ZXN0IFwKLSAgICBzZWxfc3BkIFwKLSAgICBzZWxjdF9lciBcCi0gICAgc2VsY3Rfbm0gXAotICAgIHNlbGN0X3RvIFwKLSAgICBzZWxpbnRyIFwKLSAgICBzZW1hIFwKLSAgICBzZW1hZXJyIFwKLSAgICBzZW1hcGluZyBcCi0gICAgc2VuZHpsZiBcCi0gICAgc2VydmVyX3Rlc3QgXAotICAgIHNlcnZyX2trIFwKLSAgICBzZXJ2cl91ayBcCi0gICAgc2VydnJfa3UgXAotICAgIHNlcnZyX3V1IFwKLSAgICBzaG9ydF90aHJlYWQgXAotICAgIHNpZ3BpcGUgXAotICAgIHNvY2tldCBcCi0gICAgc29ja29wdCBcCi0gICAgc29ja3BpbmcgXAotICAgIHNwcmludGYgXAotICAgIHN0YWNrIFwKLSAgICBzdGRpbyBcCi0gICAgc3RyMmFkZHIgXAotICAgIHN0cm9kIFwKLSAgICBzd2l0Y2ggXAotICAgIHN5c3RlbSBcCi0gICAgdGVzdGJpdCBcCi0gICAgdGVzdGZpbGUgXAotICAgIHRocmVhZHMgXAotICAgIHRpbWVtYWMgXAotICAgIHRpbWV0ZXN0IFwKLSAgICB0cGQgXAotICAgIHVkcHNydiBcCi0gICAgdmVyY2hlY2sgXAotICAgIHZlcnNpb24gXAotICAgIHdyaXRldiBcCi0gICAgeG5vdGlmeSBcCi0gICAgemVyb2xlbiIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0iCi1QQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0Jb2VfcnVubWFrZSBDUk9TU19DT01QSUxFPTEgQ0ZMQUdTPSItRFhQX1VOSVgiIExERkxBR1M9IiIgQ0M9Z2NjIC1DIGNvbmZpZyBleHBvcnQKLX0KLQotZG9fY29tcGlsZV9hcHBlbmQoKSB7Ci0Jb2VfcnVubWFrZSAtQyBwci90ZXN0cwotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1EICR7V09SS0RJUn0vbnNwci5wYy5pbiAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3ByLnBjCi0gICAgc2VkIC1pICBcCi0gICAgLWUgJ3M6TlNQUlZFUlNJT046JHtQVn06ZycgXAotICAgIC1lICdzOk9FUFJFRklYOiR7cHJlZml4fTpnJyBcCi0gICAgLWUgJ3M6T0VMSUJESVI6JHtsaWJkaXJ9OmcnIFwKLSAgICAtZSAnczpPRUlOQ0RJUjoke2luY2x1ZGVkaXJ9OmcnIFwKLSAgICAtZSAnczpPRUVYRUNQUkVGSVg6JHtleGVjX3ByZWZpeH06ZycgXAotICAgICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL25zcHIucGMKLQotICAgIG1rZGlyIC1wICR7RH0ke2xpYmRpcn0vbnNwci90ZXN0cwotICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L3ByL3Rlc3RzL3J1bnRlc3RzLnBsICR7RH0ke2xpYmRpcn0vbnNwci90ZXN0cwotICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L3ByL3Rlc3RzL3J1bnRlc3RzLnNoICR7RH0ke2xpYmRpcn0vbnNwci90ZXN0cwotICAgIGNkICR7Qn0vcHIvdGVzdHMKLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtURVNUU30gJHtEfSR7bGliZGlyfS9uc3ByL3Rlc3RzCi0KLSAgICAjIGRlbGV0ZSBjb21waWxlLWV0LnBsIGFuZCBwZXJyLnByb3BlcnRpZXMgZnJvbSAke2JpbmRpcn0gYmVjYXVzZSB0aGVzZSBhcmUKLSAgICAjIG9ubHkgdXNlZCB0byBnZW5lcmF0ZSBwcmVyci5jIGFuZCBwcmVyci5oIGZpbGVzIGZyb20gcHJlcnIuZXQgYXQgY29tcGlsZQotICAgICMgdGltZQotICAgIHJtICR7RH0ke2JpbmRpcn0vY29tcGlsZS1ldC5wbCAke0R9JHtiaW5kaXJ9L3ByZXJyLnByb3BlcnRpZXMKLX0KLQotRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYiouc28iCi1GSUxFU18ke1BOfS1kZXYgPSAiJHtiaW5kaXJ9LyogJHtsaWJkaXJ9L25zcHIvdGVzdHMvKiAke2xpYmRpcn0vcGtnY29uZmlnIFwKLSAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9LyogJHtkYXRhZGlyfS9hY2xvY2FsLyogIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByXzQuMTYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByXzQuMTYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzhlZjk5NAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHJfNC4xNi5iYgpAQCAtMCwwICsxLDE5MSBAQAorU1VNTUFSWSA9ICJOZXRzY2FwZSBQb3J0YWJsZSBSdW50aW1lIExpYnJhcnkiCitIT01FUEFHRSA9ICAiaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9wcm9qZWN0cy9uc3ByLyIKK0xJQ0VOU0UgPSAiR1BMLTIuMCB8IE1QTC0yLjAgfCBMR1BMLTIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2NvbmZpZ3VyZS5pbjtiZWdpbmxpbmU9MztlbmRsaW5lPTY7bWQ1PTkwYzJmZGVlMzhlNDVkNjMwMmFiY2ZlNDc1YzhiNWM1IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL01ha2VmaWxlLmluO2JlZ2lubGluZT00O2VuZGxpbmU9Mzg7bWQ1PWJlZGExZGJiOThhNTE1ZjU1N2QzZTU4ZWYwNmJjYTk5IgorU0VDVElPTiA9ICJsaWJzL25ldHdvcmsiCisKK1NSQ19VUkkgPSAiaHR0cDovL2Z0cC5tb3ppbGxhLm9yZy9wdWIvbnNwci9yZWxlYXNlcy92JHtQVn0vc3JjL25zcHItJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3JlbW92ZS1ycGF0aC1mcm9tLXRlc3RzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1idWlsZC1vbi14ODZfNjQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLXNyY2Rpci1mcm9tLWNvbmZpZ3VyZS1pbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLUFkZC1uaW9zMi1zdXBwb3J0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtaW5jbHVkZS1zdGRpbnQuaC1mb3ItU1NJWkVfTUFYLWFuZC1TSVpFX01BWC1kZWZpbml0aS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1kLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbnNwci5wYy5pbiBcCisiCisKK0NBQ0hFRF9DT05GSUdVUkVWQVJTX2FwcGVuZF9saWJjLW11c2wgPSAiIENGTEFHUz0nJHtDRkxBR1N9IC1EX1BSX1BPTExfQVZBSUxBQkxFIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1EX1BSX0hBVkVfT0ZGNjRfVCAtRF9QUl9JTkVUNiAtRF9QUl9IQVZFX0lORVRfTlRPUCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtRF9QUl9IQVZFX0dFVEhPU1RCWU5BTUUyIC1EX1BSX0hBVkVfR0VUQUREUklORk8gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLURfUFJfSU5FVDZfUFJPQkUgLUROT19ETE9QRU5fTlVMTCciCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vZnRwLm1vemlsbGEub3JnL3B1Yi9uc3ByL3JlbGVhc2VzLyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gInYoP1A8cHZlcj5cZCsoXC5cZCspKykvIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNDJmZDg5NjNhNGIzOTRmNjJkNDNiYTYwNGYwM2ZhYjciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWIzMTAyZDk3NjY1NTA0YWVlZTczMzYzYzExYTIxYzA2MmFkNjdhMjUyMjI0MjM2OGI3ZjAxOWY5NmE1M2NkMSIKKworQ1ZFX1BST0RVQ1QgPSAibmV0c2NhcGVfcG9ydGFibGVfcnVudGltZSIKKworUyA9ICIke1dPUktESVJ9L25zcHItJHtQVn0vbnNwciIKKworUkRFUEVORFNfJHtQTn0tZGV2ICs9ICJwZXJsIgorVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCisKK1RFU1RTID0gIiBcCisgICAgYWNjZXB0IFwKKyAgICBhY2NlcHRyZWFkIFwKKyAgICBhY2NlcHRyZWFkZW11IFwKKyAgICBhZmZpbml0eSBcCisgICAgYWxhcm0gXAorICAgIGFub25mbSBcCisgICAgYXRvbWljIFwKKyAgICBhdHRhY2ggXAorICAgIGJpZ2ZpbGUgXAorICAgIGNsZWFudXAgXAorICAgIGNsdHNydiAgXAorICAgIGNvbmN1ciBcCisgICAgY3ZhciBcCisgICAgY3ZhcjIgXAorICAgIGRsbHRlc3QgXAorICAgIGR0b2EgXAorICAgIGVycmNvZGVzIFwKKyAgICBleGl0IFwKKyAgICBmZGNhY2ggXAorICAgIGZpbGVpbyBcCisgICAgZm9yZWlnbiBcCisgICAgZm9ybWF0dG0gXAorICAgIGZzeW5jIFwKKyAgICBnZXRob3N0IFwKKyAgICBnZXRwcm90byBcCisgICAgaTJsIFwKKyAgICBpbml0Y2xrIFwKKyAgICBpbnJ2YWwgXAorICAgIGluc3RydW10IFwKKyAgICBpbnRyaW8gXAorICAgIGludHJ1cHQgXAorICAgIGlvX3RpbWVvdXQgXAorICAgIGlvY29udGhyIFwKKyAgICBqb2luIFwKKyAgICBqb2lua2sgXAorICAgIGpvaW5rdSBcCisgICAgam9pbnVrIFwKKyAgICBqb2ludXUgXAorICAgIGxheWVyIFwKKyAgICBsYXp5aW5pdCBcCisgICAgbGliZmlsZW5hbWUgXAorICAgIGxsdGVzdCBcCisgICAgbG9jayBcCisgICAgbG9ja2ZpbGUgXAorICAgIGxvZ2ZpbGUgXAorICAgIGxvZ2dlciBcCisgICAgbWFueV9jdiBcCisgICAgbXVsdGl3YWl0IFwKKyAgICBuYW1lc2htMSBcCisgICAgbmJsYXllciBcCisgICAgbm9uYmxvY2sgXAorICAgIG50aW90byBcCisgICAgbnRvaCBcCisgICAgb3BfMmxvbmcgXAorICAgIG9wX2V4Y2wgXAorICAgIG9wX2ZpbG5mIFwKKyAgICBvcF9maWxvayBcCisgICAgb3Bfbm9maWwgXAorICAgIHBhcmVudCBcCisgICAgcGFyc2V0bSBcCisgICAgcGVlayBcCisgICAgcGVyZiBcCisgICAgcGlwZXBpbmcgXAorICAgIHBpcGVwaW5nMiBcCisgICAgcGlwZXNlbGYgXAorICAgIHBvbGxfbm0gXAorICAgIHBvbGxfdG8gXAorICAgIHBvbGxhYmxlIFwKKyAgICBwcmZ0ZXN0IFwKKyAgICBwcmltYmxvayBcCisgICAgcHJvdmlkZXIgXAorICAgIHBycG9sbG1sIFwKKyAgICByYW5maWxlIFwKKyAgICByYW5kc2VlZCBcCisgICAgcmVpbml0IFwKKyAgICByd2xvY2t0ZXN0IFwKKyAgICBzZWxfc3BkIFwKKyAgICBzZWxjdF9lciBcCisgICAgc2VsY3Rfbm0gXAorICAgIHNlbGN0X3RvIFwKKyAgICBzZWxpbnRyIFwKKyAgICBzZW1hIFwKKyAgICBzZW1hZXJyIFwKKyAgICBzZW1hcGluZyBcCisgICAgc2VuZHpsZiBcCisgICAgc2VydmVyX3Rlc3QgXAorICAgIHNlcnZyX2trIFwKKyAgICBzZXJ2cl91ayBcCisgICAgc2VydnJfa3UgXAorICAgIHNlcnZyX3V1IFwKKyAgICBzaG9ydF90aHJlYWQgXAorICAgIHNpZ3BpcGUgXAorICAgIHNvY2tldCBcCisgICAgc29ja29wdCBcCisgICAgc29ja3BpbmcgXAorICAgIHNwcmludGYgXAorICAgIHN0YWNrIFwKKyAgICBzdGRpbyBcCisgICAgc3RyMmFkZHIgXAorICAgIHN0cm9kIFwKKyAgICBzd2l0Y2ggXAorICAgIHN5c3RlbSBcCisgICAgdGVzdGJpdCBcCisgICAgdGVzdGZpbGUgXAorICAgIHRocmVhZHMgXAorICAgIHRpbWVtYWMgXAorICAgIHRpbWV0ZXN0IFwKKyAgICB0cGQgXAorICAgIHVkcHNydiBcCisgICAgdmVyY2hlY2sgXAorICAgIHZlcnNpb24gXAorICAgIHdyaXRldiBcCisgICAgeG5vdGlmeSBcCisgICAgemVyb2xlbiIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0iCitQQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisJb2VfcnVubWFrZSBDUk9TU19DT01QSUxFPTEgQ0ZMQUdTPSItRFhQX1VOSVggJHtCVUlMRF9DRkxBR1N9IiBMREZMQUdTPSIiIENDPSIke0JVSUxEX0NDfSIgLUMgY29uZmlnIGV4cG9ydAorfQorCitkb19jb21waWxlX2FwcGVuZCgpIHsKKwlvZV9ydW5tYWtlIC1DIHByL3Rlc3RzCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLUQgJHtXT1JLRElSfS9uc3ByLnBjLmluICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL25zcHIucGMKKyAgICBzZWQgLWkgIFwKKyAgICAtZSAnczpOU1BSVkVSU0lPTjoke1BWfTpnJyBcCisgICAgLWUgJ3M6T0VQUkVGSVg6JHtwcmVmaXh9OmcnIFwKKyAgICAtZSAnczpPRUxJQkRJUjoke2xpYmRpcn06ZycgXAorICAgIC1lICdzOk9FSU5DRElSOiR7aW5jbHVkZWRpcn06ZycgXAorICAgIC1lICdzOk9FRVhFQ1BSRUZJWDoke2V4ZWNfcHJlZml4fTpnJyBcCisgICAgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNwci5wYworCisgICAgbWtkaXIgLXAgJHtEfSR7bGliZGlyfS9uc3ByL3Rlc3RzCisgICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vcHIvdGVzdHMvcnVudGVzdHMucGwgJHtEfSR7bGliZGlyfS9uc3ByL3Rlc3RzCisgICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vcHIvdGVzdHMvcnVudGVzdHMuc2ggJHtEfSR7bGliZGlyfS9uc3ByL3Rlc3RzCisgICAgY2QgJHtCfS9wci90ZXN0cworICAgIGluc3RhbGwgLW0gMDc1NSAke1RFU1RTfSAke0R9JHtsaWJkaXJ9L25zcHIvdGVzdHMKKworICAgICMgZGVsZXRlIGNvbXBpbGUtZXQucGwgYW5kIHBlcnIucHJvcGVydGllcyBmcm9tICR7YmluZGlyfSBiZWNhdXNlIHRoZXNlIGFyZQorICAgICMgb25seSB1c2VkIHRvIGdlbmVyYXRlIHByZXJyLmMgYW5kIHByZXJyLmggZmlsZXMgZnJvbSBwcmVyci5ldCBhdCBjb21waWxlCisgICAgIyB0aW1lCisgICAgcm0gJHtEfSR7YmluZGlyfS9jb21waWxlLWV0LnBsICR7RH0ke2JpbmRpcn0vcHJlcnIucHJvcGVydGllcworfQorCitGSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGliKi5zbyIKK0ZJTEVTXyR7UE59LWRldiA9ICIke2JpbmRpcn0vKiAke2xpYmRpcn0vbnNwci90ZXN0cy8qICR7bGliZGlyfS9wa2djb25maWcgXAorICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vKiAke2RhdGFkaXJ9L2FjbG9jYWwvKiAiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL0ZpeC1jb21waWxhdGlvbi1mb3ItWDMyLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvRml4LWNvbXBpbGF0aW9uLWZvci1YMzIucGF0Y2gKaW5kZXggZjdmMmMyMS4uODBiODY5MCAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvRml4LWNvbXBpbGF0aW9uLWZvci1YMzIucGF0Y2gKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvRml4LWNvbXBpbGF0aW9uLWZvci1YMzIucGF0Y2gKQEAgLTYsNiArNiw4IEBACiBYMzIgdXNlcyAzMi1iaXQgcG9pbnRlcnMsIG5vdCA2NC1iaXQuCiAKIFNpZ25lZC1vZmYtYnk6IENocmlzdG9waGVyIExhcnNvbiA8Y2hyaXNfbGFyc29uQG1lbnRvci5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZwogLS0tCiAgbnNzL2xpYi9mcmVlYmwvcG9seTEzMDUtZG9ubmEteDY0LXNzZTItaW5jcmVtZW50YWwtc291cmNlLmMgfCA0ICsrKysKICAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zc18zLjI4LjEuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zc18zLjI4LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlZDg2ZmMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3NfMy4yOC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjQ2ICswLDAgQEAKLVNVTU1BUlkgPSAiTW96aWxsYSdzIFNTTCBhbmQgVExTIGltcGxlbWVudGF0aW9uIgotREVTQ1JJUFRJT04gPSAiTmV0d29yayBTZWN1cml0eSBTZXJ2aWNlcyAoTlNTKSBpcyBhIHNldCBvZiBsaWJyYXJpZXMgXAotZGVzaWduZWQgdG8gc3VwcG9ydCBjcm9zcy1wbGF0Zm9ybSBkZXZlbG9wbWVudCBvZiBcCi1zZWN1cml0eS1lbmFibGVkIGNsaWVudCBhbmQgc2VydmVyIGFwcGxpY2F0aW9ucy4gXAotQXBwbGljYXRpb25zIGJ1aWx0IHdpdGggTlNTIGNhbiBzdXBwb3J0IFNTTCB2MiBhbmQgdjMsIFwKLVRMUywgUEtDUyA1LCBQS0NTIDcsIFBLQ1MgMTEsIFBLQ1MgMTIsIFMvTUlNRSwgWC41MDkgXAotdjMgY2VydGlmaWNhdGVzLCBhbmQgb3RoZXIgc2VjdXJpdHkgc3RhbmRhcmRzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubW96aWxsYS5vcmcvcHJvamVjdHMvc2VjdXJpdHkvcGtpL25zcy8iCi1TRUNUSU9OID0gImxpYnMiCi0KLUxJQ0VOU0UgPSAiTVBMLTIuMCB8IChNUEwtMi4wICYgR1BMLTIuMCspIHwgKE1QTC0yLjAgJiBMR1BMLTIuMSspIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9uc3MvQ09QWUlORzttZDU9M2IxZTg4ZTFiOWMwYjVhNGIyODgxZDQ2Y2NlMDZhMTggXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbnNzL2xpYi9mcmVlYmwvbXBpL2RvYy9MSUNFTlNFO21kNT00OTFmMTU4ZDA5ZDk0ODQ2NmFmY2U4NWQ2ZjFmZTE4ZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9uc3MvbGliL2ZyZWVibC9tcGkvZG9jL0xJQ0VOU0UtTVBMO21kNT01ZDQyNWM4ZjMxNTdkYmYyMTJkYjJlYzUzZDllNTEzMiIKLQotU1JDX1VSSSA9ICJcCi0gICAgaHR0cDovL2Z0cC5tb3ppbGxhLm9yZy9wdWIvbW96aWxsYS5vcmcvc2VjdXJpdHkvbnNzL3JlbGVhc2VzL05TU18zXzI4XzFfUlRNL3NyYy8ke0JQfS50YXIuZ3ogXAotICAgIGZpbGU6Ly8wMDAxLW5zcy1maXgtc3VwcG9ydC1jcm9zcy1jb21waWxpbmcucGF0Y2ggXAotICAgIGZpbGU6Ly9uc3Mtbm8tcnBhdGgtZm9yLWNyb3NzLWNvbXBpbGluZy5wYXRjaCBcCi0gICAgZmlsZTovL25zcy1maXgtaW5jb3JyZWN0LXNoZWJhbmctb2YtcGVybC5wYXRjaCBcCi0gICAgZmlsZTovL25zcy1maXgtbnNpbnN0YWxsLWJ1aWxkLnBhdGNoIFwKLSAgICBmaWxlOi8vZGlzYWJsZS1XdmFyYXJncy13aXRoLWNsYW5nLnBhdGNoIFwKLSAgICBmaWxlOi8vcHFnLmMtVUxMX2FkZGVuZC5wYXRjaCBcCi0gICAgZmlsZTovL0ZpeC1jb21waWxhdGlvbi1mb3ItWDMyLnBhdGNoIFwKLSAgICBmaWxlOi8vbnNzLnBjLmluIFwKLSAgICBmaWxlOi8vc2lnbmxpYnMuc2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gImU5OGQ0ODQzNWNlZTU3OTJmOTdlZjdmYzM1YTYwMmMzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU4Y2MwYzA1YzBlZDk1MjNlNmQ4MjBiZWE3NGY1MTM1MzhmNDhjODdhYWM5MzE4NzZlM2QzNzc1ZGUxYTgyYWQiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL01vemlsbGEvUHJvamVjdHMvTlNTL05TU19SZWxlYXNlcyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIk5TU18oP1A8cHZlcj4uKylfcmVsZWFzZV9ub3RlcyIKLQotaW5oZXJpdCBzaXRlaW5mbwotCi1ERVBFTkRTID0gInNxbGl0ZTMgbnNwciB6bGliIG5zcy1uYXRpdmUiCi1ERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJzcWxpdGUzLW5hdGl2ZSBuc3ByLW5hdGl2ZSB6bGliLW5hdGl2ZSIKLVJERVBFTkRTXyR7UE59LXNtaW1lID0gInBlcmwiCi0KLVREID0gIiR7U30vdGVudGF0aXZlLWRpc3QiCi1URFMgPSAiJHtTfS90ZW50YXRpdmUtZGlzdC1zdGFnaW5nIgotCi1UQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmRfbGliYy1tdXNsICgpIHsKLSAgICBzZWQgLWkgLWUgJy8tREhBVkVfU1lTX0NERUZTX0gvZCcgJHtTfS9uc3MvbGliL2RibS9jb25maWcvY29uZmlnLm1rCi19Ci0KLWRvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0gICAgZXhwb3J0IE5TUFJfSU5DTFVERV9ESVI9JHtTVEFHSU5HX0lOQ0RJUl9OQVRJVkV9Ci0gICAgZXhwb3J0IE5TUFJfTElCX0RJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0KLSAgICBleHBvcnQgTlNTX0VOQUJMRV9XRVJST1I9MAotfQotCi1kb19jb21waWxlX3ByZXBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgewotICAgIGV4cG9ydCBMREZMQUdTPSIiCi19Ci0KLWRvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0gICAgIyBOZWVkIHRvIHNldCBSUEFUSCBzbyB0aGF0IGNocnBhdGggd2lsbCBkbyBpdHMgam9iIGNvcnJlY3RseQotICAgIFJQQVRIPSItV2wsLXJwYXRoLWxpbmssJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9IC1XbCwtcnBhdGgtbGluaywke1NUQUdJTkdfQkFTRV9MSUJESVJfTkFUSVZFfSAtV2wsLXJwYXRoLCR7U1RBR0lOR19MSUJESVJfTkFUSVZFfSAtV2wsLXJwYXRoLCR7U1RBR0lOR19CQVNFX0xJQkRJUl9OQVRJVkV9IgotfQotCi1kb19jb21waWxlKCkgewotICAgIGV4cG9ydCBDUk9TU19DT01QSUxFPTEKLSAgICBleHBvcnQgTkFUSVZFX0NDPSJnY2MiCi0gICAgZXhwb3J0IE5BVElWRV9GTEFHUz0iJHtIT1NUX0NGTEFHU30iCi0gICAgZXhwb3J0IEJVSUxEX09QVD0xCi0KLSAgICBleHBvcnQgRlJFRUJMX05PX0RFUEVORD0xCi0gICAgZXhwb3J0IEZSRUVCTF9MT1dIQVNIPTEKLQotICAgIGV4cG9ydCBMSUJESVI9JHtsaWJkaXJ9Ci0gICAgZXhwb3J0IE1PWklMTEFfQ0xJRU5UPTEKLSAgICBleHBvcnQgTlNfVVNFX0dDQz0xCi0gICAgZXhwb3J0IE5TU19VU0VfU1lTVEVNX1NRTElURT0xCi0gICAgZXhwb3J0IE5TU19FTkFCTEVfRUNDPTEKLQotICAgIGV4cG9ydCBPU19SRUxFQVNFPTMuNAotICAgIGV4cG9ydCBPU19UQVJHRVQ9TGludXgKLSAgICBleHBvcnQgT1NfQVJDSD1MaW51eAotCi0gICAgaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGMiIF07IHRoZW4KLSAgICAgICAgT1NfVEVTVD1wcGMKLSAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjNjQiIF07IHRoZW4KLSAgICAgICAgT1NfVEVTVD1wcGM2NAotICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHMiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwc2VsIiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHM2NCIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzNjRlbCIgXTsgdGhlbgotICAgICAgICBPU19URVNUPW1pcHMKLSAgICBlbHNlCi0gICAgICAgIE9TX1RFU1Q9IiR7VEFSR0VUX0FSQ0h9IgotICAgIGZpCi0KLSAgICBpZiBbICIke1NJVEVJTkZPX0JJVFN9IiA9ICI2NCIgXTsgdGhlbgotICAgICAgICBleHBvcnQgVVNFXzY0PTEKLSAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJ4ODZfNjQiIC1hICIke1NJVEVJTkZPX0JJVFN9IiA9ICIzMiIgXTsgdGhlbgotICAgICAgICBleHBvcnQgVVNFX1gzMj0xCi0gICAgZmkKLQotICAgIGV4cG9ydCBOU1NfRElTQUJMRV9HVEVTVFM9MQotCi0gICAgIyBXZSBjYW4gbW9kaWZ5IENDIGluIHRoZSBlbnZpcm9ubWVudCwgYnV0IGlmIHdlIHNldCBpdCB2aWEgYW4KLSAgICAjIGFyZ3VtZW50IHRvIG1ha2UsIG5zaW5zdGFsbCwgYSBob3N0IHByb2dyYW0sIHdpbGwgYWxzbyBidWlsZCB3aXRoIGl0IQotICAgICMKLSAgICBleHBvcnQgQ0M9IiR7Q0N9IC1nIgotICAgIG1ha2UgLUMgLi9uc3MgQ0NDPSIke0NYWH0gLWciIFwKLSAgICAgICAgT1NfVEVTVD0ke09TX1RFU1R9IFwKLSAgICAgICAgUlBBVEg9IiR7UlBBVEh9IgotfQotZG9fY29tcGlsZVt2YXJkZXBzZXhjbHVkZV0gKz0gIlNJVEVJTkZPX0JJVFMiCi0KLQotZG9faW5zdGFsbF9wcmVwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKLSAgICBleHBvcnQgTERGTEFHUz0iIgotfQotCi1kb19pbnN0YWxsKCkgewotICAgIGV4cG9ydCBDUk9TU19DT01QSUxFPTEKLSAgICBleHBvcnQgTkFUSVZFX0NDPSJnY2MiCi0gICAgZXhwb3J0IEJVSUxEX09QVD0xCi0KLSAgICBleHBvcnQgRlJFRUJMX05PX0RFUEVORD0xCi0KLSAgICBleHBvcnQgTElCRElSPSR7bGliZGlyfQotICAgIGV4cG9ydCBNT1pJTExBX0NMSUVOVD0xCi0gICAgZXhwb3J0IE5TX1VTRV9HQ0M9MQotICAgIGV4cG9ydCBOU1NfVVNFX1NZU1RFTV9TUUxJVEU9MQotICAgIGV4cG9ydCBOU1NfRU5BQkxFX0VDQz0xCi0KLSAgICBleHBvcnQgT1NfUkVMRUFTRT0zLjQKLSAgICBleHBvcnQgT1NfVEFSR0VUPUxpbnV4Ci0gICAgZXhwb3J0IE9TX0FSQ0g9TGludXgKLQotICAgIGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjIiBdOyB0aGVuCi0gICAgICAgIE9TX1RFU1Q9cHBjCi0gICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAicG93ZXJwYzY0IiBdOyB0aGVuCi0gICAgICAgIE9TX1RFU1Q9cHBjNjQKLSAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzIiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHNlbCIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzNjQiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwczY0ZWwiIF07IHRoZW4KLSAgICAgICAgT1NfVEVTVD1taXBzCi0gICAgZWxzZQotICAgICAgICBPU19URVNUPSIke1RBUkdFVF9BUkNIfSIKLSAgICBmaQotICAgIGlmIFsgIiR7U0lURUlORk9fQklUU30iID0gIjY0IiBdOyB0aGVuCi0gICAgICAgIGV4cG9ydCBVU0VfNjQ9MQotICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIng4Nl82NCIgLWEgIiR7U0lURUlORk9fQklUU30iID0gIjMyIiBdOyB0aGVuCi0gICAgICAgIGV4cG9ydCBVU0VfWDMyPTEKLSAgICBmaQotCi0gICAgZXhwb3J0IE5TU19ESVNBQkxFX0dURVNUUz0xCi0KLSAgICBtYWtlIC1DIC4vbnNzIFwKLSAgICAgICAgQ0NDPSIke0NYWH0iIFwKLSAgICAgICAgT1NfVEVTVD0ke09TX1RFU1R9IFwKLSAgICAgICAgU09VUkNFX0xJQl9ESVI9IiR7VER9LyR7bGliZGlyfSIgXAotICAgICAgICBTT1VSQ0VfQklOX0RJUj0iJHtURH0vJHtiaW5kaXJ9IiBcCi0gICAgICAgIGluc3RhbGwKLQotICAgIGluc3RhbGwgLWQgJHtEfS8ke2xpYmRpcn0vCi0gICAgZm9yIGZpbGUgaW4gJHtTfS9kaXN0LyouT0JKL2xpYi8qLnNvOyBkbwotICAgICAgICBlY2hvICJJbnN0YWxsaW5nIGBiYXNlbmFtZSAkZmlsZWAuLi4iCi0gICAgICAgIGNwICRmaWxlICAke0R9LyR7bGliZGlyfS8KLSAgICBkb25lCi0KLSAgICBmb3Igc2hhcmVkX2xpYiBpbiAke1REfS8ke2xpYmRpcn0vKi5zby4qOyBkbwotICAgICAgICBpZiBbIC1mICRzaGFyZWRfbGliIF07IHRoZW4KLSAgICAgICAgICAgIGNwICRzaGFyZWRfbGliICR7RH0vJHtsaWJkaXJ9Ci0gICAgICAgICAgICBsbiAtc2YgJChiYXNlbmFtZSAkc2hhcmVkX2xpYikgJHtEfS8ke2xpYmRpcn0vJChiYXNlbmFtZSAkc2hhcmVkX2xpYiAuMW9lKQotICAgICAgICBmaQotICAgIGRvbmUKLSAgICBmb3Igc2hhcmVkX2xpYiBpbiAke1REfS8ke2xpYmRpcn0vKi5zbzsgZG8KLSAgICAgICAgaWYgWyAtZiAkc2hhcmVkX2xpYiAtYSAhIC1lICR7RH0vJHtsaWJkaXJ9LyRzaGFyZWRfbGliIF07IHRoZW4KLSAgICAgICAgICAgIGNwICRzaGFyZWRfbGliICR7RH0vJHtsaWJkaXJ9Ci0gICAgICAgIGZpCi0gICAgZG9uZQotCi0gICAgaW5zdGFsbCAtZCAke0R9LyR7aW5jbHVkZWRpcn0vbnNzMwotICAgIGluc3RhbGwgLW0gNjQ0IC10ICR7RH0vJHtpbmNsdWRlZGlyfS9uc3MzIGRpc3QvcHVibGljL25zcy8qCi0KLSAgICBpbnN0YWxsIC1kICR7RH0vJHtiaW5kaXJ9Ci0gICAgZm9yIGJpbmFyeSBpbiAke1REfS8ke2JpbmRpcn0vKjsgZG8KLSAgICAgICAgaW5zdGFsbCAtbSA3NTUgLXQgJHtEfS8ke2JpbmRpcn0gJGJpbmFyeQotICAgIGRvbmUKLX0KLWRvX2luc3RhbGxbdmFyZGVwc2V4Y2x1ZGVdICs9ICJTSVRFSU5GT19CSVRTIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAjIENyZWF0ZSBlbXB0eSAuY2hrIGZpbGVzIGZvciB0aGUgTlNTIGxpYnJhcmllcyBhdCBidWlsZCB0aW1lLiBUaGV5IGNvdWxkCi0gICAgIyBiZSByZWdlbmVyYXRlZCBhdCB0YXJnZXQncyBib290IHRpbWUuCi0gICAgZm9yIGZpbGUgaW4gbGlic29mdG9rbjMuY2hrIGxpYmZyZWVibDMuY2hrIGxpYm5zc2RibTMuY2hrOyBkbwotICAgICAgICB0b3VjaCAke0R9LyR7bGliZGlyfS8kZmlsZQotICAgICAgICBjaG1vZCA3NTUgJHtEfS8ke2xpYmRpcn0vJGZpbGUKLSAgICBkb25lCi0gICAgaW5zdGFsbCAtRCAtbSA3NTUgJHtXT1JLRElSfS9zaWdubGlicy5zaCAke0R9LyR7YmluZGlyfS9zaWdubGlicy5zaAotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy8KLSAgICBzZWQgJ3MvJU5TU19WRVJTSU9OJS8ke1BWfS8nICR7V09SS0RJUn0vbnNzLnBjLmluIHwgc2VkICdzLyVOU1BSX1ZFUlNJT04lLzQuOS4yLycgPiAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3MucGMKLSAgICBzZWQgLWkgczpPRVBSRUZJWDoke3ByZWZpeH06ZyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3MucGMKLSAgICBzZWQgLWkgczpPRUVYRUNQUkVGSVg6JHtleGVjX3ByZWZpeH06ZyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3MucGMKLSAgICBzZWQgLWkgczpPRUxJQkRJUjoke2xpYmRpcn06ZyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3MucGMKLSAgICBzZWQgLWkgczpPRUlOQ0RJUjoke2luY2x1ZGVkaXJ9L25zczM6ZyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3MucGMKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgewotICAgICMgQ3JlYXRlIGEgYmxhbmsgY2VydGlmaWNhdGUKLSAgICBta2RpciAtcCAke0R9JHtzeXNjb25mZGlyfS9wa2kvbnNzZGIvCi0gICAgdG91Y2ggLi9lbXB0eV9wYXNzd29yZAotICAgIGNlcnR1dGlsIC1OIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3BraS9uc3NkYi8gLWYgLi9lbXB0eV9wYXNzd29yZAotICAgIGNobW9kIDY0NCAke0R9JHtzeXNjb25mZGlyfS9wa2kvbnNzZGIvKi5kYgotICAgIHJtIC4vZW1wdHlfcGFzc3dvcmQKLX0KLQotUEFDS0FHRV9XUklURV9ERVBTICs9ICJuc3MtbmF0aXZlIgotcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKLSAgICBpZiBbIC1uICIkRCIgXTsgdGhlbgotICAgICAgICBmb3IgSSBpbiAkRCR7bGliZGlyfS9saWIqLmNoazsgZG8KLSAgICAgICAgICAgIEROPWBkaXJuYW1lICRJYAotICAgICAgICAgICAgQk49YGJhc2VuYW1lICRJIC5jaGtgCi0gICAgICAgICAgICBGTj0kRE4vJEJOLnNvCi0gICAgICAgICAgICBzaGxpYnNpZ24gLWkgJEZOCi0gICAgICAgICAgICBpZiBbICQ/IC1uZSAwIF07IHRoZW4KLSAgICAgICAgICAgICAgICBleGl0IDEKLSAgICAgICAgICAgIGZpCi0gICAgICAgIGRvbmUKLSAgICBlbHNlCi0gICAgICAgIHNpZ25saWJzLnNoCi0gICAgZmkKLX0KLQotUEFDS0FHRVMgPSsgIiR7UE59LXNtaW1lIgotRklMRVNfJHtQTn0tc21pbWUgPSAiXAotICAgICR7YmluZGlyfS9zbWltZSBcCi0iCi1GSUxFU18ke1BOfSA9ICJcCi0gICAgJHtzeXNjb25mZGlyfSBcCi0gICAgJHtiaW5kaXJ9IFwKLSAgICAke2xpYmRpcn0vbGliKi5jaGsgXAotICAgICR7bGliZGlyfS9saWIqLnNvIFwKLSAgICAiCi1GSUxFU18ke1BOfS1kZXYgPSAiXAotICAgICR7bGliZGlyfS9uc3MgXAotICAgICR7bGliZGlyfS9wa2djb25maWcvKiBcCi0gICAgJHtpbmNsdWRlZGlyfS8qIFwKLSAgICAiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3NfMy4zMS4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3NfMy4zMS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiYjliZGIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zc18zLjMxLjEuYmIKQEAgLTAsMCArMSwyNTMgQEAKK1NVTU1BUlkgPSAiTW96aWxsYSdzIFNTTCBhbmQgVExTIGltcGxlbWVudGF0aW9uIgorREVTQ1JJUFRJT04gPSAiTmV0d29yayBTZWN1cml0eSBTZXJ2aWNlcyAoTlNTKSBpcyBhIHNldCBvZiBsaWJyYXJpZXMgXAorZGVzaWduZWQgdG8gc3VwcG9ydCBjcm9zcy1wbGF0Zm9ybSBkZXZlbG9wbWVudCBvZiBcCitzZWN1cml0eS1lbmFibGVkIGNsaWVudCBhbmQgc2VydmVyIGFwcGxpY2F0aW9ucy4gXAorQXBwbGljYXRpb25zIGJ1aWx0IHdpdGggTlNTIGNhbiBzdXBwb3J0IFNTTCB2MiBhbmQgdjMsIFwKK1RMUywgUEtDUyA1LCBQS0NTIDcsIFBLQ1MgMTEsIFBLQ1MgMTIsIFMvTUlNRSwgWC41MDkgXAordjMgY2VydGlmaWNhdGVzLCBhbmQgb3RoZXIgc2VjdXJpdHkgc3RhbmRhcmRzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubW96aWxsYS5vcmcvcHJvamVjdHMvc2VjdXJpdHkvcGtpL25zcy8iCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiTVBMLTIuMCB8IChNUEwtMi4wICYgR1BMLTIuMCspIHwgKE1QTC0yLjAgJiBMR1BMLTIuMSspIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9uc3MvQ09QWUlORzttZDU9M2IxZTg4ZTFiOWMwYjVhNGIyODgxZDQ2Y2NlMDZhMTggXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbnNzL2xpYi9mcmVlYmwvbXBpL2RvYy9MSUNFTlNFO21kNT00OTFmMTU4ZDA5ZDk0ODQ2NmFmY2U4NWQ2ZjFmZTE4ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9uc3MvbGliL2ZyZWVibC9tcGkvZG9jL0xJQ0VOU0UtTVBMO21kNT01ZDQyNWM4ZjMxNTdkYmYyMTJkYjJlYzUzZDllNTEzMiIKKworVkVSU0lPTl9ESVIgPSAiJHtAZC5nZXRWYXIoJ0JQJykudXBwZXIoKS5yZXBsYWNlKCctJywgJ18nKS5yZXBsYWNlKCcuJywgJ18nKSArICdfUlRNJ30iCisKK1NSQ19VUkkgPSAiaHR0cDovL2Z0cC5tb3ppbGxhLm9yZy9wdWIvbW96aWxsYS5vcmcvc2VjdXJpdHkvbnNzL3JlbGVhc2VzLyR7VkVSU0lPTl9ESVJ9L3NyYy8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vbnNzLnBjLmluIFwKKyAgICAgICAgICAgZmlsZTovL3NpZ25saWJzLnNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbnNzLWZpeC1zdXBwb3J0LWNyb3NzLWNvbXBpbGluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9uc3Mtbm8tcnBhdGgtZm9yLWNyb3NzLWNvbXBpbGluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9uc3MtZml4LWluY29ycmVjdC1zaGViYW5nLW9mLXBlcmwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbnNzLWZpeC1uc2luc3RhbGwtYnVpbGQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1XdmFyYXJncy13aXRoLWNsYW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3BxZy5jLVVMTF9hZGRlbmQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vRml4LWNvbXBpbGF0aW9uLWZvci1YMzIucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlYmI0NGYxMzk0MjUwZDJjZjZlYzNjMmUzZDcxZmEyMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5MzM0MzkyMTRkYzAzZWU2MGU4NmQxNDE5YzE5ZTE1Njg5OThiMDc3NmRkZTk4N2Y0MWZhNzBjZWQ2Y2QwOGRjIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9Nb3ppbGxhL1Byb2plY3RzL05TUy9OU1NfUmVsZWFzZXMiCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJOU1NfKD9QPHB2ZXI+LispX3JlbGVhc2Vfbm90ZXMiCisKK2luaGVyaXQgc2l0ZWluZm8KKworREVQRU5EUyA9ICJzcWxpdGUzIG5zcHIgemxpYiBuc3MtbmF0aXZlIgorREVQRU5EU19jbGFzcy1uYXRpdmUgPSAic3FsaXRlMy1uYXRpdmUgbnNwci1uYXRpdmUgemxpYi1uYXRpdmUiCitSREVQRU5EU18ke1BOfS1zbWltZSA9ICJwZXJsIgorCitURCA9ICIke1N9L3RlbnRhdGl2ZS1kaXN0IgorVERTID0gIiR7U30vdGVudGF0aXZlLWRpc3Qtc3RhZ2luZyIKKworVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kX2xpYmMtbXVzbCAoKSB7CisgICAgc2VkIC1pIC1lICcvLURIQVZFX1NZU19DREVGU19IL2QnICR7U30vbnNzL2xpYi9kYm0vY29uZmlnL2NvbmZpZy5taworfQorCitkb19jb21waWxlX3ByZXBlbmRfY2xhc3MtbmF0aXZlKCkgeworICAgIGV4cG9ydCBOU1BSX0lOQ0xVREVfRElSPSR7U1RBR0lOR19JTkNESVJfTkFUSVZFfQorICAgIGV4cG9ydCBOU1BSX0xJQl9ESVI9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9CisgICAgZXhwb3J0IE5TU19FTkFCTEVfV0VSUk9SPTAKK30KKworZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKKyAgICBleHBvcnQgTERGTEFHUz0iIgorfQorCitkb19jb21waWxlX3ByZXBlbmRfY2xhc3MtbmF0aXZlKCkgeworICAgICMgTmVlZCB0byBzZXQgUlBBVEggc28gdGhhdCBjaHJwYXRoIHdpbGwgZG8gaXRzIGpvYiBjb3JyZWN0bHkKKyAgICBSUEFUSD0iLVdsLC1ycGF0aC1saW5rLCR7U1RBR0lOR19MSUJESVJfTkFUSVZFfSAtV2wsLXJwYXRoLWxpbmssJHtTVEFHSU5HX0JBU0VfTElCRElSX05BVElWRX0gLVdsLC1ycGF0aCwke1NUQUdJTkdfTElCRElSX05BVElWRX0gLVdsLC1ycGF0aCwke1NUQUdJTkdfQkFTRV9MSUJESVJfTkFUSVZFfSIKK30KKworZG9fY29tcGlsZSgpIHsKKyAgICBleHBvcnQgQ1JPU1NfQ09NUElMRT0xCisgICAgZXhwb3J0IE5BVElWRV9DQz0iJHtCVUlMRF9DQ30iCisgICAgZXhwb3J0IE5BVElWRV9GTEFHUz0iJHtCVUlMRF9DRkxBR1N9IgorICAgIGV4cG9ydCBCVUlMRF9PUFQ9MQorCisgICAgZXhwb3J0IEZSRUVCTF9OT19ERVBFTkQ9MQorICAgIGV4cG9ydCBGUkVFQkxfTE9XSEFTSD0xCisKKyAgICBleHBvcnQgTElCRElSPSR7bGliZGlyfQorICAgIGV4cG9ydCBNT1pJTExBX0NMSUVOVD0xCisgICAgZXhwb3J0IE5TX1VTRV9HQ0M9MQorICAgIGV4cG9ydCBOU1NfVVNFX1NZU1RFTV9TUUxJVEU9MQorICAgIGV4cG9ydCBOU1NfRU5BQkxFX0VDQz0xCisKKyAgICBleHBvcnQgT1NfUkVMRUFTRT0zLjQKKyAgICBleHBvcnQgT1NfVEFSR0VUPUxpbnV4CisgICAgZXhwb3J0IE9TX0FSQ0g9TGludXgKKworICAgIGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjIiBdOyB0aGVuCisgICAgICAgIE9TX1RFU1Q9cHBjCisgICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAicG93ZXJwYzY0IiBdOyB0aGVuCisgICAgICAgIE9TX1RFU1Q9cHBjNjQKKyAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzIiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHNlbCIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzNjQiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwczY0ZWwiIF07IHRoZW4KKyAgICAgICAgT1NfVEVTVD1taXBzCisgICAgZWxzZQorICAgICAgICBPU19URVNUPSIke1RBUkdFVF9BUkNIfSIKKyAgICBmaQorCisgICAgaWYgWyAiJHtTSVRFSU5GT19CSVRTfSIgPSAiNjQiIF07IHRoZW4KKyAgICAgICAgZXhwb3J0IFVTRV82ND0xCisgICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAieDg2XzY0IiAtYSAiJHtTSVRFSU5GT19CSVRTfSIgPSAiMzIiIF07IHRoZW4KKyAgICAgICAgZXhwb3J0IFVTRV9YMzI9MQorICAgIGZpCisKKyAgICBleHBvcnQgTlNTX0RJU0FCTEVfR1RFU1RTPTEKKworICAgICMgV2UgY2FuIG1vZGlmeSBDQyBpbiB0aGUgZW52aXJvbm1lbnQsIGJ1dCBpZiB3ZSBzZXQgaXQgdmlhIGFuCisgICAgIyBhcmd1bWVudCB0byBtYWtlLCBuc2luc3RhbGwsIGEgaG9zdCBwcm9ncmFtLCB3aWxsIGFsc28gYnVpbGQgd2l0aCBpdCEKKyAgICAjCisgICAgIyBuc3MgcHJldHR5IG11Y2ggZG9lcyBpdHMgb3duIHRoaW5nIHdpdGggQ0ZMQUdTLCBzbyB3ZSBwdXQgdGhlbSBpbnRvIENDLgorICAgICMgT3B0aW1pemF0aW9uIHdpbGwgZ2V0IGNsb2JiZXJlZCwgYnV0IG1vc3Qgb2YgdGhlIHN0dWZmIHdpbGwgc3Vydml2ZS4KKyAgICAjIFRoZSBtb3RpdmF0aW9uIGZvciB0aGlzIGlzIHRvIHBvaW50IHRvIHRoZSBjb3JyZWN0IHBsYWNlIGZvciBkZWJ1ZworICAgICMgc291cmNlIGZpbGVzIGFuZCBDRkxBR1MgZG9lcyB0aGF0LiAgTm90aGluZyB1c2VzIENDQy4KKyAgICAjCisgICAgZXhwb3J0IENDPSIke0NDfSAke0NGTEFHU30iCisgICAgbWFrZSAtQyAuL25zcyBDQ0M9IiR7Q1hYfSAtZyIgXAorICAgICAgICBPU19URVNUPSR7T1NfVEVTVH0gXAorICAgICAgICBSUEFUSD0iJHtSUEFUSH0iCit9Citkb19jb21waWxlW3ZhcmRlcHNleGNsdWRlXSArPSAiU0lURUlORk9fQklUUyIKKworCitkb19pbnN0YWxsX3ByZXBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgeworICAgIGV4cG9ydCBMREZMQUdTPSIiCit9CisKK2RvX2luc3RhbGwoKSB7CisgICAgZXhwb3J0IENST1NTX0NPTVBJTEU9MQorICAgIGV4cG9ydCBOQVRJVkVfQ0M9IiR7QlVJTERfQ0N9IgorICAgIGV4cG9ydCBCVUlMRF9PUFQ9MQorCisgICAgZXhwb3J0IEZSRUVCTF9OT19ERVBFTkQ9MQorCisgICAgZXhwb3J0IExJQkRJUj0ke2xpYmRpcn0KKyAgICBleHBvcnQgTU9aSUxMQV9DTElFTlQ9MQorICAgIGV4cG9ydCBOU19VU0VfR0NDPTEKKyAgICBleHBvcnQgTlNTX1VTRV9TWVNURU1fU1FMSVRFPTEKKyAgICBleHBvcnQgTlNTX0VOQUJMRV9FQ0M9MQorCisgICAgZXhwb3J0IE9TX1JFTEVBU0U9My40CisgICAgZXhwb3J0IE9TX1RBUkdFVD1MaW51eAorICAgIGV4cG9ydCBPU19BUkNIPUxpbnV4CisKKyAgICBpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAicG93ZXJwYyIgXTsgdGhlbgorICAgICAgICBPU19URVNUPXBwYworICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGM2NCIgXTsgdGhlbgorICAgICAgICBPU19URVNUPXBwYzY0CisgICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAibWlwcyIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzZWwiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwczY0IiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHM2NGVsIiBdOyB0aGVuCisgICAgICAgIE9TX1RFU1Q9bWlwcworICAgIGVsc2UKKyAgICAgICAgT1NfVEVTVD0iJHtUQVJHRVRfQVJDSH0iCisgICAgZmkKKyAgICBpZiBbICIke1NJVEVJTkZPX0JJVFN9IiA9ICI2NCIgXTsgdGhlbgorICAgICAgICBleHBvcnQgVVNFXzY0PTEKKyAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJ4ODZfNjQiIC1hICIke1NJVEVJTkZPX0JJVFN9IiA9ICIzMiIgXTsgdGhlbgorICAgICAgICBleHBvcnQgVVNFX1gzMj0xCisgICAgZmkKKworICAgIGV4cG9ydCBOU1NfRElTQUJMRV9HVEVTVFM9MQorCisgICAgbWFrZSAtQyAuL25zcyBcCisgICAgICAgIENDQz0iJHtDWFh9IiBcCisgICAgICAgIE9TX1RFU1Q9JHtPU19URVNUfSBcCisgICAgICAgIFNPVVJDRV9MSUJfRElSPSIke1REfS8ke2xpYmRpcn0iIFwKKyAgICAgICAgU09VUkNFX0JJTl9ESVI9IiR7VER9LyR7YmluZGlyfSIgXAorICAgICAgICBpbnN0YWxsCisKKyAgICBpbnN0YWxsIC1kICR7RH0vJHtsaWJkaXJ9LworICAgIGZvciBmaWxlIGluICR7U30vZGlzdC8qLk9CSi9saWIvKi5zbzsgZG8KKyAgICAgICAgZWNobyAiSW5zdGFsbGluZyBgYmFzZW5hbWUgJGZpbGVgLi4uIgorICAgICAgICBjcCAkZmlsZSAgJHtEfS8ke2xpYmRpcn0vCisgICAgZG9uZQorCisgICAgZm9yIHNoYXJlZF9saWIgaW4gJHtURH0vJHtsaWJkaXJ9Lyouc28uKjsgZG8KKyAgICAgICAgaWYgWyAtZiAkc2hhcmVkX2xpYiBdOyB0aGVuCisgICAgICAgICAgICBjcCAkc2hhcmVkX2xpYiAke0R9LyR7bGliZGlyfQorICAgICAgICAgICAgbG4gLXNmICQoYmFzZW5hbWUgJHNoYXJlZF9saWIpICR7RH0vJHtsaWJkaXJ9LyQoYmFzZW5hbWUgJHNoYXJlZF9saWIgLjFvZSkKKyAgICAgICAgZmkKKyAgICBkb25lCisgICAgZm9yIHNoYXJlZF9saWIgaW4gJHtURH0vJHtsaWJkaXJ9Lyouc287IGRvCisgICAgICAgIGlmIFsgLWYgJHNoYXJlZF9saWIgLWEgISAtZSAke0R9LyR7bGliZGlyfS8kc2hhcmVkX2xpYiBdOyB0aGVuCisgICAgICAgICAgICBjcCAkc2hhcmVkX2xpYiAke0R9LyR7bGliZGlyfQorICAgICAgICBmaQorICAgIGRvbmUKKworICAgIGluc3RhbGwgLWQgJHtEfS8ke2luY2x1ZGVkaXJ9L25zczMKKyAgICBpbnN0YWxsIC1tIDY0NCAtdCAke0R9LyR7aW5jbHVkZWRpcn0vbnNzMyBkaXN0L3B1YmxpYy9uc3MvKgorCisgICAgaW5zdGFsbCAtZCAke0R9LyR7YmluZGlyfQorICAgIGZvciBiaW5hcnkgaW4gJHtURH0vJHtiaW5kaXJ9Lyo7IGRvCisgICAgICAgIGluc3RhbGwgLW0gNzU1IC10ICR7RH0vJHtiaW5kaXJ9ICRiaW5hcnkKKyAgICBkb25lCit9Citkb19pbnN0YWxsW3ZhcmRlcHNleGNsdWRlXSArPSAiU0lURUlORk9fQklUUyIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgIyBDcmVhdGUgZW1wdHkgLmNoayBmaWxlcyBmb3IgdGhlIE5TUyBsaWJyYXJpZXMgYXQgYnVpbGQgdGltZS4gVGhleSBjb3VsZAorICAgICMgYmUgcmVnZW5lcmF0ZWQgYXQgdGFyZ2V0J3MgYm9vdCB0aW1lLgorICAgIGZvciBmaWxlIGluIGxpYnNvZnRva24zLmNoayBsaWJmcmVlYmwzLmNoayBsaWJuc3NkYm0zLmNoazsgZG8KKyAgICAgICAgdG91Y2ggJHtEfS8ke2xpYmRpcn0vJGZpbGUKKyAgICAgICAgY2htb2QgNzU1ICR7RH0vJHtsaWJkaXJ9LyRmaWxlCisgICAgZG9uZQorICAgIGluc3RhbGwgLUQgLW0gNzU1ICR7V09SS0RJUn0vc2lnbmxpYnMuc2ggJHtEfS8ke2JpbmRpcn0vc2lnbmxpYnMuc2gKKworICAgIGluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9wa2djb25maWcvCisgICAgc2VkICdzLyVOU1NfVkVSU0lPTiUvJHtQVn0vJyAke1dPUktESVJ9L25zcy5wYy5pbiB8IHNlZCAncy8lTlNQUl9WRVJTSU9OJS80LjkuMi8nID4gJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCisgICAgc2VkIC1pIHM6T0VQUkVGSVg6JHtwcmVmaXh9OmcgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCisgICAgc2VkIC1pIHM6T0VFWEVDUFJFRklYOiR7ZXhlY19wcmVmaXh9OmcgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCisgICAgc2VkIC1pIHM6T0VMSUJESVI6JHtsaWJkaXJ9OmcgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCisgICAgc2VkIC1pIHM6T0VJTkNESVI6JHtpbmNsdWRlZGlyfS9uc3MzOmcgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKKyAgICAjIENyZWF0ZSBhIGJsYW5rIGNlcnRpZmljYXRlCisgICAgbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vcGtpL25zc2RiLworICAgIHRvdWNoIC4vZW1wdHlfcGFzc3dvcmQKKyAgICBjZXJ0dXRpbCAtTiAtZCAke0R9JHtzeXNjb25mZGlyfS9wa2kvbnNzZGIvIC1mIC4vZW1wdHlfcGFzc3dvcmQKKyAgICBjaG1vZCA2NDQgJHtEfSR7c3lzY29uZmRpcn0vcGtpL25zc2RiLyouZGIKKyAgICBybSAuL2VtcHR5X3Bhc3N3b3JkCit9CisKK1BBQ0tBR0VfV1JJVEVfREVQUyArPSAibnNzLW5hdGl2ZSIKK3BrZ19wb3N0aW5zdF8ke1BOfSAoKSB7CisgICAgaWYgWyAtbiAiJEQiIF07IHRoZW4KKyAgICAgICAgZm9yIEkgaW4gJEQke2xpYmRpcn0vbGliKi5jaGs7IGRvCisgICAgICAgICAgICBETj1gZGlybmFtZSAkSWAKKyAgICAgICAgICAgIEJOPWBiYXNlbmFtZSAkSSAuY2hrYAorICAgICAgICAgICAgRk49JEROLyRCTi5zbworICAgICAgICAgICAgc2hsaWJzaWduIC1pICRGTgorICAgICAgICAgICAgaWYgWyAkPyAtbmUgMCBdOyB0aGVuCisgICAgICAgICAgICAgICAgZXhpdCAxCisgICAgICAgICAgICBmaQorICAgICAgICBkb25lCisgICAgZWxzZQorICAgICAgICBzaWdubGlicy5zaAorICAgIGZpCit9CisKK1BBQ0tBR0VTID0rICIke1BOfS1zbWltZSIKK0ZJTEVTXyR7UE59LXNtaW1lID0gIlwKKyAgICAke2JpbmRpcn0vc21pbWUgXAorIgorRklMRVNfJHtQTn0gPSAiXAorICAgICR7c3lzY29uZmRpcn0gXAorICAgICR7YmluZGlyfSBcCisgICAgJHtsaWJkaXJ9L2xpYiouY2hrIFwKKyAgICAke2xpYmRpcn0vbGliKi5zbyBcCisgICAgIgorRklMRVNfJHtQTn0tZGV2ID0gIlwKKyAgICAke2xpYmRpcn0vbnNzIFwKKyAgICAke2xpYmRpcn0vcGtnY29uZmlnLyogXAorICAgICR7aW5jbHVkZWRpcn0vKiBcCisgICAgIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9waW5lbnRyeS9waW5lbnRyeS0xLjAuMC9ncGctZXJyb3JfcGtjb25mLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3BpbmVudHJ5L3BpbmVudHJ5LTEuMC4wL2dwZy1lcnJvcl9wa2NvbmYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDMxZWRiMAotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9waW5lbnRyeS9waW5lbnRyeS0xLjAuMC9ncGctZXJyb3JfcGtjb25mLnBhdGNoCkBAIC0wLDAgKzEsMTAwIEBACitDb252ZXJ0IHRvIHBrZy1jb25maWcgc3VwcG9ydCB0byBtYXRjaCBjaGFuZ2VzIGRvbmUgdG8gCit0aGUgZ3BnLWVycm9yIHJlY2lwZSBmb3IgZ3BnLWVycm9yLnBjICBnZW5lcmF0aW9uLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KKworSW5kZXg6IHBpbmVudHJ5LTEuMC4wL200L2dwZy1lcnJvci5tNAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHBpbmVudHJ5LTEuMC4wLm9yaWcvbTQvZ3BnLWVycm9yLm00CisrKysgcGluZW50cnktMS4wLjAvbTQvZ3BnLWVycm9yLm00CitAQCAtMjUsNzQgKzI1LDEyIEBAIGRubCBjb25maWcgc2NyaXB0IGRvZXMgbm90IG1hdGNoIHRoZSBob3MKKyBkbmwgaXMgYWRkZWQgdG8gdGhlIGdwZ19jb25maWdfc2NyaXB0X3dhcm4gdmFyaWFibGUuCisgZG5sCisgQUNfREVGVU4oW0FNX1BBVEhfR1BHX0VSUk9SXSwKKy1bIEFDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSkKKy0gIGdwZ19lcnJvcl9jb25maWdfcHJlZml4PSIiCistICBkbmwgLS13aXRoLWxpYmdwZy1lcnJvci1wcmVmaXg9UEZYIGlzIHRoZSBwcmVmZXJyZWQgbmFtZSBmb3IgdGhpcyBvcHRpb24sCistICBkbmwgc2luY2UgdGhhdCBpcyBjb25zaXN0ZW50IHdpdGggaG93IG91ciB0aHJlZSBzaWJsaW5ncyB1c2UgdGhlIGRpcmVjdG9yeS8KKy0gIGRubCBwYWNrYWdlIG5hbWUgaW4gLS13aXRoLSRkaXJfbmFtZS1wcmVmaXg9UEZYLgorLSAgQUNfQVJHX1dJVEgobGliZ3BnLWVycm9yLXByZWZpeCwKKy0gICAgICAgICAgICAgIEFDX0hFTFBfU1RSSU5HKFstLXdpdGgtbGliZ3BnLWVycm9yLXByZWZpeD1QRlhdLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ByZWZpeCB3aGVyZSBHUEcgRXJyb3IgaXMgaW5zdGFsbGVkIChvcHRpb25hbCldKSwKKy0gICAgICAgICAgICAgIFtncGdfZXJyb3JfY29uZmlnX3ByZWZpeD0iJHdpdGh2YWwiXSkKKy0KKy0gIGRubCBBY2NlcHQgLS13aXRoLWdwZy1lcnJvci1wcmVmaXggYW5kIG1ha2UgaXQgd29yayB0aGUgc2FtZSBhcworLSAgZG5sIC0td2l0aC1saWJncGctZXJyb3ItcHJlZml4IGFib3ZlLCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksCistICBkbmwgYnV0IGRvIG5vdCBkb2N1bWVudCB0aGlzIG9sZCwgaW5jb25zaXN0ZW50bHktbmFtZWQgb3B0aW9uLgorLSAgQUNfQVJHX1dJVEgoZ3BnLWVycm9yLXByZWZpeCwsCistICAgICAgICAgICAgICBbZ3BnX2Vycm9yX2NvbmZpZ19wcmVmaXg9IiR3aXRodmFsIl0pCistCistICBpZiB0ZXN0IHgiJHtHUEdfRVJST1JfQ09ORklHfSIgPSB4IDsgdGhlbgorLSAgICAgaWYgdGVzdCB4IiR7Z3BnX2Vycm9yX2NvbmZpZ19wcmVmaXh9IiAhPSB4IDsgdGhlbgorLSAgICAgICAgR1BHX0VSUk9SX0NPTkZJRz0iJHtncGdfZXJyb3JfY29uZmlnX3ByZWZpeH0vYmluL2dwZy1lcnJvci1jb25maWciCistICAgICBlbHNlCistICAgICAgIGNhc2UgIiR7U1lTUk9PVH0iIGluCistICAgICAgICAgLyopCistICAgICAgICAgICBpZiB0ZXN0IC14ICIke1NZU1JPT1R9L2Jpbi9ncGctZXJyb3ItY29uZmlnIiA7IHRoZW4KKy0gICAgICAgICAgICAgR1BHX0VSUk9SX0NPTkZJRz0iJHtTWVNST09UfS9iaW4vZ3BnLWVycm9yLWNvbmZpZyIKKy0gICAgICAgICAgIGZpCistICAgICAgICAgICA7OworLSAgICAgICAgICcnKQorLSAgICAgICAgICAgOzsKKy0gICAgICAgICAgKikKKy0gICAgICAgICAgIEFDX01TR19XQVJOKFtJZ25vcmluZyBcJFNZU1JPT1QgYXMgaXQgaXMgbm90IGFuIGFic29sdXRlIHBhdGguXSkKKy0gICAgICAgICAgIDs7CistICAgICAgIGVzYWMKKy0gICAgIGZpCistICBmaQorLQorLSAgQUNfUEFUSF9QUk9HKEdQR19FUlJPUl9DT05GSUcsIGdwZy1lcnJvci1jb25maWcsIG5vKQorK1sKKyAgIG1pbl9ncGdfZXJyb3JfdmVyc2lvbj1pZmVsc2UoWyQxXSwgLDAuMCwkMSkKKy0gIEFDX01TR19DSEVDS0lORyhmb3IgR1BHIEVycm9yIC0gdmVyc2lvbiA+PSAkbWluX2dwZ19lcnJvcl92ZXJzaW9uKQorLSAgb2s9bm8KKy0gIGlmIHRlc3QgIiRHUEdfRVJST1JfQ09ORklHIiAhPSAibm8iIFwKKy0gICAgICYmIHRlc3QgLWYgIiRHUEdfRVJST1JfQ09ORklHIiA7IHRoZW4KKy0gICAgcmVxX21ham9yPWBlY2hvICRtaW5fZ3BnX2Vycm9yX3ZlcnNpb24gfCBcCistICAgICAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpL1wxLydgCistICAgIHJlcV9taW5vcj1gZWNobyAkbWluX2dwZ19lcnJvcl92ZXJzaW9uIHwgXAorLSAgICAgICAgICAgICAgIHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKS9cMi8nYAorLSAgICBncGdfZXJyb3JfY29uZmlnX3ZlcnNpb249YCRHUEdfRVJST1JfQ09ORklHICRncGdfZXJyb3JfY29uZmlnX2FyZ3MgLS12ZXJzaW9uYAorLSAgICBtYWpvcj1gZWNobyAkZ3BnX2Vycm9yX2NvbmZpZ192ZXJzaW9uIHwgXAorLSAgICAgICAgICAgICAgIHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKS4qL1wxLydgCistICAgIG1pbm9yPWBlY2hvICRncGdfZXJyb3JfY29uZmlnX3ZlcnNpb24gfCBcCistICAgICAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpLiovXDIvJ2AKKy0gICAgaWYgdGVzdCAiJG1ham9yIiAtZ3QgIiRyZXFfbWFqb3IiOyB0aGVuCistICAgICAgICBvaz15ZXMKKy0gICAgZWxzZQorLSAgICAgICAgaWYgdGVzdCAiJG1ham9yIiAtZXEgIiRyZXFfbWFqb3IiOyB0aGVuCistICAgICAgICAgICAgaWYgdGVzdCAiJG1pbm9yIiAtZ2UgIiRyZXFfbWlub3IiOyB0aGVuCistICAgICAgICAgICAgICAgb2s9eWVzCistICAgICAgICAgICAgZmkKKy0gICAgICAgIGZpCistICAgIGZpCistICBmaQorKyAgUEtHX0NIRUNLX01PRFVMRVMoR1BHX0VSUk9SLCBbZ3BnLWVycm9yID49ICRtaW5fZ3BnX2Vycm9yX3ZlcnNpb24gZ3BnLWVycm9yXSwgW29rPXllc10sIFtvaz1ub10pCisgICBpZiB0ZXN0ICRvayA9IHllczsgdGhlbgorLSAgICBHUEdfRVJST1JfQ0ZMQUdTPWAkR1BHX0VSUk9SX0NPTkZJRyAkZ3BnX2Vycm9yX2NvbmZpZ19hcmdzIC0tY2ZsYWdzYAorLSAgICBHUEdfRVJST1JfTElCUz1gJEdQR19FUlJPUl9DT05GSUcgJGdwZ19lcnJvcl9jb25maWdfYXJncyAtLWxpYnNgCistICAgIEdQR19FUlJPUl9NVF9DRkxBR1M9YCRHUEdfRVJST1JfQ09ORklHICRncGdfZXJyb3JfY29uZmlnX2FyZ3MgLS1tdCAtLWNmbGFncyAyPi9kZXYvbnVsbGAKKy0gICAgR1BHX0VSUk9SX01UX0xJQlM9YCRHUEdfRVJST1JfQ09ORklHICRncGdfZXJyb3JfY29uZmlnX2FyZ3MgLS1tdCAtLWxpYnMgMj4vZGV2L251bGxgCistICAgIEFDX01TR19SRVNVTFQoW3llcyAoJGdwZ19lcnJvcl9jb25maWdfdmVyc2lvbildKQorICAgICBpZmVsc2UoWyQyXSwgLCA6LCBbJDJdKQorLSAgICBncGdfZXJyb3JfY29uZmlnX2hvc3Q9YCRHUEdfRVJST1JfQ09ORklHICRncGdfZXJyb3JfY29uZmlnX2FyZ3MgLS1ob3N0IDI+L2Rldi9udWxsIHx8IGVjaG8gbm9uZWAKKysgICAgZ3BnX2Vycm9yX2NvbmZpZ19ob3N0PWAkUEtHX0NPTkZJRyAtLWhvc3QgZ3BnLWVycm9yIDI+L2Rldi9udWxsIHx8IGVjaG8gbm9uZWAKKyAgICAgaWYgdGVzdCB4IiRncGdfZXJyb3JfY29uZmlnX2hvc3QiICE9IHhub25lIDsgdGhlbgorICAgICAgIGlmIHRlc3QgeCIkZ3BnX2Vycm9yX2NvbmZpZ19ob3N0IiAhPSB4IiRob3N0IiA7IHRoZW4KKyAgIEFDX01TR19XQVJOKFtbCitAQCAtMTA3LDEwICs0NSw2IEBAIEFDX0RFRlVOKFtBTV9QQVRIX0dQR19FUlJPUl0sCisgICAgICAgZmkKKyAgICAgZmkKKyAgIGVsc2UKKy0gICAgR1BHX0VSUk9SX0NGTEFHUz0iIgorLSAgICBHUEdfRVJST1JfTElCUz0iIgorLSAgICBHUEdfRVJST1JfTVRfQ0ZMQUdTPSIiCistICAgIEdQR19FUlJPUl9NVF9MSUJTPSIiCisgICAgIEFDX01TR19SRVNVTFQobm8pCisgICAgIGlmZWxzZShbJDNdLCAsIDosIFskM10pCisgICBmaQpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3BpbmVudHJ5L3BpbmVudHJ5LTEuMC4wL2xpYmFzc3Vhbl9wa2djb25mLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3BpbmVudHJ5L3BpbmVudHJ5LTEuMC4wL2xpYmFzc3Vhbl9wa2djb25mLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExZDU2NGYKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcGluZW50cnkvcGluZW50cnktMS4wLjAvbGliYXNzdWFuX3BrZ2NvbmYucGF0Y2gKQEAgLTAsMCArMSwxNTMgQEAKK0NvbnZlcnQgdG8gcGtnLWNvbmZpZyBzdXBwb3J0IHRvIG1hdGNoIGNoYW5nZXMgZG9uZSB0bwordGhlIGxpYmFzc3VhbiByZWNpcGUgZm9yIGxpYmFzc3Vhbi5wYyBnZW5lcmF0aW9uLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KKworSW5kZXg6IHBpbmVudHJ5LTEuMC4wL200L2xpYmFzc3Vhbi5tNAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHBpbmVudHJ5LTEuMC4wLm9yaWcvbTQvbGliYXNzdWFuLm00CisrKysgcGluZW50cnktMS4wLjAvbTQvbGliYXNzdWFuLm00CitAQCAtMTMsMzQgKzEzLDggQEAgZG5sCisgZG5sIENvbW1vbiBjb2RlIHVzZWQgZm9yIGxpYmFzc3VhbiBkZXRlY3Rpb24gW2ludGVybmFsXQorIGRubCBSZXR1cm5zIG9rIHNldCB0byB5ZXMgb3Igbm8uCisgZG5sCistQUNfREVGVU4oW19BTV9QQVRIX0xJQkFTU1VBTl9DT01NT05dLAorLVsgQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKQorLSAgQUNfQVJHX1dJVEgobGliYXNzdWFuLXByZWZpeCwKKy0gICAgICAgICAgICAgIEFDX0hFTFBfU1RSSU5HKFstLXdpdGgtbGliYXNzdWFuLXByZWZpeD1QRlhdLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ByZWZpeCB3aGVyZSBMSUJBU1NVQU4gaXMgaW5zdGFsbGVkIChvcHRpb25hbCldKSwKKy0gICAgIGxpYmFzc3Vhbl9jb25maWdfcHJlZml4PSIkd2l0aHZhbCIsIGxpYmFzc3Vhbl9jb25maWdfcHJlZml4PSIiKQorLSAgaWYgdGVzdCB4JGxpYmFzc3Vhbl9jb25maWdfcHJlZml4ICE9IHggOyB0aGVuCistICAgIGxpYmFzc3Vhbl9jb25maWdfYXJncz0iJGxpYmFzc3Vhbl9jb25maWdfYXJncyAtLXByZWZpeD0kbGliYXNzdWFuX2NvbmZpZ19wcmVmaXgiCistICAgIGlmIHRlc3QgeCR7TElCQVNTVUFOX0NPTkZJRytzZXR9ICE9IHhzZXQgOyB0aGVuCistICAgICAgTElCQVNTVUFOX0NPTkZJRz0kbGliYXNzdWFuX2NvbmZpZ19wcmVmaXgvYmluL2xpYmFzc3Vhbi1jb25maWcKKy0gICAgZmkKKy0gIGVsc2UKKy0gICAgY2FzZSAiJHtTWVNST09UfSIgaW4KKy0gICAgICAgLyopCistICAgICAgICAgaWYgdGVzdCAteCAiJHtTWVNST09UfS9iaW4vbGliYXNzdWFuLWNvbmZpZyIgOyB0aGVuCistICAgICAgICAgICBMSUJBU1NVQU5fQ09ORklHPSIke1NZU1JPT1R9L2Jpbi9saWJhc3N1YW4tY29uZmlnIgorLSAgICAgICAgIGZpCistICAgICAgICAgOzsKKy0gICAgICAgJycpCistICAgICAgICAgOzsKKy0gICAgICAgICopCistICAgICAgICAgQUNfTVNHX1dBUk4oW0lnbm9yaW5nIFwkU1lTUk9PVCBhcyBpdCBpcyBub3QgYW4gYWJzb2x1dGUgcGF0aC5dKQorLSAgICAgICAgIDs7CistICAgICBlc2FjCistICBmaQorLQorLSAgQUNfUEFUSF9UT09MKExJQkFTU1VBTl9DT05GSUcsIGxpYmFzc3Vhbi1jb25maWcsIG5vKQorLQorK0FDX0RFRlVOKFtBTV9QQVRIX0xJQkFTU1VBTl9DT01NT05dLAorK1sKKyAgIHRtcD1pZmVsc2UoWyQxXSwgLDE6MC45LjIsJDEpCisgICBpZiBlY2hvICIkdG1wIiB8IGdyZXAgJzonID4vZGV2L251bGwgMj4vZGV2L251bGwgOyB0aGVuCisgICAgIHJlcV9saWJhc3N1YW5fYXBpPWBlY2hvICIkdG1wIiAgICAgfCBzZWQgJ3MvXCguKlwpOlwoLipcKS9cMS8nYAorQEAgLTUwLDUxICsyNCwxMSBAQCBBQ19ERUZVTihbX0FNX1BBVEhfTElCQVNTVUFOX0NPTU1PTl0sCisgICAgIG1pbl9saWJhc3N1YW5fdmVyc2lvbj0iJHRtcCIKKyAgIGZpCisgCistICBBQ19NU0dfQ0hFQ0tJTkcoZm9yIExJQkFTU1VBTiAtIHZlcnNpb24gPj0gJG1pbl9saWJhc3N1YW5fdmVyc2lvbikKKy0gIG9rPW5vCistICBpZiB0ZXN0ICIkTElCQVNTVUFOX0NPTkZJRyIgIT0gIm5vIiBcCistICAgICAmJiB0ZXN0IC1mICIkTElCQVNTVUFOX0NPTkZJRyIgOyB0aGVuCistICAgIHJlcV9tYWpvcj1gZWNobyAkbWluX2xpYmFzc3Vhbl92ZXJzaW9uIHwgXAorLSAgICAgICAgICAgICAgIHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKVwuXChbWzAtOV1dKlwpL1wxLydgCistICAgIHJlcV9taW5vcj1gZWNobyAkbWluX2xpYmFzc3Vhbl92ZXJzaW9uIHwgXAorLSAgICAgICAgICAgICAgIHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKVwuXChbWzAtOV1dKlwpL1wyLydgCistICAgIHJlcV9taWNybz1gZWNobyAkbWluX2xpYmFzc3Vhbl92ZXJzaW9uIHwgXAorLSAgICAgICAgICAgICAgIHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKVwuXChbWzAtOV1dKlwpL1wzLydgCistCistICAgIGxpYmFzc3Vhbl9jb25maWdfdmVyc2lvbj1gJExJQkFTU1VBTl9DT05GSUcgLS12ZXJzaW9uYAorLSAgICBtYWpvcj1gZWNobyAkbGliYXNzdWFuX2NvbmZpZ192ZXJzaW9uIHwgXAorLSAgICAgICAgICAgICAgIHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKVwuXChbWzAtOV1dKlwpLiovXDEvJ2AKKy0gICAgbWlub3I9YGVjaG8gJGxpYmFzc3Vhbl9jb25maWdfdmVyc2lvbiB8IFwKKy0gICAgICAgICAgICAgICBzZWQgJ3MvXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKS4qL1wyLydgCistICAgIG1pY3JvPWBlY2hvICRsaWJhc3N1YW5fY29uZmlnX3ZlcnNpb24gfCBcCistICAgICAgICAgICAgICAgc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpXC5cKFtbMC05XV0qXCkuKi9cMy8nYAorLQorLSAgICBpZiB0ZXN0ICIkbWFqb3IiIC1ndCAiJHJlcV9tYWpvciI7IHRoZW4KKy0gICAgICAgIG9rPXllcworLSAgICBlbHNlCistICAgICAgICBpZiB0ZXN0ICIkbWFqb3IiIC1lcSAiJHJlcV9tYWpvciI7IHRoZW4KKy0gICAgICAgICAgICBpZiB0ZXN0ICIkbWlub3IiIC1ndCAiJHJlcV9taW5vciI7IHRoZW4KKy0gICAgICAgICAgICAgICBvaz15ZXMKKy0gICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgICAgaWYgdGVzdCAiJG1pbm9yIiAtZXEgIiRyZXFfbWlub3IiOyB0aGVuCistICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIiRtaWNybyIgLWdlICIkcmVxX21pY3JvIjsgdGhlbgorLSAgICAgICAgICAgICAgICAgICAgIG9rPXllcworLSAgICAgICAgICAgICAgICAgICBmaQorLSAgICAgICAgICAgICAgIGZpCistICAgICAgICAgICAgZmkKKy0gICAgICAgIGZpCistICAgIGZpCistICBmaQorLQorLSAgaWYgdGVzdCAkb2sgPSB5ZXM7IHRoZW4KKy0gICAgQUNfTVNHX1JFU1VMVChbeWVzICgkbGliYXNzdWFuX2NvbmZpZ192ZXJzaW9uKV0pCistICBlbHNlCistICAgIEFDX01TR19SRVNVTFQobm8pCistICBmaQorKyAgUEtHX0NIRUNLX01PRFVMRVMoTElCQVNTVUFOX0NPTU1PTiwgW2xpYmFzc3VhbiA+PSAkbWluX2xpYmFzc3Vhbl92ZXJzaW9uIGxpYmFzc3Vhbl0sIFtvaz15ZXNdLCBbb2s9bm9dKQorIAorICAgaWYgdGVzdCAkb2sgPSB5ZXM7IHRoZW4KKyAgICAgaWYgdGVzdCAiJHJlcV9saWJhc3N1YW5fYXBpIiAtZ3QgMCA7IHRoZW4KKy0gICAgICB0bXA9YCRMSUJBU1NVQU5fQ09ORklHIC0tYXBpLXZlcnNpb24gMj4vZGV2L251bGwgfHwgZWNobyAwYAorKyAgICAgIHRtcD1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1hcGlfdmVyc2lvbiBsaWJhc3N1YW4gMj4vZGV2L251bGwgfHwgZWNobyAwYAorICAgICAgIGlmIHRlc3QgIiR0bXAiIC1ndCAwIDsgdGhlbgorICAgICAgICAgQUNfTVNHX0NIRUNLSU5HKFtMSUJBU1NVQU4gQVBJIHZlcnNpb25dKQorICAgICAgICAgaWYgdGVzdCAiJHJlcV9saWJhc3N1YW5fYXBpIiAtZXEgIiR0bXAiIDsgdGhlbgorQEAgLTEwOSw3ICs0Myw3IEBAIEFDX0RFRlVOKFtfQU1fUEFUSF9MSUJBU1NVQU5fQ09NTU9OXSwKKyAKKyAgIGlmIHRlc3QgJG9rID0geWVzOyB0aGVuCisgICAgIGlmIHRlc3QgeCIkaG9zdCIgIT0geCA7IHRoZW4KKy0gICAgICBsaWJhc3N1YW5fY29uZmlnX2hvc3Q9YCRMSUJBU1NVQU5fQ09ORklHIC0taG9zdCAyPi9kZXYvbnVsbCB8fCBlY2hvIG5vbmVgCisrICAgICAgbGliYXNzdWFuX2NvbmZpZ19ob3N0PWAkUEtHX0NPTkZJRyAtLWhvc3QgbGliYXNzdWFuIDI+L2Rldi9udWxsIHx8IGVjaG8gMGAKKyAgICAgICBpZiB0ZXN0IHgiJGxpYmFzc3Vhbl9jb25maWdfaG9zdCIgIT0geG5vbmUgOyB0aGVuCisgICAgICAgICBpZiB0ZXN0IHgiJGxpYmFzc3Vhbl9jb25maWdfaG9zdCIgIT0geCIkaG9zdCIgOyB0aGVuCisgICBBQ19NU0dfV0FSTihbWworQEAgLTEzMiw3ICs2Niw3IEBAIGRubCBUZXN0IHdoZXRoZXIgbGliYXNzdWFuIGhhcyBhdCBsZWFzdAorIGRubCB1c2VkIHRvIHRlc3QgZm9yIGZlYXR1cmVzIG9ubHkgYXZhaWxhYmxlIGluIG5ld2VyIHZlcnNpb25zLgorIGRubAorIEFDX0RFRlVOKFtBTV9DSEVDS19MSUJBU1NVQU5dLAorLVsgX0FNX1BBVEhfTElCQVNTVUFOX0NPTU1PTigkMSkKKytbIEFNX1BBVEhfTElCQVNTVUFOX0NPTU1PTigkMSkKKyAgIGlmIHRlc3QgJG9rID0geWVzOyB0aGVuCisgICAgIGlmZWxzZShbJDJdLCAsIDosIFskMl0pCisgICBlbHNlCitAQCAtMTQ4LDE2ICs4MiwxMCBAQCBkbmwgICAgICAgICAgICAgICAgICAgW0FDVElPTi1JRi1GT1VORCBbCisgZG5sIFRlc3QgZm9yIGxpYmFzc3VhbiBhbmQgZGVmaW5lIExJQkFTU1VBTl9DRkxBR1MgYW5kIExJQkFTU1VBTl9MSUJTCisgZG5sCisgQUNfREVGVU4oW0FNX1BBVEhfTElCQVNTVUFOXSwKKy1bIF9BTV9QQVRIX0xJQkFTU1VBTl9DT01NT04oJDEpCisrWyBBTV9QQVRIX0xJQkFTU1VBTl9DT01NT04oJDEpCisgICBpZiB0ZXN0ICRvayA9IHllczsgdGhlbgorLSAgICBMSUJBU1NVQU5fQ0ZMQUdTPWAkTElCQVNTVUFOX0NPTkZJRyAkbGliYXNzdWFuX2NvbmZpZ19hcmdzIC0tY2ZsYWdzYAorLSAgICBMSUJBU1NVQU5fTElCUz1gJExJQkFTU1VBTl9DT05GSUcgJGxpYmFzc3Vhbl9jb25maWdfYXJncyAtLWxpYnNgCisgICAgIGlmZWxzZShbJDJdLCAsIDosIFskMl0pCisgICBlbHNlCistICAgIExJQkFTU1VBTl9DRkxBR1M9IiIKKy0gICAgTElCQVNTVUFOX0xJQlM9IiIKKyAgICAgaWZlbHNlKFskM10sICwgOiwgWyQzXSkKKyAgIGZpCistICBBQ19TVUJTVChMSUJBU1NVQU5fQ0ZMQUdTKQorLSAgQUNfU1VCU1QoTElCQVNTVUFOX0xJQlMpCisgXSkKK0luZGV4OiBwaW5lbnRyeS0xLjAuMC9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBwaW5lbnRyeS0xLjAuMC5vcmlnL2NvbmZpZ3VyZS5hYworKysrIHBpbmVudHJ5LTEuMC4wL2NvbmZpZ3VyZS5hYworQEAgLTI2Niw4ICsyNjYsOCBAQCBpZiB0ZXN0ICIkaGF2ZV9saWJhc3N1YW4iID0gInllcyI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICBbdmVyc2lvbiBvZiB0aGUgbGliYXNzdWFuIGxpYnJhcnldKQorIGZpCisgCistQ09NTU9OX0NGTEFHUz0iJExJQkFTU1VBTl9DRkxBR1MgJENPTU1PTl9DRkxBR1MiCistQ09NTU9OX0xJQlM9IiRMSUJBU1NVQU5fTElCUyAkQ09NTU9OX0xJQlMiCisrQ09NTU9OX0NGTEFHUz0iJExJQkFTU1VBTl9DT01NT05fQ0ZMQUdTICRDT01NT05fQ0ZMQUdTIgorK0NPTU1PTl9MSUJTPSIkTElCQVNTVUFOX0NPTU1PTl9MSUJTICRDT01NT05fTElCUyIKKyAKKyAKKyBkbmwgQ2hlY2tzIGZvciBsaWJzZWNtZW0uCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcGluZW50cnkvcGluZW50cnlfMC45LjIuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcGluZW50cnkvcGluZW50cnlfMC45LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzMTVhOTkuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3BpbmVudHJ5L3BpbmVudHJ5XzAuOS4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotU1VNTUFSWSA9ICJDb2xsZWN0aW9uIG9mIHNpbXBsZSBQSU4gb3IgcGFzc3BocmFzZSBlbnRyeSBkaWFsb2dzIgotREVTQ1JJUFRJT04gPSAiXAotCVBpbmVudHJ5IGlzIGEgY29sbGVjdGlvbiBvZiBzaW1wbGUgUElOIG9yIHBhc3NwaHJhc2UgZW50cnkgZGlhbG9ncyB3aGljaCBcCi0JdXRpbGl6ZSB0aGUgQXNzdWFuIHByb3RvY29sIGFzIGRlc2NyaWJlZCBieSB0aGUgYWVneXB0ZW4gcHJvamVjdDsgc2VlIFwKLQlodHRwOi8vd3d3LmdudXBnLm9yZy9hZWd5cHRlbi8gZm9yIGRldGFpbHMuIgotCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudXBnLm9yZy9yZWxhdGVkX3NvZnR3YXJlL3BpbmVudHJ5L2luZGV4LmVuLmh0bWwiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Y2JiZDc5NGUyYTBhMjg5YjlkZmNjOWY1MTNkMTk5NmUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLURFUEVORFMgPSAiZ2V0dGV4dC1uYXRpdmUiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dudXBnLm9yZy9kb3dubG9hZC9pbmRleC5odG1sIgotU1JDX1VSSSA9ICIke0dOVVBHX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuYnoyIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZjUxZDQ1NGY5MjExMTFiNTE1NmEyMjkxY2JmNzAyNzgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmQ4YmMxNTkyY2ViMjJiYjQ5MmIwN2NiMjliMWIxNDBiYjg4MmM4NTllNjUwM2I5NzQyNTRjMGE0YjQxMzRkMSIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1ycGF0aCBcCi0JCSAgICAgICAgLS1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcgXAotICAgICAgICAgICAgICAgIgotCi1QQUNLQUdFQ09ORklHID8/PSAibmN1cnNlcyBsaWJjYXAiCi0KLVBBQ0tBR0VDT05GSUdbbmN1cnNlc10gPSAiLS1lbmFibGUtbmN1cnNlcyAgLS13aXRoLW5jdXJzZXMtaW5jbHVkZS1kaXI9JHtTVEFHSU5HX0lOQ0RJUn0sIC0tZGlzYWJsZS1uY3Vyc2VzLCBuY3Vyc2VzIgotUEFDS0FHRUNPTkZJR1tsaWJjYXBdID0gIi0td2l0aC1saWJjYXAsIC0td2l0aG91dC1saWJjYXAsIGxpYmNhcCIKLVBBQ0tBR0VDT05GSUdbcXQ0XSA9ICItLWVuYWJsZS1waW5lbnRyeS1xdDQsIC0tZGlzYWJsZS1waW5lbnRyeS1xdDQsIHF0NC14MTEiCi1QQUNLQUdFQ09ORklHW3F0NF9jbGlwYm9hcmRdID0gIi0tZW5hYmxlLXBpbmVudHJ5LXF0NC1jbGlwYm9hcmQgLS1lbmFibGUtcGluZW50cnktcXQ0LCAtLWRpc2FibGUtcGluZW50cnktcXQ0LWNsaXBib2FyZCwgcXQ0LXgxMSIKLVBBQ0tBR0VDT05GSUdbZ3RrMl0gPSAiLS1lbmFibGUtcGluZW50cnktZ3RrMiwgLS1kaXNhYmxlLXBpbmVudHJ5LWd0azIsIGd0aysgZ2xpYi0yLjAiCi0KLSNUbyB1c2UgbGlic2VjcmV0LCBhZGQgbWV0YS1nbm9tZQotUEFDS0FHRUNPTkZJR1tzZWNyZXRdID0gIi0tZW5hYmxlLWxpYnNlY3JldCwgLS1kaXNhYmxlLWxpYnNlY3JldCwgbGlic2VjcmV0IgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3BpbmVudHJ5L3BpbmVudHJ5XzEuMC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3BpbmVudHJ5L3BpbmVudHJ5XzEuMC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxOWFjZDMKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcGluZW50cnkvcGluZW50cnlfMS4wLjAuYmIKQEAgLTAsMCArMSwzNiBAQAorU1VNTUFSWSA9ICJDb2xsZWN0aW9uIG9mIHNpbXBsZSBQSU4gb3IgcGFzc3BocmFzZSBlbnRyeSBkaWFsb2dzIgorREVTQ1JJUFRJT04gPSAiXAorCVBpbmVudHJ5IGlzIGEgY29sbGVjdGlvbiBvZiBzaW1wbGUgUElOIG9yIHBhc3NwaHJhc2UgZW50cnkgZGlhbG9ncyB3aGljaCBcCisJdXRpbGl6ZSB0aGUgQXNzdWFuIHByb3RvY29sIGFzIGRlc2NyaWJlZCBieSB0aGUgYWVneXB0ZW4gcHJvamVjdDsgc2VlIFwKKwlodHRwOi8vd3d3LmdudXBnLm9yZy9hZWd5cHRlbi8gZm9yIGRldGFpbHMuIgorCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudXBnLm9yZy9yZWxhdGVkX3NvZnR3YXJlL3BpbmVudHJ5L2luZGV4LmVuLmh0bWwiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Y2JiZDc5NGUyYTBhMjg5YjlkZmNjOWY1MTNkMTk5NmUiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitERVBFTkRTID0gImdldHRleHQtbmF0aXZlIGxpYmFzc3VhbiBsaWJncGctZXJyb3IiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dudXBnLm9yZy9kb3dubG9hZC9pbmRleC5odG1sIgorU1JDX1VSSSA9ICIke0dOVVBHX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL2xpYmFzc3Vhbl9wa2djb25mLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2dwZy1lcnJvcl9wa2NvbmYucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNGEzZmFkOGIzMWY5YjRjNTUyNmM4ODM3NDk1MDE1ZGMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTY3MmMyZWRjMWZlYjAzNjA3NWIxODdjMDc3Mzc4N2IyYWZkMDU0NGY1NTAyNWM2NDVhNzFiNGMyZjc5Mjc1YSIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1ycGF0aCAtLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZyBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXBpbmVudHJ5LXF0NSAgXAorIgorCitQQUNLQUdFQ09ORklHID8/PSAibmN1cnNlcyBsaWJjYXAiCisKK1BBQ0tBR0VDT05GSUdbbmN1cnNlc10gPSAiLS1lbmFibGUtbmN1cnNlcyAgLS13aXRoLW5jdXJzZXMtaW5jbHVkZS1kaXI9JHtTVEFHSU5HX0lOQ0RJUn0sIC0tZGlzYWJsZS1uY3Vyc2VzLCBuY3Vyc2VzIgorUEFDS0FHRUNPTkZJR1tsaWJjYXBdID0gIi0td2l0aC1saWJjYXAsIC0td2l0aG91dC1saWJjYXAsIGxpYmNhcCIKK1BBQ0tBR0VDT05GSUdbcXRdID0gIi0tZW5hYmxlLXBpbmVudHJ5LXF0LCAtLWRpc2FibGUtcGluZW50cnktcXQsIHF0NC14MTEiCitQQUNLQUdFQ09ORklHW2d0azJdID0gIi0tZW5hYmxlLXBpbmVudHJ5LWd0azIsIC0tZGlzYWJsZS1waW5lbnRyeS1ndGsyLCBndGsrIGdsaWItMi4wIgorCisjVG8gdXNlIGxpYnNlY3JldCwgYWRkIG1ldGEtZ25vbWUKK1BBQ0tBR0VDT05GSUdbc2VjcmV0XSA9ICItLWVuYWJsZS1saWJzZWNyZXQsIC0tZGlzYWJsZS1saWJzZWNyZXQsIGxpYnNlY3JldCIKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9wdGVzdC1ydW5uZXIvcHRlc3QtcnVubmVyXzIuMC4yLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3B0ZXN0LXJ1bm5lci9wdGVzdC1ydW5uZXJfMi4wLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzZTlhN2UuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3B0ZXN0LXJ1bm5lci9wdGVzdC1ydW5uZXJfMi4wLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1TVU1NQVJZID0gIkEgQyBwcm9ncmFtIHRvIHJ1biBhbGwgaW5zdGFsbGVkIHB0ZXN0cyIKLURFU0NSSVBUSU9OID0gIlRoZSBwdGVzdC1ydW5uZXIyIHBhY2thZ2UgaW5zdGFsbHMgYSBwdGVzdC1ydW5uZXIgXAotcHJvZ3JhbSB3aGljaCBsb29wcyB0aHJvdWdoIGFsbCBpbnN0YWxsZWQgcHRlc3QgdGVzdCBzdWl0ZXMgYW5kIFwKLXJ1bnMgdGhlbSBpbiBzZXF1ZW5jZS4iCi1IT01FUEFHRSA9ICJodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9wdGVzdC1ydW5uZXIyL2Fib3V0LyIKLQotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgotCi1TUkNSRVYgPSAiNmQyODcyMTE2Y2Q5ZDZlMTYxN2E3NjhmOWQ3MmJiZjA5MTQ4OWIyZCIKLVBWID0gIjIuMC4yK2dpdCR7U1JDUFZ9IgotCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3B0ZXN0LXJ1bm5lcjIiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1GSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vcHRlc3QtcnVubmVyIgotCi1FWFRSQV9PRU1BS0UgPSAiLWUgTUFLRUZMQUdTPSIKLQotZG9fY29tcGlsZSAoKSB7Ci0Jb2VfcnVubWFrZQotfQotCi1kb19pbnN0YWxsICgpIHsKLQlpbnN0YWxsIC1EIC1tIDA3NTUgJHtTfS9wdGVzdC1ydW5uZXIgJHtEfSR7YmluZGlyfS9wdGVzdC1ydW5uZXIKLX0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9wdGVzdC1ydW5uZXIvcHRlc3QtcnVubmVyXzIuMS5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9wdGVzdC1ydW5uZXIvcHRlc3QtcnVubmVyXzIuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWMxZGFiCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3B0ZXN0LXJ1bm5lci9wdGVzdC1ydW5uZXJfMi4xLmJiCkBAIC0wLDAgKzEsMjYgQEAKK1NVTU1BUlkgPSAiQSBDIHByb2dyYW0gdG8gcnVuIGFsbCBpbnN0YWxsZWQgcHRlc3RzIgorREVTQ1JJUFRJT04gPSAiVGhlIHB0ZXN0LXJ1bm5lcjIgcGFja2FnZSBpbnN0YWxscyBhIHB0ZXN0LXJ1bm5lciBcCitwcm9ncmFtIHdoaWNoIGxvb3BzIHRocm91Z2ggYWxsIGluc3RhbGxlZCBwdGVzdCB0ZXN0IHN1aXRlcyBhbmQgXAorcnVucyB0aGVtIGluIHNlcXVlbmNlLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL3B0ZXN0LXJ1bm5lcjIvYWJvdXQvIgorCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCisKK1NSQ1JFViA9ICI4YTkzODMyZGFkNjIxNTM1ZTkwYWE4ZTFmYjc0YWU1YmE3NDNmYzNlIgorUFYgPSAiMi4xK2dpdCR7U1JDUFZ9IgorCitTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3B0ZXN0LXJ1bm5lcjIiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitGSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vcHRlc3QtcnVubmVyIgorCitFWFRSQV9PRU1BS0UgPSAiLWUgTUFLRUZMQUdTPSIKKworZG9fY29tcGlsZSAoKSB7CisJb2VfcnVubWFrZQorfQorCitkb19pbnN0YWxsICgpIHsKKwlpbnN0YWxsIC1EIC1tIDA3NTUgJHtTfS9wdGVzdC1ydW5uZXIgJHtEfSR7YmluZGlyfS9wdGVzdC1ydW5uZXIKK30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9yZTJjL3JlMmMvbWtkaXIucGF0Y2ggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcmUyYy9yZTJjL21rZGlyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1OWYwMWIKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcmUyYy9yZTJjL21rZGlyLnBhdGNoCkBAIC0wLDAgKzEsMzYgQEAKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIChodHRwczovL2dpdGh1Yi5jb20vc2t2YWRyaWsvcmUyYy9wdWxsLzE5MSkKK1NpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CisKK0Zyb20gYmNjYzEwYzYwNTIzZjg4YzhmODE0MTMxNTFjZGNkNjEyZWIxNjE5OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CitEYXRlOiBNb24sIDMxIEp1bCAyMDE3IDE1OjQzOjQxICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlLmFtOiBjcmVhdGUgdGFyZ2V0IGRpcmVjdG9yeSBiZWZvcmUgd3JpdGluZyBpbnRvIGl0CisKK0luIHNvbWUgc2l0dWF0aW9ucyBzcmMvcGFyc2UvIG1heSBub3QgZXhpc3QgYmVmb3JlIGEgZmlsZSBpcyBjb3BpZWQgaW50byB0aGUKK2RpcmVjdG9yeS4gRW5zdXJlIHRoYXQgdGhpcyBkb2Vzbid0IGhhcHBlbiBieSBjcmVhdGluZyB0aGUgZGlyZWN0b3J5IGZpcnN0LgorLS0tCisgcmUyYy9NYWtlZmlsZS5hbSB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvcmUyYy9NYWtlZmlsZS5hbSBiL3JlMmMvTWFrZWZpbGUuYW0KK2luZGV4IDNiM2IyYzVlLi4wNzA3ZmM1YSAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmFtCisrKysgYi9NYWtlZmlsZS5hbQorQEAgLTE4Nyw2ICsxODcsNyBAQCBDTEVBTkZJTEVTID0gXAorIAkkKERPQykKKyAKKyAkKEFVVE9HRU5fUEFSU0VSKTogJChDVVNUT01fUEFSU0VSKQorKwkkKEFNX1ZfYXQpJChNS0RJUl9QKSAkKGRpciAkQCkKKyAJJChBTV9WX0dFTikgaWYgdGVzdCAkKEJJU09OKSA9ICJubyI7IFwKKyAJdGhlbiBcCisgCQljcCAkKHRvcF9zcmNkaXIpLyQoQk9PVFNUUkFQX1BBUlNFUikgJEAgJiYgXAorQEAgLTIxMSw2ICsyMTIsNyBAQCAkKEJPT1RTVFJBUF9QQVJTRVIpOiAkKENVU1RPTV9QQVJTRVIpCisgCQkkKHRvcF9zcmNkaXIpLyQoQ1VTVE9NX1BBUlNFUik7CisgCisgLnJlLmNjOgorKwkkKEFNX1ZfYXQpJChNS0RJUl9QKSAkKGRpciAkQCkKKyAJJChBTV9WX0dFTikgaWYgdGVzdCAteCAkKFJFMkMpOyBcCisgCXRoZW4gXAorIAkJJCh0b3BfYnVpbGRkaXIpLyQoUkUyQykgJChSRTJDRkxBR1MpIC1vICRAICQ8ICYmIFwKKy0tIAorMi4xMS4wCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcmUyYy9yZTJjXzAuMTYuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcmUyYy9yZTJjXzAuMTYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTBkZDdiNwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9yZTJjL3JlMmNfMC4xNi5iYgpAQCAtMCwwICsxLDE1IEBACitTVU1NQVJZID0gIlRvb2wgZm9yIHdyaXRpbmcgdmVyeSBmYXN0IGFuZCB2ZXJ5IGZsZXhpYmxlIHNjYW5uZXJzIgorSE9NRVBBR0UgPSAiaHR0cDovL3JlMmMuc291cmNlZm9yZ2UubmV0LyIKK0FVVEhPUiA9ICJNYXJjdXMgQsO2cmdlciA8aGVsbHlAdXNlcnMuc291cmNlZm9yZ2UubmV0PiIKK1NFQ1RJT04gPSAiZGV2ZWwiCitMSUNFTlNFID0gIlBEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT0xNDY7bWQ1PTg4MTA1NmM5YWRkMTdmODAxOWNjZDhjMzgyYmE5NjNhIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9ta2Rpci5wYXRjaCIKK1NSQ19VUklbbWQ1c3VtXSA9ICIzYmY1MDhmYWJkNTJlZDczMzQ2NDdkMGNjYjk1NmU4ZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0OGMxMjU2NDI5NzY0MWNjZWI1ZmYwNWFlYWQ1N2YyODExOGRiNjI3N2YzMWUyMjYyNDM3ZmViYTg5MDY5ZTg0IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworaW5oZXJpdCBhdXRvdG9vbHMKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzL2RlZmF1bHQgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcm5nLXRvb2xzL3JuZy10b29scy9kZWZhdWx0CmluZGV4IDdhZWRlOWIuLmFiN2NkOTMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzL2RlZmF1bHQKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHMvZGVmYXVsdApAQCAtMSwzICsxLDIgQEAKICMgU3BlY2lmeSBybmcgZGV2aWNlCi0jUk5HX0RFVklDRT0vZGV2L2h3cm5nCi1STkdfREVWSUNFPS9kZXYvdXJhbmRvbQorUk5HX0RFVklDRT0vZGV2L2h3cm5nCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcm5nLXRvb2xzL3JuZy10b29scy9ybmctdG9vbHMtNS1maXgtdGV4dHJlbHMtb24tUElDLXg4Ni5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzL3JuZy10b29scy01LWZpeC10ZXh0cmVscy1vbi1QSUMteDg2LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzYTU4NjQKLS0tIC9kZXYvbnVsbAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcm5nLXRvb2xzL3JuZy10b29scy9ybmctdG9vbHMtNS1maXgtdGV4dHJlbHMtb24tUElDLXg4Ni5wYXRjaApAQCAtMCwwICsxLDEwMyBAQAorRnJvbTogRnJhbmNpc2NvIEJsYXMgSXpxdWllcmRvIFJpZXJhIChrbG9uZGlrZSkgPGtsb25kaWtlQGdlbnRvby5vcmc+CitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBhc3NlbWJ5IHRleHRyZWxzIG9uIHJkcmFuZF9hc20uUyBvbiBQSUMgeDg2CisKK1RoaXMgcGF0Y2ggdXBkYXRlcyB0aGUgZml4ZXMgaW4gdGhlIGFzc2VtYmx5IGluIHJkcmFuZF9hc20uUyBpbgorc3lzLWFwcHMvcm5nLXRvb2xzLTUgc28gaXQgd29uJ3QgZ2VuZXJhdGUgdGV4dHJlbHMgb24gUElDIHN5c3RlbXMuCitUaGUgbWFpbiBmaXhlcyBhcmUgaW4gdGhlIHVzZSBvZiBsZWFsIGluIFNFVFBUUiBmb3Igc3VjaCBzeXN0ZW1zLCB0aGUgcmVzdCBpcwordGhlIHVzdWFsIFBJQyBzdXBwb3J0IHN0dWZmLgorCitUaGlzIHNob3VsZCBmaXggR2VudG9vIGJ1ZyAjNDY5OTYyIGFuZCBoZWxwIGZpeCAjNTE4MjEwCisKK1RoaXMgcGF0Y2ggaXMgcmVsZWFzZWQgdW5kZXIgdGhlIEdQTHYyIG9yIGEgaGlnaGVyIHZlcnNpb24gbGljZW5zZSBhcyBpcyB0aGUKK29yaWdpbmFsIGZpbGUgYXMgbG9uZyBhcyB0aGUgYXV0aG9yIGFuZCB0aGUgdGVzdGVyIGFyZSBjcmVkaXRlZC4KKworR2VudG9vLWJ1Zy11cmw6IGh0dHBzOi8vYnVncy5nZW50b28ub3JnL3Nob3dfYnVnLmNnaT9pZD00Njk5NjIKK0dlbnRvby1idWctdXJsOiBodHRwczovL2J1Z3MuZ2VudG9vLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTE4MjEwCitTaWduZWQtb2ZmLWJ5OiBGcmFuY2lzY28gQmxhcyBJenF1aWVyZG8gUmllcmEgKGtsb25kaWtlKSA8a2xvbmRpa2VAZ2VudG9vLm9yZz4KK1JlcG9ydGVkLWJ5OiBjaWxseSA8Y2lsbHlAY2lsbHkubWluZS5udT4KK1JlcG9ydGVkLWJ5OiBNYW51ZWwgUsO8Z2VyIDxtcnVlZ0BnZW50b28ub3JnPgorVGVzdGVkLWJ5OiBBbnRob255IEJhc2lsZSA8Ymx1ZW5lc3NAZ2VudG9vLm9yZz4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK0luZGV4OiBybmctdG9vbHMtNS9yZHJhbmRfYXNtLlMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBybmctdG9vbHMtNS5vcmlnL3JkcmFuZF9hc20uUworKysrIHJuZy10b29scy01L3JkcmFuZF9hc20uUworQEAgLTIsNiArMiw3IEBACisgICogQ29weXJpZ2h0IChjKSAyMDExLTIwMTQsIEludGVsIENvcnBvcmF0aW9uCisgICogQXV0aG9yczogRmVuZ2h1YSBZdSA8ZmVuZ2h1YS55dUBpbnRlbC5jb20+LAorICAqICAgICAgICAgIEguIFBldGVyIEFudmluIDxocGFAbGludXguaW50ZWwuY29tPgorKyAqIFBJQyBjb2RlIGJ5OiBGcmFuY2lzY28gQmxhcyBJenF1aWVyZG8gUmllcmEgKGtsb25kaWtlKSA8a2xvbmRpa2VAZ2VudG9vLm9yZz4KKyAgKgorICAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgICogdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwKK0BAIC0xNzQsNyArMTc1LDE5IEBAIEVOVFJZKHg4Nl9yZHNlZWRfb3JfcmRyYW5kX2J5dGVzKQorIAlqbXAJNGIKKyBFTkRQUk9DKHg4Nl9yZHNlZWRfb3JfcmRyYW5kX2J5dGVzKQorIAorKyNpZiBkZWZpbmVkKF9fUElDX18pCisrI2RlZmluZSBJTklUX1BJQygpIFwKKysJcHVzaGwJJWVieCA7IFwKKysJY2FsbCAgICBfX3g4Ni5nZXRfcGNfdGh1bmsuYnggOyBcCisrCWFkZGwgICAgJF9HTE9CQUxfT0ZGU0VUX1RBQkxFXywgJWVieAorKyNkZWZpbmUgRU5EX1BJQygpIFwKKysJcG9wbAklZWJ4CisrI2RlZmluZSBTRVRQVFIodmFyLHB0cikgbGVhbCAodmFyKUBHT1RPRkYoJWVieCkscHRyCisrI2Vsc2UKKysjZGVmaW5lIElOSVRfUElDKCkKKysjZGVmaW5lIEVORF9QSUMoKQorICNkZWZpbmUgU0VUUFRSKHZhcixwdHIpCW1vdmwgJCh2YXIpLHB0cgorKyNlbmRpZgorICNkZWZpbmUgUFRSMAklZWF4CisgI2RlZmluZSBQVFIxCSVlZHgKKyAjZGVmaW5lIFBUUjIJJWVjeAorQEAgLTE5MCw2ICsyMDMsNyBAQCBFTlRSWSh4ODZfYWVzX21hbmdsZSkKKyAJbW92bAk4KCVlYnApLCAlZWF4CisgCW1vdmwJMTIoJWVicCksICVlZHgKKyAJcHVzaAklZXNpCisrCUlOSVRfUElDKCkKKyAjZW5kaWYKKyAJbW92bAkkNTEyLCBDVFIzCS8qIE51bWJlciBvZiByb3VuZHMgKi8KKyAJCitAQCAtMjgwLDYgKzI5NCw3IEBAIG9mZnNldCA9IG9mZnNldCArIDE2CisgCW1vdmRxYQkleG1tNywgKDcqMTYpKFBUUjEpCisgCisgI2lmZGVmIF9faTM4Nl9fCisrCUVORF9QSUMoKQorIAlwb3AJJWVzaQorIAlwb3AJJWVicAorICNlbmRpZgorQEAgLTI5NCw2ICszMDksNyBAQCBFTlRSWSh4ODZfYWVzX2V4cGFuZF9rZXkpCisgCXB1c2gJJWVicAorIAltb3YJJWVzcCwgJWVicAorIAltb3ZsCTgoJWVicCksICVlYXgKKysJSU5JVF9QSUMoKQorICNlbmRpZgorIAorIAlTRVRQVFIoYWVzX3JvdW5kX2tleXMsIFBUUjEpCitAQCAtMzIzLDYgKzMzOSw3IEBAIEVOVFJZKHg4Nl9hZXNfZXhwYW5kX2tleSkKKyAJY2FsbAkxZgorIAorICNpZmRlZiBfX2kzODZfXworKwlFTkRfUElDKCkKKyAJcG9wCSVlYnAKKyAjZW5kaWYKKyAJcmV0CitAQCAtMzQzLDYgKzM2MCwxNiBAQCBFTlRSWSh4ODZfYWVzX2V4cGFuZF9rZXkpCisgCisgRU5EUFJPQyh4ODZfYWVzX2V4cGFuZF9rZXkpCisgCisrI2lmIGRlZmluZWQoX19pMzg2X18pICYmIGRlZmluZWQoX19QSUNfXykKKysJLnNlY3Rpb24JLnRleHQuX194ODYuZ2V0X3BjX3RodW5rLmJ4LCJheEciLEBwcm9nYml0cyxfX3g4Ni5nZXRfcGNfdGh1bmsuYngsY29tZGF0CisrCS5nbG9ibAlfX3g4Ni5nZXRfcGNfdGh1bmsuYngKKysJLmhpZGRlbglfX3g4Ni5nZXRfcGNfdGh1bmsuYngKKysJLnR5cGUJX194ODYuZ2V0X3BjX3RodW5rLmJ4LCBAZnVuY3Rpb24KKytfX3g4Ni5nZXRfcGNfdGh1bmsuYng6CisrCW1vdmwJKCVlc3ApLCAlZWJ4CisrCXJldAorKyNlbmRpZgorKworIAkuYnNzCisgCS5iYWxpZ24gNjQKKyBhZXNfcm91bmRfa2V5czoKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzL3JuZ2Quc2VydmljZSBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzL3JuZ2Quc2VydmljZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTRhZDUwCi0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHMvcm5nZC5zZXJ2aWNlCkBAIC0wLDAgKzEsOSBAQAorW1VuaXRdCitEZXNjcmlwdGlvbj1IYXJkd2FyZSBSTkcgRW50cm9weSBHYXRoZXJlciBEYWVtb24KKworW1NlcnZpY2VdCitFeGVjU3RhcnQ9QFNCSU5ESVJAL3JuZ2QgLWYgLXIgL2Rldi91cmFuZG9tCitTdWNjZXNzRXhpdFN0YXR1cz02NgorCitbSW5zdGFsbF0KK1dhbnRlZEJ5PW11bHRpLXVzZXIudGFyZ2V0CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcm5nLXRvb2xzL3JuZy10b29scy91Y2xpYmMtbGlidWFyZ3AtY29uZmlndXJlLnBhdGNoIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHMvdWNsaWJjLWxpYnVhcmdwLWNvbmZpZ3VyZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTY5MTMxNS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcm5nLXRvb2xzL3JuZy10b29scy91Y2xpYmMtbGlidWFyZ3AtY29uZmlndXJlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotSW4gY2FzZSBvZiB1Y2xpYmMsIHVzZSBsaWJ1YXJncAotCi1JZiB3ZSB1c2UgdWNsaWJjIGZvciBzeXN0ZW0gbGlicmFyaWVzLCBzZWxlY3QgbGlidWFyZ3AKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPgotLS0tCi1kaWZmIC1OYXVyIHJuZy10b29scy01LW9yaWcvY29uZmlndXJlLmFjIHJuZy10b29scy01L2NvbmZpZ3VyZS5hYwotLS0tIHJuZy10b29scy01LW9yaWcvY29uZmlndXJlLmFjCTIwMTYtMDItMjQgMTg6MTE6MjQuMDIzNjkwMjM1ICswMjAwCi0rKysgcm5nLXRvb2xzLTUvY29uZmlndXJlLmFjCTIwMTYtMDItMjQgMTg6MTQ6NDkuNzYzMTE4MTM4ICswMjAwCi1AQCAtMzksNiArMzksMTMgQEAKLSAJW3dpdGhfbGliYXJncD1jaGVja10KLSApCi0gCi0rQUNfQVJHX0VOQUJMRShbdWNsaWJjXSwKLSsgICAgQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXVjbGliY10sIFtVc2UgdWNsaWJjIGZvciBzeXN0ZW0gbGlicmFyaWVzXSksCi0rICAgICAgICB1c2VfdWNsaWJjPXllcywgdXNlX3VjbGliYz1ubykKLStBTV9DT05ESVRJT05BTChVU0VfVUNMSUJDLCB0ZXN0ICJ4JHVzZV91Y2xpYmMiID0gInh5ZXMiKQotK0FTX0lGKFt0ZXN0ICJ4JHVzZV91Y2xpYmMiID0gInh5ZXMiXSwgW0FDX0RFRklORShVU0VfVUNMSUJDKV0pCi0rQUhfVEVNUExBVEUoW1VTRV9VQ0xJQkNdLCBbRGVmaW5lZCBpZiB1Y2xpYmMgbGlicmFyaWVzIGFyZSB1c2VkLl0pCi0rCi0gZG5sIE1ha2Ugc3VyZSBhbnlvbmUgY2hhbmdpbmcgY29uZmlndXJlLmFjL01ha2VmaWxlLmFtIGhhcyBhIGNsdWUKLSBBTV9NQUlOVEFJTkVSX01PREUKLSAKLUBAIC0xMDEsNyArMTA4LDcgQEAKLSAJCQlbbmVlZF9saWJhcmdwPW5vXSwKLSAJCQlbbmVlZF9saWJhcmdwPXllcwotIAkJCSBpZiB0ZXN0ICJ4JHdpdGhfbGliYXJncCIgPSAieG5vIjsgdGhlbgotLQkJCQlBQ19NU0dfRkFJTFVSRShbbGliYXJncCBkaXNhYmxlZCBhbmQgbGliYyBkb2VzIG5vdCBoYXZlIGFyZ3BdKQotKwkJCQlBQ19NU0dfV0FSTihbbGliYXJncCBkaXNhYmxlZCBhbmQgbGliYyBkb2VzIG5vdCBoYXZlIGFyZ3BdKQotIAkJCSBmaV0KLSAJCSkKLSAJXSwKLUBAIC0xMTAsNyArMTE3LDcgQEAKLSAKLSBkbmwgQ2hlY2sgZm9yIGxpYmFyZ3AKLSBBU19JRigKLS0JW3Rlc3QgIngkbmVlZF9saWJhcmdwIiA9ICJ4eWVzIl0sCi0rCVt0ZXN0ICJ4JG5lZWRfbGliYXJncCIgPSAieHllcyIgLWEgIngkdXNlX3VjbGliYyIgPSAieG5vIl0sCi0gCVsKLSAJCUFDX0NIRUNLX0xJQigKLSAJCQlbYXJncF0sCi1AQCAtMTIwLDYgKzEyNywxOSBAQAotIAkJKQotIAldCi0gKQotKwotK2RubCBDaGVjayBmb3IgbGlidWFyZ3AKLStBU19JRigKLSsJW3Rlc3QgIngkdXNlX3VjbGliYyIgPSAieHllcyJdLAotKwlbCi0rCQlBQ19DSEVDS19MSUIoCi0rCQkJW3VhcmdwXSwKLSsJCQlbYXJncF9wYXJzZV0sCi0rCQkJW0xJQlM9IiRMSUJTIC1sdWFyZ3AiXSwKLSsJCQlbQUNfTVNHX0ZBSUxVUkUoW2xpYnVhcmdwIG5vdCBmb3VuZF0pXQotKwkJKQotKwldCi0rKQotIAotIGRubCAtLS0tLS0tLS0tLS0tLS0tLQotIGRubCBDb25maWd1cmUgb3B0aW9ucwpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHMvdW5kZXJxdW90ZS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzL3VuZGVycXVvdGUucGF0Y2gKaW5kZXggMTQyMjU3MS4uYWZkMDhkNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHMvdW5kZXJxdW90ZS5wYXRjaAorKysgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcm5nLXRvb2xzL3JuZy10b29scy91bmRlcnF1b3RlLnBhdGNoCkBAIC03LDYgKzcsOCBAQAogUlAKIDIwMTYvMi8xNgogCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKwogSW5kZXg6IHJuZy10b29scy01L2NvbmZpZ3VyZS5hYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIHJuZy10b29scy01Lm9yaWcvY29uZmlndXJlLmFjCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcm5nLXRvb2xzL3JuZy10b29sc181LmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHNfNS5iYgppbmRleCA5MzI5ZThhLi40YTY2YmVkIDEwMDY0NAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcm5nLXRvb2xzL3JuZy10b29sc181LmJiCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzXzUuYmIKQEAgLTYsOSArNiwxMSBAQAogICAgICAgICAgICBmaWxlOi8vMDAwMS1JZi10aGUtbGliYy1pcy1sYWNraW5nLWFyZ3AtdXNlLWxpYmFyZ3AucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMi1BZGQtYXJndW1lbnQtdG8tY29udHJvbC10aGUtbGliYXJncC1kZXBlbmRlbmN5LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3VuZGVycXVvdGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdWNsaWJjLWxpYnVhcmdwLWNvbmZpZ3VyZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ybmctdG9vbHMtNS1maXgtdGV4dHJlbHMtb24tUElDLXg4Ni5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9pbml0IFwKLSAgICAgICAgICAgZmlsZTovL2RlZmF1bHQiCisgICAgICAgICAgIGZpbGU6Ly9kZWZhdWx0IFwKKyAgICAgICAgICAgZmlsZTovL3JuZ2Quc2VydmljZSBcCisiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICI2NzI2Y2RjNmZhZTFmNTEyMjQ2M2YyNGFlOTgwZGQ2OCIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI2MGExMDJiNjYwM2JiY2NlMmRhMzQxNDcwY2FkNDJlZWFhOTU2NGExNmI0NDkwZTc4NjcwMjZjYTExYTMwNzhlIgpAQCAtMjAsMTMgKzIyLDExIEBACiAgICAgICAgIGQuc2V0VmFyKCJJTkhJQklUX1VQREFURVJDRF9CQkNMQVNTIiwgIjEiKQogfQogCi1pbmhlcml0IGF1dG90b29scyB1cGRhdGUtcmMuZAoraW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgc3lzdGVtZAogCiBQQUNLQUdFQ09ORklHID0gImxpYmdjcnlwdCIKIFBBQ0tBR0VDT05GSUdfbGliYy1tdXNsID0gImxpYmFyZ3AiCi1QQUNLQUdFQ09ORklHX2xpYmMtdWNsaWJjID0gImxpYnVhcmdwIgogUEFDS0FHRUNPTkZJR1tsaWJhcmdwXSA9ICItLXdpdGgtbGliYXJncCwtLXdpdGhvdXQtbGliYXJncCxhcmdwLXN0YW5kYWxvbmUsIgotUEFDS0FHRUNPTkZJR1tsaWJ1YXJncF0gPSAiLS1lbmFibGUtdWNsaWJjLCwsIgogUEFDS0FHRUNPTkZJR1tsaWJnY3J5cHRdID0gIi0td2l0aC1saWJnY3J5cHQsLS13aXRob3V0LWxpYmdjcnlwdCxsaWJnY3J5cHQsIgogCiBkb19pbnN0YWxsX2FwcGVuZCgpIHsKQEAgLTQwLDcgKzQwLDE1IEBACiAgICAgICAgIGluc3RhbGwgLWQgIiR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQiCiAgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2RlZmF1bHQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC9ybmctdG9vbHMKICAgICBmaQorCisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgICAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L3JuZ2Quc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgICAgICBzZWQgLWkgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcm5nZC5zZXJ2aWNlCisgICAgZmkKIH0KIAogSU5JVFNDUklQVF9OQU1FID0gInJuZy10b29scyIKIElOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDMwIDIgMyA0IDUgLiBzdG9wIDMwIDAgNiAxIC4iCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJybmdkLnNlcnZpY2UiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2hhcmVkLW1pbWUtaW5mby9zaGFyZWQtbWltZS1pbmZvLmluYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zaGFyZWQtbWltZS1pbmZvL3NoYXJlZC1taW1lLWluZm8uaW5jCmluZGV4IDZlZWRiNmQuLjFmNTEyMjUgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zaGFyZWQtbWltZS1pbmZvL3NoYXJlZC1taW1lLWluZm8uaW5jCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zaGFyZWQtbWltZS1pbmZvL3NoYXJlZC1taW1lLWluZm8uaW5jCkBAIC02LDcgKzYsNiBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCiAKIERFUEVORFMgPSAibGlieG1sMiBpbnRsdG9vbC1uYXRpdmUgZ2xpYi0yLjAgc2hhcmVkLW1pbWUtaW5mby1uYXRpdmUiCi1ERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJsaWJ4bWwyLW5hdGl2ZSBpbnRsdG9vbC1uYXRpdmUgZ2xpYi0yLjAtbmF0aXZlIgogCiBTUkNfVVJJID0gImh0dHA6Ly9mcmVlZGVza3RvcC5vcmcvfmhhZGVzcy9zaGFyZWQtbWltZS1pbmZvLSR7UFZ9LnRhci54eiIKIApAQCAtMzMsNCArMzIsNCBAQAogCWF1dG90b29sc19kb19pbnN0YWxsCiB9CiAKLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9maWxlcy9zcWxpdGUzLWZpeC1DVkUtMjAxNy0xMzY4NS5wYXRjaCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zcWxpdGUvZmlsZXMvc3FsaXRlMy1maXgtQ1ZFLTIwMTctMTM2ODUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWFjNDI4YwotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zcWxpdGUvZmlsZXMvc3FsaXRlMy1maXgtQ1ZFLTIwMTctMTM2ODUucGF0Y2gKQEAgLTAsMCArMSw1NyBAQAorRml4IENWRS0yMDE3LTEzNjg1CisKK1RoZSBkdW1wX2NhbGxiYWNrIGZ1bmN0aW9uIGluIFNRTGl0ZSAzLjIwLjAgYWxsb3dzIHJlbW90ZSBhdHRhY2tlcnMgdG8KK2NhdXNlIGEgZGVuaWFsIG9mIHNlcnZpY2UgKEVYQ19CQURfQUNDRVNTIGFuZCBhcHBsaWNhdGlvbiBjcmFzaCkgdmlhIGEKK2NyYWZ0ZWQgZmlsZS4KKworUmVmZXJlbmNlczoKK2h0dHBzOi8vc3FsaXRlLm9yZy9zcmMvaW5mby8wMmYwZjRjNTRmMjgxOWIzCitodHRwOi8vd3d3Lm1haWwtYXJjaGl2ZS5jb20vc3FsaXRlLXVzZXJzJTQwbWFpbGluZ2xpc3RzLnNxbGl0ZS5vcmcvbXNnMTA1MzE0Lmh0bWwKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9zcWxpdGUub3JnL3NyYy9pbmZvL2NmMGQzNzE1Y2FhYzkxNDldCisKK0NWRTogQ1ZFLTIwMTctMTM2ODUKKworU2lnbmVkLW9mZi1ieTogV2Vuem9uZyBGYW4gPHdlbnpvbmcuZmFuQHdpbmRyaXZlci5jb20+CisKK0luZGV4OiBzcmMvc2hlbGwuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gc3JjL3NoZWxsLmMKKysrKyBzcmMvc2hlbGwuYworQEAgLTI2NTcsMTAgKzI2NTcsMTEgQEAKKyAgIGludCAqYWlUeXBlICAgICAgLyogQ29sdW1uIHR5cGVzICovCisgKXsKKyAgIGludCBpOworICAgU2hlbGxTdGF0ZSAqcCA9IChTaGVsbFN0YXRlKilwQXJnOworIAorKyAgaWYoIGF6QXJnPT0wICkgcmV0dXJuIDA7CisgICBzd2l0Y2goIHAtPmNNb2RlICl7CisgICAgIGNhc2UgTU9ERV9MaW5lOiB7CisgICAgICAgaW50IHcgPSA1OworICAgICAgIGlmKCBhekFyZz09MCApIGJyZWFrOworICAgICAgIGZvcihpPTA7IGk8bkFyZzsgaSsrKXsKK0BAIC0zMDA3LDEwICszMDA4LDExIEBACisgKi8KKyBzdGF0aWMgaW50IGNhcHR1cmVPdXRwdXRDYWxsYmFjayh2b2lkICpwQXJnLCBpbnQgbkFyZywgY2hhciAqKmF6QXJnLCBjaGFyICoqYXopeworICAgU2hlbGxUZXh0ICpwID0gKFNoZWxsVGV4dCopcEFyZzsKKyAgIGludCBpOworICAgVU5VU0VEX1BBUkFNRVRFUihheik7CisrICBpZiggYXpBcmc9PTAgKSByZXR1cm4gMDsKKyAgIGlmKCBwLT5uICkgYXBwZW5kVGV4dChwLCAifCIsIDApOworICAgZm9yKGk9MDsgaTxuQXJnOyBpKyspeworICAgICBpZiggaSApIGFwcGVuZFRleHQocCwgIiwiLCAwKTsKKyAgICAgaWYoIGF6QXJnW2ldICkgYXBwZW5kVGV4dChwLCBhekFyZ1tpXSwgMCk7CisgICB9CitAQCAtMzg4OCwxMSArMzg5MCwxMSBAQAorICAgY29uc3QgY2hhciAqelR5cGU7CisgICBjb25zdCBjaGFyICp6U3FsOworICAgU2hlbGxTdGF0ZSAqcCA9IChTaGVsbFN0YXRlICopcEFyZzsKKyAKKyAgIFVOVVNFRF9QQVJBTUVURVIoYXpOb3RVc2VkKTsKKy0gIGlmKCBuQXJnIT0zICkgcmV0dXJuIDE7CisrICBpZiggbkFyZyE9MyB8fCBhekFyZz09MCApIHJldHVybiAwOworICAgelRhYmxlID0gYXpBcmdbMF07CisgICB6VHlwZSA9IGF6QXJnWzFdOworICAgelNxbCA9IGF6QXJnWzJdOworIAorICAgaWYoIHN0cmNtcCh6VGFibGUsICJzcWxpdGVfc2VxdWVuY2UiKT09MCApewpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9zcWxpdGUzXzMuMTcuMC5iYiBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zcWxpdGUvc3FsaXRlM18zLjE3LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5M2NiMzIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9zcWxpdGUzXzMuMTcuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLXJlcXVpcmUgc3FsaXRlMy5pbmMKLQotTElDRU5TRSA9ICJQRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NxbGl0ZTMuaDtlbmRsaW5lPTExO21kNT02NWYwYTU3Y2E2OTI4NzEwYjQxOGMwOTRiMzU3MGJiMCIKLQotU1JDX1VSSSA9ICJcCi0gIGh0dHA6Ly93d3cuc3FsaXRlLm9yZy8yMDE3L3NxbGl0ZS1hdXRvY29uZi0ke1NRTElURV9QVn0udGFyLmd6IFwKLSAgIgotU1JDX1VSSVttZDVzdW1dID0gIjQ1MGE5NWE3YmRlNjk3YzlmZTRkZTlhZTJmZmZkY2NhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImE0ZTQ4NWFkM2ExNmUwNTQ3NjViYWY2MzcxODI2YjUwMDBiZWVkMDdlNjI2NTEwODk2MDY5YzBiZjAxMzg3NGMiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL3NxbGl0ZTNfMy4yMC4wLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9zcWxpdGUzXzMuMjAuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNTA4MjU4Ci0tLSAvZGV2L251bGwKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9zcWxpdGUzXzMuMjAuMC5iYgpAQCAtMCwwICsxLDExIEBACityZXF1aXJlIHNxbGl0ZTMuaW5jCisKK0xJQ0VOU0UgPSAiUEQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zcWxpdGUzLmg7ZW5kbGluZT0xMTttZDU9Nzg2ZDNkYzU4MWVmZjAzZjRmZDllNGE3N2VkMDBjNjYiCisKK1NSQ19VUkkgPSAiXAorICBodHRwOi8vd3d3LnNxbGl0ZS5vcmcvMjAxNy9zcWxpdGUtYXV0b2NvbmYtJHtTUUxJVEVfUFZ9LnRhci5neiBcCisgIGZpbGU6Ly9zcWxpdGUzLWZpeC1DVkUtMjAxNy0xMzY4NS5wYXRjaCBcCisgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICJlMjYyYTI4YjczY2MzMzBlN2U4MzUyMGM4Y2UxNGU0ZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzODE0YzZmNjI5ZmY5Mzk2OGIyYjM3YTcwNDk3Y2ZlOThiMzY2YmY1ODdhMjI2MWE1NmE1Zjc1MGFmNmFlNmEwIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3Z0ZS92dGVfMC40Ni4xLmJiIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3Z0ZS92dGVfMC40Ni4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYWZlNjI1Li4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92dGUvdnRlXzAuNDYuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLVNVTU1BUlkgPSAiVmlydHVhbCB0ZXJtaW5hbCBlbXVsYXRvciBHVEsrIHdpZGdldCBsaWJyYXJ5IgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9idWdsaXN0LmNnaT9wcm9kdWN0PXZ0ZSIKLUxJQ0VOU0UgPSAiTEdQTHYyLjErIgotREVQRU5EUyA9ICJnbGliLTIuMCBndGsrMyBsaWJwY3JlMiBpbnRsdG9vbC1uYXRpdmUgbGlieG1sMi1uYXRpdmUiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgotCi1pbmhlcml0IGdub21lYmFzZSBndGstZG9jIGRpc3Ryb19mZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCi0KLSMgdmFwaWdlbi5tNCBpcyByZXF1aXJlZCB3aGVuIHZhbGEgaXMgbm90IHByZXNlbnQgKGJ1dCB0aGUgb25lIGZyb20gdmFsYSBzaG91bGQgYmUgdXNlZCBub3JtYWxseSkKLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLURvbi10LWVuYWJsZS1zdGFjay1wcm90ZWN0aW9uLWJ5LWRlZmF1bHQucGF0Y2ggXAotICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndmFsYScsICcnLCAnZmlsZTovLzAwMDEtQWRkLW00LXZhcGlnZW4ubTQucGF0Y2gnLCBkKSB9IFwKLSAgICAgICAgICAgICIKLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImU4ZjQzOTNiOWYxZWMyZTJmM2NkYjNmZDRmNWExNmRlIgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiODgwMGNmOGJjMjU5NzA0YTEyYWQxODUzZmIwZWI0M2JmZTM4NTdhZjE1MjQyZTZmYjlmMmMzZmQ5NWIzZjVjNiIKLQotQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICIke0dUSzNESVNUUk9GRUFUVVJFU30iCi0KLSMgSW5zdGVhZCBvZiAiaW5oZXJpdCB2YWxhIiB3ZSBkbyB0aGUgcmVsZXZhbnQgc2V0dGluZ3MgaGVyZSBzbyB3ZSBjYW4KLSMgc2V0IERFUEVORFMgYmFzZWQgb24gUEFDS0FHRUNPTkZJRy4KLQotIyBPdXIgcGF0Y2hlZCB2ZXJzaW9uIG9mIFZhbGEgbG9va3MgaW4gU1RBR0lOR19EQVRBRElSIGZvciAudmFwaSBmaWxlcwotZXhwb3J0IFNUQUdJTkdfREFUQURJUgotIyBVcHN0cmVhbSBWYWxhID49IDAuMTEgbG9va3MgaW4gWERHX0RBVEFfRElSUyBmb3IgLnZhcGkgZmlsZXMKLWV4cG9ydCBYREdfREFUQV9ESVJTID0gIiR7U1RBR0lOR19EQVRBRElSfSIKLQotIyBQYWNrYWdlIGFkZGl0aW9uYWwgZmlsZXMKLUZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS92YWxhL3ZhcGkvKiIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImdudXRscyIKLVBBQ0tBR0VDT05GSUdbdmFsYV0gPSAiLS1lbmFibGUtdmFsYSwtLWRpc2FibGUtdmFsYSx2YWxhLW5hdGl2ZSB2YWxhIgotUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0td2l0aC1nbnV0bHMsLS13aXRob3V0LWdudXRscyxnbnV0bHMiCi0KLUNGTEFHUyArPSAiLURfR05VX1NPVVJDRSIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS10ZXN0LWFwcGxpY2F0aW9uIgotCi0jIGxpYnRvb2wgYWRkcyAiLW5vc3RkbGliIiB3aGVuIGcrKyBpcyB1c2VkLiBUaGlzIGJyZWFrcyBQSUUgYnVpbGRzLgotIyBVc2UgbGlidG9vbC1jcm9zcyAod2hpY2ggaGFzIGEgaGFjayB0byBwcmV2ZW50IHRoYXQpIGluc3RlYWQuCi1FWFRSQV9PRU1BS0VfY2xhc3MtdGFyZ2V0ID0gIkxJQlRPT0w9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vJHtIT1NUX1NZU30tbGlidG9vbCIKLQotUEFDS0FHRVMgPSsgImxpYnZ0ZSIKLUZJTEVTX2xpYnZ0ZSA9ICIke2xpYmRpcn0vKi5zby4qICR7bGliZGlyfS9naXJlcG9zaXRvcnktMS4wLyoiCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdnRlL3Z0ZV8wLjQ4LjMuYmIgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdnRlL3Z0ZV8wLjQ4LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDcyMDg0MQotLS0gL2Rldi9udWxsCisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92dGUvdnRlXzAuNDguMy5iYgpAQCAtMCwwICsxLDQ4IEBACitTVU1NQVJZID0gIlZpcnR1YWwgdGVybWluYWwgZW11bGF0b3IgR1RLKyB3aWRnZXQgbGlicmFyeSIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvYnVnbGlzdC5jZ2k/cHJvZHVjdD12dGUiCitMSUNFTlNFID0gIkxHUEx2Mi4xKyIKK0RFUEVORFMgPSAiZ2xpYi0yLjAgZ3RrKzMgbGlicGNyZTIgaW50bHRvb2wtbmF0aXZlIGxpYnhtbDItbmF0aXZlIGdwZXJmLW5hdGl2ZSIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCisKK2luaGVyaXQgZ25vbWViYXNlIGd0ay1kb2MgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworIyB2YXBpZ2VuLm00IGlzIHJlcXVpcmVkIHdoZW4gdmFsYSBpcyBub3QgcHJlc2VudCAoYnV0IHRoZSBvbmUgZnJvbSB2YWxhIHNob3VsZCBiZSB1c2VkIG5vcm1hbGx5KQorU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtRG9uLXQtZW5hYmxlLXN0YWNrLXByb3RlY3Rpb24tYnktZGVmYXVsdC5wYXRjaCBcCisgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd2YWxhJywgJycsICdmaWxlOi8vMDAwMS1BZGQtbTQtdmFwaWdlbi5tNC5wYXRjaCcsIGQpIH0gXAorICAgICAgICAgICAgIgorU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiYjMwMDY3NWFjNWYyNjlhYTZlYjQ4ZmU4OWEwZDcyNmQiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJhM2E5ZmIxODI3NDBiMzkyYTQ1Y2QzZjQ2ZmE2MWE5ODVmNjhiYjZiMTgxN2I1MmRhZWMyMjAzNGM0NjE1OGMzIgorCitBTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIiR7R1RLM0RJU1RST0ZFQVRVUkVTfSIKKworIyBJbnN0ZWFkIG9mICJpbmhlcml0IHZhbGEiIHdlIGRvIHRoZSByZWxldmFudCBzZXR0aW5ncyBoZXJlIHNvIHdlIGNhbgorIyBzZXQgREVQRU5EUyBiYXNlZCBvbiBQQUNLQUdFQ09ORklHLgorCisjIE91ciBwYXRjaGVkIHZlcnNpb24gb2YgVmFsYSBsb29rcyBpbiBTVEFHSU5HX0RBVEFESVIgZm9yIC52YXBpIGZpbGVzCitleHBvcnQgU1RBR0lOR19EQVRBRElSCisjIFVwc3RyZWFtIFZhbGEgPj0gMC4xMSBsb29rcyBpbiBYREdfREFUQV9ESVJTIGZvciAudmFwaSBmaWxlcworZXhwb3J0IFhER19EQVRBX0RJUlMgPSAiJHtTVEFHSU5HX0RBVEFESVJ9IgorCisjIEhlbHAgZy1pci1zY2FubmVyIGZpbmQgdGhlIC5zbyBmb3IgbGlua2luZworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworICAgICAgICBleHBvcnQgR0lSX0VYVFJBX0xJQlNfUEFUSD0iJHtCfS9zcmMvLmxpYnMiCit9CisKKyMgUGFja2FnZSBhZGRpdGlvbmFsIGZpbGVzCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7ZGF0YWRpcn0vdmFsYS92YXBpLyoiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJnbnV0bHMiCitQQUNLQUdFQ09ORklHW3ZhbGFdID0gIi0tZW5hYmxlLXZhbGEsLS1kaXNhYmxlLXZhbGEsdmFsYS1uYXRpdmUgdmFsYSIKK1BBQ0tBR0VDT05GSUdbZ251dGxzXSA9ICItLXdpdGgtZ251dGxzLC0td2l0aG91dC1nbnV0bHMsZ251dGxzIgorCitDRkxBR1MgKz0gIi1EX0dOVV9TT1VSQ0UiCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtdGVzdC1hcHBsaWNhdGlvbiIKKworIyBsaWJ0b29sIGFkZHMgIi1ub3N0ZGxpYiIgd2hlbiBnKysgaXMgdXNlZC4gVGhpcyBicmVha3MgUElFIGJ1aWxkcy4KKyMgVXNlIGxpYnRvb2wtY3Jvc3MgKHdoaWNoIGhhcyBhIGhhY2sgdG8gcHJldmVudCB0aGF0KSBpbnN0ZWFkLgorRVhUUkFfT0VNQUtFX2NsYXNzLXRhcmdldCA9ICJMSUJUT09MPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9LyR7SE9TVF9TWVN9LWxpYnRvb2wiCisKK1BBQ0tBR0VTID0rICJsaWJ2dGUiCitGSUxFU19saWJ2dGUgPSAiJHtsaWJkaXJ9Lyouc28uKiAke2xpYmRpcn0vZ2lyZXBvc2l0b3J5LTEuMC8qIgpkaWZmIC0tZ2l0IGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9hcm0tbGludXgtdWNsaWJjIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9hcm0tbGludXgtdWNsaWJjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YWU3YzZlLi4wMDAwMDAwCi0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvYXJtLWxpbnV4LXVjbGliYworKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi1hY19jdl9mdW5jX3NldHZidWZfcmV2ZXJzZWQ9bm8KLWFjX2N2X3NpemVvZl9fX2ludDY0PSR7YWNfY3Zfc2l6ZW9mX19faW50NjQ9MH0KLWFjX2N2X3NpemVvZl9jaGFyPSR7YWNfY3Zfc2l6ZW9mX2NoYXI9MX0KLWFjX2N2X3NpemVvZl9pbnQ9JHthY19jdl9zaXplb2ZfaW50PTR9Ci1hY19jdl9zaXplb2ZfbG9uZz0ke2FjX2N2X3NpemVvZl9sb25nPTR9Ci1hY19jdl9zaXplb2ZfbG9uZ19pbnQ9JHthY19jdl9zaXplb2ZfbG9uZ19pbnQ9NH0KLWFjX2N2X3NpemVvZl9sb25nX2xvbmc9JHthY19jdl9zaXplb2ZfbG9uZ19sb25nPTh9Ci1hY19jdl9zaXplb2Zfc2hvcnQ9JHthY19jdl9zaXplb2Zfc2hvcnQ9Mn0KLWFjX2N2X3NpemVvZl9zaG9ydF9pbnQ9JHthY19jdl9zaXplb2Zfc2hvcnRfaW50PTJ9Ci1hY19jdl9zaXplb2Zfc2l6ZV90PSR7YWNfY3Zfc2l6ZW9mX3NpemVfdD00fQotYWNfY3Zfc2l6ZW9mX3ZvaWRfcD0ke2FjX2N2X3NpemVvZl92b2lkX3A9NH0KLWFjX2N2X3NpemVvZl9sb25nX2RvdWJsZT0ke2FjX2N2X3NpemVvZl9sb25nX2RvdWJsZT04fQotCi1hY19jdl91Y2hhcj0ke2FjX2N2X3VjaGFyPW5vfQotYWNfY3ZfdWludD0ke2FjX2N2X3VpbnQ9eWVzfQotYWNfY3ZfdWxvbmc9JHthY19jdl91bG9uZz15ZXN9Ci1hY19jdl91c2hvcnQ9JHthY19jdl91c2hvcnQ9eWVzfQotCi1hY19jdl90aW1lX3JfdHlwZT0ke2FjX2N2X3RpbWVfcl90eXBlPVBPU0lYfQotCi0jIHNhbWJhCi1zYW1iYV9jdl9CUk9LRU5fTklTUExVU19JTkNMVURFX0ZJTEVTPSR7c2FtYmFfY3ZfQlJPS0VOX05JU1BMVVNfSU5DTFVERV9GSUxFUz15ZXN9Ci1zYW1iYV9jdl9CUk9LRU5fUkVESEFUXzdfU1lTVEVNX0hFQURFUlM9JHtzYW1iYV9jdl9CUk9LRU5fUkVESEFUXzdfU1lTVEVNX0hFQURFUlM9bm99Ci1zYW1iYV9jdl9GVFJVTkNBVEVfTkVFRFNfUk9PVD0ke3NhbWJhX2N2X0ZUUlVOQ0FURV9ORUVEU19ST09UPW5vfQotc2FtYmFfY3ZfSEFWRV9CUk9LRU5fRkNOVEw2NF9MT0NLUz0ke3NhbWJhX2N2X0hBVkVfQlJPS0VOX0ZDTlRMNjRfTE9DS1M9bm99Ci1zYW1iYV9jdl9IQVZFX0JST0tFTl9HRVRHUk9VUFM9JHtzYW1iYV9jdl9IQVZFX0JST0tFTl9HRVRHUk9VUFM9bm99Ci1zYW1iYV9jdl9IQVZFX0JST0tFTl9MSU5VWF9TRU5ERklMRT0ke3NhbWJhX2N2X0hBVkVfQlJPS0VOX0xJTlVYX1NFTkRGSUxFPXllc30KLXNhbWJhX2N2X0hBVkVfQlJPS0VOX1JFQURESVI9JHtzYW1iYV9jdl9IQVZFX0JST0tFTl9SRUFERElSPW5vfQotc2FtYmFfY3ZfSEFWRV9DOTlfVlNOUFJJTlRGPSR7c2FtYmFfY3ZfSEFWRV9DOTlfVlNOUFJJTlRGPXllc30KLXNhbWJhX2N2X0hBVkVfREVWNjRfVD0ke3NhbWJhX2N2X0hBVkVfREVWNjRfVD1ub30KLXNhbWJhX2N2X0hBVkVfREVWSUNFX01BSk9SX0ZOPSR7c2FtYmFfY3ZfSEFWRV9ERVZJQ0VfTUFKT1JfRk49eWVzfQotc2FtYmFfY3ZfSEFWRV9ERVZJQ0VfTUlOT1JfRk49JHtzYW1iYV9jdl9IQVZFX0RFVklDRV9NSU5PUl9GTj15ZXN9Ci1zYW1iYV9jdl9IQVZFX0RRQl9GU09GVExJTUlUPSR7c2FtYmFfY3ZfSEFWRV9EUUJfRlNPRlRMSU1JVD1ub30KLXNhbWJhX2N2X0hBVkVfRVhQTElDSVRfTEFSR0VGSUxFX1NVUFBPUlQ9JHtzYW1iYV9jdl9IQVZFX0VYUExJQ0lUX0xBUkdFRklMRV9TVVBQT1JUPXllc30KLXNhbWJhX2N2X0hBVkVfRkNOVExfTE9DSz0ke3NhbWJhX2N2X0hBVkVfRkNOVExfTE9DSz15ZXN9Ci1zYW1iYV9jdl9IQVZFX0ZUUlVOQ0FURV9FWFRFTkQ9JHtzYW1iYV9jdl9IQVZFX0ZUUlVOQ0FURV9FWFRFTkQ9eWVzfQotc2FtYmFfY3ZfSEFWRV9GVU5DVElPTl9NQUNSTz0ke3NhbWJhX2N2X0hBVkVfRlVOQ1RJT05fTUFDUk89eWVzfQotc2FtYmFfY3ZfSEFWRV9HRVRUSU1FT0ZEQVlfVFo9JHtzYW1iYV9jdl9IQVZFX0dFVFRJTUVPRkRBWV9UWj15ZXN9Ci1zYW1iYV9jdl9IQVZFX0lOTzY0X1Q9JHtzYW1iYV9jdl9IQVZFX0lOTzY0X1Q9bm99Ci1zYW1iYV9jdl9IQVZFX0lOVDE2X0ZST01fUlBDX1JQQ19IPSR7c2FtYmFfY3ZfSEFWRV9JTlQxNl9GUk9NX1JQQ19SUENfSD1ub30KLXNhbWJhX2N2X0hBVkVfSU5UMzJfRlJPTV9SUENfUlBDX0g9JHtzYW1iYV9jdl9IQVZFX0lOVDMyX0ZST01fUlBDX1JQQ19IPW5vfQotc2FtYmFfY3ZfSEFWRV9LRVJORUxfQ0hBTkdFX05PVElGWT0ke3NhbWJhX2N2X0hBVkVfS0VSTkVMX0NIQU5HRV9OT1RJRlk9eWVzfQotc2FtYmFfY3ZfSEFWRV9LRVJORUxfT1BMT0NLU19MSU5VWD0ke3NhbWJhX2N2X0hBVkVfS0VSTkVMX09QTE9DS1NfTElOVVg9eWVzfQotc2FtYmFfY3ZfSEFWRV9LRVJORUxfU0hBUkVfTU9ERVM9JHtzYW1iYV9jdl9IQVZFX0tFUk5FTF9TSEFSRV9NT0RFUz15ZXN9Ci1zYW1iYV9jdl9IQVZFX01NQVA9JHtzYW1iYV9jdl9IQVZFX01NQVA9eWVzfQotc2FtYmFfY3ZfSEFWRV9OQVRJVkVfSUNPTlY9JHtzYW1iYV9jdl9IQVZFX05BVElWRV9JQ09OVj15ZXN9Ci1zYW1iYV9jdl9IQVZFX09GRjY0X1Q9JHtzYW1iYV9jdl9IQVZFX09GRjY0X1Q9bm99Ci1zYW1iYV9jdl9IQVZFX1FVT1RBQ1RMXzRBPSR7c2FtYmFfY3ZfSEFWRV9RVU9UQUNUTF80QT15ZXN9Ci1zYW1iYV9jdl9IQVZFX1JPT1Q9JHtzYW1iYV9jdl9IQVZFX1JPT1Q9bm99Ci1zYW1iYV9jdl9IQVZFX1JQQ19BVVRIX0VSUk9SX0NPTkZMSUNUPSR7c2FtYmFfY3ZfSEFWRV9SUENfQVVUSF9FUlJPUl9DT05GTElDVD1ub30KLXNhbWJhX2N2X0hBVkVfU0VDVVJFX01LU1RFTVA9JHtzYW1iYV9jdl9IQVZFX1NFQ1VSRV9NS1NURU1QPXllc30KLXNhbWJhX2N2X0hBVkVfU0VOREZJTEU9JHtzYW1iYV9jdl9IQVZFX1NFTkRGSUxFPW5vfQotc2FtYmFfY3ZfSEFWRV9TRU5ERklMRTY0PSR7c2FtYmFfY3ZfSEFWRV9TRU5ERklMRTY0PW5vfQotc2FtYmFfY3ZfSEFWRV9TT0NLX1NJTl9MRU49JHtzYW1iYV9jdl9IQVZFX1NPQ0tfU0lOX0xFTj1ub30KLXNhbWJhX2N2X0hBVkVfU1RBVF9TVF9CTEtTSVpFPSR7c2FtYmFfY3ZfSEFWRV9TVEFUX1NUX0JMS1NJWkU9eWVzfQotc2FtYmFfY3ZfSEFWRV9TVEFUX1NUX0JMT0NLUz0ke3NhbWJhX2N2X0hBVkVfU1RBVF9TVF9CTE9DS1M9eWVzfQotc2FtYmFfY3ZfSEFWRV9TVFJVQ1RfRElSRU5UNjQ9JHtzYW1iYV9jdl9IQVZFX1NUUlVDVF9ESVJFTlQ2ND1ub30KLXNhbWJhX2N2X0hBVkVfU1RSVUNUX0ZMT0NLNjQ9JHtzYW1iYV9jdl9IQVZFX1NUUlVDVF9GTE9DSzY0PXllc30KLXNhbWJhX2N2X0hBVkVfU1RSVUNUX0lGX0RRQkxLPSR7c2FtYmFfY3ZfSEFWRV9TVFJVQ1RfSUZfRFFCTEs9bm99Ci1zYW1iYV9jdl9IQVZFX1NUUlVDVF9NRU1fRFFCTEs9JHtzYW1iYV9jdl9IQVZFX1NUUlVDVF9NRU1fRFFCTEs9bm99Ci1zYW1iYV9jdl9IQVZFX1RSVU5DQVRFRF9TQUxUPSR7c2FtYmFfY3ZfSEFWRV9UUlVOQ0FURURfU0FMVD1ub30KLXNhbWJhX2N2X0hBVkVfVUlOVDE2X0ZST01fUlBDX1JQQ19IPSR7c2FtYmFfY3ZfSEFWRV9VSU5UMTZfRlJPTV9SUENfUlBDX0g9bm99Ci1zYW1iYV9jdl9IQVZFX1VJTlQzMl9GUk9NX1JQQ19SUENfSD0ke3NhbWJhX2N2X0hBVkVfVUlOVDMyX0ZST01fUlBDX1JQQ19IPW5vfQotc2FtYmFfY3ZfSEFWRV9VTlNJR05FRF9DSEFSPSR7c2FtYmFfY3ZfSEFWRV9VTlNJR05FRF9DSEFSPXllc30KLXNhbWJhX2N2X0hBVkVfVVRJTUJVRj0ke3NhbWJhX2N2X0hBVkVfVVRJTUJVRj15ZXN9Ci1zYW1iYV9jdl9IQVZFX1VUX1VUX0FERFI9JHtzYW1iYV9jdl9IQVZFX1VUX1VUX0FERFI9eWVzfQotc2FtYmFfY3ZfSEFWRV9VVF9VVF9FWElUPSR7c2FtYmFfY3ZfSEFWRV9VVF9VVF9FWElUPXllc30KLXNhbWJhX2N2X0hBVkVfVVRfVVRfSE9TVD0ke3NhbWJhX2N2X0hBVkVfVVRfVVRfSE9TVD15ZXN9Ci1zYW1iYV9jdl9IQVZFX1VUX1VUX0lEPSR7c2FtYmFfY3ZfSEFWRV9VVF9VVF9JRD15ZXN9Ci1zYW1iYV9jdl9IQVZFX1VUX1VUX05BTUU9JHtzYW1iYV9jdl9IQVZFX1VUX1VUX05BTUU9eWVzfQotc2FtYmFfY3ZfSEFWRV9VVF9VVF9QSUQ9JHtzYW1iYV9jdl9IQVZFX1VUX1VUX1BJRD15ZXN9Ci1zYW1iYV9jdl9IQVZFX1VUX1VUX1RJTUU9JHtzYW1iYV9jdl9IQVZFX1VUX1VUX1RJTUU9eWVzfQotc2FtYmFfY3ZfSEFWRV9VVF9VVF9UVj0ke3NhbWJhX2N2X0hBVkVfVVRfVVRfVFY9eWVzfQotc2FtYmFfY3ZfSEFWRV9VVF9VVF9UWVBFPSR7c2FtYmFfY3ZfSEFWRV9VVF9VVF9UWVBFPXllc30KLXNhbWJhX2N2X0hBVkVfVVRfVVRfVVNFUj0ke3NhbWJhX2N2X0hBVkVfVVRfVVRfVVNFUj15ZXN9Ci1zYW1iYV9jdl9IQVZFX1VYX1VUX1NZU0xFTj0ke3NhbWJhX2N2X0hBVkVfVVhfVVRfU1lTTEVOPW5vfQotc2FtYmFfY3ZfSEFWRV9WQV9DT1BZPSR7c2FtYmFfY3ZfSEFWRV9WQV9DT1BZPXllc30KLXNhbWJhX2N2X0hBVkVfV09SS0lOR19BRl9MT0NBTD0ke3NhbWJhX2N2X0hBVkVfV09SS0lOR19BRl9MT0NBTD1ub30KLXNhbWJhX2N2X0hBVkVfV2Vycm9yPSR7c2FtYmFfY3ZfSEFWRV9XZXJyb3I9eWVzfQotc2FtYmFfY3ZfUFVUVVRMSU5FX1JFVFVSTlNfVVRNUD0ke3NhbWJhX2N2X1BVVFVUTElORV9SRVRVUk5TX1VUTVA9eWVzfQotc2FtYmFfY3ZfUVVPVEFfV09SS1M9JHtzYW1iYV9jdl9RVU9UQV9XT1JLUz15ZXN9Ci1zYW1iYV9jdl9SRVBMQUNFX0dFVFBBU1M9JHtzYW1iYV9jdl9SRVBMQUNFX0dFVFBBU1M9eWVzfQotc2FtYmFfY3ZfUkVQTEFDRV9JTkVUX05UT0E9JHtzYW1iYV9jdl9SRVBMQUNFX0lORVRfTlRPQT1ub30KLXNhbWJhX2N2X1JVTl9RVU9UQV9URVNUUz0ke3NhbWJhX2N2X1JVTl9RVU9UQV9URVNUUz1hdXRvfQotc2FtYmFfY3ZfU0VFS0RJUl9SRVRVUk5TX1ZPSUQ9JHtzYW1iYV9jdl9TRUVLRElSX1JFVFVSTlNfVk9JRD15ZXN9Ci1zYW1iYV9jdl9TSVpFT0ZfSU5PX1Q9JHtzYW1iYV9jdl9TSVpFT0ZfSU5PX1Q9eWVzfQotc2FtYmFfY3ZfU0laRU9GX09GRl9UPSR7c2FtYmFfY3ZfU0laRU9GX09GRl9UPXllc30KLXNhbWJhX2N2X1NZU0NPTkZfU0NfTkdST1VQU19NQVg9JHtzYW1iYV9jdl9TWVNDT05GX1NDX05HUk9VUFNfTUFYPXllc30KLXNhbWJhX2N2X1NZU1FVT1RBX0ZPVU5EPSR7c2FtYmFfY3ZfU1lTUVVPVEFfRk9VTkQ9eWVzfQotc2FtYmFfY3ZfU1lTUVVPVEFfV09SS1M9JHtzYW1iYV9jdl9TWVNRVU9UQV9XT1JLUz15ZXN9Ci1zYW1iYV9jdl9UUllfUVVPVEFTPSR7c2FtYmFfY3ZfVFJZX1FVT1RBUz1ub30KLXNhbWJhX2N2X1RSWV9TWVNfUVVPVEFTPSR7c2FtYmFfY3ZfVFJZX1NZU19RVU9UQVM9bm99Ci1zYW1iYV9jdl9VU0VfU0VUUkVTVUlEPSR7c2FtYmFfY3ZfVVNFX1NFVFJFU1VJRD15ZXN9Ci1zYW1iYV9jdl9XSVRIX1FVT1RBUz0ke3NhbWJhX2N2X1dJVEhfUVVPVEFTPWF1dG99Ci1zYW1iYV9jdl9XSVRIX1NZU19RVU9UQVM9JHtzYW1iYV9jdl9XSVRIX1NZU19RVU9UQVM9YXV0b30KLXNhbWJhX2N2X2NvbXBpbGVyX3N1cHBvcnRzX2xsPSR7c2FtYmFfY3ZfY29tcGlsZXJfc3VwcG9ydHNfbGw9eWVzfQotc2FtYmFfY3ZfaGF2ZV9sb25nbG9uZz0ke3NhbWJhX2N2X2hhdmVfbG9uZ2xvbmc9eWVzfQotc2FtYmFfY3ZfaGF2ZV9zZXRyZXNnaWQ9JHtzYW1iYV9jdl9oYXZlX3NldHJlc2dpZD15ZXN9Ci1zYW1iYV9jdl9oYXZlX3NldHJlc3VpZD0ke3NhbWJhX2N2X2hhdmVfc2V0cmVzdWlkPXllc30KLXNhbWJhX2N2X2ltbWVkaWF0ZV9zdHJ1Y3R1cmVzPSR7c2FtYmFfY3ZfaW1tZWRpYXRlX3N0cnVjdHVyZXM9eWVzfQotc2FtYmFfY3Zfb3B0aW1pemVfb3V0X2Z1bmNhdGlvbl9jYWxscz0ke3NhbWJhX2N2X29wdGltaXplX291dF9mdW5jYXRpb25fY2FsbHM9eWVzfQotc2FtYmFfY3Zfc2lnX2F0b21pY190PSR7c2FtYmFfY3Zfc2lnX2F0b21pY190PXllc30KLXNhbWJhX2N2X3NvY2tsZW5fdD0ke3NhbWJhX2N2X3NvY2tsZW5fdD15ZXN9Ci1zYW1iYV9jdl91bml4c29ja2V0PSR7c2FtYmFfY3ZfdW5peHNvY2tldD15ZXN9Ci1zYW1iYV9jdl92b2xhdGlsZT0ke3NhbWJhX2N2X3ZvbGF0aWxlPXllc30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvYXJtZWItbGludXgtdWNsaWJjIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9hcm1lYi1saW51eC11Y2xpYmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczMWU4NTcuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9hcm1lYi1saW51eC11Y2xpYmMKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1hY19jdl9mdW5jX3NldHZidWZfcmV2ZXJzZWQ9bm8KLWFjX2N2X3NpemVvZl9fX2ludDY0PSR7YWNfY3Zfc2l6ZW9mX19faW50NjQ9MH0KLWFjX2N2X3NpemVvZl9jaGFyPSR7YWNfY3Zfc2l6ZW9mX2NoYXI9MX0KLWFjX2N2X3NpemVvZl9pbnQ9JHthY19jdl9zaXplb2ZfaW50PTR9Ci1hY19jdl9zaXplb2ZfbG9uZz0ke2FjX2N2X3NpemVvZl9sb25nPTR9Ci1hY19jdl9zaXplb2ZfbG9uZ19pbnQ9JHthY19jdl9zaXplb2ZfbG9uZ19pbnQ9NH0KLWFjX2N2X3NpemVvZl9sb25nX2xvbmc9JHthY19jdl9zaXplb2ZfbG9uZ19sb25nPTh9Ci1hY19jdl9zaXplb2Zfc2hvcnQ9JHthY19jdl9zaXplb2Zfc2hvcnQ9Mn0KLWFjX2N2X3NpemVvZl9zaG9ydF9pbnQ9JHthY19jdl9zaXplb2Zfc2hvcnRfaW50PTJ9Ci1hY19jdl9zaXplb2Zfc2l6ZV90PSR7YWNfY3Zfc2l6ZW9mX3NpemVfdD00fQotYWNfY3Zfc2l6ZW9mX3ZvaWRfcD0ke2FjX2N2X3NpemVvZl92b2lkX3A9NH0KLWFjX2N2X3NpemVvZl9sb25nX2RvdWJsZT0ke2FjX2N2X3NpemVvZl9sb25nX2RvdWJsZT04fQotYWNfY3Zfc2l6ZW9mX2NoYXJfcD0ke2FjX2N2X3NpemVvZl9jaGFyX3A9NH0KLWFjX2N2X3NpemVvZl91bnNpZ25lZD0ke2FjX2N2X3NpemVvZl91bnNpZ25lZD00fQotYWNfY3Zfc2l6ZW9mX3B0cmRpZmZfdD0ke2dsaWJfY3Zfc2l6ZW9mX3B0cmRpZmZfdD00fQotCi1hY19jdl91Y2hhcj0ke2FjX2N2X3VjaGFyPW5vfQotYWNfY3ZfdWludD0ke2FjX2N2X3VpbnQ9eWVzfQotYWNfY3ZfdWxvbmc9JHthY19jdl91bG9uZz15ZXN9Ci1hY19jdl91c2hvcnQ9JHthY19jdl91c2hvcnQ9eWVzfQotCi1hY19jdl90aW1lX3JfdHlwZT0ke2FjX2N2X3RpbWVfcl90eXBlPVBPU0lYfQotCi0jIHNhbWJhCi1zYW1iYV9jdl9IQVZFX0dFVFRJTUVPRkRBWV9UWj0ke3NhbWJhX2N2X0hBVkVfR0VUVElNRU9GREFZX1RaPXllc30KLXNhbWJhX2N2X1VTRV9TRVRFVUlEPSR7c2FtYmFfY3ZfVVNFX1NFVEVVSUQ9eWVzfQotc2FtYmFfY3ZfVVNFX1NFVFJFU1VJRD0ke3NhbWJhX2N2X1VTRV9TRVRSRVNVSUQ9eWVzfQotc2FtYmFfY3ZfVVNFX1NFVFJFVUlEPSR7c2FtYmFfY3ZfVVNFX1NFVFJFVUlEPXllc30KLXNhbWJhX2N2X1VTRV9TRVRVSURYPSR7c2FtYmFfY3ZfVVNFX1NFVFVJRFg9eWVzfQotc2FtYmFfY3ZfaGF2ZV9zZXRyZXNnaWQ9JHtzYW1iYV9jdl9oYXZlX3NldHJlc2dpZD15ZXN9Ci1zYW1iYV9jdl9oYXZlX3NldHJlc3VpZD0ke3NhbWJhX2N2X2hhdmVfc2V0cmVzdWlkPXllc30KLXNhbWJhX2N2X0hBVkVfU0VOREZJTEU9JHtzYW1iYV9jdl9IQVZFX1NFTkRGSUxFPXllc30KLXNhbWJhX2N2X0hBVkVfU0VOREZJTEU2ND0ke3NhbWJhX2N2X0hBVkVfU0VOREZJTEU2ND15ZXN9Ci1zYW1iYV9jdl9IQVZFX1NFQ1VSRV9NS1NURU1QPSR7c2FtYmFfY3ZfSEFWRV9TRUNVUkVfTUtTVEVNUD15ZXN9Ci1zYW1iYV9jdl9IQVZFX01NQVA9JHtzYW1iYV9jdl9IQVZFX01NQVA9eWVzfQotc2FtYmFfY3ZfSEFWRV9LRVJORUxfT1BMT0NLU19MSU5VWD0ke3NhbWJhX2N2X0hBVkVfS0VSTkVMX09QTE9DS1NfTElOVVg9eWVzfQotc2FtYmFfY3ZfSEFWRV9LRVJORUxfQ0hBTkdFX05PVElGWT0ke3NhbWJhX2N2X0hBVkVfS0VSTkVMX0NIQU5HRV9OT1RJRlk9eWVzfQotc2FtYmFfY3ZfSEFWRV9LRVJORUxfU0hBUkVfTU9ERVM9JHtzYW1iYV9jdl9IQVZFX0tFUk5FTF9TSEFSRV9NT0RFUz15ZXN9CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL2NvbW1vbi11Y2xpYmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL2NvbW1vbi11Y2xpYmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2ZmMxMDMuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9jb21tb24tdWNsaWJjCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotIyBnZW5lcmFsCi1hY19jdl9oYXZlX2RlY2xfc3lzX3NpZ2xpc3Q9JHthY19jdl9oYXZlX2RlY2xfc3lzX3NpZ2xpc3Q9bm99Ci1hY19jdl9mdW5jX3JlYWxsb2Nfd29ya3M9JHthY19jdl9mdW5jX3JlYWxsb2Nfd29ya3M9eWVzfQotYWNfY3ZfZnVuY19yZWFsbG9jXzBfbm9ubnVsbD0ke2FjX2N2X2Z1bmNfcmVhbGxvY18wX25vbm51bGw9eWVzfQotYWNfY3ZfZnVuY19tYWxsb2Nfd29ya3M9JHthY19jdl9mdW5jX21hbGxvY193b3Jrcz15ZXN9Ci1hY19jdl9mdW5jX21hbGxvY18wX25vbm51bGw9JHthY19jdl9mdW5jX21hbGxvY18wX25vbm51bGw9eWVzfQotYWNfY3ZfZnVuY19nZXRwZ3JwX3ZvaWQ9eWVzCi1hY19jdl9mdW5jX3NldHBncnBfdm9pZD15ZXMKLWFjX2N2X2Z1bmNfc2V0Z3JlbnRfdm9pZD15ZXMKLWFjX2N2X2Z1bmNfZ2V0Z3JnaWRfcj0ke2FjX2N2X2Z1bmNfZ2V0Z3JnaWRfcj15ZXN9Ci1hY19jdl9mdW5jX2dldHB3dWlkX3I9JHthY19jdl9mdW5jX2dldHB3dWlkX3I9eWVzfQotYWNfY3ZfZnVuY19wb3NpeF9nZXRwd3VpZF9yPSR7YWNfY3ZfZnVuY19wb3NpeF9nZXRwd3VpZF9yPXllc30KLWFjX2N2X2Z1bmNfcG9zaXhfZ2V0Z3JnaWRfcj0ke2FjX2N2X2Z1bmNfcG9zaXhfZ2V0Z3JnaWRfcj15ZXN9Ci1hY19jdl9mdW5jX2dldGFkZHJpbmZvPSR7YWNfY3ZfZnVuY19nZXRhZGRyaW5mbz15ZXN9Ci0KLSMgZ2xpYgotZ2xpYl9jdl9zdHJsY3B5PSR7Z2xpYl9jdl9zdHJsY3B5PW5vfQotYWNfY3ZfZnVuY19wcmludGZfdW5peDk4PSR7YWNfY3ZfZnVuY19wcmludGZfdW5peDk4PXllc30KLWFjX2N2X2Z1bmNfc25wcmludGZfYzk5PSR7YWNfY3ZfZnVuY19zbnByaW50Zl9jOTk9eWVzfQotYWNfY3ZfZnVuY192c25wcmludGZfYzk5PSR7YWNfY3ZfZnVuY192c25wcmludGZfYzk5PXllc30KLWdsaWJfY3ZfY29tcGxpYW50X3Bvc2l4X21lbWFsaWduPSR7Z2xpYl9jdl9jb21wbGlhbnRfcG9zaXhfbWVtYWxpZ249MX0KLWdsaWJfY3ZfbG9uZ19sb25nX2Zvcm1hdD0ke2dsaWJfY3ZfbG9uZ19sb25nX2Zvcm1hdD1sbH0KLWdsaWJfY3ZfaGF2ZV9xc29ydF9yPSR7Z2xpYl9jdl9oYXZlX3Fzb3J0X3I9bm99Ci0KLSNkYnVzLWdsaWIKLWFjX2N2X2hhdmVfYWJzdHJhY3Rfc29ja2V0cz0ke2FjX2N2X2hhdmVfYWJzdHJhY3Rfc29ja2V0cz15ZXN9Ci0KLSMgYmFzaAotYmFzaF9jdl91bmRlcl9zeXNfc2lnbGlzdD0ke2Jhc2hfY3ZfdW5kZXJfc3lzX3NpZ2xpc3Q9bm99Ci1iYXNoX2N2X3N5c19zaWdsaXN0PSR7YmFzaF9jdl9zeXNfc2lnbGlzdD1ub30KLQotIyBjb3JldXRpbHMKLWZ1X2N2X3N5c19zdGF0X3N0YXRmczJfYnNpemU9JHtmdV9jdl9zeXNfc3RhdF9zdGF0ZnMyX2JzaXplPXllc30KLWdsX2N2X2Z1bmNfZ2V0dGltZW9mZGF5X2Nsb2JiZXI9JHtnbF9jdl9mdW5jX2dldHRpbWVvZmRheV9jbG9iYmVyPW5vfQotZ2xfY3ZfZnVuY190enNldF9jbG9iYmVyPSR7Z2xfY3ZfZnVuY190enNldF9jbG9iYmVyPW5vfQotZ2xfY3ZfZnVuY19nZXR0aW1lb2ZkYXlfcG9zaXhfc2lnbmF0dXJlPSR7Z2xfY3ZfZnVuY19nZXR0aW1lb2ZkYXlfcG9zaXhfc2lnbmF0dXJlPXllc30KLWFjX2N2X2Z1bmNfcG9zaXhfc3Bhd249JHthY19jdl9mdW5jX3Bvc2l4X3NwYXduPXllc30KLWFjX2N2X2Z1bmNfcG9zaXhfc3Bhd25fd29ya3M9JHthY19jdl9mdW5jX3Bvc2l4X3NwYXduX3dvcmtzPXllc30KLQotIyB2YV9jb3B5IGFuZCBfdmFfY29weQotYWNfY3ZfdmFfY29weT0ke2FjX2N2X3ZhX2NvcHk9eWVzfQotYWNfY3ZfX192YV9jb3B5PSR7YWNfY3ZfX192YV9jb3B5PXllc30KLWFjX2N2X2Z1bmNfdmFfY29weT0ke2FjX2N2X2Z1bmNfdmFfY29weT15ZXN9Ci1hY19jdl9mdW5jX19fdmFfY29weT0ke2FjX2N2X2Z1bmNfX192YV9jb3B5PXllc30KLQotIyBwb3NpeF9nZXRwd3VpZF9yIHBvc2l4X2dldGdyZ2lkX3IgcG9zaXhfZ2V0cHduYW1fcgotYWNfY3ZfZnVuY19wb3NpeF9nZXRwd3VpZF9yPSR7YWNfY3ZfZnVuY19wb3NpeF9nZXRwd3VpZF9yPXllc30KLWFjX2N2X2Z1bmNfcG9zaXhfZ2V0Z3JnaWRfcj0ke2FjX2N2X2Z1bmNfcG9zaXhfZ2V0Z3JnaWRfcj15ZXN9Ci1hY19jdl9mdW5jX3Bvc2l4X2dldHB3bmFtX3I9JHthY19jdl9mdW5jX3Bvc2l4X2dldHB3bmFtX3I9eWVzfQotCi0jIFhvcmcKLXhvcmdfY3ZfbWFsbG9jMF9yZXR1cm5zX251bGw9JHt4b3JnX2N2X21hbGxvYzBfcmV0dXJuc19udWxsPXllc30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvaXg4Ni1jb21tb24gYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL2l4ODYtY29tbW9uCmluZGV4IGY0Y2YwYjguLjRmYmY1OGMgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvaXg4Ni1jb21tb24KKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9peDg2LWNvbW1vbgpAQCAtMTksNyArMTksNiBAQAogYWNfY3Zfc2l6ZW9mX2Zsb2F0PSR7YWNfY3Zfc2l6ZW9mX2Zsb2F0PTR9CiBhY19jdl9zaXplb2ZfdWlkX3Q9JHthY19jdl9zaXplb2ZfdWlkX3Q9NH0KIGFjX2N2X3NpemVvZl9naWRfdD0ke2FjX2N2X3NpemVvZl9naWRfdD00fQotYWNfY3Zfc2l6ZW9mX2lub190PSR7YWNfY3Zfc2l6ZW9mX2lub190PTR9CiBhY19jdl9zaXplb2ZfZGV2X3Q9JHthY19jdl9zaXplb2ZfZGV2X3Q9OH0KIGFjX2N2X2Z1bmNfbHN0YXRfZGVyZWZlcmVuY2VzX3NsYXNoZWRfc3ltbGluaz0ke2FjX2N2X2Z1bmNfbHN0YXRfZGVyZWZlcmVuY2VzX3NsYXNoZWRfc3ltbGluaz15ZXN9CiBhY19jdl9mdW5jX2xzdGF0X2VtcHR5X3N0cmluZ19idWc9JHthY19jdl9mdW5jX2xzdGF0X2VtcHR5X3N0cmluZ19idWc9bm99CmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL21pcHMtbGludXgtdWNsaWJjIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9taXBzLWxpbnV4LXVjbGliYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjIzMzYzZS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL21pcHMtbGludXgtdWNsaWJjCisrKyAvZGV2L251bGwKQEAgLTEsODAgKzAsMCBAQAotIyBnZW5lcmFsCi1hY19jdl9mdW5jX3NldHZidWZfcmV2ZXJzZWQ9JHthY19jdl9mdW5jX3NldHZidWZfcmV2ZXJzZWQ9bm99Ci0KLSMgYmFzaAotYWNfY3ZfY19sb25nX2RvdWJsZT0ke2FjX2N2X2NfbG9uZ19kb3VibGU9bm99Ci1iYXNoX2N2X2Z1bmNfc2lnc2V0am1wPSR7YmFzaF9jdl9mdW5jX3NpZ3NldGptcD1wcmVzZW50fQotCi0jIG9wZW5zc2gKLWFjX2N2X2hhdmVfYWNjcmlnaHRzX2luX21zZ2hkcj0ke2FjX2N2X2hhdmVfYWNjcmlnaHRzX2luX21zZ2hkcj1ub30KLWFjX2N2X2hhdmVfYnJva2VuX3NucHJpbnRmPSR7YWNfY3ZfaGF2ZV9icm9rZW5fc25wcmludGY9bm99Ci1hY19jdl9oYXZlX2NvbnRyb2xfaW5fbXNnaGRyPSR7YWNfY3ZfaGF2ZV9jb250cm9sX2luX21zZ2hkcj15ZXN9Ci1hY19jdl9oYXZlX29wZW5wdHlfY3R0eV9idWc9JHthY19jdl9oYXZlX29wZW5wdHlfY3R0eV9idWc9bm99Ci1hY19jdl9oYXZlX3NwYWNlX2RfbmFtZV9pbl9zdHJ1Y3RfZGlyZW50PSR7YWNfY3ZfaGF2ZV9zcGFjZV9kX25hbWVfaW5fc3RydWN0X2RpcmVudD15ZXN9Ci0KLSMgZmdldAotY29tcGF0X2N2X2Z1bmNfc25wcmludGZfd29ya3M9JHtjb21wYXRfY3ZfZnVuY19zbnByaW50Zl93b3Jrcz15ZXN9Ci0KLSMgZ2xpYgotZ2xpYl9jdl9fX3ZhX2NvcHk9JHtnbGliX2N2X19fdmFfY29weT15ZXN9Ci1nbGliX2N2X2hhc19faW5saW5lPSR7Z2xpYl9jdl9oYXNfX2lubGluZT15ZXN9Ci1nbGliX2N2X2hhc19faW5saW5lX189JHtnbGliX2N2X2hhc19faW5saW5lX189eWVzfQotZ2xpYl9jdl9oYXNpbmxpbmU9JHtnbGliX2N2X2hhc2lubGluZT15ZXN9Ci1nbGliX2N2X2xvbmdfbG9uZ19mb3JtYXQ9JHtnbGliX2N2X2xvbmdfbG9uZ19mb3JtYXQ9bGx9Ci1nbGliX2N2X3J0bGRnbG9iYWxfYnJva2VuPSR7Z2xpYl9jdl9ydGxkZ2xvYmFsX2Jyb2tlbj1ub30KLWdsaWJfY3Zfc2FuZV9yZWFsbG9jPSR7Z2xpYl9jdl9zYW5lX3JlYWxsb2M9eWVzfQotZ2xpYl9jdl9zaXplb2ZfZ211dGV4PSR7Z2xpYl9jdl9zaXplb2ZfZ211dGV4PTI0fQotZ2xpYl9jdl9zaXplb2Zfc3lzdGVtX3RocmVhZD0ke2dsaWJfY3Zfc2l6ZW9mX3N5c3RlbV90aHJlYWQ9NH0KLWdsaWJfY3Zfc3RhY2tfZ3Jvd3M9JHtnbGliX2N2X3N0YWNrX2dyb3dzPW5vfQotZ2xpYl9jdl91c2NvcmU9JHtnbGliX2N2X3VzY29yZT1ub30KLQotIyBnbGliLTIuMAotZ2xpYl9jdl9zdGFja19ncm93cz0ke2dsaWJfY3Zfc3RhY2tfZ3Jvd3M9bm99Ci11dGlsc19jdl9zeXNfb3Blbl9tYXg9JHt1dGlsc19jdl9zeXNfb3Blbl9tYXg9MTAxNX0KLWdsaWJfY3ZfdXNlX3BpZF9zdXJyb2dhdGU9JHtnbGliX2N2X3VzZV9waWRfc3Vycm9nYXRlPXllc30KLQotIyBsaWJwY2FwCi1hY19jdl9saW51eF92ZXJzPSR7YWNfY3ZfbGludXhfdmVycz0yfQotCi0jIHN0YXJ0dXAtbm90aWZpY2F0aW9uCi1sZl9jdl9zYW5lX3JlYWxsb2M9JHtsZl9jdl9zYW5lX3JlYWxsb2M9eWVzfQotCi0jIGxpYmlkbAotbGliSURMX2N2X2xvbmdfbG9uZ19mb3JtYXQ9JHtsaWJJRExfY3ZfbG9uZ19sb25nX2Zvcm1hdD1sbH0KLQotIyBuY2Z0cAotd2lfY3Zfc3RydWN0X3RpbWV2YWxfdHZfc2VjPSR7d2lfY3Zfc3RydWN0X3RpbWV2YWxfdHZfc2VjPWxvbmd9Ci13aV9jdl9zdHJ1Y3RfdGltZXZhbF90dl91c2VjPSR7d2lfY3Zfc3RydWN0X3RpbWV2YWxfdHZfdXNlYz1sb25nfQotd2lfY3ZfdW5peF9kb21haW5fc29ja2V0cz0ke3dpX2N2X3VuaXhfZG9tYWluX3NvY2tldHM9eWVzfQotCi0jIGRiCi1kYl9jdl9hbGlnbl90PSR7ZGJfY3ZfYWxpZ25fdD0ndW5zaWduZWQgbG9uZyBsb25nJ30KLWRiX2N2X2FsaWducF90PSR7ZGJfY3ZfYWxpZ25wX3Q9J3Vuc2lnbmVkIGxvbmcnfQotZGJfY3ZfZmNudGxfZl9zZXRmZD0ke2RiX2N2X2ZjbnRsX2Zfc2V0ZmQ9eWVzfQotZGJfY3Zfc3ByaW50Zl9jb3VudD0ke2RiX2N2X3NwcmludGZfY291bnQ9eWVzfQotCi0jIHJyZHRvb2wKLXJkX2N2X2llZWVfd29ya3M9JHtyZF9jdl9pZWVlX3dvcmtzPXllc30KLSMgYWNfY3ZfcGF0aF9QRVJMPSR7YWNfY3ZfcGF0aF9QRVJMPW5vfQotCi0jIGdldHRleHQKLWFtX2N2X2Z1bmNfd29ya2luZ19nZXRsaW5lPSR7YW1fY3ZfZnVuY193b3JraW5nX2dldGxpbmU9eWVzfQotCi0jIHNhbWJhCi1zYW1iYV9jdl9IQVZFX0dFVFRJTUVPRkRBWV9UWj0ke3NhbWJhX2N2X0hBVkVfR0VUVElNRU9GREFZX1RaPXllc30KLQotIyB2aW0KLWFjX2N2X3NpemVvZl9pbnQ9JHthY19jdl9zaXplb2ZfaW50PTR9Ci0KLSMgaW50ZXJjb20KLWFjX2N2X2Z1bmNfZm5tYXRjaF93b3Jrcz0ke2FjX2N2X2Z1bmNfZm5tYXRjaF93b3Jrcz15ZXN9Ci0KLSMgbG1iZW5jaAotYWNfY3ZfdWludD0ke2FjX2N2X3VuaXQ9eWVzfQotCi0jIEQtQlVTCi1hY19jdl9mdW5jX3Bvc2l4X2dldHB3bmFtX3I9JHthY19jdl9mdW5jX3Bvc2l4X2dldHB3bmFtX3I9eWVzfQotCi0jIGV2b2x1dGlvbi1kYXRhLXNlcnZlcgotYWNfY3ZfbGliaWNvbnZfdXRmOD0ke2FjX2N2X2xpYmljb252X3V0Zjg9eWVzfQotCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL21pcHM2NC1saW51eC11Y2xpYmMgYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL21pcHM2NC1saW51eC11Y2xpYmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiYmE1NTIuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9taXBzNjQtbGludXgtdWNsaWJjCisrKyAvZGV2L251bGwKQEAgLTEsODMgKzAsMCBAQAotIyBnZW5lcmFsCi1hY19jdl9mdW5jX3NldHZidWZfcmV2ZXJzZWQ9JHthY19jdl9mdW5jX3NldHZidWZfcmV2ZXJzZWQ9bm99Ci0KLSMgYmFzaAotYWNfY3ZfY19sb25nX2RvdWJsZT0ke2FjX2N2X2NfbG9uZ19kb3VibGU9bm99Ci1iYXNoX2N2X2Z1bmNfc2lnc2V0am1wPSR7YmFzaF9jdl9mdW5jX3NpZ3NldGptcD1wcmVzZW50fQotCi0jIG9wZW5zc2gKLWFjX2N2X2hhdmVfYWNjcmlnaHRzX2luX21zZ2hkcj0ke2FjX2N2X2hhdmVfYWNjcmlnaHRzX2luX21zZ2hkcj1ub30KLWFjX2N2X2hhdmVfYnJva2VuX3NucHJpbnRmPSR7YWNfY3ZfaGF2ZV9icm9rZW5fc25wcmludGY9bm99Ci1hY19jdl9oYXZlX2NvbnRyb2xfaW5fbXNnaGRyPSR7YWNfY3ZfaGF2ZV9jb250cm9sX2luX21zZ2hkcj15ZXN9Ci1hY19jdl9oYXZlX29wZW5wdHlfY3R0eV9idWc9JHthY19jdl9oYXZlX29wZW5wdHlfY3R0eV9idWc9bm99Ci1hY19jdl9oYXZlX3NwYWNlX2RfbmFtZV9pbl9zdHJ1Y3RfZGlyZW50PSR7YWNfY3ZfaGF2ZV9zcGFjZV9kX25hbWVfaW5fc3RydWN0X2RpcmVudD15ZXN9Ci0KLSMgZmdldAotY29tcGF0X2N2X2Z1bmNfc25wcmludGZfd29ya3M9JHtjb21wYXRfY3ZfZnVuY19zbnByaW50Zl93b3Jrcz15ZXN9Ci0KLSMgZ2xpYgotZ2xpYl9jdl9fX3ZhX2NvcHk9JHtnbGliX2N2X19fdmFfY29weT15ZXN9Ci1nbGliX2N2X2hhc19faW5saW5lPSR7Z2xpYl9jdl9oYXNfX2lubGluZT15ZXN9Ci1nbGliX2N2X2hhc19faW5saW5lX189JHtnbGliX2N2X2hhc19faW5saW5lX189eWVzfQotZ2xpYl9jdl9oYXNpbmxpbmU9JHtnbGliX2N2X2hhc2lubGluZT15ZXN9Ci1nbGliX2N2X2xvbmdfbG9uZ19mb3JtYXQ9JHtnbGliX2N2X2xvbmdfbG9uZ19mb3JtYXQ9bGx9Ci1nbGliX2N2X3J0bGRnbG9iYWxfYnJva2VuPSR7Z2xpYl9jdl9ydGxkZ2xvYmFsX2Jyb2tlbj1ub30KLWdsaWJfY3Zfc2FuZV9yZWFsbG9jPSR7Z2xpYl9jdl9zYW5lX3JlYWxsb2M9eWVzfQotZ2xpYl9jdl9zaXplb2ZfZ211dGV4PSR7Z2xpYl9jdl9zaXplb2ZfZ211dGV4PTI0fQotZ2xpYl9jdl9zaXplb2Zfc3lzdGVtX3RocmVhZD0ke2dsaWJfY3Zfc2l6ZW9mX3N5c3RlbV90aHJlYWQ9NH0KLWdsaWJfY3Zfc3RhY2tfZ3Jvd3M9JHtnbGliX2N2X3N0YWNrX2dyb3dzPW5vfQotZ2xpYl9jdl91c2NvcmU9JHtnbGliX2N2X3VzY29yZT1ub30KLQotIyBnbGliLTIuMAotZ2xpYl9jdl9zdGFja19ncm93cz0ke2dsaWJfY3Zfc3RhY2tfZ3Jvd3M9bm99Ci11dGlsc19jdl9zeXNfb3Blbl9tYXg9JHt1dGlsc19jdl9zeXNfb3Blbl9tYXg9MTAxNX0KLWdsaWJfY3ZfdXNlX3BpZF9zdXJyb2dhdGU9JHtnbGliX2N2X3VzZV9waWRfc3Vycm9nYXRlPXllc30KLWFjX2N2X2FsaWdub2ZfZ3VpbnQzMj00Ci1hY19jdl9hbGlnbm9mX2d1aW50NjQ9OAotYWNfY3ZfYWxpZ25vZl91bnNpZ25lZF9sb25nPTgKLQotIyBsaWJwY2FwCi1hY19jdl9saW51eF92ZXJzPSR7YWNfY3ZfbGludXhfdmVycz0yfQotCi0jIHN0YXJ0dXAtbm90aWZpY2F0aW9uCi1sZl9jdl9zYW5lX3JlYWxsb2M9JHtsZl9jdl9zYW5lX3JlYWxsb2M9eWVzfQotCi0jIGxpYmlkbAotbGliSURMX2N2X2xvbmdfbG9uZ19mb3JtYXQ9JHtsaWJJRExfY3ZfbG9uZ19sb25nX2Zvcm1hdD1sbH0KLQotIyBuY2Z0cAotd2lfY3Zfc3RydWN0X3RpbWV2YWxfdHZfc2VjPSR7d2lfY3Zfc3RydWN0X3RpbWV2YWxfdHZfc2VjPWxvbmd9Ci13aV9jdl9zdHJ1Y3RfdGltZXZhbF90dl91c2VjPSR7d2lfY3Zfc3RydWN0X3RpbWV2YWxfdHZfdXNlYz1sb25nfQotd2lfY3ZfdW5peF9kb21haW5fc29ja2V0cz0ke3dpX2N2X3VuaXhfZG9tYWluX3NvY2tldHM9eWVzfQotCi0jIGRiCi1kYl9jdl9hbGlnbl90PSR7ZGJfY3ZfYWxpZ25fdD0ndW5zaWduZWQgbG9uZyBsb25nJ30KLWRiX2N2X2FsaWducF90PSR7ZGJfY3ZfYWxpZ25wX3Q9J3Vuc2lnbmVkIGxvbmcnfQotZGJfY3ZfZmNudGxfZl9zZXRmZD0ke2RiX2N2X2ZjbnRsX2Zfc2V0ZmQ9eWVzfQotZGJfY3Zfc3ByaW50Zl9jb3VudD0ke2RiX2N2X3NwcmludGZfY291bnQ9eWVzfQotCi0jIHJyZHRvb2wKLXJkX2N2X2llZWVfd29ya3M9JHtyZF9jdl9pZWVlX3dvcmtzPXllc30KLSMgYWNfY3ZfcGF0aF9QRVJMPSR7YWNfY3ZfcGF0aF9QRVJMPW5vfQotCi0jIGdldHRleHQKLWFtX2N2X2Z1bmNfd29ya2luZ19nZXRsaW5lPSR7YW1fY3ZfZnVuY193b3JraW5nX2dldGxpbmU9eWVzfQotCi0jIHNhbWJhCi1zYW1iYV9jdl9IQVZFX0dFVFRJTUVPRkRBWV9UWj0ke3NhbWJhX2N2X0hBVkVfR0VUVElNRU9GREFZX1RaPXllc30KLQotIyB2aW0KLWFjX2N2X3NpemVvZl9pbnQ9JHthY19jdl9zaXplb2ZfaW50PTR9Ci0KLSMgaW50ZXJjb20KLWFjX2N2X2Z1bmNfZm5tYXRjaF93b3Jrcz0ke2FjX2N2X2Z1bmNfZm5tYXRjaF93b3Jrcz15ZXN9Ci0KLSMgbG1iZW5jaAotYWNfY3ZfdWludD0ke2FjX2N2X3VuaXQ9eWVzfQotCi0jIEQtQlVTCi1hY19jdl9mdW5jX3Bvc2l4X2dldHB3bmFtX3I9JHthY19jdl9mdW5jX3Bvc2l4X2dldHB3bmFtX3I9eWVzfQotCi0jIGVkcy1kYnVzCi1hY19jdl9saWJpY29udl91dGY4PSR7YWNfY3ZfbGliaWNvbnZfdXRmOD15ZXN9Ci0KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvbWlwczY0ZWwtbGludXgtdWNsaWJjIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9taXBzNjRlbC1saW51eC11Y2xpYmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhMDQ5OWQuLjAwMDAwMDAKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9taXBzNjRlbC1saW51eC11Y2xpYmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMDggKzAsMCBAQAotIyBnZW5lcmFsCi1hY19jdl9mdW5jX3NldHZidWZfcmV2ZXJzZWQ9JHthY19jdl9mdW5jX3NldHZidWZfcmV2ZXJzZWQ9bm99Ci0KLSMgYmFzaAotYWNfY3ZfY19sb25nX2RvdWJsZT0ke2FjX2N2X2NfbG9uZ19kb3VibGU9bm99Ci1iYXNoX2N2X2Z1bmNfc2lnc2V0am1wPSR7YmFzaF9jdl9mdW5jX3NpZ3NldGptcD1wcmVzZW50fQotCi0jIG9wZW5zc2gKLWFjX2N2X2hhdmVfYWNjcmlnaHRzX2luX21zZ2hkcj0ke2FjX2N2X2hhdmVfYWNjcmlnaHRzX2luX21zZ2hkcj1ub30KLWFjX2N2X2hhdmVfYnJva2VuX3NucHJpbnRmPSR7YWNfY3ZfaGF2ZV9icm9rZW5fc25wcmludGY9bm99Ci1hY19jdl9oYXZlX2NvbnRyb2xfaW5fbXNnaGRyPSR7YWNfY3ZfaGF2ZV9jb250cm9sX2luX21zZ2hkcj15ZXN9Ci1hY19jdl9oYXZlX29wZW5wdHlfY3R0eV9idWc9JHthY19jdl9oYXZlX29wZW5wdHlfY3R0eV9idWc9bm99Ci1hY19jdl9oYXZlX3NwYWNlX2RfbmFtZV9pbl9zdHJ1Y3RfZGlyZW50PSR7YWNfY3ZfaGF2ZV9zcGFjZV9kX25hbWVfaW5fc3RydWN0X2RpcmVudD15ZXN9Ci0KLSMgZmdldAotY29tcGF0X2N2X2Z1bmNfc25wcmludGZfd29ya3M9JHtjb21wYXRfY3ZfZnVuY19zbnByaW50Zl93b3Jrcz15ZXN9Ci0KLSMgZ2xpYgotZ2xpYl9jdl9fX3ZhX2NvcHk9JHtnbGliX2N2X19fdmFfY29weT15ZXN9Ci1nbGliX2N2X2hhc19faW5saW5lPSR7Z2xpYl9jdl9oYXNfX2lubGluZT15ZXN9Ci1nbGliX2N2X2hhc19faW5saW5lX189JHtnbGliX2N2X2hhc19faW5saW5lX189eWVzfQotZ2xpYl9jdl9oYXNpbmxpbmU9JHtnbGliX2N2X2hhc2lubGluZT15ZXN9Ci1nbGliX2N2X2xvbmdfbG9uZ19mb3JtYXQ9JHtnbGliX2N2X2xvbmdfbG9uZ19mb3JtYXQ9bGx9Ci1nbGliX2N2X3J0bGRnbG9iYWxfYnJva2VuPSR7Z2xpYl9jdl9ydGxkZ2xvYmFsX2Jyb2tlbj1ub30KLWdsaWJfY3Zfc2FuZV9yZWFsbG9jPSR7Z2xpYl9jdl9zYW5lX3JlYWxsb2M9eWVzfQotZ2xpYl9jdl9zaXplb2ZfZ211dGV4PSR7Z2xpYl9jdl9zaXplb2ZfZ211dGV4PTI0fQotZ2xpYl9jdl9zaXplb2Zfc3lzdGVtX3RocmVhZD0ke2dsaWJfY3Zfc2l6ZW9mX3N5c3RlbV90aHJlYWQ9NH0KLWdsaWJfY3Zfc3RhY2tfZ3Jvd3M9JHtnbGliX2N2X3N0YWNrX2dyb3dzPW5vfQotZ2xpYl9jdl91c2NvcmU9JHtnbGliX2N2X3VzY29yZT1ub30KLQotIyBnbGliLTIuMAotZ2xpYl9jdl9zdGFja19ncm93cz0ke2dsaWJfY3Zfc3RhY2tfZ3Jvd3M9bm99Ci11dGlsc19jdl9zeXNfb3Blbl9tYXg9JHt1dGlsc19jdl9zeXNfb3Blbl9tYXg9MTAxNX0KLWdsaWJfY3ZfdXNlX3BpZF9zdXJyb2dhdGU9JHtnbGliX2N2X3VzZV9waWRfc3Vycm9nYXRlPXllc30KLWFjX2N2X2FsaWdub2ZfZ3VpbnQzMj00Ci1hY19jdl9hbGlnbm9mX2d1aW50NjQ9OAotYWNfY3ZfYWxpZ25vZl91bnNpZ25lZF9sb25nPTgKLQotIyBsaWJwY2FwCi1hY19jdl9saW51eF92ZXJzPSR7YWNfY3ZfbGludXhfdmVycz0yfQotCi0jIHN0YXJ0dXAtbm90aWZpY2F0aW9uCi1sZl9jdl9zYW5lX3JlYWxsb2M9JHtsZl9jdl9zYW5lX3JlYWxsb2M9eWVzfQotCi0jIGxpYmlkbAotbGliSURMX2N2X2xvbmdfbG9uZ19mb3JtYXQ9JHtsaWJJRExfY3ZfbG9uZ19sb25nX2Zvcm1hdD1sbH0KLQotIyBuY2Z0cAotd2lfY3Zfc3RydWN0X3RpbWV2YWxfdHZfc2VjPSR7d2lfY3Zfc3RydWN0X3RpbWV2YWxfdHZfc2VjPWxvbmd9Ci13aV9jdl9zdHJ1Y3RfdGltZXZhbF90dl91c2VjPSR7d2lfY3Zfc3RydWN0X3RpbWV2YWxfdHZfdXNlYz1sb25nfQotd2lfY3ZfdW5peF9kb21haW5fc29ja2V0cz0ke3dpX2N2X3VuaXhfZG9tYWluX3NvY2tldHM9eWVzfQotCi0jIGdldHRleHQKLWFtX2N2X2Z1bmNfd29ya2luZ19nZXRsaW5lPSR7YW1fY3ZfZnVuY193b3JraW5nX2dldGxpbmU9eWVzfQotCi0jIHNhbWJhCi0jIGZyb20gc2FtYmEgMy4wLjE0YSBvbiA1LzI5LzIwMDUKLWFjX2N2X2Z1bmNfbWVtY21wX3dvcmtpbmc9JHthY19jdl9mdW5jX21lbWNtcF93b3JraW5nPXllc30KLWFjX2N2X2hhdmVfYXNwcmludGZfZGVjbD0ke2FjX2N2X2hhdmVfYXNwcmludGZfZGVjbD15ZXN9Ci1hY19jdl9oYXZlX3NldHJlc2dpZF9kZWNsPSR7YWNfY3ZfaGF2ZV9zZXRyZXNnaWRfZGVjbD15ZXN9Ci1hY19jdl9oYXZlX3NldHJlc3VpZF9kZWNsPSR7YWNfY3ZfaGF2ZV9zZXRyZXN1aWRfZGVjbD15ZXN9Ci1hY19jdl9oYXZlX3Zhc3ByaW50Zl9kZWNsPSR7YWNfY3ZfaGF2ZV92YXNwcmludGZfZGVjbD15ZXN9Ci1mdV9jdl9zeXNfc3RhdF9zdGF0dmZzNjQ9JHtmdV9jdl9zeXNfc3RhdF9zdGF0dmZzNjQ9eWVzfQotc2FtYmFfY3ZfRlRSVU5DQVRFX05FRURTX1JPT1Q9JHtzYW1iYV9jdl9GVFJVTkNBVEVfTkVFRFNfUk9PVD1ub30KLXNhbWJhX2N2X0hBVkVfQlJPS0VOX0ZDTlRMNjRfTE9DS1M9JHtzYW1iYV9jdl9IQVZFX0JST0tFTl9GQ05UTDY0X0xPQ0tTPW5vfQotc2FtYmFfY3ZfSEFWRV9CUk9LRU5fR0VUR1JPVVBTPSR7c2FtYmFfY3ZfSEFWRV9CUk9LRU5fR0VUR1JPVVBTPW5vfQotc2FtYmFfY3ZfSEFWRV9CUk9LRU5fUkVBRERJUj0ke3NhbWJhX2N2X0hBVkVfQlJPS0VOX1JFQURESVI9bm99Ci1zYW1iYV9jdl9IQVZFX0M5OV9WU05QUklOVEY9JHtzYW1iYV9jdl9IQVZFX0M5OV9WU05QUklOVEY9eWVzfQotc2FtYmFfY3ZfSEFWRV9ERVY2NF9UPSR7c2FtYmFfY3ZfSEFWRV9ERVY2NF9UPW5vfQotc2FtYmFfY3ZfSEFWRV9ERVZJQ0VfTUFKT1JfRk49JHtzYW1iYV9jdl9IQVZFX0RFVklDRV9NQUpPUl9GTj15ZXN9Ci1zYW1iYV9jdl9IQVZFX0RFVklDRV9NSU5PUl9GTj0ke3NhbWJhX2N2X0hBVkVfREVWSUNFX01JTk9SX0ZOPXllc30KLXNhbWJhX2N2X0hBVkVfRVhQTElDSVRfTEFSR0VGSUxFX1NVUFBPUlQ9JHtzYW1iYV9jdl9IQVZFX0VYUExJQ0lUX0xBUkdFRklMRV9TVVBQT1JUPXllc30KLXNhbWJhX2N2X0hBVkVfRkNOVExfTE9DSz0ke3NhbWJhX2N2X0hBVkVfRkNOVExfTE9DSz15ZXN9Ci1zYW1iYV9jdl9IQVZFX0ZUUlVOQ0FURV9FWFRFTkQ9JHtzYW1iYV9jdl9IQVZFX0ZUUlVOQ0FURV9FWFRFTkQ9eWVzfQotc2FtYmFfY3ZfSEFWRV9HRVRUSU1FT0ZEQVlfVFo9JHtzYW1iYV9jdl9IQVZFX0dFVFRJTUVPRkRBWV9UWj15ZXN9Ci1zYW1iYV9jdl9IQVZFX0lOTzY0X1Q9JHtzYW1iYV9jdl9IQVZFX0lOTzY0X1Q9bm99Ci1zYW1iYV9jdl9IQVZFX0tFUk5FTF9DSEFOR0VfTk9USUZZPSR7c2FtYmFfY3ZfSEFWRV9LRVJORUxfQ0hBTkdFX05PVElGWT15ZXN9Ci1zYW1iYV9jdl9IQVZFX0tFUk5FTF9PUExPQ0tTX0xJTlVYPSR7c2FtYmFfY3ZfSEFWRV9LRVJORUxfT1BMT0NLU19MSU5VWD15ZXN9Ci1zYW1iYV9jdl9IQVZFX0tFUk5FTF9TSEFSRV9NT0RFUz0ke3NhbWJhX2N2X0hBVkVfS0VSTkVMX1NIQVJFX01PREVTPXllc30KLXNhbWJhX2N2X0hBVkVfTUFLRURFVj0ke3NhbWJhX2N2X0hBVkVfTUFLRURFVj15ZXN9Ci1zYW1iYV9jdl9IQVZFX01NQVA9JHtzYW1iYV9jdl9IQVZFX01NQVA9eWVzfQotc2FtYmFfY3ZfSEFWRV9PRkY2NF9UPSR7c2FtYmFfY3ZfSEFWRV9PRkY2NF9UPW5vfQotc2FtYmFfY3ZfSEFWRV9RVU9UQUNUTF80QT0ke3NhbWJhX2N2X0hBVkVfUVVPVEFDVExfNEE9eWVzfQotc2FtYmFfY3ZfSEFWRV9ST09UPSR7c2FtYmFfY3ZfSEFWRV9ST09UPW5vfQotc2FtYmFfY3ZfSEFWRV9TRUNVUkVfTUtTVEVNUD0ke3NhbWJhX2N2X0hBVkVfU0VDVVJFX01LU1RFTVA9eWVzfQotc2FtYmFfY3ZfSEFWRV9TRU5ERklMRTY0PSR7c2FtYmFfY3ZfSEFWRV9TRU5ERklMRTY0PXllc30KLXNhbWJhX2N2X0hBVkVfU1RSVUNUX0RJUkVOVDY0PSR7c2FtYmFfY3ZfSEFWRV9TVFJVQ1RfRElSRU5UNjQ9eWVzfQotc2FtYmFfY3ZfSEFWRV9TVFJVQ1RfRkxPQ0s2ND0ke3NhbWJhX2N2X0hBVkVfU1RSVUNUX0ZMT0NLNjQ9eWVzfQotc2FtYmFfY3ZfSEFWRV9UUlVOQ0FURURfU0FMVD0ke3NhbWJhX2N2X0hBVkVfVFJVTkNBVEVEX1NBTFQ9bm99Ci1zYW1iYV9jdl9IQVZFX1VOU0lHTkVEX0NIQVI9JHtzYW1iYV9jdl9IQVZFX1VOU0lHTkVEX0NIQVI9bm99Ci1zYW1iYV9jdl9IQVZFX1dPUktJTkdfQUZfTE9DQUw9JHtzYW1iYV9jdl9IQVZFX1dPUktJTkdfQUZfTE9DQUw9bm99Ci1zYW1iYV9jdl9IQVZFX1dlcnJvcj0ke3NhbWJhX2N2X0hBVkVfV2Vycm9yPXllc30KLXNhbWJhX2N2X1JFQUxQQVRIX1RBS0VTX05VTEw9JHtzYW1iYV9jdl9SRUFMUEFUSF9UQUtFU19OVUxMPW5vfQotc2FtYmFfY3ZfUkVQTEFDRV9JTkVUX05UT0E9JHtzYW1iYV9jdl9SRVBMQUNFX0lORVRfTlRPQT1ub30KLXNhbWJhX2N2X1NJWkVPRl9JTk9fVD0ke3NhbWJhX2N2X1NJWkVPRl9JTk9fVD15ZXN9Ci1zYW1iYV9jdl9TSVpFT0ZfT0ZGX1Q9JHtzYW1iYV9jdl9TSVpFT0ZfT0ZGX1Q9eWVzfQotc2FtYmFfY3ZfU1lTQ09ORl9TQ19OR1JPVVBTX01BWD0ke3NhbWJhX2N2X1NZU0NPTkZfU0NfTkdST1VQU19NQVg9eWVzfQotc2FtYmFfY3ZfU1lTQ09ORl9TQ19OUFJPQ19PTkxOPSR7c2FtYmFfY3ZfU1lTQ09ORl9TQ19OUFJPQ19PTkxOPW5vfQotc2FtYmFfY3ZfU1lTUVVPVEFfRk9VTkQ9JHtzYW1iYV9jdl9TWVNRVU9UQV9GT1VORD15ZXN9Ci1zYW1iYV9jdl9TWVNRVU9UQV9XT1JLUz0ke3NhbWJhX2N2X1NZU1FVT1RBX1dPUktTPXllc30KLXNhbWJhX2N2X1VTRV9TRVRSRVNVSUQ9JHtzYW1iYV9jdl9VU0VfU0VUUkVTVUlEPXllc30KLXNhbWJhX2N2X2hhdmVfbG9uZ2xvbmc9JHtzYW1iYV9jdl9oYXZlX2xvbmdsb25nPXllc30KLXNhbWJhX2N2X2hhdmVfc2V0cmVzZ2lkPSR7c2FtYmFfY3ZfaGF2ZV9zZXRyZXNnaWQ9eWVzfQotc2FtYmFfY3ZfaGF2ZV9zZXRyZXN1aWQ9JHtzYW1iYV9jdl9oYXZlX3NldHJlc3VpZD15ZXN9Ci1zYW1iYV9jdl9zeXNxdW90YXNfZmlsZT0ke3NhbWJhX2N2X3N5c3F1b3Rhc19maWxlPWxpYi9zeXNxdW90YXNfNEEuY30KLSMgVGhpcyBjYWNoZWQgdmFsdWUgbmVlZHMgYSBsb2NhbCBwYXRjaCB0byBwaWNrIGl0IHVwLCB1cHN0cmVhbSAzLjAuMTRhCi0jIGRvZXNuJ3QgY2FjaGUgaXQuCi1zYW1iYV9jdl9MSU5VWF9MRlNfU1VQUE9SVD0ke3NhbWJhX2N2X0xJTlVYX0xGU19TVVBQT1JUPXllc30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvbWlwc2VsLWxpbnV4LXVjbGliYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvbWlwc2VsLWxpbnV4LXVjbGliYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjkyMWNkYS4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL21pcHNlbC1saW51eC11Y2xpYmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBAQAotIyBnZW5lcmFsCi1hY19jdl9mdW5jX3NldHZidWZfcmV2ZXJzZWQ9JHthY19jdl9mdW5jX3NldHZidWZfcmV2ZXJzZWQ9bm99Ci0KLSMgYmFzaAotYWNfY3ZfY19sb25nX2RvdWJsZT0ke2FjX2N2X2NfbG9uZ19kb3VibGU9bm99Ci1iYXNoX2N2X2Z1bmNfc2lnc2V0am1wPSR7YmFzaF9jdl9mdW5jX3NpZ3NldGptcD1wcmVzZW50fQotCi0jIG9wZW5zc2gKLWFjX2N2X2hhdmVfYWNjcmlnaHRzX2luX21zZ2hkcj0ke2FjX2N2X2hhdmVfYWNjcmlnaHRzX2luX21zZ2hkcj1ub30KLWFjX2N2X2hhdmVfYnJva2VuX3NucHJpbnRmPSR7YWNfY3ZfaGF2ZV9icm9rZW5fc25wcmludGY9bm99Ci1hY19jdl9oYXZlX2NvbnRyb2xfaW5fbXNnaGRyPSR7YWNfY3ZfaGF2ZV9jb250cm9sX2luX21zZ2hkcj15ZXN9Ci1hY19jdl9oYXZlX29wZW5wdHlfY3R0eV9idWc9JHthY19jdl9oYXZlX29wZW5wdHlfY3R0eV9idWc9bm99Ci1hY19jdl9oYXZlX3NwYWNlX2RfbmFtZV9pbl9zdHJ1Y3RfZGlyZW50PSR7YWNfY3ZfaGF2ZV9zcGFjZV9kX25hbWVfaW5fc3RydWN0X2RpcmVudD15ZXN9Ci0KLSMgZmdldAotY29tcGF0X2N2X2Z1bmNfc25wcmludGZfd29ya3M9JHtjb21wYXRfY3ZfZnVuY19zbnByaW50Zl93b3Jrcz15ZXN9Ci0KLSMgZ2xpYgotZ2xpYl9jdl9fX3ZhX2NvcHk9JHtnbGliX2N2X19fdmFfY29weT15ZXN9Ci1nbGliX2N2X2hhc19faW5saW5lPSR7Z2xpYl9jdl9oYXNfX2lubGluZT15ZXN9Ci1nbGliX2N2X2hhc19faW5saW5lX189JHtnbGliX2N2X2hhc19faW5saW5lX189eWVzfQotZ2xpYl9jdl9oYXNpbmxpbmU9JHtnbGliX2N2X2hhc2lubGluZT15ZXN9Ci1nbGliX2N2X2xvbmdfbG9uZ19mb3JtYXQ9JHtnbGliX2N2X2xvbmdfbG9uZ19mb3JtYXQ9bGx9Ci1nbGliX2N2X3J0bGRnbG9iYWxfYnJva2VuPSR7Z2xpYl9jdl9ydGxkZ2xvYmFsX2Jyb2tlbj1ub30KLWdsaWJfY3Zfc2FuZV9yZWFsbG9jPSR7Z2xpYl9jdl9zYW5lX3JlYWxsb2M9eWVzfQotZ2xpYl9jdl9zaXplb2ZfZ211dGV4PSR7Z2xpYl9jdl9zaXplb2ZfZ211dGV4PTI0fQotZ2xpYl9jdl9zaXplb2Zfc3lzdGVtX3RocmVhZD0ke2dsaWJfY3Zfc2l6ZW9mX3N5c3RlbV90aHJlYWQ9NH0KLWdsaWJfY3Zfc3RhY2tfZ3Jvd3M9JHtnbGliX2N2X3N0YWNrX2dyb3dzPW5vfQotZ2xpYl9jdl91c2NvcmU9JHtnbGliX2N2X3VzY29yZT1ub30KLQotIyBsaWJwY2FwCi1hY19jdl9saW51eF92ZXJzPSR7YWNfY3ZfbGludXhfdmVycz0yfQotCi0jIHN0YXJ0dXAtbm90aWZpY2F0aW9uCi1sZl9jdl9zYW5lX3JlYWxsb2M9JHtsZl9jdl9zYW5lX3JlYWxsb2M9eWVzfQotCi0jIGxpYmlkbAotbGliSURMX2N2X2xvbmdfbG9uZ19mb3JtYXQ9JHtsaWJJRExfY3ZfbG9uZ19sb25nX2Zvcm1hdD1sbH0KLQotIyBuY2Z0cAotd2lfY3Zfc3RydWN0X3RpbWV2YWxfdHZfc2VjPSR7d2lfY3Zfc3RydWN0X3RpbWV2YWxfdHZfc2VjPWxvbmd9Ci13aV9jdl9zdHJ1Y3RfdGltZXZhbF90dl91c2VjPSR7d2lfY3Zfc3RydWN0X3RpbWV2YWxfdHZfdXNlYz1sb25nfQotd2lfY3ZfdW5peF9kb21haW5fc29ja2V0cz0ke3dpX2N2X3VuaXhfZG9tYWluX3NvY2tldHM9eWVzfQotCi0jIGdldHRleHQKLWFtX2N2X2Z1bmNfd29ya2luZ19nZXRsaW5lPSR7YW1fY3ZfZnVuY193b3JraW5nX2dldGxpbmU9eWVzfQotCi0jIHNhbWJhCi0jIGZyb20gc2FtYmEgMy4wLjE0YSBvbiA1LzI5LzIwMDUKLWFjX2N2X2Z1bmNfbWVtY21wX3dvcmtpbmc9JHthY19jdl9mdW5jX21lbWNtcF93b3JraW5nPXllc30KLWFjX2N2X2hhdmVfYXNwcmludGZfZGVjbD0ke2FjX2N2X2hhdmVfYXNwcmludGZfZGVjbD15ZXN9Ci1hY19jdl9oYXZlX3NldHJlc2dpZF9kZWNsPSR7YWNfY3ZfaGF2ZV9zZXRyZXNnaWRfZGVjbD15ZXN9Ci1hY19jdl9oYXZlX3NldHJlc3VpZF9kZWNsPSR7YWNfY3ZfaGF2ZV9zZXRyZXN1aWRfZGVjbD15ZXN9Ci1hY19jdl9oYXZlX3Zhc3ByaW50Zl9kZWNsPSR7YWNfY3ZfaGF2ZV92YXNwcmludGZfZGVjbD15ZXN9Ci1mdV9jdl9zeXNfc3RhdF9zdGF0dmZzNjQ9JHtmdV9jdl9zeXNfc3RhdF9zdGF0dmZzNjQ9eWVzfQotc2FtYmFfY3ZfRlRSVU5DQVRFX05FRURTX1JPT1Q9JHtzYW1iYV9jdl9GVFJVTkNBVEVfTkVFRFNfUk9PVD1ub30KLXNhbWJhX2N2X0hBVkVfQlJPS0VOX0ZDTlRMNjRfTE9DS1M9JHtzYW1iYV9jdl9IQVZFX0JST0tFTl9GQ05UTDY0X0xPQ0tTPW5vfQotc2FtYmFfY3ZfSEFWRV9CUk9LRU5fR0VUR1JPVVBTPSR7c2FtYmFfY3ZfSEFWRV9CUk9LRU5fR0VUR1JPVVBTPW5vfQotc2FtYmFfY3ZfSEFWRV9CUk9LRU5fUkVBRERJUj0ke3NhbWJhX2N2X0hBVkVfQlJPS0VOX1JFQURESVI9bm99Ci1zYW1iYV9jdl9IQVZFX0M5OV9WU05QUklOVEY9JHtzYW1iYV9jdl9IQVZFX0M5OV9WU05QUklOVEY9eWVzfQotc2FtYmFfY3ZfSEFWRV9ERVY2NF9UPSR7c2FtYmFfY3ZfSEFWRV9ERVY2NF9UPW5vfQotc2FtYmFfY3ZfSEFWRV9ERVZJQ0VfTUFKT1JfRk49JHtzYW1iYV9jdl9IQVZFX0RFVklDRV9NQUpPUl9GTj15ZXN9Ci1zYW1iYV9jdl9IQVZFX0RFVklDRV9NSU5PUl9GTj0ke3NhbWJhX2N2X0hBVkVfREVWSUNFX01JTk9SX0ZOPXllc30KLXNhbWJhX2N2X0hBVkVfRVhQTElDSVRfTEFSR0VGSUxFX1NVUFBPUlQ9JHtzYW1iYV9jdl9IQVZFX0VYUExJQ0lUX0xBUkdFRklMRV9TVVBQT1JUPXllc30KLXNhbWJhX2N2X0hBVkVfRkNOVExfTE9DSz0ke3NhbWJhX2N2X0hBVkVfRkNOVExfTE9DSz15ZXN9Ci1zYW1iYV9jdl9IQVZFX0ZUUlVOQ0FURV9FWFRFTkQ9JHtzYW1iYV9jdl9IQVZFX0ZUUlVOQ0FURV9FWFRFTkQ9eWVzfQotc2FtYmFfY3ZfSEFWRV9HRVRUSU1FT0ZEQVlfVFo9JHtzYW1iYV9jdl9IQVZFX0dFVFRJTUVPRkRBWV9UWj15ZXN9Ci1zYW1iYV9jdl9IQVZFX0lOTzY0X1Q9JHtzYW1iYV9jdl9IQVZFX0lOTzY0X1Q9bm99Ci1zYW1iYV9jdl9IQVZFX0tFUk5FTF9DSEFOR0VfTk9USUZZPSR7c2FtYmFfY3ZfSEFWRV9LRVJORUxfQ0hBTkdFX05PVElGWT15ZXN9Ci1zYW1iYV9jdl9IQVZFX0tFUk5FTF9PUExPQ0tTX0xJTlVYPSR7c2FtYmFfY3ZfSEFWRV9LRVJORUxfT1BMT0NLU19MSU5VWD15ZXN9Ci1zYW1iYV9jdl9IQVZFX0tFUk5FTF9TSEFSRV9NT0RFUz0ke3NhbWJhX2N2X0hBVkVfS0VSTkVMX1NIQVJFX01PREVTPXllc30KLXNhbWJhX2N2X0hBVkVfTUFLRURFVj0ke3NhbWJhX2N2X0hBVkVfTUFLRURFVj15ZXN9Ci1zYW1iYV9jdl9IQVZFX01NQVA9JHtzYW1iYV9jdl9IQVZFX01NQVA9eWVzfQotc2FtYmFfY3ZfSEFWRV9PRkY2NF9UPSR7c2FtYmFfY3ZfSEFWRV9PRkY2NF9UPW5vfQotc2FtYmFfY3ZfSEFWRV9RVU9UQUNUTF80QT0ke3NhbWJhX2N2X0hBVkVfUVVPVEFDVExfNEE9eWVzfQotc2FtYmFfY3ZfSEFWRV9ST09UPSR7c2FtYmFfY3ZfSEFWRV9ST09UPW5vfQotc2FtYmFfY3ZfSEFWRV9TRUNVUkVfTUtTVEVNUD0ke3NhbWJhX2N2X0hBVkVfU0VDVVJFX01LU1RFTVA9eWVzfQotc2FtYmFfY3ZfSEFWRV9TRU5ERklMRTY0PSR7c2FtYmFfY3ZfSEFWRV9TRU5ERklMRTY0PXllc30KLXNhbWJhX2N2X0hBVkVfU1RSVUNUX0RJUkVOVDY0PSR7c2FtYmFfY3ZfSEFWRV9TVFJVQ1RfRElSRU5UNjQ9eWVzfQotc2FtYmFfY3ZfSEFWRV9TVFJVQ1RfRkxPQ0s2ND0ke3NhbWJhX2N2X0hBVkVfU1RSVUNUX0ZMT0NLNjQ9eWVzfQotc2FtYmFfY3ZfSEFWRV9UUlVOQ0FURURfU0FMVD0ke3NhbWJhX2N2X0hBVkVfVFJVTkNBVEVEX1NBTFQ9bm99Ci1zYW1iYV9jdl9IQVZFX1VOU0lHTkVEX0NIQVI9JHtzYW1iYV9jdl9IQVZFX1VOU0lHTkVEX0NIQVI9bm99Ci1zYW1iYV9jdl9IQVZFX1dPUktJTkdfQUZfTE9DQUw9JHtzYW1iYV9jdl9IQVZFX1dPUktJTkdfQUZfTE9DQUw9bm99Ci1zYW1iYV9jdl9IQVZFX1dlcnJvcj0ke3NhbWJhX2N2X0hBVkVfV2Vycm9yPXllc30KLXNhbWJhX2N2X1JFQUxQQVRIX1RBS0VTX05VTEw9JHtzYW1iYV9jdl9SRUFMUEFUSF9UQUtFU19OVUxMPW5vfQotc2FtYmFfY3ZfUkVQTEFDRV9JTkVUX05UT0E9JHtzYW1iYV9jdl9SRVBMQUNFX0lORVRfTlRPQT1ub30KLXNhbWJhX2N2X1NJWkVPRl9JTk9fVD0ke3NhbWJhX2N2X1NJWkVPRl9JTk9fVD15ZXN9Ci1zYW1iYV9jdl9TSVpFT0ZfT0ZGX1Q9JHtzYW1iYV9jdl9TSVpFT0ZfT0ZGX1Q9eWVzfQotc2FtYmFfY3ZfU1lTQ09ORl9TQ19OR1JPVVBTX01BWD0ke3NhbWJhX2N2X1NZU0NPTkZfU0NfTkdST1VQU19NQVg9eWVzfQotc2FtYmFfY3ZfU1lTQ09ORl9TQ19OUFJPQ19PTkxOPSR7c2FtYmFfY3ZfU1lTQ09ORl9TQ19OUFJPQ19PTkxOPW5vfQotc2FtYmFfY3ZfU1lTUVVPVEFfRk9VTkQ9JHtzYW1iYV9jdl9TWVNRVU9UQV9GT1VORD15ZXN9Ci1zYW1iYV9jdl9TWVNRVU9UQV9XT1JLUz0ke3NhbWJhX2N2X1NZU1FVT1RBX1dPUktTPXllc30KLXNhbWJhX2N2X1VTRV9TRVRSRVNVSUQ9JHtzYW1iYV9jdl9VU0VfU0VUUkVTVUlEPXllc30KLXNhbWJhX2N2X2hhdmVfbG9uZ2xvbmc9JHtzYW1iYV9jdl9oYXZlX2xvbmdsb25nPXllc30KLXNhbWJhX2N2X2hhdmVfc2V0cmVzZ2lkPSR7c2FtYmFfY3ZfaGF2ZV9zZXRyZXNnaWQ9eWVzfQotc2FtYmFfY3ZfaGF2ZV9zZXRyZXN1aWQ9JHtzYW1iYV9jdl9oYXZlX3NldHJlc3VpZD15ZXN9Ci1zYW1iYV9jdl9zeXNxdW90YXNfZmlsZT0ke3NhbWJhX2N2X3N5c3F1b3Rhc19maWxlPWxpYi9zeXNxdW90YXNfNEEuY30KLSMgVGhpcyBjYWNoZWQgdmFsdWUgbmVlZHMgYSBsb2NhbCBwYXRjaCB0byBwaWNrIGl0IHVwLCB1cHN0cmVhbSAzLjAuMTRhCi0jIGRvZXNuJ3QgY2FjaGUgaXQuCi1zYW1iYV9jdl9MSU5VWF9MRlNfU1VQUE9SVD0ke3NhbWJhX2N2X0xJTlVYX0xGU19TVVBQT1JUPXllc30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvbmlvczItbGludXggYi9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL25pb3MyLWxpbnV4CmluZGV4IDJmNGU1NzAuLjViYWU3NDggMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUvbmlvczItbGludXgKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS9uaW9zMi1saW51eApAQCAtMzMsNyArMzMsNiBAQAogZGJfY3ZfcGF0aF9zdHJpcD0ke2RiX2N2X3BhdGhfc3RyaXA9L3Vzci9iaW4vc3RyaXB9CiBkYl9jdl9hbGlnbl90PSR7ZGJfY3ZfYWxpZ25fdD0ndW5zaWduZWQgbG9uZyBsb25nJ30KIGRiX2N2X2FsaWducF90PSR7ZGJfY3ZfYWxpZ25wX3Q9J3Vuc2lnbmVkIGxvbmcnfQotZGJfY3ZfbXV0ZXg9JHtkYl9jdl9tdXRleD1BUk0vZ2NjLWFzc2VtYmx5fQogZGJfY3ZfcG9zaXhtdXRleGVzPSR7ZGJfY3ZfcG9zaXhtdXRleGVzPW5vfQogZGJfY3ZfdWltdXRleGVzPSR7ZGJfY3ZfdWltdXRleGVzPW5vfQogCmRpZmYgLS1naXQgYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL3gzMi1saW51eCBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUveDMyLWxpbnV4CmluZGV4IDMwOGQ2ZTIuLjRiNzA0MjIgMTAwNjQ0Ci0tLSBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUveDMyLWxpbnV4CisrKyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUveDMyLWxpbnV4CkBAIC0xLDYgKzEsNSBAQAogIyBnZW5lcmFsCiBhY19jdl9zaXplb2ZfbG9uZ19kb3VibGU9JHthY19jdl9zaXplb2ZfbG9uZ19kb3VibGU9MTZ9Ci1hY19jdl9zaXplb2ZfaW5vX3Q9JHthY19jdl9zaXplb2ZfaW5vX3Q9OH0KIGFjX2N2X3NpemVvZl9kZXZfdD0ke2FjX2N2X3NpemVvZl9kZXZfdD04fQogYWNfY3Zfc3lzX2ZpbGVfb2Zmc2V0X2JpdHM9JHthY19jdl9zeXNfZmlsZV9vZmZzZXRfYml0cz02NH0KIGFjX2N2X2FsaWdub2ZfZG91YmxlPTgKZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUveDg2XzY0LWxpbnV4IGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS94ODZfNjQtbGludXgKaW5kZXggZWJkY2Y2OS4uNzc4ZTJjNSAxMDA2NDQKLS0tIGEvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS94ODZfNjQtbGludXgKKysrIGIvaW1wb3J0LWxheWVycy95b2N0by1wb2t5L21ldGEvc2l0ZS94ODZfNjQtbGludXgKQEAgLTI0LDcgKzI0LDYgQEAKIGFjX2N2X3NpemVvZl9zaXplX3Q9JHthY19jdl9zaXplb2Zfc2l6ZV90PTh9CiBhY19jdl9zaXplb2ZfdWlkX3Q9JHthY19jdl9zaXplb2ZfdWlkX3Q9NH0KIGFjX2N2X3NpemVvZl9naWRfdD0ke2FjX2N2X3NpemVvZl9naWRfdD00fQotYWNfY3Zfc2l6ZW9mX2lub190PSR7YWNfY3Zfc2l6ZW9mX2lub190PTh9CiBhY19jdl9zaXplb2ZfZGV2X3Q9JHthY19jdl9zaXplb2ZfZGV2X3Q9OH0KIGFjX2N2X3NpemVvZl92b2lkX3A9JHthY19jdl9zaXplb2Zfdm9pZF9wPTh9CiBhY19jdl9zdHJlcnJvcl9yX1NVU3YzPSR7YWNfY3Zfc3RyZXJyb3Jfcl9TVVN2Mz1ub30KZGlmZiAtLWdpdCBhL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUveDg2XzY0LWxpbnV4LXVjbGliYyBiL2ltcG9ydC1sYXllcnMveW9jdG8tcG9reS9tZXRhL3NpdGUveDg2XzY0LWxpbnV4LXVjbGliYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmQyNjlmNy4uMDAwMDAwMAotLS0gYS9pbXBvcnQtbGF5ZXJzL3lvY3RvLXBva3kvbWV0YS9zaXRlL3g4Nl82NC1saW51eC11Y2xpYmMKKysrIC9kZXYvbnVsbApAQCAtMSw5MSArMCwwIEBACi0jIGdlbmVyYWwKLWFjX2N2X3ZhX3ZhbF9jb3B5PSR7YWNfY3ZfdmFfdmFsX2NvcHk9bm99Ci1hY19jdl9mdW5jX2xzdGF0X2RlcmVmZXJlbmNlc19zbGFzaGVkX3N5bWxpbms9JHthY19jdl9mdW5jX2xzdGF0X2RlcmVmZXJlbmNlc19zbGFzaGVkX3N5bWxpbms9eWVzfQotYWNfY3ZfZnVuY19sc3RhdF9lbXB0eV9zdHJpbmdfYnVnPSR7YWNfY3ZfZnVuY19sc3RhdF9lbXB0eV9zdHJpbmdfYnVnPW5vfQotYWNfY3ZfZnVuY19wb3NpeF9nZXRwd25hbV9yPSR7YWNfY3ZfZnVuY19wb3NpeF9nZXRwd25hbV9yPXllc30KLWFjX2N2X2Z1bmNfc2V0dmJ1Zl9yZXZlcnNlZD0ke2FjX2N2X2Z1bmNfc2V0dmJ1Zl9yZXZlcnNlZD1ub30KLWFjX2N2X2Z1bmNfc3RhdF9lbXB0eV9zdHJpbmdfYnVnPSR7YWNfY3ZfZnVuY19zdGF0X2VtcHR5X3N0cmluZ19idWc9bm99Ci1hY19jdl9mdW5jX3N0YXRfaWdub3Jlc190cmFpbGluZ19zbGFzaD0ke2FjX2N2X2Z1bmNfc3RhdF9pZ25vcmVzX3RyYWlsaW5nX3NsYXNoPW5vfQotYWNfbGlibmV0X2hhdmVfcGFja2V0X3NvY2tldD0ke2FjX2xpYm5ldF9oYXZlX3BhY2tldF9zb2NrZXQ9eWVzfQotYWNfY3ZfbGludXhfdmVycz0ke2FjX2N2X2xpbnV4X3ZlcnM9Mn0KLWFjX2N2X25lZWRfdHJpbz0ke2FjX2N2X25lZWRfdHJpbz1ub30KLWFjX2N2X3NpemVvZl9jaGFyPSR7YWNfY3Zfc2l6ZW9mX2NoYXI9MX0KLWFjX2N2X3NpemVvZl9pbnQ9JHthY19jdl9zaXplb2ZfaW50PTR9Ci1hY19jdl9zaXplb2ZfX19pbnQ2ND0ke2FjX2N2X3NpemVvZl9fX2ludDY0PTB9Ci1hY19jdl9zaXplb2ZfbG9uZz0ke2FjX2N2X3NpemVvZl9sb25nPTh9Ci1hY19jdl9zaXplb2ZfbG9uZ19kb3VibGU9JHthY19jdl9zaXplb2ZfbG9uZ19kb3VibGU9MTZ9Ci1hY19jdl9zaXplb2ZfbG9uZ19pbnQ9JHthY19jdl9zaXplb2ZfbG9uZ19pbnQ9OH0KLWFjX2N2X3NpemVvZl9sb25nX2xvbmc9JHthY19jdl9zaXplb2ZfbG9uZ19sb25nPTh9Ci1hY19jdl9zaXplb2Zfc2hvcnQ9JHthY19jdl9zaXplb2Zfc2hvcnQ9Mn0KLWFjX2N2X3NpemVvZl9zaG9ydF9pbnQ9JHthY19jdl9zaXplb2Zfc2hvcnRfaW50PTJ9Ci1hY19jdl9zaXplb2Zfc2l6ZV90PSR7YWNfY3Zfc2l6ZW9mX3NpemVfdD04fQotYWNfY3Zfc2l6ZW9mX3ZvaWRfcD0ke2FjX2N2X3NpemVvZl92b2lkX3A9OH0KLWFjX2N2X3N0cmVycm9yX3JfU1VTdjM9JHthY19jdl9zdHJlcnJvcl9yX1NVU3YzPW5vfQotZGJfY3ZfYWxpZ25wX3Q9JHtkYl9jdl9hbGlnbnBfdD0ndW5zaWduZWQgbG9uZyBsb25nJ30KLWRiX2N2X2FsaWduX3Q9JHtkYl9jdl9hbGlnbl90PSd1bnNpZ25lZCBsb25nIGxvbmcnfQotZGJfY3ZfZmNudGxfZl9zZXRmZD0ke2RiX2N2X2ZjbnRsX2Zfc2V0ZmQ9eWVzfQotZGJfY3Zfc3ByaW50Zl9jb3VudD0ke2RiX2N2X3NwcmludGZfY291bnQ9eWVzfQotZ2xpYl9jdl9oYXNpbmxpbmU9JHtnbGliX2N2X2hhc2lubGluZT15ZXN9Ci1nbGliX2N2X2hhc19faW5saW5lPSR7Z2xpYl9jdl9oYXNfX2lubGluZT15ZXN9Ci1nbGliX2N2X2hhc19faW5saW5lX189JHtnbGliX2N2X2hhc19faW5saW5lX189eWVzfQotZ2xpYl9jdl9sb25nX2xvbmdfZm9ybWF0PSR7Z2xpYl9jdl9sb25nX2xvbmdfZm9ybWF0PWxsfQotZ2xpYl9jdl9ydGxkZ2xvYmFsX2Jyb2tlbj0ke2dsaWJfY3ZfcnRsZGdsb2JhbF9icm9rZW49eWVzfQotZ2xpYl9jdl9zYW5lX3JlYWxsb2M9JHtnbGliX2N2X3NhbmVfcmVhbGxvYz15ZXN9Ci1nbGliX2N2X3NpemVvZl9nbXV0ZXg9JHtnbGliX2N2X3NpemVvZl9nbXV0ZXg9NDB9Ci1nbGliX2N2X3NpemVvZl9pbnRtYXhfdD0ke2dsaWJfY3Zfc2l6ZW9mX2ludG1heF90PTh9Ci1nbGliX2N2X3NpemVvZl9wdHJkaWZmX3Q9JHtnbGliX2N2X3NpemVvZl9wdHJkaWZmX3Q9OH0KLWdsaWJfY3Zfc2l6ZW9mX3NpemVfdD0ke2dsaWJfY3Zfc2l6ZW9mX3NpemVfdD04fQotZ2xpYl9jdl9zaXplb2Zfc3lzdGVtX3RocmVhZD0ke2dsaWJfY3Zfc2l6ZW9mX3N5c3RlbV90aHJlYWQ9OH0KLWdsaWJfY3Zfc3RhY2tfZ3Jvd3M9JHtnbGliX2N2X3N0YWNrX2dyb3dzPW5vfQotZ2xpYl9jdl9zeXNfcHRocmVhZF9jb25kX3RpbWVkd2FpdF9wb3NpeD0ke2dsaWJfY3Zfc3lzX3B0aHJlYWRfY29uZF90aW1lZHdhaXRfcG9zaXg9eWVzfQotZ2xpYl9jdl9zeXNfcHRocmVhZF9nZXRzcGVjaWZpY19wb3NpeD0ke2dsaWJfY3Zfc3lzX3B0aHJlYWRfZ2V0c3BlY2lmaWNfcG9zaXg9eWVzfQotZ2xpYl9jdl9zeXNfcHRocmVhZF9tdXRleF90cnlsb2NrX3Bvc2l4PSR7Z2xpYl9jdl9zeXNfcHRocmVhZF9tdXRleF90cnlsb2NrX3Bvc2l4PXllc30KLWdsaWJfY3ZfdXNjb3JlPSR7Z2xpYl9jdl91c2NvcmU9bm99Ci1nbGliX2N2X3ZhX3ZhbF9jb3B5PSR7Z2xpYl9jdl92YV92YWxfY29weT1ub30KLW5hbm9fY3ZfZnVuY19yZWdleGVjX3NlZ3ZfZW1wdHlzdHI9JHtuYW5vX2N2X2Z1bmNfcmVnZXhlY19zZWd2X2VtcHR5c3RyPW5vfQotc2FtYmFfY3ZfSEFWRV9WQV9DT1BZPSR7c2FtYmFfY3ZfSEFWRV9WQV9DT1BZPXllc30KLXNjcmVlbl9jdl9zeXNfYmNvcHlfb3ZlcmxhcD0ke3NjcmVlbl9jdl9zeXNfYmNvcHlfb3ZlcmxhcD1ub30KLXNjcmVlbl9jdl9zeXNfZmlmb19icm9rZW5faW1wbD0ke3NjcmVlbl9jdl9zeXNfZmlmb19icm9rZW5faW1wbD15ZXN9Ci1zY3JlZW5fY3Zfc3lzX2ZpZm9fdXNhYmxlPSR7c2NyZWVuX2N2X3N5c19maWZvX3VzYWJsZT15ZXN9Ci1zY3JlZW5fY3Zfc3lzX21lbWNweV9vdmVybGFwPSR7c2NyZWVuX2N2X3N5c19tZW1jcHlfb3ZlcmxhcD1ub30KLXNjcmVlbl9jdl9zeXNfbWVtbW92ZV9vdmVybGFwPSR7c2NyZWVuX2N2X3N5c19tZW1tb3ZlX292ZXJsYXA9bm99Ci1zY3JlZW5fY3Zfc3lzX3NlbGVjdF9icm9rZW5fcmV0dmFsPSR7c2NyZWVuX2N2X3N5c19zZWxlY3RfYnJva2VuX3JldHZhbD1ub30KLXNjcmVlbl9jdl9zeXNfc29ja2V0c19ub2ZzPSR7c2NyZWVuX2N2X3N5c19zb2NrZXRzX25vZnM9bm99Ci1zY3JlZW5fY3Zfc3lzX3NvY2tldHNfdXNhYmxlPSR7c2NyZWVuX2N2X3N5c19zb2NrZXRzX3VzYWJsZT15ZXN9Ci1zY3JlZW5fY3Zfc3lzX3Rlcm1pbmZvX3VzZWQ9JHtzY3JlZW5fY3Zfc3lzX3Rlcm1pbmZvX3VzZWQ9eWVzfQotdXRpbHNfY3Zfc3lzX29wZW5fbWF4PSR7dXRpbHNfY3Zfc3lzX29wZW5fbWF4PTEwMTV9Ci0KLSMgZ2V0dGV4dAotYW1fY3ZfZnVuY193b3JraW5nX2dldGxpbmU9JHthbV9jdl9mdW5jX3dvcmtpbmdfZ2V0bGluZT15ZXN9Ci0KLSMgZ2xpYi0yLjAKLWdsaWJfY3ZfdXNlX3BpZF9zdXJyb2dhdGU9JHtnbGliX2N2X3VzZV9waWRfc3Vycm9nYXRlPXllc30KLWFjX2N2X2FsaWdub2ZfZ3VpbnQzMj00Ci1hY19jdl9hbGlnbm9mX2d1aW50NjQ9OAotYWNfY3ZfYWxpZ25vZl91bnNpZ25lZF9sb25nPTgKLQotIyBsaWJpZGwKLWxpYklETF9jdl9sb25nX2xvbmdfZm9ybWF0PSR7bGliSURMX2N2X2xvbmdfbG9uZ19mb3JtYXQ9bGx9Ci0KLSMgT1JCaXQyCi1hY19jdl9hbGlnbm9mX0NPUkJBX2Jvb2xlYW49MQotYWNfY3ZfYWxpZ25vZl9DT1JCQV9jaGFyPTEKLWFjX2N2X2FsaWdub2ZfQ09SQkFfZG91YmxlPTQKLWFjX2N2X2FsaWdub2ZfQ09SQkFfZmxvYXQ9NAotYWNfY3ZfYWxpZ25vZl9DT1JCQV9sb25nPTQKLWFjX2N2X2FsaWdub2ZfQ09SQkFfbG9uZ19kb3VibGU9OAotYWNfY3ZfYWxpZ25vZl9DT1JCQV9sb25nX2xvbmc9OAotYWNfY3ZfYWxpZ25vZl9DT1JCQV9vY3RldD0xCi1hY19jdl9hbGlnbm9mX0NPUkJBX3BvaW50ZXI9OAotYWNfY3ZfYWxpZ25vZl9DT1JCQV9zaG9ydD0yCi1hY19jdl9hbGlnbm9mX0NPUkJBX3N0cnVjdD0xCi1hY19jdl9hbGlnbm9mX0NPUkJBX3djaGFyPTIKLQotIyBzdGFydHVwLW5vdGlmaWNhdGlvbgotbGZfY3Zfc2FuZV9yZWFsbG9jPSR7bGZfY3Zfc2FuZV9yZWFsbG9jPXllc30KLQotIyBsZnRwCi1sZnRwX2N2X3ZhX3ZhbF9jb3B5PSR7bGZ0cF9jdl92YV92YWxfY29weT1ub30KLQotIyBzbHJuCi1zbHJuX2N2X3ZhX3ZhbF9jb3B5PSR7c2xybl9jdl92YV92YWxfY29weT1ub30K